Index: /issm/branches/trunk-larour-NatClimateChange2016/Makefile.am
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/Makefile.am	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/Makefile.am	(revision 21239)
@@ -0,0 +1,5 @@
+EXTRA_DIST = reconf scripts test m4 examples cron etc doc packages contributors.txt 
+SUBDIRS = src
+bin_SCRIPTS= README.rtf
+
+ACLOCAL_AMFLAGS = -I m4
Index: /issm/branches/trunk-larour-NatClimateChange2016/README
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/README	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/README	(revision 21239)
@@ -0,0 +1,45 @@
+------------------------------------------------------------------------------
+
+ISSM
+Ice Sheet System Modeling: a framework for modeling ice flow on ice sheet/ice shelf
+systems using Finite Elemenent Analysis, and parallel technologies.
+
+Email:   issm@jpl.nasa.gov
+Website: http://issm.jpl.nasa.gov/
+
+------------------------------------------------------------------------------
+
+License
+
+ISSM is California Institute of Technology Copyright, Distributed under BSD Three Clause License.
+
+
+Copyright (c) 2002-2014, California Institute of Technology.
+All rights reserved.  Based on Government Sponsored Research under contracts
+NAS7-1407 and/or NAS7-03001.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce 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 California Institute of Technology (Caltech),
+   its operating division the Jet Propulsion Laboratory (JPL), the National
+   Aeronautics and Space Administration (NASA), 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 CALIFORNIA INSTITUTE OF TECHNOLOGY BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (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: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-arm-linux.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-arm-linux.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-arm-linux.sh	(revision 21239)
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+./configure \
+   --prefix=$ISSM_DIR\
+   --libdir=$ISSM_DIR/../mobile/android/ISSM_APP/libs/armeabi\
+   --build="i386-apple-darwin10.8.0"\
+   --host="arm-linux-androideabi"\
+   --enable-shared\
+   --with-android=jni\
+   --with-android-ndk=$ISSM_DIR/externalpackages/android/android-ndk/install\
+   --without-fortran\
+   --without-wrappers\
+   --without-kriging\
+   --with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-discover-intel11.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-discover-intel11.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-discover-intel11.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/csh
+
+#PETSc 3.2
+#MPI /usr/local/intel/mpi/4.0.3.008/lib64/
+
+./configure \
+ --prefix=$ISSM_DIR \
+ --with-matlab-dir="$ISSM_DIR/externalpackages/matlab/install" \
+ --with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
+ --with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+ --with-metis-dir=$ISSM_DIR/externalpackages/metis/install \
+ --with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+ --with-mkl-dir="/usr/local/intel/mkl/10.1.2.024/lib/64/" \
+ --with-mpi-include="/usr/local/intel/mpi/4.0.3.008/include64/" \
+ --with-mpi-libflags="-L/usr/local/intel/mpi/4.0.3.008/lib64/ -lmpi -lmpiif" \
+ --with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
+ --with-scalapack-dir="/usr/local/intel/mkl/10.1.2.024/lib/64/" \
+ --with-blas-lapack-dir="/usr/local/intel/mkl/10.1.2.024/lib/64/" \
+ --with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+ --with-tao-dir=$ISSM_DIR/externalpackages/tao/install \
+ --with-graphics-lib=/usr/lib64/libX11.so \
+ --with-cxxoptflags="-O3 -xS -DMPICH_IGNORE_CXX_SEEK" \
+ --with-vendor=intel-discover
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-discover-intel13.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-discover-intel13.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-discover-intel13.sh	(revision 21239)
@@ -0,0 +1,23 @@
+#!/bin/csh
+
+#PETSc 3.2
+#MPI /usr/local/other/SLES11.1/mvapich2/1.8.1/intel-13.1.2.183/lib
+
+./configure \
+ --prefix=$ISSM_DIR \
+ --with-matlab-dir="$ISSM_DIR/externalpackages/matlab/install" \
+ --with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+ --with-metis-dir=$ISSM_DIR/externalpackages/metis/install \
+ --with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+ --with-mkl-dir="/usr/local/intel/Composer/composer_xe_2013.3.163/mkl/" \
+ --with-mpi-include="/usr/local/other/SLES11.1/mvapich2/1.8.1/intel-13.1.2.183/include" \
+ --with-mpi-libflags="-L/usr/local/other/SLES11.1/mvapich2/1.8.1/intel-13.1.2.183/lib -lmpich -lopa -lmpl -lfmpich -lmpichcxx -lmpichf90 -lpthread -lrdmacm -libverbs -libumad -lrt -lnuma" \
+ --with-petsc-arch=$ISSM_ARCH \
+ --with-blacs-dir="/usr/local/intel/Composer/composer_xe_2013.3.163/mkl/" \
+ --with-blas-lapack-dir="/usr/local/intel/Composer/composer_xe_2013.3.163/mkl/" \
+ --with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+ --with-cxxoptflags="-O3 -xS -DMPICH_IGNORE_CXX_SEEK" \
+ --with-vendor=intel-discover
+
+ # --with-esmf-dir=$ESMF_INSTALL_DIRECTORY \
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-ios-armv7.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-ios-armv7.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-ios-armv7.sh	(revision 21239)
@@ -0,0 +1,32 @@
+#!/bin/sh
+set -eu
+
+export DEVROOT=`xcode-select --print-path`
+export SDKROOT="$DEVROOT/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk"
+export CLANG="$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
+export CLANGXX="$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"
+export CC=$CLANG
+export LD=$DEVROOT/usr/bin/ld
+export CPPFLAGS="-isysroot $SDKROOT/usr/include"
+export CXX=$CLANGXX
+export CXXFLAGS="-O -arch armv7 -isysroot $SDKROOT -I$SDKROOT/usr/include" 
+export CFLAGS="-O -arch armv7 -isysroot $SDKROOT -I$SDKROOT/usr/include"
+export AR=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar
+export AS=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/as
+export LDFLAGS="-lstdc++ -arch armv7 -isysroot $SDKROOT" 
+export LIBTOOL=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool
+export STRIP=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip
+export RANLIB=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib
+
+./configure                                                        \
+	--prefix=$ISSM_DIR                                              \
+   --build="i386-apple-darwin13.1.0"                               \
+   --host="armv7-apple-darwin14.0.0"                               \
+   --enable-shared                                                 \
+   --with-ios=yes                                                  \
+   --with-Gia=no                                                   \
+   --without-fortran                                               \
+	--without-wrappers                                              \
+	--without-kriging                                               \
+	--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install           \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-ios-armv7s.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-ios-armv7s.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-ios-armv7s.sh	(revision 21239)
@@ -0,0 +1,32 @@
+#!/bin/sh
+set -eu
+
+export DEVROOT=`xcode-select --print-path`
+export SDKROOT="$DEVROOT/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk"
+export CLANG="$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
+export CLANGXX="$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"
+export CC=$CLANG
+export LD=$DEVROOT/usr/bin/ld
+export CPPFLAGS="-isysroot $SDKROOT/usr/include"
+export CXX=$CLANGXX
+export CXXFLAGS="-O -arch armv7s -isysroot $SDKROOT -I$SDKROOT/usr/include" 
+export CFLAGS="-O -arch armv7s -isysroot $SDKROOT -I$SDKROOT/usr/include"
+export AR=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar
+export AS=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/as
+export LDFLAGS="-lstdc++ -arch armv7s -isysroot $SDKROOT" 
+export LIBTOOL=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool
+export STRIP=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip
+export RANLIB=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib
+
+./configure                                                        \
+	--prefix=$ISSM_DIR                                              \
+   --build="i386-apple-darwin13.1.0"                               \
+   --host="armv7s-apple-darwin14.0.0"                               \
+   --enable-shared                                                 \
+   --with-ios=yes                                                  \
+   --with-Gia=no                                                   \
+   --without-fortran                                               \
+	--without-wrappers                                              \
+	--without-kriging                                               \
+	--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install           \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-ios-linux.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-ios-linux.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-ios-linux.sh	(revision 21239)
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+export DEVROOT="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/"
+export SDKROOT="$DEVROOT/SDKs/iPhoneOS6.0.sdk/"
+export CC=$DEVROOT/usr/bin/gcc
+export LD=$DEVROOT/usr/bin/ld
+export CPP=$DEVROOT/usr/bin/cpp
+export CXX=$DEVROOT/usr/bin/g++
+export CXXFLAGS="-O -arch armv7 -isysroot $SDKROOT" 
+export CFLAGS="-O -arch armv7 -isysroot $SDKROOT"
+export AR=$DEVROOT/usr/bin/ar
+export AS=$DEVROOT/usr/bin/as
+export LDFLAGS="-lstdc++ -arch armv7 -isysroot $SDKROOT" 
+export LIBTOOL=$DEVROOT/usr/bin/libtool
+export STRIP=$DEVROOT/usr/bin/strip
+export RANLIB=$DEVROOT/usr/bin/ranlib
+
+./configure \
+	--prefix=$ISSM_DIR \
+    --build="i386-apple-darwin10.8.0" \
+    --host="arm-apple-darwin10" \
+    --enable-shared \
+    --with-ios=yes \
+    --without-fortran \
+	--without-wrappers \
+	--without-kriging \
+	--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-ios-simulator.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-ios-simulator.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-ios-simulator.sh	(revision 21239)
@@ -0,0 +1,31 @@
+#!/bin/sh
+set -eu
+
+export DEVROOT=`xcode-select --print-path`
+export SDKROOT="$DEVROOT/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk"
+export CLANG="$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
+export CLANGXX="$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"
+export CC=$CLANG
+export CXX=$CLANGXX
+export LD=$DEVROOT/usr/bin/ld
+export CPPFLAGS="-isysroot $SDKROOT/usr/include"
+export CXXFLAGS="-O -arch i386 -miphoneos-version-min=7.1 -isysroot $SDKROOT -I$SDKROOT/usr/include"
+export CFLAGS="-O -arch i386 -miphoneos-version-min=7.1  -isysroot $SDKROOT -I$SDKROOT/usr/include"
+export AR=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar
+export AS=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/as
+export LDFLAGS="-lstdc++ -arch i386 -isysroot $SDKROOT" 
+export LIBTOOL=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool
+export STRIP=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip
+export RANLIB=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib
+
+./configure                                                        \
+	--prefix=$ISSM_DIR                                              \
+   --target="i386-apple-darwin13.1.0"                              \
+   --enable-shared                                                 \
+   --with-ios=yes                                                  \
+   --with-Gia=no                                                   \
+   --without-fortran                                               \
+	--without-wrappers                                              \
+	--without-kriging                                               \
+	--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install           \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-acenet.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-acenet.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-acenet.sh	(revision 21239)
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+./configure \
+ --prefix=/home/klemorza/issm/trunk-jpl \
+ --with-metis-dir=$ISSM_DIR/externalpackages/metis/install \
+ --with-metis-dir=$ISSM_DIR/externalpackages/petsc/install
+ --with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+ --with-mpi-include=$OPENMPI/include  \
+ --with-mpi-libflags="-L$OPENMPI/lib -lmpi" \
+ --with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+ --with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+ --with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+ --with-cxxoptflags="-O2" \
+ --with-numthreads=32 \
+ --with-serial=no \
+ --with-modules=no \
+ --enable-debugging CC=mpicc CXX=mpiCC F77=mpif77
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-cloud.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-cloud.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-cloud.sh	(revision 21239)
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+#External packages versions:
+#petsc 3.1 or 3.2
+#mpich 1.4
+
+./configure \
+ --prefix=$ISSM_DIR \
+ --without-wrappers \
+ --with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+ --with-metis-dir=$ISSM_DIR/externalpackages/petsc/src/externalpackages/metis-5.0.2-p3 \
+ --with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+ --with-tao-dir=$ISSM_DIR/externalpackages/tao/install \
+ --with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+ --with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib/ -lmpich -lmpl " \
+ --with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+ --with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+ --with-cxxoptflags=" -O2 -fpermissive" 
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-cyclone.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-cyclone.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-cyclone.sh	(revision 21239)
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+#Default configuration script
+#automake 1.14
+#petsc 3.6
+#mpich 3.0
+
+./configure \
+		--prefix=$ISSM_DIR \
+		--with-matlab-dir="$ISSM_DIR/externalpackages/matlab/install" \
+		--with-triangle-dir="$ISSM_DIR/externalpackages/triangle/install" \
+		--with-m1qn3-dir="$ISSM_DIR/externalpackages/m1qn3/install" \
+		--with-mpi-include="$ISSM_DIR/externalpackages/mpich/install/include"  \
+		--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib/ -lmpich -lmpl" \
+		--with-petsc-dir="$ISSM_DIR/externalpackages/petsc/install" \
+		--with-metis-dir="$ISSM_DIR/externalpackages/petsc/install" \
+		--with-scalapack-dir="$ISSM_DIR/externalpackages/petsc/install/" \
+		--with-mumps-dir="$ISSM_DIR/externalpackages/petsc/install/" \
+		--with-fortran-lib="-L/opt/intel/intelcompiler-12.04/composerxe-2011.4.191/compiler/lib/intel64 -lifport -lifcore -limf -lsvml -lintlc "\
+		--enable-development \
+		CC=mpicc \
+		CXX=mpic++
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-hexagon.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-hexagon.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-hexagon.sh	(revision 21239)
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+#need to swap to GNU environment
+#need to change the petsc libflag to lcraypetsc...
+./configure \
+		--prefix=/work/bfl022/issm_install \
+		--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+		--with-petsc-dir=$PETSC_DIR \
+		--with-metis-dir=$CRAY_TPSL_PREFIX_DIR \
+		--with-mumps-dir=$CRAY_TPSL_PREFIX_DIR \
+		--with-mpi-include="$CRAY_MPICH2_DIR/include" \
+		--with-mpi-libflags="-L$CRAY_MPICH2_DIR/lib -lmpich -lmpl -lfmpich -lmpichcxx -lmpichf90" \
+		--with-gsl-dir="/work/apps/gsl/1.16-gnu/" \
+		--enable-development
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-murdo-ad.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-murdo-ad.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-murdo-ad.sh	(revision 21239)
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+./configure \
+	 --prefix=$ISSM_DIR \
+	 --without-kriging \
+	 --without-kml \
+	--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install \
+	--with-adolc-dir=$ISSM_DIR/externalpackages/adolc/install \
+	--with-matlab-dir="$ISSM_DIR/externalpackages/matlab/install" \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-pleiades-ampi-gcc.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-pleiades-ampi-gcc.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-pleiades-ampi-gcc.sh	(revision 21239)
@@ -0,0 +1,22 @@
+#!/bin/csh
+./configure \
+	--prefix=$ISSM_DIR \
+	--without-kriging \
+	--with-wrappers=no \
+	--with-triangle-dir="$ISSM_DIR/externalpackages/triangle/install" \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib/ -lmpich -lmpl " \
+	--with-adolc-dir="$ISSM_DIR/externalpackages/adolc/install"\
+	--with-ampi-dir="$ISSM_DIR/externalpackages/adjoinablempi/install"\
+	--with-metis-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-blas-lapack-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-gsl-dir="$ISSM_DIR/externalpackages/gsl/install" \
+	--with-mumps-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-scalapack-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-hypre-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-graphics-lib="/usr/lib64/libX11.so" \
+	--with-cxxoptflags=" -O3 -march=corei7-avx" \
+	--with-vendor="intel-pleiades-gcc"  \
+	CFLAGS="-O3 -march=corei7-avx" \
+	CXXFLAGS="-O3 -march=corei7-avx" \
+	FFLAGS="-O3 -march=corei7-avx" 
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-pleiades-ampi.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-pleiades-ampi.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-pleiades-ampi.sh	(revision 21239)
@@ -0,0 +1,19 @@
+#!/bin/csh
+./configure \
+	--prefix=$ISSM_DIR \
+	--without-kriging \
+	--with-wrappers=no \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include="/nasa/sgi/mpt/2.06rp16/include" \
+	--with-mpi-libflags="-L/nasa/sgi/mpt/2.06rp16/ -lmpi -lmpi++" \
+	--with-adolc-dir="$ISSM_DIR/externalpackages/adolc/install"\
+	--with-ampi-dir="$ISSM_DIR/externalpackages/adjoinablempi/install"\
+	--with-mkl-dir="/nasa/intel/Compiler/2013.1.117/composer_xe_2013.1.117/mkl/lib/intel64" \
+	--with-gsl-dir="$ISSM_DIR/externalpackages/gsl/install" \
+	--with-metis-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-mumps-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-scalapack-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-hypre-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-graphics-lib="/usr/lib64/libX11.so" \
+	--with-cxxoptflags="-O3" \
+	--with-vendor="intel-pleiades"
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-pleiades-gcc-4.4.4.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-pleiades-gcc-4.4.4.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-pleiades-gcc-4.4.4.sh	(revision 21239)
@@ -0,0 +1,16 @@
+#!/bin/csh
+./configure \
+	--prefix=$ISSM_DIR \
+	--without-kriging \
+	--with-matlab-dir="$ISSM_DIR/externalpackages/matlab/install" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-triangle-dir="$ISSM_DIR/externalpackages/triangle/install" \
+	--with-mpi-include="/nasa/mvapich2/1.4.1/gcc.sles11/include"\
+	--with-mpi-libflags=" -L/nasa/mvapich2/1.4.1/gcc.sles11/lib -lmpichcxx -lmpich -lpthread -lrdmacm -libverbs -libumad -lrt" \
+	--with-metis-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-mumps-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-scalapack-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-hypre-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-graphics-lib="/usr/lib64/libX11.so" \
+	--with-cxxoptflags="-g -O2" \
+	--with-vendor="intel-pleiades-gcc"
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-pleiades-gcc-4.7.0.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-pleiades-gcc-4.7.0.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-pleiades-gcc-4.7.0.sh	(revision 21239)
@@ -0,0 +1,17 @@
+#!/bin/csh
+./configure \
+	--prefix=$ISSM_DIR \
+	--without-kriging \
+	--with-matlab-dir="$ISSM_DIR/externalpackages/matlab/install" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-triangle-dir="$ISSM_DIR/externalpackages/triangle/install" \
+	--with-mpi-include="/nasa/mvapich2/1.6.sles11/gcc/include" \
+	--with-mpi-libflags="-L/nasa/mvapich2/1.6.sles11/gcc/lib -lmpich -lopa -lpthread -lrdmacm -libverbs -libumad -ldl -lrt" \
+	--with-blas-lapack-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-metis-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-mumps-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-scalapack-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-hypre-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-graphics-lib="/usr/lib64/libX11.so" \
+	--with-cxxoptflags="-g -O2" \
+	--with-vendor="intel-pleiades-gcc"
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-pleiades-intel2012.0.032-mpt.2.06rp16.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-pleiades-intel2012.0.032-mpt.2.06rp16.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-pleiades-intel2012.0.032-mpt.2.06rp16.sh	(revision 21239)
@@ -0,0 +1,17 @@
+#!/bin/csh
+./configure \
+	--prefix=$ISSM_DIR \
+	--without-kriging \
+	--with-matlab-dir="$ISSM_DIR/externalpackages/matlab/install" \
+	--with-petsc-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-triangle-dir="$ISSM_DIR/externalpackages/triangle/install" \
+	--with-mpi-include="/nasa/sgi/mpt/2.06rp16/include" \
+	--with-mpi-libflags="-L/nasa/sgi/mpt/2.06rp16/ -lmpi" \
+	--with-mkl-dir="/nasa/intel/Compiler/2012.0.032/composer_xe_2011_sp1/mkl/lib/intel64"\
+	--with-metis-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-mumps-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-scalapack-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-hypre-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-graphics-lib="/usr/lib64/libX11.so" \
+	--with-cxxoptflags="-g -O2" \
+	--with-vendor="intel-pleiades"
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-pleiades-intel2015.0.090-mpt.2.11r13.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-pleiades-intel2015.0.090-mpt.2.11r13.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-pleiades-intel2015.0.090-mpt.2.11r13.sh	(revision 21239)
@@ -0,0 +1,15 @@
+#!/bin/csh
+./configure \
+	--prefix=$ISSM_DIR \
+	--without-kriging \
+	--with-wrappers=no \
+	--with-petsc-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-triangle-dir="$ISSM_DIR/externalpackages/triangle/install" \
+	--with-mpi-include="/nasa/sgi/mpt/2.11r13/include" \
+	--with-mpi-libflags="-L/nasa/sgi/mpt/2.11r13/ -lmpi" \
+	--with-mkl-dir="/nasa/intel/Compiler/2015.0.090/composer_xe_2015.0.090/mkl/" \
+	--with-metis-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-mumps-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-scalapack-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-cxxoptflags="-O3 -axAVX" \
+	--with-vendor="intel-pleiades"
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-skylla.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-skylla.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-skylla.sh	(revision 21239)
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+#External packages versions:
+#petsc 3.4
+#mpich 3.0
+
+./configure \
+ --prefix=$ISSM_DIR \
+ --with-matlab-dir=$ISSM_DIR/externalpackages/matlab/install \
+ --with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+ --with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+ --with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+ --with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+ --with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib/ -lmpich -lmpl " \
+ --with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+ --with-tao-dir=$ISSM_DIR/externalpackages/tao/install/ \
+ --with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+ --with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+ --with-fortran-lib="-L/usr/lib/gcc/x86_64-redhat-linux/4.1.2/ -lgfortran" \
+ --with-graphics-lib="/usr/lib64/libX11.so.6" \
+ --with-cxxoptflags="-g -O2" \
+ --with-numthreads=8
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-vilje.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-vilje.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-linux64-vilje.sh	(revision 21239)
@@ -0,0 +1,23 @@
+#!/bin/sh
+#Vilje configuration script
+#this uses system stuff, you need to load the following:
+#module load intelcomp/15.0.1 mpt/2.10 petsc/3.5.3d
+#module load parmetis/4.0.3 mumps/5.0.0
+#module load automake
+
+./configure \
+    --prefix=$ISSM_DIR \
+    --without-kriging \
+    --with-wrappers=no \
+    --with-petsc-dir="/sw/sdev/Modules/petsc/petsc-3.5.3" \
+    --with-triangle-dir="$ISSM_DIR/externalpackages/triangle/install" \
+    --with-mpi-include="/sw/sgi/mpt/mpt-2.10/include/"  \
+    --with-mpi-libflags="-L/sw/sgi/mpt/mpt-2.10/lib -lmpi -lmpi++" \
+    --with-metis-dir="/sw/sdev/Modules/parmetis/parmetis-4.0.3/include" \
+    --with-mumps-dir="/sw/sdev/Modules/mumps/mumps-5.0.0/lib" \
+    --with-cxxoptflags="-O2 -xAVX" \
+    --with-m1qn3-dir="$ISSM_DIR/externalpackages/m1qn3/install" \
+    --enable-development \
+    CC=/sw/sdev/Modules/intelcomp/psxe_2015/bin/icc \
+    CXX=/sw/sdev/Modules/intelcomp/psxe_2015/bin/icpc \
+    F77=/sw/sdev/Modules/intelcomp/psxe_2015/bin/ifort
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-macosx64-ad.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-macosx64-ad.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-macosx64-ad.sh	(revision 21239)
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+./configure \
+	--prefix=$ISSM_DIR \
+	--without-wrappers\
+	--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install\
+	--without-thermal \
+	--without-control \
+	--without-hydrology \
+	--without-stressbalance \
+	--without-balanced \
+	--without-responses \
+	--without-slope \
+	--without-rifts \
+	--without-steadystate \
+	--without-transient \
+	--without-3d \
+	--without-groundingline
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-macosx64-dakota.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-macosx64-dakota.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-macosx64-dakota.sh	(revision 21239)
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+#petsc 3.6
+#mpich 3.0 yosemite
+#boost 1.55 yosemite
+#dakota 5.3.1 yosemite
+export F77='/usr/local/gfortran/bin/gfortran'
+export CC=/usr/local/gfortran/bin/gcc
+export CXX=/usr/local/gfortran/bin/g++
+
+./configure \
+   --prefix=$ISSM_DIR \
+	--with-matlab-dir=$MATLAB_DIR \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install  \
+	--with-boost-dir=$ISSM_DIR/externalpackages/boost/install \
+	--with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags=" $ISSM_DIR/externalpackages/mpich/install/lib/libpmpich.a $ISSM_DIR/externalpackages/mpich/install/lib/libmpich.a $ISSM_DIR/externalpackages/mpich/install/lib/libmpl.a " \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
+	--with-numthreads=8
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-macosx64.sh	(revision 21239)
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+#petsc 3.4
+#mpich 3.0.4
+
+./configure \
+	--prefix=$ISSM_DIR \
+	--with-matlab-dir="$ISSM_DIR/externalpackages/matlab/install" \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install  \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags=" $ISSM_DIR/externalpackages/mpich/install/lib/libpmpich.a $ISSM_DIR/externalpackages/mpich/install/lib/libmpich.a $ISSM_DIR/externalpackages/mpich/install/lib/libmpl.a " \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-fortran-lib="/usr/lib/gcc/i686-apple-darwin10/4.2.1/x86_64/libgfortran.a" \
+	--with-graphics-lib="/usr/X11/lib/libX11.dylib" \
+	--with-numthreads=8
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-pleiades-petsc3.4.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-pleiades-petsc3.4.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-pleiades-petsc3.4.sh	(revision 21239)
@@ -0,0 +1,20 @@
+#!/bin/csh
+
+./configure \
+ --prefix=$ISSM_DIR \
+ --with-wrappers=no \
+ --with-triangle-dir="$ISSM_DIR/externalpackages/triangle/install" \
+ --with-petsc-dir="$ISSM_DIR/externalpackages/petsc/install" \
+ --with-tao-dir="$ISSM_DIR/externalpackages/tao/install" \
+ --with-mpi-include="/nasa/sgi/mpt/2.06rp16/include" \
+ --with-mpi-libflags="-L/nasa/sgi/mpt/2.06rp16/ -lmpi" \
+ --with-mkl-dir="/nasa/intel/Compiler/2013.1.117/composer_xe_2013.1.117/mkl/lib/intel64" \
+ --with-gsl-dir="$ISSM_DIR/externalpackages/gsl/install" \
+ --with-dakota-dir="$ISSM_DIR/externalpackages/dakota/install" \
+ --with-metis-dir="$ISSM_DIR/externalpackages/petsc/install" \
+ --with-mumps-dir="$ISSM_DIR/externalpackages/petsc/install" \
+ --with-scalapack-dir="$ISSM_DIR/externalpackages/petsc/install" \
+ --with-hypre-dir="$ISSM_DIR/externalpackages/petsc/install" \
+ --with-graphics-lib="/usr/lib64/libX11.so" \
+ --with-cxxoptflags="-O3" \
+ --with-vendor="intel-pleiades"
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-pleiades-petscdev.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-pleiades-petscdev.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-pleiades-petscdev.sh	(revision 21239)
@@ -0,0 +1,23 @@
+#!/bin/csh
+
+./configure \
+ --prefix=$ISSM_DIR \
+ --with-wrappers=no \
+ --with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+ --with-metis-dir=$ISSM_DIR/externalpackages/petsc/src/externalpackages/metis-5.0.2-p3 \
+ --with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+ --with-tao-dir=$ISSM_DIR/externalpackages/tao/install \
+ --with-mpi-include=/nasa/sgi/mpt/2.04/include \
+ --with-mpi-libflags="-L/nasa/sgi/mpt/2.04/lib/ -lmpi -lpthread -lgfortran" \
+ --with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
+ --with-mkl-dir=/nasa/intel/mkl/10.0.011/lib/64/ \
+ --with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+ --with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+ --with-spai-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+ --with-hypre-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+ --with-superlu-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+ --with-spooles-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+ --with-pastix-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+ --with-graphics-lib=/usr/lib64/libX11.so \
+ --with-cxxoptflags="-O3" \
+ --with-vendor=intel-pleiades
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/config-win10.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/config-win10.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/config-win10.sh	(revision 21239)
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+./configure --prefix=$ISSM_DIR \
+	--with-vendor=MSVC-Win64  \
+	--with-cxxoptflags='' \
+   --disable-static \
+	--enable-standalone-libraries \
+	--with-fortran=no  \
+	--without-Gia \
+	--without-kriging \
+	--without-kml \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir="$ISSM_DIR/externalpackages/triangle/install" \
+	--with-petsc-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-metis-dir=$ISSM_DIR/externalpackages/metis/install \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install/lib/  \
+	--with-mpi-libdir="$ISSM_DIR/externalpackages/petsc/install/lib" \
+	--with-mpi-libflags="-Wl,libpetsc.lib" \
+	--with-mpi-include="$ISSM_DIR/externalpackages/petsc/install/include/petsc/mpiuni"
Index: /issm/branches/trunk-larour-NatClimateChange2016/configs/configure.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configs/configure.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configs/configure.sh	(revision 21239)
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+#Default configuration script
+#petsc 3.4
+#mpich 1.4
+
+./configure \
+	--prefix=$ISSM_DIR \
+	--with-matlab-dir="$ISSM_DIR/externalpackages/matlab/install" \
+	--with-triangle-dir="$ISSM_DIR/externalpackages/triangle/install" \
+	--with-mpi-include="$ISSM_DIR/externalpackages/mpich/install/include"  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib/ -lmpich" \
+	--with-petsc-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-metis-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-scalapack-dir="$ISSM_DIR/externalpackages/petsc/install/" \
+	--with-mumps-dir="$ISSM_DIR/externalpackages/petsc/install/" \
+	--with-numthreads=2
Index: /issm/branches/trunk-larour-NatClimateChange2016/configure.ac
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/configure.ac	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/configure.ac	(revision 21239)
@@ -0,0 +1,51 @@
+# Process this file with autoconf to produce a configure script.
+
+#AUTOCONF
+AC_INIT([Ice Sheet System Model (ISSM)],[4.11],[issm@jpl.nasa.gov],[issm],[http://issm.jpl.nasa.gov]) #Initializing configure
+AC_CONFIG_AUX_DIR([./aux-config])         #Put config files in aux-config
+AC_CONFIG_MACRO_DIR([m4])                 #m4 macros are located in m4
+m4_include([m4/issm_options.m4])
+
+#print header
+AC_MSG_NOTICE(============================================================================)
+AC_MSG_NOTICE(=              AC_PACKAGE_NAME AC_PACKAGE_VERSION configuration            =)
+AC_MSG_NOTICE(============================================================================)
+
+#Determine System type and OS
+AC_CANONICAL_TARGET
+
+#Compilers
+AC_PROG_CC([icc cl icl gcc])
+AC_PROG_CPP
+AC_PROG_CXX([icpc cl icl g++])
+AC_PROG_F77([ifort g77 gfortran])
+
+#AUTOMAKE
+#Initialize automake and declare foreign so that we don't need a ChangeLog, INSTALL, etc
+AM_INIT_AUTOMAKE([foreign])
+AC_CONFIG_HEADERS([./config.h])   #Config file must be config.h
+AM_SILENT_RULES([yes])           #Do not show compilation command by default
+AM_PROG_AR
+
+#Libtool
+LT_INIT
+
+#Run issm_options.m4
+ISSM_OPTIONS
+
+#List all Makefiles
+AC_CONFIG_FILES([
+					  Makefile
+					  src/Makefile
+					  src/c/Makefile 
+					  src/wrappers/Makefile
+					  src/wrappers/python/Makefile
+					  src/wrappers/matlab/Makefile
+					  src/wrappers/javascript/Makefile
+					  src/mobile/Makefile
+					  src/mobile/native/Makefile
+					  src/m/Makefile
+					  ])
+
+#End of configure.ac
+AC_OUTPUT
Index: /issm/branches/trunk-larour-NatClimateChange2016/etc/environment.csh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/etc/environment.csh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/etc/environment.csh	(revision 21239)
@@ -0,0 +1,116 @@
+#ISSM_DIR should have been defined already in your shell settings file (.bashrc, .cshrc, etc ...)
+
+#Load ISSM scripts
+setenv PATH {$PATH}:{$ISSM_DIR}/scripts
+
+##MATLAB
+#set MATLAB_DIR="$ISSM_DIR/externalpackages/matlab/install"
+#if (-e $MATLAB_DIR) then
+#	setenv MATLAB_DIR {$MATLAB_DIR}
+#	setenv PATH {$MATLAB_DIR}/bin:{$PATH}
+#	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:{$MATLAB_DIR}/bin/glnxa64
+#endif
+
+#MPI
+set MPI_DIR="$ISSM_DIR/externalpackages/mpich/install"
+if (-d $MPI_DIR) then
+	setenv MPI_DIR {$MPI_DIR}
+	setenv PATH {$MPI_DIR}/bin:{$PATH}
+	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:$MPI_DIR/lib
+	setenv MANPATH {$MANPATH}:$MPI_DIR/man
+endif
+
+#PETSC
+set PETSC_DIR="$ISSM_DIR/externalpackages/petsc/install"
+if (-d $PETSC_DIR) then
+	setenv PETSC_DIR {$PETSC_DIR}
+	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:$PETSC_DIR/lib
+endif
+
+#SLEPC
+set SLEPC_DIR="$ISSM_DIR/externalpackages/slepc/install"
+if (-d $SLEPC_DIR) then
+	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:$SLEPC_DIR/lib
+endif
+
+#PETSC
+set TAO_DIR="$ISSM_DIR/externalpackages/tao/install"
+if (-d $TAO_DIR) then
+	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:$TAO_DIR/lib
+endif
+
+#Dakota
+set DAKOTA_DIR="$ISSM_DIR/externalpackages/dakota/install"
+if (-d $DAKOTA_DIR) then
+	setenv PATH {$DAKOTA_DIR}/bin:{$PATH}
+	setenv MANPATH {$MANPATH}:{$MPI_DIR}/man:{$DAKOTA_DIR}/docs/man:{$DAKOTA_DIR}/docs/man-ref
+endif
+
+#Boost
+set BOOST_DIR="$ISSM_DIR/externalpackages/boost/install"
+set BOOSTROOT="$ISSM_DIR/externalpackages/boost/install"
+if (-d $BOOST_DIR) then
+   setenv PATH {$BOOST_DIR}/bin:{$PATH}
+endif
+
+#Doxygen
+set DOXYGEN_DIR="$ISSM_DIR/externalpackages/doxygen/install"
+if (-d $DOXYGEN_DIR) then
+	setenv MANPATH {$MANPATH}:{$DOXYGEN_DIR}/man
+	setenv PATH {$PATH}:{$DOXYGEN_DIR}/bin
+endif
+
+#AUTOTOOLS
+set AUTOTOOLS_DIR="$ISSM_DIR/externalpackages/autotools/install"
+if (-d $AUTOTOOLS_DIR) then
+	setenv PATH {$AUTOTOOLS_DIR}/bin:{$PATH}
+endif
+
+#SSH
+set SSH_DIR="$ISSM_DIR/externalpackages/ssh"
+if (-d $SSH_DIR) then
+	setenv PATH {$PATH}:{$SSH_DIR}
+endif
+
+#VALGRIND
+set VALGRIND_DIR="$ISSM_DIR/externalpackages/valgrind/install/bin"
+if (-d $VALGRIND_DIR) then
+	setenv PATH {$PATH}:{$VALGRIND_DIR}
+endif
+
+#MERCURIAL
+set MERCURIAL_DIR="$ISSM_DIR/externalpackages/mercurial/install"
+if (-d $MERCURIAL_DIR) then
+	setenv PYTHONPATH {$MERCURIAL_DIR}/mercurial/pure/
+	setenv PATH {$PATH}:{$MERCURIAL_DIR}
+endif
+
+#GSL
+set GSL_DIR="$ISSM_DIR/externalpackages/gsl/install"
+if (-d $GSL_DIR) then
+	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:{$GSL_DIR}/lib
+endif
+
+#CMAKE
+set CMAKE_DIR="$ISSM_DIR/externalpackages/cmake/install"
+if (-d $CMAKE_DIR) then
+	setenv PATH {$CMAKE_DIR}/bin:{$PATH}
+endif
+
+#YAMS
+set YAMS_DIR="$ISSM_DIR/externalpackages/yams/install"
+if (-d $YAMS_DIR) then
+	setenv PATH {$PATH}:{$YAMS_DIR}/bin
+endif
+
+#SHELL2JUNIT
+set SHELL2JUNIT_DIR="$ISSM_DIR/externalpackages/shell2junit"
+if (-d $SHELL2JUNIT_DIR) then
+	setenv PATH {$SHELL2JUNIT_DIR}/install:{$PATH}
+endif
+
+#GMT
+set GMT_DIR="$ISSM_DIR/externalpackages/gmt"
+if (-d $GMT_DIR) then
+	setenv PATH {$GMT_DIR}/install/bin/:{$PATH}
+endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/etc/environment.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/etc/environment.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/etc/environment.sh	(revision 21239)
@@ -0,0 +1,329 @@
+#ISSM_DIR and ISSM_ARCH should have been defined already in your shell settings file (.bashrc, .cshrc, etc ...)
+
+pathprepend(){ #{{{
+	if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then
+		name=$1
+		if [[ "$ISSM_ARCH" == "cygwin-intel" ]]; then
+			#export path using the cygwin convention
+			name=`cygpath -u $1`
+		fi
+		export PATH="$name:$PATH"
+	fi
+} #}}}
+pathappend(){ #{{{
+	if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then
+		name=$1
+		if [[ "$ISSM_ARCH" == "cygwin-intel" ]]; then
+			#export path in cygwin convention
+			name=`cygpath -u $1`
+		fi
+		export PATH="$PATH:$name"
+	fi
+} #}}}
+libpathprepend(){ #{{{
+	if [ -d "$1" ] && [[ ":$LD_LIBRARY_PATH:" != *":$1:"* ]]; then
+		export LD_LIBRARY_PATH="$1:$LD_LIBRARY_PATH"
+	fi
+	if [ -d "$1" ] && [[ ":$LD_RUN_PATH:" != *":$1:"* ]]; then
+		export LD_RUN_PATH="$1:$LD_RUN_PATH"
+	fi
+} #}}}
+libpathappend(){ #{{{
+	if [ -d "$1" ] && [[ ":$LD_LIBRARY_PATH:" != *":$1:"* ]]; then
+		export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$1"
+	fi
+	if [ -d "$1" ] && [[ ":$LD_RUN_PATH:" != *":$1:"* ]]; then
+		export LD_RUN_PATH="$LD_RUN_PATH:$1"
+	fi
+} #}}}
+dylibpathprepend(){ #{{{
+	if [ -d "$1" ] && [[ ":$DYLD_LIBRARY_PATH:" != *":$1:"* ]]; then
+		export DYLD_LIBRARY_PATH="$1:$DYLD_LIBRARY_PATH"
+	fi
+	if [ -d "$1" ] && [[ ":$LD_RUN_PATH:" != *":$1:"* ]]; then
+		export LD_RUN_PATH="$1:$LD_RUN_PATH"
+	fi
+} #}}}
+dylibpathappend(){ #{{{
+	if [ -d "$1" ] && [[ ":$DYLD_LIBRARY_PATH:" != *":$1:"* ]]; then
+		export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$1"
+	fi
+	if [ -d "$1" ] && [[ ":$LD_RUN_PATH:" != *":$1:"* ]]; then
+		export LD_RUN_PATH="$LD_RUN_PATH:$1"
+	fi
+} #}}}
+
+#FIXME: during installation packages are installed one by one but environment.sh was sourced
+#before so new packages are NOT in the path.
+#may resource environment.sh with:
+#if [ -z $(echo "$PATH" | grep "$MATLAB_DIR") ]; then export $PATH...; fi
+
+#Windows compilers: 
+if [[ "$ISSM_ARCH" == "cygwin-intel" ]]; then
+	source $ISSM_DIR/externalpackages/windows/windows_environment.sh
+fi
+
+#Load ISSM scripts
+pathappend "$ISSM_DIR/scripts"
+
+#MATLAB_DIR="$ISSM_DIR/externalpackages/matlab/install"
+#export MATLAB_DIR
+#pathprepend   "$MATLAB_DIR/bin" #take precedence over /usr/local/bin/matlab
+#libpathappend "$MATLAB_DIR/lib"
+
+#GMT 
+GMT_DIR="$ISSM_DIR/externalpackages/gmt/install"
+export GMT_DIR
+pathprepend   "$GMT_DIR/bin" 
+libpathappend "$GMT_DIR/lib"
+
+#legacy mpich2 (To be removed)
+MPI_DIR="$ISSM_DIR/externalpackages/mpich2/install"
+if [ -d "$MPI_DIR" ]; then
+	export MPI_DIR
+	pathprepend   "$MPI_DIR/bin"
+	libpathappend "$MPI_DIR/lib"
+fi
+
+MPI_DIR="$ISSM_DIR/externalpackages/mpich/install"
+if [ -d "$MPI_DIR" ]; then
+	export MPI_DIR
+	pathprepend   "$MPI_DIR/bin"
+	libpathappend "$MPI_DIR/lib"
+fi
+
+export MPI_INC_DIR="$MPI_DIR/include"
+
+PETSC_DIR="$ISSM_DIR/externalpackages/petsc/install"
+if [ -d "$PETSC_DIR" ]; then
+	export PETSC_DIR
+	libpathappend "$PETSC_DIR/lib"
+fi
+
+SLEPC_DIR="$ISSM_DIR/externalpackages/slepc/install"
+libpathappend "$SLEPC_DIR/lib"
+
+TAO_DIR="$ISSM_DIR/externalpackages/tao/install"
+libpathappend "$TAO_DIR/lib"
+
+DAKOTA_DIR="$ISSM_DIR/externalpackages/dakota/install"
+pathappend "$DAKOTA_DIR/bin"
+libpathappend "$DAKOTA_DIR/lib"
+dylibpathprepend "$DAKOTA_DIR/lib"
+
+DOXYGEN_DIR="$ISSM_DIR/externalpackages/doxygen/install"
+pathprepend "$DOXYGEN_DIR/bin"
+
+AUTOTOOLS_DIR="$ISSM_DIR/externalpackages/autotools/install"
+pathprepend "$AUTOTOOLS_DIR/bin"
+
+SDK_DIR="C:/MicrosoftVisualStudio 9.0/Microsoft Visual C++ 2008 Express Edition with SP1 - ENU"
+pathappend "$SDK_DIR"
+
+SSH_DIR="$ISSM_DIR/externalpackages/ssh"
+pathappend "$SSH_DIR"
+
+VALGRIND_DIR="$ISSM_DIR/externalpackages/valgrind/install"
+pathprepend "$VALGRIND_DIR/bin"
+
+CPPCHECK_DIR="$ISSM_DIR/externalpackages/cppcheck/install"
+pathappend "$CPPCHECK_DIR/bin"
+
+GDAL_DIR="$ISSM_DIR/externalpackages/gdal/install"
+pathprepend "$GDAL_DIR/bin"
+libpathappend "$GDAL_DIR/lib"
+
+PROJ4_DIR="$ISSM_DIR/externalpackages/proj.4/install"
+dylibpathprepend "$PROJ4_DIR/lib"
+libpathprepend "$PROJ4_DIR/lib"
+
+MERCURIAL_DIR="$ISSM_DIR/externalpackages/mercurial/install"
+if [ -d "$MERCURIAL_DIR" ]; then
+	export PYTHONPATH="$PYTHONPATH:$MERCURIAL_DIR/mercurial/pure/"
+	pathappend "$MERCURIAL_DIR"
+fi
+
+BOOST_DIR="$ISSM_DIR/externalpackages/boost/install"
+BOOSTROOT="$ISSM_DIR/externalpackages/boost/install"
+if [ -d "$BOOST_DIR" ]; then
+	export BOOSTROOT
+	export BOOST_DIR
+	libpathprepend   "$BOOST_DIR/lib"
+	dylibpathprepend "$BOOST_DIR/lib"
+	pathprepend      "$BOOST_DIR/bin"
+fi
+
+XERCESROOT="$ISSM_DIR/externalpackages/xerces/install"
+XERCESCROOT="$ISSM_DIR/externalpackages/xerces/src"
+if [ -d "$XERCESROOT" ]; then
+	export XERCESROOT 
+	export XERCESCROOT
+fi
+
+XAIF_DIR="$ISSM_DIR/externalpackages/xaifbooster/xaifBooster"
+XAIFBOOSTERROOT="$ISSM_DIR/externalpackages/xaifbooster/"
+XAIFBOOSTER_HOME="$ISSM_DIR/externalpackages/xaifbooster/xaifBooster"
+PLATFORM="x86-Linux"
+if [ -d "$XAIF_DIR" ]; then
+	export XAIFBOOSTERROOT
+	export XAIFBOOSTER_HOME
+	export XAIF_DIR
+	export PLATFORM
+fi
+
+ANGELROOT="$ISSM_DIR/externalpackages/angel/angel"
+if [ -d "$ANGELROOT" ]; then
+	export ANGELROOT
+fi
+
+OPENANALYSISROOT="$ISSM_DIR/externalpackages/openanalysis/install"
+if [ -d "$OPENANALYSISROOT" ]; then
+	export OPENANALYSISROOT
+	libpathappend "$OPENANALYSISROOT/lib"
+fi
+
+JVM_DIR="/usr/local/gcc/4.3.2/lib64/gcj-4.3.2-9/"
+libpathappend "$JVM_DIR"
+
+BBFTP_DIR="$ISSM_DIR/externalpackages/bbftp/install"
+pathappend "$BBFTP_DIR/bin"
+
+ADIC_DIR="$ISSM_DIR/externalpackages/adic/install"
+pathappend "$ADIC_DIR/bin"
+libpathappend "$ADIC_DIR/lib"
+
+COLPACK_DIR="$ISSM_DIR/externalpackages/colpack/install"
+libpathappend "$COLPACK_DIR/lib"
+
+ECLIPSE_DIR="$ISSM_DIR/externalpackages/eclipse/install"
+pathappend "$ECLIPSE_DIR"
+
+APPSCAN_DIR="$ISSM_DIR/externalpackages/appscan/install"
+pathappend "$APPSCAN_DIR/bin"
+
+RATS_DIR="$ISSM_DIR/externalpackages/rats/install"
+pathappend "$RATS_DIR/bin"
+
+DYSON_DIR="$ISSM_DIR/externalpackages/dyson/"
+pathappend "$DYSON_DIR"
+
+CMAKE_DIR="$ISSM_DIR/externalpackages/cmake/install"
+pathprepend "$CMAKE_DIR/bin"
+
+SHAPELIB_DIR="$ISSM_DIR/externalpackages/shapelib/install"
+pathappend "$SHAPELIB_DIR/exec"
+
+CCCL_DIR="$ISSM_DIR/externalpackages/cccl/install"
+pathappend "$CCCL_DIR/bin"
+
+PACKAGEMAKER_DIR="$ISSM_DIR/externalpackages/packagemaker/install"
+pathappend "$PACKAGEMAKER_DIR"
+
+#android-dev-dir
+export ANDROID_DIR="$ISSM_DIR/externalpackages/android"
+
+export ANDROID_NDK_DIR="$ANDROID_DIR/android-ndk/install"
+pathappend "$ANDROID_NDK_DIR/arm-linux-android-install/bin"
+
+export ANDROID_SDK_DIR="$ANDROID_DIR/android-sdk/install"
+pathappend "$ANDROID_SDK_DIR/"
+
+GSL_DIR="$ISSM_DIR/externalpackages/gsl/install"
+libpathappend "$GSL_DIR/lib"
+
+GMAKE_DIR="$ISSM_DIR/externalpackages/gmake/install"
+pathprepend "$GMAKE_DIR/bin"
+
+PYTHON_DIR="$ISSM_DIR/externalpackages/python/install"
+if [ -d "$PYTHON_DIR" ]; then
+	export PYTHONPATH="$PYTHONPATH:$ISSM_DIR/lib"
+	pathprepend    "$PYTHON_DIR/bin"
+	libpathprepend "$PYTHON_DIR/lib"
+	libpathprepend "$ISSM_DIR/lib"
+fi
+
+MODELE_DIR="$ISSM_DIR/externalpackages/modelE/install"
+pathappend "$MODELE_DIR/src/exec"
+
+GIT_DIR="$ISSM_DIR/externalpackages/git/install"
+pathprepend "$GIT_DIR/bin"
+
+NCVIEW_DIR="$ISSM_DIR/externalpackages/ncview/install"
+pathappend "$NCVIEW_DIR"
+
+TCLX_DIR="$ISSM_DIR/externalpackages/tclx/install/lib/tclx8.4"
+libpathappend "$TCLX_DIR"
+
+ASPELL_DIR="$ISSM_DIR/externalpackages/aspell/install"
+pathappend "$ASPELL_DIR/bin"
+
+HDF5_DIR="$ISSM_DIR/externalpackages/hdf5/install"
+dylibpathappend "$HDF5_DIR/lib"
+libpathappend "$HDF5_DIR/lib"
+if [ -d "$HDF5_DIR" ]; then
+	export LIBRARY_PATH="$LIBRARY_PATH:$HDF5_DIR/lib"
+	export C_INCLUDE_PATH="$C_INCLUDE_PATH:$HDF5_DIR/include"
+fi
+
+NETCDF_DIR="$ISSM_DIR/externalpackages/netcdf/install"
+pathappend "$NETCDF_DIR/bin"
+dylibpathappend "$NETCDF_DIR/lib"
+libpathappend "$NETCDF_DIR/lib"
+if [ -d "$NETCDF_DIR" ]; then
+	export LIBRARY_PATH="$LIBRARY_PATH:$NETCDF_DIR/lib"
+	dylibpathappend "$NETCDF_DIR/lib"
+	libpathappend "$NETCDF_DIR/lib"
+	export C_INCLUDE_PATH="$C_INCLUDE_PATH:$NETCDF_DIR/include"
+fi
+
+NETCDF_CXX_DIR="$ISSM_DIR/externalpackages/netcdf-cxx/install"
+libpathappend "$NETCDF_CXX_DIR/lib"
+
+SVN_DIR="$ISSM_DIR/externalpackages/svn/install"
+pathprepend   "$SVN_DIR/bin"
+libpathappend "$SVN_DIR/lib"
+
+CVS_DIR="$ISSM_DIR/externalpackages/cvs/install"
+pathprepend   "$CVS_DIR/bin"
+
+APR_DIR="$ISSM_DIR/externalpackages/apr/install"
+pathappend    "$APR_DIR/bin"
+libpathappend "$APR_DIR/lib"
+
+APR_UTIL_DIR="$ISSM_DIR/externalpackages/apr-util/install"
+pathappend   "$APR_UTIL_DIR/bin:$PATH"
+libpathappend "$APR_UTIL_DIR/lib"
+
+SQLITE_DIR="$ISSM_DIR/externalpackages/sqlite/install"
+pathappend   "$SQLITE_DIR/bin"
+libpathappend "$SQLITE_DIR/lib"
+
+YAMS_DIR="$ISSM_DIR/externalpackages/yams/install"
+pathappend   "$YAMS_DIR"
+
+SWIG_DIR="$ISSM_DIR/externalpackages/swig/install"
+pathappend   "$SWIG_DIR"
+
+#AUX-CONFIG
+pathappend   "$ISSM_DIR/aux-config"
+
+#INISHELL
+pathappend   "$ISSM_DIR/externalpackages/inishell/install"
+
+#SHELL2JUNIT
+pathappend   "$ISSM_DIR/externalpackages/shell2junit/install"
+
+#EXPAT
+libpathprepend   "$ISSM_DIR/externalpackages/expat/install"
+dylibpathprepend   "$ISSM_DIR/externalpackages/expat/install"
+
+#GMSH
+pathappend   "$ISSM_DIR/externalpackages/gmsh/install"
+
+#CURL
+libpathprepend   "$ISSM_DIR/externalpackages/curl/install/lib"
+dylibpathprepend   "$ISSM_DIR/externalpackages/curl/install/lib"
+pathprepend "$ISSM_DIR/externalpackages/curl/install/bin"
+
+#GMT
+pathprepend "$ISSM_DIR/externalpackages/gmt/install/bin"
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Data/Download.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Data/Download.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Data/Download.sh	(revision 21239)
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+echo "Downloading Square shelf dataset"
+$ISSM_DIR/scripts/DownloadExternalPackage2.py 'http://issm.jpl.nasa.gov/files/workshop2014/SquareShelf.nc' 'SquareShelf.nc'
+
+echo "Downloading SeaRISE dataset - Antarctica"
+$ISSM_DIR/scripts/DownloadExternalPackage2.py 'http://websrv.cs.umt.edu/isis/images/c/cc/Antarctica_5km_withshelves_v0.75.nc' 'Antarctica_5km_withshelves_v0.75.nc'
+
+echo "Downloading InSAR Antarctic velocities"
+$ISSM_DIR/scripts/DownloadExternalPackage2.py 'ftp://n5eil01u.ecs.nsidc.org/SAN/MEASURES/NSIDC-0484.001/1996.01.01/antarctica_ice_velocity_900m.nc' 'Antarctica_ice_velocity.nc' 
+
+echo "Downloading PIG errors"
+$ISSM_DIR/scripts/DownloadExternalPackage2.py 'http://issm.jpl.nasa.gov/files/workshop2014/CrossOvers2009.mat' 'CrossOvers2009.mat'
+
+echo "Downloading SeaRISE dataset - Greenland"
+$ISSM_DIR/scripts/DownloadExternalPackage2.py 'http://websrv.cs.umt.edu/isis/images/e/e9/Greenland_5km_dev1.2.nc' 'Greenland_5km_dev1.2.nc'
+
+echo "Downloading Jason Box's SMB"
+$ISSM_DIR/scripts/DownloadExternalPackage2.py 'http://issm.jpl.nasa.gov/files/examples/Box_Greenland_SMB_monthly_1840-2012_5km_cal_ver20141007.nc' 'Box_Greenland_SMB_monthly_1840-2012_5km_cal_ver20141007.nc'
+
+echo "Downloading IceBridge Jakobshavn bedrock"
+$ISSM_DIR/scripts/DownloadExternalPackage2.py 'https://data.cresis.ku.edu/data/grids/old_versions/Jakobshavn_2008_2011_Composite.zip' 'Jakobshavn_2008_2011_Composite.zip'
+unzip Jakobshavn_2008_2011_Composite.zip
+mv Jakobshavn_2008_2011_Composite/grids/Jakobshavn_2008_2011_Composite_XYZGrid.txt .
+rm -rf Jakobshavn_2008_2011_Composite Jakobshavn_2008_2011_Composite.zip
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Greenland/CheatSheet.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Greenland/CheatSheet.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Greenland/CheatSheet.m	(revision 21239)
@@ -0,0 +1,72 @@
+if any(steps==7)
+	disp('   Step 7: Historical Relaxation run');
+	md = loadmodel('./Models/Greenland.Control_drag');
+
+	load smbbox
+
+	%convert mesh x,y into the Box projection
+	[md.mesh.lat,md.mesh.long]  = xy2ll(md.mesh.x,md.mesh.y,+1,39,71);
+	[xi,yi]= ll2xy(md.mesh.lat,md.mesh.long,+1,45,70);
+
+	%Interpolate and set surface mass balance
+	index = BamgTriangulate(x1(:),y1(:));
+	smb_mo = InterpFromMeshToMesh2d(index,x1(:),y1(:),smbmean(:),xi,yi);
+	smb = smb_mo*12/1000*md.materials.rho_freshwater/md.materials.rho_ice;
+	md.smb.mass_balance = [smb;1 ];
+
+	%Set transient options, run for 20 years, saving every 5 timesteps
+	md.timestepping.time_step=0.2;
+	md.timestepping.final_time=200;
+	md.settings.output_frequency=5;
+
+	%Additional options
+	md.inversion.iscontrol=0;
+	md.transient.requested_outputs={'IceVolume','TotalSmb', ...
+		'SmbMassBalance'};
+	md.verbose=verbose('solution',true,'module',true);
+
+	%Go solve
+	md.cluster=generic('name',oshostname,'np',2);
+	md=solve(md,'Transient');
+
+	save ./Models/Greenland.HistoricTransient_200yr md;
+end
+
+if any(steps==8)
+	disp('   Step 8: Plotting exercise');
+
+	%Load historic transient model
+	md = loadmodel('./Models/Greenland.HistoricTransient_200yr');
+
+	%Create Line Plots of relaxation run.  Create a figure.
+	figure
+
+	%Save surface mass balance, by looping through 200 years (1000 steps)
+	% Note, the first output will always contain output from time step 1
+	surfmb=[]; for i=2:201; surfmb=[surfmb ...
+		md.results.TransientSolution(i).SmbMassBalance]; end
+
+	%Plot surface mass balance time series in first subplot
+	subplot(3,1,1); plot([1:200],mean(surfmb));
+
+	%Title this plot Mean surface mass balance
+	title('Mean Surface mass balance');
+
+	%Save velocity by looping through 200 years
+	vel=[]; for i=2:201; vel=[vel md.results.TransientSolution(i).Vel]; end
+
+	%Plot velocity time series in second subplot
+	subplot(3,1,2); plot([1:200],mean(vel));
+
+	%Title this plot Mean Velocity
+	title('Mean Velocity');
+
+	%Save Ice Volume by looping through 200 years
+	volume=[]; for i=2:201; volume=[volume md.results.TransientSolution(i).IceVolume]; end
+
+	%Plot volume time series in third subplot
+	subplot(3,1,3); plot([1:200],volume);
+
+	%Title this plot Mean Velocity and add an x label of years
+	title('Ice Volume'); xlabel('years');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Greenland/DomainOutline.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Greenland/DomainOutline.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Greenland/DomainOutline.exp	(revision 21239)
@@ -0,0 +1,733 @@
+## Name:DomainOutline
+## Icon:0
+# Points Count Value
+727 1.000000
+# X pos Y pos
+47662.8073760000 -2621047.2585999998
+39869.9055420000 -2638077.6292949999
+26037.5047870000 -2644088.3483640002
+24868.5695120000 -2659115.1460360000
+25647.8596950000 -2674141.9437079998
+16880.8451320000 -2687666.0616130000
+515.7512810000 -2685662.4885900002
+-7666.7956450000 -2672639.2639410002
+-22083.6640370000 -2677147.3032430001
+-30071.3884170000 -2690170.5278920000
+-44683.0793550000 -2694678.5671930001
+-41760.7411680000 -2709705.3648660001
+-37669.4677050000 -2724231.2692820001
+-44488.2568100000 -2738757.1736989999
+-55787.9644690000 -2753283.0781149999
+-67672.1397650000 -2742263.4264890002
+-87154.3943500000 -2741762.5332330000
+-105078.0685680000 -2741011.1933490001
+-97090.3441880000 -2760546.0303230002
+-99817.8598300000 -2780581.7605530000
+-82478.6532500000 -2789096.9459000002
+-77218.4445120000 -2804123.7435730002
+-77023.6219660000 -2820152.3277560002
+-95336.9412760000 -2829669.2996149999
+-112870.9704020000 -2832674.6591500002
+-123196.5653320000 -2818649.6479890002
+-122417.2751480000 -2834177.3389170002
+-120274.2271440000 -2849204.1365890000
+-105662.5362060000 -2854713.9624020001
+-89492.2649000000 -2850706.8163560000
+-77997.7346950000 -2860724.6814710000
+-92024.9579960000 -2867737.1870519998
+-84816.5238000000 -2890277.3835600000
+-94752.4736380000 -2901797.9284419999
+-114234.7282230000 -2894284.5296060001
+-127677.4838860000 -2883765.7712349999
+-146964.9159250000 -2888774.7037930000
+-139951.3042750000 -2905805.0744880000
+-154173.3501210000 -2916824.7261140002
+-165667.8803260000 -2904302.3947210000
+-162550.7195930000 -2920330.9789040000
+-152809.5923000000 -2934355.9900650000
+-147744.2061080000 -2949883.6809930000
+-163719.6548680000 -2950384.5742489998
+-175603.8301650000 -2963908.6921540000
+-189825.8760110000 -2956896.1865730002
+-195670.5523870000 -2971422.0909899999
+-210282.2433250000 -2966413.1584319999
+-222750.8862590000 -2978301.3022220000
+-214763.1618800000 -2995247.5385030000
+-222750.8862590000 -3011386.8111520000
+-206970.2600460000 -3016228.5929470002
+-217295.8549760000 -3027122.6019839998
+-232686.8360980000 -3031964.3837790000
+-212035.6462380000 -3035192.2383090002
+-212814.9364210000 -3050928.0291410000
+-197229.1327540000 -3048910.6200600001
+-185344.9574570000 -3058190.7018329999
+-174824.5399810000 -3071102.1199520002
+-182812.2643610000 -3084820.5017030002
+-192163.7465610000 -3098942.3652710002
+-176577.9428940000 -3092486.6562120002
+-184955.3123650000 -3105801.5561469998
+-182617.4418150000 -3121537.3469790001
+-199372.1807580000 -3120326.9015310002
+-218464.7902510000 -3115888.6015519998
+-205022.0345870000 -3126782.6105900002
+-189825.8760110000 -3128800.0196710001
+-198592.8905740000 -3146149.7377680000
+-213009.7589670000 -3140904.4741580002
+-225283.5793550000 -3131220.9105679998
+-222750.8862590000 -3146149.7377680000
+-208334.0178670000 -3151395.0013790000
+-195670.5523870000 -3161078.5649680002
+-213009.7589670000 -3171569.0921900002
+-227621.4499060000 -3161078.5649680002
+-242622.7859360000 -3157850.7104389998
+-240090.0928400000 -3174393.4649040001
+-220023.3706180000 -3185690.9557579998
+-233076.4811890000 -3193357.1102660000
+-258013.7670580000 -3188111.8466550000
+-275158.1510920000 -3196181.4829790001
+-258208.5896040000 -3198198.8920600000
+-252753.5583200000 -3213127.7192600002
+-270482.4099920000 -3215952.0919740000
+-258793.0572410000 -3226442.6191960000
+-275547.7961840000 -3232969.1157640000
+-276521.9089130000 -3248275.5695210001
+-293276.6478560000 -3241868.2167850002
+-282561.4078340000 -3256818.7065010001
+-288211.2616640000 -3273549.0164200002
+-302433.3075110000 -3267141.6636850000
+-305745.2907900000 -3251479.2458879999
+-313733.0151700000 -3237596.6482950002
+-310810.6769820000 -3218018.6260489998
+-325812.0130120000 -3213747.0575589999
+-338280.6559470000 -3203780.0644160002
+-336527.2530340000 -3187761.6825779998
+-321720.7395500000 -3185269.9342919998
+-325812.0130120000 -3165691.9120459999
+-313538.1926240000 -3155368.9548610002
+-329708.4639290000 -3158928.5952699999
+-338085.8334010000 -3173167.1569030001
+-351723.4116100000 -3164268.0558819999
+-342566.7519550000 -3151809.3144530002
+-325812.0130120000 -3153233.1706160000
+-310615.8544360000 -3148249.6740450002
+-329123.9962920000 -3150029.4942490002
+-343151.2195930000 -3144334.0695949998
+-361854.1839940000 -3145401.9617180000
+-377634.8102080000 -3142910.2134320000
+-388350.0502290000 -3154657.0267800000
+-397701.5324300000 -3178150.6534750001
+-417573.4321060000 -3179930.4736790000
+-432720.8850460000 -3186308.0579260001
+-451813.4945390000 -3187438.8412219998
+-467788.9432980000 -3177261.7915590000
+-482985.1018740000 -3173492.5139070000
+-490583.1811620000 -3158792.3310610000
+-492726.2291670000 -3141453.6538590002
+-490193.5360710000 -3119214.9157079998
+-505389.6946470000 -3113560.9992289999
+-489803.8909790000 -3110922.5048719998
+-478309.3607740000 -3100368.5274439999
+-495648.5673540000 -3101122.3829750000
+-512792.9513890000 -3108660.9382799999
+-501103.5986380000 -3097353.1053220001
+-493895.1644420000 -3083783.7057719999
+-486491.9077000000 -3068329.6673960001
+-503636.2917340000 -3066068.1008040002
+-522728.9012270000 -3064183.4619780001
+-521559.9659520000 -3046467.8570099999
+-531301.0932440000 -3029506.1075729998
+-543769.7361790000 -3012167.4303710000
+-545912.7841830000 -2992944.1143419999
+-550004.0576459999 -2974474.6538439998
+-567538.0867720000 -2983897.8479749998
+-585851.4060810000 -2995959.5364640001
+-589942.6795440000 -2981259.3536189999
+-572213.8278720001 -2975982.3649050002
+-565200.2162220000 -2959397.5432330002
+-548055.8321870000 -2954120.5545190000
+-545717.9616370000 -2933389.5274290000
+-536561.3019820000 -2920197.0556450002
+-545523.1390910000 -2907758.4393910002
+-533444.1412490000 -2898335.2452590000
+-530568.0950890000 -2883304.2548420001
+-545624.1658510000 -2879383.1998239998
+-559750.8495300000 -2868110.1666489998
+-577223.3267109999 -2867129.9028940001
+-590606.5007220000 -2859287.7928590002
+-573319.9009570000 -2851445.6828239998
+-551572.2431889999 -2846054.2321750000
+-530939.8499220000 -2834781.1989989998
+-528337.5660870000 -2817626.5832969998
+-543765.3916830000 -2804883.1544900001
+-528151.6886699999 -2802432.4951040000
+-528151.6886699999 -2785768.0112790000
+-513467.3727410000 -2778416.0331210000
+-513839.1275750000 -2760771.2855420001
+-525735.2822510001 -2749498.2523670001
+-509563.9469880000 -2738225.2191909999
+-517184.9210780000 -2724501.5266300002
+-532240.9918400000 -2725971.9222610001
+-524248.2629170000 -2707837.0428050002
+-512537.9856570000 -2694113.3502429998
+-521088.3468310000 -2678429.1301730000
+-538189.0691780000 -2669606.7563829999
+-556033.3011930001 -2677448.8664190001
+-539676.0885130001 -2666175.8332429999
+-526664.6693360000 -2658333.7232080000
+-517556.6759110000 -2639708.7118739998
+-526107.0370850000 -2626965.2830670001
+-538932.5788460000 -2618142.9092779998
+-550456.9786890000 -2607360.0079790000
+-565698.9268680000 -2599517.8979440001
+-581126.7524640000 -2600988.2935759998
+-583110.5023000001 -2578346.1085480000
+-572583.8192940000 -2566324.6704099998
+-556315.3091930000 -2558811.2715739999
+-538132.8567270000 -2571333.6029679999
+-524735.2601730000 -2578346.1085480000
+-519759.0100240000 -2594875.5859869998
+-503107.7114500000 -2585859.5073839999
+-486456.4128760000 -2576342.5355250002
+-477843.6722340000 -2559312.1648300001
+-474015.7875040000 -2536771.9683220000
+-473441.6047950000 -2521244.2773940000
+-474972.7586870000 -2504714.7999539999
+-485690.8359300000 -2491691.5753049999
+-486073.6244030000 -2476664.7776330002
+-492581.0284430000 -2459634.4069380001
+-474207.1817410000 -2447112.0755440001
+-465594.4410990000 -2434589.7441509999
+-462340.7390790000 -2418060.2667109999
+-462914.9217880000 -2399026.3229930000
+-468465.3546460000 -2375484.3399729999
+-473058.8163220000 -2360457.5423010001
+-478417.8549440000 -2343427.1716060000
+-504256.0768690000 -2331405.7334679998
+-489901.5091330000 -2322389.6548649999
+-475164.1529230000 -2307863.7504480002
+-462577.4401970000 -2287577.5735909999
+-457317.2314590000 -2269044.5231289999
+-439783.2023330000 -2268042.7366169998
+-436666.0415990000 -2252014.1524330000
+-435886.7514160000 -2233481.1019710000
+-448550.2168960000 -2220457.8773220000
+-440172.8474240000 -2206933.7594170002
+-429262.7848570000 -2193409.6415120000
+-433743.7034120000 -2176880.1640720000
+-426730.0917610000 -2162354.2596560000
+-419716.4801110000 -2147327.4619840002
+-428678.3172200000 -2134805.1305900002
+-427314.5593990000 -2110762.2543150000
+-426535.2692150000 -2094733.6701310000
+-427509.3819440000 -2067184.5410650000
+-428093.8495820000 -2050655.0636260000
+-425366.3339400000 -2035628.2659539999
+-432379.9455910000 -2021102.3615369999
+-446017.5238000000 -2003571.0975860001
+-430821.3652240000 -2002569.3110750001
+-428678.3172200000 -1986039.8336360001
+-424197.3986650000 -1971013.0359630000
+-418060.4884710000 -1957238.4714309999
+-433451.4695930000 -1950225.9658500000
+-426243.0353960000 -1933696.4884110000
+-441634.0165180000 -1943714.3535259999
+-433841.1146840000 -1926683.9828300001
+-448647.6281690000 -1933696.4884110000
+-464428.2543820000 -1948222.3928270000
+-465402.3671120000 -1933195.5951550000
+-463843.7867450000 -1914662.5446929999
+-456245.7074570000 -1901138.4267879999
+-468714.3503910000 -1892122.3481840000
+-480208.8805960000 -1905646.4660890000
+-479429.5904130000 -1888616.0953939999
+-478455.4776830000 -1871585.7246989999
+-478650.3002290000 -1856558.9270270001
+-484494.9766050000 -1841031.2360990001
+-494430.9264430000 -1822498.1856370000
+-505925.4566480000 -1807972.2812200000
+-508847.7948350000 -1791442.8037810000
+-504172.0537350000 -1776416.0061079999
+-510990.8428400000 -1759886.5286689999
+-502223.8282770000 -1745861.5175079999
+-512939.0682980000 -1728330.2535570001
+-511964.9555690000 -1712802.5626300001
+-505340.9890100000 -1697775.7649570000
+-506315.1017390000 -1681747.1807740000
+-507289.2144690000 -1662713.2370559999
+-508446.9486300000 -1645056.7497910000
+-502180.9448550000 -1623518.3397939999
+-505662.0580630000 -1602480.8230530000
+-505836.1137240000 -1586953.1321250000
+-509317.2269320000 -1571425.4411970000
+-516105.3976870000 -1557400.4300360000
+-530552.0175000000 -1537865.5930620001
+-533336.9080660000 -1513321.8235309999
+-522719.5127820000 -1498295.0258589999
+-506532.3363650000 -1492284.3067900001
+-522893.5684430000 -1484770.9079539999
+-515757.2863660000 -1469744.1102819999
+-532118.5184440000 -1465236.0709800001
+-535947.7429720000 -1449708.3800520001
+-544476.4703320001 -1428670.8633109999
+-551960.8637290000 -1415146.7454059999
+-565363.1495800000 -1405629.7735470000
+-567277.7618440000 -1386094.9365729999
+-582420.6042990000 -1384091.3635499999
+-593212.0552430000 -1370066.3523899999
+-606266.2297730000 -1362052.0602980000
+-613793.7528780000 -1344395.5730330001
+-621618.1005840000 -1359923.2639609999
+-634079.0987820000 -1369440.2358200001
+-633354.6221430000 -1354413.4381480000
+-638860.6446030000 -1339386.6404760000
+-649438.0035390001 -1351908.9718690000
+-667405.0241970000 -1352409.8651250000
+-679431.3364110000 -1363429.5167510000
+-679721.1270670000 -1346900.0393119999
+-676533.4298540000 -1330370.5618720001
+-690008.6953470000 -1339386.6404760000
+-701165.6355950000 -1327365.2023380001
+-688994.4280520000 -1315844.6574560001
+-709279.7739560000 -1318349.1237339999
+-717249.0169900000 -1331372.3483839999
+-735216.0376480001 -1329869.6686160001
+-741420.6668040000 -1315969.8807699999
+-750947.3474350000 -1299440.4033299999
+-734597.5036490000 -1299440.4033299999
+-722496.0444700000 -1284413.6056580001
+-707948.5456690000 -1288420.7517039999
+-689023.9233340001 -1290424.3247270000
+-678209.8534290000 -1276399.3135660000
+-672545.3406220000 -1262374.3024060000
+-693401.0468670001 -1264377.8754280000
+-709493.4127980000 -1260871.6226379999
+-725971.9955110000 -1250853.7575240000
+-725714.5176560000 -1234825.1733400000
+-720951.1773400001 -1215290.3363659999
+-737172.2821980000 -1218295.6958999999
+-749402.4803050000 -1205272.4712510000
+-736399.8486340001 -1196757.2859040000
+-720822.4384130000 -1191247.4600899999
+-710652.0631450000 -1204771.5779949999
+-697906.9093280000 -1218796.5891559999
+-684131.8440910000 -1227812.6677590001
+-668940.6506530000 -1229816.2407819999
+-666237.1331770000 -1253358.2238020001
+-653620.7182870000 -1262374.3024060000
+-648471.1611900000 -1247347.5047330000
+-634696.0959530000 -1258868.0496149999
+-632625.0227419999 -1243541.0164699999
+-618416.8083510000 -1233878.1370890001
+-601000.2874830000 -1228080.4094600000
+-615361.2783740000 -1217451.2421410000
+-598861.4165000001 -1216968.0981719999
+-610625.2069099999 -1201990.6351310001
+-617652.9258560000 -1185080.5962139999
+-631708.3637490000 -1178799.7246160000
+-648666.5551200000 -1183631.1643070001
+-656458.1565610000 -1169136.8452349999
+-653708.1795820000 -1154159.3821950001
+-665166.4169950000 -1166237.9814210001
+-676166.3249110000 -1153193.0942569999
+-676166.3249110000 -1133384.1915249999
+-689305.1038110000 -1118406.7284850001
+-709013.2721609999 -1111159.5689490000
+-711610.4726409999 -1091833.8101870001
+-716346.5441050000 -1074440.6273010001
+-701527.2237180000 -1070092.3315790000
+-680291.2903790000 -1068642.8996720000
+-664096.9815030000 -1078788.9230219999
+-650958.2026030000 -1100530.4016300000
+-628041.7277770001 -1095698.9619390001
+-611236.3129050001 -1091350.6662170000
+-588930.9440750000 -1094732.6740009999
+-577319.9301640000 -1078305.7790530000
+-565250.5867559999 -1066710.3237960001
+-550431.2663680000 -1071541.7634860000
+-540042.4644469999 -1060429.4521979999
+-531203.6819710000 -1047613.0696300000
+-510357.6695660000 -1037937.0529810000
+-498473.4942690000 -1027821.2173940000
+-486199.6738810000 -1015066.4681760001
+-487953.0767930000 -994834.7970020000
+-464964.0163830000 -990876.4265550000
+-449378.2127160000 -998353.3485110000
+-430285.6032230000 -1001432.0810810000
+-417622.1377430000 -1012427.5545450000
+-399308.8184330000 -1004950.6325890000
+-384697.1274945000 -1000332.5337340001
+-370085.4365560000 -995714.4348789999
+-375540.4678400000 -980760.5909680000
+-380021.3863940000 -966246.5659950000
+-383528.1922200000 -949973.2652690000
+-383528.1922200000 -930181.4130330000
+-384112.6598570000 -911709.0176140000
+-380216.2089400000 -883560.6055450001
+-366919.5701860000 -892846.9764360000
+-353087.1694310000 -880338.0618260000
+-336527.2530340000 -873692.7009390000
+-322694.8522790000 -888547.0370390000
+-307888.3387940000 -897146.9158330000
+-294835.2282230000 -913564.8662580000
+-275937.4412760000 -919037.5164000000
+-252169.0906820000 -915128.4805850000
+-245350.3015780000 -901446.8552300000
+-244181.3663030000 -918646.6128190000
+-231615.3120950000 -930563.0925760000
+-215445.0407900000 -924017.9382920000
+-206872.8487730000 -937108.2468600000
+-190507.7549220000 -933426.5975750000
+-186611.3040050000 -912972.9904390000
+-185961.8955186667 -896882.8194913333
+-185312.4870323333 -880792.6485436666
+-184663.0785460000 -864702.4775960000
+-175311.5963460000 -883519.7961620000
+-174532.3061620000 -902337.1147280000
+-172584.0807040000 -918700.0004370000
+-168882.4523330000 -933835.6697180000
+-152322.5359360000 -933835.6697180000
+-142581.4086430000 -921563.5054359999
+-127969.7177050000 -912154.8461530000
+-131086.8784390000 -930563.0925760000
+-115501.0747710000 -924427.0104349999
+-112189.0914910000 -905609.6918690000
+-114916.6071330000 -887610.5175890001
+-101473.8514700000 -899882.6818710000
+-84329.4674350000 -896610.1047290000
+-100110.0936490000 -892110.3111590000
+-87836.2732610000 -879838.1468770000
+-74685.7514160000 -869305.2030530000
+-57541.3673810000 -863251.9975030000
+-49553.6430020000 -850388.9357080000
+-34357.4844260000 -846227.3568920000
+-47995.0626350000 -825797.7881600000
+-30071.3884170000 -835255.9218320000
+-18771.6807580000 -850767.2610550000
+-6303.0378240000 -859847.0693810000
+7139.7178400000 -852658.8877899999
+22141.0538700000 -862873.6721560000
+31297.7135250000 -877628.3606850000
+47662.8073760000 -874601.7579100000
+49611.0328340000 -893518.0252550000
+66365.7717770000 -886708.1690110000
+81123.5796250000 -882220.1151260000
+97683.4960220000 -884202.5846670000
+80149.4668960000 -888960.5115630000
+65537.7759570000 -896493.8958170000
+68460.1141450000 -914732.6155880000
+84435.5629050000 -917508.0729450000
+100605.8342100000 -907595.7252430000
+120282.9113400000 -911957.1582320000
+129049.9259030000 -927420.4206470000
+153402.7441340000 -925437.9511060000
+169767.8379850000 -920680.0242090001
+180677.9005530000 -910371.1825990001
+192367.2533040000 -899269.3531730000
+201134.2678670000 -912353.6521400000
+182626.1260110000 -920680.0242090001
+169183.3703480000 -936539.7805320000
+163338.6939720000 -950417.0673150000
+182820.9485570000 -955174.9942120000
+187301.8671120000 -970241.7627180000
+200744.6227750000 -980550.6043280000
+198796.3973170000 -995617.3728350000
+211118.9233410000 -983385.4589040000
+211508.5684330000 -999969.0227530000
+225146.1466420000 -1008484.9068910000
+240731.9503100000 -1009829.5201760000
+238588.9023060000 -1032239.7415930000
+253785.0608820000 -1029550.5150230000
+273072.4929210000 -1036273.5814480000
+281255.0398460000 -1056890.9851510001
+286320.4260380000 -1071681.7312860000
+305413.0355310000 -1086024.2729930000
+316907.5657360000 -1095884.7704169999
+326453.8704830000 -1081990.4331380001
+341260.3839670000 -1076611.9799980000
+355677.2523600000 -1064958.6648609999
+372319.0245690000 -1056006.2810410000
+387981.0391590000 -1068027.7191780000
+383779.0352450000 -1084056.3033620000
+366207.0188750000 -1085558.9831290001
+366971.0195860000 -1102088.4605690001
+352646.0062410000 -1113108.1121950001
+362960.0158500000 -1126131.3368440000
+380914.0325760000 -1133143.8424249999
+394093.0448530000 -1123626.8705660000
+409182.0589100000 -1113108.1121950001
+409182.0589100000 -1131641.1626569999
+404407.0544620000 -1158689.3984670001
+386262.0375580000 -1153179.5726540000
+374229.0263480000 -1166202.7973030000
+364488.0172730000 -1182732.2747430000
+377285.0291950000 -1191748.3533460000
+388172.0393370000 -1202768.0049719999
+392947.0437860000 -1219798.3756680000
+380341.0320420000 -1228814.4542710001
+383588.0350670000 -1251354.6507790000
+389509.0405830000 -1265880.5551960000
+389509.0405830000 -1282910.9258910001
+399632.0500130000 -1295934.1505400001
+408609.0583760000 -1313966.3077469999
+410137.0598000000 -1333000.2514650000
+413526.9681570000 -1350406.2921020000
+416526.2265730000 -1367436.6627970000
+415776.4119690000 -1385468.8200040001
+419900.3922910000 -1406005.4434890000
+430960.1577010000 -1421032.2411610000
+431897.4259560000 -1436059.0388330000
+448018.4399430000 -1436559.9320890000
+448580.8008960000 -1456094.7690630001
+438458.3037410000 -1469117.9937120001
+432459.7869090000 -1486148.3644069999
+449705.5228020000 -1494663.5497550000
+448393.3472450000 -1513196.6002170001
+463202.1856750000 -1521210.8923090000
+447830.9862920000 -1525218.0383550001
+458140.9370980000 -1539243.0495160001
+462639.8247220000 -1554269.8471880001
+473887.0437820000 -1564287.7123030000
+458703.2980510000 -1557275.2067219999
+463014.7320240000 -1574305.5774170000
+478948.2923600000 -1567293.0718370001
+484009.5409370000 -1584824.3357879999
+475011.7656880000 -1597346.6671819999
+484009.5409370000 -1614877.9311319999
+488508.4285610000 -1630906.5153160000
+470512.8780640000 -1618384.1839230000
+461702.5564670000 -1631407.4085720000
+474074.4974330000 -1641926.1669419999
+488883.3358630000 -1648938.6725230000
+495661.8324810000 -1662963.6836830000
+478923.6439970000 -1667471.7229849999
+463095.1396700000 -1663965.4701950001
+449449.8773190000 -1652945.8185690001
+455817.6664170000 -1670477.0825199999
+441626.5935720000 -1662963.6836830000
+433439.4361610000 -1648437.7792670000
+409690.0603430000 -1652315.3206390000
+394504.9542530000 -1655951.1781029999
+411243.1427370000 -1662462.7904280000
+426707.7734010000 -1676487.8015880000
+437260.1096190000 -1691514.5992610001
+455999.6032480000 -1702534.2508870000
+441626.5935720000 -1710047.6497229999
+428891.0153770000 -1692516.3857720001
+435076.8676430000 -1708544.9699560001
+419976.1106410000 -1704036.9306540000
+408696.0270980000 -1692516.3857720001
+395050.7647470000 -1701532.4643750000
+388501.0388190000 -1718562.8350710000
+378494.5130940000 -1731085.1664640000
+376129.3342870000 -1713553.9025129999
+361938.2614420000 -1720566.4080940001
+373582.2186480000 -1732086.9529760000
+358481.4616460000 -1738598.5652999999
+369397.6715270000 -1754627.1494839999
+352659.4830430000 -1751621.7899490001
+335805.3526830000 -1754501.9261700001
+338338.0457790000 -1777042.1226780000
+354897.9621760000 -1775539.4429110000
+349053.2858010000 -1792569.8136060000
+330739.9664910000 -1791568.0270950000
+344182.7221550000 -1806093.9315110000
+341455.2065130000 -1823625.1954620001
+351780.8014430000 -1809600.1843010001
+344377.5447010000 -1826129.6617409999
+356066.8974510000 -1836147.5268550001
+345546.4799760000 -1853678.7908059999
+363080.5091020000 -1853678.7908059999
+371847.5236650000 -1841156.4594129999
+370288.9432980000 -1859689.5098750000
+386848.8596950000 -1868204.6952229999
+404772.5339130000 -1856183.2570849999
+415098.1288430000 -1867703.8019669999
+428735.7070520000 -1860691.2963870000
+421137.6277640000 -1874215.4142920000
+413929.1935680000 -1888741.3187080000
+418799.7572140000 -1903768.1163800000
+428735.7070520000 -1916791.3410300000
+415098.1288430000 -1935825.2847480001
+398148.5673540000 -1926809.2061439999
+380030.0705910000 -1929814.5656790000
+364444.2669230000 -1929814.5656790000
+348468.8181630000 -1924304.7398659999
+333077.8370420000 -1919796.7005640001
+348079.1730720000 -1935825.2847480001
+332883.0144960000 -1939832.4307939999
+318855.7911950000 -1951853.8689309999
+331908.9017660000 -1964376.2003250001
+349442.9308930000 -1959868.1610230000
+358209.9454560000 -1943338.6835840000
+358404.7680020000 -1958365.4812560000
+345936.1250670000 -1971388.7059050000
+345351.6574300000 -1987918.1833450000
+330739.9664910000 -1991925.3293910001
+337753.5781420000 -2005449.4472960001
+353534.2043550000 -2007453.0203180001
+365223.5571060000 -1997435.1552040000
+385679.9244200000 -1986415.5035770000
+399317.5026290000 -1977399.4249740001
+399122.6800840000 -1993928.9024139999
+381393.8284120000 -1998436.9417150000
+399512.3251750000 -1999939.6214820000
+395615.8742580000 -2018973.5652000001
+387822.9724240000 -2032998.5763610001
+383975.2271440000 -2048275.8206610000
+398976.5631740000 -2062801.7250780000
+397223.1602620000 -2078830.3092610000
+379299.4860440000 -2080833.8822840001
+362739.5696470000 -2085842.8148419999
+374428.9223980000 -2097363.3597240001
+390599.1937030000 -2089849.9608880000
+379299.4860440000 -2103374.0787930000
+364492.9725590000 -2111388.3708839999
+355531.1354500000 -2097363.3597240001
+343257.3150620000 -2111889.2641400001
+351829.5070790000 -2127917.8483239999
+365661.9078340000 -2119402.6629760000
+357284.5383630000 -2133928.5673929998
+374039.2773060000 -2136933.9269269998
+385533.8075110000 -2147452.6852980000
+375792.6802180000 -2160976.8032030002
+390988.8387940000 -2162479.4829699998
+378520.1958600000 -2174000.0278520002
+394105.9995280000 -2164983.9492489998
+409107.3355580000 -2161978.5897140000
+421186.3334010000 -2149957.1515759998
+437941.0723440000 -2150958.9380879998
+450409.7152780000 -2171495.5615730002
+454695.8112860000 -2156969.6571570002
+471645.3727750000 -2159975.0166910002
+459566.3749330000 -2147452.6852980000
+465605.8738540000 -2132425.8876260002
+477490.0491500000 -2120404.4494880000
+485867.4186220000 -2133427.6741370000
+493264.3211700000 -2119402.6629760000
+495978.8328800000 -2102873.1855370002
+509098.9728100000 -2110386.5843730001
+523877.9810080000 -2104876.7585600000
+541371.5009160000 -2109885.6911169998
+529608.6168400000 -2096862.4664680001
+544990.8498620000 -2099366.9327469999
+561579.5325330000 -2107381.2248390000
+576509.3469370001 -2104876.7585600000
+596868.1847600000 -2102873.1855370002
+611948.8053700000 -2108883.9046060001
+597622.2157910001 -2119402.6629760000
+580430.3082950000 -2125413.3820449999
+599130.2778520000 -2126916.0618119999
+583144.8200050000 -2134930.3539040000
+568818.2304260000 -2148454.4718089998
+582843.2075930000 -2161477.6964580002
+566706.9435400000 -2162980.3762260000
+552983.5787850000 -2170994.6683180002
+543331.9815950000 -2188025.0390130002
+547554.5553660000 -2207058.9827310001
+538053.7643820000 -2193033.9715700001
+525084.4306570000 -2209062.5557539999
+516036.0582910000 -2221083.9938920001
+529910.2292520000 -2214572.3815669999
+541220.6947100000 -2225091.1399369999
+526140.0741000000 -2223087.5669140001
+526743.2989240000 -2239617.0443540001
+521615.8879170000 -2256647.4150490002
+506233.6548950000 -2255144.7352820002
+508194.1355740000 -2275681.3587670000
+489343.3598110000 -2268167.9599310001
+488740.1349870000 -2283695.6508590002
+475770.8012620000 -2293212.6227179999
+460539.3744460000 -2281692.0778359999
+449228.9089890000 -2296217.9822519999
+448022.4593400000 -2314250.1394590000
+440180.5366230000 -2298722.4485309999
+441085.3738600000 -2277184.0385340001
+426000.8914760000 -2286450.5637659999
+431125.9775380000 -2301477.3614380001
+426190.7094780000 -2317505.9456210001
+424672.1654600000 -2332532.7432940002
+421445.2594210000 -2313498.7995750001
+409296.9072740000 -2298472.0019029998
+411764.5413040000 -2318006.8388769999
+403222.7312010000 -2304983.6142279999
+411005.2692950000 -2289956.8165560002
+393542.0130840000 -2293463.0693460000
+378356.5729000000 -2295967.5356250000
+388416.9270220000 -2308489.8670180002
+405880.1832330000 -2317005.0523660001
+417838.7173770000 -2328525.5972480001
+402463.4591910000 -2342049.7151529999
+385000.2029800000 -2341047.9286409998
+375699.1208680000 -2327022.9174799998
+384240.9309710000 -2314500.5860870001
+368865.6727850000 -2321012.1984120002
+373421.3048400000 -2337541.6758510000
+363360.9507190000 -2353069.3667790000
+351402.4165740000 -2336539.8893400002
+340392.9724410000 -2324518.4512020000
+329573.3463100000 -2313999.6928309998
+335267.8863790000 -2329527.3837589999
+336216.9763910000 -2347058.6477100002
+337166.0664020000 -2362085.4453819999
+318374.0841750000 -2366593.4846839998
+303758.0979980000 -2362586.3386380002
+290314.2882280000 -2354697.2698599999
+292067.6911410000 -2339670.4721880001
+275702.5972900000 -2347684.7642799998
+277880.2580262116 -2321542.8592617917
+269420.4169677348 -2331176.2138948478
+260960.5759092579 -2323294.3782859840
+252500.7348507810 -2343436.8470641924
+254834.4841082919 -2357157.0794203631
+258918.5453089359 -2372336.9109633607
+266740.7601810000 -2359706.2024170002
+271754.1662252456 -2369125.7927523423
+266545.9376350000 -2379241.0393909998
+291483.2235030000 -2386253.5449720002
+275897.4198350000 -2396271.4100859999
+288755.7078610000 -2404786.5954339998
+276871.5325650000 -2415806.2470600000
+263818.4219930000 -2423820.5391520001
+259532.3259840000 -2445358.9491490000
+250570.4888750000 -2432836.6177559998
+248817.0859630000 -2452371.4547290001
+247258.5055960000 -2470403.6119360002
+229919.2990160000 -2474911.6512380000
+226022.8480990000 -2490439.3421660000
+239660.4263080000 -2499956.3140250002
+227776.2510110000 -2510975.9656509999
+220178.1717230000 -2523999.1902999999
+205761.3033310000 -2533015.2689029998
+210631.8669770000 -2560063.5047129998
+203228.6102350000 -2545036.7070410000
+194266.7731260000 -2558560.8249459998
+199624.3931360000 -2581101.0214539999
+185791.9923810000 -2568077.7968049999
+189493.6207520000 -2583104.5944770002
+186571.2825650000 -2601136.7516839998
+185207.5247440000 -2584106.3809890002
+169816.5436220000 -2595126.0326149999
+156568.6105040000 -2586610.8472679998
+134748.4853690000 -2581101.0214539999
+149749.8214000000 -2579598.3416869999
+136112.2431900000 -2592120.6730809999
+146437.8381200000 -2612657.2965660002
+130462.3893610000 -2620671.5886579999
+137281.1784650000 -2635197.4930739999
+125007.3580770000 -2621172.4819140001
+106888.8613130000 -2617666.2291230001
+91887.5252830000 -2609151.0437759999
+109031.9093180000 -2607648.3640089999
+92277.1703750000 -2603641.2179629998
+97537.3791130000 -2587111.7405229998
+88380.7194580000 -2573587.6226180000
+74743.1412490000 -2567076.0102940002
+61105.5630390000 -2577093.8754090001
+66950.2394150000 -2594124.2461040001
+57598.7572140000 -2581101.0214539999
+53117.8386600000 -2598131.3921500002
+41818.1310010000 -2586610.8472679998
+30810.6571600000 -2599133.1786610000
+44253.4128240000 -2608650.1505200001
+47662.8073760000 -2621047.2585999998
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Greenland/Greenland.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Greenland/Greenland.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Greenland/Greenland.par	(revision 21239)
@@ -0,0 +1,77 @@
+%Name and Coordinate system
+md.miscellaneous.name='SeaRISEgreenland';
+md.mesh.epsg=3413;
+
+disp('   Loading SeaRISE data from NetCDF');
+ncdata='../Data/Greenland_5km_dev1.2.nc';
+x1    = ncread(ncdata,'x1');
+y1    = ncread(ncdata,'y1');
+usrf  = ncread(ncdata,'usrf')';
+topg  = ncread(ncdata,'topg')';
+velx  = ncread(ncdata,'surfvelx')';
+vely  = ncread(ncdata,'surfvely')';
+temp  = ncread(ncdata,'airtemp2m')';
+smb   = ncread(ncdata,'smb')';
+gflux = ncread(ncdata,'bheatflx')';
+
+disp('   Interpolating surface and bedrock');
+md.geometry.base     = InterpFromGridToMesh(x1,y1,topg,md.mesh.x,md.mesh.y,0);
+md.geometry.surface = InterpFromGridToMesh(x1,y1,usrf,md.mesh.x,md.mesh.y,0);
+
+disp('   Constructing thickness');
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+%Set min thickness to 1 meter
+pos0=find(md.geometry.thickness<=0);
+md.geometry.thickness(pos0)=1;
+md.geometry.surface=md.geometry.thickness+md.geometry.base;
+
+disp('   Interpolating velocities ');
+md.inversion.vx_obs  = InterpFromGridToMesh(x1,y1,velx,md.mesh.x,md.mesh.y,0);
+md.inversion.vy_obs  = InterpFromGridToMesh(x1,y1,vely,md.mesh.x,md.mesh.y,0);
+md.inversion.vel_obs = sqrt(md.inversion.vx_obs.^2+md.inversion.vy_obs.^2);
+md.initialization.vx = md.inversion.vx_obs;
+md.initialization.vy = md.inversion.vy_obs;
+md.initialization.vz = zeros(md.mesh.numberofvertices,1);
+md.initialization.vel= md.inversion.vel_obs;
+
+disp('   Interpolating temperatures');
+md.initialization.temperature=InterpFromGridToMesh(x1,y1,temp,md.mesh.x,md.mesh.y,0)+273.15;
+
+disp('   Interpolating surface mass balance');
+md.smb.mass_balance=InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0);
+md.smb.mass_balance=md.smb.mass_balance*md.materials.rho_water/md.materials.rho_ice;
+
+disp('   Construct basal friction parameters');
+md.friction.coefficient=30*ones(md.mesh.numberofvertices,1);
+pos=find(md.mask.groundedice_levelset<0);
+md.friction.coefficient(pos)=0; %no friction applied on floating ice
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('   Construct ice rheological properties');
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+
+disp('   Set other boundary conditions');
+md.mask.ice_levelset(md.mesh.vertexonboundary==1)=0;
+md.basalforcings.floatingice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.thermal.spctemperature     = [md.initialization.temperature;1]; %impose observed temperature on surface
+md.masstransport.spcthickness    = NaN*ones(md.mesh.numberofvertices,1);
+
+disp('   Set geothermal heat flux');
+md.basalforcings.geothermalflux=InterpFromGridToMesh(x1,y1,gflux,md.mesh.x,md.mesh.y,0);
+
+disp('   Set Pressure');
+md.initialization.pressure=md.materials.rho_ice*md.constants.g*md.geometry.thickness;
+
+disp('   Single point constraints');
+%Initialize single point constraint arrays
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.spcvx = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz = NaN*ones(md.mesh.numberofvertices,1);
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Greenland/runme.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Greenland/runme.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Greenland/runme.m	(revision 21239)
@@ -0,0 +1,329 @@
+clear all;
+steps=[1];
+
+%Location of SeaRISE dataset
+ncdata='../Data/Greenland_5km_dev1.2.nc';
+
+if any(steps==1)
+	disp('   Step 1: Mesh creation');
+
+	%Generate initial uniform mesh (resolution = 20000 m)
+	md=triangle(model,'./DomainOutline.exp',20000);
+
+	% Get velocities (Note: You can use ncdisp('file') to see an ncdump)
+	x1   = ncread(ncdata,'x1');
+	y1   = ncread(ncdata,'y1');
+	velx = ncread(ncdata,'surfvelx');
+	vely = ncread(ncdata,'surfvely');
+	vx   = InterpFromGridToMesh(x1,y1,velx',md.mesh.x,md.mesh.y,0);
+	vy   = InterpFromGridToMesh(x1,y1,vely',md.mesh.x,md.mesh.y,0);
+	vel  = sqrt(vx.^2+vy.^2);
+
+	%Mesh Greenland
+	md=bamg(md,'hmax',400000,'hmin',5000,'gradation',1.7,'field',vel,'err',8);
+	
+	%convert x,y coordinates (Polar stereo) to lat/lon
+	[md.mesh.lat,md.mesh.long]=xy2ll(md.mesh.x,md.mesh.y,+1,39,71);
+
+	save ./Models/Greenland.Mesh_generation md;
+
+	plotmodel (md,'data','mesh');
+end
+
+if any(steps==2)
+	disp('   Step 2: Parameterization');
+	md = loadmodel('./Models/Greenland.Mesh_generation');
+
+	md = setmask(md,'','');
+	md = parameterize(md,'./Greenland.par');
+	md = setflowequation(md,'SSA','all');
+
+	save ./Models/Greenland.Parameterization md; 
+end
+
+if any(steps==3)
+	disp('   Step 3: Control method friction');
+	md = loadmodel('./Models/Greenland.Parameterization');
+
+	%Control general
+	md.inversion.iscontrol=1;
+	md.inversion.nsteps=30;
+	md.inversion.step_threshold=0.99*ones(md.inversion.nsteps,1);
+	md.inversion.maxiter_per_step=5*ones(md.inversion.nsteps,1);
+
+	%Cost functions
+	md.inversion.cost_functions=[101 103 501];
+	md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,3);
+	md.inversion.cost_functions_coefficients(:,1)=350;
+	md.inversion.cost_functions_coefficients(:,2)=0.6;
+	md.inversion.cost_functions_coefficients(:,3)=2e-6;
+
+	%Controls
+	md.inversion.control_parameters={'FrictionCoefficient'};
+	md.inversion.gradient_scaling(1:md.inversion.nsteps)=50;
+	md.inversion.min_parameters=1*ones(md.mesh.numberofvertices,1);
+	md.inversion.max_parameters=200*ones(md.mesh.numberofvertices,1);
+
+	%Additional parameters
+	md.stressbalance.restol=0.01; md.stressbalance.reltol=0.1; 
+	md.stressbalance.abstol=NaN;
+
+	%Go solve
+	md.cluster=generic('name',oshostname,'np',2);
+	md.toolkits=toolkits;
+	md.verbose=verbose('solution',true,'control',true);
+	md=solve(md,'Stressbalance');
+
+	%Update model friction fields accordingly
+	md.friction.coefficient=md.results.StressbalanceSolution.FrictionCoefficient;
+
+	save ./Models/Greenland.Control_drag md; 
+end
+
+if any(steps==4)
+	disp('   Step 4: Transient run');
+	md = loadmodel('./Models/Greenland.Control_drag');
+
+	%Set surface mass balance
+	x1  = ncread(ncdata,'x1');
+	y1  = ncread(ncdata,'y1');
+	smb = ncread(ncdata,'smb');
+	smb = InterpFromGridToMesh(x1,y1,smb',md.mesh.x,md.mesh.y,0);
+	smb = smb*md.materials.rho_freshwater/md.materials.rho_ice;
+	smb = [smb smb smb-1.0];
+	md.smb.mass_balance = [smb;1 10 20];
+
+	%Set transient options, run for 20 years, saving every timestep
+	md.timestepping.time_step=0.2;
+	md.timestepping.final_time=20;
+	md.settings.output_frequency=1;
+
+	%Additional options
+	md.inversion.iscontrol=0;
+	md.transient.requested_outputs={'IceVolume','TotalSmb', ...
+		                             'SmbMassBalance'};
+	md.verbose=verbose('solution',true,'module',true,'convergence',true);
+
+	%Go solve
+	md.cluster=generic('name',oshostname,'np',2);
+	md=solve(md,'Transient');
+
+	save ./Models/Greenland.Transient md; 
+end
+
+if any(steps==5)
+	disp('   Step 5: Plotting'); 
+	md = loadmodel('./Models/Greenland.Transient');
+
+	%Planview plots
+	plotmodel(md,'data',md.results.TransientSolution(end).Vel,'log#1', 10, ...
+		'caxis#1', [1e-1 1e4], ...
+		'title#1', 'Velocity (m/y)',...
+		'data',md.results.TransientSolution(1).SmbMassBalance,...
+		'title#2', 'Surface Mass Balance (m/y)',...
+		'data',md.results.TransientSolution(end).Thickness,...
+		'title', 'Thickness (m)',...
+		'data',md.results.TransientSolution(end).Surface,...
+		'title', 'Surface (m)');
+
+	%Line Plots
+	figure
+
+	%Plot surface mass balance
+	surfmb=[]; for i=1:100; surfmb=[surfmb ...
+		md.results.TransientSolution(i).SmbMassBalance]; end
+	subplot(3,1,1); plot([0.2:0.2:20],mean(surfmb)); title('Mean Surface mass balance');
+
+	%Plot velocity
+	vel=[]; for i=1:100; vel=[vel md.results.TransientSolution(i).Vel]; end
+	subplot(3,1,2); plot([0.2:0.2:20],mean(vel)); title('Mean Velocity');
+
+	%Plot Volume
+	volume=[]; for i=1:100; volume=[volume md.results.TransientSolution(i).IceVolume]; end
+	subplot(3,1,3); plot([0.2:0.2:20],volume); title('Ice Volume');
+	xlabel('years')
+end
+
+if any(steps==6)
+	disp('   Step 6: Extract Box SMB');
+	md = loadmodel('./Models/Greenland.Transient');
+
+	ncbox='../Data/Box_Greenland_SMB_monthly_1840-2012_5km_cal_ver20141007.nc';
+
+	%Set surface mass balance
+	lat  = ncread(ncbox,'lat');
+	lon  = ncread(ncbox,'lon');
+	smbbox = ncread(ncbox,'MassFlux');
+	[x1 y1]=ll2xy(lat,lon,+1,45,70);
+
+	years_of_simulation = 1840:2012;
+	t = [years_of_simulation(1):1/12:years_of_simulation(end)+11/12];
+
+	%Area of grid for 5km box
+	area_of_grid=5000*5000;
+	totalsmb=reshape(sum(sum(smbbox/1000,1),2),length(t),1)*area_of_grid;
+
+	%save surface mass balance mat dataset
+	smbmean = mean(mean(smbbox,3),4);
+	save -v7.3 smbbox smbmean totalsmb smbbox x1 y1 t;
+
+	%plot a time series of total SMB
+	figure; plot(t,totalsmb/1e9); title('Total Surface mass balance, Gt'); xlabel('year'); ylabel('Gt/yr');
+
+	clear smbbox
+
+end
+
+if any(steps==7)
+	disp('   Step 7: Historical Relaxation run');
+	md = loadmodel('./Models/Greenland.Control_drag');
+
+	load smbbox
+
+	%convert mesh x,y into the Box projection
+	[md.mesh.lat,md.mesh.long]  = xy2ll(md.mesh.x,md.mesh.y,+1,39,71);
+	[xi,yi]= ll2xy(md.mesh.lat,md.mesh.long,+1,45,70);
+
+	%Interpolate and set surface mass balance
+	index = BamgTriangulate(x1(:),y1(:));
+	smb_mo = InterpFromMeshToMesh2d(index,x1(:),y1(:),smbmean(:),xi,yi);
+	smb = smb_mo*12/1000*md.materials.rho_freshwater/md.materials.rho_ice;
+	md.smb.mass_balance = [smb;1 ];
+
+	%Set transient options, run for 20 years, saving every timestep
+	md.timestepping.time_step=0.2;
+	md.timestepping.final_time=20;
+	md.settings.output_frequency=1;
+
+	%Additional options
+	md.inversion.iscontrol=0;
+	md.transient.requested_outputs={'IceVolume','TotalSmb', ...
+		'SmbMassBalance'};
+	md.verbose=verbose('solution',true,'module',true);
+
+	%Go solve
+	md.cluster=generic('name',oshostname,'np',2);
+	md=solve(md,'Transient');
+
+	save ./Models/Greenland.HistoricTransient md;
+end
+
+if any(steps==8)
+	disp('   Step 8: Plotting exercise');
+
+	%Load historic transient model
+
+
+	%Create Line Plots of relaxation run.  Create a figure.
+
+
+	%Save surface mass balance, by looping through 200 years (1000 steps)
+	% Note, the first output will always contain output from time step 1
+
+
+	%Plot surface mass balance time series in first subplot
+
+	
+	%Title this plot Mean surface mass balance
+
+
+	%Save velocity by looping through 200 years
+
+
+	%Plot velocity time series in second subplot
+
+	
+	%Title this plot Mean Velocity
+
+
+	%Save Ice Volume by looping through 200 years 
+
+
+	%Plot volume time series in third subplot
+
+	
+	%Title this plot Mean Velocity and add an x label of years
+
+end
+
+if any(steps==9)
+	disp('   Step 9: Box Transient run');
+	md = loadmodel('./Models/Greenland.HistoricTransient_200yr');
+
+	%load past transient results
+	md.geometry.base=md.results.TransientSolution(end).Base;
+	md.geometry.thickness=md.results.TransientSolution(end).Thickness;
+	md.geometry.surface=md.geometry.base+md.geometry.thickness;
+	md.initialization.vx=(md.results.TransientSolution(end).Vx);
+	md.initialization.vy=(md.results.TransientSolution(end).Vy);
+	md.results=[];
+
+	%convert mesh x,y into the Box projection
+	[md.mesh.lat,md.mesh.long]  = xy2ll(md.mesh.x,md.mesh.y,+1,39,71);
+	[xi,yi]= ll2xy(md.mesh.lat,md.mesh.long,+1,45,70);
+
+	%Set surface mass balance
+	load smbbox
+	index = BamgTriangulate(x1(:),y1(:));
+
+	%Set years to run
+	years_of_simulation = 2003:2012;
+
+	%initialize surface mass balance matrix
+	smb = nan*ones(md.mesh.numberofvertices,length(years_of_simulation)*12);
+
+	%Interpolate and set surface mass balance
+	for year=years_of_simulation
+		for month=1:12
+			smb_mo = griddata(double(x1),double(y1),...
+				double(squeeze(smbbox(:,:,month,year-1839))),xi,yi,'nearest');
+			smb(:,(year-years_of_simulation(1))*12+month) = smb_mo;
+		end
+	end
+	md.smb.mass_balance = ...
+		[smb*12/1000*md.materials.rho_freshwater/md.materials.rho_ice; ...
+		[1/24:1/12:length(years_of_simulation)]];
+
+	%Set transient options, monthly timestep, saving every month
+	md.timestepping.time_step=1/12;
+	md.timestepping.final_time=length(years_of_simulation);
+	md.settings.output_frequency=1;
+
+	%Additional options
+	md.inversion.iscontrol=0;
+	md.transient.requested_outputs={'IceVolume','TotalSmb', ...
+		'SmbMassBalance'};
+	md.verbose=verbose('solution',true,'module',true);
+
+	%Go solve
+	md.cluster=generic('name',oshostname,'np',2);
+	md=solve(md,'Transient');
+
+	save ./Models/Greenland.BoxTransient md;
+end
+
+if any(steps==10)
+	disp('   Step 10: Plot Box Transient');
+	md = loadmodel('./Models/Greenland.BoxTransient');
+
+	%Set years run
+	years_of_simulation = 2003:2012;
+	t = [years_of_simulation(1):1/12:years_of_simulation(end)+11/12];
+
+	%Line Plots
+	figure
+
+	%Plot surface mass balance
+	surfmb=[]; for i=1:length(t); surfmb=[surfmb ...
+		md.results.TransientSolution(i).TotalSmb]; end
+	subplot(3,1,1); plot(t,surfmb); title('Total Surface mass balance');
+
+	%Plot velocity
+	vel=[]; for i=1:length(t); vel=[vel md.results.TransientSolution(i).Vel]; end
+	subplot(3,1,2); plot(t,max(vel)); title('Max Velocity');
+
+	%Plot Volume
+	volume=[]; for i=1:length(t); volume=[volume md.results.TransientSolution(i).IceVolume]; end
+	subplot(3,1,3); plot(t,volume); title('Ice Volume');
+	xlabel('years')
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/ISMIP/CheatyIsmipA.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/ISMIP/CheatyIsmipA.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/ISMIP/CheatyIsmipA.par	(revision 21239)
@@ -0,0 +1,52 @@
+%Parameterization for ISMIP A experiment
+
+%Set the Simulation generic name #md.miscellaneous
+%->
+
+%Geometry
+disp('   Constructing Geometry');
+
+%Define the geometry of the simulation #md.geometry
+%surface is [-x*tan(0.5*pi/180)] #md.mesh
+%->
+md.geometry.surface=-md.mesh.x*tan(0.5*pi/180.);
+%base is [surface-1000+500*sin(x*2*pi/L).*sin(y*2*pi/L)]
+%L is the size of the side of the square #max(md.mesh.x)-min(md.mesh.x)
+%->
+L=max(md.mesh.x)-min(md.mesh.x);
+md.geometry.base=md.geometry.surface-1000.0+500.0*sin(md.mesh.x*2.0*pi/L).*sin(md.mesh.y*2.0*pi/L);
+%thickness is the difference between surface and base #md.geometry
+%->
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+%plot the geometry to check it out
+%->
+plotmodel(md,'data',md.geometry.thickness);
+
+disp('   Defining friction parameters');
+
+%These parameters will not be used but need to be fixed #md.friction
+%one friciton coefficient per node (md.mesh.numberofvertices,1)
+%->
+md.friction.coefficient=200.0*ones(md.mesh.numberofvertices,1);
+%one friciton exponent (p,q) per element
+%->
+md.friction.p=ones(md.mesh.numberofelements,1);
+%->
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('   Construct ice rheological properties');
+
+%The rheology parameters sit in the material section #md.materials
+%B has one value per vertex
+%->
+md.materials.rheology_B=6.8067e7*ones(md.mesh.numberofvertices,1);
+%n has one value per element
+%->
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+disp('   Set boundary conditions');
+
+%Set the default boundary conditions for an ice-sheet 
+% #help SetIceSheetBC
+%->
+md=SetIceSheetBC(md);
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/ISMIP/CheatyIsmipF.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/ISMIP/CheatyIsmipF.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/ISMIP/CheatyIsmipF.par	(revision 21239)
@@ -0,0 +1,66 @@
+%Parameterization for ISMIP F experiment
+
+%Set the Simulation generic name #md.miscellaneous
+%->
+
+%Geometry
+disp('   Constructing Geometry');
+
+%Define the geometry of the simulation #md.geometry
+%surface is [-x*tan(3.0*pi/180)] #md.mesh
+%->
+md.geometry.surface=md.mesh.x*tan(3.0*pi/180.0);
+%base is [surface-1000+100*exp(-((x-L/2).^2+(y-L/2).^2)/(10000.^2))]
+%L is the size of the side of the square #max(md.mesh.x)-min(md.mesh.x)
+%->
+L=max(md.mesh.x)-min(md.mesh.x);
+%->
+md.geometry.base=md.geometry.surface-1000.0+100.0*exp(-((md.mesh.x-L/2.0).^2.0+(md.mesh.y-L/2.0).^2.0)/(10000.^2.0));
+%thickness is the difference between surface and base #md.geometry
+%->
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+%plot the geometry to check it out
+%->
+plotmodel(md,'data',md.geometry.thickness);
+
+disp('   Defining friction parameters');
+
+%These parameters will not be used but need to be fixed #md.friction
+%one friciton coefficient per node (md.mesh.numberofvertices,1)
+%conversion form year to seconds with #md.constants.yts
+%->
+md.friction.coefficient=sqrt(md.constants.yts/(1000*2.140373*10^-7))*ones(md.mesh.numberofvertices,1);
+%one friciton exponent (p,q) per element
+%->
+md.friction.p=ones(md.mesh.numberofelements,1);
+%->
+md.friction.q=zeros(md.mesh.numberofelements,1);
+
+disp('   Construct ice rheological properties');
+
+%The rheology parameters sit in the material section #md.materials
+%B has one value per vertex
+%->
+md.materials.rheology_B=(1/(2.140373*10^-7/md.constants.yts))*ones(md.mesh.numberofvertices,1);
+%n has one value per element
+%->
+md.materials.rheology_n=1*ones(md.mesh.numberofelements,1);
+
+disp('   Set boundary conditions');
+
+%Set the default boundary conditions for an ice-sheet 
+% #help SetIceSheetBC
+%->
+md=SetIceSheetBC(md);
+
+disp('   Initializing velocity and pressure');
+
+%initialize the velocity and pressurefields of #md.initialization
+%->
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+%->
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+%->
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+%->
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/ISMIP/CheatyRunme.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/ISMIP/CheatyRunme.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/ISMIP/CheatyRunme.m	(revision 21239)
@@ -0,0 +1,221 @@
+%wich steps to perform steps are from 1 to 8 
+%step 7 is specific to ISMIPA
+%step 8 is specific to ISMIPF
+
+steps=[1];
+
+% parameter file to be used, choose between CheatyIsmipA.par or CheatyIsmipF.par
+ParamFile='CheatyIsmipF.par'
+
+%Run Steps
+
+%Mesh Generation #1
+if any(steps==1)
+
+	%initialize md as a new model #help model
+	%->
+	md=model();
+	% generate a squaremesh #help squaremesh
+	% Side is 80 km long with 20 points
+	%->
+	if(ParamFile=='CheatyIsmipA.par'),
+		md=squaremesh(md,80000,80000,20,20);
+	elseif(ParamFile=='CheatyIsmipF.par'),
+		md=squaremesh(md,100000,100000,30,30);
+  end
+	% plot the given mesh #plotdoc
+	%->
+	plotmodel(md,'data','mesh')
+	% save the given model
+	%->
+	save ./Models/ISMIP.Mesh_generation md;
+end
+
+%Masks #2
+if any(steps==2)
+
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+	md = loadmodel('./Models/ISMIP.Mesh_generation');
+	% set the mask #help setmask
+	% all MISMIP nodes are grounded
+	%->
+	md=setmask(md,'','');
+	% plot the given mask #md.mask to locate the field
+	%->
+	plotmodel(md,'data',md.mask.groundedice_levelset);
+	% save the given model
+	%->
+	save ./Models/ISMIP.SetMask md;
+end
+
+%Parameterization #3
+if any(steps==3)
+
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+	md = loadmodel('./Models/ISMIP.SetMask');
+	% parametrize the model # help parameterize
+	% you will need to fil-up the parameter file defined by the
+	% ParamFile variable
+	%->
+	md=parameterize(md,ParamFile);
+	% save the given model
+	%->
+	save ./Models/ISMIP.Parameterization md;
+end
+
+%Extrusion #4
+if any(steps==4)
+	
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+	md = loadmodel('./Models/ISMIP.Parameterization');
+	% vertically extrude the preceding mesh #help extrude
+	% only 5 layers exponent 1
+	%->
+	md=extrude(md,9,1);
+	% plot the 3D geometry #plotdoc
+	%->
+	plotmodel(md,'data',md.geometry.base)
+	% save the given model
+	%->
+	save ./Models/ISMIP.Extrusion md;
+end
+
+%Set the flow computing method #5
+if any(steps==5)
+
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+	md = loadmodel('./Models/ISMIP.Extrusion');
+	% set the approximation for the flow computation #help setflowequation
+	% We will be using the Higher Order Model (HO)
+	%->
+	md=setflowequation(md,'HO','all');
+	% save the given model
+	%->
+	save ./Models/ISMIP.SetFlow md;
+end
+
+%Set Boundary Conditions #6
+if any(steps==6)
+
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+	md = loadmodel('./Models/ISMIP.SetFlow');
+	% dirichlet boundary condition are known as SPCs
+	% ice frozen to the base, no velocity	#md.stressbalance
+	% SPCs are initialized at NaN one value per vertex
+	%->
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	%->
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	%->
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+	% extract the nodenumbers at the base #md.mesh.vertexonbase
+	%->
+	basalnodes=find(md.mesh.vertexonbase);
+	% set the sliding to zero on the bed
+	%->
+	md.stressbalance.spcvx(basalnodes)=0.0;
+	%->
+	md.stressbalance.spcvy(basalnodes)=0.0;
+	% periodic boundaries have to be fixed on the sides
+	% create tabs with the side of the domain
+	% for x
+	% create maxX #help find
+	%->
+	maxX=find(md.mesh.x==max(md.mesh.x));
+	% create minX
+	%->
+	minX=find(md.mesh.x==min(md.mesh.x));
+	% for y, max X and minX should be excluded
+	% create maxY
+	%->
+	maxY=find(md.mesh.y==max(md.mesh.y) & md.mesh.x~=max(md.mesh.x) & md.mesh.x~=min(md.mesh.x));
+	% create minY
+	%->
+	minY=find(md.mesh.y==min(md.mesh.y) & md.mesh.x~=max(md.mesh.x) & md.mesh.x~=min(md.mesh.x));
+	% set the node that should be paired together
+	% #md.stressbalance.vertex_pairing
+	%->
+	md.stressbalance.vertex_pairing=[minX,maxX;minY,maxY];
+	if (ParamFile=='CheatyIsmipF.par')
+		% if we are dealing with IsmipF the solution is in
+		% masstransport
+		md.masstransport.vertex_pairing=md.stressbalance.vertex_pairing;
+  end
+	% save the given model
+	%->
+	save ./Models/ISMIP.BoundaryCondition md;
+end
+
+%Solving #7
+if any(steps==7)
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+	md = loadmodel('./Models/ISMIP.BoundaryCondition');
+	% Set cluster #md.cluster
+	% generic parameters #help generic
+	% set only the name and number of process
+	%->
+	md.cluster=generic('name',oshostname(),'np',2);
+	% Set which control message you want to see #help verbose
+	%->
+	md.verbose=verbose('convergence',true);
+	% Solve #help solve
+	% we are solving a StressBalanc
+	%->
+	md=solve(md,'Stressbalance');
+	% save the given model
+	%->
+	save ./Models/ISMIP.StressBalance md;
+	% plot the surface velocities #plotdoc
+	%->
+	plotmodel(md,'data',md.results.StressbalanceSolution.Vel)
+end
+
+%Solving #8
+if any(steps==8)
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+	md = loadmodel('./Models/ISMIP.BoundaryCondition');
+	% Set cluster #md.cluster
+	% generic parameters #help generic
+	% set only the name and number of process
+	%->
+	md.cluster=generic('name',oshostname(),'np',2);
+	% Set which control message you want to see #help verbose
+	%->
+	md.verbose=verbose('convergence',true);
+	% set the transient model to ignore the thermal model
+	% #md.transient 
+	%->
+	md.transient.isthermal=0;
+	% define the timestepping scheme
+	% everything here should be provided in years #md.timestepping
+	% give the length of the time_step (4 years)
+	%->
+	md.timestepping.time_step=4;
+	% give final_time (20*4 years time_steps)
+	%->
+	md.timestepping.final_time=4*20;
+	% Solve #help solve
+	% we are solving a TransientSolution
+	%->
+	md=solve(md,'Transient');
+	% save the given model
+	%->
+	save ./Models/ISMIP.Transient md;
+	% plot the surface velocities #plotdoc
+	%->
+	plotmodel(md,'data',md.results.TransientSolution(20).Vel)
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/ISMIP/IsmipA.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/ISMIP/IsmipA.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/ISMIP/IsmipA.par	(revision 21239)
@@ -0,0 +1,52 @@
+%Parameterization for ISMIP A experiment
+
+%Set the Simulation generic name #md.miscellaneous
+%->
+
+%Geometry
+disp('   Constructing Geometry');
+
+%Define the geometry of the simulation #md.geometry
+%surface is [-x*tan(0.5*pi/180)] #md.mesh
+%->
+
+%base is [surface-1000+500*sin(x*2*pi/L).*sin(y*2*pi/L)]
+%L is the size of the side of the square #max(md.mesh.x)-min(md.mesh.x)
+%->
+
+%->
+
+%thickness is the difference between surface and base #md.geometry
+%->
+
+%plot the geometry to check it out
+%->
+
+
+disp('   Defining friction parameters');
+
+%These parameters will not be used but need to be fixed #md.friction
+%one friciton coefficient per node (md.mesh.numberofvertices,1)
+%->
+
+%one friciton exponent (p,q) per element
+%->
+
+%->
+
+
+disp('   Construct ice rheological properties');
+
+%The rheology parameters sit in the material section #md.materials
+%B has one value per vertex
+%->
+
+%n has one value per element
+%->
+
+
+disp('   Set boundary conditions');
+
+%Set the default boundary conditions for an ice-sheet 
+% #help SetIceSheetBC
+%->
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/ISMIP/IsmipF.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/ISMIP/IsmipF.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/ISMIP/IsmipF.par	(revision 21239)
@@ -0,0 +1,64 @@
+%Parameterization for ISMIP F experiment
+
+%Set the Simulation generic name #md.miscellaneous
+%->
+
+%Geometry
+disp('   Constructing Geometry');
+
+%Define the geometry of the simulation #md.geometry
+%surface is [-x*tan(3.0*pi/180)] #md.mesh
+%->
+
+%base is [surface-1000+100*exp(-((x-L/2).^2+(y-L/2).^2)/(0.1*L^2))]
+%L is the size of the side of the square #max(md.mesh.x)-min(md.mesh.x)
+%->
+
+%->
+
+%thickness is the difference between surface and base #md.geometry
+%->
+
+%plot the geometry to check it out
+%->
+
+
+disp('   Defining friction parameters');
+
+%These parameters will not be used but need to be fixed #md.friction
+%one friciton coefficient per node (md.mesh.numberofvertices,1)
+%conversion form year to seconds with #md.constants.yts
+%->
+
+%one friciton exponent (p,q) per element
+%->
+
+%->
+
+
+disp('   Construct ice rheological properties');
+
+%The rheology parameters sit in the material section #md.materials
+%B has one value per vertex
+%->
+
+%n has one value per element
+%->
+
+
+disp('   Set boundary conditions');
+
+%Set the default boundary conditions for an ice-sheet 
+% #help SetIceSheetBC
+%->
+
+disp('   Initializing velocity and pressure');
+
+%initialize the velocity and pressurefields of #md.initialization
+%->
+
+%->
+
+%->
+
+%->
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/ISMIP/runme.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/ISMIP/runme.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/ISMIP/runme.m	(revision 21239)
@@ -0,0 +1,215 @@
+%wich steps to perform steps are from 1 to 8 
+%step 7 is specific to ISMIPA
+%step 8 is specific to ISMIPF
+
+steps=[1];
+
+% parameter file to be used, choose between IsmipA.par or IsmipF.par
+ParamFile='IsmipA.par'
+
+%Run Steps
+
+%Mesh Generation #1
+if any(steps==1) 
+
+	%initialize md as a new model #help model
+	%->
+
+	% generate a squaremesh #help squaremesh
+	% Side is 80 km long with 20 points
+	%->
+
+	% plot the given mesh #plotdoc
+	%->
+
+	% save the given model
+	%->
+
+end
+
+%Masks #2
+if any(steps==2) 
+
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+
+	% set the mask #help setmask
+	% all MISMIP nodes are grounded
+	%->
+
+	% plot the given mask #md.mask to locate the field
+	%->
+
+	% save the given model
+	%->
+
+end
+
+%Parameterization #3
+if any(steps==3) 
+
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+
+	% parametrize the model # help parameterize
+	% you will need to fil-up the parameter file (given by the
+  % ParamFile variable)
+	%->
+
+	% save the given model
+	%->
+
+end
+
+%Extrusion #4
+if any(steps==4)
+	
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+
+	% vertically extrude the preceding mesh #help extrude
+	% only 5 layers exponent 1
+	%->
+
+	% plot the 3D geometry #plotdoc
+	%->
+
+	% save the given model
+	%->
+
+end
+
+%Set the flow computing method #5
+if any(steps==5)
+
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+
+	% set the approximation for the flow computation #help setflowequation
+	% We will be using the Higher Order Model (HO)
+	%->
+
+	% save the given model
+	%->
+
+end
+
+%Set Boundary Conditions #6
+if any(steps==6)
+
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+
+	% dirichlet boundary condition are known as SPCs
+	% ice frozen to the base, no velocity	#md.stressbalance
+	% SPCs are initialized at NaN one value per vertex
+	%->
+
+	%->
+
+	%->
+
+	% extract the nodenumbers at the base #md.mesh.vertexonbase
+	%->
+
+  % set the sliding to zero on the bed (Vx and Vy)
+	%->
+
+	%->
+
+	% periodic boundaries have to be fixed on the sides
+	% create tabs with the side of the domain
+	% for x
+	% create maxX #help find
+	%->
+
+	% create minX
+	%->
+
+	% for y, max X and minX should be excluded
+	% create maxY
+	%->
+
+	% create minY
+	%->
+
+	% set the node that should be paired together
+	% #md.stressbalance.vertex_pairing
+	%->
+
+	if (ParamFile=='IsmipF.par')
+		% if we are dealing with IsmipF the solution is in masstransport
+		md.masstransport.vertex_pairing=md.stressbalance.vertex_pairing;
+  end
+	% save the given model
+	%->
+
+end
+
+%Solving #7
+if any(steps==7)
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+
+	% Set cluster #md.cluster
+	% generic parameters #help generic
+	% set only the name and number of process
+	%->
+
+	% Set which control message you want to see #help verbose
+	%->
+
+	% Solve #help solve
+	% we are solving a StressBalanc
+	%->
+
+	% save the given model
+	%->
+
+	% plot the surface velocities #plotdoc
+	%->
+end
+
+%Solving #8
+if any(steps==8)
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+
+	% Set cluster #md.cluster
+	% generic parameters #help generic
+	% set only the name and number of process
+	%->
+
+	% Set which control message you want to see #help verbose
+	%->
+
+	% set the transient model to ignore the thermal model
+	% #md.transient 
+	%->
+
+	% define the timestepping scheme
+	% everything here should be provided in years #md.timestepping
+	% give the length of the time_step (4 years)
+	%->
+
+	% give final_time (20*4 years time_steps)
+	%->
+
+	% Solve #help solve
+	% we are solving a TransientSolution
+	%->
+
+	% save the given model
+	%->
+
+	% plot the surface velocities #plotdoc
+	%->
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/DomainOutline.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/DomainOutline.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/DomainOutline.exp	(revision 21239)
@@ -0,0 +1,733 @@
+## Name:DomainOutline
+## Icon:0
+# Points Count Value
+727 1.000000
+# X pos Y pos
+47662.8073760000 -2621047.2585999998
+39869.9055420000 -2638077.6292949999
+26037.5047870000 -2644088.3483640002
+24868.5695120000 -2659115.1460360000
+25647.8596950000 -2674141.9437079998
+16880.8451320000 -2687666.0616130000
+515.7512810000 -2685662.4885900002
+-7666.7956450000 -2672639.2639410002
+-22083.6640370000 -2677147.3032430001
+-30071.3884170000 -2690170.5278920000
+-44683.0793550000 -2694678.5671930001
+-41760.7411680000 -2709705.3648660001
+-37669.4677050000 -2724231.2692820001
+-44488.2568100000 -2738757.1736989999
+-55787.9644690000 -2753283.0781149999
+-67672.1397650000 -2742263.4264890002
+-87154.3943500000 -2741762.5332330000
+-105078.0685680000 -2741011.1933490001
+-97090.3441880000 -2760546.0303230002
+-99817.8598300000 -2780581.7605530000
+-82478.6532500000 -2789096.9459000002
+-77218.4445120000 -2804123.7435730002
+-77023.6219660000 -2820152.3277560002
+-95336.9412760000 -2829669.2996149999
+-112870.9704020000 -2832674.6591500002
+-123196.5653320000 -2818649.6479890002
+-122417.2751480000 -2834177.3389170002
+-120274.2271440000 -2849204.1365890000
+-105662.5362060000 -2854713.9624020001
+-89492.2649000000 -2850706.8163560000
+-77997.7346950000 -2860724.6814710000
+-92024.9579960000 -2867737.1870519998
+-84816.5238000000 -2890277.3835600000
+-94752.4736380000 -2901797.9284419999
+-114234.7282230000 -2894284.5296060001
+-127677.4838860000 -2883765.7712349999
+-146964.9159250000 -2888774.7037930000
+-139951.3042750000 -2905805.0744880000
+-154173.3501210000 -2916824.7261140002
+-165667.8803260000 -2904302.3947210000
+-162550.7195930000 -2920330.9789040000
+-152809.5923000000 -2934355.9900650000
+-147744.2061080000 -2949883.6809930000
+-163719.6548680000 -2950384.5742489998
+-175603.8301650000 -2963908.6921540000
+-189825.8760110000 -2956896.1865730002
+-195670.5523870000 -2971422.0909899999
+-210282.2433250000 -2966413.1584319999
+-222750.8862590000 -2978301.3022220000
+-214763.1618800000 -2995247.5385030000
+-222750.8862590000 -3011386.8111520000
+-206970.2600460000 -3016228.5929470002
+-217295.8549760000 -3027122.6019839998
+-232686.8360980000 -3031964.3837790000
+-212035.6462380000 -3035192.2383090002
+-212814.9364210000 -3050928.0291410000
+-197229.1327540000 -3048910.6200600001
+-185344.9574570000 -3058190.7018329999
+-174824.5399810000 -3071102.1199520002
+-182812.2643610000 -3084820.5017030002
+-192163.7465610000 -3098942.3652710002
+-176577.9428940000 -3092486.6562120002
+-184955.3123650000 -3105801.5561469998
+-182617.4418150000 -3121537.3469790001
+-199372.1807580000 -3120326.9015310002
+-218464.7902510000 -3115888.6015519998
+-205022.0345870000 -3126782.6105900002
+-189825.8760110000 -3128800.0196710001
+-198592.8905740000 -3146149.7377680000
+-213009.7589670000 -3140904.4741580002
+-225283.5793550000 -3131220.9105679998
+-222750.8862590000 -3146149.7377680000
+-208334.0178670000 -3151395.0013790000
+-195670.5523870000 -3161078.5649680002
+-213009.7589670000 -3171569.0921900002
+-227621.4499060000 -3161078.5649680002
+-242622.7859360000 -3157850.7104389998
+-240090.0928400000 -3174393.4649040001
+-220023.3706180000 -3185690.9557579998
+-233076.4811890000 -3193357.1102660000
+-258013.7670580000 -3188111.8466550000
+-275158.1510920000 -3196181.4829790001
+-258208.5896040000 -3198198.8920600000
+-252753.5583200000 -3213127.7192600002
+-270482.4099920000 -3215952.0919740000
+-258793.0572410000 -3226442.6191960000
+-275547.7961840000 -3232969.1157640000
+-276521.9089130000 -3248275.5695210001
+-293276.6478560000 -3241868.2167850002
+-282561.4078340000 -3256818.7065010001
+-288211.2616640000 -3273549.0164200002
+-302433.3075110000 -3267141.6636850000
+-305745.2907900000 -3251479.2458879999
+-313733.0151700000 -3237596.6482950002
+-310810.6769820000 -3218018.6260489998
+-325812.0130120000 -3213747.0575589999
+-338280.6559470000 -3203780.0644160002
+-336527.2530340000 -3187761.6825779998
+-321720.7395500000 -3185269.9342919998
+-325812.0130120000 -3165691.9120459999
+-313538.1926240000 -3155368.9548610002
+-329708.4639290000 -3158928.5952699999
+-338085.8334010000 -3173167.1569030001
+-351723.4116100000 -3164268.0558819999
+-342566.7519550000 -3151809.3144530002
+-325812.0130120000 -3153233.1706160000
+-310615.8544360000 -3148249.6740450002
+-329123.9962920000 -3150029.4942490002
+-343151.2195930000 -3144334.0695949998
+-361854.1839940000 -3145401.9617180000
+-377634.8102080000 -3142910.2134320000
+-388350.0502290000 -3154657.0267800000
+-397701.5324300000 -3178150.6534750001
+-417573.4321060000 -3179930.4736790000
+-432720.8850460000 -3186308.0579260001
+-451813.4945390000 -3187438.8412219998
+-467788.9432980000 -3177261.7915590000
+-482985.1018740000 -3173492.5139070000
+-490583.1811620000 -3158792.3310610000
+-492726.2291670000 -3141453.6538590002
+-490193.5360710000 -3119214.9157079998
+-505389.6946470000 -3113560.9992289999
+-489803.8909790000 -3110922.5048719998
+-478309.3607740000 -3100368.5274439999
+-495648.5673540000 -3101122.3829750000
+-512792.9513890000 -3108660.9382799999
+-501103.5986380000 -3097353.1053220001
+-493895.1644420000 -3083783.7057719999
+-486491.9077000000 -3068329.6673960001
+-503636.2917340000 -3066068.1008040002
+-522728.9012270000 -3064183.4619780001
+-521559.9659520000 -3046467.8570099999
+-531301.0932440000 -3029506.1075729998
+-543769.7361790000 -3012167.4303710000
+-545912.7841830000 -2992944.1143419999
+-550004.0576459999 -2974474.6538439998
+-567538.0867720000 -2983897.8479749998
+-585851.4060810000 -2995959.5364640001
+-589942.6795440000 -2981259.3536189999
+-572213.8278720001 -2975982.3649050002
+-565200.2162220000 -2959397.5432330002
+-548055.8321870000 -2954120.5545190000
+-545717.9616370000 -2933389.5274290000
+-536561.3019820000 -2920197.0556450002
+-545523.1390910000 -2907758.4393910002
+-533444.1412490000 -2898335.2452590000
+-530568.0950890000 -2883304.2548420001
+-545624.1658510000 -2879383.1998239998
+-559750.8495300000 -2868110.1666489998
+-577223.3267109999 -2867129.9028940001
+-590606.5007220000 -2859287.7928590002
+-573319.9009570000 -2851445.6828239998
+-551572.2431889999 -2846054.2321750000
+-530939.8499220000 -2834781.1989989998
+-528337.5660870000 -2817626.5832969998
+-543765.3916830000 -2804883.1544900001
+-528151.6886699999 -2802432.4951040000
+-528151.6886699999 -2785768.0112790000
+-513467.3727410000 -2778416.0331210000
+-513839.1275750000 -2760771.2855420001
+-525735.2822510001 -2749498.2523670001
+-509563.9469880000 -2738225.2191909999
+-517184.9210780000 -2724501.5266300002
+-532240.9918400000 -2725971.9222610001
+-524248.2629170000 -2707837.0428050002
+-512537.9856570000 -2694113.3502429998
+-521088.3468310000 -2678429.1301730000
+-538189.0691780000 -2669606.7563829999
+-556033.3011930001 -2677448.8664190001
+-539676.0885130001 -2666175.8332429999
+-526664.6693360000 -2658333.7232080000
+-517556.6759110000 -2639708.7118739998
+-526107.0370850000 -2626965.2830670001
+-538932.5788460000 -2618142.9092779998
+-550456.9786890000 -2607360.0079790000
+-565698.9268680000 -2599517.8979440001
+-581126.7524640000 -2600988.2935759998
+-583110.5023000001 -2578346.1085480000
+-572583.8192940000 -2566324.6704099998
+-556315.3091930000 -2558811.2715739999
+-538132.8567270000 -2571333.6029679999
+-524735.2601730000 -2578346.1085480000
+-519759.0100240000 -2594875.5859869998
+-503107.7114500000 -2585859.5073839999
+-486456.4128760000 -2576342.5355250002
+-477843.6722340000 -2559312.1648300001
+-474015.7875040000 -2536771.9683220000
+-473441.6047950000 -2521244.2773940000
+-474972.7586870000 -2504714.7999539999
+-485690.8359300000 -2491691.5753049999
+-486073.6244030000 -2476664.7776330002
+-492581.0284430000 -2459634.4069380001
+-474207.1817410000 -2447112.0755440001
+-465594.4410990000 -2434589.7441509999
+-462340.7390790000 -2418060.2667109999
+-462914.9217880000 -2399026.3229930000
+-468465.3546460000 -2375484.3399729999
+-473058.8163220000 -2360457.5423010001
+-478417.8549440000 -2343427.1716060000
+-504256.0768690000 -2331405.7334679998
+-489901.5091330000 -2322389.6548649999
+-475164.1529230000 -2307863.7504480002
+-462577.4401970000 -2287577.5735909999
+-457317.2314590000 -2269044.5231289999
+-439783.2023330000 -2268042.7366169998
+-436666.0415990000 -2252014.1524330000
+-435886.7514160000 -2233481.1019710000
+-448550.2168960000 -2220457.8773220000
+-440172.8474240000 -2206933.7594170002
+-429262.7848570000 -2193409.6415120000
+-433743.7034120000 -2176880.1640720000
+-426730.0917610000 -2162354.2596560000
+-419716.4801110000 -2147327.4619840002
+-428678.3172200000 -2134805.1305900002
+-427314.5593990000 -2110762.2543150000
+-426535.2692150000 -2094733.6701310000
+-427509.3819440000 -2067184.5410650000
+-428093.8495820000 -2050655.0636260000
+-425366.3339400000 -2035628.2659539999
+-432379.9455910000 -2021102.3615369999
+-446017.5238000000 -2003571.0975860001
+-430821.3652240000 -2002569.3110750001
+-428678.3172200000 -1986039.8336360001
+-424197.3986650000 -1971013.0359630000
+-418060.4884710000 -1957238.4714309999
+-433451.4695930000 -1950225.9658500000
+-426243.0353960000 -1933696.4884110000
+-441634.0165180000 -1943714.3535259999
+-433841.1146840000 -1926683.9828300001
+-448647.6281690000 -1933696.4884110000
+-464428.2543820000 -1948222.3928270000
+-465402.3671120000 -1933195.5951550000
+-463843.7867450000 -1914662.5446929999
+-456245.7074570000 -1901138.4267879999
+-468714.3503910000 -1892122.3481840000
+-480208.8805960000 -1905646.4660890000
+-479429.5904130000 -1888616.0953939999
+-478455.4776830000 -1871585.7246989999
+-478650.3002290000 -1856558.9270270001
+-484494.9766050000 -1841031.2360990001
+-494430.9264430000 -1822498.1856370000
+-505925.4566480000 -1807972.2812200000
+-508847.7948350000 -1791442.8037810000
+-504172.0537350000 -1776416.0061079999
+-510990.8428400000 -1759886.5286689999
+-502223.8282770000 -1745861.5175079999
+-512939.0682980000 -1728330.2535570001
+-511964.9555690000 -1712802.5626300001
+-505340.9890100000 -1697775.7649570000
+-506315.1017390000 -1681747.1807740000
+-507289.2144690000 -1662713.2370559999
+-508446.9486300000 -1645056.7497910000
+-502180.9448550000 -1623518.3397939999
+-505662.0580630000 -1602480.8230530000
+-505836.1137240000 -1586953.1321250000
+-509317.2269320000 -1571425.4411970000
+-516105.3976870000 -1557400.4300360000
+-530552.0175000000 -1537865.5930620001
+-533336.9080660000 -1513321.8235309999
+-522719.5127820000 -1498295.0258589999
+-506532.3363650000 -1492284.3067900001
+-522893.5684430000 -1484770.9079539999
+-515757.2863660000 -1469744.1102819999
+-532118.5184440000 -1465236.0709800001
+-535947.7429720000 -1449708.3800520001
+-544476.4703320001 -1428670.8633109999
+-551960.8637290000 -1415146.7454059999
+-565363.1495800000 -1405629.7735470000
+-567277.7618440000 -1386094.9365729999
+-582420.6042990000 -1384091.3635499999
+-593212.0552430000 -1370066.3523899999
+-606266.2297730000 -1362052.0602980000
+-613793.7528780000 -1344395.5730330001
+-621618.1005840000 -1359923.2639609999
+-634079.0987820000 -1369440.2358200001
+-633354.6221430000 -1354413.4381480000
+-638860.6446030000 -1339386.6404760000
+-649438.0035390001 -1351908.9718690000
+-667405.0241970000 -1352409.8651250000
+-679431.3364110000 -1363429.5167510000
+-679721.1270670000 -1346900.0393119999
+-676533.4298540000 -1330370.5618720001
+-690008.6953470000 -1339386.6404760000
+-701165.6355950000 -1327365.2023380001
+-688994.4280520000 -1315844.6574560001
+-709279.7739560000 -1318349.1237339999
+-717249.0169900000 -1331372.3483839999
+-735216.0376480001 -1329869.6686160001
+-741420.6668040000 -1315969.8807699999
+-750947.3474350000 -1299440.4033299999
+-734597.5036490000 -1299440.4033299999
+-722496.0444700000 -1284413.6056580001
+-707948.5456690000 -1288420.7517039999
+-689023.9233340001 -1290424.3247270000
+-678209.8534290000 -1276399.3135660000
+-672545.3406220000 -1262374.3024060000
+-693401.0468670001 -1264377.8754280000
+-709493.4127980000 -1260871.6226379999
+-725971.9955110000 -1250853.7575240000
+-725714.5176560000 -1234825.1733400000
+-720951.1773400001 -1215290.3363659999
+-737172.2821980000 -1218295.6958999999
+-749402.4803050000 -1205272.4712510000
+-736399.8486340001 -1196757.2859040000
+-720822.4384130000 -1191247.4600899999
+-710652.0631450000 -1204771.5779949999
+-697906.9093280000 -1218796.5891559999
+-684131.8440910000 -1227812.6677590001
+-668940.6506530000 -1229816.2407819999
+-666237.1331770000 -1253358.2238020001
+-653620.7182870000 -1262374.3024060000
+-648471.1611900000 -1247347.5047330000
+-634696.0959530000 -1258868.0496149999
+-632625.0227419999 -1243541.0164699999
+-618416.8083510000 -1233878.1370890001
+-601000.2874830000 -1228080.4094600000
+-615361.2783740000 -1217451.2421410000
+-598861.4165000001 -1216968.0981719999
+-610625.2069099999 -1201990.6351310001
+-617652.9258560000 -1185080.5962139999
+-631708.3637490000 -1178799.7246160000
+-648666.5551200000 -1183631.1643070001
+-656458.1565610000 -1169136.8452349999
+-653708.1795820000 -1154159.3821950001
+-665166.4169950000 -1166237.9814210001
+-676166.3249110000 -1153193.0942569999
+-676166.3249110000 -1133384.1915249999
+-689305.1038110000 -1118406.7284850001
+-709013.2721609999 -1111159.5689490000
+-711610.4726409999 -1091833.8101870001
+-716346.5441050000 -1074440.6273010001
+-701527.2237180000 -1070092.3315790000
+-680291.2903790000 -1068642.8996720000
+-664096.9815030000 -1078788.9230219999
+-650958.2026030000 -1100530.4016300000
+-628041.7277770001 -1095698.9619390001
+-611236.3129050001 -1091350.6662170000
+-588930.9440750000 -1094732.6740009999
+-577319.9301640000 -1078305.7790530000
+-565250.5867559999 -1066710.3237960001
+-550431.2663680000 -1071541.7634860000
+-540042.4644469999 -1060429.4521979999
+-531203.6819710000 -1047613.0696300000
+-510357.6695660000 -1037937.0529810000
+-498473.4942690000 -1027821.2173940000
+-486199.6738810000 -1015066.4681760001
+-487953.0767930000 -994834.7970020000
+-464964.0163830000 -990876.4265550000
+-449378.2127160000 -998353.3485110000
+-430285.6032230000 -1001432.0810810000
+-417622.1377430000 -1012427.5545450000
+-399308.8184330000 -1004950.6325890000
+-384697.1274945000 -1000332.5337340001
+-370085.4365560000 -995714.4348789999
+-375540.4678400000 -980760.5909680000
+-380021.3863940000 -966246.5659950000
+-383528.1922200000 -949973.2652690000
+-383528.1922200000 -930181.4130330000
+-384112.6598570000 -911709.0176140000
+-380216.2089400000 -883560.6055450001
+-366919.5701860000 -892846.9764360000
+-353087.1694310000 -880338.0618260000
+-336527.2530340000 -873692.7009390000
+-322694.8522790000 -888547.0370390000
+-307888.3387940000 -897146.9158330000
+-294835.2282230000 -913564.8662580000
+-275937.4412760000 -919037.5164000000
+-252169.0906820000 -915128.4805850000
+-245350.3015780000 -901446.8552300000
+-244181.3663030000 -918646.6128190000
+-231615.3120950000 -930563.0925760000
+-215445.0407900000 -924017.9382920000
+-206872.8487730000 -937108.2468600000
+-190507.7549220000 -933426.5975750000
+-186611.3040050000 -912972.9904390000
+-185961.8955186667 -896882.8194913333
+-185312.4870323333 -880792.6485436666
+-184663.0785460000 -864702.4775960000
+-175311.5963460000 -883519.7961620000
+-174532.3061620000 -902337.1147280000
+-172584.0807040000 -918700.0004370000
+-168882.4523330000 -933835.6697180000
+-152322.5359360000 -933835.6697180000
+-142581.4086430000 -921563.5054359999
+-127969.7177050000 -912154.8461530000
+-131086.8784390000 -930563.0925760000
+-115501.0747710000 -924427.0104349999
+-112189.0914910000 -905609.6918690000
+-114916.6071330000 -887610.5175890001
+-101473.8514700000 -899882.6818710000
+-84329.4674350000 -896610.1047290000
+-100110.0936490000 -892110.3111590000
+-87836.2732610000 -879838.1468770000
+-74685.7514160000 -869305.2030530000
+-57541.3673810000 -863251.9975030000
+-49553.6430020000 -850388.9357080000
+-34357.4844260000 -846227.3568920000
+-47995.0626350000 -825797.7881600000
+-30071.3884170000 -835255.9218320000
+-18771.6807580000 -850767.2610550000
+-6303.0378240000 -859847.0693810000
+7139.7178400000 -852658.8877899999
+22141.0538700000 -862873.6721560000
+31297.7135250000 -877628.3606850000
+47662.8073760000 -874601.7579100000
+49611.0328340000 -893518.0252550000
+66365.7717770000 -886708.1690110000
+81123.5796250000 -882220.1151260000
+97683.4960220000 -884202.5846670000
+80149.4668960000 -888960.5115630000
+65537.7759570000 -896493.8958170000
+68460.1141450000 -914732.6155880000
+84435.5629050000 -917508.0729450000
+100605.8342100000 -907595.7252430000
+120282.9113400000 -911957.1582320000
+129049.9259030000 -927420.4206470000
+153402.7441340000 -925437.9511060000
+169767.8379850000 -920680.0242090001
+180677.9005530000 -910371.1825990001
+192367.2533040000 -899269.3531730000
+201134.2678670000 -912353.6521400000
+182626.1260110000 -920680.0242090001
+169183.3703480000 -936539.7805320000
+163338.6939720000 -950417.0673150000
+182820.9485570000 -955174.9942120000
+187301.8671120000 -970241.7627180000
+200744.6227750000 -980550.6043280000
+198796.3973170000 -995617.3728350000
+211118.9233410000 -983385.4589040000
+211508.5684330000 -999969.0227530000
+225146.1466420000 -1008484.9068910000
+240731.9503100000 -1009829.5201760000
+238588.9023060000 -1032239.7415930000
+253785.0608820000 -1029550.5150230000
+273072.4929210000 -1036273.5814480000
+281255.0398460000 -1056890.9851510001
+286320.4260380000 -1071681.7312860000
+305413.0355310000 -1086024.2729930000
+316907.5657360000 -1095884.7704169999
+326453.8704830000 -1081990.4331380001
+341260.3839670000 -1076611.9799980000
+355677.2523600000 -1064958.6648609999
+372319.0245690000 -1056006.2810410000
+387981.0391590000 -1068027.7191780000
+383779.0352450000 -1084056.3033620000
+366207.0188750000 -1085558.9831290001
+366971.0195860000 -1102088.4605690001
+352646.0062410000 -1113108.1121950001
+362960.0158500000 -1126131.3368440000
+380914.0325760000 -1133143.8424249999
+394093.0448530000 -1123626.8705660000
+409182.0589100000 -1113108.1121950001
+409182.0589100000 -1131641.1626569999
+404407.0544620000 -1158689.3984670001
+386262.0375580000 -1153179.5726540000
+374229.0263480000 -1166202.7973030000
+364488.0172730000 -1182732.2747430000
+377285.0291950000 -1191748.3533460000
+388172.0393370000 -1202768.0049719999
+392947.0437860000 -1219798.3756680000
+380341.0320420000 -1228814.4542710001
+383588.0350670000 -1251354.6507790000
+389509.0405830000 -1265880.5551960000
+389509.0405830000 -1282910.9258910001
+399632.0500130000 -1295934.1505400001
+408609.0583760000 -1313966.3077469999
+410137.0598000000 -1333000.2514650000
+413526.9681570000 -1350406.2921020000
+416526.2265730000 -1367436.6627970000
+415776.4119690000 -1385468.8200040001
+419900.3922910000 -1406005.4434890000
+430960.1577010000 -1421032.2411610000
+431897.4259560000 -1436059.0388330000
+448018.4399430000 -1436559.9320890000
+448580.8008960000 -1456094.7690630001
+438458.3037410000 -1469117.9937120001
+432459.7869090000 -1486148.3644069999
+449705.5228020000 -1494663.5497550000
+448393.3472450000 -1513196.6002170001
+463202.1856750000 -1521210.8923090000
+447830.9862920000 -1525218.0383550001
+458140.9370980000 -1539243.0495160001
+462639.8247220000 -1554269.8471880001
+473887.0437820000 -1564287.7123030000
+458703.2980510000 -1557275.2067219999
+463014.7320240000 -1574305.5774170000
+478948.2923600000 -1567293.0718370001
+484009.5409370000 -1584824.3357879999
+475011.7656880000 -1597346.6671819999
+484009.5409370000 -1614877.9311319999
+488508.4285610000 -1630906.5153160000
+470512.8780640000 -1618384.1839230000
+461702.5564670000 -1631407.4085720000
+474074.4974330000 -1641926.1669419999
+488883.3358630000 -1648938.6725230000
+495661.8324810000 -1662963.6836830000
+478923.6439970000 -1667471.7229849999
+463095.1396700000 -1663965.4701950001
+449449.8773190000 -1652945.8185690001
+455817.6664170000 -1670477.0825199999
+441626.5935720000 -1662963.6836830000
+433439.4361610000 -1648437.7792670000
+409690.0603430000 -1652315.3206390000
+394504.9542530000 -1655951.1781029999
+411243.1427370000 -1662462.7904280000
+426707.7734010000 -1676487.8015880000
+437260.1096190000 -1691514.5992610001
+455999.6032480000 -1702534.2508870000
+441626.5935720000 -1710047.6497229999
+428891.0153770000 -1692516.3857720001
+435076.8676430000 -1708544.9699560001
+419976.1106410000 -1704036.9306540000
+408696.0270980000 -1692516.3857720001
+395050.7647470000 -1701532.4643750000
+388501.0388190000 -1718562.8350710000
+378494.5130940000 -1731085.1664640000
+376129.3342870000 -1713553.9025129999
+361938.2614420000 -1720566.4080940001
+373582.2186480000 -1732086.9529760000
+358481.4616460000 -1738598.5652999999
+369397.6715270000 -1754627.1494839999
+352659.4830430000 -1751621.7899490001
+335805.3526830000 -1754501.9261700001
+338338.0457790000 -1777042.1226780000
+354897.9621760000 -1775539.4429110000
+349053.2858010000 -1792569.8136060000
+330739.9664910000 -1791568.0270950000
+344182.7221550000 -1806093.9315110000
+341455.2065130000 -1823625.1954620001
+351780.8014430000 -1809600.1843010001
+344377.5447010000 -1826129.6617409999
+356066.8974510000 -1836147.5268550001
+345546.4799760000 -1853678.7908059999
+363080.5091020000 -1853678.7908059999
+371847.5236650000 -1841156.4594129999
+370288.9432980000 -1859689.5098750000
+386848.8596950000 -1868204.6952229999
+404772.5339130000 -1856183.2570849999
+415098.1288430000 -1867703.8019669999
+428735.7070520000 -1860691.2963870000
+421137.6277640000 -1874215.4142920000
+413929.1935680000 -1888741.3187080000
+418799.7572140000 -1903768.1163800000
+428735.7070520000 -1916791.3410300000
+415098.1288430000 -1935825.2847480001
+398148.5673540000 -1926809.2061439999
+380030.0705910000 -1929814.5656790000
+364444.2669230000 -1929814.5656790000
+348468.8181630000 -1924304.7398659999
+333077.8370420000 -1919796.7005640001
+348079.1730720000 -1935825.2847480001
+332883.0144960000 -1939832.4307939999
+318855.7911950000 -1951853.8689309999
+331908.9017660000 -1964376.2003250001
+349442.9308930000 -1959868.1610230000
+358209.9454560000 -1943338.6835840000
+358404.7680020000 -1958365.4812560000
+345936.1250670000 -1971388.7059050000
+345351.6574300000 -1987918.1833450000
+330739.9664910000 -1991925.3293910001
+337753.5781420000 -2005449.4472960001
+353534.2043550000 -2007453.0203180001
+365223.5571060000 -1997435.1552040000
+385679.9244200000 -1986415.5035770000
+399317.5026290000 -1977399.4249740001
+399122.6800840000 -1993928.9024139999
+381393.8284120000 -1998436.9417150000
+399512.3251750000 -1999939.6214820000
+395615.8742580000 -2018973.5652000001
+387822.9724240000 -2032998.5763610001
+383975.2271440000 -2048275.8206610000
+398976.5631740000 -2062801.7250780000
+397223.1602620000 -2078830.3092610000
+379299.4860440000 -2080833.8822840001
+362739.5696470000 -2085842.8148419999
+374428.9223980000 -2097363.3597240001
+390599.1937030000 -2089849.9608880000
+379299.4860440000 -2103374.0787930000
+364492.9725590000 -2111388.3708839999
+355531.1354500000 -2097363.3597240001
+343257.3150620000 -2111889.2641400001
+351829.5070790000 -2127917.8483239999
+365661.9078340000 -2119402.6629760000
+357284.5383630000 -2133928.5673929998
+374039.2773060000 -2136933.9269269998
+385533.8075110000 -2147452.6852980000
+375792.6802180000 -2160976.8032030002
+390988.8387940000 -2162479.4829699998
+378520.1958600000 -2174000.0278520002
+394105.9995280000 -2164983.9492489998
+409107.3355580000 -2161978.5897140000
+421186.3334010000 -2149957.1515759998
+437941.0723440000 -2150958.9380879998
+450409.7152780000 -2171495.5615730002
+454695.8112860000 -2156969.6571570002
+471645.3727750000 -2159975.0166910002
+459566.3749330000 -2147452.6852980000
+465605.8738540000 -2132425.8876260002
+477490.0491500000 -2120404.4494880000
+485867.4186220000 -2133427.6741370000
+493264.3211700000 -2119402.6629760000
+495978.8328800000 -2102873.1855370002
+509098.9728100000 -2110386.5843730001
+523877.9810080000 -2104876.7585600000
+541371.5009160000 -2109885.6911169998
+529608.6168400000 -2096862.4664680001
+544990.8498620000 -2099366.9327469999
+561579.5325330000 -2107381.2248390000
+576509.3469370001 -2104876.7585600000
+596868.1847600000 -2102873.1855370002
+611948.8053700000 -2108883.9046060001
+597622.2157910001 -2119402.6629760000
+580430.3082950000 -2125413.3820449999
+599130.2778520000 -2126916.0618119999
+583144.8200050000 -2134930.3539040000
+568818.2304260000 -2148454.4718089998
+582843.2075930000 -2161477.6964580002
+566706.9435400000 -2162980.3762260000
+552983.5787850000 -2170994.6683180002
+543331.9815950000 -2188025.0390130002
+547554.5553660000 -2207058.9827310001
+538053.7643820000 -2193033.9715700001
+525084.4306570000 -2209062.5557539999
+516036.0582910000 -2221083.9938920001
+529910.2292520000 -2214572.3815669999
+541220.6947100000 -2225091.1399369999
+526140.0741000000 -2223087.5669140001
+526743.2989240000 -2239617.0443540001
+521615.8879170000 -2256647.4150490002
+506233.6548950000 -2255144.7352820002
+508194.1355740000 -2275681.3587670000
+489343.3598110000 -2268167.9599310001
+488740.1349870000 -2283695.6508590002
+475770.8012620000 -2293212.6227179999
+460539.3744460000 -2281692.0778359999
+449228.9089890000 -2296217.9822519999
+448022.4593400000 -2314250.1394590000
+440180.5366230000 -2298722.4485309999
+441085.3738600000 -2277184.0385340001
+426000.8914760000 -2286450.5637659999
+431125.9775380000 -2301477.3614380001
+426190.7094780000 -2317505.9456210001
+424672.1654600000 -2332532.7432940002
+421445.2594210000 -2313498.7995750001
+409296.9072740000 -2298472.0019029998
+411764.5413040000 -2318006.8388769999
+403222.7312010000 -2304983.6142279999
+411005.2692950000 -2289956.8165560002
+393542.0130840000 -2293463.0693460000
+378356.5729000000 -2295967.5356250000
+388416.9270220000 -2308489.8670180002
+405880.1832330000 -2317005.0523660001
+417838.7173770000 -2328525.5972480001
+402463.4591910000 -2342049.7151529999
+385000.2029800000 -2341047.9286409998
+375699.1208680000 -2327022.9174799998
+384240.9309710000 -2314500.5860870001
+368865.6727850000 -2321012.1984120002
+373421.3048400000 -2337541.6758510000
+363360.9507190000 -2353069.3667790000
+351402.4165740000 -2336539.8893400002
+340392.9724410000 -2324518.4512020000
+329573.3463100000 -2313999.6928309998
+335267.8863790000 -2329527.3837589999
+336216.9763910000 -2347058.6477100002
+337166.0664020000 -2362085.4453819999
+318374.0841750000 -2366593.4846839998
+303758.0979980000 -2362586.3386380002
+290314.2882280000 -2354697.2698599999
+292067.6911410000 -2339670.4721880001
+275702.5972900000 -2347684.7642799998
+277880.2580262116 -2321542.8592617917
+269420.4169677348 -2331176.2138948478
+260960.5759092579 -2323294.3782859840
+252500.7348507810 -2343436.8470641924
+254834.4841082919 -2357157.0794203631
+258918.5453089359 -2372336.9109633607
+266740.7601810000 -2359706.2024170002
+271754.1662252456 -2369125.7927523423
+266545.9376350000 -2379241.0393909998
+291483.2235030000 -2386253.5449720002
+275897.4198350000 -2396271.4100859999
+288755.7078610000 -2404786.5954339998
+276871.5325650000 -2415806.2470600000
+263818.4219930000 -2423820.5391520001
+259532.3259840000 -2445358.9491490000
+250570.4888750000 -2432836.6177559998
+248817.0859630000 -2452371.4547290001
+247258.5055960000 -2470403.6119360002
+229919.2990160000 -2474911.6512380000
+226022.8480990000 -2490439.3421660000
+239660.4263080000 -2499956.3140250002
+227776.2510110000 -2510975.9656509999
+220178.1717230000 -2523999.1902999999
+205761.3033310000 -2533015.2689029998
+210631.8669770000 -2560063.5047129998
+203228.6102350000 -2545036.7070410000
+194266.7731260000 -2558560.8249459998
+199624.3931360000 -2581101.0214539999
+185791.9923810000 -2568077.7968049999
+189493.6207520000 -2583104.5944770002
+186571.2825650000 -2601136.7516839998
+185207.5247440000 -2584106.3809890002
+169816.5436220000 -2595126.0326149999
+156568.6105040000 -2586610.8472679998
+134748.4853690000 -2581101.0214539999
+149749.8214000000 -2579598.3416869999
+136112.2431900000 -2592120.6730809999
+146437.8381200000 -2612657.2965660002
+130462.3893610000 -2620671.5886579999
+137281.1784650000 -2635197.4930739999
+125007.3580770000 -2621172.4819140001
+106888.8613130000 -2617666.2291230001
+91887.5252830000 -2609151.0437759999
+109031.9093180000 -2607648.3640089999
+92277.1703750000 -2603641.2179629998
+97537.3791130000 -2587111.7405229998
+88380.7194580000 -2573587.6226180000
+74743.1412490000 -2567076.0102940002
+61105.5630390000 -2577093.8754090001
+66950.2394150000 -2594124.2461040001
+57598.7572140000 -2581101.0214539999
+53117.8386600000 -2598131.3921500002
+41818.1310010000 -2586610.8472679998
+30810.6571600000 -2599133.1786610000
+44253.4128240000 -2608650.1505200001
+47662.8073760000 -2621047.2585999998
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/Greenland.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/Greenland.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/Greenland.par	(revision 21239)
@@ -0,0 +1,99 @@
+%Name and Coordinate system
+md.miscellaneous.name='SeaRISEgreenland';
+md.mesh.epsg=3413;
+
+disp('   Loading SeaRISE data from NetCDF');
+ncdata='../Data/Greenland_5km_dev1.2.nc';
+x1    = ncread(ncdata,'x1');
+y1    = ncread(ncdata,'y1');
+usrf  = ncread(ncdata,'usrf')';
+topg  = ncread(ncdata,'topg')';
+velx  = ncread(ncdata,'surfvelx')';
+vely  = ncread(ncdata,'surfvely')';
+temp  = ncread(ncdata,'airtemp2m')';
+smb   = ncread(ncdata,'smb')';
+gflux = ncread(ncdata,'bheatflx')';
+
+disp('   Interpolating surface and bedrock');
+md.geometry.base     = InterpFromGridToMesh(x1,y1,topg,md.mesh.x,md.mesh.y,0);
+md.geometry.surface = InterpFromGridToMesh(x1,y1,usrf,md.mesh.x,md.mesh.y,0);
+
+disp('   Constructing thickness');
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+%Set min thickness to 1 meter
+pos0=find(md.geometry.thickness<=0);
+md.geometry.thickness(pos0)=1;
+md.geometry.surface=md.geometry.thickness+md.geometry.base;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%Reading IceBridge data for Jakobshavn
+disp('      reading IceBridge Jakobshavn bedrock');
+fid  = fopen('../Data/Jakobshavn_2008_2011_Composite_XYZGrid.txt');
+titles = fgets(fid); 
+data = fscanf(fid,'%g,%g,%g,%g,%g',[5 266400])';
+fclose(fid);
+
+[xi,yi]= ll2xy(md.mesh.lat,md.mesh.long,+1,45,70);
+bed  = flipud(reshape(data(:,5),[360 740])); bed(find(bed==-9999))=NaN;
+bedy = flipud(reshape(data(:,1),[360 740]));
+bedx = flipud(reshape(data(:,2),[360 740]));
+
+%Insert Icebridge bed and recalculate thickness
+bed_jks=InterpFromGridToMesh(bedx(1,:)',bedy(:,1),bed,xi,yi,NaN);
+in=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,...
+	   'Jak_grounded.exp','node',1);
+bed_jks(~in)=NaN;
+pos=find(~isnan(bed_jks));
+md.geometry.base(pos)=bed_jks(pos);
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+disp('   Interpolating velocities ');
+md.inversion.vx_obs  = InterpFromGridToMesh(x1,y1,velx,md.mesh.x,md.mesh.y,0);
+md.inversion.vy_obs  = InterpFromGridToMesh(x1,y1,vely,md.mesh.x,md.mesh.y,0);
+md.inversion.vel_obs = sqrt(md.inversion.vx_obs.^2+md.inversion.vy_obs.^2);
+md.initialization.vx = md.inversion.vx_obs;
+md.initialization.vy = md.inversion.vy_obs;
+md.initialization.vz = zeros(md.mesh.numberofvertices,1);
+md.initialization.vel= md.inversion.vel_obs;
+
+disp('   Interpolating temperatures');
+md.initialization.temperature=InterpFromGridToMesh(x1,y1,temp,md.mesh.x,md.mesh.y,0)+273.15;
+
+disp('   Interpolating surface mass balance');
+md.smb.mass_balance=InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0);
+md.smb.mass_balance=md.smb.mass_balance*md.materials.rho_water/md.materials.rho_ice;
+
+disp('   Construct basal friction parameters');
+md.friction.coefficient=30*ones(md.mesh.numberofvertices,1);
+pos=find(md.mask.groundedice_levelset<0);
+md.friction.coefficient(pos)=0; %no friction applied on floating ice
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('   Construct ice rheological properties');
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+
+disp('   Set other boundary conditions');
+md.mask.ice_levelset(md.mesh.vertexonboundary==1)=0;
+md.basalforcings.groundedice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.thermal.spctemperature     = [md.initialization.temperature;1]; %impose observed temperature on surface
+md.masstransport.spcthickness    = NaN*ones(md.mesh.numberofvertices,1);
+
+disp('   Set geothermal heat flux');
+md.basalforcings.geothermalflux=InterpFromGridToMesh(x1,y1,gflux,md.mesh.x,md.mesh.y,0);
+
+disp('   Set Pressure');
+md.initialization.pressure=md.materials.rho_ice*md.constants.g*md.geometry.thickness;
+
+disp('   Single point constraints');
+%Initialize single point constraint arrays
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.spcvx = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz = NaN*ones(md.mesh.numberofvertices,1);
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/Greenland_noOIB.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/Greenland_noOIB.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/Greenland_noOIB.par	(revision 21239)
@@ -0,0 +1,82 @@
+%Name and Coordinate system
+md.miscellaneous.name='SeaRISEgreenland';
+md.mesh.epsg=3413;
+
+disp('   Loading SeaRISE data from NetCDF');
+ncdata='../Data/Greenland_5km_dev1.2.nc';
+x1    = ncread(ncdata,'x1');
+y1    = ncread(ncdata,'y1');
+usrf  = ncread(ncdata,'usrf')';
+topg  = ncread(ncdata,'topg')';
+velx  = ncread(ncdata,'surfvelx')';
+vely  = ncread(ncdata,'surfvely')';
+temp  = ncread(ncdata,'airtemp2m')';
+smb   = ncread(ncdata,'smb')';
+gflux = ncread(ncdata,'bheatflx')';
+
+disp('   Interpolating surface and bedrock');
+md.geometry.base     = InterpFromGridToMesh(x1,y1,topg,md.mesh.x,md.mesh.y,0);
+md.geometry.surface = InterpFromGridToMesh(x1,y1,usrf,md.mesh.x,md.mesh.y,0);
+
+disp('   Constructing thickness');
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+%Set min thickness to 1 meter
+pos0=find(md.geometry.thickness<=0);
+md.geometry.thickness(pos0)=1;
+md.geometry.surface=md.geometry.thickness+md.geometry.base;
+
+disp('   Interpolating velocities ');
+md.inversion.vx_obs  = InterpFromGridToMesh(x1,y1,velx,md.mesh.x,md.mesh.y,0);
+md.inversion.vy_obs  = InterpFromGridToMesh(x1,y1,vely,md.mesh.x,md.mesh.y,0);
+md.inversion.vel_obs = sqrt(md.inversion.vx_obs.^2+md.inversion.vy_obs.^2);
+md.initialization.vx = md.inversion.vx_obs;
+md.initialization.vy = md.inversion.vy_obs;
+md.initialization.vz = zeros(md.mesh.numberofvertices,1);
+md.initialization.vel= md.inversion.vel_obs;
+
+disp('   Interpolating temperatures');
+md.initialization.temperature=InterpFromGridToMesh(x1,y1,temp,md.mesh.x,md.mesh.y,0)+273.15;
+
+disp('   Interpolating surface mass balance');
+md.smb.mass_balance=InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0);
+md.smb.mass_balance=md.smb.mass_balance*md.materials.rho_water/md.materials.rho_ice;
+
+disp('   Construct basal friction parameters');
+md.friction.coefficient=30*ones(md.mesh.numberofvertices,1);
+pos=find(md.mask.groundedice_levelset<0);
+md.friction.coefficient(pos)=0; %no friction applied on floating ice
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('   Construct ice rheological properties');
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+
+disp('   Set other boundary conditions');
+md.mask.ice_levelset(md.mesh.vertexonboundary==1)=0;
+md.basalforcings.groundedice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.thermal.spctemperature     = [md.initialization.temperature;1]; %impose observed temperature on surface
+md.masstransport.spcthickness    = NaN*ones(md.mesh.numberofvertices,1);
+
+disp('   Set geothermal heat flux');
+md.basalforcings.geothermalflux=InterpFromGridToMesh(x1,y1,gflux,md.mesh.x,md.mesh.y,0);
+
+disp('   Set Pressure');
+md.initialization.pressure=md.materials.rho_ice*md.constants.g*md.geometry.thickness;
+
+disp('   Single point constraint for continental model');
+%Set at least one vertex to velocity 0 so as to not get a singular problem (point on the wet peninsula)
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.spcvx = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz = NaN*ones(md.mesh.numberofvertices,1);
+location = 1.0e+06 *[.32011 -2.2039];
+[dist pos]=min(sqrt((md.mesh.x - location(1)).^2 + (md.mesh.y - location(2)).^2));
+md.stressbalance.spcvx(pos) = 0;
+md.stressbalance.spcvy(pos) = 0;
+md.stressbalance.spcvz(pos) = 0;
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/Greenland_solution.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/Greenland_solution.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/Greenland_solution.par	(revision 21239)
@@ -0,0 +1,103 @@
+%Name and Coordinate system
+md.miscellaneous.name='SeaRISEgreenland';
+md.mesh.epsg=3413;
+
+disp('   Loading SeaRISE data from NetCDF');
+ncdata='../Data/Greenland_5km_dev1.2.nc';
+x1    = ncread(ncdata,'x1');
+y1    = ncread(ncdata,'y1');
+usrf  = ncread(ncdata,'usrf')';
+topg  = ncread(ncdata,'topg')';
+velx  = ncread(ncdata,'surfvelx')';
+vely  = ncread(ncdata,'surfvely')';
+temp  = ncread(ncdata,'airtemp2m')';
+smb   = ncread(ncdata,'smb')';
+gflux = ncread(ncdata,'bheatflx')';
+
+disp('   Interpolating surface and bedrock');
+md.geometry.base     = InterpFromGridToMesh(x1,y1,topg,md.mesh.x,md.mesh.y,0);
+md.geometry.surface = InterpFromGridToMesh(x1,y1,usrf,md.mesh.x,md.mesh.y,0);
+
+disp('   Constructing thickness');
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+%Set min thickness to 1 meter
+pos0=find(md.geometry.thickness<=0);
+md.geometry.thickness(pos0)=1;
+md.geometry.surface=md.geometry.thickness+md.geometry.base;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%Reading IceBridge data for Jakobshavn
+disp('      reading IceBridge Jakobshavn bedrock');
+fid  = fopen('../Data/Jakobshavn_2008_2011_Composite_XYZGrid.txt');
+titles = fgets(fid); 
+data = fscanf(fid,'%g,%g,%g,%g,%g',[5 266400])';
+fclose(fid);
+
+[xi,yi]= ll2xy(md.mesh.lat,md.mesh.long,+1,45,70);
+bed  = flipud(reshape(data(:,5),[360 740])); bed(find(bed==-9999))=NaN;
+surf  = flipud(reshape(data(:,4),[360 740])); surf(find(surf==-9999))=NaN;
+bedy = flipud(reshape(data(:,1),[360 740]));
+bedx = flipud(reshape(data(:,2),[360 740]));
+
+%Insert Icebridge bed and recalculate thickness
+bed_jks=InterpFromGridToMesh(bedx(1,:)',bedy(:,1),bed,xi,yi,NaN);
+surf_jks=InterpFromGridToMesh(bedx(1,:)',bedy(:,1),surf,xi,yi,NaN);
+in=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,...
+	   'Jak_grounded.exp','node',1);
+bed_jks(~in)=NaN;
+surf_jks(~in)=NaN;
+pos=find(~isnan(bed_jks));
+md.geometry.base(pos)=bed_jks(pos);
+md.geometry.surface(pos)=surf_jks(pos);
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+disp('   Interpolating velocities ');
+md.inversion.vx_obs  = InterpFromGridToMesh(x1,y1,velx,md.mesh.x,md.mesh.y,0);
+md.inversion.vy_obs  = InterpFromGridToMesh(x1,y1,vely,md.mesh.x,md.mesh.y,0);
+md.inversion.vel_obs = sqrt(md.inversion.vx_obs.^2+md.inversion.vy_obs.^2);
+md.initialization.vx = md.inversion.vx_obs;
+md.initialization.vy = md.inversion.vy_obs;
+md.initialization.vz = zeros(md.mesh.numberofvertices,1);
+md.initialization.vel= md.inversion.vel_obs;
+
+disp('   Interpolating temperatures');
+md.initialization.temperature=InterpFromGridToMesh(x1,y1,temp,md.mesh.x,md.mesh.y,0)+273.15;
+
+disp('   Interpolating surface mass balance');
+md.smb.mass_balance=InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0);
+md.smb.mass_balance=md.smb.mass_balance*md.materials.rho_water/md.materials.rho_ice;
+
+disp('   Construct basal friction parameters');
+md.friction.coefficient=30*ones(md.mesh.numberofvertices,1);
+pos=find(md.mask.groundedice_levelset<0);
+md.friction.coefficient(pos)=0; %no friction applied on floating ice
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('   Construct ice rheological properties');
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+
+disp('   Set other boundary conditions');
+md.mask.ice_levelset(md.mesh.vertexonboundary==1)=0;
+md.basalforcings.groundedice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.thermal.spctemperature     = [md.initialization.temperature;1]; %impose observed temperature on surface
+md.masstransport.spcthickness    = NaN*ones(md.mesh.numberofvertices,1);
+
+disp('   Set geothermal heat flux');
+md.basalforcings.geothermalflux=InterpFromGridToMesh(x1,y1,gflux,md.mesh.x,md.mesh.y,0);
+
+disp('   Set Pressure');
+md.initialization.pressure=md.materials.rho_ice*md.constants.g*md.geometry.thickness;
+
+disp('   Single point constraints');
+%Initialize single point constraint arrays
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.spcvx = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz = NaN*ones(md.mesh.numberofvertices,1);
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/Jak_grounded.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/Jak_grounded.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/Jak_grounded.exp	(revision 21239)
@@ -0,0 +1,19 @@
+## Name:Jak_grouded
+## Icon:0
+# Points Count Value
+13 1.000000
+# X pos Y pos
+-414397.6663804040 -2243466.6708395295
+-421486.9037621063 -2215731.3059818177
+-342860.8164377716 -2178965.8223332223
+-275835.2993744044 -2209281.2211311869
+-226210.6377024883 -2262816.9253914217
+-228144.0660793162 -2295067.3496445753
+-333193.6745536321 -2328607.7908678548
+-379595.9555975018 -2325382.7484425395
+-422775.8560133249 -2285392.2223686292
+-427287.1888925899 -2265396.9593316740
+-411819.7618779668 -2254431.8150856020
+-413108.7141291854 -2243466.6708395295
+-414397.6663804040 -2243466.6708395295
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/Jak_outline.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/Jak_outline.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/Jak_outline.exp	(revision 21239)
@@ -0,0 +1,17 @@
+## Name:Jak
+## Icon:0
+# Points Count Value
+11 1.000000
+# X pos Y pos
+-421561.7247949215 -2216716.3488182197
+-386019.6416099078 -2203459.4896082953
+-351446.8879663036 -2185999.2360147359
+-289086.6874689616 -2214129.6445821370
+-255160.1535196303 -2282353.9688088228
+-340138.0433165266 -2317597.8140254519
+-383306.1449952667 -2302506.6581698526
+-416391.9672407377 -2279120.5885137189
+-448056.7322601135 -2246463.4475331730
+-429126.8716234095 -2231167.6696134652
+-421561.7247949215 -2216716.3488182197
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/data_gaps.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/data_gaps.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/data_gaps.exp	(revision 21239)
@@ -0,0 +1,70 @@
+## Name:data_gaps
+## Icon:0
+# Points Count Value
+13 1.000000
+# X pos Y pos
+-183076.0390091268 -1794119.5324780210
+-233886.6983670916 -1838953.5447257366
+-239864.4229974404 -2006333.8571172084
+-299641.6693009282 -2081057.2108634012
+-269753.0461491842 -2116924.4206615738
+-257797.5968884868 -2185669.9061080711
+-278719.6330947075 -2248437.5232548732
+-254808.7345733123 -2266371.1281539593
+-224920.1114215683 -2167736.3012089850
+-198020.3505849990 -2093012.9474627920
+-123298.7927056390 -1967477.7131691882
+-180087.1766939524 -1797108.4666278686
+-183076.0390091268 -1794119.5324780210
+
+## Name:data_gaps
+## Icon:0
+# Points Count Value
+12 1.000000
+# X pos Y pos
+-90421.3072387208 -1824008.8739764981
+-117321.0680752902 -1946555.1741202541
+-156176.2781725575 -2075079.3425637058
+-177098.3143787782 -2203603.5110071572
+-174109.4520636038 -2314194.0745515227
+-72488.1333476745 -2293271.5355025884
+-93410.1695538952 -2203603.5110071572
+-30644.0609352330 -2206592.4451570050
+-6733.1624138379 -2081057.2108634012
+44077.4969441269 -1967477.7131691882
+-93410.1695538952 -1824008.8739764981
+-90421.3072387208 -1824008.8739764981
+
+## Name:data_gaps
+## Icon:0
+# Points Count Value
+15 1.000000
+# X pos Y pos
+-87432.4449235464 -2365005.9550989335
+-287686.2200402305 -2639987.8968849229
+-284697.3577250564 -2879102.6288727401
+-470006.8212658686 -2983715.3241174100
+-538750.6545148797 -3157073.5048085772
+-356430.0532892416 -3267664.0683529424
+-189053.7636394757 -3270653.0025027902
+-272741.9084643587 -3243752.5951541606
+-218942.3867912197 -3076372.2827626891
+-236875.5606822660 -3019582.5339155826
+-117321.0680752902 -2834268.6166250245
+20166.5984227317 -2669877.2383834003
+-12710.8870441865 -2469618.6503436035
+-87432.4449235464 -2367994.8892487814
+-87432.4449235464 -2365005.9550989335
+
+## Name:data_gaps
+## Icon:0
+# Points Count Value
+6 1.000000
+# X pos Y pos
+-186064.9013243013 -1555004.8004902040
+-177098.3143787782 -1695484.7055330465
+-81454.7202931975 -1698473.6396828941
+-36621.7855655816 -1513159.7223923360
+-186064.9013243013 -1552015.8663403564
+-186064.9013243013 -1555004.8004902040
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/runme.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/runme.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/IceBridge/runme.m	(revision 21239)
@@ -0,0 +1,157 @@
+clear all;
+close all;
+steps=[1];
+
+%Location of SeaRISE dataset
+ncdata='../Data/Greenland_5km_dev1.2.nc';
+
+if any(steps==1)
+	disp('   Step 1: Mesh creation');
+
+	%Generate initial uniform mesh (resolution = 20000 m)
+	md=triangle(model,'./DomainOutline.exp',20000);
+
+	% Get velocities (Note: You can use ncdisp('file') to see an ncdump)
+	x1   = ncread(ncdata,'x1');
+	y1   = ncread(ncdata,'y1');
+	velx = ncread(ncdata,'surfvelx');
+	vely = ncread(ncdata,'surfvely');
+	vx   = InterpFromGridToMesh(x1,y1,velx',md.mesh.x,md.mesh.y,0);
+	vy   = InterpFromGridToMesh(x1,y1,vely',md.mesh.x,md.mesh.y,0);
+	vel  = sqrt(vx.^2+vy.^2);
+
+	%Mesh greenland without refinement in Jak basin
+	md=bamg(md,'hmax',400000,'hmin',5000,'gradation',1.7,'field',vel,'err',8);
+	return;
+	
+	%Refine mesh in the region of Jakobshavn (resolution = 3000 m)
+	hmaxVertices=NaN*ones(md.mesh.numberofvertices,1);
+	in=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,...
+		'Jak_outline.exp','node',1);
+	hmaxVertices(find(in))=3000;
+	md=bamg(md,'hmax',400000,'hmin',5000,'gradation',1.7,'field',vel,...
+		'err',8,'hmaxVertices',hmaxVertices);
+
+	%convert x,y coordinates (Polar stereo) to lat/lon
+	[md.mesh.lat,md.mesh.long]=xy2ll(md.mesh.x,md.mesh.y,+1,39,71);
+
+	save ./Models/Greenland.Mesh_generation md;
+end
+
+if any(steps==2)
+	disp('   Step 2: Parameterization');
+	md = loadmodel('./Models/Greenland.Mesh_generation');
+
+	md = setmask(md,'','');
+	md = parameterize(md,'Greenland.par');
+	md = setflowequation(md,'SSA','all');
+
+	save ./Models/Greenland.Parameterization2 md; 
+end
+
+if any(steps==3)
+	disp('   Step 3: Control method friction');
+	md = loadmodel('./Models/Greenland.Parameterization2');
+
+	%Control general
+	md.inversion.iscontrol=1;
+	md.inversion.nsteps=30;
+	md.inversion.step_threshold=0.99*ones(md.inversion.nsteps,1);
+	md.inversion.maxiter_per_step=5*ones(md.inversion.nsteps,1);
+	md.verbose=verbose('solution',true,'control',true);
+
+	%Cost functions
+	md.inversion.cost_functions=[101 103 501];
+	md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,3);
+	md.inversion.cost_functions_coefficients(:,1)=350;
+	md.inversion.cost_functions_coefficients(:,2)=0.6;
+	md.inversion.cost_functions_coefficients(:,3)=2e-6;
+
+	%Controls
+	md.inversion.control_parameters={'FrictionCoefficient'};
+	md.inversion.gradient_scaling(1:md.inversion.nsteps)=50;
+	md.inversion.min_parameters=1*ones(md.mesh.numberofvertices,1);
+	md.inversion.max_parameters=200*ones(md.mesh.numberofvertices,1);
+	in=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,...
+		'data_gaps.exp','node',1);
+	md.inversion.cost_functions_coefficients(find(in),1)=0.0;
+	md.inversion.cost_functions_coefficients(find(in),2)=0.0;
+
+	%Additional parameters
+	md.stressbalance.restol=0.01;
+	md.stressbalance.reltol=0.1;
+	md.stressbalance.abstol=NaN;
+
+	%Go solve
+	md.cluster=generic('name',oshostname,'np',2);
+
+	md.verbose=verbose('solution',true,'control',true);
+	md=solve(md,'Stressbalance');
+
+	%Update model friction fields accordingly
+	md.friction.coefficient=md.results.StressbalanceSolution.FrictionCoefficient;
+
+	save ./Models/Greenland.Control_drag md; 
+end
+
+if any(steps==4)
+	disp('   Step 4: Transient run');
+	md = loadmodel('./Models/Greenland.Control_drag');
+
+	%Set surface mass balance
+	x1  = ncread(ncdata,'x1');
+	y1  = ncread(ncdata,'y1');
+	smb = ncread(ncdata,'smb');
+	smb = InterpFromGridToMesh(x1,y1,smb',md.mesh.x,md.mesh.y,0)*1000/md.materials.rho_ice;
+	smb = [smb smb smb-1.0];
+	md.smb.mass_balance = [smb;1 10 20];
+
+	%Set transient options, run for 20 years, saving every year
+	md.timestepping.time_step=0.2; %This must be reduced for finer resolutions
+	md.timestepping.final_time=20;
+	md.settings.output_frequency=1;
+
+	%Additional options
+	md.inversion.iscontrol=0;
+	md.transient.requested_outputs={'IceVolume','TotalSmb','SmbMassBalance'};
+	md.verbose=verbose('solution',true,'module',true,'convergence',true);
+
+	%Go solve
+	md.cluster=generic('name',oshostname,'np',2);
+	md=solve(md,'Transient');
+
+	save ./Models/Greenland.Transient md; 
+end
+
+if any(steps==5)
+	disp('   Step 5: Plotting'); 
+	md = loadmodel('./Models/Greenland.Transient');
+
+	%Planview plots
+	plotmodel(md,'data',md.results.TransientSolution(end).Vel,'caxis',[1e-1 6000],...
+		'log', 10, 'title', 'Velocity (m/y)','gridded',1, ...
+		'data', md.results.TransientSolution(end).SmbMassBalance, ...
+		'title', 'Surface mass balance (m/y)','gridded',1, ...
+		'data',md.results.TransientSolution(end).Thickness,...
+		'title','Thickness (m)','gridded',1, ...
+		'data',md.results.TransientSolution(end).Surface, ...
+		'title', 'Surface (m)','gridded',1);
+
+	%Line Plots
+	figure
+	time_plot=md.results.TransientSolution(1).time:md.timestepping.time_step:md.timestepping.final_time;
+
+	%Plot surface mass balance
+	surfmb=[]; for i=1:100; surfmb=[surfmb ...
+		md.results.TransientSolution(i).SmbMassBalance]; end
+	subplot(3,1,1); plot(time_plot,mean(surfmb)); title('Mean Surface mass balance');
+
+	%Plot velocity
+	vel=[]; for i=1:100; vel=[vel md.results.TransientSolution(i).Vel]; end
+	subplot(3,1,2); plot(time_plot,mean(vel)); title('Mean Velocity');
+
+	%Plot Volume
+	volume=[]; for i=1:100; volume=[volume md.results.TransientSolution(i).IceVolume]; end
+	subplot(3,1,3); plot(time_plot,volume); title('Ice Volume');
+	xlabel('years')
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/Contour.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/Contour.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/Contour.exp	(revision 21239)
@@ -0,0 +1,11 @@
+## Name:Contour
+## Icon:0
+# Points Count Value
+5 1.000000
+# X pos Y pos
+260815.7808871837 745919.4159004869
+712422.3484428506 757574.3645213632
+640499.8210173184 195805.8409951325
+342774.0098139530 279721.4710654409
+260815.7808871837 745919.4159004869
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/EISMINT.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/EISMINT.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/EISMINT.par	(revision 21239)
@@ -0,0 +1,53 @@
+disp('      creating thickness');
+hmin=0.01;
+hmax=2756.7;
+radius=sqrt((md.mesh.x).^2+(md.mesh.y).^2);
+radiusmax=max(radius);
+radius(find(radius>(1.-10^-9)*radiusmax))=radiusmax;    %eliminate roundoff issues in next statement
+md.geometry.thickness=hmin*ones(size(md.mesh.x,1),1)+hmax*(4.*((1./2.)^(4./3.)*ones(size(md.mesh.x,1),1)-((radius)./(2.*radiusmax)).^(4./3.))).^(3./8.);
+md.geometry.base=0.*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+disp('      creating drag');
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('      creating temperatures');
+tmin=238.15; %K
+st=1.67*10^-2/1000.; %k/m
+md.initialization.temperature=tmin+st*radius;
+md.basalforcings.geothermalflux=4.2*10^-2*ones(md.mesh.numberofvertices,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=6.81*10^7*ones(md.mesh.numberofvertices,1); %to have the same B as the analytical solution 
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      creating surface mass balance');
+smb_max=0.5; %m/yr
+sb=10^-2/1000.; %m/yr/m
+rel=450.*1000.; %m
+md.smb.mass_balance=min(smb_max,sb*(rel-radius));
+
+disp('      creating velocities');
+constant=0.3;
+md.inversion.vx_obs=constant/2.*md.mesh.x.*(md.geometry.thickness).^-1;
+md.inversion.vy_obs=constant/2.*md.mesh.y.*(md.geometry.thickness).^-1;
+md.inversion.vel_obs=sqrt((md.inversion.vx_obs).^2+(md.inversion.vy_obs).^2);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Deal with boundary conditions:
+disp('      boundary conditions for stressbalance model:');
+md=SetMarineIceSheetBC(md,'./RoundFront.exp');
+
+radius=sqrt((md.mesh.x).^2+(md.mesh.y).^2);
+pos=find(radius==min(radius));
+md.mesh.x(pos)=0.; md.mesh.y(pos)=0.; %the closest node to the center is changed to be exactly at the center
+
+md.stressbalance.spcvx(pos)=0.;
+md.stressbalance.spcvy(pos)=0.;
+md.stressbalance.spcvz(pos)=0.;
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/RoundFront.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/RoundFront.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/RoundFront.exp	(revision 21239)
@@ -0,0 +1,47 @@
+## Name:
+## Icon:0
+# Points Count Value
+41 1
+# X pos Y pos
+1000000.000000 0.000000
+987688.340595 156434.465040
+951056.516295 309016.994375
+891006.524188 453990.499740
+809016.994375 587785.252292
+707106.781187 707106.781187
+587785.252292 809016.994375
+453990.499740 891006.524188
+309016.994375 951056.516295
+156434.465040 987688.340595
+0.000000 1000000.000000
+-156434.465040 987688.340595
+-309016.994375 951056.516295
+-453990.499740 891006.524188
+-587785.252292 809016.994375
+-707106.781187 707106.781187
+-809016.994375 587785.252292
+-891006.524188 453990.499740
+-951056.516295 309016.994375
+-987688.340595 156434.465040
+-1000000.000000 0.000000
+-987688.340595 -156434.465040
+-951056.516295 -309016.994375
+-891006.524188 -453990.499740
+-809016.994375 -587785.252292
+-707106.781187 -707106.781187
+-587785.252292 -809016.994375
+-453990.499740 -891006.524188
+-309016.994375 -951056.516295
+-156434.465040 -987688.340595
+-0.000000 -1000000.000000
+156434.465040 -987688.340595
+309016.994375 -951056.516295
+453990.499740 -891006.524188
+587785.252292 -809016.994375
+707106.781187 -707106.781187
+809016.994375 -587785.252292
+891006.524188 -453990.499740
+951056.516295 -309016.994375
+987688.340595 -156434.465040
+1000000.000000 0.000000
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/Square.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/Square.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/Square.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+1000000 0
+1000000 1000000
+0 1000000
+0 0
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/SquareFront.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/SquareFront.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/SquareFront.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+-1000 900000
+-1000 1100000
+1100000 1100000
+1100000 900000
+-1000 900000
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/SquareShelf.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/SquareShelf.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/SquareShelf.par	(revision 21239)
@@ -0,0 +1,55 @@
+%Start defining model parameters here
+
+%Geometry
+hmin=300;
+hmax=1000;
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+xmin=min(md.mesh.x);
+xmax=max(md.mesh.x);
+md.geometry.thickness=hmax+(hmin-hmax)*(md.mesh.y-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x-xmin)/(xmax-xmin);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%Initial velocity and pressure
+x     = transpose(ncread('../Data/SquareShelf.nc','x'));
+y     = transpose(ncread('../Data/SquareShelf.nc','y'));
+vx    = transpose(ncread('../Data/SquareShelf.nc','vx'));
+vy    = transpose(ncread('../Data/SquareShelf.nc','vy'));
+index = transpose(ncread('../Data/SquareShelf.nc','index'));
+md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+clear vx vy x y index;
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+%Friction
+md.friction.coefficient=20*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.stressbalance.viscosity_overshoot=0.3;
+md.masstransport.stabilization=1;
+md.thermal.stabilization=1;
+md.settings.waitonlock=30;
+md.verbose=verbose(0);
+md.stressbalance.restol=0.10;
+md.steadystate.reltol=0.02;
+md.stressbalance.reltol=0.02;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=1;
+md.timestepping.final_time=3;
+
+%Boundary conditions:
+md=SetIceShelfBC(md,'./SquareFront.exp');
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/eismint.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/eismint.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/eismint.m	(revision 21239)
@@ -0,0 +1,51 @@
+md=model();
+
+%Create mesh with roundmesh
+md=roundmesh(md,750000,30000);
+
+%Set mask
+md=setmask(md,'','');
+
+%Parameterize model
+md=parameterize(md,'EISMINT.par');
+
+%We extrude the model to have a 3d model
+md=extrude(md,10,1.);
+
+%Set ice flow approximation
+md=setflowequation(md,'SIA','all');
+
+%Create boundary conditions: zero velocity on the bed
+pos=find(md.mesh.vertexonbase);
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvy(pos)=0;
+md.stressbalance.spcvz(pos)=0;
+
+%Go Solve
+md.cluster=generic('np',2);
+md.verbose.convergence=1;
+md=solve(md,'Stressbalance');
+vel=DepthAverage(md,sqrt(md.results.StressbalanceSolution.Vx.^2+md.results.StressbalanceSolution.Vy.^2));
+
+%Calculate analytical velocity
+constant=0.3;
+vx_obs=constant/2*md.mesh.x.*(md.geometry.thickness).^-1;
+vy_obs=constant/2*md.mesh.y.*(md.geometry.thickness).^-1;
+vel_obs=sqrt(vx_obs.^2+vy_obs.^2);
+vel_obs=project2d(md,vel_obs,1);
+
+plotmodel(md,...
+	'data',vel    ,'view',2,'caxis',[0 200],'title','Modelled velocity',...
+	'data',vel_obs,'view',2,'caxis',[0 200],'title','Analytical velocity',...
+	'data',abs(vel-vel_obs)./(vel_obs+eps)*100,'caxis',[0 30],'view',2,'title','Relative misfit (%)');
+
+subplot(2,2,4)
+hold on;
+plot(sqrt((md.mesh.x2d).^2+(md.mesh.y2d).^2),vel,'r.');
+plot(sqrt((md.mesh.x2d).^2+(md.mesh.y2d).^2),vel_obs,'b.');
+title('Analytical vs calculated velocity');
+xlabel('distance to the center of the ice sheet (m)');
+ylabel('velocity (m/yr)');
+legend('calculated velocity','exact velocity');
+axis([0 750000 0 200]);
+hold off;
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/runme.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/runme.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/IceflowModels/runme.m	(revision 21239)
@@ -0,0 +1,8 @@
+md=triangle(model(),'Square.exp',80000.);
+md=setmask(md,'all','');
+md=parameterize(md,'SquareShelf.par');
+md=extrude(md,3,1);
+%Set flow equation
+md=setflowequation(md,'HO','Contour.exp','fill','SSA','coupling','tiling');
+%Solve
+md=solve(md,'Stressbalance');
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Inversion/DomainOutline.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Inversion/DomainOutline.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Inversion/DomainOutline.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:DomainOutline
+## Icon:0
+# Points Count  Value
+5 1.000000
+# X pos Y pos
+0 0
+1000000 0
+1000000 1000000
+0 1000000
+0 0
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Inversion/Front.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Inversion/Front.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Inversion/Front.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+-1000 900000
+-1000 1100000
+1100000 1100000
+1100000 900000
+-1000 900000
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Inversion/Square.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Inversion/Square.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Inversion/Square.par	(revision 21239)
@@ -0,0 +1,24 @@
+%Start defining model parameters here
+
+disp('      creating thickness');
+hmin = 300;
+hmax = 1000;
+ymin = min(md.mesh.y);
+ymax = max(md.mesh.y);
+md.geometry.thickness = hmax+(hmin-hmax)*(md.mesh.y-ymin)/(ymax-ymin);
+md.geometry.base      = -md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface   = md.geometry.base+md.geometry.thickness;
+
+disp('      creating drag');
+md.friction.coefficient=200*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p = ones(md.mesh.numberofelements,1);
+md.friction.q = ones(md.mesh.numberofelements,1);
+
+disp('      creating flow law paramter');
+md.materials.rheology_B=1.8*10^8*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B(find(md.mesh.x<md.mesh.y))=1.4*10^8;
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+disp('      creating boundary conditions');
+md=SetIceShelfBC(md,'Front.exp');
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Inversion/runme.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Inversion/runme.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Inversion/runme.m	(revision 21239)
@@ -0,0 +1,71 @@
+step=1;
+if any(step==1)
+	%Generate observations
+	md = model;
+	md = triangle(md,'DomainOutline.exp',100000);
+	md = setmask(md,'all','');
+	md = parameterize(md,'Square.par');
+	md = setflowequation(md,'SSA','all');
+	md.cluster = generic('np',2);
+	md = solve(md,'Stressbalance');
+	plotmodel(md,'axis#all','tight','data',md.materials.rheology_B,'caxis',[ 1.3 1.9]*10^8,'title','"True" B',...
+		'data',md.results.StressbalanceSolution.Vel,'title','"observed velocities"')
+	save model1 md
+end
+if any(step==2)
+	%Modify rheology, now constant
+	loadmodel('model1.mat');
+	md.materials.rheology_B(:) = 1.8*10^8;
+
+	%results of previous run are taken as observations
+	md.inversion=m1qn3inversion();
+	md.inversion.vx_obs  = md.results.StressbalanceSolution.Vx;
+	md.inversion.vy_obs  = md.results.StressbalanceSolution.Vy;
+	md.inversion.vel_obs = md.results.StressbalanceSolution.Vel;
+
+	md = solve(md,'Stressbalance');
+	plotmodel(md,'axis#all','tight','data',md.materials.rheology_B,'caxis',[ 1.3 1.9]*10^8,'title','B first guess',...
+		'data',md.results.StressbalanceSolution.Vel,'title','modeled velocities')
+	save model2 md
+end
+if any(step==3)
+	%invert for ice rigidity
+	loadmodel('model2.mat');
+
+	%Set up inversion parameters
+	maxsteps = 20;
+	md.inversion.iscontrol = 1;
+	md.inversion.control_parameters = {'MaterialsRheologyBbar'};
+	md.inversion.maxsteps = maxsteps;
+	md.inversion.cost_functions = 101;
+	md.inversion.cost_functions_coefficients = ones(md.mesh.numberofvertices,1);
+	md.inversion.min_parameters    = cuffey(273)*ones(md.mesh.numberofvertices,1);
+	md.inversion.max_parameters    = cuffey(200)*ones(md.mesh.numberofvertices,1);
+
+	%Go solve!
+	md.verbose=verbose(0);
+	md=solve(md,'Stressbalance');
+	plotmodel(md,'axis#all','tight','data',md.results.StressbalanceSolution.MaterialsRheologyBbar,'caxis',[ 1.3 1.9]*10^8,'title','inferred B',...
+		'data',md.results.StressbalanceSolution.Vel,'title','modeled velocities')
+end
+if any(step==4)
+	%invert for ice rigidity
+	loadmodel('model2.mat');
+
+	%Set up inversion parameters
+	maxsteps = 20;
+	md.inversion.iscontrol = 1;
+	md.inversion.control_parameters = {'MaterialsRheologyBbar'};
+	md.inversion.maxsteps = maxsteps;
+	md.inversion.cost_functions = [101 502];
+	md.inversion.cost_functions_coefficients      = ones(md.mesh.numberofvertices,1);
+	md.inversion.cost_functions_coefficients(:,2) = 10^-16*ones(md.mesh.numberofvertices,1);
+	md.inversion.min_parameters    = cuffey(273)*ones(md.mesh.numberofvertices,1);
+	md.inversion.max_parameters    = cuffey(200)*ones(md.mesh.numberofvertices,1);
+
+	%Go solve!
+	md.verbose=verbose(0);
+	md=solve(md,'Stressbalance');
+	plotmodel(md,'axis#all','tight','data',md.results.StressbalanceSolution.MaterialsRheologyBbar,'caxis',[ 1.3 1.9]*10^8,'title','inferred B',...
+		'data',md.results.StressbalanceSolution.Vel,'title','modeled velocities')
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Jakobshavn/Domain.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Jakobshavn/Domain.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Jakobshavn/Domain.exp	(revision 21239)
@@ -0,0 +1,34 @@
+## Name:JksOutline
+## Icon:0
+# Points Count Value
+28 1.000000
+# X pos Y pos
+-442320.3882147236 -2277080.6549030584
+-415649.3149820761 -2315476.9356749961
+-356259.6577274340 -2351834.4758754564
+-309585.2795717255 -2384114.5349311619
+-279812.9187561168 -2353193.6362587260
+-274850.8586214480 -2287953.9379578433
+-294854.1635456266 -2263149.2609987380
+-309585.2795753506 -2232228.3623235333
+-348041.2456311518 -2191113.7607873622
+-376728.1557929466 -2197909.5626934194
+-391614.3362011510 -2203685.9943137392
+-417355.0231571503 -2206404.3150757281
+-420122.3381705935 -2211830.0535394503
+-421889.2049176788 -2218344.8015625700
+-420705.1891998384 -2226200.5387845989
+-425774.4833068820 -2230306.5097973733
+-429242.2244052034 -2235353.9400299159
+-427025.7933000360 -2240741.0910965428
+-431045.5636035603 -2255158.9014255330
+-424708.0734753361 -2261343.7626088522
+-423137.8820362946 -2268466.9593191240
+-428054.2739333302 -2272589.0010017036
+-432362.3262468725 -2272393.9161962867
+-435068.8255516959 -2273140.2906106352
+-437641.3726878429 -2272612.1952726739
+-439529.7800752302 -2272929.1351353633
+-442475.4525940326 -2275381.7044264446
+-442320.3882147236 -2277080.6549030584
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Jakobshavn/Front.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Jakobshavn/Front.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Jakobshavn/Front.exp	(revision 21239)
@@ -0,0 +1,15 @@
+## Name:Front
+## Icon:0
+# Points Count Value
+9 1.000000
+# X pos Y pos
+-443691.7204476296 -2241744.0087129781
+-444020.9148401438 -2244124.0631026439
+-443856.3176438867 -2245205.9060070375
+-441551.9568962874 -2244773.1688452801
+-440399.7765224879 -2243474.9573600078
+-439905.9849337166 -2240662.1658085845
+-441387.3597000304 -2238065.7428380400
+-443856.3176438867 -2237633.0056762826
+-443691.7204476296 -2241744.0087129781
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Jakobshavn/Jks.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Jakobshavn/Jks.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Jakobshavn/Jks.par	(revision 21239)
@@ -0,0 +1,60 @@
+%Name and Coordinate system
+md.miscellaneous.name='Jakobshavn';
+md.mesh.epsg=3413;
+
+%Load SeaRISE dataset
+disp('   Loading SeaRISE data from NetCDF');
+ncdata = '../Data/Greenland_5km_dev1.2.nc';
+x1    = ncread(ncdata,'x1');
+y1    = ncread(ncdata,'y1');
+thk   = ncread(ncdata,'thk')';
+topg  = ncread(ncdata,'topg')';
+velx  = ncread(ncdata,'surfvelx')';
+vely  = ncread(ncdata,'surfvely')';
+temp  = ncread(ncdata,'airtemp2m')';
+smb   = ncread(ncdata,'smb')';
+
+disp('   Interpolating thicknesses');
+md.geometry.thickness=InterpFromGridToMesh(x1,y1,thk,md.mesh.x,md.mesh.y,0);
+pos0=find(md.geometry.thickness<=10);
+md.geometry.thickness(pos0)=10;
+
+disp('   Interpolating bedrock topography');
+md.geometry.base = InterpFromGridToMesh(x1,y1,topg,md.mesh.x,md.mesh.y,0);
+
+disp('   Constructing surface elevation');
+md.geometry.surface=md.geometry.thickness+md.geometry.base;
+
+disp('   Interpolating velocities');
+md.inversion.vx_obs  = InterpFromGridToMesh(x1,y1,velx,md.mesh.x,md.mesh.y,0);
+md.inversion.vy_obs  = InterpFromGridToMesh(x1,y1,vely,md.mesh.x,md.mesh.y,0);
+md.inversion.vel_obs = sqrt(md.inversion.vx_obs.^2+md.inversion.vy_obs.^2);
+md.initialization.vx = md.inversion.vx_obs;
+md.initialization.vy = md.inversion.vy_obs;
+md.initialization.vel= md.inversion.vel_obs;
+
+disp('   Interpolating temperatures');
+md.initialization.temperature=InterpFromGridToMesh(x1,y1,temp,md.mesh.x,md.mesh.y,0)+273.15; %convert to Kelvin
+
+disp('   Interpolating surface mass balance');
+md.smb.mass_balance=InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0);
+md.smb.mass_balance=md.smb.mass_balance*md.materials.rho_water/md.materials.rho_ice;
+
+disp('   Construct basal friction parameters');
+md.friction.coefficient=30*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('   Construct ice rheological properties');
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.damage.D=zeros(md.mesh.numberofvertices,1);
+%Reduce viscosity along the shear margins
+weakb=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,'WeakB.exp','node',2);
+pos=find(weakb);md.materials.rheology_B(pos)=.3*md.materials.rheology_B(pos);
+
+disp('   Set other boundary conditions');
+md=SetMarineIceSheetBC(md,'./Front.exp');
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Jakobshavn/WeakB.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Jakobshavn/WeakB.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Jakobshavn/WeakB.exp	(revision 21239)
@@ -0,0 +1,60 @@
+## Name:WeakB
+## Icon:0
+# Points Count Value
+24 1.000000
+# X pos Y pos
+-441022.7144520371 -2238435.7116546673
+-441639.8422268176 -2239053.0142011684
+-439171.3311276956 -2240699.1543251718
+-437319.9478033541 -2241727.9919026736
+-435879.9829955329 -2241933.7594181742
+-432382.9256051101 -2242756.8294801759
+-430942.9607972889 -2242962.5969956759
+-429708.7052477279 -2243991.4345731782
+-428680.1589564271 -2245020.2721506800
+-427651.6126651262 -2246049.1097281822
+-425800.2293407847 -2247077.9473056840
+-424565.9737912237 -2247695.2498521851
+-419341.0001274022 -2251604.8326466926
+-416049.6519952395 -2253868.2753171972
+-416049.6519952395 -2252222.1351931938
+-418312.4538361013 -2249341.3899761885
+-423331.7182416627 -2245843.3422126817
+-425594.5200825246 -2245226.0396661805
+-426623.0663738254 -2244402.9696041788
+-427445.9034068661 -2243991.4345731782
+-428885.8682146872 -2242756.8294801759
+-431148.6700555491 -2241522.2243871735
+-436497.1107703134 -2239670.3167476696
+-441022.7144520371 -2238435.7116546673
+
+## Name:WeakB
+## Icon:0
+# Points Count Value
+24 1.000000
+# X pos Y pos
+-442668.3885181184 -2245226.0396661805
+-440405.5866772566 -2245843.3422126817
+-438759.9126111752 -2246049.1097281822
+-437525.6570616142 -2246460.6447591828
+-435879.9829955329 -2246872.1797901839
+-434028.5996711914 -2248106.7848831862
+-431354.3793138092 -2249547.1574916886
+-430120.1237642482 -2249341.3899761885
+-429297.2867312076 -2250164.4600381902
+-427857.3219233864 -2249958.6925226897
+-426623.0663738254 -2250164.4600381902
+-424771.6830494839 -2250575.9950691909
+-423537.4274999229 -2250781.7625846914
+-422714.5904668822 -2251399.0651311926
+-415226.8149621988 -2259629.7657512082
+-419135.2908691420 -2259218.2307202076
+-422838.0575178250 -2255720.1829567007
+-424977.3923077441 -2252016.3676776937
+-426623.0663738254 -2251810.6001621932
+-428268.7404399067 -2251399.0651311926
+-429708.7052477279 -2251399.0651311926
+-431560.0885720694 -2251399.0651311926
+-443902.6440676794 -2246460.6447591828
+-442668.3885181184 -2245226.0396661805
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Jakobshavn/runme.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Jakobshavn/runme.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Jakobshavn/runme.m	(revision 21239)
@@ -0,0 +1,85 @@
+steps=[1];
+
+if any(steps==1)
+	disp('	Step 1: Mesh creation'); 
+	md=triangle(model,'Domain.exp',2000);
+
+	%Get observed velocity field on mesh nodes
+	ncdata='../Data/Greenland_5km_dev1.2.nc';
+	if ~exist(ncdata,'file'), 
+		error('File Greenland_5km_dev1.2.nc not downloaded in Data Directory.  Please cd ../Data and run the download script.');
+	end
+	x1   = ncread(ncdata,'x1');
+	y1   = ncread(ncdata,'y1');
+	velx = ncread(ncdata,'surfvelx');
+	vely = ncread(ncdata,'surfvely');
+	vx   = InterpFromGridToMesh(x1,y1,velx',md.mesh.x,md.mesh.y,0);
+	vy   = InterpFromGridToMesh(x1,y1,vely',md.mesh.x,md.mesh.y,0);
+	vel  = sqrt(vx.^2+vy.^2);
+
+	%refine mesh using surface velocities as metric
+	md=bamg(md,'hmin',1200,'hmax',15000,'field',vel,'err',5);
+	[md.mesh.lat,md.mesh.long]  = xy2ll(md.mesh.x,md.mesh.y,+1,39,71);
+	
+	save JksMesh md
+end 
+if any(steps==2)
+	disp('	Step 2: Parameterization');
+	md=loadmodel('JksMesh');
+	
+	md=setmask(md,'','');
+	md=parameterize(md,'Jks.par'); 
+
+	save JksPar md
+end 
+if any(steps==3)
+	disp('	Step 3: Control method friction');
+	md=loadmodel('JksPar');
+
+	md=setflowequation(md,'SSA','all');
+
+	%Control general
+	md.inversion.iscontrol=1;
+	md.inversion.nsteps=20;
+	md.inversion.step_threshold=0.99*ones(md.inversion.nsteps,1);
+	md.inversion.maxiter_per_step=5*ones(md.inversion.nsteps,1);
+	md.verbose=verbose('solution',true,'control',true);
+
+	%Cost functions
+	md.inversion.cost_functions=[101 103];
+	md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2);
+	md.inversion.cost_functions_coefficients(:,1)=40;
+	md.inversion.cost_functions_coefficients(:,2)=1;
+
+	%Controls
+	md.inversion.control_parameters={'FrictionCoefficient'};
+	md.inversion.gradient_scaling(1:md.inversion.nsteps)=30;
+	md.inversion.min_parameters=1*ones(md.mesh.numberofvertices,1);
+	md.inversion.max_parameters=200*ones(md.mesh.numberofvertices,1);
+
+	%Additional parameters
+	md.stressbalance.restol=0.01;
+	md.stressbalance.reltol=0.1;
+	md.stressbalance.abstol=NaN;
+
+	%Go solve
+	md.cluster=generic('name',oshostname,'np',4);
+	md=solve(md,'Stressbalance');
+	
+	save JksControl md
+end 
+if any(steps==4)
+	disp('	Plotting')
+	md=loadmodel('JksControl');
+
+	plotmodel(md,'unit#all','km','axis#all','equal',...
+		'FontSize#all',12,...
+		'data',md.inversion.vel_obs,'title','Observed velocity',...
+		'data',md.results.StressbalanceSolution.Vel,'title','Modeled Velocity',...
+		'colorbar#1','off','colorbar#2','on','colorbartitle#2','[m/yr]',...
+		'caxis#1-2',[0,7000],...
+		'data',md.geometry.base,'title','Base elevation',...
+		'data',md.results.StressbalanceSolution.FrictionCoefficient,...
+		'title','Friction Coefficient',...
+		'colorbar#3','on','colorbartitle#3','[m]','colorbar#4','on');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Mesh/Square.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Mesh/Square.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Mesh/Square.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:Square
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+1 0
+1 1
+0 1
+0 0
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Mesh/circles.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Mesh/circles.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Mesh/circles.m	(revision 21239)
@@ -0,0 +1,7 @@
+function vel=circles(x,y),
+
+u=4*x-2; v=4*y-2;
+
+vel=tanh(30*(u.^2+v.^2-0.25)) ...
+	+tanh(30*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+	+tanh(30*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30*((u+0.75).^2+(v+0.75).^2-0.25)) ;
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Mesh/shock.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Mesh/shock.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Mesh/shock.m	(revision 21239)
@@ -0,0 +1,3 @@
+function vel=shock(x,y),
+
+vel=exp(-(sqrt((x+0.1).^2+(y+0.1).^2)-0.75).^2*10^6)+((x+0.1).^2+(y+0.1).^2)/2;
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Pig/DomainOutline.bkp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Pig/DomainOutline.bkp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Pig/DomainOutline.bkp	(revision 21239)
@@ -0,0 +1,101 @@
+## Name:
+## Icon:0
+# Points Count Value
+95 25000.000000
+# X pos Y pos
+-1712113.0179281300 -349656.0205056490
+-1711509.1917759699 -349354.1074295690
+-1709240.6586108401 -349354.1074295690
+-1707080.1508345299 -348922.0058743060
+-1705459.7700022999 -347193.5996532570
+-1703083.2114483600 -345249.1426545770
+-1701138.7544496800 -344168.8887664210
+-1698438.1197292900 -343952.8379887900
+-1698006.0181740201 -341900.3556012940
+-1693793.0280102200 -340279.9747690600
+-1691092.3932898301 -339631.8224361670
+-1688391.7585694401 -339415.7716585360
+-1686447.3015707601 -340063.9239914290
+-1683530.6160727399 -341036.1524907690
+-1682558.3875734000 -343304.6856558960
+-1682134.7209454600 -344182.1487658350
+-1682126.2860181299 -345681.2442098390
+-1681072.0444963200 -345932.4393879640
+-1680634.4718407800 -346682.5639403050
+-1680571.9614614199 -348557.8753211580
+-1677446.4424933300 -348370.3441830730
+-1675508.6207331200 -349495.5310115840
+-1676616.9911885399 -353567.0975933760
+-1672991.8601872099 -353799.6175753630
+-1668839.1631938200 -353999.1991486380
+-1667132.2298986400 -355121.4651541420
+-1666069.5534494901 -357496.8595698890
+-1662944.0344814099 -358309.4945015920
+-1660756.1712037399 -358747.0671571240
+-1657922.9836098100 -361682.8074238540
+-1656579.2228470000 -364003.8487410000
+-1653004.8841628900 -364748.0635758530
+-1653442.4568184200 -361622.5446077650
+-1651129.5727820301 -355684.0585683980
+-1648929.2928810001 -350845.9692010000
+-1646260.7698359799 -347802.2804785470
+-1644571.8968503401 -341785.6704672340
+-1643503.3064999001 -340869.0986596620
+-1643190.7546030900 -336680.9032424240
+-1642690.6715682000 -335243.1645171040
+-1641913.0916588283 -332341.0814454452
+-1640683.9739821283 -330436.6112348017
+-1637816.0327364956 -328532.1410241582
+-1635241.2508976001 -328652.8685499910
+-1631765.4107996500 -327017.1790921330
+-1625934.5618617306 -322342.6128395668
+-1620608.3852626982 -320438.1426289233
+-1616101.6204481323 -320438.1426289233
+-1611594.8556335662 -320914.2601815842
+-1607907.5026034669 -321866.4952869060
+-1602991.0318966676 -324723.2006028712
+-1599713.3847588014 -327579.9059188365
+-1593977.5022675355 -328532.1410241582
+-1590699.8551296694 -334721.6692087495
+-1589259.8391499999 -338300.0840570000
+-1588627.0898328500 -343572.9950327750
+-1588056.6000060199 -345432.3563530700
+-1586993.9235568701 -347432.6884926460
+-1589259.8391499999 -349315.9832070000
+-1585493.6744521901 -352996.1122558430
+-1585118.6121760199 -354496.3613605250
+-1585861.9157163899 -356240.3342513760
+-1586368.8197632500 -358747.0671571240
+-1587889.0972700799 -360996.6006787950
+-1586681.3716600600 -363935.4286441500
+-1585806.2263489999 -365748.2296456410
+-1586743.8820394201 -368373.6655788350
+-1586056.2678664399 -370123.9562009640
+-1585493.6744521901 -371124.1222707520
+-1586243.7990045301 -373562.0270658610
+-1414257.6683934701 -327460.5482541260
+-1412220.4351378100 -325972.8942023180
+-1404515.9240538401 -296165.1737279960
+-1387984.9332285200 -267002.0106682320
+-1360067.9373810000 -107884.1934940000
+-1423274.3497420000 -81217.9259650000
+-1402446.7987670000 -45916.9921070000
+-1478343.8065599999 60338.8188030000
+-1503760.4789370000 36334.1837800000
+-1528509.5619775900 63667.6809196406
+-1623055.4918765700 62841.1506965373
+-1725734.5897359999 -61372.6193030000
+-1719614.6457630000 -69022.5492690000
+-1759088.2843859999 -114004.1374660000
+-1755416.3180020000 -117064.1094530000
+-1761230.2647760001 -126856.0198080000
+-1758170.2927900001 -130527.9861920000
+-1762148.2563720001 -135423.9413700000
+-1764902.2311590000 -131445.9777880000
+-1769798.1863370000 -134199.9525750000
+-1775000.1387139999 -131445.9777880000
+-1794277.9622269999 -153477.7760890000
+-1712576.7101950001 -225081.1205660000
+-1729939.5891459100 -335652.4567604720
+-1712113.0179281300 -349656.0205056490
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Pig/Pig.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Pig/Pig.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Pig/Pig.par	(revision 21239)
@@ -0,0 +1,118 @@
+% Parameters to change/Try
+friction_coefficient = 10; % default [10]
+Temp_change          =  0;  % default [0 K]
+
+%Name and Coordinate system
+md.miscellaneous.name='PIG';
+md.mesh.epsg=3031;
+
+%NetCdf Loading
+disp('   Loading SeaRISE data from NetCDF');
+ncdata='../Data/Antarctica_5km_withshelves_v0.75.nc';
+x1    = ncread(ncdata,'x1');
+y1    = ncread(ncdata,'y1');
+usrf  = ncread(ncdata,'usrf')';
+topg  = ncread(ncdata,'topg')';
+temp  = ncread(ncdata,'presartm')';
+smb   = ncread(ncdata,'presprcp')';
+gflux = ncread(ncdata,'bheatflx_fox')';
+
+%Geometry
+disp('   Interpolating surface and ice base');
+md.geometry.base    = InterpFromGridToMesh(x1,y1,topg,md.mesh.x,md.mesh.y,0);
+md.geometry.surface = InterpFromGridToMesh(x1,y1,usrf,md.mesh.x,md.mesh.y,0);
+clear usrf, topg;
+
+disp('   Constructing thickness');
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+%ensure hydrostatic equilibrium on ice shelf: 
+di=md.materials.rho_ice/md.materials.rho_water;
+
+%Get the node numbers of floating nodes
+pos=find(md.mask.groundedice_levelset<0); 
+
+%apply a flotation criterion on the precedingly defined nodes and
+%redefine base and thickness accordingly
+md.geometry.thickness(pos)=1/(1-di)*md.geometry.surface(pos);
+md.geometry.base(pos)=md.geometry.surface(pos)-md.geometry.thickness(pos);
+md.geometry.hydrostatic_ratio=ones(md.mesh.numberofvertices,1); %For Dakota
+
+%Set min thickness to 1 meter
+pos0=find(md.geometry.thickness<=1);
+md.geometry.thickness(pos0)=1;
+md.geometry.surface=md.geometry.thickness+md.geometry.base;
+md.geometry.bed=md.geometry.base;
+md.geometry.bed(pos)=md.geometry.base(pos)-1000;
+
+%Initialization parameters
+disp('   Interpolating temperatures');
+md.initialization.temperature=InterpFromGridToMesh(x1,y1,temp,md.mesh.x,md.mesh.y,0)+273.15+Temp_change;
+clear temp;
+
+disp('   Loading velocities data from NetCDF');
+nsidc_vel='../Data/Antarctica_ice_velocity.nc';
+xmin    = ncreadatt(nsidc_vel,'/','xmin');
+ymax    = ncreadatt(nsidc_vel,'/','ymax');
+spacing = ncreadatt(nsidc_vel,'/','spacing');
+nx      = double(ncreadatt(nsidc_vel,'/','nx'));
+ny      = double(ncreadatt(nsidc_vel,'/','ny'));
+velx    = double(ncread(nsidc_vel,'vx'));
+vely    = double(ncread(nsidc_vel,'vy'));
+% Read coordinates
+xmin = strtrim(xmin);  
+xmin = str2num(xmin(1:end-2)); 
+ymax = strtrim(ymax);  
+ymax = str2num(ymax(1:end-2));  
+spacing = strtrim(spacing);
+spacing = str2num(spacing(1:end-2));  
+% Build the coordinates
+x2=xmin+(0:1:nx)'*spacing;
+y2=(ymax-ny*spacing)+(0:1:ny)'*spacing;
+
+disp('   Set observed velocities')
+md.initialization.vx=InterpFromGridToMesh(x2,y2,flipud(velx'),md.mesh.x,md.mesh.y,0);
+md.initialization.vy=InterpFromGridToMesh(x2,y2,flipud(vely'),md.mesh.x,md.mesh.y,0);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.vel=sqrt(md.initialization.vx.^2+md.initialization.vy.^2);
+clear velx vely;
+
+disp('   Set Pressure');
+md.initialization.pressure=md.materials.rho_ice*md.constants.g*md.geometry.thickness;
+
+disp('   Construct ice rheological properties');
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+
+%Forcings
+disp('   Interpolating surface mass balance');
+mass_balance=InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0);
+md.smb.mass_balance=mass_balance*md.materials.rho_water/md.materials.rho_ice;
+clear smb;
+
+disp('   Set geothermal heat flux');
+md.basalforcings.geothermalflux=InterpFromGridToMesh(x1,y1,gflux,md.mesh.x,md.mesh.y,0);
+clear gflux;
+
+%Friction and inversion set up
+disp('   Construct basal friction parameters');
+md.friction.coefficient=friction_coefficient*ones(md.mesh.numberofvertices,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%no friction applied on floating ice
+pos=find(md.mask.groundedice_levelset<0);
+md.friction.coefficient(pos)=0;
+md.groundingline.migration='SubelementMigration';
+
+md.inversion=m1qn3inversion();
+md.inversion.vx_obs=md.initialization.vx;
+md.inversion.vy_obs=md.initialization.vy;
+md.inversion.vel_obs=md.initialization.vel;
+
+disp('   Set boundary conditions');
+md=SetMarineIceSheetBC(md);
+md.basalforcings.floatingice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.thermal.spctemperature                 = md.initialization.temperature;
+md.masstransport.spcthickness             = NaN*ones(md.mesh.numberofvertices,1);
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Pig/PigRegion.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Pig/PigRegion.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Pig/PigRegion.m	(revision 21239)
@@ -0,0 +1,41 @@
+%Getting the velocity in PIG vicinity for the ExpDraw
+
+% Load Velocities
+% http://nsidc.org/data/nsidc-0484.html
+nsidc_vel='../Data/Antarctica_ice_velocity.nc'; 	
+
+% Get necessary data to build up the velocity grid
+xmin    = ncreadatt(nsidc_vel,'/','xmin');
+ymax    = ncreadatt(nsidc_vel,'/','ymax');
+spacing = ncreadatt(nsidc_vel,'/','spacing');
+
+nx = double(ncreadatt(nsidc_vel,'/','nx'));
+ny = double(ncreadatt(nsidc_vel,'/','ny'));
+vx = double(ncread(nsidc_vel,'vx'));
+vy = double(ncread(nsidc_vel,'vy'));
+
+xmin = strtrim(xmin);  % this is a string, and we need to recover the double value
+xmin = str2num(xmin(1:end-2));  % get rid of the unit and convert to double
+
+ymax = strtrim(ymax);  
+ymax = str2num(ymax(1:end-2));  
+
+spacing = strtrim(spacing);
+spacing = str2num(spacing(1:end-2));  
+
+% Build the coordinates
+x=xmin+(0:1:nx)'*spacing;
+y=(ymax)-(0:1:ny)'*spacing; 
+
+%Limit the region to Pine Island
+posx  = find(x<=-12.0e5 & x>=-18.0e5);
+x_pig = x(posx);
+posy  = find(y<=1.0e5 & y>-4.0e5);
+y_pig = flipud(y(posy));
+
+vx_pig  = flipud(vx(posx,posy)');
+vy_pig  = flipud(vy(posx,posy)');
+vel_pig = sqrt(vx_pig.^2+vy_pig.^2);
+
+imagesc(x_pig,y_pig,log(vel_pig+1));
+axis xy equal tight;
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/Pig/runme.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/Pig/runme.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/Pig/runme.m	(revision 21239)
@@ -0,0 +1,198 @@
+steps=[1];
+
+if any(steps==1)   %Mesh Generation #1
+	%Mesh parameters
+	domain =['./DomainOutline.exp'];
+	hinit=10000;   % element size for the initial mesh
+	hmax=40000;    % maximum element size of the final mesh
+	hmin=5000;     % minimum element size of the final mesh
+	gradation=1.7; % maximum size ratio between two neighboring elements
+	err=8;         % maximum error between interpolated and control field
+
+	% Generate an initial uniform mesh (resolution = hinit m)
+	md=bamg(model,'domain',domain,'hmax',hinit);
+
+	%ploting
+	plotmodel(md,'data','mesh')
+	return;
+
+	% Load Velocities
+	nsidc_vel='../Data/Antarctica_ice_velocity.nc'; 	
+
+	% Get necessary data to build up the velocity grid
+	xmin    = ncreadatt(nsidc_vel,'/','xmin');
+	ymax    = ncreadatt(nsidc_vel,'/','ymax');
+	spacing = ncreadatt(nsidc_vel,'/','spacing');
+	nx      = double(ncreadatt(nsidc_vel,'/','nx'));
+	ny      = double(ncreadatt(nsidc_vel,'/','ny'));
+	vx      = double(ncread(nsidc_vel,'vx'));
+	vy      = double(ncread(nsidc_vel,'vy'));
+
+	% Read coordinates
+	xmin = strtrim(xmin);  
+	xmin = str2num(xmin(1:end-2)); 
+	ymax = strtrim(ymax);  
+	ymax = str2num(ymax(1:end-2));  
+	spacing = strtrim(spacing);
+	spacing = str2num(spacing(1:end-2));  
+
+	% Build the coordinates
+	x=xmin+(0:1:nx)'*spacing;
+	y=(ymax-ny*spacing)+(0:1:ny)'*spacing;
+	
+	% Interpolate velocities onto coarse mesh
+	vx_obs=InterpFromGridToMesh(x,y,flipud(vx'),md.mesh.x,md.mesh.y,0);
+	vy_obs=InterpFromGridToMesh(x,y,flipud(vy'),md.mesh.x,md.mesh.y,0);
+	vel_obs=sqrt(vx_obs.^2+vy_obs.^2);
+	clear vx vy x y;
+
+	% Adapt the mesh to minimize error in velocity interpolation
+	md=bamg(md,'hmax',hmax,'hmin',hmin,'gradation',gradation,'field',vel_obs,'err',err);
+	
+	%ploting
+	plotmodel(md,'data','mesh')
+
+	% Save model
+	save ./Models/PIG_Mesh_generation md;
+end
+
+if any(steps==2)  %Masks #2
+
+	md = loadmodel('./Models/PIG_Mesh_generation');	
+
+	% Load SeaRISe dataset for Antarctica  
+	% http://websrv.cs.umt.edu/isis/index.php/Present_Day_Antarctica
+	searise='../Data/Antarctica_5km_withshelves_v0.75.nc';
+	
+	%read thickness mask from SeaRISE
+	x1=double(ncread(searise,'x1'));
+	y1=double(ncread(searise,'y1'));
+	thkmask=double(ncread(searise,'thkmask'));
+	
+	%interpolate onto our mesh vertices
+	groundedice=double(InterpFromGridToMesh(x1,y1,thkmask',md.mesh.x,md.mesh.y,0));
+	groundedice(groundedice<=0)=-1;
+	clear thkmask;
+
+	%fill in the md.mask structure
+	md.mask.groundedice_levelset=groundedice; %ice is grounded for mask equal one
+	md.mask.ice_levelset=-1*ones(md.mesh.numberofvertices,1);%ice is present when negatvie
+
+	%ploting
+	plotmodel(md,'data',md.mask.groundedice_levelset,'title','grounded/floating','data',md.mask.ice_levelset,'title','ice/no-ice')
+	
+	% Save model
+	save ./Models/PIG_SetMask md;
+end
+
+if any(steps==3)  %Parameterization #3
+
+	md = loadmodel('./Models/PIG_SetMask');
+	md = parameterize(md,'./Pig.par');
+
+	% Use a MacAyeal flow model
+	md = setflowequation(md,'SSA','all');
+	
+	% Save model
+	save ./Models/PIG_Parameterization md;
+end
+
+if any(steps==4)  %Control Method #4
+
+	md = loadmodel('./Models/PIG_Parameterization');
+
+	% Control general
+	md.inversion.iscontrol=1;
+	md.inversion.maxstepss=20;
+	md.inversion.maxiter=40;
+	md.inversion.dxmin=0.1;
+	md.inversion.gttol=1.0e-4;
+	md.verbose=verbose('solution',true,'control',true);
+
+	% Cost functions
+	md.inversion.cost_functions=[101 103 501];
+	md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,3);
+	md.inversion.cost_functions_coefficients(:,1)=1;
+	md.inversion.cost_functions_coefficients(:,2)=1;
+	md.inversion.cost_functions_coefficients(:,3)=8e-15;
+
+	% Controls
+	md.inversion.control_parameters={'FrictionCoefficient'};
+	md.inversion.min_parameters=1*ones(md.mesh.numberofvertices,1);
+	md.inversion.max_parameters=200*ones(md.mesh.numberofvertices,1);
+
+	% Additional parameters
+	md.stressbalance.restol=0.01;
+	md.stressbalance.reltol=0.1;
+	md.stressbalance.abstol=NaN;
+
+	% Solve
+	md.toolkits=toolkits;
+	md.cluster=generic('name',oshostname,'np',2);
+	md=solve(md,'Stressbalance');
+
+	% Update model friction fields accordingly
+	md.friction.coefficient=md.results.StressbalanceSolution.FrictionCoefficient;
+
+	plotmodel(md,'data',md.friction.coefficient)
+
+	% Save model
+	save ./Models/PIG_Control_drag md;
+end
+
+if any(steps==5) %Plot #5
+
+	md = loadmodel('./Models/PIG_Control_drag');
+
+	plotmodel(md,'axis#all','equal',...
+		'xlim#all',[min(md.mesh.x) max(md.mesh.x)]/10^3,...
+		'ylim#all',[min(md.mesh.y) max(md.mesh.y)]/10^3,...
+		'FontSize#all',12,...
+		'data',md.initialization.vel,'title','Observed velocity',...
+		'data',md.results.StressbalanceSolution.Vel,'title','Modeled Velocity',...
+		'data',md.geometry.base,'title','Bed elevation',...
+		'data',md.results.StressbalanceSolution.FrictionCoefficient,'title','Friction Coefficient',...
+		'colorbar#all','on','colorbartitle#1-2','[m/yr]',...
+		'caxis#1-2',([1.5,4000]),...
+		'colorbartitle#3','[m]', 'log#1-2',10);
+end
+
+if any(steps==6)  %Higher-Order #6
+
+	% Load Model
+
+	% Disable inversion
+
+	% Extrude Mesh
+
+	% Set Flowequation
+
+	% Solve
+
+	% Save Model
+
+end
+
+if any(steps==7)  %Plot #7
+
+	mdHO = loadmodel('./Models/PIG_ModelHO');
+	mdSSA = loadmodel('./Models/PIG_Control_drag');
+
+	basal=find(mdHO.mesh.vertexonbase);
+	surf=find(mdHO.mesh.vertexonsurface);
+
+	plotmodel(mdHO,'nlines',3,'ncols',2,'axis#all','equal',...
+						'xlim#all',[min(mdHO.mesh.x) max(mdHO.mesh.x)]/10^3,...
+						'ylim#all',[min(mdHO.mesh.y) max(mdHO.mesh.y)]/10^3,...
+						'FontSize#all',12,...
+						'data',mdHO.initialization.vel,'title','Observed velocity',...
+						'data',(mdHO.results.StressbalanceSolution.Vel(surf)-mdHO.initialization.vel(surf)),'title','(HO-observed) velocities',...
+						'data',mdSSA.results.StressbalanceSolution.Vel,'title','Modeled SSA Velocity',...
+						'data',(mdHO.results.StressbalanceSolution.Vel(surf)-mdSSA.results.StressbalanceSolution.Vel),'title','(HO-SSA) velocities',...
+						'data',mdHO.results.StressbalanceSolution.Vel,'title','Modeled HO surface Velocities',...
+						'data',(mdHO.results.StressbalanceSolution.Vel(surf)-mdHO.results.StressbalanceSolution.Vel(basal)),'title','(HOsurf-HO base) velocities',...
+						'caxis#1',([1.5,4000]),'caxis#3',([1.5,4000]),'caxis#5',([1.5,4000]),...
+						'colorbar#all','on','view#all',2,...
+						'colorbartitle#all','[m/yr]',...
+						'layer#5',1, 'log#1', 10,'log#3', 10,'log#5', 10);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/PigSensitivity/FrontRetreat.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/PigSensitivity/FrontRetreat.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/PigSensitivity/FrontRetreat.exp	(revision 21239)
@@ -0,0 +1,17 @@
+## Name:FrontRetreat
+## Icon:0
+# Points Count Value
+11 1.000000
+# X pos Y pos
+-1626858.6376043619 -327176.4356578548
+-1605190.4936934854 -325911.1425827671
+-1604716.0087903275 -316263.2828852235
+-1607088.4333061168 -312625.5652943464
+-1612465.9288752396 -311676.5954880306
+-1618476.0709819060 -312467.4036599604
+-1624011.7281854146 -313890.8583694341
+-1626858.6376043619 -315788.7979820656
+-1627807.6074106777 -319268.3539385567
+-1628756.5772169936 -322589.7482606619
+-1626858.6376043619 -327176.4356578548
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/PigSensitivity/Help.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/PigSensitivity/Help.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/PigSensitivity/Help.m	(revision 21239)
@@ -0,0 +1,22 @@
+if step==4
+	%Load model
+	md = loadmodel('./Models/PIG_Transient');
+
+	%Change external forcing basal melting rate and surface mass balance)
+	md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+	md.basalforcings.floatingice_melting_rate=25*ones(md.mesh.numberofvertices,1);
+	md.smb.mass_balance=2*md.smb.mass_balance;
+
+	%Define time steps and time span of the simulation
+	md.timestepping.time_step=0.1;
+	md.timestepping.final_time=10;
+
+	%Request additional outputs
+	md.transient.requested_outputs={'default','IceVolume','IceVolumeAboveFloatation'};
+
+	%Solve
+	md=solve(md,'Transient');
+
+	%Save model
+	save ./Models/PIG_SMB md;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/PigSensitivity/runme.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/PigSensitivity/runme.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/PigSensitivity/runme.m	(revision 21239)
@@ -0,0 +1,75 @@
+steps=[1];
+
+if any(steps==1) %Transient Run #1
+
+	md = loadmodel('../Pig/Models/PIG_Control_drag');	
+
+	md.inversion.iscontrol=0;
+	md.transient.ismasstransport=1;
+	md.transient.isstressbalance=1;
+	md.transient.isgroundingline=1;
+	md.transient.ismovingfront=0;
+	md.transient.isthermal=0;
+	
+	pos=find(md.mask.groundedice_levelset<0);
+	md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+	md.basalforcings.floatingice_melting_rate=25*ones(md.mesh.numberofvertices,1);
+	
+	md.timestepping.time_step=0.1;
+	md.timestepping.final_time=10;
+	md.transient.requested_outputs={'default','IceVolume','IceVolumeAboveFloatation'};
+
+	md=solve(md,'Transient');
+
+	% Save model
+	save ./Models/PIG_Transient md;
+end
+
+if any(steps==2) %High Melt #2
+	md = loadmodel('./Models/PIG_Transient');	
+
+	md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+	md.basalforcings.floatingice_melting_rate=60*ones(md.mesh.numberofvertices,1);
+	
+	md.timestepping.time_step=0.1;
+	md.timestepping.final_time=10;
+	md.transient.requested_outputs={'default','IceVolume','IceVolumeAboveFloatation'};
+
+	md=solve(md,'Transient');
+
+	save ./Models/PIG_HighMelt md;
+end
+
+if any(steps==3) %Ice Front retreat
+	md = loadmodel('./Models/PIG_Transient');	
+
+	md2=extract(md,'~FrontRetreat.exp');
+
+	md2=SetMarineIceSheetBC(md2);
+
+	md2.basalforcings.groundedice_melting_rate=zeros(md2.mesh.numberofvertices,1);
+	md2.basalforcings.floatingice_melting_rate=25*ones(md2.mesh.numberofvertices,1);
+
+	md2.timestepping.time_step=0.1;
+	md2.timestepping.final_time=10;
+	md2.transient.requested_outputs={'default','IceVolume','IceVolumeAboveFloatation'};
+
+	md2=solve(md2,'Transient');
+
+	save ./Models/PIG_FrontRetreat md2;
+end
+
+if any(steps==4) %High surface mass balance #3
+	%Load model
+
+	%Change external forcing basal melting rate and surface mass balance)
+	
+	%Refine time steps and time span of the simulation
+
+	%Request additional outputs
+
+	%Solve
+
+	%Save model
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/README.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/README.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/README.txt	(revision 21239)
@@ -0,0 +1,6 @@
+To run the following examples see the accompanying tutorials that can be found within the
+documentation tab on the ISSM webpage. The tutorials were created to be parallel to lectures given,
+but the tutorials are up to date on their version of ISSM. However within the workshop directory you
+can find the lecture tutorials which will give a more in depth technical overview. If more help is
+needed see the Usermanual also found under the documentation tab. If you don't want to complete the
+tutorials in chronological order make sure to see Jakobshavn to run the download script. 
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/SquareIceShelf/DomainOutline.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/SquareIceShelf/DomainOutline.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/SquareIceShelf/DomainOutline.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:DomainOutline
+## Icon:0
+# Points Count  Value
+5 1.000000
+# X pos Y pos
+0 0
+1000000 0
+1000000 1000000
+0 1000000
+0 0
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/SquareIceShelf/Front.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/SquareIceShelf/Front.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/SquareIceShelf/Front.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+-1000 999999
+-1000 1100000
+1100000 1100000
+1100000 999999
+-1000 999999
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/SquareIceShelf/Square.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/SquareIceShelf/Square.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/SquareIceShelf/Square.par	(revision 21239)
@@ -0,0 +1,30 @@
+%Start defining model parameters here
+
+disp('      creating thickness');
+hmin=300;
+hmax=1000;
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+md.geometry.thickness = hmax+(hmin-hmax)*(md.mesh.y-ymin)/(ymax-ymin);
+md.geometry.base      = -md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface   = md.geometry.base+md.geometry.thickness;
+
+disp('      creating drag');
+md.friction.coefficient=200*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('      initial velocity');
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.vel=zeros(md.mesh.numberofvertices,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=paterson((273-20)*ones(md.mesh.numberofvertices,1));
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.damage.D=zeros(md.mesh.numberofvertices,1);
+
+disp('      creating boundary conditions');
+md=SetIceShelfBC(md,'Front.exp');
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/SquareIceShelf/runme.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/SquareIceShelf/runme.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/SquareIceShelf/runme.m	(revision 21239)
@@ -0,0 +1,7 @@
+md=model;
+md=triangle(md,'DomainOutline.exp',100000);
+md=setmask(md,'all','');
+md=parameterize(md,'Square.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname,'np',2);
+md=solve(md,'Stressbalance');
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/ErrorContour.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/ErrorContour.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/ErrorContour.exp	(revision 21239)
@@ -0,0 +1,24 @@
+## Name:ErrorContour
+## Icon:0
+# Points Count Value
+18 1.000000
+# X pos Y pos
+-1642090.6657102096 -328038.7002928721
+-1665417.0018035804 -319119.8070807009
+-1681882.6508106657 -304712.3641995014
+-1666103.0705122089 -245710.4552574461
+-1632485.7037894099 -232675.1497935036
+-1616020.0547823247 -224442.3252899610
+-1598182.2683579824 -200429.9204879618
+-1596810.1309407253 -181219.9966463624
+-1615333.9860736963 -160637.9353875059
+-1559762.4206747836 -147602.6299235635
+-1527517.1913692418 -188080.6837326479
+-1566623.1077610692 -218953.7756209326
+-1533691.8097468987 -229244.8062503609
+-1523400.7791174706 -309514.8451599012
+-1533691.8097468987 -350678.9676776142
+-1594751.9248148398 -371261.0289364707
+-1636602.1160411814 -349306.8302603571
+-1642090.6657102096 -328038.7002928721
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux1.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux1.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux1.exp	(revision 21239)
@@ -0,0 +1,22 @@
+## Name:MassFlux1
+## Icon:0
+# Points Count Value
+16 1.000000
+# X pos Y pos
+-1638344.3538415846 -328022.1178486745
+-1636175.0592654669 -328022.1178486745
+-1634647.1933393457 -327710.7373731936
+-1631836.4701132313 -326087.2311287920
+-1629847.9500851235 -324428.7567974643
+-1626413.2336729371 -321756.7703747695
+-1622074.6445207016 -320098.2960434417
+-1618278.3790124957 -319637.6087291840
+-1614210.9516822749 -319729.7461920356
+-1609601.2007080249 -320466.8458948479
+-1604539.5133637502 -322954.5573918396
+-1602370.2187876324 -324613.0317231673
+-1599206.6641974607 -326824.3308316044
+-1595681.5605112694 -327008.6057573075
+-1593150.7168391321 -327653.5679972683
+-1590710.2604409996 -330786.2417342208
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux10.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux10.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux10.exp	(revision 21239)
@@ -0,0 +1,8 @@
+## Name:MassFlux11
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1539536.1089629673 -171232.8272031187
+-1540384.1546699132 -200614.0179257037
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux11.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux11.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux11.exp	(revision 21239)
@@ -0,0 +1,8 @@
+## Name:MassFlux12
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1559431.5986180613 -236969.7272119786
+-1549112.1094185982 -261719.2194756830
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux12.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux12.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux12.exp	(revision 21239)
@@ -0,0 +1,8 @@
+## Name:MassFlux13
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1572656.1032135738 -292391.9615161452
+-1573651.1418990945 -315407.7936937447
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux13.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux13.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux13.exp	(revision 21239)
@@ -0,0 +1,8 @@
+## Name:MassFlux14
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1579674.9916810417 -321516.2892665596
+-1587436.3185859676 -337140.9687259690
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux14.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux14.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux14.exp	(revision 21239)
@@ -0,0 +1,8 @@
+## Name:MassFlux14
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1579674.9916810417 -321516.2892665596
+-1587436.3185859676 -337140.9687259690
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux15.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux15.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux15.exp	(revision 21239)
@@ -0,0 +1,127 @@
+## Name:
+## Icon:0
+# Points Count Value
+121 25000.000000
+# X pos Y pos
+-1712012.0818103175 -348661.1275967784
+-1711738.9446965172 -348380.8584401013
+-1709339.1962288069 -348358.9741029009
+-1707566.1624406802 -348048.0535193763
+-1706142.6423542583 -346463.0619396989
+-1703644.8906504354 -344421.7875470470
+-1701428.0245438961 -343211.6412474416
+-1699098.6802015656 -343202.0651453367
+-1698767.2671226400 -341251.8958583454
+-1694089.8466347910 -339325.0408948531
+-1691249.4280928215 -338644.2293668062
+-1688271.0930389061 -338423.0784381799
+-1686131.0738047434 -339115.2406933784
+-1682853.5065837551 -340300.2702040364
+-1681648.3224467863 -342890.2203795200
+-1681160.5378740367 -343956.3892846339
+-1681343.2453770319 -345059.2736684235
+-1680476.2008784728 -345129.3389066600
+-1679673.6094558411 -346405.5378093903
+-1679898.5797234357 -347818.5803631411
+-1677215.4777375804 -347397.3820658240
+-1674583.5118423651 -349115.8291018623
+-1675803.3920552148 -352985.6713725598
+-1672935.8509424068 -352801.1873251720
+-1668529.5198238282 -353048.3463822120
+-1666370.5689502691 -354473.4893832008
+-1665423.6161039397 -356733.4691418489
+-1662720.0686237188 -357334.8975107344
+-1660276.4961961196 -357869.6209268258
+-1657124.6115999895 -361080.6428832713
+-1655993.6074009922 -363193.2597271361
+-1653688.2093358042 -364017.9494011777
+-1654435.7188006472 -361506.6539926908
+-1652050.9793420888 -355295.4585798742
+-1649364.4081354018 -349945.5944371450
+-1645761.7354861272 -350839.5079576963
+-1645996.5509334437 -351783.7951824765
+-1645345.5744557772 -351250.5634369315
+-1644300.2406060672 -352221.4198542684
+-1644633.1139884400 -348521.7302174515
+-1647057.7191411837 -348406.3266729190
+-1645415.0137059502 -341247.9400814587
+-1644395.7076754270 -340417.8557739360
+-1644169.8943326229 -336477.7151767056
+-1643216.0658811626 -334392.3056475453
+-1641434.0471865973 -334447.2336099123
+-1641190.7738541283 -334332.2252321915
+-1641050.9552025823 -333796.1902735520
+-1639787.1689887117 -331073.8439645328
+-1637807.1154673321 -329711.1825533187
+-1635805.1587214153 -327827.0308139678
+-1632065.9795259857 -326063.4189332099
+-1625929.4636559838 -324999.2470617331
+-1619584.9279456623 -324892.7557348280
+-1615193.9710026928 -325097.1546172730
+-1611296.7956007582 -324995.1262699560
+-1608304.4173934418 -325211.0183405159
+-1603316.9037486394 -326424.5673739603
+-1600245.1111844976 -328836.3685103582
+-1595818.7639296530 -331148.7367850624
+-1591649.1976614639 -334787.7632693424
+-1588371.5600852505 -337840.7799059978
+-1587648.7608976758 -343365.9382903088
+-1587132.8425864622 -345049.3782468919
+-1586012.7810109658 -347625.9740446581
+-1588260.6470941922 -349356.1732009141
+-1584626.3352827206 -352498.3947002917
+-1584121.7278491815 -354575.2387267592
+-1584906.9380743054 -356537.0120279597
+-1585446.5634405916 -359133.6460951389
+-1586894.3150289655 -361098.6217195836
+-1585768.2162689434 -363527.8170254802
+-1584807.6500740163 -365694.8871387623
+-1585744.0045738907 -368358.0113804646
+-1585152.9531241022 -369694.9777909298
+-1584499.3876485692 -371017.3807505022
+-1585456.9434211247 -372944.8898924028
+-1429208.6248950495 -363616.6734221856
+-1415050.5145378630 -326851.1264040734
+-1413047.7406149551 -325411.1419014899
+-1405442.9810691341 -295790.2533492565
+-1388007.7873070226 -266002.2718567938
+-1375120.7873420289 -286146.6923060659
+-1373971.2210923850 -285345.4403176561
+-1346034.9931278315 -322527.8743193840
+-1351274.5360716779 -327267.6902373450
+-1382747.3419384742 -297522.4999399224
+-1382639.2845126297 -296126.1700367680
+-1382479.2357768724 -295804.4343703665
+-1397758.7640077863 -316499.0520702488
+-1408929.4248104726 -362684.2359936420
+-1202573.2098436793 -350320.7957165864
+-1192371.9994205239 -349816.1301302491
+-1233144.4335198263 -292276.3631183850
+-1232225.6096719459 -288608.8406540032
+-1360692.9373680721 -108664.8182541504
+-1424223.8165527256 -81531.7934136631
+-1403445.8481024427 -45960.5859752788
+-1478312.1378749039 59339.3203815984
+-1513118.6444103392 3225.4273728387
+-1524169.2804273698 11860.8708815790
+-1504759.9852699745 36302.7657860445
+-1528911.0294425790 62751.8076344339
+-1622627.2364271644 61937.4929792271
+-1647011.3496706884 32864.6807476235
+-1637527.3859760596 19912.7371761968
+-1650069.2631712460 30042.0704865309
+-1724734.6043381831 -61378.0233897057
+-1718614.9048978437 -69045.3133313945
+-1758091.3164752426 -113926.3236823874
+-1754430.7541207569 -116894.8054778867
+-1760233.4203404333 -126776.6398906443
+-1757170.3120773330 -130521.7753713153
+-1762186.6328915418 -136423.2047200473
+-1765126.7323215308 -132420.4516091067
+-1769785.4415677825 -135199.8713571306
+-1774818.6171028516 -132429.3647437230
+-1793280.1507095622 -153411.6536596067
+-1711636.5537849038 -224740.3773715630
+-1729008.9305659365 -335286.5679692774
+-1712012.0818103175 -348661.1275967784
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux2.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux2.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux2.exp	(revision 21239)
@@ -0,0 +1,171 @@
+## Name:MassFlux2
+## Icon:0
+# Points Count Value
+165 1.000000
+# X pos Y pos
+-1609993.8450579999 -266189.3103270000
+-1609790.4465310001 -265898.8271340000
+-1609587.0480040000 -265608.3439410000
+-1609383.6494770001 -265317.8607480000
+-1609136.7086169999 -265274.3184150000
+-1608933.3100900000 -264983.8352220000
+-1608686.3692300001 -264940.2928890000
+-1608236.0298430000 -264606.2673630000
+-1607989.0889830000 -264562.7250310000
+-1607785.6904559999 -264272.2418380000
+-1607538.7495960000 -264228.6995050000
+-1607291.8087370000 -264185.1571720000
+-1607044.8678770000 -264141.6148390000
+-1606797.9270170000 -264098.0725060000
+-1606304.0452970001 -264010.9878410000
+-1606057.1044369999 -263967.4455080000
+-1605810.1635769999 -263923.9031750000
+-1605563.2227179999 -263880.3608420000
+-1605316.2818580000 -263836.8185100000
+-1605069.3409980000 -263793.2761770000
+-1604778.8578049999 -263996.6747040000
+-1604531.9169449999 -263953.1323710000
+-1604038.0352250000 -263866.0477060000
+-1603791.0943660000 -263822.5053730000
+-1603500.6111730000 -264025.9039000000
+-1603253.6703130000 -263982.3615680000
+-1602963.1871199999 -264185.7600950000
+-1602716.2462599999 -264142.2177620000
+-1602425.7630680001 -264345.6162900000
+-1601888.3390150000 -264505.4724840000
+-1601641.3981550001 -264461.9301510000
+-1601350.9149630000 -264665.3286790000
+-1601060.4317699999 -264868.7272060000
+-1600479.4653840000 -265275.5242610000
+-1600188.9821919999 -265478.9227880000
+-1599898.4989990001 -265682.3213160000
+-1599608.0158060000 -265885.7198430000
+-1599027.0494210001 -266292.5168980000
+-1598736.5662280000 -266495.9154250000
+-1598446.0830349999 -266699.3139520000
+-1598402.5407030000 -266946.2548130000
+-1598605.9392299999 -267236.7380050000
+-1598518.8545639999 -267730.6197260000
+-1598722.2530910000 -268021.1029190000
+-1598678.7107579999 -268268.0437790000
+-1598635.1684250000 -268514.9846390000
+-1598591.6260919999 -268761.9254990000
+-1598795.0246190000 -269052.4086920000
+-1598751.4822869999 -269299.3495520000
+-1598707.9399540001 -269546.2904130000
+-1598620.8552880001 -270040.1721330000
+-1598577.3129550000 -270287.1129930000
+-1598533.7706220001 -270534.0538530000
+-1598737.1691490000 -270824.5370460000
+-1598693.6268170001 -271071.4779060000
+-1598650.0844840000 -271318.4187660000
+-1598606.5421509999 -271565.3596270000
+-1598316.0589580000 -271768.7581540000
+-1598228.9742930001 -272262.6398740000
+-1597938.4911000000 -272466.0384020000
+-1597648.0079069999 -272669.4369290000
+-1597067.0415220000 -273076.2339840000
+-1597023.4991890001 -273323.1748440000
+-1596979.9568560000 -273570.1157040000
+-1596936.4145229999 -273817.0565640000
+-1596892.8721900000 -274063.9974240000
+-1596805.7875250001 -274557.8791450000
+-1596762.2451919999 -274804.8200050000
+-1596718.7028590001 -275051.7608650000
+-1596675.1605260000 -275298.7017250000
+-1596631.6181930001 -275545.6425850000
+-1596341.1350010000 -275749.0411130000
+-1596297.5926679999 -275995.9819730000
+-1595963.5671420000 -276446.3213600000
+-1595920.0248090001 -276693.2622210000
+-1595629.5416170000 -276896.6607480000
+-1595339.0584239999 -277100.0592750000
+-1595048.5752310001 -277303.4578030000
+-1594467.6088459999 -277710.2548570000
+-1594177.1256530001 -277913.6533850000
+-1593886.6424600000 -278117.0519120000
+-1593392.7607410001 -278029.9672470000
+-1593102.2775480000 -278233.3657740000
+-1592898.8790209999 -277942.8825810000
+-1592695.4804940000 -277652.3993880000
+-1592201.5987740001 -277565.3147220000
+-1591998.2002470000 -277274.8315290000
+-1592041.7425800001 -277027.8906690000
+-1591838.3440530000 -276737.4074760000
+-1591881.8863860001 -276490.4666160000
+-1591722.0301910001 -275953.0425630000
+-1591765.5725240000 -275706.1017030000
+-1591562.1739970001 -275415.6185100000
+-1591605.7163300000 -275168.6776500000
+-1591402.3178030001 -274878.1944570000
+-1591198.9192760000 -274587.7112640000
+-1591242.4616090001 -274340.7704040000
+-1591039.0630820000 -274050.2872110000
+-1591082.6054150001 -273803.3463510000
+-1590922.7492209999 -273265.9222970000
+-1590966.2915530000 -273018.9814370000
+-1590762.8930259999 -272728.4982440000
+-1590806.4353590000 -272481.5573840000
+-1590603.0368319999 -272191.0741910000
+-1590399.6383050000 -271900.5909980000
+-1590443.1806379999 -271653.6501380000
+-1590239.7821110000 -271363.1669450000
+-1590036.3835839999 -271072.6837520000
+-1590123.4682499999 -270578.8020320000
+-1589920.0697230001 -270288.3188390000
+-1589716.6711960000 -269997.8356460000
+-1589760.2135280001 -269750.8947860000
+-1589556.8150010000 -269460.4115930000
+-1589600.3573340001 -269213.4707330000
+-1589440.5011400001 -268676.0466800000
+-1589484.0434729999 -268429.1058190000
+-1589280.6449460001 -268138.6226260000
+-1589077.2464190000 -267848.1394340000
+-1588873.8478920001 -267557.6562410000
+-1588423.5085050000 -267223.6307150000
+-1588220.1099779999 -266933.1475220000
+-1587973.1691180000 -266889.6051890000
+-1587726.2282580000 -266846.0628560000
+-1587479.2873980000 -266802.5205230000
+-1586985.4056780001 -266715.4358580000
+-1586738.4648190001 -266671.8935250000
+-1586491.5239589999 -266628.3511920000
+-1586244.5830989999 -266584.8088590000
+-1585997.6422389999 -266541.2665270000
+-1585750.7013790000 -266497.7241940000
+-1585256.8196590000 -266410.6395280000
+-1585009.8787990001 -266367.0971960000
+-1584762.9379400001 -266323.5548630000
+-1584472.4547470000 -266526.9533900000
+-1584428.9124139999 -266773.8942500000
+-1584138.4292210001 -266977.2927780000
+-1583804.4036960001 -267427.6321650000
+-1583760.8613630000 -267674.5730250000
+-1583470.3781699999 -267877.9715530000
+-1583179.8949770001 -268081.3700800000
+-1583136.3526450000 -268328.3109400000
+-1582845.8694519999 -268531.7094680000
+-1582802.3271190000 -268778.6503280000
+-1582468.3015940001 -269228.9897150000
+-1582424.7592610000 -269475.9305750000
+-1582134.2760679999 -269679.3291030000
+-1582090.7337350000 -269926.2699630000
+-1581800.2505419999 -270129.6684900000
+-1581509.7673500001 -270333.0670180000
+-1581219.2841570000 -270536.4655450000
+-1581132.1994910000 -271030.3472650000
+-1580841.7162990000 -271233.7457930000
+-1580551.2331060001 -271437.1443200000
+-1580507.6907730000 -271684.0851800000
+-1580217.2075799999 -271887.4837080000
+-1580173.6652470001 -272134.4245680000
+-1579839.6397220001 -272584.7639550000
+-1579796.0973890000 -272831.7048160000
+-1579505.6141959999 -273035.1033430000
+-1579462.0718640001 -273282.0442030000
+-1579418.5295309999 -273528.9850630000
+-1579128.0463380001 -273732.3835910000
+-1579084.5040050000 -273979.3244510000
+-1578750.4784800000 -274429.6638380000
+-1578706.9361469999 -274676.6046980000
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux3.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux3.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux3.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:MassFlux4
+## Icon:0
+# Points Count Value
+4 1.000000
+# X pos Y pos
+-1605390.0162510793 -209047.7381093690
+-1592454.5133393104 -208141.0538114636
+-1574086.0992045982 -208918.2117810968
+-1560891.8862345938 -210472.5277203633
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux4.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux4.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux4.exp	(revision 21239)
@@ -0,0 +1,8 @@
+## Name:MassFlux5
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1660144.8928561222 -319887.0521198768
+-1630434.8468677206 -298387.4931837295
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux5.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux5.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux5.exp	(revision 21239)
@@ -0,0 +1,8 @@
+## Name:MassFlux6
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1635925.9455644884 -157610.4872330402
+-1625288.0602165582 -120861.2411445094
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux6.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux6.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux6.exp	(revision 21239)
@@ -0,0 +1,8 @@
+## Name:MassFlux7
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1642052.5574172530 -95522.7999921589
+-1610982.9267521810 -78949.7704229522
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux7.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux7.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux7.exp	(revision 21239)
@@ -0,0 +1,8 @@
+## Name:MassFlux8
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1605014.5365509845 -81707.1563440522
+-1566756.1417461073 -82763.2940976564
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux8.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux8.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux8.exp	(revision 21239)
@@ -0,0 +1,8 @@
+## Name:MassFlux9
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1555378.1885604258 -45179.9925785796
+-1550583.9034971579 -68415.0231578706
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux9.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux9.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/MassFluxes/MassFlux9.exp	(revision 21239)
@@ -0,0 +1,8 @@
+## Name:MassFlux10
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1565010.6613481115 -111795.8673475993
+-1537474.3225972611 -138442.9656094175
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/runme.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/runme.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/examples/UncertaintyQuantification/runme.m	(revision 21239)
@@ -0,0 +1,312 @@
+%PIG Uncertainty Quantification Application
+steps=[1]; 
+
+if any(steps==1) 
+	disp('   Step 1: plot flux gates'); 
+	
+	md = loadmodel('../Pig/Models/PIG_Control_drag');
+
+	texts=cell(1,13);
+	textpositions=cell(1,13);
+
+	for i=1:13,
+		contour=expread(['./MassFluxes/MassFlux' num2str(i) '.exp']);
+		textpositions{i}=[contour.x(end) contour.y(end)];
+	end
+
+	plotmodel(md,'data',md.results.StressbalanceSolution.Vel,'log',10,'expdisp',...
+		{'MassFluxes/MassFlux1.exp','MassFluxes/MassFlux2.exp',...
+		'MassFluxes/MassFlux3.exp','MassFluxes/MassFlux4.exp',...
+		'MassFluxes/MassFlux5.exp','MassFluxes/MassFlux6.exp',...
+		'MassFluxes/MassFlux7.exp','MassFluxes/MassFlux8.exp',...
+		'MassFluxes/MassFlux9.exp','MassFluxes/MassFlux10.exp',...
+		'MassFluxes/MassFlux11.exp','MassFluxes/MassFlux12.exp',...
+		'MassFluxes/MassFlux13.exp'},...
+		'expstyle',{'k-','k-','k-','k-','k-','k-','k-',...
+		'k-','k-','k-','k-','k-','k-'},'linewidth',2,...
+		'text',{'1','2','3','4','5','6','7',...
+		'8','9','10','11','12','13'},...
+		'textposition',textpositions);
+
+end
+if any(steps==2) 
+	disp('   Step 2: compute cross overs from CRESIS'); 
+	
+	md = loadmodel('../Pig/Models/PIG_Control_drag');
+
+	%load cross overs: CRESIS McCord Antarctica, 2009 (courtesy of John Paden)
+	load('../Data/CrossOvers2009.mat');
+	
+	%interpolate cross over errors over our mesh vertices
+	DeltaHH=InterpFromMeshToMesh2d(index,x,y,dhh,md.mesh.x,md.mesh.y);
+
+	%avoid NaN values
+	pos=find(isnan(DeltaHH)); DeltaHH(pos)=0;
+
+	%filter out unrealistic error ranges
+	flags=ContourToNodes(md.mesh.x,md.mesh.y,'ErrorContour.exp',1);
+	pos=find(~flags); DeltaHH(pos)=0; 
+
+	%avoid large unrealistic values
+	pos=find(DeltaHH>1); DeltaHH(pos)=1;
+	pos=find(DeltaHH<-1); DeltaHH(pos)=-1;
+	
+	%transform into absolute errors and setup a minimum error everywhere.
+	DeltaHH=abs(DeltaHH);
+	pos=find(DeltaHH==0); pos2=find(DeltaHH~=0); 
+	DeltaHH(pos)=min(DeltaHH(pos2));
+
+	save Models/PIG.CrossOvers DeltaHH
+
+end
+if any(steps==3) 
+	disp('   Step 3: sampling analysis'); 
+	
+	%load model and cross over errors
+	md = loadmodel('../Pig/Models/PIG_Control_drag');
+	load -mat Models/PIG.CrossOvers
+
+	%partition the mesh
+	md.qmu.numberofpartitions=50;
+	md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,...
+	'weighting','on');
+	md.qmu.partition=md.qmu.partition-1; %switch partition to c-indexing
+
+	%make DeltaHH into our 3 sigma deviation
+	DeltaHH=DeltaHH/6; %2 (to transform DeltaHH into a radius) x 3 (for 3 sigma)
+	DeltaHH_on_partition=AreaAverageOntoPartition(md,DeltaHH);
+	DeltaHH_on_grids=DeltaHH_on_partition(md.qmu.partition+1); %just to check in case
+	
+	md.qmu.variables.thickness=normal_uncertain('scaled_Thickness',1,1);
+	md.qmu.variables.thickness.stddev=DeltaHH_on_partition;
+
+	%responses
+	md.qmu.responses.MassFlux1=response_function('indexed_MassFlux_1',[],...
+		[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux2=response_function('indexed_MassFlux_2',[],...
+		[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]); %grounding line
+	md.qmu.responses.MassFlux3=response_function('indexed_MassFlux_3',[],...
+		[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux4=response_function('indexed_MassFlux_4',[],...
+		[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux5=response_function('indexed_MassFlux_5',[],...
+		[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux6=response_function('indexed_MassFlux_6',[],...
+		[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux7=response_function('indexed_MassFlux_7',[],...
+		[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux8=response_function('indexed_MassFlux_8',[],...
+		[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux9=response_function('indexed_MassFlux_9',[],...
+		[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux10=response_function('indexed_MassFlux_10',[],...
+		[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux11=response_function('indexed_MassFlux_11',[],...
+		[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux12=response_function('indexed_MassFlux_12',[],...
+		[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux13=response_function('indexed_MassFlux_13',[],...
+		[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+	%mass flux profiles
+	md.qmu.mass_flux_profiles={'MassFlux1.exp',...
+	                           'MassFlux2.exp',...
+	                           'MassFlux3.exp',...
+	                           'MassFlux4.exp',...
+	                           'MassFlux5.exp',...
+	                           'MassFlux6.exp',...
+	                           'MassFlux7.exp',...
+	                           'MassFlux8.exp',...
+	                           'MassFlux9.exp',...
+	                           'MassFlux10.exp',...
+	                           'MassFlux11.exp',...
+	                           'MassFlux12.exp',...
+	                           'MassFlux13.exp'};
+	md.qmu.mass_flux_profile_directory='../MassFluxes/';
+
+	%%  sampling analysis
+	md.qmu.method     =dakota_method('nond_samp');
+	md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+	'seed',1234,...
+	'samples',30,...
+	'sample_type','lhs'); %random or lhs
+
+	%%  a variety of parameters
+	md.qmu.params.direct=true;
+	md.qmu.params.analysis_driver='';
+	md.qmu.params.analysis_components='';
+	md.qmu.params.evaluation_concurrency=1;
+	md.qmu.params.tabular_graphics_data=true;
+
+	md.stressbalance.restol=10^-5; %tighten tolerances for UQ analyses
+
+	%Turn off verbosity
+	md.verbose=verbose(0);
+	
+	%Here, we choose to run with 4 processors, 3 for DAKOTA
+	% while one serves as the master
+	md.cluster=generic('name',oshostname,'np',4);
+
+	%Dakota runs in parallel with a master/slave configuration.
+	% At least 2 cpu's are needed to run the UQ
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=md.cluster.np-1;
+
+	%Turn dakota on
+	md.qmu.isdakota=1; md.inversion.iscontrol=0;
+	md=solve(md,'Stressbalance','overwrite','y');
+
+	save ./Models/PIG.Sampling md; 
+end
+if any(steps==4) 
+	disp('   Step 4: sensitivity analysis'); 
+	
+	%load model
+	md = loadmodel('../Pig/Models/PIG_Control_drag');
+
+	%partition the mesh
+	md.qmu.numberofpartitions=10;
+	md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');
+	md.qmu.partition=md.qmu.partition-1; %switch partition to c-indexing
+
+	%all types of variables and responses: scaled_Thickness, indexed_MassFlux_i,MaxVel,nodal_DragCoefficient_i. scaled variables are expanded.
+
+	%variables
+	md.qmu.variables.DragCoefficient=normal_uncertain(...
+	'scaled_FrictionCoefficient',1,0.05);
+	md.qmu.variables.rheology_B=normal_uncertain(...
+	'scaled_MaterialsRheologyB',1,0.05);
+	md.qmu.variables.Thickness=normal_uncertain('scaled_Thickness',1,0.05);
+
+	%responses
+	md.qmu.responses.MassFlux1=response_function('indexed_MassFlux_1',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux2=response_function('indexed_MassFlux_2',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux3=response_function('indexed_MassFlux_3',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux4=response_function('indexed_MassFlux_4',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux5=response_function('indexed_MassFlux_5',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux6=response_function('indexed_MassFlux_6',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux7=response_function('indexed_MassFlux_7',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux8=response_function('indexed_MassFlux_8',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux9=response_function('indexed_MassFlux_9',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux10=response_function('indexed_MassFlux_10',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux11=response_function('indexed_MassFlux_11',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux12=response_function('indexed_MassFlux_12',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+	md.qmu.responses.MassFlux13=response_function('indexed_MassFlux_13',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+	%mass flux profiles
+	md.qmu.mass_flux_profiles={'MassFlux1.exp',...
+	                           'MassFlux2.exp',...
+	                           'MassFlux3.exp',...
+	                           'MassFlux4.exp',...
+	                           'MassFlux5.exp',...
+	                           'MassFlux6.exp',...
+	                           'MassFlux7.exp',...
+	                           'MassFlux8.exp',...
+	                           'MassFlux9.exp',...
+	                           'MassFlux10.exp',...
+	                           'MassFlux11.exp',...
+	                           'MassFlux12.exp',...
+	                           'MassFlux13.exp'};
+	md.qmu.mass_flux_profile_directory='../MassFluxes/';
+
+	%method: local reliability
+	md.qmu.method     =dakota_method('nond_l');
+	md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+	'output','quiet');
+
+	%parameters
+	md.qmu.params.direct=true;
+	md.qmu.params.analysis_driver='';
+	md.qmu.params.analysis_components='';
+	md.qmu.params.evaluation_concurrency=1;
+	md.qmu.params.tabular_graphics_data=false;
+
+	md.stressbalance.restol=10^-5; %tighten for qmu analyses
+
+	%Here, we choose to run with 2 processors, 1 for DAKOTA
+	% while one serves as the master
+	md.cluster=generic('name',oshostname,'np',2);
+	
+	%Dakota runs in parallel with a master/slave configuration.
+	% At least 2 cpu's are needed to run the UQ
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=md.cluster.np-1;
+
+	%Clear results and turn dakota on
+	md.results=[];
+	md.qmu.isdakota=1; md.inversion.iscontrol=0;
+	md.verbose=verbose('qmu',true);
+	md=solve(md,'Stressbalance','overwrite','y');
+	
+	save ./Models/PIG.Sensitivity md; 
+end
+if any(steps==5) 
+	disp('   Step 5: plot partition');
+	
+	%load model
+	md = loadmodel('./Models/PIG.Sampling');
+	
+	plotmodel(md,'data','mesh','partitionedges','on',...
+	'linewidth',2, 'axis#all','image','unit','km','colorbar','off',...
+	'title','Partition Edges on ISSM mesh','grid','on');
+
+end 
+if any(steps==6) 
+	disp('   Step 6: plot histogram'); 
+	
+	%load model
+	md = loadmodel('./Models/PIG.Sampling');
+
+	%which profile are we looking at?
+	index=1; 	
+
+	%retrieve results for the specific profile, mass flux in m^3 water equiv/s
+	result=md.results.dakota.dresp_dat(md.qmu.numberofpartitions+index);
+	result.sample=result.sample/1e12*60*60*24*365;
+		
+	%plot histogram
+	plot_hist_norm(result,'cdfleg','off','cdfplt','off','nrmplt','off',...
+	'xlabelplt','M (Gt/yr)','ylabelplt','F','FontSize',8,'FaceColor',...
+	'none','EdgeColor','red');
+
+end
+if any(steps==7) 
+	disp('   Step 7: plot sensitivity'); 
+	
+	%load model
+	md = loadmodel('./Models/PIG.Sensitivity');
+	%copy dakota results into model qmu
+	md.qmu.results=md.results.dakota;
+
+	%which profile are we looking at?
+	index=1; 	
+
+	%To plot sensitivities
+	sa=md.results.dakota.dresp_out(index).sens(1:10); sa=sa(md.qmu.partition+1)/1e12*60*60*24*365;
+	sb=md.results.dakota.dresp_out(index).sens(11:20); sb=sb(md.qmu.partition+1)/1e12*60*60*24*365;
+	sh=md.results.dakota.dresp_out(index).sens(21:30); sh=sh(md.qmu.partition+1)/1e12*60*60*24*365;
+
+	plotmodel(md,'data',sh,'data',sa,'data',sb,'expdisp#all',...
+		['MassFluxes/MassFlux' num2str(index) '.exp'],...
+		'expstyle#all','b-','linewidth#all',2,...
+		'nlines',3,'ncols',1, 'axis#all','image',...
+		'colorbar#all','on','colorbarfontsize#all',10,...
+		'colorbartitle#1','S_{H}', 'colorbartitle#2','S_{\alpha}',...
+		'colorbartitle#3','S_{B}','unit#all','km','figure',1,...
+		'title','Sensitivities: H, \alpha, B');
+
+	%To plot importance factors
+	ifa=importancefactors(md,'scaled_FrictionCoefficient',['indexed_MassFlux_' num2str(index)]);
+	ifb=importancefactors(md,'scaled_MaterialsRheologyB',['indexed_MassFlux_' num2str(index)]);
+	ifh=importancefactors(md,'scaled_Thickness',['indexed_MassFlux_' num2str(index)]);
+
+	plotmodel(md,'data',ifh,'data',ifa,'data',ifb,'expdisp#all',...
+		['MassFluxes/MassFlux' num2str(index) '.exp'],...
+		'expstyle#all','b-','linewidth#all',2,'log#all',10,...
+		'nlines',3,'ncols',1, 'axis#all','image','caxis#all',[1e-10 1],...
+		'colorbar#all','on','colorbarfontsize#all',10,...
+		'colorbartitle#1','If_{H}', 'colorbartitle#2','If_{\alpha}',...
+		'colorbartitle#3','If_{B}','unit#all','km','figure',2,...
+		'title','Importance Factors: H, \alpha, B');
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/README
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/README	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/README	(revision 21239)
@@ -0,0 +1,22 @@
+To install all the ISSM libraries:
+
+1/ go into each library folder and type install.sh . 
+
+2/ There is no guarantee the compilation will work on all systems. A lot of tweaking of the 
+install.sh files will probably be involved. Especially, the configuration part of the install.
+
+Update: 
+now install.sh can call configure.sh for the most complex libraries, ie Petsc and Dakota. For those 
+libraries, go in the configs/ directory, pick up the correct configuration file and copy it to the top 
+folder of the library compilation. Tweak if necessary.
+
+machine characteristics:
+
+-astrid: linux 64 bits
+-castor: altix 64 bits
+-cosmos: JPL cluster 32 bits
+-macmathieu: iMac 24" 2009 32 bits
+-macbookmathieu: MacBook Pro 13" 2010; OS X 10.6.7; 2.4GHz Intel Core 2 Duo 64 bits
+-maceric: MacBook Pro 15" 2010 32 bits
+-ogive: Mac Pro 2008 32 bits
+-pleiades: AMES cluster
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adic/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adic/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adic/install.sh	(revision 21239)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+#Erase install
+rm -rf source build install
+
+#Download code
+hg clone http://mercurial.mcs.anl.gov/ad/ADIC -r 631 source
+
+#Then update to -r 631
+cd source 
+hg update -r 631
+
+#Configure and Compile
+cd source
+./autogen.sh
+./aclocal
+cd ..
+mkdir build
+cd build
+../source/configure \
+	--with-rose=$ISSM_DIR/externalpackages/rose/install \
+	--with-openanalysis=$ISSM_DIR/externalpackages/openanalysis/openanalysis/x86_64-Linux \
+	--with-boost=$ISSM_DIR/externalpackages/boost/install \
+	--with-xerces=$ISSM_DIR/externalpackages/xerces/src \
+	--with-xaifbooster=$ISSM_DIR/externalpackages/xaifbooster/xaifBooster \
+	--with-colpack=$ISSM_DIR/externalpackages/colpack/install\
+	--prefix=$ISSM_DIR/externalpackages/adic/install 
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adic/tests/notes
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adic/tests/notes	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adic/tests/notes	(revision 21239)
@@ -0,0 +1,143 @@
+mini1.c is:
+7:37 PM
+#include <math.h>
+
+void mini1(double *y, double *x)
+{
+ int i;
+  for (i = 0; i < 2; i=i+1) {
+    y[i] = x[i] + sin(x[i]*x[i]);
+	 }
+	 }
+	 Eric Larour 7:37 PM 
+	 ok
+	 Sri Hari Krishna Narayanan 7:37 PM 
+	 If you cat any of  mini1_grad_length.ad.c mini1_dense_forward.ad.c mini1_sparse_forward.ad.c
+	 7:37 PM
+	 You should be able to see the forward mode output
+	 Eric Larour 7:38 PM 
+	 ok
+	 Sri Hari Krishna Narayanan 7:38 PM 
+	 First the makefile compiles mini1_grad_length.ad.c with a runtime library to estimate the number of columns in the Jacobian.
+	 Eric Larour 7:39 PM 
+	 ok, makes sense
+	 Sri Hari Krishna Narayanan 7:39 PM 
+	 That generates the output : ADIC_GRADVEC_LENGTH 2
+	 Eric Larour 7:39 PM 
+	 where?
+	 7:39 PM
+	 ok, sorry, got it
+	 Sri Hari Krishna Narayanan 7:40 PM 
+	 The value is also written to : runtime_dense/adic_gradvec_length.h
+	 Eric Larour 7:40 PM 
+	 where is the main for this?
+	 7:40 PM
+	 oh, it creates a .h directly
+	 Sri Hari Krishna Narayanan 7:40 PM 
+	 mini1_driver.c
+	 7:40 PM
+	 yes.
+	 7:40 PM
+	 The runtime library takes care of that
+	 7:40 PM
+	 There is alot or #defined compilation going on
+	 Eric Larour 7:41 PM 
+	 wraps around mini1_forward_array.exe ?
+	 Sri Hari Krishna Narayanan 7:41 PM 
+	 /*intermediary: */ creates mini1_grad_length.exe
+	 Eric Larour 7:41 PM 
+	 Isn't that the Makefile? what is the runtime library ?
+	 7:42 PM
+	 ok, the Makefile launches the runtime library
+	 Sri Hari Krishna Narayanan 7:42 PM 
+	 Makefile copies versions of the runtime library (bunch of macros in most cases)
+	 Eric Larour 7:42 PM 
+	 what is the name of the runtime library?
+	 Sri Hari Krishna Narayanan 7:43 PM 
+	 form $adicsrc/runtime/
+	 7:43 PM
+	 There are multiple versions
+	 Eric Larour 7:44 PM 
+	 ah, I see the grad_length dir
+	 7:44 PM
+	 is all that stuff compiled into adic2?
+	 Sri Hari Krishna Narayanan 7:44 PM 
+	 The one used to estimate the grad_lengh is :  $adicinstall/grad_length
+	 7:44 PM
+	 yes
+	 Eric Larour 7:44 PM 
+	 ok, makes sense
+	 Sri Hari Krishna Narayanan 7:45 PM 
+	 For the next step though
+	 7:45 PM
+	 the 'dense' case
+	 7:45 PM
+	 the runtime library cannot be precompiled
+	 7:45 PM
+	 the .h file has been created in the previous step
+	 7:46 PM
+	 So we copy the runtime/dense to the local directory
+	 Eric Larour 7:46 PM 
+	 because we can't guess the size of the gradient right?
+	 Sri Hari Krishna Narayanan 7:46 PM 
+	 and copy the .h into it
+	 7:46 PM
+	 correct
+	 Eric Larour 7:46 PM 
+	 nice
+	 Sri Hari Krishna Narayanan 7:46 PM 
+	 Then we compile it and create a .la file
+	 7:46 PM
+	 which is then linked to create mini1_dense_forward.exe
+	 7:47 PM
+	 When we run this, it also happens to run the analyticla derivates (the driver is built this way)
+	 7:47 PM
+	 Also diveded differences
+	 7:47 PM
+	 So you get the output:
+	 7:47 PM
+	 Analytic result is:       [1.968912]
+	 Analytic result is:     [1.968912]  
+	 DD result is:           [1.968997]      error {-8.45e-05}
+	 DD result is:           [1.968997]      error {-8.45e-05}
+	 AD result is:           [1.968912]      error {0.000000}
+	 AD result is:           [1.968912]      error {0.000000}
+	 7:48 PM
+	 The next step is to detect sparsity in the Jacobian and possibly compress it using Colpack (create a seed matrix).
+	 7:49 PM
+	 The gradient computation takes place on the compressed matrix.
+	 7:49 PM
+	 The output : ADIC_GRADVEC_LENGTH 1
+	 7:49 PM
+	 means that the seed matrix  has one column.
+	 7:50 PM
+	 After the calculation of the elements of the compressed matrix, it is then extracted to form the 'full Jacobian' (sorry if these tems are inexact).
+	 7:51 PM
+	 The extracted output is then printed out:
+	 7:51 PM
+	 AD result is:           [1.968912]
+	 AD result is:           [1.968912]
+	 7:51 PM
+	 And we are done!
+	 Eric Larour 7:51 PM 
+	 This is a lot for me to take in at once  I'm going to have to look through the makefile,
+	 7:51 PM
+	 and your explanations, and figure it out
+	 Sri Hari Krishna Narayanan 7:51 PM 
+	 Sure.
+	 Eric Larour 7:52 PM 
+	 I'll get back to you as soon as I have injested all of this
+	 Sri Hari Krishna Narayanan 7:52 PM 
+	 No problem.
+	 Eric Larour 7:52 PM 
+	 I'll probably have a million questions 
+	 Sri Hari Krishna Narayanan 7:52 PM 
+	 This is an exhaustive test
+	 7:52 PM
+	 FOr m ost purposes, we wil not need all of this
+	 Eric Larour 7:52 PM 
+	 this is really nice, I'm pretty exited !
+	 Sri Hari Krishna Narayanan 7:52 PM 
+	 Jean belives for example the the grad_length version is pointless. I find it interesting though.
+	 7:53 PM
+	 Okay. There are more interesting examples we can try
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adjoinablempi/install-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adjoinablempi/install-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adjoinablempi/install-macosx64.sh	(revision 21239)
@@ -0,0 +1,29 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src  install
+
+#Mercurial cloning: 
+hg clone http://mercurial.mcs.anl.gov//ad/AdjoinableMPI src
+
+export C_INCLUDE_PATH=:/usr/include/sys/:$C_INCLUDE_PATH
+
+#Configure adjoinablempi
+cd src
+autoreconf -fi
+
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/adjoinablempi/install" \
+	--libdir="$ISSM_DIR/externalpackages/adjoinablempi/install/lib" \
+	--with-mpi-root="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-requestOnTrace
+
+#Compile adjoinablempi 
+make clean
+if [ $# -eq 0 ]; then
+	make 
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adjoinablempi/install-pleaides-gcc.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adjoinablempi/install-pleaides-gcc.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adjoinablempi/install-pleaides-gcc.sh	(revision 21239)
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src  install
+
+#Mercurial cloning: 
+hg clone http://mercurial.mcs.anl.gov//ad/AdjoinableMPI src
+
+#Configure adjoinablempi
+cd src
+autoreconf -fi
+
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/adjoinablempi/install" \
+	--libdir="$ISSM_DIR/externalpackages/adjoinablempi/install/lib" \
+	--with-mpi-root="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-requestOnTrace CFLAGS="-g -O0"
+
+#Compile adjoinablempi 
+make clean
+if [ $# -eq 0 ]; then
+	make 
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adjoinablempi/install-pleaides.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adjoinablempi/install-pleaides.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adjoinablempi/install-pleaides.sh	(revision 21239)
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src  install
+
+#Mercurial cloning: 
+hg clone http://mercurial.mcs.anl.gov//ad/AdjoinableMPI src
+
+#Configure adjoinablempi
+cd src
+autoreconf -fi
+
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/adjoinablempi/install" \
+	--libdir="$ISSM_DIR/externalpackages/adjoinablempi/install/lib" \
+	--with-mpi-root="/nasa/sgi/mpt/2.06rp16/" \
+	--enable-requestOnTrace
+
+#Compile adjoinablempi 
+make clean
+if [ $# -eq 0 ]; then
+	make 
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adjoinablempi/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adjoinablempi/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adjoinablempi/install.sh	(revision 21239)
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src  install
+
+#Mercurial cloning: 
+hg clone http://mercurial.mcs.anl.gov//ad/AdjoinableMPI src
+
+#Configure adjoinablempi
+cd src
+autoreconf -fi
+
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/adjoinablempi/install" \
+	--libdir="$ISSM_DIR/externalpackages/adjoinablempi/install/lib" \
+	--with-mpi-root="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-requestOnTrace
+
+#Compile adjoinablempi 
+make clean
+if [ $# -eq 0 ]; then
+	make 
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/install-withampi-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/install-withampi-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/install-withampi-macosx64.sh	(revision 21239)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+
+git clone https://gitlab.com/adol-c/adol-c.git src
+#git clone -b ampi git://git.mcs.anl.gov/adol-c.git src
+#git reset --hard b254b2a001a1b7a024a9184cd087ae06eb975cad
+
+#Compile ADOL-C
+cd src
+autoreconf -f -i 
+
+export CFLAGS="-O2 -L$ISSM_DIR/externalpackages/mpich/install/lib -lpmpich"
+export CXXFLAGS="-O2 -L$ISSM_DIR/externalpackages/mpich/install/lib -lpmpich"
+
+./configure --prefix=$ISSM_DIR/externalpackages/adolc/install  \
+	--libdir=$ISSM_DIR/externalpackages/adolc/install/lib \
+	--with-mpi-root=$ISSM_DIR/externalpackages/mpich/install \
+	--enable-ampi \
+	--with-ampi=$ISSM_DIR/externalpackages/adjoinablempi/install \
+        --with-soname=adolc \
+	--disable-tapedoc-values
+
+make clean
+if [ $# -eq 0 ]; then
+	make V=1
+else
+	make -j $1 V=1
+fi
+make V=1 install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/install-withampi-pleiades-gcc.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/install-withampi-pleiades-gcc.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/install-withampi-pleiades-gcc.sh	(revision 21239)
@@ -0,0 +1,28 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+
+git clone -b ampi git://git.mcs.anl.gov/adol-c.git src
+#git reset --hard b254b2a001a1b7a024a9184cd087ae06eb975cad
+
+#Compile ADOL-C
+cd src
+autoreconf -f -i 
+
+./configure --prefix=$ISSM_DIR/externalpackages/adolc/install  \
+	--libdir=$ISSM_DIR/externalpackages/adolc/install/lib \
+	--with-mpi-root=$ISSM_DIR/externalpackages/mpich/install \
+	--enable-ampi \
+	--with-ampi=$ISSM_DIR/externalpackages/adjoinablempi/install \
+        --with-soname=adolc \
+	--disable-tapedoc-values
+
+make clean
+if [ $# -eq 0 ]; then
+	make V=1
+else
+	make -j $1 V=1
+fi
+make V=1 install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/install-withampi-pleiades.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/install-withampi-pleiades.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/install-withampi-pleiades.sh	(revision 21239)
@@ -0,0 +1,28 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+
+git clone -b ampi git://git.mcs.anl.gov/adol-c.git src
+#git reset --hard b254b2a001a1b7a024a9184cd087ae06eb975cad
+
+#Compile ADOL-C
+cd src
+autoreconf -f -i 
+
+./configure --prefix=$ISSM_DIR/externalpackages/adolc/install  \
+	--libdir=$ISSM_DIR/externalpackages/adolc/install/lib \
+	--with-mpi-root="/nasa/sgi/mpt/2.06rp16/" \
+	--enable-ampi \
+	--with-ampi=$ISSM_DIR/externalpackages/adjoinablempi/install \
+        --with-soname=adolc \
+	--disable-tapedoc-values
+
+make clean
+if [ $# -eq 0 ]; then
+	make V=1
+else
+	make -j $1 V=1
+fi
+make V=1 install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/install-withampi.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/install-withampi.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/install-withampi.sh	(revision 21239)
@@ -0,0 +1,28 @@
+#!/bin/bash
+set -eu
+ 
+#Some cleanup
+rm -rf install src
+
+git clone https://gitlab.com/adol-c/adol-c.git src
+#git reset --hard b254b2a001a1b7a024a9184cd087ae06eb975cad
+
+#Compile ADOL-C
+cd src
+autoreconf -f -i 
+
+./configure --prefix=$ISSM_DIR/externalpackages/adolc/install  \
+	--libdir=$ISSM_DIR/externalpackages/adolc/install/lib \
+	--with-mpi-root=$ISSM_DIR/externalpackages/mpich/install \
+	--enable-ampi \
+	--with-ampi=$ISSM_DIR/externalpackages/adjoinablempi/install \
+	--with-soname=adolc \
+	--disable-tapedoc-values
+
+make clean
+if [ $# -eq 0 ]; then
+	make V=1
+else
+	make -j $1 V=1
+fi
+make V=1 install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/install.sh	(revision 21239)
@@ -0,0 +1,22 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+
+git clone https://gitlab.com/adol-c/adol-c.git src
+#git reset --hard b254b2a001a1b7a024a9184cd087ae06eb975cad
+
+#Compile ADOL-C
+cd src
+
+autoreconf -f -i 
+./configure --prefix=$ISSM_DIR/externalpackages/adolc/install \
+	--libdir=$ISSM_DIR/externalpackages/adolc/install/lib 
+
+if [ $# -eq 0 ]; then
+	make V=1
+else
+	make -j $1 V=1
+fi
+make V=1 install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/old/install-2.2.0.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/old/install-2.2.0.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/old/install-2.2.0.sh	(revision 21239)
@@ -0,0 +1,60 @@
+#!/bin/bash
+set -eu
+
+#some issues on macosx64 with ISSM's autoconf. you might want to run native to mac on this.
+
+#Some cleanup
+rm -rf install ADOL-C-2.2.0 src trunk
+
+#Create install directories
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/ADOL-C-2.2.0.tar.gz' 'ADOL-C-2.2.0.tar.gz'
+
+#Untar 
+tar -zxvf  ADOL-C-2.2.0.tar.gz
+
+#Move ADOL-C into install directory
+mv ADOL-C-2.2.0/* src
+rm -rf ADOL-C-2.2.0
+
+#Compile ADOL-C
+cd src 
+
+#export CC=gcc
+#export CXX=g++
+#export CFLAGS="-arch x86_64"
+#export CXXFLAGS="-arch x86_64"
+
+./configure \
+	--prefix=$ISSM_DIR/externalpackages/adolc/install \
+	--enable-sparse \
+	--enable-docexa \
+	--enable-addexa \
+	--disable-shave
+
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
+
+
+#Ok, bug with libtool: replace all LIBTOOL= by LIBTOOL=libtool 
+#in all Makefiles
+for i in `find ./ -name Makefile `
+do
+	echo $i
+	cat $i | sed 's/LIBTOOL =/LIBTOOL = libtool/g' > $i.bak 
+	mv $i.bak $i
+done
+
+#remake: 
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/old/update.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/old/update.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/old/update.sh	(revision 21239)
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+cd adolc_issm
+git pull
+
+autoreconf -f -i 
+./configure --prefix=$ISSM_DIR/externalpackages/adolc/install 
+
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/update-existing.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/update-existing.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/adolc/update-existing.sh	(revision 21239)
@@ -0,0 +1,29 @@
+#!/bin/bash
+set -eu
+
+#This script is very specific to the larour larsen nightly using adolc. 
+#It relies on just an update of adolc, and symlink to an existing adolc 
+#repo. 
+
+#Some cleanup
+rm -rf install src
+
+#symlink: 
+ln -s /proj/ice/larour2/issm-uci/trunk-jpl/externalpackages/adolc/adolc_issm ./src
+
+#update and compile
+cd src
+git pull origin
+git checkout ampi
+#git reset --hard b254b2a001a1b7a024a9184cd087ae06eb975cad
+
+autoreconf -f -i 
+./configure --prefix=$ISSM_DIR/externalpackages/adolc/install \
+	--libdir=$ISSM_DIR/externalpackages/adolc/install/lib 
+
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/android/android-ndk/android_aux.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/android/android-ndk/android_aux.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/android/android-ndk/android_aux.sh	(revision 21239)
@@ -0,0 +1,43 @@
+#!/bin/bash
+#
+# android_aux.sh serves as an auxiliary script for all installation
+# scripts with the Android suffix.
+#
+# TODO: include M4 macros for generic options.
+#
+
+sdk_rev=22.6.2
+ndk_rev=9
+api_levels="android-14,android-15,android-16"
+host_triplet="arm-linux-androideabi"
+default_droid="android-4.1"
+
+step=0;
+j=1;
+
+echo ""
+echo "This install script utilizes 'android_aux.sh' to allow for options."
+echo "For usage information enter: '--help'"
+echo Number of arguments is: $#
+
+for arg in $* 
+do 
+    if [[ "$arg" =~ --step=([0-9])* ]]; then
+        step=${BASH_REMATCH[1]}; 
+        echo "Setting step to: " $step
+    elif [[ "$arg" == "--help" ]]; then
+        echo ""
+        echo "USAGE: $ install.sh [--step=#] [-j#]"
+        echo ""
+        echo "Where '#' is some integer."
+        echo "To check the number of steps check the install script."
+        echo ""
+        exit 1;
+    elif [[ "$arg" =~ -j=([1-9]+[0-9]*) ]]; then
+        j=${BASH_REMATCH[1]}; 
+        echo "Number of jobs set to: " $j
+    else
+        echo "Option not recognized"
+        exit 1;
+    fi
+done
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/android/android-ndk/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/android/android-ndk/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/android/android-ndk/install.sh	(revision 21239)
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+# This installs the Android NDK (Native Development Kit)
+# which is needed for the compilation of C/C++ code into the 
+# native architecture of the Android device.
+
+# The android-ndk-r8-darwin-x86.tar.bz2 ndk.tar.bz2 file was downloaded 
+# from the android developer website: 
+source $ANDROID_DIR/android_aux.sh
+
+if [[ $step == "1" || $step == "0" ]]; then
+    # Cleanup the install
+    rm -rf install
+    rm -rf $ANDROID_DIR/arm-linux-android-${default_droid}
+
+    # Download from ISSM server
+    $ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/android-ndk-r'${ndk_rev}'-darwin-x86.tar.bz2' 'ndk.tar.bz2'
+
+    # Untar
+    tar -zxvf ndk.tar.bz2
+    rm -rf ndk.tar ndk.tar.bz2
+
+    # Move to install
+    mv android-ndk-r${ndk_rev} install
+fi
+
+# Create Standalone Development Directory
+# Note: API-14 corresponds to Android 4.0.
+if [[ $step == "2" || $step == "0" ]]; then
+    $ANDROID_DIR/android-ndk/install/build/tools/make-standalone-toolchain.sh --platform=android-14 --install-dir=$ANDROID_DIR/android-ndk/install/arm-linux-android-install
+fi
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/android/android-ndk/installNDK-linux-x86.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/android/android-ndk/installNDK-linux-x86.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/android/android-ndk/installNDK-linux-x86.sh	(revision 21239)
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+# This installs the Android NDK (Native Development Kit)
+# which is needed for the compilation of C/C++ code into the 
+# native architecture of the Android device.
+
+# The android-ndk-r8-darwin-x86.tar.bz2 ndk.tar.bz2 file was downloaded 
+# from the android developer website: 
+source $ANDROID_DIR/android_aux.sh
+
+if [[ $step == "1" || $step == "0" ]]; then
+    # Cleanup the install
+    rm -rf install
+    rm -rf $ANDROID_DIR/arm-linux-android-${default_droid}
+
+    # Download from ISSM server
+#    $ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/android-ndk-r'${ndk_rev}'-darwin-x86.tar.bz2' 'ndk.tar.bz2'
+    # Download from google
+#    if ["$(uname -m)" = "x86_64"]; then
+#	wget 'https://dl.google.com/android/ndk/android-ndk-r'${ndk_rev}'d-linux-x86_64.tar.bz2' 'ndk.tar.bz2'
+#   fi
+
+#    if ["$(uname -m)" = "x86"]; then
+	wget 'https://dl.google.com/android/ndk/android-ndk-r'${ndk_rev}'d-linux-x86.tar.bz2'
+ #   fi
+    # Install Android NDK
+    mv 'android-ndk-r'${ndk_rev}'d-linux-x86.tar.bz2' ndk.tar.bz2
+    tar -xvf ndk.tar.bz2
+    rm -rf ndk.tar ndk.tar.bz2
+
+    # Move to install
+    mv android-ndk-r${ndk_rev}d install
+fi
+
+# Create Standalone Development Directory
+# Note: API-14 corresponds to Android 4.0.
+if [[ $step == "2" || $step == "0" ]]; then
+    $ANDROID_DIR/android-ndk/install/build/tools/make-standalone-toolchain.sh --platform=android-14 --install-dir=$ANDROID_DIR/android-ndk/install/arm-linux-android-install
+fi
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/android/android-sdk/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/android/android-sdk/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/android/android-sdk/install.sh	(revision 21239)
@@ -0,0 +1,82 @@
+#!/bin/bash
+
+# This installs the Android SDK (Software Development Kit)
+# which is needed for the compilation of the Java project. 
+
+source $ANDROID_DIR/android_aux.sh
+
+# Different steps here. 
+#   0: do all
+#   1: install sdk, ant and sdk tools
+#   2: install an emulator.
+#   3: test the emulator
+#   4: cleanup
+
+present_dir=`pwd`;
+sd_card="issm-sdcard"
+
+if [[ $step == "1" || $step == "0" ]]; then
+
+	# Cleanup the install
+	rm -rf install
+
+	# Download from ISSM server
+	$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/android-sdk_r'$sdk_rev'-macosx.zip' 'android-sdk_r'${sdk_rev}'-macosx.zip'
+
+	# Install Android SDK and NDK.
+	unzip -o android-sdk_r${sdk_rev}-macosx.zip
+
+	# Move to install
+	mv -f android-sdk-macosx install
+
+	# Post_install configuration: 
+	# We need specific settings for specific platforms, for the SDK to 
+	# function properly
+
+	# For now, we need to install:  
+	# android sdk platform tools  
+	# and a specific android api: API 16, API 15 and API 14
+	# Note: API 16, API 15 and 14 correspond to Android 4.1, 4.0.3 and 4.0 respectively. 
+
+	cd install/tools/ && source ./android update sdk -t platform-tool,${api_levels},system-image --no-ui
+
+fi
+
+if [[ $step == "2" || $step == "0" ]]; then
+
+	# Once this is done, we need to install an emulator. Location will default to ~/.android/avd, 
+	# which we will move to $ISSM_DIR/externalpackages/android-emulators.  
+	# For now, it's called: Android-4.0.3
+
+	# Here we delete the Android-4.0.3 device if it already exists.
+	cd $present_dir/install/tools
+
+    if [ -e $ANDROID_DIR/android-emulators/$default_droid ] 
+    then
+        echo "Deleting previously created device: $default_droid"
+	    ./android delete avd -n $default_droid
+    fi
+
+	# Android will prompt the user to specify hardware emulation options. For now, default
+	# default settings will suffice. Press 'enter' to take default settings or enter 'no'.
+
+	./android create avd -f -n $default_droid -t 1 -p $ANDROID_DIR/android-emulators/$default_droid --abi armeabi-v7a
+    echo "Creating an SD Card"
+    ./mksdcard -l $sd_card 2G $ANDROID_DIR/android-emulators/$sd_card.img
+fi
+
+if [[ $step == "3" || $step == "0" ]]; then
+    # Here we will start up our default emulator to test that it is working properly.
+    # Once the device has booted we will use the Android Debug Bridge tool to gain
+    # a terminal in our device.
+
+	cd $present_dir/install/tools
+	./emulator -avd $default_droid -sdcard $ANDROID_DIR/android-emulators/$sd_card.img &
+
+    cd ../platform-tools
+    ./adb wait-for-device shell
+fi
+
+if [[ $step == "4" || $step == "0" ]]; then
+	rm -rf install
+fi
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/android/android-sdk/installSDK-linux-x86.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/android/android-sdk/installSDK-linux-x86.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/android/android-sdk/installSDK-linux-x86.sh	(revision 21239)
@@ -0,0 +1,85 @@
+#!/bin/bash
+
+# This installs the Android SDK (Software Development Kit)
+# which is needed for the compilation of the Java project. 
+
+source $ANDROID_DIR/android_aux.sh
+
+# Different steps here. 
+#   0: do all
+#   1: install sdk, ant and sdk tools
+#   2: install an emulator.
+#   3: test the emulator
+#   4: cleanup
+
+present_dir=`pwd`;
+sd_card="issm-sdcard"
+
+if [[ $step == "1" || $step == "0" ]]; then
+
+	# Cleanup the install
+	rm -rf install
+
+	# Download from ISSM server
+#	$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://developer.android.com/sdk/index.html#download' 'android-sdk-linux.zip'
+	
+	#Download from Google server
+	wget https://dl.google.com/android/android-sdk_r$sdk_rev-linux.tgz
+
+	# Install Android SDK.
+	tar -zxvf android-sdk_r$sdk_rev-linux.tgz
+	rm -rf android-sdk_r$sdk_rev-linux.tgz
+	# Move to install
+	mv -f android-sdk-linux install
+
+	# Post_install configuration: 
+	# We need specific settings for specific platforms, for the SDK to 
+	# function properly
+
+	# For now, we need to install:  
+	# android sdk platform tools  
+	# and a specific android api: API 16, API 15 and API 14
+	# Note: API 16, API 15 and 14 correspond to Android 4.1, 4.0.3 and 4.0 respectively. 
+
+	cd install/tools/ && source ./android update sdk -t platform-tool,${api_levels},system-image --no-ui
+
+fi
+
+if [[ $step == "2" || $step == "0" ]]; then
+
+	# Once this is done, we need to install an emulator. Location will default to ~/.android/avd, 
+	# which we will move to $ISSM_DIR/externalpackages/android-emulators.  
+	# For now, it's called: Android-4.0.3
+
+	# Here we delete the Android-4.0.3 device if it already exists.
+	cd $present_dir/install/tools
+
+    if [ -e $ANDROID_DIR/android-emulators/$default_droid ] 
+    then
+        echo "Deleting previously created device: $default_droid"
+	    ./android delete avd -n $default_droid
+    fi
+
+	# Android will prompt the user to specify hardware emulation options. For now, default
+	# default settings will suffice. Press 'enter' to take default settings or enter 'no'.
+
+	./android create avd -f -n $default_droid -t 1 -p $ANDROID_DIR/android-emulators/$default_droid --abi armeabi-v7a
+    echo "Creating an SD Card"
+    ./mksdcard -l $sd_card 2G $ANDROID_DIR/android-emulators/$sd_card.img
+fi
+
+if [[ $step == "3" || $step == "0" ]]; then
+    # Here we will start up our default emulator to test that it is working properly.
+    # Once the device has booted we will use the Android Debug Bridge tool to gain
+    # a terminal in our device.
+
+	cd $present_dir/install/tools
+	./emulator -avd $default_droid -sdcard $ANDROID_DIR/android-emulators/$sd_card.img &
+
+    cd ../platform-tools
+    ./adb wait-for-device shell
+fi
+
+#if [[ $step == "4" || $step == "0" ]]; then
+#	rm -rf install
+#fi
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/android/android_aux.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/android/android_aux.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/android/android_aux.sh	(revision 21239)
@@ -0,0 +1,43 @@
+#!/bin/bash
+#
+# android_aux.sh serves as an auxiliary script for all installation
+# scripts with the Android suffix.
+#
+# TODO: include M4 macros for generic options.
+#
+
+sdk_rev=20
+ndk_rev=8
+api_levels="android-14,android-15,android-16"
+host_triplet="arm-linux-androideabi"
+default_droid="android-4.1"
+
+step=0;
+j=1;
+
+echo ""
+echo "This install script utilizes 'android_aux.sh' to allow for options."
+echo "For usage information enter: '--help'"
+echo Number of arguments is: $#
+
+for arg in $* 
+do 
+    if [[ "$arg" =~ --step=([0-9])* ]]; then
+        step=${BASH_REMATCH[1]}; 
+        echo "Setting step to: " $step
+    elif [[ "$arg" == "--help" ]]; then
+        echo ""
+        echo "USAGE: $ install.sh [--step=#] [-j#]"
+        echo ""
+        echo "Where '#' is some integer."
+        echo "To check the number of steps check the install script."
+        echo ""
+        exit 1;
+    elif [[ "$arg" =~ -j=([1-9]+[0-9]*) ]]; then
+        j=${BASH_REMATCH[1]}; 
+        echo "Number of jobs set to: " $j
+    else
+        echo "Option not recognized"
+        exit 1;
+    fi
+done
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/angel/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/angel/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/angel/install.sh	(revision 21239)
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf angel
+
+#download 
+svn co -r 82 https://angellib.svn.sourceforge.net/svnroot/angellib/trunk angel
+
+#Compile
+cd angel 
+make
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/appscan/bin/genouncemakePFile.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/appscan/bin/genouncemakePFile.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/appscan/bin/genouncemakePFile.sh	(revision 21239)
@@ -0,0 +1,593 @@
+#!/bin/bash
+
+#----------------------------------------------------------------------
+#VARIABLES containing information to generate OunceMake Properties file
+#----------------------------------------------------------------------
+XMLHEADER="<?xml version=\""1.0\"" encoding=\"UTF-8\"?>"
+OUNCEHEADER="<OunceMakeProperties xmlns=\"http://www.ouncelabs.com/namespace\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"
+MAKEOPT="<MakeOptions>-f Makefile</MakeOptions>"
+
+COMPILER_TAG="Compiler"
+COMPILER_MACRO="macro"
+
+C_COMPILER_MVALUE="\"CC\""
+CPP_COMPILER_MVALUE="\"CXX\""
+
+MAKE_TAG="Make"
+MAKE_MACRO="macro"
+MAKE_MVALUE="\"MAKE\""
+
+
+LINKER_TAG="Linker"
+LINKER_MACRO="macro"
+LINKER_MVALUE="\"LD\""
+
+
+ARCHIVE_TAG="Executable"
+ARCHIVE_MACRO="macro"
+ARCHIVE_MVALUE="\"ARCHIVE\""
+
+OUNCEOPT="<Options recursive=\"true\" single_project=\"false\" verbose=\"false\" clean=\"make clean\" no_clean=\"false\" build=\"true\"/>"
+
+OUNCE_MAIN_TAG="OunceMakeProperties"
+OUNCE_COMPILER_GPO_TAG="GlobalProjectOptions"
+OUNCE_COMPILER_OPT="compiler_options"
+OUNCE_COMPILER_OPT_gpp="\"-g++_linux_i386\""
+OUNCE_COMPILER_OPT_gcc="\"-gcc_linux_i386\""
+
+OUNCE_INCLUDE_PATH="include_paths"
+OUNCE_MACRO_PATH="macros"
+
+OUNCE_COMPILER_FO_TAG="FileOptions"
+OUNCE_COMPILER_EXT="extensions"
+
+OUNCE_COMPILER_EXT_CPP="cpp;cxx"
+OUNCE_COMPILER_EXT_C="c"
+
+#Did the search for a particular tool pass/fail
+FAIL_FILE="failed.status"
+
+#---------------------------------
+#COMPILER data extraction function
+#---------------------------------
+
+function initialize {
+#Create Directory for info
+ echo;echo
+ echo -e "Initialization....\t\t\t[\c "
+ echo -e "\E[33mSTARTED\c "; tput sgr0
+ echo "]"
+ search_tool which
+ FILEPRE=${1}
+
+ case "$1" in
+	"gcc"|"cc")
+	  TESTFILE="testfoo.c"
+	;;
+	"g++"|"CC")
+	  TESTFILE="testfoo.cpp"
+	;;
+	*)
+	 echo "Error setting prefix"
+	;;
+ esac
+
+ DATAFOLDER="${FILEPRE}results"
+#Declare files to generate and store results
+ RESULTFILE="${DATAFOLDER}/${FILEPRE}libinc.result"
+ SLIMFILE="${DATAFOLDER}/${FILEPRE}slim.inc"
+ SLIM2FILE="${DATAFOLDER}/${FILEPRE}slim2.inc"
+
+#Declare the Tags that enclose the information needed
+ START_TAG="#include <...> search starts here:"
+ END_TAG="End of search list."
+
+#Declare Variable to track Tags
+ MARK_FOUND=0
+
+#For Macros
+ MACROSDUMPFILE="${DATAFOLDER}/${FILEPRE}macrosd.result"
+ INTFILE1="${DATAFOLDER}/${FILEPRE}interf1.result"
+ INTFILE2="${DATAFOLDER}/${FILEPRE}interf2.result"
+
+
+#The file extensions for (both) options
+CONFIG_FOLDER="config"
+C_EXT="${CONFIG_FOLDER}/cext.data"
+CPP_EXT="${CONFIG_FOLDER}/cppext.data"
+
+if [ -d ${CONFIG_FOLDER} ]; then
+	echo
+else
+	mkdir ${CONFIG_FOLDER}
+	echo ${OUNCE_COMPILER_EXT_CPP} > ${C_EXT}
+	echo ${OUNCE_COMPILER_EXT_C} > ${CPP_EXT}
+fi
+
+ echo -e "Initialization....\t\t\t[\c "
+ echo -e "\E[33mDONE\c "; tput sgr0
+ echo "]"
+}
+
+function purgefiles {
+ echo -e "Purging files....\t\t\t[\c "
+ echo -e "\E[33mSTARTED\c "; tput sgr0
+ echo "]"
+  if [ -e ${DATAFOLDER} ]; then
+	rm -R ${DATAFOLDER}
+	mkdir ${DATAFOLDER}
+  else
+	mkdir ${DATAFOLDER}
+  fi
+ echo -e "Purging files....\t\t\t[\c "
+ echo -e "\E[33mDONE\c "; tput sgr0
+ echo "]"
+}
+
+
+function processGNUInclude {
+echo
+#Create the dummy file is does not exist
+if [ -e ${TESTFILE} ]; then
+	echo "Will use an existing ${TESTFILE} file"
+else 
+	echo -e "int main(){\n return 0;\n}" &>  ${TESTFILE}
+	if [ -e ${TESTFILE} ]; then
+	  echo -e "Generating new test file\t\t[\c "
+	  echo -e "\E[31m${TESTFILE}\c " ; tput sgr0 
+	  echo "]"
+	else
+	  echo -e "Error generating new test file\t\t[\c "
+	  echo -e "\E[31m${TESTFILE}\c " ; tput sgr0 
+	  echo "]"
+   	#TO DO
+   	#Will the user like to continue or exit?
+	fi
+fi
+
+
+ echo
+ echo -e "Generating information for Compiler\t\t[\c "
+ echo -e "\E[31m${COMPILER}\c " ; tput sgr0 
+ echo "]"
+
+${COMPILER} -v ${TESTFILE} &> ${RESULTFILE}
+
+
+cat ${RESULTFILE} | while read line
+do 
+
+	if [ "${line}" = "${START_TAG}" ] 
+	then
+		MARK_FOUND=1
+	fi
+
+	
+	if [ "${line}" = "${END_TAG}" ] 
+	then
+		MARK_FOUND=0
+	fi
+
+	
+	if [ "${MARK_FOUND}" = 1 ] && [ "${line}" != "${START_TAG}" ] 
+	then
+		let "inclib +=  1"
+		echo ${line} 1>> ${SLIMFILE}
+	fi
+done
+
+if [ -e ${SLIMFILE} ]; then
+	sed -e :a -e N -e 's/\n/; /' -e ta  ${SLIMFILE}  > ${RESULTFILE}
+	echo -e "Inc & Lib results are in file...\t\t[\c "
+	echo -e "\033[1m\E[31m${RESULTFILE}\033[0m\c " ; tput sgr0
+	echo "]"
+fi
+
+#String to contatenate the include path
+concatpath="include_paths=\""
+#Merge file content
+sed -e 's/\n/;/'  ${SLIMFILE} > ${SLIM2FILE}
+
+}
+
+
+function processGNUMacro {
+#*****************************
+#Generate macros for system
+#*****************************
+ echo
+ echo -e "Generating Macro data for Compiler\t\t[\c "
+ echo -e "\E[31m${COMPILER} \c " ; tput sgr0 
+ echo "]"
+
+ ${COMPILER} -dM -E ${TESTFILE} >> ${MACROSDUMPFILE}
+ sed 's/#define //' ${MACROSDUMPFILE} > ${INTFILE1}
+ if [ -e ${INTFILE1} ]; then
+	sed 's/ /=/' ${INTFILE1} > ${INTFILE2}
+ else
+	echo -e "\033[1m Sorry <${INTFILE1}> was not created.. \033[0m"
+ fi
+
+ if [ -e ${INTFILE2} ]; then
+	#Remove the Macro's that have no values
+	sed '/^_.*=$/d' ${INTFILE2} > ${INTFILE1} 
+	#Join the individual line and delimit with a (; )
+	sed -e :a -e N  -e 's/\n/; /' -e ta  ${INTFILE1}  > ${MACROSDUMPFILE}
+	#All done display the results file
+	echo -e "Macro results are in file...\t\t\t[\c "
+	echo -e "\033[1m\E[31m${MACROSDUMPFILE}\033[0m\c " ; tput sgr0
+	echo "]"
+ else
+	echo -e "\033[1m Sorry <${MACROSDUMPFILE}> was not created.. \033[0m"
+ fi
+}
+
+function processSUNMacro {
+#*******************************************
+#This function is for the SUN Compilers ONLY
+#*******************************************
+ echo
+ echo -e "Generating Macro data for Compiler\t\t[\c "
+ echo -e "\E[31m${COMPILER} \c " ; tput sgr0 
+ echo "]"
+
+ ${COMPILER} -xdumpmacros ${TESTFILE} &> ${MACROSDUMPFILE}
+ sed 's/#define //' ${MACROSDUMPFILE} > ${INTFILE1}
+ if [ -e ${INTFILE1} ]; then
+	sed 's/ /=/' ${INTFILE1} > ${INTFILE2}
+ else
+	echo -e "\033[1m Sorry <${INTFILE1}> was not created.. \033[0m"
+ fi
+
+ if [ -e ${INTFILE2} ]; then
+	#Remove the Macro's that have no values
+	sed '/^_.*=$/d' ${INTFILE2} > ${INTFILE1} 
+	#Join the individual line and delimit with a (; )
+	sed -e :a -e N  -e 's/\n/; /' -e ta  ${INTFILE1}  > ${MACROSDUMPFILE}
+	#All done display the results file
+	echo -e "Macro results are in file...\t\t\t[\c "
+	echo -e "\033[1m\E[31m${MACROSDUMPFILE}\033[0m\c " ; tput sgr0
+	echo "]"
+ else
+	echo -e "\033[1m Sorry <${MACROSDUMPFILE}> was not created.. \033[0m"
+ fi
+}
+
+#--------------------------
+#DATA Processing variables
+#--------------------------
+PROPFILE="ouncemake_properties.xml"
+PROBEFILE="probe.results"
+ERRORLOG="error.log"
+
+#---------------------------------------
+#FUNCTION TO CREATE FILE
+#--------------------------------------
+
+function create_file {
+#If a previous copy of file exist, delete it
+if [ -e ${PROPFILE} ]; then
+	rm ${PROPFILE}
+fi
+
+echo;echo
+echo "CREATING THE PROPERTIES XML FILE"
+#insert file headers
+echo ${XMLHEADER} >> ${PROPFILE}
+echo ${OUNCEHEADER} >> ${PROPFILE}
+echo ${MAKEOPT} >> ${PROPFILE}
+case "${1}" in
+	'gcc')
+	  search_tool gcc
+	;;
+	'g++')
+	  search_tool g++
+	;;
+	'bothGNU')
+	  search_tool gcc
+	  search_tool g++
+	;;
+	'cc')
+	  search_tool cc
+	;;
+	'CC')
+	  search_tool CC
+	;;
+	'bothSUN')
+	  search_tool gcc
+	  search_tool g++
+	;;
+	'*')
+	;;
+esac
+search_tool make
+search_tool ld
+search_tool ar
+echo "	${OUNCEOPT}" >> ${PROPFILE}
+
+case "${1}" in
+	'gcc')
+	  singleGNUC gcc
+	;;
+	'g++')
+	  singleGNUC g++
+	;;
+	'bothGNU')
+	  bothGNUC gcc
+	  bothGNUC g++
+	;;
+	'cc')
+	  singleSUNC cc
+	;;
+	'CC')
+	  singleSUNC CC
+	;;
+	'bothSUN')
+	  bothSUNC cc
+	  bothSUNC CC
+	;;
+	'*')
+	;;
+esac
+
+echo "</${OUNCE_MAIN_TAG}>" >> ${PROPFILE}
+
+echo
+echo -e "Successully created Properties file\t\t[\c "
+echo -e "\033[1m\E[31m${PROPFILE}\033[0m\c " ; tput sgr0
+echo "]"
+echo
+}
+
+#when the system is unable to locate the tool
+#the user is prompted to provide that information
+function usersupplypath {
+	echo "Please provide the path to ${1}."
+	read TOOLPATH
+}
+
+
+function search_tool {
+which $1 &> ${PROBEFILE}
+#Why this approach? I had to be able to non-interactively  
+#know if the pattern was successfully found. 
+
+sed -n -e "/.*no[ ]${1}[ ]in[ ].*/w $FAIL_FILE" ${PROBEFILE} 
+
+#If the file is empty, the process PASSED
+#else the Fail criteria was found. Process FAILED
+if [ -e ${FAIL_FILE} ]; then
+	exec < ${FAIL_FILE}
+	read FAILPASS
+	if [${FAILPASS} = ""]; then
+	  SEARCHTOOL="PASSED"
+	  rm ${FAIL_FILE}
+	else
+	 SEARCHTOOL="FAILED"
+	fi
+fi
+
+
+if [ ${SEARCHTOOL} == "FAILED" ] ; then
+  echo "Failed to find ${1} in PATH" >> ${ERRORLOG}
+  echo -e "check for $1 in ${TLOC}\t\t\t[$SEARCHTOOL]"
+elif [ ${SEARCHTOOL} == "PASSED" ]; then
+  #Redirects stdin to a file so that
+  exec < ${PROBEFILE}
+  #I can read line by line
+  read TLOC
+  echo -e "check for $1 in ${TLOC}\t\t\t[\c "
+  echo -e "\E[33m${SEARCHTOOL}\c "; tput sgr0
+  echo "]"
+else
+  echo "Unable to process the request"
+  #exit
+fi
+
+case "$1" in
+	'gcc')
+	#set up the sub strings 
+	  TAG_L="<${COMPILER_TAG} ${COMPILER_MACRO}=${C_COMPILER_MVALUE}>"
+	  MVALUE="$TLOC"
+	  TAG_R="</${COMPILER_TAG}>"
+	;;
+	'g++')
+	  TAG_L="<${COMPILER_TAG} ${COMPILER_MACRO}=${CPP_COMPILER_MVALUE}>"
+	  MVALUE="$TLOC"
+	  TAG_R="</${COMPILER_TAG}>"
+	;;
+	'make')
+	  TAG_L="<${MAKE_TAG} ${MAKE_MACRO}=${MAKE_MVALUE}>"
+	  MVALUE="$TLOC"
+	  TAG_R="</${MAKE_TAG}>"
+	;;
+	'ld')
+	  TAG_L="<${LINKER_TAG} ${LINKER_MACRO}=${LINKER_MVALUE}>"
+	  MVALUE="$TLOC"
+	  TAG_R="</${LINKER_TAG}>"
+	;;
+	'ar')
+	  TAG_L="<${ARCHIVE_TAG} ${ARCHIVE_MACRO}=${ARCHIVE_MVALUE}>"
+	  MVALUE="$TLOC"
+	  TAG_R="</${ARCHIVE_TAG}>"
+	;;
+	'*')
+	;;	
+esac
+
+#then concatenate
+FULL_STRING="${TAG_L}${MVALUE}${TAG_R}"
+#and store in file
+echo "	$FULL_STRING" >> ${PROPFILE}
+}
+function singleGNUC {
+
+echo "	<${OUNCE_COMPILER_GPO_TAG}" >> ${PROPFILE}
+
+case "$1" in 
+	'gcc')
+	  echo -e "\t  ${OUNCE_COMPILER_OPT}=${OUNCE_COMPILER_OPT_gcc}" >> ${PROPFILE}
+	;;
+	'g++')
+	  echo -e "\t  ${OUNCE_COMPILER_OPT}=${OUNCE_COMPILER_OPT_gpp}" >> ${PROPFILE}
+	;;
+	'*')
+	;;	
+esac
+
+exec < ${RESULTFILE}
+read INCLUDE_DATA
+echo -e "\t  ${OUNCE_INCLUDE_PATH}=\"${INCLUDE_DATA}\"" >> ${PROPFILE}
+exec < ${MACROSDUMPFILE}
+read MACRO_DATA
+#Using single quotes to wrap double quotes in data
+echo -e "\t  ${OUNCE_MACRO_PATH}='${MACRO_DATA}' />" >> ${PROPFILE}
+
+}
+
+
+function bothGNUC {
+
+echo -e "\t<${OUNCE_COMPILER_FO_TAG}" >> ${PROPFILE}
+
+case "$1" in 
+	'gcc')
+	  FILEPRE="$1"
+	  exec < ${C_EXT}
+	  read CEXTENSIONS
+	  if [ ${CEXTENSIONS} = "" ]; then
+	  	CEXTENSIONS=${OUNCE_COMPILER_EXT_C}
+	  else
+		OUNCE_COMPILER_EXT_C=${CEXTENSIONS}
+	  fi
+	  echo -e "\t  ${OUNCE_COMPILER_EXT}=\"${OUNCE_COMPILER_EXT_C}\"" >> ${PROPFILE}
+	;;
+	'g++')
+	  FILEPRE="$1"
+	  exec < ${CPP_EXT}
+	  read CPPEXTENSIONS
+	  if [ ${CPPEXTENSIONS} = "" ]; then
+	  	CPPEXTENSIONS=${OUNCE_COMPILER_EXT_CPP}
+	  else
+		OUNCE_COMPILER_EXT_CPP=${CPPEXTENSIONS}
+	  fi
+	  echo -e "\t  ${OUNCE_COMPILER_EXT}=\"${OUNCE_COMPILER_EXT_CPP}\"" >> ${PROPFILE}
+	;;
+	'*')
+	;;	
+esac
+
+#To make sure that the correct folder and file is read
+DATAFOLDER="${FILEPRE}results"
+#Declare files to generate and store results
+RESULTFILE="${DATAFOLDER}/${FILEPRE}libinc.result"
+
+exec < ${RESULTFILE}
+read INCLUDE_DATA
+echo -e "\t  ${OUNCE_INCLUDE_PATH}=\"${INCLUDE_DATA}\"" >> ${PROPFILE}
+exec < ${MACROSDUMPFILE}
+read MACRO_DATA
+echo -e "\t  ${OUNCE_MACRO_PATH}='${MACRO_DATA}'/>" >> ${PROPFILE}
+
+}
+
+
+clear
+echo
+echo -e "\t \E[34m\033[1mOUNCEMAKE PROPERTIES FILE GENERATOR (1.0)b\033[0m";tput sgr0
+
+#Start of the program
+case "$1" in
+	'-t')
+	  case "$2" in 
+		"gcc")
+		  COMPILER=${2}
+		 initialize ${2}
+		 purgefiles
+		 processGNUInclude
+		 processGNUMacro
+		 create_file ${2}
+		;;
+		"g++")
+		  COMPILER=${2}
+		 initialize ${2}
+		 purgefiles
+		 processGNUInclude
+		 processGNUMacro
+		 create_file ${2}
+		;;
+		"bothGNU")
+		  COMPILER="gcc"
+		 initialize ${2}
+		 purgefiles
+		 processGNUInclude
+		 processGNUMacro
+		  COMPILER="g++"
+		 initialize ${2}
+		 purgefiles
+		 processGNUInclude
+		 processGNUMacro
+		 create_file ${2}
+		;;
+		"cc")
+		  COMPILER=${2}
+		 initialize ${2}
+		 purgefiles
+		 processSUNInclude
+		 processSUNMacro
+		 create_file ${2}
+		;;
+		"CC")
+		  COMPILER=${2}
+		 initialize ${2}
+		 purgefiles
+		# processSUNInclude
+		 processSUNMacro
+		# create_file ${2}
+		;;
+		"bothSUN")
+		  COMPILER="cc"
+		 initialize cc
+		 purgefiles
+		 processSUNInclude
+		 processSUNMacro
+		  COMPILER="CC"
+		 initialize CC
+		 purgefiles
+		 processSUNInclude
+		 processSUNMacro
+		 create_file both
+		;;
+		'*')
+		  echo "Usage: -t [gcc|g++|bothGNU]"
+		  exit $?
+		;;
+	  esac  
+	;;
+	'-h')
+	  echo -e "Usage: -t [Options] -v "
+	  echo -e "Options:"
+	  echo -e "\t[gcc]\tC project only";
+	  echo -e "\t[g++]\tCPP project only"
+	  echo -e "\t[bothGNU]\tMixed C and CPP project"
+	  echo
+	  echo -e "\t-v \tDisplay version information"
+	  exit $?
+	;;
+	'-v')
+	  echo "Version 1.0 beta"
+	  exit $?
+	;;
+	*)
+	  echo -e "Usage: -t [Options] -v "
+	  echo -e "Options:"
+	  echo -e "\t[gcc]\tC project only";
+	  echo -e "\t[g++]\tCPP project only"
+	  echo -e "\t[both]\tMixed C and CPP project"
+	  echo
+	  echo -e "\t-v \tDisplay version information"
+	  exit $?
+	;;
+esac
+echo "[ P R O C E S S  C O M P L E T E !!! ]"
+echo
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/appscan/hostname
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/appscan/hostname	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/appscan/hostname	(revision 21239)
@@ -0,0 +1,1 @@
+jplsec-codescan.jpl.nasa.gov
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/appscan/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/appscan/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/appscan/install.sh	(revision 21239)
@@ -0,0 +1,10 @@
+#!/bin/bash
+set -eu
+
+#AppScan install directory. Just symlink to your existing AppScan software
+
+#Erase symlink
+rm -rf install
+
+#Select or create a new simlink
+ln -s /opt/IBM/AppScan_Source ./install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/apr-util/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/apr-util/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/apr-util/install.sh	(revision 21239)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf apr-util-1.4.1
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/apr-util-1.4.1.tar.gz' 'apr-util-1.4.1.tar.gz'
+
+#Untar 
+tar -zxvf  apr-util-1.4.1.tar.gz
+
+#Move apr-util into src directory
+mv apr-util-1.4.1/* src
+rm -rf apr-util-1.4.1
+
+#Configure apr-util
+cd src
+./configure  --prefix="$ISSM_DIR/externalpackages/apr-util/install" --with-apr="$ISSM_DIR/externalpackages/apr/install"
+
+#Compile and install apr-util
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/apr/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/apr/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/apr/install.sh	(revision 21239)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf apr-1.4.6
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/apr-1.4.6.tar.gz' 'apr-1.4.6.tar.gz'
+
+#Untar 
+tar -zxvf  apr-1.4.6.tar.gz
+
+#Move apr into src directory
+mv apr-1.4.6/* src
+rm -rf apr-1.4.6
+
+#Configure apr
+cd src
+./configure  --prefix="$ISSM_DIR/externalpackages/apr/install" 
+
+#Compile and install apr
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/aspell/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/aspell/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/aspell/install.sh	(revision 21239)
@@ -0,0 +1,62 @@
+#!/bin/bash
+set -eu
+
+#0: cleanup
+#1:  install aspell
+#2:  install en dictionary
+step=2
+
+
+#Some cleanup
+if  [[ $step  == "0" ]]; then
+	rm -rf src install dicts
+	rm -rf aspell-0.50.5
+	rm -rf aspell5-en-6.0.0
+fi
+
+#install aspell
+if  [[ $step  == "1" ]]; then
+
+	mkdir src install dicts
+
+	#Download from ISSM server
+	$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/aspell-0.50.5.tar.gz' 'aspell-0.50.5.tar.gz'
+
+	#Untar 
+	tar -zxvf  aspell-0.50.5.tar.gz
+
+	#Move aspell into src directory
+	mv aspell-0.50.5/* src
+	rm -rf aspell-0.50.5
+
+	#Configure aspell
+	cd src
+	./configure \
+		--prefix="$ISSM_DIR/externalpackages/aspell/install" \
+
+	#Compile and install aspell
+	if [ -z $1 ]; then
+		make
+	else
+		make -j $1
+	fi
+	make install
+fi
+
+#languages
+if  [[ $step  == "2" ]]; then
+
+	#Download from ISSM server
+	$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/aspell5-en-6.0.0.tar.gz' 'aspell5-en-6.0.0.tar.gz'
+
+	#Untar 
+	tar -zxvf  aspell5-en-6.0.0.tar.gz
+
+	#Move aspell into src directory
+	mv aspell5-en-6.0.0 dicts
+
+	#install
+	cd dicts/aspell5-en-6.0.0
+	./configure
+	make install
+fi
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/atlas/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/atlas/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/atlas/install.sh	(revision 21239)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install ATLAS build
+mkdir src install build
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/atlas3.10.0.tar.bz2' 'atlas3.10.0.tar.bz2'
+
+#Untar 
+tar -zxvf  atlas3.10.0.tar.bz2
+
+#Move atlas into src directory
+mv ATLAS/* src
+rm -rf ATLAS
+
+#Configure atlas
+cd build
+
+export CFLAGS=" -arch x86_64"
+
+../src/configure \
+	--prefix="$ISSM_DIR/externalpackages/atlas/install" 
+
+#Compile atlas
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/autotools/install-win.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/autotools/install-win.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/autotools/install-win.sh	(revision 21239)
@@ -0,0 +1,53 @@
+#!/bin/bash
+set -eu
+
+rm -rf install
+mkdir install
+
+export PATH="$ISSM_DIR/externalpackages/autotools/install/bin:$PATH"
+
+#install autoconf
+echo " === INSTALLING AUTOCONF =="
+rm -rf src
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/autoconf-2.69.tar.gz' 'autoconf-2.69.tar.gz'
+tar -zxvf autoconf-2.69.tar.gz
+mv autoconf-2.69 src
+cd src 
+./configure --prefix="$ISSM_DIR/externalpackages/autotools/install" 
+make  
+make install
+cd ..
+
+#install automake
+echo " === INSTALLING AUTOMAKE =="
+rm -rf src
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/automake-1.14.tar.gz' 'automake-1.14.tar.gz'
+tar -zxvf  automake-1.14.tar.gz
+mv automake-1.14 src
+cd src 
+./configure --prefix="$ISSM_DIR/externalpackages/autotools/install" 
+make  
+make install
+cd ..
+
+#install libtool
+echo " === INSTALLING LIBTOOL =="
+rm -rf src
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/libtool-2.4.2.tar.gz' 'libtool-2.4.2.tar.gz'
+tar -zxvf  libtool-2.4.2.tar.gz
+rm libtool-2.4.2.tar.gz
+mv libtool-2.4.2 src
+cd src 
+./configure --prefix="$ISSM_DIR/externalpackages/autotools/install" 
+make  
+make install
+cd ..
+
+# This patch takes care of removing options passed to the linker that casuse 
+# the build to fail, as well as changing some flags to match up to Microsoft
+# compilers.
+patch ./install/share/aclocal/libtool.m4 < ./patches/libtool.m4.patch
+
+# Small change to Automake in order to get the right flags for Microsoft's
+# compiler.
+patch ./install/bin/automake < ./patches/automake.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/autotools/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/autotools/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/autotools/install.sh	(revision 21239)
@@ -0,0 +1,56 @@
+#!/bin/bash
+set -eu
+
+rm -rf install
+mkdir install
+
+export PATH="$ISSM_DIR/externalpackages/autotools/install/bin:$PATH"
+
+#install m4
+echo " === INSTALLING M4 =="
+rm -rf src
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/m4-1.4.17.tar.gz' 'm4-1.4.17.tar.gz'
+tar -zxvf m4-1.4.17.tar.gz
+mv m4-1.4.17 src
+cd src
+./configure --prefix="$ISSM_DIR/externalpackages/autotools/install"
+make
+make install
+cd ..
+
+#install autoconf
+echo " === INSTALLING AUTOCONF =="
+rm -rf src
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/autoconf-2.69.tar.gz' 'autoconf-2.69.tar.gz'
+tar -zxvf autoconf-2.69.tar.gz
+mv autoconf-2.69 src
+cd src 
+./configure --prefix="$ISSM_DIR/externalpackages/autotools/install" 
+make  
+make install
+cd ..
+
+#install automake
+echo " === INSTALLING AUTOMAKE =="
+rm -rf src
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/automake-1.14.tar.gz' 'automake-1.14.tar.gz'
+tar -zxvf  automake-1.14.tar.gz
+mv automake-1.14 src
+cd src 
+./configure --prefix="$ISSM_DIR/externalpackages/autotools/install" 
+make  
+make install
+cd ..
+
+#install libtool
+echo " === INSTALLING LIBTOOL =="
+rm -rf src
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/libtool-2.4.2.tar.gz' 'libtool-2.4.2.tar.gz'
+tar -zxvf  libtool-2.4.2.tar.gz
+rm libtool-2.4.2.tar.gz
+mv libtool-2.4.2 src
+cd src 
+./configure --prefix="$ISSM_DIR/externalpackages/autotools/install" 
+make  
+make install
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/autotools/patches/automake.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/autotools/patches/automake.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/autotools/patches/automake.patch	(revision 21239)
@@ -0,0 +1,13 @@
+--- ./externalpackages/autotools/install/bin/automake	2015-09-24 19:26:11.796659200 -0700
++++ /home/daeden/tmp/automake	2015-09-25 11:32:53.557609300 -0700
+@@ -702,8 +702,8 @@
+ 		   'compile' => "\$(CXX) @cpplike_flags \$(AM_CXXFLAGS) \$(CXXFLAGS)",
+ 		   'ccer' => 'CXX',
+ 		   'compiler' => 'CXXCOMPILE',
+-		   'compile_flag' => '-c',
+-		   'output_flag' => '-o',
++		   'compile_flag' => '/c',
++		   'output_flag' => '/Fo:',
+ 		   'libtool_tag' => 'CXX',
+ 		   'lder' => 'CXXLD',
+ 		   'ld' => '$(CXX)',
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/autotools/patches/libtool.m4.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/autotools/patches/libtool.m4.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/autotools/patches/libtool.m4.patch	(revision 21239)
@@ -0,0 +1,74 @@
+--- ./install/share/aclocal/libtool.m4	2015-09-25 15:51:40.870862200 -0700
++++ /home/daeden/tmp/libtool.m4	2015-09-25 15:42:15.385935100 -0700
+@@ -2382,7 +2382,7 @@
+     # Native MSVC
+     libname_spec='$name'
+     soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+-    library_names_spec='${libname}.dll.lib'
++    library_names_spec='${libname}${shrext_cmds}'
+ 
+     case $build_os in
+     mingw*)
+@@ -3142,7 +3142,7 @@
+ case $host_os in
+   cygwin* | mingw* | pw32* | cegcc*)
+     if test "$GCC" != yes; then
+-      reload_cmds=false
++      reload_cmds='lib /OUT:$output$reload_objs'
+     fi
+     ;;
+   darwin*)
+@@ -4752,7 +4752,7 @@
+       _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'
++        _LT_TAGVAR(archive_cmds, $1)='$CC /LD $libobjs $deplibs $compiler_flags /OUT:$output_objdir/$soname '
+ 	# If the export-symbols file already is a .def file (1st line
+ 	# is EXPORTS), use it as is; otherwise, prepend...
+ 	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+@@ -4761,7 +4761,7 @@
+ 	  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'
++	$CC /LD $output_objdir/$soname.def $libobjs $deplibs $compiler_flags /OUT:$output_objdir/$soname '
+       else
+ 	_LT_TAGVAR(ld_shlibs, $1)=no
+       fi
+@@ -5136,7 +5136,7 @@
+ 	  else
+ 	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $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"~
++	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs~
+ 	  linknames='
+ 	# The linker will not automatically build a static lib if we build a DLL.
+ 	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+@@ -6135,7 +6135,7 @@
+ 	    else
+ 	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $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"~
++	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs~
+ 	    linknames='
+ 	  # The linker will not automatically build a static lib if we build a DLL.
+ 	  # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+@@ -6168,7 +6168,7 @@
+ 	  _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'
++	    _LT_TAGVAR(archive_cmds, $1)='$CC /LD -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags /OUT:$output_objdir/$soname '
+ 	    # If the export-symbols file already is a .def file (1st line
+ 	    # is EXPORTS), use it as is; otherwise, prepend...
+ 	    _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+@@ -6177,7 +6177,7 @@
+ 	      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'
++	    $CC /LD -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags /OUT:$output_objdir/$soname '
+ 	  else
+ 	    _LT_TAGVAR(ld_shlibs, $1)=no
+ 	  fi
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/bbftp/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/bbftp/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/bbftp/install.sh	(revision 21239)
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install bbftp-client-3.2.0
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/bbftp-client-3.2.0.tar.gz' 'bbftp-client-3.2.0.tar.gz'
+
+#Create install directories
+mkdir install src
+
+#Untar 
+tar -zxvf  bbftp-client-3.2.0.tar.gz
+
+#Move bbftp-client into install directory
+mv bbftp-client-3.2.0/* src
+rm -rf bbftp-client-3.2.0
+
+#Apply patches
+cd src 
+
+#Configure and compile
+cd bbftpc
+./configure --prefix=$ISSM_DIR/externalpackages/bbftp/install
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/blas/configs/linux64/make.inc
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/blas/configs/linux64/make.inc	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/blas/configs/linux64/make.inc	(revision 21239)
@@ -0,0 +1,34 @@
+####################################################################
+#  BLAS make include file.                                         #
+#  March 2007                                                      #
+####################################################################
+#
+SHELL = /bin/sh
+#
+#  The machine (platform) identifier to append to the library names
+#
+PLAT = _LINUX
+#  
+#  Modify the FORTRAN and OPTS definitions to refer to the
+#  compiler and desired compiler options for your machine.  NOOPT
+#  refers to the compiler options desired when NO OPTIMIZATION is
+#  selected.  Define LOADER and LOADOPTS to refer to the loader and 
+#  desired load options for your machine.
+#
+FORTRAN  = gfortran
+OPTS     = -fPIC -O3
+DRVOPTS  = $(OPTS)
+NOOPT    =
+LOADER   = gfortran
+LOADOPTS =
+#
+#  The archiver and the flag(s) to use when building archive (library)
+#  If you system has no ranlib, set RANLIB = echo.
+#
+ARCH     = ar
+ARCHFLAGS= cr
+RANLIB   = ranlib
+#
+#  The location and name of the Reference BLAS library.
+#
+BLASLIB      = blas$(PLAT).a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/blas/configs/macosx64/make.inc
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/blas/configs/macosx64/make.inc	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/blas/configs/macosx64/make.inc	(revision 21239)
@@ -0,0 +1,34 @@
+####################################################################
+#  BLAS make include file.                                         #
+#  March 2007                                                      #
+####################################################################
+#
+SHELL = /bin/sh
+#
+#  The machine (platform) identifier to append to the library names
+#
+PLAT = _LINUX
+#  
+#  Modify the FORTRAN and OPTS definitions to refer to the
+#  compiler and desired compiler options for your machine.  NOOPT
+#  refers to the compiler options desired when NO OPTIMIZATION is
+#  selected.  Define LOADER and LOADOPTS to refer to the loader and 
+#  desired load options for your machine.
+#
+FORTRAN  = gfortran
+OPTS     = -fPIC -O3
+DRVOPTS  = $(OPTS)
+NOOPT    =
+LOADER   = gfortran
+LOADOPTS =
+#
+#  The archiver and the flag(s) to use when building archive (library)
+#  If you system has no ranlib, set RANLIB = echo.
+#
+ARCH     = ar
+ARCHFLAGS= cr
+RANLIB   = ranlib
+#
+#  The location and name of the Reference BLAS library.
+#
+BLASLIB      = blas$(PLAT).a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/blas/install-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/blas/install-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/blas/install-linux64.sh	(revision 21239)
@@ -0,0 +1,29 @@
+#!/bin/bash
+set -eu 
+
+#Some cleanup
+rm -rf src install BLAS blas.tgz
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/blas.tgz' 'blas.tgz'
+
+#Untar 
+tar -zxvf  blas.tgz
+
+#Move blas into install directory
+mv BLAS/* src
+rm -rf BLAS
+
+#install
+cd src 
+cp ../configs/linux64/make.inc ./
+make 
+
+#Compile 
+cd ../install
+mkdir lib
+cd lib
+cp ../../src/*.a .
+ln -s blas_LINUX.a blas.a
+ln -s blas_LINUX.a libblas.a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/blas/install-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/blas/install-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/blas/install-macosx64.sh	(revision 21239)
@@ -0,0 +1,29 @@
+#!/bin/bash
+set -eu 
+
+#Some cleanup
+rm -rf src install BLAS blas.tgz
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/blas.tgz' 'blas.tgz'
+
+#Untar 
+tar -zxvf  blas.tgz
+
+#Move blas into install directory
+mv BLAS/* src
+rm -rf BLAS
+
+#install
+cd src 
+cp ../configs/macosx64/make.inc ./
+make 
+
+#Compile 
+cd ../install
+mkdir lib
+cd lib
+cp ../../src/*.a .
+ln -s blas_LINUX.a blas.a
+ln -s blas_LINUX.a libblas.a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/adl.hpp.lonestar.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/adl.hpp.lonestar.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/adl.hpp.lonestar.patch	(revision 21239)
@@ -0,0 +1,7 @@
+33,34c33,35
+<         || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) \
+<         )
+---
+> 		 )
+> //        || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) \
+> //        )
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/adl.hpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/adl.hpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/adl.hpp.patch	(revision 21239)
@@ -0,0 +1,7 @@
+33,34c33,35
+<         || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) \
+<         )
+---
+> 		 )
+> //        || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) \
+> //        )
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/cas128strong.hpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/cas128strong.hpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/cas128strong.hpp.patch	(revision 21239)
@@ -0,0 +1,17 @@
+199c199
+<     explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0)
+---
+>     explicit base_atomic(value_type const& v) BOOST_NOEXCEPT 
+200a201
+> 	memset(&v_, 0, sizeof(v_));
+207c208,209
+<         storage_type value_s = 0;
+---
+> 	storage_type value_s;
+> 	memset(&value_s, 0, sizeof(value_s));
+250c252,254
+<         storage_type expected_s = 0, desired_s = 0;
+---
+> 	storage_type expected_s, desired_s; 
+> 	memset(&expected_s, 0, sizeof(expected_s));
+> 	memset(&desired_s, 0, sizeof(desired_s));
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/darwin.jam.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/darwin.jam.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/darwin.jam.patch	(revision 21239)
@@ -0,0 +1,4 @@
+587c587
+<     "$(.LIBTOOL)" -static -o "$(<:T)"  $(ARFLAGS)  "$(>:T)"
+---
+>     /usr/bin/libtool -static -o "$(<:T)"  $(ARFLAGS)  "$(>:T)"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/darwin.py.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/darwin.py.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/darwin.py.patch	(revision 21239)
@@ -0,0 +1,4 @@
+40c40
+< toolset.flags ('darwin.compile', 'OPTIONS', None, ['-Wno-long-double', '-no-cpp-precomp'])
+---
+> toolset.flags ('darwin.compile', 'OPTIONS', None, ['-Wno-long-double'])
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/gcc-atomic.hpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/gcc-atomic.hpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/gcc-atomic.hpp.patch	(revision 21239)
@@ -0,0 +1,28 @@
+961c961
+<     explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0)
+---
+>     explicit base_atomic(value_type const& v) BOOST_NOEXCEPT
+962a963
+>         memset(&v_, 0, sizeof(v_));
+968c969,970
+<         storage_type tmp = 0;
+---
+>         storage_type tmp;
+>         memset(&tmp, 0, sizeof(tmp));
+983c985,986
+<         storage_type tmp = 0;
+---
+>         storage_type tmp;
+>         memset(&tmp, 0, sizeof(tmp));
+997c1000,1002
+<         storage_type expected_s = 0, desired_s = 0;
+---
+> 	storage_type expected_s, desired_s;
+> 	memset(&expected_s, 0, sizeof(expected_s));
+> 	memset(&desired_s, 0, sizeof(desired_s));
+1013c1018,1020
+<         storage_type expected_s = 0, desired_s = 0;
+---
+> 	storage_type expected_s, desired_s;
+> 	memset(&expected_s, 0, sizeof(expected_s));
+> 	memset(&desired_s, 0, sizeof(desired_s));
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/user-config.jam.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/user-config.jam.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/configs/1.55/user-config.jam.patch	(revision 21239)
@@ -0,0 +1,4 @@
+42c42
+< # using gcc ;
+---
+> using darwin : std0x : "/usr/local/gfortran/bin/x86_64-apple-darwin10-g++" : <cxxflags>-std=gnu++0x;  
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.49-linux.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.49-linux.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.49-linux.sh	(revision 21239)
@@ -0,0 +1,35 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_49_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_49_0.tar.gz' 'boost_1_49_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_49_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_49_0/* src
+rm -rf boost_1_49_0
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python2.7 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+./bjam install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.49-macosx-snowleopard.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.49-macosx-snowleopard.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.49-macosx-snowleopard.sh	(revision 21239)
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_49_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_49_0.tar.gz' 'boost_1_49_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_49_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_49_0/* src
+rm -rf boost_1_49_0
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python2.7 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+#./b2 address-model=32 architecture=x86 cxxflags="-arch i386" variant=release threading=multi install
+./b2 toolset=darwin address-model=32 architecture=x86 variant=release threading=multi install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-discover.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-discover.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-discover.sh	(revision 21239)
@@ -0,0 +1,38 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+patch src/boost/mpl/aux_/config/adl.hpp ./configs/1.55/adl.hpp.patch
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python2.7 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+./bjam install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-linux.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-linux.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-linux.sh	(revision 21239)
@@ -0,0 +1,39 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+#Setting CXXFLAGS to deal with C++11 incompatibility with Matlab's Boost
+export CXXFLAGS='-std=c++98'
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python2.7 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+./bjam install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-lonestar.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-lonestar.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-lonestar.sh	(revision 21239)
@@ -0,0 +1,38 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+patch src/boost/mpl/aux_/config/adl.hpp ./configs/1.55/adl.hpp.lonestar.patch
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python3.2 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+./bjam install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-macosx-el_capitan.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-macosx-el_capitan.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-macosx-el_capitan.sh	(revision 21239)
@@ -0,0 +1,44 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+python2.7 $ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+patch src/boost/atomic/detail/cas128strong.hpp ./configs/1.55/cas128strong.hpp.patch
+patch src/boost/atomic/detail/gcc-atomic.hpp ./configs/1.55/gcc-atomic.hpp.patch
+patch src/tools/build/v2/user-config.jam ./configs/1.55/user-config.jam.patch
+patch src/tools/build/v2/tools/darwin.jam ./configs/1.55/darwin.jam.patch
+patch src/tools/build/v2/tools/darwin.py ./configs/1.55/darwin.py.patch
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python 
+
+#Compile boost
+# Need gcc with iconv installed in a location that has been added to your path
+# export CC=/usr/local/gfortan/bin/gcc 
+# export CXX=/usr/local/gfortran/bin/g++
+./bjam toolset=darwin link=static install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-macosx-mavericks.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-macosx-mavericks.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-macosx-mavericks.sh	(revision 21239)
@@ -0,0 +1,45 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+#patch src/boost/atomic/detail/cas128strong.hpp ./configs/1.55/cas128strong.hpp.patch
+#patch src/boost/atomic/detail/gcc-atomic.hpp ./configs/1.55/gcc-atomic.hpp.patch
+patch src/tools/build/v2/user-config.jam ./configs/1.55/user-config.jam.patch
+patch src/tools/build/v2/tools/darwin.jam ./configs/1.55/darwin.jam.patch
+patch src/tools/build/v2/tools/darwin.py ./configs/1.55/darwin.py.patch
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python2.7 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+# Need gcc with iconv installed in a location that has been added to your path
+./bjam toolset=darwin-std0x link=static install
+
+#./b2 toolset=clang cxxflags=-stdlib=libstdc++ linkflags=-stdlib=libstdc++ -j2 variant=release link=static threading=multi instal
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-macosx-snowleopard.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-macosx-snowleopard.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-macosx-snowleopard.sh	(revision 21239)
@@ -0,0 +1,45 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+#patch src/boost/atomic/detail/cas128strong.hpp ./configs/1.55/cas128strong.hpp.patch
+#patch src/boost/atomic/detail/gcc-atomic.hpp ./configs/1.55/gcc-atomic.hpp.patch
+patch src/tools/build/v2/user-config.jam ./configs/1.55/user-config.jam.patch
+patch src/tools/build/v2/tools/darwin.jam ./configs/1.55/darwin.jam.patch
+patch src/tools/build/v2/tools/darwin.py ./configs/1.55/darwin.py.patch
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python2.7 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+# Need gcc with iconv installed in a location that has been added to your path
+./bjam toolset=darwin-std0x link=static install
+
+#./b2 toolset=clang cxxflags=-stdlib=libstdc++ linkflags=-stdlib=libstdc++ -j2 variant=release link=static threading=multi instal
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-macosx-yosemite.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-macosx-yosemite.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-macosx-yosemite.sh	(revision 21239)
@@ -0,0 +1,46 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+python2.7 $ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+patch src/boost/atomic/detail/cas128strong.hpp ./configs/1.55/cas128strong.hpp.patch
+patch src/boost/atomic/detail/gcc-atomic.hpp ./configs/1.55/gcc-atomic.hpp.patch
+patch src/tools/build/v2/user-config.jam ./configs/1.55/user-config.jam.patch
+patch src/tools/build/v2/tools/darwin.jam ./configs/1.55/darwin.jam.patch
+patch src/tools/build/v2/tools/darwin.py ./configs/1.55/darwin.py.patch
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python 
+
+#Compile boost
+# Need gcc with iconv installed in a location that has been added to your path
+#./bjam toolset=darwin-std0x link=static install
+
+export CC=/usr/local/gfortan/bin/gcc 
+export CXX=/usr/local/gfortran/bin/g++
+./b2 toolset=clang cxxflags=-stdlib=libstdc++ linkflags=-stdlib=libstdc++ -j2 architecture=x86 variant=release link=static threading=multi install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-pleiades.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-pleiades.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-pleiades.sh	(revision 21239)
@@ -0,0 +1,47 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+#patch src/boost/atomic/detail/cas128strong.hpp ./configs/1.55/cas128strong.hpp.patch
+#patch src/boost/atomic/detail/gcc-atomic.hpp ./configs/1.55/gcc-atomic.hpp.patch
+#patch src/tools/build/v2/user-config.jam ./configs/1.55/user-config.jam.patch
+#patch src/tools/build/v2/tools/darwin.jam ./configs/1.55/darwin.jam.patch
+#patch src/tools/build/v2/tools/darwin.py ./configs/1.55/darwin.py.patch
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python2.7 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" \
+	--with-toolset=intel-linux
+
+#Compile boost
+# Need gcc with iconv installed in a location that has been added to your path
+./b2 toolset=intel-linux cxxflags=-static-libstdc++ linkflags=-static-libstdc++ threading=multi install
+#./bjam install
+
+#./b2 toolset=clang cxxflags=-stdlib=libstdc++ linkflags=-stdlib=libstdc++ -j2 variant=release link=static threading=multi instal
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-pleiades_dakota6.2.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-pleiades_dakota6.2.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install-1.55-pleiades_dakota6.2.sh	(revision 21239)
@@ -0,0 +1,38 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+patch src/boost/mpl/aux_/config/adl.hpp ./configs/1.55/adl.hpp.lonestar.patch
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python3.2 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+./bjam install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/boost/install.sh	(revision 21239)
@@ -0,0 +1,35 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_49_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_49_0.tar.gz' 'boost_1_49_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_49_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_49_0/* src
+rm -rf boost_1_49_0
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python3.2 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+./bjam install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/bsdtar/install-win7.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/bsdtar/install-win7.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/bsdtar/install-win7.sh	(revision 21239)
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src libarchive-3.0.3
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/libarchive-3.0.3.tar.gz' 'libarchive-3.0.3.tar.gz'
+
+#Untar 
+tar -zxvf  libarchive-3.0.3.tar.gz
+
+#Move libarchive into src directory
+mv libarchive-3.0.3/* src
+rm -rf libarchive-3.0.3
+
+cd src 
+./configure --prefix="$ISSM_DIR/externalpackages/bsdtar/install" 
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/canos/InterX.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/canos/InterX.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/canos/InterX.m	(revision 21239)
@@ -0,0 +1,82 @@
+function P = InterX(L1,varargin)
+%INTERX Intersection of curves
+%   P = INTERX(L1,L2) returns the intersection points of two curves L1 
+%   and L2. The curves L1,L2 can be either closed or open and are described
+%   by two-row-matrices, where each row contains its x- and y- coordinates.
+%   The intersection of groups of curves (e.g. contour lines, multiply 
+%   connected regions etc) can also be computed by separating them with a
+%   column of NaNs as for example
+%
+%         L  = [x11 x12 x13 ... NaN x21 x22 x23 ...;
+%               y11 y12 y13 ... NaN y21 y22 y23 ...]
+%
+%   P has the same structure as L1 and L2, and its rows correspond to the
+%   x- and y- coordinates of the intersection points of L1 and L2. If no
+%   intersections are found, the returned P is empty.
+%
+%   P = INTERX(L1) returns the self-intersection points of L1. To keep
+%   the code simple, the points at which the curve is tangent to itself are
+%   not included. P = INTERX(L1,L1) returns all the points of the curve 
+%   together with any self-intersection points.
+%   
+%   Example:
+%       t = linspace(0,2*pi);
+%       r1 = sin(4*t)+2;  x1 = r1.*cos(t); y1 = r1.*sin(t);
+%       r2 = sin(8*t)+2;  x2 = r2.*cos(t); y2 = r2.*sin(t);
+%       P = InterX([x1;y1],[x2;y2]);
+%       plot(x1,y1,x2,y2,P(1,:),P(2,:),'ro')
+
+%   Author : NS
+%   Version: 3.0, 21 Sept. 2010
+
+%   Two words about the algorithm: Most of the code is self-explanatory.
+%   The only trick lies in the calculation of C1 and C2. To be brief, this
+%   is essentially the two-dimensional analog of the condition that needs
+%   to be satisfied by a function F(x) that has a zero in the interval
+%   [a,b], namely
+%           F(a)*F(b) <= 0
+%   C1 and C2 exactly do this for each segment of curves 1 and 2
+%   respectively. If this condition is satisfied simultaneously for two
+%   segments then we know that they will cross at some point. 
+%   Each factor of the 'C' arrays is essentially a matrix containing 
+%   the numerators of the signed distances between points of one curve
+%   and line segments of the other.
+
+    %...Argument checks and assignment of L2
+    error(nargchk(1,2,nargin));
+    if nargin == 1,
+        L2 = L1;    hF = @lt;   %...Avoid the inclusion of common points
+    else
+        L2 = varargin{1}; hF = @le;
+    end
+       
+    %...Preliminary stuff
+    x1  = L1(1,:)';  x2 = L2(1,:);
+    y1  = L1(2,:)';  y2 = L2(2,:);
+    dx1 = diff(x1); dy1 = diff(y1);
+    dx2 = diff(x2); dy2 = diff(y2);
+    
+    %...Determine 'signed distances'   
+    S1 = dx1.*y1(1:end-1) - dy1.*x1(1:end-1);
+    S2 = dx2.*y2(1:end-1) - dy2.*x2(1:end-1);
+    
+    C1 = feval(hF,D(bsxfun(@times,dx1,y2)-bsxfun(@times,dy1,x2),S1),0);
+    C2 = feval(hF,D((bsxfun(@times,y1,dx2)-bsxfun(@times,x1,dy2))',S2'),0)';
+
+    %...Obtain the segments where an intersection is expected
+    [i,j] = find(C1 & C2); 
+    if isempty(i),P = zeros(2,0);return; end;
+    
+    %...Transpose and prepare for output
+    i=i'; dx2=dx2'; dy2=dy2'; S2 = S2';
+    L = dy2(j).*dx1(i) - dy1(i).*dx2(j);
+    i = i(L~=0); j=j(L~=0); L=L(L~=0);  %...Avoid divisions by 0
+    
+    %...Solve system of eqs to get the common points
+    P = unique([dx2(j).*S1(i) - dx1(i).*S2(j), ...
+                dy2(j).*S1(i) - dy1(i).*S2(j)]./[L L],'rows')';
+              
+    function u = D(x,y)
+        u = bsxfun(@minus,x(:,1:end-1),y).*bsxfun(@minus,x(:,2:end),y);
+    end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/canos/license.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/canos/license.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/canos/license.txt	(revision 21239)
@@ -0,0 +1,25 @@
+Copyright (c) 2006, Antoni J. Canós
+Copyright (c) 2008, Douglas M. Schwarz
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are 
+met:
+
+    * Redistributions of source code must retain the above copyright 
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright 
+      notice, this list of conditions and the following disclaimer in 
+      the documentation and/or other materials provided with the distribution
+      
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
+POSSIBILITY OF SUCH DAMAGE.
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/canos/licenseNS.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/canos/licenseNS.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/canos/licenseNS.txt	(revision 21239)
@@ -0,0 +1,24 @@
+Copyright (c) 2009, NS
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are 
+met:
+
+    * Redistributions of source code must retain the above copyright 
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright 
+      notice, this list of conditions and the following disclaimer in 
+      the documentation and/or other materials provided with the distribution
+      
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
+POSSIBILITY OF SUCH DAMAGE.
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/canos/selfintersect.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/canos/selfintersect.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/canos/selfintersect.m	(revision 21239)
@@ -0,0 +1,174 @@
+function [x0,y0,segments]=selfintersect(x,y)
+
+%SELFINTERSECT Self-intersections of a curve.
+%
+%    [X0,Y0,SEGMENTS] = SELFINTERSECT(X,Y) computes the locations where
+%    a curve self-intersects in a fast and robust way.
+%    The curve can be broken with NaNs or have vertical segments.
+%    Segments of the curve involved in each of the self-interesections are
+%    also provided.
+%
+%    Vectors X and Y are equal-length vectors of at least four points defining
+%    the curve.
+%    X0 and Y0 are column vectors with the x- and y- coordinates, respectively
+%    of the N self-intersections.
+%    SEGMENTS is an N x 2 matrix containing the pairs of segments involved in
+%    each self-intersection.
+%
+%    This program uses the theory of operation of the file "Fast and Robust Curve
+%    Intersections" submitted by Douglas M. Schwartz (intersections.m, F.Id: 11837).
+%
+%    Example of use
+% 	 N=201;
+% 	 th=linspace(-3*pi,4*pi,N);
+% 	 R=1;
+% 	 x=R*cos(th)+linspace(0,6,N);
+% 	 y=R*sin(th)+linspace(0,1,N);
+%    t0=clock;
+%    [x0,y0,segments]=selfintersect(x,y)
+% 	 etime(clock,t0)
+%    plot(x,y,'b',x0,y0,'.r');
+% 	 axis ('equal'); grid
+
+%
+%    See also INTERSECTIONS.
+%
+%Version: 1.0, December 11, 2006
+%Tested under MATLAB 6.5.0. R13.
+%
+% (c) Antoni J. Canos.
+% ITACA. Techincal University of Valencia (Spain)
+% Email:   ancama2@dcom.upv.es
+
+
+% Input checks.
+error(nargchk(2,2,nargin))
+% x and y must be vectors with same number of points (at least 4 for self-intersection).
+if sum(size(x) > 3) ~= 1 || sum(size(y) > 3) ~= 1 || ...
+		length(x) ~= length(y)
+	error('X and Y must be equal-length vectors of at least 4 points.')
+end
+
+x0=[];
+y0=[];
+segments=[];
+
+% Two similar curves are firstly created.
+x1=x; x2=x;
+y1=y; y2=y;
+
+x1 = x1(:);
+y1 = y1(:);
+x2 = x2(:);
+y2 = y2(:);
+
+% Compute number of line segments in each curve and some differences we'll
+% need later.
+n1 = length(x1) - 1;
+n2 = length(x2) - 1;
+
+dxy1 = diff([x1 y1]);
+dxy2 = diff([x2 y2]);
+
+% Determine the combinations of i and j where the rectangle enclosing the
+% i'th line segment of curve 1 overlaps with the rectangle enclosing the
+% j'th line segment of curve 2.
+[i,j] = find(repmat(min(x1(1:end-1),x1(2:end)),1,n2) <= ...
+	repmat(max(x2(1:end-1),x2(2:end)).',n1,1) & ...
+	repmat(max(x1(1:end-1),x1(2:end)),1,n2) >= ...
+	repmat(min(x2(1:end-1),x2(2:end)).',n1,1) & ...
+	repmat(min(y1(1:end-1),y1(2:end)),1,n2) <= ...
+	repmat(max(y2(1:end-1),y2(2:end)).',n1,1) & ...
+	repmat(max(y1(1:end-1),y1(2:end)),1,n2) >= ...
+	repmat(min(y2(1:end-1),y2(2:end)).',n1,1));
+
+% Removing coincident and adjacent segments.
+remove=find(abs(i-j)<2);
+i(remove)=[];
+j(remove)=[];
+
+% Removing duplicate combinations of segments.
+remove=[];
+for ii=1:size(i,1)
+	ind=find((i(ii)==j(ii:end))&(j(ii)==i(ii:end)));
+	remove=[remove;ii-1+ind];
+end
+i(remove)=[];
+j(remove)=[];
+
+% Find segments pairs which have at least one vertex = NaN and remove them.
+% This line is a fast way of finding such segment pairs.  We take
+% advantage of the fact that NaNs propagate through calculations, in
+% particular subtraction (in the calculation of dxy1 and dxy2, which we
+% need anyway) and addition.
+remove = isnan(sum(dxy1(i,:) + dxy2(j,:),2));
+i(remove) = [];
+j(remove) = [];
+
+% Find segments pairs which have at least one vertex = NaN and remove them.
+% This line is a fast way of finding such segment pairs.  We take
+% advantage of the fact that NaNs propagate through calculations, in
+% particular subtraction (in the calculation of dxy1 and dxy2, which we
+% need anyway) and addition.
+remove = isnan(sum(dxy1(i,:) + dxy2(j,:),2));
+i(remove) = [];
+j(remove) = [];
+
+% Initialize matrices.  We'll put the T's and B's in matrices and use them
+% one column at a time.  For some reason, the \ operation below is faster
+% on my machine when A is sparse so we'll initialize a sparse matrix with
+% the fixed values and then assign the changing values in the loop.
+n = length(i);
+T = zeros(4,n);
+A = sparse([1 2 3 4],[3 3 4 4],-1,4,4,8);
+B = -[x1(i) x2(j) y1(i) y2(j)].';
+index_dxy1 = [1 3];  %  A(1) = A(1,1), A(3) = A(3,1)
+index_dxy2 = [6 8];  %  A(6) = A(2,2), A(8) = A(4,2)
+
+% Loop through possibilities.  Set warning not to trigger for anomalous
+% results (i.e., when A is singular).
+warning_state = warning('off','MATLAB:singularMatrix');
+try
+	for k = 1:n
+		A(index_dxy1) = dxy1(i(k),:);
+		A(index_dxy2) = dxy2(j(k),:);
+		T(:,k) = A\B(:,k);
+	end
+	warning(warning_state)
+catch
+	warning(warning_state)
+	rethrow(lasterror)
+end
+
+% Find where t1 and t2 are between 0 and 1 and return the corresponding x0
+% and y0 values.  Anomalous segment pairs can be segment pairs that are
+% colinear (overlap) or the result of segments that are degenerate (end
+% points the same).  The algorithm will return an intersection point that
+% is at the center of the overlapping region.  Because of the finite
+% precision of floating point arithmetic it is difficult to predict when
+% two line segments will be considered to overlap exactly or even intersect
+% at an end point.  For this algorithm, an anomaly is detected when any
+% element of the solution (a single column of T) is a NaN.
+
+in_range = T(1,:) >= 0 & T(2,:) >= 0 & T(1,:) < 1 & T(2,:) < 1;
+anomalous = any(isnan(T));
+if any(anomalous)
+	ia = i(anomalous);
+	ja = j(anomalous);
+	% set x0 and y0 to middle of overlapping region.
+	T(3,anomalous) = (max(min(x1(ia),x1(ia+1)),min(x2(ja),x2(ja+1))) + ...
+		min(max(x1(ia),x1(ia+1)),max(x2(ja),x2(ja+1))))/2;
+	T(4,anomalous) = (max(min(y1(ia),y1(ia+1)),min(y2(ja),y2(ja+1))) + ...
+		min(max(y1(ia),y1(ia+1)),max(y2(ja),y2(ja+1))))/2;
+	x0 = T(3,in_range | anomalous).';
+	y0 = T(4,in_range | anomalous).';
+	i=i(in_range | anomalous);
+	j=j(in_range | anomalous);
+else
+	x0 = T(3,in_range).';
+	y0 = T(4,in_range).';
+	i=i(in_range);
+	j=j(in_range);
+end
+
+segments=sort([i,j],2);
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cccl/install-win7.orig.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cccl/install-win7.orig.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cccl/install-win7.orig.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install cccl-0.03
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/cccl-0.03.tar.gz' 'cccl-0.03.tar.gz'
+
+#Untar 
+tar -zxvf  cccl-0.03.tar.gz
+
+#Move cccl into install directory
+mv cccl-0.03/* src
+rm -rf cccl-0.03
+
+cd src 
+
+#Compile
+./configure --prefix="$ISSM_DIR/externalpackages/cccl/install"
+
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cccl/install-win7.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cccl/install-win7.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cccl/install-win7.sh	(revision 21239)
@@ -0,0 +1,11 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src cccl-0.03
+mkdir install 
+mkdir install/bin
+
+#Move cccl into install directory
+cp issm/cccl install/bin
+chmod 755 install/bin/cccl
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cccl/issm/cccl
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cccl/issm/cccl	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cccl/issm/cccl	(revision 21239)
@@ -0,0 +1,113 @@
+#!/bin/sh
+
+# cccl 
+# Wrapper around MS's cl.exe and link.exe to make them act more like
+# Unix cc and ld
+#
+# Copyright (C) 2000-2003 Geoffrey Wossum (gwossum@acm.org)
+#
+# 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 optsion) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+
+usage()
+{
+    cat <<EOF
+Usage: cccl [OPTIONS]
+
+cccl is a wrapper around Microsoft's cl.exe and link.exe.  It translates
+parameters that Unix cc's and ld's understand to parameters that cl and link
+understand.
+EOF
+    exit $1
+}
+
+prog=cl
+
+### Run through every optsion and convert it to the proper MS one
+while test $# -gt 0; do
+
+    case "$1" in
+    --version)
+	cat <<EOF
+cccl 0.03
+
+Copyright 2000-2003 Geoffrey Wossum
+This is free software; see the source for copying conditions.  There is NO
+waranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+EOF
+	exit 1;
+	;;
+
+    -o)
+	# specifying output file, is it an object or an executable
+	shift
+	case "$1" in
+			
+		*.exe)
+			opts="$opts /Fe$1";
+		;;
+
+
+		*.mex*)
+			opts="$opts /OUT:$1"
+		;;
+
+		*.o | *.obj)
+			opts="$opts /Fo$1"
+		;;
+
+		*)
+			opts="$opts /Fo$1"
+		;;
+    esac
+	;;
+	-fPIC)
+	#do nothing
+	;;
+	-g)
+	#do nothing
+	;;
+	-pthread)
+	#do nothing
+	;;
+	-fno-omit-frame-pointer)
+	#do nothing
+	;;
+   -I*)
+	   include=`echo $1 | sed 's/-I//g'`
+	   include=`cygpath -m "$include"`
+	   include="/I\"$include\""
+	   includeopts="$includeopts $include"
+   ;;
+	-L*)
+		library=`echo $1 | sed 's/-L//g'`
+		library=`cygpath -m $library`
+		string="/link /LIBPATH:\"$library\""
+		opts="$opts $string"
+	;;
+	*)
+		#do nothing
+		opts="$opts $1"
+	;;
+
+	
+    esac
+    shift
+done
+			
+#pass all our processing through the echo command, so we are sure that the string has no quirk, 
+#and that once passed by exec to cl, everything works fine.
+command=`echo "$prog "$includeopts" $opts /nologo"`
+exec $command
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/chaco.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/chaco.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/chaco.h	(revision 21239)
@@ -0,0 +1,39 @@
+/*!\file: chaco.h
+ * \brief prototypes for chaco library
+ */ 
+
+#ifndef _CHACO_INCLUDES_H_
+#define  _CHACO_INCLUDES_H_
+
+#include "./defs.h"
+#include "./params.h"
+
+extern "C" int       interface( int       nvtxs,		/* number of vertices in full graph */
+		int      *start,		/* start of edge list for each vertex */
+		int      *adjacency,		/* edge list data */
+		int      *vwgts,		/* weights for all vertices */
+		float    *ewgts,		/* weights for all edges */
+		float    *x, 
+		float    *y, 
+		float    *z,		/* coordinates for inertial method */
+		char     *outassignname,	/* name of assignment output file */
+		char     *outfilename,		/* output file name */
+		short    *assignment,		/* set number of each vtx (length n) */
+		int       architecture,		/* 0 => hypercube, d => d-dimensional mesh */
+		int       ndims_tot,		/* total number of cube dimensions to divide */
+		int       mesh_dims[3],		/* dimensions of mesh of processors */
+		double   *goal,			/* desired set sizes for each set */
+		int       global_method,	/* global partitioning algorithm */
+		int       local_method,		/* local partitioning algorithm */
+		int       rqi_flag,		/* should I use RQI/Symmlq eigensolver? */
+		int       vmax,			/* how many vertices to coarsen down to? */
+		int       ndims,		/* number of eigenvectors (2^d sets) */
+		double    eigtol,		/* tolerance on eigenvectors */
+		long      seed);			/* for random graph mutations */
+
+extern "C" void      read_params(FILE* pfile);	/* file with new user parameters */
+extern "C" void      smalloc_stats(void);
+extern "C" double*   smalloc(unsigned int n); /* number of bytes to be allocated */
+
+#endif //ifndef _CHACO_INCLUDES_H_
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/chaco.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/chaco.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/chaco.patch	(revision 21239)
@@ -0,0 +1,572 @@
+Only in src/code/assign: assign.o
+diff -rc src/code/assign/assign_out.c old/code/assign/assign_out.c
+*** src/code/assign/assign_out.c	2010-07-16 16:28:47.352242454 -0700
+--- old/code/assign/assign_out.c	1995-08-08 14:32:10.000000000 -0700
+***************
+*** 3,9 ****
+   * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */
+  
+  #include	<stdio.h>
+- #include	"defs.h"
+  
+  static void assign_out_normal(), assign_out_inv();
+  
+--- 3,8 ----
+Only in src/code/assign: assign_out.o
+Only in src/code/assign: mapper.o
+Only in src/code/assign: median.o
+Only in src/code/assign: merge_assign.o
+Only in src/code/assign: rec_median.o
+Only in src/code/assign: rotate.o
+Only in src/code/assign: y2x.o
+Only in src/code/bpmatch: checkbp.o
+Only in src/code/bpmatch: genvals2d.o
+Only in src/code/bpmatch: genvals3d.o
+Only in src/code/bpmatch: inits2d.o
+Only in src/code/bpmatch: inits3d.o
+Only in src/code/bpmatch: map2d.o
+Only in src/code/bpmatch: map3d.o
+Only in src/code/bpmatch: movevtxs.o
+Only in src/code/bpmatch: sorts2d.o
+Only in src/code/bpmatch: sorts3d.o
+Only in src/code: chacominusblas.a
+Only in src/code/coarsen: coarsen1.o
+Only in src/code/coarsen: coarsen.o
+Only in src/code/coarsen: interpolate.o
+Only in src/code/coarsen: makeccoords.o
+Only in src/code/coarsen: makefgraph.o
+Only in src/code/coarsen: makev2cv.o
+Only in src/code/coarsen: maxmatch1.o
+Only in src/code/coarsen: maxmatch2.o
+Only in src/code/coarsen: maxmatch3.o
+Only in src/code/coarsen: maxmatch4.o
+Only in src/code/coarsen: maxmatch5.o
+Only in src/code/coarsen: maxmatch.o
+Only in src/code/connect: add_edges.o
+Only in src/code/connect: connected.o
+Only in src/code/connect: find_edges.o
+Only in src/code/eigen: bidir.o
+Only in src/code/eigen: bisect.o
+Only in src/code/eigen: checkeig_ext.o
+Only in src/code/eigen: checkeig.o
+Only in src/code/eigen: checkorth.o
+Only in src/code/eigen: cksturmcnt.o
+Only in src/code/eigen: eigensolve.o
+diff -rc src/code/eigen/get_extval.c old/code/eigen/get_extval.c
+*** src/code/eigen/get_extval.c	2010-07-16 16:28:47.353242463 -0700
+--- old/code/eigen/get_extval.c	1995-08-08 14:32:20.000000000 -0700
+***************
+*** 4,10 ****
+  
+  #include <math.h>
+  #include <stdio.h>
+- #include "defs.h"
+  
+  /* Finds first extended eigenpair of system corresponding to
+     tridiagonal T using using Rafael's bisection technique. */
+--- 4,9 ----
+Only in src/code/eigen: get_extval.o
+Only in src/code/eigen: get_ritzvals.o
+Only in src/code/eigen: lanc_seconds.o
+Only in src/code/eigen: lanczos_ext_float.o
+Only in src/code/eigen: lanczos_ext.o
+Only in src/code/eigen: lanczos_FO.o
+Only in src/code/eigen: lanczos_SO_float.o
+Only in src/code/eigen: lanczos_SO.o
+Only in src/code/eigen: lanpause.o
+Only in src/code/eigen: makeorthlnk.o
+Only in src/code/eigen: mkeigvecs.o
+Only in src/code/eigen: mkscanlist.o
+Only in src/code/eigen: orthog1.o
+Only in src/code/eigen: orthogonalize.o
+Only in src/code/eigen: orthogvec.o
+Only in src/code/eigen: ql.o
+Only in src/code/eigen: rqi_ext.o
+Only in src/code/eigen: rqi.o
+Only in src/code/eigen: scale_diag.o
+Only in src/code/eigen: scanmax.o
+Only in src/code/eigen: scanmin.o
+Only in src/code/eigen: solistout.o
+Only in src/code/eigen: sorthog.o
+Only in src/code/eigen: splarax.o
+Only in src/code/eigen: sturmcnt.o
+Only in src/code/eigen: Tevec.o
+Only in src/code/eigen: tri_solve.o
+Only in src/code/eigen: warnings.o
+Only in src/code/graph: check_graph.o
+Only in src/code/graph: free_graph.o
+Only in src/code/graph: graph_out.o
+Only in src/code/graph: reformat.o
+Only in src/code/graph: subgraph.o
+Only in src/code/inertial: eigenvec2.o
+Only in src/code/inertial: eigenvec3.o
+Only in src/code/inertial: inertial1d.o
+Only in src/code/inertial: inertial2d.o
+Only in src/code/inertial: inertial3d.o
+Only in src/code/inertial: inertial.o
+Only in src/code/inertial: make_subgeom.o
+Only in src/code/input: check_input.o
+Only in src/code/input: input_assign.o
+Only in src/code/input: input_geom.o
+Only in src/code/input: input_graph.o
+Only in src/code/input: input.o
+Only in src/code/input: read_params.o
+Only in src/code/input: read_val.o
+Only in src/code/input: reflect_input.o
+Only in src/code/internal: check_internal.o
+Only in src/code/internal: force_internal.o
+Only in src/code/internal: improve_internal.o
+Only in src/code/klspiff: bilistops.o
+Only in src/code/klspiff: buckets1.o
+Only in src/code/klspiff: buckets_bi.o
+Only in src/code/klspiff: buckets.o
+Only in src/code/klspiff: coarsen_kl.o
+Only in src/code/klspiff: compress_ewgts.o
+Only in src/code/klspiff: count_weights.o
+Only in src/code/klspiff: kl_init.o
+Only in src/code/klspiff: kl_output.o
+Only in src/code/klspiff: klspiff.o
+Only in src/code/klspiff: make_bndy_list.o
+Only in src/code/klspiff: make_kl_list.o
+Only in src/code/klspiff: nway_kl.o
+Only in src/code/klvspiff: bpm_improve.o
+Only in src/code/klvspiff: bucketsv.o
+Only in src/code/klvspiff: clear_dvals.o
+Only in src/code/klvspiff: coarsen_klv.o
+Only in src/code/klvspiff: countup_vtx_sep.o
+Only in src/code/klvspiff: find_bndy.o
+Only in src/code/klvspiff: flatten.o
+Only in src/code/klvspiff: flow.o
+Only in src/code/klvspiff: klv_init.o
+Only in src/code/klvspiff: klvspiff.o
+Only in src/code/klvspiff: make_bpgraph.o
+Only in src/code/klvspiff: make_sep_list.o
+diff -rc src/code/klvspiff/matching.c old/code/klvspiff/matching.c
+*** src/code/klvspiff/matching.c	2010-07-16 16:28:47.356242493 -0700
+--- old/code/klvspiff/matching.c	1996-03-11 10:24:25.000000000 -0800
+***************
+*** 6,12 ****
+     code provided by Ed Rothberg at SGI. */
+  
+  #include <stdio.h>
+- #include "defs.h"
+  
+  #define  TRUE  1
+  #define  FALSE 0
+--- 6,11 ----
+Only in src/code/klvspiff: matching.o
+Only in src/code/klvspiff: nway_klv.o
+diff -rc src/code/main/defs.h old/code/main/defs.h
+*** src/code/main/defs.h	2010-07-16 16:28:47.359242522 -0700
+--- old/code/main/defs.h	1995-08-08 14:32:41.000000000 -0700
+***************
+*** 1,39 ****
+! #ifndef _CHACO_DEFS_H_
+! #define _CHACO_DEFS_H_
+! 
+  #define TRUE		1
+  #define FALSE		0
+  
+! #ifndef _HAVE_CHACO_ //protect ISSM compilation. This symbol is defined when we compile ISSM
+! 
+! 	#define	max(A, B)	((A) > (B) ? (A) : (B))
+! 	#define	min(A, B)	((A) < (B) ? (A) : (B))
+! 	#define sign(A)		((A) <  0  ? -1  :  1)
+! 	#define absval(A)	((A) <  0  ? -(A): (A))
+! 
+! 	/* Define constants that are needed in various places */
+! 	#define	PI	3.141592653589793
+! 	#define	TWOPI	6.283185307179586
+! 	#define HALFPI  1.570796326794896
+! 
+!     #define check_graph chaco_check_graph
+! 
+! 
+! 	#ifdef MATLAB
+! 		#include "mat.h"
+! 		#include "mex.h"
+! 		#include "matrix.h"
+! 	   
+! 		#define printf mexPrintf
+! 		#define fprintf(file,...) (file == stdout || file == stderr ? mexPrintf(__VA_ARGS__) : fprintf(file,__VA_ARGS__))
+! 		#define malloc mxMalloc
+! 		#define calloc mxCalloc
+! 		#define realloc mxRealloc
+! 		#define free mxFree
+! 		#define exit(status) mexErrMsgTxt("exit=" #status)
+! 
+! 	#endif
+! 
+! #endif  //#ifndef _HAVE_CHACO_ 
+! 
+! #endif //ifndef _CHACO_DEFS_H_
+--- 1,11 ----
+! #define	max(A, B)	((A) > (B) ? (A) : (B))
+! #define	min(A, B)	((A) < (B) ? (A) : (B))
+! #define sign(A)		((A) <  0  ? -1  :  1)
+! #define absval(A)	((A) <  0  ? -(A): (A))
+  #define TRUE		1
+  #define FALSE		0
+  
+! /* Define constants that are needed in various places */
+! #define	PI	3.141592653589793
+! #define	TWOPI	6.283185307179586
+! #define HALFPI  1.570796326794896
+Only in src/code/main: interface.o
+Only in src/code/main: main.o
+diff -rc src/code/main/params.h old/code/main/params.h
+*** src/code/main/params.h	2010-07-16 16:28:47.361242541 -0700
+--- old/code/main/params.h	1995-08-08 14:32:43.000000000 -0700
+***************
+*** 1,12 ****
+- #ifndef _CHACO_PARAMS_H_
+- #define _CHACO_PARAMS_H_
+- 
+- 
+  #define NAME_LENGTH	80	/* Maximum length of file name */
+  #define LINE_LENGTH	200	/* Length of input files read at once */
+  
+  #define MAXDIMS		3	/* Most cuts allowed at one time */
+  #define MAXSETS		8	/* 2^MAXDIMS */
+- 
+- 
+- #endif //ifndef _CHACO_PARAMS_H_
+--- 1,5 ----
+Only in src/code/main: user_params.o
+diff -rc src/code/Makefile old/code/Makefile
+*** src/code/Makefile	2010-07-21 18:22:19.909939194 -0700
+--- old/code/Makefile	1997-10-02 10:23:22.000000000 -0700
+***************
+*** 2,18 ****
+  DEST=		${DEST_DIR}/chaco
+  CC = 		gcc
+  IFLAG =		-Imain
+! #IFLAG =		-Imain -I/usr/local/pkgs/matlab-7.6/extern/include
+! #CFLAGS =	-O2
+! #OFLAGS =	-O2
+! #CFLAGS =	-fPIC -fno-omit-frame-pointer -D_GNU_SOURCE -pthread -fexceptions
+! CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -g
+! #CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -DMATLAB
+! OFLAGS =	-O2 
+! #AR =             /usr/ccs/bin/ar rcv   # for solaris 2
+! AR =             /usr/bin/ar rcv
+! #RANLIB =         /usr/ccs/bin/ranlib   # for solaris 2
+! RANLIB =         /usr/bin/ranlib
+  
+  FILES.c=	main/user_params.c main/interface.c main/main.c \
+  		submain/balance.c submain/divide.c submain/submain.c \
+--- 2,9 ----
+  DEST=		${DEST_DIR}/chaco
+  CC = 		gcc
+  IFLAG =		-Imain
+! CFLAGS =	-O2
+! OFLAGS =	-O2
+  
+  FILES.c=	main/user_params.c main/interface.c main/main.c \
+  		submain/balance.c submain/divide.c submain/submain.c \
+***************
+*** 96,196 ****
+  		util/update.c  util/vecout.c util/vecran.c \
+                  util/vecscale.c 
+  
+- 
+- FILESMINUSBLAS.c=	main/user_params.c main/interface.c main/main.c \
+- 		submain/balance.c submain/divide.c submain/submain.c \
+- 		input/input_assign.c \
+- 		input/check_input.c input/input.c input/input_geom.c \
+- 		input/input_graph.c input/read_params.c input/reflect_input.c \
+- 		input/read_val.c \
+- 		graph/check_graph.c graph/free_graph.c \
+- 		graph/reformat.c graph/subgraph.c graph/graph_out.c \
+- 		inertial/eigenvec2.c inertial/eigenvec3.c inertial/inertial.c \
+- 		inertial/inertial1d.c inertial/inertial2d.c \
+- 		inertial/inertial3d.c inertial/make_subgeom.c \
+- 		klspiff/buckets.c klspiff/buckets_bi.c klspiff/buckets1.c \
+- 		klspiff/bilistops.c klspiff/coarsen_kl.c klspiff/count_weights.c \
+- 		klspiff/compress_ewgts.c klspiff/kl_init.c klspiff/kl_output.c \
+- 		klspiff/klspiff.c klspiff/make_bndy_list.c \
+- 		klspiff/make_kl_list.c klspiff/nway_kl.c \
+- 		klvspiff/bpm_improve.c klvspiff/bucketsv.c \
+- 		klvspiff/clear_dvals.c klvspiff/coarsen_klv.c \
+- 		klvspiff/countup_vtx_sep.c klvspiff/find_bndy.c klvspiff/flow.c \
+- 		klvspiff/klv_init.c klvspiff/klvspiff.c klvspiff/make_bpgraph.c \
+- 		klvspiff/make_sep_list.c klvspiff/matching.c klvspiff/nway_klv.c \
+- 		klvspiff/flatten.c \
+- 		coarsen/coarsen.c coarsen/interpolate.c coarsen/makefgraph.c \
+- 		coarsen/makeccoords.c \
+- 		coarsen/coarsen1.c coarsen/makev2cv.c \
+- 		coarsen/maxmatch.c coarsen/maxmatch1.c coarsen/maxmatch2.c \
+- 		coarsen/maxmatch3.c coarsen/maxmatch4.c coarsen/maxmatch5.c \
+- 		connect/add_edges.c connect/connected.c connect/find_edges.c \
+- 		eigen/bidir.c eigen/bisect.c eigen/checkeig.c \
+- 		eigen/checkeig_ext.c \
+- 		eigen/checkorth.c eigen/cksturmcnt.c eigen/mkeigvecs.c\
+- 		eigen/eigensolve.c eigen/get_extval.c eigen/get_ritzvals.c \
+- 		eigen/lanczos_FO.c eigen/lanczos_SO.c eigen/lanczos_SO_float.c \
+- 		eigen/lanczos_ext.c eigen/lanczos_ext_float.c eigen/lanc_seconds.c\
+- 		eigen/lanpause.c eigen/makeorthlnk.c eigen/mkscanlist.c \
+- 		eigen/orthog1.c eigen/orthogonalize.c eigen/orthogvec.c \
+- 		eigen/ql.c eigen/rqi.c eigen/rqi_ext.c eigen/scale_diag.c \
+- 		eigen/scanmax.c eigen/scanmin.c eigen/solistout.c \
+-                 eigen/sorthog.c eigen/splarax.c eigen/sturmcnt.c \
+- 		eigen/Tevec.c eigen/tri_solve.c eigen/warnings.c \
+- 		symmlq/aprod.c symmlq/msolve.c symmlq/pow_dd.c \
+- 		symmlq/symmlq.c  \
+- 		tinvit/tinvit.c tinvit/pythag.c tinvit/epslon.c \
+- 		optimize/determinant.c optimize/func2d.c \
+- 		optimize/func3d.c optimize/opt2d.c optimize/opt3d.c \
+- 		assign/assign.c assign/assign_out.c assign/mapper.c \
+- 		assign/median.c assign/merge_assign.c \
+- 		assign/rec_median.c assign/rotate.c assign/y2x.c \
+- 		bpmatch/checkbp.c bpmatch/inits2d.c bpmatch/inits3d.c \
+- 		bpmatch/genvals2d.c bpmatch/genvals3d.c bpmatch/map2d.c \
+- 		bpmatch/map3d.c bpmatch/movevtxs.c \
+- 		bpmatch/sorts2d.c bpmatch/sorts3d.c \
+- 		refine_map/compute_cube_edata.c refine_map/compute_cube_vdata.c \
+- 		refine_map/refine_cube.c refine_map/update_cube_edata.c \
+- 		refine_map/update_cube_vdata.c refine_map/find_edge_cube.c \
+- 		refine_map/init_cube_edata.c refine_map/compute_mesh_edata.c \
+- 		refine_map/compute_mesh_vdata.c refine_map/find_edge_mesh.c \
+- 		refine_map/init_mesh_edata.c refine_map/refine_mesh.c \
+- 		refine_map/update_mesh_edata.c refine_map/update_mesh_vdata.c \
+- 		refine_map/refine_map.c refine_map/make_comm_graph.c \
+- 		refine_part/refine_part.c refine_part/kl_refine.c \
+- 		refine_part/make_maps_ref.c refine_part/make_terms_ref.c \
+- 		internal/force_internal.c internal/improve_internal.c \
+- 		internal/check_internal.c \
+- 		misc/define_subcubes.c misc/define_submeshes.c \
+- 		misc/divide_procs.c misc/merge_goals.c misc/make_term_props.c \
+- 		misc/count.c misc/countup.c misc/countup_cube.c \
+- 		misc/countup_mesh.c misc/make_subgoal.c \
+- 		misc/find_maxdeg.c misc/make_maps.c misc/make_setlists.c \
+- 		misc/sequence.c misc/perturb.c misc/simple_part.c \
+- 		misc/time_kernels.c misc/timing.c \
+- 		util/affirm.c util/array_alloc_2D.c util/bit_reverse.c \
+- 		util/checkpnt.c util/cpvec.c util/dot.c \
+- 		util/doubleout.c util/input_int.c util/gray.c \
+- 		util/machine_params.c util/makevwsqrt.c util/mkvec.c util/norm.c \
+-                 util/normalize.c util/mergesort.c \
+-                 util/randomize.c util/smalloc.c util/bail.c \
+- 		util/scadd.c util/seconds.c util/setvec.c util/shell_sort.c \
+- 		util/strout.c util/tri_prod.c util/true_or_false.c \
+- 		util/update.c  util/vecout.c util/vecran.c \
+-                 util/vecscale.c 
+- 
+  FILES.o=	$(FILES.c:.c=.o) 
+- FILESMINUSBLAS.o=	$(FILESMINUSBLAS.c:.c=.o) 
+- 
+- 
+- ${DEST}:	${FILES.c} chaco.a Makefile
+- 		${CC} ${OFLAGS} chaco.a -lm -o ${DEST}
+  
+- chaco.a:	${FILES.o}
+- 		${AR} chaco.a ${FILES.o} ; ${RANLIB} chaco.a
+  
+! chacominusblas.a:	${FILESMINUSBLAS.o}
+! 		${AR} chacominusblas.a ${FILESMINUSBLAS.o} ; ${RANLIB} chacominusblas.a
+  
+  lint:
+  		lint ${IFLAG} ${FILES.c} -lm
+--- 87,97 ----
+  		util/update.c  util/vecout.c util/vecran.c \
+                  util/vecscale.c 
+  
+  FILES.o=	$(FILES.c:.c=.o) 
+  
+  
+! ${DEST}:	${FILES.o} Makefile
+! 		${CC} ${OFLAGS} ${FILES.o} -lm -o ${DEST}
+  
+  lint:
+  		lint ${IFLAG} ${FILES.c} -lm
+Only in src/code/misc: count.o
+Only in src/code/misc: countup_cube.o
+Only in src/code/misc: countup_mesh.o
+Only in src/code/misc: countup.o
+Only in src/code/misc: define_subcubes.o
+Only in src/code/misc: define_submeshes.o
+Only in src/code/misc: divide_procs.o
+Only in src/code/misc: find_maxdeg.o
+Only in src/code/misc: make_maps.o
+Only in src/code/misc: make_setlists.o
+Only in src/code/misc: make_subgoal.o
+Only in src/code/misc: make_term_props.o
+Only in src/code/misc: merge_goals.o
+Only in src/code/misc: perturb.o
+Only in src/code/misc: sequence.o
+Only in src/code/misc: simple_part.o
+Only in src/code/misc: time_kernels.o
+diff -rc src/code/misc/timing.c old/code/misc/timing.c
+*** src/code/misc/timing.c	2010-07-16 16:28:47.366242590 -0700
+--- old/code/misc/timing.c	1997-01-03 09:10:52.000000000 -0800
+***************
+*** 3,9 ****
+   * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */
+  
+  #include   <stdio.h>
+- #include   "defs.h"
+  
+  /* Timing parameters. */
+  
+--- 3,8 ----
+Only in src/code/misc: timing.o
+Only in src/code/optimize: determinant.o
+Only in src/code/optimize: func2d.o
+Only in src/code/optimize: func3d.o
+Only in src/code/optimize: opt2d.o
+Only in src/code/optimize: opt3d.o
+Only in src/code/refine_map: compute_cube_edata.o
+Only in src/code/refine_map: compute_cube_vdata.o
+Only in src/code/refine_map: compute_mesh_edata.o
+Only in src/code/refine_map: compute_mesh_vdata.o
+Only in src/code/refine_map: find_edge_cube.o
+Only in src/code/refine_map: find_edge_mesh.o
+Only in src/code/refine_map: init_cube_edata.o
+Only in src/code/refine_map: init_mesh_edata.o
+Only in src/code/refine_map: make_comm_graph.o
+Only in src/code/refine_map: refine_cube.o
+Only in src/code/refine_map: refine_map.o
+Only in src/code/refine_map: refine_mesh.o
+Only in src/code/refine_map: update_cube_edata.o
+Only in src/code/refine_map: update_cube_vdata.o
+Only in src/code/refine_map: update_mesh_edata.o
+Only in src/code/refine_map: update_mesh_vdata.o
+Only in src/code/refine_part: kl_refine.o
+Only in src/code/refine_part: make_maps_ref.o
+Only in src/code/refine_part: make_terms_ref.o
+Only in src/code/refine_part: refine_part.o
+Only in src/code/submain: balance.o
+Only in src/code/submain: divide.o
+Only in src/code/submain: submain.o
+Only in src/code/symmlq: aprod.o
+Only in src/code/symmlq: msolve.o
+Only in src/code/symmlq: pow_dd.o
+diff -rc src/code/symmlq/symmlqblas.f old/code/symmlq/symmlqblas.f
+*** src/code/symmlq/symmlqblas.f	2010-07-21 18:09:10.370123273 -0700
+--- old/code/symmlq/symmlqblas.f	2010-07-21 14:02:09.633743650 -0700
+***************
+*** 16,22 ****
+  c     uses unrolled loops for increments equal to one.
+  c     jack dongarra, linpack, 3/11/78.
+  c
+!       double precision dx(1),dy(1),da
+        integer i,incx,incy,ix,iy,m,mp1,n
+  c
+        if(n.le.0)return
+--- 16,22 ----
+  c     uses unrolled loops for increments equal to one.
+  c     jack dongarra, linpack, 3/11/78.
+  c
+!       double precision dx(*),dy(*),da
+        integer i,incx,incy,ix,iy,m,mp1,n
+  c
+        if(n.le.0)return
+Only in src/code/symmlq: symmlqblas.o
+Only in src/code/symmlq: symmlq.o
+Only in src/code/tinvit: epslon.o
+Only in src/code/tinvit: pythag.o
+Only in src/code/tinvit: tinvit.o
+Only in src/code/util: affirm.o
+Only in src/code/util: array_alloc_2D.o
+diff -rc src/code/util/bail.c old/code/util/bail.c
+*** src/code/util/bail.c	2010-07-16 16:28:47.368242609 -0700
+--- old/code/util/bail.c	1995-08-08 14:33:01.000000000 -0700
+***************
+*** 4,10 ****
+  
+  #include	<stdio.h>
+  #include	<string.h>
+- #include	"defs.h"
+  
+  /* Wrapper for exit() - print message and exit with status code. Exit code
+     of 0 indicates normal termination. Exit code of 1 indicates early 
+--- 4,9 ----
+***************
+*** 15,20 ****
+--- 14,20 ----
+  int       status;
+  {
+      extern FILE *Output_File;		/* Output file or NULL */
++     void      exit();
+  
+      if (msg != NULL && (int) strlen(msg) > 0) {
+          printf("%s\n", msg);
+Only in src/code/util: bail.o
+Only in src/code/util: bit_reverse.o
+diff -rc src/code/util/checkpnt.c old/code/util/checkpnt.c
+*** src/code/util/checkpnt.c	2010-07-16 16:28:47.370242629 -0700
+--- old/code/util/checkpnt.c	1995-08-08 14:33:01.000000000 -0700
+***************
+*** 4,10 ****
+  
+  #include	<stdio.h>
+  #include	<string.h>
+- #include	"defs.h"
+  
+  /* Debug break point. */
+  void      checkpnt(tag)
+--- 4,9 ----
+Only in src/code/util: checkpnt.o
+Only in src/code/util: cpvec.o
+Only in src/code/util: dot.o
+diff -rc src/code/util/doubleout.c old/code/util/doubleout.c
+*** src/code/util/doubleout.c	2010-07-16 16:28:47.372242648 -0700
+--- old/code/util/doubleout.c	1995-08-08 14:33:02.000000000 -0700
+***************
+*** 3,9 ****
+   * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */
+  
+  #include  <stdio.h>
+- #include  "defs.h"
+  
+  /* Print a double precision number with filtering format to screen. */
+  void      doubleout(number, mode)
+--- 3,8 ----
+Only in src/code/util: doubleout.o
+Only in src/code/util: gray.o
+Only in src/code/util: input_int.o
+Only in src/code/util: machine_params.o
+Only in src/code/util: makevwsqrt.o
+Only in src/code/util: mergesort.o
+Only in src/code/util: mkvec.o
+Only in src/code/util: normalize.o
+Only in src/code/util: norm.o
+Only in src/code/util: randomize.o
+Only in src/code/util: scadd.o
+Only in src/code/util: seconds.o
+Only in src/code/util: setvec.o
+Only in src/code/util: shell_sort.o
+diff -rc src/code/util/smalloc.c old/code/util/smalloc.c
+*** src/code/util/smalloc.c	2010-07-16 16:28:47.375242677 -0700
+--- old/code/util/smalloc.c	1996-03-11 10:44:07.000000000 -0800
+***************
+*** 4,10 ****
+  
+  #include <stdio.h>
+  #include <malloc.h>
+- #include "defs.h"
+  
+  static int nmalloc = 0;		/* number of calls to malloc */
+  static int nfree = 0;		/* number of calls to free */
+--- 4,9 ----
+Only in src/code/util: smalloc.o
+diff -rc src/code/util/strout.c old/code/util/strout.c
+*** src/code/util/strout.c	2010-07-16 16:28:47.377242697 -0700
+--- old/code/util/strout.c	1995-08-08 14:33:05.000000000 -0700
+***************
+*** 4,10 ****
+  
+  #include	<stdio.h>
+  #include	<string.h>
+- #include	"defs.h"
+  
+  /* Wrapper for a printf statement with a string as only arg.
+     Prints to screen and to output file if there is one. */
+--- 4,9 ----
+Only in src/code/util: strout.o
+Only in src/code/util: tri_prod.o
+Only in src/code/util: true_or_false.o
+Only in src/code/util: update.o
+Only in src/code/util: vecout.o
+Only in src/code/util: vecran.o
+Only in src/code/util: vecscale.o
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/chaco_README.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/chaco_README.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/chaco_README.txt	(revision 21239)
@@ -0,0 +1,55 @@
+Chaco-2.2.tar (5/03/00? -- 2.0 was 2/95)
+http://www.sandia.gov/~bahendr/chaco.html
+
+
+Note that meshpart pulls the object files from here, compiled with
+the MATLAB flag for use in the mlchaco mex function, and assembles
+them into a library in its own directory.  This means that any
+objects compiled for the mlchaco mex function and left here should
+not be used for the stand-alone chaco executable, and vice versa.
+
+
+[jschierm@astrid main]$ diff defs_old.h defs.h
+11a12,27  [for running as a matlab mex function]
+> 
+> #ifdef MATLAB
+>     #include "mat.h"
+>     #include "mex.h"
+>     #include "matrix.h"
+>    
+>     #define printf mexPrintf
+>     #define fprintf(file,...) (file == stdout || file == stderr ? mexPrintf(__VA_ARGS__) : fprintf(file,__VA_ARGS__))
+>     #define malloc mxMalloc
+>     #define calloc mxCalloc
+>     #define realloc mxRealloc
+>     #define free mxFree
+> 
+>     #define check_graph chaco_check_graph
+> #endif
+> 
+
+
+added #include "defs.h" to the following:
+assign/assign_out.c
+eigen/get_extval.c
+klvspiff/matching.c
+misc/timing.c
+util/bail.c
+util/checkpnt.c
+util/doubleout.c
+util/smalloc.c
+util/strout.c
+
+
+[jschierm@astrid code]$ diff Makefile_old Makefile
+4,5c4,9  [fPIC required, CFLAGS and OFLAGS copied from Cielo gccopts_v75.sh for glnxa64]
+< IFLAG =               -Imain
+< CFLAGS =      -O2
+---
+> IFLAG =               -Imain -I/usr/local/pkgs/matlab-7.6/extern/include
+> #CFLAGS =     -O2
+> #OFLAGS =     -O2
+> #CFLAGS =     -fPIC -fno-omit-frame-pointer -D_GNU_SOURCE -pthread -fexceptions
+> CFLAGS =      -fPIC -fno-omit-frame-pointer -pthread -fexceptions -DMATLAB
+> #CFLAGS =     -fPIC -fno-omit-frame-pointer -pthread -fexceptions
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/chaco_jes_notes.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/chaco_jes_notes.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/chaco_jes_notes.txt	(revision 21239)
@@ -0,0 +1,86 @@
+7/13/09:
+
+[jschierm@astrid Chaco-2.2]$ diff ../chaco/code/Makefile code
+5,6c5,8  [fPIC required, CFLAGS and OFLAGS copied from Cielo gccopts_v75.sh for glnxa64]
+< CFLAGS =      -O2
+< OFLAGS =      -O2
+---
+> #CFLAGS =     -O2
+> #OFLAGS =     -O2
+> CFLAGS =      -fPIC -fno-omit-frame-pointer -D_GNU_SOURCE -pthread -fexceptions
+> OFLAGS =      -O -DNDEBUG
+34a37,38  [added for meshpart chaco.a library, specified by its makefile]
+>               coarsen/makecgraph.c \
+>               coarsen/countcedges.c \
+
+7/30/09:
+
+[jschierm@astrid main]$ diff defs_old.h defs.h
+11a12,26  [for running as a matlab mex function]
+> 
+> #ifdef MATLAB
+>     #include "mat.h"
+>     #include "mex.h"
+>     #include "matrix.h"
+>    
+>     #define printf mexPrintf
+>     #define malloc mxMalloc
+>     #define calloc mxCalloc
+>     #define realloc mxRealloc
+>     #define free mxFree
+> 
+>     #define check_graph chaco_check_graph
+> #endif
+> 
+
+added #include "defs.h" to the following:
+assign/assign_out.c
+eigen/get_extval.c
+klvspiff/matching.c
+misc/timing.c
+util/bail.c
+util/checkpnt.c
+util/doubleout.c
+util/smalloc.c
+util/strout.c
+
+[jschierm@astrid code]$ diff Makefile_old Makefile | more
+4,5c4,9
+< IFLAG =               -Imain
+< CFLAGS =      -O2
+---
+> IFLAG =               -Imain -I/usr/local/pkgs/matlab-7.6/extern/include
+> #CFLAGS =     -O2
+> #OFLAGS =     -O2
+> #CFLAGS =     -fPIC -fno-omit-frame-pointer -D_GNU_SOURCE -pthread
+> -fexceptions
+> CFLAGS =      -fPIC -fno-omit-frame-pointer -pthread -fexceptions -DMATLAB
+> #CFLAGS =     -fPIC -fno-omit-frame-pointer -pthread -fexceptions
+
+8/25/09:
+
+added macro for fprintf to capture missing output:
+[jschierm@astrid main]$ diff defs_old.h defs.h
+11a12,27
+> 
+> #ifdef MATLAB
+>     #include "mat.h"
+>     #include "mex.h"
+>     #include "matrix.h"
+>    
+>     #define printf mexPrintf
+>     #define fprintf(file,...) (file == stdout || file == stderr ? mexPrintf(__VA_ARGS__) : fprintf(file,__VA_ARGS__))
+>     #define malloc mxMalloc
+>     #define calloc mxCalloc
+>     #define realloc mxRealloc
+>     #define free mxFree
+> 
+>     #define check_graph chaco_check_graph
+> #endif
+> 
+
+6/15/10:
+
+- moved check_graph rename outside of MATLAB compiler directive.
+- created library chaco.a (without MATLAB compiler directive) for Chaco x-layer to link and implemented it in chaco stand-alone link.
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/chaco_njs_notes.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/chaco_njs_notes.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/chaco_njs_notes.txt	(revision 21239)
@@ -0,0 +1,3 @@
+chaco build must be able to see malloc.h
+sudo ln -s /usr/include/malloc/malloc.h /usr/include/malloc.h
+or else make sure you include the malloc directory in path
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/install-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/install-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/install-macosx64.sh	(revision 21239)
@@ -0,0 +1,55 @@
+#!/bin/bash
+set -eu
+
+# Some cleanup
+rm -rf Chaco-2.2
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Chaco-2.2.tar.gz' 'Chaco-2.2.tar.gz'
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/docs/chaco_guide.pdf' 'chaco_guide.pdf'
+
+# Untar 
+tar -xvzf Chaco-2.2.tar.gz
+
+# Move chaco to src directory
+mv Chaco-2.2/* src
+rm -rf Chaco-2.2
+
+# Apply patches (all at once)
+# (written by diff -rc src ~/Libs/Chaco-2.2 > chaco.patch)
+patch -R -p0 < chaco.patch
+
+# Patch src/code/Makefile
+patch ./src/code/Makefile ./patches/Makefile.patch
+
+
+# Build chaco
+cd src/code
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make chacominusblas.a
+
+# Clean up objects (but not library or executable)
+make clean
+cd ../..
+
+# Populate install directory
+cp -p src/exec/README install
+cp -p src/exec/User_Params install
+cp -p src/exec/*.coords install
+cp -p src/exec/*.graph install
+mkdir install/include
+cp -p src/code/main/defs.h install/include/defs.h
+cp -p src/code/main/params.h install/include/params.h
+cp -p chaco.h install/include/chaco.h
+mkdir install/lib
+mv src/code/chaco.a install/lib/libchaco.a
+mv src/code/chacominusblas.a install/lib/libchacominusblas.a
+mkdir install/exec
+mv src/exec/chaco install/exec
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/install.sh	(revision 21239)
@@ -0,0 +1,51 @@
+#!/bin/bash
+set -eu
+
+# Some cleanup
+rm -rf Chaco-2.2
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Chaco-2.2.tar.gz' 'Chaco-2.2.tar.gz'
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/docs/chaco_guide.pdf' 'chaco_guide.pdf'
+
+# Untar 
+tar -xvzf Chaco-2.2.tar.gz
+
+# Move chaco to src directory
+mv Chaco-2.2/* src
+rm -rf Chaco-2.2
+
+# Apply patches (all at once)
+# (written by diff -rc src ~/Libs/Chaco-2.2 > chaco.patch)
+patch -R -p0 < chaco.patch
+
+# Build chaco
+cd src/code
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make chacominusblas.a
+
+# Clean up objects (but not library or executable)
+make clean
+cd ../..
+
+# Populate install directory
+cp -p src/exec/README install
+cp -p src/exec/User_Params install
+cp -p src/exec/*.coords install
+cp -p src/exec/*.graph install
+mkdir install/include
+cp -p src/code/main/defs.h install/include/defs.h
+cp -p src/code/main/params.h install/include/params.h
+cp -p chaco.h install/include/chaco.h
+mkdir install/lib
+mv src/code/chaco.a install/lib/libchaco.a
+mv src/code/chacominusblas.a install/lib/libchacominusblas.a
+mkdir install/exec
+mv src/exec/chaco install/exec
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/Chaco.c
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/Chaco.c	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/Chaco.c	(revision 21239)
@@ -0,0 +1,244 @@
+
+#include <stdio.h>
+#include <string.h>    /*  strcasecmp  */
+#include <time.h>      /*  clock,time,difftime  */
+#include "mex.h"
+
+
+#define THISFUNCTION "Chaco"
+
+/* Input Arguments */
+
+#define    A_IN         prhs[0]
+#define    VWGTS_IN     prhs[1]
+#define    EWGTS_IN     prhs[2]
+#define    XYZ_IN       prhs[3]
+#define    OPTNS_IN     prhs[4]
+#define    NPARTS_IN    prhs[5]
+#define    GOAL_IN      prhs[6]
+
+/* Output Arguments */
+
+#define    ASSGN_OUT    plhs[0]
+
+
+void ChacoUsage( void );
+
+int Chacox(
+    int       nvtxs,		/* number of vertices in graph */
+    int      *start,		/* start of edge list for each vertex */
+    int      *adjacency,	/* edge list data */
+    int      *vwgts,		/* weights for all vertices */
+    float    *ewgts,		/* weights for all edges */
+    float    *x,
+    float    *y,
+    float    *z,			/* coordinates for inertial method */
+    short    *assignment,	/* set number of each vtx (length nvtxs+1) */
+    double   options[10],	/* architecture and partitioning options */
+    int      *nparts,		/* number of parts options */
+    double   *goal			/* desired set sizes */
+);
+
+
+void mexFunction(
+	int           nlhs,           /* number of outputs */
+	mxArray       *plhs[],        /* array of pointers to output arguments */
+	int           nrhs,           /* number of inputs */
+	const mxArray *prhs[]         /* array of pointers to input arguments */
+)
+{
+    int       nvtxs;		/* number of vertices in graph */
+    int      *start;		/* start of edge list for each vertex */
+    int      *adjacency;	/* edge list data */
+    int      *vwgts=NULL;	/* weights for all vertices */
+    float    *ewgts=NULL;	/* weights for all edges */
+    float    *x=NULL;
+    float    *y=NULL;
+    float    *z=NULL;		/* coordinates for inertial method */
+    short    *assignment=NULL;	/* set number of each vtx (length nvtxs+1) */
+    double   options[10]={1,1,0,0,1,1,50,0,.001,7654321};
+							/* architecture and partitioning options */
+    int      *nparts=NULL;	/* number of parts options */
+    double   *goal=NULL;	/* desired set sizes */
+
+	int    i, nedges, nterms, ncols, ierr=0;
+	double *p;
+	mwIndex *mwstart, *mwadjacency;
+
+	clock_t clock0,clock1;
+	time_t  time0, time1;
+
+	/* Check for proper number of arguments */
+
+	if      (nrhs == 0 && nlhs == 0) {
+		ChacoUsage();
+		return;
+	}
+	else if (nrhs <  1 || nlhs >  1) {
+		ChacoUsage();
+		mexErrMsgTxt(" ");
+	}
+
+	clock0=clock();
+	time0 =time(NULL);
+	mexPrintf("\nChaco Module -- %s",ctime(&time0));
+
+	/* Assign pointers to the various parameters */
+	/* and convert to the appropriate format for Chaco */
+
+	if (!mxIsEmpty(A_IN) && mxIsNumeric(A_IN) && mxIsSparse(A_IN)) {
+		nvtxs = mxGetN(A_IN);
+		mwstart = mxGetJc(A_IN);
+		start = mxMalloc((mxGetN(A_IN)+1)*sizeof(int));
+		for (i=0; i<(mxGetN(A_IN)+1); i++)
+			start[i]= (int)mwstart[i];
+		nedges = start[nvtxs];
+		mwadjacency = mxGetIr(A_IN);
+		adjacency = mxMalloc(mxGetNzmax(A_IN)*sizeof(int));
+		for (i=0; i<mxGetNzmax(A_IN); i++)
+			adjacency[i]= (int)mwadjacency[i];
+	}
+	else {
+		mexPrintf("%s -- Adjacency matrix must be numeric and sparse.\n",
+				  THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+
+	if (nrhs >= 2 && !mxIsEmpty(VWGTS_IN)) {
+		if (mxIsNumeric(VWGTS_IN) && !mxIsSparse(VWGTS_IN) &&
+			(nterms=mxGetM(VWGTS_IN)*mxGetN(VWGTS_IN)) == nvtxs) {
+			vwgts = (int *) mxCalloc(nvtxs, sizeof(int));
+			p = mxGetPr(VWGTS_IN);
+			for (i = 0; i < nvtxs; vwgts[i++] = (int) *p++);
+		}
+		else {
+			mexPrintf("%s -- Vertex weight vector must be numeric, full, and length=%d.\n",
+					  THISFUNCTION,nvtxs);
+			mexErrMsgTxt(" ");
+		}
+	}
+
+	if (nrhs >= 3 && !mxIsEmpty(EWGTS_IN)) {
+		if (mxIsNumeric(EWGTS_IN) && mxIsSparse(EWGTS_IN) &&
+			(nterms=mxGetNzmax(EWGTS_IN)) == nedges) {
+			ewgts = (float *) mxCalloc(nedges, sizeof(float));
+			p = mxGetPr(A_IN);
+			for (i = 0; i < nedges; ewgts[i++] = (float) *p++);
+		}
+		else {
+			mexPrintf("%s -- Edge weight matrix must be numeric, sparse, and nonzeroes=%d.\n",
+					  THISFUNCTION,nedges);
+			mexErrMsgTxt(" ");
+		}
+	}
+
+	if (nrhs >= 4 && (ncols = mxGetN(XYZ_IN)) >= 1) {
+		if (mxIsNumeric(XYZ_IN) && !mxIsSparse(XYZ_IN) &&
+			mxGetM(XYZ_IN) == nvtxs) {
+			x = (float *) mxCalloc(nvtxs, sizeof(float));
+			p = mxGetPr(XYZ_IN);
+			for (i = 0; i < nvtxs; x[i++] = (float) *p++);
+		}
+		else {
+			mexPrintf("%s -- XYZ coordinate matrix must be numeric, full, and length=%d.\n",
+					  THISFUNCTION,nvtxs);
+			mexErrMsgTxt(" ");
+		}
+		if ((ncols                 ) >= 2) {
+			y = (float *) mxCalloc(nvtxs, sizeof(float));
+			for (i = 0; i < nvtxs; y[i++] = (float) *p++);
+			if ((ncols                 ) >= 3) {
+				z = (float *) mxCalloc(nvtxs, sizeof(float));
+				for (i = 0; i < nvtxs; z[i++] = (float) *p++);
+			}
+		}
+	}
+
+	if (nrhs >= 5 && !mxIsEmpty(OPTNS_IN)) {
+		if (mxIsNumeric(OPTNS_IN) && !mxIsSparse(OPTNS_IN) &&
+			(nterms=mxGetM(OPTNS_IN)*mxGetN(OPTNS_IN))) {
+			p = mxGetPr(OPTNS_IN);
+			for (i = 0; i < (nterms<10 ? nterms : 10); options[i++] = *p++);
+		}
+		else {
+			mexPrintf("%s -- Options vector must be numeric and full.\n",
+					  THISFUNCTION);
+			mexErrMsgTxt(" ");
+		}
+	}
+
+	if (nrhs >= 6 && !mxIsEmpty(NPARTS_IN)) {
+		if (mxIsNumeric(NPARTS_IN) && !mxIsSparse(NPARTS_IN) &&
+			(nterms=mxGetM(NPARTS_IN)*mxGetN(NPARTS_IN))) {
+			nparts = (int *) mxCalloc(nterms, sizeof(int));
+			p = mxGetPr(NPARTS_IN);
+			for (i = 0; i < nterms; nparts[i++] = (int) *p++);
+		}
+		else {
+			mexPrintf("%s -- Parts vector must be numeric and full.\n",
+					  THISFUNCTION);
+			mexErrMsgTxt(" ");
+		}
+	}
+
+	if (nrhs >= 7 && !mxIsEmpty(GOAL_IN)) {
+		if (mxIsNumeric(GOAL_IN) && !mxIsSparse(GOAL_IN) &&
+			(nterms=mxGetM(GOAL_IN)*mxGetN(GOAL_IN))) {
+			goal = (double *) mxCalloc(nterms, sizeof(double));
+			p = mxGetPr(GOAL_IN);
+			for (i = 0; i < nterms; goal[i++] = *p++);
+		}
+		else {
+			mexPrintf("%s -- Goal vector must be numeric and full.\n",
+					  THISFUNCTION);
+			mexErrMsgTxt(" ");
+		}
+	}
+
+	assignment = (short *) mxCalloc(nvtxs, sizeof(short));
+
+    /* Do the actual computations in a subroutine */
+
+	ierr = Chacox(nvtxs, start, adjacency, vwgts, ewgts, x, y, z,
+		assignment, options, nparts, goal);
+
+    /* Create matrices for the return arguments */
+
+	if (!ierr) {
+		ASSGN_OUT = mxCreateDoubleMatrix(1,nvtxs,mxREAL);
+		p = mxGetPr(ASSGN_OUT);
+		for (i = 0; i < nvtxs; *p++ = (double) assignment[i++]);
+	}
+	else
+		ASSGN_OUT = mxCreateDoubleMatrix(0,0,mxREAL);
+
+	/* Free what we allocated */
+   
+	if (!assignment) mxFree((void *) assignment);
+	if (!goal)       mxFree((void *) goal);
+	if (!nparts)     mxFree((void *) nparts);
+	if (!z)          mxFree((void *) z);
+	if (!y)          mxFree((void *) y);
+	if (!x)          mxFree((void *) x);
+	if (!ewgts)      mxFree((void *) ewgts);
+	if (!vwgts)      mxFree((void *) vwgts);
+	if (!adjacency)  mxFree((void *) adjacency);
+	if (!start)      mxFree((void *) start);
+
+    clock1=clock();
+    time1 =time(NULL);
+    mexPrintf("Chaco Module -- %f CPU seconds; %f elapsed seconds.\n\n",
+              ((double)(clock1-clock0))/CLOCKS_PER_SEC,difftime(time1,time0));
+
+	return;
+}
+
+void ChacoUsage( void )
+{
+	mexPrintf("\n");
+	mexPrintf("Usage: [assgn] = Chaco(A,vwgts,ewgts,xyz,options,nparts,goal);\n");
+	mexPrintf("\n");
+
+	return;
+}
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/Chaco_m.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/Chaco_m.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/Chaco_m.m	(revision 21239)
@@ -0,0 +1,217 @@
+function  [part1,part2,chaco_time] = chaco(A,xy,method,nparts,goal)
+% CHACO : Hendrickson/Leland's graph partitioner.
+% 
+%  [part1,part2,chaco_time] = chaco(A) returns a 50/50 vertex partition of the mesh
+%  whose symmetric adjacency matrix is A.  
+%
+%  Optional arguments:
+%  map = chaco(A, xy, method, nparts, goal);
+%  map = chaco(A, xy, method, inmap, goal);
+%
+%  A:          Depending on "method", A may contain vertex and edge weights.
+%
+%  xy:         Each row of xy is the coordinates of a vertex.
+%              If xy is non-null and there is no output, draw a picture.
+%
+%  method:     Scalar or vector describing the desired method.  
+%              Default is multilevel Kernighan-Lin; other possibilities below.
+%
+%  nparts      Number of parts to divide into.  Default is 2.  If nparts is 
+%    or        present, the output is a "map vector", see below.  (If method(5) 
+%  inmap:      is specified, nparts is interpreted differently; see below.  In
+%              any case, the default is to divide into two parts.)
+%              If method(1) = 7 (see below), this argument is a map vector
+%              specifying an initial 2-way partition, and Chaco refines it.
+%
+%  goal:       Optionally, a vector of desired sizes (or total vertex weights)
+%              for each of the nparts parts.  Default is all sizes equal.
+%
+%  map:        If nparts and inmap are not present, the output is a vector of 
+%              the n/2 vertex numbers in one part of the 2-way partition, for
+%              compatibility with geopart and specpart.
+%              If nparts or imap is present, the output is a vector of the
+%              n part numbers, from 0 to nparts-1, assigned to the vertices.
+%
+% This is a Matlab interface to the graph partitioning software described
+% in B. Hendrickson and R. Leland, "The Chaco User's Guide (Version 2.0)",
+% Sandia National Laboratories report SAND94-2692, October 1994.
+% This interface was written by John Gilbert, Xerox PARC, and is
+% Copyright (c) 1994-1996 by Xerox Corporation.  All rights reserved.
+% HELP COPYRIGHT for complete copyright and licensing notice.
+%
+% Modified by Tim Davis, for Matlab 5.1.  July 6, 1998.
+%   05/28/10    jes    Reorganization into Matlab-layer and x-layer.
+%
+% See also GEOPART, SPECPART.
+%
+% "method" is a vector of flags as follows.  Not all combinations are supported.
+% See Section 6.10 of the Chaco manual for more details on all the arguments.
+% If "method" is shorter than 10, we use the defaults for unspecified entries.
+%
+% method(1):  Global partitioning method  ("global_method" in the Chaco manual).
+%             1 Multilevel Kernighan-Lin (default)
+%             2 Spectral
+%             3 Inertial
+%             4 Linear
+%             5 Random
+%             6 Scattered
+%             7 Use "inmap" as the global (2-way) partition
+%
+% method(2):  Local refinement method  ("local_method" in the Chaco manual).
+%             1 Kernighan-Lin (default)
+%             2 None
+%
+% method(3):  Vertex weighting.
+%             0 No weights (default)
+%             1 Use diag(A) as (positive integer) vertex weights
+%
+% method(4):  Edge weighting.
+%             0 No weights (default)
+%             1 Use off-diagonals of A as (positive integer) edge weights
+%
+% method(5):  Target architecture  ("architecture" in the Chaco manual).
+%             If method(5) = 0, the target is a hypercube, "nparts" is the 
+%             number of dimensions, and the partition is into 2^nparts parts.  
+%             If method(5) = 1, 2, or 3, the target is a 1-, 2-, or 3-D grid,
+%             "nparts" is a vector of the sizes of the grid in each dimension,
+%             and the partition is into prod(nparts) parts.
+%             Default is method(5) = 1, so nparts is the number of parts.
+%
+% method(6):  Partitioning dimension  ("ndims" in the Chaco manual).
+%             1 Bisection (default)
+%             2 Quadrisection
+%             3 Octasection
+%
+% method(7):  Number of vertices to coarsen to  ("vmax" in the Chaco manual).
+%             Default is 50.
+%
+% method(8):  Eigensolver  ("rqi_flag" in the Chaco manual).
+%             0 RQI/Symmlq (default)
+%             1 Lanczos 
+%
+% method(9):  Eigensolver convergence tolerance  ("eigtol" in the Chaco manual).
+%             Default is .001
+%
+% method(10): Seed for random number generator  ("seed" in the Chaco manual).
+%             Default is 7654321.
+%
+% Many esoteric details of Chaco's behavior can be changed by placing a file
+% called "User_Params" in the same directory as the executable mlchaco.mex.
+% As always, see the manual for details.
+
+DefaultMethod = [1 1 0 0 1 1 50 0 .001 7654321];
+
+% Fill in default arguments.
+if nargin < 2, xy = []; end;
+if nargin < 3, method = DefaultMethod; end;
+if nargin < 4, nparts = []; end;
+if nargin < 5, goal = []; end;
+if length(method) < length(DefaultMethod)
+    method = [method DefaultMethod(length(method)+1 : length(DefaultMethod))];
+end;
+
+% Decide on output and graphics.
+if (isempty (nparts))
+    mapvector = 0;
+else
+    mapvector = 1;
+end;
+picture = (nargout == 0) & (size(xy,2) >= 2);
+
+% Chaco numbers vertices from 1 and the Matlab sparse data structure 
+% numbers rows from 0, so we add an empty first row to make things line up.
+% This code also makes sure the arg to Chaco will be sparse.
+[n,n] = size(A);
+Adiag = diag(diag(A));
+%Aout = [sparse(1,n) ; A-Adiag];
+Aout = sparse(A-Adiag);
+
+% Make sure all args except the adj matrix are full;
+if issparse(xy)
+    xy = full(xy);
+end;
+if issparse(method)
+    method = full(method);
+end;
+if issparse(nparts)
+    nparts = full(nparts);
+end;
+if issparse(goal)
+    goal = full(goal);
+end;
+
+% Decode "method" to get the actual args to Chaco.
+% Note that "nparts" may correspond to any of several Chaco
+% parameters, depending on the method.
+
+if method(3)
+    vwgts = full(diag(A));
+    totalvwgt = sum(vwgts);
+else
+    vwgts = [];
+    totalvwgt = size(A,2);
+end;
+if method(4)
+    ewgts = Aout;
+else
+    ewgts = [];
+end;
+if method(1) == 7
+    % Refine an input partition: "nparts" is the input partition.
+    % This seems to work only for hypercube architecture,
+    % so we force a 1-D hypercube with 2-way partitioning.
+    nsets = 2;
+elseif method(5) == 0
+    % Partition for hypercube: "nparts" is # of dimensions (default 1).
+    if (isempty (nparts))
+    	nsets = 2^1;
+    else
+    	nsets = 2^nparts;
+    end;
+else
+    % Partition for mesh: "nparts" is vector of mesh sizes in each
+    % dimension, default [2 1 ... 1] with "architecture" dimensions.
+    if (isempty (nparts))
+    	nsets = prod(2);
+    else
+    	nsets = prod(nparts);
+    end;
+end;
+if length(goal) ~= nsets
+    goal = totalvwgt/nsets * ones(1,nsets);
+end;
+
+[map,chaco_time]=Chaco(Aout, vwgts, ewgts, xy, method, nparts, goal);
+
+% Draw the picture.
+if picture
+    if size(xy,2) >= 3 && unique(xy(:,3)) == 0
+        xy=xy(:,1:2);
+    end
+    if length(unique(map)) == 2
+        gplotpart(A,xy,find(map==0));
+    else
+        gplotmap(A,xy,map);
+    end;
+    if     method(1)==1, heading = 'Multilevel Kernighan-Lin';
+    elseif method(1)==2, heading = 'Spectral';
+    elseif method(1)==3, heading = 'Inertial';
+    elseif method(1)==4, heading = 'Linear';
+    elseif method(1)==5, heading = 'Random';
+    elseif method(1)==6, heading = 'Scattered';
+    elseif method(1)==7, heading = 'Input'; 
+    end;
+    heading = [heading ' Partition'];
+    if method(2)==1 & method(1) ~= 1 
+        heading =[heading ' Refined by KL'];
+    end;
+    title(heading);
+end;
+
+% Put output in the right form.
+if mapvector
+    part1 = map;
+else
+    part1 = find(map==0);
+    part2 = find(map==1);
+end;
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/Chacox.c
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/Chacox.c	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/Chacox.c	(revision 21239)
@@ -0,0 +1,471 @@
+/* This software was developed by Bruce Hendrickson and Robert Leland   *
+ * at Sandia National Laboratories under US Department of Energy        *
+ * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */
+
+#include <stdio.h>
+#include <string.h>
+#include "defs.h"
+#include "params.h"
+
+#define THISFUNCTION "Chacox"
+
+#define    OPT_GLOBAL    0
+#define    OPT_LOCAL     1
+#define    OPT_VWGTS     2
+#define    OPT_EWGTS     3
+#define    OPT_ARCH      4
+#define    OPT_NDIMS     5
+#define    OPT_VMAX      6
+#define    OPT_RQI       7
+#define    OPT_EIGTOL    8
+#define    OPT_SEED      9
+
+int      input_parse(
+	char     *outassignname,	/* name of assignment output file */
+	char     *outfilename,		/* name of file for outputing run results */
+	int      *architecture,		/* 0=> hypercube, d=> d-dimensional mesh */
+	int      *ndims_tot,		/* target number of hypercube dimensions */
+	int       mesh_dims[3],		/* mesh dimensions */
+	int      *global_method,	/* what global partitioning strategy to use? */
+	int      *local_method,		/* what local refinement strategy to use? */
+	int      *rqi_flag,		/* should I use multilevel eigensolver? */
+	int      *vmax,			/* if so, how far should I coarsen? */
+	int      *ndims,		/* number of divisions at each stage */
+	int      *nprocs,		/* number of processors being divided into */
+	double   options[10],	/* architecture and partitioning options */
+	int      *nparts		/* number of parts options */
+);
+
+
+int Chacox(
+	int       nvtxs,		/* number of vertices in graph */
+	int      *start,		/* start of edge list for each vertex */
+	int      *adjacency,	/* edge list data */
+	int      *vwgts,		/* weights for all vertices */
+	float    *ewgts,		/* weights for all edges */
+	float    *x,
+	float    *y,
+	float    *z,			/* coordinates for inertial method */
+	short    *assignment,	/* set number of each vtx (length nvtxs+1) */
+	double   options[10],	/* architecture and partitioning options */
+	int      *nparts,		/* number of parts options */
+	double   *goal			/* desired set sizes */
+)
+{
+	extern int Using_Main;	/* is main routine being called? */
+	extern char *PARAMS_FILENAME;	/* name of file with parameter updates */
+	extern double EIGEN_TOLERANCE;	/* tolerance for eigen calculations */
+	extern int OUTPUT_ASSIGN;	/* whether to write assignment to file */
+	extern int DEBUG_MEMORY;	/* debug memory allocation and freeing? */
+	extern int DEBUG_TRACE;	/* trace main execution path */
+	extern int DEBUG_PARAMS;	/* debug flag for reading parameters */
+	extern long RANDOM_SEED;	/* seed for random number generators */
+	extern int ECHO;		/* controls amount of output */
+	extern int PROMPT;		/* prompt for input or not? */
+	extern int PRINT_HEADERS;	/* print lines for output sections? */
+	extern int MATCH_TYPE;      /* matching routine to call */
+	extern double input_time;	/* times data file input */
+	extern double start_time;	/* time partitioning starts */
+	FILE     *params_file;	/* file with parameter value updates */
+	int       global_method;	/* global partitioning method */
+	int       local_method;	/* local partitioning method */
+	double    eigtol;		/* tolerance in eigenvector calculation */
+	int       ndims;		/* dimension of recursive partitioning */
+	int       architecture;	/* 0 => hypercube, d => d-dimensional mesh */
+	int       ndims_tot;	/* total number of cube dimensions to divide */
+	int       mesh_dims[3];	/* dimensions of mesh of processors */
+	long      seed;		/* for random graph mutations */
+	int       rqi_flag;		/* use RQI/Symmlq eigensolver? */
+	int       vmax;		/* if so, how many vertices to coarsen down to? */
+	char      outassignname[NAME_LENGTH];	/* assignment output file name */
+	char      outfilename[NAME_LENGTH];	/* name of output file */
+	char     *outassignptr;	/* name or null pointer for output assignment */
+	char     *outfileptr;	/* name or null pointer for output file */
+	int       nprocs;		/* number of processors being divided into */
+	double    time;		/* timing marker */
+	int       flag;		/* return code from input routines */
+	double   *smalloc();	/* safe version of malloc */
+	double    seconds();	/* returns elapsed time in seconds */
+	int       sfree(), interface(), affirm();
+	void      input_queries(), smalloc_stats(), read_params(), clear_timing();
+
+	int i,tvwgt;
+	double tgoal;
+
+	if (DEBUG_TRACE > 0) {
+		printf("<Entering main>\n");
+	}
+
+	if (PRINT_HEADERS) {
+		printf("\n                    Chaco 2.0\n");
+		printf("          Sandia National Laboratories\n\n");
+	}
+
+	Using_Main = TRUE;
+	params_file = fopen(PARAMS_FILENAME, "r");
+	if (params_file == NULL && DEBUG_PARAMS > 1) {
+		printf("Parameter file `%s' not found; using default parameters.\n",
+			   PARAMS_FILENAME);
+	}
+
+	start_time = time = seconds();
+
+	read_params(params_file);
+
+	flag = input_parse(outassignname, outfilename,
+			  &architecture, &ndims_tot, mesh_dims,
+			  &global_method, &local_method, &rqi_flag, &vmax, &ndims, &nprocs,
+			  options, nparts);
+	if (flag)
+		return(flag);
+
+	if (OUTPUT_ASSIGN > 0)
+		outassignptr = outassignname;
+	else
+		outassignptr = NULL;
+
+	if (ECHO < 0)
+		outfileptr = outfilename;
+	else
+		outfileptr = NULL;
+
+	if ((int)options[OPT_VWGTS] && vwgts) {
+		printf("%s -- Applying weights for %d vertices.\n",
+			   THISFUNCTION,nvtxs);
+		tvwgt = 0.;
+		for (i=0; i<nvtxs; i++)
+			tvwgt += vwgts[i];
+	}
+	else {
+		tvwgt = nvtxs;
+		if      ( (int)options[OPT_VWGTS] && !vwgts)
+			printf("%s -- Vertex weight flag=%d, but no vertex weights specified.\n",
+				   THISFUNCTION,options[OPT_VWGTS]);
+		else if (!(int)options[OPT_VWGTS] &&  vwgts)
+			printf("%s -- Vertex weight flag=%d, so specified vertex weights ignored.\n",
+				   THISFUNCTION,options[OPT_VWGTS]);
+	}
+
+	if ((int)options[OPT_EWGTS] && ewgts) {
+		printf("%s -- Applying weights for %d edges.\n",
+			   THISFUNCTION,start[nvtxs]/2);
+	}
+	else {
+		if      ( (int)options[OPT_EWGTS] && !ewgts)
+			printf("%s -- Edge weight flag=%d, but no edge weights specified.\n",
+				   THISFUNCTION,options[OPT_EWGTS]);
+		else if (!(int)options[OPT_EWGTS] &&  ewgts)
+			printf("%s -- Edge weight flag=%d, so specified edge weights ignored.\n",
+				   THISFUNCTION,options[OPT_EWGTS]);
+	}
+
+    if (goal) {
+        printf("%s -- Applying goals for %d sets.\n",
+               THISFUNCTION,nprocs);
+        tgoal = 0.;
+        for (i=0; i<nprocs; i++)
+            tgoal += goal[i];
+        for (i=0; i<nprocs; i++)
+            goal[i] *= (double)tvwgt/tgoal;
+    }
+
+	input_time += seconds() - time;
+
+	if (options[OPT_EIGTOL] > 0)
+		eigtol = options[OPT_EIGTOL];
+	else
+		eigtol = EIGEN_TOLERANCE;
+	if ((int)options[OPT_SEED] > 0)
+		seed = (int)options[OPT_SEED];
+	else
+		seed = RANDOM_SEED;
+
+/*  Chaco numbers vertices from 1 and the Matlab sparse data structure
+	numbers rows from 0, so increment the row indices for each column. */
+
+	for (i=0; i<start[nvtxs]; adjacency[i++]++);
+
+	printf("\n%s -- Calling Chaco interface:\n\n",
+		   THISFUNCTION);
+	flag = interface(nvtxs, start, adjacency,
+		  ((int)options[OPT_VWGTS] && vwgts ? vwgts : NULL),
+		  ((int)options[OPT_EWGTS] && ewgts ? ewgts : NULL),
+		  x, y, z,
+		  outassignptr, outfileptr,
+		  assignment,
+		  architecture, ndims_tot, mesh_dims, goal,
+		  global_method, local_method, rqi_flag, vmax, ndims,
+		  eigtol, seed);
+	printf("\n%s -- Chaco interface returning flag=%d.\n",
+		   THISFUNCTION,flag);
+
+/*  Reset adjacency matrix in case calling function needs it.  */
+
+	for (i=0; i<start[nvtxs]; adjacency[i++]--);
+
+	if (DEBUG_MEMORY > 0) {
+		printf("\n");
+		smalloc_stats();
+	}
+
+	if (params_file != NULL)
+		fclose(params_file);
+
+	if (DEBUG_TRACE > 1) {
+		printf("<Leaving main>\n");
+	}
+	
+	return(0);
+}
+
+
+int      input_parse(
+	char     *outassignname,	/* name of assignment output file */
+	char     *outfilename,		/* name of file for outputing run results */
+	int      *architecture,		/* 0=> hypercube, d=> d-dimensional mesh */
+	int      *ndims_tot,		/* target number of hypercube dimensions */
+	int       mesh_dims[3],		/* mesh dimensions */
+	int      *global_method,	/* what global partitioning strategy to use? */
+	int      *local_method,		/* what local refinement strategy to use? */
+	int      *rqi_flag,		/* should I use multilevel eigensolver? */
+	int      *vmax,			/* if so, how far should I coarsen? */
+	int      *ndims,		/* number of divisions at each stage */
+	int      *nprocs,		/* number of processors being divided into */
+	double   options[10],	/* architecture and partitioning options */
+	int      *nparts		/* number of parts options */
+)
+{
+	extern int SEQUENCE;	/* sequence instead of partition graph? */
+	extern int ARCHITECTURE;	/* 0=> hypercube, d=> d-dimensional mesh */
+	extern int OUTPUT_ASSIGN;	/* write assignments to file? */
+	extern int ECHO;		/* copy input to screen? results to file? */
+	extern int DEBUG_TRACE;	/* trace main execution path */
+	extern int PROMPT;		/* prompt for input? */
+	extern int MATCH_TYPE;      /* max-matching routine to call */
+	int       eigensolver;	/* which kind of eigensolver to use */
+
+	if (DEBUG_TRACE > 0) {
+		printf("<Entering input_parse>\n");
+	}
+
+	if (PROMPT) {
+		printf("Parallel machine architecture:\n");
+		printf("  (0) Hypercube\n");
+		printf("  (1) One-dimensional mesh\n");
+		printf("  (2) Two-dimensional mesh\n");
+		printf("  (3) Three-dimensional mesh\n");
+	}
+	*architecture = (int)options[OPT_ARCH];
+	if (*architecture < 0 || *architecture > 3) {
+		printf("%s -- Architecture %d must be between 0 and 3.\n",
+			   THISFUNCTION,options[OPT_ARCH]);
+		return(-1);
+	}
+
+	/* Name output assignment file. */
+	if (PROMPT)
+		printf("Assignment output file: ");
+	outassignname = NULL;
+
+	/* Name output results file. */
+	if (PROMPT)
+		printf("File name for saving run results: ");
+	outfilename = NULL;
+
+	/* Initialize the method flags */
+	*rqi_flag = 0;
+	*global_method = 0;
+
+	/* Get global method, if any. */
+	if (SEQUENCE) {
+		*global_method = 2;
+	}
+	else {
+		if (PROMPT) {
+			printf("Global partitioning method:\n");
+			printf("  (1) Multilevel-KL\n");
+			printf("  (2) Spectral\n");
+			printf("  (3) Inertial\n");
+			printf("  (4) Linear\n");
+			printf("  (5) Random\n");
+			printf("  (6) Scattered\n");
+			printf("  (7) Read-from-file\n");
+		}
+		*global_method = (int)options[OPT_GLOBAL];
+		if (*global_method < 1 || *global_method > 7) {
+			printf("%s -- Global method %d must be between 1 and 7.\n",
+				   THISFUNCTION,options[OPT_GLOBAL]);
+			return(-1);
+		}
+	}
+
+	if (*global_method == 7) {	/* Name and open input assignment file. */
+		if (PROMPT)
+			printf("Assignment input file: ");
+	}
+
+	else if (*global_method == 3) {
+		if (PROMPT)
+			printf("Geometry input file name: ");
+	}
+
+	else if (*global_method == 2) {
+		if (PROMPT) {
+			printf("Eigensolver:\n");
+			printf("  (1) Multilevel RQI/Symmlq\n");
+			printf("  (2) Lanczos\n"); 
+		}
+		eigensolver = (int)options[OPT_RQI];
+		if (eigensolver < 0 || eigensolver > 2) {
+			printf("%s -- RQI/Symmlq flag %d must be between 0 and 2.\n",
+				   THISFUNCTION,options[OPT_RQI]);
+			return(-1);
+		}
+		if (eigensolver == 1) {
+			if (MATCH_TYPE == 5) {	/* geometric matching */
+				if (PROMPT)
+					printf("Geometry input file name: ");
+			}
+			*rqi_flag = 1;
+			if (PROMPT)
+				printf("Number of vertices to coarsen down to: ");
+			*vmax = (int)options[OPT_VMAX];
+			if (*vmax <= 0) {
+				printf("%s -- Vmax %d must be greater then 0.\n",
+					   THISFUNCTION,options[OPT_VMAX]);
+				return(-1);
+			}
+		}
+		else if (eigensolver == 0 || eigensolver == 2) {
+			*rqi_flag = 0;
+		}
+	}
+
+	else if (*global_method == 1) {
+		if (MATCH_TYPE == 5) {		/* geometric matching */
+			if (PROMPT)
+				printf("Geometry input file name: ");
+		}
+		if (PROMPT)
+			printf("Number of vertices to coarsen down to: ");
+		*vmax = (int)options[OPT_VMAX];
+		if (*vmax <= 0) {
+			printf("%s -- Vmax %d must be greater then 0.\n",
+				   THISFUNCTION,options[OPT_VMAX]);
+			return(-1);
+		}
+	}
+
+	if (SEQUENCE) {
+		*local_method = 2;
+		if (*architecture == 0) {
+			*ndims_tot = 1;
+		}
+		else if (*architecture > 0) {
+			mesh_dims[0] = 2;
+			mesh_dims[1] = mesh_dims[2] = 1;
+		}
+		*ndims = 1;
+		goto End_Label;
+	}
+
+	/* Get local method, if any */
+	*local_method = 0;
+	if (*global_method == 1)
+		*local_method = 1;
+	else {
+		if (PROMPT) {
+			printf("Local refinement method:\n");
+			printf("  (1) Kernighan-Lin\n");
+			printf("  (2) None\n");
+		}
+		*local_method = (int)options[OPT_LOCAL];
+		if (*local_method < 1 || *local_method > 2) {
+			printf("%s -- Local method %d must be 1 and 2.\n",
+				   THISFUNCTION,options[OPT_LOCAL]);
+			return(-1);
+		}
+	}
+
+	/* Now learn about the parallel architecture. */
+	if (*architecture == 0) {
+	/* Get total number of hypercube dimensions in which to partition. */
+		*ndims_tot = 0;
+		if (PROMPT)
+			printf("Total number of target hypercube dimensions: ");
+		*ndims_tot = nparts[0];
+		if (*ndims_tot < 1) {
+			printf(" Number of divisions must be at least 1\n");
+			printf("%s -- Number of divisions %d must be at least 1.\n",
+				   THISFUNCTION,nparts[0]);
+			return(-1);
+		}
+		*nprocs = 1 << (*ndims_tot);
+	}
+
+	else {			/* Get dimensions of mesh. */
+		mesh_dims[1] = mesh_dims[2] = 1;
+		if (*architecture == 2) {
+			if (PROMPT)
+				printf("X and Y extent of of 2-D mesh: ");
+			mesh_dims[0] = nparts[0];
+			mesh_dims[1] = nparts[1];
+		}
+		else if (*architecture == 3) {
+			if (PROMPT)
+				printf("X, Y and Z extent of 3-D mesh: ");
+			mesh_dims[0] = nparts[0];
+			mesh_dims[1] = nparts[1];
+			mesh_dims[2] = nparts[2];
+		}
+		else {			/* Anything else => 1-D mesh */
+			if (PROMPT)
+				printf("Size of 1-D mesh: ");
+			mesh_dims[0] = nparts[0];
+			*architecture = 1;
+		}
+		*nprocs = mesh_dims[0] * mesh_dims[1] * mesh_dims[2];
+	}
+
+	/* Get number of dimensions in which to partition at each level. */
+	*ndims = 0;
+	if (*nprocs <= 3) {
+		*ndims = 1;
+	}
+	else if (*nprocs <= 7) {
+		if (PROMPT) {
+			printf("Partitioning dimension: \n");
+			printf("  (1) Bisection\n");
+			printf("  (2) Quadrisection\n");
+		}
+		*ndims = (int)options[OPT_NDIMS];
+		if (*ndims < 1 || *ndims > 2) {
+			printf("%s -- Ndims %d must be 1 or 2 for %d processors.\n",
+				   THISFUNCTION,options[OPT_NDIMS],*nprocs);
+			return(-1);
+		}
+	}
+	else {
+		if (PROMPT) {
+			printf("Partitioning dimension: \n");
+			printf("  (1) Bisection\n");
+			printf("  (2) Quadrisection\n");
+			printf("  (3) Octasection\n");
+		}
+		*ndims = (int)options[OPT_NDIMS];
+		if (*ndims < 1 || *ndims > 3) {
+			printf("%s -- Ndims %d must be between 1 and 3 for %d processors.\n",
+				   THISFUNCTION,options[OPT_NDIMS],*nprocs);
+			return(-1);
+		}
+	}
+End_Label: 
+
+	if (*global_method == 1 || *rqi_flag) {
+		if (*vmax < 2 * (1 << *ndims)) {
+			*vmax = 2 * (1 << *ndims);
+		}
+	}
+
+	return(0);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/Makefile
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/Makefile	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/Makefile	(revision 21239)
@@ -0,0 +1,293 @@
+# This is the Makefile for the mex-file version of Chaco, to be dynamically 
+# linked with Matlab using the interface in the "meshpart" toolbox.  
+# See file "README" for more information.
+#
+# You may need to change the following variables:
+# 
+# MATLAB      Matlab's top-level directory, often "/usr/matlab" or similar.
+# CHACO       Chaco's source directory, normally the "code" subdirectory
+#             of the Chaco distribution.
+# MLCHACO     Directory with Chaco files modified for Matlab, normally
+#             the directory containing this Makefile.
+# DEST_DIR    Directory for the executable mlchaco.mex, normally the 
+#             "meshpart" directory, which is normally the parent of the 
+#             directory containing this Makefile.
+# CC          Choice of C compiler.  gcc seems to work best for Matlab for me.
+# IFLAGS, CFLAGS, OFLAGS  Flags to go with the compiler and linker.
+#
+# This Makefile works under Solaris 2.  To use it with a different Unix, 
+# you may need to change the references to "ar" and/or "ranlib" and
+# possibly other things.
+#
+# John Gilbert, 1996.
+# Copyright (c) 1990-1996 by Xerox Corporation.  All rights reserved.
+# See file ../copyright.m for complete copyright and licensing notice.
+
+#MATLAB =        /import/matlab
+#MATLAB =        /usr/local/libexec/matlab
+#MATLAB =        /usr/local/pkgs/matlab-7.6
+MATLAB =        ${MATLAB_DIR}
+
+#CHACO =         /project/sparse/chaco/version2/code
+#CHACO =         ../../Chaco-2.0/code
+#CHACO =         ../../Chaco-2.2/code
+#CHACO =         ../../../chaco/src/code
+CHACO =         ${CHACO_DIR}/../src/code
+
+MLCHACO =       .
+DEST_DIR =      ..
+CC =            gcc 
+#CC =            cc 
+IFLAGS =	-I${MATLAB}/extern/include -I${CHACO}/main
+#CFLAGS =        -Xa -G -xO4 -xcg92
+#CFLAGS =        -fPIC -fno-omit-frame-pointer -pthread -fexceptions -DMATLAB
+CFLAGS =        -fPIC -fno-omit-frame-pointer -pthread -fexceptions
+#OFLAGS =        -xO4 -xcg92
+OFLAGS =        -O2
+#AR =             /usr/ccs/bin/ar rcv   # for solaris 2
+AR =             /usr/bin/ar rcv   # for solaris 2
+#RANLIB =         /usr/ccs/bin/ranlib   # for solaris 2
+RANLIB =         /usr/bin/ranlib   # for solaris 2
+
+
+MLFILES.c=	${MLCHACO}/Chacox.c \
+                ${MLCHACO}/user_params.c
+#		${MLCHACO}/bail.c \  # redefined original with -DMATLAB
+#		${MLCHACO}/chaco_check_graph.c \  # redefined original with -DMATLAB
+#		${MLCHACO}/check_input.c \  # redefined original with -DMATLAB
+#                ${MLCHACO}/smalloc.c \  # redefined original with -DMATLAB
+
+CHFILES.c=	${CHACO}/main/interface.c \
+		${CHACO}/main/main.c \
+		${CHACO}/submain/balance.c \
+		${CHACO}/submain/divide.c \
+		${CHACO}/submain/submain.c \
+		${CHACO}/input/input_assign.c \
+		${CHACO}/input/check_input.c \
+		${CHACO}/input/input.c \
+		${CHACO}/input/input_geom.c \
+		${CHACO}/input/input_graph.c \
+		${CHACO}/input/read_params.c \
+		${CHACO}/input/reflect_input.c \
+		${CHACO}/input/read_val.c \
+		${CHACO}/graph/check_graph.c \
+		${CHACO}/graph/free_graph.c \
+		${CHACO}/graph/reformat.c \
+		${CHACO}/graph/subgraph.c \
+		${CHACO}/graph/graph_out.c \
+		${CHACO}/inertial/eigenvec2.c \
+		${CHACO}/inertial/eigenvec3.c \
+		${CHACO}/inertial/inertial.c \
+		${CHACO}/inertial/inertial1d.c \
+		${CHACO}/inertial/inertial2d.c \
+		${CHACO}/inertial/inertial3d.c \
+		${CHACO}/inertial/make_subgeom.c \
+		${CHACO}/klspiff/buckets.c \
+		${CHACO}/klspiff/buckets_bi.c \
+		${CHACO}/klspiff/buckets1.c \
+		${CHACO}/klspiff/bilistops.c \
+		${CHACO}/klspiff/coarsen_kl.c \
+		${CHACO}/klspiff/count_weights.c \
+		${CHACO}/klspiff/compress_ewgts.c \
+		${CHACO}/klspiff/kl_init.c \
+		${CHACO}/klspiff/kl_output.c \
+		${CHACO}/klspiff/klspiff.c \
+		${CHACO}/klspiff/make_bndy_list.c \
+		${CHACO}/klspiff/make_kl_list.c \
+		${CHACO}/klspiff/nway_kl.c \
+		${CHACO}/klvspiff/bpm_improve.c \
+		${CHACO}/klvspiff/bucketsv.c \
+		${CHACO}/klvspiff/clear_dvals.c \
+		${CHACO}/klvspiff/coarsen_klv.c \
+		${CHACO}/klvspiff/countup_vtx_sep.c \
+		${CHACO}/klvspiff/find_bndy.c \
+		${CHACO}/klvspiff/flow.c \
+		${CHACO}/klvspiff/klv_init.c \
+		${CHACO}/klvspiff/klvspiff.c \
+		${CHACO}/klvspiff/make_bpgraph.c \
+		${CHACO}/klvspiff/make_sep_list.c \
+		${CHACO}/klvspiff/matching.c \
+		${CHACO}/klvspiff/nway_klv.c \
+		${CHACO}/klvspiff/flatten.c \
+		${CHACO}/coarsen/coarsen.c \
+		${CHACO}/coarsen/interpolate.c \
+		${CHACO}/coarsen/makefgraph.c \
+		${CHACO}/coarsen/makeccoords.c \
+		${CHACO}/coarsen/coarsen1.c \
+		${CHACO}/coarsen/makev2cv.c \
+		${CHACO}/coarsen/maxmatch.c \
+		${CHACO}/coarsen/maxmatch1.c \
+		${CHACO}/coarsen/maxmatch2.c  \
+		${CHACO}/coarsen/maxmatch3.c \
+		${CHACO}/coarsen/maxmatch4.c \
+		${CHACO}/coarsen/maxmatch5.c \
+		${CHACO}/connect/add_edges.c \
+		${CHACO}/connect/connected.c \
+		${CHACO}/connect/find_edges.c \
+		${CHACO}/eigen/bidir.c \
+		${CHACO}/eigen/bisect.c \
+		${CHACO}/eigen/checkeig.c \
+		${CHACO}/eigen/checkeig_ext.c \
+		${CHACO}/eigen/checkorth.c \
+		${CHACO}/eigen/cksturmcnt.c \
+		${CHACO}/eigen/mkeigvecs.c\
+		${CHACO}/eigen/eigensolve.c \
+		${CHACO}/eigen/get_extval.c \
+		${CHACO}/eigen/get_ritzvals.c \
+		${CHACO}/eigen/lanczos_FO.c \
+		${CHACO}/eigen/lanczos_SO.c \
+		${CHACO}/eigen/lanczos_SO_float.c \
+		${CHACO}/eigen/lanczos_ext.c \
+		${CHACO}/eigen/lanczos_ext_float.c \
+		${CHACO}/eigen/lanc_seconds.c\
+		${CHACO}/eigen/lanpause.c \
+		${CHACO}/eigen/makeorthlnk.c \
+		${CHACO}/eigen/mkscanlist.c \
+		${CHACO}/eigen/orthog1.c \
+		${CHACO}/eigen/orthogonalize.c \
+		${CHACO}/eigen/orthogvec.c \
+		${CHACO}/eigen/ql.c \
+		${CHACO}/eigen/rqi.c \
+		${CHACO}/eigen/rqi_ext.c \
+		${CHACO}/eigen/scale_diag.c \
+		${CHACO}/eigen/scanmax.c \
+		${CHACO}/eigen/scanmin.c \
+		${CHACO}/eigen/solistout.c \
+		${CHACO}/eigen/sorthog.c \
+		${CHACO}/eigen/splarax.c \
+		${CHACO}/eigen/sturmcnt.c \
+		${CHACO}/eigen/Tevec.c \
+		${CHACO}/eigen/tri_solve.c \
+		${CHACO}/eigen/warnings.c \
+		${CHACO}/symmlq/aprod.c \
+		${CHACO}/symmlq/msolve.c \
+		${CHACO}/symmlq/pow_dd.c \
+		${CHACO}/symmlq/symmlq.c \
+		${CHACO}/symmlq/symmlqblas.c \
+		${CHACO}/tinvit/tinvit.c \
+		${CHACO}/tinvit/pythag.c \
+		${CHACO}/tinvit/epslon.c \
+		${CHACO}/optimize/determinant.c \
+		${CHACO}/optimize/func2d.c \
+		${CHACO}/optimize/func3d.c \
+		${CHACO}/optimize/opt2d.c \
+		${CHACO}/optimize/opt3d.c \
+		${CHACO}/assign/assign.c \
+		${CHACO}/assign/assign_out.c \
+		${CHACO}/assign/mapper.c \
+		${CHACO}/assign/median.c \
+		${CHACO}/assign/merge_assign.c \
+		${CHACO}/assign/rec_median.c \
+		${CHACO}/assign/rotate.c \
+		${CHACO}/assign/y2x.c \
+		${CHACO}/bpmatch/checkbp.c \
+		${CHACO}/bpmatch/inits2d.c \
+		${CHACO}/bpmatch/inits3d.c \
+		${CHACO}/bpmatch/genvals2d.c \
+		${CHACO}/bpmatch/genvals3d.c \
+		${CHACO}/bpmatch/map2d.c \
+		${CHACO}/bpmatch/map3d.c \
+		${CHACO}/bpmatch/movevtxs.c \
+		${CHACO}/bpmatch/sorts2d.c \
+		${CHACO}/bpmatch/sorts3d.c \
+		${CHACO}/refine_map/compute_cube_edata.c \
+		${CHACO}/refine_map/compute_cube_vdata.c \
+		${CHACO}/refine_map/refine_cube.c \
+		${CHACO}/refine_map/update_cube_edata.c \
+		${CHACO}/refine_map/update_cube_vdata.c \
+		${CHACO}/refine_map/find_edge_cube.c \
+		${CHACO}/refine_map/init_cube_edata.c \
+		${CHACO}/refine_map/compute_mesh_edata.c \
+		${CHACO}/refine_map/compute_mesh_vdata.c \
+		${CHACO}/refine_map/find_edge_mesh.c \
+		${CHACO}/refine_map/init_mesh_edata.c \
+		${CHACO}/refine_map/refine_mesh.c \
+		${CHACO}/refine_map/update_mesh_edata.c \
+		${CHACO}/refine_map/update_mesh_vdata.c \
+		${CHACO}/refine_map/refine_map.c \
+		${CHACO}/refine_map/make_comm_graph.c \
+		${CHACO}/refine_part/refine_part.c \
+		${CHACO}/refine_part/kl_refine.c \
+		${CHACO}/refine_part/make_maps_ref.c \
+		${CHACO}/refine_part/make_terms_ref.c \
+		${CHACO}/internal/force_internal.c \
+		${CHACO}/internal/improve_internal.c \
+		${CHACO}/internal/check_internal.c \
+		${CHACO}/misc/define_subcubes.c \
+		${CHACO}/misc/define_submeshes.c \
+		${CHACO}/misc/divide_procs.c \
+		${CHACO}/misc/merge_goals.c \
+		${CHACO}/misc/make_term_props.c \
+		${CHACO}/misc/count.c \
+		${CHACO}/misc/countup.c \
+		${CHACO}/misc/countup_cube.c \
+		${CHACO}/misc/countup_mesh.c \
+		${CHACO}/misc/make_subgoal.c \
+		${CHACO}/misc/find_maxdeg.c \
+		${CHACO}/misc/make_maps.c \
+		${CHACO}/misc/make_setlists.c \
+		${CHACO}/misc/sequence.c \
+		${CHACO}/misc/perturb.c \
+		${CHACO}/misc/simple_part.c \
+		${CHACO}/misc/time_kernels.c \
+		${CHACO}/misc/timing.c \
+		${CHACO}/util/affirm.c \
+		${CHACO}/util/array_alloc_2D.c \
+		${CHACO}/util/bit_reverse.c \
+		${CHACO}/util/checkpnt.c \
+		${CHACO}/util/cpvec.c \
+		${CHACO}/util/dot.c \
+		${CHACO}/util/doubleout.c \
+		${CHACO}/util/input_int.c \
+		${CHACO}/util/gray.c \
+		${CHACO}/util/machine_params.c \
+		${CHACO}/util/makevwsqrt.c \
+		${CHACO}/util/mkvec.c \
+		${CHACO}/util/norm.c \
+		${CHACO}/util/normalize.c \
+		${CHACO}/util/mergesort.c \
+		${CHACO}/util/randomize.c \
+		${CHACO}/util/smalloc.c \
+		${CHACO}/util/bail.c \
+		${CHACO}/util/scadd.c \
+		${CHACO}/util/seconds.c \
+		${CHACO}/util/setvec.c \
+		${CHACO}/util/shell_sort.c \
+		${CHACO}/util/strout.c \
+		${CHACO}/util/tri_prod.c \
+		${CHACO}/util/true_or_false.c \
+		${CHACO}/util/update.c  \
+		${CHACO}/util/vecout.c \
+		${CHACO}/util/vecran.c \
+		${CHACO}/util/vecscale.c 
+#		${CHACO}/main/user_params.c \
+
+MLFILES.o=      $(MLFILES.c:.c=.o)
+
+CHFILES.o=      $(CHFILES.c:.c=.o)
+
+#mlchaco:        ${MLFILES.o} chaco.a Makefile
+#		${MATLAB}/bin/cmex CC='gcc -G' -lm ${OFLAGS} ${MLFILES.o} chaco.a; \
+#                 mv mlchaco.mex* ${DEST_DIR}
+
+#mlchaco:	${MLFILES.c} chaco.a Makefile
+#		mex -V4 -output mlchaco ${MLFILES.c} chaco.a -I${CHACO}/main
+#		mv mlchaco.mex* ${DEST_DIR}
+
+#mlchaco:	${MLFILES.c} ${CHFILES.c} ${CHACO}/chaco.a Makefile
+#		${MATLAB}/bin/mex mlchaco.c -largeArrayDims -DMATLAB ${MLFILES.c} ${CHACO}/chaco.a -I${CHACO}/main
+#		mv mlchaco.mex* ${DEST_DIR}
+
+Chaco:	${MLFILES.c} ${CHFILES.c} ${CHACO}/chaco.a Makefile
+		${MATLAB}/bin/mex Chaco.c -largeArrayDims ${MLFILES.c} ${CHACO}/chaco.a -I${CHACO}/main
+#		mv Chaco.mex* ${DEST_DIR}
+
+chaco.a:        ${CHFILES.o}
+		${AR} ${CHACO}/chaco.a ${CHFILES.o} ; ${RANLIB} ${CHACO}/chaco.a
+
+clean:
+		rm -f ${CHACO}/*/*.o chaco.a ${MLCHACO}/*.o ${DEST_DIR}/core
+
+.c.o:
+		${CC} -c ${IFLAGS} ${CFLAGS} -o $*.o $*.c
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/User_Params.debug
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/User_Params.debug	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/User_Params.debug	(revision 21239)
@@ -0,0 +1,27 @@
+% This file, User_Params, is read at runtime to modify Chaco's defaults.
+% The purpose of this version is to turn on some debugging stuff that
+% the Matlab version will normally have off.
+
+ECHO = 2
+OUTPUT_METRICS = 2
+OUTPUT_TIME = 2
+PRINT_HEADERS = 1
+
+DEBUG_EVECS = 1
+DEBUG_KL = 1
+DEBUG_INERTIAL = 1
+DEBUG_CONNECTED = 1
+DEBUG_PERTURB = 1
+DEBUG_ASSIGN = 1
+DEBUG_OPTIMIZE = 1
+DEBUG_BPMATCH = 1
+DEBUG_COARSEN = 1
+DEBUG_MEMORY = 1
+DEBUG_INPUT = 0
+DEBUG_PARAMS = 1
+DEBUG_INTERNAL = 1
+DEBUG_REFINE_PART = 1
+DEBUG_REFINE_MAP = 1
+DEBUG_SIMULATOR = 1
+DEBUG_TRACE = 1
+DEBUG_MACH_PARAMS = 1
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/User_Params.verbose
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/User_Params.verbose	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/User_Params.verbose	(revision 21239)
@@ -0,0 +1,8 @@
+% This file, User_Params, is read at runtime to modify Chaco's defaults.
+% The purpose of this version is to turn on some verbose output that
+% the Matlab version will normally have off.
+
+ECHO = 1
+OUTPUT_METRICS = 1
+OUTPUT_TIME = 1
+PRINT_HEADERS = 1
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/user_params.c
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/user_params.c	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mex/user_params.c	(revision 21239)
@@ -0,0 +1,142 @@
+/* This software was developed by Bruce Hendrickson and Robert Leland   *
+ * at Sandia National Laboratories under US Department of Energy        *
+ * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */
+
+/* Modified by John Gilbert 25 Aug 1995 for Matlab mex-file interface   */
+/* Modified by Tim Davis, July 6, 1998, for Matlab 5.1 interface, and */
+/* a more picky compiler (cc) that complains about duplicate global */
+/* declarations. */
+
+#include "params.h"
+
+#define  TRUE  1
+#define  FALSE 0
+
+
+/* Input and ouput control parameters */
+
+int       CHECK_INPUT = TRUE;	 /* Check input for consistency? (TRUE/FALSE) */
+int       ECHO = 0;		 /* Print input/param options? to file? (-2..2) */
+int       OUTPUT_METRICS = 0;	 /* Controls displaying of results (-2..2) */
+int       OUTPUT_TIME = 0;	 /* At what level to display timings (0..2) */
+int       OUTPUT_ASSIGN = FALSE; /* Write assignments to file? (TRUE/FALSE) */
+int       OUT_ASSIGN_INV = FALSE;/* If so, use inverse form? (TRUE/FALSE) */
+int       IN_ASSIGN_INV = FALSE; /* Input file in inverse form? (TRUE/FALSE) */
+int       PROMPT = FALSE;	 /* Prompt for input? (TRUE/FALSE) */
+int       PRINT_HEADERS = FALSE; /* Print pretty output headers (TRUE/FALSE) */
+
+
+/* Eigenvector calculation parameters */
+
+int       LANCZOS_TYPE = 3;	/* type of Lanczos to use */
+				/* 1 => full orthog, 2 => full inverse operator */
+				/* 3 =>  selective orthogonalization */
+double    EIGEN_TOLERANCE = 1e-3;	/* Numerical eigen-tolerance */
+double    SRESTOL = -1.;		/* Rel resid tol on T evec; autoset if <= 0 */
+int       LANCZOS_SO_INTERVAL = 10;	/* Itns. between SO orthog checks; set >= 2 */
+int       LANCZOS_MAXITNS = -1;		/* Max Lanczos its; autoset if <= 0 */
+double    BISECTION_SAFETY = 10;	/* Divides Lanczos bisection tol */
+int       LANCZOS_CONVERGENCE_MODE = 0;	/* Lanczos convergence test type: */
+					/* 0=> residual,  1=> partition */
+int       RQI_CONVERGENCE_MODE = 1;	/* RQI convergence test type: */
+					/* 0=> residual,  1=> partition */
+int       LANCZOS_SO_PRECISION = 2;	/* 2 => double Lanczos, 1 => float */
+int       WARNING_EVECS = 2;	/* Warnings in eigenvector generation (0..3) */
+double    WARNING_ORTHTOL = 2;	/* Warning if Ares and bjitol have this ratio */
+double    WARNING_MISTOL = 100;	/* Warning if Ares and bjitol have this ratio */
+int       LANCZOS_TIME = FALSE;	/* Detailed Lanczos times? (TRUE/FALSE) */
+int       TIME_KERNELS = FALSE;	/* Time numerical kernels? (TRUE/FALSE) */
+
+
+/* Other parameters for spectral methods */
+
+int       MAKE_CONNECTED = TRUE;/* Connect graph if using spectral method? */
+int       PERTURB = TRUE;	/* Randomly perturb matrix in spectral method? */
+int       NPERTURB = 2;		/* If so, how many edges to modify? */
+double    PERTURB_MAX = 3.0e-3;	/* Largest value for perturbation */
+int       MAPPING_TYPE = 1;	/* How to map from eigenvectors to partition */
+				/* 0 => cut at origin, 1 => min-cost assign */
+int       COARSE_NLEVEL_RQI = 2;/* # levels between RQI calls in uncoarsening */
+int       OPT3D_NTRIES = 5;	/* # local opts to look for global min in opt3d */
+
+
+/* Kernighan--Lin/Fiduccia--Mattheyses parameters */
+
+int       KL_METRIC = 2;	/* KL interset cost: 1=>cuts, 2=>hops */
+int       KL_RANDOM = TRUE;	/* Use randomness in Kernighan-Lin? (TRUE/FALSE)*/
+int       KL_BAD_MOVES = 20;	/* Number of unhelpful moves in a row allowed */
+int       KL_NTRIES_BAD = 1;	/* # unhelpful passes before quitting KL */
+int       KL_UNDO_LIST = TRUE;	/* Only resort changed vtxs? (TRUE/FALSE) */
+double    KL_IMBALANCE = 0.0;	/* Fractional imbalance allowed by KL */
+
+
+/* Coarsening parameters */
+
+double    COARSEN_RATIO_MIN = .7;  /* Min vtx reduction each coarsen stage */
+int       COARSE_NLEVEL_KL = 2;	   /* # levels between KL calls in uncoarsening */
+int       MATCH_TYPE = 1;	   /* Type of contraction matching (1..4) */
+int       HEAVY_MATCH = FALSE;	   /* Encourage heavy match edges? (TRUE/FALSE) */
+int       COARSE_KL_BOTTOM = TRUE; /* Force KL at lowest level (TRUE/FALSE) */
+int       COARSEN_VWGTS = TRUE;	   /* Sum vtx weights in coarsening? (TRUE/FALSE) */
+int       COARSEN_EWGTS = TRUE;	   /* Sum edge weights in coarsening? (TRUE/FALSE) */
+int       KL_ONLY_BNDY = TRUE;	   /* Start moving vtxs on boundary? (TRUE/FALSE) */
+
+
+/* Parameters for post-processing options */
+
+int       REFINE_PARTITION = FALSE;	/* Postprocess to improve cuts? */
+int       INTERNAL_VERTICES = FALSE;	/* ... to up internal vtxs? (TRUE/FALSE) */
+int       REFINE_MAP = FALSE;		/* ... to reduce hops? (TRUE/FALSE) */
+
+
+/* Architecture and simulator parameters */
+
+int       ARCHITECTURE = 0;	/* 0=> hypercube, d=> d-dimensional mesh (0..3)*/
+
+/* Modified by Tim Davis:  remove duplicate definitions */
+#ifdef DUPLICATE_DEFINITIONS_REMOVED
+int       SIMULATOR = 0;	/* Run simulator? In what mode? */
+int       SIMULATION_ITNS = 1;	/* # iterations simulator is to imitate. */
+int       PERCENTAGE_OUTPUT = FALSE;	/* Output in percent? (TRUE/FALSE) */
+double    CUT_COST = 0.0;	/* Communication cost of a cut-edge. */
+double    HOP_COST = 0.0;	/* Communication cost of a hop. */
+double    BDY_COST = 0.0;	/* Cost associated with boundary vertices.  */
+double    BDY_HOP_COST = 0.0;	/* Cost associated with boundary hops. */
+double    STARTUP_COST = 0.0;	/* Communication cost of a message startup. */
+	/* Note: nCUBE2 startup: 112e-6, per byte: 4.6e-6, buffering 5.6e-6 */
+	/* Intel Paragon startup: 70e-6, per byte: 5.3e-8 */
+#endif
+
+/* Miscellaneous parameters */
+
+int       TERM_PROP = FALSE;	/* Invoke terminal propagation? (TRUE/FALSE) */
+double    CUT_TO_HOP_COST = 1;	/* ..if so, relative importance of cuts/hops */
+int       SEQUENCE = FALSE;	/* Only do spectral ordering? (TRUE/FALSE) */
+char      SEQ_FILENAME[NAME_LENGTH] = "Sequence.out";	/* If so, file name */
+long      RANDOM_SEED = 7654321L;	/* Seed for random number generator */
+int       NSQRTS = 1000;	/* # square roots to precompute if coarsening */
+int       MAKE_VWGTS = FALSE;	/* Make vtx weights degrees+1? (TRUE/FALSE) */
+int       FREE_GRAPH = FALSE;	/* Free input graph data? (TRUE/FALSE) */
+char     *PARAMS_FILENAME = "User_Params";	/* File of parameter changes */
+
+
+/* Parameters that control debugging output */
+
+int       DEBUG_EVECS = 0;	/* Debug flag for eigenvector generation (0..5) */
+int       DEBUG_KL = 0;		/* Debug flag for Kernighan-Lin (0..3) */
+int       DEBUG_INERTIAL = 0;	/* Debug flag for inertial method (0..1) */
+int       DEBUG_CONNECTED = 0;	/* Debug flag for connected components (0..1) */
+int       DEBUG_PERTURB = 0;	/* Debug flag for matrix perturbation (0..1) */
+int       DEBUG_ASSIGN = 0;	/* Debug flag for assignment to sets (0..1) */
+int       DEBUG_OPTIMIZE = 0;	/* Debug flag for optimization/rotation (0..2) */
+int       DEBUG_BPMATCH = 0;	/* Debug flag for bipartite matching code (0..2) */
+int       DEBUG_COARSEN = 0;	/* Debug flag for coarsening/uncoarsening (0..1) */
+int       DEBUG_MEMORY = 0;	/* Debug flag for smalloc/sfree (0..3) */
+int       DEBUG_INPUT = 0;	/* Debug flag for having read input files (0..1) */
+int       DEBUG_PARAMS = 1;	/* Debug flag for reading parameter file (0..2) */
+int       DEBUG_INTERNAL = 0;	/* Debug flag for internal vertices (0..2) */
+int       DEBUG_REFINE_PART = 0;/* Debug flag for refine partition (0..1) */
+int       DEBUG_REFINE_MAP = 0;	/* Debug flag for refining mapping (0..1) */
+int       DEBUG_SIMULATOR = 0;	/* Debug flag for comm simulator (0..2) */
+int       DEBUG_TRACE = 0;	/* Trace main execution path (0..2) */
+int       DEBUG_MACH_PARAMS = 0;/* Print computed machine params? (0..1) */
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mlchaco_README.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mlchaco_README.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mlchaco_README.txt	(revision 21239)
@@ -0,0 +1,136 @@
+mlchaco (from meshpartdist.tar, 2/08/02)
+http://www.cerfacs.fr/algor/Softs/MESHPART/
+
+
+[jschierm@astrid chaco]$ diff mlchaco_old.c mlchaco.c
+34a35  [CLK_TCK undefined, so use CLOCKS_PER_SEC]
+> #include <time.h>      /*  CLOCKS_PER_SEC  */
+56,61c57,62  [update for current Matlab]
+< void mexFunction(    
+<     int         nlhs,           /* number of expected outputs */
+<     Matrix      *plhs[],        /* matrix pointer array returning outputs */
+<     int         nrhs,           /* number of inputs */
+<     Matrix      *prhs[]         /* matrix pointer array for inputs */
+<     )
+---
+> void mexFunction(
+>     int           nlhs,           /* number of expected outputs */
+>     mxArray       *plhs[],        /* array of pointers to output arguments
+>     */
+>     int           nrhs,           /* number of inputs */
+>     const mxArray *prhs[]         /* array of pointers to input arguments */
+> )
+87a89  [update for current Matlab]
+>     mwIndex *mwstart,*mwadjacency;
+104c106,110  [update for current Matlab]
+<     start = mxGetJc(A_in);
+---
+> /*    start = mxGetJc(A_in);*/
+>     mwstart = mxGetJc(A_in);
+>     start = mxMalloc((mxGetN(A_in)+1)*sizeof(int));
+>     for (i=0; i<(mxGetN(A_in)+1); i++)
+>         start[i]= (int)mwstart[i];
+106c112,116  [update for current Matlab]
+<     adjacency = mxGetIr(A_in);
+---
+> /*    adjacency = mxGetIr(A_in);*/
+>     mwadjacency = mxGetIr(A_in);
+>     adjacency = mxMalloc(mxGetNzmax(A_in)*sizeof(int));
+>     for (i=0; i<mxGetNzmax(A_in); i++)
+>         adjacency[i]= (int)mwadjacency[i];
+131,132c141,144  [provide default filenames, since no way to input]
+<     outassignname = NULL;
+<     outfilename = NULL;
+---
+> /*    outassignname = NULL;
+>     outfilename = NULL;*/
+>     outassignname = "chaco_assign.txt";
+>     outfilename = "chaco_out.txt";
+169c181  [update for current Matlab]
+<       plhs [1] = mxCreateFull (1, 1, REAL) ;
+---
+>       plhs [1] = mxCreateDoubleMatrix (1, 1, mxREAL) ;
+173c185  [CLK_TCK undefined, so use CLOCKS_PER_SEC]
+<       ((double) CLK_TCK) ;
+---
+>       ((double) CLOCKS_PER_SEC) ;
+179c191  [update for current Matlab]
+<         map_out = mxCreateFull(1,nvtxs,REAL);
+---
+>         map_out = mxCreateDoubleMatrix(1,nvtxs,mxREAL);
+185a198,199  [update for current Matlab]
+>     if (start != NULL) mxFree((char *) start);
+>     if (adjacency != NULL) mxFree((char *) adjacency);
+
+
+[jschierm@astrid chaco]$ diff Makefile_old Makefile
+27c27,28  [current Matlab location]
+< MATLAB =        /usr/local/libexec/matlab
+---
+> #MATLAB =        /usr/local/libexec/matlab
+> MATLAB =        /usr/local/pkgs/matlab-7.6
+30c31,32  [current Chaco 2.2 location]
+< CHACO =         ../../Chaco-2.0/code
+---
+> #CHACO =         ../../Chaco-2.0/code
+> CHACO =         ../../Chaco-2.2/code
+34,35c36,37  [use gcc instead of cc]
+< #CC =            gcc 
+< CC =            cc 
+---
+> CC =            gcc 
+> #CC =            cc 
+37c39,40  [add MATLAB flag to compile for mex-function]
+< CFLAGS =        -Xa -G -xO4 -xcg92
+---
+> #CFLAGS =        -Xa -G -xO4 -xcg92
+> CFLAGS =        -Xa -G -xO4 -xcg92 -DMATLAB
+39,40c42,45  [current function locations]
+< AR =             /usr/ccs/bin/ar rcv   # for solaris 2
+< RANLIB =         /usr/ccs/bin/ranlib   # for solaris 2
+---
+> #AR =             /usr/ccs/bin/ar rcv   # for solaris 2
+> AR =             /usr/bin/ar rcv   # for solaris 2
+> #RANLIB =         /usr/ccs/bin/ranlib   # for solaris 2
+> RANLIB =         /usr/bin/ranlib   # for solaris 2
+45,47d49  [use Chaco versions with MATLAB switch rather than local versions]
+<               ${MLCHACO}/chaco_check_graph.c \
+<               ${MLCHACO}/check_input.c \
+<                 ${MLCHACO}/smalloc.c \
+48a51,53
+> #             ${MLCHACO}/chaco_check_graph.c \
+> #             ${MLCHACO}/check_input.c \
+> #                ${MLCHACO}/smalloc.c \
+55a61  [update CHLIST to match Chaco 2.2]
+>               ${CHACO}/input/check_input.c \
+61a68  [update CHLIST to match Chaco 2.2]
+>               ${CHACO}/graph/check_graph.c \
+91a99  [update CHLIST to match Chaco 2.2]
+>               ${CHACO}/klvspiff/flow.c \
+97a106  [update CHLIST to match Chaco 2.2]
+>               ${CHACO}/klvspiff/flatten.c \
+100c109,110  [update CHLIST to match Chaco 2.2]
+<               ${CHACO}/coarsen/makecgraph.c \
+---
+>               ${CHACO}/coarsen/makefgraph.c \
+>               ${CHACO}/coarsen/makeccoords.c \
+102d111  [update CHLIST to match Chaco 2.2]
+<               ${CHACO}/coarsen/countcedges.c \
+108a118  [update CHLIST to match Chaco 2.2]
+>               ${CHACO}/coarsen/maxmatch5.c \
+234a245  [update CHLIST to match Chaco 2.2]
+>               ${CHACO}/util/smalloc.c \
+245a257,258  [use local versions rather than Chaco versions (added for clarity)]
+> #             ${CHACO}/main/user_params.c \
+> #             ${CHACO}/util/bail.c \
+254a268,271  [update for current mex]
+> #mlchaco:     ${MLFILES.c} chaco.a Makefile
+> #             mex -V4 -output mlchaco ${MLFILES.c} chaco.a -I${CHACO}/main
+> #             mv mlchaco.mex* ${DEST_DIR}
+> 
+256c273  [update for current mex]
+<               mex -V4 -output mlchaco ${MLFILES.c} chaco.a -I${CHACO}/main
+---
+>               mex -output mlchaco -largeArrayDims -DMATLAB ${MLFILES.c}
+>               chaco.a -I${CHACO}/main
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mlchaco_jes_notes.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mlchaco_jes_notes.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/mlchaco_jes_notes.txt	(revision 21239)
@@ -0,0 +1,182 @@
+7/15/09:
+
+[jschierm@astrid chaco]$ diff Makefile_old Makefile
+27c27,28
+< MATLAB =        /usr/local/libexec/matlab
+---
+> #MATLAB =        /usr/local/libexec/matlab
+> MATLAB =        /usr/local/matlab780
+30c31,32
+< CHACO =         ../../Chaco-2.0/code
+---
+> #CHACO =         ../../Chaco-2.0/code
+> CHACO =         ../../Chaco-2.2/code
+34,35c36,37
+< #CC =            gcc 
+< CC =            cc 
+---
+> CC =            gcc 
+> #CC =            cc 
+39,40c41,44
+< AR =             /usr/ccs/bin/ar rcv   # for solaris 2
+< RANLIB =         /usr/ccs/bin/ranlib   # for solaris 2
+---
+> #AR =             /usr/ccs/bin/ar rcv   # for solaris 2
+> AR =             /usr/bin/ar rcv   # for solaris 2
+> #RANLIB =         /usr/ccs/bin/ranlib   # for solaris 2
+> RANLIB =         /usr/bin/ranlib   # for solaris 2
+91a96,97  [missing symbols]
+>               ${CHACO}/klvspiff/flatten.c \
+>               ${CHACO}/klvspiff/flow.c \
+99a106  [missing symbols]
+>               ${CHACO}/coarsen/makeccoords.c \
+102a110  [missing symbols]
+>               ${CHACO}/coarsen/makefgraph.c \
+108a117  [missing symbols]
+>               ${CHACO}/coarsen/maxmatch5.c \
+254a264,267
+> #mlchaco:     ${MLFILES.c} chaco.a Makefile
+> #             mex -V4 -output mlchaco ${MLFILES.c} chaco.a -I${CHACO}/main
+> #             mv mlchaco.mex* ${DEST_DIR}
+> 
+256c269
+<               mex -V4 -output mlchaco ${MLFILES.c} chaco.a -I${CHACO}/main
+---
+>               mex -output mlchaco -largeArrayDims ${MLFILES.c} chaco.a -I${CHACO}/main
+
+[jschierm@astrid chaco]$ diff mlchaco_old.c mlchaco.c
+34a35
+> #include <time.h>      /*  CLOCKS_PER_SEC  */
+56,61c57,62
+< void mexFunction(    
+<     int         nlhs,           /* number of expected outputs */
+<     Matrix      *plhs[],        /* matrix pointer array returning outputs */
+<     int         nrhs,           /* number of inputs */
+<     Matrix      *prhs[]         /* matrix pointer array for inputs */
+<     )
+---
+> void mexFunction(
+>     int           nlhs,           /* number of expected outputs */
+>     mxArray       *plhs[],        /* array of pointers to output arguments
+>     */
+>     int           nrhs,           /* number of inputs */
+>     const mxArray *prhs[]         /* array of pointers to input arguments */
+> )
+87a89
+>     mwIndex *mwstart,*mwadjacency;
+104c106,110
+<     start = mxGetJc(A_in);
+---
+> /*    start = mxGetJc(A_in);*/
+>     mwstart = mxGetJc(A_in);
+>     start = mxMalloc((mxGetN(A_in)+1)*sizeof(int));
+>     for (i=0; i<(mxGetN(A_in)+1); i++)
+>         start[i]= (int)mwstart[i];
+106c112,116
+<     adjacency = mxGetIr(A_in);
+---
+> /*    adjacency = mxGetIr(A_in);*/
+>     mwadjacency = mxGetIr(A_in);
+>     adjacency = mxMalloc(mxGetNzmax(A_in)*sizeof(int));
+>     for (i=0; i<mxGetNzmax(A_in); i++)
+>         adjacency[i]= (int)mwadjacency[i];
+169c181
+<       plhs [1] = mxCreateFull (1, 1, REAL) ;
+---
+>       plhs [1] = mxCreateDoubleMatrix (1, 1, mxREAL) ;
+173c185
+<       ((double) CLK_TCK) ;
+---
+>       ((double) CLOCKS_PER_SEC) ;
+179c191
+<         map_out = mxCreateFull(1,nvtxs,REAL);
+---
+>         map_out = mxCreateDoubleMatrix(1,nvtxs,mxREAL);
+185a198,199
+>     if (start != NULL) mxFree((char *) start);
+>     if (adjacency != NULL) mxFree((char *) adjacency);
+
+
+7/29/09:
+
+[jschierm@astrid chaco]$ diff mlchaco_old.c mlchaco.c
+131,132c141,144
+<     outassignname = NULL;
+<     outfilename = NULL;
+---
+> /*    outassignname = NULL;
+>     outfilename = NULL;*/
+>     outassignname = "chaco_assign.txt";
+>     outfilename = "chaco_out.txt";
+
+7/30/09:
+
+[jschierm@astrid chaco]$ diff Makefile_old Makefile
+27c27,28
+< MATLAB =        /usr/local/libexec/matlab
+---
+> #MATLAB =        /usr/local/libexec/matlab
+> MATLAB =        /usr/local/pkgs/matlab-7.6
+37c39,40
+< CFLAGS =        -Xa -G -xO4 -xcg92
+---
+> #CFLAGS =        -Xa -G -xO4 -xcg92
+> CFLAGS =        -Xa -G -xO4 -xcg92 -DMATLAB
+45,47d49  [using Chaco versions with MATLAB switch]
+<               ${MLCHACO}/chaco_check_graph.c \
+<               ${MLCHACO}/check_input.c \
+<                 ${MLCHACO}/smalloc.c \
+48a51,53
+> #             ${MLCHACO}/chaco_check_graph.c \
+> #             ${MLCHACO}/check_input.c \
+> #                ${MLCHACO}/smalloc.c \
+55a61
+>               ${CHACO}/input/check_input.c \
+61a68
+>               ${CHACO}/graph/check_graph.c \
+91a99  [compared CHFILES with Chaco Makefile CHFILES]
+>               ${CHACO}/klvspiff/flow.c \
+97a106  [compared CHFILES with Chaco Makefile CHFILES]
+>               ${CHACO}/klvspiff/flatten.c \
+100c109,110  [compared CHFILES with Chaco Makefile CHFILES]
+<               ${CHACO}/coarsen/makecgraph.c \
+---
+>               ${CHACO}/coarsen/makefgraph.c \
+>               ${CHACO}/coarsen/makeccoords.c \
+102d111  [compared CHFILES with Chaco Makefile CHFILES]
+<               ${CHACO}/coarsen/countcedges.c \
+108a118  [compared CHFILES with Chaco Makefile CHFILES]
+>               ${CHACO}/coarsen/maxmatch5.c \
+234a245
+>               ${CHACO}/util/smalloc.c \
+245a257,258
+> #             ${CHACO}/main/user_params.c \
+> #             ${CHACO}/util/bail.c \
+254a268,271
+> #mlchaco:     ${MLFILES.c} chaco.a Makefile
+> #             mex -V4 -output mlchaco ${MLFILES.c} chaco.a -I${CHACO}/main
+> #             mv mlchaco.mex* ${DEST_DIR}
+> 
+256c273
+<               mex -V4 -output mlchaco ${MLFILES.c} chaco.a -I${CHACO}/main
+---
+>               mex -output mlchaco -largeArrayDims -DMATLAB ${MLFILES.c}
+>               chaco.a -I${CHACO}/main
+
+5/25/10:
+
+- reorganized chaco.m and mlchaco.c drivers into Chaco.c matlab-layer (independent of chaco) and Chacox.c x-layer (independent of matlab).
+
+5/26/10:
+
+- added mexchaco target to Makefile (and related changes).
+
+5/27/10
+
+- added define for exit(status) to ${CHACO}/main/defs.h so that local bail.c is
+  unnecessary.
+
+6/15/10:
+
+- separated chaco x-layer from meshpart build.
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/patches/Makefile.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/patches/Makefile.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/chaco/patches/Makefile.patch	(revision 21239)
@@ -0,0 +1,11 @@
+--- ./src/code/Makefile	2016-02-16 19:39:30.000000000 -0800
++++ ./Makefile	2016-02-16 19:37:49.000000000 -0800
+@@ -6,7 +6,7 @@
+ #CFLAGS =	-O2
+ #OFLAGS =	-O2
+ #CFLAGS =	-fPIC -fno-omit-frame-pointer -D_GNU_SOURCE -pthread -fexceptions
+-CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -g
++CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -g -I/usr/include/malloc
+ #CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -DMATLAB
+ OFLAGS =	-O2 
+ #AR =             /usr/ccs/bin/ar rcv   # for solaris 2
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cmake/install-macosx64-snowleopard.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cmake/install-macosx64-snowleopard.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cmake/install-macosx64-snowleopard.sh	(revision 21239)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu 
+VER="2.8.11.2"
+
+#Some cleanup
+rm -rf install cmake-$VER
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py "http://issm.jpl.nasa.gov/files/externalpackages/cmake-$VER.tar.gz" "cmake-$VER.tar.gz"
+
+#Untar 
+tar -zxvf  cmake-$VER.tar.gz
+
+#Move cmake into install directory
+mv cmake-$VER/* install
+rm -rf cmake-$VER
+
+LDFLAGS="-L/usr/lib/ -lstdc++ -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin10/4.6.2/ -lgfortran"
+F77="/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran"
+
+#Compile cmake
+cd install 
+./bootstrap --prefix=$ISSM_DIR/externalpackages/cmake/install
+if [ $# -eq 0 ]; then
+	make
+else 
+	make -j $1; 
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cmake/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cmake/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cmake/install.sh	(revision 21239)
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -eu 
+VER="3.6.2"
+
+#Some cleanup
+rm -rf install cmake-$VER
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py "http://issm.jpl.nasa.gov/files/externalpackages/cmake-$VER.tar.gz" "cmake-$VER.tar.gz"
+
+#Untar 
+tar -zxvf  cmake-$VER.tar.gz
+
+#Move cmake into install directory
+mv cmake-$VER/* install
+rm -rf cmake-$VER
+
+#Compile cmake
+cd install 
+./bootstrap --prefix=$ISSM_DIR/externalpackages/cmake/install
+if [ $# -eq 0 ]; then
+	make
+else 
+	make -j $1; 
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/colpack/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/colpack/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/colpack/install.sh	(revision 21239)
@@ -0,0 +1,26 @@
+#!/bin/bash
+set -eu
+
+#Erase install
+rm -rf install  src ColPack
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/ColPack-1.0.3.tar.gz' 'ColPack-1.0.3.tar.gz'
+
+#install directory
+mkdir src
+tar -zxvf ColPack-1.0.3.tar.gz 
+mv ColPack/* src
+rm -rf ColPack
+
+#compile
+cd src
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+cd ..
+
+#install
+ln -s src/build ./install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cppcheck/install-dev.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cppcheck/install-dev.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cppcheck/install-dev.sh	(revision 21239)
@@ -0,0 +1,18 @@
+#!/bin/bash
+set -eu
+
+#Erase install
+rm -rf install  src 
+
+#Download
+git clone git://github.com/danmar/cppcheck.git src
+
+#compile
+cd src
+if [ $# -eq 0 ]; then
+	make 
+else 
+	make -j $1
+fi  
+make install PREFIX=$ISSM_DIR/externalpackages/cppcheck/install
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cppcheck/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cppcheck/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cppcheck/install.sh	(revision 21239)
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -eu
+
+#Erase install
+rm -rf install  src cppcheck-1.48
+mkdir src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/cppcheck-1.48.tar' 'cppcheck-1.48.tar'
+tar -xvf cppcheck-1.48.tar
+
+mv cppcheck-1.48/* src
+rm -rf cppcheck-1.48
+
+#compile
+cd src
+if [ $# -eq 0 ]; then
+	make 
+else 
+	make -j $1
+fi  
+make install PREFIX=$ISSM_DIR/externalpackages/cppcheck/install
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/curl/install-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/curl/install-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/curl/install-macosx64.sh	(revision 21239)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install curl-7.39.0
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/curl-7.39.0.tar.gz' 'curl-7.39.0.tar.gz'
+
+#Untar 
+tar -zxvf  curl-7.39.0.tar.gz
+
+#Move curl into src directory
+mv curl-7.39.0/* src
+rm -rf curl-7.39.0
+
+#Configure curl
+cd src
+
+export CFLAGS=" -arch x86_64"
+
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/curl/install" 
+
+#Compile curl
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cvs/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cvs/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cvs/install.sh	(revision 21239)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf cvs-1.11.23
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/cvs-1.11.23.tar.gz' 'cvs-1.11.23.tar.gz'
+
+#Untar 
+tar -zxvf  cvs-1.11.23.tar.gz
+
+#Move subversion into src directory
+mv cvs-1.11.23/* src
+rm -rf cvs-1.11.23
+
+#Patch getline
+cd src
+cat lib/getline.c | sed -e "s/getline /get_line /" > BACK && mv BACK lib/getline.c
+cat lib/getline.h | sed -e "s/getline /get_line /" > BACK && mv BACK lib/getline.h
+
+#Configure
+./configure --prefix="$ISSM_DIR/externalpackages/cvs/install" 
+
+#Compile and install subversion
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cython/install-18.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cython/install-18.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cython/install-18.sh	(revision 21239)
@@ -0,0 +1,13 @@
+#!/bin/bash
+set -eu
+
+#clean up
+rm -rf Cython-0.18
+
+#download numpy first
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Cython-0.18.tar.gz' 'cython.tar.gz'
+
+#install numpy
+tar -zxvf cython.tar.gz
+cd Cython-0.18
+python setup.py install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cython/install-19.2.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cython/install-19.2.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cython/install-19.2.sh	(revision 21239)
@@ -0,0 +1,13 @@
+#!/bin/bash
+set -eu
+
+#clean up
+rm -rf Cython-0.19.2
+
+#download numpy first
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Cython-0.19.2.tar.gz' 'cython.tar.gz'
+
+#install numpy
+tar -zxvf cython.tar.gz
+cd Cython-0.19.2
+python setup.py install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cython/install-22.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cython/install-22.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cython/install-22.sh	(revision 21239)
@@ -0,0 +1,13 @@
+#!/bin/bash
+set -eu
+
+#clean up
+rm -rf Cython-0.22
+
+#download numpy first
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Cython-0.22.tar.gz' 'cython.tar.gz'
+
+#install numpy
+tar -zxvf cython.tar.gz
+cd Cython-0.22
+python setup.py install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cython/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cython/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/cython/install.sh	(revision 21239)
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -eu
+
+#clean up
+rm -rf cython
+
+#download cython first
+git clone https://github.com/cython/cython.git
+
+#install cython
+cd cython
+python setup.py install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/LHSDriver.cpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/LHSDriver.cpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/LHSDriver.cpp.patch	(revision 21239)
@@ -0,0 +1,8 @@
+766c766
+<   /*char output_string[32], message_string[32], title_string[32],
+---
+>   char output_string[32], message_string[32], title_string[32],
+802c802
+<   check_error(err_code, "lhs_files");*/
+---
+>   check_error(err_code, "lhs_files");
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/NIDRProblemDescDB.C.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/NIDRProblemDescDB.C.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/NIDRProblemDescDB.C.patch	(revision 21239)
@@ -0,0 +1,4 @@
+95a96,98
+>   
+>   //close the input file
+>   fclose(nidrin);
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/NonDLocalReliability.C.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/NonDLocalReliability.C.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/NonDLocalReliability.C.patch	(revision 21239)
@@ -0,0 +1,7 @@
+2276a2277
+> 	  // add sensitivity output to importance factors (jes, 8/06/10)
+2280c2281,2282
+< 	    << impFactor[i][j] << '\n';
+---
+> 	    << impFactor[i][j] << "  Sensitivity = " << setw(write_precision+7)
+> 	    << fnGradsMeanX(i, j) << '\n';
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/NonDSampling.C.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/NonDSampling.C.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/NonDSampling.C.patch	(revision 21239)
@@ -0,0 +1,15 @@
+656a657,658
+> 
+> 
+659a662,663
+>    
+> 	return; //don't compute for now, too expensive.
+705c709
+<   //calculate simple rank correlation coeff
+---
+>   //calculate simple correlation coeff
+710a715
+> 
+1071a1077,1078
+> 
+> 	return; //don't output for now.
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/NonDUnilevelRBDO.C.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/NonDUnilevelRBDO.C.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/NonDUnilevelRBDO.C.patch	(revision 21239)
@@ -0,0 +1,10 @@
+1052,1053c1052,1057
+< 	  s << "  Importance Factor for variable " << setw(11)
+< 	    << uv_labels[j].data() << " = " << impFactor[i][j] << '\n';
+---
+> 	  // add sensitivity output to importance factors (jes, 8/06/10)
+> 	  s << "  Importance Factor for variable " << setiosflags(ios::left)
+> 	    << setw(11) << uv_labels[j].data() << " = "
+> 	    << resetiosflags(ios::adjustfield) << setw(write_precision+7)
+> 	    << impFactor[i][j] << "  Sensitivity = " << setw(write_precision+7)
+> 	    << fnGradsMeanX(i, j) << '\n';
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/ParallelLibrary.C.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/ParallelLibrary.C.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/ParallelLibrary.C.patch	(revision 21239)
@@ -0,0 +1,34 @@
+134a135
+>   initialized=0; //we run serially all the time!
+165a167,197
+> /** This constructor is provided for the Issm software, to run serial 
+>  * Dakota in a parallel MPI ring: */
+> ParallelLibrary::ParallelLibrary(char* serial_mode): worldRank(0), worldSize(1),
+>   mpirunFlag(false), ownMPIFlag(false), dryRunFlag(false), dummyFlag(false),
+>   stdOutputFlag(false), stdErrorFlag(false), startClock(0),
+>   stdOutputFilename(NULL), stdErrorFilename(NULL), readRestartFilename(NULL),
+>   writeRestartFilename(NULL), stopRestartEvals(0),
+>   currPLIter(parallelLevels.end()), currPCIter(parallelConfigurations.end())
+> {
+>   startClock   = clock();
+> #ifdef DAKOTA_UTILIB
+>   utilib::exception_mngr::set_mode(utilib::exception_mngr::Abort);
+>   startCPUTime = CPUSeconds();       // see utilib/src/sys/seconds.cpp
+>   startWCTime  = WallClockSeconds(); // see utilib/src/sys/seconds.cpp
+> #endif // DAKOTA_UTILIB
+> 
+>   // do not initialize MPI.  Get worldRank/worldSize if available
+>   ParallelLevel pl;
+> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for  Dakota!
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota in serial mode on CPU 0, inside an MPI ring.";
+> #else // mpi not available
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota in serial mode.\n";
+> #endif // HAVE_MPI
+> 
+>   parallelLevels.insert(pl);
+>   currPLIter = parallelLevels.begin();
+>   increment_parallel_configuration();
+> }
+> 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/ParallelLibrary.H.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/ParallelLibrary.H.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/4.2/ParallelLibrary.H.patch	(revision 21239)
@@ -0,0 +1,3 @@
+346a347,348
+>   /// library mode constructor, serial mode
+>   ParallelLibrary(char*  serial_mode);
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/NIDRProblemDescDB.C.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/NIDRProblemDescDB.C.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/NIDRProblemDescDB.C.patch	(revision 21239)
@@ -0,0 +1,5 @@
+109a110,113
+> 
+>   //close the input file
+>   fclose(nidrin);
+> 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/NonDLocalReliability.C.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/NonDLocalReliability.C.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/NonDLocalReliability.C.patch	(revision 21239)
@@ -0,0 +1,9 @@
+2218a2219
+> 	  // add sensitivity output to importance factors (jes, 8/06/10)
+2223c2224,2227
+< 	    << std::setw(width) << impFactor(j,i) << '\n';
+---
+> 	    << std::setw(width) << impFactor(j,i)
+> 	    << "  Sensitivity = "
+> 	    << std::resetiosflags(std::ios::adjustfield)
+> 	    << std::setw(width) << fnGradsMeanX(j,i) << '\n';
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/NonDSampling.C.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/NonDSampling.C.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/NonDSampling.C.patch	(revision 21239)
@@ -0,0 +1,14 @@
+438,439c438,440
+<   if (!subIteratorFlag)
+<     nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+---
+> //don't compute for now, too expensive.
+> //  if (!subIteratorFlag)
+> //    nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+894,895c895,897
+<     nonDSampCorr.print_correlations(s, cv_labels, div_labels, drv_labels,
+<       iteratedModel.response_labels());
+---
+> //don't output for now.
+> //    nonDSampCorr.print_correlations(s, cv_labels, div_labels, drv_labels,
+> //      iteratedModel.response_labels());
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/NonDUnilevelRBDO.C.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/NonDUnilevelRBDO.C.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/NonDUnilevelRBDO.C.patch	(revision 21239)
@@ -0,0 +1,7 @@
+1046a1047
+> 	  // add sensitivity output to importance factors (jes, 8/06/10)
+1048c1049,1050
+< 	    << uv_labels[j].data() << " = " << impFactor[i][j] << '\n';
+---
+> 	    << uv_labels[j].data() << " = " << impFactor[i][j]
+> 	    << "  Sensitivity = " << fnGradsMeanX(i,j) << '\n';
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/ParallelLibrary.C.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/ParallelLibrary.C.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/ParallelLibrary.C.patch	(revision 21239)
@@ -0,0 +1,36 @@
+178a179
+>   initialized=0; //we run serially all the time!
+214a216,248
+> /** This constructor is provided for the Issm software, to run serial
+>  * Dakota in a parallel MPI ring: */
+> ParallelLibrary::ParallelLibrary(char* serial_mode):
+>   worldRank(0), worldSize(1), 
+>   mpirunFlag(false), ownMPIFlag(false), dummyFlag(false),
+>   stdOutputToFile(false), stdErrorToFile(false), checkFlag(false),
+>   preRunFlag(true), runFlag(true), postRunFlag(true), userModesFlag(false), 
+>   startClock(0), stopRestartEvals(0),
+>   currPLIter(parallelLevels.end()), currPCIter(parallelConfigurations.end())
+> {
+>   startClock   = clock();
+> #ifdef DAKOTA_UTILIB
+>   utilib::exception_mngr::set_mode(utilib::exception_mngr::Abort);
+>   startCPUTime = CPUSeconds();       // see utilib/src/sys/seconds.cpp
+>   startWCTime  = WallClockSeconds(); // see utilib/src/sys/seconds.cpp
+> #endif // DAKOTA_UTILIB
+> 
+>   // do not initialize MPI.  Get worldRank/worldSize if available
+>   ParallelLevel pl;
+> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for Dakota!
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota 5.2 MPI executable in serial mode on CPU 0 for ISSM.";
+> #else // mpi not available
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota 5.2 serial executable in serial mode for ISSM.\n";
+> #endif // HAVE_MPI
+> 
+>   parallelLevels.push_back(pl);
+>   currPLIter = parallelLevels.begin();
+>   increment_parallel_configuration();
+> }
+> 
+> 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/ParallelLibrary.H.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/ParallelLibrary.H.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/ParallelLibrary.H.patch	(revision 21239)
@@ -0,0 +1,3 @@
+358a359,360
+>   /// library mode constructor, serial mode (for the Issm software)
+>   ParallelLibrary(char*  serial_mode);
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/Teuchos_ConfigDefs.hpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/Teuchos_ConfigDefs.hpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/Teuchos_ConfigDefs.hpp.patch	(revision 21239)
@@ -0,0 +1,2 @@
+87a88
+> #include <stddef.h>
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/pecos_global_defs.hpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/pecos_global_defs.hpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.2/pecos_global_defs.hpp.patch	(revision 21239)
@@ -0,0 +1,4 @@
+24a25
+> #ifndef PI
+25a27
+> #endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.mac.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.mac.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.mac.patch	(revision 21239)
@@ -0,0 +1,14 @@
+64,65c64,65
+< #set( DAKOTA_HAVE MPI ON
+< #     CACHE BOOL "Build with MPI enabled" FORCE)
+---
+> set( DAKOTA_HAVE MPI OFF
+>      CACHE BOOL "Build with MPI disabled" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.patch	(revision 21239)
@@ -0,0 +1,26 @@
+64,65c64,65
+< #set( DAKOTA_HAVE MPI ON
+< #     CACHE BOOL "Build with MPI enabled" FORCE)
+---
+> set( DAKOTA_HAVE MPI OFF
+>      CACHE BOOL "Build with MPI disabled" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ENV{ISSM_DIR}/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.pfe.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.pfe.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.pfe.patch	(revision 21239)
@@ -0,0 +1,26 @@
+64,65c64,65
+< #set( DAKOTA_HAVE MPI ON
+< #     CACHE BOOL "Build with MPI enabled" FORCE)
+---
+> set( DAKOTA_HAVE MPI OFF
+>      CACHE BOOL "Build with MPI disabled" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "/nasa/boost/1.50.0"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.lonestar.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.lonestar.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.lonestar.patch	(revision 21239)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L/opt/apps/intel/16.0.1.150/compilers_and_libraries_2016.1.150/linux/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
+> set(LAPACK_LIBS "-L/opt/apps/intel/16.0.1.150/compilers_and_libraries_2016.1.150/linux/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.patch	(revision 21239)
@@ -0,0 +1,4 @@
+47a48,50
+> set(BUILD_STATIC_LIBS ON CACHE BOOL "Set to ON to build static libraries" FORCE)
+> set(BUILD_SHARED_LIBS OFF CACHE BOOL "Set to ON to build DSO libraries" FORCE)
+> 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.pfe.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.pfe.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.pfe.patch	(revision 21239)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L/nasa/intel/Compiler/2015.0.090/composer_xe_2015.0.090/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm")
+> set(LAPACK_LIBS "-L/nasa/intel/Compiler/2015.0.090/composer_xe_2015.0.090/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm")
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/DakotaDev.cmake.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/DakotaDev.cmake.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/DakotaDev.cmake.patch	(revision 21239)
@@ -0,0 +1,16 @@
+4,8c4,8
+< set(DAKOTA_HAVE_MPI TRUE CACHE BOOL "Enable MPI in DAKOTA?")
+< set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+< set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+<   "Enable DAKOTA specification maintenance mode?")
+< set(PECOS_ENABLE_TESTS TRUE CACHE BOOL "Enable Pecos-specific tests?")
+---
+> #set(DAKOTA_HAVE_MPI TRUE CACHE BOOL "Enable MPI in DAKOTA?")
+> #set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+> #set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+> #  "Enable DAKOTA specification maintenance mode?")
+> #set(PECOS_ENABLE_TESTS TRUE CACHE BOOL "Enable Pecos-specific tests?")
+14c14
+< #set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
+---
+> set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/NonDLocalReliability.cpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/NonDLocalReliability.cpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/NonDLocalReliability.cpp.patch	(revision 21239)
@@ -0,0 +1,9 @@
+2587a2588
+> 	  // add sensitivity output to importance factors (jes, 8/06/10)
+2592c2593,2596
+< 	    << std::setw(width) << impFactor(j,i) << '\n';
+---
+> 	    << std::setw(width) << impFactor(j,i)
+> 	    << "  Sensitivity = "
+> 	    << std::resetiosflags(std::ios::adjustfield)
+> 	    << std::setw(width) << fnGradsMeanX(j,i) << '\n';
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/NonDSampling.cpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/NonDSampling.cpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/NonDSampling.cpp.patch	(revision 21239)
@@ -0,0 +1,25 @@
+703,709c703,710
+<   if (!subIteratorFlag) {
+<     nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+<     // archive the correlations to the results DB
+<     nonDSampCorr.archive_correlations(run_identifier(), resultsDB,
+< 				      cv_labels, div_labels, drv_labels,
+< 				      iteratedModel.response_labels());
+<   }
+---
+> //don't compute for now, too expensive.
+> //  if (!subIteratorFlag) {
+> //    nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+> //    // archive the correlations to the results DB
+> //    nonDSampCorr.archive_correlations(run_identifier(), resultsDB,
+> //				      cv_labels, div_labels, drv_labels,
+> //				      iteratedModel.response_labels());
+> //  }
+1196,1197c1197,1200
+<     nonDSampCorr.print_correlations(s, cv_labels, div_labels, drv_labels,
+< 				    iteratedModel.response_labels());
+---
+> 
+> //don't output for now.
+> //    nonDSampCorr.print_correlations(s, cv_labels, div_labels, drv_labels,
+> //				    iteratedModel.response_labels());
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/ParallelLibrary.cpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/ParallelLibrary.cpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/ParallelLibrary.cpp.patch	(revision 21239)
@@ -0,0 +1,35 @@
+107a108
+>   initialized=0; //we run serially all the time!
+133a135
+>   initialized=0; //we run serially all the time!
+141a144,171
+> /** This constructor is provided for the ISSM software, to run serial
+>  * Dakota in a parallel MPI ring: */
+> ParallelLibrary::ParallelLibrary(char* serial_mode):
+>   dakotaMPIComm(MPI_COMM_WORLD), worldRank(0), worldSize(1),
+>   mpirunFlag(false), ownMPIFlag(false), dummyFlag(false),
+>   stdOutputToFile(false), stdErrorToFile(false), checkFlag(false),
+>   preRunFlag(true), runFlag(true), postRunFlag(true), userModesFlag(false),
+>   outputTimings(true), startClock(0), stopRestartEvals(0),
+>   currPLIter(parallelLevels.end()), currPCIter(parallelConfigurations.end())
+> {
+>   initialize_timers();
+> 
+>   // do not initialize MPI.  Get worldRank/worldSize if available
+>   ParallelLevel pl;
+> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for Dakota!
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota 5.3.1 MPI executable in serial mode on CPU 0 for ISSM." << std::endl;
+> #else // mpi not available
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota 5.3.1 serial executable in serial mode for ISSM." << std::endl;
+> #endif // HAVE_MPI
+> 
+>   parallelLevels.push_back(pl);
+>   currPLIter = parallelLevels.begin();
+>   increment_parallel_configuration();
+> }
+> 
+> 
+1536a1567
+>   initialized=0; //we run serially all the time!
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/ParallelLibrary.hpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/ParallelLibrary.hpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/ParallelLibrary.hpp.patch	(revision 21239)
@@ -0,0 +1,3 @@
+358a359,360
+>   /// library mode constructor, serial mode (for the ISSM software)
+>   ParallelLibrary(char* serial_mode);
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/pecos_global_defs.hpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/pecos_global_defs.hpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3.1/pecos_global_defs.hpp.patch	(revision 21239)
@@ -0,0 +1,4 @@
+25a26
+> #ifndef PI
+26a28
+> #endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/BuildDakotaCustom.cmake.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/BuildDakotaCustom.cmake.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/BuildDakotaCustom.cmake.patch	(revision 21239)
@@ -0,0 +1,40 @@
+41,46c41,46
+< #set( BLAS_LIBS 
+< #      "/usr/lib64"
+< #      CACHE FILEPATH "Use non-standard BLAS library path" FORCE )
+< #set( LAPACK_LIBS 
+< #      "/usr/lib64"
+< #      CACHE FILEPATH "Use non-standard BLAS library path" FORCE )
+---
+> set( BLAS_LIBS 
+>       "/usr/lib64/libblas.so.3.0.3"
+>       CACHE FILEPATH "Use non-standard BLAS library path" FORCE )
+> set( LAPACK_LIBS 
+>       "/usr/lib64/liblapack.so.3.0.3"
+>       CACHE FILEPATH "Use non-standard BLAS library path" FORCE )
+64,65c64,65
+< #set( DAKOTA_HAVE MPI ON
+< #     CACHE BOOL "Build with MPI enabled" FORCE)
+---
+> set( DAKOTA_HAVE MPI OFF
+>      CACHE BOOL "Build with MPI disabled" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ENV{ISSM_DIR}/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/DakotaDev.cmake.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/DakotaDev.cmake.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/DakotaDev.cmake.patch	(revision 21239)
@@ -0,0 +1,14 @@
+4,7c4,7
+< set(DAKOTA_HAVE_MPI TRUE CACHE BOOL "Enable MPI in DAKOTA?")
+< set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+< set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+<   "Enable DAKOTA specification maintenance mode?")
+---
+> #set(DAKOTA_HAVE_MPI TRUE CACHE BOOL "Enable MPI in DAKOTA?")
+> #set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+> #set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+> #  "Enable DAKOTA specification maintenance mode?")
+13c13
+< #set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
+---
+> set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/NonDLocalReliability.cpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/NonDLocalReliability.cpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/NonDLocalReliability.cpp.patch	(revision 21239)
@@ -0,0 +1,9 @@
+2579a2580
+> 	  // add sensitivity output to importance factors (jes, 8/06/10)
+2584c2585,2588
+< 	    << std::setw(width) << impFactor(j,i) << '\n';
+---
+> 	    << std::setw(width) << impFactor(j,i)
+> 	    << "  Sensitivity = "
+> 	    << std::resetiosflags(std::ios::adjustfield)
+> 	    << std::setw(width) << fnGradsMeanX(j,i) << '\n';
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/NonDSampling.cpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/NonDSampling.cpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/NonDSampling.cpp.patch	(revision 21239)
@@ -0,0 +1,25 @@
+703,709c703,710
+<   if (!subIteratorFlag) {
+<     nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+<     // archive the correlations to the results DB
+<     nonDSampCorr.archive_correlations(run_identifier(), resultsDB,
+< 				      cv_labels, div_labels, drv_labels,
+< 				      iteratedModel.response_labels());
+<   }
+---
+> //don't compute for now, too expensive.
+> //  if (!subIteratorFlag) {
+> //    nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+> //    // archive the correlations to the results DB
+> //    nonDSampCorr.archive_correlations(run_identifier(), resultsDB,
+> //				      cv_labels, div_labels, drv_labels,
+> //				      iteratedModel.response_labels());
+> //  }
+1196,1197c1197,1200
+<     nonDSampCorr.print_correlations(s, cv_labels, div_labels, drv_labels,
+< 				    iteratedModel.response_labels());
+---
+> 
+> //don't output for now.
+> //    nonDSampCorr.print_correlations(s, cv_labels, div_labels, drv_labels,
+> //				    iteratedModel.response_labels());
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/ParallelLibrary.cpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/ParallelLibrary.cpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/ParallelLibrary.cpp.patch	(revision 21239)
@@ -0,0 +1,40 @@
+103a104
+>   initialized=0; //we run serially all the time!
+129a131
+>   initialized=0; //we run serially all the time!
+137a140,172
+> /** This constructor is provided for the ISSM software, to run serial
+>  * Dakota in a parallel MPI ring: */
+> ParallelLibrary::ParallelLibrary(char* serial_mode):
+>   worldRank(0), worldSize(1),
+>   mpirunFlag(false), ownMPIFlag(false), dummyFlag(false),
+>   stdOutputToFile(false), stdErrorToFile(false), checkFlag(false),
+>   preRunFlag(true), runFlag(true), postRunFlag(true), userModesFlag(false),
+>   startClock(0), stopRestartEvals(0),
+>   currPLIter(parallelLevels.end()), currPCIter(parallelConfigurations.end())
+> {
+>   startClock   = clock();
+> #ifdef DAKOTA_UTILIB
+>   utilib::exception_mngr::set_mode(utilib::exception_mngr::Abort);
+>   startCPUTime = CPUSeconds();       // see utilib/src/sys/seconds.cpp
+>   startWCTime  = WallClockSeconds(); // see utilib/src/sys/seconds.cpp
+> #endif // DAKOTA_UTILIB
+> 
+>   // do not initialize MPI.  Get worldRank/worldSize if available
+>   ParallelLevel pl;
+> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for Dakota!
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota 5.3 MPI executable in serial mode on CPU 0 for ISSM.";
+> #else // mpi not available
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota 5.3 serial executable in serial mode for ISSM.\n";
+> #endif // HAVE_MPI
+> 
+>   parallelLevels.push_back(pl);
+>   currPLIter = parallelLevels.begin();
+>   increment_parallel_configuration();
+> }
+> 
+> 
+1517a1553
+>   initialized=0; //we run serially all the time!
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/ParallelLibrary.hpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/ParallelLibrary.hpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/ParallelLibrary.hpp.patch	(revision 21239)
@@ -0,0 +1,3 @@
+358a359,360
+>   /// library mode constructor, serial mode (for the ISSM software)
+>   ParallelLibrary(char* serial_mode);
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/pecos_global_defs.hpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/pecos_global_defs.hpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/pecos_global_defs.hpp.patch	(revision 21239)
@@ -0,0 +1,4 @@
+25a26
+> #ifndef PI
+26a28
+> #endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/utilibExpat_patch.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/utilibExpat_patch.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/5.3/utilibExpat_patch.txt	(revision 21239)
@@ -0,0 +1,58 @@
+Index: CMakeLists.txt
+===================================================================
+--- CMakeLists.txt	(revision 1968)
++++ CMakeLists.txt	(working copy)
+@@ -30,6 +30,17 @@
+ if(UTILIB_YES_MEMDEBUG)
+   add_definitions(-DUTILIB_YES_MEMDEBUG=1)
+ endif()
++option(UTILIB_HAVE_EXPAT "Enable expat in utilib" OFF)
++if (UTILIB_HAVE_EXPAT)
++  find_package(EXPAT)
++  if (EXPAT_FOUND)
++    # Use the same definition as autotools build
++    add_definitions("-DUTILIB_HAVE_EXPAT_H")
++    # TODO: add include path (EXPAT_INCLUDE_DIRS) in relevant subdirs?
++  else()
++    message(WARNING "expat requested, but not found")
++  endif()
++endif()
+ 
+ #inspect the system so that we can generate utilib_config.h 
+ include(CheckFunctionExists)
+@@ -47,7 +58,6 @@
+ CHECK_INCLUDE_FILES("windows.h;dbghelp.h" UTILIB_HAVE_DBGHELP_H)
+ CHECK_INCLUDE_FILE(err.h UTILIB_HAVE_ERR_H)
+ CHECK_INCLUDE_FILE(execinfo.h UTILIB_HAVE_EXECINFO_H)
+-CHECK_INCLUDE_FILE(expat.h UTILIB_HAVE_EXPAT_H)
+ CHECK_INCLUDE_FILE(float.h UTILIB_HAVE_FLOAT_H)
+ CHECK_INCLUDE_FILE(limits.h UTILIB_HAVE_LIMITS_H)
+ CHECK_INCLUDE_FILE(strings.h UTILIB_HAVE_STRINGS_H)
+@@ -57,9 +67,7 @@
+ CHECK_INCLUDE_FILE(values.h UTILIB_HAVE_VALUES_H)
+ CHECK_INCLUDE_FILE(windows.h UTILIB_HAVE_WINDOWS_H)
+ 
+-find_library(EXPAT_LIB expat)
+ 
+-
+ # Use common HAVE_BOOST to indicate usage of Boost across packages
+ # Ultimately need to #define UTILIB_HAVE_BOOST if used 
+ set(HAVE_BOOST OFF CACHE BOOL "Should Utilib use BOOST?")
+
+
+Index: CMakeLists.txt
+===================================================================
+--- src/libs/CMakeLists.txt	2013/03/25 19:19:06	1970
++++ src/libs/CMakeLists.txt	2013/03/25 19:51:47	1971
+@@ -77,8 +77,9 @@
+   list(APPEND libs ${MPI_LIBRARY})
+ endif()
+ 
+-if(UTILIB_HAVE_EXPAT_H AND EXPAT_LIB)
+-  list(APPEND libs ${EXPAT_LIB})
++if(UTILIB_HAVE_EXPAT AND EXPAT_FOUND)
++  include_directories(${EXPAT_INCLUDE_DIRS})
++  list(APPEND libs ${EXPAT_LIBRARIES})
+ endif()
+ if(MSVC)
+   list(APPEND libs dbghelp)
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/BuildDakotaCustom.cmake.mac.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/BuildDakotaCustom.cmake.mac.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/BuildDakotaCustom.cmake.mac.patch	(revision 21239)
@@ -0,0 +1,14 @@
+64,65c64,65
+< #set( DAKOTA_HAVE_MPI ON
+< #     CACHE BOOL "Build with MPI enabled" FORCE)
+---
+> set( DAKOTA_HAVE_MPI OFF
+>      CACHE BOOL "Build with MPI disabled" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/BuildDakotaCustom.cmake.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/BuildDakotaCustom.cmake.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/BuildDakotaCustom.cmake.patch	(revision 21239)
@@ -0,0 +1,26 @@
+64,65c64,65
+< #set( DAKOTA_HAVE_MPI ON
+< #     CACHE BOOL "Build with MPI enabled" FORCE)
+---
+> set( DAKOTA_HAVE_MPI OFF
+>      CACHE BOOL "Build with MPI disabled" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ENV{ISSM_DIR}/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/CMakeLists.txt.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/CMakeLists.txt.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/CMakeLists.txt.patch	(revision 21239)
@@ -0,0 +1,4 @@
+47a48,50
+> set(BUILD_STATIC_LIBS ON CACHE BOOL "Set to ON to build static libraries" FORCE)
+> set(BUILD_SHARED_LIBS OFF CACHE BOOL "Set to ON to build DSO libraries" FORCE)
+> 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/CMakeLists.txt.pfe.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/CMakeLists.txt.pfe.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/CMakeLists.txt.pfe.patch	(revision 21239)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L/nasa/intel/mkl/10.0.011/lib/em64t/ -lmkl -lmkl_lapack -liomp5 -lpthread")
+> set(LAPACK_LIBS "-L/nasa/intel/mkl/10.0.011/lib/em64t/ -lmkl -lmkl_lapack -liomp5 -lpthread")
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/DakotaDev.cmake.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/DakotaDev.cmake.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/DakotaDev.cmake.patch	(revision 21239)
@@ -0,0 +1,16 @@
+4,8c4,8
+< set(DAKOTA_HAVE_MPI TRUE CACHE BOOL "Enable MPI in DAKOTA?")
+< set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+< set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+<   "Enable DAKOTA specification maintenance mode?")
+< set(PECOS_ENABLE_TESTS TRUE CACHE BOOL "Enable Pecos-specific tests?")
+---
+> #set(DAKOTA_HAVE_MPI TRUE CACHE BOOL "Enable MPI in DAKOTA?")
+> #set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+> #set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+> #  "Enable DAKOTA specification maintenance mode?")
+> #set(PECOS_ENABLE_TESTS TRUE CACHE BOOL "Enable Pecos-specific tests?")
+14c14
+< #set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
+---
+> set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/NonDLocalReliability.cpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/NonDLocalReliability.cpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/NonDLocalReliability.cpp.patch	(revision 21239)
@@ -0,0 +1,9 @@
+2645a2646
+> 		 // add sensitivity output to importance factors (jes, 8/06/10)
+2651c2652,2655
+< 	    << std::setw(width) << impFactor(j,i) << '\n';
+---
+> 	    << std::setw(width) << impFactor(j,i) 
+> 		 << "  Sensitivity = "
+> 		 << std::resetiosflags(std::ios::adjustfield)
+> 		 << std::setw(width) << fnGradsMeanX(j,i) << '\n';
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/NonDSampling.cpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/NonDSampling.cpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/NonDSampling.cpp.patch	(revision 21239)
@@ -0,0 +1,25 @@
+780,786c780,787
+<   if (!subIteratorFlag) {
+<     nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+<     // archive the correlations to the results DB
+<     nonDSampCorr.archive_correlations(run_identifier(), resultsDB, cv_labels,
+< 				      div_labels, dsv_labels, drv_labels,
+< 				      iteratedModel.response_labels());
+<   }
+---
+> //don't compute for now, too expensive.
+> //  if (!subIteratorFlag) {
+> //   nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+> //    // archive the correlations to the results DB
+> //    nonDSampCorr.archive_correlations(run_identifier(), resultsDB, cv_labels,
+> //				      div_labels, dsv_labels, drv_labels,
+> //				      iteratedModel.response_labels());
+> //  }
+1277,1278c1278,1281
+<     nonDSampCorr.print_correlations(s, cv_labels, div_labels, dsv_labels,
+< 				    drv_labels,iteratedModel.response_labels());
+---
+> 
+> //don't output for now.
+> //    nonDSampCorr.print_correlations(s, cv_labels, div_labels, dsv_labels,
+> //				    drv_labels,iteratedModel.response_labels());
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/ParallelLibrary.cpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/ParallelLibrary.cpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/ParallelLibrary.cpp.patch	(revision 21239)
@@ -0,0 +1,24 @@
+51a54,76
+> /** This constructor is provided for the ISSM software, to run serial
+>  * Dakota in a parallel MPI ring: */
+> ParallelLibrary::ParallelLibrary(char* serial_mode):
+>	  mpiManager(dummy_mpi_mgr), programOptions(dummy_prg_opt),
+>	    outputManager(dummy_out_mgr), dummyFlag(true), outputTimings(false)
+> {
+>   initialize_timers();
+> 
+>   // do not initialize MPI.  Get worldRank/worldSize if available
+>   ParallelLevel pl;
+> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for Dakota!
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota 6.1 MPI executable in serial mode on CPU 0 for ISSM." << std::endl;
+> #else // mpi not available
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota 6.1 serial executable in serial mode for ISSM." << std::endl;
+> #endif // HAVE_MPI
+> 
+>   parallelLevels.push_back(pl);
+>   increment_parallel_configuration();
+> }
+> 
+> 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/ParallelLibrary.hpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/ParallelLibrary.hpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/ParallelLibrary.hpp.patch	(revision 21239)
@@ -0,0 +1,3 @@
+475a476,477
+>   /// library mode constructor, serial mode (for the ISSM software)
+>   ParallelLibrary(char* serial_mode);
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/pecos_global_defs.hpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/pecos_global_defs.hpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.1/pecos_global_defs.hpp.patch	(revision 21239)
@@ -0,0 +1,4 @@
+25a26
+> #ifndef PI
+26a28
+> #endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.discover.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.discover.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.discover.patch	(revision 21239)
@@ -0,0 +1,35 @@
+54,55c54,55
+< #set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} <flag>"
+< #     CACHE STRING "CXX Flags for my platform" )
+---
+> set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMPICH_IGNORE_CXX_SEEK"
+>      CACHE STRING "CXX Flags for my platform" )
+67a68,75
+> set( DAKOTA_HAVE_MPI ON
+>  CACHE BOOL "Always build with MPI enabled" FORCE)
+> set( MPI_INCLUDE_PATH
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/include"
+>  CACHE FILEPATH "Use installed MPI headers" FORCE)
+> set( MPI_LIBRARY
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/lib/libmpich.so"
+>  CACHE FILEPATH "Use installed MPI library" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ENV{ISSM_DIR}/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.mac.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.mac.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.mac.patch	(revision 21239)
@@ -0,0 +1,8 @@
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.patch	(revision 21239)
@@ -0,0 +1,29 @@
+67a68,75
+> set( DAKOTA_HAVE_MPI ON
+>  CACHE BOOL "Always build with MPI enabled" FORCE)
+> set( MPI_INCLUDE_PATH
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/include"
+>  CACHE FILEPATH "Use installed MPI headers" FORCE)
+> set( MPI_LIBRARY
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/lib/libmpich.so"
+>  CACHE FILEPATH "Use installed MPI library" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ENV{ISSM_DIR}/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.pfe.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.pfe.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.pfe.patch	(revision 21239)
@@ -0,0 +1,29 @@
+67a68,75
+> set( DAKOTA_HAVE_MPI ON
+>  CACHE BOOL "Always build with MPI enabled" FORCE)
+> set( MPI_INCLUDE_PATH
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/include"
+>  CACHE FILEPATH "Use installed MPI headers" FORCE)
+> set( MPI_LIBRARY
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/lib/libmpich.so"
+>  CACHE FILEPATH "Use installed MPI library" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "/nasa/boost/1.50.0"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.yosemite.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.yosemite.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.yosemite.patch	(revision 21239)
@@ -0,0 +1,29 @@
+67a68,75
+> set( DAKOTA_HAVE_MPI ON
+>  CACHE BOOL "Always build with MPI enabled" FORCE)
+> set( MPI_INCLUDE_PATH
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/include"
+>  CACHE FILEPATH "Use installed MPI headers" FORCE)
+> set( MPI_LIBRARY
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/lib/libmpich.a"
+>  CACHE FILEPATH "Use installed MPI library" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ENV{ISSM_DIR}/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/CMakeLists.txt.discover.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/CMakeLists.txt.discover.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/CMakeLists.txt.discover.patch	(revision 21239)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L/usr/local/intel/Composer/composer_xe_2015.0.090/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
+> set(LAPACK_LIBS "-L/usr/local/intel/Composer/composer_xe_2015.0.090/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/CMakeLists.txt.lonestar.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/CMakeLists.txt.lonestar.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/CMakeLists.txt.lonestar.patch	(revision 21239)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L/opt/apps/intel/11.1/mkl/lib/em64t/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
+> set(LAPACK_LIBS "-L/opt/apps/intel/11.1/mkl/lib/em64t/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/CMakeLists.txt.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/CMakeLists.txt.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/CMakeLists.txt.patch	(revision 21239)
@@ -0,0 +1,4 @@
+47a48,50
+> set(BUILD_STATIC_LIBS ON CACHE BOOL "Set to ON to build static libraries" FORCE)
+> set(BUILD_SHARED_LIBS OFF CACHE BOOL "Set to ON to build DSO libraries" FORCE)
+> 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/CMakeLists.txt.pfe.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/CMakeLists.txt.pfe.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/CMakeLists.txt.pfe.patch	(revision 21239)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L/nasa/intel/mkl/10.0.011/lib/em64t/ -lmkl -lmkl_lapack -liomp5 -lpthread")
+> set(LAPACK_LIBS "-L/nasa/intel/mkl/10.0.011/lib/em64t/ -lmkl -lmkl_lapack -liomp5 -lpthread")
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/DakotaDev.cmake.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/DakotaDev.cmake.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/DakotaDev.cmake.patch	(revision 21239)
@@ -0,0 +1,14 @@
+5,8c5,8
+< set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+< set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+<   "Enable DAKOTA specification maintenance mode?")
+< set(PECOS_ENABLE_TESTS TRUE CACHE BOOL "Enable Pecos-specific tests?")
+---
+> #set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+> #set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+> #  "Enable DAKOTA specification maintenance mode?")
+> #set(PECOS_ENABLE_TESTS TRUE CACHE BOOL "Enable Pecos-specific tests?")
+14c14
+< #set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
+---
+> set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/NonDLocalReliability.cpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/NonDLocalReliability.cpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/NonDLocalReliability.cpp.patch	(revision 21239)
@@ -0,0 +1,9 @@
+2645a2646
+> 		 // add sensitivity output to importance factors (jes, 8/06/10)
+2651c2652,2655
+< 	    << std::setw(width) << impFactor(j,i) << '\n';
+---
+> 	    << std::setw(width) << impFactor(j,i) 
+> 		 << "  Sensitivity = "
+> 		 << std::resetiosflags(std::ios::adjustfield)
+> 		 << std::setw(width) << fnGradsMeanX(j,i) << '\n';
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/NonDSampling.cpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/NonDSampling.cpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/NonDSampling.cpp.patch	(revision 21239)
@@ -0,0 +1,25 @@
+780,786c780,787
+<   if (!subIteratorFlag) {
+<     nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+<     // archive the correlations to the results DB
+<     nonDSampCorr.archive_correlations(run_identifier(), resultsDB, cv_labels,
+< 				      div_labels, dsv_labels, drv_labels,
+< 				      iteratedModel.response_labels());
+<   }
+---
+> //don't compute for now, too expensive.
+> //  if (!subIteratorFlag) {
+> //   nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+> //    // archive the correlations to the results DB
+> //    nonDSampCorr.archive_correlations(run_identifier(), resultsDB, cv_labels,
+> //				      div_labels, dsv_labels, drv_labels,
+> //				      iteratedModel.response_labels());
+> //  }
+1277,1278c1278,1281
+<     nonDSampCorr.print_correlations(s, cv_labels, div_labels, dsv_labels,
+< 				    drv_labels,iteratedModel.response_labels());
+---
+> 
+> //don't output for now.
+> //    nonDSampCorr.print_correlations(s, cv_labels, div_labels, dsv_labels,
+> //				    drv_labels,iteratedModel.response_labels());
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/pecos_global_defs.hpp.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/pecos_global_defs.hpp.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/configs/6.2/pecos_global_defs.hpp.patch	(revision 21239)
@@ -0,0 +1,4 @@
+24a25
+> #ifndef PI
+25a27
+> #endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-altix64-cosmos.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-altix64-cosmos.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-altix64-cosmos.sh	(revision 21239)
@@ -0,0 +1,97 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+
+#Untar 
+tar -zxvf  Dakota_4_3.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
+patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
+patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+
+#Configure dakota
+cd src
+./configure \ 
+	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
+	--without-graphics  \
+	--with-pic \
+	--disable-mpi \
+	--with-blas=/opt/intel/mkl/9.1.023/lib/64/libmkl.so \
+	--with-lapack=/opt/intel/mkl/9.1.023/lib/64/libmkl_lapack.so 
+cd ..
+
+#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+#flag to the compilation.
+cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+mv temp ./src/methods/NCSUOpt/Makefile
+
+cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+
+cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-nappspack/Makefile
+
+cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-cddlib/Makefile 
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile 
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile 
+
+cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-conveyor/Makefile 
+
+cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-appspack/Makefile 
+
+cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/colin/src/Makefile
+
+cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/coliny/src/Makefile
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+
+cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/packages/ampl/Makefile 
+
+#Compile and install dakota
+cd src 
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+cd install/lib
+mv libamplsolver.a libamplsolver.a.bak
+ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-discover.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-discover.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-discover.sh	(revision 21239)
@@ -0,0 +1,97 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src
+rm -rf install
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+
+#Untar 
+tar -zxvf  Dakota_4_3.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
+patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
+patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+
+#Configure dakota
+cd src
+./configure \
+--prefix="$ISSM_DIR/externalpackages/dakota/install/" \
+--without-graphics  \
+--with-pic \
+--disable-mpi \
+--with-blas="-L/usr/local/intel/mkl/10.1.2.024/lib/64 -lmkl_lapack -lmkl -lguide -lpthread" \
+--with-lapack="-L/usr/local/intel/mkl/10.1.2.024/lib/64 -lmkl_lapack -lmkl -lguide -lpthread"
+cd ..
+
+#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+#flag to the compilation.
+cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+mv temp ./src/methods/NCSUOpt/Makefile
+
+cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+
+cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-nappspack/Makefile
+
+cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-cddlib/Makefile
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile
+
+cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-conveyor/Makefile
+
+cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-appspack/Makefile
+
+cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/colin/src/Makefile
+
+cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/coliny/src/Makefile
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
+
+cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/packages/ampl/Makefile
+
+#Compile and install dakota
+cd src
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+cd install/lib
+mv libamplsolver.a libamplsolver.a.bak
+ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-linux64-cloud.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-linux64-cloud.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-linux64-cloud.sh	(revision 21239)
@@ -0,0 +1,97 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+
+#Untar 
+tar -zxvf  Dakota_4_3.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
+patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
+patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+
+#Configure dakota
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
+	--without-graphics  \
+	--with-pic \
+	--disable-mpi \
+	--with-blas=/usr/lib/libblas.so \
+	--with-lapack=/usr/lib/liblapack.so
+cd ..
+
+#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+#flag to the compilation.
+cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+mv temp ./src/methods/NCSUOpt/Makefile
+
+cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+
+cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-nappspack/Makefile
+
+cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-cddlib/Makefile 
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile 
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile 
+
+cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-conveyor/Makefile 
+
+cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-appspack/Makefile 
+
+cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/colin/src/Makefile
+
+cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/coliny/src/Makefile
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+
+cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/packages/ampl/Makefile 
+
+#Compile and install dakota
+cd src 
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+cd install/lib
+mv libamplsolver.a libamplsolver.a.bak
+ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-linux64-murdo.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-linux64-murdo.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-linux64-murdo.sh	(revision 21239)
@@ -0,0 +1,97 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+
+#Untar 
+tar -zxvf  Dakota_4_3.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
+patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
+patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+
+#Configure dakota
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
+	--without-graphics  \
+	--with-pic \
+	--disable-mpi \
+	--with-blas=/usr/lib64/libblas.so.3.1.1 \
+	--with-lapack=/usr/lib64/liblapack.so.3.1.1
+cd ..
+
+#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+#flag to the compilation.
+cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+mv temp ./src/methods/NCSUOpt/Makefile
+
+cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+
+cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-nappspack/Makefile
+
+cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-cddlib/Makefile 
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile 
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile 
+
+cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-conveyor/Makefile 
+
+cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-appspack/Makefile 
+
+cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/colin/src/Makefile
+
+cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/coliny/src/Makefile
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+
+cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/packages/ampl/Makefile 
+
+#Compile and install dakota
+cd src 
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+cd install/lib
+mv libamplsolver.a libamplsolver.a.bak
+ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-macosx64.sh	(revision 21239)
@@ -0,0 +1,97 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+
+#Untar 
+tar -zxvf  Dakota_4_3.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
+patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
+patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+
+#Configure dakota
+cd src
+./configure \
+   --prefix="$ISSM_DIR/externalpackages/dakota/install" \
+   --without-graphics  \
+   --with-pic \
+   --disable-mpi \
+   --with-blas="-L$ISSM_DIR/externalpackages/petsc/install/lib -lfblas " \
+   --with-lapack="-L$ISSM_DIR/externalpackages/petsc/install/lib -lflapack "
+cd ..
+
+#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+#flag to the compilation.
+cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+mv temp ./src/methods/NCSUOpt/Makefile
+
+cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+
+cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-nappspack/Makefile
+
+cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-cddlib/Makefile 
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile 
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile 
+
+cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-conveyor/Makefile 
+
+cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-appspack/Makefile 
+
+cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/colin/src/Makefile
+
+cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/coliny/src/Makefile
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+
+cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2 -D_NONSTD_SOURCE/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/packages/ampl/Makefile 
+
+#Compile and install dakota
+cd src 
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+cd install/lib
+mv libamplsolver.a libamplsolver.a.bak
+ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-pleiades-petsc3.3.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-pleiades-petsc3.3.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-pleiades-petsc3.3.sh	(revision 21239)
@@ -0,0 +1,103 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src
+rm -rf install
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+
+#Untar 
+tar -zxvf  Dakota_4_3.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
+patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
+patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+
+#Configure dakota
+cd src
+./configure \
+--prefix="$ISSM_DIR/externalpackages/dakota/install/" \
+--without-graphics  \
+--with-pic \
+--disable-mpi \
+--with-blas="-L$ISSM_DIR/externalpackages/petsc/install/lib -lfblas " \
+--with-lapack="-L$ISSM_DIR/externalpackages/petsc/install/lib -lflapack "
+
+#--with-blas="-L/nasa/intel/mkl/10.0.011/lib/64/ -lmkl -lmkl_lapack -liomp5 -lpthread" \
+#--with-lapack="-L/nasa/intel/mkl/10.0.011/lib/64/ -lmkl -lmkl_lapack -liomp5 -lpthread"
+#--with-blas="-L/nasa/intel/Compiler/11.1/046/mkl/lib/em64t/ -lmkl_intel_lp64 -lmkl_lapack" \
+#--with-lapack="-L/nasa/intel/Compiler/11.1/046/mkl/lib/em64t/ -lmkl_intel_lp64 -lmkl_lapack"
+
+cd ..
+
+#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+#flag to the compilation.
+cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+mv temp ./src/methods/NCSUOpt/Makefile
+
+cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+
+cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-nappspack/Makefile
+
+cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-cddlib/Makefile
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile
+
+cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-conveyor/Makefile
+
+cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-appspack/Makefile
+
+cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/colin/src/Makefile
+
+cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/coliny/src/Makefile
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
+
+cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/packages/ampl/Makefile
+
+#Compile and install dakota
+cd src
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+cd install/lib
+mv libamplsolver.a libamplsolver.a.bak
+ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-pleiades.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-pleiades.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-4.2-pleiades.sh	(revision 21239)
@@ -0,0 +1,97 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src
+rm -rf install
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+
+#Untar 
+tar -zxvf  Dakota_4_3.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
+patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
+patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+
+#Configure dakota
+cd src
+./configure \
+--prefix="$ISSM_DIR/externalpackages/dakota/install/" \
+--without-graphics  \
+--with-pic \
+--disable-mpi \
+--with-blas="-L/nasa/intel/mkl/10.0.011/lib/64/ -lmkl -lmkl_lapack -liomp5 -lpthread" \
+--with-lapack="-L/nasa/intel/mkl/10.0.011/lib/64/ -lmkl -lmkl_lapack -liomp5 -lpthread"
+cd ..
+
+#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+#flag to the compilation.
+cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+mv temp ./src/methods/NCSUOpt/Makefile
+
+cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+
+cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-nappspack/Makefile
+
+cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-cddlib/Makefile
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile
+
+cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-conveyor/Makefile
+
+cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-appspack/Makefile
+
+cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/colin/src/Makefile
+
+cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/coliny/src/Makefile
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
+
+cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/packages/ampl/Makefile
+
+#Compile and install dakota
+cd src
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+cd install/lib
+mv libamplsolver.a libamplsolver.a.bak
+ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.2-discover.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.2-discover.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.2-discover.sh	(revision 21239)
@@ -0,0 +1,52 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src
+rm -rf install
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_5_2.src.tar.gz' 'Dakota_5_2.src.tar.gz'
+
+#Untar 
+tar -zxvf Dakota_5_2.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/5.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/5.2/ParallelLibrary.H.patch
+#patch src/src/NIDRProblemDescDB.C configs/5.2/NIDRProblemDescDB.C.patch    #  causes segfault in 5.2
+patch src/src/NonDSampling.C configs/5.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/5.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/5.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.2/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd src
+./configure \
+--prefix="$ISSM_DIR/externalpackages/dakota/install/" \
+--without-graphics  \
+--with-pic \
+--disable-mpi \
+--with-plugin \
+--with-blas="-L/usr/local/intel/mkl/10.1.2.024/lib/64 -lmkl_lapack -lmkl -lguide -lpthread" \
+--with-lapack="-L/usr/local/intel/mkl/10.1.2.024/lib/64 -lmkl_lapack -lmkl -lguide -lpthread"
+
+cd ..
+
+#Compile and install dakota
+cd src
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.2-linux64-caladan.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.2-linux64-caladan.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.2-linux64-caladan.sh	(revision 21239)
@@ -0,0 +1,48 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_5_2.src.tar.gz' 'Dakota_5_2.src.tar.gz'
+
+#Untar 
+tar -zxvf Dakota_5_2.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/5.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/5.2/ParallelLibrary.H.patch
+patch src/src/NonDSampling.C configs/5.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/5.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/5.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.2/pecos_global_defs.hpp.patch
+patch src/packages/teuchos/src/Teuchos_ConfigDefs.hpp configs/5.2/Teuchos_ConfigDefs.hpp.patch
+
+#Configure dakota
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
+	--without-graphics  \
+	--with-pic \
+	--disable-mpi \
+	--with-blas="$ISSM_DIR/externalpackages/petsc/install/lib/libfblas.a" \
+	--with-lapack="$ISSM_DIR/externalpackages/petsc/install/lib/libflapack.a"
+
+#Compile and install dakota
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.2-linux64-larsen.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.2-linux64-larsen.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.2-linux64-larsen.sh	(revision 21239)
@@ -0,0 +1,49 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_5_2.src.tar.gz' 'Dakota_5_2.src.tar.gz'
+
+#Untar 
+tar -zxvf Dakota_5_2.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/5.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/5.2/ParallelLibrary.H.patch
+patch src/src/NonDSampling.C configs/5.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/5.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/5.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.2/pecos_global_defs.hpp.patch
+patch src/packages/teuchos/src/Teuchos_ConfigDefs.hpp configs/5.2/Teuchos_ConfigDefs.hpp.patch
+
+#Configure dakota
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
+	--without-graphics  \
+	--with-pic \
+	--disable-mpi \
+	--with-plugin \
+	--with-blas="$ISSM_DIR/externalpackages/petsc/install/lib/libfblas.a" \
+	--with-lapack="$ISSM_DIR/externalpackages/petsc/install/lib/libflapack.a"
+
+#Compile and install dakota
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.2-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.2-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.2-macosx64.sh	(revision 21239)
@@ -0,0 +1,51 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_5_2.src.tar.gz' 'Dakota_5_2.src.tar.gz'
+
+#Untar 
+tar -zxvf Dakota_5_2.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/5.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/5.2/ParallelLibrary.H.patch
+#patch src/src/NIDRProblemDescDB.C configs/5.2/NIDRProblemDescDB.C.patch    #  causes segfault in 5.2
+patch src/src/NonDSampling.C configs/5.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/5.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/5.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.2/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
+	--without-graphics  \
+	--with-pic \
+	--disable-mpi \
+	--with-plugin \
+	--with-blas="-L$ISSM_DIR/externalpackages/petsc/install/lib -lfblas " \
+	--with-lapack="-L$ISSM_DIR/externalpackages/petsc/install/lib -lflapack "
+cd ..
+
+#Compile and install dakota
+cd src 
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.2-pleiades-petsc3.3.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.2-pleiades-petsc3.3.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.2-pleiades-petsc3.3.sh	(revision 21239)
@@ -0,0 +1,59 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src
+rm -rf install
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_5_2.src.tar.gz' 'Dakota_5_2.src.tar.gz'
+
+#Untar 
+tar -zxvf Dakota_5_2.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/5.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/5.2/ParallelLibrary.H.patch
+#patch src/src/NIDRProblemDescDB.C configs/5.2/NIDRProblemDescDB.C.patch    #  causes segfault in 5.2
+patch src/src/NonDSampling.C configs/5.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/5.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/5.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.2/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd src
+./configure \
+--prefix="$ISSM_DIR/externalpackages/dakota/install/" \
+--without-graphics  \
+--with-pic \
+--disable-mpi \
+--with-plugin \
+--with-blas="-L/nasa/intel/mkl/10.0.011/lib/em64t/ -lmkl -lmkl_lapack -liomp5 -lpthread" \
+--with-lapack="-L/nasa/intel/mkl/10.0.011/lib/em64t/ -lmkl -lmkl_lapack -liomp5 -lpthread"
+
+#--with-blas=/nasa/intel/Compiler/2012.0.032/mkl/lib/intel64/libmkl_intel_lp64.a \
+#--with-lapack=/nasa/intel/Compiler/2012.0.032/mkl/lib/intel64/libmkl_intel_lp64.a 
+#--with-blas="-L/nasa/intel/mkl/10.0.011/lib/64/ -lmkl -lmkl_lapack -liomp5 -lpthread" \
+#--with-lapack="-L/nasa/intel/mkl/10.0.011/lib/64/ -lmkl -lmkl_lapack -liomp5 -lpthread"
+#--with-blas="-L/nasa/intel/Compiler/11.1/046/mkl/lib/em64t/ -lmkl_intel_lp64 -lmkl_lapack" \
+#--with-lapack="-L/nasa/intel/Compiler/11.1/046/mkl/lib/em64t/ -lmkl_intel_lp64 -lmkl_lapack"
+
+cd ..
+
+#Compile and install dakota
+cd src
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-linux64-caladan.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-linux64-caladan.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-linux64-caladan.sh	(revision 21239)
@@ -0,0 +1,51 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-5.3.1-public-src.tar.gz' 'dakota-5.3.1-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-5.3.1-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-5.3.1.src/* src
+rm -rf dakota-5.3.1.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/5.3.1/BuildDakotaCustom.cmake.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/5.3.1/DakotaDev.cmake.patch
+#patch $DAK_SRC/CMakeLists.txt configs/5.3.1/CMakeLists.txt.patch
+
+#Apply patches
+patch src/src/ParallelLibrary.cpp configs/5.3.1/ParallelLibrary.cpp.patch
+patch src/src/ParallelLibrary.hpp configs/5.3.1/ParallelLibrary.hpp.patch
+patch src/src/NonDSampling.cpp configs/5.3.1/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/5.3.1/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.3.1/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+cmake -C $DAK_SRC/cmake/BuildDakotaCustom.cmake -C $DAK_SRC/cmake/DakotaDev.cmake $DAK_SRC -DBLAS_LIBS=$ISSM_DIR/externalpackages/petsc/install/lib/libfblas.a -DLAPACK_LIBS=$ISSM_DIR/externalpackages/petsc/install/lib/libflapack.a
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-linux64.sh	(revision 21239)
@@ -0,0 +1,51 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-5.3.1-public-src.tar.gz' 'dakota-5.3.1-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-5.3.1-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-5.3.1.src/* src
+rm -rf dakota-5.3.1.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/5.3.1/BuildDakotaCustom.cmake.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/5.3.1/DakotaDev.cmake.patch
+#patch $DAK_SRC/CMakeLists.txt configs/5.3.1/CMakeLists.txt.patch
+
+#Apply patches
+patch src/src/ParallelLibrary.cpp configs/5.3.1/ParallelLibrary.cpp.patch
+patch src/src/ParallelLibrary.hpp configs/5.3.1/ParallelLibrary.hpp.patch
+patch src/src/NonDSampling.cpp configs/5.3.1/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/5.3.1/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.3.1/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+cmake -C $DAK_SRC/cmake/BuildDakotaCustom.cmake -C $DAK_SRC/cmake/DakotaDev.cmake $DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-lonestar.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-lonestar.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-lonestar.sh	(revision 21239)
@@ -0,0 +1,51 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-5.3.1-public-src.tar.gz' 'dakota-5.3.1-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-5.3.1-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-5.3.1.src/* src
+rm -rf dakota-5.3.1.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/5.3.1/BuildDakotaCustom.cmake.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/5.3.1/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/5.3.1/CMakeLists.txt.lonestar.patch
+
+#Apply patches
+patch src/src/ParallelLibrary.cpp configs/5.3.1/ParallelLibrary.cpp.patch
+patch src/src/ParallelLibrary.hpp configs/5.3.1/ParallelLibrary.hpp.patch
+patch src/src/NonDSampling.cpp configs/5.3.1/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/5.3.1/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.3.1/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+cmake -C $DAK_SRC/cmake/BuildDakotaCustom.cmake -C $DAK_SRC/cmake/DakotaDev.cmake $DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-macosx64-snowleopard.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-macosx64-snowleopard.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-macosx64-snowleopard.sh	(revision 21239)
@@ -0,0 +1,62 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-5.3.1-public-src.tar.gz' 'dakota-5.3.1-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-5.3.1-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-5.3.1.src/* src
+rm -rf dakota-5.3.1.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/5.3.1/BuildDakotaCustom.cmake.mac.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/5.3.1/DakotaDev.cmake.patch
+
+#Apply patches
+patch src/src/ParallelLibrary.cpp configs/5.3.1/ParallelLibrary.cpp.patch
+patch src/src/ParallelLibrary.hpp configs/5.3.1/ParallelLibrary.hpp.patch
+patch src/src/NonDSampling.cpp configs/5.3.1/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/5.3.1/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.3.1/pecos_global_defs.hpp.patch
+
+export BOOST_ROOT=$ISSM_DIR/externalpackages/boost/install
+
+#Configure dakota
+# Set your local gcc compiler here
+cd $DAK_BUILD
+cmake -DBoost_NO_BOOST_CMAKE=TRUE \
+    -DBoost_NO_SYSTEM_PATHS=TRUE \
+    -DBOOST_ROOT:PATHNAME=$BOOST_ROOT \
+    -DBoost_LIBRARY_DIRS:FILEPATH=${BOOST_ROOT}/lib \
+	 -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCMAKE_CC_COMPILER=/usr/bin/gcc \
+	 -DCMAKE_Fortran_COMPILER=/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran \
+    -C $DAK_SRC/cmake/BuildDakotaCustom.cmake -C $DAK_SRC/cmake/DakotaDev.cmake $DAK_SRC
+
+#-DCMAKE_CXX_COMPILER=/usr/local/gfortran/bin/x86_64-apple-darwin10-g++ -DCMAKE_Fortran_COMPILER=/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran
+
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-macosx64-yosemite.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-macosx64-yosemite.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-macosx64-yosemite.sh	(revision 21239)
@@ -0,0 +1,51 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-5.3.1-public-src.tar.gz' 'dakota-5.3.1-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-5.3.1-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-5.3.1.src/* src
+rm -rf dakota-5.3.1.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/5.3.1/BuildDakotaCustom.cmake.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/5.3.1/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/5.3.1/CMakeLists.txt.patch
+
+#Apply patches
+patch src/src/ParallelLibrary.cpp configs/5.3.1/ParallelLibrary.cpp.patch
+patch src/src/ParallelLibrary.hpp configs/5.3.1/ParallelLibrary.hpp.patch
+patch src/src/NonDSampling.cpp configs/5.3.1/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/5.3.1/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.3.1/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+cmake -D CMAKE_C_COMPILER=/usr/local/gfortran/bin/gcc -D CMAKE_CXX_COMPILER=/usr/local/gfortran/bin/g++ -D CMAKE_Fortran_COMPILER=/usr/local/gfortran/bin/gfortran -D LDFLAGS="-std=gnu++0x" -C $DAK_SRC/cmake/BuildDakotaCustom.cmake -C $DAK_SRC/cmake/DakotaDev.cmake $DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-macosx64.sh	(revision 21239)
@@ -0,0 +1,62 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-5.3.1-public-src.tar.gz' 'dakota-5.3.1-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-5.3.1-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-5.3.1.src/* src
+rm -rf dakota-5.3.1.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/5.3.1/BuildDakotaCustom.cmake.mac.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/5.3.1/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/5.3.1/CMakeLists.txt.patch
+
+#Apply patches
+patch src/src/ParallelLibrary.cpp configs/5.3.1/ParallelLibrary.cpp.patch
+patch src/src/ParallelLibrary.hpp configs/5.3.1/ParallelLibrary.hpp.patch
+patch src/src/NonDSampling.cpp configs/5.3.1/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/5.3.1/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.3.1/pecos_global_defs.hpp.patch
+
+export BOOST_ROOT=$ISSM_DIR/externalpackages/boost/install
+
+#Configure dakota
+# Set your local gcc compiler here
+cd $DAK_BUILD
+cmake -DBoost_NO_BOOST_CMAKE=TRUE \
+    -DBoost_NO_SYSTEM_PATHS=TRUE \
+    -DBOOST_ROOT:PATHNAME=$BOOST_ROOT \
+    -DBoost_LIBRARY_DIRS:FILEPATH=${BOOST_ROOT}/lib \
+	 -DCMAKE_CXX_COMPILER=g++ -DCMAKE_CC_COMPILER=gcc \
+    -C $DAK_SRC/cmake/BuildDakotaCustom.cmake -C $DAK_SRC/cmake/DakotaDev.cmake $DAK_SRC
+
+#-DCMAKE_CXX_COMPILER=/usr/local/gfortran/bin/x86_64-apple-darwin10-g++ -DCMAKE_Fortran_COMPILER=/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran
+
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-pleiades.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-pleiades.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-5.3.1-pleiades.sh	(revision 21239)
@@ -0,0 +1,51 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-5.3.1-public-src.tar.gz' 'dakota-5.3.1-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-5.3.1-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-5.3.1.src/* src
+rm -rf dakota-5.3.1.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/5.3.1/BuildDakotaCustom.cmake.pfe.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/5.3.1/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/5.3.1/CMakeLists.txt.pfe.patch
+
+#Apply patches
+patch src/src/ParallelLibrary.cpp configs/5.3.1/ParallelLibrary.cpp.patch
+patch src/src/ParallelLibrary.hpp configs/5.3.1/ParallelLibrary.hpp.patch
+patch src/src/NonDSampling.cpp configs/5.3.1/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/5.3.1/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.3.1/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+cmake -C $DAK_SRC/cmake/BuildDakotaCustom.cmake -C $DAK_SRC/cmake/DakotaDev.cmake $DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-intel15-discover.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-intel15-discover.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-intel15-discover.sh	(revision 21239)
@@ -0,0 +1,58 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-6.2-public.src.tar.gz' 'dakota-6.2-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-6.2-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-6.2.0.src/* src
+rm -rf dakota-6.2.0.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+export MPIHOME=$ISSM_DIR/externalpackages/mpich/install
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/6.2/BuildDakotaCustom.cmake.discover.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/6.2/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/6.2/CMakeLists.txt.discover.patch
+
+#Apply patches
+patch src/src/NonDSampling.cpp configs/6.2/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/6.2/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/6.2/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+
+cmake -D CMAKE_C_COMPILER=mpicc \
+	   -D CMAKE_CXX_COMPILER=mpicxx \
+	   -D CMAKE_Fortran_COMPILER=/usr/bin/gfortran \
+		-DHAVE_ACRO=off \
+		-DHAVE_JEGA=off \
+		-C $DAK_SRC/cmake/BuildDakotaCustom.cmake \
+		-C $DAK_SRC/cmake/DakotaDev.cmake \
+		$DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-linux64.sh	(revision 21239)
@@ -0,0 +1,60 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-6.2-public.src.tar.gz' 'dakota-6.2-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-6.2-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-6.2.0.src/* src
+rm -rf dakota-6.2.0.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+export MPIHOME=$ISSM_DIR/externalpackages/mpich/install
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/6.2/BuildDakotaCustom.cmake.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/6.2/DakotaDev.cmake.patch
+
+#Apply patches
+patch src/src/NonDSampling.cpp configs/6.2/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/6.2/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/6.2/pecos_global_defs.hpp.patch
+
+#Setting CXXFLAGS to deal with C++11 incompatibility with Matlab's Boost
+export CXXFLAGS='-std=c++98'
+
+#Configure dakota
+cd $DAK_BUILD
+
+cmake -D CMAKE_C_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpicc \
+	   -D CMAKE_CXX_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpicxx \
+	   -D CMAKE_Fortran_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpif77 \
+		-DHAVE_ACRO=off \
+		-DHAVE_JEGA=off \
+		-C $DAK_SRC/cmake/BuildDakotaCustom.cmake \
+		-C $DAK_SRC/cmake/DakotaDev.cmake \
+		$DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-lonestar.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-lonestar.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-lonestar.sh	(revision 21239)
@@ -0,0 +1,58 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-6.2-public.src.tar.gz' 'dakota-6.2-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-6.2-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-6.2.0.src/* src
+rm -rf dakota-6.2.0.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+export MPIHOME=/opt/cray/mpt/default/gni/mpich-intel/14.0/
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/6.2/BuildDakotaCustom.cmake.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/6.2/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/6.2/CMakeLists.txt.lonestar.patch
+
+#Apply patches
+patch src/src/NonDSampling.cpp configs/6.2/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/6.2/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/6.2/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+
+cmake -D CMAKE_C_COMPILER=/opt/apps/intel16/cray_mpich/7.3.0/bin/mpicc \
+	   -D CMAKE_CXX_COMPILER=/opt/apps/intel16/cray_mpich/7.3.0/bin/mpicxx \
+	   -D CMAKE_Fortran_COMPILER=/opt/apps/intel16/cray_mpich/7.3.0/bin/mpif77 \
+		-DHAVE_ACRO=off \
+		-DHAVE_JEGA=off \
+		-C $DAK_SRC/cmake/BuildDakotaCustom.cmake \
+		-C $DAK_SRC/cmake/DakotaDev.cmake \
+		$DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-macosx64-snowleopard.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-macosx64-snowleopard.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-macosx64-snowleopard.sh	(revision 21239)
@@ -0,0 +1,69 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-6.2-public.src.tar.gz' 'dakota-6.2-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-6.2-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-6.2.0.src/* src
+rm -rf dakota-6.2.0.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+export MPIHOME=$ISSM_DIR/externalpackages/mpich/install
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/6.2/BuildDakotaCustom.cmake.mac.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/6.2/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/6.2/CMakeLists.txt.patch
+
+#Apply patches
+patch src/src/NonDSampling.cpp configs/6.2/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/6.2/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/6.2/pecos_global_defs.hpp.patch
+
+export BOOST_ROOT=$ISSM_DIR/externalpackages/boost/install
+
+#Configure dakota
+# Set your local gcc compiler here
+cd $DAK_BUILD
+cmake -DBoost_NO_BOOST_CMAKE=TRUE \
+	-DBoost_NO_SYSTEM_PATHS=TRUE \
+	-DBOOST_ROOT:PATHNAME=$BOOST_ROOT \
+	-DBoost_LIBRARY_DIRS:FILEPATH=${BOOST_ROOT}/lib \
+	-D CMAKE_C_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpicc \
+	-D CMAKE_CXX_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpicxx \
+	-D CMAKE_Fortran_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpif77 \
+	-DHAVE_ACRO=off \
+	-DHAVE_JEGA=off \
+	-D LDFLAGS="-L/usr/lib/ -lstdc++ -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin10/4.6.2/ -lgfortran" \
+	-C $DAK_SRC/cmake/BuildDakotaCustom.cmake \
+	-C $DAK_SRC/cmake/DakotaDev.cmake \
+	$DAK_SRC
+cd ..
+
+# Snowleopard: Mpi should be made with these compilers
+#-DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCMAKE_CC_COMPILER=/usr/bin/gcc \
+#-DCMAKE_Fortran_COMPILER=/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran \
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-macosx64-yosemite.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-macosx64-yosemite.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-macosx64-yosemite.sh	(revision 21239)
@@ -0,0 +1,63 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-6.2-public.src.tar.gz' 'dakota-6.2-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-6.2-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-6.2.0.src/* src
+rm -rf dakota-6.2.0.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+export MPIHOME=$ISSM_DIR/externalpackages/mpich/install
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/6.2/BuildDakotaCustom.cmake.yosemite.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/6.2/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/6.2/CMakeLists.txt.patch
+
+#Apply patches
+patch src/src/NonDSampling.cpp configs/6.2/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/6.2/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/6.2/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+
+cmake -D CMAKE_C_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpicc \
+	   -D CMAKE_CXX_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpicxx \
+	   -D CMAKE_Fortran_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpif77 \
+		-DHAVE_ACRO=off \
+		-DHAVE_JEGA=off \
+		-DBLAS_LIBS=$ISSM_DIR/externalpackages/petsc/install/lib/libfblas.a \
+		-DLAPACK_LIBS=$ISSM_DIR/externalpackages/petsc/install/lib/libflapack.a \
+		-C $DAK_SRC/cmake/BuildDakotaCustom.cmake \
+		-C $DAK_SRC/cmake/DakotaDev.cmake \
+		$DAK_SRC
+cd ..
+
+#Make sure to include --download-fblaslapack=1 \ in petsc configure script to use the petsc blas and dlapack libs
+#-DBLAS_LIBS=$ISSM_DIR/externalpackages/petsc/install/lib/libfblas.a -DLAPACK_LIBS=$ISSM_DIR/externalpackages/petsc/install/lib/libflapack.a
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-macosx64.sh	(revision 21239)
@@ -0,0 +1,69 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-6.2-public.src.tar.gz' 'dakota-6.2-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-6.2-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-6.2.0.src/* src
+rm -rf dakota-6.2.0.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+export MPIHOME=$ISSM_DIR/externalpackages/mpich/install
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/6.2/BuildDakotaCustom.cmake.mac.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/6.2/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/6.2/CMakeLists.txt.patch
+
+#Apply patches
+patch src/src/NonDSampling.cpp configs/6.2/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/6.2/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/6.2/pecos_global_defs.hpp.patch
+
+export BOOST_ROOT=$ISSM_DIR/externalpackages/boost/install
+
+#Configure dakota
+# Set your local gcc compiler here
+cd $DAK_BUILD
+cmake -DBoost_NO_BOOST_CMAKE=TRUE \
+	-DBoost_NO_SYSTEM_PATHS=TRUE \
+	-DBOOST_ROOT:PATHNAME=$BOOST_ROOT \
+	-DBoost_LIBRARY_DIRS:FILEPATH=${BOOST_ROOT}/lib \
+	-D CMAKE_C_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpicc \
+	-D CMAKE_CXX_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpicxx \
+	-D CMAKE_Fortran_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpif77 \
+	-D CMAKE_CXX_FLAGS=-fdelayed-template-parsing \
+	-DHAVE_ACRO=off \
+	-DHAVE_JEGA=off \
+	-C $DAK_SRC/cmake/BuildDakotaCustom.cmake \
+	-C $DAK_SRC/cmake/DakotaDev.cmake \
+	$DAK_SRC
+cd ..
+
+# Snowleopard: Mpi should be made with these compilers
+#-DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCMAKE_CC_COMPILER=/usr/bin/gcc \
+#-DCMAKE_Fortran_COMPILER=/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran \
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-pleiades.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-pleiades.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/install-6.2-pleiades.sh	(revision 21239)
@@ -0,0 +1,58 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-6.2-public.src.tar.gz' 'dakota-6.2-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-6.2-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-6.2.0.src/* src
+rm -rf dakota-6.2.0.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+export MPIHOME=$ISSM_DIR/externalpackages/mpich/install
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/6.2/BuildDakotaCustom.cmake.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/6.2/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/6.2/CMakeLists.txt.pfe.patch
+
+#Apply patches
+patch src/src/NonDSampling.cpp configs/6.2/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/6.2/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/6.2/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+
+cmake -D CMAKE_C_COMPILER=mpicc \
+	   -D CMAKE_CXX_COMPILER=mpicxx \
+	   -D CMAKE_Fortran_COMPILER=/usr/bin/gfortran \
+		-DHAVE_ACRO=off \
+		-DHAVE_JEGA=off \
+		-C $DAK_SRC/cmake/BuildDakotaCustom.cmake \
+		-C $DAK_SRC/cmake/DakotaDev.cmake \
+		$DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/tests/test.in
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/tests/test.in	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/tests/test.in	(revision 21239)
@@ -0,0 +1,36 @@
+method,
+	nond_sampling
+	  seed             = 1234
+	  rng                rnum2
+	  samples          = 2000
+	  sample_type        lhs
+	  distribution cumulative
+	  num_probability_levels = 9 
+	  probability_levels =
+	    0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999
+	    0.9999
+
+model,
+	single
+
+variables,
+	normal_uncertain = 2
+	  nuv_means =
+	    1 1 
+	  nuv_std_deviations =
+	    0.1 0.1 
+	  nuv_descriptors =
+	    'x1' 'x2'
+
+interface,
+	direct
+	  analysis_driver = 'plugin_text_book'
+       evaluation_scheduling master 
+       processors_per_evaluation = 3
+
+responses,
+	num_response_functions = 1
+	response_descriptors =
+	  'MaxVel' 
+	no_gradients
+	no_hessians
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/tests/test2.in
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/tests/test2.in	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dakota/tests/test2.in	(revision 21239)
@@ -0,0 +1,36 @@
+method,
+	nond_sampling
+	  seed             = 1234
+	  rng                rnum2
+	  samples          = 3
+	  sample_type        lhs
+	  distribution cumulative
+	  num_probability_levels = 9 
+	  probability_levels =
+	    0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999
+	    0.9999
+
+model,
+	single
+
+variables,
+	normal_uncertain = 2
+	  nuv_means =
+	    1 1 
+	  nuv_std_deviations =
+	    0.1 0.1 
+	  nuv_descriptors =
+	    'x1' 'x2'
+
+interface,
+	direct
+	  analysis_driver = 'plugin_text_book'
+       evaluation_scheduling master 
+       processors_per_evaluation = 1
+
+responses,
+	num_response_functions = 1
+	response_descriptors =
+	  'MaxVel' 
+	no_gradients
+	no_hessians
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dem/dem.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dem/dem.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dem/dem.m	(revision 21239)
@@ -0,0 +1,530 @@
+function [h,I]=dem(x,y,z,varargin)
+%DEM Shaded relief image plot
+%	DEM(X,Y,Z) plots the Digital Elevation Model defined by X and Y 
+%	coordinate vectors and elevation matrix Z, as a lighted image using
+%	specific "landcolor" and "seacolor" colormaps. DEM uses IMAGESC 
+%	function which is much faster than SURFL when dealing with large 
+%	high-resolution DEM.
+%
+%	DEM(X,Y,Z,OPT) specifies options with OPT = [A,C,SCUT,ZMIN,ZMAX,ZCUT],
+%	where sorted optional scalars are:
+%	  A = azimuth light (in degrees relative to North). Default is A = -45
+%	      for a natural northwestern illumination.
+%	  C = controls contrast, as the exponent of the gradient value. Default
+%	      is C = 1 for linear contrast; use C = 0 to remove lighting, 
+%	      C = 0.5 for moderate lighting, C = 2 or more for strong contrast.
+%	  SCUT = controls lighting scale saturation with a median-style filter
+%	      in % of elements. Default is SCUT = 0.2 (0.2% maximum gradient 
+%	      values is ignored). Use SCUT = 0 for full scale gradient.
+%	  ZMIN,ZMAX = fixes min and max elevation values for colormap. Use NaN
+%	      to keep real min and/or max data values.
+%	  ZCUT = median-style filter to cut extremes values (in % of elements).
+%	      Default is ZCUT = 0.5 to ignore the 0.5% of most min/max 
+%	      elevation values. Use ZCUT = 0 for full scale.
+%	Use OPT=[] to keep default values and define following arguments.
+%
+%	DEM(...,CMAP) uses CMAP colormap instead of default (landcolor, if 
+%	exists or jet). Note that defining CMAP disables the default SEACOLOR
+%	colormap attribution for Z<=0 elevations.
+%
+%	DEM(...,NOVALUE) defines the values that will be replaced by NaN. This 
+%	might be mandatory for DEM that use a value like -99999 or -32768 if 
+%	you don't want a flat image...
+%
+%	DEM(...,SEACOLOR) sets the colormap used for zero and negative values.
+%	Default is seacolor (if exists) or single color [0.7,0.9,1] (a light 
+%	cyan) to simulate sea color. Use [] to apply colormap CMAP on the full
+%	elevation scale.
+%
+%	DEM(...,'interp') interpolates linearly NaN values (fills the gaps).
+%
+%	DEM(...,'lake') detects automaticaly flat areas different from sea 
+%	level (non-zero elevations) and draws them as lake surfaces.
+%
+%	DEM(...,'dec') plots classic basemap-style axis, considering 
+%	coordinates as cartesian (decimal).
+%
+%	DEM(...,'dms') plots geographic basemap-style axis in deg/min/sec,
+%	considering coordinates X as longitude and Y as latitude. Axis aspect 
+%	ratio will be adjusted to approximatively preserve distances (this is  
+%	not a real projection!).
+%
+%	DEM(...,'scale') adds a legend to the right of graph, with elevation 
+%	scale (colormap) and a distance scale if 'dms' option is used.
+%
+%	[H,I]=DEM(...) returns graphic handle H and illuminated image as I, an
+%	MxNx3 matrix (if Z is MxN).
+%
+%	Informations:
+%	 - For optimization purpose, DEM will automatically decimate data to
+%	   limit to a total of 1500x1500 pixels images. To avoid it, use option
+%	   DEM(...,'nodecim') or DEM(...,'decim',N) where N is an integer, but 
+%	   be aware that large grids may require computer ressources and induce  
+%	   disk swap or memory errors.
+%	 - Colormaps are Mx3 RGB matrix so it is easy to modify saturation 
+%	   (CMAP.^N), set darker (CMAP/N), lighter ((N - 1 + CMAP)/N), inverse
+%	    it (flipud(CMAP)), etc...
+%	 - To get free worldwide topographic data (SRTM), see READHGT function.
+%
+%	Author: François Beauducel <beauducel@ipgp.fr>
+%	Created: 2007-05-17
+%	Updated: 2013-01-05
+
+%	Copyright (c) 2013, François Beauducel, covered by BSD License.
+%	All rights reserved.
+%
+%	Redistribution and use in source and binary forms, with or without 
+%	modification, are permitted provided that the following conditions are 
+%	met:
+%
+%	   * Redistributions of source code must retain the above copyright 
+%	     notice, this list of conditions and the following disclaimer.
+%	   * Redistributions in binary form must reproduce the above copyright 
+%	     notice, this list of conditions and the following disclaimer in 
+%	     the documentation and/or other materials provided with the distribution
+%	                           
+%	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+%	AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+%	IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
+%	ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
+%	LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
+%	CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+%	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+%	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+%	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+%	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
+%	POSSIBILITY OF SUCH DAMAGE.
+
+if nargin < 3
+	error('Not enough input arguments.');
+end
+
+% default OPT arguments
+a = -45;
+c = 1;
+scut = 0.2;
+zmin = NaN;
+zmax = NaN;
+zcut = 0.5;
+grey = 0.2*[1,1,1];
+csea = [];
+fs = 10;	% tick label fontsize
+
+dec = 0;
+dms = 0;
+scale = 0;
+inter = 0;
+lake = 0;
+decimflag = 0;
+decim = 0;
+
+novalue_color = [0,0,0];
+
+if ~isnumeric(x) | ~isnumeric(y) | ~isnumeric(z)
+	error('X,Y and Z must be numeric.')
+end
+
+if all(size(x) ~= 1) | all(size(y) ~= 1)
+	error('X and Y must be vectors, not matrix.')
+end
+
+if length(x) ~= size(z,2) | length(y) ~= size(z,1)
+	error('If Z has a size of [M,N], X must have a length of N, and Y a length of M.')
+end
+
+if nargin > 3
+	dec = any(strcmp(varargin,'dec'));
+	dms = any(strcmp(varargin,'dms'));
+	if dms & any(abs(y) > 91)
+		error('With DMS option Y must be in valid latitudes interval (decimal degrees).')
+	end
+	scale = any(strcmp(varargin,'scale'));
+	inter = any(strcmp(varargin,'interp'));
+	lake = any(strcmp(varargin,'lake'));
+	if any(strcmp(varargin,'nodecim'))
+		decim = 1;
+		decimflag = 1;
+	end
+	kdecim = find(strcmp(varargin,'decim'));
+	if ~isempty(kdecim)
+		decimflag = 1;
+		if (kdecim + 1) <= nargin & isnumeric(varargin{kdecim+1})
+			decim = round(varargin{kdecim+1});
+			decimflag = 2;
+		end
+	end
+end
+nargs = decimflag + dec + dms + scale + lake + inter;
+
+if (nargin - nargs) > 3
+	opt = varargin{1};
+	if ~isnumeric(opt)
+		error('OPT = [A,C,S,ZMIN,ZMAX] argument must be numeric.');
+	end
+	if ~isempty(opt)
+		a = opt(1);
+	end
+	if length(opt) > 1
+		c = opt(2);
+		if c < 0
+			error('C argument must be positive.');
+		end
+	end
+	if length(opt) > 2
+		scut = opt(3);
+		if scut < 0 | scut >= 100
+			error('SCUT argument must be a positive percentage.');
+		end
+	end
+	if length(opt) > 4
+		zmin = opt(4);
+		zmax = opt(5);
+	end
+	if length(opt) > 5
+		zcut = opt(6);
+		if zcut < 0 | zcut >= 100
+			error('ZCUT argument must be a positive percentage.');
+		end
+	end
+end
+
+if (nargin - nargs) < 5
+	cmap = [];
+else
+	cmap = varargin{2};
+	if ~isnumeric(cmap) | (~isempty(cmap) & (size(cmap,2) ~= 3 | min(cmap(:)) < 0 | max(cmap(:)) > 1))
+		error('CMAP must be a valid colormap (3-column [R,G,B] matrix with 0.0 to 1.0 values).')
+	end
+end
+
+if (nargin - nargs) < 6
+	novalue = NaN;
+else
+	novalue = varargin{3};
+	if ~isnumeric(novalue) | numel(novalue) > 1
+		error('NOVALUE must be scalar.')
+	end
+end
+
+if (nargin - nargs) < 7
+	if isempty(cmap)
+		if exist('seacolor','file')
+			csea = seacolor(256);
+		else
+			csea = [.7,.9,1];
+		end
+	end
+else
+	csea = varargin{4};
+	if ~isnumeric(csea)
+		error('Unknown option')
+	elseif (~isempty(csea) & (size(csea,2) ~= 3 | min(csea) < 0 | max(csea) > 1))
+		error('SEACOLOR must be a valid [R,G,B] vector with 0.0 to 1.0 values).')
+	end
+end
+
+if isempty(cmap)
+	if exist('landcolor','file')
+		cmap = landcolor.^1.3;
+	else
+		cmap = jet(256);
+	end
+end
+
+
+
+% decimates data to avoid disk swap/out of memory...
+nmax = 1500;
+if decim
+	n = decim;
+else
+	n = ceil(sqrt(numel(z))/nmax);
+end
+if n > 1
+	x = x(1:n:end);
+	y = y(1:n:end);
+	z = z(1:n:end,1:n:end);
+	fprintf('DEM: on the plot data has been decimated by a factor of %d...\n',n);
+end
+
+z = double(z); % necessary for most of the following calculations...
+z(z==novalue) = NaN;
+
+if inter
+	z = fillgap(x,y,z);
+end
+
+if isempty(csea)
+	k = (z~=0 & ~isnan(z));
+else
+	k = ~isnan(z);
+end
+
+if isnan(zmin)
+	zmin = nmedian(z(k),zcut/100);
+end
+if isnan(zmax)
+	zmax = nmedian(z(k),1 - zcut/100);
+end
+dz = zmax - zmin;
+
+if dz > 0
+	% builds the colormap: concatenates seacolor and landcolor around 0
+	if ~isempty(csea) & zmin < 0 & zmax > 0
+		l = size(csea,1);
+		r = size(cmap,1)*abs(zmin)/zmax/l;
+		cmap = cat(1,interp1(1:l,csea,linspace(1,l,round(l*r)),'*linear'),cmap);
+	end
+	
+	% normalisation of Z using CMAP and convertion to RGB
+	I = ind2rgb(uint16((z - zmin)*(length(cmap)/dz)),cmap);
+	
+	if c > 0
+		% computes lighting from elevation gradient
+		[fx,fy] = gradient(z,x,y);
+		%fx = filter([1,0,0,0,-1],1,rf(z'))';
+		%fy = filter([1,0,0,0,-1],1,rf(z));
+		fxy = -fx*sind(a) - fy*cosd(a);
+		clear fx fy	% free some memory...
+		
+		% lake option: zero gradient
+		if lake
+			dx = diff(z,1,2);
+			dy = diff(z,1,1);
+			u1 = ones(size(z,1),1);
+			u2 = ones(1,size(z,2));
+			z(cat(1,u2,dy)==0 & cat(1,dy,u2)==0 & cat(2,dx,u1)==0 & cat(2,u1,dx)==0) = 0;
+			clear dx dy	% free some memory...
+		end
+
+		fxy(isnan(fxy)) = 0;
+
+		% computes maximum absolute gradient (median-style), normalizes, saturates and duplicates in 3-D matrix
+		r = repmat(max(min(fxy/nmedian(abs(fxy),1 - scut/100),1),-1),[1,1,3]);
+	
+		% applies contrast using exponent
+		rp = (1 - abs(r)).^c;
+		I = I.*rp;
+	
+		% lighter for positive gradient
+		k = find(r > 0);
+		I(k) = I(k) + (1 - rp(k));
+				
+	end
+	
+	% set novalues / NaN to black color
+	[i,j] = find(isnan(z));
+	if ~isempty(i)
+		I(sub2ind(size(I),repmat(i,1,3),repmat(j,1,3),repmat(1:3,size(i,1),1))) = repmat(novalue_color,size(i,1),1);
+	end
+	% set the seacolor for 0 values
+	if ~isempty(csea)
+		[i,j] = find(z==0);
+		if ~isempty(i)
+			I(sub2ind(size(I),repmat(i,1,3),repmat(j,1,3),repmat(1:3,size(i,1),1))) = repmat(csea(end,:),size(i,1),1);
+		end
+	end
+
+	hh = imagesc(x,y,I);
+else
+	hh = imagesc(x,y,z);
+	colormap(cmap);
+	text(mean(x),mean(y),'SPLASH!','Color','c','FontWeight','bold','HorizontalAlignment','center')
+end
+
+orient tall
+axis xy, axis equal, axis tight
+
+xlim = [min(x),max(x)];
+ylim = [min(y),max(y)];
+zlim = [min(z(:)),max(z(:))];
+
+% axis basemap style
+if dec | dms
+	axis off
+
+	if dms
+		% approximates X-Y aspect ratio for this latitude (< 20-m precision for 1x1° grid)
+		xyr = cos(mean(y)*pi/180);
+	else
+		xyr = 1;
+	end
+	set(gca,'DataAspectRatio',[1,xyr,1])
+	bwy = 0.008*diff(ylim); % Y border width = 1%
+	bwx = bwy/xyr; % border width (in degree of longitude)
+
+	% transparent borders
+	patch([xlim(1)-bwx,xlim(2)+bwx,xlim(2)+bwx,xlim(1)-bwx],ylim(1) - bwy*[0,0,1,1],'k','FaceColor','none','clipping','off')
+	patch([xlim(1)-bwx,xlim(2)+bwx,xlim(2)+bwx,xlim(1)-bwx],ylim(2) + bwy*[0,0,1,1],'k','FaceColor','none','clipping','off')
+	patch(xlim(1) - bwx*[0,0,1,1],[ylim(1)-bwy,ylim(2)+bwy,ylim(2)+bwy,ylim(1)-bwy],'k','FaceColor','none','clipping','off')
+	patch(xlim(2) + bwx*[0,0,1,1],[ylim(1)-bwy,ylim(2)+bwy,ylim(2)+bwy,ylim(1)-bwy],'k','FaceColor','none','clipping','off')
+
+	dlon = {'E','W'};
+	dlat = {'N','S'};
+
+	if dec
+		ddx = dtick(diff(xlim));
+		ddy = dtick(diff(ylim));
+	else
+		ddx = dtick(diff(xlim),1);
+		ddy = dtick(diff(ylim),1);
+	end
+
+	xtick = (ddx*ceil(xlim(1)/ddx)):ddx:xlim(2);
+	for xt = xtick(1:2:end)
+		dt = ddx - max(0,xt + ddx - xlim(2));
+		patch(repmat(xt + dt*[0,1,1,0]',[1,2]),[ylim(1) - bwy*[0,0,1,1];ylim(2) + bwy*[0,0,1,1]]','k','clipping','off')
+		text(xt,ylim(1) - bwy,deg2dms(xt,dlon,dec),'FontSize',fs,'HorizontalAlignment','center','VerticalAlignment','top');
+	end
+
+	ytick = (ddy*ceil(ylim(1)/ddy)):ddy:ylim(2);
+	for yt = ytick(1:2:end)
+		dt = ddy - max(0,yt + ddy - ylim(2));
+		patch([xlim(1) - bwx*[0,0,1,1];xlim(2) + bwx*[0,0,1,1]]',repmat(yt + dt*[0,1,1,0]',[1,2]),'k','clipping','off')
+		text(xlim(1) - 1.1*bwx,yt,deg2dms(yt,dlat,dec),'FontSize',fs,'HorizontalAlignment','right','VerticalAlignment','middle');
+	end
+end
+
+% scale legend
+if scale
+	%wsc = diff(xlim)*0.01;
+	wsc = bwx;
+	xsc = xlim(2) + wsc*4;
+
+	% elevation scale (colorbar)
+	zscale = linspace(zlim(1),zlim(2),length(cmap));
+	yscale = linspace(0,diff(ylim)/2,length(cmap));
+	ysc = ylim(1);
+	ddz = dtick(dz*max(0.5*xyr*diff(xlim)/yscale(end),1));
+	ztick = (ddz*ceil(zlim(1)/ddz)):ddz:zlim(2);
+	patch(xsc + repmat(wsc*[-1;1;1;-1],[1,length(cmap)]), ...
+		ysc + [repmat(yscale,[2,1]);repmat(yscale + diff(yscale(1:2)),[2,1])], ...
+		repmat(zscale,[4,1]), ...
+		'EdgeColor','flat','LineWidth',.1,'FaceColor','flat','clipping','off')
+	colormap(cmap)
+	caxis([zmin,zmax])
+	patch(xsc + wsc*[-1,1,1,-1],ysc + yscale(end)*[0,0,1,1],'k','FaceColor','none','Clipping','off')
+	text(xsc + 2*wsc + zeros(size(ztick)),ysc + (ztick - zlim(1))*0.5*diff(ylim)/diff(zlim),num2str(ztick'), ...
+		'HorizontalAlignment','left','VerticalAlignment','middle','FontSize',8)
+	
+	% distance scale (in case of DMS only)
+	if dms
+		degkm = 6370*pi/180;
+		dkm = dtick(diff(ylim)*degkm);
+		ysc = ylim(2) - 0.5*dkm/degkm;
+		patch(xsc + wsc*[-1,-1,0,0],ysc + dkm*0.5*[-1,1,1,-1]/degkm,'k','FaceColor',grey,'clipping','off')
+		if dkm > 1
+			skm = sprintf('%g km',dkm);
+		else
+			skm = sprintf('%g m',dkm*1000);
+		end
+		text(xsc,ysc,skm,'rotation',-90,'HorizontalAlignment','center','VerticalAlignment','bottom', ...
+			'Color',grey,'FontWeight','bold')
+	end
+
+end
+
+
+if nargout > 0
+	h = hh;
+end
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function y = nmedian(x,n)
+%NMEDIAN Generalized median filter
+%	NMEDIAN(X,N) sorts elemets of X and returns N-th value (N normalized).
+%	So:
+%	   N = 0 is minimum value
+%	   N = 0.5 is median value
+%	   N = 1 is maximum value
+
+if nargin < 2
+	n = 0.5;
+end
+y = sort(x(:));
+y = interp1(sort(y),n*(length(y)-1) + 1);
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function dd = dtick(dlim,deg)
+%DTICK Tick intervals
+
+if nargin < 2
+	deg = 0;
+end
+
+if deg & dlim <= 2/60
+	% less than 2 minutes: base 36
+	m = 10^floor(log10(dlim*36))/36;
+elseif deg & dlim <= 2
+	% less than 2 degrees: base 6
+	m = 10^floor(log10(dlim*6))/6;
+else
+	% more than few degrees or not degrees: decimal rules
+	m = 10^floor(log10(dlim));
+end
+p = ceil(dlim/m);
+if p <= 1
+	dd = .1*m;
+elseif p == 2
+	dd = .2*m;
+elseif p <= 5
+	dd = .5*m;
+else
+	dd = m;
+end
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function s = deg2dms(x,ll,dec)
+%DEG2DMS Degree/minute/second display
+
+if dec
+	s = sprintf('%7.7g',x);
+else
+	xa = abs(x) + 1/360000;
+	sd = sprintf('%d%c',floor(xa),176);	% ASCII char 176 is the degree sign
+	sm = '';
+	ss = '';
+	if mod(x,1)
+		sm = sprintf('%02d''',floor(mod(60*xa,60)));
+		sa = floor(mod(3600*xa,60));
+		if sa
+			ss = sprintf('%02d"',sa);
+		else
+			if strcmp(sm,'00''')
+				sm = '';
+			end
+		end
+	end
+	s = [sd,sm,ss,ll{1+int8(x<0)}];
+end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function z = fillgap(x,y,z)
+% GRIDDATA is not efficient for large arrays, but has great advantage to be
+% included in Matlab core functions! To optimize interpolation, we
+% reduce the number of relevant data by building a mask of surrounding
+% pixels of novalue areas... playing with linear index!
+
+sz = size(z);
+k = find(isnan(z));
+k(k == 1 | k == numel(z)) = []; % removes first and last index (if exist)
+if ~isempty(k)
+	[xx,yy] = meshgrid(x,y);
+	mask = zeros(sz,'int8');
+	k2 = ind90(sz,k); % k2 is linear index in the row order
+	% sets to 1 every previous and next index, both in column and row order
+	mask([k-1;k+1;ind90(fliplr(sz),[k2-1;k2+1])]) = 1; 
+	mask(k) = 0; % removes the novalue index
+	kb = find(mask); % keeps only border values
+	z(k) = griddata(xx(kb),yy(kb),z(kb),xx(k),yy(k));
+end
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function k2 = ind90(sz,k)
+
+[i,j] = ind2sub(sz,k);
+k2 = sub2ind(fliplr(sz),j,i); % switched i and j: k2 is linear index in row order
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dem/landcolor.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dem/landcolor.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dem/landcolor.m	(revision 21239)
@@ -0,0 +1,78 @@
+function y = landcolor(n)
+%LANDCOLOR Land colormap
+%
+%	Author: Francois Beauducel <beauducel@ipgp.fr>
+%	$Revision: 1.0.0 $   $Date: 2012/05/17 11:22:44 $
+
+J = [ ...
+0.095678 0.53427 0.21682 
+0.15785 0.5979 0.23274 
+0.21286 0.64673 0.2514 
+0.26411 0.68789 0.27268 
+0.32959 0.72416 0.31308 
+0.39794 0.75695 0.36038 
+0.46153 0.7871 0.40624 
+0.52108 0.81516 0.45135 
+0.57702 0.84152 0.49547 
+0.62973 0.86645 0.53891 
+0.67946 0.89016 0.58187 
+0.72647 0.91282 0.62427 
+0.77095 0.93455 0.66619 
+0.81306 0.95546 0.70772 
+0.85292 0.97563 0.7489 
+0.89066 0.99514 0.78976 
+0.88379 0.98595 0.77038 
+0.86389 0.96758 0.73236 
+0.84615 0.94972 0.69623 
+0.8303 0.93233 0.66186 
+0.81612 0.91536 0.6291 
+0.80341 0.8988 0.59784 
+0.79201 0.8826 0.56795 
+0.78191 0.86676 0.53946 
+0.7729 0.85123 0.51224 
+0.76479 0.83602 0.48615 
+0.75747 0.8211 0.46111 
+0.75084 0.80645 0.43704 
+0.74506 0.79206 0.41414 
+0.73981 0.77792 0.39211 
+0.73501 0.76401 0.37089 
+0.73068 0.75033 0.35052 
+0.72683 0.73685 0.33106 
+0.72042 0.72074 0.31228 
+0.71032 0.70085 0.29417 
+0.69761 0.67821 0.27694 
+0.68489 0.65558 0.26026 
+0.67235 0.63313 0.24418 
+0.65997 0.61082 0.22889 
+0.64775 0.58874 0.21406 
+0.63568 0.56689 0.19983 
+0.62376 0.54527 0.18622 
+0.61197 0.52391 0.17299 
+0.60033 0.50283 0.16046 
+0.58881 0.48203 0.14832 
+0.57742 0.46151 0.13667 
+0.56616 0.44133 0.12555 
+0.55502 0.4214 0.11472 
+0.54398 0.4019 0.10456 
+0.53306 0.38266 0.094633 
+0.52226 0.36382 0.085242 
+0.51155 0.3453 0.076179 
+0.50095 0.32714 0.067515 
+0.49045 0.30938 0.059259 
+0.48005 0.29193 0.051294 
+0.46973 0.27495 0.043796 
+0.45951 0.25823 0.0365 
+0.44938 0.24206 0.029715 
+0.43934 0.22609 0.023063 
+0.42938 0.21074 0.016949 
+0.41951 0.19556 0.010917 
+0.40971 0.18105 0.0054326 
+0.4 0.16667 0 
+];
+
+l = length(J);
+if nargin < 1
+	n = 256;
+end
+y = interp1(1:l,J,linspace(1,l,n),'*linear');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dem/license.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dem/license.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dem/license.txt	(revision 21239)
@@ -0,0 +1,24 @@
+Copyright (c) 2013, François Beauducel
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are 
+met:
+
+    * Redistributions of source code must retain the above copyright 
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright 
+      notice, this list of conditions and the following disclaimer in 
+      the documentation and/or other materials provided with the distribution
+      
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
+POSSIBILITY OF SUCH DAMAGE.
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dem/seacolor.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dem/seacolor.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dem/seacolor.m	(revision 21239)
@@ -0,0 +1,58 @@
+function y = seacolor(n)
+%SEACOLOR Sea colormap adapted from NGDC ETOPO1
+%
+%	Author: Francois Beauducel <beauducel@ipgp.fr>
+
+J = [ ...
+    0.0392         0    0.4745
+    0.1020         0    0.5373
+    0.1020         0    0.5373
+    0.1490         0    0.5961
+    0.1490         0    0.5961
+    0.1059    0.0118    0.6510
+    0.1059    0.0118    0.6510
+    0.0627    0.0235    0.7059
+    0.0627    0.0235    0.7059
+    0.0196    0.0353    0.7569
+    0.0196    0.0353    0.7569
+         0    0.0549    0.7961
+         0    0.0549    0.7961
+         0    0.0863    0.8235
+         0    0.0863    0.8235
+         0    0.1176    0.8471
+         0    0.1176    0.8471
+         0    0.1529    0.8745
+         0    0.1529    0.8745
+    0.0471    0.2667    0.9059
+    0.0471    0.2667    0.9059
+    0.1020    0.4000    0.9412
+    0.1020    0.4000    0.9412
+    0.0745    0.4588    0.9569
+    0.0745    0.4588    0.9569
+    0.0549    0.5216    0.9765
+    0.0549    0.5216    0.9765
+    0.0824    0.6196    0.9882
+    0.0824    0.6196    0.9882
+    0.1176    0.6980    1.0000
+    0.1176    0.6980    1.0000
+    0.1686    0.7294    1.0000
+    0.1686    0.7294    1.0000
+    0.2157    0.7569    1.0000
+    0.2157    0.7569    1.0000
+    0.2549    0.7843    1.0000
+    0.2549    0.7843    1.0000
+    0.3098    0.8235    1.0000
+    0.3098    0.8235    1.0000
+    0.3686    0.8745    1.0000
+    0.3686    0.8745    1.0000
+    0.5412    0.8902    1.0000
+    0.5412    0.8902    1.0000
+    0.7373    0.9020    1.0000
+];
+
+l = length(J);
+if nargin < 1
+	n = 256;
+end
+y = interp1(1:l,J,linspace(1,l,n),'*linear');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/distribute/README
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/distribute/README	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/distribute/README	(revision 21239)
@@ -0,0 +1,9 @@
+At: https://pypi.python.org/pypi/setuptools
+
+Installation Instructions
+
+The recommended way to bootstrap setuptools on any system is to download ez_setup.py and run it using the target Python environment. Different operating systems have different recommended techniques to accomplish this basic routine, so below are some examples to get you started.
+
+Setuptools requires Python 2.6 or later. To install setuptools on Python 2.4 or Python 2.5, use the bootstrap script for Setuptools 1.x.
+
+The link provided to ez_setup.py is a bookmark to bootstrap script for the latest known stable release.
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/distribute/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/distribute/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/distribute/install.sh	(revision 21239)
@@ -0,0 +1,6 @@
+#!/bin/bash
+set -eu
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://python-distribute.org/distribute_setup.py' 'distribute_setup.py'
+python distribute_setup.py
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/doxygen/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/doxygen/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/doxygen/install.sh	(revision 21239)
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+mkdir install
+
+#Download latest version
+svn co https://svn.code.sf.net/p/doxygen/code/trunk src
+
+#Configure doxygen
+cd src && ./configure --prefix "$ISSM_DIR/externalpackages/doxygen/install"
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+
+#Install doxygen
+make install
+make install_docs
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dyson/ldap.pl
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dyson/ldap.pl	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dyson/ldap.pl	(revision 21239)
@@ -0,0 +1,25 @@
+#!/usr/bin/perl
+#
+# LDAP.PL - Acquire JPL LDAP data and pare down to user IDs - 2011-08-01
+#
+$cat="/bin/cat"; $srt="/bin/sort"; $ldb="/usr/bin/ldapsearch";                 # Binary locations (change as needed)
+$lds="ldap.jpl.nasa.gov"; $ou="ou=personnel,dc=dir,dc=jpl,dc=nasa,dc=gov"; # Define LDAP server & organization
+$bn="jplbadgenumber"; $txt="$bn".".txt"; $db="jplusers.db";                # Initialize values
+#
+system(`$ldb -x -h $lds -b $ou uid=* uid > $txt`);                         # Execute LDAPsearch, write to file
+#
+open(I,"<$txt");                                                           # Open input file handle
+  open(O,">badges.tmp");                                                   # Open output file handle
+    while (<I>) { chomp($_);                                               # Spool through input file
+      if ($_ =~ "^uid: ") {                                                # If line begins with UID value,
+        $_=~s/uid: //; $_=~s/,(.*)$//; $_=~s/\n//;                         #   strip line of extraneous data
+        if (!($_=~/^\d\d\d\d\d\d/)) { print O "$_\n"; }                    # If UID is non-numeric, print output
+      }                                                                    # Close condition
+    }                                                                      # Close spool
+  close(O);                                                                # Close output file handle
+close(I);                                                                  # Close input file handle
+#
+system(`$cat badges.tmp |$srt -u > $db 2>/dev/null`);                      # Sort output
+unlink("badges.tmp"); unlink("$txt");                                      # Unlink temp files
+#
+# EOF - 2011-08-01 - Jay Dyson <jdyson@jpl.nasa.gov>
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dyson/readme.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dyson/readme.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dyson/readme.txt	(revision 21239)
@@ -0,0 +1,38 @@
+-- ARCHIVE MANIFEST ------------------------------------------ 2011-08-19 --
+
+  Filename        Description
+  --------------  ----------------------------------------------------------
+  readme.txt      This file: describes script functions.
+  ldap.pl         PERL script for acquiring JPL user IDs via cron job.
+  source_seek.sh  Code-scanning script.  Surveys scripts for hard-coded IP
+                  addresses, password callouts, and user IDs.
+
+-- SCRIPT INFORMATION ------------------------------------------------------
+
+  LDAP.PL (requires PERL, UNIX ldapsearch, and related utilities)
+  --------------------------------------------------------------------------
+  The LDAP.PL script is intended solely for twice-daily invocation via cron.
+  This script should be run once at noon, once at midnight.  This script 
+  generates the jplusers.db file on which the SOURCE_SEEK.SH shell script 
+  relies for its scanning of source files.
+
+  SOURCE_SEEK.SH (requires UNIX shell and related utilities)
+  --------------------------------------------------------------------------
+  The SOURCE_SEEK.SH shell script is intended for regular cron invocation,
+  but may be run at system administrator discretion.  This script uses UNIX
+  'find' and 'grep' utilities to scan code files for hard-coded JPL Internet
+  Protocol (IP) addresses, password callouts, and JPL user IDs.  This script
+  accepts the path where source code files reside as a command line
+  argument (e.g., ./source_seek.sh /path/to/sourcecode/files).
+
+-- AUTHOR CONTACT INFO -----------------------------------------------------
+
+  Please direct questions regarding these files to the developer.
+ 
+  Name   : Jay Dyson, CISSP
+  Role   : IT Security Engineer
+  Group  : JPL IT Security
+  E-mail : jdyson@jpl.nasa.gov
+  Phone  : 818-397-4960
+
+------------------------------------------------ LAST UPDATED: 2011-08-19 --
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dyson/source_seek.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dyson/source_seek.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/dyson/source_seek.sh	(revision 21239)
@@ -0,0 +1,26 @@
+#!/bin/sh
+#
+# SOURCE_SEEK.SH - Look for IP addresses and mention of 'password' in source files - 2009-10-05
+#
+if [ -n "${1}" ]; then
+  clear
+  echo "Checking for IP addresses"
+  echo "--------------------------------------------"
+  find $1 -name "*" -exec grep -il "128\.149\." {} \;
+  find $1 -name "*" -exec grep -il "137\.78\."  {} \;
+  find $1 -name "*" -exec grep -il "137\.79\."  {} \;
+  find $1 -name "*" -exec grep -il "137\.228\." {} \;
+  echo "--------------------------------------------"
+  echo "\nChecking for 'password'"
+  echo "--------------------------------------------"
+  find $1 -name "*" -exec grep -il "password"   {} \;
+  echo "--------------------------------------------"
+  echo "\nChecking for JPL user IDs"
+  echo "--------------------------------------------"
+  find $1 -name "*" -exec grep -ilf jplusers.db {} \;
+  echo "--------------------------------------------"
+else
+  echo -e "\nUSE: $0 <directory_of_source_files>\n";
+fi
+#
+# EOF - 2011-08-05 - Jay Dyson <jdyson@jpl.nasa.gov>
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/ec2ami/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/ec2ami/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/ec2ami/install.sh	(revision 21239)
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf ec2-api-tools.zip
+rm -rf ec2-api-tools-1.4.0.7
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/ec2-api-tools.zip' 'ec2-api-tools.zip'
+
+#Untar 
+unzip ec2-api-tools.zip
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/ec2api/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/ec2api/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/ec2api/install.sh	(revision 21239)
@@ -0,0 +1,13 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf ec2-api-tools.zip
+rm -rf ec2-api-tools-1.6.3.1
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/ec2-api-tools.zip' 'ec2-api-tools.zip'
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/docs/ec2-ug.pdf' 'ec2-ug.pdf'
+
+#Untar 
+unzip ec2-api-tools.zip
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/emscripten/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/emscripten/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/emscripten/install.sh	(revision 21239)
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/emsdk-portable.tar.gz' 'emsdk-portable.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  emsdk-portable.tar.gz
+mv emsdk_portable src
+
+cd src
+
+export CXX=g++
+export CC=gcc
+
+./emsdk update
+./emsdk install latest
+./emsdk activate latest
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/esmf/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/esmf/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/esmf/install.sh	(revision 21239)
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -eu
+
+export ESMF_DIR=$ISSM_DIR/externalpackages/esmf/esmf
+export ESMF_INSTALL_PREFIX=$ISSM_DIR/externalpackages/esmf/install
+export ESMF_COMPILER=gfortran
+export ESMF_COMM=mpich2
+
+#Some cleanup
+rm -rf esmf_6_3_0rp1
+rm -rf esmf
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/esmf_6_3_0rp1_src.tar.gz' 'esmf_6_3_0rp1_src.tar.gz'
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/docs/ESMF_refdoc.pdf' 'ESMF_refdoc.pdf'
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/docs/ESMF_usrdoc.pdf' 'ESMF_usrdoc.pdf'
+
+#Untar 
+tar -zxvf  esmf_6_3_0rp1_src.tar.gz
+
+#Configure esmf
+cd esmf
+
+#Compile and install esmf
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/LICENSE
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/LICENSE	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/LICENSE	(revision 21239)
@@ -0,0 +1,27 @@
+Copyright (c) 2014, Oliver J. Woodford
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+* Neither the name of the {organization} 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: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/README.md
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/README.md	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/README.md	(revision 21239)
@@ -0,0 +1,259 @@
+export_fig
+==========
+
+A toolbox for exporting figures from MATLAB to standard image and document formats nicely.
+
+### Overview
+Exporting a figure from MATLAB the way you want it (hopefully the way it looks on screen), can be a real headache for the unitiated, thanks to all the settings that are required, and also due to some eccentricities (a.k.a. features and bugs) of functions such as `print`. The first goal of export_fig is to make transferring a plot from screen to document, just the way you expect (again, assuming that's as it appears on screen), a doddle.
+  
+The second goal is to make the output media suitable for publication, allowing you to publish your results in the full glory that you originally intended. This includes embedding fonts, setting image compression levels (including lossless), anti-aliasing, cropping, setting the colourspace, alpha-blending and getting the right resolution.
+
+Perhaps the best way to demonstrate what export_fig can do is with some examples.
+  
+### Examples
+**Visual accuracy** - MATLAB's exporting functions, namely `saveas` and `print`, change many visual properties of a figure, such as size, axes limits and ticks, and background colour, in unexpected and unintended ways. Export_fig aims to faithfully reproduce the figure as it appears on screen. For example:  
+```Matlab
+plot(cos(linspace(0, 7, 1000)));
+set(gcf, 'Position', [100 100 150 150]);
+saveas(gcf, 'test.png');
+export_fig test2.png
+```
+generates the following:
+
+| Figure: | test.png: | test2.png: |
+|:-------:|:---------:|:----------:|
+|![](https://farm6.staticflickr.com/5616/15589249291_16e485c29a_o_d.png)|![](https://farm4.staticflickr.com/3944/15406302850_4d2e1c7afa_o_d.png)|![](https://farm6.staticflickr.com/5607/15568225476_8ce9bd5f6b_o_d.png)|
+
+Note that the size and background colour of test2.png (the output of export_fig) are the same as those of the on screen figure, in contrast to test.png. Of course, if you want want the figure background to be white (or any other colour) in the exported file then you can set this prior to exporting using:
+```Matlab
+set(gcf, 'Color', 'w');
+```
+  
+Notice also that export_fig crops and anti-aliases (smooths, for bitmaps only) the output by default. However, these options can be disabled; see the Tips section below for details.
+  
+**Resolution** - by default, export_fig exports bitmaps at screen resolution. However, you may wish to save them at a different resolution. You can do this using either of two options: `-m<val>`, where <val> is a positive real number, magnifies the figure by the factor <val> for export, e.g. `-m2` produces an image double the size (in pixels) of the on screen figure; `-r<val>`, again where <val> is a positive real number, specifies the output bitmap to have <val> pixels per inch, the dimensions of the figure (in inches) being those of the on screen figure. For example, using:  
+```Matlab
+export_fig test.png -m2.5
+```
+on the figure from the example above generates:
+
+![](https://farm4.staticflickr.com/3937/15591910915_dc7040c477_o_d.png)
+
+Sometimes you might have a figure with an image in. For example:
+```Matlab
+imshow(imread('cameraman.tif'))
+hold on
+plot(0:255, sin(linspace(0, 10, 256))*127+128);
+set(gcf, 'Position', [100 100 150 150]);
+```
+generates this figure:
+
+![](https://farm4.staticflickr.com/3942/15589249581_ff87a56a3f_o_d.png)
+  
+Here the image is displayed in the figure at resolution lower than its native resolution. However, you might want to export the figure at a resolution such that the image is output at its native (i.e. original) size (in pixels). Ordinarily this would require some non-trivial computation to work out what that resolution should be, but export_fig has an option to do this for you. Using:
+```Matlab
+export_fig test.png -native
+```
+produces:
+
+![](https://farm6.staticflickr.com/5604/15589249591_da2b2652e4_o_d.png)
+
+with the image being the size (in pixels) of the original image. Note that if you want an image to be a particular size, in pixels, in the output (other than its original size) then you can resize it to this size and use the `-native` option to achieve this.
+
+All resolution options (`-m<val>`, `-q<val>` and `-native`) correctly set the resolution information in PNG and TIFF files, as if the image were the dimensions of the on screen figure.
+
+**Shrinking dots & dashes** - when exporting figures with dashed or dotted lines using either the ZBuffer or OpenGL (default for bitmaps) renderers, the dots and dashes can appear much shorter, even non-existent, in the output file, especially if the lines are thick and/or the resolution is high. For example:  
+```Matlab
+plot(sin(linspace(0, 10, 1000)), 'b:', 'LineWidth', 4);
+hold on
+plot(cos(linspace(0, 7, 1000)), 'r--', 'LineWidth', 3);
+grid on
+export_fig test.png
+```
+generates:
+
+![](https://farm4.staticflickr.com/3956/15592747732_f943d4aa0a_o_d.png)
+
+This problem can be overcome by using the painters renderer. For example:
+```Matlab
+export_fig test.png -painters
+```
+used on the same figure generates:
+
+![](https://farm4.staticflickr.com/3945/14971168504_77692f11f5_o_d.png)
+
+Note that not only are the plot lines correct, but the grid lines are too.
+
+**Transparency** - sometimes you might want a figure and axes' backgrounds to be transparent, so that you can see through them to a document (for example a presentation slide, with coloured or textured background) that the exported figure is placed in. To achieve this, first (optionally) set the axes' colour to 'none' prior to exporting, using:  
+```Matlab
+set(gca, 'Color', 'none'); % Sets axes background
+```
+    
+then use export_fig's `-transparent` option when exporting:
+```Matlab
+export_fig test.png -transparent
+```
+
+This will make the background transparent in PDF, EPS and PNG outputs. You can additionally save fully alpha-blended semi-transparent patch objects to the PNG format. For example:
+
+```Matlab
+logo;
+alpha(0.5);
+```
+
+generates a figure like this:
+
+![](https://farm4.staticflickr.com/3933/15405290339_b08de33528_o_d.png)
+
+If you then export this to PNG using the `-transparent` option you can then put the resulting image into, for example, a presentation slide with fancy, textured background, like so:
+
+![](https://farm6.staticflickr.com/5599/15406302920_59beaefff1_o_d.png)
+
+and the image blends seamlessly with the background.
+
+**Image quality** - when publishing images of your results, you want them to look as good as possible. By default, when outputting to lossy file formats (PDF, EPS and JPEG), export_fig uses a high quality setting, i.e. low compression, for images, so little information is lost. This is in contrast to MATLAB's print and saveas functions, whose default quality settings are poor. For example:
+```Matlab
+A = im2double(imread('peppers.png'));
+B = randn(ceil(size(A, 1)/6), ceil(size(A, 2)/6), 3) * 0.1;
+B = cat(3, kron(B(:,:,1), ones(6)), kron(B(:,:,2), ones(6)), kron(B(:,:,3), ones(6)));
+B = A + B(1:size(A, 1),1:size(A, 2),:);
+imshow(B);
+print -dpdf test.pdf
+```
+generates a PDF file, a sub-window of which looks (when zoomed in) like this:
+
+![](https://farm6.staticflickr.com/5613/15405290309_881b2774d6_o_d.png)
+
+while the command
+
+```Matlab
+export_fig test.pdf
+```
+on the same figure produces this:
+
+![](https://farm4.staticflickr.com/3947/14971168174_687473133f_o_d.png)
+
+While much better, the image still contains some compression artifacts (see the low level noise around the edge of the pepper). You may prefer to export with no artifacts at all, i.e. lossless compression. Alternatively, you might need a smaller file, and be willing to accept more compression. Either way, export_fig has an option that can suit your needs: `-q<val>`, where <val> is a number from 0-100, will set the level of lossy image compression (again in PDF, EPS and JPEG outputs only; other formats are lossless), from high compression (0) to low compression/high quality (100). If you want lossless compression in any of those formats then specify a <val> greater than 100. For example:
+```Matlab
+export_fig test.pdf -q101
+```
+again on the same figure, produces this:
+
+![](https://farm6.staticflickr.com/5608/15405803908_934512c1fe_o_d.png)
+
+Notice that all the noise has gone.
+
+### Tips
+**Anti-aliasing** - the anti-aliasing which export_fig applies to bitmap outputs by default makes the images look nice, but it can also blur images and increase exporting time and memory requirements, so you might not always want it. You can set the level of anti-aliasing by using the `-a<val>` option, where <val> is 1 (no anti-aliasing), 2, 3 (default) or 4 (maximum anti-aliasing).  
+  
+**Cropping** - by default, export_fig crops its output to minimize the amount of empty space around the figure. If you'd prefer the figure to be uncropped, and instead have the same appearance (in terms of border width) as the on screen figure, then use the `-nocrop` option.  
+  
+**Colourspace** - by default, export_fig generates files in the RGB [colourspace](http://en.wikipedia.org/wiki/Color_space). However, you can also export in greyscale or the CMYK colourspace, using the `-grey` (or `-gray`) and `-cmyk` options respectively. The CMYK option is useful for publishers who require documents in this colourspace, but the option is only supported for PDF, EPS and TIFF files.
+
+**Specifying a target directory** - you can get export_fig to save output files to any directory (for which you have write permission), simply by specifying the full or relative path in the filename. For example:
+```Matlab
+export_fig ../subdir/fig.png;
+export_fig('C:/Users/Me/Documents/figures/myfig', '-pdf', '-png');
+```
+
+**Variable file names** - often you might want to save a series of figures in a for loop, each with a different name. For this you can use the functional form of input arguments, i.e. `export_fig(arg1, arg2)`,  and construct the filename string in a variable. Here's an example of this:  
+```Matlab
+for a = 1:5
+    plot(rand(5, 2));
+    export_fig(sprintf('plot%d.png', a));
+end
+```
+When using the functional form like this, be sure to put string variables in quotes:
+```Matlab
+export_fig(sprintf('plot%d', a), '-a1', '-pdf', '-png');
+```
+
+**Specifying the figure/axes** - if you have mutiple figures open you can specify which figure to export using its handle:  
+```Matlab
+export_fig(figure_handle, 'filename.fmt');
+```
+Equally, if your figure contains several subplots then you can export just one of them by giving export_fig the handle to the relevant axes:
+```Matlab
+export_fig(axes_handle, 'filename.fmt');
+```
+
+**Multiple formats** - save time by exporting to multiple formats simultaneously. E.g.: 
+```Matlab
+export_fig filename -pdf -eps -png -jpg -tiff
+```
+
+**Other file formats** - if you'd like to save your figure to a bitmap format that is not supported by export_fig, e.g. animated GIF, PPM file or a frame in a movie, then you can use export_fig to output the image, and optionally an alpha-matte, to the workspace. E.g.:  
+```Matlab
+frame = export_fig;
+```
+or
+```Matlab
+[frame, alpha] = export_fig;
+```
+These variables can then be saved to other image formats using other functions, such as imwrite.
+
+**Appending to a file** - you can use the `-append` option to append the figure to the end of an image/document, if it already exists. This is supported for PDF and TIFF files only. Note that if you wish to append a lot of figures consecutively to a PDF, it can be more efficient to save all the figures to PDF separately then append them all in one go at the end (e.g. using [append_pdfs](http://www.mathworks.com/matlabcentral/fileexchange/31215-appendpdfs)).  
+  
+**Font size** - if you want to place an exported figure in a document with the font a particular size then you need to set the font to that size in the figure, and not resize the output of export_fig in the document. To avoid resizing, simply make sure that the on screen figure is the size you want the output to be in the document before exporting.  
+  
+**Renderers** - MATLAB has three renderers for displaying and exporting figures: painters, OpenGL and ZBuffer. The different renderers have different [features](http://www.mathworks.com/access/helpdesk/help/techdoc/creating_plots/f3-84337.html#f3-102410), so if you aren't happy with the result from one renderer try another. By default, vector formats (i.e. PDF and EPS outputs) use the painters renderer, while other formats use the OpenGL renderer. Non-default renderers can be selected by using one of these three export_fig input options: `-painters`, `-opengl`, `-zbuffer`.  
+  
+**Artifacts** - sometimes the output that you get from export_fig is not what you expected. If an output file contains artifacts that aren't in the on screen figure then make sure that the renderer used for rendering the figure on screen is the same as that used for exporting. To set the renderer used to display the figure, use:  
+```Matlab
+set(figure_handle, 'Renderer', 'opengl');
+```
+After matching the two renderers, if the artifact appears in the on screen figure then you'll need to fix that before exporting. Alternatively you can try changing the renderer used by export_fig. Finally check that it isn't one of the known issues mentioned in the section below.
+
+**Smoothed/interpolated images in output PDF** - if you produce a PDF using export_fig and images in the PDF look overly smoothed or interpolated, this is because the software you are using to view the PDF is smoothing or interpolating the image data. The image is not smoothed in the PDF file itself. If the software has an option to disable this feature, you should select it. Alternatively, use another PDF viewer that doesn't exhibit this problem.  
+  
+**Locating Ghostscript/pdftops** - You may find a dialogue box appears when using export_fig, asking you to locate either [Ghostscript](http://www.ghostscript.com) or [pdftops](http://www.foolabs.com/xpdf). These are separate applications which export_fig requires to perform certain functions. If such a dialogue appears it is because export_fig can't find the application automatically. This is because you either haven't installed it, or it isn't in the normal place. Make sure you install the applications correctly first. They can be downloaded from the following places:  
+ 1. Ghostscript:     [www.ghostscript.com](http://www.ghostscript.com)
+ 2. pdftops (install the Xpdf package): [www.foolabs.com/xpdf](http://www.foolabs.com/xpdf)
+
+If you choose to install them in a non-default location then point export_fig
+to this location using the dialogue box.
+
+**Undefined function errors** - If you download and run export_fig and get an error similar to this:  
+```Matlab
+??? Undefined function or method 'print2array' for input arguments of type 'double'.
+```
+then you are missing one or more of the files that come in the export_fig package. Make sure that you click the "Get from GitHub" button at the top-right of the download [page](http://www.mathworks.co.uk/matlabcentral/fileexchange/23629-exportfig), then extract all the files in the zip file to the same directory. You should then have all the necessary files.
+  
+### Known issues
+There are lots of problems with MATLAB's exporting functions, and unfortunately export_fig, which is simply a glorified wrapper for MATLAB's print function, doesn't solve all of them (yet?). Some of the problems I know about are:
+  
+**Fonts** - when using the painters renderer, MATLAB can only export a small number of fonts, details of which can be found [here](http://www.mathworks.com/access/helpdesk/help/techdoc/creating_plots/f3-103191.html#f3-96545). Export_fig attempts to correct font names in the resulting EPS file (for upto a maximum of 11 different fonts in one figure), but this is not always guaranteed to work. In particular, the text positions will be affected. It also does not work for text blocks where the 'Interpreter' property is set to 'latex'.
+
+Also, when using the painters renderer, ghostscript will sometimes throw an error such as `Error: /undefined in /findfont`. This suggests that ghostscript could not find a definition file for one of your fonts. One possible fix for this is to make sure the file `EXPORT_FIG_PATH/.ignore/gs_font_path.txt` exists and contains a list of paths to the folder(s) containing the necessary font definitions (make sure they're TrueType definitions), separated by a semicolon.
+
+**RGB color data not yet supported in Painter's mode** - you will see this as a warning if you try to export a figure which contains patch objects whose face or vertex colors are specified as a an RGB colour, rather than an index into the colormap, using the painters renderer (the default renderer for vector output). This problem can arise if you use `pcolor`, for example. This is a problem with MATLAB's painters renderer, which also affects `print`; there is currently no fix available in export_fig (other than to export to bitmap). The suggested workaround is to avoid colouring patches using RGB. First, try to use colours in the figure's colourmap (instructions [here](http://www.mathworks.co.uk/support/solutions/en/data/1-6OTPQE/)) - change the colourmap, if necessary. If you are using `pcolor`, try using [uimagesc](http://www.mathworks.com/matlabcentral/fileexchange/11368) (on the file exchange) instead.  
+
+**Dashed contour lines appear solid** - when using the painters renderer, MATLAB cannot generate dashed lines using the `contour` function (either on screen or in exported PDF and EPS files). Details can be found [here](http://www.mathworks.com/support/solutions/en/data/1-14PPHB/?solution=1-14PPHB).  
+  
+**Text size** - when using the OpenGL or ZBuffer renderers, large text can be resized relative to the figure when exporting at non-screen-resolution (including using anti-alising at screen resolution). This is a feature of MATLAB's `print `function. In this case, try using the `-painters` option.  
+  
+**Lighting and transparency** - when using the painters renderer, transparency and lighting effects are not supported. Sorry, but this is a feature of the renderer. To find out more about the capabilities of each rendering method, see [here](http://www.mathworks.com/access/helpdesk/help/techdoc/creating_plots/f3-84337.html#f3-102410). You can still export transparent objects to vector format (SVG) using the excellent [plot2svg](http://www.mathworks.com/matlabcentral/fileexchange/7401) package, then convert this to PDF, for example using [Inkscape](http://inkscape.org/). However, it can't handle lighting.  
+  
+**Lines in patch objects** - when exporting patch objects to PDF using the painters renderer (default), sometimes the output can appear to have lines across the middle of rectangular patches; these lines are the colour of the background, as if there is a crack in the patch, allowing you to see through. This issue is a feature of the software used to display the PDF, rather than the PDF itself. Sometimes disabling anti-aliasing in this software can get rid of the lines.  
+  
+**Out of memory** - if you run into memory issues when using export_fig, some ways to get round this are:  
+ 1. Reduce the level of anti-aliasing.
+ 2. Reduce the size of the on screen figure.
+ 3. Reduce the resolution (dpi) the figure is exported at.  
+  
+**Errors** - the other common type of errors people get with export_fig are OpenGL errors. This isn't a fault of export_fig, but either a bug in MATLAB's `print`, or your graphics driver getting itself into a state. Always make sure your graphics driver is up-to-date. If it still doesn't work, try using the ZBuffer renderer.  
+  
+### Raising issues
+If you think you have found a genuine error or issue with export_fig **that is not listed above**, first ensure that the figure looks correct on screen when rendered using the renderer that export_fig is set to use (e.g. if exporting to PDF or EPS, does the figure look correct on screen using the painters renderer, or if exporting to bitmap, does the figure look correct on screen using the OpenGL renderer?). If it looks wrong then the problem is there, and I cannot help (other than to suggest you try exporting using a different renderer).
+
+Secondly, if exporting to bitmap, do try all the renderers (i.e. try the options `-opengl`, `-zbuffer` and `-painters` separately), to see if one of them does produce an acceptable output, and if so, use that.
+
+If the figure looks correct on screen, but an error exists in the exported output (which cannot be solved using a different renderer) then please feel free to raise an [issue](https://github.com/ojwoodford/export_fig/issues). Please be sure to include the .fig file, the export_fig command you use, the output you get, and a description of what you expected. I can't promise anything, but if it's easy to fix I probably will do it. Often I will find that the error is due to a bug in MATLAB's print function, in which case I will suggest you submit it as a bug to TheMathWorks, and inform me of any fix they suggest. Also, if there's a feature you'd like that isn't supported please tell me what it is and I'll consider implementing it.
+
+### And finally...
+
+![](https://farm4.staticflickr.com/3956/15591911455_b9008bd77e_o_d.jpg)
+
+If you've ever wondered what's going on in the icon on the export_fig download page (reproduced on the left), then this explanantion is for you. The icon is designed to demonstrate as many of export_fig's features as possible. Given a
+figure containing a translucent mesh (top right), export_fig can export to pdf (bottom centre), which allows the figure to be zoomed in without losing quality (because it's a vector graphic), but isn't able to reproduce the translucency, and also, depending on the viewer, creates small gaps between the patches, which are seen here as thin white lines. By contrast, when exporting to png (top left), translucency is preserved (see how the graphic below shows through), the figure is anti-aliased, but zooming in does not reveal more detail.
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/append_pdfs.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/append_pdfs.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/append_pdfs.m	(revision 21239)
@@ -0,0 +1,58 @@
+%APPEND_PDFS Appends/concatenates multiple PDF files
+%
+% Example:
+%   append_pdfs(output, input1, input2, ...)
+%   append_pdfs(output, input_list{:})
+%   append_pdfs test.pdf temp1.pdf temp2.pdf
+%
+% This function appends multiple PDF files to an existing PDF file, or
+% concatenates them into a PDF file if the output file doesn't yet exist.
+%
+% This function requires that you have ghostscript installed on your
+% system. Ghostscript can be downloaded from: http://www.ghostscript.com
+%
+% IN:
+%    output - string of output file name (including the extension, .pdf).
+%             If it exists it is appended to; if not, it is created.
+%    input1 - string of an input file name (including the extension, .pdf).
+%             All input files are appended in order.
+%    input_list - cell array list of input file name strings. All input
+%                 files are appended in order.
+
+% Copyright: Oliver Woodford, 2011
+
+% Thanks to Reinhard Knoll for pointing out that appending multiple pdfs in
+% one go is much faster than appending them one at a time.
+
+% Thanks to Michael Teo for reporting the issue of a too long command line.
+% Issue resolved on 5/5/2011, by passing gs a command file.
+
+% Thanks to Martin Wittmann for pointing out the quality issue when
+% appending multiple bitmaps.
+% Issue resolved (to best of my ability) 1/6/2011, using the prepress
+% setting
+
+function append_pdfs(varargin)
+% Are we appending or creating a new file
+append = exist(varargin{1}, 'file') == 2;
+if append
+    output = [tempname '.pdf'];
+else
+    output = varargin{1};
+    varargin = varargin(2:end);
+end
+% Create the command file
+cmdfile = [tempname '.txt'];
+fh = fopen(cmdfile, 'w');
+fprintf(fh, '-q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile="%s" -f', output);
+fprintf(fh, ' "%s"', varargin{:});
+fclose(fh);
+% Call ghostscript
+ghostscript(['@"' cmdfile '"']);
+% Delete the command file
+delete(cmdfile);
+% Rename the file if needed
+if append
+    movefile(output, varargin{1});
+end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/copyfig.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/copyfig.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/copyfig.m	(revision 21239)
@@ -0,0 +1,33 @@
+%COPYFIG Create a copy of a figure, without changing the figure
+%
+% Examples:
+%   fh_new = copyfig(fh_old)
+%
+% This function will create a copy of a figure, but not change the figure,
+% as copyobj sometimes does, e.g. by changing legends.
+%
+% IN:
+%    fh_old - The handle of the figure to be copied. Default: gcf.
+%
+% OUT:
+%    fh_new - The handle of the created figure.
+
+% Copyright (C) Oliver Woodford 2012
+
+function fh = copyfig(fh)
+% Set the default
+if nargin == 0
+    fh = gcf;
+end
+% Is there a legend?
+if isempty(findall(fh, 'Type', 'axes', 'Tag', 'legend'))
+    % Safe to copy using copyobj
+    fh = copyobj(fh, 0);
+else
+    % copyobj will change the figure, so save and then load it instead
+    tmp_nam = [tempname '.fig'];
+    hgsave(fh, tmp_nam);
+    fh = hgload(tmp_nam);
+    delete(tmp_nam);
+end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/crop_borders.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/crop_borders.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/crop_borders.m	(revision 21239)
@@ -0,0 +1,81 @@
+%CROP_BORDERS Crop the borders of an image or stack of images
+%
+%   [B, v] = crop_borders(A, bcol, [padding])
+%
+%IN:
+%   A - HxWxCxN stack of images.
+%   bcol - Cx1 background colour vector.
+%   padding - scalar indicating how many pixels padding to have. Default: 0.
+%
+%OUT:
+%   B - JxKxCxN cropped stack of images.
+%   v - 1x4 vector of start and end indices for first two dimensions, s.t.
+%       B = A(v(1):v(2),v(3):v(4),:,:).
+
+function [A, v] = crop_borders(A, bcol, padding)
+if nargin < 3
+    padding = 0;
+end
+[h, w, c, n] = size(A);
+if isscalar(bcol)
+    bcol = bcol(ones(c, 1));
+end
+bail = false;
+for l = 1:w
+    for a = 1:c
+        if ~all(col(A(:,l,a,:)) == bcol(a))
+            bail = true;
+            break;
+        end
+    end
+    if bail
+        break;
+    end
+end
+bcol = A(ceil(end/2),w,:,1);
+bail = false;
+for r = w:-1:l
+    for a = 1:c
+        if ~all(col(A(:,r,a,:)) == bcol(a))
+            bail = true;
+            break;
+        end
+    end
+    if bail
+        break;
+    end
+end
+bcol = A(1,ceil(end/2),:,1);
+bail = false;
+for t = 1:h
+    for a = 1:c
+        if ~all(col(A(t,:,a,:)) == bcol(a))
+            bail = true;
+            break;
+        end
+    end
+    if bail
+        break;
+    end
+end
+bcol = A(h,ceil(end/2),:,1);
+bail = false;
+for b = h:-1:t
+    for a = 1:c
+        if ~all(col(A(b,:,a,:)) == bcol(a))
+            bail = true;
+            break;
+        end
+    end
+    if bail
+        break;
+    end
+end
+% Crop the background, leaving one boundary pixel to avoid bleeding on resize
+v = [max(t-padding, 1) min(b+padding, h) max(l-padding, 1) min(r+padding, w)];
+A = A(v(1):v(2),v(3):v(4),:,:);
+end
+
+function A = col(A)
+A = A(:);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/eps2pdf.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/eps2pdf.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/eps2pdf.m	(revision 21239)
@@ -0,0 +1,134 @@
+%EPS2PDF  Convert an eps file to pdf format using ghostscript
+%
+% Examples:
+%   eps2pdf source dest
+%   eps2pdf(source, dest, crop)
+%   eps2pdf(source, dest, crop, append)
+%   eps2pdf(source, dest, crop, append, gray)
+%   eps2pdf(source, dest, crop, append, gray, quality)
+%
+% This function converts an eps file to pdf format. The output can be
+% optionally cropped and also converted to grayscale. If the output pdf
+% file already exists then the eps file can optionally be appended as a new
+% page on the end of the eps file. The level of bitmap compression can also
+% optionally be set.
+%
+% This function requires that you have ghostscript installed on your
+% system. Ghostscript can be downloaded from: http://www.ghostscript.com
+%
+%IN:
+%   source - filename of the source eps file to convert. The filename is
+%            assumed to already have the extension ".eps".
+%   dest - filename of the destination pdf file. The filename is assumed to
+%          already have the extension ".pdf".
+%   crop - boolean indicating whether to crop the borders off the pdf.
+%          Default: true.
+%   append - boolean indicating whether the eps should be appended to the
+%            end of the pdf as a new page (if the pdf exists already).
+%            Default: false.
+%   gray - boolean indicating whether the output pdf should be grayscale or
+%          not. Default: false.
+%   quality - scalar indicating the level of image bitmap quality to
+%             output. A larger value gives a higher quality. quality > 100
+%             gives lossless output. Default: ghostscript prepress default.
+
+% Copyright (C) Oliver Woodford 2009-2011
+
+% Suggestion of appending pdf files provided by Matt C at:
+% http://www.mathworks.com/matlabcentral/fileexchange/23629
+
+% Thank you to Fabio Viola for pointing out compression artifacts, leading
+% to the quality setting.
+% Thank you to Scott for pointing out the subsampling of very small images,
+% which was fixed for lossless compression settings.
+
+% 9/12/2011 Pass font path to ghostscript.
+
+function eps2pdf(source, dest, crop, append, gray, quality)
+% Intialise the options string for ghostscript
+options = ['-q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile="' dest '"'];
+% Set crop option
+if nargin < 3 || crop
+    options = [options ' -dEPSCrop'];
+end
+% Set the font path
+fp = font_path();
+if ~isempty(fp)
+    options = [options ' -sFONTPATH="' fp '"'];
+end
+% Set the grayscale option
+if nargin > 4 && gray
+    options = [options ' -sColorConversionStrategy=Gray -dProcessColorModel=/DeviceGray'];
+end
+% Set the bitmap quality
+if nargin > 5 && ~isempty(quality)
+    options = [options ' -dAutoFilterColorImages=false -dAutoFilterGrayImages=false'];
+    if quality > 100
+        options = [options ' -dColorImageFilter=/FlateEncode -dGrayImageFilter=/FlateEncode -c ".setpdfwrite << /ColorImageDownsampleThreshold 10 /GrayImageDownsampleThreshold 10 >> setdistillerparams"'];
+    else
+        options = [options ' -dColorImageFilter=/DCTEncode -dGrayImageFilter=/DCTEncode'];
+        v = 1 + (quality < 80);
+        quality = 1 - quality / 100;
+        s = sprintf('<< /QFactor %.2f /Blend 1 /HSample [%d 1 1 %d] /VSample [%d 1 1 %d] >>', quality, v, v, v, v);
+        options = sprintf('%s -c ".setpdfwrite << /ColorImageDict %s /GrayImageDict %s >> setdistillerparams"', options, s, s);
+    end
+end
+% Check if the output file exists
+if nargin > 3 && append && exist(dest, 'file') == 2
+    % File exists - append current figure to the end
+    tmp_nam = tempname;
+    % Copy the file
+    copyfile(dest, tmp_nam);
+    % Add the output file names
+    options = [options ' -f "' tmp_nam '" "' source '"'];
+    try
+        % Convert to pdf using ghostscript
+        [status, message] = ghostscript(options);
+    catch me
+        % Delete the intermediate file
+        delete(tmp_nam);
+        rethrow(me);
+    end
+    % Delete the intermediate file
+    delete(tmp_nam);
+else
+    % File doesn't exist or should be over-written
+    % Add the output file names
+    options = [options ' -f "' source '"'];
+    % Convert to pdf using ghostscript
+    [status, message] = ghostscript(options);
+end
+% Check for error
+if status
+    % Report error
+    if isempty(message)
+        error('Unable to generate pdf. Check destination directory is writable.');
+    else
+        error(message);
+    end
+end
+end
+
+% Function to return (and create, where necessary) the font path
+function fp = font_path()
+fp = user_string('gs_font_path');
+if ~isempty(fp)
+    return
+end
+% Create the path
+% Start with the default path
+fp = getenv('GS_FONTPATH');
+% Add on the typical directories for a given OS
+if ispc
+    if ~isempty(fp)
+        fp = [fp ';'];
+    end
+    fp = [fp getenv('WINDIR') filesep 'Fonts'];
+else
+    if ~isempty(fp)
+        fp = [fp ':'];
+    end
+    fp = [fp '/usr/share/fonts:/usr/local/share/fonts:/usr/share/fonts/X11:/usr/local/share/fonts/X11:/usr/share/fonts/truetype:/usr/local/share/fonts/truetype'];
+end
+user_string('gs_font_path', fp);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/export_fig.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/export_fig.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/export_fig.m	(revision 21239)
@@ -0,0 +1,799 @@
+%EXPORT_FIG  Exports figures suitable for publication
+%
+% Examples:
+%   im = export_fig
+%   [im alpha] = export_fig
+%   export_fig filename
+%   export_fig filename -format1 -format2
+%   export_fig ... -nocrop
+%   export_fig ... -transparent
+%   export_fig ... -native
+%   export_fig ... -m<val>
+%   export_fig ... -r<val>
+%   export_fig ... -a<val>
+%   export_fig ... -q<val>
+%   export_fig ... -p<val>
+%   export_fig ... -<renderer>
+%   export_fig ... -<colorspace>
+%   export_fig ... -append
+%   export_fig ... -bookmark
+%   export_fig(..., handle)
+%
+% This function saves a figure or single axes to one or more vector and/or
+% bitmap file formats, and/or outputs a rasterized version to the
+% workspace, with the following properties:
+%   - Figure/axes reproduced as it appears on screen
+%   - Cropped borders (optional)
+%   - Embedded fonts (vector formats)
+%   - Improved line and grid line styles
+%   - Anti-aliased graphics (bitmap formats)
+%   - Render images at native resolution (optional for bitmap formats)
+%   - Transparent background supported (pdf, eps, png)
+%   - Semi-transparent patch objects supported (png only)
+%   - RGB, CMYK or grayscale output (CMYK only with pdf, eps, tiff)
+%   - Variable image compression, including lossless (pdf, eps, jpg)
+%   - Optionally append to file (pdf, tiff)
+%   - Vector formats: pdf, eps
+%   - Bitmap formats: png, tiff, jpg, bmp, export to workspace 
+%   
+% This function is especially suited to exporting figures for use in
+% publications and presentations, because of the high quality and
+% portability of media produced.
+%
+% Note that the background color and figure dimensions are reproduced
+% (the latter approximately, and ignoring cropping & magnification) in the
+% output file. For transparent background (and semi-transparent patch
+% objects), use the -transparent option or set the figure 'Color' property
+% to 'none'. To make axes transparent set the axes 'Color' property to
+% 'none'. Pdf, eps and png are the only file formats to support a
+% transparent background, whilst the png format alone supports transparency
+% of patch objects.
+%
+% The choice of renderer (opengl, zbuffer or painters) has a large impact
+% on the quality of output. Whilst the default value (opengl for bitmaps,
+% painters for vector formats) generally gives good results, if you aren't
+% satisfied then try another renderer.  Notes: 1) For vector formats (eps,
+% pdf), only painters generates vector graphics. 2) For bitmaps, only
+% opengl can render transparent patch objects correctly. 3) For bitmaps,
+% only painters will correctly scale line dash and dot lengths when
+% magnifying or anti-aliasing. 4) Fonts may be substitued with Courier when
+% using painters.
+%
+% When exporting to vector format (pdf & eps) and bitmap format using the
+% painters renderer, this function requires that ghostscript is installed
+% on your system. You can download this from:
+%   http://www.ghostscript.com
+% When exporting to eps it additionally requires pdftops, from the Xpdf
+% suite of functions. You can download this from:
+%   http://www.foolabs.com/xpdf
+%
+%IN:
+%   filename - string containing the name (optionally including full or
+%              relative path) of the file the figure is to be saved as. If
+%              a path is not specified, the figure is saved in the current
+%              directory. If no name and no output arguments are specified,
+%              the default name, 'export_fig_out', is used. If neither a
+%              file extension nor a format are specified, a ".png" is added
+%              and the figure saved in that format.
+%   -format1, -format2, etc. - strings containing the extensions of the
+%                              file formats the figure is to be saved as.
+%                              Valid options are: '-pdf', '-eps', '-png',
+%                              '-tif', '-jpg' and '-bmp'. All combinations
+%                              of formats are valid.
+%   -nocrop - option indicating that the borders of the output are not to
+%             be cropped.
+%   -transparent - option indicating that the figure background is to be
+%                  made transparent (png, pdf and eps output only).
+%   -m<val> - option where val indicates the factor to magnify the
+%             on-screen figure pixel dimensions by when generating bitmap
+%             outputs. Default: '-m1'.
+%   -r<val> - option val indicates the resolution (in pixels per inch) to
+%             export bitmap and vector outputs at, keeping the dimensions
+%             of the on-screen figure. Default: '-r864' (for vector output
+%             only). Note that the -m option overides the -r option for
+%             bitmap outputs only.
+%   -native - option indicating that the output resolution (when outputting
+%             a bitmap format) should be such that the vertical resolution
+%             of the first suitable image found in the figure is at the
+%             native resolution of that image. To specify a particular
+%             image to use, give it the tag 'export_fig_native'. Notes:
+%             This overrides any value set with the -m and -r options. It
+%             also assumes that the image is displayed front-to-parallel
+%             with the screen. The output resolution is approximate and
+%             should not be relied upon. Anti-aliasing can have adverse
+%             effects on image quality (disable with the -a1 option).
+%   -a1, -a2, -a3, -a4 - option indicating the amount of anti-aliasing to
+%                        use for bitmap outputs. '-a1' means no anti-
+%                        aliasing; '-a4' is the maximum amount (default).
+%   -<renderer> - option to force a particular renderer (painters, opengl
+%                 or zbuffer) to be used over the default: opengl for
+%                 bitmaps; painters for vector formats.
+%   -<colorspace> - option indicating which colorspace color figures should
+%                   be saved in: RGB (default), CMYK or gray. CMYK is only
+%                   supported in pdf, eps and tiff output.
+%   -q<val> - option to vary bitmap image quality (in pdf, eps and jpg
+%             files only).  Larger val, in the range 0-100, gives higher
+%             quality/lower compression. val > 100 gives lossless
+%             compression. Default: '-q95' for jpg, ghostscript prepress
+%             default for pdf & eps. Note: lossless compression can
+%             sometimes give a smaller file size than the default lossy
+%             compression, depending on the type of images.
+%   -p<val> - option to add a border of width val to eps and pdf files,
+%             where val is in units of the intermediate eps file. Default:
+%             0 (i.e. no padding).
+%   -append - option indicating that if the file (pdfs only) already
+%             exists, the figure is to be appended as a new page, instead
+%             of being overwritten (default).
+%   -bookmark - option to indicate that a bookmark with the name of the
+%               figure is to be created in the output file (pdf only).
+%   handle - The handle of the figure, axes or uipanels (can be an array of
+%            handles, but the objects must be in the same figure) to be
+%            saved. Default: gcf.
+%
+%OUT:
+%   im - MxNxC uint8 image array of the figure.
+%   alpha - MxN single array of alphamatte values in range [0,1], for the
+%           case when the background is transparent.
+%
+%   Some helpful examples and tips can be found at:
+%      https://github.com/ojwoodford/export_fig
+%
+%   See also PRINT, SAVEAS.
+
+% Copyright (C) Oliver Woodford 2008-2014
+
+% The idea of using ghostscript is inspired by Peder Axensten's SAVEFIG
+% (fex id: 10889) which is itself inspired by EPS2PDF (fex id: 5782).
+% The idea for using pdftops came from the MATLAB newsgroup (id: 168171).
+% The idea of editing the EPS file to change line styles comes from Jiro
+% Doke's FIXPSLINESTYLE (fex id: 17928).
+% The idea of changing dash length with line width came from comments on
+% fex id: 5743, but the implementation is mine :)
+% The idea of anti-aliasing bitmaps came from Anders Brun's MYAA (fex id:
+% 20979).
+% The idea of appending figures in pdfs came from Matt C in comments on the
+% FEX (id: 23629)
+
+% Thanks to Roland Martin for pointing out the colour MATLAB
+% bug/feature with colorbar axes and transparent backgrounds.
+% Thanks also to Andrew Matthews for describing a bug to do with the figure
+% size changing in -nodisplay mode. I couldn't reproduce it, but included a
+% fix anyway.
+% Thanks to Tammy Threadgill for reporting a bug where an axes is not
+% isolated from gui objects.
+
+% 23/02/12: Ensure that axes limits don't change during printing
+% 14/03/12: Fix bug in fixing the axes limits (thanks to Tobias Lamour for
+%           reporting it).
+% 02/05/12: Incorporate patch of Petr Nechaev (many thanks), enabling
+%           bookmarking of figures in pdf files.
+% 09/05/12: Incorporate patch of Arcelia Arrieta (many thanks), to keep
+%           tick marks fixed.
+% 12/12/12: Add support for isolating uipanels. Thanks to michael for
+%           suggesting it.
+% 25/09/13: Add support for changing resolution in vector formats. Thanks
+%           to Jan Jaap Meijer for suggesting it.
+% 07/05/14: Add support for '~' at start of path. Thanks to Sally Warner
+%           for suggesting it.
+
+function [im, alpha] = export_fig(varargin)
+% Make sure the figure is rendered correctly _now_ so that properties like
+% axes limits are up-to-date.
+drawnow;
+% Parse the input arguments
+[fig, options] = parse_args(nargout, varargin{:});
+% Isolate the subplot, if it is one
+cls = all(ismember(get(fig, 'Type'), {'axes', 'uipanel'}));
+if cls
+    % Given handles of one or more axes, so isolate them from the rest
+    fig = isolate_axes(fig);
+else
+    % Check we have a figure
+    if ~isequal(get(fig, 'Type'), 'figure');
+        error('Handle must be that of a figure, axes or uipanel');
+    end
+    % Get the old InvertHardcopy mode
+    old_mode = get(fig, 'InvertHardcopy');
+end
+% Hack the font units where necessary (due to a font rendering bug in
+% print?). This may not work perfectly in all cases. Also it can change the
+% figure layout if reverted, so use a copy.
+magnify = options.magnify * options.aa_factor;
+if isbitmap(options) && magnify ~= 1
+    fontu = findobj(fig, 'FontUnits', 'normalized');
+    if ~isempty(fontu)
+        % Some normalized font units found
+        if ~cls
+            fig = copyfig(fig);
+            set(fig, 'Visible', 'off');
+            fontu = findobj(fig, 'FontUnits', 'normalized');
+            cls = true;
+        end
+        set(fontu, 'FontUnits', 'points');
+    end
+end
+% MATLAB "feature": axes limits and tick marks can change when printing
+Hlims = findall(fig, 'Type', 'axes');
+if ~cls
+    % Record the old axes limit and tick modes
+    Xlims = make_cell(get(Hlims, 'XLimMode'));
+    Ylims = make_cell(get(Hlims, 'YLimMode'));
+    Zlims = make_cell(get(Hlims, 'ZLimMode'));
+    Xtick = make_cell(get(Hlims, 'XTickMode'));
+    Ytick = make_cell(get(Hlims, 'YTickMode'));
+    Ztick = make_cell(get(Hlims, 'ZTickMode'));
+end
+% Set all axes limit and tick modes to manual, so the limits and ticks can't change
+set(Hlims, 'XLimMode', 'manual', 'YLimMode', 'manual', 'ZLimMode', 'manual');
+set_tick_mode(Hlims, 'X');
+set_tick_mode(Hlims, 'Y');
+set_tick_mode(Hlims, 'Z');
+% Set to print exactly what is there
+set(fig, 'InvertHardcopy', 'off');
+% Set the renderer
+switch options.renderer
+    case 1
+        renderer = '-opengl';
+    case 2
+        renderer = '-zbuffer';
+    case 3
+        renderer = '-painters';
+    otherwise
+        renderer = '-opengl'; % Default for bitmaps
+end
+% Do the bitmap formats first
+if isbitmap(options)
+    % Get the background colour
+    if options.transparent && (options.png || options.alpha)
+        % Get out an alpha channel
+        % MATLAB "feature": black colorbar axes can change to white and vice versa!
+        hCB = findobj(fig, 'Type', 'axes', 'Tag', 'Colorbar');
+        if isempty(hCB)
+            yCol = [];
+            xCol = [];
+        else
+            yCol = get(hCB, 'YColor');
+            xCol = get(hCB, 'XColor');
+            if iscell(yCol)
+                yCol = cell2mat(yCol);
+                xCol = cell2mat(xCol);
+            end
+            yCol = sum(yCol, 2);
+            xCol = sum(xCol, 2);
+        end
+        % MATLAB "feature": apparently figure size can change when changing
+        % colour in -nodisplay mode
+        pos = get(fig, 'Position');
+        % Set the background colour to black, and set size in case it was
+        % changed internally
+        tcol = get(fig, 'Color');
+        set(fig, 'Color', 'k', 'Position', pos);
+        % Correct the colorbar axes colours
+        set(hCB(yCol==0), 'YColor', [0 0 0]);
+        set(hCB(xCol==0), 'XColor', [0 0 0]);
+        % Print large version to array
+        B = print2array(fig, magnify, renderer);
+        % Downscale the image
+        B = downsize(single(B), options.aa_factor);
+        % Set background to white (and set size)
+        set(fig, 'Color', 'w', 'Position', pos);
+        % Correct the colorbar axes colours
+        set(hCB(yCol==3), 'YColor', [1 1 1]);
+        set(hCB(xCol==3), 'XColor', [1 1 1]);
+        % Print large version to array
+        A = print2array(fig, magnify, renderer);
+        % Downscale the image
+        A = downsize(single(A), options.aa_factor);
+        % Set the background colour (and size) back to normal
+        set(fig, 'Color', tcol, 'Position', pos);
+        % Compute the alpha map
+        alpha = round(sum(B - A, 3)) / (255 * 3) + 1;
+        A = alpha;
+        A(A==0) = 1;
+        A = B ./ A(:,:,[1 1 1]);
+        clear B
+        % Convert to greyscale
+        if options.colourspace == 2
+            A = rgb2grey(A);
+        end
+        A = uint8(A);
+        % Crop the background
+        if options.crop
+            [alpha, v] = crop_borders(alpha, 0, 1);
+            A = A(v(1):v(2),v(3):v(4),:);
+        end
+        if options.png
+            % Compute the resolution
+            res = options.magnify * get(0, 'ScreenPixelsPerInch') / 25.4e-3;
+            % Save the png
+            imwrite(A, [options.name '.png'], 'Alpha', double(alpha), 'ResolutionUnit', 'meter', 'XResolution', res, 'YResolution', res);
+            % Clear the png bit
+            options.png = false;
+        end
+        % Return only one channel for greyscale
+        if isbitmap(options)
+            A = check_greyscale(A);
+        end
+        if options.alpha
+            % Store the image
+            im = A;
+            % Clear the alpha bit
+            options.alpha = false;
+        end
+        % Get the non-alpha image
+        if isbitmap(options)
+            alph = alpha(:,:,ones(1, size(A, 3)));
+            A = uint8(single(A) .* alph + 255 * (1 - alph));
+            clear alph
+        end
+        if options.im
+            % Store the new image
+            im = A;
+        end
+    else
+        % Print large version to array
+        if options.transparent
+            % MATLAB "feature": apparently figure size can change when changing
+            % colour in -nodisplay mode
+            pos = get(fig, 'Position');
+            tcol = get(fig, 'Color');
+            set(fig, 'Color', 'w', 'Position', pos);
+            A = print2array(fig, magnify, renderer);
+            set(fig, 'Color', tcol, 'Position', pos);
+            tcol = 255;
+        else
+            [A, tcol] = print2array(fig, magnify, renderer);
+        end
+        % Crop the background
+        if options.crop
+            A = crop_borders(A, tcol, 1);
+        end
+        % Downscale the image
+        A = downsize(A, options.aa_factor);
+        if options.colourspace == 2
+            % Convert to greyscale
+            A = rgb2grey(A);
+        else
+            % Return only one channel for greyscale
+            A = check_greyscale(A);
+        end
+        % Outputs
+        if options.im
+            im = A;
+        end
+        if options.alpha
+            im = A;
+            alpha = zeros(size(A, 1), size(A, 2), 'single');
+        end
+    end
+    % Save the images
+    if options.png
+        res = options.magnify * get(0, 'ScreenPixelsPerInch') / 25.4e-3;
+        imwrite(A, [options.name '.png'], 'ResolutionUnit', 'meter', 'XResolution', res, 'YResolution', res);
+    end
+    if options.bmp
+        imwrite(A, [options.name '.bmp']);
+    end
+    % Save jpeg with given quality
+    if options.jpg
+        quality = options.quality;
+        if isempty(quality)
+            quality = 95;
+        end
+        if quality > 100
+            imwrite(A, [options.name '.jpg'], 'Mode', 'lossless');
+        else
+            imwrite(A, [options.name '.jpg'], 'Quality', quality);
+        end
+    end
+    % Save tif images in cmyk if wanted (and possible)
+    if options.tif
+        if options.colourspace == 1 && size(A, 3) == 3
+            A = double(255 - A);
+            K = min(A, [], 3);
+            K_ = 255 ./ max(255 - K, 1);
+            C = (A(:,:,1) - K) .* K_;
+            M = (A(:,:,2) - K) .* K_;
+            Y = (A(:,:,3) - K) .* K_;
+            A = uint8(cat(3, C, M, Y, K));
+            clear C M Y K K_
+        end
+        append_mode = {'overwrite', 'append'};
+        imwrite(A, [options.name '.tif'], 'Resolution', options.magnify*get(0, 'ScreenPixelsPerInch'), 'WriteMode', append_mode{options.append+1});
+    end
+end
+% Now do the vector formats
+if isvector(options)
+    % Set the default renderer to painters
+    if ~options.renderer
+        renderer = '-painters';
+    end
+    % Generate some filenames
+    tmp_nam = [tempname '.eps'];
+    if options.pdf
+        pdf_nam = [options.name '.pdf'];
+    else
+        pdf_nam = [tempname '.pdf'];
+    end
+    % Generate the options for print
+    p2eArgs = {renderer, sprintf('-r%d', options.resolution)};
+    if options.colourspace == 1
+        p2eArgs = [p2eArgs {'-cmyk'}];
+    end
+    if ~options.crop
+        p2eArgs = [p2eArgs {'-loose'}];
+    end
+    try
+        % Generate an eps
+        print2eps(tmp_nam, fig, options.bb_padding, p2eArgs{:});
+        % Remove the background, if desired
+        if options.transparent && ~isequal(get(fig, 'Color'), 'none')
+            eps_remove_background(tmp_nam, 1 + using_hg2(fig));
+        end
+        % Add a bookmark to the PDF if desired
+        if options.bookmark
+            fig_nam = get(fig, 'Name');
+            if isempty(fig_nam)
+                warning('export_fig:EmptyBookmark', 'Bookmark requested for figure with no name. Bookmark will be empty.');
+            end
+            add_bookmark(tmp_nam, fig_nam);
+        end
+        % Generate a pdf
+        eps2pdf(tmp_nam, pdf_nam, 1, options.append, options.colourspace==2, options.quality);
+    catch ex
+        % Delete the eps
+        delete(tmp_nam);
+        rethrow(ex);
+    end
+    % Delete the eps
+    delete(tmp_nam);
+    if options.eps
+        try
+            % Generate an eps from the pdf
+            pdf2eps(pdf_nam, [options.name '.eps']);
+        catch ex
+            if ~options.pdf
+                % Delete the pdf
+                delete(pdf_nam);
+            end
+            rethrow(ex);
+        end
+        if ~options.pdf
+            % Delete the pdf
+            delete(pdf_nam);
+        end
+    end
+end
+if cls
+    % Close the created figure
+    close(fig);
+else
+    % Reset the hardcopy mode
+    set(fig, 'InvertHardcopy', old_mode);
+    % Reset the axes limit and tick modes
+    for a = 1:numel(Hlims)
+        set(Hlims(a), 'XLimMode', Xlims{a}, 'YLimMode', Ylims{a}, 'ZLimMode', Zlims{a}, 'XTickMode', Xtick{a}, 'YTickMode', Ytick{a}, 'ZTickMode', Ztick{a});
+    end
+end
+end
+
+function [fig, options] = parse_args(nout, varargin)
+% Parse the input arguments
+% Set the defaults
+fig = get(0, 'CurrentFigure');
+options = struct('name', 'export_fig_out', ...
+                 'crop', true, ...
+                 'transparent', false, ...
+                 'renderer', 0, ... % 0: default, 1: OpenGL, 2: ZBuffer, 3: Painters
+                 'pdf', false, ...
+                 'eps', false, ...
+                 'png', false, ...
+                 'tif', false, ...
+                 'jpg', false, ...
+                 'bmp', false, ...
+                 'colourspace', 0, ... % 0: RGB/gray, 1: CMYK, 2: gray
+                 'append', false, ...
+                 'im', nout == 1, ...
+                 'alpha', nout == 2, ...
+                 'aa_factor', 0, ...
+                 'bb_padding', 0, ...
+                 'magnify', [], ...
+                 'resolution', [], ...
+                 'bookmark', false, ...
+                 'quality', []);
+native = false; % Set resolution to native of an image
+
+% Go through the other arguments
+for a = 1:nargin-1
+    if all(ishandle(varargin{a}))
+        fig = varargin{a};
+    elseif ischar(varargin{a}) && ~isempty(varargin{a})
+        if varargin{a}(1) == '-'
+            switch lower(varargin{a}(2:end))
+                case 'nocrop'
+                    options.crop = false;
+                case {'trans', 'transparent'}
+                    options.transparent = true;
+                case 'opengl'
+                    options.renderer = 1;
+                case 'zbuffer'
+                    options.renderer = 2;
+                case 'painters'
+                    options.renderer = 3;
+                case 'pdf'
+                    options.pdf = true;
+                case 'eps'
+                    options.eps = true;
+                case 'png'
+                    options.png = true;
+                case {'tif', 'tiff'}
+                    options.tif = true;
+                case {'jpg', 'jpeg'}
+                    options.jpg = true;
+                case 'bmp'
+                    options.bmp = true;
+                case 'rgb'
+                    options.colourspace = 0;
+                case 'cmyk'
+                    options.colourspace = 1;
+                case {'gray', 'grey'}
+                    options.colourspace = 2;
+                case {'a1', 'a2', 'a3', 'a4'}
+                    options.aa_factor = str2double(varargin{a}(3));
+                case 'append'
+                    options.append = true;
+                case 'bookmark'
+                    options.bookmark = true;
+                case 'native'
+                    native = true;
+                otherwise
+                    val = str2double(regexp(varargin{a}, '(?<=-(m|M|r|R|q|Q|p|P))-?\d*.?\d+', 'match'));
+                    if ~isscalar(val)
+                        error('option %s not recognised', varargin{a});
+                    end
+                    switch lower(varargin{a}(2))
+                        case 'm'
+                            options.magnify = val;
+                        case 'r'
+                            options.resolution = val;
+                        case 'q'
+                            options.quality = max(val, 0);
+                        case 'p'
+                            options.bb_padding = val;
+                    end
+            end
+        else
+            [p, options.name, ext] = fileparts(varargin{a});
+            if ~isempty(p)
+                options.name = [p filesep options.name];
+            end
+            switch lower(ext)
+                case {'.tif', '.tiff'}
+                    options.tif = true;
+                case {'.jpg', '.jpeg'}
+                    options.jpg = true;
+                case '.png'
+                    options.png = true;
+                case '.bmp'
+                    options.bmp = true;
+                case '.eps'
+                    options.eps = true;
+                case '.pdf'
+                    options.pdf = true;
+                otherwise
+                    options.name = varargin{a};
+            end
+        end
+    end
+end
+
+% Set default anti-aliasing now we know the renderer
+if options.aa_factor == 0
+    options.aa_factor = 1 + 2 * (~(using_hg2(fig) && strcmp(get(ancestor(fig, 'figure'), 'GraphicsSmoothing'), 'on')) | (options.renderer == 3));
+end
+
+% Convert user dir '~' to full path
+if numel(options.name) > 2 && options.name(1) == '~' && (options.name(2) == '/' || options.name(2) == '\')
+    options.name = fullfile(char(java.lang.System.getProperty('user.home')), options.name(2:end));
+end
+
+% Compute the magnification and resolution
+if isempty(options.magnify)
+    if isempty(options.resolution)
+        options.magnify = 1;
+        options.resolution = 864;
+    else
+        options.magnify = options.resolution ./ get(0, 'ScreenPixelsPerInch');
+    end
+elseif isempty(options.resolution)
+    options.resolution = 864;
+end  
+
+% Check we have a figure handle
+if isempty(fig)
+    error('No figure found');
+end
+
+% Set the default format
+if ~isvector(options) && ~isbitmap(options)
+    options.png = true;
+end
+
+% Check whether transparent background is wanted (old way)
+if isequal(get(ancestor(fig(1), 'figure'), 'Color'), 'none')
+    options.transparent = true;
+end
+
+% If requested, set the resolution to the native vertical resolution of the
+% first suitable image found
+if native && isbitmap(options)
+    % Find a suitable image
+    list = findobj(fig, 'Type', 'image', 'Tag', 'export_fig_native');
+    if isempty(list)
+        list = findobj(fig, 'Type', 'image', 'Visible', 'on');
+    end
+    for hIm = list(:)'
+        % Check height is >= 2
+        height = size(get(hIm, 'CData'), 1);
+        if height < 2
+            continue
+        end
+        % Account for the image filling only part of the axes, or vice
+        % versa
+        yl = get(hIm, 'YData');
+        if isscalar(yl)
+            yl = [yl(1)-0.5 yl(1)+height+0.5];
+        else
+            if ~diff(yl)
+                continue
+            end
+            yl = yl + [-0.5 0.5] * (diff(yl) / (height - 1));
+        end
+        hAx = get(hIm, 'Parent');
+        yl2 = get(hAx, 'YLim');
+        % Find the pixel height of the axes
+        oldUnits = get(hAx, 'Units');
+        set(hAx, 'Units', 'pixels');
+        pos = get(hAx, 'Position');
+        set(hAx, 'Units', oldUnits);
+        if ~pos(4)
+            continue
+        end
+        % Found a suitable image
+        % Account for stretch-to-fill being disabled
+        pbar = get(hAx, 'PlotBoxAspectRatio');
+        pos = min(pos(4), pbar(2)*pos(3)/pbar(1));
+        % Set the magnification to give native resolution
+        options.magnify = (height * diff(yl2)) / (pos * diff(yl));
+        break
+    end
+end
+end
+
+function A = downsize(A, factor)
+% Downsample an image
+if factor == 1
+    % Nothing to do
+    return
+end
+try
+    % Faster, but requires image processing toolbox
+    A = imresize(A, 1/factor, 'bilinear');
+catch
+    % No image processing toolbox - resize manually
+    % Lowpass filter - use Gaussian as is separable, so faster
+    % Compute the 1d Gaussian filter
+    filt = (-factor-1:factor+1) / (factor * 0.6);
+    filt = exp(-filt .* filt);
+    % Normalize the filter
+    filt = single(filt / sum(filt));
+    % Filter the image
+    padding = floor(numel(filt) / 2);
+    for a = 1:size(A, 3)
+        A(:,:,a) = conv2(filt, filt', single(A([ones(1, padding) 1:end repmat(end, 1, padding)],[ones(1, padding) 1:end repmat(end, 1, padding)],a)), 'valid');
+    end
+    % Subsample
+    A = A(1+floor(mod(end-1, factor)/2):factor:end,1+floor(mod(end-1, factor)/2):factor:end,:);
+end
+end
+
+function A = rgb2grey(A)
+A = cast(reshape(reshape(single(A), [], 3) * single([0.299; 0.587; 0.114]), size(A, 1), size(A, 2)), class(A));
+end
+
+function A = check_greyscale(A)
+% Check if the image is greyscale
+if size(A, 3) == 3 && ...
+        all(reshape(A(:,:,1) == A(:,:,2), [], 1)) && ...
+        all(reshape(A(:,:,2) == A(:,:,3), [], 1))
+    A = A(:,:,1); % Save only one channel for 8-bit output
+end
+end
+
+function eps_remove_background(fname, count)
+% Remove the background of an eps file
+% Open the file
+fh = fopen(fname, 'r+');
+if fh == -1
+    error('Not able to open file %s.', fname);
+end
+% Read the file line by line
+while count
+    % Get the next line
+    l = fgets(fh);
+    if isequal(l, -1)
+        break; % Quit, no rectangle found
+    end
+    % Check if the line contains the background rectangle
+    if isequal(regexp(l, ' *0 +0 +\d+ +\d+ +r[fe] *[\n\r]+', 'start'), 1)
+        % Set the line to whitespace and quit
+        l(1:regexp(l, '[\n\r]', 'start', 'once')-1) = ' ';
+        fseek(fh, -numel(l), 0);
+        fprintf(fh, l);
+        % Reduce the count
+        count = count - 1;
+    end
+end
+% Close the file
+fclose(fh);
+end
+
+function b = isvector(options)
+b = options.pdf || options.eps;
+end
+
+function b = isbitmap(options)
+b = options.png || options.tif || options.jpg || options.bmp || options.im || options.alpha;
+end
+
+% Helper function
+function A = make_cell(A)
+if ~iscell(A)
+    A = {A};
+end
+end
+
+function add_bookmark(fname, bookmark_text)
+% Adds a bookmark to the temporary EPS file after %%EndPageSetup
+% Read in the file
+fh = fopen(fname, 'r');
+if fh == -1
+    error('File %s not found.', fname);
+end
+try
+    fstrm = fread(fh, '*char')';
+catch ex
+    fclose(fh);
+    rethrow(ex);
+end
+fclose(fh);
+
+% Include standard pdfmark prolog to maximize compatibility
+fstrm = strrep(fstrm, '%%BeginProlog', sprintf('%%%%BeginProlog\n/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse'));
+% Add page bookmark
+fstrm = strrep(fstrm, '%%EndPageSetup', sprintf('%%%%EndPageSetup\n[ /Title (%s) /OUT pdfmark',bookmark_text));
+
+% Write out the updated file
+fh = fopen(fname, 'w');
+if fh == -1
+    error('Unable to open %s for writing.', fname);
+end
+try
+    fwrite(fh, fstrm, 'char*1');
+catch ex
+    fclose(fh);
+    rethrow(ex);
+end
+fclose(fh);
+end
+
+function set_tick_mode(Hlims, ax)
+% Set the tick mode of linear axes to manual
+% Leave log axes alone as these are tricky
+M = get(Hlims, [ax 'Scale']);
+if ~iscell(M)
+    M = {M};
+end
+M = cellfun(@(c) strcmp(c, 'linear'), M);
+set(Hlims(M), [ax 'TickMode'], 'manual');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/fix_lines.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/fix_lines.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/fix_lines.m	(revision 21239)
@@ -0,0 +1,143 @@
+%FIX_LINES  Improves the line style of eps files generated by print
+%
+% Examples:
+%   fix_lines fname
+%   fix_lines fname fname2
+%   fstrm_out = fixlines(fstrm_in)
+%
+% This function improves the style of lines in eps files generated by
+% MATLAB's print function, making them more similar to those seen on
+% screen. Grid lines are also changed from a dashed style to a dotted
+% style, for greater differentiation from dashed lines.
+% 
+% The function also places embedded fonts after the postscript header, in
+% versions of MATLAB which place the fonts first (R2006b and earlier), in
+% order to allow programs such as Ghostscript to find the bounding box
+% information.
+%
+%IN:
+%   fname - Name or path of source eps file.
+%   fname2 - Name or path of destination eps file. Default: same as fname.
+%   fstrm_in - File contents of a MATLAB-generated eps file.
+%
+%OUT:
+%   fstrm_out - Contents of the eps file with line styles fixed.
+
+% Copyright: (C) Oliver Woodford, 2008-2014
+
+% The idea of editing the EPS file to change line styles comes from Jiro
+% Doke's FIXPSLINESTYLE (fex id: 17928)
+% The idea of changing dash length with line width came from comments on
+% fex id: 5743, but the implementation is mine :)
+
+% Thank you to Sylvain Favrot for bringing the embedded font/bounding box
+% interaction in older versions of MATLAB to my attention.
+% Thank you to D Ko for bringing an error with eps files with tiff previews
+% to my attention.
+% Thank you to Laurence K for suggesting the check to see if the file was
+% opened.
+
+function fstrm = fix_lines(fstrm, fname2)
+
+if nargout == 0 || nargin > 1
+    if nargin < 2
+        % Overwrite the input file
+        fname2 = fstrm;
+    end
+    % Read in the file
+    fstrm = read_write_entire_textfile(fstrm);
+end
+
+% Move any embedded fonts after the postscript header
+if strcmp(fstrm(1:15), '%!PS-AdobeFont-')
+    % Find the start and end of the header
+    ind = regexp(fstrm, '[\n\r]%!PS-Adobe-');
+    [ind2, ind2] = regexp(fstrm, '[\n\r]%%EndComments[\n\r]+');
+    % Put the header first
+    if ~isempty(ind) && ~isempty(ind2) && ind(1) < ind2(1)
+        fstrm = fstrm([ind(1)+1:ind2(1) 1:ind(1) ind2(1)+1:end]);
+    end
+end
+
+% Make sure all line width commands come before the line style definitions,
+% so that dash lengths can be based on the correct widths
+% Find all line style sections
+ind = [regexp(fstrm, '[\n\r]SO[\n\r]'),... % This needs to be here even though it doesn't have dots/dashes!
+       regexp(fstrm, '[\n\r]DO[\n\r]'),...
+       regexp(fstrm, '[\n\r]DA[\n\r]'),...
+       regexp(fstrm, '[\n\r]DD[\n\r]')];
+ind = sort(ind);
+% Find line width commands
+[ind2, ind3] = regexp(fstrm, '[\n\r]\d* w[\n\r]');
+% Go through each line style section and swap with any line width commands
+% near by
+b = 1;
+m = numel(ind);
+n = numel(ind2);
+for a = 1:m
+    % Go forwards width commands until we pass the current line style
+    while b <= n && ind2(b) < ind(a)
+        b = b + 1;
+    end
+    if b > n
+        % No more width commands
+        break;
+    end
+    % Check we haven't gone past another line style (including SO!)
+    if a < m && ind2(b) > ind(a+1)
+        continue;
+    end
+    % Are the commands close enough to be confident we can swap them?
+    if (ind2(b) - ind(a)) > 8
+        continue;
+    end
+    % Move the line style command below the line width command
+    fstrm(ind(a)+1:ind3(b)) = [fstrm(ind(a)+4:ind3(b)) fstrm(ind(a)+1:ind(a)+3)];
+    b = b + 1;
+end
+
+% Find any grid line definitions and change to GR format
+% Find the DO sections again as they may have moved
+ind = int32(regexp(fstrm, '[\n\r]DO[\n\r]'));
+if ~isempty(ind)
+    % Find all occurrences of what are believed to be axes and grid lines
+    ind2 = int32(regexp(fstrm, '[\n\r] *\d* *\d* *mt *\d* *\d* *L[\n\r]'));
+    if ~isempty(ind2)
+        % Now see which DO sections come just before axes and grid lines
+        ind2 = repmat(ind2', [1 numel(ind)]) - repmat(ind, [numel(ind2) 1]);
+        ind2 = any(ind2 > 0 & ind2 < 12); % 12 chars seems about right
+        ind = ind(ind2);
+        % Change any regions we believe to be grid lines to GR
+        fstrm(ind+1) = 'G';
+        fstrm(ind+2) = 'R';
+    end
+end
+
+% Isolate line style definition section
+first_sec = strfind(fstrm, '% line types:');
+[second_sec, remaining] = strtok(fstrm(first_sec+1:end), '/');
+[remaining, remaining] = strtok(remaining, '%');
+
+% Define the new styles, including the new GR format
+% Dot and dash lengths have two parts: a constant amount plus a line width
+% variable amount. The constant amount comes after dpi2point, and the
+% variable amount comes after currentlinewidth. If you want to change
+% dot/dash lengths for a one particular line style only, edit the numbers
+% in the /DO (dotted lines), /DA (dashed lines), /DD (dot dash lines) and
+% /GR (grid lines) lines for the style you want to change.
+new_style = {'/dom { dpi2point 1 currentlinewidth 0.08 mul add mul mul } bdef',... % Dot length macro based on line width
+             '/dam { dpi2point 2 currentlinewidth 0.04 mul add mul mul } bdef',... % Dash length macro based on line width
+             '/SO { [] 0 setdash 0 setlinecap } bdef',... % Solid lines
+             '/DO { [1 dom 1.2 dom] 0 setdash 0 setlinecap } bdef',... % Dotted lines
+             '/DA { [4 dam 1.5 dam] 0 setdash 0 setlinecap } bdef',... % Dashed lines
+             '/DD { [1 dom 1.2 dom 4 dam 1.2 dom] 0 setdash 0 setlinecap } bdef',... % Dot dash lines
+             '/GR { [0 dpi2point mul 4 dpi2point mul] 0 setdash 1 setlinecap } bdef'}; % Grid lines - dot spacing remains constant
+
+% Construct the output
+fstrm = [fstrm(1:first_sec) second_sec sprintf('%s\r', new_style{:}) remaining];
+
+% Write the output file
+if nargout == 0 || nargin > 1
+    read_write_entire_textfile(fname2, fstrm);
+end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/ghostscript.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/ghostscript.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/ghostscript.m	(revision 21239)
@@ -0,0 +1,158 @@
+%GHOSTSCRIPT  Calls a local GhostScript executable with the input command
+%
+% Example:
+%   [status result] = ghostscript(cmd)
+%
+% Attempts to locate a ghostscript executable, finally asking the user to
+% specify the directory ghostcript was installed into. The resulting path
+% is stored for future reference.
+% 
+% Once found, the executable is called with the input command string.
+%
+% This function requires that you have Ghostscript installed on your
+% system. You can download this from: http://www.ghostscript.com
+%
+% IN:
+%   cmd - Command string to be passed into ghostscript.
+%
+% OUT:
+%   status - 0 iff command ran without problem.
+%   result - Output from ghostscript.
+
+% Copyright: Oliver Woodford, 2009-2013
+
+% Thanks to Jonas Dorn for the fix for the title of the uigetdir window on
+% Mac OS.
+% Thanks to Nathan Childress for the fix to the default location on 64-bit
+% Windows systems.
+% 27/4/11 - Find 64-bit Ghostscript on Windows. Thanks to Paul Durack and
+% Shaun Kline for pointing out the issue
+% 4/5/11 - Thanks to David Chorlian for pointing out an alternative
+% location for gs on linux.
+% 12/12/12 - Add extra executable name on Windows. Thanks to Ratish
+% Punnoose for highlighting the issue.
+% 28/6/13 - Fix error using GS 9.07 in Linux. Many thanks to Jannick
+% Steinbring for proposing the fix.
+% 24/10/13 - Fix error using GS 9.07 in Linux. Many thanks to Johannes
+% for the fix.
+% 23/01/2014 - Add full path to ghostscript.txt in warning. Thanks to Koen
+% Vermeer for raising the issue.
+
+function varargout = ghostscript(cmd)
+% Initialize any required system calls before calling ghostscript
+shell_cmd = '';
+if isunix
+    shell_cmd = 'export LD_LIBRARY_PATH=""; '; % Avoids an error on Linux with GS 9.07
+end
+if ismac
+    shell_cmd = 'export DYLD_LIBRARY_PATH=""; ';  % Avoids an error on Mac with GS 9.07
+end
+% Call ghostscript
+[varargout{1:nargout}] = system(sprintf('%s"%s" %s', shell_cmd, gs_path, cmd));
+end
+
+function path_ = gs_path
+% Return a valid path
+% Start with the currently set path
+path_ = user_string('ghostscript');
+% Check the path works
+if check_gs_path(path_)
+    return
+end
+% Check whether the binary is on the path
+if ispc
+    bin = {'gswin32c.exe', 'gswin64c.exe', 'gs'};
+else
+    bin = {'gs'};
+end
+for a = 1:numel(bin)
+    path_ = bin{a};
+    if check_store_gs_path(path_)
+        return
+    end
+end
+% Search the obvious places
+if ispc
+    default_location = 'C:\Program Files\gs\';
+    dir_list = dir(default_location);
+    if isempty(dir_list)
+        default_location = 'C:\Program Files (x86)\gs\'; % Possible location on 64-bit systems 
+        dir_list = dir(default_location);
+    end
+    executable = {'\bin\gswin32c.exe', '\bin\gswin64c.exe'};
+    ver_num = 0;
+    % If there are multiple versions, use the newest
+    for a = 1:numel(dir_list)
+        ver_num2 = sscanf(dir_list(a).name, 'gs%g');
+        if ~isempty(ver_num2) && ver_num2 > ver_num
+            for b = 1:numel(executable)
+                path2 = [default_location dir_list(a).name executable{b}];
+                if exist(path2, 'file') == 2
+                    path_ = path2;
+                    ver_num = ver_num2;
+                end
+            end
+        end
+    end
+    if check_store_gs_path(path_)
+        return
+    end
+else
+    executable = {'/usr/bin/gs', '/usr/local/bin/gs'};
+    for a = 1:numel(executable)
+        path_ = executable{a};
+        if check_store_gs_path(path_)
+            return
+        end
+    end
+end
+% Ask the user to enter the path
+while 1
+    if strncmp(computer, 'MAC', 3) % Is a Mac
+        % Give separate warning as the uigetdir dialogue box doesn't have a
+        % title
+        uiwait(warndlg('Ghostscript not found. Please locate the program.'))
+    end
+    base = uigetdir('/', 'Ghostcript not found. Please locate the program.');
+    if isequal(base, 0)
+        % User hit cancel or closed window
+        break;
+    end
+    base = [base filesep];
+    bin_dir = {'', ['bin' filesep], ['lib' filesep]};
+    for a = 1:numel(bin_dir)
+        for b = 1:numel(bin)
+            path_ = [base bin_dir{a} bin{b}];
+            if exist(path_, 'file') == 2
+                if check_store_gs_path(path_)
+                    return
+                end
+            end
+        end
+    end
+end
+error('Ghostscript not found. Have you installed it from www.ghostscript.com?');
+end
+
+function good = check_store_gs_path(path_)
+% Check the path is valid
+good = check_gs_path(path_);
+if ~good
+    return
+end
+% Update the current default path to the path found
+if ~user_string('ghostscript', path_)
+    warning('Path to ghostscript installation could not be saved. Enter it manually in %s.', fullfile(fileparts(which('user_string.m')), '.ignore', 'ghostscript.txt'));
+    return
+end
+end
+
+function good = check_gs_path(path_)
+% Check the path is valid
+shell_cmd = '';
+if ismac
+    shell_cmd = 'export DYLD_LIBRARY_PATH=""; ';  % Avoids an error on Mac with GS 9.07
+end
+[good, message] = system(sprintf('%s"%s" -h', shell_cmd, path_));
+good = good == 0;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/im2gif.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/im2gif.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/im2gif.m	(revision 21239)
@@ -0,0 +1,186 @@
+%IM2GIF Convert a multiframe image to an animated GIF file
+%
+% Examples:
+%   im2gif infile
+%   im2gif infile outfile
+%   im2gif(A, outfile)
+%   im2gif(..., '-nocrop')
+%   im2gif(..., '-nodither')
+%   im2gif(..., '-ncolors', n)
+%   im2gif(..., '-loops', n)
+%   im2gif(..., '-delay', n) 
+%   
+% This function converts a multiframe image to an animated GIF.
+%
+% To create an animation from a series of figures, export to a multiframe
+% TIFF file using export_fig, then convert to a GIF, as follows:
+%
+%    for a = 2 .^ (3:6)
+%       peaks(a);
+%       export_fig test.tif -nocrop -append
+%    end
+%    im2gif('test.tif', '-delay', 0.5);
+%
+%IN:
+%   infile - string containing the name of the input image.
+%   outfile - string containing the name of the output image (must have the
+%             .gif extension). Default: infile, with .gif extension.
+%   A - HxWxCxN array of input images, stacked along fourth dimension, to
+%       be converted to gif.
+%   -nocrop - option indicating that the borders of the output are not to
+%             be cropped.
+%   -nodither - option indicating that dithering is not to be used when
+%               converting the image.
+%   -ncolors - option pair, the value of which indicates the maximum number
+%              of colors the GIF can have. This can also be a quantization
+%              tolerance, between 0 and 1. Default/maximum: 256.
+%   -loops - option pair, the value of which gives the number of times the
+%            animation is to be looped. Default: 65535.
+%   -delay - option pair, the value of which gives the time, in seconds,
+%            between frames. Default: 1/15.
+
+% Copyright (C) Oliver Woodford 2011
+
+function im2gif(A, varargin)
+
+% Parse the input arguments
+[A, options] = parse_args(A, varargin{:});
+
+if options.crop ~= 0
+    % Crop
+    A = crop_borders(A, A(ceil(end/2),1,:,1));
+end
+
+% Convert to indexed image
+[h, w, c, n] = size(A);
+A = reshape(permute(A, [1 2 4 3]), h, w*n, c);
+map = unique(reshape(A, h*w*n, c), 'rows');
+if size(map, 1) > 256
+    dither_str = {'dither', 'nodither'};
+    dither_str = dither_str{1+(options.dither==0)};
+    if options.ncolors <= 1
+        [B, map] = rgb2ind(A, options.ncolors, dither_str);
+        if size(map, 1) > 256
+            [B, map] = rgb2ind(A, 256, dither_str);
+        end
+    else
+        [B, map] = rgb2ind(A, min(round(options.ncolors), 256), dither_str);
+    end
+else
+    if max(map(:)) > 1
+        map = double(map) / 255;
+        A = double(A) / 255;
+    end
+    B = rgb2ind(im2double(A), map);
+end
+B = reshape(B, h, w, 1, n);
+
+% Bug fix to rgb2ind
+map(B(1)+1,:) = im2double(A(1,1,:));
+
+% Save as a gif
+imwrite(B, map, options.outfile, 'LoopCount', round(options.loops(1)), 'DelayTime', options.delay);
+end
+
+%% Parse the input arguments
+function [A, options] = parse_args(A, varargin)
+% Set the defaults
+options = struct('outfile', '', ...
+                 'dither', true, ...
+                 'crop', true, ...
+                 'ncolors', 256, ...
+                 'loops', 65535, ...
+                 'delay', 1/15);
+
+% Go through the arguments
+a = 0;
+n = numel(varargin);
+while a < n
+    a = a + 1;
+    if ischar(varargin{a}) && ~isempty(varargin{a})
+        if varargin{a}(1) == '-'
+            opt = lower(varargin{a}(2:end));
+            switch opt
+                case 'nocrop'
+                    options.crop = false;
+                case 'nodither'
+                    options.dither = false;
+                otherwise
+                    if ~isfield(options, opt)
+                        error('Option %s not recognized', varargin{a});
+                    end
+                    a = a + 1;
+                    if ischar(varargin{a}) && ~ischar(options.(opt))
+                        options.(opt) = str2double(varargin{a});
+                    else
+                        options.(opt) = varargin{a};
+                    end
+            end
+        else
+            options.outfile = varargin{a};
+        end
+    end
+end
+
+if isempty(options.outfile)
+    if ~ischar(A)
+        error('No output filename given.');
+    end
+    % Generate the output filename from the input filename
+    [path, outfile] = fileparts(A);
+    options.outfile = fullfile(path, [outfile '.gif']);
+end
+
+if ischar(A)
+    % Read in the image
+    A = imread_rgb(A);
+end
+end
+
+%% Read image to uint8 rgb array
+function [A, alpha] = imread_rgb(name)
+% Get file info
+info = imfinfo(name);
+% Special case formats
+switch lower(info(1).Format)
+    case 'gif'
+        [A, map] = imread(name, 'frames', 'all');
+        if ~isempty(map)
+            map = uint8(map * 256 - 0.5); % Convert to uint8 for storage
+            A = reshape(map(uint32(A)+1,:), [size(A) size(map, 2)]); % Assume indexed from 0
+            A = permute(A, [1 2 5 4 3]);
+        end
+    case {'tif', 'tiff'}
+        A = cell(numel(info), 1);
+        for a = 1:numel(A)
+            [A{a}, map] = imread(name, 'Index', a, 'Info', info);
+            if ~isempty(map)
+                map = uint8(map * 256 - 0.5); % Convert to uint8 for storage
+                A{a} = reshape(map(uint32(A{a})+1,:), [size(A) size(map, 2)]); % Assume indexed from 0
+            end
+            if size(A{a}, 3) == 4
+                % TIFF in CMYK colourspace - convert to RGB
+                if isfloat(A{a})
+                    A{a} = A{a} * 255;
+                else
+                    A{a} = single(A{a});
+                end
+                A{a} = 255 - A{a};
+                A{a}(:,:,4) = A{a}(:,:,4) / 255;
+                A{a} = uint8(A(:,:,1:3) .* A{a}(:,:,[4 4 4]));
+            end
+        end
+        A = cat(4, A{:});
+    otherwise
+        [A, map, alpha] = imread(name);
+        A = A(:,:,:,1); % Keep only first frame of multi-frame files
+        if ~isempty(map)
+            map = uint8(map * 256 - 0.5); % Convert to uint8 for storage
+            A = reshape(map(uint32(A)+1,:), [size(A) size(map, 2)]); % Assume indexed from 0
+        elseif size(A, 3) == 4
+            % Assume 4th channel is an alpha matte
+            alpha = A(:,:,4);
+            A = A(:,:,1:3);
+        end
+end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/isolate_axes.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/isolate_axes.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/isolate_axes.m	(revision 21239)
@@ -0,0 +1,119 @@
+%ISOLATE_AXES Isolate the specified axes in a figure on their own
+%
+% Examples:
+%   fh = isolate_axes(ah)
+%   fh = isolate_axes(ah, vis)
+%
+% This function will create a new figure containing the axes/uipanels
+% specified, and also their associated legends and colorbars. The objects
+% specified must all be in the same figure, but they will generally only be
+% a subset of the objects in the figure.
+%
+% IN:
+%    ah - An array of axes and uipanel handles, which must come from the
+%         same figure.
+%    vis - A boolean indicating whether the new figure should be visible.
+%          Default: false.
+%
+% OUT:
+%    fh - The handle of the created figure.
+
+% Copyright (C) Oliver Woodford 2011-2013
+
+% Thank you to Rosella Blatt for reporting a bug to do with axes in GUIs
+% 16/3/2012 Moved copyfig to its own function. Thanks to Bob Fratantonio
+% for pointing out that the function is also used in export_fig.m.
+% 12/12/12 - Add support for isolating uipanels. Thanks to michael for
+% suggesting it.
+% 08/10/13 - Bug fix to allchildren suggested by Will Grant (many thanks!).
+% 05/12/13 - Bug fix to axes having different units. Thanks to Remington
+% Reid for reporting the issue.
+
+function fh = isolate_axes(ah, vis)
+% Make sure we have an array of handles
+if ~all(ishandle(ah))
+    error('ah must be an array of handles');
+end
+% Check that the handles are all for axes or uipanels, and are all in the same figure
+fh = ancestor(ah(1), 'figure');
+nAx = numel(ah);
+for a = 1:nAx
+    if ~ismember(get(ah(a), 'Type'), {'axes', 'uipanel'})
+        error('All handles must be axes or uipanel handles.');
+    end
+    if ~isequal(ancestor(ah(a), 'figure'), fh)
+        error('Axes must all come from the same figure.');
+    end
+end
+% Tag the objects so we can find them in the copy
+old_tag = get(ah, 'Tag');
+if nAx == 1
+    old_tag = {old_tag};
+end
+set(ah, 'Tag', 'ObjectToCopy');
+% Create a new figure exactly the same as the old one
+fh = copyfig(fh); %copyobj(fh, 0);
+if nargin < 2 || ~vis
+    set(fh, 'Visible', 'off');
+end
+% Reset the object tags
+for a = 1:nAx
+    set(ah(a), 'Tag', old_tag{a});
+end
+% Find the objects to save
+ah = findall(fh, 'Tag', 'ObjectToCopy');
+if numel(ah) ~= nAx
+    close(fh);
+    error('Incorrect number of objects found.');
+end
+% Set the axes tags to what they should be
+for a = 1:nAx
+    set(ah(a), 'Tag', old_tag{a});
+end
+% Keep any legends and colorbars which overlap the subplots
+lh = findall(fh, 'Type', 'axes', '-and', {'Tag', 'legend', '-or', 'Tag', 'Colorbar'});
+nLeg = numel(lh);
+if nLeg > 0
+    set([ah(:); lh(:)], 'Units', 'normalized');
+    ax_pos = get(ah, 'OuterPosition');
+    if nAx > 1
+        ax_pos = cell2mat(ax_pos(:));
+    end
+    ax_pos(:,3:4) = ax_pos(:,3:4) + ax_pos(:,1:2);
+    leg_pos = get(lh, 'OuterPosition');
+    if nLeg > 1;
+        leg_pos = cell2mat(leg_pos);
+    end
+    leg_pos(:,3:4) = leg_pos(:,3:4) + leg_pos(:,1:2);
+    ax_pos = shiftdim(ax_pos, -1);
+    % Overlap test
+    M = bsxfun(@lt, leg_pos(:,1), ax_pos(:,:,3)) & ...
+        bsxfun(@lt, leg_pos(:,2), ax_pos(:,:,4)) & ...
+        bsxfun(@gt, leg_pos(:,3), ax_pos(:,:,1)) & ...
+        bsxfun(@gt, leg_pos(:,4), ax_pos(:,:,2));
+    ah = [ah; lh(any(M, 2))];
+end
+% Get all the objects in the figure
+axs = findall(fh);
+% Delete everything except for the input objects and associated items
+delete(axs(~ismember(axs, [ah; allchildren(ah); allancestors(ah)])));
+end
+
+function ah = allchildren(ah)
+ah = findall(ah);
+if iscell(ah)
+    ah = cell2mat(ah);
+end
+ah = ah(:);
+end
+
+function ph = allancestors(ah)
+ph = [];
+for a = 1:numel(ah)
+    h = get(ah(a), 'parent');
+    while h ~= 0
+        ph = [ph; h];
+        h = get(h, 'parent');
+    end
+end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/license.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/license.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/license.txt	(revision 21239)
@@ -0,0 +1,24 @@
+Copyright (c) 2012, Oliver Woodford
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in
+      the documentation and/or other materials provided with the distribution
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/pdf2eps.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/pdf2eps.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/pdf2eps.m	(revision 21239)
@@ -0,0 +1,51 @@
+%PDF2EPS  Convert a pdf file to eps format using pdftops
+%
+% Examples:
+%   pdf2eps source dest
+%
+% This function converts a pdf file to eps format.
+%
+% This function requires that you have pdftops, from the Xpdf suite of
+% functions, installed on your system. This can be downloaded from:
+% http://www.foolabs.com/xpdf  
+%
+%IN:
+%   source - filename of the source pdf file to convert. The filename is
+%            assumed to already have the extension ".pdf".
+%   dest - filename of the destination eps file. The filename is assumed to
+%          already have the extension ".eps".
+
+% Copyright (C) Oliver Woodford 2009-2010
+
+% Thanks to Aldebaro Klautau for reporting a bug when saving to
+% non-existant directories.
+
+function pdf2eps(source, dest)
+% Construct the options string for pdftops
+options = ['-q -paper match -eps -level2 "' source '" "' dest '"'];
+% Convert to eps using pdftops
+[status, message] = pdftops(options);
+% Check for error
+if status
+    % Report error
+    if isempty(message)
+        error('Unable to generate eps. Check destination directory is writable.');
+    else
+        error(message);
+    end
+end
+% Fix the DSC error created by pdftops
+fid = fopen(dest, 'r+');
+if fid == -1
+    % Cannot open the file
+    return
+end
+fgetl(fid); % Get the first line
+str = fgetl(fid); % Get the second line
+if strcmp(str(1:min(13, end)), '% Produced by')
+    fseek(fid, -numel(str)-1, 'cof');
+    fwrite(fid, '%'); % Turn ' ' into '%'
+end
+fclose(fid);
+end
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/pdftops.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/pdftops.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/pdftops.m	(revision 21239)
@@ -0,0 +1,109 @@
+function varargout = pdftops(cmd)
+%PDFTOPS  Calls a local pdftops executable with the input command
+%
+% Example:
+%   [status result] = pdftops(cmd)
+%
+% Attempts to locate a pdftops executable, finally asking the user to
+% specify the directory pdftops was installed into. The resulting path is
+% stored for future reference.
+% 
+% Once found, the executable is called with the input command string.
+%
+% This function requires that you have pdftops (from the Xpdf package)
+% installed on your system. You can download this from:
+% http://www.foolabs.com/xpdf
+%
+% IN:
+%   cmd - Command string to be passed into pdftops.
+%
+% OUT:
+%   status - 0 iff command ran without problem.
+%   result - Output from pdftops.
+
+% Copyright: Oliver Woodford, 2009-2010
+
+% Thanks to Jonas Dorn for the fix for the title of the uigetdir window on
+% Mac OS.
+% Thanks to Christoph Hertel for pointing out a bug in check_xpdf_path
+% under linux.
+% 23/01/2014 - Add full path to pdftops.txt in warning.
+
+% Call pdftops
+[varargout{1:nargout}] = system(sprintf('"%s" %s', xpdf_path, cmd));
+end
+
+function path_ = xpdf_path
+% Return a valid path
+% Start with the currently set path
+path_ = user_string('pdftops');
+% Check the path works
+if check_xpdf_path(path_)
+    return
+end
+% Check whether the binary is on the path
+if ispc
+    bin = 'pdftops.exe';
+else
+    bin = 'pdftops';
+end
+if check_store_xpdf_path(bin)
+    path_ = bin;
+    return
+end
+% Search the obvious places
+if ispc
+    path_ = 'C:\Program Files\xpdf\pdftops.exe';
+else
+    path_ = '/usr/local/bin/pdftops';
+end
+if check_store_xpdf_path(path_)
+    return
+end
+% Ask the user to enter the path
+while 1
+    if strncmp(computer,'MAC',3) % Is a Mac
+        % Give separate warning as the uigetdir dialogue box doesn't have a
+        % title
+        uiwait(warndlg('Pdftops not found. Please locate the program, or install xpdf-tools from http://users.phg-online.de/tk/MOSXS/.'))
+    end
+    base = uigetdir('/', 'Pdftops not found. Please locate the program.');
+    if isequal(base, 0)
+        % User hit cancel or closed window
+        break;
+    end
+    base = [base filesep];
+    bin_dir = {'', ['bin' filesep], ['lib' filesep]};
+    for a = 1:numel(bin_dir)
+        path_ = [base bin_dir{a} bin];
+        if exist(path_, 'file') == 2
+            break;
+        end
+    end
+    if check_store_xpdf_path(path_)
+        return
+    end
+end
+error('pdftops executable not found.');
+end
+
+function good = check_store_xpdf_path(path_)
+% Check the path is valid
+good = check_xpdf_path(path_);
+if ~good
+    return
+end
+% Update the current default path to the path found
+if ~user_string('pdftops', path_)
+    warning('Path to pdftops executable could not be saved. Enter it manually in %s.', fullfile(fileparts(which('user_string.m')), '.ignore', 'pdftops.txt'));
+    return
+end
+end
+
+function good = check_xpdf_path(path_)
+% Check the path is valid
+[good, message] = system(sprintf('"%s" -h', path_));
+% system returns good = 1 even when the command runs
+% Look for something distinct in the help text
+good = ~isempty(strfind(message, 'PostScript'));
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/print2array.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/print2array.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/print2array.m	(revision 21239)
@@ -0,0 +1,198 @@
+%PRINT2ARRAY  Exports a figure to an image array
+%
+% Examples:
+%   A = print2array
+%   A = print2array(figure_handle)
+%   A = print2array(figure_handle, resolution)
+%   A = print2array(figure_handle, resolution, renderer)
+%   [A bcol] = print2array(...)
+%
+% This function outputs a bitmap image of the given figure, at the desired
+% resolution.
+%
+% If renderer is '-painters' then ghostcript needs to be installed. This
+% can be downloaded from: http://www.ghostscript.com
+%
+% IN:
+%   figure_handle - The handle of the figure to be exported. Default: gcf.
+%   resolution - Resolution of the output, as a factor of screen
+%                resolution. Default: 1.
+%   renderer - string containing the renderer paramater to be passed to
+%              print. Default: '-opengl'.
+%
+% OUT:
+%   A - MxNx3 uint8 image of the figure.
+%   bcol - 1x3 uint8 vector of the background color
+
+% Copyright (C) Oliver Woodford 2008-2012
+
+% 05/09/11: Set EraseModes to normal when using opengl or zbuffer
+%           renderers. Thanks to Pawel Kocieniewski for reporting the
+%           issue.
+% 21/09/11: Bug fix: unit8 -> uint8! Thanks to Tobias Lamour for reporting
+%           the issue.
+% 14/11/11: Bug fix: stop using hardcopy(), as it interfered with figure
+%           size and erasemode settings. Makes it a bit slower, but more
+%           reliable. Thanks to Phil Trinh and Meelis Lootus for reporting
+%           the issues.
+% 09/12/11: Pass font path to ghostscript.
+% 27/01/12: Bug fix affecting painters rendering tall figures. Thanks to
+%           Ken Campbell for reporting it.
+% 03/04/12: Bug fix to median input. Thanks to Andy Matthews for reporting
+%           it.
+% 26/10/12: Set PaperOrientation to portrait. Thanks to Michael Watts for
+%           reporting the issue.
+
+function [A, bcol] = print2array(fig, res, renderer)
+% Generate default input arguments, if needed
+if nargin < 2
+    res = 1;
+    if nargin < 1
+        fig = gcf;
+    end
+end
+% Warn if output is large
+old_mode = get(fig, 'Units');
+set(fig, 'Units', 'pixels');
+px = get(fig, 'Position');
+set(fig, 'Units', old_mode);
+npx = prod(px(3:4)*res)/1e6;
+if npx > 30
+    % 30M pixels or larger!
+    warning('MATLAB:LargeImage', 'print2array generating a %.1fM pixel image. This could be slow and might also cause memory problems.', npx);
+end
+% Retrieve the background colour
+bcol = get(fig, 'Color');
+% Set the resolution parameter
+res_str = ['-r' num2str(ceil(get(0, 'ScreenPixelsPerInch')*res))];
+% Generate temporary file name
+tmp_nam = [tempname '.tif'];
+if nargin > 2 && strcmp(renderer, '-painters')
+    % Print to eps file
+    tmp_eps = [tempname '.eps'];
+    print2eps(tmp_eps, fig, 0, renderer, '-loose');
+    try
+        % Initialize the command to export to tiff using ghostscript
+        cmd_str = ['-dEPSCrop -q -dNOPAUSE -dBATCH ' res_str ' -sDEVICE=tiff24nc'];
+        % Set the font path
+        fp = font_path();
+        if ~isempty(fp)
+            cmd_str = [cmd_str ' -sFONTPATH="' fp '"'];
+        end
+        % Add the filenames
+        cmd_str = [cmd_str ' -sOutputFile="' tmp_nam '" "' tmp_eps '"'];
+        % Execute the ghostscript command
+        ghostscript(cmd_str);
+    catch me
+        % Delete the intermediate file
+        delete(tmp_eps);
+        rethrow(me);
+    end
+    % Delete the intermediate file
+    delete(tmp_eps);
+    % Read in the generated bitmap
+    A = imread(tmp_nam);
+    % Delete the temporary bitmap file
+    delete(tmp_nam);
+    % Set border pixels to the correct colour
+    if isequal(bcol, 'none')
+        bcol = [];
+    elseif isequal(bcol, [1 1 1])
+        bcol = uint8([255 255 255]);
+    else
+        for l = 1:size(A, 2)
+            if ~all(reshape(A(:,l,:) == 255, [], 1))
+                break;
+            end
+        end
+        for r = size(A, 2):-1:l
+            if ~all(reshape(A(:,r,:) == 255, [], 1))
+                break;
+            end
+        end
+        for t = 1:size(A, 1)
+            if ~all(reshape(A(t,:,:) == 255, [], 1))
+                break;
+            end
+        end
+        for b = size(A, 1):-1:t
+            if ~all(reshape(A(b,:,:) == 255, [], 1))
+                break;
+            end
+        end
+        bcol = uint8(median(single([reshape(A(:,[l r],:), [], size(A, 3)); reshape(A([t b],:,:), [], size(A, 3))]), 1));
+        for c = 1:size(A, 3)
+            A(:,[1:l-1, r+1:end],c) = bcol(c);
+            A([1:t-1, b+1:end],:,c) = bcol(c);
+        end
+    end
+else
+    if nargin < 3
+        renderer = '-opengl';
+    end
+    err = false;
+    % Set paper size
+    old_pos_mode = get(fig, 'PaperPositionMode');
+    old_orientation = get(fig, 'PaperOrientation');
+    set(fig, 'PaperPositionMode', 'auto', 'PaperOrientation', 'portrait');
+    try
+        % Print to tiff file
+        print(fig, renderer, res_str, '-dtiff', tmp_nam);
+        % Read in the printed file
+        A = imread(tmp_nam);
+        % Delete the temporary file
+        delete(tmp_nam);
+    catch ex
+        err = true;
+    end
+    % Reset paper size
+    set(fig, 'PaperPositionMode', old_pos_mode, 'PaperOrientation', old_orientation);
+    % Throw any error that occurred
+    if err
+        rethrow(ex);
+    end
+    % Set the background color
+    if isequal(bcol, 'none')
+        bcol = [];
+    else
+        bcol = bcol * 255;
+        if isequal(bcol, round(bcol))
+            bcol = uint8(bcol);
+        else
+            bcol = squeeze(A(1,1,:));
+        end
+    end
+end
+% Check the output size is correct
+if isequal(res, round(res))
+    px = [px([4 3])*res 3];
+    if ~isequal(size(A), px)
+        % Correct the output size
+        A = A(1:min(end,px(1)),1:min(end,px(2)),:);
+    end
+end
+end
+
+% Function to return (and create, where necessary) the font path
+function fp = font_path()
+fp = user_string('gs_font_path');
+if ~isempty(fp)
+    return
+end
+% Create the path
+% Start with the default path
+fp = getenv('GS_FONTPATH');
+% Add on the typical directories for a given OS
+if ispc
+    if ~isempty(fp)
+        fp = [fp ';'];
+    end
+    fp = [fp getenv('WINDIR') filesep 'Fonts'];
+else
+    if ~isempty(fp)
+        fp = [fp ':'];
+    end
+    fp = [fp '/usr/share/fonts:/usr/local/share/fonts:/usr/share/fonts/X11:/usr/local/share/fonts/X11:/usr/share/fonts/truetype:/usr/local/share/fonts/truetype'];
+end
+user_string('gs_font_path', fp);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/print2eps.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/print2eps.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/print2eps.m	(revision 21239)
@@ -0,0 +1,213 @@
+%PRINT2EPS  Prints figures to eps with improved line styles
+%
+% Examples:
+%   print2eps filename
+%   print2eps(filename, fig_handle)
+%   print2eps(filename, fig_handle, bb_padding)
+%   print2eps(filename, fig_handle, bb_padding, options)
+%
+% This function saves a figure as an eps file, with two improvements over
+% MATLAB's print command. First, it improves the line style, making dashed
+% lines more like those on screen and giving grid lines their own dotted
+% style. Secondly, it substitutes original font names back into the eps
+% file, where these have been changed by MATLAB, for up to 11 different
+% fonts.
+%
+%IN:
+%   filename - string containing the name (optionally including full or
+%              relative path) of the file the figure is to be saved as. A
+%              ".eps" extension is added if not there already. If a path is
+%              not specified, the figure is saved in the current directory.
+%   fig_handle - The handle of the figure to be saved. Default: gcf().
+%   bb_padding - Scalar value of amount of padding to add to border around
+%                the figure, in points. Can be negative as well as
+%                positive. Default: 0.
+%   options - Additional parameter strings to be passed to print.
+
+% Copyright (C) Oliver Woodford 2008-2014
+
+% The idea of editing the EPS file to change line styles comes from Jiro
+% Doke's FIXPSLINESTYLE (fex id: 17928)
+% The idea of changing dash length with line width came from comments on
+% fex id: 5743, but the implementation is mine :)
+
+% 14/11/2011: Fix a MATLAB bug rendering black or white text incorrectly.
+%             Thanks to Mathieu Morlighem for reporting the issue and
+%             obtaining a fix from TMW.
+% 08/12/11: Added ability to correct fonts. Several people have requested
+%           this at one time or another, and also pointed me to printeps
+%           (fex id: 7501), so thank you to them. My implementation (which
+%           was not inspired by printeps - I'd already had the idea for my
+%           approach) goes slightly further in that it allows multiple
+%           fonts to be swapped.
+% 14/12/11: Fix bug affecting font names containing spaces. Thanks to David
+%           Szwer for reporting the issue.
+% 25/01/12: Add a font not to be swapped. Thanks to Anna Rafferty and Adam
+%           Jackson for reporting the issue. Also fix a bug whereby using a
+%           font alias can lead to another font being swapped in.
+% 10/04/12: Make the font swapping case insensitive.
+% 26/10/12: Set PaperOrientation to portrait. Thanks to Michael Watts for
+%           reporting the issue.
+% 26/10/12: Fix issue to do with swapping fonts changing other fonts and
+%           sizes we don't want, due to listeners. Thanks to Malcolm Hudson
+%           for reporting the issue.
+% 22/03/13: Extend font swapping to axes labels. Thanks to Rasmus Ischebeck
+%           for reporting the issue.
+% 23/07/13: Bug fix to font swapping. Thanks to George for reporting the
+%           issue.
+% 13/08/13: Fix MATLAB feature of not exporting white lines correctly.
+%           Thanks to Sebastian Heßlinger for reporting it.
+
+function print2eps(name, fig, bb_padding, varargin)
+options = {'-depsc2'};
+if nargin > 3
+    options = [options varargin];
+elseif nargin < 3
+    bb_padding = 0;
+    if nargin < 2
+        fig = gcf();
+    end
+end
+% Construct the filename
+if numel(name) < 5 || ~strcmpi(name(end-3:end), '.eps')
+    name = [name '.eps']; % Add the missing extension
+end
+% Set paper size
+old_pos_mode = get(fig, 'PaperPositionMode');
+old_orientation = get(fig, 'PaperOrientation');
+set(fig, 'PaperPositionMode', 'auto', 'PaperOrientation', 'portrait');
+% Find all the used fonts in the figure
+font_handles = findall(fig, '-property', 'FontName');
+fonts = get(font_handles, 'FontName');
+if ~iscell(fonts)
+    fonts = {fonts};
+end
+% Map supported font aliases onto the correct name
+fontsl = lower(fonts);
+for a = 1:numel(fonts)
+    f = fontsl{a};
+    f(f==' ') = [];
+    switch f
+        case {'times', 'timesnewroman', 'times-roman'}
+            fontsl{a} = 'times-roman';
+        case {'arial', 'helvetica'}
+            fontsl{a} = 'helvetica';
+        case {'newcenturyschoolbook', 'newcenturyschlbk'}
+            fontsl{a} = 'newcenturyschlbk';
+        otherwise
+    end
+end
+fontslu = unique(fontsl);
+% Determine the font swap table
+matlab_fonts = {'Helvetica', 'Times-Roman', 'Palatino', 'Bookman', 'Helvetica-Narrow', 'Symbol', ...
+                'AvantGarde', 'NewCenturySchlbk', 'Courier', 'ZapfChancery', 'ZapfDingbats'};
+matlab_fontsl = lower(matlab_fonts);
+require_swap = find(~ismember(fontslu, matlab_fontsl));
+unused_fonts = find(~ismember(matlab_fontsl, fontslu));
+font_swap = cell(3, min(numel(require_swap), numel(unused_fonts)));
+fonts_new = fonts;
+for a = 1:size(font_swap, 2)
+    font_swap{1,a} = find(strcmp(fontslu{require_swap(a)}, fontsl));
+    font_swap{2,a} = matlab_fonts{unused_fonts(a)};
+    font_swap{3,a} = fonts{font_swap{1,a}(1)};
+    fonts_new(font_swap{1,a}) = {font_swap{2,a}};
+end
+% Swap the fonts
+if ~isempty(font_swap)
+    fonts_size = get(font_handles, 'FontSize');
+    if iscell(fonts_size)
+        fonts_size = cell2mat(fonts_size);
+    end
+    M = false(size(font_handles));
+    % Loop because some changes may not stick first time, due to listeners
+    c = 0;
+    update = zeros(1000, 1);
+    for b = 1:10 % Limit number of loops to avoid infinite loop case
+        for a = 1:numel(M)
+            M(a) = ~isequal(get(font_handles(a), 'FontName'), fonts_new{a}) || ~isequal(get(font_handles(a), 'FontSize'), fonts_size(a));
+            if M(a)
+                set(font_handles(a), 'FontName', fonts_new{a}, 'FontSize', fonts_size(a));
+                c = c + 1;
+                update(c) = a;
+            end
+        end
+        if ~any(M)
+            break;
+        end
+    end
+    % Compute the order to revert fonts later, without the need of a loop
+    [update, M] = unique(update(1:c));
+    [M, M] = sort(M);
+    update = reshape(update(M), 1, []);
+end
+% MATLAB bug fix - black and white text can come out inverted sometimes
+% Find the white and black text
+white_text_handles = findobj(fig, 'Type', 'text');
+M = get(white_text_handles, 'Color');
+if iscell(M)
+    M = cell2mat(M);
+end
+M = sum(M, 2);
+black_text_handles = white_text_handles(M == 0);
+white_text_handles = white_text_handles(M == 3);
+% Set the font colors slightly off their correct values
+set(black_text_handles, 'Color', [0 0 0] + eps);
+set(white_text_handles, 'Color', [1 1 1] - eps);
+% MATLAB bug fix - white lines can come out funny sometimes
+% Find the white lines
+white_line_handles = findobj(fig, 'Type', 'line');
+M = get(white_line_handles, 'Color');
+if iscell(M)
+    M = cell2mat(M);
+end
+white_line_handles = white_line_handles(sum(M, 2) == 3);
+% Set the line color slightly off white
+set(white_line_handles, 'Color', [1 1 1] - 0.00001);
+% Print to eps file
+print(fig, options{:}, name);
+% Reset the font and line colors
+set(black_text_handles, 'Color', [0 0 0]);
+set(white_text_handles, 'Color', [1 1 1]);
+set(white_line_handles, 'Color', [1 1 1]);
+% Reset paper size
+set(fig, 'PaperPositionMode', old_pos_mode, 'PaperOrientation', old_orientation);
+% Reset the font names in the figure
+if ~isempty(font_swap)
+    for a = update
+        set(font_handles(a), 'FontName', fonts{a}, 'FontSize', fonts_size(a));
+    end
+end
+% Do post-processing on the eps file
+try
+    fstrm = read_write_entire_textfile(name);
+catch
+    warning('Loading EPS file failed, so unable to perform post-processing. This is usually because the figure contains a large number of patch objects. Consider exporting to a bitmap format in this case.');
+    return
+end
+% Replace the font names
+if ~isempty(font_swap)
+    for a = 1:size(font_swap, 2)
+        %fstrm = regexprep(fstrm, [font_swap{1,a} '-?[a-zA-Z]*\>'], font_swap{3,a}(~isspace(font_swap{3,a})));
+        fstrm = regexprep(fstrm, font_swap{2,a}, font_swap{3,a}(~isspace(font_swap{3,a})));
+    end
+end
+if using_hg2(fig)
+    % Convert miter joins to line joins
+    fstrm = regexprep(fstrm, '10.0 ML\n', '1 LJ\n');
+    % Move the bounding box to the top of the file
+    [s, e] = regexp(fstrm, '%%BoundingBox: [\w\s()]*%%');
+    if numel(s) == 2
+        fstrm = fstrm([1:s(1)-1 s(2):e(2)-2 e(1)-1:s(2)-1 e(2)-1:end]);
+    end
+else
+    % Fix the line styles
+    fstrm = fix_lines(fstrm);
+end
+% Apply the bounding box padding
+if bb_padding
+    add_padding = @(n1, n2, n3, n4) sprintf(' %d', str2double({n1, n2, n3, n4}) + [-bb_padding -bb_padding bb_padding bb_padding]);
+    fstrm = regexprep(fstrm, '%%BoundingBox:[ ]+([-]?\d+)[ ]+([-]?\d+)[ ]+([-]?\d+)[ ]+([-]?\d+)', '%%BoundingBox:${add_padding($1, $2, $3, $4)}');
+end
+% Write out the fixed eps file
+read_write_entire_textfile(name, fstrm);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/read_write_entire_textfile.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/read_write_entire_textfile.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/read_write_entire_textfile.m	(revision 21239)
@@ -0,0 +1,37 @@
+%READ_WRITE_ENTIRE_TEXTFILE Read or write a whole text file to/from memory
+%
+% Read or write an entire text file to/from memory, without leaving the
+% file open if an error occurs.
+%
+% Reading:
+%   fstrm = read_write_entire_textfile(fname)
+% Writing:
+%   read_write_entire_textfile(fname, fstrm)
+%
+%IN:
+%   fname - Pathname of text file to be read in.
+%   fstrm - String to be written to the file, including carriage returns.
+%
+%OUT:
+%   fstrm - String read from the file. If an fstrm input is given the
+%           output is the same as that input. 
+
+function fstrm = read_write_entire_textfile(fname, fstrm)
+modes = {'rt', 'wt'};
+writing = nargin > 1;
+fh = fopen(fname, modes{1+writing});
+if fh == -1
+    error('Unable to open file %s.', fname);
+end
+try
+    if writing
+        fwrite(fh, fstrm, 'char*1');
+    else
+        fstrm = fread(fh, '*char')';
+    end
+catch ex
+    fclose(fh);
+    rethrow(ex);
+end
+fclose(fh);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/user_string.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/user_string.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/user_string.m	(revision 21239)
@@ -0,0 +1,87 @@
+%USER_STRING  Get/set a user specific string
+%
+% Examples:
+%   string = user_string(string_name)
+%   saved = user_string(string_name, new_string)
+%
+% Function to get and set a string in a system or user specific file. This
+% enables, for example, system specific paths to binaries to be saved.
+%
+% IN:
+%   string_name - String containing the name of the string required. The
+%                 string is extracted from a file called (string_name).txt,
+%                 stored in the same directory as user_string.m.
+%   new_string - The new string to be saved under the name given by
+%                string_name.
+%
+% OUT:
+%   string - The currently saved string. Default: ''.
+%   saved - Boolean indicating whether the save was succesful
+
+% Copyright (C) Oliver Woodford 2011-2013
+
+% This method of saving paths avoids changing .m files which might be in a
+% version control system. Instead it saves the user dependent paths in
+% separate files with a .txt extension, which need not be checked in to
+% the version control system. Thank you to Jonas Dorn for suggesting this
+% approach.
+
+% 10/01/2013 - Access files in text, not binary mode, as latter can cause
+% errors. Thanks to Christian for pointing this out.
+
+function string = user_string(string_name, string)
+if ~ischar(string_name)
+    error('string_name must be a string.');
+end
+% Create the full filename
+string_name = fullfile(fileparts(mfilename('fullpath')), '.ignore', [string_name '.txt']);
+if nargin > 1
+    % Set string
+    if ~ischar(string)
+        error('new_string must be a string.');
+    end
+    % Make sure the save directory exists
+    dname = fileparts(string_name);
+    if ~exist(dname, 'dir')
+        % Create the directory
+        try
+            if ~mkdir(dname)                
+                string = false;
+                return
+            end
+        catch
+            string = false;
+            return
+        end
+        % Make it hidden
+        try
+            fileattrib(dname, '+h');
+        catch
+        end
+    end
+    % Write the file
+    fid = fopen(string_name, 'wt');
+    if fid == -1
+        string = false;
+        return
+    end
+    try
+        fprintf(fid, '%s', string);
+    catch
+        fclose(fid);
+        string = false;
+        return
+    end
+    fclose(fid);
+    string = true;
+else
+    % Get string
+    fid = fopen(string_name, 'rt');
+    if fid == -1
+        string = '';
+        return
+    end
+    string = fgetl(fid);
+    fclose(fid);
+end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/using_hg2.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/using_hg2.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/export_fig/using_hg2.m	(revision 21239)
@@ -0,0 +1,18 @@
+%USING_HG2 Determine if the HG2 graphics pipeline is used
+%
+%   tf = using_hg2(fig)
+%
+%IN:
+%   fig - handle to the figure in question.
+%
+%OUT:
+%   tf - boolean indicating whether the HG2 graphics pipeline is being used
+%        (true) or not (false).
+
+function tf = using_hg2(fig)
+try
+    tf = ~graphicsversion(fig, 'handlegraphics');
+catch
+    tf = false;
+end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/ffmpeg/install-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/ffmpeg/install-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/ffmpeg/install-macosx64.sh	(revision 21239)
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install ffmpeg-1.1.2
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/ffmpeg-1.1.2.tar.gz' 'ffmpeg-1.1.2.tar.gz'
+
+#Untar 
+tar -zxvf  ffmpeg-1.1.2.tar.gz
+
+#Move ffmpeg into src directory
+mv ffmpeg-1.1.2/* src
+rm -rf ffmpeg-1.1.2
+
+#Configure ffmpeg
+cd src
+
+export CFLAGS=" -arch x86_64"
+
+./configure --prefix="$ISSM_DIR/externalpackages/ffmpeg/install" --disable-yasm
+
+#Compile ffmpeg
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/findbugs/README
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/findbugs/README	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/findbugs/README	(revision 21239)
@@ -0,0 +1,2 @@
+Fingbugs for Java programs. 
+Downloaded from http://findbugs.sourceforge.net/downloads.html
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/findbugs/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/findbugs/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/findbugs/install.sh	(revision 21239)
@@ -0,0 +1,13 @@
+#!/bin/bash
+set -eu
+
+#Erase install
+rm -rf install  findbugs-1.3.9
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/findbugs-1.3.9.tar.gz' 'findbugs-1.3.9.tar.gz'
+tar -zxvf findbugs-1.3.9.tar.gz 
+
+mv findbugs-1.3.9/* install
+rm -rf findbugs-1.3.9
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/flaim/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/flaim/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/flaim/install.sh	(revision 21239)
@@ -0,0 +1,8 @@
+#!/bin/bash
+set -eu
+
+#Erase symlink
+rm -rf install
+
+#symlink to flaim directory
+ln -s /home/jschierm/flaim/svn/trunk ./install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/freetype/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/freetype/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/freetype/install.sh	(revision 21239)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf freetype-2.5.0
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/freetype-2.5.0.tar.gz' 'freetype-2.5.0.tar.gz'
+
+#Untar 
+tar -zxvf  freetype-2.5.0.tar.gz
+
+#Move freetype into src directory
+mv freetype-2.5.0/* src
+rm -rf freetype-2.5.0
+
+#Configure freetype
+cd src
+sudo ./configure 
+
+#Compile and install freetype
+if [ $# -eq 0 ]; then
+	sudo make
+else
+	sudo make -j $1
+fi
+sudo make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/fti/Makefile
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/fti/Makefile	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/fti/Makefile	(revision 21239)
@@ -0,0 +1,90 @@
+## * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+##* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+##=======================================================================
+##Copyright (C) 2010-2013 Leonardo A. BAUTISTA GOMEZ
+##This program is free software; you can redistribute it and/or modify
+##it under the terms of the GNU General Public License (GPL) as published
+##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.
+##
+##To read the license please visit http://www.gnu.org/copyleft/gpl.html
+##=======================================================================
+
+##=======================================================================
+##   PLEASE SET THESE VARIABLES BEFORE COMPILING
+##=======================================================================
+
+FTIPATH		= $(ISSM_DIR)/externalpackages/fti/install
+MPIPATH		= $(ISSM_DIR)/externalpackages/mpich/install
+
+##=======================================================================
+##   DIRECTORY TREE
+##=======================================================================
+
+LIB 		= lib
+OBJ		= obj
+SRC		= src
+DOC		= doc
+INC		= include
+
+##=======================================================================
+##   COMPILERS
+##=======================================================================
+
+CC 		= gcc
+MPICC 		= mpicc
+
+##=======================================================================
+##   FLAGS
+##=======================================================================
+
+FTIFLAGS	= -fPIC -g -Iinclude/ -c
+MPIFLAGS	= -I$(MPIPATH)/include -L$(MPIPATH)/lib -lmpich -lpmpich
+
+##=======================================================================
+##   TARGETS
+##=======================================================================
+
+
+OBJS		= $(OBJ)/galois.o $(OBJ)/jerasure.o $(OBJ)/dictionary.o $(OBJ)/iniparser.o \
+		$(OBJ)/recover.o $(OBJ)/tools.o $(OBJ)/checkpoint.o $(OBJ)/topo.o \
+		$(OBJ)/api.o
+
+SHARED		= libfti.so
+STATIC		= libfti.a
+
+all: 		$(SHARED) $(STATIC)
+
+doc:
+		doxygen $(DOC)/Doxyfile
+
+$(OBJ)/%.o:	$(SRC)/%.c
+		$(MPICC) $(FTIFLAGS) $< -o $@
+
+$(SHARED):	$(OBJS)
+		$(CC) $(MPIFLAGS) -shared -o $(LIB)/$(SHARED) $(OBJS) -lc
+
+$(STATIC):	$(OBJS)
+		$(AR) -cvq $(LIB)/$(STATIC) $(OBJS)
+install:
+		if [ ! -d "$(FTIPATH)/FTI" ]; then mkdir $(FTIPATH)/FTI; fi
+		if [ ! -d "$(FTIPATH)/FTI/$(LIB)" ]; then mkdir $(FTIPATH)/FTI/$(LIB); fi
+		if [ ! -d "$(FTIPATH)/FTI/$(INC)" ]; then mkdir $(FTIPATH)/FTI/$(INC); fi
+		rm -f $(FTIPATH)/FTI/$(LIB)/* $(FTIPATH)/FTI/$(INC)/*
+		cp $(INC)/* $(FTIPATH)/FTI/$(INC)/
+		cp $(LIB)/* $(FTIPATH)/FTI/$(LIB)/
+
+uninstall:
+		rm -f $(FTIPATH)/FTI/$(LIB)/* $(FTIPATH)/FTI/$(INC)/*
+		if [ -d "$(FTIPATH)/FTI/$(LIB)" ]; then rmdir $(FTIPATH)/FTI/$(LIB); fi
+		if [ -d "$(FTIPATH)/FTI/$(INC)" ]; then rmdir $(FTIPATH)/FTI/$(INC); fi
+		if [ -d "$(FTIPATH)/FTI" ]; then rmdir $(FTIPATH)/FTI; fi
+
+clean:
+		rm -f $(OBJ)/* $(LIB)/*
+
+.PHONY:		$(SHARED) $(STATIC) doc install uninstall clean
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/fti/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/fti/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/fti/install.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install fti-0.9.2
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/fti-0.9.2.tgz' 'fti-0.9.2.tgz'
+
+#Untar 
+tar -zxvf  fti-0.9.2.tgz
+
+#Move mpich into src directory
+mv fti/* install
+rm -rf fti
+
+#Configure mpich
+cd install
+cp ../Makefile .
+
+#Compile mpich (this new version supports parallel make)
+make
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gdal/configs/GDALmake.opt.patch.murdo
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gdal/configs/GDALmake.opt.patch.murdo	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gdal/configs/GDALmake.opt.patch.murdo	(revision 21239)
@@ -0,0 +1,8 @@
+31c31
+< LIBS	=	$(SDE_LIB) -I/usr/include -lsqlite3 -L/usr/lib -lexpat -ljpeg -lpng -lz  -lm -lrt -ldl  $(KAK_LIBS) $(DWG_LIBS) $(CURL_LIB) \
+---
+> LIBS	=	$(SDE_LIB) -I/usr/include -lsqlite3 -L/usr/lib64 -lexpat -ljpeg -lpng -lz  -lm -lrt -ldl  $(KAK_LIBS) $(DWG_LIBS) $(CURL_LIB) \
+225c225
+< CURL_LIB	=	-L/usr/kerberos/lib64 -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz  
+---
+> CURL_LIB	=	-L/usr/lib64 -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz  
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gdal/install-1.10-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gdal/install-1.10-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gdal/install-1.10-linux64.sh	(revision 21239)
@@ -0,0 +1,45 @@
+#!/bin/bash
+set -eu
+
+#WARNING: you need to have python installed in externalpackages
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf gdal-1.10.0
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gdal-1.10.0.tar.gz' 'gdal-1.10.0.tar.gz'
+
+#Untar 
+tar -zxvf  gdal-1.10.0.tar.gz
+
+#Move gdal into src directory
+mv gdal-1.10.0/* src
+rm -rf gdal-1.10.0
+
+export CFLAGS=-D_HAVE_STRNDUP
+export CXXFLAGS=-D_HAVE_STRNDUP
+
+#Configure gdal
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/gdal/install" \
+	--with-python="$ISSM_DIR/externalpackages/python/install/bin/python" \
+	--with-netcdf=no \
+	--with-jasper=no \
+	--without-hdf5
+
+#Compile and install gdal
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
+
+#For some reasons, on thwaites, one needs to do the following to get the python bindings:
+#cd src/swig/python/
+# python setup.py build
+# python setup.py install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gdal/install-1.10-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gdal/install-1.10-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gdal/install-1.10-macosx64.sh	(revision 21239)
@@ -0,0 +1,38 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf gdal-1.10.0
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gdal-1.10.0.tar.gz' 'gdal-1.10.0.tar.gz'
+
+#Untar 
+tar -zxvf  gdal-1.10.0.tar.gz
+
+#Move gdal into src directory
+mv gdal-1.10.0/* src
+rm -rf gdal-1.10.0
+
+#Configure gdal
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/gdal/install" \
+	--with-python \
+	--with-netcdf=no \
+	--with-libiconv-prefix="/usr/lib/" \
+	--without-hdf5 \
+	--with-expat=$ISSM_DIR/externalpackages/expat/install
+#Note:
+# look for libiconv in /usr/lib/ because there seemed to be a conflict with port's library
+
+#Compile and install gdal
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gdal/install-1.6-linux64-murdo.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gdal/install-1.6-linux64-murdo.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gdal/install-1.6-linux64-murdo.sh	(revision 21239)
@@ -0,0 +1,39 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf gdal-1.6.0
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gdal-1.6.0.tar.gz' 'gdal-1.6.0.tar.gz'
+
+#Untar 
+tar -zxvf  gdal-1.6.0.tar.gz
+
+#Move gdal into src directory
+mv gdal-1.6.0/* src
+rm -rf gdal-1.6.0
+
+#Configure gdal
+cd src
+./configure --prefix="$ISSM_DIR/externalpackages/gdal/install" \
+	--without-python \
+	--without-png \
+	--with-netcdf=no \
+	--with-jasper=no \
+	--without-ld-shared \
+	--with-unix-stdio-64=no 
+
+#Patch GDALmake.opt
+patch GDALmake.opt ../configs/GDALmake.opt.patch
+
+#Compile and install gdal
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gdal/install-1.6-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gdal/install-1.6-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gdal/install-1.6-macosx64.sh	(revision 21239)
@@ -0,0 +1,39 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf gdal-1.6.0
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gdal-1.6.0.tar.gz' 'gdal-1.6.0.tar.gz'
+
+#Untar 
+tar -zxvf  gdal-1.6.0.tar.gz
+
+#Move gdal into src directory
+mv gdal-1.6.0/* src
+rm -rf gdal-1.6.0
+
+#Configure gdal
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/gdal/install" \
+	--without-python \
+	--without-png \
+	--with-netcdf=no \
+	--with-jasper=no \
+	--without-ld-shared \
+	--without-hdf5 \
+	--with-unix-stdio-64=no \
+	--with-expat=$ISSM_DIR/externalpackages/expat/install
+
+#Compile and install gdal
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/geocode/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/geocode/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/geocode/install.sh	(revision 21239)
@@ -0,0 +1,2 @@
+#/bin/bash
+unzip geoCode.zip
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/geos5/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/geos5/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/geos5/install.sh	(revision 21239)
@@ -0,0 +1,7 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf  GEOSagcm
+#svn download
+svn --username eric.larour@jpl.nasa.gov checkout http://geos5.org/svn/branches/Fortuna-2_5_p1 GEOSagcm
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/git/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/git/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/git/install.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install git-1.7.10.2
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/git-1.7.10.2.tar.gz' 'git-1.7.10.2.tar.gz'
+
+#Untar 
+tar -zxvf  git-1.7.10.2.tar.gz
+
+#Move git into install directory
+mv git-1.7.10.2/* src
+rm -rf git-1.7.10.2
+
+#install
+cd src 
+./configure  --prefix="$ISSM_DIR/externalpackages/git/install" 
+#--with-python="$ISSM_DIR/externalpackages/python/install/bin/python" #Do we really need this line?
+	
+#Compile
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmake/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmake/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmake/install.sh	(revision 21239)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src make-3.82
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/make-3.82.tar.gz' 'make-3.82.tar.gz'
+
+#Untar 
+tar -zxvf  make-3.82.tar.gz
+
+#Move make into install directory
+mv make-3.82/* src
+rm -rf make-3.82
+
+#Apply patches
+cd src 
+
+#Configure and compile: 
+./configure --prefix=$ISSM_DIR/externalpackages/gmake/install
+
+if [ $# -eq 0 ]; then
+	make
+	make install
+else 
+	make -j $1; 
+	make -j $1 install;
+fi
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmp/install-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmp/install-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmp/install-linux64.sh	(revision 21239)
@@ -0,0 +1,29 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install gmp-5.0.5 
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gmp-5.0.5.tar.bz2' 'gmp-5.0.5.tar.bz2'
+
+#Untar 
+bunzip2 gmp-5.0.5.tar.bz2
+tar -xvf  gmp-5.0.5.tar
+
+#Move gmp into install directory
+mv gmp-5.0.5/* src
+rm -rf gmp-5.0.5
+
+#install
+cd src 
+./configure --prefix="$ISSM_DIR/externalpackages/gmp/install" 
+
+#Compile and install gmp
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmsh/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmsh/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmsh/install.sh	(revision 21239)
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+mkdir install
+
+#Download latest version
+svn co --username gmsh --password gmsh https://geuz.org/svn/gmsh/trunk src
+
+#Configure
+cd install
+cmake ../src -DCMAKE_INSTALL_PREFIX="$ISSM_DIR/externalpackages/gmsh/install"
+
+#Compile and install
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmt/configs/ConfigUser.cmake
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmt/configs/ConfigUser.cmake	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmt/configs/ConfigUser.cmake	(revision 21239)
@@ -0,0 +1,240 @@
+#
+# $Id: ConfigUserTemplate.cmake 12904 2014-02-17 20:52:35Z fwobbe $
+#
+# Copyright (c) 1991-2014 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+# See LICENSE.TXT file for copying and redistribution conditions.
+#
+# 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; version 3 or 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.
+#
+# Contact info: gmt.soest.hawaii.edu
+# ----------------------------------------------------------------------------
+
+# Use this file to override variables in 'ConfigDefault.cmake' on a per-user
+# basis.  First copy 'ConfigUserTemplate.cmake' to 'ConfigUser.cmake', then
+# edit 'ConfigUser.cmake'.  'ConfigUser.cmake' is not version controlled
+# (currently listed in svn:ignore property)
+#
+# Note: CMake considers an empty string, "FALSE", "OFF", "NO", or any string
+# ending in "-NOTFOUND" to be false (this happens to be case-insensitive, so
+# "False", "off", "no", and "something-NotFound" are all false).  Other values
+# are true.  Thus it does not matter whether you use TRUE and FALSE, ON and
+# OFF, or YES and NO for your booleans.
+
+##
+## Section 1: Installation paths
+##
+
+# ============================================================================
+# Basic setup begins here.  All settings are optional.  In most cases, setting
+# CMAKE_INSTALL_PREFIX should be all you need to do in order to build GMT with
+# reasonable defaults enabled.
+# ============================================================================
+
+# Installation path (usually defaults to /usr/local) [auto]:
+set (CMAKE_INSTALL_PREFIX "$ENV{ISSM_DIR}/externalpackages/gmt/install")
+
+# Set install name suffix used for directories and gmt executables
+# [undefined]:
+#set (GMT_INSTALL_NAME_SUFFIX "suffix")
+
+# Install into traditional directory structure. Disable to install a
+# distribution type directory structure (doc and share separated) [on]:
+#set (GMT_INSTALL_TRADITIONAL_FOLDERNAMES OFF)
+
+# Install convenience links for GMT modules. Disable to install only the main
+# gmt program and access modules as "gmt modulename options" [TRUE]:
+#set (GMT_INSTALL_MODULE_LINKS FALSE)
+
+# Make executables relocatable on supported platforms (relative RPATH) [TRUE]:
+#set (GMT_INSTALL_RELOCATABLE FALSE)
+
+# ============================================================================
+# Advanced configuration begins here.  Usually it is not necessary to edit any
+# settings below.  You should know what you are doing if you do though.  Note:
+# installation paths are relative to ${CMAKE_INSTALL_PREFIX} unless absolute
+# path is given.
+# ============================================================================
+
+# Set binary installation path [bin]:
+#set (GMT_BINDIR "bin")
+
+# Set library installation path [lib or lib64]:
+#set (GMT_LIBDIR "lib")
+
+# Set include installation path [include/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_INCLUDEDIR "include/gmt")
+
+# Set share installation path [share or share/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_DATADIR "share/gmt")
+
+# Set doc installation path [share/doc or
+# share/doc/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_DOCDIR "share/doc/gmt")
+
+# Set manpage installation path [share/man or
+# share/doc/gmt${GMT_INSTALL_NAME_SUFFIX}/man]:
+#set (GMT_MANDIR "share/doc/gmt/man")
+
+# Install documentation files from this external location instead of creating
+# new PDF and HTML documents from scratch [${GMT_SOURCE_DIR}/doc_release]:
+#set (GMT_INSTALL_EXTERNAL_DOC OFF)
+
+# Install manual pages from this external location instead of creating the
+# manpages from scratch [${GMT_SOURCE_DIR}/man_release]:
+#set (GMT_INSTALL_EXTERNAL_MAN OFF)
+
+##
+## Section 2: Build dependencies (should only be needed if CMake cannot
+## automatically detect the rights version or path.)
+##
+
+# Set path to GSHHG Shoreline Database [auto]:
+set (GSHHG_ROOT "$ENV{ISSM_DIR}/externalpackages/gshhg/install")
+
+# Copy GSHHG files to $/coast [FALSE]:
+#set (COPY_GSHHG TRUE)
+
+# Set path to DCW Digital Chart of the World for GMT [auto]:
+#set (DCW_ROOT "dcw-gmt_path")
+
+# Copy DCW files to $/dcw [FALSE]:
+#set (COPY_DCW TRUE)
+
+# Set location of NetCDF (can be root directory, path to header file or path
+# to nc-config) [auto]:
+set (NETCDF_ROOT "$ENV{ISSM_DIR}/externalpackages/netcdf/install")
+
+# Set location of GDAL (can be root directory, path to header file or path to
+# gdal-config) [auto]:
+set (GDAL_ROOT "$ENV{ISSM_DIR}/externalpackages/gdal/install")
+
+# Set location of PCRE (can be root directory, path to header file or path to
+# pcre-config) [auto]:
+#set (PCRE_ROOT "pcre_install_prefix")
+
+# Set location of single precision FFTW (can be root directory or path to
+# header file) [auto]:
+#set (FFTW3_ROOT "fftw_install_prefix")
+
+# Set location of ZLIB (can be root directory or path to header file) [auto]:
+#set (ZLIB_ROOT "zlib_install_prefix")
+
+##
+## Section 3: GMT features
+##
+
+# Enforce GPL or LGPL conformity. Use this to disable routines that cannot be
+# redistributed under the terms of the GPL or LGPL such as Shewchuk's
+# triangulation (valid values are GPL, LGPL and off) [off]:
+#set (LICENSE_RESTRICTED GPL)
+
+# Configure default units (possible values are SI and US) [SI]:
+#set (UNITS "US")
+
+# Enable building of shared libraries [TRUE] (disable to use static libraries;
+# not recommended):
+#set (BUILD_SHARED_LIBS FALSE)
+
+# Build GMT shared lib with supplemental modules [TRUE]:
+#set (BUILD_SUPPLEMENTS FALSE)
+
+##
+## Section 4: Advanced tweaking
+##
+
+#
+# Testing and development
+#
+
+# Enable running examples/tests with "ctest" or "make check" (out-of-source).
+# Need to set either DO_EXAMPLES, DO_TESTS or both and uncomment the following
+# line.
+#enable_testing()
+#set (DO_EXAMPLES TRUE)
+#set (DO_TESTS TRUE)
+# Number of parallel test jobs with "make check":
+#set (N_TEST_JOBS 4)
+
+# Enable this option to run GMT programs from within ${GMT_BINARY_DIR} without
+# installing or setting GMT_SHAREDIR and GMT_USERDIR first. This is required
+# for testing [OFF]:
+#set (SUPPORT_EXEC_IN_BINARY_DIR ON)
+
+# List extra sub-dirs of 'src' with a CMakeList.txt to build non-module codes
+# that link against the full gmt libs (not just the API; for building codes
+# that only need the GMT API, see the gmtextension project).
+#set (EXTRA_BUILD_DIRS apidemo)
+
+# Directory in which to install the release sources per default
+# [${GMT_BINARY_DIR}/gmt-${GMT_PACKAGE_VERSION}]:
+#set (GMT_RELEASE_PREFIX "release-src-prefix")
+
+# If set to false, image conversion from PS images to PNG and PDF does
+# not depend on the gmt binary target. Note: "make gmt" is then required
+# before docs_depends [TRUE].
+#set (GMT_DOCS_DEPEND_ON_GMT FALSE)
+
+#
+# Debugging
+#
+
+# Set build type can be: empty, Debug, Release, RelWithDebInfo or MinSizeRel
+# [Release]:
+#set (CMAKE_BUILD_TYPE Debug)
+
+# Extra debugging for developers:
+#add_definitions(-DDEBUG)
+#add_definitions(-DMEMDEBUG) # Turn on memory tracking see gmt_support.c for extra info
+#set (CMAKE_C_FLAGS "-Wall -Wdeclaration-after-statement") # recommended even for release build
+#set (CMAKE_C_FLAGS "-Wextra ${CMAKE_C_FLAGS}")            # extra warnings
+#set (CMAKE_C_FLAGS_DEBUG -ggdb3)                          # gdb debugging symbols
+#set (CMAKE_C_FLAGS_RELEASE "-ggdb3 -O2 -Wuninitialized")  # check uninitialized variables
+#set (CMAKE_LINK_DEPENDS_DEBUG_MODE TRUE)                  # debug link dependencies
+
+#
+# System specific tweaks
+#
+
+# This is for GCC on Solaris to avoid "relocations remain against allocatable
+# but non-writable sections" problems:
+#set (USER_GMTLIB_LINK_FLAGS -mimpure-text)
+
+# This may be needed to enable strdup and extended math functions with GCC and
+# Suncc on Solaris:
+#set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__EXTENSIONS__")
+
+# Do not warn when building with Windows SDK or Visual Studio Express:
+#set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)
+
+# Manually select runtime library when compiling with Windows SDK or Visual
+# Studio Express:
+#set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS c:/Windows/System32/msvcr100.dll)
+
+# If your NetCDF library is static (not recommended, applies to Windows only)
+#set (NETCDF_STATIC TRUE)
+
+# If want to rename the DLLs to something else than the default (e.g. to
+# append the bitness - Windows only)
+#if (WIN32)
+# set (BITAGE 32)
+# # Detect if we are building a 32 or 64 bits version
+# if (CMAKE_SIZEOF_VOID_P EQUAL 8)
+#   set (BITAGE 64)
+# endif ()
+# set (GMT_DLL_RENAME gmt_w${BITAGE})
+# set (PSL_DLL_RENAME psl_w${BITAGE})
+#endif(WIN32)
+
+# On Windows Visual C 2012 needs _ALLOW_KEYWORD_MACROS to build
+#if(MSVC11)
+#  add_definitions(/D_ALLOW_KEYWORD_MACROS)
+#endif(MSVC11)
+
+# vim: textwidth=78 noexpandtab tabstop=2 softtabstop=2 shiftwidth=2
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmt/configs/ConfigUser.cmake-jenkins
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmt/configs/ConfigUser.cmake-jenkins	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmt/configs/ConfigUser.cmake-jenkins	(revision 21239)
@@ -0,0 +1,240 @@
+#
+# $Id: ConfigUserTemplate.cmake 12904 2014-02-17 20:52:35Z fwobbe $
+#
+# Copyright (c) 1991-2014 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+# See LICENSE.TXT file for copying and redistribution conditions.
+#
+# 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; version 3 or 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.
+#
+# Contact info: gmt.soest.hawaii.edu
+# ----------------------------------------------------------------------------
+
+# Use this file to override variables in 'ConfigDefault.cmake' on a per-user
+# basis.  First copy 'ConfigUserTemplate.cmake' to 'ConfigUser.cmake', then
+# edit 'ConfigUser.cmake'.  'ConfigUser.cmake' is not version controlled
+# (currently listed in svn:ignore property)
+#
+# Note: CMake considers an empty string, "FALSE", "OFF", "NO", or any string
+# ending in "-NOTFOUND" to be false (this happens to be case-insensitive, so
+# "False", "off", "no", and "something-NotFound" are all false).  Other values
+# are true.  Thus it does not matter whether you use TRUE and FALSE, ON and
+# OFF, or YES and NO for your booleans.
+
+##
+## Section 1: Installation paths
+##
+
+# ============================================================================
+# Basic setup begins here.  All settings are optional.  In most cases, setting
+# CMAKE_INSTALL_PREFIX should be all you need to do in order to build GMT with
+# reasonable defaults enabled.
+# ============================================================================
+
+# Installation path (usually defaults to /usr/local) [auto]:
+set (CMAKE_INSTALL_PREFIX "$ENV{ISSM_DIR}/externalpackages/gmt/install")
+
+# Set install name suffix used for directories and gmt executables
+# [undefined]:
+#set (GMT_INSTALL_NAME_SUFFIX "suffix")
+
+# Install into traditional directory structure. Disable to install a
+# distribution type directory structure (doc and share separated) [on]:
+#set (GMT_INSTALL_TRADITIONAL_FOLDERNAMES OFF)
+
+# Install convenience links for GMT modules. Disable to install only the main
+# gmt program and access modules as "gmt modulename options" [TRUE]:
+#set (GMT_INSTALL_MODULE_LINKS FALSE)
+
+# Make executables relocatable on supported platforms (relative RPATH) [TRUE]:
+#set (GMT_INSTALL_RELOCATABLE FALSE)
+
+# ============================================================================
+# Advanced configuration begins here.  Usually it is not necessary to edit any
+# settings below.  You should know what you are doing if you do though.  Note:
+# installation paths are relative to ${CMAKE_INSTALL_PREFIX} unless absolute
+# path is given.
+# ============================================================================
+
+# Set binary installation path [bin]:
+#set (GMT_BINDIR "bin")
+
+# Set library installation path [lib or lib64]:
+#set (GMT_LIBDIR "lib")
+
+# Set include installation path [include/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_INCLUDEDIR "include/gmt")
+
+# Set share installation path [share or share/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_DATADIR "share/gmt")
+
+# Set doc installation path [share/doc or
+# share/doc/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_DOCDIR "share/doc/gmt")
+
+# Set manpage installation path [share/man or
+# share/doc/gmt${GMT_INSTALL_NAME_SUFFIX}/man]:
+#set (GMT_MANDIR "share/doc/gmt/man")
+
+# Install documentation files from this external location instead of creating
+# new PDF and HTML documents from scratch [${GMT_SOURCE_DIR}/doc_release]:
+#set (GMT_INSTALL_EXTERNAL_DOC OFF)
+
+# Install manual pages from this external location instead of creating the
+# manpages from scratch [${GMT_SOURCE_DIR}/man_release]:
+#set (GMT_INSTALL_EXTERNAL_MAN OFF)
+
+##
+## Section 2: Build dependencies (should only be needed if CMake cannot
+## automatically detect the rights version or path.)
+##
+
+# Set path to GSHHG Shoreline Database [auto]:
+set (GSHHG_ROOT "$ENV{ISSM_DIR}/externalpackages/gshhg/install")
+
+# Copy GSHHG files to $/coast [FALSE]:
+#set (COPY_GSHHG TRUE)
+
+# Set path to DCW Digital Chart of the World for GMT [auto]:
+#set (DCW_ROOT "dcw-gmt_path")
+
+# Copy DCW files to $/dcw [FALSE]:
+#set (COPY_DCW TRUE)
+
+# Set location of NetCDF (can be root directory, path to header file or path
+# to nc-config) [auto]:
+set (NETCDF_ROOT "/")
+
+# Set location of GDAL (can be root directory, path to header file or path to
+# gdal-config) [auto]:
+set (GDAL_ROOT "$ENV{ISSM_DIR}/externalpackages/gdal/install")
+
+# Set location of PCRE (can be root directory, path to header file or path to
+# pcre-config) [auto]:
+#set (PCRE_ROOT "pcre_install_prefix")
+
+# Set location of single precision FFTW (can be root directory or path to
+# header file) [auto]:
+#set (FFTW3_ROOT "fftw_install_prefix")
+
+# Set location of ZLIB (can be root directory or path to header file) [auto]:
+#set (ZLIB_ROOT "zlib_install_prefix")
+
+##
+## Section 3: GMT features
+##
+
+# Enforce GPL or LGPL conformity. Use this to disable routines that cannot be
+# redistributed under the terms of the GPL or LGPL such as Shewchuk's
+# triangulation (valid values are GPL, LGPL and off) [off]:
+#set (LICENSE_RESTRICTED GPL)
+
+# Configure default units (possible values are SI and US) [SI]:
+#set (UNITS "US")
+
+# Enable building of shared libraries [TRUE] (disable to use static libraries;
+# not recommended):
+#set (BUILD_SHARED_LIBS FALSE)
+
+# Build GMT shared lib with supplemental modules [TRUE]:
+#set (BUILD_SUPPLEMENTS FALSE)
+
+##
+## Section 4: Advanced tweaking
+##
+
+#
+# Testing and development
+#
+
+# Enable running examples/tests with "ctest" or "make check" (out-of-source).
+# Need to set either DO_EXAMPLES, DO_TESTS or both and uncomment the following
+# line.
+#enable_testing()
+#set (DO_EXAMPLES TRUE)
+#set (DO_TESTS TRUE)
+# Number of parallel test jobs with "make check":
+#set (N_TEST_JOBS 4)
+
+# Enable this option to run GMT programs from within ${GMT_BINARY_DIR} without
+# installing or setting GMT_SHAREDIR and GMT_USERDIR first. This is required
+# for testing [OFF]:
+#set (SUPPORT_EXEC_IN_BINARY_DIR ON)
+
+# List extra sub-dirs of 'src' with a CMakeList.txt to build non-module codes
+# that link against the full gmt libs (not just the API; for building codes
+# that only need the GMT API, see the gmtextension project).
+#set (EXTRA_BUILD_DIRS apidemo)
+
+# Directory in which to install the release sources per default
+# [${GMT_BINARY_DIR}/gmt-${GMT_PACKAGE_VERSION}]:
+#set (GMT_RELEASE_PREFIX "release-src-prefix")
+
+# If set to false, image conversion from PS images to PNG and PDF does
+# not depend on the gmt binary target. Note: "make gmt" is then required
+# before docs_depends [TRUE].
+#set (GMT_DOCS_DEPEND_ON_GMT FALSE)
+
+#
+# Debugging
+#
+
+# Set build type can be: empty, Debug, Release, RelWithDebInfo or MinSizeRel
+# [Release]:
+#set (CMAKE_BUILD_TYPE Debug)
+
+# Extra debugging for developers:
+#add_definitions(-DDEBUG)
+#add_definitions(-DMEMDEBUG) # Turn on memory tracking see gmt_support.c for extra info
+#set (CMAKE_C_FLAGS "-Wall -Wdeclaration-after-statement") # recommended even for release build
+#set (CMAKE_C_FLAGS "-Wextra ${CMAKE_C_FLAGS}")            # extra warnings
+#set (CMAKE_C_FLAGS_DEBUG -ggdb3)                          # gdb debugging symbols
+#set (CMAKE_C_FLAGS_RELEASE "-ggdb3 -O2 -Wuninitialized")  # check uninitialized variables
+#set (CMAKE_LINK_DEPENDS_DEBUG_MODE TRUE)                  # debug link dependencies
+
+#
+# System specific tweaks
+#
+
+# This is for GCC on Solaris to avoid "relocations remain against allocatable
+# but non-writable sections" problems:
+#set (USER_GMTLIB_LINK_FLAGS -mimpure-text)
+
+# This may be needed to enable strdup and extended math functions with GCC and
+# Suncc on Solaris:
+#set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__EXTENSIONS__")
+
+# Do not warn when building with Windows SDK or Visual Studio Express:
+#set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)
+
+# Manually select runtime library when compiling with Windows SDK or Visual
+# Studio Express:
+#set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS c:/Windows/System32/msvcr100.dll)
+
+# If your NetCDF library is static (not recommended, applies to Windows only)
+#set (NETCDF_STATIC TRUE)
+
+# If want to rename the DLLs to something else than the default (e.g. to
+# append the bitness - Windows only)
+#if (WIN32)
+# set (BITAGE 32)
+# # Detect if we are building a 32 or 64 bits version
+# if (CMAKE_SIZEOF_VOID_P EQUAL 8)
+#   set (BITAGE 64)
+# endif ()
+# set (GMT_DLL_RENAME gmt_w${BITAGE})
+# set (PSL_DLL_RENAME psl_w${BITAGE})
+#endif(WIN32)
+
+# On Windows Visual C 2012 needs _ALLOW_KEYWORD_MACROS to build
+#if(MSVC11)
+#  add_definitions(/D_ALLOW_KEYWORD_MACROS)
+#endif(MSVC11)
+
+# vim: textwidth=78 noexpandtab tabstop=2 softtabstop=2 shiftwidth=2
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmt/install-jenkins.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmt/install-jenkins.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmt/install-jenkins.sh	(revision 21239)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Erase install
+rm -rf install  src gmt
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gmt-5.1.1.tar.gz' 'gmt-5.1.1.tar.gz'
+
+#install directory
+mkdir src
+tar -zxvf gmt-5.1.1.tar.gz 
+mv gmt-5.1.1/* src
+rm -rf gmt-5.1.1
+
+#configure: 
+cp configs/ConfigUser.cmake-jenkins ./src/cmake/ConfigUser.cmake
+
+cd src
+mkdir build
+cd build
+cmake ../
+
+#compile
+if [ $# -eq 0 ]; then
+	make install
+else
+	make -j $1 install
+fi
+
+#come back: 
+cd ../../
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmt/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmt/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gmt/install.sh	(revision 21239)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Erase install
+rm -rf install  src gmt
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gmt-5.1.1.tar.gz' 'gmt-5.1.1.tar.gz'
+
+#install directory
+mkdir src
+tar -zxvf gmt-5.1.1.tar.gz 
+mv gmt-5.1.1/* src
+rm -rf gmt-5.1.1
+
+#configure: 
+cp configs/ConfigUser.cmake ./src/cmake
+
+cd src
+mkdir build
+cd build
+cmake ../
+
+#compile
+if [ $# -eq 0 ]; then
+	make install
+else
+	make -j $1 install
+fi
+
+#come back: 
+cd ../../
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/googleearthtoolbox/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/googleearthtoolbox/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/googleearthtoolbox/install.sh	(revision 21239)
@@ -0,0 +1,8 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install  
+
+#Download code: 
+svn checkout http://googleearthtoolbox.googlecode.com/svn/trunk/ install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gshhg/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gshhg/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gshhg/install.sh	(revision 21239)
@@ -0,0 +1,16 @@
+#!/bin/bash
+set -eu
+
+rm -rf gssh-gmt-2.3.4.tar.gz  src install
+
+#get gssh database from noaa's website:  http://www.ngdc.noaa.gov/mgg/shorelines/gshhs.html
+#curl http://www.ngdc.noaa.gov/mgg/shorelines/data/gshhg/latest/gshhg-gmt-2.3.4.tar.gz > gshhg-gmt-2.3.4.tar.gz
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gshhg-gmt-2.3.4.tar.gz' 'gshhg-gmt-2.3.4.tar.gz'
+
+#untar: 
+tar -zxvf gshhg-gmt-2.3.4.tar.gz 
+
+#move: 
+mv gshhg-gmt-2.3.4 install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/Makefile.am.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/Makefile.am.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/Makefile.am.patch	(revision 21239)
@@ -0,0 +1,27 @@
+--- Makefile.am	2011-04-14 08:13:48.000000000 -0700
++++ Makefile.am_tmp	2012-11-12 14:54:02.000000000 -0800
+@@ -24,10 +24,22 @@
+ noinst_HEADERS = templates_on.h templates_off.h build.h
+ 
+ MINGW32_HOST = @MINGW32_HOST@
+-if MINGW32_HOST
++
++# Origional 'Makefile.am' sets 'libgslcblas.la' as a requirement for
++#'libgsl.ls' only if the host system is detected to be MingW32. This
++# is unfortunate as 'libgsl.la' has undefined 'cblas' symbols the
++# result is linking errors at run time. This patch sets the 'cblas'
++# library as a requirement for linking 'libgsl'.
++#
++# Origional script:
++#
++# if MINGW32_HOST
++# libgsl_la_LIBADD += cblas/libgslcblas.la
++# libgsl_la_LDFLAGS += -no-undefined
++# endif
++
+ libgsl_la_LIBADD += cblas/libgslcblas.la
+ libgsl_la_LDFLAGS += -no-undefined
+-endif
+ 
+ m4datadir = $(datadir)/aclocal
+ m4data_DATA = gsl.m4
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/README
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/README	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/README	(revision 21239)
@@ -0,0 +1,1 @@
+GNU Scientfic Library, obtained from: http://www.gnu.org/software/gsl/
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/finite.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/finite.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/finite.patch	(revision 21239)
@@ -0,0 +1,354 @@
+diff -ruN src/gsl_math.h src-mod/gsl_math.h
+--- src/gsl_math.h	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/gsl_math.h	2014-05-27 18:47:26.000000000 -0700
+@@ -116,7 +116,7 @@
+ #define GSL_SIGN(x)    ((x) >= 0.0 ? 1 : -1)
+ 
+ /* Return nonzero if x is a real number, i.e. non NaN or infinite. */
+-#define GSL_IS_REAL(x) (gsl_finite(x))
++#define GSL_IS_REAL(x) (isfinite(x))
+ 
+ /* Definition of an arbitrary function with parameters */
+ 
+diff -ruN src/integration/cquad.c src-mod/integration/cquad.c
+--- src/integration/cquad.c	2011-05-01 11:46:28.000000000 -0700
++++ src-mod/integration/cquad.c	2014-05-27 18:47:26.000000000 -0700
+@@ -235,7 +235,7 @@
+     {
+       iv->fx[i] = GSL_FN_EVAL (f, m + xi[i] * h);
+       neval++;
+-      if (!finite (iv->fx[i]))
++      if (!isfinite (iv->fx[i]))
+ 	{
+ 	  nans[nnans++] = i;
+ 	  iv->fx[i] = 0.0;
+@@ -319,7 +319,7 @@
+ 	  nnans = 0;
+ 	  for (i = 0; i <= 32; i += skip[d])
+ 	    {
+-	      if (!finite (iv->fx[i]))
++	      if (!isfinite (iv->fx[i]))
+ 		{
+ 		  nans[nnans++] = i;
+ 		  iv->fx[i] = 0.0;
+@@ -444,7 +444,7 @@
+ 	  nnans = 0;
+ 	  for (i = 0; i <= 32; i += skip[0])
+ 	    {
+-	      if (!finite (ivl->fx[i]))
++	      if (!isfinite (ivl->fx[i]))
+ 		{
+ 		  nans[nnans++] = i;
+ 		  ivl->fx[i] = 0.0;
+@@ -510,7 +510,7 @@
+ 	  nnans = 0;
+ 	  for (i = 0; i <= 32; i += skip[0])
+ 	    {
+-	      if (!finite (ivr->fx[i]))
++	      if (!isfinite (ivr->fx[i]))
+ 		{
+ 		  nans[nnans++] = i;
+ 		  ivr->fx[i] = 0.0;
+diff -ruN src/linalg/balance.c src-mod/linalg/balance.c
+--- src/linalg/balance.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/linalg/balance.c	2014-05-27 18:47:27.000000000 -0700
+@@ -54,7 +54,7 @@
+       
+       double f = 1.0;
+       
+-      if (s == 0.0 || !gsl_finite(s))
++      if (s == 0.0 || !isfinite(s))
+         {
+           gsl_vector_set (D, j, f);
+           continue;
+diff -ruN src/min/min.h src-mod/min/min.h
+--- src/min/min.h	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/min/min.h	2014-05-27 18:47:27.000000000 -0700
+@@ -20,6 +20,6 @@
+ #define SAFE_FUNC_CALL(f, x, yp) \
+ do { \
+   *yp = GSL_FN_EVAL(f,x); \
+-  if (!gsl_finite(*yp)) \
++  if (!isfinite(*yp)) \
+     GSL_ERROR("computed function value is infinite or NaN", GSL_EBADFUNC); \
+ } while (0)
+diff -ruN src/multimin/simplex.c src-mod/multimin/simplex.c
+--- src/multimin/simplex.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/multimin/simplex.c	2014-05-27 18:47:27.000000000 -0700
+@@ -122,7 +122,7 @@
+ 	     we finish the contraction (and do not abort) to allow the user
+ 	     to handle the situation */
+ 
+-          if(!gsl_finite(newval))
++          if(!isfinite(newval))
+ 	    {
+ 	      status = GSL_EBADFUNC;
+ 	    }
+@@ -260,7 +260,7 @@
+ 
+   val = GSL_MULTIMIN_FN_EVAL (f, x);
+   
+-  if (!gsl_finite(val))
++  if (!isfinite(val))
+     {
+       GSL_ERROR("non-finite function value encountered", GSL_EBADFUNC);
+     }
+@@ -283,7 +283,7 @@
+       gsl_vector_set (xtemp, i, val);
+       val = GSL_MULTIMIN_FN_EVAL (f, xtemp);
+   
+-      if (!gsl_finite(val))
++      if (!isfinite(val))
+         {
+           GSL_ERROR("non-finite function value encountered", GSL_EBADFUNC);
+         }
+@@ -374,14 +374,14 @@
+ 
+   val = nmsimplex_move_corner (-1.0, state, hi, xc, f);
+ 
+-  if (gsl_finite(val) && val < gsl_vector_get (y1, lo))
++  if (isfinite(val) && val < gsl_vector_get (y1, lo))
+     {
+ 
+       /* reflected point becomes lowest point, try expansion */
+ 
+       val2 = nmsimplex_move_corner (-2.0, state, hi, xc2, f);
+ 
+-      if (gsl_finite(val2) && val2 < gsl_vector_get (y1, lo))
++      if (isfinite(val2) && val2 < gsl_vector_get (y1, lo))
+         {
+           gsl_matrix_set_row (x1, hi, xc2);
+           gsl_vector_set (y1, hi, val2);
+@@ -397,9 +397,9 @@
+      or
+      we got a non-finite (illegal) function value */
+ 
+-  else if (!gsl_finite(val) || val > gsl_vector_get (y1, s_hi))
++  else if (!isfinite(val) || val > gsl_vector_get (y1, s_hi))
+     {
+-      if (gsl_finite(val) && val <= gsl_vector_get (y1, hi))
++      if (isfinite(val) && val <= gsl_vector_get (y1, hi))
+         {
+ 
+           /* if trial point is better than highest point, replace 
+@@ -413,7 +413,7 @@
+ 
+       val2 = nmsimplex_move_corner (0.5, state, hi, xc2, f);
+ 
+-      if (gsl_finite(val2) && val2 <= gsl_vector_get (y1, hi))
++      if (isfinite(val2) && val2 <= gsl_vector_get (y1, hi))
+         {
+           gsl_matrix_set_row (state->x1, hi, xc2);
+           gsl_vector_set (y1, hi, val2);
+diff -ruN src/multimin/simplex2.c src-mod/multimin/simplex2.c
+--- src/multimin/simplex2.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/multimin/simplex2.c	2014-05-27 18:47:27.000000000 -0700
+@@ -171,7 +171,7 @@
+ 	     we finish the contraction (and do not abort) to allow the user
+ 	     to handle the situation */
+ 
+-	  if (!gsl_finite (newval))
++	  if (!isfinite (newval))
+ 	    {
+ 	      status = GSL_EBADFUNC;
+ 	    }
+@@ -367,7 +367,7 @@
+ 
+   val = GSL_MULTIMIN_FN_EVAL (f, x);
+ 
+-  if (!gsl_finite (val))
++  if (!isfinite (val))
+     {
+       GSL_ERROR ("non-finite function value encountered", GSL_EBADFUNC);
+     }
+@@ -394,7 +394,7 @@
+ 	val = GSL_MULTIMIN_FN_EVAL (f, xtemp);
+       }
+ 
+-      if (!gsl_finite (val))
++      if (!isfinite (val))
+ 	{
+ 	  GSL_ERROR ("non-finite function value encountered", GSL_EBADFUNC);
+ 	}
+@@ -477,13 +477,13 @@
+ 
+   val = try_corner_move (-1.0, state, hi, xc, f);
+ 
+-  if (gsl_finite (val) && val < gsl_vector_get (y1, lo))
++  if (isfinite (val) && val < gsl_vector_get (y1, lo))
+     {
+       /* reflected point is lowest, try expansion */
+ 
+       val2 = try_corner_move (-2.0, state, hi, xc2, f);
+ 
+-      if (gsl_finite (val2) && val2 < gsl_vector_get (y1, lo))
++      if (isfinite (val2) && val2 < gsl_vector_get (y1, lo))
+ 	{
+ 	  update_point (state, hi, xc2, val2);
+ 	}
+@@ -492,12 +492,12 @@
+ 	  update_point (state, hi, xc, val);
+ 	}
+     }
+-  else if (!gsl_finite (val) || val > gsl_vector_get (y1, s_hi))
++  else if (!isfinite (val) || val > gsl_vector_get (y1, s_hi))
+     {
+       /* reflection does not improve things enough, or we got a
+          non-finite function value */
+ 
+-      if (gsl_finite (val) && val <= gsl_vector_get (y1, hi))
++      if (isfinite (val) && val <= gsl_vector_get (y1, hi))
+ 	{
+ 	  /* if trial point is better than highest point, replace
+ 	     highest point */
+@@ -509,7 +509,7 @@
+ 
+       val2 = try_corner_move (0.5, state, hi, xc2, f);
+ 
+-      if (gsl_finite (val2) && val2 <= gsl_vector_get (y1, hi))
++      if (isfinite (val2) && val2 <= gsl_vector_get (y1, hi))
+ 	{
+ 	  update_point (state, hi, xc2, val2);
+ 	}
+@@ -605,7 +605,7 @@
+ 
+   val = GSL_MULTIMIN_FN_EVAL (f, x);
+ 
+-  if (!gsl_finite (val))
++  if (!isfinite (val))
+     {
+       GSL_ERROR ("non-finite function value encountered", GSL_EBADFUNC);
+     }
+@@ -669,7 +669,7 @@
+ 
+ 	val = GSL_MULTIMIN_FN_EVAL (f, &r_i.vector);
+ 
+-	if (!gsl_finite (val))
++	if (!isfinite (val))
+ 	  {
+ 	    GSL_ERROR ("non-finite function value encountered", GSL_EBADFUNC);
+ 	  }
+diff -ruN src/roots/newton.c src-mod/roots/newton.c
+--- src/roots/newton.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/roots/newton.c	2014-05-27 18:47:27.000000000 -0700
+@@ -83,12 +83,12 @@
+   state->f = f_new ;
+   state->df = df_new ;
+ 
+-  if (!gsl_finite(f_new))
++  if (!isfinite(f_new))
+     {
+       GSL_ERROR ("function value is not finite", GSL_EBADFUNC);
+     }
+ 
+-  if (!gsl_finite (df_new))
++  if (!isfinite (df_new))
+     {
+       GSL_ERROR ("derivative value is not finite", GSL_EBADFUNC);
+     }
+diff -ruN src/roots/roots.h src-mod/roots/roots.h
+--- src/roots/roots.h	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/roots/roots.h	2014-05-27 18:47:27.000000000 -0700
+@@ -28,7 +28,7 @@
+ #define SAFE_FUNC_CALL(f, x, yp) \
+ do { \
+   *yp = GSL_FN_EVAL(f,x); \
+-  if (!gsl_finite(*yp)) \
++  if (!isfinite(*yp)) \
+     GSL_ERROR("function value is not finite", GSL_EBADFUNC); \
+ } while (0)
+ 
+diff -ruN src/roots/secant.c src-mod/roots/secant.c
+--- src/roots/secant.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/roots/secant.c	2014-05-27 18:47:27.000000000 -0700
+@@ -94,12 +94,12 @@
+   state->f = f_new ;
+   state->df = df_new ;
+ 
+-  if (!gsl_finite (f_new))
++  if (!isfinite (f_new))
+     {
+       GSL_ERROR ("function value is not finite", GSL_EBADFUNC);
+     }
+ 
+-  if (!gsl_finite (df_new))
++  if (!isfinite (df_new))
+     {
+       GSL_ERROR ("derivative value is not finite", GSL_EBADFUNC);
+     }
+diff -ruN src/roots/steffenson.c src-mod/roots/steffenson.c
+--- src/roots/steffenson.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/roots/steffenson.c	2014-05-27 18:47:27.000000000 -0700
+@@ -105,7 +105,7 @@
+   state->f = f_new ;
+   state->df = df_new ;
+ 
+-  if (!gsl_finite (f_new))
++  if (!isfinite (f_new))
+     {
+       GSL_ERROR ("function value is not finite", GSL_EBADFUNC);
+     }
+@@ -126,7 +126,7 @@
+         *root = x_1 - u * u / v ;  /* accelerated value */
+     }
+ 
+-  if (!gsl_finite (df_new))
++  if (!isfinite (df_new))
+     {
+       GSL_ERROR ("derivative value is not finite", GSL_EBADFUNC);
+     }
+diff -ruN src/specfunc/hyperg_U.c src-mod/specfunc/hyperg_U.c
+--- src/specfunc/hyperg_U.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/specfunc/hyperg_U.c	2014-05-27 18:47:28.000000000 -0700
+@@ -524,7 +524,7 @@
+         t_err = a0_err + b0_err;
+         dchu_val += t_val;
+         dchu_err += t_err;
+-        if(!finite(t_val) || fabs(t_val) < EPS*fabs(dchu_val)) break;
++        if(!isfinite(t_val) || fabs(t_val) < EPS*fabs(dchu_val)) break;
+       }
+ 
+       result->val  = dchu_val;
+diff -ruN src/sys/ldfrexp.c src-mod/sys/ldfrexp.c
+--- src/sys/ldfrexp.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/sys/ldfrexp.c	2014-05-27 18:47:28.000000000 -0700
+@@ -60,7 +60,7 @@
+       *e = 0;
+       return 0.0;
+     }
+-  else if (!finite (x))
++  else if (!isfinite (x))
+     {
+       *e = 0;
+       return x;
+@@ -85,7 +85,7 @@
+ 
+       f = x * pow (2.0, -ei);
+ 
+-      if (!finite (f))
++      if (!isfinite (f))
+         {
+           /* This should not happen */
+           *e = 0;
+diff -ruN src/test/results.c src-mod/test/results.c
+--- src/test/results.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/test/results.c	2014-05-27 18:47:28.000000000 -0700
+@@ -24,7 +24,10 @@
+ #include <stdlib.h>
+ #include <gsl/gsl_sys.h>
+ #include <gsl/gsl_machine.h>
++#include <stdarg.h>
++#define STDC_HEADERS
+ 
++/*
+ #if HAVE_VPRINTF
+ #ifdef STDC_HEADERS
+ #include <stdarg.h>
+@@ -32,6 +35,7 @@
+ #include <varargs.h>
+ #endif
+ #endif
++*/
+ 
+ #include <gsl/gsl_test.h>
+ 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-android.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-android.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-android.sh	(revision 21239)
@@ -0,0 +1,49 @@
+#!/bin/bash
+set -eu
+
+source $ANDROID_DIR/android_aux.sh
+
+if [[ $step == "1" || $step == "0" ]]; then
+
+    #Some cleanup
+    rm -rf src install gsl-1.15
+    mkdir src install
+
+    #Download from ISSM server
+    $ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gsl-1.' 'gsl-1.15.tar.gz'
+
+    #Untar 
+    tar -zxvf  gsl-1.15.tar.gz
+
+    #Move gsl into src directory
+    mv gsl-1.15/* src
+    rm -rf gsl-1.15
+fi
+
+#Configure gsl
+if [[ $step == "2" || $step == "0" ]]; then
+    cd src
+
+    patch Makefile.am < ./../Makefile.am.patch
+
+    autoreconf -if
+
+    ./configure \
+        --build="i386-apple-darwin10.8.0" \
+        --host=$host_triplet \
+	    --prefix="$ISSM_DIR/externalpackages/gsl/install"
+fi
+
+#Compile gsl
+if [[ $step == "3" || $step == "0" ]]; then
+	cd $ISSM_DIR/externalpackages/gsl/src
+
+    if [ $# -eq 0 ]; then
+	    make 
+    else
+	    make -j $j 
+    fi
+
+    make install
+fi
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-greenplanet.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-greenplanet.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-greenplanet.sh	(revision 21239)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install gsl-1.15
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gsl-1.15.tar.gz' 'gsl-1.15.tar.gz'
+
+#Untar 
+tar -zxvf  gsl-1.15.tar.gz
+
+#Move gsl into src directory
+mv gsl-1.15/* src
+rm -rf gsl-1.15
+
+#Configure gsl
+cd src
+
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/gsl/install" 
+
+#Compile gsl
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-ios.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-ios.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-ios.sh	(revision 21239)
@@ -0,0 +1,63 @@
+#!/bin/bash
+set -eu
+
+source $ANDROID_DIR/android_aux.sh
+export DEVROOT="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/"
+export SDKROOT="$DEVROOT/SDKs/iPhoneOS6.0.sdk/"
+export CC="$DEVROOT/usr/bin/gcc -arch armv7"
+export CFLAGS="-O -arch armv7 -isysroot $SDKROOT"
+export CXXFLAGS="-O -arch armv7 -isysroot $SDKROOT"
+export CPP=$DEVROOT/usr/bin/cpp
+export CXX=$DEVROOT/usr/bin/g++
+export AR=$DEVROOT/usr/bin/ar
+export AS=$DEVROOT/usr/bin/as
+export LIBTOOL=$DEVROOT/usr/bin/libtool
+export LDFLAGS="-lstdc++ -arch armv7 -isysroot $SDKROOT"
+export STRIP=$DEVROOT/usr/bin/strip
+export RANLIB=$DEVROOT/usr/bin/ranlib
+
+
+if [[ $step == "1" || $step == "0" ]]; then
+
+    #Some cleanup
+    rm -rf src install gsl-1.15
+    mkdir src install
+
+    #Download from ISSM server
+    $ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gsl-1.' 'gsl-1.15.tar.gz'
+
+    #Untar 
+    tar -zxvf  gsl-1.15.tar.gz
+
+    #Move gsl into src directory
+    mv gsl-1.15/* src
+    rm -rf gsl-1.15
+fi
+
+#Configure gsl
+if [[ $step == "2" || $step == "0" ]]; then
+    cd src
+
+    patch Makefile.am < ./../Makefile.am.patch
+
+    autoreconf -if
+
+    ./configure \
+		--build="i386-apple-darwin10.8.0" \
+		--host="arm-apple-darwin10" \
+	    --prefix="$ISSM_DIR/externalpackages/gsl/install"
+fi
+
+#Compile gsl
+if [[ $step == "3" || $step == "0" ]]; then
+	cd $ISSM_DIR/externalpackages/gsl/src
+
+    if [ $# -eq 0 ]; then
+	    make 
+    else
+	    make -j $j 
+    fi
+
+    make install
+fi
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-javascript.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-javascript.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-javascript.sh	(revision 21239)
@@ -0,0 +1,35 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src-javascript install-javascript gsl-1.15
+mkdir src-javascript install-javascript
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gsl-1.15.tar.gz' 'gsl-1.15.tar.gz'
+
+#Untar 
+tar -zxvf  gsl-1.15.tar.gz
+
+#Move gsl into src directory
+mv gsl-1.15/* src-javascript
+rm -rf gsl-1.15
+
+#Configure gsl
+cd src-javascript
+
+export CC=emcc
+export CXX=em++
+
+# Issue with variadic function signatures.
+export CFLAGS=-DSTDC_HEADERS
+
+./configure --prefix="$ISSM_DIR/externalpackages/gsl/install-javascript" 
+
+#Compile gsl
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-linux64.sh	(revision 21239)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install gsl-1.15
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gsl-1.15.tar.gz' 'gsl-1.15.tar.gz'
+
+#Untar 
+tar -zxvf  gsl-1.15.tar.gz
+
+#Move gsl into src directory
+mv gsl-1.15/* src
+rm -rf gsl-1.15
+
+#Configure gsl
+cd src
+
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/gsl/install" 
+
+#Compile gsl
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-macosx64.sh	(revision 21239)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install gsl-1.15
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gsl-1.15.tar.gz' 'gsl-1.15.tar.gz'
+
+#Untar 
+tar -zxvf  gsl-1.15.tar.gz
+
+#Move gsl into src directory
+mv gsl-1.15/* src
+rm -rf gsl-1.15
+
+#Configure gsl
+cd src
+
+export CFLAGS=" -arch x86_64"
+
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/gsl/install" 
+
+#Compile gsl
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-pleiades.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-pleiades.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-pleiades.sh	(revision 21239)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install gsl-1.15
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gsl-1.15.tar.gz' 'gsl-1.15.tar.gz'
+
+#Untar 
+tar -zxvf  gsl-1.15.tar.gz
+
+#Move gsl into src directory
+mv gsl-1.15/* src
+rm -rf gsl-1.15
+
+#Configure gsl
+cd src
+
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/gsl/install" 
+
+#Compile gsl
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-walgreen.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-walgreen.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gsl/install-walgreen.sh	(revision 21239)
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install gsl-1.15
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gsl-1.15.tar.gz' 'gsl-1.15.tar.gz'
+
+#Untar 
+tar -zxvf  gsl-1.15.tar.gz
+
+#Move gsl into src directory
+mv gsl-1.15/* src
+rm -rf gsl-1.15
+
+#Configure gsl
+cd src
+
+export CC=icc
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/gsl/install" 
+
+#Compile gsl
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gslib/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gslib/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/gslib/install.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gslib90_ls.tar.gz' 'gslib90_ls.tar.gz'
+
+#Untar 
+tar -zxvf  gslib90_ls.tar.gz
+
+#Move gslib into install directory
+mv gslib90/* install
+rm -rf gslib90
+
+#Change compiler to gfortran
+cd install
+cat Makefile | sed -e "s/FC=g95/FC=ifort/g" > Makefile.bak
+mv Makefile.bak Makefile
+cat gslib/Makefile | sed -e "s/FC=g95/FC=ifort/g" > Makefile.bak
+mv Makefile.bak gslib/Makefile
+make 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/h5py/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/h5py/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/h5py/install.sh	(revision 21239)
@@ -0,0 +1,25 @@
+#!/bin/bash
+set -eu
+
+#needed further along
+export HDF5_DIR=$ISSM_DIR/externalpackages/hdf5/install
+
+#Some cleanup
+rm -rf install h5py-2.0.1
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/h5py-2.0.1.tar.gz' 'h5py-2.0.1.tar.gz'
+
+#Untar 
+tar -zxvf  h5py-2.0.1.tar.gz
+
+#Move h5py to install directory
+rm -rf install/*
+mv h5py-2.0.1/* install/
+rm -rf h5py-2.0.1
+
+#Configure and compile
+cd install
+python setup.py build –hdf5=$ISSM_DIR/externalpackages/hdf5/install
+python setup.py install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/hdf5/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/hdf5/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/hdf5/install.sh	(revision 21239)
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install hdf5-1.8.9
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/hdf5-1.8.9.tar.gz' 'hdf5-1.8.9.tar.gz'
+
+#Untar 
+tar -zxvf  hdf5-1.8.9.tar.gz
+
+#Move hdf5 to src directory
+rm -rf src/*
+mv hdf5-1.8.9/* src/
+rm -rf hdf5-1.8.9
+
+# This project uses C code with C++ style comment default C standard used by 
+# GNU's C compiler's default C standard  does not support C++ style comments.
+# As such, we need to specify a standard that does.
+export CFLAGS='-std=c99'
+
+#Configure and compile
+cd src
+./configure  --prefix="$ISSM_DIR/externalpackages/hdf5/install" 
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/howatmask/enviread.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/howatmask/enviread.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/howatmask/enviread.m	(revision 21239)
@@ -0,0 +1,323 @@
+function I=enviread(varargin)
+%enviread: Read binary image files using ENVI header information
+%
+%I=enviread('filename') where the header file is named filename.hdr
+%and exists in the same directory. Otherwise use 
+%
+%I=enviread('filename','hdrfilename')
+%
+%The output structure I contains fields I.x, I.y, I.z and I.info
+%containing the x-coordinate vector, y-coordinate vector,
+%images data and header info, respectively. I.z will be in whatever
+%number format (double, int, etc.) as in the envi file.
+%
+%Original version by Ian Howat, Ohio State Universtiy, ihowat@gmail.com
+%Thanks to Yushin Ahn and Ray Jung
+%
+%% Current version 3 - adding subsetting feature to read only parts of
+%% files.
+
+file=varargin{1};
+hdrfile=[deblank(file),'.hdr'];
+info=read_envihdr(hdrfile);
+sub = [1, info.samples, 1, info.lines];
+if nargin==2
+    if varargin{2}=='date'
+        [pathstr, name, ext, versn] = fileparts(file);
+        info.hdrname=hdrfile;
+        info.ipath=pathstr;
+        info.iname=name;
+        info.ipname=file;
+        info.year =name(1:4);
+        info.month=name(5:6);
+        info.day  =name(7:8);
+        info.date =name(1:8);
+        info.sfname=name(1:14);
+        info.datenum=datenum(str2double(info.year),...
+            str2double(info.month),str2double(info.day));
+    end
+end
+
+% subset
+if nargin == 3;
+    if strcmp(varargin{2},'pixel_subset');
+        sub = varargin{3};
+    elseif strcmp(varargin{2},'map_subset');
+        sub = varargin{3};
+        subx = (sub(1:2)-info.map_info.mapx)./info.map_info.dx;
+        suby = (info.map_info.mapy - sub(3:4))./info.map_info.dy;
+        subx = round(subx);
+        suby = round(suby);
+        
+        subx(subx < 1) = 1;
+        suby(suby < 1) = 1;
+        subx(subx > info.samples) = info.samples;
+        suby(suby > info.lines)   = info.lines;
+      
+        sub  = [subx,suby];
+    end
+end
+
+sub(1:2) = sort(sub(1:2));
+sub(3:4) = sort(sub(3:4));
+
+
+%% Make geo-location vectors
+if isfield(info.map_info,'mapx') && isfield(info.map_info,'mapy')
+    xi = info.map_info.image_coords(1);
+    yi = info.map_info.image_coords(2);
+    xm = info.map_info.mapx;
+    ym = info.map_info.mapy;
+    %adjust points to corner (1.5,1.5)
+    if yi > 1.5
+        ym =  ym + ((yi*info.map_info.dy)-info.map_info.dy);
+    end
+    if xi > 1.5
+        xm = xm - ((xi*info.map_info.dy)-info.map_info.dx);
+    end
+
+    I.x = xm + ((0:info.samples-1).*info.map_info.dx);
+    I.y = ym - ((0:info.lines-1).*  info.map_info.dy);
+    %I.x = xm + (subE(1):subE(2)-1).*info.map_info.dx;
+    %I.y = ym - (subE(3):subE(4)-1).*info.map_info.dy;
+end
+
+
+I.x = I.x(sub(1):sub(2));
+I.y = I.y(sub(3):sub(4));
+
+
+%% Set binary format parameters
+switch info.byte_order
+    case {0}
+        machine = 'ieee-le';
+    case {1}
+        machine = 'ieee-be';
+    otherwise
+        machine = 'n';
+end
+switch info.data_type
+    case {1}
+        format = 'uint8';
+    case {2}
+        format= 'int16';
+    case{3}
+        format= 'int32';
+    case {4}
+        format= 'single';
+    case {5}
+        format= 'double';
+    case {6}
+        disp('>> Sorry, Complex (2x32 bits)data currently not supported');
+        disp('>> Importing as double-precision instead');
+        format= 'double';
+    case {9}
+        error('Sorry, double-precision complex (2x64 bits) data currently not supported');
+    case {12}
+        format= 'uint16';
+    case {13}
+        format= 'uint32';
+    case {14}
+        format= 'int64';
+    case {15}
+        format= 'uint64';
+    otherwise
+        error(['File type number: ',num2str(dtype),' not supported']);
+end
+
+%% file read
+% Version 2 code by Yushin Ahn - replaces resize calls with loops (except
+% for BIP formats) to work on big arrays.
+
+        %tmp=zeros(info.lines, info.samples,info.bands,format);
+        tmp=zeros(sub(4)-sub(3)+1,sub(2)-sub(1)+1,info.bands,format);
+        fid=fopen(file,'r');
+
+switch lower(info.interleave)
+
+    case {'bsq'}
+        % Format:
+        % [Band 1]       
+        % R1: C1, C2, C3, ...
+        % R2: C1, C2, C3, ...
+        %  ...
+        % RN: C1, C2, C3, ...
+        %
+        % [Band 2]
+        %  ...
+        % [Band N]
+
+%% Old Script w/out subsetting
+%         for b=1:info.bands
+%             for i=1:info.lines
+%                 t=fread(fid,info.samples,format);
+%                 tmp(i,:,b)=t;    
+%             end
+%         end
+        
+%% New Subsetting script - IMH
+        offset1=(sub(3)-1)*info.samples;
+        fseek(fid,offset1,'bof');
+        for b=1:info.bands
+            for i=sub(3):sub(4)
+                t=fread(fid,info.samples,format);
+                %if i >=  sub(3) && i <= sub(4)
+                    tmp(i-sub(3)+1,:,b)=t(sub(1):sub(2));
+                %end
+            end
+            offset2 = info.samples*info.lines*b+offset1;
+            fseek(fid,offset2,'bof');
+        end
+
+    case {'bil'}
+        % Format:        
+        % [Row 1]      
+        % B1: C1, C2, C3, ...
+        % B2: C1, C2, C3, ...
+        %
+        %  ...
+        % [Row N]
+
+%         for i=1:info.lines
+%             for b=1:info.bands
+%                  t=fread(fid,info.samples,format);
+%                 tmp(i,:,b)=t;       
+%             end
+%         end
+      
+%% New Subsetting script - IMH
+        for i=1:sub(4) 
+            for b=1:info.bands
+                t=fread(fid,info.samples,format);
+                if i >=  sub(3) && i <= sub(4) 
+                    tmp(i-sub(3)+1,:,b)=t(sub(1):sub(2));    
+                end
+            end
+        end
+
+
+
+    case {'bip'}
+    
+        % Row 1
+        % C1: B1 B2 B3, ...
+        % C2: B1 B2 B3, ...
+        % ...
+        % Row N
+        %This section authored by Ray Jung, APL-Johns Hopkins
+        Z = fread(fid,info.samples*info.lines*info.bands,format,0,machine);  
+        Z = reshape(Z, [info.bands, info.samples, info.lines]);
+
+        for k=1:info.bands
+            tmp(:,:,k) = squeeze(Z(k,:,:))';
+        end     
+end
+fclose(fid);
+
+% tmp2=zeros(subE(4)-subE(3)+1,subE(2)-subE(1)+1,info.bands,format);
+% [a,b]=size(tmp);
+% for i=1:info.bands
+%     tmp2(xoff+1:a,yoff+1:b,1)=tmp(1:a,1:b,1);
+% end
+I.z=tmp;
+I.info =info;
+
+
+
+%% sub function
+function info = read_envihdr(hdrfile)
+% READ_ENVIHDR read and return ENVI image file header information.
+%   INFO = READ_ENVIHDR('HDR_FILE') reads the ASCII ENVI-generated image
+%   header file and returns all the information in a structure of
+%   parameters.
+%
+%   Example:
+%   >> info = read_envihdr('my_envi_image.hdr')
+%   info =
+%          description: [1x101 char]
+%              samples: 658
+%                lines: 749
+%                bands: 3
+%        header_offset: 0
+%            file_type: 'ENVI Standard'
+%            data_type: 4
+%           interleave: 'bsq'
+%          sensor_type: 'Unknown'
+%           byte_order: 0
+%             map_info: [1x1 struct]
+%      projection_info: [1x102 char]
+%     wavelength_units: 'Unknown'
+%           pixel_size: [1x1 struct]
+%           band_names: [1x154 char]
+%
+%   NOTE: This function is used by ENVIREAD to import data.
+% Ian M. Howat, Applied Physics Lab, University of Washington
+% ihowat@apl.washington.edu
+% Version 1: 19-Jul-2007 00:50:57
+fid = fopen(hdrfile);
+while fid;
+    line = fgetl(fid);
+    if line == -1
+        break
+    else
+        eqsn = findstr(line,'=');
+        if ~isempty(eqsn)
+            param = strtrim(line(1:eqsn-1));
+            param(findstr(param,' ')) = '_';
+            value = strtrim(line(eqsn+1:end));
+            if isempty(str2num(value))
+                if ~isempty(findstr(value,'{')) && isempty(findstr(value,'}'))
+                    while isempty(findstr(value,'}'))
+                        line = fgetl(fid);
+                        value = [value,strtrim(line)];
+                    end
+                end
+                eval(['info.',param,' = ''',value,''';'])
+            else
+                eval(['info.',param,' = ',value,';'])
+            end
+        end
+    end
+end
+fclose(fid);
+
+if isfield(info,'map_info')
+    line = info.map_info;
+    line(line == '{' | line == '}') = [];
+    line = strtrim(split(line,','));
+    info.map_info = [];
+    info.map_info.projection = line{1};
+    info.map_info.image_coords = [str2num(line{2}),str2num(line{3})];
+    info.map_info.mapx = str2num(line{4});
+    info.map_info.mapy = str2num(line{5});
+    info.map_info.dx  = str2num(line{6});
+    info.map_info.dy  = str2num(line{7});
+    if length(line) == 9
+        info.map_info.datum  = line{8};
+        info.map_info.units  = line{9}(7:end);
+    elseif length(line) == 11
+        info.map_info.zone  = str2num(line{8});
+        info.map_info.hemi  = line{9};
+        info.map_info.datum  = line{10};
+        info.map_info.units  = line{11}(7:end);
+    end
+end
+
+if isfield(info,'pixel_size')
+    line = info.pixel_size;
+    line(line == '{' | line == '}') = [];
+    line = strtrim(split(line,','));
+    info.pixel_size = [];
+    info.pixel_size.x = str2num(line{1});
+    info.pixel_size.y = str2num(line{2});
+    info.pixel_size.units = line{3}(7:end);
+end
+
+%%
+function A = split(s,d)
+%This function by Gerald Dalley (dalleyg@mit.edu), 2004
+A = {};
+while (length(s) > 0)
+    [t,s] = strtok(s,d);
+    A = {A{:}, t};
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/howatmask/subsetGimpIceMask.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/howatmask/subsetGimpIceMask.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/howatmask/subsetGimpIceMask.m	(revision 21239)
@@ -0,0 +1,282 @@
+function [M,Mx,My] = subsetGimpIceMask(x0,x1,y0,y1)
+% subsetGimpIceMask samples mask tiles for a given coordinate range
+%
+%   [M,Mx,My] = subsetGimpIceMask(x0,x1,y0,y1) returns the mask in array M
+%   with map vectors Mx and My within the bounding box specified by
+%   coordinate ranges x0 < x1 and y0 < y1. The function finds tiles
+%   overlappimg the box, samples the tiles and mosaics the samples into one
+%   array.
+%
+% 	Example: Specify the following coordinate range and map the result.
+%   >> x0 = 260000; x1 = 377900;  y0 = -2609400; y1 = -2543000;
+%   >> [M,Mx,My] = subsetGimpIceMask(x0,x1,y0,y1);
+%   >> imagesc(Mx,My,M); axis equal xy; colormap gray;
+%
+%   Ian Howat, Ohio State University, ihowat@gmail.com
+%   The Greenland Ice Mapping Project is funded by NASA.
+%   $Revision: 0 $  $Date: 09-Nov-2011 14:48:24$
+%
+
+%make coordinate index
+nt = 6;
+ps = 15;
+xn0 = -640000 ; %xn1 = 857550;
+yn0 =  -3313350; %yn1 = -665450;
+
+c = 16640;
+r = 29420;
+
+x = xn0:ps:xn0 + c.*ps.*nt;
+y = yn0:ps:yn0 + r.*ps.*nt;
+
+X = cell(1,nt);
+Y = cell(nt,1);
+i=1;
+for i=1:nt;
+    
+    X{i} = [x((i-1)*c+1),x(i*c)];
+    Y{i} = [y((i-1)*r+1),y(i*r)];
+    
+end
+
+X = repmat(X,[nt,1]);
+Y = repmat(Y,[1,nt]);
+N = cell(size(X));
+
+
+i=1;
+for i=1:numel(X)
+    N{i} = [[X{i}(1),Y{i}(2)];...
+        [X{i}(2),Y{i}(2)];...
+        [X{i}(2),Y{i}(1)];...
+        [X{i}(1),Y{i}(1)]];
+end
+
+
+%% find overlapping tiles
+p = [[x0,y1];[x1,y1];[x1,y0];[x0,y0]];
+
+n = zeros(size(N));
+
+i=1;
+for i=1:numel(N)
+    n(i) = any(inpolygon(p(:,1),p(:,2),N{i}(:,1),N{i}(:,2)));
+end
+i=1;
+for i=1:size(n,1)
+    n(i,find(n(i,:),1,'first'):find(n(i,:),1,'last')) = 1;
+end
+i=1;
+for i=1:size(n,2)
+    n(find(n(:,i),1,'first'):find(n(:,i),1,'last'),i) = 1;
+end
+
+[i,j] = find(n);
+row = (min(i):max(i))';
+col = min(j):max(j);
+col = repmat(col,[length(row),1])-1;
+row = repmat(row,[1,size(col,2)])-1;
+
+% make output cells
+M = cell(size(row));
+Mx = M;
+My = M;
+
+% read each overlapping file and populate output cell
+j=1;
+for j=1:size(col,2)
+    i=1;
+    for i=1:size(row,1);
+        m = enviread(['GimpIceMask_15m_tile',num2str(col(i,j)),'_',...
+            num2str(row(i,j))],'map_subset',[x0 x1 y0 y1]);
+        M{end-i+1,j} = m.z;
+        Mx{end-i+1,j} = m.x;
+        My{end-i+1,j} = m.y';
+        
+        
+    end
+end
+
+% put together cells
+M = cell2mat(M);
+Mx =cell2mat(Mx(1,:));
+My =cell2mat(My(:,1));
+
+
+function I=enviread(varargin)
+
+file=varargin{1};
+hdrfile=[deblank(file),'.hdr'];
+info=read_envihdr(hdrfile);
+sub = [1, info.samples, 1, info.lines];
+
+sub = varargin{3};
+subx = (sub(1:2)-info.map_info.mapx)./info.map_info.dx;
+suby = (info.map_info.mapy - sub(3:4))./info.map_info.dy;
+subx = round(subx);
+suby = round(suby);
+
+subx(subx < 1) = 1;
+suby(suby < 1) = 1;
+subx(subx > info.samples) = info.samples;
+suby(suby > info.lines)   = info.lines;
+
+sub  = [subx,suby];
+
+sub(1:2) = sort(sub(1:2));
+sub(3:4) = sort(sub(3:4));
+
+%% Make geo-location vectors
+if isfield(info.map_info,'mapx') && isfield(info.map_info,'mapy')
+    xi = info.map_info.image_coords(1);
+    yi = info.map_info.image_coords(2);
+    xm = info.map_info.mapx;
+    ym = info.map_info.mapy;
+    %adjust points to corner (1.5,1.5)
+    if yi > 1.5
+        ym =  ym + ((yi*info.map_info.dy)-info.map_info.dy);
+    end
+    if xi > 1.5
+        xm = xm - ((xi*info.map_info.dy)-info.map_info.dx);
+    end
+    
+    I.x = xm + ((0:info.samples-1).*info.map_info.dx);
+    I.y = ym - ((0:info.lines-1).*  info.map_info.dy);
+    
+end
+
+I.x = I.x(sub(1):sub(2));
+I.y = I.y(sub(3):sub(4));
+
+%% Set binary format parameters
+switch info.byte_order
+    case {0}
+        machine = 'ieee-le';
+    case {1}
+        machine = 'ieee-be';
+    otherwise
+        machine = 'n';
+end
+
+format = 'uint8';
+
+tmp=zeros(sub(4)-sub(3)+1,sub(2)-sub(1)+1,info.bands,format);
+fid=fopen(file,'r');
+
+offset1=(sub(3)-1)*info.samples;
+fseek(fid,offset1,'bof');
+for b=1:info.bands
+    for i=sub(3):sub(4)
+        t=fread(fid,info.samples,format);
+        tmp(i-sub(3)+1,:,b)=t(sub(1):sub(2));
+    end
+    offset2 = info.samples*info.lines*b+offset1;
+    fseek(fid,offset2,'bof');
+end
+
+fclose(fid);
+
+I.z=tmp;
+I.info =info;
+
+%% sub function
+function info = read_envihdr(hdrfile)
+% READ_ENVIHDR read and return ENVI image file header information.
+%   INFO = READ_ENVIHDR('HDR_FILE') reads the ASCII ENVI-generated image
+%   header file and returns all the information in a structure of
+%   parameters.
+%
+%   Example:
+%   >> info = read_envihdr('my_envi_image.hdr')
+%   info =
+%          description: [1x101 char]
+%              samples: 658
+%                lines: 749
+%                bands: 3
+%        header_offset: 0
+%            file_type: 'ENVI Standard'
+%            data_type: 4
+%           interleave: 'bsq'
+%          sensor_type: 'Unknown'
+%           byte_order: 0
+%             map_info: [1x1 struct]
+%      projection_info: [1x102 char]
+%     wavelength_units: 'Unknown'
+%           pixel_size: [1x1 struct]
+%           band_names: [1x154 char]
+%
+%   NOTE: This function is used by ENVIREAD to import data.
+% Ian M. Howat, Applied Physics Lab, University of Washington
+% ihowat@apl.washington.edu
+% Version 1: 19-Jul-2007 00:50:57
+fid = fopen(hdrfile);
+while fid;
+    line = fgetl(fid);
+    if line == -1
+        break
+    else
+        eqsn = findstr(line,'=');
+        if ~isempty(eqsn)
+            param = strtrim(line(1:eqsn-1));
+            param(findstr(param,' ')) = '_';
+            value = strtrim(line(eqsn+1:end));
+            if isempty(str2num(value))
+                if ~isempty(findstr(value,'{')) && isempty(findstr(value,'}'))
+                    while isempty(findstr(value,'}'))
+                        line = fgetl(fid);
+                        value = [value,strtrim(line)];
+                    end
+                end
+                eval(['info.',param,' = ''',value,''';'])
+            else
+                eval(['info.',param,' = ',value,';'])
+            end
+        end
+    end
+end
+fclose(fid);
+
+if isfield(info,'map_info')
+    line = info.map_info;
+    line(line == '{' | line == '}') = [];
+    line = strtrim(split(line,','));
+    info.map_info = [];
+    info.map_info.projection = line{1};
+    info.map_info.image_coords = [str2num(line{2}),str2num(line{3})];
+    info.map_info.mapx = str2num(line{4});
+    info.map_info.mapy = str2num(line{5});
+    info.map_info.dx  = str2num(line{6});
+    info.map_info.dy  = str2num(line{7});
+    if length(line) == 9
+        info.map_info.datum  = line{8};
+        info.map_info.units  = line{9}(7:end);
+    elseif length(line) == 11
+        info.map_info.zone  = str2num(line{8});
+        info.map_info.hemi  = line{9};
+        info.map_info.datum  = line{10};
+        info.map_info.units  = line{11}(7:end);
+    end
+end
+
+if isfield(info,'pixel_size')
+    line = info.pixel_size;
+    line(line == '{' | line == '}') = [];
+    line = strtrim(split(line,','));
+    info.pixel_size = [];
+    info.pixel_size.x = str2num(line{1});
+    info.pixel_size.y = str2num(line{2});
+    info.pixel_size.units = line{3}(7:end);
+end
+
+%%
+function A = split(s,d)
+%This function by Gerald Dalley (dalleyg@mit.edu), 2004
+A = {};
+while (length(s) > 0)
+    [t,s] = strtok(s,d);
+    A = {A{:}, t};
+end
+
+
+
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/inishell/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/inishell/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/inishell/install.sh	(revision 21239)
@@ -0,0 +1,40 @@
+#!/bin/bash
+#inishell install package:  this package is not distributed by ISSM. Please request access to the code by 
+#contacting Mathias Bavay () or logging onto http://models.slf.ch/ and registering.  Once you have a tarball 
+#of the code, please use this script to install.
+
+#we assume you have a inishell-src-*.tgz  tarball
+set -eu
+
+#Do some inquiry about the names of the tar balls: 
+source_tar=`ls inishell-src-*.tgz`
+source_version=`echo $source_tar | sed 's/inishell-src-//g' | sed 's/.tgz//g'`
+
+if [[ $source_tar == "" ]]; then 
+	echo "Could not identify a tar ball for the source code, name should be inishell-src-*.tgz"
+	exit 1
+fi
+if [[ $source_version == "" ]]; then 
+	echo "Could not identify a tar ball version for the source code"
+	exit 1
+fi
+
+
+#Some cleanup
+rm -rf src install inishell-$source_version
+mkdir install
+
+#First deal with source code 
+tar -zxvf  $source_tar
+mv inishell-$source_version src
+rm -rf inishell-$source_version
+
+#Build inishell
+cd src && ant snowpack
+
+#Put the .jar in the install directory
+cp dist/inishell.jar ../install
+
+#Install script to launch inishell jar file directly
+cd ..
+cp scripts/inishell install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/inishell/scripts/inishell
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/inishell/scripts/inishell	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/inishell/scripts/inishell	(revision 21239)
@@ -0,0 +1,3 @@
+#/bin/bash
+
+java -jar $ISSM_DIR/externalpackages/inishell/install/inishell.jar
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/ipython/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/ipython/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/ipython/install.sh	(revision 21239)
@@ -0,0 +1,22 @@
+#!/bin/bash
+set -eu 
+
+#Some cleanup
+rm -rf src
+rm -rf ipython-1.0.0
+mkdir src 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/ipython-1.0.0.tar.gz' 'ipython-1.0.0.tar.gz'
+
+#Untar 
+tar -zxvf  ipython-1.0.0.tar.gz
+
+#Move ipython into src directory
+mv ipython-1.0.0/* src
+rm -rf ipython-1.0.0
+
+#install  ipython
+cd src
+python setup.py build
+python setup.py install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/javascript/src/gauge.min.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/javascript/src/gauge.min.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/javascript/src/gauge.min.js	(revision 21239)
@@ -0,0 +1,1 @@
+(function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q={}.hasOwnProperty,r=function(a,b){function c(){this.constructor=a}for(var d in b)q.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};!function(){var a,b,c,d,e,f,g;for(g=["ms","moz","webkit","o"],c=0,e=g.length;e>c&&(f=g[c],!window.requestAnimationFrame);c++)window.requestAnimationFrame=window[f+"RequestAnimationFrame"],window.cancelAnimationFrame=window[f+"CancelAnimationFrame"]||window[f+"CancelRequestAnimationFrame"];return a=null,d=0,b={},requestAnimationFrame?window.cancelAnimationFrame?void 0:(a=window.requestAnimationFrame,window.requestAnimationFrame=function(c,e){var f;return f=++d,a(function(){return b[f]?void 0:c()},e),f},window.cancelAnimationFrame=function(a){return b[a]=!0}):(window.requestAnimationFrame=function(a,b){var c,d,e,f;return c=(new Date).getTime(),f=Math.max(0,16-(c-e)),d=window.setTimeout(function(){return a(c+f)},f),e=c+f,d},window.cancelAnimationFrame=function(a){return clearTimeout(a)})}(),String.prototype.hashCode=function(){var a,b,c,d,e;if(b=0,0===this.length)return b;for(c=d=0,e=this.length;e>=0?e>d:d>e;c=e>=0?++d:--d)a=this.charCodeAt(c),b=(b<<5)-b+a,b&=b;return b},o=function(a){var b,c;for(b=Math.floor(a/3600),c=Math.floor((a-3600*b)/60),a-=3600*b+60*c,a+="",c+="";c.length<2;)c="0"+c;for(;a.length<2;)a="0"+a;return b=b?b+":":"",b+c+":"+a},m=function(a){return k(a.toFixed(0))},p=function(a,b){var c,d;for(c in b)q.call(b,c)&&(d=b[c],a[c]=d);return a},n=function(a,b){var c,d,e;d={};for(c in a)q.call(a,c)&&(e=a[c],d[c]=e);for(c in b)q.call(b,c)&&(e=b[c],d[c]=e);return d},k=function(a){var b,c,d,e;for(a+="",c=a.split("."),d=c[0],e="",c.length>1&&(e="."+c[1]),b=/(\d+)(\d{3})/;b.test(d);)d=d.replace(b,"$1,$2");return d+e},l=function(a){return"#"===a.charAt(0)?a.substring(1,7):a},j=function(){function a(a,b){null==a&&(a=!0),this.clear=null!=b?b:!0,a&&AnimationUpdater.add(this)}return a.prototype.animationSpeed=32,a.prototype.update=function(a){var b;return null==a&&(a=!1),a||this.displayedValue!==this.value?(this.ctx&&this.clear&&this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height),b=this.value-this.displayedValue,Math.abs(b/this.animationSpeed)<=.001?this.displayedValue=this.value:this.displayedValue=this.displayedValue+b/this.animationSpeed,this.render(),!0):!1},a}(),e=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return r(b,a),b.prototype.displayScale=1,b.prototype.setTextField=function(a){return this.textField=a instanceof i?a:new i(a)},b.prototype.setMinValue=function(a,b){var c,d,e,f,g;if(this.minValue=a,null==b&&(b=!0),b){for(this.displayedValue=this.minValue,f=this.gp||[],g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(c.displayedValue=this.minValue);return g}},b.prototype.setOptions=function(a){return null==a&&(a=null),this.options=n(this.options,a),this.textField&&(this.textField.el.style.fontSize=a.fontSize+"px"),this.options.angle>.5&&(this.gauge.options.angle=.5),this.configDisplayScale(),this},b.prototype.configDisplayScale=function(){var a,b,c,d,e;return d=this.displayScale,this.options.highDpiSupport===!1?delete this.displayScale:(b=window.devicePixelRatio||1,a=this.ctx.webkitBackingStorePixelRatio||this.ctx.mozBackingStorePixelRatio||this.ctx.msBackingStorePixelRatio||this.ctx.oBackingStorePixelRatio||this.ctx.backingStorePixelRatio||1,this.displayScale=b/a),this.displayScale!==d&&(e=this.canvas.G__width||this.canvas.width,c=this.canvas.G__height||this.canvas.height,this.canvas.width=e*this.displayScale,this.canvas.height=c*this.displayScale,this.canvas.style.width=e+"px",this.canvas.style.height=c+"px",this.canvas.G__width=e,this.canvas.G__height=c),this},b}(j),i=function(){function a(a){this.el=a}return a.prototype.render=function(a){return this.el.innerHTML=m(a.displayedValue)},a}(),a=function(a){function b(a,b){this.elem=a,this.text=null!=b?b:!1,this.value=1*this.elem.innerHTML,this.text&&(this.value=0)}return r(b,a),b.prototype.displayedValue=0,b.prototype.value=0,b.prototype.setVal=function(a){return this.value=1*a},b.prototype.render=function(){var a;return a=this.text?o(this.displayedValue.toFixed(0)):k(m(this.displayedValue)),this.elem.innerHTML=a},b}(j),b={create:function(b){var c,d,e,f;for(f=[],d=0,e=b.length;e>d;d++)c=b[d],f.push(new a(c));return f}},h=function(a){function b(a){this.gauge=a,this.ctx=this.gauge.ctx,this.canvas=this.gauge.canvas,b.__super__.constructor.call(this,!1,!1),this.setOptions()}return r(b,a),b.prototype.displayedValue=0,b.prototype.value=0,b.prototype.options={strokeWidth:.035,length:.1,color:"#000000"},b.prototype.setOptions=function(a){return null==a&&(a=null),p(this.options,a),this.length=this.canvas.height*this.options.length,this.strokeWidth=this.canvas.height*this.options.strokeWidth,this.maxValue=this.gauge.maxValue,this.minValue=this.gauge.minValue,this.animationSpeed=this.gauge.animationSpeed,this.options.angle=this.gauge.options.angle},b.prototype.render=function(){var a,b,c,d,e,f,g,h,i;return a=this.gauge.getAngle.call(this,this.displayedValue),b=this.canvas.width/2,c=.9*this.canvas.height,h=Math.round(b+this.length*Math.cos(a)),i=Math.round(c+this.length*Math.sin(a)),f=Math.round(b+this.strokeWidth*Math.cos(a-Math.PI/2)),g=Math.round(c+this.strokeWidth*Math.sin(a-Math.PI/2)),d=Math.round(b+this.strokeWidth*Math.cos(a+Math.PI/2)),e=Math.round(c+this.strokeWidth*Math.sin(a+Math.PI/2)),this.ctx.fillStyle=this.options.color,this.ctx.beginPath(),this.ctx.arc(b,c,this.strokeWidth,0,2*Math.PI,!0),this.ctx.fill(),this.ctx.beginPath(),this.ctx.moveTo(f,g),this.ctx.lineTo(h,i),this.ctx.lineTo(d,e),this.ctx.fill()},b}(j),c=function(){function a(a){this.elem=a}return a.prototype.updateValues=function(a){return this.value=a[0],this.maxValue=a[1],this.avgValue=a[2],this.render()},a.prototype.render=function(){var a,b;return this.textField&&this.textField.text(m(this.value)),0===this.maxValue&&(this.maxValue=2*this.avgValue),b=this.value/this.maxValue*100,a=this.avgValue/this.maxValue*100,$(".bar-value",this.elem).css({width:b+"%"}),$(".typical-value",this.elem).css({width:a+"%"})},a}(),g=function(a){function b(a){this.canvas=a,b.__super__.constructor.call(this),this.percentColors=null,"undefined"!=typeof G_vmlCanvasManager&&(this.canvas=window.G_vmlCanvasManager.initElement(this.canvas)),this.ctx=this.canvas.getContext("2d"),this.gp=[new h(this)],this.setOptions(),this.render()}return r(b,a),b.prototype.elem=null,b.prototype.value=[20],b.prototype.maxValue=80,b.prototype.minValue=0,b.prototype.displayedAngle=0,b.prototype.displayedValue=0,b.prototype.lineWidth=40,b.prototype.paddingBottom=.1,b.prototype.percentColors=null,b.prototype.options={colorStart:"#6fadcf",colorStop:void 0,gradientType:0,strokeColor:"#e0e0e0",pointer:{length:.8,strokeWidth:.035},angle:.15,lineWidth:.44,fontSize:40,limitMax:!1},b.prototype.setOptions=function(a){var c,d,e,f;for(null==a&&(a=null),b.__super__.setOptions.call(this,a),this.configPercentColors(),this.lineWidth=this.canvas.height*(1-this.paddingBottom)*this.options.lineWidth,this.radius=this.canvas.height*(1-this.paddingBottom)-this.lineWidth,this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height),this.render(),f=this.gp,d=0,e=f.length;e>d;d++)c=f[d],c.setOptions(this.options.pointer),c.render();return this},b.prototype.configPercentColors=function(){var a,b,c,d,e,f,g;if(this.percentColors=null,void 0!==this.options.percentColors){for(this.percentColors=new Array,f=[],c=d=0,e=this.options.percentColors.length-1;e>=0?e>=d:d>=e;c=e>=0?++d:--d)g=parseInt(l(this.options.percentColors[c][1]).substring(0,2),16),b=parseInt(l(this.options.percentColors[c][1]).substring(2,4),16),a=parseInt(l(this.options.percentColors[c][1]).substring(4,6),16),f.push(this.percentColors[c]={pct:this.options.percentColors[c][0],color:{r:g,g:b,b:a}});return f}},b.prototype.set=function(a){var b,c,d,e,f,g,i;if(a instanceof Array||(a=[a]),a.length>this.gp.length)for(b=c=0,g=a.length-this.gp.length;g>=0?g>c:c>g;b=g>=0?++c:--c)this.gp.push(new h(this));for(b=0,f=!1,d=0,e=a.length;e>d;d++)i=a[d],i>this.maxValue&&(this.maxValue=1.1*this.value,f=!0),this.gp[b].value=i,this.gp[b++].setOptions({maxValue:this.maxValue,angle:this.options.angle});return this.value=a[a.length-1],f&&this.options.limitMax?void 0:AnimationUpdater.run()},b.prototype.getAngle=function(a){return(1+this.options.angle)*Math.PI+(a-this.minValue)/(this.maxValue-this.minValue)*(1-2*this.options.angle)*Math.PI},b.prototype.getColorForPercentage=function(a,b){var c,d,e,f,g,h,i;if(0===a)c=this.percentColors[0].color;else for(c=this.percentColors[this.percentColors.length-1].color,e=f=0,h=this.percentColors.length-1;h>=0?h>=f:f>=h;e=h>=0?++f:--f)if(a<=this.percentColors[e].pct){b===!0?(i=this.percentColors[e-1],d=this.percentColors[e],g=(a-i.pct)/(d.pct-i.pct),c={r:Math.floor(i.color.r*(1-g)+d.color.r*g),g:Math.floor(i.color.g*(1-g)+d.color.g*g),b:Math.floor(i.color.b*(1-g)+d.color.b*g)}):c=this.percentColors[e].color;break}return"rgb("+[c.r,c.g,c.b].join(",")+")"},b.prototype.getColorForValue=function(a,b){var c;return c=(a-this.minValue)/(this.maxValue-this.minValue),this.getColorForPercentage(c,b)},b.prototype.render=function(){var a,b,c,d,e,f,g,h,i;for(i=this.canvas.width/2,d=this.canvas.height*(1-this.paddingBottom),a=this.getAngle(this.displayedValue),this.textField&&this.textField.render(this),this.ctx.lineCap="butt",void 0!==this.options.customFillStyle?b=this.options.customFillStyle(this):null!==this.percentColors?b=this.getColorForValue(this.displayedValue,!0):void 0!==this.options.colorStop?(b=0===this.options.gradientType?this.ctx.createRadialGradient(i,d,9,i,d,70):this.ctx.createLinearGradient(0,0,i,0),b.addColorStop(0,this.options.colorStart),b.addColorStop(1,this.options.colorStop)):b=this.options.colorStart,this.ctx.strokeStyle=b,this.ctx.beginPath(),this.ctx.arc(i,d,this.radius,(1+this.options.angle)*Math.PI,a,!1),this.ctx.lineWidth=this.lineWidth,this.ctx.stroke(),this.ctx.strokeStyle=this.options.strokeColor,this.ctx.beginPath(),this.ctx.arc(i,d,this.radius,a,(2-this.options.angle)*Math.PI,!1),this.ctx.stroke(),g=this.gp,h=[],e=0,f=g.length;f>e;e++)c=g[e],h.push(c.update(!0));return h},b}(e),d=function(a){function b(a){this.canvas=a,b.__super__.constructor.call(this),"undefined"!=typeof G_vmlCanvasManager&&(this.canvas=window.G_vmlCanvasManager.initElement(this.canvas)),this.ctx=this.canvas.getContext("2d"),this.setOptions(),this.render()}return r(b,a),b.prototype.lineWidth=15,b.prototype.displayedValue=0,b.prototype.value=33,b.prototype.maxValue=80,b.prototype.minValue=0,b.prototype.options={lineWidth:.1,colorStart:"#6f6ea0",colorStop:"#c0c0db",strokeColor:"#eeeeee",shadowColor:"#d5d5d5",angle:.35},b.prototype.getAngle=function(a){return(1-this.options.angle)*Math.PI+(a-this.minValue)/(this.maxValue-this.minValue)*(2+this.options.angle-(1-this.options.angle))*Math.PI},b.prototype.setOptions=function(a){return null==a&&(a=null),b.__super__.setOptions.call(this,a),this.lineWidth=this.canvas.height*this.options.lineWidth,this.radius=this.canvas.height/2-this.lineWidth/2,this},b.prototype.set=function(a){return this.value=a,this.value>this.maxValue&&(this.maxValue=1.1*this.value),AnimationUpdater.run()},b.prototype.render=function(){var a,b,c,d,e,f;return a=this.getAngle(this.displayedValue),f=this.canvas.width/2,c=this.canvas.height/2,this.textField&&this.textField.render(this),b=this.ctx.createRadialGradient(f,c,39,f,c,70),b.addColorStop(0,this.options.colorStart),b.addColorStop(1,this.options.colorStop),d=this.radius-this.lineWidth/2,e=this.radius+this.lineWidth/2,this.ctx.strokeStyle=this.options.strokeColor,this.ctx.beginPath(),this.ctx.arc(f,c,this.radius,(1-this.options.angle)*Math.PI,(2+this.options.angle)*Math.PI,!1),this.ctx.lineWidth=this.lineWidth,this.ctx.lineCap="round",this.ctx.stroke(),this.ctx.strokeStyle=b,this.ctx.beginPath(),this.ctx.arc(f,c,this.radius,(1-this.options.angle)*Math.PI,a,!1),this.ctx.stroke()},b}(e),f=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return r(b,a),b.prototype.strokeGradient=function(a,b,c,d){var e;return e=this.ctx.createRadialGradient(a,b,c,a,b,d),e.addColorStop(0,this.options.shadowColor),e.addColorStop(.12,this.options._orgStrokeColor),e.addColorStop(.88,this.options._orgStrokeColor),e.addColorStop(1,this.options.shadowColor),e},b.prototype.setOptions=function(a){var c,d,e,f;return null==a&&(a=null),b.__super__.setOptions.call(this,a),f=this.canvas.width/2,c=this.canvas.height/2,d=this.radius-this.lineWidth/2,e=this.radius+this.lineWidth/2,this.options._orgStrokeColor=this.options.strokeColor,this.options.strokeColor=this.strokeGradient(f,c,d,e),this},b}(d),window.AnimationUpdater={elements:[],animId:null,addAll:function(a){var b,c,d,e;for(e=[],c=0,d=a.length;d>c;c++)b=a[c],e.push(AnimationUpdater.elements.push(b));return e},add:function(a){return AnimationUpdater.elements.push(a)},run:function(){var a,b,c,d,e;for(a=!0,e=AnimationUpdater.elements,c=0,d=e.length;d>c;c++)b=e[c],b.update()&&(a=!1);return a?cancelAnimationFrame(AnimationUpdater.animId):AnimationUpdater.animId=requestAnimationFrame(AnimationUpdater.run)}},"function"==typeof window.define&&null!=window.define.amd?define(function(){return{Gauge:g,Donut:f,BaseDonut:d,TextRenderer:i}}):"undefined"!=typeof module&&null!=module.exports?module.exports={Gauge:g,Donut:f,BaseDonut:d,TextRenderer:i}:(window.Gauge=g,window.Donut=f,window.BaseDonut=d,window.TextRenderer=i)}).call(this);
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/javascript/src/gl-matrix-min.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/javascript/src/gl-matrix-min.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/javascript/src/gl-matrix-min.js	(revision 21239)
@@ -0,0 +1,29 @@
+/**
+ * @fileoverview gl-matrix - High performance matrix and vector operations
+ * @author Brandon Jones
+ * @author Colin MacKenzie IV
+ * @version 2.3.2
+ */
+
+/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.
+
+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. */
+
+!function(t,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define(a);else{var n=a();for(var r in n)("object"==typeof exports?exports:t)[r]=n[r]}}(this,function(){return function(t){function a(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,a),o.loaded=!0,o.exports}var n={};return a.m=t,a.c=n,a.p="",a(0)}([function(t,a,n){a.glMatrix=n(1),a.mat2=n(2),a.mat2d=n(3),a.mat3=n(4),a.mat4=n(5),a.quat=n(6),a.vec2=n(9),a.vec3=n(7),a.vec4=n(8)},function(t,a){var n={};n.EPSILON=1e-6,n.ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array,n.RANDOM=Math.random,n.ENABLE_SIMD=!1,n.SIMD_AVAILABLE=n.ARRAY_TYPE===Float32Array&&"SIMD"in this,n.USE_SIMD=n.ENABLE_SIMD&&n.SIMD_AVAILABLE,n.setMatrixArrayType=function(t){n.ARRAY_TYPE=t};var r=Math.PI/180;n.toRadian=function(t){return t*r},t.exports=n},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(4);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},o.clone=function(t){var a=new r.ARRAY_TYPE(4);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t},o.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},o.transpose=function(t,a){if(t===a){var n=a[1];t[1]=a[2],t[2]=n}else t[0]=a[0],t[1]=a[2],t[2]=a[1],t[3]=a[3];return t},o.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n*l-o*r;return u?(u=1/u,t[0]=l*u,t[1]=-r*u,t[2]=-o*u,t[3]=n*u,t):null},o.adjoint=function(t,a){var n=a[0];return t[0]=a[3],t[1]=-a[1],t[2]=-a[2],t[3]=n,t},o.determinant=function(t){return t[0]*t[3]-t[2]*t[1]},o.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=n[0],M=n[1],i=n[2],s=n[3];return t[0]=r*e+l*M,t[1]=o*e+u*M,t[2]=r*i+l*s,t[3]=o*i+u*s,t},o.mul=o.multiply,o.rotate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=Math.sin(n),M=Math.cos(n);return t[0]=r*M+l*e,t[1]=o*M+u*e,t[2]=r*-e+l*M,t[3]=o*-e+u*M,t},o.scale=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=n[0],M=n[1];return t[0]=r*e,t[1]=o*e,t[2]=l*M,t[3]=u*M,t},o.fromRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=n,t[2]=-n,t[3]=r,t},o.fromScaling=function(t,a){return t[0]=a[0],t[1]=0,t[2]=0,t[3]=a[1],t},o.str=function(t){return"mat2("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},o.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2))},o.LDU=function(t,a,n,r){return t[2]=r[2]/r[0],n[0]=r[0],n[1]=r[1],n[3]=r[3]-t[2]*n[1],[t,a,n]},t.exports=o},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(6);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},o.clone=function(t){var a=new r.ARRAY_TYPE(6);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=t[4],a[5]=t[5],a},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t},o.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},o.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=n*l-r*o;return M?(M=1/M,t[0]=l*M,t[1]=-r*M,t[2]=-o*M,t[3]=n*M,t[4]=(o*e-l*u)*M,t[5]=(r*u-n*e)*M,t):null},o.determinant=function(t){return t[0]*t[3]-t[1]*t[2]},o.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=n[0],s=n[1],c=n[2],D=n[3],S=n[4],I=n[5];return t[0]=r*i+l*s,t[1]=o*i+u*s,t[2]=r*c+l*D,t[3]=o*c+u*D,t[4]=r*S+l*I+e,t[5]=o*S+u*I+M,t},o.mul=o.multiply,o.rotate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=Math.sin(n),s=Math.cos(n);return t[0]=r*s+l*i,t[1]=o*s+u*i,t[2]=r*-i+l*s,t[3]=o*-i+u*s,t[4]=e,t[5]=M,t},o.scale=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=n[0],s=n[1];return t[0]=r*i,t[1]=o*i,t[2]=l*s,t[3]=u*s,t[4]=e,t[5]=M,t},o.translate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=n[0],s=n[1];return t[0]=r,t[1]=o,t[2]=l,t[3]=u,t[4]=r*i+l*s+e,t[5]=o*i+u*s+M,t},o.fromRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=n,t[2]=-n,t[3]=r,t[4]=0,t[5]=0,t},o.fromScaling=function(t,a){return t[0]=a[0],t[1]=0,t[2]=0,t[3]=a[1],t[4]=0,t[5]=0,t},o.fromTranslation=function(t,a){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=a[0],t[5]=a[1],t},o.str=function(t){return"mat2d("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+")"},o.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+1)},t.exports=o},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},o.fromMat4=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[4],t[4]=a[5],t[5]=a[6],t[6]=a[8],t[7]=a[9],t[8]=a[10],t},o.clone=function(t){var a=new r.ARRAY_TYPE(9);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=t[4],a[5]=t[5],a[6]=t[6],a[7]=t[7],a[8]=t[8],a},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t},o.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},o.transpose=function(t,a){if(t===a){var n=a[1],r=a[2],o=a[5];t[1]=a[3],t[2]=a[6],t[3]=n,t[5]=a[7],t[6]=r,t[7]=o}else t[0]=a[0],t[1]=a[3],t[2]=a[6],t[3]=a[1],t[4]=a[4],t[5]=a[7],t[6]=a[2],t[7]=a[5],t[8]=a[8];return t},o.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8],c=s*u-e*i,D=-s*l+e*M,S=i*l-u*M,I=n*c+r*D+o*S;return I?(I=1/I,t[0]=c*I,t[1]=(-s*r+o*i)*I,t[2]=(e*r-o*u)*I,t[3]=D*I,t[4]=(s*n-o*M)*I,t[5]=(-e*n+o*l)*I,t[6]=S*I,t[7]=(-i*n+r*M)*I,t[8]=(u*n-r*l)*I,t):null},o.adjoint=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8];return t[0]=u*s-e*i,t[1]=o*i-r*s,t[2]=r*e-o*u,t[3]=e*M-l*s,t[4]=n*s-o*M,t[5]=o*l-n*e,t[6]=l*i-u*M,t[7]=r*M-n*i,t[8]=n*u-r*l,t},o.determinant=function(t){var a=t[0],n=t[1],r=t[2],o=t[3],l=t[4],u=t[5],e=t[6],M=t[7],i=t[8];return a*(i*l-u*M)+n*(-i*o+u*e)+r*(M*o-l*e)},o.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=n[0],S=n[1],I=n[2],x=n[3],f=n[4],F=n[5],m=n[6],h=n[7],d=n[8];return t[0]=D*r+S*u+I*i,t[1]=D*o+S*e+I*s,t[2]=D*l+S*M+I*c,t[3]=x*r+f*u+F*i,t[4]=x*o+f*e+F*s,t[5]=x*l+f*M+F*c,t[6]=m*r+h*u+d*i,t[7]=m*o+h*e+d*s,t[8]=m*l+h*M+d*c,t},o.mul=o.multiply,o.translate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=n[0],S=n[1];return t[0]=r,t[1]=o,t[2]=l,t[3]=u,t[4]=e,t[5]=M,t[6]=D*r+S*u+i,t[7]=D*o+S*e+s,t[8]=D*l+S*M+c,t},o.rotate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=Math.sin(n),S=Math.cos(n);return t[0]=S*r+D*u,t[1]=S*o+D*e,t[2]=S*l+D*M,t[3]=S*u-D*r,t[4]=S*e-D*o,t[5]=S*M-D*l,t[6]=i,t[7]=s,t[8]=c,t},o.scale=function(t,a,n){var r=n[0],o=n[1];return t[0]=r*a[0],t[1]=r*a[1],t[2]=r*a[2],t[3]=o*a[3],t[4]=o*a[4],t[5]=o*a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t},o.fromTranslation=function(t,a){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=a[0],t[7]=a[1],t[8]=1,t},o.fromRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=n,t[2]=0,t[3]=-n,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},o.fromScaling=function(t,a){return t[0]=a[0],t[1]=0,t[2]=0,t[3]=0,t[4]=a[1],t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},o.fromMat2d=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=0,t[3]=a[2],t[4]=a[3],t[5]=0,t[6]=a[4],t[7]=a[5],t[8]=1,t},o.fromQuat=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n+n,e=r+r,M=o+o,i=n*u,s=r*u,c=r*e,D=o*u,S=o*e,I=o*M,x=l*u,f=l*e,F=l*M;return t[0]=1-c-I,t[3]=s-F,t[6]=D+f,t[1]=s+F,t[4]=1-i-I,t[7]=S-x,t[2]=D-f,t[5]=S+x,t[8]=1-i-c,t},o.normalFromMat4=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8],c=a[9],D=a[10],S=a[11],I=a[12],x=a[13],f=a[14],F=a[15],m=n*e-r*u,h=n*M-o*u,d=n*i-l*u,v=r*M-o*e,z=r*i-l*e,p=o*i-l*M,w=s*x-c*I,A=s*f-D*I,R=s*F-S*I,b=c*f-D*x,Y=c*F-S*x,q=D*F-S*f,y=m*q-h*Y+d*b+v*R-z*A+p*w;return y?(y=1/y,t[0]=(e*q-M*Y+i*b)*y,t[1]=(M*R-u*q-i*A)*y,t[2]=(u*Y-e*R+i*w)*y,t[3]=(o*Y-r*q-l*b)*y,t[4]=(n*q-o*R+l*A)*y,t[5]=(r*R-n*Y-l*w)*y,t[6]=(x*p-f*z+F*v)*y,t[7]=(f*d-I*p-F*h)*y,t[8]=(I*z-x*d+F*m)*y,t):null},o.str=function(t){return"mat3("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+")"},o.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+Math.pow(t[6],2)+Math.pow(t[7],2)+Math.pow(t[8],2))},t.exports=o},function(t,a,n){var r=n(1),o={scalar:{},SIMD:{}};o.create=function(){var t=new r.ARRAY_TYPE(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.clone=function(t){var a=new r.ARRAY_TYPE(16);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=t[4],a[5]=t[5],a[6]=t[6],a[7]=t[7],a[8]=t[8],a[9]=t[9],a[10]=t[10],a[11]=t[11],a[12]=t[12],a[13]=t[13],a[14]=t[14],a[15]=t[15],a},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15],t},o.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.scalar.transpose=function(t,a){if(t===a){var n=a[1],r=a[2],o=a[3],l=a[6],u=a[7],e=a[11];t[1]=a[4],t[2]=a[8],t[3]=a[12],t[4]=n,t[6]=a[9],t[7]=a[13],t[8]=r,t[9]=l,t[11]=a[14],t[12]=o,t[13]=u,t[14]=e}else t[0]=a[0],t[1]=a[4],t[2]=a[8],t[3]=a[12],t[4]=a[1],t[5]=a[5],t[6]=a[9],t[7]=a[13],t[8]=a[2],t[9]=a[6],t[10]=a[10],t[11]=a[14],t[12]=a[3],t[13]=a[7],t[14]=a[11],t[15]=a[15];return t},o.SIMD.transpose=function(t,a){var n,r,o,l,u,e,M,i,s,c;return n=SIMD.Float32x4.load(a,0),r=SIMD.Float32x4.load(a,4),o=SIMD.Float32x4.load(a,8),l=SIMD.Float32x4.load(a,12),u=SIMD.Float32x4.shuffle(n,r,0,1,4,5),e=SIMD.Float32x4.shuffle(o,l,0,1,4,5),M=SIMD.Float32x4.shuffle(u,e,0,2,4,6),i=SIMD.Float32x4.shuffle(u,e,1,3,5,7),SIMD.Float32x4.store(t,0,M),SIMD.Float32x4.store(t,4,i),u=SIMD.Float32x4.shuffle(n,r,2,3,6,7),e=SIMD.Float32x4.shuffle(o,l,2,3,6,7),s=SIMD.Float32x4.shuffle(u,e,0,2,4,6),c=SIMD.Float32x4.shuffle(u,e,1,3,5,7),SIMD.Float32x4.store(t,8,s),SIMD.Float32x4.store(t,12,c),t},o.transpose=r.USE_SIMD?o.SIMD.transpose:o.scalar.transpose,o.scalar.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8],c=a[9],D=a[10],S=a[11],I=a[12],x=a[13],f=a[14],F=a[15],m=n*e-r*u,h=n*M-o*u,d=n*i-l*u,v=r*M-o*e,z=r*i-l*e,p=o*i-l*M,w=s*x-c*I,A=s*f-D*I,R=s*F-S*I,b=c*f-D*x,Y=c*F-S*x,q=D*F-S*f,y=m*q-h*Y+d*b+v*R-z*A+p*w;return y?(y=1/y,t[0]=(e*q-M*Y+i*b)*y,t[1]=(o*Y-r*q-l*b)*y,t[2]=(x*p-f*z+F*v)*y,t[3]=(D*z-c*p-S*v)*y,t[4]=(M*R-u*q-i*A)*y,t[5]=(n*q-o*R+l*A)*y,t[6]=(f*d-I*p-F*h)*y,t[7]=(s*p-D*d+S*h)*y,t[8]=(u*Y-e*R+i*w)*y,t[9]=(r*R-n*Y-l*w)*y,t[10]=(I*z-x*d+F*m)*y,t[11]=(c*d-s*z-S*m)*y,t[12]=(e*A-u*b-M*w)*y,t[13]=(n*b-r*A+o*w)*y,t[14]=(x*h-I*v-f*m)*y,t[15]=(s*v-c*h+D*m)*y,t):null},o.SIMD.invert=function(t,a){var n,r,o,l,u,e,M,i,s,c,D=SIMD.Float32x4.load(a,0),S=SIMD.Float32x4.load(a,4),I=SIMD.Float32x4.load(a,8),x=SIMD.Float32x4.load(a,12);return u=SIMD.Float32x4.shuffle(D,S,0,1,4,5),r=SIMD.Float32x4.shuffle(I,x,0,1,4,5),n=SIMD.Float32x4.shuffle(u,r,0,2,4,6),r=SIMD.Float32x4.shuffle(r,u,1,3,5,7),u=SIMD.Float32x4.shuffle(D,S,2,3,6,7),l=SIMD.Float32x4.shuffle(I,x,2,3,6,7),o=SIMD.Float32x4.shuffle(u,l,0,2,4,6),l=SIMD.Float32x4.shuffle(l,u,1,3,5,7),u=SIMD.Float32x4.mul(o,l),u=SIMD.Float32x4.swizzle(u,1,0,3,2),e=SIMD.Float32x4.mul(r,u),M=SIMD.Float32x4.mul(n,u),u=SIMD.Float32x4.swizzle(u,2,3,0,1),e=SIMD.Float32x4.sub(SIMD.Float32x4.mul(r,u),e),M=SIMD.Float32x4.sub(SIMD.Float32x4.mul(n,u),M),M=SIMD.Float32x4.swizzle(M,2,3,0,1),u=SIMD.Float32x4.mul(r,o),u=SIMD.Float32x4.swizzle(u,1,0,3,2),e=SIMD.Float32x4.add(SIMD.Float32x4.mul(l,u),e),s=SIMD.Float32x4.mul(n,u),u=SIMD.Float32x4.swizzle(u,2,3,0,1),e=SIMD.Float32x4.sub(e,SIMD.Float32x4.mul(l,u)),s=SIMD.Float32x4.sub(SIMD.Float32x4.mul(n,u),s),s=SIMD.Float32x4.swizzle(s,2,3,0,1),u=SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(r,2,3,0,1),l),u=SIMD.Float32x4.swizzle(u,1,0,3,2),o=SIMD.Float32x4.swizzle(o,2,3,0,1),e=SIMD.Float32x4.add(SIMD.Float32x4.mul(o,u),e),i=SIMD.Float32x4.mul(n,u),u=SIMD.Float32x4.swizzle(u,2,3,0,1),e=SIMD.Float32x4.sub(e,SIMD.Float32x4.mul(o,u)),i=SIMD.Float32x4.sub(SIMD.Float32x4.mul(n,u),i),i=SIMD.Float32x4.swizzle(i,2,3,0,1),u=SIMD.Float32x4.mul(n,r),u=SIMD.Float32x4.swizzle(u,1,0,3,2),i=SIMD.Float32x4.add(SIMD.Float32x4.mul(l,u),i),s=SIMD.Float32x4.sub(SIMD.Float32x4.mul(o,u),s),u=SIMD.Float32x4.swizzle(u,2,3,0,1),i=SIMD.Float32x4.sub(SIMD.Float32x4.mul(l,u),i),s=SIMD.Float32x4.sub(s,SIMD.Float32x4.mul(o,u)),u=SIMD.Float32x4.mul(n,l),u=SIMD.Float32x4.swizzle(u,1,0,3,2),M=SIMD.Float32x4.sub(M,SIMD.Float32x4.mul(o,u)),i=SIMD.Float32x4.add(SIMD.Float32x4.mul(r,u),i),u=SIMD.Float32x4.swizzle(u,2,3,0,1),M=SIMD.Float32x4.add(SIMD.Float32x4.mul(o,u),M),i=SIMD.Float32x4.sub(i,SIMD.Float32x4.mul(r,u)),u=SIMD.Float32x4.mul(n,o),u=SIMD.Float32x4.swizzle(u,1,0,3,2),M=SIMD.Float32x4.add(SIMD.Float32x4.mul(l,u),M),s=SIMD.Float32x4.sub(s,SIMD.Float32x4.mul(r,u)),u=SIMD.Float32x4.swizzle(u,2,3,0,1),M=SIMD.Float32x4.sub(M,SIMD.Float32x4.mul(l,u)),s=SIMD.Float32x4.add(SIMD.Float32x4.mul(r,u),s),c=SIMD.Float32x4.mul(n,e),c=SIMD.Float32x4.add(SIMD.Float32x4.swizzle(c,2,3,0,1),c),c=SIMD.Float32x4.add(SIMD.Float32x4.swizzle(c,1,0,3,2),c),u=SIMD.Float32x4.reciprocalApproximation(c),c=SIMD.Float32x4.sub(SIMD.Float32x4.add(u,u),SIMD.Float32x4.mul(c,SIMD.Float32x4.mul(u,u))),(c=SIMD.Float32x4.swizzle(c,0,0,0,0))?(SIMD.Float32x4.store(t,0,SIMD.Float32x4.mul(c,e)),SIMD.Float32x4.store(t,4,SIMD.Float32x4.mul(c,M)),SIMD.Float32x4.store(t,8,SIMD.Float32x4.mul(c,i)),SIMD.Float32x4.store(t,12,SIMD.Float32x4.mul(c,s)),t):null},o.invert=r.USE_SIMD?o.SIMD.invert:o.scalar.invert,o.scalar.adjoint=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8],c=a[9],D=a[10],S=a[11],I=a[12],x=a[13],f=a[14],F=a[15];return t[0]=e*(D*F-S*f)-c*(M*F-i*f)+x*(M*S-i*D),t[1]=-(r*(D*F-S*f)-c*(o*F-l*f)+x*(o*S-l*D)),t[2]=r*(M*F-i*f)-e*(o*F-l*f)+x*(o*i-l*M),t[3]=-(r*(M*S-i*D)-e*(o*S-l*D)+c*(o*i-l*M)),t[4]=-(u*(D*F-S*f)-s*(M*F-i*f)+I*(M*S-i*D)),t[5]=n*(D*F-S*f)-s*(o*F-l*f)+I*(o*S-l*D),t[6]=-(n*(M*F-i*f)-u*(o*F-l*f)+I*(o*i-l*M)),t[7]=n*(M*S-i*D)-u*(o*S-l*D)+s*(o*i-l*M),t[8]=u*(c*F-S*x)-s*(e*F-i*x)+I*(e*S-i*c),t[9]=-(n*(c*F-S*x)-s*(r*F-l*x)+I*(r*S-l*c)),t[10]=n*(e*F-i*x)-u*(r*F-l*x)+I*(r*i-l*e),t[11]=-(n*(e*S-i*c)-u*(r*S-l*c)+s*(r*i-l*e)),t[12]=-(u*(c*f-D*x)-s*(e*f-M*x)+I*(e*D-M*c)),t[13]=n*(c*f-D*x)-s*(r*f-o*x)+I*(r*D-o*c),t[14]=-(n*(e*f-M*x)-u*(r*f-o*x)+I*(r*M-o*e)),t[15]=n*(e*D-M*c)-u*(r*D-o*c)+s*(r*M-o*e),t},o.SIMD.adjoint=function(t,a){var n,r,o,l,u,e,M,i,s,c,D,S,I,n=SIMD.Float32x4.load(a,0),r=SIMD.Float32x4.load(a,4),o=SIMD.Float32x4.load(a,8),l=SIMD.Float32x4.load(a,12);return s=SIMD.Float32x4.shuffle(n,r,0,1,4,5),e=SIMD.Float32x4.shuffle(o,l,0,1,4,5),u=SIMD.Float32x4.shuffle(s,e,0,2,4,6),e=SIMD.Float32x4.shuffle(e,s,1,3,5,7),s=SIMD.Float32x4.shuffle(n,r,2,3,6,7),i=SIMD.Float32x4.shuffle(o,l,2,3,6,7),M=SIMD.Float32x4.shuffle(s,i,0,2,4,6),i=SIMD.Float32x4.shuffle(i,s,1,3,5,7),s=SIMD.Float32x4.mul(M,i),s=SIMD.Float32x4.swizzle(s,1,0,3,2),c=SIMD.Float32x4.mul(e,s),D=SIMD.Float32x4.mul(u,s),s=SIMD.Float32x4.swizzle(s,2,3,0,1),c=SIMD.Float32x4.sub(SIMD.Float32x4.mul(e,s),c),D=SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,s),D),D=SIMD.Float32x4.swizzle(D,2,3,0,1),s=SIMD.Float32x4.mul(e,M),s=SIMD.Float32x4.swizzle(s,1,0,3,2),c=SIMD.Float32x4.add(SIMD.Float32x4.mul(i,s),c),I=SIMD.Float32x4.mul(u,s),s=SIMD.Float32x4.swizzle(s,2,3,0,1),c=SIMD.Float32x4.sub(c,SIMD.Float32x4.mul(i,s)),I=SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,s),I),I=SIMD.Float32x4.swizzle(I,2,3,0,1),s=SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,2,3,0,1),i),s=SIMD.Float32x4.swizzle(s,1,0,3,2),M=SIMD.Float32x4.swizzle(M,2,3,0,1),c=SIMD.Float32x4.add(SIMD.Float32x4.mul(M,s),c),S=SIMD.Float32x4.mul(u,s),s=SIMD.Float32x4.swizzle(s,2,3,0,1),c=SIMD.Float32x4.sub(c,SIMD.Float32x4.mul(M,s)),S=SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,s),S),S=SIMD.Float32x4.swizzle(S,2,3,0,1),s=SIMD.Float32x4.mul(u,e),s=SIMD.Float32x4.swizzle(s,1,0,3,2),S=SIMD.Float32x4.add(SIMD.Float32x4.mul(i,s),S),I=SIMD.Float32x4.sub(SIMD.Float32x4.mul(M,s),I),s=SIMD.Float32x4.swizzle(s,2,3,0,1),S=SIMD.Float32x4.sub(SIMD.Float32x4.mul(i,s),S),I=SIMD.Float32x4.sub(I,SIMD.Float32x4.mul(M,s)),s=SIMD.Float32x4.mul(u,i),s=SIMD.Float32x4.swizzle(s,1,0,3,2),D=SIMD.Float32x4.sub(D,SIMD.Float32x4.mul(M,s)),S=SIMD.Float32x4.add(SIMD.Float32x4.mul(e,s),S),s=SIMD.Float32x4.swizzle(s,2,3,0,1),D=SIMD.Float32x4.add(SIMD.Float32x4.mul(M,s),D),S=SIMD.Float32x4.sub(S,SIMD.Float32x4.mul(e,s)),s=SIMD.Float32x4.mul(u,M),s=SIMD.Float32x4.swizzle(s,1,0,3,2),D=SIMD.Float32x4.add(SIMD.Float32x4.mul(i,s),D),I=SIMD.Float32x4.sub(I,SIMD.Float32x4.mul(e,s)),s=SIMD.Float32x4.swizzle(s,2,3,0,1),D=SIMD.Float32x4.sub(D,SIMD.Float32x4.mul(i,s)),I=SIMD.Float32x4.add(SIMD.Float32x4.mul(e,s),I),SIMD.Float32x4.store(t,0,c),SIMD.Float32x4.store(t,4,D),SIMD.Float32x4.store(t,8,S),SIMD.Float32x4.store(t,12,I),t},o.adjoint=r.USE_SIMD?o.SIMD.adjoint:o.scalar.adjoint,o.determinant=function(t){var a=t[0],n=t[1],r=t[2],o=t[3],l=t[4],u=t[5],e=t[6],M=t[7],i=t[8],s=t[9],c=t[10],D=t[11],S=t[12],I=t[13],x=t[14],f=t[15],F=a*u-n*l,m=a*e-r*l,h=a*M-o*l,d=n*e-r*u,v=n*M-o*u,z=r*M-o*e,p=i*I-s*S,w=i*x-c*S,A=i*f-D*S,R=s*x-c*I,b=s*f-D*I,Y=c*f-D*x;return F*Y-m*b+h*R+d*A-v*w+z*p},o.SIMD.multiply=function(t,a,n){var r=SIMD.Float32x4.load(a,0),o=SIMD.Float32x4.load(a,4),l=SIMD.Float32x4.load(a,8),u=SIMD.Float32x4.load(a,12),e=SIMD.Float32x4.load(n,0),M=SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,0,0,0,0),r),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,1,1,1,1),o),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,2,2,2,2),l),SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,3,3,3,3),u))));SIMD.Float32x4.store(t,0,M);var i=SIMD.Float32x4.load(n,4),s=SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(i,0,0,0,0),r),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(i,1,1,1,1),o),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(i,2,2,2,2),l),SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(i,3,3,3,3),u))));SIMD.Float32x4.store(t,4,s);var c=SIMD.Float32x4.load(n,8),D=SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(c,0,0,0,0),r),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(c,1,1,1,1),o),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(c,2,2,2,2),l),SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(c,3,3,3,3),u))));SIMD.Float32x4.store(t,8,D);var S=SIMD.Float32x4.load(n,12),I=SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(S,0,0,0,0),r),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(S,1,1,1,1),o),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(S,2,2,2,2),l),SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(S,3,3,3,3),u))));return SIMD.Float32x4.store(t,12,I),t},o.scalar.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=a[9],S=a[10],I=a[11],x=a[12],f=a[13],F=a[14],m=a[15],h=n[0],d=n[1],v=n[2],z=n[3];return t[0]=h*r+d*e+v*c+z*x,t[1]=h*o+d*M+v*D+z*f,t[2]=h*l+d*i+v*S+z*F,t[3]=h*u+d*s+v*I+z*m,h=n[4],d=n[5],v=n[6],z=n[7],t[4]=h*r+d*e+v*c+z*x,t[5]=h*o+d*M+v*D+z*f,t[6]=h*l+d*i+v*S+z*F,t[7]=h*u+d*s+v*I+z*m,h=n[8],d=n[9],v=n[10],z=n[11],t[8]=h*r+d*e+v*c+z*x,t[9]=h*o+d*M+v*D+z*f,t[10]=h*l+d*i+v*S+z*F,t[11]=h*u+d*s+v*I+z*m,h=n[12],d=n[13],v=n[14],z=n[15],t[12]=h*r+d*e+v*c+z*x,t[13]=h*o+d*M+v*D+z*f,t[14]=h*l+d*i+v*S+z*F,t[15]=h*u+d*s+v*I+z*m,t},o.multiply=r.USE_SIMD?o.SIMD.multiply:o.scalar.multiply,o.mul=o.multiply,o.scalar.translate=function(t,a,n){var r,o,l,u,e,M,i,s,c,D,S,I,x=n[0],f=n[1],F=n[2];return a===t?(t[12]=a[0]*x+a[4]*f+a[8]*F+a[12],t[13]=a[1]*x+a[5]*f+a[9]*F+a[13],t[14]=a[2]*x+a[6]*f+a[10]*F+a[14],t[15]=a[3]*x+a[7]*f+a[11]*F+a[15]):(r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=a[9],S=a[10],I=a[11],t[0]=r,t[1]=o,t[2]=l,t[3]=u,t[4]=e,t[5]=M,t[6]=i,t[7]=s,t[8]=c,t[9]=D,t[10]=S,t[11]=I,t[12]=r*x+e*f+c*F+a[12],t[13]=o*x+M*f+D*F+a[13],t[14]=l*x+i*f+S*F+a[14],t[15]=u*x+s*f+I*F+a[15]),t},o.SIMD.translate=function(t,a,n){var r=SIMD.Float32x4.load(a,0),o=SIMD.Float32x4.load(a,4),l=SIMD.Float32x4.load(a,8),u=SIMD.Float32x4.load(a,12),e=SIMD.Float32x4(n[0],n[1],n[2],0);a!==t&&(t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11]),r=SIMD.Float32x4.mul(r,SIMD.Float32x4.swizzle(e,0,0,0,0)),o=SIMD.Float32x4.mul(o,SIMD.Float32x4.swizzle(e,1,1,1,1)),l=SIMD.Float32x4.mul(l,SIMD.Float32x4.swizzle(e,2,2,2,2));var M=SIMD.Float32x4.add(r,SIMD.Float32x4.add(o,SIMD.Float32x4.add(l,u)));return SIMD.Float32x4.store(t,12,M),t},o.translate=r.USE_SIMD?o.SIMD.translate:o.scalar.translate,o.scalar.scale=function(t,a,n){var r=n[0],o=n[1],l=n[2];return t[0]=a[0]*r,t[1]=a[1]*r,t[2]=a[2]*r,t[3]=a[3]*r,t[4]=a[4]*o,t[5]=a[5]*o,t[6]=a[6]*o,t[7]=a[7]*o,t[8]=a[8]*l,t[9]=a[9]*l,t[10]=a[10]*l,t[11]=a[11]*l,t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15],t},o.SIMD.scale=function(t,a,n){var r,o,l,u=SIMD.Float32x4(n[0],n[1],n[2],0);return r=SIMD.Float32x4.load(a,0),SIMD.Float32x4.store(t,0,SIMD.Float32x4.mul(r,SIMD.Float32x4.swizzle(u,0,0,0,0))),o=SIMD.Float32x4.load(a,4),SIMD.Float32x4.store(t,4,SIMD.Float32x4.mul(o,SIMD.Float32x4.swizzle(u,1,1,1,1))),l=SIMD.Float32x4.load(a,8),SIMD.Float32x4.store(t,8,SIMD.Float32x4.mul(l,SIMD.Float32x4.swizzle(u,2,2,2,2))),t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15],t},o.scale=r.USE_SIMD?o.SIMD.scale:o.scalar.scale,o.rotate=function(t,a,n,o){var l,u,e,M,i,s,c,D,S,I,x,f,F,m,h,d,v,z,p,w,A,R,b,Y,q=o[0],y=o[1],E=o[2],g=Math.sqrt(q*q+y*y+E*E);return Math.abs(g)<r.EPSILON?null:(g=1/g,q*=g,y*=g,E*=g,l=Math.sin(n),u=Math.cos(n),e=1-u,M=a[0],i=a[1],s=a[2],c=a[3],D=a[4],S=a[5],I=a[6],x=a[7],f=a[8],F=a[9],m=a[10],h=a[11],d=q*q*e+u,v=y*q*e+E*l,z=E*q*e-y*l,p=q*y*e-E*l,w=y*y*e+u,A=E*y*e+q*l,R=q*E*e+y*l,b=y*E*e-q*l,Y=E*E*e+u,t[0]=M*d+D*v+f*z,t[1]=i*d+S*v+F*z,t[2]=s*d+I*v+m*z,t[3]=c*d+x*v+h*z,t[4]=M*p+D*w+f*A,t[5]=i*p+S*w+F*A,t[6]=s*p+I*w+m*A,t[7]=c*p+x*w+h*A,t[8]=M*R+D*b+f*Y,t[9]=i*R+S*b+F*Y,t[10]=s*R+I*b+m*Y,t[11]=c*R+x*b+h*Y,a!==t&&(t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t)},o.scalar.rotateX=function(t,a,n){var r=Math.sin(n),o=Math.cos(n),l=a[4],u=a[5],e=a[6],M=a[7],i=a[8],s=a[9],c=a[10],D=a[11];return a!==t&&(t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t[4]=l*o+i*r,t[5]=u*o+s*r,t[6]=e*o+c*r,t[7]=M*o+D*r,t[8]=i*o-l*r,t[9]=s*o-u*r,t[10]=c*o-e*r,t[11]=D*o-M*r,t},o.SIMD.rotateX=function(t,a,n){var r=SIMD.Float32x4.splat(Math.sin(n)),o=SIMD.Float32x4.splat(Math.cos(n));a!==t&&(t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]);var l=SIMD.Float32x4.load(a,4),u=SIMD.Float32x4.load(a,8);return SIMD.Float32x4.store(t,4,SIMD.Float32x4.add(SIMD.Float32x4.mul(l,o),SIMD.Float32x4.mul(u,r))),SIMD.Float32x4.store(t,8,SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,o),SIMD.Float32x4.mul(l,r))),t},o.rotateX=r.USE_SIMD?o.SIMD.rotateX:o.scalar.rotateX,o.scalar.rotateY=function(t,a,n){var r=Math.sin(n),o=Math.cos(n),l=a[0],u=a[1],e=a[2],M=a[3],i=a[8],s=a[9],c=a[10],D=a[11];return a!==t&&(t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t[0]=l*o-i*r,t[1]=u*o-s*r,t[2]=e*o-c*r,t[3]=M*o-D*r,t[8]=l*r+i*o,t[9]=u*r+s*o,t[10]=e*r+c*o,t[11]=M*r+D*o,t},o.SIMD.rotateY=function(t,a,n){var r=SIMD.Float32x4.splat(Math.sin(n)),o=SIMD.Float32x4.splat(Math.cos(n));a!==t&&(t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]);var l=SIMD.Float32x4.load(a,0),u=SIMD.Float32x4.load(a,8);return SIMD.Float32x4.store(t,0,SIMD.Float32x4.sub(SIMD.Float32x4.mul(l,o),SIMD.Float32x4.mul(u,r))),SIMD.Float32x4.store(t,8,SIMD.Float32x4.add(SIMD.Float32x4.mul(l,r),SIMD.Float32x4.mul(u,o))),t},o.rotateY=r.USE_SIMD?o.SIMD.rotateY:o.scalar.rotateY,o.scalar.rotateZ=function(t,a,n){var r=Math.sin(n),o=Math.cos(n),l=a[0],u=a[1],e=a[2],M=a[3],i=a[4],s=a[5],c=a[6],D=a[7];return a!==t&&(t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t[0]=l*o+i*r,t[1]=u*o+s*r,t[2]=e*o+c*r,t[3]=M*o+D*r,t[4]=i*o-l*r,t[5]=s*o-u*r,t[6]=c*o-e*r,t[7]=D*o-M*r,t},o.SIMD.rotateZ=function(t,a,n){var r=SIMD.Float32x4.splat(Math.sin(n)),o=SIMD.Float32x4.splat(Math.cos(n));a!==t&&(t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]);var l=SIMD.Float32x4.load(a,0),u=SIMD.Float32x4.load(a,4);return SIMD.Float32x4.store(t,0,SIMD.Float32x4.add(SIMD.Float32x4.mul(l,o),SIMD.Float32x4.mul(u,r))),SIMD.Float32x4.store(t,4,SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,o),SIMD.Float32x4.mul(l,r))),t},o.rotateZ=r.USE_SIMD?o.SIMD.rotateZ:o.scalar.rotateZ,o.fromTranslation=function(t,a){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=a[0],t[13]=a[1],t[14]=a[2],t[15]=1,t},o.fromScaling=function(t,a){return t[0]=a[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=a[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.fromRotation=function(t,a,n){var o,l,u,e=n[0],M=n[1],i=n[2],s=Math.sqrt(e*e+M*M+i*i);return Math.abs(s)<r.EPSILON?null:(s=1/s,e*=s,M*=s,i*=s,o=Math.sin(a),l=Math.cos(a),u=1-l,t[0]=e*e*u+l,t[1]=M*e*u+i*o,t[2]=i*e*u-M*o,t[3]=0,t[4]=e*M*u-i*o,t[5]=M*M*u+l,t[6]=i*M*u+e*o,t[7]=0,t[8]=e*i*u+M*o,t[9]=M*i*u-e*o,t[10]=i*i*u+l,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t)},o.fromXRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=r,t[6]=n,t[7]=0,t[8]=0,t[9]=-n,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.fromYRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=0,t[2]=-n,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=n,t[9]=0,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.fromZRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=n,t[2]=0,t[3]=0,t[4]=-n,t[5]=r,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.fromRotationTranslation=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=r+r,M=o+o,i=l+l,s=r*e,c=r*M,D=r*i,S=o*M,I=o*i,x=l*i,f=u*e,F=u*M,m=u*i;return t[0]=1-(S+x),t[1]=c+m,t[2]=D-F,t[3]=0,t[4]=c-m,t[5]=1-(s+x),t[6]=I+f,t[7]=0,t[8]=D+F,t[9]=I-f,t[10]=1-(s+S),t[11]=0,t[12]=n[0],t[13]=n[1],t[14]=n[2],t[15]=1,t},o.fromRotationTranslationScale=function(t,a,n,r){var o=a[0],l=a[1],u=a[2],e=a[3],M=o+o,i=l+l,s=u+u,c=o*M,D=o*i,S=o*s,I=l*i,x=l*s,f=u*s,F=e*M,m=e*i,h=e*s,d=r[0],v=r[1],z=r[2];return t[0]=(1-(I+f))*d,t[1]=(D+h)*d,t[2]=(S-m)*d,t[3]=0,t[4]=(D-h)*v,t[5]=(1-(c+f))*v,t[6]=(x+F)*v,t[7]=0,t[8]=(S+m)*z,t[9]=(x-F)*z,t[10]=(1-(c+I))*z,t[11]=0,t[12]=n[0],t[13]=n[1],t[14]=n[2],t[15]=1,t},o.fromRotationTranslationScaleOrigin=function(t,a,n,r,o){var l=a[0],u=a[1],e=a[2],M=a[3],i=l+l,s=u+u,c=e+e,D=l*i,S=l*s,I=l*c,x=u*s,f=u*c,F=e*c,m=M*i,h=M*s,d=M*c,v=r[0],z=r[1],p=r[2],w=o[0],A=o[1],R=o[2];return t[0]=(1-(x+F))*v,t[1]=(S+d)*v,t[2]=(I-h)*v,t[3]=0,t[4]=(S-d)*z,t[5]=(1-(D+F))*z,t[6]=(f+m)*z,t[7]=0,t[8]=(I+h)*p,t[9]=(f-m)*p,t[10]=(1-(D+x))*p,t[11]=0,t[12]=n[0]+w-(t[0]*w+t[4]*A+t[8]*R),t[13]=n[1]+A-(t[1]*w+t[5]*A+t[9]*R),t[14]=n[2]+R-(t[2]*w+t[6]*A+t[10]*R),t[15]=1,t},o.fromQuat=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n+n,e=r+r,M=o+o,i=n*u,s=r*u,c=r*e,D=o*u,S=o*e,I=o*M,x=l*u,f=l*e,F=l*M;return t[0]=1-c-I,t[1]=s+F,t[2]=D-f,t[3]=0,t[4]=s-F,t[5]=1-i-I,t[6]=S+x,t[7]=0,t[8]=D+f,t[9]=S-x,t[10]=1-i-c,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.frustum=function(t,a,n,r,o,l,u){var e=1/(n-a),M=1/(o-r),i=1/(l-u);return t[0]=2*l*e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*l*M,t[6]=0,t[7]=0,t[8]=(n+a)*e,t[9]=(o+r)*M,t[10]=(u+l)*i,t[11]=-1,t[12]=0,t[13]=0,t[14]=u*l*2*i,t[15]=0,t},o.perspective=function(t,a,n,r,o){var l=1/Math.tan(a/2),u=1/(r-o);return t[0]=l/n,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(o+r)*u,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*o*r*u,t[15]=0,t},o.perspectiveFromFieldOfView=function(t,a,n,r){var o=Math.tan(a.upDegrees*Math.PI/180),l=Math.tan(a.downDegrees*Math.PI/180),u=Math.tan(a.leftDegrees*Math.PI/180),e=Math.tan(a.rightDegrees*Math.PI/180),M=2/(u+e),i=2/(o+l);return t[0]=M,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=i,t[6]=0,t[7]=0,t[8]=-((u-e)*M*.5),t[9]=(o-l)*i*.5,t[10]=r/(n-r),t[11]=-1,t[12]=0,t[13]=0,t[14]=r*n/(n-r),t[15]=0,t},o.ortho=function(t,a,n,r,o,l,u){var e=1/(a-n),M=1/(r-o),i=1/(l-u);return t[0]=-2*e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*M,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*i,t[11]=0,t[12]=(a+n)*e,t[13]=(o+r)*M,t[14]=(u+l)*i,t[15]=1,t},o.lookAt=function(t,a,n,l){var u,e,M,i,s,c,D,S,I,x,f=a[0],F=a[1],m=a[2],h=l[0],d=l[1],v=l[2],z=n[0],p=n[1],w=n[2];return Math.abs(f-z)<r.EPSILON&&Math.abs(F-p)<r.EPSILON&&Math.abs(m-w)<r.EPSILON?o.identity(t):(D=f-z,S=F-p,I=m-w,x=1/Math.sqrt(D*D+S*S+I*I),D*=x,S*=x,I*=x,u=d*I-v*S,e=v*D-h*I,M=h*S-d*D,x=Math.sqrt(u*u+e*e+M*M),x?(x=1/x,u*=x,e*=x,M*=x):(u=0,e=0,M=0),i=S*M-I*e,s=I*u-D*M,c=D*e-S*u,x=Math.sqrt(i*i+s*s+c*c),x?(x=1/x,i*=x,s*=x,c*=x):(i=0,s=0,c=0),t[0]=u,t[1]=i,t[2]=D,t[3]=0,t[4]=e,t[5]=s,t[6]=S,t[7]=0,t[8]=M,t[9]=c,t[10]=I,t[11]=0,t[12]=-(u*f+e*F+M*m),t[13]=-(i*f+s*F+c*m),t[14]=-(D*f+S*F+I*m),t[15]=1,t)},o.str=function(t){return"mat4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+", "+t[9]+", "+t[10]+", "+t[11]+", "+t[12]+", "+t[13]+", "+t[14]+", "+t[15]+")"},o.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+Math.pow(t[6],2)+Math.pow(t[7],2)+Math.pow(t[8],2)+Math.pow(t[9],2)+Math.pow(t[10],2)+Math.pow(t[11],2)+Math.pow(t[12],2)+Math.pow(t[13],2)+Math.pow(t[14],2)+Math.pow(t[15],2))},t.exports=o},function(t,a,n){var r=n(1),o=n(4),l=n(7),u=n(8),e={};e.create=function(){var t=new r.ARRAY_TYPE(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},e.rotationTo=function(){var t=l.create(),a=l.fromValues(1,0,0),n=l.fromValues(0,1,0);return function(r,o,u){var M=l.dot(o,u);return-.999999>M?(l.cross(t,a,o),l.length(t)<1e-6&&l.cross(t,n,o),l.normalize(t,t),e.setAxisAngle(r,t,Math.PI),r):M>.999999?(r[0]=0,r[1]=0,r[2]=0,r[3]=1,r):(l.cross(t,o,u),r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=1+M,e.normalize(r,r))}}(),e.setAxes=function(){var t=o.create();return function(a,n,r,o){return t[0]=r[0],t[3]=r[1],t[6]=r[2],t[1]=o[0],t[4]=o[1],t[7]=o[2],t[2]=-n[0],t[5]=-n[1],t[8]=-n[2],e.normalize(a,e.fromMat3(a,t))}}(),e.clone=u.clone,e.fromValues=u.fromValues,e.copy=u.copy,e.set=u.set,e.identity=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},e.setAxisAngle=function(t,a,n){n=.5*n;var r=Math.sin(n);return t[0]=r*a[0],t[1]=r*a[1],t[2]=r*a[2],t[3]=Math.cos(n),t},e.add=u.add,e.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=n[0],M=n[1],i=n[2],s=n[3];return t[0]=r*s+u*e+o*i-l*M,t[1]=o*s+u*M+l*e-r*i,t[2]=l*s+u*i+r*M-o*e,t[3]=u*s-r*e-o*M-l*i,t},e.mul=e.multiply,e.scale=u.scale,e.rotateX=function(t,a,n){n*=.5;var r=a[0],o=a[1],l=a[2],u=a[3],e=Math.sin(n),M=Math.cos(n);return t[0]=r*M+u*e,t[1]=o*M+l*e,t[2]=l*M-o*e,t[3]=u*M-r*e,t},e.rotateY=function(t,a,n){n*=.5;var r=a[0],o=a[1],l=a[2],u=a[3],e=Math.sin(n),M=Math.cos(n);return t[0]=r*M-l*e,t[1]=o*M+u*e,t[2]=l*M+r*e,t[3]=u*M-o*e,t},e.rotateZ=function(t,a,n){n*=.5;var r=a[0],o=a[1],l=a[2],u=a[3],e=Math.sin(n),M=Math.cos(n);return t[0]=r*M+o*e,t[1]=o*M-r*e,t[2]=l*M+u*e,t[3]=u*M-l*e,t},e.calculateW=function(t,a){var n=a[0],r=a[1],o=a[2];return t[0]=n,t[1]=r,t[2]=o,t[3]=Math.sqrt(Math.abs(1-n*n-r*r-o*o)),t},e.dot=u.dot,e.lerp=u.lerp,e.slerp=function(t,a,n,r){var o,l,u,e,M,i=a[0],s=a[1],c=a[2],D=a[3],S=n[0],I=n[1],x=n[2],f=n[3];return l=i*S+s*I+c*x+D*f,0>l&&(l=-l,S=-S,I=-I,x=-x,f=-f),1-l>1e-6?(o=Math.acos(l),u=Math.sin(o),e=Math.sin((1-r)*o)/u,M=Math.sin(r*o)/u):(e=1-r,M=r),t[0]=e*i+M*S,t[1]=e*s+M*I,t[2]=e*c+M*x,t[3]=e*D+M*f,t},e.sqlerp=function(){var t=e.create(),a=e.create();return function(n,r,o,l,u,M){return e.slerp(t,r,u,M),e.slerp(a,o,l,M),e.slerp(n,t,a,2*M*(1-M)),n}}(),e.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n*n+r*r+o*o+l*l,e=u?1/u:0;
+return t[0]=-n*e,t[1]=-r*e,t[2]=-o*e,t[3]=l*e,t},e.conjugate=function(t,a){return t[0]=-a[0],t[1]=-a[1],t[2]=-a[2],t[3]=a[3],t},e.length=u.length,e.len=e.length,e.squaredLength=u.squaredLength,e.sqrLen=e.squaredLength,e.normalize=u.normalize,e.fromMat3=function(t,a){var n,r=a[0]+a[4]+a[8];if(r>0)n=Math.sqrt(r+1),t[3]=.5*n,n=.5/n,t[0]=(a[5]-a[7])*n,t[1]=(a[6]-a[2])*n,t[2]=(a[1]-a[3])*n;else{var o=0;a[4]>a[0]&&(o=1),a[8]>a[3*o+o]&&(o=2);var l=(o+1)%3,u=(o+2)%3;n=Math.sqrt(a[3*o+o]-a[3*l+l]-a[3*u+u]+1),t[o]=.5*n,n=.5/n,t[3]=(a[3*l+u]-a[3*u+l])*n,t[l]=(a[3*l+o]+a[3*o+l])*n,t[u]=(a[3*u+o]+a[3*o+u])*n}return t},e.str=function(t){return"quat("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t.exports=e},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(3);return t[0]=0,t[1]=0,t[2]=0,t},o.clone=function(t){var a=new r.ARRAY_TYPE(3);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a},o.fromValues=function(t,a,n){var o=new r.ARRAY_TYPE(3);return o[0]=t,o[1]=a,o[2]=n,o},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t},o.set=function(t,a,n,r){return t[0]=a,t[1]=n,t[2]=r,t},o.add=function(t,a,n){return t[0]=a[0]+n[0],t[1]=a[1]+n[1],t[2]=a[2]+n[2],t},o.subtract=function(t,a,n){return t[0]=a[0]-n[0],t[1]=a[1]-n[1],t[2]=a[2]-n[2],t},o.sub=o.subtract,o.multiply=function(t,a,n){return t[0]=a[0]*n[0],t[1]=a[1]*n[1],t[2]=a[2]*n[2],t},o.mul=o.multiply,o.divide=function(t,a,n){return t[0]=a[0]/n[0],t[1]=a[1]/n[1],t[2]=a[2]/n[2],t},o.div=o.divide,o.min=function(t,a,n){return t[0]=Math.min(a[0],n[0]),t[1]=Math.min(a[1],n[1]),t[2]=Math.min(a[2],n[2]),t},o.max=function(t,a,n){return t[0]=Math.max(a[0],n[0]),t[1]=Math.max(a[1],n[1]),t[2]=Math.max(a[2],n[2]),t},o.scale=function(t,a,n){return t[0]=a[0]*n,t[1]=a[1]*n,t[2]=a[2]*n,t},o.scaleAndAdd=function(t,a,n,r){return t[0]=a[0]+n[0]*r,t[1]=a[1]+n[1]*r,t[2]=a[2]+n[2]*r,t},o.distance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1],o=a[2]-t[2];return Math.sqrt(n*n+r*r+o*o)},o.dist=o.distance,o.squaredDistance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1],o=a[2]-t[2];return n*n+r*r+o*o},o.sqrDist=o.squaredDistance,o.length=function(t){var a=t[0],n=t[1],r=t[2];return Math.sqrt(a*a+n*n+r*r)},o.len=o.length,o.squaredLength=function(t){var a=t[0],n=t[1],r=t[2];return a*a+n*n+r*r},o.sqrLen=o.squaredLength,o.negate=function(t,a){return t[0]=-a[0],t[1]=-a[1],t[2]=-a[2],t},o.inverse=function(t,a){return t[0]=1/a[0],t[1]=1/a[1],t[2]=1/a[2],t},o.normalize=function(t,a){var n=a[0],r=a[1],o=a[2],l=n*n+r*r+o*o;return l>0&&(l=1/Math.sqrt(l),t[0]=a[0]*l,t[1]=a[1]*l,t[2]=a[2]*l),t},o.dot=function(t,a){return t[0]*a[0]+t[1]*a[1]+t[2]*a[2]},o.cross=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=n[0],e=n[1],M=n[2];return t[0]=o*M-l*e,t[1]=l*u-r*M,t[2]=r*e-o*u,t},o.lerp=function(t,a,n,r){var o=a[0],l=a[1],u=a[2];return t[0]=o+r*(n[0]-o),t[1]=l+r*(n[1]-l),t[2]=u+r*(n[2]-u),t},o.hermite=function(t,a,n,r,o,l){var u=l*l,e=u*(2*l-3)+1,M=u*(l-2)+l,i=u*(l-1),s=u*(3-2*l);return t[0]=a[0]*e+n[0]*M+r[0]*i+o[0]*s,t[1]=a[1]*e+n[1]*M+r[1]*i+o[1]*s,t[2]=a[2]*e+n[2]*M+r[2]*i+o[2]*s,t},o.bezier=function(t,a,n,r,o,l){var u=1-l,e=u*u,M=l*l,i=e*u,s=3*l*e,c=3*M*u,D=M*l;return t[0]=a[0]*i+n[0]*s+r[0]*c+o[0]*D,t[1]=a[1]*i+n[1]*s+r[1]*c+o[1]*D,t[2]=a[2]*i+n[2]*s+r[2]*c+o[2]*D,t},o.random=function(t,a){a=a||1;var n=2*r.RANDOM()*Math.PI,o=2*r.RANDOM()-1,l=Math.sqrt(1-o*o)*a;return t[0]=Math.cos(n)*l,t[1]=Math.sin(n)*l,t[2]=o*a,t},o.transformMat4=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=n[3]*r+n[7]*o+n[11]*l+n[15];return u=u||1,t[0]=(n[0]*r+n[4]*o+n[8]*l+n[12])/u,t[1]=(n[1]*r+n[5]*o+n[9]*l+n[13])/u,t[2]=(n[2]*r+n[6]*o+n[10]*l+n[14])/u,t},o.transformMat3=function(t,a,n){var r=a[0],o=a[1],l=a[2];return t[0]=r*n[0]+o*n[3]+l*n[6],t[1]=r*n[1]+o*n[4]+l*n[7],t[2]=r*n[2]+o*n[5]+l*n[8],t},o.transformQuat=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=n[0],e=n[1],M=n[2],i=n[3],s=i*r+e*l-M*o,c=i*o+M*r-u*l,D=i*l+u*o-e*r,S=-u*r-e*o-M*l;return t[0]=s*i+S*-u+c*-M-D*-e,t[1]=c*i+S*-e+D*-u-s*-M,t[2]=D*i+S*-M+s*-e-c*-u,t},o.rotateX=function(t,a,n,r){var o=[],l=[];return o[0]=a[0]-n[0],o[1]=a[1]-n[1],o[2]=a[2]-n[2],l[0]=o[0],l[1]=o[1]*Math.cos(r)-o[2]*Math.sin(r),l[2]=o[1]*Math.sin(r)+o[2]*Math.cos(r),t[0]=l[0]+n[0],t[1]=l[1]+n[1],t[2]=l[2]+n[2],t},o.rotateY=function(t,a,n,r){var o=[],l=[];return o[0]=a[0]-n[0],o[1]=a[1]-n[1],o[2]=a[2]-n[2],l[0]=o[2]*Math.sin(r)+o[0]*Math.cos(r),l[1]=o[1],l[2]=o[2]*Math.cos(r)-o[0]*Math.sin(r),t[0]=l[0]+n[0],t[1]=l[1]+n[1],t[2]=l[2]+n[2],t},o.rotateZ=function(t,a,n,r){var o=[],l=[];return o[0]=a[0]-n[0],o[1]=a[1]-n[1],o[2]=a[2]-n[2],l[0]=o[0]*Math.cos(r)-o[1]*Math.sin(r),l[1]=o[0]*Math.sin(r)+o[1]*Math.cos(r),l[2]=o[2],t[0]=l[0]+n[0],t[1]=l[1]+n[1],t[2]=l[2]+n[2],t},o.forEach=function(){var t=o.create();return function(a,n,r,o,l,u){var e,M;for(n||(n=3),r||(r=0),M=o?Math.min(o*n+r,a.length):a.length,e=r;M>e;e+=n)t[0]=a[e],t[1]=a[e+1],t[2]=a[e+2],l(t,t,u),a[e]=t[0],a[e+1]=t[1],a[e+2]=t[2];return a}}(),o.angle=function(t,a){var n=o.fromValues(t[0],t[1],t[2]),r=o.fromValues(a[0],a[1],a[2]);o.normalize(n,n),o.normalize(r,r);var l=o.dot(n,r);return l>1?0:Math.acos(l)},o.str=function(t){return"vec3("+t[0]+", "+t[1]+", "+t[2]+")"},t.exports=o},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t},o.clone=function(t){var a=new r.ARRAY_TYPE(4);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a},o.fromValues=function(t,a,n,o){var l=new r.ARRAY_TYPE(4);return l[0]=t,l[1]=a,l[2]=n,l[3]=o,l},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t},o.set=function(t,a,n,r,o){return t[0]=a,t[1]=n,t[2]=r,t[3]=o,t},o.add=function(t,a,n){return t[0]=a[0]+n[0],t[1]=a[1]+n[1],t[2]=a[2]+n[2],t[3]=a[3]+n[3],t},o.subtract=function(t,a,n){return t[0]=a[0]-n[0],t[1]=a[1]-n[1],t[2]=a[2]-n[2],t[3]=a[3]-n[3],t},o.sub=o.subtract,o.multiply=function(t,a,n){return t[0]=a[0]*n[0],t[1]=a[1]*n[1],t[2]=a[2]*n[2],t[3]=a[3]*n[3],t},o.mul=o.multiply,o.divide=function(t,a,n){return t[0]=a[0]/n[0],t[1]=a[1]/n[1],t[2]=a[2]/n[2],t[3]=a[3]/n[3],t},o.div=o.divide,o.min=function(t,a,n){return t[0]=Math.min(a[0],n[0]),t[1]=Math.min(a[1],n[1]),t[2]=Math.min(a[2],n[2]),t[3]=Math.min(a[3],n[3]),t},o.max=function(t,a,n){return t[0]=Math.max(a[0],n[0]),t[1]=Math.max(a[1],n[1]),t[2]=Math.max(a[2],n[2]),t[3]=Math.max(a[3],n[3]),t},o.scale=function(t,a,n){return t[0]=a[0]*n,t[1]=a[1]*n,t[2]=a[2]*n,t[3]=a[3]*n,t},o.scaleAndAdd=function(t,a,n,r){return t[0]=a[0]+n[0]*r,t[1]=a[1]+n[1]*r,t[2]=a[2]+n[2]*r,t[3]=a[3]+n[3]*r,t},o.distance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1],o=a[2]-t[2],l=a[3]-t[3];return Math.sqrt(n*n+r*r+o*o+l*l)},o.dist=o.distance,o.squaredDistance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1],o=a[2]-t[2],l=a[3]-t[3];return n*n+r*r+o*o+l*l},o.sqrDist=o.squaredDistance,o.length=function(t){var a=t[0],n=t[1],r=t[2],o=t[3];return Math.sqrt(a*a+n*n+r*r+o*o)},o.len=o.length,o.squaredLength=function(t){var a=t[0],n=t[1],r=t[2],o=t[3];return a*a+n*n+r*r+o*o},o.sqrLen=o.squaredLength,o.negate=function(t,a){return t[0]=-a[0],t[1]=-a[1],t[2]=-a[2],t[3]=-a[3],t},o.inverse=function(t,a){return t[0]=1/a[0],t[1]=1/a[1],t[2]=1/a[2],t[3]=1/a[3],t},o.normalize=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n*n+r*r+o*o+l*l;return u>0&&(u=1/Math.sqrt(u),t[0]=n*u,t[1]=r*u,t[2]=o*u,t[3]=l*u),t},o.dot=function(t,a){return t[0]*a[0]+t[1]*a[1]+t[2]*a[2]+t[3]*a[3]},o.lerp=function(t,a,n,r){var o=a[0],l=a[1],u=a[2],e=a[3];return t[0]=o+r*(n[0]-o),t[1]=l+r*(n[1]-l),t[2]=u+r*(n[2]-u),t[3]=e+r*(n[3]-e),t},o.random=function(t,a){return a=a||1,t[0]=r.RANDOM(),t[1]=r.RANDOM(),t[2]=r.RANDOM(),t[3]=r.RANDOM(),o.normalize(t,t),o.scale(t,t,a),t},o.transformMat4=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3];return t[0]=n[0]*r+n[4]*o+n[8]*l+n[12]*u,t[1]=n[1]*r+n[5]*o+n[9]*l+n[13]*u,t[2]=n[2]*r+n[6]*o+n[10]*l+n[14]*u,t[3]=n[3]*r+n[7]*o+n[11]*l+n[15]*u,t},o.transformQuat=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=n[0],e=n[1],M=n[2],i=n[3],s=i*r+e*l-M*o,c=i*o+M*r-u*l,D=i*l+u*o-e*r,S=-u*r-e*o-M*l;return t[0]=s*i+S*-u+c*-M-D*-e,t[1]=c*i+S*-e+D*-u-s*-M,t[2]=D*i+S*-M+s*-e-c*-u,t[3]=a[3],t},o.forEach=function(){var t=o.create();return function(a,n,r,o,l,u){var e,M;for(n||(n=4),r||(r=0),M=o?Math.min(o*n+r,a.length):a.length,e=r;M>e;e+=n)t[0]=a[e],t[1]=a[e+1],t[2]=a[e+2],t[3]=a[e+3],l(t,t,u),a[e]=t[0],a[e+1]=t[1],a[e+2]=t[2],a[e+3]=t[3];return a}}(),o.str=function(t){return"vec4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t.exports=o},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(2);return t[0]=0,t[1]=0,t},o.clone=function(t){var a=new r.ARRAY_TYPE(2);return a[0]=t[0],a[1]=t[1],a},o.fromValues=function(t,a){var n=new r.ARRAY_TYPE(2);return n[0]=t,n[1]=a,n},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t},o.set=function(t,a,n){return t[0]=a,t[1]=n,t},o.add=function(t,a,n){return t[0]=a[0]+n[0],t[1]=a[1]+n[1],t},o.subtract=function(t,a,n){return t[0]=a[0]-n[0],t[1]=a[1]-n[1],t},o.sub=o.subtract,o.multiply=function(t,a,n){return t[0]=a[0]*n[0],t[1]=a[1]*n[1],t},o.mul=o.multiply,o.divide=function(t,a,n){return t[0]=a[0]/n[0],t[1]=a[1]/n[1],t},o.div=o.divide,o.min=function(t,a,n){return t[0]=Math.min(a[0],n[0]),t[1]=Math.min(a[1],n[1]),t},o.max=function(t,a,n){return t[0]=Math.max(a[0],n[0]),t[1]=Math.max(a[1],n[1]),t},o.scale=function(t,a,n){return t[0]=a[0]*n,t[1]=a[1]*n,t},o.scaleAndAdd=function(t,a,n,r){return t[0]=a[0]+n[0]*r,t[1]=a[1]+n[1]*r,t},o.distance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1];return Math.sqrt(n*n+r*r)},o.dist=o.distance,o.squaredDistance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1];return n*n+r*r},o.sqrDist=o.squaredDistance,o.length=function(t){var a=t[0],n=t[1];return Math.sqrt(a*a+n*n)},o.len=o.length,o.squaredLength=function(t){var a=t[0],n=t[1];return a*a+n*n},o.sqrLen=o.squaredLength,o.negate=function(t,a){return t[0]=-a[0],t[1]=-a[1],t},o.inverse=function(t,a){return t[0]=1/a[0],t[1]=1/a[1],t},o.normalize=function(t,a){var n=a[0],r=a[1],o=n*n+r*r;return o>0&&(o=1/Math.sqrt(o),t[0]=a[0]*o,t[1]=a[1]*o),t},o.dot=function(t,a){return t[0]*a[0]+t[1]*a[1]},o.cross=function(t,a,n){var r=a[0]*n[1]-a[1]*n[0];return t[0]=t[1]=0,t[2]=r,t},o.lerp=function(t,a,n,r){var o=a[0],l=a[1];return t[0]=o+r*(n[0]-o),t[1]=l+r*(n[1]-l),t},o.random=function(t,a){a=a||1;var n=2*r.RANDOM()*Math.PI;return t[0]=Math.cos(n)*a,t[1]=Math.sin(n)*a,t},o.transformMat2=function(t,a,n){var r=a[0],o=a[1];return t[0]=n[0]*r+n[2]*o,t[1]=n[1]*r+n[3]*o,t},o.transformMat2d=function(t,a,n){var r=a[0],o=a[1];return t[0]=n[0]*r+n[2]*o+n[4],t[1]=n[1]*r+n[3]*o+n[5],t},o.transformMat3=function(t,a,n){var r=a[0],o=a[1];return t[0]=n[0]*r+n[3]*o+n[6],t[1]=n[1]*r+n[4]*o+n[7],t},o.transformMat4=function(t,a,n){var r=a[0],o=a[1];return t[0]=n[0]*r+n[4]*o+n[12],t[1]=n[1]*r+n[5]*o+n[13],t},o.forEach=function(){var t=o.create();return function(a,n,r,o,l,u){var e,M;for(n||(n=2),r||(r=0),M=o?Math.min(o*n+r,a.length):a.length,e=r;M>e;e+=n)t[0]=a[e],t[1]=a[e+1],l(t,t,u),a[e]=t[0],a[e+1]=t[1];return a}}(),o.str=function(t){return"vec2("+t[0]+", "+t[1]+")"},t.exports=o}])});
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/javascript/src/hammer.min.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/javascript/src/hammer.min.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/javascript/src/hammer.min.js	(revision 21239)
@@ -0,0 +1,6 @@
+/*! Hammer.JS - v2.0.4 - 2014-09-28
+ * http://hammerjs.github.io/
+ *
+ * Copyright (c) 2014 Jorik Tangelder;
+ * Licensed under the MIT license */
+!function(a,b,c,d){"use strict";function e(a,b,c){return setTimeout(k(a,c),b)}function f(a,b,c){return Array.isArray(a)?(g(a,c[b],c),!0):!1}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e<a.length;)b.call(c,a[e],e,a),e++;else for(e in a)a.hasOwnProperty(e)&&b.call(c,a[e],e,a)}function h(a,b,c){for(var e=Object.keys(b),f=0;f<e.length;)(!c||c&&a[e[f]]===d)&&(a[e[f]]=b[e[f]]),f++;return a}function i(a,b){return h(a,b,!0)}function j(a,b,c){var d,e=b.prototype;d=a.prototype=Object.create(e),d.constructor=a,d._super=e,c&&h(d,c)}function k(a,b){return function(){return a.apply(b,arguments)}}function l(a,b){return typeof a==kb?a.apply(b?b[0]||d:d,b):a}function m(a,b){return a===d?b:a}function n(a,b,c){g(r(b),function(b){a.addEventListener(b,c,!1)})}function o(a,b,c){g(r(b),function(b){a.removeEventListener(b,c,!1)})}function p(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function q(a,b){return a.indexOf(b)>-1}function r(a){return a.trim().split(/\s+/g)}function s(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;d<a.length;){if(c&&a[d][c]==b||!c&&a[d]===b)return d;d++}return-1}function t(a){return Array.prototype.slice.call(a,0)}function u(a,b,c){for(var d=[],e=[],f=0;f<a.length;){var g=b?a[f][b]:a[f];s(e,g)<0&&d.push(a[f]),e[f]=g,f++}return c&&(d=b?d.sort(function(a,c){return a[b]>c[b]}):d.sort()),d}function v(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g<ib.length;){if(c=ib[g],e=c?c+f:b,e in a)return e;g++}return d}function w(){return ob++}function x(a){var b=a.ownerDocument;return b.defaultView||b.parentWindow}function y(a,b){var c=this;this.manager=a,this.callback=b,this.element=a.element,this.target=a.options.inputTarget,this.domHandler=function(b){l(a.options.enable,[a])&&c.handler(b)},this.init()}function z(a){var b,c=a.options.inputClass;return new(b=c?c:rb?N:sb?Q:qb?S:M)(a,A)}function A(a,b,c){var d=c.pointers.length,e=c.changedPointers.length,f=b&yb&&d-e===0,g=b&(Ab|Bb)&&d-e===0;c.isFirst=!!f,c.isFinal=!!g,f&&(a.session={}),c.eventType=b,B(a,c),a.emit("hammer.input",c),a.recognize(c),a.session.prevInput=c}function B(a,b){var c=a.session,d=b.pointers,e=d.length;c.firstInput||(c.firstInput=E(b)),e>1&&!c.firstMultiple?c.firstMultiple=E(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=F(d);b.timeStamp=nb(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=J(h,i),b.distance=I(h,i),C(c,b),b.offsetDirection=H(b.deltaX,b.deltaY),b.scale=g?L(g.pointers,d):1,b.rotation=g?K(g.pointers,d):0,D(c,b);var j=a.element;p(b.srcEvent.target,j)&&(j=b.srcEvent.target),b.target=j}function C(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===yb||f.eventType===Ab)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function D(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Bb&&(i>xb||h.velocity===d)){var j=h.deltaX-b.deltaX,k=h.deltaY-b.deltaY,l=G(i,j,k);e=l.x,f=l.y,c=mb(l.x)>mb(l.y)?l.x:l.y,g=H(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function E(a){for(var b=[],c=0;c<a.pointers.length;)b[c]={clientX:lb(a.pointers[c].clientX),clientY:lb(a.pointers[c].clientY)},c++;return{timeStamp:nb(),pointers:b,center:F(b),deltaX:a.deltaX,deltaY:a.deltaY}}function F(a){var b=a.length;if(1===b)return{x:lb(a[0].clientX),y:lb(a[0].clientY)};for(var c=0,d=0,e=0;b>e;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:lb(c/b),y:lb(d/b)}}function G(a,b,c){return{x:b/a||0,y:c/a||0}}function H(a,b){return a===b?Cb:mb(a)>=mb(b)?a>0?Db:Eb:b>0?Fb:Gb}function I(a,b,c){c||(c=Kb);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function J(a,b,c){c||(c=Kb);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function K(a,b){return J(b[1],b[0],Lb)-J(a[1],a[0],Lb)}function L(a,b){return I(b[0],b[1],Lb)/I(a[0],a[1],Lb)}function M(){this.evEl=Nb,this.evWin=Ob,this.allow=!0,this.pressed=!1,y.apply(this,arguments)}function N(){this.evEl=Rb,this.evWin=Sb,y.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function O(){this.evTarget=Ub,this.evWin=Vb,this.started=!1,y.apply(this,arguments)}function P(a,b){var c=t(a.touches),d=t(a.changedTouches);return b&(Ab|Bb)&&(c=u(c.concat(d),"identifier",!0)),[c,d]}function Q(){this.evTarget=Xb,this.targetIds={},y.apply(this,arguments)}function R(a,b){var c=t(a.touches),d=this.targetIds;if(b&(yb|zb)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=t(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return p(a.target,i)}),b===yb)for(e=0;e<f.length;)d[f[e].identifier]=!0,e++;for(e=0;e<g.length;)d[g[e].identifier]&&h.push(g[e]),b&(Ab|Bb)&&delete d[g[e].identifier],e++;return h.length?[u(f.concat(h),"identifier",!0),h]:void 0}function S(){y.apply(this,arguments);var a=k(this.handler,this);this.touch=new Q(this.manager,a),this.mouse=new M(this.manager,a)}function T(a,b){this.manager=a,this.set(b)}function U(a){if(q(a,bc))return bc;var b=q(a,cc),c=q(a,dc);return b&&c?cc+" "+dc:b||c?b?cc:dc:q(a,ac)?ac:_b}function V(a){this.id=w(),this.manager=null,this.options=i(a||{},this.defaults),this.options.enable=m(this.options.enable,!0),this.state=ec,this.simultaneous={},this.requireFail=[]}function W(a){return a&jc?"cancel":a&hc?"end":a&gc?"move":a&fc?"start":""}function X(a){return a==Gb?"down":a==Fb?"up":a==Db?"left":a==Eb?"right":""}function Y(a,b){var c=b.manager;return c?c.get(a):a}function Z(){V.apply(this,arguments)}function $(){Z.apply(this,arguments),this.pX=null,this.pY=null}function _(){Z.apply(this,arguments)}function ab(){V.apply(this,arguments),this._timer=null,this._input=null}function bb(){Z.apply(this,arguments)}function cb(){Z.apply(this,arguments)}function db(){V.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function eb(a,b){return b=b||{},b.recognizers=m(b.recognizers,eb.defaults.preset),new fb(a,b)}function fb(a,b){b=b||{},this.options=i(b,eb.defaults),this.options.inputTarget=this.options.inputTarget||a,this.handlers={},this.session={},this.recognizers=[],this.element=a,this.input=z(this),this.touchAction=new T(this,this.options.touchAction),gb(this,!0),g(b.recognizers,function(a){var b=this.add(new a[0](a[1]));a[2]&&b.recognizeWith(a[2]),a[3]&&b.requireFailure(a[3])},this)}function gb(a,b){var c=a.element;g(a.options.cssProps,function(a,d){c.style[v(c.style,d)]=b?a:""})}function hb(a,c){var d=b.createEvent("Event");d.initEvent(a,!0,!0),d.gesture=c,c.target.dispatchEvent(d)}var ib=["","webkit","moz","MS","ms","o"],jb=b.createElement("div"),kb="function",lb=Math.round,mb=Math.abs,nb=Date.now,ob=1,pb=/mobile|tablet|ip(ad|hone|od)|android/i,qb="ontouchstart"in a,rb=v(a,"PointerEvent")!==d,sb=qb&&pb.test(navigator.userAgent),tb="touch",ub="pen",vb="mouse",wb="kinect",xb=25,yb=1,zb=2,Ab=4,Bb=8,Cb=1,Db=2,Eb=4,Fb=8,Gb=16,Hb=Db|Eb,Ib=Fb|Gb,Jb=Hb|Ib,Kb=["x","y"],Lb=["clientX","clientY"];y.prototype={handler:function(){},init:function(){this.evEl&&n(this.element,this.evEl,this.domHandler),this.evTarget&&n(this.target,this.evTarget,this.domHandler),this.evWin&&n(x(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&o(this.element,this.evEl,this.domHandler),this.evTarget&&o(this.target,this.evTarget,this.domHandler),this.evWin&&o(x(this.element),this.evWin,this.domHandler)}};var Mb={mousedown:yb,mousemove:zb,mouseup:Ab},Nb="mousedown",Ob="mousemove mouseup";j(M,y,{handler:function(a){var b=Mb[a.type];b&yb&&0===a.button&&(this.pressed=!0),b&zb&&1!==a.which&&(b=Ab),this.pressed&&this.allow&&(b&Ab&&(this.pressed=!1),this.callback(this.manager,b,{pointers:[a],changedPointers:[a],pointerType:vb,srcEvent:a}))}});var Pb={pointerdown:yb,pointermove:zb,pointerup:Ab,pointercancel:Bb,pointerout:Bb},Qb={2:tb,3:ub,4:vb,5:wb},Rb="pointerdown",Sb="pointermove pointerup pointercancel";a.MSPointerEvent&&(Rb="MSPointerDown",Sb="MSPointerMove MSPointerUp MSPointerCancel"),j(N,y,{handler:function(a){var b=this.store,c=!1,d=a.type.toLowerCase().replace("ms",""),e=Pb[d],f=Qb[a.pointerType]||a.pointerType,g=f==tb,h=s(b,a.pointerId,"pointerId");e&yb&&(0===a.button||g)?0>h&&(b.push(a),h=b.length-1):e&(Ab|Bb)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Tb={touchstart:yb,touchmove:zb,touchend:Ab,touchcancel:Bb},Ub="touchstart",Vb="touchstart touchmove touchend touchcancel";j(O,y,{handler:function(a){var b=Tb[a.type];if(b===yb&&(this.started=!0),this.started){var c=P.call(this,a,b);b&(Ab|Bb)&&c[0].length-c[1].length===0&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:tb,srcEvent:a})}}});var Wb={touchstart:yb,touchmove:zb,touchend:Ab,touchcancel:Bb},Xb="touchstart touchmove touchend touchcancel";j(Q,y,{handler:function(a){var b=Wb[a.type],c=R.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:tb,srcEvent:a})}}),j(S,y,{handler:function(a,b,c){var d=c.pointerType==tb,e=c.pointerType==vb;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Ab|Bb)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Yb=v(jb.style,"touchAction"),Zb=Yb!==d,$b="compute",_b="auto",ac="manipulation",bc="none",cc="pan-x",dc="pan-y";T.prototype={set:function(a){a==$b&&(a=this.compute()),Zb&&(this.manager.element.style[Yb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){l(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),U(a.join(" "))},preventDefaults:function(a){if(!Zb){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=q(d,bc),f=q(d,dc),g=q(d,cc);return e||f&&c&Hb||g&&c&Ib?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var ec=1,fc=2,gc=4,hc=8,ic=hc,jc=16,kc=32;V.prototype={defaults:{},set:function(a){return h(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(f(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=Y(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=Y(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,"requireFailure",this))return this;var b=this.requireFail;return a=Y(a,this),-1===s(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this))return this;a=Y(a,this);var b=s(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(c.options.event+(b?W(d):""),a)}var c=this,d=this.state;hc>d&&b(!0),b(),d>=hc&&b(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=kc)},canEmit:function(){for(var a=0;a<this.requireFail.length;){if(!(this.requireFail[a].state&(kc|ec)))return!1;a++}return!0},recognize:function(a){var b=h({},a);return l(this.options.enable,[this,b])?(this.state&(ic|jc|kc)&&(this.state=ec),this.state=this.process(b),void(this.state&(fc|gc|hc|jc)&&this.tryEmit(b))):(this.reset(),void(this.state=kc))},process:function(){},getTouchAction:function(){},reset:function(){}},j(Z,V,{defaults:{pointers:1},attrTest:function(a){var b=this.options.pointers;return 0===b||a.pointers.length===b},process:function(a){var b=this.state,c=a.eventType,d=b&(fc|gc),e=this.attrTest(a);return d&&(c&Bb||!e)?b|jc:d||e?c&Ab?b|hc:b&fc?b|gc:fc:kc}}),j($,Z,{defaults:{event:"pan",threshold:10,pointers:1,direction:Jb},getTouchAction:function(){var a=this.options.direction,b=[];return a&Hb&&b.push(dc),a&Ib&&b.push(cc),b},directionTest:function(a){var b=this.options,c=!0,d=a.distance,e=a.direction,f=a.deltaX,g=a.deltaY;return e&b.direction||(b.direction&Hb?(e=0===f?Cb:0>f?Db:Eb,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Cb:0>g?Fb:Gb,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return Z.prototype.attrTest.call(this,a)&&(this.state&fc||!(this.state&fc)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),j(_,Z,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[bc]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&fc)},emit:function(a){if(this._super.emit.call(this,a),1!==a.scale){var b=a.scale<1?"in":"out";this.manager.emit(this.options.event+b,a)}}}),j(ab,V,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[_b]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime>b.time;if(this._input=a,!d||!c||a.eventType&(Ab|Bb)&&!f)this.reset();else if(a.eventType&yb)this.reset(),this._timer=e(function(){this.state=ic,this.tryEmit()},b.time,this);else if(a.eventType&Ab)return ic;return kc},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===ic&&(a&&a.eventType&Ab?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=nb(),this.manager.emit(this.options.event,this._input)))}}),j(bb,Z,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[bc]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&fc)}}),j(cb,Z,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:Hb|Ib,pointers:1},getTouchAction:function(){return $.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Hb|Ib)?b=a.velocity:c&Hb?b=a.velocityX:c&Ib&&(b=a.velocityY),this._super.attrTest.call(this,a)&&c&a.direction&&a.distance>this.options.threshold&&mb(b)>this.options.velocity&&a.eventType&Ab},emit:function(a){var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),j(db,V,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[ac]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime<b.time;if(this.reset(),a.eventType&yb&&0===this.count)return this.failTimeout();if(d&&f&&c){if(a.eventType!=Ab)return this.failTimeout();var g=this.pTime?a.timeStamp-this.pTime<b.interval:!0,h=!this.pCenter||I(this.pCenter,a.center)<b.posThreshold;this.pTime=a.timeStamp,this.pCenter=a.center,h&&g?this.count+=1:this.count=1,this._input=a;var i=this.count%b.taps;if(0===i)return this.hasRequireFailures()?(this._timer=e(function(){this.state=ic,this.tryEmit()},b.interval,this),fc):ic}return kc},failTimeout:function(){return this._timer=e(function(){this.state=kc},this.options.interval,this),kc},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==ic&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),eb.VERSION="2.0.4",eb.defaults={domEvents:!1,touchAction:$b,enable:!0,inputTarget:null,inputClass:null,preset:[[bb,{enable:!1}],[_,{enable:!1},["rotate"]],[cb,{direction:Hb}],[$,{direction:Hb},["swipe"]],[db],[db,{event:"doubletap",taps:2},["tap"]],[ab]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var lc=1,mc=2;fb.prototype={set:function(a){return h(this.options,a),a.touchAction&&this.touchAction.update(),a.inputTarget&&(this.input.destroy(),this.input.target=a.inputTarget,this.input.init()),this},stop:function(a){this.session.stopped=a?mc:lc},recognize:function(a){var b=this.session;if(!b.stopped){this.touchAction.preventDefaults(a);var c,d=this.recognizers,e=b.curRecognizer;(!e||e&&e.state&ic)&&(e=b.curRecognizer=null);for(var f=0;f<d.length;)c=d[f],b.stopped===mc||e&&c!=e&&!c.canRecognizeWith(e)?c.reset():c.recognize(a),!e&&c.state&(fc|gc|hc)&&(e=b.curRecognizer=c),f++}},get:function(a){if(a instanceof V)return a;for(var b=this.recognizers,c=0;c<b.length;c++)if(b[c].options.event==a)return b[c];return null},add:function(a){if(f(a,"add",this))return this;var b=this.get(a.options.event);return b&&this.remove(b),this.recognizers.push(a),a.manager=this,this.touchAction.update(),a},remove:function(a){if(f(a,"remove",this))return this;var b=this.recognizers;return a=this.get(a),b.splice(s(b,a),1),this.touchAction.update(),this},on:function(a,b){var c=this.handlers;return g(r(a),function(a){c[a]=c[a]||[],c[a].push(b)}),this},off:function(a,b){var c=this.handlers;return g(r(a),function(a){b?c[a].splice(s(c[a],b),1):delete c[a]}),this},emit:function(a,b){this.options.domEvents&&hb(a,b);var c=this.handlers[a]&&this.handlers[a].slice();if(c&&c.length){b.type=a,b.preventDefault=function(){b.srcEvent.preventDefault()};for(var d=0;d<c.length;)c[d](b),d++}},destroy:function(){this.element&&gb(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},h(eb,{INPUT_START:yb,INPUT_MOVE:zb,INPUT_END:Ab,INPUT_CANCEL:Bb,STATE_POSSIBLE:ec,STATE_BEGAN:fc,STATE_CHANGED:gc,STATE_ENDED:hc,STATE_RECOGNIZED:ic,STATE_CANCELLED:jc,STATE_FAILED:kc,DIRECTION_NONE:Cb,DIRECTION_LEFT:Db,DIRECTION_RIGHT:Eb,DIRECTION_UP:Fb,DIRECTION_DOWN:Gb,DIRECTION_HORIZONTAL:Hb,DIRECTION_VERTICAL:Ib,DIRECTION_ALL:Jb,Manager:fb,Input:y,TouchAction:T,TouchInput:Q,MouseInput:M,PointerEventInput:N,TouchMouseInput:S,SingleTouchInput:O,Recognizer:V,AttrRecognizer:Z,Tap:db,Pan:$,Swipe:cb,Pinch:_,Rotate:bb,Press:ab,on:n,off:o,each:g,merge:i,extend:h,inherit:j,bindFn:k,prefixed:v}),typeof define==kb&&define.amd?define(function(){return eb}):"undefined"!=typeof module&&module.exports?module.exports=eb:a[c]=eb}(window,document,"Hammer");
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/javascript/src/jquery.min.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/javascript/src/jquery.min.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/javascript/src/jquery.min.js	(revision 21239)
@@ -0,0 +1,4 @@
+/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;
+if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},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(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")
+},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.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(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,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":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.ActiveXObject&&m(a).on("unload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/javascript/src/jsonfn.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/javascript/src/jsonfn.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/javascript/src/jsonfn.js	(revision 21239)
@@ -0,0 +1,84 @@
+/**
+* JSONfn - javascript (both node.js and browser) plugin to stringify, 
+*          parse and clone objects with Functions, Regexp and Date.
+*  
+* Version - 0.60.00
+* Copyright (c) 2012 - 2015 Vadim Kiryukhin
+* vkiryukhin @ gmail.com
+* http://www.eslinstructor.net/jsonfn/
+* 
+* Licensed under the MIT license ( http://www.opensource.org/licenses/mit-license.php )
+*
+*   USAGE:
+*     browser:
+*         JSONfn.stringify(obj);
+*         JSONfn.parse(str[, date2obj]);
+*         JSONfn.clone(obj[, date2obj]);
+*
+*     nodejs:
+*       var JSONfn = require('path/to/json-fn');
+*       JSONfn.stringify(obj);
+*       JSONfn.parse(str[, date2obj]);
+*       JSONfn.clone(obj[, date2obj]);
+*
+*
+*     @obj      -  Object;
+*     @str      -  String, which is returned by JSONfn.stringify() function; 
+*     @date2obj - Boolean (optional); if true, date string in ISO8061 format
+*                 is converted into a Date object; otherwise, it is left as a String.
+*/
+
+"use strict";
+
+(function (exports) {
+
+  exports.stringify = function (obj) {
+
+    return JSON.stringify(obj, function (key, value) {
+      if (value instanceof Function || typeof value == 'function') {
+        return value.toString();
+      }
+      if (value instanceof RegExp) {
+        return '_PxEgEr_' + value;
+      }
+      return value;
+    });
+  };
+
+  exports.parse = function (str, date2obj) {
+
+    var iso8061 = date2obj ? /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/ : false;
+
+    return JSON.parse(str, function (key, value) {
+      var prefix;
+
+      if (typeof value != 'string') {
+        return value;
+      }
+      if (value.length < 8) {
+        return value;
+      }
+
+      prefix = value.substring(0, 8);
+
+      if (iso8061 && value.match(iso8061)) {
+        return new Date(value);
+      }
+      if (prefix === 'function') {
+        return eval('(' + value + ')');
+      }
+      if (prefix === '_PxEgEr_') {
+        return eval(value.slice(8));
+      }
+
+      return value;
+    });
+  };
+
+  exports.clone = function (obj, date2obj) {
+    return exports.parse(exports.stringify(obj), date2obj);
+  };
+
+}(typeof exports === 'undefined' ? (window.JSONfn = {}) : exports));
+
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/javascript/src/sprintf.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/javascript/src/sprintf.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/javascript/src/sprintf.js	(revision 21239)
@@ -0,0 +1,190 @@
+function sprintf() {
+  //  discuss at: http://phpjs.org/functions/sprintf/
+  // original by: Ash Searle (http://hexmen.com/blog/)
+  // improved by: Michael White (http://getsprink.com)
+  // improved by: Jack
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Dj
+  // improved by: Allidylls
+  //    input by: Paulo Freitas
+  //    input by: Brett Zamir (http://brett-zamir.me)
+  //   example 1: sprintf("%01.2f", 123.1);
+  //   returns 1: 123.10
+  //   example 2: sprintf("[%10s]", 'monkey');
+  //   returns 2: '[    monkey]'
+  //   example 3: sprintf("[%'#10s]", 'monkey');
+  //   returns 3: '[####monkey]'
+  //   example 4: sprintf("%d", 123456789012345);
+  //   returns 4: '123456789012345'
+  //   example 5: sprintf('%-03s', 'E');
+  //   returns 5: 'E00'
+
+  var regex = /%%|%(\d+\$)?([\-+\'#0 ]*)(\*\d+\$|\*|\d+)?(?:\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g;
+  var a = arguments;
+  var i = 0;
+  var format = a[i++];
+
+  // pad()
+  var pad = function(str, len, chr, leftJustify) {
+    if (!chr) {
+      chr = ' ';
+    }
+    var padding = (str.length >= len) ? '' : new Array(1 + len - str.length >>> 0)
+      .join(chr);
+    return leftJustify ? str + padding : padding + str;
+  };
+
+  // justify()
+  var justify = function(value, prefix, leftJustify, minWidth, zeroPad, customPadChar) {
+    var diff = minWidth - value.length;
+    if (diff > 0) {
+      if (leftJustify || !zeroPad) {
+        value = pad(value, minWidth, customPadChar, leftJustify);
+      } else {
+        value = value.slice(0, prefix.length) + pad('', diff, '0', true) + value.slice(prefix.length);
+      }
+    }
+    return value;
+  };
+
+  // formatBaseX()
+  var formatBaseX = function(value, base, prefix, leftJustify, minWidth, precision, zeroPad) {
+    // Note: casts negative numbers to positive ones
+    var number = value >>> 0;
+    prefix = (prefix && number && {
+      '2'  : '0b',
+      '8'  : '0',
+      '16' : '0x'
+    }[base]) || '';
+    value = prefix + pad(number.toString(base), precision || 0, '0', false);
+    return justify(value, prefix, leftJustify, minWidth, zeroPad);
+  };
+
+  // formatString()
+  var formatString = function(value, leftJustify, minWidth, precision, zeroPad, customPadChar) {
+    if (precision !== null && precision !== undefined) {
+      value = value.slice(0, precision);
+    }
+    return justify(value, '', leftJustify, minWidth, zeroPad, customPadChar);
+  };
+
+  // doFormat()
+  var doFormat = function(substring, valueIndex, flags, minWidth, precision, type) {
+    var number, prefix, method, textTransform, value;
+
+    if (substring === '%%') {
+      return '%';
+    }
+
+    // parse flags
+    var leftJustify = false;
+    var positivePrefix = '';
+    var zeroPad = false;
+    var prefixBaseX = false;
+    var customPadChar = ' ';
+    var flagsl = flags.length;
+    var j;
+    for (j = 0; flags && j < flagsl; j++) {
+      switch (flags.charAt(j)) {
+      case ' ':
+        positivePrefix = ' ';
+        break;
+      case '+':
+        positivePrefix = '+';
+        break;
+      case '-':
+        leftJustify = true;
+        break;
+      case "'":
+        customPadChar = flags.charAt(j + 1);
+        break;
+      case '0':
+        zeroPad = true;
+        customPadChar = '0';
+        break;
+      case '#':
+        prefixBaseX = true;
+        break;
+      }
+    }
+
+    // parameters may be null, undefined, empty-string or real valued
+    // we want to ignore null, undefined and empty-string values
+    if (!minWidth) {
+      minWidth = 0;
+    } else if (minWidth === '*') {
+      minWidth = +a[i++];
+    } else if (minWidth.charAt(0) === '*') {
+      minWidth = +a[minWidth.slice(1, -1)];
+    } else {
+      minWidth = +minWidth;
+    }
+
+    // Note: undocumented perl feature:
+    if (minWidth < 0) {
+      minWidth = -minWidth;
+      leftJustify = true;
+    }
+
+    if (!isFinite(minWidth)) {
+      throw new Error('sprintf: (minimum-)width must be finite');
+    }
+
+    if (!precision) {
+      precision = 'fFeE'.indexOf(type) > -1 ? 6 : (type === 'd') ? 0 : undefined;
+    } else if (precision === '*') {
+      precision = +a[i++];
+    } else if (precision.charAt(0) === '*') {
+      precision = +a[precision.slice(1, -1)];
+    } else {
+      precision = +precision;
+    }
+
+    // grab value using valueIndex if required?
+    value = valueIndex ? a[valueIndex.slice(0, -1)] : a[i++];
+
+    switch (type) {
+    case 's':
+      return formatString(String(value), leftJustify, minWidth, precision, zeroPad, customPadChar);
+    case 'c':
+      return formatString(String.fromCharCode(+value), leftJustify, minWidth, precision, zeroPad);
+    case 'b':
+      return formatBaseX(value, 2, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'o':
+      return formatBaseX(value, 8, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'x':
+      return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'X':
+      return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad)
+        .toUpperCase();
+    case 'u':
+      return formatBaseX(value, 10, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'i':
+    case 'd':
+      number = +value || 0;
+      // Plain Math.round doesn't just truncate
+      number = Math.round(number - number % 1);
+      prefix = number < 0 ? '-' : positivePrefix;
+      value = prefix + pad(String(Math.abs(number)), precision, '0', false);
+      return justify(value, prefix, leftJustify, minWidth, zeroPad);
+    case 'e':
+    case 'E':
+    case 'f': // Should handle locales (as per setlocale)
+    case 'F':
+    case 'g':
+    case 'G':
+      number = +value;
+      prefix = number < 0 ? '-' : positivePrefix;
+      method = ['toExponential', 'toFixed', 'toPrecision']['efg'.indexOf(type.toLowerCase())];
+      textTransform = ['toString', 'toUpperCase']['eEfFgG'.indexOf(type) % 2];
+      value = prefix + Math.abs(number)[method](precision);
+      return justify(value, prefix, leftJustify, minWidth, zeroPad)[textTransform]();
+    default:
+      return substring;
+    }
+  };
+
+  return format.replace(regex, doFormat);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/kml/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/kml/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/kml/install.sh	(revision 21239)
@@ -0,0 +1,5 @@
+#!/bin/bash
+set -eu
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/kml_shapefile.zip' 'kml_shapefile.zip'
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/lapack/configs/linux64/make.inc
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/lapack/configs/linux64/make.inc	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/lapack/configs/linux64/make.inc	(revision 21239)
@@ -0,0 +1,71 @@
+####################################################################
+#  LAPACK make include file.                                       #
+#  LAPACK, Version 3.4.0                                           #
+#  April 2012                                                   #
+####################################################################
+#
+SHELL = /bin/sh
+#  
+#  Modify the FORTRAN and OPTS definitions to refer to the
+#  compiler and desired compiler options for your machine.  NOOPT
+#  refers to the compiler options desired when NO OPTIMIZATION is
+#  selected.  Define LOADER and LOADOPTS to refer to the loader and 
+#  desired load options for your machine.
+#
+FORTRAN  = gfortran 
+OPTS     = -fPIC -O2
+DRVOPTS  = $(OPTS)
+NOOPT    = -fPIC -O0
+LOADER   = gfortran
+LOADOPTS =
+#
+# Timer for the SECOND and DSECND routines
+#
+# Default : SECOND and DSECND will use a call to the EXTERNAL FUNCTION ETIME
+#TIMER    = EXT_ETIME
+# For RS6K : SECOND and DSECND will use a call to the EXTERNAL FUNCTION ETIME_
+# TIMER    = EXT_ETIME_
+# For gfortran compiler: SECOND and DSECND will use a call to the INTERNAL FUNCTION ETIME
+TIMER    = INT_ETIME
+# If your Fortran compiler does not provide etime (like Nag Fortran Compiler, etc...)
+# SECOND and DSECND will use a call to the INTERNAL FUNCTION CPU_TIME
+# TIMER    = INT_CPU_TIME
+# If neither of this works...you can use the NONE value... In that case, SECOND and DSECND will always return 0
+# TIMER     = NONE
+#
+#  Configuration LAPACKE: Native C interface to LAPACK
+#  To generate LAPACKE library: type 'make lapackelib'
+#  Configuration file: turned off (default)
+#  Complex types: C99 (default)
+#  Name pattern: mixed case (default)
+#  (64-bit) Data model: LP64 (default)
+#
+# CC is the C compiler, normally invoked with options CFLAGS.
+#
+CC = gcc
+CFLAGS = -O3
+#
+#  The archiver and the flag(s) to use when building archive (library)
+#  If you system has no ranlib, set RANLIB = echo.
+#
+ARCH     = ar
+ARCHFLAGS= cr
+RANLIB   = ranlib
+#
+#  Location of the extended-precision BLAS (XBLAS) Fortran library
+#  used for building and testing extended-precision routines.  The
+#  relevant routines will be compiled and XBLAS will be linked only if
+#  USEXBLAS is defined.
+#
+# USEXBLAS    = Yes
+XBLASLIB     =
+# XBLASLIB    = -lxblas
+#
+#  The location of the libraries to which you will link.  (The 
+#  machine-specific, optimized BLAS library should be used whenever
+#  possible.)
+#
+BLASLIB      = ../../librefblas.a
+LAPACKLIB    = liblapack.a
+TMGLIB       = libtmglib.a
+LAPACKELIB   = liblapacke.a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/lapack/configs/macosx64/make.inc
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/lapack/configs/macosx64/make.inc	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/lapack/configs/macosx64/make.inc	(revision 21239)
@@ -0,0 +1,71 @@
+####################################################################
+#  LAPACK make include file.                                       #
+#  LAPACK, Version 3.4.0                                           #
+#  April 2012                                                   #
+####################################################################
+#
+SHELL = /bin/sh
+#  
+#  Modify the FORTRAN and OPTS definitions to refer to the
+#  compiler and desired compiler options for your machine.  NOOPT
+#  refers to the compiler options desired when NO OPTIMIZATION is
+#  selected.  Define LOADER and LOADOPTS to refer to the loader and 
+#  desired load options for your machine.
+#
+FORTRAN  = gfortran 
+OPTS     = -fPIC -O2
+DRVOPTS  = $(OPTS)
+NOOPT    = -fPIC -O0
+LOADER   = gfortran
+LOADOPTS =
+#
+# Timer for the SECOND and DSECND routines
+#
+# Default : SECOND and DSECND will use a call to the EXTERNAL FUNCTION ETIME
+#TIMER    = EXT_ETIME
+# For RS6K : SECOND and DSECND will use a call to the EXTERNAL FUNCTION ETIME_
+# TIMER    = EXT_ETIME_
+# For gfortran compiler: SECOND and DSECND will use a call to the INTERNAL FUNCTION ETIME
+TIMER    = INT_ETIME
+# If your Fortran compiler does not provide etime (like Nag Fortran Compiler, etc...)
+# SECOND and DSECND will use a call to the INTERNAL FUNCTION CPU_TIME
+# TIMER    = INT_CPU_TIME
+# If neither of this works...you can use the NONE value... In that case, SECOND and DSECND will always return 0
+# TIMER     = NONE
+#
+#  Configuration LAPACKE: Native C interface to LAPACK
+#  To generate LAPACKE library: type 'make lapackelib'
+#  Configuration file: turned off (default)
+#  Complex types: C99 (default)
+#  Name pattern: mixed case (default)
+#  (64-bit) Data model: LP64 (default)
+#
+# CC is the C compiler, normally invoked with options CFLAGS.
+#
+CC = gcc
+CFLAGS = -O3
+#
+#  The archiver and the flag(s) to use when building archive (library)
+#  If you system has no ranlib, set RANLIB = echo.
+#
+ARCH     = ar
+ARCHFLAGS= cr
+RANLIB   = ranlib
+#
+#  Location of the extended-precision BLAS (XBLAS) Fortran library
+#  used for building and testing extended-precision routines.  The
+#  relevant routines will be compiled and XBLAS will be linked only if
+#  USEXBLAS is defined.
+#
+# USEXBLAS    = Yes
+XBLASLIB     =
+# XBLASLIB    = -lxblas
+#
+#  The location of the libraries to which you will link.  (The 
+#  machine-specific, optimized BLAS library should be used whenever
+#  possible.)
+#
+BLASLIB      = ../../librefblas.a
+LAPACKLIB    = liblapack.a
+TMGLIB       = libtmglib.a
+LAPACKELIB   = liblapacke.a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/lapack/install-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/lapack/install-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/lapack/install-linux64.sh	(revision 21239)
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install lapack-3.4.1 lapack-3.4.1.tgz
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/lapack-3.4.1.tgz' 'lapack-3.4.1.tgz'
+
+#Untar 
+tar -zxvf  lapack-3.4.1.tgz
+
+#Move lapack into install directory
+mv lapack-3.4.1/* src
+rm -rf lapack-3.4.1
+
+#install
+cd src 
+cp ../configs/linux64/make.inc ./
+
+#Compile and install lapack
+if [ $# -eq 0 ]; then
+	make lib
+else
+	make -j $1 lib
+fi
+
+#Compile 
+cd ../install
+mkdir lib
+cd lib
+cp ../../src/liblapack.a .
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/lapack/install-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/lapack/install-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/lapack/install-macosx64.sh	(revision 21239)
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install lapack-3.4.1 lapack-3.4.1.tgz
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/lapack-3.4.1.tgz' 'lapack-3.4.1.tgz'
+
+#Untar 
+tar -zxvf  lapack-3.4.1.tgz
+
+#Move lapack into install directory
+mv lapack-3.4.1/* src
+rm -rf lapack-3.4.1
+
+#install
+cd src 
+cp ../configs/macosx64/make.inc ./
+
+#Compile and install lapack
+if [ $# -eq 0 ]; then
+	make lib
+else
+	make -j $1 lib
+fi
+
+#Compile 
+cd ../install
+mkdir lib
+cd lib
+cp ../../src/liblapack.a .
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/latex2rtf/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/latex2rtf/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/latex2rtf/install.sh	(revision 21239)
@@ -0,0 +1,17 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf latex2rtf-2.0.0 cfg install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/latex2rtf-2.0.0.tar.gz' 'latex2rtf-2.0.0.tar.gz'
+
+#untar 
+tar -zxvf  latex2rtf-2.0.0.tar.gz
+mv latex2rtf-2.0.0 install
+
+#Compile
+cd install
+export PREFIX="$ISSM_DIR/externalpackages/latex2rtf/install/"
+make
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/libermate/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/libermate/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/libermate/install.sh	(revision 21239)
@@ -0,0 +1,17 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+rm -rf libermate-0.4
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/libermate-0.4.tgz' 'libermate-0.4.tgz'
+
+#Untar 
+tar -zxvf  libermate-0.4.tgz
+
+#Move libermate into install directory
+mv libermate-0.4/* install
+rm -rf libermate-0.4
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/libpng/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/libpng/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/libpng/install.sh	(revision 21239)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf libpng-1.5.10
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/libpng-1.5.10.tar.gz' 'libpng-1.5.10.tar.gz'
+
+#Untar 
+tar -zxvf  libpng-1.5.10.tar.gz
+
+#Move libpng into src directory
+mv libpng-1.5.10/* src
+rm -rf libpng-1.5.10
+
+#Configure libpng
+cd src
+sudo ./configure 
+
+#Compile and install libpng
+if [ $# -eq 0 ]; then
+	sudo make
+else
+	sudo make -j $1
+fi
+sudo make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/m1qn3/install-macosx64-snowleopard.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/m1qn3/install-macosx64-snowleopard.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/m1qn3/install-macosx64-snowleopard.sh	(revision 21239)
@@ -0,0 +1,55 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install src m1qn3-3.3-distrib
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/m1qn3-3.3-distrib.tgz' 'm1qn3-3.3-distrib.tgz'
+
+#Untar 
+tar -xzf m1qn3-3.3-distrib.tgz
+mv m1qn3-3.3-distrib src
+
+FC="gfortran"
+
+#Compile m1qn3
+cd src/src/
+(
+cat << EOF
+LIB_EXT=a
+FC=$FC
+install: libm1qn3.\$(LIB_EXT)
+	cp libm1qn3.\$(LIB_EXT) ../../install/
+OBJECTS= m1qn3.o
+libm1qn3.\$(LIB_EXT): \$(OBJECTS)
+	ar -r libm1qn3.\$(LIB_EXT) \$(OBJECTS) 
+	ranlib libm1qn3.\$(LIB_EXT) 
+%.o: %.f
+	\$(FC) \$(FFLAGS) -fPIC -c $< -o \$@
+clean: 
+	rm -rf *.o *.\$(LIB_EXT)
+EOF
+) > Makefile
+make
+
+#compile ddot
+cd ../blas
+(
+cat << EOF
+LIB_EXT=a
+FC=$FC
+install: libddot.\$(LIB_EXT)
+	cp libddot.\$(LIB_EXT) ../../install/
+OBJECTS= ddot.o
+libddot.\$(LIB_EXT): \$(OBJECTS)
+	ar -r libddot.\$(LIB_EXT) \$(OBJECTS) 
+	ranlib libddot.\$(LIB_EXT) 
+%.o: %.f
+	\$(FC) \$(FFLAGS) -fPIC -c $< -o \$@
+clean: 
+	rm -rf *.o *.\$(LIB_EXT)
+EOF
+) > Makefile
+make
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/m1qn3/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/m1qn3/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/m1qn3/install.sh	(revision 21239)
@@ -0,0 +1,62 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install src m1qn3-3.3-distrib
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/m1qn3-3.3-distrib.tgz' 'm1qn3-3.3-distrib.tgz'
+
+#Untar 
+tar -xzf m1qn3-3.3-distrib.tgz
+mv m1qn3-3.3-distrib src
+
+if which ifort >/dev/null; then
+	FC="ifort"
+else
+	FC="gfortran"
+	if [ `uname` == "Darwin" ]; then
+		FC="gfortran -arch x86_64"
+	fi
+fi
+
+#Compile m1qn3
+cd src/src/
+(
+cat << EOF
+LIB_EXT=a
+FC=$FC
+install: libm1qn3.\$(LIB_EXT)
+	cp libm1qn3.\$(LIB_EXT) ../../install/
+OBJECTS= m1qn3.o
+libm1qn3.\$(LIB_EXT): \$(OBJECTS)
+	ar -r libm1qn3.\$(LIB_EXT) \$(OBJECTS) 
+	ranlib libm1qn3.\$(LIB_EXT) 
+%.o: %.f
+	\$(FC) \$(FFLAGS) -fPIC -c $< -o \$@
+clean: 
+	rm -rf *.o *.\$(LIB_EXT)
+EOF
+) > Makefile
+make
+
+#compile ddot
+cd ../blas
+(
+cat << EOF
+LIB_EXT=a
+FC=$FC
+install: libddot.\$(LIB_EXT)
+	cp libddot.\$(LIB_EXT) ../../install/
+OBJECTS= ddot.o
+libddot.\$(LIB_EXT): \$(OBJECTS)
+	ar -r libddot.\$(LIB_EXT) \$(OBJECTS) 
+	ranlib libddot.\$(LIB_EXT) 
+%.o: %.f
+	\$(FC) \$(FFLAGS) -fPIC -c $< -o \$@
+clean: 
+	rm -rf *.o *.\$(LIB_EXT)
+EOF
+) > Makefile
+make
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/m2html/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/m2html/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/m2html/install.sh	(revision 21239)
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install m2html
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/m2html.zip' 'm2html.zip'
+
+#uncompress
+unzip m2html.zip
+
+#move to install directory
+mv m2html/* install
+rm -rf m2html
+
+#patch m2html
+cd install
+patch m2html.m ../m2html.m.patch
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/m2html/m2html.m.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/m2html/m2html.m.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/m2html/m2html.m.patch	(revision 21239)
@@ -0,0 +1,114 @@
+*** m2html.m	2011-08-12 10:57:45.000000000 -0700
+--- install/m2html.m	2011-08-12 10:58:26.000000000 -0700
+***************
+*** 306,311 ****
+--- 306,325 ----
+  	end
+  
+  	mdir = unique(mdirs);
++ 
++ 	%add root directories
++ 	for i=1:length(mdir)
++ 		path=strsplit(mdir{i},'/');
++ 		string=path{1};
++ 		mdir{end+1}=string;
++ 		for j=2:length(path),
++ 			string=[string '/' path{j}];
++ 			mdir{end+1}=string;
++ 		end
++ 	end
++ 
++ 	mdir=unique(mdir);
++ 
+  	if options.verbose,
+  		fprintf('Found %d unique Matlab directories.\n',length(mdir));
+  	end
+***************
+*** 423,429 ****
+  %- Set some template variables
+  tpl = set(tpl,'var','DATE',[datestr(now,8) ' ' datestr(now,1) ' ' ...
+  							datestr(now,13)]);
+! tpl = set(tpl,'var','MASTERPATH',       './');
+  tpl = set(tpl,'var','DIRS',    sprintf('%s ',mdir{:}));
+  
+  %- Print list of unique directories
+--- 437,443 ----
+  %- Set some template variables
+  tpl = set(tpl,'var','DATE',[datestr(now,8) ' ' datestr(now,1) ' ' ...
+  							datestr(now,13)]);
+! tpl = set(tpl,'var','MASTERPATH',       '');
+  tpl = set(tpl,'var','DIRS',    sprintf('%s ',mdir{:}));
+  
+  %- Print list of unique directories
+***************
+*** 555,561 ****
+  	tpl = set(tpl,'var','subfold','');
+  	d = dir(mdir{i});
+  	d = {d([d.isdir]).name};
+! 	d = {d{~ismember(d,{'.' '..'})}};
+  	for j=1:length(d)
+  		if ismember(fullfile(mdir{i},d{j}),mdir)
+  			tpl = set(tpl,'var','SUBDIRECTORY',...
+--- 569,575 ----
+  	tpl = set(tpl,'var','subfold','');
+  	d = dir(mdir{i});
+  	d = {d([d.isdir]).name};
+! 	d = {d{~ismember(d,{'.' '..' 'CVS' '.svn'})}};
+  	for j=1:length(d)
+  		if ismember(fullfile(mdir{i},d{j}),mdir)
+  			tpl = set(tpl,'var','SUBDIRECTORY',...
+***************
+*** 687,695 ****
+  % Path should look like:  ...;C:\WINNT\System32;...;C:\GraphViz\bin
+  % (Note that this should have been done automatically during GraphViz installation)
+  
+! 			eval(['!' dot_exec ' -Tcmap -Tpng ' mdotfile ...
+  				' -o ' fullfile(options.htmlDir,mdir{i},[dotbase '.map']) ... 
+! 				' -o ' fullfile(options.htmlDir,mdir{i},[dotbase '.png'])])
+  			% use '!' rather than 'system' for backward compability
+  		catch
+  			fprintf('failed.');
+--- 701,709 ----
+  % Path should look like:  ...;C:\WINNT\System32;...;C:\GraphViz\bin
+  % (Note that this should have been done automatically during GraphViz installation)
+  
+! 			eval(['!' dot_exec ' -Tcmap -Tgif ' mdotfile ...
+  				' -o ' fullfile(options.htmlDir,mdir{i},[dotbase '.map']) ... 
+! 				' -o ' fullfile(options.htmlDir,mdir{i},[dotbase '.gif'])])
+  			% use '!' rather than 'system' for backward compability
+  		catch
+  			fprintf('failed.');
+***************
+*** 700,706 ****
+  		tpl = set(tpl,'var','INDEX',[options.indexFile options.extension]);
+  		tpl = set(tpl,'var','MASTERPATH', backtomaster(mdir{i}));
+  		tpl = set(tpl,'var','MDIR',       mdir{i});
+! 		tpl = set(tpl,'var','GRAPH_IMG',  [dotbase '.png']);
+  		fmap = openfile(fullfile(options.htmlDir,mdir{i},[dotbase '.map']),'r');
+  		tpl = set(tpl,'var','GRAPH_MAP',  fscanf(fmap,'%c'));
+  		fclose(fmap);
+--- 714,720 ----
+  		tpl = set(tpl,'var','INDEX',[options.indexFile options.extension]);
+  		tpl = set(tpl,'var','MASTERPATH', backtomaster(mdir{i}));
+  		tpl = set(tpl,'var','MDIR',       mdir{i});
+! 		tpl = set(tpl,'var','GRAPH_IMG',  [dotbase '.gif']);
+  		fmap = openfile(fullfile(options.htmlDir,mdir{i},[dotbase '.map']),'r');
+  		tpl = set(tpl,'var','GRAPH_MAP',  fscanf(fmap,'%c'));
+  		fclose(fmap);
+***************
+*** 1032,1038 ****
+  			if recursive
+  				d = dir(mdirs{i});
+  				d = {d([d.isdir]).name};
+! 				d = {d{~ismember(d,{'.' '..'})}};
+  				for j=1:length(d)
+  					mfiles = getmfiles(cellstr(fullfile(mdirs{i},d{j})),...
+  									   mfiles,recursive);
+--- 1046,1052 ----
+  			if recursive
+  				d = dir(mdirs{i});
+  				d = {d([d.isdir]).name};
+! 				d = {d{~ismember(d,{'.' '..' 'CVS' '.svn'})}};
+  				for j=1:length(d)
+  					mfiles = getmfiles(cellstr(fullfile(mdirs{i},d{j})),...
+  									   mfiles,recursive);
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/math77/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/math77/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/math77/install.sh	(revision 21239)
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install math77
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/math77.tar.gz' 'math77.tar.gz'
+
+#Untar 
+tar -zxvf  math77.tar.gz
+
+#Move math77 into src directory
+mv math77/* src
+rm -rf math77
+
+#Configure math77
+cd src
+
+#Compile math77
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/matplotlib/install-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/matplotlib/install-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/matplotlib/install-linux64.sh	(revision 21239)
@@ -0,0 +1,14 @@
+#/bin/bash
+set -eu
+export GIT_SSL_NO_VERIFY=true 
+export CC="gcc -fPIC "
+export CXX="g++ -fPIC -L$ISSM_DIR/externalpackages/tcl/install/lib"
+export F77="gfortran -fPIC"
+export FC="gfortran -fPIC"
+export FFLAGS=-ff2c
+
+git clone https://github.com/matplotlib/matplotlib
+mv matplotlib src
+cd src
+python setup.py build 
+python setup.py install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/matplotlib/install-macosx64-snowleopard.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/matplotlib/install-macosx64-snowleopard.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/matplotlib/install-macosx64-snowleopard.sh	(revision 21239)
@@ -0,0 +1,32 @@
+#/bin/bash
+set -eu
+
+rm -rf src deps 
+
+#export C_INCLUDE_PATH="$C_INCLUDE_PATH:/usr/include/c++/4.2.1"
+export GIT_SSL_NO_VERIFY=true 
+export CC="gcc -fPIC -std=c99 -I/usr/local/gfortran/include/c++/4.6.2 -I/usr/local/gfortran/include/c++/4.6.2/x86_64-apple-darwin11/"
+export CXX="g++ -fPIC -std=c99 -I/usr/local/gfortran/include/c++/4.6.2 -I/usr/local/gfortran/include/c++/4.6.2/x86_64-apple-darwin11/"
+export F77="gfortran -fPIC -I/usr/local/gfortran/include/c++/4.6.2 -I/usr/local/gfortran/include/c++/4.6.2/x86_64-apple-darwin11/"
+export FC="gfortran -fPIC -I/usr/local/gfortran/include/c++/4.6.2 -I/usr/local/gfortran/include/c++/4.6.2/x86_64-apple-darwin11/"
+export FFLAGS="-ff2c -I/usr/local/gfortran/include/c++/4.6.2 -I/usr/local/gfortran/include/c++/4.6.2/x86_64-apple-darwin11/"
+export ARCHFLAGS="-I/usr/local/gfortran/include/c++/4.6.2 -I/usr/local/gfortran/include/c++/4.6.2/x86_64-apple-darwin11/"
+
+git clone https://github.com/matplotlib/matplotlib
+mv matplotlib src
+mkdir deps
+cd src
+
+#only try this if the classic python setup.py build approach does not work. The approach in the next 3 lines can 
+#trigger issues of permissions with freetype. Sometimes it is better to independently install freetype2 (from the 
+#issm externalpackages) as sudo (or root), so that the python script can detect its existence automatically.
+#sudo make -f make.osx PREFIX=$ISSM_DIR/externalpackages/matplotlib/deps PYVERSION=$pythonversion fetch deps mpl_install_std
+#sudo make -f make.osx PREFIX=$ISSM_DIR/externalpackages/matplotlib/deps PYVERSION=$pythonversion mpl_install_std
+#python -c "import matplotlib; print 'Installed matplotlib', matplotlib.__version__, matplotlib.__file__"
+
+#comments: try exporting this first before calling python setup.py build
+CFLAGS=-mmacosx-version-min=10.6
+
+#to be tried:  first get freetype and zlib and libpng installed in sudo mode
+python setup.py build
+python setup.py install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/matplotlib/install-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/matplotlib/install-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/matplotlib/install-macosx64.sh	(revision 21239)
@@ -0,0 +1,32 @@
+#/bin/bash
+set -eu
+
+rm -rf src deps 
+
+export C_INCLUDE_PATH="$C_INCLUDE_PATH:/usr/include/c++/4.2.1"
+export GIT_SSL_NO_VERIFY=true 
+export CC="gcc -fPIC -arch x86_64 -I/usr/include/c++/4.2.1"
+export CXX="g++ -fPIC -arch x86_64 -I/usr/include/c++/4.2.1"
+export F77="gfortran -fPIC -arch x86_64 -I/usr/include/c++/4.2.1"
+export FC="gfortran -fPIC -arch x86_64 -I/usr/include/c++/4.2.1"
+export FFLAGS="-ff2c -arch x86_64 -I/usr/include/c++/4.2.1"
+export ARCHFLAGS="-arch x86_64 -I/usr/include/c++/4.2.1"
+
+git clone https://github.com/matplotlib/matplotlib
+mv matplotlib src
+mkdir deps
+cd src
+
+#only try this if the classic python setup.py build approach does not work. The approach in the next 3 lines can 
+#trigger issues of permissions with freetype. Sometimes it is better to independently install freetype2 (from the 
+#issm externalpackages) as sudo (or root), so that the python script can detect its existence automatically.
+#sudo make -f make.osx PREFIX=$ISSM_DIR/externalpackages/matplotlib/deps PYVERSION=$pythonversion fetch deps mpl_install_std
+#sudo make -f make.osx PREFIX=$ISSM_DIR/externalpackages/matplotlib/deps PYVERSION=$pythonversion mpl_install_std
+#python -c "import matplotlib; print 'Installed matplotlib', matplotlib.__version__, matplotlib.__file__"
+
+#comments: try exporting this first before calling python setup.py build
+CFLAGS=-mmacosx-version-min=10.7 
+
+#to be tried:  first get freetype and zlib and libpng installed in sudo mode
+python setup.py build
+python setup.py install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mercurial/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mercurial/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mercurial/install.sh	(revision 21239)
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install mercurial-1.7.3
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mercurial-1.7.3.tar.gz' 'mercurial-1.7.3.tar.gz'
+
+#Untar 
+tar -zxvf  mercurial-1.7.3.tar.gz
+
+#Move mercurial into install directory
+mv mercurial-1.7.3/* install
+rm -rf mercurial-1.7.3
+
+#Apply patches
+cd install 
+#patch Lib/Makefile ../lib_Makefile.patch
+
+#Compile mercurial
+make local
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/meteoio/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/meteoio/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/meteoio/install.sh	(revision 21239)
@@ -0,0 +1,39 @@
+#!/bin/bash
+#METEOIO install package:  this package is not distributed by ISSM. Please request access to the code by 
+#contacting Mathias Bavay () or logging onto http://models.slf.ch/ and registering.  Once you have a tarball 
+#of the code, please use this script to install.
+
+#we assume you have a MeteoIO-*-tar.gz  tarball
+set -eu
+
+#Do some inquiry about the names of the tar balls: 
+source_tar=`ls MeteoIO-*.tar.gz`
+source_version=`echo $source_tar | sed 's/MeteoIO-//g' | sed 's/.tar.gz//g'`
+
+if [[ $source_tar == "" ]]; then 
+	echo "Could not identify a tar ball for the source code, name should be MeteoIO-*-tar.gz"
+	exit 1
+fi
+if [[ $source_version == "" ]]; then 
+	echo "Could not identify a tar ball version for the source code"
+	exit 1
+fi
+
+#Some cleanup
+rm -rf src install MeteoIO-$source_version
+
+#First deal with source code 
+tar -zxvf  $source_tar
+mv MeteoIO-$source_version/usr src
+rm -rf MeteoIO-$source_version
+
+#Reset makefile: 
+cd src && rm -rf CMakeCache.txt 
+cmake -DCMAKE_INSTALL_PREFIX:PATH=$ISSM_DIR/externalpackages/meteoio/install .
+
+#Compile 
+if [ $# -eq 0 ]; then
+	make all install
+else
+	make -j $1 all install
+fi
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/altix64/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/altix64/Makefile.in.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/altix64/Makefile.in.patch	(revision 21239)
@@ -0,0 +1,10 @@
+3c3,5
+< CC = cc
+---
+> CC = gcc
+> OBJ_EXT=o
+> LIB_EXT=a
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -DLINUX -fPIC
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/cosmos/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/cosmos/Makefile.in.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/cosmos/Makefile.in.patch	(revision 21239)
@@ -0,0 +1,10 @@
+3c3,5
+< CC = cc
+---
+> CC = icc
+> OBJ_EXT=o
+> LIB_EXT=a
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -DLINUX -fPIC
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/discover/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/discover/Makefile.in.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/discover/Makefile.in.patch	(revision 21239)
@@ -0,0 +1,10 @@
+3c3,5
+< CC = cc
+---
+> CC = icc
+> OBJ_EXT=o
+> LIB_EXT=a
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -DLINUX -fPIC
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/greenplanet/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/greenplanet/Makefile.in.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/greenplanet/Makefile.in.patch	(revision 21239)
@@ -0,0 +1,10 @@
+3c3,5
+< CC = cc
+---
+> CC = icc
+> OBJ_EXT=o
+> LIB_EXT=a
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -DLINUX -fPIC
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/linux64/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/linux64/Makefile.in.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/linux64/Makefile.in.patch	(revision 21239)
@@ -0,0 +1,10 @@
+3c3,5
+< CC = cc
+---
+> CC = gcc
+> OBJ_EXT=o
+> LIB_EXT=a
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -DLINUX -fPIC
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/macosx32/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/macosx32/Makefile.in.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/macosx32/Makefile.in.patch	(revision 21239)
@@ -0,0 +1,10 @@
+3c3,5
+< CC = cc
+---
+> CC = gcc
+> OBJ_EXT=o
+> LIB_EXT=a
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -O2  -m32
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/macosx64/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/macosx64/Makefile.in.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/macosx64/Makefile.in.patch	(revision 21239)
@@ -0,0 +1,10 @@
+3c3,5
+< CC = cc
+---
+> CC = gcc
+> OBJ_EXT=o
+> LIB_EXT=a
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -O2  -m64
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/pleiades/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/pleiades/Makefile.in.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/pleiades/Makefile.in.patch	(revision 21239)
@@ -0,0 +1,10 @@
+3c3,5
+< CC = cc
+---
+> CC = icc
+> OBJ_EXT=o
+> LIB_EXT=a
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -DLINUX -fPIC
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/win32/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/win32/Makefile.in.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/win32/Makefile.in.patch	(revision 21239)
@@ -0,0 +1,10 @@
+3c3,5
+< CC = cc
+---
+> CC = icl
+> OBJ_EXT=obj
+> LIB_EXT=lib
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -DWIN32 -D__VC__
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/win7/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/win7/Makefile.in.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/win7/Makefile.in.patch	(revision 21239)
@@ -0,0 +1,21 @@
+3c3,5
+< CC = cc
+---
+> CC = cl
+> OBJ_EXT=obj
+> LIB_EXT=lib
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -DWIN32 -D__VC__
+14,20c16,17
+< # What archiving to use
+< AR = ar rv
+< 
+< # What to use for indexing the archive
+< RANLIB = ranlib
+< #RANLIB = ar -ts
+< #RANLIB = 
+---
+> # What tool to use to create library
+> LIB=lib.exe
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/win7/Makefile.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/win7/Makefile.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/configs/4.0/win7/Makefile.patch	(revision 21239)
@@ -0,0 +1,5 @@
+24c24,25
+< 	$(LIB) -out:$@ $(OBJS)
+---
+> 	$(AR) $@ $(OBJS)
+> 	$(RANLIB) $@
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-altix64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-altix64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-altix64.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/altix64/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-cosmos.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-cosmos.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-cosmos.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/cosmos/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-discover.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-discover.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-discover.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/discover/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-greenplanet.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-greenplanet.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-greenplanet.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/greenplanet/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-hoffman2.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-hoffman2.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-hoffman2.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/pleiades/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-linux64.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/linux64/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-macosx32.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-macosx32.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-macosx32.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/macosx32/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-macosx64.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/macosx64/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-pleiades.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-pleiades.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-pleiades.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/pleiades/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-win10.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-win10.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-win10.sh	(revision 21239)
@@ -0,0 +1,25 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch -R Lib/Makefile ../configs/4.0/win7/Makefile.patch
+patch Makefile.in ../configs/4.0/win7/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-win32.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-win32.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-4.0-win32.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/win32/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-5.0.1-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-5.0.1-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/install-5.0.1-linux64.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+#metis 5.0 should be used: srand48 and drand48 are being redefined in conflict to the stdlib equivalent functions.
+
+#Some cleanup
+rm -rf install metis-5.0.1
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/metis-5.0.1.tar.gz' 'metis-5.0.1.tar.gz'
+
+#Untar 
+tar -zxvf  metis-5.0.1.tar.gz
+
+#Move metis into install directory
+mv metis-5.0.1/* install
+rm -rf metis-5.0.1
+
+#Apply patches
+cd install 
+
+#Compile metis
+make config prefix="$ISSM_DIR/externalpackages/metis/install"
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/metis-4.0.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/metis-4.0.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/metis/metis-4.0.patch	(revision 21239)
@@ -0,0 +1,237 @@
+diff -crB install/Lib/kmetis.c install2/Lib/kmetis.c
+*** install/Lib/kmetis.c	1998-11-30 08:26:47.000000000 -0800
+--- install2/Lib/kmetis.c	2011-06-08 15:47:33.911358942 -0700
+***************
+*** 66,72 ****
+      ctrl.dbglvl = options[OPTION_DBGLVL];
+    }
+    ctrl.optype = OP_KMETIS;
+!   ctrl.CoarsenTo = amax((*nvtxs)/(40*log2(*nparts)), 20*(*nparts));
+    ctrl.maxvwgt = 1.5*((graph.vwgt ? idxsum(*nvtxs, graph.vwgt) : (*nvtxs))/ctrl.CoarsenTo);
+  
+    InitRandom(-1);
+--- 66,72 ----
+      ctrl.dbglvl = options[OPTION_DBGLVL];
+    }
+    ctrl.optype = OP_KMETIS;
+!   ctrl.CoarsenTo = amax((*nvtxs)/(40*log2_function(*nparts)), 20*(*nparts));
+    ctrl.maxvwgt = 1.5*((graph.vwgt ? idxsum(*nvtxs, graph.vwgt) : (*nvtxs))/ctrl.CoarsenTo);
+  
+    InitRandom(-1);
+diff -crB install/Lib/kvmetis.c install2/Lib/kvmetis.c
+*** install/Lib/kvmetis.c	1998-11-30 08:26:47.000000000 -0800
+--- install2/Lib/kvmetis.c	2011-06-08 15:47:33.916358976 -0700
+***************
+*** 66,72 ****
+      ctrl.dbglvl = options[OPTION_DBGLVL];
+    }
+    ctrl.optype = OP_KVMETIS;
+!   ctrl.CoarsenTo = amax((*nvtxs)/(40*log2(*nparts)), 20*(*nparts));
+    ctrl.maxvwgt = 1.5*((graph.vwgt ? idxsum(*nvtxs, graph.vwgt) : (*nvtxs))/ctrl.CoarsenTo);
+  
+    InitRandom(-1);
+--- 66,72 ----
+      ctrl.dbglvl = options[OPTION_DBGLVL];
+    }
+    ctrl.optype = OP_KVMETIS;
+!   ctrl.CoarsenTo = amax((*nvtxs)/(40*log2_function(*nparts)), 20*(*nparts));
+    ctrl.maxvwgt = 1.5*((graph.vwgt ? idxsum(*nvtxs, graph.vwgt) : (*nvtxs))/ctrl.CoarsenTo);
+  
+    InitRandom(-1);
+diff -crB install/Lib/Makefile install2/Lib/Makefile
+*** install/Lib/Makefile	1998-09-22 05:08:29.000000000 -0700
+--- install2/Lib/Makefile	2011-06-08 15:19:00.551540482 -0700
+***************
+*** 6,31 ****
+  LD = $(CC) -L. 
+  
+  
+! OBJS = coarsen.o fm.o initpart.o match.o ccgraph.o memory.o \
+!        pmetis.o pqueue.o refine.o util.o timing.o debug.o \
+!        bucketsort.o graph.o stat.o kmetis.o kwayrefine.o \
+!        kwayfm.o balance.o ometis.o srefine.o sfm.o separator.o \
+!        mincover.o mmd.o mesh.o meshpart.o frename.o fortran.o \
+!        myqsort.o compress.o parmetis.o estmem.o \
+!        mpmetis.o mcoarsen.o mmatch.o minitpart.o mbalance.o \
+!        mrefine.o mutil.o mfm.o mkmetis.o mkwayrefine.o mkwayfmh.o \
+!        mrefine2.o minitpart2.o mbalance2.o mfm2.o \
+!        kvmetis.o kwayvolrefine.o kwayvolfm.o subdomains.o
+  
+! .c.o:
+! 	$(CC) $(CFLAGS) -c $*.c
+  
+! ../libmetis.a: $(OBJS)
+  	$(AR) $@ $(OBJS)
+  	$(RANLIB) $@
+  
+  clean:
+! 	rm -f *.o
+  
+  realclean:
+! 	rm -f *.o ; rm -f ../libmetis.a
+--- 6,31 ----
+  LD = $(CC) -L. 
+  
+  
+! OBJS = coarsen.$(OBJ_EXT) fm.$(OBJ_EXT) initpart.$(OBJ_EXT) match.$(OBJ_EXT) ccgraph.$(OBJ_EXT) memory.$(OBJ_EXT) \
+!        pmetis.$(OBJ_EXT) pqueue.$(OBJ_EXT) refine.$(OBJ_EXT) util.$(OBJ_EXT) timing.$(OBJ_EXT) debug.$(OBJ_EXT) \
+!        bucketsort.$(OBJ_EXT) graph.$(OBJ_EXT) stat.$(OBJ_EXT) kmetis.$(OBJ_EXT) kwayrefine.$(OBJ_EXT) \
+!        kwayfm.$(OBJ_EXT) balance.$(OBJ_EXT) ometis.$(OBJ_EXT) srefine.$(OBJ_EXT) sfm.$(OBJ_EXT) separator.$(OBJ_EXT) \
+!        mincover.$(OBJ_EXT) mmd.$(OBJ_EXT) mesh.$(OBJ_EXT) meshpart.$(OBJ_EXT) frename.$(OBJ_EXT) fortran.$(OBJ_EXT) \
+!        myqsort.$(OBJ_EXT) compress.$(OBJ_EXT) parmetis.$(OBJ_EXT) estmem.$(OBJ_EXT) \
+!        mpmetis.$(OBJ_EXT) mcoarsen.$(OBJ_EXT) mmatch.$(OBJ_EXT) minitpart.$(OBJ_EXT) mbalance.$(OBJ_EXT) \
+!        mrefine.$(OBJ_EXT) mutil.$(OBJ_EXT) mfm.$(OBJ_EXT) mkmetis.$(OBJ_EXT) mkwayrefine.$(OBJ_EXT) mkwayfmh.$(OBJ_EXT) \
+!        mrefine2.$(OBJ_EXT) minitpart2.$(OBJ_EXT) mbalance2.$(OBJ_EXT) mfm2.$(OBJ_EXT) \
+!        kvmetis.$(OBJ_EXT) kwayvolrefine.$(OBJ_EXT) kwayvolfm.$(OBJ_EXT) subdomains.$(OBJ_EXT)
+  
+! %.$(OBJ_EXT) : %.c
+! 	$(CC) -c $(CFLAGS) -o $@ $<
+  
+! ../libmetis.$(LIB_EXT): $(OBJS)
+  	$(AR) $@ $(OBJS)
+  	$(RANLIB) $@
+  
+  clean:
+! 	rm -f *.$(OBJ_EXT)
+  
+  realclean:
+! 	rm -f *.$(OBJ_EXT) ; rm -f ../libmetis.$(LIB_EXT)
+diff -crB install/Lib/metis.h install2/Lib/metis.h
+*** install/Lib/metis.h	1998-11-30 08:26:50.000000000 -0800
+--- install2/Lib/metis.h	2011-06-08 15:19:00.544540433 -0700
+***************
+*** 18,24 ****
+--- 18,26 ----
+  #else
+  #include <malloc.h>
+  #endif
++ #ifndef WIN32
+  #include <strings.h>
++ #endif
+  #include <string.h>
+  #include <ctype.h>
+  #include <math.h>
+diff -crB install/Lib/mkmetis.c install2/Lib/mkmetis.c
+*** install/Lib/mkmetis.c	1998-11-30 08:26:48.000000000 -0800
+--- install2/Lib/mkmetis.c	2011-06-08 15:47:33.921359010 -0700
+***************
+*** 47,53 ****
+      ctrl.dbglvl = options[OPTION_DBGLVL];
+    }
+    ctrl.optype = OP_KMETIS;
+!   ctrl.CoarsenTo = amax((*nvtxs)/(20*log2(*nparts)), 30*(*nparts));
+  
+    ctrl.nmaxvwgt = 1.5/(1.0*ctrl.CoarsenTo);
+  
+--- 47,53 ----
+      ctrl.dbglvl = options[OPTION_DBGLVL];
+    }
+    ctrl.optype = OP_KMETIS;
+!   ctrl.CoarsenTo = amax((*nvtxs)/(20*log2_function(*nparts)), 30*(*nparts));
+  
+    ctrl.nmaxvwgt = 1.5/(1.0*ctrl.CoarsenTo);
+  
+diff -crB install/Lib/proto.h install2/Lib/proto.h
+*** install/Lib/proto.h	1998-11-30 08:26:50.000000000 -0800
+--- install2/Lib/proto.h	2011-06-08 15:47:34.009359613 -0700
+***************
+*** 230,237 ****
+--- 230,243 ----
+  void QUADNODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy);
+  
+  /* meshpart.c */
++ #ifdef __cplusplus
++ extern "C" {
++ #endif
+  void METIS_PartMeshNodal(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
+  void METIS_PartMeshDual(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
++ #ifdef __cplusplus
++ }
++ #endif
+  
+  /* mfm.c */
+  void MocFM_2WayEdgeRefine(CtrlType *, GraphType *, float *, int);
+***************
+*** 459,465 ****
+  void srand48(long);
+  int ispow2(int);
+  void InitRandom(int);
+! int log2(int);
+  
+  
+  
+--- 465,471 ----
+  void srand48(long);
+  int ispow2(int);
+  void InitRandom(int);
+! int log2_function(int);
+  
+  
+  
+diff -crB install/Lib/rename.h install2/Lib/rename.h
+*** install/Lib/rename.h	1998-11-30 08:26:50.000000000 -0800
+--- install2/Lib/rename.h	2011-06-08 15:47:34.014359647 -0700
+***************
+*** 410,416 ****
+  #define RandomPermute			__RandomPermute
+  #define ispow2				__ispow2
+  #define InitRandom			__InitRandom
+! #define log2				__log2
+  
+  
+  
+--- 410,417 ----
+  #define RandomPermute			__RandomPermute
+  #define ispow2				__ispow2
+  #define InitRandom			__InitRandom
+! /* Correction bug Nadir SOUALEM*/
+! #define log2_function				__log2_function
+  
+  
+  
+diff -crB install/Lib/util.c install2/Lib/util.c
+*** install/Lib/util.c	1998-11-30 08:26:50.000000000 -0800
+--- install2/Lib/util.c	2011-06-08 15:47:34.018359675 -0700
+***************
+*** 507,515 ****
+  }
+  
+  /*************************************************************************
+! * This function returns the log2(x)
+  **************************************************************************/
+! int log2(int a)
+  {
+    int i;
+  
+--- 507,515 ----
+  }
+  
+  /*************************************************************************
+! * This function returns the log2_function(x)
+  **************************************************************************/
+! int log2_function(int a)
+  {
+    int i;
+  
+diff -crB install/Makefile install2/Makefile
+*** install/Makefile	1998-09-20 11:15:31.000000000 -0700
+--- install2/Makefile	2011-06-08 15:19:00.511540204 -0700
+***************
+*** 2,9 ****
+  
+  default:
+  	(cd Lib ; make ) 
+! 	(cd Programs ; make ) 
+! 	(cd Test ; make ) 
+  
+  clean:
+  	(cd Lib ; make clean )
+--- 2,9 ----
+  
+  default:
+  	(cd Lib ; make ) 
+! #	(cd Programs ; make ) 
+! #	(cd Test ; make ) 
+  
+  clean:
+  	(cd Lib ; make clean )
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mitgcm/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mitgcm/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mitgcm/install.sh	(revision 21239)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+#Do these commands once:
+# cvs -d:pserver:cvsanon@mitgcm.org:/u/gcmpack login
+# ( enter the CVS password: "cvsanon" )
+
+#Some cleanup
+rm -rf install   bin exe
+
+#add cvs repository
+export CVSROOT=':pserver:cvsanon@mitgcm.org:/u/gcmpack'
+
+echo loging into MITgcm cvs: provide password, which is cvsanon
+cvs login
+
+#Download code from server
+cvs login
+cvs co -P MITgcm
+
+#move
+mv MITgcm install
+
+
+#compile code
+cd install
+mkdir bin exe
+cd bin
+../tools/genmake2 -mods=../../code
+make depend
+make -j 8
+
+
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mitgcm/notes
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mitgcm/notes	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mitgcm/notes	(revision 21239)
@@ -0,0 +1,112 @@
+Explanations of the code:  {{{1
+doc:  call Dimitris.
+
+Main code of MITgcm in 3 dir: 
+
+eesupp:  running the code on parallel  clusters. infrastructure for running MPI, shared memory, non-physics part of the code.
+	src: main.F: eeboo  (wrapper initialization)
+			     check_threads
+			     the_model_main
+			     eedie (wrapper termination)
+	inc
+
+
+model:  here is the model main.
+	src: the_model_main.F includes the base MITgcm code.
+	inc:
+
+pkg: do various physics. packages will not be compiled.
+   kpp: vertical mixing  parametization
+   gmred: isopicnel mixing parameterization. 
+  
+   thice: 
+   seaice: sea ice models
+   
+   shelfice: interacting with ice sheets
+   icefront 
+
+   cal: calendar correspondance between model time step and calendar time.
+
+   diagnostics: any physical variable that you want to look at. get output variables into output of the model.
+
+   debug: other kind of diagnostics, various levels of debug.
+
+   frazil: frazil ice.
+
+   atmospherics packages: fizhi, cheapaml
+
+   exch2: fancier way of exchanging data and tiling.
+
+
+jobs: forget about it.
+
+
+lsopt: forget it.
+
+optim: forget it.
+
+
+utils: 
+   matlab: bunch of matlab scripts.
+
+tools: build_options: platform dependent run files to be run with gene_make to generate the correct Makefile. 
+}}}
+How to run : {{{1
+All the verification tests are downloaded if you checkout the MITgcm repository instead of the 
+MITgcm_code: 
+cvs co -P MITgcm
+
+The verification tests are downloaded in MITgcm/verification. They can be run using 
+the testreport utility. Only a subset of the tests can be run if needed, by supplying 
+an option flag to tesstreport. 
+
+
+For our work, the relevant tests are: 
+labsea: sea ice
+ismip: shelf ice
+
+If you run a test like lab_sea: 
+
+./code/packages.conf: list of packages that we want to compile for this specific run.
+For each package, you at least need to modify code/size.h
+
+You can find the runtime parameters in: 
+input/data: runtime parameters  for model source
+input/eedata:runtime parameters  for eesupp source
+input/data.: runtime parameters for all packages
+intput/data.pkg: runtime parameters for packages that need to be run. subset of packages.conf
+
+The build directory holds the source and objects for the current test, with symlinks 
+
+If errors appear during the run, go into: 
+./run and find the STDERR file.
+
+To supply different Makefile templates for testreport:
+testreport -ef -opt Makefile_amd64_gfortran
+
+You can use matlab to plot the results: 
+use readbin from the labsea experiment or MITgcm/tools/matlab/rdmds
+
+There is an MITgcm_contrib repository for code that is not in the main trunk yet: 
+MITgcm_contrib/MPMice/beaufort presents a scenario for a quick coupler.
+
+}}}
+Extra nodes{{{
+cd install/verification/ 
+./testreport -of ../tools/build_options/linux_amd64_gfortran
+
+( results for baseline lab_sea verification
+  experiment are in verification/lab_sea/run )
+
+cd lab_sea/run
+there is routines in lab_sea/matlab
+
+ma
+addpath('../matlab')
+eta=readbin('Eta.0000000001.data',[20 16],1);
+pcolor(eta')
+colorbar
+
+addpath('../../../utils/matlab')
+eta=rdmds('Eta.0000000001');
+}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mitgcm/readme_mitgcm.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mitgcm/readme_mitgcm.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mitgcm/readme_mitgcm.txt	(revision 21239)
@@ -0,0 +1,84 @@
+Instructions for getting MITgcm:   http://mitgcm.org/ 
+
+
+(1)
+add to your .bashrc file
+# CVS 
+export CVSROOT=':pserver:cvsanon@mitgcm.org:/u/gcmpack'
+
+source .bashrc
+
+cvs login 
+ ( enter the CVS password: "cvsanon" )
+
+cvs co -P MITgcm
+
+(
+or if you don't want the verification packages
+cvs co -P MITgcm_code
+)
+
+
+(2)
+and if you don't like CVS  go to :
+
+http://mitgcm.org/download/
+
+and download the most recent checkpoint:
+e.g.
+     MITgcm_c62w.tar.gz
+
+
+
+
+
+==========================================================
+Instructions for generating and running a 1-CPU experiment
+==========================================================
+
+  cd MITgcm/verification/lab_sea
+  cd build
+  cp ../code/*.h ../code/packages.conf .
+  ../../../tools/genmake2
+  make depend
+  make
+  cd ../input
+  ../build/mitgcmuv > output.txt
+
+Use matlab script to look at the output
+  cd ../../../verification/lab_sea/matlab
+  matlab
+  lookat_ice  (you might have to modify the script)
+
+
+
+================================================================
+Instructions for running the "weddell" 200x160x50 configuration
+================================================================
+face=6; ix=101:300; jx=290:449; kx=1:50;
+
+1. Obtain copies of following directories:
+ ftp://ecco2.jpl.nasa.gov/data1/weddell/code
+ ftp://ecco2.jpl.nasa.gov/data1/weddell/run_template
+ ftp://ecco2.jpl.nasa.gov/data1/data/era40/era40_ecmwf_blend
+ ftp://ecco2.jpl.nasa.gov/data1/data/blend_forcing/cube59_GPCP
+
+2. Get and compile code:
+ cvs co MITgcm_code
+ cd MITgcm
+ mkdir bin exe
+ cd bin
+ ../tools/genmake2 -mods=../../code
+ make depend
+ make -j
+
+3. Model execution:
+ cd ../exe
+ cp ../../run_template/* .
+ cp ../bin/mitgcmuv .
+ ./mitgcmuv >& output.txt &
+
+
+
+
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/modelE/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/modelE/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/modelE/install.sh	(revision 21239)
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -eu
+#modelE  downloaded from the gis repository of the GISS (Goddard Institute for Space Studies)
+#at  http://www.giss.nasa.gov/tools/modelE/
+
+#Some cleanup
+rm -rf src install  modelE_AR5_branch
+mkdir src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/modelE_AR5_branch.2012.03.13_10.12.21.tgz' 'modelE_AR5_branch.2012.03.13_10.12.21.tgz'
+
+#Untar 
+tar -zxvf  modelE_AR5_branch.2012.03.13_10.12.21.tgz
+
+#Move modelE into install directory
+mv modelE_AR5_branch/* src
+rm -rf modelE_AR5_branch
+
+#Apply patches
+cd src 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/modules/install-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/modules/install-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/modules/install-macosx64.sh	(revision 21239)
@@ -0,0 +1,39 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+rm -rf modules-3.2.10
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/modules-3.2.10.tar.gz' 'modules-3.2.10.tar.gz'
+
+#Untar 
+tar -zxvf  modules-3.2.10.tar.gz
+
+#Move modules into src directory
+
+#Configure modules
+cd modules-3.2.10
+sudo ./configure \
+	--prefix=/usr/local/modules \
+	--with-tcl-lib=$ISSM_DIR/externalpackages/tcl/install/Library/Frameworks/Tcl.framework/Versions/8.5\
+	--with-tcl-inc=$ISSM_DIR/externalpackages/tcl/install/Library/Frameworks/Tcl.framework/Versions/8.5/Headers\
+	--with-tcl-ver=8.5 \
+	--with-tclx-lib=$ISSM_DIR/externalpackages/tclx/install/lib/tclx8.4\
+    --with-tclx-inc=$ISSM_DIR/externalpackages/tclx/install/include\
+	--with-tclx-ver=8.4 \
+	--with-version-path=/usr/local/modules/versions \
+	--with-skel-path=/usr/local/modules/etc/skel \
+	--with-etc-path=/usr/local/modules/etc \
+	--with-module-path=/usr/local/modules/files \
+	--disable-dependency-tracking
+
+#Compile and install modules
+if [ $# -eq 0 ]; then
+	sudo make
+else
+	sudo make -j $1
+fi
+sudo make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/modules/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/modules/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/modules/install.sh	(revision 21239)
@@ -0,0 +1,22 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py http://issm.jpl.nasa.gov/files/externalpackages/modules-3.2.9c.tar.gz modules-3.2.9c.tar.gz
+
+#Untar and move python into install directory
+tar -zxvf  modules-3.2.9c.tar.gz
+mv modules-3.2.9 install
+
+#Configure doxygen
+cd install
+./configure \
+  --prefix "$ISSM_DIR/externalpackages/modules/install" \
+  --without-x
+
+#compile and install
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.4-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.4-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.4-linux64.sh	(revision 21239)
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+#Some cleanup
+rm -rf src install mpich2-1.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich2-1.4.tar.gz' 'mpich2-1.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich2-1.4.tar.gz
+
+#Move mpich2 into src directory
+mv mpich2-1.4/* src
+rm -rf mpich2-1.4
+
+#Configure mpich2
+cd src
+export -n F90 
+export CFLAGS="$CFLAGS -fPIC"
+export FFLAGS="$FFLAGS -fPIC"
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared \
+	--enable-sharedlibs=gcc \
+	--enable-f91=gfortran 
+
+#Compile mpich2 (parallel make not supported)
+make
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.4-macosx32.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.4-macosx32.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.4-macosx32.sh	(revision 21239)
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+#Some cleanup
+rm -rf src install mpich2-1.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich2-1.4.tar.gz' 'mpich2-1.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich2-1.4.tar.gz
+
+#Move mpich2 into src directory
+mv mpich2-1.4/* src
+rm -rf mpich2-1.4
+
+#Configure mpich2
+cd src
+export FFLAGS=" -m32"
+export CFLAGS=" -m32"
+export CXXFLAGS=" -arch i386"
+export CPPFLAGS=" -arch i386"
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-f91=gfortran \
+	--enable-sharedlibs=osx-gcc \
+	--enable-shared \
+	--enable-fc
+
+#Compile mpich2 (parallel make not supported)
+make
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.4-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.4-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.4-macosx64.sh	(revision 21239)
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+#Some cleanup
+rm -rf src install mpich2-1.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich2-1.4.tar.gz' 'mpich2-1.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich2-1.4.tar.gz
+
+#Move mpich2 into src directory
+mv mpich2-1.4/* src
+rm -rf mpich2-1.4
+
+#Configure mpich2
+cd src
+export FCFLAGS=" -m64"
+export FFLAGS=" -m64"
+export CFLAGS=" -arch x86_64"
+export CXXFLAGS=" -arch x86_64"
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-f91 \
+	--enable-sharedlibs=osx-gcc \
+	--enable-shared \
+	--enable-fc
+
+#Compile mpich2 (parallel make not supported)
+make
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.4.1-p1-win7.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.4.1-p1-win7.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.4.1-p1-win7.sh	(revision 21239)
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+#In order to install MPICH2 on your platform, go to www.mpich.org/downloads 
+#and download the following file (Windows x86_64 for the Windows distribution): 
+#mpich2-1.4.1p1-win-x86-64.msi. This file is also hosted on the ISSM website.
+
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich2-1.4.1p1-win-x86-64.msi' 'mpich2-1.4.1p1-win-x86-64.msi'
+
+#once installed, create a symbolic link between the MPICH2 directory 
+#and the install directory. For example: 
+#ln -s /cygdrive/c/Program\ Files/MPICH2 install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.5-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.5-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.5-linux64.sh	(revision 21239)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich2-1.5
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich2-1.5.tar.gz' 'mpich2-1.5.tar.gz'
+
+#Untar 
+tar -zxvf  mpich2-1.5.tar.gz
+
+#Move mpich2 into src directory
+mv mpich2-1.5/* src
+rm -rf mpich2-1.5
+
+#Configure mpich2
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared \
+	--enable-sharedlibs=gcc \
+	--enable-f91=gfortran  CC=gcc FC=gfortran
+
+#Compile mpich2 (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.5-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.5-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.5-macosx64.sh	(revision 21239)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich2-1.5
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich2-1.5.tar.gz' 'mpich2-1.5.tar.gz'
+
+#Untar 
+tar -zxvf  mpich2-1.5.tar.gz
+
+#Move mpich2 into src directory
+mv mpich2-1.5/* src
+rm -rf mpich2-1.5
+
+#Configure mpich2
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared \
+	--enable-sharedlibs=gcc \
+	--enable-f91=gfortran 
+
+#Compile mpich2 (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.5-walgreen.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.5-walgreen.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-2_1.5-walgreen.sh	(revision 21239)
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich2-1.5
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich2-1.5.tar.gz' 'mpich2-1.5.tar.gz'
+
+#Untar 
+tar -zxvf  mpich2-1.5.tar.gz
+
+#Move mpich2 into src directory
+mv mpich2-1.5/* src
+rm -rf mpich2-1.5
+
+#Configure mpich2
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared \
+	--with-device=ch3:sock
+
+#Compile mpich2 (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-cyclone.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-cyclone.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-cyclone.sh	(revision 21239)
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared \
+	--enable-sharedlibs=gcc\
+    CC=gcc \
+    CXX=g++
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-linux64-static.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-linux64-static.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-linux64-static.sh	(revision 21239)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--disable-shared \
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-linux64.sh	(revision 21239)
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared \
+	--enable-sharedlibs=gcc
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-macosx64-gforker.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-macosx64-gforker.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-macosx64-gforker.sh	(revision 21239)
@@ -0,0 +1,38 @@
+# One way to avoid firewall and host-name issues on El Capitan is
+# to use gforker, instead of default hydra, process manager.
+# Note that gforker will only work with a single-node configuration.
+# https://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4-installguide.pdf
+
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared \
+        --with-pm=gforker
+
+	#CC=llvm-gcc \
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-macosx64-nothreads.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-macosx64-nothreads.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-macosx64-nothreads.sh	(revision 21239)
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+# includes following bug fix:
+# https://issm.ess.uci.edu/forum/viewtopic.php?f=10&t=49
+
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+export "ac_cv_tls=none"
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared
+
+	#CC=llvm-gcc \
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-macosx64-snowleopard-dakota.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-macosx64-snowleopard-dakota.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-macosx64-snowleopard-dakota.sh	(revision 21239)
@@ -0,0 +1,35 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared \
+	CC=/usr/bin/gcc CXX=/usr/bin/g++ \
+	F77=/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran \
+	LDFLAGS="-L/usr/lib/ -lstdc++ -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin10/4.6.2/ -lgfortran"
+
+	#CC=llvm-gcc \
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-macosx64-static.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-macosx64-static.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-macosx64-static.sh	(revision 21239)
@@ -0,0 +1,29 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install"
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-macosx64-yosemite-dakota.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-macosx64-yosemite-dakota.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-macosx64-yosemite-dakota.sh	(revision 21239)
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	CC=/usr/local/gfortran/bin/gcc CXX=/usr/local/gfortran/bin/g++ \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared
+
+	#CC=llvm-gcc \
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mpich/install-3.0-macosx64.sh	(revision 21239)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared
+
+	#CC=llvm-gcc \
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mumps/README
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mumps/README	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mumps/README	(revision 21239)
@@ -0,0 +1,1 @@
+MUMPS install package. Better rely on Petsc to install this, but feel free to try.
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mumps/configs/Makefile-macosx64.inc
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mumps/configs/Makefile-macosx64.inc	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mumps/configs/Makefile-macosx64.inc	(revision 21239)
@@ -0,0 +1,32 @@
+LPORDDIR   = $(topdir)/PORD/lib/
+IPORD      = -I$(topdir)/PORD/include/
+LPORD      = -L$(LPORDDIR) -lpord
+IMETIS = -I$(ISSM_DIR)/externalpackages/petsc/install/include/
+LMETIS = -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -lparmetis
+ORDERINGSC = -Dpord -Dmetis -Dparmetis
+ORDERINGSF = -Dprod -Dmetis -Dparmetis
+LORDERINGS  = $(LMETIS) $(LPORD) $(LSCOTCH)
+IORDERINGSC = $(IMETIS) $(IPORD) $(ISCOTCH)
+IORDERINGSF = $(ISCOTCH)
+RM = /bin/rm -f
+CC = $(ISSM_DIR)/externalpackages/mpich2/install/bin/mpicc
+OPTC    =  -PIC  -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -O 
+OUTC = -o 
+FC = $(ISSM_DIR)/externalpackages/mpich2/install/bin/mpif90
+FL = $(ISSM_DIR)/externalpackages/mpich2/install/bin/mpif90
+OPTF    =  -fPIC  -Wno-unused-variable -Wno-unused-dummy-argument -O  
+OUTF = -o 
+CDEFS   = -DAdd_
+AR      = /usr/bin/ar cr 
+LIBEXT  = .a
+RANLIB  = /usr/bin/ranlib -c
+SCALAP  = -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -lscalapack -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -lblacs
+INCPAR  = -I$(ISSM_DIR)/externalpackages/mpich2/install/include -I$(ISSM_DIR)/externalpackages/mpich2/install/include
+LIBPAR  = $(SCALAP) 
+INCSEQ  = -I$(topdir)/libseq
+LIBSEQ  =  $(LAPACK) -L$(topdir)/libseq -lmpiseq
+LIBBLAS = -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -lflapack -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -lfblas -L$(ISSM_DIR)/externalpackages/mpich2/install/lib -L/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1/x86_64 -L/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1/x86_64 -L/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1 -L/usr/llvm-gcc-4.2/lib/gcc -L$(ISSM_DIR)/externalpackages/petsc/src -L$(ISSM_DIR)/externalpackages/hdf5/install/lib -L$(ISSM_DIR)/externalpackages/netcdf/install/lib -L/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1 -L/usr/llvm-gcc-4.2/lib -L/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2/lib -lmpichf90 -lgfortran -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin11/4.6.2 -L/usr/local/gfortran/lib -lgfortran -lgcc_ext.10.5 -lquadmath -lm -lm
+OPTL    = -O -I.
+INCS = $(INCPAR)
+LIBS = $(LIBPAR)
+LIBSEQNEEDED =
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mumps/install-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mumps/install-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/mumps/install-macosx64.sh	(revision 21239)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mumps-4.10.0-p3
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mumps-4.10.0-p3.tar.gz' 'mumps-4.10.0-p3.tar.gz'
+
+#Untar 
+tar -zxvf  mumps-4.10.0-p3.tar.gz
+
+#Move mumps into src directory
+mv mumps-4.10.0-p3/* src
+rm -rf mumps-4.10.0-p3
+
+#configuration: 
+cp configs/Makefile-macosx64.inc src/Makefile.inc
+
+#Configure mumps
+cd src
+
+#Compile mumps
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/ncview/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/ncview/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/ncview/install.sh	(revision 21239)
@@ -0,0 +1,28 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/ncview-1.93g.tar.gz' 'ncview-1.93g.tar.gz'
+
+#Untar 
+tar -zxvf  ncview-1.93g.tar.gz
+
+#Move doxygen into src directory
+mv ncview-1.93g/* install
+rmdir ncview-1.93g
+
+#Configure doxygen
+cd install
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/ncview/install" \
+	--x-libraries=/usr/X11/lib/ \
+	--x-includes=/usr/X11/include/ \
+	--with-netcdf_incdir="$ISSM_DIR/externalpackages/netcdf/install/include/" \
+	--with-netcdf_libdir="$ISSM_DIR/externalpackages/netcdf/install/lib/"
+
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/netcdf-cxx/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/netcdf-cxx/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/netcdf-cxx/install.sh	(revision 21239)
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install netcdf-cxx-4.2
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/netcdf-cxx-4.2.tar.gz' 'netcdf-cxx-4.2.tar.gz'
+
+#Untar 
+tar -zxvf netcdf-cxx-4.2.tar.gz
+
+#Move metis into install directory
+mv netcdf-cxx-4.2/* install
+rm -rf netcdf-cxx-4.2
+
+#Compile
+export CXXFLAGS="-I$ISSM_DIR/externalpackages/netcdf/install/include "
+cd install 
+./configure --prefix="$ISSM_DIR/externalpackages/netcdf-cxx/install" 
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/netcdf-python/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/netcdf-python/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/netcdf-python/install.sh	(revision 21239)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install netCDF4-1.0
+mkdir install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py "http://issm.jpl.nasa.gov/files/externalpackages/netCDF4-1.0.tar.gz" "netCDF4-1.0.tar.gz"
+
+#Untar 
+tar -zxvf  netCDF4-1.0.tar.gz
+
+#for later: 
+rm -rf ISSMDIR
+echo $ISSM_DIR | sed 's/\//\\\//g' > ISSMDIR
+ISSMDIR=`cat ISSMDIR` && rm -rf ISSMDIR
+
+#Move netCDF4 to install directory
+rm -rf install/*
+mv netCDF4-1.0/* install/
+rm -rf netCDF4-1.0
+
+#Configur and compile
+cd install
+#edit setup.cfg to point to hdf5 and netcdf
+cat setup.cfg.template  | sed "s/\#netCDF4_dir = \/usr\/local/netCDF4_dir = $ISSMDIR\/externalpackages\/netcdf\/install/g"  | sed "s/\#HDF5_dir = \/usr\/local/HDF5_DIR = $ISSMDIR\/externalpackages\/hdf5\/install/g" > setup.cfg
+
+python setup.py build 
+python setup.py install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/netcdf/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/netcdf/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/netcdf/install.sh	(revision 21239)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+#you need hdf5 compiled
+
+#Some cleanup
+rm -rf src install netcdf-4.3.2
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py "http://issm.jpl.nasa.gov/files/externalpackages/netcdf-4.3.2.tar.gz" "netcdf-4.3.2.tar.gz"
+
+#Untar 
+tar -zxvf  netcdf-4.3.2.tar.gz
+
+#Move netcdf to install directory
+rm -rf src/*
+mv netcdf-4.3.2/* src/
+rm -rf netcdf-4.3.2
+
+#Configure and compile
+cd src
+./configure \
+ --prefix="$ISSM_DIR/externalpackages/netcdf/install"  \
+ --disable-doxygen
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/nose/install-linux64-python2.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/nose/install-linux64-python2.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/nose/install-linux64-python2.sh	(revision 21239)
@@ -0,0 +1,20 @@
+#!/bin/bash
+#Install Python nose module
+
+rm -rf src  install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/nose-1.1.2.tar.gz' 'nose-1.1.2.tar.gz'
+tar -zxvf  nose-1.1.2.tar.gz
+mv nose-1.1.2 src
+rm -rf nose-1.1.2
+
+cd src
+python ./setup.py build
+python ./setup.py install
+
+#to be flagged by jenkins, we create an empty install dir: 
+cd ../
+mkdir install
+touch install/emptyfile
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/nose/install-linux64-python3.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/nose/install-linux64-python3.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/nose/install-linux64-python3.sh	(revision 21239)
@@ -0,0 +1,16 @@
+#!/bin/bash
+#Install Python nose module
+
+rm -rf src  install
+
+svn checkout http://python-nose.googlecode.com/svn/branches/py3k
+mv py3k src
+
+cd src
+python ./setup.py build
+python ./setup.py install
+
+#to be flagged by jenkins, we create an empty install dir: 
+cd ../
+mkdir install
+touch install/emptyfile
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/nose/install-macosx64-python2.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/nose/install-macosx64-python2.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/nose/install-macosx64-python2.sh	(revision 21239)
@@ -0,0 +1,19 @@
+#!/bin/bash
+#Install Python nose module
+
+rm -rf src  install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/nose-1.1.2.tar.gz' 'nose-1.1.2.tar.gz'
+tar -zxvf  nose-1.1.2.tar.gz
+mv nose-1.1.2 src
+rm -rf nose-1.1.2
+
+cd src
+python ./setup.py build
+python ./setup.py install
+
+#to be flagged by jenkins, we create an empty install dir: 
+cd ../
+mkdir install
+touch install/emptyfile
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/nose/install-macosx64-python3.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/nose/install-macosx64-python3.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/nose/install-macosx64-python3.sh	(revision 21239)
@@ -0,0 +1,16 @@
+#!/bin/bash
+#Install Python nose module
+
+rm -rf src  install
+
+svn checkout http://python-nose.googlecode.com/svn/branches/py3k
+mv py3k src
+
+cd src
+python ./setup.py build
+python ./setup.py install
+
+#to be flagged by jenkins, we create an empty install dir: 
+cd ../
+mkdir install
+touch install/emptyfile
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/numpy/README
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/numpy/README	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/numpy/README	(revision 21239)
@@ -0,0 +1,9 @@
+For OSX 10.7 (Lion), the instructions here can be followed:  
+http://www.scipy.org/Installing_SciPy/Mac_OS_X
+
+For OSX 10.6 (Snow Leopard), the scipy folks recommend gcc and g++ version 4.0.
+However, ISSM needs the gfortran version recommended in $ISSM_DIR/externalpackages/gfortran.
+On the webpage listed above, make sure the "export CC" and "export CXX" commands point to the 
+binaries associated with this gfortran version (likely in /usr/local/gfortran/bin by default).
+Once this gfortran is installed, the install script in this directory for Snow Leopard should
+work.
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/numpy/install-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/numpy/install-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/numpy/install-linux64.sh	(revision 21239)
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -eu
+
+rm -rf install
+
+export CC="gcc -fPIC"
+export CXX="g++ -fPIC"
+export F77="gfortran -fPIC"
+export FC="gfortran -fPIC"
+export FFLAGS=-ff2c
+
+#clean up
+rm -rf numpy
+rm -rf numpy-1.7.0b2
+
+#download numpy first
+#export GIT_SSL_NO_VERIFY=true 
+#git clone https://github.com/numpy/numpy.git
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/numpy-1.7.0b2.tar.gz' 'numpy-1.7.0b2.tar.gz'
+
+#install numpy
+tar -zxvf numpy-1.7.0b2.tar.gz
+cd numpy-1.7.0b2
+python setup.py build
+python setup.py install
+cd ..
+python -c "import numpy; print 'Installed NumPy', numpy.__version__"
+python -c "import numpy; numpy.test()"
+
+#to be flagged by jenkins, we create an empty install dir: 
+mkdir install
+touch install/emptyfile
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/numpy/install-macosx-lion.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/numpy/install-macosx-lion.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/numpy/install-macosx-lion.sh	(revision 21239)
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -eu
+
+rm -rf install
+
+export CC=gcc
+export CXX=g++
+export FFLAGS=-ff2c
+
+#clean up
+rm -rf numpy
+rm -rf numpy-1.7.0b2
+
+#download numpy first
+#export GIT_SSL_NO_VERIFY=true 
+#git clone https://github.com/numpy/numpy.git
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/numpy-1.7.0b2.tar.gz' 'numpy-1.7.0b2.tar.gz'
+
+#install numpy
+tar -zxvf numpy-1.7.0b2.tar.gz
+cd numpy-1.7.0b2
+python setup.py build
+python setup.py install
+cd ..
+python -c "import numpy; print 'Installed NumPy', numpy.__version__"
+python -c "import numpy; numpy.test()"
+
+#to be flagged by jenkins, we create an empty install dir: 
+mkdir install
+touch install/emptyfile
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/numpy/install-macosx-mlion.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/numpy/install-macosx-mlion.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/numpy/install-macosx-mlion.sh	(revision 21239)
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -eu
+
+rm -rf install
+
+export CC=gcc
+export CXX=g++
+export FFLAGS=-ff2c
+
+#clean up
+rm -rf numpy
+rm -rf numpy-1.7.0b2
+
+#download numpy first
+#export GIT_SSL_NO_VERIFY=true 
+#git clone https://github.com/numpy/numpy.git
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/numpy-1.7.0b2.tar.gz' 'numpy-1.7.0b2.tar.gz'
+
+#install numpy
+tar -zxvf numpy-1.7.0b2.tar.gz
+cd numpy-1.7.0b2
+python setup.py build
+python setup.py install
+cd ..
+python -c "import numpy; print 'Installed NumPy', numpy.__version__"
+python -c "import numpy; numpy.test()"
+
+#to be flagged by jenkins, we create an empty install dir: 
+mkdir install
+touch install/emptyfile
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/numpy/install-macosx-snowleopard.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/numpy/install-macosx-snowleopard.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/numpy/install-macosx-snowleopard.sh	(revision 21239)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+rm -rf install
+
+export F77="/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran"
+export CC="/usr/bin/gcc"
+export CXX="/usr/bin/g++"
+export FFLAGS=-ff2c
+
+#clean up
+rm -rf numpy
+rm -rf numpy-1.7.0b2
+
+#download numpy first
+#export GIT_SSL_NO_VERIFY=true 
+#git clone https://github.com/numpy/numpy.git
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/numpy-1.7.0b2.tar.gz' 'numpy-1.7.0b2.tar.gz'
+
+#install numpy
+tar -zxvf numpy-1.7.0b2.tar.gz
+cd numpy-1.7.0b2
+python setup.py build
+python setup.py install
+cd ..
+python -c "import numpy; print 'Installed NumPy', numpy.__version__"
+python -c "import numpy; numpy.test()"
+
+#to be flagged by jenkins, we create an empty install dir: 
+mkdir install
+touch install/emptyfile
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/octave/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/octave/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/octave/install.sh	(revision 21239)
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install octave-3.6.2 
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py "http://issm.jpl.nasa.gov/files/externalpackages/octave-3.6.2.tar.gz" "octave-3.6.2.tar.gz"
+
+#Untar 
+tar -zxvf  octave-3.6.2.tar.gz
+
+#Move octave into install directory
+mv octave-3.6.2/* src
+rm -rf octave-3.6.2
+
+#install
+cd src 
+./configure \
+ --prefix=$ISSM_DIR/externalpackages/octave/install \
+ --disable-readline
+
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/oofem/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/oofem/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/oofem/install.sh	(revision 21239)
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf oofem-2.0
+mkdir src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/oofem-2.0.tar.gz' 'oofem-2.0.tar.gz'
+
+#Untar 
+tar -zxvf  oofem-2.0.tar.gz
+
+#Move oofem into src directory
+mv oofem-2.0/* src
+rm -rf oofem-2.0
+
+# currently a basic serial configuration, see http://www.oofem.org/wiki/doku.php?id=installation 
+# for details on enabling the IML++ and PETSc libraries, and for configuring the parallel version
+cd src
+./configure OOFEM_TARGET=oofem-2.0 --enable-dss
+
+#Compile oofem 
+cd targets/oofem-2.0
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+
+# build verification tools
+cd ../../tools && make all
+
+# testing solver
+cd ../targets/oofem-2.0 && make tests && less ./test_results
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/openanalysis/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/openanalysis/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/openanalysis/install.sh	(revision 21239)
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf openanalysis
+
+#download openanalysis
+svn co http://svn.berlios.de/svnroot/repos/openanalysis/OpenAnalysis/trunk openanalysis
+
+#Configure
+cd openanalysis
+
+make -f Makefile.quick all
+make -f Makefile.quick install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/openssl/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/openssl/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/openssl/install.sh	(revision 21239)
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+
+#Download latest version
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/openssl-0.9.8x.tar.gz' 'openssl-0.9.8x.tar.gz'
+
+#Untar
+tar -xzf openssl-0.9.8x.tar.gz
+mv openssl-0.9.8x src
+mkdir install
+
+#Configure openssl
+cd src
+./config --prefix="$ISSM_DIR/externalpackages/openssl/install" shared
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/packagemaker/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/packagemaker/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/packagemaker/install.sh	(revision 21239)
@@ -0,0 +1,8 @@
+#!/bin/bash
+set -eu
+
+#Erase symlink
+rm -rf install
+
+#Select or create a new simlink
+ln -s /Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/ install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/pcre/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/pcre/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/pcre/install.sh	(revision 21239)
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -eu
+
+#Cleaning
+rm -rf install
+rm -rf pcre-8.21
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/pcre-8.21.tar.gz' 'pcre-8.21.tar.gz'
+
+#Untar and move python into install directory
+tar -zxvf  pcre-8.21.tar.gz
+mv pcre-8.21/* install
+rm -rf pcre-8.21
+
+#Configure doxygen
+cd install 
+./configure --prefix "$ISSM_DIR/externalpackages/python/install"
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/configs/3.1/win7/petscfix.h.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/configs/3.1/win7/petscfix.h.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/configs/3.1/win7/petscfix.h.patch	(revision 21239)
@@ -0,0 +1,8 @@
+10c10
+< extern "C" {
+---
+> //extern "C" {
+14c14
+< }
+---
+> //}
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-acenet.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-acenet.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-acenet.sh	(revision 21239)
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.4.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.4.3.tar.gz' 'petsc-3.4.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.4.3.tar.gz
+mv petsc-3.4.3/* src/
+rm -rf petsc-3.4.3
+
+#configure
+cd src
+./config/configure.py \
+ --prefix="$ISSM_DIR/externalpackages/petsc/install" \
+ --PETSC_ARCH="linux-gnu-amd64" \
+ --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+ --with-debugging=0 \
+ --with-shared-libraries=1 \
+ --known-mpi-shared-libraries=1 \
+ --with-mpi-dir=$OPENMPI \
+ --with-blas-lapack-dir=/usr/local/intel/composer_xe_2011_sp1.13.367/mkl/ \
+ --download-scalapack=yes \
+ --download-mumps=yes \
+ --download-metis=yes \
+ --download-parmetis=yes 
+
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-greenplanet.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-greenplanet.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-greenplanet.sh	(revision 21239)
@@ -0,0 +1,55 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.4.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.4.3.tar.gz' 'petsc-3.4.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.4.3.tar.gz
+mv petsc-3.4.3/* src/
+rm -rf petsc-3.4.3
+
+#configure
+cd src
+./config/configure.py \
+ --prefix="$ISSM_DIR/externalpackages/petsc/install" \
+ --PETSC_ARCH="$ISSM_ARCH" \
+ --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+ --with-batch=1  \
+ --with-debugging=0 \
+ --with-shared-libraries=1 \
+ --known-mpi-shared-libraries=1 \
+ --with-mpi=1 \
+ --with-mpi-dir=/sopt/mpi/openmpi-1.5.4_psm/intel/ \
+ --with-blas-lapack-dir=/opt/intel/mkl/10.2.4.032/ \
+ --download-scalapack=yes \
+ --download-blacs=yes \
+ --download-mumps=yes \
+ --download-metis=yes \
+ --download-parmetis=yes \
+ --download-trilinos=yes \
+ --download-euclid=yes \
+ --download-hypre=yes \
+ --COPTFLAGS="-lmpi -O3" \
+ --FOPTFLAGS="-lmpi -O3" \
+ --CXXOPTFLAGS="-lmpi -O3"
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#PBS -S /bin/bash
+#PBS -l nodes=1:ppn=1
+#PBS -q c6145
+#PBS -l walltime=10
+
+cd $(echo $ISSM_DIR)/externalpackages/petsc/src/
+mpiexec -np 1 ./conftest-arch-linux2-c-opt
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== qsub script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-hpc.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-hpc.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-hpc.sh	(revision 21239)
@@ -0,0 +1,39 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.4.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.4.3.tar.gz' 'petsc-3.4.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.4.3.tar.gz
+mv petsc-3.4.3/* src/
+rm -rf petsc-3.4.3
+
+#configure
+cd src
+./config/configure.py \
+ --prefix="$ISSM_DIR/externalpackages/petsc/install" \
+ --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+ --with-debugging=0 \
+ --with-shared-libraries=1 \
+ --known-mpi-shared-libraries=1 \
+ --with-mpi=1 \
+ --with-mpi-dir=/data/apps/mpi/openmpi-1.6.0/gcc-4.7.2// \
+ --download-scalapack=yes \
+ --download-blacs=yes \
+ --download-blas=yes \
+ --download-f-blas-lapack=yes \
+ --download-mumps=yes \
+ --download-metis=yes \
+ --download-parmetis=yes \
+ --COPTFLAGS="-O3" \
+ --FOPTFLAGS="-O3" \
+ --CXXOPTFLAGS="-O3"
+
+#Compile petsc and install it
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-linux64.sh	(revision 21239)
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.4.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.4.3.tar.gz' 'petsc-3.4.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.4.3.tar.gz
+mv petsc-3.4.3/* src/
+rm -rf petsc-3.4.3
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-mpi-dir="$ISSM_DIR/externalpackages/mpich/install" \
+	--PETSC_ARCH=linux-gnu-amd64 \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-debugging=0 \
+	--with-shared-libraries=1 \
+	--download-parmetis=yes \
+	--download-metis=yes \
+	--download-mumps=yes \
+	--download-scalapack=yes \
+	--download-blacs=yes \
+	--download-blas=yes \
+	--download-f-blas-lapack=yes \
+	--with-pic=1
+
+#Compile petsc and install it
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-macosx64.sh	(revision 21239)
@@ -0,0 +1,37 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.4.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.4.3.tar.gz' 'petsc-3.4.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.4.3.tar.gz
+mv petsc-3.4.3/* src/
+rm -rf petsc-3.4.3
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-mpi-dir="$ISSM_DIR/externalpackages/mpich/install" \
+	--PETSC_ARCH="macosx-gnu" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-debugging=0 \
+	--with-shared-libraries=1 \
+	--download-metis=yes \
+	--download-parmetis=yes \
+	--download-mumps=yes \
+	--download-scalapack=yes \
+	--download-blacs=yes \
+	--download-blas=yes \
+	--download-f-blas-lapack=yes \
+	--with-debugging=yes
+
+
+#Compile petsc and install it
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-pleiades-intel2012.0.032-mpt.2.06rp16.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-pleiades-intel2012.0.032-mpt.2.06rp16.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-pleiades-intel2012.0.032-mpt.2.06rp16.sh	(revision 21239)
@@ -0,0 +1,61 @@
+#!/bin/bash
+
+#Some cleanup
+rm -rf install petsc-3.4.2 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.4.2.tar.gz' 'petsc-3.4.2.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.4.2.tar.gz
+mv petsc-3.4.2/* src/
+rm -rf petsc-3.4.2
+
+#configure
+cd src
+./config/configure.py \
+ --prefix="$ISSM_DIR/externalpackages/petsc/install" \
+ --PETSC_ARCH="$ISSM_ARCH" \
+ --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+ --with-batch=1  \
+ --with-debugging=0 \
+ --with-shared-libraries=1 \
+ --known-mpi-shared-libraries=1 \
+ --with-mpi=1 \
+ --with-mpi-lib="/nasa/sgi/mpt/2.06rp16/lib/libmpi.so" \
+ --with-mpi-include="/nasa/sgi/mpt/2.06rp16/include" \
+ --with-blas-lapack-dir="/nasa/intel/Compiler/2012.0.032/composer_xe_2011_sp1/mkl/lib/intel64" \
+ --download-scalapack=yes \
+ --download-blacs=yes \
+ --download-mumps=yes \
+ --download-metis=yes \
+ --download-parmetis=yes \
+ --download-trilinos=yes \
+ --download-euclid=yes \
+ --download-hypre=yes \
+ --COPTFLAGS="-lmpi -O3" \
+ --FOPTFLAGS="-lmpi -O3" \
+ --CXXOPTFLAGS="-lmpi -O3"
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#PBS -S /bin/bash
+#PBS -l select=1:ncpus=1:model=wes 
+#PBS -l walltime=200 
+#PBS -W group_list=s1010
+#PBS -m e 
+
+. /usr/share/modules/init/bash 
+module load comp-intel/2012.0.032
+module load mpi-sgi/mpt.2.06rp16
+
+export PATH="$PATH:." 
+export MPI_GROUP_MAX=64 
+mpiexec -np 1 ./conftest-linux-gnu-ia64-intel.py
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== qsub -q devel script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-pleiades-mpich2-gcc444.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-pleiades-mpich2-gcc444.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-pleiades-mpich2-gcc444.sh	(revision 21239)
@@ -0,0 +1,61 @@
+#!/bin/bash
+
+#Some cleanup
+rm -rf install petsc-3.4.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.4.3.tar.gz' 'petsc-3.4.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.4.3.tar.gz
+mv petsc-3.4.3/* src/
+rm -rf petsc-3.4.3
+
+#configure
+cd src
+./config/configure.py \
+ --prefix="$ISSM_DIR/externalpackages/petsc/install" \
+ --PETSC_ARCH="$ISSM_ARCH" \
+ --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+ --with-batch=1  \
+ --with-debugging=0 \
+ --with-shared-libraries=1 \
+ --known-mpi-shared-libraries=1 \
+ --with-mpi=1 \
+ --with-mpi-lib="/nasa/mvapich2/1.4.1/gcc.sles11/lib/libmpich.a"\
+ --with-mpi-include="/nasa/mvapich2/1.4.1/gcc.sles11/include"\
+ --download-f-blas-lapack=yes \
+ --download-scalapack=yes \
+ --download-blacs=yes \
+ --download-mumps=yes \
+ --download-metis=yes \
+ --download-parmetis=yes \
+ --download-trilinos=yes \
+ --download-euclid=yes \
+ --download-hypre=yes \
+ --COPTFLAGS="-lmpich" \
+ --FOPTFLAGS="-lmpich" \
+ --CXXOPTFLAGS="-lmpich"
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#PBS -S /bin/bash
+#PBS -l select=1:ncpus=1:model=wes 
+#PBS -l walltime=200 
+#PBS -W group_list=s1010
+#PBS -m e 
+
+. /usr/share/modules/init/bash 
+module load mpi-mvapich2/1.4.1/gcc
+module load gcc/4.4.4
+
+export PATH="$PATH:." 
+export MPI_GROUP_MAX=64 
+mpiexec -np 1 ./conftest-linux-gnu-ia64-intel.py
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== qsub -q devel script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-pleiades-mpich2-gcc470.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-pleiades-mpich2-gcc470.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-pleiades-mpich2-gcc470.sh	(revision 21239)
@@ -0,0 +1,61 @@
+#!/bin/bash
+
+#Some cleanup
+rm -rf install petsc-3.4.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.4.3.tar.gz' 'petsc-3.4.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.4.3.tar.gz
+mv petsc-3.4.3/* src/
+rm -rf petsc-3.4.3
+
+#configure
+cd src
+./config/configure.py \
+ --prefix="$ISSM_DIR/externalpackages/petsc/install" \
+ --PETSC_ARCH="$ISSM_ARCH" \
+ --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+ --with-batch=1  \
+ --with-debugging=0 \
+ --with-shared-libraries=1 \
+ --known-mpi-shared-libraries=1 \
+ --with-mpi=1 \
+ --with-mpi-lib="/nasa/mvapich2/1.6.sles11/gcc/lib/libmpich.a"\
+ --with-mpi-include="/nasa/mvapich2/1.6.sles11/gcc/include" \
+ --download-f-blas-lapack=yes \
+ --download-scalapack=yes \
+ --download-blacs=yes \
+ --download-mumps=yes \
+ --download-metis=yes \
+ --download-parmetis=yes \
+ --download-trilinos=yes \
+ --download-euclid=yes \
+ --download-hypre=yes \
+ --COPTFLAGS="-lmpich" \
+ --FOPTFLAGS="-lmpich" \
+ --CXXOPTFLAGS="-lmpich"
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#PBS -S /bin/bash
+#PBS -l select=1:ncpus=1:model=wes 
+#PBS -l walltime=200 
+#PBS -W group_list=s1010
+#PBS -m e 
+
+. /usr/share/modules/init/bash 
+module load mpi-mvapich2/1.6/gcc
+module load gcc/4.7.0
+
+export PATH="$PATH:." 
+export MPI_GROUP_MAX=64 
+mpiexec -np 1 ./conftest-linux-gnu-ia64-intel.py
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== qsub -q devel script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-pleiades-mpich2.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-pleiades-mpich2.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-pleiades-mpich2.sh	(revision 21239)
@@ -0,0 +1,68 @@
+#!/bin/bash
+
+#Some cleanup
+rm -rf install petsc-3.4.2 src
+mkdir install src
+
+export cc=gcc
+alias cc='gcc'
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.4.2.tar.gz' 'petsc-3.4.2.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.4.2.tar.gz
+mv petsc-3.4.2/* src/
+rm -rf petsc-3.4.2
+
+#configure
+cd src
+./config/configure.py \
+ --prefix="$ISSM_DIR/externalpackages/petsc/install" \
+ --PETSC_ARCH="$ISSM_ARCH" \
+ --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+ --with-batch=1  \
+ --with-debugging=0 \
+ --with-shared-libraries=1 \
+ --with-mpi=1 \
+ --with-mpi-lib="$ISSM_DIR/externalpackages/mpich/install/lib/libmpich.so"\
+ --with-mpi-include="$ISSM_DIR/externalpackages/mpich/install/include" \
+  --known-mpi-shared-libraries=1 \
+  --download-f-blas-lapack=yes \
+ --download-scalapack=yes \
+ --download-metis=yes \
+ --download-parmetis=yes \
+ --download-blacs=yes \
+ --download-mumps=yes \
+  --download-trilinos=yes \
+ --download-euclid=yes \
+ --download-hypre=yes  \
+ --COPTFLAGS=" -O3 -march=corei7-avx" \
+ --FOPTFLAGS=" -O3 -march=corei7-avx" \
+ --CXXOPTFLAGS=" -O3 -march=corei7-avx" 
+
+#--with-mpi-lib="/nasa/mvapich2/1.4.1/gcc.sles11/lib/libmpich.a" \
+# --with-mpi-include="/nasa/mvapich2/1.4.1/gcc.sles11/include" \
+
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#PBS -S /bin/bash
+#PBS -l select=1:ncpus=1:model=wes 
+#PBS -l walltime=200 
+#PBS -W group_list=s1010
+#PBS -m e 
+
+. /usr/share/modules/init/bash 
+module load mpi-mvapich2/1.6/gcc
+module load gcc/4.7.0
+
+export PATH="$PATH:." 
+export MPI_GROUP_MAX=64 
+mpiexec -np 1 ./conftest-linux-gnu-ia64-intel.py
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== qsub -q devel script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-pleiades.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-pleiades.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-pleiades.sh	(revision 21239)
@@ -0,0 +1,61 @@
+#!/bin/bash
+
+#Some cleanup
+rm -rf install petsc-3.4.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.4.3.tar.gz' 'petsc-3.4.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.4.3.tar.gz
+mv petsc-3.4.3/* src/
+rm -rf petsc-3.4.3
+
+#configure
+cd src
+./config/configure.py \
+ --prefix="$ISSM_DIR/externalpackages/petsc/install" \
+ --PETSC_ARCH="$ISSM_ARCH" \
+ --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+ --with-batch=1  \
+ --with-debugging=0 \
+ --with-shared-libraries=1 \
+ --known-mpi-shared-libraries=1 \
+ --with-mpi=1 \
+ --with-mpi-lib="/nasa/sgi/mpt/2.06rp16/lib/libmpi.so" \
+ --with-mpi-include="/nasa/sgi/mpt/2.06rp16/include" \
+ --with-blas-lapack-dir="/nasa/intel/Compiler/2013.1.117/composer_xe_2013.1.117/mkl/lib/intel64" \
+ --download-scalapack=yes \
+ --download-blacs=yes \
+ --download-mumps=yes \
+ --download-metis=yes \
+ --download-parmetis=yes \
+ --download-trilinos=yes \
+ --download-euclid=yes \
+ --download-hypre=yes \
+ --COPTFLAGS="-lmpi -O3" \
+ --FOPTFLAGS="-lmpi -O3" \
+ --CXXOPTFLAGS="-lmpi -O3"
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#PBS -S /bin/bash
+#PBS -l select=1:ncpus=1:model=wes 
+#PBS -l walltime=200 
+#PBS -W group_list=s1010
+#PBS -m e 
+
+. /usr/share/modules/init/bash 
+module load comp-intel/2013.1.117
+module load mpi-sgi/mpt.2.06rp16
+
+export PATH="$PATH:." 
+export MPI_GROUP_MAX=64 
+mpiexec -np 1 ./conftest-linux-gnu-ia64-intel.py
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== qsub -q devel script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-pleiades2.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-pleiades2.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.4-pleiades2.sh	(revision 21239)
@@ -0,0 +1,61 @@
+#!/bin/bash
+
+#Some cleanup
+rm -rf install petsc-3.4.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.4.3.tar.gz' 'petsc-3.4.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.4.3.tar.gz
+mv petsc-3.4.3/* src/
+rm -rf petsc-3.4.3
+
+#configure
+cd src
+./config/configure.py \
+ --prefix="$ISSM_DIR/externalpackages/petsc/install" \
+ --PETSC_ARCH="$ISSM_ARCH" \
+ --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+ --with-batch=1  \
+ --with-debugging=0 \
+ --with-shared-libraries=1 \
+ --known-mpi-shared-libraries=1 \
+ --with-mpi=1 \
+ --with-mpi-lib="/nasa/sgi/mpt/2.06rp16/lib/libmpi.so" \
+ --with-mpi-include="/nasa/sgi/mpt/2.06rp16/include" \
+ --with-blas-lapack-dir="/nasa/intel/Compiler/2013.1.117/composer_xe_2013.1.117/mkl/lib/intel64" \
+ --download-scalapack=yes \
+ --download-blacs=yes \
+ --download-mumps=yes \
+ --download-metis=yes \
+ --download-parmetis=yes \
+ --download-trilinos=yes \
+ --download-euclid=yes \
+ --download-hypre=yes \
+ --COPTFLAGS="-lmpi -O3" \
+ --FOPTFLAGS="-lmpi -O3" \
+ --CXXOPTFLAGS="-lmpi -O3"
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#PBS -S /bin/bash
+#PBS -l select=1:ncpus=1:model=wes 
+#PBS -l walltime=200 
+#PBS -W group_list=s1010
+#PBS -m e 
+
+. /usr/share/modules/init/bash 
+module load comp-intel/2013.1.117
+module load mpi-sgi/mpt.2.06rp16
+
+export PATH="$PATH:." 
+export MPI_GROUP_MAX=64 
+mpiexec -np 1 ./conftest-linux-gnu-ia64-intel.py
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== qsub -q devel script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-greenplanet.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-greenplanet.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-greenplanet.sh	(revision 21239)
@@ -0,0 +1,56 @@
+#!/bin/bash
+set -eu
+
+#WARNING: make sure you have the right mpi
+
+#Some cleanup
+rm -rf install petsc-3.5.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.5.3.tar.gz' 'petsc-3.5.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.5.3.tar.gz
+mv petsc-3.5.3/* src/
+rm -rf petsc-3.5.3
+
+#configure
+cd src
+./config/configure.py \
+ --prefix="$ISSM_DIR/externalpackages/petsc/install" \
+ --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+ --with-blas-lapack-dir="/sopt/Intel/composer_xe_2015.0.090/mkl/" \
+ --with-mpi-dir="/sopt/mpi/openmpi-1.8.3/intel_15.0.0/bin/" \
+ --known-mpi-shared-libraries=1 \
+ --with-debugging=0 \
+ --with-valgrind=0 \
+ --with-x=0 \
+ --with-ssl=0 \
+ --with-batch=1  \
+ --with-shared-libraries=1 \
+ --download-metis=1 \
+ --download-parmetis=1 \
+ --download-scalapack=1 \
+ --download-mumps=1 
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#!/bin/bash
+#SBATCH -p c6145
+#SBATCH -N 1 -n 1
+#SBATCH --mem-per-cpu=1gb
+#SBATCH --time=10
+#SBATCH --job-name=test
+
+module load compiler/intel/15.0.0
+module load mpi/openmpi/1.8.3/intel_15.0.0
+
+cd $(echo $ISSM_DIR)/externalpackages/petsc/src/
+mpiexec -np 1 ./conftest-arch-linux2-c-opt
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== sbatch script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-hpc.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-hpc.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-hpc.sh	(revision 21239)
@@ -0,0 +1,50 @@
+#!/bin/bash
+set -eu
+
+#WARNING: make sure you have the right mpi:
+
+#Some cleanup
+rm -rf install petsc-3.5.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.5.3.tar.gz' 'petsc-3.5.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.5.3.tar.gz
+mv petsc-3.5.3/* src/
+rm -rf petsc-3.5.3
+
+#configure
+cd src
+./config/configure.py \
+ --prefix="$ISSM_DIR/externalpackages/petsc/install" \
+ --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+ --with-mpi-dir="/data/apps/mpi/openmpi-1.8.3/gcc/4.8.3/" \
+ --known-mpi-shared-libraries=1 \
+ --with-debugging=0 \
+ --with-valgrind=0 \
+ --with-x=0 \
+ --with-ssl=0 \
+ --with-batch=1  \
+ --with-shared-libraries=1 \
+ --download-metis=1 \
+ --download-parmetis=1 \
+ --download-scalapack=1 \
+ --download-fblaslapack=1 \
+ --download-mumps=1 
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#!/bin/bash
+#$ -N PETSC
+#$ -q free*,pub64
+
+cd $(echo $ISSM_DIR)/externalpackages/petsc/src/
+mpiexec -np 1 ./conftest-arch-linux2-c-opt
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== qsub script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-linux64-static.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-linux64-static.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-linux64-static.sh	(revision 21239)
@@ -0,0 +1,35 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.5.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.5.3.tar.gz' 'petsc-3.5.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.5.3.tar.gz
+mv petsc-3.5.3/* src/
+rm -rf petsc-3.5.3
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-mpi-dir="$ISSM_DIR/externalpackages/mpich/install" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-shared-libraries=0 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-scalapack=1 \
+	--download-fblaslapack=1 
+
+#Compile and intall
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-linux64.sh	(revision 21239)
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.5.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.5.3.tar.gz' 'petsc-3.5.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.5.3.tar.gz
+mv petsc-3.5.3/* src/
+rm -rf petsc-3.5.3
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-mpi-dir="$ISSM_DIR/externalpackages/mpich/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-scalapack=1 \
+	--download-fblaslapack=1 \
+	--with-pic=1
+
+#Compile and intall
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-macosx64-static.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-macosx64-static.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-macosx64-static.sh	(revision 21239)
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.5.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.5.3.tar.gz' 'petsc-3.5.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.5.3.tar.gz
+mv petsc-3.5.3/* src/
+rm -rf petsc-3.5.3
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-mpi-dir="$ISSM_DIR/externalpackages/mpich/install" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-ssl=0 \
+	--with-x=0 \
+	--with-shared-libraries=0 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-fblaslapack=1 \
+	--download-scalapack=1
+
+
+#Compile and intall
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-macosx64.sh	(revision 21239)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.5.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.5.3.tar.gz' 'petsc-3.5.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.5.3.tar.gz
+mv petsc-3.5.3/* src/
+rm -rf petsc-3.5.3
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-mpi-dir="$ISSM_DIR/externalpackages/mpich/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-scalapack=1
+
+#Compile and intall
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-pleiades-intel2012.0.032-mpt.2.06rp16.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-pleiades-intel2012.0.032-mpt.2.06rp16.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-pleiades-intel2012.0.032-mpt.2.06rp16.sh	(revision 21239)
@@ -0,0 +1,62 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.5.1 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.5.1.tar.gz' 'petsc-3.5.1.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.5.1.tar.gz
+mv petsc-3.5.1/* src/
+rm -rf petsc-3.5.1
+
+#configure
+cd src
+./config/configure.py \
+  --prefix="$ISSM_DIR/externalpackages/petsc/install" \
+  --PETSC_ARCH="$ISSM_ARCH" \
+  --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+  --with-batch=1  \
+  --with-debugging=0 \
+  --with-shared-libraries=1 \
+  --known-mpi-shared-libraries=1 \
+  --with-mpi=1 \
+  --with-mpi-lib="/nasa/sgi/mpt/2.06rp16/lib/libmpi.so" \
+  --with-mpi-include="/nasa/sgi/mpt/2.06rp16/include" \
+  --with-blas-lapack-dir="/nasa/intel/Compiler/2012.0.032/composer_xe_2011_sp1/mkl/lib/intel64" \
+  --download-scalapack=yes \
+  --download-mumps=yes \
+  --download-metis=yes \
+  --download-parmetis=yes \
+  --download-trilinos=yes \
+  --download-euclid=yes \
+  --download-hypre=yes \
+  --COPTFLAGS="-lmpi -O3" \
+  --FOPTFLAGS="-lmpi -O3" \
+  --CXXOPTFLAGS="-lmpi -O3"
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#PBS -S /bin/bash
+#PBS -l select=1:ncpus=1:model=wes 
+#PBS -l walltime=200 
+#PBS -W group_list=s1010
+#PBS -m e 
+
+. /usr/share/modules/init/bash 
+module load comp-intel/2012.0.032
+module load math/intel_mkl_64_10.0.011
+module load mpi-sgi/mpt.2.06rp16
+
+export PATH="$PATH:." 
+export MPI_GROUP_MAX=64 
+mpiexec -np 1 ./conftest-linux-gnu-ia64-intel.py
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== qsub -q devel script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-pleiades.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-pleiades.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-pleiades.sh	(revision 21239)
@@ -0,0 +1,57 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.5.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.5.3.tar.gz' 'petsc-3.5.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.5.3.tar.gz
+mv petsc-3.5.3/* src/
+rm -rf petsc-3.5.3
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-blas-lapack-dir="/nasa/intel/Compiler/2015.0.090/composer_xe_2015.0.090/mkl/" \
+	--with-mpi-lib="/nasa/sgi/mpt/2.11r13/lib/libmpi.so" \
+	--with-mpi-include="/nasa/sgi/mpt/2.11r13/include" \
+	--known-mpi-shared-libraries=1 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-batch=1  \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-scalapack=1 \
+	--download-fblaslapack=1
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#PBS -S /bin/bash
+#PBS -l select=1:ncpus=1:model=wes 
+#PBS -l walltime=200 
+#PBS -W group_list=s1010
+#PBS -m e 
+
+. /usr/share/modules/init/bash 
+module load comp-intel/2015.0.090
+module load mpi-sgi/mpt.2.11r13
+
+export PATH="$PATH:." 
+export MPI_GROUP_MAX=64 
+mpiexec -np 1 ./conftest-arch-linux2-c-opt
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== qsub -q devel script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-win-par.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-win-par.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-win-par.sh	(revision 21239)
@@ -0,0 +1,40 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.5.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.5.3.tar.gz' 'petsc-3.5.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.5.3.tar.gz
+mv petsc-3.5.3/* src/
+rm -rf petsc-3.5.3
+
+export PETSC_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/src"`
+export PREFIX_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/install"`
+
+#configure
+cd src
+./config/configure.py  \
+	--prefix=$PREFIX_DIR \
+	--PETSC_ARCH=cygwin-intel \
+	--PETSC_DIR=$PETSC_DIR \
+	--with-mpi-dir="/cygdrive/c/Program\ Files/MPICH2/"\
+	--with-debugging=1 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--download-f2cblaslapack=yes \
+	--with-cc='win32fe cl' \
+	--with-fc=0 \
+	--with-cxx='win32fe cl' \
+	--with-clanguage=cxx 
+
+#Compile petsc and install it
+make
+make install
+
+patch ../install/include/petscfix.h ../configs/3.1/win7/petscfix.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-win7.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-win7.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.5-win7.sh	(revision 21239)
@@ -0,0 +1,41 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.5.3 src
+mkdir install src
+
+#Download from ISSM server
+#$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.5.3.tar.gz' 'petsc-3.5.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.5.3.tar.gz
+mv petsc-3.5.3/* src/
+rm -rf petsc-3.5.3
+
+export PETSC_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/src"`
+export PREFIX_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/install"`
+
+#configure
+cd src
+./config/configure.py  \
+	--with-parallel-no \
+	--prefix=$PREFIX_DIR \
+	--PETSC_ARCH=cygwin-intel \
+	--PETSC_DIR=$PETSC_DIR \
+	--with-mpi=0 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--download-f2cblaslapack=yes \
+	--with-cc='win32fe cl' \
+	--with-fc=0 \
+	--with-cxx='win32fe cl' \
+	--with-clanguage=cxx 
+
+#Compile petsc and install it
+make
+make install
+
+patch ../install/include/petscfix.h ../configs/3.1/win7/petscfix.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-discover.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-discover.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-discover.sh	(revision 21239)
@@ -0,0 +1,62 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.6.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.6.3.tar.gz' 'petsc-3.6.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.6.3.tar.gz
+mv petsc-3.6.3/* src/
+rm -rf petsc-3.6.3
+
+#--with-cc=icc --with-cxx=icpc --with-fc=ifort --with-f77=ifort \
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-blas-lapack-dir="/usr/local/intel/Composer/composer_xe_2015.0.090/mkl/" \
+	--with-mpi-lib="/usr/local/intel/mpi/4.0.3.008/lib64/libmpi.so" \
+	--with-mpi-include="/usr/local/intel/mpi/4.0.3.008/intel64/include/" \
+	--known-mpi-shared-libraries=1 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-batch=1  \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-scalapack=1 
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#!/bin/bash
+#SBATCH -J petscinstall # Job Name
+#SBATCH -N 1
+#SBATCH -n 1
+#SBATCH -A s1010
+#SBATCH -t 00:01:00 # Run time (hh:mm:ss) - 1.5 hours
+#SBATCH --qos=debug
+#SBATCH -o petscinstall.outlog
+#SBATCH -e petscinstall.errlog
+
+. /usr/share/modules/init/bash
+module load comp/intel-15.0.0.090
+module load mpi/impi-4.0.3.008
+
+export PATH="$PATH:."
+export MPI_GROUP_MAX=64
+mpirun -np 1 ./conftest-arch-linux2-c-opt
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== sbatch script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-linux64-static.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-linux64-static.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-linux64-static.sh	(revision 21239)
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.6.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.6.3.tar.gz' 'petsc-3.6.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.6.3.tar.gz
+mv petsc-3.6.3/* src/
+rm -rf petsc-3.6.3
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-mpi-dir="$ISSM_DIR/externalpackages/mpich/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-shared-libraries=0 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-fblaslapack=1 \
+	--download-scalapack=1 \
+	--with-pic=1
+
+#Compile and intall
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-linux64.sh	(revision 21239)
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.6.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.6.3.tar.gz' 'petsc-3.6.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.6.3.tar.gz
+mv petsc-3.6.3/* src/
+rm -rf petsc-3.6.3
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-mpi-dir="$ISSM_DIR/externalpackages/mpich/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-scalapack=1 \
+	--download-fblaslapack=1 \
+	--with-pic=1
+
+#Compile and intall
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-lonestar.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-lonestar.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-lonestar.sh	(revision 21239)
@@ -0,0 +1,52 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.6.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.6.3.tar.gz' 'petsc-3.6.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.6.3.tar.gz
+mv petsc-3.6.3/* src/
+rm -rf petsc-3.6.3
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-blas-lapack-dir="$TACC_MKL_LIB" \
+	--with-mpi-lib="/opt/cray/mpt/default/gni/mpich-intel/14.0/lib/libmpich.so" \
+	--with-mpi-include="/opt/cray/mpt/default/gni/mpich-intel/14.0/include" \
+	--known-mpi-shared-libraries=1 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-batch=1  \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-scalapack=1 
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#!/bin/bash		 
+#SBATCH -J petscinstall # Job Name
+#SBATCH -n 12 # Requests 12 tasks/node, 12 cores total
+#SBATCH -N 1 # Requests 12 tasks/node, 12 cores total
+#SBATCH -p normal # Queue name normal
+#SBATCH -t 00:01:00 # Run time (hh:mm:ss) - 1.5 hours
+set -x # Echo commands, use set echo with csh
+
+ibrun -np 1 ./conftest-arch-linux2-c-opt
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== sbatch script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-macosx64-static.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-macosx64-static.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-macosx64-static.sh	(revision 21239)
@@ -0,0 +1,35 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.6.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.6.3.tar.gz' 'petsc-3.6.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.6.3.tar.gz
+mv petsc-3.6.3/* src/
+rm -rf petsc-3.6.3
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-mpi-dir="$ISSM_DIR/externalpackages/mpich/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-shared-libraries=0 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-fblaslapack=1 \
+	--download-scalapack=1
+
+#Compile and intall
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-macosx64.sh	(revision 21239)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.6.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.6.3.tar.gz' 'petsc-3.6.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.6.3.tar.gz
+mv petsc-3.6.3/* src/
+rm -rf petsc-3.6.3
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-mpi-dir="$ISSM_DIR/externalpackages/mpich/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-scalapack=1
+
+#Compile and intall
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-pleiades.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-pleiades.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-pleiades.sh	(revision 21239)
@@ -0,0 +1,57 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.6.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.6.3.tar.gz' 'petsc-3.6.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.6.3.tar.gz
+mv petsc-3.6.3/* src/
+rm -rf petsc-3.6.3
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-cc=icc --with-cxx=icpc --with-fc=ifort --with-f77=ifort \
+	--with-blas-lapack-dir="/nasa/intel/Compiler/2015.0.090/composer_xe_2015.0.090/mkl/" \
+	--with-mpi-lib="/nasa/sgi/mpt/2.12r16/lib/libmpi.so" \
+	--with-mpi-include="/nasa/sgi/mpt/2.12r16/include" \
+	--known-mpi-shared-libraries=1 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-batch=1  \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-scalapack=1 
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#PBS -S /bin/bash
+#PBS -l select=1:ncpus=1:model=wes 
+#PBS -l walltime=200 
+#PBS -W group_list=s1010
+#PBS -m e 
+
+. /usr/share/modules/init/bash 
+module load comp-intel/2015.0.090
+module load mpi-sgi/mpt.2.12r16
+
+export PATH="$PATH:." 
+export MPI_GROUP_MAX=64 
+mpiexec -np 1 ./conftest-arch-linux2-c-opt
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== qsub -q devel script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-win10.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-win10.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.6-win10.sh	(revision 21239)
@@ -0,0 +1,41 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.6.2 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.6.2.tar.gz' 'petsc-3.6.2.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.6.2.tar.gz
+mv petsc-3.6.2/* src/
+rm -rf petsc-3.6.2
+
+export PETSC_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/src"`
+export PREFIX_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/install"`
+
+#configure
+cd src
+./config/configure.py  \
+	--with-parallel-no \
+	--prefix=$PREFIX_DIR \
+	--PETSC_ARCH=cygwin-intel \
+	--PETSC_DIR=$PETSC_DIR \
+	--with-mpi=0 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--download-f2cblaslapack=yes \
+	--with-cc='win32fe cl' \
+	--with-fc=0 \
+	--with-cxx='win32fe cl' \
+	--with-clanguage=cxx 
+
+#Compile petsc and install it
+make
+make install
+
+patch ../install/include/petscfix.h ../configs/3.1/win7/petscfix.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.7-greenplanet.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.7-greenplanet.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.7-greenplanet.sh	(revision 21239)
@@ -0,0 +1,56 @@
+#!/bin/bash
+set -eu
+
+#WARNING: make sure you have the right mpi
+
+#Some cleanup
+rm -rf install petsc-3.7.2 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.7.2.tar.gz' 'petsc-3.7.2.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.7.2.tar.gz
+mv petsc-3.7.2/* src/
+rm -rf petsc-3.7.2
+
+#configure
+cd src
+./config/configure.py \
+ --prefix="$ISSM_DIR/externalpackages/petsc/install" \
+ --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+ --with-blas-lapack-dir="/sopt/Intel/compilers_and_libraries_2016.2.181/linux/mkl/" \
+ --with-mpi-dir="/sopt/mpi/openmpi-1.10.2/intel_16.0.2/" \
+ --known-mpi-shared-libraries=1 \
+ --with-debugging=0 \
+ --with-valgrind=0 \
+ --with-x=0 \
+ --with-ssl=0 \
+ --with-batch=1  \
+ --with-shared-libraries=1 \
+ --download-metis=1 \
+ --download-parmetis=1 \
+ --download-scalapack=1 \
+ --download-mumps=1 
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#!/bin/bash
+#SBATCH -p c6145
+#SBATCH -N 1 -n 1
+#SBATCH --mem-per-cpu=1gb
+#SBATCH --time=10
+#SBATCH --job-name=test
+
+module load compiler/intel/16.0.2
+module load mpi/openmpi/1.10.2/intel_16.0.2
+
+cd $(echo $ISSM_DIR)/externalpackages/petsc/src/
+mpiexec -np 1 ./conftest-arch-linux2-c-opt
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== sbatch script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.7-hpc.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.7-hpc.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.7-hpc.sh	(revision 21239)
@@ -0,0 +1,50 @@
+#!/bin/bash
+set -eu
+
+#WARNING: make sure you have the right mpi:
+
+#Some cleanup
+rm -rf install petsc-3.7.2 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.7.2.tar.gz' 'petsc-3.7.2.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.7.2.tar.gz
+mv petsc-3.7.2/* src/
+rm -rf petsc-3.7.2
+
+#configure
+cd src
+./config/configure.py \
+ --prefix="$ISSM_DIR/externalpackages/petsc/install" \
+ --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+ --with-mpi-dir="/data/apps/mpi/openmpi-1.8.3/gcc/4.8.3/" \
+ --known-mpi-shared-libraries=1 \
+ --with-debugging=0 \
+ --with-valgrind=0 \
+ --with-x=0 \
+ --with-ssl=0 \
+ --with-batch=1  \
+ --with-shared-libraries=1 \
+ --download-metis=1 \
+ --download-parmetis=1 \
+ --download-scalapack=1 \
+ --download-fblaslapack=1 \
+ --download-mumps=1 
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#!/bin/bash
+#$ -N PETSC
+#$ -q free*,pub64
+
+cd $(echo $ISSM_DIR)/externalpackages/petsc/src/
+mpiexec -np 1 ./conftest-arch-linux2-c-opt
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== qsub script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.7-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.7-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.7-linux64.sh	(revision 21239)
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.7.2 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.7.2.tar.gz' 'petsc-3.7.2.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.7.2.tar.gz
+mv petsc-3.7.2/* src/
+rm -rf petsc-3.7.2
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-mpi-dir="$ISSM_DIR/externalpackages/mpich/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-scalapack=1 \
+	--download-fblaslapack=1 \
+	--with-pic=1
+
+#Compile and intall
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.7-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.7-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.7-macosx64.sh	(revision 21239)
@@ -0,0 +1,37 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.7.2 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.7.2.tar.gz' 'petsc-3.7.2.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.7.2.tar.gz
+mv petsc-3.7.2/* src/
+rm -rf petsc-3.7.2
+
+#configure
+cd src
+./config/configure.py \
+	--CXXOPTFLAGS="-g -O3" \
+	--COPTFLAGS="-g -O3" \
+	--FOPTFLAGS="-g -O3" \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-mpi-dir="$ISSM_DIR/externalpackages/mpich/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-scalapack=1
+
+#Compile and intall
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.7-pleiades.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.7-pleiades.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-3.7-pleiades.sh	(revision 21239)
@@ -0,0 +1,66 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.7.2 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.7.2.tar.gz' 'petsc-3.7.2.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.7.2.tar.gz
+mv petsc-3.7.2/* src/
+rm -rf petsc-3.7.2
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-cc=icc --with-cxx=icpc --with-fc=ifort --with-f77=ifort \
+	--with-blas-lapack-dir="/nasa/intel/Compiler/2015.0.090/composer_xe_2015.0.090/mkl/" \
+	--with-mpi-lib="/nasa/sgi/mpt/2.12r16/lib/libmpi.so" \
+	--with-mpi-include="/nasa/sgi/mpt/2.12r16/include" \
+	--known-mpi-shared-libraries=1 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-batch=1  \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-scalapack=1 \
+	--download-ml=1 \
+	--download-pastix=1 \
+	--download-ptscotch=1 \
+	--download-hypre=1 \
+	--download-euclid=1 \
+	--download-spooles=1 \
+	--download-spai=1 \
+	--download-superlu_dist=1 \
+	--download-scalapack=1 
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#PBS -S /bin/bash
+#PBS -l select=1:ncpus=1:model=bro
+#PBS -l walltime=200 
+#PBS -W group_list=s1690
+#PBS -m e 
+
+. /usr/share/modules/init/bash 
+module load comp-intel/2015.0.090
+module load mpi-sgi/mpt.2.12r16
+
+export PATH="$PATH:." 
+export MPI_GROUP_MAX=64 
+mpiexec -np 1 ./conftest-arch-linux2-c-opt
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== qsub -q devel script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-dev-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-dev-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-dev-linux64.sh	(revision 21239)
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+STEP=1
+
+if [ $STEP -eq 1 ]; then
+	# Used Mercurial to get code
+	rm -rf src
+	hg clone http://petsc.cs.iit.edu/petsc/petsc-dev src
+	cd src
+	hg clone http://petsc.cs.iit.edu/petsc/BuildSystem config/BuildSystem
+fi
+
+# To update (via Mercurial):
+#      cd petsc-dev
+#      hg pull -u
+#      cd config/BuildSystem
+#      hg pull -u
+
+# configure script
+# Note: 
+#  Metis: -using metis from externalpackages did not work...
+#         -for now download new metis
+#         -rename metis in externalpackages to metis2
+#
+# SuperLU: -If download-..-=yes does not work try downloading from
+#    --download-superlu=http://crd.lbl.gov/~xiaoye/SuperLU/superlu_4.3.tar.gz \
+
+
+if [ $STEP -eq 2 ]; then
+	rm -rf install
+	cd src
+	./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-mpi-dir="$ISSM_DIR/externalpackages/mpich/install" \
+	--with-clanguage=C++ \
+	--PETSC_ARCH=linux-gnu-amd64 \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-debugging=0 \
+	--with-shared-libraries=1 \
+	--download-mumps=yes \
+	--download-scalapack=yes \
+	--download-blacs=yes  \
+	--download-blas=yes \
+	--download-f-blas-lapack=yes \
+	--download-parmetis=yes \
+	--download-metis=yes \
+	--download-trilinos=yes \
+	--download-euclid=yes \
+	--download-spooles=yes \
+	--download-spai=yes \
+	--download-superlu=http://crd.lbl.gov/~xiaoye/SuperLU/superlu_4.3.tar.gz \
+	--download-hypre=yes \
+	--download-c2html=yes
+#	--with-pic=1
+
+	#Compile petsc and install it
+	make
+	make install
+fi
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-dev-pleiades.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-dev-pleiades.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-dev-pleiades.sh	(revision 21239)
@@ -0,0 +1,78 @@
+#!/bin/bash
+#Step 0: download
+#Step 1: install and write script
+STEP=1
+
+if [ $STEP -eq 0 ]; then
+	# Adapted from petsc 3.2. 
+	# Used Mercurial to get code
+	rm -rf src
+	hg clone http://petsc.cs.iit.edu/petsc/petsc-dev src
+	cd src
+	hg clone http://petsc.cs.iit.edu/petsc/BuildSystem config/BuildSystem
+fi
+
+# To update (via Mercurial):
+#      cd petsc-dev
+#      hg pull -u
+#      cd config/BuildSystem
+#      hg pull -u
+
+# configure script
+# Note: using metis from externalpackages did not work...
+# for now downloading new metis
+#   -then rename metis in externalpackages to metis2
+#
+#		--download-prometheus=yes \
+#--download-superlu=http://crd.lbl.gov/~xiaoye/SuperLU/superlu_4.3.tar.gz \
+#		--download-plapack=yes \
+
+if [ $STEP -eq 1 ]; then
+
+	#configure
+	cd src
+	./config/configure.py \
+		--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+		--with-batch=1  \
+		--PETSC_ARCH="$ISSM_ARCH" \
+		--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+		--with-debugging=0 \
+		--with-shared-libraries=1 \
+		--with-blas-lapack-dir=/nasa/intel/mkl/10.0.011/ \
+		--known-mpi-shared-libraries=1 \
+		--with-mpi=1 \
+		--download-mumps=yes \
+		--download-scalapack=yes \
+		--download-blacs=yes  \
+		--download-blas=yes \
+		--download-f-blas-lapack=yes \
+		--download-parmetis=yes \
+		--download-metis=yes \
+		--download-trilinos=yes \
+		--download-euclid=yes \
+		--download-spai=yes \
+		--download-superlu=http://crd.lbl.gov/~xiaoye/SuperLU/superlu_4.3.tar.gz \
+		--download-hypre=yes \
+		--with-cxx=/nasa/sgi/mpt/2.06a67/bin/mpicxx \
+		--with-fc=/nasa/sgi/mpt/2.06a67/bin/mpif90 \
+		--COPTFLAGS="-lmpi -O3" \
+		--FOPTFLAGS="-lmpi -O3" \
+		--CXXOPTFLAGS="-lmpi -O3" 
+		cat > script.queue << EOF
+#PBS -S /bin/bash
+#PBS -l select=1:ncpus=1:model=wes 
+#PBS -l walltime=200 
+#PBS -W group_list=s1010 
+#PBS -m e 
+. /usr/share/modules/init/bash 
+module load comp-intel/2012.0.032 
+module load mpi-sgi/mpt.2.06a67  
+module load math/intel_mkl_64_10.0.011 
+export PATH="$PATH:." 
+export MPI_GROUP_MAX=64 
+mpiexec -np 1 ./conftest-linux-gnu-ia64-intel.py
+EOF
+	echo "== Now: cd src/ "
+	echo "== qsub -q devel script.queue "
+	echo "== Then run reconfigure script generated by PETSc and follow instructions"
+fi
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-dev-win10-par.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-dev-win10-par.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-dev-win10-par.sh	(revision 21239)
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+STEP=1
+
+rm -rf src
+
+if [ $STEP -eq 1 ]; then
+	git clone -b maint https://bitbucket.org/petsc/petsc src
+fi
+
+export PETSC_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/src"`
+export PREFIX_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/install"`
+
+#configure
+cd src
+./config/configure.py  \
+	--prefix=$PREFIX_DIR \
+	--PETSC_ARCH=cygwin-intel \
+	--PETSC_DIR=$PETSC_DIR \
+	--with-mpi-dir="/cygdrive/c/Programs/MPICH2/"\
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--download-f2cblaslapack=yes \
+	--with-cc='win32fe cl' \
+	--with-fc=0 \
+	--with-cxx='win32fe cl' \
+	--with-clanguage=cxx 
+
+#Compile petsc and install it
+make
+make install
+
+patch ../install/include/petscfix.h ../configs/3.1/win7/petscfix.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-dev-win10.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-dev-win10.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/petsc/install-dev-win10.sh	(revision 21239)
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+STEP=1
+
+if [ $STEP -eq 1 ]; then
+	git clone -b maint https://bitbucket.org/petsc/petsc src
+fi
+
+export PETSC_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/src"`
+export PREFIX_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/install"`
+
+#configure
+cd src
+./config/configure.py  \
+	--with-parallel-no \
+	--prefix=$PREFIX_DIR \
+	--PETSC_ARCH=cygwin-intel \
+	--PETSC_DIR=$PETSC_DIR \
+	--with-mpi=0 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--download-f2cblaslapack=yes \
+	--with-cc='win32fe cl' \
+	--with-fc=0 \
+	--with-cxx='win32fe cl' \
+	--with-clanguage=cxx 
+
+#Compile petsc and install it
+make
+make install
+
+patch ../install/include/petscfix.h ../configs/3.1/win7/petscfix.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/polygonclipper/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/polygonclipper/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/polygonclipper/install.sh	(revision 21239)
@@ -0,0 +1,19 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/PolygonClipper.zip' 'PolygonClipper.zip'
+
+#install
+mkdir install
+cd install
+cp ../PolygonClipper.zip .
+
+#uncompress
+unzip PolygonClipper.zip
+
+#Make
+mex gpc.c gpc_mexfile.c -O -output PolygonClip
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/proj.4/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/proj.4/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/proj.4/install.sh	(revision 21239)
@@ -0,0 +1,15 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+
+#Download trunk
+svn checkout http://svn.osgeo.org/metacrs/proj/trunk/proj install
+
+#compile
+cd install
+./configure --prefix="$ISSM_DIR/externalpackages/proj.4/install"
+make 
+make install
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/pyclips/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/pyclips/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/pyclips/install.sh	(revision 21239)
@@ -0,0 +1,22 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+rm -rf pyclips-1.0.7.348
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/pyclips-1.0.7.348.tar.gz' 'pyclips-1.0.7.348.tar.gz'
+
+#Untar 
+tar -zxvf  pyclips-1.0.7.348.tar.gz
+
+#Move pyclips into install directory
+mv pyclips/* install
+rm -rf pyclips
+
+#install
+cd install
+python setup.py build
+sudo python setup.py install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/pysvn/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/pysvn/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/pysvn/install.sh	(revision 21239)
@@ -0,0 +1,26 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf pysvn-1.7.6
+mkdir src 
+
+export CC=/usr/local/gfortran/bin/gcc
+export CXX=/usr/local/gfortran/bin/g++
+export FFLAGS=-ff2c
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/pysvn-1.7.6.tar.gz' 'pysvn-1.7.6.tar.gz'
+
+#Untar 
+tar -zxvf  pysvn-1.7.6.tar.gz
+
+#Move pysvn into src directory
+mv pysvn-1.7.6/* src
+rm -rf pysvn-1.7.6
+
+$install
+cd src
+python setup.py build
+python setup.py install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-2.7.3-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-2.7.3-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-2.7.3-linux64.sh	(revision 21239)
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+rm -rf Python-2.7.3
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py http://issm.jpl.nasa.gov/files/externalpackages/Python-2.7.3.tgz Python-2.7.3.tgz
+
+#Untar and move python into install directory
+tar -zxvf  Python-2.7.3.tgz
+mv Python-2.7.3/* src
+rm -rf Python-2.7.3
+
+#Configure python
+cd src 
+./configure \
+ --prefix="$ISSM_DIR/externalpackages/python/install" \
+ --enable-shared
+
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
+
+cd ../install/include
+cp python2.7/* ./
+cd ../lib
+ln -s  libpython2.7.so.1.0 libpython.so
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-2.7.3-macosx-lion.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-2.7.3-macosx-lion.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-2.7.3-macosx-lion.sh	(revision 21239)
@@ -0,0 +1,40 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+rm -rf Python-2.7.3
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py http://issm.jpl.nasa.gov/files/externalpackages/Python-2.7.3.tgz Python-2.7.3.tgz
+
+#Untar and move python into install directory
+tar -zxvf  Python-2.7.3.tgz
+mv Python-2.7.3/* src
+rm -rf Python-2.7.3
+
+#Configure and compile
+cd src 
+./configure \
+ --enable-framework="$ISSM_DIR/externalpackages/python/install/Library/Frameworks" 
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
+
+cd ../install
+
+#get rid of bin, because it's just a copy of
+#Library/Frameworks/Python.framework/Versions/2.7/bin, and will not reflect
+#new changes being made
+rm -rf bin
+ln -s Library/Frameworks/Python.framework/Headers include
+ln -s Library/Frameworks/Python.framework/Versions/2.7/lib lib
+ln -s Library/Frameworks/Python.framework/Versions/2.7/bin bin
+
+#Patch pyport.h:
+cd include
+patch pyport.h $ISSM_DIR/externalpackages/python/patches/pyport.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-2.7.3-macosx-mlion.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-2.7.3-macosx-mlion.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-2.7.3-macosx-mlion.sh	(revision 21239)
@@ -0,0 +1,40 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+rm -rf Python-2.7.3
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py http://issm.jpl.nasa.gov/files/externalpackages/Python-2.7.3.tgz Python-2.7.3.tgz
+
+#Untar and move python into install directory
+tar -zxvf  Python-2.7.3.tgz
+mv Python-2.7.3/* src
+rm -rf Python-2.7.3
+
+#Configure and compile
+cd src 
+./configure \
+ --enable-framework="$ISSM_DIR/externalpackages/python/install/Library/Frameworks" 
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
+
+cd ../install
+
+#get rid of bin, because it's just a copy of
+#Library/Frameworks/Python.framework/Versions/2.7/bin, and will not reflect
+#new changes being made
+rm -rf bin
+ln -s Library/Frameworks/Python.framework/Headers include
+ln -s Library/Frameworks/Python.framework/Versions/2.7/lib lib
+ln -s Library/Frameworks/Python.framework/Versions/2.7/bin bin
+
+#Patch pyport.h:
+cd include
+patch pyport.h $ISSM_DIR/externalpackages/python/patches/pyport.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-2.7.3-macosx-snowleopard.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-2.7.3-macosx-snowleopard.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-2.7.3-macosx-snowleopard.sh	(revision 21239)
@@ -0,0 +1,41 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+rm -rf Python-2.7.3
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py http://issm.jpl.nasa.gov/files/externalpackages/Python-2.7.3.tgz Python-2.7.3.tgz
+
+#exports
+export MACOSX_DEPLOYMENT_TARGET=10.6
+
+#Untar and move python into install directory
+tar -zxvf  Python-2.7.3.tgz
+mv Python-2.7.3/* src
+rm -rf Python-2.7.3
+
+#Configure doxygen
+cd src 
+# --enable-framework needs to have the form "$SOME_PATH/Library/Frameworks" to avoid installing components in /Applications directory
+# --prefix is recognized as $SOME_PATH as long as this form is taken, so it's not necessary to include
+./configure --enable-framework="$ISSM_DIR/externalpackages/python/install/Library/Frameworks" \
+	LDFLAGS="-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin10/4.6.2/ -lgfortran "
+
+#make
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
+
+cd ../install
+ln -s Library/Frameworks/Python.framework/Headers include
+ln -s Library/Frameworks/Python.framework/Versions/2.7/lib lib
+
+#Patch pyport.h:
+cd include
+patch pyport.h $ISSM_DIR/externalpackages/python/patches/pyport.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-3.2.2-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-3.2.2-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-3.2.2-linux64.sh	(revision 21239)
@@ -0,0 +1,37 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+rm -rf Python-3.2.2
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py http://issm.jpl.nasa.gov/files/externalpackages/Python-3.2.2.tgz Python-3.2.2.tgz
+
+#exports
+export CC
+
+#Untar and move python into install directory
+tar -zxvf  Python-3.2.2.tgz
+mv Python-3.2.2/* src
+rm -rf Python-3.2.2
+
+#Configure python
+cd src 
+./configure \
+ --prefix="$ISSM_DIR/externalpackages/python/install" \
+ --enable-shared
+
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
+
+cd ../install/bin
+ln -s python3.2 python 
+cd ../
+ln -s Python.framework/Versions/3.2/include/python3.2m include
+ln -s Python.framework/Versions/3.2/lib/ lib
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-3.2.2-macosx-lion.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-3.2.2-macosx-lion.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-3.2.2-macosx-lion.sh	(revision 21239)
@@ -0,0 +1,40 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+rm -rf Python-3.2.2
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py http://issm.jpl.nasa.gov/files/externalpackages/Python-3.2.2.tgz Python-3.2.2.tgz
+
+#exports
+export CC
+
+#Untar and move python into install directory
+tar -zxvf  Python-3.2.2.tgz
+mv Python-3.2.2/* src
+rm -rf Python-3.2.2
+
+#Configure doxygen
+cd src 
+./configure \
+ --enable-framework="$ISSM_DIR/externalpackages/python/install/Library/Frameworks" 
+
+#obsolete? 
+#./configure --prefix="$ISSM_DIR/externalpackages/python/install" --enable-framework="$ISSM_DIR/externalpackages/python/install"
+
+#make
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
+
+cd install/bin
+ln -s python3.2 python 
+cd ../
+ln -s Python.framework/Versions/3.2/include/python3.2m include
+ln -s Python.framework/Versions/3.2/lib/ lib
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-3.2.2-macosx-snowleopard.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-3.2.2-macosx-snowleopard.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/install-3.2.2-macosx-snowleopard.sh	(revision 21239)
@@ -0,0 +1,41 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+rm -rf Python-3.2.2
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py http://issm.jpl.nasa.gov/files/externalpackages/Python-3.2.2.tgz Python-3.2.2.tgz
+
+#exports
+export CC
+export MACOSX_DEPLOYMENT_TARGET=10.6
+
+#Untar and move python into install directory
+tar -zxvf  Python-3.2.2.tgz
+mv Python-3.2.2/* src
+rm -rf Python-3.2.2
+
+#Configure doxygen
+cd src 
+# --enable-framework needs to have the form "$SOME_PATH/Library/Frameworks" to avoid installing components in /Applications directory
+# --prefix is recognized as $SOME_PATH as long as this form is taken, so it's not necessary to include
+./configure \
+ --enable-framework="$ISSM_DIR/externalpackages/python/install/Library/Frameworks" 
+
+#make
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
+cd ..
+
+cd install/bin
+ln -s python3.2 python 
+cd ../
+ln -s Python.framework/Versions/3.2/include/python3.2m include
+ln -s Python.framework/Versions/3.2/lib/ lib
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/patches/pyport.h.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/patches/pyport.h.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/patches/pyport.h.patch	(revision 21239)
@@ -0,0 +1,22 @@
+680a681
+> #ifdef isalnum
+682a684,685
+> #endif
+> #ifdef isalpha
+684a688,689
+> #endif
+> #ifdef islower
+686a692,693
+> #endif
+> #ifdef isspace
+688a696,697
+> #endif
+> #ifdef isupper
+690a700,701
+> #endif
+> #ifdef tolower
+692a704,705
+> #endif
+> #ifdef toupper
+695a709
+> #endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/patches/pyport.h.patch.bugreport
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/patches/pyport.h.patch.bugreport	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/python/patches/pyport.h.patch.bugreport	(revision 21239)
@@ -0,0 +1,1 @@
+http://bugs.python.org/issue10910
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/qhull/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/qhull/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/qhull/install.sh	(revision 21239)
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install qhull-2003.1
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/qhull-2003.1.tar.gz' 'qhull-2003.1.tar.gz'
+
+#Untar 
+tar -zxvf  qhull-2003.1.tar.gz
+
+#Move qhull to src directory
+rm -rf src/*
+mv qhull-2003.1/* src/
+rm -rf qhull-2003.1
+
+#Configure qhull
+cd src
+./configure --prefix="$ISSM_DIR/externalpackages/qhull/install"
+make
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/rats/README
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/rats/README	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/rats/README	(revision 21239)
@@ -0,0 +1,3 @@
+Rought Auditing Tools for Software
+Obtained code from https://www.fortify.com/ssa-elements/threat-intelligence/rats.html
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/rats/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/rats/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/rats/install.sh	(revision 21239)
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -eu
+
+#Erase install
+rm -rf install  src rats-2.3
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/rats-2.3.tar.gz' 'rats-2.3.tar.gz'
+
+#install directory
+mkdir src
+tar -zxvf rats-2.3.tar.gz 
+mv rats-2.3/* src
+rm -rf rats-2.3
+
+#compile
+cd src
+./configure --prefix=$ISSM_DIR/externalpackages/rats/install
+make
+make install
+cd ..
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/readline/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/readline/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/readline/install.sh	(revision 21239)
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf readline-6.2.2
+mkdir src 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/readline-6.2.2.tar.gz' 'readline-6.2.2.tar.gz'
+
+#Untar 
+tar -zxvf  readline-6.2.2.tar.gz
+
+#Move readline into src directory
+mv readline-6.2.2/* src
+rm -rf readline-6.2.2
+
+#install
+cd src
+python setup.py install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/rose/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/rose/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/rose/install.sh	(revision 21239)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf source build install
+mkdir install source build
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/rose-0.9.5a-13219.tar.gz' 'rose-0.9.5a-13219.tar.gz'
+
+#Untar 
+tar -zxvf  rose-0.9.5a-13219.tar.gz
+
+#Move rose into install directory
+mv rose-0.9.5a-13219/* source
+rm -rf rose-0.9.5a-13219
+
+#Configure
+cd build
+../source/configure \
+	--prefix=$ISSM_DIR/externalpackages/rose/install \
+	--with-boost=$ISSM_DIR/externalpackages/boost/install\
+	--srcdir=$ISSM_DIR/externalpackages/rose/source
+
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/satstress/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/satstress/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/satstress/install.sh	(revision 21239)
@@ -0,0 +1,20 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install SatStress-0.1.2
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/SatStress-0.1.2.tar.gz' 'SatStress-0.1.2.tar.gz'
+
+#Untar 
+tar -zxvf  SatStress-0.1.2.tar.gz
+
+#Move SatStress into install directory
+mv SatStress-0.1.2/* install
+rm -rf SatStress-0.1.2
+
+#Compile SatStress
+cd install 
+make test
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scipy/README
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scipy/README	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scipy/README	(revision 21239)
@@ -0,0 +1,9 @@
+For OSX 10.7 (Lion), the instructions here can be followed:  
+http://www.scipy.org/Installing_SciPy/Mac_OS_X
+
+For OSX 10.6 (Snow Leopard), the scipy folks recommend gcc and g++ version 4.0.
+However, ISSM needs the gfortran version recommended in $ISSM_DIR/externalpackages/gfortran.
+On the webpage listed above, make sure the "export CC" and "export CXX" commands point to the 
+binaries associated with this gfortran version (likely in /usr/local/gfortran/bin by default).
+Once this gfortran is installed, the install script in this directory for Snow Leopard should
+work.
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scipy/install-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scipy/install-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scipy/install-linux64.sh	(revision 21239)
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -eu
+
+export CC="gcc -fPIC"
+export CXX="g++ -fPIC"
+export F77="gfortran -fPIC"
+export FC="gfortran -fPIC"
+export FFLAGS=-ff2c
+
+#clean up
+rm -rf scipy
+#download scipy
+export GIT_SSL_NO_VERIFY=true 
+git clone https://github.com/scipy/scipy.git
+
+#install scipy
+cd scipy
+export  BLAS_SRC=$ISSM_DIR/externalpackages/blas/install/lib
+export  BLAS=$ISSM_DIR/externalpackages/blas/install/lib
+export  LAPACK_SRC=$ISSM_DIR/externalpackages/lapack/install/lib
+export  LAPACK=$ISSM_DIR/externalpackages/lapack/install/lib
+
+python setup.py build
+python setup.py install
+cd ..
+python -c "import scipy; print 'Installed SciPy', scipy.__version__"
+#python -c "import scipy; scipy.test()"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scipy/install-macosx-lion.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scipy/install-macosx-lion.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scipy/install-macosx-lion.sh	(revision 21239)
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -eu
+
+export CC=gcc
+export CXX=g++
+export FFLAGS=-ff2c
+	
+#download scipy
+git clone https://github.com/scipy/scipy.git
+
+#install scipy
+cd scipy
+export  BLAS_SRC=$ISSM_DIR/externalpackages/blas/install/lib
+export  BLAS=$ISSM_DIR/externalpackages/blas/install/lib
+export  LAPACK_SRC=$ISSM_DIR/externalpackages/lapack/install/lib
+export  LAPACK=$ISSM_DIR/externalpackages/lapack/install/lib
+
+#install scipy
+python setup.py build
+python setup.py install
+cd ..
+python -c "import scipy; print 'Installed SciPy', scipy.__version__"
+#python -c "import scipy; scipy.test()"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scipy/install-macosx-mlion.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scipy/install-macosx-mlion.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scipy/install-macosx-mlion.sh	(revision 21239)
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -eu
+
+export CC=gcc
+export CXX=g++
+export FFLAGS=-ff2c
+	
+#download scipy
+git clone https://github.com/scipy/scipy.git
+
+#install scipy
+cd scipy
+export  BLAS_SRC=$ISSM_DIR/externalpackages/blas/install/lib
+export  BLAS=$ISSM_DIR/externalpackages/blas/install/lib
+export  LAPACK_SRC=$ISSM_DIR/externalpackages/lapack/install/lib
+export  LAPACK=$ISSM_DIR/externalpackages/lapack/install/lib
+
+#install scipy
+python setup.py build
+python setup.py install
+cd ..
+python -c "import scipy; print 'Installed SciPy', scipy.__version__"
+#python -c "import scipy; scipy.test()"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scipy/install-macosx-snowleopard.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scipy/install-macosx-snowleopard.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scipy/install-macosx-snowleopard.sh	(revision 21239)
@@ -0,0 +1,19 @@
+#!/bin/bash
+set -eu
+
+# On OSX 10.6, fgortran gets installed in /usr/local/gfortran 
+#export PATH="/usr/local/gfortran/bin/:$PATH"
+export F77="/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran"
+export CC="/usr/bin/gcc"
+export CXX="/usr/bin/g++"
+
+#download scipy
+git clone https://github.com/scipy/scipy.git
+
+#install scipy
+cd scipy
+python setup.py build
+python setup.py install
+cd ..
+python -c "import scipy; print 'Installed SciPy', scipy.__version__"
+#python -c "import scipy; scipy.test()"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/Makefile.inc
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/Makefile.inc	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/Makefile.inc	(revision 21239)
@@ -0,0 +1,26 @@
+EXE	=
+LIB	= .a
+OBJ	= .o
+MEX	= .mexa64
+
+MAKE	= make
+AR	= ar
+ARFLAGS	= -ruv
+CAT	= cat
+CCS	= gcc
+CCP     = mpicc
+CCD     = mpicc
+CCM	= ${MATLAB_DIR}/bin/mex
+#CFLAGS	= -m64 -O3 -std=c99 -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t -DCOMMON_TIMING_OLD -DMATLAB -fPIC -I${MATLAB_DIR}/extern/include
+CFLAGS	= -m64 -O3 -std=c99 -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t -DCOMMON_TIMING_OLD -fPIC
+#LDFLAGS	= -lz -lm -lrt -L${MATLAB_DIR}/bin/glnxa64 -lmex -lmat
+#LDFLAGS	= -lz -lm -lrt -Wl,-rpath-link,${MATLAB_DIR}/bin/glnxa64 -L${MATLAB_DIR}/bin/glnxa64 -lmex -lmat
+LDFLAGS	= -lz -lm -lrt
+MFLAGS	= -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t -DCOMMON_TIMING_OLD -DNOFILEIO -DMATLAB -I${MATLAB_DIR}/extern/include -largeArrayDims
+CP	= cp
+LEX	= flex
+LN	= ln
+MKDIR	= mkdir
+MV	= mv
+RANLIB	= ranlib
+YACC	= yacc
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/gmap.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/gmap.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/gmap.m	(revision 21239)
@@ -0,0 +1,66 @@
+%
+%  function to call the gmap module of the scotch partitioner.
+%
+%  [maptab]=gmap(adj_mat,vlist,vwgt,ewgt,atype,apar,...
+%                options)
+%
+%  where the required input is:
+%    adj_mat    (double [sparse nv x nv], vertex adjacency matrix)
+%    vlist      (double [nv], vertex labels or [])
+%    vwgt       (double [nv], vertex weights (integers) or [])
+%    ewgt       (double [sparse nv x nv], edge weights (integers) or [])
+%    atype      (character, architecture type)
+%                 'cmplt'      complete graph
+%                 'cmpltw'     weighted complete graph
+%                 'hcub'       binary hypercube
+%                 'leaf'       tree-leaf architecture
+%                 'mesh2d'     bidimensional array
+%                 'mesh3d'     tridimensional array
+%                 'torus2d'    bidimensional array with wraparound edges
+%                 'torus3d'    tridimensional array with wraparound edges
+%    apars      (double, architecture params (corresponding to atype))
+%                 [size]                     cmplt
+%                 [size load0 load1 ...]     cmpltw
+%                 [dim]                      hcub
+%                 [height cluster weight]    leaf
+%                 [dimX dimY]                mesh2d
+%                 [dimX dimY dimZ]           mesh3d
+%                 [dimX dimY]                torus2d
+%                 [dimX dimY dimZ]           torus3d
+%
+%  the required output is:
+%    maptab     (double [nv x 2], vertex labels and partitions)
+%
+%  the optional input is:
+%    options    (character, options to gmap)
+%               "  -h         : Display this help"
+%               "  -m<strat>  : Set mapping strategy (see user's manual)"
+%               "  -s<obj>    : Force unity weights on <obj>:"
+%               "                 e  : edges"
+%               "                 v  : vertices"
+%               "  -V         : Print program version and copyright"
+%               "  -v<verb>   : Set verbose mode to <verb>:"
+%               "                 m  : mapping information"
+%               "                 s  : strategy information"
+%               "                 t  : timing information"
+%               ""
+%               "See default strategy with option '-vs'"
+%
+function [maptab]=gmap(adj_mat,vlist,vwgt,ewgt,atype,apars,...
+                       varargin)
+
+if ~nargin
+    help gmap
+    return
+end
+
+%  gmap_mex uses static variables, so clear those out before every run
+clear gmap_mex
+
+[maptab]=gmap_mex(adj_mat,vlist,vwgt,ewgt,atype,apars,...
+                  varargin{:});
+
+%  doesn't hurt to clear out after every run, too
+clear gmap_mex
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/gmap_mex.c
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/gmap_mex.c	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/gmap_mex.c	(revision 21239)
@@ -0,0 +1,286 @@
+
+#define THISFUNCTION "Gmap"
+
+/*  Gmap structures and prototypes  */
+
+#ifdef MATLAB
+		#include "mat.h"
+		#include "mex.h"
+		#include "matrix.h"
+
+		#define printf mexPrintf
+		#define fprintf(file,...) (file == stdout || file == stderr ? mexPrintf(__VA_ARGS__) : fprintf(file,__VA_ARGS__))
+		#define malloc mxMalloc
+		#define calloc mxCalloc
+		#define realloc mxRealloc
+		#define free mxFree
+		#define exit(status) mexErrMsgTxt("exit=" #status)
+#endif
+
+void GmapUsage( void );
+
+
+int
+gmapx (
+	int                 (**pmaptabi)[2],
+	int                 argcm,
+	char                *argvm[],
+	int                 nvi,
+	int                 ne2i,
+	int                 *ir,
+	int                 *jc,
+	int                 *vli,
+	int                 *vwi,
+	int                 *ewi,
+	char                archtyp[],
+	int                 nai,
+	int                 *api);
+
+/******************************/
+/*                            */
+/* This is the main function. */
+/*                            */
+/******************************/
+
+void mexFunction( int nlhs,
+				  mxArray *plhs[],
+				  int nrhs,
+				  const mxArray *prhs[] )
+{
+	int     argcm;
+	char    **argvm=NULL;
+	int     nvert =0,nedge2=0,napar =0;
+	mwIndex *ir=NULL,*jc=NULL;
+	int     *adjir=NULL,*adjjc=NULL;
+	double  *vld=NULL,*vwd=NULL,*ewd=NULL,*apd=NULL;
+	int     *vli=NULL,*vwi=NULL,*ewi=NULL,*api=NULL;
+	char    *archtyp=NULL;
+	int     (*maptabi)[2]=NULL;
+	double* maptabd=NULL;
+	int     i,j,k,imi=0,imo=0,isi=0,ierr;
+
+	/* Check for proper number of arguments */
+   
+	if      (nrhs == 0 && nlhs == 0) {
+		GmapUsage();
+		return;
+	}
+	else if (nrhs <  6 || nlhs >  1) {
+		GmapUsage();
+		mexErrMsgTxt(" ");
+	}
+
+/*  load matlab argument list and convert to integer (note that converting here
+	and in the x-layer is inefficient, but it makes the x-layer more general)  */
+
+	argvm = (char **) calloc(nrhs,sizeof(char *));
+
+	if (!(mxIsNumeric(prhs[imi]) &&
+		  (mxGetM(prhs[imi]) == 1 && mxGetN(prhs[imi]) == 1))) {
+		argvm[isi] = (char *) calloc(4+1,sizeof(char));
+		strcpy(argvm[isi],"gmap");
+		mexPrintf("%s -- Using \"%s\" entry point.\n",
+				  THISFUNCTION,argvm[isi]);
+		isi++;
+	}
+	else {
+		argvm[isi] = (char *) calloc(5+1,sizeof(char));
+		strcpy(argvm[isi],"gpart");
+		mexPrintf("%s -- Using \"%s\" entry point.\n",
+				  THISFUNCTION,argvm[isi]);
+		isi++;
+
+		argvm[isi] = (char *) calloc(17,sizeof(char));
+		sprintf(argvm[isi],"%d",(int)mxGetScalar(prhs[imi]));
+		mexPrintf("%s -- Number of parts is %s.\n",
+				  THISFUNCTION,argvm[isi]);
+		isi++;
+		imi++;
+	}
+
+	if (!mxIsNumeric(prhs[imi]) || (!mxIsEmpty(prhs[imi]) && !mxIsSparse(prhs[imi]))) {
+		mexPrintf("%s -- Adjacency matrix must be numeric and sparse.\n",THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		nvert =mxGetM(prhs[imi]);
+		nedge2=mxGetNzmax(prhs[imi]);
+		if (mxGetNzmax(prhs[imi])) {
+			ir    =mxGetIr(prhs[imi]);
+			adjir = (int *) malloc(mxGetNzmax(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetNzmax(prhs[imi]); i++)
+				adjir[i]=(int)ir[i];
+		}
+		if (mxGetN(prhs[imi])) {
+			jc    =mxGetJc(prhs[imi]);
+			adjjc = (int *) malloc((mxGetN(prhs[imi])+1)*sizeof(int));
+			for (i=0; i<(mxGetN(prhs[imi])+1); i++)
+				adjjc[i]=(int)jc[i];
+		}
+		mexPrintf("%s -- Adjacency matrix is of size %d by %d with %d non-zeroes.\n",
+				  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]),mxGetNzmax(prhs[imi]));
+	}
+	imi++;
+
+	if (!mxIsNumeric(prhs[imi])) {
+		mexPrintf("%s -- Vertex label vector must be numeric.\n",THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+			vld=mxGetPr(prhs[imi]);
+			vli = (int *) malloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetM(prhs[imi])*mxGetN(prhs[imi]); i++)
+				vli[i]=(int)vld[i];
+		}
+		mexPrintf("%s -- Vertex label vector is of size %d by %d.\n",
+				  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]));
+	}
+	imi++;
+
+	if (!mxIsNumeric(prhs[imi])) {
+		mexPrintf("%s -- Vertex weight vector must be numeric.\n",THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+			vwd=mxGetPr(prhs[imi]);
+			vwi = (int *) malloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetM(prhs[imi])*mxGetN(prhs[imi]); i++)
+				vwi[i]=(int)vwd[i];
+		}
+		mexPrintf("%s -- Vertex weight vector is of size %d by %d.\n",
+				  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]));
+	}
+	imi++;
+
+	if (!mxIsNumeric(prhs[imi]) || (!mxIsEmpty(prhs[imi]) && !mxIsSparse(prhs[imi]))) {
+		mexPrintf("%s -- Edge weight matrix must be numeric and sparse.\n",THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		if (mxGetM(prhs[imi])) {
+			ewd=mxGetPr(prhs[imi]);
+			ewi = (int *) malloc(mxGetM(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetNzmax(prhs[imi]); i++)
+				ewi[i]=(int)ewd[i];
+		}
+		mexPrintf("%s -- Edge weight matrix is of size %d by %d with %d non-zeroes.\n",
+				  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]),mxGetNzmax(prhs[imi]));
+	}
+	imi++;
+
+	if (!((strlen (argvm[0]) >= 5) &&
+		  (strncmp (argvm[0] + strlen (argvm[0]) - 5, "gpart", 5) == 0))) {
+		if (!mxIsChar(prhs[imi])) {
+			mexPrintf("%s -- Architecture type must be character.\n",THISFUNCTION);
+			mexErrMsgTxt(" ");
+		}
+		else {
+			if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+				archtyp = (char *) calloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])+1,sizeof(char));
+				mxGetString(prhs[imi],archtyp,mxGetM(prhs[imi])*mxGetN(prhs[imi])+1);
+			}
+			mexPrintf("%s -- Architecture type is \"%s\".\n",
+					  THISFUNCTION,archtyp);
+		}
+		imi++;
+
+		if (!mxIsNumeric(prhs[imi])) {
+			mexPrintf("%s -- Architecture parameter vector must be numeric.\n",THISFUNCTION);
+			mexErrMsgTxt(" ");
+		}
+		else {
+			napar =mxGetM(prhs[imi])*mxGetN(prhs[imi]);
+			if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+				apd=mxGetPr(prhs[imi]);
+				api = (int *) malloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])*sizeof(int));
+				for (i=0; i<mxGetM(prhs[imi])*mxGetN(prhs[imi]); i++)
+					api[i]=(int)apd[i];
+			}
+			mexPrintf("%s -- Architecture parameter vector is of size %d by %d.\n",
+					  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]));
+		}
+		imi++;
+	}
+
+	while (imi < nrhs) {
+		if (!mxIsChar(prhs[imi])) {
+			mexPrintf("%s -- prhs[%d] must be character.\n",THISFUNCTION,imi);
+			mexErrMsgTxt(" ");
+		}
+		else {
+			argvm[isi] = (char *) calloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])+1,sizeof(char));
+			mxGetString(prhs[imi],argvm[isi],mxGetM(prhs[imi])*mxGetN(prhs[imi])+1);
+		}
+		isi++;
+		imi++;
+	}
+	argcm=isi;
+	mexPrintf("argcm=%d\n",argcm);
+	for (i=0; i<argcm; i++)
+		mexPrintf("argvm[%d]=\"%s\"\n",i,argvm[i]);
+
+	/* Do the actual computations in a subroutine */
+
+	mexPrintf("Gmapx:\n");
+	ierr=gmapx(&maptabi,
+			   argcm,
+			   argvm,
+			   nvert,
+			   nedge2,
+			   adjir,
+			   adjjc,
+			   vli,
+			   vwi,
+			   ewi,
+			   archtyp,
+			   napar,
+			   api);
+	mexPrintf("%s -- Error %d from Gmapx.\n",THISFUNCTION,ierr);
+
+/*  for (i=0; i<nvert; i++)
+		mexPrintf("maptabi[%d][0]=%d, maptabi[%d][1]=%d\n",
+			 	  i,maptabi[i][0],i,maptabi[i][1]); */
+
+	/* Create matrices for the return arguments */
+
+	if (maptabi) {
+		plhs[imo]=mxCreateDoubleMatrix(nvert, 2, mxREAL);
+		maptabd = mxGetPr(plhs[imo]);
+		k=0;
+		for (j=0; j<2; j++)
+			for (i=0; i<nvert; i++)
+				maptabd[k++]=(double)maptabi[i][j];
+		free(maptabi);
+	}
+	else {
+		plhs[imo]=mxCreateDoubleMatrix(0, 2, mxREAL);
+	}
+	imo++;
+
+	if (argvm)
+		for (i=argcm-1; i>=0; i--)
+			free(argvm[i]);
+	if (api)     free(api);
+	if (archtyp) free(archtyp);
+	if (ewi)     free(ewi);
+	if (vwi)     free(vwi);
+	if (vli)     free(vli);
+	if (adjjc)   free(adjjc);
+	if (adjir)   free(adjir);
+
+	return;
+}
+
+void GmapUsage( void )
+{
+
+    mexPrintf("\n");
+    mexPrintf("Usage: [maptab]=Gmap_mex(adjmat,vertlb,vertwt,edgewt,archtyp,archpar,\n");
+    mexPrintf("                         Scotch-specific parameters);\n");
+    mexPrintf("\n");
+
+    return;
+}
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/gmapx.c
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/gmapx.c	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/gmapx.c	(revision 21239)
@@ -0,0 +1,385 @@
+/* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS
+**
+** This file is part of the Scotch software package for static mapping,
+** graph partitioning and sparse matrix ordering.
+**
+** This software is governed by the CeCILL-C license under French law
+** and abiding by the rules of distribution of free software. You can
+** use, modify and/or redistribute the software under the terms of the
+** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
+** URL: "http://www.cecill.info".
+** 
+** As a counterpart to the access to the source code and rights to copy,
+** modify and redistribute granted by the license, users are provided
+** only with a limited warranty and the software's author, the holder of
+** the economic rights, and the successive licensors have only limited
+** liability.
+** 
+** In this respect, the user's attention is drawn to the risks associated
+** with loading, using, modifying and/or developing or reproducing the
+** software by the user in light of its specific status of free software,
+** that may mean that it is complicated to manipulate, and that also
+** therefore means that it is reserved for developers and experienced
+** professionals having in-depth computer knowledge. Users are therefore
+** encouraged to load and test the software's suitability as regards
+** their requirements in conditions enabling the security of their
+** systems and/or data to be ensured and, more generally, to use and
+** operate it in the same conditions as regards security.
+** 
+** The fact that you are presently reading this means that you have had
+** knowledge of the CeCILL-C license and that you accept its terms.
+*/
+/************************************************************/
+/**                                                        **/
+/**   NAME       : gmap.c                                  **/
+/**                                                        **/
+/**   AUTHOR     : Francois PELLEGRINI                     **/
+/**                                                        **/
+/**   FUNCTION   : Part of a graph mapping software.       **/
+/**                This module contains the main function. **/
+/**                                                        **/
+/**   DATES      : # Version 0.0  : from : 05 jan 1993     **/
+/**                                 to     12 may 1993     **/
+/**                # Version 1.1  : from : 15 oct 1993     **/
+/**                                 to     15 oct 1993     **/
+/**                # Version 1.3  : from : 06 apr 1994     **/
+/**                                 to     18 may 1994     **/
+/**                # Version 2.0  : from : 06 jun 1994     **/
+/**                                 to     17 nov 1994     **/
+/**                # Version 2.1  : from : 07 apr 1995     **/
+/**                                 to     18 jun 1995     **/
+/**                # Version 3.0  : from : 01 jul 1995     **/
+/**                                 to     02 oct 1995     **/
+/**                # Version 3.1  : from : 07 nov 1995     **/
+/**                                 to     25 apr 1996     **/
+/**                # Version 3.2  : from : 24 sep 1996     **/
+/**                                 to     26 may 1998     **/
+/**                # Version 3.3  : from : 19 oct 1998     **/
+/**                                 to   : 30 mar 1999     **/
+/**                # Version 3.4  : from : 03 feb 2000     **/
+/**                                 to   : 03 feb 2000     **/
+/**                # Version 4.0  : from : 16 jan 2004     **/
+/**                                 to   : 27 dec 2004     **/
+/**                # Version 5.0  : from : 23 dec 2007     **/
+/**                                 to   : 18 jun 2008     **/
+/**                                                        **/
+/************************************************************/
+
+/*
+**  The defines and includes.
+*/
+
+#define GMAP
+
+#include "module.h"
+#include "common.h"
+#include "scotch.h"
+#include "gmap.h"
+
+/*
+**  The static variables.
+*/
+
+static int                  C_partNbr = 2;        /* Default number of parts     */
+static int                  C_paraNum = 0;        /* Number of parameters        */
+static int                  C_paraNbr = 0;        /* No parameters for mapping   */
+static int                  C_fileNum = 0;        /* Number of file in arg list  */
+static int                  C_fileNbr = 4;        /* Number of files for mapping */
+static File                 C_fileTab[C_FILENBR] = { /* File array               */
+                              { "-", NULL, "r" },
+                              { "-", NULL, "r" },
+                              { "-", NULL, "w" },
+                              { "-", NULL, "w" } };
+
+static const char *         C_usageList[] = {     /* Usage */
+  "gmap [<input source file> [<input target file> [<output mapping file> [<output log file>]]]] <options>",
+  "gpart [<nparts>] [<input source file> [<output mapping file> [<output log file>]]] <options>",
+  "  -h         : Display this help",
+  "  -m<strat>  : Set mapping strategy (see user's manual)",
+  "  -s<obj>    : Force unity weights on <obj>:",
+  "                 e  : edges",
+  "                 v  : vertices",
+  "  -V         : Print program version and copyright",
+  "  -v<verb>   : Set verbose mode to <verb>:",
+  "                 m  : mapping information",
+  "                 s  : strategy information",
+  "                 t  : timing information",
+  "",
+  "See default strategy with option '-vs'",
+  NULL };
+
+/******************************/
+/*                            */
+/* This is the main function. */
+/*                            */
+/******************************/
+
+int
+gmapx (
+  int                 (**pmaptabi)[2],
+  int                 argcm,
+  char                *argvm[],
+  int                 nvi,
+  int                 ne2i,
+  int                 *ir,
+  int                 *jc,
+  int                 *vli,
+  int                 *vwi,
+  int                 *ewi,
+  char                archtyp[],
+  int                 nai,
+  int                 *api)
+{
+  SCOTCH_Graph        grafdat;                    /* Source graph            */
+  SCOTCH_Num          grafflag;                   /* Source graph properties */
+  SCOTCH_Arch         archdat;                    /* Target architecture     */
+  SCOTCH_Strat        stradat;                    /* Mapping strategy        */
+  SCOTCH_Mapping      mapdat;                     /* Mapping data            */
+  Clock               runtime[2];                 /* Timing variables        */
+  SCOTCH_Num          nvert =0;
+  SCOTCH_Num          nedge2=0;
+  SCOTCH_Num*         adjir  =NULL;
+  SCOTCH_Num*         adjjc  =NULL;
+  SCOTCH_Num*         vertlab=NULL;
+  SCOTCH_Num*         vertwgt=NULL;
+  SCOTCH_Num*         edgewgt=NULL;
+  SCOTCH_Num          napar =0;
+  SCOTCH_Num*         archpar=NULL;
+  SCOTCH_Num          (*maptab)[2]=NULL;
+  int                 (*maptabi)[2]=NULL;
+  int                 flagval;
+  int                 i,j,k;
+
+/*  reset static variables from previous runs (jes, 4/27/10)  */
+
+  C_partNbr = 2;        /* Default number of parts     */
+  C_paraNum = 0;        /* Number of parameters        */
+  C_paraNbr = 0;        /* No parameters for mapping   */
+  C_fileNum = 0;        /* Number of file in arg list  */
+  C_fileNbr = 4;        /* Number of files for mapping */
+  for (i=0; i<C_FILENBR; i++) {
+    C_fileTab[i].name = "-";
+    C_fileTab[i].pntr = NULL;
+    if (i < 2)
+      C_fileTab[i].mode = "r";
+    else
+      C_fileTab[i].mode = "w";
+  }
+
+/*  convert input arguments to scotch data types  */
+
+  nvert =(SCOTCH_Num)nvi;
+  nedge2=(SCOTCH_Num)ne2i;
+
+  if (ir && jc) {
+    adjir = (SCOTCH_Num *) malloc(nedge2*sizeof(SCOTCH_Num));
+    for (i=0; i<nedge2; i++)
+      adjir[i]=(SCOTCH_Num)ir[i];
+    adjjc = (SCOTCH_Num *) malloc((nvert+1)*sizeof(SCOTCH_Num));
+    for (i=0; i<(nvert+1); i++)
+      adjjc[i]=(SCOTCH_Num)jc[i];
+  }
+
+  if (vli) {
+    vertlab = (SCOTCH_Num *) malloc(nvert*sizeof(SCOTCH_Num));
+    for (i=0; i<nvert; i++)
+      vertlab[i]=(SCOTCH_Num)vli[i];
+  }
+
+  if (vwi) {
+    vertwgt = (SCOTCH_Num *) malloc(nvert*sizeof(SCOTCH_Num));
+    for (i=0; i<nvert; i++)
+      vertwgt[i]=(SCOTCH_Num)vwi[i];
+  }
+
+  if (ewi) {
+    edgewgt = (SCOTCH_Num *) malloc(nedge2*sizeof(SCOTCH_Num));
+    for (i=0; i<nedge2; i++)
+      edgewgt[i]=(SCOTCH_Num)ewi[i];
+  }
+
+  napar =(SCOTCH_Num)nai;
+
+  if (api) {
+    archpar = (SCOTCH_Num *) malloc(nai*sizeof(SCOTCH_Num));
+    for (i=0; i<nai; i++)
+      archpar[i]=(SCOTCH_Num)api[i];
+  }
+
+/*  start scotch processing  */
+
+  flagval = C_FLAGNONE;                           /* Default behavior */
+  i = strlen (argvm[0]);
+  if ((i >= 5) && (strncmp (argvm[0] + i - 5, "gpart", 5) == 0)) {
+    flagval |= C_FLAGPART;
+    C_paraNbr = 1;                                /* One more parameter       */
+    C_fileNbr = 3;                                /* One less file to provide */
+    errorProg ("gpart");
+  }
+  else
+    errorProg ("gmap");
+
+  intRandResetStatic ();
+  intRandInit ();
+
+  if ((argcm >= 2) && (argvm[1][0] == '?')) {       /* If need for help */
+    usagePrint (stdout, C_usageList);
+    return     (0);
+  }
+
+  grafflag = 0;                                   /* Use vertex and edge weights  */
+  SCOTCH_stratInit (&stradat);                    /* Set default mapping strategy */
+
+  for (i = 0; i < C_FILENBR; i ++)                /* Set default stream pointers */
+    C_fileTab[i].pntr = (C_fileTab[i].mode[0] == 'r') ? stdin : stdout;
+  for (i = 1; i < argcm; i ++) {                   /* Loop for all option codes                        */
+    if ((argvm[i][0] != '-') || (argvm[i][1] == '\0') || (argvm[i][1] == '.')) { /* If found a file name */
+      if (C_paraNum < C_paraNbr) {                /* If number of parameters not reached              */
+        if ((C_partNbr = atoi (argvm[i])) < 1)     /* Get the number of parts                          */
+          errorPrint ("main: invalid number of parts (\"%s\")", argvm[i]);
+        C_paraNum ++;
+        continue;                                 /* Process the other parameters */
+      }
+      if (C_fileNum < C_fileNbr)                  /* A file name has been given */
+        C_fileTab[C_fileNum ++].name = argvm[i];
+      else
+        errorPrint ("main: too many file names given");
+    }
+    else {                                        /* If found an option name */
+      switch (argvm[i][1]) {
+        case 'H' :                                /* Give the usage message */
+        case 'h' :
+          usagePrint (stdout, C_usageList);
+          return     (0);
+        case 'M' :
+        case 'm' :
+          SCOTCH_stratExit (&stradat);
+          SCOTCH_stratInit (&stradat);
+          SCOTCH_stratGraphMap (&stradat, &argvm[i][2]);
+          break;
+        case 'S' :
+        case 's' :                                /* Source graph parameters */
+          for (j = 2; argvm[i][j] != '\0'; j ++) {
+            switch (argvm[i][j]) {
+              case 'E' :
+              case 'e' :
+                grafflag |= 2;                    /* Do not load edge weights */
+                break;
+              case 'V' :
+              case 'v' :
+                grafflag |= 1;                    /* Do not load vertex weights */
+                break;
+              default :
+                errorPrint ("main: invalid source graph option (\"%c\")", argvm[i][j]);
+            }
+          }
+          break;
+        case 'V' :
+          fprintf (stderr, "gmap/gpart, version %s - F. Pellegrini\n", SCOTCH_VERSION);
+          fprintf (stderr, "Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS, France\n");
+          fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n");
+          return  (0);
+        case 'v' :                                /* Output control info */
+          for (j = 2; argvm[i][j] != '\0'; j ++) {
+            switch (argvm[i][j]) {
+              case 'M' :
+              case 'm' :
+                flagval |= C_FLAGVERBMAP;
+                break;
+              case 'S' :
+              case 's' :
+                flagval |= C_FLAGVERBSTR;
+                break;
+              case 'T' :
+              case 't' :
+                flagval |= C_FLAGVERBTIM;
+                break;
+              default :
+                errorPrint ("main: unprocessed parameter \"%c\" in \"%s\"", argvm[i][j], argvm[i]);
+            }
+          }
+          break;
+        default :
+          errorPrint ("main: unprocessed option (\"%s\")", argvm[i]);
+      }
+    }
+  }
+  if ((flagval & C_FLAGPART) != 0) {              /* If program run as the partitioner            */
+    C_fileTab[3].name = C_fileTab[2].name;        /* Put provided file names at their right place */
+    C_fileTab[2].name = C_fileTab[1].name;
+    C_fileTab[1].name = "-";
+  }
+
+  fileBlockOpen (C_fileTab, C_FILENBR);           /* Open all files */
+
+  clockInit  (&runtime[0]);
+  clockStart (&runtime[0]);
+
+  SCOTCH_graphInit (&grafdat);                    /* Create graph structure         */
+  SCOTCH_graphLoad (&grafdat, C_filepntrsrcinp, -1, grafflag, nvert, nedge2, adjir, adjjc, vertlab, vertwgt, edgewgt); /* Read source graph */
+
+  SCOTCH_archInit (&archdat);                     /* Create architecture structure          */
+  if ((flagval & C_FLAGPART) != 0)                /* If program run as the partitioner      */
+    SCOTCH_archCmplt (&archdat, C_partNbr);       /* Create a complete graph of proper size */
+  else
+    SCOTCH_archLoad (&archdat, C_filepntrtgtinp, archtyp, napar, archpar); /* Read target architecture */
+
+  clockStop  (&runtime[0]);                       /* Get input time */
+  clockInit  (&runtime[1]);
+  clockStart (&runtime[1]);
+
+  SCOTCH_graphMapInit    (&grafdat, &mapdat, &archdat, NULL);
+  SCOTCH_graphMapCompute (&grafdat, &mapdat, &stradat); /* Perform mapping */
+
+  clockStop  (&runtime[1]);                       /* Get computation time */
+  clockStart (&runtime[0]);
+
+  SCOTCH_graphMapSave (&nvert, &maptab, &grafdat, &mapdat, C_filepntrmapout); /* Write mapping */
+
+/*  convert output arguments from scotch data types  */
+
+  if (maptab) {
+    *pmaptabi = (int (*)[2]) malloc(nvert*2*sizeof(int));
+    maptabi  = *pmaptabi;
+    for (j=0; j<2; j++)
+      for (i=0; i<nvert; i++)
+          maptabi[i][j]=(int)maptab[i][j];
+    free(maptab);
+  }
+
+  clockStop (&runtime[0]);                        /* Get output time */
+
+  if (flagval & C_FLAGVERBSTR) {
+    fprintf (C_filepntrlogout, "S\tStrat=");
+    SCOTCH_stratSave (&stradat, C_filepntrlogout);
+    putc ('\n', C_filepntrlogout);
+  }
+  if (flagval & C_FLAGVERBTIM) {
+    fprintf (C_filepntrlogout, "T\tMapping\t\t%g\nT\tI/O\t\t%g\nT\tTotal\t\t%g\n",
+             (double) clockVal (&runtime[1]),
+             (double) clockVal (&runtime[0]),
+             (double) clockVal (&runtime[0]) +
+             (double) clockVal (&runtime[1]));
+  }
+  if (flagval & C_FLAGVERBMAP)
+    SCOTCH_graphMapView (&grafdat, &mapdat, C_filepntrlogout);
+
+  fileBlockClose (C_fileTab, C_FILENBR);          /* Always close explicitely to end eventual (un)compression tasks */
+
+  SCOTCH_graphMapExit (&grafdat, &mapdat);
+  SCOTCH_graphExit    (&grafdat);
+  SCOTCH_stratExit    (&stradat);
+  SCOTCH_archExit     (&archdat);
+
+  if (archpar) free(archpar);
+  if (edgewgt) free(edgewgt);
+  if (vertwgt) free(vertwgt);
+  if (vertlab) free(vertlab);
+  if (adjjc) free(adjjc);
+  if (adjir) free(adjir);
+
+#ifdef COMMON_PTHREAD
+  pthread_exit ((void *) 0);                      /* Allow potential (un)compression tasks to complete */
+#endif /* COMMON_PTHREAD */
+  return (0);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/gpart.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/gpart.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/gpart.m	(revision 21239)
@@ -0,0 +1,50 @@
+%
+%  function to call the gpart module of the scotch partitioner.
+%  (note that gpart is just a simplied entry into gmap.)
+%
+%  [maptab]=gpart(npart,adj_mat,vlist,vwgt,ewgt,...
+%                 options)
+%
+%  where the required input is:
+%    npart      (double, number of parts for 'cmplt' architecture)
+%    adj_mat    (double [sparse nv x nv], vertex adjacency matrix)
+%    vlist      (double [nv], vertex labels or [])
+%    vwgt       (double [nv], vertex weights (integers) or [])
+%    ewgt       (double [sparse nv x nv], edge weights (integers) or [])
+%
+%  the required output is:
+%    maptab     (double [nv x 2], vertex labels and partitions)
+%
+%  the optional input is:
+%    options    (character, options to gpart)
+%               "  -h         : Display this help"
+%               "  -m<strat>  : Set mapping strategy (see user's manual)"
+%               "  -s<obj>    : Force unity weights on <obj>:"
+%               "                 e  : edges"
+%               "                 v  : vertices"
+%               "  -V         : Print program version and copyright"
+%               "  -v<verb>   : Set verbose mode to <verb>:"
+%               "                 m  : mapping information"
+%               "                 s  : strategy information"
+%               "                 t  : timing information"
+%               ""
+%               "See default strategy with option '-vs'"
+%
+function [maptab]=gpart(npart,adj_mat,vlist,vwgt,ewgt,...
+                        varargin)
+
+if ~nargin
+    help gpart
+    return
+end
+
+%  gmap_mex uses static variables, so clear those out before every run
+clear gmap_mex
+
+[maptab]=gmap_mex(npart,adj_mat,vlist,vwgt,ewgt,...
+                  varargin{:});
+
+%  doesn't hurt to clear out after every run, too
+clear gmap_mex
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/install.sh	(revision 21239)
@@ -0,0 +1,57 @@
+#!/bin/bash
+set -eu
+
+# Some cleanup
+rm -rf scotch_5.1
+rm -rf src 
+rm -rf install 
+
+# Create src and install directories
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/scotch_5.1.6.tar.gz' 'scotch_5.1.6.tar.gz'
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/docs/ptscotch_user5.1.pdf' 'ptscotch_user5.1.pdf'
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/docs/scotch_user5.1.pdf' 'scotch_user5.1.pdf'
+
+# Untar 
+tar -xvzf scotch_5.1.6.tar.gz
+
+# Apply patches (all at once, since many)
+# (written by diff -rc old_src new_src > scotch.patch)
+patch -p0 < scotch.patch
+
+# Move scotch to src directory
+mv scotch_5.1/* src
+rm -rf scotch_5.1
+
+# Build scotch
+cp -p Makefile.inc src/src
+cp -p gmap_mex.c src/src/scotch
+cp -p gmapx.c src/src/scotch
+cd src/src
+# For stand-alone scotch modules:
+make scotch
+make clean
+# For no-file-io scotch modules:
+make nfioscotch
+# Clean up
+make clean
+cd ../..
+
+# Populate install directory
+cp -pr src/grf install
+cp -pr src/tgt install
+cp -pr src/doc install
+cp -pr src/man install
+mkdir install/include
+cp -p src/src/libscotch/module.h install/include/scotch_module.h
+cp -p src/src/libscotch/common.h install/include/scotch_common.h
+cp -p src/include/scotch.h install/include/
+cp -p src/src/scotch/gmap.h install/include/scotch_gmap.h
+mkdir install/lib
+mv src/lib/* install/lib
+mkdir install/bin
+mv src/bin/* install/bin
+#cp -p gmap.m install/bin
+#cp -p gpart.m install/bin
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/mex/Gmap.c
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/mex/Gmap.c	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/mex/Gmap.c	(revision 21239)
@@ -0,0 +1,278 @@
+
+#define THISFUNCTION "Gmap"
+
+/*  Gmap structures and prototypes  */
+
+#include "mat.h"
+#include "mex.h"
+#include "matrix.h"
+
+void GmapUsage( void );
+
+
+int
+Gmapx (
+	int                 (**pmaptabi)[2],
+	int                 argcm,
+	char                *argvm[],
+	int                 nvi,
+	int                 ne2i,
+	int                 *ir,
+	int                 *jc,
+	int                 *vli,
+	int                 *vwi,
+	int                 *ewi,
+	char                archtyp[],
+	int                 nai,
+	int                 *api);
+
+/******************************/
+/*                            */
+/* This is the main function. */
+/*                            */
+/******************************/
+
+void mexFunction( int nlhs,
+				  mxArray *plhs[],
+				  int nrhs,
+				  const mxArray *prhs[] )
+{
+	int     argcm;
+	char    **argvm=NULL;
+	int     nvert =0,nedge2=0,napar =0;
+	mwIndex *ir=NULL,*jc=NULL;
+	int     *adjir=NULL,*adjjc=NULL;
+	double  *vld=NULL,*vwd=NULL,*ewd=NULL,*apd=NULL;
+	int     *vli=NULL,*vwi=NULL,*ewi=NULL,*api=NULL;
+	char    *archtyp=NULL;
+	int     (*maptabi)[2]=NULL;
+	double* maptabd=NULL;
+	int     i,j,k,imi=0,imo=0,isi=0,ierr;
+
+	/* Check for proper number of arguments */
+   
+	if      (nrhs == 0 && nlhs == 0) {
+		GmapUsage();
+		return;
+	}
+	else if (nrhs <  6 || nlhs >  1) {
+		GmapUsage();
+		mexErrMsgTxt(" ");
+	}
+
+/*  load matlab argument list and convert to integer (note that converting here
+	and in the x-layer is inefficient, but it makes the x-layer more general)  */
+
+	argvm = (char **) calloc(nrhs,sizeof(char *));
+
+	if (!(mxIsNumeric(prhs[imi]) &&
+		  (mxGetM(prhs[imi]) == 1 && mxGetN(prhs[imi]) == 1))) {
+		argvm[isi] = (char *) calloc(4+1,sizeof(char));
+		strcpy(argvm[isi],"Gmap");
+		mexPrintf("%s -- Using \"%s\" entry point.\n",
+				  THISFUNCTION,argvm[isi]);
+		isi++;
+	}
+	else {
+		argvm[isi] = (char *) calloc(5+1,sizeof(char));
+		strcpy(argvm[isi],"Gpart");
+		mexPrintf("%s -- Using \"%s\" entry point.\n",
+				  THISFUNCTION,argvm[isi]);
+		isi++;
+
+		argvm[isi] = (char *) calloc(17,sizeof(char));
+		sprintf(argvm[isi],"%d",(int)mxGetScalar(prhs[imi]));
+		mexPrintf("%s -- Number of parts is %s.\n",
+				  THISFUNCTION,argvm[isi]);
+		isi++;
+		imi++;
+	}
+
+	if (!mxIsNumeric(prhs[imi]) || (!mxIsEmpty(prhs[imi]) && !mxIsSparse(prhs[imi]))) {
+		mexPrintf("%s -- Adjacency matrix must be numeric and sparse.\n",THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		nvert =mxGetM(prhs[imi]);
+		nedge2=mxGetNzmax(prhs[imi]);
+		if (mxGetNzmax(prhs[imi])) {
+			ir    =mxGetIr(prhs[imi]);
+			adjir = (int *) malloc(mxGetNzmax(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetNzmax(prhs[imi]); i++)
+				adjir[i]=(int)ir[i];
+		}
+		if (mxGetN(prhs[imi])) {
+			jc    =mxGetJc(prhs[imi]);
+			adjjc = (int *) malloc((mxGetN(prhs[imi])+1)*sizeof(int));
+			for (i=0; i<(mxGetN(prhs[imi])+1); i++)
+				adjjc[i]=(int)jc[i];
+		}
+		mexPrintf("%s -- Adjacency matrix is of size %d by %d with %d non-zeroes.\n",
+				  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]),mxGetNzmax(prhs[imi]));
+	}
+	imi++;
+
+	if (!mxIsNumeric(prhs[imi])) {
+		mexPrintf("%s -- Vertex label vector must be numeric.\n",THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+			vld=mxGetPr(prhs[imi]);
+			vli = (int *) malloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetM(prhs[imi])*mxGetN(prhs[imi]); i++)
+				vli[i]=(int)vld[i];
+		}
+		mexPrintf("%s -- Vertex label vector is of size %d by %d.\n",
+				  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]));
+	}
+	imi++;
+
+	if (!mxIsNumeric(prhs[imi])) {
+		mexPrintf("%s -- Vertex weight vector must be numeric.\n",THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+			vwd=mxGetPr(prhs[imi]);
+			vwi = (int *) malloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetM(prhs[imi])*mxGetN(prhs[imi]); i++)
+				vwi[i]=(int)vwd[i];
+		}
+		mexPrintf("%s -- Vertex weight vector is of size %d by %d.\n",
+				  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]));
+	}
+	imi++;
+
+	if (!mxIsNumeric(prhs[imi]) || (!mxIsEmpty(prhs[imi]) && !mxIsSparse(prhs[imi]))) {
+		mexPrintf("%s -- Edge weight matrix must be numeric and sparse.\n",THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		if (mxGetM(prhs[imi])) {
+			ewd=mxGetPr(prhs[imi]);
+			ewi = (int *) malloc(mxGetM(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetNzmax(prhs[imi]); i++)
+				ewi[i]=(int)ewd[i];
+		}
+		mexPrintf("%s -- Edge weight matrix is of size %d by %d with %d non-zeroes.\n",
+				  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]),mxGetNzmax(prhs[imi]));
+	}
+	imi++;
+
+	if (!((strlen (argvm[0]) >= 5) &&
+		  (strncmp (argvm[0] + strlen (argvm[0]) - 5, "Gpart", 5) == 0))) {
+		if (!mxIsChar(prhs[imi])) {
+			mexPrintf("%s -- Architecture type must be character.\n",THISFUNCTION);
+			mexErrMsgTxt(" ");
+		}
+		else {
+			if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+				archtyp = (char *) calloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])+1,sizeof(char));
+				mxGetString(prhs[imi],archtyp,mxGetM(prhs[imi])*mxGetN(prhs[imi])+1);
+			}
+			mexPrintf("%s -- Architecture type is \"%s\".\n",
+					  THISFUNCTION,archtyp);
+		}
+		imi++;
+
+		if (!mxIsNumeric(prhs[imi])) {
+			mexPrintf("%s -- Architecture parameter vector must be numeric.\n",THISFUNCTION);
+			mexErrMsgTxt(" ");
+		}
+		else {
+			napar =mxGetM(prhs[imi])*mxGetN(prhs[imi]);
+			if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+				apd=mxGetPr(prhs[imi]);
+				api = (int *) malloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])*sizeof(int));
+				for (i=0; i<mxGetM(prhs[imi])*mxGetN(prhs[imi]); i++)
+					api[i]=(int)apd[i];
+			}
+			mexPrintf("%s -- Architecture parameter vector is of size %d by %d.\n",
+					  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]));
+		}
+		imi++;
+	}
+
+	while (imi < nrhs) {
+		if (!mxIsChar(prhs[imi])) {
+			mexPrintf("%s -- prhs[%d] must be character.\n",THISFUNCTION,imi);
+			mexErrMsgTxt(" ");
+		}
+		else {
+			argvm[isi] = (char *) calloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])+1,sizeof(char));
+			mxGetString(prhs[imi],argvm[isi],mxGetM(prhs[imi])*mxGetN(prhs[imi])+1);
+		}
+		isi++;
+		imi++;
+	}
+	argcm=isi;
+	mexPrintf("argcm=%d\n",argcm);
+	for (i=0; i<argcm; i++)
+		mexPrintf("argvm[%d]=\"%s\"\n",i,argvm[i]);
+
+	/* Do the actual computations in a subroutine */
+
+	mexPrintf("Gmapx:\n");
+	ierr=Gmapx(&maptabi,
+			   argcm,
+			   argvm,
+			   nvert,
+			   nedge2,
+			   adjir,
+			   adjjc,
+			   vli,
+			   vwi,
+			   ewi,
+			   archtyp,
+			   napar,
+			   api);
+	mexPrintf("%s -- Error %d from Gmapx.\n",THISFUNCTION,ierr);
+
+/*  for (i=0; i<nvert; i++)
+		mexPrintf("maptabi[%d][0]=%d, maptabi[%d][1]=%d\n",
+			 	  i,maptabi[i][0],i,maptabi[i][1]); */
+
+	/* Create matrices for the return arguments */
+
+	if (maptabi) {
+		plhs[imo]=mxCreateDoubleMatrix(nvert, 2, mxREAL);
+		maptabd = mxGetPr(plhs[imo]);
+		k=0;
+		for (j=0; j<2; j++)
+			for (i=0; i<nvert; i++)
+				maptabd[k++]=(double)maptabi[i][j];
+		free(maptabi);
+	}
+	else {
+		plhs[imo]=mxCreateDoubleMatrix(0, 2, mxREAL);
+	}
+	imo++;
+
+	if (api)     free(api);
+	if (archtyp) free(archtyp);
+	if (ewi)     free(ewi);
+	if (vwi)     free(vwi);
+	if (vli)     free(vli);
+	if (adjjc)   free(adjjc);
+	if (adjir)   free(adjir);
+	if (argvm) {
+		for (i=argcm-1; i>=0; i--)
+			free(argvm[i]);
+		free(argvm);
+	}
+
+	return;
+}
+
+void GmapUsage( void )
+{
+
+    mexPrintf("\n");
+    mexPrintf("Usage: [maptab]=Gmap(adjmat,vertlb,vertwt,edgewt,archtyp,archpar,\n");
+    mexPrintf("                         Scotch-specific parameters);\n");
+    mexPrintf("\n");
+
+    return;
+}
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/mex/Gmapx.c
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/mex/Gmapx.c	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/mex/Gmapx.c	(revision 21239)
@@ -0,0 +1,385 @@
+/* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS
+**
+** This file is part of the Scotch software package for static mapping,
+** graph partitioning and sparse matrix ordering.
+**
+** This software is governed by the CeCILL-C license under French law
+** and abiding by the rules of distribution of free software. You can
+** use, modify and/or redistribute the software under the terms of the
+** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
+** URL: "http://www.cecill.info".
+** 
+** As a counterpart to the access to the source code and rights to copy,
+** modify and redistribute granted by the license, users are provided
+** only with a limited warranty and the software's author, the holder of
+** the economic rights, and the successive licensors have only limited
+** liability.
+** 
+** In this respect, the user's attention is drawn to the risks associated
+** with loading, using, modifying and/or developing or reproducing the
+** software by the user in light of its specific status of free software,
+** that may mean that it is complicated to manipulate, and that also
+** therefore means that it is reserved for developers and experienced
+** professionals having in-depth computer knowledge. Users are therefore
+** encouraged to load and test the software's suitability as regards
+** their requirements in conditions enabling the security of their
+** systems and/or data to be ensured and, more generally, to use and
+** operate it in the same conditions as regards security.
+** 
+** The fact that you are presently reading this means that you have had
+** knowledge of the CeCILL-C license and that you accept its terms.
+*/
+/************************************************************/
+/**                                                        **/
+/**   NAME       : gmap.c                                  **/
+/**                                                        **/
+/**   AUTHOR     : Francois PELLEGRINI                     **/
+/**                                                        **/
+/**   FUNCTION   : Part of a graph mapping software.       **/
+/**                This module contains the main function. **/
+/**                                                        **/
+/**   DATES      : # Version 0.0  : from : 05 jan 1993     **/
+/**                                 to     12 may 1993     **/
+/**                # Version 1.1  : from : 15 oct 1993     **/
+/**                                 to     15 oct 1993     **/
+/**                # Version 1.3  : from : 06 apr 1994     **/
+/**                                 to     18 may 1994     **/
+/**                # Version 2.0  : from : 06 jun 1994     **/
+/**                                 to     17 nov 1994     **/
+/**                # Version 2.1  : from : 07 apr 1995     **/
+/**                                 to     18 jun 1995     **/
+/**                # Version 3.0  : from : 01 jul 1995     **/
+/**                                 to     02 oct 1995     **/
+/**                # Version 3.1  : from : 07 nov 1995     **/
+/**                                 to     25 apr 1996     **/
+/**                # Version 3.2  : from : 24 sep 1996     **/
+/**                                 to     26 may 1998     **/
+/**                # Version 3.3  : from : 19 oct 1998     **/
+/**                                 to   : 30 mar 1999     **/
+/**                # Version 3.4  : from : 03 feb 2000     **/
+/**                                 to   : 03 feb 2000     **/
+/**                # Version 4.0  : from : 16 jan 2004     **/
+/**                                 to   : 27 dec 2004     **/
+/**                # Version 5.0  : from : 23 dec 2007     **/
+/**                                 to   : 18 jun 2008     **/
+/**                                                        **/
+/************************************************************/
+
+/*
+**  The defines and includes.
+*/
+
+#define GMAP
+
+#include "module.h"
+#include "common.h"
+#include "scotch.h"
+#include "gmap.h"
+
+/*
+**  The static variables.
+*/
+
+static int                  C_partNbr = 2;        /* Default number of parts     */
+static int                  C_paraNum = 0;        /* Number of parameters        */
+static int                  C_paraNbr = 0;        /* No parameters for mapping   */
+static int                  C_fileNum = 0;        /* Number of file in arg list  */
+static int                  C_fileNbr = 4;        /* Number of files for mapping */
+static File                 C_fileTab[C_FILENBR] = { /* File array               */
+                              { "-", NULL, "r" },
+                              { "-", NULL, "r" },
+                              { "-", NULL, "w" },
+                              { "-", NULL, "w" } };
+
+static const char *         C_usageList[] = {     /* Usage */
+  "gmap [<input source file> [<input target file> [<output mapping file> [<output log file>]]]] <options>",
+  "gpart [<nparts>] [<input source file> [<output mapping file> [<output log file>]]] <options>",
+  "  -h         : Display this help",
+  "  -m<strat>  : Set mapping strategy (see user's manual)",
+  "  -s<obj>    : Force unity weights on <obj>:",
+  "                 e  : edges",
+  "                 v  : vertices",
+  "  -V         : Print program version and copyright",
+  "  -v<verb>   : Set verbose mode to <verb>:",
+  "                 m  : mapping information",
+  "                 s  : strategy information",
+  "                 t  : timing information",
+  "",
+  "See default strategy with option '-vs'",
+  NULL };
+
+/******************************/
+/*                            */
+/* This is the main function. */
+/*                            */
+/******************************/
+
+int
+Gmapx (
+  int                 (**pmaptabi)[2],
+  int                 argcm,
+  char                *argvm[],
+  int                 nvi,
+  int                 ne2i,
+  int                 *ir,
+  int                 *jc,
+  int                 *vli,
+  int                 *vwi,
+  int                 *ewi,
+  char                archtyp[],
+  int                 nai,
+  int                 *api)
+{
+  SCOTCH_Graph        grafdat;                    /* Source graph            */
+  SCOTCH_Num          grafflag;                   /* Source graph properties */
+  SCOTCH_Arch         archdat;                    /* Target architecture     */
+  SCOTCH_Strat        stradat;                    /* Mapping strategy        */
+  SCOTCH_Mapping      mapdat;                     /* Mapping data            */
+  Clock               runtime[2];                 /* Timing variables        */
+  SCOTCH_Num          nvert =0;
+  SCOTCH_Num          nedge2=0;
+  SCOTCH_Num*         adjir  =NULL;
+  SCOTCH_Num*         adjjc  =NULL;
+  SCOTCH_Num*         vertlab=NULL;
+  SCOTCH_Num*         vertwgt=NULL;
+  SCOTCH_Num*         edgewgt=NULL;
+  SCOTCH_Num          napar =0;
+  SCOTCH_Num*         archpar=NULL;
+  SCOTCH_Num          (*maptab)[2]=NULL;
+  int                 (*maptabi)[2]=NULL;
+  int                 flagval;
+  int                 i,j,k;
+
+/*  reset static variables from previous runs (jes, 4/27/10)  */
+
+  C_partNbr = 2;        /* Default number of parts     */
+  C_paraNum = 0;        /* Number of parameters        */
+  C_paraNbr = 0;        /* No parameters for mapping   */
+  C_fileNum = 0;        /* Number of file in arg list  */
+  C_fileNbr = 4;        /* Number of files for mapping */
+  for (i=0; i<C_FILENBR; i++) {
+    C_fileTab[i].name = "-";
+    C_fileTab[i].pntr = NULL;
+    if (i < 2)
+      C_fileTab[i].mode = "r";
+    else
+      C_fileTab[i].mode = "w";
+  }
+
+/*  convert input arguments to scotch data types  */
+
+  nvert =(SCOTCH_Num)nvi;
+  nedge2=(SCOTCH_Num)ne2i;
+
+  if (ir && jc) {
+    adjir = (SCOTCH_Num *) malloc(nedge2*sizeof(SCOTCH_Num));
+    for (i=0; i<nedge2; i++)
+      adjir[i]=(SCOTCH_Num)ir[i];
+    adjjc = (SCOTCH_Num *) malloc((nvert+1)*sizeof(SCOTCH_Num));
+    for (i=0; i<(nvert+1); i++)
+      adjjc[i]=(SCOTCH_Num)jc[i];
+  }
+
+  if (vli) {
+    vertlab = (SCOTCH_Num *) malloc(nvert*sizeof(SCOTCH_Num));
+    for (i=0; i<nvert; i++)
+      vertlab[i]=(SCOTCH_Num)vli[i];
+  }
+
+  if (vwi) {
+    vertwgt = (SCOTCH_Num *) malloc(nvert*sizeof(SCOTCH_Num));
+    for (i=0; i<nvert; i++)
+      vertwgt[i]=(SCOTCH_Num)vwi[i];
+  }
+
+  if (ewi) {
+    edgewgt = (SCOTCH_Num *) malloc(nedge2*sizeof(SCOTCH_Num));
+    for (i=0; i<nedge2; i++)
+      edgewgt[i]=(SCOTCH_Num)ewi[i];
+  }
+
+  napar =(SCOTCH_Num)nai;
+
+  if (api) {
+    archpar = (SCOTCH_Num *) malloc(nai*sizeof(SCOTCH_Num));
+    for (i=0; i<nai; i++)
+      archpar[i]=(SCOTCH_Num)api[i];
+  }
+
+/*  start scotch processing  */
+
+  flagval = C_FLAGNONE;                           /* Default behavior */
+  i = strlen (argvm[0]);
+  if ((i >= 5) && (strncmp (argvm[0] + i - 5, "Gpart", 5) == 0)) {
+    flagval |= C_FLAGPART;
+    C_paraNbr = 1;                                /* One more parameter       */
+    C_fileNbr = 3;                                /* One less file to provide */
+    errorProg ("Gpart");
+  }
+  else
+    errorProg ("Gmap");
+
+  intRandResetStatic ();
+  intRandInit ();
+
+  if ((argcm >= 2) && (argvm[1][0] == '?')) {       /* If need for help */
+    usagePrint (stdout, C_usageList);
+    return     (0);
+  }
+
+  grafflag = 0;                                   /* Use vertex and edge weights  */
+  SCOTCH_stratInit (&stradat);                    /* Set default mapping strategy */
+
+  for (i = 0; i < C_FILENBR; i ++)                /* Set default stream pointers */
+    C_fileTab[i].pntr = (C_fileTab[i].mode[0] == 'r') ? stdin : stdout;
+  for (i = 1; i < argcm; i ++) {                   /* Loop for all option codes                        */
+    if ((argvm[i][0] != '-') || (argvm[i][1] == '\0') || (argvm[i][1] == '.')) { /* If found a file name */
+      if (C_paraNum < C_paraNbr) {                /* If number of parameters not reached              */
+        if ((C_partNbr = atoi (argvm[i])) < 1)     /* Get the number of parts                          */
+          errorPrint ("main: invalid number of parts (\"%s\")", argvm[i]);
+        C_paraNum ++;
+        continue;                                 /* Process the other parameters */
+      }
+      if (C_fileNum < C_fileNbr)                  /* A file name has been given */
+        C_fileTab[C_fileNum ++].name = argvm[i];
+      else
+        errorPrint ("main: too many file names given");
+    }
+    else {                                        /* If found an option name */
+      switch (argvm[i][1]) {
+        case 'H' :                                /* Give the usage message */
+        case 'h' :
+          usagePrint (stdout, C_usageList);
+          return     (0);
+        case 'M' :
+        case 'm' :
+          SCOTCH_stratExit (&stradat);
+          SCOTCH_stratInit (&stradat);
+          SCOTCH_stratGraphMap (&stradat, &argvm[i][2]);
+          break;
+        case 'S' :
+        case 's' :                                /* Source graph parameters */
+          for (j = 2; argvm[i][j] != '\0'; j ++) {
+            switch (argvm[i][j]) {
+              case 'E' :
+              case 'e' :
+                grafflag |= 2;                    /* Do not load edge weights */
+                break;
+              case 'V' :
+              case 'v' :
+                grafflag |= 1;                    /* Do not load vertex weights */
+                break;
+              default :
+                errorPrint ("main: invalid source graph option (\"%c\")", argvm[i][j]);
+            }
+          }
+          break;
+        case 'V' :
+          fprintf (stderr, "Gmap/Gpart, version %s - F. Pellegrini\n", SCOTCH_VERSION);
+          fprintf (stderr, "Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS, France\n");
+          fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n");
+          return  (0);
+        case 'v' :                                /* Output control info */
+          for (j = 2; argvm[i][j] != '\0'; j ++) {
+            switch (argvm[i][j]) {
+              case 'M' :
+              case 'm' :
+                flagval |= C_FLAGVERBMAP;
+                break;
+              case 'S' :
+              case 's' :
+                flagval |= C_FLAGVERBSTR;
+                break;
+              case 'T' :
+              case 't' :
+                flagval |= C_FLAGVERBTIM;
+                break;
+              default :
+                errorPrint ("main: unprocessed parameter \"%c\" in \"%s\"", argvm[i][j], argvm[i]);
+            }
+          }
+          break;
+        default :
+          errorPrint ("main: unprocessed option (\"%s\")", argvm[i]);
+      }
+    }
+  }
+  if ((flagval & C_FLAGPART) != 0) {              /* If program run as the partitioner            */
+    C_fileTab[3].name = C_fileTab[2].name;        /* Put provided file names at their right place */
+    C_fileTab[2].name = C_fileTab[1].name;
+    C_fileTab[1].name = "-";
+  }
+
+  fileBlockOpen (C_fileTab, C_FILENBR);           /* Open all files */
+
+  clockInit  (&runtime[0]);
+  clockStart (&runtime[0]);
+
+  SCOTCH_graphInit (&grafdat);                    /* Create graph structure         */
+  SCOTCH_graphLoad (&grafdat, C_filepntrsrcinp, -1, grafflag, nvert, nedge2, adjir, adjjc, vertlab, vertwgt, edgewgt); /* Read source graph */
+
+  SCOTCH_archInit (&archdat);                     /* Create architecture structure          */
+  if ((flagval & C_FLAGPART) != 0)                /* If program run as the partitioner      */
+    SCOTCH_archCmplt (&archdat, C_partNbr);       /* Create a complete graph of proper size */
+  else
+    SCOTCH_archLoad (&archdat, C_filepntrtgtinp, archtyp, napar, archpar); /* Read target architecture */
+
+  clockStop  (&runtime[0]);                       /* Get input time */
+  clockInit  (&runtime[1]);
+  clockStart (&runtime[1]);
+
+  SCOTCH_graphMapInit    (&grafdat, &mapdat, &archdat, NULL);
+  SCOTCH_graphMapCompute (&grafdat, &mapdat, &stradat); /* Perform mapping */
+
+  clockStop  (&runtime[1]);                       /* Get computation time */
+  clockStart (&runtime[0]);
+
+  SCOTCH_graphMapSave (&nvert, &maptab, &grafdat, &mapdat, C_filepntrmapout); /* Write mapping */
+
+/*  convert output arguments from scotch data types  */
+
+  if (maptab) {
+    *pmaptabi = (int (*)[2]) malloc(nvert*2*sizeof(int));
+    maptabi  = *pmaptabi;
+    for (j=0; j<2; j++)
+      for (i=0; i<nvert; i++)
+          maptabi[i][j]=(int)maptab[i][j];
+    free(maptab);
+  }
+
+  clockStop (&runtime[0]);                        /* Get output time */
+
+  if (flagval & C_FLAGVERBSTR) {
+    fprintf (C_filepntrlogout, "S\tStrat=");
+    SCOTCH_stratSave (&stradat, C_filepntrlogout);
+    putc ('\n', C_filepntrlogout);
+  }
+  if (flagval & C_FLAGVERBTIM) {
+    fprintf (C_filepntrlogout, "T\tMapping\t\t%g\nT\tI/O\t\t%g\nT\tTotal\t\t%g\n",
+             (double) clockVal (&runtime[1]),
+             (double) clockVal (&runtime[0]),
+             (double) clockVal (&runtime[0]) +
+             (double) clockVal (&runtime[1]));
+  }
+  if (flagval & C_FLAGVERBMAP)
+    SCOTCH_graphMapView (&grafdat, &mapdat, C_filepntrlogout);
+
+  fileBlockClose (C_fileTab, C_FILENBR);          /* Always close explicitely to end eventual (un)compression tasks */
+
+  SCOTCH_graphMapExit (&grafdat, &mapdat);
+  SCOTCH_graphExit    (&grafdat);
+  SCOTCH_stratExit    (&stradat);
+  SCOTCH_archExit     (&archdat);
+
+  if (archpar) free(archpar);
+  if (edgewgt) free(edgewgt);
+  if (vertwgt) free(vertwgt);
+  if (vertlab) free(vertlab);
+  if (adjjc) free(adjjc);
+  if (adjir) free(adjir);
+
+#ifdef COMMON_PTHREAD
+  pthread_exit ((void *) 0);                      /* Allow potential (un)compression tasks to complete */
+#endif /* COMMON_PTHREAD */
+  return (0);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/mex/Makefile
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/mex/Makefile	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/mex/Makefile	(revision 21239)
@@ -0,0 +1,102 @@
+## Copyright 2004,2007-2009 ENSEIRB, INRIA & CNRS
+##
+## This file is part of the Scotch software package for static mapping,
+## graph partitioning and sparse matrix ordering.
+##
+## This software is governed by the CeCILL-C license under French law
+## and abiding by the rules of distribution of free software. You can
+## use, modify and/or redistribute the software under the terms of the
+## CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
+## URL: "http://www.cecill.info".
+## 
+## As a counterpart to the access to the source code and rights to copy,
+## modify and redistribute granted by the license, users are provided
+## only with a limited warranty and the software's author, the holder of
+## the economic rights, and the successive licensors have only limited
+## liability.
+## 
+## In this respect, the user's attention is drawn to the risks associated
+## with loading, using, modifying and/or developing or reproducing the
+## software by the user in light of its specific status of free software,
+## that may mean that it is complicated to manipulate, and that also
+## therefore means that it is reserved for developers and experienced
+## professionals having in-depth computer knowledge. Users are therefore
+## encouraged to load and test the software's suitability as regards
+## their requirements in conditions enabling the security of their
+## systems and/or data to be ensured and, more generally, to use and
+## operate it in the same conditions as regards security.
+## 
+## The fact that you are presently reading this means that you have had
+## knowledge of the CeCILL-C license and that you accept its terms.
+##
+
+#bindir		= ../../bin
+#includedir	= ../../include
+#libdir		= ../../lib
+#bindir		= ${SCOTCH_DIR}/../src/bin
+#includedir	= ${SCOTCH_DIR}/../src/include
+#libdir		= ${SCOTCH_DIR}/../src/lib
+bindir		= ${SCOTCH_DIR}/bin
+includedir	= ${SCOTCH_DIR}/include
+libdir		= ${SCOTCH_DIR}/lib
+
+##
+##  General inference rules.
+##
+
+#include ../Makefile.inc
+include ${SCOTCH_DIR}/../src/src/Makefile.inc
+
+%$(OBJ)	:	%.c
+				$(CC) $(CFLAGS) -I${SCOTCH_DIR}/../src/src/scotch -I$(includedir) -I${SCOTCH_DIR}/../src/src/libscotch -DSCOTCH_VERSION=\"$(VERSION)\" -c $(<) -o $(@)
+
+%$(MEX)	:	%.c
+		 		$(CCM) $(MFLAGS) -I${SCOTCH_DIR}/../src/src/scotch -I$(includedir) -I${SCOTCH_DIR}/../src/src/libscotch -DSCOTCH_VERSION=\"$(VERSION)\" $(<) -o $(@) -L$(libdir) -l$(SCOTCHLIB) -l$(SCOTCHLIB)errexit $(LDFLAGS)
+
+##
+##  Project rules.
+##
+
+.PHONY				:	mexscotch	mexinstall	clean	realclean
+
+mexscotch			:	clean
+					$(MAKE) CFLAGS="$(CFLAGS) -DNOFILEIO" CC="$(CCS)" CCD="$(CCS)" SCOTCHLIB=nfioscotch \
+                    Gmapx$(OBJ)
+					$(MAKE) CFLAGS="$(CFLAGS) -DNOFILEIO -DMATLAB -I${MATLAB_DIR}/extern/include" CC="$(CCS)" LDFLAGS="$(LDFLAGS) -Wl,-rpath-link,${MATLAB_DIR}/bin/glnxa64 -L${MATLAB_DIR}/bin/glnxa64 -lmex -lmat Gmapx$(OBJ)" SCOTCHLIB=nfioscotch	\
+					Gmap$(MEX)
+
+mexinstall			:
+					-$(CP) Gmap$(MEX) $(bindir)
+					-$(RM) $(bindir)/Gpart$(MEX)
+					-$(LN) $(bindir)/Gmap$(MEX) $(bindir)/Gpart$(MEX)
+
+clean				:
+					-$(RM) *~ *$(OBJ)
+					-$(RM) Gmap$(MEX)
+
+realclean			:	clean
+
+##
+##  Todo list.
+##
+
+Gmapx$(OBJ)			:	Gmapx.c					\
+					${SCOTCH_DIR}/../src/src/libscotch/module.h			\
+					${SCOTCH_DIR}/../src/src/libscotch/common.h			\
+					$(includedir)/scotch.h			\
+					$(libdir)/libnfioscotch$(LIB)		\
+					$(libdir)/libnfioscotcherrexit$(LIB)	\
+					${SCOTCH_DIR}/../src/src/scotch/gmap.h
+
+Gmap$(MEX)		:	Gmap.c					\
+					${SCOTCH_DIR}/../src/src/libscotch/module.h			\
+					${SCOTCH_DIR}/../src/src/libscotch/common.h			\
+					$(includedir)/scotch.h			\
+					$(libdir)/libnfioscotch$(LIB)		\
+					$(libdir)/libnfioscotcherrexit$(LIB)	\
+					${SCOTCH_DIR}/../src/src/scotch/gmap.h
+
+Gpart$(MEX)		:	Gmap$(MEX)
+					-$(RM) Gpart$(MEX)
+					-$(LN) Gmap$(MEX) Gpart$(MEX)
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/mex/VectorToSparse.c
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/mex/VectorToSparse.c	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/mex/VectorToSparse.c	(revision 21239)
@@ -0,0 +1,138 @@
+
+#define THISFUNCTION "VectorToSparse"
+
+#include <stdio.h>
+#include <string.h>    /*  strcasecmp  */
+#include <time.h>      /*  clock,time,difftime  */
+#include "mex.h"
+
+
+/* Input Arguments */
+
+#define    IR_IN        prhs[0]
+#define    JC_IN        prhs[1]
+#define    PR_IN        prhs[2]
+#define    M_IN         prhs[3]
+#define    N_IN         prhs[4]
+
+/* Output Arguments */
+
+#define    A_OUT        plhs[0]
+
+
+void VectorToSparseUsage( void );
+
+
+void mexFunction( int nlhs,
+				  mxArray *plhs[],
+				  int nrhs,
+				  const mxArray *prhs[] )
+{
+	int     min,nin;
+	mwIndex *ir =NULL,*jc =NULL;
+	double  *ird=NULL,*jcd=NULL,*pr=NULL,*prd=NULL;
+	int     i,mrow;
+
+	/* Check for proper number of arguments */
+   
+	if      (nrhs == 0 && nlhs == 0) {
+		VectorToSparseUsage();
+		return;
+	}
+	else if (nrhs <  2 || nlhs != 1) {
+		VectorToSparseUsage();
+		mexErrMsgTxt(" ");
+	}
+
+	/* Create matrices for the return arguments */
+
+	if (!mxIsNumeric(IR_IN) || !mxIsNumeric(JC_IN)) {
+		mexPrintf("%s -- Input matrices IR and JC must be numeric.\n",THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+
+	mrow = 0;
+	ird = mxGetPr(IR_IN);
+	for (i=0; i<mxGetM(IR_IN)*mxGetN(IR_IN); i++)
+		if ((int)ird[i]+1 > mrow)
+			mrow=(int)ird[i]+1;
+
+	if (nrhs >= 4 && mxIsNumeric(M_IN) && !mxIsEmpty(M_IN))
+		min = mxGetScalar(M_IN);
+	else {
+		min = mrow;
+	}
+
+	if (mrow > min) {
+		mexPrintf("%s -- Number of rows specified by M (%d) and IR (%d) is inconsistent.\n",
+				  THISFUNCTION,min,mrow);
+		mexErrMsgTxt(" ");
+	}
+
+	if (nrhs >= 5 && mxIsNumeric(N_IN) && !mxIsEmpty(N_IN))
+		nin = mxGetScalar(N_IN);
+	else
+		nin = mxGetM(JC_IN)*mxGetN(JC_IN)-1;
+
+	if (mxGetM(JC_IN)*mxGetN(JC_IN)-1 != nin) {
+		mexPrintf("%s -- Number of columns specified by N (%d) and JC (%d) is inconsistent.\n",
+				  THISFUNCTION,nin,mxGetM(JC_IN)*mxGetN(JC_IN)-1);
+		mexErrMsgTxt(" ");
+	}
+
+	A_OUT = mxCreateSparse(min, nin, mxGetM(IR_IN)*mxGetN(IR_IN), mxREAL);
+	if (mxGetM(IR_IN)*mxGetN(IR_IN)) {
+		ird = mxGetPr(IR_IN);
+		ir  = mxGetIr(A_OUT);
+		for (i=0; i<mxGetM(IR_IN)*mxGetN(IR_IN); i++)
+			ir[i]=(mwIndex)ird[i];
+	}
+	if (mxGetM(JC_IN)*mxGetN(JC_IN)) {
+		jcd = mxGetPr(JC_IN);
+		jc  = mxGetJc(A_OUT);
+		for (i=0; i<mxGetM(JC_IN)*mxGetN(JC_IN); i++)
+			jc[i]=(mwIndex)jcd[i];
+	}
+
+	if (nrhs >= 3 && mxIsNumeric(PR_IN) && !mxIsEmpty(PR_IN)) {
+		if (mxGetM(PR_IN)*mxGetN(PR_IN) != mxGetM(IR_IN)*mxGetN(IR_IN)) {
+			mexPrintf("%s -- Number of terms specified by IR (%d) and PR (%d) is inconsistent.\n",
+					  THISFUNCTION,mxGetM(IR_IN)*mxGetN(IR_IN),mxGetM(PR_IN)*mxGetN(PR_IN));
+			mexErrMsgTxt(" ");
+		}
+
+		if (mxGetM(PR_IN)*mxGetN(PR_IN)) {
+			prd = mxGetPr(PR_IN);
+			pr  = mxGetPr(A_OUT);
+			for (i=0; i<mxGetM(PR_IN)*mxGetN(PR_IN); i++)
+				pr[i]=prd[i];
+		}
+	}
+
+	else {
+		mexPrintf("%s -- Populating sparse matrix terms with ones.\n",THISFUNCTION);
+		mexWarnMsgTxt(" ");
+
+		if (mxGetM(IR_IN)*mxGetN(IR_IN)) {
+			pr  = mxGetPr(A_OUT);
+			for (i=0; i<mxGetM(IR_IN)*mxGetN(IR_IN); i++)
+				pr[i]=1.;
+		}
+	}
+
+	mexPrintf("%s -- Output matrix is of size %d by %d with %d non-zeroes.\n",
+			  THISFUNCTION,min,nin,mxGetM(IR_IN)*mxGetN(IR_IN));
+
+	return;
+}
+
+void VectorToSparseUsage( void )
+{
+
+    mexPrintf("\n");
+    mexPrintf("Usage: [a]=VectorToSparse(ir,jc,pr,m,n);\n");
+    mexPrintf("\n");
+
+    return;
+}
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/scotch.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/scotch.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/scotch.patch	(revision 21239)
@@ -0,0 +1,2418 @@
+Only in src: bin
+Only in src: include
+Only in src: lib
+diff -crB scotch_5.1/src/libscotch/arch.c src/src/libscotch/arch.c
+*** scotch_5.1/src/libscotch/arch.c	2008-09-27 07:48:01.000000000 -0700
+--- src/src/libscotch/arch.c	2013-05-06 14:14:11.000000000 -0700
+***************
+*** 173,187 ****
+  int
+  archLoad (
+  Arch * restrict const       archptr,
+! FILE * const                stream)
+  {
+    const ArchClass * restrict  class;              /* Pointer to architecture class */
+    char                        name[256];          /* Architecture name string      */
+  
+    if (fscanf (stream, "%255s", name) != 1) {      /* Read architecture name */
+      errorPrint ("archLoad: cannot load architecture type");
+      return     (1);
+    }
+    name[255] = '\0';                               /* Set end of string */
+  
+    if ((class = archClass (name)) == NULL) {       /* Get class from its name */
+--- 173,203 ----
+  int
+  archLoad (
+  Arch * restrict const       archptr,
+! FILE * const                stream
+! #ifdef NOFILEIO
+!                                   ,
+! const char *                archtyp,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+  {
+    const ArchClass * restrict  class;              /* Pointer to architecture class */
+    char                        name[256];          /* Architecture name string      */
+  
++ #ifdef NOFILEIO
++ //  printf("archLoad - stream=%p; archtyp=\"%s\"\n",stream,archtyp);
++ //  printf("archLoad - napar=%d,archpar=%p\n",napar,archpar);
++ #endif /* NOFILEIO */
++ 
++ #ifndef NOFILEIO
+    if (fscanf (stream, "%255s", name) != 1) {      /* Read architecture name */
+      errorPrint ("archLoad: cannot load architecture type");
+      return     (1);
+    }
++ #else /* NOFILEIO */
++   strcpy(name,archtyp);
++ #endif /* NOFILEIO */
+    name[255] = '\0';                               /* Set end of string */
+  
+    if ((class = archClass (name)) == NULL) {       /* Get class from its name */
+***************
+*** 190,196 ****
+--- 206,216 ----
+    }
+  
+    if (class->archLoad != NULL) {                  /* If class has loading function */
++ #ifndef NOFILEIO
+      if (class->archLoad (&archptr->data, stream) != 0) { /* Load class data        */
++ #else /* NOFILEIO */
++     if (class->archLoad (&archptr->data, stream, napar, archpar) != 0) { /* Load class data        */
++ #endif /* NOFILEIO */
+        errorPrint ("archLoad: cannot load architecture data");
+        memset     (archptr, 0, sizeof (Arch));     /* Initialize architecture body */
+        return     (1);
+diff -crB scotch_5.1/src/libscotch/arch_cmplt.c src/src/libscotch/arch_cmplt.c
+*** scotch_5.1/src/libscotch/arch_cmplt.c	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_cmplt.c	2013-05-06 14:14:11.000000000 -0700
+***************
+*** 90,99 ****
+  int
+  archCmpltArchLoad (
+  ArchCmplt * restrict const  archptr,
+! FILE * restrict const       stream)
+  {
+    long                numnbr;
+  
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchCmplt)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchCmpltDom) > sizeof (ArchDomDummy))) {
+--- 90,109 ----
+  int
+  archCmpltArchLoad (
+  ArchCmplt * restrict const  archptr,
+! FILE * restrict const       stream
+! #ifdef NOFILEIO
+!                                   ,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+  {
+    long                numnbr;
+  
++ #ifdef NOFILEIO
++ //  printf("archCmpltArchLoad - napar=%d,archpar=%p\n",napar,archpar);
++ #endif /* NOFILEIO */
++ 
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchCmplt)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchCmpltDom) > sizeof (ArchDomDummy))) {
+***************
+*** 102,109 ****
+--- 112,124 ----
+    }
+  #endif /* SCOTCH_DEBUG_ARCH1 */
+  
++ #ifndef NOFILEIO
+    if ((fscanf (stream, "%ld", &numnbr) != 1) ||
+        (numnbr < 1)) {
++ #else /* NOFILEIO */
++   if ((napar < 1) ||
++       ((numnbr=(long)archpar[0]) < 1)) {
++ #endif /* NOFILEIO */
+      errorPrint ("archCmpltArchLoad: bad input");
+      return     (1);
+    }
+diff -crB scotch_5.1/src/libscotch/arch_cmplt.h src/src/libscotch/arch_cmplt.h
+*** scotch_5.1/src/libscotch/arch_cmplt.h	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_cmplt.h	2013-05-06 14:14:11.000000000 -0700
+***************
+*** 87,93 ****
+--- 87,97 ----
+  #define static
+  #endif
+  
++ #ifndef NOFILEIO
+  int                         archCmpltArchLoad   (ArchCmplt * restrict const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         archCmpltArchLoad   (ArchCmplt * restrict const, FILE * restrict const, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archCmpltArchSave   (const ArchCmplt * const, FILE * restrict const);
+  #define archCmpltArchFree           NULL
+  ArchDomNum                  archCmpltDomNum     (const ArchCmplt * const, const ArchCmpltDom * const);
+diff -crB scotch_5.1/src/libscotch/arch_cmpltw.c src/src/libscotch/arch_cmpltw.c
+*** scotch_5.1/src/libscotch/arch_cmpltw.c	2008-08-27 14:22:22.000000000 -0700
+--- src/src/libscotch/arch_cmpltw.c	2013-05-06 14:14:12.000000000 -0700
+***************
+*** 200,211 ****
+  int
+  archCmpltwArchLoad (
+  ArchCmpltw * restrict const  archptr,
+! FILE * restrict const       stream)
+  {
+    long                vertnbr;
+    Gnum                velosum;
+    Anum                vertnum;
+  
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchCmpltw)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchCmpltwDom) > sizeof (ArchDomDummy))) {
+--- 200,221 ----
+  int
+  archCmpltwArchLoad (
+  ArchCmpltw * restrict const  archptr,
+! FILE * restrict const       stream
+! #ifdef NOFILEIO
+!                                   ,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+  {
+    long                vertnbr;
+    Gnum                velosum;
+    Anum                vertnum;
+  
++ #ifdef NOFILEIO
++ //  printf("archCmpltwArchLoad - napar=%d,archpar=%p\n",napar,archpar);
++ #endif /* NOFILEIO */
++ 
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchCmpltw)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchCmpltwDom) > sizeof (ArchDomDummy))) {
+***************
+*** 214,221 ****
+--- 224,236 ----
+    }
+  #endif /* SCOTCH_DEBUG_ARCH1 */
+  
++ #ifndef NOFILEIO
+    if ((fscanf (stream, "%ld", &vertnbr) != 1) ||
+        (vertnbr < 1)) {
++ #else /* NOFILEIO */
++   if ((napar < 1) ||
++       ((vertnbr=(long)archpar[0]) < 1)) {
++ #endif /* NOFILEIO */
+      errorPrint ("archCmpltwArchLoad: bad input (1)");
+      return     (1);
+    }
+***************
+*** 230,237 ****
+--- 245,257 ----
+      long                veloval;
+      Gnum                velotmp;
+  
++ #ifndef NOFILEIO
+      if ((fscanf (stream, "%ld", &veloval) != 1) ||
+          (veloval < 1)) {
++ #else /* NOFILEIO */
++     if ((napar < 1+(vertnum+1)) ||
++         ((veloval=(long)archpar[1+(vertnum+1)]) < 1)) {
++ #endif /* NOFILEIO */
+        errorPrint ("archCmpltwArchLoad: bad input (2)");
+        return     (1);
+      }
+diff -crB scotch_5.1/src/libscotch/arch_cmpltw.h src/src/libscotch/arch_cmpltw.h
+*** scotch_5.1/src/libscotch/arch_cmpltw.h	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_cmpltw.h	2013-05-06 14:14:12.000000000 -0700
+***************
+*** 86,92 ****
+--- 86,96 ----
+  #endif
+  
+  int                         archCmpltwArchBuild (ArchCmpltw * restrict const archptr, const Gnum, const Gnum * restrict const);
++ #ifndef NOFILEIO
+  int                         archCmpltwArchLoad  (ArchCmpltw * restrict const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         archCmpltwArchLoad  (ArchCmpltw * restrict const, FILE * restrict const, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archCmpltwArchSave  (const ArchCmpltw * const, FILE * restrict const);
+  int                         archCmpltwArchFree  (ArchCmpltw * restrict const);
+  ArchDomNum                  archCmpltwDomNum    (const ArchCmpltw * const, const ArchCmpltwDom * const);
+diff -crB scotch_5.1/src/libscotch/arch_deco.c src/src/libscotch/arch_deco.c
+*** scotch_5.1/src/libscotch/arch_deco.c	2008-09-28 06:35:27.000000000 -0700
+--- src/src/libscotch/arch_deco.c	2013-05-06 14:14:12.000000000 -0700
+***************
+*** 211,217 ****
+  int
+  archDecoArchLoad (
+  ArchDeco * restrict const   archptr,
+! FILE * restrict const       stream)
+  {
+    INT                         decotype;           /* Type of decomposition                            */
+    INT                         termdomnbr;         /* Number of terminal domains (ie processors)       */
+--- 211,223 ----
+  int
+  archDecoArchLoad (
+  ArchDeco * restrict const   archptr,
+! FILE * restrict const       stream
+! #ifdef NOFILEIO
+!                                   ,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+  {
+    INT                         decotype;           /* Type of decomposition                            */
+    INT                         termdomnbr;         /* Number of terminal domains (ie processors)       */
+***************
+*** 220,225 ****
+--- 226,237 ----
+    Anum * restrict             termdisttab;        /* Table of terminal-to-terminal distances          */
+    INT                         i, j;
+  
++ #ifdef NOFILEIO
++ //  printf("archDecoArchLoad - napar=%d,archpar=%p\n",napar,archpar);
++   errorPrint ("archDecoArchLoad - not yet converted to matlab matrices");
++   return     (1);
++ #endif /* NOFILEIO */
++ 
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchDeco)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchDecoDom) > sizeof (ArchDomDummy))) {
+diff -crB scotch_5.1/src/libscotch/arch_deco.h src/src/libscotch/arch_deco.h
+*** scotch_5.1/src/libscotch/arch_deco.h	2008-09-27 07:49:46.000000000 -0700
+--- src/src/libscotch/arch_deco.h	2013-05-06 14:14:13.000000000 -0700
+***************
+*** 113,119 ****
+--- 113,123 ----
+  #endif
+  
+  int                         archDecoArchBuild   (ArchDeco * const, const Anum, const Anum, const ArchDecoTermVert * const, const Anum  * const);
++ #ifndef NOFILEIO
+  int                         archDecoArchLoad    (ArchDeco * const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         archDecoArchLoad    (ArchDeco * const, FILE * restrict const, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archDecoArchSave    (const ArchDeco * const, FILE * restrict const);
+  int                         archDecoArchFree    (ArchDeco * const);
+  Anum                        archDecoArchSize    (ArchDeco * const, const Anum);
+diff -crB scotch_5.1/src/libscotch/arch.h src/src/libscotch/arch.h
+*** scotch_5.1/src/libscotch/arch.h	2009-04-28 08:11:27.000000000 -0700
+--- src/src/libscotch/arch.h	2013-05-06 14:14:13.000000000 -0700
+***************
+*** 175,181 ****
+--- 175,185 ----
+  int                         archInit            (Arch * restrict const);
+  int                         archExit            (Arch * restrict const);
+  int                         archFree            (Arch * restrict const);
++ #ifndef NOFILEIO
+  int                         archLoad            (Arch * restrict const, FILE * const);
++ #else /* NOFILEIO */
++ int                         archLoad            (Arch * restrict const, FILE * const, const char *, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archSave            (const Arch * const, FILE * const);
+  char *                      archName            (const Arch * const);
+  const ArchClass *           archClass           (const char * const);
+diff -crB scotch_5.1/src/libscotch/arch_hcub.c src/src/libscotch/arch_hcub.c
+*** scotch_5.1/src/libscotch/arch_hcub.c	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_hcub.c	2013-05-06 14:14:13.000000000 -0700
+***************
+*** 88,95 ****
+  int
+  archHcubArchLoad (
+  ArchHcub * restrict const   archptr,
+! FILE * restrict const       stream)
+  {
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchHcub)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchHcubDom) > sizeof (ArchDomDummy))) {
+--- 88,105 ----
+  int
+  archHcubArchLoad (
+  ArchHcub * restrict const   archptr,
+! FILE * restrict const       stream
+! #ifdef NOFILEIO
+!                                   ,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+  {
++ #ifdef NOFILEIO
++ //  printf("archHcubArchLoad - napar=%d,archpar=%p\n",napar,archpar);
++ #endif /* NOFILEIO */
++ 
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchHcub)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchHcubDom) > sizeof (ArchDomDummy))) {
+***************
+*** 98,105 ****
+--- 108,120 ----
+    }
+  #endif /* SCOTCH_DEBUG_ARCH1 */
+  
++ #ifndef NOFILEIO
+    if ((intLoad (stream, &archptr->dimmax) != 1) ||
+        (archptr->dimmax < 1)                     ||
++ #else /* NOFILEIO */
++   if ((napar < 1)                        ||
++       ((archptr->dimmax=archpar[0]) < 1) ||
++ #endif /* NOFILEIO */
+        (archptr->dimmax > (sizeof (archptr->dimmax) << 3))) {
+      errorPrint ("archHcubArchLoad: bad input");
+      return     (1);
+diff -crB scotch_5.1/src/libscotch/arch_hcub.h src/src/libscotch/arch_hcub.h
+*** scotch_5.1/src/libscotch/arch_hcub.h	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_hcub.h	2013-05-06 14:14:14.000000000 -0700
+***************
+*** 85,91 ****
+--- 85,95 ----
+  #define static
+  #endif
+  
++ #ifndef NOFILEIO
+  int                         archHcubArchLoad    (ArchHcub * restrict const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         archHcubArchLoad    (ArchHcub * restrict const, FILE * restrict const, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archHcubArchSave    (const ArchHcub * const, FILE * restrict const);
+  #define archHcubArchFree            NULL
+  ArchDomNum                  archHcubDomNum      (const ArchHcub * const, const ArchHcubDom * const);
+diff -crB scotch_5.1/src/libscotch/arch_mesh.c src/src/libscotch/arch_mesh.c
+*** scotch_5.1/src/libscotch/arch_mesh.c	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_mesh.c	2013-05-06 14:14:14.000000000 -0700
+***************
+*** 96,103 ****
+  int
+  archMesh2ArchLoad (
+  ArchMesh2 * restrict const  archptr,
+! FILE * restrict const       stream)
+! {
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchMesh2)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchMesh2Dom) > sizeof (ArchDomDummy))) {
+--- 96,113 ----
+  int
+  archMesh2ArchLoad (
+  ArchMesh2 * restrict const  archptr,
+! FILE * restrict const       stream
+! #ifdef NOFILEIO
+!                                   ,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+! {
+! #ifdef NOFILEIO
+! //  printf("archMesh2ArchLoad - napar=%d,archpar=%p\n",napar,archpar);
+! #endif /* NOFILEIO */
+! 
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchMesh2)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchMesh2Dom) > sizeof (ArchDomDummy))) {
+***************
+*** 106,114 ****
+--- 116,130 ----
+    }
+  #endif /* SCOTCH_DEBUG_ARCH1 */
+  
++ #ifndef NOFILEIO
+    if ((intLoad (stream, &archptr->c[0]) != 1) ||
+        (intLoad (stream, &archptr->c[1]) != 1) ||
+        (archptr->c[0] < 1) || (archptr->c[1] < 1)) {
++ #else /* NOFILEIO */
++   if ((napar < 2)                      ||
++       ((archptr->c[0]=archpar[0]) < 1) ||
++       ((archptr->c[1]=archpar[1]) < 1)) {
++ #endif /* NOFILEIO */
+      errorPrint ("archMesh2ArchLoad: bad input");
+      return     (1);
+    }
+***************
+*** 421,428 ****
+  int
+  archMesh3ArchLoad (
+  ArchMesh3 * restrict const  archptr,
+! FILE * restrict const       stream)
+! {
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchMesh3)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchMesh3Dom) > sizeof (ArchDomDummy))) {
+--- 437,454 ----
+  int
+  archMesh3ArchLoad (
+  ArchMesh3 * restrict const  archptr,
+! FILE * restrict const       stream
+! #ifdef NOFILEIO
+!                                   ,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+! {
+! #ifdef NOFILEIO
+! //  printf("archMesh3ArchLoad - napar=%d,archpar=%p\n",napar,archpar);
+! #endif /* NOFILEIO */
+! 
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchMesh3)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchMesh3Dom) > sizeof (ArchDomDummy))) {
+***************
+*** 431,440 ****
+--- 457,473 ----
+    }
+  #endif /* SCOTCH_DEBUG_ARCH1 */
+  
++ #ifndef NOFILEIO
+    if ((intLoad (stream, &archptr->c[0]) != 1) ||
+        (intLoad (stream, &archptr->c[1]) != 1) ||
+        (intLoad (stream, &archptr->c[2]) != 1) ||
+        (archptr->c[0] < 1) || (archptr->c[1] < 1) || (archptr->c[2] < 1)) {
++ #else /* NOFILEIO */
++   if ((napar < 3)                      ||
++       ((archptr->c[0]=archpar[0]) < 1) ||
++       ((archptr->c[1]=archpar[1]) < 1) ||
++       ((archptr->c[2]=archpar[2]) < 1)) {
++ #endif /* NOFILEIO */
+      errorPrint ("archMesh3ArchLoad: bad input");
+      return     (1);
+    }
+diff -crB scotch_5.1/src/libscotch/arch_mesh.h src/src/libscotch/arch_mesh.h
+*** scotch_5.1/src/libscotch/arch_mesh.h	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_mesh.h	2013-05-06 14:14:14.000000000 -0700
+***************
+*** 96,102 ****
+--- 96,106 ----
+  #define static
+  #endif
+  
++ #ifndef NOFILEIO
+  int                         archMesh2ArchLoad   (ArchMesh2 * restrict const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         archMesh2ArchLoad   (ArchMesh2 * restrict const, FILE * restrict const, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archMesh2ArchSave   (const ArchMesh2 * const, FILE * restrict const);
+  #define archMesh2ArchFree           NULL
+  ArchDomNum                  archMesh2DomNum     (const ArchMesh2 * const, const ArchMesh2Dom * const);
+***************
+*** 114,120 ****
+--- 118,128 ----
+  int                         archMesh2DomMpiType (const ArchMesh2 * const, MPI_Datatype * const);
+  #endif /* SCOTCH_PTSCOTCH */
+  
++ #ifndef NOFILEIO
+  int                         archMesh3ArchLoad   (ArchMesh3 * restrict const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         archMesh3ArchLoad   (ArchMesh3 * restrict const, FILE * restrict const, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archMesh3ArchSave   (const ArchMesh3 * const, FILE * restrict const);
+  #define archMesh3ArchFree           NULL
+  ArchDomNum                  archMesh3DomNum     (const ArchMesh3 * const, const ArchMesh3Dom * const);
+diff -crB scotch_5.1/src/libscotch/arch_tleaf.c src/src/libscotch/arch_tleaf.c
+*** scotch_5.1/src/libscotch/arch_tleaf.c	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_tleaf.c	2013-05-06 14:14:14.000000000 -0700
+***************
+*** 92,99 ****
+  int
+  archTleafArchLoad (
+  ArchTleaf * restrict const  archptr,
+! FILE * restrict const       stream)
+  {
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchTleaf)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchTleafDom) > sizeof (ArchDomDummy))) {
+--- 92,109 ----
+  int
+  archTleafArchLoad (
+  ArchTleaf * restrict const  archptr,
+! FILE * restrict const       stream
+! #ifdef NOFILEIO
+!                                   ,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+  {
++ #ifdef NOFILEIO
++ //  printf("archTleafArchLoad - napar=%d,archpar=%p\n",napar,archpar);
++ #endif /* NOFILEIO */
++ 
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchTleaf)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchTleafDom) > sizeof (ArchDomDummy))) {
+***************
+*** 102,107 ****
+--- 112,118 ----
+    }
+  #endif /* SCOTCH_DEBUG_ARCH1 */
+  
++ #ifndef NOFILEIO
+    if ((intLoad (stream, &archptr->leafdep) != 1) ||
+        (intLoad (stream, &archptr->clusdep) != 1) ||
+        (intLoad (stream, &archptr->linkval) != 1) ||
+***************
+*** 109,114 ****
+--- 120,132 ----
+        (archptr->clusdep < 0)                     ||
+        (archptr->clusdep > archptr->leafdep)      ||
+        (archptr->linkval < 1)) {
++ #else /* NOFILEIO */
++   if ((napar < 3)                            ||
++       ((archptr->leafdep=archpar[0]) < 1)    ||
++       ((archptr->clusdep=archpar[1]) < 0)    ||
++       ( archptr->clusdep > archptr->leafdep) ||
++       ((archptr->linkval=archpar[2]) < 1)) {
++ #endif /* NOFILEIO */
+      errorPrint ("archTleafArchLoad: bad input");
+      return     (1);
+    }
+diff -crB scotch_5.1/src/libscotch/arch_tleaf.h src/src/libscotch/arch_tleaf.h
+*** scotch_5.1/src/libscotch/arch_tleaf.h	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_tleaf.h	2013-05-06 14:14:15.000000000 -0700
+***************
+*** 89,95 ****
+--- 89,99 ----
+  #define static
+  #endif
+  
++ #ifndef NOFILEIO
+  int                         archTleafArchLoad   (ArchTleaf * restrict const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         archTleafArchLoad   (ArchTleaf * restrict const, FILE * restrict const, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archTleafArchSave   (const ArchTleaf * const, FILE * restrict const);
+  #define archTleafArchFree           NULL
+  ArchDomNum                  archTleafDomNum     (const ArchTleaf * const, const ArchTleafDom * const);
+diff -crB scotch_5.1/src/libscotch/arch_torus.c src/src/libscotch/arch_torus.c
+*** scotch_5.1/src/libscotch/arch_torus.c	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_torus.c	2013-05-06 14:14:15.000000000 -0700
+***************
+*** 90,97 ****
+  int
+  archTorus2ArchLoad (
+  ArchTorus2 * restrict const archptr,
+! FILE * restrict const       stream)
+! {
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchTorus2)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchTorus2Dom) > sizeof (ArchDomDummy))) {
+--- 90,107 ----
+  int
+  archTorus2ArchLoad (
+  ArchTorus2 * restrict const archptr,
+! FILE * restrict const       stream
+! #ifdef NOFILEIO
+!                                   ,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+! {
+! #ifdef NOFILEIO
+! //  printf("archTorus2ArchLoad - napar=%d,archpar=%p\n",napar,archpar);
+! #endif /* NOFILEIO */
+! 
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchTorus2)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchTorus2Dom) > sizeof (ArchDomDummy))) {
+***************
+*** 100,108 ****
+--- 110,124 ----
+    }
+  #endif /* SCOTCH_DEBUG_ARCH1 */
+  
++ #ifndef NOFILEIO
+    if ((intLoad (stream, &archptr->c[0]) != 1) ||
+        (intLoad (stream, &archptr->c[1]) != 1) ||
+        (archptr->c[0] < 1) || (archptr->c[1] < 1)) {
++ #else /* NOFILEIO */
++   if ((napar < 2)                      ||
++       ((archptr->c[0]=archpar[0]) < 1) ||
++       ((archptr->c[1]=archpar[1]) < 1)) {
++ #endif /* NOFILEIO */
+      errorPrint ("archTorus2ArchLoad: bad input");
+      return     (1);
+    }
+***************
+*** 363,370 ****
+  int
+  archTorus3ArchLoad (
+  ArchTorus3 * restrict const archptr,
+! FILE * restrict const       stream)
+! {
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchTorus3)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchTorus3Dom) > sizeof (ArchDomDummy))) {
+--- 379,396 ----
+  int
+  archTorus3ArchLoad (
+  ArchTorus3 * restrict const archptr,
+! FILE * restrict const       stream
+! #ifdef NOFILEIO
+!                                   ,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+! {
+! #ifdef NOFILEIO
+! //  printf("archTorus3ArchLoad - napar=%d,archpar=%p\n",napar,archpar);
+! #endif /* NOFILEIO */
+! 
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchTorus3)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchTorus3Dom) > sizeof (ArchDomDummy))) {
+***************
+*** 373,382 ****
+--- 399,415 ----
+    }
+  #endif /* SCOTCH_DEBUG_ARCH1 */
+  
++ #ifndef NOFILEIO
+    if ((intLoad (stream, &archptr->c[0]) != 1) ||
+        (intLoad (stream, &archptr->c[1]) != 1) ||
+        (intLoad (stream, &archptr->c[2]) != 1) ||
+        (archptr->c[0] < 1) || (archptr->c[1] < 1) || (archptr->c[2] < 1)) {
++ #else /* NOFILEIO */
++   if ((napar < 3)                      ||
++       ((archptr->c[0]=archpar[0]) < 1) ||
++       ((archptr->c[1]=archpar[1]) < 1) ||
++       ((archptr->c[2]=archpar[2]) < 1)) {
++ #endif /* NOFILEIO */
+      errorPrint ("archTorus3ArchLoad: bad input");
+      return     (1);
+    }
+diff -crB scotch_5.1/src/libscotch/arch_torus.h src/src/libscotch/arch_torus.h
+*** scotch_5.1/src/libscotch/arch_torus.h	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_torus.h	2013-05-06 14:14:15.000000000 -0700
+***************
+*** 96,102 ****
+--- 96,106 ----
+  #define static
+  #endif
+  
++ #ifndef NOFILEIO
+  int                         archTorus2ArchLoad  (ArchTorus2 * restrict const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         archTorus2ArchLoad  (ArchTorus2 * restrict const, FILE * restrict const, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archTorus2ArchSave  (const ArchTorus2 * const, FILE * restrict const);
+  #define archTorus2ArchFree          NULL
+  ArchDomNum                  archTorus2DomNum    (const ArchTorus2 * const, const ArchTorus2Dom * const);
+***************
+*** 114,120 ****
+--- 118,128 ----
+  int                         archTorus2DomMpiType (const ArchTorus2 * const, MPI_Datatype * const);
+  #endif /* SCOTCH_PTSCOTCH */
+  
++ #ifndef NOFILEIO
+  int                         archTorus3ArchLoad  (ArchTorus3 * restrict const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         archTorus3ArchLoad  (ArchTorus3 * restrict const, FILE * restrict const, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archTorus3ArchSave  (const ArchTorus3 * const, FILE * restrict const);
+  #define archTorus3ArchFree          NULL
+  ArchDomNum                  archTorus3DomNum    (const ArchTorus3 * const, const ArchTorus3Dom * const);
+diff -crB scotch_5.1/src/libscotch/common.c src/src/libscotch/common.c
+*** scotch_5.1/src/libscotch/common.c	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/common.c	2013-05-06 14:14:15.000000000 -0700
+***************
+*** 100,106 ****
+--- 100,112 ----
+  {
+    const char **       cptr;
+  
++ #ifndef MATLAB
+    fprintf (stream, "Usage is:\n");
+    for (cptr = data; *cptr != NULL; cptr ++)
+      fprintf (stream, "  %s\n", *cptr);
++ #else /* MATLAB */
++   mexPrintf ("Usage is:\n");
++   for (cptr = data; *cptr != NULL; cptr ++)
++     mexPrintf ("  %s\n", *cptr);
++ #endif /* MATLAB */
+  }
+diff -crB scotch_5.1/src/libscotch/common.h src/src/libscotch/common.h
+*** scotch_5.1/src/libscotch/common.h	2009-02-06 14:20:55.000000000 -0800
+--- src/src/libscotch/common.h	2013-05-09 11:49:35.317220518 -0700
+***************
+*** 1,3 ****
+--- 1,5 ----
++ #ifndef _SCOTCH_COMMON_H_
++ #define _SCOTCH_COMMON_H_
+  /* Copyright 2004,2007-2009 ENSEIRB, INRIA & CNRS
+  **
+  ** This file is part of the Scotch software package for static mapping,
+***************
+*** 79,84 ****
+--- 81,87 ----
+  #include            <sys/resource.h>
+  #endif /* COMMON_TIMING_OLD */
+  #include            <unistd.h>
++ #include            <sys/param.h>
+  
+  #ifdef SCOTCH_PTSCOTCH
+  #include            <mpi.h>
+***************
+*** 106,113 ****
+  #define memCpy(dst,src,siz)         memcpy((dst),(src),(siz))
+  #define memMov(dst,src,siz)         memmove((dst),(src),(siz))
+  
+- #define MIN(x,y)                    (((x) < (y)) ? (x) : (y))
+- #define MAX(x,y)                    (((x) < (y)) ? (y) : (x))
+  #define ABS(x)                      MAX ((x), -(x))
+  #define SIGN(x)                     (((x) < 0) ? -1 : 1)
+  
+--- 109,114 ----
+***************
+*** 171,179 ****
+  /** The file structure. **/
+  
+  typedef struct File_ {
+!   char *                    name;                 /*+ File name    +*/
+    FILE *                    pntr;                 /*+ File pointer +*/
+!   char *                    mode;                 /*+ Opening mode +*/
+  } File;
+  
+  /*
+--- 172,180 ----
+  /** The file structure. **/
+  
+  typedef struct File_ {
+!   const char *              name;                 /*+ File name    +*/
+    FILE *                    pntr;                 /*+ File pointer +*/
+!   const char *              mode;                 /*+ Opening mode +*/
+  } File;
+  
+  /*
+***************
+*** 190,216 ****
+  size_t                      memMax              ();
+  #endif /* COMMON_MEMORY_TRACE */
+  
+- void                        usagePrint          (FILE * const, const char (* []));
+  
+- int                         fileBlockOpen       (File * const, const int);
+  int                         fileBlockOpenDist   (File * const, const int, const int, const int, const int);
+- void                        fileBlockClose      (File * const, const int);
+  FILE *                      fileCompress        (FILE * const, const int);
+  int                         fileCompressType    (const char * const);
+  FILE *                      fileUncompress      (FILE * const, const int);
+  int                         fileUncompressType  (const char * const);
+  int                         fileNameDistExpand  (char ** const, const int, const int, const int);
+  
+  void                        errorProg           (const char * const);
+  void                        errorPrint          (const char * const, ...);
+  void                        errorPrintW         (const char * const, ...);
+  
+  int                         intLoad             (FILE * const, INT * const);
+  int                         intSave             (FILE * const, const INT);
+  void                        intAscn             (INT * const, const INT, const INT);
+  void                        intPerm             (INT * const, const INT);
+  void                        intRandReset        (void);
+- void                        intRandInit         (void);
+  INT                         intRandVal          (INT);
+  void                        intSort1asc1        (void * const, const INT);
+  void                        intSort2asc1        (void * const, const INT);
+--- 191,227 ----
+  size_t                      memMax              ();
+  #endif /* COMMON_MEMORY_TRACE */
+  
+  
+  int                         fileBlockOpenDist   (File * const, const int, const int, const int, const int);
+  FILE *                      fileCompress        (FILE * const, const int);
+  int                         fileCompressType    (const char * const);
+  FILE *                      fileUncompress      (FILE * const, const int);
+  int                         fileUncompressType  (const char * const);
+  int                         fileNameDistExpand  (char ** const, const int, const int, const int);
+  
++ #ifdef __cplusplus
++ extern "C" {
++ #endif /* __cplusplus */
++ 
+  void                        errorProg           (const char * const);
+  void                        errorPrint          (const char * const, ...);
+  void                        errorPrintW         (const char * const, ...);
++ double                      clockGet            (void);
++ void                        usagePrint          (FILE * const, const char (* []));
++ void                        intRandInit         (void);
++ int                         fileBlockOpen       (File * const, const int);
++ void                        fileBlockClose      (File * const, const int);
++ void                        intRandResetStatic  (void);
++ 
++ #ifdef __cplusplus
++ }
++ #endif /* __cplusplus */
+  
+  int                         intLoad             (FILE * const, INT * const);
+  int                         intSave             (FILE * const, const INT);
+  void                        intAscn             (INT * const, const INT, const INT);
+  void                        intPerm             (INT * const, const INT);
+  void                        intRandReset        (void);
+  INT                         intRandVal          (INT);
+  void                        intSort1asc1        (void * const, const INT);
+  void                        intSort2asc1        (void * const, const INT);
+***************
+*** 221,227 ****
+  void                        clockStart          (Clock * const);
+  void                        clockStop           (Clock * const);
+  double                      clockVal            (Clock * const);
+- double                      clockGet            (void);
+  
+  /*
+  **  Macro definitions.
+--- 232,237 ----
+***************
+*** 249,251 ****
+--- 259,263 ----
+  void nl##__ pl                                   \
+  { nu pc; }                                       \
+  void nu pl
++ 
++ #endif //#ifndef _SCOTCH_COMMON_H_
+diff -crB scotch_5.1/src/libscotch/common_integer.c src/src/libscotch/common_integer.c
+*** scotch_5.1/src/libscotch/common_integer.c	2009-01-21 01:32:32.000000000 -0800
+--- src/src/libscotch/common_integer.c	2013-05-06 14:14:16.000000000 -0700
+***************
+*** 191,196 ****
+--- 191,209 ----
+  static volatile int intrandflag = 0;              /*+ Flag set if generator already initialized +*/
+  static unsigned int intrandseed = 1;              /*+ Random seed                               +*/
+  
++ void
++ intRandResetStatic (void)
++ {
++ #ifdef MATLAB
++ //  printf("intRandResetStatic begin - intrandflag=%d,intrandseed=%d\n",intrandflag,intrandseed);
++ #endif /* MATLAB */
++   intrandflag = 0;              /*+ Flag set if generator already initialized +*/
++   intrandseed = 1;              /*+ Random seed                               +*/
++ #ifdef MATLAB
++ //  printf("intRandResetStatic end   - intrandflag=%d,intrandseed=%d\n",intrandflag,intrandseed);
++ #endif /* MATLAB */
++ }
++ 
+  /* This routine initializes the pseudo-random
+  ** generator if necessary. In order for multi-sequential
+  ** programs to have exactly the same behavior on any
+***************
+*** 205,210 ****
+--- 218,226 ----
+  void
+  intRandInit (void)
+  {
++ #ifdef MATLAB
++ //  printf("intRandInit begin - intrandflag=%d,intrandseed=%d\n",intrandflag,intrandseed);
++ #endif /* MATLAB */
+    if (intrandflag == 0) {                         /* If generator not yet initialized */
+  #if ! ((defined COMMON_DEBUG) || (defined COMMON_RANDOM_FIXED_SEED) || (defined SCOTCH_DETERMINISTIC))
+      intrandseed = time (NULL);                    /* Set random seed if needed */
+***************
+*** 216,221 ****
+--- 232,240 ----
+  #endif /* COMMON_RANDOM_RAND */
+      intrandflag = 1;                              /* Generator has been initialized */
+    }
++ #ifdef MATLAB
++ //  printf("intRandInit end   - intrandflag=%d,intrandseed=%d\n",intrandflag,intrandseed);
++ #endif /* MATLAB */
+  }
+  
+  /* This routine reinitializes the pseudo-random
+***************
+*** 228,233 ****
+--- 247,255 ----
+  void
+  intRandReset (void)
+  {
++ #ifdef MATLAB
++ //  printf("intRandReset begin - intrandflag=%d,intrandseed=%d\n",intrandflag,intrandseed);
++ #endif /* MATLAB */
+    if (intrandflag != 0) {                         /* Keep seed computed during first initialization */
+  #ifdef COMMON_RANDOM_RAND
+      srand (intrandseed);
+***************
+*** 237,242 ****
+--- 259,267 ----
+    }
+    else
+      intRandInit ();
++ #ifdef MATLAB
++ //  printf("intRandReset end   - intrandflag=%d,intrandseed=%d\n",intrandflag,intrandseed);
++ #endif /* MATLAB */
+  }
+  
+  /*********************/
+diff -crB scotch_5.1/src/libscotch/common_memory.c src/src/libscotch/common_memory.c
+*** scotch_5.1/src/libscotch/common_memory.c	2009-01-03 02:16:11.000000000 -0800
+--- src/src/libscotch/common_memory.c	2013-05-06 14:14:16.000000000 -0700
+***************
+*** 87,93 ****
+--- 87,95 ----
+    size_t              newadd;
+    byte *              newptr;
+  
++   printf("memAllocRecord begin -- memorysiz=%d,memorymax=%d\n",memorysiz,memorymax);
+  #if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD))
++   printf("memAllocRecord begin -- muteflag=%d,mutelocdat=%p\n",muteflag,mutelocdat);
+    if (muteflag != 0) {                            /* Unsafe code with respect to race conditions but should work as first allocs are sequential */
+      muteflag = 0;
+      pthread_mutex_init (&mutelocdat, NULL);       /* Initialize local mutex */
+***************
+*** 109,116 ****
+--- 111,120 ----
+  
+  #if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD))
+    pthread_mutex_unlock (&mutelocdat);             /* Unlock local mutex */
++   printf("memAllocRecord end   -- muteflag=%d,mutelocdat=%p\n",muteflag,mutelocdat);
+  #endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */
+  
++   printf("memAllocRecord end   -- memorysiz=%d,memorymax=%d\n",memorysiz,memorymax);
+    return ((void *) newptr);                       /* Return skewed pointer or NULL */
+  }
+  
+***************
+*** 124,133 ****
+--- 128,139 ----
+    size_t              oldsiz;
+    size_t              newadd;
+  
++   printf("memReallocRecord begin -- memorysiz=%d,memorymax=%d\n",memorysiz,memorymax);
+    tmpptr = ((byte *) oldptr) - COMMON_MEMORY_SKEW;
+    oldsiz = *((size_t *) tmpptr);
+  
+  #if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD))
++   printf("memReallocRecord begin -- muteflag=%d,mutelocdat=%p\n",muteflag,mutelocdat);
+    pthread_mutex_lock (&mutelocdat);               /* Lock local mutex */
+  #endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */
+  
+***************
+*** 145,152 ****
+--- 151,160 ----
+  
+  #if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD))
+    pthread_mutex_unlock (&mutelocdat);             /* Unlock local mutex */
++   printf("memReallocRecord end   -- muteflag=%d,mutelocdat=%p\n",muteflag,mutelocdat);
+  #endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */
+  
++   printf("memReallocRecord end   -- memorysiz=%d,memorymax=%d\n",memorysiz,memorymax);
+    return ((void *) newptr);                       /* Return skewed pointer or NULL */
+  }
+  
+***************
+*** 157,166 ****
+--- 165,176 ----
+    byte *              tmpptr;
+    size_t              oldsiz;
+  
++   printf("memFreeRecord begin -- memorysiz=%d,memorymax=%d\n",memorysiz,memorymax);
+    tmpptr = ((byte *) oldptr) - COMMON_MEMORY_SKEW;
+    oldsiz = *((size_t *) tmpptr);
+  
+  #if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD))
++   printf("memFreeRecord begin -- muteflag=%d,mutelocdat=%p\n",muteflag,mutelocdat);
+    pthread_mutex_lock (&mutelocdat);               /* Lock local mutex */
+  #endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */
+  
+***************
+*** 169,175 ****
+--- 179,187 ----
+  
+  #if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD))
+    pthread_mutex_unlock (&mutelocdat);             /* Unlock local mutex */
++   printf("memFreeRecord end   -- muteflag=%d,mutelocdat=%p\n",muteflag,mutelocdat);
+  #endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */
++   printf("memFreeRecord end   -- memorysiz=%d,memorymax=%d\n",memorysiz,memorymax);
+  }
+  
+  size_t
+***************
+*** 177,183 ****
+--- 189,197 ----
+  {
+    size_t              curmax;
+  
++   printf("memMax begin -- memorysiz=%d,memorymax=%d\n",memorysiz,memorymax);
+  #if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD))
++   printf("memMax begin -- muteflag=%d,mutelocdat=%p\n",muteflag,mutelocdat);
+    pthread_mutex_lock (&mutelocdat);               /* Lock local mutex */
+  #endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */
+  
+***************
+*** 185,192 ****
+--- 199,208 ----
+  
+  #if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD))
+    pthread_mutex_unlock (&mutelocdat);             /* Unlock local mutex */
++   printf("memMax end   -- muteflag=%d,mutelocdat=%p\n",muteflag,mutelocdat);
+  #endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */
+  
++   printf("memMax end   -- memorysiz=%d,memorymax=%d\n",memorysiz,memorymax);
+    return (curmax);
+  }
+  #endif /* COMMON_MEMORY_TRACE */
+diff -crB scotch_5.1/src/libscotch/dummysizes.c src/src/libscotch/dummysizes.c
+*** scotch_5.1/src/libscotch/dummysizes.c	2009-05-09 16:08:02.000000000 -0700
+--- src/src/libscotch/dummysizes.c	2013-05-06 14:14:16.000000000 -0700
+***************
+*** 267,271 ****
+--- 267,273 ----
+    }
+  #endif /* SCOTCH_DEBUG_MAIN1 */
+  
++ #ifndef MATLAB
+    exit (0);
++ #endif /* MATLAB */
+  }
+diff -crB scotch_5.1/src/libscotch/graph.c src/src/libscotch/graph.c
+*** scotch_5.1/src/libscotch/graph.c	2008-05-22 06:44:42.000000000 -0700
+--- src/src/libscotch/graph.c	2013-05-06 14:14:17.000000000 -0700
+***************
+*** 135,141 ****
+      if ((grafptr->velotax != NULL) &&             /* Free graph tables             */
+          ((grafptr->flagval & GRAPHVERTGROUP) == 0))
+        memFree (grafptr->velotax + grafptr->baseval);
+!     if (grafptr->vlbltax != NULL)
+        memFree (grafptr->vlbltax + grafptr->baseval);
+      if ((grafptr->edlotax != NULL) &&
+          ((grafptr->flagval & GRAPHEDGEGROUP) == 0))
+--- 135,144 ----
+      if ((grafptr->velotax != NULL) &&             /* Free graph tables             */
+          ((grafptr->flagval & GRAPHVERTGROUP) == 0))
+        memFree (grafptr->velotax + grafptr->baseval);
+! /*  vlbltax must also check GRAPHVERTGROUP (jes, 12/11/09)  */
+! //    if (grafptr->vlbltax != NULL)
+!     if ((grafptr->vlbltax != NULL) &&
+!         ((grafptr->flagval & GRAPHVERTGROUP) == 0))
+        memFree (grafptr->vlbltax + grafptr->baseval);
+      if ((grafptr->edlotax != NULL) &&
+          ((grafptr->flagval & GRAPHEDGEGROUP) == 0))
+diff -crB scotch_5.1/src/libscotch/graph.h src/src/libscotch/graph.h
+*** scotch_5.1/src/libscotch/graph.h	2008-06-01 02:49:11.000000000 -0700
+--- src/src/libscotch/graph.h	2013-05-06 14:14:17.000000000 -0700
+***************
+*** 159,165 ****
+--- 159,169 ----
+  int                         graphInit           (Graph * const);
+  void                        graphExit           (Graph * const);
+  void                        graphFree           (Graph * const);
++ #ifndef NOFILEIO
+  int                         graphLoad           (Graph * const, FILE * const, const Gnum, const GraphFlag);
++ #else /* NOFILEIO */
++ int                         graphLoad           (Graph * const, FILE * const, const Gnum, const GraphFlag, const Gnum, const Gnum, const Gnum*, const Gnum*, const Gnum*, const Gnum*, const Gnum*);
++ #endif /* NOFILEIO */
+  int                         graphLoad2          (const Gnum, const Gnum, const Gnum * const, const Gnum * const, Gnum * restrict const, const Gnum, const Gnum * const);
+  int                         graphSave           (const Graph * const, FILE * const);
+  Gnum                        graphBase           (Graph * const, const Gnum);
+diff -crB scotch_5.1/src/libscotch/graph_io.c src/src/libscotch/graph_io.c
+*** scotch_5.1/src/libscotch/graph_io.c	2008-05-22 06:44:42.000000000 -0700
+--- src/src/libscotch/graph_io.c	2013-05-06 14:14:17.000000000 -0700
+***************
+*** 86,92 ****
+  Graph * restrict const      grafptr,              /* Graph structure to fill              */
+  FILE * const                stream,               /* Stream from which to read graph data */
+  const Gnum                  baseval,              /* Base value (-1 means keep file base) */
+! const GraphFlag             flagval)              /* Graph loading flags                  */
+  {
+    Gnum                edgenum;                    /* Number of edges really allocated */
+    Gnum                edgennd;
+--- 86,103 ----
+  Graph * restrict const      grafptr,              /* Graph structure to fill              */
+  FILE * const                stream,               /* Stream from which to read graph data */
+  const Gnum                  baseval,              /* Base value (-1 means keep file base) */
+! const GraphFlag             flagval               /* Graph loading flags                  */
+! #ifdef NOFILEIO
+!                                    ,
+! const Gnum                  nvert,
+! const Gnum                  nedge2,
+! const Gnum*                 adjir,
+! const Gnum*                 adjjc,
+! const Gnum*                 vertlab,
+! const Gnum*                 vertwgt,
+! const Gnum*                 edgewgt
+! #endif /* NOFILEIO */
+!                                    )
+  {
+    Gnum                edgenum;                    /* Number of edges really allocated */
+    Gnum                edgennd;
+***************
+*** 104,120 ****
+--- 115,141 ----
+    char                proptab[4];
+    Gnum                vertnum;
+  
++ #ifdef NOFILEIO
++ //  printf("graphLoad - stream=%p; nvert=%d,nedge2=%d\n",stream,nvert,nedge2);
++ //  printf("graphLoad - adjir=%p,adjjc=%p,vertlab=%p,vertwgt=%p,edgewgt=%p\n",
++ //         adjir,adjjc,vertlab,vertwgt,edgewgt);
++ #endif /* NOFILEIO */
+    memSet (grafptr, 0, sizeof (Graph));
+  
++ #ifndef NOFILEIO
+    if (intLoad (stream, &versval) != 1) {          /* Read version number */
+      errorPrint ("graphLoad: bad input (1)");
+      return     (1);
+    }
++ #else /* NOFILEIO */
++   versval=0;
++ #endif /* NOFILEIO */
+    if (versval != 0) {                             /* If version not zero */
+      errorPrint ("graphLoad: old-style graph format no longer supported");
+      return     (1);
+    }
+  
++ #ifndef NOFILEIO
+    if ((intLoad (stream, &grafptr->vertnbr) != 1) || /* Read rest of header */
+        (intLoad (stream, &grafptr->edgenbr) != 1) ||
+        (intLoad (stream, &baseadj)          != 1) ||
+***************
+*** 124,129 ****
+--- 145,159 ----
+      errorPrint ("graphLoad: bad input (2)");
+      return     (1);
+    }
++ #else /* NOFILEIO */
++   grafptr->vertnbr=nvert;
++   grafptr->edgenbr=nedge2;
++   baseadj=1;
++   propval=0;
++   if (vertlab) propval+=100;
++   if (edgewgt) propval+= 10;
++   if (vertwgt) propval+=  1;
++ #endif /* NOFILEIO */
+    sprintf (proptab, "%3.3d", (int) propval);      /* Compute file properties */
+    proptab[0] -= '0';                              /* Vertex labels flag      */
+    proptab[1] -= '0';                              /* Edge weights flag       */
+***************
+*** 140,145 ****
+--- 170,179 ----
+    }
+    if (proptab[0] != 0)                            /* If vertex labels, no base adjust */
+      baseadj = 0;
++ #ifdef NOFILEIO
++ //  printf("graphLoad - baseadj=%d,baseval=%d,grafptr->baseval=%d\n",
++ //         baseadj,baseval,grafptr->baseval);
++ #endif /* NOFILEIO */
+  
+    velonbr = ((proptab[2] != 0) && ((flagval & GRAPHIONOLOADVERT) == 0)) ? grafptr->vertnbr : 0;
+    vlblnbr = (proptab[0] != 0) ? grafptr->vertnbr : 0;
+***************
+*** 178,188 ****
+--- 212,226 ----
+      if (grafptr->vlbltax != NULL) {               /* If must read label               */
+        Gnum                vlblval;                /* Value where to read vertex label */
+  
++ #ifndef NOFILEIO
+        if (intLoad (stream, &vlblval) != 1) {      /* Read label data */
+          errorPrint ("graphLoad: bad input (3)");
+          graphFree  (grafptr);
+          return     (1);
+        }
++ #else /* NOFILEIO */
++       vlblval=vertlab[vertnum-grafptr->baseval];
++ #endif /* NOFILEIO */
+        grafptr->vlbltax[vertnum] = vlblval;
+        if (grafptr->vlbltax[vertnum] > vlblmax)    /* Get maximum vertex label */
+          vlblmax = grafptr->vlbltax[vertnum];
+***************
+*** 190,209 ****
+--- 228,257 ----
+      if (proptab[2] != 0) {                        /* If must read vertex load        */
+        Gnum                veloval;                /* Value where to read vertex load */
+  
++ #ifndef NOFILEIO
+        if (intLoad (stream, &veloval) != 1) {      /* Read vertex load data    */
+          errorPrint ("graphLoad: bad input (4)");
+          graphFree  (grafptr);
+          return     (1);
+        }
++ #else /* NOFILEIO */
++       veloval=vertwgt[vertnum-grafptr->baseval];
++ #endif /* NOFILEIO */
+        if (grafptr->velotax != NULL)
+          velosum                  +=
+          grafptr->velotax[vertnum] = veloval;
+      }
++ #ifndef NOFILEIO
+      if (intLoad (stream, &degrval) != 1) {        /* Read vertex degree */
+        errorPrint ("graphLoad: bad input (5)");
+        graphFree  (grafptr);
+        return     (1);
+      }
++ #else /* NOFILEIO */
++ //    printf("old degrval=%d; new degrval=%d\n",
++ //           degrval,adjjc[vertnum-grafptr->baseval+1]-adjjc[vertnum-grafptr->baseval]);
++     degrval=adjjc[vertnum-grafptr->baseval+1]-adjjc[vertnum-grafptr->baseval];
++ #endif /* NOFILEIO */
+      if (degrmax < degrval)                        /* Set maximum degree */
+        degrmax = degrval;
+  
+***************
+*** 219,238 ****
+--- 267,301 ----
+        if (proptab[1] != 0) {                      /* If must read edge load        */
+          Gnum                edloval;              /* Value where to read edge load */
+  
++ #ifndef NOFILEIO
+          if (intLoad (stream, &edloval) != 1) {    /* Read edge load data    */
+            errorPrint ("graphLoad: bad input (6)");
+            graphFree  (grafptr);
+            return     (1);
+          }
++ #else /* NOFILEIO */
++         edloval=edgewgt[edgenum-grafptr->baseval];
++ #endif /* NOFILEIO */
+          if (grafptr->edlotax != NULL)
+            edlosum                  +=
+            grafptr->edlotax[edgenum] = (Gnum) edloval;
+        }
++ #ifndef NOFILEIO
+        if (intLoad (stream, &edgeval) != 1) {      /* Read edge data */
+          errorPrint ("graphLoad: bad input (7)");
+          graphFree  (grafptr);
+          return     (1);
+        }
++ #else /* NOFILEIO */
++ //      printf("edgenum=%d: old edgeval=%d; new edgeval[%d]=%d\n",
++ //            edgenum,edgeval,edgenum-grafptr->baseval,adjir[edgenum-grafptr->baseval]+1);
++ /*  if vertex labels are supplied, they must be referenced  (jes, 1/05/10)  */
++ //      edgeval=adjir[edgenum-grafptr->baseval]+1;
++       if (vertlab)
++         edgeval=vertlab[adjir[edgenum-grafptr->baseval]  ];
++       else
++         edgeval=        adjir[edgenum-grafptr->baseval]+1;
++ #endif /* NOFILEIO */
+        grafptr->edgetax[edgenum] = edgeval + baseadj;
+      }
+    }
+***************
+*** 279,284 ****
+--- 342,351 ----
+    Gnum                vertnum;                    /* Number of current vertex        */
+    Gnum * restrict     indxtab;                    /* Vertex label/number index table */
+  
++ #ifdef NOFILEIO
++   printf("graphLoad2 - baseval=%d,vertnnd=%d,vlblmax=%d\n",
++          baseval,vertnnd,vlblmax);
++ #endif /* NOFILEIO */
+    if ((indxtab = (Gnum *) memAlloc ((vlblmax + 1) * sizeof (Gnum))) == NULL) {
+      errorPrint  ("graphLoad2: out of memory");
+      return      (1);
+***************
+*** 286,291 ****
+--- 353,362 ----
+  
+    memSet (indxtab, ~0, (vlblmax + 1) * sizeof (Gnum)); /* Assume labels not used */
+    for (vertnum = baseval; vertnum < vertnnd; vertnum ++) {
++ #ifdef NOFILEIO
++ //    printf("graphLoad2 - vertnum=%d; vlbltax=%d,indxtab=%d\n",
++ //           vertnum,vlbltax[vertnum],indxtab[vlbltax[vertnum]]);
++ #endif /* NOFILEIO */
+      if (indxtab[vlbltax[vertnum]] != ~0) {        /* If vertex label already used */
+        errorPrint  ("graphLoad2: duplicate vertex label");
+        memFree     (indxtab);
+***************
+*** 294,299 ****
+--- 365,374 ----
+      indxtab[vlbltax[vertnum]] = vertnum;          /* Set vertex number index */
+    }
+    for (vertnum = baseval; vertnum < vertnnd; vertnum ++) {
++ #ifdef NOFILEIO
++ //    printf("graphLoad2 - vertnum=%d; vlbltax=%d,indxtab=%d\n",
++ //           vertnum,vlbltax[vertnum],indxtab[vlbltax[vertnum]]);
++ #endif /* NOFILEIO */
+      Gnum                edgenum;                  /* Number of current edge */
+  
+      for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) {
+***************
+*** 307,313 ****
+--- 382,396 ----
+          memFree    (indxtab);
+          return     (1);
+        }
++ #ifdef NOFILEIO
++ //      printf("graphLoad2 - edgenum=%d; old edgetax=%d,",
++ //             edgenum,edgetax[edgenum]);
++ #endif /* NOFILEIO */
+        edgetax[edgenum] = indxtab[edgetax[edgenum]]; /* Replace label by number */
++ #ifdef NOFILEIO
++ //      printf("new edgetax=%d\n",
++ //             edgetax[edgenum]);
++ #endif /* NOFILEIO */
+      }
+    }
+  
+diff -crB scotch_5.1/src/libscotch/graph_io_scot.c src/src/libscotch/graph_io_scot.c
+*** scotch_5.1/src/libscotch/graph_io_scot.c	2008-05-22 06:44:42.000000000 -0700
+--- src/src/libscotch/graph_io_scot.c	2013-05-06 14:14:17.000000000 -0700
+***************
+*** 89,95 ****
+--- 89,99 ----
+    int                           o;
+  
+    if (filesrcptr != NULL) {
++ #ifndef NOFILEIO
+      if (graphLoad (grafptr, filesrcptr, -1, 0) != 0)
++ #else /* NOFILEIO */
++     if (graphLoad (grafptr, filesrcptr, -1, 0, 0, 0, NULL, NULL, NULL, NULL, NULL) != 0)
++ #endif /* NOFILEIO */
+        return (1);
+    }
+  
+diff -crB scotch_5.1/src/libscotch/library_arch.c src/src/libscotch/library_arch.c
+*** scotch_5.1/src/libscotch/library_arch.c	2008-05-22 06:44:42.000000000 -0700
+--- src/src/libscotch/library_arch.c	2013-05-06 14:14:17.000000000 -0700
+***************
+*** 120,128 ****
+  int
+  SCOTCH_archLoad (
+  SCOTCH_Arch * const         archptr,
+! FILE * const                stream)
+  {
+    return (archLoad ((Arch *) archptr, stream));
+  }
+  
+  /*+ This routine saves the given opaque
+--- 120,139 ----
+  int
+  SCOTCH_archLoad (
+  SCOTCH_Arch * const         archptr,
+! FILE * const                stream
+! #ifdef NOFILEIO
+!                                   ,
+! const char *                archtyp,
+! const SCOTCH_Num            napar,
+! const SCOTCH_Num *          archpar
+! #endif /* NOFILEIO */
+!                                    )
+  {
++ #ifndef NOFILEIO
+    return (archLoad ((Arch *) archptr, stream));
++ #else /* NOFILEIO */
++   return (archLoad ((Arch *) archptr, stream, archtyp, napar, archpar));
++ #endif /* NOFILEIO */
+  }
+  
+  /*+ This routine saves the given opaque
+diff -crB scotch_5.1/src/libscotch/library_arch_f.c src/src/libscotch/library_arch_f.c
+*** scotch_5.1/src/libscotch/library_arch_f.c	2008-05-22 06:44:42.000000000 -0700
+--- src/src/libscotch/library_arch_f.c	2013-05-06 14:14:18.000000000 -0700
+***************
+*** 121,127 ****
+--- 121,131 ----
+    }
+    setbuf (stream, NULL);                          /* Do not buffer on input */
+  
++ #ifndef NOFILEIO
+    o = SCOTCH_archLoad (archptr, stream);
++ #else /* NOFILEIO */
++   o = SCOTCH_archLoad (archptr, stream, "", 0, NULL);
++ #endif /* NOFILEIO */
+  
+    fclose (stream);                                /* This closes filenum too */
+  
+diff -crB scotch_5.1/src/libscotch/library_error_exit.c src/src/libscotch/library_error_exit.c
+*** scotch_5.1/src/libscotch/library_error_exit.c	2009-01-20 00:36:33.000000000 -0800
+--- src/src/libscotch/library_error_exit.c	2013-05-06 14:14:18.000000000 -0700
+***************
+*** 114,119 ****
+--- 114,120 ----
+    int                 proclocnum;
+  #endif /* SCOTCH_PTSCOTCH */
+  
++ #ifndef MATLAB
+    fprintf  (stderr, "%s", _SCOTCHerrorProgName);
+  #ifdef SCOTCH_PTSCOTCH
+    if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) &&
+***************
+*** 131,136 ****
+--- 132,155 ----
+    fprintf  (stderr, "\n");
+    fflush   (stderr);                              /* In case it has been set to buffered mode */
+  
++ #else /* MATLAB */
++   mexPrintf  ("%s", _SCOTCHerrorProgName);
++ #ifdef SCOTCH_PTSCOTCH
++   if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) &&
++       (proclocnum != 0)                              &&
++       (MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum) == MPI_SUCCESS))
++     mexPrintf ("(%d): ", proclocnum);
++ #else /* SCOTCH_PTSCOTCH */
++   if (_SCOTCHerrorProgName[0] != '\0')
++     mexPrintf  (": ");
++ #endif /* SCOTCH_PTSCOTCH */
++   mexPrintf  ("ERROR: ");
++   va_start (errlist, errstr);
++   mexPrintf (errstr, errlist);             /* Print arguments */
++   va_end   (errlist);
++   mexPrintf  ("\n");
++ #endif /* MATLAB */
++ 
+  #ifdef SCOTCH_ERROR_SLEEP
+    sleep (SCOTCH_ERROR_SLEEP);                     /* Wait for messages to be propagated */
+  #endif /* SCOTCH_ERROR_SLEEP */
+***************
+*** 155,160 ****
+--- 174,180 ----
+    int                 proclocnum;
+  #endif /* SCOTCH_PTSCOTCH */
+  
++ #ifndef MATLAB
+    fprintf  (stderr, "%s", _SCOTCHerrorProgName);
+  #ifdef SCOTCH_PTSCOTCH
+    if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) &&
+***************
+*** 171,174 ****
+--- 191,212 ----
+    va_end   (errlist);
+    fprintf  (stderr, "\n");
+    fflush   (stderr);                              /* In case it has been set to buffered mode */
++ 
++ #else /* MATLAB */
++   mexPrintf  ("%s", _SCOTCHerrorProgName);
++ #ifdef SCOTCH_PTSCOTCH
++   if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) &&
++       (proclocnum != 0)                              &&
++       (MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum) == MPI_SUCCESS))
++     mexPrintf ("(%d): ", proclocnum);
++ #else /* SCOTCH_PTSCOTCH */
++   if (_SCOTCHerrorProgName[0] != '\0')
++     mexPrintf  (": ");
++ #endif /* SCOTCH_PTSCOTCH */
++   mexPrintf  ("WARNING: ");
++   va_start (errlist, errstr);
++   mexPrintf (errstr, errlist);             /* Print arguments */
++   va_end   (errlist);
++   mexPrintf  ("\n");
++ #endif /* MATLAB */
+  }
+diff -crB scotch_5.1/src/libscotch/library_graph.c src/src/libscotch/library_graph.c
+*** scotch_5.1/src/libscotch/library_graph.c	2008-05-22 07:28:12.000000000 -0700
+--- src/src/libscotch/library_graph.c	2013-05-06 14:14:18.000000000 -0700
+***************
+*** 137,143 ****
+  SCOTCH_Graph * const        grafptr,
+  FILE * const                stream,
+  const SCOTCH_Num            baseval,
+! const SCOTCH_Num            flagval)
+  {
+    GraphFlag           srcgrafflag;                /* Graph flags */
+  
+--- 137,154 ----
+  SCOTCH_Graph * const        grafptr,
+  FILE * const                stream,
+  const SCOTCH_Num            baseval,
+! const SCOTCH_Num            flagval
+! #ifdef NOFILEIO
+!                                    ,
+! const SCOTCH_Num            nvert,
+! const SCOTCH_Num            nedge2,
+! const SCOTCH_Num*           adjir,
+! const SCOTCH_Num*           adjjc,
+! const SCOTCH_Num*           vertlab,
+! const SCOTCH_Num*           vertwgt,
+! const SCOTCH_Num*           edgewgt
+! #endif /* NOFILEIO */
+!                                    )
+  {
+    GraphFlag           srcgrafflag;                /* Graph flags */
+  
+***************
+*** 153,159 ****
+--- 164,174 ----
+    srcgrafflag = (((flagval & 1) != 0) ? GRAPHIONOLOADVERT : 0) +
+                  (((flagval & 2) != 0) ? GRAPHIONOLOADEDGE : 0);
+  
++ #ifndef NOFILEIO
+    return (graphLoad ((Graph * const) grafptr, stream, (Gnum) baseval, srcgrafflag));
++ #else /* NOFILEIO */
++   return (graphLoad ((Graph * const) grafptr, stream, (Gnum) baseval, srcgrafflag, (const Gnum) nvert, (const Gnum) nedge2, (const Gnum *) adjir, (const Gnum *) adjjc, (const Gnum *) vertlab, (const Gnum *) vertwgt, (const Gnum *) edgewgt));
++ #endif /* NOFILEIO */
+  }
+  
+  /*+ This routine saves the contents of the given
+diff -crB scotch_5.1/src/libscotch/library_graph_f.c src/src/libscotch/library_graph_f.c
+*** scotch_5.1/src/libscotch/library_graph_f.c	2008-05-22 06:44:43.000000000 -0700
+--- src/src/libscotch/library_graph_f.c	2013-05-06 14:14:18.000000000 -0700
+***************
+*** 136,142 ****
+--- 136,146 ----
+    }
+    setbuf (stream, NULL);                          /* Do not buffer on input */
+  
++ #ifndef NOFILEIO
+    o = SCOTCH_graphLoad (grafptr, stream, *baseptr, *flagptr);
++ #else /* NOFILEIO */
++   o = SCOTCH_graphLoad (grafptr, stream, *baseptr, *flagptr, 0, 0, NULL, NULL, NULL, NULL, NULL);
++ #endif /* NOFILEIO */
+  
+    fclose (stream);                                /* This closes filenum too */
+  
+diff -crB scotch_5.1/src/libscotch/library_graph_map.c src/src/libscotch/library_graph_map.c
+*** scotch_5.1/src/libscotch/library_graph_map.c	2008-09-28 04:04:05.000000000 -0700
+--- src/src/libscotch/library_graph_map.c	2013-05-06 14:14:19.000000000 -0700
+***************
+*** 182,192 ****
+--- 182,200 ----
+  
+  int
+  SCOTCH_graphMapSave (
++ #ifdef NOFILEIO
++ Gnum *pnvert,
++ Gnum (**pmaptab)[2],
++ #endif /* NOFILEIO */
+  const SCOTCH_Graph * const    grafptr,            /*+ Graph to order  +*/
+  const SCOTCH_Mapping * const  mappptr,            /*+ Mapping to save +*/
+  FILE * const                  stream)             /*+ Output stream   +*/
+  {
++ #ifndef NOFILEIO
+    return (mapSave (&((LibMapping *) mappptr)->m, ((Graph *) grafptr)->vlbltax, stream));
++ #else /* NOFILEIO */
++   return (mapSave (pnvert, pmaptab, &((LibMapping *) mappptr)->m, ((Graph *) grafptr)->vlbltax, stream));
++ #endif /* NOFILEIO */
+  }
+  
+  /*+ This routine computes a mapping
+diff -crB scotch_5.1/src/libscotch/library_graph_map_f.c src/src/libscotch/library_graph_map_f.c
+*** scotch_5.1/src/libscotch/library_graph_map_f.c	2008-06-28 03:44:26.000000000 -0700
+--- src/src/libscotch/library_graph_map_f.c	2013-05-06 14:14:19.000000000 -0700
+***************
+*** 183,189 ****
+--- 183,193 ----
+      return;
+    }
+  
++ #ifndef NOFILEIO
+    o = SCOTCH_graphMapSave (grafptr, mapptr, stream);
++ #else /* NOFILEIO */
++   o = SCOTCH_graphMapSave (NULL, NULL, grafptr, mapptr, stream);
++ #endif /* NOFILEIO */
+  
+    fclose (stream);                                /* This closes filenum too */
+  
+diff -crB scotch_5.1/src/libscotch/library.h src/src/libscotch/library.h
+*** scotch_5.1/src/libscotch/library.h	2009-05-09 16:08:03.000000000 -0700
+--- src/src/libscotch/library.h	2013-05-06 14:14:19.000000000 -0700
+***************
+*** 1,3 ****
+--- 1,5 ----
++ #ifndef _SCOTCH_H_
++ #define _SCOTCH_H_
+  /* Copyright 2004,2007-2009 ENSEIRB, INRIA & CNRS
+  **
+  ** This file is part of the Scotch software package for static mapping,
+***************
+*** 134,140 ****
+--- 136,146 ----
+  
+  int                         SCOTCH_archInit     (SCOTCH_Arch * const);
+  void                        SCOTCH_archExit     (SCOTCH_Arch * const);
++ #ifndef NOFILEIO
+  int                         SCOTCH_archLoad     (SCOTCH_Arch * const, FILE * const);
++ #else /* NOFILEIO */
++ int                         SCOTCH_archLoad     (SCOTCH_Arch * const, FILE * const, const char *, const SCOTCH_Num, const SCOTCH_Num *);
++ #endif /* NOFILEIO */
+  int                         SCOTCH_archSave     (const SCOTCH_Arch * const, FILE * const);
+  int                         SCOTCH_archBuild    (SCOTCH_Arch * const, const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Strat * const);
+  int                         SCOTCH_archCmplt    (SCOTCH_Arch * const, const SCOTCH_Num);
+***************
+*** 191,197 ****
+--- 197,207 ----
+  int                         SCOTCH_graphInit    (SCOTCH_Graph * const);
+  void                        SCOTCH_graphExit    (SCOTCH_Graph * const);
+  void                        SCOTCH_graphFree    (SCOTCH_Graph * const);
++ #ifndef NOFILEIO
+  int                         SCOTCH_graphLoad    (SCOTCH_Graph * const, FILE * const, const SCOTCH_Num, const SCOTCH_Num);
++ #else /* NOFILEIO */
++ int                         SCOTCH_graphLoad    (SCOTCH_Graph * const, FILE * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num *, const SCOTCH_Num *, const SCOTCH_Num *, const SCOTCH_Num *, const SCOTCH_Num *);
++ #endif /* NOFILEIO */
+  int                         SCOTCH_graphSave    (const SCOTCH_Graph * const, FILE * const);
+  int                         SCOTCH_graphBuild   (SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Num * const);
+  SCOTCH_Num                  SCOTCH_graphBase    (SCOTCH_Graph * const, const SCOTCH_Num baseval);
+***************
+*** 210,216 ****
+--- 220,230 ----
+  int                         SCOTCH_graphMapInit (const SCOTCH_Graph * const, SCOTCH_Mapping * const, const SCOTCH_Arch * const, SCOTCH_Num * const);
+  void                        SCOTCH_graphMapExit (const SCOTCH_Graph * const, SCOTCH_Mapping * const);
+  int                         SCOTCH_graphMapLoad (const SCOTCH_Graph * const, const SCOTCH_Mapping * const, FILE * const);
++ #ifndef NOFILEIO
+  int                         SCOTCH_graphMapSave (const SCOTCH_Graph * const, const SCOTCH_Mapping * const, FILE * const);
++ #else /* NOFILEIO */
++ int                         SCOTCH_graphMapSave (SCOTCH_Num *, SCOTCH_Num (**)[2], const SCOTCH_Graph * const, const SCOTCH_Mapping * const, FILE * const);
++ #endif /* NOFILEIO */
+  int                         SCOTCH_graphMapView (const SCOTCH_Graph * const, const SCOTCH_Mapping * const, FILE * const);
+  int                         SCOTCH_graphMapCompute (const SCOTCH_Graph * const, SCOTCH_Mapping * const, const SCOTCH_Strat * const);
+  int                         SCOTCH_graphMap     (const SCOTCH_Graph * const, const SCOTCH_Arch * const, const SCOTCH_Strat * const, SCOTCH_Num * const);
+***************
+*** 278,280 ****
+--- 292,296 ----
+  #ifdef __cplusplus
+  }
+  #endif /* __cplusplus */
++ 
++ #endif //#ifndef _SCOTCH_H_
+diff -crB scotch_5.1/src/libscotch/Makefile src/src/libscotch/Makefile
+*** scotch_5.1/src/libscotch/Makefile	2009-05-09 16:08:04.000000000 -0700
+--- src/src/libscotch/Makefile	2013-05-06 14:14:19.000000000 -0700
+***************
+*** 49,55 ****
+  ##  Project rules.
+  ##
+  
+! .PHONY				:	ptscotch	scotch	ptinstall	install	clean	realclean
+  
+  scotch				:	clean
+  					$(MAKE) CC="$(CCS)" CCD="$(CCS)" SCOTCHLIB=scotch	\
+--- 49,55 ----
+  ##  Project rules.
+  ##
+  
+! .PHONY				:	ptscotch	scotch	nfioscotch	mexscotch	ptinstall	install	nfioinstall	mexinstall	clean	realclean
+  
+  scotch				:	clean
+  					$(MAKE) CC="$(CCS)" CCD="$(CCS)" SCOTCHLIB=scotch	\
+***************
+*** 68,73 ****
+--- 68,93 ----
+  					libptscotcherr$(LIB)								\
+  					libptscotcherrexit$(LIB)
+  
++ nfioscotch				:	clean
++ 					$(MAKE) CFLAGS="$(CFLAGS)" CC="$(CCS)" CCD="$(CCS)" LDFLAGS="$(LDFLAGS)" SCOTCHLIB=scotch	\
++ 					dummysizes$(EXE)
++ 					$(MAKE) CFLAGS="$(CFLAGS) -DNOFILEIO" CC="$(CCS)" CCD="$(CCS)" SCOTCHLIB=nfioscotch	\
++ 					scotch.h						\
++ 					scotchf.h						\
++ 					libnfioscotch$(LIB)						\
++ 					libnfioscotcherr$(LIB)					\
++ 					libnfioscotcherrexit$(LIB)
++ 
++ mexscotch			:	clean
++ 					$(MAKE) CFLAGS="$(CFLAGS)" CC="$(CCS)" CCD="$(CCS)" LDFLAGS="$(LDFLAGS)" SCOTCHLIB=scotch	\
++ 					dummysizes$(EXE)
++ 					$(MAKE) CFLAGS="$(CFLAGS) -DNOFILEIO -DMATLAB -I${MATLAB_DIR}/extern/include" CC="$(CCS)" CCD="$(CCS)" LDFLAGS="$(LDFLAGS) -Wl,-rpath-link,${MATLAB_DIR}/bin/glnxa64 -L${MATLAB_DIR}/bin/glnxa64 -lmex -lmat" SCOTCHLIB=mexscotch	\
++ 					scotch.h						\
++ 					scotchf.h						\
++ 					libmexscotch$(LIB)						\
++ 					libmexscotcherr$(LIB)					\
++ 					libmexscotcherrexit$(LIB)
++ 
+  install				:
+  					-$(CP) scotch.h scotchf.h $(includedir)
+  					-$(CP) libscotch$(LIB) libscotcherr*$(LIB) $(libdir)
+***************
+*** 77,82 ****
+--- 97,110 ----
+  					-$(CP) scotchf.h $(includedir)/ptscotchf.h
+  					-$(CP) libptscotch*$(LIB) $(libdir)
+  
++ nfioinstall				:
++ 					-$(CP) scotch.h scotchf.h $(includedir)
++ 					-$(CP) libnfioscotch$(LIB) libnfioscotcherr*$(LIB) $(libdir)
++ 
++ mexinstall				:
++ 					-$(CP) scotch.h scotchf.h $(includedir)
++ 					-$(CP) libmexscotch$(LIB) libmexscotcherr*$(LIB) $(libdir)
++ 
+  clean				:
+  					-$(RM) *~ *$(OBJ) lib*$(LIB) common2* parser_yy.c parser_ly.h parser_ll.c *scotch.h *scotchf.h y.output dummysizes$(EXE)
+  
+***************
+*** 2452,2457 ****
+--- 2480,2807 ----
+  					$(AR) $(ARFLAGS) lib$(SCOTCHLIB)$(LIB) $(?)
+  					-$(RANLIB) lib$(SCOTCHLIB)$(LIB)
+  
++ libnfioscotch$(LIB)			:	arch$(OBJ)				\
++ 					arch_build$(OBJ)			\
++ 					arch_cmplt$(OBJ)			\
++ 					arch_cmpltw$(OBJ)			\
++ 					arch_deco$(OBJ)				\
++ 					arch_hcub$(OBJ)				\
++ 					arch_mesh$(OBJ)				\
++ 					arch_tleaf$(OBJ)			\
++ 					arch_torus$(OBJ)			\
++ 					arch_vcmplt$(OBJ)			\
++ 					arch_vhcub$(OBJ)			\
++ 					bgraph$(OBJ)				\
++ 					bgraph_bipart_bd$(OBJ)			\
++ 					bgraph_bipart_df$(OBJ)			\
++ 					bgraph_bipart_ex$(OBJ)			\
++ 					bgraph_bipart_fm$(OBJ)			\
++ 					bgraph_bipart_gg$(OBJ)			\
++ 					bgraph_bipart_gp$(OBJ)			\
++ 					bgraph_bipart_ml$(OBJ)			\
++ 					bgraph_bipart_st$(OBJ)			\
++ 					bgraph_bipart_zr$(OBJ)			\
++ 					bgraph_check$(OBJ)			\
++ 					bgraph_store$(OBJ)			\
++ 					common$(OBJ)				\
++ 					common_file$(OBJ)			\
++ 					common_file_compress$(OBJ)		\
++ 					common_file_uncompress$(OBJ)		\
++ 					common_integer$(OBJ)			\
++ 					common_memory$(OBJ)			\
++ 					common_stub$(OBJ)			\
++ 					gain$(OBJ)				\
++ 					geom$(OBJ)				\
++ 					graph$(OBJ)				\
++ 					graph_base$(OBJ)			\
++ 					graph_check$(OBJ)			\
++ 					graph_coarsen$(OBJ)			\
++ 					graph_induce$(OBJ)			\
++ 					graph_io$(OBJ)				\
++ 					graph_io_chac$(OBJ)			\
++ 					graph_io_habo$(OBJ)			\
++ 					graph_io_mmkt$(OBJ)			\
++ 					graph_io_scot$(OBJ)			\
++ 					graph_list$(OBJ)			\
++ 					hall_order_hd$(OBJ)			\
++ 					hall_order_hf$(OBJ)			\
++ 					hall_order_hx$(OBJ)			\
++ 					hgraph$(OBJ)				\
++ 					hgraph_check$(OBJ)			\
++ 					hgraph_induce$(OBJ)			\
++ 					hgraph_order_bl$(OBJ)			\
++ 					hgraph_order_cp$(OBJ)			\
++ 					hgraph_order_gp$(OBJ)			\
++ 					hgraph_order_hd$(OBJ)			\
++ 					hgraph_order_hf$(OBJ)			\
++ 					hgraph_order_hx$(OBJ)			\
++ 					hgraph_order_nd$(OBJ)			\
++ 					hgraph_order_si$(OBJ)			\
++ 					hgraph_order_st$(OBJ)			\
++ 					hmesh$(OBJ)				\
++ 					hmesh_check$(OBJ)			\
++ 					hmesh_hgraph$(OBJ)			\
++ 					hmesh_induce$(OBJ)			\
++ 					hmesh_mesh$(OBJ)			\
++ 					hmesh_order_bl$(OBJ)			\
++ 					hmesh_order_cp$(OBJ)			\
++ 					hmesh_order_gr$(OBJ)			\
++ 					hmesh_order_gp$(OBJ)			\
++ 					hmesh_order_hd$(OBJ)			\
++ 					hmesh_order_hf$(OBJ)			\
++ 					hmesh_order_hx$(OBJ)			\
++ 					hmesh_order_nd$(OBJ)			\
++ 					hmesh_order_si$(OBJ)			\
++ 					hmesh_order_st$(OBJ)			\
++ 					kgraph$(OBJ)				\
++ 					kgraph_map_rb$(OBJ)			\
++ 					kgraph_map_rb_map$(OBJ)			\
++ 					kgraph_map_rb_part$(OBJ)		\
++ 					kgraph_map_st$(OBJ)			\
++ 					library_arch$(OBJ)			\
++ 					library_arch_f$(OBJ)			\
++ 					library_arch_build$(OBJ)		\
++ 					library_arch_build_f$(OBJ)		\
++ 					library_arch_cmpltw$(OBJ)		\
++ 					library_arch_cmpltw_f$(OBJ)		\
++ 					library_geom$(OBJ)			\
++ 					library_geom_f$(OBJ)			\
++ 					library_graph$(OBJ)			\
++ 					library_graph_f$(OBJ)			\
++ 					library_graph_base$(OBJ)		\
++ 					library_graph_base_f$(OBJ)		\
++ 					library_graph_check$(OBJ)		\
++ 					library_graph_check_f$(OBJ)		\
++ 					library_graph_io_chac$(OBJ)		\
++ 					library_graph_io_chac_f$(OBJ)		\
++ 					library_graph_io_habo$(OBJ)		\
++ 					library_graph_io_habo_f$(OBJ)		\
++ 					library_graph_io_mmkt$(OBJ)		\
++ 					library_graph_io_mmkt_f$(OBJ)		\
++ 					library_graph_io_scot$(OBJ)		\
++ 					library_graph_io_scot_f$(OBJ)		\
++ 					library_graph_map$(OBJ)			\
++ 					library_graph_map_f$(OBJ)		\
++ 					library_graph_map_view$(OBJ)		\
++ 					library_graph_map_view_f$(OBJ)		\
++ 					library_graph_order$(OBJ)		\
++ 					library_graph_order_f$(OBJ)		\
++ 					library_mesh$(OBJ)			\
++ 					library_mesh_f$(OBJ)			\
++ 					library_mesh_graph$(OBJ)		\
++ 					library_mesh_graph_f$(OBJ)		\
++ 					library_mesh_io_habo$(OBJ)		\
++ 					library_mesh_io_habo_f$(OBJ)		\
++ 					library_mesh_io_scot$(OBJ)		\
++ 					library_mesh_io_scot_f$(OBJ)		\
++ 					library_mesh_order$(OBJ)		\
++ 					library_mesh_order_f$(OBJ)		\
++ 					library_parser$(OBJ)			\
++ 					library_parser_f$(OBJ)			\
++ 					library_random$(OBJ)			\
++ 					library_random_f$(OBJ)			\
++ 					mapping$(OBJ)				\
++ 					mapping_io$(OBJ)			\
++ 					mesh$(OBJ)				\
++ 					mesh_check$(OBJ)			\
++ 					mesh_coarsen$(OBJ)			\
++ 					mesh_graph$(OBJ)			\
++ 					mesh_induce_sepa$(OBJ)			\
++ 					mesh_io$(OBJ)				\
++ 					mesh_io_habo$(OBJ)			\
++ 					mesh_io_scot$(OBJ)			\
++ 					order$(OBJ)				\
++ 					order_check$(OBJ)			\
++ 					order_io$(OBJ)				\
++ 					parser$(OBJ)				\
++ 					parser_ll$(OBJ)				\
++ 					parser_yy$(OBJ)				\
++ 					vgraph$(OBJ)				\
++ 					vgraph_check$(OBJ)			\
++ 					vgraph_separate_bd$(OBJ)		\
++ 					vgraph_separate_es$(OBJ)		\
++ 					vgraph_separate_fm$(OBJ)		\
++ 					vgraph_separate_gg$(OBJ)		\
++ 					vgraph_separate_gp$(OBJ)		\
++ 					vgraph_separate_ml$(OBJ)		\
++ 					vgraph_separate_st$(OBJ)		\
++ 					vgraph_separate_th$(OBJ)		\
++ 					vgraph_separate_vw$(OBJ)		\
++ 					vgraph_separate_zr$(OBJ)		\
++ 					vgraph_store$(OBJ)			\
++ 					vmesh$(OBJ)				\
++ 					vmesh_check$(OBJ)			\
++ 					vmesh_separate_fm$(OBJ)			\
++ 					vmesh_separate_gg$(OBJ)			\
++ 					vmesh_separate_gr$(OBJ)			\
++ 					vmesh_separate_ml$(OBJ)			\
++ 					vmesh_separate_zr$(OBJ)			\
++ 					vmesh_separate_st$(OBJ)			\
++ 					vmesh_store$(OBJ)
++ 					$(AR) $(ARFLAGS) lib$(SCOTCHLIB)$(LIB) $(?)
++ 					-$(RANLIB) lib$(SCOTCHLIB)$(LIB)
++ 
++ libmexscotch$(LIB)			:	arch$(OBJ)				\
++ 					arch_build$(OBJ)			\
++ 					arch_cmplt$(OBJ)			\
++ 					arch_cmpltw$(OBJ)			\
++ 					arch_deco$(OBJ)				\
++ 					arch_hcub$(OBJ)				\
++ 					arch_mesh$(OBJ)				\
++ 					arch_tleaf$(OBJ)			\
++ 					arch_torus$(OBJ)			\
++ 					arch_vcmplt$(OBJ)			\
++ 					arch_vhcub$(OBJ)			\
++ 					bgraph$(OBJ)				\
++ 					bgraph_bipart_bd$(OBJ)			\
++ 					bgraph_bipart_df$(OBJ)			\
++ 					bgraph_bipart_ex$(OBJ)			\
++ 					bgraph_bipart_fm$(OBJ)			\
++ 					bgraph_bipart_gg$(OBJ)			\
++ 					bgraph_bipart_gp$(OBJ)			\
++ 					bgraph_bipart_ml$(OBJ)			\
++ 					bgraph_bipart_st$(OBJ)			\
++ 					bgraph_bipart_zr$(OBJ)			\
++ 					bgraph_check$(OBJ)			\
++ 					bgraph_store$(OBJ)			\
++ 					common$(OBJ)				\
++ 					common_file$(OBJ)			\
++ 					common_file_compress$(OBJ)		\
++ 					common_file_uncompress$(OBJ)		\
++ 					common_integer$(OBJ)			\
++ 					common_memory$(OBJ)			\
++ 					common_stub$(OBJ)			\
++ 					gain$(OBJ)				\
++ 					geom$(OBJ)				\
++ 					graph$(OBJ)				\
++ 					graph_base$(OBJ)			\
++ 					graph_check$(OBJ)			\
++ 					graph_coarsen$(OBJ)			\
++ 					graph_induce$(OBJ)			\
++ 					graph_io$(OBJ)				\
++ 					graph_io_chac$(OBJ)			\
++ 					graph_io_habo$(OBJ)			\
++ 					graph_io_mmkt$(OBJ)			\
++ 					graph_io_scot$(OBJ)			\
++ 					graph_list$(OBJ)			\
++ 					hall_order_hd$(OBJ)			\
++ 					hall_order_hf$(OBJ)			\
++ 					hall_order_hx$(OBJ)			\
++ 					hgraph$(OBJ)				\
++ 					hgraph_check$(OBJ)			\
++ 					hgraph_induce$(OBJ)			\
++ 					hgraph_order_bl$(OBJ)			\
++ 					hgraph_order_cp$(OBJ)			\
++ 					hgraph_order_gp$(OBJ)			\
++ 					hgraph_order_hd$(OBJ)			\
++ 					hgraph_order_hf$(OBJ)			\
++ 					hgraph_order_hx$(OBJ)			\
++ 					hgraph_order_nd$(OBJ)			\
++ 					hgraph_order_si$(OBJ)			\
++ 					hgraph_order_st$(OBJ)			\
++ 					hmesh$(OBJ)				\
++ 					hmesh_check$(OBJ)			\
++ 					hmesh_hgraph$(OBJ)			\
++ 					hmesh_induce$(OBJ)			\
++ 					hmesh_mesh$(OBJ)			\
++ 					hmesh_order_bl$(OBJ)			\
++ 					hmesh_order_cp$(OBJ)			\
++ 					hmesh_order_gr$(OBJ)			\
++ 					hmesh_order_gp$(OBJ)			\
++ 					hmesh_order_hd$(OBJ)			\
++ 					hmesh_order_hf$(OBJ)			\
++ 					hmesh_order_hx$(OBJ)			\
++ 					hmesh_order_nd$(OBJ)			\
++ 					hmesh_order_si$(OBJ)			\
++ 					hmesh_order_st$(OBJ)			\
++ 					kgraph$(OBJ)				\
++ 					kgraph_map_rb$(OBJ)			\
++ 					kgraph_map_rb_map$(OBJ)			\
++ 					kgraph_map_rb_part$(OBJ)		\
++ 					kgraph_map_st$(OBJ)			\
++ 					library_arch$(OBJ)			\
++ 					library_arch_f$(OBJ)			\
++ 					library_arch_build$(OBJ)		\
++ 					library_arch_build_f$(OBJ)		\
++ 					library_arch_cmpltw$(OBJ)		\
++ 					library_arch_cmpltw_f$(OBJ)		\
++ 					library_geom$(OBJ)			\
++ 					library_geom_f$(OBJ)			\
++ 					library_graph$(OBJ)			\
++ 					library_graph_f$(OBJ)			\
++ 					library_graph_base$(OBJ)		\
++ 					library_graph_base_f$(OBJ)		\
++ 					library_graph_check$(OBJ)		\
++ 					library_graph_check_f$(OBJ)		\
++ 					library_graph_io_chac$(OBJ)		\
++ 					library_graph_io_chac_f$(OBJ)		\
++ 					library_graph_io_habo$(OBJ)		\
++ 					library_graph_io_habo_f$(OBJ)		\
++ 					library_graph_io_mmkt$(OBJ)		\
++ 					library_graph_io_mmkt_f$(OBJ)		\
++ 					library_graph_io_scot$(OBJ)		\
++ 					library_graph_io_scot_f$(OBJ)		\
++ 					library_graph_map$(OBJ)			\
++ 					library_graph_map_f$(OBJ)		\
++ 					library_graph_map_view$(OBJ)		\
++ 					library_graph_map_view_f$(OBJ)		\
++ 					library_graph_order$(OBJ)		\
++ 					library_graph_order_f$(OBJ)		\
++ 					library_mesh$(OBJ)			\
++ 					library_mesh_f$(OBJ)			\
++ 					library_mesh_graph$(OBJ)		\
++ 					library_mesh_graph_f$(OBJ)		\
++ 					library_mesh_io_habo$(OBJ)		\
++ 					library_mesh_io_habo_f$(OBJ)		\
++ 					library_mesh_io_scot$(OBJ)		\
++ 					library_mesh_io_scot_f$(OBJ)		\
++ 					library_mesh_order$(OBJ)		\
++ 					library_mesh_order_f$(OBJ)		\
++ 					library_parser$(OBJ)			\
++ 					library_parser_f$(OBJ)			\
++ 					library_random$(OBJ)			\
++ 					library_random_f$(OBJ)			\
++ 					mapping$(OBJ)				\
++ 					mapping_io$(OBJ)			\
++ 					mesh$(OBJ)				\
++ 					mesh_check$(OBJ)			\
++ 					mesh_coarsen$(OBJ)			\
++ 					mesh_graph$(OBJ)			\
++ 					mesh_induce_sepa$(OBJ)			\
++ 					mesh_io$(OBJ)				\
++ 					mesh_io_habo$(OBJ)			\
++ 					mesh_io_scot$(OBJ)			\
++ 					order$(OBJ)				\
++ 					order_check$(OBJ)			\
++ 					order_io$(OBJ)				\
++ 					parser$(OBJ)				\
++ 					parser_ll$(OBJ)				\
++ 					parser_yy$(OBJ)				\
++ 					vgraph$(OBJ)				\
++ 					vgraph_check$(OBJ)			\
++ 					vgraph_separate_bd$(OBJ)		\
++ 					vgraph_separate_es$(OBJ)		\
++ 					vgraph_separate_fm$(OBJ)		\
++ 					vgraph_separate_gg$(OBJ)		\
++ 					vgraph_separate_gp$(OBJ)		\
++ 					vgraph_separate_ml$(OBJ)		\
++ 					vgraph_separate_st$(OBJ)		\
++ 					vgraph_separate_th$(OBJ)		\
++ 					vgraph_separate_vw$(OBJ)		\
++ 					vgraph_separate_zr$(OBJ)		\
++ 					vgraph_store$(OBJ)			\
++ 					vmesh$(OBJ)				\
++ 					vmesh_check$(OBJ)			\
++ 					vmesh_separate_fm$(OBJ)			\
++ 					vmesh_separate_gg$(OBJ)			\
++ 					vmesh_separate_gr$(OBJ)			\
++ 					vmesh_separate_ml$(OBJ)			\
++ 					vmesh_separate_zr$(OBJ)			\
++ 					vmesh_separate_st$(OBJ)			\
++ 					vmesh_store$(OBJ)
++ 					$(AR) $(ARFLAGS) lib$(SCOTCHLIB)$(LIB) $(?)
++ 					-$(RANLIB) lib$(SCOTCHLIB)$(LIB)
++ 
+  libptscotcherr$(LIB)		:	library_error$(OBJ)
+  					$(AR) $(ARFLAGS) $(@) $(?)
+  					-$(RANLIB) $(@)
+***************
+*** 2467,2469 ****
+--- 2817,2835 ----
+  libscotcherrexit$(LIB)		:	library_error_exit$(OBJ)
+  					$(AR) $(ARFLAGS) $(@) $(?)
+  					-$(RANLIB) $(@)
++ 
++ libnfioscotcherr$(LIB)		:	library_error$(OBJ)
++ 					$(AR) $(ARFLAGS) $(@) $(?)
++ 					-$(RANLIB) $(@)
++ 
++ libnfioscotcherrexit$(LIB)		:	library_error_exit$(OBJ)
++ 					$(AR) $(ARFLAGS) $(@) $(?)
++ 					-$(RANLIB) $(@)
++ 
++ libmexscotcherr$(LIB)		:	library_error$(OBJ)
++ 					$(AR) $(ARFLAGS) $(@) $(?)
++ 					-$(RANLIB) $(@)
++ 
++ libmexscotcherrexit$(LIB)		:	library_error_exit$(OBJ)
++ 					$(AR) $(ARFLAGS) $(@) $(?)
++ 					-$(RANLIB) $(@)
+diff -crB scotch_5.1/src/libscotch/mapping.h src/src/libscotch/mapping.h
+*** scotch_5.1/src/libscotch/mapping.h	2008-10-27 08:27:47.000000000 -0700
+--- src/src/libscotch/mapping.h	2013-05-06 14:14:20.000000000 -0700
+***************
+*** 106,112 ****
+--- 106,116 ----
+  int                         mapInit2            (Mapping * restrict const, const Gnum, const Gnum, const Arch * restrict const, const ArchDom * restrict const);
+  void                        mapExit             (Mapping * const);
+  int                         mapLoad             (Mapping * restrict const, const Gnum * restrict const, FILE * restrict const);
++ #ifndef NOFILEIO
+  int                         mapSave             (const Mapping * restrict const, const Gnum * restrict const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         mapSave             (Gnum *, Gnum (**)[2], const Mapping * restrict const, const Gnum * restrict const, FILE * restrict const);
++ #endif /* NOFILEIO */
+  int                         mapView             (const Mapping * restrict const, const Graph * restrict const, FILE * const);
+  
+  #undef static
+diff -crB scotch_5.1/src/libscotch/mapping_io.c src/src/libscotch/mapping_io.c
+*** scotch_5.1/src/libscotch/mapping_io.c	2008-05-22 06:44:43.000000000 -0700
+--- src/src/libscotch/mapping_io.c	2013-05-06 14:14:20.000000000 -0700
+***************
+*** 199,204 ****
+--- 199,208 ----
+  
+  int
+  mapSave (
++ #ifdef NOFILEIO
++ Gnum *pnvert,
++ Gnum (**pmaptab)[2],
++ #endif /* NOFILEIO */
+  const Mapping * restrict const  mappptr,
+  const Gnum * restrict const     vlbltab,
+  FILE * restrict const           stream)
+***************
+*** 206,226 ****
+    const Gnum * restrict vlbltax;
+    Gnum                  vertnum;
+  
+    vlbltax = (vlbltab != NULL) ? (vlbltab - mappptr->baseval) : NULL;
+  
+    if (fprintf (stream, "%ld\n", (long) mappptr->vertnbr) == EOF) {
+      errorPrint ("mapSave: bad output (1)");
+      return     (1);
+    }
+  
+    for (vertnum = mappptr->baseval; vertnum < (mappptr->vertnbr + mappptr->baseval); vertnum ++) {
+      if (fprintf (stream, "%ld\t%ld\n",
+!                  (long) ((vlbltax != NULL) ? vlbltax[vertnum] : vertnum),
+                   (long) archDomNum (&mappptr->archdat, &mappptr->domntab[mappptr->parttax[vertnum]])) == EOF) {
+        errorPrint ("mapSave: bad output (2)");
+        return     (1);
+      }
+    }
+  
+    return (0);
+  }
+--- 210,258 ----
+    const Gnum * restrict vlbltax;
+    Gnum                  vertnum;
+  
++ #ifdef NOFILEIO
++ //  printf("mapSave - stream=%p\n",stream);
++ #endif /* NOFILEIO */
+    vlbltax = (vlbltab != NULL) ? (vlbltab - mappptr->baseval) : NULL;
+  
++ #ifndef NOFILEIO
+    if (fprintf (stream, "%ld\n", (long) mappptr->vertnbr) == EOF) {
+      errorPrint ("mapSave: bad output (1)");
+      return     (1);
+    }
++ #else /* NOFILEIO */
++   if (pnvert) {
++     *pnvert=mappptr->vertnbr;
++ //    printf("mapSave - nvert=%d\n",*pnvert);
++   }
++   if (pmaptab) {
++     *pmaptab = (Gnum (*)[2]) malloc(mappptr->vertnbr*2*sizeof(Gnum));
++ //    printf("mapSave - maptab=%p\n",*pmaptab);
++   }
++ #endif /* NOFILEIO */
+  
++ #ifndef NOFILEIO
+    for (vertnum = mappptr->baseval; vertnum < (mappptr->vertnbr + mappptr->baseval); vertnum ++) {
+      if (fprintf (stream, "%ld\t%ld\n",
+! /*  not sure why, but need to offset vlbltax in other direction (jes, 12/11/09)  */
+! //                 (long) ((vlbltax != NULL) ? vlbltax[vertnum] : vertnum),
+!                  (long) ((vlbltax != NULL) ? vlbltax[vertnum+mappptr->baseval] : vertnum),
+                   (long) archDomNum (&mappptr->archdat, &mappptr->domntab[mappptr->parttax[vertnum]])) == EOF) {
+        errorPrint ("mapSave: bad output (2)");
+        return     (1);
+      }
+    }
++ #else /* NOFILEIO */
++   if (pmaptab && *pmaptab)
++     for (vertnum = mappptr->baseval; vertnum < (mappptr->vertnbr + mappptr->baseval); vertnum ++) {
++ /*  not sure why, but need to offset vlbltax in other direction (jes, 12/11/09)  */
++ //      (*pmaptab)[vertnum-mappptr->baseval][0]=((vlbltax != NULL) ? vlbltax[vertnum] : vertnum);
++       (*pmaptab)[vertnum-mappptr->baseval][0]=((vlbltax != NULL) ? vlbltax[vertnum+mappptr->baseval] : vertnum);
++       (*pmaptab)[vertnum-mappptr->baseval][1]=archDomNum (&mappptr->archdat, &mappptr->domntab[mappptr->parttax[vertnum]]);
++ //    printf("mapSave - vertnum=%d; vlbltax=%d,archDomNum=%d\n",
++ //           vertnum,((vlbltax != NULL) ? vlbltax[vertnum+mappptr->baseval] : -1),archDomNum (&mappptr->archdat, &mappptr->domntab[mappptr->parttax[vertnum]]));
++     }
++ #endif /* NOFILEIO */
+  
+    return (0);
+  }
+diff -crB scotch_5.1/src/libscotch/mesh_io_scot.c src/src/libscotch/mesh_io_scot.c
+*** scotch_5.1/src/libscotch/mesh_io_scot.c	2008-05-22 06:44:43.000000000 -0700
+--- src/src/libscotch/mesh_io_scot.c	2013-05-06 14:14:20.000000000 -0700
+***************
+*** 85,91 ****
+--- 85,95 ----
+    int                           o;
+  
+    if (filesrcptr != NULL) {
++ #ifndef NOFILEIO
+      if (graphLoad (meshptr, filesrcptr, -1, 0) != 0)
++ #else /* NOFILEIO */
++     if (graphLoad (meshptr, filesrcptr, -1, 0, 0, 0, NULL, NULL, NULL, NULL, NULL) != 0)
++ #endif /* NOFILEIO */
+        return (1);
+    }
+  
+diff -crB scotch_5.1/src/libscotch/module.h src/src/libscotch/module.h
+*** scotch_5.1/src/libscotch/module.h	2009-04-26 23:07:14.000000000 -0700
+--- src/src/libscotch/module.h	2013-05-06 14:14:20.000000000 -0700
+***************
+*** 1,3 ****
+--- 1,5 ----
++ #ifndef _SCOTCH_MODULE_H_
++ #define _SCOTCH_MODULE_H_
+  /* Copyright 2004,2007-2009 ENSEIRB, INRIA & CNRS
+  **
+  ** This file is part of the Scotch software package for static mapping,
+***************
+*** 55,60 ****
+--- 57,65 ----
+  
+  #define MODULE_H
+  
++ /*Don't forget stdint.h:*/
++ #include "stdint.h"
++ 
+  /*
+  ** Collective communication handling.
+  */
+***************
+*** 156,161 ****
+--- 161,167 ----
+  #define intSave                     _SCOTCHintSave
+  #define intAscn                     _SCOTCHintAscn
+  #define intPerm                     _SCOTCHintPerm
++ #define intRandResetStatic          _SCOTCHintRandResetStatic
+  #define intRandReset                _SCOTCHintRandReset
+  #define intRandInit                 _SCOTCHintRandInit
+  /* #define intRandVal               _SCOTCHintRandVal Already a macro */
+***************
+*** 681,683 ****
+--- 687,691 ----
+  #define vmeshStoreSave              _SCOTCHvmeshStoreSave
+  #define vmeshStoreUpdt              _SCOTCHvmeshStoreUpdt
+  #endif /* SCOTCH_RENAME */
++ 
++ #endif //#ifndef _SCOTCH_MODULE_H_
+diff -crB scotch_5.1/src/libscotch/parser_ll.l src/src/libscotch/parser_ll.l
+*** scotch_5.1/src/libscotch/parser_ll.l	2008-05-22 06:44:43.000000000 -0700
+--- src/src/libscotch/parser_ll.l	2013-05-06 14:14:21.000000000 -0700
+***************
+*** 192,197 ****
+--- 192,214 ----
+  stratParserInit (
+  const char * const          string)               /*+ Strategy string to parse +*/
+  {
++ /*  reset static variables from previous runs (jes, 4/29/10)  */
++   yy_current_buffer = 0;
++   yy_hold_char = (char) 0;
++   yy_n_chars=0;          /* number of characters read into yy_ch_buf */
++   yy_c_buf_p = (char *) 0;
++   yy_init = 1;         /* whether we need to initialize */
++   yy_start = 0;        /* start state number */
++   yy_did_buffer_switch_on_eof=0;
++   yy_last_accepting_state=0;
++   yy_last_accepting_cpos = (char *) 0;
++   stratparserstringptr = (char *) 0; /* Pointer to the string to parse */
++ #if YY_STACK_USED
++   yy_start_stack_ptr = 0;
++   yy_start_stack_depth = 0;
++   yy_start_stack = 0;
++ #endif
++ 
+  #ifdef FLEX_SCANNER
+    yyrestart (yyin);                               /* (Re-)initialize the parser */
+  #endif /* FLEX_SCANNER */
+diff -crB scotch_5.1/src/libscotch/parser_yy.y src/src/libscotch/parser_yy.y
+*** scotch_5.1/src/libscotch/parser_yy.y	2008-10-22 15:12:48.000000000 -0700
+--- src/src/libscotch/parser_yy.y	2013-05-06 14:14:21.000000000 -0700
+***************
+*** 774,779 ****
+--- 774,780 ----
+    stratParserInit (string);                       /* Initialize the lexical parser           */
+    parserstrattab  = strattab;                     /* Point to the parsing tables             */
+    parserstratcurr = NULL;                         /* Clear up the temporary strategy pointer */
++   parserparamcurr = NULL;                         /* reset the last static (jes, 4/29/10)    */
+  
+    if (stratParserParse2 () != 0) {                /* Parse the strategy string */
+      if (parserstratcurr != NULL)
+diff -crB scotch_5.1/src/libscotch/vgraph_separate_vw.c src/src/libscotch/vgraph_separate_vw.c
+*** scotch_5.1/src/libscotch/vgraph_separate_vw.c	2008-05-22 06:44:43.000000000 -0700
+--- src/src/libscotch/vgraph_separate_vw.c	2013-05-06 14:14:21.000000000 -0700
+***************
+*** 83,88 ****
+--- 83,89 ----
+    FILE * restrict     fileptr;
+    Gnum                vertnum;                    /* Vertex number */
+  
++   printf("vgraphSeparateVw begin -- vgraphseparatevwfilenum=%d\n",vgraphseparatevwfilenum);
+    sprintf (nametab, "vgraphseparatevw_output_%08d.map", vgraphseparatevwfilenum ++);
+    if ((fileptr = fopen (nametab, "w+")) == NULL) {
+      errorPrint ("vgraphSeparateVw: cannot open partition file");
+***************
+*** 102,106 ****
+--- 103,108 ----
+      }
+    }
+  
++   printf("vgraphSeparateVw end   -- vgraphseparatevwfilenum=%d\n",vgraphseparatevwfilenum);
+    return (0);
+  }
+diff -crB scotch_5.1/src/Makefile src/src/Makefile
+*** scotch_5.1/src/Makefile	2008-09-15 05:50:51.000000000 -0700
+--- src/src/Makefile	2013-05-06 14:14:21.000000000 -0700
+***************
+*** 97,102 ****
+--- 97,109 ----
+  					(cd scotch ;         $(MAKE) VERSION=\"$(VERSION)\" ptscotch && $(MAKE) ptinstall)
+  					(cd libscotchmetis ; $(MAKE)                        ptscotch && $(MAKE) ptinstall)
+  
++ nfioscotch			:	required
++ 					(cd libscotch ;      $(MAKE) VERSION=\"$(VERSION)\" nfioscotch && $(MAKE) nfioinstall)
++ 
++ mexscotch			:	required
++ 					(cd libscotch ;      $(MAKE) VERSION=\"$(VERSION)\" mexscotch && $(MAKE) mexinstall)
++ 					(cd scotch ;         $(MAKE) VERSION=\"$(VERSION)\" mexscotch && $(MAKE) mexinstall)
++ 
+  install				:	required	$(bindir)	$(includedir)	$(libdir)	$(mandir)/man1
+  					-$(CP) -f ../bin/[agm]*$(EXE) $(bindir)
+  					-$(CP) -f ../include/*scotch*.h $(includedir)
+Only in src/src: Makefile.inc
+diff -crB scotch_5.1/src/scotch/gmap.h src/src/scotch/gmap.h
+*** scotch_5.1/src/scotch/gmap.h	2008-06-18 11:05:17.000000000 -0700
+--- src/src/scotch/gmap.h	2013-05-06 14:14:22.000000000 -0700
+***************
+*** 1,3 ****
+--- 1,5 ----
++ #ifndef _SCOTCH_GMAP_H_
++ #define _SCOTCH_GMAP_H_
+  /* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS
+  **
+  ** This file is part of the Scotch software package for static mapping,
+***************
+*** 87,89 ****
+--- 89,93 ----
+  #define C_FLAGVERBSTR               0x0002        /* Verbose flags */
+  #define C_FLAGVERBTIM               0x0004
+  #define C_FLAGVERBMAP               0x0008
++ 
++ #endif //#ifndef _SCOTCH_GMAP_H_
+Only in src/src/scotch: gmap_mex.c
+Only in src/src/scotch: gmapx.c
+diff -crB scotch_5.1/src/scotch/Makefile src/src/scotch/Makefile
+*** scotch_5.1/src/scotch/Makefile	2009-04-27 02:19:43.000000000 -0700
+--- src/src/scotch/Makefile	2013-05-06 14:14:22.000000000 -0700
+***************
+*** 49,59 ****
+  %$(EXE)	:	%.c
+  		 		$(CC) $(CFLAGS) -I$(includedir) -I../libscotch -DSCOTCH_VERSION=\"$(VERSION)\" $(<) -o $(@) -L$(libdir) -l$(SCOTCHLIB) -l$(SCOTCHLIB)errexit $(LDFLAGS)
+  
+  ##
+  ##  Project rules.
+  ##
+  
+! .PHONY				:	ptscotch	scotch	ptinstall	install	clean	realclean
+  
+  scotch				:	clean
+  					$(MAKE) CC="$(CCS)" SCOTCHLIB=scotch	\
+--- 49,62 ----
+  %$(EXE)	:	%.c
+  		 		$(CC) $(CFLAGS) -I$(includedir) -I../libscotch -DSCOTCH_VERSION=\"$(VERSION)\" $(<) -o $(@) -L$(libdir) -l$(SCOTCHLIB) -l$(SCOTCHLIB)errexit $(LDFLAGS)
+  
++ %$(MEX)	:	%.c
++ 		 		$(CCM) $(MFLAGS) -I$(includedir) -I../libscotch -DSCOTCH_VERSION=\"$(VERSION)\" $(<) -o $(@) -L$(libdir) -l$(SCOTCHLIB) -l$(SCOTCHLIB)errexit $(LDFLAGS)
++ 
+  ##
+  ##  Project rules.
+  ##
+  
+! .PHONY				:	ptscotch	scotch	mexscotch	ptinstall	install	mexinstall	clean	realclean
+  
+  scotch				:	clean
+  					$(MAKE) CC="$(CCS)" SCOTCHLIB=scotch	\
+***************
+*** 94,99 ****
+--- 97,108 ----
+  					dgscat$(EXE)				\
+  					dgtst$(EXE)
+  
++ mexscotch			:	clean
++ 					$(MAKE) CFLAGS="$(CFLAGS) -DNOFILEIO -DMATLAB -I${MATLAB_DIR}/extern/include" CC="$(CCS)" CCD="$(CCS)" LDFLAGS="$(LDFLAGS) -Wl,-rpath-link,${MATLAB_DIR}/bin/glnxa64 -L${MATLAB_DIR}/bin/glnxa64 -lmex -lmat" SCOTCHLIB=mexscotch \
++                     gmapx$(OBJ)
++ 					$(MAKE) CFLAGS="$(CFLAGS) -DNOFILEIO -DMATLAB -I${MATLAB_DIR}/extern/include" CC="$(CCS)" LDFLAGS="$(LDFLAGS) -Wl,-rpath-link,${MATLAB_DIR}/bin/glnxa64 -L${MATLAB_DIR}/bin/glnxa64 -lmex -lmat gmapx$(OBJ)" SCOTCHLIB=mexscotch	\
++ 					gmap_mex$(MEX)
++ 
+  install				:
+  					-$(CP) acpl$(EXE) amk_ccc$(EXE) amk_fft2$(EXE) amk_grf$(EXE) amk_hy$(EXE) amk_m2$(EXE) amk_p2$(EXE) atst$(EXE) gbase$(EXE) gcv$(EXE) gmap$(EXE) gmk_hy$(EXE) gmk_m2$(EXE) gmk_m3$(EXE) gmk_msh$(EXE) gmk_ub2$(EXE) gmtst$(EXE) gord$(EXE) gotst$(EXE) gout$(EXE) *gtst$(EXE) gscat$(EXE) mcv$(EXE) mmk_m2$(EXE) mmk_m3$(EXE) mord$(EXE) mtst$(EXE) $(bindir)
+  					-$(RM) $(bindir)/gpart$(EXE)
+***************
+*** 104,111 ****
+--- 113,126 ----
+  					-$(RM) $(bindir)/dgpart$(EXE)
+  					-$(LN) $(bindir)/dgmap$(EXE) $(bindir)/dgpart$(EXE)
+  
++ mexinstall			:
++ 					-$(CP) gmap_mex$(MEX) $(bindir)
++ 					-$(RM) $(bindir)/gpart_mex$(MEX)
++ 					-$(LN) $(bindir)/gmap_mex$(MEX) $(bindir)/gpart_mex$(MEX)
++ 
+  clean				:
+  					-$(RM) *~ *$(OBJ) acpl$(EXE) amk_ccc$(EXE) amk_fft2$(EXE) amk_grf$(EXE) amk_hy$(EXE) amk_m2$(EXE) amk_p2$(EXE) atst$(EXE) gbase$(EXE) gcv$(EXE) *gmap$(EXE) gmk_hy$(EXE) gmk_m2$(EXE) gmk_m3$(EXE) gmk_msh$(EXE) gmk_ub2$(EXE) gmtst$(EXE) *gord$(EXE) gotst$(EXE) gout$(EXE) *gpart$(EXE) *gscat$(EXE) *gtst$(EXE) mcv$(EXE) mmk_m2$(EXE) mmk_m3$(EXE) mord$(EXE) mtst$(EXE)
++ 					-$(RM) gmap_mex$(MEX)
+  
+  realclean			:	clean
+  
+***************
+*** 365,367 ****
+--- 380,403 ----
+  					$(libdir)/libscotch$(LIB)		\
+  					$(libdir)/libscotcherrexit$(LIB)	\
+  					mtst.h
++ 
++ gmapx$(OBJ)			:	gmapx.c					\
++ 					../libscotch/module.h			\
++ 					../libscotch/common.h			\
++ 					$(includedir)/scotch.h			\
++ 					$(libdir)/libmexscotch$(LIB)		\
++ 					$(libdir)/libmexscotcherrexit$(LIB)	\
++ 					gmap.h
++ 
++ gmap_mex$(MEX)		:	gmap_mex.c					\
++ 					../libscotch/module.h			\
++ 					../libscotch/common.h			\
++ 					$(includedir)/scotch.h			\
++ 					$(libdir)/libmexscotch$(LIB)		\
++ 					$(libdir)/libmexscotcherrexit$(LIB)	\
++ 					gmap.h
++ 
++ gpart_mex$(MEX)			:	gmap_mex$(MEX)
++ 					-$(RM) gpart_mex$(MEX)
++ 					-$(LN) gmap_mex$(MEX) gpart_mex$(MEX)
++ 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/scotch_README.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/scotch_README.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/scotch_README.txt	(revision 21239)
@@ -0,0 +1,296 @@
+8/06/09:
+
+following INSTALL.txt:
+- GNU Make 3.81, lex, yacc all present
+
+
+[jschierm@astrid src]$ diff Makefile_old.inc Makefile.inc
+
+- started with Makefile.inc.i686_sun_solaris5
+- changed CCS from cc to gcc
+- removed SCOTCH_PTHREAD, since MPICH2 1.0.2p1 is prior to 1.0.7
+- added -std=c99 to CFLAGS for "restrict" attribute (based on various internet pages)
+- added -DCOMMON_TIMING_OLD to CFLAGS for undeclared CLOCK_REALTIME (based on common2.c)
+- added MEX, CCM, and MFLAGS for Matlab mex modules (as well as Matlab libraries and -largeArrayDims)
+- removed -DCOMMON_PTHREAD from CFLAGS and MFLAGS to eliminate fatal exception at pthread_exit in gmap_mex.c
+- removed -DCOMMON_FILE_COMPRESS_GZ from CFLAGS and MFLAGS since gzip not used
+- added -Wl,-rpath-link,/usr/local/pkgs/matlab-7.6/bin/glnxa64 to LDFLAGS to eliminate missing libhdf5.so.0 in Matlab directories (based on Cielo make)
+
+3a4
+> MEX   = .mexa64
+12,13c13,16
+< CFLAGS        = -m64 -O3 -std=c99 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t -DINTSIZE64 -Dintptr_t="long int" -DCOMMON_TIMING_OLD
+< LDFLAGS       = -lz -lm -lrt
+---
+> CCM   = mex
+> CFLAGS        = -m64 -O3 -std=c99 -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t -DCOMMON_TIMING_OLD -DMATLAB -fPIC -I/usr/local/pkgs/matlab-7.6/extern/include
+> LDFLAGS       = -lz -lm -lrt -Wl,-rpath-link,/usr/local/pkgs/matlab-7.6/bin/glnxa64 -L/usr/local/pkgs/matlab-7.6/bin/glnxa64 -lmex -lmat
+> MFLAGS        = -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t -DCOMMON_TIMING_OLD -DMATLAB -I/usr/local/pkgs/matlab-7.6/extern/include -largeArrayDims
+
+
+[jschierm@astrid libscotch]$ diff common_old.c common.c
+
+- redirect usagePrint to within Matlab
+102a103
+> #ifndef MATLAB
+105a107,111
+> #else /* MATLAB */
+>   mexPrintf ("Usage is:\n");
+>   for (cptr = data; *cptr != NULL; cptr ++)
+>     mexPrintf ("  %s\n", *cptr);
+> #endif /* MATLAB */
+
+
+[jschierm@astrid libscotch]$ diff common_old.h common.h
+
+- fix undeclared type intptr_t
+68a69
+> #include            <stdint.h>                    /* added for intptr_t */
+
+- for running as a matlab mex function
+- add macro for fprintf to capture missing output
+- fix exits to exit within Matlab
+90a92,105
+> #ifdef MATLAB
+>     #include "mat.h"
+>     #include "mex.h"
+>     #include "matrix.h"
+> 
+>     #define printf mexPrintf
+>     #define fprintf(file,...) (file == stdout || file == stderr ? mexPrintf(__VA_ARGS__) : fprintf(file,__VA_ARGS__))
+>     #define malloc mxMalloc
+>     #define calloc mxCalloc
+>     #define realloc mxRealloc
+>     #define free mxFree
+>     #define exit(status) mexErrMsgTxt("exit=" #status)
+> #endif
+> 
+
+
+[jschierm@astrid libscotch]$ diff dummysizes_old.c dummysizes.c
+
+- dummysizes must run by itself during compilation and exit cleanly
+269a270
+> #ifndef MATLAB
+270a272
+> #endif /* MATLAB */
+
+
+[jschierm@astrid libscotch]$ diff library_error_exit_old.c library_error_exit.c
+
+- redirect errorPrint and errorPrintW to within Matlab
+116a117
+> #ifndef MATLAB
+133a135,152
+> #else /* MATLAB */
+>   mexPrintf  ("%s", _SCOTCHerrorProgName);
+> #ifdef SCOTCH_PTSCOTCH
+>   if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) &&
+>       (proclocnum != 0)                              &&
+>       (MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum) == MPI_SUCCESS))
+>     mexPrintf ("(%d): ", proclocnum);
+> #else /* SCOTCH_PTSCOTCH */
+>   if (_SCOTCHerrorProgName[0] != '\0')
+>     mexPrintf  (": ");
+> #endif /* SCOTCH_PTSCOTCH */
+>   mexPrintf  ("ERROR: ");
+>   va_start (errlist, errstr);
+>   mexPrintf (errstr, errlist);             /* Print arguments */
+>   va_end   (errlist);
+>   mexPrintf  ("\n");
+> #endif /* MATLAB */
+> 
+157a177
+> #ifndef MATLAB
+173a194,211
+> 
+> #else /* MATLAB */
+>   mexPrintf  ("%s", _SCOTCHerrorProgName);
+> #ifdef SCOTCH_PTSCOTCH
+>   if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) &&
+>       (proclocnum != 0)                              &&
+>       (MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum) == MPI_SUCCESS))
+>     mexPrintf ("(%d): ", proclocnum);
+> #else /* SCOTCH_PTSCOTCH */
+>   if (_SCOTCHerrorProgName[0] != '\0')
+>     mexPrintf  (": ");
+> #endif /* SCOTCH_PTSCOTCH */
+>   mexPrintf  ("WARNING: ");
+>   va_start (errlist, errstr);
+>   mexPrintf (errstr, errlist);             /* Print arguments */
+>   va_end   (errlist);
+>   mexPrintf  ("\n");
+> #endif /* MATLAB */
+
+
+[jschierm@astrid scotch]$ diff Makefile_old Makefile
+- add MEX rule
+- add gmap_mex into scotch, clean, and install rules
+- add gmap_mex object
+51a52,54
+> %$(MEX)       :       %.c
+>                               $(CCM) $(MFLAGS) -I$(includedir) -I../libscotch -DSCOTCH_VERSION=\"$(VERSION)\" $(<) -o $(@) -L$(libdir) -l$(SCOTCHLIB) -l$(SCOTCHLIB)errexit $(LDFLAGS)
+> 
+70a74
+>                                       gmap_mex$(MEX) \
+98c102
+<                                       -$(CP) acpl$(EXE) amk_ccc$(EXE) amk_fft2$(EXE) amk_grf$(EXE) amk_hy$(EXE) amk_m2$(EXE) amk_p2$(EXE) atst$(EXE) gbase$(EXE) gcv$(EXE) gmap$(EXE) gmk_hy$(EXE) gmk_m2$(EXE) gmk_m3$(EXE) gmk_msh$(EXE) gmk_ub2$(EXE) gmtst$(EXE) gord$(EXE) gotst$(EXE) gout$(EXE) *gtst$(EXE) gscat$(EXE) mcv$(EXE) mmk_m2$(EXE) mmk_m3$(EXE) mord$(EXE) mtst$(EXE) $(bindir)
+---
+>                                       -$(CP) acpl$(EXE) amk_ccc$(EXE) amk_fft2$(EXE) amk_grf$(EXE) amk_hy$(EXE) amk_m2$(EXE) amk_p2$(EXE) atst$(EXE) gbase$(EXE) gcv$(EXE) gmap$(EXE) gmap_mex$(MEX) gmk_hy$(EXE) gmk_m2$(EXE) gmk_m3$(EXE) gmk_msh$(EXE) gmk_ub2$(EXE) gmtst$(EXE) gord$(EXE) gotst$(EXE) gout$(EXE) *gtst$(EXE) gscat$(EXE) mcv$(EXE) mmk_m2$(EXE) mmk_m3$(EXE) mord$(EXE) mtst$(EXE) $(bindir)
+108c112
+<                                       -$(RM) *~ *$(OBJ) acpl$(EXE) amk_ccc$(EXE) amk_fft2$(EXE) amk_grf$(EXE) amk_hy$(EXE) amk_m2$(EXE) amk_p2$(EXE) atst$(EXE) gbase$(EXE) gcv$(EXE) *gmap$(EXE) gmk_hy$(EXE) gmk_m2$(EXE) gmk_m3$(EXE) gmk_msh$(EXE) gmk_ub2$(EXE) gmtst$(EXE) *gord$(EXE) gotst$(EXE) gout$(EXE) *gpart$(EXE) *gscat$(EXE) *gtst$(EXE) mcv$(EXE) mmk_m2$(EXE) mmk_m3$(EXE) mord$(EXE) mtst$(EXE)
+---
+>                                       -$(RM) *~ *$(OBJ) acpl$(EXE) amk_ccc$(EXE) amk_fft2$(EXE) amk_grf$(EXE) amk_hy$(EXE) amk_m2$(EXE) amk_p2$(EXE) atst$(EXE) gbase$(EXE) gcv$(EXE) *gmap$(EXE) gmap_mex$(MEX) gmk_hy$(EXE) gmk_m2$(EXE) gmk_m3$(EXE) gmk_msh$(EXE) gmk_ub2$(EXE) gmtst$(EXE) *gord$(EXE) gotst$(EXE) gout$(EXE) *gpart$(EXE) *gscat$(EXE) *gtst$(EXE) mcv$(EXE) mmk_m2$(EXE) mmk_m3$(EXE) mord$(EXE) mtst$(EXE)
+239a244,251
+> gmap_mex$(MEX)                :       gmap_mex.c \
+>                                       ../libscotch/module.h \
+>                                       ../libscotch/common.h \
+>                                       $(includedir)/scotch.h \
+>                                       $(libdir)/libscotch$(LIB) \
+>                                       $(libdir)/libscotcherrexit$(LIB) \
+>                                       gmap.h
+> 
+
+
+[jschierm@astrid scotch]$ diff gmap.c gmap_mex.c
+- convert gmap to gmap_mex mex function with variable argument list
+117,120c117,120
+< int
+< main (
+< int                         argc,
+< char *                      argv[])
+---
+> void mexFunction( int nlhs,
+>                   mxArray *plhs[],
+>                   int nrhs,
+>                   const mxArray *prhs[] )
+121a122,123
+>   int                         argcm;
+>   char                        argvm[21][257];
+130a133,152
+> /*  check static variables from previous runs  */
+> 
+>   if (C_paraNum > 0 || C_fileNum > 0)
+>     mexErrMsgTxt("gmap_mex still in memory -- clear gmap_mex and try again.\n");
+> 
+> /*  load matlab argument list  */
+> 
+>   argcm=nrhs+1;
+>   mexPrintf("argcm=%d\n",argcm);
+>   strcpy(argvm[0],"gmap");
+>   for (i=0; i<nrhs; i++)
+>     if (!mxIsChar(prhs[i])) {
+>       mexPrintf("%s -- prhs[%d] must be character.\n","gmap",i);
+>       mexErrMsgTxt(" ");
+>     }
+>     else
+>       mxGetString(prhs[i],argvm[i+1],256);
+>   for (i=0; i<nrhs+1; i++)
+>     mexPrintf("argvm[%d]=%s\n",i,argvm[i]);
+> 
+132,133c154,155
+<   i = strlen (argv[0]);
+<   if ((i >= 5) && (strncmp (argv[0] + i - 5, "gpart", 5) == 0)) {
+---
+>   i = strlen (argvm[0]);
+>   if ((i >= 5) && (strncmp (argvm[0] + i - 5, "gpart", 5) == 0)) {
+144c166
+<   if ((argc >= 2) && (argv[1][0] == '?')) {       /* If need for help */
+---
+>   if ((argcm >= 2) && (argvm[1][0] == '?')) {       /* If need for help */
+151a174,175
+>   printf("point 0: C_FILENBR=%d, C_fileNbr=%d, C_paraNbr=%d\n",
+>          C_FILENBR,C_fileNbr,C_paraNbr);
+154,155c178,183
+<   for (i = 1; i < argc; i ++) {                   /* Loop for all option codes                        */
+<     if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */
+---
+>   for (i = 1; i < argcm; i ++) {                   /* Loop for all option codes                        */
+>   printf("point 1: i=%d; C_fileNbr=%d, C_fileNum=%d, C_paraNbr=%d, C_paraNum=%d\n",
+>          i,C_fileNbr,C_fileNum,C_paraNbr,C_paraNum);
+>     if ((argvm[i][0] != '-') || (argvm[i][1] == '\0') || (argvm[i][1] == '.')) { /* If found a file name */
+>   printf("point 2: i=%d; C_fileNbr=%d, C_fileNum=%d, C_paraNbr=%d, C_paraNum=%d\n",
+>          i,C_fileNbr,C_fileNum,C_paraNbr,C_paraNum);
+157,158c185,186
+<         if ((C_partNbr = atoi (argv[i])) < 1)     /* Get the number of parts */
+<           errorPrint ("main: invalid number of parts (\"%s\")", argv[i]);
+---
+>         if ((C_partNbr = atoi (argvm[i])) < 1)     /* Get the number of parts                          */
+>           errorPrint ("main: invalid number of parts (\"%s\")", argvm[i]);
+161a190,191
+>   printf("point 3: i=%d; C_fileNbr=%d, C_fileNum=%d, C_paraNbr=%d, C_paraNum=%d\n",
+>          i,C_fileNbr,C_fileNum,C_paraNbr,C_paraNum);
+163c193
+<         C_fileTab[C_fileNum ++].name = argv[i];
+---
+>         C_fileTab[C_fileNum ++].name = argvm[i];
+165a196,197
+>   printf("point 4: i=%d; C_fileNbr=%d, C_fileNum=%d, C_paraNbr=%d, C_paraNum=%d\n",
+>          i,C_fileNbr,C_fileNum,C_paraNbr,C_paraNum);
+168c200
+<       switch (argv[i][1]) {
+---
+>       switch (argvm[i][1]) {
+177c209
+<           SCOTCH_stratGraphMap (&stradat, &argv[i][2]);
+---
+>           SCOTCH_stratGraphMap (&stradat, &argvm[i][2]);
+181,182c213,214
+<           for (j = 2; argv[i][j] != '\0'; j ++) {
+<             switch (argv[i][j]) {
+---
+>           for (j = 2; argvm[i][j] != '\0'; j ++) {
+>             switch (argvm[i][j]) {
+192c224
+<                 errorPrint ("main: invalid source graph option (\"%c\")", argv[i][j]);
+---
+>                 errorPrint ("main: invalid source graph option (\"%c\")", argvm[i][j]);
+202,203c234,235
+<           for (j = 2; argv[i][j] != '\0'; j ++) {
+<             switch (argv[i][j]) {
+---
+>           for (j = 2; argvm[i][j] != '\0'; j ++) {
+>             switch (argvm[i][j]) {
+217c249
+<                 errorPrint ("main: unprocessed parameter \"%c\" in \"%s\"", argv[i][j], argv[i]);
+---
+>                 errorPrint ("main: unprocessed parameter \"%c\" in \"%s\"", argvm[i][j], argvm[i]);
+222c254
+<           errorPrint ("main: unprocessed option (\"%s\")", argv[i]);
+---
+>           errorPrint ("main: unprocessed option (\"%s\")", argvm[i]);
+225a258
+>   printf("point 5\n");
+230a264
+>   printf("point 6\n");
+232a267
+>   printf("point 7\n");
+235a271
+>   printf("point 8\n");
+239a276
+>   printf("point 9\n");
+244a282
+>   printf("point 10\n");
+251a290
+>   printf("point 11\n");
+256a296
+>   printf("point 12\n");
+264a305
+>   printf("point 13\n");
+271a313
+>   printf("point 14\n");
+273a316
+>   printf("point 15\n");
+276a320
+>   printf("point 16\n");
+277a322
+>   printf("point 16a\n");
+278a324
+>   printf("point 16b\n");
+279a326
+>   printf("point 16c\n");
+280a328
+>   printf("point 17\n");
+284a333
+>   printf("point 18\n");
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/scotch_jes_notes.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/scotch_jes_notes.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/scotch/scotch_jes_notes.txt	(revision 21239)
@@ -0,0 +1,308 @@
+8/06/09:
+
+following INSTALL.txt:
+- GNU Make 3.81, lex, yacc all present
+- started with Makefile.inc.i686_sun_solaris5
+- changed CCS from cc to gcc
+- removed SCOTCH_PTHREAD, since MPICH2 1.0.2p1 is prior to 1.0.7
+
+graph.h:110: error: expected :, ,, ;, ) or __attribute__ before vnumtab
+(and so on for "restrict" attribute in graph.h,geom.h,mesh.h,arch.h,mapping.h,order.h)
+- added -std=c99 to CFLAGS (based on various internet pages)
+
+bgraph_bipart_gg.c:267: error: intptr_t undeclared
+- according to various internet pages, should be included in c99 standard
+- defined in /usr/include/stdint.h (also referenced in inttypes.h), so why not included?
+- added -DINTSIZE64 to CFLAGS, still didn't work (based on INSTALL.txt)
+- added -Dintptr_t="long int" (based on /usr/include/stdint.h)
+
+common2.c:764: error: storage size of tp isn't known
+common2.c:766: error: CLOCK_REALTIME undeclared
+- added -DCOMMON_TIMING_OLD to CFLAGS (based on source code)
+
+8/13/09:
+
+for running as a matlab mex function:
+[jschierm@astrid libscotch]$ diff common_old.h common.h
+90a91,102
+> #ifdef MATLAB
+>     #include "mat.h"
+>     #include "mex.h"
+>     #include "matrix.h"
+> 
+>     #define printf mexPrintf
+>     #define malloc mxMalloc
+>     #define calloc mxCalloc
+>     #define realloc mxRealloc
+>     #define free mxFree
+> #endif
+> 
+
+[jschierm@astrid src]$ diff Makefile_old.inc Makefile.inc
+12,13c12,13
+< CFLAGS        = -m64 -O3 -std=c99 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t -DINTSIZE64 -Dintptr_t="long int" -DCOMMON_TIMING_OLD
+< LDFLAGS       = -lz -lm -lrt
+---
+> CFLAGS        = -m64 -O3 -std=c99 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t -DINTSIZE64 -Dintptr_t="long int" -DCOMMON_TIMING_OLD -DMATLAB -fPIC -I/usr/local/pkgs/matlab-7.6/extern/include
+> LDFLAGS       = -lz -lm -lrt -L/usr/local/pkgs/matlab-7.6/bin/glnxa64 -lmat -lmex
+
+8/19/09:
+
+- still having problems with intptr_t:
+gcc: int: No such file or directory
+In file included from ../libscotch/common.h:81,
+                 from gmap_mex.c:75:
+/usr/include/unistd.h:238: error: two or more data types in declaration specifiers
+- removed -DINTSIZE64 and -Dintptr_t="long int" from CFLAGS above
+[jschierm@astrid libscotch]$ diff common_old.h common.h
+68a69
+> #include            <stdint.h>                    /* added for intptr_t */
+
+8/20/09:
+
+- must fix exits to exit within Matlab:
+[jschierm@astrid libscotch]$ diff common_old.h common.h
+68a69
+> #include            <stdint.h>                    /* added for intptr_t */
+90a92,104
+> #ifdef MATLAB
+>     #include "mat.h"
+>     #include "mex.h"
+>     #include "matrix.h"
+> 
+>     #define printf mexPrintf
+>     #define malloc mxMalloc
+>     #define calloc mxCalloc
+>     #define realloc mxRealloc
+>     #define free mxFree
+>     #define exit(status) mexErrMsgTxt("exit=" #status)
+> #endif
+> 
+
+- however, dummysizes must run by itself during compilation and exit cleanly:
+[jschierm@astrid libscotch]$ diff dummysizes_old.c dummysizes.c
+269a270
+> #ifndef MATLAB
+270a272
+> #endif /* MATLAB */
+
+- redirect errorPrint and errorPrintW to within Matlab:
+[jschierm@astrid libscotch]$ diff library_error_exit_old.c
+library_error_exit.c
+116a117
+> #ifndef MATLAB
+133a135,152
+> #else /* MATLAB */
+>   mexPrintf  ("%s", _SCOTCHerrorProgName);
+> #ifdef SCOTCH_PTSCOTCH
+>   if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) &&
+>       (proclocnum != 0)                              &&
+>       (MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum) == MPI_SUCCESS))
+>     mexPrintf ("(%d): ", proclocnum);
+> #else /* SCOTCH_PTSCOTCH */
+>   if (_SCOTCHerrorProgName[0] != '\0')
+>     mexPrintf  (": ");
+> #endif /* SCOTCH_PTSCOTCH */
+>   mexPrintf  ("ERROR: ");
+>   va_start (errlist, errstr);
+>   mexPrintf (errstr, errlist);             /* Print arguments */
+>   va_end   (errlist);
+>   mexPrintf  ("\n");
+> #endif /* MATLAB */
+> 
+157a177
+> #ifndef MATLAB
+173a194,211
+> 
+> #else /* MATLAB */
+>   mexPrintf  ("%s", _SCOTCHerrorProgName);
+> #ifdef SCOTCH_PTSCOTCH
+>   if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) &&
+>       (proclocnum != 0)                              &&
+>       (MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum) == MPI_SUCCESS))
+>     mexPrintf ("(%d): ", proclocnum);
+> #else /* SCOTCH_PTSCOTCH */
+>   if (_SCOTCHerrorProgName[0] != '\0')
+>     mexPrintf  (": ");
+> #endif /* SCOTCH_PTSCOTCH */
+>   mexPrintf  ("WARNING: ");
+>   va_start (errlist, errstr);
+>   mexPrintf (errstr, errlist);             /* Print arguments */
+>   va_end   (errlist);
+>   mexPrintf  ("\n");
+> #endif /* MATLAB */
+
+- redirect usagePrint to within Matlab:
+[jschierm@astrid libscotch]$ diff common_old.c common.c  
+102a103
+> #ifndef MATLAB
+105a107,111
+> #else /* MATLAB */
+>   mexPrintf ("Usage is:\n");
+>   for (cptr = data; *cptr != NULL; cptr ++)
+>     mexPrintf ("  %s\n", *cptr);
+> #endif /* MATLAB */
+
+8/21/09:
+
+- removed -DCOMMON_PTHREAD from CFLAGS and MFLAGS to eliminate fatal exception at pthread_exit in gmap_mex.c
+- removed -DCOMMON_FILE_COMPRESS_GZ from CFLAGS and MFLAGS because unused
+
+8/25/09:
+
+added macro for fprintf to capture missing output:
+[jschierm@astrid libscotch]$ diff common_old.h common.h
+68a69
+> #include            <stdint.h>                    /* added for intptr_t */
+90a92,105
+> #ifdef MATLAB
+>     #include "mat.h"
+>     #include "mex.h"
+>     #include "matrix.h"
+> 
+>     #define printf mexPrintf
+>     #define fprintf(file,...) (file == stdout || file == stderr ? mexPrintf(__VA_ARGS__) : fprintf(file,__VA_ARGS__))
+>     #define malloc mxMalloc
+>     #define calloc mxCalloc
+>     #define realloc mxRealloc
+>     #define free mxFree
+>     #define exit(status) mexErrMsgTxt("exit=" #status)
+> #endif
+> 
+
+11/12/09:
+
+- added -Wl,-rpath-link,/usr/local/pkgs/matlab-7.6/bin/glnxa64 to LDFLAGS to eliminate missing libhdf5.so.0 in Matlab directories (based on Cielo make, but why did this not occur before?)
+
+11/18/09:
+
+- changed the following files to allow adjir,adjjc,vertlab,vertwgt,edgewgt rather than graph file
+
+libscotch/library.h
+- argument list for SCOTCH_graphLoad
+libscotch/library_graph.c
+- SCOTCH_graphLoad changes and call to graphLoad
+libscotch/graph.h
+- argument list for graphLoad
+libscotch/graph_io.c
+- graphLoad changes
+libscotch/graph_io_scot.c
+- miscellaneous call to graphLoad
+libscotch/mesh_io_scot.c
+- miscellaneous call to graphLoad
+libscotch/library_graph_f.c
+- miscellaneous call to SCOTCH_graphLoad
+scotch/gmap_mex.c
+- input/processing of Matlab arguments and call to SCOTCH_graphLoad
+
+11/30/09:
+
+- changed the following files to allow nvert,maptab rather than map file
+
+libscotch/library.h
+- argument list for SCOTCH_graphMapSave
+libscotch/library_graph_map.c
+- SCOTCH_graphMapSave changes and call to mapSave
+libscotch/mapping.h
+- argument list for mapSave
+libscotch/mapping_io.c
+- mapSave changes
+libscotch/library_graph_map_f.c
+- miscellaneous call to SCOTCH_graphMapSave
+scotch/gmap_mex.c
+- call to SCOTCH_graphMapSave and processing/output of Matlab arguments
+
+12/08/09:
+
+- changed the following files to allow archtyp,napar,archpar rather than target file
+
+libscotch/library.h
+- argument list for SCOTCH_archLoad
+libscotch/library_arch.c
+- SCOTCH_archLoad changes and call to archLoad
+libscotch/arch.h
+- argument list for archLoad
+libscotch/arch.c
+- archLoad changes and call to class->archLoad
+libscotch/arch_cmplt.h
+libscotch/arch_cmpltw.h
+libscotch/arch_deco.h
+libscotch/arch_hcub.h
+libscotch/arch_mesh.h
+libscotch/arch_tleaf.h
+libscotch/arch_torus.h
+- argument lists for arch*ArchLoad
+libscotch/arch_cmplt.c
+libscotch/arch_cmpltw.c
+libscotch/arch_deco.c
+libscotch/arch_hcub.c
+libscotch/arch_mesh.c
+libscotch/arch_tleaf.c
+libscotch/arch_torus.c
+- arch*ArchLoad changes
+libscotch/library_arch_f.c
+- miscellaneous call to SCOTCH_archLoad
+scotch/gmap_mex.c
+- input/processing of Matlab arguments and call to SCOTCH_archLoad
+
+12/11/09:
+
+- fixed a couple bugs
+
+libscotch/graph.c -- caused crash when trying to free vertex labels
+138c138,141
+<     if (grafptr->vlbltax != NULL)
+---
+> /*  vlbltax must also check GRAPHVERTGROUP (jes, 12/11/09)  */
+> //    if (grafptr->vlbltax != NULL)
+>     if ((grafptr->vlbltax != NULL) &&
+>         ((grafptr->flagval & GRAPHVERTGROUP) == 0))
+
+libscotch/mapping_io.c -- caused first vertex label to be uninitialized
+> /*  not sure why, but need to offset vlbltax in other direction (jes, 12/11/09
+> //                 (long) ((vlbltax != NULL) ? vlbltax[vertnum] : vertnum),
+>                  (long) ((vlbltax != NULL) ? vlbltax[vertnum+mappptr->baseva
+
+1/05/10:
+
+libscotch/graph_io.c -- if vertex labels are supplied, they must be referenced
+263c265,268
+<       edgeval=adjir[edgenum-grafptr->baseval]+1;
+---
+>       if (vertlab)
+>         edgeval=vertlab[adjir[edgenum-grafptr->baseval]  ];
+>       else
+>         edgeval=        adjir[edgenum-grafptr->baseval]+1;
+
+2/08/10:
+
+- modified all source code changes to use the MATLAB compiler conditional, so that both mex and stand-alone modules could be built simultaneously
+
+2/10/10:
+
+- added mexscotch target to makefiles to separate mex from stand-alone modules
+- removed Matlab-specific switches from CFLAGS and LDFLAGS and added them to mexscotch target
+
+3/03/10:
+
+- separated dummysizes within mexscotch target in libscotch/Makefile so that it is built without the matlab flag, includes, and libraries (matlab 7.8 would fail even though matlab 7.6 was okay).
+
+4/26/10:
+
+- separated gmap_mex.c driver into gmap_mex.c matlab-layer (independent of scotch) and gmapx.c x-layer (independent of matlab).
+
+4/29/10:
+
+- made changes to gmapx.c, parser_yy.y/stratParserParse, and parser_ll.l/stratParserInit to reset static variables from previous runs.
+- inserted print statements into common_integer.c/intRand*, common_memory.c/mem*, and vgraph_separate_vw.c/vgraphSeparateVw to monitor static variables in case those have to be reset.
+
+5/03/10:
+
+- implemented gpart functionality in gmap_mex.c, gmapx.c, and new gpart.m.
+- implemented common_integer.c/intRandResetStatic to reset static variables from previous runs.
+
+6/16/10:
+
+- renamed scotch x-layer and separated it from rest of build.
+- set up scotch to build both stand-alone and mex libraries.
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/shapelib/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/shapelib/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/shapelib/install.sh	(revision 21239)
@@ -0,0 +1,56 @@
+#!/bin/bash
+set -eu
+
+# Some cleanup
+rm -rf shapelib-1.2.10
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/shapelib-1.2.10.tar.gz' 'shapelib-1.2.10.tar.gz'
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/shape_eg_data.zip'  'shape_eg_data.zip'
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/docs/shapefile.pdf' 'shapefile.pdf'
+
+# Untar 
+tar -xvzf shapelib-1.2.10.tar.gz
+unzip shape_eg_data.zip -d shapelib-1.2.10/eg_data
+
+# Move shapelib to src directory
+mv shapelib-1.2.10/* src
+rm -rf shapelib-1.2.10
+
+# Apply patches (all at once)
+# (written by diff -rc old_src new_src > shapelib.patch)
+patch -p0 < shapelib.patch
+
+# Build shapelib and run self-tests
+cd src
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make test
+
+# Clean up objects (but not library or executable)
+#make clean
+cd ..
+
+# Populate install directory
+cp -p src/README install
+cp -p src/*.html install
+mkdir install/include
+cp -p src/shapefil.h install/include
+mkdir install/lib
+mv src/libshape.a install/lib/libshape.a
+mkdir install/exec
+mv src/shpcreate install/exec
+mv src/shpadd install/exec
+mv src/shpdump install/exec
+mv src/shprewind install/exec
+mv src/dbfcreate install/exec
+mv src/dbfadd install/exec
+mv src/dbfdump install/exec
+mv src/shputils install/exec
+mv src/shptest install/exec
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/shapelib/shapelib.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/shapelib/shapelib.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/shapelib/shapelib.patch	(revision 21239)
@@ -0,0 +1,139 @@
+diff -rc src/Makefile src_new/Makefile
+*** src/Makefile	2003-04-07 06:03:22.000000000 -0700
+--- src_new/Makefile	2011-10-19 11:58:13.993411828 -0700
+***************
+*** 1,20 ****
+  
+  #LINKOPT	=	/usr/local/lib/libdbmalloc.a
+! CFLAGS	=	-g
+  
+  default:	all
+  
+! all:	shpcreate shpadd shpdump shprewind dbfcreate dbfadd dbfdump shptest
+  
+  shpopen.o:	shpopen.c shapefil.h
+  	$(CC) $(CFLAGS) -c shpopen.c
+  
+- shptree.o:	shptree.c shapefil.h
+- 	$(CC) $(CFLAGS) -c shptree.c
+- 
+  dbfopen.o:	dbfopen.c shapefil.h
+  	$(CC) $(CFLAGS) -c dbfopen.c
+  
+  shpcreate:	shpcreate.c shpopen.o
+  	$(CC) $(CFLAGS) shpcreate.c shpopen.o $(LINKOPT) -o shpcreate
+  
+--- 1,24 ----
+  
+  #LINKOPT	=	/usr/local/lib/libdbmalloc.a
+! CC =		gcc
+! #CFLAGS	=	-g
+! CFLAGS	=	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -g
+! AR =		/usr/bin/ar rcv
+! RANLIB =	/usr/bin/ranlib
+  
+  default:	all
+  
+! all:	libshape.a shpcreate shpadd shpdump shprewind dbfcreate dbfadd dbfdump shputils shptest
+  
+  shpopen.o:	shpopen.c shapefil.h
+  	$(CC) $(CFLAGS) -c shpopen.c
+  
+  dbfopen.o:	dbfopen.c shapefil.h
+  	$(CC) $(CFLAGS) -c dbfopen.c
+  
++ libshape.a:    shpopen.o dbfopen.o
++ 	${AR} libshape.a shpopen.o dbfopen.o ; ${RANLIB} libshape.a
++ 
+  shpcreate:	shpcreate.c shpopen.o
+  	$(CC) $(CFLAGS) shpcreate.c shpopen.o $(LINKOPT) -o shpcreate
+  
+***************
+*** 36,58 ****
+  dbfdump:	dbfdump.c dbfopen.o
+  	$(CC) $(CFLAGS) dbfdump.c dbfopen.o $(LINKOPT) -o dbfdump
+  
+  shptest:	shptest.c shpopen.o
+  	$(CC) $(CFLAGS) shptest.c shpopen.o $(LINKOPT) -o shptest
+  
+! shputils:	shputils.c shpopen.o dbfopen.o
+! 	$(CC) $(CFLAGS) shputils.c shpopen.o dbfopen.o $(LINKOPT) -o shputils
+  
+  shptreedump:	shptreedump.c shptree.o shpopen.o
+  	$(CC) $(CFLAGS) shptreedump.c shptree.o shpopen.o $(LINKOPT) \
+  		-o shptreedump
+  
+  clean:
+! 	rm -f *.o dbfdump dbfcreate dbfadd shpdump shpcreate shpadd shputils
+  	rm -f shptreedump
+  	rm -rf *.lo *.la .libs
+- 	rm -f shptest
+  
+! test:	test2 test3
+  
+  #
+  #	Note this stream only works if example data is accessable.
+--- 40,64 ----
+  dbfdump:	dbfdump.c dbfopen.o
+  	$(CC) $(CFLAGS) dbfdump.c dbfopen.o $(LINKOPT) -o dbfdump
+  
++ shputils:	shputils.c shpopen.o dbfopen.o
++ 	$(CC) $(CFLAGS) shputils.c shpopen.o dbfopen.o $(LINKOPT) -o shputils
++ 
+  shptest:	shptest.c shpopen.o
+  	$(CC) $(CFLAGS) shptest.c shpopen.o $(LINKOPT) -o shptest
+  
+! shptree.o:	shptree.c shapefil.h
+! 	$(CC) $(CFLAGS) -c shptree.c
+  
+  shptreedump:	shptreedump.c shptree.o shpopen.o
+  	$(CC) $(CFLAGS) shptreedump.c shptree.o shpopen.o $(LINKOPT) \
+  		-o shptreedump
+  
+  clean:
+! 	rm -f *.o *.a shpcreate shpadd shpdump shprewind dbfcreate dbfadd dbfdump shputils shptest
+  	rm -f shptreedump
+  	rm -rf *.lo *.la .libs
+  
+! test:	test1 test2 test3
+  
+  #
+  #	Note this stream only works if example data is accessable.
+diff -rc src/shputils.c src_new/shputils.c
+*** src/shputils.c	2003-04-07 06:03:22.000000000 -0700
+--- src_new/shputils.c	2011-10-14 14:52:32.179022813 -0700
+***************
+*** 274,280 ****
+                  if (factor == 0)
+                  {
+                    if (infactor ==0)
+!                   { puts("ERROR: Input unit must be defined before output unit"); exit(); }
+                    factor=infactor/outfactor;
+                  }
+                  printf("Output file coordinate values will be factored by %lg\n",factor);
+--- 274,280 ----
+                  if (factor == 0)
+                  {
+                    if (infactor ==0)
+!                   { puts("ERROR: Input unit must be defined before output unit"); exit( 1 ); }
+                    factor=infactor/outfactor;
+                  }
+                  printf("Output file coordinate values will be factored by %lg\n",factor);
+diff -rc src/stream1.sh src_new/stream1.sh
+*** src/stream1.sh	2003-04-07 06:03:22.000000000 -0700
+--- src_new/stream1.sh	2011-10-19 11:45:08.192964291 -0700
+***************
+*** 1,6 ****
+  #!/bin/sh
+  	
+! EG_DATA=/u/www/projects/shapelib/eg_data
+  
+  echo -------------------------------------------------------------------------
+  echo Test 1: dump anno.shp
+--- 1,6 ----
+  #!/bin/sh
+  	
+! EG_DATA=./eg_data
+  
+  echo -------------------------------------------------------------------------
+  echo Test 1: dump anno.shp
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/shell2junit/README
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/shell2junit/README	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/shell2junit/README	(revision 21239)
@@ -0,0 +1,9 @@
+http://code.google.com/p/shell2junit/
+
+Shell2junit
+
+Shell2junit is a simple utility which facilitates to generate junit reports for batch processes executed in shell scripts. 
+
+The reports can be easily parsed in Hudson and other CI software in order to monitor and generate trends and alerts. 
+
+This page teaches how to do it in Hudson. 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/shell2junit/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/shell2junit/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/shell2junit/install.sh	(revision 21239)
@@ -0,0 +1,9 @@
+#!/bin/bash
+set -eu
+
+
+#Some cleanup
+rm -rf install 
+mkdir install 
+
+cp patch/sh2ju.sh install/
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/shell2junit/install.sh.old
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/shell2junit/install.sh.old	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/shell2junit/install.sh.old	(revision 21239)
@@ -0,0 +1,20 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+rm -rf shell2junit
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/shell2junit-1.0.0.zip' 'shell2junit-1.0.0.zip'
+
+#Untar 
+unzip shell2junit-1.0.0.zip
+
+#Move shell2junit into install directory
+mv shell2junit/* src
+rm -rf shell2junit
+
+#Copy executable: 
+cp src/sh2ju.sh install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/shell2junit/patch/sh2ju.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/shell2junit/patch/sh2ju.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/shell2junit/patch/sh2ju.sh	(revision 21239)
@@ -0,0 +1,131 @@
+#!/bin/sh
+### Copyright 2010 Manuel Carrasco Moñino. (manolo at apache.org) 
+###
+### Licensed under the Apache License, Version 2.0.
+### You may obtain a copy of it at
+### http://www.apache.org/licenses/LICENSE-2.0
+
+###
+### A library for shell scripts which creates reports in jUnit format.
+### These reports can be used in Hudson, or any other CI.
+###
+### Usage: 
+###     - Include this file in your shell script
+###     - Use juLog to call your command any time you want to produce a new report
+###        Usage:   juLog <options> command arguments
+###           options:
+###             -name="TestName" : the test name which will be shown in the junit report
+###             -error="RegExp"  : a regexp which sets the test as failure when the output matches it
+###             -ierror="RegExp" : same as -error but case insensitive
+###     - Junit reports are left in the folder 'result' under the directory where the script is executed.
+###     - Configure hudson to parse junit files from the generated folder
+###
+
+asserts=00; errors=0; total=0; content=""
+
+# create output folder
+juDIR=`pwd`/results
+mkdir -p $juDIR || exit
+
+# The name of the suite is calculated based in your script name
+suite=`basename $0 | sed -e 's/.sh$//' | tr "." "_"`
+
+# A wrapper for the eval method witch allows catching seg-faults and use tee
+errfile=/tmp/evErr.$$.log
+eVal() {
+  eval "$1"
+  echo $? | tr -d "\n" >$errfile
+}
+
+# Method to clean old tests
+juLogClean() {
+  echo "+++ Removing old junit reports from: $juDIR "
+  rm -f $juDIR/TEST-*	
+}
+
+# Execute a command and record its results 
+juLog() {
+  
+  # parse arguments
+  ya=""; icase=""; testname="";
+  while [ -z "$ya" ]; do  
+    case "$1" in
+  	  -name=*)   name=$asserts-`echo "$1" | sed -e 's/-name=//'`;   shift;;
+      -ierror=*) ereg=`echo "$1" | sed -e 's/-ierror=//'`; icase="-i"; shift;;
+      -error=*)  ereg=`echo "$1" | sed -e 's/-error=//'`;  shift;;
+      -test=*)  testname=`echo "$1" | sed -e 's/-test=//'`;  shift;;
+      *)         ya=1;;
+    esac
+  done  
+
+  # use first arg as name if it was not given 
+  if [ -z "$name" ]; then
+    name="$asserts-$1" 
+    shift
+  fi
+
+  # calculate command to eval
+  [ -z "$1" ] && return
+  cmd="$1"; shift
+  while [ -n "$1" ]
+  do
+     cmd="$cmd \"$1\""
+     shift
+  done
+
+  # eval the command sending output to a file
+  outf=/var/tmp/ju$$.txt
+  >$outf
+  echo ""                         | tee -a $outf
+  echo "+++ Running case: $testname " | tee -a $outf
+  echo "+++ working dir: "`pwd`           | tee -a $outf
+  #echo "+++ command: $cmd"            | tee -a $outf
+  ini=`date +%s`
+  eVal "$cmd" 2>&1                | tee -a $outf
+  evErr=`cat $errfile`
+  rm -f $errfile
+  end=`date +%s`
+  echo "+++ exit code: $evErr"        | tee -a $outf
+  
+  # set the appropriate error, based in the exit code and the regex  
+  [ $evErr != 0 ] && err=1 || err=0
+  out=`cat $outf | sed -e 's/^\([^+]\)/| \1/g'`
+  if [ $err = 0 -a -n "$ereg" ]; then
+      H=`echo "$out" | egrep $icase "$ereg"`
+      [ -n "$H" ] && err=1
+  fi
+  echo "+++ error: $err"         | tee -a $outf
+  rm -f $outf
+
+  # calculate vars
+  asserts=`expr $asserts + 1`
+  asserts=`printf "%.2d" $asserts`
+  errors=`expr $errors + $err`
+  time=`expr $end - $ini`
+  total=`expr $total + $time`
+
+  # write the junit xml report
+  ## failure tag
+  [ $err = 0 ] && failure="" || failure="
+      <failure type=\"ScriptError\" message=\"Script Error\"></failure>
+  "
+  ## testcase tag
+  content="$content
+    <testcase assertions=\"1\" name=\"$testname $ereg\" time=\"$time\">
+    $failure
+    <system-out>
+<![CDATA[
+$out
+]]>
+    </system-out>
+    </testcase>
+  "
+  ## testsuite block
+  cat <<EOF >$juDIR/TEST-$suite.xml
+  <testsuite failures="0" assertions="$assertions" name="ISSM Test Suite" tests="1" errors="$errors" time="$total">
+    $content
+  </testsuite>
+EOF
+
+}
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/snowpack/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/snowpack/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/snowpack/install.sh	(revision 21239)
@@ -0,0 +1,56 @@
+#!/bin/bash
+#SNOWPACK install package:  this package is not distributed by ISSM. Please request access to the code by 
+#contacting Mathias Bavay () or logging onto http://models.slf.ch/ and registering.  Once you have a tarball 
+#of the code, please use this script to install.
+
+#we assume you have a Snowpack-*-src.tar.gz  tarball
+set -eu
+
+#Do some inquiry about the names of the tar balls: 
+source_tar=`ls Snowpack-*-src.tar.gz`
+source_version=`echo $source_tar | sed 's/Snowpack-//g' | sed 's/-src.tar.gz//g'`
+
+if [[ $source_tar == "" ]]; then 
+	echo "Could not identify a tar ball for the source code, name should be Snowpack-*-src.tar.gz"
+	exit 1
+fi
+if [[ $source_version == "" ]]; then 
+	echo "Could not identify a tar ball version for the source code"
+	exit 1
+fi
+
+#Some cleanup
+rm -rf src install Snowpack-$source_version
+
+#First deal with source code 
+tar -zxvf  $source_tar
+mv Snowpack-$source_version/usr src
+rm -rf Snowpack-$source_version
+
+#Build library
+cd src && rm -rf CMakeCache.txt 
+cmake -DCMAKE_INSTALL_PREFIX:PATH=$ISSM_DIR/externalpackages/snowpack/install \
+	-DMETEOIO_INCLUDE_DIR:PATH=$ISSM_DIR/externalpackages/meteoio/install/include \
+	-DMETEOIO_LIBRARY:PATH=$ISSM_DIR/externalpackages/meteoio/install/lib/libmeteoio.dylib\
+	.
+	#-DCMAKE_VERBOSE_MAKEFILE=true \
+
+#Compile
+if [ $# -eq 0 ]; then
+	make  all install
+else
+	make -j $1  all install
+fi
+
+#Build binary: 
+cd applications/snowpack
+cmake -DCMAKE_MODULE_PATH:PATH=/Users/larour/issm-uci/trunk-jpl/externalpackages/snowpack/src/tools/cmake/      -DMETEOIO_INCLUDE_DIR:PATH=$ISSM_DIR/externalpackages/meteoio/install/include  .
+
+#Compile
+if [ $# -eq 0 ]; then
+	make  all install
+else
+	make -j $1  all install
+fi
+
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/sqlite/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/sqlite/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/sqlite/install.sh	(revision 21239)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf sqlite-autoconf-3071300
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/sqlite-autoconf-3071300.tar.gz' 'sqlite-autoconf-3071300.tar.gz'
+
+#Untar 
+tar -zxvf  sqlite-autoconf-3071300.tar.gz
+
+#Move sqlite-autoconf into src directory
+mv sqlite-autoconf-3071300/* src
+rm -rf sqlite-autoconf-3071300
+
+#Configure sqlite-autoconf
+cd src
+./configure  --prefix="$ISSM_DIR/externalpackages/sqlite/install" 
+
+#Compile and install sqlite-autoconf
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/starcluster/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/starcluster/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/starcluster/install.sh	(revision 21239)
@@ -0,0 +1,7 @@
+#/bin/bash
+
+git clone git://github.com/jtriley/StarCluster.git
+
+cd StarCluster
+python distribute_setup.py
+python setup.py install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/svn/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/svn/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/svn/install.sh	(revision 21239)
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf subversion-1.6.18
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/subversion-1.6.18.tar.gz' 'subversion-1.6.18.tar.gz'
+
+#Untar 
+tar -zxvf  subversion-1.6.18.tar.gz
+
+#Move subversion into src directory
+mv subversion-1.6.18/* src
+rm -rf subversion-1.6.18
+
+#Configure subversion
+cd src
+./configure --prefix="$ISSM_DIR/externalpackages/svn/install" \
+	--with-swig="$ISSM_DIR/externalpackages/swig/install"  \
+	PYTHON2="$ISSM_DIR/externalpackages/python/install/bin/python" \
+	--with-sqlite="$ISSM_DIR/externalpackages/sqlite/install"
+
+#Compile and install subversion
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/swig/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/swig/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/swig/install.sh	(revision 21239)
@@ -0,0 +1,37 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+rm -rf swig-2.0.4
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/swig-2.0.4.tar.gz' 'swig-2.0.4.tar.gz'
+
+#Untar and move python into install directory
+tar -zxvf  swig-2.0.4.tar.gz
+mv swig-2.0.4/* install
+rm -rf swig-2.0.4
+
+#Copy pcre prototype in include directory
+cd install 
+#cp $ISSM_DIR/externalpackages/pcre/install/pcre.h  ./Source/Include/
+#cp $ISSM_DIR/externalpackages/pcre/install/.libs/*  ./Source/Include/
+export CFLAGS="-I$ISSM_DIR/externalpackages/pcre/install"
+export LDFLAGS="-L$ISSM_DIR/externalpackages/pcre/install/.libs/"
+export LIBS="-lpcre"
+#Configure swig
+./configure \
+ --prefix="$ISSM_DIR/externalpackages/swig/install" \
+ --with-pcre-prefix="$ISSM_DIR/externalpackages/pcre/install" \
+ --with-pcre-exec-prefix="$ISSM_DIR/externalpackages/pcre/install" \
+ --with-python="$ISSM_DIR/externalpackages/python/install/bin/python"
+
+#Compile and install gdal
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/tcl/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/tcl/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/tcl/install.sh	(revision 21239)
@@ -0,0 +1,49 @@
+#!/bin/bash
+set -eu
+
+sudochoice=0;
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf tcl8.5.11
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/tcl8.5.11.tar.gz' 'tcl8.5.11.tar.gz'
+
+#Untar 
+tar -zxvf  tcl8.5.11.tar.gz
+
+#Move tcl into src directory
+mv tcl8.5.11/* src
+rm -rf tcl8.5.11
+
+#Configure tcl
+ver="8.4.12"
+
+cd src/unix
+
+#User mode: 
+if [[ $sudochoice == "0" ]]; 
+then 
+	./configure --prefix=$ISSM_DIR/externalpackages/tcl/install
+	if [ $# -eq 0 ]; then
+		make
+	else
+		make -j $1
+	fi
+	make install 
+fi
+
+#sudo mode: 
+if [[ $sudochoice == "1" ]]; 
+then
+	sudo ./configure 
+	if [ $# -eq 0 ]; then
+		sudo make
+	else
+		sudo make -j $1
+	fi
+	sudo make install 
+fi
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/tclx/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/tclx/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/tclx/install.sh	(revision 21239)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf tclx8.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/tclx8.4.tar.gz' 'tclx8.4.tar.gz'
+
+#Untar 
+tar -zxvf  tclx8.4.tar.gz
+
+#Move tclx into src directory
+mv tclx8.4/* src
+rm -rf tclx8.4
+
+#Configure tclx
+cd src
+./configure --prefix="$ISSM_DIR/externalpackages/tclx/install"  \
+			--exec-prefix="$ISSM_DIR/externalpackages/tclx/install"  \
+	        --with-tcl=$ISSM_DIR/externalpackages/tcl/install/Library/Frameworks/Tcl.framework
+
+#Compile and install tclx
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/tex2im/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/tex2im/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/tex2im/install.sh	(revision 21239)
@@ -0,0 +1,16 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/tex2im-1.8.tar.gz' 'tex2im-1.8.tar.gz'
+
+#Untar 
+tar -zxvf  tex2im-1.8.tar.gz
+
+#Move tex2im into src directory
+mv tex2im-1.8/tex2im install/
+rm -rf tex2im-1.8
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/tk/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/tk/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/tk/install.sh	(revision 21239)
@@ -0,0 +1,46 @@
+#!/bin/bash
+set -eu
+
+sudochoice=0;
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf tk8.5.12
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/tk8.5.12-src.tar.gz' 'tk8.5.12.tar.gz'
+
+#Untar 
+tar -zxvf  tk8.5.12.tar.gz
+
+#Move tk into src directory
+mv tk8.5.12/* src
+rm -rf tk8.5.12
+
+cd src/unix
+
+#User mode: 
+if [[ $sudochoice == "0" ]]; 
+then 
+	./configure --prefix=$ISSM_DIR/externalpackages/tk/install
+	if [ $# -eq 0 ]; then
+		make
+	else
+		make -j $1
+	fi
+	make install 
+fi
+
+#sudo mode: 
+if [[ $sudochoice == "1" ]]; 
+then
+	sudo ./configure 
+	if [ $# -eq 0 ]; then
+		sudo make
+	else
+		sudo make -j $1
+	fi
+	sudo make install 
+fi
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/altix64/configure.make
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/altix64/configure.make	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/altix64/configure.make	(revision 21239)
@@ -0,0 +1,4 @@
+CC=gcc
+CSWITCHES = $(CFLAGS) -DNO_TIMER -DLINUX -fPIC
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/android/configure.make
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/android/configure.make	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/android/configure.make	(revision 21239)
@@ -0,0 +1,18 @@
+# This makefile configures build process to cross-compile to the android platform.
+# The binary tools referenced below are specifically configured to target armeabi-v7a.
+# Furthermore, the compilers (which are simply wrappers around GNU GCC) are set to
+# produce binaries that are EABI compliant.
+#
+# Note that the AAPCS standard defines 'EABI' as a moniker used to specify
+# a _family_ of similar but distinct ABIs. Android follows the little-endian
+# ARM GNU/Linux ABI as documented in the following document:
+#
+# http://www.codesourcery.com/gnu_toolchains/arm/arm_gnu_linux_abi.pdf
+
+CC=${host_triplet}-gcc
+AR=${host_triplet}-ar
+RANLIB=${host_triplet}-ranlib
+CSWITCHES = $(CFLAGS) -DNO_TIMER 
+TRILIBDEFS = -DTRILIBRARY
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/ios/configure.make
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/ios/configure.make	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/ios/configure.make	(revision 21239)
@@ -0,0 +1,7 @@
+CC=${host_triplet}-clang
+AR=${host-triplet}-ar
+RANLIB=${host-triplet}-ranlib
+CSWITCHES = $(CFLAGS) -DNO_TIMER
+TRILIBDEFS = -DTRILIBRARY
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/javascript/configure.make
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/javascript/configure.make	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/javascript/configure.make	(revision 21239)
@@ -0,0 +1,5 @@
+CXX=em++
+CXXSWITCHES = $(CFLAGS) -DNO_TIMER -fPIC -DANSI_DECLARATORS -DTRILIBRARY 
+TRILIBDEFS = -DTRILIBRARY -DANSI_DECLARATORS
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/javascript/makefile
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/javascript/makefile	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/javascript/makefile	(revision 21239)
@@ -0,0 +1,32 @@
+#Adaptation of Triangle makefile to compile only the triangle.c file, 
+#into a standalone library that can then be used to compile mex modules
+
+include ./configure.make
+
+ifeq "$(origin CC)" "undefined"
+	CC = cc
+endif
+
+ifeq "$(origin AR)" "undefined"
+	AR = ar
+endif
+
+ifeq "$(origin RANLIB)" "undefined"
+	RANLIB = ranlib
+endif
+
+TRILIBDEFS = -DTRILIBRARY
+
+all: triangle.$(LIB_EXT)
+
+OBJECTS=triangle.$(OBJ_EXT)
+
+triangle.$(LIB_EXT): $(OBJECTS)
+	$(AR) cr  triangle.$(LIB_EXT) $(OBJECTS)
+	$(RANLIB) triangle.$(LIB_EXT)
+
+triangle.$(OBJ_EXT): triangle.c triangle.h
+	$(CXX) $(CXXSWITCHES) $(TRILIBDEFS) -c triangle.c
+
+clean: 
+	rm -rf *.$(LIB_EXT) *.$(OBJ_EXT) *.LIB *.LST *.$(OBJ_EXT)bj *.BAK
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/libtool/Makefile.am
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/libtool/Makefile.am	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/libtool/Makefile.am	(revision 21239)
@@ -0,0 +1,4 @@
+EXTRA_DIST = m4
+SUBDIRS = src
+
+ACLOCAL_AMFLAGS = -I m4
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/libtool/configure.ac
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/libtool/configure.ac	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/libtool/configure.ac	(revision 21239)
@@ -0,0 +1,53 @@
+# Process this file with autoconf to produce a configure script.
+
+#AUTOCONF
+AC_INIT([Triangle],[1.0]) #Initializing configure
+AC_CONFIG_AUX_DIR([./aux-config])         #Put config files in aux-config
+AC_CONFIG_MACRO_DIR([m4])                 #m4 macros are located in m4
+AC_CANONICAL_TARGET                       #Determine the system type
+AC_CANONICAL_HOST                      #Determine the system type
+
+case ${host_os} in
+	*linux* )
+		CPP_LINUX='-DLINUX'
+		;;
+	*)
+		CPP_LINUX=''
+esac
+
+AC_SUBST(CPP_LINUX)
+
+AC_ARG_ENABLE([executables],                                                 dnl feature
+   AS_HELP_STRING([--enable-executables], [build executables]),              dnl help string
+   [enable_executables=$enableval],                                          dnl action if given
+   [enable_executables=yes])                                                 dnl action if not given
+AC_MSG_CHECKING(for executables)
+AM_CONDITIONAL([EXECUTABLES], [test x$enable_executables = xyes])
+AC_MSG_RESULT($enable_executables)
+
+#Compilers
+AC_PROG_CC([icc cccl cl icl gcc])
+AC_PROG_CPP
+AC_PROG_CXX([icpc cccl cl icl g++])
+
+#Libraries and linking
+AC_PATH_XTRA      #figure out X library and include paths
+
+#AUTOMAKE
+#Initialize automake and declare foreign so that we don't need a ChangeLog, INSTALL, etc
+AM_INIT_AUTOMAKE([foreign])
+AC_CONFIG_HEADERS([./config.h])   #Config file must be config.h
+AM_SILENT_RULES([yes])           #Do not show compilation command by default
+AM_PROG_AR
+
+#Libtool
+LT_INIT
+
+#List all Makefiles
+AC_CONFIG_FILES([
+					  Makefile
+					  src/Makefile
+					  ])
+
+#End of configure.ac
+AC_OUTPUT
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/libtool/src/Makefile.am
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/libtool/src/Makefile.am	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/libtool/src/Makefile.am	(revision 21239)
@@ -0,0 +1,22 @@
+ALLCXXFLAGS= -fPIC $(CXXFLAGS) $(CXXOPTFLAGS) 
+
+AM_CPPFLAGS =  -DNO_TIMER ${CPP_LINUX} -DTRILIBRARY
+
+lib_LTLIBRARIES = libtriangle.la
+
+if EXECUTABLES
+bin_PROGRAMS = tricall showme
+endif 
+
+include_HEADERS= ./triangle.h
+
+libtriangle_la_SOURCES = ./triangle.c
+libtriangle_la_LIBADD = -lm
+
+if EXECUTABLES
+tricall_SOURCES = ./tricall.c
+tricall_LDADD = ./libtriangle.la
+
+showme_SOURCES = ./showme.c
+showme_LDADD = -lX11
+endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/linux64/configure.make
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/linux64/configure.make	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/linux64/configure.make	(revision 21239)
@@ -0,0 +1,4 @@
+CC=gcc
+CSWITCHES = $(CFLAGS) -DNO_TIMER -DLINUX -fPIC
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/macosx32/configure.make
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/macosx32/configure.make	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/macosx32/configure.make	(revision 21239)
@@ -0,0 +1,5 @@
+CC=gcc -arch i386
+CSWITCHES = $(CFLAGS) -DNO_TIMER -fPIC 
+TRILIBDEFS = -DTRILIBRARY
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/macosx64/configure.make
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/macosx64/configure.make	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/macosx64/configure.make	(revision 21239)
@@ -0,0 +1,5 @@
+CC=gcc -arch x86_64
+CSWITCHES = $(CFLAGS) -DNO_TIMER -fPIC
+TRILIBDEFS = -DTRILIBRARY
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/macosx64_snowleopard/configure.make
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/macosx64_snowleopard/configure.make	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/macosx64_snowleopard/configure.make	(revision 21239)
@@ -0,0 +1,5 @@
+CC=gcc 
+CSWITCHES = $(CFLAGS) -DNO_TIMER -fPIC
+TRILIBDEFS = -DTRILIBRARY
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/pleiades/configure.make
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/pleiades/configure.make	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/pleiades/configure.make	(revision 21239)
@@ -0,0 +1,4 @@
+CC=gcc
+CSWITCHES = $(CFLAGS) -DNO_TIMER -DLINUX -fPIC
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/win32/configure.make
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/win32/configure.make	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/win32/configure.make	(revision 21239)
@@ -0,0 +1,4 @@
+CC=icl
+CSWITCHES = $(CFLAGS) -DNO_TIMER -DWIN32
+OBJ_EXT=obj
+LIB_EXT=a
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/win7/configure.make
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/win7/configure.make	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/win7/configure.make	(revision 21239)
@@ -0,0 +1,4 @@
+CC=cl
+CSWITCHES = $(CFLAGS) -DNO_TIMER 
+OBJ_EXT=obj
+LIB_EXT=lib
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/win7/makefile
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/win7/makefile	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/configs/win7/makefile	(revision 21239)
@@ -0,0 +1,21 @@
+#Adaptation of Triangle makefile to compile only the triangle.c file, 
+#into a standalone library that can then be used to compile mex modules
+
+include ./configure.make
+
+AR = ar
+
+TRILIBDEFS = -DTRILIBRARY
+
+all: triangle.$(LIB_EXT)
+
+OBJECTS=triangle.$(OBJ_EXT)
+
+triangle.$(LIB_EXT): $(OBJECTS)
+	lib -out:triangle.$(LIB_EXT) $(OBJECTS)
+
+triangle.$(OBJ_EXT): triangle.c triangle.h
+	$(CC) $(CSWITCHES) $(TRILIBDEFS) -c triangle.c
+
+clean: 
+	rm -rf *.$(LIB_EXT) *.$(OBJ_EXT) *.LIB *.LST *.$(OBJ_EXT)bj *.BAK
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-altix64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-altix64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-altix64.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#Untar 
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+
+#copy new makefile
+cp ../configs/altix64/configure.make ./
+cp ../makefile ./
+
+#Compile triangle
+make
+
+#Patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-android.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-android.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-android.sh	(revision 21239)
@@ -0,0 +1,26 @@
+#!/bin/bash
+set -eu
+
+source $ANDROID_DIR/android_aux.sh
+
+#Some cleanup 
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#Untar 
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+
+#copy new makefile
+cp ../configs/android/configure.make ./
+cp ../makefile ./
+
+#Compile triangle
+make
+
+#Patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-discover.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-discover.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-discover.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#Untar 
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+
+#copy new makefile
+cp ../configs/pleiades/configure.make ./
+cp ../makefile ./
+
+#Compile triangle
+make
+
+#Patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-iosarmv7.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-iosarmv7.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-iosarmv7.sh	(revision 21239)
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -eu
+
+host_triplet="armv7-apple-darwin14.0.0"
+
+#cleanup
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#untar
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+rm triangle.zip
+
+#copy new makefile
+cp ../configs/ios/configure.make ./
+cp ../makefile ./
+
+#compile triangle
+make
+
+#patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-iosarmv7s.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-iosarmv7s.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-iosarmv7s.sh	(revision 21239)
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -eu
+
+host_triplet="armv7s-apple-darwin14.0.0"
+
+#cleanup
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#untar
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+rm triangle.zip
+
+#copy new makefile
+cp ../configs/ios/configure.make ./
+cp ../makefile ./
+
+#compile triangle
+make
+
+#patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-iosi386.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-iosi386.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-iosi386.sh	(revision 21239)
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -eu
+
+host_triplet="i386-apple-darwin13.1.0"
+
+#cleanup
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#untar
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+rm triangle.zip
+
+#copy new makefile
+cp ../configs/ios/configure.make ./
+cp ../makefile ./
+
+#compile triangle
+make
+
+#patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-javascript.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-javascript.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-javascript.sh	(revision 21239)
@@ -0,0 +1,26 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install-javascript triangle
+mkdir install-javascript
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#Untar 
+cd install-javascript
+cp ../triangle.zip ./
+unzip triangle.zip
+
+#copy new makefile
+cp ../configs/javascript/configure.make ./
+cp ../configs/javascript/makefile ./
+
+#Patch triangle.h
+patch triangle.h ../triangle.h.patch.js
+
+#Compile triangle
+make
+
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-linux64.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#Untar 
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+
+#copy new makefile
+cp ../configs/linux64/configure.make ./
+cp ../makefile ./
+
+#Compile triangle
+make
+
+#Patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-macosx32.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-macosx32.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-macosx32.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#Untar 
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+
+#copy new makefile
+cp ../configs/macosx32/configure.make ./
+cp ../makefile ./
+
+#Compile triangle
+make
+
+#Patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-macosx64-snowleopard.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-macosx64-snowleopard.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-macosx64-snowleopard.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#Untar 
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+
+#copy new makefile
+cp ../configs/macosx64_snowleopard/configure.make ./
+cp ../makefile ./
+
+#Compile triangle
+make
+
+#Patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-macosx64.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#Untar 
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+
+#copy new makefile
+cp ../configs/macosx64/configure.make ./
+cp ../makefile ./
+
+#Compile triangle
+make
+
+#Patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-pleiades.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-pleiades.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-pleiades.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#Untar 
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+
+#copy new makefile
+cp ../configs/pleiades/configure.make ./
+cp ../makefile ./
+
+#Compile triangle
+make
+
+#Patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-win10.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-win10.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-win10.sh	(revision 21239)
@@ -0,0 +1,25 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#Untar 
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+
+#copy new makefile
+cp ../configs/win7/configure.make ./
+cp ../configs/win7/makefile ./
+
+#Compile triangle
+make
+
+#Patch triangle.h
+patch triangle.h ../triangle.h.patch
+cat triangle.h
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-win32.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-win32.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install-win32.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#Untar 
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+
+#copy new makefile
+cp ../configs/win32/configure.make ./
+cp ../makefile ./
+
+#Compile triangle
+make
+
+#Patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/install.sh	(revision 21239)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install src triangle
+mkdir install src ./src/m4
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#Untar 
+cd src
+mkdir src
+cp ../triangle.zip ./
+unzip triangle.zip
+
+rm ./makefile
+mv ./*.c ./src
+mv ./*.h ./src
+
+cp ./../configs/libtool/configure.ac ./
+cp ./../configs/libtool/Makefile.am ./
+cp ./../configs/libtool/src/Makefile.am ./src/
+
+autoreconf -ivf
+./configure --prefix="${HOME}/externalpackages/triangle/install" --disable-executables
+
+make 
+make install
+
+#Patch triangle.h
+patch ${HOME}/externalpackages/triangle/install/include/triangle.h ${HOME}/externalpackages/triangle/triangle.h.patch
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/makefile
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/makefile	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/makefile	(revision 21239)
@@ -0,0 +1,32 @@
+#Adaptation of Triangle makefile to compile only the triangle.c file, 
+#into a standalone library that can then be used to compile mex modules
+
+include ./configure.make
+
+ifeq "$(origin CC)" "undefined"
+	CC = cc
+endif
+
+ifeq "$(origin AR)" "undefined"
+	AR = ar
+endif
+
+ifeq "$(origin RANLIB)" "undefined"
+	RANLIB = ranlib
+endif
+
+TRILIBDEFS = -DTRILIBRARY
+
+all: triangle.$(LIB_EXT)
+
+OBJECTS=triangle.$(OBJ_EXT)
+
+triangle.$(LIB_EXT): $(OBJECTS)
+	$(AR) cr  triangle.$(LIB_EXT) $(OBJECTS)
+	$(RANLIB) triangle.$(LIB_EXT)
+
+triangle.$(OBJ_EXT): triangle.c triangle.h
+	$(CC) $(CSWITCHES) $(TRILIBDEFS) -c triangle.c
+
+clean: 
+	rm -rf *.$(LIB_EXT) *.$(OBJ_EXT) *.LIB *.LST *.$(OBJ_EXT)bj *.BAK
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/triangle.h.patch
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/triangle.h.patch	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/triangle.h.patch	(revision 21239)
@@ -0,0 +1,12 @@
+250a251,257
+> /*Patch for ISSM*/
+> #ifndef REAL
+> typedef double REAL;
+> typedef void VOID;
+> #endif
+> /*End patch*/
+> 
+283c290
+< void triangulate(char *, struct triangulateio *, struct triangulateio *,
+---
+> extern "C" void triangulate(char *, struct triangulateio *, struct triangulateio *,
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/triangle.h.patch.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/triangle.h.patch.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/triangle/triangle.h.patch.js	(revision 21239)
@@ -0,0 +1,8 @@
+250a251,257
+> /*Patch for ISSM*/
+> #ifndef REAL
+> typedef double REAL;
+> typedef void VOID;
+> #endif
+> /*End patch*/
+> 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/valgrind/install-altix64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/valgrind/install-altix64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/valgrind/install-altix64.sh	(revision 21239)
@@ -0,0 +1,28 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install valgrind-3.10.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/valgrind-3.10.0.tar.bz2' 'valgrind-3.10.0.tar.bz2'
+
+#Untar 
+tar -jxvf  valgrind-3.10.0.tar.bz2
+
+#Move valgrind into install directory
+mv valgrind-3.10.0/* install
+rm -rf valgrind-3.10.0
+
+#configure
+cd install
+./configure --prefix="$ISSM_DIR/externalpackages/valgrind/install"
+
+#Compile valgrind
+make  -j 4
+make install
+
+#final thing: if mpi is compiled in, soft link its target to a simpler name
+cd lib
+ln -s valgrind/libmpi*  ./libmpidebug.so
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/valgrind/install-linux64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/valgrind/install-linux64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/valgrind/install-linux64.sh	(revision 21239)
@@ -0,0 +1,28 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install valgrind-3.10.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/valgrind-3.10.0.tar.bz2' 'valgrind-3.10.0.tar.bz2'
+
+#Untar 
+tar -jxvf  valgrind-3.10.0.tar.bz2
+
+#Move valgrind into install directory
+mv valgrind-3.10.0/* install
+rm -rf valgrind-3.10.0
+
+#configure
+cd install
+./configure  --prefix="$ISSM_DIR/externalpackages/valgrind/install"
+
+#Compile valgrind
+make  -j 4
+make install
+
+#final thing: if mpi is compiled in, soft link its target to a simpler name
+cd lib
+ln -s valgrind/libmpiwrap-*  ./libmpidebug.so
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/valgrind/install-macosx32.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/valgrind/install-macosx32.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/valgrind/install-macosx32.sh	(revision 21239)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install valgrind-3.10.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/valgrind-3.10.0.tar.bz2' 'valgrind-3.10.0.tar.bz2'
+
+#Untar 
+tar -jxvf  valgrind-3.10.0.tar.bz2
+
+#Move valgrind into install directory
+mv valgrind-3.10.0/* install
+rm -rf valgrind-3.10.0
+
+#configure
+cd install
+./configure  --prefix="$ISSM_DIR/externalpackages/valgrind/install" --enable-only32bit
+
+#Compile valgrind
+make  -j 4
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/valgrind/install-macosx64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/valgrind/install-macosx64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/valgrind/install-macosx64.sh	(revision 21239)
@@ -0,0 +1,18 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+
+#Download development version, the current release never supports the latest OS X releases
+svn co svn://svn.valgrind.org/valgrind/trunk install
+
+#configure
+cd install
+./autogen.sh
+./configure  --prefix="$ISSM_DIR/externalpackages/valgrind/install" --enable-only64bit
+
+#Compile valgrind
+
+make  -j 8
+make install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/valgrind/install-win32.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/valgrind/install-win32.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/valgrind/install-win32.sh	(revision 21239)
@@ -0,0 +1,28 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install valgrind-3.10.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/valgrind-3.10.0.tar.bz2' 'valgrind-3.10.0.tar.bz2'
+
+#Untar 
+tar -jxvf  valgrind-3.10.0.tar.bz2
+
+#Move valgrind into install directory
+mv valgrind-3.10.0/* install
+rm -rf valgrind-3.10.0
+
+#configure
+cd install
+./configure  --prefix="$ISSM_DIR/externalpackages/valgrind/install"
+
+#Compile valgrind
+make  -j 4
+make install
+
+#final thing: if mpi is compiled in, soft link its target to a simpler name
+cd lib
+ln -s valgrind/libmpi*  ./libmpidebug.so
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/valgrind/issm.supp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/valgrind/issm.supp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/valgrind/issm.supp	(revision 21239)
@@ -0,0 +1,229 @@
+# This holds the errors to be suppressed from valgrind report for ISSM.
+# See: http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress
+#
+# to add errors:
+#   1. in m/classes/clusters/generic.m,
+#      add: --gen-suppressions=all
+#   2. in the errlog, copy and paste the suppression log
+#      in this file.
+
+#OS specific errors{{{
+#http://stackoverflow.com/questions/14474691/wifstream-with-imbue-locale-produces-valgrind-errors (larsen)
+{
+   <OS1>
+   Memcheck:Addr8
+   fun:wcscmp
+   fun:_ZNSt10moneypunctIwLb1EED1Ev
+   fun:_ZNSt10moneypunctIwLb1EED0Ev
+}
+{
+   <OS0>
+   Memcheck:Addr8
+   fun:wcscmp
+   fun:_ZNSt10moneypunctIwLb0EED1Ev
+   fun:_ZNSt10moneypunctIwLb0EED0Ev
+   fun:_ZNSt6locale5_ImplD1Ev
+   fun:_ZNSt6localeD1Ev
+   fun:__cxa_finalize
+   obj:/u/astrid-r1b/morlighe/issmjpl/cron/trunk-jpl/externalpackages/boost/install/lib/libboost_filesystem.so.1.49.0
+   obj:/u/astrid-r1b/morlighe/issmjpl/cron/trunk-jpl/externalpackages/boost/install/lib/libboost_filesystem.so.1.49.0
+   fun:__run_exit_handlers
+   fun:exit
+   fun:(below main)
+}
+{
+   <OS2>
+   Memcheck:Leak
+   fun:_Znwm
+   fun:_ZNSs4_Rep9_S_createEmmRKSaIcE
+   fun:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag
+   fun:_ZNSsC1EPKcRKSaIcE
+}
+#}}}
+#PETSc {{{
+{
+   <petsc0>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:maybe_complete
+   fun:PMPI_Waitany
+   fun:MatStashScatterGetMesg_Private
+   fun:MatAssemblyEnd_MPIAIJ
+   fun:MatAssemblyEnd
+}
+{
+   <petsc1>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:maybe_complete
+   fun:PMPI_Waitany
+   fun:VecStashScatterGetMesg_Private
+   fun:VecAssemblyEnd_MPI
+   fun:VecAssemblyEnd
+   fun:_ZN8PetscVec8AssembleEv
+}
+{
+   <petsc2>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:PMPI_Recv
+   fun:_Z14VecToMPISerialPPdP6_p_Veci
+   fun:_ZN8PetscVec11ToMPISerialEv
+}
+{
+   <petsc3>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:maybe_complete
+   fun:PMPI_Waitany
+   fun:VecScatterCreate_PtoS
+   fun:VecScatterCreate
+   fun:MatSetUpMultiply_MPIAIJ
+   fun:MatAssemblyEnd_MPIAIJ
+   fun:MatAssemblyEnd
+}
+{
+   <mumps0>
+   Memcheck:Leak
+   fun:malloc
+   fun:mumps_397.3148
+   fun:__mumps_static_mapping_MOD_mumps_369
+   fun:dmumps_537_
+   fun:dmumps_26_
+   fun:dmumps_
+   fun:dmumps_f77_
+   fun:dmumps_c
+   fun:MatLUFactorSymbolic_AIJMUMPS
+   fun:MatLUFactorSymbolic
+   fun:PCSetUp_LU
+   fun:PCSetUp
+}
+{
+   <mumps1>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:PMPI_Recv
+   fun:mpi_recv
+   fun:dmumps_664_
+}
+{
+   <mumps2>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:maybe_complete
+   fun:PMPI_Waitany
+   fun:mpi_waitany
+   fun:dmumps_664_
+}
+{
+   <mumps3>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:PMPI_Recv
+   fun:mpi_recv
+   fun:dmumps_282_
+}
+{
+   <mumps4>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:PMPI_Recv
+   fun:mpi_recv
+   fun:dmumps_255_
+}
+{
+   <mumps5>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:maybe_complete
+   fun:PMPI_Wait
+   fun:PMPI_WAIT
+   fun:dmumps_255_
+}
+{
+   <mump6>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:PMPI_Recv
+   fun:mpi_recv
+   fun:dmumps_638_
+}
+{
+   <mumps7>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:PMPI_Recv
+   fun:mpi_recv
+   fun:dmumps_640.3488
+}
+{
+   <mumps8>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:MPI_GET_COUNT
+   fun:dmumps_638_
+}
+{
+   <mumps9>
+   Memcheck:User
+   fun:check_mem_is_defined_untyped
+   fun:PMPI_Pack
+   fun:PMPI_PACK
+   fun:__dmumps_comm_buffer_MOD_dmumps_62
+}
+{
+   <mumps10>
+   Memcheck:User
+   fun:check_mem_is_defined_untyped
+   fun:PMPI_Pack
+   fun:PMPI_PACK
+   fun:__dmumps_comm_buffer_MOD_dmumps_62
+}
+{
+	<mumps11>
+	  Memcheck:User
+	  fun:check_mem_is_defined_untyped
+	  fun:PMPI_Isend
+	  fun:libparmetis__gkMPI_Isend
+	  fun:libparmetis__CommInterfaceData
+	  fun:libparmetis__CompactGraph
+	  fun:libparmetis__MultilevelOrder
+	  fun:ParMETIS_V32_NodeND
+	  fun:ParMETIS_V3_NodeND
+	  fun:mumps_parmetis_
+}
+{
+	<mumps12>
+	  Memcheck:User
+	  fun:check_mem_is_defined_untyped
+	  fun:PMPI_Bcast
+	  fun:MPI_BCAST
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_718
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_717
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_715
+}
+{
+	<mumps13>
+	  Memcheck:Leak
+	  fun:malloc
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_775
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_720
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_715
+}
+{
+	<mump14>
+	  Memcheck:Leak
+	  fun:malloc
+	  fun:mumps_754_
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_781
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_720
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_715
+	  fun:dmumps_26_
+	  fun:dmumps_
+	  fun:dmumps_f77_
+	  fun:dmumps_c
+	  fun:MatLUFactorSymbolic_AIJMUMPS
+	  fun:MatLUFactorSymbolic
+	  fun:PCSetUp_LU
+}
+#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/README
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/README	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/README	(revision 21239)
@@ -0,0 +1,5 @@
+To use ISSM's settings for vim:
+
+1. Add the settings from vimrc to your .vimrc file
+
+2. Add softlinks from vim to your .vim directory
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/autoload/Align.vim
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/autoload/Align.vim	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/autoload/Align.vim	(revision 21239)
@@ -0,0 +1,1029 @@
+" Align: tool to align multiple fields based on one or more separators
+"   Author:		Charles E. Campbell, Jr.
+"   Date:		Mar 03, 2009
+"   Version:	35
+" GetLatestVimScripts: 294 1 :AutoInstall: Align.vim
+" GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim
+" Copyright:    Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1
+"               Permission is hereby granted to use and distribute this code,
+"               with or without modifications, provided that this copyright
+"               notice is copied with it. Like anything else that's free,
+"               Align.vim is provided *as is* and comes with no warranty
+"               of any kind, either expressed or implied. By using this
+"               plugin, you agree that in no event will the copyright
+"               holder be liable for any damages resulting from the use
+"               of this software.
+"
+" Romans 1:16,17a : For I am not ashamed of the gospel of Christ, for it is {{{1
+" the power of God for salvation for everyone who believes; for the Jew first,
+" and also for the Greek.  For in it is revealed God's righteousness from
+" faith to faith.
+
+" ---------------------------------------------------------------------
+" Load Once: {{{1
+if exists("g:loaded_Align") || &cp
+ finish
+endif
+let g:loaded_Align = "v35"
+if v:version < 700
+ echohl WarningMsg
+ echo "***warning*** this version of Align needs vim 7.0"
+ echohl Normal
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+"DechoTabOn
+
+" ---------------------------------------------------------------------
+" Debugging Support: {{{1
+"if !exists("g:loaded_Decho") | runtime plugin/Decho.vim | endif
+
+" ---------------------------------------------------------------------
+" Options: {{{1
+if !exists("g:Align_xstrlen")
+ if &enc == "latin1" || $LANG == "en_US.UTF-8" || !has("multi_byte")
+  let g:Align_xstrlen= 0
+ else
+  let g:Align_xstrlen= 1
+ endif
+endif
+
+" ---------------------------------------------------------------------
+" Align#AlignCtrl: enter alignment patterns here {{{1
+"
+"   Styles   =  all alignment-break patterns are equivalent
+"            C  cycle through alignment-break pattern(s)
+"            l  left-justified alignment
+"            r  right-justified alignment
+"            c  center alignment
+"            -  skip separator, treat as part of field
+"            :  treat rest of line as field
+"            +  repeat previous [lrc] style
+"            <  left justify separators
+"            >  right justify separators
+"            |  center separators
+"
+"   Builds   =  s:AlignPat  s:AlignCtrl  s:AlignPatQty
+"            C  s:AlignPat  s:AlignCtrl  s:AlignPatQty
+"            p  s:AlignPrePad
+"            P  s:AlignPostPad
+"            w  s:AlignLeadKeep
+"            W  s:AlignLeadKeep
+"            I  s:AlignLeadKeep
+"            l  s:AlignStyle
+"            r  s:AlignStyle
+"            -  s:AlignStyle
+"            +  s:AlignStyle
+"            :  s:AlignStyle
+"            c  s:AlignStyle
+"            g  s:AlignGPat
+"            v  s:AlignVPat
+"            <  s:AlignSep
+"            >  s:AlignSep
+"            |  s:AlignSep
+fun! Align#AlignCtrl(...)
+
+"  call Dfunc("AlignCtrl(...) a:0=".a:0)
+
+  " save options that will be changed
+  let keep_search = @/
+  let keep_ic     = &ic
+
+  " turn ignorecase off
+  set noic
+
+  " clear visual mode so that old visual-mode selections don't
+  " get applied to new invocations of Align().
+  if v:version < 602
+   if !exists("s:Align_gavemsg")
+	let s:Align_gavemsg= 1
+    echomsg "Align needs at least Vim version 6.2 to clear visual-mode selection"
+   endif
+  elseif exists("s:dovisclear")
+"   call Decho("clearing visual mode a:0=".a:0." a:1<".a:1.">")
+   let clearvmode= visualmode(1)
+  endif
+
+  " set up a list akin to an argument list
+  if a:0 > 0
+   let A= s:QArgSplitter(a:1)
+  else
+   let A=[0]
+  endif
+
+  if A[0] > 0
+   let style = A[1]
+
+   " Check for bad separator patterns (zero-length matches)
+   " (but zero-length patterns for g/v is ok)
+   if style !~# '[gv]'
+    let ipat= 2
+    while ipat <= A[0]
+     if "" =~ A[ipat]
+      echoerr "AlignCtrl: separator<".A[ipat]."> matches zero-length string"
+	  let &ic= keep_ic
+"      call Dret("AlignCtrl")
+      return
+     endif
+     let ipat= ipat + 1
+    endwhile
+   endif
+  endif
+
+"  call Decho("AlignCtrl() A[0]=".A[0])
+  if !exists("s:AlignStyle")
+   let s:AlignStyle= "l"
+  endif
+  if !exists("s:AlignPrePad")
+   let s:AlignPrePad= 0
+  endif
+  if !exists("s:AlignPostPad")
+   let s:AlignPostPad= 0
+  endif
+  if !exists("s:AlignLeadKeep")
+   let s:AlignLeadKeep= 'w'
+  endif
+
+  if A[0] == 0
+   " ----------------------
+   " List current selection
+   " ----------------------
+   if !exists("s:AlignPatQty")
+	let s:AlignPatQty= 0
+   endif
+   echo "AlignCtrl<".s:AlignCtrl."> qty=".s:AlignPatQty." AlignStyle<".s:AlignStyle."> Padding<".s:AlignPrePad."|".s:AlignPostPad."> LeadingWS=".s:AlignLeadKeep." AlignSep=".s:AlignSep
+"   call Decho("AlignCtrl<".s:AlignCtrl."> qty=".s:AlignPatQty." AlignStyle<".s:AlignStyle."> Padding<".s:AlignPrePad."|".s:AlignPostPad."> LeadingWS=".s:AlignLeadKeep." AlignSep=".s:AlignSep)
+   if      exists("s:AlignGPat") && !exists("s:AlignVPat")
+	echo "AlignGPat<".s:AlignGPat.">"
+   elseif !exists("s:AlignGPat") &&  exists("s:AlignVPat")
+	echo "AlignVPat<".s:AlignVPat.">"
+   elseif exists("s:AlignGPat") &&  exists("s:AlignVPat")
+	echo "AlignGPat<".s:AlignGPat."> AlignVPat<".s:AlignVPat.">"
+   endif
+   let ipat= 1
+   while ipat <= s:AlignPatQty
+	echo "Pat".ipat."<".s:AlignPat_{ipat}.">"
+"	call Decho("Pat".ipat."<".s:AlignPat_{ipat}.">")
+	let ipat= ipat + 1
+   endwhile
+
+  else
+   " ----------------------------------
+   " Process alignment control settings
+   " ----------------------------------
+"   call Decho("process the alignctrl settings")
+"   call Decho("style<".style.">")
+
+   if style ==? "default"
+     " Default:  preserve initial leading whitespace, left-justified,
+     "           alignment on '=', one space padding on both sides
+	 if exists("s:AlignCtrlStackQty")
+	  " clear AlignCtrl stack
+      while s:AlignCtrlStackQty > 0
+	   call Align#AlignPop()
+	  endwhile
+	  unlet s:AlignCtrlStackQty
+	 endif
+	 " Set AlignCtrl to its default value
+     call Align#AlignCtrl("Ilp1P1=<",'=')
+	 call Align#AlignCtrl("g")
+	 call Align#AlignCtrl("v")
+	 let s:dovisclear = 1
+	 let &ic          = keep_ic
+	 let @/           = keep_search
+"     call Dret("AlignCtrl")
+	 return
+   endif
+
+   if style =~# 'm'
+	" map support: Do an AlignPush now and the next call to Align()
+	"              will do an AlignPop at exit
+"	call Decho("style case m: do AlignPush")
+	call Align#AlignPush()
+	let s:DoAlignPop= 1
+   endif
+
+   " = : record a list of alignment patterns that are equivalent
+   if style =~# "="
+"	call Decho("style case =: record list of equiv alignment patterns")
+    let s:AlignCtrl  = '='
+	if A[0] >= 2
+     let s:AlignPatQty= 1
+     let s:AlignPat_1 = A[2]
+     let ipat         = 3
+     while ipat <= A[0]
+      let s:AlignPat_1 = s:AlignPat_1.'\|'.A[ipat]
+      let ipat         = ipat + 1
+     endwhile
+     let s:AlignPat_1= '\('.s:AlignPat_1.'\)'
+"     call Decho("AlignCtrl<".s:AlignCtrl."> AlignPat<".s:AlignPat_1.">")
+	endif
+
+    "c : cycle through alignment pattern(s)
+   elseif style =~# 'C'
+"	call Decho("style case C: cycle through alignment pattern(s)")
+    let s:AlignCtrl  = 'C'
+	if A[0] >= 2
+     let s:AlignPatQty= A[0] - 1
+     let ipat         = 1
+     while ipat < A[0]
+      let s:AlignPat_{ipat}= A[ipat+1]
+"     call Decho("AlignCtrl<".s:AlignCtrl."> AlignQty=".s:AlignPatQty." AlignPat_".ipat."<".s:AlignPat_{ipat}.">")
+      let ipat= ipat + 1
+     endwhile
+	endif
+   endif
+
+   if style =~# 'p'
+    let s:AlignPrePad= substitute(style,'^.*p\(\d\+\).*$','\1','')
+"	call Decho("style case p".s:AlignPrePad.": pre-separator padding")
+    if s:AlignPrePad == ""
+     echoerr "AlignCtrl: 'p' needs to be followed by a numeric argument'
+     let @/ = keep_search
+	 let &ic= keep_ic
+"     call Dret("AlignCtrl")
+     return
+	endif
+   endif
+
+   if style =~# 'P'
+    let s:AlignPostPad= substitute(style,'^.*P\(\d\+\).*$','\1','')
+"	call Decho("style case P".s:AlignPostPad.": post-separator padding")
+    if s:AlignPostPad == ""
+     echoerr "AlignCtrl: 'P' needs to be followed by a numeric argument'
+     let @/ = keep_search
+	 let &ic= keep_ic
+"     call Dret("AlignCtrl")
+     return
+	endif
+   endif
+
+   if     style =~# 'w'
+"	call Decho("style case w: ignore leading whitespace")
+	let s:AlignLeadKeep= 'w'
+   elseif style =~# 'W'
+"	call Decho("style case w: keep leading whitespace")
+	let s:AlignLeadKeep= 'W'
+   elseif style =~# 'I'
+"	call Decho("style case w: retain initial leading whitespace")
+	let s:AlignLeadKeep= 'I'
+   endif
+
+   if style =~# 'g'
+	" first list item is a "g" selector pattern
+"	call Decho("style case g: global selector pattern")
+	if A[0] < 2
+	 if exists("s:AlignGPat")
+	  unlet s:AlignGPat
+"	  call Decho("unlet s:AlignGPat")
+	 endif
+	else
+	 let s:AlignGPat= A[2]
+"	 call Decho("s:AlignGPat<".s:AlignGPat.">")
+	endif
+   elseif style =~# 'v'
+	" first list item is a "v" selector pattern
+"	call Decho("style case v: global selector anti-pattern")
+	if A[0] < 2
+	 if exists("s:AlignVPat")
+	  unlet s:AlignVPat
+"	  call Decho("unlet s:AlignVPat")
+	 endif
+	else
+	 let s:AlignVPat= A[2]
+"	 call Decho("s:AlignVPat<".s:AlignVPat.">")
+	endif
+   endif
+
+    "[-lrc+:] : set up s:AlignStyle
+   if style =~# '[-lrc+:]'
+"	call Decho("style case [-lrc+:]: field justification")
+    let s:AlignStyle= substitute(style,'[^-lrc:+]','','g')
+"    call Decho("AlignStyle<".s:AlignStyle.">")
+   endif
+
+   "[<>|] : set up s:AlignSep
+   if style =~# '[<>|]'
+"	call Decho("style case [-lrc+:]: separator justification")
+	let s:AlignSep= substitute(style,'[^<>|]','','g')
+"	call Decho("AlignSep ".s:AlignSep)
+   endif
+  endif
+
+  " sanity
+  if !exists("s:AlignCtrl")
+   let s:AlignCtrl= '='
+  endif
+
+  " restore search and options
+  let @/ = keep_search
+  let &ic= keep_ic
+
+"  call Dret("AlignCtrl ".s:AlignCtrl.'p'.s:AlignPrePad.'P'.s:AlignPostPad.s:AlignLeadKeep.s:AlignStyle)
+  return s:AlignCtrl.'p'.s:AlignPrePad.'P'.s:AlignPostPad.s:AlignLeadKeep.s:AlignStyle
+endfun
+
+" ---------------------------------------------------------------------
+" s:MakeSpace: returns a string with spacecnt blanks {{{1
+fun! s:MakeSpace(spacecnt)
+"  call Dfunc("MakeSpace(spacecnt=".a:spacecnt.")")
+  let str      = ""
+  let spacecnt = a:spacecnt
+  while spacecnt > 0
+   let str      = str . " "
+   let spacecnt = spacecnt - 1
+  endwhile
+"  call Dret("MakeSpace <".str.">")
+  return str
+endfun
+
+" ---------------------------------------------------------------------
+" Align#Align: align selected text based on alignment pattern(s) {{{1
+fun! Align#Align(hasctrl,...) range
+"  call Dfunc("Align#Align(hasctrl=".a:hasctrl.",...) a:0=".a:0)
+
+  " sanity checks
+  if string(a:hasctrl) != "0" && string(a:hasctrl) != "1"
+   echohl Error|echo 'usage: Align#Align(hasctrl<'.a:hasctrl.'> (should be 0 or 1),"separator(s)"  (you have '.a:0.') )'|echohl None
+"   call Dret("Align#Align")
+   return
+  endif
+  if exists("s:AlignStyle") && s:AlignStyle == ":"
+   echohl Error |echo '(Align#Align) your AlignStyle is ":", which implies "do-no-alignment"!'|echohl None
+"   call Dret("Align#Align")
+   return
+  endif
+
+  " set up a list akin to an argument list
+  if a:0 > 0
+   let A= s:QArgSplitter(a:1)
+  else
+   let A=[0]
+  endif
+
+  " if :Align! was used, then the first argument is (should be!) an AlignCtrl string
+  " Note that any alignment control set this way will be temporary.
+  let hasctrl= a:hasctrl
+"  call Decho("hasctrl=".hasctrl)
+  if a:hasctrl && A[0] >= 1
+"   call Decho("Align! : using A[1]<".A[1]."> for AlignCtrl")
+   if A[1] =~ '[gv]'
+   	let hasctrl= hasctrl + 1
+	call Align#AlignCtrl('m')
+    call Align#AlignCtrl(A[1],A[2])
+"    call Decho("Align! : also using A[2]<".A[2]."> for AlignCtrl")
+   elseif A[1] !~ 'm'
+    call Align#AlignCtrl(A[1]."m")
+   else
+    call Align#AlignCtrl(A[1])
+   endif
+  endif
+
+  " Check for bad separator patterns (zero-length matches)
+  let ipat= 1 + hasctrl
+  while ipat <= A[0]
+   if "" =~ A[ipat]
+	echoerr "Align: separator<".A[ipat]."> matches zero-length string"
+"    call Dret("Align#Align")
+	return
+   endif
+   let ipat= ipat + 1
+  endwhile
+
+  " record current search pattern for subsequent restoration
+  let keep_search= @/
+  let keep_ic    = &ic
+  let keep_report= &report
+  set noic report=10000
+
+  if A[0] > hasctrl
+  " Align will accept a list of separator regexps
+"   call Decho("A[0]=".A[0].": accepting list of separator regexp")
+
+   if s:AlignCtrl =~# "="
+   	"= : consider all separators to be equivalent
+"    call Decho("AlignCtrl: record list of equivalent alignment patterns")
+    let s:AlignCtrl  = '='
+    let s:AlignPat_1 = A[1 + hasctrl]
+    let s:AlignPatQty= 1
+    let ipat         = 2 + hasctrl
+    while ipat <= A[0]
+     let s:AlignPat_1 = s:AlignPat_1.'\|'.A[ipat]
+     let ipat         = ipat + 1
+    endwhile
+    let s:AlignPat_1= '\('.s:AlignPat_1.'\)'
+"    call Decho("AlignCtrl<".s:AlignCtrl."> AlignPat<".s:AlignPat_1.">")
+
+   elseif s:AlignCtrl =~# 'C'
+    "c : cycle through alignment pattern(s)
+"    call Decho("AlignCtrl: cycle through alignment pattern(s)")
+    let s:AlignCtrl  = 'C'
+    let s:AlignPatQty= A[0] - hasctrl
+    let ipat         = 1
+    while ipat <= s:AlignPatQty
+     let s:AlignPat_{ipat}= A[(ipat + hasctrl)]
+"     call Decho("AlignCtrl<".s:AlignCtrl."> AlignQty=".s:AlignPatQty." AlignPat_".ipat."<".s:AlignPat_{ipat}.">")
+     let ipat= ipat + 1
+    endwhile
+   endif
+  endif
+
+  " Initialize so that begline<endline and begcol<endcol.
+  " Ragged right: check if the column associated with '< or '>
+  "               is greater than the line's string length -> ragged right.
+  " Have to be careful about visualmode() -- it returns the last visual
+  " mode used whether or not it was used currently.
+  let begcol   = virtcol("'<")-1
+  let endcol   = virtcol("'>")-1
+  if begcol > endcol
+   let begcol  = virtcol("'>")-1
+   let endcol  = virtcol("'<")-1
+  endif
+"  call Decho("begcol=".begcol." endcol=".endcol)
+  let begline  = a:firstline
+  let endline  = a:lastline
+  if begline > endline
+   let begline = a:lastline
+   let endline = a:firstline
+  endif
+"  call Decho("begline=".begline." endline=".endline)
+  let fieldcnt = 0
+  if (begline == line("'>") && endline == line("'<")) || (begline == line("'<") && endline == line("'>"))
+   let vmode= visualmode()
+"   call Decho("vmode=".vmode)
+   if vmode == "\<c-v>"
+	if exists("g:Align_xstrlen") && g:Align_xstrlen
+     let ragged   = ( col("'>") > s:Strlen(getline("'>")) || col("'<") > s:Strlen(getline("'<")) )
+	else
+     let ragged   = ( col("'>") > strlen(getline("'>")) || col("'<") > strlen(getline("'<")) )
+	endif
+   else
+	let ragged= 1
+   endif
+  else
+   let ragged= 1
+  endif
+  if ragged
+   let begcol= 0
+  endif
+"  call Decho("lines[".begline.",".endline."] col[".begcol.",".endcol."] ragged=".ragged." AlignCtrl<".s:AlignCtrl.">")
+
+  " Keep user options
+  let etkeep   = &l:et
+  let pastekeep= &l:paste
+  setlocal et paste
+
+  " convert selected range of lines to use spaces instead of tabs
+  " but if first line's initial white spaces are to be retained
+  " then use 'em
+  if begcol <= 0 && s:AlignLeadKeep == 'I'
+   " retain first leading whitespace for all subsequent lines
+   let bgntxt= substitute(getline(begline),'^\(\s*\).\{-}$','\1','')
+"   call Decho("retaining 1st leading whitespace: bgntxt<".bgntxt.">")
+   set noet
+  endif
+  exe begline.",".endline."ret"
+
+  " Execute two passes
+  " First  pass: collect alignment data (max field sizes)
+  " Second pass: perform alignment
+  let pass= 1
+  while pass <= 2
+"   call Decho(" ")
+"   call Decho("---- Pass ".pass.": ----")
+
+   let line= begline
+   while line <= endline
+    " Process each line
+    let txt = getline(line)
+"    call Decho(" ")
+"    call Decho("Pass".pass.": Line ".line." <".txt.">")
+
+    " AlignGPat support: allows a selector pattern (akin to g/selector/cmd )
+    if exists("s:AlignGPat")
+"	 call Decho("Pass".pass.": AlignGPat<".s:AlignGPat.">")
+	 if match(txt,s:AlignGPat) == -1
+"	  call Decho("Pass".pass.": skipping")
+	  let line= line + 1
+	  continue
+	 endif
+    endif
+
+    " AlignVPat support: allows a selector pattern (akin to v/selector/cmd )
+    if exists("s:AlignVPat")
+"	 call Decho("Pass".pass.": AlignVPat<".s:AlignVPat.">")
+	 if match(txt,s:AlignVPat) != -1
+"	  call Decho("Pass".pass.": skipping")
+	  let line= line + 1
+	  continue
+	 endif
+    endif
+
+	" Always skip blank lines
+	if match(txt,'^\s*$') != -1
+"	  call Decho("Pass".pass.": skipping")
+	 let line= line + 1
+	 continue
+	endif
+
+    " Extract visual-block selected text (init bgntxt, endtxt)
+	if exists("g:Align_xstrlen") && g:Align_xstrlen
+     let txtlen= s:Strlen(txt)
+	else
+     let txtlen= strlen(txt)
+	endif
+    if begcol > 0
+	 " Record text to left of selected area
+     let bgntxt= strpart(txt,0,begcol)
+"	  call Decho("Pass".pass.": record text to left: bgntxt<".bgntxt.">")
+    elseif s:AlignLeadKeep == 'W'
+	 let bgntxt= substitute(txt,'^\(\s*\).\{-}$','\1','')
+"	  call Decho("Pass".pass.": retaining all leading ws: bgntxt<".bgntxt.">")
+    elseif s:AlignLeadKeep == 'w' || !exists("bgntxt")
+	 " No beginning text
+	 let bgntxt= ""
+"	  call Decho("Pass".pass.": no beginning text")
+    endif
+    if ragged
+	 let endtxt= ""
+    else
+     " Elide any text lying outside selected columnar region
+     let endtxt= strpart(txt,endcol+1,txtlen-endcol)
+     let txt   = strpart(txt,begcol,endcol-begcol+1)
+    endif
+"    call Decho(" ")
+"    call Decho("Pass".pass.": bgntxt<".bgntxt.">")
+"    call Decho("Pass".pass.":    txt<". txt  .">")
+"    call Decho("Pass".pass.": endtxt<".endtxt.">")
+	if !exists("s:AlignPat_{1}")
+	 echohl Error|echo "no separators specified!"|echohl None
+"     call Dret("Align#Align")
+	 return
+	endif
+
+    " Initialize for both passes
+    let seppat      = s:AlignPat_{1}
+    let ifield      = 1
+    let ipat        = 1
+    let bgnfield    = 0
+    let endfield    = 0
+    let alignstyle  = s:AlignStyle
+    let doend       = 1
+	let newtxt      = ""
+    let alignprepad = s:AlignPrePad
+    let alignpostpad= s:AlignPostPad
+	let alignsep    = s:AlignSep
+	let alignophold = " "
+	let alignop     = "l"
+"	call Decho("Pass".pass.": initial alignstyle<".alignstyle."> seppat<".seppat.">")
+
+    " Process each field on the line
+    while doend > 0
+
+	  " C-style: cycle through pattern(s)
+     if s:AlignCtrl == 'C' && doend == 1
+	  let seppat   = s:AlignPat_{ipat}
+"	  call Decho("Pass".pass.": processing field: AlignCtrl=".s:AlignCtrl." ipat=".ipat." seppat<".seppat.">")
+	  let ipat     = ipat + 1
+	  if ipat > s:AlignPatQty
+	   let ipat = 1
+	  endif
+     endif
+
+	 " cyclic alignment/justification operator handling
+	 let alignophold  = alignop
+	 let alignop      = strpart(alignstyle,0,1)
+	 if alignop == '+' || doend == 2
+	  let alignop= alignophold
+	 else
+	  let alignstyle   = strpart(alignstyle,1).strpart(alignstyle,0,1)
+	  let alignopnxt   = strpart(alignstyle,0,1)
+	  if alignop == ':'
+	   let seppat  = '$'
+	   let doend   = 2
+"	   call Decho("Pass".pass.": alignop<:> case: setting seppat<$> doend==2")
+	  endif
+	 endif
+
+	 " cylic separator alignment specification handling
+	 let alignsepop= strpart(alignsep,0,1)
+	 let alignsep  = strpart(alignsep,1).alignsepop
+
+	 " mark end-of-field and the subsequent end-of-separator.
+	 " Extend field if alignop is '-'
+     let endfield = match(txt,seppat,bgnfield)
+	 let sepfield = matchend(txt,seppat,bgnfield)
+     let skipfield= sepfield
+"	 call Decho("Pass".pass.": endfield=match(txt<".txt.">,seppat<".seppat.">,bgnfield=".bgnfield.")=".endfield)
+	 while alignop == '-' && endfield != -1
+	  let endfield  = match(txt,seppat,skipfield)
+	  let sepfield  = matchend(txt,seppat,skipfield)
+	  let skipfield = sepfield
+	  let alignop   = strpart(alignstyle,0,1)
+	  let alignstyle= strpart(alignstyle,1).strpart(alignstyle,0,1)
+"	  call Decho("Pass".pass.": extend field: endfield<".strpart(txt,bgnfield,endfield-bgnfield)."> alignop<".alignop."> alignstyle<".alignstyle.">")
+	 endwhile
+	 let seplen= sepfield - endfield
+"	 call Decho("Pass".pass.": seplen=[sepfield=".sepfield."] - [endfield=".endfield."]=".seplen)
+
+	 if endfield != -1
+	  if pass == 1
+	   " ---------------------------------------------------------------------
+	   " Pass 1: Update FieldSize to max
+"	   call Decho("Pass".pass.": before lead/trail remove: field<".strpart(txt,bgnfield,endfield-bgnfield).">")
+	   let field      = substitute(strpart(txt,bgnfield,endfield-bgnfield),'^\s*\(.\{-}\)\s*$','\1','')
+       if s:AlignLeadKeep == 'W'
+	    let field = bgntxt.field
+	    let bgntxt= ""
+	   endif
+	   if exists("g:Align_xstrlen") && g:Align_xstrlen
+	    let fieldlen   = s:Strlen(field)
+	   else
+	    let fieldlen   = strlen(field)
+	   endif
+	   let sFieldSize = "FieldSize_".ifield
+	   if !exists(sFieldSize)
+	    let FieldSize_{ifield}= fieldlen
+"	    call Decho("Pass".pass.":  set FieldSize_{".ifield."}=".FieldSize_{ifield}." <".field.">")
+	   elseif fieldlen > FieldSize_{ifield}
+	    let FieldSize_{ifield}= fieldlen
+"	    call Decho("Pass".pass.": oset FieldSize_{".ifield."}=".FieldSize_{ifield}." <".field.">")
+	   endif
+	   let sSepSize= "SepSize_".ifield
+	   if !exists(sSepSize)
+		let SepSize_{ifield}= seplen
+"	    call Decho(" set SepSize_{".ifield."}=".SepSize_{ifield}." <".field.">")
+	   elseif seplen > SepSize_{ifield}
+		let SepSize_{ifield}= seplen
+"	    call Decho("Pass".pass.": oset SepSize_{".ifield."}=".SepSize_{ifield}." <".field.">")
+	   endif
+
+	  else
+	   " ---------------------------------------------------------------------
+	   " Pass 2: Perform Alignment
+	   let prepad       = strpart(alignprepad,0,1)
+	   let postpad      = strpart(alignpostpad,0,1)
+	   let alignprepad  = strpart(alignprepad,1).strpart(alignprepad,0,1)
+	   let alignpostpad = strpart(alignpostpad,1).strpart(alignpostpad,0,1)
+	   let field        = substitute(strpart(txt,bgnfield,endfield-bgnfield),'^\s*\(.\{-}\)\s*$','\1','')
+       if s:AlignLeadKeep == 'W'
+	    let field = bgntxt.field
+	    let bgntxt= ""
+	   endif
+	   if doend == 2
+		let prepad = 0
+		let postpad= 0
+	   endif
+	   if exists("g:Align_xstrlen") && g:Align_xstrlen
+	    let fieldlen   = s:Strlen(field)
+	   else
+	    let fieldlen   = strlen(field)
+	   endif
+	   let sep        = s:MakeSpace(prepad).strpart(txt,endfield,sepfield-endfield).s:MakeSpace(postpad)
+	   if seplen < SepSize_{ifield}
+		if alignsepop == "<"
+		 " left-justify separators
+		 let sep       = sep.s:MakeSpace(SepSize_{ifield}-seplen)
+		elseif alignsepop == ">"
+		 " right-justify separators
+		 let sep       = s:MakeSpace(SepSize_{ifield}-seplen).sep
+		else
+		 " center-justify separators
+		 let sepleft   = (SepSize_{ifield} - seplen)/2
+		 let sepright  = SepSize_{ifield} - seplen - sepleft
+		 let sep       = s:MakeSpace(sepleft).sep.s:MakeSpace(sepright)
+		endif
+	   endif
+	   let spaces     = FieldSize_{ifield} - fieldlen
+"	   call Decho("Pass".pass.": Field #".ifield."<".field."> spaces=".spaces." be[".bgnfield.",".endfield."] pad=".prepad.','.postpad." FS_".ifield."<".FieldSize_{ifield}."> sep<".sep."> ragged=".ragged." doend=".doend." alignop<".alignop.">")
+
+	    " Perform alignment according to alignment style justification
+	   if spaces > 0
+	    if     alignop == 'c'
+		 " center the field
+	     let spaceleft = spaces/2
+	     let spaceright= FieldSize_{ifield} - spaceleft - fieldlen
+	     let newtxt    = newtxt.s:MakeSpace(spaceleft).field.s:MakeSpace(spaceright).sep
+	    elseif alignop == 'r'
+		 " right justify the field
+	     let newtxt= newtxt.s:MakeSpace(spaces).field.sep
+	    elseif ragged && doend == 2
+		 " left justify rightmost field (no trailing blanks needed)
+	     let newtxt= newtxt.field
+		else
+		 " left justfiy the field
+	     let newtxt= newtxt.field.s:MakeSpace(spaces).sep
+	    endif
+	   elseif ragged && doend == 2
+		" field at maximum field size and no trailing blanks needed
+	    let newtxt= newtxt.field
+	   else
+		" field is at maximum field size already
+	    let newtxt= newtxt.field.sep
+	   endif
+"	   call Decho("Pass".pass.": newtxt<".newtxt.">")
+	  endif	" pass 1/2
+
+	  " bgnfield indexes to end of separator at right of current field
+	  " Update field counter
+	  let bgnfield= sepfield
+      let ifield  = ifield + 1
+	  if doend == 2
+	   let doend= 0
+	  endif
+	   " handle end-of-text as end-of-field
+	 elseif doend == 1
+	  let seppat  = '$'
+	  let doend   = 2
+	 else
+	  let doend   = 0
+	 endif		" endfield != -1
+    endwhile	" doend loop (as well as regularly separated fields)
+
+	if pass == 2
+	 " Write altered line to buffer
+"     call Decho("Pass".pass.": bgntxt<".bgntxt."> line=".line)
+"     call Decho("Pass".pass.": newtxt<".newtxt.">")
+"     call Decho("Pass".pass.": endtxt<".endtxt.">")
+	 call setline(line,bgntxt.newtxt.endtxt)
+	endif
+
+    let line = line + 1
+   endwhile	" line loop
+
+   let pass= pass + 1
+  endwhile	" pass loop
+"  call Decho("end of two pass loop")
+
+  " Restore user options
+  let &l:et    = etkeep
+  let &l:paste = pastekeep
+
+  if exists("s:DoAlignPop")
+   " AlignCtrl Map support
+   call Align#AlignPop()
+   unlet s:DoAlignPop
+  endif
+
+  " restore current search pattern
+  let @/      = keep_search
+  let &ic     = keep_ic
+  let &report = keep_report
+
+"  call Dret("Align#Align")
+  return
+endfun
+
+" ---------------------------------------------------------------------
+" Align#AlignPush: this command/function pushes an alignment control string onto a stack {{{1
+fun! Align#AlignPush()
+"  call Dfunc("AlignPush()")
+
+  " initialize the stack
+  if !exists("s:AlignCtrlStackQty")
+   let s:AlignCtrlStackQty= 1
+  else
+   let s:AlignCtrlStackQty= s:AlignCtrlStackQty + 1
+  endif
+
+  " construct an AlignCtrlStack entry
+  if !exists("s:AlignSep")
+   let s:AlignSep= ''
+  endif
+  let s:AlignCtrlStack_{s:AlignCtrlStackQty}= s:AlignCtrl.'p'.s:AlignPrePad.'P'.s:AlignPostPad.s:AlignLeadKeep.s:AlignStyle.s:AlignSep
+"  call Decho("AlignPush: AlignCtrlStack_".s:AlignCtrlStackQty."<".s:AlignCtrlStack_{s:AlignCtrlStackQty}.">")
+
+  " push [GV] patterns onto their own stack
+  if exists("s:AlignGPat")
+   let s:AlignGPat_{s:AlignCtrlStackQty}= s:AlignGPat
+  else
+   let s:AlignGPat_{s:AlignCtrlStackQty}=  ""
+  endif
+  if exists("s:AlignVPat")
+   let s:AlignVPat_{s:AlignCtrlStackQty}= s:AlignVPat
+  else
+   let s:AlignVPat_{s:AlignCtrlStackQty}=  ""
+  endif
+
+"  call Dret("AlignPush")
+endfun
+
+" ---------------------------------------------------------------------
+" Align#AlignPop: this command/function pops an alignment pattern from a stack {{{1
+"           and into the AlignCtrl variables.
+fun! Align#AlignPop()
+"  call Dfunc("Align#AlignPop()")
+
+  " sanity checks
+  if !exists("s:AlignCtrlStackQty")
+   echoerr "AlignPush needs to be used prior to AlignPop"
+"   call Dret("Align#AlignPop <> : AlignPush needs to have been called first")
+   return ""
+  endif
+  if s:AlignCtrlStackQty <= 0
+   unlet s:AlignCtrlStackQty
+   echoerr "AlignPush needs to be used prior to AlignPop"
+"   call Dret("Align#AlignPop <> : AlignPop needs to have been called first")
+   return ""
+  endif
+
+  " pop top of AlignCtrlStack and pass value to AlignCtrl
+  let retval=s:AlignCtrlStack_{s:AlignCtrlStackQty}
+  unlet s:AlignCtrlStack_{s:AlignCtrlStackQty}
+  call Align#AlignCtrl(retval)
+
+  " pop G pattern stack
+  if s:AlignGPat_{s:AlignCtrlStackQty} != ""
+   call Align#AlignCtrl('g',s:AlignGPat_{s:AlignCtrlStackQty})
+  else
+   call Align#AlignCtrl('g')
+  endif
+  unlet s:AlignGPat_{s:AlignCtrlStackQty}
+
+  " pop V pattern stack
+  if s:AlignVPat_{s:AlignCtrlStackQty} != ""
+   call Align#AlignCtrl('v',s:AlignVPat_{s:AlignCtrlStackQty})
+  else
+   call Align#AlignCtrl('v')
+  endif
+
+  unlet s:AlignVPat_{s:AlignCtrlStackQty}
+  let s:AlignCtrlStackQty= s:AlignCtrlStackQty - 1
+
+"  call Dret("Align#AlignPop <".retval."> : AlignCtrlStackQty=".s:AlignCtrlStackQty)
+  return retval
+endfun
+
+" ---------------------------------------------------------------------
+" Align#AlignReplaceQuotedSpaces: {{{1
+fun! Align#AlignReplaceQuotedSpaces() 
+"  call Dfunc("AlignReplaceQuotedSpaces()")
+
+  let l:line          = getline(line("."))
+  if exists("g:Align_xstrlen") && g:Align_xstrlen
+   let l:linelen      = s:Strlen(l:line)
+  else
+   let l:linelen      = strlen(l:line)
+  endif
+  let l:startingPos   = 0
+  let l:startQuotePos = 0
+  let l:endQuotePos   = 0
+  let l:spacePos      = 0
+  let l:quoteRe       = '\\\@<!"'
+
+"  "call Decho("in replace spaces.  line=" . line('.'))
+  while (1)
+    let l:startQuotePos = match(l:line, l:quoteRe, l:startingPos)
+    if (l:startQuotePos < 0) 
+"      "call Decho("No more quotes to the end of line")
+      break
+    endif
+    let l:endQuotePos = match(l:line, l:quoteRe, l:startQuotePos + 1)
+    if (l:endQuotePos < 0)
+"      "call Decho("Mismatched quotes")
+      break
+    endif
+    let l:spaceReplaceRe = '^.\{' . (l:startQuotePos + 1) . '}.\{-}\zs\s\ze.*.\{' . (linelen - l:endQuotePos) . '}$'
+"    "call Decho('spaceReplaceRe="' . l:spaceReplaceRe . '"')
+    let l:newStr = substitute(l:line, l:spaceReplaceRe, '%', '')
+    while (l:newStr != l:line)
+"      "call Decho('newstr="' . l:newStr . '"')
+      let l:line = l:newStr
+      let l:newStr = substitute(l:line, l:spaceReplaceRe, '%', '')
+    endwhile
+    let l:startingPos = l:endQuotePos + 1
+  endwhile
+  call setline(line('.'), l:line)
+
+"  call Dret("AlignReplaceQuotedSpaces")
+endfun
+
+" ---------------------------------------------------------------------
+" s:QArgSplitter: to avoid \ processing by <f-args>, <q-args> is needed. {{{1
+" However, <q-args> doesn't split at all, so this function returns a list
+" of arguments which has been:
+"   * split at whitespace
+"   * unless inside "..."s.  One may escape characters with a backslash inside double quotes.
+" along with a leading length-of-list.
+"
+"   Examples:   %Align "\""   will align on "s
+"               %Align " "    will align on spaces
+"
+" The resulting list:  qarglist[0] corresponds to a:0
+"                      qarglist[i] corresponds to a:{i}
+fun! s:QArgSplitter(qarg)
+"  call Dfunc("s:QArgSplitter(qarg<".a:qarg.">)")
+
+  if a:qarg =~ '".*"'
+   " handle "..." args, which may include whitespace
+   let qarglist = []
+   let args     = a:qarg
+"   call Decho("handle quoted arguments: args<".args.">")
+   while args != ""
+	let iarg   = 0
+	let arglen = strlen(args)
+"	call Decho("args[".iarg."]<".args[iarg]."> arglen=".arglen)
+	" find index to first not-escaped '"'
+	while args[iarg] != '"' && iarg < arglen
+	 if args[iarg] == '\'
+	  let args= strpart(args,1)
+	 endif
+	 let iarg= iarg + 1
+	endwhile
+"	call Decho("args<".args."> iarg=".iarg." arglen=".arglen)
+
+	if iarg > 0
+	 " handle left of quote or remaining section
+"	 call Decho("handle left of quote or remaining section")
+	 if args[iarg] == '"'
+	  let qarglist= qarglist + split(strpart(args,0,iarg-1))
+	 else
+	  let qarglist= qarglist + split(strpart(args,0,iarg))
+	 endif
+	 let args    = strpart(args,iarg)
+	 let arglen  = strlen(args)
+
+	elseif iarg < arglen && args[0] == '"'
+	 " handle "quoted" section
+"	 call Decho("handle quoted section")
+	 let iarg= 1
+	 while args[iarg] != '"' && iarg < arglen
+	  if args[iarg] == '\'
+	   let args= strpart(args,1)
+	  endif
+	  let iarg= iarg + 1
+	 endwhile
+"	 call Decho("args<".args."> iarg=".iarg." arglen=".arglen)
+	 if args[iarg] == '"'
+	  call add(qarglist,strpart(args,1,iarg-1))
+	  let args= strpart(args,iarg+1)
+	 else
+	  let qarglist = qarglist + split(args)
+	  let args     = ""
+	 endif
+	endif
+"	call Decho("qarglist".string(qarglist)." iarg=".iarg." args<".args.">")
+   endwhile
+
+  else
+   " split at all whitespace
+   let qarglist= split(a:qarg)
+  endif
+
+  let qarglistlen= len(qarglist)
+  let qarglist   = insert(qarglist,qarglistlen)
+"  call Dret("s:QArgSplitter ".string(qarglist))
+  return qarglist
+endfun
+
+" ---------------------------------------------------------------------
+" s:Strlen: this function returns the length of a string, even if its {{{1
+"           using two-byte etc characters.
+"           Currently, its only used if g:Align_xstrlen is set to a
+"           nonzero value.  Solution from Nicolai Weibull, vim docs
+"           (:help strlen()), Tony Mechelynck, and my own invention.
+fun! s:Strlen(x)
+"  call Dfunc("s:Strlen(x<".a:x.">")
+  if g:Align_xstrlen == 1
+   " number of codepoints (Latin a + combining circumflex is two codepoints)
+   " (comment from TM, solution from NW)
+   let ret= strlen(substitute(a:x,'.','c','g'))
+
+  elseif g:Align_xstrlen == 2
+   " number of spacing codepoints (Latin a + combining circumflex is one spacing 
+   " codepoint; a hard tab is one; wide and narrow CJK are one each; etc.)
+   " (comment from TM, solution from TM)
+   let ret=strlen(substitute(a:x, '.\Z', 'x', 'g')) 
+
+  elseif g:Align_xstrlen == 3
+   " virtual length (counting, for instance, tabs as anything between 1 and 
+   " 'tabstop', wide CJK as 2 rather than 1, Arabic alif as zero when immediately 
+   " preceded by lam, one otherwise, etc.)
+   " (comment from TM, solution from me)
+   let modkeep= &l:mod
+   exe "norm! o\<esc>"
+   call setline(line("."),a:x)
+   let ret= virtcol("$") - 1
+   d
+   let &l:mod= modkeep
+
+  else
+   " at least give a decent default
+   ret= strlen(a:x)
+  endif
+"  call Dret("s:Strlen ".ret)
+  return ret
+endfun
+
+" ---------------------------------------------------------------------
+" Set up default values: {{{1
+"call Decho("-- Begin AlignCtrl Initialization --")
+call Align#AlignCtrl("default")
+"call Decho("-- End AlignCtrl Initialization --")
+
+" ---------------------------------------------------------------------
+"  Restore: {{{1
+let &cpo= s:keepcpo
+unlet s:keepcpo
+" vim: ts=4 fdm=marker
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/autoload/AlignMaps.vim
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/autoload/AlignMaps.vim	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/autoload/AlignMaps.vim	(revision 21239)
@@ -0,0 +1,330 @@
+" AlignMaps.vim : support functions for AlignMaps
+"   Author: Charles E. Campbell, Jr.
+"   Date:   Mar 03, 2009
+" Version:           41
+" ---------------------------------------------------------------------
+"  Load Once: {{{1
+if &cp || exists("g:loaded_AlignMaps")
+ finish
+endif
+let g:loaded_AlignMaps= "v41"
+let s:keepcpo         = &cpo
+set cpo&vim
+
+" =====================================================================
+" Functions: {{{1
+
+" ---------------------------------------------------------------------
+" AlignMaps#WrapperStart: {{{2
+fun! AlignMaps#WrapperStart(vis) range
+"  call Dfunc("AlignMaps#WrapperStart(vis=".a:vis.")")
+
+  if a:vis
+   norm! '<ma'>
+  endif
+
+  if line("'y") == 0 || line("'z") == 0 || !exists("s:alignmaps_wrapcnt") || s:alignmaps_wrapcnt <= 0
+"   call Decho("wrapper initialization")
+   let s:alignmaps_wrapcnt    = 1
+   let s:alignmaps_keepgd     = &gdefault
+   let s:alignmaps_keepsearch = @/
+   let s:alignmaps_keepch     = &ch
+   let s:alignmaps_keepmy     = SaveMark("'y")
+   let s:alignmaps_keepmz     = SaveMark("'z")
+   let s:alignmaps_posn       = SaveWinPosn(0)
+   " set up fencepost blank lines
+   put =''
+   norm! mz'a
+   put! =''
+   ky
+   let s:alignmaps_zline      = line("'z")
+   exe "'y,'zs/@/\177/ge"
+  else
+"   call Decho("embedded wrapper")
+   let s:alignmaps_wrapcnt    = s:alignmaps_wrapcnt + 1
+   norm! 'yjma'zk
+  endif
+
+  " change some settings to align-standard values
+  set nogd
+  set ch=2
+  AlignPush
+  norm! 'zk
+"  call Dret("AlignMaps#WrapperStart : alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z"))
+endfun
+
+" ---------------------------------------------------------------------
+" AlignMaps#WrapperEnd:	{{{2
+fun! AlignMaps#WrapperEnd() range
+"  call Dfunc("AlignMaps#WrapperEnd() alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z"))
+
+  " remove trailing white space introduced by whatever in the modification zone
+  'y,'zs/ \+$//e
+
+  " restore AlignCtrl settings
+  AlignPop
+
+  let s:alignmaps_wrapcnt= s:alignmaps_wrapcnt - 1
+  if s:alignmaps_wrapcnt <= 0
+   " initial wrapper ending
+   exe "'y,'zs/\177/@/ge"
+
+   " if the 'z line hasn't moved, then go ahead and restore window position
+   let zstationary= s:alignmaps_zline == line("'z")
+
+   " remove fencepost blank lines.
+   " restore 'a
+   norm! 'yjmakdd'zdd
+
+   " restore original 'y, 'z, and window positioning
+   call RestoreMark(s:alignmaps_keepmy)
+   call RestoreMark(s:alignmaps_keepmz)
+   if zstationary > 0
+    call RestoreWinPosn(s:alignmaps_posn)
+"    call Decho("restored window positioning")
+   endif
+
+   " restoration of options
+   let &gd= s:alignmaps_keepgd
+   let &ch= s:alignmaps_keepch
+   let @/ = s:alignmaps_keepsearch
+
+   " remove script variables
+   unlet s:alignmaps_keepch
+   unlet s:alignmaps_keepsearch
+   unlet s:alignmaps_keepmy
+   unlet s:alignmaps_keepmz
+   unlet s:alignmaps_keepgd
+   unlet s:alignmaps_posn
+  endif
+
+"  call Dret("AlignMaps#WrapperEnd : alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z"))
+endfun
+
+" ---------------------------------------------------------------------
+" AlignMaps#StdAlign: some semi-standard align calls {{{2
+fun! AlignMaps#StdAlign(mode) range
+"  call Dfunc("AlignMaps#StdAlign(mode=".a:mode.")")
+  if     a:mode == 1
+   " align on @
+"   call Decho("align on @")
+   AlignCtrl mIp1P1=l @
+   'a,.Align
+  elseif a:mode == 2
+   " align on @, retaining all initial white space on each line
+"   call Decho("align on @, retaining all initial white space on each line")
+   AlignCtrl mWp1P1=l @
+   'a,.Align
+  elseif a:mode == 3
+   " like mode 2, but ignore /* */-style comments
+"   call Decho("like mode 2, but ignore /* */-style comments")
+   AlignCtrl v ^\s*/[/*]
+   AlignCtrl mWp1P1=l @
+   'a,.Align
+  else
+   echoerr "(AlignMaps) AlignMaps#StdAlign doesn't support mode#".a:mode
+  endif
+"  call Dret("AlignMaps#StdAlign")
+endfun
+
+" ---------------------------------------------------------------------
+" AlignMaps#CharJoiner: joins lines which end in the given character (spaces {{{2
+"             at end are ignored)
+fun! AlignMaps#CharJoiner(chr)
+"  call Dfunc("AlignMaps#CharJoiner(chr=".a:chr.")")
+  let aline = line("'a")
+  let rep   = line(".") - aline
+  while rep > 0
+  	norm! 'a
+  	while match(getline(aline),a:chr . "\s*$") != -1 && rep >= 0
+  	  " while = at end-of-line, delete it and join with next
+  	  norm! 'a$
+  	  j!
+  	  let rep = rep - 1
+  	endwhile
+  	" update rep(eat) count
+  	let rep = rep - 1
+  	if rep <= 0
+  	  " terminate loop if at end-of-block
+  	  break
+  	endif
+  	" prepare for next line
+  	norm! jma
+  	let aline = line("'a")
+  endwhile
+"  call Dret("AlignMaps#CharJoiner")
+endfun
+
+" ---------------------------------------------------------------------
+" AlignMaps#Equals: supports \t= and \T= {{{2
+fun! AlignMaps#Equals() range
+"  call Dfunc("AlignMaps#Equals()")
+  'a,'zs/\s\+\([*/+\-%|&\~^]\==\)/ \1/e
+  'a,'zs@ \+\([*/+\-%|&\~^]\)=@\1=@ge
+  'a,'zs/==/\="\<Char-0x0f>\<Char-0x0f>"/ge
+  'a,'zs/\([!<>:]\)=/\=submatch(1)."\<Char-0x0f>"/ge
+  norm g'zk
+  AlignCtrl mIp1P1=l =
+  AlignCtrl g =
+  'a,'z-1Align
+  'a,'z-1s@\([*/+\-%|&\~^!=]\)\( \+\)=@\2\1=@ge
+  'a,'z-1s/\( \+\);/;\1/ge
+  if &ft == "c" || &ft == "cpp"
+"   call Decho("exception for ".&ft)
+   'a,'z-1v/^\s*\/[*/]/s/\/[*/]/@&@/e
+   'a,'z-1v/^\s*\/[*/]/s/\*\//@&/e
+   if exists("g:mapleader")
+    exe "norm 'zk"
+    call AlignMaps#StdAlign(1)
+   else
+    exe "norm 'zk"
+    call AlignMaps#StdAlign(1)
+   endif
+   'y,'zs/^\(\s*\) @/\1/e
+  endif
+  'a,'z-1s/\%x0f/=/ge
+  'y,'zs/ @//eg
+"  call Dret("AlignMaps#Equals")
+endfun
+
+" ---------------------------------------------------------------------
+" AlignMaps#Afnc: useful for splitting one-line function beginnings {{{2
+"            into one line per argument format
+fun! AlignMaps#Afnc()
+"  call Dfunc("AlignMaps#Afnc()")
+
+  " keep display quiet
+  let chkeep = &ch
+  let gdkeep = &gd
+  let vekeep = &ve
+  set ch=2 nogd ve=
+
+  " will use marks y,z ; save current values
+  let mykeep = SaveMark("'y")
+  let mzkeep = SaveMark("'z")
+
+  " Find beginning of function -- be careful to skip over comments
+  let cmmntid  = synIDtrans(hlID("Comment"))
+  let stringid = synIDtrans(hlID("String"))
+  exe "norm! ]]"
+  while search(")","bW") != 0
+"   call Decho("line=".line(".")." col=".col("."))
+   let parenid= synIDtrans(synID(line("."),col("."),1))
+   if parenid != cmmntid && parenid != stringid
+   	break
+   endif
+  endwhile
+  norm! %my
+  s/(\s*\(\S\)/(\r  \1/e
+  exe "norm! `y%"
+  s/)\s*\(\/[*/]\)/)\r\1/e
+  exe "norm! `y%mz"
+  'y,'zs/\s\+$//e
+  'y,'zs/^\s\+//e
+  'y+1,'zs/^/  /
+
+  " insert newline after every comma only one parenthesis deep
+  sil! exe "norm! `y\<right>h"
+  let parens   = 1
+  let cmmnt    = 0
+  let cmmntline= -1
+  while parens >= 1
+"   call Decho("parens=".parens." @a=".@a)
+   exe 'norm! ma "ay`a '
+   if @a == "("
+    let parens= parens + 1
+   elseif @a == ")"
+    let parens= parens - 1
+
+   " comment bypass:  /* ... */  or //...
+   elseif cmmnt == 0 && @a == '/'
+    let cmmnt= 1
+   elseif cmmnt == 1
+	if @a == '/'
+	 let cmmnt    = 2   " //...
+	 let cmmntline= line(".")
+	elseif @a == '*'
+	 let cmmnt= 3   " /*...
+	else
+	 let cmmnt= 0
+	endif
+   elseif cmmnt == 2 && line(".") != cmmntline
+	let cmmnt    = 0
+	let cmmntline= -1
+   elseif cmmnt == 3 && @a == '*'
+	let cmmnt= 4
+   elseif cmmnt == 4
+	if @a == '/'
+	 let cmmnt= 0   " ...*/
+	elseif @a != '*'
+	 let cmmnt= 3
+	endif
+
+   elseif @a == "," && parens == 1 && cmmnt == 0
+	exe "norm! i\<CR>\<Esc>"
+   endif
+  endwhile
+  norm! `y%mz%
+  sil! 'y,'zg/^\s*$/d
+
+  " perform substitutes to mark fields for Align
+  sil! 'y+1,'zv/^\//s/^\s\+\(\S\)/  \1/e
+  sil! 'y+1,'zv/^\//s/\(\S\)\s\+/\1 /eg
+  sil! 'y+1,'zv/^\//s/\* \+/*/ge
+  sil! 'y+1,'zv/^\//s/\w\zs\s*\*/ */ge
+  "                                                 func
+  "                    ws  <- declaration   ->    <-ptr  ->   <-var->    <-[array][]    ->   <-glop->      <-end->
+  sil! 'y+1,'zv/^\//s/^\s*\(\(\K\k*\s*\)\+\)\s\+\([(*]*\)\s*\(\K\k*\)\s*\(\(\[.\{-}]\)*\)\s*\(.\{-}\)\=\s*\([,)]\)\s*$/  \1@#\3@\4\5@\7\8/e
+  sil! 'y+1,'z+1g/^\s*\/[*/]/norm! kJ
+  sil! 'y+1,'z+1s%/[*/]%@&@%ge
+  sil! 'y+1,'z+1s%*/%@&%ge
+  AlignCtrl mIp0P0=l @
+  sil! 'y+1,'zAlign
+  sil! 'y,'zs%@\(/[*/]\)@%\t\1 %e
+  sil! 'y,'zs%@\*/% */%e
+  sil! 'y,'zs/@\([,)]\)/\1/
+  sil! 'y,'zs/@/ /
+  AlignCtrl mIlrp0P0= # @
+  sil! 'y+1,'zAlign
+  sil! 'y+1,'zs/#/ /
+  sil! 'y+1,'zs/@//
+  sil! 'y+1,'zs/\(\s\+\)\([,)]\)/\2\1/e
+
+  " Restore
+  call RestoreMark(mykeep)
+  call RestoreMark(mzkeep)
+  let &ch= chkeep
+  let &gd= gdkeep
+  let &ve= vekeep
+
+"  call Dret("AlignMaps#Afnc")
+endfun
+
+" ---------------------------------------------------------------------
+"  AlignMaps#FixMultiDec: converts a   type arg,arg,arg;   line to multiple lines {{{2
+fun! AlignMaps#FixMultiDec()
+"  call Dfunc("AlignMaps#FixMultiDec()")
+
+  " save register x
+  let xkeep   = @x
+  let curline = getline(".")
+"  call Decho("curline<".curline.">")
+
+  " Get the type.  I'm assuming one type per line (ie.  int x; double y;   on one line will not be handled properly)
+  let @x=substitute(curline,'^\(\s*[a-zA-Z_ \t][a-zA-Z0-9_ \t]*\)\s\+[(*]*\h.*$','\1','')
+"  call Decho("@x<".@x.">")
+
+  " transform line
+  exe 's/,/;\r'.@x.' /ge'
+
+  "restore register x
+  let @x= xkeep
+
+"  call Dret("AlignMaps#FixMultiDec : my=".line("'y")." mz=".line("'z"))
+endfun
+
+" ---------------------------------------------------------------------
+"  Restore: {{{1
+let &cpo= s:keepcpo
+unlet s:keepcpo
+" vim: ts=4 fdm=marker
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/colors/issm_black.vim
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/colors/issm_black.vim	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/colors/issm_black.vim	(revision 21239)
@@ -0,0 +1,86 @@
+" issm_black color scheme
+" table http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html
+
+"Set up coloring
+hi clear
+if exists("syntax_on")
+  syntax reset
+endif
+syntax on
+let colors_name = "issm_black"
+
+"preferred colors:
+"  0  : black
+"  9  : red
+" 15  : white
+" 69  : blue
+" 87  : cyan
+" 129 : dark purple
+" 202 : orange
+" 214 : light orange
+" 227 : yellow
+" 234 : very dark gray
+" 241 : dark gray
+" 244 : gray
+" 255 : light gray
+
+"                forground    background   style (reverse,bold,..)
+" General colors
+hi Normal        ctermfg=NONE ctermbg=NONE cterm=NONE
+hi NonText       ctermfg=129  ctermbg=NONE cterm=NONE
+hi Cursor        ctermfg=NONE ctermbg=NONE cterm=reverse
+hi LineNr        ctermfg=15   ctermbg=241  cterm=NONE
+hi VertSplit     ctermfg=241  ctermbg=241  cterm=NONE
+hi StatusLine    ctermfg=241  ctermbg=87   cterm=NONE
+hi StatusLineNC  ctermfg=87   ctermbg=241  cterm=NONE
+hi Folded        ctermfg=141  ctermbg=236  cterm=NONE
+hi Title         ctermfg=NONE ctermbg=NONE cterm=NONE
+hi Visual        ctermfg=NONE ctermbg=NONE cterm=reverse
+hi SpecialKey    ctermfg=NONE ctermbg=NONE cterm=NONE
+hi WildMenu      ctermfg=0    ctermbg=227  cterm=NONE
+hi PmenuSbar     ctermfg=0    ctermbg=129  cterm=NONE
+hi Error         ctermfg=15   ctermbg=129  cterm=NONE
+hi ErrorMsg      ctermfg=15   ctermbg=129  cterm=NONE
+hi WarningMsg    ctermfg=15   ctermbg=129  cterm=NONE
+
+" Message displayed in lower left, such as --INSERT--
+hi ModeMsg       ctermfg=0  ctermbg=87   cterm=BOLD
+if version >= 700 " Vim 7.x specific colors
+  hi CursorLine   ctermfg=NONE ctermbg=NONE cterm=BOLD
+  hi CursorColumn ctermfg=NONE ctermbg=NONE cterm=BOLD
+  hi MatchParen   ctermfg=87   ctermbg=241  cterm=reverse "matching parenthesis
+  hi Pmenu        ctermfg=0    ctermbg=15   cterm=NONE    "auto completion panel
+  hi PmenuSel     ctermfg=255  ctermbg=241  cterm=NONE
+  hi Search       ctermfg=0    ctermbg=220  cterm=NONE
+endif
+
+" Syntax highlighting
+hi Comment      ctermfg=244  ctermbg=NONE cterm=NONE
+hi String       ctermfg=120  ctermbg=NONE cterm=NONE
+hi Number       ctermfg=201  ctermbg=NONE cterm=NONE
+hi Keyword      ctermfg=9    ctermbg=NONE cterm=NONE  " matlab function
+hi PreProc      ctermfg=9    ctermbg=NONE cterm=NONE  " def undef include
+hi Conditional  ctermfg=220  ctermbg=NONE cterm=NONE  " if else end
+hi Todo         ctermfg=214  ctermbg=NONE cterm=NONE
+hi Constant     ctermfg=196  ctermbg=NONE cterm=NONE
+hi Identifier   ctermfg=9    ctermbg=NONE cterm=NONE
+hi Function     ctermfg=69   ctermbg=NONE cterm=NONE "functions 69 = pastel blue
+hi Type         ctermfg=87   ctermbg=NONE cterm=NONE "cterm matlab global
+hi Statement    ctermfg=69   ctermbg=NONE cterm=NONE "cd ls sed mv
+hi Special      ctermfg=202  ctermbg=NONE cterm=NONE " matlab '...'
+hi Delimiter    ctermfg=NONE ctermbg=NONE cterm=NONE " [ ]
+hi Operator     ctermfg=202  ctermbg=NONE cterm=NONE " == &
+hi Directory    ctermfg=87   ctermbg=NONE cterm=NONE " == & 
+
+"Specific for diff
+hi DiffAdd      cterm=none ctermfg=0 ctermbg=119
+hi DiffChange   cterm=none ctermfg=0 ctermbg=228
+hi DiffText     cterm=none ctermfg=0 ctermbg=178
+hi DiffDelete   cterm=none ctermfg=0 ctermbg=197
+hi diffLine     cterm=bold ctermfg=241
+hi diffOldLine  cterm=none ctermfg=241
+hi diffOldFile  cterm=none ctermfg=241
+hi diffNewFile  cterm=none ctermfg=241
+hi diffAdded    cterm=none
+hi diffRemoved  cterm=none ctermfg=9
+hi diffChanged  cterm=none ctermfg=69
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/colors/issm_white.vim
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/colors/issm_white.vim	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/colors/issm_white.vim	(revision 21239)
@@ -0,0 +1,86 @@
+" issm_white scheme
+" table http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html
+
+"Set up coloring
+hi clear
+if exists("syntax_on")
+  syntax reset
+endif
+syntax on
+let colors_name = "issm_white"
+
+"preferred colors:
+"  0  : black
+"  9  : red
+" 15  : white
+" 20  : blue
+" 33  : cyan
+" 129 : dark purple
+" 202 : orange
+" 204 : light orange
+" 227 : yellow
+" 234 : very dark gray
+" 241 : dark gray
+" 244 : gray
+" 255 : light gray
+
+"                forground    background   style (reverse,bold,..)
+" General colors
+hi Normal        ctermfg=NONE ctermbg=NONE cterm=NONE
+hi NonText       ctermfg=129  ctermbg=NONE cterm=NONE
+hi Cursor        ctermfg=NONE ctermbg=NONE cterm=reverse
+hi LineNr        ctermfg=15   ctermbg=241  cterm=NONE
+hi VertSplit     ctermfg=241  ctermbg=241  cterm=NONE
+hi StatusLine    ctermfg=241  ctermbg=255  cterm=NONE
+hi StatusLineNC  ctermfg=255  ctermbg=241  cterm=NONE
+hi Folded        ctermfg=93   ctermbg=254  cterm=NONE
+hi Title         ctermfg=NONE ctermbg=NONE cterm=NONE
+hi Visual        ctermfg=NONE ctermbg=NONE cterm=reverse
+hi SpecialKey    ctermfg=NONE ctermbg=NONE cterm=NONE
+hi WildMenu      ctermfg=0    ctermbg=227  cterm=NONE
+hi PmenuSbar     ctermfg=0    ctermbg=129  cterm=NONE
+hi Error         ctermfg=15   ctermbg=129  cterm=NONE
+hi ErrorMsg      ctermfg=15   ctermbg=129  cterm=NONE
+hi WarningMsg    ctermfg=15   ctermbg=129  cterm=NONE
+
+" Message displayed in lower left, such as --INSERT--
+hi ModeMsg       ctermfg=0  ctermbg=227   cterm=BOLD
+if version >= 700 " Vim 7.x specific colors
+  hi CursorLine   ctermfg=NONE ctermbg=NONE cterm=BOLD
+  hi CursorColumn ctermfg=NONE ctermbg=NONE cterm=BOLD
+  hi MatchParen   ctermfg=33   ctermbg=241  cterm=reverse "matching parenthesis
+  hi Pmenu        ctermfg=0    ctermbg=15   cterm=NONE    "auto completion panel
+  hi PmenuSel     ctermfg=255  ctermbg=241  cterm=NONE
+  hi Search       ctermfg=0    ctermbg=220  cterm=NONE
+endif
+
+" Syntax highlighting
+hi Comment      ctermfg=241  ctermbg=NONE cterm=NONE
+hi String       ctermfg=28   ctermbg=NONE cterm=NONE
+hi Number       ctermfg=201  ctermbg=NONE cterm=NONE
+hi Keyword      ctermfg=9    ctermbg=NONE cterm=NONE  " matlab function
+hi PreProc      ctermfg=9    ctermbg=NONE cterm=NONE  " def undef include
+hi Conditional  ctermfg=220  ctermbg=NONE cterm=NONE  " if else end
+hi Todo         ctermfg=204  ctermbg=NONE cterm=NONE
+hi Constant     ctermfg=196  ctermbg=NONE cterm=NONE
+hi Identifier   ctermfg=9    ctermbg=NONE cterm=NONE
+hi Function     ctermfg=20   ctermbg=NONE cterm=NONE "functions 20 = pastel blue
+hi Type         ctermfg=33   ctermbg=NONE cterm=NONE "cterm matlab global
+hi Statement    ctermfg=20   ctermbg=NONE cterm=NONE "cd ls sed mv
+hi Special      ctermfg=202  ctermbg=NONE cterm=NONE " matlab '...'
+hi Delimiter    ctermfg=NONE ctermbg=NONE cterm=NONE " [ ]
+hi Operator     ctermfg=202  ctermbg=NONE cterm=NONE " == &
+hi Directory    ctermfg=33   ctermbg=NONE cterm=NONE " == & 
+
+"Specific for diff
+hi DiffAdd      cterm=none ctermfg=0 ctermbg=119
+hi DiffChange   cterm=none ctermfg=0 ctermbg=228
+hi DiffText     cterm=none ctermfg=0 ctermbg=178
+hi DiffDelete   cterm=none ctermfg=0 ctermbg=197
+hi diffLine     cterm=bold ctermfg=241
+hi diffOldLine  cterm=none ctermfg=241
+hi diffOldFile  cterm=none ctermfg=241
+hi diffNewFile  cterm=none ctermfg=241
+hi diffAdded    cterm=none
+hi diffRemoved  cterm=none ctermfg=9
+hi diffChanged  cterm=none ctermfg=20
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/doc/Align.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/doc/Align.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/doc/Align.txt	(revision 21239)
@@ -0,0 +1,1469 @@
+*align.txt*	The Alignment Tool			Mar 04, 2009
+
+Author:    Charles E. Campbell, Jr.  <NdrOchip@ScampbellPfamily.AbizM>
+           (remove NOSPAM from Campbell's email first)
+Copyright: (c) 2004-2008 by Charles E. Campbell, Jr.	*Align-copyright*
+           The VIM LICENSE applies to Align.vim, AlignMaps.vim, and Align.txt
+           (see |copyright|) except use "Align and AlignMaps" instead of "Vim"
+           NO WARRANTY, EXPRESS OR IMPLIED.  USE AT-YOUR-OWN-RISK.
+
+==============================================================================
+1. Contents					*align* *align-contents* {{{1
+
+	1. Contents.................: |align-contents|
+	2. Alignment Manual.........: |align-manual|
+	3. Alignment Usage..........: |align-usage|
+	   Alignment Concepts.......: |align-concepts|
+	   Alignment Commands.......: |align-commands|
+	   Alignment Control........: |align-control|
+	     Separators.............: |alignctrl-separators|
+	     Initial Whitespace.....: |alignctrl-w| |alignctrl-W| |alignctrl-I|
+	     Justification..........: |alignctrl-l| |alignctrl-r| |alignctrl-c|
+	     Justification Control..: |alignctrl--| |alignctrl-+| |alignctrl-:|
+	     Cyclic/Sequential......: |alignctrl-=| |alignctrl-C|
+	     Separator Justification: |alignctrl-<| |alignctrl->| |alignctrl-||
+	     Line (de)Selection.....: |alignctrl-g| |alignctrl-v|
+	     Temporary Settings.....: |alignctrl-m|
+	     Padding................: |alignctrl-p| |alignctrl-P|
+	     Current Options........: |alignctrl-settings| |alignctrl-|
+	   Alignment................: |align-align|
+	4. Alignment Maps...........: |align-maps|
+	     \a,....................: |alignmap-a,|
+	     \a?....................: |alignmap-a?|
+	     \a<....................: |alignmap-a<|
+	     \abox..................: |alignmap-abox|
+	     \acom..................: |alignmap-acom|
+	     \anum..................: |alignmap-anum|
+	     \ascom.................: |alignmap-ascom|
+	     \adec..................: |alignmap-adec|
+	     \adef..................: |alignmap-adef|
+	     \afnc..................: |alignmap-afnc|
+	     \adcom.................: |alignmap-adcom|
+	     \aocom.................: |alignmap-aocom|
+	     \tsp...................: |alignmap-tsp|
+	     \tsq...................: |alignmap-tsq|
+	     \tt....................: |alignmap-tt|
+	     \t=....................: |alignmap-t=|
+	     \T=....................: |alignmap-T=|
+	     \Htd...................: |alignmap-Htd|
+	5. Alignment Tool History...: |align-history|
+
+==============================================================================
+2. Align Manual			*alignman* *alignmanual* *align-manual* {{{1
+
+	Align comes as a vimball; simply typing >
+		vim Align.vba.gz
+		:so %
+<	should put its components where they belong.  The components are: >
+		.vim/plugin/AlignPlugin.vim
+		.vim/plugin/AlignMapsPlugin.vim
+		.vim/plugin/cecutil.vim
+		.vim/autoload/Align.vim
+		.vim/autoload/AlignMaps.vim
+		.vim/doc/Align.txt
+<	To see a user's guide, see |align-userguide|
+	To see examples, see |alignctrl| and |alignmaps|
+>
+/=============+=========+=====================================================\
+||            \ Default/                                                     ||
+||  Commands   \ Value/                Explanation                           ||
+||              |    |                                                       ||
+++==============+====+=======================================================++
+||  AlignCtrl   |    |  =Clrc-+:pPIWw [..list-of-separator-patterns..]       ||
+||              |    +-------------------------------------------------------+|
+||              |    |  may be called as a command or as a function:         ||
+||              |    |  :AlignCtrl =lp0P0W & \\                              ||
+||              |    |  :call Align#AlignCtrl('=lp0P0W','&','\\')            ||
+||              |    |                                                       ||
+||              |    +-------------------------------------------------------++
+||   1st arg    |  = | =  all separator patterns are equivalent and are      ||
+||              |    |    simultaneously active. Patterns are |regexp|.      ||
+||              |    | C  cycle through separator patterns.  Patterns are    ||
+||              |    |    |regexp| and are active sequentially.              ||
+||              |    |                                                       ||
+||              |  < | <  left justify separator   Separators are justified, ||
+||              |    | >  right justify separator  too.  Separator styles    ||
+||              |    | |  center separator         are cyclic.               ||
+||              |    |                                                       ||
+||              |  l | l  left justify   Justification styles are always     ||
+||              |    | r  right justify  cyclic (ie. lrc would mean left j., ||
+||              |    | c  center         then right j., then center, repeat. ||
+||              |    | -  skip this separator                                ||
+||              |    | +  re-use last justification method                   ||
+||              |    | :  treat rest of text as a field                      ||
+||              |    |                                                       ||
+||              | p1 | p### pad separator on left  by # blanks               ||
+||              | P1 | P### pad separator on right by # blanks               ||
+||              |    |                                                       ||
+||              |  I | I  preserve and apply first line's leading white      ||
+||              |    |    space to all lines                                 ||
+||              |    | W  preserve leading white space on every line, even   ||
+||              |    |    if it varies from line to line                     ||
+||              |    | w  don't preserve leading white space                 ||
+||              |    |                                                       ||
+||              |    | g  second argument is a selection pattern -- only     ||
+||              |    |    align on lines that have a match  (inspired by     ||
+||              |    |    :g/selection pattern/command)                      ||
+||              |    | v  second argument is a selection pattern -- only     ||
+||              |    |    align on lines that _don't_ have a match (inspired ||
+||              |    |    by :v/selection pattern/command)                   ||
+||              |    |                                                       ||
+||              |    | m  Map support: AlignCtrl will immediately do an      ||
+||              |    |    AlignPush() and the next call to Align() will do   ||
+||              |    |    an AlignPop at the end.  This feature allows maps  ||
+||              |    |    to preserve user settings.                         ||
+||              |    |                                                       ||
+||              |    | default                                               ||
+||              |    |    AlignCtrl default                                  ||
+||              |    |    will clear the AlignCtrl                           ||
+||              |    |    stack & set the default:  AlignCtrl "Ilp1P1=" '='  ||
+||              |    |                                                       ||
+||              +----+-------------------------------------------------------+|
+||  More args   |  More arguments are interpreted as describing separators   ||
+||              +------------------------------------------------------------+|
+||   No args    |  AlignCtrl will display its current settings               ||
+||==============+============================================================+|
+||[range]Align  |   [..list-of-separators..]                                 ||
+||[range]Align! |   [AlignCtrl settings] [..list-of-separators..]            ||
+||              +------------------------------------------------------------+|
+||              |  Aligns text over the given range.  The range may be       ||
+||              |  selected via visual mode (v, V, or ctrl-v) or via         ||
+||              |  the command line.  The Align operation may be invoked     ||
+||              |  as a command or as a function; as a function, the first   ||
+||              |  argument is 0=separators only, 1=AlignCtrl option string  ||
+||              |  followed by a list of separators.                         ||
+||              |   :[range]Align                                            ||
+||              |   :[range]Align [list of separators]                       ||
+||              |   :[range]call Align#Align(0)                              ||
+||              |   :[range]call Align#Align(0,"list","of","separators",...) ||
+\=============================================================================/
+
+==============================================================================
+3. Alignment Usage	*alignusage* *align-usage* *align-userguide* {{{1
+
+
+ALIGNMENT CONCEPTS			*align-concept* *align-concepts* {{{2
+
+	The typical text to be aligned is considered to be:
+
+		* composed of two or more fields
+		* separated by one or more separator pattern(s):
+		* two or more lines
+>
+		ws field ws separator ws field ws separator ...
+		ws field ws separator ws field ws separator ...
+<
+	where "ws" stands for "white space" such as blanks and/or tabs,
+	and "fields" are arbitrary text.  For example, consider >
+
+		x= y= z= 3;
+		xx= yy= zz= 4;
+		zzz= yyy= zzz= 5;
+		a= b= c= 3;
+<
+	Assume that it is desired to line up all the "=" signs; these,
+	then, are the separators.  The fields are composed of all the
+	alphameric text.  Assuming they lie on lines 1-4, one may align
+	those "=" signs with: >
+		:AlignCtrl l
+		:1,4Align =
+<	The result is: >
+		x   = y   = z   = 3;
+		xx  = yy  = zz  = 4;
+		zzz = yyy = zzz = 5;
+		a   = b   = c   = 3;
+
+<	Note how each "=" sign is surrounded by a single space; the
+	default padding is p1P1 (p1 means one space before the separator,
+	and P1 means one space after it).  If you wish to change the
+	padding, say to no padding, use  (see |alignctrl-p|) >
+		:AlignCtrl lp0P0
+
+<	Next, note how each field is left justified; that's what the "l"
+	(a small letter "ell") does.  If right-justification of the fields
+	had been desired, an "r" could've been used: >
+		:AlignCtrl r
+<	yielding >
+		  x =   y =   z = 3;
+		 xx =  yy =  zz = 4;
+		zzz = yyy = zzz = 5;
+		  a =   b =   c = 3;
+<	There are many more options available for field justification: see
+	|alignctrl-c| and |alignctrl--|.
+
+	Separators, although commonly only one character long, are actually
+	specified by regular expressions (see |regexp|), and one may left
+	justify, right justify, or center them, too (see |alignctrl-<|).
+
+	Assume that for some reason a left-right-left-right-... justification
+	sequence was wished.  This wish is simply achieved with >
+		:AlignCtrl lr
+		:1,4Align =
+<	because the justification commands are considered to be "cylic"; ie.
+	lr is the same as lrlrlrlrlrlrlr...
+
+	There's a lot more discussed under |alignctrl|; hopefully the examples
+	there will help, too.
+
+
+ALIGNMENT COMMANDS			*align-command* *align-commands* {{{2
+
+        The <Align.vim> script includes two primary commands and two
+	minor commands:
+
+	  AlignCtrl : this command/function sets up alignment options
+	              which persist until changed for later Align calls.
+		      It controls such things as: how to specify field
+		      separators, initial white space, padding about
+		      separators, left/right/center justification, etc. >
+			ex.  AlignCtrl wp0P1
+                             Interpretation: during subsequent alignment
+			     operations, preserve each line's initial
+			     whitespace.  Use no padding before separators
+			     but provide one padding space after separators.
+<
+	  Align     : this command/function operates on the range given it to
+		      align text based on one or more separator patterns.  The
+		      patterns may be provided via AlignCtrl or via Align
+		      itself. >
+
+			ex. :%Align ,
+			    Interpretation: align all commas over the entire
+			    file.
+<		      The :Align! format permits alignment control commands
+		      to precede the alignment patterns. >
+			ex. :%Align! p2P2 =
+<		      This will align all "=" in the file with two padding
+		      spaces on both sides of each "=" sign.
+
+		      NOTE ON USING PATTERNS WITH ALIGN:~
+		      Align and AlignCtrl use |<q-args>| to obtain their
+		      input patterns and they use an internal function to
+		      split arguments at whitespace unless inside "..."s.
+		      One may escape characters inside a double-quote string
+		      by preceding such characters with a backslash.
+
+	  AlignPush : this command/function pushes the current AlignCtrl
+	              state onto an internal stack. >
+			ex. :AlignPush
+			    Interpretation: save the current AlignCtrl
+			    settings, whatever they may be.  They'll
+			    also remain as the current settings until
+			    AlignCtrl is used to change them.
+<
+	  AlignPop  : this command/function pops the current AlignCtrl
+	              state from an internal stack. >
+			ex. :AlignPop
+			    Interpretation: presumably AlignPush was
+			    used (at least once) previously; this command
+			    restores the AlignCtrl settings when AlignPush
+			    was last used.
+<	              Also see |alignctrl-m| for a way to automatically do
+	              an AlignPop after an Align (primarily this is for maps).
+
+ALIGNMENT OPTIONS			*align-option* *align-options* {{{2
+    *align-utf8* *align-utf* *align-codepoint* *align-strlen* *align-multibyte*
+
+	For those of you who are using 2-byte (or more) characters such as are
+	available with utf-8, Align now provides a special option which you
+	may choose based upon your needs:
+
+	Use Built-in strlen() ~
+>
+			let g:Align_xstrlen= 0
+
+<       This is the fastest method, but it doesn't handle multibyte characters
+	well.  It is the default for:
+
+	  enc=latin1
+	  vim compiled without multi-byte support
+	  $LANG is en_US.UTF-8 (assuming USA english)
+
+	Number of codepoints (Latin a + combining circumflex is two codepoints)~
+>
+			let g:Align_xstrlen= 1              (default)
+<
+	Number of spacing codepoints (Latin a + combining circumflex is one~
+	spacing codepoint; a hard tab is one; wide and narrow CJK are one~
+	each; etc.)~
+>
+			let g:Align_xstrlen= 2
+<
+	Virtual length (counting, for instance, tabs as anything between 1 and~
+	'tabstop', wide CJK as 2 rather than 1, Arabic alif as zero when~
+	immediately preceded by lam, one otherwise, etc.)~
+>
+			let g:Align_xstrlen= 3
+<
+	By putting one of these settings into your <.vimrc>, Align will use an
+	internal (interpreted) function to determine a string's length instead
+	of the Vim's built-in |strlen()| function.  Since the function is
+	interpreted, Align will run a bit slower but will handle such strings
+	correctly.  The last setting (g:Align_xstrlen= 3) probably will run
+	the slowest but be the most accurate.  (thanks to Tony Mechelynck for
+	these)
+
+
+ALIGNMENT CONTROL				*alignctrl* *align-control* {{{2
+
+	This command doesn't do the alignment operation itself; instead, it
+	controls subsequent alignment operation(s).
+
+	The first argument to AlignCtrl is a string which may contain one or
+	more alignment control settings.  Most of the settings are specified
+	by single letters; the exceptions are the p# and P# commands which
+	interpret a digit following the p or P as specifying padding about the
+	separator.
+
+	The typical text line is considered to be composed of two or more
+	fields separated by one or more separator pattern(s): >
+
+		ws field ws separator ws field ws separator ...
+<
+	where "ws" stands for "white space" such as blanks and/or tabs.
+
+	
+	SEPARATORS				*alignctrl-separators* {{{3
+
+	As a result, separators may not have white space (tabs or blanks) on
+	their outsides (ie.  ":  :" is fine as a separator, but " :: " is
+	not).  Usually such separators are not needed, although a map has been
+	provided which works around this limitation and aligns on whitespace
+	(see |alignmap-tsp|).
+
+	However, if you really need to have separators with leading or
+	trailing whitespace, consider handling them by performing a substitute
+	first (ie. s/  ::  /@/g), do the alignment on the temporary pattern
+	(ie. @), and then perform a substitute to revert the separators back
+	to their desired condition (ie. s/@/  ::  /g).
+
+	The Align#Align() function will first convert tabs over the region into
+	spaces and then apply alignment control.  Except for initial white
+	space, white space surrounding the fields is ignored.  One has three
+	options just for handling initial white space:
+
+
+	--- 						*alignctrl-w*
+	wWI 	INITIAL WHITE SPACE			*alignctrl-W* {{{3
+	--- 						*alignctrl-I*
+		w : ignore all selected lines' initial white space
+		W : retain all selected lines' initial white space
+		I : retain only the first line's initial white space and
+		    re-use it for subsequent lines
+
+	Example: Leading white space options: >
+                         +---------------+-------------------+-----------------+
+	                 |AlignCtrl w= :=|  AlignCtrl W= :=  | AlignCtrl I= := |
+      +------------------+---------------+-------------------+-----------------+
+      |     Original     |   w option    |     W option      |     I option    |
+      +------------------+---------------+-------------------+-----------------+
+      |   a := baaa      |a     := baaa  |   a      : = baaa |   a     := baaa |
+      | caaaa := deeee   |caaaa := deeee | caaaa    : = deeee|   caaaa := deeee|
+      |       ee := f    |ee    := f     |       ee : = f    |   ee    := f    |
+      +------------------+---------------+-------------------+-----------------+
+<
+	The original has at least one leading white space on every line.
+	Using Align with w eliminated each line's leading white space.
+	Using Align with W preserved  each line's leading white space.
+	Using Align with I applied the first line's leading white space
+	                   (three spaces) to each line.
+
+
+	------						*alignctrl-l*
+	lrc-+:	FIELD JUSTIFICATION			*alignctrl-r* {{{3
+	------						*alignctrl-c*
+
+	With "lrc", the fields will be left-justified, right-justified, or
+	centered as indicated by the justification specifiers (lrc).  The
+	"lrc" options are re-used by cycling through them as needed:
+
+		l   means llllll....
+		r   means rrrrrr....
+		lr  means lrlrlr....
+		llr means llrllr....
+
+     Example: Justification options: Align = >
+     +------------+-------------------+-------------------+-------------------+
+     |  Original  |  AlignCtrl l      | AlignCtrl r       | AlignCtrl lr      |
+     +------------+-------------------+-------------------+-------------------+
+     | a=bb=ccc=1 |a   = bb  = ccc = 1|  a =  bb = ccc = 1|a   =  bb = ccc = 1|
+     | ccc=a=bb=2 |ccc = a   = bb  = 2|ccc =   a =  bb = 2|ccc =   a = bb  = 2|
+     | dd=eee=f=3 |dd  = eee = f   = 3| dd = eee =   f = 3|dd  = eee = f   = 3|
+     +------------+-------------------+-------------------+-------------------+
+     | Alignment  |l     l     l     l|  r     r     r   r|l       r   l     r|
+     +------------+-------------------+-------------------+-------------------+
+<
+		AlignCtrl l : The = separator is repeatedly re-used, as the
+			      cycle only consists of one character (the "l").
+			      Every time left-justification is used for fields.
+		AlignCtrl r : The = separator is repeatedly re-used, as the
+			      cycle only consists of one character (the "l").
+			      Every time right-justification is used for fields
+		AlignCtrl lr: Again, the "=" separator is repeatedly re-used,
+			      but the fields are justified alternately between
+			      left and right.
+
+	Even more separator control is available.  With "-+:":
+
+	    - : skip treating the separator as a separator.   *alignctrl--*
+	    + : repeat use of the last "lrc" justification    *alignctrl-+*
+	    : : treat the rest of the line as a single field  *alignctrl-:*
+
+     Example: More justification options:  Align = >
+     +------------+---------------+--------------------+---------------+
+     |  Original  |  AlignCtrl -l | AlignCtrl rl+      | AlignCtrl l:  |
+     +------------+---------------+--------------------+---------------+
+     | a=bb=ccc=1 |a=bb   = ccc=1 |  a = bb  = ccc = 1 |a   = bb=ccc=1 |
+     | ccc=a=bb=2 |ccc=a  = bb=2  |ccc = a   = bb  = 2 |ccc = a=bb=2   |
+     | dd=eee=f=3 |dd=eee = f=3   | dd = eee = f   = 3 |dd  = eee=f=3  |
+     +------------+---------------+--------------------+---------------+
+     | Alignment  |l        l     |  r   l     l     l |l     l        |
+     +------------+---------------+--------------------+---------------+
+<
+	In the first example in "More justification options":
+
+	  The first "=" separator is skipped by the "-" specification,
+	  and so "a=bb", "ccc=a", and "dd=eee" are considered as single fields.
+
+	  The next "=" separator has its (left side) field left-justified.
+	  Due to the cyclic nature of separator patterns, the "-l"
+	  specification is equivalent to "-l-l-l ...".
+
+	  Hence the next specification is a "skip", so "ccc=1", etc are fields.
+
+	In the second example in "More justification options":
+
+	  The first field is right-justified, the second field is left
+	  justified, and all remaining fields repeat the last justification
+	  command (ie. they are left justified, too).
+
+	  Hence rl+ is equivalent to         rlllllllll ...
+	  (whereas plain rl is equivalent to rlrlrlrlrl ... ).
+
+	In the third example in "More justification options":
+
+	  The text following the first separator is treated as a single field.
+
+	Thus using the - and : operators one can apply justification to a
+	single separator.
+
+	ex. 1st separator only:    AlignCtrl l:
+	    2nd separator only:    AlignCtrl -l:
+	    3rd separator only:    AlignCtrl --l:
+	    etc.
+
+
+	---						     *alignctrl-=*
+	=C	CYCLIC VS ALL-ACTIVE SEPARATORS		     *alignctrl-C* {{{3
+	---
+
+	The separators themselves may be considered as equivalent and
+	simultaneously active ("=") or sequentially cycled through ("C").
+	Separators are regular expressions (|regexp|) and are specified as the
+	second, third, etc arguments.  When the separator patterns are
+	equivalent and simultaneously active, there will be one pattern
+	constructed: >
+
+		AlignCtrl ... pat1 pat2 pat3
+		\(pat1\|pat2\|pat3\)
+<
+	Each separator pattern is thus equivalent and simultaneously active.
+	The cyclic separator AlignCtrl option stores a list of patterns, only
+	one of which is active for each field at a time.
+
+	Example: Equivalent/Simultaneously-Active vs Cyclic Separators >
+ +-------------+------------------+---------------------+----------------------+
+ |   Original  | AlignCtrl = = + -| AlignCtrl = =       | AlignCtrl C = + -    |
+ +-------------+------------------+---------------------+----------------------+
+ |a = b + c - d|a = b + c - d     |a = b + c - d        |a = b         + c - d |
+ |x = y = z + 2|x = y = z + 2     |x = y         = z + 2|x = y = z     + 2     |
+ |w = s - t = 0|w = s - t = 0     |w = s - t     = 0    |w = s - t = 0         |
+ +-------------+------------------+---------------------+----------------------+
+<
+	The original is initially aligned with all operators (=+-) being
+	considered as equivalent and simultaneously active field separators.
+	Thus the "AlignCtrl = = + -" example shows no change.
+
+	The second example only accepts the '=' as a field separator;
+	consequently "b + c - d" is now a single field.
+
+	The third example illustrates cyclic field separators and is analyzed
+	in the following illustration: >
+
+	field1 separator field2    separator field3 separator field4
+	   a      =      b             +       c        -       d
+	   x      =      y = z         +       2
+	   w      =      s - t = 0
+<
+	The word "cyclic" is used because the patterns form a cycle of use; in
+	the above case, its = + - = + - = + - = + -...
+
+	Example: Cyclic separators >
+		Label : this is some text discussing ":"s | ex. abc:def:ghi
+		Label : this is some text with a ":" in it | ex. abc:def
+<
+	  apply AlignCtrl lWC : | |
+	        (select lines)Align >
+                Label : this is some text discussing ":"s  | ex. abc:def:ghi
+                Label : this is some text with a ":" in it | ex. abcd:efg
+<
+	In the current example,
+	  : is the first separator        So the first ":"s are aligned
+	  | is the second separator       but subsequent ":"s are not.
+	  | is the third separator        The "|"s are aligned, too.
+	  : is the fourth separator       Since there aren't two bars,
+	  | is the fifth separator        the subsequent potential cycles
+	  | is the sixth separator        don't appear.
+	 ...
+
+	In this case it would probably have been a better idea to have used >
+		AlignCtrl WCl: : |
+<	as that alignment control would guarantee that no more cycling
+	would be used after the vertical bar.
+
+	Example: Cyclic separators
+
+	    Original: >
+		a| b&c | (d|e) & f-g-h
+		aa| bb&cc | (dd|ee) & ff-gg-hh
+		aaa| bbb&ccc | (ddd|eee) & fff-ggg-hhh
+<
+	    AlignCtrl C | | & - >
+		a   | b&c     | (d|e)     & f   - g-h
+		aa  | bb&cc   | (dd|ee)   & ff  - gg-hh
+		aaa | bbb&ccc | (ddd|eee) & fff - ggg-hhh
+<
+	In this example,
+	the first and second separators are "|",
+	the third            separator  is  "&", and
+	the fourth           separator  is  "-",
+
+	(cycling)
+	the fifth and sixth  separators are "|",
+	the seventh          separator  is  "&", and
+	the eighth           separator  is  "-", etc.
+
+	Thus the first "&"s are (not yet) separators, and hence are treated as
+	part of the field.  Ignoring white space for the moment, the AlignCtrl
+	shown here means that Align will work with >
+
+	field | field | field & field - field | field | field & field - ...
+<
+
+	---						*alignctrl-<*
+	<>|	SEPARATOR JUSTIFICATION			*alignctrl->* {{{3
+	---						*alignctrl-|*
+
+	Separators may be of differing lengths as shown in the example below.
+	Hence they too may be justified left, right, or centered.
+	Furthermore, separator justification specifications are cyclic:
+
+		<  means <<<<<...    justify separator(s) to the left
+		>  means >>>>>...    justify separator(s) to the right
+		|  means |||||...    center separator(s)
+
+	Example: Separator Justification: Align -\+ >
+				+-----------------+
+				|    Original     |
+				+-----------------+
+				| a - bbb - c     |
+				| aa -- bb -- ccc |
+				| aaa --- b --- cc|
+	+---------------------+-+-----------------+-+---------------------+
+	|     AlignCtrl <     |     AlignCtrl >     |     AlignCtrl |     |
+	+---------------------+---------------------+---------------------+
+	| a   -   bbb -   c   | a     - bbb   - c   | a    -  bbb  -  c   |
+	| aa  --  bb  --  ccc | aa   -- bb   -- ccc | aa  --  bb  --  ccc |
+	| aaa --- b   --- cc  | aaa --- b   --- cc  | aaa --- b   --- cc  |
+	+---------------------+---------------------+---------------------+
+<
+
+	---						*alignctrl-g*
+	gv	SELECTIVE APPLICATION			*alignctrl-v* {{{3
+	---
+
+
+	These two options provide a way to select (g) or to deselect (v) lines
+	based on a pattern.  Ideally :g/pat/Align  would work; unfortunately
+	it results in Align#Align() being called on each line satisfying the
+	pattern separately. >
+
+		AlignCtrl g pattern
+<
+	Align will only consider those lines which have the given pattern. >
+
+		AlignCtrl v pattern
+<
+	Align will only consider those lines without the given pattern.  As an
+	example of use, consider the following example: >
+
+				           :AlignCtrl v ^\s*/\*
+	  Original          :Align =       :Align =
+	+----------------+------------------+----------------+
+	|one= 2;         |one     = 2;      |one   = 2;      |
+	|three= 4;       |three   = 4;      |three = 4;      |
+	|/* skip=this */ |/* skip = this */ |/* skip=this */ |
+	|five= 6;        |five    = 6;      |five  = 6;      |
+	+----------------+------------------+----------------+
+<
+	The first "Align =" aligned with all "="s, including that one in the
+	"skip=this" comment.
+
+	The second "Align =" had a AlignCtrl v-pattern which caused it to skip
+	(ignore) the "skip=this" line when aligning.
+	
+	To remove AlignCtrl's g and v patterns, use (as appropriate) >
+
+		AlignCtrl g
+		AlignCtrl v
+<
+	To see what g/v patterns are currently active, just use the reporting
+	capability of an unadorned call to AlignCtrl: >
+
+		AlignCtrl
+<
+
+	---
+	 m	MAP SUPPORT				*alignctrl-m* {{{3
+	---
+
+	This option primarily supports the development of maps.  The
+	Align#AlignCtrl() call will first do an Align#AlignPush() (ie. retain
+	current alignment control settings).  The next Align#Align() will, in
+	addition to its alignment job, finish up with an Align#AlignPop().
+	Thus the Align#AlignCtrl settings that follow the "m" are only
+	temporarily in effect for just the next Align#Align().
+
+
+	---
+	p###						*alignctrl-p*
+	P###	PADDING					*alignctrl-P* {{{3
+	---
+
+	These two options control pre-padding and post-padding with blanks
+	about the separator.  One may pad separators with zero to nine spaces;
+	the padding number(s) is/are treated as a cyclic parameter.  Thus one
+	may specify padding separately for each field or re-use a padding
+	pattern. >
+
+	Example:          AlignCtrl p102P0
+	+---------+----------------------------------+
+	| Original| a=b=c=d=e=f=g=h=1                |
+        | Align = | a =b=c  =d =e=f  =g =h=1         |
+        +---------+----------------------------------+
+	| prepad  |   1 0   2  1 0   2  1 0          |
+        +---------+----------------------------------+
+<
+	This example will cause Align to:
+
+		pre-pad the first  "=" with a single blank,
+		pre-pad the second "=" with no blanks,
+		pre-pad the third  "=" with two blanks,
+		pre-pad the fourth "=" with a single blank,
+		pre-pad the fifth  "=" with no blanks,
+		pre-pad the sixth  "=" with two blanks,
+	        etc.
+
+	---------------				*alignctrl-settings*
+	No option given		DISPLAY STATUS	*alignctrl-*		{{{3
+	---------------				*alignctrl-no-option*
+
+	AlignCtrl, when called with no arguments, will display the current
+	alignment control settings.  A typical display is shown below: >
+
+		AlignCtrl<=> qty=1 AlignStyle<l> Padding<1|1>
+		Pat1<\(=\)>
+<
+	Interpreting, this means that the separator patterns are all
+	equivalent; in this case, there's only one (qty=1).  Fields will be
+	padded on the right with spaces (left justification), and separators
+	will be padded on each side with a single space.
+
+	To change one of these items, see:
+
+	  AlignCtrl......|alignctrl|
+	  qty............|align-concept|
+	  AlignStyle.....|alignctrl--| |alignctrl-+| |alignctrl-:||alignctrl-c|
+	  Padding........|alignctrl-p| |alignctrl-P|
+
+	One may get a string which can be fed back into AlignCtrl: >
+
+		:let alignctrl= Align#AlignCtrl()
+<
+	This form will put a string describing the current AlignCtrl options,
+	except for the "g" and "v" patterns, into a variable.  The
+	Align#AlignCtrl() function will still echo its settings, however.  One
+	can feed any non-supported "option" to AlignCtrl() to prevent this,
+	however: >
+
+		:let alignctrl= Align#AlignCtrl("d")
+<
+
+ALIGNMENT						*align-align* {{{2
+
+	Once the alignment control has been determined, the user specifies a
+	range of lines for the Align command/function to do its thing.
+	Alignment is often done on a line-range basis, but one may also
+	restrict alignment to a visual block using ctrl-v.  For any visual
+	mode, one types the colon (:) and then "Align".  One may, of course,
+	specify a range of lines: >
+
+		:[range]Align [list-of-separators]
+<
+	where the |:range| is the usual Vim-powered set of possibilities; the
+	list of separators is the same as the AlignCtrl capability.  There is
+	only one list of separators, but either AlignCtrl or Align can be used
+	to specify that list.
+
+	An alternative form of the Align command can handle both alignment
+	control and the separator list: >
+
+		:[range]Align! [alignment-control-string] [list-of-separators]
+<
+	The alignment control string will be applied only for this particular
+	application of Align (it uses |alignctrl-m|).  The "g pattern" and
+	"v pattern" alignment controls (see |alignctrl-g| and |alignctrl-v|)
+	are also available via this form of the Align command.
+
+	Align makes two passes over the text to be aligned.  The first pass
+	determines how many fields there are and determines the maximum sizes
+	of each field; these sizes are then stored in a vector.  The second
+	pass pads the field (left/right/centered as specified) to bring its
+	length up to the maximum size of the field.  Then the separator and
+	its AlignCtrl-specified padding is appended.
+
+		Pseudo-Code:~
+		 During pass 1
+		 | For all fields in the current line
+		 || Determine current separator
+		 || Examine field specified by current separator
+		 || Determine length of field and save if largest thus far
+		 Initialize newline based on initial whitespace option (wWI)
+		 During pass 2
+		 | For all fields in current line
+		 || Determine current separator
+		 || Extract field specified by current separator
+		 || Prepend/append padding as specified by AlignCtrl
+		 || (right/left/center)-justify to fit field into max-size field
+		 || Append separator with AlignCtrl-specified separator padding
+		 || Delete current line, install newly aligned line
+
+	The g and v AlignCtrl patterns cause the passes not to consider lines
+	for alignment, either by requiring that the g-pattern be present or
+	that the v-pattern not be present.
+
+	The whitespace on either side of a separator is ignored.
+
+
+==============================================================================
+4. Alignment Maps				*alignmaps* *align-maps* {{{1
+
+	There are a number of maps using Align#AlignCtrl() and Align#Align()
+	in the <AlignMapsPlugin.vim> file.  This file may also be put into the
+	plugins subdirectory.  Since AlignCtrl and Align supercede textab and
+	its <ttalign.vim> file, the maps either have a leading "t" (for
+	"textab") or the more complicated ones an "a" (for "alignment") for
+	backwards compatibility.
+
+	The maps are shown below with a leading backslash (\).  Actually, the
+	<Leader> construct is used (see |mapleader|), so the maps' leading
+	kick-off character is easily customized.
+
+	Furthermore, all AlignMapsPlugin.vim maps use the <Plug> construct (see
+	|<Plug>|and |usr_41.txt|).  Hence, if one wishes to override the
+	mapping entirely, one may do that, too.  As an example: >
+		map <Leader>ACOM	<Plug>AM_acom
+<	would have \ACOM do what \acom previously did (assuming that the
+	mapleader has been left at its default value of a backslash).
+
+	  \a,   : useful for breaking up comma-separated
+	          declarations prior to \adec			|alignmap-a,|
+	  \a(   : aligns ( and , (useful for prototypes)        *alignmap-a(*
+	  \a?   : aligns (...)? ...:... expressions on ? and :	|alignmap-a?|
+	  \a<   : aligns << and >> for c++			|alignmap-a<|
+	  \a=   : aligns := assignments   			|alignmap-a=|
+	  \abox : draw a C-style comment box around text lines	|alignmap-abox|
+	  \acom : useful for aligning comments			|alignmap-acom|
+	  \adcom: useful for aligning comments in declarations  |alignmap-adcom|
+	  \anum : useful for aligning numbers 			|alignmap-anum|
+	          NOTE: For the visual-mode use of \anum, <vis.vim> is needed!
+		    See http://mysite.verizon.net/astronaut/vim/index.html#VIS
+	  \aenum: align a European-style number			|alignmap-anum|
+	  \aunum: align a USA-style number			|alignmap-anum|
+	  \adec : useful for aligning declarations		|alignmap-adec|
+	  \adef : useful for aligning definitions		|alignmap-adef|
+	  \afnc : useful for aligning ansi-c style functions'
+	          argument lists				|alignmap-afnc|
+	  \adcom: a variant of \acom, restricted to comment     |alignmap-adcom|
+	          containing lines only, but also only for
+		  those which don't begin with a comment.
+		  Good for certain declaration styles.
+	  \aocom: a variant of \acom, restricted to comment     |alignmap-aocom|
+	          containing lines only
+	  \tab  : align a table based on tabs			*alignmap-tab*
+	          (converts to spaces)
+	  \tml  : useful for aligning the trailing backslashes	|alignmap-tml|
+	          used to continue lines (shell programming, etc)
+	  \tsp  : use Align to make a table separated by blanks	|alignmap-tsp|
+	          (left justified)
+	  \ts,  : like \t, but swaps whitespace on the right of *alignmap-ts,*
+	          the commas to their left
+	  \ts:  : like \t: but swaps whitespace on the right of *alignmap-ts:*
+	          the colons to their left
+	  \ts<  : like \t< but swaps whitespace on the right of *alignmap-ts<*
+	          the less-than signs to their left
+	  \ts=  : like \t= but swaps whitespace on the right of *alignmap-ts=*
+	          the equals signs to their left
+	  \Tsp  : use Align to make a table separated by blanks	|alignmap-Tsp|
+	          (right justified)
+	  \tsq  : use Align to make a table separated by blanks	|alignmap-tsq|
+	          (left justified) -- "strings" are not split up
+	  \tt   : useful for aligning LaTeX tabular tables	|alignmap-tt|
+	  \Htd  : tabularizes html tables:			|alignmap-Htd|
+	          <TR><TD> ...field... </TD><TD> ...field... </TD></TR>
+
+		  *alignmap-t|* *alignmap-t#* *alignmap-t,* *alignmap-t:*
+		  *alignmap-t;* *alignmap-t<* *alignmap-t?* *alignmap-t~*
+		  *alignmap-m=*
+	  \tx   : make a left-justified  alignment on
+	          character "x" where "x" is: ,:<=@|#		|alignmap-t=|
+	  \Tx   : make a right-justified alignment on
+	          character "x" where "x" is: ,:<=@#		|alignmap-T=|
+	  \m=   : like \t= but aligns with %... style comments
+
+	The leading backslash is actually <leader> (see |mapleader| for how to
+	customize the leader to be whatever you like).  These maps use the
+	<Align.vim> package and are defined in the <AlignMaps.vim> file.
+	Although the maps use AlignCtrl options, they typically use the "m"
+	option which pushes the options (AlignPush).  The associated Align
+	call which follows will then AlignPop the user's original options
+	back.
+
+	ALIGNMENT MAP USE WITH MARK AND MOVE~
+	In the examples below, one may select the text with a "ma" at the
+	first line, move to the last line, then execute the map.
+
+	ALIGNMENT MAP USE WITH VISUAL MODE~
+	Alternatively, one may select the text with the "V" visual mode
+	command.
+
+	ALIGNMENT MAP USE WITH MENUS~
+	One may use the mark-and-move style (ma, move, use the menu) or
+	the visual mode style (use the V visual mode, move, then select
+	the alignment map with menu selection).  The alignment map menu
+	items are under DrChip.AlignMaps .
+
+	One may even change the top level menu name to whatever is wished; by
+	default, its >
+		let g:DrChipTopLvlMenu= "DrChip."
+<	If you set the variable to the empty string (""), then no menu items
+	will be produced.  Of course, one must have a vim with +menu, the gui
+	must be running, and |'go'| must have the menu bar suboption (ie. m
+	must be included).
+
+	COMPLEX ALIGNMENT MAP METHOD~
+
+	For those complex alignment maps which do alignment on constructs
+	(e.g. \acom, \adec, etc), a series of substitutes is used to insert
+	"@" symbols in appropriate locations.  Align#Align() is then used to
+	do alignment directly on "@"s; then it is followed by further
+	substitutes to do clean-up.  However, the maps \WS and \WE, used by
+	every map supported by AlignMaps, protect any original embedded "@"
+	symbols by first converting them to <DEL> characters, doing the
+	requested job, and then converting them back. >
+
+	    \WS  calls AlignMaps#WrapperStart()
+	    \WE  calls AlignMaps#WrapperEnd()
+<
+
+	---------------------------
+	Alignment Map Examples: \a,			*alignmap-a,* {{{3
+	---------------------------
+
+	Original: illustrates comma-separated declaration splitting: >
+		int a,b,c;
+		struct ABC_str abc,def;
+<
+	Becomes: >
+		int a;
+		int b;
+		int c;
+		struct ABC_str abc;
+		struct ABC_str def;
+<
+
+	---------------------------
+	Alignment Map Examples: \a?			*alignmap-a?* {{{3
+	---------------------------
+
+	Original: illustrates ()?: aligning >
+		printf("<%s>\n",
+		  (x == ABC)? "abc" :
+		  (x == DEFG)? "defg" :
+		  (x == HIJKL)? "hijkl" : "???");
+<
+	Becomes:  select "(x == ..." lines, then \a? >
+		printf("<%s>\n",
+		  (x == ABC)?   "abc"   :
+		  (x == DEFG)?  "defg"  :
+		  (x == HIJKL)? "hijkl" : "???");
+<
+
+	---------------------------
+	Alignment Map Examples: \a<			*alignmap-a<* {{{3
+	---------------------------
+
+	Original: illustrating aligning of << and >> >
+		cin << x;
+		cin      << y;
+		cout << "this is x=" << x;
+		cout << "but y=" << y << "is not";
+<
+	Becomes:  select "(x == ..." lines, then \a< >
+		cin  << x;
+		cin  << y;
+		cout << "this is x=" << x;
+		cout << "but y="     << y  << "is not";
+<
+
+	---------------------------
+	Alignment Map Examples: \a=			*alignmap-a=* {{{3
+	---------------------------
+
+	Original: illustrates how to align := assignments >
+		aa:=bb:=cc:=1;
+		a:=b:=c:=1;
+		aaa:=bbb:=ccc:=1;
+<	
+	Bcomes: select the three assignment lines, then \a:= >
+		aa  := bb  := cc  := 1;
+		a   := b   := c   := 1;
+		aaa := bbb := ccc := 1;
+<
+
+	---------------------------
+	Alignment Map Examples: \abox			*alignmap-abox* {{{3
+	---------------------------
+
+	Original: illustrates how to comment-box some text >
+		This is some plain text
+		which will
+		soon be surrounded by a
+		comment box.
+<
+	Becomes:  Select "This..box." with ctrl-v, press \abox >
+		/***************************
+		 * This is some plain text *
+		 * which will              *
+		 * soon be surrounded by a *
+		 * comment box.            *
+		 ***************************/
+<
+
+	---------------------------
+	Alignment Map Examples: \acom			*alignmap-acom* {{{3
+	---------------------------
+
+	Original: illustrates aligning C-style comments (works for //, too) >
+		if(itworks) { /* this */
+			then= dothis; /* is a */
+			} /* set of three comments */
+<
+	Becomes: Select the three lines, press \acom >
+	        if(itworks) {         /* this                  */
+	                then= dothis; /* is a                  */
+	                }             /* set of three comments */
+<
+	Also see |alignmap-aocom|
+
+
+	---------------------------
+	Alignment Map Examples: \anum			*alignmap-anum* {{{3
+	---------------------------
+
+	Original: illustrates how to get numbers lined up >
+		 -1.234 .5678 -.901e-4
+		 1.234 5.678 9.01e-4
+		 12.34 56.78 90.1e-4
+		 123.4 567.8 901.e-4
+<
+	Becomes: Go to first line, ma.  Go to last line, press \anum >
+		  -1.234    .5678   -.901e-4
+		   1.234   5.678    9.01e-4
+		  12.34   56.78    90.1e-4
+		 123.4   567.8    901.e-4
+<
+	Original: >
+		 | -1.234 .5678 -.901e-4 |
+		 | 1.234 5.678 9.01e-4   |
+		 | 12.34 56.78 90.1e-4   |
+		 | 123.4 567.8 901.e-4   |
+<
+	Becomes: Select the numbers with ctrl-v (visual-block mode), >
+	         press \anum
+	         |  -1.234    .5678   -.901e-4 |
+	         |   1.234   5.678    9.01e-4  |
+	         |  12.34   56.78    90.1e-4   |
+	         | 123.4   567.8    901.e-4    |
+<
+	Original: >
+		 -1,234 ,5678 -,901e-4
+		 1,234 5,678 9,01e-4
+		 12,34 56,78 90,1e-4
+		 123,4 567,8 901,e-4
+<
+	Becomes: Go to first line, ma.  Go to last line, press \anum >
+		  -1,234    ,5678   -,901e-4
+		   1,234   5,678    9,01e-4
+		  12,34   56,78    90,1e-4
+		 123,4   567,8    901,e-4
+<
+	In addition:
+	  \aenum is provided to support European-style numbers
+	  \aunum is provided to support USA-style numbers
+
+	One may get \aenum behavior for \anum >
+	  let g:alignmaps_euronumber= 1
+<	or \aunum behavior for \anum if one puts >
+	  let g:alignmaps_usanumber= 1
+<	in one's <.vimrc>.
+
+
+	---------------------------
+	Alignment Map Examples: \ascom			*alignmap-ascom* {{{3
+	---------------------------
+
+	Original: >
+		/* A Title */
+		int x; /* this is a comment */
+		int yzw; /* this is another comment*/
+<
+	Becomes: Select the three lines, press \ascom >
+	        /* A Title */
+	        int x;   /* this is a comment       */
+	        int yzw; /* this is another comment */
+<
+
+	---------------------------
+	Alignment Map Examples: \adec			*alignmap-adec* {{{3
+	---------------------------
+
+	Original: illustrates how to clean up C/C++ declarations >
+		int     a;
+		float   b;
+		double *c=NULL;
+		char x[5];
+		struct  abc_str abc;
+		struct  abc_str *pabc;
+		int     a;              /* a   */
+		float   b;              /* b   */
+		double *c=NULL;              /* b   */
+		char x[5]; /* x[5] */
+		struct  abc_str abc;    /* abc */
+		struct  abc_str *pabc;    /* pabc */
+		static   int     a;              /* a   */
+		static   float   b;              /* b   */
+		static   double *c=NULL;              /* b   */
+		static   char x[5]; /* x[5] */
+		static   struct  abc_str abc;    /* abc */
+		static   struct  abc_str *pabc;    /* pabc */
+<
+	Becomes: Select the declarations text, then \adec >
+		int                    a;
+		float                  b;
+		double                *c    = NULL;
+		char                   x[5];
+		struct abc_str         abc;
+		struct abc_str        *pabc;
+		int                    a;           /* a    */
+		float                  b;           /* b    */
+		double                *c    = NULL; /* b    */
+		char                   x[5];        /* x[5] */
+		struct abc_str         abc;         /* abc  */
+		struct abc_str        *pabc;        /* pabc */
+		static int             a;           /* a    */
+		static float           b;           /* b    */
+		static double         *c    = NULL; /* b    */
+		static char            x[5];        /* x[5] */
+		static struct abc_str  abc;         /* abc  */
+		static struct abc_str *pabc;        /* pabc */
+<
+
+	---------------------------
+	Alignment Map Examples: \adef			*alignmap-adef* {{{3
+	---------------------------
+
+	Original: illustrates how to line up #def'initions >
+		#define ONE 1
+		#define TWO 22
+		#define THREE 333
+		#define FOUR 4444
+<
+	Becomes: Select four definition lines, apply \adef >
+	#	 define ONE   1
+	#	 define TWO   22
+	#	 define THREE 333
+	#	 define FOUR  4444
+<
+
+	---------------------------
+	Alignment Map Examples: \afnc			*alignmap-afnc* {{{3
+	---------------------------
+
+	This map is an exception to the usual selection rules.
+	It uses "]]" to find the function body's leading "{".
+	Just put the cursor anywhere in the function arguments and
+	the entire function declaration should be processed.
+
+	Because "]]" looks for that "{" in the first column, the
+	"original" and "becomes" examples are in the first column,
+	too.
+
+	Original: illustrates lining up ansi-c style function definitions >
+	int f(
+	  struct abc_str ***a, /* one */
+	  long *b, /* two */
+	  int c) /* three */
+	{
+	}
+<
+	Becomes: put cursor anywhere before the '{', press \afnc >
+	int f(
+	  struct abc_str ***a,	/* one   */
+	  long             *b,	/* two   */
+	  int               c)	/* three */
+	{
+	}
+<
+
+	---------------------------
+	Alignment Map Examples: \adcom			*alignmap-adcom* {{{3
+	---------------------------
+
+	Original: illustrates aligning comments that don't begin
+		lines (optionally after some whitespace). >
+		struct {
+			/* this is a test */
+			int x; /* of how */
+			double y; /* to use adcom */
+			};
+<
+	Becomes: Select the inside lines of the structure,
+		then press \adcom.  The comment-only
+		line is ignored but the other two comments
+		get aligned. >
+		struct {
+                        /* this is a test */
+                        int x;    /* of how       */
+                        double y; /* to use adcom */
+			};
+<
+
+	---------------------------
+	Alignment Map Examples: \aocom			*alignmap-aocom* {{{3
+	---------------------------
+
+	Original: illustrates how to align C-style comments (works for //, too)
+	          but restricted only to aligning with those lines containing
+		  comments.  See the difference from \acom (|alignmap-acom|). >
+		if(itworks) { /* this comment */
+			then= dothis;
+			} /* only appears on two lines */
+<
+	Becomes: Select the three lines, press \aocom >
+                if(itworks) { /* this comment              */
+                        then= dothis;
+                        }     /* only appears on two lines */
+<
+	Also see |alignmap-acom|
+
+
+	---------------------------			*alignmap-Tsp*
+	Alignment Map Examples: \tsp			*alignmap-tsp* {{{3
+	---------------------------
+
+	Normally Align can't use white spaces for field separators as such
+	characters are ignored surrounding field separators.  The \tsp and
+	\Tsp maps get around this limitation.
+
+	Original: >
+	 one two three four five
+	 six seven eight nine ten
+	 eleven twelve thirteen fourteen fifteen
+<
+	Becomes: Select the lines, \tsp >
+	 one    two    three    four     five
+	 six    seven  eight    nine     ten
+	 eleven twelve thirteen fourteen fifteen
+<
+	Becomes: Select the lines, \Tsp >
+	    one    two    three     four    five
+	    six  seven    eight     nine     ten
+	 eleven twelve thirteen fourteen fifteen
+<
+
+	---------------------------
+	Alignment Map Examples: \tsq			*alignmap-tsq* {{{3
+	---------------------------
+
+	The \tsp map is useful for aligning tables based on white space,
+	but sometimes one wants double-quoted strings to act as a single
+	object in spite of embedded spaces.  The \tsq map was invented
+	to support this. (thanks to Leif Wickland)
+
+	Original: >
+	 "one two" three
+	 four "five six"
+<
+	Becomes: Select the lines, \tsq >
+	 "one two" three
+	 four      "five six"
+<
+
+	---------------------------
+	Alignment Map Examples: \tt			*alignmap-tt* {{{3
+	---------------------------
+
+	Original: illustrates aligning a LaTex Table >
+	 \begin{tabular}{||c|l|r||}
+	 \hline\hline
+	   one&two&three\\ \hline
+	   four&five&six\\
+	   seven&eight&nine\\
+	 \hline\hline
+	 \end{tabular}
+<
+	Becomes: Select the three lines inside the table >
+	(ie. one..,four..,seven..) and press \tt
+	 \begin{tabular}{||c|l|r||}
+	 \hline\hline
+	   one   & two   & three \\ \hline
+	   four  & five  & six   \\
+	   seven & eight & nine  \\
+	 \hline\hline
+	 \end{tabular}
+<
+
+	----------------------------
+	Alignment Map Examples: \tml			*alignmap-tml* {{{3
+	----------------------------
+
+        Original:  illustrates aligning multi-line continuation marks >
+	one \
+	two three \
+	four five six \
+	seven \\ \
+	eight \nine \
+	ten \
+<
+        Becomes:  >
+        one           \
+        two three     \
+        four five six \
+        seven \\      \
+        eight \nine   \
+        ten           \
+<
+
+	---------------------------
+	Alignment Map Examples: \t=			*alignmap-t=* {{{3
+	---------------------------
+
+	Original: illustrates left-justified aligning of = >
+		aa=bb=cc=1;/*one*/
+		a=b=c=1;/*two*/
+		aaa=bbb=ccc=1;/*three*/
+<
+	Becomes: Select the three equations, press \t= >
+		aa  = bb  = cc  = 1; /* one   */
+		a   = b   = c   = 1; /* two   */
+		aaa = bbb = ccc = 1; /* three */
+<
+
+	---------------------------
+	Alignment Map Examples: \T=			*alignmap-T=* {{{3
+	---------------------------
+
+	Original: illustrates right-justified aligning of = >
+		aa=bb=cc=1; /* one */
+		a=b=c=1; /* two */
+		aaa=bbb=ccc=1; /* three */
+<
+	Becomes: Select the three equations, press \T= >
+                 aa =  bb =  cc = 1; /* one   */
+                  a =   b =   c = 1; /* two   */
+                aaa = bbb = ccc = 1; /* three */
+<
+
+	---------------------------
+	Alignment Map Examples: \Htd			*alignmap-Htd* {{{3
+	---------------------------
+
+	Original: for aligning tables with html >
+	  <TR><TD>...field one...</TD><TD>...field two...</TD></TR>
+	  <TR><TD>...field three...</TD><TD>...field four...</TD></TR>
+<
+	Becomes: Select <TR>... lines, press \Htd >
+	  <TR><TD> ...field one...   </TD><TD> ...field two...  </TD></TR>
+	  <TR><TD> ...field three... </TD><TD> ...field four... </TD></TR>
+<
+==============================================================================
+4. Alignment Tools' History				*align-history* {{{1
+
+ALIGN HISTORY								{{{2
+	35 : Nov 02, 2008 * g:loaded_AlignPlugin testing to prevent re-loading
+			    installed
+	     Nov 19, 2008 * new sanity check for an AlignStyle of just ":"
+	     Jan 08, 2009 * save&restore of |'mod'| now done with local
+			    variant
+	34 : Jul 08, 2008 * using :AlignCtrl before entering any alignment
+			    control commands was causing an error.
+	33 : Sep 20, 2007 * s:Strlen() introduced to support various ways
+			    used to represent characters and their effects
+			    on string lengths.  See |align-strlen|.
+			  * Align now accepts "..." -- so it can accept
+			    whitespace as separators.
+	32 : Aug 18, 2007 * uses |<q-args>| instead of |<f-args>| plus a
+	                    custom argument splitter to allow patterns with
+			    backslashes to slide in unaltered.
+	31 : Aug 06, 2007 * :[range]Align! [AlignCtrl settings] pattern(s)
+	                    implemented.
+	30 : Feb 12, 2007 * now uses |setline()|
+	29 : Jan 18, 2006 * cecutil updated to use keepjumps
+	     Feb 23, 2006 * Align now converted to vim 7.0 style using
+	                    auto-loading functions.
+	28 : Aug 17, 2005 * report option workaround
+	     Oct 24, 2005 * AlignCtrl l:  wasn't behaving as expected; fixed
+	27 : Apr 15, 2005 : cpo workaround
+	                    ignorecase workaround
+	26 : Aug 20, 2004 : loaded_align now also indicates version number
+	                    GetLatestVimScripts :AutoInstall: now supported
+	25 : Jul 27, 2004 : For debugging, uses Dfunc(), Dret(), and Decho()
+	24 : Mar 03, 2004 : (should've done this earlier!) visualmode(1)
+	                    not supported until v6.2, now Align will avoid
+			    calling it for earlier versions.  Visualmode
+			    clearing won't take place then, of course.
+	23 : Oct 07, 2003 : Included Leif Wickland's ReplaceQuotedSpaces()
+	                    function which supports \tsq
+	22 : Jan 29, 2003 : Now requires 6.1.308 or later to clear visualmode()
+	21 : Jan 10, 2003 : BugFix: similar problem to #19; new code
+	                    bypasses "norm! v\<Esc>" until initialization
+	                    is over.
+	20 : Dec 30, 2002 : BugFix: more on "unable to highlight" fixed
+	19 : Nov 21, 2002 : BugFix: some terminals gave an "unable to highlight"
+	                    message at startup; Hari Krishna Dara tracked it
+	                    down; a silent! now included to prevent noise.
+	18 : Nov 04, 2002 : BugFix: re-enabled anti-repeated-loading
+	17 : Nov 04, 2002 : BugFix: forgot to have AlignPush() push s:AlignSep
+	                    AlignCtrl now clears visual-block mode when used so
+	                    that Align won't try to use old visual-block
+	                    selection marks '< '>
+	16 : Sep 18, 2002 : AlignCtrl <>| options implemented (separator
+	                    justification)
+	15 : Aug 22, 2002 : bug fix: AlignCtrl's ":" now acts as a modifier of
+	                             the preceding alignment operator (lrc)
+	14 : Aug 20, 2002 : bug fix: AlignCtrl default now keeps &ic unchanged
+	                    bug fix: Align, on end-field, wasn't using correct
+	                    alignop bug fix: Align, on end-field, was appending
+			    padding
+	13 : Aug 19, 2002 : bug fix: zero-length g/v patterns are accepted
+	                    bug fix: always skip blank lines
+	                    bug fix: AlignCtrl default now also clears g and v
+	                             patterns
+	12 : Aug 16, 2002 : moved keep_ic above zero-length pattern checks
+	                    added "AlignCtrl default"
+	                    fixed bug with last field getting separator spaces
+	                    at end line
+	11 : Jul 08, 2002 : prevent separator patterns which match zero length
+	                    -+: included as additional alignment/justification
+	                    styles
+	10 : Jun 26, 2002 : =~# used instead of =~ (for matching case)
+	                    ignorecase option handled
+	 9 : Jun 25, 2002 : implemented cyclic padding
+
+ALIGNMENT MAP HISTORY					*alignmap-history* {{{2
+       v41    Nov 02, 2008   * g:loaded_AlignMapsPlugin testing to prevent
+			       re-loading installed
+			     * AlignMaps now use 0x0f (ctrl-p) for special
+			       character substitutions (instead of 0xff).
+			       Seems to avoid some problems with having to
+			       use Strlen().
+			     * bug fixed with \ts,
+			     * new maps: \ts; \ts, \ts: \ts< \ts= \a(
+       v40    Oct 21, 2008   * Modified AlignMaps so that its maps use <Plug>s
+			       and <script>s.  \t@ and related maps have been
+			       changed to call StdAlign() instead.  The
+			       WrapperStart function now takes an argument and
+			       handles being called via visual mode.  The
+			       former nmaps and vmaps have thus been replaced
+			       with a simple map.
+	      Oct 24, 2008   * broke AlignMaps into a plugin and autoload
+			       pair of scripts.
+	v39   Mar 06, 2008 : * \t= only does /* ... */ aligning when in *.c
+	                       *.cpp files.
+	v38   Aug 18, 2007 : * \tt altered so that it works with the new
+	                       use of |<q-args>| plus a custom argument
+			       splitter
+	v36   Sep 27, 2006 : * AlignWrapperStart() now has tests that marks
+	                       y and z are not set
+	      May 15, 2007   * \anum and variants improved
+	v35   Sep 01, 2006 : * \t= and cousins used "`"s.  They now use \xff
+	                       characters.
+	                     * \acom now works with doxygen style /// comments
+	                     * <char-0xff> used in \t= \T= \w= and \m= instead
+	                       of backquotes.
+	v34   Feb 23, 2006 : * AlignMaps now converted to vim 7.0 style using
+	                       auto-loading functions.
+	v33   Oct 12, 2005 : * \ts, now uses P1 in its AlignCtrl call
+	v32   Jun 28, 2005 : * s:WrapperStart() changed to AlignWrapperStart()
+	                       s:WrapperEnd() changed to AlignWrapperEnd()
+	                       These changes let the AlignWrapper...()s to be
+	                       used outside of AlignMaps.vim
+	v31   Feb 01, 2005 : * \adcom included, with help
+	                     * \a, now works across multiple lines with
+	                       different types
+	                     * AlignMaps now uses <cecutil.vim> for its mark and
+	                       window-position saving and restoration
+	      Mar 04, 2005   * improved \a,
+	      Apr 06, 2005   * included \aenum, \aunum, and provided
+	              g:alignmaps_{usa|euro]number} options
+	v30   Aug 20, 2004 : * \a, : handles embedded assignments and does \adec
+	                     * \acom  now can handle Doxygen-style comments
+	                     * g:loaded_alignmaps now also indicates version
+	                     * internal maps \WE and \WS are now re-entrant
+	v29   Jul 27, 2004 : * \tml aligns trailing multi-line single
+	                      backslashes (thanks to Raul Benavente!)
+	v28   May 13, 2004 : * \a, had problems with leading blanks; fixed!
+	v27   Mar 31, 2004 : * \T= was having problems with == and !=
+	                     * Fixed more problems with \adec
+	v26   Dec 09, 2003 : * \ascom now also ignores lines without comments
+	                     * \tt  \& now not matched
+	                     * \a< handles both << and >>
+	v25   Nov 14, 2003 : * included \anum (aligns numbers with periods and
+	                       commas).  \anum also supported with ctrl-v mode.
+	                     * \ts, \Ts, : (aligns on commas, then swaps leading
+	                       spaces with commas)
+	                     * \adec ignores preprocessor lines and lines with
+	                       with comments-only
+	v23   Sep 10, 2003 : * Bugfix for \afnc - no longer overwrites marks y,z
+	                     * fixed bug in \tsp, \tab, \Tsp, and \Tab - lines
+	                       containing backslashes were having their
+	                       backslashes removed.  Included Leif Wickland's
+	                       patch for \tsq.
+	                     * \adef now ignores lines holding comments only
+	v18   Aug 22, 2003 :   \a< lines up C++'s << operators
+	                       saves/restores gdefault option (sets to nogd)
+	                       all b:..varname.. are now b:alignmaps_..varname..
+	v17   Nov 04, 2002 :   \afnc now handles // comments correctly and
+	                       commas within comments
+	v16   Sep 10, 2002 :   changed : to :silent! for \adec
+	v15   Aug 27, 2002 :   removed some <c-v>s
+	v14   Aug 20, 2002 :   \WS, \WE mostly moved to functions, marks y and z
+	                       now restored
+	v11   Jul 08, 2002 :   \abox bug fix
+	 v9   Jun 25, 2002 :   \abox now handles leading initial whitespace
+	                   :   various bugfixes to \afnc, \T=, etc
+
+==============================================================================
+Modelines: {{{1
+vim:tw=78:ts=8:ft=help:fdm=marker:
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/doc/skeleton.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/doc/skeleton.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/doc/skeleton.txt	(revision 21239)
@@ -0,0 +1,153 @@
+*skeleton.txt*	Skeleton for newly created buffers
+
+Version 0.0.2
+Script ID: 2291
+Copyright (C) 2008 kana <http://whileimautomaton.net/>
+License: MIT license  {{{
+    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.
+}}}
+
+CONTENTS					*skeleton-contents*
+
+Introduction		|skeleton-introduction|
+Interface		|skeleton-interface|
+  Commands		  |skeleton-commands|
+  Events		  |skeleton-events|
+Bugs			|skeleton-bugs|
+Changelog		|skeleton-changelog|
+
+
+
+
+==============================================================================
+INTRODUCTION					*skeleton-introduction*
+
+*skeleton* is a Vim plugin to set up a skeleton for a newly created buffer.
+Once you put skeleton files into specific directories, appropriate ones will
+be automatically expanded for newly created buffers.
+
+- Skeleton files must be put in a directory named "xtr/skeleton/" which is
+  under any directory listed in 'runtimepath'.
+
+  For example: ~/.vim/xtr/skeleton/
+
+- The name of a skeleton file should be "{filetype}" or "{filetype}-{suffix}",
+  where {filetype} is the 'filetype' for a newly created buffer and {suffix}
+  is an arbitrary string.
+
+  The former "{filetype}" is used as the default skeleton file for that
+  'filetype'.  The latter "{filetype}-{suffix}" is used to override the
+  default one for some cases which are speicifed by user.
+
+  For example: ~/.vim/xtr/skeleton/vim ~/.vim/xtr/skeleton/vim-plugin
+
+- Whenever user starts to edit a file that doesn't exists:
+
+  1) Skeleton publish a |User:plugin-skeleton-detect| event.  This event can
+     be used to |:SkeletonLoad| a special skeleton file other than the default
+     one.
+  
+  2) If |:SkeletonLoad| is not done for the previous step, Skeleton executes
+     the following command:
+>
+	execute 'SkeletonLoad' &l:filetype
+<
+     This means a skeleton file named "{filetype}" in a directory
+     "xtr/skeleton/" which is under any directory listed in 'runtimepath' is
+     loaded as a skeleton file.
+
+     If there is no such skeleton file, nothing will be happened.
+
+
+Requirements:
+- Vim 7.1 or later
+
+Latest version:
+http://github.com/kana/config/commits/vim-skeleton
+
+
+
+
+==============================================================================
+INTERFACE					*skeleton-interface*
+
+------------------------------------------------------------------------------
+COMMANDS					*skeleton-commands*
+
+						*:SkeletonLoad*
+:SkeletonLoad[!] {name}
+	Load the skeleton file with {name} for the current buffer.
+
+	- If the current buffer is not a normal buffer,
+	  nothing will be happened.
+	- If "!" is not given and the current buffer is not empty,
+	  nothing will be happened.
+	- If "!" is given, existing content of the current buffer will be
+	  deleted before loading the specified skeleton.
+
+
+------------------------------------------------------------------------------
+EVENTS						*skeleton-events*
+
+User plugin-skeleton-detect			*User:plugin-skeleton-detect*
+	Event to override the default skeleton file.  User can set up
+	|:autocmd| for this event to |:SkeletonLoad| a special skeleton file
+	other than the default one.
+
+	Example: >
+		autocmd User plugin-skeleton-detect
+		\   if expand('%') =~# '\<plugin/.*\.vim$'
+		\ |   SkeletonLoad vim-plugin
+		\ | endif
+<
+
+
+
+==============================================================================
+BUGS						*skeleton-bugs*
+
+- There are many bugs around the world.
+
+
+
+
+==============================================================================
+CHANGELOG					*skeleton-changelog*
+
+0.0.2	2009-03-17T01:16:29+09:00
+	- Refine the document.
+	- |:SkeletonLoad|:
+	  - Support completion.
+	  - Allow to override existing content of a buffer with "!".
+
+0.0.1	2008-07-13T00:20:09+09:00
+	- Fix to suppress extra message if there is no autocmd for
+	  |User:plugin-skeleton-detect|.
+	- Fix not to do the default |:SkeletonLoad| if 'filetype' of the
+	  current buffer is unknown.
+
+0.0.0	2008-07-11T12:23:55+09:00
+	- Initial version.
+
+
+
+
+==============================================================================
+vim:tw=78:ts=8:ft=help:norl:fen:fdl=0:fdm=marker:
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/doc/tags
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/doc/tags	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/doc/tags	(revision 21239)
@@ -0,0 +1,85 @@
+Align-copyright	Align.txt	/*Align-copyright*
+align	Align.txt	/*align*
+align-align	Align.txt	/*align-align*
+align-codepoint	Align.txt	/*align-codepoint*
+align-command	Align.txt	/*align-command*
+align-commands	Align.txt	/*align-commands*
+align-concept	Align.txt	/*align-concept*
+align-concepts	Align.txt	/*align-concepts*
+align-contents	Align.txt	/*align-contents*
+align-control	Align.txt	/*align-control*
+align-history	Align.txt	/*align-history*
+align-manual	Align.txt	/*align-manual*
+align-maps	Align.txt	/*align-maps*
+align-multibyte	Align.txt	/*align-multibyte*
+align-option	Align.txt	/*align-option*
+align-options	Align.txt	/*align-options*
+align-strlen	Align.txt	/*align-strlen*
+align-usage	Align.txt	/*align-usage*
+align-userguide	Align.txt	/*align-userguide*
+align-utf	Align.txt	/*align-utf*
+align-utf8	Align.txt	/*align-utf8*
+align.txt	Align.txt	/*align.txt*
+alignctrl	Align.txt	/*alignctrl*
+alignctrl-	Align.txt	/*alignctrl-*
+alignctrl-+	Align.txt	/*alignctrl-+*
+alignctrl--	Align.txt	/*alignctrl--*
+alignctrl-:	Align.txt	/*alignctrl-:*
+alignctrl-<	Align.txt	/*alignctrl-<*
+alignctrl-=	Align.txt	/*alignctrl-=*
+alignctrl->	Align.txt	/*alignctrl->*
+alignctrl-C	Align.txt	/*alignctrl-C*
+alignctrl-I	Align.txt	/*alignctrl-I*
+alignctrl-P	Align.txt	/*alignctrl-P*
+alignctrl-W	Align.txt	/*alignctrl-W*
+alignctrl-c	Align.txt	/*alignctrl-c*
+alignctrl-g	Align.txt	/*alignctrl-g*
+alignctrl-l	Align.txt	/*alignctrl-l*
+alignctrl-m	Align.txt	/*alignctrl-m*
+alignctrl-no-option	Align.txt	/*alignctrl-no-option*
+alignctrl-p	Align.txt	/*alignctrl-p*
+alignctrl-r	Align.txt	/*alignctrl-r*
+alignctrl-separators	Align.txt	/*alignctrl-separators*
+alignctrl-settings	Align.txt	/*alignctrl-settings*
+alignctrl-v	Align.txt	/*alignctrl-v*
+alignctrl-w	Align.txt	/*alignctrl-w*
+alignman	Align.txt	/*alignman*
+alignmanual	Align.txt	/*alignmanual*
+alignmap-Htd	Align.txt	/*alignmap-Htd*
+alignmap-T=	Align.txt	/*alignmap-T=*
+alignmap-Tsp	Align.txt	/*alignmap-Tsp*
+alignmap-a(	Align.txt	/*alignmap-a(*
+alignmap-a,	Align.txt	/*alignmap-a,*
+alignmap-a<	Align.txt	/*alignmap-a<*
+alignmap-a=	Align.txt	/*alignmap-a=*
+alignmap-a?	Align.txt	/*alignmap-a?*
+alignmap-abox	Align.txt	/*alignmap-abox*
+alignmap-acom	Align.txt	/*alignmap-acom*
+alignmap-adcom	Align.txt	/*alignmap-adcom*
+alignmap-adec	Align.txt	/*alignmap-adec*
+alignmap-adef	Align.txt	/*alignmap-adef*
+alignmap-afnc	Align.txt	/*alignmap-afnc*
+alignmap-anum	Align.txt	/*alignmap-anum*
+alignmap-aocom	Align.txt	/*alignmap-aocom*
+alignmap-ascom	Align.txt	/*alignmap-ascom*
+alignmap-history	Align.txt	/*alignmap-history*
+alignmap-m=	Align.txt	/*alignmap-m=*
+alignmap-t#	Align.txt	/*alignmap-t#*
+alignmap-t,	Align.txt	/*alignmap-t,*
+alignmap-t:	Align.txt	/*alignmap-t:*
+alignmap-t;	Align.txt	/*alignmap-t;*
+alignmap-t<	Align.txt	/*alignmap-t<*
+alignmap-t=	Align.txt	/*alignmap-t=*
+alignmap-t?	Align.txt	/*alignmap-t?*
+alignmap-tab	Align.txt	/*alignmap-tab*
+alignmap-tml	Align.txt	/*alignmap-tml*
+alignmap-ts,	Align.txt	/*alignmap-ts,*
+alignmap-ts:	Align.txt	/*alignmap-ts:*
+alignmap-ts<	Align.txt	/*alignmap-ts<*
+alignmap-ts=	Align.txt	/*alignmap-ts=*
+alignmap-tsp	Align.txt	/*alignmap-tsp*
+alignmap-tsq	Align.txt	/*alignmap-tsq*
+alignmap-tt	Align.txt	/*alignmap-tt*
+alignmap-t~	Align.txt	/*alignmap-t~*
+alignmaps	Align.txt	/*alignmaps*
+alignusage	Align.txt	/*alignusage*
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/indent/matlab.vim
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/indent/matlab.vim	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/indent/matlab.vim	(revision 21239)
@@ -0,0 +1,146 @@
+" Matlab indent file
+" Language:	Matlab
+" Maintainer:	Fabrice Guy <fabrice.guy at gmail dot com>
+" Last Change:	2009 Nov 23 - Added support for if/end block on the same line
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+  finish
+endif
+let b:did_indent = 1
+let s:functionWithoutEndStatement = 0
+
+setlocal indentexpr=GetMatlabIndent()
+setlocal indentkeys=!,o,O=end,=case,=else,=elseif,=otherwise,=catch
+
+" Only define the function once.
+if exists("*GetMatlabIndent")
+  finish
+endif
+
+function! s:IsMatlabContinuationLine(lnum)
+  let continuationLine = 0
+  if a:lnum > 0
+    let pnbline = getline(prevnonblank(a:lnum))
+    " if we have the line continuation operator (... at the end of a line or
+    " ... followed by a comment) it may be a line continuation
+    if pnbline =~ '\.\.\.\s*$' || pnbline =~ '\.\.\.\s*%.*$'
+      let continuationLine = 1
+      " but if the ... are part of a string or a comment, it is not a
+      " continuation line
+      let col = match(pnbline, '\.\.\.\s*$')
+      if col == -1
+	let col = match(pnbline, '\.\.\.\s*%.*$')
+      endif
+      if has('syntax_items')
+	if synIDattr(synID(prevnonblank(a:lnum), col + 1, 1), "name") =~ "matlabString" ||
+	      \ synIDattr(synID(prevnonblank(a:lnum), col + 1, 1), "name") =~ "matlabComment" 
+	  let continuationLine = 0
+	endif
+      endif
+    endif
+  endif
+  return continuationLine
+endfunction
+
+function GetMatlabIndent()
+  " Find a non-blank line above the current line.
+  let plnum = prevnonblank(v:lnum - 1)
+
+  " If the previous line is a continuation line, get the beginning of the block to 
+  " use the indent of that line
+  if s:IsMatlabContinuationLine(plnum - 1)
+    while s:IsMatlabContinuationLine(plnum - 1)
+      let plnum = plnum - 1
+    endwhile
+  endif
+
+  " At the start of the file use zero indent.
+  if plnum == 0
+    return 0
+  endif
+
+  let curind = indent(plnum)
+  if s:IsMatlabContinuationLine(v:lnum - 1) 
+    let curind = curind + &sw
+  endif
+  " Add a 'shiftwidth' after classdef, properties, switch, methods, events,
+  " function, if, while, for, otherwise, case, try, catch, else, elseif
+  if getline(plnum) =~ '^\s*\(classdef\|properties\|switch\|methods\|events\|function\|if\|while\|for\|otherwise\|case\|try\|catch\|else\|elseif\)\>'
+    let curind = curind + &sw
+    " In Matlab we have different kind of functions
+    " - the main function (the function with the same name than the filename)
+    " - the nested functions
+    " - the functions defined in methods (for classes)
+    " - subfunctions
+    " Principles for the indentation :
+    " - all the function keywords are indented (corresponding to the
+    "   'indent all functions' in the Matlab Editor)
+    " - if we have only subfonctions (ie if the main function doesn't have
+    "   any mayching end), then each function is dedented
+    if getline(plnum)  =~ '^\s*\function\>'
+      let pplnum = plnum - 1
+      while pplnum > 1 && (getline(pplnum) =~ '^\s*%')
+	let pplnum = pplnum - 1
+      endwhile
+      " If it is the main function, determine if function has a matching end
+      " or not
+      if pplnum <= 1 
+	" look for a matching end : 
+	" - if we find a matching end everything is fine : end of functions
+	"   will be dedented when 'end' is reached
+	" - if not, then all other functions are subfunctions : 'function'
+	"   keyword has to be dedended
+	let old_lnum = v:lnum
+	let motion = plnum . "gg"
+	execute "normal" . motion
+	normal %
+	if getline(line('.')) =~ '^\s*end'
+	  let s:functionWithoutEndStatement = 0
+	else
+	  let s:functionWithoutEndStatement = 1
+	endif
+	normal %
+	let motion = old_lnum . "gg"
+	execute "normal" . motion
+      endif
+    endif
+    " if the for-end block (or while-end) is on the same line : dedent
+    if getline(plnum)  =~ '\<end[,;]*\s*\(%.*\)\?$'
+      let curind = curind - &sw 
+    endif
+  endif
+
+  " Subtract a 'shiftwidth' on a else, elseif, end, catch, otherwise, case
+  if getline(v:lnum) =~ '^\s*\(else\|elseif\|end\|catch\|otherwise\|case\)\>'
+    let curind = curind - &sw
+  endif
+  " No indentation in a subfunction
+  if getline(v:lnum)  =~ '^\s*\function\>' && s:functionWithoutEndStatement
+    let curind = curind - &sw
+  endif
+  " First case after a switch : indent
+  if getline(v:lnum) =~ '^\s*case'
+    while plnum > 0 && (getline(plnum) =~ '^\s*%' || getline(plnum) =~ '^\s*$')
+      let plnum = plnum - 1
+    endwhile
+    if getline(plnum) =~ '^\s*switch'
+      let curind = indent(plnum) + &sw
+    endif
+  endif
+
+  " end in a switch / end block : dedent twice
+  " we use the matchit script to know if this end is the end of a switch block
+  if exists("b:match_words")
+    if getline(v:lnum) =~ '^\s*end'
+      normal %
+      if getline(line('.')) =~ '^\s*switch'
+	let curind = curind - &sw
+      endif
+      normal %
+    end
+  end
+  return curind
+endfunction
+
+" vim:sw=2
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/indent/tex.vim
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/indent/tex.vim	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/indent/tex.vim	(revision 21239)
@@ -0,0 +1,139 @@
+" Vim indent file
+" Language:     LaTeX
+" Maintainer:   Johannes Tanzler <jtanzler@yline.com>
+" Created:      Sat, 16 Feb 2002 16:50:19 +0100
+" Last Change:	Sun, 17 Feb 2002 00:09:11 +0100
+" Last Update:  18th feb 2002, by LH :
+"               (*) better support for the option
+"               (*) use some regex instead of several '||'.
+" Version: 0.02
+" URL: comming soon: http://www.unet.univie.ac.at/~a9925098/vim/indent/tex.vim
+
+" --> If you're a Vim guru & and you find something that could be done in a
+"     better (perhaps in a more Vim-ish or Vi-ish) way, please let me know! 
+
+" Options: {{{
+"
+" To set the following options (ok, currently it's just one), add a line like
+"   let g:tex_indent_items = 1
+" to your ~/.vimrc.
+"
+" * g:tex_indent_items
+"
+"   If this variable is set, item-environments are indented like Emacs does
+"   it, i.e., continuation lines are indented with a shiftwidth.
+"   
+"   NOTE: I've already set the variable below; delete the corresponding line
+"   if you don't like this behaviour.
+"
+"   Per default, it is unset.
+"   
+"              set                                unset
+"   ----------------------------------------------------------------
+"       \begin{itemize}                      \begin{itemize}  
+"         \item blablabla                      \item blablabla
+"           bla bla bla                        bla bla bla  
+"         \item blablabla                      \item blablabla
+"           bla bla bla                        bla bla bla  
+"       \end{itemize}                        \end{itemize}    
+"
+"
+"   This option applies to itemize, description, enumerate, and
+"   thebibliography.
+"
+" }}} 
+
+" Delete the next line to avoid the special indention of items
+if !exists("g:tex_indent_items")
+  let g:tex_indent_items = 1
+endif
+
+if exists("b:did_indent") | finish
+endif
+let b:did_indent = 1
+
+
+setlocal indentexpr=GetTeXIndent()
+setlocal nolisp
+setlocal nosmartindent
+setlocal autoindent
+setlocal indentkeys+=},=\\item,=\\bibitem
+
+
+" Only define the function once
+if exists("*GetTeXIndent") | finish
+endif
+
+
+
+function GetTeXIndent()
+
+  " Find a non-blank line above the current line.
+  let lnum = prevnonblank(v:lnum - 1)
+
+  " At the start of the file use zero indent.
+  if lnum == 0 | return 0 
+  endif
+
+  let ind = indent(lnum)
+  let line = getline(lnum)             " last line
+  let cline = getline(v:lnum)          " current line
+
+  " Do not change indentation of commented lines.
+  if line =~ '^\s*%'
+    return ind
+  endif
+
+  " Add a 'shiftwidth' after beginning of environments.
+  " Don't add it for \begin{document} and \begin{verbatim}
+  ""if line =~ '^\s*\\begin{\(.*\)}'  && line !~ 'verbatim' 
+  " LH modification : \begin does not always start a line
+  if line =~ '\\begin{\(.*\)}'  && line !~ 'verbatim' 
+        \ && line !~ 'document'
+
+    let ind = ind + &sw
+
+    if g:tex_indent_items == 1
+      " Add another sw for item-environments
+      if line =~ 'itemize\|description\|enumerate\|thebibliography'
+        let ind = ind + &sw
+      endif
+    endif
+  endif
+
+  
+  " Subtract a 'shiftwidth' when an environment ends
+  if cline =~ '^\s*\\end' && cline !~ 'verbatim' 
+        \&& cline !~ 'document'
+
+    if g:tex_indent_items == 1
+      " Remove another sw for item-environments
+      if cline =~ 'itemize\|description\|enumerate\|thebibliography'
+        let ind = ind - &sw
+      endif
+    endif
+
+    let ind = ind - &sw
+  endif
+
+  
+  " Special treatment for 'item'
+  " ----------------------------
+  
+  if g:tex_indent_items == 1
+
+    " '\item' or '\bibitem' itself:
+    if cline =~ '^\s*\\\(bib\)\=item' 
+      let ind = ind - &sw
+    endif
+
+    " lines following to '\item' are intented once again:
+    if line =~ '^\s*\\\(bib\)\=item' 
+      let ind = ind + &sw
+    endif
+
+  endif
+
+  return ind
+endfunction
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/AlignMapsPlugin.vim
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/AlignMapsPlugin.vim	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/AlignMapsPlugin.vim	(revision 21239)
@@ -0,0 +1,242 @@
+" AlignMapsPlugin:   Alignment maps based upon <Align.vim> and <AlignMaps.vim>
+" Maintainer:        Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
+" Date:              Mar 03, 2009
+"
+" NOTE: the code herein needs vim 6.0 or later
+"                       needs <Align.vim> v6 or later
+"                       needs <cecutil.vim> v5 or later
+" Copyright:    Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1
+"               Permission is hereby granted to use and distribute this code,
+"               with or without modifications, provided that this copyright
+"               notice is copied with it. Like anything else that's free,
+"               AlignMaps.vim is provided *as is* and comes with no warranty
+"               of any kind, either expressed or implied. By using this
+"               plugin, you agree that in no event will the copyright
+"               holder be liable for any damages resulting from the use
+"               of this software.
+"
+" Usage: {{{1
+" Use 'a to mark beginning of to-be-aligned region,   Alternative:  use V
+" move cursor to end of region, and execute map.      (linewise visual mode) to
+" The maps also set up marks 'y and 'z, and retain    mark region, execute same
+" 'a at the beginning of region.                      map.  Uses 'a, 'y, and 'z.
+"
+" The start/end wrappers save and restore marks 'y and 'z.
+"
+" Although the comments indicate the maps use a leading backslash,
+" actually they use <Leader> (:he mapleader), so the user can
+" specify that the maps start how he or she prefers.
+"
+" Note: these maps all use <Align.vim>.
+"
+" Romans 1:20 For the invisible things of Him since the creation of the {{{1
+" world are clearly seen, being perceived through the things that are
+" made, even His everlasting power and divinity; that they may be
+" without excuse.
+
+" ---------------------------------------------------------------------
+" Load Once: {{{1
+if &cp || exists("g:loaded_AlignMapsPlugin")
+ finish
+endif
+let s:keepcpo                = &cpo
+let g:loaded_AlignMapsPlugin = "v41"
+set cpo&vim
+
+" =====================================================================
+"  Maps: {{{1
+
+" ---------------------------------------------------------------------
+" WS: wrapper start map (internal)  {{{2
+" Produces a blank line above and below, marks with 'y and 'z
+if !hasmapto('<Plug>WrapperStart')
+ map <unique> <SID>WS	<Plug>AlignMapsWrapperStart
+endif
+nmap <silent> <script> <Plug>AlignMapsWrapperStart	:set lz<CR>:call AlignMaps#WrapperStart(0)<CR>
+vmap <silent> <script> <Plug>AlignMapsWrapperStart	:<c-u>set lz<CR>:call AlignMaps#WrapperStart(1)<CR>
+
+" ---------------------------------------------------------------------
+" WE: wrapper end (internal)   {{{2
+" Removes guard lines, restores marks y and z, and restores search pattern
+if !hasmapto('<Plug>WrapperEnd')
+ nmap <unique> <SID>WE	<Plug>AlignMapsWrapperEnd
+endif
+nmap <silent> <script> <Plug>AlignMapsWrapperEnd	:call AlignMaps#WrapperEnd()<CR>:set nolz<CR>
+
+" ---------------------------------------------------------------------
+" Complex C-code alignment maps: {{{2
+if !hasmapto('<Plug>AM_a?')   |map <unique> <Leader>a?		<Plug>AM_a?|endif
+if !hasmapto('<Plug>AM_a,')   |map <unique> <Leader>a,		<Plug>AM_a,|endif
+if !hasmapto('<Plug>AM_a<')   |map <unique> <Leader>a<		<Plug>AM_a<|endif
+if !hasmapto('<Plug>AM_a=')   |map <unique> <Leader>a=		<Plug>AM_a=|endif
+if !hasmapto('<Plug>AM_a(')   |map <unique> <Leader>a(		<Plug>AM_a(|endif
+if !hasmapto('<Plug>AM_abox') |map <unique> <Leader>abox	<Plug>AM_abox|endif
+if !hasmapto('<Plug>AM_acom') |map <unique> <Leader>acom	<Plug>AM_acom|endif
+if !hasmapto('<Plug>AM_adcom')|map <unique> <Leader>adcom	<Plug>AM_adcom|endif
+if !hasmapto('<Plug>AM_aocom')|map <unique> <Leader>aocom	<Plug>AM_aocom|endif
+if !hasmapto('<Plug>AM_ascom')|map <unique> <Leader>ascom	<Plug>AM_ascom|endif
+if !hasmapto('<Plug>AM_adec') |map <unique> <Leader>adec	<Plug>AM_adec|endif
+if !hasmapto('<Plug>AM_adef') |map <unique> <Leader>adef	<Plug>AM_adef|endif
+if !hasmapto('<Plug>AM_afnc') |map <unique> <Leader>afnc	<Plug>AM_afnc|endif
+if !hasmapto('<Plug>AM_afnc') |map <unique> <Leader>afnc	<Plug>AM_afnc|endif
+if !hasmapto('<Plug>AM_aunum')|map <unique> <Leader>aunum	<Plug>AM_aenum|endif
+if !hasmapto('<Plug>AM_aenum')|map <unique> <Leader>aenum	<Plug>AM_aunum|endif
+if exists("g:alignmaps_euronumber") && !exists("g:alignmaps_usanumber")
+ if !hasmapto('<Plug>AM_anum')|map <unique> <Leader>anum	<Plug>AM_aenum|endif
+else
+ if !hasmapto('<Plug>AM_anum')|map <unique> <Leader>anum	<Plug>AM_aunum|endif
+endif
+
+map <silent> <script> <Plug>AM_a?		<SID>WS:AlignCtrl mIp1P1lC ? : : : : <CR>:'a,.Align<CR>:'a,'z-1s/\(\s\+\)? /?\1/e<CR><SID>WE
+map <silent> <script> <Plug>AM_a,		<SID>WS:'y,'zs/\(\S\)\s\+/\1 /ge<CR>'yjma'zk:call AlignMaps#CharJoiner(",")<cr>:silent 'y,'zg/,/call AlignMaps#FixMultiDec()<CR>'z:exe "norm \<Plug>AM_adec"<cr><SID>WE
+map <silent> <script> <Plug>AM_a<		<SID>WS:AlignCtrl mIp1P1=l << >><CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_a(       <SID>WS:AlignCtrl mIp0P1=l<CR>:'a,.Align [(,]<CR>:sil 'y+1,'z-1s/\(\s\+\),/,\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_a=		<SID>WS:AlignCtrl mIp1P1=l<CR>:AlignCtrl g :=<CR>:'a,'zAlign :\==<CR><SID>WE
+map <silent> <script> <Plug>AM_abox		<SID>WS:let g:alignmaps_iws=substitute(getline("'a"),'^\(\s*\).*$','\1','e')<CR>:'a,'z-1s/^\s\+//e<CR>:'a,'z-1s/^.*$/@&@/<CR>:AlignCtrl m=p01P0w @<CR>:'a,.Align<CR>:'a,'z-1s/@/ * /<CR>:'a,'z-1s/@$/*/<CR>'aYP:s/./*/g<CR>0r/'zkYp:s/./*/g<CR>0r A/<Esc>:exe "'a-1,'z-1s/^/".g:alignmaps_iws."/e"<CR><SID>WE
+map <silent> <script> <Plug>AM_acom		<SID>WS:'a,.s/\/[*/]\/\=/@&@/e<CR>:'a,.s/\*\//@&/e<CR>:'y,'zs/^\( *\) @/\1@/e<CR>'zk:call AlignMaps#StdAlign(2)<CR>:'y,'zs/^\(\s*\) @/\1/e<CR>:'y,'zs/ @//eg<CR><SID>WE
+map <silent> <script> <Plug>AM_adcom	<SID>WS:'a,.v/^\s*\/[/*]/s/\/[*/]\*\=/@&@/e<CR>:'a,.v/^\s*\/[/*]/s/\*\//@&/e<CR>:'y,'zv/^\s*\/[/*]/s/^\( *\) @/\1@/e<CR>'zk:call AlignMaps#StdAlign(3)<cr>:'y,'zv/^\s*\/[/*]/s/^\(\s*\) @/\1/e<CR>:'y,'zs/ @//eg<CR><SID>WE
+map <silent> <script> <Plug>AM_aocom	<SID>WS:AlignPush<CR>:AlignCtrl g /[*/]<CR>:exe "norm \<Plug>AM_acom"<cr>:AlignPop<CR><SID>WE
+map <silent> <script> <Plug>AM_ascom	<SID>WS:'a,.s/\/[*/]/@&@/e<CR>:'a,.s/\*\//@&/e<CR>:silent! 'a,.g/^\s*@\/[*/]/s/@//ge<CR>:AlignCtrl v ^\s*\/[*/]<CR>:AlignCtrl g \/[*/]<CR>'zk:call AlignMaps#StdAlign(2)<cr>:'y,'zs/^\(\s*\) @/\1/e<CR>:'y,'zs/ @//eg<CR><SID>WE
+map <silent> <script> <Plug>AM_adec		<SID>WS:'a,'zs/\([^ \t/(]\)\([*&]\)/\1 \2/e<CR>:'y,'zv/^\//s/\([^ \t]\)\s\+/\1 /ge<CR>:'y,'zv/^\s*[*/]/s/\([^/][*&]\)\s\+/\1/ge<CR>:'y,'zv/^\s*[*/]/s/^\(\s*\%(\K\k*\s\+\%([a-zA-Z_*(&]\)\@=\)\+\)\([*(&]*\)\s*\([a-zA-Z0-9_()]\+\)\s*\(\(\[.\{-}]\)*\)\s*\(=\)\=\s*\(.\{-}\)\=\s*;/\1@\2#@\3\4@\6@\7;@/e<CR>:'y,'zv/^\s*[*/]/s/\*\/\s*$/@*\//e<CR>:'y,'zv/^\s*[*/]/s/^\s\+\*/@@@@@* /e<CR>:'y,'zv/^\s*[*/]/s/^@@@@@\*\(.*[^*/]\)$/&@*/e<CR>'yjma'zk:AlignCtrl v ^\s*[*/#]<CR>:call AlignMaps#StdAlign(1)<cr>:'y,'zv/^\s*[*/]/s/@ //ge<CR>:'y,'zv/^\s*[*/]/s/\(\s*\);/;\1/e<CR>:'y,'zv/^#/s/# //e<CR>:'y,'zv/^\s\+[*/#]/s/\([^/*]\)\(\*\+\)\( \+\)/\1\3\2/e<CR>:'y,'zv/^\s\+[*/#]/s/\((\+\)\( \+\)\*/\2\1*/e<CR>:'y,'zv/^\s\+[*/#]/s/^\(\s\+\) \*/\1*/e<CR>:'y,'zv/^\s\+[*/#]/s/[ \t@]*$//e<CR>:'y,'zs/^[*]/ */e<CR><SID>WE
+map <silent> <script> <Plug>AM_adef		<SID>WS:AlignPush<CR>:AlignCtrl v ^\s*\(\/\*\<bar>\/\/\)<CR>:'a,.v/^\s*\(\/\*\<bar>\/\/\)/s/^\(\s*\)#\(\s\)*define\s*\(\I[a-zA-Z_0-9(),]*\)\s*\(.\{-}\)\($\<Bar>\/\*\)/#\1\2define @\3@\4@\5/e<CR>:'a,.v/^\s*\(\/\*\<bar>\/\/\)/s/\($\<Bar>\*\/\)/@&/e<CR>'zk:call AlignMaps#StdAlign(1)<cr>'yjma'zk:'a,.v/^\s*\(\/\*\<bar>\/\/\)/s/ @//g<CR><SID>WE
+map <silent> <script> <Plug>AM_afnc		:<c-u>set lz<CR>:silent call AlignMaps#Afnc()<CR>:set nolz<CR>
+map <silent> <script> <Plug>AM_aunum	<SID>WS:'a,'zs/\%([0-9.]\)\s\+\zs\([-+.]\=\d\)/@\1/ge<CR>:'a,'zs/\(\(^\|\s\)\d\+\)\(\s\+\)@/\1@\3@/ge<CR>:'a,'zs/\.@/\.0@/ge<CR>:AlignCtrl wmp0P0r<CR>:'a,'zAlign [.@]<CR>:'a,'zs/@/ /ge<CR>:'a,'zs/\(\.\)\(\s\+\)\([0-9.,eE+]\+\)/\1\3\2/ge<CR>:'a,'zs/\([eE]\)\(\s\+\)\([0-9+\-+]\+\)/\1\3\2/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_aenum	<SID>WS:'a,'zs/\%([0-9.]\)\s\+\([-+]\=\d\)/\1@\2/ge<CR>:'a,'zs/\.@/\.0@/ge<CR>:AlignCtrl wmp0P0r<CR>:'a,'zAlign [,@]<CR>:'a,'zs/@/ /ge<CR>:'a,'zs/\(,\)\(\s\+\)\([-0-9.,eE+]\+\)/\1\3\2/ge<CR>:'a,'zs/\([eE]\)\(\s\+\)\([0-9+\-+]\+\)/\1\3\2/ge<CR><SID>WE
+
+" ---------------------------------------------------------------------
+" html table alignment	{{{2
+if !hasmapto('<Plug>AM_Htd')|map <unique> <Leader>Htd	<Plug>AM_Htd|endif
+map <silent> <script> <Plug>AM_Htd <SID>WS:'y,'zs%<[tT][rR]><[tT][dD][^>]\{-}>\<Bar></[tT][dD]><[tT][dD][^>]\{-}>\<Bar></[tT][dD]></[tT][rR]>%@&@%g<CR>'yjma'zk:AlignCtrl m=Ilp1P0 @<CR>:'a,.Align<CR>:'y,'zs/ @/@/<CR>:'y,'zs/@ <[tT][rR]>/<[tT][rR]>/ge<CR>:'y,'zs/@//ge<CR><SID>WE
+
+" ---------------------------------------------------------------------
+" character-based right-justified alignment maps {{{2
+if !hasmapto('<Plug>AM_T|')|map <unique> <Leader>T|		<Plug>AM_T||endif
+if !hasmapto('<Plug>AM_T#')	 |map <unique> <Leader>T#		<Plug>AM_T#|endif
+if !hasmapto('<Plug>AM_T,')	 |map <unique> <Leader>T,		<Plug>AM_T,o|endif
+if !hasmapto('<Plug>AM_Ts,') |map <unique> <Leader>Ts,		<Plug>AM_Ts,|endif
+if !hasmapto('<Plug>AM_T:')	 |map <unique> <Leader>T:		<Plug>AM_T:|endif
+if !hasmapto('<Plug>AM_T;')	 |map <unique> <Leader>T;		<Plug>AM_T;|endif
+if !hasmapto('<Plug>AM_T<')	 |map <unique> <Leader>T<		<Plug>AM_T<|endif
+if !hasmapto('<Plug>AM_T=')	 |map <unique> <Leader>T=		<Plug>AM_T=|endif
+if !hasmapto('<Plug>AM_T?')	 |map <unique> <Leader>T?		<Plug>AM_T?|endif
+if !hasmapto('<Plug>AM_T@')	 |map <unique> <Leader>T@		<Plug>AM_T@|endif
+if !hasmapto('<Plug>AM_Tab') |map <unique> <Leader>Tab		<Plug>AM_Tab|endif
+if !hasmapto('<Plug>AM_Tsp') |map <unique> <Leader>Tsp		<Plug>AM_Tsp|endif
+if !hasmapto('<Plug>AM_T~')	 |map <unique> <Leader>T~		<Plug>AM_T~|endif
+
+map <silent> <script> <Plug>AM_T| <SID>WS:AlignCtrl mIp0P0=r <Bar><CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_T#   <SID>WS:AlignCtrl mIp0P0=r #<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_T,   <SID>WS:AlignCtrl mIp0P1=r ,<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_Ts,  <SID>WS:AlignCtrl mIp0P1=r ,<CR>:'a,.Align<CR>:'a,.s/\(\s*\),/,\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_T:   <SID>WS:AlignCtrl mIp1P1=r :<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_T;   <SID>WS:AlignCtrl mIp0P0=r ;<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_T<   <SID>WS:AlignCtrl mIp0P0=r <<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_T=   <SID>WS:'a,'z-1s/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'z-1s@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'z-1s/; */;@/e<CR>:'a,'z-1s/==/\="\<Char-0x0f>\<Char-0x0f>"/ge<CR>:'a,'z-1s/!=/\x="!\<Char-0x0f>"/ge<CR>:AlignCtrl mIp1P1=r = @<CR>:AlignCtrl g =<CR>:'a,'z-1Align<CR>:'a,'z-1s/; *@/;/e<CR>:'a,'z-1s/; *$/;/e<CR>:'a,'z-1s@\([*/+\-%<Bar>&\~^]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1s/\( \+\);/;\1/ge<CR>:'a,'z-1s/\xff/=/ge<CR><SID>WE:exe "norm <Plug>acom"
+map <silent> <script> <Plug>AM_T?   <SID>WS:AlignCtrl mIp0P0=r ?<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_T@   <SID>WS:AlignCtrl mIp0P0=r @<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_Tab  <SID>WS:'a,.s/^\(\t*\)\(.*\)/\=submatch(1).escape(substitute(submatch(2),'\t','@','g'),'\')/<CR>:AlignCtrl mI=r @<CR>:'a,.Align<CR>:'y+1,'z-1s/@/ /g<CR><SID>WE
+map <silent> <script> <Plug>AM_Tsp  <SID>WS:'a,.s/^\(\s*\)\(.*\)/\=submatch(1).escape(substitute(submatch(2),'\s\+','@','g'),'\')/<CR>:AlignCtrl mI=r @<CR>:'a,.Align<CR>:'y+1,'z-1s/@/ /g<CR><SID>WE
+map <silent> <script> <Plug>AM_T~   <SID>WS:AlignCtrl mIp0P0=r ~<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE
+
+" ---------------------------------------------------------------------
+" character-based left-justified alignment maps {{{2
+if !hasmapto('<Plug>AM_t|')	|map <unique> <Leader>t|	<Plug>AM_t||endif
+if !hasmapto('<Plug>AM_t#')		|map <unique> <Leader>t#	<Plug>AM_t#|endif
+if !hasmapto('<Plug>AM_t,')		|map <unique> <Leader>t,	<Plug>AM_t,|endif
+if !hasmapto('<Plug>AM_t:')		|map <unique> <Leader>t:	<Plug>AM_t:|endif
+if !hasmapto('<Plug>AM_t;')		|map <unique> <Leader>t;	<Plug>AM_t;|endif
+if !hasmapto('<Plug>AM_t<')		|map <unique> <Leader>t<	<Plug>AM_t<|endif
+if !hasmapto('<Plug>AM_t=')		|map <unique> <Leader>t=	<Plug>AM_t=|endif
+if !hasmapto('<Plug>AM_ts,')	|map <unique> <Leader>ts,	<Plug>AM_ts,|endif
+if !hasmapto('<Plug>AM_ts:')	|map <unique> <Leader>ts:	<Plug>AM_ts:|endif
+if !hasmapto('<Plug>AM_ts;')	|map <unique> <Leader>ts;	<Plug>AM_ts;|endif
+if !hasmapto('<Plug>AM_ts<')	|map <unique> <Leader>ts<	<Plug>AM_ts<|endif
+if !hasmapto('<Plug>AM_ts=')	|map <unique> <Leader>ts=	<Plug>AM_ts=|endif
+if !hasmapto('<Plug>AM_w=')		|map <unique> <Leader>w=	<Plug>AM_w=|endif
+if !hasmapto('<Plug>AM_t?')		|map <unique> <Leader>t?	<Plug>AM_t?|endif
+if !hasmapto('<Plug>AM_t~')		|map <unique> <Leader>t~	<Plug>AM_t~|endif
+if !hasmapto('<Plug>AM_t@')		|map <unique> <Leader>t@	<Plug>AM_t@|endif
+if !hasmapto('<Plug>AM_m=')		|map <unique> <Leader>m=	<Plug>AM_m=|endif
+if !hasmapto('<Plug>AM_tab')	|map <unique> <Leader>tab	<Plug>AM_tab|endif
+if !hasmapto('<Plug>AM_tml')	|map <unique> <Leader>tml	<Plug>AM_tml|endif
+if !hasmapto('<Plug>AM_tsp')	|map <unique> <Leader>tsp	<Plug>AM_tsp|endif
+if !hasmapto('<Plug>AM_tsq')	|map <unique> <Leader>tsq	<Plug>AM_tsq|endif
+if !hasmapto('<Plug>AM_tt')		|map <unique> <Leader>tt	<Plug>AM_tt|endif
+
+map <silent> <script> <Plug>AM_t|		<SID>WS:AlignCtrl mIp0P0=l <Bar><CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_t#		<SID>WS:AlignCtrl mIp0P0=l #<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_t,		<SID>WS:AlignCtrl mIp0P1=l ,<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_t:		<SID>WS:AlignCtrl mIp1P1=l :<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_t;		<SID>WS:AlignCtrl mIp0P1=l ;<CR>:'a,.Align<CR>:sil 'y,'zs/\( *\);/;\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_t<		<SID>WS:AlignCtrl mIp0P0=l <<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_t=		<SID>WS:call AlignMaps#Equals()<CR><SID>WE
+map <silent> <script> <Plug>AM_ts,		<SID>WS:AlignCtrl mIp0P1=l #<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\)#/,\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_ts,		<SID>WS:AlignCtrl mIp0P1=l ,<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\),/,\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_ts:		<SID>WS:AlignCtrl mIp1P1=l :<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\):/:\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_ts;		<SID>WS:AlignCtrl mIp1P1=l ;<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\);/;\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_ts<		<SID>WS:AlignCtrl mIp1P1=l <<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\)</<\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_ts=		<SID>WS:AlignCtrl mIp1P1=l =<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\)=/=\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_w=		<SID>WS:'a,'zg/=/s/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'zg/=/s@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'zg/=/s/==/\="\<Char-0x0f>\<Char-0x0f>"/ge<CR>:'a,'zg/=/s/!=/\="!\<Char-0x0f>"/ge<CR>'zk:AlignCtrl mWp1P1=l =<CR>:AlignCtrl g =<CR>:'a,'z-1g/=/Align<CR>:'a,'z-1g/=/s@\([*/+\-%<Bar>&\~^!=]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1g/=/s/\( \+\);/;\1/ge<CR>:'a,'z-1v/^\s*\/[*/]/s/\/[*/]/@&@/e<CR>:'a,'z-1v/^\s*\/[*/]/s/\*\//@&/e<CR>'zk:call AlignMaps#StdAlign(1)<cr>:'y,'zs/^\(\s*\) @/\1/e<CR>:'a,'z-1g/=/s/\xff/=/ge<CR>:'y,'zg/=/s/ @//eg<CR><SID>WE
+map <silent> <script> <Plug>AM_t?		<SID>WS:AlignCtrl mIp0P0=l ?<CR>:'a,.Align<CR>:.,'zs/ \( *\);/;\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_t~		<SID>WS:AlignCtrl mIp0P0=l ~<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_t@		<SID>WS::call AlignMaps#StdAlign(1)<cr>:<SID>WE
+map <silent> <script> <Plug>AM_m=		<SID>WS:'a,'zs/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'zs@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'zs/==/\="\<Char-0x0f>\<Char-0x0f>"/ge<CR>:'a,'zs/!=/\="!\<Char-0x0f>"/ge<CR>'zk:AlignCtrl mIp1P1=l =<CR>:AlignCtrl g =<CR>:'a,'z-1Align<CR>:'a,'z-1s@\([*/+\-%<Bar>&\~^!=]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1s/\( \+\);/;\1/ge<CR>:'a,'z-s/%\ze[^=]/ @%@ /e<CR>'zk:call AlignMaps#StdAlign(1)<cr>:'y,'zs/^\(\s*\) @/\1/e<CR>:'a,'z-1s/\xff/=/ge<CR>:'y,'zs/ @//eg<CR><SID>WE
+map <silent> <script> <Plug>AM_tab		<SID>WS:'a,.s/^\(\t*\)\(.*\)$/\=submatch(1).escape(substitute(submatch(2),'\t',"\<Char-0x0f>",'g'),'\')/<CR>:if &ts == 1<bar>exe "AlignCtrl mI=lp0P0 \<Char-0x0f>"<bar>else<bar>exe "AlignCtrl mI=l \<Char-0x0f>"<bar>endif<CR>:'a,.Align<CR>:exe "'y+1,'z-1s/\<Char-0x0f>/".((&ts == 1)? '\t' : ' ')."/g"<CR><SID>WE
+map <silent> <script> <Plug>AM_tml		<SID>WS:AlignCtrl mWp1P0=l \\\@<!\\\s*$<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_tsp		<SID>WS:'a,.s/^\(\s*\)\(.*\)/\=submatch(1).escape(substitute(submatch(2),'\s\+','@','g'),'\')/<CR>:AlignCtrl mI=lp0P0 @<CR>:'a,.Align<CR>:'y+1,'z-1s/@/ /g<CR><SID>WE
+map <silent> <script> <Plug>AM_tsq		<SID>WS:'a,.AlignReplaceQuotedSpaces<CR>:'a,.s/^\(\s*\)\(.*\)/\=submatch(1).substitute(submatch(2),'\s\+','@','g')/<CR>:AlignCtrl mIp0P0=l @<CR>:'a,.Align<CR>:'y+1,'z-1s/[%@]/ /g<CR><SID>WE
+map <silent> <script> <Plug>AM_tt		<SID>WS:AlignCtrl mIp1P1=l \\\@<!& \\\\<CR>:'a,.Align<CR><SID>WE
+
+" =====================================================================
+" Menu Support: {{{1
+"   ma ..move.. use menu
+"   v V or ctrl-v ..move.. use menu
+if has("menu") && has("gui_running") && &go =~ 'm' && !exists("s:firstmenu")
+ let s:firstmenu= 1
+ if !exists("g:DrChipTopLvlMenu")
+  let g:DrChipTopLvlMenu= "DrChip."
+ endif
+ if g:DrChipTopLvlMenu != ""
+  let s:mapleader = exists("g:mapleader")? g:mapleader : '\'
+  let s:emapleader= escape(s:mapleader,'\ ')
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.<<\ and\ >><tab>'.s:emapleader.'a<	'.s:mapleader.'a<'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Assignment\ =<tab>'.s:emapleader.'t=	'.s:mapleader.'t='
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Assignment\ :=<tab>'.s:emapleader.'a=	'.s:mapleader.'a='
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Backslashes<tab>'.s:emapleader.'tml	'.s:mapleader.'tml'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Breakup\ Comma\ Declarations<tab>'.s:emapleader.'a,	'.s:mapleader.'a,'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.C\ Comment\ Box<tab>'.s:emapleader.'abox	'.s:mapleader.'abox'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Commas<tab>'.s:emapleader.'t,	'.s:mapleader.'t,'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Commas<tab>'.s:emapleader.'ts,	'.s:mapleader.'ts,'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Commas\ With\ Strings<tab>'.s:emapleader.'tsq	'.s:mapleader.'tsq'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Comments<tab>'.s:emapleader.'acom	'.s:mapleader.'acom'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Comments\ Only<tab>'.s:emapleader.'aocom	'.s:mapleader.'aocom'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Declaration\ Comments<tab>'.s:emapleader.'adcom	'.s:mapleader.'adcom'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Declarations<tab>'.s:emapleader.'adec	'.s:mapleader.'adec'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Definitions<tab>'.s:emapleader.'adef	'.s:mapleader.'adef'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Function\ Header<tab>'.s:emapleader.'afnc	'.s:mapleader.'afnc'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Html\ Tables<tab>'.s:emapleader.'Htd	'.s:mapleader.'Htd'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.(\.\.\.)?\.\.\.\ :\ \.\.\.<tab>'.s:emapleader.'a?	'.s:mapleader.'a?'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Numbers<tab>'.s:emapleader.'anum	'.s:mapleader.'anum'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Numbers\ (American-Style)<tab>'.s:emapleader.'aunum	<Leader>aunum	'.s:mapleader.'aunum	<Leader>aunum'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Numbers\ (Euro-Style)<tab>'.s:emapleader.'aenum	'.s:mapleader.'aenum'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Spaces\ (Left\ Justified)<tab>'.s:emapleader.'tsp	'.s:mapleader.'tsp'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Spaces\ (Right\ Justified)<tab>'.s:emapleader.'Tsp	'.s:mapleader.'Tsp'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Statements\ With\ Percent\ Style\ Comments<tab>'.s:emapleader.'m=	'.s:mapleader.'m='
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Symbol\ <<tab>'.s:emapleader.'t<	'.s:mapleader.'t<'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Symbol\ \|<tab>'.s:emapleader.'t\|	'.s:mapleader.'t|'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Symbol\ @<tab>'.s:emapleader.'t@	'.s:mapleader.'t@'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Symbol\ #<tab>'.s:emapleader.'t#	'.s:mapleader.'t#'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Tabs<tab>'.s:emapleader.'tab	'.s:mapleader.'tab'
+  unlet s:mapleader
+  unlet s:emapleader
+ endif
+endif
+
+" =====================================================================
+"  Restore: {{{1
+let &cpo= s:keepcpo
+unlet s:keepcpo
+
+" ==============================================================================
+"  Modelines: {{{1
+" vim: ts=4 nowrap fdm=marker
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/AlignPlugin.vim
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/AlignPlugin.vim	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/AlignPlugin.vim	(revision 21239)
@@ -0,0 +1,41 @@
+" AlignPlugin: tool to align multiple fields based on one or more separators
+"   Author:	 Charles E. Campbell, Jr.
+"   Date:    Nov 02, 2008
+" GetLatestVimScripts: 294 1 :AutoInstall: Align.vim
+" GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim
+" Copyright:    Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1
+"               Permission is hereby granted to use and distribute this code,
+"               with or without modifications, provided that this copyright
+"               notice is copied with it. Like anything else that's free,
+"               Align.vim is provided *as is* and comes with no warranty
+"               of any kind, either expressed or implied. By using this
+"               plugin, you agree that in no event will the copyright
+"               holder be liable for any damages resulting from the use
+"               of this software.
+"
+" Romans 1:16,17a : For I am not ashamed of the gospel of Christ, for it is {{{1
+" the power of God for salvation for everyone who believes; for the Jew first,
+" and also for the Greek.  For in it is revealed God's righteousness from
+" faith to faith.
+" ---------------------------------------------------------------------
+" Load Once: {{{1
+if &cp || exists("g:loaded_AlignPlugin")
+ finish
+endif
+let g:loaded_AlignPlugin = "v35"
+let s:keepcpo            = &cpo
+set cpo&vim
+
+" ---------------------------------------------------------------------
+" Public Interface: {{{1
+com! -bang -range -nargs=* Align <line1>,<line2>call Align#Align(<bang>0,<q-args>)
+com!       -range -nargs=0 AlignReplaceQuotedSpaces <line1>,<line2>call Align#AlignReplaceQuotedSpaces()
+com!              -nargs=* AlignCtrl call Align#AlignCtrl(<q-args>)
+com!              -nargs=0 AlignPush call Align#AlignPush()
+com!              -nargs=0 AlignPop  call Align#AlignPop()
+
+" ---------------------------------------------------------------------
+"  Restore: {{{1
+let &cpo= s:keepcpo
+unlet s:keepcpo
+" vim: ts=4 fdm=marker
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/cecutil.vim
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/cecutil.vim	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/cecutil.vim	(revision 21239)
@@ -0,0 +1,510 @@
+" cecutil.vim : save/restore window position
+"               save/restore mark position
+"               save/restore selected user maps
+"  Author:	Charles E. Campbell, Jr.
+"  Version:	18b	ASTRO-ONLY
+"  Date:	Aug 27, 2008
+"
+"  Saving Restoring Destroying Marks: {{{1
+"       call SaveMark(markname)       let savemark= SaveMark(markname)
+"       call RestoreMark(markname)    call RestoreMark(savemark)
+"       call DestroyMark(markname)
+"       commands: SM RM DM
+"
+"  Saving Restoring Destroying Window Position: {{{1
+"       call SaveWinPosn()        let winposn= SaveWinPosn()
+"       call RestoreWinPosn()     call RestoreWinPosn(winposn)
+"		\swp : save current window/buffer's position
+"		\rwp : restore current window/buffer's previous position
+"       commands: SWP RWP
+"
+"  Saving And Restoring User Maps: {{{1
+"       call SaveUserMaps(mapmode,maplead,mapchx,suffix)
+"       call RestoreUserMaps(suffix)
+"
+" GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim
+"
+" You believe that God is one. You do well. The demons also {{{1
+" believe, and shudder. But do you want to know, vain man, that
+" faith apart from works is dead?  (James 2:19,20 WEB)
+
+" ---------------------------------------------------------------------
+" Load Once: {{{1
+if &cp || exists("g:loaded_cecutil")
+ finish
+endif
+let g:loaded_cecutil = "v18b"
+let s:keepcpo        = &cpo
+set cpo&vim
+"DechoTabOn
+
+" =======================
+"  Public Interface: {{{1
+" =======================
+
+" ---------------------------------------------------------------------
+"  Map Interface: {{{2
+if !hasmapto('<Plug>SaveWinPosn')
+ map <unique> <Leader>swp <Plug>SaveWinPosn
+endif
+if !hasmapto('<Plug>RestoreWinPosn')
+ map <unique> <Leader>rwp <Plug>RestoreWinPosn
+endif
+nmap <silent> <Plug>SaveWinPosn		:call SaveWinPosn()<CR>
+nmap <silent> <Plug>RestoreWinPosn	:call RestoreWinPosn()<CR>
+
+" ---------------------------------------------------------------------
+" Command Interface: {{{2
+com! -bar -nargs=0 SWP	call SaveWinPosn()
+com! -bar -nargs=0 RWP	call RestoreWinPosn()
+com! -bar -nargs=1 SM	call SaveMark(<q-args>)
+com! -bar -nargs=1 RM	call RestoreMark(<q-args>)
+com! -bar -nargs=1 DM	call DestroyMark(<q-args>)
+
+if v:version < 630
+ let s:modifier= "sil "
+else
+ let s:modifier= "sil keepj "
+endif
+
+" ===============
+" Functions: {{{1
+" ===============
+
+" ---------------------------------------------------------------------
+" SaveWinPosn: {{{2
+"    let winposn= SaveWinPosn()  will save window position in winposn variable
+"    call SaveWinPosn()          will save window position in b:cecutil_winposn{b:cecutil_iwinposn}
+"    let winposn= SaveWinPosn(0) will *only* save window position in winposn variable (no stacking done)
+fun! SaveWinPosn(...)
+"  call Dfunc("SaveWinPosn() a:0=".a:0)
+  if line(".") == 1 && getline(1) == ""
+"   call Dfunc("SaveWinPosn : empty buffer")
+   return ""
+  endif
+  let so_keep   = &l:so
+  let siso_keep = &siso
+  let ss_keep   = &l:ss
+  setlocal so=0 siso=0 ss=0
+
+  let swline    = line(".")
+  let swcol     = col(".")
+  let swwline   = winline() - 1
+  let swwcol    = virtcol(".") - wincol()
+  let savedposn = "call GoWinbufnr(".winbufnr(0).")|silent ".swline
+  let savedposn = savedposn."|".s:modifier."norm! 0z\<cr>"
+  if swwline > 0
+   let savedposn= savedposn.":".s:modifier."norm! ".swwline."\<c-y>\<cr>"
+  endif
+  if swwcol > 0
+   let savedposn= savedposn.":".s:modifier."norm! 0".swwcol."zl\<cr>"
+  endif
+  let savedposn = savedposn.":".s:modifier."call cursor(".swline.",".swcol.")\<cr>"
+
+  " save window position in
+  " b:cecutil_winposn_{iwinposn} (stack)
+  " only when SaveWinPosn() is used
+  if a:0 == 0
+   if !exists("b:cecutil_iwinposn")
+   	let b:cecutil_iwinposn= 1
+   else
+   	let b:cecutil_iwinposn= b:cecutil_iwinposn + 1
+   endif
+"   call Decho("saving posn to SWP stack")
+   let b:cecutil_winposn{b:cecutil_iwinposn}= savedposn
+  endif
+
+  let &l:so = so_keep
+  let &siso = siso_keep
+  let &l:ss = ss_keep
+
+"  if exists("b:cecutil_iwinposn")	 " Decho
+"   call Decho("b:cecutil_winpos{".b:cecutil_iwinposn."}[".b:cecutil_winposn{b:cecutil_iwinposn}."]")
+"  else                      " Decho
+"   call Decho("b:cecutil_iwinposn doesn't exist")
+"  endif                     " Decho
+"  call Dret("SaveWinPosn [".savedposn."]")
+  return savedposn
+endfun
+
+" ---------------------------------------------------------------------
+" RestoreWinPosn: {{{2
+"      call RestoreWinPosn()
+"      call RestoreWinPosn(winposn)
+fun! RestoreWinPosn(...)
+"  call Dfunc("RestoreWinPosn() a:0=".a:0)
+"  call Decho("getline(1)<".getline(1).">")
+"  call Decho("line(.)=".line("."))
+  if line(".") == 1 && getline(1) == ""
+"   call Dfunc("RestoreWinPosn : empty buffer")
+   return ""
+  endif
+  let so_keep   = &l:so
+  let siso_keep = &l:siso
+  let ss_keep   = &l:ss
+  setlocal so=0 siso=0 ss=0
+
+  if a:0 == 0 || a:1 == ""
+   " use saved window position in b:cecutil_winposn{b:cecutil_iwinposn} if it exists
+   if exists("b:cecutil_iwinposn") && exists("b:cecutil_winposn{b:cecutil_iwinposn}")
+"   	call Decho("using stack b:cecutil_winposn{".b:cecutil_iwinposn."}<".b:cecutil_winposn{b:cecutil_iwinposn}.">")
+	try
+     exe "silent! ".b:cecutil_winposn{b:cecutil_iwinposn}
+	catch /^Vim\%((\a\+)\)\=:E749/
+	 " ignore empty buffer error messages
+	endtry
+    " normally drop top-of-stack by one
+    " but while new top-of-stack doesn't exist
+    " drop top-of-stack index by one again
+	if b:cecutil_iwinposn >= 1
+	 unlet b:cecutil_winposn{b:cecutil_iwinposn}
+	 let b:cecutil_iwinposn= b:cecutil_iwinposn - 1
+	 while b:cecutil_iwinposn >= 1 && !exists("b:cecutil_winposn{b:cecutil_iwinposn}")
+	  let b:cecutil_iwinposn= b:cecutil_iwinposn - 1
+	 endwhile
+	 if b:cecutil_iwinposn < 1
+	  unlet b:cecutil_iwinposn
+	 endif
+	endif
+   else
+   	echohl WarningMsg
+	echomsg "***warning*** need to SaveWinPosn first!"
+	echohl None
+   endif
+
+  else	 " handle input argument
+"   call Decho("using input a:1<".a:1.">")
+   " use window position passed to this function
+   exe "silent ".a:1
+   " remove a:1 pattern from b:cecutil_winposn{b:cecutil_iwinposn} stack
+   if exists("b:cecutil_iwinposn")
+    let jwinposn= b:cecutil_iwinposn
+    while jwinposn >= 1                     " search for a:1 in iwinposn..1
+        if exists("b:cecutil_winposn{jwinposn}")    " if it exists
+         if a:1 == b:cecutil_winposn{jwinposn}      " and the pattern matches
+       unlet b:cecutil_winposn{jwinposn}            " unlet it
+       if jwinposn == b:cecutil_iwinposn            " if at top-of-stack
+        let b:cecutil_iwinposn= b:cecutil_iwinposn - 1      " drop stacktop by one
+       endif
+      endif
+     endif
+     let jwinposn= jwinposn - 1
+    endwhile
+   endif
+  endif
+
+  " Seems to be something odd: vertical motions after RWP
+  " cause jump to first column.  The following fixes that.
+  " Note: was using wincol()>1, but with signs, a cursor
+  " at column 1 yields wincol()==3.  Beeping ensued.
+  if virtcol('.') > 1
+   silent norm! hl
+  elseif virtcol(".") < virtcol("$")
+   silent norm! lh
+  endif
+
+  let &l:so   = so_keep
+  let &l:siso = siso_keep
+  let &l:ss   = ss_keep
+
+"  call Dret("RestoreWinPosn")
+endfun
+
+" ---------------------------------------------------------------------
+" GoWinbufnr: go to window holding given buffer (by number) {{{2
+"   Prefers current window; if its buffer number doesn't match,
+"   then will try from topleft to bottom right
+fun! GoWinbufnr(bufnum)
+"  call Dfunc("GoWinbufnr(".a:bufnum.")")
+  if winbufnr(0) == a:bufnum
+"   call Dret("GoWinbufnr : winbufnr(0)==a:bufnum")
+   return
+  endif
+  winc t
+  let first=1
+  while winbufnr(0) != a:bufnum && (first || winnr() != 1)
+  	winc w
+	let first= 0
+   endwhile
+"  call Dret("GoWinbufnr")
+endfun
+
+" ---------------------------------------------------------------------
+" SaveMark: sets up a string saving a mark position. {{{2
+"           For example, SaveMark("a")
+"           Also sets up a global variable, g:savemark_{markname}
+fun! SaveMark(markname)
+"  call Dfunc("SaveMark(markname<".a:markname.">)")
+  let markname= a:markname
+  if strpart(markname,0,1) !~ '\a'
+   let markname= strpart(markname,1,1)
+  endif
+"  call Decho("markname=".markname)
+
+  let lzkeep  = &lz
+  set lz
+
+  if 1 <= line("'".markname) && line("'".markname) <= line("$")
+   let winposn               = SaveWinPosn(0)
+   exe s:modifier."norm! `".markname
+   let savemark              = SaveWinPosn(0)
+   let g:savemark_{markname} = savemark
+   let savemark              = markname.savemark
+   call RestoreWinPosn(winposn)
+  else
+   let g:savemark_{markname} = ""
+   let savemark              = ""
+  endif
+
+  let &lz= lzkeep
+
+"  call Dret("SaveMark : savemark<".savemark.">")
+  return savemark
+endfun
+
+" ---------------------------------------------------------------------
+" RestoreMark: {{{2
+"   call RestoreMark("a")  -or- call RestoreMark(savemark)
+fun! RestoreMark(markname)
+"  call Dfunc("RestoreMark(markname<".a:markname.">)")
+
+  if strlen(a:markname) <= 0
+"   call Dret("RestoreMark : no such mark")
+   return
+  endif
+  let markname= strpart(a:markname,0,1)
+  if markname !~ '\a'
+   " handles 'a -> a styles
+   let markname= strpart(a:markname,1,1)
+  endif
+"  call Decho("markname=".markname." strlen(a:markname)=".strlen(a:markname))
+
+  let lzkeep  = &lz
+  set lz
+  let winposn = SaveWinPosn(0)
+
+  if strlen(a:markname) <= 2
+   if exists("g:savemark_{markname}") && strlen(g:savemark_{markname}) != 0
+	" use global variable g:savemark_{markname}
+"	call Decho("use savemark list")
+	call RestoreWinPosn(g:savemark_{markname})
+	exe "norm! m".markname
+   endif
+  else
+   " markname is a savemark command (string)
+"	call Decho("use savemark command")
+   let markcmd= strpart(a:markname,1)
+   call RestoreWinPosn(markcmd)
+   exe "norm! m".markname
+  endif
+
+  call RestoreWinPosn(winposn)
+  let &lz       = lzkeep
+
+"  call Dret("RestoreMark")
+endfun
+
+" ---------------------------------------------------------------------
+" DestroyMark: {{{2
+"   call DestroyMark("a")  -- destroys mark
+fun! DestroyMark(markname)
+"  call Dfunc("DestroyMark(markname<".a:markname.">)")
+
+  " save options and set to standard values
+  let reportkeep= &report
+  let lzkeep    = &lz
+  set lz report=10000
+
+  let markname= strpart(a:markname,0,1)
+  if markname !~ '\a'
+   " handles 'a -> a styles
+   let markname= strpart(a:markname,1,1)
+  endif
+"  call Decho("markname=".markname)
+
+  let curmod  = &mod
+  let winposn = SaveWinPosn(0)
+  1
+  let lineone = getline(".")
+  exe "k".markname
+  d
+  put! =lineone
+  let &mod    = curmod
+  call RestoreWinPosn(winposn)
+
+  " restore options to user settings
+  let &report = reportkeep
+  let &lz     = lzkeep
+
+"  call Dret("DestroyMark")
+endfun
+
+" ---------------------------------------------------------------------
+" QArgSplitter: to avoid \ processing by <f-args>, <q-args> is needed. {{{2
+" However, <q-args> doesn't split at all, so this one returns a list
+" with splits at all whitespace (only!), plus a leading length-of-list.
+" The resulting list:  qarglist[0] corresponds to a:0
+"                      qarglist[i] corresponds to a:{i}
+fun! QArgSplitter(qarg)
+"  call Dfunc("QArgSplitter(qarg<".a:qarg.">)")
+  let qarglist    = split(a:qarg)
+  let qarglistlen = len(qarglist)
+  let qarglist    = insert(qarglist,qarglistlen)
+"  call Dret("QArgSplitter ".string(qarglist))
+  return qarglist
+endfun
+
+" ---------------------------------------------------------------------
+" ListWinPosn: {{{2
+"fun! ListWinPosn()                                                        " Decho 
+"  if !exists("b:cecutil_iwinposn") || b:cecutil_iwinposn == 0             " Decho 
+"   call Decho("nothing on SWP stack")                                     " Decho
+"  else                                                                    " Decho
+"   let jwinposn= b:cecutil_iwinposn                                       " Decho 
+"   while jwinposn >= 1                                                    " Decho 
+"    if exists("b:cecutil_winposn{jwinposn}")                              " Decho 
+"     call Decho("winposn{".jwinposn."}<".b:cecutil_winposn{jwinposn}.">") " Decho 
+"    else                                                                  " Decho 
+"     call Decho("winposn{".jwinposn."} -- doesn't exist")                 " Decho 
+"    endif                                                                 " Decho 
+"    let jwinposn= jwinposn - 1                                            " Decho 
+"   endwhile                                                               " Decho 
+"  endif                                                                   " Decho
+"endfun                                                                    " Decho 
+"com! -nargs=0 LWP	call ListWinPosn()                                    " Decho 
+
+" ---------------------------------------------------------------------
+" SaveUserMaps: this function sets up a script-variable (s:restoremap) {{{2
+"          which can be used to restore user maps later with
+"          call RestoreUserMaps()
+"
+"          mapmode - see :help maparg for details (n v o i c l "")
+"                    ex. "n" = Normal
+"                    The letters "b" and "u" are optional prefixes;
+"                    The "u" means that the map will also be unmapped
+"                    The "b" means that the map has a <buffer> qualifier
+"                    ex. "un"  = Normal + unmapping
+"                    ex. "bn"  = Normal + <buffer>
+"                    ex. "bun" = Normal + <buffer> + unmapping
+"                    ex. "ubn" = Normal + <buffer> + unmapping
+"          maplead - see mapchx
+"          mapchx  - "<something>" handled as a single map item.
+"                    ex. "<left>"
+"                  - "string" a string of single letters which are actually
+"                    multiple two-letter maps (using the maplead:
+"                    maplead . each_character_in_string)
+"                    ex. maplead="\" and mapchx="abc" saves user mappings for
+"                        \a, \b, and \c
+"                    Of course, if maplead is "", then for mapchx="abc",
+"                    mappings for a, b, and c are saved.
+"                  - :something  handled as a single map item, w/o the ":"
+"                    ex.  mapchx= ":abc" will save a mapping for "abc"
+"          suffix  - a string unique to your plugin
+"                    ex.  suffix= "DrawIt"
+fun! SaveUserMaps(mapmode,maplead,mapchx,suffix)
+"  call Dfunc("SaveUserMaps(mapmode<".a:mapmode."> maplead<".a:maplead."> mapchx<".a:mapchx."> suffix<".a:suffix.">)")
+
+  if !exists("s:restoremap_{a:suffix}")
+   " initialize restoremap_suffix to null string
+   let s:restoremap_{a:suffix}= ""
+  endif
+
+  " set up dounmap: if 1, then save and unmap  (a:mapmode leads with a "u")
+  "                 if 0, save only
+  let mapmode  = a:mapmode
+  let dounmap  = 0
+  let dobuffer = ""
+  while mapmode =~ '^[bu]'
+   if     mapmode =~ '^u'
+    let dounmap= 1
+    let mapmode= strpart(a:mapmode,1)
+   elseif mapmode =~ '^b'
+    let dobuffer= "<buffer> "
+    let mapmode= strpart(a:mapmode,1)
+   endif
+  endwhile
+"  call Decho("dounmap=".dounmap."  dobuffer<".dobuffer.">")
+ 
+  " save single map :...something...
+  if strpart(a:mapchx,0,1) == ':'
+"   call Decho("save single map :...something...")
+   let amap= strpart(a:mapchx,1)
+   if amap == "|" || amap == "\<c-v>"
+    let amap= "\<c-v>".amap
+   endif
+   let amap                    = a:maplead.amap
+   let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|:silent! ".mapmode."unmap ".dobuffer.amap
+   if maparg(amap,mapmode) != ""
+    let maprhs                  = substitute(maparg(amap,mapmode),'|','<bar>','ge')
+	let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|:".mapmode."map ".dobuffer.amap." ".maprhs
+   endif
+   if dounmap
+	exe "silent! ".mapmode."unmap ".dobuffer.amap
+   endif
+ 
+  " save single map <something>
+  elseif strpart(a:mapchx,0,1) == '<'
+"   call Decho("save single map <something>")
+   let amap       = a:mapchx
+   if amap == "|" || amap == "\<c-v>"
+    let amap= "\<c-v>".amap
+"	call Decho("amap[[".amap."]]")
+   endif
+   let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|silent! ".mapmode."unmap ".dobuffer.amap
+   if maparg(a:mapchx,mapmode) != ""
+    let maprhs                  = substitute(maparg(amap,mapmode),'|','<bar>','ge')
+	let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".amap." ".dobuffer.maprhs
+   endif
+   if dounmap
+	exe "silent! ".mapmode."unmap ".dobuffer.amap
+   endif
+ 
+  " save multiple maps
+  else
+"   call Decho("save multiple maps")
+   let i= 1
+   while i <= strlen(a:mapchx)
+    let amap= a:maplead.strpart(a:mapchx,i-1,1)
+	if amap == "|" || amap == "\<c-v>"
+	 let amap= "\<c-v>".amap
+	endif
+	let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|silent! ".mapmode."unmap ".dobuffer.amap
+    if maparg(amap,mapmode) != ""
+     let maprhs                  = substitute(maparg(amap,mapmode),'|','<bar>','ge')
+	 let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".amap." ".dobuffer.maprhs
+    endif
+	if dounmap
+	 exe "silent! ".mapmode."unmap ".dobuffer.amap
+	endif
+    let i= i + 1
+   endwhile
+  endif
+"  call Dret("SaveUserMaps : restoremap_".a:suffix.": ".s:restoremap_{a:suffix})
+endfun
+
+" ---------------------------------------------------------------------
+" RestoreUserMaps: {{{2
+"   Used to restore user maps saved by SaveUserMaps()
+fun! RestoreUserMaps(suffix)
+"  call Dfunc("RestoreUserMaps(suffix<".a:suffix.">)")
+  if exists("s:restoremap_{a:suffix}")
+   let s:restoremap_{a:suffix}= substitute(s:restoremap_{a:suffix},'|\s*$','','e')
+   if s:restoremap_{a:suffix} != ""
+"   	call Decho("exe ".s:restoremap_{a:suffix})
+    exe "silent! ".s:restoremap_{a:suffix}
+   endif
+   unlet s:restoremap_{a:suffix}
+  endif
+"  call Dret("RestoreUserMaps")
+endfun
+
+" ==============
+"  Restore: {{{1
+" ==============
+let &cpo= s:keepcpo
+unlet s:keepcpo
+
+" ================
+"  Modelines: {{{1
+" ================
+" vim: ts=4 fdm=marker
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/file_line.vim
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/file_line.vim	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/file_line.vim	(revision 21239)
@@ -0,0 +1,51 @@
+" Avoid installing twice or when in unsupported Vim version.
+if exists('g:loaded_file_line') || (v:version < 700)
+	finish
+endif
+let g:loaded_file_line = 1
+
+function! s:gotoline()
+	let file = bufname("%")
+
+	" :e command calls BufRead even though the file is a new one.
+	" As a workarround Jonas Pfenniger<jonas@pfenniger.name> added an
+	" AutoCmd BufRead, this will test if this file actually exists before
+	" searching for a file and line to goto.
+	if (filereadable(file))
+		return
+	endif
+
+	" Accept file:line:column: or file:line:column and file:line also
+	let nocol = 0
+	let names =  matchlist( file, '\(.\{-1,}\):\%(\(\d\+\)\%(:\(\d*\):\?\)\?\)\?$')
+
+	if empty(names)
+		"no column provided maybe?
+		let names =  matchlist( file, '\(.*\):\(\d\+\)')
+		let nocol = 1
+		if empty(names)
+			return
+		endif
+	endif
+
+	let file_name =  names[1]
+	let line_num  =  names[2] == ''? '0' : names[2]
+	let  col_num  = (names[3] == '' && !nocol) ? '0' : names[3]
+
+	if filereadable(file_name)
+		let l:bufn = bufnr("%")
+		exec ":bwipeout " l:bufn
+
+		exec "keepalt edit " . file_name
+		exec ":" . line_num
+		exec "normal! " . col_num . '|'
+		if foldlevel(line_num) > 0
+			exec "normal! zv"
+		endif
+
+		exec "normal! zz"
+	endif
+endfunction
+
+autocmd! BufNewFile *:* nested call s:gotoline()
+autocmd! BufRead *:* nested call s:gotoline()
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/issmfolds.vim
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/issmfolds.vim	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/issmfolds.vim	(revision 21239)
@@ -0,0 +1,45 @@
+function! IssmFoldText()
+
+	" Get line {{{
+	let line = getline(v:foldstart)
+	"let line = line . '--'
+	"}}}
+	" remove the marker that caused this fold from the display {{{
+	let foldmarkers = split(&foldmarker,',')
+	let line = substitute(line, '\V' .  foldmarkers[0] . '\%(\d\+\)\?', ' ', '')
+	" }}}
+	" remove comments that vim knows about {{{
+	let comment = split(&commentstring, '%s')
+	if comment[0] != ''
+		let comment_begin = comment[0]
+		let comment_end = ''
+		if len(comment) > 1
+			let comment_end = comment[1]
+		end
+		let pattern = '\V' .  comment_begin .  '\s\*' .  comment_end .  '\s\*\$'
+		if line =~ pattern
+			let line = substitute(line, pattern, ' ', '')
+		else
+			let line = substitute(line, '.*\V' .  comment_begin, ' ', '')
+			if comment_end != ''
+				let line = substitute(line, '\V' .  comment_end, ' ', '')
+			endif
+		endif
+	endif
+	" }}}
+	" remove any remaining leading or trailing whitespace {{{
+	"let line = substitute(line, '^\s*\(.\{-}\)\s*$', '\1', '')
+	let line = substitute(line, '^\s*%\(.\{-}\)\s*$', '\1', '') "Also remove % in matlab comments
+	" }}}
+	" align everything, and pad the end of the display with - {{{
+	let alignment = &columns - 18 - v:foldlevel
+	let line = strpart(printf('%-'.alignment.'s',line),0,alignment)
+	"let line = substitute(line, '\%( \)\@<= \%( *$\)\@=', '-', 'g') " ->dashes
+	let line = substitute(line, '\%( \)\@<= \%( *$\)\@=',' ', 'g')  " ->white spaces
+	" }}}
+	" format the line count {{{
+	let cnt = printf('%13s','('.(v:foldend - v:foldstart + 1) .' lines) ')
+	" }}}
+	return '+-'.v:folddashes.' '.line.cnt
+
+endfunction
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/matchit.vim
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/matchit.vim	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/matchit.vim	(revision 21239)
@@ -0,0 +1,812 @@
+"  matchit.vim: (global plugin) Extended "%" matching
+"  Last Change: Fri Jan 25 10:00 AM 2008 EST
+"  Maintainer:  Benji Fisher PhD   <benji@member.AMS.org>
+"  Version:     1.13.2, for Vim 6.3+
+"  URL:		http://www.vim.org/script.php?script_id=39
+
+" Documentation:
+"  The documentation is in a separate file, matchit.txt .
+
+" Credits:
+"  Vim editor by Bram Moolenaar (Thanks, Bram!)
+"  Original script and design by Raul Segura Acevedo
+"  Support for comments by Douglas Potts
+"  Support for back references and other improvements by Benji Fisher
+"  Support for many languages by Johannes Zellner
+"  Suggestions for improvement, bug reports, and support for additional
+"  languages by Jordi-Albert Batalla, Neil Bird, Servatius Brandt, Mark
+"  Collett, Stephen Wall, Dany St-Amant, Yuheng Xie, and Johannes Zellner.
+
+" Debugging:
+"  If you'd like to try the built-in debugging commands...
+"   :MatchDebug      to activate debugging for the current buffer
+"  This saves the values of several key script variables as buffer-local
+"  variables.  See the MatchDebug() function, below, for details.
+
+" TODO:  I should think about multi-line patterns for b:match_words.
+"   This would require an option:  how many lines to scan (default 1).
+"   This would be useful for Python, maybe also for *ML.
+" TODO:  Maybe I should add a menu so that people will actually use some of
+"   the features that I have implemented.
+" TODO:  Eliminate the MultiMatch function.  Add yet another argument to
+"   Match_wrapper() instead.
+" TODO:  Allow :let b:match_words = '\(\(foo\)\(bar\)\):\3\2:end\1'
+" TODO:  Make backrefs safer by using '\V' (very no-magic).
+" TODO:  Add a level of indirection, so that custom % scripts can use my
+"   work but extend it.
+
+" allow user to prevent loading
+" and prevent duplicate loading
+if exists("loaded_matchit") || &cp
+  finish
+endif
+let loaded_matchit = 1
+let s:last_mps = ""
+let s:last_words = ":"
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+nnoremap <silent> %  :<C-U>call <SID>Match_wrapper('',1,'n') <CR>
+nnoremap <silent> g% :<C-U>call <SID>Match_wrapper('',0,'n') <CR>
+vnoremap <silent> %  :<C-U>call <SID>Match_wrapper('',1,'v') <CR>m'gv``
+vnoremap <silent> g% :<C-U>call <SID>Match_wrapper('',0,'v') <CR>m'gv``
+onoremap <silent> %  v:<C-U>call <SID>Match_wrapper('',1,'o') <CR>
+onoremap <silent> g% v:<C-U>call <SID>Match_wrapper('',0,'o') <CR>
+
+" Analogues of [{ and ]} using matching patterns:
+nnoremap <silent> [% :<C-U>call <SID>MultiMatch("bW", "n") <CR>
+nnoremap <silent> ]% :<C-U>call <SID>MultiMatch("W",  "n") <CR>
+vmap [% <Esc>[%m'gv``
+vmap ]% <Esc>]%m'gv``
+" vnoremap <silent> [% :<C-U>call <SID>MultiMatch("bW", "v") <CR>m'gv``
+" vnoremap <silent> ]% :<C-U>call <SID>MultiMatch("W",  "v") <CR>m'gv``
+onoremap <silent> [% v:<C-U>call <SID>MultiMatch("bW", "o") <CR>
+onoremap <silent> ]% v:<C-U>call <SID>MultiMatch("W",  "o") <CR>
+
+" text object:
+vmap a% <Esc>[%v]%
+
+" Auto-complete mappings:  (not yet "ready for prime time")
+" TODO Read :help write-plugin for the "right" way to let the user
+" specify a key binding.
+"   let g:match_auto = '<C-]>'
+"   let g:match_autoCR = '<C-CR>'
+" if exists("g:match_auto")
+"   execute "inoremap " . g:match_auto . ' x<Esc>"=<SID>Autocomplete()<CR>Pls'
+" endif
+" if exists("g:match_autoCR")
+"   execute "inoremap " . g:match_autoCR . ' <CR><C-R>=<SID>Autocomplete()<CR>'
+" endif
+" if exists("g:match_gthhoh")
+"   execute "inoremap " . g:match_gthhoh . ' <C-O>:call <SID>Gthhoh()<CR>'
+" endif " gthhoh = "Get the heck out of here!"
+
+let s:notslash = '\\\@<!\%(\\\\\)*'
+
+function! s:Match_wrapper(word, forward, mode) range
+  " In s:CleanUp(), :execute "set" restore_options .
+  let restore_options = (&ic ? " " : " no") . "ignorecase"
+  if exists("b:match_ignorecase")
+    let &ignorecase = b:match_ignorecase
+  endif
+  let restore_options = " ve=" . &ve . restore_options
+  set ve=
+  " If this function was called from Visual mode, make sure that the cursor
+  " is at the correct end of the Visual range:
+  if a:mode == "v"
+    execute "normal! gv\<Esc>"
+  endif
+  " In s:CleanUp(), we may need to check whether the cursor moved forward.
+  let startline = line(".")
+  let startcol = col(".")
+  " Use default behavior if called with a count.
+  if v:count
+    exe "normal! " . v:count . "%"
+    return s:CleanUp(restore_options, a:mode, startline, startcol)
+  end
+
+  " First step:  if not already done, set the script variables
+  "   s:do_BR	flag for whether there are backrefs
+  "   s:pat	parsed version of b:match_words
+  "   s:all	regexp based on s:pat and the default groups
+  "
+  if !exists("b:match_words") || b:match_words == ""
+    let match_words = ""
+    " Allow b:match_words = "GetVimMatchWords()" .
+  elseif b:match_words =~ ":"
+    let match_words = b:match_words
+  else
+    execute "let match_words =" b:match_words
+  endif
+" Thanks to Preben "Peppe" Guldberg and Bram Moolenaar for this suggestion!
+  if (match_words != s:last_words) || (&mps != s:last_mps) ||
+    \ exists("b:match_debug")
+    let s:last_words = match_words
+    let s:last_mps = &mps
+    " The next several lines were here before
+    " BF started messing with this script.
+    " quote the special chars in 'matchpairs', replace [,:] with \| and then
+    " append the builtin pairs (/*, */, #if, #ifdef, #else, #elif, #endif)
+    " let default = substitute(escape(&mps, '[$^.*~\\/?]'), '[,:]\+',
+    "  \ '\\|', 'g').'\|\/\*\|\*\/\|#if\>\|#ifdef\>\|#else\>\|#elif\>\|#endif\>'
+    let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") .
+      \ '\/\*:\*\/,#if\%(def\)\=:#else\>:#elif\>:#endif\>'
+    " s:all = pattern with all the keywords
+    let match_words = match_words . (strlen(match_words) ? "," : "") . default
+    if match_words !~ s:notslash . '\\\d'
+      let s:do_BR = 0
+      let s:pat = match_words
+    else
+      let s:do_BR = 1
+      let s:pat = s:ParseWords(match_words)
+    endif
+    let s:all = substitute(s:pat, s:notslash . '\zs[,:]\+', '\\|', 'g')
+    let s:all = '\%(' . s:all . '\)'
+    " let s:all = '\%(' . substitute(s:all, '\\\ze[,:]', '', 'g') . '\)'
+    if exists("b:match_debug")
+      let b:match_pat = s:pat
+    endif
+  endif
+
+  " Second step:  set the following local variables:
+  "     matchline = line on which the cursor started
+  "     curcol    = number of characters before match
+  "     prefix    = regexp for start of line to start of match
+  "     suffix    = regexp for end of match to end of line
+  " Require match to end on or after the cursor and prefer it to
+  " start on or before the cursor.
+  let matchline = getline(startline)
+  if a:word != ''
+    " word given
+    if a:word !~ s:all
+      echohl WarningMsg|echo 'Missing rule for word:"'.a:word.'"'|echohl NONE
+      return s:CleanUp(restore_options, a:mode, startline, startcol)
+    endif
+    let matchline = a:word
+    let curcol = 0
+    let prefix = '^\%('
+    let suffix = '\)$'
+  " Now the case when "word" is not given
+  else	" Find the match that ends on or after the cursor and set curcol.
+    let regexp = s:Wholematch(matchline, s:all, startcol-1)
+    let curcol = match(matchline, regexp)
+    " If there is no match, give up.
+    if curcol == -1
+      return s:CleanUp(restore_options, a:mode, startline, startcol)
+    endif
+    let endcol = matchend(matchline, regexp)
+    let suf = strlen(matchline) - endcol
+    let prefix = (curcol ? '^.*\%'  . (curcol + 1) . 'c\%(' : '^\%(')
+    let suffix = (suf ? '\)\%' . (endcol + 1) . 'c.*$'  : '\)$')
+  endif
+  if exists("b:match_debug")
+    let b:match_match = matchstr(matchline, regexp)
+    let b:match_col = curcol+1
+  endif
+
+  " Third step:  Find the group and single word that match, and the original
+  " (backref) versions of these.  Then, resolve the backrefs.
+  " Set the following local variable:
+  " group = colon-separated list of patterns, one of which matches
+  "       = ini:mid:fin or ini:fin
+  "
+  " Reconstruct the version with unresolved backrefs.
+  let patBR = substitute(match_words.',',
+    \ s:notslash.'\zs[,:]*,[,:]*', ',', 'g')
+  let patBR = substitute(patBR, s:notslash.'\zs:\{2,}', ':', 'g')
+  " Now, set group and groupBR to the matching group: 'if:endif' or
+  " 'while:endwhile' or whatever.  A bit of a kluge:  s:Choose() returns
+  " group . "," . groupBR, and we pick it apart.
+  let group = s:Choose(s:pat, matchline, ",", ":", prefix, suffix, patBR)
+  let i = matchend(group, s:notslash . ",")
+  let groupBR = strpart(group, i)
+  let group = strpart(group, 0, i-1)
+  " Now, matchline =~ prefix . substitute(group,':','\|','g') . suffix
+  if s:do_BR " Do the hard part:  resolve those backrefs!
+    let group = s:InsertRefs(groupBR, prefix, group, suffix, matchline)
+  endif
+  if exists("b:match_debug")
+    let b:match_wholeBR = groupBR
+    let i = matchend(groupBR, s:notslash . ":")
+    let b:match_iniBR = strpart(groupBR, 0, i-1)
+  endif
+
+  " Fourth step:  Set the arguments for searchpair().
+  let i = matchend(group, s:notslash . ":")
+  let j = matchend(group, '.*' . s:notslash . ":")
+  let ini = strpart(group, 0, i-1)
+  let mid = substitute(strpart(group, i,j-i-1), s:notslash.'\zs:', '\\|', 'g')
+  let fin = strpart(group, j)
+  "Un-escape the remaining , and : characters.
+  let ini = substitute(ini, s:notslash . '\zs\\\(:\|,\)', '\1', 'g')
+  let mid = substitute(mid, s:notslash . '\zs\\\(:\|,\)', '\1', 'g')
+  let fin = substitute(fin, s:notslash . '\zs\\\(:\|,\)', '\1', 'g')
+  " searchpair() requires that these patterns avoid \(\) groups.
+  let ini = substitute(ini, s:notslash . '\zs\\(', '\\%(', 'g')
+  let mid = substitute(mid, s:notslash . '\zs\\(', '\\%(', 'g')
+  let fin = substitute(fin, s:notslash . '\zs\\(', '\\%(', 'g')
+  " Set mid.  This is optimized for readability, not micro-efficiency!
+  if a:forward && matchline =~ prefix . fin . suffix
+    \ || !a:forward && matchline =~ prefix . ini . suffix
+    let mid = ""
+  endif
+  " Set flag.  This is optimized for readability, not micro-efficiency!
+  if a:forward && matchline =~ prefix . fin . suffix
+    \ || !a:forward && matchline !~ prefix . ini . suffix
+    let flag = "bW"
+  else
+    let flag = "W"
+  endif
+  " Set skip.
+  if exists("b:match_skip")
+    let skip = b:match_skip
+  elseif exists("b:match_comment") " backwards compatibility and testing!
+    let skip = "r:" . b:match_comment
+  else
+    let skip = 's:comment\|string'
+  endif
+  let skip = s:ParseSkip(skip)
+  if exists("b:match_debug")
+    let b:match_ini = ini
+    let b:match_tail = (strlen(mid) ? mid.'\|' : '') . fin
+  endif
+
+  " Fifth step:  actually start moving the cursor and call searchpair().
+  " Later, :execute restore_cursor to get to the original screen.
+  let restore_cursor = virtcol(".") . "|"
+  normal! g0
+  let restore_cursor = line(".") . "G" .  virtcol(".") . "|zs" . restore_cursor
+  normal! H
+  let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor
+  execute restore_cursor
+  call cursor(0, curcol + 1)
+  " normal! 0
+  " if curcol
+  "   execute "normal!" . curcol . "l"
+  " endif
+  if skip =~ 'synID' && !(has("syntax") && exists("g:syntax_on"))
+    let skip = "0"
+  else
+    execute "if " . skip . "| let skip = '0' | endif"
+  endif
+  let sp_return = searchpair(ini, mid, fin, flag, skip)
+  let final_position = "call cursor(" . line(".") . "," . col(".") . ")"
+  " Restore cursor position and original screen.
+  execute restore_cursor
+  normal! m'
+  if sp_return > 0
+    execute final_position
+  endif
+  return s:CleanUp(restore_options, a:mode, startline, startcol, mid.'\|'.fin)
+endfun
+
+" Restore options and do some special handling for Operator-pending mode.
+" The optional argument is the tail of the matching group.
+fun! s:CleanUp(options, mode, startline, startcol, ...)
+  execute "set" a:options
+  " Open folds, if appropriate.
+  if a:mode != "o"
+    if &foldopen =~ "percent"
+      normal! zv
+    endif
+    " In Operator-pending mode, we want to include the whole match
+    " (for example, d%).
+    " This is only a problem if we end up moving in the forward direction.
+  elseif (a:startline < line(".")) ||
+	\ (a:startline == line(".") && a:startcol < col("."))
+    if a:0
+      " Check whether the match is a single character.  If not, move to the
+      " end of the match.
+      let matchline = getline(".")
+      let currcol = col(".")
+      let regexp = s:Wholematch(matchline, a:1, currcol-1)
+      let endcol = matchend(matchline, regexp)
+      if endcol > currcol  " This is NOT off by one!
+	execute "normal!" . (endcol - currcol) . "l"
+      endif
+    endif " a:0
+  endif " a:mode != "o" && etc.
+  return 0
+endfun
+
+" Example (simplified HTML patterns):  if
+"   a:groupBR	= '<\(\k\+\)>:</\1>'
+"   a:prefix	= '^.\{3}\('
+"   a:group	= '<\(\k\+\)>:</\(\k\+\)>'
+"   a:suffix	= '\).\{2}$'
+"   a:matchline	=  "123<tag>12" or "123</tag>12"
+" then extract "tag" from a:matchline and return "<tag>:</tag>" .
+fun! s:InsertRefs(groupBR, prefix, group, suffix, matchline)
+  if a:matchline !~ a:prefix .
+    \ substitute(a:group, s:notslash . '\zs:', '\\|', 'g') . a:suffix
+    return a:group
+  endif
+  let i = matchend(a:groupBR, s:notslash . ':')
+  let ini = strpart(a:groupBR, 0, i-1)
+  let tailBR = strpart(a:groupBR, i)
+  let word = s:Choose(a:group, a:matchline, ":", "", a:prefix, a:suffix,
+    \ a:groupBR)
+  let i = matchend(word, s:notslash . ":")
+  let wordBR = strpart(word, i)
+  let word = strpart(word, 0, i-1)
+  " Now, a:matchline =~ a:prefix . word . a:suffix
+  if wordBR != ini
+    let table = s:Resolve(ini, wordBR, "table")
+  else
+    " let table = "----------"
+    let table = ""
+    let d = 0
+    while d < 10
+      if tailBR =~ s:notslash . '\\' . d
+	" let table[d] = d
+	let table = table . d
+      else
+	let table = table . "-"
+      endif
+      let d = d + 1
+    endwhile
+  endif
+  let d = 9
+  while d
+    if table[d] != "-"
+      let backref = substitute(a:matchline, a:prefix.word.a:suffix,
+	\ '\'.table[d], "")
+	" Are there any other characters that should be escaped?
+      let backref = escape(backref, '*,:')
+      execute s:Ref(ini, d, "start", "len")
+      let ini = strpart(ini, 0, start) . backref . strpart(ini, start+len)
+      let tailBR = substitute(tailBR, s:notslash . '\zs\\' . d,
+	\ escape(backref, '\\'), 'g')
+    endif
+    let d = d-1
+  endwhile
+  if exists("b:match_debug")
+    if s:do_BR
+      let b:match_table = table
+      let b:match_word = word
+    else
+      let b:match_table = ""
+      let b:match_word = ""
+    endif
+  endif
+  return ini . ":" . tailBR
+endfun
+
+" Input a comma-separated list of groups with backrefs, such as
+"   a:groups = '\(foo\):end\1,\(bar\):end\1'
+" and return a comma-separated list of groups with backrefs replaced:
+"   return '\(foo\):end\(foo\),\(bar\):end\(bar\)'
+fun! s:ParseWords(groups)
+  let groups = substitute(a:groups.",", s:notslash.'\zs[,:]*,[,:]*', ',', 'g')
+  let groups = substitute(groups, s:notslash . '\zs:\{2,}', ':', 'g')
+  let parsed = ""
+  while groups =~ '[^,:]'
+    let i = matchend(groups, s:notslash . ':')
+    let j = matchend(groups, s:notslash . ',')
+    let ini = strpart(groups, 0, i-1)
+    let tail = strpart(groups, i, j-i-1) . ":"
+    let groups = strpart(groups, j)
+    let parsed = parsed . ini
+    let i = matchend(tail, s:notslash . ':')
+    while i != -1
+      " In 'if:else:endif', ini='if' and word='else' and then word='endif'.
+      let word = strpart(tail, 0, i-1)
+      let tail = strpart(tail, i)
+      let i = matchend(tail, s:notslash . ':')
+      let parsed = parsed . ":" . s:Resolve(ini, word, "word")
+    endwhile " Now, tail has been used up.
+    let parsed = parsed . ","
+  endwhile " groups =~ '[^,:]'
+  let parsed = substitute(parsed, ',$', '', '')
+  return parsed
+endfun
+
+" TODO I think this can be simplified and/or made more efficient.
+" TODO What should I do if a:start is out of range?
+" Return a regexp that matches all of a:string, such that
+" matchstr(a:string, regexp) represents the match for a:pat that starts
+" as close to a:start as possible, before being preferred to after, and
+" ends after a:start .
+" Usage:
+" let regexp = s:Wholematch(getline("."), 'foo\|bar', col(".")-1)
+" let i      = match(getline("."), regexp)
+" let j      = matchend(getline("."), regexp)
+" let match  = matchstr(getline("."), regexp)
+fun! s:Wholematch(string, pat, start)
+  let group = '\%(' . a:pat . '\)'
+  let prefix = (a:start ? '\(^.*\%<' . (a:start + 2) . 'c\)\zs' : '^')
+  let len = strlen(a:string)
+  let suffix = (a:start+1 < len ? '\(\%>'.(a:start+1).'c.*$\)\@=' : '$')
+  if a:string !~ prefix . group . suffix
+    let prefix = ''
+  endif
+  return prefix . group . suffix
+endfun
+
+" No extra arguments:  s:Ref(string, d) will
+" find the d'th occurrence of '\(' and return it, along with everything up
+" to and including the matching '\)'.
+" One argument:  s:Ref(string, d, "start") returns the index of the start
+" of the d'th '\(' and any other argument returns the length of the group.
+" Two arguments:  s:Ref(string, d, "foo", "bar") returns a string to be
+" executed, having the effect of
+"   :let foo = s:Ref(string, d, "start")
+"   :let bar = s:Ref(string, d, "len")
+fun! s:Ref(string, d, ...)
+  let len = strlen(a:string)
+  if a:d == 0
+    let start = 0
+  else
+    let cnt = a:d
+    let match = a:string
+    while cnt
+      let cnt = cnt - 1
+      let index = matchend(match, s:notslash . '\\(')
+      if index == -1
+	return ""
+      endif
+      let match = strpart(match, index)
+    endwhile
+    let start = len - strlen(match)
+    if a:0 == 1 && a:1 == "start"
+      return start - 2
+    endif
+    let cnt = 1
+    while cnt
+      let index = matchend(match, s:notslash . '\\(\|\\)') - 1
+      if index == -2
+	return ""
+      endif
+      " Increment if an open, decrement if a ')':
+      let cnt = cnt + (match[index]=="(" ? 1 : -1)  " ')'
+      " let cnt = stridx('0(', match[index]) + cnt
+      let match = strpart(match, index+1)
+    endwhile
+    let start = start - 2
+    let len = len - start - strlen(match)
+  endif
+  if a:0 == 1
+    return len
+  elseif a:0 == 2
+    return "let " . a:1 . "=" . start . "| let " . a:2 . "=" . len
+  else
+    return strpart(a:string, start, len)
+  endif
+endfun
+
+" Count the number of disjoint copies of pattern in string.
+" If the pattern is a literal string and contains no '0' or '1' characters
+" then s:Count(string, pattern, '0', '1') should be faster than
+" s:Count(string, pattern).
+fun! s:Count(string, pattern, ...)
+  let pat = escape(a:pattern, '\\')
+  if a:0 > 1
+    let foo = substitute(a:string, '[^'.a:pattern.']', "a:1", "g")
+    let foo = substitute(a:string, pat, a:2, "g")
+    let foo = substitute(foo, '[^' . a:2 . ']', "", "g")
+    return strlen(foo)
+  endif
+  let result = 0
+  let foo = a:string
+  let index = matchend(foo, pat)
+  while index != -1
+    let result = result + 1
+    let foo = strpart(foo, index)
+    let index = matchend(foo, pat)
+  endwhile
+  return result
+endfun
+
+" s:Resolve('\(a\)\(b\)', '\(c\)\2\1\1\2') should return table.word, where
+" word = '\(c\)\(b\)\(a\)\3\2' and table = '-32-------'.  That is, the first
+" '\1' in target is replaced by '\(a\)' in word, table[1] = 3, and this
+" indicates that all other instances of '\1' in target are to be replaced
+" by '\3'.  The hard part is dealing with nesting...
+" Note that ":" is an illegal character for source and target,
+" unless it is preceded by "\".
+fun! s:Resolve(source, target, output)
+  let word = a:target
+  let i = matchend(word, s:notslash . '\\\d') - 1
+  let table = "----------"
+  while i != -2 " There are back references to be replaced.
+    let d = word[i]
+    let backref = s:Ref(a:source, d)
+    " The idea is to replace '\d' with backref.  Before we do this,
+    " replace any \(\) groups in backref with :1, :2, ... if they
+    " correspond to the first, second, ... group already inserted
+    " into backref.  Later, replace :1 with \1 and so on.  The group
+    " number w+b within backref corresponds to the group number
+    " s within a:source.
+    " w = number of '\(' in word before the current one
+    let w = s:Count(
+    \ substitute(strpart(word, 0, i-1), '\\\\', '', 'g'), '\(', '1')
+    let b = 1 " number of the current '\(' in backref
+    let s = d " number of the current '\(' in a:source
+    while b <= s:Count(substitute(backref, '\\\\', '', 'g'), '\(', '1')
+    \ && s < 10
+      if table[s] == "-"
+	if w + b < 10
+	  " let table[s] = w + b
+	  let table = strpart(table, 0, s) . (w+b) . strpart(table, s+1)
+	endif
+	let b = b + 1
+	let s = s + 1
+      else
+	execute s:Ref(backref, b, "start", "len")
+	let ref = strpart(backref, start, len)
+	let backref = strpart(backref, 0, start) . ":". table[s]
+	\ . strpart(backref, start+len)
+	let s = s + s:Count(substitute(ref, '\\\\', '', 'g'), '\(', '1')
+      endif
+    endwhile
+    let word = strpart(word, 0, i-1) . backref . strpart(word, i+1)
+    let i = matchend(word, s:notslash . '\\\d') - 1
+  endwhile
+  let word = substitute(word, s:notslash . '\zs:', '\\', 'g')
+  if a:output == "table"
+    return table
+  elseif a:output == "word"
+    return word
+  else
+    return table . word
+  endif
+endfun
+
+" Assume a:comma = ",".  Then the format for a:patterns and a:1 is
+"   a:patterns = "<pat1>,<pat2>,..."
+"   a:1 = "<alt1>,<alt2>,..."
+" If <patn> is the first pattern that matches a:string then return <patn>
+" if no optional arguments are given; return <patn>,<altn> if a:1 is given.
+fun! s:Choose(patterns, string, comma, branch, prefix, suffix, ...)
+  let tail = (a:patterns =~ a:comma."$" ? a:patterns : a:patterns . a:comma)
+  let i = matchend(tail, s:notslash . a:comma)
+  if a:0
+    let alttail = (a:1 =~ a:comma."$" ? a:1 : a:1 . a:comma)
+    let j = matchend(alttail, s:notslash . a:comma)
+  endif
+  let current = strpart(tail, 0, i-1)
+  if a:branch == ""
+    let currpat = current
+  else
+    let currpat = substitute(current, s:notslash . a:branch, '\\|', 'g')
+  endif
+  while a:string !~ a:prefix . currpat . a:suffix
+    let tail = strpart(tail, i)
+    let i = matchend(tail, s:notslash . a:comma)
+    if i == -1
+      return -1
+    endif
+    let current = strpart(tail, 0, i-1)
+    if a:branch == ""
+      let currpat = current
+    else
+      let currpat = substitute(current, s:notslash . a:branch, '\\|', 'g')
+    endif
+    if a:0
+      let alttail = strpart(alttail, j)
+      let j = matchend(alttail, s:notslash . a:comma)
+    endif
+  endwhile
+  if a:0
+    let current = current . a:comma . strpart(alttail, 0, j-1)
+  endif
+  return current
+endfun
+
+" Call this function to turn on debugging information.  Every time the main
+" script is run, buffer variables will be saved.  These can be used directly
+" or viewed using the menu items below.
+if !exists(":MatchDebug")
+  command! -nargs=0 MatchDebug call s:Match_debug()
+endif
+
+fun! s:Match_debug()
+  let b:match_debug = 1	" Save debugging information.
+  " pat = all of b:match_words with backrefs parsed
+  amenu &Matchit.&pat	:echo b:match_pat<CR>
+  " match = bit of text that is recognized as a match
+  amenu &Matchit.&match	:echo b:match_match<CR>
+  " curcol = cursor column of the start of the matching text
+  amenu &Matchit.&curcol	:echo b:match_col<CR>
+  " wholeBR = matching group, original version
+  amenu &Matchit.wh&oleBR	:echo b:match_wholeBR<CR>
+  " iniBR = 'if' piece, original version
+  amenu &Matchit.ini&BR	:echo b:match_iniBR<CR>
+  " ini = 'if' piece, with all backrefs resolved from match
+  amenu &Matchit.&ini	:echo b:match_ini<CR>
+  " tail = 'else\|endif' piece, with all backrefs resolved from match
+  amenu &Matchit.&tail	:echo b:match_tail<CR>
+  " fin = 'endif' piece, with all backrefs resolved from match
+  amenu &Matchit.&word	:echo b:match_word<CR>
+  " '\'.d in ini refers to the same thing as '\'.table[d] in word.
+  amenu &Matchit.t&able	:echo '0:' . b:match_table . ':9'<CR>
+endfun
+
+" Jump to the nearest unmatched "(" or "if" or "<tag>" if a:spflag == "bW"
+" or the nearest unmatched "</tag>" or "endif" or ")" if a:spflag == "W".
+" Return a "mark" for the original position, so that
+"   let m = MultiMatch("bW", "n") ... execute m
+" will return to the original position.  If there is a problem, do not
+" move the cursor and return "", unless a count is given, in which case
+" go up or down as many levels as possible and again return "".
+" TODO This relies on the same patterns as % matching.  It might be a good
+" idea to give it its own matching patterns.
+fun! s:MultiMatch(spflag, mode)
+  if !exists("b:match_words") || b:match_words == ""
+    return ""
+  end
+  let restore_options = (&ic ? "" : "no") . "ignorecase"
+  if exists("b:match_ignorecase")
+    let &ignorecase = b:match_ignorecase
+  endif
+  let startline = line(".")
+  let startcol = col(".")
+
+  " First step:  if not already done, set the script variables
+  "   s:do_BR	flag for whether there are backrefs
+  "   s:pat	parsed version of b:match_words
+  "   s:all	regexp based on s:pat and the default groups
+  " This part is copied and slightly modified from s:Match_wrapper().
+  let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") .
+    \ '\/\*:\*\/,#if\%(def\)\=:#else\>:#elif\>:#endif\>'
+  " Allow b:match_words = "GetVimMatchWords()" .
+  if b:match_words =~ ":"
+    let match_words = b:match_words
+  else
+    execute "let match_words =" b:match_words
+  endif
+  if (match_words != s:last_words) || (&mps != s:last_mps) ||
+    \ exists("b:match_debug")
+    let s:last_words = match_words
+    let s:last_mps = &mps
+    if match_words !~ s:notslash . '\\\d'
+      let s:do_BR = 0
+      let s:pat = match_words
+    else
+      let s:do_BR = 1
+      let s:pat = s:ParseWords(match_words)
+    endif
+    let s:all = '\%(' . substitute(s:pat . (strlen(s:pat)?",":"") . default,
+      \	'[,:]\+','\\|','g') . '\)'
+    if exists("b:match_debug")
+      let b:match_pat = s:pat
+    endif
+  endif
+
+  " Second step:  figure out the patterns for searchpair()
+  " and save the screen, cursor position, and 'ignorecase'.
+  " - TODO:  A lot of this is copied from s:Match_wrapper().
+  " - maybe even more functionality should be split off
+  " - into separate functions!
+  let cdefault = (s:pat =~ '[^,]$' ? "," : "") . default
+  let open =  substitute(s:pat . cdefault,
+	\ s:notslash . '\zs:.\{-}' . s:notslash . ',', '\\),\\(', 'g')
+  let open =  '\(' . substitute(open, s:notslash . '\zs:.*$', '\\)', '')
+  let close = substitute(s:pat . cdefault,
+	\ s:notslash . '\zs,.\{-}' . s:notslash . ':', '\\),\\(', 'g')
+  let close = substitute(close, '^.\{-}' . s:notslash . ':', '\\(', '') . '\)'
+  if exists("b:match_skip")
+    let skip = b:match_skip
+  elseif exists("b:match_comment") " backwards compatibility and testing!
+    let skip = "r:" . b:match_comment
+  else
+    let skip = 's:comment\|string'
+  endif
+  let skip = s:ParseSkip(skip)
+  " let restore_cursor = line(".") . "G" . virtcol(".") . "|"
+  " normal! H
+  " let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor
+  let restore_cursor = virtcol(".") . "|"
+  normal! g0
+  let restore_cursor = line(".") . "G" .  virtcol(".") . "|zs" . restore_cursor
+  normal! H
+  let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor
+  execute restore_cursor
+
+  " Third step: call searchpair().
+  " Replace '\('--but not '\\('--with '\%(' and ',' with '\|'.
+  let openpat =  substitute(open, '\(\\\@<!\(\\\\\)*\)\@<=\\(', '\\%(', 'g')
+  let openpat = substitute(openpat, ',', '\\|', 'g')
+  let closepat = substitute(close, '\(\\\@<!\(\\\\\)*\)\@<=\\(', '\\%(', 'g')
+  let closepat = substitute(closepat, ',', '\\|', 'g')
+  if skip =~ 'synID' && !(has("syntax") && exists("g:syntax_on"))
+    let skip = '0'
+  else
+    execute "if " . skip . "| let skip = '0' | endif"
+  endif
+  mark '
+  let level = v:count1
+  while level
+    if searchpair(openpat, '', closepat, a:spflag, skip) < 1
+      call s:CleanUp(restore_options, a:mode, startline, startcol)
+      return ""
+    endif
+    let level = level - 1
+  endwhile
+
+  " Restore options and return a string to restore the original position.
+  call s:CleanUp(restore_options, a:mode, startline, startcol)
+  return restore_cursor
+endfun
+
+" Search backwards for "if" or "while" or "<tag>" or ...
+" and return "endif" or "endwhile" or "</tag>" or ... .
+" For now, this uses b:match_words and the same script variables
+" as s:Match_wrapper() .  Later, it may get its own patterns,
+" either from a buffer variable or passed as arguments.
+" fun! s:Autocomplete()
+"   echo "autocomplete not yet implemented :-("
+"   if !exists("b:match_words") || b:match_words == ""
+"     return ""
+"   end
+"   let startpos = s:MultiMatch("bW")
+"
+"   if startpos == ""
+"     return ""
+"   endif
+"   " - TODO:  figure out whether 'if' or '<tag>' matched, and construct
+"   " - the appropriate closing.
+"   let matchline = getline(".")
+"   let curcol = col(".") - 1
+"   " - TODO:  Change the s:all argument if there is a new set of match pats.
+"   let regexp = s:Wholematch(matchline, s:all, curcol)
+"   let suf = strlen(matchline) - matchend(matchline, regexp)
+"   let prefix = (curcol ? '^.\{'  . curcol . '}\%(' : '^\%(')
+"   let suffix = (suf ? '\).\{' . suf . '}$'  : '\)$')
+"   " Reconstruct the version with unresolved backrefs.
+"   let patBR = substitute(b:match_words.',', '[,:]*,[,:]*', ',', 'g')
+"   let patBR = substitute(patBR, ':\{2,}', ':', "g")
+"   " Now, set group and groupBR to the matching group: 'if:endif' or
+"   " 'while:endwhile' or whatever.
+"   let group = s:Choose(s:pat, matchline, ",", ":", prefix, suffix, patBR)
+"   let i = matchend(group, s:notslash . ",")
+"   let groupBR = strpart(group, i)
+"   let group = strpart(group, 0, i-1)
+"   " Now, matchline =~ prefix . substitute(group,':','\|','g') . suffix
+"   if s:do_BR
+"     let group = s:InsertRefs(groupBR, prefix, group, suffix, matchline)
+"   endif
+" " let g:group = group
+"
+"   " - TODO:  Construct the closing from group.
+"   let fake = "end" . expand("<cword>")
+"   execute startpos
+"   return fake
+" endfun
+
+" Close all open structures.  "Get the heck out of here!"
+" fun! s:Gthhoh()
+"   let close = s:Autocomplete()
+"   while strlen(close)
+"     put=close
+"     let close = s:Autocomplete()
+"   endwhile
+" endfun
+
+" Parse special strings as typical skip arguments for searchpair():
+"   s:foo becomes (current syntax item) =~ foo
+"   S:foo becomes (current syntax item) !~ foo
+"   r:foo becomes (line before cursor) =~ foo
+"   R:foo becomes (line before cursor) !~ foo
+fun! s:ParseSkip(str)
+  let skip = a:str
+  if skip[1] == ":"
+    if skip[0] == "s"
+      let skip = "synIDattr(synID(line('.'),col('.'),1),'name') =~? '" .
+	\ strpart(skip,2) . "'"
+    elseif skip[0] == "S"
+      let skip = "synIDattr(synID(line('.'),col('.'),1),'name') !~? '" .
+	\ strpart(skip,2) . "'"
+    elseif skip[0] == "r"
+      let skip = "strpart(getline('.'),0,col('.'))=~'" . strpart(skip,2). "'"
+    elseif skip[0] == "R"
+      let skip = "strpart(getline('.'),0,col('.'))!~'" . strpart(skip,2). "'"
+    endif
+  endif
+  return skip
+endfun
+
+let &cpo = s:save_cpo
+
+" vim:sts=2:sw=2:
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/skeleton.vim
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/skeleton.vim	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/plugin/skeleton.vim	(revision 21239)
@@ -0,0 +1,97 @@
+" skeleton - Skeleton for newly created files
+" Version: 0.0.2
+" Copyright (C) 2008 kana <http://whileimautomaton.net/>
+" License: MIT license  {{{
+"     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.
+" }}}
+
+if exists('g:loaded_skeleton')
+  finish
+endif
+
+let s:SKELETON_DIR = 'xtr/skeleton/'
+
+
+
+
+command! -bang -bar -complete=customlist,s:cmd_SkeletonLoad_complete -nargs=1
+\ SkeletonLoad
+\ call s:cmd_SkeletonLoad(<q-args>, expand('<abuf>') == '', <bang>0)
+
+function! s:cmd_SkeletonLoad(name, interactive_use_p, banged_p)
+  if &l:buftype != ''
+    if a:interactive_use_p
+      echo 'This buffer is not a normal one.  Skeleton leaves it as is.'
+    endif
+    return
+  endif
+  if (!a:banged_p) && (line('$') != 1 || len(getline(1)) != 0)
+    if a:interactive_use_p
+      echo 'This buffer is not empty.  Skeleton leaves it as is.'
+    endif
+    return
+  endif
+
+  let candidates = split(globpath(&runtimepath, s:SKELETON_DIR.a:name), "\n")
+  if len(candidates) < 1
+    if a:interactive_use_p
+      echo 'Skeleton file is not found:' string(a:name)
+    endif
+    return
+  endif
+
+  " Load skeleton file.
+  if a:banged_p
+    % delete _
+  endif
+  silent keepalt 1 read `=candidates[0]`
+  0 delete _
+
+  return
+endfunction
+
+function! s:cmd_SkeletonLoad_complete(arglead, cmdline, cursorpos)
+  return map(split(globpath(&runtimepath, s:SKELETON_DIR.a:arglead.'*'), "\n"),
+  \          'fnamemodify(v:val, ":t")')
+endfunction
+
+
+
+
+augroup plugin-skeleton
+  autocmd!
+  autocmd BufNewFile *  call s:on_BufNewFile()
+augroup END
+
+function! s:on_BufNewFile()
+  silent doautocmd User plugin-skeleton-detect
+
+  if &l:filetype != ''
+    execute 'SkeletonLoad' &l:filetype
+  endif
+endfunction
+
+
+
+
+let g:loaded_skeleton = 1
+
+" __END__
+" vim: foldmethod=marker
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/syntax/Synchronize.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/syntax/Synchronize.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/syntax/Synchronize.sh	(revision 21239)
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+#Synchronize Enums
+
+#Get all lines of EnumDefinitions.h which hold Enum 
+cat c.vim | sed "/ISSM's Enums begin/,/vim: ts=8/d" > temp
+echo "\"ISSM's Enums begin" >> temp
+cat ../../../../../src/c/shared/Enum/EnumDefinitions.h | grep -e "[0-9]Enum," -e "[a-z]Enum," -e "[A-Z]Enum," | grep -v StringToEnum | sed -e "s/,//g" | awk '{ printf "syn keyword cConstant " $1 "\n"}' >> temp
+echo "\"ISSM's Enums end" >> temp
+cat c.vim | sed "1,/ISSM's Enums end/d" >> temp
+mv temp c.vim
+
+#Synchronize objects
+cat c.vim | sed "/ISSM's objects begin/,/vim: ts=8/d" > temp
+echo "\"ISSM's objects begin" >> temp
+find ../../../../../src/c/classes -name "*.cpp" -o -name "*.h" | sed -e "s/\// /g" -e "s/\.cpp//" -e "s/\.h//" | awk '{print  $(NF)}' | sort | uniq | awk '{ printf "syn keyword cType " $1 "\n"}'>> temp
+find ../../../../../src/c/analyses -name "*Analysis.h" | sed -e "s/\// /g" -e "s/\.cpp//" -e "s/\.h//" | awk '{print  $(NF)}' | sort | uniq | awk '{ printf "syn keyword cType " $1 "\n"}'>> temp
+echo "\"ISSM's objects end" >> temp
+cat c.vim | sed "1,/ISSM's objects end/d" >> temp
+
+mv temp c.vim
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/syntax/c.vim
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/syntax/c.vim	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/syntax/c.vim	(revision 21239)
@@ -0,0 +1,1863 @@
+" Vim syntax file
+" Language:	C
+" Maintainer:	Bram Moolenaar <Bram@vim.org>
+" Last Change:	1999 Dec 02, 2004 Feb 04
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+"hi clear
+
+syn match       cName		"\<[a-zA-Z_][a-zA-Z_0-9]*\>"
+"syn match       cConstant	"\<[A-Z_][A-Z_0-9]\{2,}[A-Za-z_0-9]*\>[^(:]"me=e-1
+"syn match       cConstant	"\<[A-Z_][A-Z_0-9]\{2,}[A-Za-z_0-9]*\>$"
+"syn match       cConstant	"\<_[_0-9]\{1,}\>[^(:]"
+syn match	cFunction	"\<[a-zA-Z_][a-zA-Z_0-9]*\>[^()]*)("me=e-2
+"syn match	cFunction	"\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*)("me=e-2
+syn match	cFunction	"\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*("me=e-1
+syn match	cBraces		"[{}]"
+
+syn keyword cMC			__DI __EI __asm __set_il
+syn keyword cMC			__wait_nop __mul __div __mod __mulu __divu __modu
+syn keyword cAnsiFunction	MULU_ DIVU_ MODU_ MUL_ DIV_ MOD_
+syn keyword cAnsiFunction	main typeof
+syn keyword cAnsiFunction	open close read write lseek dup dup2
+syn keyword cAnsiFunction	fcntl ioctl
+syn keyword cAnsiFunction	wctrans towctrans towupper
+syn keyword cAnsiFunction	towlower wctype iswctype
+syn keyword cAnsiFunction	iswxdigit iswupper iswspace
+syn keyword cAnsiFunction	iswpunct iswprint iswlower
+syn keyword cAnsiFunction	iswgraph iswdigit iswcntrl
+syn keyword cAnsiFunction	iswalpha iswalnum wcsrtombs
+syn keyword cAnsiFunction	mbsrtowcs wcrtomb mbrtowc
+syn keyword cAnsiFunction	mbrlen mbsinit wctob
+syn keyword cAnsiFunction	btowc wcsfxtime wcsftime
+syn keyword cAnsiFunction	wmemset wmemmove wmemcpy
+syn keyword cAnsiFunction	wmemcmp wmemchr wcstok
+syn keyword cAnsiFunction	wcsstr wcsspn wcsrchr
+syn keyword cAnsiFunction	wcspbrk wcslen wcscspn
+syn keyword cAnsiFunction	wcschr wcsxfrm wcsncmp
+syn keyword cAnsiFunction	wcscoll wcscmp wcsncat
+syn keyword cAnsiFunction	wcscat wcsncpy wcscpy
+syn keyword cAnsiFunction	wcstoull wcstoul wcstoll
+syn keyword cAnsiFunction	wcstol wcstold wcstof
+syn keyword cAnsiFunction	wcstod ungetwc putwchar
+syn keyword cAnsiFunction	putwc getwchar getwc
+syn keyword cAnsiFunction	fwide fputws fputwc
+syn keyword cAnsiFunction	fgetws fgetwc wscanf
+syn keyword cAnsiFunction	wprintf vwscanf vwprintf
+syn keyword cAnsiFunction	vswscanf vswprintf vfwscanf
+syn keyword cAnsiFunction	vfwprintf swscanf swprintf
+syn keyword cAnsiFunction	fwscanf fwprintf zonetime
+syn keyword cAnsiFunction	strfxtime strftime localtime
+syn keyword cAnsiFunction	gmtime ctime asctime
+syn keyword cAnsiFunction	time mkxtime mktime
+syn keyword cAnsiFunction	difftime clock strlen
+syn keyword cAnsiFunction	strerror memset strtok
+syn keyword cAnsiFunction	strstr strspn strrchr
+syn keyword cAnsiFunction	strpbrk strcspn strchr
+syn keyword cAnsiFunction	memchr strxfrm strncmp
+syn keyword cAnsiFunction	strcoll strcmp memcmp
+syn keyword cAnsiFunction	strncat strcat strncpy
+syn keyword cAnsiFunction	strcpy memmove memcpy
+syn keyword cAnsiFunction	wcstombs mbstowcs wctomb
+syn keyword cAnsiFunction	mbtowc mblen lldiv
+syn keyword cAnsiFunction	ldiv div llabs
+syn keyword cAnsiFunction	labs abs qsort
+syn keyword cAnsiFunction	bsearch system getenv
+syn keyword cAnsiFunction	exit atexit abort
+syn keyword cAnsiFunction	realloc malloc free
+syn keyword cAnsiFunction	calloc srand rand
+syn keyword cAnsiFunction	strtoull strtoul strtoll
+syn keyword cAnsiFunction	strtol strtold strtof
+syn keyword cAnsiFunction	strtod atoll atol
+syn keyword cAnsiFunction	atoi atof perror
+syn keyword cAnsiFunction	ferror feof clearerr
+syn keyword cAnsiFunction	rewind ftell fsetpos
+syn keyword cAnsiFunction	fseek fgetpos fwrite
+syn keyword cAnsiFunction	fread ungetc puts
+syn keyword cAnsiFunction	putchar putc gets
+syn keyword cAnsiFunction	getchar getc fputs
+syn keyword cAnsiFunction	fputc fgets fgetc
+syn keyword cAnsiFunction	vsscanf vsprintf vsnprintf
+syn keyword cAnsiFunction	vscanf vprintf vfscanf
+syn keyword cAnsiFunction	vfprintf sscanf sprintf
+syn keyword cAnsiFunction	snprintf scanf printf
+syn keyword cAnsiFunction	fscanf fprintf setvbuf
+syn keyword cAnsiFunction	setbuf freopen fopen
+syn keyword cAnsiFunction	fflush fclose tmpnam
+syn keyword cAnsiFunction	tmpfile rename remove
+syn keyword cAnsiFunction	offsetof va_start va_end
+syn keyword cAnsiFunction	va_copy va_arg raise signal
+syn keyword cAnsiFunction	longjmp setjmp isunordered
+syn keyword cAnsiFunction	islessgreater islessequal isless
+syn keyword cAnsiFunction	isgreaterequal isgreater fmal
+syn keyword cAnsiFunction	fmaf fma fminl
+syn keyword cAnsiFunction	fminf fmin fmaxl
+syn keyword cAnsiFunction	fmaxf fmax fdiml
+syn keyword cAnsiFunction	fdimf fdim nextafterxl
+syn keyword cAnsiFunction	nextafterxf nextafterx nextafterl
+syn keyword cAnsiFunction	nextafterf nextafter nanl
+syn keyword cAnsiFunction	nanf nan copysignl
+syn keyword cAnsiFunction	copysignf copysign remquol
+syn keyword cAnsiFunction	remquof remquo remainderl
+syn keyword cAnsiFunction	remainderf remainder fmodl
+syn keyword cAnsiFunction	fmodf fmod truncl
+syn keyword cAnsiFunction	truncf trunc llroundl
+syn keyword cAnsiFunction	llroundf llround lroundl
+syn keyword cAnsiFunction	lroundf lround roundl
+syn keyword cAnsiFunction	roundf round llrintl
+syn keyword cAnsiFunction	llrintf llrint lrintl
+syn keyword cAnsiFunction	lrintf lrint rintl
+syn keyword cAnsiFunction	rintf rint nearbyintl
+syn keyword cAnsiFunction	nearbyintf nearbyint floorl
+syn keyword cAnsiFunction	floorf floor ceill
+syn keyword cAnsiFunction	ceilf ceil tgammal
+syn keyword cAnsiFunction	tgammaf tgamma lgammal
+syn keyword cAnsiFunction	lgammaf lgamma erfcl
+syn keyword cAnsiFunction	erfcf erfc erfl
+syn keyword cAnsiFunction	erff erf sqrtl
+syn keyword cAnsiFunction	sqrtf sqrt powl
+syn keyword cAnsiFunction	powf pow hypotl
+syn keyword cAnsiFunction	hypotf hypot fabsl
+syn keyword cAnsiFunction	fabsf fabs cbrtl
+syn keyword cAnsiFunction	cbrtf cbrt scalblnl
+syn keyword cAnsiFunction	scalblnf scalbln scalbnl
+syn keyword cAnsiFunction	scalbnf scalbn modfl
+syn keyword cAnsiFunction	modff modf logbl
+syn keyword cAnsiFunction	logbf logb log2l
+syn keyword cAnsiFunction	log2f log2 log1pl
+syn keyword cAnsiFunction	log1pf log1p log10l
+syn keyword cAnsiFunction	log10f log10 logl
+syn keyword cAnsiFunction	logf log ldexpl
+syn keyword cAnsiFunction	ldexpf ldexp ilogbl
+syn keyword cAnsiFunction	ilogbf ilogb frexpl
+syn keyword cAnsiFunction	frexpf frexp expm1l
+syn keyword cAnsiFunction	expm1f expm1 exp2l
+syn keyword cAnsiFunction	exp2f exp2 expl
+syn keyword cAnsiFunction	expf exp tanhl
+syn keyword cAnsiFunction	tanhf tanh sinhl
+syn keyword cAnsiFunction	sinhf sinh coshl
+syn keyword cAnsiFunction	coshf cosh atanhl
+syn keyword cAnsiFunction	atanhf atanh asinhl
+syn keyword cAnsiFunction	asinhf asinh acoshl
+syn keyword cAnsiFunction	acoshf acosh tanl
+syn keyword cAnsiFunction	tanf tan sinl
+syn keyword cAnsiFunction	sinf sin cosl
+syn keyword cAnsiFunction	cosf cos atan2l
+syn keyword cAnsiFunction	atan2f atan2 atanl
+syn keyword cAnsiFunction	atanf atan asinl
+syn keyword cAnsiFunction	asinf asin acosl
+syn keyword cAnsiFunction	acosf acos signbit
+syn keyword cAnsiFunction	isnormal isnan isinf
+syn keyword cAnsiFunction	isfinite fpclassify localeconv
+syn keyword cAnsiFunction	setlocale wcstoumax wcstoimax
+syn keyword cAnsiFunction	strtoumax strtoimax feupdateenv
+syn keyword cAnsiFunction	fesetenv feholdexcept fegetenv
+syn keyword cAnsiFunction	fesetround fegetround fetestexcept
+syn keyword cAnsiFunction	fesetexceptflag feraiseexcept fegetexceptflag
+syn keyword cAnsiFunction	feclearexcept toupper tolower
+syn keyword cAnsiFunction	isxdigit isupper isspace
+syn keyword cAnsiFunction	ispunct isprint islower
+syn keyword cAnsiFunction	isgraph isdigit iscntrl
+syn keyword cAnsiFunction	isalpha isalnum creall
+syn keyword cAnsiFunction	crealf creal cprojl
+syn keyword cAnsiFunction	cprojf cproj conjl
+syn keyword cAnsiFunction	conjf conj cimagl
+syn keyword cAnsiFunction	cimagf cimag cargl
+syn keyword cAnsiFunction	cargf carg csqrtl
+syn keyword cAnsiFunction	csqrtf csqrt cpowl
+syn keyword cAnsiFunction	cpowf cpow cabsl
+syn keyword cAnsiFunction	cabsf cabs clogl
+syn keyword cAnsiFunction	clogf clog cexpl
+syn keyword cAnsiFunction	cexpf cexp ctanhl
+syn keyword cAnsiFunction	ctanhf ctanh csinhl
+syn keyword cAnsiFunction	csinhf csinh ccoshl
+syn keyword cAnsiFunction	ccoshf ccosh catanhl
+syn keyword cAnsiFunction	catanhf catanh casinhl
+syn keyword cAnsiFunction	casinhf casinh cacoshl
+syn keyword cAnsiFunction	cacoshf cacosh ctanl
+syn keyword cAnsiFunction	ctanf ctan csinl
+syn keyword cAnsiFunction	csinf csin ccosl
+syn keyword cAnsiFunction	ccosf ccos catanl
+syn keyword cAnsiFunction	catanf catan casinl
+syn keyword cAnsiFunction	casinf casin cacosl
+syn keyword cAnsiFunction	cacosf cacos assert
+syn keyword cAnsiFunction	UINTMAX_C INTMAX_C UINT64_C
+syn keyword cAnsiFunction	UINT32_C UINT16_C UINT8_C
+syn keyword cAnsiFunction	INT64_C INT32_C INT16_C INT8_C
+
+syn keyword	cMC		__interrupt __nosavereg
+syn keyword	cAnsiName	PRId8 PRIi16 PRIo32 PRIu64
+syn keyword	cAnsiName	PRId16 PRIi32 PRIo64 PRIuLEAST8
+syn keyword	cAnsiName	PRId32 PRIi64 PRIoLEAST8 PRIuLEAST16
+syn keyword	cAnsiName	PRId64 PRIiLEAST8 PRIoLEAST16 PRIuLEAST32
+syn keyword	cAnsiName	PRIdLEAST8 PRIiLEAST16 PRIoLEAST32 PRIuLEAST64
+syn keyword	cAnsiName	PRIdLEAST16 PRIiLEAST32 PRIoLEAST64 PRIuFAST8
+syn keyword	cAnsiName	PRIdLEAST32 PRIiLEAST64 PRIoFAST8 PRIuFAST16
+syn keyword	cAnsiName	PRIdLEAST64 PRIiFAST8 PRIoFAST16 PRIuFAST32
+syn keyword	cAnsiName	PRIdFAST8 PRIiFAST16 PRIoFAST32 PRIuFAST64
+syn keyword	cAnsiName	PRIdFAST16 PRIiFAST32 PRIoFAST64 PRIuMAX
+syn keyword	cAnsiName	PRIdFAST32 PRIiFAST64 PRIoMAX PRIuPTR
+syn keyword	cAnsiName	PRIdFAST64 PRIiMAX PRIoPTR PRIx8
+syn keyword	cAnsiName	PRIdMAX PRIiPTR PRIu8 PRIx16
+syn keyword	cAnsiName	PRIdPTR PRIo8 PRIu16 PRIx32
+syn keyword	cAnsiName	PRIi8 PRIo16 PRIu32 PRIx64
+
+syn keyword	cAnsiName	PRIxLEAST8 SCNd8 SCNiFAST32 SCNuLEAST32
+syn keyword	cAnsiName	PRIxLEAST16 SCNd16 SCNiFAST64 SCNuLEAST64
+syn keyword	cAnsiName	PRIxLEAST32 SCNd32 SCNiMAX SCNuFAST8
+syn keyword	cAnsiName	PRIxLEAST64 SCNd64 SCNiPTR SCNuFAST16
+syn keyword	cAnsiName	PRIxFAST8 SCNdLEAST8 SCNo8 SCNuFAST32
+syn keyword	cAnsiName	PRIxFAST16 SCNdLEAST16 SCNo16 SCNuFAST64
+syn keyword	cAnsiName	PRIxFAST32 SCNdLEAST32 SCNo32 SCNuMAX
+syn keyword	cAnsiName	PRIxFAST64 SCNdLEAST64 SCNo64 SCNuPTR
+syn keyword	cAnsiName	PRIxMAX SCNdFAST8 SCNoLEAST8 SCNx8
+syn keyword	cAnsiName	PRIxPTR SCNdFAST16 SCNoLEAST16 SCNx16
+syn keyword	cAnsiName	PRIX8 SCNdFAST32 SCNoLEAST32 SCNx32
+syn keyword	cAnsiName	PRIX16 SCNdFAST64 SCNoLEAST64 SCNx64
+syn keyword	cAnsiName	PRIX32 SCNdMAX SCNoFAST8 SCNxLEAST8
+syn keyword	cAnsiName	PRIX64 SCNdPTR SCNoFAST16 SCNxLEAST16
+syn keyword	cAnsiName	PRIXLEAST8 SCNi8 SCNoFAST32 SCNxLEAST32
+syn keyword	cAnsiName	PRIXLEAST16 SCNi16 SCNoFAST64 SCNxLEAST64
+syn keyword	cAnsiName	PRIXLEAST32 SCNi32 SCNoMAX SCNxFAST8
+syn keyword	cAnsiName	PRIXLEAST64 SCNi64 SCNoPTR SCNxFAST16
+syn keyword	cAnsiName	PRIXFAST8 SCNiLEAST8 SCNu8 SCNxFAST32
+syn keyword	cAnsiName	PRIXFAST16 SCNiLEAST16 SCNu16 SCNxFAST64
+syn keyword	cAnsiName	PRIXFAST32 SCNiLEAST32 SCNu32 SCNxMAX
+syn keyword	cAnsiName	PRIXFAST64 SCNiLEAST64 SCNu64 SCNxPTR
+syn keyword	cAnsiName	PRIXMAX SCNiFAST8 SCNuLEAST8
+syn keyword	cAnsiName	PRIXPTR SCNiFAST16 SCNuLEAST16
+
+syn keyword	cAnsiName	errno environ
+syn keyword	cAnsiName	stdout stdin stderr
+
+syn keyword	cAnsiName	STDC CX_LIMITED_RANGE
+syn keyword	cAnsiName	STDC FENV_ACCESS
+syn keyword	cAnsiName	STDC FP_CONTRACT
+
+"syn keyword	cAnsiName	acos sqrt fmod nearbyint
+"syn keyword	cAnsiName	asin fabs frexp nextafter
+"syn keyword	cAnsiName	atan atan2 tgamma nextafterx
+"syn keyword	cAnsiName	acosh cbrt hypot remainder
+"syn keyword	cAnsiName	asinh ceil ilogb remquo
+"syn keyword	cAnsiName	atanh copysign ldexp rint
+"syn keyword	cAnsiName	cos erf lgamma round
+"syn keyword	cAnsiName	sin erfc llrint scalbn
+"syn keyword	cAnsiName	tan exp2 llround scalbln
+"syn keyword	cAnsiName	cosh expm1 log10 trunc
+"syn keyword	cAnsiName	sinh fdim log1p carg
+"syn keyword	cAnsiName	tanh floor log2 cimag
+"syn keyword	cAnsiName	exp fma logb conj
+"syn keyword	cAnsiName	log fmax lrint cproj
+"syn keyword	cAnsiName	pow fmin lround creal
+
+syn keyword	cAnsiName	and bitor not_eq xor
+syn keyword	cAnsiName	and_eq compl or xor_eq
+syn keyword	cAnsiName	bitand not or_eq
+
+" A bunch of useful C keywords
+"syn keyword	cStatement	goto
+syn keyword	cStatement	break return continue asm
+syn keyword	cLabel		default
+syn keyword	cLabel		case
+syn keyword	cConditional	if else switch
+syn keyword	cRepeat		while for do
+
+syn keyword	cTodo		contained TODO FIXME XXX
+syn match	cTodo		contained "///[A-Z]!*"
+
+" cCommentGroup allows adding matches for special things in comments
+syn cluster	cCommentGroup	contains=cTodo
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match	cSpecial	display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
+if !exists("c_no_utf")
+  syn match	cSpecial	display contained "\\\(u\x\{4}\|U\x\{8}\)"
+endif
+if exists("c_no_cformat")
+  syn region	cString		start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,@Spell
+  " cCppString: same as cString, but ends at end of line
+  syn region	cCppString	start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,@Spell
+else
+  syn match	cFormat		display "%\(\d\+\$\)\=[-+' #0*,]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlLjztF]\|ll\|hh\)\=\([bdiuoxXDOUfeEgGcCsSpnAaK]\|\[\^\=.[^]]*\]\)" contained
+  syn match	cFormat		display "%%" contained
+  syn region	cString		start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell
+  " cCppString: same as cString, but ends at end of line
+  syn region	cCppString	start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat
+  hi link cFormat cSpecial
+endif
+hi link cCppString cString
+
+syn match	cCharacter	"L\='[^\\]'"
+syn match	cCharacter	"L'[^']*'" contains=cSpecial
+if exists("c_gnu")
+  syn match	cSpecialError	"L\='\\[^'\"?\\abefnrtv]'"
+  syn match	cSpecialCharacter "L\='\\['\"?\\abefnrtv]'"
+else
+  syn match	cSpecialError	"L\='\\[^'\"?\\abfnrtv]'"
+  syn match	cSpecialCharacter "L\='\\['\"?\\abfnrtv]'"
+endif
+syn match	cSpecialCharacter display "L\='\\\o\{1,3}'"
+syn match	cSpecialCharacter display "'\\x\x\{1,2}'"
+syn match	cSpecialCharacter display "L'\\x\x\+'"
+
+"when wanted, highlight trailing white space
+if exists("c_space_errors")
+  if !exists("c_no_trail_space_error")
+    syn match	cSpaceError	display excludenl "\s\+$"
+  endif
+  if !exists("c_no_tab_space_error")
+    syn match	cSpaceError	display " \+\t"me=e-1
+  endif
+endif
+
+"catch errors caused by wrong parenthesis and brackets
+" also accept <% for {, %> for }, <: for [ and :> for ] (C99)
+syn cluster	cParenGroup	contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cUserLabel2,cGotoLabel,cBitField,cCommentSkip,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom
+if exists("c_no_bracket_error")
+  syn region	cParen		transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
+  " cCppParen: same as cParen but ends at end-of-line; used in cDefine
+  syn region	cCppParen	transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
+  syn match	cParenError	display ")"
+" syn match	cErrInParen	display contained "[{}]\|<%\|%>"
+  syn match	cErrInParen	display contained "[]\|<%\|%>"
+else
+  syn region	cParen		transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell
+  " cCppParen: same as cParen but ends at end-of-line; used in cDefine
+  syn region	cCppParen	transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell
+  syn match	cParenError	display "[\])]"
+" syn match	cErrInParen	display contained "[\]{}]\|<%\|%>"
+  syn match	cErrInParen	display contained "[\]]\|<%\|%>"
+  syn region	cBracket	transparent start='\[\|<::\@!' end=']\|:>' contains=ALLBUT,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString,@Spell
+  " cCppBracket: same as cParen but ends at end-of-line; used in cDefine
+  syn region	cCppBracket	transparent start='\[\|<::\@!' skip='\\$' excludenl end=']\|:>' end='$' contained contains=ALLBUT,@cParenGroup,cErrInParen,cParen,cBracket,cString,@Spell
+  syn match	cErrInBracket	display contained "[);{}]\|<%\|%>"
+  "syn region	cBlock		transparent matchgroup=cBraces start='{' end='}' contains=ALLBUT,@cParenGroup,cCppParen,cCppBracket,cCppString,cBraceError,cErrInBracket
+  "syn match	cBraceError	"}"
+endif
+
+"integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match	cNumbers	display transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctalError,cOctal
+" Same, but without octal error (for comments)
+syn match	cNumbersCom	display contained transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctal
+syn match	cNumber		display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
+"hex number
+syn match	cNumber		display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
+" Flag the first zero of an octal number as something special
+syn match	cOctal		display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZero
+syn match	cOctalZero	display contained "\<0"
+syn match	cFloat		display contained "\d\+f"
+"floating point number, with dot, optional exponent
+syn match	cFloat		display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
+"floating point number, starting with a dot, optional exponent
+syn match	cFloat		display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match	cFloat		display contained "\d\+e[-+]\=\d\+[fl]\=\>"
+if !exists("c_no_c99")
+  "hexadecimal floating point number, optional leading digits, with dot, with exponent
+  syn match	cFloat		display contained "0x\x*\.\x\+p[-+]\=\d\+[fl]\=\>"
+  "hexadecimal floating point number, with leading digits, optional dot, with exponent
+  syn match	cFloat		display contained "0x\x\+\.\=p[-+]\=\d\+[fl]\=\>"
+endif
+
+" flag an octal number with wrong digits
+syn match	cOctalError	display contained "0\o*[89]\d*"
+syn case match
+
+if exists("xxxc_comment_strings")
+  " A comment can contain cString, cCharacter and cNumber.
+  " But a "*/" inside a cString in a cComment DOES end the comment!  So we
+  " need to use a special type of cString: cCommentString, which also ends on
+  " "*/", and sees a "*" at the start of the line as comment again.
+  " Unfortunately this doesn't very well work for // type of comments :-(
+  syntax match	cCommentSkip	contained "^\s*\*\($\|\s\+\)"
+  syntax region cCommentString	contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=cSpecial,cCommentSkip
+  syntax region cComment2String	contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=cSpecial
+  syntax region  cCommentL	start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError,@Spell
+  syntax region cComment	matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell
+else
+  syn region	cCommentL	start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cSpaceError,@Spell
+  syn region	cComment	matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell
+endif
+" keep a // comment separately, it terminates a preproc. conditional
+syntax match	cCommentError	display "\*/"
+syntax match	cCommentStartError display "/\*"me=e-1 contained
+
+syn keyword	cOperator	sizeof
+if exists("c_gnu")
+  syn keyword	cStatement	__asm__
+  syn keyword	cOperator	typeof __real__ __imag__
+endif
+syn keyword	cType		int long short char void
+syn keyword	cType		signed unsigned float double
+
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+"   ISSM special syntax                                                                                             "
+"   please try to keep the alphabetical ordering                                                                    "
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+"Petsc
+syn keyword	cType		Vec Mat SeqVec SeqMat
+"other ISSM's syntax
+syn keyword	cType		mxArray ErrorException QuadtreeBox
+syn keyword	cType		IssmDouble IssmPDouble
+
+"ISSM's objects begin
+syn keyword cType BoolInput
+syn keyword cType BoolParam
+syn keyword cType classes
+syn keyword cType Constraint
+syn keyword cType Constraints
+syn keyword cType Contour
+syn keyword cType Contours
+syn keyword cType ControlInput
+syn keyword cType Covertree
+syn keyword cType DatasetInput
+syn keyword cType DataSetParam
+syn keyword cType Definition
+syn keyword cType DependentObject
+syn keyword cType DofIndexing
+syn keyword cType DoubleArrayInput
+syn keyword cType DoubleInput
+syn keyword cType DoubleMatArrayParam
+syn keyword cType DoubleMatParam
+syn keyword cType DoubleParam
+syn keyword cType DoubleTransientMatParam
+syn keyword cType DoubleVecParam
+syn keyword cType Element
+syn keyword cType ElementHook
+syn keyword cType ElementMatrix
+syn keyword cType Elements
+syn keyword cType ElementVector
+syn keyword cType ExponentialVariogram
+syn keyword cType ExternalResult
+syn keyword cType FemModel
+syn keyword cType FileParam
+syn keyword cType Friction
+syn keyword cType Gauss
+syn keyword cType GaussianVariogram
+syn keyword cType gaussobjects
+syn keyword cType GaussPenta
+syn keyword cType GaussSeg
+syn keyword cType GaussTetra
+syn keyword cType GaussTria
+syn keyword cType GenericExternalResult
+syn keyword cType GenericOption
+syn keyword cType GenericParam
+syn keyword cType GiaDeflectionCoreArgs
+syn keyword cType Hook
+syn keyword cType Input
+syn keyword cType Inputs
+syn keyword cType IntInput
+syn keyword cType IntMatParam
+syn keyword cType IntParam
+syn keyword cType IntVecParam
+syn keyword cType IoModel
+syn keyword cType IssmDirectApplicInterface
+syn keyword cType IssmParallelDirectApplicInterface
+syn keyword cType krigingobjects
+syn keyword cType Load
+syn keyword cType Loads
+syn keyword cType Masscon
+syn keyword cType Massconaxpby
+syn keyword cType Massfluxatgate
+syn keyword cType Material
+syn keyword cType Materials
+syn keyword cType Matestar
+syn keyword cType Matice
+syn keyword cType Matpar
+syn keyword cType matrixobjects
+syn keyword cType MatrixParam
+syn keyword cType Misfit
+syn keyword cType Moulin
+syn keyword cType Neumannflux
+syn keyword cType Nodalvalue
+syn keyword cType Node
+syn keyword cType Nodes
+syn keyword cType Numericalflux
+syn keyword cType Observation
+syn keyword cType Observations
+syn keyword cType Option
+syn keyword cType Options
+syn keyword cType OptionUtilities
+syn keyword cType Param
+syn keyword cType Parameters
+syn keyword cType Pengrid
+syn keyword cType Penpair
+syn keyword cType Penta
+syn keyword cType PentaInput
+syn keyword cType PentaRef
+syn keyword cType PowerVariogram
+syn keyword cType Profiler
+syn keyword cType Quadtree
+syn keyword cType Results
+syn keyword cType Riftfront
+syn keyword cType RiftStruct
+syn keyword cType Seg
+syn keyword cType SegInput
+syn keyword cType Segment
+syn keyword cType SegRef
+syn keyword cType SpcDynamic
+syn keyword cType SpcStatic
+syn keyword cType SpcTransient
+syn keyword cType SphericalVariogram
+syn keyword cType StringArrayParam
+syn keyword cType StringParam
+syn keyword cType Tetra
+syn keyword cType TetraInput
+syn keyword cType TetraRef
+syn keyword cType TransientInput
+syn keyword cType TransientParam
+syn keyword cType Tria
+syn keyword cType TriaInput
+syn keyword cType TriaRef
+syn keyword cType Update
+syn keyword cType Variogram
+syn keyword cType VectorParam
+syn keyword cType Vertex
+syn keyword cType Vertices
+syn keyword cType AdjointBalancethickness2Analysis
+syn keyword cType AdjointBalancethicknessAnalysis
+syn keyword cType AdjointHorizAnalysis
+syn keyword cType Analysis
+syn keyword cType Balancethickness2Analysis
+syn keyword cType BalancethicknessAnalysis
+syn keyword cType BalancethicknessSoftAnalysis
+syn keyword cType BalancevelocityAnalysis
+syn keyword cType DamageEvolutionAnalysis
+syn keyword cType DepthAverageAnalysis
+syn keyword cType EnthalpyAnalysis
+syn keyword cType EnumToAnalysis
+syn keyword cType ExtrapolationAnalysis
+syn keyword cType ExtrudeFromBaseAnalysis
+syn keyword cType ExtrudeFromTopAnalysis
+syn keyword cType FreeSurfaceBaseAnalysis
+syn keyword cType FreeSurfaceTopAnalysis
+syn keyword cType GiaAnalysis
+syn keyword cType HydrologyDCEfficientAnalysis
+syn keyword cType HydrologyDCInefficientAnalysis
+syn keyword cType HydrologyShreveAnalysis
+syn keyword cType HydrologySommersAnalysis
+syn keyword cType L2ProjectionBaseAnalysis
+syn keyword cType L2ProjectionEPLAnalysis
+syn keyword cType LevelsetAnalysis
+syn keyword cType LsfReinitializationAnalysis
+syn keyword cType MasstransportAnalysis
+syn keyword cType MeltingAnalysis
+syn keyword cType MeshdeformationAnalysis
+syn keyword cType SealevelriseAnalysis
+syn keyword cType SmbAnalysis
+syn keyword cType SmoothAnalysis
+syn keyword cType StressbalanceAnalysis
+syn keyword cType StressbalanceSIAAnalysis
+syn keyword cType StressbalanceVerticalAnalysis
+syn keyword cType ThermalAnalysis
+syn keyword cType UzawaPressureAnalysis
+"ISSM's objects end
+"ISSM's Enums begin
+syn keyword cConstant ParametersSTARTEnum
+syn keyword cConstant FemModelEnum
+syn keyword cConstant FemModelCommEnum
+syn keyword cConstant WorldCommEnum
+syn keyword cConstant IcecapToEarthCommEnum
+syn keyword cConstant NumModelsEnum
+syn keyword cConstant ModelIdEnum
+syn keyword cConstant EarthIdEnum
+syn keyword cConstant AutodiffIsautodiffEnum
+syn keyword cConstant AutodiffNumDependentsEnum
+syn keyword cConstant AutodiffNumDependentObjectsEnum
+syn keyword cConstant AutodiffDependentObjectNamesEnum
+syn keyword cConstant AutodiffDependentObjectTypesEnum
+syn keyword cConstant AutodiffDependentObjectIndicesEnum
+syn keyword cConstant AutodiffDependentObjectsEnum
+syn keyword cConstant AutodiffNumIndependentsEnum
+syn keyword cConstant AutodiffNumIndependentObjectsEnum
+syn keyword cConstant AutodiffIndependentObjectNamesEnum
+syn keyword cConstant AutodiffIndependentObjectTypesEnum
+syn keyword cConstant AutodiffIndependentObjectsEnum
+syn keyword cConstant AutodiffJacobianEnum
+syn keyword cConstant AutodiffXpEnum
+syn keyword cConstant AutodiffDriverEnum
+syn keyword cConstant AutodiffFosForwardIndexEnum
+syn keyword cConstant AutodiffFovForwardIndicesEnum
+syn keyword cConstant AutodiffFosReverseIndexEnum
+syn keyword cConstant AutodiffMassFluxSegmentsPresentEnum
+syn keyword cConstant AutodiffKeepEnum
+syn keyword cConstant AutodiffObufsizeEnum
+syn keyword cConstant AutodiffLbufsizeEnum
+syn keyword cConstant AutodiffCbufsizeEnum
+syn keyword cConstant AutodiffTbufsizeEnum
+syn keyword cConstant AutodiffGcTriggerRatioEnum
+syn keyword cConstant AutodiffGcTriggerMaxSizeEnum
+syn keyword cConstant BalancethicknessSpcthicknessEnum
+syn keyword cConstant BalancethicknessStabilizationEnum
+syn keyword cConstant BalancethicknessThickeningRateEnum
+syn keyword cConstant BasalforcingsEnum
+syn keyword cConstant BasalforcingsGeothermalfluxEnum
+syn keyword cConstant BasalforcingsGroundediceMeltingRateEnum
+syn keyword cConstant BasalforcingsFloatingiceMeltingRateEnum
+syn keyword cConstant BasalforcingsDeepwaterMeltingRateEnum
+syn keyword cConstant BasalforcingsDeepwaterElevationEnum
+syn keyword cConstant BasalforcingsUpperwaterElevationEnum
+syn keyword cConstant BasalforcingsMeltrateFactorEnum
+syn keyword cConstant BasalforcingsThresholdThicknessEnum
+syn keyword cConstant BasalforcingsUpperdepthMeltEnum
+syn keyword cConstant BasalforcingsMantleconductivityEnum
+syn keyword cConstant BasalforcingsNusseltEnum
+syn keyword cConstant BasalforcingsDtbgEnum
+syn keyword cConstant BasalforcingsPlumeradiusEnum
+syn keyword cConstant BasalforcingsTopplumedepthEnum
+syn keyword cConstant BasalforcingsBottomplumedepthEnum
+syn keyword cConstant BasalforcingsPlumexEnum
+syn keyword cConstant BasalforcingsPlumeyEnum
+syn keyword cConstant BasalforcingsCrustthicknessEnum
+syn keyword cConstant BasalforcingsUppercrustthicknessEnum
+syn keyword cConstant BasalforcingsUppercrustheatEnum
+syn keyword cConstant BasalforcingsLowercrustheatEnum
+syn keyword cConstant FloatingMeltRateEnum
+syn keyword cConstant LinearFloatingMeltRateEnum
+syn keyword cConstant MismipFloatingMeltRateEnum
+syn keyword cConstant MantlePlumeGeothermalFluxEnum
+syn keyword cConstant BedEnum
+syn keyword cConstant BaseEnum
+syn keyword cConstant ConstantsGEnum
+syn keyword cConstant ConstantsReferencetemperatureEnum
+syn keyword cConstant ConstantsYtsEnum
+syn keyword cConstant DependentObjectEnum
+syn keyword cConstant StressbalanceAbstolEnum
+syn keyword cConstant StressbalanceConvergenceNumStepsEnum
+syn keyword cConstant StressbalanceIsnewtonEnum
+syn keyword cConstant StressbalanceMaxiterEnum
+syn keyword cConstant StressbalancePenaltyFactorEnum
+syn keyword cConstant StressbalanceReferentialEnum
+syn keyword cConstant StressbalanceReltolEnum
+syn keyword cConstant StressbalanceNumRequestedOutputsEnum
+syn keyword cConstant StressbalanceRequestedOutputsEnum
+syn keyword cConstant StressbalanceRestolEnum
+syn keyword cConstant StressbalanceRiftPenaltyLockEnum
+syn keyword cConstant StressbalanceRiftPenaltyThresholdEnum
+syn keyword cConstant StressbalanceShelfDampeningEnum
+syn keyword cConstant StressbalanceSpcvxEnum
+syn keyword cConstant StressbalanceSpcvyEnum
+syn keyword cConstant StressbalanceSpcvzEnum
+syn keyword cConstant StressbalanceFSreconditioningEnum
+syn keyword cConstant StressbalanceVertexPairingEnum
+syn keyword cConstant StressbalanceViscosityOvershootEnum
+syn keyword cConstant LoadingforceXEnum
+syn keyword cConstant LoadingforceYEnum
+syn keyword cConstant LoadingforceZEnum
+syn keyword cConstant FlowequationBorderSSAEnum
+syn keyword cConstant FlowequationBorderHOEnum
+syn keyword cConstant FlowequationBorderFSEnum
+syn keyword cConstant FlowequationElementEquationEnum
+syn keyword cConstant FlowequationIsSIAEnum
+syn keyword cConstant FlowequationIsSSAEnum
+syn keyword cConstant FlowequationIsL1L2Enum
+syn keyword cConstant FlowequationIsHOEnum
+syn keyword cConstant FlowequationIsFSEnum
+syn keyword cConstant FlowequationFeSSAEnum
+syn keyword cConstant FlowequationFeHOEnum
+syn keyword cConstant FlowequationFeFSEnum
+syn keyword cConstant FlowequationVertexEquationEnum
+syn keyword cConstant FrictionAsEnum
+syn keyword cConstant FrictionCoefficientEnum
+syn keyword cConstant FrictionCoefficientcoulombEnum
+syn keyword cConstant FrictionPEnum
+syn keyword cConstant FrictionQEnum
+syn keyword cConstant FrictionMEnum
+syn keyword cConstant FrictionCEnum
+syn keyword cConstant FrictionLawEnum
+syn keyword cConstant FrictionGammaEnum
+syn keyword cConstant FrictionFEnum
+syn keyword cConstant FrictionWaterLayerEnum
+syn keyword cConstant FrictionEffectivePressureEnum
+syn keyword cConstant FrictionCouplingEnum
+syn keyword cConstant GeometryHydrostaticRatioEnum
+syn keyword cConstant HydrologyModelEnum
+syn keyword cConstant HydrologyshreveEnum
+syn keyword cConstant HydrologyshreveSpcwatercolumnEnum
+syn keyword cConstant HydrologyshreveStabilizationEnum
+syn keyword cConstant HydrologydcEnum
+syn keyword cConstant SedimentHeadEnum
+syn keyword cConstant SedimentHeadOldEnum
+syn keyword cConstant SedimentHeadResidualEnum
+syn keyword cConstant EffectivePressureEnum
+syn keyword cConstant EplHeadEnum
+syn keyword cConstant EplHeadOldEnum
+syn keyword cConstant EplHeadSlopeXEnum
+syn keyword cConstant EplHeadSlopeYEnum
+syn keyword cConstant EplZigZagCounterEnum
+syn keyword cConstant HydrologydcMaxIterEnum
+syn keyword cConstant HydrologydcRelTolEnum
+syn keyword cConstant HydrologydcSpcsedimentHeadEnum
+syn keyword cConstant HydrologydcSedimentCompressibilityEnum
+syn keyword cConstant HydrologydcSedimentPorosityEnum
+syn keyword cConstant HydrologydcSedimentThicknessEnum
+syn keyword cConstant HydrologydcSedimentTransmitivityEnum
+syn keyword cConstant HydrologydcWaterCompressibilityEnum
+syn keyword cConstant HydrologydcSpceplHeadEnum
+syn keyword cConstant HydrologydcMaskEplactiveNodeEnum
+syn keyword cConstant HydrologydcMaskEplactiveEltEnum
+syn keyword cConstant HydrologydcEplCompressibilityEnum
+syn keyword cConstant HydrologydcEplPorosityEnum
+syn keyword cConstant HydrologydcEplInitialThicknessEnum
+syn keyword cConstant HydrologydcEplColapseThicknessEnum
+syn keyword cConstant HydrologydcEplMaxThicknessEnum
+syn keyword cConstant HydrologydcEplThicknessEnum
+syn keyword cConstant HydrologydcEplThicknessOldEnum
+syn keyword cConstant HydrologydcEplThickCompEnum
+syn keyword cConstant HydrologydcEplConductivityEnum
+syn keyword cConstant HydrologydcIsefficientlayerEnum
+syn keyword cConstant HydrologydcSedimentlimitFlagEnum
+syn keyword cConstant HydrologydcSedimentlimitEnum
+syn keyword cConstant HydrologydcTransferFlagEnum
+syn keyword cConstant HydrologydcLeakageFactorEnum
+syn keyword cConstant HydrologydcPenaltyFactorEnum
+syn keyword cConstant HydrologydcPenaltyLockEnum
+syn keyword cConstant HydrologydcEplflipLockEnum
+syn keyword cConstant HydrologydcBasalMoulinInputEnum
+syn keyword cConstant HydrologyLayerEnum
+syn keyword cConstant HydrologySedimentEnum
+syn keyword cConstant HydrologyEfficientEnum
+syn keyword cConstant HydrologySedimentKmaxEnum
+syn keyword cConstant HydrologysommersEnum
+syn keyword cConstant HydrologyHeadEnum
+syn keyword cConstant HydrologyGapHeightEnum
+syn keyword cConstant HydrologyBumpSpacingEnum
+syn keyword cConstant HydrologyBumpHeightEnum
+syn keyword cConstant HydrologyEnglacialInputEnum
+syn keyword cConstant HydrologyMoulinInputEnum
+syn keyword cConstant HydrologyReynoldsEnum
+syn keyword cConstant HydrologyNeumannfluxEnum
+syn keyword cConstant HydrologySpcheadEnum
+syn keyword cConstant HydrologyConductivityEnum
+syn keyword cConstant InversionControlParametersEnum
+syn keyword cConstant InversionControlScalingFactorsEnum
+syn keyword cConstant InversionCostFunctionThresholdEnum
+syn keyword cConstant InversionCostFunctionsCoefficientsEnum
+syn keyword cConstant InversionCostFunctionsEnum
+syn keyword cConstant InversionGradientScalingEnum
+syn keyword cConstant InversionIscontrolEnum
+syn keyword cConstant InversionTypeEnum
+syn keyword cConstant InversionIncompleteAdjointEnum
+syn keyword cConstant InversionMaxParametersEnum
+syn keyword cConstant InversionMaxiterPerStepEnum
+syn keyword cConstant InversionMaxiterEnum
+syn keyword cConstant InversionMaxstepsEnum
+syn keyword cConstant InversionFatolEnum
+syn keyword cConstant InversionFrtolEnum
+syn keyword cConstant InversionGatolEnum
+syn keyword cConstant InversionGrtolEnum
+syn keyword cConstant InversionGttolEnum
+syn keyword cConstant InversionAlgorithmEnum
+syn keyword cConstant InversionMinParametersEnum
+syn keyword cConstant InversionNstepsEnum
+syn keyword cConstant InversionDxminEnum
+syn keyword cConstant InversionNumControlParametersEnum
+syn keyword cConstant InversionNumCostFunctionsEnum
+syn keyword cConstant InversionStepThresholdEnum
+syn keyword cConstant InversionThicknessObsEnum
+syn keyword cConstant InversionSurfaceObsEnum
+syn keyword cConstant InversionVxObsEnum
+syn keyword cConstant InversionVyObsEnum
+syn keyword cConstant InversionVzObsEnum
+syn keyword cConstant MaskIceLevelsetEnum
+syn keyword cConstant MaskOceanLevelsetEnum
+syn keyword cConstant MaskLandLevelsetEnum
+syn keyword cConstant MaterialsBetaEnum
+syn keyword cConstant MaterialsHeatcapacityEnum
+syn keyword cConstant MaterialsLatentheatEnum
+syn keyword cConstant MaterialsMeltingpointEnum
+syn keyword cConstant MaterialsMixedLayerCapacityEnum
+syn keyword cConstant MaterialsRheologyBEnum
+syn keyword cConstant MaterialsRheologyBbarEnum
+syn keyword cConstant MaterialsRheologyLawEnum
+syn keyword cConstant MaterialsRheologyNEnum
+syn keyword cConstant MaterialsRheologyKoEnum
+syn keyword cConstant MaterialsRheologyKobarEnum
+syn keyword cConstant MaterialsRheologyEcEnum
+syn keyword cConstant MaterialsRheologyEcbarEnum
+syn keyword cConstant MaterialsRheologyEsEnum
+syn keyword cConstant MaterialsRheologyEsbarEnum
+syn keyword cConstant DamageIsdamageEnum
+syn keyword cConstant DamageDEnum
+syn keyword cConstant DamageFEnum
+syn keyword cConstant DamageDbarEnum
+syn keyword cConstant DamageLawEnum
+syn keyword cConstant DamageC1Enum
+syn keyword cConstant DamageC2Enum
+syn keyword cConstant DamageC3Enum
+syn keyword cConstant DamageC4Enum
+syn keyword cConstant DamageElementinterpEnum
+syn keyword cConstant DamageHealingEnum
+syn keyword cConstant DamageStressThresholdEnum
+syn keyword cConstant DamageKappaEnum
+syn keyword cConstant DamageStabilizationEnum
+syn keyword cConstant DamageMaxiterEnum
+syn keyword cConstant DamageSpcdamageEnum
+syn keyword cConstant DamageMaxDamageEnum
+syn keyword cConstant DamageEquivStressEnum
+syn keyword cConstant DamageEvolutionNumRequestedOutputsEnum
+syn keyword cConstant DamageEvolutionRequestedOutputsEnum
+syn keyword cConstant DamageEnum
+syn keyword cConstant NewDamageEnum
+syn keyword cConstant StressIntensityFactorEnum
+syn keyword cConstant CalvingLawEnum
+syn keyword cConstant CalvingCalvingrateEnum
+syn keyword cConstant CalvingMeltingrateEnum
+syn keyword cConstant CalvingLevermannEnum
+syn keyword cConstant CalvingDevEnum
+syn keyword cConstant CalvingMinthicknessEnum
+syn keyword cConstant DefaultCalvingEnum
+syn keyword cConstant CalvingRequestedOutputsEnum
+syn keyword cConstant CalvinglevermannCoeffEnum
+syn keyword cConstant CalvinglevermannMeltingrateEnum
+syn keyword cConstant CalvingdevCoeffEnum
+syn keyword cConstant CalvingratexEnum
+syn keyword cConstant CalvingrateyEnum
+syn keyword cConstant CalvingratexAverageEnum
+syn keyword cConstant CalvingrateyAverageEnum
+syn keyword cConstant StrainRateparallelEnum
+syn keyword cConstant StrainRateperpendicularEnum
+syn keyword cConstant StrainRateeffectiveEnum
+syn keyword cConstant MaterialsRhoIceEnum
+syn keyword cConstant MaterialsRhoSeawaterEnum
+syn keyword cConstant MaterialsRhoFreshwaterEnum
+syn keyword cConstant MaterialsMuWaterEnum
+syn keyword cConstant MaterialsThermalExchangeVelocityEnum
+syn keyword cConstant MaterialsThermalconductivityEnum
+syn keyword cConstant MaterialsTemperateiceconductivityEnum
+syn keyword cConstant MaterialsLithosphereShearModulusEnum
+syn keyword cConstant MaterialsLithosphereDensityEnum
+syn keyword cConstant MaterialsMantleShearModulusEnum
+syn keyword cConstant MaterialsMantleDensityEnum
+syn keyword cConstant MaterialsEarthDensityEnum
+syn keyword cConstant MeshAverageVertexConnectivityEnum
+syn keyword cConstant MeshElements2dEnum
+syn keyword cConstant MeshElementsEnum
+syn keyword cConstant MeshLowerelementsEnum
+syn keyword cConstant MeshNumberofelements2dEnum
+syn keyword cConstant MeshNumberofelementsEnum
+syn keyword cConstant MeshNumberoflayersEnum
+syn keyword cConstant MeshNumberofvertices2dEnum
+syn keyword cConstant MeshNumberofverticesEnum
+syn keyword cConstant MeshUpperelementsEnum
+syn keyword cConstant MeshVertexonbaseEnum
+syn keyword cConstant MeshVertexonsurfaceEnum
+syn keyword cConstant MeshVertexonboundaryEnum
+syn keyword cConstant MeshXEnum
+syn keyword cConstant MeshYEnum
+syn keyword cConstant MeshZEnum
+syn keyword cConstant MeshLatEnum
+syn keyword cConstant MeshLongEnum
+syn keyword cConstant MeshREnum
+syn keyword cConstant MeshElementtypeEnum
+syn keyword cConstant MeshSegmentsEnum
+syn keyword cConstant DomainTypeEnum
+syn keyword cConstant DomainDimensionEnum
+syn keyword cConstant Domain2DhorizontalEnum
+syn keyword cConstant Domain2DverticalEnum
+syn keyword cConstant Domain3DEnum
+syn keyword cConstant Domain3DsurfaceEnum
+syn keyword cConstant MiscellaneousNameEnum
+syn keyword cConstant MasstransportHydrostaticAdjustmentEnum
+syn keyword cConstant MasstransportIsfreesurfaceEnum
+syn keyword cConstant MasstransportMinThicknessEnum
+syn keyword cConstant MasstransportPenaltyFactorEnum
+syn keyword cConstant MasstransportSpcthicknessEnum
+syn keyword cConstant MasstransportStabilizationEnum
+syn keyword cConstant MasstransportVertexPairingEnum
+syn keyword cConstant MasstransportNumRequestedOutputsEnum
+syn keyword cConstant MasstransportRequestedOutputsEnum
+syn keyword cConstant QmuIsdakotaEnum
+syn keyword cConstant MassFluxSegmentsEnum
+syn keyword cConstant MassFluxSegmentsPresentEnum
+syn keyword cConstant QmuMassFluxSegmentsPresentEnum
+syn keyword cConstant QmuNumberofpartitionsEnum
+syn keyword cConstant QmuNumberofresponsesEnum
+syn keyword cConstant QmuPartitionEnum
+syn keyword cConstant QmuResponsedescriptorsEnum
+syn keyword cConstant QmuVariabledescriptorsEnum
+syn keyword cConstant RiftsNumriftsEnum
+syn keyword cConstant RiftsRiftstructEnum
+syn keyword cConstant SettingsResultsOnNodesEnum
+syn keyword cConstant SettingsIoGatherEnum
+syn keyword cConstant SettingsLowmemEnum
+syn keyword cConstant SettingsOutputFrequencyEnum
+syn keyword cConstant SettingsRecordingFrequencyEnum
+syn keyword cConstant SettingsWaitonlockEnum
+syn keyword cConstant DebugProfilingEnum
+syn keyword cConstant ProfilingCurrentMemEnum
+syn keyword cConstant ProfilingCurrentFlopsEnum
+syn keyword cConstant ProfilingSolutionTimeEnum
+syn keyword cConstant SteadystateMaxiterEnum
+syn keyword cConstant SteadystateNumRequestedOutputsEnum
+syn keyword cConstant SteadystateReltolEnum
+syn keyword cConstant SteadystateRequestedOutputsEnum
+syn keyword cConstant SurfaceEnum
+syn keyword cConstant ThermalIsenthalpyEnum
+syn keyword cConstant ThermalIsdynamicbasalspcEnum
+syn keyword cConstant ThermalReltolEnum
+syn keyword cConstant ThermalMaxiterEnum
+syn keyword cConstant ThermalPenaltyFactorEnum
+syn keyword cConstant ThermalPenaltyLockEnum
+syn keyword cConstant ThermalPenaltyThresholdEnum
+syn keyword cConstant ThermalSpctemperatureEnum
+syn keyword cConstant ThermalStabilizationEnum
+syn keyword cConstant ThermalNumRequestedOutputsEnum
+syn keyword cConstant ThermalRequestedOutputsEnum
+syn keyword cConstant GiaMantleViscosityEnum
+syn keyword cConstant GiaLithosphereThicknessEnum
+syn keyword cConstant ThicknessEnum
+syn keyword cConstant TimesteppingStartTimeEnum
+syn keyword cConstant TimesteppingFinalTimeEnum
+syn keyword cConstant TimesteppingCflCoefficientEnum
+syn keyword cConstant TimesteppingTimeAdaptEnum
+syn keyword cConstant TimesteppingTimeStepEnum
+syn keyword cConstant TimesteppingInterpForcingsEnum
+syn keyword cConstant TransientIssmbEnum
+syn keyword cConstant TransientIscouplerEnum
+syn keyword cConstant TransientIsstressbalanceEnum
+syn keyword cConstant TransientIsgroundinglineEnum
+syn keyword cConstant TransientIsmasstransportEnum
+syn keyword cConstant TransientIsthermalEnum
+syn keyword cConstant TransientIsgiaEnum
+syn keyword cConstant TransientIsdamageevolutionEnum
+syn keyword cConstant TransientIshydrologyEnum
+syn keyword cConstant TransientIsmovingfrontEnum
+syn keyword cConstant TransientIsslrEnum
+syn keyword cConstant TransientNumRequestedOutputsEnum
+syn keyword cConstant TransientRequestedOutputsEnum
+syn keyword cConstant PotentialEnum
+syn keyword cConstant BalancethicknessSpcpotentialEnum
+syn keyword cConstant BalancethicknessApparentMassbalanceEnum
+syn keyword cConstant Balancethickness2MisfitEnum
+syn keyword cConstant BalancethicknessDiffusionCoefficientEnum
+syn keyword cConstant BalancethicknessCmuEnum
+syn keyword cConstant BalancethicknessOmegaEnum
+syn keyword cConstant BalancethicknessD0Enum
+syn keyword cConstant SmbEnum
+syn keyword cConstant SmbAnalysisEnum
+syn keyword cConstant SmbSolutionEnum
+syn keyword cConstant SmbNumRequestedOutputsEnum
+syn keyword cConstant SmbRequestedOutputsEnum
+syn keyword cConstant SmbIsInitializedEnum
+syn keyword cConstant SMBforcingEnum
+syn keyword cConstant SmbMassBalanceEnum
+syn keyword cConstant SMBgembEnum
+syn keyword cConstant SmbInitDensityScalingEnum
+syn keyword cConstant SmbTaEnum
+syn keyword cConstant SmbVEnum
+syn keyword cConstant SmbDswrfEnum
+syn keyword cConstant SmbDlwrfEnum
+syn keyword cConstant SmbPEnum
+syn keyword cConstant SmbSwfEnum
+syn keyword cConstant SmbEAirEnum
+syn keyword cConstant SmbPAirEnum
+syn keyword cConstant SmbTmeanEnum
+syn keyword cConstant SmbCEnum
+syn keyword cConstant SmbTzEnum
+syn keyword cConstant SmbVzEnum
+syn keyword cConstant SmbDtEnum
+syn keyword cConstant SmbDzEnum
+syn keyword cConstant SmbAIdxEnum
+syn keyword cConstant SmbSwIdxEnum
+syn keyword cConstant SmbDenIdxEnum
+syn keyword cConstant SmbZTopEnum
+syn keyword cConstant SmbDzTopEnum
+syn keyword cConstant SmbDzMinEnum
+syn keyword cConstant SmbZYEnum
+syn keyword cConstant SmbZMaxEnum
+syn keyword cConstant SmbZMinEnum
+syn keyword cConstant SmbOutputFreqEnum
+syn keyword cConstant SmbASnowEnum
+syn keyword cConstant SmbAIceEnum
+syn keyword cConstant SmbCldFracEnum
+syn keyword cConstant SmbT0wetEnum
+syn keyword cConstant SmbT0dryEnum
+syn keyword cConstant SmbKEnum
+syn keyword cConstant SmbDEnum
+syn keyword cConstant SmbReEnum
+syn keyword cConstant SmbGdnEnum
+syn keyword cConstant SmbGspEnum
+syn keyword cConstant SmbECEnum
+syn keyword cConstant SmbCondensationEnum
+syn keyword cConstant SmbWEnum
+syn keyword cConstant SmbAEnum
+syn keyword cConstant SmbTEnum
+syn keyword cConstant SmbIsgraingrowthEnum
+syn keyword cConstant SmbIsalbedoEnum
+syn keyword cConstant SmbIsshortwaveEnum
+syn keyword cConstant SmbIsthermalEnum
+syn keyword cConstant SmbIsaccumulationEnum
+syn keyword cConstant SmbIsmeltEnum
+syn keyword cConstant SmbIsdensificationEnum
+syn keyword cConstant SmbIsturbulentfluxEnum
+syn keyword cConstant SMBpddEnum
+syn keyword cConstant SmbDelta18oEnum
+syn keyword cConstant SmbDelta18oSurfaceEnum
+syn keyword cConstant SmbIsdelta18oEnum
+syn keyword cConstant SmbIsmungsmEnum
+syn keyword cConstant SmbIsd18opdEnum
+syn keyword cConstant SmbPrecipitationsPresentdayEnum
+syn keyword cConstant SmbPrecipitationsLgmEnum
+syn keyword cConstant SmbTemperaturesPresentdayEnum
+syn keyword cConstant SmbTemperaturesLgmEnum
+syn keyword cConstant SmbPrecipitationEnum
+syn keyword cConstant SmbDesfacEnum
+syn keyword cConstant SmbS0pEnum
+syn keyword cConstant SmbS0tEnum
+syn keyword cConstant SmbRlapsEnum
+syn keyword cConstant SmbRlapslgmEnum
+syn keyword cConstant SmbPfacEnum
+syn keyword cConstant SmbTdiffEnum
+syn keyword cConstant SmbSealevEnum
+syn keyword cConstant SMBd18opddEnum
+syn keyword cConstant SmbDpermilEnum
+syn keyword cConstant SMBgradientsEnum
+syn keyword cConstant SmbMonthlytemperaturesEnum
+syn keyword cConstant SmbHrefEnum
+syn keyword cConstant SmbSmbrefEnum
+syn keyword cConstant SmbBPosEnum
+syn keyword cConstant SmbBNegEnum
+syn keyword cConstant SMBhenningEnum
+syn keyword cConstant SMBcomponentsEnum
+syn keyword cConstant SmbAccumulationEnum
+syn keyword cConstant SmbEvaporationEnum
+syn keyword cConstant SmbRunoffEnum
+syn keyword cConstant SMBmeltcomponentsEnum
+syn keyword cConstant SmbMeltEnum
+syn keyword cConstant SmbRefreezeEnum
+syn keyword cConstant SMBgcmEnum
+syn keyword cConstant SmbIspddEnum
+syn keyword cConstant SmbIssmbgradientsEnum
+syn keyword cConstant SolutionTypeEnum
+syn keyword cConstant AnalysisTypeEnum
+syn keyword cConstant ConfigurationTypeEnum
+syn keyword cConstant AdjointBalancethicknessAnalysisEnum
+syn keyword cConstant AdjointBalancethickness2AnalysisEnum
+syn keyword cConstant AdjointHorizAnalysisEnum
+syn keyword cConstant AnalysisCounterEnum
+syn keyword cConstant DefaultAnalysisEnum
+syn keyword cConstant BalancethicknessAnalysisEnum
+syn keyword cConstant BalancethicknessSolutionEnum
+syn keyword cConstant Balancethickness2AnalysisEnum
+syn keyword cConstant Balancethickness2SolutionEnum
+syn keyword cConstant BalancethicknessSoftAnalysisEnum
+syn keyword cConstant BalancethicknessSoftSolutionEnum
+syn keyword cConstant BalancevelocityAnalysisEnum
+syn keyword cConstant BalancevelocitySolutionEnum
+syn keyword cConstant L2ProjectionEPLAnalysisEnum
+syn keyword cConstant L2ProjectionBaseAnalysisEnum
+syn keyword cConstant BedSlopeSolutionEnum
+syn keyword cConstant DamageEvolutionSolutionEnum
+syn keyword cConstant DamageEvolutionAnalysisEnum
+syn keyword cConstant StressbalanceAnalysisEnum
+syn keyword cConstant StressbalanceSIAAnalysisEnum
+syn keyword cConstant StressbalanceSolutionEnum
+syn keyword cConstant StressbalanceVerticalAnalysisEnum
+syn keyword cConstant EnthalpyAnalysisEnum
+syn keyword cConstant FlaimAnalysisEnum
+syn keyword cConstant FlaimSolutionEnum
+syn keyword cConstant HydrologyShreveAnalysisEnum
+syn keyword cConstant HydrologyDCInefficientAnalysisEnum
+syn keyword cConstant HydrologyDCEfficientAnalysisEnum
+syn keyword cConstant HydrologySommersAnalysisEnum
+syn keyword cConstant HydrologySolutionEnum
+syn keyword cConstant MeltingAnalysisEnum
+syn keyword cConstant MasstransportAnalysisEnum
+syn keyword cConstant MasstransportSolutionEnum
+syn keyword cConstant FreeSurfaceBaseAnalysisEnum
+syn keyword cConstant FreeSurfaceTopAnalysisEnum
+syn keyword cConstant SurfaceNormalVelocityEnum
+syn keyword cConstant ExtrudeFromBaseAnalysisEnum
+syn keyword cConstant ExtrudeFromTopAnalysisEnum
+syn keyword cConstant DepthAverageAnalysisEnum
+syn keyword cConstant SteadystateSolutionEnum
+syn keyword cConstant SurfaceSlopeSolutionEnum
+syn keyword cConstant SmoothAnalysisEnum
+syn keyword cConstant ThermalAnalysisEnum
+syn keyword cConstant ThermalSolutionEnum
+syn keyword cConstant TransientSolutionEnum
+syn keyword cConstant UzawaPressureAnalysisEnum
+syn keyword cConstant GiaSolutionEnum
+syn keyword cConstant GiaAnalysisEnum
+syn keyword cConstant MeshdeformationSolutionEnum
+syn keyword cConstant MeshdeformationAnalysisEnum
+syn keyword cConstant LevelsetAnalysisEnum
+syn keyword cConstant LevelsetStabilizationEnum
+syn keyword cConstant ExtrapolationAnalysisEnum
+syn keyword cConstant LsfReinitializationAnalysisEnum
+syn keyword cConstant ApproximationEnum
+syn keyword cConstant NoneApproximationEnum
+syn keyword cConstant SIAApproximationEnum
+syn keyword cConstant SSAApproximationEnum
+syn keyword cConstant SSAHOApproximationEnum
+syn keyword cConstant SSAFSApproximationEnum
+syn keyword cConstant L1L2ApproximationEnum
+syn keyword cConstant HOApproximationEnum
+syn keyword cConstant HOFSApproximationEnum
+syn keyword cConstant FSApproximationEnum
+syn keyword cConstant FSvelocityEnum
+syn keyword cConstant FSpressureEnum
+syn keyword cConstant DataSetEnum
+syn keyword cConstant ConstraintsEnum
+syn keyword cConstant LoadsEnum
+syn keyword cConstant MaterialsEnum
+syn keyword cConstant NodesEnum
+syn keyword cConstant ContoursEnum
+syn keyword cConstant ParametersEnum
+syn keyword cConstant VerticesEnum
+syn keyword cConstant ResultsEnum
+syn keyword cConstant GenericParamEnum
+syn keyword cConstant AdolcParamEnum
+syn keyword cConstant BoolInputEnum
+syn keyword cConstant BoolParamEnum
+syn keyword cConstant ContourEnum
+syn keyword cConstant ControlInputEnum
+syn keyword cConstant DatasetInputEnum
+syn keyword cConstant DoubleInputEnum
+syn keyword cConstant DoubleArrayInputEnum
+syn keyword cConstant DataSetParamEnum
+syn keyword cConstant DoubleMatArrayParamEnum
+syn keyword cConstant DoubleMatParamEnum
+syn keyword cConstant DoubleParamEnum
+syn keyword cConstant DoubleVecParamEnum
+syn keyword cConstant ElementEnum
+syn keyword cConstant ElementHookEnum
+syn keyword cConstant HookEnum
+syn keyword cConstant ExternalResultEnum
+syn keyword cConstant FileParamEnum
+syn keyword cConstant InputEnum
+syn keyword cConstant IntInputEnum
+syn keyword cConstant InputToExtrudeEnum
+syn keyword cConstant InputToL2ProjectEnum
+syn keyword cConstant InputToDepthaverageEnum
+syn keyword cConstant InputToSmoothEnum
+syn keyword cConstant SmoothThicknessMultiplierEnum
+syn keyword cConstant IntParamEnum
+syn keyword cConstant IntVecParamEnum
+syn keyword cConstant TransientParamEnum
+syn keyword cConstant MaticeEnum
+syn keyword cConstant MatdamageiceEnum
+syn keyword cConstant MatestarEnum
+syn keyword cConstant MatparEnum
+syn keyword cConstant NodeEnum
+syn keyword cConstant NumericalfluxEnum
+syn keyword cConstant NumericalfluxTypeEnum
+syn keyword cConstant NeumannfluxEnum
+syn keyword cConstant ParamEnum
+syn keyword cConstant MoulinEnum
+syn keyword cConstant PengridEnum
+syn keyword cConstant PenpairEnum
+syn keyword cConstant ProfilerEnum
+syn keyword cConstant MatrixParamEnum
+syn keyword cConstant MassconEnum
+syn keyword cConstant MassconNameEnum
+syn keyword cConstant MassconDefinitionenumEnum
+syn keyword cConstant MassconLevelsetEnum
+syn keyword cConstant MassconaxpbyEnum
+syn keyword cConstant MassconaxpbyNameEnum
+syn keyword cConstant MassconaxpbyDefinitionenumEnum
+syn keyword cConstant MassconaxpbyNamexEnum
+syn keyword cConstant MassconaxpbyNameyEnum
+syn keyword cConstant MassconaxpbyAlphaEnum
+syn keyword cConstant MassconaxpbyBetaEnum
+syn keyword cConstant NodeSIdEnum
+syn keyword cConstant VectorParamEnum
+syn keyword cConstant RiftfrontEnum
+syn keyword cConstant RiftfrontTypeEnum
+syn keyword cConstant SegmentEnum
+syn keyword cConstant SegmentRiftfrontEnum
+syn keyword cConstant SpcDynamicEnum
+syn keyword cConstant SpcStaticEnum
+syn keyword cConstant SpcTransientEnum
+syn keyword cConstant StringArrayParamEnum
+syn keyword cConstant StringParamEnum
+syn keyword cConstant SegEnum
+syn keyword cConstant SegInputEnum
+syn keyword cConstant TriaEnum
+syn keyword cConstant TriaInputEnum
+syn keyword cConstant TetraEnum
+syn keyword cConstant TetraInputEnum
+syn keyword cConstant PentaEnum
+syn keyword cConstant PentaInputEnum
+syn keyword cConstant VertexEnum
+syn keyword cConstant VertexPIdEnum
+syn keyword cConstant VertexSIdEnum
+syn keyword cConstant AirEnum
+syn keyword cConstant IceEnum
+syn keyword cConstant MelangeEnum
+syn keyword cConstant WaterEnum
+syn keyword cConstant ClosedEnum
+syn keyword cConstant FreeEnum
+syn keyword cConstant OpenEnum
+syn keyword cConstant AdjointpEnum
+syn keyword cConstant AdjointxEnum
+syn keyword cConstant AdjointyEnum
+syn keyword cConstant AdjointzEnum
+syn keyword cConstant BalancethicknessMisfitEnum
+syn keyword cConstant BedSlopeXEnum
+syn keyword cConstant BedSlopeYEnum
+syn keyword cConstant BoundaryEnum
+syn keyword cConstant ConvergedEnum
+syn keyword cConstant FillEnum
+syn keyword cConstant FractionIncrementEnum
+syn keyword cConstant FrictionEnum
+syn keyword cConstant InternalEnum
+syn keyword cConstant MassFluxEnum
+syn keyword cConstant MeltingOffsetEnum
+syn keyword cConstant MisfitEnum
+syn keyword cConstant PressureEnum
+syn keyword cConstant PressurePicardEnum
+syn keyword cConstant AndroidFrictionCoefficientEnum
+syn keyword cConstant ResetPenaltiesEnum
+syn keyword cConstant SegmentOnIceShelfEnum
+syn keyword cConstant SurfaceAbsVelMisfitEnum
+syn keyword cConstant SurfaceAreaEnum
+syn keyword cConstant SurfaceAverageVelMisfitEnum
+syn keyword cConstant SurfaceLogVelMisfitEnum
+syn keyword cConstant SurfaceLogVxVyMisfitEnum
+syn keyword cConstant SurfaceRelVelMisfitEnum
+syn keyword cConstant SurfaceSlopeXEnum
+syn keyword cConstant SurfaceSlopeYEnum
+syn keyword cConstant TemperatureEnum
+syn keyword cConstant TemperaturePicardEnum
+syn keyword cConstant TemperaturePDDEnum
+syn keyword cConstant ThicknessAbsMisfitEnum
+syn keyword cConstant SurfaceAbsMisfitEnum
+syn keyword cConstant VelEnum
+syn keyword cConstant VelocityEnum
+syn keyword cConstant VxAverageEnum
+syn keyword cConstant VxEnum
+syn keyword cConstant VxPicardEnum
+syn keyword cConstant VyAverageEnum
+syn keyword cConstant VyEnum
+syn keyword cConstant VyPicardEnum
+syn keyword cConstant VzEnum
+syn keyword cConstant VzSSAEnum
+syn keyword cConstant VzHOEnum
+syn keyword cConstant VzPicardEnum
+syn keyword cConstant VzFSEnum
+syn keyword cConstant VxMeshEnum
+syn keyword cConstant VyMeshEnum
+syn keyword cConstant VzMeshEnum
+syn keyword cConstant EnthalpyEnum
+syn keyword cConstant EnthalpyPicardEnum
+syn keyword cConstant ThicknessAbsGradientEnum
+syn keyword cConstant ThicknessAlongGradientEnum
+syn keyword cConstant ThicknessAcrossGradientEnum
+syn keyword cConstant ThicknessPositiveEnum
+syn keyword cConstant IntMatParamEnum
+syn keyword cConstant RheologyBbarAbsGradientEnum
+syn keyword cConstant RheologyBAbsGradientEnum
+syn keyword cConstant DragCoefficientAbsGradientEnum
+syn keyword cConstant TransientInputEnum
+syn keyword cConstant WaterfractionEnum
+syn keyword cConstant WatercolumnEnum
+syn keyword cConstant BasalFrictionEnum
+syn keyword cConstant ViscousHeatingEnum
+syn keyword cConstant HydrologyWaterVxEnum
+syn keyword cConstant HydrologyWaterVyEnum
+syn keyword cConstant DrivingStressXEnum
+syn keyword cConstant DrivingStressYEnum
+syn keyword cConstant SigmaNNEnum
+syn keyword cConstant StressTensorEnum
+syn keyword cConstant StressTensorxxEnum
+syn keyword cConstant StressTensorxyEnum
+syn keyword cConstant StressTensorxzEnum
+syn keyword cConstant StressTensoryyEnum
+syn keyword cConstant StressTensoryzEnum
+syn keyword cConstant StressTensorzzEnum
+syn keyword cConstant StressMaxPrincipalEnum
+syn keyword cConstant DeviatoricStressEnum
+syn keyword cConstant DeviatoricStressxxEnum
+syn keyword cConstant DeviatoricStressxyEnum
+syn keyword cConstant DeviatoricStressxzEnum
+syn keyword cConstant DeviatoricStressyyEnum
+syn keyword cConstant DeviatoricStressyzEnum
+syn keyword cConstant DeviatoricStresszzEnum
+syn keyword cConstant DeviatoricStresseffectiveEnum
+syn keyword cConstant LambdaSEnum
+syn keyword cConstant StrainRateEnum
+syn keyword cConstant StrainRatexxEnum
+syn keyword cConstant StrainRatexyEnum
+syn keyword cConstant StrainRatexzEnum
+syn keyword cConstant StrainRateyyEnum
+syn keyword cConstant StrainRateyzEnum
+syn keyword cConstant StrainRatezzEnum
+syn keyword cConstant DivergenceEnum
+syn keyword cConstant MaxDivergenceEnum
+syn keyword cConstant GiaCrossSectionShapeEnum
+syn keyword cConstant GiadWdtEnum
+syn keyword cConstant GiaWEnum
+syn keyword cConstant P0Enum
+syn keyword cConstant P0ArrayEnum
+syn keyword cConstant P1Enum
+syn keyword cConstant P1DGEnum
+syn keyword cConstant P1bubbleEnum
+syn keyword cConstant P1bubblecondensedEnum
+syn keyword cConstant P2Enum
+syn keyword cConstant P2bubbleEnum
+syn keyword cConstant P2bubblecondensedEnum
+syn keyword cConstant P2xP1Enum
+syn keyword cConstant P1xP2Enum
+syn keyword cConstant P1xP3Enum
+syn keyword cConstant P2xP4Enum
+syn keyword cConstant P1P1Enum
+syn keyword cConstant P1P1GLSEnum
+syn keyword cConstant MINIEnum
+syn keyword cConstant MINIcondensedEnum
+syn keyword cConstant TaylorHoodEnum
+syn keyword cConstant LATaylorHoodEnum
+syn keyword cConstant XTaylorHoodEnum
+syn keyword cConstant OneLayerP4zEnum
+syn keyword cConstant CrouzeixRaviartEnum
+syn keyword cConstant LACrouzeixRaviartEnum
+syn keyword cConstant SaveResultsEnum
+syn keyword cConstant BoolExternalResultEnum
+syn keyword cConstant DoubleExternalResultEnum
+syn keyword cConstant DoubleMatExternalResultEnum
+syn keyword cConstant IntExternalResultEnum
+syn keyword cConstant JEnum
+syn keyword cConstant StringExternalResultEnum
+syn keyword cConstant StepEnum
+syn keyword cConstant TimeEnum
+syn keyword cConstant WaterColumnOldEnum
+syn keyword cConstant OutputdefinitionEnum
+syn keyword cConstant Outputdefinition1Enum
+syn keyword cConstant Outputdefinition2Enum
+syn keyword cConstant Outputdefinition3Enum
+syn keyword cConstant Outputdefinition4Enum
+syn keyword cConstant Outputdefinition5Enum
+syn keyword cConstant Outputdefinition6Enum
+syn keyword cConstant Outputdefinition7Enum
+syn keyword cConstant Outputdefinition8Enum
+syn keyword cConstant Outputdefinition9Enum
+syn keyword cConstant Outputdefinition10Enum
+syn keyword cConstant Outputdefinition11Enum
+syn keyword cConstant Outputdefinition12Enum
+syn keyword cConstant Outputdefinition13Enum
+syn keyword cConstant Outputdefinition14Enum
+syn keyword cConstant Outputdefinition15Enum
+syn keyword cConstant Outputdefinition16Enum
+syn keyword cConstant Outputdefinition17Enum
+syn keyword cConstant Outputdefinition18Enum
+syn keyword cConstant Outputdefinition19Enum
+syn keyword cConstant Outputdefinition20Enum
+syn keyword cConstant Outputdefinition21Enum
+syn keyword cConstant Outputdefinition22Enum
+syn keyword cConstant Outputdefinition23Enum
+syn keyword cConstant Outputdefinition24Enum
+syn keyword cConstant Outputdefinition25Enum
+syn keyword cConstant Outputdefinition26Enum
+syn keyword cConstant Outputdefinition27Enum
+syn keyword cConstant Outputdefinition28Enum
+syn keyword cConstant Outputdefinition29Enum
+syn keyword cConstant Outputdefinition30Enum
+syn keyword cConstant Outputdefinition31Enum
+syn keyword cConstant Outputdefinition32Enum
+syn keyword cConstant Outputdefinition33Enum
+syn keyword cConstant Outputdefinition34Enum
+syn keyword cConstant Outputdefinition35Enum
+syn keyword cConstant Outputdefinition36Enum
+syn keyword cConstant Outputdefinition37Enum
+syn keyword cConstant Outputdefinition38Enum
+syn keyword cConstant Outputdefinition39Enum
+syn keyword cConstant Outputdefinition40Enum
+syn keyword cConstant Outputdefinition41Enum
+syn keyword cConstant Outputdefinition42Enum
+syn keyword cConstant Outputdefinition43Enum
+syn keyword cConstant Outputdefinition44Enum
+syn keyword cConstant Outputdefinition45Enum
+syn keyword cConstant Outputdefinition46Enum
+syn keyword cConstant Outputdefinition47Enum
+syn keyword cConstant Outputdefinition48Enum
+syn keyword cConstant Outputdefinition49Enum
+syn keyword cConstant Outputdefinition50Enum
+syn keyword cConstant Outputdefinition51Enum
+syn keyword cConstant Outputdefinition52Enum
+syn keyword cConstant Outputdefinition53Enum
+syn keyword cConstant Outputdefinition54Enum
+syn keyword cConstant Outputdefinition55Enum
+syn keyword cConstant Outputdefinition56Enum
+syn keyword cConstant Outputdefinition57Enum
+syn keyword cConstant Outputdefinition58Enum
+syn keyword cConstant Outputdefinition59Enum
+syn keyword cConstant Outputdefinition60Enum
+syn keyword cConstant Outputdefinition61Enum
+syn keyword cConstant Outputdefinition62Enum
+syn keyword cConstant Outputdefinition63Enum
+syn keyword cConstant Outputdefinition64Enum
+syn keyword cConstant Outputdefinition65Enum
+syn keyword cConstant Outputdefinition66Enum
+syn keyword cConstant Outputdefinition67Enum
+syn keyword cConstant Outputdefinition68Enum
+syn keyword cConstant Outputdefinition69Enum
+syn keyword cConstant Outputdefinition70Enum
+syn keyword cConstant Outputdefinition71Enum
+syn keyword cConstant Outputdefinition72Enum
+syn keyword cConstant Outputdefinition73Enum
+syn keyword cConstant Outputdefinition74Enum
+syn keyword cConstant Outputdefinition75Enum
+syn keyword cConstant Outputdefinition76Enum
+syn keyword cConstant Outputdefinition77Enum
+syn keyword cConstant Outputdefinition78Enum
+syn keyword cConstant Outputdefinition79Enum
+syn keyword cConstant Outputdefinition80Enum
+syn keyword cConstant Outputdefinition81Enum
+syn keyword cConstant Outputdefinition82Enum
+syn keyword cConstant Outputdefinition83Enum
+syn keyword cConstant Outputdefinition84Enum
+syn keyword cConstant Outputdefinition85Enum
+syn keyword cConstant Outputdefinition86Enum
+syn keyword cConstant Outputdefinition87Enum
+syn keyword cConstant Outputdefinition88Enum
+syn keyword cConstant Outputdefinition89Enum
+syn keyword cConstant Outputdefinition90Enum
+syn keyword cConstant Outputdefinition91Enum
+syn keyword cConstant Outputdefinition92Enum
+syn keyword cConstant Outputdefinition93Enum
+syn keyword cConstant Outputdefinition94Enum
+syn keyword cConstant Outputdefinition95Enum
+syn keyword cConstant Outputdefinition96Enum
+syn keyword cConstant Outputdefinition97Enum
+syn keyword cConstant Outputdefinition98Enum
+syn keyword cConstant Outputdefinition99Enum
+syn keyword cConstant Outputdefinition100Enum
+syn keyword cConstant OutputdefinitionListEnum
+syn keyword cConstant MassfluxatgateEnum
+syn keyword cConstant MassfluxatgateNameEnum
+syn keyword cConstant MassfluxatgateDefinitionenumEnum
+syn keyword cConstant MassfluxatgateSegmentsEnum
+syn keyword cConstant NodalvalueEnum
+syn keyword cConstant NodalvalueNameEnum
+syn keyword cConstant NodalvalueDefinitionenumEnum
+syn keyword cConstant NodalvalueModelEnumEnum
+syn keyword cConstant NodalvalueNodeEnum
+syn keyword cConstant MisfitNameEnum
+syn keyword cConstant MisfitDefinitionenumEnum
+syn keyword cConstant MisfitModelEnumEnum
+syn keyword cConstant MisfitObservationEnum
+syn keyword cConstant MisfitObservationEnumEnum
+syn keyword cConstant MisfitLocalEnum
+syn keyword cConstant MisfitTimeinterpolationEnum
+syn keyword cConstant MisfitWeightsEnum
+syn keyword cConstant MisfitWeightsEnumEnum
+syn keyword cConstant SurfaceObservationEnum
+syn keyword cConstant WeightsSurfaceObservationEnum
+syn keyword cConstant VxObsEnum
+syn keyword cConstant WeightsVxObsEnum
+syn keyword cConstant VyObsEnum
+syn keyword cConstant WeightsVyObsEnum
+syn keyword cConstant MinVelEnum
+syn keyword cConstant MaxVelEnum
+syn keyword cConstant MinVxEnum
+syn keyword cConstant MaxVxEnum
+syn keyword cConstant MaxAbsVxEnum
+syn keyword cConstant MinVyEnum
+syn keyword cConstant MaxVyEnum
+syn keyword cConstant MaxAbsVyEnum
+syn keyword cConstant MinVzEnum
+syn keyword cConstant MaxVzEnum
+syn keyword cConstant MaxAbsVzEnum
+syn keyword cConstant FloatingAreaEnum
+syn keyword cConstant GroundedAreaEnum
+syn keyword cConstant IceMassEnum
+syn keyword cConstant IceVolumeEnum
+syn keyword cConstant IceVolumeAboveFloatationEnum
+syn keyword cConstant TotalFloatingBmbEnum
+syn keyword cConstant TotalGroundedBmbEnum
+syn keyword cConstant TotalSmbEnum
+syn keyword cConstant AbsoluteEnum
+syn keyword cConstant IncrementalEnum
+syn keyword cConstant AugmentedLagrangianREnum
+syn keyword cConstant AugmentedLagrangianRhopEnum
+syn keyword cConstant AugmentedLagrangianRlambdaEnum
+syn keyword cConstant AugmentedLagrangianRholambdaEnum
+syn keyword cConstant AugmentedLagrangianThetaEnum
+syn keyword cConstant NoneEnum
+syn keyword cConstant AggressiveMigrationEnum
+syn keyword cConstant SoftMigrationEnum
+syn keyword cConstant SubelementMigrationEnum
+syn keyword cConstant SubelementMigration2Enum
+syn keyword cConstant ContactEnum
+syn keyword cConstant GroundingOnlyEnum
+syn keyword cConstant MaskGroundediceLevelsetEnum
+syn keyword cConstant GaussSegEnum
+syn keyword cConstant GaussTriaEnum
+syn keyword cConstant GaussTetraEnum
+syn keyword cConstant GaussPentaEnum
+syn keyword cConstant FSSolverEnum
+syn keyword cConstant AdjointEnum
+syn keyword cConstant ColinearEnum
+syn keyword cConstant ControlSteadyEnum
+syn keyword cConstant FsetEnum
+syn keyword cConstant Gradient1Enum
+syn keyword cConstant Gradient2Enum
+syn keyword cConstant Gradient3Enum
+syn keyword cConstant GradientEnum
+syn keyword cConstant GroundinglineMigrationEnum
+syn keyword cConstant GsetEnum
+syn keyword cConstant IndexEnum
+syn keyword cConstant IndexedEnum
+syn keyword cConstant IntersectEnum
+syn keyword cConstant NodalEnum
+syn keyword cConstant OldGradientEnum
+syn keyword cConstant OutputBufferPointerEnum
+syn keyword cConstant OutputBufferSizePointerEnum
+syn keyword cConstant OutputFilePointerEnum
+syn keyword cConstant ToolkitsFileNameEnum
+syn keyword cConstant RootPathEnum
+syn keyword cConstant OutputFileNameEnum
+syn keyword cConstant InputFileNameEnum
+syn keyword cConstant LockFileNameEnum
+syn keyword cConstant RestartFileNameEnum
+syn keyword cConstant ToolkitsOptionsAnalysesEnum
+syn keyword cConstant ToolkitsOptionsStringsEnum
+syn keyword cConstant QmuErrNameEnum
+syn keyword cConstant QmuInNameEnum
+syn keyword cConstant QmuOutNameEnum
+syn keyword cConstant RegularEnum
+syn keyword cConstant ScaledEnum
+syn keyword cConstant SeparateEnum
+syn keyword cConstant SsetEnum
+syn keyword cConstant VerboseEnum
+syn keyword cConstant TriangleInterpEnum
+syn keyword cConstant BilinearInterpEnum
+syn keyword cConstant NearestInterpEnum
+syn keyword cConstant XYEnum
+syn keyword cConstant XYZEnum
+syn keyword cConstant DenseEnum
+syn keyword cConstant MpiDenseEnum
+syn keyword cConstant MpiSparseEnum
+syn keyword cConstant SeqEnum
+syn keyword cConstant MpiEnum
+syn keyword cConstant MumpsEnum
+syn keyword cConstant GslEnum
+syn keyword cConstant OptionEnum
+syn keyword cConstant GenericOptionEnum
+syn keyword cConstant OptionCellEnum
+syn keyword cConstant OptionStructEnum
+syn keyword cConstant CuffeyEnum
+syn keyword cConstant BuddJackaEnum
+syn keyword cConstant CuffeyTemperateEnum
+syn keyword cConstant PatersonEnum
+syn keyword cConstant ArrheniusEnum
+syn keyword cConstant LliboutryDuvalEnum
+syn keyword cConstant SpclevelsetEnum
+syn keyword cConstant ExtrapolationVariableEnum
+syn keyword cConstant IceMaskNodeActivationEnum
+syn keyword cConstant LevelsetfunctionSlopeXEnum
+syn keyword cConstant LevelsetfunctionSlopeYEnum
+syn keyword cConstant LevelsetfunctionPicardEnum
+syn keyword cConstant LevelsetReinitFrequencyEnum
+syn keyword cConstant SealevelriseSolutionEnum
+syn keyword cConstant SealevelriseAnalysisEnum
+syn keyword cConstant SealevelEnum
+syn keyword cConstant SealevelEustaticEnum
+syn keyword cConstant SealevelriseDeltathicknessEnum
+syn keyword cConstant SealevelriseMaxiterEnum
+syn keyword cConstant SealevelriseReltolEnum
+syn keyword cConstant SealevelriseAbstolEnum
+syn keyword cConstant SealevelriseLoveHEnum
+syn keyword cConstant SealevelriseLoveKEnum
+syn keyword cConstant SealevelriseTideLoveHEnum
+syn keyword cConstant SealevelriseTideLoveKEnum
+syn keyword cConstant SealevelriseRigidEnum
+syn keyword cConstant SealevelriseElasticEnum
+syn keyword cConstant SealevelriseRotationEnum
+syn keyword cConstant SealevelriseGElasticEnum
+syn keyword cConstant SealevelriseDegaccEnum
+syn keyword cConstant SealevelriseTransitionsEnum
+syn keyword cConstant SealevelriseRequestedOutputsEnum
+syn keyword cConstant SealevelriseNumRequestedOutputsEnum
+syn keyword cConstant ParametersENDEnum
+"ISSM's Enums end
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+if !exists("c_no_ansi") || exists("c_ansi_typedefs")
+	syn keyword   cType		size_t ssize_t wchar_t ptrdiff_t sig_atomic_t fpos_t
+	syn keyword   cType		clock_t time_t va_list jmp_buf FILE DIR div_t ldiv_t
+	syn keyword   cType		mbstate_t wctrans_t wint_t wctype_t
+	syn keyword   cType		lldiv_t float_t double_t fenv_t fexcept_t
+endif
+if !exists("c_no_c99") " ISO C99
+	syn keyword	cType		bool complex imaginary
+	syn keyword	cType		int8_t int16_t int32_t int64_t
+	syn keyword	cType		uint8_t uint16_t uint32_t uint64_t
+	syn keyword	cType		int_least8_t int_least16_t int_least32_t int_least64_t
+	syn keyword	cType		uint_least8_t uint_least16_t uint_least32_t uint_least64_t
+	syn keyword	cType		int_fast8_t int_fast16_t int_fast32_t int_fast64_t
+	syn keyword	cType		uint_fast8_t uint_fast16_t uint_fast32_t uint_fast64_t
+	syn keyword	cType		intptr_t uintptr_t
+	syn keyword	cType		intmax_t uintmax_t
+endif
+if exists("c_gnu")
+	syn keyword	cType		__label__ __complex__ __volatile__
+endif
+
+syn keyword	cStructure	struct union enum typedef
+syn keyword	cStorageClass	static register auto volatile extern const VOL
+if exists("c_gnu")
+	syn keyword	cStorageClass	inline __attribute__
+endif
+if !exists("c_no_c99")
+	syn keyword	cStorageClass	inline restrict
+endif
+
+if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu")
+	if exists("c_gnu")
+		syn keyword cConstant __GNUC__ __FUNCTION__ __PRETTY_FUNCTION__
+	endif
+	syn keyword cConstant __LINE__ __FILE__ __DATE__ __TIME__ __STDC__ __func__
+	syn keyword cConstant __STDC_VERSION__
+	syn keyword cConstant CHAR_BIT MB_LEN_MAX MB_CUR_MAX
+	syn keyword cConstant UCHAR_MAX UINT_MAX ULONG_MAX USHRT_MAX
+	syn keyword cConstant CHAR_MIN INT_MIN LONG_MIN SHRT_MIN
+	syn keyword cConstant CHAR_MAX INT_MAX LONG_MAX SHRT_MAX
+	syn keyword cConstant SCHAR_MIN SINT_MIN SLONG_MIN SSHRT_MIN
+	syn keyword cConstant SCHAR_MAX SINT_MAX SLONG_MAX SSHRT_MAX
+	if !exists("c_no_c99")
+		syn keyword cConstant LLONG_MIN LLONG_MAX ULLONG_MAX
+		syn keyword cConstant INT8_MIN INT16_MIN INT32_MIN INT64_MIN
+		syn keyword cConstant INT8_MAX INT16_MAX INT32_MAX INT64_MAX
+		syn keyword cConstant UINT8_MAX UINT16_MAX UINT32_MAX UINT64_MAX
+		syn keyword cConstant INT_LEAST8_MIN INT_LEAST16_MIN INT_LEAST32_MIN INT_LEAST64_MIN
+		syn keyword cConstant INT_LEAST8_MAX INT_LEAST16_MAX INT_LEAST32_MAX INT_LEAST64_MAX
+		syn keyword cConstant UINT_LEAST8_MAX UINT_LEAST16_MAX UINT_LEAST32_MAX UINT_LEAST64_MAX
+		syn keyword cConstant INT_FAST8_MIN INT_FAST16_MIN INT_FAST32_MIN INT_FAST64_MIN
+		syn keyword cConstant INT_FAST8_MAX INT_FAST16_MAX INT_FAST32_MAX INT_FAST64_MAX
+		syn keyword cConstant UINT_FAST8_MAX UINT_FAST16_MAX UINT_FAST32_MAX UINT_FAST64_MAX
+		syn keyword cConstant INTPTR_MIN INTPTR_MAX UINTPTR_MAX
+		syn keyword cConstant INTMAX_MIN INTMAX_MAX UINTMAX_MAX
+		syn keyword cConstant PTRDIFF_MIN PTRDIFF_MAX SIG_ATOMIC_MIN SIG_ATOMIC_MAX
+		syn keyword cConstant SIZE_MAX WCHAR_MIN WCHAR_MAX WINT_MIN WINT_MAX
+	endif
+	syn keyword cConstant FLT_RADIX FLT_ROUNDS
+	syn keyword cConstant FLT_DIG FLT_MANT_DIG FLT_EPSILON
+	syn keyword cConstant DBL_DIG DBL_MANT_DIG DBL_EPSILON
+	syn keyword cConstant LDBL_DIG LDBL_MANT_DIG LDBL_EPSILON
+	syn keyword cConstant FLT_MIN FLT_MAX FLT_MIN_EXP FLT_MAX_EXP
+	syn keyword cConstant FLT_MIN_10_EXP FLT_MAX_10_EXP
+	syn keyword cConstant DBL_MIN DBL_MAX DBL_MIN_EXP DBL_MAX_EXP
+	syn keyword cConstant DBL_MIN_10_EXP DBL_MAX_10_EXP
+	syn keyword cConstant LDBL_MIN LDBL_MAX LDBL_MIN_EXP LDBL_MAX_EXP
+	syn keyword cConstant LDBL_MIN_10_EXP LDBL_MAX_10_EXP
+	syn keyword cConstant HUGE_VAL CLOCKS_PER_SEC NULL _NO_LEAP_SECONDS _LOCALTIME
+	syn keyword cConstant LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY
+	syn keyword cConstant LC_NUMERIC LC_TIME
+	" syn keyword cConstant SIG_DFL SIG_ERR SIG_IGN
+	syn keyword cAnsiFuncPtr SIG_DFL SIG_ERR SIG_IGN
+	syn keyword cConstant SIGABRT SIGFPE SIGILL SIGHUP SIGINT SIGSEGV SIGTERM
+	syn keyword cConstant INFINITY     FP_SUBNORMAL FP_ILOGB0
+	syn keyword cConstant NAN          FP_ZERO      FP_ILOGBNAN
+	syn keyword cConstant FP_INFINITE  FP_FAST_FMA
+	syn keyword cConstant HUGE_VALF    FP_NAN       FP_FAST_FMAF
+	syn keyword cConstant HUGE_VALL    FP_NORMAL    FP_FAST_FMAL
+	syn keyword cConstant FE_OVERFLOW      FE_TOWARDZERO
+	syn keyword cConstant FE_UNDERFLOW     FE_UPWARD
+	syn keyword cConstant FE_DIVBYZERO     FE_ALL_EXCEPT    FE_DFL_ENV
+	syn keyword cConstant FE_INEXACT       FE_DOWNWARD
+	syn keyword cConstant FE_INVALID       FE_TONEAREST
+	syn keyword cConstant	_Complex_I _Imaginary_I 
+	" Add POSIX signals as well...
+	syn keyword cConstant SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP
+	syn keyword cConstant SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV
+	syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU
+	syn keyword cConstant SIGUSR1 SIGUSR2
+	syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF WEOF
+	syn keyword cConstant FOPEN_MAX FILENAME_MAX L_tmpnam
+	syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET
+	syn keyword cConstant TMP_MAX stderr stdin stdout
+	syn keyword cConstant EXIT_FAILURE EXIT_SUCCESS RAND_MAX
+	" Add POSIX errors as well
+	syn keyword cConstant E2BIG EACCES EAGAIN EBADF EBADMSG EBUSY
+	syn keyword cConstant ECANCELED ECHILD EDEADLK EDOM EEXIST EFAULT
+	syn keyword cConstant EFBIG EILSEQ EINPROGRESS EINTR EINVAL EIO EISDIR
+	syn keyword cConstant EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENFILE ENODEV
+	syn keyword cConstant ENOENT ENOEXEC ENOLCK ENOMEM ENOSPC ENOSYS
+	syn keyword cConstant ENOTDIR ENOTEMPTY ENOTSUP ENOTTY ENXIO EPERM
+	syn keyword cConstant EPIPE ERANGE EROFS ESPIPE ESRCH ETIMEDOUT EXDEV
+	" math.h
+	syn keyword cConstant M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2 M_PI_4
+	syn keyword cConstant M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2
+endif
+if !exists("c_no_c99") " ISO C99
+	syn keyword cConstant true false __bool_true_false_are_defined
+endif
+
+" Accept %: for # (C99)
+syn region	cPreCondit	start="^\s*\(%:\|#\)\s*\(ifdef\|ifndef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=cComment,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
+syn keyword	cDefined	defined contained
+"syn match	cDefined	display contained "\<defined(\w\+)" contains=cName,cAnsiName
+syn region	cPreConditIf	start="^\s*\(%:\|#\)\s*\(if\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=cDefined,cComment,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
+syn match	cPreCondit	display "^\s*\(%:\|#\)\s*\(else\|endif\)\>"
+if !exists("c_no_if0")
+	syn region	cCppOut		start="^\s*\(%:\|#\)\s*if\s\+0\+\>" end=".\@=\|$" contains=cCppOut2
+	syn region	cCppOut2	contained start="0" end="^\s*\(%:\|#\)\s*\(endif\>\|else\>\|elif\>\)" contains=cSpaceError,cCppSkip
+		syn region	cCppSkip	contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppSkip
+	endif
+	syn region	cIncluded	display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+	syn match	cIncluded	display contained "<[^>]*>"
+	syn match	cInclude	display "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=cIncluded
+	syn match cLineSkip	"\\$"
+	syn cluster	cPreProcGroup	contains=cPreConditIf,cPreCondit,cIncluded,cInclude,cDefined,cDefine,cErrInParen,cErrInBracket,cUserLabel,cUserLabel2,cGotoLabel,cSpecial,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti
+	"syn region	cDefine		start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@cPreProcGroup,@Spell
+	syn region	cDefine		start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@cPreProcGroup,cName,cFunction,cAnsiFunction,@Spell
+	syn region	cPreProc	start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
+
+	" Highlight User Labels
+	syn cluster	cMultiGroup	contains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cUserLabel2,cGotoLabel,cBitField,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString
+	syn region	cMulti		transparent start='?' skip='::' end=':' contains=ALLBUT,@cMultiGroup,@Spell
+	" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
+	syn cluster	cLabelGroup	contains=cUserLabel
+	syn match	cUserCont	display "^\s*\I\i*\s*:$" contains=@cLabelGroup
+	syn match	cUserCont	display ";\s*\I\i*\s*:$" contains=@cLabelGroup
+	syn match	cUserCont	display "^\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
+	syn match	cUserCont	display ";\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
+
+	syn match	cUserLabel	display "\I\i*" contained
+	syn match	cUserLabel2	display "\I\i*:;\+"me=e-2
+	syn match	cGotoLabel	display "\<goto\s\+\I\i*;"me=e-1,hs=s+5 contains=cGoto
+	syn keyword	cGoto		contained goto
+
+	" Avoid recognizing most bitfields as labels
+	syn match	cBitField	display "^\s*\I\i*\s*:\s*[1-9]"me=e-1
+	syn match	cBitField	display ";\s*\I\i*\s*:\s*[1-9]"me=e-1
+
+	syn match cOperator	"\(<<\|>>\|[-+*/%&^|<>!=]\)="
+	syn match cOperator	"<<\|>>\|&&\|||\|++\|--\|->"
+	syn match cOperator	"[.!~*&%<>^|=+-]"
+	syn match cOperator	"/[^/*=]"me=e-1
+	syn match cOperator	"/$"
+	syn match cOperator	"[\\]"
+	syn match cOperator	"&&\|||"
+	syn match cSpecialCharacter	"[,;]"
+	syn match cDelimiter    "[][(){}]"
+	syn keyword	cType		CHAR byte BYTE uchar ushort uint ulong
+	syn keyword	cType		WORD DWORD QWORD INT INT2 INT4 UNS UNS2 UNS4 INT8 UNS8
+	syn keyword	cType		CFG_t cfap_t cBYTE cvoid
+	syn keyword	cType		_Bool _Complex _Imaginary __int64
+	if !exists("c_no_ansi") || exists("c_ansi_typedefs")
+		syn keyword   cMC	__near __far FAR __io __direct DIR
+	endif
+
+	if exists("c_minlines")
+		let b:c_minlines = c_minlines
+	else
+		if !exists("c_no_if0")
+			let b:c_minlines = 50	" #if 0 constructs can be long
+		else
+			let b:c_minlines = 15	" mostly for () constructs
+		endif
+	endif
+	exec "syn sync ccomment cComment minlines=" . b:c_minlines
+
+	" Define the default highlighting.
+	" For version 5.7 and earlier: only when not done already
+	" For version 5.8 and later: only when an item doesn't have highlighting yet
+	if version >= 508 || !exists("did_c_syn_inits")
+		if version < 508
+			let did_c_syn_inits = 1
+			command -nargs=+ HiLink hi link <args>
+		else
+			command -nargs=+ HiLink hi def link <args>
+		endif
+
+		HiLink cFormat	cSpecial
+		HiLink cCppString	cString
+		HiLink cCommentL	cComment
+		HiLink cCommentStart	cComment
+		HiLink cLabel		Label
+		" HiLink cUserLabel	Label
+		HiLink cUserLabel	UserLabel2
+		HiLink cUserLabel2	UserLabel2
+		HiLink cGotoLabel	UserLabel2
+		HiLink cGoto		Statement
+		HiLink cConditional	Conditional
+		HiLink cRepeat	Repeat
+		HiLink cCharacter	Character
+		HiLink cSpecialCharacter cSpecial
+		HiLink cNumber	Number
+		HiLink cOctal		Number
+		HiLink cOctalZero	PreProc		" link this to Error if you want
+		HiLink cFloat		Float
+		HiLink cOctalError	cError
+		HiLink cParenError	cError
+		HiLink cErrInParen	cError
+		HiLink cErrInBracket	cError
+		HiLink cCommentError	cError
+		HiLink cCommentStartError	cError
+		HiLink cSpaceError	cError
+		HiLink cSpecialError	cError
+		HiLink cOperator	Operator
+		HiLink cOperatorBold	OperatorBold
+		HiLink cStructure	Structure
+		HiLink cStorageClass	StorageClass
+		HiLink cInclude	Include
+		HiLink cPreProc	PreProc
+		HiLink cDefine	Macro
+		HiLink cDefined	PreCondit
+		HiLink cIncluded	cString
+		HiLink cError		Error
+		HiLink cStatement	Statement
+		HiLink cPreCondit	PreCondit
+		HiLink cPreConditIf	PreCondit
+		HiLink cType		Type
+		HiLink cConstant	Constant
+		HiLink cCommentString cString
+		HiLink cComment2String cString
+		HiLink cCommentSkip	cComment
+		HiLink cString	String
+		HiLink cComment	Comment
+		HiLink cDelimiter     Delimiter
+		HiLink cSpecial	SpecialChar
+		HiLink cTodo		Todo
+		HiLink cCppSkip	cCppOut
+		HiLink cCppOut2	cCppOut
+		HiLink cCppOut	Comment
+		HiLink cMulti		Operator
+		HiLink cMultiMG	Operator
+		HiLink cFunction	Function
+		HiLink cAnsiFunction	StdFunction
+		HiLink cName		Name
+		HiLink cBitField	Name
+		HiLink cAnsiName	StdName
+		"HiLink cBlock	BlockBraces
+		HiLink cBraces	BlockBraces
+		"HiLink cBraceError	Error
+		HiLink cMC		MicroController
+		HiLink cAnsiFuncPtr	AnsiFuncPtr
+
+		hi Function		gui=NONE guifg=#e86f00
+		"hi StdFunction	gui=bold guifg=#ee0040
+		hi StdFunction	gui=bold guifg=#e86f00
+		hi Statement		gui=bold guifg=#a06129
+		hi UserLabel2		gui=bold guifg=#c96129
+		hi Operator		gui=NONE guifg=#000000
+		hi OperatorBold	gui=bold guifg=#000000
+		hi StdName		gui=bold guifg=#5276e6
+		hi Name		gui=NONE guifg=#5276e6
+		hi BlockBraces	gui=bold guifg=#000000
+		hi Special		gui=NONE guifg=#a000a0
+		hi Comment		gui=NONE guifg=grey62
+		hi MicroController	gui=bold guifg=#d00000
+		hi AnsiFuncPtr	gui=NONE guifg=#ff0000
+		" hi PreProc        	gui=NONE guifg=#6a5acd
+		hi PreCondit      	gui=NONE guifg=#6a5acd
+		" hi Macro          	gui=NONE guifg=#0000ff
+
+		delcommand HiLink
+	endif
+	hi Normal		gui=NONE guifg=#000000 guibg=Ivory1
+
+	let b:current_syntax = "c"
+
+	" vim: ts=8
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/syntax/matlab.vim
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/syntax/matlab.vim	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/syntax/matlab.vim	(revision 21239)
@@ -0,0 +1,357 @@
+" Vim syntax file
+" Language:	Matlab
+" Maintainer:	Fabrice Guy <fabrice.guy at gmail dot com>
+"		Original authors: Mario Eusebio and Preben Guldberg
+" Last Change:	2008 Oct 16 : added try/catch/rethrow and class statements
+" 		2008 Oct 28 : added highlighting for most of Matlab functions
+" 		2009 Nov 23 : added 'todo' keyword in the matlabTodo keywords 
+" 		(for doxygen support)
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+syn keyword matlabStatement		return function
+syn keyword matlabConditional		switch case else elseif end if otherwise break continue
+syn keyword matlabRepeat		do for while
+syn keyword matlabStorageClass		classdef methods properties events persistent global
+syn keyword matlabExceptions		try catch rethrow throw
+
+syn keyword matlabTodo			contained  TODO NOTE FIXME XXX
+syn keyword matlabImport		import
+" If you do not want these operators lit, uncommment them and the "hi link" below
+syn match  matlabRelationalOperator	"\(==\|\~=\|>=\|<=\|=\~\|>\|<\|=\)"
+syn match matlabArithmeticOperator	"[-+]"
+syn match matlabArithmeticOperator	"\.\=[*/\\^]"
+syn match matlabLogicalOperator		"[&|~]"
+syn keyword matlabBoolean		true false
+
+syn match matlabLineContinuation	"\.\{3}"
+
+" String
+syn region matlabString			start=+'+ end=+'+	oneline
+
+" If you don't like tabs
+syn match matlabTab			"\t"
+
+" Standard numbers
+syn match matlabNumber		"\<\d\+[ij]\=\>"
+" floating point number, with dot, optional exponent
+syn match matlabFloat		"\<\d\+\(\.\d*\)\=\([edED][-+]\=\d\+\)\=[ij]\=\>"
+" floating point number, starting with a dot, optional exponent
+syn match matlabFloat		"\.\d\+\([edED][-+]\=\d\+\)\=[ij]\=\>"
+syn keyword matlabConstant	eps Inf NaN pi
+
+
+" Transpose character and delimiters: Either use just [...] or (...) aswell
+syn match matlabDelimiter		"[][]"
+"syn match matlabDelimiter		"[][()]"
+syn match matlabTransposeOperator	"[])a-zA-Z0-9.]'"lc=1
+
+syn match matlabSemicolon		";"
+
+syn match matlabComment			"%.*$"	contains=matlabTodo,matlabTab
+syn region matlabBlockComment        start=+%{+    end=+%}+ contains=matlabBlockComment
+
+
+" trigonometric
+syn keyword matlabFunc 			acos acosd acosh acot acotd acoth acsc acscd acsch asec asecd asech asin asind asinh
+syn keyword matlabFunc 			atan atan2 atand atanh cos cosd cosh cot cotd coth csc cscd csch hypot sec secd
+syn keyword matlabFunc 			sech sin sind sinh tan tand tanh
+" exponential
+syn keyword matlabFunc 			exp expm1 log log10 log1p log2 nextpow2 nthroot pow2 reallog realpow realsqrt sqrt
+" Complex
+syn keyword matlabFunc 			abs angle complex conj cplxpair  imag real sign unwrap
+" Rounding and Remainder
+syn keyword matlabFunc 			ceil fix floor idivide mod rem round
+"Discrete Math (e.g., Prime Factors)
+syn keyword matlabFunc 			factor factorial gcd isprime lcm nchoosek perms primes rat rats
+"Polynomials
+syn keyword matlabFunc 			conv deconv poly polyder polyeig polyfit polyint polyval polyvalm residue roots
+"Numeric Types
+syn keyword matlabFunc 			arrayfun cast cat class find intmax intmin intwarning ipermute isa isequal isequalwithequalnans isfinite isinf isnan isnumeric isreal isscalar isvector permute realmax realmin reshape squeeze zeros
+"Characters and Strings
+syn keyword matlabFunc 			cellstr char eval findstr isstr regexp sprintf sscanf strcat strcmp strcmpi strncmp strncmpi strings strjust strmatch strread strrep strtrim strvcat
+"Structures
+syn keyword matlabFunc 			cell2struct deal fieldnames getfield  isfield isstruct orderfields rmfield setfield struct struct2cell structfun
+"Cell Arrays
+syn keyword matlabFunc 			cell cell2mat celldisp cellfun cellplot iscell iscellstr mat2cell num2cell
+"Function Handles
+syn keyword matlabFunc 			feval func2str functions str2func
+"Java Classes and Objects
+syn keyword matlabFunc 			clear depfun exist im2java inmem javaaddpath javaArray javachk Generate javaclasspath javaMethod javaObject javarmpath methodsview usejava which
+"Data Type Identification
+syn keyword matlabFunc 			ischar isfloat isinteger isjava islogical isobject validateattributes who whos
+"Data type conversion
+"Numeric
+syn keyword matlabFunc 			double int8 int16 int32 int64 single typecast uint8 uint16 uint32 uint64
+"String to Numeric
+syn keyword matlabFunc 			base2dec bin2dec hex2dec hex2num str2double str2num unicode2native
+"Numeric to String
+syn keyword matlabFunc 			dec2base dec2bin dec2hex int2str mat2str native2unicode num2str
+"Other Conversions
+syn keyword matlabFunc 			datestr logical num2hex str2mat
+"String Creation
+syn keyword matlabFunc 			blanks
+"String Identification
+syn keyword matlabFunc 			isletter isspace isstrprop validatestring 
+"String Manipulation
+syn keyword matlabFunc 			deblank lower upper
+"String Parsing
+syn keyword matlabFunc 			regexpi regexprep regexptranslate strfind strtok 
+"String Evaluation
+syn keyword matlabFunc 			evalc evalin
+"String Comparison
+syn keyword matlabFunc 			strncmp strncmpi
+"Bit-wise Functions
+syn keyword matlabFunc			bitand bitcmp bitget bitmax bitor bitset bitshift bitxor swapbytes
+"Logical Functions
+syn keyword matlabFunc			all and any iskeyword isvarname not or xor
+"Predefined Dialog Boxes
+syn keyword matlabFunc dialog errordlg export2wsdlg helpdlg inputdlg listdlg msgbox printdlg printpreview questdlg uigetdir uigetfile uigetpref uiopen uiputfile uisave uisetcolor uisetfont waitbar warndlg
+"Deploying User Interfaces
+syn keyword matlabFunc guidata guihandles movegui openfig
+"Developing User Interfaces
+syn keyword matlabFunc addpref getappdata getpref ginput guide inspect isappdata ispref rmappdata rmpref setappdata setpref uisetpref waitfor waitforbuttonpress
+"User Interface Objects
+syn keyword matlabFunc uibuttongroup uicontextmenu uicontrol uimenu uipanel uipushtool uitoggletool uitoolbar menu
+"Finding Objects from Callbacks
+syn keyword matlabFunc findall findfigs findobj gcbf gcbo 
+"GUI Utility Functions
+syn keyword matlabFunc align getpixelposition listfonts selectmoveresize setpixelposition textwrap uistack
+"Controlling Program Execution
+syn keyword matlabFunc uiresume uiwait	
+"Basic Plots and Graphs
+syn keyword matlabFunc box errorbar hold  loglog  plot plot3 plotyy polar semilogx semilogy subplot
+"Plotting Tools
+syn keyword matlabFunc figurepalette pan plotbrowser plotedit plottools propertyeditor rotate3d  showplottool zoom 
+
+"Annotating Plots
+syn keyword matlabFunc annotation clabel datacursormode datetick gtext legend  line rectangle texlabel title xlabel ylabel zlabel
+"Area, Bar, and Pie Plots
+syn keyword matlabFunc area bar barh bar3 bar3h pareto pie pie3
+"Contour Plots
+syn keyword matlabFunc contour contour3  contourc contourf ezcontour ezcontourf
+"Direction and Velocity Plots
+syn keyword matlabFunc comet comet3 compass feather quiver quiver3 
+"Discrete Data Plots
+syn keyword matlabFunc stairs stem stem3
+"Function Plots
+syn keyword matlabFunc ezmesh ezmeshc ezplot ezplot3 ezpolar ezsurf ezsurfc fplot 
+"Histograms
+syn keyword matlabFunc hist histc rose
+"Polygons and Surfaces
+syn keyword matlabFunc convhull cylinder delaunay delaunay3 delaunayn dsearch dsearchn ellipsoid fill fill3 inpolygon pcolor  polyarea rectint ribbon slice sphere tsearch tsearchn voronoi waterfall
+"Scatter/Bubble Plots
+syn keyword matlabFunc plotmatrix scatter scatter3
+"Animation
+syn keyword matlabFunc getframe im2frame movie  noanimate
+"Bit-Mapped Images
+syn keyword matlabFunc frame2im image imagesc imfinfo imformats imread imwrite ind2rgb
+"Printing
+syn keyword matlabFunc frameedit hgexport orient print printopt saveas 
+"Handle Graphics
+syn keyword matlabFunc allchild ancestor copyobj delete gca gco get ishandle propedit set
+"Object 
+syn keyword matlabFunc axes figure hggroup hgtransform light patch colormap colorbar
+"root object	
+syn keyword matlabFunc surface text
+"Plot Objects
+syn keyword matlabFunc clf close closereq drawnow gcf hgload hgsave newplot opengl refresh
+"Axes Operations
+syn keyword matlabFunc axis cla grid ishold makehgtform
+"Operating on Object Properties
+syn keyword matlabFunc linkaxes linkprop refreshdata
+"Data analysis
+"Basic Operations
+syn keyword matlabFunc brush cumprod cumsum linkdata prod sort sortrows sum 
+"Descriptive Statistics
+syn keyword matlabFunc corrcoef cov max mean median min mode std var
+"Filtering and Convolution
+syn keyword matlabFunc conv2 convn detrend filter filter2 
+"Interpolation and Regression
+syn keyword matlabFunc interp1 interp2 interp3 interpn mldivide mrdivide
+"Fourier Transforms
+syn keyword matlabFunc fft fft2 fftn fftshift fftw ifft ifft2 ifftn ifftshift
+"Derivatives and Integrals
+syn keyword matlabFunc cumtrapz del2 diff gradient trapz 
+"File Operations
+syn keyword matlabFunc cd copyfile dir fileattrib filebrowser isdir lookfor ls matlabroot mkdir movefile pwd recycle rehash rmdir toolboxdir type what
+"Operating System Interface
+syn keyword matlabFunc clipboard computer dos getenv hostid maxNumCompThreads perl setenv system unix winqueryreg
+"MATLAB Version and License
+syn keyword matlabFunc ismac ispc isstudent isunix javachk license prefdir usejava ver verLessThan version 
+"Basic Information
+syn keyword matlabFunc disp display isempty issparse length ndims numel size 
+"Elementary Matrices and Arrays
+syn keyword matlabFunc blkdiag diag eye freqspace ind2sub linspace logspace meshgrid ndgrid ones rand randn sub2ind 
+"Array Operations
+syn keyword matlabFunc accumarray bsxfun cross dot kron tril triu 
+"Array Manipulation
+syn keyword matlabFunc circshift flipdim fliplr flipud horzcat inline repmat rot90 shiftdim vectorize vertcat transp
+"Specialized Matrices
+syn keyword matlabFunc compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson
+"Matrix Analysis
+syn keyword matlabFunc cond condeig det norm normest null orth rank rcond rref subspace trace
+"Linear Equations
+syn keyword matlabFunc chol cholinc condest funm ilu inv linsolve lscov lsqnonneg lu luinc pinv qr 
+"Eigenvalues and Singular Values
+syn keyword matlabFunc balance cdf2rdf eig eigs gsvd hess ordeig ordqz ordschur rsf2csf schur sqrtm ss2tf svd svds
+"Matrix Logarithms and Exponentials
+syn keyword matlabFunc expm logm 
+"Factorization
+syn keyword matlabFunc cholupdate planerot qrdelete qrinsert qrupdate qz 
+"Interpolation
+syn keyword matlabFunc griddata griddata3 griddatan interp1q interpft mkpp padecoef pchip ppval spline unmkpp 
+"Delaunay Triangulation and Tessellation
+syn keyword matlabFunc tetramesh trimesh triplot trisurf 
+"Convex Hull
+syn keyword matlabFunc convhulln	
+"Voronoi Diagrams
+syn keyword matlabFunc voronoin
+"Cartesian Coordinate System Conversion
+syn keyword matlabFunc cart2pol cart2sph pol2cart sph2cart 
+"Ordinary Differential Equations (IVP)
+syn keyword matlabFunc decic deval ode15i ode23 ode45 ode113 ode15s ode23s ode23t ode23tb odefile odeget odeset odextend
+"Delay Differential Equations
+syn keyword matlabFunc dde23 ddeget ddesd ddeset 
+"Boundary Value Problems
+syn keyword matlabFunc bvp4c bvp5c bvpget bvpinit bvpset bvpxtend
+"Partial Differential Equations
+syn keyword matlabFunc pdepe pdeval 
+"Optimization
+syn keyword matlabFunc fminbnd fminsearch fzero optimget optimset
+"Numerical Integration (Quadrature)
+syn keyword matlabFunc dblquad quad quadgk quadl quadv triplequad
+"Specialized Math
+syn keyword matlabFunc airy besselh besseli besselj besselk bessely beta betainc betaln ellipj ellipke erf erfc erfcx erfinv erfcinv expint gamma gammainc gammaln legendre psi
+"Elementary Sparse Matrices
+syn keyword matlabFunc spdiags speye sprand sprandn sprandsym
+"Full to Sparse Conversion
+syn keyword matlabFunc full sparse spconvert
+"Working with Sparse Matrices
+syn keyword matlabFunc nnz nonzeros nzmax spalloc spfun spones spparms spy 
+"Reordering Algorithms
+syn keyword matlabFunc amd colamd colperm dmperm ldl randperm symamd symrcm 
+"Linear Algebra
+syn keyword matlabFunc spaugment sprank 
+"Linear Equations (Iterative Methods)
+syn keyword matlabFunc bicg bicgstab cgs gmres lsqr minres pcg qmr symmlq 
+"Tree Operations
+syn keyword matlabFunc etree etreeplot gplot symbfact treelayout treeplot 
+"Timeseries
+"General Purpose
+syn keyword matlabFunc getdatasamplesize getqualitydesc timeseries tsprops tstool
+"Data Manipulation
+syn keyword matlabFunc addsample ctranspose delsample getabstime getinterpmethod getsampleusingtime idealfilter resample setabstime setinterpmethod synchronize transpose
+"Event Data
+syn keyword matlabFunc addevent delevent gettsafteratevent gettsafterevent gettsatevent gettsbeforeatevent gettsbeforeevent  gettsbetweenevents
+"Descriptive Statistics
+syn keyword matlabFunc iqr
+
+"Time Series Collections
+"General Purpose
+syn keyword matlabFunc tscollection
+"Data Manipulation
+syn keyword matlabFunc addsampletocollection addts delsamplefromcollection gettimeseriesnames removets settimeseriesnames
+"Set Functions
+syn keyword matlabFunc intersect ismember issorted setdiff setxor union unique 
+"Date and Time Functions
+syn keyword matlabFunc addtodate calendar clock cputime date datenum datevec eomday etime now weekday
+"M-File Functions and Scripts
+syn keyword matlabFunc addOptional addParamValue addRequired createCopy depdir echo input inputname inputParser mfilename namelengthmax nargchk nargin nargout nargoutchk parse pcode
+"script	Script M-file description
+syn keyword matlabFunc varargin varargout
+"Evaluation of Expressions and Functions
+syn keyword matlabFunc ans assert builtin pause run script symvar
+"Timer Functions
+syn keyword matlabFunc isvalid start startat stop timer timerfind timerfindall wait 
+"Variables and Functions in Memory
+syn keyword matlabFunc assignin datatipinfo genvarname isglobal memory mislocked mlock munlock pack
+"Control Flow
+syn keyword matlabFunc parfor
+"Error Handling
+syn keyword matlabFunc addCause error ferror getReport last lasterr lasterror lastwarn warning
+"Classes and Objects
+syn keyword matlabFunc addlistener addprop dynamicprops 
+"events 	Display class event names
+syn keyword matlabFunc findprop getdisp handle hgsetget inferiorto loadobj metaclass notify saveobj setdisp subsasgn subsindex subsref substruct superiorto 
+"File Name Construction
+syn keyword matlabFunc filemarker fileparts filesep fullfile tempdir tempname 
+"Opening, Loading, Saving Files
+syn keyword matlabFunc daqread filehandle importdata load open save uiimport winopen 
+"Memory Mapping
+syn keyword matlabFunc memmapfile
+"Low-Level File I/O
+syn keyword matlabFunc fclose feof fgetl fgets fopen fprintf fread frewind fscanf fseek ftell fwrite 
+
+"Text Files
+syn keyword matlabFunc csvread csvwrite dlmread dlmwrite textread textscan
+"XML Documents
+syn keyword matlabFunc xmlread xmlwrite xslt
+"Microsoft Excel Functions
+syn keyword matlabFunc xlsfinfo xlsread xlswrite
+"Lotus 1-2-3 Functions
+syn keyword matlabFunc wk1finfo wk1read wk1write
+"Common Data Format (CDF)
+syn keyword matlabFunc cdfepoch cdfinfo cdfread cdfwrite todatenum 
+"Flexible Image Transport System
+syn keyword matlabFunc fitsinfo fitsread 
+"Hierarchical Data Format (HDF)
+syn keyword matlabFunc hdf hdf5 hdf5info hdf5read hdf5write hdfinfo hdfread hdftool 
+"Band-Interleaved Data
+syn keyword matlabFunc multibandread multibandwrite 
+
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_matlab_syntax_inits")
+  if version < 508
+    let did_matlab_syntax_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+  HiLink matlabTransposeOperator	matlabOperator
+  HiLink matlabLineContinuation		Special
+  HiLink matlabLabel			Label
+  HiLink matlabConditional		Conditional
+  HiLink matlabRepeat			Repeat
+  HiLink matlabTodo			Todo
+  HiLink matlabString			String
+  HiLink matlabDelimiter		Identifier
+  HiLink matlabTransposeOther		Identifier
+  HiLink matlabNumber			Number
+  HiLink matlabFloat			Float
+  HiLink matlabConstant			Constant
+  HiLink matlabImplicit			matlabStatement
+  HiLink matlabStatement		Statement
+  HiLink matlabSemicolon		SpecialChar
+  HiLink matlabComment			Comment
+  HiLink matlabBlockComment		Comment
+  HiLink matlabImport			Include
+  HiLink matlabBoolean			Boolean
+  HiLink matlabStorageClass		StorageClass
+
+  HiLink matlabArithmeticOperator	matlabOperator
+  HiLink matlabRelationalOperator	matlabOperator
+  HiLink matlabLogicalOperator		matlabOperator
+  HiLink matlabOperator			Operator
+  HiLink matlabExceptions		Exception
+  HiLink matlabFunc			Function
+
+"optional highlighting
+  "HiLink matlabIdentifier		Identifier
+  "HiLink matlabTab			Error
+  delcommand HiLink
+endif
+
+let b:current_syntax = "matlab"
+
+"EOF	vim: ts=8 noet tw=100 sw=8 sts=0
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/xtr/skeleton/letter.tex
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/xtr/skeleton/letter.tex	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/xtr/skeleton/letter.tex	(revision 21239)
@@ -0,0 +1,15 @@
+\documentclass{letter}
+
+\signature{\'Eric Larour}
+\address{Jet Propulsion Laboratory\\4800 Oak Grove Drive\\CA 91109 Pasadena}
+\begin{document}
+
+\begin{letter}{RECIPIENT\\ADRESS}
+\opening{Dear RECIPIENT,}
+
+BLABLABLA BLABLABLA BLABLABLA BLABLABLA BLABLABLA
+
+\closing{regards,}
+\end{letter}
+
+\end{document}
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/xtr/skeleton/sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/xtr/skeleton/sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vim/xtr/skeleton/sh	(revision 21239)
@@ -0,0 +1,1 @@
+#!/bin/bash
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vimrc
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vimrc	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/addons/vimrc	(revision 21239)
@@ -0,0 +1,240 @@
+
+" General setup{{{
+" ----------------------------------------------------------------------
+" Use Vim settings, rather then Vi settings (much better!).
+" This must be first, because it changes other options as a side effect.
+set nocompatible
+" UNIX special
+set shell=/bin/bash  
+" jingle bells, jingle bells, hingle bells, ....
+set errorbells
+" keep 100 lines of command line history
+set history=100
+" show the cursor position all the time
+set ruler
+" display incomplete commands
+set showcmd	
+" display curent mode
+set showmode
+"----------------------------------------------------------------------}}}
+" Text-Formatting, Identing, Tabbing{{{
+" ----------------------------------------------------------------------
+" allow backspacing (to delete) over everything in insert mode
+set backspace=indent,eol,start
+" number of spaces the tab stands for
+set tabstop=3
+" number of spaces the softtab (>>) stands for
+set softtabstop=3 
+" number of spaces used for (auto)indenting
+set shiftwidth=3
+" a <tab> in an indent inserts 'shiftwidth' spaces (not tabstop)
+set smarttab
+" always set autoindenting on
+set autoindent
+"smartindenting useful (use '=')
+set smartindent
+
+"base folds on markers
+set foldmethod=marker
+set foldtext=IssmFoldText()
+" -----------------------------------------------------------}}}
+" Backups {{{
+" -----------------------------------------------------------
+" updatecount   number of characters typed to cause a swap file update (0->disable)
+set uc=0
+" make no backups
+set nobackup
+" -----------------------------------------------------------}}}
+" Searching, Substituting {{{
+" -----------------------------------------------------------
+" select case-insenitive search
+"set ignorecase 
+" No ignorecase if Uppercase chars in search
+"set scs
+" change the way backslashes are used in search patterns (. instead of \.)
+set magic
+" begin search at top when EOF reached
+set wrapscan
+" jump to matches during entering the pattern
+set sm
+" do incremental searching 
+set incsearch   
+"highlight all matches
+set hlsearch
+" Do not toggle 'g' and 'c' with :s///gc
+set noedcompatible
+
+" use 'g'-flag when substituting (subst. all matches in that line, not only
+" first) to turn off, use g
+set gdefault
+" how command line completion works (use tab to complete the file name)
+set wildmode=list:longest,list:full
+" ignore some files for filename completion
+set wildignore=*.o,*.r,*.so,*.sl,*.tar,*.tgz
+" some filetypes got lower priority
+set su=.h,.bak,~,.o,.info,.swp,.obj
+" ----------------------------------------------------------------------}}}
+" Colors and theme {{{
+" ----------------------------------------------------------------------
+" use 256 colors
+"set t_Co=8
+set t_Co=256
+" backgrounb color
+"set background=light
+"set background=dark
+" colorscheme
+"colorscheme issm_white
+colorscheme issm_black
+" ----------------------------------------------------------------------}}}
+
+" Mappings{{{
+" ----------------------------------------------------------------------
+"stop highlightings when spce is pressed
+nnoremap <silent> <Space> :silent noh<Bar>echo<CR> 
+
+"increment number
+nnoremap <C-i> <C-a>
+
+"line numbering in flip-flop
+map num :set number!<CR>
+
+" save & "make" the current file in all modes
+map <F8> :w <Enter> :make <Enter><Enter>
+map! <F8>  <ESC> :w <Enter> :make <Enter><Enter>
+" make update: nice for longer documents
+map <F7> :w <Enter> :make update <Enter><Enter>
+map! <F7> <ESC> :w <Enter> :make update <Enter><Enter>
+
+
+"use paste P: re-indent and re-format at the same time
+:nnoremap <Esc>P P'[v']=
+:nnoremap <Esc>p p'[v']=
+
+" Don't use Ex mode, use Q for formatting
+map Q gq
+" ----------------------------------------------------------------------}}}
+" Autocommands {{{
+" ----------------------------------------------------------------------
+" Only do this part when compiled with support for autocommands.
+if has("autocmd")
+
+  " Enable file type detection.
+  " Also load indent files, to automatically do language-dependent indenting.
+  filetype plugin indent on
+  "filetype plugin on
+
+  " For all text files set 'textwidth' to 78 characters.
+  autocmd FileType text setlocal textwidth=0
+
+  " When editing a file, always jump to the last known cursor position.
+  " Don't do it when the position is invalid or when inside an event handler
+  " (happens when dropping a file on gvim).
+  autocmd BufReadPost *
+    \ if line("'\"") > 0 && line("'\"") <= line("$") |
+    \   exe "normal g`\"" |
+    \ endif |
+	 \ for fnum in range(1,foldlevel('.')) |
+	 \   exe ":foldopen" |
+	 \ endfor
+
+  "scripts must be executable
+  autocmd BufWritePost   *.sh         !chmod +x %
+
+endif " has("autocmd")
+" ----------------------------------------------------------------------}}}
+" Matlab special {{{
+" ----------------------------------------------------------------------
+"" associate *.par with matlab filetype
+au BufRead,BufNewFile *.par setfiletype matlab
+au BufRead,BufNewFile *.tpl setfiletype html
+" ----------------------------------------------------------------------}}}
+" C special{{{
+" ----------------------------------------------------------------------
+"indenting for C-code
+set cindent
+" and here some nice options for cindenting
+set cinoptions={.5s,+.5s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s 
+" hash sign identation
+set cinkeys-=0#
+" ----------------------------------------------------------------------}}}
+" TEX special{{{
+" ----------------------------------------------------------------------
+au BufRead,BufNewFile *.tex,*.html set textwidth=100     "100 caracters max (See gq command)
+au BufRead,BufNewFile *.tex,*.html set formatoptions=cqt "automatic wraping
+au BufRead,BufNewFile *.tex,*.html set wrapmargin=0      "no margin
+au BufRead,BufNewFile *.cls setfiletype tex
+
+" OPTIONAL: Starting with Vim 7, the filetype of empty .tex files defaults to
+" 'plaintex' instead of 'tex', which results in vim-latex not being loaded.
+" The following changes the default filetype back to 'tex':
+let g:tex_flavor='latex'
+" ----------------------------------------------------------------------}}}
+" FORTRAN special{{{
+" ----------------------------------------------------------------------
+au BufRead,BufNewFile *.src setfiletype fortran
+" ----------------------------------------------------------------------}}}
+" InsertTabWrapper{{{
+" ----------------------------------------------------------------------
+function! InsertTabWrapper(direction) 
+let col = col('.') - 1 
+if !col || getline('.')[col - 1] !~ '\k' 
+   return "\<tab>" 
+elseif "backward" == a:direction 
+   return "\<c-p>" 
+else 
+   return "\<c-n>" 
+endif 
+endfunction 
+
+inoremap <tab> <c-r>=InsertTabWrapper ("forward")<cr>
+inoremap <s-tab> <c-r>=InsertTabWrapper ("backward")<cr>
+
+"source ~/.exrc 
+set wildmenu
+
+"Change to directory of current file automatically
+autocmd BufEnter * lcd %:p:h
+" ----------------------------------------------------------------------}}}
+
+" Abbreviations {{{
+" ----------------------------------------------------------------------
+func Eatchar(pat)
+	let c = nr2char(getchar())
+	return (c =~ a:pat) ? '' : c
+endfunc
+au BufRead,BufNewFile *.html   iabbr <silent> H1 <h1></h1><Left><Left><Left><Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.html   iabbr <silent> H2 <h2></h2><Left><Left><Left><Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.html   iabbr <silent> H3 <h3></h3><Left><Left><Left><Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.html   iabbr <silent> CO <code></code><Left><Left><Left><Left><Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.html   iabbr <silent> PP <p></p><Left><Left><Left><Left><C-R>=Eatchar('\s')<CR>
+"au BufRead,BufNewFile *.m      iabbr <silent> p1  disp('');<Left><Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.m      iab <expr> p0  "disp('-------------- file: ".expand('%')." line: ".line(".")."');"
+au BufRead,BufNewFile *.c*,*.h iabbr <silent> p1  printf("\n");<Left><Left><Left><Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.c*,*.h iabbr <silent> ER  _error_("");<Left><Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.py     iabbr <silent> ER  raise NameError('')<Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.m      iabbr <silent> ER  error('');<Left><Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.c*     ab VV VecView(ug,PETSC_VIEWER_STDOUT_WORLD);
+au BufRead,BufNewFile *.c*,*.h ab AS _assert_();
+au BufRead,BufNewFile *.c*,*.h iab <expr> p0  "printf(\"-------------- file: ".expand('%')." line: %i\\n\",__LINE__);"
+au BufRead,BufNewFile *.c*,*.h iab <expr> pp0 "PetscSynchronizedPrintf(MPI_COMM_WORLD,\"-------------- file: ".expand('%')." line: %i\\n\",__LINE__);\nPetscSynchronizedFlush(MPI_COMM_WORLD);"
+"tex
+au BufRead,BufNewFile *.tex iab EQ 
+			\\begin{equation}
+			\<CR>\end{equation}<up><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.tex iab IT 
+			\\begin{itemize}
+			\<CR>\item 
+			\<CR>\end{itemize}<up><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.tex iab EN 
+			\\begin{enumerate}
+			\<CR>\item 
+			\<CR>\end{enumerate}<up><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.tex ab (()) \left( \right)
+"}}}
+" Skeletons {{{
+au BufNewFile letter.tex   0r ~/.vim/xtr/skeleton/letter.tex
+"}}}
+" Copy and Paste{{{
+"vmap <C-c> y:call system("pbcopy", getreg("\""))<CR>
+"nmap <C-v> :call setreg("\"",system("pbpaste"))<CR>p
+"}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/vim/install.sh	(revision 21239)
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+rm -rf vim72
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/vim-7.2.tar.bz2' 'vim-7.2.tar.bz2'
+
+#Untar 
+bzip2 -d -k vim-7.2.tar.bz2
+tar -xvf vim-7.2.tar
+rm vim-7.2.tar
+
+#Move vim into install directory
+mv vim72/* src
+rm -rf vim72
+
+#Configure vim (icc seems to have issues with wctype.h)
+export CC=gcc
+cd src/src 
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/vim/install" \
+	--with-gcc="/usr/bin/gcc" \
+	--with-tlib="/lib/"
+
+#Compile vim
+make
+make  install
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/InstallInstructions.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/InstallInstructions.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/InstallInstructions.txt	(revision 21239)
@@ -0,0 +1,159 @@
+Win7: 
+-Be sure to use an account name that does not have spaces in it, as this could be an 
+issue with Cygwin. 
+
+
+Installing Matlab: 
+
+-Make sure that when you install Matlab, you choose C:\MATLAB\R2011b as directory 
+for the installation. Failing to do so could preclude the sdk compiler from 
+finding the Matlab header files.  Define environment variable:
+MATLAB_DIR="C:/MATLAB/R2011b" after you 'source $ISSM_TIER/etc/environment.sh'
+as described in the ISSM installation instructions below.
+
+-Also pay attention to what version of Matlab you are using, 32 or 64 bits, 
+as this will need to be reflected onto the sdk compiler settings. 
+
+
+
+Cygwin: 
+
+-You will need cygwin installed on your Windows platform to manage the compilation.  Cygwin emulates
+unix behaviour on windows machines.  The compilation will still be carried out by the windows sdk compiler, but the
+environment driving the compilation will be the unix-like cygwin. When you download
+cygwin, make sure that you install it in the C:\Cygwin directory. 
+
+-You will find the cygwin setup executable on the www.cygwin.com webpage. Here is a link
+to it: http://cygwin.com/setup.exe. Download this file to C:\Cygwin and be sure to reuse 
+it when you want to update your current cygwin installation. Do not download setup.exe 
+twice! 
+
+- You will need the following packages downloaded to carry out the compilation of ISSM
+ successfully, so be sure to include them in your cygwin install: 
+
+subversion
+autotools
+automake
+vim (or any other editor)
+patchutils
+make: The GNU version of the 'make' utility
+automake 1.11 and automake:Wrapper scripts
+autoconf
+python: Python language interpreter
+unzip
+cygrunsrv
+
+
+
+Compiler: 
+
+You need Visual Studio Express 2010 for C++, which you can find here: 
+http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express
+
+you will also need the Windows SDK 7.1 compiler, which you can find at the following link
+http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8279
+This compiler is compatible with Matlab, as detailed in the following webpage: 
+http://www.mathworks.com/support/compilers/R2011b/win64.html#n2
+
+Be careful not to download the sdk before Visual Studio Express, as this could lead to 
+environment setup issues. 
+
+
+Before you do anything related to ISSM! You have to capture the settings of your compiler.
+This is by far the most tricky part. 
+
+Follow Sdk1.png and Sdk2.png for more details. You have to launch sdk 7.1 command prompt, go to the 
+cygwin directory and fire up Cygwin by executing Cygwin.bat. Once this is done,dump the 
+results of the export command onto a file, called  sdk7.1.win7.64.sh 
+you will need this file later in the ISSM install. 
+
+
+
+Downloading issm: 
+
+Download issm into the C:\ directory. Do not download it in your Documents or Desktop
+folder. 
+
+In cygwin: 
+cd /cygdrive/c/
+svn co http://issm.ess.uci.edu/svn/issm/issm
+
+Once you download it, in your home directory, edit .bashrc: 
+and add the following lines:
+export ISSM_DIR=/cygdrive/c/issm
+export ISSM_TIER=$ISSM_DIR/trunk-jpl
+export ISSM_ARCH=cygwin-intel
+
+#source
+source $ISSM_TIER/etc/environment.sh
+
+
+Getting the cl.exe compiler to work: 
+before trying to compile the externalpackages, you need to be sure that your compiler cl.exe 
+(the sdk compiler)works. To make sure, create a simple hello world file: 
+
+hello.cpp
+
+#include <stdio.h>
+int main(){
+printf("%s\n","hello");
+return 1;
+}
+
+and try to compile it by doing: 
+cl hello.cpp
+
+If this does not work, do not go any further! The settings of your cl compiler are found
+in externalpackages/windows/configs/. If there is a significant different between your
+sdk7.1.win7.64.sh file (see above section Compiler) and the file that is being sourced in the windows/configs directory, place your new file in
+the configs directory. Relaunch bash, and try to run cl hello.cpp once more. Beware, you will likely
+have to erase some lines in your file, as cygwin might not like some of the stuff that your
+Windows platform is trying to define. To make sure that the correct bit compiler is
+being sourced in windows/configs (e.g. sdk7.1.win7-64.sh or sdk7.1.win7-32.sh) see
+section "One note about 32 vs 64 bit compile" below.
+
+Once the cl.exe compiler works, you can start installing the following packages: 
+petsc   metis triangle and cccl
+
+For petsc, use install-3.1-win7.sh 
+For metis, use install-4.0-win7.sh
+For cccl, use install-win7.sh
+For triangle, use install-win7.sh
+
+Once this is complete run the install.sh scripts in the autoconf and automake
+externalpackages directory
+
+Once these externalpackages have been compiled, you can compile issm: 
+
+./scripts/autoremakererun.sh
+./configs/config-win7-64.sh
+make install
+
+This should compile both parallel and serial versions of ISSM. Beware though, the parallel
+version cannot be run on multi-core platforms yet! We are actively working on it. 
+
+
+
+One note about 32 vs 64 bit compile: 
+Depending on your Matlab version, you will need to do a 32 or 64 bit compile. The only
+difference between both compiles is the setup of the cl.exe compiler. For ease of use,
+you will find in externalpackages/windows/windows_environment.sh a switch to go from 32
+to 64 bit compile. When you type cl.exe \help at the command prompt, cl.exe should report
+what system it is compiling for. Beware, switching 32 to 64 or vice-versa implies recompiling everything from scratch.
+
+
+
+How to setup a Cron job? 
+First, make sure you downloaded cygrunsrv, otherwise the cron setup will only work on a per-session 
+basis! Also, make sure that you have an email correctly setup.  In particular, cron relies on the
+/usr/sbin/sendmail script. If it does not exist, cron will not send emails. Most email management 
+systems will create this script, but you need to check on it. 
+Run cron-config  and fill up the questions. For daemon name, type ntsec. 
+Be careful, make sure that you are running your terminal as Administrator, 
+otherwise your settings will be only user-based. 
+How to setup email? 
+
+Preferred way is through ssmtp. Download it on cygwin, and type ssmtp-config.  If the ssmtp 
+daemon does not create /usr/sbin/sendmail, be sure to create a symlink from the email client 
+to the latter file. Be careful, make sure that you are running your terminal as Administrator, 
+otherwise your settings will be only user-based. 
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/README
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/README	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/README	(revision 21239)
@@ -0,0 +1,71 @@
+How to install intel compiler to work on cygwin at the command line: 
+
+This is what I got from the following post on google: 
+
+-----------------------------------------------------
+All necessary paths and environment variables are set if you put the Microsoft linker path in ICL.CFG, and open the Intel 
+compiler command line window on the Start menu. Then you can run cygwin.bat so that bash inherits the ICL paths, 
+without breaking ICL. You will sometimes get the bash warning about finding Windows style paths in the environment, 
+but those are necessary for ICL and Microsoft link. Needless to say, the Windows environment variable forgetfulness
+ point will be reached sooner with this setup.
+
+After I run cygwin.bat, and try to run icl, it says:
+
+link: invalid option -- o
+Try `ling --help' for more information.
+
+I verified that icl compiles without any problems before I run cygwin.bat
+
+What am I missing?
+
+
+
+This would indicate that you ignored my advice about icl.cfg, and so you are getting the wrong link.exe.  It should have said "link" not "ling."
+For a VC9 installation, /windows/C/Program Files/Intel/Compiler/11.1/026/bin/ia32/icl.cfg:
+-Qlocation,link,"C:\Program Files\Microsoft Visual Studio 9.0\VC\bin"
+-Qprec-div -Qprec-sqrt -Qansi_alias
+----------------------------------------------------------
+
+
+
+
+
+So here is what you do: 
+edit /cygdrive/c/IntelInstall/Compiler/11.1/026/bin/ia32/icl.cfg
+
+add: 
+-Qlocation,link,"C:\Program Files\Microsoft Visual Studio 9.0\VC\bin"
+-Qprec-div -Qprec-sqrt -Qansi_alias
+
+
+Then run the intel compiler command window. Go to C:\Cygwin and run Cygwin.bat. 
+you are now running cygwin with the correct paths.  Type "export" at the command line, and figure out which variables have been set that relate to the intel compiler and visual studio environment. Build a file containing specific export commands and source it from your .bashrc. intel.sh is an example of such file on a Windows XP 32 build. 
+
+
+
+Compiling ISSM using Matlab compatible  compilers. 
+
+At: http://www.mathworks.com/support/compilers/R2011b/win64.html#n2 
+you will find a list of Matlab supported compilers. 
+
+
+We'll try the compile with the Microsoft Windows SDK 7.1: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8279
+
+
+
+MPICH2: 
+to run in parallel.  First install MPICH2 from www.mpich.org/downloads. Make 
+sure the install directory in C:\Program Files\MPICH2, otherwise, ISSM will 
+not be able to figure out where the mpi libraries are installed on your windows platform.
+
+Then fire up smpd in a command line under Administrator privileges: 
+smpd -install
+
+Then: 
+mpiexe.exe -remove
+mpiexe.exe -register (type enter for username, for password, type your windows password, do not chose anything else!)
+mpiexe.exe -validate (should return SUCCESS)
+
+Then you are ready to run parallel.
+
+To do: how do we document this? Create webpage for all of this. + get a fortran compiler giong!
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/configs/intel-winXP.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/configs/intel-winXP.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/configs/intel-winXP.sh	(revision 21239)
@@ -0,0 +1,16 @@
+ export CPATH="C:\\IntelInstall\\Compiler\\11.1\\038\\ipp\\ia32\\include;C:\\IntelInstall\\Compiler\\11.1\\038\\mkl\\include;"
+ export DEVENVDIR="C:\\MicrosoftVisualStudio 9.0\\Common7\\IDE"
+ export FPATH="C:\\IntelInstall\\Compiler\\11.1\\038\\mkl\\include;"
+ export FRAMEWORK35VERSION="v3.5"
+ export FRAMEWORKDIR="C:\\WINDOWS\\Microsoft.NET\\Framework"
+ export FRAMEWORKVERSION="v2.0.50727"
+ export INCLUDE="C:\\IntelInstall\\Compiler\\11.1\\038\\ipp\\ia32\\include;C:\\IntelInstall\\Compiler\\11.1\\038\\mkl\\include;C:\\IntelInstall\\Compiler\\11.1\\038\\tbb\\include;C:\\IntelInstall\\Compiler\\11.1\\038\\include;C:\\MicrosoftVisualStudio 9.0\\VC\\INCLUDE;C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A\\include;"
+ export IPPROOT="C:\\IntelInstall\\Compiler\\11.1\\038\\ipp\\ia32"
+ export LIB="C:\\IntelInstall\\Compiler\\11.1\\038\\ipp\\ia32\\lib;C:\\IntelInstall\\Compiler\\11.1\\038\\ipp\\ia32\\stublib;C:\\IntelInstall\\Compiler\\11.1\\038\\mkl\\ia32\\lib;C:\\IntelInstall\\Compiler\\11.1\\038\\tbb\\ia32\\vc9\\lib;C:\\IntelInstall\\Compiler\\11.1\\038\\Lib\\ia32;C:\\MicrosoftVisualStudio 9.0\\VC\\LIB;C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A\\lib;"
+ export LIBPATH="C:\\WINDOWS\\Microsoft.NET\\Framework\\v3.5;C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727;C:\\MicrosoftVisualStudio 9.0\\VC\\LIB;"
+ export LIBRARY_PATH="C:\\IntelInstall\\Compiler\\11.1\\038\\ipp\\ia32\\lib;C:\\IntelInstall\\Compiler\\11.1\\038\\ipp\\ia32\\stublib;C:\\IntelInstall\\Compiler\\11.1\\038\\mkl\\ia32\\lib;"
+ export PATH="$PATH:/cygdrive/c/IntelInstall/Compiler/11.1/038/Bin/ia32:/cygdrive/c/MicrosoftVisualStudio 9.0/Common7/IDE:/cygdrive/c/MicrosoftVisualStudio 9.0/VC/BIN:/cygdrive/c/MicrosoftVisualStudio 9.0/Common7/Tools:/cygdrive/c/WINDOWS/Microsoft.NET/Framework/v3.5:/cygdrive/c/WINDOWS/Microsoft.NET/Framework/v2.0.50727:/cygdrive/c/MicrosoftVisualStudio 9.0/VC/VCPackages:/cygdrive/c/Program Files/Microsoft SDKs/Windows/v6.0A/bin:/cygdrive/c/WINDOWS"
+ export TBB_ARCH_PLATFORM="ia32\\vc9"
+ export VCINSTALLDIR="C:\\MicrosoftVisualStudio 9.0\\VC"
+ export VSINSTALLDIR="C:\\MicrosoftVisualStudio 9.0"
+ export WINDOWSSDKDIR="C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A\\"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/configs/sdk10.0-win64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/configs/sdk10.0-win64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/configs/sdk10.0-win64.sh	(revision 21239)
@@ -0,0 +1,48 @@
+
+# -----------------------------------------------------------------------------
+# 
+# The following variables can vary from system to system and standard
+# installation is assumed throughout. If different directories were used when
+# installing MSVC, or Win SDK.
+#
+# TODO: Bring out the host machine arhictecture specific stuff from INCLUDE,
+# LIB and LIBPATH.
+#
+# -----------------------------------------------------------------------------
+
+# The version of Visual Studio is 10.0. Newer versions should work as well.
+export MSVC_DIR='C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\'
+
+# SDK change from 7 to 8 involved changing the locations of important 
+# libraries. If you wish to use 8.0 or 8.1 then you need to provide the 
+# directory of 'Windows Kits' instead.
+export MPI_DIR='C:\Program Files (x86)\MPICH2'
+
+# Unfotunately, standard installation directories of Matlab usually include 
+# white spaces that are not handled correctly by the command interpreter. As
+# such, the directory where one would find Matlab headers and libraries might
+# need to be provided as environment variables.
+export MATLAB_DIR_WIN=`cygpath -w ${MATLAB_DIR}`
+export MATLAB_DIR_LIB="${MATLAB_DIR_WIN}\\extern\\lib\\win64\\microsoft"
+
+# Information about the .NET framework is required to run the MSVC toolchain
+export FrameworkDir='C:\Windows\Microsoft.NET\Framework64\'
+export FrameworkVersion=v4.0.30319
+
+# Windows Kit Information
+export WIN_KIT_DIR='C:\Program Files (x86)\Windows Kits\10'
+export WIN_KIT_VER='10.0.10240.0'
+export WIN_KIT_INC="${WIN_KIT_DIR}\\Include\\${WIN_KIT_VER}\\ucrt;${WIN_KIT_DIR}\\Include\\${WIN_KIT_VER}\\um;${WIN_KIT_DIR}\\Include\\${WIN_KIT_VER}\\shared"
+export WIN_KIT_LIB="${WIN_KIT_DIR}\\Lib\\${WIN_KIT_VER}\\um\\x64;${WIN_KIT_DIR}\\Lib\\${WIN_KIT_VER}\\ucrt\\x64"
+
+
+# LIB and LIBPATH seem redundant, but MSVC linker and compiler use different 
+# variables for the same purpose.
+export INCLUDE="${MSVC_DIR}include;${MATLAB_DIR_WIN}\\extern\\include;${WIN_KIT_INC};"
+export LIB="${MSVC_DIR}lib\\amd64;${MATLAB_DIR_LIB};${WIN_KIT_LIB};"
+export LIBPATH="${FrameworkDir}${FrameworkVersion};${MATLAB_DIR_LIB};${WIN_KIT_LIB};"
+export LIBPATH="${LIBPATH}${MSVC_DIR}lib\\amd64;${MSVC_DIR}bin\\amd64;"
+
+export MSVC_DIR_UNIX=`cygpath -u "${MSVC_DIR}"`
+export MPI_DIR_UNIX=`cygpath -u "${MPI_DIR}"`
+export PATH="${MSVC_DIR_UNIX}/bin/amd64:${MPI_DIR_UNIX}/bin:$PATH"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/configs/sdk7.1-win32.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/configs/sdk7.1-win32.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/configs/sdk7.1-win32.sh	(revision 21239)
@@ -0,0 +1,39 @@
+# -----------------------------------------------------------------------------
+# 
+# The following variables can vary from system to system and standard
+# installation is assumed throughout. If different directories were used when
+# installing MSVC, or Win SDK.
+#
+# TODO: Bring out the host machine arhictecture specific stuff from INCLUDE,
+# LIB and LIBPATH.
+#
+# -----------------------------------------------------------------------------
+
+# The version of Visual Studio is 10.0. Newer versions should work as well.
+export MSVC_DIR='C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\'
+
+# SDK change from 7 to 8 involved changing the locations of important 
+# libraries. If you wish to use 8.0 or 8.1 then you need to provide the 
+# directory of 'Windows Kits' instead.
+export WIN_SDK_DIR='C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\'
+
+# Unfotunately, standard installation directories of Matlab usually include 
+# white spaces that are not handled correctly by the command interpreter. As
+# such, the directory where one would find Matlab headers and libraries might
+# need to be provided as environment variables.
+export MATLAB_DIR_WIN=`cygpath -w ${MATLAB_DIR}`
+export MATLAB_DIR_LIB="${MATLAB_DIR_WIN}\\extern\\lib\\microsoft"
+
+# Information about the .NET framework is required to run the MSVC toolchain
+export FrameworkDir='C:\Windows\Microsoft.NET\Framework\'
+export FrameworkVersion=v4.0.30319
+
+# LIB and LIBPATH seem redundant, but MSVC linker and compiler use different 
+# variables for the same purpose.
+export INCLUDE="${MSVC_DIR}include;${WIN_SDK_DIR}Include;${MATLAB_DIR_WIN}\\extern\\include;"
+export LIB="${MSVC_DIR}lib;${WIN_SDK_DIR}Lib;${MATLAB_DIR_LIB}"
+export LIBPATH="${FrameworkDir}${FrameworkVersion};${MATLAB_DIR_LIB};"
+export LIBPATH="${LIBPATH}${MSVC_DIR}lib;${MSVC_DIR}bin;${WIN_SDK_DIR}Lib;"
+
+export MSVC_DIR_UNIX=`cygpath -u "${MSVC_DIR}"`
+export PATH="${MSVC_DIR_UNIX}/bin:$PATH"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/configs/sdk7.1-win64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/configs/sdk7.1-win64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/configs/sdk7.1-win64.sh	(revision 21239)
@@ -0,0 +1,41 @@
+# -----------------------------------------------------------------------------
+# 
+# The following variables can vary from system to system and standard
+# installation is assumed throughout. If different directories were used when
+# installing MSVC, or Win SDK.
+#
+# TODO: Bring out the host machine arhictecture specific stuff from INCLUDE,
+# LIB and LIBPATH.
+#
+# -----------------------------------------------------------------------------
+
+# The version of Visual Studio is 10.0. Newer versions should work as well.
+export MSVC_DIR='C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\'
+
+# SDK change from 7 to 8 involved changing the locations of important 
+# libraries. If you wish to use 8.0 or 8.1 then you need to provide the 
+# directory of 'Windows Kits' instead.
+export WIN_SDK_DIR='C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\'
+export MPI_DIR='C:\Programs\MPICH2'
+
+# Unfotunately, standard installation directories of Matlab usually include 
+# white spaces that are not handled correctly by the command interpreter. As
+# such, the directory where one would find Matlab headers and libraries might
+# need to be provided as environment variables.
+export MATLAB_DIR_WIN=`cygpath -w ${MATLAB_DIR}`
+export MATLAB_DIR_LIB="${MATLAB_DIR_WIN}\\extern\\lib\\win64\\microsoft"
+
+# Information about the .NET framework is required to run the MSVC toolchain
+export FrameworkDir='C:\Windows\Microsoft.NET\Framework64\'
+export FrameworkVersion=v4.0.30319
+
+# LIB and LIBPATH seem redundant, but MSVC linker and compiler use different 
+# variables for the same purpose.
+export INCLUDE="${MSVC_DIR}include;${WIN_SDK_DIR}Include;${MATLAB_DIR_WIN}\\extern\\include;"
+export LIB="${MSVC_DIR}lib\\amd64;${WIN_SDK_DIR}Lib\\x64;${MATLAB_DIR_LIB}"
+export LIBPATH="${FrameworkDir}${FrameworkVersion};${MATLAB_DIR_LIB};"
+export LIBPATH="${LIBPATH}${MSVC_DIR}lib\\amd64;${MSVC_DIR}bin\\amd64;${WIN_SDK_DIR}Lib\\x64;"
+
+export MSVC_DIR_UNIX=`cygpath -u "${MSVC_DIR}"`
+export MPI_DIR_UNIX=`cygpath -u "${MPI_DIR}"`
+export PATH="${MSVC_DIR_UNIX}/bin/amd64:${MPI_DIR_UNIX}/bin:$PATH"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/configs/sdk7.1.win7-32.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/configs/sdk7.1.win7-32.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/configs/sdk7.1.win7-32.sh	(revision 21239)
@@ -0,0 +1,39 @@
+declare -x ALLUSERSPROFILE="C:\\ProgramData"
+declare -x CL="/AI C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319"
+declare -x COMMONPROGRAMFILES="C:\\Program Files\\Common Files"
+declare -x COMSPEC="C:\\Windows\\system32\\cmd.exe"
+declare -x CommandPromptType="Native"
+declare -x Configuration="Debug"
+declare -x FP_NO_HOST_CHECK="NO"
+declare -x FrameworkVersion="v4.0.30319"
+declare -x HOMEDRIVE="C:"
+declare -x INCLUDE="C:\\Program Files\\Microsoft Visual Studio 10.0\\VC\\INCLUDE;C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\INCLUDE;C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\INCLUDE\\gl;"
+declare -x INFOPATH="/usr/local/info:/usr/share/info:/usr/info:"
+declare -x LANG="en_US.UTF-8"
+declare -x LIB="C:\\Program Files\\Microsoft Visual Studio 10.0\\VC\\Lib;C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\Lib;C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319;C:\\Windows\\Microsoft.NET\\Framework\\v3.5;;"
+declare -x LIBPATH="C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319;C:\\Windows\\Microsoft.NET\\Framework\\v3.5;;C:\\Program Files\\Microsoft Visual Studio 10.0\\VC\\Lib;"
+declare -x MANPATH="/usr/local/man:/usr/share/man:/usr/man:"
+declare -x PATH="/usr/local/bin:/usr/bin:/cygdrive/c/Windows/Microsoft.NET/Framework/v4.0.30319:/cygdrive/c/Windows/Microsoft.NET/Framework/v3.5:/cygdrive/c/Program Files/Microsoft Visual Studio 10.0/Common7/IDE:/cygdrive/c/Program Files/Microsoft Visual Studio 10.0/Common7/Tools:/cygdrive/c/Program Files/Microsoft Visual Studio 10.0/VC/Bin:/cygdrive/c/Program Files/Microsoft Visual Studio 10.0/VC/Bin/VCPackages:/cygdrive/c/Program Files/Microsoft SDKs/Windows/v7.1/Bin/NETFX 4.0 Tools:/cygdrive/c/Program Files/Microsoft SDKs/Windows/v7.1/Bin:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/MATLAB/R2012a/runtime/win32:/cygdrive/c/MATLAB/R2012a/bin:/cygdrive/c/Program Files/Microsoft Windows Performance Toolkit"
+declare -x PATHEXT=".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"
+declare -x PRINTER="137.78.140.129#:1"
+declare -x PROCESSOR_ARCHITECTURE="x86"
+declare -x PROCESSOR_IDENTIFIER="x86 Family 6 Model 42 Stepping 7, GenuineIntel"
+declare -x PROCESSOR_LEVEL="6"
+declare -x PROCESSOR_REVISION="2a07"
+declare -x PROGRAMFILES="C:\\Program Files"
+declare -x PSModulePath="C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules\\"
+declare -x PUBLIC="C:\\Users\\Public"
+declare -x PlatformToolset="Windows7.1SDK"
+declare -x ProgramData="C:\\ProgramData"
+declare -x SHELL="/bin/bash"
+declare -x SYSTEMDRIVE="C:"
+declare -x SYSTEMROOT="C:\\Windows"
+declare -x TARGET_CPU="x86"
+declare -x TARGET_PLATFORM="WIN7"
+declare -x TERM="cygwin"
+declare -x ToolsVersion="4.0"
+declare -x VS100COMNTOOLS="C:\\Program Files\\Microsoft Visual Studio 10.0\\Common7\\Tools\\"
+declare -x WINDIR="C:\\Windows"
+declare -x WindowsSDKDir="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\"
+declare -x WindowsSDKVersionOverride="v7.1"
+declare -x sdkdir="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/configs/sdk7.1.win7-64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/configs/sdk7.1.win7-64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/configs/sdk7.1.win7-64.sh	(revision 21239)
@@ -0,0 +1,48 @@
+declare -x ALLUSERSPROFILE="C:\\ProgramData"
+declare -x CL="/AI C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319"
+declare -x COMMONPROGRAMFILES="C:\\Program Files (x86)\\Common Files"
+declare -x CURRENT_CPU="x64"
+declare -x CommandPromptType="Native"
+declare -x CommonProgramW6432="C:\\Program Files\\Common Files"
+declare -x Configuration="Debug"
+declare -x FP_NO_HOST_CHECK="NO"
+declare -x FrameworkVersion="v4.0.30319"
+declare -x INCLUDE="C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\INCLUDE;C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\INCLUDE;C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\INCLUDE\\gl;"
+declare -x INFOPATH="/usr/local/info:/usr/share/info:/usr/info:"
+declare -x LANG="C.UTF-8"
+declare -x LIB="C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\Lib\\amd64;C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\Lib\\X64;"
+declare -x LIBPATH="C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319;C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319;C:\\Windows\\Microsoft.NET\\Framework64\\v3.5;C:\\Windows\\Microsoft.NET\\Framework\\v3.5;;C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\Lib\\amd64;"
+declare -x MANPATH="/usr/local/man:/usr/share/man:/usr/man:"
+declare -x PATH="/usr/local/bin:/usr/bin:/usr/include:/cygdrive/c/cygwin/usr/bin:/cygdrive/c/cygwin/usr/include:/cygdrive/c/Windows/Microsoft.NET/Framework64/v4.0.30319:/cygdrive/c/Windows/Microsoft.NET/Framework/v4.0.30319:/cygdrive/c/Windows/Microsoft.NET/Framework64/v3.5:/cygdrive/c/Windows/Microsoft.NET/Framework/v3.5:/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE:/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/Tools:/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/Bin/amd64:/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/Bin/VCPackages:/cygdrive/c/Program Files/Microsoft SDKs/Windows/v7.1/Bin/NETFX 4.0 Tools/x64:/cygdrive/c/Program Files/Microsoft SDKs/Windows/v7.1/Bin/x64:/cygdrive/c/Program Files/Microsoft SDKs/Windows/v7.1/Bin:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files/Microsoft Windows Performance Toolkit:/cygdrive/c/MATLAB/R2012a/runtime/win64:/cygdrive/c/MATLAB/R2012a/bin:/cygdrive/c/MATLAB/R2012a/extern/include:/cygdrive/c/MATLAB/R2011a/runtime/win64:/cygdrive/c/MATLAB/R2011a/bin:/cygdrive/c/MATLAB/R2011a/extern/include"
+declare -x PATHEXT=".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"
+declare -x PROCESSOR_ARCHITECTURE="x86"
+declare -x PROCESSOR_ARCHITEW6432="AMD64"
+declare -x PROCESSOR_IDENTIFIER="Intel64 Family 6 Model 42 Stepping 7, GenuineIntel"
+declare -x PROCESSOR_LEVEL="6"
+declare -x PROCESSOR_REVISION="2a07"
+declare -x PROGRAMFILES="C:\\Program Files (x86)"
+declare -x PROMPT="\$P\$G"
+declare -x PSModulePath="C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules\\"
+declare -x PUBLIC="C:\\Users\\Public"
+declare -x PlatformToolset="Windows7.1SDK"
+declare -x ProgramData="C:\\ProgramData"
+declare -x ProgramW6432="C:\\Program Files"
+declare -x REPO="jpl"
+declare -x SESSIONNAME="Console"
+declare -x SHLVL="1"
+declare -x HOMEDRIVE="C:"
+declare -x SYSTEMDRIVE="C:"
+declare -x SYSTEMROOT="C:\\Windows"
+declare -x TARGET_CPU="x64"
+declare -x TARGET_PLATFORM="WIN7"
+declare -x TEMP="/tmp"
+declare -x TERM="cygwin"
+declare -x TMP="/tmp"
+declare -x ToolsVersion="4.0"
+declare -x VS100COMNTOOLS="C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\Tools\\"
+declare -x WINDIR="C:\\Windows"
+declare -x WindowsSDKDir="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\"
+declare -x WindowsSDKVersionOverride="v7.1"
+declare -x sdkdir="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\"
+declare -x windows_tracing_flags="3"
+declare -x windows_tracing_logfile="C:\\BVTBin\\Tests\\installpackage\\csilogfile.log"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/fortran_environment.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/fortran_environment.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/fortran_environment.sh	(revision 21239)
@@ -0,0 +1,70 @@
+declare -x APPDATA="C:\Users\larour\AppData\Roaming"
+declare -x ARCH_PATH="ia32"
+declare -x ARCH_PATH_MPI="ia32"
+declare -x BIN_ROOT="C:\Program Files (x86)\Intel\Composer XE 2013\bin"
+declare -x BUNDLE_NAME="Intel(R) Parallel Studio XE 2013"
+declare -x COMMONPROGRAMFILES="C:\Program Files (x86)\Common Files"
+declare -x CommonProgramW6432="C:\Program Files\Common Files"
+declare -x COMPUTERNAME="WIN-BBO0CI1DTAL"
+declare -x COMSPEC="C:\Windows\system32\cmd.exe"
+declare -x C_TARGET_ARCH="ia32"
+declare -x DevEnvDir="C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE"
+declare -x FP_NO_HOST_CHECK="NO"
+declare -x Framework35Version="v3.5"
+declare -x FrameworkDir="C:\Windows\Microsoft.NET\Framework"
+declare -x FrameworkDIR32="C:\Windows\Microsoft.NET\Framework"
+declare -x FrameworkVersion="v4.0.30319"
+declare -x FrameworkVersion32="v4.0.30319"
+declare -x HOMEDRIVE="C:"
+declare -x HOMEPATH="\Users\larour"
+declare -x IFORT_COMPILER13="C:\Program Files (x86)\Intel\Composer XE 2013"
+declare -x INCLUDE="C:\Program Files (x86)\Intel\Composer XE 2013\compiler\include;C:\Program Files (x86)\Intel\Composer XE 2013\compiler\include\ia32;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include;C:\Program Files (x86)\Intel\Composer XE 2013\mkl\include;"
+declare -x INTEL_DEV_REDIST="C:\Program Files (x86)\Common Files\Intel\Shared Libraries"
+declare -x INTEL_LICENSE_FILE="C:\Program Files (x86)\Common Files\Intel\Licenses"
+declare -x LIB="C:\Program Files (x86)\Intel\Composer XE 2013\compiler\lib;C:\Program Files (x86)\Intel\Composer XE 2013\compiler\lib\ia32;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\LIB;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib;C:\Program Files (x86)\Intel\Composer XE 2013\mkl\lib\ia32;C:\Program Files (x86)\Intel\Composer XE 2013\compiler\lib\ia32;"
+declare -x LIBPATH="C:\Windows\Microsoft.NET\Framework\v4.0.30319;C:\Windows\Microsoft.NET\Framework\v3.5;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\LIB;"
+declare -x LOCALAPPDATA="C:\Users\larour\AppData\Local"
+declare -x LOGONSERVER="\\WIN-BBO0CI1DTAL"
+declare -x MKLROOT="C:\Program Files (x86)\Intel\Composer XE 2013\mkl"
+declare -x MSVS_VAR_SCRIPT="C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\..\..\VC\vcvarsall.bat"
+declare -x NUMBER_OF_PROCESSORS="8"
+declare -x OS="Windows_NT"
+declare -x PATH="$PATH:/cygdrive/c/Program Files (x86)/Intel/Composer XE 2013/bin/ia32:/cygdrive/c/Program Files (x86)/Intel/Composer XE 2013/redist/ia32/compiler:/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE:/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/BIN:/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/Tools:/cygdrive/c/Windows/Microsoft.NET/Framework/v4.0.30319:/cygdrive/c/Windows/Microsoft.NET/Framework/v3.5:/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/VCPackages:/cygdrive/c/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/bin/NETFX 4.0 Tools:/cygdrive/c/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/bin:/cygdrive/c/Program Files (x86)/Intel/Composer XE 2013/redist/ia32/mkl:/cygdrive/c/Program Files (x86)/Intel/Composer XE 2013/redist/ia32/compiler:/cygdrive/c/Program Files (x86)/Common Files/Intel/Shared Libraries/redist/intel64/mpirt:/cygdrive/c/Program Files (x86)/Common Files/Intel/Shared Libraries/redist/intel64/compiler:/cygdrive/c/Program Files (x86)/Common Files/Intel/Shared Libraries/redist/ia32/mpirt:/cygdrive/c/Program Files (x86)/Common Files/Intel/Shared Libraries/redist/ia32/compiler:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files/Microsoft Windows Performance Toolkit:/cygdrive/c/MATLAB/R2012b/runtime/win64:/cygdrive/c/MATLAB/R2012b/bin:/cygdrive/c/Program Files (x86)/Intel/Composer XE 2013/redist/ia32/mpirt"
+declare -x PATHEXT=".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"
+declare -x PROCESSOR_ARCHITECTURE="x86"
+declare -x PROCESSOR_ARCHITEW6432="AMD64"
+declare -x PROCESSOR_IDENTIFIER="Intel64 Family 6 Model 58 Stepping 9, GenuineIntel"
+declare -x PROCESSOR_LEVEL="6"
+declare -x PROCESSOR_REVISION="3a09"
+declare -x PRODUCT_NAME="Intel Composer XE 2013 "
+declare -x PRODUCT_NAME_FULL="Intel(R) Composer XE 2013 Update 3 (package 171)"
+declare -x ProgramData="C:\ProgramData"
+declare -x PROGRAMFILES="C:\Program Files (x86)"
+declare -x ProgramW6432="C:\Program Files"
+declare -x PROMPT="$P$G"
+declare -x protector_attach="true"
+declare -x PSModulePath="C:\Windows\system32\WindowsPowerShell\v1.0\Modules"
+declare -x PUBLIC="C:\Users\Public"
+declare -x ROOT="C:\Program Files (x86)\Intel\Composer XE 2013"
+declare -x SCRIPT_NAME="compilervars_arch.bat"
+declare -x SESSIONNAME="Console"
+declare -x SYSTEMDRIVE="C:"
+declare -x SYSTEMROOT="C:\Windows"
+declare -x TARGET_ARCH="ia32"
+declare -x TARGET_VS="vs2010"
+declare -x TARGET_VS_ARCH="x86"
+declare -x TEMP="/cygdrive/c/Users/larour/AppData/Local/Temp"
+declare -x TMP="/cygdrive/c/Users/larour/AppData/Local/Temp"
+declare -x USERDOMAIN="WIN-BBO0CI1DTAL"
+declare -x USERNAME="larour"
+declare -x USERPROFILE="C:\Users\larour"
+declare -x VCINSTALLDIR="C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC"
+declare -x VS100COMNTOOLS="C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools"
+declare -x VSINSTALLDIR="C:\Program Files (x86)\Microsoft Visual Studio 10.0"
+declare -x WINDIR="C:\Windows"
+declare -x WindowsSdkDir="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A"
+declare -x windows_tracing_flags="3"
+declare -x windows_tracing_logfile="C:\BVTBin\Tests\installpackage\csilogfile.log"
+declare -x WIN_TITLE="Intel Composer XE 2013  IA-32 Visual Studio 2010"
+declare -x WIN_TITLE_ARCH="IA-32"
+declare -x WIN_TITLE_VS="Visual Studio 2010"
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/install.sh	(revision 21239)
@@ -0,0 +1,5 @@
+#!/bin/bash
+set -eu
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/win7.sdk7.1.exe' 'win7.sdk7.1.exe'
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/windows_environment.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/windows_environment.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/windows/windows_environment.sh	(revision 21239)
@@ -0,0 +1,41 @@
+#This file sources all relevant scripts to setup the paths to windows compilers.
+
+#Where are the configuration files for each compiler: 
+config_dir="$ISSM_DIR/externalpackages/windows/configs"
+
+#your choise of compiler: 
+# 1: sdk 7.1 32 bits on Win7
+# 2: sdk 7.1 64 bits on Win7
+# 3: intel compiler on Win7
+# 4: intel compiler on WinXP
+
+#Determine OS version using uname: 
+version=`uname -m | grep x86_64`
+if [[ $version == "" ]];then
+	compiler=1
+else
+	compiler=2
+fi
+
+#If you want to override and use intel compilers: 
+#compiler=3;
+
+
+#source corresponding environment variables: 
+
+if [[ "$compiler" == "1" ]]; then 
+	source $config_dir/sdk10.0-win32.sh
+elif [[ "$compiler" == "2" ]]; then 
+	source $config_dir/sdk10.0-win64.sh
+elif [[ "$compiler" == "3" ]]; then 
+	source $config_dir/intel-win7.sh
+else 
+	source $config_dir/intel-winXP.sh
+fi
+
+#finally, out of ISSM_DIR, we need to create an ISSM_DIR_WIN variable for Matlab to pick up on.
+ISSM_DIR_WIN=`cygpath -m $ISSM_DIR`
+export ISSM_DIR_WIN
+
+#Now source for fortran environment: 
+#source $ISSM_DIR/externalpackages/windows/fortran_environment.sh
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/xaifbooster/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/xaifbooster/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/xaifbooster/install.sh	(revision 21239)
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf xaifBooster
+
+#download 
+svn co -r 125  http://hpc.svn.rice.edu/r/xaifBooster/trunk xaifBooster
+
+#Compile xaifBooster
+cd xaifBooster
+make
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/xerces/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/xerces/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/xerces/install.sh	(revision 21239)
@@ -0,0 +1,25 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install xerces-c-src_2_8_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/xerces-c-src_2_8_0.tar.gz' 'xerces-c-src_2_8_0.tar.gz'
+
+#Untar 
+tar -zxvf  xerces-c-src_2_8_0.tar.gz
+
+#Move xerces-c-tools into install directory
+mv xerces-c-src_2_8_0/* src
+rm -rf xerces-c-src_2_8_0
+
+#Apply patches
+cd src/src/xercesc/
+
+#Configure
+./runConfigure -plinux -cgcc -xg++ -minmem -nsocket -tnative -rnone -s 
+
+#Compile xerces-c-tools
+make
Index: /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/yams/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/yams/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/externalpackages/yams/install.sh	(revision 21239)
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+#Some cleanup
+rm -rf install
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/yams2-linux.gz' 'yams2-linux.gz'
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/yams2-osx.gz' 'yams2-osx.gz'
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/yams2-win.exe' 'yams2-win.exe'
+
+#loop over the binaries
+for i in yams*
+do
+	name=$i;
+	cp $i install/
+
+	#uncompress if necessary
+	if echo $i | grep -q ".gz"
+	then
+		gunzip install/$i
+	fi
+
+	#permissions
+	chmod 777 install/*
+done
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/index.html
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/index.html	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/index.html	(revision 21239)
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html lang="en">
+    <head>
+        <meta charset="UTF-8">
+        <title>Index</title>
+        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
+        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
+        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"></link>
+        <script type="text/javascript" src="lib/bin/issm-binaries.js"> </script>
+        <script type="text/javascript" src="lib/bin/issm-extlibraries.js"> </script>
+        <script type="text/javascript" src="lib/Exp/Square.js"></script>
+        <script type="text/javascript" src="lib/Par/SquareShelfConstrained.js"></script>
+        <script type="text/javascript" src="lib/Data/SquareShelfConstrained.data.js"></script>
+        <script type="text/javascript" src="lib/mesh2d.js"></script>
+        <script type="text/javascript" src="lib/mesh3dprisms.js"></script>
+        <script type="text/javascript" src="lib/bin/model.js"></script>
+        <!--<script src="scripts/runscript.js"></script>-->
+        <script src="scripts/runscript.js"></script>
+
+        <style>
+            .btn.btn-primary {
+                margin: 5px;
+            }
+        </style>
+    </head>
+
+    <body>
+        <div class="container">
+            <div class="row btn-container"></div>
+            <div class="row center-block" id="debug"></div>
+        </div>
+    </body>
+</html>
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/karma.conf.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/karma.conf.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/karma.conf.js	(revision 21239)
@@ -0,0 +1,78 @@
+// Karma configuration
+module.exports = function(config) {
+  config.set({
+
+    basePath: './', 
+
+    // frameworks to use
+    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
+    frameworks: ['jasmine-jquery', 'jasmine'],
+
+
+    // list of files / patterns to load in the browser
+    files: [
+      'node_modules/jquery/dist/jquery.min.js',
+      'node_modules/mathjs/dist/math.min.js',
+      'lib/Exp/Square.js',
+      'lib/Par/SquareShelfConstrained.js',
+      'lib/Data/SquareShelfConstrained.data.js',
+      'scripts/specs/issm.spec.js',
+      './../../../bin/issm-bin.js',
+      './../../../bin/issm-prebin.js',
+      './../../../bin/IssmModule.js'
+      //'scripts/specs/temp.spec.js'
+      //'scripts/specs/3.spec.js'
+    ],
+
+    // list of files to exclude
+    exclude: [
+    ],
+
+
+    // preprocess matching files before serving them to the browser
+    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
+    preprocessors: {
+    },
+
+
+    // test results reporter to use
+    // possible values: 'dots', 'progress'
+    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
+    reporters: ['dots', 'junit'],
+    junitReporter: {
+        outputFile: 'test-results.xml'
+    },
+
+
+    // web server port
+    port: 9876,
+
+
+    // enable / disable colors in the output (reporters and logs)
+    colors: true,
+
+
+    // level of logging
+    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
+    logLevel: config.LOG_INFO,
+
+
+    // enable / disable watching file and executing tests whenever any file changes
+    autoWatch: false,
+
+
+    // start these browsers
+    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
+    //browsers: ['Chrome'],
+    browsers: ['Firefox'],
+
+
+    // Continuous Integration mode
+    // if true, Karma captures browsers, runs the tests and exits
+    singleRun: true,
+
+    // Concurrency level
+    // how many browser should be started simultaneous
+    concurrency: Infinity
+  });
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/karmalog
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/karmalog	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/karmalog	(revision 21239)
@@ -0,0 +1,96 @@
+[33m25 05 2016 12:30:24.724:WARN [karma]: [39mNo captured browser, open http://localhost:9876/
+[32m25 05 2016 12:30:24.739:INFO [karma]: [39mKarma v0.13.22 server started at http://localhost:9876/
+[32m25 05 2016 12:30:24.748:INFO [launcher]: [39mStarting browser PhantomJS
+[32m25 05 2016 12:30:24.761:INFO [launcher]: [39mStarting browser Chrome
+[32m25 05 2016 12:30:25.074:INFO [PhantomJS 2.1.1 (Linux 0.0.0)]: [39mConnected on socket /#i_VVBy7PWCXJ5G9nAAAA with id 65168602
+[32m25 05 2016 12:30:25.680:INFO [Chrome 50.0.2661 (Linux 0.0.0)]: [39mConnected on socket /#qVA7hCT_IQ1EwaMFAAAB with id 22865988
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2KLOG: 'creating model'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2KLOG: 'meshing'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2KPhantomJS 2.1.1 (Linux 0.0.0) test101 contains test101 FAILED
+	TypeError: undefined is not a function (evaluating 'Module.HEAPF64.slice(indexptr /8, indexptr/8 + nel*3)') in /home/andy/Programming/Research/runtest2/lib/bin/issm-binaries.js (line 11457)
+	TriMesh@/home/andy/Programming/Research/runtest2/lib/bin/issm-binaries.js:11457:36
+	triangle@/home/andy/Programming/Research/runtest2/lib/bin/issm-binaries.js:6734:26
+	/home/andy/Programming/Research/runtest2/scripts/helpers/1.spec.js:7:17
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) (0 secs / 0.207 secs)
+[1A[2KPhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+
+[1A[2K[1A[2KPhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: 'creating model'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: 'meshing'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: 'parameterization'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: '      boundary conditions for stressbalance model: setting spc as zero'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: '      no smb.mass_balance specified: values set as zero'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: '      no basalforcings.groundedice_melting_rate specified: values set as zero'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: '      no basalforcings.floatingice_melting_rate specified: values set as zero'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: '      no balancethickness.thickening_rate specified: values set as zero'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: 'marshalling file test101.bin'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: 'running issm locally'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: ''
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: 'Ice Sheet System Model (ISSM) version  4.9'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: '(website: http://issm.jpl.nasa.gov contact: issm@jpl.nasa.gov)'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: ''
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: 'call computational core:'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: '   computing new velocity'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: '   computing velocities'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: ''
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: '??? Error in ==> /Users/larour/issm-trunks/trunk-jpl-js/src/c/./classes/Elements/Element.cpp:941'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: 'GetInputListOnNodes error message: Input IceMaskNodeActivation not found in element'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: ''
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) test101 contains test101 FAILED
+	Error: ReadData error message: cannot read data of type 0
+	    at Error (native)
+	    at ReadData (/home/andy/Programming/Research/runtest2/lib/bin/issm-binaries.js:10905:14)
+	    at parseresultsfrombuffer (/home/andy/Programming/Research/runtest2/lib/bin/issm-binaries.js:10831:12)
+	    at loadresultsfrombuffer (/home/andy/Programming/Research/runtest2/lib/bin/issm-binaries.js:10770:13)
+	    at solve (/home/andy/Programming/Research/runtest2/lib/bin/issm-binaries.js:11057:8)
+	    at Object.<anonymous> (/home/andy/Programming/Research/runtest2/scripts/helpers/1.spec.js:15:12)
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) (0 secs / 3.247 secs)
+[1A[2K[1A[2KPhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (3.302 secs / 3.247 secs)
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/Data/SquareShelfConstrained.data.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/Data/SquareShelfConstrained.data.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/Data/SquareShelfConstrained.data.js	(revision 21239)
@@ -0,0 +1,1974 @@
+var x =[ 0, //{{{
+    1000000.00,
+    1000000.00,
+             0,
+     500000.00,
+     500000.00,
+    1000000.00,
+     500000.00,
+             0,
+     750000.00,
+     250000.00,
+     250000.00,
+     750000.00,
+    1000000.00,
+     750000.00,
+     625000.00,
+     875000.00,
+     750000.00,
+     625000.00,
+     562500.00,
+     625000.00,
+     687500.00,
+     687500.00,
+     718750.00,
+     875000.00,
+     792968.75,
+     687500.00,
+     750651.04,
+     812500.00,
+     784376.26,
+     812500.00,
+     737044.20,
+     711415.45,
+     619808.98,
+     679903.16,
+     875000.00,
+     816565.05,
+     790340.66,
+     879033.53,
+     820390.62,
+     759468.98,
+    1000000.00,
+     702320.86,
+     894268.51,
+     743370.58,
+     756140.79,
+     870143.86,
+    1000000.00,
+     941365.26,
+     927759.20,
+     835259.33,
+    1000000.00,
+     683743.63,
+     843782.67,
+     943774.60,
+     728886.91,
+     703008.76,
+     617381.75,
+     725024.94,
+     815309.94,
+     864434.02,
+     923153.03,
+     839208.76,
+     790417.28,
+     811985.49,
+     904485.58,
+    1000000.00,
+     764145.24,
+    1000000.00,
+     803825.28,
+     805004.84,
+    1000000.00,
+     897809.81,
+     856709.28,
+     849378.44,
+     880439.03,
+     874923.01,
+     926298.65,
+     850818.89,
+     773165.13,
+     821586.23,
+     750000.00,
+     838262.90,
+     843656.20,
+    1000000.00,
+     923364.60,
+    1000000.00,
+     947000.54,
+     951408.71,
+    1000000.00,
+     941348.21,
+     955296.62,
+     908023.58,
+     562500.00,
+     250000.00,
+     631606.65,
+     528507.30,
+     576013.63,
+     577293.44,
+     535671.78,
+     502260.83,
+     455537.02,
+     492730.44,
+     375000.00,
+     558796.01,
+     437500.00,
+     406250.00,
+     523391.71,
+     471037.47,
+     357447.01,
+     414577.09,
+     371858.37,
+     406507.82,
+     333442.08,
+     431668.11,
+     282518.77,
+     329423.36,
+     292139.49,
+     532046.01,
+     612510.98,
+     455486.33,
+     312500.00,
+             0,
+     327477.57,
+     528654.71,
+     440987.54,
+     576170.41,
+     490525.44,
+     445996.32,
+     603292.83,
+     638938.30,
+     678235.71,
+     661669.03,
+     215117.76,
+     332210.28,
+     669283.27,
+     667292.83,
+     568893.78,
+     608536.87,
+     555812.71,
+     660330.04,
+     676819.27,
+     727629.11,
+     620541.50,
+     590910.90,
+     569641.27,
+     551966.23,
+     498954.02,
+     483275.96,
+     760325.72,
+     700090.45,
+     772962.54,
+     508900.23,
+     442063.96,
+     645432.38,
+     599915.31,
+     609769.65,
+     512359.02,
+     672668.03,
+     449356.47,
+     352874.69,
+     404046.43,
+     385658.72,
+     382051.86,
+     268990.07,
+     382316.37,
+     322143.60,
+     398597.44,
+     246074.32,
+     325043.39,
+     272789.22,
+     169268.75,
+     224121.33,
+             0,
+     190250.64,
+     220642.79,
+     262363.99,
+     727971.89,
+     731757.70,
+     782353.48,
+     714788.34,
+     793570.57,
+     648067.15,
+     875000.00,
+     785216.54,
+     886603.37,
+     847230.22,
+     835381.89,
+     902841.78,
+     812500.00,
+     873594.69,
+     937500.00,
+     934993.85,
+    1000000.00,
+     956423.95,
+     934982.86,
+     431714.85,
+     375712.88,
+     208581.66,
+     543451.44,
+     625000.00,
+     292441.32,
+     219943.28,
+     173276.46,
+     255248.48,
+             0,
+     133383.78,
+     322294.88,
+     102245.78,
+     588925.13,
+     536316.75,
+     608474.93,
+     720734.45,
+     682677.77,
+     687500.00,
+     326922.57,
+     278769.51,
+     340100.93,
+     182890.39,
+     302010.56,
+     226879.14,
+     175206.51,
+     233160.67,
+     166331.80,
+     299277.36,
+     250000.00,
+     396132.12,
+     348745.04,
+     343516.37,
+     562500.00,
+     531250.00,
+     375000.00,
+     437500.00,
+     480127.31,
+     486755.23,
+     437500.00,
+     418753.58,
+     348418.56,
+     215190.87,
+             0,
+     475106.46,
+     450403.05,
+     462691.02,
+     490774.65,
+     444026.71,
+     442305.62,
+     106797.52,
+     156735.92,
+     125000.00,
+      88484.21,
+     175049.24,
+    1000000.00,
+     949486.27,
+     910659.68,
+     264470.56,
+     187500.00,
+     156250.00,
+      70150.11,
+     210176.80,
+     121372.74,
+     230344.80,
+     446594.38,
+     635173.42,
+    1000000.00,
+     191736.12,
+     143967.18,
+     208897.91,
+     154003.12,
+             0,
+      70969.18,
+     214394.01,
+     280158.83,
+     192618.72,
+     125000.00,
+     249231.59,
+     140263.51,
+     291112.70,
+     313365.54,
+     364113.09,
+     295977.82,
+      76015.00,
+     187500.00,
+     218750.00,
+     156250.00,
+     102877.29,
+      62500.00,
+             0,
+      50433.46,
+     312500.00,
+     400218.61,
+     401492.48,
+     363132.76,
+      98732.17,
+             0,
+      39542.29,
+     330682.47,
+      43070.27,
+     106669.47,
+      57457.06,
+             0,
+             0,
+      50794.52,
+      97418.47,
+      62039.94,
+     143821.44,
+     119380.50,
+      44732.05,
+             0,
+             0,
+      66521.34,
+      69603.39,
+      43959.82,
+      43762.58,
+      93564.32,
+      44263.93,
+     117747.91,
+     139478.83,
+     124387.95,
+             0,
+      48631.61,
+      53659.39,
+      99563.52,
+     659034.30,
+     194316.29,
+     213251.06,
+     400950.40,
+     535853.28,
+     517149.04,
+             0,
+      41128.00,
+      50958.58,
+      72804.35,
+      62500.00,
+             0,
+     857793.90,
+     937500.00,
+     937500.00,
+     901657.70,
+     937500.00,
+    1000000.00]; //}}}
+var y=[ 0, //{{{
+             0,
+    1000000.00,
+    1000000.00,
+     500000.00,
+             0,
+     500000.00,
+    1000000.00,
+     500000.00,
+     750000.00,
+     250000.00,
+     750000.00,
+     500000.00,
+     750000.00,
+    1000000.00,
+     875000.00,
+     875000.00,
+     875000.00,
+    1000000.00,
+     937500.00,
+     937500.00,
+     906250.00,
+    1000000.00,
+     953125.00,
+    1000000.00,
+     937500.00,
+     828125.00,
+     920572.92,
+     878051.76,
+     812500.00,
+    1000000.00,
+     827170.23,
+     783194.86,
+     763264.44,
+     707543.97,
+     721951.29,
+     754091.69,
+     637221.80,
+     798475.65,
+     691856.09,
+     689783.04,
+     625000.00,
+     620870.45,
+     615640.57,
+     644980.88,
+     576238.43,
+     666169.59,
+     687500.00,
+     718750.00,
+     662653.98,
+     829478.44,
+     875000.00,
+     543703.29,
+     530812.60,
+     784862.85,
+     540067.13,
+     500834.56,
+     488117.17,
+     417114.77,
+     583137.43,
+     575959.28,
+     521802.97,
+     626976.87,
+     535111.03,
+     469465.03,
+     758765.61,
+     812500.00,
+     450532.37,
+     250000.00,
+     364474.06,
+     417194.98,
+     375000.00,
+     431402.06,
+     389664.51,
+     437988.85,
+     485024.68,
+     283320.55,
+     362242.64,
+     333923.92,
+     265892.28,
+     288956.91,
+             0,
+     191587.33,
+     242623.96,
+     125000.00,
+     213744.02,
+     437500.00,
+     466364.65,
+     411369.19,
+     312500.00,
+     281250.00,
+     325736.34,
+     317956.14,
+    1000000.00,
+    1000000.00,
+     818704.70,
+     835140.58,
+     801559.48,
+     853763.55,
+     889585.37,
+     939760.83,
+     872436.66,
+     734134.40,
+    1000000.00,
+     737678.54,
+    1000000.00,
+     930524.50,
+     780113.29,
+     812731.80,
+     815106.21,
+     829938.20,
+     877039.54,
+     743576.31,
+     939541.44,
+     784783.37,
+     865184.74,
+     854270.44,
+     800285.94,
+     618790.44,
+     695127.75,
+     922347.37,
+    1000000.00,
+     750000.00,
+     727873.35,
+     682006.93,
+     660032.60,
+     652856.74,
+     648262.24,
+     570982.80,
+     572117.19,
+     635651.50,
+     660876.82,
+     589837.26,
+     822030.59,
+     775011.93,
+     756356.32,
+     446687.43,
+     378923.73,
+     426682.39,
+     465627.29,
+     343357.76,
+     394146.07,
+     349578.94,
+     376385.08,
+     300208.01,
+     523291.43,
+     571482.87,
+     577008.32,
+     410345.02,
+     384657.84,
+     280362.49,
+     320014.02,
+     451952.45,
+     464419.94,
+     289909.55,
+     198407.22,
+     250577.47,
+     241961.37,
+     211680.91,
+     517504.82,
+     538287.18,
+     541502.43,
+     612254.76,
+     482738.10,
+     458789.56,
+     376142.77,
+     486708.47,
+     429481.16,
+     566975.56,
+     416629.96,
+     516114.28,
+     494186.76,
+     490551.45,
+     250000.00,
+     395130.61,
+     438064.38,
+     376306.64,
+     229415.05,
+     122509.49,
+     208273.89,
+     175428.37,
+     143850.07,
+     140502.99,
+             0,
+      67856.86,
+     101540.82,
+     138402.56,
+      86288.28,
+     158344.27,
+             0,
+      51593.97,
+             0,
+      62270.01,
+     187500.00,
+     156250.00,
+     111705.85,
+     614845.27,
+     679697.99,
+     317812.85,
+     102480.06,
+             0,
+     644558.17,
+     361338.44,
+     350274.35,
+     328876.94,
+     375000.00,
+     271457.22,
+     343067.08,
+     402793.01,
+     140294.94,
+     180339.60,
+      70536.35,
+      58255.14,
+      97856.74,
+             0,
+     679082.32,
+     704028.74,
+     631439.06,
+     676013.97,
+     586192.29,
+     703542.79,
+     758241.27,
+     644595.87,
+     593593.21,
+     286334.17,
+             0,
+     280074.28,
+     299300.04,
+     218400.54,
+             0,
+      47201.74,
+             0,
+      75323.67,
+      47102.18,
+     103417.45,
+             0,
+     165415.80,
+     584511.32,
+     777604.49,
+     875000.00,
+     192009.96,
+     249299.90,
+     145315.40,
+     324936.76,
+     301296.02,
+     362740.14,
+     845423.29,
+     814178.18,
+    1000000.00,
+     760623.21,
+     898978.26,
+     562500.00,
+     593750.00,
+     567168.26,
+     932160.89,
+    1000000.00,
+     952573.37,
+     929849.89,
+     941394.35,
+     910245.08,
+     887045.13,
+     711233.62,
+     534282.83,
+      62500.00,
+     260968.98,
+     162770.50,
+     191902.67,
+     218606.39,
+     125000.00,
+     204711.03,
+      92726.84,
+     185075.65,
+     141260.30,
+             0,
+     137508.90,
+      88618.69,
+      68986.34,
+     129647.50,
+      76619.17,
+     231890.83,
+     128996.12,
+             0,
+      41199.93,
+      40241.38,
+      49434.20,
+             0,
+      65536.00,
+      51062.77,
+             0,
+      42666.40,
+     114827.65,
+     156155.21,
+     168535.63,
+     187500.00,
+      97803.02,
+      43445.41,
+     164826.19,
+     334482.71,
+     365594.16,
+     437500.00,
+     312500.00,
+     419179.12,
+     476605.37,
+     281250.00,
+     442576.08,
+     542459.43,
+     471741.14,
+     625000.00,
+     562500.00,
+     523498.57,
+     598067.34,
+     322564.20,
+     240327.37,
+     246137.38,
+     561766.58,
+     591080.84,
+     641861.77,
+     705710.88,
+     687500.00,
+     718750.00,
+     657460.18,
+     666135.63,
+      47644.44,
+     544673.40,
+     601399.14,
+     220045.66,
+     292367.99,
+     370285.70,
+     812500.00,
+     781250.00,
+     836877.18,
+     880834.88,
+    1000000.00,
+     937500.00,
+     937500.00,
+     925824.50,
+    1000000.00,
+     959042.80,
+     861983.44,
+     937500.00]; //}}}
+var vx =[ 0, //{{{
+             0,
+             0,
+             0,
+          1.06,
+             0,
+             0,
+             0,
+             0,
+         98.52,
+         99.38,
+        -94.27,
+         -4.26,
+             0,
+             0,
+        106.36,
+        210.00,
+        192.06,
+             0,
+         48.30,
+         90.18,
+        158.39,
+             0,
+        122.10,
+             0,
+        204.38,
+        126.53,
+        201.33,
+        220.43,
+        160.49,
+             0,
+        151.85,
+        107.37,
+         54.44,
+         51.59,
+         97.47,
+        118.15,
+         45.15,
+        158.09,
+         74.73,
+         61.60,
+             0,
+         23.73,
+         47.66,
+         41.24,
+         17.36,
+         65.43,
+             0,
+         80.82,
+         58.32,
+        186.32,
+             0,
+          3.32,
+          1.41,
+        100.86,
+          5.30,
+         -1.51,
+         -1.87,
+        -22.02,
+         24.52,
+         24.83,
+         -2.09,
+         48.43,
+          2.90,
+        -11.16,
+        118.64,
+             0,
+        -15.04,
+             0,
+        -53.63,
+        -29.86,
+             0,
+        -34.85,
+        -45.14,
+        -26.83,
+         -9.00,
+        -95.11,
+        -51.45,
+        -72.33,
+        -95.02,
+        -92.08,
+             0,
+       -141.64,
+       -114.80,
+             0,
+       -108.28,
+             0,
+        -22.46,
+        -23.52,
+             0,
+        -63.36,
+        -45.08,
+        -68.59,
+             0,
+             0,
+         88.53,
+         24.42,
+         47.17,
+         65.40,
+         30.32,
+          2.87,
+        -32.11,
+         -1.11,
+             0,
+         19.72,
+             0,
+        -74.71,
+         13.31,
+        -12.68,
+        -85.39,
+        -52.31,
+        -98.96,
+        -31.91,
+       -126.23,
+        -33.15,
+       -168.78,
+       -127.85,
+       -113.05,
+          3.73,
+         25.88,
+        -28.14,
+             0,
+             0,
+        -54.29,
+          6.07,
+         -7.19,
+         11.34,
+         -0.16,
+         -0.22,
+          4.96,
+         16.50,
+         30.60,
+         11.89,
+       -167.77,
+        -80.40,
+         72.66,
+         -9.43,
+         -8.40,
+         -7.51,
+         -1.21,
+        -35.04,
+        -23.15,
+        -46.83,
+        -19.97,
+        -28.94,
+          0.88,
+          1.90,
+          1.58,
+          2.34,
+        -37.84,
+        -70.28,
+        -69.67,
+          0.93,
+          3.98,
+        -48.82,
+        -56.57,
+        -51.69,
+         -4.61,
+        -92.92,
+          1.22,
+         -1.98,
+         -0.14,
+         -6.83,
+          3.66,
+         13.06,
+         18.74,
+          5.90,
+          9.75,
+        -11.42,
+         18.20,
+          0.40,
+          4.48,
+          5.15,
+             0,
+         42.78,
+         23.87,
+         38.99,
+       -103.80,
+       -132.41,
+       -130.63,
+       -126.64,
+       -157.32,
+        -94.57,
+             0,
+       -125.29,
+       -139.68,
+       -152.66,
+       -151.02,
+       -127.20,
+             0,
+       -104.08,
+             0,
+        -69.03,
+             0,
+        -80.34,
+       -107.03,
+         -3.11,
+        -20.48,
+         74.88,
+        -27.50,
+             0,
+        -28.90,
+         51.47,
+         62.66,
+         59.36,
+             0,
+         99.89,
+         39.70,
+         45.08,
+        -58.14,
+        -21.77,
+        -58.26,
+        -97.48,
+       -107.06,
+             0,
+        -33.93,
+        -56.70,
+        -15.90,
+        -61.45,
+         -9.79,
+        -68.57,
+       -118.40,
+        -38.45,
+        -24.30,
+         67.95,
+             0,
+         37.44,
+         45.71,
+         81.87,
+             0,
+        -11.23,
+             0,
+         33.96,
+          6.22,
+          7.93,
+             0,
+         55.37,
+         -6.11,
+       -126.14,
+             0,
+         16.31,
+         20.66,
+         28.64,
+          0.85,
+         20.30,
+          8.57,
+       -180.75,
+       -174.45,
+             0,
+       -117.58,
+       -227.43,
+             0,
+         22.05,
+          6.36,
+       -175.77,
+             0,
+       -177.70,
+       -178.91,
+       -193.64,
+       -213.47,
+       -208.14,
+        -11.05,
+          2.37,
+             0,
+        104.62,
+        143.06,
+        136.85,
+        125.74,
+             0,
+         93.48,
+        147.01,
+        121.98,
+        154.33,
+             0,
+        148.01,
+        145.90,
+        112.62,
+        119.04,
+         78.25,
+         92.46,
+        118.43,
+             0,
+         93.51,
+        102.75,
+        109.77,
+             0,
+             0,
+         68.45,
+             0,
+         38.61,
+         64.65,
+         88.59,
+        123.38,
+             0,
+         75.40,
+         62.22,
+         79.75,
+         64.80,
+         44.90,
+             0,
+             0,
+         30.65,
+         16.75,
+         82.29,
+         29.52,
+         -7.98,
+         14.13,
+             0,
+             0,
+        -17.43,
+        -19.78,
+         39.27,
+         70.57,
+        103.88,
+         -7.47,
+        -23.11,
+        -49.25,
+        -87.42,
+             0,
+        -69.20,
+        -50.66,
+        -65.04,
+        -63.82,
+         -8.68,
+        -23.77,
+         53.60,
+        -14.42,
+         -1.64,
+             0,
+        -82.69,
+       -127.73,
+       -157.86,
+             0,
+             0,
+        220.71,
+        162.18,
+             0,
+        150.08,
+        150.12,
+             0]; //}}}
+var vy =[ 0, //{{{
+             0,
+             0,
+             0,
+       1619.49,
+             0,
+             0,
+             0,
+             0,
+       1392.27,
+       1188.56,
+       1395.65,
+       1452.44,
+             0,
+             0,
+       1298.38,
+        766.39,
+       1138.53,
+             0,
+        927.25,
+        877.20,
+       1081.21,
+             0,
+        638.61,
+             0,
+        705.43,
+       1382.70,
+        907.94,
+        979.15,
+       1227.77,
+             0,
+       1297.35,
+       1416.22,
+       1538.22,
+       1525.45,
+       1029.03,
+       1223.08,
+       1373.30,
+        909.03,
+       1262.65,
+       1419.06,
+             0,
+       1531.61,
+        995.93,
+       1462.65,
+       1455.20,
+       1092.03,
+             0,
+        616.34,
+        761.96,
+       1029.65,
+             0,
+       1552.90,
+       1226.70,
+        543.19,
+       1500.29,
+       1529.54,
+       1595.18,
+       1456.50,
+       1320.62,
+       1139.39,
+        816.26,
+       1233.00,
+       1380.17,
+       1306.29,
+        809.95,
+             0,
+       1405.50,
+             0,
+       1230.93,
+       1284.81,
+             0,
+        899.64,
+       1065.17,
+       1141.21,
+       1041.37,
+        838.78,
+        673.32,
+       1023.09,
+       1162.13,
+       1059.53,
+             0,
+        798.03,
+        892.42,
+             0,
+        495.54,
+             0,
+        580.56,
+        503.81,
+             0,
+        465.65,
+        395.83,
+        716.40,
+             0,
+             0,
+       1455.92,
+       1470.71,
+       1521.05,
+       1405.51,
+       1256.40,
+        917.14,
+       1352.49,
+       1600.45,
+             0,
+       1589.29,
+             0,
+        967.30,
+       1563.03,
+       1519.27,
+       1462.17,
+       1464.61,
+       1283.29,
+       1576.28,
+        852.51,
+       1551.33,
+       1237.14,
+       1332.92,
+       1407.55,
+       1619.57,
+       1588.68,
+       1029.47,
+             0,
+             0,
+       1524.91,
+       1613.84,
+       1611.70,
+       1609.22,
+       1619.00,
+       1616.90,
+       1605.97,
+       1585.52,
+       1547.54,
+       1573.97,
+       1205.85,
+       1491.46,
+       1506.09,
+       1546.38,
+       1582.85,
+       1584.62,
+       1611.28,
+       1486.20,
+       1509.30,
+       1393.33,
+       1547.02,
+       1494.59,
+       1614.65,
+       1618.48,
+       1621.38,
+       1602.99,
+       1364.42,
+       1345.20,
+       1256.72,
+       1614.07,
+       1610.59,
+       1432.10,
+       1265.45,
+       1397.92,
+       1424.33,
+       1236.84,
+       1616.96,
+       1586.97,
+       1607.97,
+       1601.76,
+       1597.01,
+       1476.70,
+       1554.73,
+       1549.11,
+       1591.19,
+       1462.44,
+       1529.48,
+       1500.68,
+       1250.40,
+       1407.74,
+             0,
+       1244.07,
+       1375.30,
+       1408.15,
+       1183.64,
+        803.25,
+       1006.75,
+       1054.70,
+        783.42,
+        997.80,
+             0,
+        449.58,
+        386.59,
+        619.74,
+        465.23,
+        474.56,
+             0,
+        247.34,
+             0,
+        167.10,
+             0,
+        235.10,
+        263.31,
+       1613.80,
+       1587.70,
+       1203.52,
+        837.02,
+             0,
+       1516.37,
+       1295.49,
+       1132.67,
+       1338.28,
+             0,
+        871.64,
+       1466.21,
+        907.04,
+       1032.52,
+       1232.40,
+        616.06,
+        456.63,
+        739.98,
+             0,
+       1546.05,
+       1474.90,
+       1573.91,
+       1287.44,
+       1540.92,
+       1386.17,
+       1191.36,
+       1429.80,
+       1258.43,
+       1353.32,
+             0,
+       1459.16,
+       1442.41,
+       1274.50,
+             0,
+        438.29,
+             0,
+        659.04,
+        435.91,
+        850.65,
+             0,
+       1151.04,
+       1584.37,
+       1284.45,
+             0,
+       1276.03,
+       1429.12,
+       1078.90,
+       1554.86,
+       1512.96,
+       1574.04,
+        745.50,
+       1027.16,
+             0,
+        780.09,
+        862.57,
+             0,
+        567.30,
+        891.65,
+        834.83,
+             0,
+        490.02,
+        361.35,
+        687.58,
+        615.29,
+       1042.57,
+       1603.74,
+       1590.74,
+             0,
+       1051.03,
+        666.22,
+        941.56,
+        841.37,
+             0,
+        453.67,
+        588.49,
+       1080.39,
+        738.85,
+             0,
+        849.76,
+        429.99,
+        548.42,
+        904.98,
+        639.96,
+       1232.98,
+        337.14,
+             0,
+        301.78,
+        239.88,
+        213.59,
+             0,
+             0,
+        113.54,
+             0,
+        393.37,
+        898.54,
+       1084.03,
+        510.41,
+             0,
+        162.78,
+        376.10,
+        250.47,
+        844.66,
+        556.31,
+             0,
+             0,
+        538.12,
+        938.17,
+        509.26,
+       1117.10,
+       1080.94,
+        497.80,
+             0,
+             0,
+        715.37,
+        751.00,
+        408.31,
+        337.32,
+        629.18,
+        528.73,
+       1065.63,
+       1144.69,
+       1037.25,
+             0,
+        541.72,
+        600.74,
+        924.29,
+        412.98,
+       1347.97,
+       1393.51,
+       1329.15,
+       1512.89,
+       1586.47,
+             0,
+        420.92,
+        435.64,
+        492.18,
+             0,
+             0,
+        584.82,
+        331.77,
+             0,
+        306.87,
+        481.10,
+             0]; //}}}
+var index=[[32,33,10], //{{{
+	[68,57,59],
+	[148,5,147],
+	[154,160,164],
+	[74,75,71],
+	[185,213,82],
+	[23,19,21],
+	[49,36,50],
+	[97,108,98],
+	[51,37,39],
+	[233,235,243],
+	[272,229,280],
+	[306,324,224],
+	[222,248,250],
+	[137,57,58],
+	[10,33,136],
+	[17,29,51],
+	[15,24,28],
+	[96,98,34],
+	[19,20,21],
+	[15,26,31],
+	[335,17,336],
+	[29,18,30],
+	[27,18,22],
+	[21,22,24],
+	[102,100,101],
+	[8,101,94],
+	[22,21,16],
+	[20,16,21],
+	[15,28,26],
+	[27,22,16],
+	[18,28,22],
+	[24,15,23],
+	[21,24,23],
+	[29,26,28],
+	[25,335,338],
+	[26,29,335],
+	[136,27,96],
+	[32,10,30],
+	[22,28,24],
+	[29,28,18],
+	[18,32,30],
+	[335,29,17],
+	[30,10,37],
+	[29,30,51],
+	[18,27,32],
+	[335,31,26],
+	[32,27,33],
+	[96,27,16],
+	[136,35,10],
+	[96,99,98],
+	[38,45,46],
+	[34,98,105],
+	[45,38,41],
+	[36,37,40],
+	[48,14,49],
+	[41,40,37],
+	[37,36,39],
+	[38,40,41],
+	[63,44,47],
+	[66,49,55],
+	[66,55,39],
+	[41,37,10],
+	[47,40,63],
+	[10,35,41],
+	[132,45,41],
+	[120,35,136],
+	[36,40,47],
+	[64,56,13],
+	[38,46,60],
+	[62,252,253],
+	[132,41,35],
+	[46,45,43],
+	[56,43,53],
+	[56,64,46],
+	[63,40,38],
+	[50,48,49],
+	[49,14,55],
+	[47,44,50],
+	[50,36,47],
+	[253,50,44],
+	[48,50,42],
+	[37,51,30],
+	[17,51,39],
+	[131,132,120],
+	[339,39,55],
+	[13,56,57],
+	[65,13,68],
+	[254,61,54],
+	[52,339,67],
+	[339,52,336],
+	[43,56,46],
+	[57,56,53],
+	[132,131,43],
+	[53,263,57],
+	[59,137,142],
+	[58,139,137],
+	[72,78,92],
+	[75,73,76],
+	[64,60,46],
+	[61,60,54],
+	[254,54,62],
+	[63,61,44],
+	[54,64,65],
+	[252,42,253],
+	[38,60,63],
+	[63,60,61],
+	[65,64,13],
+	[60,64,54],
+	[76,88,62],
+	[75,76,65],
+	[39,36,66],
+	[49,66,36],
+	[57,68,13],
+	[55,14,67],
+	[150,71,68],
+	[59,57,137],
+	[65,68,71],
+	[151,155,159],
+	[150,68,59],
+	[75,74,73],
+	[74,71,70],
+	[72,87,89],
+	[88,7,62],
+	[74,70,79],
+	[73,74,78],
+	[88,76,73],
+	[71,75,65],
+	[62,54,76],
+	[65,76,54],
+	[77,79,81],
+	[84,86,77],
+	[79,78,74],
+	[92,91,90],
+	[70,152,81],
+	[79,77,93],
+	[59,142,143],
+	[84,77,81],
+	[70,81,79],
+	[80,180,84],
+	[187,83,182],
+	[178,151,159],
+	[69,91,86],
+	[80,84,81],
+	[84,83,86],
+	[83,187,189],
+	[188,187,182],
+	[194,69,86],
+	[89,73,78],
+	[89,78,72],
+	[7,88,87],
+	[87,88,89],
+	[73,89,88],
+	[86,91,77],
+	[93,91,92],
+	[69,90,91],
+	[72,92,90],
+	[93,92,78],
+	[79,93,78],
+	[91,93,77],
+	[20,19,94],
+	[20,100,99],
+	[102,97,100],
+	[96,34,136],
+	[97,99,100],
+	[105,103,125],
+	[99,96,16],
+	[108,105,98],
+	[20,99,16],
+	[97,98,99],
+	[101,20,94],
+	[100,20,101],
+	[114,116,117],
+	[121,107,102],
+	[104,107,106],
+	[108,109,103],
+	[97,109,108],
+	[198,113,124],
+	[128,103,262],
+	[121,106,107],
+	[34,105,120],
+	[107,114,112],
+	[101,8,106],
+	[109,115,103],
+	[109,97,102],
+	[103,105,108],
+	[111,109,102],
+	[111,115,109],
+	[111,102,112],
+	[110,111,112],
+	[112,102,107],
+	[110,113,115],
+	[114,107,104],
+	[110,112,117],
+	[135,110,118],
+	[135,113,110],
+	[95,255,122],
+	[116,118,117],
+	[110,115,111],
+	[115,113,262],
+	[255,114,122],
+	[260,251,257],
+	[114,117,112],
+	[116,134,118],
+	[12,124,135],
+	[110,117,118],
+	[146,140,58],
+	[147,127,119],
+	[125,120,105],
+	[120,125,127],
+	[102,101,121],
+	[106,121,101],
+	[162,164,160],
+	[114,104,122],
+	[239,118,134],
+	[128,119,125],
+	[103,115,262],
+	[125,119,127],
+	[238,162,163],
+	[148,128,197],
+	[147,5,146],
+	[120,127,131],
+	[103,128,125],
+	[126,197,128],
+	[217,221,223],
+	[154,149,153],
+	[263,130,146],
+	[133,53,43],
+	[127,130,131],
+	[130,263,133],
+	[45,132,43],
+	[120,132,35],
+	[43,131,133],
+	[130,133,131],
+	[114,255,116],
+	[221,222,219],
+	[12,135,118],
+	[113,135,124],
+	[136,33,27],
+	[120,136,34],
+	[140,138,139],
+	[142,139,144],
+	[140,153,138],
+	[152,151,80],
+	[140,139,58],
+	[139,138,144],
+	[58,263,146],
+	[140,5,153],
+	[141,144,145],
+	[143,152,150],
+	[139,142,137],
+	[143,142,141],
+	[151,143,141],
+	[152,143,151],
+	[145,144,138],
+	[142,144,141],
+	[328,138,153],
+	[157,159,155],
+	[147,146,130],
+	[5,140,146],
+	[127,147,130],
+	[147,119,148],
+	[128,148,119],
+	[148,129,160],
+	[154,5,160],
+	[166,227,245],
+	[71,150,70],
+	[59,143,150],
+	[145,155,141],
+	[141,155,151],
+	[81,152,80],
+	[150,152,70],
+	[154,153,5],
+	[153,149,328],
+	[160,129,162],
+	[154,164,168],
+	[157,158,156],
+	[155,145,157],
+	[179,214,213],
+	[83,84,180],
+	[157,145,327],
+	[157,156,159],
+	[328,327,138],
+	[235,234,231],
+	[214,181,183],
+	[80,151,178],
+	[148,160,5],
+	[129,163,162],
+	[167,171,165],
+	[168,170,166],
+	[163,129,197],
+	[162,161,164],
+	[126,198,163],
+	[218,198,216],
+	[167,164,161],
+	[168,149,154],
+	[218,220,238],
+	[173,176,165],
+	[170,168,164],
+	[225,228,208],
+	[161,220,171],
+	[167,165,170],
+	[170,164,167],
+	[168,166,246],
+	[223,202,217],
+	[165,171,173],
+	[165,176,177],
+	[170,177,208],
+	[161,171,167],
+	[169,324,173],
+	[223,325,169],
+	[298,299,312],
+	[169,173,171],
+	[172,305,176],
+	[206,299,302],
+	[165,177,170],
+	[177,203,205],
+	[172,176,173],
+	[175,203,176],
+	[177,176,203],
+	[205,208,177],
+	[181,178,159],
+	[80,178,180],
+	[159,183,181],
+	[180,182,83],
+	[181,180,178],
+	[180,181,182],
+	[183,159,156],
+	[181,179,182],
+	[185,179,213],
+	[193,186,191],
+	[210,183,156],
+	[212,210,200],
+	[191,190,184],
+	[179,185,182],
+	[190,191,188],
+	[192,193,191],
+	[194,86,195],
+	[188,182,185],
+	[189,187,186],
+	[188,185,190],
+	[186,187,188],
+	[186,193,196],
+	[83,189,86],
+	[85,196,264],
+	[185,82,190],
+	[186,188,191],
+	[264,192,2],
+	[191,184,192],
+	[85,195,196],
+	[189,186,196],
+	[195,86,189],
+	[85,194,195],
+	[196,193,264],
+	[189,196,195],
+	[197,129,148],
+	[126,163,197],
+	[198,126,262],
+	[216,198,124],
+	[204,199,203],
+	[207,199,204],
+	[211,210,156],
+	[272,278,292],
+	[216,124,217],
+	[230,201,212],
+	[220,218,202],
+	[204,203,175],
+	[205,203,199],
+	[207,204,298],
+	[298,204,209],
+	[199,11,205],
+	[208,166,170],
+	[276,281,285],
+	[209,204,175],
+	[11,199,265],
+	[11,225,205],
+	[208,205,225],
+	[172,303,305],
+	[209,303,302],
+	[211,156,158],
+	[230,212,231],
+	[326,229,292],
+	[200,210,211],
+	[215,82,213],
+	[183,210,212],
+	[179,181,214],
+	[212,323,214],
+	[183,212,214],
+	[323,201,215],
+	[217,124,12],
+	[323,213,214],
+	[218,216,202],
+	[217,12,221],
+	[202,216,217],
+	[223,220,202],
+	[198,218,163],
+	[239,221,12],
+	[310,9,307],
+	[171,220,169],
+	[238,220,161],
+	[221,239,222],
+	[221,219,223],
+	[222,239,248],
+	[222,250,318],
+	[325,219,224],
+	[220,223,169],
+	[321,322,320],
+	[172,306,303],
+	[228,229,227],
+	[228,166,208],
+	[11,280,225],
+	[268,267,265],
+	[242,245,227],
+	[229,228,225],
+	[166,228,227],
+	[267,11,265],
+	[234,6,231],
+	[236,6,234],
+	[231,212,200],
+	[6,230,231],
+	[233,234,235],
+	[275,278,272],
+	[275,277,278],
+	[235,231,200],
+	[233,290,236],
+	[200,211,235],
+	[211,158,241],
+	[243,211,241],
+	[233,236,234],
+	[242,326,241],
+	[162,238,161],
+	[218,238,163],
+	[118,239,12],
+	[248,239,134],
+	[242,241,158],
+	[334,240,258],
+	[243,241,237],
+	[244,242,158],
+	[227,229,326],
+	[243,237,291],
+	[211,243,235],
+	[244,158,327],
+	[246,166,245],
+	[242,244,245],
+	[245,244,246],
+	[328,246,244],
+	[168,246,149],
+	[257,256,249],
+	[330,329,123],
+	[251,248,134],
+	[250,248,247],
+	[330,331,329],
+	[251,247,248],
+	[308,311,321],
+	[134,116,261],
+	[257,258,260],
+	[50,253,42],
+	[62,7,252],
+	[44,61,254],
+	[62,253,254],
+	[44,254,253],
+	[259,95,256],
+	[261,255,259],
+	[257,249,258],
+	[257,259,256],
+	[259,257,251],
+	[334,333,4],
+	[240,331,332],
+	[261,259,251],
+	[259,255,95],
+	[332,260,258],
+	[247,251,260],
+	[134,261,251],
+	[116,255,261],
+	[198,262,113],
+	[128,262,126],
+	[57,263,58],
+	[133,263,53],
+	[199,207,265],
+	[192,264,193],
+	[265,207,268],
+	[314,268,207],
+	[226,283,282],
+	[273,267,266],
+	[11,267,272],
+	[304,313,314],
+	[267,268,266],
+	[297,269,295],
+	[270,293,268],
+	[266,281,276],
+	[274,284,285],
+	[277,275,271],
+	[275,267,273],
+	[275,272,267],
+	[276,273,266],
+	[273,271,275],
+	[271,283,277],
+	[276,271,273],
+	[279,291,292],
+	[266,293,281],
+	[276,285,284],
+	[296,232,290],
+	[296,290,279],
+	[279,278,277],
+	[279,292,278],
+	[279,277,296],
+	[279,290,291],
+	[225,280,229],
+	[11,272,280],
+	[281,293,297],
+	[1,286,288],
+	[277,283,226],
+	[271,284,283],
+	[284,271,276],
+	[274,282,284],
+	[283,284,282],
+	[295,287,288],
+	[286,274,285],
+	[285,288,286],
+	[295,281,297],
+	[295,285,281],
+	[1,288,287],
+	[236,290,232],
+	[277,226,289],
+	[291,290,233],
+	[243,291,233],
+	[291,237,292],
+	[326,292,237],
+	[272,292,229],
+	[268,293,266],
+	[297,293,270],
+	[287,295,269],
+	[313,294,270],
+	[285,295,288],
+	[277,289,296],
+	[232,296,289],
+	[270,294,297],
+	[269,297,294],
+	[209,299,298],
+	[312,299,206],
+	[302,299,209],
+	[301,174,304],
+	[305,303,209],
+	[300,302,307],
+	[206,301,312],
+	[206,302,300],
+	[172,324,306],
+	[300,307,9],
+	[313,304,174],
+	[207,298,304],
+	[209,175,305],
+	[176,305,175],
+	[322,317,318],
+	[310,307,303],
+	[302,303,307],
+	[310,303,306],
+	[306,311,315],
+	[308,309,315],
+	[9,315,309],
+	[310,315,9],
+	[306,224,316],
+	[316,224,317],
+	[301,304,312],
+	[298,312,304],
+	[294,313,174],
+	[314,313,270],
+	[268,314,270],
+	[207,304,314],
+	[306,315,310],
+	[308,315,311],
+	[317,224,219],
+	[311,306,316],
+	[318,317,219],
+	[316,317,322],
+	[222,318,219],
+	[319,320,123],
+	[321,320,319],
+	[320,250,330],
+	[318,250,320],
+	[308,321,319],
+	[316,322,311],
+	[320,322,318],
+	[311,322,321],
+	[201,323,212],
+	[213,323,215],
+	[173,324,172],
+	[325,324,169],
+	[219,325,223],
+	[324,325,224],
+	[241,326,237],
+	[227,326,242],
+	[157,327,158],
+	[138,327,145],
+	[246,328,149],
+	[327,328,244],
+	[320,330,123],
+	[250,331,330],
+	[331,250,247],
+	[332,331,247],
+	[240,329,331],
+	[260,332,247],
+	[240,332,258],
+	[339,336,17],
+	[258,249,333],
+	[333,334,258],
+	[31,335,25],
+	[3,337,340],
+	[338,337,25],
+	[335,336,338],
+	[340,337,336],
+	[337,338,336],
+	[39,339,17],
+	[67,339,55],
+	[336,52,340]]; //}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/Exp/Square.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/Exp/Square.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/Exp/Square.js	(revision 21239)
@@ -0,0 +1,9 @@
+// Name:domainoutline
+// Icon:0
+// Points Count  Value
+var square={}
+square[0]={};
+square[0]["nods"]=5;
+// X pos Y pos
+square[0]["x"]=[0,1000000,1000000,0,0];
+square[0]["y"]=[0, 0, 1000000,  1000000, 0];
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/Par/SquareShelfConstrained.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/Par/SquareShelfConstrained.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/Par/SquareShelfConstrained.js	(revision 21239)
@@ -0,0 +1,70 @@
+function parameterize(md){
+
+	//Geometry
+	var hmin=300;
+	var hmax=1000;
+	var ymin=ArrayMin(md.mesh.y);
+	var ymax=ArrayMax(md.mesh.y);
+	var xmin=ArrayMin(md.mesh.x);
+	var xmax=ArrayMax(md.mesh.x);
+	
+	md.geometry.thickness=NewArrayFill(md.mesh.numberofvertices,0);
+	md.geometry.base=NewArrayFill(md.mesh.numberofvertices,0);
+	md.geometry.surface=NewArrayFill(md.mesh.numberofvertices,0);
+	md.geometry.bed=NewArrayFill(md.mesh.numberofvertices,0);
+
+	for(i=0;i<md.mesh.numberofvertices;i++){
+		md.geometry.thickness[i]=hmax+(hmin-hmax)*(md.mesh.y[i]-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x[i]-xmin)/(xmax-xmin);
+		md.geometry.base[i]=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness[i];
+		md.geometry.surface[i]=md.geometry.base[i]+md.geometry.thickness[i];
+		md.geometry.bed[i]=md.geometry.base[i]-10;
+	}
+	
+	//Initial velocity: no ncreader for now, so we just load arrays.
+	/*x     = transpose(ncread('../Data/SquareShelfConstrained.nc','x'));
+	y     = transpose(ncread('../Data/SquareShelfConstrained.nc','y'));
+	vx    = transpose(ncread('../Data/SquareShelfConstrained.nc','vx'));
+	vy    = transpose(ncread('../Data/SquareShelfConstrained.nc','vy'));
+	index = transpose(ncread('../Data/SquareShelfConstrained.nc','index'));*/
+	
+	md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+	md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+	md.initialization.vel=ArrayMag(md.initialization.vx,md.initialization.vy);
+	md.initialization.vz=NewArrayFill(md.mesh.numberofvertices,0);
+	md.initialization.pressure=NewArrayFill(md.mesh.numberofvertices,0);
+
+	//Materials
+	md.initialization.temperature=NewArrayFill(md.mesh.numberofvertices,273-20);
+	md.materials.rheology_B=paterson(md.initialization.temperature);
+	md.materials.rheology_n=NewArrayFill(md.mesh.numberofelements,3);
+
+	//Surface mass balance and basal melting
+	md.smb.mass_balance=NewArrayFill(md.mesh.numberofvertices,10);
+	md.basalforcings.floatingice_melting_rate=NewArrayFill(md.mesh.numberofvertices,5.0);
+	md.basalforcings.groundedice_melting_rate=NewArrayFill(md.mesh.numberofvertices,5.0);
+
+	//Friction
+	md.friction.coefficient=NewArrayFill(md.mesh.numberofvertices,20);
+	for(var i=0;i<md.mesh.numberofvertices;i++)if(md.mask.groundedice_levelset[i]<0)md.friction.coefficient[i]=0;
+	md.friction.p=NewArrayFill(md.mesh.numberofelements,1);
+	md.friction.q=NewArrayFill(md.mesh.numberofelements,1);
+
+	//Numerical parameters
+	md.stressbalance.viscosity_overshoot=0.0;
+	md.masstransport.stabilization=1;
+	md.thermal.stabilization=1;
+	md.verbose=new verbose(0);
+	md.settings.waitonlock=30;
+	md.stressbalance.restol=0.05;
+	md.stressbalance.reltol=0.05;
+	md.steadystate.reltol=0.05;
+	md.stressbalance.abstol=NaN;
+	md.timestepping.time_step=1;
+	md.timestepping.final_time=3;
+
+	//Deal with boundary conditions:
+	SetIceShelfBC(md);
+
+	//Change name so that no tests have the same name
+	md.miscellaneous.name='test101';
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/DepthAverage.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/DepthAverage.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/DepthAverage.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/extrusion/DepthAverage.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/EnumDefinitions.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/EnumDefinitions.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/EnumDefinitions.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/enum/EnumDefinitions.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/GetAreas.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/GetAreas.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/GetAreas.js	(revision 21239)
@@ -0,0 +1,95 @@
+GetAreas = function(index,x,y,varargin) {
+    //GETAREAS - compute areas or volumes of elements
+    //
+    //   compute areas of triangular elements or volumes 
+    //   of pentahedrons
+    //
+    //   Usage:
+    //      areas  =GetAreas(index,x,y);
+    //      volumes=GetAreas(index,x,y,z);
+    //
+    //   Examples:
+    //      areas  =GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y);
+    //      volumes=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y,md.z);
+
+    //get number of elements and number of nodes
+    function zeros(...args) {
+        var array = [];
+        for (var i = 0; i < args[0]; ++i) {
+            array.push(args.length == 1 ? 0 : zeros(args.slice(1)));
+        }
+        return array;
+    }
+    nels=index.length;
+    nods=x.length;
+    if (arguments.length===4)
+        z=varargin[0];
+
+    //some checks
+    if (arguments.length!==3 && arguments.length!==4) {
+        //help GetAreas
+        console.error('GetAreas error message: bad usage')
+    }
+    if ((y.length!==nods) || (arguments.length===4 && z.length!==nods)) {
+        console.error('GetAreas error message: x,y and z do not have the same length')
+    }
+    if (Math.max.apply(null, index)>nods) {
+        console.error(['GetAreas error message: index should not have values above ' + nods.toString() ]);
+    }
+    if ((arguments.length===3 && index[0].length!==3)) {
+        console.error('GetAreas error message: index should have 3 columns for 2d meshes.')
+    }
+    if ((arguments.length===4 && index[0].length!==6)) {
+        console.error('GetAreas error message: index should have 6 columns for 3d meshes.')
+    }
+
+    //initialization
+    areas=zeros(nels,1);
+
+    var getColumnArray = function(arr, col) {
+       return arr.map(function(value,index) { return value[col]; }); 
+    };
+
+    x1=getColumnArray(index, 0).map(function(value) { return x[value]; }).map(function(v) { return v === undefined ? 0 : v; }); 
+    x2=getColumnArray(index, 1).map(function(value) { return x[value]; }).map(function(v) { return v === undefined ? 0 : v; }); 
+    x3=getColumnArray(index, 2).map(function(value) { return x[value]; }).map(function(v) { return v === undefined ? 0 : v; });
+    y1=getColumnArray(index, 0).map(function(value) { return y[value]; }).map(function(v) { return v === undefined ? 0 : v; }); 
+    y2=getColumnArray(index, 1).map(function(value) { return y[value]; }).map(function(v) { return v === undefined ? 0 : v; }); 
+    y3=getColumnArray(index, 2).map(function(value) { return y[value]; }).map(function(v) { return v === undefined ? 0 : v; });
+
+    //compute the volume of each element
+    if (arguments.length===3) {
+        //compute the surface of the triangle
+        areas=math.multiply(0.5, math.subtract(math.multiply(math.subtract(x2,x1), math.subtract(y3,y1)), math.multiply(math.subtract(y2,y1), math.subtract(x3,x1))));
+    } else {
+        //V=area(triangle)*1/3(z1+z2+z3)
+
+        var tempind1 = [];
+        index.forEach(function(value, idx) {
+            tempind1.push(value[3]);
+            tempind1.push(value[4]);
+            tempind1.push(value[5]);
+        });
+
+        var tempind2 = [];
+        index.forEach(function(value, idx) {
+            tempind2.push(value[0]);
+            tempind2.push(value[1]);
+            tempind2.push(value[2]);
+        });
+        
+        var tempz1 = tempind1.map(function(value, idx) {
+            return z[value][2];
+        });
+
+        var tempz2 = tempind2.map(function(value, idx) {
+            return z[value][2];
+        })
+
+        thickness = math.subtract(math.mean(tempz1), math.mean(tempz2));
+
+        areas=math.multiply(math.multiply(0.5, math.subtract(math.multiply(math.subtract(x2,x1), math.subtract(y3,y1)), math.multiply(math.subtract(y2,y1), math.subtract(x3,x1)))), thickness);
+    }
+
+    return areas;
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/SMBforcing.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/SMBforcing.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/SMBforcing.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/SMBforcing.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/adjacency.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/adjacency.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/adjacency.js	(revision 21239)
@@ -0,0 +1,61 @@
+adjacency = function(md) {
+    //ADJACENCY -  compute adjacency matrix, list of vertices and list of weights.
+    //
+    //  function to create the adjacency matrix from the connectivity table.
+    //
+    //  the required output is:
+    //    md.adj_mat     (double [sparse nv x nv], vertex adjacency matrix)
+    //    md.qmu.vertex_weight        (double [nv], vertex weights)
+
+    var indi=[[md.mesh.elements.map(function(x) { return x[0]; })], [md.mesh.elements.map(function(x) { return x[1]; })], [md.mesh.elements.map(function(x) { return x[2]; })]];
+    var indj=[md.mesh.elements.map(function(x) { return x[1];  }), [md.mesh.elements.map(function(x) { return x[2]; })], [md.mesh.elements.map(function(x) { return x[0]; })]];
+    var values=1;
+
+    md.qmu.adjacency=math.eye(md.mesh.numberofvertices, md.mesh.numberofvertices, 'sparse');
+
+    for (var i = 0; i < indi.length; ++i) {
+        for (var j = 0; j < indj.length; ++j) {
+            //md.qmu.adjacency[indi[i]][indj[j]] = values;
+            md.qmu.adjacency.subset(math.index(i, j), values);
+        }
+    }
+
+    var tempadj = math.subset(md.qmu.adjacency, math.index(0,math.range(0, math.size(md.qmu.adjacency)._data[1])))
+
+    //var tempadj = md.qmu.adjacency[0].map(function(col, i) { return md.qmu.adjacency.map(function(row) { return row[i]; }); });
+    //md.qmu.adjacency=[md.qmu.adjacency[0].map(function(x, idx) { return md.qmu.adjacency.map(function(row, jdx) { return md.qmu.adjacency[idx][jdx] | tempadj[i][j]; })})];
+    //md.qmu.adjacency=[tempadj.map(function(x, idx) { return md.qmu.adjacency.map(function(row, jdx) { return md.qmu.adjacency.subset(math.index(idx, jdx), md.qmu.adjacency.get([idx, jdx]) | tempadj.get([idx,jdx]));})})];
+
+    for (var i = 0; i < math.size(md.qmu.adjacency)._data[0]; ++i) {
+        for (var j = 0; j < math.size(md.qmu.adjacency)._data[1]; ++j) {
+            md.qmu.adjacency.subset(math.index(i,j), md.qmu.adjacency.subset(math.index(i,j)) | md.qmu.adjacency.subset(math.index(j,i)));
+        }
+    }
+    //[tempadj.forEach(function(x, idx) { md.qmu.adjacency.forEach(function(y, jdx) { console.log(idx, jdx); return md.qmu.adjacency.subset(math.index(idx, jdx), md.qmu.adjacency.subset(math.index(idx, jdx)) );})})];
+
+    //now, build vwgt:
+    areas=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y);
+
+    //get node connectivity
+    md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+
+    connectivity=md.mesh.vertexconnectivity.map(function(row) { return row.slice(0,row.length-1); });
+    pos=[];
+    for (var i = 0; i < connectivity.length; ++i) {
+        if ((connectivity[i] !== 0)) {
+                pos.push(i);
+        }
+    }
+
+    console.log(areas);
+
+    var tempconn = pos.map(function(val, idx) { return connectivity[val]; });
+
+    pos.forEach(function(val, idx) {
+        connectivity[val] = areas[connectivity[val]]/3;
+    });
+
+    md.qmu.vertex_weight=math.sum(connectivity);
+
+    return md;
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/basalforcings.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/basalforcings.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/basalforcings.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/basalforcings.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/calving.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/calving.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/calving.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/calving.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/contourenvelope.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/contourenvelope.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/contourenvelope.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/parameterization/contourenvelope.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/damage.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/damage.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/damage.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/damage.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/flowequation.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/flowequation.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/flowequation.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/flowequation.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/friction.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/friction.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/friction.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/friction.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/geometry.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/geometry.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/geometry.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/geometry.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/hydrologyshreve.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/hydrologyshreve.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/hydrologyshreve.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/hydrologyshreve.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/initialization.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/initialization.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/initialization.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/initialization.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/inversion.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/inversion.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/inversion.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/inversion.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/issm-binaries.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/issm-binaries.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/issm-binaries.js	(revision 21239)
@@ -0,0 +1,12024 @@
+function ArrayMax(array){ //{{{
+	return Math.max.apply(null,array);
+} //}}}
+function ArrayMax2D(array){ //{{{
+	
+	var max=0;
+
+	for (var i=0;i<array.length;i++){
+		var subarray=array[i];
+		max=Math.max(max,ArrayMax(subarray));
+	}
+
+	return max;
+} //}}}
+function ArrayMin(array){ //{{{
+	return Math.min.apply(null,array);
+} //}}}
+function ArraySum(array){ //{{{
+	var sum=0;
+	for(var i=0;i<array.length;i++)sum+=array[i];
+	return sum;
+} //}}}
+function ArrayXPY(){ //{{{
+    if (arguments.length<2)throw Error("ArrayXPY error message: sum has to be for at least two arrays!");
+
+	//check internal consistency of arrays provided!: 
+	var firstarray=arguments[0];
+	var firstsize=firstarray.length;
+	
+	for(var a=1;a<arguments.length;a++){
+		var array=arguments[a];
+		if(array.length!=firstsize)throw Error("ArrayXPY error message: arrays provided as arguments are not of the same length!");
+	}
+
+	//do the sum:
+	var sum=NewArrayFill(firstsize,0);
+	for(var a=0;a<arguments.length;a++){
+		var array=arguments[a];
+		for(var i=0;i<array.length;i++){
+			sum[i]+=array[i];
+		}
+	}
+	return sum;
+
+} //}}}
+function ArrayOr(){ //{{{
+    if (arguments.length<2)throw Error("ArrayOr error message: sum has to be for at least two arrays!");
+
+	//check internal consistency of arrays provided!: 
+	var firstarray=arguments[0];
+	var firstsize=firstarray.length;
+	
+	for(var a=1;a<arguments.length;a++){
+		var array=arguments[a];
+		if(array.length!=firstsize)throw Error("ArrayOr error message: arrays provided as arguments are not of the same length!");
+	}
+
+	//do the or:
+	var or=NewArrayFill(firstsize,0);
+	for(var a=0;a<arguments.length;a++){
+		var array=arguments[a];
+		for(var i=0;i<array.length;i++){
+			or[i] = or[i] | array[i];
+		}
+	}
+	return or;
+
+} //}}}
+function ArrayMin2D(array){ //{{{
+	
+	var min=ArrayMax2D(array);
+
+	for (var i=0;i<array.length;i++){
+		var subarray=array[i];
+		min=Math.min(min,ArrayMin(subarray));
+	}
+
+	return min;
+} //}}}
+function ListToMatrix(list, elementsPerSubArray) { //{{{
+	var matrix = [], i, k;
+
+	for (i = 0, k = -1; i < list.length; i++) {
+		if (i % elementsPerSubArray === 0) {
+			k++;
+			matrix[k] = [];
+		}
+
+		matrix[k].push(list[i]);
+	}
+
+	return matrix;
+} //}}}
+function MatrixToList(matrixin) { //{{{
+
+	var matrix=matrixin;
+
+	if (!IsArray(matrix[0])) return matrix;
+	else{
+		var width = matrix[0].length;
+		var length = matrix.length;
+		var list= new Array(width*length);
+
+		for(var i=0;i<length;i++){
+			for(var j=0;j<width;j++){
+				list[i*width+j]=matrix[i][j];
+			}
+		}
+		return list;
+	}
+} //}}}
+function IsArray(object) { //{{{
+
+	var type=Object.prototype.toString.call( object );
+	if( type === '[object Array]' ) return 1;
+	if( type === '[object Float64Array]' ) return 1;
+	if( type === '[object Float32Array]' ) return 1;
+	if( type === '[object Int32Array]' ) return 1;
+	if( type === '[object Int16Array]' ) return 1;
+	if( type === '[object Uint32Array]' ) return 1;
+	if( type === '[object Uint16Array]' ) return 1;
+	if( type === '[object Uint8Array]' ) return 1;
+	return 0;
+
+} //}}}
+function ArrayNot(array) { //{{{
+
+	var notarray=array;
+	for (var i=0;i<array.length;i++)notarray[i]=-array[i];
+	return notarray;
+} //}}}
+function ArrayCopy(array) { //{{{
+
+	var copy=[];
+	for(var i=0;i<array.length;i++)copy[i]=array[i];
+	return copy;
+} //}}}
+function ArrayPow(array,coefficient) { //{{{
+
+	var powarray=array;
+	for (var i=0;i<array.length;i++)powarray[i]=Math.pow(array[i],coefficient);
+	return powarray;
+} //}}}
+function ArraySqrt(array) { //{{{
+
+	var sqrtarray=array;
+	for (var i=0;i<array.length;i++)sqrtarray[i]=Math.sqrt(array[i]);
+	return sqrtarray;
+} //}}}
+function ArrayScale(array,alpha) { //{{{
+
+	for (var i=0;i<array.length;i++)array[i]=array[i]*alpha;
+
+} //}}}
+function ArrayMag(array1,array2) { //{{{
+
+	var arraymag=NewArrayFill(array1.length,0);
+	for (var i=0;i<array1.length;i++)arraymag[i]=Math.sqrt(Math.pow(array1[i],2)+Math.pow(array2[i],2));
+	return arraymag;
+} //}}}
+function ArrayAnyNaN(array) { //{{{
+
+    if(IsArray(array[0])){
+        for(var i=0;i<array.length;i++){
+            for(var j=0;j<array[0].length;j++){
+                if (isNaN(array[i][j])) return 1;
+            }
+        }
+    }
+    else{
+        for(var i=0;i<array.length;i++){
+            if (isNaN(array[i])) return 1;
+        }
+    }
+    return 0;
+} //}}}
+function ArrayUnique(arr) { //{{{
+
+	return arr.reverse().filter(function (e, i, arr) {
+		    return arr.indexOf(e, i+1) === -1;
+	}).reverse();
+} //}}}
+function ArraySort(array) { //{{{
+
+	return array.sort(function(a, b) {
+		return a - b;
+	});
+
+} //}}}
+function ArrayAnyEqual(array,value) { //{{{
+	
+	if(!isNaN(value)){
+		for(var i=0;i<array.length;i++){
+			if (array[i]==value)return 1;
+		}
+	}
+	else{
+		for(var i=0;i<array.length;i++){
+			if (isNaN(array[i]))return 1;
+		}
+	}
+	return 0;
+} //}}}
+function ArrayAnyBelowOrEqual(array,value) { //{{{
+
+	for(var i=0;i<array.length;i++){
+		if (array[i]<=value)return 1;
+	}
+	return 0;
+} //}}}
+function ArrayAnyBelowStrict(array,value) { //{{{
+
+	for(var i=0;i<array.length;i++){
+		if (array[i]<value)return 1;
+	}
+	return 0;
+} //}}}
+function ArrayAnyAboveOrEqual(array,value) { //{{{
+
+	for(var i=0;i<array.length;i++){
+		if (array[i]>=value)return 1;
+	}
+	return 0;
+} //}}}
+function ArrayAnyAboveStrict(array,value) { //{{{
+
+	for(var i=0;i<array.length;i++){
+		if (array[i]>value)return 1;
+	}
+	return 0;
+} //}}}
+function ArrayAnd(array1,array2) { //{{{
+
+	var array=array1;
+	for (var i=0;i<array1.length;i++)array[i]=array1[i] & array2[i];
+	return array;
+} //}}}
+function ArrayIsMember(array1,array2) { //{{{
+
+	var array=NewArrayFill(array1.length,0);
+	for (var i=0;i<array1.length;i++){
+		for(var j=0;j<array2.length;j++){
+			if (array1[i] == array2[j]){
+				array[i]=1;
+				break;
+			}
+		}
+	}
+	return array;
+} //}}}
+function NewArrayFill(size,value) { //{{{
+
+	return new Array(size).fill(value);
+} //}}}
+function NewArrayFillIncrement(size,start,increment) { //{{{
+
+	var array=new Array(size); 
+
+	for(var i=0;i<size;i++){
+		array[i]=start+i*increment;
+	}
+
+	return array;
+} //}}}
+function ArrayFind(array,value) { //{{{
+	
+	//find number of indices
+	var count=0;
+	for (var i=0;i<array.length;i++)if(array[i]==value)count++;
+
+	//allocate:
+	var indices= NewArrayFill(count,0);
+
+	//fill in:
+	count=0;
+	for (var i=0;i<array.length;i++){
+		if(array[i]==value){
+			indices[count]=i;
+			count++;
+		}
+	}
+	return indices;
+} //}}}
+function ArrayFindNot(array,value) { //{{{
+	
+	//find number of indices
+	var count=0;
+	for (var i=0;i<array.length;i++)if(array[i]!=value)count++;
+
+	//allocate:
+	var indices= NewArrayFill(count,0);
+
+	//fill in:
+	count=0;
+	for (var i=0;i<array.length;i++){
+		if(array[i]!=value){
+			indices[count]=i;
+			count++;
+		}
+	}
+	return indices;
+} //}}}
+function Create2DArray(rows,cols) { //{{{
+	var arr = [];
+
+	for (var i=0;i<rows;i++) {
+		arr[i] = new Array(cols);
+	}
+
+	return arr;
+} //}}}
+function MapIsEmpty(map) { //{{{
+	for (var key in map){
+		if(map.hasOwnProperty(key)){
+			return false;
+		}
+	}
+	return true;
+} //}}}
+function clone(obj) {//{{{
+	
+	var copy;
+
+	// Handle the 3 simple types, and null or undefined
+	if (null == obj || "object" != typeof obj) return obj;
+
+	// Handle Date
+	if (obj instanceof Date) {
+		copy = new Date();
+		copy.setTime(obj.getTime());
+		return copy;
+	}
+
+	// Handle Array
+	if (obj instanceof Array) {
+		copy = [];
+		for (var i = 0, len = obj.length; i < len; i++) {
+			copy[i] = clone(obj[i]);
+		}
+		return copy;
+	}
+
+	// Handle Object
+	if (obj instanceof Object) {
+		copy = {};
+		for (var attr in obj) {
+			if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);
+		}
+		return copy;
+	}
+
+	throw new Error("Unable to copy obj! Its type isn't supported.");
+} //}}}
+function FloatFix(pointer,size) {//{{{
+
+	var buffer=new Float64Array(size);
+	for(var i=0;i<size;i++)buffer[i]=pointer[i];
+	return buffer;
+
+
+} //}}}
+function NullFix(pointer,value) {//{{{
+
+	if(pointer==null)return value;
+	else{
+		//check that the pointer values are not null: 
+		if(IsArray(pointer)){
+			if(IsArray(pointer[0])){
+				for(var i=0;i<pointer.length;i++){
+					for(var j=0;j<pointer[0].length;j++){
+						if(pointer[i][j]==null)pointer[i][j]=value;
+					}
+				}	
+			}
+			else{
+				for(var i=0;i<pointer.length;i++){
+					if(pointer[i]==null)pointer[i]=value;
+				}
+			}
+		}
+		return pointer;
+	}
+
+} //}}}
+function SetIceShelfBC(md) { 
+//SETICESHELFBC - Create the boundary conditions for stressbalance and thermal models for a  Ice Shelf with Ice Front
+//
+//   Neumann BC are used on the ice front (an ANRGUS contour around the ice front
+//   must be given in input)
+//   Dirichlet BC are used elsewhere for stressbalance
+//
+//   Usage:
+//      md=SetIceShelfBC(md,varargin)
+//
+//   Example:
+//      SetIceShelfBC(md);
+//      SetIceShelfBC(md,'Front.exp');
+//
+//   See also: SETICESHEETBC, SETMARINEICESHEETBC
+
+	//node on Dirichlet (boundary and ~icefront)
+	if (arguments.length==2){
+		icefront=arguments[1];
+		nodeinsideicefront=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,icefront,'node',2);
+		nodeonicefront=ArrayAnd(md.mesh.vertexonboundary,nodeinsideicefront);
+	}
+	else if(arguments.length==1){
+		nodeonicefront=NewArrayFill(md.mesh.numberofvertices,0);
+	}
+	else{
+		throw Error('SetIceShelfBC usage error');
+	}
+
+	md.stressbalance.spcvx=NewArrayFill(md.mesh.numberofvertices,NaN); 
+	md.stressbalance.spcvy=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.stressbalance.spcvz=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.stressbalance.referential=Create2DArray(md.mesh.numberofvertices,6);
+	for(var i=0;i<md.mesh.numberofvertices;i++)for(var j=0;j<6;j++)md.stressbalance.referential[i][j]=NaN;
+	md.stressbalance.loadingforce=NewArrayFill(md.mesh.numberofvertices,0);
+
+	//Ice front position: 
+	pos=ArrayFind(nodeonicefront,1);
+	for(var i=0;i<pos.length;i++)md.mask.ice_levelset[pos[i]]=0;
+
+	//First find segments that are not completely on the front
+	if (md.mesh.elementtype() === 'Penta'){
+		numbernodesfront=4;
+	}
+	else if (md.mesh.elementtype() === 'Tria'){
+		numbernodesfront=2;
+	}
+	else{
+		throw Error('mesh type not supported yet');
+	}
+	var obs=false;
+	if((md.inversion.vx_obs.length == md.mesh.numberofvertices) & (md.inversion.vy_obs.length==md.mesh.numberofvertices))obs=true;
+
+	if(obs==true){
+		console.log('      boundary conditions for stressbalance model: setting spc as observed velocities');
+	}
+	else{
+		console.log('      boundary conditions for stressbalance model: setting spc as zero');
+	}
+	for(var i=0;i<md.mesh.segments.length;i++){
+		var sum=0;
+		for (var j=0;j<numbernodesfront;j++) sum+=md.mask.ice_levelset[md.mesh.segments[i][j]-1];
+		if(sum!=0){
+			for (var j=0;j<numbernodesfront;j++){
+				if(obs==false){
+					md.stressbalance.spcvx[md.mesh.segments[i][j]-1]=0;
+					md.stressbalance.spcvy[md.mesh.segments[i][j]-1]=0;
+				}
+				else{
+					md.stressbalance.spcvx[md.mesh.segments[i][j]-1]=md.inversion.vx_obs[md.mesh.segments[i][j]-1];
+					md.stressbalance.spcvy[md.mesh.segments[i][j]-1]=md.inversion.vy_obs[md.mesh.segments[i][j]-1];
+				}
+				md.stressbalance.spcvz[md.mesh.segments[i][j]-1]=0;
+
+			}
+		}
+	}
+
+	//Initialize surface and basal forcings
+	md.smb.initialize(md);
+	md.basalforcings.initialize(md);
+
+	//Deal with other boundary conditions
+	if (isNaN(md.balancethickness.thickening_rate)){
+		md.balancethickness.thickening_rate=NewArrayFill(md.mesh.numberofvertices,0);
+		console.log('      no balancethickness.thickening_rate specified: values set as zero');
+	}
+		
+	md.masstransport.spcthickness=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.balancethickness.spcthickness=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.damage.spcdamage=NewArrayFill(md.mesh.numberofvertices,NaN);
+
+	if (md.initialization.temperature.length==md.mesh.numberofvertices){
+		md.thermal.spctemperature=NewArrayFill(md.mesh.numberofvertices,NaN);
+		if ('vertexonsurface' in md.mesh){
+			pos=ArrayFind(md.mesh.vertexonsurface,1);
+			for(var i=0;i<pos.length;i++)md.thermal.spctemperature[i]=md.initialization.temperature[i]; //impose observed temperature on surface
+		}
+		if (md.basalforcings.geothermalflux.length != md.mesh.numberofvertices){
+			md.basalforcings.geothermalflux=NewArrayFill(md.mesh.numberofvertices,0);
+		}
+	}
+	else{
+		console.log('      no thermal boundary conditions created: no observed temperature found');
+	}
+}
+//AUTODIFF class definition
+//
+//   Usage:
+//      autodiff=new autodiff();
+
+function autodiff (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		this.obufsize     = 524288;
+		this.lbufsize     = 524288;
+		this.cbufsize     = 524288;
+		this.tbufsize     = 524288;
+		this.gcTriggerRatio=2.0;
+		this.gcTriggerMaxSize=65536;
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   automatic differentiation parameters:'));
+		fielddisplay(this,'isautodiff','indicates if the automatic differentiation is activated');
+		fielddisplay(this,'dependents','list of dependent variables');
+		fielddisplay(this,'independents','list of independent variables');
+		fielddisplay(this,'driver',"ADOLC driver ('fos_forward' or 'fov_forward')");
+		fielddisplay(this,'obufsize','Number of operations per buffer (==OBUFSIZE in usrparms.h)');
+		fielddisplay(this,'lbufsize','Number of locations per buffer (==LBUFSIZE in usrparms.h)');
+		fielddisplay(this,'cbufsize','Number of values per buffer (==CBUFSIZE in usrparms.h)');
+		fielddisplay(this,'tbufsize','Number of taylors per buffer (<=TBUFSIZE in usrparms.h)');
+		fielddisplay(this,'gcTriggerRatio','free location block sorting/consolidation triggered if the ratio between allocated and used locations exceeds gcTriggerRatio');
+		fielddisplay(this,'gcTriggerMaxSize','free location block sorting/consolidation triggered if the allocated locations exceed gcTriggerMaxSize');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "autodiff";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			//Early return 
+			if (!this.isautodiff) return; 
+
+			//Driver value:
+			checkfield(md,'fieldname','autodiff.driver','values',['fos_forward','fov_forward','fov_forward_all','fos_reverse','fov_reverse','fov_reverse_all']);
+			
+			//buffer values: 
+			checkfield(md,'fieldname','autodiff.obufsize','>=',16);
+			checkfield(md,'fieldname','autodiff.lbufsize','>=',16);
+			checkfield(md,'fieldname','autodiff.cbufsize','>=',16);
+			checkfield(md,'fieldname','autodiff.tbufsize','>=',16);
+			checkfield(md,'fieldname','autodiff.gcTriggerRatio','>=',0);
+			checkfield(md,'fieldname','autodiff.gcTriggerMaxSize','>=',65536);
+
+			//go through our dependents and independents and check consistency: 
+			for (var i=0;i<this.dependents.length;i++){
+				dep=this.dependents[i];
+				dep.checkconsistency(md,solution,analyses);
+			}
+			for (var i=0;i<this.independents.length;i++){
+				indep=this.independents[i];
+				indep.checkconsistency(md,i,solution,analyses,this.driver);
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			WriteData(fid,prefix,'object',this,'fieldname','isautodiff','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','driver','format','String');
+
+			//early return
+			if (!this.isautodiff){
+				WriteData(fid,prefix,'data',false,'name','md.autodiff.mass_flux_segments_present','format','Boolean');
+				WriteData(fid,prefix,'data',false,'name','md.autodiff.keep','format','Boolean');
+				return;
+			}
+
+			//buffer sizes {{{
+			WriteData(fid,prefix,'object',this,'fieldname','obufsize','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','lbufsize','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','cbufsize','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','tbufsize','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','gcTriggerRatio','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','gcTriggerMaxSize','format','Double');
+			//}}}
+			//process dependent variables {{{
+			num_dependent_objects=this.dependents.length;
+			WriteData(fid,prefix,'data',num_dependent_objects,'name','md.autodiff.num_dependent_objects','format','Integer');
+
+			if(num_dependent_objects){
+				var names=[];
+				types=NewArrayFill(num_dependent_objects,0);
+				indices=NewArrayFill(num_dependent_objects,0);
+
+				for (var i=0;i<num_dependent_objects;i++){
+					dep=this.dependents[i];
+
+					names.push(dep.name);
+					types[i]=dep.typetoscalar();
+					indices[i]=dep.index;
+				}
+				WriteData(fid,prefix,'data',names,'name','md.autodiff.dependent_object_names','format','StringArray');
+				WriteData(fid,prefix,'data',types,'name','md.autodiff.dependent_object_types','format','IntMat','mattype',3);
+				WriteData(fid,prefix,'data',indices,'name','md.autodiff.dependent_object_indices','format','IntMat','mattype',3);
+			}
+			//}}}
+			//process independent variables {{{
+			num_independent_objects=this.independents.length;
+			WriteData(fid,prefix,'data',num_independent_objects,'name','md.autodiff.num_independent_objects','format','Integer');
+
+			if(num_independent_objects){
+				names=NewArrayFill(num_independent_objects,0);
+				types=NewArrayFill(num_independent_objects,0);
+
+				for (var i=0;i<num_independent_objects;i++){
+					indep=this.independents[i];
+
+					names[i]=StringToEnum(indep.name);
+					types[i]=indep.typetoscalar();
+				}
+				WriteData(fid,prefix,'data',names,'name','md.autodiff.independent_object_names','format','IntMat','mattype',3);
+				WriteData(fid,prefix,'data',types,'name','md.autodiff.independent_object_types','format','IntMat','mattype',3);
+			}
+			//}}}
+			//if driver is fos_forward, build index:  {{{
+			if (this.driver == 'fos_forward'){
+				var index=0;
+
+				for (var i=0;i<num_independent_objects;i++){
+					indep=this.independents[i];
+					if (!(isNaN(indep.fos_forward_index))){
+						index=index+indep.fos_forward_index;
+						break;
+					}
+					else{
+						if (indep.type=='scalar') index=index+1;
+						else index=index+indep.nods;
+					}
+				}
+				index=index-1; //get c-index numbering going
+				WriteData(fid,prefix,'data',index,'name','md.autodiff.fos_forward_index','format','Integer');
+			}
+			//}}}
+			//if driver is fos_reverse, build index:  {{{
+			if (this.driver  == 'fos_reverse'){
+				var index=0;
+
+				for (var i=0;i<num_dependent_objects;i++){
+					dep=this.dependents[i];
+					if (!(isNaN(dep.fos_reverse_index))){
+						index=index+dep.fos_reverse_index;
+						break;
+					}
+					else{
+						if (dep.type =='scalar') index=index+1;
+						else index=index+dep.nods;
+					}
+				}
+				index=index-1; //get c-index numbering going
+				WriteData(fid,prefix,'data',index,'name','md.autodiff.fos_reverse_index','format','Integer');
+			}
+			//}}}
+			//if driver is fov_forward, build indices:  {{{
+			if (this.driver == 'fov_forward'){
+				var indices=0;
+
+				for (var i=0;i<num_independent_objects;i++){
+					indep=this.independents[i];
+					if (!indep.fos_forward_index.length){
+						indices=indices+indep.fov_forward_indices;
+						break;
+					}
+					else{
+						if (indep.type =='scalar') indices=indices+1;
+						else indices=indices+indep.nods;
+					}
+				}
+				indices=indices-1; //get c-indices numbering going
+				WriteData(fid,prefix,'data',indices,'name','md.autodiff.fov_forward_indices','format','IntMat','mattype',3);
+			}
+			//}}}
+			//deal with mass fluxes:  {{{
+			mass_flux_segments=[];
+			for (var i=0;i<num_dependent_objects;i++){
+				dep=this.dependents[i];
+				if (dep.name =='MassFlux'){
+					mass_flux_segments.push(dep.segments);
+				}
+			}
+			if (mass_flux_segments.length){
+				WriteData(fid,prefix,'data',mass_flux_segments,'name','md.autodiff.mass_flux_segments','format','MatArray');
+				flag=true;
+			}
+			else flag=false;
+			WriteData(fid,prefix,'data',flag,'name','md.autodiff.mass_flux_segments_present','format','Boolean');
+			//}}}
+			//deal with trace keep on: {{{
+			keep=false;
+
+			//From ADOLC userdoc: 
+			// The optional integer argument keep of trace on determines whether the numerical values of all active variables are 
+			// recorded in a buffered temporary array or file called the taylor stack. This option takes effect if keep = 1 and 
+			// prepares the scene for an immediately following gradient evaluation by a call to a routine implementing the reverse 
+			// mode as described in the Section 4 and Section 5. 
+			//
+
+			if (this.driver.length<=3) keep=false; //there is no "_reverse" string within the driver string: 
+			else{
+				if (this.driver.splice(4) == '_reverse') keep=true;
+				else keep=false;
+			}
+			WriteData(fid,prefix,'data',keep,'name','md.autodiff.keep','format','Boolean');
+			//}}}
+		}//}}}
+		this.fix=function() { //{{{
+			this.obufsize=NullFix(this.obufsize,NaN);
+			this.lbufsize=NullFix(this.lbufsize,NaN);
+			this.cbufsize=NullFix(this.cbufsize,NaN);
+			this.tbufsize=NullFix(this.tbufsize,NaN);
+			this.gcTriggerRatio=NullFix(this.gcTriggerRatio,NaN);
+			this.gcTriggerMaxSize=NullFix(this.gcTriggerMaxSize,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.isautodiff   = false;
+	this.dependents   = [];
+	this.independents = [];
+	this.driver       = 'fos_forward';
+	this.obufsize     = NaN;
+	this.lbufsize     = NaN;
+	this.cbufsize     = NaN;
+	this.tbufsize     = NaN;
+	this.gcTriggerRatio = NaN;
+	this.gcTriggerMaxSize = NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
+//BALANCETHICKNESS class definition
+//
+//   Usage:
+//      balancethickness=new balancethickness();
+
+function balancethickness (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//Type of stabilization used
+		this.stabilization=1;
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   balance thickness solution parameters:'));
+
+		fielddisplay(this,'spcthickness','thickness constraints (NaN means no constraint) [m]');
+		fielddisplay(this,'thickening_rate','ice thickening rate used in the mass conservation (dh/dt) [m/yr]');
+		fielddisplay(this,'stabilization',"0: None, 1: SU, 2: SSA's artificial diffusivity, 3:DG");
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "balancethickness";
+
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses){ // {{{
+			//Early return
+			if (solution!=BalancethicknessSolutionEnum())return;
+
+			checkfield(md,'fieldname','balancethickness.spcthickness');
+			checkfield(md,'fieldname','balancethickness.thickening_rate','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','balancethickness.stabilization','size',[1, 1],'values',[0, 1, 2 ,3]);
+			//checkfield(md,'fieldname','balancethickness.omega','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1,'>=',0);
+		} //}}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var yts=365.0*24.0*3600.0;
+
+			WriteData(fid,prefix,'object',this,'fieldname','spcthickness','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','thickening_rate','format','DoubleMat','mattype',1,'scale',1/yts);
+			WriteData(fid,prefix,'object',this,'fieldname','stabilization','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','omega','format','DoubleMat','mattype',1);
+
+		}//}}}
+		this.fix=function() { //{{{
+			this.spcthickness=NullFix(this.spcthickness,NaN);
+			this.thicknening_rate=NullFix(this.thicknening_rate,NaN);
+			this.omega=NullFix(this.omega,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.spcthickness      = NaN;
+	this.thickening_rate   = NaN;
+	this.stabilization     = 0;
+	this.omega             = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
+//BASAL FORCINGS class definition
+//
+//   Usage:
+//      basalforcings=basalforcings();
+
+function basalforcings(){
+	//methods
+	this.setdefaultparameters = function() {//{{{
+
+	} // }}}
+	this.disp = function(){ // {{{
+		console.log(sprintf('   basal forcings parameters:'));
+
+		fielddisplay(this,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+		fielddisplay(this,'floatingice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+		fielddisplay(this,'geothermalflux','geothermal heat flux [W/m^2]');
+
+	} // }}}
+	this.classname = function(){ // {{{
+		return "basalforcings";
+	} // }}}
+		this.initialize = function (md){ // {{{
+
+			if (isNaN(this.groundedice_melting_rate)){
+				this.groundedice_melting_rate=NewArrayFill(md.mesh.numberofvertices,0);
+				console.log('      no basalforcings.groundedice_melting_rate specified: values set as zero');
+			}
+
+			if (isNaN(this.floatingice_melting_rate)){
+				this.floatingice_melting_rate=NewArrayFill(md.mesh.numberofvertices,0);
+				console.log('      no basalforcings.floatingice_melting_rate specified: values set as zero');
+			}
+
+		} // }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			if(ArrayAnyEqual(ArrayIsMember(MasstransportAnalysisEnum(),analyses),1)){
+				if (!(solution==TransientSolutionEnum() & md.trans.ismasstransport==0)){
+					checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+					checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				}
+			}
+
+			if(ArrayAnyEqual(ArrayIsMember(BalancethicknessAnalysisEnum(),analyses),1)){
+				checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			}
+			if(ArrayAnyEqual(ArrayIsMember(ThermalAnalysisEnum(),analyses),1)){
+				if (!(solution==TransientSolutionEnum() & md.trans.isthermal==0)){
+					checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+					checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+					checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+				}
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var yts=365.0*24.0*3600.0;
+
+			WriteData(fid,prefix,'name','md.basalforcings.model','data',FloatingMeltRateEnum(),'format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,prefix,'object',this,'fieldname','floatingice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,prefix,'object',this,'fieldname','geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties
+	//{{{
+	this.groundedice_melting_rate  = NaN;
+	this.floatingice_melting_rate  = NaN;
+	this.geothermalflux            = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
+//CALVING class definition
+//
+//   Usage:
+//      calving=new calving();
+
+function calving (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   Calving parameters:'));
+		fielddisplay(this,'calvingrate','calving rate at given location [m/a]');
+		fielddisplay(this,'meltingrate','melting rate at given location [m/a]');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "calving";
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) { // {{{
+		//Early return
+		if (solution!=TransientSolutionEnum() | md.trans.ismovingfront==0) return;
+
+		checkfield(md,'fieldname','calving.calvingrate(1:md.mesh.numberofvertices,:)','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','calving.meltingrate(1:md.mesh.numberofvertices,:)','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+	} //}}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			var yts=365.0*24.0*3600.0;
+			WriteData(fid,prefix,'name','md.calving.law','data',DefaultCalvingEnum(),'format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','calvingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts);
+			WriteData(fid,prefix,'object',this,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts);
+		}//}}}
+		this.fix=function() { //{{{
+			this.calvingrate=NullFix(this.calvingrate,NaN);
+			this.meltingrate=NullFix(this.meltingrate,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.calvingrate   = NaN;
+	this.meltingrate   = NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
+//GENERIC class definition
+//
+//   Usage:
+//      generic=new generic();
+
+function generic (){
+	//properties 
+	// {{{
+	var args = Array.prototype.slice.call(arguments);
+	var options = new pairoptions(args.slice(0,args.length));
+
+	this.url=options.getfieldvalue('url','');
+	this.np=options.getfieldvalue('np',3);
+	this.codeversion=options.getfieldvalue('codeversion',20486);
+	this.codepath=options.getfieldvalue('codepath','issmdir/bin');
+	this.executionpath=options.getfieldvalue('executionpath','issmdir/execution');
+	//}}}
+	//methods
+	this.disp= function(){// {{{
+		console.log(sprintf('   generic class echo:'));
+		console.log(sprintf('    url: "%s"',this.url));
+		console.log(sprintf('    np: %i',this.np));
+		console.log(sprintf('    codepath: "%s"',this.codepath));
+		console.log(sprintf('    executionpath: "%s"',this.executionpath));
+	}// }}}
+	this.classname= function(){// {{{
+		return "generic";
+	}// }}}
+	this.checkconsistency = function (md,solution,analyses) { //{{{
+		if (cluster.np<1){
+			md.checkmessage('number of processors should be at least 1');
+		}
+		if (isNaN(cluster.np)){
+			md.checkmessage('number of processors should not be NaN!');
+		}
+	} //}}}
+	this.BuildQueueScript = function (cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) { // {{{
+
+			//write queuing script 
+			//what is the executable being called? 
+			executable='issm.exe';
+
+			fid=fopen(modelname+'.queue','w');
+			fprintf(fid,'#!%s\n',cluster.shell);
+			fprintf(fid,'mpiexec -np %i %s/%s %s %s %s 2> %s.errlog >%s.outlog ',cluster.np,cluster.codepath,executable,EnumToString(solution),cluster.executionpath+'/'+dirname,modelname,modelname,modelname);					
+			fclose(fid);
+	} //}}}
+	this.UploadAndRun = function (md,callbackfunction,fid,toolkitsstring,solutionstring,name,runtimename) { //{{{
+
+		var request = new XMLHttpRequest();
+		$(".run-button").html(sprintf("%-16s", "CONNECTING...")).prop("disabled", true);
+		request.position = 0; //Keep track of current parsing position in repsonseText
+		request.timeout = 30000;
+		request.ontimeout = function (event) { //{{{
+			$(".run-button").html(sprintf("%-16s", "RUN")).prop("disabled", false);
+		} //}}}
+		request.upload.onprogress = function(event) { //{{{
+			var progress = (event.loaded / event.total * 100).toFixed(0);
+			$(".run-button").html(sprintf("%-20s", "UPLOADING: " + progress + "%"));
+        } //}}}
+		request.onprogress = function (event) { //{{{
+			//Receive updates by parsing message length as a 32-bit hex string of form 0x*09ABCDEF))
+			var startIndex = request.position;
+			var endIndex = request.position + 10;
+			if (request.responseText.length >= endIndex) { //Ensure entire hex string is loaded
+				var chunkSize = parseInt(request.responseText.slice(startIndex, endIndex));
+				startIndex = endIndex;
+				endIndex = startIndex + chunkSize;
+				if (chunkSize >= 1024) { //Arbitrary maximium size of message (Must be below minimium size of model results)
+					$(".run-button").html(sprintf("%-20s", "DOWNLOADING: " + ((request.responseText.length - request.position) / chunkSize * 100).toFixed(0) + "%")).prop("disabled", true);
+				}
+				else if (request.responseText.length >= endIndex) { //Ensure entire chunk is loaded
+					var responseChunk = request.responseText.slice(startIndex, endIndex);
+					$(".run-button").html(responseChunk);
+					request.position = endIndex;
+				}
+			}
+		}; //}}}
+		request.onload = function (event) { //{{{
+			//get context to this.str2ab to avoid duplciation
+			function str2ab(str) {
+				var buf = new Uint8Array(str.length);
+				for (var i=0, strLen=str.length; i < strLen; i++) {
+					buf[i] = str.charCodeAt(i);
+				}
+				return buf;
+			}
+			var responseText = request.responseText.slice(request.position + 10).replace(/\s/g, '');
+            var buffer = str2ab(window.atob(responseText));
+			var returnBuffer = new Uint8Array(buffer);
+			var returnBuffer_size = returnBuffer.byteLength;
+			try {
+				md.results = parseresultsfrombuffer(returnBuffer,returnBuffer_size);
+			}
+			catch (e) {
+				console.log(e);
+			}
+			$(".run-button").html(sprintf("%-16s", "RUN")).prop("disabled", false);
+			callbackfunction();
+		}; //}}}
+		
+		var npbuffer = this.str2ab(md.cluster.np.toString());
+		var nplength = new Uint32Array(1);
+		nplength[0] = npbuffer.byteLength;
+		
+		var codeversionbuffer = this.str2ab(md.cluster.codeversion.toString());
+		var codeversionlength = new Uint32Array(1);
+		codeversionlength[0] = codeversionbuffer.byteLength;
+		
+		var runtimenamebuffer = this.str2ab(runtimename);
+		var runtimenamelength = new Uint32Array(1);
+		runtimenamelength[0] = runtimenamebuffer.byteLength;
+		
+		var namebuffer = this.str2ab(name);
+		var namelength = new Uint32Array(1);
+		namelength[0] = namebuffer.byteLength;
+		
+		var toolkitsbuffer = this.str2ab(toolkitsstring);
+		var toolkitslength = new Uint32Array(1);
+		toolkitslength[0] = toolkitsbuffer.byteLength;
+		
+		var solutionbuffer = this.str2ab(solutionstring);
+		var solutionlength = new Uint32Array(1);
+		solutionlength[0] = solutionbuffer.byteLength;
+		
+		var binbuffer = new Uint8Array(fid.rawbuffer()); //seems that 16 array bytes length could be incompatible.
+		var binlength = new Uint32Array(1);
+		binlength[0] = binbuffer.byteLength;
+		
+		var data = new Blob([nplength,npbuffer,codeversionlength,codeversionbuffer,runtimenamelength,runtimenamebuffer,namelength,namebuffer,toolkitslength,toolkitsbuffer,solutionlength,solutionbuffer,binlength,binbuffer]);
+	
+		request.open("POST", this.url, true);
+		request.responseType = 'application/octet-stream';
+		request.send(data);
+		
+	} //}}}
+	this.ab2str = function(buf) { //{{{
+		return String.fromCharCode.apply(null, new Uint16Array(buf));
+	} //}}}
+	this.str2ab = function(str) { //{{{
+		var buf = new Uint8Array(str.length);
+		for (var i=0, strLen=str.length; i < strLen; i++) {
+			buf[i] = str.charCodeAt(i);
+		}
+		return buf;
+	} //}}}
+}
+//LOCAL cluster class definition
+//
+//   Usage:
+//      local=new local();
+
+function local (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   local cluster class echo: []'));
+	}// }}}
+	this.classname= function(){// {{{
+		return "local";
+	}// }}}
+		this.checkconsistency = function (md,solution,analyses) { //{{{
+		} //}}}
+	//properties 
+	// {{{
+	this.setdefaultparameters();
+	//}}}
+}
+//CONSTANTS class definition
+//
+//   Usage:
+//      constants=constants();
+
+function constants() {
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+
+			//acceleration due to gravity (m/s^2)
+			this.g=9.81;
+
+			//Earth's rotation speed 
+			this.omega = 7.292*1e-5;
+
+			//converstion from year to seconds
+			this.yts=365*24*3600;
+
+			//the reference temperature for enthalpy model (cf Aschwanden)
+			this.referencetemperature=223.15;
+		}// }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   Constants parameters:")); 
+			
+			fielddisplay(this,'g','gravitational acceleration [m/s^2]');
+			fielddisplay(this,'omega','angular velocity of Earth [rad/s]');
+			fielddisplay(this,'yts','number of seconds in a year [s/yr]');
+			fielddisplay(this,'referencetemperature','reference temperature used in the enthalpy model [K]');
+
+		} //}}}
+		this.classname = function () { //{{{
+			return "constants";
+
+		} //}}}
+		this.checkconsistency = function(md,solution,analyses) {//% {{{
+
+			checkfield(md,'fieldname','constants.g','>=',0,'size',[1,1]); //We allow 0 for validation tests
+			checkfield(md,'fieldname','constants.omega','>=',0,'size',[1,1]);
+			checkfield(md,'fieldname','constants.yts','>',0,'size',[1,1]);
+			checkfield(md,'fieldname','constants.referencetemperature','size',[1,1]);
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','g','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','yts','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','referencetemperature','format','Double');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+		this.g                    = 0.;
+		this.omega                = 0.;
+		this.yts                  = 0.;
+		this.referencetemperature = 0.;
+		this.setdefaultparameters();
+		//}}}
+}
+//DAMAGE class definition
+//
+//   Usage:
+//      damage=new damage();
+
+function damage (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		
+		//damage parameters: 
+		this.isdamage=0;
+		this.D=0;
+		this.law=0;
+
+		this.max_damage=1-1e-5; //if damage reaches 1, solve becomes singular, as viscosity becomes nil
+
+		//Type of stabilization used
+		this.stabilization=4;
+
+		//Maximum number of iterations
+		this.maxiter=100;
+
+		//finite element interpolation
+		this.elementinterp='P1';
+
+		//damage evolution parameters 
+		this.stress_threshold=1.3e5;
+		this.kappa=2.8;
+		this.healing=0;
+		this.c1=0;
+		this.c2=0;
+		this.c3=0;
+		this.c4=0;
+		this.equiv_stress=0;
+
+		//output default:
+		this.requested_outputs=['default'];
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   Damage:\n'));
+
+		fielddisplay(this,'isdamage','is damage mechanics being used? {true,false}');
+		if (this.isdamage){
+			fielddisplay(this,'law',"damage law ['0: analytical','1: pralong']");
+			fielddisplay(this,'D','damage tensor (scalar)');
+			fielddisplay(this,'spcdamage','damage constraints (NaN means no constraint)');
+			fielddisplay(this,'max_damage','maximum possible damage (0<=max_damage<1)');
+
+			fielddisplay(this,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG (not working), 4: flux corrected transport');
+			fielddisplay(this,'maxiter','maximum number of non linear iterations');
+			fielddisplay(this,'elementinterp',"interpolation scheme for finite elements {'P1','P2'}");
+			fielddisplay(this,'stress_threshold','stress threshold for damage initiation [Pa]');
+			fielddisplay(this,'kappa','ductility parameter for stress softening and damage');
+			fielddisplay(this,'c1','damage parameter 1');
+			fielddisplay(this,'c2','damage parameter 2');
+			fielddisplay(this,'c3','damage parameter 3');
+			fielddisplay(this,'c4','damage parameter 4');
+			fielddisplay(this,'healing','damage healing parameter');
+			fielddisplay(this,'equiv_stress','0: von Mises, 1: max principal');
+			fielddisplay(this,'requested_outputs','additional outputs requested');
+		}
+	}// }}}
+	this.classname= function(){// {{{
+		return "damage";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+			
+			checkfield(md,'fieldname','damage.isdamage','values',[1,0]);
+			if (this.isdamage){
+				checkfield(md,'fieldname','damage.law','numel',[1],'values',[0,1,2]);
+				checkfield(md,'fieldname','damage.D','>=',0,'<=',this.max_damage,'size',[md.mesh.numberofvertices ,1]);
+				checkfield(md,'fieldname','damage.spcdamage','Inf',1,'timeseries',1);
+				checkfield(md,'fieldname','damage.max_damage','<',1,'>=',0);
+				checkfield(md,'fieldname','damage.stabilization','numel',[1],'values',[0, 1, 2, 4]);
+				checkfield(md,'fieldname','damage.maxiter','>=0',0);
+				checkfield(md,'fieldname','damage.elementinterp','values',['P1','P2']);
+				checkfield(md,'fieldname','damage.stress_threshold','>=',0);
+				checkfield(md,'fieldname','damage.kappa','>',1);
+				checkfield(md,'fieldname','damage.healing','>=',0);
+				checkfield(md,'fieldname','damage.c1','>=',0);
+				checkfield(md,'fieldname','damage.c2','>=',0);
+				checkfield(md,'fieldname','damage.c3','>=',0);
+				checkfield(md,'fieldname','damage.c4','>=',0);
+				checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0, 1]);
+				checkfield(md,'fieldname','damage.requested_outputs','stringrow',1);
+			}
+			else if (this.law!=0){
+				if (solution==DamageEvolutionSolutionEnum()){
+					throw Error('Invalid evolution law (md.damage.law) for a damage solution');
+				}
+			}
+		} //}}}
+		this.marshall=function(md,prefix,fid) { //{{{
+		
+			WriteData(fid,prefix,'object',this,'fieldname','isdamage','format','Boolean');
+			if (this.isdamage){
+				WriteData(fid,prefix,'object',this,'fieldname','law','format','Integer');
+				WriteData(fid,prefix,'object',this,'fieldname','D','format','DoubleMat','mattype',1);
+				WriteData(fid,prefix,'object',this,'fieldname','spcdamage','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,prefix,'object',this,'fieldname','max_damage','format','Double');
+
+				WriteData(fid,prefix,'object',this,'fieldname','stabilization','format','Integer');
+				WriteData(fid,prefix,'object',this,'fieldname','maxiter','format','Integer');
+				WriteData(fid,prefix,'name','md.damage.elementinterp','data',StringToEnum(this.elementinterp),'format','Integer');
+				WriteData(fid,prefix,'object',this,'fieldname','stress_threshold','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','kappa','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','c1','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','c2','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','c3','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','c4','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','healing','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','equiv_stress','format','Integer');
+			}
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					outputs.push(this.defaultoutputs(md));
+				}
+			}
+			if (this.isdamage){
+				WriteData(fid,prefix,'data',outputs,'name','md.damage.requested_outputs','format','StringArray');
+			}
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+		this.defaultoutputs = function(md){ //{{{
+
+			if (md.mesh.domaintype() == '2Dhorizontal') return 'DamageDbar';
+			else return 'DamageD';
+
+		}//}}}
+	//properties 
+	// {{{
+	this.isdamage            = 0;
+	this.D                   = NaN;
+	this.law                 = 0;
+	this.spcdamage           = NaN; 
+	this.max_damage          = 0;
+
+	//numerical
+	this.stabilization       = 0;
+	this.maxiter             = 0;
+	this.elementinterp       = '';
+
+	//general parameters for evolution law: 
+	this.stress_threshold    = 0;
+	this.kappa               = 0;
+	this.c1                  = 0;
+	this.c2                  = 0;
+	this.c3                  = 0;
+	this.c4                  = 0;
+	this.healing             = 0;
+	this.equiv_stress		  = 0;
+	this.requested_outputs   = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
+//DEBUG class definition
+//
+//   Usage:
+//      debug=new debug();
+
+function debug (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.classname= function(){// {{{
+		return "debug";
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   debug parameters:'));
+		console.log(sprintf('   debug parameters:'));
+
+		fielddisplay(this,'valgrind','use Valgrind to debug (0 or 1)');
+		fielddisplay(this,'gprof','use gnu-profiler to find out where the time is spent');
+		fielddisplay(this,'profiling','enables profiling (memory, flops, time)');
+
+	}// }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','profiling','format','Boolean');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+
+	//properties 
+	// {{{
+	this.valgrind = false;
+	this.gprof    = false;
+	this.profiling = false;
+	this.setdefaultparameters();
+	//}}}
+}
+//FLAIM class definition
+//
+//   Usage:
+//      flaim=new flaim();
+
+function flaim (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   FLAIM - Flight Line Adaptation using Ice sheet Modeling:')); 
+
+		console.log(sprintf('\n      Input:'));
+		fielddisplay(this,'targets'            ,'name of kml output targets file ');
+		fielddisplay(this,'tracks'             ,'name of kml input tracks file ');
+		fielddisplay(this,'flightreqs'         ,'structure of kml flight requirements (not used yet)');
+		fielddisplay(this,'criterion'          ,'element or nodal criterion for flight path evaluation (metric)');
+
+		console.log(sprintf('\n      Arguments:'));
+		fielddisplay(this,'gridsatequator'     ,'number of grids at equator (determines resolution)');
+		fielddisplay(this,'usevalueordering'   ,'flag to consider target values for flight path evaluation');
+		fielddisplay(this,'split_antimeridian' ,'flag to split polygons on the antimeridian');
+
+		console.log(sprintf('\n      Optimization:'));
+		fielddisplay(this,'path_optimize'     ,'optimize? (default false)');
+		fielddisplay(this,'opt_ndir'     ,['number of directions to test when moving a point.  If this value = 1, a random direction is tested.', 'A value > 1 results in directions equally spaced from [0, 2*PI] being tested.', 'For example, 4 would result in directions [0, PI/2, PI, 3PI/2].']);
+		fielddisplay(this,'opt_dist'     ,'specifies the distance in km (default 25) to move a randomly selected path point on each iteration');
+		fielddisplay(this,'opt_niter'     ,['number of iterations (default 30,000) to run for flightplan optimization', 'i.e. the number of times to randomly select a point and move it.']);
+
+		console.log(sprintf('\n      Output:'));
+		fielddisplay(this,'solution'           ,'name of kml solution file');
+		fielddisplay(this,'quality'            ,'quality of kml solution');
+
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) { // {{{
+
+		//Early return
+		if (solution!=FlaimSolutionEnum()) return;
+
+		checkfield(md,'fieldname','flaim.tracks','file',1);
+		if (isNaN(md.flaim.criterion) | md.flaim.criterion.length==0){
+			checkfield(md,'fieldname','flaim.targets','file',1);
+		}
+		else{
+			checkfield(md,'fieldname','flaim.criterion','numel',[md.mesh.numberofvertices, md.mesh.numberofelements]);
+		}
+	} //}}}
+	//properties 
+	// {{{
+
+	this.targets            = '';
+	this.tracks             = '';
+	this.flightreqs         = {};
+	this.criterion          = NaN;
+	this.gridsatequator     = 200000;
+	this.usevalueordering   = true;
+	this.split_antimeridian = true;
+	this.solution           = '';
+	this.quality            = 0;
+	this.path_optimize      = false;
+	this.opt_ndir           = 1;
+	this.opt_dist           = 25;
+	this.opt_niter          = 30000;
+
+	this.setdefaultparameters();
+	//}}}
+}
+//FLOWEQUATION class definition
+//
+//   Usage:
+//      flowequation=new flowequation();
+
+function flowequation (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		//P1 for SSA
+		this.fe_SSA= 'P1';
+
+		//P1 for HO
+		this.fe_HO= 'P1';
+
+		//MINI condensed element for FS by default
+		this.fe_FS = 'MINIcondensed';
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   flow equation parameters:'));
+
+		fielddisplay(this,'isSIA','is the Shallow Ice Approximation (SIA) used ?');
+		fielddisplay(this,'isSSA','is the Shelfy-Stream Approximation (SSA) used ?');
+		fielddisplay(this,'isL1L2','is the L1L2 approximation used ?');
+		fielddisplay(this,'isHO','is the Higher-Order (HO) approximation used ?');
+		fielddisplay(this,'isFS','are the Full-FS (FS) equations used ?');
+		fielddisplay(this,'fe_SSA',"Finite Element for SSA  'P1', 'P1bubble' 'P1bubblecondensed' 'P2'");
+		fielddisplay(this,'fe_HO', "Finite Element for HO   'P1' 'P1bubble' 'P1bubblecondensed' 'P1xP2' 'P2xP1' 'P2'");
+		fielddisplay(this,'fe_FS', "Finite Element for FS   'P1P1' (debugging only) 'P1P1GLS' 'MINIcondensed' 'MINI' 'TaylorHood' 'XTaylorHood'");
+		fielddisplay(this,'vertex_equation','flow equation for each vertex');
+		fielddisplay(this,'element_equation','flow equation for each element');
+		fielddisplay(this,'borderSSA',"vertices on SSA's border (for tiling)");
+		fielddisplay(this,'borderHO',"vertices on HO's border (for tiling)");
+		fielddisplay(this,'borderFS',"vertices on FS' border (for tiling)");
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "flowequation";
+
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) {//{{{
+
+			//Early return
+			if ( ((!ArrayAnyEqual(ArrayIsMember(StressbalanceAnalysisEnum(),analyses),1)) & (!ArrayAnyEqual(ArrayIsMember(StressbalanceSIAAnalysisEnum(),analyses),1))) | 
+					(solution==TransientSolutionEnum() & md.trans.isstressbalance==0)
+			   ) return ;
+
+			checkfield(md,'fieldname','flowequation.isSIA','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.isSSA','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.isL1L2','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.isHO','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.isFS','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.fe_SSA','values',['P1','P1bubble','P1bubblecondensed','P2','P2bubble']);
+			checkfield(md,'fieldname','flowequation.fe_HO' ,'values',['P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P2bubble','P1xP3','P2xP4']);
+			checkfield(md,'fieldname','flowequation.fe_FS' ,'values',['P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','LATaylorHood','XTaylorHood','OneLayerP4z','CrouzeixRaviart','LACrouzeixRaviart']);
+			checkfield(md,'fieldname','flowequation.augmented_lagrangian_r','numel',[1],'>=',0.);
+			checkfield(md,'fieldname','flowequation.augmented_lagrangian_rlambda','numel',[1],'>=',0.);
+			checkfield(md,'fieldname','flowequation.augmented_lagrangian_rhop','numel',[1],'>=',0.);
+			checkfield(md,'fieldname','flowequation.augmented_lagrangian_rholambda','numel',[1],'>=',0.);
+			checkfield(md,'fieldname','flowequation.XTH_theta','numel',[1],'>=',0.,'<',0.5);
+			checkfield(md,'fieldname','flowequation.borderSSA','size',[md.mesh.numberofvertices, 1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.borderHO','size',[md.mesh.numberofvertices, 1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.borderFS','size',[md.mesh.numberofvertices, 1],'values',[0, 1]);
+			if (md.mesh.domaintype() == '2Dhorizontal'){
+				checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices, 1],'values',[1,2]);
+				checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements, 1],'values',[1,2]);
+			}
+			else if (md.mesh.domaintype() == '3Dsurface'){
+				checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices, 1],'values',[1,2]);
+				checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements, 1],'values',[1,2]);
+			}
+			else if (md.mesh.domaintype() =='2Dvertical'){
+				checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices, 1],'values',[2,4,5]);
+				checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements, 1],'values',[2,4,5]);
+			}
+			else if (md.mesh.domaintype() =='3D'){
+				checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices, 1],'values',[0,1,2,3,4,5,6,7,8]);
+				checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements, 1],'values',[0,1,2,3,4,5,6,7,8]);
+			}
+			else throw Error('Case not supported yet');
+			
+			if (!(this.isSIA | this.isSSA | this.isL1L2 | this.isHO | this.isFS)){
+				md = checkmessage(md,['no element types set for this model']);
+			}
+			if(ArrayAnyEqual(ArrayIsMember(StressbalanceSIAAnalysisEnum(), analyses),1)){
+				if (ArrayAnyEqual(this.element_equation,1)){
+					if(this.vertex_equation & ArrayAnyBelowStrict(md.mask.groundedice_levelset)){
+						console.log(sprintf("\n !!! Warning: SIA's model is not consistent on ice shelves !!!\n"));
+					}
+				}
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','isSIA','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isSSA','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isL1L2','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isHO','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isFS','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','fe_SSA','data',StringToEnum(this.fe_SSA),'format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','fe_HO','data',StringToEnum(this.fe_HO) ,'format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','fe_FS','data',StringToEnum(this.fe_FS) ,'format','Integer');
+
+			WriteData(fid,prefix,'object',this,'fieldname','augmented_lagrangian_r','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','augmented_lagrangian_rhop','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','augmented_lagrangian_rlambda','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','augmented_lagrangian_rholambda','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','XTH_theta','data',this.XTH_theta ,'format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','borderSSA','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','borderHO','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','borderFS','format','DoubleMat','mattype',1);
+
+			//convert approximations to enums
+			data=this.vertex_equation;
+			
+			//some optimization: 
+			var noneap=NoneApproximationEnum();
+			var siaap=SIAApproximationEnum();
+			var ssaap=SSAApproximationEnum();
+			var l1l2ap=L1L2ApproximationEnum();
+			var hoap=HOApproximationEnum();
+			var fsap=FSApproximationEnum();
+			var ssahoap=SSAHOApproximationEnum();
+			var hofsaap=HOFSApproximationEnum();
+			var ssafsap=SSAFSApproximationEnum();
+
+			for(var i=0;i<data.length;i++){
+				if(data[i]==0)data[i]=nonap;
+				if(data[i]==1) data[i]=siaap;
+				if(data[i]==2) data[i]=ssaap;
+				if(data[i]==3) data[i]=l1l2ap;
+				if(data[i]==4) data[i]=hoap;
+				if(data[i]==5) data[i]=fsap;
+				if(data[i]==6) data[i]=ssahoap;
+				if(data[i]==7) data[i]=hofsaap;
+				if(data[i]==8) data[i]=ssafsap;
+			}
+			WriteData(fid,prefix,'data',data,'name','md.flowequation.vertex_equation','format','DoubleMat','mattype',1);
+
+			data=this.element_equation;
+			for(var i=0;i<data.length;i++){
+				if(data[i]==0) data[i]=nonap;
+				if(data[i]==1) data[i]=siaap;
+				if(data[i]==2) data[i]=ssaap;
+				if(data[i]==3) data[i]=l1l2ap;
+				if(data[i]==4) data[i]=hoap;
+				if(data[i]==5) data[i]=fsap;
+				if(data[i]==6) data[i]=ssahoap;
+				if(data[i]==7) data[i]=ssafsap;
+				if(data[i]==8) data[i]=hofsaap;
+			}
+			WriteData(fid,prefix,'data',data,'name','md.flowequation.element_equation','format','DoubleMat','mattype',2);
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.isSIA                          = 0;
+	this.isSSA                          = 0;
+	this.isL1L2                         = 0;
+	this.isHO                           = 0;
+	this.isFS                           = 0;
+	this.fe_SSA                         = '';
+	this.fe_HO                          = '';
+	this.fe_FS                          = '';
+	this.augmented_lagrangian_r         = 1.;
+	this.augmented_lagrangian_rhop      = 1.;
+	this.augmented_lagrangian_rlambda   = 1.;
+	this.augmented_lagrangian_rholambda = 1.;
+	this.XTH_theta                      = 0.;
+	this.vertex_equation                = NaN;
+	this.element_equation               = NaN;
+	this.borderSSA                      = NaN;
+	this.borderHO                       = NaN;
+	this.borderFS                       = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
+//FRICTION class definition
+//
+//   Usage:
+//      friction=friction();
+
+function friction (){
+	//methods
+	this.setdefaultparameters = function(){ // {{{
+
+	} // }}}
+	this.disp= function (){// {{{
+		console.log(sprintf('Basal shear stress parameters: Sigma_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p)'));
+		fielddisplay(this,'coefficient','friction coefficient [SI]');
+		fielddisplay(this,'p','p exponent');
+		fielddisplay(this,'q','q exponent');
+	} // }}}
+    this.extrude = function(md) {//{{{
+
+        console.log("coefficient");
+        console.log(self.coefficient);
+        console.log("p");
+        console.log(self.p);
+        console.log("q");
+        console.log(self.q);
+        self.coefficient = project3d(md, 'vector', self.coefficient, 'type', 'node', 'layer', 1);
+        self.p = project3d(md, 'vector', self.p, 'type', 'element');
+        self.q = project3d(md, 'vector', self.q, 'type', 'element');
+    }//}}}
+	this.classname= function (){// {{{
+		return "friction";
+	} // }}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			//Early return
+			if ((!ArrayAnyEqual(ArrayIsMember(StressbalanceAnalysisEnum(),analyses),1)) & (!ArrayAnyEqual(ArrayIsMember(StressbalanceAnalysisEnum(),analyses),1))){
+				return; 
+			}
+			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements ,1]);
+			md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements ,1]);
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			var yts=365.0*24.0*3600.0;
+
+			WriteData(fid,prefix,'name','md.friction.law','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			//WriteData(fid,prefix,'object',this,'fieldname','coefficient','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','p','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',this,'fieldname','q','format','DoubleMat','mattype',2);
+			
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	//{{{
+	this.coefficient = NaN;
+	this.p           = NaN;
+	this.q           = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
+//GEOMETRY class definition
+//
+//   Usage:
+//      geometry=geometry();
+
+function geometry(){
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+		}// }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   Geometry parameters:"));
+
+			fielddisplay(this,'surface','ice upper surface elevation [m]');
+			fielddisplay(this,'thickness','ice thickness [m]');
+			fielddisplay(this,'base','ice base elevation [m]');
+			fielddisplay(this,'bed','bed elevation [m]');
+		} //}}}
+        this.extrude = function(md) {//{{{
+            this.surface=project3d(md,'vector',this.surface,'type','node');
+            this.thickness=project3d(md,'vector',this.thickness,'type','node');
+            this.hydrostatic_ratio=project3d(md,'vector',this.hydrostatic_ratio,'type','node');
+            this.base=project3d(md,'vector',this.base,'type','node');
+            this.bed=project3d(md,'vector',this.bed,'type','node');
+        }//}}}
+		this.classname = function () { //{{{
+			return 'geometry';
+		} //}}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			if ((solution==TransientSolutionEnum() & md.trans.isgia) | (solution==GiaSolutionEnum())){
+				checkfield(md,'fieldname','geometry.thickness','timeseries',1,'NaN',1,'Inf',1,'>=',0);
+			}
+			else{
+				checkfield(md,'fieldname','geometry.surface'  ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','geometry.base'      ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','geometry.thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1],'>',0);
+				for(var i=0;i<md.mesh.numberofvertices;i++){
+					if (Math.abs(md.geometry.thickness.thickness-md.geometry.surface+md.geometry.base)>Math.pow(10,9)){
+						md = checkmessage(md,'equality thickness=surface-base violated');
+						break;
+					}
+				}
+				if (solution==TransientSolutionEnum() & md.trans.isgroundingline){
+					checkfield(md,'fieldname','geometry.bed','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				}
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','surface','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','thickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,prefix,'object',this,'fieldname','base','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','bed','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','hydrostatic_ratio','format','DoubleMat','mattype',1);
+		}//}}}
+		this.fix=function() { //{{{
+			this.hydrostatic_ratio=NullFix(this.hydrostatic_ratio,NaN);
+		}//}}}
+	//properties 
+	// {{{
+		this.surface           = NaN;
+		this.thickness         = NaN;
+		this.base              = NaN;
+		this.bed               = NaN;
+		this.hydrostatic_ratio = NaN;
+		this.setdefaultparameters();
+		//}}}
+}
+//GIA class definition
+//
+//   Usage:
+//      gia=new gia();
+
+function gia (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		this.cross_section_shape=1; //square as default (see iedge in GiaDeflectionCorex)
+	
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   gia parameters:'));
+
+		fielddisplay(this,'mantle_viscosity','mantle viscosity[Pa s]');
+		fielddisplay(this,'lithosphere_thickness','lithosphere thickness (km)');
+		fielddisplay(this,'cross_section_shape','1: square-edged (default). 2: elliptical.  See iedge in GiaDeflectionCore');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "gia";
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) { // {{{
+
+		if(!ArrayAnyEqual(ArrayIsMember(GiaAnalysisEnum(),analyses),1))return;
+
+		checkfield(md,'fieldname','gia.mantle_viscosity','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0);
+		checkfield(md,'fieldname','gia.lithosphere_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0);
+		checkfield(md,'fieldname','gia.cross_section_shape','numel',[1],'values',[1,2]);
+
+		//be sure that if we are running a masstransport ice flow model coupled with gia, that thickness forcings 
+		//are not provided into the future.
+		if (solution==TransientSolutionEnum() & md.trans.ismasstransport & md.trans.isgia){
+			//figure out if thickness is a transient forcing: 
+			if (md.geometry.thickness.length == (md.mesh.numberofvertices+1)){
+				//recover the furthest time "in time": 
+				t=md.geometry.thickness[0].length;
+				if(md.geometry.thickness[md.geometry.thickness.length-1][t-1]!=md.timestepping.start_time){
+					md.checkmessage('if ismasstransport is on, transient thickness forcing for the gia model should not be provided in the future. Synchronize your start_time to correspond to the most recent transient thickness forcing timestep');
+				}
+			}
+		}
+	} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','mantle_viscosity','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','lithosphere_thickness','format','DoubleMat','mattype',1,'scale',Math.pow(10,3)); //from km to m
+			WriteData(fid,prefix,'object',this,'fieldname','cross_section_shape','format','Integer');
+		}//}}}
+		this.fix=function() { //{{{
+			this.mantle_viscosity=NullFix(this.mantle_viscosity,NaN);
+			this.lithosphere_thickness=NullFix(this.lithosphere_thickness,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.mantle_viscosity              = NaN;
+	this.lithosphere_thickness         = NaN;
+	this.cross_section_shape           = 0;
+
+	this.setdefaultparameters();
+	//}}}
+}
+//GROUNDINGLINE class definition
+//
+//   Usage:
+//      groundingline=new groundingline();
+
+function groundingline (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		//Type of migration
+		this.migration='None';
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   grounding line migration parameters:'));
+		fielddisplay(this,'migration',"type of grounding line migration: 'SoftMigration','AggressiveMigration','SubelementMigration','SubelementMigration2' or 'None'");
+
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "groundingline";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) {// {{{
+
+			checkfield(md,'fieldname','groundingline.migration','values',['None', 'AggressiveMigration', 'SoftMigration', 'SubelementMigration', 'SubelementMigration2', 'Contact', 'None', 'GroundingOnly']);
+
+			if (this.migration !='None'){
+				if (isNaN(md.geometry.bed)){
+					md.checkmessage('requesting grounding line migration, but bathymetry is absent!');
+				}
+				for (var i=0;i<md.mesh.numberofvertices;i++){
+					if(md.mask.groundedice_levelset[i]>0){
+						md.checkmessage('base not equal to bed on grounded ice!');
+						break;
+					}
+					if(md.geometry.bed[i] - md.geometry.base[i] > Math.pow(10,-9)){
+						md = checkmessage(md,'bed superior to base on floating ice!');
+						break;
+					}
+				}
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'data',StringToEnum(this.migration),'name','md.groundingline.migration','format','Integer');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.migration    = '';
+	this.setdefaultparameters();
+	//}}}
+}
+//HYDROLOGYSHREVE class definition
+//
+//   Usage:
+//      hydrologyshreve=new hydrologyshreve();
+
+function hydrologyshreve (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//Type of stabilization to use 0:nothing 1:artificial_diffusivity
+		this.stabilization=1;
+
+	}// }}}
+		this.disp= function(){// {{{
+
+		console.log(sprintf('   hydrologyshreve solution parameters:'));
+		fielddisplay(this,'spcwatercolumn','water thickness constraints (NaN means no constraint) [m]');
+		fielddisplay(this,'stabilization','artificial diffusivity (default is 1). can be more than 1 to increase diffusivity.');
+
+	}// }}}
+		this.classname= function(){// {{{
+			return "hydrologyshreve";
+
+		}// }}}
+	this.type= function(){// {{{
+
+		return "hydrologyshreve";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			//Early return
+			if(!ArrayAnyEqual(ArrayIsMember(HydrologyShreveAnalysisEnum(),analyses),1)) return;
+
+			checkfield(md,'fieldname','hydrology.spcwatercolumn','Inf',1,'timeseries',1);
+			checkfield(md,'fieldname','hydrology.stabilization','>=',0);
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'name','md.hydrology.model','data',HydrologyshreveEnum(),'format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,prefix,'object',this,'fieldname','stabilization','format','Double');
+		}//}}}
+		this.fix=function() { //{{{
+			this.spcwatercolumn=NullFix(this.spcwatercolumn,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.spcwatercolumn = NaN;
+	this.stabilization  = 0;
+	this.setdefaultparameters();
+	//}}}
+}
+//INITIALIZATION class definition
+//
+//   Usage:
+//      initialization=new initialization();
+
+function initialization (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   initial field values:'));
+
+		fielddisplay(this,'vx','x component of velocity [m/yr]');
+		fielddisplay(this,'vy','y component of velocity [m/yr]');
+		fielddisplay(this,'vz','z component of velocity [m/yr]');
+		fielddisplay(this,'vel','velocity norm [m/yr]');
+		fielddisplay(this,'pressure','pressure field [Pa]');
+		fielddisplay(this,'temperature','temperature [K]');
+		fielddisplay(this,'waterfraction','fraction of water in the ice');
+		fielddisplay(this,'sediment_head','sediment water head of subglacial system [m]');
+		fielddisplay(this,'epl_head','epl water head of subglacial system [m]');
+		fielddisplay(this,'epl_thickness','epl layer thickness [m]');
+		fielddisplay(this,'watercolumn','thickness of subglacial water [m]');
+
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+			if(ArrayAnyEqual(ArrayIsMember(StressbalanceAnalysisEnum(),analyses),1)){
+				if (!(isNaN(md.initialization.vx) | isNaN(md.initialization.vy))){
+					checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+					checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				}
+			}
+			if(ArrayAnyEqual(ArrayIsMember(MasstransportAnalysisEnum(),analyses),1)){
+				checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			}
+			if(ArrayAnyEqual(ArrayIsMember(BalancethicknessSolutionEnum(),analyses),1) & (solution==BalancethicknessSolutionEnum())){
+				checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				//Triangle with zero velocity
+				for(var i=0;i<md.mesh.numberofelements;i++){
+					var sum=0;
+					for(var j=0;j<md.mesh.elements[0].length;j++){
+						if  ((md.initialization.vx[md.mesh.elements[i][j]-1]==0) & (md.initialization.vy[md.mesh.elements[i][j]-1]==0)) sum+=1;
+					}
+					if (sum==md.mesh.elements[0].length){
+						md.checkmessage('at least one triangle has all its vertices with a zero velocity');
+					}
+				}
+			}
+			if(ArrayAnyEqual(ArrayIsMember(ThermalAnalysisEnum(),analyses),1)){
+				checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				if (md.mesh.dimension() == 3){
+					checkfield(md,'fieldname','initialization.vz','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+				}
+				checkfield(md,'fieldname','initialization.pressure','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+				checkfield(md,'fieldname','initialization.temperature','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+			}
+			if( ArrayAnyEqual(ArrayIsMember(EnthalpyAnalysisEnum(),analyses),1) & md.thermal.isenthalpy){
+				checkfield(md,'fieldname','initialization.waterfraction','>=',0,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','initialization.watercolumn'  ,'>=',0,'size',[md.mesh.numberofvertices, 1]);
+			}
+			if(ArrayAnyEqual(ArrayIsMember(HydrologyShreveAnalysisEnum(),analyses),1)){
+				if (md.hydrology.type() == 'hydrologyshreve'){
+					checkfield(md,'fieldname','initialization.watercolumn','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+				}
+			}
+			if(ArrayAnyEqual(ArrayIsMember(HydrologyDCInefficientAnalysisEnum(),analyses),1)){
+				if (md.hydrology.type() == 'hydrologydc'){
+					checkfield(md,'fieldname','initialization.sediment_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				}
+			}
+			if(ArrayAnyEqual(ArrayIsMember(HydrologyDCEfficientAnalysisEnum(),analyses),1)){
+				if (md.hydrology.type() == 'hydrologydc'){
+					if (md.hydrology.isefficientlayer==1){
+						checkfield(md,'fieldname','initialization.epl_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+						checkfield(md,'fieldname','initialization.epl_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+					}
+				}
+			}
+		} //}}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var yts=365.0*24.0*3600.0;
+
+			WriteData(fid,prefix,'object',this,'fieldname','vx','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',this,'fieldname','vy','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',this,'fieldname','vz','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',this,'fieldname','pressure','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','temperature','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','waterfraction','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','sediment_head','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','epl_head','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','epl_thickness','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','watercolumn','format','DoubleMat','mattype',1);
+
+			if (md.thermal.isenthalpy){
+				tpmp=NewArrayFill(md.mesh.numberofvertices,0);
+				for (var i=0;i<md.mesh.numberofvertices;i++) tpmp[i]= md.materials.meltingpoint - md.materials.beta*md.initialization.pressure[i];
+				enthalpy=NewArrayFill(md.mesh.numberofvertices,0); 
+				for (var i=0;i<md.mesh.numberofvertices;i++)enthalpy[i] = md.materials.heatcapacity*(md.initialization.temperature[i]-md.constants.referencetemperature);
+				
+				for (var i=0;i<md.mesh.numberofvertices;i++)if(md.initialization.temperature[i]>=tpmp[i]){
+					enthalpy[i] = md.materials.heatcapacity*(tpmp[i] - md.constants.referencetemperature) + md.materials.latentheat*md.initialization.waterfraction[i];
+				}
+				WriteData(fid,prefix,'data',enthalpy,'format','DoubleMat','mattype',1,'name','md.initialization.enthalpy');
+			}
+		}//}}}
+		this.fix=function(md) { //{{{
+			this.vx=FloatFix(this.vx,md.mesh.numberofvertices); 
+			this.vy=FloatFix(this.vx,md.mesh.numberofvertices); 
+			this.vy=FloatFix(this.vx,md.mesh.numberofvertices); 
+			this.waterfraction=NullFix(this.waterfraction,NaN);
+			this.sediment_head=NullFix(this.sediment_head,NaN);
+			this.epl_head=NullFix(this.epl_head,NaN);
+			this.epl_thickness=NullFix(this.epl_thickness,NaN);
+			this.watercolumn=NullFix(this.watercolumn,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.vx            = NaN;
+	this.vy            = NaN;
+	this.vz            = NaN;
+	this.vel           = NaN;
+	this.pressure      = NaN;
+	this.temperature   = NaN;
+	this.waterfraction = NaN;
+	this.sediment_head = NaN;
+	this.epl_head      = NaN;
+	this.epl_thickness = NaN;
+	this.watercolumn   = NaN;
+	this.setdefaultparameters();
+
+	//}}}
+}
+//INVERSION class definition
+//
+//   Usage:
+//      inversion=new inversion();
+
+function inversion (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//default is incomplete adjoint for now
+		this.incomplete_adjoint=1;
+
+		//parameter to be inferred by control methods (only
+		//drag and B are supported yet)
+		this.control_parameters=['FrictionCoefficient'];
+
+		//number of steps in the control methods
+		this.nsteps=20;
+
+		//maximum number of iteration in the optimization algorithm for
+		//each step
+		this.maxiter_per_step=20*NewArrayFill(this.nsteps,1);
+
+		//the inversed parameter is updated as follows:
+		//new_par=old_par + gradient_scaling(n)*C*gradient with C in [0 1];
+		//usually the gradient_scaling must be of the order of magnitude of the 
+		//inversed parameter (10^8 for B, 50 for drag) and can be decreased
+		//after the first iterations
+		this.gradient_scaling=NewArrayFill(this.nsteps,50);
+
+		//several responses can be used:
+		this.cost_functions=101;
+
+		//step_threshold is used to speed up control method. When
+		//misfit(1)/misfit(0) < this.step_threshold, we go directly to
+		//the next step
+		this.step_threshold=NewArrayFill(this.nsteps,.7); //30 per cent decrement.
+
+		//cost_function_threshold is a criteria to stop the control methods.
+		//if J[n]-J[n-1]/J[n] < criteria, the control run stops
+		//NaN if not applied
+		this.cost_function_threshold=NaN; //not activated
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   inversion parameters:'));
+		fielddisplay(this,'iscontrol','is inversion activated?');
+		fielddisplay(this,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
+		fielddisplay(this,'control_parameters',"ex: {'FrictionCoefficient'}, or {'MaterialsRheologyBbar'}");
+		fielddisplay(this,'nsteps','number of optimization searches');
+		fielddisplay(this,'cost_functions','indicate the type of response for each optimization step');
+		fielddisplay(this,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
+		fielddisplay(this,'cost_function_threshold','misfit convergence criterion. Default is 1%, NaN if not applied');
+		fielddisplay(this,'maxiter_per_step','maximum iterations during each optimization step');
+		fielddisplay(this,'gradient_scaling','scaling factor on gradient direction during optimization, for each optimization step');
+		fielddisplay(this,'step_threshold','decrease threshold for misfit, default is 30%');
+		fielddisplay(this,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
+		fielddisplay(this,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
+		fielddisplay(this,'vx_obs','observed velocity x component [m/yr]');
+		fielddisplay(this,'vy_obs','observed velocity y component [m/yr]');
+		fielddisplay(this,'vel_obs','observed velocity magnitude [m/yr]');
+		fielddisplay(this,'thickness_obs','observed thickness [m]');
+		fielddisplay(this,'surface_obs','observed surface elevation [m]');
+		console.log('Available cost functions:');
+		console.log('   101: SurfaceAbsVelMisfit');
+		console.log('   102: SurfaceRelVelMisfit');
+		console.log('   103: SurfaceLogVelMisfit');
+		console.log('   104: SurfaceLogVxVyMisfit');
+		console.log('   105: SurfaceAverageVelMisfit');
+		console.log('   201: ThicknessAbsMisfit');
+		console.log('   501: DragCoefficientAbsGradient');
+		console.log('   502: RheologyBbarAbsGradient');
+		console.log('   503: ThicknessAbsGradient');
+
+	}// }}}
+    this.extrude = function(md) {//{{{
+        this.vx_obs=project3d(md, 'vector', this.vx_obs, 'type', 'node');
+        this.vy_obs=project3d(md,'vector',this.vy_obs,'type','node');
+        this.vel_obs=project3d(md,'vector',this.vel_obs,'type','node');
+        this.thickness_obs=project3d(md,'vector',this.thickness_obs,'type','node');
+
+        if (numel(this.cost_functions_coefficients)>1) {
+            this.cost_functions_coefficients=project3d(md,'vector',this.cost_functions_coefficients,'type','node');
+        }			
+        if (numel(this.min_parameters)>1) {
+            this.min_parameters=project3d(md,'vector',this.min_parameters,'type','node');
+        }
+        if (numel(this.max_parameters)>1) {
+            this.max_parameters=project3d(md,'vector',this.max_parameters,'type','node');
+        }
+    }//}}}
+	this.classname= function(){// {{{
+		return "inversion";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			//Early return
+			if (!this.iscontrol) return;
+
+			num_controls=md.inversion.control_parameters.length;
+			num_costfunc=md.inversion.control_parameters[0].length;
+
+			checkfield(md,'fieldname','inversion.iscontrol','values',[0, 1]);
+			checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 ,1]);
+			checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols());
+			checkfield(md,'fieldname','inversion.nsteps','numel',1,'>=',0);
+			checkfield(md,'fieldname','inversion.maxiter_per_step','size',[md.inversion.nsteps, 1],'>=',0);
+			checkfield(md,'fieldname','inversion.step_threshold','size',[md.inversion.nsteps, 1]);
+			checkfield(md,'fieldname','inversion.cost_functions','size',[1, num_costfunc],'values',supportedcostfunctions());
+			checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices, num_costfunc],'>=',0);
+			checkfield(md,'fieldname','inversion.gradient_scaling','size',[md.inversion.nsteps, num_controls]);
+			checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices , num_controls]);
+			checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices ,num_controls]);
+
+			//Only SSA, HO and FS are supported right now
+			if (solution==StressbalanceSolutionEnum()){
+				if (!(md.flowequation.isSSA | md.flowequation.isHO | md.flowequation.isFS | md.flowequation.isL1L2)){
+					md.checkmessage('inversion can only be performed for SSA, HO or FS ice flow models');
+				}
+			}
+
+			if (solution==BalancethicknessSolutionEnum()){
+				checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1);
+			}
+			else if (solution==BalancethicknessSoftSolutionEnum()){
+				checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1);
+			}
+			else{
+				checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1);
+				checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1);
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var yts=365.0*24.0*3600.0;
+
+			WriteData(fid,prefix,'name','md.inversion.type','data',0,'format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','iscontrol','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','incomplete_adjoint','format','Boolean');
+			if (!this.iscontrol) return;
+			WriteData(fid,prefix,'object',this,'fieldname','nsteps','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','maxiter_per_step','format','IntMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','gradient_scaling','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'fieldname','cost_function_threshold','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','min_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'fieldname','max_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'fieldname','step_threshold','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',this,'fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',this,'fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			if(this.thickness_obs.length==md.mesh.numberofelements) mattype=2;
+			else mattype=1;
+			WriteData(fid,prefix,'object',this,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
+			WriteData(fid,prefix,'object',this,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
+
+			//process control parameters
+			num_control_parameters=this.control_parameters.length;
+			WriteData(fid,prefix,'object',this,'fieldname','control_parameters','format','StringArray');
+			WriteData(fid,prefix,'data',num_control_parameters,'name','md.inversion.num_control_parameters','format','Integer');
+
+			//process cost functions
+			num_cost_functions=this.cost_functions[0].length;
+			data=marshallcostfunctions(this.cost_functions);
+			WriteData(fid,prefix,'data',data,'name','md.inversion.cost_functions','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'data',num_cost_functions,'name','md.inversion.num_cost_functions','format','Integer');
+		}//}}}
+		this.fix=function() { //{{{
+			this.control_parameters=NullFix(this.control_parameters,NaN);
+			this.maxiter_per_step=NullFix(this.maxiter_per_step,NaN);
+			this.cost_functions=NullFix(this.cost_functions,NaN);
+			this.cost_functions_coefficients=NullFix(this.cost_functions_coefficients,NaN);
+			this.cost_function_threshold=NullFix(this.cost_function_threshold,NaN);
+			this.gradient_scaling=NullFix(this.gradient_scaling,NaN);
+			this.min_parameters=NullFix(this.min_parameters,NaN);
+			this.max_parameters=NullFix(this.max_parameters,NaN);
+			this.step_threshold=NullFix(this.step_threshold,NaN);
+			this.vx_obs=NullFix(this.vx_obs,NaN);
+			this.vy_obs=NullFix(this.vy_obs,NaN);
+			this.vz_obs=NullFix(this.vz_obs,NaN);
+			this.vel_obs=NullFix(this.vel_obs,NaN);
+			this.thickness_obs=NullFix(this.thickness_obs,NaN);
+			this.surface_obs=NullFix(this.surface_obs,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.iscontrol                   = 0;
+	this.incomplete_adjoint          = 0;
+	this.control_parameters          = NaN;
+	this.nsteps                      = 0;
+	this.maxiter_per_step            = NaN;
+	this.cost_functions              = NaN;
+	this.cost_functions_coefficients = NaN;
+	this.gradient_scaling            = NaN;
+	this.cost_function_threshold     = 0;
+	this.min_parameters              = NaN;
+	this.max_parameters              = NaN;
+	this.step_threshold              = NaN;
+	this.vx_obs                      = NaN;
+	this.vy_obs                      = NaN;
+	this.vz_obs                      = NaN;
+	this.vel_obs                     = NaN;
+	this.thickness_obs               = NaN;
+	this.surface_obs                 = NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
+//MASK class definition
+//
+//   Usage:
+//      mask= new mask();
+
+function mask () {
+	//properties 
+	// {{{
+		this.groundedice_levelset                           = NaN;
+		this.ice_levelset                           = NaN;
+		//}}}
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+		} // }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   mask:")); 
+
+			fielddisplay(this,"groundedice_levelset","is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0");
+			fielddisplay(this,"ice_levelset","presence of ice if < 0, icefront position if = 0, no ice if > 0");
+		} //}}}
+		this.classname = function () { //{{{
+			return "mask";
+		} //}}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			checkfield(md,'fieldname','mask.groundedice_levelset','size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices, 1]);
+			var isice=NewArrayFill(md.mesh.numberofvertices,0); 
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(md.mask.ice_levelset[i]<=0)isice[i]=1;
+			if (ArraySum(isice)==0){
+				console.log('no ice present in the domain');
+			}
+			if (ArrayMax(md.mask.ice_levelset)<0){
+				console.log('no ice front provided');
+			}
+				
+			var icefront=NewArrayFill(md.mesh.numberofelements,0);
+			for(var i=0;i<md.mesh.numberofelements;i++){
+				for(var j=0;j<md.mesh.elements[0].length;j++){
+					icefront[i]+=(md.mask.ice_levelset[md.mesh.elements[i][j]-1]==0);
+				}
+			}
+			if ((ArrayMax(icefront)==3 & (md.mesh.elementtype() == 'Tria')) | (ArrayMax(icefront)==6 & md.mesh.elementtype() == 'Penta')){
+				if (md.mesh.elementtype()=='Tria'){
+					var pos=ArrayFindEqual(icefront,3); numberemptyelements=pos.length;
+				}
+				else if (md.mesh.elementtype() == 'Penta'){
+					var pos=ArrayFindEqual(icefront,6); numberemptyelements=pos.length;
+				}
+				throw Error(sprintf(" %i have all nodes on ice front, change md.mask.ice_levelset to fix it",numberemptyelements));
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','ice_levelset','format','DoubleMat','mattype',1);
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+
+}
+//MASKPSL class definition
+//
+//   Usage:
+//      maskpsl= new maskpsl();
+
+function maskpsl () {
+	//properties 
+	// {{{
+		this.groundedice_levelset                           = NaN;
+		this.ice_levelset                           = NaN;
+		this.land_levelset                           = NaN;
+		this.ocean_levelset                           = NaN;
+		//}}}
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+		} // }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   mask:")); 
+
+			fielddisplay(this,"groundedice_levelset","is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0");
+			fielddisplay(this,"ice_levelset","presence of ice if < 0, icefront position if = 0, no ice if > 0");
+			fielddisplay(this,"ocean_levelset","is the vertex on the ocean? yes if = 1, no if = 0");
+			fielddisplay(this,"land_levelset","is the vertex on land? yes if = 1, no if = 0");
+		} //}}}
+		this.classname = function () { //{{{
+			return "maskpsl";
+		} //}}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			checkfield(md,'fieldname','mask.groundedice_levelset','size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mask.ocean_levelset'        ,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mask.land_levelset'        ,'size',[md.mesh.numberofvertices, 1]);
+			
+			var isice=NewArrayFill(md.mesh.numberofvertices,0); 
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(md.mask.ice_levelset[i]<=0)isice[i]=1;
+			if (ArraySum(isice)==0){
+				console.log('no ice present in the domain');
+			}
+			if (ArrayMax(md.mask.ice_levelset)<0){
+				console.log('no ice front provided');
+			}
+				
+			var icefront=NewArrayFill(md.mesh.numberofelements,0);
+			for(var i=0;i<md.mesh.numberofelements;i++){
+				for(var j=0;j<md.mesh.elements[0].length;j++){
+					icefront[i]+=(md.mask.ice_levelset[md.mesh.elements[i][j]-1]==0);
+				}
+			}
+			if ((ArrayMax(icefront)==3 & (md.mesh.elementtype() == 'Tria')) | (ArrayMax(icefront)==6 & md.mesh.elementtype() == 'Penta')){
+				if (md.mesh.elementtype()=='Tria'){
+					var pos=ArrayFindEqual(icefront,3); numberemptyelements=pos.length;
+				}
+				else if (md.mesh.elementtype() == 'Penta'){
+					var pos=ArrayFindEqual(icefront,6); numberemptyelements=pos.length;
+				}
+				throw Error(sprintf(" %i have all nodes on ice front, change md.mask.ice_levelset to fix it",numberemptyelements));
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'class','mask','fieldname','groundedice_levelset','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mask','fieldname','ice_levelset','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mask','fieldname','land_levelset','format','DoubleMat','mattype',1);
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+
+}
+//MASSTRANSPORT class definition
+//
+//   Usage:
+//      masstransport=new masstransport();
+
+function masstransport (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//Type of stabilization to use 0:nothing 1:artificial_diffusivity 3:Discontinuous Galerkin
+		this.stabilization=1;
+
+		//Factor applied to compute the penalties kappa=max(stiffness matrix)*10^penalty_factor
+		this.penalty_factor=3;
+
+		//Minimum ice thickness that can be used
+		this.min_thickness=1;
+
+		//Hydrostatic adjustment
+		this.hydrostatic_adjustment='Absolute';
+
+		//default output
+		this.requested_outputs=['default'];
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   Masstransport solution parameters:'));
+		fielddisplay(this,'spcthickness','thickness constraints (NaN means no constraint) [m]');
+		fielddisplay(this,'isfreesurface','do we use free surfaces (FS only) are mass conservation');
+		fielddisplay(this,'min_thickness','minimum ice thickness allowed [m]');
+		fielddisplay(this,'hydrostatic_adjustment',"adjustment of ice shelves surface and bed elevations: 'Incremental' or 'Absolute' ");
+		fielddisplay(this,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding, 3: discontinuous Galerkin, 4: Flux Correction Transport');
+
+		console.log(sprintf('\n      %s','Penalty options:'));
+		fielddisplay(this,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset');
+		fielddisplay(this,'vertex_pairing','pairs of vertices that are penalized');
+		fielddisplay(this,'requested_outputs','additional outputs requested');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "masstransport";
+	}// }}}
+		this.checkconsistency = function (md,solution,analyses){  // {{{
+
+			//Early return
+			if(!ArrayAnyEqual(ArrayIsMember(HydrologyShreveAnalysisEnum(),analyses),1) | (solution==TransientSolutionEnum() & md.trans.ismasstransport==0)) return; 
+
+			checkfield(md,'fieldname','masstransport.spcthickness','Inf',1,'timeseries',1);
+			checkfield(md,'fieldname','masstransport.isfreesurface','values',[0 ,1]);
+			checkfield(md,'fieldname','masstransport.hydrostatic_adjustment','values',['Absolute', 'Incremental']);
+			checkfield(md,'fieldname','masstransport.stabilization','values',[0,1,2,3,4]);
+			checkfield(md,'fieldname','masstransport.min_thickness','>',0);
+			checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1);
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var yts=365.*24.*3600.;
+
+			WriteData(fid,prefix,'object',this,'fieldname','spcthickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,prefix,'object',this,'fieldname','isfreesurface','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','min_thickness','format','Double');
+			WriteData(fid,prefix,'data',StringToEnum(this.hydrostatic_adjustment),'format','Integer','name','md.masstransport.hydrostatic_adjustment');
+			WriteData(fid,prefix,'object',this,'fieldname','stabilization','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','vertex_pairing','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'fieldname','penalty_factor','format','Double');
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}
+			WriteData(fid,prefix,'data',outputs,'name','md.masstransport.requested_outputs','format','StringArray');
+		}//}}}
+		this.defaultoutputs = function(md) { //{{{
+			return ['Thickness','Surface','Base'];
+		}//}}}
+		this.fix=function() { //{{{
+			this.spcthickness=NullFix(this.spcthickness,NaN);
+			this.vertex_pairing=NullFix(this.vertex_pairing,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.spcthickness           = NaN;
+	this.isfreesurface          = 0;
+	this.min_thickness          = 0;
+	this.hydrostatic_adjustment = 0;
+	this.stabilization          = 0;
+	this.vertex_pairing         = NaN;
+	this.penalty_factor         = 0;
+	this.requested_outputs      = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
+//MATICE class definition
+//
+//   Usage:
+//      matice=matice();
+
+function matice(){
+	//methods
+		this.setdefaultparameters = function(){ // {{{
+
+			//ice density (kg/m^3)
+			this.rho_ice=917.;
+
+			//ocean water density (kg/m^3)
+			this.rho_water=1023.;
+
+			//fresh water density (kg/m^3)
+			this.rho_freshwater=1000.;
+
+			//water viscosity (N.s/m^2)
+			this.mu_water=0.001787;  
+
+			//ice heat capacity cp (J/kg/K)
+			this.heatcapacity=2093.;
+
+			//ice latent heat of fusion L (J/kg)
+			this.latentheat=3.34*10^5;
+
+			//ice thermal conductivity (W/m/K)
+			this.thermalconductivity=2.4;
+			
+			//wet ice thermal conductivity (W/m/K)
+			this.temperateiceconductivity=.24;
+
+			//the melting point of ice at 1 atmosphere of pressure in K
+			this.meltingpoint=273.15;
+
+			//rate of change of melting point with pressure (K/Pa)
+			this.beta=9.8*10^-8;
+
+			//mixed layer (ice-water interface) heat capacity (J/kg/K)
+			this.mixed_layer_capacity=3974.;
+
+			//thermal exchange velocity (ice-water interface) (m/s)
+			this.thermal_exchange_velocity=1.00*10^-4;
+
+			//Rheology law: what is the temperature dependence of B with T
+			//available: none, paterson and arrhenius
+			this.rheology_law='Paterson';
+
+			// GIA:
+			this.lithosphere_shear_modulus  = 6.7*Math.pow(10,10);  // (Pa)
+			this.lithosphere_density        = 3.32;       // (g/cm^-3)
+			this.mantle_shear_modulus       = 1.45*Math.pow(10,11); // (Pa)
+			this.mantle_density             = 3.34;       // (g/cm^-3)
+			
+			//SLR
+			this.earth_density= 5512;  // average density of the Earth, (kg/m^3)
+
+
+		} //}}}
+		this.disp = function() {// {{{
+			console.log(sprintf('   Materials:'));
+
+			fielddisplay(this,'rho_ice','ice density [kg/m^3]');
+			fielddisplay(this,'rho_water','ocean water density [kg/m^3]');
+			fielddisplay(this,'rho_freshwater','fresh water density [kg/m^3]');
+			fielddisplay(this,'mu_water','water viscosity [N s/m^2]');
+			fielddisplay(this,'heatcapacity','heat capacity [J/kg/K]');
+			fielddisplay(this,'thermalconductivity','ice thermal conductivity [W/m/K]');
+			fielddisplay(this,'temperateiceconductivity','temperate ice thermal conductivity [W/m/K]');
+			fielddisplay(this,'meltingpoint','melting point of ice at 1atm in K');
+			fielddisplay(this,'latentheat','latent heat of fusion [J/kg]');
+			fielddisplay(this,'beta','rate of change of melting point with pressure [K/Pa]');
+			fielddisplay(this,'mixed_layer_capacity','mixed layer capacity [W/kg/K]');
+			fielddisplay(this,'thermal_exchange_velocity','thermal exchange velocity [m/s]');
+			fielddisplay(this,'rheology_B','flow law parameter [Pa/s^(1/n)]');
+			fielddisplay(this,'rheology_n',"Glen's flow law exponent");
+			fielddisplay(this,'rheology_law',"law for the temperature dependance of the rheology: 'None', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius' or 'LliboutryDuval'");
+			fielddisplay(this,'lithosphere_shear_modulus','Lithosphere shear modulus [Pa]');
+			fielddisplay(this,'lithosphere_density','Lithosphere density [g/cm^-3]');
+			fielddisplay(this,'mantle_shear_modulus','Mantle shear modulus [Pa]');
+			fielddisplay(this,'mantle_density','Mantle density [g/cm^-3]');
+			fielddisplay(this,'earth_density','Mantle density [kg/m^-3]');
+
+		} // }}}
+		this.classname = function() {// {{{
+			return "matice";
+		} // }}}
+		this.checkconsistency = function(md,solution,analyses) { // {{{
+			checkfield(md,'fieldname','materials.rho_ice','>',0);
+			checkfield(md,'fieldname','materials.rho_water','>',0);
+			checkfield(md,'fieldname','materials.rho_freshwater','>',0);
+			checkfield(md,'fieldname','materials.mu_water','>',0);
+			checkfield(md,'fieldname','materials.rheology_B','>',0,'timeseries',1,'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements,1]);
+			checkfield(md,'fieldname','materials.rheology_law','values',['None','Cuffey','CuffeyTemperate','Paterson','Arrhenius','LliboutryDuval']);
+
+			if(ArrayAnyEqual(ArrayIsMember(GiaAnalysisEnum(),analyses),1)){
+				checkfield(md,'fieldname','materials.lithosphere_shear_modulus','>',0,'numel',1);
+				checkfield(md,'fieldname','materials.lithosphere_density','>',0,'numel',1);
+				checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',1);
+				checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',1);
+			}
+			if (ArrayAnyEqual(ArrayIsMember(SealevelriseAnalysisEnum(),analyses),1)){
+				checkfield(md,'fieldname','materials.earth_density','>',0,'numel',1);
+			}
+
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'name','md.materials.type','data',MaticeEnum(),'format','Integer');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','rho_ice','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','rho_water','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','rho_freshwater','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','mu_water','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','heatcapacity','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','latentheat','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','thermalconductivity','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','temperateiceconductivity','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','meltingpoint','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','beta','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','mixed_layer_capacity','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','thermal_exchange_velocity','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'data',StringToEnum(this.rheology_law),'name','md.materials.rheology_law','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','lithosphere_shear_modulus','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','lithosphere_density','format','Double','scale',10^3);
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','mantle_shear_modulus','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','mantle_density','format','Double','scale',10^3);
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','earth_density','format','Double');
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+		this.rho_ice                    = 0.;
+		this.rho_water                  = 0.;
+		this.rho_freshwater             = 0.;
+		this.mu_water                   = 0.;
+		this.heatcapacity               = 0.;
+		this.latentheat                 = 0.;
+		this.thermalconductivity        = 0.;
+		this.temperateiceconductivity   = 0.;
+		this.meltingpoint               = 0.;
+		this.beta                       = 0.;
+		this.mixed_layer_capacity       = 0.;
+		this.thermal_exchange_velocity  = 0.;
+		this.rheology_B   = NaN;
+		this.rheology_n   = NaN;
+		this.rheology_law = '';
+
+		//gia: 
+		this.lithosphere_shear_modulus  = 0.;
+		this.lithosphere_density        = 0.;
+		this.mantle_shear_modulus       = 0.;
+		this.mantle_density             = 0.;
+
+		//SLR
+		this.earth_density= 5512;  // average density of the Earth, (kg/m^3)
+
+		this.setdefaultparameters();
+		//}}}
+}
+//MESH2D class definition
+//
+//   Usage:
+//      mesh2d= new mesh2d();
+
+function mesh2d () {
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+
+			//the connectivity is the averaged number of nodes linked to a
+			//given node through an edge. This connectivity is used to initially
+			//allocate memory to the stiffness matrix. A value of 16 seems to
+			//give a good memory/time ration. This value can be checked in
+			//trunk/test/Miscellaneous/runme.m
+			this.average_vertex_connectivity=25;
+		}
+		// }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   2D tria Mesh (horizontal):")); 
+
+			console.log(sprintf("\n      Elements and vertices:"));
+			fielddisplay(this,"numberofelements","number of elements");
+			fielddisplay(this,"numberofvertices","number of vertices");
+			fielddisplay(this,"elements","vertex indices of the mesh elements");
+			fielddisplay(this,"x","vertices x coordinate [m]");
+			fielddisplay(this,"y","vertices y coordinate [m]");
+			fielddisplay(this,"edges","edges of the 2d mesh (vertex1 vertex2 element1 element2)");
+			fielddisplay(this,"numberofedges","number of edges of the 2d mesh");
+
+			console.log(sprintf("\n      Properties:"));
+			fielddisplay(this,"vertexonboundary","vertices on the boundary of the domain flag list");
+			fielddisplay(this,"segments","edges on domain boundary (vertex1 vertex2 element)");
+			fielddisplay(this,"segmentmarkers","number associated to each segment");
+			fielddisplay(this,"vertexconnectivity","list of vertices connected to vertex_i");
+			fielddisplay(this,"elementconnectivity","list of vertices connected to element_i");
+			fielddisplay(this,"average_vertex_connectivity","average number of vertices connected to one vertex");
+
+			console.log(sprintf("\n      Extracted model:"));
+			fielddisplay(this,"extractedvertices","vertices extracted from the model");
+			fielddisplay(this,"extractedelements","elements extracted from the model");
+
+			console.log(sprintf("\n      Projection:"));
+			fielddisplay(this,"lat","vertices latitude [degrees]");
+			fielddisplay(this,"long","vertices longitude [degrees]");
+			fielddisplay(this,"epsg","EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)");
+		} //}}}
+		this.classname = function () { //{{{
+			return "mesh2d";
+		} //}}}
+		this.domaintype=function (){ // {{{
+			return '2Dhorizontal';
+		} // }}}
+		this.dimension = function () { //{{{
+			return 2;
+		} //}}}
+		this.elementtype = function() {//{{{
+			return 'Tria';
+		} // }}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',NewArrayFillIncrement(md.mesh.numberofvertices,1,1));
+			checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements, 3]);
+			if(ArrayAnyEqual(ArrayIsMember(NewArrayFillIncrement(md.mesh.numberofvertices,1,1),ArraySort(ArrayUnique(MatrixToList(md.mesh.elements)))),0)){
+				md.checkmessage('orphan nodes have been found. Check the mesh outline');
+			}
+			checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message',"'mesh.average_vertex_connectivity' should be at least 9 in 2d");
+			checkfield(md,'fieldname','mesh.segments','NaN',1,'Inf',1,'>',0,'size',[NaN, 3]);
+
+			switch(solution){
+			case ThermalSolutionEnum():
+				checkmessage(md,'thermal not supported for 2d mesh');
+				break;
+			default:
+				break
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'name','md.mesh.domain_type','data',StringToEnum('Domain' + this.domaintype()),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',this.dimension(),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.elementtype','data',StringToEnum(this.elementtype()),'format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'name','md.mesh.z','data',NewArrayFill(this.numberofvertices,0),'format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','vertexonboundary','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','segments','format','DoubleMat','mattype',3);
+		}//}}}
+		this.fix=function() { //{{{
+			//Transform objects into Float64Arrays:
+			this.x=FloatFix(this.x,this.numberofvertices); 
+			this.y=FloatFix(this.y,this.numberofvertices); 
+			this.edges=NullFix(this.edges,NaN);
+			this.vertexonboundary=FloatFix(this.vertexonboundary,this.numberofvertices); 
+			this.segmentmarkers=FloatFix(this.segmentmarkers,this.segments.length);
+			this.extractedvertices=NullFix(this.extractedvertices,NaN);
+			this.extractedelements=NullFix(this.extractedelements,NaN);
+			this.lat=NullFix(this.lat,NaN);
+			this.long=NullFix(this.long,NaN);
+		}//}}}
+
+	//properties 
+	// {{{
+		this.x                           = NaN;
+		this.y                           = NaN;
+		this.elements                    = NaN;
+		this.numberofelements            = 0;
+		this.numberofvertices            = 0;
+		this.numberofedges               = 0;
+
+		this.lat                         = NaN;
+		this.long                        = NaN;
+		this.epsg                        = 0;
+
+		this.vertexonboundary            = NaN;
+
+		this.edges                       = NaN;
+		this.segments                    = NaN;
+		this.segmentmarkers              = NaN;
+		this.vertexconnectivity          = NaN;
+		this.elementconnectivity         = NaN;
+		this.average_vertex_connectivity = 0;
+
+		this.extractedvertices           = NaN;
+		this.extractedelements           = NaN;
+
+		this.setdefaultparameters();
+		//}}}
+}
+//MESH3DSURFACE class definition
+//
+//   Usage:
+//      mesh3dsurface= new mesh3dsurface();
+
+function mesh3dsurface () {
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+
+			//the connectivity is the averaged number of nodes linked to a
+			//given node through an edge. This connectivity is used to initially
+			//allocate memory to the stiffness matrix. A value of 16 seems to
+			//give a good memory/time ration. This value can be checked in
+			//trunk/test/Miscellaneous/runme.m
+			this.average_vertex_connectivity=25;
+		}
+		// }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   2D tria Mesh (3D surface):")); 
+
+			console.log(sprintf("\n      Elements and vertices:"));
+			fielddisplay(this,"numberofelements","number of elements");
+			fielddisplay(this,"numberofvertices","number of vertices");
+			fielddisplay(this,"elements","vertex indices of the mesh elements");
+			fielddisplay(this,"x","vertices x coordinate [m]");
+			fielddisplay(this,"y","vertices y coordinate [m]");
+			fielddisplay(this,"z","vertices z coordinate [m]");
+			fielddisplay(this,"edges","edges of the 2d mesh (vertex1 vertex2 element1 element2)");
+			fielddisplay(this,"numberofedges","number of edges of the 2d mesh");
+
+			console.log(sprintf("\n      Properties:"));
+			fielddisplay(this,"vertexonboundary","vertices on the boundary of the domain flag list");
+			fielddisplay(this,"segments","edges on domain boundary (vertex1 vertex2 element)");
+			fielddisplay(this,"segmentmarkers","number associated to each segment");
+			fielddisplay(this,"vertexconnectivity","list of vertices connected to vertex_i");
+			fielddisplay(this,"elementconnectivity","list of vertices connected to element_i");
+			fielddisplay(this,"average_vertex_connectivity","average number of vertices connected to one vertex");
+
+			console.log(sprintf("\n      Extracted model:"));
+			fielddisplay(this,"extractedvertices","vertices extracted from the model");
+			fielddisplay(this,"extractedelements","elements extracted from the model");
+
+			console.log(sprintf("\n      Projection:"));
+			fielddisplay(this,"lat","vertices latitude [degrees]");
+			fielddisplay(this,"long","vertices longitude [degrees]");
+			fielddisplay(this,"r","vertices radius [m]");
+		} //}}}
+		this.classname = function () { //{{{
+			return "mesh3dsurface";
+		} //}}}
+		this.domaintype=function (){ // {{{
+			return '3Dsurface';
+		} // }}}
+		this.dimension = function () { //{{{
+			return 2;
+		} //}}}
+		this.elementtype = function() {//{{{
+			return 'Tria';
+		} // }}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.lat','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.long','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.r','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',NewArrayFillIncrement(md.mesh.numberofvertices,1,1));
+			checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements, 3]);
+			if(ArrayAnyEqual(ArrayIsMember(NewArrayFillIncrement(md.mesh.numberofvertices,1,1),ArraySort(ArrayUnique(MatrixToList(md.mesh.elements)))),0)){
+				md.checkmessage('orphan nodes have been found. Check the mesh outline');
+			}
+			checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message',"'mesh.average_vertex_connectivity' should be at least 9 in 2d");
+			checkfield(md,'fieldname','mesh.segments','NaN',1,'Inf',1,'>',0,'size',[NaN, 3]);
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'name','md.mesh.domain_type','data',StringToEnum('Domain' + this.domaintype()),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',this.dimension(),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.elementtype','data',StringToEnum(this.elementtype()),'format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','z','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','lat','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','long','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','r','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',this,'fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','average_vertex_connectivity','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','vertexonboundary','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','segments','format','DoubleMat','mattype',3);
+		}//}}}
+		this.fix=function() { //{{{
+			//Transform objects into Float64Arrays:
+			this.x=FloatFix(this.x,this.numberofvertices); 
+			this.y=FloatFix(this.y,this.numberofvertices); 
+			this.z=FloatFix(this.y,this.numberofvertices); 
+			this.r=FloatFix(this.y,this.numberofvertices); 
+			this.edges=NullFix(this.edges,NaN);
+			this.vertexonboundary=FloatFix(this.vertexonboundary,this.numberofvertices); 
+			this.segmentmarkers=FloatFix(this.segmentmarkers,this.segments.length);
+			this.extractedvertices=NullFix(this.extractedvertices,NaN);
+			this.extractedelements=NullFix(this.extractedelements,NaN);
+			this.lat=NullFix(this.lat,NaN);
+			this.long=NullFix(this.long,NaN);
+		}//}}}
+
+	//properties 
+	// {{{
+		this.x                           = NaN;
+		this.y                           = NaN;
+		this.z                           = NaN;
+		this.elements                    = NaN;
+		this.numberofelements            = 0;
+		this.numberofvertices            = 0;
+		this.numberofedges               = 0;
+
+		this.lat                         = NaN;
+		this.long                        = NaN;
+		this.r                           = NaN;
+
+		this.vertexonboundary            = NaN;
+		this.edges                       = NaN;
+		this.segments                    = NaN;
+		this.segmentmarkers              = NaN;
+		this.vertexconnectivity          = NaN;
+		this.elementconnectivity         = NaN;
+		this.average_vertex_connectivity = 0;
+
+		this.extractedvertices           = NaN;
+		this.extractedelements           = NaN;
+
+		this.setdefaultparameters();
+		//}}}
+}
+//MISCELLANEOUS class definition
+//
+//   Usage:
+//      miscellaneous=new miscellaneous();
+
+function miscellaneous (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   miscellaneous parameters:'));
+
+		fielddisplay(this,'notes','notes in a cell of strings');
+		fielddisplay(this,'name','model name');
+		fielddisplay(this,'dummy','empty field to store some data');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "miscellaneous";
+	}// }}}
+		this.checkconsistency= function(md,solution,analyses) {// {{{
+
+			checkfield(md,'fieldname','miscellaneous.name','empty',1);
+		}// }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','name','format','String');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.notes = '';
+	this.name  = '';
+	this.dummy = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
+//MODEL class definition
+//
+//   Usage:
+//      md = new model()
+
+function model () {
+	//methods
+		this.disp = function() { //{{{
+			console.log(sprintf("class model echo: "));
+			console.log(sprintf("%19s: %-22s -- %s","mesh"            ,"[1x1 " + typeof(this.mesh) + "]","mesh properties"));
+			console.log(sprintf("%19s: %-22s -- %s","mask"            ,"[1x1 " + typeof(this.mask) + "]","defines grounded and floating elements"));
+			console.log(sprintf("%19s: %-22s -- %s","geometry"        ,"[1x1 " + typeof(this.geometry) + "]","surface elevation, bedrock topography, ice thickness,..."));
+			console.log(sprintf("%19s: %-22s -- %s","constants"       ,"[1x1 " + typeof(this.constants) + "]","physical constants"));
+			console.log(sprintf("%19s: %-22s -- %s","smb"             ,"[1x1 " + typeof(this.smb) + "]","surface mass balance"));
+			console.log(sprintf("%19s: %-22s -- %s","basalforcings"   ,"[1x1 " + typeof(this.basalforcings) + "]","bed forcings"));
+			console.log(sprintf("%19s: %-22s -- %s","materials"       ,"[1x1 " + typeof(this.materials) + "]","material properties"));
+			console.log(sprintf("%19s: %-22s -- %s","damage"          ,"[1x1 " + typeof(this.damage) + "]","parameters for damage evolution solution"));
+			console.log(sprintf("%19s: %-22s -- %s","friction"        ,"[1x1 " + typeof(this.friction) + "]","basal friction/drag properties"));
+			console.log(sprintf("%19s: %-22s -- %s","flowequation"    ,"[1x1 " + typeof(this.flowequation) + "]","flow equations"));
+			console.log(sprintf("%19s: %-22s -- %s","timestepping"    ,"[1x1 " + typeof(this.timestepping) + "]","time stepping for trans models"));
+			console.log(sprintf("%19s: %-22s -- %s","initialization"  ,"[1x1 " + typeof(this.initialization) + "]","initial guess/state"));
+			console.log(sprintf("%19s: %-22s -- %s","rifts"           ,"[1x1 " + typeof(this.rifts) + "]","rifts properties"));
+			console.log(sprintf("%19s: %-22s -- %s","slr"             ,"[1x1 " + typeof(this.slr) + "]","slr forcings"));
+			console.log(sprintf("%19s: %-22s -- %s","debug"           ,"[1x1 " + typeof(this.debug) + "]","debugging tools (valgrind, gprof)"));
+			console.log(sprintf("%19s: %-22s -- %s","verbose"         ,"[1x1 " + typeof(this.verbose) + "]","verbosity level in solve"));
+			console.log(sprintf("%19s: %-22s -- %s","settings"        ,"[1x1 " + typeof(this.settings) + "]","settings properties"));
+			console.log(sprintf("%19s: %-22s -- %s","toolkits"        ,"[1x1 " + typeof(this.toolkits) + "]","PETSc options for each solution"));
+			console.log(sprintf("%19s: %-22s -- %s","cluster"         ,"[1x1 " + typeof(this.cluster) + "]","cluster parameters (number of cpus...)"));
+			console.log(sprintf("%19s: %-22s -- %s","balancethickness","[1x1 " + typeof(this.balancethickness) + "]","parameters for balancethickness solution"));
+			console.log(sprintf("%19s: %-22s -- %s","stressbalance"   ,"[1x1 " + typeof(this.stressbalance) + "]","parameters for stressbalance solution"));
+			console.log(sprintf("%19s: %-22s -- %s","groundingline"   ,"[1x1 " + typeof(this.groundingline) + "]","parameters for groundingline solution"));
+			console.log(sprintf("%19s: %-22s -- %s","hydrology"       ,"[1x1 " + typeof(this.hydrology) + "]","parameters for hydrology solution"));
+			console.log(sprintf("%19s: %-22s -- %s","masstransport"   ,"[1x1 " + typeof(this.masstransport) + "]","parameters for masstransport solution"));
+			console.log(sprintf("%19s: %-22s -- %s","thermal"         ,"[1x1 " + typeof(this.thermal) + "]","parameters for thermal solution"));
+			console.log(sprintf("%19s: %-22s -- %s","steadystate"     ,"[1x1 " + typeof(this.steadystate) + "]","parameters for steadystate solution"));
+			console.log(sprintf("%19s: %-22s -- %s","trans"       ,"[1x1 " + typeof(this.trans) + "]","parameters for trans solution"));
+			console.log(sprintf("%19s: %-22s -- %s","levelset"        ,"[1x1 " + typeof(this.levelset) + "]","parameters for moving boundaries (level-set method)"));
+			console.log(sprintf("%19s: %-22s -- %s","calving"         ,"[1x1 " + typeof(this.calving) + "]","parameters for calving"));
+			console.log(sprintf("%19s: %-22s -- %s","gia"             ,"[1x1 " + typeof(this.gia) + "]","parameters for gia solution"));
+			console.log(sprintf("%19s: %-22s -- %s","autodiff"        ,"[1x1 " + typeof(this.autodiff) + "]","automatic differentiation parameters"));
+			console.log(sprintf("%19s: %-22s -- %s","flaim"           ,"[1x1 " + typeof(this.flaim) + "]","flaim parameters"));
+			console.log(sprintf("%19s: %-22s -- %s","inversion"       ,"[1x1 " + typeof(this.inversion) + "]","parameters for inverse methods"));
+			console.log(sprintf("%19s: %-22s -- %s","qmu"             ,"[1x1 " + typeof(this.qmu) + "]","dakota properties"));
+			console.log(sprintf("%19s: %-22s -- %s","outputdefinition","[1x1 " + typeof(this.outputdefinition) + "]","output definition"));
+			console.log(sprintf("%19s: %-22s -- %s","results"         ,"[1x1 " + typeof(this.results) + "]","model results"));
+			console.log(sprintf("%19s: %-22s -- %s","radaroverlay"    ,"[1x1 " + typeof(this.radaroverlay) + "]","radar image for plot overlay"));
+			console.log(sprintf("%19s: %-22s -- %s","miscellaneous"   ,"[1x1 " + typeof(this.miscellaneous) + "]","miscellaneous fields"));
+		} //}}}
+		this.setdefaultparameters = function () { // {{{
+
+			//initialize subclasses
+			this.mesh             = new mesh2d();
+			this.mask             = new mask();
+			this.constants        = new constants();
+			this.geometry         = new geometry();
+			this.initialization   = new initialization();
+			this.smb              = new SMBforcing();
+			this.basalforcings    = new basalforcings();
+			this.friction         = new friction();
+			this.rifts            = new rifts();
+			this.slr              = new slr();
+			this.timestepping     = new timestepping();
+			this.groundingline    = new groundingline();
+			this.materials        = new matice();
+			this.damage           = new damage();
+			this.flowequation     = new flowequation();
+			this.debug            = new debug();
+			this.verbose          = new verbose();
+			this.settings         = new settings();
+			this.toolkits         = new toolkits();
+			this.cluster          = new local();
+			this.balancethickness = new balancethickness();
+			this.stressbalance    = new stressbalance();
+			this.hydrology        = new hydrologyshreve();
+			this.masstransport    = new masstransport();
+			this.thermal          = new thermal();
+			this.steadystate      = new steadystate();
+			this.trans            = new trans();
+			this.levelset		  = new levelset();
+			this.calving          = new calving();
+			this.gia              = new gia();
+			this.autodiff         = new autodiff();
+			this.flaim            = new flaim();
+			this.inversion        = new inversion();
+			this.qmu              = new qmu();
+			this.radaroverlay     = new radaroverlay();
+			this.results          = {};
+			this.outputdefinition = new outputdefinition();
+			this.miscellaneous    = new miscellaneous();
+			this.priv             = new priv();
+		} //}}}
+		this.checkmessage = function(string){ //{{{
+			console.log('model not consistent: ' + string);
+			md.private.isconsistent=false;
+		} //}}}
+		this.fix = function(){ //{{{
+
+			for (var field in this){
+
+				//Some properties do not need to be fixed
+				if (field == 'results' | field =='radaroverlay' | field == 'toolkits' | field =='cluster' | field == 'flaim' | field == 'priv') continue;
+
+				//Check that current field is a class
+				if(typeof this[field] == 'function'){
+					continue;
+				}
+
+				//Fix current object
+				this[field].fix(this);
+			}
+
+		} //}}}
+	//properties
+	// {{{
+		//Careful here: no other class should be used as default value this is a bug of matlab
+		this.mesh             = 0;
+		this.mask             = 0;
+
+		this.geometry         = 0;
+		this.constants        = 0;
+		this.smb              = 0;
+		this.basalforcings    = 0;
+		this.materials        = 0;
+		this.damage           = 0;
+		this.friction         = 0;
+		this.flowequation     = 0;
+		this.timestepping     = 0;
+		this.initialization   = 0;
+		this.rifts            = 0;
+		this.slr              = 0;
+
+		this.debug            = 0;
+		this.verbose          = 0;
+		this.settings         = 0;
+		this.toolkits         = 0;
+		this.cluster          = 0;
+
+		this.balancethickness = 0;
+		this.stressbalance    = 0;
+		this.groundingline    = 0;
+		this.hydrology        = 0;
+		this.masstransport    = 0;
+		this.thermal          = 0;
+		this.steadystate      = 0;
+		this.trans            = 0;
+		this.levelset         = 0;
+		this.calving          = 0;
+		this.gia              = 0;
+
+		this.autodiff         = 0;
+		this.flaim            = 0;
+		this.inversion        = 0;
+		this.qmu              = 0;
+
+		this.results          = 0;
+		this.outputdefinition = 0;
+		this.radaroverlay     = 0;
+		this.miscellaneous    = 0;
+		this.priv             = 0;
+
+		//set default values for fields
+		this.setdefaultparameters();
+
+		//}}}
+}
+//OUTPUTDEFINITION class definition
+//
+//   Usage:
+//      outputdefinition=new outputdefinition();
+
+function outputdefinition (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		this.definitions=[];
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   outputdefinition:'));
+		fielddisplay(this,'definitions','list of potential outputs that can be requested, but which need additional data to be defined');
+
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "outputdefinition";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			checkfield(md,'fieldname','outputdefinition.definitions','cell',1);
+
+			for (var i=0;i<this.definitions.length;i++){
+				this.definitions[i].checkconsistency(md,solution,analyses);
+			}
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+		var enums=NewArrayFill(this.definitions.length,0);
+		for (var i=0;i<this.definitions.length;i++){
+			this.definitions[i].marshall(md,fid,prefix);
+			classdefinition=this.definitions[i].classname();
+			classdefinition=classdefinition.charAt(0).tuUpperCase() + classdefinition.slice(1); //so it matches our enums definitions.
+			enums[i]=StringToEnum(classdefinition);
+		}
+		enums=ArrayUnique(enums);
+		if (enums.length==0){ enums=NaN; }
+		WriteData(fid,prefix,'data',enums,'name','md.outputdefinition.list','format','DoubleMat','mattype',1);
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.definitions                 = [];
+	this.setdefaultparameters();
+	//}}}
+}
+//PAIROPTIONS class definition
+//
+//   Usage:
+//      pairoptions=pairoptions();
+//      pairoptions=pairoptions('module',true,'solver',false);
+
+function pairoptions(args) { 
+
+
+	//methods
+	this.constructor = function (args) {// {{{
+
+		//initialize list
+		if (args.length==0){
+			this.list=[];
+		}
+		else{
+
+			//check length of input
+			if (args.length % 2){
+				throw Error('pairoptions error message: invalid parameter/value pair arguments') 
+			}
+			numoptions = args.length/2;
+
+			//Allocate memory
+			this.list= Create2DArray(numoptions,3);
+
+			//go through args and build list of obj
+			for (var i=0;i<numoptions;i++){
+				if (typeof args[2*i] === 'string'){
+					this.list[i][0]=args[2*i];
+					this.list[i][1]=args[2*i+1];
+					this.list[i][2]=false;  //used?
+				}
+				else{
+					//option is not a string, ignore it
+					console.log(sprintf('%s%i%s\n','WARNING: option number ',i,' is not a string, it will be ignored'));
+					this.list[i][0]=[];
+					this.list[i][1]=[];
+					this.list[i][2]=[];
+					continue
+				}
+			}
+		}
+	}// }}}
+	this.addfield = function (field, value){ // {{{
+		if (typeof field === 'string'){
+			this.list.push([field,value,false]);
+		}
+	}// }}}
+	this.numoptions = function (){ // {{{
+		return this.list.length;
+	}// }}}
+	this.addfielddefault = function (field,value){ // {{{
+		//ADDFIELDDEFAULT - add a field to an options list if it does not exist
+		if (typeof field === 'string'){
+			if (!this.exist(field)){
+				this.list.push([field,value,true]); //true is a default so user will not be notified if not used
+			}
+		}
+	} // }}}
+	this.AssignObjectFields = function(object){ // {{{
+		//ASSIGNOBJECTFIELDS - assign object fields from options
+		for (var i=0;i<list.length;i++){
+			fieldname=list[i][0];
+			fieldvalue=list[i][1];
+			if (fieldname in object){
+				obj2[fieldname]=fieldvalue;
+			}
+			else{
+				console.log(sprintf("%s'%s'%s%s\n",'WARNING: ',fieldname, 'is not a property of ',typeof object));
+			}
+		}
+	} // }}}
+	this.changefieldvalue = function(field,newvalue){ // {{{
+		//CHANGEOPTIONVALUE - change the value of an option in an option list
+
+		var found=0;
+		for (var i=0;i<this.list.length;i++){
+			if (this.list[i][0] === field){
+				found=1;
+			}
+		}
+
+		if (found==0){
+			this.list.push([field,newvalue,true]); // do not notify user if unused
+		}
+		else{
+			for (var i=0;i<this.list.length;i++){
+				if (this.list[i][0] === field){
+					this.list[i][1] = newvalue;
+				}
+			}
+		}
+	} // }}}
+	this.deleteduplicates = function(warn){ // {{{
+		//DELETEDUPLICATES - delete duplicates in an option list
+
+		//track the first occurrence of each option
+		var indices=NewArrayFill(this.list.length,0);
+		for (var i=0;i<this.list.length;i++){
+			if(indices[i]==0){
+				for(var j=i+1;j<this.list.length;j++){
+					if (this.list[i][0] === this.list[j][0])indices[j]=1;
+				}
+			}
+		}
+		sumindices=ArraySum(indices);
+
+		//remove duplicates from the options list
+		newlist=Create2DArray(sumindices,3);
+		var count=0;
+		for (var i=0;i<this.list.length;i++){
+			if (indices[i]==1) if (warn) console.log(sprintf("%s%s%s\n",'WARNING: option ', this.list[i,0],' appeared more than once. Only its first occurrence will be kept'));
+			else{
+				newlist[count]=this.list[i];
+				count++;
+			}
+		}
+	} // }}}
+	this.displayunused = function (){ // {{{
+		//DISPLAYUNUSED - display unused options
+
+		for (var i=0;i<this.list.length;i++){
+			if (!(this.list[i][2])){
+				console.log(sprintf("%s%s%s\n",'WARNING: option ',this.list[i][0],' was not used'));
+			}
+		}
+	}// }}}
+	this.disp = function (){ //{{{
+		if (this.list.length){
+			console.log(sprintf('   pairoptions: (%i)\n',this.list.length));
+			for (var i=0;i<this.list.length;i++){
+				if (typeof this.list[i][1] === 'string'){
+					console.log(sprintf("     field: '%s' value(string): ''%s''",this.list[i][0],this.list[i][1]));
+				}
+				else if( typeof this.list[i][1] === 'number'){
+					console.log(sprintf("     field: '%s' value(number): %g",this.list[i][0],this.list[i][1]));
+				}
+				else if( IsArray(this.list[i][1])){
+					console.log(sprintf("     field: '%s' value(array): [%i]",this.list[i][0],this.list[i][1].length));
+				}
+			}
+		}
+		else{
+			console.log(sprintf('   list: empty'));
+		}
+	}// }}}
+	this.exist = function (field) { //{{{
+
+		//EXIST - check if the option exists
+		//some argument checking: 
+		if (!(typeof field === 'string')){
+			throw Error('exist error message: field should be a string');
+		}
+
+		//Recover option
+		var bool=0;
+		for (var i=0;i<this.list.length;i++){
+			if (this.list[i][0] === field){
+				bool=1;
+				this.list[i][2]=1; //It is a default so user will not be notified if not used
+				break;
+			}
+		}
+		return bool;
+	} // }}}
+	this.fieldoccurrences = function(field){ // {{{
+
+		//FIELDOCCURRENCES - get number of occurrence of a field
+		var num=0;
+
+		//check input 
+		if (!(typeof field === 'string')){
+			throw Error('exist error message: field should be a string');
+		}
+
+		//count number of occurrences:
+		for (var i=0;i<this.list.length;i++) if (this.list[i][0] === field)num++;
+
+		return num;
+
+	} // }}}
+	this.getfieldvalue = function(field){ // {{{
+		//GETOPTION - get the value of an option
+		//
+		//   Usage:
+		//      value=pairoptions.getfieldvalue(field,varargin)
+		//
+		//   Find an option value from a field. A default option
+		//   can be given in input if the field does not exist
+		//
+		//   Examples:
+		//      value=pairoptions.getfieldvalue('caxis');
+		//      value=pairoptions.getfieldvalue('caxis',[0 2]);
+
+		//some argument checking: 
+		if(!(arguments.length==1 | arguments.length==2)){
+			error('pairoptions usage error: getfieldvalue bad usage');
+		}
+
+		if (!(typeof field === 'string')){
+			throw Error('pairoptions error message: field should be a string');
+		}
+
+		//Recover option
+		for(var i=0;i<this.list.length;i++){
+			if (this.list[i][0] === field){
+				this.list[i][2]=1; //option used
+				return value=this.list[i][1];
+			}
+		}
+
+		//The option has not been found, output default if provided
+		if (arguments.length==2){
+			return arguments[1];
+		}
+		else{
+            console.log(arguments);
+			throw Error(sprintf("%s%s%s\n",'error message: field ',field,' has not been provided by user (and no default value has been specified)'));
+		}
+	} // }}}
+	this.removefield = function(field,warn){// {{{
+
+		//REMOVEFIELD - delete a field in an option list
+		//
+		//   Usage:
+		//      options.removefield(field,warn)
+		//
+		//   if warn==1 display an info message to warn user that
+		//   some of his options have been removed.
+
+		//check if field exists
+		if (this.exist(field)){
+
+			var indices;
+			var count;
+
+			//find where the field is located
+			indices=NewArrayFill(this.list.length,1);
+			for (var i=0;i<this.list.length;i++)if(this.list[i][1] === field)indices[i]=0;
+			sumindices=ArraySum(indices);
+
+			//remove duplicates from the options list
+			newlist=Create2DArray(sumindices,3);
+
+			count=0;
+			for (var i=0;i<this.list.length;i++){
+				if(!(this.list[i][1] === field)){
+					newlist[count]=this.list[i];
+					count++;
+				}
+			}
+			this.list=newlist;
+
+			//warn user if requested
+			if (warn){
+				console.log(sprintf("%s%s%s\n",'removefield info: option ',field,' has been removed from the list of options.'));
+			}
+		}
+	} // }}}
+	this.marshall = function(fid,firstindex){// {{{
+
+		throw Error('pairoptions marshall error: not implemented yet!');
+	} // }}}
+
+	//properties 
+	this.list         = [];
+	this.constructor(args);
+}
+//PLOTOPTIONS class definition
+//
+//   Usage:
+//      plotoptions = plotoptions(varargin)
+
+function plotoptions(args) {
+	//methods
+	this.disp = function (){ // {{{
+		console.log(sprintf('\nplotoptions = \n'));
+		console.log(sprintf('   figurenumber: %i',this.figurenumber));
+		console.log(sprintf('   numberofplots: %i',this.numberofplots));
+		if (this.list.length){
+			for (var i=0;i<this.list.length;i++){
+				console.log(sprintf('\n   options of plot number %i',i+1));
+				this.list[i].disp();
+			}
+		}
+		else{
+			console.log(sprintf('   list: empty'));
+		}
+	}
+	//}}}
+	this.constructor = function (args){ // {{{
+
+		//check length of input
+		if (args.length % 2){
+			for (i=0;i<args.length;i+=2){
+				if (!(typeof args[i] === 'string')){
+					console.log('Last valid option: ' + args[i-2]);
+					break;
+				}
+			}
+			throw Error('plotoptions error message: invalid parameter/value pair arguments');
+		}
+
+		//go through varargin and build list (like pairoptions)
+		var rawoptions=new pairoptions(args);
+		numoptions=rawoptions.numoptions();
+
+		var counter=0;
+		for (i=0;i<numoptions;i++){
+			if(typeof args[2*i] === 'string')counter++;
+		}
+		rawlist=Create2DArray(counter,2);
+		var counter=0;
+		for (i=0;i<numoptions;i++){
+			optionname=args[2*i];
+			optionval=args[2*i+1];
+			if(typeof optionname === 'string'){
+				rawlist[counter][0]=optionname;
+				rawlist[counter][1]=optionval;
+				counter++;
+			}
+			else{
+				//option is not a string, ignore it
+				console.log(sprintf("%s%i%s\n",'WARNING: option number ',i,' is not a string, it will be ignored'));
+				rawlist[counter]=[];
+				continue
+			}
+		}
+		
+			
+		//get number of data to be plotted
+		numberofplots=rawoptions.fieldoccurrences('data');
+		this.numberofplots=numberofplots;
+
+		//figure out wether alloptions flog is on
+		if (rawoptions.getfieldvalue('alloptions','off') === 'on') allflag=1;
+		else allflag=0;
+
+		//initialize list
+		var list=new Array(numberofplots);
+		for (i=0;i<numberofplots;i++){
+			list[i]=new pairoptions([]);
+		}
+				
+		//process plot options
+		for(var i=0;i<rawlist.length;i++){
+
+			//If alloptions flag has is on, apply to all plots
+			if (allflag & !(rawlist[i][0] === 'data') & (rawlist[i][0].indexOf('#') == -1)){
+				for(var j=0;j<numberofplots;j++){
+					list[j].addfield(rawlist[i][0],rawlist[i][1]);
+				}
+			}
+			else if (rawlist[i][0].indexOf('#') != -1){ //option contains '#'
+
+				//get suplot(s) associated
+				string=rawlist[i][0].split('#');
+				plotnums=string[1];
+				field=string[0];
+
+				//divide plotnums if there is a comma ','
+				plotnums=plotnums.split(',');
+
+				//loop over plotnums
+				for (k=0;k<plotnums.length;k++){
+					plotnum=plotnums[k];
+
+					//Empty
+					if (plotnum === '') continue;
+
+					else if (plotnum === 'all'){ //pound all
+						for(var j=0;j<numberofplots;j++){
+							list[j].addfield(field,rawlist[i][1]);
+						}
+					}
+					else if (plotnum.indexOf('-')!=-1){  //pound i-j
+						nums=plotnum.split('-');
+						if (nums.length!=2) continue;
+						if ((nums[0] == '') | (nums[1] === '')){
+							throw Error(sprintf("%s%s\n",'the option #i-j is not set properly for ',field));
+						}
+						for (j=(Number(nums[0])-1);j<(Number(nums[1])); j++){
+							list[j].addfield(field,rawlist[i][1]);
+						}
+					}
+					else{ //pound i
+						//assign to subplot
+						if (Number(plotnum)>numberofplots){
+							throw Error(sprintf("%s%s%s%i%s\n",'plotoptions error message: ',field,' cannot be assigned (',plotnum,' exceeds maximum number of plot)'));
+						}
+						list[Number(plotnum)-1].addfield(field,rawlist[i][1]);
+					}
+				}
+			}
+			else{ //assign option field to corresponding subplot
+
+				
+				//go through all subplot and assign to the first one free
+				var inc=0;
+				
+				while (inc<numberofplots){
+					
+					if (!list[inc].exist(rawlist[i][0])){
+						list[inc].addfield(rawlist[i][0],rawlist[i][1]);
+						break
+					}
+					else inc++;
+				}
+
+				if (inc>numberofplots-1){
+					console.log(sprintf("%s%s%s\n",'plot info message: too many ',rawlist[i][0],' options'));
+				}
+			}
+		}
+
+		//check that there is no duplicates
+		for (var i=0;i<numberofplots;i++) list[i].deleteduplicates();
+
+		//allocate canvasid automatically
+		for (var i=0;i<numberofplots;i++) {
+			if (!list[i].exist('canvasid')) {
+				list[i].addfield('canvasid',i);
+			}
+		}
+
+		//Get figure number (should be in options for subplot 1)
+		this.figurenumber=list[0].getfieldvalue('figure',1);
+		list[0].removefield('figure',0);
+
+		//asign output
+		this.list=list;
+
+	} //}}}
+	//properties
+	// {{{
+	this.numberofplots = 0;
+	this.figurenumber  = 1;
+	this.list          = [];
+	this.constructor(args);
+	//}}}
+}
+//PRIV class definition
+//
+//   Usage:
+//      priv =new priv();
+
+function priv (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   private parameters: do not change'));
+
+		fielddisplay(this,'isconsistent','is model this consistent');
+		fielddisplay(this,'runtimename','name of the run launched');
+		fielddisplay(this,'bamg','structure with mesh properties constructed if bamg is used to mesh the domain');
+		fielddisplay(this,'solution','type of solution launched');
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses){ // {{{
+
+	}// % }}}
+	//properties 
+	// {{{
+	this.isconsistent = true;
+	this.runtimename  = '';
+	this.bamg         = {};
+	this.solution     = '';
+
+	this.setdefaultparameters();
+	//}}}
+}
+//QMU class definition
+//
+//   Usage:
+//      qmu=new qmu();
+
+function qmu (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   qmu parameters:'));
+
+		/*fielddisplay(this,'isdakota','is qmu analysis activated?');
+		for (var i=0;i<this.variables.length;i++){
+			console.log(sprintf('         variables%s:  (arrays of each variable class)',...
+						string_dim(this.variables,i)));
+		}
+		fnames=fieldnames(this.variables(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+
+			for j=1:numel(fnames)
+				console.log(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+							fnames{j},size(this.variables.(fnames{j})),class(this.variables.(fnames{j}))));
+		end
+			end
+			for i=1:numel(this.responses)
+				console.log(sprintf('         responses%s:  (arrays of each response class)',...
+							string_dim(this.responses,i)));
+		fnames=fieldnames(this.responses(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+
+			for j=1:numel(fnames)
+				console.log(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+							fnames{j},size(this.responses.(fnames{j})),class(this.responses.(fnames{j}))));
+		end
+			end
+			fielddisplay(this,'numberofresponses','number of responses') 
+			for i=1:numel(this.method);
+		if strcmp(class(this.method(i)),'dakota_method')
+			console.log(sprintf('            method%s :    ''%s''',...
+						string_dim(this.method,i),this.method(i).method));
+		end
+			end
+			for i=1:numel(this.params)
+				console.log(sprintf('         params%s:  (array of method-independent parameters)',...
+							string_dim(this.params,i)));
+		fnames=fieldnames(this.params(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+
+			for j=1:numel(fnames)
+				console.log(sprintf(['            %-' num2str(maxlen+1) 's: %s'],...
+							fnames{j},any2str(this.params(i).(fnames{j}))));
+		end
+			end
+			for i=1:numel(this.results)
+				console.log(sprintf('         results%s:  (information from dakota files)',...
+							string_dim(this.results,i)));
+		fnames=fieldnames(this.results(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+
+			for j=1:numel(fnames)
+				console.log(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+							fnames{j},size(this.results.(fnames{j})),class(this.results.(fnames{j}))));
+		end
+			end
+			fielddisplay(this,'partition','user provided mesh partitioning, defaults to metis if not specified') 
+			fielddisplay(this,'numberofpartitions','number of partitions for semi-discrete qmu') 
+			fielddisplay(this,'variabledescriptors','');
+		fielddisplay(this,'responsedescriptors','');
+		fielddisplay(this,'method','array of dakota_method class');
+		fielddisplay(this,'mass_flux_profile_directory','directory for mass flux profiles');
+		fielddisplay(this,'mass_flux_profiles','list of mass_flux profiles');
+		fielddisplay(this,'mass_flux_segments','');
+		fielddisplay(this,'adjacency','');
+		fielddisplay(this,'vertex_weight','weight applied to each mesh vertex');
+		*/
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "qmu";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			///Early return
+			if (!md.qmu.isdakota) return;
+			else md.checkmessage('qmu runs not supported yet!');
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','isdakota','format','Boolean');
+			if (!this.isdakota){
+				WriteData(fid,prefix,'data',0,'name','md.qmu.mass_flux_segments_present','format','Boolean');
+			}
+			else{
+				WriteData(fid,prefix,'object',this,'fieldname','partition','format','DoubleMat','mattype',2);
+				WriteData(fid,prefix,'object',this,'fieldname','numberofpartitions','format','Integer');
+				WriteData(fid,prefix,'object',this,'fieldname','numberofresponses','format','Integer');
+				WriteData(fid,prefix,'object',this,'fieldname','variabledescriptors','format','StringArray');
+				WriteData(fid,prefix,'object',this,'fieldname','responsedescriptors','format','StringArray');
+				if (this.mass_flux_segments.length){
+					WriteData(fid,prefix,'data',this.mass_flux_segments,'name','md.qmu.mass_flux_segments','format','MatArray');
+					flag=true; 
+				}
+				else flag=false; 
+				WriteData(fid,prefix,'data',flag,'name','md.qmu.mass_flux_segments_present','format','Boolean');
+			}
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+
+	this.isdakota                    = 0;
+	this.variables                   = []
+	this.responses                   = [];
+	this.method                      = []
+	this.params                      = []
+	this.results                     = []
+	this.partition                   = NaN;
+	this.numberofpartitions          = 0;
+	this.numberofresponses           = 0;
+	this.variabledescriptors         = []
+	this.responsedescriptors         = []
+	this.mass_flux_profile_directory = NaN;
+	this.mass_flux_profiles          = NaN;
+	this.mass_flux_segments          = []
+	this.adjacency                   = NaN;
+	this.vertex_weight               = NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
+//RADAROVERLAY class definition
+//
+//   Usage:
+//      radaroverlay=new radaroverlay();
+
+function radaroverlay (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   radaroverlay parameters:'));
+
+		fielddisplay(this,'xlim','corresponding x boundaries[m]');
+		fielddisplay(this,'ylim','corresponding y boundaries [m]');
+		fielddisplay(this,'outerindex','outer triangulation between mesh and bounding box');
+		fielddisplay(this,'outerx','outer triangulation x coordinate between mesh and bounding box');
+		fielddisplay(this,'outery','outer triangulation y coordinate between mesh and bounding box');
+
+	}// }}}
+	//properties 
+	// {{{
+	this.xlim   = NaN;
+	this.ylim   = NaN;
+	this.outerindex   = NaN;
+	this.outerx   = NaN;
+	this.outery   = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
+//RIFTS class definition
+//
+//   Usage:
+//      rifts=new rifts();
+
+function rifts (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.classname= function(){// {{{
+		return "rifts";
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   rifts class echo:'));
+		fielddisplay(this,'riftstruct','structure containing all rift information (vertices coordinates, segments, type of melange, ...)');
+		fielddisplay(this,'riftproperties','');
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+			var numrifts;
+			if (isNaN(this.riftstruct) | this.riftstruct.length==0){
+				numrifts=0;
+			}
+			else{
+				numrifts=this.riftstruct.length;
+			}
+			if (numrifts){
+				if (!(md.mesh.domaintype() == '2Dhorizontal')){
+					md.checkmessage('models with rifts are only supported in 2d for now!');
+				}
+				if (!IsArray(this.riftstruct)){
+					md.checkmessage('rifts.riftstruct should be a structure!');
+				}
+				for(var i=0;i<md.mesh.segmentmarkers.length;i++){
+					if (md.mesh.segmentmarkers[i]>=2){
+						//We have segments with rift markers, but no rift structure!
+						md.checkmessage(['model should be processed for rifts (run meshprocessrifts)!']);
+						break;
+					}
+				}
+				for (var i=0;i<numrifts;i++){
+					md = checkfield(md,'fieldname',sprintf('rifts.riftstruct[%i].fill',i),'values',[WaterEnum(), AirEnum(), IceEnum(), MelangeEnum()]);
+				}
+			}
+			else{
+				if (!isNaN(this.riftstruct)) md.checkmessage('riftstruct should be NaN since numrifts is 0!');
+			}
+		} //}}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var numrifts;
+			//Process rift info
+			if ((this.riftstruct.length==0) | isNaN(this.riftstruct)){
+				numrifts=0;
+			}
+			else{
+				numrifts=this.riftstruct.length;
+			}
+			var numpairs=0;
+			for (var i=0;i<numrifts;i++){
+				numpairs=numpairs+this.riftstruct[i].penaltypairs.length;
+			}
+
+			// 2 for nodes + 2 for elements+ 2 for  normals + 1 for length + 1 for fill + 1 for friction + 1 for fraction + 1 for fractionincrement + 1 for state.
+			data=Create2DArray(numpairs,12);
+			var count=0;
+			for (var i=0;i<numrifts;i++){
+				numpairsforthisrift=this.riftstruct[i].penaltypairs.length;
+				for(var j=0;j<numpairsforthisrift;j++){
+					for(var k=0;k<7;k++)data[count+j][k]=this.riftstruct[i].penaltypairs;
+					data[count+j][7]=this.riftstruct[i].fill;
+					data[count+j][8]=this.riftstruct[i].friction;
+					data[count+j][9]=this.riftstruct[i].fraction;
+					data[count+j][10]=this.riftstruct[i].fractionincrement;
+					data[count+j][11]=this.riftstruct[i].state;
+					count+=numpairsforthisrift;
+				}
+			}
+			WriteData(fid,prefix,'data',numrifts,'name','md.rifts.numrifts','format','Integer');
+			WriteData(fid,prefix,'data',data,'name','md.rifts.riftstruct','format','DoubleMat','mattype',3);
+		}//}}}
+		this.fix=function() { //{{{
+			this.riftstruct=NullFix(this.riftstruct,NaN);
+			this.riftproperties=NullFix(this.riftproperties,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.riftstruct     = NaN;
+	this.riftproperties = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
+//SLR class definition
+//
+//   Usage:
+//      slr=slr();
+
+function slr(){
+	//methods
+		this.setdefaultparameters = function (){ //{{{
+		
+		//Convergence criterion: absolute, relative and residual
+		this.reltol=NaN; //default
+		this.abstol=0.001; //1 mm of sea level rise
+
+		//maximum of non-linear iterations.
+		this.maxiter=10;
+
+		//computational flags: 
+		this.rigid=1;
+		this.elastic=1;
+		this.rotation=1;
+		
+		//tidal love numbers: 
+		this.tide_love_h=0.6149; //degree 2
+		this.tide_love_k=0.3055; //degree 2
+
+		//numerical discretization accuracy
+		this.degacc=.01;
+		
+		//output default:
+		this.requested_outputs=['default'];
+
+		//transitions should be a cell array of vectors: 
+		this.transitions=[];
+		
+		}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			//Early return
+			if(ArrayAnyEqual(ArrayIsMember(SealevelriseAnalysisEnum(),analyses),0))return;
+			
+			md = checkfield(md,'fieldname','slr.deltathickness','NaN',1,'Inf',1,'size',[md.mesh.numberofelements, 1]);
+			md = checkfield(md,'fieldname','slr.sealevel','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			md = checkfield(md,'fieldname','slr.love_h','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.love_k','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.tide_love_h','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.tide_love_k','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.reltol','size',[1, 1]);
+			md = checkfield(md,'fieldname','slr.abstol','size',[1, 1]);
+			md = checkfield(md,'fieldname','slr.maxiter','size',[1, 1],'>=',1);
+			md = checkfield(md,'fieldname','slr.degacc','size',[1, 1],'>=',1e-10);
+			md = checkfield(md,'fieldname','slr.requested_outputs','stringrow',1);
+			
+			//check that love numbers are provided at the same level of accuracy: 
+			if (this.love_h.length != this.love_k.length){
+				throw Error('slr error message: love numbers should be provided at the same level of accuracy');
+			}
+
+		} // }}}
+		this.defaultoutputs = function(md){ // {{{
+			return ['Sealevel'];
+		}//}}}
+	this.classname= function(){// {{{
+		return "slr";
+	}// }}}
+		this.disp= function(){// {{{
+			
+		console.log(sprintf('   Sealevelrise solution parameters:'));
+
+		fielddisplay(this,'deltathickness','thickness change (main loading of the slr solution core [m]');
+		fielddisplay(this,'sealevel','current sea level (prior to computation) [m]');
+		fielddisplay(this,'reltol','sea level rise relative convergence criterion, (default, NaN: not applied)');
+		fielddisplay(this,'abstol','sea level rise absolute convergence criterion, NaN: not applied');
+		fielddisplay(this,'maxiter','maximum number of nonlinear iterations');
+		fielddisplay(this,'love_h','love load number for radial displacement');
+		fielddisplay(this,'love_k','love load number for gravitational potential perturbation');
+		fielddisplay(this,'tide_love_h','tidal love number (degree 2)');
+		fielddisplay(this,'tide_love_k','tidal love number (degree 2)');
+		fielddisplay(this,'rigid','rigid earth graviational potential perturbation');
+		fielddisplay(this,'elastic','elastic earth graviational potential perturbation');
+		fielddisplay(this,'rotation','rotational earth potential perturbation');
+		fielddisplay(this,'degacc',"accuracy (default .01 deg) for numerical discretization of the Green's functions");
+		fielddisplay(this,'transitions','indices into parts of the mesh that will be icecaps');
+		fielddisplay(this,'requested_outputs','additional outputs requested');
+		} //}}}
+			this.marshall=function(md,prefix,fid) { //{{{
+
+			WriteData(fid,prefix,'object',this,'fieldname','deltathickness','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',this,'fieldname','sealevel','mattype',1,'format','DoubleMat','enum',SealevelEnum(),'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,prefix,'object',this,'fieldname','reltol','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','abstol','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','love_h','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','love_k','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','tide_love_h','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','tide_love_k','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','rigid','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','elastic','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','rotation','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','degacc','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','transitions','format','MatArray');
+			
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}
+			WriteData(fid,prefix,'data',outputs,'name','md.slr.requested_outputs','format','StringArray');
+		}//}}}
+		this.fix=function() { //{{{
+			this.deltathickness=NullFix(this.deltathickness,NaN);
+			this.sealevel=NullFix(this.sealevel,NaN);
+			this.maxiter=NullFix(this.maxiter,NaN);
+			this.reltol=NullFix(this.reltol,NaN);
+			this.abstol=NullFix(this.abstol,NaN);
+			this.love_h=NullFix(this.love_h,NaN);
+			this.love_k=NullFix(this.love_k,NaN);
+			this.tide_love_h=NullFix(this.tide_love_h,NaN);
+			this.tide_love_k=NullFix(this.tide_love_k,NaN);
+			this.rigid=NullFix(this.rigid,NaN);
+			this.elastic=NullFix(this.elastic,NaN);
+			this.rotation=NullFix(this.rotation,NaN);
+			this.degacc=NullFix(this.degacc,NaN);
+		}//}}}
+	//properties
+	//{{{
+	this.deltathickness = NaN;
+	this.sealevel       = NaN; 
+	this.maxiter        = 0;
+	this.reltol         = 0;
+	this.abstol         = 0;
+	this.love_h         = 0; //provided by PREM model
+	this.love_k         = 0; //idam
+	this.tide_love_h    = 0; 
+	this.tide_love_k    = 0; 
+	this.rigid          = 0;
+	this.elastic        = 0;
+	this.rotation       = 0;
+	this.degacc         = 0;
+	this.requested_outputs = [];
+	this.transitions    = [];
+	this.setdefaultparameters();
+	//}}}
+}
+//SETTINGS class definition
+//
+//   Usage:
+//      settings=new settings();
+
+function settings (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		//are we short in memory ? (0 faster but requires more memory)
+		this.lowmem=0;
+
+		//i/o:
+		this.io_gather=1;
+
+		//results frequency by default every step
+		this.output_frequency=1;
+
+		//checkpoints frequency, by default never: 
+		this.recording_frequency=0;
+
+		//this option can be activated to load automatically the results
+		//onto the model after a parallel run by waiting for the lock file
+		//N minutes that is generated once the solution has converged
+		//0 to deactivate
+		this.waitonlock=Infinity;
+
+		//upload options: 
+		upload_port         = 0;
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   settings class echo:'));
+		
+		fielddisplay(this,'results_on_nodes','results are output for all the nodes of each element');
+		fielddisplay(this,'io_gather','I/O gathering strategy for result outputs (default 1)');
+		fielddisplay(this,'lowmem','is the memory limited ? (0 or 1)');
+		fielddisplay(this,'output_frequency','frequency at which results are saved in all solutions with multiple time_steps');
+		fielddisplay(this,'recording_frequency','frequency at which the runs are being recorded, allowing for a restart');
+		fielddisplay(this,'waitonlock','maximum number of minutes to wait for batch results (NaN to deactivate)');
+		fielddisplay(this,'upload_server','server hostname where model should be uploaded');
+		fielddisplay(this,'upload_path','path on server where model should be uploaded');
+		fielddisplay(this,'upload_login','server login');
+		fielddisplay(this,'upload_port','port login (default is 0)');
+		fielddisplay(this,'upload_filename','unique id generated when uploading the file to server');
+
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "settings";
+
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { // {{{
+
+			checkfield(md,'fieldname','settings.results_on_nodes','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','settings.io_gather','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','settings.lowmem','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','settings.output_frequency','numel',[1],'>=',1);
+			checkfield(md,'fieldname','settings.recording_frequency','numel',[1],'>=',0);
+			checkfield(md,'fieldname','settings.waitonlock','numel',[1]);
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','results_on_nodes','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','io_gather','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','lowmem','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','output_frequency','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','recording_frequency','format','Integer');
+			if (this.waitonlock>0) WriteData(fid,prefix,'name','md.settings.waitonlock','data',true,'format','Boolean');
+			else WriteData(fid,prefix,'name','md.settings.waitonlock','data',false,'format','Boolean');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.results_on_nodes    = 0;
+	this.io_gather           = 0;
+	this.lowmem              = 0;
+	this.output_frequency    = 0;
+	this.recording_frequency   = 0;
+	this.waitonlock          = 0;
+	this.upload_server       = '';
+	this.upload_path         = '';
+	this.upload_login        = '';
+	this.upload_port         = 0;
+	this.upload_filename     = '';
+	this.setdefaultparameters();
+	//}}}
+}
+//SMBforcing Class definition
+//
+//   Usage:
+//      SMB=SMBforcing();
+
+function SMBforcing(){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		this.requested_outputs=['default'];
+	} // }}}
+	this.disp = function(){ // {{{
+		console.log(sprintf('   surface forcings parameters:'));
+		fielddisplay(this,'mass_balance','surface mass balance [m/yr ice eq]');
+		fielddisplay(this,'requested_outputs','additional outputs requested');
+	} // }}}
+	this.defaultoutputs = function(){ // {{{
+		return '';
+	}//}}}
+    this.classname = function(){ // {{{
+        return "SMBforcing";
+    } // }}}
+    this.extrude = function(md) {//{{{
+        this.mass_balance=project3d(md,'vector',this.mass_balance,'type','node');
+    }//}}}
+    this.initialize = function(md) {// {{{
+
+        if (isNaN(this.mass_balance)){
+            this.mass_balance=NewArrayFill(md.mesh.numberofvertices,0);
+            console.log('      no smb.mass_balance specified: values set as zero');
+        }
+
+    } // }}}
+    this.checkconsistency = function(md,solution,analyses) { //{{{
+
+        if(ArrayAnyEqual(ArrayIsMember(MasstransportAnalysisEnum(),analyses),1)){
+            checkfield(md,'fieldname','smb.mass_balance','timeseries',1,'NaN',1,'Inf',1);
+        }
+        if(ArrayAnyEqual(ArrayIsMember(BalancethicknessAnalysisEnum(),analyses),1)){
+            checkfield(md,'fieldname','smb.mass_balance','size',[md.mesh.numberofvertices,1],'NaN',1,'Inf',1);
+        }
+        checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+
+    } // }}}
+    this.marshall=function(md,prefix,fid) { //{{{
+
+        var yts=365.0*24.0*3600.0;
+
+        WriteData(fid,prefix,'name','md.smb.model','data',SMBforcingEnum(),'format','Integer');
+        WriteData(fid,prefix,'object',this,'class','smb','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+
+        //process requested outputs
+        var outputs = this.requested_outputs.slice();
+        for (var i=0;i<outputs.length;i++){
+            if (outputs[i] == 'default') {
+                outputs.splice(i,1);
+                var newoutputs=this.defaultoutputs(md);
+                for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+            }
+        }
+        WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+    }//}}}
+    this.fix=function() { //{{{
+    }//}}}
+	//properties 
+	this.mass_balance = NaN;
+	this.requested_outputs      = [];
+	this.setdefaultparameters();
+}
+//STEADYSTATE class definition
+//
+//   Usage:
+//      steadystate=new steadystate();
+
+function steadystate (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//maximum of steady state iterations
+		this.maxiter=100;
+
+		//Relative tolerance for the steadystate convertgence
+		this.reltol=0.01;
+
+		//default output
+		this.requested_outputs=['default'];
+
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   steadystate solution parameters:'));
+
+		fielddisplay(this,'reltol','relative tolerance criterion');
+		fielddisplay(this,'maxiter','maximum number of iterations');
+		fielddisplay(this,'requested_outputs','additional requested outputs');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "steadystate";
+
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) {// {{{
+
+		//Early return
+		if (solution!=SteadystateSolutionEnum()) return;
+
+		if (md.timestepping.time_step!=0){
+			md.checkmessage('for a steadystate computation, timestepping.time_step must be zero.');
+		}
+		checkfield(md,'fieldname','steadystate.requested_outputs','stringrow',1);
+
+		if (isNaN(md.stressbalance.reltol)){
+			md.checkmessage('for a steadystate computation, stressbalance.reltol (relative convergence criterion) must be defined!');
+		}
+	} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','reltol','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','maxiter','format','Integer');
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}
+			WriteData(fid,prefix,'data',outputs,'name','md.steadystate.requested_outputs','format','StringArray');
+		}//}}}
+		this.defaultoutputs = function(md) { //{{{
+
+			var list=[];
+
+			for (var i=0;i<md.stressbalance.defaultoutputs(md).length;i++)list.push(md.stressbalance.defaultoutputs(md)[i]);
+			for (var i=0;i<md.thermal.defaultoutputs(md).length;i++)list.push(md.thermal.defaultoutputs(md)[i]);
+
+			return list;
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+
+	this.reltol            = 0;
+	this.maxiter           = 0;
+	this.requested_outputs = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
+//STRESSBALANCE class definition
+//
+//   Usage:
+//      stressbalance=new stressbalance();
+
+function stressbalance (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//maximum of non-linear iterations.
+		this.maxiter=100;
+
+		//Convergence criterion: absolute, relative and residual
+		this.restol=Math.pow(10,-4); 
+		this.reltol=0.01;
+		this.abstol=10;
+
+		this.FSreconditioning=Math.pow(10,13);
+		this.shelf_dampening=0;
+
+		//Penalty factor applied kappa=max(stiffness matrix)*10^penalty_factor
+		this.penalty_factor=3;
+
+		//coefficient to update the viscosity between each iteration of
+		//a stressbalance according to the following formula
+		//viscosity(n)=viscosity(n)+viscosity_overshoot(viscosity(n)-viscosity(n-1))
+		this.viscosity_overshoot=0;
+
+		//Stop the iterations of rift if below a threshold
+		this.rift_penalty_threshold=0;
+
+		//in some solutions, it might be needed to stop a run when only
+		//a few constraints remain unstable. For thermal computation, this
+		//parameter is often used.
+		this.rift_penalty_lock=10;
+
+		//output default:
+		this.requested_outputs=['default'];
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   StressBalance solution parameters:'));
+
+		console.log(sprintf('\n      %s','Convergence criteria:'));
+		fielddisplay(this,'restol','mechanical equilibrium residual convergence criterion');
+		fielddisplay(this,'reltol','velocity relative convergence criterion, NaN: not applied');
+		fielddisplay(this,'abstol','velocity absolute convergence criterion, NaN: not applied');
+		fielddisplay(this,'isnewton',"0: Picard's fixed point, 1: Newton's method, 2: hybrid");
+		fielddisplay(this,'maxiter','maximum number of nonlinear iterations');
+		fielddisplay(this,'viscosity_overshoot','over-shooting constant new=new+C*(new-old)');
+
+		console.log(sprintf('\n      %s','boundary conditions:'));
+		fielddisplay(this,'spcvx','x-axis velocity constraint (NaN means no constraint) [m/yr]');
+		fielddisplay(this,'spcvy','y-axis velocity constraint (NaN means no constraint) [m/yr]');
+		fielddisplay(this,'spcvz','z-axis velocity constraint (NaN means no constraint) [m/yr]');
+
+		console.log(sprintf('\n      %s','Rift options:'));
+		fielddisplay(this,'rift_penalty_threshold','threshold for instability of mechanical constraints');
+		fielddisplay(this,'rift_penalty_lock','number of iterations before rift penalties are locked');
+
+		console.log(sprintf('\n      %s','Penalty options:'));
+		fielddisplay(this,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset');
+		fielddisplay(this,'vertex_pairing','pairs of vertices that are penalized');
+
+		console.log(sprintf('\n      %s','Other:'));
+		fielddisplay(this,'shelf_dampening','use dampening for floating ice ? Only for FS model');
+		fielddisplay(this,'FSreconditioning','multiplier for incompressibility equation. Only for FS model');
+		fielddisplay(this,'referential','local referential');
+		fielddisplay(this,'loadingforce','loading force applied on each point [N/m^3]');
+		fielddisplay(this,'requested_outputs','additional outputs requested');
+
+
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "stressbalance";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			//Early return
+			if(ArrayAnyEqual(ArrayIsMember(StressbalanceAnalysisEnum(),analyses),0))return;
+
+			checkfield(md,'fieldname','stressbalance.spcvx','Inf',1,'timeseries',1);
+			checkfield(md,'fieldname','stressbalance.spcvy','Inf',1,'timeseries',1);
+			checkfield(md,'fieldname','stressbalance.spcvz','Inf',1,'timeseries',1);
+			checkfield(md,'fieldname','stressbalance.restol','size',[1, 1],'>',0,'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','stressbalance.reltol','size',[1, 1]);
+			checkfield(md,'fieldname','stressbalance.abstol','size',[1, 1]);
+			checkfield(md,'fieldname','stressbalance.isnewton','numel',[1],'values',[0, 1, 2]);
+			checkfield(md,'fieldname','stressbalance.FSreconditioning','size',[1, 1],'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','stressbalance.viscosity_overshoot','size',[1, 1],'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','stressbalance.maxiter','size',[1, 1],'>=',1);
+			checkfield(md,'fieldname','stressbalance.referential','size',[md.mesh.numberofvertices, 6]);
+			checkfield(md,'fieldname','stressbalance.loadingforce','size',[md.mesh.numberofvertices, 3]);
+			checkfield(md,'fieldname','stressbalance.requested_outputs','stringrow',1);
+
+			//singular solution
+			if(!ArrayAnyNaN(md.stressbalance.spcvx) | !ArrayAnyNaN(md.stressbalance.spcvy) |  !ArrayAnyAboveStrict(md.mask.groundedice_levelset,0)){
+				md = checkmessage(md,'model is not well posed (singular). You need at least one node with fixed velocity!');
+				console.log(sprintf('\n !!! Warning: no spc applied, model might not be well posed if no basal friction is applied, check for solution crash\n'));
+			}
+			//CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES
+			for(var i=0;i<md.stressbalance.referential.length;i++){
+				var sum=0;
+				for(j=0;j<md.stressbalance.referential[0].length;j++)sum+=md.stressbalance.referential[i][j];
+				if (sum!=0 & sum!=6){
+					md = checkmessage(md,'Each line of stressbalance.referential should contain either only NaN values or no NaN values');
+					break;
+				}
+			}
+			//CHECK THAT THE TWO VECTORS PROVIDED ARE ORTHOGONAL
+			for(var i=0;i<md.stressbalance.referential.length;i++){
+				var sum=0;
+				for(j=0;j<md.stressbalance.referential[0].length;j++)sum+=md.stressbalance.referential[i][j];
+				if(sum==0){
+					var dot=0;
+					for(j=0;j<3;j++)dot+=md.stressbalance.referential[i][j]*md.stressbalance.referential[i][j+3];
+					dot=Math.abs(dot);
+					if(dot>Math.pow(10,-18)){
+						md.checkmessage('Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal');
+						break;
+					}
+				}
+			}
+			//CHECK THAT NO rotation specified for FS Grounded ice at base
+			if (md.mesh.domaintype() == '3D' & md.flowequation.isFS){
+				for(var i=0;i<md.mask.groundedice_levelset.length;i++){
+					if(md.mask.groundedice_levelset[i]>0 & md.mesh.vertexonbase[i]){
+						if(!ArrayIsNan(md.stressbalance.referential[i])){
+							md.checkmessage('no referential should be specified for basal vertices of grounded ice');
+							break;
+						}
+					}
+				}
+				checkfield(md,'fieldname','stressbalance.FSreconditioning','>',0);
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','vertex_pairing','format','DoubleMat','mattype',3);
+
+			var yts=365.0*24.0*3600.0;
+
+			WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','restol','format','Double');
+			WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','reltol','format','Double');
+			WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','abstol','format','Double','scale',1./yts);
+			WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','isnewton','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','FSreconditioning','format','Double');
+			WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','viscosity_overshoot','format','Double');
+			WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','shelf_dampening','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','penalty_factor','format','Double');
+			WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','rift_penalty_lock','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','rift_penalty_threshold','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1);
+
+			var lx=NewArrayFill(this.loadingforce.length,0); for(var i=0;i<lx.length;i++)lx[i]=this.loadingforce[i][0];
+			var ly=NewArrayFill(this.loadingforce.length,0); for(var i=0;i<lx.length;i++)ly[i]=this.loadingforce[i][1];
+			var lz=NewArrayFill(this.loadingforce.length,0); for(var i=0;i<lx.length;i++)lz[i]=this.loadingforce[i][2];
+
+			WriteData(fid,prefix,'data',lx,'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcex');
+			WriteData(fid,prefix,'data',ly,'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcey');
+			WriteData(fid,prefix,'data',lz,'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcez');
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}
+			WriteData(fid,prefix,'data',outputs,'name','md.stressbalance.requested_outputs','format','StringArray');
+		}//}}}
+		this.defaultoutputs = function(md){ // {{{
+
+			var list;
+			if (md.mesh.dimension() == 3) list = ['Vx','Vy','Vz','Vel','Pressure'];
+			else if (md.mesh.dimension()==2) list = ['Vx','Vy','Vel','Pressure'];
+			else throw Error('mesh type not supported yet');
+			return list;
+
+		}//}}}
+		this.fix=function() { //{{{
+			this.abstol=NullFix(this.abstol,NaN);
+			this.rift_penalty_lock=NullFix(this.rift_penalty_lock,NaN);
+			this.referential=NullFix(this.referential,NaN);
+			this.loadingforce=NullFix(this.loadingforce,NaN);
+			this.spcvx=NullFix(this.spcvx,NaN);
+			this.spcvy=NullFix(this.spcvy,NaN);
+			this.spcvz=NullFix(this.spcvz,NaN);
+			if(this.vertex_pairing=[])this.vertex_pairing=NaN;
+		}//}}}
+	//properties 
+	// {{{
+	this.spcvx                  = NaN;
+	this.spcvy                  = NaN;
+	this.spcvz                  = NaN;
+	this.restol                 = 0;
+	this.reltol                 = 0;
+	this.abstol                 = 0;
+	this.isnewton               = 0;
+	this.FSreconditioning       = 0;
+	this.viscosity_overshoot    = 0;
+	this.maxiter                = 0;
+	this.shelf_dampening        = 0;
+	this.vertex_pairing         = NaN;
+	this.penalty_factor         = NaN;
+	this.rift_penalty_lock      = NaN;
+	this.rift_penalty_threshold = 0;
+	this.referential            = NaN;
+	this.loadingforce           = NaN;
+	this.requested_outputs      = []
+
+	this.setdefaultparameters();
+	//}}}
+}
+//TEMPLATE class definition
+//
+//   Usage:
+//      template=new template();
+
+function template (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   template class echo:'));
+
+	}// }}}
+	//properties 
+	// {{{
+	this.setdefaultparameters();
+	//}}}
+}
+//THERMAL class definition
+//
+//   Usage:
+//      thermal=new thermal();
+
+function thermal (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//Number of unstable constraints acceptable
+		this.penalty_threshold=0;
+
+		//Type of stabilization used
+		this.stabilization=1;
+
+		//Relative tolerance for the enthalpy convergence
+		this.reltol=0.01;
+
+		//Maximum number of iterations
+		this.maxiter=100;
+
+		//factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor
+		this.penalty_factor=3;
+
+		//Should we use cold ice (default) or enthalpy formulation
+		this.isenthalpy=0;
+
+		//will basal boundary conditions be set dynamically
+		this.isdynamicbasalspc=0;
+
+		//default output
+		this.requested_outputs=['default'];
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   Thermal solution parameters:'));
+
+		fielddisplay(this,'spctemperature','temperature constraints (NaN means no constraint) [K]');
+		fielddisplay(this,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG');
+		fielddisplay(this,'reltol','relative tolerance convergence criterion for enthalpy');
+		fielddisplay(this,'maxiter','maximum number of non linear iterations');
+		fielddisplay(this,'penalty_lock','stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)');
+		fielddisplay(this,'penalty_threshold','threshold to declare convergence of thermal solution (default is 0)');
+		fielddisplay(this,'penalty_factor','scaling exponent (default is 3)');
+		fielddisplay(this,'isenthalpy','use an enthalpy formulation to include temperate ice (default is 0)');
+		fielddisplay(this,'isdynamicbasalspc','enable dynamic setting of basal forcing. required for enthalpy formulation (default is 0)');
+		fielddisplay(this,'requested_outputs','additional outputs requested');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "thermal";
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses){ // {{{
+
+		//Early return
+		if(!ArrayAnyEqual(ArrayIsMember(ThermalAnalysisEnum(),analyses),1) & !ArrayAnyEqual(ArrayIsMember(EnthalpyAnalysisEnum(),analyses),1)  | (solution == TransientSolutionEnum() & md.trans.isthermal==0)) return;
+
+		checkfield(md,'fieldname','thermal.stabilization','numel',[1],'values',[0 ,1, 2]);
+		checkfield(md,'fieldname','thermal.spctemperature','Inf',1,'timeseries',1);
+		if(ArrayAnyEqual(ArrayIsMember(EnthalpyAnalysisEnum(),analyses),1) & md.thermal.isenthalpy & md.mesh.dimension() == 3){
+			
+			for(var i=0;i<md.mesh.numberofvertices;i++){
+				for(var j=0;j<md.thermal.spctemperature[0].length;j++){
+					if (!isNaN(md.thermal.spctemperature[i][j])){
+						var rep=md.geometry.surface[i]-md.mesh.z[i];
+						if (md.thermal.spctemperature[i][j] <= md.materials.melting-md.materials.beta*md.materials.rho_ice*md.constants.g*rep+Math.pow(10,-5)){
+
+							md.checkmessage('spctemperature should be less or equal than the adjusted melting point');
+							break;
+						}
+					}
+				}
+			}
+			checkfield(md,'fieldname','thermal.isenthalpy','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','thermal.isdynamicbasalspc','numel', [1],'values',[0, 1]);
+			if(md.thermal.isenthalpy){
+				if (isNan(md.stressbalance.reltol)){
+					md.checkmessage('for a steadystate computation, thermal.reltol (relative convergence criterion) must be defined!');
+				}
+			}
+			checkfield(md,'fieldname','thermal.reltol','>',0.,'message','reltol must be larger than zero');
+		}
+		checkfield(md,'fieldname','thermal.requested_outputs','stringrow',1);
+	} // }}} 
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','spctemperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,prefix,'object',this,'fieldname','penalty_threshold','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','stabilization','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','reltol','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','penalty_lock','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','penalty_factor','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','isenthalpy','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isdynamicbasalspc','format','Boolean');
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}
+			WriteData(fid,prefix,'data',outputs,'name','md.thermal.requested_outputs','format','StringArray');
+        	}//}}}
+		this.defaultoutputs = function(md) { //{{{
+
+			if (this.isenthalpy) return ['Enthalpy','Temperature','Waterfraction','Watercolumn','BasalforcingsGroundediceMeltingRate'];
+			else return ['Temperature','BasalforcingsGroundediceMeltingRate'];
+		}//}}}
+		this.fix=function() { //{{{
+			this.spctemperature=NullFix(this.spctemperature,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.spctemperature    = NaN;
+	this.penalty_threshold = 0;
+	this.stabilization     = 0;
+	this.reltol				= 0;
+	this.maxiter           = 0;
+	this.penalty_lock      = 0;
+	this.penalty_factor    = 0;
+	this.isenthalpy        = 0;
+	this.isdynamicbasalspc = 0;
+	this.requested_outputs = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
+//TIMESTEPPING class definition
+//
+//   Usage:
+//      timestepping=new timestepping();
+
+function timestepping (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		//time between 2 time steps
+		this.time_step=1./2.;
+
+		//final time
+		this.final_time=10.*this.time_step;
+
+		//time adaptation? 
+		this.time_adapt=0;
+		this.cfl_coefficient=0.5;
+
+		//should we interpolate forcings between timesteps?
+		this.interp_forcings=1;
+	}// }}}
+	this.disp= function(){// {{{
+
+		var unit;
+		console.log(sprintf('   timestepping parameters:'));
+		unit = 'yr';
+		fielddisplay(this,'start_time','simulation starting time ['+ unit + ']');
+		fielddisplay(this,'final_time','final time to stop the simulation ['+ unit + ']');
+		fielddisplay(this,'time_step','length of time steps [' +unit+ ']');
+		fielddisplay(this,'time_adapt','use cfl condition to define time step ? (0 or 1) ');
+		fielddisplay(this,'cfl_coefficient','coefficient applied to cfl condition');
+		fielddisplay(this,'interp_forcings','interpolate in time between requested forcing values ? (0 or 1)');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "timestepping";
+
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+			
+			checkfield(md,'fieldname','timestepping.start_time','numel',[1],'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','timestepping.final_time','numel',[1],'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','timestepping.time_adapt','numel',[1],'values',[0,1]);
+			checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1);
+			checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0,1]);
+			if (this.final_time-this.start_time<0){
+				md.checkmessage('timestepping.final_time should be larger than timestepping.start_time');
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var scale;
+			scale = 365.0*24.0*3600.0;
+			
+			WriteData(fid,prefix,'object',this,'fieldname','start_time','format','Double','scale',scale);
+			WriteData(fid,prefix,'object',this,'fieldname','final_time','format','Double','scale',scale);
+			WriteData(fid,prefix,'object',this,'fieldname','time_step','format','Double','scale',scale);
+			WriteData(fid,prefix,'object',this,'fieldname','time_adapt','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','cfl_coefficient','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','interp_forcings','format','Boolean');
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.start_time      = 0.;
+	this.final_time      = 0.;
+	this.time_step       = 0.;
+	this.time_adapt      = 0;
+	this.cfl_coefficient = 0.;
+	this.interp_forcings = 1;
+
+	this.setdefaultparameters();
+	//}}}
+}
+//TOOLKITS class definition
+//
+//   Usage:
+//      toolkits=new toolkits();
+
+function toolkits (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//default toolkits: 
+		if (IssmConfig('_HAVE_PETSC_')){
+			//MUMPS is the default toolkits
+			if (IssmConfig('_HAVE_MUMPS_')){
+				this.DefaultAnalysis           = mumpsoptions();
+			}
+			else{
+				this.DefaultAnalysis           = iluasmoptions(); 
+			}
+		}
+		else{
+			if (IssmConfig('_HAVE_MUMPS_')){
+				this.DefaultAnalysis           = issmmumpssolver(); 
+			}
+			else if (IssmConfig('_HAVE_GSL_')){
+				this.DefaultAnalysis           = issmgslsolver(); 
+			}
+			else{
+				console.warn('toolkits setdefaultparameters message: need at least Mumps or Gsl to define an issm solver type, no default solver assigned');
+			}
+		}
+	}// }}}
+	this.disp = function(){// {{{
+		console.log(sprintf('List of toolkits options per analysis:\n'));
+		for(var prop in this){
+			if(typeof this[prop] == 'object'){
+				console.log(prop+ ':',this[prop]);
+			}
+		}
+	}// }}}
+	this.checkconsistency = function (md,solution,analyses) { // {{{
+		for(var prop in this){
+			if(typeof this[prop] == 'object'){
+				if (this[prop] == ''){
+					md.checkmessage(sprintf("md.toolkits.%s is empty",prop));
+				}
+			}
+		}
+	} // }}}
+		 this.ToolkitsFile = function(filename) { //{{{
+		 //TOOLKITSFILE - build toolkits file (in string format)
+		 //
+		 //   Build a Petsc compatible options string, from the toolkits model field  + return options string. 
+		 //   This file string will also be used when the toolkit used is 'issm' instead of 'petsc'
+		 //
+		 //   Usage:     var toolkitsstring = toolkits.ToolkitsFile();
+
+			 var string = '';
+
+			 //write header
+			 string += sprintf('%s%s%s\n','\%Toolkits options file: ',filename,' written from Javascript toolkits array');
+
+			 //start writing options
+			 for (var analysis in this){
+				 var options;
+				 
+				 if(typeof this[analysis] == 'object') options=this[analysis]; else continue;
+
+				 //first write analysis:
+				 string += sprintf('\n+%s\n',analysis); //append a + to recognize it's an analysis enum
+
+				 //now, write options
+			
+				 for(var optionname in options){
+					 var optionvalue=options[optionname];
+
+					 if (optionvalue.length==0){
+						 //this option has only one argument
+						 string+=sprintf('-%s\n',optionname);
+					 }
+					 else{
+						 //option with value. value can be string or scalar
+						 if (typeof optionvalue == 'number'){
+							 string+=sprintf('-%s %g\n',optionname,optionvalue);
+						 }
+						 else if (typeof optionvalue == 'string'){
+							 string+=sprintf('-%s %s\n',optionname,optionvalue);
+						 }
+						 else throw Error(sprintf("ToolkitsFile error: option '%s' is not well formatted",optionname));
+					 }
+				 }
+			 }
+			 return string;
+		 } //}}}
+	//properties 
+	// {{{
+	this.DefaultAnalysis           = [];
+	//The other properties are dynamic
+	this.setdefaultparameters();
+	//}}}
+}
+//LEVELSET class definition
+//
+//   Usage:
+//      levelset=new levelset();
+
+function levelset (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//stabilization = 2 by default
+		this.stabilization		= 2;
+		this.reinit_frequency	= NaN;
+	
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   Level-set parameters:'));
+		fielddisplay(this,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
+		fielddisplay(this,'spclevelset','Levelset constraints (NaN means no constraint)');
+		fielddisplay(this,'reinit_frequency','Amount of time steps after which the levelset function in re-initialized (NaN: no re-initialization).');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "levelset";
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) { // {{{
+		//Early return
+		if (solution!=TransientSolutionEnum() | md.trans.ismovingfront==0) return;
+
+		checkfield(md,'fieldname','levelset.spclevelset','Inf',1,'timeseries',1);
+		checkfield(md,'fieldname','levelset.stabilization','values',[0,1,2]);
+	} //}}}
+	this.marshall=function(md,prefix,fid) { //{{{
+		WriteData(fid,prefix,'object',this,'fieldname','stabilization','format','Integer');
+		WriteData(fid,prefix,'object',this,'fieldname','spclevelset','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+		WriteData(fid,prefix,'object',this,'fieldname','reinit_frequency','format','Integer');
+
+	}//}}}
+		this.fix=function() { //{{{
+			this.spclevelset=NullFix(this.spclevelset,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.stabilization		= 0;
+	this.spclevelset			= NaN;
+	this.reinit_frequency	= NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
+//TRANS class definition
+//
+//   Usage:
+//      trans =new trans();
+
+function trans (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
+		this.issmb           = 1;
+		this.ismasstransport = 1;
+		this.isstressbalance = 1;
+		this.isthermal       = 1;
+		this.isgroundingline = 0;
+		this.isgia           = 0;
+		this.isdamageevolution = 0;
+		this.ismovingfront   = 0;
+		this.ishydrology     = 0;
+		this.isslr           = 0;
+		this.iscoupler       = 0;
+
+		//default output
+		this.requested_outputs=['default'];
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   transient solution parameters:'));
+
+		fielddisplay(this,'issmb','indicates whether a surface mass balance solution is used in the transient');
+		fielddisplay(this,'ismasstransport','indicates whether a masstransport solution is used in the transient');
+		fielddisplay(this,'isstressbalance','indicates whether a stressbalance solution is used in the transient');
+		fielddisplay(this,'isthermal','indicates whether a thermal solution is used in the transient');
+		fielddisplay(this,'isgroundingline','indicates whether a groundingline migration is used in the transient');
+		fielddisplay(this,'isgia','indicates whether a postglacial rebound model is used in the transient');
+		fielddisplay(this,'isdamageevolution','indicates whether damage evolution is used in the transient');
+		fielddisplay(this,'ismovingfront','indicates whether a moving front capability is used in the transient');
+		fielddisplay(this,'ishydrology','indicates whether an hydrology model is used');
+		fielddisplay(this,'isslr','indicates whether a sea-level rise model is used');
+		fielddisplay(this,'iscoupler','indicates whether different models are being run with need for coupling');
+		fielddisplay(this,'requested_outputs','list of additional outputs requested');
+
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "transient";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { // {{{
+
+			//Early return
+			if (solution!=TransientSolutionEnum()) return;
+
+			checkfield(md,'fieldname','trans.issmb','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.ismasstransport','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.isstressbalance','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.isthermal','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.isgroundingline','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','trans.isgia','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','trans.isdamageevolution','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','trans.ismovingfront','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','trans.ishydrology','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.iscoupler','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.isslr','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.requested_outputs','stringrow',1);
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			prefix='md.transient';
+			WriteData(fid,prefix,'object',this,'fieldname','issmb','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','ismasstransport','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isstressbalance','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isthermal','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isgroundingline','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isgia','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isdamageevolution','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','ishydrology','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','ismovingfront','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isslr','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','iscoupler','format','Boolean');
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}			
+			WriteData(fid,prefix,'data',outputs,'name','md.transient.requested_outputs','format','StringArray');
+		}//}}}
+		this.defaultoutputs = function(md) { //{{{
+			if(this.issmb)return ['SmbMassBalance'];
+			else return [];
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+
+	this.issmb             = 0;
+	this.ismasstransport   = 0;
+	this.isstressbalance   = 0;
+	this.isthermal         = 0;
+	this.isgroundingline   = 0;
+	this.isgia             = 0;
+	this.isdamageevolution = 0;
+	this.ismovingfront     = 0;
+	this.ishydrology       = 0;
+	this.isslr             = 0;
+	this.iscoupler         = 0;
+	this.requested_outputs = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
+//VERBOSE class definition
+//
+//   Available verbosity levels:
+//      mprocessor  : model processing 
+//      module      : modules
+//      solution    : solution sequence
+//      solver      : solver info (extensive)
+//      convergence : convergence criteria
+//      control     : control method
+//      qmu         : sensitivity analysis
+//      autodiff    : AD analysis
+//      smb         : smb analysis
+//
+//   Usage:
+//      verbose=verbose();
+//      verbose=verbose(3);
+//      verbose=verbose('all');
+//      verbose=verbose('001100');
+//      verbose=verbose('module',true,'solver',false);
+
+//WARNING: some parts of this file are Synchronized with src/c/shared/Numerics/Verbosity.h
+//         Do not modify these sections. See src/c/shared/Numerics/README for more info
+
+function verbose (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		//BEGINDISP
+		console.log(sprintf('verbose class echo:'));
+		console.log(sprintf('   %s : %i','mprocessor',this.mprocessor));
+		console.log(sprintf('   %s : %i','module',this.module));
+		console.log(sprintf('   %s : %i','solution',this.solution));
+		console.log(sprintf('   %s : %i','solver',this.solver));
+		console.log(sprintf('   %s : %i','convergence',this.convergence));
+		console.log(sprintf('   %s : %i','control',this.control));
+		console.log(sprintf('   %s : %i','qmu',this.qmu));
+		console.log(sprintf('   %s : %i','autodiff',this.autodiff));
+		console.log(sprintf('   %s : %i','smb',this.smb));
+		//ENDDISP
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses){ // {{{
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'data',this.VerboseToBinary(),'name','md.verbose','format','Integer');
+		}//}}}
+		this.VerboseToBinary = function () { //{{{
+
+			//BEGINVERB2BIN
+			var binary=0;
+			if (this.mprocessor) binary=binary|1; 
+			if (this.module) binary=binary|2; 
+			if (this.solution) binary=binary|4; 
+			if (this.solver) binary=binary|8; 
+			if (this.convergence) binary=binary|16; 
+			if (this.control) binary=binary|32; 
+			if (this.qmu) binary=binary|64; 
+			if (this.autodiff) binary=binary|128; 
+			if (this.smb) binary=binary|256; 
+			//ENDVERB2BIN
+			return binary;
+
+		} //}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	//BEGINFIELDS
+	this.mprocessor=false;
+	this.module=false;
+	this.solution=false;
+	this.solver=false;
+	this.convergence=false;
+	this.control=false;
+	this.qmu=false;
+	this.autodiff=false;
+	this.smb=false;
+	//ENDFIELDS
+	// }}}
+	this.setdefaultparameters();
+	//}}}
+}
+function checkfield(md){
+//CHECKFIELD - check field consistency
+//
+//   Used to check model consistency.
+//   Requires: 
+//     'field' or 'fieldname' option. If 'fieldname' is provided, it will retrieve it from the model md. (md.(fieldname)) 
+//             If 'field' is provided, it will assume the argument following 'field' is a numeric array.
+//   Available options:
+//      - NaN: 1 if check that there is no NaN
+//      - Inf: 1 if check that there is no Inf
+//      - size: [lines cols], NaN for non checked dimensions
+//      - >:  greater than provided value
+//      - >=: greater or equal to provided value
+//      - <:  smallerthan provided value
+//      - <=: smaller or equal to provided value
+//      - < vec:  smallerthan provided values on each vertex
+//      - timeseries: 1 if check time series consistency (size and time)
+//      - values: array of strings or vector of acceptable values
+//      - numel: list of acceptable number of elements
+//      - array: 1 if check that is array
+//      - empty: 1 if check that non empty
+//      - message: overloaded error message
+//
+//   Usage:
+//      checkfield(md,fieldname,options);
+
+	//get options
+	var args = Array.prototype.slice.call(arguments);
+	var  options = new pairoptions(args.slice(1,args.length));
+	
+	//get field: 
+	if (options.exist('field')){
+		field=options.getfieldvalue('field'); 
+		fieldname=options.getfieldvalue('fieldname','no fieldname'); 
+	}
+	else{
+		fieldname=options.getfieldvalue('fieldname'); 
+		eval("field=md." + fieldname + ";");
+	}
+
+	//check empty
+	if (options.exist('empty')){
+		if (field.length == 0){
+			md.checkmessage(options.getfieldvalue('message','field ' + "'" + fieldname + "'" + 'is empty'));
+		}
+	}
+
+	//Check size
+	if (options.exist('size')){
+		fieldsize=options.getfieldvalue('size');
+		if (isNaN(fieldsize[0])){
+			if (field[0].length !=fieldsize[1]){
+				md.checkmessage(options.getfieldvalue('message', sprintf("field '%s' should have %i columns",fieldname,fieldsize[1])));
+			}
+		}
+		else if (isNaN(fieldsize[1])){
+			if (field.length!= fieldsize[0]){
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have %i lines",fieldname,fieldsize[0])));
+			}
+		}
+		else{
+			if (IsArray(field)){
+				if ((field.length!=fieldsize[0])){
+					md.checkmessage(options.getfieldvalue('message', sprintf("field '%s' should be %ix%i",fieldname,fieldsize[0],fieldsize[1])));
+				}
+			}
+			if (IsArray(field[0])){
+				if(field[0].length!=fieldsize[1]){
+					md.checkmessage(options.getfieldvalue('message', sprintf("field '%s' should be %ix%i",fieldname,fieldsize[0],fieldsize[1])));
+				}
+			}
+		}
+	}
+
+	//Check numel
+	if (options.exist('numel')){
+		fieldnumel=options.getfieldvalue('numel');
+		if (!ArrayIsMember(fieldnumel,[field.length])){
+			if (fieldnumel.length==1){
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' size should be %i",fieldname,fieldnumel[0])));
+			}
+			else if (fieldnumel.length==2){
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' size should be %i or %i",fieldname,fieldnumel[0],fieldnumel[1])));
+			}
+			else{
+				var string=''; 
+				for (var i=0;i<fieldnumel.length;i++)string=sprintf("%s or %i",string,fieldnumel[i]);
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' size should be %s",fieldname,string)));
+			}
+		}
+	}
+
+	//check NaN
+	if (options.getfieldvalue('NaN',0)){
+		field2=MatrixToList(field);
+		if (ArrayAnyEqual(field2,NaN)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("NaN values found in field %s",field)));
+		}
+	}
+
+	//check Inf
+	if (options.getfieldvalue('Inf',0)){
+		field2=MatrixToList(field);
+		if (ArrayAnyEqual(field2,Infinity)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("Inf values found in field %s",field)));
+		}
+	}
+
+	//check arry
+	if (options.getfieldvalue('array',0)){
+		if (!IsArray(field)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should be an array!",fieldname)));
+		}
+	}
+
+	//check values
+	if (options.exist('values')){
+		fieldvalues=options.getfieldvalue('values');
+		if (typeof fieldvalues[0]== 'string'){
+			if (typeof field == 'string'){
+				if(ArrayAnyEqual(ArrayIsMember([field],fieldvalues),0)){
+					if (fieldvalues.length==1){
+						md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' value should be %s",fieldname,fieldvalues[0])));
+					}
+					else if (fieldvalues.length==2){
+						md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' values should be %s or %s",fieldname,fieldvalues[0],fieldvalues[1])));
+					}
+					else{
+						var string=''; 
+						for (var i=0;i<fieldvalues.length;i++)string=sprintf("%s or %s",string,fieldvalues[i]);
+						md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values in %s",fieldname,string)));
+					}
+				}
+			}
+			else{
+				var string=''; for (var i=0;i<fieldvalues.length;i++)string=sprintf("%s or %s",string,fieldvalues[i]);
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values in %s",fieldname,string)));
+			}
+		}
+		else{
+			if (typeof field == 'number') field2=MatrixToList([field]);
+			else field2=MatrixToList(field);
+			if (typeof field2[0] == 'number'){
+				if(ArrayAnyEqual(ArrayIsMember(field2,fieldvalues),0)){
+					var string=''; for (var i=0;i<fieldvalues.length;i++)string=sprintf("%s or %g",string,fieldvalues[i]);
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values in %s",fieldname,string)));
+				}
+			}
+			else{
+				var string=''; for (var i=0;i<fieldvalues.length;i++)string=sprintf("%s or %g",string,fieldvalues[i]);
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should be a number in %s",fieldname,string)));
+			}
+		}
+	}
+	
+	//check greater
+	if (options.exist('>=')){
+		lowerbound=options.getfieldvalue('>=');
+		field2=MatrixToList(field);
+		if (options.getfieldvalue('timeseries',0)) field2=MatrixToList(ArrayCopy(field).splice(-1,1));
+
+		if (ArrayAnyBelowStrict(field2,lowerbound)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values above %g",fieldname,lowerbound)));
+		}
+	}
+	if (options.exist('>')){
+		lowerbound=options.getfieldvalue('>');
+		field2=MatrixToList(field);
+		if (options.getfieldvalue('timeseries',0)) field2=MatrixToList(ArrayCopy(field).splice(-1,1));
+
+		if (ArrayAnyBelowOrEqual(field2,lowerbound)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values above %g",fieldname,lowerbound)));
+		}
+	}
+	
+	//check smaller
+	if (options.exist('<=')){
+		upperbound=options.getfieldvalue('<=');
+		field2=MatrixToList(field);
+		if (options.getfieldvalue('timeseries',0)) field2=MatrixToList(ArrayCopy(field).splice(-1,1));
+
+		if (ArrayAnyAboveOrEqual(field2,upperbound)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values below %g",fieldname,upperbound)));
+		}
+	}
+	
+	
+	if (options.exist('<')){
+		upperbound=options.getfieldvalue('<');
+		field2=MatrixToList(field);
+		if (options.getfieldvalue('timeseries',0)) field2=MatrixToList(ArrayCopy(field).splice(-1,1));
+		if (ArrayAnyAboveStrict(field2,upperbound)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values below %g",fieldname,upperbound)));
+		}
+	}
+
+	//Check row of stringrow
+	if (options.getfieldvalue('stringrow',0)){
+		if (IsArray(field[0])){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have only one row",field)));
+		}
+		if (!IsArray(field)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should be an array of string",fieldname)));
+		}
+		else{
+			for(var i=0;i<field.length;i++){
+				if (!(typeof field[i] == 'string')){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' values should be a cell of strings",fieldname)));
+				}
+			}
+		}
+	}
+
+	//check file
+	if (options.getfieldvalue('file',0)){
+		/*if ~exist(field,'file')
+			md.checkmessage(['file provided in ''' fieldname ''': ''' field ''' does not exist']);
+		end*/
+		throw Error("checkfield error message: file checking on javascript not supported yet!");
+	}
+
+	//Check forcings (size and times)
+	if (options.getfieldvalue('timeseries',0)){
+		if (field.length==md.mesh.numberofvertices | field.length==md.mesh.numberofelements){
+			if (IsArray(field[0])){
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have only one column as there are md.mesh.numberofvertices lines",fieldname)));
+			}
+		}
+		else if ((field.length==md.mesh.numberofvertices+1) | (field.length==md.mesh.numberofelements+1)){
+			var times=field[field.length-1]; var sorted_times=ArraySort(times);
+			for(var i=0;i<times.length;i++){
+				if(times[i] !=sorted_times[i]){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' columns should be sorted chronologically",fieldname)));
+					break;
+				}
+			}
+			var timesm=ArrayCopy(times).splice(0,-1); var timesp=ArrayCopy(times).shift();
+			for(var i=0;i<timesm.length;i++){
+				if(timesm[i]==timesp[i]){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' columns must not contain duplicate timesteps",fieldname)));
+					break;
+				}
+			}
+		}
+		else{
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have md.mesh.numberofvertices or md.mesh.numberofvertices+1 lines",fieldname)));
+		}
+	}
+
+	//Check single value forcings (size and times)
+	if (options.getfieldvalue('singletimeseries',0)){
+		if (field.length==2){
+			var times=field[1]; var sorted_times=ArraySort(times);
+			for(var i=0;i<times.length;i++){
+				if(times[i] !=sorted_times[i]){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' columns should be sorted chronologically",fieldname)));
+					break;
+				}
+			}
+			var timesm=ArrayCopy(times).splice(0,-1); var timesp=ArrayCopy(times).shift();
+			for(var i=0;i<timesm.length;i++){
+				if(timesm[i]==timesp[i]){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' columns must not contain duplicate timesteps",fieldname)));
+					break;
+				}
+			}
+		}
+		else{
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have 2 lines",fieldname)));
+		}
+	}
+}
+function ismodelselfconsistent(md){
+//ISMODELSELFCONSISTENT - check that model forms a closed form solvable problem.
+//
+//   Usage:
+//      ismodelselfconsistent(md),
+
+	//initialize consistency as true
+	md.priv.isconsistent=true;
+
+	//Get solution and associated analyses
+	solution=md.priv.solution;
+	if(typeof solution != 'number')throw Error('ismodelselfconsistent: did not provide solution type in the private class!');
+	
+	var analyses = AnalysisConfiguration(solution);
+
+	//Go through a model field, check that it is a class, and call checkconsistency
+	for(field in md){
+
+		//Some properties do not need to be checked
+		if (field == 'results' | field == 'debug' | field == 'radaroverlay'){
+			continue;
+		}
+
+		//Check that current field is a class
+		if(typeof md[field] == 'function'){
+			continue;
+		}
+
+		//Check consistency of the class
+		md[field].checkconsistency(md,solution,analyses);
+	}
+
+	//error message if mode is not consistent
+	if (md.priv.isconsistent==false){
+		throw Error('Model not consistent, see messages above');
+	}
+}
+
+function AnalysisConfiguration(solutiontype){ // {{{
+	//ANALYSISCONFIGURATION - return type of analyses, number of analyses 
+	//
+	//   Usage:
+	//      [analyses]=AnalysisConfiguration(solutiontype);
+
+	var analyses=[];
+	switch (solutiontype){
+
+		case StressbalanceSolutionEnum():
+			analyses=[StressbalanceAnalysisEnum(),StressbalanceVerticalAnalysisEnum(),StressbalanceSIAAnalysisEnum(),L2ProjectionBaseAnalysisEnum()];
+			break;
+
+		case SteadystateSolutionEnum():
+			analyses=[StressbalanceAnalysisEnum(),StressbalanceVerticalAnalysisEnum(),StressbalanceSIAAnalysisEnum(),L2ProjectionBaseAnalysisEnum(),ThermalAnalysisEnum(),MeltingAnalysisEnum()];
+			break;
+
+		case ThermalSolutionEnum():
+			analyses=[EnthalpyAnalysisEnum(),ThermalAnalysisEnum(),MeltingAnalysisEnum()];
+			break;
+
+		case MasstransportSolutionEnum():
+			analyses=[MasstransportAnalysisEnum()];
+			break;
+
+		case BalancethicknessSolutionEnum():
+			analyses=[BalancethicknessAnalysisEnum()];
+			break;
+
+		case Balancethickness2SolutionEnum():
+			analyses=[Balancethickness2AnalysisEnum()];
+			break;
+
+		case BalancethicknessSoftSolutionEnum():
+			analyses=[BalancethicknessAnalysisEnum()];
+			break;
+
+		case BalancevelocitySolutionEnum():
+			analyses=[BalancevelocityAnalysisEnum()];
+			break;
+
+		case SurfaceSlopeSolutionEnum():
+			analyses=[L2ProjectionBaseAnalysisEnum()];
+			break;
+
+		case BedSlopeSolutionEnum():
+			analyses=[L2ProjectionBaseAnalysisEnum()];
+			break;
+
+		case GiaSolutionEnum():
+			analyses=[GiaAnalysisEnum()];
+			break;
+
+		case TransientSolutionEnum():
+			analyses=[StressbalanceAnalysisEnum(),StressbalanceVerticalAnalysisEnum(),StressbalanceSIAAnalysisEnum(),L2ProjectionBaseAnalysisEnum(),ThermalAnalysisEnum(),MeltingAnalysisEnum(),EnthalpyAnalysisEnum(),MasstransportAnalysisEnum(),HydrologySommersAnalysisEnum];
+			break;
+
+		case FlaimSolutionEnum():
+			analyses=[FlaimAnalysisEnum()];
+			break;
+	
+		case SealevelriseSolutionEnum():
+			analyses=[SealevelriseAnalysisEnum()];
+			break;
+
+		case HydrologySolutionEnum():
+			analyses=[L2ProjectionBaseAnalysisEnum(),HydrologyShreveAnalysisEnum(),HydrologyDCInefficientAnalysisEnum(),HydrologyDCEfficientAnalysisEnum()];
+			break;
+
+		case DamageEvolutionSolutionEnum():
+			analyses=[DamageEvolutionAnalysisEnum()];
+			break;
+
+		default:
+			throw Error(sprintf("%s%s%s\n",' solution type: ',EnumToString(solutiontype),' not supported yet!'));
+	}
+	return analyses;
+} // }}}
+//WARNING: DO NOT MODIFY THIS FILE
+//this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+//Please read src/c/shared/Enum/README for more information
+function ParametersSTARTEnum(){ return 0;}
+function FemModelEnum(){ return 1;}
+function FemModelCommEnum(){ return 2;}
+function WorldCommEnum(){ return 3;}
+function IcecapToEarthCommEnum(){ return 4;}
+function NumModelsEnum(){ return 5;}
+function ModelIdEnum(){ return 6;}
+function EarthIdEnum(){ return 7;}
+function AutodiffIsautodiffEnum(){ return 8;}
+function AutodiffNumDependentsEnum(){ return 9;}
+function AutodiffNumDependentObjectsEnum(){ return 10;}
+function AutodiffDependentObjectNamesEnum(){ return 11;}
+function AutodiffDependentObjectTypesEnum(){ return 12;}
+function AutodiffDependentObjectIndicesEnum(){ return 13;}
+function AutodiffDependentObjectsEnum(){ return 14;}
+function AutodiffNumIndependentsEnum(){ return 15;}
+function AutodiffNumIndependentObjectsEnum(){ return 16;}
+function AutodiffIndependentObjectNamesEnum(){ return 17;}
+function AutodiffIndependentObjectTypesEnum(){ return 18;}
+function AutodiffIndependentObjectsEnum(){ return 19;}
+function AutodiffJacobianEnum(){ return 20;}
+function AutodiffXpEnum(){ return 21;}
+function AutodiffDriverEnum(){ return 22;}
+function AutodiffFosForwardIndexEnum(){ return 23;}
+function AutodiffFovForwardIndicesEnum(){ return 24;}
+function AutodiffFosReverseIndexEnum(){ return 25;}
+function AutodiffMassFluxSegmentsPresentEnum(){ return 26;}
+function AutodiffKeepEnum(){ return 27;}
+function AutodiffObufsizeEnum(){ return 28;}
+function AutodiffLbufsizeEnum(){ return 29;}
+function AutodiffCbufsizeEnum(){ return 30;}
+function AutodiffTbufsizeEnum(){ return 31;}
+function AutodiffGcTriggerRatioEnum(){ return 32;}
+function AutodiffGcTriggerMaxSizeEnum(){ return 33;}
+function BalancethicknessSpcthicknessEnum(){ return 34;}
+function BalancethicknessStabilizationEnum(){ return 35;}
+function BalancethicknessThickeningRateEnum(){ return 36;}
+function BasalforcingsEnum(){ return 37;}
+function BasalforcingsGeothermalfluxEnum(){ return 38;}
+function BasalforcingsGroundediceMeltingRateEnum(){ return 39;}
+function BasalforcingsFloatingiceMeltingRateEnum(){ return 40;}
+function BasalforcingsDeepwaterMeltingRateEnum(){ return 41;}
+function BasalforcingsDeepwaterElevationEnum(){ return 42;}
+function BasalforcingsUpperwaterElevationEnum(){ return 43;}
+function BasalforcingsMeltrateFactorEnum(){ return 44;}
+function BasalforcingsThresholdThicknessEnum(){ return 45;}
+function BasalforcingsUpperdepthMeltEnum(){ return 46;}
+function BasalforcingsMantleconductivityEnum(){ return 47;}
+function BasalforcingsNusseltEnum(){ return 48;}
+function BasalforcingsDtbgEnum(){ return 49;}
+function BasalforcingsPlumeradiusEnum(){ return 50;}
+function BasalforcingsTopplumedepthEnum(){ return 51;}
+function BasalforcingsBottomplumedepthEnum(){ return 52;}
+function BasalforcingsPlumexEnum(){ return 53;}
+function BasalforcingsPlumeyEnum(){ return 54;}
+function BasalforcingsCrustthicknessEnum(){ return 55;}
+function BasalforcingsUppercrustthicknessEnum(){ return 56;}
+function BasalforcingsUppercrustheatEnum(){ return 57;}
+function BasalforcingsLowercrustheatEnum(){ return 58;}
+function FloatingMeltRateEnum(){ return 59;}
+function LinearFloatingMeltRateEnum(){ return 60;}
+function MismipFloatingMeltRateEnum(){ return 61;}
+function MantlePlumeGeothermalFluxEnum(){ return 62;}
+function BedEnum(){ return 63;}
+function BaseEnum(){ return 64;}
+function ConstantsGEnum(){ return 65;}
+function ConstantsReferencetemperatureEnum(){ return 66;}
+function ConstantsYtsEnum(){ return 67;}
+function DependentObjectEnum(){ return 68;}
+function StressbalanceAbstolEnum(){ return 69;}
+function StressbalanceConvergenceNumStepsEnum(){ return 70;}
+function StressbalanceIsnewtonEnum(){ return 71;}
+function StressbalanceMaxiterEnum(){ return 72;}
+function StressbalancePenaltyFactorEnum(){ return 73;}
+function StressbalanceReferentialEnum(){ return 74;}
+function StressbalanceReltolEnum(){ return 75;}
+function StressbalanceNumRequestedOutputsEnum(){ return 76;}
+function StressbalanceRequestedOutputsEnum(){ return 77;}
+function StressbalanceRestolEnum(){ return 78;}
+function StressbalanceRiftPenaltyLockEnum(){ return 79;}
+function StressbalanceRiftPenaltyThresholdEnum(){ return 80;}
+function StressbalanceShelfDampeningEnum(){ return 81;}
+function StressbalanceSpcvxEnum(){ return 82;}
+function StressbalanceSpcvyEnum(){ return 83;}
+function StressbalanceSpcvzEnum(){ return 84;}
+function StressbalanceFSreconditioningEnum(){ return 85;}
+function StressbalanceVertexPairingEnum(){ return 86;}
+function StressbalanceViscosityOvershootEnum(){ return 87;}
+function LoadingforceXEnum(){ return 88;}
+function LoadingforceYEnum(){ return 89;}
+function LoadingforceZEnum(){ return 90;}
+function FlowequationBorderSSAEnum(){ return 91;}
+function FlowequationBorderHOEnum(){ return 92;}
+function FlowequationBorderFSEnum(){ return 93;}
+function FlowequationElementEquationEnum(){ return 94;}
+function FlowequationIsSIAEnum(){ return 95;}
+function FlowequationIsSSAEnum(){ return 96;}
+function FlowequationIsL1L2Enum(){ return 97;}
+function FlowequationIsHOEnum(){ return 98;}
+function FlowequationIsFSEnum(){ return 99;}
+function FlowequationFeSSAEnum(){ return 100;}
+function FlowequationFeHOEnum(){ return 101;}
+function FlowequationFeFSEnum(){ return 102;}
+function FlowequationVertexEquationEnum(){ return 103;}
+function FrictionAsEnum(){ return 104;}
+function FrictionCoefficientEnum(){ return 105;}
+function FrictionCoefficientcoulombEnum(){ return 106;}
+function FrictionPEnum(){ return 107;}
+function FrictionQEnum(){ return 108;}
+function FrictionMEnum(){ return 109;}
+function FrictionCEnum(){ return 110;}
+function FrictionLawEnum(){ return 111;}
+function FrictionGammaEnum(){ return 112;}
+function FrictionFEnum(){ return 113;}
+function FrictionWaterLayerEnum(){ return 114;}
+function FrictionEffectivePressureEnum(){ return 115;}
+function FrictionCouplingEnum(){ return 116;}
+function GeometryHydrostaticRatioEnum(){ return 117;}
+function HydrologyModelEnum(){ return 118;}
+function HydrologyshreveEnum(){ return 119;}
+function HydrologyshreveSpcwatercolumnEnum(){ return 120;}
+function HydrologyshreveStabilizationEnum(){ return 121;}
+function HydrologydcEnum(){ return 122;}
+function SedimentHeadEnum(){ return 123;}
+function SedimentHeadOldEnum(){ return 124;}
+function SedimentHeadResidualEnum(){ return 125;}
+function EffectivePressureEnum(){ return 126;}
+function EplHeadEnum(){ return 127;}
+function EplHeadOldEnum(){ return 128;}
+function EplHeadSlopeXEnum(){ return 129;}
+function EplHeadSlopeYEnum(){ return 130;}
+function EplZigZagCounterEnum(){ return 131;}
+function HydrologydcMaxIterEnum(){ return 132;}
+function HydrologydcRelTolEnum(){ return 133;}
+function HydrologydcSpcsedimentHeadEnum(){ return 134;}
+function HydrologydcSedimentCompressibilityEnum(){ return 135;}
+function HydrologydcSedimentPorosityEnum(){ return 136;}
+function HydrologydcSedimentThicknessEnum(){ return 137;}
+function HydrologydcSedimentTransmitivityEnum(){ return 138;}
+function HydrologydcWaterCompressibilityEnum(){ return 139;}
+function HydrologydcSpceplHeadEnum(){ return 140;}
+function HydrologydcMaskEplactiveNodeEnum(){ return 141;}
+function HydrologydcMaskEplactiveEltEnum(){ return 142;}
+function HydrologydcEplCompressibilityEnum(){ return 143;}
+function HydrologydcEplPorosityEnum(){ return 144;}
+function HydrologydcEplInitialThicknessEnum(){ return 145;}
+function HydrologydcEplColapseThicknessEnum(){ return 146;}
+function HydrologydcEplMaxThicknessEnum(){ return 147;}
+function HydrologydcEplThicknessEnum(){ return 148;}
+function HydrologydcEplThicknessOldEnum(){ return 149;}
+function HydrologydcEplThickCompEnum(){ return 150;}
+function HydrologydcEplConductivityEnum(){ return 151;}
+function HydrologydcIsefficientlayerEnum(){ return 152;}
+function HydrologydcSedimentlimitFlagEnum(){ return 153;}
+function HydrologydcSedimentlimitEnum(){ return 154;}
+function HydrologydcTransferFlagEnum(){ return 155;}
+function HydrologydcLeakageFactorEnum(){ return 156;}
+function HydrologydcPenaltyFactorEnum(){ return 157;}
+function HydrologydcPenaltyLockEnum(){ return 158;}
+function HydrologydcEplflipLockEnum(){ return 159;}
+function HydrologydcBasalMoulinInputEnum(){ return 160;}
+function HydrologyLayerEnum(){ return 161;}
+function HydrologySedimentEnum(){ return 162;}
+function HydrologyEfficientEnum(){ return 163;}
+function HydrologySedimentKmaxEnum(){ return 164;}
+function HydrologysommersEnum(){ return 165;}
+function HydrologyHeadEnum(){ return 166;}
+function HydrologyGapHeightEnum(){ return 167;}
+function HydrologyBumpSpacingEnum(){ return 168;}
+function HydrologyBumpHeightEnum(){ return 169;}
+function HydrologyEnglacialInputEnum(){ return 170;}
+function HydrologyMoulinInputEnum(){ return 171;}
+function HydrologyReynoldsEnum(){ return 172;}
+function HydrologyNeumannfluxEnum(){ return 173;}
+function HydrologySpcheadEnum(){ return 174;}
+function HydrologyConductivityEnum(){ return 175;}
+function InversionControlParametersEnum(){ return 176;}
+function InversionControlScalingFactorsEnum(){ return 177;}
+function InversionCostFunctionThresholdEnum(){ return 178;}
+function InversionCostFunctionsCoefficientsEnum(){ return 179;}
+function InversionCostFunctionsEnum(){ return 180;}
+function InversionGradientScalingEnum(){ return 181;}
+function InversionIscontrolEnum(){ return 182;}
+function InversionTypeEnum(){ return 183;}
+function InversionIncompleteAdjointEnum(){ return 184;}
+function InversionMaxParametersEnum(){ return 185;}
+function InversionMaxiterPerStepEnum(){ return 186;}
+function InversionMaxiterEnum(){ return 187;}
+function InversionMaxstepsEnum(){ return 188;}
+function InversionFatolEnum(){ return 189;}
+function InversionFrtolEnum(){ return 190;}
+function InversionGatolEnum(){ return 191;}
+function InversionGrtolEnum(){ return 192;}
+function InversionGttolEnum(){ return 193;}
+function InversionAlgorithmEnum(){ return 194;}
+function InversionMinParametersEnum(){ return 195;}
+function InversionNstepsEnum(){ return 196;}
+function InversionDxminEnum(){ return 197;}
+function InversionNumControlParametersEnum(){ return 198;}
+function InversionNumCostFunctionsEnum(){ return 199;}
+function InversionStepThresholdEnum(){ return 200;}
+function InversionThicknessObsEnum(){ return 201;}
+function InversionSurfaceObsEnum(){ return 202;}
+function InversionVxObsEnum(){ return 203;}
+function InversionVyObsEnum(){ return 204;}
+function InversionVzObsEnum(){ return 205;}
+function MaskIceLevelsetEnum(){ return 206;}
+function MaskOceanLevelsetEnum(){ return 207;}
+function MaskLandLevelsetEnum(){ return 208;}
+function MaterialsBetaEnum(){ return 209;}
+function MaterialsHeatcapacityEnum(){ return 210;}
+function MaterialsLatentheatEnum(){ return 211;}
+function MaterialsMeltingpointEnum(){ return 212;}
+function MaterialsMixedLayerCapacityEnum(){ return 213;}
+function MaterialsRheologyBEnum(){ return 214;}
+function MaterialsRheologyBbarEnum(){ return 215;}
+function MaterialsRheologyLawEnum(){ return 216;}
+function MaterialsRheologyNEnum(){ return 217;}
+function MaterialsRheologyKoEnum(){ return 218;}
+function MaterialsRheologyKobarEnum(){ return 219;}
+function MaterialsRheologyEcEnum(){ return 220;}
+function MaterialsRheologyEcbarEnum(){ return 221;}
+function MaterialsRheologyEsEnum(){ return 222;}
+function MaterialsRheologyEsbarEnum(){ return 223;}
+function DamageIsdamageEnum(){ return 224;}
+function DamageDEnum(){ return 225;}
+function DamageFEnum(){ return 226;}
+function DamageDbarEnum(){ return 227;}
+function DamageLawEnum(){ return 228;}
+function DamageC1Enum(){ return 229;}
+function DamageC2Enum(){ return 230;}
+function DamageC3Enum(){ return 231;}
+function DamageC4Enum(){ return 232;}
+function DamageElementinterpEnum(){ return 233;}
+function DamageHealingEnum(){ return 234;}
+function DamageStressThresholdEnum(){ return 235;}
+function DamageKappaEnum(){ return 236;}
+function DamageStabilizationEnum(){ return 237;}
+function DamageMaxiterEnum(){ return 238;}
+function DamageSpcdamageEnum(){ return 239;}
+function DamageMaxDamageEnum(){ return 240;}
+function DamageEquivStressEnum(){ return 241;}
+function DamageEvolutionNumRequestedOutputsEnum(){ return 242;}
+function DamageEvolutionRequestedOutputsEnum(){ return 243;}
+function DamageEnum(){ return 244;}
+function NewDamageEnum(){ return 245;}
+function StressIntensityFactorEnum(){ return 246;}
+function CalvingLawEnum(){ return 247;}
+function CalvingCalvingrateEnum(){ return 248;}
+function CalvingMeltingrateEnum(){ return 249;}
+function CalvingLevermannEnum(){ return 250;}
+function CalvingDevEnum(){ return 251;}
+function CalvingMinthicknessEnum(){ return 252;}
+function DefaultCalvingEnum(){ return 253;}
+function CalvingRequestedOutputsEnum(){ return 254;}
+function CalvinglevermannCoeffEnum(){ return 255;}
+function CalvinglevermannMeltingrateEnum(){ return 256;}
+function CalvingdevCoeffEnum(){ return 257;}
+function CalvingratexEnum(){ return 258;}
+function CalvingrateyEnum(){ return 259;}
+function CalvingratexAverageEnum(){ return 260;}
+function CalvingrateyAverageEnum(){ return 261;}
+function StrainRateparallelEnum(){ return 262;}
+function StrainRateperpendicularEnum(){ return 263;}
+function StrainRateeffectiveEnum(){ return 264;}
+function MaterialsRhoIceEnum(){ return 265;}
+function MaterialsRhoSeawaterEnum(){ return 266;}
+function MaterialsRhoFreshwaterEnum(){ return 267;}
+function MaterialsMuWaterEnum(){ return 268;}
+function MaterialsThermalExchangeVelocityEnum(){ return 269;}
+function MaterialsThermalconductivityEnum(){ return 270;}
+function MaterialsTemperateiceconductivityEnum(){ return 271;}
+function MaterialsLithosphereShearModulusEnum(){ return 272;}
+function MaterialsLithosphereDensityEnum(){ return 273;}
+function MaterialsMantleShearModulusEnum(){ return 274;}
+function MaterialsMantleDensityEnum(){ return 275;}
+function MaterialsEarthDensityEnum(){ return 276;}
+function MeshAverageVertexConnectivityEnum(){ return 277;}
+function MeshElements2dEnum(){ return 278;}
+function MeshElementsEnum(){ return 279;}
+function MeshLowerelementsEnum(){ return 280;}
+function MeshNumberofelements2dEnum(){ return 281;}
+function MeshNumberofelementsEnum(){ return 282;}
+function MeshNumberoflayersEnum(){ return 283;}
+function MeshNumberofvertices2dEnum(){ return 284;}
+function MeshNumberofverticesEnum(){ return 285;}
+function MeshUpperelementsEnum(){ return 286;}
+function MeshVertexonbaseEnum(){ return 287;}
+function MeshVertexonsurfaceEnum(){ return 288;}
+function MeshVertexonboundaryEnum(){ return 289;}
+function MeshXEnum(){ return 290;}
+function MeshYEnum(){ return 291;}
+function MeshZEnum(){ return 292;}
+function MeshLatEnum(){ return 293;}
+function MeshLongEnum(){ return 294;}
+function MeshREnum(){ return 295;}
+function MeshElementtypeEnum(){ return 296;}
+function MeshSegmentsEnum(){ return 297;}
+function DomainTypeEnum(){ return 298;}
+function DomainDimensionEnum(){ return 299;}
+function Domain2DhorizontalEnum(){ return 300;}
+function Domain2DverticalEnum(){ return 301;}
+function Domain3DEnum(){ return 302;}
+function Domain3DsurfaceEnum(){ return 303;}
+function MiscellaneousNameEnum(){ return 304;}
+function MasstransportHydrostaticAdjustmentEnum(){ return 305;}
+function MasstransportIsfreesurfaceEnum(){ return 306;}
+function MasstransportMinThicknessEnum(){ return 307;}
+function MasstransportPenaltyFactorEnum(){ return 308;}
+function MasstransportSpcthicknessEnum(){ return 309;}
+function MasstransportStabilizationEnum(){ return 310;}
+function MasstransportVertexPairingEnum(){ return 311;}
+function MasstransportNumRequestedOutputsEnum(){ return 312;}
+function MasstransportRequestedOutputsEnum(){ return 313;}
+function QmuIsdakotaEnum(){ return 314;}
+function MassFluxSegmentsEnum(){ return 315;}
+function MassFluxSegmentsPresentEnum(){ return 316;}
+function QmuMassFluxSegmentsPresentEnum(){ return 317;}
+function QmuNumberofpartitionsEnum(){ return 318;}
+function QmuNumberofresponsesEnum(){ return 319;}
+function QmuPartitionEnum(){ return 320;}
+function QmuResponsedescriptorsEnum(){ return 321;}
+function QmuVariabledescriptorsEnum(){ return 322;}
+function RiftsNumriftsEnum(){ return 323;}
+function RiftsRiftstructEnum(){ return 324;}
+function SettingsResultsOnNodesEnum(){ return 325;}
+function SettingsIoGatherEnum(){ return 326;}
+function SettingsLowmemEnum(){ return 327;}
+function SettingsOutputFrequencyEnum(){ return 328;}
+function SettingsRecordingFrequencyEnum(){ return 329;}
+function SettingsWaitonlockEnum(){ return 330;}
+function DebugProfilingEnum(){ return 331;}
+function ProfilingCurrentMemEnum(){ return 332;}
+function ProfilingCurrentFlopsEnum(){ return 333;}
+function ProfilingSolutionTimeEnum(){ return 334;}
+function SteadystateMaxiterEnum(){ return 335;}
+function SteadystateNumRequestedOutputsEnum(){ return 336;}
+function SteadystateReltolEnum(){ return 337;}
+function SteadystateRequestedOutputsEnum(){ return 338;}
+function SurfaceEnum(){ return 339;}
+function ThermalIsenthalpyEnum(){ return 340;}
+function ThermalIsdynamicbasalspcEnum(){ return 341;}
+function ThermalReltolEnum(){ return 342;}
+function ThermalMaxiterEnum(){ return 343;}
+function ThermalPenaltyFactorEnum(){ return 344;}
+function ThermalPenaltyLockEnum(){ return 345;}
+function ThermalPenaltyThresholdEnum(){ return 346;}
+function ThermalSpctemperatureEnum(){ return 347;}
+function ThermalStabilizationEnum(){ return 348;}
+function ThermalNumRequestedOutputsEnum(){ return 349;}
+function ThermalRequestedOutputsEnum(){ return 350;}
+function GiaMantleViscosityEnum(){ return 351;}
+function GiaLithosphereThicknessEnum(){ return 352;}
+function ThicknessEnum(){ return 353;}
+function TimesteppingStartTimeEnum(){ return 354;}
+function TimesteppingFinalTimeEnum(){ return 355;}
+function TimesteppingCflCoefficientEnum(){ return 356;}
+function TimesteppingTimeAdaptEnum(){ return 357;}
+function TimesteppingTimeStepEnum(){ return 358;}
+function TimesteppingInterpForcingsEnum(){ return 359;}
+function TransientIssmbEnum(){ return 360;}
+function TransientIscouplerEnum(){ return 361;}
+function TransientIsstressbalanceEnum(){ return 362;}
+function TransientIsgroundinglineEnum(){ return 363;}
+function TransientIsmasstransportEnum(){ return 364;}
+function TransientIsthermalEnum(){ return 365;}
+function TransientIsgiaEnum(){ return 366;}
+function TransientIsdamageevolutionEnum(){ return 367;}
+function TransientIshydrologyEnum(){ return 368;}
+function TransientIsmovingfrontEnum(){ return 369;}
+function TransientIsslrEnum(){ return 370;}
+function TransientNumRequestedOutputsEnum(){ return 371;}
+function TransientRequestedOutputsEnum(){ return 372;}
+function PotentialEnum(){ return 373;}
+function BalancethicknessSpcpotentialEnum(){ return 374;}
+function BalancethicknessApparentMassbalanceEnum(){ return 375;}
+function Balancethickness2MisfitEnum(){ return 376;}
+function BalancethicknessDiffusionCoefficientEnum(){ return 377;}
+function BalancethicknessCmuEnum(){ return 378;}
+function BalancethicknessOmegaEnum(){ return 379;}
+function BalancethicknessD0Enum(){ return 380;}
+function SmbEnum(){ return 381;}
+function SmbAnalysisEnum(){ return 382;}
+function SmbSolutionEnum(){ return 383;}
+function SmbNumRequestedOutputsEnum(){ return 384;}
+function SmbRequestedOutputsEnum(){ return 385;}
+function SmbIsInitializedEnum(){ return 386;}
+function SMBforcingEnum(){ return 387;}
+function SmbMassBalanceEnum(){ return 388;}
+function SMBgembEnum(){ return 389;}
+function SmbInitDensityScalingEnum(){ return 390;}
+function SmbTaEnum(){ return 391;}
+function SmbVEnum(){ return 392;}
+function SmbDswrfEnum(){ return 393;}
+function SmbDlwrfEnum(){ return 394;}
+function SmbPEnum(){ return 395;}
+function SmbSwfEnum(){ return 396;}
+function SmbEAirEnum(){ return 397;}
+function SmbPAirEnum(){ return 398;}
+function SmbTmeanEnum(){ return 399;}
+function SmbCEnum(){ return 400;}
+function SmbTzEnum(){ return 401;}
+function SmbVzEnum(){ return 402;}
+function SmbDtEnum(){ return 403;}
+function SmbDzEnum(){ return 404;}
+function SmbAIdxEnum(){ return 405;}
+function SmbSwIdxEnum(){ return 406;}
+function SmbDenIdxEnum(){ return 407;}
+function SmbZTopEnum(){ return 408;}
+function SmbDzTopEnum(){ return 409;}
+function SmbDzMinEnum(){ return 410;}
+function SmbZYEnum(){ return 411;}
+function SmbZMaxEnum(){ return 412;}
+function SmbZMinEnum(){ return 413;}
+function SmbOutputFreqEnum(){ return 414;}
+function SmbASnowEnum(){ return 415;}
+function SmbAIceEnum(){ return 416;}
+function SmbCldFracEnum(){ return 417;}
+function SmbT0wetEnum(){ return 418;}
+function SmbT0dryEnum(){ return 419;}
+function SmbKEnum(){ return 420;}
+function SmbDEnum(){ return 421;}
+function SmbReEnum(){ return 422;}
+function SmbGdnEnum(){ return 423;}
+function SmbGspEnum(){ return 424;}
+function SmbECEnum(){ return 425;}
+function SmbCondensationEnum(){ return 426;}
+function SmbWEnum(){ return 427;}
+function SmbAEnum(){ return 428;}
+function SmbTEnum(){ return 429;}
+function SmbIsgraingrowthEnum(){ return 430;}
+function SmbIsalbedoEnum(){ return 431;}
+function SmbIsshortwaveEnum(){ return 432;}
+function SmbIsthermalEnum(){ return 433;}
+function SmbIsaccumulationEnum(){ return 434;}
+function SmbIsmeltEnum(){ return 435;}
+function SmbIsdensificationEnum(){ return 436;}
+function SmbIsturbulentfluxEnum(){ return 437;}
+function SMBpddEnum(){ return 438;}
+function SmbDelta18oEnum(){ return 439;}
+function SmbDelta18oSurfaceEnum(){ return 440;}
+function SmbIsdelta18oEnum(){ return 441;}
+function SmbIsmungsmEnum(){ return 442;}
+function SmbIsd18opdEnum(){ return 443;}
+function SmbPrecipitationsPresentdayEnum(){ return 444;}
+function SmbPrecipitationsLgmEnum(){ return 445;}
+function SmbTemperaturesPresentdayEnum(){ return 446;}
+function SmbTemperaturesLgmEnum(){ return 447;}
+function SmbPrecipitationEnum(){ return 448;}
+function SmbDesfacEnum(){ return 449;}
+function SmbS0pEnum(){ return 450;}
+function SmbS0tEnum(){ return 451;}
+function SmbRlapsEnum(){ return 452;}
+function SmbRlapslgmEnum(){ return 453;}
+function SmbPfacEnum(){ return 454;}
+function SmbTdiffEnum(){ return 455;}
+function SmbSealevEnum(){ return 456;}
+function SMBd18opddEnum(){ return 457;}
+function SmbDpermilEnum(){ return 458;}
+function SMBgradientsEnum(){ return 459;}
+function SmbMonthlytemperaturesEnum(){ return 460;}
+function SmbHrefEnum(){ return 461;}
+function SmbSmbrefEnum(){ return 462;}
+function SmbBPosEnum(){ return 463;}
+function SmbBNegEnum(){ return 464;}
+function SMBhenningEnum(){ return 465;}
+function SMBcomponentsEnum(){ return 466;}
+function SmbAccumulationEnum(){ return 467;}
+function SmbEvaporationEnum(){ return 468;}
+function SmbRunoffEnum(){ return 469;}
+function SMBmeltcomponentsEnum(){ return 470;}
+function SmbMeltEnum(){ return 471;}
+function SmbRefreezeEnum(){ return 472;}
+function SMBgcmEnum(){ return 473;}
+function SmbIspddEnum(){ return 474;}
+function SmbIssmbgradientsEnum(){ return 475;}
+function SolutionTypeEnum(){ return 476;}
+function AnalysisTypeEnum(){ return 477;}
+function ConfigurationTypeEnum(){ return 478;}
+function AdjointBalancethicknessAnalysisEnum(){ return 479;}
+function AdjointBalancethickness2AnalysisEnum(){ return 480;}
+function AdjointHorizAnalysisEnum(){ return 481;}
+function AnalysisCounterEnum(){ return 482;}
+function DefaultAnalysisEnum(){ return 483;}
+function BalancethicknessAnalysisEnum(){ return 484;}
+function BalancethicknessSolutionEnum(){ return 485;}
+function Balancethickness2AnalysisEnum(){ return 486;}
+function Balancethickness2SolutionEnum(){ return 487;}
+function BalancethicknessSoftAnalysisEnum(){ return 488;}
+function BalancethicknessSoftSolutionEnum(){ return 489;}
+function BalancevelocityAnalysisEnum(){ return 490;}
+function BalancevelocitySolutionEnum(){ return 491;}
+function L2ProjectionEPLAnalysisEnum(){ return 492;}
+function L2ProjectionBaseAnalysisEnum(){ return 493;}
+function BedSlopeSolutionEnum(){ return 494;}
+function DamageEvolutionSolutionEnum(){ return 495;}
+function DamageEvolutionAnalysisEnum(){ return 496;}
+function StressbalanceAnalysisEnum(){ return 497;}
+function StressbalanceSIAAnalysisEnum(){ return 498;}
+function StressbalanceSolutionEnum(){ return 499;}
+function StressbalanceVerticalAnalysisEnum(){ return 500;}
+function EnthalpyAnalysisEnum(){ return 501;}
+function FlaimAnalysisEnum(){ return 502;}
+function FlaimSolutionEnum(){ return 503;}
+function HydrologyShreveAnalysisEnum(){ return 504;}
+function HydrologyDCInefficientAnalysisEnum(){ return 505;}
+function HydrologyDCEfficientAnalysisEnum(){ return 506;}
+function HydrologySommersAnalysisEnum(){ return 507;}
+function HydrologySolutionEnum(){ return 508;}
+function MeltingAnalysisEnum(){ return 509;}
+function MasstransportAnalysisEnum(){ return 510;}
+function MasstransportSolutionEnum(){ return 511;}
+function FreeSurfaceBaseAnalysisEnum(){ return 512;}
+function FreeSurfaceTopAnalysisEnum(){ return 513;}
+function SurfaceNormalVelocityEnum(){ return 514;}
+function ExtrudeFromBaseAnalysisEnum(){ return 515;}
+function ExtrudeFromTopAnalysisEnum(){ return 516;}
+function DepthAverageAnalysisEnum(){ return 517;}
+function SteadystateSolutionEnum(){ return 518;}
+function SurfaceSlopeSolutionEnum(){ return 519;}
+function SmoothAnalysisEnum(){ return 520;}
+function ThermalAnalysisEnum(){ return 521;}
+function ThermalSolutionEnum(){ return 522;}
+function TransientSolutionEnum(){ return 523;}
+function UzawaPressureAnalysisEnum(){ return 524;}
+function GiaSolutionEnum(){ return 525;}
+function GiaAnalysisEnum(){ return 526;}
+function MeshdeformationSolutionEnum(){ return 527;}
+function MeshdeformationAnalysisEnum(){ return 528;}
+function LevelsetAnalysisEnum(){ return 529;}
+function LevelsetStabilizationEnum(){ return 530;}
+function ExtrapolationAnalysisEnum(){ return 531;}
+function LsfReinitializationAnalysisEnum(){ return 532;}
+function ApproximationEnum(){ return 533;}
+function NoneApproximationEnum(){ return 534;}
+function SIAApproximationEnum(){ return 535;}
+function SSAApproximationEnum(){ return 536;}
+function SSAHOApproximationEnum(){ return 537;}
+function SSAFSApproximationEnum(){ return 538;}
+function L1L2ApproximationEnum(){ return 539;}
+function HOApproximationEnum(){ return 540;}
+function HOFSApproximationEnum(){ return 541;}
+function FSApproximationEnum(){ return 542;}
+function FSvelocityEnum(){ return 543;}
+function FSpressureEnum(){ return 544;}
+function DataSetEnum(){ return 545;}
+function ConstraintsEnum(){ return 546;}
+function LoadsEnum(){ return 547;}
+function MaterialsEnum(){ return 548;}
+function NodesEnum(){ return 549;}
+function ContoursEnum(){ return 550;}
+function ParametersEnum(){ return 551;}
+function VerticesEnum(){ return 552;}
+function ResultsEnum(){ return 553;}
+function GenericParamEnum(){ return 554;}
+function AdolcParamEnum(){ return 555;}
+function BoolInputEnum(){ return 556;}
+function BoolParamEnum(){ return 557;}
+function ContourEnum(){ return 558;}
+function ControlInputEnum(){ return 559;}
+function DatasetInputEnum(){ return 560;}
+function DoubleInputEnum(){ return 561;}
+function DoubleArrayInputEnum(){ return 562;}
+function DataSetParamEnum(){ return 563;}
+function DoubleMatArrayParamEnum(){ return 564;}
+function DoubleMatParamEnum(){ return 565;}
+function DoubleParamEnum(){ return 566;}
+function DoubleVecParamEnum(){ return 567;}
+function ElementEnum(){ return 568;}
+function ElementHookEnum(){ return 569;}
+function HookEnum(){ return 570;}
+function ExternalResultEnum(){ return 571;}
+function FileParamEnum(){ return 572;}
+function InputEnum(){ return 573;}
+function IntInputEnum(){ return 574;}
+function InputToExtrudeEnum(){ return 575;}
+function InputToL2ProjectEnum(){ return 576;}
+function InputToDepthaverageEnum(){ return 577;}
+function InputToSmoothEnum(){ return 578;}
+function SmoothThicknessMultiplierEnum(){ return 579;}
+function IntParamEnum(){ return 580;}
+function IntVecParamEnum(){ return 581;}
+function TransientParamEnum(){ return 582;}
+function MaticeEnum(){ return 583;}
+function MatdamageiceEnum(){ return 584;}
+function MatestarEnum(){ return 585;}
+function MatparEnum(){ return 586;}
+function NodeEnum(){ return 587;}
+function NumericalfluxEnum(){ return 588;}
+function NumericalfluxTypeEnum(){ return 589;}
+function NeumannfluxEnum(){ return 590;}
+function ParamEnum(){ return 591;}
+function MoulinEnum(){ return 592;}
+function PengridEnum(){ return 593;}
+function PenpairEnum(){ return 594;}
+function ProfilerEnum(){ return 595;}
+function MatrixParamEnum(){ return 596;}
+function MassconEnum(){ return 597;}
+function MassconNameEnum(){ return 598;}
+function MassconDefinitionenumEnum(){ return 599;}
+function MassconLevelsetEnum(){ return 600;}
+function MassconaxpbyEnum(){ return 601;}
+function MassconaxpbyNameEnum(){ return 602;}
+function MassconaxpbyDefinitionenumEnum(){ return 603;}
+function MassconaxpbyNamexEnum(){ return 604;}
+function MassconaxpbyNameyEnum(){ return 605;}
+function MassconaxpbyAlphaEnum(){ return 606;}
+function MassconaxpbyBetaEnum(){ return 607;}
+function NodeSIdEnum(){ return 608;}
+function VectorParamEnum(){ return 609;}
+function RiftfrontEnum(){ return 610;}
+function RiftfrontTypeEnum(){ return 611;}
+function SegmentEnum(){ return 612;}
+function SegmentRiftfrontEnum(){ return 613;}
+function SpcDynamicEnum(){ return 614;}
+function SpcStaticEnum(){ return 615;}
+function SpcTransientEnum(){ return 616;}
+function StringArrayParamEnum(){ return 617;}
+function StringParamEnum(){ return 618;}
+function SegEnum(){ return 619;}
+function SegInputEnum(){ return 620;}
+function TriaEnum(){ return 621;}
+function TriaInputEnum(){ return 622;}
+function TetraEnum(){ return 623;}
+function TetraInputEnum(){ return 624;}
+function PentaEnum(){ return 625;}
+function PentaInputEnum(){ return 626;}
+function VertexEnum(){ return 627;}
+function VertexPIdEnum(){ return 628;}
+function VertexSIdEnum(){ return 629;}
+function AirEnum(){ return 630;}
+function IceEnum(){ return 631;}
+function MelangeEnum(){ return 632;}
+function WaterEnum(){ return 633;}
+function ClosedEnum(){ return 634;}
+function FreeEnum(){ return 635;}
+function OpenEnum(){ return 636;}
+function AdjointpEnum(){ return 637;}
+function AdjointxEnum(){ return 638;}
+function AdjointyEnum(){ return 639;}
+function AdjointzEnum(){ return 640;}
+function BalancethicknessMisfitEnum(){ return 641;}
+function BedSlopeXEnum(){ return 642;}
+function BedSlopeYEnum(){ return 643;}
+function BoundaryEnum(){ return 644;}
+function ConvergedEnum(){ return 645;}
+function FillEnum(){ return 646;}
+function FractionIncrementEnum(){ return 647;}
+function FrictionEnum(){ return 648;}
+function InternalEnum(){ return 649;}
+function MassFluxEnum(){ return 650;}
+function MeltingOffsetEnum(){ return 651;}
+function MisfitEnum(){ return 652;}
+function PressureEnum(){ return 653;}
+function PressurePicardEnum(){ return 654;}
+function AndroidFrictionCoefficientEnum(){ return 655;}
+function ResetPenaltiesEnum(){ return 656;}
+function SegmentOnIceShelfEnum(){ return 657;}
+function SurfaceAbsVelMisfitEnum(){ return 658;}
+function SurfaceAreaEnum(){ return 659;}
+function SurfaceAverageVelMisfitEnum(){ return 660;}
+function SurfaceLogVelMisfitEnum(){ return 661;}
+function SurfaceLogVxVyMisfitEnum(){ return 662;}
+function SurfaceRelVelMisfitEnum(){ return 663;}
+function SurfaceSlopeXEnum(){ return 664;}
+function SurfaceSlopeYEnum(){ return 665;}
+function TemperatureEnum(){ return 666;}
+function TemperaturePicardEnum(){ return 667;}
+function TemperaturePDDEnum(){ return 668;}
+function ThicknessAbsMisfitEnum(){ return 669;}
+function SurfaceAbsMisfitEnum(){ return 670;}
+function VelEnum(){ return 671;}
+function VelocityEnum(){ return 672;}
+function VxAverageEnum(){ return 673;}
+function VxEnum(){ return 674;}
+function VxPicardEnum(){ return 675;}
+function VyAverageEnum(){ return 676;}
+function VyEnum(){ return 677;}
+function VyPicardEnum(){ return 678;}
+function VzEnum(){ return 679;}
+function VzSSAEnum(){ return 680;}
+function VzHOEnum(){ return 681;}
+function VzPicardEnum(){ return 682;}
+function VzFSEnum(){ return 683;}
+function VxMeshEnum(){ return 684;}
+function VyMeshEnum(){ return 685;}
+function VzMeshEnum(){ return 686;}
+function EnthalpyEnum(){ return 687;}
+function EnthalpyPicardEnum(){ return 688;}
+function ThicknessAbsGradientEnum(){ return 689;}
+function ThicknessAlongGradientEnum(){ return 690;}
+function ThicknessAcrossGradientEnum(){ return 691;}
+function ThicknessPositiveEnum(){ return 692;}
+function IntMatParamEnum(){ return 693;}
+function RheologyBbarAbsGradientEnum(){ return 694;}
+function RheologyBAbsGradientEnum(){ return 695;}
+function DragCoefficientAbsGradientEnum(){ return 696;}
+function TransientInputEnum(){ return 697;}
+function WaterfractionEnum(){ return 698;}
+function WatercolumnEnum(){ return 699;}
+function BasalFrictionEnum(){ return 700;}
+function ViscousHeatingEnum(){ return 701;}
+function HydrologyWaterVxEnum(){ return 702;}
+function HydrologyWaterVyEnum(){ return 703;}
+function DrivingStressXEnum(){ return 704;}
+function DrivingStressYEnum(){ return 705;}
+function SigmaNNEnum(){ return 706;}
+function StressTensorEnum(){ return 707;}
+function StressTensorxxEnum(){ return 708;}
+function StressTensorxyEnum(){ return 709;}
+function StressTensorxzEnum(){ return 710;}
+function StressTensoryyEnum(){ return 711;}
+function StressTensoryzEnum(){ return 712;}
+function StressTensorzzEnum(){ return 713;}
+function StressMaxPrincipalEnum(){ return 714;}
+function DeviatoricStressEnum(){ return 715;}
+function DeviatoricStressxxEnum(){ return 716;}
+function DeviatoricStressxyEnum(){ return 717;}
+function DeviatoricStressxzEnum(){ return 718;}
+function DeviatoricStressyyEnum(){ return 719;}
+function DeviatoricStressyzEnum(){ return 720;}
+function DeviatoricStresszzEnum(){ return 721;}
+function DeviatoricStresseffectiveEnum(){ return 722;}
+function LambdaSEnum(){ return 723;}
+function StrainRateEnum(){ return 724;}
+function StrainRatexxEnum(){ return 725;}
+function StrainRatexyEnum(){ return 726;}
+function StrainRatexzEnum(){ return 727;}
+function StrainRateyyEnum(){ return 728;}
+function StrainRateyzEnum(){ return 729;}
+function StrainRatezzEnum(){ return 730;}
+function DivergenceEnum(){ return 731;}
+function MaxDivergenceEnum(){ return 732;}
+function GiaCrossSectionShapeEnum(){ return 733;}
+function GiadWdtEnum(){ return 734;}
+function GiaWEnum(){ return 735;}
+function P0Enum(){ return 736;}
+function P0ArrayEnum(){ return 737;}
+function P1Enum(){ return 738;}
+function P1DGEnum(){ return 739;}
+function P1bubbleEnum(){ return 740;}
+function P1bubblecondensedEnum(){ return 741;}
+function P2Enum(){ return 742;}
+function P2bubbleEnum(){ return 743;}
+function P2bubblecondensedEnum(){ return 744;}
+function P2xP1Enum(){ return 745;}
+function P1xP2Enum(){ return 746;}
+function P1xP3Enum(){ return 747;}
+function P2xP4Enum(){ return 748;}
+function P1P1Enum(){ return 749;}
+function P1P1GLSEnum(){ return 750;}
+function MINIEnum(){ return 751;}
+function MINIcondensedEnum(){ return 752;}
+function TaylorHoodEnum(){ return 753;}
+function LATaylorHoodEnum(){ return 754;}
+function XTaylorHoodEnum(){ return 755;}
+function OneLayerP4zEnum(){ return 756;}
+function CrouzeixRaviartEnum(){ return 757;}
+function LACrouzeixRaviartEnum(){ return 758;}
+function SaveResultsEnum(){ return 759;}
+function BoolExternalResultEnum(){ return 760;}
+function DoubleExternalResultEnum(){ return 761;}
+function DoubleMatExternalResultEnum(){ return 762;}
+function IntExternalResultEnum(){ return 763;}
+function JEnum(){ return 764;}
+function StringExternalResultEnum(){ return 765;}
+function StepEnum(){ return 766;}
+function TimeEnum(){ return 767;}
+function WaterColumnOldEnum(){ return 768;}
+function OutputdefinitionEnum(){ return 769;}
+function Outputdefinition1Enum(){ return 770;}
+function Outputdefinition2Enum(){ return 771;}
+function Outputdefinition3Enum(){ return 772;}
+function Outputdefinition4Enum(){ return 773;}
+function Outputdefinition5Enum(){ return 774;}
+function Outputdefinition6Enum(){ return 775;}
+function Outputdefinition7Enum(){ return 776;}
+function Outputdefinition8Enum(){ return 777;}
+function Outputdefinition9Enum(){ return 778;}
+function Outputdefinition10Enum(){ return 779;}
+function Outputdefinition11Enum(){ return 780;}
+function Outputdefinition12Enum(){ return 781;}
+function Outputdefinition13Enum(){ return 782;}
+function Outputdefinition14Enum(){ return 783;}
+function Outputdefinition15Enum(){ return 784;}
+function Outputdefinition16Enum(){ return 785;}
+function Outputdefinition17Enum(){ return 786;}
+function Outputdefinition18Enum(){ return 787;}
+function Outputdefinition19Enum(){ return 788;}
+function Outputdefinition20Enum(){ return 789;}
+function Outputdefinition21Enum(){ return 790;}
+function Outputdefinition22Enum(){ return 791;}
+function Outputdefinition23Enum(){ return 792;}
+function Outputdefinition24Enum(){ return 793;}
+function Outputdefinition25Enum(){ return 794;}
+function Outputdefinition26Enum(){ return 795;}
+function Outputdefinition27Enum(){ return 796;}
+function Outputdefinition28Enum(){ return 797;}
+function Outputdefinition29Enum(){ return 798;}
+function Outputdefinition30Enum(){ return 799;}
+function Outputdefinition31Enum(){ return 800;}
+function Outputdefinition32Enum(){ return 801;}
+function Outputdefinition33Enum(){ return 802;}
+function Outputdefinition34Enum(){ return 803;}
+function Outputdefinition35Enum(){ return 804;}
+function Outputdefinition36Enum(){ return 805;}
+function Outputdefinition37Enum(){ return 806;}
+function Outputdefinition38Enum(){ return 807;}
+function Outputdefinition39Enum(){ return 808;}
+function Outputdefinition40Enum(){ return 809;}
+function Outputdefinition41Enum(){ return 810;}
+function Outputdefinition42Enum(){ return 811;}
+function Outputdefinition43Enum(){ return 812;}
+function Outputdefinition44Enum(){ return 813;}
+function Outputdefinition45Enum(){ return 814;}
+function Outputdefinition46Enum(){ return 815;}
+function Outputdefinition47Enum(){ return 816;}
+function Outputdefinition48Enum(){ return 817;}
+function Outputdefinition49Enum(){ return 818;}
+function Outputdefinition50Enum(){ return 819;}
+function Outputdefinition51Enum(){ return 820;}
+function Outputdefinition52Enum(){ return 821;}
+function Outputdefinition53Enum(){ return 822;}
+function Outputdefinition54Enum(){ return 823;}
+function Outputdefinition55Enum(){ return 824;}
+function Outputdefinition56Enum(){ return 825;}
+function Outputdefinition57Enum(){ return 826;}
+function Outputdefinition58Enum(){ return 827;}
+function Outputdefinition59Enum(){ return 828;}
+function Outputdefinition60Enum(){ return 829;}
+function Outputdefinition61Enum(){ return 830;}
+function Outputdefinition62Enum(){ return 831;}
+function Outputdefinition63Enum(){ return 832;}
+function Outputdefinition64Enum(){ return 833;}
+function Outputdefinition65Enum(){ return 834;}
+function Outputdefinition66Enum(){ return 835;}
+function Outputdefinition67Enum(){ return 836;}
+function Outputdefinition68Enum(){ return 837;}
+function Outputdefinition69Enum(){ return 838;}
+function Outputdefinition70Enum(){ return 839;}
+function Outputdefinition71Enum(){ return 840;}
+function Outputdefinition72Enum(){ return 841;}
+function Outputdefinition73Enum(){ return 842;}
+function Outputdefinition74Enum(){ return 843;}
+function Outputdefinition75Enum(){ return 844;}
+function Outputdefinition76Enum(){ return 845;}
+function Outputdefinition77Enum(){ return 846;}
+function Outputdefinition78Enum(){ return 847;}
+function Outputdefinition79Enum(){ return 848;}
+function Outputdefinition80Enum(){ return 849;}
+function Outputdefinition81Enum(){ return 850;}
+function Outputdefinition82Enum(){ return 851;}
+function Outputdefinition83Enum(){ return 852;}
+function Outputdefinition84Enum(){ return 853;}
+function Outputdefinition85Enum(){ return 854;}
+function Outputdefinition86Enum(){ return 855;}
+function Outputdefinition87Enum(){ return 856;}
+function Outputdefinition88Enum(){ return 857;}
+function Outputdefinition89Enum(){ return 858;}
+function Outputdefinition90Enum(){ return 859;}
+function Outputdefinition91Enum(){ return 860;}
+function Outputdefinition92Enum(){ return 861;}
+function Outputdefinition93Enum(){ return 862;}
+function Outputdefinition94Enum(){ return 863;}
+function Outputdefinition95Enum(){ return 864;}
+function Outputdefinition96Enum(){ return 865;}
+function Outputdefinition97Enum(){ return 866;}
+function Outputdefinition98Enum(){ return 867;}
+function Outputdefinition99Enum(){ return 868;}
+function Outputdefinition100Enum(){ return 869;}
+function OutputdefinitionListEnum(){ return 870;}
+function MassfluxatgateEnum(){ return 871;}
+function MassfluxatgateNameEnum(){ return 872;}
+function MassfluxatgateDefinitionenumEnum(){ return 873;}
+function MassfluxatgateSegmentsEnum(){ return 874;}
+function NodalvalueEnum(){ return 875;}
+function NodalvalueNameEnum(){ return 876;}
+function NodalvalueDefinitionenumEnum(){ return 877;}
+function NodalvalueModelEnum(){ return 878;}
+function NodalvalueNodeEnum(){ return 879;}
+function MisfitNameEnum(){ return 880;}
+function MisfitDefinitionenumEnum(){ return 881;}
+function MisfitModelEnum(){ return 882;}
+function MisfitObservationEnum(){ return 883;}
+function MisfitObservationEnum(){ return 884;}
+function MisfitLocalEnum(){ return 885;}
+function MisfitTimeinterpolationEnum(){ return 886;}
+function MisfitWeightsEnum(){ return 887;}
+function MisfitWeightsEnum(){ return 888;}
+function SurfaceObservationEnum(){ return 889;}
+function WeightsSurfaceObservationEnum(){ return 890;}
+function VxObsEnum(){ return 891;}
+function WeightsVxObsEnum(){ return 892;}
+function VyObsEnum(){ return 893;}
+function WeightsVyObsEnum(){ return 894;}
+function MinVelEnum(){ return 895;}
+function MaxVelEnum(){ return 896;}
+function MinVxEnum(){ return 897;}
+function MaxVxEnum(){ return 898;}
+function MaxAbsVxEnum(){ return 899;}
+function MinVyEnum(){ return 900;}
+function MaxVyEnum(){ return 901;}
+function MaxAbsVyEnum(){ return 902;}
+function MinVzEnum(){ return 903;}
+function MaxVzEnum(){ return 904;}
+function MaxAbsVzEnum(){ return 905;}
+function FloatingAreaEnum(){ return 906;}
+function GroundedAreaEnum(){ return 907;}
+function IceMassEnum(){ return 908;}
+function IceVolumeEnum(){ return 909;}
+function IceVolumeAboveFloatationEnum(){ return 910;}
+function TotalFloatingBmbEnum(){ return 911;}
+function TotalGroundedBmbEnum(){ return 912;}
+function TotalSmbEnum(){ return 913;}
+function AbsoluteEnum(){ return 914;}
+function IncrementalEnum(){ return 915;}
+function AugmentedLagrangianREnum(){ return 916;}
+function AugmentedLagrangianRhopEnum(){ return 917;}
+function AugmentedLagrangianRlambdaEnum(){ return 918;}
+function AugmentedLagrangianRholambdaEnum(){ return 919;}
+function AugmentedLagrangianThetaEnum(){ return 920;}
+function NoneEnum(){ return 921;}
+function AggressiveMigrationEnum(){ return 922;}
+function SoftMigrationEnum(){ return 923;}
+function SubelementMigrationEnum(){ return 924;}
+function SubelementMigration2Enum(){ return 925;}
+function ContactEnum(){ return 926;}
+function GroundingOnlyEnum(){ return 927;}
+function MaskGroundediceLevelsetEnum(){ return 928;}
+function GaussSegEnum(){ return 929;}
+function GaussTriaEnum(){ return 930;}
+function GaussTetraEnum(){ return 931;}
+function GaussPentaEnum(){ return 932;}
+function FSSolverEnum(){ return 933;}
+function AdjointEnum(){ return 934;}
+function ColinearEnum(){ return 935;}
+function ControlSteadyEnum(){ return 936;}
+function FsetEnum(){ return 937;}
+function Gradient1Enum(){ return 938;}
+function Gradient2Enum(){ return 939;}
+function Gradient3Enum(){ return 940;}
+function GradientEnum(){ return 941;}
+function GroundinglineMigrationEnum(){ return 942;}
+function GsetEnum(){ return 943;}
+function IndexEnum(){ return 944;}
+function IndexedEnum(){ return 945;}
+function IntersectEnum(){ return 946;}
+function NodalEnum(){ return 947;}
+function OldGradientEnum(){ return 948;}
+function OutputBufferPointerEnum(){ return 949;}
+function OutputBufferSizePointerEnum(){ return 950;}
+function OutputFilePointerEnum(){ return 951;}
+function ToolkitsFileNameEnum(){ return 952;}
+function RootPathEnum(){ return 953;}
+function OutputFileNameEnum(){ return 954;}
+function InputFileNameEnum(){ return 955;}
+function LockFileNameEnum(){ return 956;}
+function RestartFileNameEnum(){ return 957;}
+function ToolkitsOptionsAnalysesEnum(){ return 958;}
+function ToolkitsOptionsStringsEnum(){ return 959;}
+function QmuErrNameEnum(){ return 960;}
+function QmuInNameEnum(){ return 961;}
+function QmuOutNameEnum(){ return 962;}
+function RegularEnum(){ return 963;}
+function ScaledEnum(){ return 964;}
+function SeparateEnum(){ return 965;}
+function SsetEnum(){ return 966;}
+function VerboseEnum(){ return 967;}
+function TriangleInterpEnum(){ return 968;}
+function BilinearInterpEnum(){ return 969;}
+function NearestInterpEnum(){ return 970;}
+function XYEnum(){ return 971;}
+function XYZEnum(){ return 972;}
+function DenseEnum(){ return 973;}
+function MpiDenseEnum(){ return 974;}
+function MpiSparseEnum(){ return 975;}
+function SeqEnum(){ return 976;}
+function MpiEnum(){ return 977;}
+function MumpsEnum(){ return 978;}
+function GslEnum(){ return 979;}
+function OptionEnum(){ return 980;}
+function GenericOptionEnum(){ return 981;}
+function OptionCellEnum(){ return 982;}
+function OptionStructEnum(){ return 983;}
+function CuffeyEnum(){ return 984;}
+function BuddJackaEnum(){ return 985;}
+function CuffeyTemperateEnum(){ return 986;}
+function PatersonEnum(){ return 987;}
+function ArrheniusEnum(){ return 988;}
+function LliboutryDuvalEnum(){ return 989;}
+function SpclevelsetEnum(){ return 990;}
+function ExtrapolationVariableEnum(){ return 991;}
+function IceMaskNodeActivationEnum(){ return 992;}
+function LevelsetfunctionSlopeXEnum(){ return 993;}
+function LevelsetfunctionSlopeYEnum(){ return 994;}
+function LevelsetfunctionPicardEnum(){ return 995;}
+function LevelsetReinitFrequencyEnum(){ return 996;}
+function SealevelriseSolutionEnum(){ return 997;}
+function SealevelriseAnalysisEnum(){ return 998;}
+function SealevelEnum(){ return 999;}
+function SealevelEustaticEnum(){ return 1000;}
+function SealevelriseDeltathicknessEnum(){ return 1001;}
+function SealevelriseMaxiterEnum(){ return 1002;}
+function SealevelriseReltolEnum(){ return 1003;}
+function SealevelriseAbstolEnum(){ return 1004;}
+function SealevelriseLoveHEnum(){ return 1005;}
+function SealevelriseLoveKEnum(){ return 1006;}
+function SealevelriseTideLoveHEnum(){ return 1007;}
+function SealevelriseTideLoveKEnum(){ return 1008;}
+function SealevelriseRigidEnum(){ return 1009;}
+function SealevelriseElasticEnum(){ return 1010;}
+function SealevelriseRotationEnum(){ return 1011;}
+function SealevelriseGElasticEnum(){ return 1012;}
+function SealevelriseDegaccEnum(){ return 1013;}
+function SealevelriseTransitionsEnum(){ return 1014;}
+function SealevelriseRequestedOutputsEnum(){ return 1015;}
+function SealevelriseNumRequestedOutputsEnum(){ return 1016;}
+function ParametersENDEnum(){ return 1017;}
+function MaximumNumberOfDefinitionsEnum(){ return 1018;}
+function FlagElements(md,region){
+//FLAGELEMENTS - flag the elements in an region
+//
+//   The region can be given as a string, or as a javascript array
+//
+//   Usage: 
+//      flag=FlagElements(md,region);
+//
+//   Example:
+//      flag=FlagElements(md,'all');
+//      flag=FlagElements(md,'');
+//      flag=FlagElements(md,domain);
+
+	//variables
+	var flag;
+	
+	if (typeof region == 'string'){
+		if (region === ''){
+			flag=NewArrayFill(md.mesh.numberofelements,0);
+		}
+		else if (region === 'all'){
+			flag=NewArrayFill(md.mesh.numberofelements,1);
+		}
+		else{
+			flag=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,region,'element',1);
+		}
+	}
+	else if(IsArray(region)){
+		if (region.length==md.mesh.numberofelements){
+			flag=region;
+		}
+		else if (region.length==md.mesh.numberofvertices){
+			var flag=NewArrayFill(md.mesh.numberofelements,0);
+			for (var i=0;i<md.mesh.numberofelements;i++)
+				var sum=0;
+				for(var j=0;j<md.mesh.elements[0].length;j++){
+					sum += region[md.mesh.element[i][j]-1];
+				}
+				if (sum==md.mesh.elements[0].length)flag[i]=1;
+		}
+		else{
+			throw Error('Flaglist for region must be of same size as number of elements in model');
+		}
+	}
+	else{
+		throw Error('Invalid region option');
+	}
+	return flag;
+}
+function  marshallcostfunctions(cost_functions){
+	for(var i=0;i<cost_functions.length;i++){
+		if(cost_functions[i]==101) data[i]=SurfaceAbsVelMisfitEnum();
+		if(cost_functions[i]==102) data[i]=SurfaceRelVelMisfitEnum();
+		if(cost_functions[i]==103) data[i]=SurfaceLogVelMisfitEnum();
+		if(cost_functions[i]==104) data[i]=SurfaceLogVxVyMisfitEnum();
+		if(cost_functions[i]==105) data[i]=SurfaceAverageVelMisfitEnum();
+		if(cost_functions[i]==201) data[i]=ThicknessAbsMisfitEnum();
+		if(cost_functions[i]==501) data[i]=DragCoefficientAbsGradientEnum();
+		if(cost_functions[i]==502) data[i]=RheologyBbarAbsGradientEnum();
+		if(cost_functions[i]==503) data[i]=ThicknessAbsGradientEnum();
+		if(cost_functions[i]==504) data[i]=ThicknessAlongGradientEnum();
+		if(cost_functions[i]==505) data[i]=ThicknessAcrossGradientEnum();
+		if(cost_functions[i]==506) data[i]=BalancethicknessMisfitEnum();
+		if(cost_functions[i]==507) data[i]=RheologyBAbsGradientEnum();
+		if(cost_functions[i]==601) data[i]=SurfaceAbsMisfitEnum();
+	}
+	return data;
+}
+//FILEPTR class definition
+////
+//// Usage: 
+//// var fid = new fileptr(); 
+//
+//
+
+function fileptr() {
+	//properties
+	this.increment=NaN;
+	this.buffer =NaN;
+	this.view =NaN;
+	this.ptr =NaN;
+	this.buffersize =NaN;
+	this.mode ='';
+	this.options = new pairoptions(Array.prototype.slice.call(arguments));
+	
+	//methods
+		this.disp = function () { //{{{
+			console.log(sprintf("   fileptr:")); 
+
+			console.log(sprintf("       buffer: ArrayBuffer{ byteLength: %i }\n",this.buffer.byteLength));
+			console.log(sprintf("       ptr: %i\n",this.ptr));
+			console.log(sprintf("       increment: %i\n",this.increment));
+			console.log(sprintf("       mode: %s\n",this.mode));
+
+		} //}}}
+		this.setdefaultparameters = function (options) { //{{{
+	
+			this.mode=options.getfieldvalue('mode');
+			this.ptr=0;
+			this.increment=0;
+			this.buffersize=0;
+			if (this.mode=='w'){
+				this.increment=options.getfieldvalue('increment',800000); //80000 bytes,  10000 doubles.
+				this.buffer=new ArrayBuffer(this.increment);
+				this.view=new DataView(this.buffer);
+			}
+			else if(this.mode == 'r'){
+				
+				/*recover buffer and its size: */
+				var bufferin= options.getfieldvalue('buffer');
+				this.buffersize= options.getfieldvalue('buffersize');
+				
+				/*crete a typed array buffer: */
+				this.buffer=new ArrayBuffer(this.buffersize);
+				this.view=new DataView(this.buffer); 
+				for(var i=0;i<this.buffersize;i++) this.view.setUint8(i,bufferin[i]);
+			}
+
+		} //}}}
+		this.fwrite = function (value,format) { //{{{
+
+			
+			if(format == 'int'){
+				if(this.ptr+4>=this.buffer.byteLength)this.resize();
+				this.view.setUint32(this.ptr,value,true); this.ptr+=4;
+			}
+			else if(format == 'char'){
+				if(this.ptr+value.length>=this.buffer.byteLength)this.resize();
+				for(var i=0;i<value.length;i++){
+					this.view.setUint8(this.ptr,value.charCodeAt(i),true); 
+					this.ptr+=1;
+				}
+			}
+			else if(format == 'double'){
+				if(this.ptr+8>=this.buffer.byteLength)this.resize();
+				if (!IsArray(value)){
+					this.view.setFloat64(this.ptr,value,true);
+					this.ptr+=8;
+				}
+				else{
+					if (!IsArray(value[0])){
+						if(this.ptr+value.length*8>=this.buffer.byteLength){
+							this.resize();
+							if(this.ptr+value.length*8>=this.buffer.byteLength)throw Error('fileptr.fwrite error: need to increase increment size!');
+						}
+						for(var i=0;i<value.length;i++){
+							this.view.setFloat64(this.ptr,value[i],true);
+							this.ptr+=8;
+						}
+					}
+					else{
+						if(this.ptr+value.length*value[0].length*8>=this.buffer.byteLength)this.resize();
+						for(var i=0;i<value.length;i++){
+							for(var j=0;j<value[0].length;j++){
+								this.view.setFloat64(this.ptr,value[i][j],true);
+								this.ptr+=8;
+							}
+						}
+					}
+				}
+			}
+			else throw Error('fileptr.fwrite error message: wrong type of format');
+		} //}}}
+		this.fread = function (size,format) { //{{{
+			
+			var value;
+
+			if(this.ptr==this.buffersize)return -1;
+			if(format == 'int'){
+				if(size==1){
+					value=this.view.getInt32(this.ptr,true); 
+					this.ptr+=4;
+				}
+				else{
+					value = new Int32Array(size);
+					for(var i=0;i<size;i++){
+						value[i]=this.view.getInt32(this.ptr,true); 
+						this.ptr+=4;
+					}
+				}
+			}
+			else if(format == 'char'){
+				value = ''; 
+				for(var i=0;i<(size-1);i++){
+					value+= String.fromCharCode(this.view.getUint8(this.ptr,true));
+					this.ptr+=1;
+				}
+				this.ptr+=1; //pass over the '\0';
+
+			}
+			else if(format == 'double'){
+				if(size==1){
+					value=this.view.getFloat64(this.ptr,true);
+					this.ptr+=8;
+				}
+				else{ 
+					value = new Float64Array(size);
+					for(var i=0;i<size;i++){
+						value[i]=this.view.getFloat64(this.ptr,true);
+						this.ptr+=8;
+					}
+				}
+			}
+			else throw Error('fileptr.fwrite error message: wrong type of format');
+			
+			return value;
+		} //}}}
+		this.rawbuffer = function () { //{{{
+			return this.buffer.slice(0,this.ptr);
+		} //}}}
+		this.resize = function () { //{{{
+			var  newbuffer = new ArrayBuffer(this.buffer.byteLength+this.increment);
+			new Uint8Array(newbuffer).set(new Uint8Array(this.buffer));
+			this.buffer=newbuffer;
+			this.view=new DataView(this.buffer);
+		} //}}}
+	//set defaults
+	this.setdefaultparameters(this.options);
+}
+function savemodel(md) {
+
+	var string=encodeURI(JSONfn.stringify(md));
+
+	var url='data:text/json:charset=utf8,' + encodeURIComponent(string);
+	window.open(url, '_blank');
+	window.focus();
+}
+function loadmodel(modelstring) {
+
+	var md=JSONfn.parse(decodeURI(modelstring));
+	md.fix();
+	return md;
+}
+function saveAsFile(content) {
+
+	var url='data:text/json:charset=utf8,' + encodeURIComponent(content);
+	window.open(url, '_blank');
+	window.focus();
+}
+function download() {
+	//DOWNLOAD - save model/variable data to file
+	//
+	//   Usage:
+	//      download=download('id','slr-download');
+	//      download=download('id','slr-download','data',md.geometry.thickness,'data',md.results.Stressbalance.Vel);
+
+	//Convert arguments to options
+	var args = Array.prototype.slice.call(arguments);
+	var options = new pairoptions(args.slice());
+	
+	//Recover option values:
+	var id = options.getfieldvalue('id','');
+	
+	document.getElementById(id).addEventListener('click', function() {
+		var data = {'elements':md.mesh.elements,'x':md.mesh.x,'y':md.mesh.y,'z':md.mesh.z};
+		for (var i=2; i < args.length; i+=2) {
+			try { 
+				data[args[i]] = args[i+1];
+			}
+			catch (e) { 
+				console.log(e); 
+			}
+		}
+		string = JSONfn.stringify(data);
+		
+		var url='data:text/json:charset=utf8,' + encodeURIComponent(string);
+		window.open(url, '_blank');
+		window.focus();
+	});
+}
+function paterson(temperature){
+//PATERSON - figure out the rigidity of ice for a given temperature
+//
+//   rigidity (in s^(1/3)Pa) is the flow law paramter in the flow law sigma=B*e(1/3) (Paterson, p97). 
+//   temperature is in Kelvin degrees
+//
+//   Usage:
+//      var rigidity=paterson(temperature)
+
+	//variables:
+	var T=[];
+
+	if (ArrayAnyBelowStrict(temperature,0)){
+		throw Error('input temperature should be in Kelvin (positive)');
+	}
+	
+	T=temperature;
+	for(var i=0;i<temperature.length;i++)T[i]=temperature[i]-273.15;
+
+	//The routine below is equivalent to:
+
+	// n=3; T=temperature-273;
+	// //From paterson,
+	// Temp=[0;-2;-5;-10;-15;-20;-25;-30;-35;-40;-45;-50];
+	// A=[6.8*10^-15;2.4*10^-15;1.6*10^-15;4.9*10^-16;2.9*10^-16;1.7*10^-16;9.4*
+	// 10^-17;5.1*10^-17;2.7*10^-17;1.4*10^-17;7.3*10^-18;3.6*10^-18];;//s-1(kPa-3)
+	// //Convert into rigidity B
+	// B=A.^(-1/n)*10^3; //s^(1/3)Pa
+	// //Now, do a cubic fit between Temp and B: 
+	// fittedmodel=fit(Temp,B,'cubicspline');
+	// rigidity=fittedmodel(temperature);
+
+	var rigidity=NewArrayFill(T.length,0);
+	
+	for (var i=0;i<T.length;i++){
+		
+		if(T[i]<=-45)              rigidity[i]=Math.pow(10,8)*(-0.000292866376675*Math.pow(T[i]+50,3)+ 0.011672640664130*Math.pow(T[i]+50,2)  -0.325004442485481*(T[i]+50)+  6.524779401948101);
+		if(-45<=T[i] & T[i]<-40)   rigidity[i]=Math.pow(10,8)*(-0.000292866376675*Math.pow(T[i]+45,3)+ 0.007279645014004*Math.pow(T[i]+45,2)  -0.230243014094813*(T[i]+45)+  5.154964909039554);
+		if(-40<=T[i] & T[i]<-35)   rigidity[i]=Math.pow(10,8)*(0.000072737147457*Math.pow(T[i]+40,3)+  0.002886649363879*Math.pow(T[i]+40,2)  -0.179411542205399*(T[i]+40)+  4.149132666831214);
+		if(-35<=T[i] & T[i]<-30)   rigidity[i]=Math.pow(10,8)*(-0.000086144770023*Math.pow(T[i]+35,3)+ 0.003977706575736*Math.pow(T[i]+35,2)  -0.145089762507325*(T[i]+35)+  3.333333333333331);
+		if(-30<=T[i] & T[i]<-25)   rigidity[i]=Math.pow(10,8)*(-0.000043984685769*Math.pow(T[i]+30,3)+ 0.002685535025386*Math.pow(T[i]+30,2)  -0.111773554501713*(T[i]+30)+  2.696559088937191);
+		if(-25<=T[i] & T[i]<-20)   rigidity[i]=Math.pow(10,8)*(-0.000029799523463*Math.pow(T[i]+25,3)+ 0.002025764738854*Math.pow(T[i]+25,2)  -0.088217055680511*(T[i]+25)+  2.199331606342181);
+		if(-20<=T[i] & T[i]<-15)   rigidity[i]=Math.pow(10,8)*(0.000136920904777*Math.pow(T[i]+20,3)+  0.001578771886910*Math.pow(T[i]+20,2)  -0.070194372551690*(T[i]+20)+  1.805165505978111);
+		if(-15<=T[i] & T[i]<-10)   rigidity[i]=Math.pow(10,8)*(-0.000899763781026*Math.pow(T[i]+15,3)+ 0.003632585458564*Math.pow(T[i]+15,2)  -0.044137585824322*(T[i]+15)+  1.510778053489523);
+		if(-10<=T[i] & T[i]<-5)    rigidity[i]=Math.pow(10,8)*(0.001676964325070*Math.pow(T[i]+10,3)-  0.009863871256831*Math.pow(T[i]+10,2)  -0.075294014815659*(T[i]+10)+  1.268434288203714);
+		if(-5<=T[i] & T[i]<-2)     rigidity[i]=Math.pow(10,8)*(-0.003748937622487*Math.pow(T[i]+5,3)+0.015290593619213*Math.pow(T[i]+5,2)  -0.048160403003748*(T[i]+5)+  0.854987973338348);
+		if(-2<=T[i])              rigidity[i]=Math.pow(10,8)*(-0.003748937622488*Math.pow(T[i]+2,3)-0.018449844983174*Math.pow(T[i]+2,2)  -0.057638157095631*(T[i]+2)+  0.746900791092860);
+
+		//Now make sure that rigidity is positive
+		if(rigidity[i]<0)          rigidity[i]=Math.pow(10,6);
+	}
+	return rigidity;
+}
+function triangle(md){
+//TRIANGLE - create model mesh using the triangle package
+//
+//   This routine creates a model mesh using TriMesh and a domain outline, to within a certain resolution
+//   where md is a @model object, domainname is the name of an Argus domain outline file, 
+//   and resolution is a characteristic length for the mesh (same unit as the domain outline
+//   unit). Riftname is an optional argument (Argus domain outline) describing rifts.
+//
+//   Usage:
+//      triangle(md,domain,resolution)
+//   or triangle(md,domain,riftname, resolution)
+//
+//   Examples:
+//      triangle(md,domain,1000);
+//      triangle(md,domain, rifts, 1500);
+
+	if (!(arguments.length==3 | arguments.length==4)){
+		console.log('triangle usage error.');
+	}
+	
+	var md=arguments[0];
+	var domain=arguments[1];
+
+	if (arguments.length==3){
+		var resolution=arguments[2];
+		var rifts=[];
+	}
+	if (arguments.length==4){
+		var rifts=arguments[2];
+		var resolution=arguments[3];
+	}
+
+	//Figure out a characteristic area. Resolution is a node oriented concept (ex a 1000m  resolution node would 
+	//be made of 1000*1000 area squares). 
+	var area=Math.pow(resolution,2);
+
+	//Call mesher: 
+	var return_array=TriMesh(md, domain, rifts, area); 
+
+	//Plug into md:
+	md.mesh.elements=return_array[0];
+	md.mesh.x=return_array[1];
+	md.mesh.y=return_array[2];
+	md.mesh.segments=return_array[3];
+	md.mesh.segmentmarkers=return_array[4];
+	
+	//Fill in rest of fields:
+	md.mesh.numberofelements=md.mesh.elements.length;
+	md.mesh.numberofvertices=md.mesh.x.length;
+	md.mesh.vertexonboundary=new Float64Array(md.mesh.numberofvertices); 
+
+	for (i=0;i<md.mesh.segments.length;i++) for(var j=0;j<2;j++) md.mesh.vertexonboundary[md.mesh.segments[i][j]-1]=1;
+
+	//Now, build the connectivity tables for this mesh.
+	md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+	md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);	
+
+}
+var colorbars={};
+colorbars["jet"]=[[0.000000,0.000000,0.750000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.250000,1.000000],
+[0.000000,0.500000,1.000000],
+[0.000000,0.750000,1.000000],
+[0.000000,1.000000,1.000000],
+[0.250000,1.000000,0.750000],
+[0.500000,1.000000,0.500000],
+[0.750000,1.000000,0.250000],
+[1.000000,1.000000,0.000000],
+[1.000000,0.750000,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,0.250000,0.000000],
+[1.000000,0.000000,0.000000],
+[0.750000,0.000000,0.000000],
+[0.500000,0.000000,0.000000]];
+colorbars["hsv"]=[[1.000000,0.000000,0.000000],
+[1.000000,0.375000,0.000000],
+[1.000000,0.750000,0.000000],
+[0.875000,1.000000,0.000000],
+[0.500000,1.000000,0.000000],
+[0.125000,1.000000,0.000000],
+[0.000000,1.000000,0.250000],
+[0.000000,1.000000,0.625000],
+[0.000000,1.000000,1.000000],
+[0.000000,0.625000,1.000000],
+[0.000000,0.250000,1.000000],
+[0.125000,0.000000,1.000000],
+[0.500000,0.000000,1.000000],
+[0.875000,0.000000,1.000000],
+[1.000000,0.000000,0.750000],
+[1.000000,0.000000,0.375000]];
+colorbars["hot"]=[[0.166667,0.000000,0.000000],
+[0.333333,0.000000,0.000000],
+[0.500000,0.000000,0.000000],
+[0.666667,0.000000,0.000000],
+[0.833333,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,0.166667,0.000000],
+[1.000000,0.333333,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,0.666667,0.000000],
+[1.000000,0.833333,0.000000],
+[1.000000,1.000000,0.000000],
+[1.000000,1.000000,0.250000],
+[1.000000,1.000000,0.500000],
+[1.000000,1.000000,0.750000],
+[1.000000,1.000000,1.000000]];
+colorbars["gray"]=[[0.000000,0.000000,0.000000],
+[0.066667,0.066667,0.066667],
+[0.133333,0.133333,0.133333],
+[0.200000,0.200000,0.200000],
+[0.266667,0.266667,0.266667],
+[0.333333,0.333333,0.333333],
+[0.400000,0.400000,0.400000],
+[0.466667,0.466667,0.466667],
+[0.533333,0.533333,0.533333],
+[0.600000,0.600000,0.600000],
+[0.666667,0.666667,0.666667],
+[0.733333,0.733333,0.733333],
+[0.800000,0.800000,0.800000],
+[0.866667,0.866667,0.866667],
+[0.933333,0.933333,0.933333],
+[1.000000,1.000000,1.000000]];
+colorbars["bone"]=[[0.000000,0.000000,0.020833],
+[0.058333,0.058333,0.100000],
+[0.116667,0.116667,0.179167],
+[0.175000,0.175000,0.258333],
+[0.233333,0.233333,0.337500],
+[0.291667,0.291667,0.416667],
+[0.350000,0.370833,0.475000],
+[0.408333,0.450000,0.533333],
+[0.466667,0.529167,0.591667],
+[0.525000,0.608333,0.650000],
+[0.583333,0.687500,0.708333],
+[0.641667,0.766667,0.766667],
+[0.731250,0.825000,0.825000],
+[0.820833,0.883333,0.883333],
+[0.910417,0.941667,0.941667],
+[1.000000,1.000000,1.000000]];
+colorbars["copper"]=[[0.000000,0.000000,0.000000],
+[0.083333,0.052080,0.033167],
+[0.166667,0.104160,0.066333],
+[0.250000,0.156240,0.099500],
+[0.333333,0.208320,0.132667],
+[0.416667,0.260400,0.165833],
+[0.500000,0.312480,0.199000],
+[0.583333,0.364560,0.232167],
+[0.666667,0.416640,0.265333],
+[0.750000,0.468720,0.298500],
+[0.833333,0.520800,0.331667],
+[0.916667,0.572880,0.364833],
+[1.000000,0.624960,0.398000],
+[1.000000,0.677040,0.431167],
+[1.000000,0.729120,0.464333],
+[1.000000,0.781200,0.497500]];
+colorbars["pink"]=[[0.235702,0.000000,0.000000],
+[0.394405,0.210819,0.210819],
+[0.505525,0.298142,0.298142],
+[0.596285,0.365148,0.365148],
+[0.674949,0.421637,0.421637],
+[0.745356,0.471405,0.471405],
+[0.774597,0.567646,0.516398],
+[0.802773,0.649786,0.557773],
+[0.829993,0.722649,0.596285],
+[0.856349,0.788811,0.632456],
+[0.881917,0.849837,0.666667],
+[0.906765,0.906765,0.699206],
+[0.930949,0.930949,0.785281],
+[0.954521,0.954521,0.862812],
+[0.977525,0.977525,0.933928],
+[1.000000,1.000000,1.000000]];
+colorbars["white"]=[[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000]];
+colorbars["flag"]=[[1.000000,0.000000,0.000000],
+[1.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000]];
+colorbars["lines"]=[[0.000000,0.000000,1.000000],
+[0.000000,0.500000,0.000000],
+[1.000000,0.000000,0.000000],
+[0.000000,0.750000,0.750000],
+[0.750000,0.000000,0.750000],
+[0.750000,0.750000,0.000000],
+[0.250000,0.250000,0.250000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.500000,0.000000],
+[1.000000,0.000000,0.000000],
+[0.000000,0.750000,0.750000],
+[0.750000,0.000000,0.750000],
+[0.750000,0.750000,0.000000],
+[0.250000,0.250000,0.250000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.500000,0.000000]];
+colorbars["colorcube"]=[[1.000000,1.000000,0.000000],
+[0.000000,1.000000,1.000000],
+[1.000000,0.000000,1.000000],
+[0.333333,0.000000,0.000000],
+[0.666667,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[0.000000,0.333333,0.000000],
+[0.000000,0.666667,0.000000],
+[0.000000,1.000000,0.000000],
+[0.000000,0.000000,0.333333],
+[0.000000,0.000000,0.666667],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[0.333333,0.333333,0.333333],
+[0.666667,0.666667,0.666667],
+[1.000000,1.000000,1.000000]];
+colorbars["vga"]=[[1.000000,1.000000,1.000000],
+[0.750000,0.750000,0.750000],
+[1.000000,0.000000,0.000000],
+[1.000000,1.000000,0.000000],
+[0.000000,1.000000,0.000000],
+[0.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[1.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[0.500000,0.500000,0.500000],
+[0.500000,0.000000,0.000000],
+[0.500000,0.500000,0.000000],
+[0.000000,0.500000,0.000000],
+[0.000000,0.500000,0.500000],
+[0.000000,0.000000,0.500000],
+[0.500000,0.000000,0.500000]];
+colorbars["prism"]=[[1.000000,0.000000,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,1.000000,0.000000],
+[0.000000,1.000000,0.000000],
+[0.000000,0.000000,1.000000],
+[0.666667,0.000000,1.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,1.000000,0.000000],
+[0.000000,1.000000,0.000000],
+[0.000000,0.000000,1.000000],
+[0.666667,0.000000,1.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,1.000000,0.000000],
+[0.000000,1.000000,0.000000]];
+colorbars["cool"]=[[0.000000,1.000000,1.000000],
+[0.066667,0.933333,1.000000],
+[0.133333,0.866667,1.000000],
+[0.200000,0.800000,1.000000],
+[0.266667,0.733333,1.000000],
+[0.333333,0.666667,1.000000],
+[0.400000,0.600000,1.000000],
+[0.466667,0.533333,1.000000],
+[0.533333,0.466667,1.000000],
+[0.600000,0.400000,1.000000],
+[0.666667,0.333333,1.000000],
+[0.733333,0.266667,1.000000],
+[0.800000,0.200000,1.000000],
+[0.866667,0.133333,1.000000],
+[0.933333,0.066667,1.000000],
+[1.000000,0.000000,1.000000]];
+colorbars["autumn"]=[[1.000000,0.000000,0.000000],
+[1.000000,0.066667,0.000000],
+[1.000000,0.133333,0.000000],
+[1.000000,0.200000,0.000000],
+[1.000000,0.266667,0.000000],
+[1.000000,0.333333,0.000000],
+[1.000000,0.400000,0.000000],
+[1.000000,0.466667,0.000000],
+[1.000000,0.533333,0.000000],
+[1.000000,0.600000,0.000000],
+[1.000000,0.666667,0.000000],
+[1.000000,0.733333,0.000000],
+[1.000000,0.800000,0.000000],
+[1.000000,0.866667,0.000000],
+[1.000000,0.933333,0.000000],
+[1.000000,1.000000,0.000000]];
+colorbars["spring"]=[[1.000000,0.000000,1.000000],
+[1.000000,0.066667,0.933333],
+[1.000000,0.133333,0.866667],
+[1.000000,0.200000,0.800000],
+[1.000000,0.266667,0.733333],
+[1.000000,0.333333,0.666667],
+[1.000000,0.400000,0.600000],
+[1.000000,0.466667,0.533333],
+[1.000000,0.533333,0.466667],
+[1.000000,0.600000,0.400000],
+[1.000000,0.666667,0.333333],
+[1.000000,0.733333,0.266667],
+[1.000000,0.800000,0.200000],
+[1.000000,0.866667,0.133333],
+[1.000000,0.933333,0.066667],
+[1.000000,1.000000,0.000000]];
+colorbars["winter"]=[[0.000000,0.000000,1.000000],
+[0.000000,0.066667,0.966667],
+[0.000000,0.133333,0.933333],
+[0.000000,0.200000,0.900000],
+[0.000000,0.266667,0.866667],
+[0.000000,0.333333,0.833333],
+[0.000000,0.400000,0.800000],
+[0.000000,0.466667,0.766667],
+[0.000000,0.533333,0.733333],
+[0.000000,0.600000,0.700000],
+[0.000000,0.666667,0.666667],
+[0.000000,0.733333,0.633333],
+[0.000000,0.800000,0.600000],
+[0.000000,0.866667,0.566667],
+[0.000000,0.933333,0.533333],
+[0.000000,1.000000,0.500000]];
+colorbars["summer"]=[[0.000000,0.500000,0.400000],
+[0.066667,0.533333,0.400000],
+[0.133333,0.566667,0.400000],
+[0.200000,0.600000,0.400000],
+[0.266667,0.633333,0.400000],
+[0.333333,0.666667,0.400000],
+[0.400000,0.700000,0.400000],
+[0.466667,0.733333,0.400000],
+[0.533333,0.766667,0.400000],
+[0.600000,0.800000,0.400000],
+[0.666667,0.833333,0.400000],
+[0.733333,0.866667,0.400000],
+[0.800000,0.900000,0.400000],
+[0.866667,0.933333,0.400000],
+[0.933333,0.966667,0.400000],
+[1.000000,1.000000,0.400000]];
+function fielddisplay(md,name,comment){
+//FIELDDISPLAY - display model field
+//
+//   Usage:
+//      fielddisplay(md,name,comment)
+
+	//get field
+	field=md[name];
+
+	//disp corresponding line as a function of field type (offset set as 9 spaces)
+	parsedisplay('         ',name,field,comment);
+}
+
+function parsedisplay(offset,name,field,comment) { //{{{
+
+	//string
+	if (typeof(field) == "string"){
+
+		if (field.length > 30){
+			displayunit(offset,name,"not displayed",comment);
+		}
+		else{
+			displayunit(offset,name,"'"+field+"'",comment);
+		}
+	}
+	//numeric
+	else if (typeof(field) == "number"){
+		
+		displayunit(offset,name,sprintf("%g",field),comment);
+
+	}
+	//logical
+	else if (typeof(field) == "boolean") {
+
+		if (field){
+			displayunit(offset,name,"true",comment);
+		}
+		else{
+			displayunit(offset,name,"false",comment);
+		}
+
+	}
+	//object
+	else if (typeof(field) == "object"){
+
+		if(field.length == 0) displayunit(offset,name,sprintf("(%i)",field.length),comment);
+		else if ((field[0].length==0) | (typeof field[0].length =='undefined')){
+			displayunit(offset,name,sprintf("(%i)",field.length),comment);
+		}
+		else{
+			displayunit(offset,name,sprintf("(%i,%i)",field.length,field[0].length),comment);
+		}
+
+	}
+	else{
+		displayunit(offset,name,"not displayed",comment);
+	}
+} //}}}
+
+function displayunit(offset,name,characterization,comment){ // {{{
+
+	//take care of name
+	if (name.length>23){
+		name=name.slice(0,21) + "...";
+	}
+
+	//take care of characterization
+	if ( characterization == "\" \"" || characterization == "NaN" ){
+	
+		characterization="N/A";
+	}
+	if (characterization.length>15){
+		characterization=characterization.slice(0,13) + "...";
+	}
+
+	//print
+	if (comment.length==0){
+		console.log(sprintf("%s%-23s: %-15s",offset,name,characterization));
+	}
+	else{
+		if (typeof(comment) == "string"){
+			//console.log(sprintf("%s%-23s: %-15s -- %s",offset,name,characterization,comment));
+			console.log(sprintf("%s%s: %-15s -- %s",offset,name,characterization,comment));
+		}
+		else{
+			throw Error("fielddisplay error message: format for comment not supported yet");
+		}
+	}
+} //}}}
+/**
+ * A class to parse color values
+ * @author Stoyan Stefanov <sstoo@gmail.com>
+ * @link   http://www.phpied.com/rgb-color-parser-in-javascript/
+ * @license Use it if you like it
+ */
+function RGBColor(color_string)
+{
+    this.ok = false;
+
+    // strip any leading #
+    if (color_string.charAt(0) == '#') { // remove # if any
+        color_string = color_string.substr(1,6);
+    }
+
+    color_string = color_string.replace(/ /g,'');
+    color_string = color_string.toLowerCase();
+
+    // before getting into regexps, try simple matches
+    // and overwrite the input
+    var simple_colors = {
+        aliceblue: 'f0f8ff',
+        antiquewhite: 'faebd7',
+        aqua: '00ffff',
+        aquamarine: '7fffd4',
+        azure: 'f0ffff',
+        beige: 'f5f5dc',
+        bisque: 'ffe4c4',
+        black: '000000',
+        blanchedalmond: 'ffebcd',
+        blue: '0000ff',
+        blueviolet: '8a2be2',
+        brown: 'a52a2a',
+        burlywood: 'deb887',
+        cadetblue: '5f9ea0',
+        chartreuse: '7fff00',
+        chocolate: 'd2691e',
+        coral: 'ff7f50',
+        cornflowerblue: '6495ed',
+        cornsilk: 'fff8dc',
+        crimson: 'dc143c',
+        cyan: '00ffff',
+        darkblue: '00008b',
+        darkcyan: '008b8b',
+        darkgoldenrod: 'b8860b',
+        darkgray: 'a9a9a9',
+        darkgreen: '006400',
+        darkkhaki: 'bdb76b',
+        darkmagenta: '8b008b',
+        darkolivegreen: '556b2f',
+        darkorange: 'ff8c00',
+        darkorchid: '9932cc',
+        darkred: '8b0000',
+        darksalmon: 'e9967a',
+        darkseagreen: '8fbc8f',
+        darkslateblue: '483d8b',
+        darkslategray: '2f4f4f',
+        darkturquoise: '00ced1',
+        darkviolet: '9400d3',
+        deeppink: 'ff1493',
+        deepskyblue: '00bfff',
+        dimgray: '696969',
+        dodgerblue: '1e90ff',
+        feldspar: 'd19275',
+        firebrick: 'b22222',
+        floralwhite: 'fffaf0',
+        forestgreen: '228b22',
+        fuchsia: 'ff00ff',
+        gainsboro: 'dcdcdc',
+        ghostwhite: 'f8f8ff',
+        gold: 'ffd700',
+        goldenrod: 'daa520',
+        gray: '808080',
+        green: '008000',
+        greenyellow: 'adff2f',
+        honeydew: 'f0fff0',
+        hotpink: 'ff69b4',
+        indianred : 'cd5c5c',
+        indigo : '4b0082',
+        ivory: 'fffff0',
+        khaki: 'f0e68c',
+        lavender: 'e6e6fa',
+        lavenderblush: 'fff0f5',
+        lawngreen: '7cfc00',
+        lemonchiffon: 'fffacd',
+        lightblue: 'add8e6',
+        lightcoral: 'f08080',
+        lightcyan: 'e0ffff',
+        lightgoldenrodyellow: 'fafad2',
+        lightgrey: 'd3d3d3',
+        lightgreen: '90ee90',
+        lightpink: 'ffb6c1',
+        lightsalmon: 'ffa07a',
+        lightseagreen: '20b2aa',
+        lightskyblue: '87cefa',
+        lightslateblue: '8470ff',
+        lightslategray: '778899',
+        lightsteelblue: 'b0c4de',
+        lightyellow: 'ffffe0',
+        lime: '00ff00',
+        limegreen: '32cd32',
+        linen: 'faf0e6',
+        magenta: 'ff00ff',
+        maroon: '800000',
+        mediumaquamarine: '66cdaa',
+        mediumblue: '0000cd',
+        mediumorchid: 'ba55d3',
+        mediumpurple: '9370d8',
+        mediumseagreen: '3cb371',
+        mediumslateblue: '7b68ee',
+        mediumspringgreen: '00fa9a',
+        mediumturquoise: '48d1cc',
+        mediumvioletred: 'c71585',
+        midnightblue: '191970',
+        mintcream: 'f5fffa',
+        mistyrose: 'ffe4e1',
+        moccasin: 'ffe4b5',
+        navajowhite: 'ffdead',
+        navy: '000080',
+        oldlace: 'fdf5e6',
+        olive: '808000',
+        olivedrab: '6b8e23',
+        orange: 'ffa500',
+        orangered: 'ff4500',
+        orchid: 'da70d6',
+        palegoldenrod: 'eee8aa',
+        palegreen: '98fb98',
+        paleturquoise: 'afeeee',
+        palevioletred: 'd87093',
+        papayawhip: 'ffefd5',
+        peachpuff: 'ffdab9',
+        peru: 'cd853f',
+        pink: 'ffc0cb',
+        plum: 'dda0dd',
+        powderblue: 'b0e0e6',
+        purple: '800080',
+        red: 'ff0000',
+        rosybrown: 'bc8f8f',
+        royalblue: '4169e1',
+        saddlebrown: '8b4513',
+        salmon: 'fa8072',
+        sandybrown: 'f4a460',
+        seagreen: '2e8b57',
+        seashell: 'fff5ee',
+        sienna: 'a0522d',
+        silver: 'c0c0c0',
+        skyblue: '87ceeb',
+        slateblue: '6a5acd',
+        slategray: '708090',
+        snow: 'fffafa',
+        springgreen: '00ff7f',
+        steelblue: '4682b4',
+        tan: 'd2b48c',
+        teal: '008080',
+        thistle: 'd8bfd8',
+        tomato: 'ff6347',
+        turquoise: '40e0d0',
+        violet: 'ee82ee',
+        violetred: 'd02090',
+        wheat: 'f5deb3',
+        white: 'ffffff',
+        whitesmoke: 'f5f5f5',
+        yellow: 'ffff00',
+        yellowgreen: '9acd32'
+    };
+    for (var key in simple_colors) {
+        if (color_string == key) {
+            color_string = simple_colors[key];
+        }
+    }
+    // emd of simple type-in colors
+
+    // array of color definition objects
+    var color_defs = [
+        {
+            re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
+            example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1]),
+                    parseInt(bits[2]),
+                    parseInt(bits[3])
+                ];
+            }
+        },
+        {
+            re: /^(\w{2})(\w{2})(\w{2})$/,
+            example: ['#00ff00', '336699'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1], 16),
+                    parseInt(bits[2], 16),
+                    parseInt(bits[3], 16)
+                ];
+            }
+        },
+        {
+            re: /^(\w{1})(\w{1})(\w{1})$/,
+            example: ['#fb0', 'f0f'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1] + bits[1], 16),
+                    parseInt(bits[2] + bits[2], 16),
+                    parseInt(bits[3] + bits[3], 16)
+                ];
+            }
+        }
+    ];
+
+    // search through the definitions to find a match
+    for (var i = 0; i < color_defs.length; i++) {
+        var re = color_defs[i].re;
+        var processor = color_defs[i].process;
+        var bits = re.exec(color_string);
+        if (bits) {
+            channels = processor(bits);
+            this.r = channels[0];
+            this.g = channels[1];
+            this.b = channels[2];
+            this.ok = true;
+        }
+
+    }
+
+    // validate/cleanup values
+    this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);
+    this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);
+    this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);
+
+    // some getters
+    this.toRGB = function () {
+        return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';
+    }
+    this.toHex = function () {
+        var r = this.r.toString(16);
+        var g = this.g.toString(16);
+        var b = this.b.toString(16);
+        if (r.length == 1) r = '0' + r;
+        if (g.length == 1) g = '0' + g;
+        if (b.length == 1) b = '0' + b;
+        return '#' + r + g + b;
+    }
+
+    // help
+    this.getHelpXML = function () {
+
+        var examples = new Array();
+        // add regexps
+        for (var i = 0; i < color_defs.length; i++) {
+            var example = color_defs[i].example;
+            for (var j = 0; j < example.length; j++) {
+                examples[examples.length] = example[j];
+            }
+        }
+        // add type-in colors
+        for (var sc in simple_colors) {
+            examples[examples.length] = sc;
+        }
+
+        var xml = document.createElement('ul');
+        xml.setAttribute('id', 'rgbcolor-examples');
+        for (var i = 0; i < examples.length; i++) {
+            try {
+                var list_item = document.createElement('li');
+                var list_color = new RGBColor(examples[i]);
+                var example_div = document.createElement('div');
+                example_div.style.cssText =
+                        'margin: 3px; '
+                        + 'border: 1px solid black; '
+                        + 'background:' + list_color.toHex() + '; '
+                        + 'color:' + list_color.toHex()
+                ;
+                example_div.appendChild(document.createTextNode('test'));
+                var list_item_value = document.createTextNode(
+                    ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()
+                );
+                list_item.appendChild(example_div);
+                list_item.appendChild(list_item_value);
+                xml.appendChild(list_item);
+
+            } catch(e){}
+        }
+        return xml;
+
+    }
+
+}
+
+function setflowequation(md){
+//SETFLOWEQUATION - associate a solution type to each element
+//
+//   This routine works like plotmodel: it works with an even number of inputs
+//   'SIA','SSA','L1L2','HO','FS' and 'fill' are the possible options
+//   that must be followed by the corresponding exp file or flags list
+//   It can either be a domain file (argus type, .exp extension), or an array of element flags. 
+//   If user wants every element outside the domain to be 
+//   setflowequationd, add '~' to the name of the domain file (ex: '~HO.exp');
+//   an empty string '' will be considered as an empty domain
+//   a string 'all' will be considered as the entire domain
+//   You can specify the type of coupling, 'penalties' or 'tiling', to use with the input 'coupling'
+//   NB: L1L2 cannot currently be coupled to any other ice flow model
+//
+//   Usage:
+//      setflowequation(md,varargin)
+//
+//   Example:
+//      setflowequation(md,'HO',HO,'fill','SIA','coupling','tiling');
+
+	//some checks on list of arguments
+	if(arguments.length<3) throw Error('setflowequation error message');
+
+	//Process options
+	var args = Array.prototype.slice.call(arguments);
+	var options = new pairoptions(args.slice(1,args.length));
+	options.deleteduplicates(1);
+
+	//Find_out what kind of coupling to use
+	coupling_method=options.getfieldvalue('coupling','tiling');
+	if ((coupling_method != 'tiling') & !(coupling_method != 'penalties')){
+		throw error('coupling type can only be: tiling or penalties');
+	}
+
+	//recover elements distribution
+	SIAflag  = FlagElements(md,options.getfieldvalue('SIA',''));
+	SSAflag  = FlagElements(md,options.getfieldvalue('SSA',''));
+	HOflag   = FlagElements(md,options.getfieldvalue('HO',''));
+	L1L2flag = FlagElements(md,options.getfieldvalue('L1L2',''));
+	FSflag   = FlagElements(md,options.getfieldvalue('FS',''));
+	filltype = options.getfieldvalue('fill','none');
+	options.displayunused();
+
+	//Flag the elements that have not been flagged as filltype
+	if (filltype === 'SIA'){
+		for(var i=0;i<md.mesh.numberofelements;i++)if(!(SSAflag[i] | HOflag[i]))SIAflag[i]=1;
+	}
+	else if (filltype === 'SSA'){
+		for(var i=0;i<md.mesh.numberofelements;i++)if(!(SIAflag[i] | HOflag[i] | FSflag[i]))SSAflag[i]=1;
+	}
+	else if (filltype === 'HO'){
+		for(var i=0;i<md.mesh.numberofelements;i++)if(!(SIAflag[i] | SSAflag[i] | FSflag[i]))HOflag[i]=1;
+	}
+
+	//check that each element has at least one flag
+	for(var i=0;i<md.mesh.numberofelements;i++)if((SIAflag[i] + SSAflag[i] + HOflag[i] + L1L2flag[i] + FSflag[i])==0)
+	throw Error("elements type not assigned, supported models are 'SIA','SSA','HO' and 'FS'");
+
+	//check that each element has only one flag
+	if (ArrayAnyAboveStrict(ArrayXPY(SIAflag,SSAflag,HOflag,L1L2flag),1)){
+		console.log('setflowequation warning message: some elements have several types, higher order type is used for them')
+
+		for(var i=0;i<md.mesh.numberofelements;i++){
+			if(SIAflag[i] & SSAflag[i])SIAflag[i]=0;
+			if(SIAflag[i] & HOflag[i])SIAflag[i]=0;
+			if(SSAflag[i] & HOflag[i])SSAflag[i]=0;
+		}
+	}
+
+	//check that L1L2 is not coupled to any other model for now
+	if (ArrayAnyEqual(L1L2flag,1) & ArrayAnyEqual(ArrayOr(SIAflag,SSAflag,HOflag,FSflag),1)) throw Error('L1L2 cannot be coupled to any other model');
+
+	//Check that no HO or FS for 2d mesh
+	if (md.mesh.domaintype() == '2Dhorizontal'){
+		for(var i=0;i<FSflag.length;i++){
+			if(FSflag[i] | HOflag[i]) throw Error('FS and HO elements not allowed in 2d mesh, extrude it first')
+		}
+	}
+
+	//FS can only be used alone for now:
+	if (ArrayAnyEqual(FSflag,1) & ArrayAnyEqual(SIAflag,1)) throw Error('FS cannot be used with any other model for now, put FS everywhere')
+
+	//Initialize node fields
+	nodeonSIA=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(SIAflag,1);
+	for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonSIA[md.mesh.elements[pos[i]][j]-1]=1;
+	
+	nodeonSSA=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(SSAflag,1);
+	for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonSSA[md.mesh.elements[pos[i]][j]-1]=1;
+	
+	nodeonHO=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(HOflag,1);
+	for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonHO[md.mesh.elements[pos[i]][j]-1]=1;
+	
+	nodeonL1L2=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(L1L2flag,1);
+	for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonL1L2[md.mesh.elements[pos[i]][j]-1]=1;
+
+	nodeonFS=NewArrayFill(md.mesh.numberofvertices,0);
+	noneflag=NewArrayFill(md.mesh.numberofvertices,0);
+	
+	
+	//First modify FSflag to get rid of elements contrained everywhere (spc + border with HO or SSA)
+	if (ArrayAnyEqual(FSflag,1)){
+		throw Error("FS elements not supported yet!");
+		/*fullspcnodes=double((~isnan(md.stressbalance.spcvx)+~isnan(md.stressbalance.spcvy)+~isnan(md.stressbalance.spcvz))==3 | (nodeonHO & nodeonFS));         //find all the nodes on the boundary of the domain without icefront
+		fullspcelems=double(sum(fullspcnodes(md.mesh.elements),2)==6);         //find all the nodes on the boundary of the domain without icefront
+		FSflag(find(fullspcelems))=0;
+		nodeonFS(md.mesh.elements(find(FSflag),:))=1;*/
+	}
+
+	//Then complete with NoneApproximation or the other model used if there is no FS
+	if (ArrayAnyEqual(FSflag,1)){
+		throw Error("FS elements not supported yet!");
+		/*if any(HOflag), //fill with HO
+			HOflag(~FSflag)=1;
+			nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+		elseif any(SSAflag), //fill with SSA
+			SSAflag(~FSflag)=1;
+			nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+		else //fill with none 
+			noneflag(find(~FSflag))=1;
+		end*/
+	}
+
+	//Now take care of the coupling between SSA and HO
+	md.stressbalance.vertex_pairing=[];
+	nodeonSSAHO=NewArrayFill(md.mesh.numberofvertices,0);
+	nodeonHOFS=NewArrayFill(md.mesh.numberofvertices,0);
+	nodeonSSAFS=NewArrayFill(md.mesh.numberofvertices,0);
+	SSAHOflag=NewArrayFill(md.mesh.numberofelements,0);
+	SSAFSflag=NewArrayFill(md.mesh.numberofelements,0);
+	HOFSflag=NewArrayFill(md.mesh.numberofelements,0);
+
+	/*if strcmpi(coupling_method,'penalties'),
+		//Create the border nodes between HO and SSA and extrude them
+		numnodes2d=md.mesh.numberofvertices2d;
+		numlayers=md.mesh.numberoflayers;
+		bordernodes2d=find(nodeonHO(1:numnodes2d) & nodeonSSA(1:numnodes2d)); //Nodes connected to two different types of elements
+
+		//initialize and fill in penalties structure
+		if ~isnan(bordernodes2d),
+			penalties=[];
+			for	i=1:numlayers-1,
+				penalties=[penalties; [bordernodes2d bordernodes2d+md.mesh.numberofvertices2d*(i)]];
+			end
+			md.stressbalance.vertex_pairing=penalties;
+		end
+	elseif strcmpi(coupling_method,'tiling'),
+		if any(SSAflag) & any(HOflag), //coupling SSA HO
+			//Find node at the border
+			nodeonSSAHO(find(nodeonSSA & nodeonHO))=1;
+			//SSA elements in contact with this layer become SSAHO elements
+			matrixelements=ismember(md.mesh.elements,find(nodeonSSAHO));
+			commonelements=sum(matrixelements,2)~=0;
+			commonelements(find(HOflag))=0; //only one layer: the elements previously in SSA
+			SSAflag(find(commonelements))=0; //these elements are now SSAHOelements
+			SSAHOflag(find(commonelements))=1;
+			nodeonSSA(:)=0;
+			nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+
+			//rule out elements that don't touch the 2 boundaries
+			pos=find(SSAHOflag);
+			elist=zeros(length(pos),1);
+			elist = elist + any(sum(nodeonSSA(md.mesh.elements(pos,:)),2),2);
+			elist = elist - any(sum(nodeonHO(md.mesh.elements(pos,:))  ,2),2);
+			pos1=find(elist==1);
+			SSAflag(pos(pos1))=1;
+			SSAHOflag(pos(pos1))=0;
+			pos2=find(elist==-1);
+			HOflag(pos(pos2))=1;
+			SSAHOflag(pos(pos2))=0;
+
+			//Recompute nodes associated to these elements
+			nodeonSSA(:)=0;
+			nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+			nodeonHO(:)=0;
+			nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+			nodeonSSAHO(:)=0;
+			nodeonSSAHO(md.mesh.elements(find(SSAHOflag),:))=1;
+
+		elseif any(HOflag) & any(FSflag), //coupling HO FS
+			//Find node at the border
+			nodeonHOFS(find(nodeonHO & nodeonFS))=1;
+			//FS elements in contact with this layer become HOFS elements
+			matrixelements=ismember(md.mesh.elements,find(nodeonHOFS));
+			commonelements=sum(matrixelements,2)~=0;
+			commonelements(find(HOflag))=0; //only one layer: the elements previously in SSA
+			FSflag(find(commonelements))=0; //these elements are now SSAHOelements
+			HOFSflag(find(commonelements))=1;
+			nodeonFS=zeros(md.mesh.numberofvertices,1);
+			nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+
+			//rule out elements that don't touch the 2 boundaries
+			pos=find(HOFSflag);
+			elist=zeros(length(pos),1);
+			elist = elist + any(sum(nodeonFS(md.mesh.elements(pos,:)),2),2);
+			elist = elist - any(sum(nodeonHO(md.mesh.elements(pos,:)),2),2);
+			pos1=find(elist==1);
+			FSflag(pos(pos1))=1;
+			HOFSflag(pos(pos1))=0;
+			pos2=find(elist==-1);
+			HOflag(pos(pos2))=1;
+			HOFSflag(pos(pos2))=0;
+
+			//Recompute nodes associated to these elements
+			nodeonFS(:)=0;
+			nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+			nodeonHO(:)=0;
+			nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+			nodeonHOFS(:)=0;
+			nodeonHOFS(md.mesh.elements(find(HOFSflag),:))=1;
+
+		elseif any(FSflag) & any(SSAflag),
+			//Find node at the border
+			nodeonSSAFS(find(nodeonSSA & nodeonFS))=1;
+			//FS elements in contact with this layer become SSAFS elements
+			matrixelements=ismember(md.mesh.elements,find(nodeonSSAFS));
+			commonelements=sum(matrixelements,2)~=0;
+			commonelements(find(SSAflag))=0; //only one layer: the elements previously in SSA
+			FSflag(find(commonelements))=0; //these elements are now SSASSAelements
+			SSAFSflag(find(commonelements))=1;
+			nodeonFS=zeros(md.mesh.numberofvertices,1);
+			nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+
+			//rule out elements that don't touch the 2 boundaries
+			pos=find(SSAFSflag);
+			elist=zeros(length(pos),1);
+			elist = elist + any(sum(nodeonSSA(md.mesh.elements(pos,:)),2),2);
+			elist = elist - any(sum(nodeonFS(md.mesh.elements(pos,:))  ,2),2);
+			pos1=find(elist==1);
+			SSAflag(pos(pos1))=1;
+			SSAFSflag(pos(pos1))=0;
+			pos2=find(elist==-1);
+			FSflag(pos(pos2))=1;
+			SSAFSflag(pos(pos2))=0;
+
+			//Recompute nodes associated to these elements
+			nodeonSSA(:)=0;
+			nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+			nodeonFS(:)=0;
+			nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+			nodeonSSAFS(:)=0;
+			nodeonSSAFS(md.mesh.elements(find(SSAFSflag),:))=1;
+
+		elseif any(FSflag) & any(SIAflag),
+			error('type of coupling not supported yet');
+		end
+	end*/
+
+	//Create element equations
+	md.flowequation.element_equation=NewArrayFill(md.mesh.numberofelements,0);
+	pos=ArrayFind(noneflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=0;
+	pos=ArrayFind(SIAflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=1;
+	pos=ArrayFind(SSAflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=2;
+	pos=ArrayFind(L1L2flag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=3;
+	pos=ArrayFind(HOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=4;
+	pos=ArrayFind(FSflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=5;
+	pos=ArrayFind(SSAHOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=6;
+	pos=ArrayFind(SSAFSflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=7;
+	pos=ArrayFind(HOFSflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=8;
+
+
+	//border
+	md.flowequation.borderHO=nodeonHO;
+	md.flowequation.borderSSA=nodeonSSA;
+	md.flowequation.borderFS=nodeonFS;
+	
+
+	//Create vertices_type
+	md.flowequation.vertex_equation=NewArrayFill(md.mesh.numberofvertices,0);
+
+	pos=ArrayFind(nodeonSSA,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=2;
+	pos=ArrayFind(nodeonL1L2,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=3;
+	pos=ArrayFind(nodeonHO,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=4;
+	pos=ArrayFind(nodeonFS,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=5;
+	//DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority)
+	pos=ArrayFind(nodeonSIA,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=1;
+	if (ArrayAnyEqual(FSflag,1)){
+		pos=ArrayFind(nodeonFS==0);
+		if(ArrayAnyEqual(HOflag,0) & ArrayAnyEqual(SSA,0)){
+			for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=0;
+		}
+	}
+
+	pos=ArrayFind(nodeonSSAHO,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=6;
+	pos=ArrayFind(nodeonHOFS,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=7;
+	pos=ArrayFind(nodeonSSAFS,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=8;
+
+	//figure out solution types
+	md.flowequation.isSIA  = ArrayAnyEqual(md.flowequation.element_equation,1);
+	md.flowequation.isSSA  = ArrayAnyEqual(md.flowequation.element_equation,2);
+	md.flowequation.isL1L2 = ArrayAnyEqual(md.flowequation.element_equation,3);
+	md.flowequation.isHO   = ArrayAnyEqual(md.flowequation.element_equation,4);
+	md.flowequation.isFS   = ArrayAnyEqual(md.flowequation.element_equation,5);
+	return
+
+	//Check that tiling can work:
+	/*if any(md.flowequation.borderSSA) & any(md.flowequation.borderHO) & any(md.flowequation.borderHO + md.flowequation.borderSSA ~=1),
+		error('error coupling domain too irregular');
+	end
+	if any(md.flowequation.borderSSA) & any(md.flowequation.borderFS) & any(md.flowequation.borderFS + md.flowequation.borderSSA ~=1),
+		error('error coupling domain too irregular');
+	end
+	if any(md.flowequation.borderFS) & any(md.flowequation.borderHO) & any(md.flowequation.borderHO + md.flowequation.borderFS~=1),
+		error('error coupling domain too irregular');
+	end*/
+}
+function setmask(md,floatingice,groundedice){
+//SETMASK - establish boundaries between grounded and floating ice.
+//
+//   By default, ice is considered grounded. The contour floatingice defines nodes 
+//   for which ice is floating. The contour groundedice defines nodes inside a floatingice, 
+//   that are grounded (ie: ice rises, islands, etc ...)
+//   All inputs are either strings or actually javascript arrays (included in the html file)
+//   For example: 
+//
+//	   floatingice[0]['x']=[0,0,0,1];
+//	   floatingice[0]['y']=[0,1,1,1];
+//	   floatingice[1]['x']=[0,0.5,0.5,.5];
+//	   floatingice[1]['y']=[0,.5,.5,.5];
+//
+//
+//   Usage:
+//      md=setmask(md,floatingice,groundedice)
+//
+//   Examples:
+//      md=setmask(md,'all','');
+//      md=setmask(md,iceshelves,islands);
+
+	//variables: 
+	var  icedomain=[];
+	
+	//some checks on list of arguments
+	if (!((arguments.length==3) | (arguments.length==5))){
+		throw Error('mask error message: wrong usage.');
+	}
+
+	if(arguments.length>3){
+		if (arguments[3]=='icedomain'){
+			icedomain=arguments[4];
+		}
+		else{
+			throw Error('mask error message: wrong field specified. Only icedomain allowed for now.');
+		}
+		if (IsArray(icedomain)){
+			throw Error('setmask error message: icedomain should be an array!');
+		}
+	}
+	
+	//Get assigned fields
+	var x=md.mesh.x;
+	var y=md.mesh.y;
+	var elements=md.mesh.elements;
+
+	//Assign elementonfloatingice, elementongroundedice, vertexongroundedice and vertexonfloatingice. 
+	//Only change at your own peril! This is synchronized heavily with the GroundingLineMigration module. 
+	elementonfloatingice=FlagElements(md,floatingice);
+	elementongroundedice=FlagElements(md,groundedice);
+
+	//Because groundedice nodes and elements can be included into an floatingice, we need to update. Remember, all the previous 
+	//arrays come from domain outlines that can intersect one another: 
+	elementonfloatingice=ArrayAnd(elementonfloatingice,ArrayNot(elementongroundedice));
+	elementongroundedice=ArrayNot(elementonfloatingice);
+
+	//the order here is important. we choose vertexongroundedice as default on the grounding line.
+	vertexonfloatingice=NewArrayFill(md.mesh.numberofvertices,0);
+	vertexongroundedice=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(elementongroundedice,1); for (var i=0;i<pos.length;i++)for(var j=0;j<3;j++) vertexongroundedice[md.mesh.elements[i,j]-1]=1;
+	pos=ArrayFind(vertexongroundedice,0); for (var i=0;i<pos.length;i++)vertexonfloatingice[i]=1;
+
+	//level sets
+	groundedice_levelset=vertexongroundedice;
+	pos=ArrayFind(vertexongroundedice,0);for(var i=0;i<pos.length;i++) groundedice_levelset[i]=-1;
+	md.mask.groundedice_levelset=groundedice_levelset;
+
+	if(arguments.length>3){
+		md.mask.ice_levelset = NewArrayFill(md.mesh.numberofvertices,1.0);
+		//use contourtomesh to set ice values inside ice domain
+		//[vertexinsideicedomain,elementinsideicedomain]=ContourToMesh(elements,x,y,icedomain,'node',1);
+		pos=ArrayFind(vertexinsideicedomain,1.0);for(var i=0;i<pos.length;i++) md.mask.ice_levelset[pos]=-1;
+	}
+	else{
+		md.mask.ice_levelset = NewArrayFill(md.mesh.numberofvertices,-1);
+	}
+}
+/*
+	Name:
+		sliderInit
+	
+	Description:
+		Initialize slider corresponding to passed selector with passed value,
+		minimum and maximum values, step (which is the increment for the 
+		slider), and callback function (which is called when slider is changed). 
+	
+		Options are passed as pairs to the function according to the usage 
+		example below.
+	
+	Usage:
+		sliderInit(
+			'selector', #some-element, 
+			'value', 0,
+			'min', -1,
+			'max', 1,
+			'step', 0.1,
+			'callback', function(value){someEngineFunction(value)}
+		);
+	
+	NOTE:	jQuery Mobile will reflect changes to slider in its input "label" 
+			based on the width of the slider. For example, step might be set to
+			0.1, but if the width of the slider is too narrow, changes to the 
+			slider will only be reflected in whole numeral increments in the
+			slider' label. That said, *all* sliders can be adjusted via the
+			"up" and "down" keys by whatever increment step is set to.
+*/
+function sliderInit(){
+	
+	// Convert arguments to options
+	var args 		= Array.prototype.slice.call(arguments);
+	var options 	= new pairoptions(args.slice());
+
+	// Recover option values
+	var selector	= options.getfieldvalue('selector', '');
+	var value 		= options.getfieldvalue('value', 0);
+	var callback 	= options.getfieldvalue('callback', function(event, ui){});
+	var min 		= options.getfieldvalue('min', 0.6 * value);
+	var max 		= options.getfieldvalue('max', 1.4 * value);
+	var step 		= options.getfieldvalue('step', 1);
+
+	/*
+		Update slider attributes.
+		
+		NOTE:	Although slider has already been created, need to call slider() 
+				in order to avoid:
+				
+					Error: cannot call methods on slider prior to 
+					initialization; attempted to call method 'refresh'
+					
+				Attempted all other methods for intialization of slider widget
+				from jQuery Mobile, and this is the only one that seemed to work
+				(see index.php for related markup).
+	*/
+	$(selector).slider();
+	$(selector).val(value);
+	$(selector).attr('min', min);
+	$(selector).attr('max', max);
+	$(selector).attr('step', step);
+	$(selector).on('slidestop', function(event, ui){
+		callback(parseFloat($(selector).val()));
+	});
+
+	/*
+		NOTE:	Slider must be "refreshed" after any JavaScript change to it, as
+				it is an AJAX object.
+	*/
+	$(selector).slider('refresh');
+}
+/* exported sliderInit, refreshErrorMessages */
+
+
+/*
+	Name:
+		sliderMoveInput
+	
+	Description:
+		Appends a jQuery Mobile slider input to an element whose selector 
+		adheres to the following protocol,
+		
+			destination = sliderSelector + '-value'
+			
+	Usage:
+		sliderMoveInput('#someSliderSelector');
+		
+	NOTE:	Destination element must, obviously, be hardcoded into markup for a
+			call to this function to work as expected.
+*/
+function sliderMoveInput(selector){
+	
+	$(selector).appendTo(selector + '-value');
+	$(selector).slider('refresh');
+}
+
+/*
+	value/label updated by node transient runs in plot_unit.	
+*/
+function progressInit(){
+	
+	// Convert arguments to options.
+	var args 			= Array.prototype.slice.call(arguments);
+	var options 		= new pairoptions(args.slice());
+	
+	// Recover option values
+	var sim 			= options.getfieldvalue('sim', '');
+	
+	var canvas 			= $(sim + '-canvas')[0];
+	var progressBar 	= $(sim + '-controls-slider-progress');
+	var playButton 		= $(sim + '-controls-button-play');
+	var reverseButton 	= $(sim + '-controls-button-reverse');
+	var timeText 		= $(sim + '-controls-text-time');
+	
+	/*
+		Update progress bar slider attributes.
+		
+		NOTE:	Although slider has already been created, need to call slider() 
+				in order to avoid:
+				
+					Error: cannot call methods on slider prior to 
+					initialization; attempted to call method 'refresh'
+					
+				Attempted all other methods for intialization of slider widget
+				from jQuery Mobile, and this is the only one that seemed to work
+				(see index.php for related markup).
+	*/
+	$(progressBar).slider();
+	$(progressBar).val(value);
+	$(progressBar).attr('min', 0);
+	$(progressBar).attr('max', 1);
+	$(progressBar).attr('step', 1);
+	$(progressBar).on('slidestop', function(event, ui){
+		canvas.movieIncrement = true;
+		canvas.movieFrame = parseInt($(progressBar).val());
+	});
+	$(progressBar).on('change', function(event, ui){
+		canvas.movieFrame = parseInt($(progressBar).val());
+	});
+	$(progressBar).on('slidestart', function(event, ui){
+		canvas.movieIncrement = false;	
+		canvas.movieFrame = parseInt($(progressBar).val());
+	});
+
+	/*
+		NOTE:	Slider must be "refreshed" after any JavaScript change to it, as
+				it is an AJAX object.
+	*/
+	$(progressBar).slider('refresh');
+	
+	// Attach progress bar slider to simulation.
+	canvas.progressBar = progressBar;
+
+	playButton.click(function(){
+		canvas.moviePlay = !canvas.moviePlay;
+		if (canvas.moviePlay){
+			playButton.find("span").removeClass("fa-play");
+			playButton.find("span").addClass("fa-pause");
+		}
+		else{
+			playButton.find("span").removeClass("fa-pause");
+			playButton.find("span").addClass("fa-play");
+		}
+	});
+	
+	reverseButton.click(function(){
+		canvas.movieReverse = !canvas.movieReverse;
+		if (canvas.movieReverse) {
+			reverseButton.find("span").removeClass("fa-backward");
+			reverseButton.find("span").addClass("fa-forward");
+		}
+		else {
+			reverseButton.find("span").removeClass("fa-forward");
+			reverseButton.find("span").addClass("fa-backward");
+		}
+	});
+	
+	canvas.timeLabel = timeText;
+}function tooltip() {
+	//TOOLTIP - create a hidden toolip with value text that shows html formatted info on hover over the tooltipdiv.
+	//
+	//   Usage:
+	//      tooltip('value','<h4>HAIG Glacier (Canadian Rocky Mountains) 30 year transient simulation</h4>','tooltipdiv','info-tooltipdiv');
+
+	//Convert arguments to options
+	var args = Array.prototype.slice.call(arguments);
+	var options = new pairoptions(args.slice());
+
+	//Recover option values:
+	var value = options.getfieldvalue('value','');
+	var tooltipdiv = options.getfieldvalue('tooltipdiv','tooltipdiv');
+
+	$('<div class="bordered">' + value + '</div>').appendTo('#'+tooltipdiv);	
+	$("#"+tooltipdiv).hover(function() {
+		var tooltip = $("> div", this).show();
+		var pos = tooltip.offset();
+		tooltip.hide();
+		var right = pos.left + tooltip.width();
+		var pageWidth = $(document).width();
+		if (pos.left < 0) {
+			tooltip.css("marginLeft", "+=" + (-pos.left) + "px");
+		}
+		else if (right > pageWidth) {
+			tooltip.css("marginLeft", "-=" + (right - pageWidth));
+		}
+		tooltip.fadeIn();
+		}, function() {
+			$("> div", this).fadeOut(function() {$(this).css("marginLeft", "");
+		});
+	});
+}
+function applyoptions(md,data,datatype,options,canvas,gl,node){
+	//APPLYOPTIONS - apply colobar, text, cloud, and expdisp options to current plot
+	//
+	//   Usage:
+	//      applyoptions(md,data,options)
+	//
+	//   See also: PLOTMODEL, PARSE_OPTIONS
+	
+	//colorbar {{{
+	if (options.exist('colorbar')) {
+		if (options.getfieldvalue('colorbar')==1) {
+			//Handle movie data {{{
+			if (datatype == 5) {
+				data = data[0];
+			} //}}}
+			//Variable options initialization {{{
+			var caxis = options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+			var colorbarorientiation = options.getfieldvalue('colorbarorientation','vertical');
+			var colorbarinnerlabels = options.getfieldvalue('colorbarinnerlabels','off');
+			var cheightoffset = options.getfieldvalue('colorbarfontsize',18);
+			var cwidthoffset = options.getfieldvalue('colorbarfontsize',18)*3;
+			var cwidthscale = 0.5; //Default size of actual colorbar width, relative to canvas width (range [0,1])
+			var cheightscale = 0.875; //Default size of actual colorbar height, relative to canvas height (range [0,1])
+			var ccontext,ccanvas,ccanvasid,ccanvashtml,cheight,cwidth,color,y,x,cgradient,cmap,colorbar,textAlign,a,b,c,d,e,f,g,h;
+			//}}}
+			//Set colorbar lables {{{
+			var labels = [];
+			var cdivisions = options.getfieldvalue('colorbarnticks',6);
+			var caxisdelta = caxis[1] - caxis[0];
+			var clabelitem;
+			var precision = options.getfieldvalue('colorbarprecision',3);
+			if (options.getfieldvalue('log','off')!='off') {
+				for (var i=cdivisions; i >= 0; i--) {
+					var scale = (Math.log10(caxis[1])-Math.log10(caxis[0]))/Math.log10(options.getfieldvalue('log',10));
+					labels[i] = (Math.pow(options.getfieldvalue('log',10),Math.log10(caxis[0])/Math.log10(options.getfieldvalue('log',10))+scale*(cdivisions-i)/cdivisions)).toPrecision(precision);
+				}
+			} else {
+				for (var i=cdivisions; i >= 0; i--) {
+					labels[i] = (caxisdelta*(cdivisions-i)/cdivisions+caxis[0]).toPrecision(precision);
+				}
+			} //}}}
+			ccanvasid = options.getfieldvalue('colorbarid',options.getfieldvalue('canvasid')+'_colorbar');
+			ccanvashtml = document.getElementById(ccanvasid);
+			ccanvas = $('#'+ccanvasid);
+			ccontext = ccanvas[0].getContext('2d');
+			ccontext.clearRect(0,0, ccanvashtml.width, ccanvashtml.height);
+			ccontext.beginPath();
+			cmap = options.getfieldvalue('colormap','jet');
+			colorbar = colorbars[cmap];
+			//Handle orientation {{{
+			if (colorbarorientiation=='vertical') {
+				cwidth = ccanvashtml.width*cwidthscale*options.getfieldvalue('colorbarwidth',1);
+				cheight = ccanvashtml.height*cheightscale*options.getfieldvalue('colorbarheight',1);
+				cgradient = ccontext.createLinearGradient(0,cheightoffset/2,0,cheight);
+				textAlign = 'left';
+				a = 0;
+				b = cheightoffset*3/2;
+				c = 0;
+			}
+			else {
+				cwidth = ccanvashtml.width*0.7*options.getfieldvalue('colorbarwidth',1);
+				cheight = ccanvashtml.height*0.4*options.getfieldvalue('colorbarheight',1);
+				cgradient = ccontext.createLinearGradient(cwidth+cwidthoffset,0,cwidthoffset,0);		
+				textAlign = 'center';
+				a = cwidthoffset;
+				b = cheightoffset;
+				c = cwidth/2+cwidthoffset;
+			} //}}}
+			//Handle internal labels {{{
+			if (colorbarinnerlabels=='on') {
+				textAlign = 'center';
+				d = (cdivisions/(cdivisions+1.0));
+				e = (1.0/(cdivisions+1.0));
+				f = 2;
+				g = 1;
+				h = cwidth/2;
+			}
+			else {
+				d = 1;
+				e = 0;
+				f = 1;
+				g = 0;
+				h = cwidth+0.2*cwidth;
+			} //}}}
+
+			for (var i=0; i < colorbar.length; i++) {
+				color = colorbar[colorbar.length-i-1];
+				color = [Math.round(color[0]*255),Math.round(color[1]*255),Math.round(color[2]*255)];	
+				cgradient.addColorStop(i/colorbar.length*d+e,'rgba('+color.toString()+',1.0)');
+			}
+			ccontext.fillStyle=cgradient;
+			ccontext.fillRect(a,b,cwidth,cheight);
+			
+			//Draw colorbar border
+			ccontext.beginPath();
+			ccontext.lineWidth='1';
+			ccontext.strokeStyle=options.getfieldvalue('colorbarfontcolor','black');
+			ccontext.rect(a,b,cwidth,cheight);
+			ccontext.stroke();
+			
+			if (colorbarorientiation=='vertical') { //{{{
+				for (var i=0; i <= cdivisions; i++) {
+					y = i/(cdivisions+g)*cheight+cheightoffset/2;
+					x = 0.2*cwidth;
+					ccontext.font=String(options.getfieldvalue('colorbarfontsize',18))+'px "Lato",Helvetica,Arial,sans-serif';
+					ccontext.fillStyle=options.getfieldvalue('colorbarfontcolor','black');
+					ccontext.textAlign=textAlign;
+					ccontext.textBaseline='top';
+					ccontext.fillText(labels[i],h,y+cheightoffset*(g+0.5));					
+					ccontext.beginPath();
+					ccontext.moveTo(0,y+cheightoffset*f);
+					ccontext.lineTo(x,y+cheightoffset*f);
+					ccontext.moveTo(cwidth-x,y+cheightoffset*f);
+					ccontext.lineTo(cwidth,y+cheightoffset*f);
+					ccontext.stroke();
+				}
+			}
+			else {
+				for (var i=0; i <= cdivisions; i++) {
+					y = 0.2*cheight;
+					x = i/cdivisions*cwidth;
+					ccontext.font=String(options.getfieldvalue('colorbarfontsize',18))+'px "Lato",Helvetica,Arial,sans-serif';
+					ccontext.fillStyle=options.getfieldvalue('colorbarfontcolor','black');
+					ccontext.textAlign=textAlign;
+					ccontext.fillText(labels[cdivisions-i],x+cwidthoffset,cheight+cheightoffset*2);
+					ccontext.beginPath();
+					ccontext.moveTo(x+cwidthoffset,cheightoffset);
+					ccontext.lineTo(x+cwidthoffset,y+cheightoffset);
+					ccontext.moveTo(x+cwidthoffset,cheight-y+cheightoffset);
+					ccontext.lineTo(x+cwidthoffset,cheight+cheightoffset);
+					ccontext.stroke();
+				}
+			}
+			if (options.exist('colorbartitle')) {
+				ccontext.font=String(options.getfieldvalue('colorbarfontsize',18))+'px "Lato",Helvetica,Arial,sans-serif';
+				ccontext.fillStyle=options.getfieldvalue('colorbarfontcolor','black');
+				ccontext.textAlign='left';
+				ccontext.textBaseline='bottom';
+				ccontext.fillText(options.getfieldvalue('colorbartitle'),c,cheightoffset);
+			} //}}}
+			//}}}
+		} 
+	}
+	//}}}
+	//texture canvas //{{{
+	var tcontext,tcanvas,tcanvasid,tcanvashtml,tURL,tgradient;
+	tcanvasid = 'texturecanvas';
+	var tcanvashtml = document.getElementById(tcanvasid);
+	if (tcanvashtml == null) {
+		tcanvas = $('<canvas id="texturecanvas" width="256" height="256"></canvas>').insertAfter('#'+String(options.getfieldvalue('canvasid')));
+		tcanvas.css({'display':'none'});
+		tcanvashtml = document.getElementById(tcanvasid);
+	}
+	else {
+		tcanvas = $('#' + tcanvasid);
+	}
+	tcontext = tcanvashtml.getContext('2d');
+	tgradient = tcontext.createLinearGradient(0,0,0,256);
+		
+	var cmap = options.getfieldvalue('colormap','jet');
+	var colorbar = colorbars[cmap];
+	for (var i=0; i < colorbar.length; i++) {
+		color = colorbar[colorbar.length-i-1];
+		color = [Math.round(color[0]*255),Math.round(color[1]*255),Math.round(color[2]*255)];	
+		tgradient.addColorStop(i/colorbar.length,'rgba('+color.toString()+',1.0)');
+	}
+	
+	tcontext.fillStyle = tgradient;
+	tcontext.fillRect(0,0,256,256);
+	tURL = tcanvashtml.toDataURL();
+	node['texture'] = initTexture(gl,tURL);
+	//}}}
+	//expdisp contours {{{
+	if (options.exist('expdisp')) {
+		canvas.nodes['expdisp'] = Node(gl,options);
+		var node = canvas.nodes['expdisp'];
+		
+		//declare variables:  {{{
+		var vertices = [];
+		var indices = [];
+		var colors = [];
+		var rgbcolor = [];
+		var xmin,xmax;
+		var ymin,ymax;
+		var zmin,zmax;
+		var scale;
+		
+		//Process data and model
+		var x = options.getfieldvalue('expdisp')['x'];
+		var y = options.getfieldvalue('expdisp')['y'];
+		var z = Array.apply(null, Array(x.length)).map(Number.prototype.valueOf,0);
+		
+		if (options.getfieldvalue('expdisp')['z']) {
+			z = options.getfieldvalue('expdisp')['z'];
+		}
+		//}}}
+
+		//Compute coordinates and data range: //{{{
+		var modelxlim = [ArrayMin(x),ArrayMax(x)];
+		var modelylim = [ArrayMin(y),ArrayMax(y)];
+		var modelzlim = [ArrayMin(z),ArrayMax(z)];
+		var xlim = options.getfieldvalue('xlim',modelxlim);
+		var ylim = options.getfieldvalue('ylim',modelylim);
+		var zlim = options.getfieldvalue('zlim',modelzlim);
+		xmin = xlim[0];
+		xmax = xlim[1];
+		ymin = ylim[0];
+		ymax = ylim[1];
+		zmin = zlim[0];
+		zmax = zlim[1];
+		//}}}
+
+		//Compute scaling: //{{{
+		var scale = 1 / (xmax - xmin);
+		node['shaderName'] = 'colored';
+		node['shader'] = gl['shaders'][node['shaderName']]['program'];
+		node['scale'] = [scale, scale, scale*options.getfieldvalue('heightscale',1)];
+		node['translation'] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (-2 / scale)];
+		node['modelMatrix'] = recalculateModelMatrix(node);
+		node['drawMode'] = gl.LINE_LOOP;
+		node['drawOrder'] = 0;
+		node['useIndexBuffer'] = false;
+		node['disableDepthTest'] = true;
+		//}}}
+
+		//some defaults:
+		colors.itemSize = 4;
+
+		//retrieve some options
+		var linewidth=options.getfieldvalue('linewidth',1);
+		var edgecolor=options.getfieldvalue('edgecolor','black'); //RGBCOLOR?
+
+		vertices.itemSize = 3;
+		for(var i=0; i < x.length; i++){
+			vertices[vertices.length] = x[i];
+			vertices[vertices.length] = y[i];
+			vertices[vertices.length] = z[i];
+
+			//edgecolor
+			rgbcolor = [0.0, 0.0, 0.0];
+			colors[colors.length] = rgbcolor[0];
+			colors[colors.length] = rgbcolor[1];
+			colors[colors.length] = rgbcolor[2];
+			colors[colors.length] = 1.0;
+		}
+
+		//Initalize buffers:
+		node['arrays'] = [vertices, colors];
+		node['buffers'] = initBuffers(gl, node['arrays']);
+	} //}}}
+	//cloud of points {{{
+	if (options.exist('cloud')) {
+		canvas.nodes['cloud'] = Node(gl,options);
+		var node = canvas.nodes['cloud'];
+
+		//declare variables:  {{{
+		var vertices = [];
+		var indices = [];
+		var colors = [];
+		var rgbcolor = [];
+		var xmin,xmax;
+		var ymin,ymax;
+		var zmin,zmax;
+		var scale;
+		
+		//Process data and model
+		var x = options.getfieldvalue('cloud')['x'];
+		var y = options.getfieldvalue('cloud')['y'];
+		var z = Array.apply(null, Array(x.length)).map(Number.prototype.valueOf,0);
+		
+		if (options.getfieldvalue('cloud')['z']) {
+			z = options.getfieldvalue('cloud')['z'];
+		}
+		//}}}
+
+		//Compute coordinates and data range: //{{{
+		var modelxlim = [ArrayMin(x),ArrayMax(x)];
+		var modelylim = [ArrayMin(y),ArrayMax(y)];
+		var modelzlim = [ArrayMin(z),ArrayMax(z)];
+		var xlim = options.getfieldvalue('xlim',modelxlim);
+		var ylim = options.getfieldvalue('ylim',modelylim);
+		var zlim = options.getfieldvalue('zlim',modelzlim);
+		xmin = xlim[0];
+		xmax = xlim[1];
+		ymin = ylim[0];
+		ymax = ylim[1];
+		zmin = zlim[0];
+		zmax = zlim[1];
+		//}}}
+
+		//Compute scaling: //{{{
+		var scale = 1 / (xmax - xmin);
+		node['shaderName'] = 'colored';
+		node['shader'] = gl['shaders'][node['shaderName']]['program'];
+		node['scale'] = [scale, scale, scale*options.getfieldvalue('heightscale',1)];
+		node['translation'] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (-2 / scale)];
+		node['modelMatrix'] = recalculateModelMatrix(node);
+		node['drawMode'] = gl.POINTS;
+		node['drawOrder'] = 0;
+		node['useIndexBuffer'] = false;
+		node['disableDepthTest'] = true;
+		//}}}
+
+		//some defaults:
+		colors.itemSize = 4;
+
+		//retrieve some options
+		var linewidth=options.getfieldvalue('linewidth',1);
+		var edgecolor=options.getfieldvalue('edgecolor','black'); //RGBCOLOR?
+
+		vertices.itemSize = 3;
+		for(var i=0; i < x.length; i++){
+			vertices[vertices.length] = x[i];
+			vertices[vertices.length] = y[i];
+			vertices[vertices.length] = z[i];
+
+			//edgecolor
+			rgbcolor = [0.0, 0.0, 0.0];
+			colors[colors.length] = rgbcolor[0];
+			colors[colors.length] = rgbcolor[1];
+			colors[colors.length] = rgbcolor[2];
+			colors[colors.length] = 1.0;
+		}
+
+		//Initalize buffers:
+		node['arrays'] = [vertices, colors];
+		node['buffers'] = initBuffers(gl, node['arrays']);
+	} //}}}
+	
+	//text display //{{{
+	if (options.exist('textlabels')) {
+		var textcanvas,textcanvasid;	
+		textcanvasid = options.getfieldvalue('textcanvasid',options.getfieldvalue('canvasid')+'-text');
+		textcanvas = $('#'+textcanvasid);
+		textcanvas.textlabels = options.getfieldvalue('textlabels',[]);
+		
+		//setup drawing function for text canvas draw calls
+		textcanvas.draw = function(canvas) {
+			var textcontext,textlabels,textlabel,textcanvaswidth,textcanvasheight,textcoordinates;	
+			var textposition = vec3.create();
+			var mvpMatrix = mat4.create();
+			
+			//ensure correct canvas coordinate scaling
+			textcanvaswidth = this[0].clientWidth;
+			textcanvasheight = this[0].clientHeight;
+			this[0].width  = textcanvaswidth;
+			this[0].height = textcanvasheight;
+			
+			textcontext = this[0].getContext('2d');
+			textlabels = options.getfieldvalue('textlabels',[]);
+			textcontext.clearRect(0, 0, textcanvaswidth, textcanvasheight);
+			
+			//worldspace to screenspace transformation for text
+			for (text in textlabels) {
+				textlabel = textlabels[text];
+				mat4.multiply(mvpMatrix, canvas.cameraMatrix, canvas.nodes['overlay']['modelMatrix']);
+				textposition = vec3.transformMat4(textposition, textlabel['pos'], mvpMatrix);
+				if (textposition[2] > 1) { //clip coordinates with z > 1
+					continue;
+				}
+				textcoordinates = [(textposition[0]+1.0)/2.0*textcanvaswidth, (-textposition[1]+1.0)/2.0*textcanvasheight]; //NDC to screenspace
+				textcontext.font = String(options.getfieldvalue('colorbarfontsize',18))+'px "Lato",Helvetica,Arial,sans-serif';
+				textcontext.fillStyle = options.getfieldvalue('colorbarfontcolor','black');
+				textcontext.strokeStyle = options.getfieldvalue('colorbarfontcolor','black');
+				textcontext.textAlign = 'center';
+				textcontext.textBaseline = 'middle';
+				textcontext.fillText(textlabel['text'], textcoordinates[0], textcoordinates[1]);
+				textcontext.strokeText(textlabel['text'], textcoordinates[0], textcoordinates[1]);
+			}
+		}
+		canvas.textcanvas = textcanvas;
+	} //}}}
+}
+function checkplotoptions(md,options){
+	//PARSE_OPTIONS - build a structure that holds all plot options
+	//
+	//   Usage:
+	//      checkplotoptions(md,options);
+	//
+	//   See also: PLOTMODEL
+
+	//units
+	if (options.exist('unit')){
+		if (options.getfieldvalue('unit') === 'km'){
+			options.changefieldvalue('unit',10^-3);
+		}
+		if (options.getfieldvalue('unit') === '100km'){
+			options.changefieldvalue('unit',10^-5);
+		}
+	}
+
+	//density
+	if (options.exist('density')){
+		density=options.getfieldvalue('density');
+		options.changefieldvalue('density',Math.abs(Math.ceil(density)));
+	}
+
+	//Show section
+	if (options.exist('showsection')){
+		if (options.getfieldvalue('showsection') === 'on'){
+			options.changefieldvalue('showsection',4);
+		}
+	}
+
+	//smooth values
+	if (options.exist('smooth')){
+		if (options.getfieldvalue('smooth') === 'on'){
+			options.changefieldvalue('smooth',0);
+		}
+	}
+
+	//contouronly values
+	if (options.exist('contouronly')){
+		if (options.getfieldvalue('contouronly') === 'on'){
+			options.changefieldvalue('contouronly',1);
+		}
+	}
+
+	//Colorbar;
+	if (options.exist('colorbar')){
+		if (options.getfieldvalue('colorbar') === 'on'){
+			options.changefieldvalue('colorbar',1);
+		}
+		else if (options.getfieldvalue('colorbar') === 'off'){
+			options.changefieldvalue('colorbar',0);
+		}
+	}
+
+	//text
+	if (options.exist('text')){
+
+		//1: textvalue
+		textvalues=options.getfieldvalue('text');
+
+		//ischar if only one expstyle -> create a cell
+		if (typeof textvalues === 'string'){
+			textvalues=[textvalues];
+			numtext=1;
+		}
+		else if (IsArray(textvalues)){
+			numtext=textvalues.length;
+		}
+		else throw Error("plot error message: ''text'' option should be either a string or a cell");
+
+		//2: textweight
+		if (options.exist('textweight')){
+
+			textweightvalues=options.getfieldvalue('textweight');
+
+			//ischar if only one textweight -> create a cell
+			if (typeof textweightvalues === 'string'){
+				textweightvalues=[textweightvalues];
+			}
+			else if (!IsArray(textweightvalues)){
+				throw Error("plot error message: ''textweight'' option should be either a string or a cell");
+			}
+		}
+		else{
+			textweightvalues=['n'];
+		}
+		if (textweightvalues.length==1){
+			var value=textweightvalues[0];
+			for (var i=0;i<numtext-1;i++)textweightvalues.push(value);
+		}
+
+		//3: textsize
+		if (options.exist('textsize')){
+			textsizevalues=options.getfieldvalue('textsize');
+		}
+		//ischar if only one textsize -> create a cell
+		if (typeof textsizevalues === 'number'){
+			textsizevalues=[textsizevalues];
+		}
+		else if (!IsArray(textsizevalues)){
+			throw Error("plot error message: ''textsize'' option should be either a number or a cell");
+		}
+		else{
+			textsizevalues=[14];
+		}
+		if (textsizevalues.length==1){
+			var value=textsizevalues[0];
+			for (var i=0;i<numtext-1;i++)textsizevalues.push(value);
+		}
+			
+		//4: textcolor
+		if (options.exist('textcolor')){
+			textcolorvalues=options.getfieldvalue('textcolor');
+		}
+		if (typeof textcolorvalues === 'string'){ //ischar if only one textcolor -> create a cell
+			textcolorvalues=[textcolorvalues];
+		}
+		else if (!IsArray(textcolorvalues)){
+			throw Error("plot error message: ''textcolor'' option should be either a string or a cell");
+		}
+		else textcolorvalues=['k'];
+
+		if (textcolorvalues.length==1){
+			var value=textcolorvalues[0];
+			for (var i=0;i<numtext-1;i++)textcolorvalues.push(value);
+		}
+		
+		//5: textposition
+		if (options.exist('textposition')){
+			textpositionvalues=options.getfieldvalue('textposition');
+		}
+		//ischar if only one textposition -> create a cell
+		if (typeof textpositionvalues === 'number'){
+			textpositionvalues=[textpositionvalues];
+		}
+		else if(!IsArray(textpositionvalues)){
+			throw Error("plot error message: ''textposition'' option should be either a string or a cell");
+		}
+		else throw Error("plot error message: ''textposition'' option is missing");
+			
+		//6: textrotation
+		if (options.exist('textrotation')){
+			textrotationvalues=options.getfieldvalue('textrotation');
+		}
+		//ischar if only one textsize -> create a cell
+		if (typeof textrotationvalues === 'number'){
+			textrotationvalues=[textrotationvalues];
+		}
+		else if (!IsArray(textrotationvalues)){
+			throw Error("plot error message: ''textrotation'' option should be either a number or a cell");
+		}
+		else textrotationvalues=[0];
+		
+		if (textrotationvalues.length==1){
+			var value=textrotationvalues[0];
+			for (var i=0;i<numtext-1;i++)textrotationvalues.push(value);
+		}
+			
+		options.changefieldvalue('text',textvalues);
+		options.changefieldvalue('textsize',textsizevalues);
+		options.changefieldvalue('textweight',textweightvalues);
+		options.changefieldvalue('textcolor',textcolorvalues);
+		options.changefieldvalue('textposition',textpositionvalues);
+		options.changefieldvalue('textrotation',textrotationvalues);
+	}
+
+	//expdisp
+	expdispvaluesarray=[];
+	expstylevaluesarray=[];
+	expstylevalues=[];
+	if (options.exist('expstyle')){
+		expstylevalues=options.getfieldvalue('expstyle');
+		//ischar if only one expstyle -> create a cell
+		if (typeof expstylevalues === 'string'){
+			expstylevalues=[expstylevalues];
+		}
+		options.changefieldvalue('expdisp',expdispvaluesarray);
+	}
+		
+	if (options.exist('expdisp')){
+		expdispvalues=options.getfieldvalue('expdisp');
+	
+		//ischar if only one expstyle -> create a cell
+		if (typeof expdispvalues === 'string'){
+			expdispvalues=[expdispvalues];
+		}
+		for (var i=0; i< expdispvalues.length;i++){
+			expdispvaluesarray.push(expdispvalues[i]);
+			if (expstylevalues.length>i){
+				expstylevaluesarray.push(expstylevalues[i]);
+			}
+			else{
+				expstylevaluesarray.push('g-');
+			}
+		}
+		options.changefieldvalue('expstyle',expstylevaluesarray);
+	}
+
+	//latlonnumbering
+	if (options.exist('latlonclick')){
+		if (options.getfieldvalue('latlonclick') === 'on'){
+			options.changefieldvalue('latlonclick',1);
+		}
+	}
+
+	//north arrow
+	if (options.exist('northarrow')){
+	   if (options.getfieldvalue('northarrow') === 'on'){
+		   
+		   //default values
+		   Lx=ArrayMax(md.mesh.y)-ArrayMin(md.mesh.y);
+		   Ly=ArrayMax(md.mesh.y)-ArrayMin(md.mesh.y);
+		  
+		   //default values
+		   options.changefieldvalue('northarrow',[ArrayMin(md.mesh.x)+1/6*Lx,ArrayMin(md.mesh.y)+5/6*Ly,1/15*Ly,0.25,1/250*Ly]);
+	   }
+	}
+
+	//scale ruler
+	if (options.exist('scaleruler')){
+	   if (options.getfieldvalue('scaleruler') === 'on'){
+		   //default values
+		   Lx=ArrayMax(md.mesh.x)-ArrayMin(md.mesh.x);
+		   Ly=ArrayMax(md.mesh.y)-ArrayMin(md.mesh.y);
+		   
+		   //default values
+		   options.changefieldvalue('scaleruler',[ArrayMin(md.mesh.x)+6/8*Lx, ArrayMin(md.mesh.y)+1/10*Ly, 10^(Mat.ceil(Mat.log10(Lx)))/5, Math.floor(Lx/100), 5]);
+	   }
+	}
+}
+function plot_manager(md,options,subplotwidth,nlines,ncols,i){
+	//PLOT__MANAGER - distribute the plots, called by plotmodel
+	//
+	//   Usage:
+	//      plot_manager(md,options,subplotwidth,i);
+	//
+	//   See also: PLOTMODEL, PLOT_UNIT
+			
+	//parse options and get a structure of options. 
+	checkplotoptions(md,options);
+	
+	//get data to be displayed
+	var data = options.getfieldvalue('data');
+	var canvas = initCanvas(options);
+	var gl = canvas.gl;
+	//TODO: each plot_ should add their node to the canvas.node array
+
+	//figure out if this is a special plot
+	if (typeof data === 'string'){
+
+		switch(data){
+
+			case 'boundaries':
+				plot_boundaries(md,options,subplotwidth,i);
+				return;
+			case 'BC':
+				plot_BC(md,options,subplotwidth,i,data);
+				return;
+			case 'edges':
+				plot_edges(md,options,subplotwidth,i,data);
+				return;
+			case 'elementnumbering':
+				plot_elementnumbering(md,options,subplotwidth,i);
+				return;
+			case 'highlightelements':
+				plot_highlightelements(md,options,subplotwidth,i);
+				return;
+			case 'qmumean':
+				plot_qmumean(md,options,nlines,ncols,i);
+				return;
+			case 'qmustddev':
+				plot_qmustddev(md,options,nlines,ncols,i);
+				return;
+			case 'qmuhistnorm':
+				plot_qmuhistnorm(md,options,nlines,ncols,i);
+				return;
+			case 'qmu_mass_flux_segments':
+				plot_qmu_mass_flux_segments(md,options,nlines,ncols,i);
+				return;
+			case 'part_hist':
+				plot_parthist(md,options,nlines,ncols,i);
+				return;
+			case 'part_hist_n':
+				plot_parthistn(md,options,nlines,ncols,i);
+				return;
+			case 'part_hist_w':
+				plot_parthistw(md,options,nlines,ncols,i);
+				return;
+			case 'elements_type':
+				plot_elementstype(md,options,subplotwidth,i);
+				return;
+			case 'vertexnumbering':
+				plot_vertexnumbering(md,options,subplotwidth,i);
+				return;
+			case 'highlightvertices':
+				plot_highlightvertices(md,options,subplotwidth,i);
+				return;
+			case 'basal_drag':
+				plot_basaldrag(md,options,subplotwidth,i,data);
+				return;
+			case 'basal_dragx':
+				plot_basaldrag(md,options,subplotwidth,i,data);
+				return;
+			case 'basal_dragy':
+				plot_basaldrag(md,options,subplotwidth,i,data);
+				return;
+			case 'driving_stress':
+				plot_drivingstress(md,options,subplotwidth,i);
+				return;
+			case 'mesh':
+				plot_mesh(md,options,canvas);
+				return;
+			case 'none':
+				if (!(options.exist('overlay'))){
+					plot_none(md,options,nlines,ncols,i);
+				}
+				return;
+			case 'penalties':
+				plot_penalties(md,options,subplotwidth,i);
+				return;
+			case 'partition':
+				plot_partition(md,options,nlines,ncols,i);
+				return;
+			case 'referential':
+				plot_referential(md,options,nlines,ncols,i);
+				return;
+			case 'riftvel':
+				plot_riftvel(md,options,nlines,ncols,i);
+				return;
+			case 'riftnumbering':
+				plot_riftnumbering(md,options,nlines,ncols,i);
+				return;
+			case 'rifts':
+				plot_rifts(md,options,nlines,ncols,i);
+				return;
+			case 'riftrelvel':
+				plot_riftrelvel(md,options,nlines,ncols,i);
+				return;
+			case 'riftpenetration':
+				plot_riftpenetration(md,options,nlines,ncols,i);
+				return;
+			case 'riftfraction':
+				plot_riftfraction(md,options,nlines,ncols,i);
+				return;
+			case 'sarpwr':
+				plot_sarpwr(md,options,subplotwidth,i);
+				return;
+			case 'time_dependant':
+				plot_vstime(md,options,nlines,ncols,i);
+				return;
+			case 'icefront':
+				plot_icefront(md,options,subplotwidth,i,data);
+				return;
+			case 'segments':
+				plot_segments(md,options,subplotwidth,i,data);
+				return;
+			case 'quiver':
+				plot_quiver(md,options,canvas);
+				return;
+			case 'strainrate_tensor':
+			case 'strainrate':
+			case 'strainrate_principal':
+			case 'strainrate_principalaxis1':
+			case 'strainrate_principalaxis2':
+			case 'strainrate_principalaxis3':
+			case 'stress_tensor':
+			case 'stress':
+			case 'stress_principal':
+			case 'stress_principalaxis1':
+			case 'stress_principalaxis2':
+			case 'stress_principalaxis3':
+			case 'deviatoricstress_tensor':
+			case 'deviatoricstress':
+			case 'deviatoricstress_principal':
+			case 'deviatoricstress_principalaxis1':
+			case 'deviatoricstress_principalaxis2':
+			case 'deviatoricstress_principalaxis3':
+				plot_tensor(md,options,subplotwidth,i,data);
+				return;
+			case 'thermaltransient_results':
+				plot_thermaltransient_results(md,options,subplotwidth,i);
+				return;
+			case 'transient_movie':
+				plot_transient_movie(md,options,subplotwidth,i);
+				return;
+			case 'transient_results':
+				plot_transient_results(md,options,subplotwidth,i);
+				return;
+			case 'transient_field':
+				plot_transient_field(md,options,subplotwidth,i);
+				return;
+			default:
+				if (data in md){
+					data=md[data];
+				}
+				else{
+					error('plot error message: data provided not supported yet. Type plotdoc for help');
+				}
+		}
+	}
+
+	//Figure out if this is a semi-transparent plot.
+	if (options.getfieldvalue('overlay','off')=='on'){
+		plot_overlay(md,data,options,canvas);
+	}
+
+	//Figure out if this is a semi-transparent plot.
+	if (options.exist('googlemaps')){
+		plot_googlemaps(md,data,options,nlines,ncols,i);
+		return;
+	}
+
+	//Figure out if this is a semi-transparent plot.
+	if (options.exist('gridded')){
+		plot_gridded(md,data,options,nlines,ncols,i);
+		return;
+	}
+
+	//Figure out if this is a Section plot
+	if (options.exist('sectionvalue')){
+		plot_section(md,data,options,nlines,ncols,i);
+		return;
+	}
+
+	//Figure out if this is a Profile plot
+	if (options.exist('profile')){
+		plot_profile(md,data,options,nlines,ncols,i);
+		return;
+	}
+	
+	var	dataresults = processdata(md,data,options);
+	var	data2 = dataresults[0]; 
+	var	datatype = dataresults[1];
+	
+	//plot unit
+	plot_unit(md,data2,datatype,options,canvas);
+
+	applyoptions(md,data2,datatype,options,canvas,gl,canvas.nodes[canvas.nodes.length-1]);
+}
+function plot_mesh(md,options,canvas) {
+	//PLOT_MESH - Function for plotting wireframe mesh.
+	//
+	//   Usage:
+	//      plot_mesh(md,options,canvas);
+	//
+	//   See also: PLOTMODEL, PLOT_MANAGER
+
+	//declare variables:  {{{
+	var vertices = [];
+	var indices = [];
+	var colors = [];
+	var nanindices = {};
+	var xmin,xmax;
+	var ymin,ymax;
+	var zmin,zmax;
+	var scale,matrixscale,vertexscale;
+	
+	//Process data and model
+	var meshresults = processmesh(md,[],options);
+	var x = meshresults[0]; 
+	var y = meshresults[1]; 
+	var z = meshresults[2]; 
+	var elements = meshresults[3]; 
+	var is2d = meshresults[4]; 
+	var isplanet = meshresults[5];
+		
+	//Compue scaling through matrices for 2d meshes and vertices for 3d meshes
+	if (!md.geometry.surface) {
+		md.geometry.surface=NewArrayFill(md.mesh.x.length,0);
+	}
+	if (md.mesh.classname() == 'mesh3dsurface') {
+		matrixscale = 1;
+		vertexscale = options.getfieldvalue('heightscale',1);
+	}
+	else {
+		if (md.geometry.surface) {
+			z=md.geometry.surface;
+		}	
+		matrixscale = options.getfieldvalue('heightscale',1);
+		vertexscale = 0;
+	}
+	//}}}
+
+	//Compute coordinates and data range:
+	var modelxlim = [ArrayMin(x),ArrayMax(x)];
+	var modelylim = [ArrayMin(y),ArrayMax(y)];
+	var modelzlim = [ArrayMin(z),ArrayMax(z)];
+	var xlim = options.getfieldvalue('xlim',modelxlim);
+	var ylim = options.getfieldvalue('ylim',modelylim);
+	var zlim = options.getfieldvalue('zlim',modelzlim);
+	xmin = xlim[0];
+	xmax = xlim[1];
+	ymin = ylim[0];
+	ymax = ylim[1];
+	zmin = zlim[0];
+	zmax = zlim[1];
+
+	//Compute gl variables:
+	var gl = canvas.gl;
+	var node = Node(gl,options);
+	canvas.nodes[canvas.nodes.length] = node;
+	scale = 1 / (xmax - xmin);
+	node["shaderName"] = "colored";
+	node["shader"] = gl["shaders"][node["shaderName"]]["program"];
+	node["lineWidth"] = options.getfieldvalue('linewidth',1);
+	node["scale"] = [scale, scale, scale * matrixscale];
+	node["translation"] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (2 / scale)];
+	node["modelMatrix"] = recalculateModelMatrix(node);
+	node["drawMode"] = gl.LINES;
+	node["drawOrder"] = 0;
+	node["maskEnabled"] = options.getfieldvalue('innermask','off') == 'on';
+	node["maskHeight"] = options.getfieldvalue('innermaskheight',150.0)*options.getfieldvalue('heightscale',1);
+	node["maskColor"] = options.getfieldvalue('innermaskcolor',[0.0,0.0,1.0,1.0]);
+				
+	//some defaults:
+	colors.itemSize = 4;
+
+	//retrieve some options
+	var edgecolor = new RGBColor(options.getfieldvalue('edgecolor','black'));
+	if (edgecolor.ok) edgecolor = [edgecolor.r/255.0, edgecolor.g/255.0, edgecolor.b/255.0, 1.0];
+	else throw Error(sprintf("s%s%s\n","initWebGL error message: cound not find out edgecolor color for curent canvas ",canvas));
+
+	//node plot {{{
+	if (elements[0].length==6){ //prisms
+	}
+	else if (elements[0].length==4){ //tetras
+	}
+	else{ //2D triangular elements
+		vertices.itemSize = 3;
+		var xyz = vec3.create();
+		var direction = vec3.create();
+		var vertex = vec3.create();
+		var magnitude;
+		var color = edgecolor;
+		for(var i = 0; i < x.length; i++){
+			//Check for NaN values and remove from indices array as necessary, but preserve vertex array spacing
+			if (isNaN(x[i]) || isNaN(y[i]) || isNaN(z[i])) {
+				nanindices[i] = i;
+				vertices[vertices.length] = vertex[0];
+				vertices[vertices.length] = vertex[1];
+				vertices[vertices.length] = vertex[2];
+				
+				colors[colors.length] = color[0];
+				colors[colors.length] = color[1];
+				colors[colors.length] = color[2];
+				colors[colors.length] = color[3];
+				continue;
+			}
+			//Scale vertices
+			xyz = vec3.fromValues(x[i], y[i], z[i]);
+			magnitude = vec3.length(xyz) + md.geometry.surface[i] * vertexscale;
+			vec3.normalize(direction, xyz);
+			vec3.scale(vertex, direction, magnitude);
+			vertices[vertices.length] = vertex[0];
+			vertices[vertices.length] = vertex[1];
+			vertices[vertices.length] = vertex[2];
+
+			colors[colors.length] = color[0];
+			colors[colors.length] = color[1];
+			colors[colors.length] = color[2];
+			colors[colors.length] = color[3];
+		}
+		
+		//linearize the elements array: 
+		var element;
+		for(var i = 0; i < elements.length; i++){
+			element = [elements[i][0] - 1, elements[i][1] - 1, elements[i][2] - 1];
+			if (element[0] in nanindices || element[1] in nanindices || element[2] in nanindices) continue;
+			indices[indices.length] = element[0];
+			indices[indices.length] = element[1];
+			indices[indices.length] = element[1];
+			indices[indices.length] = element[2];
+			indices[indices.length] = element[2];
+			indices[indices.length] = element[0];
+		}
+		indices.itemSize = 1;
+	}
+	//}}}
+
+	/*Initalize buffers: */
+	node["arrays"] = [vertices, colors, indices];
+	node["buffers"] = initBuffers(gl, node["arrays"]);
+}
+function plot_overlay(md,data,options,canvas){
+	//PLOT_OVERLAY - Function for plotting a georeferenced image.  
+	//
+	//   Usage:
+	//      plot_overlay(md,data,options,canvas);
+	//
+	//   See also: PLOTMODEL, PLOT_MANAGER
+
+	//declare variables:  {{{
+	var vertices = [];
+	var indices = [];
+	var texcoords = [];
+	var nanindices = {};
+	var xmin,xmax;
+	var ymin,ymax;
+	var zmin,zmax;
+	var scale,matrixscale,vertexscale;
+
+	//Process data and model
+	var meshresults = processmesh(md,data,options);
+	var x = meshresults[0]; 
+	var y = meshresults[1]; 
+	var z = meshresults[2]; 
+	var elements = meshresults[3]; 
+	var is2d = meshresults[4]; 
+	var isplanet = meshresults[5];
+
+	//Compue scaling through matrices for 2d meshes and vertices for 3d meshes
+	if (!md.geometry.surface) {
+		md.geometry.surface=NewArrayFill(md.mesh.x.length,0);
+	}
+	if (md.mesh.classname() == 'mesh3dsurface') {
+		matrixscale = 1;
+		vertexscale = options.getfieldvalue('heightscale',1);
+	}
+	else {
+		if (md.geometry.surface) {
+			z=md.geometry.surface;
+		}	
+		matrixscale = options.getfieldvalue('heightscale',1);
+		vertexscale = 0;
+	}
+	//}}}
+	
+	//Compute coordinates and data range:
+	var modelxlim = [ArrayMin(x),ArrayMax(x)];
+	var modelylim = [ArrayMin(y),ArrayMax(y)];
+	var modelzlim = [ArrayMin(z),ArrayMax(z)];
+	var xlim = options.getfieldvalue('xlim',modelxlim);
+	var ylim = options.getfieldvalue('ylim',modelylim);
+	var zlim = options.getfieldvalue('zlim',modelzlim);
+	xmin = xlim[0];
+	xmax = xlim[1];
+	ymin = ylim[0];
+	ymax = ylim[1];
+	zmin = zlim[0];
+	zmax = zlim[1];
+		
+	//Compute gl variables:
+	var gl = canvas.gl;
+	var node = Node(gl,options);
+	canvas.nodes[canvas.nodes.length] = node;
+	scale = 1 / (xmax - xmin);
+	node["shaderName"] = "unlit_textured";
+	node["shader"] = gl["shaders"][node["shaderName"]]["program"];
+	node["scale"] = [scale, scale, scale * matrixscale];
+	node["translation"] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (2 / scale)];
+	node["modelMatrix"] = recalculateModelMatrix(node);
+	node["texture"] = initTexture(gl,options.getfieldvalue('overlay_image'));
+	node["alpha"] = options.getfieldvalue('outeralpha',1.0);
+	node["drawOrder"] = 1;
+	node["maskEnabled"] = options.getfieldvalue('outermask','off') == 'on';
+	node["maskHeight"] = options.getfieldvalue('outermaskheight',150.0);
+	node["maskColor"] = options.getfieldvalue('outermaskcolor',[0.0,0.0,1.0,1.0]);
+				
+	//some defaults:
+	texcoords.itemSize = 2;
+	vertices.itemSize = 3;
+	
+	//Handle outer radaroverlay
+	if (md.radaroverlay.outerx) {
+		var newelements = [];
+		for (var i = 0; i < md.radaroverlay.outerindex.length; i++) {
+			newelements[newelements.length] = [md.radaroverlay.outerindex[i][0] + x.length, md.radaroverlay.outerindex[i][1] + y.length, md.radaroverlay.outerindex[i][2] + z.length];
+		}
+		x = [].concat(x, md.radaroverlay.outerx);
+		y = [].concat(y, md.radaroverlay.outery);
+		z = [].concat(z, md.radaroverlay.outerheight);
+		elements = [].concat(elements, newelements);
+		
+		//Reclaculate bounds based on otuer radaroverlay
+		modelxlim = [ArrayMin(x),ArrayMax(x)];
+		modelylim = [ArrayMin(y),ArrayMax(y)];
+		modelzlim = [ArrayMin(z),ArrayMax(z)];
+		xmin = xlim[0];
+		xmax = xlim[1];
+		ymin = ylim[0];
+		ymax = ylim[1];
+		zmin = zlim[0];
+		zmax = zlim[1];
+		
+		node["translation"] = [node["translation"][0], node["translation"][1], (zmax) / (-1 / scale)];
+	}
+	
+	var xrange = modelxlim[1] - modelxlim[0];
+	var yrange = modelylim[1] - modelylim[0];
+	
+	var xyz = vec3.create();
+	var direction = vec3.create();
+	var vertex = vec3.create();
+	var magnitude;
+
+	//generate mesh:
+	for(var i = 0; i < x.length; i++){
+		//Check for NaN values and remove from indices array as necessary, but preserve vertex array spacing
+		if (isNaN(x[i]) || isNaN(y[i]) || isNaN(z[i])) {
+			nanindices[i] = i;
+			vertices[vertices.length] = vertex[0];
+			vertices[vertices.length] = vertex[1];
+			vertices[vertices.length] = vertex[2];
+			
+			texcoords[texcoords.length] = 0.0;
+			texcoords[texcoords.length] = 0.0;
+			continue;
+		}
+
+		if (md.mesh.classname() == 'mesh3dsurface') {
+			//Scale vertices
+			xyz = vec3.fromValues(x[i], y[i], z[i]);
+			magnitude = vec3.length(xyz) + md.geometry.surface[i] * vertexscale;
+			vec3.normalize(direction, xyz);
+			vec3.scale(vertex, direction, magnitude);
+			vertices[vertices.length] = vertex[0];
+			vertices[vertices.length] = vertex[1];
+			vertices[vertices.length] = vertex[2];
+			
+			texcoords[texcoords.length] = degrees(Math.atan2(vertex[1], vertex[0])) / 360 + 0.5;
+			texcoords[texcoords.length] = degrees(Math.asin(vertex[2] / magnitude)) / 180 + 0.5;
+		}
+		else {
+			//Scale vertices
+			xyz = vec3.fromValues(x[i], y[i], z[i]);
+			magnitude = vec3.length(xyz);
+			vec3.normalize(direction, xyz);
+			vec3.scale(vertex, direction, magnitude);
+			vertices[vertices.length] = vertex[0];
+			vertices[vertices.length] = vertex[1];
+			vertices[vertices.length] = vertex[2];
+			
+			texcoords[texcoords.length] = (x[i] - modelxlim[0]) / xrange;
+			texcoords[texcoords.length] = (y[i] - modelylim[0]) / yrange;
+		}
+	}
+
+	//linearize the elements array:
+	var element;
+	for(var i = 0; i < elements.length; i++){
+		element = [elements[i][0] - 1, elements[i][1] - 1, elements[i][2] - 1];
+		if (element[0] in nanindices || element[1] in nanindices || element[2] in nanindices) continue;
+		indices[indices.length] = element[0];
+		indices[indices.length] = element[1];
+		indices[indices.length] = element[2];
+	}
+	indices.itemSize = 1;
+	
+	/*Initalize buffers: */
+	node["arrays"] = [vertices, texcoords, indices];
+	node["buffers"] = initBuffers(gl,node["arrays"]);	
+}
+function plot_unit(md,data,datatype,options,canvas) {
+	//PLOT_UNIT - unit plot, display data
+	//
+	//   Usage:
+	//      plot_unit(md,data,options,canvas);
+	//
+	//   See also: PLOTMODEL, PLOT_MANAGER
+
+	//declare variables:  {{{
+	var vertices = [];
+	var indices = [];
+	var texcoords = [];
+	var nanindices = {};
+	var xmin,xmax;
+	var ymin,ymax;
+	var zmin,zmax;
+	var datamin,datamax,datadelta;
+	var scale,matrixscale,vertexscale;
+
+	//Process data and model
+	var meshresults = processmesh(md,data,options);
+	var x = meshresults[0]; 
+	var y = meshresults[1]; 
+	var z = meshresults[2]; 
+	var elements = meshresults[3];
+	var is2d = meshresults[4]; 
+	var isplanet = meshresults[5];
+
+	//Compue scaling through matrices for 2d meshes and vertices for 3d meshes
+	if (!md.geometry.surface) {
+		md.geometry.surface=NewArrayFill(md.mesh.x.length,0);
+	}
+	if (md.mesh.classname() == 'mesh3dsurface') {
+		matrixscale = 1;
+		vertexscale = options.getfieldvalue('heightscale',1);
+	}
+	else {
+		if (md.geometry.surface) {
+			z=md.geometry.surface;
+		}	
+		matrixscale = options.getfieldvalue('heightscale',1);
+		vertexscale = 0;
+	}
+	//}}}
+
+	//Compute coordinates and data range:
+	var modelxlim = [ArrayMin(x),ArrayMax(x)];
+	var modelylim = [ArrayMin(y),ArrayMax(y)];
+	var modelzlim = [ArrayMin(z),ArrayMax(z)];
+	var xlim = options.getfieldvalue('xlim',modelxlim);
+	var ylim = options.getfieldvalue('ylim',modelylim);
+	var zlim = options.getfieldvalue('zlim',modelzlim);
+	xmin = xlim[0];
+	xmax = xlim[1];
+	ymin = ylim[0];
+	ymax = ylim[1];
+	zmin = zlim[0];
+	zmax = zlim[1];
+	var caxis;
+	
+	//Compute gl variables:
+	var gl = canvas.gl;
+	var node = Node(gl,options);
+	canvas.nodes[canvas.nodes.length] = node;
+	scale = 1 / (xmax - xmin);
+	node["shaderName"] = "unlit_textured";
+	node["shader"] = gl["shaders"][node["shaderName"]]["program"];
+	node["scale"] = [scale, scale, scale * matrixscale];
+	node["translation"] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (2 / scale)];
+	node["modelMatrix"] = recalculateModelMatrix(node);
+	node["alpha"] = options.getfieldvalue('alpha',1.0);
+	node["drawOrder"] = 0;
+	node["maskEnabled"] = options.getfieldvalue('innermask','off') == 'on';
+	node["maskHeight"] = options.getfieldvalue('innermaskheight',150.0);
+	node["maskColor"] = options.getfieldvalue('innermaskcolor',[0.0,0.0,1.0,1.0]);
+	node["enabled"] = options.getfieldvalue('nodata','off') == 'off';
+	
+	switch(datatype){
+		//element plot {{{
+		case 1:
+			pos=ArrayFindNot(data,NaN); //needed for element on water
+			if (elements[0].length==6){ //prisms
+			}
+			else if (elements[0].length==4){ //tetras
+			}
+			else{ //2D triangular elements
+			}
+			break;
+		//}}}
+		//node plot {{{
+		case 2:
+			if (elements[0].length==6){ //prisms
+			}
+			else if (elements[0].length==4){ //tetras
+			}
+			else{ //triangular elements	
+				caxis = options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+				if (options.getfieldvalue('log','off')!='off') caxis = [Math.log10(caxis[0])/Math.log10(options.getfieldvalue('log',10)),Math.log10(caxis[1])/Math.log10(options.getfieldvalue('log',10))];
+				datamin = caxis[0];
+				datamax = caxis[1];
+				datadelta = datamax - datamin;
+
+				vertices.itemSize = 3;
+				texcoords.itemSize = 2;
+				
+				var xyz = vec3.create();
+				var direction = vec3.create();
+				var vertex = vec3.create();
+				var magnitude;
+
+				for(var i = 0; i < x.length; i++){
+					//Check for NaN values and remove from indices array as necessary, but preserve vertex array spacing
+					if (isNaN(x[i]) || isNaN(y[i]) || isNaN(z[i]) || isNaN(data[i])) {
+						nanindices[i] = i;
+						vertices[vertices.length] = vertex[0];
+						vertices[vertices.length] = vertex[1];
+						vertices[vertices.length] = vertex[2];
+						
+						texcoords[texcoords.length] = 0.0;
+						texcoords[texcoords.length] = 0.0;
+						continue;
+					}
+					//Scale vertices
+					xyz = vec3.fromValues(x[i], y[i], z[i]);
+					magnitude = vec3.length(xyz) + md.geometry.surface[i] * vertexscale;
+					vec3.normalize(direction, xyz);
+					vec3.scale(vertex, direction, magnitude);
+					vertices[vertices.length] = vertex[0];
+					vertices[vertices.length] = vertex[1];
+					vertices[vertices.length] = vertex[2];
+
+					texcoords[texcoords.length] = 0.5;
+					texcoords[texcoords.length] = (data[i] - datamin) / datadelta;
+				}
+
+				//linearize the elements array: 
+				var element;
+				for(var i = 0; i < elements.length; i++){
+					element = [elements[i][0] - 1, elements[i][1] - 1, elements[i][2] - 1];
+					if (element[0] in nanindices || element[1] in nanindices || element[2] in nanindices) continue;
+					indices[indices.length] = element[0];
+					indices[indices.length] = element[1];
+					indices[indices.length] = element[2];
+				}
+				indices.itemSize = 1;
+
+			}
+		
+			//Initalize buffers
+			node["arrays"] = [vertices, texcoords, indices];
+			node["buffers"] = initBuffers(gl,node["arrays"]);
+			break;
+		//}}}
+		//quiver plot {{{
+		case 3:
+			if (is2d){
+				//plot_quiver(x,y,data(:,1),data(:,2),options);
+			}
+			else{
+				//plot_quiver3(x,y,z,data(:,1),data(:,2),data(:,3),options);
+			}
+			break;
+		//}}}
+		//node transient plot {{{
+		case 5:
+			if (elements[0].length==6){ //prisms
+			}
+			else if (elements[0].length==4){//tetras
+			}
+			else{ //triangular elements
+				vertices.itemSize = 3;
+				
+				var xyz = vec3.create();
+				var direction = vec3.create();
+				var vertex = vec3.create();
+				var magnitude;
+				var timestamps = data[data.length-1];
+				for(var i = 0; i < x.length; i++){
+					//Check for NaN values and remove from indices array as necessary, but preserve vertex array spacing
+					if (isNaN(x[i]) || isNaN(y[i]) || isNaN(z[i]) || isNaN(data[i][0])) {
+						nanindices[i] = i;
+						vertices[vertices.length] = vertex[0];
+						vertices[vertices.length] = vertex[1];
+						vertices[vertices.length] = vertex[2];
+						
+						texcoords[texcoords.length] = 0.0;
+						texcoords[texcoords.length] = 0.0;
+						continue;
+					}
+					//Scale vertices
+					xyz = vec3.fromValues(x[i], y[i], z[i]);
+					magnitude = vec3.length(xyz) + md.geometry.surface[i] * vertexscale;
+					vec3.normalize(direction, xyz);
+					vec3.scale(vertex, direction, magnitude);
+					vertices[vertices.length] = vertex[0];
+					vertices[vertices.length] = vertex[1];
+					vertices[vertices.length] = vertex[2];
+				}	
+				//Transpose data to obtain column addressable data matrix
+				data = data[0].map(function(col, i) { 
+					return data.map(function(row) { 
+						return row[i]
+					})
+				});
+				//Prevent evaluation of datasubarray min/max if caxis exists
+				if (options.exist('caxis')) {
+					caxis = options.getfieldvalue('caxis');
+				}
+				else {
+					caxis = [ArrayMin(data[0]),ArrayMax(data[0].slice(0,-1))];
+				}
+				if (options.getfieldvalue('log','off')!='off') caxis = [Math.log10(caxis[0])/Math.log10(options.getfieldvalue('log',10)),Math.log10(caxis[1])/Math.log10(options.getfieldvalue('log',10))];
+				
+				for(var i = 0; i < data.length; i++){					
+					datamin = caxis[0];
+					datamax = caxis[1];
+					datadelta = datamax - datamin;
+
+					//Precalculate arrays for each datasubarray, trimming off timestamp value by using x.length instead of data[i].length
+					texcoords[i] = [];
+					texcoords[i].itemSize = 2;
+					for(var j = 0; j < x.length; j++){
+						texcoords[i][texcoords[i].length] = 0.5;
+						texcoords[i][texcoords[i].length] = (data[i][j] - datamin) / datadelta;
+					}
+				}
+				
+				//linearize the elements array:
+				var element;
+				for(var i = 0; i < elements.length; i++){
+					element = [elements[i][0] - 1, elements[i][1] - 1, elements[i][2] - 1];
+					if (element[0] in nanindices || element[1] in nanindices || element[2] in nanindices) continue;
+					indices[indices.length] = element[0];
+					indices[indices.length] = element[1];
+					indices[indices.length] = element[2];
+				}
+				indices.itemSize = 1;
+				
+				//Initialize movie loop
+				node["movieInterval"] = 1000 / canvas.moviefps;
+				node["movieTimestamps"] = timestamps;
+				node["movieLength"] = timestamps.length;
+				node["movieFrame"] = 0;
+			
+				if (canvas["movieHandler"])	clearInterval(canvas["movieHandler"]);
+				canvas["movieHandler"] = setInterval(function () {
+						node["movieFrame"] = canvas["movieFrame"];
+						if (canvas["moviePlay"] && canvas["movieIncrement"]) {
+							if (canvas["movieReverse"]) {
+								node["movieFrame"] = (((node["movieFrame"] - 1) % node["movieLength"]) + node["movieLength"]) % node["movieLength"]; //Handle negative modulus
+							}
+							else {
+								node["movieFrame"] = (((node["movieFrame"] + 1) % node["movieLength"]) + node["movieLength"]) % node["movieLength"]; //Handle negative modulus
+							}
+						}
+						if (canvas["timeLabel"]) {
+							canvas["timeLabel"].html(node["movieTimestamps"][node["movieFrame"]].toFixed(0) + " " + options.getfieldvalue("movietimeunit","yr"));
+						}
+						if (canvas["progressBar"]) {
+							canvas["progressBar"].val(node["movieFrame"]);
+							canvas["progressBar"].slider('refresh');
+						}
+						node["buffers"] = initBuffers(gl,[node["arrays"][0],node["arrays"][1][node["movieFrame"]],node["arrays"][2]]);
+						canvas["movieFrame"] = node["movieFrame"];
+					}, node["movieInterval"]);
+				if (canvas["progressBar"]) {
+					canvas["movieFrame"] = 0;
+					canvas["progressBar"].val(0);
+					canvas["progressBar"].attr('max', node["movieLength"]-1);
+					canvas["progressBar"].slider('refresh');
+				}
+			}
+			
+			//Initalize buffers
+			node["arrays"] = [vertices, texcoords, indices];
+			node["buffers"] = initBuffers(gl,[node["arrays"][0],node["arrays"][1][0],node["arrays"][2]]);
+			break;
+		//}}}
+		default:
+			throw Error(sprintf("%s%i%s\n",'case ',datatype,' not supported'));
+	}
+}
+function plot_quiver(md,options,canvas) {
+	//PLOT_QUIVER - quiver plot with colors
+	//
+	//   Usage:
+	//      plot_quiver(md,options,canvas)
+	//
+	//   See also: PLOTMODEL, PLOT_MANAGER
+
+	//declare variables:  {{{
+	var vertices = [];
+	var indices = [];
+	var colors = [];
+	var rgbcolor = [];
+	var xmin,xmax;
+	var ymin,ymax;
+	var zmin,zmax;
+	var scale,matrixscale,vertexscale;
+	
+	//Process data and model
+	var meshresults = processmesh(md,[],options);
+	var x = meshresults[0]; 
+	var y = meshresults[1]; 
+	var z = meshresults[2]; 
+	var elements = meshresults[3]; 
+	var is2d = meshresults[4]; 
+	var isplanet = meshresults[5];
+	var v = md.initialization.vel;
+	var vx = md.initialization.vx;
+	var vy = md.initialization.vy;
+		
+	//Compue scaling through matrices for 2d meshes and vertices for 3d meshes
+	if (!md.geometry.surface) {
+		md.geometry.surface=NewArrayFill(md.mesh.x.length,0);
+	}
+	if (md.mesh.classname() == 'mesh3dsurface') {
+		matrixscale = 1;
+		vertexscale = options.getfieldvalue('heightscale',1);
+	}
+	else {
+		if (md.geometry.surface) {
+			z=md.geometry.surface;
+		}	
+		matrixscale = options.getfieldvalue('heightscale',1);
+		vertexscale = 0;
+	}
+	//}}}
+
+	//Compute coordinates and data range:
+	var modelxlim = [ArrayMin(x),ArrayMax(x)];
+	var modelylim = [ArrayMin(y),ArrayMax(y)];
+	var modelzlim = [ArrayMin(z),ArrayMax(z)];
+	var xlim = options.getfieldvalue('xlim',modelxlim);
+	var ylim = options.getfieldvalue('ylim',modelylim);
+	var zlim = options.getfieldvalue('zlim',modelzlim);
+	xmin = xlim[0];
+	xmax = xlim[1];
+	ymin = ylim[0];
+	ymax = ylim[1];
+	zmin = zlim[0];
+	zmax = zlim[1];
+
+	//Compute gl variables:
+	var gl = canvas.gl;
+	var node = Node(gl,options);
+	canvas.nodes[canvas.nodes.length] = node;
+	scale = 1 / (xmax - xmin);
+	node["shaderName"] = "colored";
+	node["shader"] = gl["shaders"][node["shaderName"]]["program"];
+	node["lineWidth"] = options.getfieldvalue('linewidth',1);
+	node["scale"] = [scale, scale, scale * matrixscale];
+	node["translation"] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (2 / scale)];
+	node["modelMatrix"] = recalculateModelMatrix(node);
+	node["drawMode"] = gl.LINES;
+	node["useIndexBuffer"] = false;
+	node["drawOrder"] = 0;
+	node["maskEnabled"] = options.getfieldvalue('innermask','off') == 'on';
+	node["maskHeight"] = options.getfieldvalue('innermaskheight',150.0)*options.getfieldvalue('heightscale',1);
+	node["maskColor"] = options.getfieldvalue('innermaskcolor',[0.0,0.0,1.0,1.0]);
+				
+	//some defaults:
+	colors.itemSize = 4;
+
+	//retrieve some options
+	var edgecolor=new RGBColor(options.getfieldvalue('edgecolor','black'));
+	if (edgecolor.ok) edgecolor = [edgecolor.r/255.0, edgecolor.g/255.0, edgecolor.b/255.0, 1.0];
+	else throw Error(sprintf("s%s%s\n","initWebGL error message: cound not find out edgecolor color for curent canvas ",canvas));
+
+	//node plot {{{
+	if (elements[0].length==6){ //prisms
+	}
+	else if (elements[0].length==4){ //tetras
+	}
+	else{ //2D triangular elements
+		vertices.itemSize = 3;
+		var xyz = vec3.create();
+		var xyz = vec3.create();
+		var direction = vec3.create();
+		var vertex = vec3.create();
+		var vertexBase = vec3.create();
+		var verticesArrow = [vec3.fromValues(0.0, 0.0, 0.0), vec3.fromValues(1.0, 0.0, 0.0), vec3.fromValues(0.667, -0.167, 0.0), vec3.fromValues(1.0, 0.0, 0.0), vec3.fromValues(0.667, 0.166, 0.0), vec3.fromValues(1.0, 0.0, 0.0)];
+		var magnitude;
+		var color = edgecolor;
+		var scaling = options.getfieldvalue('scaling',1);
+		var scale;
+		for(var i = 0; i < x.length; i++){
+			//Check for NaN values and remove from indices array as necessary, but preserve vertex array spacing
+			if (isNaN(x[i]) || isNaN(y[i]) || isNaN(z[i])) continue;
+			//Scale vertices
+			xyz = vec3.fromValues(x[i], y[i], z[i]);
+			magnitude = vec3.length(xyz) + md.geometry.surface[i] * vertexscale;
+			vec3.normalize(direction, xyz);
+			vec3.scale(vertex, direction, magnitude);
+			vec3.copy(vertexBase, vertex);
+			
+			scale = scaling*v[i];
+			var modelMatrix = mat4.create();
+			var scaleMatrix = mat4.create();
+			var rotationMatrix = mat4.create();
+			mat4.scale(scaleMatrix, scaleMatrix, vec3.fromValues(scale, scale, scale));
+			mat4.rotate(rotationMatrix, rotationMatrix, Math.atan2(vy[i], vx[i]), [0.0, 0.0, 1.0]);
+			mat4.multiply(modelMatrix, rotationMatrix, scaleMatrix);
+
+			var temp = vec3.fromValues(0.0, 0.0, 0.0);
+			for (var j = 0; j < 6; j++){
+				vec3.transformMat4(vertex, verticesArrow[j], modelMatrix);
+				vec3.add(vertex, vertex, vertexBase);
+				vertices[vertices.length] = vertex[0];
+				vertices[vertices.length] = vertex[1];
+				vertices[vertices.length] = vertex[2];
+				
+				colors[colors.length] = color[0];
+				colors[colors.length] = color[1];
+				colors[colors.length] = color[2];
+				colors[colors.length] = color[3];
+			}
+		}
+	}
+	//}}}
+
+	/*Initalize buffers: */
+	node["arrays"] = [vertices, colors];
+	node["buffers"] = initBuffers(gl, node["arrays"]);
+}
+function plotdoc() {
+	//PLOTDOC - plot documentation
+	//
+	//   Usage:
+	//      plotdoc()
+	
+	//TODO: Standardize image to overlay_image, heightscale to scaling, colorbarfontsize/color, clarify innermask/outermask, edgecolor implementation, check colormap, 
+
+	console.log(' WARNING: starred methods (*) are experimental and not guarenteed to be stable');
+	console.log('   Plot usage: plotmodel(model,varargin)');
+	console.log('   Options: ');
+	console.log('       "canvasid": canvas id');
+	console.log('       "data" : what we want to plot');
+	console.log('                Available values for "data" are: ');
+	console.log('                  - any field of the model structure. ex: plot(md,"data","vel"), or plot(md,"data",md.initialization.vel)');
+	console.log('                  - "mesh": draw mesh using trisurf');
+	console.log('                  - "quiver": quiver plot');
+	console.log('       "caxis": modify  colorbar range. (array of type [a, b] where b>=a)');
+	console.log('       "backgroundcolor": plot background color. (default "lightcyan", ex: "green","blue")');
+	console.log('       "colorbar": add colorbar (default "off", ex: "on", "off")');
+	console.log('       "colorbarid": colorbar canvas id (string)');
+	console.log('       "colorbartitle": colorbar title (string)');	
+	console.log('       "colorbarnticks": number of colorbar ticks (default 6, ex: 2, 10)');	
+	console.log('       "colorbarprecision": colorbar label digit precision (default 3, ex: 1, 4)');	
+	console.log('       "colorbarorientation": oreintation of colorbar (default "vertical", ex: "horizontal")');
+	console.log('       "colorbarinnerlabels": choose whether labels are inside colorbar (default "off", ex: "on", "off")');
+	console.log('       "colorbarfontsize": specify colorbar font size (default 1, ex: 14, 22)');
+	console.log('       "colorbarfontcolor": specify colorbar font color (default "black", ex: "green","blue")');
+	console.log('       "colorbarwidth": multiplier (default 1) to the default width colorbar');
+	console.log('       "colorbarheight": multiplier (default 1) to the default height colorbar');
+	console.log('       "colormap": same as standard matlab option (default "jet", ex: "hsv","cool","spring","gray","Ala","Rignot",...)');
+	console.log('       "edgecolor": same as standard matlab option EdgeColor (default "black", ex: color name: "blue" or RGB array: [0.5, 0.2, 0.8])');
+	console.log('       "view": initial azimuth and elevation angles for camera (default [0,90], ex: [90, 180]');
+	console.log('       "zoom": initial camera zoom as a percentage of default (default 1, ex: 1.5, 0.01)');
+	console.log('       "centeroffset": initial camera offset from model center (default [0,0,0.0], ex: [-2, 1.5, 0.01])');
+	console.log('       "xlim": x coordinates to fit inside camera (ex: [0, 500])');
+	console.log('       "ylim": y coordinates to fit inside camera (ex: [0, 500])');
+	console.log('       "zlim": z coordinates to fit inside camera (ex: [0, 500])');
+	console.log('       "azlim": azimuth view limits (ex: [0, 180])');
+	console.log('       "ellim": elevation view limits (ex: [-90, 90])');
+	console.log('       "zoomlim": zoom view limits (ex: [0.05, 10])');
+	console.log('       "displayview": print view value to console');
+	console.log('       "displayzoom": print zoom value to console');
+	console.log('       "controlsensitivity": sensitivty of view/zoom changes as a percentage of default (default 1, ex: 0.5, 2.75)');
+	console.log('       "2d": renders orthographic camera with view set to [0, 90] (default "off", ex: "on", "off")');
+	console.log('       "moviefps": frames per second when displaying transient runs (default 5, ex: 1, 10)');
+	console.log('       "overlay": overlay a radar amplitude image behind (default "off", ex: "on", "off")');
+	console.log('       "overlay_image": path to overlay image (default "off", ex: "on", "off")');
+	console.log('       "alpha": transparency coefficient 0.0 to 1.0, the lower, the more transparent. (default 1.0, ex: 0.5, 0.25)');
+	console.log('       "heightscale": scaling factor to accentuate height. (default 1, ex: 0.5, 100)');
+	console.log('       "scaling*": scaling factor used by quiver plots. Default is 0.4');
+	console.log('       "linewidth*": line width for mesh, quiver, and contour plots, currently limited by WebGL to 1. (default 1, ex: 2, 5)');
+	console.log('       "cloud*": plot a cloud of points, given a flat array of 3d coordinates (ex: [0.0, 0.0, 0.0, 1.0, 1.0, 1.0])');
+	console.log('       "expdisp*": plot exp file on top of a data plot. provide exp file as an argument (use a cell of strings if more than one)');
+	console.log('       "textlabels*": plot text labels rendered in 3d space, using an array of text/coordinate pairs (ex: [{"pos":[0.0,0.0,0.0],"text":"origin"}])');
+	console.log('       "outermask*": Special mask that colors all parts of a overlay mesh below a height a certain color. provide outermaskheight and outermaskcolor options also (default "off", ex: "on", "off")');
+	console.log('       "innermask*": Special mask that colors all parts of a data mesh below a height a certain color. provide innermaskheight and innermaskcolor options also (default "off", ex: "on", "off")');
+	console.log('       "mask": list of flags of size numberofnodes or numberofelements. Only "true" values are plotted ');
+	console.log('       "log": value of log');
+	console.log('  ');
+	console.log('   Examples:');
+	console.log('       plotmodel(md,"data","vel","data","mesh","view#2",3,"colorbar#all","on")');
+	console.log('       plotmodel(md,"data",md.geomtery.surface)');
+}function plotmodel(md){
+
+	//Convert arguments to array: 
+	var args = Array.prototype.slice.call(arguments);
+
+	//First process options
+	var  options = new plotoptions(args.slice(1,args.length));
+
+	
+	//get number of subplots
+	subplotwidth=Math.ceil(Math.sqrt(options.numberofplots)); 
+	
+	//Get figure number and number of plots
+	numberofplots=options.numberofplots;
+
+	//if nlines and ncols specified, then bypass.
+	var nlines,ncols;
+	if (options.list[0].exist('nlines')){
+		nlines=options.list[0].getfieldvalue('nlines');
+	}
+	else {
+		nlines=Math.ceil(numberofplots/subplotwidth);
+	}
+	if (options.list[0].exist('ncols')){
+		ncols=options.list[0].getfieldvalue('ncols');
+	}
+	else {
+		ncols=subplotwidth;
+	}
+	
+	//check that nlines and ncols were given at the same time!
+	if ((options.list[0].exist('ncols') & !options.list[0].exist('nlines')) | (options.list[0].exist('nlines') & !options.list[0].exist('ncols'))) throw Error('plotmodel error message: nlines and ncols  need to be specified together, or not at all');
+
+	//go through subplots
+	if (numberofplots){
+		//Reinitialize all canvases
+		for (var i=0;i<numberofplots;i++){
+			document.getElementById(options.list[i].getfieldvalue('canvasid')).initialized = false;
+		}
+		//Go through all data plottable and close window if an error occurs
+		for (var i=0;i<numberofplots;i++){
+			plot_manager(options.list[i].getfieldvalue('model',md),options.list[i],subplotwidth,nlines,ncols,i);
+
+			//List all unused options
+			options.list[i].displayunused();
+		}
+	}
+}
+function processdata(md,data,options){
+	//PROCESSDATA - process data to be plotted
+	//
+	//   datatype = 1 -> elements
+	//   datatype = 2 -> nodes
+	//   datatype = 3 -> node quivers
+	//   datatype = 4 -> patch
+	//   datatype = 5 -> nodes transient
+	//
+	//   Usage:
+	//      var array = processdata(md,data,options);
+	//      var data = array[0]; 
+	//      var datatype = array[1];
+	//
+	//   See also: PLOTMODEL, PROCESSMESH
+
+	//variables: 
+	var datatype;
+	
+	//check format
+	if ( data.length ==0 | data === [] | typeof data === 'number' | ArrayAnyNaN(data) ){
+		throw Error('plotmodel error message: data provided is empty');
+	}
+
+	//Process NaN if any (do not know before mask is applied)
+	if (options.exist('nan')){
+		var valuefornan=options.getfieldvalue('nan',0);
+		for (var i=0;i<data.length;i++)if(IsNaN(data[i]))data[i]=valuefornan;
+	}
+
+	//special case for mesh 2dvertical
+	if (md.mesh.domaintype() === '2Dvertical'){
+		return processdata(md.mesh,md,data,options);
+	}
+
+	//needed later on
+	if ('numberofvertices2d' in md.mesh){
+		numberofvertices2d=md.mesh.numberofvertices2d; 
+		numberofelements2d=md.mesh.numberofelements2d; 
+	}
+	else {
+		numberofvertices2d=NaN;
+		numberofelements2d=NaN;
+	}
+
+	//initialize datatype
+	datatype=0;
+
+	//get datasize
+	datasize=data.length;
+
+	//transpose data if necessary
+	if (data[0].length > data.length){
+		throw Error('processdata error message: you need to tranpose your data!');
+	}
+
+
+	//check length
+	if (datasize != md.mesh.numberofvertices & datasize !=md.mesh.numberofelements & datasize!=md.mesh.numberofvertices*6 & 
+			((md.mesh.domaintype() === '3D') & !(datasize==numberofelements2d | datasize==numberofvertices2d))){
+		throw Error('plotmodel error message: data not supported yet');
+	}
+
+
+	//quiver?
+	if (data[0].length>1){
+		datatype=3;
+
+		//check number of columns, add zeros if necessary,
+		if (md.mesh.dimension()==3){
+			if (data[0].length==2){
+				data=[data, NewArrayFill(data.length,1)];
+			}
+			else if (data[0].length!=3){
+				throw Error('plotmodel error message: data provided should have 2 or 3 columns for quiver plot, and 1 for regular plot');
+			}
+		}
+	}
+
+	//treat the case datasize(1)=6*nodes
+	if (datasize==6*md.mesh.numberofvertices){
+		//keep the only norm of data
+		data1=new Array(md.mesh.numberofvertices);
+		data2=new Array(md.mesh.numberofvertices);
+		data=new Array(md.mesh.numberofvertices);
+		for(var i=0;i<md.mesh.numberofvertices;i++){
+			data1[i]=data[6*i+0];
+			data2[i]=data[6*i+1];
+			data[i]=Math.sqrt(pow(data1[i],2),pow(data2[i],2));
+		}
+		datasize=md.mesh.numberofvertices;
+		//---> go to node data
+	}
+
+	//treat the case datasize(1)=nodes2d
+	if (md.mesh.dimension()==3 & datasize==numberofvertices2d){
+		data=project3d(md,'vector',data,'type','node');
+		datasize=md.mesh.numberofvertices;
+		//---> go to node data
+	}
+
+	//treat the case datasize=nodes2d
+	if (md.mesh.dimension()==3 & datasize==numberofelements2d){
+		data=project3d(md,'vector',data,'type','element');
+		datasize=md.mesh.numberofelements;
+		//---> go to node data
+	}
+
+	//smoothing?
+	if (options.exist('smooth')){
+		data=averaging(md,data,options.getfieldvalue('smooth'));
+		datasize=md.mesh.numberofvertices;
+		//---> go to node data
+	}
+
+	//element data
+	if (datasize==md.mesh.numberofelements & data[0].length==1){
+
+		//Initialize datatype if non patch
+		if(datatype!=4 & datatype!=5){
+			datatype=1;
+		}
+
+		//Mask?
+		if(options.exist('mask')){
+			flags=options.getfieldvalue('mask');
+			if(flags.length==md.mesh.numberofvertices){
+				for(var i=0;i<md.mesh.numberofelements;i++){
+					var nanify=0;
+					for(var j=0;j<md.mesh.elements[0].length;j++){
+						if (flags[md.mesh.elements[i][j]-1]==0)nanify=1;
+					}
+					if(nanify) for(var j=0;j<md.mesh.elements[0].length;j++)data[md.mesh.elements[i][j]-1]=NaN;
+				}
+			}
+			else if (flags.length==md.mesh.numberofelements){
+				for(var i=0;i<md.mesh.numberofelements;i++)if (flags[i]==0)data[i]=NaN;
+			}
+			else{
+				console.log('plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements)');
+			}
+		}
+
+		//log?
+		if (options.getfieldvalue('log','off')!='off'){
+			var bounds=options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+			for(var i=0;i<md.mesh.numberofelements;i++)if(data[i]<bounds[0])data[i]=bounds[0];
+			for(var i=0;i<md.mesh.numberofelements;i++)if(data[i]<=0){
+				throw Error("Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])");
+			}
+			for(var i=0;i<md.mesh.numberofelements;i++){
+				if(!IsNaN(data[i])){
+					data[i]=Math.log10(data[i])/Math.log10(options.getfieldvalue('log',10));
+				}
+			}
+		}
+	}
+
+	//node data
+	if (datasize==md.mesh.numberofvertices){
+		datatype=2;
+
+		//Mask?
+		if (options.exist('mask')){
+			flags=options.getfieldvalue('mask');
+			if (flags.length==md.mesh.numberofvertices){
+				for(var i=0;i<md.mesh.numberofvertices;i++){
+					if(flags[i]==0)data[i]=NaN;
+				}
+			}
+			else if( length(flags)==md.mesh.numberofelements){
+				for(var i=0;i<md.mesh.numberofelements;i++){
+					if(flags[i]==0){
+						for(var j=0;j<md.mesh.elements[0].length;j++){
+							data[md.mesh.elements[i][j]-1]=NaN;
+						}
+					}
+				}
+			}
+			else{
+				console.log("plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements");
+			}
+		}
+
+		//log?
+		if (options.getfieldvalue('log','off')!='off'){
+			var bounds=options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(data[i]<bounds[0])data[i]=bounds[0];
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(data[i]>bounds[1])data[i]=bounds[1];
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(data[i]<=0){
+				throw Error("Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])");
+			}
+			for(var i=0;i<md.mesh.numberofvertices;i++){
+			   data[i]=Math.log10(data[i])/Math.log10(options.getfieldvalue('log',10));
+			}
+		}
+	}
+	
+	//node transient data
+    if (datasize==md.mesh.numberofvertices+1){
+        datatype=5;
+		
+		//log?	
+		if (options.getfieldvalue('log','off')!='off'){
+			var bounds=options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+			for(var i=0;i<md.mesh.numberofvertices;i++) {
+				for(var j=0;j<data[i].length;j++) {
+					if(data[i][j]<bounds[0])data[i][j]=bounds[0];
+				}
+			}
+			for(var i=0;i<md.mesh.numberofvertices;i++) {
+				for(var j=0;j<data[i].length;j++) {
+					if(data[i][j]>bounds[1])data[i][j]=bounds[1];
+				}
+			}
+			for(var i=0;i<md.mesh.numberofvertices;i++) {
+				for(var j=0;j<data[i].length;j++) {
+					if(data[i][j]<=0) {
+						throw Error("Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])");
+					}
+				}
+			}
+			for(var i=0;i<md.mesh.numberofvertices;i++){
+				for(var j=0;j<data[i].length;j++) {
+					data[i][j]=Math.log10(data[i][j])/Math.log10(options.getfieldvalue('log',10));
+				}
+			}
+		}
+    }
+	
+
+	//layer projection? 
+	if (options.getfieldvalue('layer',0)>=1){
+		data=project2d(md,data,options.getfieldvalue('layer')); //project onto 2d mesh
+	}
+
+	//control arrow density if quiverplot: not done yet since conversion of matlab to javascript.
+	/*if (datatype==3 & options.exist('density')){
+		databak=data;
+		data=NewArrayFill(datasize,NaN);
+
+		density=options.getfieldvalue('density');
+		data(1:density:end,:)=databak(1:density:end,:);
+		clear databak
+	}*/
+
+	/*if (datatype==3){ //not done yet
+		//Mask?
+		if (options.exist('mask')){
+			flags=options.getfieldvalue('mask');
+			pos=find(~flags);
+			if (flags.length==md.mesh.numberofvertices){
+			   data(pos,:)=NaN;
+			}
+			else if (flags.length==md.mesh.numberofelements){
+				data(md.mesh.elements(pos,:),:)=NaN;
+			}
+			else{
+				console.log("plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements");
+			}
+		}
+	}*/
+
+	//OK, if datatype=0 error out
+	if (datatype==0){
+	   throw Error('data provided not recognized or not supported');
+	}
+
+	return [data,datatype];
+}
+function processmesh(md,data,options){
+//PROCESSMESH - process mesh to be plotted
+//
+//   Usage:
+//      var meshresults=processmesh(md,data,options)
+//      var x=meshresults[0]; 
+//      var y=meshresults[1]; 
+//      var z=meshresults[2]; 
+//      var elements=meshresults[3]; 
+//      var is2d=meshresults[4]; 
+//      var isplanet=meshresults[5]; 
+//
+//   See also: PLOTMODEL, PROCESSDATA
+
+	var x,y,z,elements,is2d,isplanet;
+
+	if (md.mesh.numberofvertices==0){
+		throw Error('plot error message: mesh is empty');
+	}
+
+
+	if (md.mesh.numberofvertices==md.mesh.numberofelements){
+		throw Error(['plot error message: the number of elements is the same as the number of nodes...']);
+	}
+
+	if (options.getfieldvalue('coord','xy') !== 'latlon'){
+		x=md.mesh.x.slice();
+		if ('x2d' in md.mesh) x2d=md.mesh.x2d.slice();
+		y=md.mesh.y.slice();
+		if ('y2d' in md.mesh) y2d=md.mesh.y2d.slice();
+	}
+	else{
+		x=md.mesh.long.slice();
+		y=md.mesh.lat.slice();
+	}
+
+	if ('z' in md.mesh){
+		z=md.mesh.z.slice();
+	}
+	else{
+		z=NewArrayFill(x.length,0);
+	}
+	z=options.getfieldvalue('z',z);
+	if (typeof z === 'string'){
+		z=md[z];
+	}
+	
+	//TODO: Make deep copy of elements array to prevent unwanted modification of model (slice creates deep copies for primitive types, shallow copies for obejcts)
+	if ('elements2d' in md.mesh) elements2d=md.mesh.elements2d.slice();
+	elements=md.mesh.elements.slice();
+
+	//is it a 2d plot?
+	if (md.mesh.dimension()==2){
+		is2d=1;
+	}
+	else{
+		if (options.getfieldvalue('layer',0)>=1){
+			is2d=1;
+		}
+		else{
+			is2d=0;
+		}
+	}
+
+	//layer projection? 
+	if (options.getfieldvalue('layer',0)>=1){
+		if (options.getfieldvalue('coord','xy') === 'latlon'){
+			throw Error('processmesh error message: cannot work with 3D meshes for now');
+		}
+		
+		//we modify the mesh temporarily to a 2d mesh from which the 3d mesh was extruded. 
+		x=x2d;
+		y=y2d;
+		z=NewArrayFill(x2d.length,0);
+		elements=elements2d;
+	}
+
+	//units
+	if (options.exist('unit')){
+		unit=options.getfieldvalue('unit');
+		x=x*unit;
+		y=y*unit;
+		z=z*unit;
+	}
+
+	//for now, always isplanet = 0, as we don't have the isa capability: 
+	//if isa(md,'planet'),
+	//	isplanet=1;
+	//else
+	isplanet=0;
+	//end
+
+	return  [x,y,z,elements,is2d,isplanet];
+}
+function gauge() {
+	//GAGUE - create a gague and label that display a value with unit label
+	//
+	//   Usage:
+	//      gaugeslr = gauge('gaugediv','slr-controldiv','label','m');
+	
+	//Convert arguments to options
+	var args = Array.prototype.slice.call(arguments);
+	var options = new pairoptions(args);
+
+	gaugecanvas = options.getfieldvalue('gaugecanvas','gauge');
+	gaugetext = options.getfieldvalue('gaugetext','gauge-text');
+	gaugediv = options.getfieldvalue('gaugediv','slr-controldiv');
+	gaugevalue = options.getfieldvalue('value',0);
+	min = options.getfieldvalue('min',0);
+	max = options.getfieldvalue('max',22);
+	colors = options.getfieldvalue('colors',[[0.0, "#000000" ], [0.50, "#880000"], [1.0, "#ff0000"]]);
+	label = options.getfieldvalue('label','');
+	
+	$('<div class="bordered margin-8 padding-8"><canvas id="'+gaugecanvas+'" width="100px" height="50%" class="gauge-canvas"></canvas><div id="'+gaugetext+'" class="gauge-text"></div></div>').appendTo('#'+gaugediv);
+	
+	var opts = {
+		lines: 12, // The number of lines to draw
+		angle: 0, // The length of each line
+		lineWidth: 0.38, // The line thickness
+		pointer: {
+			length: 0, // The radius of the inner circle
+			strokeWidth: 0, // The rotation offset
+			color: '#000000' // Fill color
+		},
+		limitMax: 'false',   // If true, the pointer will not go past the end of the gauge
+		colorStart: '#6F6EA0',   // Colors
+		colorStop: '#C0C0DB',    // just experiment with them
+		strokeColor: '#EEEEEE',   // to see which ones work best for you
+		percentColors: colors,
+		generateGradient: true
+	};
+	var target = document.getElementById(gaugecanvas)
+	var gauge = new Gauge(target).setOptions(opts);
+	gauge.setTextField(document.getElementById(gaugetext));
+	gauge.label = label;
+	gauge.textField.render = function(gauge) {
+      return this.el.innerHTML = gauge.displayedValue.toFixed(0) + ' ' + gauge.label;
+    };
+	gauge.minValue = min;
+	gauge.maxValue = max;
+	gauge.animationSpeed = 1;
+	gauge.set(1); // set once to initialize?
+	gauge.set(gaugevalue); // set actual value
+	
+	return gauge;
+}
+/*This is where we have all our webgl relevant functionality for the plotting routines: */
+//{{{ Canvas Initialization
+function initCanvas(options) {
+	//Initialize open Gl for each canvas, if needed: 
+	var canvas=document.getElementById(options.getfieldvalue('canvasid'));
+	if (!canvas.initialized) {
+		canvas.gl = initWebGL(canvas,options);
+		canvas.nodes = [];
+		if (canvas.drawHandler)	window.cancelAnimationFrame(canvas.drawHandler);
+		draw(canvas,options);
+		canvas.initialized = true;
+	}
+	return canvas;
+}
+function initWebGL(canvas,options) { //{{{
+	var gl;
+
+	try {
+		// Try to grab the standard context. If it fails, fallback to experimental.
+		gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
+	}
+	catch(e) {}
+
+	// If we don't have a GL context, give up now
+	if (!gl) {
+		alert("Unable to initialize WebGL. Your browser may not support it.");
+	}
+		
+	// Enable depth testing
+	gl.enable(gl.DEPTH_TEST);
+	// Near things obscure far things
+	gl.depthFunc(gl.LEQUAL);
+	// Clear the color as well as the depth buffer.
+	gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
+	// Enable color blending/overlay
+	gl.enable(gl.BLEND);
+
+	// Allocate arrays equal to maximium number of attributes used by any one shader
+	gl.enableVertexAttribArray(0);
+	gl.enableVertexAttribArray(1);
+
+	// Load shaders and store them in gl object
+	gl.shaders = loadShaders(gl);
+	
+	// Add context state variables
+	//TODO:Group variables in objects for organization and naming
+	canvas.gl = gl;
+	canvas.zoomBounds = options.getfieldvalue('zoomlim',[0.001,100.0]);
+	canvas.zoom = clamp(options.getfieldvalue('zoom',1.0), canvas.zoomBounds[0], canvas.zoomBounds[1]);
+	canvas.zoomLast = canvas.zoom;
+	canvas.cameraMatrix = mat4.create();
+	canvas.translation = options.getfieldvalue('origin',[0,0,0.0]);
+	canvas.rotationAzimuthBounds = options.getfieldvalue('azlim',[0,360]);
+	canvas.rotationElevationBounds = options.getfieldvalue('ellim',[-180,180]);
+	canvas.view = options.getfieldvalue('view',[0,90]); //0 azimuth - up is north, 90 elevation - looking straight down
+	canvas.rotation = canvas.view;
+	canvas.controlsensitivity = options.getfieldvalue('controlsensitivity',1);
+	canvas.twod = options.getfieldvalue('2d','off') == 'on';
+	canvas.moviePlay = true;
+	canvas.movieReverse = false;
+	canvas.movieIncrement = true;
+	canvas.moviefps = options.getfieldvalue('moviefps',5);
+	
+	// Add event listeners for canvas
+	var displayview = options.getfieldvalue('displayview','off') == 'on';
+	var displayzoom = options.getfieldvalue('displayzoom','off') == 'on';
+	var mc = new Hammer.Manager(canvas);
+	
+    mc.add(new Hammer.Pan({threshold:0, pointers:0}));
+    mc.add(new Hammer.Pinch({threshold:0})).recognizeWith(mc.get('pan'));
+    mc.on("panstart panmove", function (ev) {onPan(ev,canvas,displayview);});
+    mc.on("pinchstart pinchmove", function (ev) {onPinch(ev,canvas,displayview);});
+	//mc.on("mousewheel DOMMouseScroll", function (ev) {onZoom(ev,canvas,options);});
+	
+	canvas.addEventListener("mousewheel", function (ev) {onZoom(ev,canvas,displayzoom)}, false);
+	canvas.addEventListener("DOMMouseScroll", function (ev) {onZoom(ev,canvas,displayzoom)}, false);
+	
+	return gl;
+} //}}}
+function initBuffers(gl,arrays) { //{{{	
+	var bufferArray = [];
+	for (var i = 0; i < arrays.length; i++) {
+		bufferArray[i] = gl.createBuffer();	
+		bufferArray[i].itemSize = arrays[i].itemSize;
+		bufferArray[i].numItems = arrays[i].length/bufferArray[i].itemSize;
+		
+		if (bufferArray[i].itemSize > 1) {
+			gl.bindBuffer(gl.ARRAY_BUFFER, bufferArray[i]);
+			gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(arrays[i]), gl.STATIC_DRAW);
+		}
+		else {
+			//TODO: identify index buffers uniquely (by name)
+			gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, bufferArray[i]);
+			gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(arrays[i]), gl.STATIC_DRAW);
+		}
+	}	
+	return bufferArray;
+} //}}}
+function initTexture(gl,imageSource) { //{{{
+	var texture = gl.createTexture();
+	texture.image = new Image();
+	texture.isLoaded = false;
+	texture.image.onload = function () {
+		handleLoadedTexture(gl,texture);
+	}
+	texture.image.src = imageSource;
+	return texture;
+} //}}}
+function handleLoadedTexture(gl,texture) { //{{{
+	gl.activeTexture(gl.TEXTURE0);
+	gl.bindTexture(gl.TEXTURE_2D, texture);
+	gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
+	gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, texture.image);
+	gl.generateMipmap(gl.TEXTURE_2D);
+	gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST_MIPMAP_LINEAR);
+	gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
+	gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
+	gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
+	gl.bindTexture(gl.TEXTURE_2D, null);
+	texture.isLoaded = true;
+} //}}}
+function Node(gl,options) { //{{{
+	//Returns a Node object that contains default display states for webgl object
+	return {buffers:[],
+		shader:gl.shaders["colored"]["program"],
+		draw:null,
+		hideOcean:false,
+		level:0,
+		useIndexBuffer:true,
+		alpha:1.0,
+		lineWidth:1.0,
+		disableDepthTest:false, 
+		enableCullFace:false,
+		cullFace:gl.FRONT,
+		drawMode:gl.TRIANGLES,
+		texture:null,
+		translation:vec3.create(),
+		rotation:vec3.fromValues(-90, 0, 0),
+		scale:vec3.fromValues(1, 1, 1),
+		modelMatrix:mat4.create(),
+		shaderName:"colored",
+		drawOrder:0,
+		maskEnabled:false,
+		maskHeight:150.0,
+		maskColor:vec4.fromValues(0.0, 0.0, 1.0, 1.0),
+		enabled:true,
+	};
+} //}}}
+function recalculateModelMatrix(node) { //{{{
+	//TODO: move to 0,0,0, rotate,move back to normal space, then apply transform
+	var modelMatrix = mat4.create();
+
+	var scaleMatrix = mat4.create();
+	mat4.scale(scaleMatrix, scaleMatrix, node["scale"]);
+	mat4.multiply(modelMatrix, scaleMatrix, modelMatrix);
+
+	var translationMatrix = mat4.create();
+	mat4.translate(translationMatrix, translationMatrix, node["translation"]); //relative translation
+	mat4.multiply(modelMatrix, translationMatrix, modelMatrix);
+	
+	var zRotationMatrix = mat4.create();	
+	mat4.rotate(zRotationMatrix, zRotationMatrix, radians(node["rotation"][2]), [0.0, 0.0, 1.0]);
+	mat4.multiply(modelMatrix, zRotationMatrix, modelMatrix);
+	var yRotationMatrix = mat4.create();	
+	mat4.rotate(yRotationMatrix, yRotationMatrix, radians(node["rotation"][1]), [0.0, 1.0, 0.0]);
+	mat4.multiply(modelMatrix, yRotationMatrix, modelMatrix);
+	var xRotationMatrix = mat4.create();	
+	mat4.rotate(xRotationMatrix, xRotationMatrix, radians(node["rotation"][0]), [1.0, 0.0, 0.0]);
+	mat4.multiply(modelMatrix, xRotationMatrix, modelMatrix);
+
+	return modelMatrix;
+} //}}}
+function radians (degrees) { //{{{
+  return degrees * Math.PI / 180;
+} //}}}
+function degrees (radians) { //{{{
+  return radians * 180 / Math.PI;
+} //}}}
+function clamp(value, min, max) { //{{{
+	return Math.max(min, Math.min(value, max));
+} //}}}
+function recover(canvasid,name,defaultvalue) { //{{{
+	var canvas  = document.getElementById(canvasid);
+	if (canvas && canvas.hasOwnProperty(name)) {
+		return canvas[name];
+	}
+	return defaultvalue;
+} //}}}
+//}}}
+//{{{ Shader Loading
+function loadShaders(gl) { //{{{
+	var shaderNames = ["colored", "unlit_textured"];
+	shaders = {};
+	shaders["colored"] = {loaded:false, vsh:{}, fsh:{}};
+	shaders["colored"]["vsh"]["string"] = 
+		['attribute vec3 aVertexPosition;',
+		'attribute vec4 aVertexColor;',
+		'',
+		'uniform mat4 uMVPMatrix;',
+		'uniform float uAlpha;',
+		'',
+		'varying vec4 vColor;',
+		'',
+		'void main(void) {',
+		'	gl_PointSize = 3.0;',
+		'	gl_Position = uMVPMatrix * vec4(aVertexPosition.xyz, 1.0);',
+		'	vColor = vec4(aVertexColor.xyz, uAlpha);',
+		'}'].join('\n');
+	shaders["colored"]["fsh"]["string"] =
+		['precision mediump float;',
+		'',
+		'varying vec4 vColor;',
+		'',
+		'void main(void) {',
+		'	gl_FragColor = vColor;',
+		'}'].join('\n');
+	shaders["unlit_textured"] = {loaded:false, vsh:{}, fsh:{}};
+	shaders["unlit_textured"]["vsh"]["string"] = 
+		['attribute vec3 aVertexPosition;',
+		'attribute vec2 aTextureCoord;',
+		'',
+		'uniform mat4 uMVPMatrix;',
+		'',
+		'varying vec2 vTextureCoord;',
+		'varying float vZCoord;',
+		'',
+		'void main(void) {',
+		'	gl_PointSize = 3.0;',
+		'	gl_Position = uMVPMatrix * vec4(aVertexPosition.xyz, 1.0);',
+		'	vTextureCoord = aTextureCoord;',
+		'	vZCoord = aVertexPosition.z;',
+		'}'].join('\n');
+	shaders["unlit_textured"]["fsh"]["string"] =
+		['precision mediump float;',
+		'',
+		'varying vec2 vTextureCoord;',
+		'varying float vZCoord;',
+		'',
+		'uniform sampler2D uColorSampler;',
+		'uniform float uAlpha;',
+		'uniform bool uMaskEnabled;',
+		'uniform float uMaskHeight;',
+		'uniform vec4 uMaskColor;',
+		'',
+		'void main(void) {',
+		'	if (uMaskEnabled && (vZCoord < uMaskHeight)) {',
+		'		gl_FragColor = vec4(uMaskColor.xyz, uAlpha);',
+		'	}',
+		'	else {',
+		'		gl_FragColor = vec4(texture2D(uColorSampler, vec2(vTextureCoord.s, vTextureCoord.t)).rgb, uAlpha);',
+		'	}',
+		'}'].join('\n');
+	shaderNames.forEach(function(shaderName){
+		shaders[shaderName]["vsh"]["shader"] = getShaderByString(gl, shaders[shaderName]["vsh"]["string"], "vsh");
+		shaders[shaderName]["fsh"]["shader"] = getShaderByString(gl, shaders[shaderName]["fsh"]["string"], "fsh");
+
+		shaders[shaderName]["program"] = gl.createProgram();
+		gl.attachShader(shaders[shaderName]["program"], shaders[shaderName]["vsh"]["shader"]);
+		gl.attachShader(shaders[shaderName]["program"], shaders[shaderName]["fsh"]["shader"]);
+		gl.linkProgram(shaders[shaderName]["program"]);
+
+		if (!gl.getProgramParameter(shaders[shaderName]["program"], gl.LINK_STATUS)) {
+			alert("Could not initialise shaders");
+		}
+
+		var vshStringArray = shaders[shaderName]["vsh"]["string"].split("\n");
+		var fshStringArray = shaders[shaderName]["fsh"]["string"].split("\n");
+		var line = "";
+		var property = "";
+		for (var i = 0; i < vshStringArray.length; i++) {
+			line = vshStringArray[i];
+			if (line.search("attribute") != -1) {
+				property = nameFromLine(line);
+				shaders[shaderName]["program"][property] = gl.getAttribLocation(shaders[shaderName]["program"], property);
+			}
+			else if (line.search("uniform") != -1) {
+				property = nameFromLine(line);
+				shaders[shaderName]["program"][property] = gl.getUniformLocation(shaders[shaderName]["program"], property);
+			}
+			else if (line.search("void main") != -1) {
+				break;
+			}
+		}
+		for (var i = 0; i < fshStringArray.length; i++) {
+			line = fshStringArray[i];
+			if (line.search("uniform") != -1) {
+				property = nameFromLine(line);
+				shaders[shaderName]["program"][property] = gl.getUniformLocation(shaders[shaderName]["program"], property);
+			}
+			else if (line.search("void main") != -1) {
+				break;
+			}
+		}
+		shaders[shaderName]["loaded"] = true;
+	});
+	return shaders;
+} //}}}
+function getShaderByString(gl,str,type) { //{{{
+	var shader;
+	if (type == "fsh") {
+		shader = gl.createShader(gl.FRAGMENT_SHADER);
+	}
+	else if (type == "vsh") {
+		shader = gl.createShader(gl.VERTEX_SHADER);
+	}
+	else {
+		return null;
+	}
+	
+	gl.shaderSource(shader, str);
+	gl.compileShader(shader);
+
+	if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {	
+		alert(gl.getShaderInfoLog(shader));
+		return null;
+	}
+
+	return shader;
+} //}}}
+function nameFromLine(line) { //{{{
+	//returns lowerCamelCase property name from shader line
+	var fullName = line.split(" ")[2];
+	return fullName.slice(0, fullName.search(";"));
+} //}}}
+//}}}
+//{{{ Interface Functions
+function onPan(ev,canvas,displaylog) { //{{{
+	ev.preventDefault();
+	if (ev.type == 'panstart') {
+		canvas.lastDeltaX = 0;
+		canvas.lastDeltaY = 0;
+	}
+	if (ev.srcEvent.shiftKey || ev.pointers.length == 2) {
+		var deltaX = (canvas.lastDeltaX - ev.deltaX) / canvas.clientWidth / canvas.zoom * -2 * canvas.controlsensitivity;
+		var deltaY = (canvas.lastDeltaY - ev.deltaY) / canvas.clientHeight / canvas.zoom * -2 * canvas.controlsensitivity;
+		
+		if (canvas.twod) {
+			canvas.translation[0] += Math.cos(radians(canvas.rotation[0])) * deltaX - Math.sin(radians(0)) * deltaY;
+			canvas.translation[1] += Math.sin(radians(canvas.rotation[0])) * deltaX + Math.cos(radians(0)) * deltaY;
+		}
+		else {
+			canvas.translation[0] += Math.cos(radians(canvas.rotation[0])) * deltaX - Math.sin(radians(canvas.rotation[0])) * deltaY;
+			canvas.translation[1] += Math.sin(radians(canvas.rotation[0])) * deltaX + Math.cos(radians(canvas.rotation[0])) * deltaY;
+		}
+	}
+	else {
+		canvas.rotation[0] += degrees((canvas.lastDeltaX - ev.deltaX) / canvas.clientWidth / canvas.zoom * -2 * canvas.controlsensitivity);
+		canvas.rotation[1] += degrees((canvas.lastDeltaY - ev.deltaY) / canvas.clientHeight / canvas.zoom * -2 * canvas.controlsensitivity);
+		
+		if (canvas.rotation[0] > 360) {canvas.rotation[0] -= 360};
+		if (canvas.rotation[0] < -360) {canvas.rotation[0] += 360};
+		if (canvas.rotation[1] > 180) {canvas.rotation[1] -= 360};
+		if (canvas.rotation[1] < -180) {canvas.rotation[1] += 360};
+		
+		canvas.rotation[0] = clamp(canvas.rotation[0], canvas.rotationAzimuthBounds[0], canvas.rotationAzimuthBounds[1]);
+		canvas.rotation[1] = clamp(canvas.rotation[1], canvas.rotationElevationBounds[0], canvas.rotationElevationBounds[1])
+	}
+	canvas.lastDeltaX = ev.deltaX;
+	canvas.lastDeltaY = ev.deltaY;
+	
+	if (displaylog) console.log(canvas.rotation);
+} //}}}
+function onPinch(ev,canvas,displaylog) { //{{{
+	ev.preventDefault();
+	if (ev.type == 'pinchstart') {
+		canvas.zoomLast = canvas.zoom;
+	}
+	else {
+		canvas.zoom = clamp(ev.scale * canvas.zoomLast, canvas.zoomBounds[0], canvas.zoomBounds[1]);
+		if (displaylog) console.log(canvas.zoom);
+	}
+} //}}}
+function onZoom(ev,canvas,displaylog) { //{{{
+	ev.preventDefault();
+	var delta = clamp(clamp(ev.scale || ev.wheelDelta || -ev.detail, -1, 1) * canvas.controlsensitivity * canvas.zoom / 20, -1.0, 1.0);
+	canvas.zoom = clamp(canvas.zoom + delta, canvas.zoomBounds[0], canvas.zoomBounds[1]);
+	
+	if (displaylog) console.log(canvas.zoom);
+} //}}}
+//}}}
+//{{{ Drawing Functions
+function updateCameraMatrix(canvas) { //{{{
+    //Update view matrix and multiply with projection matrix to get the view-projection (camera) matrix.
+	var vMatrix = mat4.create();
+	var pMatrix = mat4.create();
+	var translateMatrix = mat4.create();
+	var rotationMatrix = mat4.create();
+	var azimuthRotationMatrix = mat4.create();
+	var elevationRotationMatrix = mat4.create();
+	var aspectRatio = canvas.clientWidth / canvas.clientHeight;
+
+	if (canvas.twod) {
+		mat4.ortho(pMatrix, -aspectRatio/canvas.zoom, aspectRatio/canvas.zoom, -1/canvas.zoom, 1/canvas.zoom, -1.0, 10000.0);
+	}
+	else {
+		mat4.perspective(pMatrix, 60 * Math.PI / 180, aspectRatio, 0.001, 10000.0);
+	}
+	
+	//Apply worldspace translation
+	mat4.translate(translateMatrix, translateMatrix, [canvas.translation[0], canvas.translation[2], canvas.translation[1]]);
+	mat4.multiply(vMatrix, translateMatrix, vMatrix);
+	
+	//Calculate rotation around camera focal point about worldspace origin
+	if (canvas.twod) {
+		mat4.rotate(azimuthRotationMatrix, azimuthRotationMatrix, radians(0), [0, 1, 0]);
+		mat4.rotate(elevationRotationMatrix, elevationRotationMatrix, radians(90), [1, 0, 0]);
+		mat4.multiply(rotationMatrix, elevationRotationMatrix, azimuthRotationMatrix);
+	}
+	else {
+		mat4.rotate(azimuthRotationMatrix, azimuthRotationMatrix, radians(canvas.rotation[0]), [0, 1, 0]);
+		mat4.rotate(elevationRotationMatrix, elevationRotationMatrix, radians(canvas.rotation[1]), [1, 0, 0]);
+		mat4.multiply(rotationMatrix, elevationRotationMatrix, azimuthRotationMatrix);
+	}
+	
+	//Apply rotation and scaling transform
+	mat4.multiply(vMatrix, rotationMatrix, vMatrix);
+	
+	//Apply screenspace translation
+	mat4.identity(translateMatrix);
+	mat4.translate(translateMatrix, translateMatrix, [0.0, 0.0, -1/canvas.zoom]);
+	mat4.multiply(vMatrix, translateMatrix, vMatrix);
+
+	//Apply projection matrix to get camera matrix
+	mat4.multiply(canvas.cameraMatrix, pMatrix, vMatrix);
+}//}}}
+function drawSceneGraphNode(canvas,node) { //{{{
+	if (!node["enabled"]) {
+		return;
+	}
+	if (node["texture"]) {
+		if (!node["texture"]["isLoaded"]) {
+			return;
+		}
+	}
+	var gl = canvas.gl;
+	bindAttributes(gl, node["shader"], node["buffers"]);
+	var mvpMatrix = mat4.create();
+	mat4.multiply(mvpMatrix, canvas.cameraMatrix, node["modelMatrix"]);
+	gl.uniformMatrix4fv(node["shader"]["uMVPMatrix"], false, mvpMatrix);
+	gl.uniform1f(node["shader"]["uAlpha"], node["alpha"]);
+	gl.uniform1i(node["shader"]["uMaskEnabled"], node["maskEnabled"]);
+	gl.uniform1f(node["shader"]["uMaskHeight"], node["maskHeight"]);
+	gl.uniform4fv(node["shader"]["uMaskColor"], node["maskColor"]);
+	if (node["texture"]) {
+		gl.activeTexture(gl.TEXTURE0);
+		gl.bindTexture(gl.TEXTURE_2D, node["texture"]);
+		gl.uniform1i(node["shader"]["uColorSampler"], 0);	
+	}
+	if (node["disableDepthTest"]) {
+		gl.disable(gl.DEPTH_TEST);
+	}
+	gl.lineWidth(node["lineWidth"]);
+	gl.blendFunc (gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
+	if  (node["useIndexBuffer"] == true) {
+		gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, node["buffers"][node["buffers"].length - 1]);
+		gl.drawElements(node["drawMode"], node["buffers"][node["buffers"].length - 1].numItems, gl.UNSIGNED_SHORT, 0);
+	}
+	else {
+		gl.drawArrays(node["drawMode"], 0, node["buffers"][0].numItems);
+	}	
+	gl.enable(gl.DEPTH_TEST);
+} //}}}
+function bindAttributes(gl,shaderProgram,bufferArray) { //{{{
+	gl.useProgram(shaderProgram);
+	var arrayNumber = 0;
+	for (var propertyName in shaderProgram) {
+		if (propertyName[0] == "a") {
+			if (bufferArray[arrayNumber].itemSize > 1) {
+				gl.bindBuffer(gl.ARRAY_BUFFER, bufferArray[arrayNumber]);
+				gl.vertexAttribPointer(shaderProgram[propertyName], bufferArray[arrayNumber].itemSize, gl.FLOAT, false, 0, 0);
+				arrayNumber++;
+			}
+		}
+	}
+} //}}}
+function draw(canvas,options) { //{{{
+	if (!canvas.nodes) {
+		canvas.drawHandler = window.requestAnimationFrame(function(time) {draw(canvas,options)});
+		return;
+	}
+	// Ensure canvas and gl viewport sizes are the same
+	var displayWidth  = canvas.clientWidth;
+	var displayHeight = canvas.clientHeight;
+	if (canvas.width  != displayWidth || canvas.height != displayHeight) {
+		canvas.width  = displayWidth;
+		canvas.height = displayHeight;
+		canvas.gl.viewport(0, 0, canvas.width, canvas.height);
+	}
+	
+	if (canvas.textcanvas) {
+		canvas.textcanvas.draw(canvas);
+	}
+
+	// Set clear color to black, fully opaque
+	var gl = canvas.gl;
+	var backgroundcolor = new RGBColor(options.getfieldvalue('backgroundcolor','lightcyan'));
+	if (backgroundcolor.ok) gl.clearColor(backgroundcolor.r/255.0, backgroundcolor.g/255.0, backgroundcolor.b/255.0, 1.0);
+	else throw Error(sprintf("s%s%s\n","initWebGL error message: cound not find out background color for curent canvas ",canvas));
+		
+	// Skip drawing of new frame if any texture is not yet loaded
+	var nodes = canvas.nodes;
+	for (var node in nodes) {
+		if (nodes[node]["texture"] && !nodes[node]["texture"]["isLoaded"]) {
+			canvas.drawHandler = window.requestAnimationFrame(function(time) {draw(canvas,options)});
+			return;
+		}
+	}
+	// Else, clear the color as well as the depth buffer for new frame
+	gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
+	
+	updateCameraMatrix(canvas);
+	
+	var drawPassNumber = 2;
+	for (var i = drawPassNumber - 1; i >= 0; i--) {
+		for (var node in nodes) {
+			if (nodes[node]["drawOrder"] == i) {
+				drawSceneGraphNode(canvas,nodes[node]);
+			}
+		}
+	}
+	canvas.drawHandler = window.requestAnimationFrame(function(time) {draw(canvas,options)});
+} //}}}
+//}}}
+function sprintf() {
+  //  discuss at: http://phpjs.org/functions/sprintf/
+  // original by: Ash Searle (http://hexmen.com/blog/)
+  // improved by: Michael White (http://getsprink.com)
+  // improved by: Jack
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Dj
+  // improved by: Allidylls
+  //    input by: Paulo Freitas
+  //    input by: Brett Zamir (http://brett-zamir.me)
+  //   example 1: sprintf("%01.2f", 123.1);
+  //   returns 1: 123.10
+  //   example 2: sprintf("[%10s]", 'monkey');
+  //   returns 2: '[    monkey]'
+  //   example 3: sprintf("[%'#10s]", 'monkey');
+  //   returns 3: '[####monkey]'
+  //   example 4: sprintf("%d", 123456789012345);
+  //   returns 4: '123456789012345'
+  //   example 5: sprintf('%-03s', 'E');
+  //   returns 5: 'E00'
+
+  var regex = /%%|%(\d+\$)?([\-+\'#0 ]*)(\*\d+\$|\*|\d+)?(?:\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g;
+  var a = arguments;
+  var i = 0;
+  var format = a[i++];
+
+  // pad()
+  var pad = function(str, len, chr, leftJustify) {
+    if (!chr) {
+      chr = ' ';
+    }
+    var padding = (str.length >= len) ? '' : new Array(1 + len - str.length >>> 0)
+      .join(chr);
+    return leftJustify ? str + padding : padding + str;
+  };
+
+  // justify()
+  var justify = function(value, prefix, leftJustify, minWidth, zeroPad, customPadChar) {
+    var diff = minWidth - value.length;
+    if (diff > 0) {
+      if (leftJustify || !zeroPad) {
+        value = pad(value, minWidth, customPadChar, leftJustify);
+      } else {
+        value = value.slice(0, prefix.length) + pad('', diff, '0', true) + value.slice(prefix.length);
+      }
+    }
+    return value;
+  };
+
+  // formatBaseX()
+  var formatBaseX = function(value, base, prefix, leftJustify, minWidth, precision, zeroPad) {
+    // Note: casts negative numbers to positive ones
+    var number = value >>> 0;
+    prefix = (prefix && number && {
+      '2'  : '0b',
+      '8'  : '0',
+      '16' : '0x'
+    }[base]) || '';
+    value = prefix + pad(number.toString(base), precision || 0, '0', false);
+    return justify(value, prefix, leftJustify, minWidth, zeroPad);
+  };
+
+  // formatString()
+  var formatString = function(value, leftJustify, minWidth, precision, zeroPad, customPadChar) {
+    if (precision !== null && precision !== undefined) {
+      value = value.slice(0, precision);
+    }
+    return justify(value, '', leftJustify, minWidth, zeroPad, customPadChar);
+  };
+
+  // doFormat()
+  var doFormat = function(substring, valueIndex, flags, minWidth, precision, type) {
+    var number, prefix, method, textTransform, value;
+
+    if (substring === '%%') {
+      return '%';
+    }
+
+    // parse flags
+    var leftJustify = false;
+    var positivePrefix = '';
+    var zeroPad = false;
+    var prefixBaseX = false;
+    var customPadChar = ' ';
+    var flagsl = flags.length;
+    var j;
+    for (j = 0; flags && j < flagsl; j++) {
+      switch (flags.charAt(j)) {
+      case ' ':
+        positivePrefix = ' ';
+        break;
+      case '+':
+        positivePrefix = '+';
+        break;
+      case '-':
+        leftJustify = true;
+        break;
+      case "'":
+        customPadChar = flags.charAt(j + 1);
+        break;
+      case '0':
+        zeroPad = true;
+        customPadChar = '0';
+        break;
+      case '#':
+        prefixBaseX = true;
+        break;
+      }
+    }
+
+    // parameters may be null, undefined, empty-string or real valued
+    // we want to ignore null, undefined and empty-string values
+    if (!minWidth) {
+      minWidth = 0;
+    } else if (minWidth === '*') {
+      minWidth = +a[i++];
+    } else if (minWidth.charAt(0) === '*') {
+      minWidth = +a[minWidth.slice(1, -1)];
+    } else {
+      minWidth = +minWidth;
+    }
+
+    // Note: undocumented perl feature:
+    if (minWidth < 0) {
+      minWidth = -minWidth;
+      leftJustify = true;
+    }
+
+    if (!isFinite(minWidth)) {
+      throw new Error('sprintf: (minimum-)width must be finite');
+    }
+
+    if (!precision) {
+      precision = 'fFeE'.indexOf(type) > -1 ? 6 : (type === 'd') ? 0 : undefined;
+    } else if (precision === '*') {
+      precision = +a[i++];
+    } else if (precision.charAt(0) === '*') {
+      precision = +a[precision.slice(1, -1)];
+    } else {
+      precision = +precision;
+    }
+
+    // grab value using valueIndex if required?
+    value = valueIndex ? a[valueIndex.slice(0, -1)] : a[i++];
+
+    switch (type) {
+    case 's':
+      return formatString(String(value), leftJustify, minWidth, precision, zeroPad, customPadChar);
+    case 'c':
+      return formatString(String.fromCharCode(+value), leftJustify, minWidth, precision, zeroPad);
+    case 'b':
+      return formatBaseX(value, 2, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'o':
+      return formatBaseX(value, 8, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'x':
+      return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'X':
+      return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad)
+        .toUpperCase();
+    case 'u':
+      return formatBaseX(value, 10, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'i':
+    case 'd':
+      number = +value || 0;
+      // Plain Math.round doesn't just truncate
+      number = Math.round(number - number % 1);
+      prefix = number < 0 ? '-' : positivePrefix;
+      value = prefix + pad(String(Math.abs(number)), precision, '0', false);
+      return justify(value, prefix, leftJustify, minWidth, zeroPad);
+    case 'e':
+    case 'E':
+    case 'f': // Should handle locales (as per setlocale)
+    case 'F':
+    case 'g':
+    case 'G':
+      number = +value;
+      prefix = number < 0 ? '-' : positivePrefix;
+      method = ['toExponential', 'toFixed', 'toPrecision']['efg'.indexOf(type.toLowerCase())];
+      textTransform = ['toString', 'toUpperCase']['eEfFgG'.indexOf(type) % 2];
+      value = prefix + Math.abs(number)[method](precision);
+      return justify(value, prefix, leftJustify, minWidth, zeroPad)[textTransform]();
+    default:
+      return substring;
+    }
+  };
+
+  return format.replace(regex, doFormat);
+}
+function loadresultsfrombuffer(md,buffer,buffersize){
+//LOADRESULTSFROMBUFFER - load results of solution sequence from memory buffer 
+//
+//   Usage:
+//      loadresultsfrombuffer(md,buffer,buffersize);
+
+	//check number of inputs/outputs
+	if (arguments.length!=3) throw Error('loadresultsfrombuffer error message: wrong usage!');
+
+	if (!md.qmu.isdakota){
+
+		//initialize md.results if not a structure yet
+		if (MapIsEmpty(md.results)) md.results={};
+
+		//load results: 
+		structure=parseresultsfrombuffer(buffer,buffersize);
+
+		//load structure onto results: 
+		solutiontype=structure[0].SolutionType;
+		md.results[solutiontype]=structure;
+
+		return md;
+
+	}
+	else throw Error('loadresultsfrombuffer error message: qmu results not supported yet!');
+}
+function marshall(md){
+//MARSHALL - outputs a typed array buffer to be send to the issm module.
+//
+//   The routine creates a compatible binary stream from @model md
+//   This binary stream will be used for single cpu runs using the issm module.
+//
+//   Usage:
+//      fid=marshall(md)
+
+	if (md.verbose.solution){
+		console.log('marshalling file ' + md.miscellaneous.name + '.bin');
+	}
+
+	//open file for binary writing
+	var fid=new fileptr('mode','w');
+
+	//Go through all model fields: check that it is a class and call checkconsistency
+	for (field in md){
+
+		//Some properties do not need to be marshalled
+		if (field == 'results' | field =='radaroverlay' | field == 'toolkits' | field =='cluster' | field == 'flaim' | field == 'priv') continue;
+		
+		//Check that current field is a class
+		if(typeof md[field] == 'function'){
+			continue;
+		}
+
+		//Marshall current object
+		md[field].marshall(md,['md.'+field],fid);
+	}
+
+	//Last, write "md.EOF" to make sure that the binary file is not corrupt
+	WriteData(fid,'XXX','name','md.EOF','data',true,'format','Boolean');
+	return fid;
+}
+function parseresultsfrombuffer(buffer,buffersize){ //{{{
+//PARSERESULTSFROMDISK - ...
+//
+//   Usage:
+//      results=parseresultsfrombuffer(buffer,buffersize);
+
+	//Open file
+	results=[];
+	
+	var fid = new fileptr('mode','r','buffer',buffer,'buffersize',buffersize);
+
+	//Read fields until the end of the file.
+	result  = ReadData(fid);
+
+	if (MapIsEmpty(result))throw Error('no results found in binary memory buffer');
+	
+	var counter = 0;
+	var check_nomoresteps=0;
+	var step    = result['step'];
+	var index;
+
+	while (!MapIsEmpty(result)){
+
+		if (check_nomoresteps){
+			//check that the new result does not add a step, which would be an error: 
+			if (result['step']>=1)throw Error('parsing results for a steady-state core, which incorporates transient results!');
+		}
+
+		//Check step, increase counter if this is a new step
+		if(step!=result['step'] & result['step']>1){
+			counter = counter + 1;
+			step    = result['step'];
+		}
+
+		//Add result
+		if(result['step']==0){
+			//if we have a step = 0, this is a steady state solutoin, don't expect more steps. 
+			index = 0;
+			check_nomoresteps=1;
+		}
+		else if(result['step']==1){
+			index = 0;
+		}
+		else index = counter;
+
+		if(index>results.length-1)results.push({});
+		for(var i=results.length-1;i<index-1;i++)results[i]={};
+		results[index][result['fieldname']]=result['field'];
+		
+		//Get time and step
+		if(result['time']!=-9999){
+			results[index]['step']=result['step'];
+		}
+		if(result['time']!=-9999){
+			results[index]['time']=result['time'];
+		}
+
+		//read next result
+		result  = ReadData(fid);
+	}
+	return results;
+} // }}}
+function ReadData(fid){ //{{{
+//READDATA - ...
+//
+//   Usage:
+//      field=ReadData(fid)
+
+	//read field
+	var length=fid.fread(1,'int');
+	
+	var result={};
+
+	if (length!==-1){
+		fieldname=fid.fread(length,'char');
+		time=fid.fread(1,'double');
+		step=fid.fread(1,'int');
+		type=fid.fread(1,'int');
+		M=fid.fread(1,'int');
+
+		if (type==1) field=fid.fread(M,'double');
+		else if (type==2) field=fid.fread(M,'char');
+		else if (type==3) {
+			N=fid.fread(1,'int');
+			field=fid.fread(N*M,'double');
+		}
+		else throw Error(sprintf("%s%i",'ReadData error message: cannot read data of type ',type));
+
+		//Process units here FIXME: this should not be done here!
+		var yts=365.0*24.0*3600.0;
+		if (fieldname == 'BalancethicknessThickeningRate') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'HydrologyWaterVx') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'HydrologyWaterVy') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'Vx') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'Vy') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'Vz') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'Vel') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'BasalforcingsGroundediceMeltingRate') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'BasalforcingsFloatingiceMeltingRate') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'TotalSmb') for (var i=0;i<field.length;i++)field[i]= field[i]/Math.pow(10,12)*yts; //(GigaTon/year)
+		else if (fieldname == 'SmbMassBalance') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbPrecipitation') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbRunoff') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbCondensation') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbAccumulation') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbMelt') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'CalvingCalvingrate') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+
+		result['fieldname']=fieldname;
+		result['time']=time;
+		if (result['time']!=-9999) result['time']=time/yts;
+		result['step']=step;
+		result['field']=field;
+	}
+	return result;
+
+} // }}}
+function solve(md,solutionenum){
+//SOLVE - apply solution sequence for this model
+//
+//   Usage:
+//      solve(md,solutionenum,varargin)
+//      where varargin is a lit of paired arguments of string OR enums
+//
+//   solution types available comprise:
+//		 - StressbalanceSolutionEnum
+//		 - MasstransportSolutionEnum
+//		 - ThermalSolutionEnum
+//		 - SteadystateSolutionEnum
+//		 - TransientSolutionEnum
+//		 - BalancethicknessSolutionEnum
+//		 - BedSlopeSolutionEnum
+//		 - SurfaceSlopeSolutionEnum
+//		 - HydrologySolutionEnum
+//		 - FlaimSolutionEnum
+//
+//  extra options:
+//      - loadonly    : does not solve. only load results
+//      - runtimename : true or false (default is true), makes name unique
+//      - checkconsistency : 'yes' or 'no' (default is 'yes'), ensures checks on consistency of model
+//      - restart: 'directory name (relative to the execution directory) where the restart file is located.
+//      - callback: callback function to be called upon receiving the results from the server, or local computations. 
+//
+//   Examples:
+//      md=solve(md,StressbalanceSolutionEnum);
+
+	solutionstring=EnumToString(solutionenum);
+	
+	//recover and process solve options
+	if (solutionstring.slice(-8) !== 'Solution'){
+		throw Error(sprintf("%s%s%s\n",'solutionenum ',solutionstring,' not supported!'));
+	}
+	
+	//Process options
+	var args = Array.prototype.slice.call(arguments);
+	var options = new pairoptions(args.slice(2,args.length));
+	options.addfield('solutionenum',solutionenum);
+
+	//recover some fields
+	md.priv.solution=solutionenum;
+	cluster=md.cluster;
+
+	//check model consistency
+	if (options.getfieldvalue('checkconsistency','yes') == 'yes'){
+		if (md.verbose.solution){
+			console.log('checking model consistency');
+		}
+		if (solutionenum == FlaimSolutionEnum()){
+			md.priv.isconsistent=true;
+			md.mesh.checkconsistency(md,solutionenum);
+			md.flaim.checkconsistency(md,solutionenum);
+			if (md.priv.isconsistent==false){
+				throw error('solve error message: model not consistent, see messages above');
+			}
+		}
+		else{
+			ismodelselfconsistent(md);
+		}
+	}
+
+	//If we are restarting, actually use the provided runtime name:
+	restart=options.getfieldvalue('restart','');
+
+	//First, build a runtime name that is unique
+	if (restart==1 ){
+		//Leave the runtimename as is
+		}
+	else{
+		if (!(restart == '')){
+			md.priv.runtimename=restart;
+		}
+		else if (options.getfieldvalue('runtimename',true)){
+			c=new Date().getTime();
+			md.priv.runtimename=sprintf('%s-%g',md.miscellaneous.name,c);
+		}
+		else{
+			md.priv.runtimename=md.miscellaneous.name;
+		}
+	}
+
+	//if running qmu analysis, some preprocessing of dakota files using models
+	//fields needs to be carried out. 
+	if (md.qmu.isdakota){
+		throw Error("solve error message: qmu runs not supported yet!");
+		//md.preqmu(options);
+	}
+
+
+	//Do we load results only?
+	if (options.getfieldvalue('loadonly',false)){
+		loadresultsfromcluster(md);
+		return;
+	}
+
+	//Marshall into a binary array (fid) all the fields of model.
+	var fid = marshall(md);                                          // bin file
+	//deal with toolkits options: 
+	toolkitsstring= md.toolkits.ToolkitsFile(md.miscellaneous.name + '.toolkits'); // toolkits file
+
+	//callback function: 
+	function callbackfunction(){}; //default, do nothing if no callback requested.
+	if (options.getfieldvalue('callback',false)){
+		callbackfunction=options.getfieldvalue('callback');
+	}
+
+	if (cluster.classname() == 'local'){  //{{{
+
+		/*We are running locally on the machine, using the issm module:*/
+		console.log('running issm locally');
+		
+		//Call issm:
+		var outputs = issm(fid, toolkitsstring, solutionstring, md.miscellaneous.name); 
+		
+		//Recover output arguments: 
+		var outputbuffer = outputs[0]; var outputbuffersize = outputs[1];
+			
+		//Load results: 
+		md = loadresultsfrombuffer(md,outputbuffer,outputbuffersize); 
+		
+		//Call back? 
+		callbackfunction();
+
+		return md;
+
+	} //}}}
+	else { //{{{
+
+		/*We are running somewhere else on a computational server. Send the buffer to that server and retrieve output: */
+		cluster.UploadAndRun(md,callbackfunction,fid,toolkitsstring,solutionstring,md.miscellaneous.name,md.priv.runtimename);
+
+		return md;
+
+	} //}}}
+}
+function WriteData(fid,prefix){
+//WRITEDATA - write model field into binary buffer 
+//
+//   Usage:
+//      WriteData(fid,varargin);
+
+	//process options
+	var args = Array.prototype.slice.call(arguments);
+	var options = new pairoptions(args.slice(2,args.length));
+	var enumm;
+	var dataini;
+	var data;
+
+	//Get data properties
+	if (options.exist('object')){
+		//This is a object field, construct enum and data
+		obj       = options.getfieldvalue('object');
+		fieldname = options.getfieldvalue('fieldname');
+		name      = options.getfieldvalue('name',[prefix+'.'+fieldname ]);
+		if (options.exist('data')){
+			dataini = options.getfieldvalue('data');
+		}
+		else{
+			dataini  = obj[fieldname];
+		}
+	}
+	else{
+		//No processing required
+		dataini = options.getfieldvalue('data');
+		name = options.getfieldvalue('name');
+	}
+	if (IsArray(dataini)){
+	   data=dataini.slice(0);
+	}
+	else{
+		data=dataini;
+	}
+
+	format  = options.getfieldvalue('format');
+	mattype = options.getfieldvalue('mattype',0);    //only required for matrices
+	timeserieslength = options.getfieldvalue('timeserieslength',-1);
+
+	//Scale data if necesarry
+	if (options.exist('scale')){
+		scale = options.getfieldvalue('scale');
+		if (data.length==timeserieslength){
+			if (IsArray(data[0])){
+				for(var i=0;i<data.length-1;i++){
+					for(var j=0;j<data[0].length;j++){
+						data[i][j]=scale*data[i][j];
+					}
+				}
+			}
+			else{
+				for(var i=0;i<data.length-1;i++){
+					data[i]=scale*data[i];
+				}
+			}
+		}
+		else{
+			if (!IsArray(data)) data=data*scale;
+			else ArrayScale(data,scale);
+		}
+	}
+
+	if(IsArray(data)){
+		if(data.length == timeserieslength){
+			var yts=365.0*24.0*3600.0;
+			if (IsArray(data[0])){
+				for(var j=0;j<data[0].length;j++)data[timeserieslength-1][j]=data[timeserieslength-1][j]*yts;
+			}
+			else data[timeserieslength-1]=data[timeserieslength-1]*yts;
+		}
+	}
+
+	//Step 1: write the name to identify this record uniquely
+	fid.fwrite(name.length,'int'); 
+	fid.fwrite(name,'char'); 
+
+	//Step 2: write the data itself.
+	if (format == 'Boolean'){// {{{
+		if(IsArray(data)) throw  Error(sprintf("field '%s' cannot be marshalled as it has more than one element!",EnumToString(enumm)));
+
+		//first write length of record
+		fid.fwrite(4+4,'int');  //1 bool (disguised as an int)+code
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write integer
+		fid.fwrite(data,'int');  //send an int, not easy to send a bool
+	} // }}}
+	else if (format == 'Integer'){ // {{{
+		if(IsArray(data)) throw  Error(sprintf("field '%s' cannot be marshalled as it has more than one element!",EnumToString(enumm)));
+
+		//first write length of record
+		fid.fwrite(4+4,'int');  //1 integer + code
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write integer
+		fid.fwrite(data,'int'); 
+	} // }}}
+	else if (format == 'Double'){ // {{{
+		if(IsArray(data)) throw  Error(sprintf("field '%s' cannot be marshalled as it has more than one element!",EnumToString(enumm)));
+
+		//first write length of record
+		fid.fwrite(8+4,'int');  //1 double+code
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write double
+		fid.fwrite(data,'double'); 
+	} // }}}
+	else if (format == 'String'){ // {{{
+		//first write length of record
+		fid.fwrite(data.length+4+4,'int');  //string + string size + code
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write string
+		fid.fwrite(data.length,'int'); 
+		fid.fwrite(data,'char'); 
+	} // }}}
+	else if (format == 'BooleanMat'){ // {{{
+
+		//Get size
+		var s=[data.length,1];
+		if(IsArray(data[0]))s[1]=data[0].length;
+
+		//if matrix = NaN, then do not write anything
+		if (s[0]==1 & s[1]==1 & isNaN(data)){
+			s[0]=0; s[1]=0;
+		}
+		if (s[0]==1 & s[1]==1 & isNaN(data[0])){
+			s[0]=0; s[1]=0;
+		}
+
+		//first write length of record
+		fid.fwrite(4+4+8*s[0]*s[1]+4+4,'int');  //2 integers (32 bits) + the double matrix + code + matrix type
+
+		//write data code and matrix type: 
+		fid.fwrite(FormatToCode(format),'int'); 
+		fid.fwrite(mattype,'int');
+
+		//now write matrix
+		fid.fwrite(s[0],'int'); 
+		fid.fwrite(s[1],'int'); 
+		if (s[0]*s[1]) fid.fwrite(MatrixToList(data),'double'); //get to the "c" convention, hence the transpose
+	} // }}}
+	else if (format == 'IntMat'){ // {{{
+
+		//Get size
+		var s=[data.length,1];
+		if(IsArray(data[0]))s[1]=data[0].length;
+
+		//if matrix = NaN, then do not write anything
+		if (s[0]==1 & s[1]==1 & isNaN(data)){
+			s[0]=0; s[1]=0;
+		}
+		if (s[0]==1 & s[1]==1 & isNaN(data[0])){
+			s[0]=0; s[1]=0;
+		}
+
+		//first write length of record
+		fid.fwrite(4+4+8*s[0]*s[1]+4+4,'int');  //2 integers (32 bits) + the double matrix + code + matrix type
+
+		//write data code and matrix type: 
+		fid.fwrite(FormatToCode(format),'int'); 
+		fid.fwrite(mattype,'int');
+
+		//now write matrix
+		fid.fwrite(s[0],'int'); 
+		fid.fwrite(s[1],'int'); 
+		if (s[0]*s[1]) fid.fwrite(MatrixToList(data),'double'); //get to the "c" convention, hence the transpose
+
+	} // }}}
+	else if (format == 'DoubleMat'){ // {{{
+
+		//Get size
+		var s=[data.length,1];
+		if(IsArray(data[0]))s[1]=data[0].length;
+		if(typeof data == 'number'){s[0]=1; s[1]=1}
+
+		//if matrix = NaN, then do not write anything
+		if (s[0]==1 & s[1]==1 & isNaN(data)){
+			s[0]=0; s[1]=0;
+		}
+		if (s[0]==1 & s[1]==1 & isNaN(data[0])){
+			s[0]=0; s[1]=0;
+		}
+
+		//first write length of record
+		var recordlength=4+4+8*s[0]*s[1]+4+4; //2 integers (32 bits) + the double matrix + code + matrix type
+		if (recordlength>Math.pow(2,31)) throw Error(sprintf("field '%s' cannot be marshalled because it is larger than 2^31 bytes!",EnumToString(enumm)));
+		fid.fwrite(recordlength,'int');
+
+		//write data code and matrix type: 
+		fid.fwrite(FormatToCode(format),'int'); 
+		fid.fwrite(mattype,'int');
+
+		//now write matrix
+		fid.fwrite(s[0],'int'); 
+		fid.fwrite(s[1],'int'); 
+		if (s[0]*s[1]) fid.fwrite(MatrixToList(data),'double'); //get to the "c" convention, hence the transpose
+	} // }}}
+	else if (format == 'MatArray'){ // {{{
+
+		numrecords=data.length;
+
+		//first get length of record
+		recordlength=4+4; //number of records + code
+		for (var i=0;i<numrecords;i++){
+			matrix=data[i];
+			var s=[matrix.length,1];
+			if(IsArray(matrix[0]))s[1]=matrix[0].length;
+
+			recordlength=recordlength+4*2+ //row and col of matrix
+				s[0]*s[1]*8; //matrix of doubles
+		}
+
+		//write length of record
+		fid.fwrite(recordlength,'int'); 
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//write data, first number of records
+		fid.fwrite(numrecords,'int'); 
+
+		//write each matrix: 
+		for (var i=0;i<numrecords;i++){
+			matrix=data[i];
+			var s=[matrix.length,1];
+			if(IsArray(matrix[0]))s[1]=matrix[0].length;
+
+			fid.fwrite(s[0],'int'); 
+			fid.fwrite(s[1],'int'); 
+			fid.fwrite(MatrixToList(matrix),'double');
+		}
+	} // }}}
+	else if (format == 'StringArray'){ // {{{
+
+		//first get length of string array: 
+		num=data.length;
+		if ((typeof data[0] == 'numeric') & num==1 & isNaN(data[0])){
+			num = 0;
+		}
+
+		//now get length of record: 
+		recordlength=4+4; //for length of array + code
+		for (var i=0;i<num;i++){
+			string=data[i];
+			recordlength=recordlength+4+string.length; //for each string
+		}
+
+		//write length of record
+		fid.fwrite(recordlength,'int'); 
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write length of string array
+		fid.fwrite(num,'int'); 
+
+		//now write the strings
+		for (var i=0;i<num;i++){
+			string=data[i];
+			fid.fwrite(string.length,'int'); 
+			fid.fwrite(string,'char'); 
+		}
+	} // }}}
+	else { 
+		throw Error(sprintf("WriteData error message: data type: %s not supported yet! ('%s')",
+					format.toString(),EnumToString(enumm)));
+	}
+}
+
+function FormatToCode(format){ // {{{
+	//This routine takes the format string, and hardcodes it into an integer, which 
+	//is passed along the record, in order to identify the nature of the dataset being 
+	//sent.
+	if  (format == 'Boolean') code=1;
+	else if (format == 'Integer') code=2;
+	else if (format == 'Double') code=3;
+	else if (format == 'String') code=4;
+	else if (format == 'BooleanMat') code=5;
+	else if (format == 'IntMat') code=6;
+	else if (format == 'DoubleMat') code=7;
+	else if (format == 'MatArray') code=8;
+	else if (format == 'StringArray') code=9;
+	else throw Error('FormatToCode error message: data type not supported yet!');
+	return code;
+}// }}}
+function issmgslsolver(){
+//ISSMSOLVER - 
+//
+//   Usage:
+//      options=issmsolver(varargin);
+
+	//Retrieve options provided in varargin. First convert arguments to array:
+	var args = Array.prototype.slice.call(arguments);
+
+	//Then process options
+	var  options = new pairoptions(args.slice(1,args.length));
+
+	//default issmoptions options
+	var issmoptions={};
+	issmoptions['toolkit']='issm';
+	issmoptions['mat_type']=options.getfieldvalue('mat_type','dense');
+	issmoptions['vec_type']=options.getfieldvalue('vec_type','seq');
+	issmoptions['solver_type']=options.getfieldvalue('solver_type','gsl');
+
+	return issmoptions;
+}
+function TriMesh(md,domain,rifts, area){
+/*TriMesh 
+	   usage: var array = TriMesh(domain,rifts,area);
+	      where: array is made of [index,x,y,segments,segmentmarkers]
+		  and index,x,y defines a triangulation, segments is an array made 
+	      of exterior segments to the mesh domain outline, segmentmarkers is an array 
+		  flagging each segment, domain a js array defining the domain outline  (sames for 
+		  rifts) and area is the maximum area desired for any element of the resulting mesh.
+
+		  Ok, for now, we are not dealing with rifts. Also, the domain is made of only one 
+		  profile, this to avoid passing a double** pointer to js. 
+*/
+
+	//Dynamic allocations: {{{
+	//Retrieve domain arrays, and allocate on Module heap: 
+	
+	//input
+	var dx=new Float64Array(domain['x']); var nx=dx.length * dx.BYTES_PER_ELEMENT;
+	var dxPtr= Module._malloc(nx); var domainxHeap = new Uint8Array(Module.HEAPU8.buffer,dxPtr,nx);
+	domainxHeap.set(new Uint8Array(dx.buffer)); var domainx=domainxHeap.byteOffset;
+
+	var dy=new Float64Array(domain['y']); var ny=dy.length * dy.BYTES_PER_ELEMENT;
+	var dyPtr = Module._malloc(ny); var domainyHeap = new Uint8Array(Module.HEAPU8.buffer,dyPtr,ny);
+	domainyHeap.set(new Uint8Array(dy.buffer)); var domainy=domainyHeap.byteOffset;
+	
+	//output
+	var nel,indexlinear,index,nods,x,y;
+	var pnel= Module._malloc(4); 
+	var pindex= Module._malloc(4); 
+	var pnods= Module._malloc(4); 
+	var px= Module._malloc(4); 
+	var py= Module._malloc(4); 
+	var psegments= Module._malloc(4); 
+	var psegmentmarkers= Module._malloc(4); 
+	var pnsegs= Module._malloc(4); 
+	//}}}
+
+	//Declare TriMesh module: 
+	TriMeshModule = Module.cwrap('TriMeshModule','number',['number','number','number','number','number','number','number','number','number','number','number','number']);
+	
+	//Call TriMesh module: 
+	TriMeshModule(pindex,px,py,pnel,pnods,psegments,psegmentmarkers,pnsegs, domainx,domainy,dx.length,area);
+	
+	/*Dynamic copying from heap: {{{*/
+	//recover mesh: 
+	nel = Module.getValue(pnel, 'i32');
+	var indexptr = Module.getValue(pindex,'i32');
+	indexlinear = Module.HEAPF64.slice(indexptr /8, indexptr/8 + nel*3);
+	index = ListToMatrix(indexlinear,3);
+
+	nods = Module.getValue(pnods, 'i32');
+	var xptr = Module.getValue(px,'i32');
+	var yptr = Module.getValue(py,'i32');
+	x = Module.HEAPF64.slice(xptr /8, xptr/8 + nods);
+	y = Module.HEAPF64.slice(yptr /8, yptr/8 + nods);
+	
+	nsegs = Module.getValue(pnsegs, 'i32');
+	var segmentsptr = Module.getValue(psegments,'i32');
+	segmentslinear = Module.HEAPF64.slice(segmentsptr /8, segmentsptr/8 + nsegs*3);
+	segments = ListToMatrix(segmentslinear,3);
+	
+	var segmentmarkersptr = Module.getValue(psegmentmarkers,'i32');
+	segmentmarkers = Module.HEAPF64.slice(segmentmarkersptr /8, segmentmarkersptr/8 + nsegs);
+	/*}}}*/
+
+	var return_array=[index,x,y,segments,segmentmarkers];
+
+	/*Free ressources: */
+	Module._free(pindex); 
+	Module._free(indexlinear); 
+	Module._free(px); 
+	Module._free(x); 
+	Module._free(py); 
+	Module._free(y); 
+	Module._free(pnel); 
+	Module._free(pnods); 
+	Module._free(psegments); 
+	Module._free(psegmentmarkers); 
+	Module._free(pnsegs); 
+
+	return return_array;
+}
+function NodeConnectivity(elementsin,nods){
+/*NodeConnectivity 
+	   usage: var md.mesh.vertexconnectivity = NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+*/
+
+	//Dynamic allocations: {{{
+	//Retrieve elements and allocate on Module heap: 
+	
+	//input
+	var delements=new Int32Array(MatrixToList(elementsin)); var nelements=delements.length * delements.BYTES_PER_ELEMENT;
+	var delementsPtr= Module._malloc(nelements); var elementsHeap = new Uint8Array(Module.HEAPU8.buffer,delementsPtr,nelements);
+	elementsHeap.set(new Uint8Array(delements.buffer)); var elements=elementsHeap.byteOffset;
+
+	//output
+	var width,connectivitylinear,connectivity;
+	var pwidth= Module._malloc(4); 
+	var pnods= Module._malloc(4); 
+	var pconnectivity= Module._malloc(4); 
+	var nels=elementsin.length;
+	//}}}
+
+	//Declare NodeConnectivity module: 
+	NodeConnectivityModule = Module.cwrap('NodeConnectivityModule','number',['number','number','number','number']);
+	
+	//Call NodeConnectivity module: 
+	NodeConnectivityModule(pconnectivity,pnods,pwidth,elements,nels,nods);
+	
+	/*Dynamic copying from heap: {{{*/
+	//recover mesh: 
+	width = Module.getValue(pwidth, 'i32');
+	var connectivityptr = Module.getValue(pconnectivity,'i32');
+	connectivitylinear = Module.HEAPF64.slice(connectivityptr /8, connectivityptr/8 + nods*width);
+	connectivity = ListToMatrix(connectivitylinear,width);
+	/*}}}*/
+
+	/*Free ressources: */
+	Module._free(pconnectivity); 
+	Module._free(connectivitylinear); 
+	Module._free(pwidth); 
+	Module._free(pnods); 
+
+	return connectivity;
+}
+function ContourToMesh(indexin,xin,yin,contour,interptype,edgevalue){
+/* CONTOURTOMESH - Flag the elements or nodes inside a contour;
+	
+	      Usage: ;
+	         [in_nod,in_elem]=ContourToMesh(index,x,y,contourname,interptype,edgevalue);
+	
+	         index,x,y: mesh triangulation
+	         contourname: name of .exp file containing the contours
+	         interptype: string definining type of interpolation ('element', or 'node')
+	         edgevalue: integer (0, 1 or 2) defining the value associated to the nodes on the edges of the polygons.
+	         in_nod: vector of flags (0 or 1), of size nods if interptype is set to 'node' or 'element and node',
+	            or of size 0 otherwise.
+	         in_elem: vector of flags (0 or 1), of size nel if interptype is set to 'element' or 'element and node', 
+	            or of size 0 otherwise.
+	
+	      Example: 
+	         in_nod=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','node',1)
+	         in_elements=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element',0)
+	         return_values=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element and node',0); in_nodes=return_values[0]; in_elements=return_values[1];
+*/
+
+	//Dynamic allocations: {{{
+	//Retrieve elements and allocate on Module heap: 
+	
+	//input
+	
+	var dindex=new Int32Array(MatrixToList(indexin)); var nindex=dindex.length * dindex.BYTES_PER_ELEMENT;
+	var dindexPtr= Module._malloc(nindex); var indexHeap = new Uint8Array(Module.HEAPU8.buffer,dindexPtr,nindex);
+	indexHeap.set(new Uint8Array(dindex.buffer)); var index=indexHeap.byteOffset;
+
+	var dx=new Float64Array(xin); var nx=dx.length * dx.BYTES_PER_ELEMENT;
+	var dxPtr= Module._malloc(nx); var dxHeap = new Uint8Array(Module.HEAPU8.buffer,dxPtr,nx);
+	dxHeap.set(new Uint8Array(dx.buffer)); var x=dxHeap.byteOffset;
+	
+	var dy=new Float64Array(yin); var ny=dy.length * dy.BYTES_PER_ELEMENT;
+	var dyPtr= Module._malloc(nx); var dyHeap = new Uint8Array(Module.HEAPU8.buffer,dyPtr,ny);
+	dyHeap.set(new Uint8Array(dy.buffer)); var y=dyHeap.byteOffset;
+	
+	var dcontourx=new Float64Array(contour['x']); var nx=dcontourx.length * dcontourx.BYTES_PER_ELEMENT;
+	var dcontourxPtr= Module._malloc(nx); var contourxHeap = new Uint8Array(Module.HEAPU8.buffer,dcontourxPtr,nx);
+	contourxHeap.set(new Uint8Array(dcontourx.buffer)); var contourx=contourxHeap.byteOffset;
+
+	var dcontoury=new Float64Array(contour['y']); var ny=dcontoury.length * dcontoury.BYTES_PER_ELEMENT;
+	var dcontouryPtr = Module._malloc(ny); var contouryHeap = new Uint8Array(Module.HEAPU8.buffer,dcontouryPtr,ny);
+	contouryHeap.set(new Uint8Array(dcontoury.buffer)); var contoury=contouryHeap.byteOffset;
+	
+	nel=indexin.length;
+	nods=xin.length;
+	contour_nods=dcontourx.length;
+
+	//output
+	var in_nod;
+	var pin_nod= Module._malloc(4); 
+	var in_nel;
+	var pin_nel= Module._malloc(4); 
+	//}}}
+
+	//Declare ContourToMesh module: 
+	ContourToMeshModule = Module.cwrap('ContourToMeshModule','number',['number','number','number','number','number','number','number','string','number','number','number']);
+	
+	//Call ContourToMesh module: 
+	ContourToMeshModule(pin_nod,pin_nel,index,x,y,contourx,contoury,interptype,nel, nods, contour_nods, edgevalue);
+
+	/*Dynamic copying from heap: {{{*/
+	if(interptype == 'node'){
+		var in_nodptr = Module.getValue(pin_nod,'i32');
+		in_nod = Module.HEAPF64.slice(in_nodptr /8, in_nodptr/8 + nods);
+	}
+	else if (interptype == 'element'){
+		var in_nelptr = Module.getValue(pin_nel,'i32');
+		in_nel = Module.HEAPF64.slice(in_nelptr /8, in_nelptr/8 + nel);
+	}
+	else if (interptype == 'element and node'){
+		var in_nodptr = Module.getValue(pin_nod,'i32');
+		in_nod = Module.HEAPF64.slice(in_nodptr /8, in_nodptr/8 + nods);
+		var in_nelptr = Module.getValue(pin_nel,'i32');
+		in_nel = Module.HEAPF64.slice(in_nelptr /8, in_nelptr/8 + nel);
+	}
+	else throw Error('ContourToMeshModule error message: wrong interpolation type!');
+	/*}}}*/
+
+	/*Free ressources: */
+	Module._free(pin_nod); 
+	Module._free(pin_nel); 
+	
+	if(interptype == 'node'){
+		return in_nod;
+	}
+	else if (interptype == 'element'){
+		return in_nel;
+	}
+	else if (interptype == 'element and node'){
+		return [in_nod,in_nel];
+	}
+}
+function ElementConnectivity(elementsin,nodeconnectivityin){
+/*ElementConnectivity 
+	   usage: var md.mesh.elementconnectivity= ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+*/
+
+	//Dynamic allocations: {{{
+	//Retrieve elements and allocate on Module heap: 
+	
+	//input
+	nel=elementsin.length;
+	nods=nodeconnectivityin.length;
+	width=nodeconnectivityin[0].length;
+	
+	var delements=new Int32Array(MatrixToList(elementsin)); var nelements=delements.length * delements.BYTES_PER_ELEMENT;
+	var delementsPtr= Module._malloc(nelements); var elementsHeap = new Uint8Array(Module.HEAPU8.buffer,delementsPtr,nelements);
+	elementsHeap.set(new Uint8Array(delements.buffer)); var elements=elementsHeap.byteOffset;
+	
+	var dnodeconnectivity=new Int32Array(MatrixToList(nodeconnectivityin)); var nnodeconnectivity=dnodeconnectivity.length * dnodeconnectivity.BYTES_PER_ELEMENT;
+	var dnodeconnectivityPtr= Module._malloc(nnodeconnectivity); var nodeconnectivityHeap = new Uint8Array(Module.HEAPU8.buffer,dnodeconnectivityPtr,nnodeconnectivity);
+	nodeconnectivityHeap.set(new Uint8Array(dnodeconnectivity.buffer)); var nodeconnectivity=nodeconnectivityHeap.byteOffset;
+
+	//output
+	var connectivitylinear,connectivity;
+	var pconnectivity= Module._malloc(4); 
+	//}}}
+
+	//Declare ElementConnectivity module: 
+	ElementConnectivityModule = Module.cwrap('ElementConnectivityModule','number',['number','number','number','number','number','number']);
+	
+	//Call ElementConnectivity module: 
+	ElementConnectivityModule(pconnectivity,elements, nodeconnectivity, nel, nods, width);
+	
+	/*Dynamic copying from heap: {{{*/
+	//recover mesh: 
+	var connectivityptr = Module.getValue(pconnectivity,'i32');
+	connectivitylinear = Module.HEAPF64.slice(connectivityptr /8, connectivityptr/8 + nel*3);
+	connectivity = ListToMatrix(connectivitylinear,3);
+	/*}}}*/
+
+	/*Free ressources: */
+	Module._free(pconnectivity); 
+	Module._free(connectivitylinear); 
+
+	return connectivity;
+}
+function InterpFromMeshToMesh2d(indexin,xin,yin,datain,x_interpin,y_interpin){
+
+/* INTERFROMMESHTOMESH2D - interpolation from a 2d triangular mesh onto a list of point
+  
+  This function interpolates a field defined on a Delaunay triangulation onto a list of points.
+
+  Usage:
+	  var data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp); or
+	  var data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp,default_value);
+
+	  index             : index of the mesh where data is defined
+	  x,y               : coordinates of the nodes where data is defined
+	  data              : matrix holding the data to be interpolated onto the mesh. (one column per field)
+	  x_interp,y_interp : coordinates of the points onto which we interpolate.
+	  default_value     : default value if point is outsite of triangulation (instead of linear interpolation)
+	  data_interp       : vector of mesh interpolated data.
+
+*/
+
+	/*Figure out default_value: */
+	if (arguments.length==7)default_value=arguments[6];
+	else default_value=0;
+	
+	//Dynamic allocations: {{{
+	//Retrieve elements and allocate on Module heap: 
+	
+	//input
+	
+	var dindex=new Int32Array(MatrixToList(indexin)); var nindex=dindex.length * dindex.BYTES_PER_ELEMENT;
+	var dindexPtr= Module._malloc(nindex); var indexHeap = new Uint8Array(Module.HEAPU8.buffer,dindexPtr,nindex);
+	indexHeap.set(new Uint8Array(dindex.buffer)); var index=indexHeap.byteOffset;
+
+	var dx=new Float64Array(xin); var nx=dx.length * dx.BYTES_PER_ELEMENT;
+	var dxPtr= Module._malloc(nx); var dxHeap = new Uint8Array(Module.HEAPU8.buffer,dxPtr,nx);
+	dxHeap.set(new Uint8Array(dx.buffer)); var x=dxHeap.byteOffset;
+	
+	var dy=new Float64Array(yin); var ny=dy.length * dy.BYTES_PER_ELEMENT;
+	var dyPtr= Module._malloc(nx); var dyHeap = new Uint8Array(Module.HEAPU8.buffer,dyPtr,ny);
+	dyHeap.set(new Uint8Array(dy.buffer)); var y=dyHeap.byteOffset;
+	
+	var ddata=new Float64Array(datain); var ndata=ddata.length * ddata.BYTES_PER_ELEMENT;
+	var ddataPtr= Module._malloc(ndata); var ddataHeap = new Uint8Array(Module.HEAPU8.buffer,ddataPtr,ndata);
+	ddataHeap.set(new Uint8Array(ddata.buffer)); var data=ddataHeap.byteOffset;
+	
+	var dx_interp=new Float64Array(x_interpin); var nx_interp=dx_interp.length * dx_interp.BYTES_PER_ELEMENT;
+	var dx_interpPtr= Module._malloc(nx_interp); var dx_interpHeap = new Uint8Array(Module.HEAPU8.buffer,dx_interpPtr,nx_interp);
+	dx_interpHeap.set(new Uint8Array(dx_interp.buffer)); var x_interp=dx_interpHeap.byteOffset;
+	
+	var dy_interp=new Float64Array(y_interpin); var ny_interp=dy_interp.length * dy_interp.BYTES_PER_ELEMENT;
+	var dy_interpPtr= Module._malloc(ny_interp); var dy_interpHeap = new Uint8Array(Module.HEAPU8.buffer,dy_interpPtr,ny_interp);
+	dy_interpHeap.set(new Uint8Array(dy_interp.buffer)); var y_interp=dy_interpHeap.byteOffset;
+	
+	nel=indexin.length;
+	nods=xin.length;
+	nods_interp=x_interpin.length;
+
+	//output
+	var data_interp;
+	var pdata_interp= Module._malloc(4); 
+	//}}}
+
+	//Declare InterpFromMeshToMesh2d module: 
+	InterpFromMeshToMesh2dModule = Module.cwrap('InterpFromMeshToMesh2dModule','number',['number','number','number','number','number','number','number','number','number','number','number']);
+	
+	//Call InterpFromMeshToMesh2d module: 
+	InterpFromMeshToMesh2dModule(pdata_interp,index,x,y,data,x_interp,y_interp,nel,nods,nods_interp,default_value);
+	
+	/*Dynamic copying from heap: {{{*/
+	//recover mesh: 
+	var data_interpptr = Module.getValue(pdata_interp,'i32');
+	data_interp = Module.HEAPF64.slice(data_interpptr /8, data_interpptr/8 + nods_interp);
+	/*}}}*/
+
+	/*Free ressources: */
+	Module._free(pdata_interp); 
+
+	return data_interp;
+}
+function IssmConfig(string){
+/*IssmConfig 
+	   usage: var config = IssmConfig('_HAVE_PETSC_');
+*/
+
+	//output
+	var pvalue= Module._malloc(4); 
+	var psvalue= Module._malloc(4); 
+
+	//Declare IssmConfig module: 
+	IssmConfigModule = Module.cwrap('IssmConfigModule','number',['number','string','string']);
+	
+	//Call IssmConfig module: 
+	IssmConfigModule(pvalue, psvalue, string);
+	
+	/*Dynamic copying from heap: {{{*/
+	var value = Module.getValue(pvalue, 'double');
+	/*}}}*/
+
+	/*Free ressources: */
+	Module._free(pvalue); 
+
+	return value;
+}
+function EnumToString(enumin){
+/*EnumToString 
+	   usage: var string = EnumToString(enumin);
+*/
+
+	var pstring= Module._malloc(4); 
+
+	//Declare EnumToString module: 
+	EnumToStringModule = Module.cwrap('EnumToStringModule','number',['number','number']);
+	
+	//Call EnumToString module: 
+	EnumToStringModule(pstring, enumin);
+	
+	string_ptr= Module.getValue(pstring,'i32');
+
+	/*Free ressources: */
+	Module._free(pstring); 
+	
+	return UTF8ToString(string_ptr);
+}
+function StringToEnum(string){
+/*StringToEnum 
+	   usage: var enum = StringToEnum(string);
+*/
+
+	var penum= Module._malloc(4); 
+
+	//Declare StringToEnum module: 
+	StringToEnumModule = Module.cwrap('StringToEnumModule','number',['number','string']);
+	
+	//Call StringToEnum module: 
+	StringToEnumModule(penum, string);
+	
+	enumout= Module.getValue(penum,'double');
+
+	/*Free ressources: */
+	Module._free(penum); 
+	
+	return enumout;
+}
+function issm(fid,toolkitstring,solutionstring,modelname){
+/*issm 
+	   usage: var output = issm(fid,toolkitstring);
+	      where: fid is a pointer to a memory buffer created by marshall, toolkitstring is a toolkits 
+		  string created by ToolkitsToFile and 
+		  output is a binary buffer to be read by loadresultsfromcluster.
+*/
+	
+	/*variables: */
+	var poutput,output,poutputsize,outputsize;
+	var dbinaryPtr,binHeap,binary,binarybuffer,nb
+
+	/*recover input buffer: */
+	binarybuffer=fid.rawbuffer(); //binarybuffer is now an arraybuffer
+	nb = fid.ptr; //size of array buffer in bytes.
+
+	/*dyanmically allocate the raw buffer onto the Module heap: */
+	dbinaryPtr= Module._malloc(nb); binHeap = new Uint8Array(Module.HEAPU8.buffer,dbinaryPtr,nb);
+	binHeap.set(new Uint8Array(binarybuffer)); binary=binHeap.byteOffset;
+
+	/*allocate output pointers: */
+	poutputsize = Module._malloc(4); 
+	poutput = Module._malloc(4); 
+
+	//Declare TriMesh module: 
+	issmmodule= Module.cwrap('IssmModule','number',['number','number','number','number','string','string','string']);
+	
+	//Call issm:
+	issmmodule(poutput, poutputsize,binary, nb, toolkitstring,solutionstring,modelname);
+
+	//recover outputs from pointers: 
+	var outputsize = Module.getValue(poutputsize,'i32');
+	
+	var outputptr = Module.getValue(poutput,'i32');
+	output = Module.HEAP8.slice(outputptr, outputptr + outputsize);
+	
+	return [output,outputsize];
+}
+var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=function print(x){process["stdout"].write(x+"\n")};if(!Module["printErr"])Module["printErr"]=function printErr(x){process["stderr"].write(x+"\n")};var nodeFS=require("fs");var nodePath=require("path");Module["read"]=function read(filename,binary){filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);if(!ret&&filename!=nodePath["resolve"](filename)){filename=path.join(__dirname,"..","src",filename);ret=nodeFS["readFileSync"](filename)}if(ret&&!binary)ret=ret.toString();return ret};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module["load"]=function load(f){globalEval(read(f))};if(!Module["thisProgram"]){if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function read(){throw"no read() available (jsc?)"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.log(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}var Runtime={setTempRet0:(function(value){tempRet0=value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);return Module["dynCall_"+sig].apply(null,args)}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i<Runtime.functionPointers.length;i++){if(!Runtime.functionPointers[i]){Runtime.functionPointers[i]=func;return 2*(1+i)}}throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."}),removeFunction:(function(index){Runtime.functionPointers[(index-2)/2]=null}),warnOnce:(function(text){if(!Runtime.warnOnce.shown)Runtime.warnOnce.shown={};if(!Runtime.warnOnce.shown[text]){Runtime.warnOnce.shown[text]=1;Module.printErr(text)}}),funcWrappers:{},getFuncWrapper:(function(func,sig){assert(sig);if(!Runtime.funcWrappers[sig]){Runtime.funcWrappers[sig]={}}var sigCache=Runtime.funcWrappers[sig];if(!sigCache[func]){sigCache[func]=function dynCall_wrapper(){return Runtime.dynCall(sig,func,arguments)}}return sigCache[func]}),getCompilerSetting:(function(name){throw"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work"}),stackAlloc:(function(size){var ret=STACKTOP;STACKTOP=STACKTOP+size|0;STACKTOP=STACKTOP+15&-16;return ret}),staticAlloc:(function(size){var ret=STATICTOP;STATICTOP=STATICTOP+size|0;STATICTOP=STATICTOP+15&-16;return ret}),dynamicAlloc:(function(size){var ret=DYNAMICTOP;DYNAMICTOP=DYNAMICTOP+size|0;DYNAMICTOP=DYNAMICTOP+15&-16;if(DYNAMICTOP>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){DYNAMICTOP=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=Runtime.stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);if(returnType==="string")ret=Pointer_stringify(ret);if(stack!==0){if(opts&&opts.async){EmterpreterAsync.asyncFinalizers.push((function(){Runtime.stackRestore(stack)}));return}Runtime.stackRestore(stack)}return ret};var sourceRegex=/^function\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;function parseJSFunc(jsfunc){var parsed=jsfunc.toString().match(sourceRegex).slice(1);return{arguments:parsed[0],body:parsed[1],returnValue:parsed[2]}}var JSsource={};for(var fun in JSfuncs){if(JSfuncs.hasOwnProperty(fun)){JSsource[fun]=parseJSFunc(JSfuncs[fun])}}cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident);var numericArgs=argTypes.every((function(type){return type==="number"}));var numericRet=returnType!=="string";if(numericRet&&numericArgs){return cfunc}var argNames=argTypes.map((function(x,i){return"$"+i}));var funcstr="(function("+argNames.join(",")+") {";var nargs=argTypes.length;if(!numericArgs){funcstr+="var stack = "+JSsource["stackSave"].body+";";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(type==="number")continue;var convertCode=JSsource[type+"ToC"];funcstr+="var "+convertCode.arguments+" = "+arg+";";funcstr+=convertCode.body+";";funcstr+=arg+"="+convertCode.returnValue+";"}}var cfuncname=parseJSFunc((function(){return cfunc})).returnValue;funcstr+="var ret = "+cfuncname+"("+argNames.join(",")+");";if(!numericRet){var strgfy=parseJSFunc((function(){return Pointer_stringify})).returnValue;funcstr+="ret = "+strgfy+"(ret);"}if(!numericArgs){funcstr+=JSsource["stackRestore"].body.replace("()","(stack)")+";"}funcstr+="return ret})";return eval(funcstr)}}))();Module["ccall"]=ccall;Module["cwrap"]=cwrap;function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[_malloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr<stop;ptr+=4){HEAP32[ptr>>2]=0}stop=ret+size;while(ptr<stop){HEAP8[ptr++>>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i<size){var curr=slab[i];if(typeof curr==="function"){curr=Runtime.getFunctionIndex(curr)}type=singleType||types[i];if(type===0){i++;continue}if(type=="i64")type="i32";setValue(ret+i,curr,type);if(previousType!==type){typeSize=Runtime.getNativeTypeSize(type);previousType=type}i+=typeSize}return ret}Module["allocate"]=allocate;function getMemory(size){if(!staticSealed)return Runtime.staticAlloc(size);if(typeof _sbrk!=="undefined"&&!_sbrk.called||!runtimeInitialized)return Runtime.dynamicAlloc(size);return _malloc(size)}Module["getMemory"]=getMemory;function Pointer_stringify(ptr,length){if(length===0||!ptr)return"";var hasUtf=0;var t;var i=0;while(1){t=HEAPU8[ptr+i>>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;function UTF8ArrayToString(u8Array,idx){var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module["lengthBytesUTF8"]=lengthBytesUTF8;function UTF16ToString(ptr){var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit)}}Module["UTF16ToString"]=UTF16ToString;function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite<str.length*2?maxBytesToWrite/2:str.length;for(var i=0;i<numCharsToWrite;++i){var codeUnit=str.charCodeAt(i);HEAP16[outPtr>>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}Module["stringToUTF16"]=stringToUTF16;function lengthBytesUTF16(str){return str.length*2}Module["lengthBytesUTF16"]=lengthBytesUTF16;function UTF32ToString(ptr){var i=0;var str="";while(1){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)return str;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}}Module["UTF32ToString"]=UTF32ToString;function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}Module["stringToUTF32"]=stringToUTF32;function lengthBytesUTF32(str){var len=0;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343)++i;len+=4}return len}Module["lengthBytesUTF32"]=lengthBytesUTF32;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);var status=_malloc(4);var ret=Module["___cxa_demangle"](buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}}var i=3;var basicTypes={"v":"void","b":"bool","c":"char","s":"short","i":"int","l":"long","f":"float","d":"double","w":"wchar_t","a":"signed char","h":"unsigned char","t":"unsigned short","j":"unsigned int","m":"unsigned long","x":"long long","y":"unsigned long long","z":"..."};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre="";for(var a=0;a<i;a++)pre+=" ";Module.print(pre+"^")}function parseNested(){i++;if(func[i]==="K")i++;var parts=[];while(func[i]!=="E"){if(func[i]==="S"){i++;var next=func.indexOf("_",i);var num=func.substring(i,next)||0;parts.push(subs[num]||"?");i=next+1;continue}if(func[i]==="C"){parts.push(parts[parts.length-1]);i+=2;continue}var size=parseInt(func.substr(i));var pre=size.toString().length;if(!size||!pre){i--;break}var curr=func.substr(i+pre,size);parts.push(curr);subs.push(curr);i+=pre+size}i++;return parts}function parse(rawList,limit,allowVoid){limit=limit||Infinity;var ret="",list=[];function flushList(){return"("+list.join(", ")+")"}var name;if(func[i]==="N"){name=parseNested().join("::");limit--;if(limit===0)return rawList?[name]:name}else{if(func[i]==="K"||first&&func[i]==="L")i++;var size=parseInt(func.substr(i));if(size){var pre=size.toString().length;name=func.substr(i+pre,size);i+=pre+size}}first=false;if(func[i]==="I"){i++;var iList=parse(true);var iRet=parse(true,1,true);ret+=iRet[0]+" "+name+"<"+iList.join(", ")+">"}else{ret=name}paramLoop:while(i<func.length&&limit-->0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case"P":list.push(parse(true,1,true)[0]+"*");break;case"R":list.push(parse(true,1,true)[0]+"&");break;case"L":{i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case"A":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break};case"E":break paramLoop;default:ret+="?"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret){list.push(ret+"?")}return list}else{return ret+flushList()}}var parsed=func;try{if(func=="Object._main"||func=="_main"){return"main()"}if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case"n":return"operator new()";case"d":return"operator delete()"}parsed=parse()}catch(e){parsed+="?"}if(parsed.indexOf("?")>=0&&!hasLibcxxabi){Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling")}return parsed}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function enlargeMemory(){var OLD_TOTAL_MEMORY=TOTAL_MEMORY;var LIMIT=Math.pow(2,31);if(DYNAMICTOP>=LIMIT)return false;while(TOTAL_MEMORY<=DYNAMICTOP){if(TOTAL_MEMORY<LIMIT/2){TOTAL_MEMORY=alignMemoryPage(2*TOTAL_MEMORY)}else{var last=TOTAL_MEMORY;TOTAL_MEMORY=alignMemoryPage((3*TOTAL_MEMORY+LIMIT)/4);if(TOTAL_MEMORY<=last)return false}}TOTAL_MEMORY=Math.max(TOTAL_MEMORY,16*1024*1024);if(TOTAL_MEMORY>=LIMIT)return false;try{if(ArrayBuffer.transfer){buffer=ArrayBuffer.transfer(buffer,TOTAL_MEMORY)}else{var oldHEAP8=HEAP8;buffer=new ArrayBuffer(TOTAL_MEMORY)}}catch(e){return false}var success=_emscripten_replace_memory(buffer);if(!success)return false;Module["buffer"]=buffer;Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer);if(!ArrayBuffer.transfer){HEAP8.set(oldHEAP8)}return true}var byteLength;try{byteLength=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get);byteLength(new ArrayBuffer(4))}catch(e){byteLength=(function(buffer){return buffer.byteLength})}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;var totalMemory=64*1024;while(totalMemory<TOTAL_MEMORY||totalMemory<2*TOTAL_STACK){if(totalMemory<16*1024*1024){totalMemory*=2}else{totalMemory+=16*1024*1024}}totalMemory=Math.max(totalMemory,16*1024*1024);if(totalMemory!==TOTAL_MEMORY){TOTAL_MEMORY=totalMemory}assert(typeof Int32Array!=="undefined"&&typeof Float64Array!=="undefined"&&!!(new Int32Array(1))["subarray"]&&!!(new Int32Array(1))["set"],"JS engine does not provide full typed array support");var buffer;if(Module["buffer"]){buffer=Module["buffer"];assert(buffer.byteLength===TOTAL_MEMORY,"provided buffer should be "+TOTAL_MEMORY+" bytes, but it is "+buffer.byteLength)}else{buffer=new ArrayBuffer(TOTAL_MEMORY)}HEAP8=new Int8Array(buffer);HEAP16=new Int16Array(buffer);HEAP32=new Int32Array(buffer);HEAPU8=new Uint8Array(buffer);HEAPU16=new Uint16Array(buffer);HEAPU32=new Uint32Array(buffer);HEAPF32=new Float32Array(buffer);HEAPF64=new Float64Array(buffer);HEAP32[0]=255;assert(HEAPU8[0]===255&&HEAPU8[3]===0,"Typed arrays 2 must be run on a little-endian system");Module["HEAP"]=HEAP;Module["buffer"]=buffer;Module["HEAP8"]=HEAP8;Module["HEAP16"]=HEAP16;Module["HEAP32"]=HEAP32;Module["HEAPU8"]=HEAPU8;Module["HEAPU16"]=HEAPU16;Module["HEAPU32"]=HEAPU32;Module["HEAPF32"]=HEAPF32;Module["HEAPF64"]=HEAPF64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.dynCall("vi",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module["addOnPreRun"]=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i<array.length){var chr=array[i];HEAP8[buffer+i>>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i<array.length;i++){HEAP8[buffer++>>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<<bits-1)+value:Math.pow(2,bits)+value}function reSign(value,bits,ignore){if(value<=0){return value}var half=bits<=32?Math.abs(1<<bits-1):Math.pow(2,bits-1);if(value>=half&&(bits<=32||value>half)){value=-2*half+value}return value}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;var ASM_CONSTS=[];STATIC_BASE=8;STATICTOP=STATIC_BASE+160064;__ATINIT__.push({func:(function(){__GLOBAL__I_000101()})},{func:(function(){__GLOBAL__sub_I_Mesh_cpp()})},{func:(function(){__GLOBAL__sub_I_Geometry_cpp()})},{func:(function(){__GLOBAL__sub_I_iostream_cpp()})});allocate([156,164,0,0,227,209,0,0,208,99,0,0,0,0,0,0,156,164,0,0,41,210,0,0,144,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,164,0,0,248,250,0,0,152,0,0,0,0,0,0,0,156,164,0,0,11,251,0,0,168,0,0,0,0,0,0,0,116,164,0,0,19,251,0,0,156,164,0,0,170,251,0,0,168,0,0,0,0,0,0,0,156,164,0,0,163,4,1,0,208,0,0,0,0,0,0,0,116,164,0,0,182,4,1,0,156,164,0,0,189,4,1,0,208,0,0,0,0,0,0,0,156,164,0,0,178,5,1,0,248,0,0,0,0,0,0,0,156,164,0,0,215,5,1,0,168,0,0,0,0,0,0,0,156,164,0,0,24,6,1,0,248,0,0,0,0,0,0,0,156,164,0,0,13,7,1,0,40,1,0,0,0,0,0,0,116,164,0,0,29,7,1,0,156,164,0,0,232,7,1,0,248,0,0,0,0,0,0,0,156,164,0,0,3,8,1,0,208,0,0,0,0,0,0,0,156,164,0,0,21,8,1,0,96,1,0,0,0,0,0,0,156,164,0,0,236,8,1,0,168,0,0,0,0,0,0,0,156,164,0,0,78,9,1,0,128,1,0,0,0,0,0,0,156,164,0,0,181,10,1,0,168,0,0,0,0,0,0,0,156,164,0,0,53,12,1,0,160,1,0,0,0,0,0,0,116,164,0,0,71,12,1,0,156,164,0,0,31,13,1,0,168,0,0,0,0,0,0,0,156,164,0,0,198,14,1,0,168,0,0,0,0,0,0,0,196,164,0,0,110,15,1,0,0,0,0,0,2,0,0,0,168,0,0,0,2,0,0,0,232,1,0,0,2,4,0,0,116,164,0,0,224,20,1,0,196,164,0,0,209,21,1,0,0,0,0,0,3,0,0,0,200,1,0,0,2,0,0,0,24,2,0,0,2,48,0,0,32,2,0,0,2,0,0,0,116,164,0,0,75,22,1,0,116,164,0,0,67,22,1,0,196,164,0,0,139,24,1,0,0,0,0,0,3,0,0,0,200,1,0,0,2,0,0,0,24,2,0,0,2,48,0,0,80,2,0,0,2,0,0,0,116,164,0,0,137,28,1,0,196,164,0,0,141,29,1,0,0,0,0,0,3,0,0,0,200,1,0,0,2,0,0,0,24,2,0,0,2,48,0,0,128,2,0,0,2,0,0,0,116,164,0,0,57,30,1,0,196,164,0,0,116,33,1,0,0,0,0,0,3,0,0,0,200,1,0,0,2,0,0,0,24,2,0,0,2,48,0,0,176,2,0,0,2,0,0,0,116,164,0,0,29,37,1,0,196,164,0,0,95,40,1,0,0,0,0,0,2,0,0,0,96,1,0,0,2,0,0,0,32,2,0,0,2,0,0,0,196,164,0,0,113,41,1,0,0,0,0,0,2,0,0,0,96,1,0,0,2,0,0,0,80,2,0,0,2,0,0,0,156,164,0,0,75,42,1,0,96,1,0,0,0,0,0,0,156,164,0,0,153,43,1,0,96,1,0,0,0,0,0,0,156,164,0,0,236,44,1,0,96,1,0,0,0,0,0,0,156,164,0,0,241,45,1,0,96,1,0,0,0,0,0,0,156,164,0,0,224,46,1,0,96,1,0,0,0,0,0,0,156,164,0,0,164,48,1,0,88,3,0,0,0,0,0,0,196,164,0,0,63,49,1,0,0,0,0,0,2,0,0,0,168,0,0,0,2,0,0,0,232,1,0,0,2,4,0,0,156,164,0,0,149,49,1,0,88,3,0,0,0,0,0,0,156,164,0,0,247,54,1,0,128,1,0,0,0,0,0,0,156,164,0,0,191,55,1,0,128,1,0,0,0,0,0,0,156,164,0,0,200,56,1,0,184,3,0,0,0,0,0,0,196,164,0,0,36,57,1,0,0,0,0,0,2,0,0,0,168,0,0,0,2,0,0,0,232,1,0,0,2,4,0,0,156,164,0,0,124,57,1,0,184,3,0,0,0,0,0,0,156,164,0,0,102,58,1,0,184,3,0,0,0,0,0,0,156,164,0,0,62,63,1,0,208,0,0,0,0,0,0,0,156,164,0,0,41,64,1,0,208,0,0,0,0,0,0,0,156,164,0,0,41,65,1,0,208,0,0,0,0,0,0,0,156,164,0,0,73,66,1,0,208,0,0,0,0,0,0,0,156,164,0,0,11,67,1,0,208,0,0,0,0,0,0,0,156,164,0,0,100,68,1,0,208,0,0,0,0,0,0,0,156,164,0,0,51,69,1,0,208,0,0,0,0,0,0,0,156,164,0,0,41,70,1,0,208,0,0,0,0,0,0,0,156,164,0,0,29,71,1,0,208,0,0,0,0,0,0,0,156,164,0,0,73,74,1,0,208,0,0,0,0,0,0,0,156,164,0,0,126,75,1,0,208,0,0,0,0,0,0,0,156,164,0,0,109,76,1,0,208,0,0,0,0,0,0,0,156,164,0,0,62,79,1,0,208,0,0,0,0,0,0,0,156,164,0,0,71,82,1,0,168,0,0,0,0,0,0,0,156,164,0,0,191,153,1,0,128,98,0,0,0,0,0,0,156,164,0,0,64,170,1,0,248,0,0,0,0,0,0,0,156,164,0,0,180,191,1,0,96,1,0,0,0,0,0,0,156,164,0,0,208,203,1,0,184,3,0,0,0,0,0,0,196,164,0,0,87,211,1,0,0,0,0,0,2,0,0,0,168,0,0,0,2,0,0,0,56,5,0,0,2,4,0,0,116,164,0,0,102,211,1,0,196,164,0,0,246,211,1,0,0,0,0,0,2,0,0,0,168,0,0,0,2,0,0,0,56,5,0,0,2,4,0,0,196,164,0,0,141,212,1,0,0,0,0,0,2,0,0,0,168,0,0,0,2,0,0,0,56,5,0,0,2,4,0,0,196,164,0,0,82,213,1,0,0,0,0,0,2,0,0,0,168,0,0,0,2,0,0,0,56,5,0,0,2,4,0,0,196,164,0,0,3,214,1,0,0,0,0,0,2,0,0,0,168,0,0,0,2,0,0,0,56,5,0,0,2,4,0,0,196,164,0,0,5,215,1,0,0,0,0,0,2,0,0,0,96,1,0,0,2,0,0,0,176,2,0,0,2,0,0,0,196,164,0,0,102,216,1,0,0,0,0,0,2,0,0,0,96,1,0,0,2,0,0,0,128,2,0,0,2,0,0,0,156,164,0,0,74,231,1,0,16,6,0,0,0,0,0,0,116,164,0,0,200,231,1,0,156,164,0,0,210,231,1,0,16,6,0,0,0,0,0,0,156,164,0,0,82,232,1,0,16,6,0,0,0,0,0,0,156,164,0,0,252,233,1,0,16,6,0,0,0,0,0,0,156,164,0,0,161,234,1,0,16,6,0,0,0,0,0,0,156,164,0,0,109,235,1,0,16,6,0,0,0,0,0,0,156,164,0,0,229,235,1,0,16,6,0,0,0,0,0,0,156,164,0,0,119,236,1,0,16,6,0,0,0,0,0,0,156,164,0,0,231,236,1,0,16,6,0,0,0,0,0,0,156,164,0,0,202,239,1,0,16,6,0,0,0,0,0,0,156,164,0,0,228,246,1,0,16,6,0,0,0,0,0,0,156,164,0,0,249,247,1,0,16,6,0,0,0,0,0,0,156,164,0,0,12,249,1,0,16,6,0,0,0,0,0,0,156,164,0,0,16,251,1,0,16,6,0,0,0,0,0,0,156,164,0,0,116,252,1,0,16,6,0,0,0,0,0,0,156,164,0,0,61,253,1,0,16,6,0,0,0,0,0,0,156,164,0,0,150,254,1,0,16,6,0,0,0,0,0,0,156,164,0,0,104,0,2,0,16,6,0,0,0,0,0,0,156,164,0,0,152,2,2,0,16,6,0,0,0,0,0,0,156,164,0,0,82,3,2,0,16,6,0,0,0,0,0,0,156,164,0,0,176,3,2,0,16,6,0,0,0,0,0,0,156,164,0,0,164,5,2,0,16,6,0,0,0,0,0,0,156,164,0,0,113,11,2,0,16,6,0,0,0,0,0,0,156,164,0,0,51,12,2,0,16,6,0,0,0,0,0,0,156,164,0,0,211,12,2,0,16,6,0,0,0,0,0,0,156,164,0,0,65,13,2,0,16,6,0,0,0,0,0,0,156,164,0,0,173,13,2,0,16,6,0,0,0,0,0,0,156,164,0,0,21,14,2,0,16,6,0,0,0,0,0,0,156,164,0,0,212,17,2,0,16,6,0,0,0,0,0,0,156,164,0,0,48,18,2,0,16,6,0,0,0,0,0,0,156,164,0,0,200,18,2,0,16,6,0,0,0,0,0,0,156,164,0,0,241,20,2,0,16,6,0,0,0,0,0,0,156,164,0,0,137,21,2,0,16,6,0,0,0,0,0,0,156,164,0,0,78,23,2,0,16,6,0,0,0,0,0,0,156,164,0,0,164,25,2,0,208,0,0,0,0,0,0,0,156,164,0,0,116,26,2,0,16,6,0,0,0,0,0,0,156,164,0,0,22,28,2,0,88,8,0,0,0,0,0,0,116,164,0,0,179,28,2,0,156,164,0,0,186,28,2,0,88,8,0,0,0,0,0,0,156,164,0,0,72,30,2,0,88,8,0,0,0,0,0,0,156,164,0,0,91,31,2,0,88,8,0,0,0,0,0,0,156,164,0,0,113,47,2,0,88,3,0,0,0,0,0,0,156,164,0,0,118,49,2,0,184,3,0,0,0,0,0,0,156,164,0,0,65,50,2,0,184,3,0,0,0,0,0,0,0,0,0,0,0,0,240,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,154,153,153,153,153,153,233,191,205,204,204,204,204,204,220,63,205,204,204,204,204,204,220,63,205,204,204,204,204,204,220,63,205,204,204,204,204,204,220,63,238,126,249,198,76,241,138,191,29,54,173,178,122,56,127,63,29,54,173,178,122,56,127,63,29,54,173,178,122,56,127,63,29,54,173,178,122,56,127,63,139,8,63,15,121,124,153,63,139,8,63,15,121,124,153,63,139,8,63,15,121,124,153,63,139,8,63,15,121,124,153,63,139,8,63,15,121,124,153,63,139,8,63,15,121,124,153,63,133,76,30,60,175,2,159,63,66,140,175,248,138,175,120,63,66,140,175,248,138,175,120,63,66,140,175,248,138,175,120,63,66,140,175,248,138,175,120,63,104,126,211,223,118,217,135,63,104,126,211,223,118,217,135,63,104,126,211,223,118,217,135,63,104,126,211,223,118,217,135,63,102,70,103,231,128,108,134,63,102,70,103,231,128,108,134,63,102,70,103,231,128,108,134,63,102,70,103,231,128,108,134,63,102,70,103,231,128,108,134,63,102,70,103,231,128,108,134,63,76,191,153,156,1,65,123,63,76,191,153,156,1,65,123,63,76,191,153,156,1,65,123,63,76,191,153,156,1,65,123,63,86,97,201,41,123,132,91,63,86,97,201,41,123,132,91,63,86,97,201,41,123,132,91,63,86,97,201,41,123,132,91,63,1,52,112,48,47,229,130,63,1,52,112,48,47,229,130,63,1,52,112,48,47,229,130,63,1,52,112,48,47,229,130,63,172,6,117,80,7,117,128,63,172,6,117,80,7,117,128,63,172,6,117,80,7,117,128,63,172,6,117,80,7,117,128,63,172,6,117,80,7,117,128,63,172,6,117,80,7,117,128,63,172,6,117,80,7,117,128,63,172,6,117,80,7,117,128,63,172,6,117,80,7,117,128,63,172,6,117,80,7,117,128,63,172,6,117,80,7,117,128,63,172,6,117,80,7,117,128,63,0,0,0,0,0,0,208,63,37,9,32,29,109,176,193,63,37,9,32,29,109,176,193,63,37,9,32,29,109,176,193,63,54,249,39,42,174,187,226,63,0,0,0,0,0,0,208,63,97,85,85,85,85,85,197,63,97,85,85,85,85,85,197,63,97,85,85,85,85,85,197,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,208,63,115,36,73,146,36,73,178,63,115,36,73,146,36,73,178,63,115,36,73,146,36,73,178,63,76,146,36,73,146,36,233,63,136,73,117,238,175,192,185,63,136,73,117,238,175,192,185,63,158,173,98,4,212,143,217,63,136,73,117,238,175,192,185,63,158,173,98,4,212,143,217,63,158,173,98,4,212,143,217,63,0,0,0,0,0,0,208,63,79,85,85,85,85,85,213,63,79,85,85,85,85,85,213,63,79,85,85,85,85,85,213,63,0,0,0,0,0,0,0,0,76,23,93,116,209,69,183,63,76,23,93,116,209,69,183,63,76,23,93,116,209,69,183,63,67,23,93,116,209,69,231,63,150,222,182,108,164,189,219,63,150,222,182,108,164,189,219,63,168,133,36,77,110,9,177,63,150,222,182,108,164,189,219,63,168,133,36,77,110,9,177,63,168,133,36,77,110,9,177,63,220,198,215,92,27,120,203,63,220,198,215,92,27,120,203,63,220,198,215,92,27,120,203,63,200,85,188,244,214,203,214,63,163,247,104,147,55,211,164,63,163,247,104,147,55,211,164,63,163,247,104,147,55,211,164,63,136,81,92,148,101,24,236,63,200,13,27,26,47,161,212,63,200,13,27,26,47,161,212,63,200,13,27,26,47,161,212,63,201,181,118,141,149,227,160,63,225,166,50,137,210,75,227,63,115,248,15,189,79,66,209,63,225,166,50,137,210,75,227,63,115,248,15,189,79,66,209,63,184,115,21,97,22,76,176,63,184,115,21,97,22,76,176,63,225,166,50,137,210,75,227,63,115,248,15,189,79,66,209,63,184,115,21,97,22,76,176,63,184,115,21,97,22,76,176,63,184,115,21,97,22,76,176,63,184,115,21,97,22,76,176,63,0,0,0,0,0,0,208,63,37,9,32,29,109,176,193,63,37,9,32,29,109,176,193,63,54,249,39,42,174,187,226,63,37,9,32,29,109,176,193,63,0,0,0,0,0,0,208,63,97,85,85,85,85,85,197,63,97,85,85,85,85,85,197,63,0,0,0,0,0,0,224,63,97,85,85,85,85,85,197,63,0,0,0,0,0,0,208,63,115,36,73,146,36,73,178,63,115,36,73,146,36,73,178,63,76,146,36,73,146,36,233,63,115,36,73,146,36,73,178,63,136,73,117,238,175,192,185,63,158,173,98,4,212,143,217,63,136,73,117,238,175,192,185,63,158,173,98,4,212,143,217,63,136,73,117,238,175,192,185,63,158,173,98,4,212,143,217,63,0,0,0,0,0,0,208,63,79,85,85,85,85,85,213,63,79,85,85,85,85,85,213,63,0,0,0,0,0,0,0,0,79,85,85,85,85,85,213,63,76,23,93,116,209,69,183,63,76,23,93,116,209,69,183,63,67,23,93,116,209,69,231,63,76,23,93,116,209,69,183,63,150,222,182,108,164,189,219,63,168,133,36,77,110,9,177,63,150,222,182,108,164,189,219,63,168,133,36,77,110,9,177,63,150,222,182,108,164,189,219,63,168,133,36,77,110,9,177,63,220,198,215,92,27,120,203,63,220,198,215,92,27,120,203,63,200,85,188,244,214,203,214,63,220,198,215,92,27,120,203,63,163,247,104,147,55,211,164,63,163,247,104,147,55,211,164,63,136,81,92,148,101,24,236,63,163,247,104,147,55,211,164,63,200,13,27,26,47,161,212,63,200,13,27,26,47,161,212,63,201,181,118,141,149,227,160,63,200,13,27,26,47,161,212,63,115,248,15,189,79,66,209,63,225,166,50,137,210,75,227,63,184,115,21,97,22,76,176,63,184,115,21,97,22,76,176,63,225,166,50,137,210,75,227,63,115,248,15,189,79,66,209,63,184,115,21,97,22,76,176,63,184,115,21,97,22,76,176,63,225,166,50,137,210,75,227,63,115,248,15,189,79,66,209,63,184,115,21,97,22,76,176,63,184,115,21,97,22,76,176,63,0,0,0,0,0,0,208,63,37,9,32,29,109,176,193,63,54,249,39,42,174,187,226,63,37,9,32,29,109,176,193,63,37,9,32,29,109,176,193,63,0,0,0,0,0,0,208,63,97,85,85,85,85,85,197,63,0,0,0,0,0,0,224,63,97,85,85,85,85,85,197,63,97,85,85,85,85,85,197,63,0,0,0,0,0,0,208,63,115,36,73,146,36,73,178,63,76,146,36,73,146,36,233,63,115,36,73,146,36,73,178,63,115,36,73,146,36,73,178,63,158,173,98,4,212,143,217,63,136,73,117,238,175,192,185,63,136,73,117,238,175,192,185,63,158,173,98,4,212,143,217,63,158,173,98,4,212,143,217,63,136,73,117,238,175,192,185,63,0,0,0,0,0,0,208,63,79,85,85,85,85,85,213,63,0,0,0,0,0,0,0,0,79,85,85,85,85,85,213,63,79,85,85,85,85,85,213,63,76,23,93,116,209,69,183,63,67,23,93,116,209,69,231,63,76,23,93,116,209,69,183,63,76,23,93,116,209,69,183,63,168,133,36,77,110,9,177,63,150,222,182,108,164,189,219,63,150,222,182,108,164,189,219,63,168,133,36,77,110,9,177,63,168,133,36,77,110,9,177,63,150,222,182,108,164,189,219,63,220,198,215,92,27,120,203,63,200,85,188,244,214,203,214,63,220,198,215,92,27,120,203,63,220,198,215,92,27,120,203,63,163,247,104,147,55,211,164,63,136,81,92,148,101,24,236,63,163,247,104,147,55,211,164,63,163,247,104,147,55,211,164,63,200,13,27,26,47,161,212,63,201,181,118,141,149,227,160,63,200,13,27,26,47,161,212,63,200,13,27,26,47,161,212,63,184,115,21,97,22,76,176,63,184,115,21,97,22,76,176,63,115,248,15,189,79,66,209,63,225,166,50,137,210,75,227,63,115,248,15,189,79,66,209,63,225,166,50,137,210,75,227,63,184,115,21,97,22,76,176,63,184,115,21,97,22,76,176,63,184,115,21,97,22,76,176,63,184,115,21,97,22,76,176,63,225,166,50,137,210,75,227,63,115,248,15,189,79,66,209,63,0,0,0,0,0,0,208,63,54,249,39,42,174,187,226,63,37,9,32,29,109,176,193,63,37,9,32,29,109,176,193,63,37,9,32,29,109,176,193,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,224,63,97,85,85,85,85,85,197,63,97,85,85,85,85,85,197,63,97,85,85,85,85,85,197,63,0,0,0,0,0,0,208,63,76,146,36,73,146,36,233,63,115,36,73,146,36,73,178,63,115,36,73,146,36,73,178,63,115,36,73,146,36,73,178,63,158,173,98,4,212,143,217,63,158,173,98,4,212,143,217,63,158,173,98,4,212,143,217,63,136,73,117,238,175,192,185,63,136,73,117,238,175,192,185,63,136,73,117,238,175,192,185,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,0,0,79,85,85,85,85,85,213,63,79,85,85,85,85,85,213,63,79,85,85,85,85,85,213,63,67,23,93,116,209,69,231,63,76,23,93,116,209,69,183,63,76,23,93,116,209,69,183,63,76,23,93,116,209,69,183,63,168,133,36,77,110,9,177,63,168,133,36,77,110,9,177,63,168,133,36,77,110,9,177,63,150,222,182,108,164,189,219,63,150,222,182,108,164,189,219,63,150,222,182,108,164,189,219,63,200,85,188,244,214,203,214,63,220,198,215,92,27,120,203,63,220,198,215,92,27,120,203,63,220,198,215,92,27,120,203,63,136,81,92,148,101,24,236,63,163,247,104,147,55,211,164,63,163,247,104,147,55,211,164,63,163,247,104,147,55,211,164,63,201,181,118,141,149,227,160,63,200,13,27,26,47,161,212,63,200,13,27,26,47,161,212,63,200,13,27,26,47,161,212,63,184,115,21,97,22,76,176,63,184,115,21,97,22,76,176,63,184,115,21,97,22,76,176,63,184,115,21,97,22,76,176,63,184,115,21,97,22,76,176,63,184,115,21,97,22,76,176,63,115,248,15,189,79,66,209,63,225,166,50,137,210,75,227,63,115,248,15,189,79,66,209,63,225,166,50,137,210,75,227,63,115,248,15,189,79,66,209,63,225,166,50,137,210,75,227,63,169,76,88,232,122,182,251,63,21,51,144,69,167,121,226,63,21,51,144,69,167,121,226,63,21,51,144,69,167,121,226,63,59,86,99,69,74,45,239,191,218,79,177,92,21,222,236,63,218,79,177,92,21,222,236,63,218,79,177,92,21,222,236,63,30,52,209,223,26,195,216,63,30,52,209,223,26,195,216,63,30,52,209,223,26,195,216,63,61,100,158,86,103,96,200,63,61,100,158,86,103,96,200,63,61,100,158,86,103,96,200,63,95,171,130,55,8,241,216,63,26,181,42,55,36,90,205,63,26,181,42,55,36,90,205,63,26,181,42,55,36,90,205,63,154,79,20,186,200,235,203,63,154,79,20,186,200,235,203,63,154,79,20,186,200,235,203,63,93,192,194,163,77,228,201,63,93,192,194,163,77,228,201,63,93,192,194,163,77,228,201,63,168,232,251,166,125,139,182,63,168,232,251,166,125,139,182,63,168,232,251,166,125,139,182,63,247,11,128,79,72,94,194,63,247,11,128,79,72,94,194,63,247,11,128,79,72,94,194,63,247,11,128,79,72,94,194,63,247,11,128,79,72,94,194,63,247,11,128,79,72,94,194,63,180,166,73,160,124,148,208,191,247,239,121,134,152,119,211,63,247,239,121,134,152,119,211,63,247,239,121,134,152,119,211,63,255,78,92,208,136,167,183,63,255,78,92,208,136,167,183,63,255,78,92,208,136,167,183,63,164,68,253,5,168,24,193,63,164,68,253,5,168,24,193,63,164,68,253,5,168,24,193,63,164,68,253,5,168,24,193,63,164,68,253,5,168,24,193,63,164,68,253,5,168,24,193,63,130,94,20,240,192,254,207,63,199,152,13,115,1,21,197,63,199,152,13,115,1,21,197,63,199,152,13,115,1,21,197,63,155,150,199,75,48,226,198,63,155,150,199,75,48,226,198,63,155,150,199,75,48,226,198,63,168,78,124,89,214,200,172,63,168,78,124,89,214,200,172,63,168,78,124,89,214,200,172,63,37,126,11,226,234,37,168,63,37,126,11,226,234,37,168,63,37,126,11,226,234,37,168,63,37,126,11,226,234,37,168,63,37,126,11,226,234,37,168,63,37,126,11,226,234,37,168,63,107,118,124,23,6,137,197,63,203,232,135,131,181,201,171,63,203,232,135,131,181,201,171,63,203,232,135,131,181,201,171,63,247,55,96,227,42,65,193,63,247,55,96,227,42,65,193,63,247,55,96,227,42,65,193,63,204,132,253,113,121,168,193,63,204,132,253,113,121,168,193,63,204,132,253,113,121,168,193,63,81,169,122,222,186,174,166,63,81,169,122,222,186,174,166,63,81,169,122,222,186,174,166,63,220,152,227,245,47,49,179,63,220,152,227,245,47,49,179,63,220,152,227,245,47,49,179,63,220,152,227,245,47,49,179,63,220,152,227,245,47,49,179,63,220,152,227,245,47,49,179,63,243,127,148,143,115,34,196,63,229,150,34,66,211,72,176,63,229,150,34,66,211,72,176,63,229,150,34,66,211,72,176,63,106,116,143,60,120,24,180,63,106,116,143,60,120,24,180,63,106,116,143,60,120,24,180,63,32,105,216,206,111,33,192,63,32,105,216,206,111,33,192,63,32,105,216,206,111,33,192,63,32,105,216,206,111,33,192,63,32,105,216,206,111,33,192,63,32,105,216,206,111,33,192,63,158,243,248,36,242,30,169,63,158,243,248,36,242,30,169,63,158,243,248,36,242,30,169,63,158,243,248,36,242,30,169,63,158,243,248,36,242,30,169,63,158,243,248,36,242,30,169,63,26,235,35,134,224,181,144,63,26,235,35,134,224,181,144,63,26,235,35,134,224,181,144,63,26,235,35,134,224,181,144,63,26,235,35,134,224,181,144,63,26,235,35,134,224,181,144,63,113,69,99,143,119,78,90,63,113,69,99,143,119,78,90,63,113,69,99,143,119,78,90,63,237,94,74,205,175,26,193,63,237,94,74,205,175,26,193,63,237,94,74,205,175,26,193,63,200,14,97,214,217,77,186,63,200,14,97,214,217,77,186,63,200,14,97,214,217,77,186,63,246,46,50,56,94,11,176,63,246,46,50,56,94,11,176,63,246,46,50,56,94,11,176,63,99,93,149,249,39,58,152,63,99,93,149,249,39,58,152,63,99,93,149,249,39,58,152,63,163,146,243,163,223,52,183,63,163,146,243,163,223,52,183,63,163,146,243,163,223,52,183,63,163,146,243,163,223,52,183,63,163,146,243,163,223,52,183,63,163,146,243,163,223,52,183,63,238,147,207,94,31,93,162,63,238,147,207,94,31,93,162,63,238,147,207,94,31,93,162,63,238,147,207,94,31,93,162,63,238,147,207,94,31,93,162,63,238,147,207,94,31,93,162,63,25,230,176,161,141,209,166,63,25,230,176,161,141,209,166,63,25,230,176,161,141,209,166,63,195,238,210,60,157,95,179,63,195,238,210,60,157,95,179,63,195,238,210,60,157,95,179,63,143,23,176,138,36,223,187,63,143,23,176,138,36,223,187,63,143,23,176,138,36,223,187,63,34,12,233,212,135,219,174,63,34,12,233,212,135,219,174,63,34,12,233,212,135,219,174,63,69,190,84,146,138,223,133,63,69,190,84,146,138,223,133,63,69,190,84,146,138,223,133,63,237,192,231,182,164,230,177,63,237,192,231,182,164,230,177,63,237,192,231,182,164,230,177,63,237,192,231,182,164,230,177,63,237,192,231,182,164,230,177,63,237,192,231,182,164,230,177,63,227,133,106,133,130,211,163,63,227,133,106,133,130,211,163,63,227,133,106,133,130,211,163,63,227,133,106,133,130,211,163,63,227,133,106,133,130,211,163,63,227,133,106,133,130,211,163,63,75,242,89,200,96,182,158,63,75,242,89,200,96,182,158,63,75,242,89,200,96,182,158,63,75,242,89,200,96,182,158,63,75,242,89,200,96,182,158,63,75,242,89,200,96,182,158,63,36,223,233,3,189,73,183,63,226,172,231,135,182,1,148,63,226,172,231,135,182,1,148,63,226,172,231,135,182,1,148,63,136,143,202,113,223,221,171,63,136,143,202,113,223,221,171,63,136,143,202,113,223,221,171,63,40,203,114,103,71,223,180,63,40,203,114,103,71,223,180,63,40,203,114,103,71,223,180,63,116,77,33,3,82,0,181,63,116,77,33,3,82,0,181,63,116,77,33,3,82,0,181,63,19,9,188,220,193,163,171,63,19,9,188,220,193,163,171,63,19,9,188,220,193,163,171,63,254,100,114,240,190,74,140,63,254,100,114,240,190,74,140,63,254,100,114,240,190,74,140,63,206,144,184,98,185,86,176,63,206,144,184,98,185,86,176,63,206,144,184,98,185,86,176,63,206,144,184,98,185,86,176,63,206,144,184,98,185,86,176,63,206,144,184,98,185,86,176,63,228,17,46,212,19,221,158,63,228,17,46,212,19,221,158,63,228,17,46,212,19,221,158,63,228,17,46,212,19,221,158,63,228,17,46,212,19,221,158,63,228,17,46,212,19,221,158,63,224,183,151,211,157,135,155,63,224,183,151,211,157,135,155,63,224,183,151,211,157,135,155,63,224,183,151,211,157,135,155,63,224,183,151,211,157,135,155,63,224,183,151,211,157,135,155,63,154,247,50,145,21,104,163,63,154,247,50,145,21,104,163,63,154,247,50,145,21,104,163,63,210,233,226,232,184,19,173,63,210,233,226,232,184,19,173,63,210,233,226,232,184,19,173,63,194,198,78,54,247,244,182,63,194,198,78,54,247,244,182,63,194,198,78,54,247,244,182,63,108,140,55,68,242,177,178,63,108,140,55,68,242,177,178,63,108,140,55,68,242,177,178,63,160,86,179,247,146,153,153,63,160,86,179,247,146,153,153,63,160,86,179,247,146,153,153,63,6,172,226,27,233,118,129,63,6,172,226,27,233,118,129,63,6,172,226,27,233,118,129,63,79,59,18,199,179,223,165,63,79,59,18,199,179,223,165,63,79,59,18,199,179,223,165,63,79,59,18,199,179,223,165,63,79,59,18,199,179,223,165,63,79,59,18,199,179,223,165,63,22,202,150,42,81,26,177,63,22,202,150,42,81,26,177,63,22,202,150,42,81,26,177,63,22,202,150,42,81,26,177,63,22,202,150,42,81,26,177,63,22,202,150,42,81,26,177,63,166,222,156,41,194,154,153,63,166,222,156,41,194,154,153,63,166,222,156,41,194,154,153,63,166,222,156,41,194,154,153,63,166,222,156,41,194,154,153,63,166,222,156,41,194,154,153,63,64,180,227,137,193,197,129,63,64,180,227,137,193,197,129,63,64,180,227,137,193,197,129,63,64,180,227,137,193,197,129,63,64,180,227,137,193,197,129,63,64,180,227,137,193,197,129,63,172,249,140,19,207,50,107,63,172,249,140,19,207,50,107,63,172,249,140,19,207,50,107,63,49,66,102,16,200,158,179,63,49,66,102,16,200,158,179,63,49,66,102,16,200,158,179,63,34,14,30,111,69,178,182,63,34,14,30,111,69,178,182,63,34,14,30,111,69,178,182,63,25,161,96,98,171,1,165,63,25,161,96,98,171,1,165,63,25,161,96,98,171,1,165,63,40,72,253,220,45,146,151,63,40,72,253,220,45,146,151,63,40,72,253,220,45,146,151,63,133,158,25,200,117,216,128,63,133,158,25,200,117,216,128,63,133,158,25,200,117,216,128,63,251,33,188,49,226,23,177,63,251,33,188,49,226,23,177,63,251,33,188,49,226,23,177,63,251,33,188,49,226,23,177,63,251,33,188,49,226,23,177,63,251,33,188,49,226,23,177,63,238,55,70,46,160,34,168,63,238,55,70,46,160,34,168,63,238,55,70,46,160,34,168,63,238,55,70,46,160,34,168,63,238,55,70,46,160,34,168,63,238,55,70,46,160,34,168,63,57,62,136,229,30,246,110,63,57,62,136,229,30,246,110,63,57,62,136,229,30,246,110,63,57,62,136,229,30,246,110,63,57,62,136,229,30,246,110,63,57,62,136,229,30,246,110,63,254,193,111,197,53,18,163,63,254,193,111,197,53,18,163,63,254,193,111,197,53,18,163,63,254,193,111,197,53,18,163,63,254,193,111,197,53,18,163,63,254,193,111,197,53,18,163,63,220,36,157,53,168,56,139,63,220,36,157,53,168,56,139,63,220,36,157,53,168,56,139,63,220,36,157,53,168,56,139,63,220,36,157,53,168,56,139,63,220,36,157,53,168,56,139,63,19,103,126,114,240,200,180,63,129,76,79,235,34,185,134,63,129,76,79,235,34,185,134,63,129,76,79,235,34,185,134,63,193,28,27,30,155,126,178,63,193,28,27,30,155,126,178,63,193,28,27,30,155,126,178,63,2,10,153,197,254,216,167,63,2,10,153,197,254,216,167,63,2,10,153,197,254,216,167,63,104,92,95,148,136,174,178,63,104,92,95,148,136,174,178,63,104,92,95,148,136,174,178,63,19,87,141,240,194,154,170,63,19,87,141,240,194,154,170,63,19,87,141,240,194,154,170,63,100,113,7,41,130,47,153,63,100,113,7,41,130,47,153,63,100,113,7,41,130,47,153,63,224,225,7,213,107,106,121,63,224,225,7,213,107,106,121,63,224,225,7,213,107,106,121,63,197,224,175,41,69,16,173,63,197,224,175,41,69,16,173,63,197,224,175,41,69,16,173,63,197,224,175,41,69,16,173,63,197,224,175,41,69,16,173,63,197,224,175,41,69,16,173,63,133,252,86,88,37,34,155,63,133,252,86,88,37,34,155,63,133,252,86,88,37,34,155,63,133,252,86,88,37,34,155,63,133,252,86,88,37,34,155,63,133,252,86,88,37,34,155,63,119,62,224,142,221,237,112,63,119,62,224,142,221,237,112,63,119,62,224,142,221,237,112,63,119,62,224,142,221,237,112,63,119,62,224,142,221,237,112,63,119,62,224,142,221,237,112,63,87,49,164,159,177,236,160,63,87,49,164,159,177,236,160,63,87,49,164,159,177,236,160,63,87,49,164,159,177,236,160,63,87,49,164,159,177,236,160,63,87,49,164,159,177,236,160,63,239,107,114,92,125,76,136,63,239,107,114,92,125,76,136,63,239,107,114,92,125,76,136,63,239,107,114,92,125,76,136,63,239,107,114,92,125,76,136,63,239,107,114,92,125,76,136,63,119,111,183,131,6,167,173,63,67,99,139,22,76,17,130,63,67,99,139,22,76,17,130,63,67,99,139,22,76,17,130,63,165,217,145,13,66,5,154,63,165,217,145,13,66,5,154,63,165,217,145,13,66,5,154,63,10,105,244,226,55,152,165,63,10,105,244,226,55,152,165,63,10,105,244,226,55,152,165,63,55,62,60,13,36,150,171,63,55,62,60,13,36,150,171,63,55,62,60,13,36,150,171,63,58,11,128,50,24,184,171,63,58,11,128,50,24,184,171,63,58,11,128,50,24,184,171,63,177,0,126,186,187,1,166,63,177,0,126,186,187,1,166,63,177,0,126,186,187,1,166,63,7,203,47,45,29,238,152,63,7,203,47,45,29,238,152,63,7,203,47,45,29,238,152,63,101,227,209,8,33,170,118,63,101,227,209,8,33,170,118,63,101,227,209,8,33,170,118,63,167,148,71,229,103,205,140,63,167,148,71,229,103,205,140,63,167,148,71,229,103,205,140,63,167,148,71,229,103,205,140,63,167,148,71,229,103,205,140,63,167,148,71,229,103,205,140,63,55,47,50,159,135,197,167,63,55,47,50,159,135,197,167,63,55,47,50,159,135,197,167,63,55,47,50,159,135,197,167,63,55,47,50,159,135,197,167,63,55,47,50,159,135,197,167,63,217,98,21,137,217,94,160,63,217,98,21,137,217,94,160,63,217,98,21,137,217,94,160,63,217,98,21,137,217,94,160,63,217,98,21,137,217,94,160,63,217,98,21,137,217,94,160,63,231,247,106,240,201,17,142,63,231,247,106,240,201,17,142,63,231,247,106,240,201,17,142,63,231,247,106,240,201,17,142,63,231,247,106,240,201,17,142,63,231,247,106,240,201,17,142,63,127,206,120,106,228,56,160,63,127,206,120,106,228,56,160,63,127,206,120,106,228,56,160,63,127,206,120,106,228,56,160,63,127,206,120,106,228,56,160,63,127,206,120,106,228,56,160,63,150,213,62,76,4,165,135,63,150,213,62,76,4,165,135,63,150,213,62,76,4,165,135,63,150,213,62,76,4,165,135,63,150,213,62,76,4,165,135,63,150,213,62,76,4,165,135,63,19,32,87,129,147,82,171,63,42,220,232,103,79,23,144,63,42,220,232,103,79,23,144,63,42,220,232,103,79,23,144,63,252,180,187,220,65,163,160,63,252,180,187,220,65,163,160,63,252,180,187,220,65,163,160,63,12,185,58,93,149,61,161,63,12,185,58,93,149,61,161,63,12,185,58,93,149,61,161,63,9,103,144,117,203,156,168,63,9,103,144,117,203,156,168,63,9,103,144,117,203,156,168,63,244,28,137,177,234,154,172,63,244,28,137,177,234,154,172,63,244,28,137,177,234,154,172,63,28,113,253,38,100,60,166,63,28,113,253,38,100,60,166,63,28,113,253,38,100,60,166,63,24,169,159,61,43,22,155,63,24,169,159,61,43,22,155,63,24,169,159,61,43,22,155,63,61,82,23,32,132,25,136,63,61,82,23,32,132,25,136,63,61,82,23,32,132,25,136,63,168,143,80,40,32,139,111,191,168,143,80,40,32,139,111,191,168,143,80,40,32,139,111,191,134,224,192,63,248,117,134,63,134,224,192,63,248,117,134,63,134,224,192,63,248,117,134,63,134,224,192,63,248,117,134,63,134,224,192,63,248,117,134,63,134,224,192,63,248,117,134,63,0,24,98,20,25,44,168,63,0,24,98,20,25,44,168,63,0,24,98,20,25,44,168,63,0,24,98,20,25,44,168,63,0,24,98,20,25,44,168,63,0,24,98,20,25,44,168,63,216,61,194,47,22,90,159,63,216,61,194,47,22,90,159,63,216,61,194,47,22,90,159,63,216,61,194,47,22,90,159,63,216,61,194,47,22,90,159,63,216,61,194,47,22,90,159,63,5,221,46,138,146,76,160,63,5,221,46,138,146,76,160,63,5,221,46,138,146,76,160,63,5,221,46,138,146,76,160,63,5,221,46,138,146,76,160,63,5,221,46,138,146,76,160,63,218,226,176,212,218,191,140,63,218,226,176,212,218,191,140,63,218,226,176,212,218,191,140,63,218,226,176,212,218,191,140,63,218,226,176,212,218,191,140,63,218,226,176,212,218,191,140,63,51,232,168,172,128,20,139,63,51,232,168,172,128,20,139,63,51,232,168,172,128,20,139,63,51,232,168,172,128,20,139,63,51,232,168,172,128,20,139,63,51,232,168,172,128,20,139,63,218,96,228,204,170,248,20,63,218,96,228,204,170,248,20,63,218,96,228,204,170,248,20,63,218,96,228,204,170,248,20,63,218,96,228,204,170,248,20,63,218,96,228,204,170,248,20,63,191,98,58,139,129,46,173,63,168,202,120,143,162,82,146,63,168,202,120,143,162,82,146,63,168,202,120,143,162,82,146,63,192,158,174,156,109,218,163,63,192,158,174,156,109,218,163,63,192,158,174,156,109,218,163,63,46,229,40,33,30,215,170,63,46,229,40,33,30,215,170,63,46,229,40,33,30,215,170,63,197,98,28,125,41,10,171,63,197,98,28,125,41,10,171,63,197,98,28,125,41,10,171,63,6,234,10,171,180,108,165,63,6,234,10,171,180,108,165,63,6,234,10,171,180,108,165,63,236,15,224,152,208,119,156,63,236,15,224,152,208,119,156,63,236,15,224,152,208,119,156,63,66,48,249,237,141,173,140,63,66,48,249,237,141,173,140,63,66,48,249,237,141,173,140,63,199,21,148,42,5,129,109,63,199,21,148,42,5,129,109,63,199,21,148,42,5,129,109,63,30,44,89,158,169,143,123,63,30,44,89,158,169,143,123,63,30,44,89,158,169,143,123,63,30,44,89,158,169,143,123,63,30,44,89,158,169,143,123,63,30,44,89,158,169,143,123,63,135,143,230,148,238,173,166,63,135,143,230,148,238,173,166,63,135,143,230,148,238,173,166,63,135,143,230,148,238,173,166,63,135,143,230,148,238,173,166,63,135,143,230,148,238,173,166,63,245,53,249,189,176,128,143,63,245,53,249,189,176,128,143,63,245,53,249,189,176,128,143,63,245,53,249,189,176,128,143,63,245,53,249,189,176,128,143,63,245,53,249,189,176,128,143,63,151,247,191,52,76,153,156,63,151,247,191,52,76,153,156,63,151,247,191,52,76,153,156,63,151,247,191,52,76,153,156,63,151,247,191,52,76,153,156,63,151,247,191,52,76,153,156,63,106,214,186,4,213,173,113,63,106,214,186,4,213,173,113,63,106,214,186,4,213,173,113,63,106,214,186,4,213,173,113,63,106,214,186,4,213,173,113,63,106,214,186,4,213,173,113,63,14,200,68,9,141,45,160,63,14,200,68,9,141,45,160,63,14,200,68,9,141,45,160,63,14,200,68,9,141,45,160,63,14,200,68,9,141,45,160,63,14,200,68,9,141,45,160,63,180,42,135,6,222,49,146,63,180,42,135,6,222,49,146,63,180,42,135,6,222,49,146,63,180,42,135,6,222,49,146,63,180,42,135,6,222,49,146,63,180,42,135,6,222,49,146,63,189,181,160,139,97,245,122,63,189,181,160,139,97,245,122,63,189,181,160,139,97,245,122,63,189,181,160,139,97,245,122,63,189,181,160,139,97,245,122,63,189,181,160,139,97,245,122,63,211,138,202,83,185,80,173,63,135,21,116,242,172,154,88,63,135,21,116,242,172,154,88,63,135,21,116,242,172,154,88,63,187,123,10,114,53,174,148,63,187,123,10,114,53,174,148,63,187,123,10,114,53,174,148,63,66,32,126,90,153,73,164,63,66,32,126,90,153,73,164,63,66,32,126,90,153,73,164,63,202,237,215,101,161,0,171,63,202,237,215,101,161,0,171,63,202,237,215,101,161,0,171,63,247,35,114,224,144,40,171,63,247,35,114,224,144,40,171,63,247,35,114,224,144,40,171,63,219,5,106,80,30,156,165,63,219,5,106,80,30,156,165,63,219,5,106,80,30,156,165,63,97,237,52,231,148,95,156,63,97,237,52,231,148,95,156,63,97,237,52,231,148,95,156,63,125,236,50,9,199,78,139,63,125,236,50,9,199,78,139,63,125,236,50,9,199,78,139,63,176,108,115,143,194,239,81,191,176,108,115,143,194,239,81,191,176,108,115,143,194,239,81,191,104,48,239,61,198,216,104,63,104,48,239,61,198,216,104,63,104,48,239,61,198,216,104,63,234,221,229,168,66,52,157,63,234,221,229,168,66,52,157,63,234,221,229,168,66,52,157,63,234,221,229,168,66,52,157,63,234,221,229,168,66,52,157,63,234,221,229,168,66,52,157,63,84,225,51,112,75,42,129,63,84,225,51,112,75,42,129,63,84,225,51,112,75,42,129,63,84,225,51,112,75,42,129,63,84,225,51,112,75,42,129,63,84,225,51,112,75,42,129,63,228,226,156,17,81,226,166,63,228,226,156,17,81,226,166,63,228,226,156,17,81,226,166,63,228,226,156,17,81,226,166,63,228,226,156,17,81,226,166,63,228,226,156,17,81,226,166,63,171,16,87,214,138,12,142,63,171,16,87,214,138,12,142,63,171,16,87,214,138,12,142,63,171,16,87,214,138,12,142,63,171,16,87,214,138,12,142,63,171,16,87,214,138,12,142,63,59,213,209,140,254,70,160,63,59,213,209,140,254,70,160,63,59,213,209,140,254,70,160,63,59,213,209,140,254,70,160,63,59,213,209,140,254,70,160,63,59,213,209,140,254,70,160,63,64,21,169,124,82,253,83,63,64,21,169,124,82,253,83,63,64,21,169,124,82,253,83,63,64,21,169,124,82,253,83,63,64,21,169,124,82,253,83,63,64,21,169,124,82,253,83,63,26,239,108,169,161,239,145,63,26,239,108,169,161,239,145,63,26,239,108,169,161,239,145,63,26,239,108,169,161,239,145,63,26,239,108,169,161,239,145,63,26,239,108,169,161,239,145,63,75,117,252,46,227,90,121,63,75,117,252,46,227,90,121,63,75,117,252,46,227,90,121,63,75,117,252,46,227,90,121,63,75,117,252,46,227,90,121,63,75,117,252,46,227,90,121,63,79,85,85,85,85,85,213,63,97,85,85,85,85,85,197,63,97,85,85,85,85,85,197,63,88,85,85,85,85,85,229,63,79,85,85,85,85,85,213,63,154,153,153,153,153,153,201,63,154,153,153,153,153,153,201,63,51,51,51,51,51,51,227,63,220,208,11,138,107,138,220,63,220,208,11,138,107,138,220,63,32,121,161,175,163,172,187,63,219,176,29,234,137,113,183,63,219,176,29,234,137,113,183,63,210,147,120,133,157,35,234,63,79,85,85,85,85,85,213,63,191,139,115,189,206,22,222,63,191,139,115,189,206,22,222,63,16,68,199,40,20,147,174,63,119,245,122,156,233,237,185,63,119,245,122,156,233,237,185,63,153,66,225,152,133,132,233,63,145,236,234,200,160,232,207,63,145,236,234,200,160,232,207,63,175,137,138,155,175,11,224,63,196,85,250,5,154,38,176,63,196,85,250,5,154,38,176,63,143,106,129,126,89,246,235,63,196,142,49,125,58,94,228,63,87,27,219,134,208,220,211,63,196,142,49,125,58,94,228,63,87,27,219,134,208,220,211,63,9,57,14,246,211,53,171,63,9,57,14,246,211,53,171,63,79,85,85,85,85,85,213,63,193,30,125,32,130,169,208,63,193,30,125,32,130,169,208,63,125,194,5,191,251,172,222,63,225,59,243,205,93,172,176,63,225,59,243,205,93,172,176,63,8,49,131,140,232,212,235,63,158,80,199,129,34,110,228,63,240,208,88,0,253,5,212,63,158,80,199,129,34,110,228,63,240,208,88,0,253,5,212,63,162,110,196,224,239,237,168,63,162,110,196,224,239,237,168,63,79,85,85,85,85,85,213,63,200,203,128,189,12,101,221,63,200,203,128,189,12,101,221,63,194,161,249,19,154,215,180,63,174,97,63,15,55,213,197,63,174,97,63,15,55,213,197,63,41,79,96,120,100,21,229,63,6,217,12,137,83,225,169,63,6,217,12,137,83,225,169,63,223,100,222,142,213,195,236,63,141,26,100,71,207,79,231,63,34,21,156,49,215,214,208,63,141,26,100,71,207,79,231,63,34,21,156,49,215,214,208,63,142,184,118,243,71,49,129,63,142,184,118,243,71,49,129,63,79,85,85,85,85,85,213,63,9,106,88,89,245,86,223,63,9,106,88,89,245,86,223,63,5,192,242,212,84,33,149,63,38,150,56,159,70,249,219,63,38,150,56,159,70,249,219,63,142,167,29,131,229,26,192,63,55,215,60,175,13,23,200,63,55,215,60,175,13,23,200,63,109,148,97,40,121,244,227,63,68,237,99,106,201,230,166,63],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([68,237,99,106,201,230,166,63,96,130,179,210,38,35,237,63,174,218,179,31,230,183,231,63,26,23,175,129,72,105,204,63,174,218,179,31,230,183,231,63,26,23,175,129,72,105,204,63,187,248,5,254,123,220,162,63,187,248,5,254,123,220,162,63,79,85,85,85,85,85,213,63,20,82,195,53,180,19,223,63,20,82,195,53,180,19,223,63,98,188,149,71,121,137,157,63,183,8,57,10,252,6,188,63,183,8,57,10,252,6,188,63,210,189,113,253,64,254,232,63,87,29,204,197,125,156,225,63,136,39,40,76,73,181,211,63,87,29,204,197,125,156,225,63,136,39,40,76,73,181,211,63,149,59,127,80,118,35,194,63,149,59,127,80,118,35,194,63,74,130,228,238,109,78,231,63,74,109,98,106,247,146,207,63,74,130,228,238,109,78,231,63,74,109,98,106,247,146,207,63,122,76,92,208,134,154,153,63,122,76,92,208,134,154,153,63,25,120,112,227,150,142,237,63,26,39,93,146,4,26,177,63,25,120,112,227,150,142,237,63,26,39,93,146,4,26,177,63,162,190,248,144,34,138,131,63,162,190,248,144,34,138,131,63,224,230,12,161,136,27,225,63,224,230,12,161,136,27,225,63,71,110,206,16,138,184,177,191,44,41,22,139,182,136,217,63,44,41,22,139,182,136,217,63,78,91,167,211,37,221,201,63,114,22,167,14,15,6,202,63,114,22,167,14,15,6,202,63,190,116,172,120,248,252,226,63,9,95,0,9,200,141,190,63,9,95,0,9,200,141,190,63,53,232,191,253,141,92,232,63,1,110,89,115,35,146,160,63,1,110,89,115,35,146,160,63,64,210,148,145,187,237,237,63,228,228,115,28,129,251,226,63,160,19,87,105,223,210,214,63,228,228,115,28,129,251,226,63,160,19,87,105,223,210,214,63,80,21,9,238,242,176,169,63,80,21,9,238,242,176,169,63,41,110,142,45,243,214,233,63,47,223,3,213,89,243,197,63,41,110,142,45,243,214,233,63,47,223,3,213,89,243,197,63,103,65,19,166,203,134,149,63,103,65,19,166,203,134,149,63,194,175,154,38,244,62,223,63,194,175,154,38,244,62,223,63,204,7,170,44,123,33,152,63,159,31,10,199,113,36,220,63,159,31,10,199,113,36,220,63,188,2,175,199,113,220,190,63,89,155,125,205,130,91,209,63,89,155,125,205,130,91,209,63,77,201,4,101,250,72,221,63,151,232,108,70,106,84,192,63,151,232,108,70,106,84,192,63,181,139,201,220,202,213,231,63,181,184,34,44,55,212,149,63,181,184,34,44,55,212,149,63,108,212,61,141,188,162,238,63,107,109,89,134,118,124,227,63,56,215,23,69,73,165,209,63,107,109,89,134,118,124,227,63,56,215,23,69,73,165,209,63,204,55,213,184,38,135,189,63,204,55,213,184,38,135,189,63,219,42,132,10,74,68,230,63,200,81,120,2,61,1,210,63,219,42,132,10,74,68,230,63,200,81,120,2,61,1,210,63,14,136,245,135,238,98,151,63,14,136,245,135,238,98,151,63,63,150,178,216,217,116,235,63,1,164,235,128,175,194,189,63,63,150,178,216,217,116,235,63,1,164,235,128,175,194,189,63,32,168,254,229,6,90,154,63,32,168,254,229,6,90,154,63,79,85,85,85,85,85,213,63,255,166,16,149,222,174,223,63,255,166,16,149,222,174,223,63,109,66,214,187,90,72,132,63,25,193,184,14,116,255,221,63,25,193,184,14,116,255,221,63,57,247,57,138,95,4,176,63,92,144,67,128,132,135,218,63,92,144,67,128,132,135,218,63,181,190,241,254,237,225,197,63,40,247,209,21,247,92,205,63,40,247,209,21,247,92,205,63,99,4,23,117,132,81,225,63,142,195,186,120,236,74,189,63,142,195,186,120,236,74,189,63,28,79,209,225,68,173,232,63,96,178,229,73,40,104,153,63,96,178,229,73,40,104,153,63,218,164,97,123,125,105,238,63,187,110,112,35,253,92,228,63,230,135,108,238,239,51,209,63,187,110,112,35,253,92,228,63,230,135,108,238,239,51,209,63,143,106,202,42,87,72,184,63,143,106,202,42,87,72,184,63,227,63,91,162,221,21,230,63,245,141,248,149,180,171,210,63,227,63,91,162,221,21,230,63,245,141,248,149,180,171,210,63,66,36,15,85,2,137,146,63,66,36,15,85,2,137,146,63,108,4,16,55,191,62,235,63,117,187,37,147,122,44,192,63,108,4,16,55,191,62,235,63,117,187,37,147,122,44,192,63,217,150,209,132,68,196,150,63,217,150,209,132,68,196,150,63,104,130,251,72,47,75,223,63,104,130,251,72,47,75,223,63,38,180,143,224,22,154,150,63,176,132,186,234,176,186,218,63,176,132,186,234,176,186,218,63,64,237,21,85,60,21,197,63,142,192,17,228,167,128,209,63,142,192,17,228,167,128,209,63,245,126,220,55,176,254,220,63,248,233,48,191,171,174,198,63,248,233,48,191,171,174,198,63,251,138,103,32,170,168,228,63,124,57,139,249,59,164,175,63,124,57,139,249,59,164,175,63,218,152,206,128,120,11,236,63,99,205,154,97,57,219,147,63,99,205,154,97,57,219,147,63,42,83,230,105,76,194,238,63,137,216,152,69,211,168,232,63,4,5,49,183,213,12,198,63,137,216,152,69,211,168,232,63,4,5,49,183,213,12,198,63,100,99,174,201,116,63,173,63,100,99,174,201,116,63,173,63,224,95,84,209,66,63,226,63,115,235,70,94,35,143,213,63,224,95,84,209,66,63,226,63,115,235,70,94,35,143,213,63,51,83,65,252,91,201,183,63,51,83,65,252,91,201,183,63,4,144,55,213,189,251,229,63,162,118,178,146,138,24,211,63,4,144,55,213,189,251,229,63,162,118,178,146,138,24,211,63,207,42,205,91,56,255,141,63,207,42,205,91,56,255,141,63,111,154,238,130,248,38,236,63,248,156,170,216,28,117,190,63,111,154,238,130,248,38,236,63,248,156,170,216,28,117,190,63,64,227,35,248,195,199,84,63,64,227,35,248,195,199,84,63,233,164,59,68,31,57,224,63,233,164,59,68,31,57,224,63,160,116,210,29,162,143,140,191,186,168,187,101,41,156,219,63,186,168,187,101,41,156,219,63,59,93,17,105,90,143,193,63,194,59,187,144,187,197,209,63,194,59,187,144,187,197,209,63,105,136,137,222,136,116,220,63,79,164,142,101,0,48,192,63,79,164,142,101,0,48,192,63,216,173,56,205,255,231,231,63,226,55,11,150,127,32,178,63,226,55,11,150,127,32,178,63,8,50,125,26,224,119,235,63,152,62,203,7,155,107,147,63,152,62,203,7,155,107,147,63,13,76,131,79,70,201,238,63,141,6,92,120,201,91,227,63,101,167,71,84,83,185,208,63,141,6,92,120,201,91,227,63,101,167,71,84,83,185,208,63,223,150,0,118,51,30,193,63,223,150,0,118,51,30,193,63,1,60,254,126,52,107,226,63,180,40,126,27,194,213,216,63,1,60,254,126,52,107,226,63,180,40,126,27,194,213,216,63,78,250,42,52,167,158,162,63,78,250,42,52,167,158,162,63,41,203,162,82,204,46,231,63,251,164,75,232,27,73,210,63,41,203,162,82,204,46,231,63,251,164,75,232,27,73,210,63,192,105,39,178,145,214,132,191,192,105,39,178,145,214,132,191,45,100,179,137,251,235,231,63,179,9,28,17,197,152,203,63,45,100,179,137,251,235,231,63,179,9,28,17,197,152,203,63,103,150,89,32,51,221,162,63,103,150,89,32,51,221,162,63,120,149,17,19,112,73,236,63,22,206,219,125,238,131,186,63,120,149,17,19,112,73,236,63,22,206,219,125,238,131,186,63,159,51,188,76,135,132,137,63,159,51,188,76,135,132,137,63,79,85,85,85,85,85,213,63,131,117,85,50,21,213,223,63,131,117,85,50,21,213,223,63,9,58,69,213,102,117,117,63,183,193,29,133,72,118,218,63,183,193,29,133,72,118,218,63,254,248,136,235,221,38,198,63,73,87,71,98,254,27,222,63,73,87,71,98,254,27,222,63,224,138,138,219,25,64,174,63,242,77,134,28,119,202,206,63,242,77,134,28,119,202,206,63,7,217,188,113,196,154,224,63,58,106,142,11,139,240,194,63,58,106,142,11,139,240,194,63,227,202,56,122,186,135,230,63,199,176,249,192,175,81,179,63,199,176,249,192,175,81,179,63,206,147,193,15,148,43,235,63,135,18,253,185,165,254,144,63,135,18,253,185,165,254,144,63,216,46,96,164,21,240,238,63,103,120,12,222,31,50,227,63,153,104,48,83,196,250,210,63,103,120,12,222,31,50,227,63,153,104,48,83,196,250,210,63,97,154,218,194,239,131,186,63,97,154,218,194,239,131,186,63,134,116,106,111,217,140,228,63,68,244,26,50,65,157,213,63,134,116,106,111,217,140,228,63,68,244,26,50,65,157,213,63,242,42,2,241,190,144,148,63,242,42,2,241,190,144,148,63,203,32,86,121,67,150,233,63,172,182,200,18,49,53,202,63,203,32,86,121,67,150,233,63,172,182,200,18,49,53,202,63,192,58,39,4,223,199,113,191,192,58,39,4,223,199,113,191,58,159,123,40,48,153,232,63,6,224,117,41,230,60,200,63,58,159,123,40,48,153,232,63,6,224,117,41,230,60,200,63,216,140,110,210,100,121,165,63,216,140,110,210,100,121,165,63,44,61,179,178,17,208,236,63,106,220,61,164,37,213,181,63,44,61,179,178,17,208,236,63,106,220,61,164,37,213,181,63,130,207,65,49,102,82,141,63,130,207,65,49,102,82,141,63,79,85,85,85,85,85,213,63,142,118,14,99,164,209,223,63,142,118,14,99,164,209,223,63,23,185,196,120,206,45,119,63,5,3,37,20,250,219,222,63,5,3,37,20,250,219,222,63,67,208,175,189,94,64,162,63,198,246,146,77,187,208,220,63,198,246,146,77,187,208,220,63,25,74,104,147,37,122,185,63,172,103,244,73,246,157,217,63,172,103,244,73,246,157,217,63,82,97,46,216,38,136,201,63,209,15,250,32,21,35,208,63,209,15,250,32,21,35,208,63,112,224,11,190,213,185,223,63,240,31,182,204,244,189,196,63,240,31,182,204,244,189,196,63,255,239,164,153,5,161,229,63,245,115,221,16,154,108,179,63,245,115,221,16,154,108,179,63,3,163,200,123,217,36,235,63,129,29,107,241,202,7,144,63,129,29,107,241,202,7,144,63,40,78,233,80,131,255,238,63,84,147,35,226,204,249,228,63,207,183,46,40,127,101,213,63,84,147,35,226,204,249,228,63,207,183,46,40,127,101,213,63,22,49,68,113,226,220,132,63,22,49,68,113,226,220,132,63,42,104,51,236,150,80,226,63,185,148,1,247,193,179,210,63,42,104,51,236,150,80,226,63,185,148,1,247,193,179,210,63,231,53,47,97,32,86,193,63,231,53,47,97,32,86,193,63,95,42,241,165,51,8,228,63,190,254,96,56,234,115,212,63,95,42,241,165,51,8,228,63,190,254,96,56,234,115,212,63,182,100,229,221,115,221,171,63,182,100,229,221,115,221,171,63,232,167,62,237,84,124,233,63,142,182,14,251,254,104,200,63,232,167,62,237,84,124,233,63,142,182,14,251,254,104,200,63,20,157,106,255,212,90,138,63,20,157,106,255,212,90,138,63,28,176,179,106,66,19,232,63,151,19,193,233,18,26,199,63,28,176,179,106,66,19,232,63,151,19,193,233,18,26,199,63,168,87,224,214,198,49,177,63,168,87,224,214,198,49,177,63,23,251,102,47,177,242,236,63,186,193,171,36,127,169,180,63,23,251,102,47,177,242,236,63,186,193,171,36,127,169,180,63,136,44,227,0,187,7,142,63,136,44,227,0,187,7,142,63,79,85,85,85,85,85,213,63,226,39,174,26,246,146,223,63,226,39,174,26,246,146,223,63,70,5,118,84,121,66,139,63,250,45,77,223,139,7,222,63,250,45,77,223,139,7,222,63,93,32,45,11,66,135,175,63,224,6,204,205,8,236,219,63,224,6,204,205,8,236,219,63,163,228,207,200,220,79,192,63,222,143,127,223,40,69,217,63,222,143,127,223,40,69,217,63,135,192,1,130,92,235,202,63,125,46,221,183,68,249,207,63,125,46,221,183,68,249,207,63,194,104,17,164,93,3,224,63,40,95,83,100,207,169,196,63,40,95,83,100,207,169,196,63,117,80,214,77,24,171,229,63,85,50,251,1,241,155,179,63,85,50,251,1,241,155,179,63,98,51,129,191,3,25,235,63,190,51,124,167,161,213,152,63,190,51,124,167,161,213,152,63,196,60,136,229,165,114,238,63,69,177,70,216,71,23,166,63,69,177,70,216,71,23,166,63,224,41,247,4,23,61,237,63,146,96,185,236,187,62,228,63,60,130,59,235,103,248,214,63,146,96,185,236,187,62,228,63,60,130,59,235,103,248,214,63,24,148,55,106,7,68,129,63,24,148,55,106,7,68,129,63,102,73,35,30,147,97,226,63,35,181,96,124,125,215,210,63,102,73,35,30,147,97,226,63,35,181,96,124,125,215,210,63,33,112,177,142,184,202,192,63,33,112,177,142,184,202,192,63,133,101,166,160,48,254,227,63,141,215,42,119,23,205,212,63,133,101,166,160,48,254,227,63,141,215,42,119,23,205,212,63,207,235,66,60,58,180,169,63,207,235,66,60,58,180,169,63,111,201,129,181,66,247,231,63,220,227,141,248,122,165,199,63,111,201,129,181,66,247,231,63,220,227,141,248,122,165,199,63,138,236,213,98,244,250,176,63,138,236,213,98,244,250,176,63,20,81,132,2,88,157,232,63,203,105,67,150,136,1,204,63,20,81,132,2,88,157,232,63,203,105,67,150,136,1,204,63,54,30,181,250,117,145,136,63,54,30,181,250,117,145,136,63,63,42,101,79,107,73,236,63,0,44,185,244,231,230,185,63,63,42,101,79,107,73,236,63,0,44,185,244,231,230,185,63,38,16,236,128,236,109,142,63,38,16,236,128,236,109,142,63,244,41,72,49,196,58,240,63,39,186,0,29,49,96,149,63,244,41,72,49,196,58,240,63,39,186,0,29,49,96,149,63,161,155,133,183,158,8,162,191,161,155,133,183,158,8,162,191,79,85,85,85,85,85,213,63,189,129,145,32,197,85,223,63,189,129,145,32,197,85,223,63,72,199,207,237,91,71,149,63,88,160,61,232,33,23,221,63,88,160,61,232,33,23,221,63,135,253,18,190,240,70,183,63,219,82,221,150,207,176,217,63,219,82,221,150,207,176,217,63,146,180,138,164,193,60,201,63,104,102,134,83,245,90,208,63,104,102,134,83,245,90,208,63,67,51,243,88,21,74,223,63,215,116,49,113,125,170,198,63,215,116,49,113,125,170,198,63,157,69,103,71,193,170,228,63,15,104,45,16,246,44,188,63,15,104,45,16,246,44,188,63,252,165,244,123,194,244,232,63,221,154,78,114,63,110,172,63,221,154,78,114,63,110,172,63,173,44,182,17,56,114,236,63,216,36,26,225,125,217,137,63,216,36,26,225,125,217,137,63,226,46,247,16,52,49,239,63,244,125,48,93,100,56,227,63,138,190,59,227,11,84,217,63,244,125,48,93,100,56,227,63,138,190,59,227,11,84,217,63,226,198,162,49,177,149,109,63,226,198,162,49,177,149,109,63,26,86,149,203,226,215,225,63,154,90,142,246,31,181,211,63,26,86,149,203,226,215,225,63,154,90,142,246,31,181,211,63,102,242,141,228,52,54,193,63,102,242,141,228,52,54,193,63,126,58,23,98,83,18,231,63,163,139,192,53,170,238,208,63,126,58,23,98,83,18,231,63,163,139,192,53,170,238,208,63,12,236,31,194,224,149,141,63,12,236,31,194,224,149,141,63,12,18,184,161,93,6,227,63,240,109,3,10,79,242,214,63,12,18,184,161,93,6,227,63,240,109,3,10,79,242,214,63,200,111,99,148,173,7,168,63,200,111,99,148,173,7,168,63,88,206,190,173,205,219,234,63,168,209,217,119,8,51,196,63,88,206,190,173,205,219,234,63,168,209,217,119,8,51,196,63,94,71,189,74,52,112,103,63,94,71,189,74,52,112,103,63,174,105,163,14,80,111,230,63,97,139,142,19,132,54,179,63,174,105,163,14,80,111,230,63,97,139,142,19,132,54,179,63,153,19,171,187,125,167,204,63,153,19,171,187,125,167,204,63,10,125,119,18,116,85,234,63,233,81,131,251,222,58,194,63,10,125,119,18,116,85,234,63,233,81,131,251,222,58,194,63,193,231,122,234,66,189,161,63,193,231,122,234,66,189,161,63,253,14,232,101,58,148,237,63,13,14,174,133,65,196,176,63,253,14,232,101,58,148,237,63,13,14,174,133,65,196,176,63,97,208,139,88,90,207,132,63,97,208,139,88,90,207,132,63,79,85,85,85,85,85,213,63,250,224,169,68,201,7,224,63,250,224,169,68,201,7,224,63,225,230,131,167,18,37,95,191,149,9,244,143,225,62,223,63,149,9,244,143,225,62,223,63,139,206,126,1,206,35,152,63,74,238,11,155,245,32,221,63,74,238,11,155,245,32,221,63,249,141,160,39,83,248,182,63,142,186,184,132,78,186,217,63,142,186,184,132,78,186,217,63,162,21,29,237,197,22,201,63,193,122,172,167,140,96,208,63,193,122,172,167,140,96,208,63,107,10,167,176,230,62,223,63,97,67,208,203,42,151,198,63,97,67,208,203,42,151,198,63,80,222,23,154,106,180,228,63,19,35,222,240,240,170,186,63,19,35,222,240,240,170,186,63,50,119,200,195,67,85,233,63,214,64,66,240,218,43,171,63,214,64,66,240,218,43,171,63,229,183,247,161,132,154,236,63,96,67,86,89,12,79,165,63,96,67,86,89,12,79,165,63,148,55,213,116,30,86,237,63,247,78,86,45,67,184,135,63,247,78,86,45,67,184,135,63,136,77,149,230,61,66,239,63,114,123,167,133,166,103,227,63,217,27,190,239,29,18,214,63,114,123,167,133,166,103,227,63,217,27,190,239,29,18,214,63,25,106,151,39,168,244,168,63,25,106,151,39,168,244,168,63,12,94,18,146,251,180,227,63,105,28,123,137,149,46,216,63,12,94,18,146,251,180,227,63,105,28,123,137,149,46,216,63,149,223,9,152,212,220,121,63,149,223,9,152,212,220,121,63,163,65,210,161,184,227,225,63,114,110,151,106,234,159,211,63,163,65,210,161,184,227,225,63,114,110,151,106,234,159,211,63,144,28,136,163,72,49,193,63,144,28,136,163,72,49,193,63,108,119,10,78,72,146,231,63,149,167,13,67,249,236,207,63,108,119,10,78,72,146,231,63,149,167,13,67,249,236,207,63,184,171,135,76,88,158,140,63,184,171,135,76,88,158,140,63,137,5,176,242,10,198,230,63,210,146,180,37,60,60,203,63,137,5,176,242,10,198,230,63,210,146,180,37,60,60,203,63,20,174,22,31,48,87,179,63,20,174,22,31,48,87,179,63,248,183,91,110,156,144,235,63,109,218,190,110,195,207,194,63,248,183,91,110,156,144,235,63,109,218,190,110,195,207,194,63,43,167,219,130,82,35,129,191,43,167,219,130,82,35,129,191,201,83,38,220,32,189,234,63,15,110,236,162,9,161,193,63,201,83,38,220,32,189,234,63,15,110,236,162,9,161,193,63,119,22,210,99,151,83,155,63,119,22,210,99,151,83,155,63,60,232,194,3,144,192,237,63,12,163,252,8,125,144,174,63,60,232,194,3,144,192,237,63,12,163,252,8,125,144,174,63,0,103,83,235,10,154,133,63,0,103,83,235,10,154,133,63,79,85,85,85,85,85,213,63,97,85,85,85,85,85,197,63,88,85,85,85,85,85,229,63,97,85,85,85,85,85,197,63,79,85,85,85,85,85,213,63,154,153,153,153,153,153,201,63,51,51,51,51,51,51,227,63,154,153,153,153,153,153,201,63,220,208,11,138,107,138,220,63,32,121,161,175,163,172,187,63,220,208,11,138,107,138,220,63,219,176,29,234,137,113,183,63,210,147,120,133,157,35,234,63,219,176,29,234,137,113,183,63,79,85,85,85,85,85,213,63,191,139,115,189,206,22,222,63,16,68,199,40,20,147,174,63,191,139,115,189,206,22,222,63,119,245,122,156,233,237,185,63,153,66,225,152,133,132,233,63,119,245,122,156,233,237,185,63,145,236,234,200,160,232,207,63,175,137,138,155,175,11,224,63,145,236,234,200,160,232,207,63,196,85,250,5,154,38,176,63,143,106,129,126,89,246,235,63,196,85,250,5,154,38,176,63,87,27,219,134,208,220,211,63,196,142,49,125,58,94,228,63,9,57,14,246,211,53,171,63,9,57,14,246,211,53,171,63,196,142,49,125,58,94,228,63,87,27,219,134,208,220,211,63,79,85,85,85,85,85,213,63,193,30,125,32,130,169,208,63,125,194,5,191,251,172,222,63,193,30,125,32,130,169,208,63,225,59,243,205,93,172,176,63,8,49,131,140,232,212,235,63,225,59,243,205,93,172,176,63,240,208,88,0,253,5,212,63,158,80,199,129,34,110,228,63,162,110,196,224,239,237,168,63,162,110,196,224,239,237,168,63,158,80,199,129,34,110,228,63,240,208,88,0,253,5,212,63,79,85,85,85,85,85,213,63,200,203,128,189,12,101,221,63,194,161,249,19,154,215,180,63,200,203,128,189,12,101,221,63,174,97,63,15,55,213,197,63,41,79,96,120,100,21,229,63,174,97,63,15,55,213,197,63,6,217,12,137,83,225,169,63,223,100,222,142,213,195,236,63,6,217,12,137,83,225,169,63,34,21,156,49,215,214,208,63,141,26,100,71,207,79,231,63,142,184,118,243,71,49,129,63,142,184,118,243,71,49,129,63,141,26,100,71,207,79,231,63,34,21,156,49,215,214,208,63,79,85,85,85,85,85,213,63,9,106,88,89,245,86,223,63,5,192,242,212,84,33,149,63,9,106,88,89,245,86,223,63,38,150,56,159,70,249,219,63,142,167,29,131,229,26,192,63,38,150,56,159,70,249,219,63,55,215,60,175,13,23,200,63,109,148,97,40,121,244,227,63,55,215,60,175,13,23,200,63,68,237,99,106,201,230,166,63,96,130,179,210,38,35,237,63,68,237,99,106,201,230,166,63,26,23,175,129,72,105,204,63,174,218,179,31,230,183,231,63,187,248,5,254,123,220,162,63,187,248,5,254,123,220,162,63,174,218,179,31,230,183,231,63,26,23,175,129,72,105,204,63,79,85,85,85,85,85,213,63,20,82,195,53,180,19,223,63,98,188,149,71,121,137,157,63,20,82,195,53,180,19,223,63,183,8,57,10,252,6,188,63,210,189,113,253,64,254,232,63,183,8,57,10,252,6,188,63,136,39,40,76,73,181,211,63,87,29,204,197,125,156,225,63,149,59,127,80,118,35,194,63,149,59,127,80,118,35,194,63,87,29,204,197,125,156,225,63,136,39,40,76,73,181,211,63,74,109,98,106,247,146,207,63,74,130,228,238,109,78,231,63,122,76,92,208,134,154,153,63,122,76,92,208,134,154,153,63,74,130,228,238,109,78,231,63,74,109,98,106,247,146,207,63,26,39,93,146,4,26,177,63,25,120,112,227,150,142,237,63,162,190,248,144,34,138,131,63,162,190,248,144,34,138,131,63,25,120,112,227,150,142,237,63,26,39,93,146,4,26,177,63,224,230,12,161,136,27,225,63,71,110,206,16,138,184,177,191,224,230,12,161,136,27,225,63,44,41,22,139,182,136,217,63,78,91,167,211,37,221,201,63,44,41,22,139,182,136,217,63,114,22,167,14,15,6,202,63,190,116,172,120,248,252,226,63,114,22,167,14,15,6,202,63,9,95,0,9,200,141,190,63,53,232,191,253,141,92,232,63,9,95,0,9,200,141,190,63,1,110,89,115,35,146,160,63,64,210,148,145,187,237,237,63,1,110,89,115,35,146,160,63,160,19,87,105,223,210,214,63,228,228,115,28,129,251,226,63,80,21,9,238,242,176,169,63,80,21,9,238,242,176,169,63,228,228,115,28,129,251,226,63,160,19,87,105,223,210,214,63,47,223,3,213,89,243,197,63,41,110,142,45,243,214,233,63,103,65,19,166,203,134,149,63,103,65,19,166,203,134,149,63,41,110,142,45,243,214,233,63,47,223,3,213,89,243,197,63,194,175,154,38,244,62,223,63,204,7,170,44,123,33,152,63,194,175,154,38,244,62,223,63,159,31,10,199,113,36,220,63,188,2,175,199,113,220,190,63,159,31,10,199,113,36,220,63,89,155,125,205,130,91,209,63,77,201,4,101,250,72,221,63,89,155,125,205,130,91,209,63,151,232,108,70,106,84,192,63,181,139,201,220,202,213,231,63,151,232,108,70,106,84,192,63,181,184,34,44,55,212,149,63,108,212,61,141,188,162,238,63,181,184,34,44,55,212,149,63,56,215,23,69,73,165,209,63,107,109,89,134,118,124,227,63,204,55,213,184,38,135,189,63,204,55,213,184,38,135,189,63,107,109,89,134,118,124,227,63,56,215,23,69,73,165,209,63,200,81,120,2,61,1,210,63,219,42,132,10,74,68,230,63,14,136,245,135,238,98,151,63,14,136,245,135,238,98,151,63,219,42,132,10,74,68,230,63,200,81,120,2,61,1,210,63,1,164,235,128,175,194,189,63,63,150,178,216,217,116,235,63,32,168,254,229,6,90,154,63,32,168,254,229,6,90,154,63,63,150,178,216,217,116,235,63,1,164,235,128,175,194,189,63,79,85,85,85,85,85,213,63,255,166,16,149,222,174,223,63,109,66,214,187,90,72,132,63,255,166,16,149,222,174,223,63,25,193,184,14,116,255,221,63,57,247,57,138,95,4,176,63,25,193,184,14,116,255,221,63,92,144,67,128,132,135,218,63,181,190,241,254,237,225,197,63,92,144,67,128,132,135,218,63,40,247,209,21,247,92,205,63,99,4,23,117,132,81,225,63,40,247,209,21,247,92,205,63,142,195,186,120,236,74,189,63,28,79,209,225,68,173,232,63,142,195,186,120,236,74,189,63,96,178,229,73,40,104,153,63,218,164,97,123,125,105,238,63,96,178,229,73,40,104,153,63,230,135,108,238,239,51,209,63,187,110,112,35,253,92,228,63,143,106,202,42,87,72,184,63,143,106,202,42,87,72,184,63,187,110,112,35,253,92,228,63,230,135,108,238,239,51,209,63,245,141,248,149,180,171,210,63,227,63,91,162,221,21,230,63,66,36,15,85,2,137,146,63,66,36,15,85,2,137,146,63,227,63,91,162,221,21,230,63,245,141,248,149,180,171,210,63,117,187,37,147,122,44,192,63,108,4,16,55,191,62,235,63,217,150,209,132,68,196,150,63,217,150,209,132,68,196,150,63,108,4,16,55,191,62,235,63,117,187,37,147,122,44,192,63,104,130,251,72,47,75,223,63,38,180,143,224,22,154,150,63,104,130,251,72,47,75,223,63,176,132,186,234,176,186,218,63,64,237,21,85,60,21,197,63,176,132,186,234,176,186,218,63,142,192,17,228,167,128,209,63,245,126,220,55,176,254,220,63,142,192,17,228,167,128,209,63,248,233,48,191,171,174,198,63,251,138,103,32,170,168,228,63,248,233,48,191,171,174,198,63,124,57,139,249,59,164,175,63,218,152,206,128,120,11,236,63,124,57,139,249,59,164,175,63,99,205,154,97,57,219,147,63,42,83,230,105,76,194,238,63,99,205,154,97,57,219,147,63,4,5,49,183,213,12,198,63,137,216,152,69,211,168,232,63,100,99,174,201,116,63,173,63,100,99,174,201,116,63,173,63,137,216,152,69,211,168,232,63,4,5,49,183,213,12,198,63,115,235,70,94,35,143,213,63,224,95,84,209,66,63,226,63,51,83,65,252,91,201,183,63,51,83,65,252,91,201,183,63,224,95,84,209,66,63,226,63,115,235,70,94,35,143,213,63,162,118,178,146,138,24,211,63,4,144,55,213,189,251,229,63,207,42,205,91,56,255,141,63,207,42,205,91,56,255,141,63,4,144,55,213,189,251,229,63,162,118,178,146,138,24,211,63,248,156,170,216,28,117,190,63,111,154,238,130,248,38,236,63,64,227,35,248,195,199,84,63,64,227,35,248,195,199,84,63,111,154,238,130,248,38,236,63,248,156,170,216,28,117,190,63,233,164,59,68,31,57,224,63,160,116,210,29,162,143,140,191,233,164,59,68,31,57,224,63,186,168,187,101,41,156,219,63,59,93,17,105,90,143,193,63,186,168,187,101,41,156,219,63,194,59,187,144,187,197,209,63,105,136,137,222,136,116,220,63,194,59,187,144,187,197,209,63,79,164,142,101,0,48,192,63,216,173,56,205,255,231,231,63,79,164,142,101,0,48,192,63,226,55,11,150,127,32,178,63,8,50,125,26,224,119,235,63,226,55,11,150,127,32,178,63,152,62,203,7,155,107,147,63,13,76,131,79,70,201,238,63,152,62,203,7,155,107,147,63,101,167,71,84,83,185,208,63,141,6,92,120,201,91,227,63,223,150,0,118,51,30,193,63,223,150,0,118,51,30,193,63,141,6,92,120,201,91,227,63,101,167,71,84,83,185,208,63,180,40,126,27,194,213,216,63,1,60,254,126,52,107,226,63,78,250,42,52,167,158,162,63,78,250,42,52,167,158,162,63,1,60,254,126,52,107,226,63,180,40,126,27,194,213,216,63,251,164,75,232,27,73,210,63,41,203,162,82,204,46,231,63,192,105,39,178,145,214,132,191,192,105,39,178,145,214,132,191,41,203,162,82,204,46,231,63,251,164,75,232,27,73,210,63,179,9,28,17,197,152,203,63,45,100,179,137,251,235,231,63,103,150,89,32,51,221,162,63,103,150,89,32,51,221,162,63,45,100,179,137,251,235,231,63,179,9,28,17,197,152,203,63,22,206,219,125,238,131,186,63,120,149,17,19,112,73,236,63,159,51,188,76,135,132,137,63,159,51,188,76,135,132,137,63,120,149,17,19,112,73,236,63,22,206,219,125,238,131,186,63,79,85,85,85,85,85,213,63,131,117,85,50,21,213,223,63,9,58,69,213,102,117,117,63,131,117,85,50,21,213,223,63,183,193,29,133,72,118,218,63,254,248,136,235,221,38,198,63,183,193,29,133,72,118,218,63,73,87,71,98,254,27,222,63,224,138,138,219,25,64,174,63,73,87,71,98,254,27,222,63,242,77,134,28,119,202,206,63,7,217,188,113,196,154,224,63,242,77,134,28,119,202,206,63,58,106,142,11,139,240,194,63,227,202,56,122,186,135,230,63,58,106,142,11,139,240,194,63,199,176,249,192,175,81,179,63,206,147,193,15,148,43,235,63,199,176,249,192,175,81,179,63,135,18,253,185,165,254,144,63,216,46,96,164,21,240,238,63,135,18,253,185,165,254,144,63,153,104,48,83,196,250,210,63,103,120,12,222,31,50,227,63,97,154,218,194,239,131,186,63,97,154,218,194,239,131,186,63,103,120,12,222,31,50,227,63,153,104,48,83,196,250,210,63,68,244,26,50,65,157,213,63,134,116,106,111,217,140,228,63,242,42,2,241,190,144,148,63,242,42,2,241,190,144,148,63,134,116,106,111,217,140,228,63,68,244,26,50,65,157,213,63,172,182,200,18,49,53,202,63,203,32,86,121,67,150,233,63,192,58,39,4,223,199,113,191,192,58,39,4,223,199,113,191,203,32,86,121,67,150,233,63,172,182,200,18,49,53,202,63,6,224,117,41,230,60,200,63,58,159,123,40,48,153,232,63,216,140,110,210,100,121,165,63,216,140,110,210,100,121,165,63,58,159,123,40,48,153,232,63,6,224,117,41,230,60,200,63,106,220,61,164,37,213,181,63,44,61,179,178,17,208,236,63,130,207,65,49,102,82,141,63,130,207,65,49,102,82,141,63,44,61,179,178,17,208,236,63,106,220,61,164,37,213,181,63,79,85,85,85,85,85,213,63,142,118,14,99,164,209,223,63,23,185,196,120,206,45,119,63,142,118,14,99,164,209,223,63,5,3,37,20,250,219,222,63,67,208,175,189,94,64,162,63,5,3,37,20,250,219,222,63,198,246,146,77,187,208,220,63,25,74,104,147,37,122,185,63,198,246,146,77,187,208,220,63,172,103,244,73,246,157,217,63,82,97,46,216,38,136,201,63,172,103,244,73,246,157,217,63,209,15,250,32,21,35,208,63,112,224,11,190,213,185,223,63,209,15,250,32,21,35,208,63,240,31,182,204,244,189,196,63,255,239,164,153,5,161,229,63,240,31,182,204,244,189,196,63,245,115,221,16,154,108,179,63,3,163,200,123,217,36,235,63,245,115,221,16,154,108,179,63,129,29,107,241,202,7,144,63,40,78,233,80,131,255,238,63,129,29,107,241,202,7,144,63,207,183,46,40,127,101,213,63,84,147,35,226,204,249,228,63,22,49,68,113,226,220,132,63,22,49,68,113,226,220,132,63,84,147,35,226,204,249,228,63,207,183,46,40,127,101,213,63,185,148,1,247,193,179,210,63,42,104,51,236,150,80,226,63,231,53,47,97,32,86,193,63,231,53,47,97,32,86,193,63,42,104,51,236,150,80,226,63,185,148,1,247,193,179,210,63,190,254,96,56,234,115,212,63,95,42,241,165,51,8,228,63,182,100,229,221,115,221,171,63,182,100,229,221,115,221,171,63,95,42,241,165,51,8,228,63,190,254,96,56,234,115,212,63,142,182,14,251,254,104,200,63,232,167,62,237,84,124,233,63,20,157,106,255,212,90,138,63,20,157,106,255,212,90,138,63,232,167,62,237,84,124,233,63,142,182,14,251,254,104,200,63,151,19,193,233,18,26,199,63,28,176,179,106,66,19,232,63,168,87,224,214,198,49,177,63,168,87,224,214,198,49,177,63,28,176,179,106,66,19,232,63,151,19,193,233,18,26,199,63,186,193,171,36,127,169,180,63,23,251,102,47,177,242,236,63,136,44,227,0,187,7,142,63,136,44,227,0,187,7,142,63,23,251,102,47,177,242,236,63,186,193,171,36,127,169,180,63,79,85,85,85,85,85,213,63,226,39,174,26,246,146,223,63,70,5,118,84,121,66,139,63,226,39,174,26,246,146,223,63,250,45,77,223,139,7,222,63,93,32,45,11,66,135,175,63,250,45,77,223,139,7,222,63,224,6,204,205,8,236,219,63,163,228,207,200,220,79,192,63,224,6,204,205,8,236,219,63,222,143,127,223,40,69,217,63,135,192,1,130,92,235,202,63,222,143,127,223,40,69,217,63,125,46,221,183,68,249,207,63,194,104,17,164,93,3,224,63,125,46,221,183,68,249,207,63,40,95,83,100,207,169,196,63,117,80,214,77,24,171,229,63,40,95,83,100,207,169,196,63,85,50,251,1,241,155,179,63,98,51,129,191,3,25,235,63,85,50,251,1,241,155,179,63,190,51,124,167,161,213,152,63,196,60,136,229,165,114,238,63,190,51,124,167,161,213,152,63,69,177,70,216,71,23,166,63,224,41,247,4,23,61,237,63,69,177,70,216,71,23,166,63,60,130,59,235,103,248,214,63,146,96,185,236,187,62,228,63,24,148,55,106,7,68,129,63,24,148,55,106,7,68,129,63,146,96,185,236,187,62,228,63,60,130,59,235,103,248,214,63,35,181,96,124,125,215,210,63,102,73,35,30,147,97,226,63,33,112,177,142,184,202,192,63,33,112,177,142,184,202,192,63,102,73,35,30,147,97,226,63,35,181,96,124,125,215,210,63,141,215,42,119,23,205,212,63,133,101,166,160,48,254,227,63,207,235,66,60,58,180,169,63,207,235,66,60,58,180,169,63,133,101,166,160,48,254,227,63,141,215,42,119,23,205,212,63,220,227,141,248,122,165,199,63,111,201,129,181,66,247,231,63,138,236,213,98,244,250,176,63,138,236,213,98,244,250,176,63,111,201,129,181,66,247,231,63,220,227,141,248,122,165,199,63,203,105,67,150,136,1,204,63,20,81,132,2,88,157,232,63,54,30,181,250,117,145,136,63,54,30,181,250,117,145,136,63,20,81,132,2,88,157,232,63,203,105,67,150,136,1,204,63,0,44,185,244,231,230,185,63,63,42,101,79,107,73,236,63,38,16,236,128,236,109,142,63,38,16,236,128,236,109,142,63,63,42,101,79,107,73,236,63,0,44,185,244,231,230,185,63,39,186,0,29,49,96,149,63,244,41,72,49,196,58,240,63,161,155,133,183,158,8,162,191,161,155,133,183,158,8,162,191,244,41,72,49,196,58,240,63,39,186,0,29,49,96,149,63,79,85,85,85,85,85,213,63,189,129,145,32,197,85,223,63,72,199,207,237,91,71,149,63,189,129,145,32,197,85,223,63,88,160,61,232,33,23,221,63,135,253,18,190,240,70,183,63,88,160,61,232,33,23,221,63,219,82,221,150,207,176,217,63,146,180,138,164,193,60,201,63,219,82,221,150,207,176,217,63,104,102,134,83,245,90,208,63,67,51,243,88,21,74,223,63,104,102,134,83,245,90,208,63,215,116,49,113,125,170,198,63,157,69,103,71,193,170,228,63,215,116,49,113,125,170,198,63,15,104,45,16,246,44,188,63,252,165,244,123,194,244,232,63,15,104,45,16,246,44,188,63,221,154,78,114,63,110,172,63,173,44,182,17,56,114,236,63,221,154,78,114,63,110,172,63,216,36,26,225,125,217,137,63,226,46,247,16,52,49,239,63,216,36,26,225,125,217,137,63,138,190,59,227,11,84,217,63,244,125,48,93,100,56,227,63,226,198,162,49,177,149,109,63,226,198,162,49,177,149,109,63,244,125,48,93,100,56,227,63,138,190,59,227,11,84,217,63,154,90,142,246,31,181,211,63,26,86,149,203,226,215,225,63,102,242,141,228,52,54,193,63,102,242,141,228,52,54,193,63,26,86,149,203,226,215,225,63,154,90,142,246,31,181,211,63,163,139,192,53,170,238,208,63,126,58,23,98,83,18,231,63,12,236,31,194,224,149,141,63,12,236,31,194,224,149,141,63,126,58,23,98,83,18,231,63,163,139,192,53,170,238,208,63,240,109,3,10,79,242,214,63,12,18,184,161,93,6,227,63,200,111,99,148,173,7,168,63,200,111,99,148,173,7,168,63,12,18,184,161,93,6,227,63,240,109,3,10,79,242,214,63,168,209,217,119,8,51,196,63,88,206,190,173,205,219,234,63,94,71,189,74,52,112,103,63,94,71,189,74,52,112,103,63,88,206,190,173,205,219,234,63,168,209,217,119,8,51,196,63,97,139,142,19,132,54,179,63,174,105,163,14,80,111,230,63,153,19,171,187,125,167,204,63,153,19,171,187,125,167,204,63,174,105,163,14,80,111,230,63,97,139,142,19,132,54,179,63,233,81,131,251,222,58,194,63,10,125,119,18,116,85,234,63,193,231,122,234,66,189,161,63,193,231,122,234,66,189,161,63,10,125,119,18,116,85,234,63,233,81,131,251,222,58,194,63,13,14,174,133,65,196,176,63,253,14,232,101,58,148,237,63,97,208,139,88,90,207,132,63,97,208,139,88,90,207,132,63,253,14,232,101,58,148,237,63,13,14,174,133,65,196,176,63,79,85,85,85,85,85,213,63,250,224,169,68,201,7,224,63,225,230,131,167,18,37,95,191,250,224,169,68,201,7,224,63,149,9,244,143,225,62,223,63,139,206,126,1,206,35,152,63,149,9,244,143,225,62,223,63,74,238,11,155,245,32,221,63,249,141,160,39,83,248,182,63,74,238,11,155,245,32,221,63,142,186,184,132,78,186,217,63,162,21,29,237,197,22,201,63,142,186,184,132,78,186,217,63,193,122,172,167,140,96,208,63,107,10,167,176,230,62,223,63,193,122,172,167,140,96,208,63,97,67,208,203,42,151,198,63,80,222,23,154,106,180,228,63,97,67,208,203,42,151,198,63,19,35,222,240,240,170,186,63,50,119,200,195,67,85,233,63,19,35,222,240,240,170,186,63,214,64,66,240,218,43,171,63,229,183,247,161,132,154,236,63,214,64,66,240,218,43,171,63,96,67,86,89,12,79,165,63,148,55,213,116,30,86,237,63,96,67,86,89,12,79,165,63,247,78,86,45,67,184,135,63,136,77,149,230,61,66,239,63,247,78,86,45,67,184,135,63,217,27,190,239,29,18,214,63,114,123,167,133,166,103,227,63,25,106,151,39,168,244,168,63,25,106,151,39,168,244,168,63,114,123,167,133,166,103,227,63,217,27,190,239,29,18,214,63,105,28,123,137,149,46,216,63,12,94,18,146,251,180,227,63,149,223,9,152,212,220,121,63,149,223,9,152,212,220,121,63,12,94,18,146,251,180,227,63,105,28,123,137,149,46,216,63,114,110,151,106,234,159,211,63,163,65,210,161,184,227,225,63,144,28,136,163,72,49,193,63,144,28,136,163,72,49,193,63,163,65,210,161,184,227,225,63,114,110,151,106,234,159,211,63,149,167,13,67,249,236,207,63,108,119,10,78,72,146,231,63,184,171,135,76,88,158,140,63,184,171,135,76,88,158,140,63,108,119,10,78,72,146,231,63,149,167,13,67,249,236,207,63,210,146,180,37,60,60,203,63,137,5,176,242,10,198,230,63,20,174,22,31,48,87,179,63,20,174,22,31,48,87,179,63,137,5,176,242,10,198,230,63,210,146,180,37,60,60,203,63,109,218,190,110,195,207,194,63,248,183,91,110,156,144,235,63,43,167,219,130,82,35,129,191,43,167,219,130,82,35,129,191,248,183,91,110,156,144,235,63,109,218,190,110,195,207,194,63,15,110,236,162,9,161,193,63,201,83,38,220,32,189,234,63,119,22,210,99,151,83,155,63,119,22,210,99,151,83,155,63,201,83,38,220,32,189,234,63,15,110,236,162,9,161,193,63,12,163,252,8,125,144,174,63,60,232,194,3,144,192,237,63,0,103,83,235,10,154,133,63,0,103,83,235,10,154,133,63,60,232,194,3,144,192,237,63,12,163,252,8,125,144,174,63,79,85,85,85,85,85,213,63,88,85,85,85,85,85,229,63,97,85,85,85,85,85,197,63,97,85,85,85,85,85,197,63,79,85,85,85,85,85,213,63,51,51,51,51,51,51,227,63,154,153,153,153,153,153,201,63,154,153,153,153,153,153,201,63,32,121,161,175,163,172,187,63,220,208,11,138,107,138,220,63,220,208,11,138,107,138,220,63,210,147,120,133,157,35,234,63,219,176,29,234,137,113,183,63,219,176,29,234,137,113,183,63,79,85,85,85,85,85,213,63,16,68,199,40,20,147,174,63,191,139,115,189,206,22,222,63,191,139,115,189,206,22,222,63,153,66,225,152,133,132,233,63,119,245,122,156,233,237,185,63,119,245,122,156,233,237,185,63,175,137,138,155,175,11,224,63,145,236,234,200,160,232,207,63,145,236,234,200,160,232,207,63,143,106,129,126,89,246,235,63,196,85,250,5,154,38,176,63,196,85,250,5,154,38,176,63,9,57,14,246,211,53,171,63,9,57,14,246,211,53,171,63,87,27,219,134,208,220,211,63,196,142,49,125,58,94,228,63,87,27,219,134,208,220,211,63,196,142,49,125,58,94,228,63,79,85,85,85,85,85,213,63,125,194,5,191,251,172,222,63,193,30,125,32,130,169,208,63,193,30,125,32,130,169,208,63,8,49,131,140,232,212,235,63,225,59,243,205,93,172,176,63,225,59,243,205,93,172,176,63,162,110,196,224,239,237,168,63,162,110,196,224,239,237,168,63,240,208,88,0,253,5,212,63,158,80,199,129,34,110,228,63,240,208,88,0,253,5,212,63,158,80,199,129,34,110,228,63,79,85,85,85,85,85,213,63,194,161,249,19,154,215,180,63,200,203,128,189,12,101,221,63,200,203,128,189,12,101,221,63,41,79,96,120,100,21,229,63,174,97,63,15,55,213,197,63,174,97,63,15,55,213,197,63,223,100,222,142,213,195,236,63,6,217,12,137,83,225,169,63,6,217,12,137,83,225,169,63,142,184,118,243,71,49,129,63,142,184,118,243,71,49,129,63,34,21,156,49,215,214,208,63,141,26,100,71,207,79,231,63,34,21,156,49,215,214,208,63,141,26,100,71,207,79,231,63,79,85,85,85,85,85,213,63,5,192,242,212,84,33,149,63,9,106,88,89,245,86,223,63,9,106,88,89,245,86,223,63,142,167,29,131,229,26,192,63,38,150,56,159,70,249,219,63,38,150,56,159,70,249,219,63,109,148,97,40,121,244,227,63,55,215,60,175,13,23,200,63,55,215,60,175,13,23,200,63,96,130,179,210,38,35,237,63,68,237,99,106,201,230,166,63,68,237,99,106,201,230,166,63,187,248,5,254,123,220,162,63,187,248,5,254,123,220,162,63,26,23,175,129,72,105,204,63,174,218,179,31,230,183,231,63,26,23,175,129,72,105,204,63,174,218,179,31,230,183,231,63,79,85,85,85,85,85,213,63,98,188,149,71,121,137,157,63,20,82,195,53,180,19,223,63,20,82,195,53,180,19,223,63,210,189,113,253,64,254,232,63,183,8,57,10,252,6,188,63,183,8,57,10,252,6,188,63,149,59,127,80,118,35,194,63,149,59,127,80,118,35,194,63,136,39,40,76,73,181,211,63,87,29,204,197,125,156,225,63,136,39,40,76,73,181,211,63,87,29,204,197,125,156,225,63,122,76,92,208,134,154,153,63,122,76,92,208,134,154,153,63,74,109,98,106,247,146,207,63],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);allocate([74,130,228,238,109,78,231,63,74,109,98,106,247,146,207,63,74,130,228,238,109,78,231,63,162,190,248,144,34,138,131,63,162,190,248,144,34,138,131,63,26,39,93,146,4,26,177,63,25,120,112,227,150,142,237,63,26,39,93,146,4,26,177,63,25,120,112,227,150,142,237,63,71,110,206,16,138,184,177,191,224,230,12,161,136,27,225,63,224,230,12,161,136,27,225,63,78,91,167,211,37,221,201,63,44,41,22,139,182,136,217,63,44,41,22,139,182,136,217,63,190,116,172,120,248,252,226,63,114,22,167,14,15,6,202,63,114,22,167,14,15,6,202,63,53,232,191,253,141,92,232,63,9,95,0,9,200,141,190,63,9,95,0,9,200,141,190,63,64,210,148,145,187,237,237,63,1,110,89,115,35,146,160,63,1,110,89,115,35,146,160,63,80,21,9,238,242,176,169,63,80,21,9,238,242,176,169,63,160,19,87,105,223,210,214,63,228,228,115,28,129,251,226,63,160,19,87,105,223,210,214,63,228,228,115,28,129,251,226,63,103,65,19,166,203,134,149,63,103,65,19,166,203,134,149,63,47,223,3,213,89,243,197,63,41,110,142,45,243,214,233,63,47,223,3,213,89,243,197,63,41,110,142,45,243,214,233,63,204,7,170,44,123,33,152,63,194,175,154,38,244,62,223,63,194,175,154,38,244,62,223,63,188,2,175,199,113,220,190,63,159,31,10,199,113,36,220,63,159,31,10,199,113,36,220,63,77,201,4,101,250,72,221,63,89,155,125,205,130,91,209,63,89,155,125,205,130,91,209,63,181,139,201,220,202,213,231,63,151,232,108,70,106,84,192,63,151,232,108,70,106,84,192,63,108,212,61,141,188,162,238,63,181,184,34,44,55,212,149,63,181,184,34,44,55,212,149,63,204,55,213,184,38,135,189,63,204,55,213,184,38,135,189,63,56,215,23,69,73,165,209,63,107,109,89,134,118,124,227,63,56,215,23,69,73,165,209,63,107,109,89,134,118,124,227,63,14,136,245,135,238,98,151,63,14,136,245,135,238,98,151,63,200,81,120,2,61,1,210,63,219,42,132,10,74,68,230,63,200,81,120,2,61,1,210,63,219,42,132,10,74,68,230,63,32,168,254,229,6,90,154,63,32,168,254,229,6,90,154,63,1,164,235,128,175,194,189,63,63,150,178,216,217,116,235,63,1,164,235,128,175,194,189,63,63,150,178,216,217,116,235,63,79,85,85,85,85,85,213,63,109,66,214,187,90,72,132,63,255,166,16,149,222,174,223,63,255,166,16,149,222,174,223,63,57,247,57,138,95,4,176,63,25,193,184,14,116,255,221,63,25,193,184,14,116,255,221,63,181,190,241,254,237,225,197,63,92,144,67,128,132,135,218,63,92,144,67,128,132,135,218,63,99,4,23,117,132,81,225,63,40,247,209,21,247,92,205,63,40,247,209,21,247,92,205,63,28,79,209,225,68,173,232,63,142,195,186,120,236,74,189,63,142,195,186,120,236,74,189,63,218,164,97,123,125,105,238,63,96,178,229,73,40,104,153,63,96,178,229,73,40,104,153,63,143,106,202,42,87,72,184,63,143,106,202,42,87,72,184,63,230,135,108,238,239,51,209,63,187,110,112,35,253,92,228,63,230,135,108,238,239,51,209,63,187,110,112,35,253,92,228,63,66,36,15,85,2,137,146,63,66,36,15,85,2,137,146,63,245,141,248,149,180,171,210,63,227,63,91,162,221,21,230,63,245,141,248,149,180,171,210,63,227,63,91,162,221,21,230,63,217,150,209,132,68,196,150,63,217,150,209,132,68,196,150,63,117,187,37,147,122,44,192,63,108,4,16,55,191,62,235,63,117,187,37,147,122,44,192,63,108,4,16,55,191,62,235,63,38,180,143,224,22,154,150,63,104,130,251,72,47,75,223,63,104,130,251,72,47,75,223,63,64,237,21,85,60,21,197,63,176,132,186,234,176,186,218,63,176,132,186,234,176,186,218,63,245,126,220,55,176,254,220,63,142,192,17,228,167,128,209,63,142,192,17,228,167,128,209,63,251,138,103,32,170,168,228,63,248,233,48,191,171,174,198,63,248,233,48,191,171,174,198,63,218,152,206,128,120,11,236,63,124,57,139,249,59,164,175,63,124,57,139,249,59,164,175,63,42,83,230,105,76,194,238,63,99,205,154,97,57,219,147,63,99,205,154,97,57,219,147,63,100,99,174,201,116,63,173,63,100,99,174,201,116,63,173,63,4,5,49,183,213,12,198,63,137,216,152,69,211,168,232,63,4,5,49,183,213,12,198,63,137,216,152,69,211,168,232,63,51,83,65,252,91,201,183,63,51,83,65,252,91,201,183,63,115,235,70,94,35,143,213,63,224,95,84,209,66,63,226,63,115,235,70,94,35,143,213,63,224,95,84,209,66,63,226,63,207,42,205,91,56,255,141,63,207,42,205,91,56,255,141,63,162,118,178,146,138,24,211,63,4,144,55,213,189,251,229,63,162,118,178,146,138,24,211,63,4,144,55,213,189,251,229,63,64,227,35,248,195,199,84,63,64,227,35,248,195,199,84,63,248,156,170,216,28,117,190,63,111,154,238,130,248,38,236,63,248,156,170,216,28,117,190,63,111,154,238,130,248,38,236,63,160,116,210,29,162,143,140,191,233,164,59,68,31,57,224,63,233,164,59,68,31,57,224,63,59,93,17,105,90,143,193,63,186,168,187,101,41,156,219,63,186,168,187,101,41,156,219,63,105,136,137,222,136,116,220,63,194,59,187,144,187,197,209,63,194,59,187,144,187,197,209,63,216,173,56,205,255,231,231,63,79,164,142,101,0,48,192,63,79,164,142,101,0,48,192,63,8,50,125,26,224,119,235,63,226,55,11,150,127,32,178,63,226,55,11,150,127,32,178,63,13,76,131,79,70,201,238,63,152,62,203,7,155,107,147,63,152,62,203,7,155,107,147,63,223,150,0,118,51,30,193,63,223,150,0,118,51,30,193,63,101,167,71,84,83,185,208,63,141,6,92,120,201,91,227,63,101,167,71,84,83,185,208,63,141,6,92,120,201,91,227,63,78,250,42,52,167,158,162,63,78,250,42,52,167,158,162,63,180,40,126,27,194,213,216,63,1,60,254,126,52,107,226,63,180,40,126,27,194,213,216,63,1,60,254,126,52,107,226,63,192,105,39,178,145,214,132,191,192,105,39,178,145,214,132,191,251,164,75,232,27,73,210,63,41,203,162,82,204,46,231,63,251,164,75,232,27,73,210,63,41,203,162,82,204,46,231,63,103,150,89,32,51,221,162,63,103,150,89,32,51,221,162,63,179,9,28,17,197,152,203,63,45,100,179,137,251,235,231,63,179,9,28,17,197,152,203,63,45,100,179,137,251,235,231,63,159,51,188,76,135,132,137,63,159,51,188,76,135,132,137,63,22,206,219,125,238,131,186,63,120,149,17,19,112,73,236,63,22,206,219,125,238,131,186,63,120,149,17,19,112,73,236,63,79,85,85,85,85,85,213,63,9,58,69,213,102,117,117,63,131,117,85,50,21,213,223,63,131,117,85,50,21,213,223,63,254,248,136,235,221,38,198,63,183,193,29,133,72,118,218,63,183,193,29,133,72,118,218,63,224,138,138,219,25,64,174,63,73,87,71,98,254,27,222,63,73,87,71,98,254,27,222,63,7,217,188,113,196,154,224,63,242,77,134,28,119,202,206,63,242,77,134,28,119,202,206,63,227,202,56,122,186,135,230,63,58,106,142,11,139,240,194,63,58,106,142,11,139,240,194,63,206,147,193,15,148,43,235,63,199,176,249,192,175,81,179,63,199,176,249,192,175,81,179,63,216,46,96,164,21,240,238,63,135,18,253,185,165,254,144,63,135,18,253,185,165,254,144,63,97,154,218,194,239,131,186,63,97,154,218,194,239,131,186,63,153,104,48,83,196,250,210,63,103,120,12,222,31,50,227,63,153,104,48,83,196,250,210,63,103,120,12,222,31,50,227,63,242,42,2,241,190,144,148,63,242,42,2,241,190,144,148,63,68,244,26,50,65,157,213,63,134,116,106,111,217,140,228,63,68,244,26,50,65,157,213,63,134,116,106,111,217,140,228,63,192,58,39,4,223,199,113,191,192,58,39,4,223,199,113,191,172,182,200,18,49,53,202,63,203,32,86,121,67,150,233,63,172,182,200,18,49,53,202,63,203,32,86,121,67,150,233,63,216,140,110,210,100,121,165,63,216,140,110,210,100,121,165,63,6,224,117,41,230,60,200,63,58,159,123,40,48,153,232,63,6,224,117,41,230,60,200,63,58,159,123,40,48,153,232,63,130,207,65,49,102,82,141,63,130,207,65,49,102,82,141,63,106,220,61,164,37,213,181,63,44,61,179,178,17,208,236,63,106,220,61,164,37,213,181,63,44,61,179,178,17,208,236,63,79,85,85,85,85,85,213,63,23,185,196,120,206,45,119,63,142,118,14,99,164,209,223,63,142,118,14,99,164,209,223,63,67,208,175,189,94,64,162,63,5,3,37,20,250,219,222,63,5,3,37,20,250,219,222,63,25,74,104,147,37,122,185,63,198,246,146,77,187,208,220,63,198,246,146,77,187,208,220,63,82,97,46,216,38,136,201,63,172,103,244,73,246,157,217,63,172,103,244,73,246,157,217,63,112,224,11,190,213,185,223,63,209,15,250,32,21,35,208,63,209,15,250,32,21,35,208,63,255,239,164,153,5,161,229,63,240,31,182,204,244,189,196,63,240,31,182,204,244,189,196,63,3,163,200,123,217,36,235,63,245,115,221,16,154,108,179,63,245,115,221,16,154,108,179,63,40,78,233,80,131,255,238,63,129,29,107,241,202,7,144,63,129,29,107,241,202,7,144,63,22,49,68,113,226,220,132,63,22,49,68,113,226,220,132,63,207,183,46,40,127,101,213,63,84,147,35,226,204,249,228,63,207,183,46,40,127,101,213,63,84,147,35,226,204,249,228,63,231,53,47,97,32,86,193,63,231,53,47,97,32,86,193,63,185,148,1,247,193,179,210,63,42,104,51,236,150,80,226,63,185,148,1,247,193,179,210,63,42,104,51,236,150,80,226,63,182,100,229,221,115,221,171,63,182,100,229,221,115,221,171,63,190,254,96,56,234,115,212,63,95,42,241,165,51,8,228,63,190,254,96,56,234,115,212,63,95,42,241,165,51,8,228,63,20,157,106,255,212,90,138,63,20,157,106,255,212,90,138,63,142,182,14,251,254,104,200,63,232,167,62,237,84,124,233,63,142,182,14,251,254,104,200,63,232,167,62,237,84,124,233,63,168,87,224,214,198,49,177,63,168,87,224,214,198,49,177,63,151,19,193,233,18,26,199,63,28,176,179,106,66,19,232,63,151,19,193,233,18,26,199,63,28,176,179,106,66,19,232,63,136,44,227,0,187,7,142,63,136,44,227,0,187,7,142,63,186,193,171,36,127,169,180,63,23,251,102,47,177,242,236,63,186,193,171,36,127,169,180,63,23,251,102,47,177,242,236,63,79,85,85,85,85,85,213,63,70,5,118,84,121,66,139,63,226,39,174,26,246,146,223,63,226,39,174,26,246,146,223,63,93,32,45,11,66,135,175,63,250,45,77,223,139,7,222,63,250,45,77,223,139,7,222,63,163,228,207,200,220,79,192,63,224,6,204,205,8,236,219,63,224,6,204,205,8,236,219,63,135,192,1,130,92,235,202,63,222,143,127,223,40,69,217,63,222,143,127,223,40,69,217,63,194,104,17,164,93,3,224,63,125,46,221,183,68,249,207,63,125,46,221,183,68,249,207,63,117,80,214,77,24,171,229,63,40,95,83,100,207,169,196,63,40,95,83,100,207,169,196,63,98,51,129,191,3,25,235,63,85,50,251,1,241,155,179,63,85,50,251,1,241,155,179,63,196,60,136,229,165,114,238,63,190,51,124,167,161,213,152,63,190,51,124,167,161,213,152,63,224,41,247,4,23,61,237,63,69,177,70,216,71,23,166,63,69,177,70,216,71,23,166,63,24,148,55,106,7,68,129,63,24,148,55,106,7,68,129,63,60,130,59,235,103,248,214,63,146,96,185,236,187,62,228,63,60,130,59,235,103,248,214,63,146,96,185,236,187,62,228,63,33,112,177,142,184,202,192,63,33,112,177,142,184,202,192,63,35,181,96,124,125,215,210,63,102,73,35,30,147,97,226,63,35,181,96,124,125,215,210,63,102,73,35,30,147,97,226,63,207,235,66,60,58,180,169,63,207,235,66,60,58,180,169,63,141,215,42,119,23,205,212,63,133,101,166,160,48,254,227,63,141,215,42,119,23,205,212,63,133,101,166,160,48,254,227,63,138,236,213,98,244,250,176,63,138,236,213,98,244,250,176,63,220,227,141,248,122,165,199,63,111,201,129,181,66,247,231,63,220,227,141,248,122,165,199,63,111,201,129,181,66,247,231,63,54,30,181,250,117,145,136,63,54,30,181,250,117,145,136,63,203,105,67,150,136,1,204,63,20,81,132,2,88,157,232,63,203,105,67,150,136,1,204,63,20,81,132,2,88,157,232,63,38,16,236,128,236,109,142,63,38,16,236,128,236,109,142,63,0,44,185,244,231,230,185,63,63,42,101,79,107,73,236,63,0,44,185,244,231,230,185,63,63,42,101,79,107,73,236,63,161,155,133,183,158,8,162,191,161,155,133,183,158,8,162,191,39,186,0,29,49,96,149,63,244,41,72,49,196,58,240,63,39,186,0,29,49,96,149,63,244,41,72,49,196,58,240,63,79,85,85,85,85,85,213,63,72,199,207,237,91,71,149,63,189,129,145,32,197,85,223,63,189,129,145,32,197,85,223,63,135,253,18,190,240,70,183,63,88,160,61,232,33,23,221,63,88,160,61,232,33,23,221,63,146,180,138,164,193,60,201,63,219,82,221,150,207,176,217,63,219,82,221,150,207,176,217,63,67,51,243,88,21,74,223,63,104,102,134,83,245,90,208,63,104,102,134,83,245,90,208,63,157,69,103,71,193,170,228,63,215,116,49,113,125,170,198,63,215,116,49,113,125,170,198,63,252,165,244,123,194,244,232,63,15,104,45,16,246,44,188,63,15,104,45,16,246,44,188,63,173,44,182,17,56,114,236,63,221,154,78,114,63,110,172,63,221,154,78,114,63,110,172,63,226,46,247,16,52,49,239,63,216,36,26,225,125,217,137,63,216,36,26,225,125,217,137,63,226,198,162,49,177,149,109,63,226,198,162,49,177,149,109,63,138,190,59,227,11,84,217,63,244,125,48,93,100,56,227,63,138,190,59,227,11,84,217,63,244,125,48,93,100,56,227,63,102,242,141,228,52,54,193,63,102,242,141,228,52,54,193,63,154,90,142,246,31,181,211,63,26,86,149,203,226,215,225,63,154,90,142,246,31,181,211,63,26,86,149,203,226,215,225,63,12,236,31,194,224,149,141,63,12,236,31,194,224,149,141,63,163,139,192,53,170,238,208,63,126,58,23,98,83,18,231,63,163,139,192,53,170,238,208,63,126,58,23,98,83,18,231,63,200,111,99,148,173,7,168,63,200,111,99,148,173,7,168,63,240,109,3,10,79,242,214,63,12,18,184,161,93,6,227,63,240,109,3,10,79,242,214,63,12,18,184,161,93,6,227,63,94,71,189,74,52,112,103,63,94,71,189,74,52,112,103,63,168,209,217,119,8,51,196,63,88,206,190,173,205,219,234,63,168,209,217,119,8,51,196,63,88,206,190,173,205,219,234,63,153,19,171,187,125,167,204,63,153,19,171,187,125,167,204,63,97,139,142,19,132,54,179,63,174,105,163,14,80,111,230,63,97,139,142,19,132,54,179,63,174,105,163,14,80,111,230,63,193,231,122,234,66,189,161,63,193,231,122,234,66,189,161,63,233,81,131,251,222,58,194,63,10,125,119,18,116,85,234,63,233,81,131,251,222,58,194,63,10,125,119,18,116,85,234,63,97,208,139,88,90,207,132,63,97,208,139,88,90,207,132,63,13,14,174,133,65,196,176,63,253,14,232,101,58,148,237,63,13,14,174,133,65,196,176,63,253,14,232,101,58,148,237,63,79,85,85,85,85,85,213,63,225,230,131,167,18,37,95,191,250,224,169,68,201,7,224,63,250,224,169,68,201,7,224,63,139,206,126,1,206,35,152,63,149,9,244,143,225,62,223,63,149,9,244,143,225,62,223,63,249,141,160,39,83,248,182,63,74,238,11,155,245,32,221,63,74,238,11,155,245,32,221,63,162,21,29,237,197,22,201,63,142,186,184,132,78,186,217,63,142,186,184,132,78,186,217,63,107,10,167,176,230,62,223,63,193,122,172,167,140,96,208,63,193,122,172,167,140,96,208,63,80,222,23,154,106,180,228,63,97,67,208,203,42,151,198,63,97,67,208,203,42,151,198,63,50,119,200,195,67,85,233,63,19,35,222,240,240,170,186,63,19,35,222,240,240,170,186,63,229,183,247,161,132,154,236,63,214,64,66,240,218,43,171,63,214,64,66,240,218,43,171,63,148,55,213,116,30,86,237,63,96,67,86,89,12,79,165,63,96,67,86,89,12,79,165,63,136,77,149,230,61,66,239,63,247,78,86,45,67,184,135,63,247,78,86,45,67,184,135,63,25,106,151,39,168,244,168,63,25,106,151,39,168,244,168,63,217,27,190,239,29,18,214,63,114,123,167,133,166,103,227,63,217,27,190,239,29,18,214,63,114,123,167,133,166,103,227,63,149,223,9,152,212,220,121,63,149,223,9,152,212,220,121,63,105,28,123,137,149,46,216,63,12,94,18,146,251,180,227,63,105,28,123,137,149,46,216,63,12,94,18,146,251,180,227,63,144,28,136,163,72,49,193,63,144,28,136,163,72,49,193,63,114,110,151,106,234,159,211,63,163,65,210,161,184,227,225,63,114,110,151,106,234,159,211,63,163,65,210,161,184,227,225,63,184,171,135,76,88,158,140,63,184,171,135,76,88,158,140,63,149,167,13,67,249,236,207,63,108,119,10,78,72,146,231,63,149,167,13,67,249,236,207,63,108,119,10,78,72,146,231,63,20,174,22,31,48,87,179,63,20,174,22,31,48,87,179,63,210,146,180,37,60,60,203,63,137,5,176,242,10,198,230,63,210,146,180,37,60,60,203,63,137,5,176,242,10,198,230,63,43,167,219,130,82,35,129,191,43,167,219,130,82,35,129,191,109,218,190,110,195,207,194,63,248,183,91,110,156,144,235,63,109,218,190,110,195,207,194,63,248,183,91,110,156,144,235,63,119,22,210,99,151,83,155,63,119,22,210,99,151,83,155,63,15,110,236,162,9,161,193,63,201,83,38,220,32,189,234,63,15,110,236,162,9,161,193,63,201,83,38,220,32,189,234,63,0,103,83,235,10,154,133,63,0,103,83,235,10,154,133,63,12,163,252,8,125,144,174,63,60,232,194,3,144,192,237,63,12,163,252,8,125,144,174,63,60,232,194,3,144,192,237,63,0,0,0,0,0,0,0,64,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,118,28,199,113,28,199,225,63,29,199,113,28,199,113,236,63,118,28,199,113,28,199,225,63,110,182,231,247,64,67,214,63,201,36,12,132,95,222,228,63,201,36,12,132,95,222,228,63,110,182,231,247,64,67,214,63,223,188,154,120,86,52,226,63,92,65,174,37,218,161,222,63,92,65,174,37,218,161,222,63,141,3,110,195,158,83,206,63,141,3,110,195,158,83,206,63,28,76,121,181,183,22,215,63,28,76,121,181,183,22,215,63,231,69,149,73,77,242,221,63,231,69,149,73,77,242,221,63,250,219,226,1,246,237,197,63,250,219,226,1,246,237,197,63,166,47,60,224,215,191,218,63,61,43,227,78,231,111,216,63,61,43,227,78,231,111,216,63,67,134,61,113,177,230,209,63,67,134,61,113,177,230,209,63,87,109,130,159,246,146,192,63,87,109,130,159,246,146,192,63,0,0,0,0,0,0,0,0,30,51,144,69,167,121,226,191,30,51,144,69,167,121,226,63,68,114,63,244,126,201,232,191,0,0,0,0,0,0,0,0,68,114,63,244,126,201,232,63,137,57,246,188,109,142,235,191,247,61,221,217,63,194,213,191,247,61,221,217,63,194,213,63,137,57,246,188,109,142,235,63,0,0,0,0,0,0,0,0,5,183,153,253,35,59,225,191,5,183,153,253,35,59,225,63,105,58,83,224,108,255,236,191,105,58,83,224,108,255,236,63,94,201,85,150,160,40,229,191,94,201,85,150,160,40,229,63,197,117,54,208,18,139,206,191,197,117,54,208,18,139,206,63,30,160,128,78,202,214,237,191,30,160,128,78,202,214,237,63,0,0,0,0,0,0,0,0,98,253,25,241,93,249,217,191,98,253,25,241,93,249,217,63,214,161,227,155,159,186,231,191,214,161,227,155,159,186,231,63,41,98,124,142,23,95,238,191,41,98,124,142,23,95,238,63,156,164,0,0,63,72,2,0,168,0,0,0,0,0,0,0,156,164,0,0,14,79,2,0,128,98,0,0,0,0,0,0,116,164,0,0,27,79,2,0,156,164,0,0,40,79,2,0,128,98,0,0,0,0,0,0,116,164,0,0,58,79,2,0,156,164,0,0,71,79,2,0,128,98,0,0,0,0,0,0,156,164,0,0,83,79,2,0,152,98,0,0,0,0,0,0,156,164,0,0,116,79,2,0,176,98,0,0,0,0,0,0,156,164,0,0,186,79,2,0,176,98,0,0,0,0,0,0,156,164,0,0,150,79,2,0,208,98,0,0,0,0,0,0,156,164,0,0,220,79,2,0,192,98,0,0,0,0,0,0,156,164,0,0,1,80,2,0,192,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,164,0,0,152,101,2,0,152,99,0,0,0,0,0,0,156,164,0,0,215,101,2,0,152,99,0,0,0,0,0,0,156,164,0,0,239,101,2,0,144,99,0,0,0,0,0,0,156,164,0,0,8,102,2,0,144,99,0,0,0,0,0,0,156,164,0,0,32,102,2,0,16,107,0,0,0,0,0,0,116,164,0,0,58,102,2,0,156,164,0,0,76,102,2,0,104,99,0,0,0,0,0,0,156,164,0,0,118,102,2,0,104,99,0,0,0,0,0,0,116,164,0,0,160,102,2,0,116,164,0,0,209,102,2,0,196,164,0,0,2,103,2,0,0,0,0,0,1,0,0,0,112,99,0,0,3,244,255,255,196,164,0,0,49,103,2,0,0,0,0,0,1,0,0,0,128,99,0,0,3,244,255,255,196,164,0,0,96,103,2,0,0,0,0,0,1,0,0,0,112,99,0,0,3,244,255,255,196,164,0,0,143,103,2,0,0,0,0,0,1,0,0,0,128,99,0,0,3,244,255,255,156,164,0,0,190,103,2,0,40,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,164,0,0,58,104,2,0,8,107,0,0,0,0,0,0,196,164,0,0,80,104,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,56,106,0,0,2,0,0,0,196,164,0,0,98,104,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,64,106,0,0,2,0,0,0,196,164,0,0,132,104,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,64,106,0,0,2,0,0,0,196,164,0,0,167,104,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,64,106,0,0,2,0,0,0,156,164,0,0,202,104,2,0,136,100,0,0,0,0,0,0,156,164,0,0,236,104,2,0,136,100,0,0,0,0,0,0,196,164,0,0,15,105,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,64,106,0,0,2,0,0,0,156,164,0,0,49,105,2,0,24,100,0,0,0,0,0,0,156,164,0,0,71,105,2,0,24,100,0,0,0,0,0,0,156,164,0,0,91,105,2,0,24,100,0,0,0,0,0,0,196,164,0,0,111,105,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,56,106,0,0,2,0,0,0,156,164,0,0,129,105,2,0,24,100,0,0,0,0,0,0,156,164,0,0,150,105,2,0,24,100,0,0,0,0,0,0,196,164,0,0,171,105,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,72,106,0,0,0,0,0,0,196,164,0,0,239,105,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,96,106,0,0,0,0,0,0,196,164,0,0,51,106,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,120,106,0,0,0,0,0,0,196,164,0,0,119,106,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,144,106,0,0,0,0,0,0,196,164,0,0,187,106,2,0,0,0,0,0,3,0,0,0,24,100,0,0,2,0,0,0,168,106,0,0,2,0,0,0,176,106,0,0,0,8,0,0,196,164,0,0,0,107,2,0,0,0,0,0,3,0,0,0,24,100,0,0,2,0,0,0,168,106,0,0,2,0,0,0,184,106,0,0,0,8,0,0,196,164,0,0,69,107,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,192,106,0,0,0,8,0,0,196,164,0,0,138,107,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,192,106,0,0,0,8,0,0,196,164,0,0,207,107,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,200,106,0,0,2,0,0,0,196,164,0,0,235,107,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,200,106,0,0,2,0,0,0,196,164,0,0,7,108,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,200,106,0,0,2,0,0,0,196,164,0,0,35,108,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,200,106,0,0,2,0,0,0,196,164,0,0,63,108,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,208,106,0,0,0,0,0,0,196,164,0,0,133,108,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,216,106,0,0,0,0,0,0,196,164,0,0,203,108,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,224,106,0,0,0,0,0,0,196,164,0,0,17,109,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,232,106,0,0,0,0,0,0,196,164,0,0,87,109,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,240,106,0,0,2,0,0,0,196,164,0,0,108,109,2,0,0,0,0,0,2,0,0,0,24,100,0,0,2,0,0,0,240,106,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,164,0,0,200,112,2,0,116,164,0,0,177,112,2,0,196,164,0,0,155,112,2,0,0,0,0,0,1,0,0,0,0,107,0,0,0,0,0,0,196,164,0,0,108,112,2,0,0,0,0,0,1,0,0,0,0,107,0,0,0,0,0,0,196,164,0,0,86,112,2,0,0,0,0,0,1,0,0,0,248,106,0,0,0,0,0,0,196,164,0,0,39,112,2,0,0,0,0,0,1,0,0,0,248,106,0,0,0,0,0,0,116,164,0,0,20,112,2,0,116,164,0,0,242,111,2,0,116,164,0,0,208,111,2,0,116,164,0,0,187,111,2,0,116,164,0,0,166,111,2,0,116,164,0,0,141,111,2,0,116,164,0,0,116,111,2,0,116,164,0,0,91,111,2,0,116,164,0,0,66,111,2,0,116,164,0,0,42,111,2,0,116,164,0,0,61,112,2,0,116,164,0,0,130,112,2,0,116,164,0,0,221,112,2,0,156,164,0,0,246,112,2,0,136,98,0,0,0,0,0,0,116,164,0,0,13,113,2,0,156,164,0,0,38,113,2,0,32,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,0,0,0,8,0,0,0,1,0,0,0,2,0,0,0,200,255,255,255,200,255,255,255,8,0,0,0,3,0,0,0,4,0,0,0,76,107,0,0,132,107,0,0,152,107,0,0,96,107,0,0,56,0,0,0,0,0,0,0,208,99,0,0,5,0,0,0,6,0,0,0,200,255,255,255,200,255,255,255,208,99,0,0,7,0,0,0,8,0,0,0,0,0,0,0,24,0,0,0,9,0,0,0,10,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,176,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,2,0,0,0,0,0,0,0,136,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,3,0,0,0,2,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,0,0,0,0,64,1,0,0,19,0,0,0,20,0,0,0,21,0,0,0,15,0,0,0,16,0,0,0,4,0,0,0,17,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,4,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,2,0,0,0,17,0,0,0,0,0,0,0,48,1,0,0,22,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,9,0,0,0,7,0,0,0,21,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,8,1,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,10,0,0,0,8,0,0,0,27,0,0,0,28,0,0,0,2,0,0,0,29,0,0,0,0,0,0,0,232,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,11,0,0,0,9,0,0,0,33,0,0,0,34,0,0,0,3,0,0,0,35,0,0,0,0,0,0,0,216,0,0,0,19,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,37,0,0,0,12,0,0,0,38,0,0,0,18,0,0,0,19,0,0,0,10,0,0,0,13,0,0,0,20,0,0,0,2,0,0,0,21,0,0,0,11,0,0,0,12,0,0,0,14,0,0,0,3,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,2,0,0,0,28,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,15,0,0,0,16,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,4,0,0,0,32,0,0,0,0,0,0,0,192,0,0,0,19,0,0,0,36,0,0,0,37,0,0,0,39,0,0,0,40,0,0,0,17,0,0,0,41,0,0,0,33,0,0,0,34,0,0,0,16,0,0,0,18,0,0,0,35,0,0,0,3,0,0,0,36,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,5,0,0,0,37,0,0,0,38,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,3,0,0,0,43,0,0,0,19,0,0,0,20,0,0,0,20,0,0,0,21,0,0,0,21,0,0,0,44,0,0,0,45,0,0,0,46,0,0,0,6,0,0,0,47,0,0,0,0,0,0,0,24,1,0,0,38,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,7,0,0,0,1,0,0,0,22,0,0,0,48,0,0,0,49,0,0,0,42,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,43,0,0,0,5,0,0,0,50,0,0,0,1,0,0,0,6,0,0,0,2,0,0,0,23,0,0,0,0,0,0,0,80,1,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,44,0,0,0,45,0,0,0,46,0,0,0,22,0,0,0,47,0,0,0,51,0,0,0,52,0,0,0,53,0,0,0,24,0,0,0,1,0,0,0,23,0,0,0,24,0,0,0,54,0,0,0,25,0,0,0,25,0,0,0,1,0,0,0,55,0,0,0,56,0,0,0,26,0,0,0,7,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,6,0,0,0,1,0,0,0,57,0,0,0,58,0,0,0,27,0,0,0,1,0,0,0,4,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,48,0,0,0,49,0,0,0,50,0,0,0,26,0,0,0,27,0,0,0,0,0,0,0,112,1,0,0,46,0,0,0,47,0,0,0,48,0,0,0,49,0,0,0,51,0,0,0,52,0,0,0,53,0,0,0,28,0,0,0,50,0,0,0,28,0,0,0,6,0,0,0,8,0,0,0,0,0,0,0,144,1,0,0,51,0,0,0,52,0,0,0,53,0,0,0,54,0,0,0,3,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,54,0,0,0,55,0,0,0,1,0,0,0,59,0,0,0,5,0,0,0,0,0,0,0,168,1,0,0,55,0,0,0,56,0,0,0,57,0,0,0,58,0,0,0,56,0,0,0,57,0,0,0,58,0,0,0,29,0,0,0,0,0,0,0,184,1,0,0,59,0,0,0,60,0,0,0,61,0,0,0,62,0,0,0,59,0,0,0,60,0,0,0,61,0,0,0,30,0,0,0,0,0,0,0,200,1,0,0,63,0,0,0,64,0,0,0,65,0,0,0,66,0,0,0,62,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,32,0,0,0,33,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,67,0,0,0,60,0,0,0,34,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,252,255,255,255,200,1,0,0,1,0,0,0,2,0,0,0,35,0,0,0,36,0,0,0,1,0,0,0,0,0,0,0,240,1,0,0,68,0,0,0,69,0,0,0,65,0,0,0,66,0,0,0,62,0,0,0,63,0,0,0,64,0,0,0,31,0,0,0,1,0,0,0,32,0,0,0,33,0,0,0,32,0,0,0,33,0,0,0,9,0,0,0,70,0,0,0,67,0,0,0,60,0,0,0,34,0,0,0,9,0,0,0,61,0,0,0,71,0,0,0,72,0,0,0,73,0,0,0,2,0,0,0,34,0,0,0,35,0,0,0,37,0,0,0,36,0,0,0,65,0,0,0,10,0,0,0,38,0,0,0,66,0,0,0,67,0,0,0,10,0,0,0,4,0,0,0,37,0,0,0,38,0,0,0,2,0,0,0,2,0,0,0,7,0,0,0,8,0,0,0,68,0,0,0,9,0,0,0,69,0,0,0,39,0,0,0,70,0,0,0,3,0,0,0,62,0,0,0,63,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,3,0,0,0,40,0,0,0,41,0,0,0,7,0,0,0,42,0,0,0,43,0,0,0,71,0,0,0,72,0,0,0,10,0,0,0,73,0,0,0,74,0,0,0,11,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,1,0,0,0,8,0,0,0,75,0,0,0,12,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,13,0,0,0,3,0,0,0,14,0,0,0,44,0,0,0,44,0,0,0,45,0,0,0,46,0,0,0,45,0,0,0,46,0,0,0,47,0,0,0,47,0,0,0,48,0,0,0,49,0,0,0,4,0,0,0,50,0,0,0,51,0,0,0,52,0,0,0,76,0,0,0,77,0,0,0,64,0,0,0,78,0,0,0,53,0,0,0,74,0,0,0,75,0,0,0,48,0,0,0,4,0,0,0,65,0,0,0,79,0,0,0,80,0,0,0,1,0,0,0,76,0,0,0,77,0,0,0,78,0,0,0,15,0,0,0,81,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,5,0,0,0,79,0,0,0,80,0,0,0,5,0,0,0,11,0,0,0,49,0,0,0,82,0,0,0,15,0,0,0,54,0,0,0,3,0,0,0,50,0,0,0,12,0,0,0,1,0,0,0,2,0,0,0,9,0,0,0,20,0,0,0,21,0,0,0,55,0,0,0,51,0,0,0,252,255,255,255,240,1,0,0,52,0,0,0,2,0,0,0,35,0,0,0,36,0,0,0,56,0,0,0,0,0,0,0,40,2,0,0,81,0,0,0,82,0,0,0,65,0,0,0,66,0,0,0,62,0,0,0,83,0,0,0,84,0,0,0,53,0,0,0,1,0,0,0,32,0,0,0,33,0,0,0,54,0,0,0,55,0,0,0,13,0,0,0,83,0,0,0,84,0,0,0,66,0,0,0,57,0,0,0,22,0,0,0,67,0,0,0,85,0,0,0,86,0,0,0,87,0,0,0,4,0,0,0,56,0,0,0,57,0,0,0,58,0,0,0,58,0,0,0,85,0,0,0,23,0,0,0,59,0,0,0,86,0,0,0,87,0,0,0,14,0,0,0,10,0,0,0,59,0,0,0,60,0,0,0,3,0,0,0,6,0,0,0,16,0,0,0,17,0,0,0,88,0,0,0,18,0,0,0,89,0,0,0,60,0,0,0,90,0,0,0,7,0,0,0,68,0,0,0,69,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,4,0,0,0,61,0,0,0,62,0,0,0,8,0,0,0,63,0,0,0,64,0,0,0,91,0,0,0,92,0,0,0,19,0,0,0,93,0,0,0,94,0,0,0,20,0,0,0,61,0,0,0,62,0,0,0,63,0,0,0,64,0,0,0,65,0,0,0,11,0,0,0,12,0,0,0,2,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,95,0,0,0,21,0,0,0,6,0,0,0,2,0,0,0,2,0,0,0,22,0,0,0,7,0,0,0,23,0,0,0,65,0,0,0,66,0,0,0,67,0,0,0,68,0,0,0,66,0,0,0,67,0,0,0,69,0,0,0,68,0,0,0,69,0,0,0,70,0,0,0,8,0,0,0,71,0,0,0,72,0,0,0,73,0,0,0,96,0,0,0,97,0,0,0,70,0,0,0,98,0,0,0,74,0,0,0,88,0,0,0,89,0,0,0,70,0,0,0,8,0,0,0,71,0,0,0,99,0,0,0,100,0,0,0,2,0,0,0,90,0,0,0,91,0,0,0,92,0,0,0,28,0,0,0,101,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,9,0,0,0,93,0,0,0,94,0,0,0,9,0,0,0,15,0,0,0,71,0,0,0,102,0,0,0,24,0,0,0,75,0,0,0,5,0,0,0,72,0,0,0,16,0,0,0,3,0,0,0,4,0,0,0,15,0,0,0,33,0,0,0,34,0,0,0,76,0,0,0,73,0,0,0,252,255,255,255,40,2,0,0,74,0,0,0,2,0,0,0,35,0,0,0,36,0,0,0,77,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,88,2,0,0,95,0,0,0,96,0,0,0,65,0,0,0,66,0,0,0,62,0,0,0,103,0,0,0,104,0,0,0,75,0,0,0,1,0,0,0,32,0,0,0,33,0,0,0,76,0,0,0,77,0,0,0,17,0,0,0,97,0,0,0,67,0,0,0,60,0,0,0,34],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+20480);allocate([35,0,0,0,72,0,0,0,98,0,0,0,99,0,0,0,100,0,0,0,6,0,0,0,78,0,0,0,79,0,0,0,78,0,0,0,80,0,0,0,105,0,0,0,36,0,0,0,79,0,0,0,106,0,0,0,107,0,0,0,18,0,0,0,16,0,0,0,81,0,0,0,82,0,0,0,4,0,0,0,10,0,0,0,25,0,0,0,26,0,0,0,108,0,0,0,27,0,0,0,109,0,0,0,80,0,0,0,110,0,0,0,11,0,0,0,73,0,0,0,74,0,0,0,37,0,0,0,38,0,0,0,39,0,0,0,40,0,0,0,5,0,0,0,81,0,0,0,82,0,0,0,9,0,0,0,83,0,0,0,84,0,0,0,111,0,0,0,112,0,0,0,28,0,0,0,113,0,0,0,114,0,0,0,29,0,0,0,83,0,0,0,84,0,0,0,85,0,0,0,86,0,0,0,87,0,0,0,17,0,0,0,18,0,0,0,3,0,0,0,19,0,0,0,3,0,0,0,20,0,0,0,115,0,0,0,30,0,0,0,10,0,0,0,3,0,0,0,3,0,0,0,31,0,0,0,11,0,0,0,32,0,0,0,85,0,0,0,88,0,0,0,89,0,0,0,90,0,0,0,86,0,0,0,87,0,0,0,91,0,0,0,88,0,0,0,89,0,0,0,90,0,0,0,12,0,0,0,91,0,0,0,92,0,0,0,93,0,0,0,116,0,0,0,117,0,0,0,75,0,0,0,118,0,0,0,94,0,0,0,101,0,0,0,102,0,0,0,92,0,0,0,12,0,0,0,76,0,0,0,119,0,0,0,120,0,0,0,3,0,0,0,103,0,0,0,104,0,0,0,105,0,0,0,41,0,0,0,121,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,13,0,0,0,106,0,0,0,107,0,0,0,13,0,0,0,19,0,0,0,93,0,0,0,122,0,0,0,33,0,0,0,95,0,0,0,7,0,0,0,94,0,0,0,20,0,0,0,5,0,0,0,6,0,0,0,21,0,0,0,46,0,0,0,47,0,0,0,96,0,0,0,95,0,0,0,252,255,255,255,88,2,0,0,96,0,0,0,2,0,0,0,35,0,0,0,36,0,0,0,97,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,0,0,0,0,136,2,0,0,108,0,0,0,109,0,0,0,65,0,0,0,66,0,0,0,62,0,0,0,123,0,0,0,124,0,0,0,97,0,0,0,1,0,0,0,32,0,0,0,33,0,0,0,98,0,0,0,99,0,0,0,21,0,0,0,110,0,0,0,67,0,0,0,60,0,0,0,34,0,0,0,48,0,0,0,77,0,0,0,111,0,0,0,112,0,0,0,113,0,0,0,8,0,0,0,100,0,0,0,101,0,0,0,98,0,0,0,102,0,0,0,125,0,0,0,49,0,0,0,99,0,0,0,126,0,0,0,127,0,0,0,22,0,0,0,22,0,0,0,103,0,0,0,104,0,0,0,5,0,0,0,14,0,0,0,34,0,0,0,35,0,0,0,128,0,0,0,36,0,0,0,129,0,0,0,100,0,0,0,130,0,0,0,15,0,0,0,78,0,0,0,79,0,0,0,50,0,0,0,51,0,0,0,52,0,0,0,53,0,0,0,6,0,0,0,101,0,0,0,102,0,0,0,10,0,0,0,103,0,0,0,104,0,0,0,131,0,0,0,132,0,0,0,37,0,0,0,133,0,0,0,134,0,0,0,38,0,0,0,105,0,0,0,106,0,0,0,107,0,0,0,108,0,0,0,109,0,0,0,23,0,0,0,24,0,0,0,4,0,0,0,25,0,0,0,4,0,0,0,26,0,0,0,135,0,0,0,39,0,0,0,14,0,0,0,4,0,0,0,4,0,0,0,40,0,0,0,15,0,0,0,41,0,0,0,105,0,0,0,110,0,0,0,111,0,0,0,112,0,0,0,106,0,0,0,107,0,0,0,113,0,0,0,108,0,0,0,109,0,0,0,110,0,0,0,16,0,0,0,111,0,0,0,112,0,0,0,113,0,0,0,136,0,0,0,137,0,0,0,80,0,0,0,138,0,0,0,114,0,0,0,114,0,0,0,115,0,0,0,114,0,0,0,16,0,0,0,81,0,0,0,139,0,0,0,140,0,0,0,4,0,0,0,116,0,0,0,117,0,0,0,118,0,0,0,54,0,0,0,141,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,58,0,0,0,17,0,0,0,119,0,0,0,120,0,0,0,17,0,0,0,23,0,0,0,115,0,0,0,142,0,0,0,42,0,0,0,115,0,0,0,9,0,0,0,116,0,0,0,24,0,0,0,7,0,0,0,8,0,0,0,27,0,0,0,59,0,0,0,60,0,0,0,116,0,0,0,117,0,0,0,252,255,255,255,136,2,0,0,118,0,0,0,2,0,0,0,35,0,0,0,36,0,0,0,117,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,2,0,0,0,5,0,0,0,0,0,0,0,184,2,0,0,121,0,0,0,122,0,0,0,123,0,0,0,124,0,0,0,143,0,0,0,144,0,0,0,145,0,0,0,119,0,0,0,146,0,0,0,82,0,0,0,83,0,0,0,84,0,0,0,118,0,0,0,2,0,0,0,120,0,0,0,121,0,0,0,85,0,0,0,119,0,0,0,122,0,0,0,6,0,0,0,86,0,0,0,87,0,0,0,120,0,0,0,10,0,0,0,61,0,0,0,62,0,0,0,63,0,0,0,64,0,0,0,65,0,0,0,11,0,0,0,12,0,0,0,11,0,0,0,2,0,0,0,88,0,0,0,89,0,0,0,121,0,0,0,18,0,0,0,6,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,147,0,0,0,148,0,0,0,149,0,0,0,123,0,0,0,27,0,0,0,0,0,0,0,96,1,0,0,125,0,0,0,126,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,124,0,0,0,27,0,0,0,0,0,0,0,216,2,0,0,127,0,0,0,128,0,0,0,129,0,0,0,130,0,0,0,150,0,0,0,151,0,0,0,152,0,0,0,125,0,0,0,153,0,0,0,90,0,0,0,91,0,0,0,92,0,0,0,122,0,0,0,3,0,0,0,126,0,0,0,127,0,0,0,93,0,0,0,123,0,0,0,128,0,0,0,7,0,0,0,94,0,0,0,95,0,0,0,124,0,0,0,13,0,0,0,66,0,0,0,67,0,0,0,68,0,0,0,69,0,0,0,70,0,0,0,14,0,0,0,15,0,0,0,12,0,0,0,3,0,0,0,96,0,0,0,97,0,0,0,125,0,0,0,19,0,0,0,7,0,0,0,46,0,0,0,47,0,0,0,48,0,0,0,154,0,0,0,155,0,0,0,156,0,0,0,129,0,0,0,27,0,0,0,0,0,0,0,248,2,0,0,131,0,0,0,132,0,0,0,133,0,0,0,134,0,0,0,157,0,0,0,158,0,0,0,159,0,0,0,130,0,0,0,160,0,0,0,98,0,0,0,99,0,0,0,100,0,0,0,126,0,0,0,4,0,0,0,131,0,0,0,132,0,0,0,101,0,0,0,127,0,0,0,133,0,0,0,8,0,0,0,102,0,0,0,103,0,0,0,128,0,0,0,16,0,0,0,71,0,0,0,72,0,0,0,73,0,0,0,74,0,0,0,75,0,0,0,17,0,0,0,18,0,0,0,13,0,0,0,4,0,0,0,104,0,0,0,105,0,0,0,129,0,0,0,20,0,0,0,8,0,0,0,49,0,0,0,50,0,0,0,51,0,0,0,161,0,0,0,162,0,0,0,163,0,0,0,134,0,0,0,27,0,0,0,0,0,0,0,8,3,0,0,135,0,0,0,136,0,0,0,137,0,0,0,138,0,0,0,164,0,0,0,165,0,0,0,166,0,0,0,135,0,0,0,167,0,0,0,106,0,0,0,107,0,0,0,108,0,0,0,130,0,0,0,5,0,0,0,136,0,0,0,137,0,0,0,109,0,0,0,131,0,0,0,138,0,0,0,9,0,0,0,110,0,0,0,111,0,0,0,132,0,0,0,19,0,0,0,76,0,0,0,77,0,0,0,78,0,0,0,79,0,0,0,80,0,0,0,20,0,0,0,21,0,0,0,14,0,0,0,5,0,0,0,112,0,0,0,113,0,0,0,133,0,0,0,21,0,0,0,9,0,0,0,52,0,0,0,53,0,0,0,54,0,0,0,168,0,0,0,169,0,0,0,170,0,0,0,139,0,0,0,27,0,0,0,0,0,0,0,24,3,0,0,139,0,0,0,140,0,0,0,141,0,0,0,142,0,0,0,171,0,0,0,172,0,0,0,173,0,0,0,140,0,0,0,174,0,0,0,114,0,0,0,115,0,0,0,116,0,0,0,134,0,0,0,6,0,0,0,141,0,0,0,142,0,0,0,117,0,0,0,135,0,0,0,143,0,0,0,10,0,0,0,118,0,0,0,119,0,0,0,136,0,0,0,22,0,0,0,81,0,0,0,82,0,0,0,83,0,0,0,84,0,0,0,85,0,0,0,23,0,0,0,24,0,0,0,15,0,0,0,6,0,0,0,120,0,0,0,121,0,0,0,137,0,0,0,22,0,0,0,10,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,175,0,0,0,176,0,0,0,177,0,0,0,144,0,0,0,27,0,0,0,0,0,0,0,40,3,0,0,143,0,0,0,144,0,0,0,145,0,0,0,146,0,0,0,178,0,0,0,179,0,0,0,180,0,0,0,145,0,0,0,181,0,0,0,122,0,0,0,123,0,0,0,124,0,0,0,138,0,0,0,7,0,0,0,146,0,0,0,147,0,0,0,125,0,0,0,139,0,0,0,148,0,0,0,11,0,0,0,126,0,0,0,127,0,0,0,140,0,0,0,25,0,0,0,86,0,0,0,87,0,0,0,88,0,0,0,89,0,0,0,90,0,0,0,26,0,0,0,27,0,0,0,16,0,0,0,7,0,0,0,128,0,0,0,129,0,0,0,141,0,0,0,23,0,0,0,11,0,0,0,58,0,0,0,59,0,0,0,60,0,0,0,182,0,0,0,183,0,0,0,184,0,0,0,124,0,0,0,149,0,0,0,0,0,0,0,56,3,0,0,147,0,0,0,148,0,0,0,149,0,0,0,150,0,0,0,185,0,0,0,186,0,0,0,187,0,0,0,150,0,0,0,188,0,0,0,130,0,0,0,131,0,0,0,132,0,0,0,142,0,0,0,8,0,0,0,151,0,0,0,152,0,0,0,133,0,0,0,143,0,0,0,153,0,0,0,12,0,0,0,134,0,0,0,135,0,0,0,144,0,0,0,28,0,0,0,91,0,0,0,92,0,0,0,93,0,0,0,94,0,0,0,95,0,0,0,29,0,0,0,30,0,0,0,17,0,0,0,8,0,0,0,136,0,0,0,137,0,0,0,145,0,0,0,24,0,0,0,12,0,0,0,61,0,0,0,62,0,0,0,63,0,0,0,189,0,0,0,190,0,0,0,191,0,0,0,154,0,0,0,27,0,0,0,0,0,0,0,72,3,0,0,151,0,0,0,152,0,0,0,153,0,0,0,154,0,0,0,192,0,0,0,193,0,0,0,194,0,0,0,155,0,0,0,64,0,0,0,138,0,0,0,96,0,0,0,97,0,0,0,98,0,0,0,99,0,0,0,100,0,0,0,101,0,0,0,102,0,0,0,18,0,0,0,19,0,0,0,146,0,0,0,147,0,0,0,148,0,0,0,20,0,0,0,21,0,0,0,149,0,0,0,195,0,0,0,155,0,0,0,1,0,0,0,150,0,0,0,10,0,0,0,151,0,0,0,11,0,0,0,12,0,0,0,152,0,0,0,156,0,0,0,7,0,0,0,153,0,0,0,154,0,0,0,155,0,0,0,252,255,255,255,72,3,0,0,157,0,0,0,8,0,0,0,156,0,0,0,157,0,0,0,158,0,0,0,0,0,0,0,120,3,0,0,156,0,0,0,157,0,0,0,158,0,0,0,159,0,0,0,196,0,0,0,197,0,0,0,198,0,0,0,158,0,0,0,65,0,0,0,139,0,0,0,103,0,0,0,104,0,0,0,105,0,0,0,106,0,0,0,107,0,0,0,108,0,0,0,109,0,0,0,22,0,0,0,23,0,0,0,159,0,0,0,160,0,0,0,161,0,0,0,24,0,0,0,25,0,0,0,162,0,0,0,199,0,0,0,160,0,0,0,2,0,0,0,163,0,0,0,13,0,0,0,164,0,0,0,14,0,0,0,15,0,0,0,165,0,0,0,159,0,0,0,9,0,0,0,166,0,0,0,167,0,0,0,168,0,0,0,252,255,255,255,120,3,0,0,160,0,0,0,10,0,0,0,169,0,0,0,170,0,0,0,171,0,0,0,0,0,0,0,136,3,0,0,161,0,0,0,162,0,0,0,163,0,0,0,164,0,0,0,200,0,0,0,201,0,0,0,202,0,0,0,161,0,0,0,165,0,0,0,172,0,0,0,66,0,0,0,25,0,0,0,0,0,0,0,152,3,0,0,166,0,0,0,167,0,0,0,168,0,0,0,169,0,0,0,203,0,0,0,204,0,0,0,205,0,0,0,162,0,0,0,170,0,0,0,173,0,0,0,67,0,0,0,26,0,0,0,0,0,0,0,168,3,0,0,171,0,0,0,172,0,0,0,173,0,0,0,174,0,0,0,206,0,0,0,207,0,0,0,208,0,0,0,163,0,0,0,16,0,0,0,140,0,0,0,174,0,0,0,141,0,0,0,142,0,0,0,143,0,0,0,209,0,0,0,68,0,0,0,210,0,0,0,26,0,0,0,9,0,0,0,27,0,0,0,175,0,0,0,17,0,0,0,3,0,0,0,11,0,0,0,175,0,0,0,176,0,0,0,177,0,0,0,164,0,0,0,252,255,255,255,168,3,0,0,165,0,0,0,12,0,0,0,178,0,0,0,179,0,0,0,180,0,0,0,0,0,0,0,216,3,0,0,176,0,0,0,177,0,0,0,178,0,0,0,179,0,0,0,211,0,0,0,212,0,0,0,213,0,0,0,166,0,0,0,18,0,0,0,144,0,0,0,181,0,0,0,145,0,0,0,146,0,0,0,147,0,0,0,214,0,0,0,69,0,0,0,215,0,0,0,28,0,0,0,10,0,0,0,29,0,0,0,180,0,0,0,19,0,0,0,4,0,0,0,167,0,0,0,13,0,0,0,182,0,0,0,183,0,0,0,184,0,0,0,252,255,255,255,216,3,0,0,168,0,0,0,14,0,0,0,185,0,0,0,186,0,0,0,187,0,0,0,0,0,0,0,232,3,0,0,181,0,0,0,182,0,0,0,183,0,0,0,184,0,0,0,216,0,0,0,217,0,0,0,218,0,0,0,169,0,0,0,20,0,0,0,148,0,0,0,188,0,0,0,149,0,0,0,150,0,0,0,151,0,0,0,219,0,0,0,70,0,0,0,220,0,0,0,30,0,0,0,11,0,0,0,31,0,0,0,185,0,0,0,21,0,0,0,5,0,0,0,15,0,0,0,189,0,0,0,190,0,0,0,191,0,0,0,170,0,0,0,252,255,255,255,232,3,0,0,171,0,0,0,16,0,0,0,192,0,0,0,193,0,0,0,194,0,0,0,0,0,0,0,248,3,0,0,186,0,0,0,187,0,0,0,188,0,0,0,221,0,0,0,222,0,0,0,172,0,0,0,223,0,0,0,152,0,0,0,153,0,0,0,195,0,0,0,173,0,0,0,154,0,0,0,32,0,0,0,155,0,0,0,196,0,0,0,197,0,0,0,174,0,0,0,27,0,0,0,156,0,0,0,157,0,0,0,158,0,0,0,159,0,0,0,160,0,0,0,161,0,0,0,31,0,0,0,162,0,0,0,198,0,0,0,199,0,0,0,175,0,0,0,200,0,0,0,176,0,0,0,163,0,0,0,164,0,0,0,165,0,0,0,28,0,0,0,166,0,0,0,0,0,0,0,8,4,0,0,189,0,0,0,190,0,0,0,191,0,0,0,224,0,0,0,225,0,0,0,177,0,0,0,226,0,0,0,167,0,0,0,168,0,0,0,201,0,0,0,178,0,0,0,169,0,0,0,33,0,0,0,170,0,0,0,202,0,0,0,203,0,0,0,179,0,0,0,29,0,0,0,171,0,0,0,172,0,0,0,173,0,0,0,174,0,0,0,175,0,0,0,176,0,0,0,32,0,0,0,177,0,0,0,204,0,0,0,205,0,0,0,180,0,0,0,206,0,0,0,181,0,0,0,178,0,0,0,179,0,0,0,180,0,0,0,30,0,0,0,181,0,0,0,0,0,0,0,24,4,0,0,192,0,0,0,193,0,0,0,194,0,0,0,227,0,0,0,228,0,0,0,182,0,0,0,229,0,0,0,182,0,0,0,183,0,0,0,207,0,0,0,183,0,0,0,184,0,0,0,34,0,0,0,185,0,0,0,208,0,0,0,209,0,0,0,184,0,0,0,31,0,0,0,186,0,0,0,187,0,0,0,188,0,0,0,189,0,0,0,190,0,0,0,191,0,0,0,33,0,0,0,192,0,0,0,210,0,0,0,211,0,0,0,185,0,0,0,212,0,0,0,186,0,0,0,193,0,0,0,194,0,0,0,195,0,0,0,32,0,0,0,196,0,0,0,0,0,0,0,40,4,0,0,195,0,0,0,196,0,0,0,197,0,0,0,230,0,0,0,231,0,0,0,187,0,0,0,232,0,0,0,197,0,0,0,198,0,0,0,213,0,0,0,188,0,0,0,199,0,0,0,35,0,0,0,200,0,0,0,214,0,0,0,215,0,0,0,189,0,0,0,33,0,0,0,201,0,0,0,202,0,0,0,203,0,0,0,204,0,0,0,205,0,0,0,206,0,0,0,34,0,0,0,207,0,0,0,216,0,0,0,217,0,0,0,190,0,0,0,218,0,0,0,191,0,0,0,208,0,0,0,209,0,0,0,210,0,0,0,34,0,0,0,211,0,0,0,0,0,0,0,56,4,0,0,198,0,0,0,199,0,0,0,200,0,0,0,233,0,0,0,234,0,0,0,192,0,0,0,235,0,0,0,212,0,0,0,213,0,0,0,219,0,0,0,193,0,0,0,214,0,0,0,36,0,0,0,215,0,0,0,220,0,0,0,221,0,0,0,194,0,0,0,35,0,0,0,216,0,0,0,217,0,0,0,218,0,0,0,219,0,0,0,220,0,0,0,221,0,0,0,35,0,0,0,222,0,0,0,222,0,0,0,223,0,0,0,195,0,0,0,224,0,0,0,196,0,0,0,223,0,0,0,224,0,0,0,225,0,0,0,36,0,0,0,226,0,0,0,0,0,0,0,72,4,0,0,201,0,0,0,202,0,0,0,203,0,0,0,236,0,0,0,237,0,0,0,197,0,0,0,238,0,0,0,227,0,0,0,228,0,0,0,225,0,0,0,198,0,0,0,229,0,0,0,37,0,0,0,230,0,0,0,226,0,0,0,227,0,0,0,199,0,0,0,37,0,0,0,231,0,0,0,232,0,0,0,233,0,0,0,234,0,0,0,235,0,0,0,236,0,0,0,36,0,0,0,237,0,0,0,228,0,0,0,229,0,0,0,200,0,0,0,230,0,0,0,201,0,0,0,238,0,0,0,239,0,0,0,240,0,0,0,38,0,0,0,241,0,0,0,0,0,0,0,88,4,0,0,204,0,0,0,205,0,0,0,206,0,0,0,239,0,0,0,240,0,0,0,202,0,0,0,241,0,0,0,242,0,0,0,243,0,0,0,231,0,0,0,203,0,0,0,244,0,0,0,38,0,0,0,245,0,0,0,232,0,0,0,233,0,0,0,204,0,0,0,39,0,0,0,246,0,0,0,247,0,0,0,248,0,0,0,249,0,0,0,250,0,0,0,251,0,0,0,37,0,0,0,252,0,0,0,234,0,0,0,235,0,0,0,205,0,0,0,236,0,0,0,206,0,0,0,253,0,0,0,254,0,0,0,255,0,0,0,40,0,0,0,0,1,0,0,0,0,0,0,104,4,0,0,207,0,0,0,208,0,0,0,209,0,0,0,242,0,0,0,243,0,0,0,207,0,0,0,244,0,0,0,1,1,0,0,2,1,0,0,237,0,0,0,208,0,0,0,3,1,0,0,39,0,0,0,4,1,0,0,238,0,0,0,239,0,0,0,209,0,0,0,41,0,0,0,5,1,0,0,6,1,0,0,7,1,0,0,8,1,0,0,9,1,0,0,10,1,0,0,38,0,0,0,11,1,0,0,240,0,0,0,241,0,0,0,210,0,0,0,242,0,0,0,211,0,0,0,12,1,0,0,13,1,0,0,14,1,0,0,42,0,0,0,15,1,0,0,0,0,0,0,120,4,0,0,210,0,0,0,211,0,0,0,212,0,0,0,245,0,0,0,246,0,0,0,212,0,0,0,247,0,0,0,16,1,0,0,17,1,0,0,243,0,0,0,213,0,0,0,18,1,0,0,40,0,0,0,19,1,0,0,244,0,0,0,245,0,0,0,214,0,0,0,43,0,0,0,20,1,0,0,21,1,0,0,22,1,0,0,23,1,0,0,24,1,0,0,25,1,0,0,39,0,0,0,26,1,0,0,246,0,0,0,247,0,0,0,215,0,0,0,248,0,0,0,216,0,0,0,27,1,0,0,28,1,0,0,29,1,0,0,44,0,0,0,30,1,0,0,0,0,0,0,136,4,0,0,213,0,0,0,214,0,0,0,215,0,0,0,248,0,0,0,249,0,0,0,217,0,0,0,250,0,0,0,31,1,0,0,32,1,0,0,249,0,0,0,218,0,0,0,33,1,0,0,41,0,0,0,34,1,0,0,250,0,0,0,251,0,0,0,219,0,0,0,45,0,0,0,35,1,0,0,36,1,0,0,37,1,0,0,38,1,0,0,39,1,0,0,40,1,0,0,40,0,0,0,41,1,0,0,252,0,0,0,253,0,0,0,220,0,0,0,254,0,0,0,221,0,0,0,42,1,0,0,43,1,0,0,44,1,0,0,46,0,0,0,45,1,0,0,0,0,0,0,152,4,0,0,216,0,0,0,217,0,0,0,218,0,0,0,251,0,0,0,252,0,0,0,222,0,0,0,253,0,0,0,46,1,0,0,47,1,0,0,255,0,0,0,223,0,0,0,48,1,0,0,42,0,0,0,49,1,0,0,0,1,0,0,1,1,0,0,224,0,0,0,47,0,0,0,50,1,0,0,51,1,0,0,52,1,0,0,53,1,0,0,54,1,0,0,55,1,0,0,41,0,0,0,56,1,0,0,2,1,0,0,3,1,0,0,225,0,0,0,4,1,0,0,226,0,0,0,57,1,0,0,58,1,0,0,59,1,0,0,48,0,0,0,60,1,0,0,0,0,0,0,168,4,0,0,219,0,0,0,220,0,0,0,221,0,0,0,254,0,0,0,255,0,0,0,227,0,0,0,0,1,0,0,61,1,0,0,62,1,0,0,5,1,0,0,228,0,0,0,63,1,0,0,43,0,0,0,64,1,0,0,6,1,0,0,7,1,0,0,229,0,0,0,49,0,0,0,65,1,0,0,66,1,0,0,67,1,0,0,68,1,0,0,69,1,0,0,70,1,0,0,42,0,0,0,71,1,0,0,8,1,0,0,9,1,0,0,230,0,0,0,10,1,0,0,231,0,0,0,72,1,0,0,73,1,0,0,74,1,0,0,50,0,0,0,75,1,0,0,0,0,0,0,184,4,0,0,222,0,0,0,223,0,0,0,224,0,0,0,1,1,0,0,2,1,0,0,232,0,0,0,3,1,0,0,76,1,0,0,77,1,0,0,11,1,0,0,233,0,0,0,78,1,0,0,44,0,0,0,79,1,0,0,12,1,0,0,13,1,0,0,234,0,0,0,51,0,0,0,80,1,0,0,81,1,0,0,82,1,0,0,83,1,0,0,84,1,0,0,85,1,0,0,43,0,0,0,86,1,0,0,14,1,0,0,15,1,0,0,235,0,0,0,16,1,0,0,236,0,0,0,87,1,0,0,88,1,0,0,89,1,0,0,52,0,0,0,90,1,0,0,0,0,0,0,200,4,0,0,225,0,0,0,226,0,0,0,227,0,0,0,228,0,0,0,4,1,0,0,5,1,0,0,6,1,0,0,237,0,0,0,255,255,255,255,0,0,0,0,216,4,0,0,229,0,0,0,230,0,0,0,7,1,0,0,11,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,0,0,0,0,232,4,0,0,231,0,0,0,232,0,0,0,233,0,0,0,234,0,0,0,8,1,0,0,9,1,0,0,10,1,0,0,238,0,0,0,17,1,0,0,11,1,0,0,12,1,0,0,110,0,0,0,13,1,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,12,0,0,0,15,0,0,0,16,0,0,0,18,0,0,0,20,0,0,0,24,0,0,0,25,0,0,0,30,0,0,0,36,0,0,0,40,0,0,0,45,0,0,0,48,0,0,0,50,0,0,0,60,0,0,0,72,0,0,0,75,0,0,0,80,0,0,0,90,0,0,0,100,0,0,0,120,0,0,0,144,0,0,0,150,0,0,0,180,0,0,0,200,0,0,0,225,0,0,0,240,0,0,0,44,1,0,0,104,1,0,0,144,1,0,0,194,1,0,0,88,2,0,0,208,2,0,0,132,3,0,0,176,4,0,0,8,7,0,0,16,14,0,0,83,1,0,0,64,0,0,0,160,3,0,0,0,0,0,0,248,4,0,0,235,0,0,0,236,0,0,0,237,0,0,0,238,0,0,0,14,1,0,0,15,1,0,0,16,1,0,0,239,0,0,0,17,1,0,0,91,1,0,0,92,1,0,0,93,1,0,0,18,1,0,0,12,0,0,0,240,0,0,0,241,0,0,0,94,1,0,0,19,1,0,0,242,0,0,0,13,0,0,0,95,1,0,0,96,1,0,0,20,1,0,0,44,0,0,0,111,0,0,0,112,0,0,0,113,0,0,0,114,0,0,0,115,0,0,0,45,0,0,0,46,0,0,0,45,0,0,0,9,0,0,0,97,1,0,0,98,1,0,0,21,1,0,0,25,0,0,0,13,0,0,0,71,0,0,0,72,0,0,0,73,0,0,0,18,1,0,0,19,1,0,0,20,1,0,0,243,0,0,0,27,0,0,0,187,2,0,0,190,2,0,0,191,2,0,0,123,0,0,0,125,0,0,0,127,0,0,0,141,0,0,0,142,0,0,0,129,0,0,0,130,0,0,0,148,0,0,0,126,0,0,0,123,0,0,0,125,0,0,0,126,0,0,0,83,1,0,0,152,2,0,0,153,2,0,0,162,2,0,0,165,2,0,0,159,2,0,0,192,2,0,0,193,2,0,0,159,2,0,0,0,0,0,0,8,5,0,0,239,0,0,0,240,0,0,0,241,0,0,0,242,0,0,0,21,1,0,0,22,1,0,0,23,1,0,0,244,0,0,0,22,0,0,0,99,1,0,0,22,1,0,0,100,1,0,0,101,1,0,0,102,1,0,0,24,1,0,0,74,0,0,0,25,1,0,0,46,0,0,0,13,0,0,0,47,0,0,0,243,0,0,0,23,0,0,0,6,0,0,0,17,0,0,0,23,1,0,0,24,1,0,0,25,1,0,0,245,0,0,0,252,255,255,255,8,5,0,0,246,0,0,0,18,0,0,0,26,1,0,0,27,1,0,0,28,1,0,0,0,0,0,0,96,5,0,0,244,0,0,0,245,0,0,0,246,0,0,0,247,0,0,0,26,1,0,0,27,1,0,0,28,1,0,0,247,0,0,0,29,1,0,0,30,1,0,0,28,0,0,0,252,255,255,255,96,5,0,0,248,0,0,0,249,0,0,0,31,1,0,0,32,1,0,0,29,0,0,0,0,0,0,0,24,5,0,0,250,0,0,0,251,0,0,0,252,0,0,0,253,0,0,0,33,1,0,0,34,1,0,0,35,1,0,0,248,0,0,0,36,1,0,0,37,1,0,0,30,0,0,0,252,255,255,255,24,5,0,0,254,0,0,0,255,0,0,0,38,1,0,0,39,1,0,0,31,0,0,0,0,0,0,0,64,5,0,0,0,1,0,0,1,1,0,0,2,1,0,0,3,1,0,0,40,1,0,0,41,1,0,0,42,1,0,0,249,0,0,0,43,1,0,0,44,1,0,0,32,0,0,0,252,255,255,255,64,5,0,0,4,1,0,0,5,1,0,0,45,1,0,0,46,1,0,0,33,0,0,0,0,0,0,0,128,5,0,0,6,1,0,0,7,1,0,0,8,1,0,0,9,1,0,0,47,1,0,0,48,1,0,0,49,1,0,0,250,0,0,0,50,1,0,0,51,1,0,0,34,0,0,0,252,255,255,255,128,5,0,0,10,1,0,0,11,1,0,0,52,1,0,0,53,1,0,0,35,0,0,0,0,0,0,0,160,5,0,0,12,1,0,0,13,1,0,0,14,1,0,0,15,1,0,0,54,1,0,0,55,1,0,0,56,1,0,0,251,0,0,0,57,1,0,0,58,1,0,0,36,0,0,0,252,255,255,255,160,5,0,0,16,1,0,0,17,1,0,0,59,1,0,0,60,1,0,0,37,0,0,0,0,0,0,0,192,5,0,0,18,1,0,0,19,1,0,0,20,1,0,0,21,1,0,0,61,1,0,0,62,1,0,0,63,1,0,0,252,0,0,0,64,1,0,0,103,1,0,0,104,1,0,0,105,1,0,0,29,1,0,0,14,0,0,0,253,0,0,0,254,0,0,0,106,1,0,0,30,1,0,0,255,0,0,0,14,0,0,0,107,1,0,0,108,1,0,0,31,1,0,0,47,0,0,0,116,0,0,0,117,0,0,0,118,0,0,0,119,0,0,0,120,0,0,0,48,0,0,0,49,0,0,0,48,0,0,0,10,0,0,0,109,1,0,0,110,1,0,0,32,1,0,0,26,0,0,0,14,0,0,0,75,0,0,0,76,0,0,0,77,0,0,0,65,1,0,0,66,1,0,0,67,1,0,0,0,1,0,0,27,0,0,0,0,0,0,0,224,5,0,0,22,1,0,0,23,1,0,0,24,1,0,0,25,1,0,0,68,1,0,0,69,1,0,0,70,1,0,0,1,1,0,0,71,1,0,0,111,1,0,0,112,1,0,0,113,1,0,0,33,1,0,0,15,0,0,0,2,1,0,0,3,1,0,0,114,1,0,0,34,1,0,0,4,1,0,0,15,0,0,0,115,1,0,0,116,1,0,0,35,1,0,0,50,0,0,0,121,0,0,0,122,0,0,0,123,0,0,0,124,0,0,0,125,0,0,0,51,0,0,0,52,0,0,0,49,0,0,0,11,0,0,0,117,1,0,0,118,1,0,0,36,1,0,0,27,0,0,0,15,0,0,0,78,0,0,0,79,0,0,0,80,0,0,0,72,1,0,0,73,1,0,0,74,1,0,0,5,1,0,0,27,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,26,1,0,0,27,1,0,0,37,1,0,0,38,1,0,0,39,1,0,0,28,0,0,0,53,0,0,0,54,0,0,0,119,1,0,0,81,0,0,0,82,0,0,0,83,0,0,0,84,0,0,0,40,1,0,0,55,0,0,0,41,1,0,0,120,1,0,0,0,0,0,0,24,6,0,0,26,1,0,0,28,1,0,0,42,1,0,0,43,1,0,0,44,1,0,0,29,0,0,0,56,0,0,0,57,0,0,0,121,1,0,0,85,0,0,0,86,0,0,0,87,0,0,0,88,0,0,0,45,1,0,0,58,0,0,0,46,1,0,0,122,1,0,0,0,0,0,0,40,6,0,0,26,1,0,0,29,1,0,0,47,1,0,0,48,1,0,0,49,1,0,0,30,0,0,0,59,0,0,0,60,0,0,0,123,1,0,0,89,0,0,0,90,0,0,0,91,0,0,0,92,0,0,0,50,1,0,0,61,0,0,0,51,1,0,0,124,1,0,0,0,0,0,0,56,6,0,0,26,1,0,0,30,1,0,0,52,1,0,0,53,1,0,0,54,1,0,0,31,0,0,0,62,0,0,0,63,0,0,0,125,1,0,0,93,0,0,0,94,0,0,0,95,0,0,0,96,0,0,0,55,1,0,0,64,0,0,0,56,1,0,0,126,1,0,0,0,0,0,0,72,6,0,0,26,1,0,0,31,1,0,0,57,1,0,0,58,1,0,0,59,1,0,0,32,0,0,0,65,0,0,0,66,0,0,0,127,1,0,0,97,0,0,0,98,0,0,0,99,0,0,0,100,0,0,0,60,1,0,0,67,0,0,0,61,1,0,0,128,1,0,0,0,0,0,0,88,6,0,0,26,1,0,0,32,1,0,0,62,1,0,0,63,1,0,0,64,1,0,0,33,0,0,0,68,0,0,0,69,0,0,0,129,1,0,0,101,0,0,0,102,0,0,0,103,0,0,0,104,0,0,0,65,1,0,0,70,0,0,0,66,1,0,0,130,1,0,0,0,0,0,0,104,6,0,0,26,1,0,0,33,1,0,0,67,1,0,0,68,1,0,0,69,1,0,0,34,0,0,0,71,0,0,0,72,0,0,0,131,1,0,0,105,0,0,0,106,0,0,0,107,0,0,0,108,0,0,0,70,1,0,0,73,0,0,0,71,1,0,0,132,1,0,0,0,0,0,0,120,6,0,0,26,1,0,0,34,1,0,0,72,1,0,0,73,1,0,0,74,1,0,0,35,0,0,0,74,0,0,0,75,0,0,0,133,1,0,0,109,0,0,0,110,0,0,0,111,0,0,0,112,0,0,0,75,1,0,0,76,0,0,0,76,1,0,0,134,1,0,0,0,0,0,0,136,6,0,0,26,1,0,0,35,1,0,0,77,1,0,0,78,1,0,0,79,1,0,0,36,0,0,0,77,0,0,0,78,0,0,0,135,1,0,0,113,0,0,0,114,0,0,0,115,0,0,0,116,0,0,0,80,1,0,0,79,0,0,0,81,1,0,0,136,1,0,0,0,0,0,0,152,6,0,0,26,1,0,0,36,1,0,0,82,1,0,0,83,1,0,0,84,1,0,0,37,0,0,0,80,0,0,0,81,0,0,0,137,1,0,0,117,0,0,0,118,0,0,0,119,0,0,0,120,0,0,0,85,1,0,0,82,0,0,0,86,1,0,0,138,1,0,0,18,0,0,0,19,0,0,0,20,0,0,0,0,0,0,0,168,6,0,0,26,1,0,0,37,1,0,0,87,1,0,0,88,1,0,0,89,1,0,0,38,0,0,0,83,0,0,0,84,0,0,0,139,1,0,0,121,0,0,0,122,0,0,0,123,0,0,0,124,0,0,0,90,1,0,0,85,0,0,0,91,1,0,0,140,1,0,0,0,0,0,0,184,6,0,0,26,1,0,0,38,1,0,0,92,1,0,0,93,1,0,0,94,1,0,0,39,0,0,0,86,0,0,0,87,0,0,0,141,1,0,0,125,0,0,0,126,0,0,0,127,0,0,0,128,0,0,0,95,1,0,0,88,0,0,0,96,1,0,0,142,1,0,0,0,0,0,0,200,6,0,0,26,1,0,0,39,1,0,0,97,1,0,0,98,1,0,0,99,1,0,0,40,0,0,0,89,0,0,0,90,0,0,0,143,1,0,0,129,0,0,0,130,0,0,0,131,0,0,0,132,0,0,0,100,1,0,0,91,0,0,0,101,1,0,0,144,1,0,0,0,0,0,0,216,6,0,0,26,1,0,0,40,1,0,0,102,1,0,0,103,1,0,0,104,1,0,0,41,0,0,0,92,0,0,0,93,0,0,0,145,1,0,0,133,0,0,0,134,0,0,0,135,0,0,0,136,0,0,0,105,1,0,0,94,0,0,0,106,1,0,0,146,1,0,0,0,0,0,0,232,6,0,0,26,1,0,0,41,1,0,0,107,1,0,0,108,1,0,0,109,1,0,0,42,0,0,0,95,0,0,0,96,0,0,0,147,1,0,0,137,0,0,0,138,0,0,0,139,0,0,0,140,0,0,0,110,1,0,0,97,0,0,0,111,1,0,0,148,1,0,0,0,0,0,0,248,6,0,0,26,1,0,0,42,1,0,0,112,1,0,0,113,1,0,0,114,1,0,0,43,0,0,0,98,0,0,0,99,0,0,0,149,1,0,0,141,0,0,0,142,0,0,0,143,0,0,0,144,0,0,0,115,1,0,0,100,0,0,0,116,1,0,0,150,1,0,0,0,0,0,0,8,7,0,0,26,1,0,0,43,1,0,0,117,1,0,0,118,1,0,0,119,1,0,0,44,0,0,0,101,0,0,0,102,0,0,0,151,1,0,0,145,0,0,0,146,0,0,0,147,0,0,0,148,0,0,0,120,1,0,0,103,0,0,0,121,1,0,0,152,1,0,0,0,0,0,0,24,7,0,0,26,1,0,0,44,1,0,0,122,1,0,0,123,1,0,0,124,1,0,0,45,0,0,0,104,0,0,0,105,0,0,0,153,1,0,0,149,0,0,0,150,0,0,0,151,0,0,0,152,0,0,0,125,1,0,0,106,0,0,0,126,1,0,0,154,1,0,0,0,0,0,0,40,7,0,0,26,1,0,0,45,1,0,0,127,1,0,0,128,1,0,0,129,1,0,0,46,0,0,0,107,0,0,0,108,0,0,0,155,1,0,0,153,0,0,0,154,0,0,0,155,0,0,0,156,0,0,0,130,1,0,0,109,0,0,0,131,1,0,0,156,1,0,0,0,0,0,0,56,7,0,0,26,1,0,0,46,1,0,0,132,1,0,0,133,1,0,0,134,1,0,0,47,0,0,0,110,0,0,0,111,0,0,0,157,1,0,0,157,0,0,0,158,0,0,0,159,0,0,0,160,0,0,0,135,1,0,0,112,0,0,0,136,1,0,0,158,1,0,0,0,0,0,0,72,7,0,0,26,1,0,0,47,1,0,0,137,1,0,0,138,1,0,0,139,1,0,0,48,0,0,0,113,0,0,0,114,0,0,0,159,1,0,0,161,0,0,0,162,0,0,0,163,0,0,0,164,0,0,0,140,1,0,0,115,0,0,0,141,1,0,0,160,1,0,0,0,0,0,0,88,7,0,0,26,1,0,0,48,1,0,0,142,1,0,0,143,1,0,0,144,1,0,0,49,0,0,0,116,0,0,0,117,0,0,0,161,1,0,0,165,0,0,0,166,0,0,0,167,0,0,0,168,0,0,0,145,1,0,0,118,0,0,0,146,1,0,0,162,1,0,0,0,0,0,0,104,7,0,0,26,1,0,0,49,1,0,0,147,1,0,0,148,1,0,0,149,1,0,0,50,0,0,0,119,0,0,0,120,0,0,0,163,1,0,0,169,0,0,0,170,0,0,0,171,0,0,0,172,0,0,0,150,1,0,0,121,0,0,0,151,1,0,0,164,1,0,0,0,0,0,0,120,7,0,0,26,1,0,0,50,1,0,0,152,1,0,0,153,1,0,0,154,1,0,0,51,0,0,0,122,0,0,0,123,0,0,0,165,1,0,0,173,0,0,0,174,0,0,0,175,0,0,0,176,0,0,0,155,1,0,0,124,0,0,0,156,1,0,0,166,1,0,0,0,0,0,0,136,7,0,0,26,1,0,0,51,1,0,0,157,1,0,0,158,1,0,0,159,1,0,0,52,0,0,0,125,0,0,0,126,0,0,0,167,1,0,0,177,0,0,0,178,0,0,0,179,0,0,0,180,0,0,0,160,1,0,0,127,0,0,0,161,1,0,0,168,1,0,0,0,0,0,0,152,7,0,0,26,1,0,0,52,1,0,0,162,1,0,0,163,1,0,0,164,1,0,0,53,0,0,0,128,0,0,0,129,0,0,0,169,1,0,0,181,0,0,0,182,0,0,0,183,0,0,0,184,0,0,0,165,1,0,0,130,0,0,0,166,1,0,0,170,1,0,0,0,0,0,0,168,7,0,0,26,1,0,0,53,1,0,0,167,1,0,0,168,1,0,0,169,1,0,0,54,0,0,0,131,0,0,0,132,0,0,0,171,1,0,0,185,0,0,0,186,0,0,0,187,0,0,0,188,0,0,0,170,1,0,0,133,0,0,0,171,1,0,0,172,1,0,0,0,0,0,0,184,7,0,0,26,1,0,0,54,1,0,0,172,1,0,0,173,1,0,0,174,1,0,0,55,0,0,0,134,0,0,0,135,0,0,0,173,1,0,0,189,0,0,0,190,0,0,0,191,0,0,0,192,0,0,0,175,1,0,0,136,0,0,0,176,1,0,0,174,1,0,0,0,0,0,0,200,7,0,0,26,1,0,0,55,1,0,0,177,1,0,0,178,1,0,0,179,1,0,0,56,0,0,0,137,0,0,0,138,0,0,0,175,1,0,0,193,0,0,0,194,0,0,0,195,0,0,0,196,0,0,0,180,1,0,0,139,0,0,0,181,1,0,0,176,1,0,0,0,0,0,0,216,7,0,0,26,1,0,0,56,1,0,0,182,1,0,0,183,1,0,0,184,1,0,0,57,0,0,0,140,0,0,0,141,0,0,0,177,1,0,0,197,0,0,0,198,0,0,0,199,0,0,0,200,0,0,0,185,1,0,0,142,0,0,0,186,1,0,0,178,1,0,0,0,0,0,0,232,7,0,0,26,1,0,0,57,1,0,0,187,1,0,0,188,1,0,0,189,1,0,0,58,0,0,0,143,0,0,0,144,0,0,0,179,1,0,0,201,0,0,0,202,0,0,0,203,0,0,0,204,0,0,0,190,1,0,0,145,0,0,0,191,1,0,0,180,1,0,0,0,0,0,0,248,7,0,0,26,1,0,0,58,1,0,0,192,1,0,0,193,1,0,0,194,1,0,0,59,0,0,0,146,0,0,0,147,0,0,0,181,1,0,0,205,0,0,0,206,0,0,0,207,0,0,0,208,0,0,0,195,1,0,0,148,0,0,0,196,1,0,0,182,1,0,0,0,0,0,0,8,8,0,0,26,1,0,0,59,1,0,0,197,1,0,0,198,1,0,0,199,1,0,0,60,0,0,0,149,0,0,0,150,0,0,0,183,1,0,0,209,0,0,0,210,0,0,0,211,0,0,0,212,0,0,0,200,1,0,0,151,0,0,0,201,1,0,0,184,1,0,0,0,0,0,0,24,8,0,0,26,1,0,0,60,1,0,0,202,1,0,0,203,1,0,0,204,1,0,0,61,0,0,0,152,0,0,0,153,0,0,0,185,1,0,0,213,0,0,0,214,0,0,0,215,0,0,0,216,0,0,0,205,1,0,0,154,0,0,0,206,1,0,0,186,1,0,0,0,0,0,0,56,8,0,0,26,1,0,0,61,1,0,0,207,1,0,0,208,1,0,0,209,1,0,0,62,0,0,0,155,0,0,0,156,0,0,0,187,1,0,0,217,0,0,0,218,0,0,0,219,0,0,0,220,0,0,0,210,1,0,0,157,0,0,0,211,1,0,0,188,1,0,0,0,0,0,0,72,8,0,0,62,1,0,0,63,1,0,0,75,1,0,0,76,1,0,0,64,1,0,0,77,1,0,0,189,1,0,0,190,1,0,0,212,1,0,0,191,1,0,0,0,0,0,0,96,8,0,0,65,1,0,0,66,1,0,0,78,1,0,0,79,1,0,0,67,1,0,0,80,1,0,0,192,1,0,0,193,1,0,0,213,1,0,0,194,1,0,0,0,0,0,0,112,8,0,0,68,1,0,0,69,1,0,0,81,1,0,0,82,1,0,0,70,1,0,0,83,1,0,0,195,1,0,0,196,1,0,0,214,1,0,0,197,1,0,0,0,0,0,0,128,8,0,0,71,1,0,0,72,1,0,0,84,1,0,0,85,1,0,0,73,1,0,0,86,1,0,0,198,1,0,0,199,1,0,0,215,1,0,0,200,1,0,0,0,0,0,0,144,8,0,0,74,1,0,0,75,1,0,0,76,1,0,0,77,1,0,0,87,1,0,0,88,1,0,0,89,1,0,0,6,1,0,0,221,0,0,0,201,1,0,0,126,0,0,0,127,0,0,0,128,0,0,0,129,0,0,0,130,0,0,0,131,0,0,0,132,0,0,0,50,0,0,0,51,0,0,0,216,1,0,0,217,1,0,0,218,1,0,0,52],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+30720);allocate([53,0,0,0,219,1,0,0,90,1,0,0,78,1,0,0,7,0,0,0,220,1,0,0,24,0,0,0,221,1,0,0,25,0,0,0,26,0,0,0,222,1,0,0,7,1,0,0,19,0,0,0,223,1,0,0,224,1,0,0,225,1,0,0,252,255,255,255,144,8,0,0,8,1,0,0,20,0,0,0,226,1,0,0,227,1,0,0,228,1,0,0,0,0,0,0,160,8,0,0,79,1,0,0,80,1,0,0,81,1,0,0,82,1,0,0,91,1,0,0,92,1,0,0,93,1,0,0,9,1,0,0,27,0,0,0,202,1,0,0,229,1,0,0,203,1,0,0,204,1,0,0,205,1,0,0,94,1,0,0,222,0,0,0,95,1,0,0,54,0,0,0,16,0,0,0,55,0,0,0,83,1,0,0,28,0,0,0,8,0,0,0,10,1,0,0,21,0,0,0,230,1,0,0,231,1,0,0,232,1,0,0,252,255,255,255,160,8,0,0,11,1,0,0,22,0,0,0,233,1,0,0,234,1,0,0,235,1,0,0,0,0,0,0,176,8,0,0,84,1,0,0,85,1,0,0,86,1,0,0,87,1,0,0,96,1,0,0,97,1,0,0,98,1,0,0,12,1,0,0,29,0,0,0,206,1,0,0,236,1,0,0,207,1,0,0,208,1,0,0,209,1,0,0,99,1,0,0,223,0,0,0,100,1,0,0,56,0,0,0,17,0,0,0,57,0,0,0,88,1,0,0,30,0,0,0,9,0,0,0,23,0,0,0,237,1,0,0,238,1,0,0,239,1,0,0,13,1,0,0,252,255,255,255,176,8,0,0,14,1,0,0,24,0,0,0,240,1,0,0,241,1,0,0,242,1,0,0,128,97,0,0,136,97,0,0,152,97,0,0,176,97,0,0,208,97,0,0,248,97,0,0,40,98,0,0,160,96,0,0,168,96,0,0,184,96,0,0,208,96,0,0,240,96,0,0,24,97,0,0,72,97,0,0,1,0,0,0,3,0,0,0,4,0,0,0,6,0,0,0,7,0,0,0,12,0,0,0,13,0,0,0,16,0,0,0,19,0,0,0,25,0,0,0,27,0,0,0,33,0,0,0,37,0,0,0,42,0,0,0,48,0,0,0,52,0,0,0,61,0,0,0,70,0,0,0,73,0,0,0,79,0,0,0,0,77,0,0,8,77,0,0,32,77,0,0,64,77,0,0,112,77,0,0,168,77,0,0,8,78,0,0,112,78,0,0,240,78,0,0,136,79,0,0,80,80,0,0,40,81,0,0,48,82,0,0,88,83,0,0,168,84,0,0,40,86,0,0,200,87,0,0,176,89,0,0,224,91,0,0,40,94,0,0,96,57,0,0,104,57,0,0,128,57,0,0,160,57,0,0,208,57,0,0,8,58,0,0,104,58,0,0,208,58,0,0,80,59,0,0,232,59,0,0,176,60,0,0,136,61,0,0,144,62,0,0,184,63,0,0,8,65,0,0,136,66,0,0,40,68,0,0,16,70,0,0,64,72,0,0,136,74,0,0,192,37,0,0,200,37,0,0,224,37,0,0,0,38,0,0,48,38,0,0,104,38,0,0,200,38,0,0,48,39,0,0,176,39,0,0,72,40,0,0,16,41,0,0,232,41,0,0,240,42,0,0,24,44,0,0,104,45,0,0,232,46,0,0,136,48,0,0,112,50,0,0,160,52,0,0,232,54,0,0,32,18,0,0,40,18,0,0,64,18,0,0,96,18,0,0,144,18,0,0,200,18,0,0,40,19,0,0,144,19,0,0,16,20,0,0,168,20,0,0,112,21,0,0,72,22,0,0,80,23,0,0,120,24,0,0,200,25,0,0,72,27,0,0,232,28,0,0,208,30,0,0,0,33,0,0,72,35,0,0,1,0,0,0,4,0,0,0,5,0,0,0,11,0,0,0,15,0,0,0,24,0,0,0,64,16,0,0,72,16,0,0,104,16,0,0,144,16,0,0,232,16,0,0,96,17,0,0,96,14,0,0,104,14,0,0,136,14,0,0,176,14,0,0,8,15,0,0,128,15,0,0,128,12,0,0,136,12,0,0,168,12,0,0,208,12,0,0,40,13,0,0,160,13,0,0,160,10,0,0,168,10,0,0,200,10,0,0,240,10,0,0,72,11,0,0,192,11,0,0,192,8,0,0,200,8,0,0,232,8,0,0,16,9,0,0,104,9,0,0,224,9,0,0,126,2,0,0,127,2,0,0,125,2,0,0,0,0,0,0,0,0,0,0,96,98,0,0,125,0,0,0,89,1,0,0,90,1,0,0,91,1,0,0,101,1,0,0,102,1,0,0,103,1,0,0,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,112,98,0,0,92,1,0,0,93,1,0,0,104,1,0,0,0,0,0,0,0,0,0,0,136,98,0,0,94,1,0,0,95,1,0,0,105,1,0,0,0,0,0,0,160,98,0,0,96,1,0,0,97,1,0,0,106,1,0,0,0,0,0,0,192,98,0,0,98,1,0,0,99,1,0,0,100,1,0,0,101,1,0,0,16,0,0,0,18,0,0,0,158,0,0,0,16,1,0,0,0,0,0,0,240,98,0,0,98,1,0,0,102,1,0,0,100,1,0,0,101,1,0,0,16,0,0,0,19,0,0,0,159,0,0,0,17,1,0,0,0,0,0,0,0,99,0,0,98,1,0,0,103,1,0,0,100,1,0,0,101,1,0,0,16,0,0,0,20,0,0,0,160,0,0,0,18,1,0,0,0,0,0,0,0,0,0,0,223,82,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,192,3,0,0,192,4,0,0,192,5,0,0,192,6,0,0,192,7,0,0,192,8,0,0,192,9,0,0,192,10,0,0,192,11,0,0,192,12,0,0,192,13,0,0,192,14,0,0,192,15,0,0,192,16,0,0,192,17,0,0,192,18,0,0,192,19,0,0,192,20,0,0,192,21,0,0,192,22,0,0,192,23,0,0,192,24,0,0,192,25,0,0,192,26,0,0,192,27,0,0,192,28,0,0,192,29,0,0,192,30,0,0,192,31,0,0,192,0,0,0,179,1,0,0,195,2,0,0,195,3,0,0,195,4,0,0,195,5,0,0,195,6,0,0,195,7,0,0,195,8,0,0,195,9,0,0,195,10,0,0,195,11,0,0,195,12,0,0,195,13,0,0,211,14,0,0,195,15,0,0,195,0,0,12,187,1,0,12,195,2,0,12,195,3,0,12,195,4,0,12,211,164,166,0,0,20,167,0,0,132,167,0,0,132,167,0,0,226,207,0,0,244,175,0,0,244,169,0,0,0,0,0,0,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,107,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,19,0,0,0,129,99,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,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,107,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,19,0,0,0,121,95,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,107,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,19,0,0,0,113,91,2,0,0,4,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,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,46,0,0,0,47,0,0,0,48,0,0,0,49,0,0,0,50,0,0,0,51,0,0,0,52,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,58,0,0,0,59,0,0,0,60,0,0,0,61,0,0,0,62,0,0,0,63,0,0,0,64,0,0,0,65,0,0,0,66,0,0,0,67,0,0,0,68,0,0,0,69,0,0,0,70,0,0,0,71,0,0,0,72,0,0,0,73,0,0,0,74,0,0,0,75,0,0,0,76,0,0,0,77,0,0,0,78,0,0,0,79,0,0,0,80,0,0,0,81,0,0,0,82,0,0,0,83,0,0,0,84,0,0,0,85,0,0,0,86,0,0,0,87,0,0,0,88,0,0,0,89,0,0,0,90,0,0,0,91,0,0,0,92,0,0,0,93,0,0,0,94,0,0,0,95,0,0,0,96,0,0,0,65,0,0,0,66,0,0,0,67,0,0,0,68,0,0,0,69,0,0,0,70,0,0,0,71,0,0,0,72,0,0,0,73,0,0,0,74,0,0,0,75,0,0,0,76,0,0,0,77,0,0,0,78,0,0,0,79,0,0,0,80,0,0,0,81,0,0,0,82,0,0,0,83,0,0,0,84,0,0,0,85,0,0,0,86,0,0,0,87,0,0,0,88,0,0,0,89,0,0,0,90,0,0,0,123,0,0,0,124,0,0,0,125,0,0,0,126,0,0,0,127],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+40960);allocate([1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,46,0,0,0,47,0,0,0,48,0,0,0,49,0,0,0,50,0,0,0,51,0,0,0,52,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,58,0,0,0,59,0,0,0,60,0,0,0,61,0,0,0,62,0,0,0,63,0,0,0,64,0,0,0,97,0,0,0,98,0,0,0,99,0,0,0,100,0,0,0,101,0,0,0,102,0,0,0,103,0,0,0,104,0,0,0,105,0,0,0,106,0,0,0,107,0,0,0,108,0,0,0,109,0,0,0,110,0,0,0,111,0,0,0,112,0,0,0,113,0,0,0,114,0,0,0,115,0,0,0,116,0,0,0,117,0,0,0,118,0,0,0,119,0,0,0,120,0,0,0,121,0,0,0,122,0,0,0,91,0,0,0,92,0,0,0,93,0,0,0,94,0,0,0,95,0,0,0,96,0,0,0,97,0,0,0,98,0,0,0,99,0,0,0,100,0,0,0,101,0,0,0,102,0,0,0,103,0,0,0,104,0,0,0,105,0,0,0,106,0,0,0,107,0,0,0,108,0,0,0,109,0,0,0,110,0,0,0,111,0,0,0,112,0,0,0,113,0,0,0,114,0,0,0,115,0,0,0,116,0,0,0,117,0,0,0,118,0,0,0,119,0,0,0,120,0,0,0,121,0,0,0,122,0,0,0,123,0,0,0,124,0,0,0,125,0,0,0,126,0,0,0,127],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+45040);allocate([24,99,0,0,104,1,0,0,105,1,0,0,210,1,0,0,22,0,0,0,21,0,0,0,19,1,0,0,108,1,0,0,109,1,0,0,23,0,0,0,110,1,0,0,111,1,0,0,224,0,0,0,24,0,0,0,225,0,0,0,0,0,0,0,40,99,0,0,104,1,0,0,106,1,0,0,211,1,0,0,22,0,0,0,21,0,0,0,19,1,0,0,112,1,0,0,109,1,0,0,23,0,0,0,113,1,0,0,114,1,0,0,226,0,0,0,25,0,0,0,227,0,0,0,0,0,0,0,56,99,0,0,107,1,0,0,108,1,0,0,212,1,0,0,1,0,0,0,22,0,0,0,20,1,0,0,115,1,0,0,2,0,0,0,2,0,0,0,116,1,0,0,4,0,0,0,228,0,0,0,26,0,0,0,229,0,0,0,0,0,0,0,72,99,0,0,107,1,0,0,109,1,0,0,213,1,0,0,1,0,0,0,22,0,0,0,20,1,0,0,1,0,0,0,2,0,0,0,2,0,0,0,117,1,0,0,118,1,0,0,230,0,0,0,3,0,0,0,231,0,0,0,0,0,0,0,144,99,0,0,107,1,0,0,110,1,0,0,1,0,0,0,1,0,0,0,22,0,0,0,20,1,0,0,1,0,0,0,2,0,0,0,2,0,0,0,116,1,0,0,4,0,0,0,228,0,0,0,3,0,0,0,231,0,0,0,0,0,0,0,152,99,0,0,104,1,0,0,111,1,0,0,214,1,0,0,22,0,0,0,21,0,0,0,19,1,0,0,112,1,0,0,109,1,0,0,23,0,0,0,110,1,0,0,111,1,0,0,224,0,0,0,25,0,0,0,227,0,0,0,8,0,0,0,0,0,0,0,160,99,0,0,112,1,0,0,113,1,0,0,248,255,255,255,248,255,255,255,160,99,0,0,114,1,0,0,115,1,0,0,8,0,0,0,0,0,0,0,184,99,0,0,116,1,0,0,117,1,0,0,248,255,255,255,248,255,255,255,184,99,0,0,118,1,0,0,119,1,0,0,4,0,0,0,0,0,0,0,208,99,0,0,5,0,0,0,6,0,0,0,252,255,255,255,252,255,255,255,208,99,0,0,7,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,232,99,0,0,120,1,0,0,121,1,0,0,252,255,255,255,252,255,255,255,232,99,0,0,122,1,0,0,123,1,0,0,0,0,0,0,88,99,0,0,124,1,0,0,125,1,0,0,105,1,0,0,0,0,0,0,104,99,0,0,126,1,0,0,127,1,0,0,0,0,0,0,0,100,0,0,128,1,0,0,129,1,0,0,119,1,0,0,243,1,0,0,27,0,0,0,28,0,0,0,244,1,0,0,0,0,0,0,0,0,0,0,248,100,0,0,130,1,0,0,131,1,0,0,132,1,0,0,5,0,0,0,21,1,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,101,0,0,133,1,0,0,134,1,0,0,132,1,0,0,6,0,0,0,22,1,0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,101,0,0,135,1,0,0,136,1,0,0,132,1,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,101,0,0,137,1,0,0,138,1,0,0,132,1,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,101,0,0,139,1,0,0,140,1,0,0,132,1,0,0,7,0,0,0,8,0,0,0,23,0,0,0,9,0,0,0,24,0,0,0,1,0,0,0,2,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,101,0,0,141,1,0,0,142,1,0,0,132,1,0,0,11,0,0,0,12,0,0,0,25,0,0,0,13,0,0,0,26,0,0,0,3,0,0,0,4,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,101,0,0,143,1,0,0,144,1,0,0,132,1,0,0,120,1,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,1,0,0,0,248,255,255,255,216,101,0,0,121,1,0,0,122,1,0,0,123,1,0,0,124,1,0,0,125,1,0,0,126,1,0,0,127,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,0,0,145,1,0,0,146,1,0,0,132,1,0,0,128,1,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,2,0,0,0,248,255,255,255,0,102,0,0,129,1,0,0,130,1,0,0,131,1,0,0,132,1,0,0,133,1,0,0,134,1,0,0,135,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,102,0,0,147,1,0,0,148,1,0,0,132,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,102,0,0,149,1,0,0,150,1,0,0,132,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,102,0,0,151,1,0,0,152,1,0,0,132,1,0,0,136,1,0,0,137,1,0,0,215,1,0,0,216,1,0,0,217,1,0,0,218,1,0,0,138,1,0,0,219,1,0,0,220,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,102,0,0,153,1,0,0,154,1,0,0,132,1,0,0,139,1,0,0,140,1,0,0,221,1,0,0,222,1,0,0,223,1,0,0,224,1,0,0,141,1,0,0,225,1,0,0,226,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,102,0,0,155,1,0,0,156,1,0,0,132,1,0,0,142,1,0,0,143,1,0,0,227,1,0,0,228,1,0,0,229,1,0,0,230,1,0,0,144,1,0,0,231,1,0,0,232,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,102,0,0,157,1,0,0,158,1,0,0,132,1,0,0,145,1,0,0,146,1,0,0,233,1,0,0,234,1,0,0,235,1,0,0,236,1,0,0,147,1,0,0,237,1,0,0,238,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,102,0,0,159,1,0,0,160,1,0,0,132,1,0,0,3,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,103,0,0,161,1,0,0,162,1,0,0,132,1,0,0,5,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,103,0,0,163,1,0,0,164,1,0,0,132,1,0,0,1,0,0,0,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,103,0,0,165,1,0,0,166,1,0,0,132,1,0,0,2,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,103,0,0,167,1,0,0,168,1,0,0,132,1,0,0,31,0,0,0,23,0,0,0,239,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,103,0,0,169,1,0,0,170,1,0,0,132,1,0,0,32,0,0,0,24,0,0,0,240,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,100,0,0,171,1,0,0,172,1,0,0,132,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,101,0,0,173,1,0,0,174,1,0,0,132,1,0,0,232,0,0,0,33,0,0,0,233,0,0,0,34,0,0,0,234,0,0,0,63,0,0,0,35,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,100,0,0,175,1,0,0,176,1,0,0,132,1,0,0,3,0,0,0,4,0,0,0,16,0,0,0,148,1,0,0,149,1,0,0,17,0,0,0,150,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,101,0,0,177,1,0,0,178,1,0,0,132,1,0,0,151,1,0,0,152,1,0,0,241,1,0,0,242,1,0,0,243,1,0,0,0,0,0,0,72,101,0,0,179,1,0,0,180,1,0,0,132,1,0,0,153,1,0,0,154,1,0,0,244,1,0,0,245,1,0,0,246,1,0,0,0,0,0,0,24,100,0,0,181,1,0,0,182,1,0,0,132,1,0,0,0,0,0,0,40,100,0,0,181,1,0,0,183,1,0,0,132,1,0,0,36,0,0,0,64,0,0,0,65,0,0,0,66,0,0,0,235,0,0,0,37,0,0,0,236,0,0,0,38,0,0,0,237,0,0,0,67,0,0,0,39,0,0,0,18,0,0,0,0,0,0,0,72,100,0,0,181,1,0,0,184,1,0,0,132,1,0,0,5,0,0,0,6,0,0,0,19,0,0,0,155,1,0,0,156,1,0,0,20,0,0,0,157,1,0,0,0,0,0,0,104,100,0,0,181,1,0,0,185,1,0,0,132,1,0,0,7,0,0,0,8,0,0,0,21,0,0,0,158,1,0,0,159,1,0,0,22,0,0,0,160,1,0,0,0,0,0,0,136,100,0,0,181,1,0,0,186,1,0,0,132,1,0,0,9,0,0,0,10,0,0,0,23,0,0,0,161,1,0,0,162,1,0,0,24,0,0,0,163,1,0,0,0,0,0,0,168,100,0,0,181,1,0,0,187,1,0,0,132,1,0,0,9,0,0,0,10,0,0,0,23,0,0,0,161,1,0,0,162,1,0,0,24,0,0,0,163,1,0,0,0,0,0,0,184,100,0,0,181,1,0,0,188,1,0,0,132,1,0,0,9,0,0,0,10,0,0,0,23,0,0,0,161,1,0,0,162,1,0,0,24,0,0,0,163,1,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,37,0,0,0,109,0,0,0,47,0,0,0,37,0,0,0,100,0,0,0,47,0,0,0,37,0,0,0,121,0,0,0,37,0,0,0,89,0,0,0,45,0,0,0,37,0,0,0,109,0,0,0,45,0,0,0,37,0,0,0,100,0,0,0,37,0,0,0,73,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,112,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,0,0,0,114,0,0,0,117,0,0,0,101,0,0,0,0,0,0,0,102,0,0,0,97,0,0,0,108,0,0,0,115,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,117,0,0,0,110,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,77,0,0,0,111,0,0,0,110,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,84,0,0,0,117,0,0,0,101,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,87,0,0,0,101,0,0,0,100,0,0,0,110,0,0,0,101,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,84,0,0,0,104,0,0,0,117,0,0,0,114,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,70,0,0,0,114,0,0,0,105,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,83,0,0,0,97,0,0,0,116,0,0,0,117,0,0,0,114,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,83,0,0,0,117,0,0,0,110,0,0,0,0,0,0,0,77,0,0,0,111,0,0,0,110,0,0,0,0,0,0,0,84,0,0,0,117,0,0,0,101,0,0,0,0,0,0,0,87,0,0,0,101,0,0,0,100,0,0,0,0,0,0,0,84,0,0,0,104,0,0,0,117,0,0,0,0,0,0,0,70,0,0,0,114,0,0,0,105,0,0,0,0,0,0,0,83,0,0,0,97,0,0,0,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,97,0,0,0,110,0,0,0,117,0,0,0,97,0,0,0,114,0,0,0,121,0,0,0,0,0,0,0,70,0,0,0,101,0,0,0,98,0,0,0,114,0,0,0,117,0,0,0,97,0,0,0,114,0,0,0,121,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,114,0,0,0,99,0,0,0,104,0,0,0,0,0,0,0,65,0,0,0,112,0,0,0,114,0,0,0,105,0,0,0,108,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,110,0,0,0,101,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,108,0,0,0,121,0,0,0,0,0,0,0,65,0,0,0,117,0,0,0,103,0,0,0,117,0,0,0,115,0,0,0,116,0,0,0,0,0,0,0,83,0,0,0,101,0,0,0,112,0,0,0,116,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,79,0,0,0,99,0,0,0,116,0,0,0,111,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,78,0,0,0,111,0,0,0,118,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,68,0,0,0,101,0,0,0,99,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,74,0,0,0,97,0,0,0,110,0,0,0,0,0,0,0,70,0,0,0,101,0,0,0,98,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,114,0,0,0,0,0,0,0,65,0,0,0,112,0,0,0,114,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,110,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,108,0,0,0,0,0,0,0,65,0,0,0,117,0,0,0,103,0,0,0,0,0,0,0,83,0,0,0,101,0,0,0,112,0,0,0,0,0,0,0,79,0,0,0,99,0,0,0,116,0,0,0,0,0,0,0,78,0,0,0,111,0,0,0,118,0,0,0,0,0,0,0,68,0,0,0,101,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,77,0,0,0,0,0,0,0,80,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,109,0,0,0,47,0,0,0,37,0,0,0,100,0,0,0,47,0,0,0,37,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,97,0,0,0,32,0,0,0,37,0,0,0,98,0,0,0,32,0,0,0,37,0,0,0,100,0,0,0,32,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,73,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,107,0,0,189,1,0,0,190,1,0,0,105,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,2,0,0,0,0,0,1,0,0,0,1,0,2,0,1,0,2,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,3,32,2,32,2,32,2,32,2,32,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,96,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,8,216,8,216,8,216,8,216,8,216,8,216,8,216,8,216,8,216,8,216,4,192,4,192,4,192,4,192,4,192,4,192,4,192,8,213,8,213,8,213,8,213,8,213,8,213,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,4,192,4,192,4,192,4,192,4,192,4,192,8,214,8,214,8,214,8,214,8,214,8,214,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,4,192,4,192,4,192,4,192,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,57,98,97,115,105,99,95,111,115,116,114,105,110,103,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,78,83,116,51,95,95,49,49,53,98,97,115,105,99,95,115,116,114,105,110,103,98,117,102,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,110,111,100,101,0,119,114,111,110,103,32,105,110,116,101,114,112,111,108,97,116,105,111,110,32,116,121,112,101,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,119,114,97,112,112,101,114,115,47,106,97,118,97,115,99,114,105,112,116,47,46,46,47,67,111,110,116,111,117,114,84,111,77,101,115,104,47,67,111,110,116,111,117,114,84,111,77,101,115,104,46,99,112,112,0,67,111,110,116,111,117,114,84,111,77,101,115,104,77,111,100,117,108,101,0,105,110,100,101,120,32,115,104,111,117,108,100,32,104,97,118,101,32,51,32,99,111,108,117,109,110,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,119,114,97,112,112,101,114,115,47,106,97,118,97,115,99,114,105,112,116,47,46,46,47,73,110,116,101,114,112,70,114,111,109,77,101,115,104,84,111,77,101,115,104,50,100,47,73,110,116,101,114,112,70,114,111,109,77,101,115,104,84,111,77,101,115,104,50,100,46,99,112,112,0,73,110,116,101,114,112,70,114,111,109,77,101,115,104,84,111,77,101,115,104,50,100,77,111,100,117,108,101,0,116,104,101,114,101,32,115,104,111,117,108,100,32,98,101,32,97,116,32,108,101,97,115,116,32,116,104,114,101,101,32,112,111,105,110,116,115,0,118,101,99,116,111,114,115,32,120,32,97,110,100,32,121,32,115,104,111,117,108,100,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,108,101,110,103,116,104,0,100,97,116,97,32,105,115,32,101,109,112,116,121,0,110,111,32,105,110,116,101,114,112,111,108,97,116,105,111,110,32,114,101,113,117,101,115,116,101,100,0,118,101,99,116,111,114,115,32,120,95,105,110,116,101,114,112,32,97,110,100,32,121,95,105,110,116,101,114,112,32,115,104,111,117,108,100,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,108,101,110,103,116,104,0,100,101,102,97,117,108,116,95,118,97,108,117,101,0,95,72,65,86,69,95,77,80,73,95,0,95,72,65,86,69,95,80,69,84,83,67,95,77,80,73,95,0,95,72,65,86,69,95,68,65,75,79,84,65,95,0,95,72,65,86,69,95,77,85,77,80,83,95,0,95,72,65,86,69,95,71,83,76,95,0,95,72,65,86,69,95,84,65,79,95,0,95,72,65,86,69,95,77,49,81,78,51,95,0,95,72,65,86,69,95,80,69,84,83,67,95,0,95,80,69,84,83,67,95,77,65,74,79,82,95,0,95,80,69,84,83,67,95,77,65,74,79,82,95,32,110,111,116,32,102,111,117,110,100,32,105,110,32,99,111,110,102,105,103,46,104,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,119,114,97,112,112,101,114,115,47,106,97,118,97,115,99,114,105,112,116,47,46,46,47,73,115,115,109,67,111,110,102,105,103,47,73,115,115,109,67,111,110,102,105,103,46,99,112,112,0,73,115,115,109,67,111,110,102,105,103,77,111,100,117,108,101,0,95,80,69,84,83,67,95,77,73,78,79,82,95,0,95,80,69,84,83,67,95,77,73,78,79,82,95,32,110,111,116,32,102,111,117,110,100,32,105,110,32,99,111,110,102,105,103,46,104,0,95,68,65,75,79,84,65,95,86,69,82,83,73,79,78,95,0,95,68,65,75,79,84,65,95,86,69,82,83,73,79,78,95,32,110,111,116,32,102,111,117,110,100,32,105,110,32,99,111,110,102,105,103,46,104,0,73,83,83,77,95,80,82,69,70,73,88,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,98,117,105,108,100,45,106,115,0,80,65,67,75,65,71,69,95,78,65,77,69,0,80,65,67,75,65,71,69,95,86,69,82,83,73,79,78,0,80,65,67,75,65,71,69,95,85,82,76,0,80,65,67,75,65,71,69,95,66,85,71,82,69,80,79,82,84,0,80,65,67,75,65,71,69,95,66,85,73,76,68,95,68,65,84,69,0,77,111,110,32,65,112,114,32,50,53,32,49,53,58,51,51,58,50,55,32,80,68,84,32,50,48,49,54,0,72,79,83,84,95,79,83,0,100,97,114,119,105,110,49,52,46,53,46,48,0,85,83,69,82,95,78,65,77,69,0,108,97,114,111,117,114,0,72,79,83,84,95,86,69,78,68,79,82,0,97,112,112,108,101,0,72,79,83,84,95,65,82,67,72,0,120,56,54,95,54,52,0,118,97,114,105,97,98,108,101,32,0,65,110,32,117,110,101,120,112,101,99,116,101,100,32,101,114,114,111,114,32,111,99,99,117,114,114,101,100,0,83,116,97,110,100,97,114,100,32,101,120,99,101,112,116,105,111,110,58,32,0,65,110,32,117,110,101,120,112,101,99,116,101,100,32,101,114,114,111,114,32,111,99,99,117,114,114,101,100,32,10,10,0,69,114,114,111,114,58,32,32,79,117,116,32,111,102,32,109,101,109,111,114,121,46,10,0,32,32,80,108,101,97,115,101,32,114,101,112,111,114,116,32,116,104,105,115,32,98,117,103,32,116,111,32,106,114,115,64,99,115,46,98,101,114,107,101,108,101,121,46,101,100,117,10,0,32,32,73,110,99,108,117,100,101,32,116,104,101,32,109,101,115,115,97,103,101,32,97,98,111,118,101,44,32,121,111,117,114,32,105,110,112,117,116,32,100,97,116,97,32,115,101,116,44,32,97,110,100,32,116,104,101,32,101,120,97,99,116,10,0,32,32,32,32,99,111,109,109,97,110,100,32,108,105,110,101,32,121,111,117,32,117,115,101,100,32,116,111,32,114,117,110,32,84,114,105,97,110,103,108,101,46,10,0,69,114,114,111,114,58,32,32,77,97,120,105,109,117,109,32,97,114,101,97,32,109,117,115,116,32,98,101,32,103,114,101,97,116,101,114,32,116,104,97,110,32,122,101,114,111,46,10,0,69,114,114,111,114,58,32,32,89,111,117,32,99,97,110,110,111,116,32,117,115,101,32,116,104,101,32,45,73,32,115,119,105,116,99,104,32,119,104,101,110,32,114,101,102,105,110,105,110,103,32,97,32,116,114,105,97,110,103,117,108,97,116,105,111,110,46,10,0,87,97,114,110,105,110,103,58,32,32,119,101,105,103,104,116,101,100,32,116,114,105,97,110,103,117,108,97,116,105,111,110,115,32,40,45,119,44,32,45,87,41,32,97,114,101,32,105,110,99,111,109,112,97,116,105,98,108,101,10,0,32,32,119,105,116,104,32,80,83,76,71,115,32,40,45,112,41,32,97,110,100,32,109,101,115,104,105,110,103,32,40,45,113,44,32,45,97,44,32,45,117,41,46,32,32,87,101,105,103,104,116,115,32,105,103,110,111,114,101,100,46,10,0,87,97,114,110,105,110,103,58,32,32,45,106,32,97,110,100,32,45,78,32,115,119,105,116,99,104,101,115,32,97,114,101,32,115,111,109,101,119,104,97,116,32,105,110,99,111,109,112,97,116,105,98,108,101,46,10,0,32,32,73,102,32,97,110,121,32,118,101,114,116,105,99,101,115,32,97,114,101,32,106,101,116,116,105,115,111,110,101,100,44,32,121,111,117,32,119,105,108,108,32,110,101,101,100,32,116,104,101,32,111,117,116,112,117,116,10,0,32,32,46,110,111,100,101,32,102,105,108,101,32,116,111,32,114,101,99,111,110,115,116,114,117,99,116,32,116,104,101,32,110,101,119,32,110,111,100,101,32,105,110,100,105,99,101,115,46,0,116,114,105,97,110,103,108,101,32,120,37,108,120,32,119,105,116,104,32,111,114,105,101,110,116,97,116,105,111,110,32,37,100,58,10,0,32,32,32,32,91,48,93,32,61,32,79,117,116,101,114,32,115,112,97,99,101,10,0,32,32,32,32,91,48,93,32,61,32,120,37,108,120,32,32,37,100,10,0,32,32,32,32,91,49,93,32,61,32,79,117,116,101,114,32,115,112,97,99,101,10,0,32,32,32,32,91,49,93,32,61,32,120,37,108,120,32,32,37,100,10,0,32,32,32,32,91,50,93,32,61,32,79,117,116,101,114,32,115,112,97,99,101,10,0,32,32,32,32,91,50,93,32,61,32,120,37,108,120,32,32,37,100,10,0,32,32,32,32,79,114,105,103,105,110,91,37,100,93,32,61,32,78,85,76,76,10,0,32,32,32,32,79,114,105,103,105,110,91,37,100,93,32,61,32,120,37,108,120,32,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,10,0,32,32,32,32,68,101,115,116,32,32,91,37,100,93,32,61,32,78,85,76,76,10,0,32,32,32,32,68,101,115,116,32,32,91,37,100,93,32,61,32,120,37,108,120,32,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,10,0,32,32,32,32,65,112,101,120,32,32,91,37,100,93,32,61,32,78,85,76,76,10,0,32,32,32,32,65,112,101,120,32,32,91,37,100,93,32,61,32,120,37,108,120,32,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,10,0,32,32,32,32,91,54,93,32,61,32,120,37,108,120,32,32,37,100,10,0,32,32,32,32,91,55,93,32,61,32,120,37,108,120,32,32,37,100,10,0,32,32,32,32,91,56,93,32,61,32,120,37,108,120,32,32,37,100,10,0,32,32,32,32,65,114,101,97,32,99,111,110,115,116,114,97,105,110,116,58,32,32,37,46,52,103,10,0,115,117,98,115,101,103,109,101,110,116,32,120,37,108,120,32,119,105,116,104,32,111,114,105,101,110,116,97,116,105,111,110,32,37,100,32,97,110,100,32,109,97,114,107,32,37,100,58,10,0,32,32,32,32,91,48,93,32,61,32,78,111,32,115,117,98,115,101,103,109,101,110,116,10,0,32,32,32,32,91,49,93,32,61,32,78,111,32,115,117,98,115,101,103,109,101,110,116,10,0,32,32,32,32,91,54,93,32,61,32,79,117,116,101,114,32,115,112,97,99,101,10,0,32,32,32,32,91,55,93,32,61,32,79,117,116,101,114,32,115,112,97,99,101,10,0,32,32,32,32,83,101,103,109,101,110,116,32,111,114,105,103,105,110,91,37,100,93,32,61,32,78,85,76,76,10,0,32,32,32,32,83,101,103,109,101,110,116,32,111,114,105,103,105,110,91,37,100,93,32,61,32,120,37,108,120,32,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,10,0,32,32,32,32,83,101,103,109,101,110,116,32,100,101,115,116,32,32,91,37,100,93,32,61,32,78,85,76,76,10,0,32,32,32,32,83,101,103,109,101,110,116,32,100,101,115,116,32,32,91,37,100,93,32,61,32,120,37,108,120,32,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,10,0,32,32,67,104,101,99,107,105,110,103,32,99,111,110,115,105,115,116,101,110,99,121,32,111,102,32,109,101,115,104,46,46,46,10,0,32,32,33,33,32,33,33,32,73,110,118,101,114,116,101,100,32,0,32,32,33,33,32,33,33,32,65,115,121,109,109,101,116,114,105,99,32,116,114,105,97,110,103,108,101,45,116,114,105,97,110,103,108,101,32,98,111,110,100,58,10,0,32,32,32,40,82,105,103,104,116,32,116,114,105,97,110,103,108,101,44,32,119,114,111,110,103,32,111,114,105,101,110,116,97,116,105,111,110,41,10,0,32,32,32,32,70,105,114,115,116,32,0,32,32,32,32,83,101,99,111,110,100,32,40,110,111,110,114,101,99,105,112,114,111,99,97,116,105,110,103,41,32,0,32,32,33,33,32,33,33,32,77,105,115,109,97,116,99,104,101,100,32,101,100,103,101,32,99,111,111,114,100,105,110,97,116,101,115,32,98,101,116,119,101,101,110,32,116,119,111,32,116,114,105,97,110,103,108,101,115,58,10,0,32,32,32,32,70,105,114,115,116,32,109,105,115,109,97,116,99,104,101,100,32,0,32,32,32,32,83,101,99,111,110,100,32,109,105,115,109,97,116,99,104,101,100,32,0,32,32,73,110,32,109,121,32,115,116,117,100,105,101,100,32,111,112,105,110,105,111,110,44,32,116,104,101,32,109,101,115,104,32,97,112,112,101,97,114,115,32,116,111,32,98,101,32,99,111,110,115,105,115,116,101,110,116,46,10,0,32,32,33,33,32,33,33,32,33,33,32,33,33,32,80,114,101,99,105,115,101,108,121,32,111,110,101,32,102,101,115,116,101,114,105,110,103,32,119,111,117,110,100,32,100,105,115,99,111,118,101,114,101,100,46,10,0,32,32,33,33,32,33,33,32,33,33,32,33,33,32,37,100,32,97,98,111,109,105,110,97,116,105,111,110,115,32,119,105,116,110,101,115,115,101,100,46,10,0,32,32,67,104,101,99,107,105,110,103,32,68,101,108,97,117,110,97,121,32,112,114,111,112,101,114,116,121,32,111,102,32,109,101,115,104,46,46,46,10,0,32,32,33,33,32,33,33,32,78,111,110,45,68,101,108,97,117,110,97,121,32,112,97,105,114,32,111,102,32,116,114,105,97,110,103,108,101,115,58,10,0,32,32,32,32,70,105,114,115,116,32,110,111,110,45,68,101,108,97,117,110,97,121,32,0,32,32,32,32,83,101,99,111,110,100,32,110,111,110,45,68,101,108,97,117,110,97,121,32,0,32,32,33,33,32,33,33,32,78,111,110,45,114,101,103,117,108,97,114,32,112,97,105,114,32,111,102,32,116,114,105,97,110,103,108,101,115,58,10,0,32,32,32,32,70,105,114,115,116,32,110,111,110,45,114,101,103,117,108,97,114,32,0,32,32,32,32,83,101,99,111,110,100,32,110,111,110,45,114,101,103,117,108,97,114,32,0,32,32,66,121,32,118,105,114,116,117,101,32,111,102,32,109,121,32,112,101,114,99,101,112,116,105,118,101,32,105,110,116,101,108,108,105,103,101,110,99,101,44,32,73,32,100,101,99,108,97,114,101,32,116,104,101,32,109,101,115,104,32,68,101,108,97,117,110,97,121,46,10,0,32,32,33,33,32,33,33,32,33,33,32,33,33,32,80,114,101,99,105,115,101,108,121,32,111,110,101,32,116,101,114,114,105,102,121,105,110,103,32,116,114,97,110,115,103,114,101,115,115,105,111,110,32,105,100,101,110,116,105,102,105,101,100,46,10,0,32,32,33,33,32,33,33,32,33,33,32,33,33,32,37,100,32,111,98,115,99,101,110,105,116,105,101,115,32,118,105,101,119,101,100,32,119,105,116,104,32,104,111,114,114,111,114,46,10,0,32,32,81,117,101,117,101,105,110,103,32,98,97,100,32,116,114,105,97,110,103,108,101,58,10,0,32,32,32,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,10,0,32,32,81,117,101,117,101,105,110,103,32,101,110,99,114,111,97,99,104,101,100,32,115,117,98,115,101,103,109,101,110,116,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,46,10,0,32,32,32,32,67,111,110,115,116,114,117,99,116,105,110,103,32,109,97,112,112,105,110,103,32,102,114,111,109,32,118,101,114,116,105,99,101,115,32,116,111,32,116,114,105,97,110,103,108,101,115,46,10,0,32,32,83,101,97,114,99,104,105,110,103,32,102,111,114,32,112,111,105,110,116,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,46,10,0,32,32,32,32,65,116,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,10,0,32,32,82,97,110,100,111,109,108,121,32,115,97,109,112,108,105,110,103,32,102,111,114,32,97,32,116,114,105,97,110,103,108,101,32,110,101,97,114,32,112,111,105,110,116,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,46,10,0,32,32,32,32,66,111,117,110,100,97,114,121,32,116,114,105,97,110,103,108,101,32,104,97,115,32,111,114,105,103,105,110,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,46,10,0,32,32,32,32,67,104,111,111,115,105,110,103,32,114,101,99,101,110,116,32,116,114,105,97,110,103,108,101,32,119,105,116,104,32,111,114,105,103,105,110,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,46,10,0,32,32,32,32,67,104,111,111,115,105,110,103,32,116,114,105,97,110,103,108,101,32,119,105,116,104,32,111,114,105,103,105,110,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,46,10,0,32,32,73,110,115,101,114,116,105,110,103,32,110,101,119,32,0,32,32,69,100,103,101,32,102,108,105,112,32,114,101,115,117,108,116,115,32,105,110,32,108,101,102,116,32,0,32,32,97,110,100,32,114,105,103,104,116,32,0,32,32,69,100,103,101],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+47592);allocate([32,117,110,102,108,105,112,32,114,101,115,117,108,116,115,32,105,110,32,108,101,102,116,32,0,32,32,73,110,115,101,114,116,105,110,103,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,46,10,0,32,32,85,112,100,97,116,105,110,103,32,98,111,116,116,111,109,32,108,101,102,116,32,0,32,32,85,112,100,97,116,105,110,103,32,116,111,112,32,108,101,102,116,32,0,32,32,67,114,101,97,116,105,110,103,32,116,111,112,32,114,105,103,104,116,32,0,32,32,67,114,101,97,116,105,110,103,32,98,111,116,116,111,109,32,114,105,103,104,116,32,0,32,32,85,112,100,97,116,105,110,103,32,116,111,112,32,0,32,32,67,114,101,97,116,105,110,103,32,108,101,102,116,32,0,32,32,67,114,101,97,116,105,110,103,32,114,105,103,104,116,32,0,32,32,84,114,105,97,110,103,117,108,97,116,105,110,103,32,105,110,116,101,114,105,111,114,32,112,111,108,121,103,111,110,32,97,116,32,101,100,103,101,10,0,32,32,32,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,10,0,32,32,32,32,67,111,110,110,101,99,116,105,110,103,32,101,100,103,101,32,116,111,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,10,0,32,32,68,101,108,101,116,105,110,103,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,46,10,0,32,32,67,114,101,97,116,105,110,103,32,98,97,115,101,32,98,111,117,110,100,105,110,103,32,0,32,32,67,114,101,97,116,105,110,103,32,116,111,112,32,98,111,117,110,100,105,110,103,32,0,32,32,67,111,110,110,101,99,116,105,110,103,32,0,32,32,84,114,105,97,110,103,117,108,97,116,105,110,103,32,37,100,32,118,101,114,116,105,99,101,115,46,10,0,32,32,67,114,101,97,116,105,110,103,32,0,32,32,74,111,105,110,105,110,103,32,116,114,105,97,110,103,117,108,97,116,105,111,110,115,32,119,105,116,104,32,37,100,32,97,110,100,32,37,100,32,118,101,114,116,105,99,101,115,46,10,0,32,32,82,101,109,111,118,105,110,103,32,103,104,111,115,116,32,116,114,105,97,110,103,108,101,115,46,10,0,32,32,83,111,114,116,105,110,103,32,118,101,114,116,105,99,101,115,46,10,0,87,97,114,110,105,110,103,58,32,32,65,32,100,117,112,108,105,99,97,116,101,32,118,101,114,116,101,120,32,97,116,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,32,97,112,112,101,97,114,101,100,32,97,110,100,32,119,97,115,32,105,103,110,111,114,101,100,46,10,0,32,32,70,111,114,109,105,110,103,32,116,114,105,97,110,103,117,108,97,116,105,111,110,46,10,0,32,32,67,114,101,97,116,105,110,103,32,116,114,105,97,110,103,117,108,97,114,32,98,111,117,110,100,105,110,103,32,98,111,120,46,10,0,32,32,82,101,109,111,118,105,110,103,32,116,114,105,97,110,103,117,108,97,114,32,98,111,117,110,100,105,110,103,32,98,111,120,46,10,0,32,32,73,110,99,114,101,109,101,110,116,97,108,108,121,32,105,110,115,101,114,116,105,110,103,32,118,101,114,116,105,99,101,115,46,10,0,32,32,80,108,97,99,105,110,103,32,118,101,114,116,105,99,101,115,32,105,110,32,101,118,101,110,116,32,104,101,97,112,46,10,0,69,114,114,111,114,58,32,32,73,110,112,117,116,32,118,101,114,116,105,99,101,115,32,97,114,101,32,97,108,108,32,105,100,101,110,116,105,99,97,108,46,10,0,67,111,110,115,116,114,117,99,116,105,110,103,32,68,101,108,97,117,110,97,121,32,116,114,105,97,110,103,117,108,97,116,105,111,110,32,0,98,121,32,105,110,99,114,101,109,101,110,116,97,108,32,109,101,116,104,111,100,46,10,0,98,121,32,115,119,101,101,112,108,105,110,101,32,109,101,116,104,111,100,46,10,0,98,121,32,100,105,118,105,100,101,45,97,110,100,45,99,111,110,113,117,101,114,32,109,101,116,104,111,100,46,10,0,69,114,114,111,114,58,32,32,84,114,105,97,110,103,108,101,115,32,109,117,115,116,32,104,97,118,101,32,97,116,32,108,101,97,115,116,32,51,32,118,101,114,116,105,99,101,115,46,10,0,82,101,99,111,110,115,116,114,117,99,116,105,110,103,32,109,101,115,104,46,10,0,32,32,65,115,115,101,109,98,108,105,110,103,32,116,114,105,97,110,103,108,101,115,46,10,0,69,114,114,111,114,58,32,32,84,114,105,97,110,103,108,101,32,37,108,100,32,104,97,115,32,97,110,32,105,110,118,97,108,105,100,32,118,101,114,116,101,120,32,105,110,100,101,120,46,10,0,32,32,77,97,114,107,105,110,103,32,115,101,103,109,101,110,116,115,32,105,110,32,116,114,105,97,110,103,117,108,97,116,105,111,110,46,10,0,69,114,114,111,114,58,32,32,83,101,103,109,101,110,116,32,37,108,100,32,104,97,115,32,97,110,32,105,110,118,97,108,105,100,32,118,101,114,116,101,120,32,105,110,100,101,120,46,10,0,73,110,116,101,114,110,97,108,32,101,114,114,111,114,32,105,110,32,102,105,110,100,100,105,114,101,99,116,105,111,110,40,41,58,32,32,85,110,97,98,108,101,32,116,111,32,102,105,110,100,32,97,10,0,32,32,116,114,105,97,110,103,108,101,32,108,101,97,100,105,110,103,32,102,114,111,109,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,32,116,111,0,32,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,46,10,0,73,110,116,101,114,110,97,108,32,101,114,114,111,114,32,105,110,32,115,101,103,109,101,110,116,105,110,116,101,114,115,101,99,116,105,111,110,40,41,58,0,32,32,65,116,116,101,109,112,116,32,116,111,32,102,105,110,100,32,105,110,116,101,114,115,101,99,116,105,111,110,32,111,102,32,112,97,114,97,108,108,101,108,32,115,101,103,109,101,110,116,115,46,10,0,32,32,83,112,108,105,116,116,105,110,103,32,115,117,98,115,101,103,109,101,110,116,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,32,97,116,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,46,10,0,73,110,116,101,114,110,97,108,32,101,114,114,111,114,32,105,110,32,115,101,103,109,101,110,116,105,110,116,101,114,115,101,99,116,105,111,110,40,41,58,10,0,32,32,70,97,105,108,117,114,101,32,116,111,32,115,112,108,105,116,32,97,32,115,101,103,109,101,110,116,46,10,0,32,32,84,111,112,111,108,111,103,105,99,97,108,32,105,110,99,111,110,115,105,115,116,101,110,99,121,32,97,102,116,101,114,32,115,112,108,105,116,116,105,110,103,32,97,32,115,101,103,109,101,110,116,46,10,0,70,111,114,99,105,110,103,32,115,101,103,109,101,110,116,32,105,110,116,111,32,116,114,105,97,110,103,117,108,97,116,105,111,110,32,98,121,32,114,101,99,117,114,115,105,118,101,32,115,112,108,105,116,116,105,110,103,58,10,0,32,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,10,0,32,32,83,101,103,109,101,110,116,32,105,110,116,101,114,115,101,99,116,115,32,101,120,105,115,116,105,110,103,32,118,101,114,116,101,120,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,46,10,0,32,32,84,119,111,32,115,101,103,109,101,110,116,115,32,105,110,116,101,114,115,101,99,116,32,97,116,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,46,10,0,73,110,116,101,114,110,97,108,32,101,114,114,111,114,32,105,110,32,99,111,110,102,111,114,109,105,110,103,101,100,103,101,40,41,58,10,0,32,32,67,111,110,110,101,99,116,105,110,103,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,32,116,111,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,46,10,0,73,110,116,101,114,110,97,108,32,101,114,114,111,114,32,105,110,32,105,110,115,101,114,116,115,101,103,109,101,110,116,40,41,58,32,32,85,110,97,98,108,101,32,116,111,32,108,111,99,97,116,101,32,80,83,76,71,32,118,101,114,116,101,120,10,0,32,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,32,105,110,32,116,114,105,97,110,103,117,108,97,116,105,111,110,46,10,0,82,101,99,111,118,101,114,105,110,103,32,115,101,103,109,101,110,116,115,32,105,110,32,68,101,108,97,117,110,97,121,32,116,114,105,97,110,103,117,108,97,116,105,111,110,46,10,0,105,110,112,117,116,0,32,32,82,101,99,111,118,101,114,105,110,103,32,80,83,76,71,32,115,101,103,109,101,110,116,115,46,10,0,87,97,114,110,105,110,103,58,32,32,73,110,118,97,108,105,100,32,102,105,114,115,116,32,101,110,100,112,111,105,110,116,32,111,102,32,115,101,103,109,101,110,116,32,37,100,32,105,110,32,37,115,46,10,0,87,97,114,110,105,110,103,58,32,32,73,110,118,97,108,105,100,32,115,101,99,111,110,100,32,101,110,100,112,111,105,110,116,32,111,102,32,115,101,103,109,101,110,116,32,37,100,32,105,110,32,37,115,46,10,0,87,97,114,110,105,110,103,58,32,32,69,110,100,112,111,105,110,116,115,32,111,102,32,115,101,103,109,101,110,116,32,37,100,32,97,114,101,32,99,111,105,110,99,105,100,101,110,116,32,105,110,32,37,115,46,10,0,32,32,69,110,99,108,111,115,105,110,103,32,99,111,110,118,101,120,32,104,117,108,108,32,119,105,116,104,32,115,101,103,109,101,110,116,115,46,10,0,32,32,77,97,114,107,105,110,103,32,99,111,110,99,97,118,105,116,105,101,115,32,40,101,120,116,101,114,110,97,108,32,116,114,105,97,110,103,108,101,115,41,32,102,111,114,32,101,108,105,109,105,110,97,116,105,111,110,46,10,0,32,32,77,97,114,107,105,110,103,32,110,101,105,103,104,98,111,114,115,32,111,102,32,109,97,114,107,101,100,32,116,114,105,97,110,103,108,101,115,46,10,0,32,32,32,32,67,104,101,99,107,105,110,103,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,10,0,32,32,32,32,77,97,114,107,105,110,103,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,10,0,32,32,68,101,108,101,116,105,110,103,32,109,97,114,107,101,100,32,116,114,105,97,110,103,108,101,115,46,10,0,32,32,32,32,68,101,108,101,116,105,110,103,32,118,101,114,116,101,120,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,10,0,32,32,85,110,109,97,114,107,105,110,103,32,109,97,114,107,101,100,32,116,114,105,97,110,103,108,101,115,46,10,0,82,101,109,111,118,105,110,103,32,117,110,119,97,110,116,101,100,32,116,114,105,97,110,103,108,101,115,46,10,0,32,32,77,97,114,107,105,110,103,32,104,111,108,101,115,32,102,111,114,32,101,108,105,109,105,110,97,116,105,111,110,46,10,0,83,112,114,101,97,100,105,110,103,32,114,101,103,105,111,110,97,108,32,97,116,116,114,105,98,117,116,101,115,32,97,110,100,32,97,114,101,97,32,99,111,110,115,116,114,97,105,110,116,115,46,10,0,83,112,114,101,97,100,105,110,103,32,114,101,103,105,111,110,97,108,32,97,116,116,114,105,98,117,116,101,115,46,10,0,83,112,114,101,97,100,105,110,103,32,114,101,103,105,111,110,97,108,32,97,114,101,97,32,99,111,110,115,116,114,97,105,110,116,115,46,10,0,84,114,121,32,105,110,99,114,101,97,115,105,110,103,32,116,104,101,32,97,114,101,97,32,99,114,105,116,101,114,105,111,110,32,97,110,100,47,111,114,32,114,101,100,117,99,105,110,103,32,116,104,101,32,109,105,110,105,109,117,109,10,0,32,32,97,108,108,111,119,97,98,108,101,32,97,110,103,108,101,32,115,111,32,116,104,97,116,32,116,105,110,121,32,116,114,105,97,110,103,108,101,115,32,97,114,101,32,110,111,116,32,99,114,101,97,116,101,100,46,10,0,69,114,114,111,114,58,32,32,82,97,110,32,111,117,116,32,111,102,32,112,114,101,99,105,115,105,111,110,32,97,116,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,46,10,0,73,32,97,116,116,101,109,112,116,101,100,32,116,111,32,115,112,108,105,116,32,97,32,115,101,103,109,101,110,116,32,116,111,32,97,32,115,109,97,108,108,101,114,32,115,105,122,101,32,116,104,97,110,10,0,32,32,99,97,110,32,98,101,32,97,99,99,111,109,109,111,100,97,116,101,100,32,98,121,32,116,104,101,32,102,105,110,105,116,101,32,112,114,101,99,105,115,105,111,110,32,111,102,10,0,32,32,102,108,111,97,116,105,110,103,32,112,111,105,110,116,32,97,114,105,116,104,109,101,116,105,99,46,10,0,73,110,116,101,114,110,97,108,32,101,114,114,111,114,32,105,110,32,115,112,108,105,116,101,110,99,115,101,103,115,40,41,58,10,0,32,32,77,97,107,105,110,103,32,97,32,108,105,115,116,32,111,102,32,98,97,100,32,116,114,105,97,110,103,108,101,115,46,10,0,32,32,83,112,108,105,116,116,105,110,103,32,116,104,105,115,32,116,114,105,97,110,103,108,101,32,97,116,32,105,116,115,32,99,105,114,99,117,109,99,101,110,116,101,114,58,10,0,87,97,114,110,105,110,103,58,32,32,78,101,119,32,118,101,114,116,101,120,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,32,102,97,108,108,115,32,111,110,32,101,120,105,115,116,105,110,103,32,118,101,114,116,101,120,46,10,0,32,32,82,101,106,101,99,116,105,110,103,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,46,10,0,32,32,84,104,101,32,110,101,119,32,118,101,114,116,101,120,32,105,115,32,97,116,32,116,104,101,32,99,105,114,99,117,109,99,101,110,116,101,114,32,111,102,32,116,114,105,97,110,103,108,101,10,0,84,104,105,115,32,112,114,111,98,97,98,108,121,32,109,101,97,110,115,32,116,104,97,116,32,73,32,97,109,32,116,114,121,105,110,103,32,116,111,32,114,101,102,105,110,101,32,116,114,105,97,110,103,108,101,115,10,0,32,32,116,111,32,97,32,115,109,97,108,108,101,114,32,115,105,122,101,32,116,104,97,110,32,99,97,110,32,98,101,32,97,99,99,111,109,109,111,100,97,116,101,100,32,98,121,32,116,104,101,32,102,105,110,105,116,101,10,0,32,32,112,114,101,99,105,115,105,111,110,32,111,102,32,102,108,111,97,116,105,110,103,32,112,111,105,110,116,32,97,114,105,116,104,109,101,116,105,99,46,32,32,40,89,111,117,32,99,97,110,32,98,101,10,0,32,32,115,117,114,101,32,111,102,32,116,104,105,115,32,105,102,32,73,32,102,97,105,108,32,116,111,32,116,101,114,109,105,110,97,116,101,46,41,10,0,65,100,100,105,110,103,32,83,116,101,105,110,101,114,32,112,111,105,110,116,115,32,116,111,32,101,110,102,111,114,99,101,32,113,117,97,108,105,116,121,46,10,0,32,32,76,111,111,107,105,110,103,32,102,111,114,32,101,110,99,114,111,97,99,104,101,100,32,115,117,98,115,101,103,109,101,110,116,115,46,10,0,32,32,83,112,108,105,116,116,105,110,103,32,101,110,99,114,111,97,99,104,101,100,32,115,117,98,115,101,103,109,101,110,116,115,46,10,0,32,32,83,112,108,105,116,116,105,110,103,32,98,97,100,32,116,114,105,97,110,103,108,101,115,46,10,0,10,87,97,114,110,105,110,103,58,32,32,73,32,114,97,110,32,111,117,116,32,111,102,32,83,116,101,105,110,101,114,32,112,111,105,110,116,115,44,32,98,117,116,32,116,104,101,32,109,101,115,104,32,104,97,115,10,0,32,32,111,110,101,32,101,110,99,114,111,97,99,104,101,100,32,115,117,98,115,101,103,109,101,110,116,44,32,97,110,100,32,116,104,101,114,101,102,111,114,101,32,109,105,103,104,116,32,110,111,116,32,98,101,32,116,114,117,108,121,10,0,32,32,37,108,100,32,101,110,99,114,111,97,99,104,101,100,32,115,117,98,115,101,103,109,101,110,116,115,44,32,97,110,100,32,116,104,101,114,101,102,111,114,101,32,109,105,103,104,116,32,110,111,116,32,98,101,32,116,114,117,108,121,10,0,32,32,68,101,108,97,117,110,97,121,46,32,32,73,102,32,116,104,101,32,68,101,108,97,117,110,97,121,32,112,114,111,112,101,114,116,121,32,105,115,32,105,109,112,111,114,116,97,110,116,32,116,111,32,121,111,117,44,10,0,32,32,116,114,121,32,105,110,99,114,101,97,115,105,110,103,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,83,116,101,105,110,101,114,32,112,111,105,110,116,115,32,40,99,111,110,116,114,111,108,108,101,100,32,98,121,10,0,32,32,116,104,101,32,45,83,32,115,119,105,116,99,104,41,32,115,108,105,103,104,116,108,121,32,97,110,100,32,116,114,121,32,97,103,97,105,110,46,10,10,0,65,100,100,105,110,103,32,118,101,114,116,105,99,101,115,32,102,111,114,32,115,101,99,111,110,100,45,111,114,100,101,114,32,116,114,105,97,110,103,108,101,115,46,10,0,32,32,67,114,101,97,116,105,110,103,32,40,37,46,49,50,103,44,32,37,46,49,50,103,41,46,10,0,69,114,114,111,114,58,32,32,73,110,112,117,116,32,109,117,115,116,32,104,97,118,101,32,97,116,32,108,101,97,115,116,32,116,104,114,101,101,32,105,110,112,117,116,32,118,101,114,116,105,99,101,115,46,10,0,87,114,105,116,105,110,103,32,118,101,114,116,105,99,101,115,46,10,0,87,114,105,116,105,110,103,32,116,114,105,97,110,103,108,101,115,46,10,0,87,114,105,116,105,110,103,32,115,101,103,109,101,110,116,115,46,10,0,87,114,105,116,105,110,103,32,101,100,103,101,115,46,10,0,87,114,105,116,105,110,103,32,86,111,114,111,110,111,105,32,118,101,114,116,105,99,101,115,46,10,0,87,114,105,116,105,110,103,32,86,111,114,111,110,111,105,32,101,100,103,101,115,46,10,0,87,114,105,116,105,110,103,32,110,101,105,103,104,98,111,114,115,46,10,0,77,101,115,104,32,113,117,97,108,105,116,121,32,115,116,97,116,105,115,116,105,99,115,58,10,10,0,32,32,83,109,97,108,108,101,115,116,32,97,114,101,97,58,32,37,49,54,46,53,103,32,32,32,124,32,32,76,97,114,103,101,115,116,32,97,114,101,97,58,32,37,49,54,46,53,103,10,0,32,32,83,104,111,114,116,101,115,116,32,101,100,103,101,58,32,37,49,54,46,53,103,32,32,32,124,32,32,76,111,110,103,101,115,116,32,101,100,103,101,58,32,37,49,54,46,53,103,10,0,32,32,83,104,111,114,116,101,115,116,32,97,108,116,105,116,117,100,101,58,32,37,49,50,46,53,103,32,32,32,124,32,32,76,97,114,103,101,115,116,32,97,115,112,101,99,116,32,114,97,116,105,111,58,32,37,56,46,53,103,10,10,0,32,32,84,114,105,97,110,103,108,101,32,97,115,112,101,99,116,32,114,97,116,105,111,32,104,105,115,116,111,103,114,97,109,58,10,0,32,32,49,46,49,53,52,55,32,45,32,37,45,54,46,54,103,32,32,32,32,58,32,32,37,56,100,32,32,32,32,124,32,37,54,46,54,103,32,45,32,37,45,54,46,54,103,32,32,32,32,32,58,32,32,37,56,100,10,0,32,32,37,54,46,54,103,32,45,32,37,45,54,46,54,103,32,32,32,32,58,32,32,37,56,100,32,32,32,32,124,32,37,54,46,54,103,32,45,32,37,45,54,46,54,103,32,32,32,32,32,58,32,32,37,56,100,10,0,32,32,37,54,46,54,103,32,45,32,37,45,54,46,54,103,32,32,32,32,58,32,32,37,56,100,32,32,32,32,124,32,37,54,46,54,103,32,45,32,32,32,32,32,32,32,32,32,32,32,32,58,32,32,37,56,100,10,0,32,32,40,65,115,112,101,99,116,32,114,97,116,105,111,32,105,115,32,108,111,110,103,101,115,116,32,101,100,103,101,32,100,105,118,105,100,101,100,32,98,121,32,115,104,111,114,116,101,115,116,32,97,108,116,105,116,117,100,101,41,10,10,0,32,32,83,109,97,108,108,101,115,116,32,97,110,103,108,101,58,32,37,49,53,46,53,103,32,32,32,124,32,32,76,97,114,103,101,115,116,32,97,110,103,108,101,58,32,37,49,53,46,53,103,10,10,0,32,32,65,110,103,108,101,32,104,105,115,116,111,103,114,97,109,58,10,0,32,32,32,32,37,51,100,32,45,32,37,51,100,32,100,101,103,114,101,101,115,58,32,32,37,56,100,32,32,32,32,124,32,32,32,32,37,51,100,32,45,32,37,51,100,32,100,101,103,114,101,101,115,58,32,32,37,56,100,10,0,10,83,116,97,116,105,115,116,105,99,115,58,10,10,0,32,32,73,110,112,117,116,32,118,101,114,116,105,99,101,115,58,32,37,100,10,0,32,32,73,110,112,117,116,32,116,114,105,97,110,103,108,101,115,58,32,37,100,10,0,32,32,73,110,112,117,116,32,115,101,103,109,101,110,116,115,58,32,37,100,10,0,32,32,73,110,112,117,116,32,104,111,108,101,115,58,32,37,100,10,0,10,32,32,77,101,115,104,32,118,101,114,116,105,99,101,115,58,32,37,108,100,10,0,32,32,77,101,115,104,32,116,114,105,97,110,103,108,101,115,58,32,37,108,100,10,0,32,32,77,101,115,104,32,101,100,103,101,115,58,32,37,108,100,10,0,32,32,77,101,115,104,32,101,120,116,101,114,105,111,114,32,98,111,117,110,100,97,114,121,32,101,100,103,101,115,58,32,37,108,100,10,0,32,32,77,101,115,104,32,105,110,116,101,114,105,111,114,32,98,111,117,110,100,97,114,121,32,101,100,103,101,115,58,32,37,108,100,10,0,32,32,77,101,115,104,32,115,117,98,115,101,103,109,101,110,116,115,32,40,99,111,110,115,116,114,97,105,110,101,100,32,101,100,103,101,115,41,58,32,37,108,100,10,0,77,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,115,116,97,116,105,115,116,105,99,115,58,10,10,0,32,32,77,97,120,105,109,117,109,32,110,117,109,98,101,114,32,111,102,32,118,101,114,116,105,99,101,115,58,32,37,108,100,10,0,32,32,77,97,120,105,109,117,109,32,110,117,109,98,101,114,32,111,102,32,116,114,105,97,110,103,108,101,115,58,32,37,108,100,10,0,32,32,77,97,120,105,109,117,109,32,110,117,109,98,101,114,32,111,102,32,115,117,98,115,101,103,109,101,110,116,115,58,32,37,108,100,10,0,32,32,77,97,120,105,109,117,109,32,110,117,109,98,101,114,32,111,102,32,118,105,114,105,58,32,37,108,100,10,0,32,32,77,97,120,105,109,117,109,32,110,117,109,98,101,114,32,111,102,32,101,110,99,114,111,97,99,104,101,100,32,115,117,98,115,101,103,109,101,110,116,115,58,32,37,108,100,10,0,32,32,77,97,120,105,109,117,109,32,110,117,109,98,101,114,32,111,102,32,98,97,100,32,116,114,105,97,110,103,108,101,115,58,32,37,108,100,10,0,32,32,77,97,120,105,109,117,109,32,110,117,109,98,101,114,32,111,102,32,115,116,97,99,107,101,100,32,116,114,105,97,110,103,108,101,32,102,108,105,112,115,58,32,37,108,100,10,0,32,32,77,97,120,105,109,117,109,32,110,117,109,98,101,114,32,111,102,32,115,112,108,97,121,32,116,114,101,101,32,110,111,100,101,115,58,32,37,108,100,10,0,32,32,65,112,112,114,111,120,105,109,97,116,101,32,104,101,97,112,32,109,101,109,111,114,121,32,117,115,101,32,40,98,121,116,101,115,41,58,32,37,108,100,10,10,0,65,108,103,111,114,105,116,104,109,105,99,32,115,116,97,116,105,115,116,105,99,115,58,10,10,0,32,32,78,117,109,98,101,114,32,111,102,32,105,110,99,105,114,99,108,101,32,116,101,115,116,115,58,32,37,108,100,10,0,32,32,78,117,109,98,101,114,32,111,102,32,51,68,32,111,114,105,101,110,116,97,116,105,111,110,32,116,101,115,116,115,58,32,37,108,100,10,0,32,32,78,117,109,98,101,114,32,111,102,32,50,68,32,111,114,105,101,110,116,97,116,105,111,110,32,116,101,115,116,115,58,32,37,108,100,10,0,32,32,78,117,109,98,101,114,32,111,102,32,114,105,103,104,116,45,111,102,45,104,121,112,101,114,98,111,108,97,32,116,101,115,116,115,58,32,37,108,100,10,0,32,32,78,117,109,98,101,114,32,111,102,32,99,105,114,99,108,101,32,116,111,112,32,99,111,109,112,117,116,97,116,105,111,110,115,58,32,37,108,100,10,0,32,32,78,117,109,98,101,114,32,111,102,32,116,114,105,97,110,103,108,101,32,99,105,114,99,117,109,99,101,110,116,101,114,32,99,111,109,112,117,116,97,116,105,111,110,115,58,32,37,108,100,10,0,78,79,84,32,119,114,105,116,105,110,103,32,118,101,114,116,105,99,101,115,46,10,0,78,79,84,32,119,114,105,116,105,110,103,32,116,114,105,97,110,103,108,101,115,46,10,0,78,79,84,32,119,114,105,116,105,110,103,32,115,101,103,109,101,110,116,115,46,10,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,119,114,97,112,112,101,114,115,47,106,97,118,97,115,99,114,105,112,116,47,46,47,105,111,47,46,46,47,46,46,47,46,46,47,99,47,98,97,109,103,47,46,46,47,115,104,97,114,101,100,47,46,47,77,101,109,79,112,115,47,77,101,109,79,112,115,46,104,0,32,32,32,32,32,32,32,32,32,110,97,109,101,58,32,34,0,34,10,0,32,32,32,32,32,32,32,32,32,110,117,109,101,108,58,32,0,32,32,32,32,32,32,32,32,32,110,100,105,109,115,58,32,0,32,32,32,32,32,32,32,32,32,32,115,105,122,101,58,32,0,32,32,32,32,32,32,32,32,32,32,115,105,122,101,58,32,91,101,109,112,116,121,93,10,0,32,32,32,32,32,32,32,32,32,118,97,108,117,101,58,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,119,114,97,112,112,101,114,115,47,106,97,118,97,115,99,114,105,112,116,47,46,47,105,111,47,46,46,47,46,46,47,46,46,47,99,47,99,108,97,115,115,101,115,47,46,47,79,112,116,105,111,110,115,47,79,112,116,105,111,110,46,104,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,119,114,97,112,112,101,114,115,47,106,97,118,97,115,99,114,105,112,116,47,46,47,105,111,47,46,46,47,46,46,47,46,46,47,99,47,99,108,97,115,115,101,115,47,46,47,79,112,116,105,111,110,115,47,46,47,71,101,110,101,114,105,99,79,112,116,105,111,110,46,104,0,49,51,71,101,110,101,114,105,99,79,112,116,105,111,110,73,100,69,0,54,79,112,116,105,111,110,0,54,79,98,106,101,99,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,119,114,97,112,112,101,114,115,47,106,97,118,97,115,99,114,105,112,116,47,46,47,105,111,47,46,46,47,46,46,47,46,46,47,99,47,99,108,97,115,115,101,115,47,46,47,67,111,110,116,111,117,114,46,104,0,32,67,111,110,116,111,117,114,58,32,0,32,32,32,32,110,111,100,115,58,32,0,32,32,99,108,111,115,101,100,58,32,0,32,32,32,120,32,44,32,121,58,10,0,55,67,111,110,116,111,117,114,73,100,69,0,37,115,37,108,102,0,112,81,122,68,113,51,48,105,97,0,100,97,116,97,32,112,114,111,118,105,100,101,100,32,115,104,111,117,108,100,32,104,97,118,101,32,101,105,116,104,101,114,32,0,32,111,114,32,0,32,108,105,110,101,115,32,40,110,111,116,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,73,110,116,101,114,112,70,114,111,109,77,101,115,104,84,111,77,101,115,104,50,100,120,47,73,110,116,101,114,112,70,114,111,109,77,101,115,104,84,111,77,101,115,104,50,100,120,46,99,112,112,0,73,110,116,101,114,112,70,114,111,109,77,101,115,104,84,111,77,101,115,104,50,100,120,0,100,101,102,97,117,108,116,0,84,114,105,97,110,103,108,101,32,110,117,109,98,101,114,32,0,32,110,111,116,32,105,110,32,91,48,32,0,93,44,32,114,101,112,111,114,116,32,98,117,103,32,116,111,32,100,101,118,101,108,111,112,101,114,115,32,40,105,110,116,101,114,112,111,108,97,116,105,111,110,32,112,111,105,110,116,58,32,0,111,112,116,105,111,110,32,111,102,32,110,97,109,101,32,34,0,34,32,110,111,116,32,102,111,117,110,100,44,32,97,110,100,32,110,111,32,100,101,102,97,117,108,116,32,118,97,108,117,101,32,104,97,115,32,98,101,101,110,32,112,114,111,118,105,100,101,100,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,73,110,116,101,114,112,70,114,111,109,77,101,115,104,84,111,77,101,115,104,50,100,120,47,46,46,47,46,46,47,99,108,97,115,115,101,115,47,46,47,79,112,116,105,111,110,115,47,79,112,116,105,111,110,115,46,104,0,71,101,116,0,101,108,101,109,101,110,116,0,101,108,101,109,101,110,116,32,97,110,100,32,110,111,100,101,0,109,97,120,32,99,111,110,110,101,99,116,105,118,105,116,121,32,119,105,100,116,104,32,114,101,97,99,104,101,100,32,40,0,41,33,32,105,110,99,114,101,97,115,101,32,119,105,100,116,104,32,111,102,32,99,111,110,110,101,99,116,105,118,105,116,121,32,116,97,98,108,101,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,78,111,100,101,67,111,110,110,101,99,116,105,118,105,116,121,120,47,78,111,100,101,67,111,110,110,101,99,116,105,118,105,116,121,120,46,99,112,112,0,78,111,100,101,67,111,110,110,101,99,116,105,118,105,116,121,120,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,100,97,116,97,115,116,114,117,99,116,117,114,101,115,47,68,97,116,97,83,101,116,46,99,112,112,0,99,111,117,108,100,32,110,111,116,32,114,101,99,111,103,110,105,122,101,32,101,110,117,109,32,116,121,112,101,58,32,0,68,97,116,97,83,101,116,32,101,99,104,111,58,32,0,32,111,98,106,101,99,116,115,10,0,116,114,121,105,110,103,32,116,111,32,98,105,110,97,114,121,32,115,101,97,114,99,104,32,111,110,32,97,32,110,111,110,45,115,111,114,116,101,100,32,100,97,116,97,115,101,116,33,0,71,101,116,79,98,106,101,99,116,66,121,73,100,0,99,111,117,108,100,32,110,111,116,32,102,105,110,100,32,111,98,106,101,99,116,32,119,105,116,104,32,105,100,32,0,32,105,110,32,68,97,116,97,83,101,116,32,0,114,98,0,114,0,32,32,32,80,114,111,99,101,115,115,105,110,103,32,102,105,110,105,116,101,32,101,108,101,109,101,110,116,32,109,111,100,101,108,32,111,102,32,97,110,97,108,121,115,105,115,32,0,32,32,32,32,32,32,99,111,110,102,105,103,117,114,105,110,103,32,101,108,101,109,101,110,116,32,97,110,100,32,108,111,97,100,115,10,0,32,32,32,32,32,32,99,114,101,97,116,105,110,103,32,118,101,114,116,101,120,32,80,73,68,115,10,0,32,32,32,32,32,32,114,101,115,111,108,118,105,110,103,32,110,111,100,101,32,99,111,110,115,116,114,97,105,110,116,115,10,0,32,32,32,32,32,32,99,114,101,97,116,105,110,103,32,110,111,100,97,108,32,100,101,103,114,101,101,115,32,111,102,32,102,114,101,101,100,111,109,10,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,70,101,109,77,111,100,101,108,46,99,112,112,0,83,111,108,117,116,105,111,110,65,110,97,108,121,115,101,115,76,105,115,116,0,32,32,32,0,70,101,109,77,111,100,101,108,32,105,110,105,116,105,97,108,105,122,97,116,105,111,110,32,101,108,97,112,115,101,100,32,116,105,109,101,58,0,67,111,114,101,32,115,111,108,117,116,105,111,110,32,101,108,97,112,115,101,100,32,116,105,109,101,58,0,32,32,32,84,111,116,97,108,32,101,108,97,112,115,101,100,32,116,105,109,101,58,32,0,32,104,114,115,32,0,32,109,105,110,32,0,32,115,101,99,0,67,111,117,108,100,32,110,111,116,32,102,105,110,100,32,97,108,105,97,115,32,102,111,114,32,97,110,97,108,121,115,105,115,95,116,121,112,101,32,0,32,105,110,32,108,105,115,116,32,111,102,32,70,101,109,77,111,100,101,108,32,97,110,97,108,121,115,101,115,0,32,32,32,32,32,32,116,111,111,108,107,105,116,115,32,79,112,116,105,111,110,115,32,115,101,116,32,102,111,114,32,97,110,97,108,121,115,105,115,32,116,121,112,101,58,32,0,67,111,114,101,32,115,111,108,117,116,105,111,110,32,101,108,97,112,115,101,100,32,116,105,109,101,32,32,32,32,58,32,0,32,83,101,99,111,110,100,115,10,0,67,111,114,101,32,115,111,108,117,116,105,111,110,32,110,117,109,98,101,114,32,111,102,32,102,108,111,112,115,32,58,32,0,32,70,108,111,112,115,10,0,67,111,114,101,32,115,111,108,117,116,105,111,110,32,109,101,109,111,114,121,32,117,115,101,100,32,32,32,32,32,58,32,0,32,66,121,116,101,115,10,0,101,114,114,111,114,32,114,101,97,100,105,110,103,32,116,104,101,32,98,117,102,102,101,114,32,102,114,111,109,32,109,97,114,115,104,97,108,108,101,100,32,102,105,108,101,33,0,82,101,115,116,97,114,116,0,32,32,32,117,112,100,97,116,105,110,103,32,118,101,114,116,105,99,101,115,32,112,111,115,105,116,105,111,110,115,10,0,32,32,32,85,112,100,97,116,105,110,103,32,99,111,110,115,116,114,97,105,110,116,115,32,97,110,100,32,97,99,116,105,118,101,32,100,111,109,97,105,110,32,111,102,32,97,110,97,108,121,115,105,115,32,0,32,102,111,114,32,116,105,109,101,58,32,0,110,111,32,109,97,115,115,32,102,108,117,120,32,115,101,103,109,101,110,116,115,32,97,118,97,105,108,97,98,108,101,33,0,77,97,115,115,70,108,117,120,120,0,73,110,116,101,114,112,111,108,97,116,105,111,110,32,0,82,101,113,117,101,115,116,101,100,79,117,116,112,117,116,115,120,0,83,104,111,117,108,100,32,110,111,116,32,98,101,32,114,101,113,117,101,115,116,105,110,103,32,100,101,112,101,110,100,101,110,116,115,32,119,104,101,110,32,97,110,32,65,68,32,108,105,98,114,97,114,121,32,105,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,33,0,82,101,113,117,101,115,116,101,100,68,101,112,101,110,100,101,110,116,115,120,0,109,111,114,101,32,116,104,97,110,32,51,32,99,111,110,116,114,111,108,115,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,79,117,116,112,117,116,67,111,110,116,114,111,108,115,120,0,13,0,32,32,32,32,32,32,99,111,110,118,111,108,117,116,105,111,110,32,112,114,111,103,114,101,115,115,58,32,0,37,32,32,0,37,32,32,32,0,32,32,32,78,117,109,98,101,114,32,111,102,32,97,99,116,105,118,101,32,110,111,100,101,115,32,105,110,32,69,80,76,32,108,97,121,101,114,58,32,0,32,32,32,78,117,109,98,101,114,32,111,102,32,97,99,116,105,118,101,32,110,111,100,101,115,32,76,50,32,80,114,111,106,101,99,116,105,111,110,58,32,0,99,111,117,108,100,32,110,111,116,32,105,110,105,116,105,97,108,105,122,101,32,111,117,116,112,117,116,32,115,116,114,101,97,109,0,73,110,105,116,70,114,111,109,66,117,102,102,101,114,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,46,47,80,97,114,97,109,115,47,71,101,110,101,114,105,99,80,97,114,97,109,46,104,0,32,32,32,87,65,82,78,73,78,71,58,32,112,97,114,97,109,101,116,101,114,32,0,32,105,115,32,97,32,71,101,110,101,114,105,99,80,97,114,97,109,32,97,110,100,32,99,97,110,110,111,116,32,98,101,32,109,97,114,115,104,97,108,108,101,100,10,0,71,101,110,101,114,105,99,80,97,114,97,109,58,10,0,32,32,32,101,110,117,109,58,32,32,0,49,50,71,101,110,101,114,105,99,80,97,114,97,109,73,80,106,69,0,53,80,97,114,97,109,0,49,50,71,101,110,101,114,105,99,80,97,114,97,109,73,80,80,99,69,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,46,47,69,120,116,101,114,110,97,108,82,101,115,117,108,116,115,47,71,101,110,101,114,105,99,69,120,116,101,114,110,97,108,82,101,115,117,108,116,46,104,0,87,114,105,116,101,68,97,116,97,0,71,101,110,101,114,105,99,69,120,116,101,114,110,97,108,82,101,115,117,108,116,32,105,110,115,116,97,110,116,105,97,116,101,100,32,102,111,114,32,116,121,112,101,32,86,101,99,116,111,114,60,73,115,115,109,68,111,117,98,108,101,62,42,32,99,97,108,108,101,100,32,0,71,101,110,101,114,105,99,69,120,116,101,114,110,97,108,82,101,115,117,108,116,60,86,101,99,116,111,114,60,73,115,115,109,80,68,111,117,98,108,101,62,42,62,58,10,0,50,49,71,101,110,101,114,105,99,69,120,116,101,114,110,97,108,82,101,115,117,108,116,73,80,54,86,101,99,116,111,114,73,100,69,69,0,49,52,69,120,116,101,114,110,97,108,82,101,115,117,108,116,0,71,101,110,101,114,105,99,69,120,116,101,114,110,97,108,82,101,115,117,108,116,60,73,115,115,109,80,68,111,117,98,108,101,42,62,58,10,0,32,32,32,91,32,0,32,93,10,0,50,49,71,101,110,101,114,105,99,69,120,116,101,114,110,97,108,82,101,115,117,108,116,73,80,100,69,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,46,46,47,116,111,111,108,107,105,116,115,47,46,47,111,98,106,101,99,116,115,47,46,46,47,105,115,115,109,47,46,47,73,115,115,109,86,101,99,46,104,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,46,46,47,116,111,111,108,107,105,116,115,47,46,47,111,98,106,101,99,116,115,47,46,46,47,105,115,115,109,47,46,47,73,115,115,109,83,101,113,86,101,99,46,104,0,73,115,115,109,83,101,113,86,101,99,32,115,105,122,101,32,0,10,32,0,49,48,73,115,115,109,83,101,113,86,101,99,73,100,69,0,49,48,73,115,115,109,65,98,115,86,101,99,73,100,69,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,101,116,115,99,32,118,101,99,116,111,114,32,119,105,116,104,111,117,116,32,80,69,84,83,67,32,99,111,109,112,105,108,101,100,33,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,46,46,47,116,111,111,108,107,105,116,115,47,46,47,111,98,106,101,99,116,115,47,46,47,86,101,99,116,111,114,46,104,0,71,101,110,101,114,105,99,77,97,114,115,104,97,108,108,0,71,101,110,101,114,105,99,69,120,116,101,114,110,97,108,82,101,115,117,108,116,60,100,111,117,98,108,101,62,58,10,0,50,49,71,101,110,101,114,105,99,69,120,116,101,114,110,97,108,82,101,115,117,108,116,73,100,69,0,49,50,71,101,110,101,114,105,99,80,97,114,97,109,73,105,69,0,49,52,84,114,97,110,115,105,101,110,116,73,110,112,117,116,0,84,114,97,110,115,105,101,110,116,73,110,112,117,116,58,10,0,32,32,32,110,117,109,116,105,109,101,115,116,101,112,115,58,32,0,45,45,45,105,110,112,117,116,115,58,32,10,0,32,32,32,116,105,109,101,58,32,0,32,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,84,114,97,110,115,105,101,110,116,73,110,112,117,116,46,99,112,112,0,116,105,109,101,115,116,101,112,32,118,97,108,117,101,115,32,109,117,115,116,32,105,110,99,114,101,97,115,101,32,115,101,113,117,101,110,116,105,97,108,108,121,0,65,100,100,84,105,109,101,73,110,112,117,116,0,53,73,110,112,117,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,46,46,47,46,47,73,110,112,117,116,115,47,84,114,97,110,115,105,101,110,116,73,110,112,117,116,46,104,0,49,50,83,112,99,84,114,97,110,115,105,101,110,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,67,111,110,115,116,114,97,105,110,116,115,47,46,46,47,46,46,47,115,104,97,114,101,100,47,46,47,77,101,109,79,112,115,47,77,101,109,79,112,115,46,104,0,83,112,99,84,114,97,110,115,105,101,110,116,58,10,0,32,32,32,110,115,116,101,112,115,58,32,0,32,32,32,115,116,101,112,115,124,116,105,109,101,115,124,118,97,108,117,101,115,10],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+57832);allocate([0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,67,111,110,115,116,114,97,105,110,116,115,47,83,112,99,84,114,97,110,115,105,101,110,116,46,99,112,112,0,99,111,117,108,100,32,110,111,116,32,102,105,110,100,32,116,105,109,101,32,115,101,103,109,101,110,116,32,102,111,114,32,99,111,110,115,116,114,97,105,110,116,0,67,111,110,115,116,114,97,105,110,78,111,100,101,0,99,97,110,110,111,116,32,114,101,116,117,114,110,32,100,111,102,32,97,110,100,32,118,97,108,117,101,32,102,111,114,32,110,111,110,32,112,101,110,97,108,116,121,32,99,111,110,115,116,114,97,105,110,116,0,49,48,67,111,110,115,116,114,97,105,110,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,46,46,47,115,104,97,114,101,100,47,46,47,77,101,109,79,112,115,47,77,101,109,79,112,115,46,104,0,117,110,107,110,111,119,110,32,105,110,115,101,114,116,32,109,111,100,101,33,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,46,47,69,108,101,109,101,110,116,115,47,46,46,47,46,46,47,116,111,111,108,107,105,116,115,47,46,47,111,98,106,101,99,116,115,47,46,46,47,105,115,115,109,47,46,47,73,115,115,109,68,101,110,115,101,77,97,116,46,104,0,83,101,116,86,97,108,117,101,115,0,65,32,97,110,100,32,65,88,32,115,104,111,117,108,100,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,110,117,109,98,101,114,32,111,102,32,114,111,119,115,33,0,77,97,116,77,117,108,116,0,65,32,97,110,100,32,88,32,115,104,111,117,108,100,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,110,117,109,98,101,114,32,111,102,32,99,111,108,117,109,110,115,33,0,117,110,107,110,111,119,110,32,110,111,114,109,32,33,0,78,111,114,109,0,73,115,115,109,68,101,110,115,101,77,97,116,32,115,105,122,101,32,0,49,50,73,115,115,109,68,101,110,115,101,77,97,116,73,100,69,0,49,48,73,115,115,109,65,98,115,77,97,116,73,100,69,0,112,101,116,115,99,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,101,116,115,99,32,109,97,116,114,105,120,32,119,105,116,104,111,117,116,32,80,69,84,83,67,32,99,111,109,112,105,108,101,100,33,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,46,47,69,108,101,109,101,110,116,115,47,46,46,47,46,46,47,116,111,111,108,107,105,116,115,47,46,47,111,98,106,101,99,116,115,47,46,47,77,97,116,114,105,120,46,104,0,73,110,105,116,67,104,101,99,107,65,110,100,83,101,116,84,121,112,101,0,117,110,107,110,111,119,32,116,111,111,108,107,105,116,32,116,121,112,101,32,0,52,78,111,100,101,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,78,111,100,101,46,99,112,112,0,78,111,100,101,58,10,0,32,32,32,97,110,97,108,121,115,105,115,95,101,110,117,109,58,32,0,32,32,32,97,112,112,114,111,120,105,109,97,116,105,111,110,58,32,0,32,32,32,105,110,100,101,120,105,110,103,117,112,100,97,116,101,58,32,0,71,101,116,68,111,102,0,71,101,116,68,111,102,76,105,115,116,0,71,101,116,76,111,99,97,108,68,111,102,76,105,115,116,0,67,97,110,110,111,116,32,99,104,97,110,103,101,32,100,111,102,32,111,102,32,102,114,111,122,101,110,32,110,111,100,101,0,68,111,102,73,110,70,83,101,116,0,71,101,116,78,117,109,98,101,114,79,102,68,111,102,115,0,86,101,99,77,101,114,103,101,32,99,97,110,32,111,110,108,121,32,109,101,114,103,101,32,102,114,111,109,32,116,104,101,32,115,32,111,114,32,102,45,115,101,116,32,111,110,116,111,32,116,104,101,32,103,45,115,101,116,33,0,86,101,99,77,101,114,103,101,0,86,101,99,82,101,100,117,99,101,32,99,97,110,32,111,110,108,121,32,109,101,114,103,101,32,102,114,111,109,32,116,104,101,32,115,32,111,114,32,102,45,115,101,116,32,111,110,116,111,32,116,104,101,32,103,45,115,101,116,33,0,86,101,99,82,101,100,117,99,101,0,68,105,115,116,114,105,98,117,116,101,68,111,102,115,0,79,102,102,115,101,116,68,111,102,115,0,83,104,111,119,84,114,117,101,68,111,102,115,0,85,112,100,97,116,101,67,108,111,110,101,68,111,102,115,0,54,86,101,114,116,101,120,0,86,101,114,116,101,120,58,10,0,32,32,32,112,105,100,58,32,0,32,32,32,120,58,32,0,32,32,32,121,58,32,0,32,32,32,122,58,32,0,32,32,32,115,105,103,109,97,58,32,0,32,32,32,99,111,110,110,101,99,116,105,118,105,116,121,58,32,0,32,32,32,99,108,111,110,101,58,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,86,101,114,116,101,120,46,99,112,112,0,85,112,100,97,116,101,80,111,115,105,116,105,111,110,0,55,69,108,101,109,101,110,116,0,73,110,112,117,116,32,109,105,115,115,105,110,103,46,32,72,101,114,101,32,97,114,101,32,116,104,101,32,105,110,112,117,116,32,112,111,105,110,116,101,114,115,32,119,101,32,104,97,118,101,32,102,111,114,32,118,120,58,32,0,44,32,118,121,58,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,69,108,101,109,101,110,116,115,47,69,108,101,109,101,110,116,46,99,112,112,0,83,116,114,97,105,110,82,97,116,101,83,83,65,0,44,32,118,122,58,32,0,83,116,114,97,105,110,82,97,116,101,70,83,0,67,111,111,114,100,105,110,97,116,101,32,115,121,115,116,101,109,32,0,67,111,111,114,100,105,110,97,116,101,83,121,115,116,101,109,84,114,97,110,115,102,111,114,109,0,32,101,108,101,109,101,110,116,58,10,0,32,32,32,105,100,32,58,32,0,118,101,114,116,105,99,101,115,32,61,32,78,85,76,76,10,0,110,111,100,101,115,32,61,32,78,85,76,76,10,0,109,97,116,101,114,105,97,108,32,61,32,78,85,76,76,10,0,109,97,116,112,97,114,32,61,32,78,85,76,76,10,0,112,97,114,97,109,101,116,101,114,115,32,61,32,78,85,76,76,10,0,32,32,32,105,110,112,117,116,115,10,0,105,110,112,117,116,115,61,78,85,76,76,10,0,83,116,114,97,105,110,82,97,116,101,72,79,0,83,116,114,97,105,110,82,97,116,101,72,79,50,100,118,101,114,116,105,99,97,108,0,83,116,114,97,105,110,82,97,116,101,83,83,65,49,100,0,68,101,108,116,97,49,56,111,80,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,0,77,117,110,103,115,109,116,112,80,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,0,68,101,108,116,97,49,56,111,112,100,80,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,0,110,111,100,101,115,91,0,93,32,61,32,0,71,101,116,73,110,112,117,116,76,105,115,116,79,110,78,111,100,101,115,0,71,101,116,73,110,112,117,116,76,105,115,116,79,110,78,111,100,101,115,86,101,108,111,99,105,116,121,0,71,101,116,73,110,112,117,116,76,105,115,116,79,110,86,101,114,116,105,99,101,115,0,73,110,112,117,116,67,114,101,97,116,101,0,110,111,100,97,108,32,118,101,99,116,111,114,32,105,115,32,101,105,116,104,101,114,32,110,117,109,98,101,114,111,102,118,101,114,116,105,99,101,115,32,111,114,32,110,117,109,98,101,114,111,102,118,101,114,116,105,99,101,115,43,49,32,108,111,110,103,46,32,70,105,101,108,100,32,112,114,111,118,105,100,101,100,32,40,0,41,32,105,115,32,0,32,108,111,110,103,0,99,111,117,108,100,32,110,111,116,32,114,101,99,111,103,110,105,122,101,32,110,97,116,117,114,101,32,111,102,32,118,101,99,116,111,114,32,102,114,111,109,32,99,111,100,101,32,0,101,108,101,109,101,110,116,32,118,101,99,116,111,114,32,105,115,32,101,105,116,104,101,114,32,110,117,109,98,101,114,111,102,101,108,101,109,101,110,116,115,32,111,114,32,110,117,109,98,101,114,111,102,101,108,101,109,101,110,116,115,43,49,32,108,111,110,103,46,32,70,105,101,108,100,32,112,114,111,118,105,100,101,100,32,40,0,67,97,110,110,111,116,32,97,100,100,32,105,110,112,117,116,32,102,111,114,32,118,101,99,116,111,114,32,116,121,112,101,32,0,32,40,110,111,116,32,115,117,112,112,111,114,116,101,100,41,0,109,105,103,114,97,116,105,111,110,95,115,116,121,108,101,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,73,115,70,108,111,97,116,105,110,103,0,77,97,114,115,104,97,108,108,69,108,101,109,101,110,116,0,69,114,114,111,114,58,32,109,105,103,114,97,116,105,111,110,32,115,104,111,117,108,100,32,98,101,32,65,103,103,114,101,115,115,105,118,101,44,32,83,111,102,116,44,32,83,117,98,101,108,101,109,101,110,116,44,32,67,111,110,116,97,99,116,32,111,114,32,71,114,111,117,110,100,105,110,103,79,110,108,121,0,77,105,103,114,97,116,101,71,114,111,117,110,100,105,110,103,76,105,110,101,0,80,111,115,105,116,105,118,101,68,101,103,114,101,101,68,97,121,0,82,101,115,117,108,116,73,110,116,101,114,112,111,108,97,116,105,111,110,0,78,111,32,101,105,103,101,110,32,118,97,108,117,101,32,102,111,117,110,100,0,83,116,114,101,115,115,77,97,120,80,114,105,110,99,105,112,97,108,67,114,101,97,116,101,73,110,112,117,116,0,82,101,115,117,108,116,84,111,77,97,116,114,105,120,0,82,101,115,117,108,116,84,111,86,101,99,116,111,114,0,105,110,116,101,114,112,111,108,97,116,105,111,110,32,0,115,109,98,32,99,111,114,101,58,32,73,110,105,116,105,97,108,105,122,105,110,103,32,103,114,105,100,10,0,84,105,109,101,58,32,116,61,0,32,121,114,47,0,32,121,114,0,32,83,116,101,112,58,32,0,116,111,116,97,108,32,115,121,115,116,101,109,32,109,97,115,115,32,110,111,116,32,99,111,110,115,101,114,118,101,100,32,105,110,32,77,66,32,102,117,110,99,116,105,111,110,0,84,40,101,110,100,41,126,61,84,95,98,111,116,116,111,109,0,84,114,97,110,115,102,111,114,109,73,110,118,83,116,105,102,102,110,101,115,115,77,97,116,114,105,120,67,111,111,114,100,0,84,114,97,110,115,102,111,114,109,76,111,97,100,86,101,99,116,111,114,67,111,111,114,100,0,84,114,97,110,115,102,111,114,109,83,111,108,117,116,105,111,110,67,111,111,114,100,0,84,114,97,110,115,102,111,114,109,83,116,105,102,102,110,101,115,115,77,97,116,114,105,120,67,111,111,114,100,0,54,85,112,100,97,116,101,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,69,108,101,109,101,110,116,115,47,46,46,47,46,47,69,108,101,109,101,110,116,115,47,69,108,101,109,101,110,116,46,104,0,82,101,115,101,116,76,101,118,101,108,115,101,116,70,114,111,109,83,101,103,109,101,110,116,108,105,115,116,0,87,114,105,116,101,76,101,118,101,108,115,101,116,83,101,103,109,101,110,116,0,67,97,108,118,105,110,103,82,97,116,101,68,101,118,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,69,108,101,109,101,110,116,115,47,69,108,101,109,101,110,116,72,111,111,107,46,99,112,112,0,51,83,101,103,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,69,108,101,109,101,110,116,115,47,83,101,103,46,99,112,112,0,102,114,111,110,116,32,105,115,32,110,111,116,32,108,111,99,97,116,101,100,32,111,110,32,101,108,101,109,101,110,116,32,101,100,103,101,0,54,83,101,103,82,101,102,0,49,49,69,108,101,109,101,110,116,72,111,111,107,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,69,108,101,109,101,110,116,115,47,46,46,47,46,47,69,108,101,109,101,110,116,115,47,83,101,103,46,104,0,86,97,108,117,101,80,49,79,110,71,97,117,115,115,0,83,101,116,67,117,114,114,101,110,116,67,111,110,102,105,103,117,114,97,116,105,111,110,0,82,101,115,101,116,72,111,111,107,115,0,82,101,100,117,99,101,77,97,116,114,105,99,101,115,0,78,117,109,98,101,114,111,102,78,111,100,101,115,86,101,108,111,99,105,116,121,0,78,117,109,98,101,114,111,102,78,111,100,101,115,80,114,101,115,115,117,114,101,0,78,111,114,109,97,108,84,111,112,0,78,111,114,109,97,108,66,97,115,101,0,78,111,100,97,108,70,117,110,99,116,105,111,110,115,84,101,110,115,111,114,0,78,111,100,97,108,70,117,110,99,116,105,111,110,115,86,101,108,111,99,105,116,121,0,78,111,100,97,108,70,117,110,99,116,105,111,110,115,80,114,101,115,115,117,114,101,0,78,111,100,97,108,70,117,110,99,116,105,111,110,115,68,101,114,105,118,97,116,105,118,101,115,86,101,108,111,99,105,116,121,0,78,101,119,71,97,117,115,115,84,111,112,0,78,101,119,71,97,117,115,115,66,97,115,101,0,74,97,99,111,98,105,97,110,68,101,116,101,114,109,105,110,97,110,116,84,111,112,0,74,97,99,111,98,105,97,110,68,101,116,101,114,109,105,110,97,110,116,66,97,115,101,0,71,101,116,86,101,114,116,105,99,101,115,67,111,111,114,100,105,110,97,116,101,115,84,111,112,0,71,101,116,86,101,114,116,105,99,101,115,67,111,111,114,100,105,110,97,116,101,115,66,97,115,101,0,71,101,116,69,108,101,109,101,110,116,84,121,112,101,0,69,108,101,109,101,110,116,83,105,122,101,115,0,67,111,110,102,105,103,117,114,101,0,65,100,100,73,110,112,117,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,69,108,101,109,101,110,116,115,47,83,101,103,82,101,102,46,99,112,112,0,52,84,114,105,97,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,69,108,101,109,101,110,116,115,47,84,114,105,97,46,99,112,112,0,108,105,115,116,32,111,102,32,118,101,114,116,105,99,101,115,32,111,110,32,98,101,100,58,32,0,67,111,117,108,100,32,110,111,116,32,102,105,110,100,32,50,32,118,101,114,116,105,99,101,115,32,111,110,32,98,101,100,0,69,100,103,101,79,110,66,97,115,101,73,110,100,101,120,0,78,111,116,32,73,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,115,116,114,101,115,115,32,116,101,110,115,111,114,32,99,97,108,99,117,108,97,116,105,111,110,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,109,101,115,104,32,111,102,32,116,121,112,101,32,0,44,32,101,120,116,114,117,100,101,32,109,101,115,104,32,111,114,32,99,97,108,108,32,67,111,109,112,117,116,101,68,101,118,105,97,116,111,114,105,99,83,116,114,101,115,115,84,101,110,115,111,114,0,69,100,103,101,79,110,66,97,115,101,73,110,100,105,99,101,115,0,108,105,115,116,32,111,102,32,118,101,114,116,105,99,101,115,32,111,110,32,115,117,114,102,97,99,101,58,32,0,67,111,117,108,100,32,110,111,116,32,102,105,110,100,32,50,32,118,101,114,116,105,99,101,115,32,111,110,32,115,117,114,102,97,99,101,0,69,100,103,101,79,110,83,117,114,102,97,99,101,73,110,100,105,99,101,115,0,87,114,111,110,103,32,110,117,109,98,101,114,32,111,102,32,105,99,101,32,118,101,114,116,105,99,101,115,32,105,110,32,84,114,105,97,58,58,71,101,116,76,101,118,101,108,115,101,116,73,110,116,101,114,115,101,99,116,105,111,110,33,0,71,101,116,76,101,118,101,108,115,101,116,73,110,116,101,114,115,101,99,116,105,111,110,0,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,32,0,84,119,111,32,101,100,103,101,115,32,111,110,32,98,101,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,46,46,46,0,72,97,115,69,100,103,101,79,110,66,97,115,101,0,84,119,111,32,101,100,103,101,115,32,111,110,32,115,117,114,102,97,99,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,46,46,46,0,72,97,115,69,100,103,101,79,110,83,117,114,102,97,99,101,0,78,97,78,32,102,111,117,110,100,32,105,110,32,118,101,99,116,111,114,0,73,110,102,32,102,111,117,110,100,32,105,110,32,118,101,99,116,111,114,0,84,119,111,32,101,100,103,101,115,32,111,110,32,98,111,117,110,100,97,114,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,46,46,46,0,73,115,79,110,66,97,115,101,0,73,115,79,110,83,117,114,102,97,99,101,0,101,114,114,111,114,32,109,101,115,115,97,103,101,58,32,115,101,103,109,101,110,116,32,119,105,116,104,32,105,100,32,0,32,100,111,101,115,32,110,111,116,32,98,101,108,111,110,103,32,116,111,32,101,108,101,109,101,110,116,32,119,105,116,104,32,105,100,58,0,83,112,97,119,110,84,111,112,69,108,101,109,101,110,116,0,116,104,105,99,107,110,101,115,115,32,105,110,112,117,116,32,110,101,101,100,101,100,32,116,111,32,99,111,109,112,117,116,101,32,103,105,97,32,100,101,102,108,101,99,116,105,111,110,33,0,109,97,110,116,108,101,32,118,105,115,99,111,115,105,116,121,32,105,110,112,117,116,32,110,101,101,100,101,100,32,116,111,32,99,111,109,112,117,116,101,32,103,105,97,32,100,101,102,108,101,99,116,105,111,110,33,0,108,105,116,104,111,115,112,104,101,114,101,32,116,104,105,99,107,110,101,115,115,32,105,110,112,117,116,32,110,101,101,100,101,100,32,116,111,32,99,111,109,112,117,116,101,32,103,105,97,32,100,101,102,108,101,99,116,105,111,110,33,0,100,101,108,116,97,32,116,104,105,99,107,110,101,115,115,32,105,110,112,117,116,32,110,101,101,100,101,100,32,116,111,32,99,111,109,112,117,116,101,32,115,101,97,32,108,101,118,101,108,32,114,105,115,101,33,0,55,84,114,105,97,82,101,102,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,69,108,101,109,101,110,116,115,47,46,46,47,46,47,69,108,101,109,101,110,116,115,47,84,114,105,97,46,104,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,69,108,101,109,101,110,116,115,47,84,114,105,97,82,101,102,46,99,112,112,0,71,101,116,83,101,103,109,101,110,116,78,111,100,97,108,70,117,110,99,116,105,111,110,115,0,69,100,103,101,32,105,110,100,101,120,32,112,114,111,118,105,100,101,100,32,40,0,41,32,105,115,32,110,111,116,32,98,101,116,119,101,101,110,32,48,32,97,110,100,32,50,0,78,111,100,101,79,110,69,100,103,101,73,110,100,105,99,101,115,0,53,84,101,116,114,97,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,69,108,101,109,101,110,116,115,47,84,101,116,114,97,46,99,112,112,0,67,111,117,108,100,32,110,111,116,32,102,105,110,100,32,51,32,118,101,114,116,105,99,101,115,32,111,110,32,98,101,100,0,70,97,99,101,79,110,66,97,115,101,73,110,100,105,99,101,115,0,70,97,99,101,79,110,70,114,111,110,116,73,110,100,105,99,101,115,0,70,97,99,101,79,110,83,117,114,102,97,99,101,73,110,100,105,99,101,115,0,56,84,101,116,114,97,82,101,102,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,69,108,101,109,101,110,116,115,47,46,46,47,46,47,69,108,101,109,101,110,116,115,47,84,101,116,114,97,46,104,0,86,101,114,116,105,99,97,108,83,101,103,109,101,110,116,73,110,100,105,99,101,115,0,86,101,114,116,101,120,67,111,110,110,101,99,116,105,118,105,116,121,0,86,97,108,117,101,80,49,68,101,114,105,118,97,116,105,118,101,115,79,110,71,97,117,115,115,0,85,112,100,97,116,101,80,111,116,101,110,116,105,97,108,85,110,103,114,111,117,110,100,105,110,103,0,85,112,100,97,116,101,67,111,110,115,116,114,97,105,110,116,115,69,120,116,114,117,100,101,70,114,111,109,84,111,112,0,85,112,100,97,116,101,67,111,110,115,116,114,97,105,110,116,115,69,120,116,114,117,100,101,70,114,111,109,66,97,115,101,0,84,105,109,101,65,100,97,112,116,0,83,116,97,98,105,108,105,122,97,116,105,111,110,80,97,114,97,109,101,116,101,114,0,83,101,116,84,101,109,112,111,114,97,114,121,69,108,101,109,101,110,116,84,121,112,101,0,80,111,116,101,110,116,105,97,108,85,110,103,114,111,117,110,100,105,110,103,0,78,111,100,97,108,86,97,108,117,101,0,78,111,100,97,108,70,117,110,99,116,105,111,110,115,80,50,0,78,111,100,97,108,70,117,110,99,116,105,111,110,115,80,49,68,101,114,105,118,97,116,105,118,101,115,0,78,111,100,97,108,70,117,110,99,116,105,111,110,115,80,49,0,78,111,100,97,108,70,117,110,99,116,105,111,110,115,77,73,78,73,68,101,114,105,118,97,116,105,118,101,115,0,78,101,119,71,97,117,115,115,76,105,110,101,0,77,105,110,69,100,103,101,76,101,110,103,116,104,0,74,97,99,111,98,105,97,110,68,101,116,101,114,109,105,110,97,110,116,76,105,110,101,0,73,115,90,101,114,111,76,101,118,101,108,115,101,116,0,73,115,78,111,100,101,79,110,83,104,101,108,102,70,114,111,109,70,108,97,103,115,0,71,101,116,85,112,112,101,114,69,108,101,109,101,110,116,0,71,101,116,83,111,108,117,116,105,111,110,70,114,111,109,73,110,112,117,116,115,79,110,101,68,111,102,0,71,101,116,78,111,100,101,0,71,101,116,73,99,101,102,114,111,110,116,67,111,111,114,100,105,110,97,116,101,115,0,71,101,116,71,114,111,117,110,100,101,100,80,97,114,116,0,71,101,116,66,97,115,97,108,69,108,101,109,101,110,116,0,70,83,67,111,110,116,97,99,116,77,105,103,114,97,116,105,111,110,0,67,111,109,112,117,116,101,83,116,114,101,115,115,84,101,110,115,111,114,0,67,111,109,112,117,116,101,68,101,118,105,97,116,111,114,105,99,83,116,114,101,115,115,84,101,110,115,111,114,0,67,97,108,118,105,110,103,82,97,116,101,76,101,118,101,114,109,97,110,110,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,69,108,101,109,101,110,116,115,47,84,101,116,114,97,82,101,102,46,99,112,112,0,71,101,116,74,97,99,111,98,105,97,110,68,101,116,101,114,109,105,110,97,110,116,70,97,99,101,0,53,80,101,110,116,97,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,69,108,101,109,101,110,116,115,47,80,101,110,116,97,46,99,112,112,0,65,100,100,66,97,115,97,108,73,110,112,117,116,0,78,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,33,0,65,118,101,114,97,103,101,79,110,116,111,80,97,114,116,105,116,105,111,110,0,67,111,109,112,117,116,101,66,97,115,97,108,83,116,114,101,115,115,0,67,111,110,116,114,111,108,73,110,112,117,116,83,101,116,71,114,97,100,105,101,110,116,0,32,105,115,32,110,111,116,32,97,32,67,111,110,116,114,111,108,73,110,112,117,116,0,67,111,110,116,114,111,108,84,111,86,101,99,116,111,114,115,0,82,101,115,112,111,110,115,101,32,116,121,112,101,32,0,69,108,101,109,101,110,116,82,101,115,112,111,110,115,101,0,69,114,114,111,114,46,32,80,114,111,98,108,101,109,32,119,105,116,104,32,112,111,114,116,105,111,110,32,111,102,32,103,114,111,117,110,100,101,100,32,101,108,101,109,101,110,116,58,32,118,97,108,117,101,32,115,104,111,117,108,100,32,98,101,32,98,101,116,119,101,101,110,32,48,32,97,110,100,32,49,0,71,101,116,71,114,111,117,110,100,101,100,80,111,114,116,105,111,110,0,78,111,32,105,110,112,117,116,32,111,102,32,116,121,112,101,32,0,32,102,111,117,110,100,32,105,110,32,116,114,105,97,0,78,111,100,101,32,112,114,111,118,105,100,101,100,32,110,111,116,32,102,111,117,110,100,32,97,109,111,110,103,32,101,108,101,109,101,110,116,32,110,111,100,101,115,0,71,101,116,78,111,100,101,73,110,100,101,120,0,71,101,116,86,101,99,116,111,114,70,114,111,109,67,111,110,116,114,111,108,73,110,112,117,116,115,0,105,110,112,117,116,32,0,73,110,112,117,116,67,111,110,116,114,111,108,85,112,100,97,116,101,0,99,111,117,108,100,32,110,111,116,32,102,105,110,100,32,105,110,112,117,116,32,119,105,116,104,32,101,110,117,109,32,0,73,110,112,117,116,68,101,112,116,104,65,118,101,114,97,103,101,65,116,66,97,115,101,0,111,98,106,101,99,116,32,0,73,110,112,117,116,69,120,116,114,117,100,101,0,99,111,117,108,100,32,110,111,116,32,102,105,110,100,32,111,108,100,32,105,110,112,117,116,32,119,105,116,104,32,101,110,117,109,58,32,0,73,110,112,117,116,83,99,97,108,101,0,73,110,112,117,116,85,112,100,97,116,101,70,114,111,109,83,111,108,117,116,105,111,110,79,110,101,68,111,102,0,73,110,112,117,116,85,112,100,97,116,101,70,114,111,109,83,111,108,117,116,105,111,110,79,110,101,68,111,102,67,111,108,108,97,112,115,101,100,0,73,110,112,117,116,85,112,100,97,116,101,70,114,111,109,86,101,99,116,111,114,0,116,121,112,101,32,0,41,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,70,108,111,119,32,101,113,117,97,116,105,111,110,32,97,112,112,114,111,120,105,109,97,116,105,111,110,0,82,101,115,101,116,70,83,66,97,115,97,108,66,111,117,110,100,97,114,121,67,111,110,100,105,116,105,111,110,0,83,101,116,67,111,110,116,114,111,108,73,110,112,117,116,115,70,114,111,109,86,101,99,116,111,114,0,83,112,97,119,110,66,97,115,97,108,69,108,101,109,101,110,116,0,85,112,100,97,116,101,0,67,97,115,101,32,110,111,116,32,99,111,118,101,114,101,100,0,90,101,114,111,76,101,118,101,108,115,101,116,67,111,111,114,100,105,110,97,116,101,115,0,71,73,65,32,100,101,102,108,101,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,33,0,71,105,97,68,101,102,108,101,99,116,105,111,110,0,56,80,101,110,116,97,82,101,102,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,69,108,101,109,101,110,116,115,47,46,46,47,46,47,69,108,101,109,101,110,116,115,47,80,101,110,116,97,46,104,0,71,101,116,65,114,101,97,51,68,0,79,99,101,97,110,65,114,101,97,0,79,99,101,97,110,65,118,101,114,97,103,101,0,83,101,97,108,101,118,101,108,114,105,115,101,78,111,110,69,117,115,116,97,116,105,99,0,83,101,97,108,101,118,101,108,114,105,115,101,69,117,115,116,97,116,105,99,0,84,101,110,115,111,114,73,110,116,101,114,112,111,108,97,116,105,111,110,0,78,101,119,71,97,117,115,115,0,77,105,115,102,105,116,65,114,101,97,0,73,115,70,97,99,101,79,110,66,111,117,110,100,97,114,121,0,71,101,116,76,101,118,101,108,115,101,116,80,111,115,105,116,105,118,101,80,97,114,116,0,71,101,116,76,101,118,101,108,67,111,111,114,100,105,110,97,116,101,115,0,67,111,109,112,117,116,101,83,105,103,109,97,78,78,0,67,104,97,114,97,99,116,101,114,105,115,116,105,99,76,101,110,103,116,104,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,69,108,101,109,101,110,116,115,47,80,101,110,116,97,82,101,102,46,99,112,112,0,66,97,115,97,108,78,111,100,101,73,110,100,105,99,101,115,0,78,117,109,98,101,114,111,102,78,111,100,101,115,0,71,101,116,78,111,100,97,108,70,117,110,99,116,105,111,110,115,0,110,101,103,97,116,105,118,101,32,106,97,99,111,98,105,97,110,32,100,101,116,101,114,109,105,110,97,110,116,33,0,71,101,116,74,97,99,111,98,105,97,110,68,101,116,101,114,109,105,110,97,110,116,0,71,101,116,78,111,100,97,108,70,117,110,99,116,105,111,110,115,68,101,114,105,118,97,116,105,118,101,115,82,101,102,101,114,101,110,99,101,0,71,101,116,81,117,97,100,74,97,99,111,98,105,97,110,68,101,116,101,114,109,105,110,97,110,116,0,71,101,116,83,101,103,109,101,110,116,74,97,99,111,98,105,97,110,68,101,116,101,114,109,105,110,97,110,116,0,71,101,116,84,114,105,97,74,97,99,111,98,105,97,110,68,101,116,101,114,109,105,110,97,110,116,0,80,114,101,115,115,117,114,101,73,110,116,101,114,112,111,108,97,116,105,111,110,0,83,117,114,102,97,99,101,78,111,100,101,73,110,100,105,99,101,115,0,86,101,108,111,99,105,116,121,73,110,116,101,114,112,111,108,97,116,105,111,110,0,99,111,117,108,100,32,110,111,116,32,102,105,110,100,32,105,110,112,117,116,32,119,105,116,104,32,101,110,117,109,32,116,121,112,101,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,73,110,112,117,116,115,46,99,112,112,0,99,111,117,108,100,32,110,111,116,32,102,105,110,100,32,105,110,112,117,116,32,119,105,116,104,32,101,110,117,109,58,32,0,68,117,112,108,105,99,97,116,101,73,110,112,117,116,0,56,83,101,103,73,110,112,117,116,0,32,32,32,83,101,103,73,110,112,117,116,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,83,101,103,73,110,112,117,116,46,99,112,112,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,46,46,47,46,47,73,110,112,117,116,115,47,83,101,103,73,110,112,117,116,46,104,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,46,46,47,46,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,73,110,112,117,116,46,104,0,57,84,114,105,97,73,110,112,117,116,0,32,32,32,84,114,105,97,73,110,112,117,116,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,84,114,105,97,73,110,112,117,116,46,99,112,112,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,46,46,47,46,47,73,110,112,117,116,115,47,84,114,105,97,73,110,112,117,116,46,104,0,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,32,40,73,110,112,117,116,32,105,115,32,0,57,66,111,111,108,73,110,112,117,116,0,32,32,32,66,111,111,108,73,110,112,117,116,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,66,111,111,108,73,110,112,117,116,46,99,112,112,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,46,46,47,46,47,73,110,112,117,116,115,47,66,111,111,108,73,110,112,117,116,46,104,0,67,111,110,115,116,114,97,105,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,102,111,114,32,98,111,111,108,101,97,110,115,0,77,105,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,102,111,114,32,98,111,111,108,101,97,110,115,0,77,97,120,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,102,111,114,32,98,111,111,108,101,97,110,115,0,73,110,102,105,110,105,116,121,78,111,114,109,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,102,111,114,32,98,111,111,108,101,97,110,115,0,56,73,110,116,73,110,112,117,116,0,32,32,32,73,110,116,73,110,112,117,116,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,73,110,116,73,110,112,117,116,46,99,112,112,0,73,110,116,73,110,112,117,116,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,73,115,115,109,68,111,117,98,108,101,32,105,110,32,112,97,114,97,108,108,101,108,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,46,46,47,46,47,73,110,112,117,116,115,47,73,110,116,73,110,112,117,116,46,104,0,77,105,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,102,111,114,32,105,110,116,101,103,101,114,115,0,77,97,120,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,102,111,114,32,105,110,116,101,103,101,114,115,0,73,110,102,105,110,105,116,121,78,111,114,109,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,102,111,114,32,105,110,116,101,103,101,114,115,0,49,49,68,111,117,98,108,101,73,110,112,117,116,0,32,32,32,68,111,117,98,108,101,73,110,112,117,116,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,68,111,117,98,108,101,73,110,112,117,116,46,99,112,112,0,68,111,117,98,108,101,32,105,110,112,117,116,32,111,102,32,101,110,117,109,32,0,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,98,111,111,108,101,97,110,0,110,111,116,32,115,117,112,112,111,114,116,101,32,121,101,116,33,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,46,46,47,46,47,73,110,112,117,116,115,47,68,111,117,98,108,101,73,110,112,117,116,46,104,0,49,54,68,111,117,98,108,101,65,114,114,97,121,73,110,112,117,116,0,32,32,32,68,111,117,98,108,101,65,114,114,97,121,73,110,112,117,116,32,0,32,83,105,122,101,58,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,68,111,117,98,108,101,65,114,114,97,121,73,110,112,117,116,46,99,112,112,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,46,46,47,46,47,73,110,112,117,116,115,47,68,111,117,98,108,101,65,114,114,97,121,73,110,112,117,116,46,104,0,83,112,97,119,110,84,114,105,97,73,110,112,117,116,0,49,50,68,97,116,97,115,101,116,73,110,112,117,116,0,68,97,116,97,115,101,116,73,110,112,117,116,58,10,0,32,32,32,110,117,109,105,100,115,58,0,32,32,32,105,110,112,117,116,115,58,32,10,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,46,46,47,46,46,47,115,104,97,114,101,100,47,46,47,77,101,109,79,112,115,47,77,101,109,79,112,115,46,104,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,68,97,116,97,115,101,116,73,110,112,117,116,46,99,112,112,0,67,111,117,108,100,32,110,111,116,32,102,105,110,100,32,105,110,112,117,116,32,111,102,32,105,100,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,46,46,47,46,47,73,110,112,117,116,115,47,68,97,116,97,115,101,116,73,110,112,117,116,46,104,0,71,101,116,82,101,115,117,108,116,65,114,114,97,121,83,105,122,101,0,71,101,116,82,101,115,117,108,116,78,117,109,98,101,114,79,102,78,111,100,101,115,0,71,101,116,82,101,115,117,108,116,73,110,116,101,114,112,111,108,97,116,105,111,110,0,77,105,110,0,71,101,116,73,110,112,117,116,65,118,101,114,97,103,101,0,71,101,116,73,110,112,117,116,68,101,114,105,118,97,116,105,118,101,86,97,108,117,101,0,54,77,97,116,105,99,101,0,77,97,116,101,114,105,97,108,32,116,121,112,101,32,110,111,116,32,114,101,99,111,103,110,105,122,101,100,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,77,97,116,101,114,105,97,108,115,47,77,97,116,105,99,101,46,99,112,112,0,77,97,116,105,99,101,58,10,0,78,101,103,97,116,105,118,101,32,118,105,115,99,111,115,105,116,121,0,73,110,112,117,116,32,109,105,115,115,105,110,103,0,56,77,97,116,101,114,105,97,108,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,77,97,116,101,114,105,97,108,115,47,46,47,77,97,116,105,99,101,46,104,0,54,77,97,116,112,97,114,0,109,100,46,109,97,116,101,114,105,97,108,115,46,114,104,111,95,119,97,116,101,114,0,109,100,46,109,97,116,101,114,105,97,108,115,46,114,104,111,95,102,114,101,115,104,119,97,116,101,114,0,109,100,46,109,97,116,101,114,105,97,108,115,46,109,117,95,119,97,116,101,114,0,109,100,46,109,97,116,101,114,105,97],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+68072);allocate([108,115,46,116,104,101,114,109,97,108,99,111,110,100,117,99,116,105,118,105,116,121,0,109,100,46,109,97,116,101,114,105,97,108,115,46,116,101,109,112,101,114,97,116,101,105,99,101,99,111,110,100,117,99,116,105,118,105,116,121,0,109,100,46,109,97,116,101,114,105,97,108,115,46,108,97,116,101,110,116,104,101,97,116,0,109,100,46,109,97,116,101,114,105,97,108,115,46,98,101,116,97,0,109,100,46,109,97,116,101,114,105,97,108,115,46,109,101,108,116,105,110,103,112,111,105,110,116,0,109,100,46,109,97,116,101,114,105,97,108,115,46,109,105,120,101,100,95,108,97,121,101,114,95,99,97,112,97,99,105,116,121,0,109,100,46,109,97,116,101,114,105,97,108,115,46,116,104,101,114,109,97,108,95,101,120,99,104,97,110,103,101,95,118,101,108,111,99,105,116,121,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,77,97,116,101,114,105,97,108,115,47,77,97,116,112,97,114,46,99,112,112,0,109,100,46,104,121,100,114,111,108,111,103,121,46,115,101,100,105,109,101,110,116,95,99,111,109,112,114,101,115,115,105,98,105,108,105,116,121,0,109,100,46,104,121,100,114,111,108,111,103,121,46,115,101,100,105,109,101,110,116,95,112,111,114,111,115,105,116,121,0,109,100,46,104,121,100,114,111,108,111,103,121,46,115,101,100,105,109,101,110,116,95,116,104,105,99,107,110,101,115,115,0,109,100,46,104,121,100,114,111,108,111,103,121,46,119,97,116,101,114,95,99,111,109,112,114,101,115,115,105,98,105,108,105,116,121,0,109,100,46,104,121,100,114,111,108,111,103,121,46,101,112,108,95,99,111,109,112,114,101,115,115,105,98,105,108,105,116,121,0,109,100,46,104,121,100,114,111,108,111,103,121,46,101,112,108,95,112,111,114,111,115,105,116,121,0,109,100,46,104,121,100,114,111,108,111,103,121,46,101,112,108,95,105,110,105,116,105,97,108,95,116,104,105,99,107,110,101,115,115,0,109,100,46,104,121,100,114,111,108,111,103,121,46,101,112,108,95,99,111,108,97,112,115,101,95,116,104,105,99,107,110,101,115,115,0,109,100,46,104,121,100,114,111,108,111,103,121,46,101,112,108,95,109,97,120,95,116,104,105,99,107,110,101,115,115,0,109,100,46,104,121,100,114,111,108,111,103,121,46,101,112,108,95,99,111,110,100,117,99,116,105,118,105,116,121,0,109,100,46,109,97,116,101,114,105,97,108,115,46,108,105,116,104,111,115,112,104,101,114,101,95,115,104,101,97,114,95,109,111,100,117,108,117,115,0,109,100,46,109,97,116,101,114,105,97,108,115,46,108,105,116,104,111,115,112,104,101,114,101,95,100,101,110,115,105,116,121,0,109,100,46,109,97,116,101,114,105,97,108,115,46,109,97,110,116,108,101,95,115,104,101,97,114,95,109,111,100,117,108,117,115,0,109,100,46,109,97,116,101,114,105,97,108,115,46,109,97,110,116,108,101,95,100,101,110,115,105,116,121,0,109,100,46,109,97,116,101,114,105,97,108,115,46,101,97,114,116,104,95,100,101,110,115,105,116,121,0,77,97,116,101,114,105,97,108,32,0,77,97,116,112,97,114,58,10,0,32,32,32,114,104,111,95,105,99,101,58,32,0,32,32,32,114,104,111,95,119,97,116,101,114,58,32,0,32,32,32,114,104,111,95,102,114,101,115,104,119,97,116,101,114,58,32,0,32,32,32,109,117,95,119,97,116,101,114,58,32,0,32,32,32,104,101,97,116,99,97,112,97,99,105,116,121,58,32,0,32,32,32,116,104,101,114,109,97,108,99,111,110,100,117,99,116,105,118,105,116,121,58,32,0,32,32,32,116,101,109,112,101,114,97,116,101,105,99,101,99,111,110,100,117,99,116,105,118,105,116,121,58,32,0,32,32,32,108,97,116,101,110,116,104,101,97,116,58,32,0,32,32,32,98,101,116,97,58,32,0,32,32,32,109,101,108,116,105,110,103,112,111,105,110,116,58,32,0,32,32,32,114,101,102,101,114,101,110,99,101,116,101,109,112,101,114,97,116,117,114,101,58,32,0,32,32,32,109,105,120,101,100,95,108,97,121,101,114,95,99,97,112,97,99,105,116,121,58,32,0,32,32,32,116,104,101,114,109,97,108,95,101,120,99,104,97,110,103,101,95,118,101,108,111,99,105,116,121,58,32,0,32,32,32,103,58,32,0,32,32,32,100,101,115,102,97,99,58,32,0,32,32,32,114,108,97,112,115,58,32,0,32,32,32,114,108,97,112,115,108,103,109,58,32,0,32,32,32,100,112,101,114,109,105,108,58,32,0,71,101,116,77,97,116,101,114,105,97,108,80,97,114,97,109,101,116,101,114,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,77,97,116,101,114,105,97,108,115,47,46,46,47,46,47,77,97,116,101,114,105,97,108,115,47,77,97,116,112,97,114,46,104,0,86,105,115,99,111,115,105,116,121,83,83,65,0,86,105,115,99,111,115,105,116,121,72,79,0,86,105,115,99,111,115,105,116,121,70,83,68,101,114,105,118,97,116,105,118,101,69,112,115,83,113,117,97,114,101,0,86,105,115,99,111,115,105,116,121,70,83,0,99,111,112,121,50,0,57,83,112,99,83,116,97,116,105,99,0,83,112,99,83,116,97,116,105,99,58,10,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,67,111,110,115,116,114,97,105,110,116,115,47,83,112,99,83,116,97,116,105,99,46,99,112,112,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,67,111,110,115,116,114,97,105,110,116,115,47,46,46,47,46,47,67,111,110,115,116,114,97,105,110,116,115,47,83,112,99,83,116,97,116,105,99,46,104,0,49,48,83,112,99,68,121,110,97,109,105,99,0,83,112,99,68,121,110,97,109,105,99,58,10,0,32,32,32,115,105,100,58,32,0,32,32,32,110,111,100,101,105,100,58,32,0,32,32,32,100,111,102,58,32,0,32,32,32,105,115,115,101,116,58,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,67,111,110,115,116,114,97,105,110,116,115,47,83,112,99,68,121,110,97,109,105,99,46,99,112,112,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,67,111,110,115,116,114,97,105,110,116,115,47,46,46,47,46,47,67,111,110,115,116,114,97,105,110,116,115,47,83,112,99,68,121,110,97,109,105,99,46,104,0,80,101,110,97,108,116,121,68,111,102,65,110,100,86,97,108,117,101,0,55,80,101,110,112,97,105,114,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,76,111,97,100,115,47,80,101,110,112,97,105,114,46,99,112,112,0,80,101,110,112,97,105,114,58,10,0,52,76,111,97,100,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,76,111,97,100,115,47,46,46,47,46,47,76,111,97,100,115,47,80,101,110,112,97,105,114,46,104,0,55,80,101,110,103,114,105,100,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,76,111,97,100,115,47,80,101,110,103,114,105,100,46,99,112,112,0,80,101,110,103,114,105,100,58,10,0,32,32,32,97,99,116,105,118,101,32,0,32,32,32,122,105,103,122,97,103,95,99,111,117,110,116,101,114,32,0,97,110,97,108,121,115,105,115,58,32,0,67,111,110,115,116,114,97,105,110,116,65,99,116,105,118,97,116,101,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,76,111,97,100,115,47,46,46,47,46,47,76,111,97,100,115,47,80,101,110,103,114,105,100,46,104,0,49,51,78,117,109,101,114,105,99,97,108,102,108,117,120,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,76,111,97,100,115,47,78,117,109,101,114,105,99,97,108,102,108,117,120,46,99,112,112,0,78,117,109,101,114,105,99,97,108,102,108,117,120,58,10,0,32,32,32,102,108,117,120,95,116,121,112,101,58,32,0,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,0,67,114,101,97,116,101,75,77,97,116,114,105,120,77,97,115,115,116,114,97,110,115,112,111,114,116,0,67,114,101,97,116,101,75,77,97,116,114,105,120,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,0,67,114,101,97,116,101,75,77,97,116,114,105,120,65,100,106,111,105,110,116,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,0,67,114,101,97,116,101,80,86,101,99,116,111,114,77,97,115,115,116,114,97,110,115,112,111,114,116,0,67,114,101,97,116,101,80,86,101,99,116,111,114,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,0,78,117,109,101,114,105,99,97,108,102,108,117,120,32,116,121,112,101,32,0,71,101,116,78,111,100,101,115,76,105,100,76,105,115,116,0,71,101,116,78,111,100,101,115,83,105,100,76,105,115,116,0,71,101,116,78,117,109,98,101,114,79,102,78,111,100,101,115,0,67,97,110,110,111,116,32,119,101,97,107,108,121,32,97,112,112,108,121,32,99,111,110,115,116,114,97,105,110,116,32,98,101,99,97,117,115,101,32,78,97,78,32,119,97,115,32,112,114,111,118,105,100,101,100,0,67,114,101,97,116,101,80,86,101,99,116,111,114,77,97,115,115,116,114,97,110,115,112,111,114,116,66,111,117,110,100,97,114,121,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,76,111,97,100,115,47,46,46,47,46,47,76,111,97,100,115,47,78,117,109,101,114,105,99,97,108,102,108,117,120,46,104,0,73,110,112,117,116,32,69,108,101,109,101,110,116,32,77,97,116,114,105,120,32,105,115,32,97,32,78,85,76,76,32,112,111,105,110,116,101,114,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,109,97,116,114,105,120,47,69,108,101,109,101,110,116,77,97,116,114,105,120,46,99,112,112,0,69,108,101,109,101,110,116,77,97,116,114,105,120,0,109,101,114,103,105,110,103,32,50,32,110,111,110,32,100,111,102,115,121,109,109,101,116,114,105,99,97,108,32,109,97,116,114,105,99,101,115,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,110,111,110,32,100,111,102,115,121,109,109,101,116,114,105,99,97,108,32,109,97,116,114,105,120,32,65,100,100,84,111,71,108,111,98,97,108,32,114,111,117,116,105,110,101,32,110,111,116,32,115,117,112,112,111,114,116,32,121,101,116,33,0,65,100,100,84,111,71,108,111,98,97,108,0,65,100,100,68,105,97,103,111,110,97,108,84,111,71,108,111,98,97,108,0,76,117,109,112,0,84,114,97,110,115,112,111,115,101,0,84,119,111,32,105,110,112,117,116,32,101,108,101,109,101,110,116,32,109,97,116,114,105,99,101,115,32,97,114,101,32,78,85,76,76,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,109,97,116,114,105,120,47,69,108,101,109,101,110,116,86,101,99,116,111,114,46,99,112,112,0,69,108,101,109,101,110,116,86,101,99,116,111,114,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,109,97,116,114,105,120,47,46,46,47,46,46,47,115,104,97,114,101,100,47,46,47,77,101,109,79,112,115,47,77,101,109,79,112,115,46,104,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,80,97,114,97,109,101,116,101,114,115,46,99,112,112,0,32,110,111,116,32,115,101,116,0,70,105,110,100,80,97,114,97,109,0,99,111,117,108,100,32,102,105,110,100,32,110,101,105,116,104,101,114,32,97,32,100,101,102,97,117,108,116,32,97,110,97,108,121,115,105,115,32,110,111,114,32,97,110,97,108,121,115,105,115,32,0,79,112,116,105,111,110,115,70,114,111,109,65,110,97,108,121,115,105,115,0,57,66,111,111,108,80,97,114,97,109,0,32,32,32,66,111,111,108,80,97,114,97,109,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,66,111,111,108,80,97,114,97,109,46,99,112,112,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,46,46,47,46,47,80,97,114,97,109,115,47,66,111,111,108,80,97,114,97,109,46,104,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,110,32,73,115,115,109,80,68,111,117,98,108,101,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,110,32,105,110,116,0,56,73,110,116,80,97,114,97,109,0,32,32,32,73,110,116,80,97,114,97,109,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,73,110,116,80,97,114,97,109,46,99,112,112,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,46,46,47,46,47,80,97,114,97,109,115,47,73,110,116,80,97,114,97,109,46,104,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,110,32,105,110,116,32,97,114,114,97,121,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,110,32,73,115,115,109,68,111,117,98,108,101,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,32,98,111,111,108,0,49,49,73,110,116,86,101,99,80,97,114,97,109,0,73,110,116,86,101,99,80,97,114,97,109,58,10,0,32,32,32,118,101,99,116,111,114,32,115,105,122,101,58,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,73,110,116,86,101,99,80,97,114,97,109,46,99,112,112,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,46,46,47,46,47,80,97,114,97,109,115,47,73,110,116,86,101,99,80,97,114,97,109,46,104,0,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,73,115,115,109,68,111,117,98,108,101,32,97,114,114,97,121,32,40,109,97,121,98,101,32,105,110,32,115,101,114,105,97,108,63,41,0,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,109,97,116,114,105,120,0,49,49,73,110,116,77,97,116,80,97,114,97,109,0,73,110,116,77,97,116,80,97,114,97,109,58,10,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,73,110,116,77,97,116,80,97,114,97,109,46,99,112,112,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,46,46,47,46,47,80,97,114,97,109,115,47,73,110,116,77,97,116,80,97,114,97,109,46,104,0,49,49,68,111,117,98,108,101,80,97,114,97,109,0,32,32,32,68,111,117,98,108,101,80,97,114,97,109,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,68,111,117,98,108,101,80,97,114,97,109,46,99,112,112,0,68,111,117,98,108,101,32,112,97,114,97,109,32,111,102,32,101,110,117,109,32,0,41,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,110,32,105,110,116,101,103,101,114,0,41,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,110,32,98,111,111,108,0,41,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,110,32,97,114,114,97,121,32,111,102,32,105,110,116,101,103,101,114,115,0,41,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,110,32,97,114,114,97,121,32,111,102,32,73,115,115,109,68,111,117,98,108,101,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,46,46,47,46,47,80,97,114,97,109,115,47,68,111,117,98,108,101,80,97,114,97,109,46,104,0,57,70,105,108,101,80,97,114,97,109,0,32,32,32,70,105,108,101,80,97,114,97,109,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,70,105,108,101,80,97,114,97,109,46,99,112,112,0,70,105,108,101,32,112,97,114,97,109,32,111,102,32,101,110,117,109,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,46,46,47,46,47,80,97,114,97,109,115,47,70,105,108,101,80,97,114,97,109,46,104,0,49,54,83,116,114,105,110,103,65,114,114,97,121,80,97,114,97,109,0,32,32,32,83,116,114,105,110,103,65,114,114,97,121,80,97,114,97,109,32,0,32,123,0,125,10,0,32,39,0,39,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,83,116,114,105,110,103,65,114,114,97,121,80,97,114,97,109,46,99,112,112,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,46,46,47,46,47,80,97,114,97,109,115,47,83,116,114,105,110,103,65,114,114,97,121,80,97,114,97,109,46,104,0,86,101,99,32,112,97,114,97,109,32,111,102,32,101,110,117,109,32,0,49,52,68,111,117,98,108,101,77,97,116,80,97,114,97,109,0,68,111,117,98,108,101,77,97,116,80,97,114,97,109,58,10,0,32,32,32,109,97,116,114,105,120,32,115,105,122,101,58,32,0,120,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,68,111,117,98,108,101,77,97,116,80,97,114,97,109,46,99,112,112,0,68,111,117,98,108,101,77,97,116,32,111,102,32,101,110,117,109,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,46,46,47,46,47,80,97,114,97,109,115,47,68,111,117,98,108,101,77,97,116,80,97,114,97,109,46,104,0,49,57,68,111,117,98,108,101,77,97,116,65,114,114,97,121,80,97,114,97,109,0,68,111,117,98,108,101,77,97,116,65,114,114,97,121,80,97,114,97,109,58,10,0,32,32,32,97,114,114,97,121,32,115,105,122,101,58,32,0,32,32,32,97,114,114,97,121,32,112,111,105,110,116,101,114,58,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,68,111,117,98,108,101,77,97,116,65,114,114,97,121,80,97,114,97,109,46,99,112,112,0,41,32,99,97,110,110,111,116,32,104,111,108,100,32,97,32,70,73,76,69,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,46,46,47,46,47,80,97,114,97,109,115,47,68,111,117,98,108,101,77,97,116,65,114,114,97,121,80,97,114,97,109,46,104,0,99,97,110,110,111,116,32,104,111,108,100,32,97,32,77,97,116,0,99,97,110,110,111,116,32,104,111,108,100,32,97,32,86,101,99,0,99,97,110,110,111,116,32,104,111,108,100,32,97,32,105,110,116,32,109,97,116,32,97,114,114,97,121,0,99,97,110,110,111,116,32,104,111,108,100,32,97,32,105,110,116,32,118,101,99,32,97,114,114,97,121,0,99,97,110,110,111,116,32,104,111,108,100,32,97,32,73,115,115,109,68,111,117,98,108,101,32,109,97,116,32,97,114,114,97,121,0,99,97,110,110,111,116,32,104,111,108,100,32,97,32,73,115,115,109,68,111,117,98,108,101,32,118,101,99,32,97,114,114,97,121,0,99,97,110,110,111,116,32,104,111,108,100,32,97,32,115,116,114,105,110,103,32,97,114,114,97,121,0,99,97,110,110,111,116,32,104,111,108,100,32,97,32,115,116,114,105,110,103,0,99,97,110,110,111,116,32,104,111,108,100,32,97,32,115,99,97,108,97,114,0,99,97,110,110,111,116,32,104,111,108,100,32,97,110,32,105,110,116,101,103,101,114,0,99,97,110,110,111,116,32,104,111,108,100,32,97,32,98,111,111,108,101,97,110,0,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,70,73,76,69,0,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,77,97,116,0,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,86,101,99,0,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,73,115,115,109,68,111,117,98,108,101,32,97,114,114,97,121,0,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,115,116,114,105,110,103,32,97,114,114,97,121,0,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,115,116,114,105,110,103,0,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,73,115,115,109,68,111,117,98,108,101,0,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,110,32,97,114,114,97,121,32,111,102,32,105,110,116,101,103,101,114,115,0,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,110,32,105,110,116,101,103,101,114,0,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,98,111,111,108,0,49,52,68,111,117,98,108,101,86,101,99,80,97,114,97,109,0,32,32,32,68,111,117,98,108,101,86,101,99,80,97,114,97,109,32,0,32,115,105,122,101,58,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,68,111,117,98,108,101,86,101,99,80,97,114,97,109,46,99,112,112,0,68,111,117,98,108,101,86,101,99,32,112,97,114,97,109,32,111,102,32,101,110,117,109,32,0,41,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,110,32,97,114,114,97,121,32,111,102,32,105,110,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,46,46,47,46,47,80,97,114,97,109,115,47,68,111,117,98,108,101,86,101,99,80,97,114,97,109,46,104,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,32,73,115,115,109,68,111,117,98,108,101,32,109,97,116,32,97,114,114,97,121,0,49,49,83,116,114,105,110,103,80,97,114,97,109,0,32,32,32,83,116,114,105,110,103,80,97,114,97,109,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,83,116,114,105,110,103,80,97,114,97,109,46,99,112,112,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,46,46,47,46,47,80,97,114,97,109,115,47,83,116,114,105,110,103,80,97,114,97,109,46,104,0,66,111,111,108,32,112,97,114,97,109,32,111,102,32,101,110,117,109,32,0,41,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,70,73,76,69,0,49,52,84,114,97,110,115,105,101,110,116,80,97,114,97,109,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,46,46,47,46,46,47,115,104,97,114,101,100,47,46,47,77,101,109,79,112,115,47,77,101,109,79,112,115,46,104,0,84,114,97,110,115,105,101,110,116,80,97,114,97,109,58,10,0,32,32,32,101,110,117,109,58,32,0,32,32,32,115,105,122,101,58,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,84,114,97,110,115,105,101,110,116,80,97,114,97,109,46,99,112,112,0,80,97,114,97,109,101,116,101,114,32,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,110,32,97,114,114,97,121,32,111,102,32,109,97,116,114,105,99,101,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,46,46,47,46,47,80,97,114,97,109,115,47,84,114,97,110,115,105,101,110,116,80,97,114,97,109,46,104,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,32,70,73,76,69,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,32,105,110,116,32,109,97,116,32,97,114,114,97,121,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,32,105,110,116,32,118,101,99,32,97,114,114,97,121,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,32,73,115,115,109,68,111,117,98,108,101,32,118,101,99,32,97,114,114,97,121,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,32,115,99,97,108,97,114,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,110,32,105,110,116,101,103,101,114,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,32,98,111,111,108,101,97,110,0,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,68,97,116,97,83,101,116,0,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,70,73,76,69,0,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,109,97,116,114,105,120,32,97,114,114,97,121,0,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,97,114,114,97,121,32,111,102,32,105,110,116,101,103,101,114,115,0,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,110,32,97,114,114,97,121,32,111,102,32,105,110,116,101,103,101,114,115,0,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,110,32,105,110,116,101,103,101,114,0,49,50,68,97,116,97,83,101,116,80,97,114,97,109,0,32,32,32,68,97,116,97,83,101,116,80,97,114,97,109,32,0,32,45,45,45,45,45,32,98,101,103,105,110,10,0,32,45,45,45,45,45,32,101,110,100,10,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,68,97,116,97,83,101,116,80,97,114,97,109,46,99,112,112,0,68,97,116,97,83,101,116,32,112,97,114,97,109,32,111,102,32,101,110,117,109,32,0,41,32,99,97,110,110,111,116,32,104,111,108,100,32,97,110,32,97,114,114,97,121,32,111,102,32,109,97,116,114,105,99,101,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,97,114,97,109,115,47,46,46,47,46,47,80,97,114,97,109,115,47,68,97,116,97,83,101,116,80,97,114,97,109,46,104,0,83,101,116,86,97,108,117,101,0,80,97,114,97,109,32,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,32,102,105,108,101,32,112,111,105,110,116,101,114,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,32,77,97,116,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,32,86,101,99,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,32,105,110,116,32,97,114,114,97,121,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,32,73,115,115,109,68,111,117,98,108,101,32,97,114,114,97,121,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,32,115,116,114,105,110,103,32,97,114,114,97,121,0,32,99,97,110,110,111,116,32,104,111,108,100,32,97,32,115,116,114,105,110,103,0,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,102,105,108,101,32,112,111,105,110,116,101,114,0,71,101,116,80,97,114,97,109,101,116,101,114,86,97,108,117,101,0,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,77,97,116,0,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,86,101,99,0,41,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,109,97,116,114,105,120,32,97,114,114,97,121,0,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,73,115,115,109,68,111,117,98,108,101,32,97,114,114,97,121,0,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,115,116,114,105,110,103,32,97,114,114,97,121,0,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,115,116,114,105,110,103,0,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,73,115,115,109,68,111,117,98,108,101,32,102,111,114,32,97,32,103,105,118,101,110,32,116,105,109,101,0,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,73,115,115,109,68,111,117,98,108,101,0,32,99,97,110,110,111,116,32,114,101,116,117,114,110,32,97,32,98,111,111,108,0,56,80,114,111,102,105,108,101,114,0,80,114,111,102,105,108,101,114,58,10,0,32,32,32,116,105,109,101,32,116,97,103,115,58,32,10,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,80,114,111,102,105,108,101,114,46,99,112,112,0,84,97,103,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,84,97,103,0,84,97,103,32,110,111,116,32,115,101,116,0,68,101,108,116,97,84,105,109,101,0,68,101,108,116,97,70,108,111,112,115,0,77,101,109,111,114,121,0,77,97,116,114,105,120,32,65,32,97,110,100,32,66,32,105,110,110,101,114,32,118,101,99,116,111,114,115,32,110,111,116,32,101,113,117,97,108,32,115,105,122,101,46,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,115,104,97,114,101,100,47,77,97,116,114,105,120,47,77,97,116,114,105,120,85,116,105,108,115,46,99,112,112,0,84,114,105,112,108,101,77,117,108,116,105,112,108,121,0,77,97,116,114,105,120,32,66,32,97,110,100,32,67,32,105,110,110,101,114,32,118,101,99,116,111,114,115,32,110,111,116,32,101,113,117,97,108,32,115,105,122,101,46,0,77,97,116,114,105,120,32,65,32,97,110,100,32,66,32,105,110,110,101,114,32,118,101,99,116,111,114,115,32,110,111,116,32,101,113,117,97,108,32,115,105,122,101,0,77,97,116,114,105,120,77,117,108,116,105,112,108,121,0,78,111,32,114,105,103,104,116,45,104,97,110,100,32,115,105,100,101,32,102,111,114,32,110,118,101,99,61,0,77,97,116,114,105,120,73,110,118,101,114,115,101,0,80,105,118,111,116,32,0,32,108,101,115,115,32,116,104,97,110,32,109,97,99,104,105,110,101,32,101,112,115,105,108,111,110,0,68,101,116,101,114,109,105,110,97,110,116,32,115,109,97,108,108,101,114,32,116,104,97,110,32,109,97,99,104,105,110,101,32,101,112,115,105,108,111,110,0,77,97,116,114,105,120,50,120,50,73,110,118,101,114,116,0,77,97,116,114,105,120,51,120,51,73,110,118,101,114,116,0,77,97,116,114,105,120,52,120,52,73,110,118,101,114,116,0,84,104,105,115,32,102,117,110,99,116,105,111,110,32,115,104,111,117,108,100,32,111,110,108,121,32,98,101,32,99,97,108,108,101,100,32,98,121,32,99,112,117,32,48,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,115,104,97,114,101,100,47,105,111,47,68,105,115,107,47,112,102,111,112,101,110,46,99,112,112,0,112,102,111,112,101,110,48,0,99,111,117,108,100,32,110,111,116,32,111,112,101,110,32,102,105,108,101,32,0,32,102,111,114,32,98,105,110,97,114,121,32,114,101,97,100,105,110,103,32,111,114,32,119,114,105,116,105,110,103,0,112,102,111,112,101,110,0,99,111,117,108,100,32,110,111,116,32,99,108,111,115,101,32,102,105,108,101,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,115,104,97,114,101,100,47,105,111,47,68,105,115,107,47,112,102,99,108,111,115,101,46,99,112,112,0,112,102,99,108,111,115,101,0,67,97,110,110,111,116,32,114,101,116,117,114,110,32,99,111,109,109,32,105,110,32,115,101,114,105,97,108,32,109,111,100,101,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,115,104,97,114,101,100,47,105,111,47,67,111,109,109,47,73,115,115,109,67,111,109,109,46,99,112,112,0,71,101,116,67,111,109,109,0,117,110,107,110,111,119,110,0,80,97,114,97,109,101,116,101,114,115,83,84,65,82,84,0,70,101,109,77,111,100,101,108,0,70,101,109,77,111,100,101,108,67,111,109,109,0,87,111,114,108,100,67,111,109,109,0,73,99,101,99,97,112,84,111,69,97,114,116,104,67,111,109,109,0,78,117,109,77,111,100,101,108,115,0,77,111,100,101,108,73,100,0,69,97,114,116,104,73,100,0,65,117,116,111,100,105,102,102,73,115,97,117,116,111,100,105,102,102,0,65,117,116,111,100,105,102,102,78,117,109,68,101,112,101,110,100,101,110,116,115,0,65,117,116,111,100,105,102,102,78,117,109,68,101,112,101,110,100,101,110,116,79,98,106,101,99,116,115,0,65,117,116,111,100,105,102,102,68,101,112,101,110,100,101,110,116,79,98,106,101,99,116,78,97,109,101,115,0,65,117,116,111,100,105,102,102,68,101,112,101,110,100,101,110,116,79,98,106,101,99,116,84,121,112,101,115,0,65,117,116,111,100,105,102,102,68,101,112,101,110,100,101,110,116,79,98,106,101,99,116,73,110,100,105,99,101,115,0,65,117,116,111,100,105,102,102,68,101,112,101,110,100,101,110,116,79,98,106,101,99,116,115,0,65,117,116,111,100,105,102,102,78,117,109,73,110,100,101,112,101,110,100,101,110,116,115,0,65,117,116,111,100,105,102,102,78,117,109,73,110,100,101,112,101,110,100,101,110,116,79,98,106,101,99,116,115,0,65,117,116,111,100,105,102,102,73,110,100,101,112,101,110,100,101,110,116,79,98,106,101,99,116,78,97,109,101,115,0,65,117,116,111,100,105,102,102,73,110,100,101,112,101,110,100,101,110,116,79,98,106,101,99,116,84,121,112,101,115,0,65,117,116,111,100,105,102,102,73,110,100,101,112,101,110,100,101,110,116,79,98,106,101,99,116,115,0,65,117,116,111,100,105,102,102,74,97,99,111,98,105,97,110,0,65,117,116,111,100,105,102,102,88,112,0,65,117,116,111,100,105,102,102,68,114,105,118,101,114,0,65,117,116,111,100,105,102,102,70,111,115,70,111,114,119,97,114,100,73,110,100,101,120,0,65,117,116,111,100,105,102,102,70,111,118,70,111,114,119,97,114,100,73,110,100,105,99,101,115,0,65,117,116,111,100,105,102,102,70,111,115,82,101,118,101,114,115,101,73,110,100,101,120,0,65,117,116,111,100,105,102,102,77,97,115,115,70,108,117,120,83,101,103,109,101,110,116,115,80,114,101,115,101,110,116,0,65,117,116,111,100,105,102,102,75,101,101,112,0,65,117,116,111,100,105,102,102,79,98,117,102,115,105,122,101,0,65,117,116,111,100,105,102,102,76,98,117,102,115,105,122,101,0,65,117,116,111,100,105,102,102,67,98,117,102,115,105,122,101,0,65,117,116,111,100,105,102,102,84,98,117,102,115,105,122,101,0,65,117,116,111,100,105,102,102,71,99,84,114,105,103,103,101,114,82,97,116,105,111,0,65,117,116,111,100,105,102,102,71,99,84,114,105,103,103,101,114,77,97,120,83,105,122,101,0,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,83,112,99,116,104,105,99,107,110,101,115,115,0,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,83,116,97,98,105,108,105,122,97,116,105,111,110,0,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,84,104,105,99,107,101,110,105,110,103,82,97,116,101,0,66,97,115,97,108,102,111,114,99,105,110,103,115,0,66,97,115,97,108,102,111,114,99,105,110,103,115,71,101,111,116,104,101,114,109,97,108,102,108,117,120,0,66,97,115,97,108,102,111,114,99,105,110,103,115,71,114,111,117,110,100,101,100,105,99,101,77,101,108,116,105,110,103,82,97,116,101,0,66,97,115,97,108,102,111,114,99,105,110,103,115,70,108,111,97,116,105,110,103,105,99,101,77,101,108,116,105,110,103,82,97,116,101,0,66,97,115,97,108,102,111,114,99,105,110,103,115,68,101,101,112,119,97,116,101,114,77,101,108,116,105,110,103,82,97,116,101,0,66,97,115,97,108,102,111,114,99,105,110,103,115,68,101,101,112,119,97,116,101,114,69,108,101,118,97,116,105,111,110,0,66,97,115,97,108,102],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+78312);allocate([111,114,99,105,110,103,115,85,112,112,101,114,119,97,116,101,114,69,108,101,118,97,116,105,111,110,0,66,97,115,97,108,102,111,114,99,105,110,103,115,77,101,108,116,114,97,116,101,70,97,99,116,111,114,0,66,97,115,97,108,102,111,114,99,105,110,103,115,84,104,114,101,115,104,111,108,100,84,104,105,99,107,110,101,115,115,0,66,97,115,97,108,102,111,114,99,105,110,103,115,85,112,112,101,114,100,101,112,116,104,77,101,108,116,0,66,97,115,97,108,102,111,114,99,105,110,103,115,77,97,110,116,108,101,99,111,110,100,117,99,116,105,118,105,116,121,0,66,97,115,97,108,102,111,114,99,105,110,103,115,78,117,115,115,101,108,116,0,66,97,115,97,108,102,111,114,99,105,110,103,115,68,116,98,103,0,66,97,115,97,108,102,111,114,99,105,110,103,115,80,108,117,109,101,114,97,100,105,117,115,0,66,97,115,97,108,102,111,114,99,105,110,103,115,84,111,112,112,108,117,109,101,100,101,112,116,104,0,66,97,115,97,108,102,111,114,99,105,110,103,115,66,111,116,116,111,109,112,108,117,109,101,100,101,112,116,104,0,66,97,115,97,108,102,111,114,99,105,110,103,115,80,108,117,109,101,120,0,66,97,115,97,108,102,111,114,99,105,110,103,115,80,108,117,109,101,121,0,66,97,115,97,108,102,111,114,99,105,110,103,115,67,114,117,115,116,116,104,105,99,107,110,101,115,115,0,66,97,115,97,108,102,111,114,99,105,110,103,115,85,112,112,101,114,99,114,117,115,116,116,104,105,99,107,110,101,115,115,0,66,97,115,97,108,102,111,114,99,105,110,103,115,85,112,112,101,114,99,114,117,115,116,104,101,97,116,0,66,97,115,97,108,102,111,114,99,105,110,103,115,76,111,119,101,114,99,114,117,115,116,104,101,97,116,0,70,108,111,97,116,105,110,103,77,101,108,116,82,97,116,101,0,76,105,110,101,97,114,70,108,111,97,116,105,110,103,77,101,108,116,82,97,116,101,0,77,105,115,109,105,112,70,108,111,97,116,105,110,103,77,101,108,116,82,97,116,101,0,77,97,110,116,108,101,80,108,117,109,101,71,101,111,116,104,101,114,109,97,108,70,108,117,120,0,66,101,100,0,66,97,115,101,0,67,111,110,115,116,97,110,116,115,71,0,67,111,110,115,116,97,110,116,115,82,101,102,101,114,101,110,99,101,116,101,109,112,101,114,97,116,117,114,101,0,67,111,110,115,116,97,110,116,115,89,116,115,0,68,101,112,101,110,100,101,110,116,79,98,106,101,99,116,0,83,116,114,101,115,115,98,97,108,97,110,99,101,65,98,115,116,111,108,0,83,116,114,101,115,115,98,97,108,97,110,99,101,67,111,110,118,101,114,103,101,110,99,101,78,117,109,83,116,101,112,115,0,83,116,114,101,115,115,98,97,108,97,110,99,101,73,115,110,101,119,116,111,110,0,83,116,114,101,115,115,98,97,108,97,110,99,101,77,97,120,105,116,101,114,0,83,116,114,101,115,115,98,97,108,97,110,99,101,80,101,110,97,108,116,121,70,97,99,116,111,114,0,83,116,114,101,115,115,98,97,108,97,110,99,101,82,101,102,101,114,101,110,116,105,97,108,0,83,116,114,101,115,115,98,97,108,97,110,99,101,82,101,108,116,111,108,0,83,116,114,101,115,115,98,97,108,97,110,99,101,78,117,109,82,101,113,117,101,115,116,101,100,79,117,116,112,117,116,115,0,83,116,114,101,115,115,98,97,108,97,110,99,101,82,101,113,117,101,115,116,101,100,79,117,116,112,117,116,115,0,83,116,114,101,115,115,98,97,108,97,110,99,101,82,101,115,116,111,108,0,83,116,114,101,115,115,98,97,108,97,110,99,101,82,105,102,116,80,101,110,97,108,116,121,76,111,99,107,0,83,116,114,101,115,115,98,97,108,97,110,99,101,82,105,102,116,80,101,110,97,108,116,121,84,104,114,101,115,104,111,108,100,0,83,116,114,101,115,115,98,97,108,97,110,99,101,83,104,101,108,102,68,97,109,112,101,110,105,110,103,0,83,116,114,101,115,115,98,97,108,97,110,99,101,83,112,99,118,120,0,83,116,114,101,115,115,98,97,108,97,110,99,101,83,112,99,118,121,0,83,116,114,101,115,115,98,97,108,97,110,99,101,83,112,99,118,122,0,83,116,114,101,115,115,98,97,108,97,110,99,101,70,83,114,101,99,111,110,100,105,116,105,111,110,105,110,103,0,83,116,114,101,115,115,98,97,108,97,110,99,101,86,101,114,116,101,120,80,97,105,114,105,110,103,0,83,116,114,101,115,115,98,97,108,97,110,99,101,86,105,115,99,111,115,105,116,121,79,118,101,114,115,104,111,111,116,0,76,111,97,100,105,110,103,102,111,114,99,101,88,0,76,111,97,100,105,110,103,102,111,114,99,101,89,0,76,111,97,100,105,110,103,102,111,114,99,101,90,0,70,108,111,119,101,113,117,97,116,105,111,110,66,111,114,100,101,114,83,83,65,0,70,108,111,119,101,113,117,97,116,105,111,110,66,111,114,100,101,114,72,79,0,70,108,111,119,101,113,117,97,116,105,111,110,66,111,114,100,101,114,70,83,0,70,108,111,119,101,113,117,97,116,105,111,110,69,108,101,109,101,110,116,69,113,117,97,116,105,111,110,0,70,108,111,119,101,113,117,97,116,105,111,110,73,115,83,73,65,0,70,108,111,119,101,113,117,97,116,105,111,110,73,115,83,83,65,0,70,108,111,119,101,113,117,97,116,105,111,110,73,115,76,49,76,50,0,70,108,111,119,101,113,117,97,116,105,111,110,73,115,72,79,0,70,108,111,119,101,113,117,97,116,105,111,110,73,115,70,83,0,70,108,111,119,101,113,117,97,116,105,111,110,70,101,83,83,65,0,70,108,111,119,101,113,117,97,116,105,111,110,70,101,72,79,0,70,108,111,119,101,113,117,97,116,105,111,110,70,101,70,83,0,70,108,111,119,101,113,117,97,116,105,111,110,86,101,114,116,101,120,69,113,117,97,116,105,111,110,0,70,114,105,99,116,105,111,110,65,115,0,70,114,105,99,116,105,111,110,67,111,101,102,102,105,99,105,101,110,116,0,70,114,105,99,116,105,111,110,67,111,101,102,102,105,99,105,101,110,116,99,111,117,108,111,109,98,0,70,114,105,99,116,105,111,110,80,0,70,114,105,99,116,105,111,110,81,0,70,114,105,99,116,105,111,110,77,0,70,114,105,99,116,105,111,110,67,0,70,114,105,99,116,105,111,110,76,97,119,0,70,114,105,99,116,105,111,110,71,97,109,109,97,0,70,114,105,99,116,105,111,110,70,0,70,114,105,99,116,105,111,110,87,97,116,101,114,76,97,121,101,114,0,70,114,105,99,116,105,111,110,69,102,102,101,99,116,105,118,101,80,114,101,115,115,117,114,101,0,70,114,105,99,116,105,111,110,67,111,117,112,108,105,110,103,0,71,101,111,109,101,116,114,121,72,121,100,114,111,115,116,97,116,105,99,82,97,116,105,111,0,72,121,100,114,111,108,111,103,121,77,111,100,101,108,0,72,121,100,114,111,108,111,103,121,115,104,114,101,118,101,0,72,121,100,114,111,108,111,103,121,115,104,114,101,118,101,83,112,99,119,97,116,101,114,99,111,108,117,109,110,0,72,121,100,114,111,108,111,103,121,115,104,114,101,118,101,83,116,97,98,105,108,105,122,97,116,105,111,110,0,72,121,100,114,111,108,111,103,121,100,99,0,83,101,100,105,109,101,110,116,72,101,97,100,0,83,101,100,105,109,101,110,116,72,101,97,100,79,108,100,0,83,101,100,105,109,101,110,116,72,101,97,100,82,101,115,105,100,117,97,108,0,69,102,102,101,99,116,105,118,101,80,114,101,115,115,117,114,101,0,69,112,108,72,101,97,100,0,69,112,108,72,101,97,100,79,108,100,0,69,112,108,72,101,97,100,83,108,111,112,101,88,0,69,112,108,72,101,97,100,83,108,111,112,101,89,0,69,112,108,90,105,103,90,97,103,67,111,117,110,116,101,114,0,72,121,100,114,111,108,111,103,121,100,99,77,97,120,73,116,101,114,0,72,121,100,114,111,108,111,103,121,100,99,82,101,108,84,111,108,0,72,121,100,114,111,108,111,103,121,100,99,83,112,99,115,101,100,105,109,101,110,116,72,101,97,100,0,72,121,100,114,111,108,111,103,121,100,99,83,101,100,105,109,101,110,116,67,111,109,112,114,101,115,115,105,98,105,108,105,116,121,0,72,121,100,114,111,108,111,103,121,100,99,83,101,100,105,109,101,110,116,80,111,114,111,115,105,116,121,0,72,121,100,114,111,108,111,103,121,100,99,83,101,100,105,109,101,110,116,84,104,105,99,107,110,101,115,115,0,72,121,100,114,111,108,111,103,121,100,99,83,101,100,105,109,101,110,116,84,114,97,110,115,109,105,116,105,118,105,116,121,0,72,121,100,114,111,108,111,103,121,100,99,87,97,116,101,114,67,111,109,112,114,101,115,115,105,98,105,108,105,116,121,0,72,121,100,114,111,108,111,103,121,100,99,83,112,99,101,112,108,72,101,97,100,0,72,121,100,114,111,108,111,103,121,100,99,77,97,115,107,69,112,108,97,99,116,105,118,101,78,111,100,101,0,72,121,100,114,111,108,111,103,121,100,99,77,97,115,107,69,112,108,97,99,116,105,118,101,69,108,116,0,72,121,100,114,111,108,111,103,121,100,99,69,112,108,67,111,109,112,114,101,115,115,105,98,105,108,105,116,121,0,72,121,100,114,111,108,111,103,121,100,99,69,112,108,80,111,114,111,115,105,116,121,0,72,121,100,114,111,108,111,103,121,100,99,69,112,108,73,110,105,116,105,97,108,84,104,105,99,107,110,101,115,115,0,72,121,100,114,111,108,111,103,121,100,99,69,112,108,67,111,108,97,112,115,101,84,104,105,99,107,110,101,115,115,0,72,121,100,114,111,108,111,103,121,100,99,69,112,108,77,97,120,84,104,105,99,107,110,101,115,115,0,72,121,100,114,111,108,111,103,121,100,99,69,112,108,84,104,105,99,107,110,101,115,115,0,72,121,100,114,111,108,111,103,121,100,99,69,112,108,84,104,105,99,107,110,101,115,115,79,108,100,0,72,121,100,114,111,108,111,103,121,100,99,69,112,108,84,104,105,99,107,67,111,109,112,0,72,121,100,114,111,108,111,103,121,100,99,69,112,108,67,111,110,100,117,99,116,105,118,105,116,121,0,72,121,100,114,111,108,111,103,121,100,99,73,115,101,102,102,105,99,105,101,110,116,108,97,121,101,114,0,72,121,100,114,111,108,111,103,121,100,99,83,101,100,105,109,101,110,116,108,105,109,105,116,70,108,97,103,0,72,121,100,114,111,108,111,103,121,100,99,83,101,100,105,109,101,110,116,108,105,109,105,116,0,72,121,100,114,111,108,111,103,121,100,99,84,114,97,110,115,102,101,114,70,108,97,103,0,72,121,100,114,111,108,111,103,121,100,99,76,101,97,107,97,103,101,70,97,99,116,111,114,0,72,121,100,114,111,108,111,103,121,100,99,80,101,110,97,108,116,121,70,97,99,116,111,114,0,72,121,100,114,111,108,111,103,121,100,99,80,101,110,97,108,116,121,76,111,99,107,0,72,121,100,114,111,108,111,103,121,100,99,69,112,108,102,108,105,112,76,111,99,107,0,72,121,100,114,111,108,111,103,121,100,99,66,97,115,97,108,77,111,117,108,105,110,73,110,112,117,116,0,72,121,100,114,111,108,111,103,121,76,97,121,101,114,0,72,121,100,114,111,108,111,103,121,83,101,100,105,109,101,110,116,0,72,121,100,114,111,108,111,103,121,69,102,102,105,99,105,101,110,116,0,72,121,100,114,111,108,111,103,121,83,101,100,105,109,101,110,116,75,109,97,120,0,72,121,100,114,111,108,111,103,121,115,111,109,109,101,114,115,0,72,121,100,114,111,108,111,103,121,72,101,97,100,0,72,121,100,114,111,108,111,103,121,71,97,112,72,101,105,103,104,116,0,72,121,100,114,111,108,111,103,121,66,117,109,112,83,112,97,99,105,110,103,0,72,121,100,114,111,108,111,103,121,66,117,109,112,72,101,105,103,104,116,0,72,121,100,114,111,108,111,103,121,69,110,103,108,97,99,105,97,108,73,110,112,117,116,0,72,121,100,114,111,108,111,103,121,77,111,117,108,105,110,73,110,112,117,116,0,72,121,100,114,111,108,111,103,121,82,101,121,110,111,108,100,115,0,72,121,100,114,111,108,111,103,121,78,101,117,109,97,110,110,102,108,117,120,0,72,121,100,114,111,108,111,103,121,83,112,99,104,101,97,100,0,72,121,100,114,111,108,111,103,121,67,111,110,100,117,99,116,105,118,105,116,121,0,73,110,118,101,114,115,105,111,110,67,111,110,116,114,111,108,80,97,114,97,109,101,116,101,114,115,0,73,110,118,101,114,115,105,111,110,67,111,110,116,114,111,108,83,99,97,108,105,110,103,70,97,99,116,111,114,115,0,73,110,118,101,114,115,105,111,110,67,111,115,116,70,117,110,99,116,105,111,110,84,104,114,101,115,104,111,108,100,0,73,110,118,101,114,115,105,111,110,67,111,115,116,70,117,110,99,116,105,111,110,115,67,111,101,102,102,105,99,105,101,110,116,115,0,73,110,118,101,114,115,105,111,110,67,111,115,116,70,117,110,99,116,105,111,110,115,0,73,110,118,101,114,115,105,111,110,71,114,97,100,105,101,110,116,83,99,97,108,105,110,103,0,73,110,118,101,114,115,105,111,110,73,115,99,111,110,116,114,111,108,0,73,110,118,101,114,115,105,111,110,84,121,112,101,0,73,110,118,101,114,115,105,111,110,73,110,99,111,109,112,108,101,116,101,65,100,106,111,105,110,116,0,73,110,118,101,114,115,105,111,110,77,97,120,80,97,114,97,109,101,116,101,114,115,0,73,110,118,101,114,115,105,111,110,77,97,120,105,116,101,114,80,101,114,83,116,101,112,0,73,110,118,101,114,115,105,111,110,77,97,120,105,116,101,114,0,73,110,118,101,114,115,105,111,110,77,97,120,115,116,101,112,115,0,73,110,118,101,114,115,105,111,110,70,97,116,111,108,0,73,110,118,101,114,115,105,111,110,70,114,116,111,108,0,73,110,118,101,114,115,105,111,110,71,97,116,111,108,0,73,110,118,101,114,115,105,111,110,71,114,116,111,108,0,73,110,118,101,114,115,105,111,110,71,116,116,111,108,0,73,110,118,101,114,115,105,111,110,65,108,103,111,114,105,116,104,109,0,73,110,118,101,114,115,105,111,110,77,105,110,80,97,114,97,109,101,116,101,114,115,0,73,110,118,101,114,115,105,111,110,78,115,116,101,112,115,0,73,110,118,101,114,115,105,111,110,68,120,109,105,110,0,73,110,118,101,114,115,105,111,110,78,117,109,67,111,110,116,114,111,108,80,97,114,97,109,101,116,101,114,115,0,73,110,118,101,114,115,105,111,110,78,117,109,67,111,115,116,70,117,110,99,116,105,111,110,115,0,73,110,118,101,114,115,105,111,110,83,116,101,112,84,104,114,101,115,104,111,108,100,0,73,110,118,101,114,115,105,111,110,84,104,105,99,107,110,101,115,115,79,98,115,0,73,110,118,101,114,115,105,111,110,83,117,114,102,97,99,101,79,98,115,0,73,110,118,101,114,115,105,111,110,86,120,79,98,115,0,73,110,118,101,114,115,105,111,110,86,121,79,98,115,0,73,110,118,101,114,115,105,111,110,86,122,79,98,115,0,77,97,115,107,73,99,101,76,101,118,101,108,115,101,116,0,77,97,115,107,79,99,101,97,110,76,101,118,101,108,115,101,116,0,77,97,115,107,76,97,110,100,76,101,118,101,108,115,101,116,0,77,97,116,101,114,105,97,108,115,66,101,116,97,0,77,97,116,101,114,105,97,108,115,72,101,97,116,99,97,112,97,99,105,116,121,0,77,97,116,101,114,105,97,108,115,76,97,116,101,110,116,104,101,97,116,0,77,97,116,101,114,105,97,108,115,77,101,108,116,105,110,103,112,111,105,110,116,0,77,97,116,101,114,105,97,108,115,77,105,120,101,100,76,97,121,101,114,67,97,112,97,99,105,116,121,0,77,97,116,101,114,105,97,108,115,82,104,101,111,108,111,103,121,66,0,77,97,116,101,114,105,97,108,115,82,104,101,111,108,111,103,121,66,98,97,114,0,77,97,116,101,114,105,97,108,115,82,104,101,111,108,111,103,121,76,97,119,0,77,97,116,101,114,105,97,108,115,82,104,101,111,108,111,103,121,78,0,77,97,116,101,114,105,97,108,115,82,104,101,111,108,111,103,121,75,111,0,77,97,116,101,114,105,97,108,115,82,104,101,111,108,111,103,121,75,111,98,97,114,0,77,97,116,101,114,105,97,108,115,82,104,101,111,108,111,103,121,69,99,0,77,97,116,101,114,105,97,108,115,82,104,101,111,108,111,103,121,69,99,98,97,114,0,77,97,116,101,114,105,97,108,115,82,104,101,111,108,111,103,121,69,115,0,77,97,116,101,114,105,97,108,115,82,104,101,111,108,111,103,121,69,115,98,97,114,0,68,97,109,97,103,101,73,115,100,97,109,97,103,101,0,68,97,109,97,103,101,68,0,68,97,109,97,103,101,70,0,68,97,109,97,103,101,68,98,97,114,0,68,97,109,97,103,101,76,97,119,0,68,97,109,97,103,101,67,49,0,68,97,109,97,103,101,67,50,0,68,97,109,97,103,101,67,51,0,68,97,109,97,103,101,67,52,0,68,97,109,97,103,101,69,108,101,109,101,110,116,105,110,116,101,114,112,0,68,97,109,97,103,101,72,101,97,108,105,110,103,0,68,97,109,97,103,101,83,116,114,101,115,115,84,104,114,101,115,104,111,108,100,0,68,97,109,97,103,101,75,97,112,112,97,0,68,97,109,97,103,101,83,116,97,98,105,108,105,122,97,116,105,111,110,0,68,97,109,97,103,101,77,97,120,105,116,101,114,0,68,97,109,97,103,101,83,112,99,100,97,109,97,103,101,0,68,97,109,97,103,101,77,97,120,68,97,109,97,103,101,0,68,97,109,97,103,101,69,113,117,105,118,83,116,114,101,115,115,0,68,97,109,97,103,101,69,118,111,108,117,116,105,111,110,78,117,109,82,101,113,117,101,115,116,101,100,79,117,116,112,117,116,115,0,68,97,109,97,103,101,69,118,111,108,117,116,105,111,110,82,101,113,117,101,115,116,101,100,79,117,116,112,117,116,115,0,68,97,109,97,103,101,0,78,101,119,68,97,109,97,103,101,0,83,116,114,101,115,115,73,110,116,101,110,115,105,116,121,70,97,99,116,111,114,0,67,97,108,118,105,110,103,76,97,119,0,67,97,108,118,105,110,103,67,97,108,118,105,110,103,114,97,116,101,0,67,97,108,118,105,110,103,77,101,108,116,105,110,103,114,97,116,101,0,67,97,108,118,105,110,103,76,101,118,101,114,109,97,110,110,0,67,97,108,118,105,110,103,68,101,118,0,67,97,108,118,105,110,103,77,105,110,116,104,105,99,107,110,101,115,115,0,68,101,102,97,117,108,116,67,97,108,118,105,110,103,0,67,97,108,118,105,110,103,82,101,113,117,101,115,116,101,100,79,117,116,112,117,116,115,0,67,97,108,118,105,110,103,108,101,118,101,114,109,97,110,110,67,111,101,102,102,0,67,97,108,118,105,110,103,108,101,118,101,114,109,97,110,110,77,101,108,116,105,110,103,114,97,116,101,0,67,97,108,118,105,110,103,100,101,118,67,111,101,102,102,0,67,97,108,118,105,110,103,114,97,116,101,120,0,67,97,108,118,105,110,103,114,97,116,101,121,0,67,97,108,118,105,110,103,114,97,116,101,120,65,118,101,114,97,103,101,0,67,97,108,118,105,110,103,114,97,116,101,121,65,118,101,114,97,103,101,0,83,116,114,97,105,110,82,97,116,101,112,97,114,97,108,108,101,108,0,83,116,114,97,105,110,82,97,116,101,112,101,114,112,101,110,100,105,99,117,108,97,114,0,83,116,114,97,105,110,82,97,116,101,101,102,102,101,99,116,105,118,101,0,77,97,116,101,114,105,97,108,115,82,104,111,73,99,101,0,77,97,116,101,114,105,97,108,115,82,104,111,83,101,97,119,97,116,101,114,0,77,97,116,101,114,105,97,108,115,82,104,111,70,114,101,115,104,119,97,116,101,114,0,77,97,116,101,114,105,97,108,115,77,117,87,97,116,101,114,0,77,97,116,101,114,105,97,108,115,84,104,101,114,109,97,108,69,120,99,104,97,110,103,101,86,101,108,111,99,105,116,121,0,77,97,116,101,114,105,97,108,115,84,104,101,114,109,97,108,99,111,110,100,117,99,116,105,118,105,116,121,0,77,97,116,101,114,105,97,108,115,84,101,109,112,101,114,97,116,101,105,99,101,99,111,110,100,117,99,116,105,118,105,116,121,0,77,97,116,101,114,105,97,108,115,76,105,116,104,111,115,112,104,101,114,101,83,104,101,97,114,77,111,100,117,108,117,115,0,77,97,116,101,114,105,97,108,115,76,105,116,104,111,115,112,104,101,114,101,68,101,110,115,105,116,121,0,77,97,116,101,114,105,97,108,115,77,97,110,116,108,101,83,104,101,97,114,77,111,100,117,108,117,115,0,77,97,116,101,114,105,97,108,115,77,97,110,116,108,101,68,101,110,115,105,116,121,0,77,97,116,101,114,105,97,108,115,69,97,114,116,104,68,101,110,115,105,116,121,0,77,101,115,104,65,118,101,114,97,103,101,86,101,114,116,101,120,67,111,110,110,101,99,116,105,118,105,116,121,0,77,101,115,104,69,108,101,109,101,110,116,115,50,100,0,77,101,115,104,69,108,101,109,101,110,116,115,0,77,101,115,104,76,111,119,101,114,101,108,101,109,101,110,116,115,0,77,101,115,104,78,117,109,98,101,114,111,102,101,108,101,109,101,110,116,115,50,100,0,77,101,115,104,78,117,109,98,101,114,111,102,101,108,101,109,101,110,116,115,0,77,101,115,104,78,117,109,98,101,114,111,102,108,97,121,101,114,115,0,77,101,115,104,78,117,109,98,101,114,111,102,118,101,114,116,105,99,101,115,50,100,0,77,101,115,104,78,117,109,98,101,114,111,102,118,101,114,116,105,99,101,115,0,77,101,115,104,85,112,112,101,114,101,108,101,109,101,110,116,115,0,77,101,115,104,86,101,114,116,101,120,111,110,98,97,115,101,0,77,101,115,104,86,101,114,116,101,120,111,110,115,117,114,102,97,99,101,0,77,101,115,104,86,101,114,116,101,120,111,110,98,111,117,110,100,97,114,121,0,77,101,115,104,88,0,77,101,115,104,89,0,77,101,115,104,90,0,77,101,115,104,76,97,116,0,77,101,115,104,76,111,110,103,0,77,101,115,104,82,0,77,101,115,104,69,108,101,109,101,110,116,116,121,112,101,0,77,101,115,104,83,101,103,109,101,110,116,115,0,68,111,109,97,105,110,84,121,112,101,0,68,111,109,97,105,110,68,105,109,101,110,115,105,111,110,0,68,111,109,97,105,110,50,68,104,111,114,105,122,111,110,116,97,108,0,68,111,109,97,105,110,50,68,118,101,114,116,105,99,97,108,0,68,111,109,97,105,110,51,68,0,68,111,109,97,105,110,51,68,115,117,114,102,97,99,101,0,77,105,115,99,101,108,108,97,110,101,111,117,115,78,97,109,101,0,77,97,115,115,116,114,97,110,115,112,111,114,116,72,121,100,114,111,115,116,97,116,105,99,65,100,106,117,115,116,109,101,110,116,0,77,97,115,115,116,114,97,110,115,112,111,114,116,73,115,102,114,101,101,115,117,114,102,97,99,101,0,77,97,115,115,116,114,97,110,115,112,111,114,116,77,105,110,84,104,105,99,107,110,101,115,115,0,77,97,115,115,116,114,97,110,115,112,111,114,116,80,101,110,97,108,116,121,70,97,99,116,111,114,0,77,97,115,115,116,114,97,110,115,112,111,114,116,83,112,99,116,104,105,99,107,110,101,115,115,0,77,97,115,115,116,114,97,110,115,112,111,114,116,83,116,97,98,105,108,105,122,97,116,105,111,110,0,77,97,115,115,116,114,97,110,115,112,111,114,116,86,101,114,116,101,120,80,97,105,114,105,110,103,0,77,97,115,115,116,114,97,110,115,112,111,114,116,78,117,109,82,101,113,117,101,115,116,101,100,79,117,116,112,117,116,115,0,77,97,115,115,116,114,97,110,115,112,111,114,116,82,101,113,117,101,115,116,101,100,79,117,116,112,117,116,115,0,81,109,117,73,115,100,97,107,111,116,97,0,77,97,115,115,70,108,117,120,83,101,103,109,101,110,116,115,0,77,97,115,115,70,108,117,120,83,101,103,109,101,110,116,115,80,114,101,115,101,110,116,0,81,109,117,77,97,115,115,70,108,117,120,83,101,103,109,101,110,116,115,80,114,101,115,101,110,116,0,81,109,117,78,117,109,98,101,114,111,102,112,97,114,116,105,116,105,111,110,115,0,81,109,117,78,117,109,98,101,114,111,102,114,101,115,112,111,110,115,101,115,0,81,109,117,80,97,114,116,105,116,105,111,110,0,81,109,117,82,101,115,112,111,110,115,101,100,101,115,99,114,105,112,116,111,114,115,0,81,109,117,86,97,114,105,97,98,108,101,100,101,115,99,114,105,112,116,111,114,115,0,82,105,102,116,115,78,117,109,114,105,102,116,115,0,82,105,102,116,115,82,105,102,116,115,116,114,117,99,116,0,83,101,116,116,105,110,103,115,82,101,115,117,108,116,115,79,110,78,111,100,101,115,0,83,101,116,116,105,110,103,115,73,111,71,97,116,104,101,114,0,83,101,116,116,105,110,103,115,76,111,119,109,101,109,0,83,101,116,116,105,110,103,115,79,117,116,112,117,116,70,114,101,113,117,101,110,99,121,0,83,101,116,116,105,110,103,115,82,101,99,111,114,100,105,110,103,70,114,101,113,117,101,110,99,121,0,83,101,116,116,105,110,103,115,87,97,105,116,111,110,108,111,99,107,0,68,101,98,117,103,80,114,111,102,105,108,105,110,103,0,80,114,111,102,105,108,105,110,103,67,117,114,114,101,110,116,77,101,109,0,80,114,111,102,105,108,105,110,103,67,117,114,114,101,110,116,70,108,111,112,115,0,80,114,111,102,105,108,105,110,103,83,111,108,117,116,105,111,110,84,105,109,101,0,83,116,101,97,100,121,115,116,97,116,101,77,97,120,105,116,101,114,0,83,116,101,97,100,121,115,116,97,116,101,78,117,109,82,101,113,117,101,115,116,101,100,79,117,116,112,117,116,115,0,83,116,101,97,100,121,115,116,97,116,101,82,101,108,116,111,108,0,83,116,101,97,100,121,115,116,97,116,101,82,101,113,117,101,115,116,101,100,79,117,116,112,117,116,115,0,83,117,114,102,97,99,101,0,84,104,101,114,109,97,108,73,115,101,110,116,104,97,108,112,121,0,84,104,101,114,109,97,108,73,115,100,121,110,97,109,105,99,98,97,115,97,108,115,112,99,0,84,104,101,114,109,97,108,82,101,108,116,111,108,0,84,104,101,114,109,97,108,77,97,120,105,116,101,114,0,84,104,101,114,109,97,108,80,101,110,97,108,116,121,70,97,99,116,111,114,0,84,104,101,114,109,97,108,80,101,110,97,108,116,121,76,111,99,107,0,84,104,101,114,109,97,108,80,101,110,97,108,116,121,84,104,114,101,115,104,111,108,100,0,84,104,101,114,109,97,108,83,112,99,116,101,109,112,101,114,97,116,117,114,101,0,84,104,101,114,109,97,108,83,116,97,98,105,108,105,122,97,116,105,111,110,0,84,104,101,114,109,97,108,78,117,109,82,101,113,117,101,115,116,101,100,79,117,116,112,117,116,115,0,84,104,101,114,109,97,108,82,101,113,117,101,115,116,101,100,79,117,116,112,117,116,115,0,71,105,97,77,97,110,116,108,101,86,105,115,99,111,115,105,116,121,0,71,105,97,76,105,116,104,111,115,112,104,101,114,101,84,104,105,99,107,110,101,115,115,0,84,104,105,99,107,110,101,115,115,0,84,105,109,101,115,116,101,112,112,105,110,103,83,116,97,114,116,84,105,109,101,0,84,105,109,101,115,116,101,112,112,105,110,103,70,105,110,97,108,84,105,109,101,0,84,105,109,101,115,116,101,112,112,105,110,103,67,102,108,67,111,101,102,102,105,99,105,101,110,116,0,84,105,109,101,115,116,101,112,112,105,110,103,84,105,109,101,65,100,97,112,116,0,84,105,109,101,115,116,101,112,112,105,110,103,84,105,109,101,83,116,101,112,0,84,105,109,101,115,116,101,112,112,105,110,103,73,110,116,101,114,112,70,111,114,99,105,110,103,115,0,84,114,97,110,115,105,101,110,116,73,115,115,109,98,0,84,114,97,110,115,105,101,110,116,73,115,99,111,117,112,108,101,114,0,84,114,97,110,115,105,101,110,116,73,115,115,116,114,101,115,115,98,97,108,97,110,99,101,0,84,114,97,110,115,105,101,110,116,73,115,103,114,111,117,110,100,105,110,103,108,105,110,101,0,84,114,97,110,115,105,101,110,116,73,115,109,97,115,115,116,114,97,110,115,112,111,114,116,0,84,114,97,110,115,105,101,110,116,73,115,116,104,101,114,109,97,108,0,84,114,97,110,115,105,101,110,116,73,115,103,105,97,0,84,114,97,110,115,105,101,110,116,73,115,100,97,109,97,103,101,101,118,111,108,117,116,105,111,110,0,84,114,97,110,115,105,101,110,116,73,115,104,121,100,114,111,108,111,103,121,0,84,114,97,110,115,105,101,110,116,73,115,109,111,118,105,110,103,102,114,111,110,116,0,84,114,97,110,115,105,101,110,116,73,115,115,108,114,0,84,114,97,110,115,105,101,110,116,78,117,109,82,101,113,117,101,115,116,101,100,79,117,116,112,117,116,115,0,84,114,97,110,115,105,101,110,116,82,101,113,117,101,115,116,101,100,79,117,116,112,117,116,115,0,80,111,116,101,110,116,105,97,108,0,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,83,112,99,112,111,116,101,110,116,105,97,108,0,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,65,112,112,97,114,101,110,116,77,97,115,115,98,97,108,97,110,99,101,0,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,50,77,105,115,102,105,116,0,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,68,105,102,102,117,115,105,111,110,67,111,101,102,102,105,99,105,101,110,116,0,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,67,109,117,0,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,79,109,101,103,97,0,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,68,48,0,83,109,98,0,83,109,98,65,110,97,108,121,115,105,115,0,83,109,98,83,111,108,117,116,105,111,110,0,83,109,98,78,117,109,82,101,113,117,101,115,116,101,100,79,117,116,112,117,116,115,0,83,109,98,82,101,113,117,101,115,116,101,100,79,117,116,112,117,116,115,0,83,109,98,73,115,73,110,105,116,105,97,108,105,122,101,100,0,83,77,66,102,111,114,99,105,110,103,0,83,109,98,77,97,115,115,66,97,108,97,110,99,101,0,83,77,66,103,101,109,98,0,83,109,98,73,110,105,116,68,101,110,115,105,116,121,83,99,97,108,105,110,103,0,83,109,98,84,97,0,83,109,98,86,0,83,109,98,68,115,119,114,102,0,83,109,98,68,108,119,114,102,0,83,109,98,80,0,83,109,98,83,119,102,0,83,109,98,69,65,105,114,0,83,109,98,80,65,105,114,0,83,109,98,84,109,101,97,110,0,83,109,98,67,0,83,109,98,84,122,0,83,109,98,86,122,0,83,109,98,68,116,0,83,109,98,68,122,0,83,109,98,65,73,100,120,0,83,109,98,83,119,73,100,120,0,83,109,98,68,101,110,73,100,120,0,83,109,98,90,84,111,112,0,83,109,98,68,122,84,111,112,0,83,109,98,68,122,77,105,110,0,83,109,98,90,89,0,83,109,98,90,77,97,120,0,83,109,98,90,77,105,110,0,83,109,98,79,117,116,112,117,116,70,114,101,113,0,83,109,98,65,83,110,111,119,0,83,109,98,65,73,99,101,0,83,109,98,67,108,100,70,114,97,99,0,83,109,98,84,48,119,101,116,0,83,109,98,84,48,100,114,121,0,83,109,98,75,0,83,109,98,68,0,83,109,98,82,101,0,83,109,98,71,100,110,0,83,109,98,71,115,112,0,83,109,98,69,67,0,83,109,98,67,111,110,100,101,110,115,97,116,105,111,110,0,83,109,98,87,0,83,109,98,65,0,83,109,98,84,0,83,109,98,73,115,103,114,97,105,110,103,114,111,119,116,104,0,83,109,98,73,115,97,108,98,101,100,111,0,83,109,98,73,115,115,104,111,114,116,119,97,118,101,0,83,109,98,73,115,116,104,101,114,109,97,108,0,83,109,98,73,115,97,99,99,117,109,117,108,97,116,105,111,110,0,83,109,98,73,115,109,101,108,116,0,83,109,98,73,115,100,101,110,115,105,102,105,99,97,116,105,111,110,0,83,109,98,73,115,116,117,114,98,117,108,101,110,116,102,108,117,120,0,83,77,66,112,100,100,0,83,109,98,68,101,108,116,97,49,56,111,0,83,109,98,68,101,108,116,97,49,56,111,83,117,114,102,97,99,101,0,83,109,98,73,115,100,101,108,116,97,49,56,111,0,83,109,98,73,115,109,117,110,103,115,109,0,83,109,98,73,115,100,49,56,111,112,100,0,83,109,98,80,114,101,99,105,112,105,116,97,116,105,111,110,115,80,114,101,115,101,110,116,100,97,121,0,83,109,98,80,114,101,99,105,112,105,116,97,116,105,111,110,115,76,103,109,0,83,109,98,84,101,109,112,101,114,97,116,117,114,101,115,80,114,101,115,101,110,116,100,97,121,0,83,109,98,84,101,109,112,101,114,97,116,117,114,101,115,76,103,109,0,83,109,98,80,114,101,99,105,112,105,116,97,116,105,111,110,0,83,109,98,68,101,115,102,97,99,0,83,109,98,83,48,112,0,83,109,98,83,48,116,0,83,109,98,82,108,97,112,115,0,83,109,98,82,108,97,112,115,108,103,109,0,83,109,98,80,102,97,99,0,83,109,98,84,100,105,102,102,0,83,109,98,83,101,97,108,101,118,0,83,77,66,100,49,56,111,112,100,100,0,83,109,98,68,112,101,114,109,105,108,0,83,77,66,103,114,97,100,105,101,110,116,115,0,83,109,98,77,111,110,116,104,108,121,116,101,109,112,101,114,97,116,117,114,101,115,0,83,109,98,72,114,101,102,0,83,109,98,83,109,98,114,101,102,0,83,109,98,66,80,111,115,0,83,109,98,66,78,101,103,0,83,77,66,104,101,110,110,105,110,103,0,83,77,66,99,111,109,112,111,110,101,110,116,115,0,83,109,98,65,99,99,117,109,117,108,97,116,105,111,110,0,83,109,98,69,118,97,112,111,114,97,116,105,111,110,0,83,109,98,82,117,110,111,102,102,0,83,77,66,109,101,108,116,99,111,109,112,111,110,101,110,116,115,0,83,109,98,77,101,108,116,0,83,109,98,82,101,102,114,101,101,122,101,0,83,77,66,103,99,109,0,83,109,98,73,115,112,100,100,0,83,109,98,73,115,115,109,98,103,114,97,100,105,101,110,116,115,0,83,111,108,117,116,105,111,110,84,121,112,101,0,65,110,97,108,121,115,105,115,84,121,112,101,0,67,111,110,102,105,103,117,114,97,116,105,111,110,84,121,112,101,0,65,100,106,111,105,110,116,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,65,110,97,108,121,115,105,115,0,65,100,106,111,105,110,116,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,50,65,110,97,108,121,115,105,115,0,65,100,106,111,105,110,116,72,111,114,105,122,65,110,97,108,121,115,105,115,0,65,110,97,108,121,115,105,115,67,111,117,110,116,101,114,0,68,101,102,97,117,108,116,65,110,97,108,121,115,105,115,0,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,65,110,97,108,121,115,105,115,0,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,83,111,108,117,116,105,111,110,0,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,50,65,110,97,108,121,115,105,115,0,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,50,83,111,108,117,116,105,111,110,0,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,83,111,102,116,65,110,97,108,121,115,105,115,0,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,83,111,102,116,83,111,108,117,116,105,111,110,0,66,97,108,97,110,99,101,118,101,108,111,99,105,116,121,65,110,97,108,121,115,105,115,0,66,97,108,97,110,99,101,118,101,108,111,99,105,116,121,83,111,108,117,116,105,111,110,0,76,50,80,114,111,106,101,99,116,105,111,110,69,80,76,65,110,97,108,121,115,105,115,0,76,50,80,114,111,106,101,99,116,105,111,110,66,97,115,101,65,110,97,108,121,115,105,115,0,66,101,100,83,108,111,112,101,83,111,108,117,116,105,111,110,0,68,97,109,97,103,101,69,118,111,108,117,116,105,111,110,83,111,108,117,116,105,111,110,0,68,97,109,97,103,101,69,118,111,108,117,116,105,111,110,65,110,97,108,121,115,105,115,0,83,116,114,101,115,115,98,97,108,97,110,99,101,65,110,97,108,121,115,105,115,0,83,116,114,101,115,115,98,97,108,97,110,99,101,83,73,65,65,110,97,108,121,115,105,115,0,83,116,114,101,115,115,98,97,108,97,110,99,101,83,111,108,117,116,105,111,110,0,83,116,114,101,115,115,98,97,108,97,110,99,101,86,101,114,116,105,99,97,108,65,110,97,108,121,115,105,115,0,69,110,116,104,97,108,112,121,65,110,97,108,121,115,105,115,0,70,108,97,105,109,65,110,97,108,121,115,105,115,0,70,108,97,105,109,83,111,108,117,116,105,111,110,0,72,121,100,114,111,108,111,103,121,83,104,114,101,118,101,65,110,97,108,121,115,105,115,0,72,121,100,114,111,108,111,103,121,68,67,73,110,101,102,102,105,99,105,101,110,116,65,110,97,108,121,115,105,115,0,72,121,100,114,111,108,111,103,121,68,67,69,102,102,105,99,105,101,110,116,65,110,97,108,121,115,105,115,0,72,121,100,114,111,108,111,103,121,83,111,109,109,101,114,115,65,110,97,108,121,115,105,115,0,72,121,100,114,111,108,111,103,121,83,111,108,117,116,105,111,110,0,77,101,108,116,105,110,103,65,110,97,108,121,115,105,115,0,77,97,115,115,116,114,97,110,115,112,111,114,116,65,110,97,108,121,115,105,115,0,77,97,115,115,116,114,97,110,115,112,111,114,116,83,111,108,117,116,105,111,110,0,70,114,101,101,83,117,114,102,97,99,101,66,97,115,101,65,110,97,108,121,115,105,115,0,70,114,101,101,83,117,114,102,97,99,101,84,111,112,65,110,97,108,121,115,105,115,0,83,117,114,102,97,99,101,78,111,114,109,97,108,86,101,108,111,99,105,116,121,0,69,120,116,114,117,100,101,70,114,111,109,66,97,115,101,65,110,97,108,121,115,105,115,0,69,120,116,114,117,100,101,70,114,111,109,84,111,112,65,110,97,108,121,115,105,115,0,68,101,112,116,104,65,118,101,114,97,103,101,65,110,97,108,121,115,105,115,0,83,116,101,97,100,121,115,116,97,116,101,83,111,108,117,116,105,111,110,0,83,117,114,102,97,99,101,83,108,111,112,101,83,111,108,117,116,105,111,110,0,83,109,111,111,116,104,65,110,97,108,121,115,105,115,0,84,104,101,114,109,97,108,65,110,97,108,121,115,105,115,0,84,104,101,114,109,97,108,83,111,108,117,116,105,111,110,0,84,114,97,110,115,105,101,110,116,83,111,108,117,116,105,111,110,0,85,122,97,119,97,80,114,101,115,115,117,114,101,65,110,97,108,121,115,105,115,0,71,105,97,83,111,108,117,116,105,111,110,0,71,105,97,65,110,97,108,121,115,105,115,0,77,101,115,104,100,101,102,111,114,109,97,116,105,111,110,83,111,108,117,116,105,111,110,0,77,101,115,104,100,101,102,111,114,109,97,116,105,111,110,65,110,97,108,121,115,105,115,0,76,101,118,101,108,115,101,116,65,110,97,108,121,115,105,115,0,76,101,118,101,108,115,101,116,83,116,97,98,105,108,105,122,97,116,105,111,110,0,69,120,116,114,97,112,111,108,97,116,105,111,110,65,110,97,108,121,115,105,115,0,76,115,102,82,101,105,110,105,116,105,97,108,105,122,97,116,105,111,110,65,110,97,108,121,115,105,115,0,65,112,112,114,111,120,105,109,97,116,105,111,110,0,78,111,110,101,65,112,112,114,111,120,105,109,97,116,105,111,110,0,83,73,65,65,112,112,114,111,120,105,109,97,116,105,111,110,0,83,83,65,65,112,112,114,111,120,105,109,97,116,105,111,110,0,83,83,65,72,79,65,112,112,114,111,120,105,109,97,116,105,111,110,0,83,83,65,70,83,65,112,112,114,111,120,105,109,97,116,105,111,110,0,76,49,76,50,65,112,112,114,111,120,105,109,97,116,105,111,110,0,72,79,65,112,112,114,111,120,105,109,97,116,105,111,110,0,72,79,70,83,65,112,112,114,111,120,105,109,97,116,105,111,110,0,70,83,65,112,112,114,111,120,105,109,97,116,105,111,110,0,70,83,118,101,108,111,99,105,116,121,0,70,83,112,114,101,115,115,117,114,101,0,68,97,116,97,83,101,116,0,67,111,110,115,116,114,97,105,110,116,115,0,76,111,97,100,115,0,77,97,116,101,114,105,97,108,115,0,78,111,100,101,115,0,67,111,110,116,111,117,114,115,0,80,97,114,97,109,101,116,101,114,115,0,86,101,114,116,105,99,101,115,0,82,101,115,117,108,116,115,0,71,101,110,101,114,105,99,80,97,114,97,109,0,65,100,111,108,99,80,97,114,97,109,0,66,111,111,108,73,110,112,117,116,0,66,111,111,108,80,97,114,97,109,0,67,111,110,116,111,117,114,0,68,97,116,97,115,101,116,73,110,112,117,116,0,68,111,117,98,108,101,73,110,112,117,116,0,68,111,117,98,108,101,65,114,114,97,121,73,110,112,117,116,0,68,97,116,97,83,101,116,80,97,114,97,109,0,68,111,117,98,108,101,77,97,116,65,114,114,97,121,80,97,114,97,109,0,68,111,117,98,108,101,77,97,116,80,97,114,97,109,0,68,111,117,98,108,101,80,97,114,97,109,0,68,111,117,98,108,101,86,101,99,80,97,114,97,109,0,69,108,101,109,101,110,116,0,69,108,101,109,101,110,116,72,111,111,107,0,72,111,111,107,0,69,120,116,101,114,110,97,108,82,101,115,117,108,116,0,70,105,108,101,80,97,114,97,109,0,73,110,112,117,116,0,73,110,116,73,110,112,117,116,0,73,110,112,117,116,84,111,69,120,116,114,117,100,101,0,73,110,112,117,116,84,111,76,50,80,114,111,106,101,99,116,0,73,110,112,117,116,84,111,68,101,112,116,104,97,118,101,114,97,103,101,0,73,110,112,117,116,84,111,83,109,111,111,116,104,0,83,109,111,111,116,104,84,104,105,99,107,110,101,115,115,77,117,108,116,105,112,108,105,101,114,0,73,110,116,80,97,114,97,109,0,73,110,116,86,101,99,80,97,114,97,109,0,84,114,97,110,115,105,101,110,116,80,97,114,97,109,0,77,97,116,105,99,101,0,77,97,116,100,97,109,97,103,101,105,99,101,0,77,97,116,101,115,116,97,114,0,77,97,116,112,97,114,0,78,111,100,101,0,78,117,109,101,114,105,99,97,108,102,108,117,120,0,78,117,109,101,114,105,99,97,108,102,108,117,120,84,121,112,101,0,78,101,117,109,97,110,110,102,108,117,120,0,80,97,114,97,109,0,77,111,117,108,105,110,0,80,101,110,103,114,105,100,0,80,101,110,112,97,105,114,0,80,114,111,102,105,108,101,114,0,77,97,116,114,105,120,80,97,114,97,109,0,77,97,115,115,99,111,110,0,77,97,115,115,99,111,110,78,97,109,101,0,77,97,115,115,99,111,110,68,101,102,105,110,105,116,105,111,110,101,110,117,109,0,77,97,115,115,99,111,110,76,101,118,101,108,115,101,116,0,77,97,115,115,99,111,110,97,120,112,98,121,0,77,97,115,115,99,111,110,97,120,112,98,121,78,97,109,101,0,77,97,115,115,99,111,110,97,120,112,98,121,68,101,102,105,110,105,116,105,111,110,101,110,117,109,0,77,97,115,115,99,111,110,97,120,112,98,121,78,97,109,101,120,0,77,97,115,115,99,111,110,97,120,112,98,121,78,97,109,101,121,0,77,97,115,115,99,111,110,97,120,112,98,121,65,108,112,104,97,0,77,97,115,115,99,111,110,97,120,112],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+88552);allocate([98,121,66,101,116,97,0,78,111,100,101,83,73,100,0,86,101,99,116,111,114,80,97,114,97,109,0,82,105,102,116,102,114,111,110,116,0,82,105,102,116,102,114,111,110,116,84,121,112,101,0,83,101,103,109,101,110,116,0,83,101,103,109,101,110,116,82,105,102,116,102,114,111,110,116,0,83,112,99,68,121,110,97,109,105,99,0,83,112,99,83,116,97,116,105,99,0,83,112,99,84,114,97,110,115,105,101,110,116,0,83,116,114,105,110,103,65,114,114,97,121,80,97,114,97,109,0,83,116,114,105,110,103,80,97,114,97,109,0,83,101,103,0,83,101,103,73,110,112,117,116,0,84,114,105,97,0,84,114,105,97,73,110,112,117,116,0,84,101,116,114,97,0,84,101,116,114,97,73,110,112,117,116,0,80,101,110,116,97,0,80,101,110,116,97,73,110,112,117,116,0,86,101,114,116,101,120,0,86,101,114,116,101,120,80,73,100,0,86,101,114,116,101,120,83,73,100,0,65,105,114,0,73,99,101,0,77,101,108,97,110,103,101,0,87,97,116,101,114,0,67,108,111,115,101,100,0,70,114,101,101,0,79,112,101,110,0,65,100,106,111,105,110,116,112,0,65,100,106,111,105,110,116,120,0,65,100,106,111,105,110,116,121,0,65,100,106,111,105,110,116,122,0,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,77,105,115,102,105,116,0,66,101,100,83,108,111,112,101,88,0,66,101,100,83,108,111,112,101,89,0,66,111,117,110,100,97,114,121,0,67,111,110,118,101,114,103,101,100,0,70,105,108,108,0,70,114,97,99,116,105,111,110,73,110,99,114,101,109,101,110,116,0,70,114,105,99,116,105,111,110,0,73,110,116,101,114,110,97,108,0,77,97,115,115,70,108,117,120,0,77,101,108,116,105,110,103,79,102,102,115,101,116,0,77,105,115,102,105,116,0,80,114,101,115,115,117,114,101,0,80,114,101,115,115,117,114,101,80,105,99,97,114,100,0,65,110,100,114,111,105,100,70,114,105,99,116,105,111,110,67,111,101,102,102,105,99,105,101,110,116,0,82,101,115,101,116,80,101,110,97,108,116,105,101,115,0,83,101,103,109,101,110,116,79,110,73,99,101,83,104,101,108,102,0,83,117,114,102,97,99,101,65,114,101,97,0,83,117,114,102,97,99,101,83,108,111,112,101,88,0,83,117,114,102,97,99,101,83,108,111,112,101,89,0,84,101,109,112,101,114,97,116,117,114,101,0,84,101,109,112,101,114,97,116,117,114,101,80,105,99,97,114,100,0,84,101,109,112,101,114,97,116,117,114,101,80,68,68,0,84,104,105,99,107,110,101,115,115,65,98,115,77,105,115,102,105,116,0,83,117,114,102,97,99,101,65,98,115,77,105,115,102,105,116,0,86,101,108,0,86,101,108,111,99,105,116,121,0,86,120,65,118,101,114,97,103,101,0,86,120,0,86,120,80,105,99,97,114,100,0,86,121,65,118,101,114,97,103,101,0,86,121,0,86,121,80,105,99,97,114,100,0,86,122,0,86,122,83,83,65,0,86,122,72,79,0,86,122,80,105,99,97,114,100,0,86,122,70,83,0,86,120,77,101,115,104,0,86,121,77,101,115,104,0,86,122,77,101,115,104,0,69,110,116,104,97,108,112,121,0,69,110,116,104,97,108,112,121,80,105,99,97,114,100,0,84,104,105,99,107,110,101,115,115,65,98,115,71,114,97,100,105,101,110,116,0,84,104,105,99,107,110,101,115,115,65,108,111,110,103,71,114,97,100,105,101,110,116,0,84,104,105,99,107,110,101,115,115,65,99,114,111,115,115,71,114,97,100,105,101,110,116,0,84,104,105,99,107,110,101,115,115,80,111,115,105,116,105,118,101,0,73,110,116,77,97,116,80,97,114,97,109,0,84,114,97,110,115,105,101,110,116,73,110,112,117,116,0,87,97,116,101,114,102,114,97,99,116,105,111,110,0,87,97,116,101,114,99,111,108,117,109,110,0,66,97,115,97,108,70,114,105,99,116,105,111,110,0,86,105,115,99,111,117,115,72,101,97,116,105,110,103,0,72,121,100,114,111,108,111,103,121,87,97,116,101,114,86,120,0,72,121,100,114,111,108,111,103,121,87,97,116,101,114,86,121,0,68,114,105,118,105,110,103,83,116,114,101,115,115,88,0,68,114,105,118,105,110,103,83,116,114,101,115,115,89,0,83,105,103,109,97,78,78,0,83,116,114,101,115,115,84,101,110,115,111,114,0,83,116,114,101,115,115,84,101,110,115,111,114,120,120,0,83,116,114,101,115,115,84,101,110,115,111,114,120,121,0,83,116,114,101,115,115,84,101,110,115,111,114,120,122,0,83,116,114,101,115,115,84,101,110,115,111,114,121,121,0,83,116,114,101,115,115,84,101,110,115,111,114,121,122,0,83,116,114,101,115,115,84,101,110,115,111,114,122,122,0,83,116,114,101,115,115,77,97,120,80,114,105,110,99,105,112,97,108,0,68,101,118,105,97,116,111,114,105,99,83,116,114,101,115,115,0,68,101,118,105,97,116,111,114,105,99,83,116,114,101,115,115,120,120,0,68,101,118,105,97,116,111,114,105,99,83,116,114,101,115,115,120,121,0,68,101,118,105,97,116,111,114,105,99,83,116,114,101,115,115,120,122,0,68,101,118,105,97,116,111,114,105,99,83,116,114,101,115,115,121,121,0,68,101,118,105,97,116,111,114,105,99,83,116,114,101,115,115,121,122,0,68,101,118,105,97,116,111,114,105,99,83,116,114,101,115,115,122,122,0,68,101,118,105,97,116,111,114,105,99,83,116,114,101,115,115,101,102,102,101,99,116,105,118,101,0,76,97,109,98,100,97,83,0,83,116,114,97,105,110,82,97,116,101,0,83,116,114,97,105,110,82,97,116,101,120,120,0,83,116,114,97,105,110,82,97,116,101,120,121,0,83,116,114,97,105,110,82,97,116,101,120,122,0,83,116,114,97,105,110,82,97,116,101,121,121,0,83,116,114,97,105,110,82,97,116,101,121,122,0,83,116,114,97,105,110,82,97,116,101,122,122,0,68,105,118,101,114,103,101,110,99,101,0,77,97,120,68,105,118,101,114,103,101,110,99,101,0,71,105,97,67,114,111,115,115,83,101,99,116,105,111,110,83,104,97,112,101,0,71,105,97,100,87,100,116,0,71,105,97,87,0,80,48,0,80,48,65,114,114,97,121,0,80,49,0,80,49,68,71,0,80,49,98,117,98,98,108,101,0,80,49,98,117,98,98,108,101,99,111,110,100,101,110,115,101,100,0,80,50,0,80,50,98,117,98,98,108,101,0,80,50,98,117,98,98,108,101,99,111,110,100,101,110,115,101,100,0,80,50,120,80,49,0,80,49,120,80,50,0,80,49,120,80,51,0,80,50,120,80,52,0,80,49,80,49,0,80,49,80,49,71,76,83,0,77,73,78,73,0,77,73,78,73,99,111,110,100,101,110,115,101,100,0,84,97,121,108,111,114,72,111,111,100,0,76,65,84,97,121,108,111,114,72,111,111,100,0,88,84,97,121,108,111,114,72,111,111,100,0,79,110,101,76,97,121,101,114,80,52,122,0,67,114,111,117,122,101,105,120,82,97,118,105,97,114,116,0,76,65,67,114,111,117,122,101,105,120,82,97,118,105,97,114,116,0,83,97,118,101,82,101,115,117,108,116,115,0,66,111,111,108,69,120,116,101,114,110,97,108,82,101,115,117,108,116,0,68,111,117,98,108,101,69,120,116,101,114,110,97,108,82,101,115,117,108,116,0,68,111,117,98,108,101,77,97,116,69,120,116,101,114,110,97,108,82,101,115,117,108,116,0,73,110,116,69,120,116,101,114,110,97,108,82,101,115,117,108,116,0,74,0,83,116,114,105,110,103,69,120,116,101,114,110,97,108,82,101,115,117,108,116,0,83,116,101,112,0,84,105,109,101,0,87,97,116,101,114,67,111,108,117,109,110,79,108,100,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,49,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,50,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,51,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,52,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,53,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,54,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,55,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,56,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,57,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,49,48,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,49,49,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,49,50,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,49,51,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,49,52,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,49,53,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,49,54,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,49,55,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,49,56,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,49,57,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,50,48,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,50,49,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,50,50,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,50,51,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,50,52,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,50,53,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,50,54,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,50,55,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,50,56,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,50,57,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,51,48,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,51,49,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,51,50,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,51,51,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,51,52,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,51,53,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,51,54,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,51,55,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,51,56,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,51,57,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,52,48,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,52,49,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,52,50,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,52,51,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,52,52,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,52,53,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,52,54,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,52,55,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,52,56,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,52,57,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,53,48,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,53,49,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,53,50,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,53,51,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,53,52,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,53,53,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,53,54,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,53,55,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,53,56,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,53,57,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,54,48,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,54,49,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,54,50,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,54,51,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,54,52,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,54,53,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,54,54,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,54,55,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,54,56,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,54,57,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,55,48,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,55,49,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,55,50,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,55,51,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,55,52,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,55,53,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,55,54,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,55,55,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,55,56,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,55,57,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,56,48,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,56,49,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,56,50,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,56,51,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,56,52,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,56,53,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,56,54,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,56,55,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,56,56,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,56,57,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,57,48,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,57,49,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,57,50,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,57,51,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,57,52,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,57,53,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,57,54,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,57,55,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,57,56,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,57,57,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,49,48,48,0,79,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,76,105,115,116,0,77,97,115,115,102,108,117,120,97,116,103,97,116,101,0,77,97,115,115,102,108,117,120,97,116,103,97,116,101,78,97,109,101,0,77,97,115,115,102,108,117,120,97,116,103,97,116,101,68,101,102,105,110,105,116,105,111,110,101,110,117,109,0,77,97,115,115,102,108,117,120,97,116,103,97,116,101,83,101,103,109,101,110,116,115,0,78,111,100,97,108,118,97,108,117,101,0,78,111,100,97,108,118,97,108,117,101,78,97,109,101,0,78,111,100,97,108,118,97,108,117,101,68,101,102,105,110,105,116,105,111,110,101,110,117,109,0,78,111,100,97,108,118,97,108,117,101,77,111,100,101,108,69,110,117,109,0,78,111,100,97,108,118,97,108,117,101,78,111,100,101,0,77,105,115,102,105,116,78,97,109,101,0,77,105,115,102,105,116,68,101,102,105,110,105,116,105,111,110,101,110,117,109,0,77,105,115,102,105,116,77,111,100,101,108,69,110,117,109,0,77,105,115,102,105,116,79,98,115,101,114,118,97,116,105,111,110,0,77,105,115,102,105,116,79,98,115,101,114,118,97,116,105,111,110,69,110,117,109,0,77,105,115,102,105,116,76,111,99,97,108,0,77,105,115,102,105,116,84,105,109,101,105,110,116,101,114,112,111,108,97,116,105,111,110,0,77,105,115,102,105,116,87,101,105,103,104,116,115,0,77,105,115,102,105,116,87,101,105,103,104,116,115,69,110,117,109,0,83,117,114,102,97,99,101,79,98,115,101,114,118,97,116,105,111,110,0,87,101,105,103,104,116,115,83,117,114,102,97,99,101,79,98,115,101,114,118,97,116,105,111,110,0,86,120,79,98,115,0,87,101,105,103,104,116,115,86,120,79,98,115,0,86,121,79,98,115,0,87,101,105,103,104,116,115,86,121,79,98,115,0,77,105,110,86,101,108,0,77,97,120,86,101,108,0,77,105,110,86,120,0,77,97,120,86,120,0,77,97,120,65,98,115,86,120,0,77,105,110,86,121,0,77,97,120,86,121,0,77,97,120,65,98,115,86,121,0,77,105,110,86,122,0,77,97,120,86,122,0,77,97,120,65,98,115,86,122,0,70,108,111,97,116,105,110,103,65,114,101,97,0,71,114,111,117,110,100,101,100,65,114,101,97,0,73,99,101,77,97,115,115,0,73,99,101,86,111,108,117,109,101,0,73,99,101,86,111,108,117,109,101,65,98,111,118,101,70,108,111,97,116,97,116,105,111,110,0,84,111,116,97,108,70,108,111,97,116,105,110,103,66,109,98,0,84,111,116,97,108,71,114,111,117,110,100,101,100,66,109,98,0,84,111,116,97,108,83,109,98,0,65,98,115,111,108,117,116,101,0,73,110,99,114,101,109,101,110,116,97,108,0,65,117,103,109,101,110,116,101,100,76,97,103,114,97,110,103,105,97,110,82,0,65,117,103,109,101,110,116,101,100,76,97,103,114,97,110,103,105,97,110,82,104,111,112,0,65,117,103,109,101,110,116,101,100,76,97,103,114,97,110,103,105,97,110,82,108,97,109,98,100,97,0,65,117,103,109,101,110,116,101,100,76,97,103,114,97,110,103,105,97,110,82,104,111,108,97,109,98,100,97,0,65,117,103,109,101,110,116,101,100,76,97,103,114,97,110,103,105,97,110,84,104,101,116,97,0,78,111,110,101,0,65,103,103,114,101,115,115,105,118,101,77,105,103,114,97,116,105,111,110,0,83,111,102,116,77,105,103,114,97,116,105,111,110,0,83,117,98,101,108,101,109,101,110,116,77,105,103,114,97,116,105,111,110,0,83,117,98,101,108,101,109,101,110,116,77,105,103,114,97,116,105,111,110,50,0,67,111,110,116,97,99,116,0,71,114,111,117,110,100,105,110,103,79,110,108,121,0,77,97,115,107,71,114,111,117,110,100,101,100,105,99,101,76,101,118,101,108,115,101,116,0,71,97,117,115,115,83,101,103,0,70,83,83,111,108,118,101,114,0,65,100,106,111,105,110,116,0,67,111,108,105,110,101,97,114,0,67,111,110,116,114,111,108,83,116,101,97,100,121,0,70,115,101,116,0,71,114,97,100,105,101,110,116,49,0,71,114,97,100,105,101,110,116,50,0,71,114,97,100,105,101,110,116,51,0,71,114,97,100,105,101,110,116,0,71,114,111,117,110,100,105,110,103,108,105,110,101,77,105,103,114,97,116,105,111,110,0,71,115,101,116,0,73,110,100,101,120,0,73,110,100,101,120,101,100,0,73,110,116,101,114,115,101,99,116,0,78,111,100,97,108,0,79,108,100,71,114,97,100,105,101,110,116,0,79,117,116,112,117,116,66,117,102,102,101,114,80,111,105,110,116,101,114,0,79,117,116,112,117,116,66,117,102,102,101,114,83,105,122,101,80,111,105,110,116,101,114,0,79,117,116,112,117,116,70,105,108,101,80,111,105,110,116,101,114,0,84,111,111,108,107,105,116,115,70,105,108,101,78,97,109,101,0,82,111,111,116,80,97,116,104,0,79,117,116,112,117,116,70,105,108,101,78,97,109,101,0,73,110,112,117,116,70,105,108,101,78,97,109,101,0,76,111,99,107,70,105,108,101,78,97,109,101,0,82,101,115,116,97,114,116,70,105,108,101,78,97,109,101,0,84,111,111,108,107,105,116,115,79,112,116,105,111,110,115,65,110,97,108,121,115,101,115,0,84,111,111,108,107,105,116,115,79,112,116,105,111,110,115,83,116,114,105,110,103,115,0,81,109,117,69,114,114,78,97,109,101,0,81,109,117,73,110,78,97,109,101,0,81,109,117,79,117,116,78,97,109,101,0,82,101,103,117,108,97,114,0,83,99,97,108,101,100,0,83,101,112,97,114,97,116,101,0,83,115,101,116,0,86,101,114,98,111,115,101,0,84,114,105,97,110,103,108,101,73,110,116,101,114,112,0,66,105,108,105,110,101,97,114,73,110,116,101,114,112,0,78,101,97,114,101,115,116,73,110,116,101,114,112,0,88,89,0,88,89,90,0,68,101,110,115,101,0,77,112,105,68,101,110,115,101,0,77,112,105,83,112,97,114,115,101,0,83,101,113,0,77,112,105,0,77,117,109,112,115,0,71,115,108,0,79,112,116,105,111,110,0,71,101,110,101,114,105,99,79,112,116,105,111,110,0,79,112,116,105,111,110,67,101,108,108,0,79,112,116,105,111,110,83,116,114,117,99,116,0,67,117,102,102,101,121,0,66,117,100,100,74,97,99,107,97,0,67,117,102,102,101,121,84,101,109,112,101,114,97,116,101,0,80,97,116,101,114,115,111,110,0,65,114,114,104,101,110,105,117,115,0,76,108,105,98,111,117,116,114,121,68,117,118,97,108,0,83,112,99,108,101,118,101,108,115,101,116,0,69,120,116,114,97,112,111,108,97,116,105,111,110,86,97,114,105,97,98,108,101,0,73,99,101,77,97,115,107,78,111,100,101,65,99,116,105,118,97,116,105,111,110,0,76,101,118,101,108,115,101,116,102,117,110,99,116,105,111,110,83,108,111,112,101,88,0,76,101,118,101,108,115,101,116,102,117,110,99,116,105,111,110,83,108,111,112,101,89,0,76,101,118,101,108,115,101,116,102,117,110,99,116,105,111,110,80,105,99,97,114,100,0,76,101,118,101,108,115,101,116,82,101,105,110,105,116,70,114,101,113,117,101,110,99,121,0,83,101,97,108,101,118,101,108,114,105,115,101,83,111,108,117,116,105,111,110,0,83,101,97,108,101,118,101,108,114,105,115,101,65,110,97,108,121,115,105,115,0,83,101,97,108,101,118,101,108,0,83,101,97,108,101,118,101,108,69,117,115,116,97,116,105,99,0,83,101,97,108,101,118,101,108,114,105,115,101,68,101,108,116,97,116,104,105,99,107,110,101,115,115,0,83,101,97,108,101,118,101,108,114,105,115,101,77,97,120,105,116,101,114,0,83,101,97,108,101,118,101,108,114,105,115,101,82,101,108,116,111,108,0,83,101,97,108,101,118,101,108,114,105,115,101,65,98,115,116,111,108,0,83,101,97,108,101,118,101,108,114,105,115,101,76,111,118,101,72,0,83,101,97,108,101,118,101,108,114,105,115,101,76,111,118,101,75,0,83,101,97,108,101,118,101,108,114,105,115,101,84,105,100,101,76,111,118,101,72,0,83,101,97,108,101,118,101,108,114,105,115,101,84,105,100,101,76,111,118,101,75,0,83,101,97,108,101,118,101,108,114,105,115,101,82,105,103,105,100,0,83,101,97,108,101,118,101,108,114,105,115,101,69,108,97,115,116,105,99,0,83,101,97,108,101,118,101,108,114,105,115,101,82,111,116,97,116,105,111,110,0,83,101,97,108,101,118,101,108,114,105,115,101,71,69,108,97,115,116,105,99,0,83,101,97,108,101,118,101,108,114,105,115,101,68,101,103,97,99,99,0,83,101,97,108,101,118,101,108,114,105,115,101,84,114,97,110,115,105,116,105,111,110,115,0,83,101,97,108,101,118,101,108,114,105,115,101,82,101,113,117,101,115,116,101,100,79,117,116,112,117,116,115,0,83,101,97,108,101,118,101,108,114,105,115,101,78,117,109,82,101,113,117,101,115,116,101,100,79,117,116,112,117,116,115,0,80,97,114,97,109,101,116,101,114,115,69,78,68,0,77,97,120,105,109,117,109,78,117,109,98,101,114,79,102,68,101,102,105,110,105,116,105,111,110,115,0,69,110,117,109,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,115,104,97,114,101,100,47,69,110,117,109,47,83,116,114,105,110,103,84,111,69,110,117,109,120,46,99,112,112,0,83,116,114,105,110,103,84,111,69,110,117,109,120,0,118,101,98,111,115,105,116,121,32,108,101,118,101,108,32,115,104,111,117,108,100,32,98,101,32,97,32,112,111,115,105,116,105,118,101,32,105,110,116,101,103,101,114,32,40,117,115,101,114,32,112,114,111,118,105,100,101,100,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,115,104,97,114,101,100,47,78,117,109,101,114,105,99,115,47,86,101,114,98,111,115,105,116,121,46,99,112,112,0,83,101,116,86,101,114,98,111,115,105,116,121,76,101,118,101,108,0,49,52,69,114,114,111,114,69,120,99,101,112,116,105,111,110,0,69,114,114,111,114,32,109,101,115,115,97,103,101,58,32,0,10,63,63,63,32,69,114,114,111,114,32,105,110,32,61,61,62,32,0,58,0,32,101,114,114,111,114,32,109,101,115,115,97,103,101,58,32,0,10,10,0,10,91,0,93,32,63,63,63,32,69,114,114,111,114,32,117,115,105,110,103,32,61,61,62,32,0,91,0,93,32,0,10,69,114,114,111,114,32,105,110,32,61,61,62,32,0,109,97,116,95,116,121,112,101,0,109,112,105,100,101,110,115,101,0,109,112,105,115,112,97,114,115,101,0,100,101,110,115,101,0,68,101,110,115,101,32,109,97,116,114,105,120,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,112,97,114,97,108,108,101,108,32,114,117,110,115,32,119,105,116,104,32,110,117,109,95,112,114,111,99,115,62,49,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,116,111,111,108,107,105,116,115,47,105,115,115,109,47,73,115,115,109,84,111,111,108,107,105,116,85,116,105,108,115,46,99,112,112,0,73,115,115,109,77,97,116,84,121,112,101,70,114,111,109,84,111,111,108,107,105,116,79,112,116,105,111,110,115,0,118,101,99,95,116,121,112,101,0,109,112,105,0,115,101,113,0,68,101,110,115,101,32,118,101,99,116,111,114,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,112,97,114,97,108,108,101,108,32,114,117,110,115,32,119,105,116,104,32,110,117,109,95,112,114,111,99,115,62,49,0,73,115,115,109,86,101,99,84,121,112,101,70,114,111,109,84,111,111,108,107,105,116,79,112,116,105,111,110,115,0,48,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,116,111,111,108,107,105,116,115,47,109,112,105,47,105,115,115,109,109,112,105,46,99,112,112,0,115,105,122,101,72,101,108,112,101,114,0,115,101,110,100,99,111,117,110,116,61,61,114,101,99,118,99,111,117,110,116,32,124,124,32,115,101,110,100,116,121,112,101,61,61,114,101,99,118,116,121,112,101,0,73,83,83,77,95,77,80,73,95,65,108,108,103,97,116,104,101,114,0,115,101,110,100,116,121,112,101,61,61,114,101,99,118,116,121,112,101,0,73,83,83,77,95,77,80,73,95,65,108,108,103,97,116,104,101,114,118,0,115,101,110,100,99,111,117,110,116,61,61,114,101,99,118,99,111,117,110,116,115,91,48,93,0,115,101,110,100,116,121,112,101,61,61,114,101,99,118,116,121,112,101,32,38,38,32,115,101,110,100,99,110,116,61,61,114,101,99,118,99,110,116,0,73,83,83,77,95,77,80,73,95,71,97,116,104,101,114,0,116,111,111,108,107,105,116,0,116,111,107,101,110,32,108,105,115,116,32,115,104,111,117,108,100,32,115,116,97,114,116,32,119,105,116,104,32,97,110,32,111,112,116,105,111,110,44,32,110,111,116,32,97,32,118,97,108,117,101,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,116,111,111,108,107,105,116,115,47,84,111,111,108,107,105,116,79,112,116,105,111,110,115,46,99,112,112,0,84,111,107,101,110,86,97,108,117,101,0,109,100,46,118,101,114,98,111,115,101,0,32,32,32,115,116,97,114,116,105,110,103,32,109,111,100,101,108,32,112,114,111,99,101,115,115,111,114,32,10,0,32,32,32,99,114,101,97,116,105,110,103,32,100,97,116,97,115,101,116,115,32,102,111,114,32,97,110,97,108,121,115,105,115,32,0,32,32,32,100,111,110,101,32,119,105,116,104,32,109,111,100,101,108,32,112,114,111,99,101,115,115,111,114,32,10,0,109,100,46,109,101,115,104,46,101,108,101,109,101,110,116,115,50,100,0,109,100,46,109,101,115,104,46,110,117,109,98,101,114,111,102,101,108,101,109,101,110,116,115,50,100,0,109,100,46,109,101,115,104,46,110,117,109,98,101,114,111,102,118,101,114,116,105,99,101,115,50,100,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,69,108,101,109,101,110,116,115,65,110,100,86,101,114,116,105,99,101,115,80,97,114,116,105,116,105,111,110,105,110,103,46,99,112,112,0,69,108,101,109,101,110,116,115,65,110,100,86,101,114,116,105,99,101,115,80,97,114,116,105,116,105,111,110,105,110,103,0,109,101,116,105,115,32,104,97,115,32,110,111,116,32,98,101,101,100,32,105,110,115,116,97,108,108,101,100,46,32,67,97,110,110,111,116,32,114,117,110,32,119,105,116,104,32,109,111,114,101,32,116,104,97,110,32,49,32,99,112,117,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,46,46,47,77,101,115,104,80,97,114,116,105,116,105,111,110,120,47,77,101,115,104,80,97,114,116,105,116,105,111,110,120,46,104,0,77,101,115,104,80,97,114,116,105,116,105,111,110,120,0,65,116,32,108,101,97,115,116,32,111,110,101,32,112,114,111,99,101,115,115,111,114,32,105,115,32,114,101,113,117,105,114,101,100,0,109,100,46,115,101,116,116,105,110,103,115,46,111,117,116,112,117,116,95,102,114,101,113,117,101,110,99,121,0,109,100,46,115,101,116,116,105,110,103,115,46,114,101,99,111,114,100,105,110,103,95,102,114,101,113,117,101,110,99,121,0,109,100,46,99,111,110,115,116,97,110,116,115,46,121,116,115,0,109,100,46,116,105,109,101,115,116,101,112,112,105,110,103,46,115,116,97,114,116,95,116,105,109,101,0,109,100,46,116,105,109,101,115,116,101,112,112,105,110,103,46,102,105,110,97,108,95,116,105,109,101,0,109,100,46,116,105,109,101,115,116,101,112,112,105,110,103,46,116,105,109,101,95,97,100,97,112,116,0,109,100,46,116,105,109,101,115,116,101,112,112,105,110,103,46,116,105,109,101,95,115,116,101,112,0,109,100,46,116,105,109,101,115,116,101,112,112,105,110,103,46,99,102,108,95,99,111,101,102,102,105,99,105,101,110,116,0,109,100,46,115,101,116,116,105,110,103,115,46,108,111,119,109,101,109,0,109,100,46,100,101,98,117,103,46,112,114,111,102,105,108,105,110,103,0,109,100,46,109,101,115,104,46,97,118,101,114,97,103,101,95,118,101,114,116,101,120,95,99,111,110,110,101,99,116,105,118,105,116,121,0,109,100,46,115,101,116,116,105,110,103,115,46,119,97,105,116,111,110,108,111,99,107,0,109,100,46,115,101,116,116,105,110,103,115,46,114,101,115,117,108,116,115,95,111,110,95,110,111,100,101,115,0,109,100,46,115,101,116,116,105,110,103,115,46,105,111,95,103,97,116,104,101,114,0,109,100,46,115,116,101,97,100,121,115,116,97,116,101,46,114,101,108,116,111,108,0,109,100,46,115,116,101,97,100,121,115,116,97,116,101,46,109,97,120,105,116,101,114,0,109,100,46,103,114,111,117,110,100,105,110,103,108,105,110,101,46,109,105,103,114,97,116,105,111,110,0,109,100,46,116,114,97,110,115,105,101,110,116,46,105,115,115,116,114,101,115,115,98,97,108,97,110,99,101,0,109,100,46,116,114,97,110,115,105,101,110,116,46,105,115,109,97,115,115,116,114,97,110,115,112,111,114,116,0,109,100,46,116,114,97,110,115,105,101,110,116,46,105,115,116,104,101,114,109,97,108,0,109,100,46,116,114,97,110,115,105,101,110,116,46,105,115,103,105,97,0,109,100,46,116,114,97,110,115,105,101,110,116,46,105,115,100,97,109,97,103,101,101,118,111,108,117,116,105,111,110,0,109,100,46,116,114,97,110,115,105,101,110,116,46,105,115,104,121,100,114,111,108,111,103,121,0,109,100,46,116,114,97,110,115,105,101,110,116,46,105,115,115,108,114,0,109,100,46,116,114,97,110,115,105,101,110,116,46,105,115,99,111,117,112,108,101,114,0,109,100,46,109,97,116,101,114,105,97,108,115,46,114,104,101,111,108,111,103,121,95,108,97,119,0,109,100,46,103,105,97,46,99,114,111,115,115,95,115,101,99,116,105,111,110,95,115,104,97,112,101,0,109,100,46,109,101,115,104,46,110,117,109,98,101,114,111,102,108,97,121,101,114,115,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,100,101,101,112,119,97,116,101,114,95,109,101,108,116,105,110,103,95,114,97,116,101,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,100,101,101,112,119,97,116,101,114,95,101,108,101,118,97,116,105,111,110,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,117,112,112,101,114,119,97,116,101,114,95,101,108,101,118,97,116,105,111,110,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,109,101,108,116,114,97,116,101,95,102,97,99,116,111,114,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,116,104,114,101,115,104,111,108,100,95,116,104,105,99,107,110,101,115,115,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,117,112,112,101,114,100,101,112,116,104,95,109,101,108,116,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,109,97,110,116,108,101,99,111,110,100,117,99,116,105,118,105,116,121,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,110,117,115,115,101,108,116,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,100,116,98,103,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,112,108,117,109,101,114,97,100,105,117,115,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,116,111,112,112,108,117,109,101,100,101,112,116,104,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,98,111,116,116,111,109,112,108,117,109,101,100,101,112,116,104,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,112,108,117,109,101,120,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,112,108,117,109,101,121,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,99,114,117,115,116,116,104,105,99,107,110,101,115,115,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,117,112,112,101,114,99,114,117,115,116,116,104,105,99,107,110,101,115,115,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,117,112,112,101,114,99,114,117,115,116,104,101,97,116,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,108,111,119,101,114,99,114,117,115,116,104,101,97,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,67,114,101,97,116,101,80,97,114,97,109,101,116,101,114,115,46,99,112,112,0,67,114,101,97,116,101,80,97,114,97,109,101,116,101,114,115,0,109,100,46,116,114,97,110,115,105,101,110,116,46,114,101,113,117,101,115,116,101,100,95,111,117,116,112,117,116,115,0,109,100,46,115,116,101,97,100,121,115,116,97,116,101,46,114,101,113,117,101,115,116,101,100,95,111,117,116,112,117,116,115,0,109,100,46,113,109,117,46,109,97,115,115,95,102,108,117,120,95,115,101,103,109,101,110,116,115,95,112,114,101,115,101,110,116,0,109,100,46,97,117,116,111,100,105,102,102,46,109,97,115,115,95,102,108,117,120,95,115,101,103,109,101,110,116,115,95,112,114,101,115,101,110,116,0,109,100,46,113,109,117,46,109,97,115,115,95,102,108,117,120,95,115,101,103,109,101,110,116,115,0,109,97,115,115,95,102,108,117,120,95,110,117,109,95,112,114,111,102,105,108,101,115,32,105,115,32,48,44,32,119,104,101,110,32,77,97,115,115,70,108,117,120,32,99,111,109,112,117,116,97,116,105,111,110,115,32,119,101,114,101,32,114,101,113,117,101,115,116,101,100,33,0,109,100,46,109,101,115,104,46,117,112,112,101,114,101,108,101,109,101,110,116,115,0,109,100,46,109,101,115,104,46,108,111,119,101,114,101,108,101,109,101,110,116,115,0,77,101,115,104,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,67,114,101,97,116,101,69,108,101,109,101,110,116,115,86,101,114,116,105,99,101,115,65,110,100,77,97,116,101,114,105,97,108,115,46,99,112,112,0,67,114,101,97,116,101,69,108,101,109,101,110,116,115,86,101,114,116,105,99,101,115,65,110,100,77,97,116,101,114,105,97,108,115,0,109,100,46,109,97,116,101,114,105,97,108,115,46,114,104,101,111,108,111,103,121,95,107,111,0,109,100,46,109,97,116,101,114,105,97,108,115,46,114,104,101,111,108,111,103,121,95,69,99,0,109,100,46,109,97,116,101,114,105,97,108,115,46,114,104,101,111,108,111,103,121,95,69,115,0,77,97,116,101,114,105,97,108,115,32,0,109,100,46,109,97,116,101,114,105,97,108,46,114,104,101,111,108,111,103,121,95,66,0,109,100,46,109,97,116,101,114,105,97,108,46,114,104,101,111,108,111,103,121,95,110,0,109,100,46,109,101,115,104,46,120,0,109,100,46,109,101,115,104,46,121,0,109,100,46,109,101,115,104,46,108,97,116,0,109,100,46,109,101,115,104,46,108,111,110,103,0,109,100,46,109,101,115,104,46,114,0,80,69,84,83,99,32,111,112,116,105,111,110,115,32,102,111,114,32,97,110,97,108,121,115,105,115,32,0,32,104,97,118,101,32,98,101,101,110,32,100,101,99,108,97,114,101,100,32,98,117,116,32,119,101,114,101,32,110,111,116,32,102,111,117,110,100,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,80,97,114,115,101,84,111,111,108,107,105,116,115,79,112,116,105,111,110,115,120,47,80,97,114,115,101,84,111,111,108,107,105,116,115,79,112,116,105,111,110,115,120,46,99,112,112,0,80,97,114,115,101,84,111,111,108,107,105,116,115,79,112,116,105,111,110,115,120,0,32,32,32,82,101,110,117,109,98,101,114,105,110,103,32,100,101,103,114,101,101,115,32,111,102,32,102,114,101,101,100,111,109,10,0,99,111,117,108,100,32,110,111,116,32,102,105,110,100,32,101,108,101,109,101,110,116,32,119,105,116,104,32,118,101,114,116,101,120,32,119,105,116,104,32,105,100,32,0,32,116,111,32,99,111,109,112,117,116,101,32,110,111,100,97,108,32,118,97,108,117,101,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,78,111,100,97,108,86,97,108,117,101,120,47,78,111,100,97,108,86,97,108,117,101,120,46,99,112,112,0,78,111,100,97,108,86,97,108,117,101,120,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,79,117,116,112,117,116,82,101,115,117,108,116,115,120,47,46,46,47,46,46,47,99,108,97,115,115,101,115,47,46,46,47,115,104,97,114,101,100,47,46,47,77,101,109,79,112,115,47,77,101,109,79,112,115,46,104,0,119,98,0,37,115,46,37,105,0,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,116,104,105,115,32,116,121,112,101,32,111,102,32,114,101,115,117,108,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,79,117,116,112,117,116,82,101,115,117,108,116,115,120,47,46,46,47,46,46,47,99,108,97,115,115,101,115,47,46,47,69,120,116,101,114,110,97,108,82,101,115,117,108,116,115,47,71,101,110,101,114,105,99,69,120,116,101,114,110,97,108,82,101,115,117,108,116,46,104,0,71,101,116,86,97,108,117,101,0,71,101,110,101,114,105,99,69,120,116,101,114,110,97,108,82,101,115,117,108,116,60,99,104,97,114,42,62,58,10,0,32,32,32],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+98792);allocate([118,97,108,117,101,58,32,0,32,32,32,105,100,32,32,32,32,32,32,32,32,32,32,58,32,0,32,32,32,114,101,115,117,108,116,95,110,97,109,101,32,58,32,0,32,32,32,115,116,101,112,32,32,32,32,32,32,32,32,58,32,0,32,32,32,116,105,109,101,32,32,32,32,32,32,32,32,58,32,0,50,49,71,101,110,101,114,105,99,69,120,116,101,114,110,97,108,82,101,115,117,108,116,73,80,99,69,0,73,110,112,117,116,32,0,32,110,111,116,32,102,111,117,110,100,32,105,110,32,101,108,101,109,101,110,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,83,101,116,65,99,116,105,118,101,78,111,100,101,115,76,83,77,120,47,83,101,116,65,99,116,105,118,101,78,111,100,101,115,76,83,77,120,46,99,112,112,0,83,101,116,65,99,116,105,118,101,78,111,100,101,115,76,83,77,120,0,118,101,99,116,111,114,32,116,121,112,101,58,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,71,101,116,86,101,99,116,111,114,70,114,111,109,73,110,112,117,116,115,120,47,71,101,116,86,101,99,116,111,114,70,114,111,109,73,110,112,117,116,115,120,46,99,112,112,0,71,101,116,86,101,99,116,111,114,70,114,111,109,73,110,112,117,116,115,120,0,32,32,32,32,32,32,67,111,110,102,105,103,117,114,105,110,103,32,101,108,101,109,101,110,116,115,46,46,46,10,0,32,32,32,32,32,32,67,111,110,102,105,103,117,114,105,110,103,32,108,111,97,100,115,46,46,46,10,0,32,32,32,32,32,32,67,111,110,102,105,103,117,114,105,110,103,32,109,97,116,101,114,105,97,108,115,46,46,46,10,0,116,111,112,32,103,114,105,100,32,99,101,108,108,32,115,116,114,117,99,116,117,114,101,32,108,101,110,103,116,104,32,100,111,101,115,32,110,111,116,32,103,111,32,101,118,101,110,108,121,32,105,110,116,111,32,115,112,101,99,105,102,105,101,100,32,116,111,112,32,115,116,114,117,99,116,117,114,101,32,100,101,112,116,104,44,32,97,100,106,117,115,116,32,100,122,84,111,112,32,111,114,32,122,84,111,112,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,83,117,114,102,97,99,101,77,97,115,115,66,97,108,97,110,99,101,120,47,71,101,109,98,120,46,99,112,112,0,71,101,109,98,103,114,105,100,73,110,105,116,105,97,108,105,122,101,0,105,110,105,116,105,97,108,32,116,111,112,32,103,114,105,100,32,99,101,108,108,32,108,101,110,103,116,104,32,40,100,122,84,111,112,41,32,105,115,32,60,32,48,46,48,53,32,109,0,32,32,32,103,114,97,105,110,32,103,114,111,119,116,104,32,109,111,100,117,108,101,10,0,32,32,32,97,108,98,101,100,111,32,109,111,100,117,108,101,10,0,97,108,98,101,100,111,32,109,101,116,104,111,100,32,115,119,105,116,99,104,32,115,104,111,117,108,100,32,114,97,110,103,101,32,102,114,111,109,32,49,32,116,111,32,52,33,0,97,108,98,101,100,111,0,97,108,98,101,100,111,32,62,32,49,46,48,10,0,97,108,98,101,100,111,32,105,115,32,110,101,103,97,116,105,118,101,10,0,97,108,98,101,100,111,32,61,61,32,78,65,78,10,0,32,32,32,116,104,101,114,109,97,108,32,109,111,100,117,108,101,10,0,32,32,32,115,104,111,114,116,119,97,118,101,32,109,111,100,117,108,101,10,0,32,32,32,97,99,99,117,109,117,108,97,116,105,111,110,32,109,111,100,117,108,101,10,0,109,97,115,115,32,110,111,116,32,99,111,110,115,101,114,118,101,100,32,105,110,32,97,99,99,117,109,117,108,97,116,105,111,110,32,102,117,110,99,116,105,111,110,0,97,99,99,117,109,117,108,97,116,105,111,110,0,32,32,32,109,101,108,116,32,109,111,100,117,108,101,10,0,32,32,32,32,32,32,112,111,114,101,32,119,97,116,101,114,32,114,101,102,114,101,101,122,101,10,0,110,101,103,97,116,105,118,101,32,112,111,114,101,32,119,97,116,101,114,32,103,101,110,101,114,97,116,101,100,32,105,110,32,109,101,108,116,32,101,113,117,97,116,105,111,110,115,0,109,101,108,116,0,110,101,103,97,116,105,118,101,32,112,111,114,101,32,119,97,116,101,114,32,103,101,110,101,114,97,116,101,100,32,105,110,32,109,101,108,116,32,101,113,117,97,116,105,111,110,115,10,0,109,97,115,115,32,111,114,32,101,110,101,114,103,121,32,97,114,101,32,110,111,116,32,99,111,110,115,101,114,118,101,100,32,105,110,32,109,101,108,116,32,101,113,117,97,116,105,111,110,115,10,0,100,109,58,32,0,32,100,69,58,32,0,32,32,32,100,101,110,115,105,102,105,99,97,116,105,111,110,32,109,111,100,117,108,101,10,0,32,32,32,116,117,114,98,117,108,101,110,116,70,108,117,120,32,109,111,100,117,108,101,10,0,73,83,83,77,32,119,97,115,32,110,111,116,32,99,111,109,112,105,108,101,100,32,119,105,116,104,32,100,97,107,111,116,97,32,115,117,112,112,111,114,116,44,32,99,97,110,110,111,116,32,99,97,114,114,121,32,111,117,116,32,100,97,107,111,116,97,32,97,110,97,108,121,115,105,115,33,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,111,114,101,115,47,87,114,97,112,112,101,114,67,111,114,101,80,111,105,110,116,101,114,70,114,111,109,83,111,108,117,116,105,111,110,69,110,117,109,46,99,112,112,0,87,114,97,112,112,101,114,67,111,114,101,80,111,105,110,116,101,114,70,114,111,109,83,111,108,117,116,105,111,110,69,110,117,109,0,99,111,110,116,114,111,108,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,115,111,108,117,116,105,111,110,32,116,121,112,101,58,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,111,114,101,115,47,67,111,114,101,80,111,105,110,116,101,114,70,114,111,109,83,111,108,117,116,105,111,110,69,110,117,109,46,99,112,112,0,67,111,114,101,80,111,105,110,116,101,114,70,114,111,109,83,111,108,117,116,105,111,110,69,110,117,109,0,83,104,111,117,108,100,32,110,111,116,32,98,101,32,114,101,113,117,101,115,116,105,110,103,32,65,68,32,100,114,105,118,101,114,115,32,119,104,101,110,32,97,110,32,65,68,32,108,105,98,114,97,114,121,32,105,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,33,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,111,114,101,115,47,97,100,95,99,111,114,101,46,99,112,112,0,97,100,95,99,111,114,101,0,37,115,32,118,101,114,115,105,111,110,32,32,37,115,10,0,73,99,101,32,83,104,101,101,116,32,83,121,115,116,101,109,32,77,111,100,101,108,32,40,73,83,83,77,41,0,52,46,57,0,40,119,101,98,115,105,116,101,58,32,37,115,32,99,111,110,116,97,99,116,58,32,37,115,41,10,0,104,116,116,112,58,47,47,105,115,115,109,46,106,112,108,46,110,97,115,97,46,103,111,118,0,105,115,115,109,64,106,112,108,46,110,97,115,97,46,103,111,118,0,99,108,111,115,105,110,103,32,77,80,73,0,101,110,117,109,32,112,114,111,118,105,100,101,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,40,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,69,110,117,109,84,111,65,110,97,108,121,115,105,115,46,99,112,112,0,69,110,117,109,84,111,65,110,97,108,121,115,105,115,0,105,110,112,117,116,32,111,112,116,105,111,110,32,104,97,115,32,97,110,32,101,109,112,116,121,32,110,97,109,101,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,79,112,116,105,111,110,115,47,79,112,116,105,111,110,115,46,99,112,112,0,65,100,100,79,112,116,105,111,110,0,79,112,116,105,111,110,32,34,0,34,32,104,97,115,32,97,32,112,114,111,116,101,99,116,101,100,32,99,104,97,114,97,99,116,101,114,32,34,46,34,0,34,32,104,97,115,32,97,32,112,114,111,116,101,99,116,101,100,32,99,104,97,114,97,99,116,101,114,32,34,91,34,0,34,32,104,97,115,32,97,32,112,114,111,116,101,99,116,101,100,32,99,104,97,114,97,99,116,101,114,32,34,93,34,0,79,112,116,105,111,110,115,32,34,0,34,32,102,111,117,110,100,32,109,117,108,116,105,112,108,101,32,116,105,109,101,115,0,84,104,101,32,100,121,110,97,109,105,99,95,99,97,115,116,32,102,114,111,109,32,79,98,106,101,99,116,42,32,116,111,32,79,112,116,105,111,110,42,32,105,115,32,102,97,105,108,105,110,103,46,10,0,65,32,113,117,105,99,107,32,113,111,114,107,97,114,111,117,110,100,32,99,111,110,115,105,115,116,115,32,111,102,32,117,115,105,110,103,32,97,32,67,45,108,105,107,101,32,99,97,115,116,10,0,79,112,101,110,32,79,112,116,105,111,110,115,46,99,112,112,32,97,110,100,32,99,104,97,110,103,101,32,116,104,101,32,100,121,110,97,109,105,99,95,99,97,115,116,32,105,110,32,79,112,116,105,111,110,115,58,58,71,101,116,79,112,116,105,111,110,32,98,121,32,97,32,67,45,108,105,107,101,32,99,97,115,116,10,0,77,97,107,101,32,116,104,101,32,102,105,120,32,97,98,111,118,101,32,97,110,100,32,114,101,99,111,109,112,105,108,101,32,73,83,83,77,0,71,101,116,79,112,116,105,111,110,0,67,97,110,110,111,116,32,114,101,99,111,118,101,114,32,102,105,101,108,100,32,34,0,34,32,102,111,114,32,97,110,32,111,112,116,105,111,110,32,111,102,32,116,121,112,101,32,0,37,100,93,0,37,100,120,0,109,100,46,103,101,111,109,101,116,114,121,46,98,101,100,0,105,116,101,114,97,116,105,111,110,32,0,32,32,116,105,109,101,32,91,121,114,93,58,32,0,32,40,116,105,109,101,32,115,116,101,112,58,32,0,32,32,32,99,111,109,112,117,116,105,110,103,32,116,104,101,114,109,97,108,32,114,101,103,105,109,101,10,0,32,32,32,99,111,109,112,117,116,105,110,103,32,110,101,119,32,103,114,111,117,110,100,105,110,103,32,108,105,110,101,32,112,111,115,105,116,105,111,110,10,0,32,32,32,99,111,109,112,117,116,105,110,103,32,103,108,97,99,105,97,108,32,105,115,111,115,116,97,116,105,99,32,97,100,106,117,115,116,109,101,110,116,10,0,32,32,32,99,111,109,112,117,116,105,110,103,32,114,101,113,117,101,115,116,101,100,32,111,117,116,112,117,116,115,10,0,32,32,32,99,104,101,99,107,112,111,105,110,116,105,110,103,32,109,111,100,101,108,32,10,0,10,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,10,0,32,32,32,99,111,109,112,117,116,105,110,103,32,118,101,108,111,99,105,116,121,32,97,110,100,32,116,101,109,112,101,114,97,116,117,114,101,32,102,111,114,32,115,116,101,112,58,32,0,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,10,0,10,32,32,32,45,45,32,99,111,109,112,117,116,105,110,103,32,110,101,119,32,118,101,108,111,99,105,116,121,32,45,45,32,10,10,0,10,32,32,32,45,45,32,99,111,109,112,117,116,105,110,103,32,110,101,119,32,116,101,109,112,101,114,97,116,117,114,101,32,45,45,10,10,0,32,32,32,99,104,101,99,107,105,110,103,32,115,116,101,97,100,121,115,116,97,116,101,32,99,111,110,118,101,114,103,101,110,99,101,10,0,32,32,32,109,97,120,105,109,117,109,32,110,117,109,98,101,114,32,115,116,101,97,100,121,115,116,97,116,101,32,105,116,101,114,97,116,105,111,110,115,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,111,114,101,115,47,115,116,101,97,100,121,115,116,97,116,101,95,99,111,114,101,46,99,112,112,0,115,116,101,97,100,121,115,116,97,116,101,99,111,110,118,101,114,103,101,110,99,101,0,32,32,32,84,101,109,112,101,114,97,116,117,114,101,32,99,111,110,118,101,114,103,101,110,99,101,58,32,110,111,114,109,40,100,116,41,47,110,111,114,109,40,116,41,0,32,32,32,99,111,109,112,117,116,105,110,103,32,109,97,115,115,32,116,114,97,110,115,112,111,114,116,10,0,32,32,32,99,97,108,108,32,102,114,101,101,32,115,117,114,102,97,99,101,32,99,111,109,112,117,116,97,116,105,111,110,97,108,32,99,111,114,101,10,0,32,32,32,99,97,108,108,32,99,111,109,112,117,116,97,116,105,111,110,97,108,32,99,111,114,101,10,0,101,120,116,114,117,100,105,110,103,32,115,111,108,117,116,105,111,110,32,102,114,111,109,32,98,97,115,101,46,46,46,10,0,101,120,116,114,117,100,105,110,103,32,115,111,108,117,116,105,111,110,32,102,114,111,109,32,116,111,112,46,46,46,10,0,32,32,32,99,111,109,112,117,116,105,110,103,32,116,101,109,112,101,114,97,116,117,114,101,115,10,0,32,32,32,99,111,109,112,117,116,105,110,103,32,109,101,108,116,105,110,103,10,0,32,32,32,99,111,109,112,117,116,105,110,103,32,115,109,98,32,10,0,109,100,46,105,110,118,101,114,115,105,111,110,46,116,121,112,101,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,67,111,110,116,114,111,108,47,67,114,101,97,116,101,80,97,114,97,109,101,116,101,114,115,67,111,110,116,114,111,108,46,99,112,112,0,67,114,101,97,116,101,80,97,114,97,109,101,116,101,114,115,67,111,110,116,114,111,108,0,109,100,46,105,110,118,101,114,115,105,111,110,46,105,110,99,111,109,112,108,101,116,101,95,97,100,106,111,105,110,116,0,109,100,46,105,110,118,101,114,115,105,111,110,46,110,115,116,101,112,115,0,109,100,46,105,110,118,101,114,115,105,111,110,46,99,111,115,116,95,102,117,110,99,116,105,111,110,95,116,104,114,101,115,104,111,108,100,0,109,100,46,105,110,118,101,114,115,105,111,110,46,115,116,101,112,95,116,104,114,101,115,104,111,108,100,0,109,100,46,105,110,118,101,114,115,105,111,110,46,103,114,97,100,105,101,110,116,95,115,99,97,108,105,110,103,0,109,100,46,105,110,118,101,114,115,105,111,110,46,109,97,120,105,116,101,114,95,112,101,114,95,115,116,101,112,0,109,100,46,105,110,118,101,114,115,105,111,110,46,102,97,116,111,108,0,109,100,46,105,110,118,101,114,115,105,111,110,46,102,114,116,111,108,0,109,100,46,105,110,118,101,114,115,105,111,110,46,103,97,116,111,108,0,109,100,46,105,110,118,101,114,115,105,111,110,46,103,114,116,111,108,0,109,100,46,105,110,118,101,114,115,105,111,110,46,103,116,116,111,108,0,109,100,46,105,110,118,101,114,115,105,111,110,46,109,97,120,115,116,101,112,115,0,109,100,46,105,110,118,101,114,115,105,111,110,46,109,97,120,105,116,101,114,0,109,100,46,105,110,118,101,114,115,105,111,110,46,97,108,103,111,114,105,116,104,109,0,109,100,46,105,110,118,101,114,115,105,111,110,46,100,120,109,105,110,0,109,100,46,105,110,118,101,114,115,105,111,110,46,99,111,110,116,114,111,108,95,115,99,97,108,105,110,103,95,102,97,99,116,111,114,115,0,109,100,46,105,110,118,101,114,115,105,111,110,46,110,117,109,95,99,111,110,116,114,111,108,95,112,97,114,97,109,101,116,101,114,115,0,109,100,46,105,110,118,101,114,115,105,111,110,46,99,111,110,116,114,111,108,95,112,97,114,97,109,101,116,101,114,115,0,110,111,32,99,111,110,116,114,111,108,115,32,102,111,117,110,100,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,67,111,110,116,114,111,108,47,85,112,100,97,116,101,69,108,101,109,101,110,116,115,65,110,100,77,97,116,101,114,105,97,108,115,67,111,110,116,114,111,108,46,99,112,112,0,85,112,100,97,116,101,69,108,101,109,101,110,116,115,65,110,100,77,97,116,101,114,105,97,108,115,67,111,110,116,114,111,108,0,109,100,46,105,110,118,101,114,115,105,111,110,46,99,111,115,116,95,102,117,110,99,116,105,111,110,115,0,109,100,46,105,110,118,101,114,115,105,111,110,46,99,111,115,116,95,102,117,110,99,116,105,111,110,115,95,99,111,101,102,102,105,99,105,101,110,116,115,0,109,100,46,105,110,118,101,114,115,105,111,110,46,109,105,110,95,112,97,114,97,109,101,116,101,114,115,0,109,100,46,105,110,118,101,114,115,105,111,110,46,109,97,120,95,112,97,114,97,109,101,116,101,114,115,0,109,100,46,105,110,118,101,114,115,105,111,110,46,110,117,109,95,99,111,115,116,95,102,117,110,99,116,105,111,110,115,0,109,100,46,105,110,118,101,114,115,105,111,110,46,116,104,105,99,107,110,101,115,115,95,111,98,115,0,109,100,46,105,110,118,101,114,115,105,111,110,46,115,117,114,102,97,99,101,95,111,98,115,0,109,100,46,105,110,118,101,114,115,105,111,110,46,118,120,95,111,98,115,0,109,100,46,105,110,118,101,114,115,105,111,110,46,118,121,95,111,98,115,0,109,100,46,98,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,46,97,112,112,97,114,101,110,116,95,109,97,115,115,98,97,108,97,110,99,101,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,83,117,114,102,97,99,101,65,98,115,86,101,108,77,105,115,102,105,116,120,47,83,117,114,102,97,99,101,65,98,115,86,101,108,77,105,115,102,105,116,120,46,99,112,112,0,83,117,114,102,97,99,101,65,98,115,86,101,108,77,105,115,102,105,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,83,117,114,102,97,99,101,82,101,108,86,101,108,77,105,115,102,105,116,120,47,83,117,114,102,97,99,101,82,101,108,86,101,108,77,105,115,102,105,116,120,46,99,112,112,0,83,117,114,102,97,99,101,82,101,108,86,101,108,77,105,115,102,105,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,83,117,114,102,97,99,101,76,111,103,86,101,108,77,105,115,102,105,116,120,47,83,117,114,102,97,99,101,76,111,103,86,101,108,77,105,115,102,105,116,120,46,99,112,112,0,83,117,114,102,97,99,101,76,111,103,86,101,108,77,105,115,102,105,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,83,117,114,102,97,99,101,76,111,103,86,120,86,121,77,105,115,102,105,116,120,47,83,117,114,102,97,99,101,76,111,103,86,120,86,121,77,105,115,102,105,116,120,46,99,112,112,0,83,117,114,102,97,99,101,76,111,103,86,120,86,121,77,105,115,102,105,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,83,117,114,102,97,99,101,65,118,101,114,97,103,101,86,101,108,77,105,115,102,105,116,120,47,83,117,114,102,97,99,101,65,118,101,114,97,103,101,86,101,108,77,105,115,102,105,116,120,46,99,112,112,0,83,117,114,102,97,99,101,65,118,101,114,97,103,101,86,101,108,77,105,115,102,105,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,68,114,97,103,67,111,101,102,102,105,99,105,101,110,116,65,98,115,71,114,97,100,105,101,110,116,120,47,68,114,97,103,67,111,101,102,102,105,99,105,101,110,116,65,98,115,71,114,97,100,105,101,110,116,120,46,99,112,112,0,68,114,97,103,67,111,101,102,102,105,99,105,101,110,116,65,98,115,71,114,97,100,105,101,110,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,82,104,101,111,108,111,103,121,66,98,97,114,65,98,115,71,114,97,100,105,101,110,116,120,47,82,104,101,111,108,111,103,121,66,98,97,114,65,98,115,71,114,97,100,105,101,110,116,120,46,99,112,112,0,82,104,101,111,108,111,103,121,66,98,97,114,65,98,115,71,114,97,100,105,101,110,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,82,104,101,111,108,111,103,121,66,65,98,115,71,114,97,100,105,101,110,116,120,47,82,104,101,111,108,111,103,121,66,65,98,115,71,114,97,100,105,101,110,116,120,46,99,112,112,0,82,104,101,111,108,111,103,121,66,65,98,115,71,114,97,100,105,101,110,116,0,49,50,67,111,110,116,114,111,108,73,110,112,117,116,0,73,110,112,117,116,32,111,102,32,69,110,117,109,32,0,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,32,98,121,32,67,111,110,116,114,111,108,73,110,112,117,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,67,111,110,116,114,111,108,73,110,112,117,116,46,99,112,112,0,67,111,110,116,114,111,108,73,110,112,117,116,0,67,111,110,116,114,111,108,73,110,112,117,116,58,10,0,32,32,32,67,111,110,116,114,111,108,73,110,112,117,116,32,0,45,45,45,118,97,108,117,101,115,58,32,10,0,45,45,45,115,97,118,101,100,118,97,108,117,101,115,58,32,10,0,45,45,45,109,105,110,118,97,108,117,101,115,58,32,10,0,45,45,45,109,97,120,118,97,108,117,101,115,58,32,10,0,45,45,45,103,114,97,100,105,101,110,116,58,32,10,0,32,110,111,116,32,102,111,117,110,100,0,109,111,114,101,32,116,104,97,110,32,51,32,99,111,110,116,114,111,108,115,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,32,40,71,114,97,100,105,101,110,116,32,0,32,119,97,115,32,114,101,113,117,101,115,116,101,100,41,46,32,69,110,117,109,68,101,102,105,110,105,116,105,111,110,115,46,104,32,110,101,101,100,115,32,116,111,32,98,101,32,117,112,100,97,116,101,100,46,0,83,101,116,71,114,97,100,105,101,110,116,0,86,97,108,117,101,115,32,111,102,32,0,83,97,118,101,86,97,108,117,101,0,103,114,97,100,105,101,110,116,0,68,97,116,97,32,0,71,101,116,86,101,99,116,111,114,70,114,111,109,73,110,112,117,116,115,0,71,114,97,100,105,101,110,116,32,111,102,32,0,85,112,100,97,116,101,86,97,108,117,101,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,46,46,47,46,47,73,110,112,117,116,115,47,67,111,110,116,114,111,108,73,110,112,117,116,46,104,0,82,101,115,117,108,116,84,111,80,97,116,99,104,0,83,99,97,108,101,0,77,97,120,0,77,105,110,65,98,115,0,77,97,120,65,98,115,0,73,110,102,105,110,105,116,121,78,111,114,109,0,67,111,110,115,116,114,97,105,110,77,105,110,0,83,113,117,97,114,101,77,105,110,0,67,104,97,110,103,101,69,110,117,109,0,32,32,32,112,114,101,112,97,114,105,110,103,32,105,110,105,116,105,97,108,32,115,111,108,117,116,105,111,110,10,0,32,32,32,112,114,101,112,97,114,105,110,103,32,102,105,110,97,108,32,115,111,108,117,116,105,111,110,10,0,108,111,119,101,114,98,111,117,110,100,0,117,112,112,101,114,98,111,117,110,100,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,111,114,101,115,47,46,46,47,116,111,111,108,107,105,116,115,47,46,47,111,98,106,101,99,116,115,47,46,46,47,105,115,115,109,47,46,46,47,46,46,47,115,104,97,114,101,100,47,46,47,77,101,109,79,112,115,47,77,101,109,79,112,115,46,104,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,111,114,101,115,47,99,111,110,116,114,111,108,95,99,111,114,101,46,99,112,112,0,70,111,114,109,70,117,110,99,116,105,111,110,0,102,40,120,41,32,61,32,0,32,32,124,32,32,0,84,65,79,32,110,111,116,32,105,110,115,116,97,108,108,101,100,32,111,114,32,80,69,84,83,99,32,118,101,114,115,105,111,110,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,111,114,101,115,47,99,111,110,116,114,111,108,116,97,111,95,99,111,114,101,46,99,112,112,0,99,111,110,116,114,111,108,116,97,111,95,99,111,114,101,0,65,68,32,97,110,100,47,111,114,32,77,49,81,78,51,32,110,111,116,32,105,110,115,116,97,108,108,101,100,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,111,114,101,115,47,99,111,110,116,114,111,108,97,100,95,99,111,114,101,46,99,112,112,0,99,111,110,116,114,111,108,97,100,95,99,111,114,101,0,77,49,81,78,51,32,110,111,116,32,105,110,115,116,97,108,108,101,100,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,111,114,101,115,47,99,111,110,116,114,111,108,109,49,113,110,51,95,99,111,114,101,46,99,112,112,0,99,111,110,116,114,111,108,109,49,113,110,51,95,99,111,114,101,0,118,97,108,117,101,0,32,32,32,67,111,109,112,117,116,101,32,73,110,105,116,105,97,108,32,115,111,108,117,116,105,111,110,10,0,32,32,32,67,111,109,112,117,116,101,32,65,100,106,111,105,110,116,10,0,32,32,32,67,111,109,112,117,116,101,32,73,110,105,116,105,97,108,32,99,111,115,116,32,102,117,110,99,116,105,111,110,10,0,73,110,105,116,105,97,108,32,99,111,115,116,32,102,117,110,99,116,105,111,110,32,74,40,120,41,32,61,32,0,32,32,32,67,111,109,112,117,116,101,32,71,114,97,100,105,101,110,116,10,0,32,32,32,32,32,32,32,97,108,112,104,97,32,32,32,32,32,32,73,97,108,112,104,97,32,10,0,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,10,0,78,111,32,97,100,106,111,105,110,116,32,104,97,115,32,98,101,101,110,32,105,109,112,108,101,109,101,110,116,101,100,32,102,111,114,32,115,111,108,117,116,105,111,110,32,0,32,121,101,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,111,114,101,115,47,65,100,106,111,105,110,116,67,111,114,101,80,111,105,110,116,101,114,70,114,111,109,83,111,108,117,116,105,111,110,69,110,117,109,46,99,112,112,0,65,100,106,111,105,110,116,67,111,114,101,80,111,105,110,116,101,114,70,114,111,109,83,111,108,117,116,105,111,110,69,110,117,109,0,32,32,32,99,111,109,112,117,116,105,110,103,32,119,97,116,101,114,32,104,101,97,100,115,10,0,32,32,32,99,111,109,112,117,116,105,110,103,32,119,97,116,101,114,32,99,111,108,117,109,110,10,0,32,32,32,115,97,118,105,110,103,32,114,101,115,117,108,116,115,32,10,0,32,32,32,115,97,118,105,110,103,32,116,101,109,112,111,114,97,114,121,32,114,101,115,117,108,116,115,10,0,32,32,32,117,112,100,97,116,105,110,103,32,103,97,112,32,104,101,105,103,104,116,10,0,72,121,100,114,111,108,111,103,121,32,109,111,100,101,108,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,111,114,101,115,47,104,121,100,114,111,108,111,103,121,95,99,111,114,101,46,99,112,112,0,104,121,100,114,111,108,111,103,121,95,99,111,114,101,0,66,117,105,108,100,105,110,103,32,83,101,100,105,109,101,110,116,32,77,97,116,114,105,120,46,46,46,10,0,32,32,32,35,32,83,101,100,105,109,101,110,116,32,117,110,115,116,97,98,108,101,32,99,111,110,115,116,114,97,105,110,116,115,32,61,32,0,32,32,32,109,97,120,105,109,117,109,32,110,117,109,98,101,114,32,111,102,32,83,101,100,105,109,101,110,116,32,105,116,101,114,97,116,105,111,110,115,32,40,0,41,32,101,120,99,101,101,100,101,100,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,115,111,108,117,116,105,111,110,115,101,113,117,101,110,99,101,115,47,115,111,108,117,116,105,111,110,115,101,113,117,101,110,99,101,95,104,121,100,114,111,95,110,111,110,108,105,110,101,97,114,46,99,112,112,0,115,111,108,117,116,105,111,110,115,101,113,117,101,110,99,101,95,104,121,100,114,111,95,110,111,110,108,105,110,101,97,114,0,32,32,32,73,110,110,101,114,32,83,101,100,105,109,101,110,116,32,67,111,110,118,101,114,103,101,110,99,101,32,99,114,105,116,101,114,105,111,110,58,0,37,44,32,97,105,109,105,110,103,32,108,111,119,101,114,32,116,104,97,110,32,0,32,32,32,35,32,73,110,110,101,114,32,115,101,100,105,109,101,110,116,32,99,111,110,118,101,114,103,101,110,99,101,32,97,99,104,105,101,118,101,32,10,0,99,111,109,112,117,116,105,110,103,32,69,80,76,32,72,101,97,100,32,115,108,111,112,101,46,46,46,10,0,66,117,105,108,100,105,110,103,32,69,80,76,32,77,97,116,114,105,120,46,46,46,10,0,32,32,32,73,110,110,101,114,32,69,80,76,32,67,111,110,118,101,114,103,101,110,99,101,32,99,114,105,116,101,114,105,111,110,58,0,32,32,32,109,97,120,105,109,117,109,32,110,117,109,98,101,114,32,111,102,32,69,80,76,32,105,116,101,114,97,116,105,111,110,115,32,40,0,101,112,108,99,111,110,118,101,114,103,101,100,46,46,46,10,0,83,101,100,32,99,111,110,118,101,114,103,101,110,99,101,32,99,114,105,116,101,114,105,111,110,32,105,115,32,78,97,78,33,0,69,80,76,32,99,111,110,118,101,114,103,101,110,99,101,32,99,114,105,116,101,114,105,111,110,32,105,115,32,78,97,78,33,0,32,32,32,67,111,110,118,101,114,103,101,100,32,97,102,116,101,114,44,32,0,32,105,116,101,114,97,116,105,111,110,115,32,10,0,32,32,32,83,101,100,105,109,101,110,116,32,67,111,110,118,101,114,103,101,110,99,101,32,99,114,105,116,101,114,105,111,110,58,0,32,32,32,69,80,76,32,67,111,110,118,101,114,103,101,110,99,101,32,99,114,105,116,101,114,105,111,110,58,0,32,32,32,67,111,110,118,101,114,103,101,110,99,101,32,99,114,105,116,101,114,105,111,110,58,0,32,32,32,109,97,120,105,109,117,109,32,110,117,109,98,101,114,32,102,111,114,32,104,121,100,114,111,108,111,103,105,99,97,108,32,103,108,111,98,97,108,32,105,116,101,114,97,116,105,111,110,115,32,40,0,32,32,32,99,111,109,112,117,116,105,110,103,32,110,101,119,32,118,101,108,111,99,105,116,121,10,0,99,111,109,112,117,116,105,110,103,32,115,109,111,111,116,104,32,115,117,114,102,97,99,101,32,115,108,111,112,101,115,58,10,0,99,111,109,112,117,116,105,110,103,32,115,109,111,111,116,104,32,100,114,105,118,105,110,103,32,115,116,114,101,115,115,58,10,0,99,111,109,112,117,116,105,110,103,32,115,108,111,112,101,46,46,46,10,0,32,32,32,99,111,109,112,117,116,105,110,103,32,115,108,111,112,101,10,0,32,32,32,99,111,109,112,117,116,105,110,103,32,100,97,109,97,103,101,10,0,32,32,32,99,111,109,112,117,116,105,110,103,32,108,101,118,101,108,115,101,116,32,116,114,97,110,115,112,111,114,116,10,0,32,32,32,77,105,103,114,97,116,105,110,103,32,103,114,111,117,110,100,105,110,103,32,108,105,110,101,10,0,71,114,111,117,110,100,105,110,103,32,108,105,110,101,32,109,105,103,114,97,116,105,111,110,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,71,114,111,117,110,100,105,110,103,108,105,110,101,77,105,103,114,97,116,105,111,110,120,47,71,114,111,117,110,100,105,110,103,108,105,110,101,77,105,103,114,97,116,105,111,110,120,46,99,112,112,0,71,114,111,117,110,100,105,110,103,108,105,110,101,77,105,103,114,97,116,105,111,110,120,0,32,32,32,65,100,100,105,116,105,111,110,97,108,32,110,117,109,98,101,114,32,111,102,32,118,101,114,116,105,99,101,115,32,97,108,108,111,119,101,100,32,116,111,32,117,110,103,114,111,117,110,100,58,32,0,57,82,105,102,116,102,114,111,110,116,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,114,105,102,116,95,112,101,110,97,108,116,121,95,108,111,99,107,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,76,111,97,100,115,47,82,105,102,116,102,114,111,110,116,46,99,112,112,0,82,105,102,116,102,114,111,110,116,58,10,0,32,32,32,104,110,111,100,101,115,58,32,0,32,32,32,104,101,108,101,109,101,110,116,115,58,32,0,32,32,32,104,109,97,116,112,97,114,58,32,0,32,32,32,105,110,116,101,114,110,97,108,32,112,97,114,97,109,101,116,101,114,115,58,32,10,0,32,32,32,110,111,114,109,97,108,58,32,0,124,0,32,32,32,108,101,110,103,116,104,58,32,0,32,32,32,112,101,110,97,108,116,121,95,108,111,99,107,58,32,0,32,32,32,99,111,117,110,116,101,114,58,32,0,32,32,32,112,114,101,115,116,97,98,108,101,58,32,0,32,32,32,109,97,116,101,114,105,97,108,95,99,111,110,118,101,114,103,101,100,58,32,0,32,32,32,102,105,108,108,58,32,0,32,32,32,102,114,105,99,116,105,111,110,58,32,0,32,32,32,102,114,97,99,116,105,111,110,58,32,0,32,32,32,102,114,97,99,116,105,111,110,105,110,99,114,101,109,101,110,116,58,32,0,32,32,32,115,116,97,116,101,58,32,0,32,32,32,102,114,111,122,101,110,58,32,0,80,101,110,97,108,116,121,67,114,101,97,116,101,75,77,97,116,114,105,120,0,111,110,108,121,32,84,114,105,97,32,101,108,101,109,101,110,116,32,97,108,108,111,119,101,100,32,102,111,114,32,82,105,102,116,102,114,111,110,116,32,108,111,97,100,33,0,80,101,110,97,108,116,121,67,114,101,97,116,101,75,77,97,116,114,105,120,83,116,114,101,115,115,98,97,108,97,110,99,101,72,111,114,105,122,0,100,105,102,102,101,114,101,110,116,32,116,104,105,99,107,110,101,115,115,101,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,114,105,102,116,32,102,114,111,110,116,115,0,80,101,110,97,108,116,121,67,114,101,97,116,101,80,86,101,99,116,111,114,0,80,101,110,97,108,116,121,67,114,101,97,116,101,80,86,101,99,116,111,114,83,116,114,101,115,115,98,97,108,97,110,99,101,72,111,114,105,122,0,100,105,102,102,101,114,101,110,116,32,98,101,100,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,114,105,102,116,32,102,114,111,110,116,115,0,102,105,108,108,32,116,121,112,101,32,0,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,111,110,32,105,99,101,32,115,104,101,101,116,115,32,121,101,116,46,0,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,46,0,67,111,110,115,116,114,97,105,110,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,46,46,47,46,46,47,99,108,97,115,115,101,115,47,46,47,76,111,97,100,115,47,82,105,102,116,102,114,111,110,116,46,104,0,78,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,33,0,73,110,112,117,116,85,112,100,97,116,101,70,114,111,109,67,111,110,115,116,97,110,116,0,109,100,46,111,117,116,112,117,116,100,101,102,105,110,105,116,105,111,110,46,108,105,115,116,0,109,100,46,109,97,115,115,102,108,117,120,97,116,103,97,116,101,46,110,97,109,101,0,109,100,46,109,97,115,115,102,108,117,120,97,116,103,97,116,101,46,100,101,102,105,110,105,116,105,111,110,101,110,117,109,0,109,100,46,109,97,115,115,102,108,117,120,97,116,103,97,116,101,46,115,101,103,109,101,110,116,115,0,109,100,46,109,105,115,102,105,116,46,110,97,109,101,0,109,100,46,109,105,115,102,105,116,46,100,101,102,105,110,105,116,105,111,110,101,110,117,109,0,109,100,46,109,105,115,102,105,116,46,109,111,100,101,108,95,101,110,117,109,0,109,100,46,109,105,115,102,105,116,46,111,98,115,101,114,118,97,116,105,111,110,0,109,100,46,109,105,115,102,105,116,46,111,98,115,101,114,118,97,116,105,111,110,95,101,110,117,109,0,109,100,46,109,105,115,102,105,116,46,116,105,109,101,105,110,116,101,114,112,111,108,97,116,105,111,110,0,109,100,46,109,105,115,102,105,116,46,108,111,99,97,108,0,109,100,46,109,105,115,102,105,116,46,119,101,105,103,104,116,115,0,109,100,46,109,105,115,102,105,116,46,119,101,105,103,104,116,115,95,101,110,117,109,0,109,100,46,110,111,100,97,108,118,97,108,117,101,46,110,97,109,101,0,109,100,46,110,111,100,97,108,118,97,108,117,101,46,100,101,102,105,110,105,116,105,111,110,101,110,117,109,0,109,100,46,110,111,100,97,108,118,97,108,117,101,46,109,111,100,101,108,95,101,110,117,109,0,109,100,46,110,111,100,97,108,118,97,108,117,101,46,110,111,100,101,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,46,46,47,46,46,47,116,111,111,108,107,105,116,115,47,46,47,111,98,106,101,99,116,115,47,46,46,47,105,115,115,109,47,46,46,47,46,46,47,115,104,97,114,101,100,47,46,47,77,101,109,79,112,115,47,77,101,109,79,112,115,46,104,0,109,100,46,109,97,115,115,99,111,110,46,110,97,109,101,0,109,100,46,109,97,115,115,99,111,110,46,100,101,102,105,110,105,116,105,111,110,101,110,117,109,0,109,100,46,109,97,115,115,99,111,110,46,108,101,118,101,108,115,101,116,0,109,100,46,109,97,115,115,99,111,110,97,120,112,98,121,46,110,97,109,101,0,109,100,46,109,97,115,115,99,111,110,97,120,112,98,121,46,100,101,102,105,110,105,116,105,111,110,101,110,117,109,0,109,100,46,109,97,115,115,99,111,110,97,120,112,98,121,46,110,97,109,101,120,0,109,100,46,109,97,115,115,99,111,110,97,120,112,98,121,46,110,97,109,101,121,0,109,100,46,109,97,115,115,99,111,110,97,120,112,98,121],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+109032);allocate([46,97,108,112,104,97,0,109,100,46,109,97,115,115,99,111,110,97,120,112,98,121,46,98,101,116,97,0,111,117,116,112,117,116,32,100,101,102,105,110,105,116,105,111,110,32,101,110,117,109,32,0,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,33,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,67,114,101,97,116,101,79,117,116,112,117,116,68,101,102,105,110,105,116,105,111,110,115,46,99,112,112,0,67,114,101,97,116,101,79,117,116,112,117,116,68,101,102,105,110,105,116,105,111,110,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,46,46,47,46,46,47,99,108,97,115,115,101,115,47,46,47,77,97,115,115,99,111,110,97,120,112,98,121,46,104,0,32,77,97,115,115,99,111,110,97,120,112,98,121,58,32,0,32,32,32,32,110,97,109,101,120,58,32,0,32,32,32,32,110,97,109,101,121,58,32,0,32,32,32,32,97,108,112,104,97,58,32,0,32,32,32,32,98,101,116,97,58,32,0,49,50,77,97,115,115,99,111,110,97,120,112,98,121,0,49,48,68,101,102,105,110,105,116,105,111,110,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,46,46,47,46,46,47,99,108,97,115,115,101,115,47,46,47,77,97,115,115,99,111,110,46,104,0,32,77,97,115,115,99,111,110,58,32,0,32,32,32,32,108,101,118,101,108,115,101,116,58,32,0,32,32,32,32,77,58,32,0,55,77,97,115,115,99,111,110,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,46,46,47,46,46,47,99,108,97,115,115,101,115,47,46,47,78,111,100,97,108,118,97,108,117,101,46,104,0,32,78,111,100,97,108,118,97,108,117,101,58,32,0,32,32,32,32,109,111,100,101,108,95,101,110,117,109,58,32,0,32,32,32,32,110,111,100,101,58,32,0,49,48,78,111,100,97,108,118,97,108,117,101,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,46,46,47,46,46,47,99,108,97,115,115,101,115,47,46,47,77,105,115,102,105,116,46,104,0,32,77,105,115,102,105,116,58,32,0,32,32,32,32,111,98,115,101,114,118,97,116,105,111,110,95,101,110,117,109,58,32,0,32,32,32,32,119,101,105,103,104,116,115,95,101,110,117,109,58,32,0,32,32,32,32,116,105,109,101,105,110,116,101,114,112,111,108,97,116,105,111,110,58,32,0,32,32,32,32,108,111,99,97,108,58,32,0,54,77,105,115,102,105,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,46,46,47,46,46,47,99,108,97,115,115,101,115,47,46,47,77,97,115,115,102,108,117,120,97,116,103,97,116,101,46,104,0,32,77,97,115,115,102,108,117,120,97,116,103,97,116,101,58,32,0,32,32,32,32,110,117,109,115,101,103,109,101,110,116,115,58,32,0,32,32,32,101,108,101,109,101,110,116,58,32,120,49,44,32,121,49,44,32,120,50,44,32,121,50,58,10,0,49,52,77,97,115,115,102,108,117,120,97,116,103,97,116,101,73,100,69,0,67,111,117,108,100,32,110,111,116,32,102,105,110,100,32,116,104,101,32,114,101,115,112,111,110,115,101,32,102,111,114,32,111,117,116,112,117,116,32,100,101,102,105,110,105,116,105,111,110,32,0,32,98,101,99,97,117,115,101,32,99,111,117,108,100,32,110,111,116,32,102,105,110,100,32,116,104,101,32,100,101,102,105,110,105,116,105,111,110,32,105,116,115,101,108,102,33,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,79,117,116,112,117,116,68,101,102,105,110,105,116,105,111,110,115,82,101,115,112,111,110,115,101,120,47,79,117,116,112,117,116,68,101,102,105,110,105,116,105,111,110,115,82,101,115,112,111,110,115,101,120,46,99,112,112,0,79,117,116,112,117,116,68,101,102,105,110,105,116,105,111,110,115,82,101,115,112,111,110,115,101,120,0,49,48,80,101,110,116,97,73,110,112,117,116,0,32,32,32,80,101,110,116,97,73,110,112,117,116,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,80,101,110,116,97,73,110,112,117,116,46,99,112,112,0,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,32,102,111,114,32,116,121,112,101,32,0,73,110,112,117,116,32,112,114,111,118,105,100,101,100,32,105,115,32,110,111,116,32,97,32,84,104,105,99,107,110,101,115,115,32,40,101,110,117,109,95,116,121,112,101,32,105,115,32,0,83,101,116,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,46,46,47,46,47,73,110,112,117,116,115,47,80,101,110,116,97,73,110,112,117,116,46,104,0,83,101,116,0,71,101,116,73,110,112,117,116,85,112,84,111,67,117,114,114,101,110,116,84,105,109,101,65,118,101,114,97,103,101,115,0,71,101,116,73,110,112,117,116,65,108,108,84,105,109,101,65,118,101,114,97,103,101,115,0,49,48,84,101,116,114,97,73,110,112,117,116,0,32,32,32,84,101,116,114,97,73,110,112,117,116,32,0,32,91,0,93,32,40,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,84,101,116,114,97,73,110,112,117,116,46,99,112,112,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,32,98,101,99,97,117,115,101,32,120,105,110,112,117,116,32,105,115,32,111,102,32,116,121,112,101,32,0,65,88,80,89,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,32,98,101,99,97,117,115,101,32,105,110,112,117,116,66,32,105,115,32,111,102,32,116,121,112,101,32,0,80,111,105,110,116,119,105,115,101,77,105,110,0,80,111,105,110,116,119,105,115,101,77,97,120,0,80,111,105,110,116,119,105,115,101,68,105,118,105,100,101,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,110,112,117,116,115,47,46,46,47,46,47,73,110,112,117,116,115,47,84,101,116,114,97,73,110,112,117,116,46,104,0,83,112,97,119,110,83,101,103,73,110,112,117,116,0,69,120,116,114,117,100,101,0,86,101,114,116,105,99,97,108,108,121,73,110,116,101,103,114,97,116,101,0,71,101,116,73,110,112,117,116,68,101,114,105,118,97,116,105,118,101,65,118,101,114,97,103,101,86,97,108,117,101,0,71,101,116,73,110,112,117,116,86,97,108,117,101,0,105,60,48,32,124,124,32,106,60,48,32,124,124,32,107,60,48,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,98,97,109,103,47,84,114,105,97,110,103,108,101,46,99,112,112,0,84,114,105,97,110,103,108,101,0,105,62,61,110,98,118,32,124,124,32,106,62,61,110,98,118,32,124,124,32,107,62,61,110,98,118,0,107,62,61,50,48,48,48,48,0,79,112,116,105,109,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,98,97,109,103,47,77,101,115,104,46,99,112,112,0,82,101,97,100,77,101,115,104,0,58,32,91,0,32,32,32,99,111,110,115,116,114,117,99,116,105,111,110,32,111,102,32,116,104,101,32,103,101,111,109,101,116,114,121,32,102,114,111,109,32,116,104,101,32,50,100,32,109,101,115,104,10,0,110,98,116,32,111,114,32,110,98,118,32,105,115,32,110,101,103,97,116,105,118,101,32,40,77,101,115,104,32,101,109,112,116,121,63,41,0,66,117,105,108,100,71,101,111,109,101,116,114,121,70,114,111,109,77,101,115,104,0,83,111,109,101,32,68,111,117,98,108,101,32,101,100,103,101,32,105,110,32,116,104,101,32,109,101,115,104,44,32,116,104,101,32,110,117,109,98,101,114,32,105,115,32,0,44,32,110,98,101,52,61,0,112,114,111,98,108,101,109,32,105,110,32,71,101,111,109,101,116,114,121,32,114,101,99,111,110,115,116,114,117,99,116,105,111,110,58,32,97,110,32,101,100,103,101,32,111,110,32,98,111,117,110,100,97,114,121,32,105,115,32,100,117,112,108,105,99,97,116,101,100,32,40,100,111,117,98,108,101,32,101,108,101,109,101,110,116,63,41,0,84,104,101,32,101,100,103,101,32,40,0,44,0,41,32,98,101,108,111,110,103,115,32,116,111,32,109,111,114,101,32,116,104,97,110,32,50,32,116,114,105,97,110,103,108,101,115,32,40,0,69,100,103,101,32,0,32,111,102,32,116,114,105,97,110,103,108,101,32,0,65,110,32,101,100,103,101,32,98,101,108,111,110,103,115,32,116,111,32,109,111,114,101,32,116,104,97,110,32,50,32,116,114,105,97,110,103,108,101,115,0,32,32,32,32,32,32,32,32,32,105,110,102,111,32,111,110,32,77,101,115,104,58,10,0,32,32,32,32,32,32,32,32,32,32,32,32,45,32,110,117,109,98,101,114,32,111,102,32,118,101,114,116,105,99,101,115,32,32,32,32,61,32,0,32,32,32,32,32,32,32,32,32,32,32,32,45,32,110,117,109,98,101,114,32,111,102,32,116,114,105,97,110,103,108,101,115,32,32,32,61,32,0,32,32,32,32,32,32,32,32,32,32,32,32,45,32,110,117,109,98,101,114,32,111,102,32,103,105,118,101,110,32,101,100,103,101,115,32,61,32,0,32,32,32,32,32,32,32,32,32,32,32,32,45,32,110,117,109,98,101,114,32,111,102,32,97,108,108,32,101,100,103,101,115,32,32,32,61,32,0,32,32,32,32,32,32,32,32,32,32,32,32,45,32,69,117,108,101,114,32,110,117,109,98,101,114,32,49,32,45,32,110,98,32,111,102,32,104,111,108,101,115,32,61,32,0,32,32,32,67,111,110,115,116,114,117,99,116,105,111,110,32,111,102,32,116,104,101,32,101,100,103,101,115,32,0,111,104,32,110,111,46,46,46,10,0,112,114,111,98,108,101,109,32,105,110,32,101,100,103,101,32,99,111,110,115,116,114,117,99,116,105,111,110,32,112,114,111,99,101,115,115,58,32,107,33,61,110,98,101,32,40,115,104,111,117,108,100,32,110,111,116,32,104,97,112,112,101,110,41,0,118,33,61,101,100,103,101,115,91,105,48,32,93,46,118,91,106,48,93,58,32,116,104,105,115,32,115,104,111,117,108,100,32,110,111,116,32,104,97,112,112,101,110,32,97,115,32,116,104,101,32,118,101,114,116,101,120,32,98,101,108,111,110,103,115,32,116,111,32,116,104,105,115,32,101,100,103,101,0,110,98,115,117,98,100,111,109,97,105,110,115,32,115,104,111,117,108,100,32,98,101,32,48,0,32,32,32,32,32,32,84,104,101,32,78,117,109,98,101,114,32,111,102,32,115,117,98,32,100,111,109,97,105,110,32,61,32,0,107,33,61,32,110,98,115,117,98,100,111,109,97,105,110,115,0,32,32,32,110,117,109,98,101,114,32,111,102,32,118,101,114,116,105,99,101,115,32,61,32,0,10,32,32,32,110,117,109,98,101,114,32,111,102,32,101,100,103,101,115,32,61,32,0,71,104,46,99,111,101,102,73,99,111,111,114,60,61,48,32,105,110,32,105,110,102,101,114,101,100,32,71,101,111,109,101,116,114,121,32,40,116,104,105,115,32,115,104,111,117,108,100,32,110,111,116,32,104,97,112,112,101,110,41,0,112,114,111,98,108,101,109,32,105,110,32,69,100,103,101,52,32,99,111,110,115,116,114,117,99,116,105,111,110,58,32,107,32,33,61,32,105,0,99,111,101,102,73,99,111,111,114,32,115,104,111,117,108,100,32,98,101,32,112,111,115,105,116,105,118,101,44,32,97,32,112,114,111,98,108,101,109,32,105,110,32,116,104,101,32,103,101,111,109,101,116,114,121,32,105,115,32,108,105,107,101,108,121,0,83,101,116,73,110,116,67,111,111,114,0,65,114,101,97,32,111,102,32,84,114,105,97,110,103,108,101,32,0,32,60,32,48,32,40,100,101,116,61,0,70,97,116,97,108,32,101,114,114,111,114,58,32,115,111,109,101,32,116,114,105,97,110,103,108,101,115,32,104,97,118,101,32,110,101,103,97,116,105,118,101,32,97,114,101,97,115,44,32,115,101,101,32,97,98,111,118,101,0,84,104,101,114,101,32,97,114,101,32,0,32,100,111,117,98,108,101,32,101,100,103,101,115,32,105,110,32,116,104,101,32,109,101,115,104,0,82,101,99,111,110,115,116,114,117,99,116,69,120,105,115,116,105,110,103,77,101,115,104,0,32,44,32,0,41,32,98,101,108,111,110,103,115,32,116,111,32,109,111,114,101,32,116,104,97,110,32,50,32,116,114,105,97,110,103,108,101,115,0,76,111,115,116,32,98,111,117,110,100,97,114,121,32,101,100,103,101,115,32,0,32,58,32,0,79,116,104,101,114,32,108,111,115,116,32,98,111,117,110,100,97,114,121,32,101,100,103,101,115,32,110,111,116,32,115,104,111,119,110,46,46,46,10,0,32,98,111,117,110,100,97,114,121,32,101,100,103,101,115,32,40,102,114,111,109,32,116,104,101,32,103,101,111,109,101,116,114,121,41,32,97,114,101,32,110,111,116,32,100,101,102,105,110,101,100,32,97,115,32,109,101,115,104,32,101,100,103,101,115,0,82,101,99,111,110,115,116,114,117,99,116,69,120,105,115,116,105,110,103,77,101,115,104,58,32,65,108,108,32,116,104,101,32,118,101,114,116,105,99,101,115,32,97,114,101,32,97,108,105,103,110,101,100,0,119,101,32,108,111,115,116,32,0,32,101,120,105,115,116,105,110,103,32,101,100,103,101,115,32,111,116,104,101,114,32,0,110,117,109,98,101,114,32,111,102,32,116,114,105,97,110,103,108,101,115,32,101,100,103,101,115,32,97,108,111,110,101,32,61,32,0,82,101,99,111,110,115,116,114,117,99,116,69,120,105,115,116,105,110,103,77,101,115,104,32,101,114,114,111,114,32,109,101,115,115,97,103,101,58,32,112,114,111,98,108,101,109,32,119,105,116,104,32,116,104,101,32,101,100,103,101,32,110,117,109,98,101,114,32,0,84,104,105,115,32,101,100,103,101,32,105,115,32,111,110,32,103,101,111,109,101,116,114,105,99,97,108,32,101,100,103,101,32,110,117,109,98,101,114,32,0,116,104,101,32,118,101,114,116,101,120,32,110,117,109,98,101,114,32,0,32,111,102,32,116,104,105,115,32,101,100,103,101,32,105,115,32,97,32,103,101,111,109,101,116,114,105,99,32,66,97,109,103,86,101,114,116,101,120,32,110,117,109,98,101,114,32,0,32,111,102,32,116,104,105,115,32,101,100,103,101,32,105,115,32,97,32,103,101,111,109,101,116,114,105,99,32,69,100,103,101,32,110,117,109,98,101,114,32,0,73,116,115,32,112,111,105,110,116,101,114,32,105,115,32,0,84,104,105,115,32,101,100,103,101,32,105,115,32,111,110,32,103,101,111,109,101,116,114,121,32,97,110,100,32,104,97,115,32,110,111,32,97,100,106,97,99,101,110,116,32,101,100,103,101,32,40,111,112,101,110,32,99,117,114,118,101,41,32,97,110,100,32,111,110,101,32,111,102,32,116,104,101,32,116,105,112,32,105,115,32,110,111,116,32,114,101,113,117,105,114,101,100,10,0,83,101,101,32,97,98,111,118,101,32,40,109,105,103,104,116,32,98,101,32,99,114,121,112,116,105,99,46,46,46,41,0,86,101,114,116,101,120,32,0,32,100,111,101,115,32,110,111,116,32,98,101,108,111,110,103,32,116,111,32,97,110,121,32,101,108,101,109,101,110,116,10,0,79,114,112,104,97,110,32,102,111,117,110,100,32,105,110,32,109,101,115,104,44,32,115,101,101,32,105,100,115,32,97,98,111,118,101,0,65,116,32,108,101,97,115,116,32,111,110,101,32,115,117,98,100,111,109,97,105,110,32,105,115,32,101,109,112,116,121,0,84,114,105,97,110,103,108,101,82,101,102,101,114,101,110,99,101,76,105,115,116,0,105,110,99,111,110,115,105,115,116,101,110,116,32,99,111,110,102,105,103,117,114,97,116,105,111,110,32,40,67,111,110,116,97,99,116,32,73,83,83,77,32,100,101,118,101,108,111,112,101,114,115,41,0,65,100,100,86,101,114,116,101,120,0,67,97,110,110,111,116,32,97,100,100,32,97,32,118,101,114,116,101,120,32,109,111,114,101,32,116,104,97,110,32,111,110,99,101,46,32,67,104,101,99,107,32,100,117,112,108,105,99,97,116,101,115,0,78,111,116,32,101,110,111,117,103,104,32,116,114,105,97,110,103,108,101,115,0,115,119,97,112,32,116,104,101,32,112,111,105,110,116,32,115,32,105,115,32,111,110,32,97,32,101,100,103,101,0,33,97,46,116,32,124,124,32,33,98,46,116,0,70,111,114,99,101,69,100,103,101,0,33,118,50,0,33,118,49,32,124,124,32,33,118,50,0,76,111,111,112,32,105,110,32,102,111,114,99,105,110,103,32,69,103,100,101,44,32,110,98,32,100,101,32,115,119,97,112,61,0,44,32,110,98,32,111,102,32,116,114,121,32,115,119,97,112,32,40,0,41,32,116,111,111,32,98,105,103,0,107,62,61,50,48,48,48,0,84,104,101,32,98,111,117,110,100,97,114,121,32,105,115,32,110,111,116,32,99,108,111,115,101,58,32,97,108,108,32,116,114,105,97,110,103,108,101,115,32,97,114,101,32,111,117,116,115,105,100,101,0,70,105,110,100,83,117,98,68,111,109,97,105,110,0,107,33,61,110,98,115,117,98,100,111,109,97,105,110,115,0,98,97,100,32,100,101,102,105,110,105,116,105,111,110,32,111,102,32,83,117,98,83,111,109,97,105,110,32,0,109,97,114,107,91,71,101,116,73,100,40,116,116,41,93,62,61,48,0,33,71,104,46,110,98,101,0,77,97,107,101,71,101,111,109,69,100,103,101,84,111,69,100,103,101,0,66,85,71,58,32,116,104,101,32,103,101,111,109,101,116,114,105,99,97,108,32,101,100,103,101,32,0,32,105,115,32,111,110,32,110,111,32,101,100,103,101,32,99,117,114,118,101,10,0,83,101,101,32,97,98,111,118,101,0,110,111,32,115,116,97,114,116,105,110,103,32,116,114,105,97,110,103,108,101,32,112,114,111,118,105,100,101,100,32,97,110,100,32,110,111,32,113,117,97,100,116,114,101,101,32,97,118,97,105,108,97,98,108,101,0,84,114,105,97,110,103,108,101,70,105,110,100,70,114,111,109,67,111,111,114,100,0,112,114,111,98,108,101,109,32,119,104,105,108,101,32,116,114,121,105,110,103,32,116,111,32,102,105,110,100,32,110,101,97,114,101,115,116,32,118,101,114,116,101,120,32,102,114,111,109,32,97,32,103,105,118,101,110,32,112,111,105,110,116,46,32,78,111,32,111,117,116,112,117,116,32,102,111,117,110,100,0,110,111,32,116,114,105,97,110,103,108,101,32,105,115,32,97,115,115,111,99,105,97,116,101,100,32,116,111,32,118,101,114,116,101,120,32,110,117,109,98,101,114,32,0,32,40,111,114,112,104,97,110,63,41,0,77,97,120,105,109,117,109,32,110,117,109,98,101,114,32,111,102,32,105,116,101,114,97,116,105,111,110,32,114,101,97,99,104,101,100,32,40,116,104,114,101,115,104,111,108,100,32,61,32,0,41,46,0,107,60,48,0,67,108,111,115,101,66,111,117,110,100,97,114,121,69,100,103,101,0,107,107,107,62,61,49,48,48,48,0,73,74,50,61,61,48,0,97,49,60,48,32,124,124,32,97,49,62,61,51,0,83,119,97,112,70,111,114,70,111,114,99,105,110,103,69,100,103,101,0,40,100,101,116,49,60,61,48,32,41,32,124,124,32,40,100,101,116,50,60,61,48,41,0,40,100,101,116,115,97,62,61,48,41,32,124,124,32,40,100,101,116,115,98,60,61,48,41,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,116,111,111,108,107,105,116,115,47,103,115,108,47,46,46,47,46,46,47,115,104,97,114,101,100,47,46,47,77,101,109,79,112,115,47,77,101,109,79,112,115,46,104,0,82,105,103,104,116,32,104,97,110,100,32,115,105,100,101,32,118,101,99,116,111,114,32,111,102,32,115,105,122,101,32,0,44,32,119,104,101,110,32,109,97,116,114,105,120,32,105,115,32,111,102,32,115,105,122,101,32,0,45,0,32,33,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,116,111,111,108,107,105,116,115,47,103,115,108,47,68,101,110,115,101,71,115,108,83,111,108,118,101,46,99,112,112,0,68,101,110,115,101,71,115,108,83,111,108,118,101,0,83,116,105,102,102,110,101,115,115,32,109,97,116,114,105,120,32,115,104,111,117,108,100,32,98,101,32,115,113,117,97,114,101,33,0,51,49,65,100,106,111,105,110,116,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,65,110,97,108,121,115,105,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,65,100,106,111,105,110,116,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,65,110,97,108,121,115,105,115,46,99,112,112,0,56,65,110,97,108,121,115,105,115,0,51,50,65,100,106,111,105,110,116,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,50,65,110,97,108,121,115,105,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,65,100,106,111,105,110,116,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,50,65,110,97,108,121,115,105,115,46,99,112,112,0,50,48,65,100,106,111,105,110,116,72,111,114,105,122,65,110,97,108,121,115,105,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,65,100,106,111,105,110,116,72,111,114,105,122,65,110,97,108,121,115,105,115,46,99,112,112,0,69,120,97,99,116,32,97,100,106,111,105,110,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,32,102,111,114,32,76,49,76,50,32,109,111,100,101,108,0,67,114,101,97,116,101,75,77,97,116,114,105,120,76,49,76,50,0,67,114,101,97,116,101,75,77,97,116,114,105,120,70,83,0,67,114,101,97,116,101,80,86,101,99,116,111,114,72,79,0,67,114,101,97,116,101,80,86,101,99,116,111,114,70,83,0,99,111,110,116,114,111,108,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,58,32,0,71,114,97,100,105,101,110,116,74,68,114,97,103,71,114,97,100,105,101,110,116,0,71,114,97,100,105,101,110,116,74,66,98,97,114,71,114,97,100,105,101,110,116,0,71,114,97,100,105,101,110,116,74,66,71,114,97,100,105,101,110,116,0,71,114,97,100,105,101,110,116,74,68,114,97,103,83,83,65,0,71,114,97,100,105,101,110,116,74,68,114,97,103,72,121,100,114,111,83,83,65,0,71,114,97,100,105,101,110,116,74,66,98,97,114,83,83,65,0,71,114,97,100,105,101,110,116,74,66,83,83,65,0,71,114,97,100,105,101,110,116,74,68,83,83,65,0,73,110,112,117,116,85,112,100,97,116,101,70,114,111,109,83,111,108,117,116,105,111,110,72,111,114,105,122,0,50,52,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,65,110,97,108,121,115,105,115,0,109,100,46,98,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,46,115,116,97,98,105,108,105,122,97,116,105,111,110,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,65,110,97,108,121,115,105,115,46,99,112,112,0,67,111,110,116,114,111,108,32,0,114,101,115,112,111,110,115,101,32,0,50,53,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,50,65,110,97,108,121,115,105,115,0,109,100,46,98,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,46,115,112,99,116,104,105,99,107,110,101,115,115,0,109,100,46,98,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,46,111,109,101,103,97,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,50,65,110,97,108,121,115,105,115,46,99,112,112,0,115,117,114,102,97,99,101,32,115,108,111,112,101,32,105,115,32,122,101,114,111,0,67,114,101,97,116,101,68,48,0,50,56,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,83,111,102,116,65,110,97,108,121,115,105,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,66,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,83,111,102,116,65,110,97,108,121,115,105,115,46,99,112,112,0,50,51,66,97,108,97,110,99,101,118,101,108,111,99,105,116,121,65,110,97,108,121,115,105,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,66,97,108,97,110,99,101,118,101,108,111,99,105,116,121,65,110,97,108,121,115,105,115,46,99,112,112,0,109,100,46,98,97,108,97,110,99,101,116,104,105,99,107,110,101,115,115,46,116,104,105,99,107,101,110,105,110,103,95,114,97,116,101,0,50,52,76,50,80,114,111,106,101,99,116,105,111,110,66,97,115,101,65,110,97,108,121,115,105,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,76,50,80,114,111,106,101,99,116,105,111,110,66,97,115,101,65,110,97,108,121,115,105,115,46,99,112,112,0,50,51,68,97,109,97,103,101,69,118,111,108,117,116,105,111,110,65,110,97,108,121,115,105,115,0,109,100,46,100,97,109,97,103,101,46,101,108,101,109,101,110,116,105,110,116,101,114,112,0,109,100,46,100,97,109,97,103,101,46,115,116,97,98,105,108,105,122,97,116,105,111,110,0,109,100,46,100,97,109,97,103,101,46,115,112,99,100,97,109,97,103,101,0,109,100,46,100,97,109,97,103,101,46,68,0,109,100,46,100,97,109,97,103,101,46,109,97,120,105,116,101,114,0,109,100,46,100,97,109,97,103,101,46,109,97,120,95,100,97,109,97,103,101,0,109,100,46,100,97,109,97,103,101,46,114,101,113,117,101,115,116,101,100,95,111,117,116,112,117,116,115,0,109,100,46,100,97,109,97,103,101,46,99,49,0,109,100,46,100,97,109,97,103,101,46,99,50,0,109,100,46,100,97,109,97,103,101,46,99,51,0,109,100,46,100,97,109,97,103,101,46,99,52,0,109,100,46,100,97,109,97,103,101,46,104,101,97,108,105,110,103,0,109,100,46,100,97,109,97,103,101,46,101,113,117,105,118,95,115,116,114,101,115,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,68,97,109,97,103,101,69,118,111,108,117,116,105,111,110,65,110,97,108,121,115,105,115,46,99,112,112,0,67,114,101,97,116,101,68,97,109,97,103,101,70,73,110,112,117,116,80,114,97,108,111,110,103,0,77,112,105,32,118,101,99,116,111,114,32,114,101,113,117,105,114,101,115,32,99,111,109,112,105,108,97,116,105,111,110,32,111,102,32,77,80,73,33,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,46,46,47,116,111,111,108,107,105,116,115,47,111,98,106,101,99,116,115,47,46,46,47,105,115,115,109,47,46,47,73,115,115,109,86,101,99,46,104,0,73,115,115,109,86,101,99,0,118,101,99,116,111,114,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,33,0,32,32,32,99,111,109,112,117,116,105,110,103,32,100,97,109,97,103,101,32,97,110,97,108,121,116,105,99,97,108,108,121,10,0,32,32,32,99,111,109,112,117,116,105,110,103,32,100,97,109,97,103,101,32,117,115,105,110,103,32,115,111,117,114,99,101,32,116,101,114,109,32,105,110,32,97,100,118,101,99,116,105,111,110,32,115,99,104,101,109,101,10,0,68,97,109,97,103,101,32,108,97,119,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,68,97,109,97,103,101,120,47,68,97,109,97,103,101,120,46,99,112,112,0,68,97,109,97,103,101,120,0,50,49,83,116,114,101,115,115,98,97,108,97,110,99,101,65,110,97,108,121,115,105,115,0,109,100,46,99,111,110,115,116,97,110,116,115,46,103,0,109,100,46,109,97,116,101,114,105,97,108,115,46,114,104,111,95,105,99,101,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,70,83,114,101,99,111,110,100,105,116,105,111,110,105,110,103,0,109,100,46,102,108,111,119,101,113,117,97,116,105,111,110,46,102,101,95,83,83,65,0,109,100,46,102,108,111,119,101,113,117,97,116,105,111,110,46,102,101,95,72,79,0,102,105,110,105,116,101,32,101,108,101,109,101,110,116,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,83,116,114,101,115,115,98,97,108,97,110,99,101,65,110,97,108,121,115,105,115,46,99,112,112,0,109,111,100,101,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,0,109,100,46,109,101,115,104,46,122,0,109,100,46,102,108,111,119,101,113,117,97,116,105,111,110,46,98,111,114,100,101,114,72,79,0,105,102,32,118,101,114,116,105,99,101,115,95,116,121,112,101,32,105,115,32,83,83,65,72,79,44,32,121,111,117,32,115,104,111,117,100,32,104,97,118,101,32,110,111,100,101,111,110,72,79,32,111,114,32,110,111,100,101,111,110,83,83,65,0,105,102,32,118,101,114,116,105,99,101,115,95,116,121,112,101,32,105,115,32,72,79,70,83,44,32,121,111,117,32,115,104,111,117,100,32,104,97,118,101,32,110,111,100,101,111,110,72,79,32,111,114,32,110,111,100,101,111,110,70,83,0,105,102,32,118,101,114,116,105,99,101,115,95,116,121,112,101,32,105,115,32,83,83,65,70,83,44,32,121,111,117,32,115,104,111,117,100,32,104,97,118,101,32,110,111,100,101,111,110,83,83,65,32,111,114,32,110,111,100,101,111,110,70,83,0,109,100,46,114,105,102,116,115,46,110,117,109,114,105,102,116,115,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,118,101,114,116,101,120,95,112,97,105,114,105,110,103,0,109,100,46,114,105,102,116,115,46,114,105,102,116,115,116,114,117,99,116,0,65,112,112,114,111,120,105,109,97,116,105,111,110,32,0,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,109,100,46,109,97,116,101,114,105,97,108,115,46,116,121,112,101,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,108,111,97,100,105,110,103,102,111,114,99,101,120,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,108,111,97,100,105,110,103,102,111,114,99,101,121,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,108,111,97,100,105,110,103,102,111,114,99,101,122,0,109,100,46,102,114,105,99,116,105,111,110,46,99,111,101,102,102,105,99,105,101,110,116,99,111,117,108,111,109,98,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,114,101,115,116,111,108,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,114,101,108,116,111,108,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,97,98,115,116,111,108,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,105,115,110,101,119,116,111,110,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,109,97,120,105,116,101,114,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,112,101,110,97,108,116,121,95,102,97,99,116,111,114,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,114,105,102,116,95,112,101,110,97,108,116,121,95,116,104,114,101,115,104,111,108,100,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,115,104,101,108,102,95,100,97,109,112,101,110,105,110,103,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,118,105,115,99,111,115,105,116,121,95,111,118,101,114,115,104,111,111,116,0,109,100,46,102,108,111,119,101,113,117,97,116,105,111,110,46,97,117,103,109,101,110,116,101,100,95,108,97,103,114,97,110,103,105,97,110,95,114,0,109,100,46,102,108,111,119,101,113,117,97,116,105,111,110,46,97,117,103,109,101,110,116,101,100,95,108,97,103,114,97,110,103,105,97,110,95,114,108,97,109,98,100,97,0,109,100,46,102,108,111,119,101,113,117,97,116,105,111,110,46,88,84,72,95,116,104,101,116,97,0,109,100,46,100,97,109,97,103,101,46,108,97,119,0,109,100,46,100,97,109,97,103,101,46,107,97,112,112,97,0,109,100,46,100,97,109,97,103,101,46,115,116,114,101,115,115,95,116,104,114,101,115,104,111,108,100,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,114,101,113,117,101,115,116,101,100,95,111,117,116,112,117,116,115,0,109,100,46,102,114,105,99,116,105,111,110,46,102,0,32,32,32,99,111,109,112,117,116,105,110,103,32,99,111,117,112,108,105,110,103,32,98,101,116,119,101,101,110,32,108,111,119,101,114,32,111,114,100,101,114,32,109,111,100,101,108,115,32,97,110,100,32,70,83,10,0,67,114,101,97,116,101,74,97,99,111,98,105,97,110,77,97,116,114,105,120,83,83,65,0,67,114,101,97,116,101,75,77,97,116,114,105,120,83,83,65,0,67,114,101,97,116,101,80,86,101,99,116,111,114,83,83,65,0,67,114,101,97,116,101,80,86,101,99,116,111,114,76,49,76,50,0,71,101,116,83,111,108,117,116,105,111,110,70,114,111,109,73,110,112,117,116,115,72,111,114,105,122,0,73,110,112,117,116,85,112,100,97,116,101,70,114,111,109,83,111,108,117,116,105,111,110,70,83,0,73,110,112,117,116,85,112,100,97,116,101,70,114,111,109,83,111,108,117,116,105,111,110,83,83,65,0,73,110,112,117,116,85,112,100,97,116,101,70,114,111,109,83,111,108,117,116,105,111,110,72,79,0,73,110,112,117,116,85,112,100,97,116,101,70,114,111,109,83,111,108,117,116,105,111,110,76,49,76,50,0,67,111,117,112,108,105,110,103,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,0,73,110,112,117,116,85,112,100,97,116,101,70,114,111,109,83,111,108,117,116,105,111,110,83,83,65,72,79,0,73,110,112,117,116,85,112,100,97,116,101,70,114,111,109,83,111,108,117,116,105,111,110,72,79,70,83,0,73,110,112,117,116,85,112,100,97,116,101,70,114,111,109,83,111,108,117,116,105,111,110,83,83,65,70,83,0,67,114,101,97,116,101,75,77,97,116,114,105,120,83,83,65,86,105,115,99,111,117,115,0,67,114,101,97,116,101,75,77,97,116,114,105,120,83,83,65,70,114,105,99,116,105,111,110,0,67,114,101,97,116,101,80,86,101,99,116,111,114,83,83,65,68,114,105,118,105,110,103,83,116,114,101,115,115,0,67,114,101,97,116,101,80,86,101,99,116,111,114,83,83,65,70,114,111,110,116,0,83,117,98,101,108,101,109,101,110,116,32,77,105,103,114,97,116,105,111,110,32,50,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,32,102,111,114,32,70,108,111,119,108,105,110,101,0,67,114,101,97,116,101,75,77,97,116,114,105,120,70,83,70,114,105,99,116,105,111,110,0,97,112,112,114,111,120,105,109,97,116,105,111,110,32,0,67,114,101,97,116,101,75,77,97,116,114,105,120,83,83,65,51,100,86,105,115,99,111,117,115,0,50,49,85,122,97,119,97,80,114,101,115,115,117,114,101,65,110,97,108,121,115,105,115,0,109,100,46,102,108,111,119,101,113,117,97,116,105,111,110,46,102,101,95,70,83,0,115,111,108,117,116,105,111,110,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,85,122,97,119,97,80,114,101,115,115,117,114,101,65,110,97,108,121,115,105,115,46,99,112,112,0,109,100,46,102,108,111,119,101,113,117,97,116,105,111,110,46,97,117,103,109,101,110,116,101,100,95,108,97,103,114,97,110,103,105,97,110,95,114,104,111,112,0,109,100,46,102,108,111,119,101,113,117,97,116,105,111,110,46,97,117,103,109,101,110,116,101,100,95,108,97,103,114,97,110,103,105,97,110,95,114,104,111,108,97,109,98,100,97,0,102,105,110,105,116,101,32,101,108,101,109,101,110,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,0,50,52,83,116,114,101,115,115,98,97,108,97,110,99,101,83,73,65,65,110,97,108,121,115,105,115,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,115,112,99,118,120,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,115,112,99,118,121,0,109,100,46,102,108,111,119,101,113,117,97,116,105,111,110,46,98,111,114,100,101,114,83,83,65,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,114,101,102,101,114,101,110,116,105,97,108,0,109,100,46,102,108,111,119,101,113,117,97,116,105,111,110,46,101,108,101,109,101,110,116,95,101,113,117,97,116,105,111,110,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,83,116,114,101,115,115,98,97,108,97,110,99,101,83,73,65,65,110,97,108,121,115,105,115,46,99,112,112,0,32,32,32,99,111,109,112,117,116,105,110,103,32,83,73,65,32,118,101,108,111,99,105,116,105,101,115,10,0,50,57,83,116,114,101,115,115,98,97,108,97,110,99,101,86,101,114,116,105,99,97,108,65,110,97,108,121,115,105,115,0,109,100,46,102,108,111,119,101,113,117,97,116,105,111,110,46,105,115,83,73,65,0,109,100,46,102,108,111,119,101,113,117,97,116,105,111,110,46,105,115,83,83,65,0,109,100,46,102,108,111,119,101,113,117,97,116,105,111,110,46,105,115,76,49,76,50,0,109,100,46,102,108,111,119,101,113,117,97,116,105,111,110,46,105,115,72,79,0,109,100,46,115,116,114,101,115,115,98,97,108,97,110,99,101,46,115,112,99,118,122,0,109,100,46,102,108,111,119,101,113,117,97,116,105,111,110,46,98,111,114,100,101,114,70,83,0,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,32,40,110,101,101,100,115,32,116,111,32,98,101,32,99,111,100,101,100,41,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+119272);allocate([110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,83,116,114,101,115,115,98,97,108,97,110,99,101,86,101,114,116,105,99,97,108,65,110,97,108,121,115,105,115,46,99,112,112,0,109,100,46,102,108,111,119,101,113,117,97,116,105,111,110,46,118,101,114,116,101,120,95,101,113,117,97,116,105,111,110,0,32,32,32,99,111,109,112,117,116,105,110,103,32,118,101,114,116,105,99,97,108,32,118,101,108,111,99,105,116,105,101,115,10,0,67,97,110,110,111,116,32,99,111,109,112,117,116,101,32,86,101,108,32,97,115,32,86,122,70,83,32,105,115,32,111,102,32,116,121,112,101,32,0,67,97,110,110,111,116,32,99,111,109,112,117,116,101,32,86,122,32,97,115,32,86,122,70,83,32,105,110,32,110,111,116,32,112,114,101,115,101,110,116,32,105,110,32,72,79,70,83,32,101,108,101,109,101,110,116,0,67,97,110,110,111,116,32,99,111,109,112,117,116,101,32,86,122,32,97,115,32,86,122,70,83,32,105,110,32,110,111,116,32,112,114,101,115,101,110,116,32,105,110,32,83,83,65,70,83,32,101,108,101,109,101,110,116,0,49,54,69,110,116,104,97,108,112,121,65,110,97,108,121,115,105,115,0,109,100,46,109,97,116,101,114,105,97,108,115,46,104,101,97,116,99,97,112,97,99,105,116,121,0,109,100,46,99,111,110,115,116,97,110,116,115,46,114,101,102,101,114,101,110,99,101,116,101,109,112,101,114,97,116,117,114,101,0,83,105,122,101,32,111,102,32,102,105,101,108,100,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,69,110,116,104,97,108,112,121,65,110,97,108,121,115,105,115,46,99,112,112,0,109,100,46,105,110,105,116,105,97,108,105,122,97,116,105,111,110,46,119,97,116,101,114,102,114,97,99,116,105,111,110,0,109,100,46,105,110,105,116,105,97,108,105,122,97,116,105,111,110,46,101,110,116,104,97,108,112,121,0,109,100,46,116,104,101,114,109,97,108,46,114,101,108,116,111,108,0,9,117,110,107,110,111,119,110,32,116,104,101,114,109,97,108,32,98,97,115,97,108,32,115,116,97,116,101,32,102,111,117,110,100,33,0,32,32,32,99,111,109,112,117,116,105,110,103,32,101,110,116,104,97,108,112,121,10,0,78,101,103,97,116,105,118,101,32,119,97,116,101,114,32,102,114,97,99,116,105,111,110,32,102,111,117,110,100,32,105,110,32,115,111,108,117,116,105,111,110,32,118,101,99,116,111,114,0,50,51,72,121,100,114,111,108,111,103,121,83,104,114,101,118,101,65,110,97,108,121,115,105,115,0,109,100,46,104,121,100,114,111,108,111,103,121,115,104,114,101,118,101,46,115,112,99,119,97,116,101,114,99,111,108,117,109,110,0,109,100,46,105,110,105,116,105,97,108,105,122,97,116,105,111,110,46,119,97,116,101,114,99,111,108,117,109,110,0,109,100,46,104,121,100,114,111,108,111,103,121,46,115,116,97,98,105,108,105,122,97,116,105,111,110,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,72,121,100,114,111,108,111,103,121,83,104,114,101,118,101,65,110,97,108,121,115,105,115,46,99,112,112,0,50,52,72,121,100,114,111,108,111,103,121,83,111,109,109,101,114,115,65,110,97,108,121,115,105,115,0,109,100,46,104,121,100,114,111,108,111,103,121,46,115,112,99,104,101,97,100,0,109,100,46,109,101,115,104,46,115,101,103,109,101,110,116,115,0,109,100,46,104,121,100,114,111,108,111,103,121,46,104,101,97,100,0,109,100,46,104,121,100,114,111,108,111,103,121,46,103,97,112,95,104,101,105,103,104,116,0,109,100,46,104,121,100,114,111,108,111,103,121,46,101,110,103,108,97,99,105,97,108,95,105,110,112,117,116,0,109,100,46,104,121,100,114,111,108,111,103,121,46,109,111,117,108,105,110,95,105,110,112,117,116,0,109,100,46,104,121,100,114,111,108,111,103,121,46,98,117,109,112,95,115,112,97,99,105,110,103,0,109,100,46,104,121,100,114,111,108,111,103,121,46,98,117,109,112,95,104,101,105,103,104,116,0,109,100,46,104,121,100,114,111,108,111,103,121,46,114,101,121,110,111,108,100,115,0,109,100,46,104,121,100,114,111,108,111,103,121,46,110,101,117,109,97,110,110,102,108,117,120,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,72,121,100,114,111,108,111,103,121,83,111,109,109,101,114,115,65,110,97,108,121,115,105,115,46,99,112,112,0,51,48,72,121,100,114,111,108,111,103,121,68,67,73,110,101,102,102,105,99,105,101,110,116,65,110,97,108,121,115,105,115,0,109,100,46,104,121,100,114,111,108,111,103,121,46,115,101,100,105,109,101,110,116,108,105,109,105,116,95,102,108,97,103,0,109,100,46,104,121,100,114,111,108,111,103,121,46,116,114,97,110,115,102,101,114,95,102,108,97,103,0,109,100,46,104,121,100,114,111,108,111,103,121,46,112,101,110,97,108,116,121,95,102,97,99,116,111,114,0,109,100,46,104,121,100,114,111,108,111,103,121,46,114,101,108,95,116,111,108,0,109,100,46,104,121,100,114,111,108,111,103,121,46,112,101,110,97,108,116,121,95,108,111,99,107,0,109,100,46,104,121,100,114,111,108,111,103,121,46,109,97,120,95,105,116,101,114,0,109,100,46,104,121,100,114,111,108,111,103,121,46,115,101,100,105,109,101,110,116,108,105,109,105,116,0,109,100,46,104,121,100,114,111,108,111,103,121,46,108,101,97,107,97,103,101,95,102,97,99,116,111,114,0,109,100,46,104,121,100,114,111,108,111,103,121,46,98,97,115,97,108,95,109,111,117,108,105,110,95,105,110,112,117,116,0,109,100,46,104,121,100,114,111,108,111,103,121,46,115,101,100,105,109,101,110,116,95,116,114,97,110,115,109,105,116,105,118,105,116,121,0,109,100,46,104,121,100,114,111,108,111,103,121,46,109,97,115,107,95,101,112,108,97,99,116,105,118,101,95,110,111,100,101,0,109,100,46,104,121,100,114,111,108,111,103,121,46,115,112,99,115,101,100,105,109,101,110,116,95,104,101,97,100,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,72,121,100,114,111,108,111,103,121,68,67,73,110,101,102,102,105,99,105,101,110,116,65,110,97,108,121,115,105,115,46,99,112,112,0,50,56,72,121,100,114,111,108,111,103,121,68,67,69,102,102,105,99,105,101,110,116,65,110,97,108,121,115,105,115,0,109,100,46,104,121,100,114,111,108,111,103,121,46,101,112,108,102,108,105,112,95,108,111,99,107,0,109,100,46,104,121,100,114,111,108,111,103,121,46,101,112,108,95,116,104,105,99,107,95,99,111,109,112,0,109,100,46,105,110,105,116,105,97,108,105,122,97,116,105,111,110,46,115,101,100,105,109,101,110,116,95,104,101,97,100,0,109,100,46,105,110,105,116,105,97,108,105,122,97,116,105,111,110,46,101,112,108,95,116,104,105,99,107,110,101,115,115,0,109,100,46,104,121,100,114,111,108,111,103,121,46,115,112,99,101,112,108,95,104,101,97,100,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,72,121,100,114,111,108,111,103,121,68,67,69,102,102,105,99,105,101,110,116,65,110,97,108,121,115,105,115,46,99,112,112,0,110,111,32,99,97,115,101,32,104,105,103,104,101,114,32,116,104,97,110,32,49,32,102,111,114,32,116,104,101,32,84,114,97,110,115,102,101,114,32,109,101,116,104,111,100,0,71,101,116,72,121,100,114,111,108,111,103,121,75,77,97,116,114,105,120,84,114,97,110,115,102,101,114,0,71,101,116,72,121,100,114,111,108,111,103,121,80,86,101,99,116,111,114,84,114,97,110,115,102,101,114,0,110,111,116,32,73,109,112,108,101,109,101,110,116,101,100,32,89,101,116,0,67,111,109,112,117,116,101,69,80,76,84,104,105,99,107,110,101,115,115,0,72,121,100,114,111,108,111,103,121,69,80,76,71,101,116,77,97,115,107,0,85,115,105,110,103,32,110,111,114,109,97,108,32,115,116,114,101,115,115,32,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,0,71,101,116,72,121,100,114,111,108,111,103,121,68,67,73,110,101,102,102,105,99,105,101,110,116,72,109,97,120,0,110,111,32,99,97,115,101,32,104,105,103,104,101,114,32,116,104,97,110,32,51,32,102,111,114,32,83,101,100,105,109,101,110,116,108,105,109,105,116,70,108,97,103,0,72,121,100,114,111,108,111,103,121,69,80,76,71,101,116,65,99,116,105,118,101,0,50,51,76,50,80,114,111,106,101,99,116,105,111,110,69,80,76,65,110,97,108,121,115,105,115,0,109,100,46,104,121,100,114,111,108,111,103,121,46,109,111,100,101,108,0,109,100,46,104,121,100,114,111,108,111,103,121,46,105,115,101,102,102,105,99,105,101,110,116,108,97,121,101,114,0,109,100,46,105,110,105,116,105,97,108,105,122,97,116,105,111,110,46,101,112,108,95,104,101,97,100,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,76,50,80,114,111,106,101,99,116,105,111,110,69,80,76,65,110,97,108,121,115,105,115,46,99,112,112,0,49,53,77,101,108,116,105,110,103,65,110,97,108,121,115,105,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,77,101,108,116,105,110,103,65,110,97,108,121,115,105,115,46,99,112,112,0,50,49,77,97,115,115,116,114,97,110,115,112,111,114,116,65,110,97,108,121,115,105,115,0,109,100,46,109,97,115,115,116,114,97,110,115,112,111,114,116,46,115,116,97,98,105,108,105,122,97,116,105,111,110,0,109,100,46,109,97,115,115,116,114,97,110,115,112,111,114,116,46,115,112,99,116,104,105,99,107,110,101,115,115,0,68,71,32,51,100,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,77,97,115,115,116,114,97,110,115,112,111,114,116,65,110,97,108,121,115,105,115,46,99,112,112,0,109,100,46,116,114,97,110,115,105,101,110,116,46,105,115,103,114,111,117,110,100,105,110,103,108,105,110,101,0,109,100,46,116,114,97,110,115,105,101,110,116,46,105,115,115,109,98,0,109,100,46,102,108,111,119,101,113,117,97,116,105,111,110,46,105,115,70,83,0,109,100,46,109,97,115,115,116,114,97,110,115,112,111,114,116,46,105,115,102,114,101,101,115,117,114,102,97,99,101,0,109,100,46,109,97,115,115,116,114,97,110,115,112,111,114,116,46,104,121,100,114,111,115,116,97,116,105,99,95,97,100,106,117,115,116,109,101,110,116,0,109,100,46,109,97,115,115,116,114,97,110,115,112,111,114,116,46,109,105,110,95,116,104,105,99,107,110,101,115,115,0,109,100,46,109,97,115,115,116,114,97,110,115,112,111,114,116,46,112,101,110,97,108,116,121,95,102,97,99,116,111,114,0,109,100,46,109,97,115,115,116,114,97,110,115,112,111,114,116,46,114,101,113,117,101,115,116,101,100,95,111,117,116,112,117,116,115,0,69,108,101,109,101,110,116,32,116,121,112,101,32,0,67,114,101,97,116,101,75,77,97,116,114,105,120,67,71,0,83,116,97,98,105,108,105,122,97,116,105,111,110,32,0,72,121,100,114,111,115,116,97,116,105,99,32,97,100,106,117,115,116,109,101,110,116,32,0,49,49,83,109,98,65,110,97,108,121,115,105,115,0,109,100,46,115,109,98,46,84,97,0,109,100,46,115,109,98,46,86,0,109,100,46,115,109,98,46,100,115,119,114,102,0,109,100,46,115,109,98,46,100,108,119,114,102,0,109,100,46,115,109,98,46,80,0,109,100,46,115,109,98,46,101,65,105,114,0,109,100,46,115,109,98,46,112,65,105,114,0,109,100,46,115,109,98,46,122,84,111,112,0,109,100,46,115,109,98,46,100,122,84,111,112,0,109,100,46,115,109,98,46,100,122,77,105,110,0,109,100,46,115,109,98,46,122,89,0,109,100,46,115,109,98,46,122,77,97,120,0,109,100,46,115,109,98,46,122,77,105,110,0,109,100,46,115,109,98,46,84,109,101,97,110,0,109,100,46,115,109,98,46,67,0,109,100,46,115,109,98,46,84,122,0,109,100,46,115,109,98,46,86,122,0,109,100,46,115,109,98,46,105,115,100,101,108,116,97,49,56,111,0,109,100,46,115,109,98,46,105,115,109,117,110,103,115,109,0,109,100,46,115,109,98,46,115,48,112,0,109,100,46,115,109,98,46,115,48,116,0,109,100,46,115,109,98,46,116,101,109,112,101,114,97,116,117,114,101,115,95,108,103,109,0,109,100,46,115,109,98,46,116,101,109,112,101,114,97,116,117,114,101,115,95,112,114,101,115,101,110,116,100,97,121,0,109,100,46,115,109,98,46,112,114,101,99,105,112,105,116,97,116,105,111,110,115,95,112,114,101,115,101,110,116,100,97,121,0,109,100,46,115,109,98,46,112,114,101,99,105,112,105,116,97,116,105,111,110,115,95,108,103,109,0,109,100,46,115,109,98,46,112,114,101,99,105,112,105,116,97,116,105,111,110,0,109,100,46,115,109,98,46,109,111,110,116,104,108,121,116,101,109,112,101,114,97,116,117,114,101,115,0,109,100,46,115,109,98,46,105,115,100,49,56,111,112,100,0,109,100,46,115,109,98,46,104,114,101,102,0,109,100,46,115,109,98,46,115,109,98,114,101,102,0,109,100,46,115,109,98,46,98,95,112,111,115,0,109,100,46,115,109,98,46,98,95,110,101,103,0,109,100,46,115,109,98,46,97,99,99,117,109,117,108,97,116,105,111,110,0,109,100,46,115,109,98,46,101,118,97,112,111,114,97,116,105,111,110,0,109,100,46,115,109,98,46,114,117,110,111,102,102,0,109,100,46,115,109,98,46,109,101,108,116,0,109,100,46,115,109,98,46,114,101,102,114,101,101,122,101,0,83,117,114,102,97,99,101,32,109,97,115,115,32,98,97,108,97,110,99,101,32,109,111,100,101,108,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,83,109,98,65,110,97,108,121,115,105,115,46,99,112,112,0,109,100,46,116,105,109,101,115,116,101,112,112,105,110,103,46,105,110,116,101,114,112,95,102,111,114,99,105,110,103,115,0,109,100,46,115,109,98,46,97,73,100,120,0,109,100,46,115,109,98,46,115,119,73,100,120,0,109,100,46,115,109,98,46,100,101,110,73,100,120,0,109,100,46,115,109,98,46,111,117,116,112,117,116,70,114,101,113,0,109,100,46,115,109,98,46,99,108,100,70,114,97,99,0,109,100,46,115,109,98,46,116,48,119,101,116,0,109,100,46,115,109,98,46,116,48,100,114,121,0,109,100,46,115,109,98,46,75,0,109,100,46,115,109,98,46,97,83,110,111,119,0,109,100,46,115,109,98,46,97,73,99,101,0,109,100,46,115,109,98,46,100,116,0,109,100,46,115,109,98,46,105,115,103,114,97,105,110,103,114,111,119,116,104,0,109,100,46,115,109,98,46,105,115,97,108,98,101,100,111,0,109,100,46,115,109,98,46,105,115,115,104,111,114,116,119,97,118,101,0,109,100,46,115,109,98,46,105,115,116,104,101,114,109,97,108,0,109,100,46,115,109,98,46,105,115,97,99,99,117,109,117,108,97,116,105,111,110,0,109,100,46,115,109,98,46,105,115,109,101,108,116,0,109,100,46,115,109,98,46,105,115,100,101,110,115,105,102,105,99,97,116,105,111,110,0,109,100,46,115,109,98,46,105,115,116,117,114,98,117,108,101,110,116,102,108,117,120,0,109,100,46,115,109,98,46,73,110,105,116,68,101,110,115,105,116,121,83,99,97,108,105,110,103,0,109,100,46,115,109,98,46,100,101,115,102,97,99,0,109,100,46,115,109,98,46,114,108,97,112,115,0,109,100,46,115,109,98,46,114,108,97,112,115,108,103,109,0,109,100,46,115,109,98,46,80,102,97,99,0,109,100,46,115,109,98,46,84,100,105,102,102,0,109,100,46,115,109,98,46,115,101,97,108,101,118,0,109,100,46,115,109,98,46,100,101,108,116,97,49,56,111,0,109,100,46,115,109,98,46,100,101,108,116,97,49,56,111,95,115,117,114,102,97,99,101,0,109,100,46,115,109,98,46,100,112,101,114,109,105,108,0,109,100,46,115,109,98,46,114,101,113,117,101,115,116,101,100,95,111,117,116,112,117,116,115,0,32,32,32,99,97,108,108,32,68,101,108,116,97,49,56,111,80,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,32,109,111,100,117,108,101,10,0,32,32,32,99,97,108,108,32,77,117,110,103,115,109,116,112,80,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,32,109,111,100,117,108,101,10,0,32,32,32,99,97,108,108,32,112,111,115,105,116,105,118,101,32,100,101,103,114,101,101,32,100,97,121,32,109,111,100,117,108,101,10,0,32,32,32,99,97,108,108,32,68,101,108,116,97,49,56,111,112,100,80,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,32,109,111,100,117,108,101,10,0,9,99,97,108,108,32,115,109,98,32,103,114,97,100,105,101,110,116,115,32,109,111,100,117,108,101,10,0,32,32,99,97,108,108,32,115,109,98,32,72,101,110,110,105,110,103,32,109,111,100,117,108,101,10,0,32,32,99,97,108,108,32,115,109,98,32,67,111,109,112,111,110,101,110,116,115,32,109,111,100,117,108,101,10,0,32,32,99,97,108,108,32,115,109,98,32,77,101,108,116,32,67,111,109,112,111,110,101,110,116,115,32,109,111,100,117,108,101,10,0,67,114,101,97,116,101,68,86,101,99,116,111,114,0,50,51,70,114,101,101,83,117,114,102,97,99,101,66,97,115,101,65,110,97,108,121,115,105,115,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,103,114,111,117,110,100,101,100,105,99,101,95,109,101,108,116,105,110,103,95,114,97,116,101,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,102,108,111,97,116,105,110,103,105,99,101,95,109,101,108,116,105,110,103,95,114,97,116,101,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,70,114,101,101,83,117,114,102,97,99,101,66,97,115,101,65,110,97,108,121,115,105,115,46,99,112,112,0,50,50,70,114,101,101,83,117,114,102,97,99,101,84,111,112,65,110,97,108,121,115,105,115,0,109,100,46,109,97,115,115,116,114,97,110,115,112,111,114,116,46,118,101,114,116,101,120,95,112,97,105,114,105,110,103,0,109,100,46,115,109,98,46,109,97,115,115,95,98,97,108,97,110,99,101,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,70,114,101,101,83,117,114,102,97,99,101,84,111,112,65,110,97,108,121,115,105,115,46,99,112,112,0,50,51,69,120,116,114,117,100,101,70,114,111,109,66,97,115,101,65,110,97,108,121,115,105,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,69,120,116,114,117,100,101,70,114,111,109,66,97,115,101,65,110,97,108,121,115,105,115,46,99,112,112,0,50,50,69,120,116,114,117,100,101,70,114,111,109,84,111,112,65,110,97,108,121,115,105,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,69,120,116,114,117,100,101,70,114,111,109,84,111,112,65,110,97,108,121,115,105,115,46,99,112,112,0,50,48,68,101,112,116,104,65,118,101,114,97,103,101,65,110,97,108,121,115,105,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,68,101,112,116,104,65,118,101,114,97,103,101,65,110,97,108,121,115,105,115,46,99,112,112,0,49,53,84,104,101,114,109,97,108,65,110,97,108,121,115,105,115,0,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,84,104,101,114,109,97,108,65,110,97,108,121,115,105,115,46,99,112,112,0,109,100,46,115,109,98,46,109,111,100,101,108,0,83,111,108,117,116,105,111,110,32,0,109,100,46,116,104,101,114,109,97,108,46,115,112,99,116,101,109,112,101,114,97,116,117,114,101,0,50,100,32,109,101,115,104,101,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,0,109,100,46,113,109,117,46,105,115,100,97,107,111,116,97,0,109,100,46,116,114,97,110,115,105,101,110,116,46,105,115,109,111,118,105,110,103,102,114,111,110,116,0,109,100,46,102,114,105,99,116,105,111,110,46,108,97,119,0,109,100,46,103,101,111,109,101,116,114,121,46,115,117,114,102,97,99,101,0,109,100,46,103,101,111,109,101,116,114,121,46,98,97,115,101,0,109,100,46,109,97,115,107,46,103,114,111,117,110,100,101,100,105,99,101,95,108,101,118,101,108,115,101,116,0,109,100,46,109,97,116,101,114,105,97,108,115,46,114,104,101,111,108,111,103,121,95,66,0,109,100,46,109,97,116,101,114,105,97,108,115,46,114,104,101,111,108,111,103,121,95,110,0,109,100,46,105,110,105,116,105,97,108,105,122,97,116,105,111,110,46,112,114,101,115,115,117,114,101,0,109,100,46,105,110,105,116,105,97,108,105,122,97,116,105,111,110,46,116,101,109,112,101,114,97,116,117,114,101,0,109,100,46,105,110,105,116,105,97,108,105,122,97,116,105,111,110,46,118,122,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,109,111,100,101,108,0,109,100,46,98,97,115,97,108,102,111,114,99,105,110,103,115,46,103,101,111,116,104,101,114,109,97,108,102,108,117,120,0,109,100,46,102,114,105,99,116,105,111,110,46,99,111,101,102,102,105,99,105,101,110,116,0,109,100,46,102,114,105,99,116,105,111,110,46,112,0,109,100,46,102,114,105,99,116,105,111,110,46,113,0,109,100,46,102,114,105,99,116,105,111,110,46,67,0,109,100,46,102,114,105,99,116,105,111,110,46,109,0,109,100,46,102,114,105,99,116,105,111,110,46,99,111,117,112,108,105,110,103,0,109,100,46,102,114,105,99,116,105,111,110,46,65,115,0,109,100,46,102,114,105,99,116,105,111,110,46,101,102,102,101,99,116,105,118,101,95,112,114,101,115,115,117,114,101,0,109,100,46,102,114,105,99,116,105,111,110,46,119,97,116,101,114,95,108,97,121,101,114,0,109,100,46,116,104,101,114,109,97,108,46,109,97,120,105,116,101,114,0,109,100,46,116,104,101,114,109,97,108,46,115,116,97,98,105,108,105,122,97,116,105,111,110,0,109,100,46,116,104,101,114,109,97,108,46,112,101,110,97,108,116,121,95,102,97,99,116,111,114,0,109,100,46,116,104,101,114,109,97,108,46,112,101,110,97,108,116,121,95,116,104,114,101,115,104,111,108,100,0,109,100,46,116,104,101,114,109,97,108,46,112,101,110,97,108,116,121,95,108,111,99,107,0,109,100,46,116,104,101,114,109,97,108,46,105,115,101,110,116,104,97,108,112,121,0,109,100,46,116,104,101,114,109,97,108,46,105,115,100,121,110,97,109,105,99,98,97,115,97,108,115,112,99,0,109,100,46,116,104,101,114,109,97,108,46,114,101,113,117,101,115,116,101,100,95,111,117,116,112,117,116,115,0,109,100,46,102,114,105,99,116,105,111,110,46,103,97,109,109,97,0,78,97,78,32,102,111,117,110,100,32,105,110,32,115,111,108,117,116,105,111,110,32,118,101,99,116,111,114,0,73,110,102,32,102,111,117,110,100,32,105,110,32,115,111,108,117,116,105,111,110,32,118,101,99,116,111,114,0,82,104,101,111,108,111,103,121,32,108,97,119,32,0,49,52,83,109,111,111,116,104,65,110,97,108,121,115,105,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,83,109,111,111,116,104,65,110,97,108,121,115,105,115,46,99,112,112,0,50,51,77,101,115,104,100,101,102,111,114,109,97,116,105,111,110,65,110,97,108,121,115,105,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,77,101,115,104,100,101,102,111,114,109,97,116,105,111,110,65,110,97,108,121,115,105,115,46,99,112,112,0,67,114,101,97,116,101,67,111,110,115,116,114,97,105,110,116,115,0,67,114,101,97,116,101,76,111,97,100,115,0,68,111,102,115,80,101,114,78,111,100,101,0,49,54,76,101,118,101,108,115,101,116,65,110,97,108,121,115,105,115,0,109,100,46,108,101,118,101,108,115,101,116,46,115,112,99,108,101,118,101,108,115,101,116,0,109,100,46,105,110,105,116,105,97,108,105,122,97,116,105,111,110,46,118,120,0,109,100,46,105,110,105,116,105,97,108,105,122,97,116,105,111,110,46,118,121,0,109,100,46,99,97,108,118,105,110,103,46,108,97,119,0,109,100,46,99,97,108,118,105,110,103,46,99,97,108,118,105,110,103,114,97,116,101,0,109,100,46,99,97,108,118,105,110,103,46,109,101,108,116,105,110,103,114,97,116,101,0,109,100,46,99,97,108,118,105,110,103,46,99,111,101,102,102,0,67,97,108,118,105,110,103,32,108,97,119,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,76,101,118,101,108,115,101,116,65,110,97,108,121,115,105,115,46,99,112,112,0,85,112,100,97,116,101,69,108,101,109,101,110,116,115,0,109,100,46,108,101,118,101,108,115,101,116,46,115,116,97,98,105,108,105,122,97,116,105,111,110,0,109,100,46,99,97,108,118,105,110,103,46,109,105,110,95,116,104,105,99,107,110,101,115,115,0,85,112,100,97,116,101,80,97,114,97,109,101,116,101,114,115,0,99,97,108,108,32,99,111,109,112,117,116,97,116,105,111,110,97,108,32,99,111,114,101,58,10,0,117,110,107,110,111,119,110,32,116,121,112,101,32,111,102,32,115,116,97,98,105,108,105,122,97,116,105,111,110,32,105,110,32,76,101,118,101,108,115,101,116,65,110,97,108,121,115,105,115,46,99,112,112,0,32,32,32,99,111,109,112,117,116,105,110,103,32,76,101,118,101,114,109,97,110,110,39,115,32,99,97,108,118,105,110,103,32,114,97,116,101,10,0,67,97,118,105,110,103,32,108,97,119,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,67,97,108,118,105,110,103,120,47,67,97,108,118,105,110,103,120,46,99,112,112,0,67,97,108,118,105,110,103,120,0,50,49,69,120,116,114,97,112,111,108,97,116,105,111,110,65,110,97,108,121,115,105,115,0,101,120,116,114,97,112,111,108,97,116,105,111,110,32,111,102,32,0,58,32,99,97,108,108,32,99,111,109,112,117,116,97,116,105,111,110,97,108,32,99,111,114,101,58,10,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,69,120,116,114,97,112,111,108,97,116,105,111,110,65,110,97,108,121,115,105,115,46,99,112,112,0,50,55,76,115,102,82,101,105,110,105,116,105,97,108,105,122,97,116,105,111,110,65,110,97,108,121,115,105,115,0,109,100,46,109,101,115,104,46,118,101,114,116,101,120,111,110,98,97,115,101,0,109,100,46,109,101,115,104,46,118,101,114,116,101,120,111,110,115,117,114,102,97,99,101,0,85,112,100,97,116,101,32,115,112,99,115,32,102,111,114,32,114,101,105,110,105,116,105,97,108,105,122,97,116,105,111,110,58,10,0,115,109,111,111,116,104,105,110,103,32,108,115,102,32,115,108,111,112,101,10,0,99,97,108,108,32,99,111,109,112,117,116,97,116,105,111,110,97,108,32,99,111,114,101,32,102,111,114,32,114,101,105,110,105,116,105,97,108,105,122,97,116,105,111,110,32,105,110,32,115,116,101,112,32,0,58,10,0,32,32,32,99,104,101,99,107,105,110,103,32,114,101,105,110,105,116,105,97,108,105,122,97,116,105,111,110,32,99,111,110,118,101,114,103,101,110,99,101,10,0,32,32,32,109,97,120,105,109,117,109,32,110,117,109,98,101,114,32,114,101,105,110,105,116,105,97,108,105,122,97,116,105,111,110,32,105,116,101,114,97,116,105,111,110,115,32,0,32,114,101,97,99,104,101,100,10,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,76,115,102,82,101,105,110,105,116,105,97,108,105,122,97,116,105,111,110,65,110,97,108,121,115,105,115,46,99,112,112,0,82,101,105,110,105,116,67,111,110,118,101,114,103,101,110,99,101,0,32,32,32,86,101,108,111,99,105,116,121,32,99,111,110,118,101,114,103,101,110,99,101,58,32,110,111,114,109,40,100,117,41,47,110,111,114,109,40,117,41,0,32,32,32,99,111,109,112,117,116,105,110,103,32,71,73,65,10,0,49,49,71,105,97,65,110,97,108,121,115,105,115,0,109,100,46,103,101,111,109,101,116,114,121,46,116,104,105,99,107,110,101,115,115,0,109,100,46,103,105,97,46,109,97,110,116,108,101,95,118,105,115,99,111,115,105,116,121,0,109,100,46,103,105,97,46,108,105,116,104,111,115,112,104,101,114,101,95,116,104,105,99,107,110,101,115,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,71,105,97,65,110,97,108,121,115,105,115,46,99,112,112,0,73,110,112,117,116,85,112,100,97,116,101,70,114,111,109,83,111,108,117,116,105,111,110,0,32,32,32,99,111,109,112,117,116,105,110,103,32,115,101,97,32,108,101,118,101,108,32,114,105,115,101,10,0,84,114,97,110,115,102,101,114,70,111,114,99,105,110,103,32,101,114,114,111,114,32,109,101,115,115,97,103,101,58,32,99,111,117,108,100,32,110,111,116,32,102,105,110,100,32,73,99,101,99,97,112,84,111,69,97,114,116,104,67,111,109,109,32,99,111,109,109,117,110,105,99,97,116,111,114,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,111,114,101,115,47,115,101,97,108,101,118,101,108,114,105,115,101,95,99,111,114,101,46,99,112,112,0,84,114,97,110,115,102,101,114,70,111,114,99,105,110,103,0,84,114,97,110,115,102,101,114,70,111,114,99,105,110,103,32,101,114,114,111,114,32,109,101,115,115,97,103,101,58,32,110,117,109,98,101,114,32,111,102,32,116,114,97,110,115,105,116,105,111,110,32,118,101,99,116,111,114,115,32,105,115,32,110,111,116,32,101,113,117,97,108,32,116,111,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,105,99,101,99,97,112,115,33,0,84,114,97,110,115,102,101,114,83,101,97,76,101,118,101,108,32,101,114,114,111,114,32,109,101,115,115,97,103,101,58,32,110,117,109,98,101,114,32,111,102,32,116,114,97,110,115,105,116,105,111,110,32,118,101,99,116,111,114,115,32,105,115,32,110,111,116,32,101,113,117,97,108,32,116,111,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,105,99,101,99,97,112,115,33,0,84,114,97,110,115,102,101,114,83,101,97,108,101,118,101,108,0,49,50,71,101,110,101,114,105,99,80,97,114,97,109,73,80,105,69,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,111,114,101,115,47,115,101,97,108,101,118,101,108,114,105,115,101,95,99,111,114,101,95,110,111,110,101,117,115,116,97,116,105,99,46,99,112,112,0,115,108,114,99,111,110,118,101,114,103,101,110,99,101,0,32,32,32,32,32,32,99,111,110,118,101,114,103,101,110,99,101,32,99,114,105,116,101,114,105,111,110,58,32,110,111,114,109,40,100,83,41,47,110,111,114,109,40,83,41,0,32,32,32,32,32,32,99,111,110,118,101,114,103,101,110,99,101,32,99,114,105,116,101,114,105,111,110,58,32,110,111,114,109,40,100,83,41,0,32,10,0,50,48,83,101,97,108,101,118,101,108,114,105,115,101,65,110,97,108,121,115,105,115,0,109,100,46,109,97,115,107,46,105,99,101,95,108,101,118,101,108,115,101,116,0,109,100,46,109,97,115,107,46,111,99,101,97,110,95,108,101,118,101,108,115,101,116,0,109,100,46,109,97,115,107,46,108,97,110,100,95,108,101,118,101,108,115,101,116,0,109,100,46,115,108,114,46,100,101,108,116,97,116,104,105,99,107,110,101,115,115,0,109,100,46,115,108,114,46,115,101,97,108,101,118,101,108,0,109,100,46,115,108,114,46,114,101,108,116,111,108,0,109,100,46,115,108,114,46,97,98,115,116,111,108,0,109,100,46,115,108,114,46,109,97,120,105,116,101,114,0,109,100,46,115,108,114,46,114,105,103,105,100,0,109,100,46,115,108,114,46,101,108,97,115,116,105,99,0,109,100,46,115,108,114,46,108,111,118,101,95,104,0,109,100,46,115,108,114,46,108,111,118,101,95,107,0,109,100,46,115,108,114,46,100,101,103,97,99,99,0,109,100,46,115,108,114,46,116,114,97,110,115,105,116,105,111,110,115,0,109,100,46,115,108,114,46,114,101,113,117,101,115,116,101,100,95,111,117,116,112,117,116,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,97,110,97,108,121,115,101,115,47,83,101,97,108,101,118,101,108,114,105,115,101,65,110,97,108,121,115,105,115,46,99,112,112,0,67,111,114,101,0,78,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,71,101,116,83,111,108,117,116,105,111,110,70,114,111,109,73,110,112,117,116,115,0,71,114,97,100,105,101,110,116,74,0,56,71,97,117,115,115,83,101,103,0,71,97,117,115,115,83,101,103,58,10,0,118,101,114,116,101,120,32,105,110,100,101,120,32,115,104,111,117,108,100,32,98,101,32,105,110,32,91,48,32,49,93,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,103,97,117,115,115,47,71,97,117,115,115,83,101,103,46,99,112,112,0,110,111,100,101,32,105,110,100,101,120,32,115,104,111,117,108,100,32,98,101,32,105,110,32,91,48,32,49,93,0,53,71,97,117,115,115,0,57,71,97,117,115,115,84,114,105,97,0,70,105,114,115,116,32,105,110,100,105,99,101,32,112,114,111,118,105,100,101,100,32,105,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,32,40,117,115,101,114,32,112,114,111,118,105,100,101,100,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,103,97,117,115,115,47,71,97,117,115,115,84,114,105,97,46,99,112,112,0,71,97,117,115,115,84,114,105,97,0,83,101,99,111,110,100,32,105,110,100,105,99,101,32,112,114,111,118,105,100,101,100,32,105,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,32,40,117,115,101,114,32,112,114,111,118,105,100,101,100,32,0,32,41,0,71,97,117,115,115,84,114,105,97,58,10,0,84,104,101,32,50,32,105,110,100,105,99,101,115,32,112,114,111,118,105,100,101,100,32,97,114,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,32,40,117,115,101,114,32,112,114,111,118,105,100,101,100,32,0,32,97,110,100,32,0,71,97,117,115,115,69,100,103,101,67,101,110,116,101,114,0,118,101,114,116,101,120,32,105,110,100,101,120,32,115,104,111,117,108,100,32,98,101,32,105,110,32,91,48,32,50,93,0,110,111,100,101,32,105,110,100,101,120,32,115,104,111,117,108,100,32,98,101,32,48,0,110,111,100,101,32,105,110,100,101,120,32,115,104,111,117,108,100,32,98,101,32,105,110,32,91,48,32,50,93,0,49,48,71,97,117,115,115,84,101,116,114,97,0,32,78,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,103,97,117,115,115,47,71,97,117,115,115,84,101,116,114,97,46,99,112,112,0,71,97,117,115,115,84,101,116,114,97,0,71,97,117,115,115,84,101,116,114,97,58,10,0,118,101,114,116,101,120,32,105,110,100,101,120,32,115,104,111,117,108,100,32,98,101,32,105,110,32,91,48,32,51,93,0,110,111,100,101,32,105,110,100,101,120,32,115,104,111,117,108,100,32,98,101,32,105,110,32,91,48,32,51,93,0,110,111,100,101,32,105,110,100,101,120,32,115,104,111,117,108,100,32,98,101,32,105,110,32,91,48,32,52,93,0,110,111,100,101,32,105,110,100,101,120,32,115,104,111,117,108,100,32,98,101,32,105,110,32,91,48,32,57,93,0,83,121,110,99,104,114,111,110,105,122,101,71,97,117,115,115,66,97,115,101,0,49,48,71,97,117,115,115,80,101,110,116,97,0,80,101,110,116,97,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,103,97,117,115,115,47,71,97,117,115,115,80,101,110,116,97,46,99,112,112,0,71,97,117,115,115,80,101,110,116,97,0,84,114,105,97,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,0,105,110,100,101,120,32,0,71,97,117,115,115,80,101,110,116,97,58,10,0,32,32,32,110,117,109,103,97,117,115,115,58,32,0,32,32,32,119,101,105,103,104,116,115,32,61,32,91,0,119,101,105,103,104,116,115,32,61,32,78,85,76,76,10,0,32,32,32,99,111,111,114,100,115,49,32,61,32,91,0,99,111,111,114,100,115,49,32,61,32,78,85,76,76,10,0,32,32,32,99,111,111,114,100,115,50,32,61,32,91,0,99,111,111,114,100,115,50,32,61,32,78,85,76,76,10,0,32,32,32,99,111,111,114,100,115,51,32,61,32,91,0,99,111,111,114,100,115,51,32,61,32,78,85,76,76,10,0,32,32,32,99,111,111,114,100,115,52,32,61,32,91,0,99,111,111,114,100,115,52,32,61,32,78,85,76,76,10,0,32,32,32,119,101,105,103,104,116,32,61,32,0,32,32,32,99,111,111,114,100,49,32,61,32,0,32,32,32,99,111,111,114,100,50,32,61,32,0,32,32,32,99,111,111,114,100,51,32,61,32,0,32,32,32,99,111,111,114,100,52,32,61,32,0,118,101,114,116,101,120,32,105,110,100,101,120,32,115,104,111,117,108,100,32,98,101,32,105,110,32,91,48,32,53,93,0,71,97,117,115,115,86,101,114,116,101,120,0,110,111,100,101,32,105,110,100,101,120,32,115,104,111,117,108,100,32,98,101,32,105,110,32,91,48,32,53,93,0,71,97,117,115,115,78,111,100,101,0,110,111,100,101,32,105,110,100,101,120,32,115,104,111,117,108,100,32,98,101,32,105,110,32,91,48,32,56,93,0,110,111,100,101,32,105,110,100,101,120,32,115,104,111,117,108,100,32,98,101,32,105,110,32,91,48,32,49,49,93,0,110,111,100,101,32,105,110,100,101,120,32,115,104,111,117,108,100,32,98,101,32,105,110,32,91,48,32,54,93,0,110,111,100,101,32,105,110,100,101,120,32,115,104,111,117,108,100,32,98,101,32,105,110,32,91,48,32,49,55,93,0,110,111,100,101,32,105,110,100,101,120,32,115,104,111,117,108,100,32,98,101,32,105,110,32,91,48,32,49,56,93,0,110,111,100,101,32,105,110,100,101,120,32,115,104,111,117,108,100,32,98,101,32,105,110],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+129512);allocate([32,91,48,32,50,57,93,0,109,100,46,97,117,116,111,100,105,102,102,46,105,115,97,117,116,111,100,105,102,102,0,109,100,46,105,110,118,101,114,115,105,111,110,46,105,115,99,111,110,116,114,111,108,0,109,100,46,109,101,115,104,46,100,111,109,97,105,110,95,116,121,112,101,0,109,100,46,109,101,115,104,46,100,111,109,97,105,110,95,100,105,109,101,110,115,105,111,110,0,109,100,46,109,101,115,104,46,101,108,101,109,101,110,116,116,121,112,101,0,109,100,46,109,101,115,104,46,110,117,109,98,101,114,111,102,118,101,114,116,105,99,101,115,0,109,100,46,109,101,115,104,46,110,117,109,98,101,114,111,102,101,108,101,109,101,110,116,115,0,109,100,46,109,101,115,104,46,101,108,101,109,101,110,116,115,0,101,114,114,111,114,32,119,104,105,108,101,32,108,111,111,107,105,110,103,32,105,110,32,98,105,110,97,114,121,32,102,105,108,101,46,32,70,111,117,110,100,32,97,32,115,116,114,105,110,103,32,111,102,32,115,105,122,101,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,73,111,77,111,100,101,108,46,99,112,112,0,67,104,101,99,107,70,105,108,101,0,109,100,46,0,101,114,114,111,114,32,119,104,105,108,101,32,114,101,97,100,105,110,103,32,98,105,110,97,114,121,32,102,105,108,101,58,32,114,101,99,111,114,100,32,100,111,101,115,32,110,111,116,32,115,116,97,114,116,32,119,105,116,104,32,34,109,100,46,34,58,32,0,109,100,46,69,79,70,0,67,111,117,108,100,32,110,111,116,32,114,101,97,100,32,114,101,99,111,114,100,95,108,101,110,103,116,104,0,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,10,0,32,77,97,114,115,104,97,108,108,101,100,32,102,105,108,101,32,105,115,32,99,111,114,114,117,112,116,101,100,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,32,32,32,42,32,76,97,115,116,32,114,101,99,111,114,100,32,102,111,117,110,100,32,105,115,32,58,32,10,0,32,32,32,32,32,116,104,101,32,99,111,114,114,101,115,112,111,110,100,105,110,103,32,109,111,100,101,108,32,102,105,101,108,100,32,104,97,115,32,112,114,111,98,97,98,108,121,32,98,101,101,110,32,109,97,114,115,104,97,108,108,101,100,32,32,32,32,32,32,32,32,32,32,10,0,32,32,32,32,32,105,110,99,111,114,114,101,99,116,108,121,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,66,105,110,97,114,121,32,102,105,108,101,32,99,111,114,114,117,112,116,101,100,32,40,83,101,101,32,101,114,114,111,114,32,109,101,115,115,97,103,101,32,97,98,111,118,101,41,0,67,97,110,110,111,116,32,99,97,114,114,121,32,111,117,116,32,65,68,32,109,111,100,101,32,99,111,109,112,117,116,97,116,105,111,110,115,32,119,105,116,104,111,117,116,32,115,117,112,112,111,114,116,32,111,102,32,65,68,79,76,67,32,99,111,109,112,105,108,101,100,32,105,110,33,0,68,101,99,108,97,114,101,73,110,100,101,112,101,110,100,101,110,116,115,0,70,101,116,99,104,67,111,110,115,116,97,110,116,115,0,67,111,117,108,100,32,110,111,116,32,114,101,97,100,32,114,101,99,111,114,100,32,110,97,109,101,0,67,111,117,110,100,32,110,111,116,32,114,101,97,100,32,114,101,99,111,114,100,95,108,101,110,103,116,104,0,67,111,117,110,100,32,110,111,116,32,114,101,97,100,32,114,101,99,111,114,100,95,99,111,100,101,0,99,111,117,108,100,32,110,111,116,32,114,101,97,100,32,98,111,111,108,101,97,110,32,0,99,111,117,108,100,32,110,111,116,32,114,101,97,100,32,105,110,116,101,103,101,114,32,0,99,111,117,108,100,32,110,111,116,32,114,101,97,100,32,115,99,97,108,97,114,32,0,99,111,117,108,100,32,110,111,116,32,114,101,97,100,32,108,101,110,103,116,104,32,111,102,32,115,116,114,105,110,103,32,0,32,99,111,117,108,100,32,110,111,116,32,114,101,97,100,32,115,116,114,105,110,103,32,0,99,111,117,108,100,32,110,111,116,32,114,101,97,100,32,108,101,110,103,116,104,32,111,102,32,115,116,114,105,110,103,32,97,114,114,97,121,0,117,110,107,110,111,119,110,32,114,101,99,111,114,100,32,116,121,112,101,58,0,67,111,117,108,100,32,110,111,116,32,102,105,110,100,32,99,111,110,115,116,97,110,116,32,34,0,34,0,70,105,110,100,67,111,110,115,116,97,110,116,0,101,120,112,101,99,116,105,110,103,32,97,110,32,105,110,116,101,103,101,114,32,102,111,114,32,34,0,70,101,116,99,104,68,97,116,97,0,101,120,112,101,99,116,105,110,103,32,97,32,73,115,115,109,68,111,117,98,108,101,44,32,105,110,116,101,103,101,114,32,111,114,32,98,111,111,108,101,97,110,32,109,97,116,114,105,120,32,102,111,114,32,34,0,32,40,67,111,100,101,32,105,115,32,0,41,0,99,111,117,108,100,32,110,111,116,32,114,101,97,100,32,110,117,109,98,101,114,32,111,102,32,114,111,119,115,32,102,111,114,32,109,97,116,114,105,120,32,0,99,111,117,108,100,32,110,111,116,32,114,101,97,100,32,110,117,109,98,101,114,32,111,102,32,99,111,108,117,109,110,115,32,102,111,114,32,109,97,116,114,105,120,32,0,99,111,117,108,100,32,110,111,116,32,114,101,97,100,32,109,97,116,114,105,120,32,0,67,111,110,115,116,97,110,116,32,34,0,34,32,110,111,116,32,102,111,117,110,100,32,105,110,32,105,111,109,111,100,101,108,0,67,111,112,121,67,111,110,115,116,97,110,116,79,98,106,101,99,116,0,101,120,112,101,99,116,105,110,103,32,97,32,98,111,111,108,101,97,110,32,102,111,114,32,34,0,83,116,114,105,110,103,32,112,114,111,118,105,100,101,100,32,100,111,101,115,32,110,111,116,32,115,116,97,114,116,32,119,105,116,104,32,34,109,100,46,34,32,40,0,68,101,108,101,116,101,68,97,116,97,0,83,101,116,70,105,108,101,80,111,105,110,116,101,114,84,111,68,97,116,97,0,67,111,117,108,100,32,110,111,116,32,114,101,97,100,32,114,101,99,111,114,100,95,99,111,100,101,0,67,111,117,108,100,32,110,111,116,32,114,101,97,100,32,118,101,99,116,111,114,95,116,121,112,101,0,99,111,117,108,100,32,110,111,116,32,102,105,110,100,32,100,97,116,97,32,119,105,116,104,32,110,97,109,101,32,34,0,34,32,105,110,32,98,105,110,97,114,121,32,102,105,108,101,0,101,120,112,101,99,116,105,110,103,32,97,32,73,115,115,109,68,111,117,98,108,101,32,102,111,114,32,34,0,101,120,112,101,99,116,105,110,103,32,97,32,115,116,114,105,110,103,32,102,111,114,32,34,0,101,120,112,101,99,116,105,110,103,32,97,32,73,115,115,109,68,111,117,98,108,101,32,109,97,116,32,97,114,114,97,121,32,102,111,114,32,34,0,99,111,117,108,100,32,110,111,116,32,114,101,97,100,32,110,117,109,98,101,114,32,111,102,32,114,101,99,111,114,100,115,32,105,110,32,109,97,116,114,105,120,32,97,114,114,97,121,32,0,99,111,117,108,100,32,110,111,116,32,114,101,97,100,32,110,117,109,98,101,114,32,111,102,32,114,111,119,115,32,105,110,32,0,116,104,32,109,97,116,114,105,120,32,111,102,32,109,97,116,114,105,120,32,97,114,114,97,121,0,99,111,117,108,100,32,110,111,116,32,114,101,97,100,32,110,117,109,98,101,114,32,111,102,32,99,111,108,117,109,110,115,32,105,110,32,0,70,101,116,99,104,77,117,108,116,105,112,108,101,68,97,116,97,0,83,101,116,70,105,108,101,80,111,105,110,116,101,114,115,84,111,68,97,116,97,0,101,120,112,101,99,116,105,110,103,32,97,32,100,111,117,98,108,101,32,102,111,114,32,34,0,32,105,115,32,110,111,116,32,97,32,100,111,117,98,108,101,32,97,114,114,97,121,0,70,101,116,99,104,68,97,116,97,84,111,73,110,112,117,116,0,34,32,110,111,116,32,102,111,117,110,100,32,105,110,32,98,105,110,97,114,121,32,102,105,108,101,0,100,97,116,97,32,99,111,100,101,32,0,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,32,40,100,101,116,101,99,116,101,100,32,119,104,105,108,101,32,112,114,111,99,101,115,115,105,110,103,32,34,0,34,41,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,76,111,97,100,115,47,70,114,105,99,116,105,111,110,46,99,112,112,0,71,101,116,65,108,112,104,97,67,111,109,112,108,101,109,101,110,116,0,71,101,116,65,108,112,104,97,86,105,115,99,111,117,115,67,111,109,112,108,101,109,101,110,116,0,71,101,116,65,108,112,104,97,72,121,100,114,111,67,111,109,112,108,101,109,101,110,116,0,70,114,105,99,116,105,111,110,32,108,97,119,32,0,71,101,116,65,108,112,104,97,50,0,71,101,116,65,108,112,104,97,50,86,105,115,99,111,117,115,0,71,101,116,65,108,112,104,97,50,87,101,101,114,116,109,97,110,0,71,101,116,65,108,112,104,97,50,72,121,100,114,111,0,110,101,103,97,116,105,118,101,32,119,97,116,101,114,32,108,97,121,101,114,32,116,104,105,99,107,110,101,115,115,0,71,101,116,65,108,112,104,97,50,87,97,116,101,114,76,97,121,101,114,0,71,101,116,65,108,112,104,97,50,67,111,117,108,111,109,98,0,100,101,115,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,46,46,47,115,104,97,114,101,100,47,77,101,109,79,112,115,47,77,101,109,79,112,115,46,104,0,120,77,101,109,67,112,121,0,115,114,99,0,115,101,116,32,111,102,32,101,110,117,109,32,116,121,112,101,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,68,111,102,73,110,100,101,120,105,110,103,46,99,112,112,0,73,110,105,116,83,101,116,0,68,111,102,73,110,100,101,120,105,110,103,58,10,0,32,32,32,103,115,105,122,101,58,32,32,0,32,32,32,102,115,105,122,101,58,32,32,0,32,32,32,115,115,105,122,101,58,32,32,0,32,32,32,99,108,111,110,101,58,32,32,0,32,32,32,97,99,116,105,118,101,58,32,0,32,32,32,102,114,101,101,122,101,58,32,0,32,32,32,115,101,116,32,109,101,109,98,101,114,115,104,105,112,58,32,102,44,115,32,115,101,116,115,32,10,0,32,32,32,32,32,32,100,111,102,32,0,32,32,32,115,118,97,108,117,101,115,32,40,0,41,58,32,124,0,32,124,0,32,32,32,100,111,102,116,121,112,101,58,32,124,0,32,32,32,100,111,102,116,121,112,101,58,32,78,85,76,76,10,0,32,32,32,103,95,100,111,102,108,105,115,116,32,40,0,32,32,32,102,95,100,111,102,108,105,115,116,32,40,0,32,32,32,115,95,100,111,102,108,105,115,116,32,40,0,32,32,32,72,111,111,107,58,32,10,0,32,32,32,32,32,32,110,117,109,61,0,32,32,32,32,32,32,105,100,115,58,32,0,32,32,32,32,32,32,111,102,102,115,101,116,115,58,32,0,32,32,32,72,111,111,107,58,32,110,117,109,61,48,32,10,0,32,32,32,32,32,32,119,97,114,110,105,110,103,58,32,111,98,106,101,99,116,32,110,111,116,32,104,111,111,107,101,100,32,121,101,116,10,0,32,32,32,32,32,32,111,98,106,101,99,116,115,58,10,32,32,32,0,32,32,32,32,32,32,32,32,32,111,98,106,101,99,116,32,0,32,32,32,32,32,32,32,32,32,32,32,32,110,111,32,111,98,106,101,99,116,32,104,111,111,107,101,100,32,121,101,116,32,40,110,111,116,32,99,111,110,102,105,103,117,114,101,100,41,10,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,72,111,111,107,46,99,112,112,0,119,114,111,110,103,32,105,100,58,32,0,32,118,115,32,0,32,32,105,110,32,114,101,115,111,108,118,101,100,32,112,111,105,110,116,101,114,33,0,99,111,110,102,105,103,117,114,101,0,116,114,121,105,110,103,32,116,111,32,100,101,108,105,118,101,114,32,97,32,115,105,110,103,108,101,32,104,111,111,107,32,111,98,106,101,99,116,32,119,104,101,110,32,104,111,111,107,32,104,111,108,100,115,32,0,32,111,98,106,101,99,116,115,0,100,101,108,105,118,101,114,115,0,104,111,111,107,32,105,115,32,110,111,116,32,112,111,105,110,116,105,110,103,32,116,111,32,97,110,121,32,111,98,106,101,99,116,44,32,111,98,106,101,99,116,115,32,112,111,105,110,116,101,114,32,105,115,32,78,85,76,76,0,67,97,110,110,111,116,32,115,112,97,119,110,32,104,111,111,107,32,119,105,116,104,32,0,32,111,98,106,101,99,116,115,32,102,114,111,109,32,97,32,72,111,111,107,32,111,102,32,0,83,112,97,119,110,0,84,114,121,105,110,103,32,116,111,32,115,112,97,119,110,32,97,110,32,101,109,112,116,121,32,69,108,101,109,101,110,116,80,114,111,112,101,114,116,105,101,115,33,0,56,77,97,116,101,115,116,97,114,0,77,97,116,101,115,116,97,114,58,10,0,32,32,32,109,105,100,58,32,0,32,32,32,101,108,101,109,101,110,116,58,10,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,77,97,116,101,114,105,97,108,115,47,77,97,116,101,115,116,97,114,46,99,112,112,0,71,101,116,65,0,71,101,116,65,98,97,114,0,71,101,116,66,0,71,101,116,66,98,97,114,0,71,101,116,78,0,71,101,116,68,0,71,101,116,68,98,97,114,0,73,115,68,97,109,97,103,101,0,71,101,116,86,105,115,99,111,115,105,116,121,0,71,101,116,86,105,115,99,111,115,105,116,121,95,66,0,71,101,116,86,105,115,99,111,115,105,116,121,95,68,0,71,101,116,86,105,115,99,111,115,105,116,121,66,97,114,0,71,101,116,86,105,115,99,111,115,105,116,121,67,111,109,112,108,101,109,101,110,116,0,71,101,116,86,105,115,99,111,115,105,116,121,68,67,111,109,112,108,101,109,101,110,116,0,71,101,116,86,105,115,99,111,115,105,116,121,68,101,114,105,118,97,116,105,118,101,69,112,115,83,113,117,97,114,101,0,71,101,116,86,105,115,99,111,115,105,116,121,50,100,68,101,114,105,118,97,116,105,118,101,69,112,115,83,113,117,97,114,101,0,86,105,115,99,111,115,105,116,121,72,79,68,101,114,105,118,97,116,105,118,101,69,112,115,83,113,117,97,114,101,0,86,105,115,99,111,115,105,116,121,76,49,76,50,0,86,105,115,99,111,115,105,116,121,83,83,65,68,101,114,105,118,97,116,105,118,101,69,112,115,83,113,117,97,114,101,0,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,77,97,116,101,114,105,97,108,115,47,46,47,77,97,116,101,115,116,97,114,46,104,0,54,77,111,117,108,105,110,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,76,111,97,100,115,47,77,111,117,108,105,110,46,99,112,112,0,77,111,117,108,105,110,58,10,0,68,111,110,39,116,32,107,110,111,119,32,119,104,121,32,119,101,32,115,104,111,117,108,100,32,98,101,32,104,101,114,101,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,76,111,97,100,115,47,46,46,47,46,47,76,111,97,100,115,47,77,111,117,108,105,110,46,104,0,49,49,78,101,117,109,97,110,110,102,108,117,120,0,87,114,111,110,103,32,100,105,114,101,99,116,105,111,110,32,100,117,114,105,110,103,32,116,104,101,32,77,97,114,115,104,97,108,108,32,112,114,111,99,101,115,115,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,76,111,97,100,115,47,78,101,117,109,97,110,110,102,108,117,120,46,99,112,112,0,78,101,117,109,97,110,110,102,108,117,120,58,10,0,32,32,32,105,100,58,32,0,32,32,32,97,110,97,108,121,115,105,115,95,116,121,112,101,58,32,0,32,32,32,112,97,114,97,109,101,116,101,114,115,10,0,32,32,32,32,32,32,78,85,76,76,10,0,32,32,32,112,97,114,97,109,101,116,101,114,115,58,32,0,97,110,97,108,121,115,105,115,32,0,32,40,0,41,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,0,67,114,101,97,116,101,75,77,97,116,114,105,120,0,67,114,101,97,116,101,80,86,101,99,116,111,114,0,83,101,116,119,105,115,101,78,111,100,101,67,111,110,110,101,99,116,105,118,105,116,121,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,99,108,97,115,115,101,115,47,76,111,97,100,115,47,46,46,47,46,47,76,111,97,100,115,47,78,101,117,109,97,110,110,102,108,117,120,46,104,0,73,110,112,117,116,85,112,100,97,116,101,70,114,111,109,73,111,77,111,100,101,108,0,78,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,80,101,110,97,108,116,121,67,114,101,97,116,101,74,97,99,111,98,105,97,110,77,97,116,114,105,120,0,67,114,101,97,116,101,74,97,99,111,98,105,97,110,77,97,116,114,105,120,0,77,97,120,32,105,116,101,114,97,116,105,111,110,115,32,101,120,99,101,101,100,101,100,32,102,111,114,32,108,61,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,115,104,97,114,101,100,47,78,117,109,101,114,105,99,115,47,71,97,117,115,115,80,111,105,110,116,115,46,99,112,112,0,71,97,117,115,115,82,101,99,117,114,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,67,114,101,97,116,101,70,97,99,101,115,46,99,112,112,0,67,114,101,97,116,101,70,97,99,101,115,0,109,101,115,104,32,0,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,67,114,101,97,116,101,70,97,99,101,115,51,100,0,109,101,115,104,32,116,121,112,101,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,67,114,101,97,116,101,83,105,110,103,108,101,78,111,100,101,84,111,69,108,101,109,101,110,116,67,111,110,110,101,99,116,105,118,105,116,121,46,99,112,112,0,67,114,101,97,116,101,83,105,110,103,108,101,78,111,100,101,84,111,69,108,101,109,101,110,116,67,111,110,110,101,99,116,105,118,105,116,121,0,109,101,115,104,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,67,114,101,97,116,101,78,117,109,98,101,114,78,111,100,101,84,111,69,108,101,109,101,110,116,67,111,110,110,101,99,116,105,118,105,116,121,46,99,112,112,0,67,114,101,97,116,101,78,117,109,98,101,114,78,111,100,101,84,111,69,108,101,109,101,110,116,67,111,110,110,101,99,116,105,118,105,116,121,0,110,111,116,32,115,117,112,112,111,114,116,101,100,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,67,114,101,97,116,101,78,111,100,101,115,46,99,112,112,0,67,114,101,97,116,101,78,111,100,101,115,0,105,115,115,109,0,83,84,79,80,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,65,108,108,111,99,97,116,101,83,121,115,116,101,109,77,97,116,114,105,99,101,115,120,47,65,108,108,111,99,97,116,101,83,121,115,116,101,109,77,97,116,114,105,99,101,115,120,46,99,112,112,0,77,97,116,114,105,120,78,111,110,122,101,114,111,115,0,77,112,105,68,101,110,115,101,32,109,97,116,114,105,120,32,114,101,113,117,105,114,101,115,32,99,111,109,112,105,108,97,116,105,111,110,32,111,102,32,77,80,73,33,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,65,108,108,111,99,97,116,101,83,121,115,116,101,109,77,97,116,114,105,99,101,115,120,47,46,46,47,46,46,47,99,108,97,115,115,101,115,47,46,46,47,116,111,111,108,107,105,116,115,47,46,47,111,98,106,101,99,116,115,47,46,46,47,105,115,115,109,47,46,47,73,115,115,109,77,97,116,46,104,0,73,115,115,109,77,97,116,0,77,112,105,83,112,97,114,115,101,32,109,97,116,114,105,120,32,114,101,113,117,105,114,101,115,32,99,111,109,112,105,108,97,116,105,111,110,32,111,102,32,77,80,73,33,0,109,97,116,114,105,120,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,33,0,32,32,32,71,101,110,101,114,97,116,105,110,103,32,109,97,116,114,105,99,101,115,0,32,40,75,102,102,32,115,116,105,102,102,110,101,115,115,32,109,97,116,114,105,120,32,115,105,122,101,58,32,0,32,120,32,0,41,10,0,32,32,32,67,114,101,97,116,101,32,110,111,100,97,108,32,99,111,110,115,116,114,97,105,110,116,115,10,0,101,120,112,101,99,116,105,110,103,32,97,32,73,115,115,109,68,111,117,98,108,101,32,118,101,99,116,111,114,32,102,111,114,32,99,111,110,115,116,114,97,105,110,116,115,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,73,111,77,111,100,101,108,84,111,67,111,110,115,116,114,97,105,110,116,115,120,47,73,111,77,111,100,101,108,84,111,67,111,110,115,116,114,97,105,110,116,115,120,46,99,112,112,0,73,111,77,111,100,101,108,84,111,67,111,110,115,116,114,97,105,110,116,115,120,0,101,120,112,101,99,116,105,110,103,32,97,32,110,111,100,97,108,32,118,101,99,116,111,114,32,102,111,114,32,99,111,110,115,116,114,97,105,110,116,115,32,0,109,101,115,104,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,0,70,105,110,105,116,101,32,101,108,101,109,101,110,116,32,0,83,105,122,101,32,111,102,32,115,112,99,32,102,105,101,108,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,73,111,77,111,100,101,108,84,111,68,121,110,97,109,105,99,67,111,110,115,116,114,97,105,110,116,115,120,0,32,32,32,73,110,112,117,116,32,117,112,100,97,116,101,115,32,102,114,111,109,32,99,111,110,115,116,97,110,116,10,0,32,32,32,85,112,100,97,116,105,110,103,32,105,110,112,117,116,115,32,102,114,111,109,32,115,111,108,117,116,105,111,110,10,0,9,99,97,108,108,32,77,97,110,116,108,101,32,80,108,117,109,101,32,71,101,111,116,104,101,114,109,97,108,32,70,108,117,120,32,109,111,100,117,108,101,10,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,71,101,111,116,104,101,114,109,97,108,70,108,117,120,120,47,71,101,111,116,104,101,114,109,97,108,70,108,117,120,120,46,99,112,112,0,71,101,111,116,104,101,114,109,97,108,70,108,117,120,120,0,32,32,32,71,101,116,32,115,111,108,117,116,105,111,110,32,102,114,111,109,32,105,110,112,117,116,115,10,0,65,108,108,111,99,97,116,105,110,103,32,97,32,86,101,99,32,111,102,32,115,105,122,101,32,48,32,97,115,32,103,115,105,122,101,61,48,32,102,111,114,32,99,111,110,102,105,103,117,114,97,116,105,111,110,32,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,71,101,116,83,111,108,117,116,105,111,110,70,114,111,109,73,110,112,117,116,115,120,47,71,101,116,83,111,108,117,116,105,111,110,70,114,111,109,73,110,112,117,116,115,120,46,99,112,112,0,71,101,116,83,111,108,117,116,105,111,110,70,114,111,109,73,110,112,117,116,115,120,0,9,99,97,108,108,32,76,105,110,101,97,114,32,70,108,111,97,116,105,110,103,32,109,101,108,116,105,110,103,32,114,97,116,101,32,109,111,100,117,108,101,10,0,9,99,97,108,108,32,77,105,115,109,105,112,32,70,108,111,97,116,105,110,103,32,109,101,108,116,105,110,103,32,114,97,116,101,32,109,111,100,117,108,101,10,0,66,97,115,97,108,32,102,111,114,99,105,110,103,32,109,111,100,101,108,32,0,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,70,108,111,97,116,105,110,103,105,99,101,77,101,108,116,105,110,103,82,97,116,101,120,47,70,108,111,97,116,105,110,103,105,99,101,77,101,108,116,105,110,103,82,97,116,101,120,46,99,112,112,0,70,108,111,97,116,105,110,103,105,99,101,77,101,108,116,105,110,103,82,97,116,101,120,0,32,32,32,82,101,100,117,99,101,32,118,101,99,116,111,114,32,102,114,111,109,32,103,32,116,111,32,102,32,115,101,116,10,0,32,32,32,68,105,114,105,99,104,108,101,116,32,108,105,102,116,105,110,103,32,97,112,112,108,105,101,100,32,116,111,32,108,111,97,100,32,118,101,99,116,111,114,10,0,32,32,32,67,111,110,115,116,114,97,105,110,105,110,103,32,112,101,110,97,108,116,105,101,115,10,0,32,32,32,82,101,115,101,116,116,105,110,103,32,112,101,110,97,108,116,105,101,115,10,0,114,105,102,116,32,99,111,110,115,116,114,97,105,110,116,115,32,114,101,115,101,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,33,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,82,101,115,101,116,67,111,110,115,116,114,97,105,110,116,115,120,47,82,101,115,101,116,67,111,110,115,116,114,97,105,110,116,115,120,46,99,112,112,0,82,101,115,101,116,67,111,110,115,116,114,97,105,110,116,115,120,0,32,32,32,83,111,108,118,105,110,103,32,109,97,116,114,105,120,32,115,121,115,116,101,109,10,0,77,97,116,114,105,120,32,116,121,112,101,58,32,0,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,33,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,83,111,108,118,101,114,120,47,46,46,47,46,46,47,116,111,111,108,107,105,116,115,47,46,47,111,98,106,101,99,116,115,47,46,47,83,111,108,118,101,114,46,104,0,83,111,108,118,101,0,32,32,32,77,101,114,103,105,110,103,32,115,111,108,117,116,105,111,110,32,118,101,99,116,111,114,32,102,114,111,109,32,102,115,101,116,32,116,111,32,103,115,101,116,10,0,32,32,32,117,112,100,97,116,105,110,103,32,98,111,117,110,100,97,114,121,32,99,111,110,100,105,116,105,111,110,115,46,46,46,10,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,115,111,108,117,116,105,111,110,115,101,113,117,101,110,99,101,115,47,115,111,108,117,116,105,111,110,115,101,113,117,101,110,99,101,95,108,97,46,99,112,112,0,115,111,108,117,116,105,111,110,115,101,113,117,101,110,99,101,95,108,97,0,32,32,32,67,111,110,118,101,114,103,101,110,99,101,32,99,114,105,116,101,114,105,111,110,58,32,110,111,114,109,40,100,112,41,47,110,111,114,109,40,112,41,0,32,32,32,67,111,110,118,101,114,103,101,110,99,101,32,99,114,105,116,101,114,105,111,110,58,32,110,111,114,109,40,100,112,47,41,47,110,111,114,109,40,112,41,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,115,111,108,117,116,105,111,110,115,101,113,117,101,110,99,101,115,47,115,111,108,117,116,105,111,110,115,101,113,117,101,110,99,101,95,108,97,95,116,104,101,116,97,46,99,112,112,0,115,111,108,117,116,105,111,110,115,101,113,117,101,110,99,101,95,108,97,95,116,104,101,116,97,0,32,32,32,115,111,108,118,101,114,32,114,101,115,105,100,117,101,32,116,111,111,32,104,105,103,104,33,58,32,110,111,114,109,40,75,85,45,70,41,47,110,111,114,109,40,70,41,61,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,115,111,108,117,116,105,111,110,115,101,113,117,101,110,99,101,115,47,115,111,108,117,116,105,111,110,115,101,113,117,101,110,99,101,95,108,105,110,101,97,114,46,99,112,112,0,115,111,108,117,116,105,111,110,115,101,113,117,101,110,99,101,95,108,105,110,101,97,114,0,32,32,32,110,117,109,98,101,114,32,111,102,32,117,110,115,116,97,98,108,101,32,99,111,110,115,116,114,97,105,110,116,115,58,32,0,32,32,32,109,97,120,105,109,117,109,32,110,117,109,98,101,114,32,111,102,32,110,111,110,108,105,110,101,97,114,32,105,116,101,114,97,116,105,111,110,115,32,40,0,32,32,32,109,97,120,105,109,117,109,32,110,117,109,98,101,114,32,111,102,32,78,101,119,116,111,110,32,105,116,101,114,97,116,105,111,110,115,32,40,0,10,32,32,32,116,111,116,97,108,32,110,117,109,98,101,114,32,111,102,32,105,116,101,114,97,116,105,111,110,115,58,32,0,97,110,97,108,121,115,105,115,32,116,121,112,101,32,0,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,70,67,84,10,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,115,111,108,117,116,105,111,110,115,101,113,117,101,110,99,101,115,47,115,111,108,117,116,105,111,110,115,101,113,117,101,110,99,101,95,102,99,116,46,99,112,112,0,115,111,108,117,116,105,111,110,115,101,113,117,101,110,99,101,95,102,99,116,0,80,69,84,83,99,32,110,101,101,100,115,32,116,111,32,98,101,32,105,110,115,116,97,108,108,101,100,0,32,32,32,99,104,101,99,107,105,110,103,32,99,111,110,118,101,114,103,101,110,99,101,10,0,32,32,32,115,111,108,118,101,114,32,114,101,115,105,100,117,101,58,32,110,111,114,109,40,75,85,45,70,41,47,110,111,114,109,40,70,41,61,0,110,111,114,109,32,110,102,32,61,32,0,102,32,97,110,100,32,110,111,114,109,32,107,117,111,108,100,32,61,32,0,102,10,0,109,101,99,104,97,110,105,99,97,108,32,101,113,117,105,108,105,98,114,105,117,109,32,99,111,110,118,101,114,103,101,110,99,101,32,99,114,105,116,101,114,105,111,110,32,105,115,32,78,97,78,33,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,115,111,108,117,116,105,111,110,115,101,113,117,101,110,99,101,115,47,99,111,110,118,101,114,103,101,110,99,101,46,99,112,112,0,99,111,110,118,101,114,103,101,110,99,101,0,32,32,32,109,101,99,104,97,110,105,99,97,108,32,101,113,117,105,108,105,98,114,105,117,109,32,99,111,110,118,101,114,103,101,110,99,101,32,99,114,105,116,101,114,105,111,110,0,32,60,32,0,32,37,10,0,32,62,32,0,99,111,110,118,101,114,103,101,110,99,101,32,99,114,105,116,101,114,105,111,110,32,105,115,32,78,97,78,33,0,32,32,32,67,111,110,118,101,114,103,101,110,99,101,32,99,114,105,116,101,114,105,111,110,58,32,110,111,114,109,40,100,117,41,47,110,111,114,109,40,117,41,0,32,32,32,67,111,110,118,101,114,103,101,110,99,101,32,99,114,105,116,101,114,105,111,110,58,32,109,97,120,40,100,117,41,0,32,32,32,67,111,109,112,117,116,105,110,103,32,99,111,115,116,32,102,117,110,99,116,105,111,110,32,103,114,97,100,105,101,110,116,10,0,124,124,100,74,47,100,107,124,124,32,61,32,48,32,32,32,32,103,114,97,100,105,101,110,116,32,110,111,114,109,32,105,115,32,122,101,114,111,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,71,114,97,100,106,120,47,71,114,97,100,106,120,46,99,112,112,0,71,114,97,100,106,120,0,124,124,100,74,47,100,107,124,124,32,61,32,78,97,78,32,32,103,114,97,100,105,101,110,116,32,110,111,114,109,32,105,115,32,78,97,78,0,32,32,32,32,32,32,32,120,32,32,32,32,32,32,32,124,32,32,67,111,115,116,32,102,117,110,99,116,105,111,110,32,102,40,120,41,32,32,124,32,32,76,105,115,116,32,111,102,32,99,111,110,116,114,105,98,117,116,105,111,110,115,10,0,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,32,115,116,101,112,32,0,47,0,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,10,0,32,120,32,61,32,0,32,124,32,0,70,117,110,99,116,105,111,110,32,101,118,97,108,117,97,116,105,111,110,32,114,101,116,117,114,110,101,100,32,78,97,78,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,115,104,97,114,101,100,47,78,117,109,101,114,105,99,115,47,66,114,101,110,116,83,101,97,114,99,104,46,99,112,112,0,66,114,101,110,116,83,101,97,114,99,104,0,32,32,32,99,111,109,112,117,116,105,110,103,32,118,101,108,111,99,105,116,105,101,115,10,0,32,32,32,99,111,109,112,117,116,105,110,103,32,116,104,105,99,107,110,101,115,115,10,0,32,32,32,99,111,109,112,117,116,105,110,103,32,116,104,105,99,107,110,101,115,115,50,10,0,32,32,32,99,111,109,112,117,116,105,110,103,32,97,100,106,111,105,110,116,10,0,32,32,32,115,97,118,105,110,103,32,114,101,115,117,108,116,115,10,0,32,32,32,109,97,120,105,109,117,109,32,110,117,109,98,101,114,32,111,102,32,105,116,101,114,97,116,105,111,110,115,32,40,0,41,32,101,120,99,101,101,100,101,100,10,0,99,111,109,112,117,116,105,110,103,32,115,108,111,112,101,32,111,102,32,108,101,118,101,108,115,101,116,32,102,117,110,99,116,105,111,110,46,46,46,10,0,115,97,118,105,110,103,32,114,101,115,117,108,116,115,58,10,0,32,32,32,102,114,101,101,122,105,110,103,32,99,111,110,115,116,114,97,105,110,116,115,10,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,98,97,109,103,47,71,101,111,109,101,116,114,121,46,99,112,112,0,114,101,102,101,114,101,110,99,101,32,110,117,109,98,101,114,115,58,32,0,32,0,10,0,73,100,58,32,0,67,111,111,114,100,115,58,32,91,0,93,32,91,0,93,10,0,116,119,111,32,112,111,105,110,116,115,32,111,102,32,116,104,101,32,103,101,111,109,101,116,114,121,32,97,114,101,32,118,101,114,121,32,99,108,111,115,101,100,32,116,111,32,101,97,99,104,32,111,116,104,101,114,32,40,115,101,101,32,114,101,102,101,114,101,110,99,101,32,110,117,109,98,101,114,115,32,97,98,111,118,101,41,0,80,111,115,116,82,101,97,100,0,76,101,110,103,116,104,32,111,102,32,101,100,103,101,32,0,32,105,115,32,48,0,80,114,111,98,108,101,109,32,119,104,105,108,101,32,112,114,111,99,101,115,115,105,110,103,32,101,100,103,101,115,58,32,99,104,101,99,107,32,116,104,101,32,101,100,103,101,32,108,105,115,116,0,84,114,121,105,110,103,32,116,111,32,100,101,108,101,116,101,32,103,101,111,109,101,116,114,121,32,97,110,100,32,78,98,82,101,102,62,48,44,32,112,114,111,98,97,98,108,121,32,100,117,101,32,116,111,32,97,110,32,101,114,114,111,114,0,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,33,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,98,97,109,103,47,46,47,66,97,109,103,81,117,97,100,116,114,101,101,46,104,0,77,97,114,115,104,97,108,108,0,99,111,112,121,0,79,98,106,101,99,116,69,110,117,109,0,73,100,0,68,101,101,112,69,99,104,111,0,69,99,104,111,0,78,52,98,97,109,103,49,50,66,97,109,103,81,117,97,100,116,114,101,101,49,53,66,97,109,103,81,117,97,100,116,114,101,101,66,111,120,69,0,83,101,116,79,102,69,100,103,101,115,52,58,58,97,100,100,32,111,118,101,114,102,108,111,119,58,32,78,98,79,102,69,100,103,101,115,61,0,32,62,32,110,98,97,120,61,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,98,97,109,103,47,83,101,116,79,102,69,52,46,99,112,112,0,97,100,100,0,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,78,111,100,101,115,80,97,114,116,105,116,105,111,110,105,110,103,46,99,112,112,0,68,105,115,99,111,110,116,105,110,117,111,117,115,71,97,108,101,114,107,105,110,78,111,100,101,115,80,97,114,116,105,116,105,111,110,105,110,103,0,80,114,111,98,108,101,109,32,105,110,32,102,97,99,101,115,32,99,114,101,97,116,105,111,110,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,69,100,103,101,115,80,97,114,116,105,116,105,111,110,105,110,103,46,99,112,112,0,69,100,103,101,115,80,97,114],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+139752);allocate([116,105,116,105,111,110,105,110,103,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,70,97,99,101,115,80,97,114,116,105,116,105,111,110,105,110,103,46,99,112,112,0,70,97,99,101,115,80,97,114,116,105,116,105,111,110,105,110,103,0,110,111,116,32,101,110,111,117,103,104,32,101,108,101,109,101,110,116,115,32,105,110,32,109,101,115,104,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,105,115,115,109,45,116,114,117,110,107,115,47,116,114,117,110,107,45,106,112,108,45,106,115,47,115,114,99,47,99,47,46,47,109,111,100,117,108,101,115,47,77,111,100,101,108,80,114,111,99,101,115,115,111,114,120,47,67,114,101,97,116,101,69,100,103,101,115,46,99,112,112,0,67,114,101,97,116,101,69,100,103,101,115,0,109,101,115,104,32,100,105,109,101,110,115,105,111,110,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,121,101,116,0,69,100,103,101,79,110,66,111,117,110,100,97,114,121,70,108,97,103,115,0,100,105,109,101,110,115,105,111,110,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,105,110,118,97,108,105,100,32,108,101,110,103,116,104,0,98,108,97,115,46,99,0,109,97,116,114,105,120,32,109,117,115,116,32,98,101,32,115,113,117,97,114,101,0,69,82,82,79,82,0,68,101,102,97,117,108,116,32,71,83,76,32,101,114,114,111,114,32,104,97,110,100,108,101,114,32,105,110,118,111,107,101,100,46,10,0,103,115,108,58,32,37,115,58,37,100,58,32,37,115,58,32,37,115,10,0,76,85,32,100,101,99,111,109,112,111,115,105,116,105,111,110,32,114,101,113,117,105,114,101,115,32,115,113,117,97,114,101,32,109,97,116,114,105,120,0,108,117,46,99,0,112,101,114,109,117,116,97,116,105,111,110,32,108,101,110,103,116,104,32,109,117,115,116,32,109,97,116,99,104,32,109,97,116,114,105,120,32,115,105,122,101,0,76,85,32,109,97,116,114,105,120,32,109,117,115,116,32,98,101,32,115,113,117,97,114,101,0,109,97,116,114,105,120,32,115,105,122,101,32,109,117,115,116,32,109,97,116,99,104,32,98,32,115,105,122,101,0,109,97,116,114,105,120,32,115,105,122,101,32,109,117,115,116,32,109,97,116,99,104,32,115,111,108,117,116,105,111,110,32,115,105,122,101,0,109,97,116,114,105,120,32,105,115,32,115,105,110,103,117,108,97,114,0,109,97,116,114,105,120,32,115,105,122,101,32,109,117,115,116,32,109,97,116,99,104,32,115,111,108,117,116,105,111,110,47,114,104,115,32,115,105,122,101,0,102,105,114,115,116,32,114,111,119,32,105,110,100,101,120,32,105,115,32,111,117,116,32,111,102,32,114,97,110,103,101,0,46,47,115,119,97,112,95,115,111,117,114,99,101,46,99,0,115,101,99,111,110,100,32,114,111,119,32,105,110,100,101,120,32,105,115,32,111,117,116,32,111,102,32,114,97,110,103,101,0,109,97,116,114,105,120,32,100,105,109,101,110,115,105,111,110,32,110,49,32,109,117,115,116,32,98,101,32,112,111,115,105,116,105,118,101,32,105,110,116,101,103,101,114,0,109,97,116,114,105,120,32,100,105,109,101,110,115,105,111,110,32,110,50,32,109,117,115,116,32,98,101,32,112,111,115,105,116,105,118,101,32,105,110,116,101,103,101,114,0,112,101,114,109,117,116,97,116,105,111,110,32,108,101,110,103,116,104,32,110,32,109,117,115,116,32,98,101,32,112,111,115,105,116,105,118,101,32,105,110,116,101,103,101,114,0,105,110,105,116,46,99,0,102,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,115,112,97,99,101,32,102,111,114,32,112,101,114,109,117,116,97,116,105,111,110,32,115,116,114,117,99,116,0,102,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,115,112,97,99,101,32,102,111,114,32,112,101,114,109,117,116,97,116,105,111,110,32,100,97,116,97,0,102,105,114,115,116,32,105,110,100,101,120,32,105,115,32,111,117,116,32,111,102,32,114,97,110,103,101,0,112,101,114,109,117,116,97,116,105,111,110,46,99,0,115,101,99,111,110,100,32,105,110,100,101,120,32,105,115,32,111,117,116,32,111,102,32,114,97,110,103,101,0,118,101,99,116,111,114,32,97,110,100,32,112,101,114,109,117,116,97,116,105,111,110,32,109,117,115,116,32,98,101,32,116,104,101,32,115,97,109,101,32,108,101,110,103,116,104,0,46,47,112,101,114,109,117,116,101,95,115,111,117,114,99,101,46,99,0,118,101,99,116,111,114,32,108,101,110,103,116,104,115,32,97,114,101,32,110,111,116,32,101,113,117,97,108,0,46,47,99,111,112,121,95,115,111,117,114,99,101,46,99,0,118,101,99,116,111,114,32,108,101,110,103,116,104,32,110,32,109,117,115,116,32,98,101,32,112,111,115,105,116,105,118,101,32,105,110,116,101,103,101,114,0,46,47,118,105,101,119,95,115,111,117,114,99,101,46,99,0,46,47,115,111,117,114,99,101,95,116,114,115,118,95,114,46,104,0,117,110,114,101,99,111,103,110,105,122,101,100,32,111,112,101,114,97,116,105,111,110,0,80,97,114,97,109,101,116,101,114,32,37,100,32,116,111,32,114,111,117,116,105,110,101,32,37,115,32,119,97,115,32,105,110,99,111,114,114,101,99,116,10,0,83,116,57,98,97,100,95,97,108,108,111,99,0,83,116,57,101,120,99,101,112,116,105,111,110,0,83,116,49,51,114,117,110,116,105,109,101,95,101,114,114,111,114,0,83,116,57,116,121,112,101,95,105,110,102,111,0,83,116,56,98,97,100,95,99,97,115,116,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,49,95,95,118,109,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,33,34,98,97,115,105,99,95,115,116,114,105,110,103,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,101,120,116,101,114,110,97,108,112,97,99,107,97,103,101,115,47,101,109,115,99,114,105,112,116,101,110,47,101,109,115,100,107,95,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,116,97,103,45,49,46,51,53,46,56,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,115,116,114,105,110,103,0,95,95,116,104,114,111,119,95,108,101,110,103,116,104,95,101,114,114,111,114,0,33,34,118,101,99,116,111,114,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,85,115,101,114,115,47,108,97,114,111,117,114,47,101,120,116,101,114,110,97,108,112,97,99,107,97,103,101,115,47,101,109,115,99,114,105,112,116,101,110,47,101,109,115,100,107,95,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,116,97,103,45,49,46,51,53,46,56,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,118,101,99,116,111,114,0,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,116,104,114,101,119,32,97,110,32,101,120,99,101,112,116,105,111,110,0,115,116,100,58,58,98,97,100,95,99,97,115,116,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,58,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,116,101,114,109,105,110,97,116,105,110,103,0,117,110,99,97,117,103,104,116,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,105,110,102,105,110,105,116,121,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,4,7,3,6,5,0,80,79,83,73,88,0,114,119,97],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+149992);allocate([17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,46,0,0,78,83,116,51,95,95,49,49,49,95,95,115,116,100,111,117,116,98,117,102,73,119,69,69,0,117,110,115,117,112,112,111,114,116,101,100,32,108,111,99,97,108,101,32,102,111,114,32,115,116,97,110,100,97,114,100,32,105,110,112,117,116,0,78,83,116,51,95,95,49,49,48,95,95,115,116,100,105,110,98,117,102,73,119,69,69,0,78,83,116,51,95,95,49,49,49,95,95,115,116,100,111,117,116,98,117,102,73,99,69,69,0,78,83,116,51,95,95,49,49,48,95,95,115,116,100,105,110,98,117,102,73,99,69,69,0,78,83,116,51,95,95,49,56,105,111,115,95,98,97,115,101,55,102,97,105,108,117,114,101,69,0,78,83,116,51,95,95,49,56,105,111,115,95,98,97,115,101,69,0,78,83,116,51,95,95,49,57,98,97,115,105,99,95,105,111,115,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,78,83,116,51,95,95,49,57,98,97,115,105,99,95,105,111,115,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,78,83,116,51,95,95,49,49,53,98,97,115,105,99,95,115,116,114,101,97,109,98,117,102,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,78,83,116,51,95,95,49,49,53,98,97,115,105,99,95,115,116,114,101,97,109,98,117,102,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,105,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,105,115,116,114,101,97,109,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,111,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,111,115,116,114,101,97,109,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,78,83,116,51,95,95,49,49,57,95,95,105,111,115,116,114,101,97,109,95,99,97,116,101,103,111,114,121,69,0,105,111,115,95,98,97,115,101,58,58,99,108,101,97,114,0,105,111,115,116,114,101,97,109,0,117,110,115,112,101,99,105,102,105,101,100,32,105,111,115,116,114,101,97,109,95,99,97,116,101,103,111,114,121,32,101,114,114,111,114,0,48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,65,66,67,68,69,70,120,88,43,45,112,80,105,73,110,78,0,78,83,116,51,95,95,49,54,108,111,99,97,108,101,53,102,97,99,101,116,69,0,78,83,116,51,95,95,49,53,99,116,121,112,101,73,119,69,69,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,99,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,68,115,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,68,105,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,78,83,116,51,95,95,49,49,54,95,95,110,97,114,114,111,119,95,116,111,95,117,116,102,56,73,76,106,51,50,69,69,69,0,78,83,116,51,95,95,49,49,55,95,95,119,105,100,101,110,95,102,114,111,109,95,117,116,102,56,73,76,106,51,50,69,69,69,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,119,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,78,83,116,51,95,95,49,54,108,111,99,97,108,101,53,95,95,105,109,112,69,0,78,83,116,51,95,95,49,55,99,111,108,108,97,116,101,73,99,69,69,0,78,83,116,51,95,95,49,55,99,111,108,108,97,116,101,73,119,69,69,0,78,83,116,51,95,95,49,53,99,116,121,112,101,73,99,69,69,0,78,83,116,51,95,95,49,56,110,117,109,112,117,110,99,116,73,99,69,69,0,78,83,116,51,95,95,49,56,110,117,109,112,117,110,99,116,73,119,69,69,0,78,83,116,51,95,95,49,55,110,117,109,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,78,83,116,51,95,95,49,55,110,117,109,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,78,83,116,51,95,95,49,55,110,117,109,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,78,83,116,51,95,95,49,55,110,117,109,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,78,83,116,51,95,95,49,56,116,105,109,101,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,78,83,116,51,95,95,49,56,116,105,109,101,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,78,83,116,51,95,95,49,56,116,105,109,101,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,78,83,116,51,95,95,49,56,116,105,109,101,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,99,76,98,48,69,69,69,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,99,76,98,49,69,69,69,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,119,76,98,48,69,69,69,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,119,76,98,49,69,69,69,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,78,83,116,51,95,95,49,56,109,101,115,115,97,103,101,115,73,99,69,69,0,78,83,116,51,95,95,49,56,109,101,115,115,97,103,101,115,73,119,69,69,0,37,112,0,67,0,37,0,0,0,0,0,108,0,108,108,0,0,76,0,37,112,0,0,0,0,37,72,58,37,77,58,37,83,37,109,47,37,100,47,37,121,37,89,45,37,109,45,37,100,37,73,58,37,77,58,37,83,32,37,112,37,72,58,37,77,37,72,58,37,77,58,37,83,108,111,99,97,108,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,48,49,50,51,52,53,54,55,56,57,0,37,76,102,0,109,111,110,101,121,95,103,101,116,32,101,114,114,111,114,0,48,49,50,51,52,53,54,55,56,57,0,37,46,48,76,102,0,116,114,117,101,0,102,97,108,115,101,0,83,117,110,100,97,121,0,77,111,110,100,97,121,0,84,117,101,115,100,97,121,0,87,101,100,110,101,115,100,97,121,0,84,104,117,114,115,100,97,121,0,70,114,105,100,97,121,0,83,97,116,117,114,100,97,121,0,83,117,110,0,77,111,110,0,84,117,101,0,87,101,100,0,84,104,117,0,70,114,105,0,83,97,116,0,74,97,110,117,97,114,121,0,70,101,98,114,117,97,114,121,0,77,97,114,99,104,0,65,112,114,105,108,0,77,97,121,0,74,117,110,101,0,74,117,108,121,0,65,117,103,117,115,116,0,83,101,112,116,101,109,98,101,114,0,79,99,116,111,98,101,114,0,78,111,118,101,109,98,101,114,0,68,101,99,101,109,98,101,114,0,74,97,110,0,70,101,98,0,77,97,114,0,65,112,114,0,74,117,110,0,74,117,108,0,65,117,103,0,83,101,112,0,79,99,116,0,78,111,118,0,68,101,99,0,65,77,0,80,77,0,37,109,47,37,100,47,37,121,0,37,72,58,37,77,58,37,83,0,37,97,32,37,98,32,37,100,32,37,72,58,37,77,58,37,83,32,37,89,0,37,73,58,37,77,58,37,83,32,37,112,0,78,83,116,51,95,95,49,49,51,109,101,115,115,97,103,101,115,95,98,97,115,101,69,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,112,117,116,73,119,69,69,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,112,117,116,73,99,69,69,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,103,101,116,73,119,69,69,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,103,101,116,73,99,69,69,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,95,98,97,115,101,69,0,78,83,116,51,95,95,49,49,48,95,95,116,105,109,101,95,112,117,116,69,0,78,83,116,51,95,95,49,50,48,95,95,116,105,109,101,95,103,101,116,95,99,95,115,116,111,114,97,103,101,73,119,69,69,0,78,83,116,51,95,95,49,50,48,95,95,116,105,109,101,95,103,101,116,95,99,95,115,116,111,114,97,103,101,73,99,69,69,0,78,83,116,51,95,95,49,57,116,105,109,101,95,98,97,115,101,69,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,112,117,116,73,119,69,69,0,78,83,116,51,95,95,49,49,52,95,95,110,117,109,95,112,117,116,95,98,97,115,101,69,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,112,117,116,73,99,69,69,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,103,101,116,73,119,69,69,0,78,83,116,51,95,95,49,49,52,95,95,110,117,109,95,103,101,116,95,98,97,115,101,69,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,103,101,116,73,99,69,69,0,78,83,116,51,95,95,49,49,50,99,111,100,101,99,118,116,95,98,97,115,101,69,0,78,83,116,51,95,95,49,49,48,99,116,121,112,101,95,98,97,115,101,69,0,78,83,116,51,95,95,49,49,52,95,95,115,104,97,114,101,100,95,99,111,117,110,116,69,0,78,83,116,51,95,95,49,49,50,115,121,115,116,101,109,95,101,114,114,111,114,69,0,78,83,116,51,95,95,49,49,52,101,114,114,111,114,95,99,97,116,101,103,111,114,121,69,0,78,83,116,51,95,95,49,49,50,95,95,100,111,95,109,101,115,115,97,103,101,69,0,58,32,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+156537);var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);function copyTempFloat(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3]}function copyTempDouble(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3];HEAP8[tempDoublePtr+4]=HEAP8[ptr+4];HEAP8[tempDoublePtr+5]=HEAP8[ptr+5];HEAP8[tempDoublePtr+6]=HEAP8[ptr+6];HEAP8[tempDoublePtr+7]=HEAP8[ptr+7]}function _atexit(func,arg){__ATEXIT__.unshift({func:func,arg:arg})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}Module["_i64Add"]=_i64Add;Module["_i64Subtract"]=_i64Subtract;function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 85:return totalMemory/PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:(function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var ptr in EXCEPTIONS.infos){var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr}}return adjusted}),addRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++}),decRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0){if(info.destructor){Runtime.dynCall("vi",info.destructor,[ptr])}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}EXCEPTIONS.clearRef(EXCEPTIONS.deAdjust(ptr));throw ptr}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(asm["setTempRet0"](0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(asm["setTempRet0"](0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i<typeArray.length;i++){if(typeArray[i]&&Module["___cxa_can_catch"](typeArray[i],throwntype,thrown)){thrown=HEAP32[thrown>>2];info.adjusted=thrown;return(asm["setTempRet0"](typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(asm["setTempRet0"](throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr}var _emscripten_resume=true;var _emscripten_landingpad=true;function _free(){}Module["_free"]=_free;function ___cxa_free_exception(ptr){try{return _free(ptr)}catch(e){}}function ___cxa_end_catch(){if(___cxa_end_catch.rethrown){___cxa_end_catch.rethrown=false;return}asm["setThrew"](0);var ptr=EXCEPTIONS.caught.pop();if(ptr){EXCEPTIONS.decRef(EXCEPTIONS.deAdjust(ptr));EXCEPTIONS.last=0}}function _what0_(){Module["printErr"]("missing function: what0_");abort(-1)}var _log=Math_log;var _emscripten_postinvoke=true;var PTHREAD_SPECIFIC={};var PTHREAD_SPECIFIC_NEXT_KEY=1;function _pthread_key_create(key,destructor){if(key==0){return ERRNO_CODES.EINVAL}HEAP32[key>>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can   access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};var TTY={ttys:[],init:(function(){}),shutdown:(function(){}),register:(function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)}),stream_ops:{open:(function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}stream.tty=tty;stream.seekable=false}),close:(function(stream){stream.tty.ops.flush(stream.tty)}),flush:(function(stream){stream.tty.ops.flush(stream.tty)}),read:(function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead}),write:(function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO)}for(var i=0;i<length;i++){try{stream.tty.ops.put_char(stream.tty,buffer[offset+i])}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}}if(length){stream.node.timestamp=Date.now()}return i})},default_tty_ops:{get_char:(function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=new Buffer(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;var usingDevice=false;try{fd=fs.openSync("/dev/stdin","r");usingDevice=true}catch(e){}bytesRead=fs.readSync(fd,buf,0,BUFSIZE,null);if(usingDevice){fs.closeSync(fd)}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,"/",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i<node.usedBytes;++i)arr.push(node.contents[i]);return arr}return node.contents}),getFileDataAsTypedArray:(function(node){if(!node.contents)return new Uint8Array;if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)}),expandFileStorage:(function(node,newCapacity){if(node.contents&&node.contents.subarray&&newCapacity>node.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.buffer.byteLength:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)|0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.length<newCapacity)node.contents.push(0)}),resizeFileStorage:(function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(new ArrayBuffer(newSize));if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length<newSize)node.contents.push(0);node.usedBytes=newSize}),node_ops:{getattr:(function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr}),setattr:(function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}}),lookup:(function(parent,name){throw FS.genericErrors[ERRNO_CODES.ENOENT]}),mknod:(function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)}),rename:(function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}}}delete old_node.parent.contents[old_node.name];old_node.name=new_name;new_dir.contents[new_name]=old_node;old_node.parent=new_dir}),unlink:(function(parent,name){delete parent.contents[name]}),rmdir:(function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}delete parent.contents[name]}),readdir:(function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries}),symlink:(function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node}),readlink:(function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return node.link})},stream_ops:{read:(function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size}),write:(function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=new Uint8Array(buffer.subarray(offset,offset+length));node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray)node.contents.set(buffer.subarray(offset,offset+length),position);else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position}),allocate:(function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&(contents.buffer===buffer||contents.buffer===buffer.buffer)){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<stream.node.usedBytes){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=_malloc(length);if(!ptr){throw new FS.ErrnoError(ERRNO_CODES.ENOMEM)}buffer.set(contents,ptr)}return{ptr:ptr,allocated:allocated}}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0})}};var IDBFS={dbs:{},indexedDB:(function(){if(typeof indexedDB!=="undefined")return indexedDB;var ret=null;if(typeof window==="object")ret=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;assert(ret,"IDBFS used, but indexedDB not supported");return ret}),DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:(function(mount){return MEMFS.mount.apply(null,arguments)}),syncfs:(function(mount,populate,callback){IDBFS.getLocalSet(mount,(function(err,local){if(err)return callback(err);IDBFS.getRemoteSet(mount,(function(err,remote){if(err)return callback(err);var src=populate?remote:local;var dst=populate?local:remote;IDBFS.reconcile(src,dst,callback)}))}))}),getDB:(function(name,callback){var db=IDBFS.dbs[name];if(db){return callback(null,db)}var req;try{req=IDBFS.indexedDB().open(name,IDBFS.DB_VERSION)}catch(e){return callback(e)}req.onupgradeneeded=(function(e){var db=e.target.result;var transaction=e.target.transaction;var fileStore;if(db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)){fileStore=transaction.objectStore(IDBFS.DB_STORE_NAME)}else{fileStore=db.createObjectStore(IDBFS.DB_STORE_NAME)}if(!fileStore.indexNames.contains("timestamp")){fileStore.createIndex("timestamp","timestamp",{unique:false})}});req.onsuccess=(function(){db=req.result;IDBFS.dbs[name]=db;callback(null,db)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),getLocalSet:(function(mount,callback){var entries={};function isRealDir(p){return p!=="."&&p!==".."}function toAbsolute(root){return(function(p){return PATH.join2(root,p)})}var check=FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));while(check.length){var path=check.pop();var stat;try{stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){check.push.apply(check,FS.readdir(path).filter(isRealDir).map(toAbsolute(path)))}entries[path]={timestamp:stat.mtime}}return callback(null,{type:"local",entries:entries})}),getRemoteSet:(function(mount,callback){var entries={};IDBFS.getDB(mount.mountpoint,(function(err,db){if(err)return callback(err);var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readonly");transaction.onerror=(function(e){callback(this.error);e.preventDefault()});var store=transaction.objectStore(IDBFS.DB_STORE_NAME);var index=store.index("timestamp");index.openKeyCursor().onsuccess=(function(event){var cursor=event.target.result;if(!cursor){return callback(null,{type:"remote",db:db,entries:entries})}entries[cursor.primaryKey]={timestamp:cursor.key};cursor.continue()})}))}),loadLocalEntry:(function(path,callback){var stat,node;try{var lookup=FS.lookupPath(path);node=lookup.node;stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){return callback(null,{timestamp:stat.mtime,mode:stat.mode})}else if(FS.isFile(stat.mode)){node.contents=MEMFS.getFileDataAsTypedArray(node);return callback(null,{timestamp:stat.mtime,mode:stat.mode,contents:node.contents})}else{return callback(new Error("node type not supported"))}}),storeLocalEntry:(function(path,entry,callback){try{if(FS.isDir(entry.mode)){FS.mkdir(path,entry.mode)}else if(FS.isFile(entry.mode)){FS.writeFile(path,entry.contents,{encoding:"binary",canOwn:true})}else{return callback(new Error("node type not supported"))}FS.chmod(path,entry.mode);FS.utime(path,entry.timestamp,entry.timestamp)}catch(e){return callback(e)}callback(null)}),removeLocalEntry:(function(path,callback){try{var lookup=FS.lookupPath(path);var stat=FS.stat(path);if(FS.isDir(stat.mode)){FS.rmdir(path)}else if(FS.isFile(stat.mode)){FS.unlink(path)}}catch(e){return callback(e)}callback(null)}),loadRemoteEntry:(function(store,path,callback){var req=store.get(path);req.onsuccess=(function(event){callback(null,event.target.result)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),storeRemoteEntry:(function(store,path,entry,callback){var req=store.put(entry,path);req.onsuccess=(function(){callback(null)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),removeRemoteEntry:(function(store,path,callback){var req=store.delete(path);req.onsuccess=(function(){callback(null)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),reconcile:(function(src,dst,callback){var total=0;var create=[];Object.keys(src.entries).forEach((function(key){var e=src.entries[key];var e2=dst.entries[key];if(!e2||e.timestamp>e2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var errored=false;var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:(function(flags){flags&=~32768;flags&=~524288;if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i<res;i++){buffer[offset+i]=nbuffer[i]}}return res}),write:(function(stream,buffer,offset,length,position){var nbuffer=new Buffer(buffer.subarray(offset,offset+length));var res;try{res=fs.writeSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}return res}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:(function(mount){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync;var root=WORKERFS.createNode(null,"/",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split("/");var parent=root;for(var i=0;i<parts.length-1;i++){var curr=parts.slice(0,i+1).join("/");if(!createdParents[curr]){createdParents[curr]=WORKERFS.createNode(parent,curr,WORKERFS.DIR_MODE,0)}parent=createdParents[curr]}return parent}function base(path){var parts=path.split("/");return parts[parts.length-1]}Array.prototype.forEach.call(mount.opts["files"]||[],(function(file){WORKERFS.createNode(ensureParent(file.name),base(file.name),WORKERFS.FILE_MODE,0,file,file.lastModifiedDate)}));(mount.opts["blobs"]||[]).forEach((function(obj){WORKERFS.createNode(ensureParent(obj["name"]),base(obj["name"]),WORKERFS.FILE_MODE,0,obj["data"])}));(mount.opts["packages"]||[]).forEach((function(pack){pack["metadata"].files.forEach((function(file){var name=file.filename.substr(1);WORKERFS.createNode(ensureParent(name),base(name),WORKERFS.FILE_MODE,0,pack["blob"].slice(file.start,file.end))}))}));return root}),createNode:(function(parent,name,mode,dev,contents,mtime){var node=FS.createNode(parent,name,mode);node.mode=mode;node.node_ops=WORKERFS.node_ops;node.stream_ops=WORKERFS.stream_ops;node.timestamp=(mtime||new Date).getTime();assert(WORKERFS.FILE_MODE!==WORKERFS.DIR_MODE);if(mode===WORKERFS.FILE_MODE){node.size=contents.size;node.contents=contents}else{node.size=4096;node.contents={}}if(parent){parent.contents[name]=node}return node}),node_ops:{getattr:(function(node){return{dev:1,ino:undefined,mode:node.mode,nlink:1,uid:0,gid:0,rdev:undefined,size:node.size,atime:new Date(node.timestamp),mtime:new Date(node.timestamp),ctime:new Date(node.timestamp),blksize:4096,blocks:Math.ceil(node.size/4096)}}),setattr:(function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}}),lookup:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}),mknod:(function(parent,name,mode,dev){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),rename:(function(oldNode,newDir,newName){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),unlink:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),rmdir:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),readdir:(function(node){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),symlink:(function(parent,newName,oldPath){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),readlink:(function(node){throw new FS.ErrnoError(ERRNO_CODES.EPERM)})},stream_ops:{read:(function(stream,buffer,offset,length,position){if(position>=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};var _stdin=allocate(1,"i32*",ALLOC_STATIC);var _stdout=allocate(1,"i32*",ALLOC_STATIC);var _stderr=allocate(1,"i32*",ALLOC_STATIC);var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}var mounts=FS.getMounts(FS.root.mount);var completed=0;function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=mounts.length){callback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdev:(function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){if(err===ERRNO_CODES.EISDIR)err=ERRNO_CODES.EPERM;throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return PATH.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module["printErr"]("read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream}),close:(function(stream){if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)}),munmap:(function(stream){return 0}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret}),writeFile:(function(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";opts.encoding=opts.encoding||"utf8";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var stream=FS.open(path,opts.flags,opts.mode);if(opts.encoding==="utf8"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,0,opts.canOwn)}else if(opts.encoding==="binary"){FS.write(stream,data,0,data.length,0,opts.canOwn)}FS.close(stream)}),cwd:(function(){return FS.currentPath}),chdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var err=FS.nodePermissions(lookup.node,"x");if(err){throw new FS.ErrnoError(err)}FS.currentPath=lookup.path}),createDefaultDirectories:(function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")}),createDefaultDevices:(function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:(function(){return 0}),write:(function(stream,buffer,offset,length,pos){return length})});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device;if(typeof crypto!=="undefined"){var randomBuffer=new Uint8Array(1);random_device=(function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]})}else if(ENVIRONMENT_IS_NODE){random_device=(function(){return require("crypto").randomBytes(1)[0]})}else{random_device=(function(){return Math.random()*256|0})}FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")}),createSpecialDirectories:(function(){FS.mkdir("/proc");FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:(function(){var node=FS.createNode("/proc/self","fd",16384|511,73);node.node_ops={lookup:(function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:(function(){return stream.path})}};ret.parent=ret;return ret})};return node})},{},"/proc/self/fd")}),createStandardStreams:(function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin","r");assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno]};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS,"IDBFS":IDBFS,"NODEFS":NODEFS,"WORKERFS":WORKERFS}}),init:(function(input,output,error){assert(!FS.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}}),getMode:(function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}),joinPath:(function(parts,forceRelative){var path=PATH.join.apply(null,parts);if(forceRelative&&path[0]=="/")path=path.substr(1);return path}),absolutePath:(function(relative,base){return PATH.resolve(base,relative)}),standardizePath:(function(path){return PATH.normalize(path)}),findObject:(function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{___setErrNo(ret.error);return null}}),analyzePath:(function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret}),createFolder:(function(parent,name,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.mkdir(path,mode)}),createPath:(function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current}),createFile:(function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)}),createDataFile:(function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,"w");FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node}),createDevice:(function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:(function(stream){stream.seekable=false}),close:(function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}}),read:(function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead}),write:(function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}}if(length){stream.node.timestamp=Date.now()}return i})});return FS.mkdev(path,mode,dev)}),createLink:(function(parent,name,target,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);return FS.symlink(target,path)}),forceLoadFile:(function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;var success=true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(Module["read"]){try{obj.contents=intArrayFromString(Module["read"](obj.url),true);obj.usedBytes=obj.contents.length}catch(e){success=false}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}if(!success)___setErrNo(ERRNO_CODES.EIO);return success}),createLazyFile:(function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})},chunkSize:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:(function(){return this.contents.length})}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node}),createPreloadedFile:(function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach((function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,(function(){if(onerror)onerror();removeRunDependency(dep)}));handled=true}}));if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,(function(byteArray){processData(byteArray)}),onerror)}else{processData(url)}}),indexedDB:(function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB}),DB_NAME:(function(){return"EM_FS_"+window.location.pathname}),DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(function(paths,onload,onerror){onload=onload||(function(){});onerror=onerror||(function(){});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){console.log("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach((function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}}));transaction.onerror=onerror};openRequest.onerror=onerror}),loadFilesFromDB:(function(paths,onload,onerror){onload=onload||(function(){});onerror=onerror||(function(){});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach((function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}}));transaction.onerror=onerror};openRequest.onerror=onerror})};var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")})};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){setTimeout(Browser.mainLoop.runner,value)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(!window["setImmediate"]){var setImmediates=[];var emscriptenMainLoopMessageId="__emcc";function Browser_setImmediate_messageHandler(event){if(event.source===window&&event.data===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}}window.addEventListener("message",Browser_setImmediate_messageHandler,true);window["setImmediate"]=function Browser_emulated_setImmediate(func){setImmediates.push(func);window.postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){window["setImmediate"](Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop,arg,noSetTiming){Module["noExitRuntime"]=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=func;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}if(Browser.mainLoop.method==="timeout"&&Module.ctx){Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!");Browser.mainLoop.method=""}Browser.mainLoop.runIter((function(){if(typeof arg!=="undefined"){Runtime.dynCall("vi",func,[arg])}else{Runtime.dynCall("v",func)}}));if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"SimulateInfiniteLoop"}}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:(function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++}),resume:(function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;_emscripten_set_main_loop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()}),updateStatus:(function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}}),runIter:(function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else{if(e&&typeof e==="object"&&e.stack)Module.printErr("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()})},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:(function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([(new Uint8Array(byteArray)).buffer],{type:Browser.getMimetype(name)})}}catch(e){Runtime.warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append((new Uint8Array(byteArray)).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",(function(){finish(audio)}),false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout((function(){finish(audio)}),1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);var canvas=Module["canvas"];function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===canvas||document["mozPointerLockElement"]===canvas||document["webkitPointerLockElement"]===canvas||document["msPointerLockElement"]===canvas}if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(function(){});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(function(){});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",(function(ev){if(!Browser.pointerLock&&canvas.requestPointerLock){canvas.requestPointerLock();ev.preventDefault()}}),false)}}}),createContext:(function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}canvas.style.backgroundColor="black"}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach((function(callback){callback()}));Browser.init()}return ctx}),destroyContext:(function(canvas,useWebGL,setInModule){}),fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:(function(lockPointer,resizeCanvas,vrDevice){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;Browser.vrDevice=vrDevice;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;if(typeof Browser.vrDevice==="undefined")Browser.vrDevice=null;var canvas=Module["canvas"];function fullScreenChange(){Browser.isFullScreen=false;var canvasContainer=canvas.parentNode;if((document["webkitFullScreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"]||document["mozFullscreenElement"]||document["fullScreenElement"]||document["fullscreenElement"]||document["msFullScreenElement"]||document["msFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.cancelFullScreen=document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["webkitCancelFullScreen"]||document["msExitFullscreen"]||document["exitFullscreen"]||(function(){});canvas.cancelFullScreen=canvas.cancelFullScreen.bind(document);if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullScreen=true;if(Browser.resizeCanvas)Browser.setFullScreenCanvasSize()}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas)Browser.setWindowedCanvasSize()}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullScreen);Browser.updateCanvasDimensions(canvas)}if(!Browser.fullScreenHandlersInstalled){Browser.fullScreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullScreenChange,false);document.addEventListener("mozfullscreenchange",fullScreenChange,false);document.addEventListener("webkitfullscreenchange",fullScreenChange,false);document.addEventListener("MSFullscreenChange",fullScreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullScreen=canvasContainer["requestFullScreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullScreen"]?(function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}):null);if(vrDevice){canvasContainer.requestFullScreen({vrDisplay:vrDevice})}else{canvasContainer.requestFullScreen()}}),nextRAF:0,fakeRequestAnimationFrame:(function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)}),requestAnimationFrame:function requestAnimationFrame(func){if(typeof window==="undefined"){Browser.fakeRequestAnimationFrame(func)}else{if(!window.requestAnimationFrame){window.requestAnimationFrame=window["requestAnimationFrame"]||window["mozRequestAnimationFrame"]||window["webkitRequestAnimationFrame"]||window["msRequestAnimationFrame"]||window["oRequestAnimationFrame"]||Browser.fakeRequestAnimationFrame}window.requestAnimationFrame(func)}},safeCallback:(function(func){return(function(){if(!ABORT)return func.apply(null,arguments)})}),allowAsyncCallbacks:true,queuedAsyncCallbacks:[],pauseAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=false}),resumeAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=true;if(Browser.queuedAsyncCallbacks.length>0){var callbacks=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[];callbacks.forEach((function(func){func()}))}}),safeRequestAnimationFrame:(function(func){return Browser.requestAnimationFrame((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}))}),safeSetTimeout:(function(func,timeout){Module["noExitRuntime"]=true;return setTimeout((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}),timeout)}),safeSetInterval:(function(func,timeout){Module["noExitRuntime"]=true;return setInterval((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}}),timeout)}),getMimetype:(function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]}),getUserMedia:(function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)}),getMovementX:(function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0}),getMovementY:(function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0}),getMouseWheelDelta:(function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail;break;case"mousewheel":delta=event.wheelDelta;break;case"wheel":delta=event["deltaY"];break;default:throw"unrecognized mouse wheel event: "+event.type}return delta}),mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:(function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}}),xhrLoad:(function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)}),asyncLoad:(function(url,onload,onerror,noRunDep){Browser.xhrLoad(url,(function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(!noRunDep)removeRunDependency("al "+url)}),(function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}}));if(!noRunDep)addRunDependency("al "+url)}),resizeListeners:[],updateResizeListeners:(function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach((function(listener){listener(canvas.width,canvas.height)}))}),setCanvasSize:(function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()}),windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags|8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),setWindowedCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags&~8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),updateCanvasDimensions:(function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["webkitFullScreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"]||document["mozFullscreenElement"]||document["fullScreenElement"]||document["fullscreenElement"]||document["msFullScreenElement"]||document["msFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}}),wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:(function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle})};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:(function(dirfd,path){if(path[0]!=="/"){var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);dir=dirstream.path}path=PATH.join2(dir,path)}return path}),doStat:(function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-ERRNO_CODES.ENOTDIR}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)}),doMkdir:(function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}),doMknod:(function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);ret=ret.slice(0,Math.max(0,bufsize));writeStringToMemory(ret,buf,true);return ret.length}),doAccess:(function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0}),doDup:(function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd}),doReadv:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret}),doWritev:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}),varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21506:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}Module["_bitshift64Lshr"]=_bitshift64Lshr;var _BDtoIHigh=true;function _pthread_cleanup_push(routine,arg){__ATEXIT__.push((function(){Runtime.dynCall("vi",routine,[arg])}));_pthread_cleanup_push.level=__ATEXIT__.length}function _pthread_cond_broadcast(){return 0}function _pthread_cleanup_pop(){assert(_pthread_cleanup_push.level==__ATEXIT__.length,"cannot pop if something else added meanwhile!");__ATEXIT__.pop();_pthread_cleanup_push.level=__ATEXIT__.length}function _pthread_mutex_unlock(){}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;function _pthread_mutex_lock(){}var _llvm_pow_f64=Math_pow;function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);self.called=true;assert(Runtime.dynamicAlloc);self.alloc=Runtime.dynamicAlloc;Runtime.dynamicAlloc=(function(){abort("cannot dynamically allocate, sbrk now has control")})}var ret=DYNAMICTOP;if(bytes!=0){var success=self.alloc(bytes);if(!success)return-1>>>0}return ret}Module["_memmove"]=_memmove;function ___cxa_guard_abort(){}var _emscripten_preinvoke=true;var _BItoD=true;function _pthread_cond_wait(){return 0}function ___cxa_rethrow(){___cxa_end_catch.rethrown=true;var ptr=EXCEPTIONS.caught.pop();EXCEPTIONS.last=ptr;throw ptr}function ___cxa_guard_release(){}Module["_round"]=_round;function _distme_(){Module["printErr"]("missing function: distme_");abort(-1)}function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}var _SItoD=true;Module["_memset"]=_memset;var _BDtoILow=true;function ___gxx_personality_v0(){}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]);return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?Pointer_stringify(tm_zone):""};var pattern=Pointer_stringify(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length<digits){str=character[0]+str}return str}function leadingNulls(value,digits){return leadingSomething(value,digits,"0")}function compareByDay(date1,date2){function sgn(value){return value<0?-1:value>0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":(function(date){return WEEKDAYS[date.tm_wday].substring(0,3)}),"%A":(function(date){return WEEKDAYS[date.tm_wday]}),"%b":(function(date){return MONTHS[date.tm_mon].substring(0,3)}),"%B":(function(date){return MONTHS[date.tm_mon]}),"%C":(function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)}),"%d":(function(date){return leadingNulls(date.tm_mday,2)}),"%e":(function(date){return leadingSomething(date.tm_mday,2," ")}),"%g":(function(date){return getWeekBasedYear(date).toString().substring(2)}),"%G":(function(date){return getWeekBasedYear(date)}),"%H":(function(date){return leadingNulls(date.tm_hour,2)}),"%I":(function(date){return leadingNulls(date.tm_hour<13?date.tm_hour:date.tm_hour-12,2)}),"%j":(function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)}),"%m":(function(date){return leadingNulls(date.tm_mon+1,2)}),"%M":(function(date){return leadingNulls(date.tm_min,2)}),"%n":(function(){return"\n"}),"%p":(function(date){if(date.tm_hour>0&&date.tm_hour<13){return"AM"}else{return"PM"}}),"%S":(function(date){return leadingNulls(date.tm_sec,2)}),"%t":(function(){return"\t"}),"%u":(function(date){var day=new Date(date.tm_year+1900,date.tm_mon+1,date.tm_mday,0,0,0,0);return day.getDay()||7}),"%U":(function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"}),"%V":(function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()<date.tm_year+1900){daysDifference=date.tm_yday+32-firstWeekStartThisYear.getDate()}else{daysDifference=date.tm_yday+1-firstWeekStartThisYear.getDate()}return leadingNulls(Math.ceil(daysDifference/7),2)}),"%w":(function(date){var day=new Date(date.tm_year+1900,date.tm_mon+1,date.tm_mday,0,0,0,0);return day.getDay()}),"%W":(function(date){var janFirst=new Date(date.tm_year,0,1);var firstMonday=janFirst.getDay()===1?janFirst:__addDays(janFirst,janFirst.getDay()===0?1:7-janFirst.getDay()+1);var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstMonday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstMondayUntilEndJanuary=31-firstMonday.getDate();var days=firstMondayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstMonday,janFirst)===0?"01":"00"}),"%y":(function(date){return(date.tm_year+1900).toString().substring(2)}),"%Y":(function(date){return date.tm_year+1900}),"%z":(function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)}),"%Z":(function(date){return date.tm_zone}),"%%":(function(){return"%"})};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _abort(){Module["abort"]()}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Runtime.dynCall("v",func);_pthread_once.seen[ptr]=1}function ___lock(){}function ___unlock(){}var _asin=Math_asin;function _pthread_getspecific(key){return PTHREAD_SPECIFIC[key]||0}var _llvm_fabs_f64=Math_abs;var _fabs=Math_abs;var _floor=Math_floor;var _sqrt=Math_sqrt;function __exit(status){Module["exit"](status)}function _exit(status){__exit(status)}function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL}PTHREAD_SPECIFIC[key]=value;return 0}function _malloc(bytes){var ptr=Runtime.dynamicAlloc(bytes+8);return ptr+8&4294967288}Module["_malloc"]=_malloc;function ___cxa_allocate_exception(size){return _malloc(size)}var _sin=Math_sin;function ___cxa_pure_virtual(){ABORT=true;throw"Pure virtual function called!"}var _atan=Math_atan;function ___cxa_guard_acquire(variable){if(!HEAP8[variable>>0]){HEAP8[variable>>0]=1;return 1}return 0}function ___cxa_begin_catch(ptr){__ZSt18uncaught_exceptionv.uncaught_exception--;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}Module["_bitshift64Shl"]=_bitshift64Shl;function _llvm_eh_typeid_for(type){return type}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var _acos=Math_acos;function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var _cos=Math_cos;function _clock(){if(_clock.start===undefined)_clock.start=Date.now();return(Date.now()-_clock.start)*(1e6/1e3)|0}var _atan2=Math_atan2;var _exp=Math_exp;function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}function _pthread_self(){return 0}function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;assert(offset_high===0);FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var ___dso_handle=allocate(1,"i32*",ALLOC_STATIC);function _blocko_(){Module["printErr"]("missing function: blocko_");abort(-1)}function _blockp_(){Module["printErr"]("missing function: blockp_");abort(-1)}function _blockrad_(){Module["printErr"]("missing function: blockrad_");abort(-1)}function _blocks_(){Module["printErr"]("missing function: blocks_");abort(-1)}Module["requestFullScreen"]=function Module_requestFullScreen(lockPointer,resizeCanvas,vrDevice){Browser.requestFullScreen(lockPointer,resizeCanvas,vrDevice)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};FS.staticInit();__ATINIT__.unshift((function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));Module["FS_createFolder"]=FS.createFolder;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createLink"]=FS.createLink;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);staticSealed=true;STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX);assert(DYNAMIC_BASE<TOTAL_MEMORY,"TOTAL_MEMORY not big enough for stack");var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_DYNAMIC);function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){try{return Module["dynCall_iiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iiiiiid(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_iiiiiid"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_vid(index,a1,a2){try{Module["dynCall_vid"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_vi(index,a1){try{Module["dynCall_vi"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_vii(index,a1,a2){try{Module["dynCall_vii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_iiiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_ii(index,a1){try{return Module["dynCall_ii"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiiiiiiiid(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){try{Module["dynCall_viiiiiiiiiid"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viidi(index,a1,a2,a3,a4){try{Module["dynCall_viidi"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13){try{return Module["dynCall_iiiiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiiiidd(index,a1,a2,a3,a4,a5,a6,a7,a8){try{Module["dynCall_viiiiiidd"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_diddddi(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_diddddi"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_vidi(index,a1,a2,a3){try{Module["dynCall_vidi"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiddii(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_viiddii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_diddddd(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_diddddd"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_vidd(index,a1,a2,a3){try{Module["dynCall_vidd"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iiii(index,a1,a2,a3){try{return Module["dynCall_iiii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){try{Module["dynCall_viiiiiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){try{Module["dynCall_viiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_diiii(index,a1,a2,a3,a4){try{return Module["dynCall_diiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiiidd(index,a1,a2,a3,a4,a5,a6,a7){try{Module["dynCall_viiiiidd"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viid(index,a1,a2,a3){try{Module["dynCall_viid"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiidi(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_viiiidi"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_di(index,a1){try{return Module["dynCall_di"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){try{return Module["dynCall_iiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iid(index,a1,a2){try{return Module["dynCall_iid"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){try{Module["dynCall_viiiiiii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){try{return Module["dynCall_iiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){try{Module["dynCall_viiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){try{Module["dynCall_viiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iii(index,a1,a2){try{return Module["dynCall_iii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){try{return Module["dynCall_iiiiii"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_diii(index,a1,a2,a3){try{return Module["dynCall_diii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iiiddii(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_iiiddii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_dii(index,a1,a2){try{return Module["dynCall_dii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiid(index,a1,a2,a3,a4,a5){try{Module["dynCall_viiiid"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_i(index){try{return Module["dynCall_i"](index)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){try{return Module["dynCall_iiiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiid(index,a1,a2,a3,a4){try{Module["dynCall_viiid"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viii(index,a1,a2,a3){try{Module["dynCall_viii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_v(index){try{Module["dynCall_v"](index)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){try{return Module["dynCall_iiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){try{return Module["dynCall_iiiiid"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiii(index,a1,a2,a3,a4){try{Module["dynCall_viiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}Module.asmGlobalArg={"Math":Math,"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array,"NaN":NaN,"Infinity":Infinity,"byteLength":byteLength};Module.asmLibraryArg={"abort":abort,"assert":assert,"invoke_iiiiiiii":invoke_iiiiiiii,"invoke_iiiiiid":invoke_iiiiiid,"invoke_vid":invoke_vid,"invoke_viiiii":invoke_viiiii,"invoke_vi":invoke_vi,"invoke_vii":invoke_vii,"invoke_iiiiiii":invoke_iiiiiii,"invoke_ii":invoke_ii,"invoke_viiiiiiiiiid":invoke_viiiiiiiiiid,"invoke_viidi":invoke_viidi,"invoke_iiiiiiiiiiiiii":invoke_iiiiiiiiiiiiii,"invoke_viiiiiidd":invoke_viiiiiidd,"invoke_diddddi":invoke_diddddi,"invoke_vidi":invoke_vidi,"invoke_viiddii":invoke_viiddii,"invoke_diddddd":invoke_diddddd,"invoke_vidd":invoke_vidd,"invoke_iiii":invoke_iiii,"invoke_viiiiiiiiiiiiiii":invoke_viiiiiiiiiiiiiii,"invoke_viiiiiiii":invoke_viiiiiiii,"invoke_viiiiii":invoke_viiiiii,"invoke_diiii":invoke_diiii,"invoke_viiiiidd":invoke_viiiiidd,"invoke_viid":invoke_viid,"invoke_viiiidi":invoke_viiiidi,"invoke_di":invoke_di,"invoke_iiiiiiiiiii":invoke_iiiiiiiiiii,"invoke_iid":invoke_iid,"invoke_viiiiiii":invoke_viiiiiii,"invoke_iiiiiiiiiiii":invoke_iiiiiiiiiiii,"invoke_viiiiiiiii":invoke_viiiiiiiii,"invoke_viiiiiiiiii":invoke_viiiiiiiiii,"invoke_iii":invoke_iii,"invoke_iiiiii":invoke_iiiiii,"invoke_diii":invoke_diii,"invoke_iiiddii":invoke_iiiddii,"invoke_dii":invoke_dii,"invoke_viiiid":invoke_viiiid,"invoke_i":invoke_i,"invoke_iiiii":invoke_iiiii,"invoke_viiid":invoke_viiid,"invoke_viii":invoke_viii,"invoke_v":invoke_v,"invoke_iiiiiiiii":invoke_iiiiiiiii,"invoke_iiiiid":invoke_iiiiid,"invoke_viiii":invoke_viiii,"_pthread_cleanup_pop":_pthread_cleanup_pop,"_strftime":_strftime,"_pthread_cond_wait":_pthread_cond_wait,"_sin":_sin,"_exp":_exp,"_llvm_pow_f64":_llvm_pow_f64,"_acos":_acos,"___syscall54":___syscall54,"_pthread_cleanup_push":_pthread_cleanup_push,"___syscall6":___syscall6,"_llvm_fabs_f64":_llvm_fabs_f64,"_atan2":_atan2,"_emscripten_set_main_loop_timing":_emscripten_set_main_loop_timing,"___gxx_personality_v0":___gxx_personality_v0,"_asin":_asin,"___assert_fail":___assert_fail,"___cxa_free_exception":___cxa_free_exception,"___cxa_allocate_exception":___cxa_allocate_exception,"__ZSt18uncaught_exceptionv":__ZSt18uncaught_exceptionv,"_floor":_floor,"_pthread_cond_broadcast":_pthread_cond_broadcast,"___cxa_guard_release":___cxa_guard_release,"__addDays":__addDays,"___cxa_guard_acquire":___cxa_guard_acquire,"_strftime_l":_strftime_l,"_what0_":_what0_,"___setErrNo":___setErrNo,"_llvm_eh_typeid_for":_llvm_eh_typeid_for,"_sbrk":_sbrk,"_atan":_atan,"___cxa_begin_catch":___cxa_begin_catch,"_emscripten_memcpy_big":_emscripten_memcpy_big,"___cxa_end_catch":___cxa_end_catch,"___resumeException":___resumeException,"___cxa_find_matching_catch":___cxa_find_matching_catch,"_sysconf":_sysconf,"_pthread_getspecific":_pthread_getspecific,"_clock":_clock,"__arraySum":__arraySum,"___syscall221":___syscall221,"_cos":_cos,"_pthread_self":_pthread_self,"_pthread_mutex_unlock":_pthread_mutex_unlock,"_pthread_once":_pthread_once,"_fabs":_fabs,"___cxa_rethrow":___cxa_rethrow,"_sqrt":_sqrt,"_pthread_key_create":_pthread_key_create,"___unlock":___unlock,"__isLeapYear":__isLeapYear,"_emscripten_set_main_loop":_emscripten_set_main_loop,"_log":_log,"_pthread_setspecific":_pthread_setspecific,"___cxa_atexit":___cxa_atexit,"___cxa_throw":___cxa_throw,"__exit":__exit,"___lock":___lock,"_abort":_abort,"___syscall5":___syscall5,"___cxa_pure_virtual":___cxa_pure_virtual,"_time":_time,"_pthread_mutex_lock":_pthread_mutex_lock,"_distme_":_distme_,"___cxa_guard_abort":___cxa_guard_abort,"_atexit":_atexit,"___syscall140":___syscall140,"_exit":_exit,"___syscall145":___syscall145,"___syscall146":___syscall146,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"cttz_i8":cttz_i8,"___dso_handle":___dso_handle,"_blocko_":_blocko_,"_blockp_":_blockp_,"_blockrad_":_blockrad_,"_blocks_":_blocks_};// EMSCRIPTEN_START_ASM
+var asm=(function(global,env,buffer) {
+"use asm";var a=global.Int8Array;var b=global.Int16Array;var c=global.Int32Array;var d=global.Uint8Array;var e=global.Uint16Array;var f=global.Uint32Array;var g=global.Float32Array;var h=global.Float64Array;var i=new a(buffer);var j=new b(buffer);var k=new c(buffer);var l=new d(buffer);var m=new e(buffer);var n=new f(buffer);var o=new g(buffer);var p=new h(buffer);var q=global.byteLength;var r=env.STACKTOP|0;var s=env.STACK_MAX|0;var t=env.tempDoublePtr|0;var u=env.ABORT|0;var v=env.cttz_i8|0;var w=env.___dso_handle|0;var x=env._blocko_|0;var y=env._blockp_|0;var z=env._blockrad_|0;var A=env._blocks_|0;var B=0;var C=0;var D=0;var E=0;var F=global.NaN,G=global.Infinity;var H=0,I=0,J=0,K=0,L=0.0,M=0,N=0,O=0,P=0.0;var Q=0;var R=0;var S=0;var T=0;var U=0;var V=0;var W=0;var X=0;var Y=0;var Z=0;var _=global.Math.floor;var $=global.Math.abs;var aa=global.Math.sqrt;var ba=global.Math.pow;var ca=global.Math.cos;var da=global.Math.sin;var ea=global.Math.tan;var fa=global.Math.acos;var ga=global.Math.asin;var ha=global.Math.atan;var ia=global.Math.atan2;var ja=global.Math.exp;var ka=global.Math.log;var la=global.Math.ceil;var ma=global.Math.imul;var na=global.Math.min;var oa=global.Math.clz32;var pa=env.abort;var qa=env.assert;var ra=env.invoke_iiiiiiii;var sa=env.invoke_iiiiiid;var ta=env.invoke_vid;var ua=env.invoke_viiiii;var va=env.invoke_vi;var wa=env.invoke_vii;var xa=env.invoke_iiiiiii;var ya=env.invoke_ii;var za=env.invoke_viiiiiiiiiid;var Aa=env.invoke_viidi;var Ba=env.invoke_iiiiiiiiiiiiii;var Ca=env.invoke_viiiiiidd;var Da=env.invoke_diddddi;var Ea=env.invoke_vidi;var Fa=env.invoke_viiddii;var Ga=env.invoke_diddddd;var Ha=env.invoke_vidd;var Ia=env.invoke_iiii;var Ja=env.invoke_viiiiiiiiiiiiiii;var Ka=env.invoke_viiiiiiii;var La=env.invoke_viiiiii;var Ma=env.invoke_diiii;var Na=env.invoke_viiiiidd;var Oa=env.invoke_viid;var Pa=env.invoke_viiiidi;var Qa=env.invoke_di;var Ra=env.invoke_iiiiiiiiiii;var Sa=env.invoke_iid;var Ta=env.invoke_viiiiiii;var Ua=env.invoke_iiiiiiiiiiii;var Va=env.invoke_viiiiiiiii;var Wa=env.invoke_viiiiiiiiii;var Xa=env.invoke_iii;var Ya=env.invoke_iiiiii;var Za=env.invoke_diii;var _a=env.invoke_iiiddii;var $a=env.invoke_dii;var ab=env.invoke_viiiid;var bb=env.invoke_i;var cb=env.invoke_iiiii;var db=env.invoke_viiid;var eb=env.invoke_viii;var fb=env.invoke_v;var gb=env.invoke_iiiiiiiii;var hb=env.invoke_iiiiid;var ib=env.invoke_viiii;var jb=env._pthread_cleanup_pop;var kb=env._strftime;var lb=env._pthread_cond_wait;var mb=env._sin;var nb=env._exp;var ob=env._llvm_pow_f64;var pb=env._acos;var qb=env.___syscall54;var rb=env._pthread_cleanup_push;var sb=env.___syscall6;var tb=env._llvm_fabs_f64;var ub=env._atan2;var vb=env._emscripten_set_main_loop_timing;var wb=env.___gxx_personality_v0;var xb=env._asin;var yb=env.___assert_fail;var zb=env.___cxa_free_exception;var Ab=env.___cxa_allocate_exception;var Bb=env.__ZSt18uncaught_exceptionv;var Cb=env._floor;var Db=env._pthread_cond_broadcast;var Eb=env.___cxa_guard_release;var Fb=env.__addDays;var Gb=env.___cxa_guard_acquire;var Hb=env._strftime_l;var Ib=env._what0_;var Jb=env.___setErrNo;var Kb=env._llvm_eh_typeid_for;var Lb=env._sbrk;var Mb=env._atan;var Nb=env.___cxa_begin_catch;var Ob=env._emscripten_memcpy_big;var Pb=env.___cxa_end_catch;var Qb=env.___resumeException;var Rb=env.___cxa_find_matching_catch;var Sb=env._sysconf;var Tb=env._pthread_getspecific;var Ub=env._clock;var Vb=env.__arraySum;var Wb=env.___syscall221;var Xb=env._cos;var Yb=env._pthread_self;var Zb=env._pthread_mutex_unlock;var _b=env._pthread_once;var $b=env._fabs;var ac=env.___cxa_rethrow;var bc=env._sqrt;var cc=env._pthread_key_create;var dc=env.___unlock;var ec=env.__isLeapYear;var fc=env._emscripten_set_main_loop;var gc=env._log;var hc=env._pthread_setspecific;var ic=env.___cxa_atexit;var jc=env.___cxa_throw;var kc=env.__exit;var lc=env.___lock;var mc=env._abort;var nc=env.___syscall5;var oc=env.___cxa_pure_virtual;var pc=env._time;var qc=env._pthread_mutex_lock;var rc=env._distme_;var sc=env.___cxa_guard_abort;var tc=env._atexit;var uc=env.___syscall140;var vc=env._exit;var wc=env.___syscall145;var xc=env.___syscall146;var yc=0.0;function zc(newBuffer){if(q(newBuffer)&16777215||q(newBuffer)<=16777215||q(newBuffer)>2147483648)return false;i=new a(newBuffer);j=new b(newBuffer);k=new c(newBuffer);l=new d(newBuffer);m=new e(newBuffer);n=new f(newBuffer);o=new g(newBuffer);p=new h(newBuffer);buffer=newBuffer;return true}
+// EMSCRIPTEN_START_FUNCS
+function vta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,m=0,n=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0.0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0;d=r;r=r+304|0;e=d+16|0;f=d+8|0;g=d+33|0;h=d;m=d+32|0;if((k[a+76>>2]|0)>-1)n=Hsa(a)|0;else n=0;q=i[b>>0]|0;a:do if(q<<24>>24){s=a+4|0;t=a+100|0;u=a+108|0;v=a+8|0;w=g+10|0;x=g+33|0;y=f+4|0;z=g+46|0;A=g+94|0;B=q;C=0;D=b;E=0;F=0;G=0;b:while(1){c:do if(!(Qra(B&255)|0)){H=(i[D>>0]|0)==37;d:do if(H){I=D+1|0;J=i[I>>0]|0;e:do switch(J<<24>>24){case 37:{break d;break}case 42:{K=0;L=D+2|0;break}default:{M=(J&255)+-48|0;if(M>>>0<10?(i[D+2>>0]|0)==36:0){k[e>>2]=k[c>>2];N=M;while(1){M=(k[e>>2]|0)+(4-1)&~(4-1);O=k[M>>2]|0;k[e>>2]=M+4;if(N>>>0>1)N=N+-1|0;else{P=O;break}}K=P;L=D+3|0;break e}N=(k[c>>2]|0)+(4-1)&~(4-1);O=k[N>>2]|0;k[c>>2]=N+4;K=O;L=I}}while(0);I=i[L>>0]|0;J=I&255;if((J+-48|0)>>>0<10){O=J;J=L;N=0;while(1){M=(N*10|0)+-48+O|0;R=J+1|0;S=i[R>>0]|0;O=S&255;if((O+-48|0)>>>0>=10){T=S;U=R;V=M;break}else{J=R;N=M}}}else{T=I;U=L;V=0}if(T<<24>>24==109){N=U+1|0;W=i[N>>0]|0;X=(K|0)!=0&1;Y=N;Z=0;_=0}else{W=T;X=0;Y=U;Z=F;_=G}N=Y+1|0;switch(W&255|0){case 104:{J=(i[N>>0]|0)==104;$=J?Y+2|0:N;aa=J?-2:-1;break}case 108:{J=(i[N>>0]|0)==108;$=J?Y+2|0:N;aa=J?3:1;break}case 106:{$=N;aa=3;break}case 116:case 122:{$=N;aa=1;break}case 76:{$=N;aa=2;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{$=Y;aa=0;break}default:{ba=X;ca=C;da=Z;ea=_;fa=154;break b}}N=l[$>>0]|0;J=(N&47|0)==3;O=J?N|32:N;N=J?1:aa;switch(O|0){case 99:{ga=E;ha=(V|0)<1?1:V;break}case 91:{ga=E;ha=V;break}case 110:{if(!K){ia=C;ja=$;ka=E;la=Z;ma=_;break c}switch(N|0){case -2:{i[K>>0]=E;ia=C;ja=$;ka=E;la=Z;ma=_;break c;break}case -1:{j[K>>1]=E;ia=C;ja=$;ka=E;la=Z;ma=_;break c;break}case 0:{k[K>>2]=E;ia=C;ja=$;ka=E;la=Z;ma=_;break c;break}case 1:{k[K>>2]=E;ia=C;ja=$;ka=E;la=Z;ma=_;break c;break}case 3:{J=K;k[J>>2]=E;k[J+4>>2]=((E|0)<0)<<31>>31;ia=C;ja=$;ka=E;la=Z;ma=_;break c;break}default:{ia=C;ja=$;ka=E;la=Z;ma=_;break c}}break}default:{Wra(a,0);do{J=k[s>>2]|0;if(J>>>0<(k[t>>2]|0)>>>0){k[s>>2]=J+1;na=l[J>>0]|0}else na=Xra(a)|0}while((Qra(na)|0)!=0);if(!(k[t>>2]|0))oa=k[s>>2]|0;else{I=(k[s>>2]|0)+-1|0;k[s>>2]=I;oa=I}ga=(k[u>>2]|0)+E+oa-(k[v>>2]|0)|0;ha=V}}Wra(a,ha);I=k[s>>2]|0;J=k[t>>2]|0;if(I>>>0<J>>>0){k[s>>2]=I+1;pa=J}else{if((Xra(a)|0)<0){ba=X;ca=C;da=Z;ea=_;fa=154;break b}pa=k[t>>2]|0}if(pa)k[s>>2]=(k[s>>2]|0)+-1;f:do switch(O|0){case 91:case 99:case 115:{J=(O|0)==99;g:do if((O&239|0)==99){WEa(g|0,-1,257)|0;i[g>>0]=0;if((O|0)==115){i[x>>0]=0;i[w>>0]=0;i[w+1>>0]=0;i[w+2>>0]=0;i[w+3>>0]=0;i[w+4>>0]=0;qa=$}else qa=$}else{I=$+1|0;M=(i[I>>0]|0)==94;R=M&1;S=M?$+2|0:I;WEa(g|0,M&1|0,257)|0;i[g>>0]=0;switch(i[S>>0]|0){case 45:{M=(R^1)&255;i[z>>0]=M;ra=M;sa=S+1|0;break}case 93:{M=(R^1)&255;i[A>>0]=M;ra=M;sa=S+1|0;break}default:{ra=(R^1)&255;sa=S}}S=sa;while(1){R=i[S>>0]|0;h:do switch(R<<24>>24){case 0:{ba=X;ca=C;da=Z;ea=_;fa=154;break b;break}case 93:{qa=S;break g;break}case 45:{M=S+1|0;I=i[M>>0]|0;switch(I<<24>>24){case 93:case 0:{ta=45;ua=S;break h;break}default:{}}va=i[S+-1>>0]|0;if((va&255)<(I&255)){wa=va&255;do{wa=wa+1|0;i[g+wa>>0]=ra;va=i[M>>0]|0}while((wa|0)<(va&255|0));ta=va;ua=M}else{ta=I;ua=M}break}default:{ta=R;ua=S}}while(0);i[g+((ta&255)+1)>>0]=ra;S=ua+1|0}}while(0);S=J?ha+1|0:31;R=(N|0)==1;wa=(X|0)!=0;i:do if(R){if(wa){va=lua(S<<2)|0;if(!va){ba=X;ca=C;da=0;ea=va;fa=154;break b}else xa=va}else xa=K;k[f>>2]=0;k[y>>2]=0;va=0;ya=S;za=xa;j:while(1){Aa=(za|0)==0;Ba=va;while(1){k:while(1){Ca=k[s>>2]|0;if(Ca>>>0<(k[t>>2]|0)>>>0){k[s>>2]=Ca+1;Da=l[Ca>>0]|0}else Da=Xra(a)|0;if(!(i[g+(Da+1)>>0]|0)){Ea=Ba;Fa=za;break j}i[m>>0]=Da;switch(usa(h,m,1,f)|0){case -1:{ba=X;ca=C;da=0;ea=za;fa=154;break b;break}case -2:break;default:break k}}if(Aa)Ga=Ba;else{k[za+(Ba<<2)>>2]=k[h>>2];Ga=Ba+1|0}if(wa&(Ga|0)==(ya|0))break;else Ba=Ga}Ba=ya<<1|1;Aa=oua(za,Ba<<2)|0;if(!Aa){ba=X;ca=C;da=0;ea=za;fa=154;break b}else{M=ya;ya=Ba;za=Aa;va=M}}if(!(vsa(f)|0)){ba=X;ca=C;da=0;ea=Fa;fa=154;break b}else{Ha=Ea;Ia=0;Ja=Fa}}else{if(wa){va=lua(S)|0;if(!va){ba=X;ca=C;da=0;ea=0;fa=154;break b}else{Ka=0;La=S;Ma=va}while(1){va=Ka;do{za=k[s>>2]|0;if(za>>>0<(k[t>>2]|0)>>>0){k[s>>2]=za+1;Na=l[za>>0]|0}else Na=Xra(a)|0;if(!(i[g+(Na+1)>>0]|0)){Ha=va;Ia=Ma;Ja=0;break i}i[Ma+va>>0]=Na;va=va+1|0}while((va|0)!=(La|0));va=La<<1|1;za=oua(Ma,va)|0;if(!za){ba=X;ca=C;da=Ma;ea=0;fa=154;break b}else{ya=La;La=va;Ma=za;Ka=ya}}}if(!K){ya=pa;while(1){za=k[s>>2]|0;if(za>>>0<ya>>>0){k[s>>2]=za+1;Oa=l[za>>0]|0}else Oa=Xra(a)|0;if(!(i[g+(Oa+1)>>0]|0)){Ha=0;Ia=0;Ja=0;break i}ya=k[t>>2]|0}}else{ya=pa;za=0;while(1){va=k[s>>2]|0;if(va>>>0<ya>>>0){k[s>>2]=va+1;Pa=l[va>>0]|0}else Pa=Xra(a)|0;if(!(i[g+(Pa+1)>>0]|0)){Ha=za;Ia=K;Ja=0;break i}i[K+za>>0]=Pa;ya=k[t>>2]|0;za=za+1|0}}}while(0);if(!(k[t>>2]|0))Qa=k[s>>2]|0;else{S=(k[s>>2]|0)+-1|0;k[s>>2]=S;Qa=S}S=Qa-(k[v>>2]|0)+(k[u>>2]|0)|0;if(!S){Ra=X;Sa=C;Ta=Ia;Ua=Ja;break b}if(!((S|0)==(ha|0)|J^1)){Ra=X;Sa=C;Ta=Ia;Ua=Ja;break b}do if(wa)if(R){k[K>>2]=Ja;break}else{k[K>>2]=Ia;break}while(0);if(J){Va=qa;Wa=Ia;Xa=Ja}else{if(Ja)k[Ja+(Ha<<2)>>2]=0;if(!Ia){Va=qa;Wa=0;Xa=Ja;break f}i[Ia+Ha>>0]=0;Va=qa;Wa=Ia;Xa=Ja}break}case 120:case 88:case 112:{Ya=16;fa=136;break}case 111:{Ya=8;fa=136;break}case 117:case 100:{Ya=10;fa=136;break}case 105:{Ya=0;fa=136;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{Za=+Ura(a,N,0);if((k[u>>2]|0)==((k[v>>2]|0)-(k[s>>2]|0)|0)){Ra=X;Sa=C;Ta=Z;Ua=_;break b}if(!K){Va=$;Wa=Z;Xa=_}else switch(N|0){case 0:{o[K>>2]=Za;Va=$;Wa=Z;Xa=_;break f;break}case 1:{p[K>>3]=Za;Va=$;Wa=Z;Xa=_;break f;break}case 2:{p[K>>3]=Za;Va=$;Wa=Z;Xa=_;break f;break}default:{Va=$;Wa=Z;Xa=_;break f}}break}default:{Va=$;Wa=Z;Xa=_}}while(0);l:do if((fa|0)==136){fa=0;R=Vra(a,Ya,0,-1,-1)|0;if((k[u>>2]|0)==((k[v>>2]|0)-(k[s>>2]|0)|0)){Ra=X;Sa=C;Ta=Z;Ua=_;break b}if((K|0)!=0&(O|0)==112){k[K>>2]=R;Va=$;Wa=Z;Xa=_;break}if(!K){Va=$;Wa=Z;Xa=_}else switch(N|0){case -2:{i[K>>0]=R;Va=$;Wa=Z;Xa=_;break l;break}case -1:{j[K>>1]=R;Va=$;Wa=Z;Xa=_;break l;break}case 0:{k[K>>2]=R;Va=$;Wa=Z;Xa=_;break l;break}case 1:{k[K>>2]=R;Va=$;Wa=Z;Xa=_;break l;break}case 3:{wa=K;k[wa>>2]=R;k[wa+4>>2]=Q;Va=$;Wa=Z;Xa=_;break l;break}default:{Va=$;Wa=Z;Xa=_;break l}}}while(0);ia=((K|0)!=0&1)+C|0;ja=Va;ka=(k[u>>2]|0)+ga+(k[s>>2]|0)-(k[v>>2]|0)|0;la=Wa;ma=Xa;break c}while(0);N=D+(H&1)|0;Wra(a,0);O=k[s>>2]|0;if(O>>>0<(k[t>>2]|0)>>>0){k[s>>2]=O+1;_a=l[O>>0]|0}else _a=Xra(a)|0;if((_a|0)!=(l[N>>0]|0)){$a=_a;ab=C;bb=F;cb=G;fa=22;break b}ia=C;ja=N;ka=E+1|0;la=F;ma=G}else{N=D;while(1){O=N+1|0;if(!(Qra(l[O>>0]|0)|0)){db=N;break}else N=O}Wra(a,0);do{N=k[s>>2]|0;if(N>>>0<(k[t>>2]|0)>>>0){k[s>>2]=N+1;eb=l[N>>0]|0}else eb=Xra(a)|0}while((Qra(eb)|0)!=0);if(!(k[t>>2]|0))fb=k[s>>2]|0;else{N=(k[s>>2]|0)+-1|0;k[s>>2]=N;fb=N}ia=C;ja=db;ka=(k[u>>2]|0)+E+fb-(k[v>>2]|0)|0;la=F;ma=G}while(0);D=ja+1|0;B=i[D>>0]|0;if(!(B<<24>>24)){gb=ia;break a}else{C=ia;E=ka;F=la;G=ma}}if((fa|0)==22){if(k[t>>2]|0)k[s>>2]=(k[s>>2]|0)+-1;if((ab|0)!=0|($a|0)>-1){gb=ab;break}else{hb=0;ib=bb;jb=cb;fa=155}}else if((fa|0)==154)if(!ca){hb=ba;ib=da;jb=ea;fa=155}else{Ra=ba;Sa=ca;Ta=da;Ua=ea}if((fa|0)==155){Ra=hb;Sa=-1;Ta=ib;Ua=jb}if(!Ra)gb=Sa;else{mua(Ta);mua(Ua);gb=Sa}}else gb=0;while(0);if(n)Isa(a);r=d;return gb|0}function wta(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;e=r;r=r+128|0;f=e+112|0;g=e;h=g;j=42544;l=h+112|0;do{k[h>>2]=k[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(l|0));if((b+-1|0)>>>0>2147483646)if(!b){m=f;n=1;o=4}else{f=Sra()|0;k[f>>2]=75;p=-1}else{m=a;n=b;o=4}if((o|0)==4){o=-2-m|0;b=n>>>0>o>>>0?o:n;k[g+48>>2]=b;n=g+20|0;k[n>>2]=m;k[g+44>>2]=m;o=m+b|0;m=g+16|0;k[m>>2]=o;k[g+28>>2]=o;o=uta(g,c,d)|0;if(!b)p=o;else{b=k[n>>2]|0;i[b+(((b|0)==(k[m>>2]|0))<<31>>31)>>0]=0;p=o}}r=e;return p|0}function xta(a,b,c){a=a|0;b=b|0;c=c|0;return wta(a,2147483647,b,c)|0}function yta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=r;r=r+112|0;e=d;f=e;g=f+112|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));k[e+32>>2]=51;k[e+44>>2]=a;k[e+76>>2]=-1;k[e+84>>2]=a;a=vta(e,b,c)|0;r=d;return a|0}function zta(a,b){a=a|0;b=b|0;return +(+fua(a,b,1))}function Ata(a,b,c){a=a|0;b=b|0;c=c|0;return +(+fua(a,b,2))}function Bta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=gua(a,b,c,-1,-1)|0;return d|0}function Cta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=gua(a,b,c,0,-2147483648)|0;return d|0}function Dta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;d=b&255;e=(c|0)!=0;a:do if(e&(a&3|0)!=0){f=b&255;g=c;h=a;while(1){if((i[h>>0]|0)==f<<24>>24){j=g;l=h;m=6;break a}n=h+1|0;o=g+-1|0;p=(o|0)!=0;if(p&(n&3|0)!=0){g=o;h=n}else{q=o;r=p;s=n;m=5;break}}}else{q=c;r=e;s=a;m=5}while(0);if((m|0)==5)if(r){j=q;l=s;m=6}else{t=0;u=s}b:do if((m|0)==6){s=b&255;if((i[l>>0]|0)==s<<24>>24){t=j;u=l}else{q=ma(d,16843009)|0;c:do if(j>>>0>3){r=j;a=l;while(1){e=k[a>>2]^q;if((e&-2139062144^-2139062144)&e+-16843009){v=r;w=a;break}e=a+4|0;c=r+-4|0;if(c>>>0>3){r=c;a=e}else{x=c;y=e;m=11;break c}}z=v;A=w}else{x=j;y=l;m=11}while(0);if((m|0)==11)if(!x){t=0;u=y;break}else{z=x;A=y}while(1){if((i[A>>0]|0)==s<<24>>24){t=z;u=A;break b}q=A+1|0;z=z+-1|0;if(!z){t=0;u=q;break}else A=q}}}while(0);return ((t|0)!=0?u:0)|0}function Eta(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;c=b;a:do if(!((c^a)&3)){if(!(c&3)){d=b;e=a}else{f=a;g=b;while(1){h=i[g>>0]|0;i[f>>0]=h;if(!(h<<24>>24)){j=f;break a}h=g+1|0;l=f+1|0;if(!(h&3)){d=h;e=l;break}else{f=l;g=h}}}g=k[d>>2]|0;if(!((g&-2139062144^-2139062144)&g+-16843009)){f=g;g=e;h=d;while(1){l=h+4|0;m=g+4|0;k[g>>2]=f;f=k[l>>2]|0;if((f&-2139062144^-2139062144)&f+-16843009){n=m;o=l;break}else{g=m;h=l}}}else{n=e;o=d}p=o;q=n;r=8}else{p=b;q=a;r=8}while(0);if((r|0)==8){r=i[p>>0]|0;i[q>>0]=r;if(!(r<<24>>24))j=q;else{r=q;q=p;while(1){q=q+1|0;p=r+1|0;a=i[q>>0]|0;i[p>>0]=a;if(!(a<<24>>24)){j=p;break}else r=p}}}return j|0}function Fta(a,b){a=a|0;b=b|0;Jta(a+(Lta(a)|0)|0,b)|0;return a|0}function Gta(a,b){a=a|0;b=b|0;var c=0;c=Hta(a,b)|0;return ((i[c>>0]|0)==(b&255)<<24>>24?c:0)|0}function Hta(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;c=b&255;a:do if(!c)d=a+(Lta(a)|0)|0;else{if(!(a&3))e=a;else{f=b&255;g=a;while(1){h=i[g>>0]|0;if(h<<24>>24==0?1:h<<24>>24==f<<24>>24){d=g;break a}h=g+1|0;if(!(h&3)){e=h;break}else g=h}}g=ma(c,16843009)|0;f=k[e>>2]|0;b:do if(!((f&-2139062144^-2139062144)&f+-16843009)){h=f;j=e;while(1){l=h^g;if((l&-2139062144^-2139062144)&l+-16843009){m=j;break b}l=j+4|0;h=k[l>>2]|0;if((h&-2139062144^-2139062144)&h+-16843009){m=l;break}else j=l}}else m=e;while(0);g=b&255;f=m;while(1){j=i[f>>0]|0;if(j<<24>>24==0?1:j<<24>>24==g<<24>>24){d=f;break}else f=f+1|0}}while(0);return d|0}function Ita(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=i[a>>0]|0;d=i[b>>0]|0;if(c<<24>>24==0?1:c<<24>>24!=d<<24>>24){e=c;f=d}else{d=a;a=b;do{d=d+1|0;a=a+1|0;b=i[d>>0]|0;c=i[a>>0]|0}while(!(b<<24>>24==0?1:b<<24>>24!=c<<24>>24));e=b;f=c}return (e&255)-(f&255)|0}function Jta(a,b){a=a|0;b=b|0;Eta(a,b)|0;return a|0}function Kta(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;c=r;r=r+32|0;d=c;e=i[b>>0]|0;if(e<<24>>24!=0?(i[b+1>>0]|0)!=0:0){k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[d+28>>2]=0;f=b;b=e;do{g=d+(((b&255)>>>5&255)<<2)|0;k[g>>2]=k[g>>2]|1<<(b&31);f=f+1|0;b=i[f>>0]|0}while(b<<24>>24!=0);b=i[a>>0]|0;a:do if(!(b<<24>>24))h=a;else{f=a;g=b;while(1){if(k[d+(((g&255)>>>5&255)<<2)>>2]&1<<(g&31)){h=f;break a}j=f+1|0;g=i[j>>0]|0;if(!(g<<24>>24)){h=j;break}else f=j}}while(0);l=h-a|0}else l=(Hta(a,e<<24>>24)|0)-a|0;r=c;return l|0}function Lta(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;b=a;a:do if(!(b&3)){c=a;d=4}else{e=a;f=b;while(1){if(!(i[e>>0]|0)){g=f;break a}h=e+1|0;f=h;if(!(f&3)){c=h;d=4;break}else e=h}}while(0);if((d|0)==4){d=c;while(1){c=k[d>>2]|0;if(!((c&-2139062144^-2139062144)&c+-16843009))d=d+4|0;else{j=c;l=d;break}}if(!((j&255)<<24>>24))m=l;else{j=l;while(1){l=j+1|0;if(!(i[l>>0]|0)){m=l;break}else j=l}}g=m}return g-b|0}function Mta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,m=0,n=0;if(!c)d=0;else{e=i[a>>0]|0;a:do if(!(e<<24>>24)){f=0;g=b}else{h=c;j=e;k=a;m=b;while(1){h=h+-1|0;n=i[m>>0]|0;if(!(j<<24>>24==n<<24>>24&((h|0)!=0&n<<24>>24!=0))){f=j;g=m;break a}k=k+1|0;n=m+1|0;j=i[k>>0]|0;if(!(j<<24>>24)){f=0;g=n;break}else m=n}}while(0);d=(f&255)-(l[g>>0]|0)|0}return d|0}function Nta(a,b){a=a|0;b=b|0;var c=0;c=Dta(a,0,b)|0;return ((c|0)==0?b:c-a|0)|0}function Ota(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;c=r;r=r+32|0;d=c;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[d+28>>2]=0;e=i[b>>0]|0;do if(!(e<<24>>24))f=0;else{if(!(i[b+1>>0]|0)){g=a;while(1)if((i[g>>0]|0)==e<<24>>24)g=g+1|0;else{h=g;break}f=h-a|0;break}else{j=b;l=e}do{g=d+(((l&255)>>>5&255)<<2)|0;k[g>>2]=k[g>>2]|1<<(l&31);j=j+1|0;l=i[j>>0]|0}while(l<<24>>24!=0);g=i[a>>0]|0;a:do if(!(g<<24>>24))m=a;else{n=a;o=g;while(1){if(!(k[d+(((o&255)>>>5&255)<<2)>>2]&1<<(o&31))){m=n;break a}p=n+1|0;o=i[p>>0]|0;if(!(o<<24>>24)){m=p;break}else n=p}}while(0);f=m-a|0}while(0);r=c;return f|0}function Pta(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if(!a){c=k[10664]|0;if(!c)d=0;else{e=c;f=3}}else{e=a;f=3}do if((f|0)==3){a=e+(Ota(e,b)|0)|0;if(!(i[a>>0]|0)){k[10664]=0;d=0;break}c=a+(Kta(a,b)|0)|0;k[10664]=c;if(!(i[c>>0]|0)){k[10664]=0;d=a;break}else{k[10664]=c+1;i[c>>0]=0;d=a;break}}while(0);return d|0}function Qta(a){a=a|0;var b=0,c=0;b=a;while(1)if(!(k[b>>2]|0)){c=b;break}else b=b+4|0;return c-a>>2|0}function Rta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(c){d=c;c=b;b=a;while(1){d=d+-1|0;k[b>>2]=k[c>>2];if(!d)break;else{c=c+4|0;b=b+4|0}}}return a|0}function Sta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=(c|0)==0;if(a-b>>2>>>0<c>>>0){if(!d){e=c;do{e=e+-1|0;k[a+(e<<2)>>2]=k[b+(e<<2)>>2]}while((e|0)!=0)}}else if(!d){d=b;b=a;e=c;while(1){e=e+-1|0;k[b>>2]=k[d>>2];if(!e)break;else{d=d+4|0;b=b+4|0}}}return a|0}function Tta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(c){d=c;c=a;while(1){d=d+-1|0;k[c>>2]=b;if(!d)break;else c=c+4|0}}return a|0}function Uta(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;c=a+4|0;d=k[c>>2]|0;e=a+100|0;if(d>>>0<(k[e>>2]|0)>>>0){k[c>>2]=d+1;f=l[d>>0]|0}else f=Xra(a)|0;switch(f|0){case 43:case 45:{d=(f|0)==45&1;g=k[c>>2]|0;if(g>>>0<(k[e>>2]|0)>>>0){k[c>>2]=g+1;h=l[g>>0]|0}else h=Xra(a)|0;if((b|0)!=0&(h+-48|0)>>>0>9?(k[e>>2]|0)!=0:0){k[c>>2]=(k[c>>2]|0)+-1;i=h;j=d}else{i=h;j=d}break}default:{i=f;j=0}}if((i+-48|0)>>>0>9)if(!(k[e>>2]|0)){m=-2147483648;n=0}else{k[c>>2]=(k[c>>2]|0)+-1;m=-2147483648;n=0}else{f=i;i=0;while(1){d=f+-48+(i*10|0)|0;h=k[c>>2]|0;if(h>>>0<(k[e>>2]|0)>>>0){k[c>>2]=h+1;o=l[h>>0]|0}else o=Xra(a)|0;if((o+-48|0)>>>0<10&(d|0)<214748364){f=o;i=d}else{p=d;q=o;break}}o=((p|0)<0)<<31>>31;if((q+-48|0)>>>0<10){i=p;f=o;d=q;while(1){h=bFa(i|0,f|0,10,0)|0;b=Q;g=QEa(d|0,((d|0)<0)<<31>>31|0,-48,-1)|0;r=QEa(g|0,Q|0,h|0,b|0)|0;b=Q;h=k[c>>2]|0;if(h>>>0<(k[e>>2]|0)>>>0){k[c>>2]=h+1;s=l[h>>0]|0}else s=Xra(a)|0;if((s+-48|0)>>>0<10&((b|0)<21474836|(b|0)==21474836&r>>>0<2061584302)){i=r;f=b;d=s}else{t=r;u=b;v=s;break}}}else{t=p;u=o;v=q}if((v+-48|0)>>>0<10)do{v=k[c>>2]|0;if(v>>>0<(k[e>>2]|0)>>>0){k[c>>2]=v+1;w=l[v>>0]|0}else w=Xra(a)|0}while((w+-48|0)>>>0<10);if(k[e>>2]|0)k[c>>2]=(k[c>>2]|0)+-1;c=(j|0)!=0;j=REa(0,0,t|0,u|0)|0;m=c?Q:u;n=c?j:t}Q=m;return n|0}function Vta(a){a=a|0;if(!(k[a+68>>2]|0))Isa(a);return}function Wta(a){a=a|0;if(!(k[a+68>>2]|0))Isa(a);return}function Xta(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;c=a+28|0;if((k[b>>2]|0)>>>0>(k[c>>2]|0)>>>0?(Rc[k[a+36>>2]&63](a,0,0)|0,(k[b>>2]|0)==0):0)d=-1;else{e=a+4|0;f=k[e>>2]|0;g=a+8|0;h=k[g>>2]|0;if(f>>>0<h>>>0)Rc[k[a+40>>2]&63](a,f-h|0,1)|0;k[a+16>>2]=0;k[c>>2]=0;k[b>>2]=0;k[g>>2]=0;k[e>>2]=0;d=0}return d|0}function Yta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=k[a+84>>2]|0;e=k[d+4>>2]|0;f=k[d>>2]|0;g=e>>>0<f>>>0?0:e-f|0;if(g>>>0<c>>>0){k[a>>2]=k[a>>2]|16;h=g}else h=c;c=d+12|0;TEa(b|0,(k[c>>2]|0)+f|0,h|0)|0;f=(k[d>>2]|0)+h|0;k[d>>2]=f;b=g-h|0;g=k[a+48>>2]|0;e=b>>>0>g>>>0?g:b;b=k[a+44>>2]|0;k[a+4>>2]=b;g=b;k[a+8>>2]=g+e;TEa(g|0,(k[c>>2]|0)+f|0,e|0)|0;k[d>>2]=(k[d>>2]|0)+e;return h|0}function Zta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;d=k[a+84>>2]|0;e=a+20|0;f=k[e>>2]|0;g=k[a+28>>2]|0;h=g;j=f-h|0;if((f|0)!=(h|0)?(k[e>>2]=g,(Zta(a,g,j)|0)>>>0<j>>>0):0)l=0;else m=3;do if((m|0)==3){if((k[d+16>>2]|0)==97){j=d+4|0;g=k[j>>2]|0;k[d>>2]=g;n=j;o=d;p=g}else{n=d+4|0;o=d;p=k[d>>2]|0}g=d+8|0;j=(k[g>>2]|0)-p|0;e=j>>>0<c>>>0?j:c;j=d+12|0;TEa((k[j>>2]|0)+p|0,b|0,e|0)|0;h=(k[o>>2]|0)+e|0;k[o>>2]=h;if(h>>>0>(k[n>>2]|0)>>>0){k[n>>2]=h;f=k[g>>2]|0;if(h>>>0<f>>>0){i[(k[j>>2]|0)+h>>0]=0;l=e;break}if(!((f|0)==0|(k[a>>2]&4|0)==0)){i[(k[j>>2]|0)+(f+-1)>>0]=0;l=e}else l=e}else l=e}while(0);return l|0}function _ta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=r;r=r+16|0;e=d;f=k[a+84>>2]|0;if((c>>>0<=2?(k[e>>2]=0,k[e+4>>2]=k[f>>2],k[e+8>>2]=k[f+4>>2],a=k[e+(c<<2)>>2]|0,(b|0)>=(0-a|0)):0)?((k[f+8>>2]|0)-a|0)>=(b|0):0){c=a+b|0;k[f>>2]=c;g=c}else{c=Sra()|0;k[c>>2]=22;g=-1}r=d;return g|0}function $ta(a){a=a|0;return 0}function aua(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;d=k[a+84>>2]|0;e=a+20|0;f=k[e>>2]|0;g=k[a+28>>2]|0;h=g;i=f-h|0;if((f|0)!=(h|0)?(k[e>>2]=g,(aua(a,g,i)|0)>>>0<i>>>0):0)j=0;else l=3;do if((l|0)==3){i=d+8|0;g=k[i>>2]|0;a=g+c|0;e=d+20|0;h=k[e>>2]|0;if(a>>>0<h>>>0){m=d+12|0;n=g}else{g=a+1|h<<1|1;h=d+12|0;a=oua(k[h>>2]|0,g)|0;if(!a){j=0;break}k[h>>2]=a;k[k[d>>2]>>2]=a;a=k[e>>2]|0;WEa((k[h>>2]|0)+a|0,0,g-a|0)|0;k[e>>2]=g;m=h;n=k[i>>2]|0}TEa((k[m>>2]|0)+n|0,b|0,c|0)|0;h=(k[i>>2]|0)+c|0;k[i>>2]=h;i=d+16|0;if(h>>>0>=(k[i>>2]|0)>>>0)k[i>>2]=h;k[k[d+4>>2]>>2]=h;j=c}while(0);return j|0}function bua(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=r;r=r+16|0;e=d;f=k[a+84>>2]|0;if(c>>>0<=2?(k[e>>2]=0,a=f+8|0,k[e+4>>2]=k[a>>2],k[e+8>>2]=k[f+16>>2],f=k[e+(c<<2)>>2]|0,!((b|0)<(0-f|0)|(2147483647-f|0)<(b|0))):0){c=f+b|0;k[a>>2]=c;g=c}else{c=Sra()|0;k[c>>2]=22;g=-1}r=d;return g|0}function cua(a){a=a|0;return 0}function dua(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0.0,db=0.0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0.0,kb=0.0,lb=0.0,mb=0.0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0.0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0.0,Yb=0.0,Zb=0.0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0;f=r;r=r+624|0;g=f+24|0;h=f+16|0;m=f+588|0;n=f+576|0;o=f;q=f+536|0;s=f+8|0;u=f+528|0;v=(a|0)!=0;w=q+40|0;x=w;y=q+39|0;q=s+4|0;z=m;A=0-z|0;B=n+12|0;C=n+11|0;n=B;D=n-z|0;E=-2-z|0;F=n+2|0;G=g+288|0;H=m+9|0;I=H;J=m+8|0;K=0;L=0;M=0;N=b;a:while(1){do if((K|0)>-1)if((L|0)>(2147483647-K|0)){b=Sra()|0;k[b>>2]=75;O=-1;break}else{O=L+K|0;break}else O=K;while(0);b=i[N>>0]|0;if(!(b<<24>>24)){P=O;R=M;S=244;break}else{T=b;U=N}b:while(1){switch(T<<24>>24){case 37:{V=U;W=U;S=9;break b;break}case 0:{X=U;Y=U;break b;break}default:{}}b=U+1|0;T=i[b>>0]|0;U=b}c:do if((S|0)==9)while(1){S=0;if((i[V+1>>0]|0)!=37){X=V;Y=W;break c}b=W+1|0;Z=V+2|0;if((i[Z>>0]|0)==37){V=Z;W=b;S=9}else{X=Z;Y=b;break}}while(0);b=Y-N|0;if(v?(k[a>>2]&32|0)==0:0)ita(N,b,a)|0;if((Y|0)!=(N|0)){K=O;L=b;N=X;continue}Z=X+1|0;_=i[Z>>0]|0;$=(_<<24>>24)+-48|0;if($>>>0<10){aa=(i[X+2>>0]|0)==36;ba=aa?X+3|0:Z;ca=i[ba>>0]|0;da=aa?$:-1;ea=aa?1:M;fa=ba}else{ca=_;da=-1;ea=M;fa=Z}Z=ca<<24>>24;d:do if((Z&-32|0)==32){_=Z;ba=ca;aa=0;$=fa;while(1){if(!(1<<_+-32&75913)){ga=ba;ha=aa;ia=$;break d}ja=1<<(ba<<24>>24)+-32|aa;ka=$+1|0;la=i[ka>>0]|0;_=la<<24>>24;if((_&-32|0)!=32){ga=la;ha=ja;ia=ka;break}else{ba=la;aa=ja;$=ka}}}else{ga=ca;ha=0;ia=fa}while(0);do if(ga<<24>>24==42){Z=ia+1|0;$=(i[Z>>0]|0)+-48|0;if($>>>0<10?(i[ia+2>>0]|0)==36:0){k[e+($<<2)>>2]=10;na=1;oa=ia+3|0;pa=k[d+((i[Z>>0]|0)+-48<<3)>>2]|0}else{if(ea){qa=-1;break a}if(!v){ra=ha;sa=0;ta=Z;ua=0;break}$=(k[c>>2]|0)+(4-1)&~(4-1);aa=k[$>>2]|0;k[c>>2]=$+4;na=0;oa=Z;pa=aa}if((pa|0)<0){ra=ha|8192;sa=na;ta=oa;ua=0-pa|0}else{ra=ha;sa=na;ta=oa;ua=pa}}else{aa=(ga<<24>>24)+-48|0;if(aa>>>0<10){Z=ia;$=0;ba=aa;while(1){aa=($*10|0)+ba|0;_=Z+1|0;ba=(i[_>>0]|0)+-48|0;if(ba>>>0>=10){va=aa;wa=_;break}else{Z=_;$=aa}}if((va|0)<0){qa=-1;break a}else{ra=ha;sa=ea;ta=wa;ua=va}}else{ra=ha;sa=ea;ta=ia;ua=0}}while(0);e:do if((i[ta>>0]|0)==46){$=ta+1|0;Z=i[$>>0]|0;if(Z<<24>>24!=42){ba=(Z<<24>>24)+-48|0;if(ba>>>0<10){xa=$;ya=0;za=ba}else{Aa=0;Ba=$;break}while(1){$=(ya*10|0)+za|0;ba=xa+1|0;za=(i[ba>>0]|0)+-48|0;if(za>>>0>=10){Aa=$;Ba=ba;break e}else{xa=ba;ya=$}}}$=ta+2|0;ba=(i[$>>0]|0)+-48|0;if(ba>>>0<10?(i[ta+3>>0]|0)==36:0){k[e+(ba<<2)>>2]=10;Aa=k[d+((i[$>>0]|0)+-48<<3)>>2]|0;Ba=ta+4|0;break}if(sa){qa=-1;break a}if(v){ba=(k[c>>2]|0)+(4-1)&~(4-1);Z=k[ba>>2]|0;k[c>>2]=ba+4;Aa=Z;Ba=$}else{Aa=0;Ba=$}}else{Aa=-1;Ba=ta}while(0);$=Ba;Z=0;while(1){ba=(i[$>>0]|0)+-65|0;if(ba>>>0>57){qa=-1;break a}aa=$+1|0;_=i[156545+(Z*58|0)+ba>>0]|0;ba=_&255;if((ba+-1|0)>>>0<8){$=aa;Z=ba}else{Ca=aa;Da=_;Ea=ba;Fa=$;Ga=Z;break}}if(!(Da<<24>>24)){qa=-1;break}Z=(da|0)>-1;do if(Da<<24>>24==19)if(Z){qa=-1;break a}else S=52;else{if(Z){k[e+(da<<2)>>2]=Ea;$=d+(da<<3)|0;ba=k[$+4>>2]|0;_=o;k[_>>2]=k[$>>2];k[_+4>>2]=ba;S=52;break}if(!v){qa=0;break a}iua(o,Ea,c)}while(0);if((S|0)==52?(S=0,!v):0){K=O;L=b;M=sa;N=Ca;continue}Z=i[Fa>>0]|0;ba=(Ga|0)!=0&(Z&15|0)==3?Z&-33:Z;Z=ra&-65537;_=(ra&8192|0)==0?ra:Z;f:do switch(ba|0){case 110:{switch(Ga|0){case 0:{k[k[o>>2]>>2]=O;K=O;L=b;M=sa;N=Ca;continue a;break}case 1:{k[k[o>>2]>>2]=O;K=O;L=b;M=sa;N=Ca;continue a;break}case 2:{$=k[o>>2]|0;k[$>>2]=O;k[$+4>>2]=((O|0)<0)<<31>>31;K=O;L=b;M=sa;N=Ca;continue a;break}case 3:{j[k[o>>2]>>1]=O;K=O;L=b;M=sa;N=Ca;continue a;break}case 4:{i[k[o>>2]>>0]=O;K=O;L=b;M=sa;N=Ca;continue a;break}case 6:{k[k[o>>2]>>2]=O;K=O;L=b;M=sa;N=Ca;continue a;break}case 7:{$=k[o>>2]|0;k[$>>2]=O;k[$+4>>2]=((O|0)<0)<<31>>31;K=O;L=b;M=sa;N=Ca;continue a;break}default:{K=O;L=b;M=sa;N=Ca;continue a}}break}case 112:{Ha=_|8;Ia=Aa>>>0>8?Aa:8;Ja=120;S=64;break}case 88:case 120:{Ha=_;Ia=Aa;Ja=ba;S=64;break}case 111:{$=o;aa=k[$>>2]|0;ka=k[$+4>>2]|0;if((aa|0)==0&(ka|0)==0)Ka=w;else{$=w;ja=aa;aa=ka;while(1){ka=$+-1|0;i[ka>>0]=ja&7|48;ja=SEa(ja|0,aa|0,3)|0;aa=Q;if((ja|0)==0&(aa|0)==0){Ka=ka;break}else $=ka}}if(!(_&8)){La=Ka;Ma=_;Na=Aa;Oa=0;Pa=157025;S=77}else{$=x-Ka|0;La=Ka;Ma=_;Na=(Aa|0)>($|0)?Aa:$+1|0;Oa=0;Pa=157025;S=77}break}case 105:case 100:{$=o;aa=k[$>>2]|0;ja=k[$+4>>2]|0;if((ja|0)<0){$=REa(0,0,aa|0,ja|0)|0;ka=Q;la=o;k[la>>2]=$;k[la+4>>2]=ka;Qa=$;Ra=ka;Sa=1;Ta=157025;S=76;break f}if(!(_&2048)){ka=_&1;Qa=aa;Ra=ja;Sa=ka;Ta=(ka|0)==0?157025:157027;S=76}else{Qa=aa;Ra=ja;Sa=1;Ta=157026;S=76}break}case 117:{ja=o;Qa=k[ja>>2]|0;Ra=k[ja+4>>2]|0;Sa=0;Ta=157025;S=76;break}case 99:{i[y>>0]=k[o>>2];Ua=y;Va=Z;Wa=1;Xa=0;Ya=157025;Za=w;break}case 109:{ja=Sra()|0;_a=Tra(k[ja>>2]|0)|0;S=82;break}case 115:{ja=k[o>>2]|0;_a=(ja|0)!=0?ja:157035;S=82;break}case 67:{k[s>>2]=k[o>>2];k[q>>2]=0;k[o>>2]=s;$a=s;ab=-1;S=86;break}case 83:{ja=k[o>>2]|0;if(!Aa){kua(a,32,ua,0,_);bb=0;S=97}else{$a=ja;ab=Aa;S=86}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{cb=+p[o>>3];k[h>>2]=0;p[t>>3]=cb;if((k[t+4>>2]|0)>=0)if(!(_&2048)){ja=_&1;db=cb;eb=ja;fb=(ja|0)==0?157043:157048}else{db=cb;eb=1;fb=157045}else{db=-cb;eb=1;fb=157042}p[t>>3]=db;ja=k[t+4>>2]&2146435072;do if(ja>>>0<2146435072|(ja|0)==2146435072&0<0){cb=+nsa(db,h)*2.0;aa=cb!=0.0;if(aa)k[h>>2]=(k[h>>2]|0)+-1;ka=ba|32;if((ka|0)==97){$=ba&32;la=($|0)==0?fb:fb+9|0;gb=eb|2;hb=12-Aa|0;do if(!(Aa>>>0>11|(hb|0)==0)){ib=hb;jb=8.0;while(1){ib=ib+-1|0;kb=jb*16.0;if(!ib){lb=kb;break}else jb=kb}if((i[la>>0]|0)==45){mb=-(lb+(-cb-lb));break}else{mb=cb+lb-lb;break}}else mb=cb;while(0);hb=k[h>>2]|0;ib=(hb|0)<0?0-hb|0:hb;nb=jua(ib,((ib|0)<0)<<31>>31,B)|0;if((nb|0)==(B|0)){i[C>>0]=48;ob=C}else ob=nb;i[ob+-1>>0]=(hb>>31&2)+43;hb=ob+-2|0;i[hb>>0]=ba+15;nb=(Aa|0)<1;ib=(_&8|0)==0;jb=mb;pb=m;while(1){qb=~~jb;rb=pb+1|0;i[pb>>0]=l[157009+qb>>0]|$;jb=(jb-+(qb|0))*16.0;do if((rb-z|0)==1){if(ib&(nb&jb==0.0)){sb=rb;break}i[rb>>0]=46;sb=pb+2|0}else sb=rb;while(0);if(!(jb!=0.0)){tb=sb;break}else pb=sb}pb=tb;nb=hb;ib=(Aa|0)!=0&(E+pb|0)<(Aa|0)?F+Aa-nb|0:D-nb+pb|0;$=ib+gb|0;kua(a,32,ua,$,_);if(!(k[a>>2]&32))ita(la,gb,a)|0;kua(a,48,ua,$,_^65536);rb=pb-z|0;if(!(k[a>>2]&32))ita(m,rb,a)|0;pb=n-nb|0;kua(a,48,ib-(rb+pb)|0,0,0);if(!(k[a>>2]&32))ita(hb,pb,a)|0;kua(a,32,ua,$,_^8192);ub=($|0)<(ua|0)?ua:$;break}$=(Aa|0)<0?6:Aa;if(aa){pb=(k[h>>2]|0)+-28|0;k[h>>2]=pb;vb=cb*268435456.0;wb=pb}else{vb=cb;wb=k[h>>2]|0}pb=(wb|0)<0?g:G;rb=pb;jb=vb;ib=pb;while(1){nb=~~jb>>>0;k[ib>>2]=nb;qb=ib+4|0;jb=(jb-+(nb>>>0))*1.0e9;if(!(jb!=0.0)){xb=qb;break}else ib=qb}ib=k[h>>2]|0;if((ib|0)>0){aa=ib;hb=pb;gb=xb;while(1){la=(aa|0)>29?29:aa;qb=gb+-4|0;do if(qb>>>0<hb>>>0)yb=hb;else{nb=0;zb=qb;while(1){Ab=XEa(k[zb>>2]|0,0,la|0)|0;Bb=QEa(Ab|0,Q|0,nb|0,0)|0;Ab=Q;Cb=dFa(Bb|0,Ab|0,1e9,0)|0;k[zb>>2]=Cb;Cb=cFa(Bb|0,Ab|0,1e9,0)|0;zb=zb+-4|0;if(zb>>>0<hb>>>0){Db=Cb;break}else nb=Cb}if(!Db){yb=hb;break}nb=hb+-4|0;k[nb>>2]=Db;yb=nb}while(0);qb=gb;while(1){if(qb>>>0<=yb>>>0){Eb=qb;break}nb=qb+-4|0;if(!(k[nb>>2]|0))qb=nb;else{Eb=qb;break}}qb=(k[h>>2]|0)-la|0;k[h>>2]=qb;if((qb|0)>0){aa=qb;hb=yb;gb=Eb}else{Fb=qb;Gb=yb;Hb=Eb;break}}}else{Fb=ib;Gb=pb;Hb=xb}if((Fb|0)<0){gb=(($+25|0)/9|0)+1|0;hb=(ka|0)==102;aa=Fb;qb=Gb;nb=Hb;while(1){zb=0-aa|0;Cb=(zb|0)>9?9:zb;do if(qb>>>0<nb>>>0){zb=(1<<Cb)+-1|0;Ab=1e9>>>Cb;Bb=0;Ib=qb;while(1){Jb=k[Ib>>2]|0;k[Ib>>2]=(Jb>>>Cb)+Bb;Kb=ma(Jb&zb,Ab)|0;Ib=Ib+4|0;if(Ib>>>0>=nb>>>0){Lb=Kb;break}else Bb=Kb}Bb=(k[qb>>2]|0)==0?qb+4|0:qb;if(!Lb){Mb=Bb;Nb=nb;break}k[nb>>2]=Lb;Mb=Bb;Nb=nb+4|0}else{Mb=(k[qb>>2]|0)==0?qb+4|0:qb;Nb=nb}while(0);la=hb?pb:Mb;Bb=(Nb-la>>2|0)>(gb|0)?la+(gb<<2)|0:Nb;aa=(k[h>>2]|0)+Cb|0;k[h>>2]=aa;if((aa|0)>=0){Ob=Mb;Pb=Bb;break}else{qb=Mb;nb=Bb}}}else{Ob=Gb;Pb=Hb}do if(Ob>>>0<Pb>>>0){nb=(rb-Ob>>2)*9|0;qb=k[Ob>>2]|0;if(qb>>>0<10){Qb=nb;break}else{Rb=nb;Sb=10}while(1){Sb=Sb*10|0;nb=Rb+1|0;if(qb>>>0<Sb>>>0){Qb=nb;break}else Rb=nb}}else Qb=0;while(0);qb=(ka|0)==103;Cb=($|0)!=0;nb=$-((ka|0)!=102?Qb:0)+((Cb&qb)<<31>>31)|0;if((nb|0)<(((Pb-rb>>2)*9|0)+-9|0)){aa=nb+9216|0;nb=pb+4+(((aa|0)/9|0)+-1024<<2)|0;gb=((aa|0)%9|0)+1|0;if((gb|0)<9){aa=10;hb=gb;while(1){gb=aa*10|0;hb=hb+1|0;if((hb|0)==9){Tb=gb;break}else aa=gb}}else Tb=10;aa=k[nb>>2]|0;hb=(aa>>>0)%(Tb>>>0)|0;ka=(nb+4|0)==(Pb|0);do if(ka&(hb|0)==0){Ub=Ob;Vb=nb;Wb=Qb}else{jb=(((aa>>>0)/(Tb>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;gb=(Tb|0)/2|0;if(hb>>>0<gb>>>0)Xb=.5;else Xb=ka&(hb|0)==(gb|0)?1.0:1.5;do if(!eb){Yb=jb;Zb=Xb}else{if((i[fb>>0]|0)!=45){Yb=jb;Zb=Xb;break}Yb=-jb;Zb=-Xb}while(0);gb=aa-hb|0;k[nb>>2]=gb;if(!(Yb+Zb!=Yb)){Ub=Ob;Vb=nb;Wb=Qb;break}ib=gb+Tb|0;k[nb>>2]=ib;if(ib>>>0>999999999){ib=Ob;gb=nb;while(1){Bb=gb+-4|0;k[gb>>2]=0;if(Bb>>>0<ib>>>0){la=ib+-4|0;k[la>>2]=0;_b=la}else _b=ib;la=(k[Bb>>2]|0)+1|0;k[Bb>>2]=la;if(la>>>0>999999999){ib=_b;gb=Bb}else{$b=_b;ac=Bb;break}}}else{$b=Ob;ac=nb}gb=(rb-$b>>2)*9|0;ib=k[$b>>2]|0;if(ib>>>0<10){Ub=$b;Vb=ac;Wb=gb;break}else{bc=gb;cc=10}while(1){cc=cc*10|0;gb=bc+1|0;if(ib>>>0<cc>>>0){Ub=$b;Vb=ac;Wb=gb;break}else bc=gb}}while(0);nb=Vb+4|0;dc=Ub;ec=Wb;fc=Pb>>>0>nb>>>0?nb:Pb}else{dc=Ob;ec=Qb;fc=Pb}nb=0-ec|0;hb=fc;while(1){if(hb>>>0<=dc>>>0){gc=0;hc=hb;break}aa=hb+-4|0;if(!(k[aa>>2]|0))hb=aa;else{gc=1;hc=hb;break}}do if(qb){hb=(Cb&1^1)+$|0;if((hb|0)>(ec|0)&(ec|0)>-5){ic=ba+-1|0;jc=hb+-1-ec|0}else{ic=ba+-2|0;jc=hb+-1|0}hb=_&8;if(hb){kc=ic;lc=jc;mc=hb;break}do if(gc){hb=k[hc+-4>>2]|0;if(!hb){nc=9;break}if(!((hb>>>0)%10|0)){oc=10;pc=0}else{nc=0;break}while(1){oc=oc*10|0;aa=pc+1|0;if((hb>>>0)%(oc>>>0)|0){nc=aa;break}else pc=aa}}else nc=9;while(0);hb=((hc-rb>>2)*9|0)+-9|0;if((ic|32|0)==102){aa=hb-nc|0;ka=(aa|0)<0?0:aa;kc=ic;lc=(jc|0)<(ka|0)?jc:ka;mc=0;break}else{ka=hb+ec-nc|0;hb=(ka|0)<0?0:ka;kc=ic;lc=(jc|0)<(hb|0)?jc:hb;mc=0;break}}else{kc=ba;lc=$;mc=_&8}while(0);$=lc|mc;rb=($|0)!=0&1;Cb=(kc|32|0)==102;if(Cb){qc=(ec|0)>0?ec:0;rc=0}else{qb=(ec|0)<0?nb:ec;hb=jua(qb,((qb|0)<0)<<31>>31,B)|0;if((n-hb|0)<2){qb=hb;while(1){ka=qb+-1|0;i[ka>>0]=48;if((n-ka|0)<2)qb=ka;else{sc=ka;break}}}else sc=hb;i[sc+-1>>0]=(ec>>31&2)+43;qb=sc+-2|0;i[qb>>0]=kc;qc=n-qb|0;rc=qb}qb=eb+1+lc+rb+qc|0;kua(a,32,ua,qb,_);if(!(k[a>>2]&32))ita(fb,eb,a)|0;kua(a,48,ua,qb,_^65536);do if(Cb){nb=dc>>>0>pb>>>0?pb:dc;ka=nb;while(1){aa=jua(k[ka>>2]|0,0,H)|0;do if((ka|0)==(nb|0)){if((aa|0)!=(H|0)){tc=aa;break}i[J>>0]=48;tc=J}else{if(aa>>>0<=m>>>0){tc=aa;break}WEa(m|0,48,aa-z|0)|0;ib=aa;while(1){gb=ib+-1|0;if(gb>>>0>m>>>0)ib=gb;else{tc=gb;break}}}while(0);if(!(k[a>>2]&32))ita(tc,I-tc|0,a)|0;aa=ka+4|0;if(aa>>>0>pb>>>0){uc=aa;break}else ka=aa}do if($){if(k[a>>2]&32)break;ita(157077,1,a)|0}while(0);if((lc|0)>0&uc>>>0<hc>>>0){ka=lc;nb=uc;while(1){aa=jua(k[nb>>2]|0,0,H)|0;if(aa>>>0>m>>>0){WEa(m|0,48,aa-z|0)|0;ib=aa;while(1){gb=ib+-1|0;if(gb>>>0>m>>>0)ib=gb;else{vc=gb;break}}}else vc=aa;if(!(k[a>>2]&32))ita(vc,(ka|0)>9?9:ka,a)|0;nb=nb+4|0;ib=ka+-9|0;if(!((ka|0)>9&nb>>>0<hc>>>0)){wc=ib;break}else ka=ib}}else wc=lc;kua(a,48,wc+9|0,9,0)}else{ka=gc?hc:dc+4|0;if((lc|0)>-1){nb=(mc|0)==0;ib=lc;gb=dc;while(1){Bb=jua(k[gb>>2]|0,0,H)|0;if((Bb|0)==(H|0)){i[J>>0]=48;xc=J}else xc=Bb;do if((gb|0)==(dc|0)){Bb=xc+1|0;if(!(k[a>>2]&32))ita(xc,1,a)|0;if(nb&(ib|0)<1){yc=Bb;break}if(k[a>>2]&32){yc=Bb;break}ita(157077,1,a)|0;yc=Bb}else{if(xc>>>0<=m>>>0){yc=xc;break}WEa(m|0,48,xc+A|0)|0;Bb=xc;while(1){la=Bb+-1|0;if(la>>>0>m>>>0)Bb=la;else{yc=la;break}}}while(0);aa=I-yc|0;if(!(k[a>>2]&32))ita(yc,(ib|0)>(aa|0)?aa:ib,a)|0;Bb=ib-aa|0;gb=gb+4|0;if(!(gb>>>0<ka>>>0&(Bb|0)>-1)){zc=Bb;break}else ib=Bb}}else zc=lc;kua(a,48,zc+18|0,18,0);if(k[a>>2]&32)break;ita(rc,n-rc|0,a)|0}while(0);kua(a,32,ua,qb,_^8192);ub=(qb|0)<(ua|0)?ua:qb}else{$=(ba&32|0)!=0;pb=db!=db|0.0!=0.0;Cb=pb?0:eb;rb=Cb+3|0;kua(a,32,ua,rb,Z);hb=k[a>>2]|0;if(!(hb&32)){ita(fb,Cb,a)|0;Ac=k[a>>2]|0}else Ac=hb;if(!(Ac&32))ita(pb?($?157069:157073):$?157061:157065,3,a)|0;kua(a,32,ua,rb,_^8192);ub=(rb|0)<(ua|0)?ua:rb}while(0);K=O;L=ub;M=sa;N=Ca;continue a;break}default:{Ua=N;Va=_;Wa=Aa;Xa=0;Ya=157025;Za=w}}while(0);g:do if((S|0)==64){S=0;ba=o;b=k[ba>>2]|0;ja=k[ba+4>>2]|0;ba=Ja&32;if(!((b|0)==0&(ja|0)==0)){rb=w;$=b;b=ja;while(1){ja=rb+-1|0;i[ja>>0]=l[157009+($&15)>>0]|ba;$=SEa($|0,b|0,4)|0;b=Q;if(($|0)==0&(b|0)==0){Bc=ja;break}else rb=ja}rb=o;if((Ha&8|0)==0|(k[rb>>2]|0)==0&(k[rb+4>>2]|0)==0){La=Bc;Ma=Ha;Na=Ia;Oa=0;Pa=157025;S=77}else{La=Bc;Ma=Ha;Na=Ia;Oa=2;Pa=157025+(Ja>>4)|0;S=77}}else{La=w;Ma=Ha;Na=Ia;Oa=0;Pa=157025;S=77}}else if((S|0)==76){S=0;La=jua(Qa,Ra,w)|0;Ma=_;Na=Aa;Oa=Sa;Pa=Ta;S=77}else if((S|0)==82){S=0;rb=Dta(_a,0,Aa)|0;b=(rb|0)==0;Ua=_a;Va=Z;Wa=b?Aa:rb-_a|0;Xa=0;Ya=157025;Za=b?_a+Aa|0:rb}else if((S|0)==86){S=0;rb=0;b=0;$=$a;while(1){ba=k[$>>2]|0;if(!ba){Cc=rb;Dc=b;break}ja=Csa(u,ba)|0;if((ja|0)<0|ja>>>0>(ab-rb|0)>>>0){Cc=rb;Dc=ja;break}ba=ja+rb|0;if(ab>>>0>ba>>>0){rb=ba;b=ja;$=$+4|0}else{Cc=ba;Dc=ja;break}}if((Dc|0)<0){qa=-1;break a}kua(a,32,ua,Cc,_);if(!Cc){bb=0;S=97}else{$=0;b=$a;while(1){rb=k[b>>2]|0;if(!rb){bb=Cc;S=97;break g}ja=Csa(u,rb)|0;$=ja+$|0;if(($|0)>(Cc|0)){bb=Cc;S=97;break g}if(!(k[a>>2]&32))ita(u,ja,a)|0;if($>>>0>=Cc>>>0){bb=Cc;S=97;break}else b=b+4|0}}}while(0);if((S|0)==97){S=0;kua(a,32,ua,bb,_^8192);K=O;L=(ua|0)>(bb|0)?ua:bb;M=sa;N=Ca;continue}if((S|0)==77){S=0;Z=(Na|0)>-1?Ma&-65537:Ma;b=o;$=(k[b>>2]|0)!=0|(k[b+4>>2]|0)!=0;if((Na|0)!=0|$){b=($&1^1)+(x-La)|0;Ua=La;Va=Z;Wa=(Na|0)>(b|0)?Na:b;Xa=Oa;Ya=Pa;Za=w}else{Ua=w;Va=Z;Wa=0;Xa=Oa;Ya=Pa;Za=w}}Z=Za-Ua|0;b=(Wa|0)<(Z|0)?Z:Wa;$=Xa+b|0;ja=(ua|0)<($|0)?$:ua;kua(a,32,ja,$,Va);if(!(k[a>>2]&32))ita(Ya,Xa,a)|0;kua(a,48,ja,$,Va^65536);kua(a,48,b,Z,0);if(!(k[a>>2]&32))ita(Ua,Z,a)|0;kua(a,32,ja,$,Va^8192);K=O;L=ja;M=sa;N=Ca}h:do if((S|0)==244)if(!a)if(R){Ca=1;while(1){N=k[e+(Ca<<2)>>2]|0;if(!N){Ec=Ca;break}iua(d+(Ca<<3)|0,N,c);Ca=Ca+1|0;if((Ca|0)>=10){qa=1;break h}}if((Ec|0)<10){Ca=Ec;while(1){if(k[e+(Ca<<2)>>2]|0){qa=-1;break h}Ca=Ca+1|0;if((Ca|0)>=10){qa=1;break}}}else qa=1}else qa=0;else qa=P;while(0);r=f;return qa|0}function eua(a,b,c){a=a|0;b=b|0;c=c|0;return Psa(a,b,c)|0}function fua(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0.0;d=r;r=r+112|0;e=d;f=e;g=f+112|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));f=e+4|0;k[f>>2]=a;g=e+8|0;k[g>>2]=-1;k[e+44>>2]=a;k[e+76>>2]=-1;Wra(e,0);h=+Ura(e,c,1);c=(k[f>>2]|0)-(k[g>>2]|0)+(k[e+108>>2]|0)|0;if(b)k[b>>2]=(c|0)!=0?a+c|0:a;r=d;return +h}function gua(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=r;r=r+112|0;g=f;k[g>>2]=0;h=g+4|0;k[h>>2]=a;k[g+44>>2]=a;i=g+8|0;k[i>>2]=(a|0)<0?-1:a+2147483647|0;k[g+76>>2]=-1;Wra(g,0);j=Vra(g,c,1,d,e)|0;if(b)k[b>>2]=a+((k[h>>2]|0)+(k[g+108>>2]|0)-(k[i>>2]|0));r=f;return j|0}function hua(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=a+20|0;e=k[d>>2]|0;f=(k[a+16>>2]|0)-e|0;a=f>>>0>c>>>0?c:f;TEa(e|0,b|0,a|0)|0;k[d>>2]=(k[d>>2]|0)+a;return c|0}function iua(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{d=(k[c>>2]|0)+(4-1)&~(4-1);e=k[d>>2]|0;k[c>>2]=d+4;k[a>>2]=e;break a;break}case 10:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;e=a;k[e>>2]=d;k[e+4>>2]=((d|0)<0)<<31>>31;break a;break}case 11:{d=(k[c>>2]|0)+(4-1)&~(4-1);e=k[d>>2]|0;k[c>>2]=d+4;d=a;k[d>>2]=e;k[d+4>>2]=0;break a;break}case 12:{d=(k[c>>2]|0)+(8-1)&~(8-1);e=d;f=k[e>>2]|0;g=k[e+4>>2]|0;k[c>>2]=d+8;d=a;k[d>>2]=f;k[d+4>>2]=g;break a;break}case 13:{g=(k[c>>2]|0)+(4-1)&~(4-1);d=k[g>>2]|0;k[c>>2]=g+4;g=(d&65535)<<16>>16;d=a;k[d>>2]=g;k[d+4>>2]=((g|0)<0)<<31>>31;break a;break}case 14:{g=(k[c>>2]|0)+(4-1)&~(4-1);d=k[g>>2]|0;k[c>>2]=g+4;g=a;k[g>>2]=d&65535;k[g+4>>2]=0;break a;break}case 15:{g=(k[c>>2]|0)+(4-1)&~(4-1);d=k[g>>2]|0;k[c>>2]=g+4;g=(d&255)<<24>>24;d=a;k[d>>2]=g;k[d+4>>2]=((g|0)<0)<<31>>31;break a;break}case 16:{g=(k[c>>2]|0)+(4-1)&~(4-1);d=k[g>>2]|0;k[c>>2]=g+4;g=a;k[g>>2]=d&255;k[g+4>>2]=0;break a;break}case 17:{g=(k[c>>2]|0)+(8-1)&~(8-1);h=+p[g>>3];k[c>>2]=g+8;p[a>>3]=h;break a;break}case 18:{g=(k[c>>2]|0)+(8-1)&~(8-1);h=+p[g>>3];k[c>>2]=g+8;p[a>>3]=h;break a;break}default:break a}while(0);while(0);return}function jua(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;if(b>>>0>0|(b|0)==0&a>>>0>4294967295){d=c;e=a;f=b;while(1){b=dFa(e|0,f|0,10,0)|0;g=d+-1|0;i[g>>0]=b|48;b=cFa(e|0,f|0,10,0)|0;if(f>>>0>9|(f|0)==9&e>>>0>4294967295){d=g;e=b;f=Q}else{h=g;j=b;break}}k=h;l=j}else{k=c;l=a}if(!l)m=k;else{a=k;k=l;while(1){l=a+-1|0;i[l>>0]=(k>>>0)%10|0|48;if(k>>>0<10){m=l;break}else{a=l;k=(k>>>0)/10|0}}}return m|0}function kua(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;f=r;r=r+256|0;g=f;do if((c|0)>(d|0)&(e&73728|0)==0){h=c-d|0;WEa(g|0,b|0,(h>>>0>256?256:h)|0)|0;i=k[a>>2]|0;j=(i&32|0)==0;if(h>>>0>255){l=c-d|0;m=h;n=i;i=j;while(1){if(i){ita(g,256,a)|0;o=k[a>>2]|0}else o=n;m=m+-256|0;i=(o&32|0)==0;if(m>>>0<=255)break;else n=o}if(i)p=l&255;else break}else if(j)p=h;else break;ita(g,p,a)|0}while(0);r=f;return}function lua(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0;do if(a>>>0<245){b=a>>>0<11?16:a+11&-8;c=b>>>3;d=k[11517]|0;e=d>>>c;if(e&3){f=(e&1^1)+c|0;g=46108+(f<<1<<2)|0;h=g+8|0;i=k[h>>2]|0;j=i+8|0;l=k[j>>2]|0;do if((g|0)!=(l|0)){if(l>>>0<(k[11521]|0)>>>0)mc();m=l+12|0;if((k[m>>2]|0)==(i|0)){k[m>>2]=g;k[h>>2]=l;break}else mc()}else k[11517]=d&~(1<<f);while(0);l=f<<3;k[i+4>>2]=l|3;h=i+l+4|0;k[h>>2]=k[h>>2]|1;n=j;return n|0}h=k[11519]|0;if(b>>>0>h>>>0){if(e){l=2<<c;g=e<<c&(l|0-l);l=(g&0-g)+-1|0;g=l>>>12&16;m=l>>>g;l=m>>>5&8;o=m>>>l;m=o>>>2&4;p=o>>>m;o=p>>>1&2;q=p>>>o;p=q>>>1&1;r=(l|g|m|o|p)+(q>>>p)|0;p=46108+(r<<1<<2)|0;q=p+8|0;o=k[q>>2]|0;m=o+8|0;g=k[m>>2]|0;do if((p|0)!=(g|0)){if(g>>>0<(k[11521]|0)>>>0)mc();l=g+12|0;if((k[l>>2]|0)==(o|0)){k[l>>2]=p;k[q>>2]=g;s=k[11519]|0;break}else mc()}else{k[11517]=d&~(1<<r);s=h}while(0);h=(r<<3)-b|0;k[o+4>>2]=b|3;d=o+b|0;k[d+4>>2]=h|1;k[d+h>>2]=h;if(s){g=k[11522]|0;q=s>>>3;p=46108+(q<<1<<2)|0;c=k[11517]|0;e=1<<q;if(c&e){q=p+8|0;j=k[q>>2]|0;if(j>>>0<(k[11521]|0)>>>0)mc();else{t=q;u=j}}else{k[11517]=c|e;t=p+8|0;u=p}k[t>>2]=g;k[u+12>>2]=g;k[g+8>>2]=u;k[g+12>>2]=p}k[11519]=h;k[11522]=d;n=m;return n|0}d=k[11518]|0;if(d){h=(d&0-d)+-1|0;d=h>>>12&16;p=h>>>d;h=p>>>5&8;g=p>>>h;p=g>>>2&4;e=g>>>p;g=e>>>1&2;c=e>>>g;e=c>>>1&1;j=k[46372+((h|d|p|g|e)+(c>>>e)<<2)>>2]|0;e=(k[j+4>>2]&-8)-b|0;c=j;g=j;while(1){j=k[c+16>>2]|0;if(!j){p=k[c+20>>2]|0;if(!p){v=e;w=g;break}else x=p}else x=j;j=(k[x+4>>2]&-8)-b|0;p=j>>>0<e>>>0;e=p?j:e;c=x;g=p?x:g}g=k[11521]|0;if(w>>>0<g>>>0)mc();c=w+b|0;if(w>>>0>=c>>>0)mc();e=k[w+24>>2]|0;m=k[w+12>>2]|0;do if((m|0)==(w|0)){o=w+20|0;r=k[o>>2]|0;if(!r){p=w+16|0;j=k[p>>2]|0;if(!j){y=0;break}else{z=j;A=p}}else{z=r;A=o}while(1){o=z+20|0;r=k[o>>2]|0;if(r){z=r;A=o;continue}o=z+16|0;r=k[o>>2]|0;if(!r){B=z;C=A;break}else{z=r;A=o}}if(C>>>0<g>>>0)mc();else{k[C>>2]=0;y=B;break}}else{o=k[w+8>>2]|0;if(o>>>0<g>>>0)mc();r=o+12|0;if((k[r>>2]|0)!=(w|0))mc();p=m+8|0;if((k[p>>2]|0)==(w|0)){k[r>>2]=m;k[p>>2]=o;y=m;break}else mc()}while(0);do if(e){m=k[w+28>>2]|0;g=46372+(m<<2)|0;if((w|0)==(k[g>>2]|0)){k[g>>2]=y;if(!y){k[11518]=k[11518]&~(1<<m);break}}else{if(e>>>0<(k[11521]|0)>>>0)mc();m=e+16|0;if((k[m>>2]|0)==(w|0))k[m>>2]=y;else k[e+20>>2]=y;if(!y)break}m=k[11521]|0;if(y>>>0<m>>>0)mc();k[y+24>>2]=e;g=k[w+16>>2]|0;do if(g)if(g>>>0<m>>>0)mc();else{k[y+16>>2]=g;k[g+24>>2]=y;break}while(0);g=k[w+20>>2]|0;if(g)if(g>>>0<(k[11521]|0)>>>0)mc();else{k[y+20>>2]=g;k[g+24>>2]=y;break}}while(0);if(v>>>0<16){e=v+b|0;k[w+4>>2]=e|3;g=w+e+4|0;k[g>>2]=k[g>>2]|1}else{k[w+4>>2]=b|3;k[c+4>>2]=v|1;k[c+v>>2]=v;g=k[11519]|0;if(g){e=k[11522]|0;m=g>>>3;g=46108+(m<<1<<2)|0;o=k[11517]|0;p=1<<m;if(o&p){m=g+8|0;r=k[m>>2]|0;if(r>>>0<(k[11521]|0)>>>0)mc();else{D=m;E=r}}else{k[11517]=o|p;D=g+8|0;E=g}k[D>>2]=e;k[E+12>>2]=e;k[e+8>>2]=E;k[e+12>>2]=g}k[11519]=v;k[11522]=c}n=w+8|0;return n|0}else F=b}else F=b}else if(a>>>0<=4294967231){g=a+11|0;e=g&-8;p=k[11518]|0;if(p){o=0-e|0;r=g>>>8;if(r)if(e>>>0>16777215)G=31;else{g=(r+1048320|0)>>>16&8;m=r<<g;r=(m+520192|0)>>>16&4;j=m<<r;m=(j+245760|0)>>>16&2;d=14-(r|g|m)+(j<<m>>>15)|0;G=e>>>(d+7|0)&1|d<<1}else G=0;d=k[46372+(G<<2)>>2]|0;a:do if(!d){H=o;I=0;J=0;K=86}else{m=o;j=0;g=e<<((G|0)==31?0:25-(G>>>1)|0);r=d;h=0;while(1){q=k[r+4>>2]&-8;i=q-e|0;if(i>>>0<m>>>0)if((q|0)==(e|0)){L=i;M=r;N=r;K=90;break a}else{O=i;P=r}else{O=m;P=h}i=k[r+20>>2]|0;r=k[r+16+(g>>>31<<2)>>2]|0;q=(i|0)==0|(i|0)==(r|0)?j:i;i=(r|0)==0;if(i){H=O;I=q;J=P;K=86;break}else{m=O;j=q;g=g<<(i&1^1);h=P}}}while(0);if((K|0)==86){if((I|0)==0&(J|0)==0){d=2<<G;o=p&(d|0-d);if(!o){F=e;break}d=(o&0-o)+-1|0;o=d>>>12&16;b=d>>>o;d=b>>>5&8;c=b>>>d;b=c>>>2&4;h=c>>>b;c=h>>>1&2;g=h>>>c;h=g>>>1&1;Q=k[46372+((d|o|b|c|h)+(g>>>h)<<2)>>2]|0}else Q=I;if(!Q){R=H;S=J}else{L=H;M=Q;N=J;K=90}}if((K|0)==90)while(1){K=0;h=(k[M+4>>2]&-8)-e|0;g=h>>>0<L>>>0;c=g?h:L;h=g?M:N;g=k[M+16>>2]|0;if(g){L=c;M=g;N=h;K=90;continue}M=k[M+20>>2]|0;if(!M){R=c;S=h;break}else{L=c;N=h;K=90}}if((S|0)!=0?R>>>0<((k[11519]|0)-e|0)>>>0:0){p=k[11521]|0;if(S>>>0<p>>>0)mc();h=S+e|0;if(S>>>0>=h>>>0)mc();c=k[S+24>>2]|0;g=k[S+12>>2]|0;do if((g|0)==(S|0)){b=S+20|0;o=k[b>>2]|0;if(!o){d=S+16|0;j=k[d>>2]|0;if(!j){T=0;break}else{U=j;V=d}}else{U=o;V=b}while(1){b=U+20|0;o=k[b>>2]|0;if(o){U=o;V=b;continue}b=U+16|0;o=k[b>>2]|0;if(!o){W=U;X=V;break}else{U=o;V=b}}if(X>>>0<p>>>0)mc();else{k[X>>2]=0;T=W;break}}else{b=k[S+8>>2]|0;if(b>>>0<p>>>0)mc();o=b+12|0;if((k[o>>2]|0)!=(S|0))mc();d=g+8|0;if((k[d>>2]|0)==(S|0)){k[o>>2]=g;k[d>>2]=b;T=g;break}else mc()}while(0);do if(c){g=k[S+28>>2]|0;p=46372+(g<<2)|0;if((S|0)==(k[p>>2]|0)){k[p>>2]=T;if(!T){k[11518]=k[11518]&~(1<<g);break}}else{if(c>>>0<(k[11521]|0)>>>0)mc();g=c+16|0;if((k[g>>2]|0)==(S|0))k[g>>2]=T;else k[c+20>>2]=T;if(!T)break}g=k[11521]|0;if(T>>>0<g>>>0)mc();k[T+24>>2]=c;p=k[S+16>>2]|0;do if(p)if(p>>>0<g>>>0)mc();else{k[T+16>>2]=p;k[p+24>>2]=T;break}while(0);p=k[S+20>>2]|0;if(p)if(p>>>0<(k[11521]|0)>>>0)mc();else{k[T+20>>2]=p;k[p+24>>2]=T;break}}while(0);do if(R>>>0>=16){k[S+4>>2]=e|3;k[h+4>>2]=R|1;k[h+R>>2]=R;c=R>>>3;if(R>>>0<256){p=46108+(c<<1<<2)|0;g=k[11517]|0;b=1<<c;if(g&b){c=p+8|0;d=k[c>>2]|0;if(d>>>0<(k[11521]|0)>>>0)mc();else{Y=c;Z=d}}else{k[11517]=g|b;Y=p+8|0;Z=p}k[Y>>2]=h;k[Z+12>>2]=h;k[h+8>>2]=Z;k[h+12>>2]=p;break}p=R>>>8;if(p)if(R>>>0>16777215)_=31;else{b=(p+1048320|0)>>>16&8;g=p<<b;p=(g+520192|0)>>>16&4;d=g<<p;g=(d+245760|0)>>>16&2;c=14-(p|b|g)+(d<<g>>>15)|0;_=R>>>(c+7|0)&1|c<<1}else _=0;c=46372+(_<<2)|0;k[h+28>>2]=_;g=h+16|0;k[g+4>>2]=0;k[g>>2]=0;g=k[11518]|0;d=1<<_;if(!(g&d)){k[11518]=g|d;k[c>>2]=h;k[h+24>>2]=c;k[h+12>>2]=h;k[h+8>>2]=h;break}d=R<<((_|0)==31?0:25-(_>>>1)|0);g=k[c>>2]|0;while(1){if((k[g+4>>2]&-8|0)==(R|0)){$=g;K=148;break}c=g+16+(d>>>31<<2)|0;b=k[c>>2]|0;if(!b){aa=c;ba=g;K=145;break}else{d=d<<1;g=b}}if((K|0)==145)if(aa>>>0<(k[11521]|0)>>>0)mc();else{k[aa>>2]=h;k[h+24>>2]=ba;k[h+12>>2]=h;k[h+8>>2]=h;break}else if((K|0)==148){g=$+8|0;d=k[g>>2]|0;b=k[11521]|0;if(d>>>0>=b>>>0&$>>>0>=b>>>0){k[d+12>>2]=h;k[g>>2]=h;k[h+8>>2]=d;k[h+12>>2]=$;k[h+24>>2]=0;break}else mc()}}else{d=R+e|0;k[S+4>>2]=d|3;g=S+d+4|0;k[g>>2]=k[g>>2]|1}while(0);n=S+8|0;return n|0}else F=e}else F=e}else F=-1;while(0);S=k[11519]|0;if(S>>>0>=F>>>0){R=S-F|0;$=k[11522]|0;if(R>>>0>15){ba=$+F|0;k[11522]=ba;k[11519]=R;k[ba+4>>2]=R|1;k[ba+R>>2]=R;k[$+4>>2]=F|3}else{k[11519]=0;k[11522]=0;k[$+4>>2]=S|3;R=$+S+4|0;k[R>>2]=k[R>>2]|1}n=$+8|0;return n|0}$=k[11520]|0;if($>>>0>F>>>0){R=$-F|0;k[11520]=R;$=k[11523]|0;S=$+F|0;k[11523]=S;k[S+4>>2]=R|1;k[$+4>>2]=F|3;n=$+8|0;return n|0}do if(!(k[11635]|0)){$=Sb(30)|0;if(!($+-1&$)){k[11637]=$;k[11636]=$;k[11638]=-1;k[11639]=-1;k[11640]=0;k[11628]=0;$=(pc(0)|0)&-16^1431655768;k[11635]=$;break}else mc()}while(0);$=F+48|0;R=k[11637]|0;S=F+47|0;ba=R+S|0;aa=0-R|0;R=ba&aa;if(R>>>0<=F>>>0){n=0;return n|0}_=k[11627]|0;if((_|0)!=0?(Z=k[11625]|0,Y=Z+R|0,Y>>>0<=Z>>>0|Y>>>0>_>>>0):0){n=0;return n|0}b:do if(!(k[11628]&4)){_=k[11523]|0;c:do if(_){Y=46516;while(1){Z=k[Y>>2]|0;if(Z>>>0<=_>>>0?(T=Y+4|0,(Z+(k[T>>2]|0)|0)>>>0>_>>>0):0){ca=Y;da=T;break}Y=k[Y+8>>2]|0;if(!Y){K=173;break c}}Y=ba-(k[11520]|0)&aa;if(Y>>>0<2147483647){T=Lb(Y|0)|0;if((T|0)==((k[ca>>2]|0)+(k[da>>2]|0)|0)){if((T|0)!=(-1|0)){ea=T;fa=Y;K=193;break b}}else{ga=T;ha=Y;K=183}}}else K=173;while(0);do if((K|0)==173?(_=Lb(0)|0,(_|0)!=(-1|0)):0){e=_;Y=k[11636]|0;T=Y+-1|0;if(!(T&e))ia=R;else ia=R-e+(T+e&0-Y)|0;Y=k[11625]|0;e=Y+ia|0;if(ia>>>0>F>>>0&ia>>>0<2147483647){T=k[11627]|0;if((T|0)!=0?e>>>0<=Y>>>0|e>>>0>T>>>0:0)break;T=Lb(ia|0)|0;if((T|0)==(_|0)){ea=_;fa=ia;K=193;break b}else{ga=T;ha=ia;K=183}}}while(0);d:do if((K|0)==183){T=0-ha|0;do if($>>>0>ha>>>0&(ha>>>0<2147483647&(ga|0)!=(-1|0))?(_=k[11637]|0,e=S-ha+_&0-_,e>>>0<2147483647):0)if((Lb(e|0)|0)==(-1|0)){Lb(T|0)|0;break d}else{ja=e+ha|0;break}else ja=ha;while(0);if((ga|0)!=(-1|0)){ea=ga;fa=ja;K=193;break b}}while(0);k[11628]=k[11628]|4;K=190}else K=190;while(0);if((((K|0)==190?R>>>0<2147483647:0)?(ja=Lb(R|0)|0,R=Lb(0)|0,ja>>>0<R>>>0&((ja|0)!=(-1|0)&(R|0)!=(-1|0))):0)?(ga=R-ja|0,ga>>>0>(F+40|0)>>>0):0){ea=ja;fa=ga;K=193}if((K|0)==193){ga=(k[11625]|0)+fa|0;k[11625]=ga;if(ga>>>0>(k[11626]|0)>>>0)k[11626]=ga;ga=k[11523]|0;do if(ga){ja=46516;do{R=k[ja>>2]|0;ha=ja+4|0;S=k[ha>>2]|0;if((ea|0)==(R+S|0)){ka=R;la=ha;ma=S;na=ja;K=203;break}ja=k[ja+8>>2]|0}while((ja|0)!=0);if(((K|0)==203?(k[na+12>>2]&8|0)==0:0)?ga>>>0<ea>>>0&ga>>>0>=ka>>>0:0){k[la>>2]=ma+fa;ja=ga+8|0;S=(ja&7|0)==0?0:0-ja&7;ja=ga+S|0;ha=fa-S+(k[11520]|0)|0;k[11523]=ja;k[11520]=ha;k[ja+4>>2]=ha|1;k[ja+ha+4>>2]=40;k[11524]=k[11639];break}ha=k[11521]|0;if(ea>>>0<ha>>>0){k[11521]=ea;oa=ea}else oa=ha;ha=ea+fa|0;ja=46516;while(1){if((k[ja>>2]|0)==(ha|0)){pa=ja;qa=ja;K=211;break}ja=k[ja+8>>2]|0;if(!ja){ra=46516;break}}if((K|0)==211)if(!(k[qa+12>>2]&8)){k[pa>>2]=ea;ja=qa+4|0;k[ja>>2]=(k[ja>>2]|0)+fa;ja=ea+8|0;S=ea+((ja&7|0)==0?0:0-ja&7)|0;ja=ha+8|0;R=ha+((ja&7|0)==0?0:0-ja&7)|0;ja=S+F|0;$=R-S-F|0;k[S+4>>2]=F|3;do if((R|0)!=(ga|0)){if((R|0)==(k[11522]|0)){ia=(k[11519]|0)+$|0;k[11519]=ia;k[11522]=ja;k[ja+4>>2]=ia|1;k[ja+ia>>2]=ia;break}ia=k[R+4>>2]|0;if((ia&3|0)==1){da=ia&-8;ca=ia>>>3;e:do if(ia>>>0>=256){aa=k[R+24>>2]|0;ba=k[R+12>>2]|0;do if((ba|0)==(R|0)){T=R+16|0;e=T+4|0;_=k[e>>2]|0;if(!_){Y=k[T>>2]|0;if(!Y){sa=0;break}else{ta=Y;ua=T}}else{ta=_;ua=e}while(1){e=ta+20|0;_=k[e>>2]|0;if(_){ta=_;ua=e;continue}e=ta+16|0;_=k[e>>2]|0;if(!_){va=ta;wa=ua;break}else{ta=_;ua=e}}if(wa>>>0<oa>>>0)mc();else{k[wa>>2]=0;sa=va;break}}else{e=k[R+8>>2]|0;if(e>>>0<oa>>>0)mc();_=e+12|0;if((k[_>>2]|0)!=(R|0))mc();T=ba+8|0;if((k[T>>2]|0)==(R|0)){k[_>>2]=ba;k[T>>2]=e;sa=ba;break}else mc()}while(0);if(!aa)break;ba=k[R+28>>2]|0;e=46372+(ba<<2)|0;do if((R|0)!=(k[e>>2]|0)){if(aa>>>0<(k[11521]|0)>>>0)mc();T=aa+16|0;if((k[T>>2]|0)==(R|0))k[T>>2]=sa;else k[aa+20>>2]=sa;if(!sa)break e}else{k[e>>2]=sa;if(sa)break;k[11518]=k[11518]&~(1<<ba);break e}while(0);ba=k[11521]|0;if(sa>>>0<ba>>>0)mc();k[sa+24>>2]=aa;e=R+16|0;T=k[e>>2]|0;do if(T)if(T>>>0<ba>>>0)mc();else{k[sa+16>>2]=T;k[T+24>>2]=sa;break}while(0);T=k[e+4>>2]|0;if(!T)break;if(T>>>0<(k[11521]|0)>>>0)mc();else{k[sa+20>>2]=T;k[T+24>>2]=sa;break}}else{T=k[R+8>>2]|0;ba=k[R+12>>2]|0;aa=46108+(ca<<1<<2)|0;do if((T|0)!=(aa|0)){if(T>>>0<oa>>>0)mc();if((k[T+12>>2]|0)==(R|0))break;mc()}while(0);if((ba|0)==(T|0)){k[11517]=k[11517]&~(1<<ca);break}do if((ba|0)==(aa|0))xa=ba+8|0;else{if(ba>>>0<oa>>>0)mc();e=ba+8|0;if((k[e>>2]|0)==(R|0)){xa=e;break}mc()}while(0);k[T+12>>2]=ba;k[xa>>2]=T}while(0);ya=R+da|0;za=da+$|0}else{ya=R;za=$}ca=ya+4|0;k[ca>>2]=k[ca>>2]&-2;k[ja+4>>2]=za|1;k[ja+za>>2]=za;ca=za>>>3;if(za>>>0<256){ia=46108+(ca<<1<<2)|0;aa=k[11517]|0;e=1<<ca;do if(!(aa&e)){k[11517]=aa|e;Aa=ia+8|0;Ba=ia}else{ca=ia+8|0;_=k[ca>>2]|0;if(_>>>0>=(k[11521]|0)>>>0){Aa=ca;Ba=_;break}mc()}while(0);k[Aa>>2]=ja;k[Ba+12>>2]=ja;k[ja+8>>2]=Ba;k[ja+12>>2]=ia;break}e=za>>>8;do if(!e)Ca=0;else{if(za>>>0>16777215){Ca=31;break}aa=(e+1048320|0)>>>16&8;da=e<<aa;_=(da+520192|0)>>>16&4;ca=da<<_;da=(ca+245760|0)>>>16&2;Y=14-(_|aa|da)+(ca<<da>>>15)|0;Ca=za>>>(Y+7|0)&1|Y<<1}while(0);e=46372+(Ca<<2)|0;k[ja+28>>2]=Ca;ia=ja+16|0;k[ia+4>>2]=0;k[ia>>2]=0;ia=k[11518]|0;Y=1<<Ca;if(!(ia&Y)){k[11518]=ia|Y;k[e>>2]=ja;k[ja+24>>2]=e;k[ja+12>>2]=ja;k[ja+8>>2]=ja;break}Y=za<<((Ca|0)==31?0:25-(Ca>>>1)|0);ia=k[e>>2]|0;while(1){if((k[ia+4>>2]&-8|0)==(za|0)){Da=ia;K=281;break}e=ia+16+(Y>>>31<<2)|0;da=k[e>>2]|0;if(!da){Ea=e;Fa=ia;K=278;break}else{Y=Y<<1;ia=da}}if((K|0)==278)if(Ea>>>0<(k[11521]|0)>>>0)mc();else{k[Ea>>2]=ja;k[ja+24>>2]=Fa;k[ja+12>>2]=ja;k[ja+8>>2]=ja;break}else if((K|0)==281){ia=Da+8|0;Y=k[ia>>2]|0;da=k[11521]|0;if(Y>>>0>=da>>>0&Da>>>0>=da>>>0){k[Y+12>>2]=ja;k[ia>>2]=ja;k[ja+8>>2]=Y;k[ja+12>>2]=Da;k[ja+24>>2]=0;break}else mc()}}else{Y=(k[11520]|0)+$|0;k[11520]=Y;k[11523]=ja;k[ja+4>>2]=Y|1}while(0);n=S+8|0;return n|0}else ra=46516;while(1){ja=k[ra>>2]|0;if(ja>>>0<=ga>>>0?($=ja+(k[ra+4>>2]|0)|0,$>>>0>ga>>>0):0){Ga=$;break}ra=k[ra+8>>2]|0}S=Ga+-47|0;$=S+8|0;ja=S+(($&7|0)==0?0:0-$&7)|0;$=ga+16|0;S=ja>>>0<$>>>0?ga:ja;ja=S+8|0;R=ea+8|0;ha=(R&7|0)==0?0:0-R&7;R=ea+ha|0;Y=fa+-40-ha|0;k[11523]=R;k[11520]=Y;k[R+4>>2]=Y|1;k[R+Y+4>>2]=40;k[11524]=k[11639];Y=S+4|0;k[Y>>2]=27;k[ja>>2]=k[11629];k[ja+4>>2]=k[11630];k[ja+8>>2]=k[11631];k[ja+12>>2]=k[11632];k[11629]=ea;k[11630]=fa;k[11632]=0;k[11631]=ja;ja=S+24|0;do{ja=ja+4|0;k[ja>>2]=7}while((ja+4|0)>>>0<Ga>>>0);if((S|0)!=(ga|0)){ja=S-ga|0;k[Y>>2]=k[Y>>2]&-2;k[ga+4>>2]=ja|1;k[S>>2]=ja;R=ja>>>3;if(ja>>>0<256){ha=46108+(R<<1<<2)|0;ia=k[11517]|0;da=1<<R;if(ia&da){R=ha+8|0;e=k[R>>2]|0;if(e>>>0<(k[11521]|0)>>>0)mc();else{Ha=R;Ia=e}}else{k[11517]=ia|da;Ha=ha+8|0;Ia=ha}k[Ha>>2]=ga;k[Ia+12>>2]=ga;k[ga+8>>2]=Ia;k[ga+12>>2]=ha;break}ha=ja>>>8;if(ha)if(ja>>>0>16777215)Ja=31;else{da=(ha+1048320|0)>>>16&8;ia=ha<<da;ha=(ia+520192|0)>>>16&4;e=ia<<ha;ia=(e+245760|0)>>>16&2;R=14-(ha|da|ia)+(e<<ia>>>15)|0;Ja=ja>>>(R+7|0)&1|R<<1}else Ja=0;R=46372+(Ja<<2)|0;k[ga+28>>2]=Ja;k[ga+20>>2]=0;k[$>>2]=0;ia=k[11518]|0;e=1<<Ja;if(!(ia&e)){k[11518]=ia|e;k[R>>2]=ga;k[ga+24>>2]=R;k[ga+12>>2]=ga;k[ga+8>>2]=ga;break}e=ja<<((Ja|0)==31?0:25-(Ja>>>1)|0);ia=k[R>>2]|0;while(1){if((k[ia+4>>2]&-8|0)==(ja|0)){Ka=ia;K=307;break}R=ia+16+(e>>>31<<2)|0;da=k[R>>2]|0;if(!da){La=R;Ma=ia;K=304;break}else{e=e<<1;ia=da}}if((K|0)==304)if(La>>>0<(k[11521]|0)>>>0)mc();else{k[La>>2]=ga;k[ga+24>>2]=Ma;k[ga+12>>2]=ga;k[ga+8>>2]=ga;break}else if((K|0)==307){ia=Ka+8|0;e=k[ia>>2]|0;ja=k[11521]|0;if(e>>>0>=ja>>>0&Ka>>>0>=ja>>>0){k[e+12>>2]=ga;k[ia>>2]=ga;k[ga+8>>2]=e;k[ga+12>>2]=Ka;k[ga+24>>2]=0;break}else mc()}}}else{e=k[11521]|0;if((e|0)==0|ea>>>0<e>>>0)k[11521]=ea;k[11629]=ea;k[11630]=fa;k[11632]=0;k[11526]=k[11635];k[11525]=-1;e=0;do{ia=46108+(e<<1<<2)|0;k[ia+12>>2]=ia;k[ia+8>>2]=ia;e=e+1|0}while((e|0)!=32);e=ea+8|0;ia=(e&7|0)==0?0:0-e&7;e=ea+ia|0;ja=fa+-40-ia|0;k[11523]=e;k[11520]=ja;k[e+4>>2]=ja|1;k[e+ja+4>>2]=40;k[11524]=k[11639]}while(0);fa=k[11520]|0;if(fa>>>0>F>>>0){ea=fa-F|0;k[11520]=ea;fa=k[11523]|0;ga=fa+F|0;k[11523]=ga;k[ga+4>>2]=ea|1;k[fa+4>>2]=F|3;n=fa+8|0;return n|0}}fa=Sra()|0;k[fa>>2]=12;n=0;return n|0}function mua(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;if(!a)return;b=a+-8|0;c=k[11521]|0;if(b>>>0<c>>>0)mc();d=k[a+-4>>2]|0;a=d&3;if((a|0)==1)mc();e=d&-8;f=b+e|0;do if(!(d&1)){g=k[b>>2]|0;if(!a)return;h=b+(0-g)|0;i=g+e|0;if(h>>>0<c>>>0)mc();if((h|0)==(k[11522]|0)){j=f+4|0;l=k[j>>2]|0;if((l&3|0)!=3){m=h;n=i;break}k[11519]=i;k[j>>2]=l&-2;k[h+4>>2]=i|1;k[h+i>>2]=i;return}l=g>>>3;if(g>>>0<256){g=k[h+8>>2]|0;j=k[h+12>>2]|0;o=46108+(l<<1<<2)|0;if((g|0)!=(o|0)){if(g>>>0<c>>>0)mc();if((k[g+12>>2]|0)!=(h|0))mc()}if((j|0)==(g|0)){k[11517]=k[11517]&~(1<<l);m=h;n=i;break}if((j|0)!=(o|0)){if(j>>>0<c>>>0)mc();o=j+8|0;if((k[o>>2]|0)==(h|0))p=o;else mc()}else p=j+8|0;k[g+12>>2]=j;k[p>>2]=g;m=h;n=i;break}g=k[h+24>>2]|0;j=k[h+12>>2]|0;do if((j|0)==(h|0)){o=h+16|0;l=o+4|0;q=k[l>>2]|0;if(!q){r=k[o>>2]|0;if(!r){s=0;break}else{t=r;u=o}}else{t=q;u=l}while(1){l=t+20|0;q=k[l>>2]|0;if(q){t=q;u=l;continue}l=t+16|0;q=k[l>>2]|0;if(!q){v=t;w=u;break}else{t=q;u=l}}if(w>>>0<c>>>0)mc();else{k[w>>2]=0;s=v;break}}else{l=k[h+8>>2]|0;if(l>>>0<c>>>0)mc();q=l+12|0;if((k[q>>2]|0)!=(h|0))mc();o=j+8|0;if((k[o>>2]|0)==(h|0)){k[q>>2]=j;k[o>>2]=l;s=j;break}else mc()}while(0);if(g){j=k[h+28>>2]|0;l=46372+(j<<2)|0;if((h|0)==(k[l>>2]|0)){k[l>>2]=s;if(!s){k[11518]=k[11518]&~(1<<j);m=h;n=i;break}}else{if(g>>>0<(k[11521]|0)>>>0)mc();j=g+16|0;if((k[j>>2]|0)==(h|0))k[j>>2]=s;else k[g+20>>2]=s;if(!s){m=h;n=i;break}}j=k[11521]|0;if(s>>>0<j>>>0)mc();k[s+24>>2]=g;l=h+16|0;o=k[l>>2]|0;do if(o)if(o>>>0<j>>>0)mc();else{k[s+16>>2]=o;k[o+24>>2]=s;break}while(0);o=k[l+4>>2]|0;if(o)if(o>>>0<(k[11521]|0)>>>0)mc();else{k[s+20>>2]=o;k[o+24>>2]=s;m=h;n=i;break}else{m=h;n=i}}else{m=h;n=i}}else{m=b;n=e}while(0);if(m>>>0>=f>>>0)mc();e=f+4|0;b=k[e>>2]|0;if(!(b&1))mc();if(!(b&2)){if((f|0)==(k[11523]|0)){s=(k[11520]|0)+n|0;k[11520]=s;k[11523]=m;k[m+4>>2]=s|1;if((m|0)!=(k[11522]|0))return;k[11522]=0;k[11519]=0;return}if((f|0)==(k[11522]|0)){s=(k[11519]|0)+n|0;k[11519]=s;k[11522]=m;k[m+4>>2]=s|1;k[m+s>>2]=s;return}s=(b&-8)+n|0;c=b>>>3;do if(b>>>0>=256){v=k[f+24>>2]|0;w=k[f+12>>2]|0;do if((w|0)==(f|0)){u=f+16|0;t=u+4|0;p=k[t>>2]|0;if(!p){a=k[u>>2]|0;if(!a){x=0;break}else{y=a;z=u}}else{y=p;z=t}while(1){t=y+20|0;p=k[t>>2]|0;if(p){y=p;z=t;continue}t=y+16|0;p=k[t>>2]|0;if(!p){A=y;B=z;break}else{y=p;z=t}}if(B>>>0<(k[11521]|0)>>>0)mc();else{k[B>>2]=0;x=A;break}}else{t=k[f+8>>2]|0;if(t>>>0<(k[11521]|0)>>>0)mc();p=t+12|0;if((k[p>>2]|0)!=(f|0))mc();u=w+8|0;if((k[u>>2]|0)==(f|0)){k[p>>2]=w;k[u>>2]=t;x=w;break}else mc()}while(0);if(v){w=k[f+28>>2]|0;i=46372+(w<<2)|0;if((f|0)==(k[i>>2]|0)){k[i>>2]=x;if(!x){k[11518]=k[11518]&~(1<<w);break}}else{if(v>>>0<(k[11521]|0)>>>0)mc();w=v+16|0;if((k[w>>2]|0)==(f|0))k[w>>2]=x;else k[v+20>>2]=x;if(!x)break}w=k[11521]|0;if(x>>>0<w>>>0)mc();k[x+24>>2]=v;i=f+16|0;h=k[i>>2]|0;do if(h)if(h>>>0<w>>>0)mc();else{k[x+16>>2]=h;k[h+24>>2]=x;break}while(0);h=k[i+4>>2]|0;if(h)if(h>>>0<(k[11521]|0)>>>0)mc();else{k[x+20>>2]=h;k[h+24>>2]=x;break}}}else{h=k[f+8>>2]|0;w=k[f+12>>2]|0;v=46108+(c<<1<<2)|0;if((h|0)!=(v|0)){if(h>>>0<(k[11521]|0)>>>0)mc();if((k[h+12>>2]|0)!=(f|0))mc()}if((w|0)==(h|0)){k[11517]=k[11517]&~(1<<c);break}if((w|0)!=(v|0)){if(w>>>0<(k[11521]|0)>>>0)mc();v=w+8|0;if((k[v>>2]|0)==(f|0))C=v;else mc()}else C=w+8|0;k[h+12>>2]=w;k[C>>2]=h}while(0);k[m+4>>2]=s|1;k[m+s>>2]=s;if((m|0)==(k[11522]|0)){k[11519]=s;return}else D=s}else{k[e>>2]=b&-2;k[m+4>>2]=n|1;k[m+n>>2]=n;D=n}n=D>>>3;if(D>>>0<256){b=46108+(n<<1<<2)|0;e=k[11517]|0;s=1<<n;if(e&s){n=b+8|0;C=k[n>>2]|0;if(C>>>0<(k[11521]|0)>>>0)mc();else{E=n;F=C}}else{k[11517]=e|s;E=b+8|0;F=b}k[E>>2]=m;k[F+12>>2]=m;k[m+8>>2]=F;k[m+12>>2]=b;return}b=D>>>8;if(b)if(D>>>0>16777215)G=31;else{F=(b+1048320|0)>>>16&8;E=b<<F;b=(E+520192|0)>>>16&4;s=E<<b;E=(s+245760|0)>>>16&2;e=14-(b|F|E)+(s<<E>>>15)|0;G=D>>>(e+7|0)&1|e<<1}else G=0;e=46372+(G<<2)|0;k[m+28>>2]=G;k[m+20>>2]=0;k[m+16>>2]=0;E=k[11518]|0;s=1<<G;do if(E&s){F=D<<((G|0)==31?0:25-(G>>>1)|0);b=k[e>>2]|0;while(1){if((k[b+4>>2]&-8|0)==(D|0)){H=b;I=130;break}C=b+16+(F>>>31<<2)|0;n=k[C>>2]|0;if(!n){J=C;K=b;I=127;break}else{F=F<<1;b=n}}if((I|0)==127)if(J>>>0<(k[11521]|0)>>>0)mc();else{k[J>>2]=m;k[m+24>>2]=K;k[m+12>>2]=m;k[m+8>>2]=m;break}else if((I|0)==130){b=H+8|0;F=k[b>>2]|0;i=k[11521]|0;if(F>>>0>=i>>>0&H>>>0>=i>>>0){k[F+12>>2]=m;k[b>>2]=m;k[m+8>>2]=F;k[m+12>>2]=H;k[m+24>>2]=0;break}else mc()}}else{k[11518]=E|s;k[e>>2]=m;k[m+24>>2]=e;k[m+12>>2]=m;k[m+8>>2]=m}while(0);m=(k[11525]|0)+-1|0;k[11525]=m;if(!m)L=46524;else return;while(1){m=k[L>>2]|0;if(!m)break;else L=m+8|0}k[11525]=-1;return}function nua(a,b){a=a|0;b=b|0;var c=0,d=0;if(a){c=ma(b,a)|0;if((b|a)>>>0>65535)d=((c>>>0)/(a>>>0)|0|0)==(b|0)?c:-1;else d=c}else d=0;c=lua(d)|0;if(!c)return c|0;if(!(k[c+-4>>2]&3))return c|0;WEa(c|0,0,d|0)|0;return c|0}function oua(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if(!a){c=lua(b)|0;return c|0}if(b>>>0>4294967231){d=Sra()|0;k[d>>2]=12;c=0;return c|0}d=pua(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d){c=d+8|0;return c|0}d=lua(b)|0;if(!d){c=0;return c|0}e=k[a+-4>>2]|0;f=(e&-8)-((e&3|0)==0?8:4)|0;TEa(d|0,a|0,(f>>>0<b>>>0?f:b)|0)|0;mua(a);c=d;return c|0}function pua(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;c=a+4|0;d=k[c>>2]|0;e=d&-8;f=a+e|0;g=k[11521]|0;h=d&3;if(!((h|0)!=1&a>>>0>=g>>>0&a>>>0<f>>>0))mc();i=k[f+4>>2]|0;if(!(i&1))mc();if(!h){if(b>>>0<256){j=0;return j|0}if(e>>>0>=(b+4|0)>>>0?(e-b|0)>>>0<=k[11637]<<1>>>0:0){j=a;return j|0}j=0;return j|0}if(e>>>0>=b>>>0){h=e-b|0;if(h>>>0<=15){j=a;return j|0}l=a+b|0;k[c>>2]=d&1|b|2;k[l+4>>2]=h|3;m=l+h+4|0;k[m>>2]=k[m>>2]|1;qua(l,h);j=a;return j|0}if((f|0)==(k[11523]|0)){h=(k[11520]|0)+e|0;if(h>>>0<=b>>>0){j=0;return j|0}l=h-b|0;h=a+b|0;k[c>>2]=d&1|b|2;k[h+4>>2]=l|1;k[11523]=h;k[11520]=l;j=a;return j|0}if((f|0)==(k[11522]|0)){l=(k[11519]|0)+e|0;if(l>>>0<b>>>0){j=0;return j|0}h=l-b|0;if(h>>>0>15){m=a+b|0;n=m+h|0;k[c>>2]=d&1|b|2;k[m+4>>2]=h|1;k[n>>2]=h;o=n+4|0;k[o>>2]=k[o>>2]&-2;p=m;q=h}else{k[c>>2]=d&1|l|2;h=a+l+4|0;k[h>>2]=k[h>>2]|1;p=0;q=0}k[11519]=q;k[11522]=p;j=a;return j|0}if(i&2){j=0;return j|0}p=(i&-8)+e|0;if(p>>>0<b>>>0){j=0;return j|0}e=p-b|0;q=i>>>3;do if(i>>>0>=256){h=k[f+24>>2]|0;l=k[f+12>>2]|0;do if((l|0)==(f|0)){m=f+16|0;o=m+4|0;n=k[o>>2]|0;if(!n){r=k[m>>2]|0;if(!r){s=0;break}else{t=r;u=m}}else{t=n;u=o}while(1){o=t+20|0;n=k[o>>2]|0;if(n){t=n;u=o;continue}o=t+16|0;n=k[o>>2]|0;if(!n){v=t;w=u;break}else{t=n;u=o}}if(w>>>0<g>>>0)mc();else{k[w>>2]=0;s=v;break}}else{o=k[f+8>>2]|0;if(o>>>0<g>>>0)mc();n=o+12|0;if((k[n>>2]|0)!=(f|0))mc();m=l+8|0;if((k[m>>2]|0)==(f|0)){k[n>>2]=l;k[m>>2]=o;s=l;break}else mc()}while(0);if(h){l=k[f+28>>2]|0;o=46372+(l<<2)|0;if((f|0)==(k[o>>2]|0)){k[o>>2]=s;if(!s){k[11518]=k[11518]&~(1<<l);break}}else{if(h>>>0<(k[11521]|0)>>>0)mc();l=h+16|0;if((k[l>>2]|0)==(f|0))k[l>>2]=s;else k[h+20>>2]=s;if(!s)break}l=k[11521]|0;if(s>>>0<l>>>0)mc();k[s+24>>2]=h;o=f+16|0;m=k[o>>2]|0;do if(m)if(m>>>0<l>>>0)mc();else{k[s+16>>2]=m;k[m+24>>2]=s;break}while(0);m=k[o+4>>2]|0;if(m)if(m>>>0<(k[11521]|0)>>>0)mc();else{k[s+20>>2]=m;k[m+24>>2]=s;break}}}else{m=k[f+8>>2]|0;l=k[f+12>>2]|0;h=46108+(q<<1<<2)|0;if((m|0)!=(h|0)){if(m>>>0<g>>>0)mc();if((k[m+12>>2]|0)!=(f|0))mc()}if((l|0)==(m|0)){k[11517]=k[11517]&~(1<<q);break}if((l|0)!=(h|0)){if(l>>>0<g>>>0)mc();h=l+8|0;if((k[h>>2]|0)==(f|0))x=h;else mc()}else x=l+8|0;k[m+12>>2]=l;k[x>>2]=m}while(0);if(e>>>0<16){k[c>>2]=p|d&1|2;x=a+p+4|0;k[x>>2]=k[x>>2]|1;j=a;return j|0}else{x=a+b|0;k[c>>2]=d&1|b|2;k[x+4>>2]=e|3;b=x+e+4|0;k[b>>2]=k[b>>2]|1;qua(x,e);j=a;return j|0}return 0}function qua(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;c=a+b|0;d=k[a+4>>2]|0;do if(!(d&1)){e=k[a>>2]|0;if(!(d&3))return;f=a+(0-e)|0;g=e+b|0;h=k[11521]|0;if(f>>>0<h>>>0)mc();if((f|0)==(k[11522]|0)){i=c+4|0;j=k[i>>2]|0;if((j&3|0)!=3){l=f;m=g;break}k[11519]=g;k[i>>2]=j&-2;k[f+4>>2]=g|1;k[f+g>>2]=g;return}j=e>>>3;if(e>>>0<256){e=k[f+8>>2]|0;i=k[f+12>>2]|0;n=46108+(j<<1<<2)|0;if((e|0)!=(n|0)){if(e>>>0<h>>>0)mc();if((k[e+12>>2]|0)!=(f|0))mc()}if((i|0)==(e|0)){k[11517]=k[11517]&~(1<<j);l=f;m=g;break}if((i|0)!=(n|0)){if(i>>>0<h>>>0)mc();n=i+8|0;if((k[n>>2]|0)==(f|0))o=n;else mc()}else o=i+8|0;k[e+12>>2]=i;k[o>>2]=e;l=f;m=g;break}e=k[f+24>>2]|0;i=k[f+12>>2]|0;do if((i|0)==(f|0)){n=f+16|0;j=n+4|0;p=k[j>>2]|0;if(!p){q=k[n>>2]|0;if(!q){r=0;break}else{s=q;t=n}}else{s=p;t=j}while(1){j=s+20|0;p=k[j>>2]|0;if(p){s=p;t=j;continue}j=s+16|0;p=k[j>>2]|0;if(!p){u=s;v=t;break}else{s=p;t=j}}if(v>>>0<h>>>0)mc();else{k[v>>2]=0;r=u;break}}else{j=k[f+8>>2]|0;if(j>>>0<h>>>0)mc();p=j+12|0;if((k[p>>2]|0)!=(f|0))mc();n=i+8|0;if((k[n>>2]|0)==(f|0)){k[p>>2]=i;k[n>>2]=j;r=i;break}else mc()}while(0);if(e){i=k[f+28>>2]|0;h=46372+(i<<2)|0;if((f|0)==(k[h>>2]|0)){k[h>>2]=r;if(!r){k[11518]=k[11518]&~(1<<i);l=f;m=g;break}}else{if(e>>>0<(k[11521]|0)>>>0)mc();i=e+16|0;if((k[i>>2]|0)==(f|0))k[i>>2]=r;else k[e+20>>2]=r;if(!r){l=f;m=g;break}}i=k[11521]|0;if(r>>>0<i>>>0)mc();k[r+24>>2]=e;h=f+16|0;j=k[h>>2]|0;do if(j)if(j>>>0<i>>>0)mc();else{k[r+16>>2]=j;k[j+24>>2]=r;break}while(0);j=k[h+4>>2]|0;if(j)if(j>>>0<(k[11521]|0)>>>0)mc();else{k[r+20>>2]=j;k[j+24>>2]=r;l=f;m=g;break}else{l=f;m=g}}else{l=f;m=g}}else{l=a;m=b}while(0);b=k[11521]|0;if(c>>>0<b>>>0)mc();a=c+4|0;r=k[a>>2]|0;if(!(r&2)){if((c|0)==(k[11523]|0)){u=(k[11520]|0)+m|0;k[11520]=u;k[11523]=l;k[l+4>>2]=u|1;if((l|0)!=(k[11522]|0))return;k[11522]=0;k[11519]=0;return}if((c|0)==(k[11522]|0)){u=(k[11519]|0)+m|0;k[11519]=u;k[11522]=l;k[l+4>>2]=u|1;k[l+u>>2]=u;return}u=(r&-8)+m|0;v=r>>>3;do if(r>>>0>=256){t=k[c+24>>2]|0;s=k[c+12>>2]|0;do if((s|0)==(c|0)){o=c+16|0;d=o+4|0;j=k[d>>2]|0;if(!j){i=k[o>>2]|0;if(!i){w=0;break}else{x=i;y=o}}else{x=j;y=d}while(1){d=x+20|0;j=k[d>>2]|0;if(j){x=j;y=d;continue}d=x+16|0;j=k[d>>2]|0;if(!j){z=x;A=y;break}else{x=j;y=d}}if(A>>>0<b>>>0)mc();else{k[A>>2]=0;w=z;break}}else{d=k[c+8>>2]|0;if(d>>>0<b>>>0)mc();j=d+12|0;if((k[j>>2]|0)!=(c|0))mc();o=s+8|0;if((k[o>>2]|0)==(c|0)){k[j>>2]=s;k[o>>2]=d;w=s;break}else mc()}while(0);if(t){s=k[c+28>>2]|0;g=46372+(s<<2)|0;if((c|0)==(k[g>>2]|0)){k[g>>2]=w;if(!w){k[11518]=k[11518]&~(1<<s);break}}else{if(t>>>0<(k[11521]|0)>>>0)mc();s=t+16|0;if((k[s>>2]|0)==(c|0))k[s>>2]=w;else k[t+20>>2]=w;if(!w)break}s=k[11521]|0;if(w>>>0<s>>>0)mc();k[w+24>>2]=t;g=c+16|0;f=k[g>>2]|0;do if(f)if(f>>>0<s>>>0)mc();else{k[w+16>>2]=f;k[f+24>>2]=w;break}while(0);f=k[g+4>>2]|0;if(f)if(f>>>0<(k[11521]|0)>>>0)mc();else{k[w+20>>2]=f;k[f+24>>2]=w;break}}}else{f=k[c+8>>2]|0;s=k[c+12>>2]|0;t=46108+(v<<1<<2)|0;if((f|0)!=(t|0)){if(f>>>0<b>>>0)mc();if((k[f+12>>2]|0)!=(c|0))mc()}if((s|0)==(f|0)){k[11517]=k[11517]&~(1<<v);break}if((s|0)!=(t|0)){if(s>>>0<b>>>0)mc();t=s+8|0;if((k[t>>2]|0)==(c|0))B=t;else mc()}else B=s+8|0;k[f+12>>2]=s;k[B>>2]=f}while(0);k[l+4>>2]=u|1;k[l+u>>2]=u;if((l|0)==(k[11522]|0)){k[11519]=u;return}else C=u}else{k[a>>2]=r&-2;k[l+4>>2]=m|1;k[l+m>>2]=m;C=m}m=C>>>3;if(C>>>0<256){r=46108+(m<<1<<2)|0;a=k[11517]|0;u=1<<m;if(a&u){m=r+8|0;B=k[m>>2]|0;if(B>>>0<(k[11521]|0)>>>0)mc();else{D=m;E=B}}else{k[11517]=a|u;D=r+8|0;E=r}k[D>>2]=l;k[E+12>>2]=l;k[l+8>>2]=E;k[l+12>>2]=r;return}r=C>>>8;if(r)if(C>>>0>16777215)F=31;else{E=(r+1048320|0)>>>16&8;D=r<<E;r=(D+520192|0)>>>16&4;u=D<<r;D=(u+245760|0)>>>16&2;a=14-(r|E|D)+(u<<D>>>15)|0;F=C>>>(a+7|0)&1|a<<1}else F=0;a=46372+(F<<2)|0;k[l+28>>2]=F;k[l+20>>2]=0;k[l+16>>2]=0;D=k[11518]|0;u=1<<F;if(!(D&u)){k[11518]=D|u;k[a>>2]=l;k[l+24>>2]=a;k[l+12>>2]=l;k[l+8>>2]=l;return}u=C<<((F|0)==31?0:25-(F>>>1)|0);F=k[a>>2]|0;while(1){if((k[F+4>>2]&-8|0)==(C|0)){G=F;H=127;break}a=F+16+(u>>>31<<2)|0;D=k[a>>2]|0;if(!D){I=a;J=F;H=124;break}else{u=u<<1;F=D}}if((H|0)==124){if(I>>>0<(k[11521]|0)>>>0)mc();k[I>>2]=l;k[l+24>>2]=J;k[l+12>>2]=l;k[l+8>>2]=l;return}else if((H|0)==127){H=G+8|0;J=k[H>>2]|0;I=k[11521]|0;if(!(J>>>0>=I>>>0&G>>>0>=I>>>0))mc();k[J+12>>2]=l;k[H>>2]=l;k[l+8>>2]=J;k[l+12>>2]=G;k[l+24>>2]=0;return}}function rua(a){a=a|0;var b=0,c=0,d=0;a=k[10619]|0;vua(47244,a,47300);k[11641]=47992;k[11643]=48012;k[11642]=0;B=0;wa(508,46572,47244);b=B;B=0;if(b&1){b=Rb()|0;vva(46572);Qb(b|0)}k[11661]=0;k[11662]=-1;b=k[10620]|0;wua(47348,b,47308);k[11663]=48072;k[11664]=48092;B=0;wa(508,46656,47348);c=B;B=0;if(c&1){c=Rb()|0;vva(46656);Qb(c|0)}k[11682]=0;k[11683]=-1;c=k[10618]|0;wua(47396,c,47316);k[11684]=48072;k[11685]=48092;B=0;wa(508,46740,47396);d=B;B=0;if(d&1){d=Rb()|0;vva(46740);Qb(d|0)}k[11703]=0;k[11704]=-1;d=k[46736+(k[(k[11684]|0)+-12>>2]|0)+24>>2]|0;k[11705]=48072;k[11706]=48092;B=0;wa(508,46824,d|0);d=B;B=0;if(d&1){d=Rb()|0;vva(46824);Qb(d|0)}k[11724]=0;k[11725]=-1;k[46564+(k[(k[11641]|0)+-12>>2]|0)+72>>2]=46652;d=46736+(k[(k[11684]|0)+-12>>2]|0)+4|0;k[d>>2]=k[d>>2]|8192;k[46736+(k[(k[11684]|0)+-12>>2]|0)+72>>2]=46652;xua(47444,a,47324);k[11726]=48032;k[11728]=48052;k[11727]=0;B=0;wa(508,46912,47444);a=B;B=0;if(a&1){a=Rb()|0;zva(46912);Qb(a|0)}k[11746]=0;k[11747]=-1;yua(47500,b,47332);k[11748]=48112;k[11749]=48132;B=0;wa(508,46996,47500);b=B;B=0;if(b&1){b=Rb()|0;zva(46996);Qb(b|0)}k[11767]=0;k[11768]=-1;yua(47548,c,47340);k[11769]=48112;k[11770]=48132;B=0;wa(508,47080,47548);c=B;B=0;if(c&1){c=Rb()|0;zva(47080);Qb(c|0)}k[11788]=0;k[11789]=-1;c=k[47076+(k[(k[11769]|0)+-12>>2]|0)+24>>2]|0;k[11790]=48112;k[11791]=48132;B=0;wa(508,47164,c|0);c=B;B=0;if(c&1){c=Rb()|0;zva(47164);Qb(c|0)}else{k[11809]=0;k[11810]=-1;k[46904+(k[(k[11726]|0)+-12>>2]|0)+72>>2]=46992;c=47076+(k[(k[11769]|0)+-12>>2]|0)+4|0;k[c>>2]=k[c>>2]|8192;k[47076+(k[(k[11769]|0)+-12>>2]|0)+72>>2]=46992;return}}function sua(a){a=a|0;B=0;ya(442,46652)|0;a=B;B=0;if(((!(a&1)?(B=0,ya(442,46820)|0,a=B,B=0,!(a&1)):0)?(B=0,ya(443,46992)|0,a=B,B=0,!(a&1)):0)?(B=0,ya(443,47160)|0,a=B,B=0,!(a&1)):0)return;a=Rb(0)|0;Dd(a)}function tua(){rua(0);ic(550,157079,w|0)|0;return}function uua(){return}function vua(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=r;r=r+16|0;e=d+4|0;f=d;Cva(a);k[a>>2]=47796;k[a+32>>2]=b;k[a+40>>2]=c;k[a+48>>2]=-1;i[a+52>>0]=0;YAa(e,a+4|0);k[f>>2]=k[e>>2];B=0;wa(469,a|0,f|0);e=B;B=0;if(e&1){e=Rb()|0;ZAa(f);Ava(a);Qb(e|0)}else{ZAa(f);r=d;return}}function wua(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=r;r=r+16|0;e=d+4|0;f=d;Cva(a);k[a>>2]=47732;k[a+32>>2]=b;YAa(e,a+4|0);k[f>>2]=k[e>>2];B=0;e=Xa(238,f|0,49380)|0;b=B;B=0;if(b&1){b=Rb()|0;ZAa(f);Ava(a);Qb(b|0)}else{ZAa(f);k[a+36>>2]=e;k[a+40>>2]=c;c=(Hc[k[(k[e>>2]|0)+28>>2]&511](e)|0)&1;i[a+44>>0]=c;r=d;return}}function xua(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=r;r=r+16|0;e=d+4|0;f=d;Rva(a);k[a>>2]=47668;k[a+32>>2]=b;k[a+40>>2]=c;k[a+48>>2]=-1;i[a+52>>0]=0;YAa(e,a+4|0);k[f>>2]=k[e>>2];B=0;wa(467,a|0,f|0);e=B;B=0;if(e&1){e=Rb()|0;ZAa(f);Pva(a);Qb(e|0)}else{ZAa(f);r=d;return}}function yua(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=r;r=r+16|0;e=d+4|0;f=d;Rva(a);k[a>>2]=47604;k[a+32>>2]=b;YAa(e,a+4|0);k[f>>2]=k[e>>2];B=0;e=Xa(238,f|0,49388)|0;b=B;B=0;if(b&1){b=Rb()|0;ZAa(f);Pva(a);Qb(b|0)}else{ZAa(f);k[a+36>>2]=e;k[a+40>>2]=c;c=(Hc[k[(k[e>>2]|0)+28>>2]&511](e)|0)&1;i[a+44>>0]=c;r=d;return}}function zua(a){a=a|0;Pva(a);Sqa(a);return}function Aua(a,b){a=a|0;b=b|0;var c=0;Hc[k[(k[a>>2]|0)+24>>2]&511](a)|0;c=$Aa(b,49388)|0;k[a+36>>2]=c;b=(Hc[k[(k[c>>2]|0)+28>>2]&511](c)|0)&1;i[a+44>>0]=b;return}function Bua(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;b=r;r=r+16|0;c=b+8|0;d=b;e=a+36|0;f=a+40|0;g=c+8|0;h=c;i=a+32|0;a:while(1){a=k[e>>2]|0;j=fd[k[(k[a>>2]|0)+20>>2]&31](a,k[f>>2]|0,c,g,d)|0;a=(k[d>>2]|0)-h|0;if((jta(c,1,a,k[i>>2]|0)|0)!=(a|0)){l=-1;break}switch(j|0){case 1:break;case 2:{l=-1;break a;break}default:{m=4;break a}}}if((m|0)==4)l=((Usa(k[i>>2]|0)|0)!=0)<<31>>31;r=b;return l|0}function Cua(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;a:do if(!(i[a+44>>0]|0)){d=b;e=0;while(1){if((e|0)>=(c|0)){f=e;break a}if((ed[k[(k[a>>2]|0)+52>>2]&511](a,k[d>>2]|0)|0)==-1){f=e;break a}d=d+4|0;e=e+1|0}}else f=jta(b,4,c,k[a+32>>2]|0)|0;while(0);return f|0}function Dua(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;c=r;r=r+32|0;d=c+16|0;e=c+8|0;f=c+4|0;g=c;h=(b|0)==-1;do if(!h){k[e>>2]=b;if(i[a+44>>0]|0)if((jta(e,4,1,k[a+32>>2]|0)|0)==1){j=14;break}else{l=-1;break}k[f>>2]=d;m=e+4|0;n=a+36|0;o=a+40|0;p=d+8|0;q=d;s=a+32|0;t=e;while(1){u=k[n>>2]|0;v=pd[k[(k[u>>2]|0)+12>>2]&15](u,k[o>>2]|0,t,m,g,d,p,f)|0;if((k[g>>2]|0)==(t|0)){j=13;break}if((v|0)==3){w=t;j=7;break}if(v>>>0>=2){j=13;break}u=(k[f>>2]|0)-q|0;if((jta(d,1,u,k[s>>2]|0)|0)!=(u|0)){j=13;break}if((v|0)==1)t=k[g>>2]|0;else{j=12;break}}if((j|0)==7)if((jta(w,1,1,k[s>>2]|0)|0)==1)j=12;else j=13;if((j|0)==12){j=14;break}else if((j|0)==13){l=-1;break}}else j=14;while(0);if((j|0)==14)l=h?0:b;r=c;return l|0}function Eua(a,b){a=a|0;b=b|0;var c=0,d=0;c=$Aa(b,49388)|0;b=a+36|0;k[b>>2]=c;d=Hc[k[(k[c>>2]|0)+24>>2]&511](c)|0;c=a+44|0;k[c>>2]=d;d=k[b>>2]|0;b=(Hc[k[(k[d>>2]|0)+28>>2]&511](d)|0)&1;i[a+53>>0]=b;if((k[c>>2]|0)>8)iAa(157105);return}function Fua(a){a=a|0;Pva(a);Sqa(a);return}function Gua(a){a=a|0;return Jua(a,0)|0}function Hua(a){a=a|0;return Jua(a,1)|0}function Iua(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;c=r;r=r+32|0;d=c+16|0;e=c+8|0;f=c+4|0;g=c;h=a+52|0;j=(i[h>>0]|0)!=0;a:do if((b|0)==-1)if(j)l=-1;else{m=k[a+48>>2]|0;i[h>>0]=(m|0)!=-1&1;l=m}else{do if(j){m=a+48|0;k[f>>2]=k[m>>2];n=k[a+36>>2]|0;switch(pd[k[(k[n>>2]|0)+12>>2]&15](n,k[a+40>>2]|0,f,f+4|0,g,d,d+8|0,e)|0){case 1:case 2:{l=-1;break a;break}case 3:{i[d>>0]=k[m>>2];k[e>>2]=d+1;break}default:{}}n=a+32|0;while(1){o=k[e>>2]|0;if(o>>>0<=d>>>0){p=13;break}q=o+-1|0;k[e>>2]=q;if((sta(i[q>>0]|0,k[n>>2]|0)|0)==-1){p=12;break}}if((p|0)==12){l=-1;break a}else if((p|0)==13){s=m;break}}else s=a+48|0;while(0);k[s>>2]=b;i[h>>0]=1;l=b}while(0);r=c;return l|0}function Jua(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;c=r;r=r+32|0;d=c+16|0;e=c+8|0;f=c+4|0;g=c;h=a+52|0;if(i[h>>0]|0){j=a+48|0;l=k[j>>2]|0;if(b){k[j>>2]=-1;i[h>>0]=0;m=l}else m=l}else{l=k[a+44>>2]|0;h=(l|0)>1?l:1;l=a+32|0;j=0;while(1){if((j|0)>=(h|0)){n=8;break}o=kta(k[l>>2]|0)|0;if((o|0)==-1){p=-1;break}i[d+j>>0]=o;j=j+1|0}if((n|0)==8){do if(!(i[a+53>>0]|0)){j=a+40|0;o=a+36|0;q=e+4|0;s=h;a:while(1){t=k[j>>2]|0;u=t;v=k[u>>2]|0;w=k[u+4>>2]|0;u=k[o>>2]|0;x=d+s|0;switch(pd[k[(k[u>>2]|0)+16>>2]&15](u,t,d,x,f,e,q,g)|0){case 3:{y=s;n=15;break a;break}case 2:{n=17;break a;break}case 1:break;default:{z=s;break a}}t=k[j>>2]|0;k[t>>2]=v;k[t+4>>2]=w;if((s|0)==8){n=17;break}w=kta(k[l>>2]|0)|0;if((w|0)==-1){n=17;break}i[x>>0]=w;s=s+1|0}if((n|0)==15){k[e>>2]=i[d>>0];z=y}else if((n|0)==17){A=-1;break}B=z;n=18}else{k[e>>2]=i[d>>0];B=h;n=18}while(0);b:do if((n|0)==18){if(b){h=k[e>>2]|0;k[a+48>>2]=h;A=h;break}else C=B;while(1){if((C|0)<=0)break;C=C+-1|0;if((sta(i[d+C>>0]|0,k[l>>2]|0)|0)==-1){A=-1;break b}}A=k[e>>2]|0}while(0);p=A}m=p}r=c;return m|0}function Kua(a){a=a|0;Ava(a);Sqa(a);return}function Lua(a,b){a=a|0;b=b|0;var c=0;Hc[k[(k[a>>2]|0)+24>>2]&511](a)|0;c=$Aa(b,49380)|0;k[a+36>>2]=c;b=(Hc[k[(k[c>>2]|0)+28>>2]&511](c)|0)&1;i[a+44>>0]=b;return}function Mua(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;b=r;r=r+16|0;c=b+8|0;d=b;e=a+36|0;f=a+40|0;g=c+8|0;h=c;i=a+32|0;a:while(1){a=k[e>>2]|0;j=fd[k[(k[a>>2]|0)+20>>2]&31](a,k[f>>2]|0,c,g,d)|0;a=(k[d>>2]|0)-h|0;if((jta(c,1,a,k[i>>2]|0)|0)!=(a|0)){l=-1;break}switch(j|0){case 1:break;case 2:{l=-1;break a;break}default:{m=4;break a}}}if((m|0)==4)l=((Usa(k[i>>2]|0)|0)!=0)<<31>>31;r=b;return l|0}function Nua(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;a:do if(!(i[a+44>>0]|0)){d=b;e=0;while(1){if((e|0)>=(c|0)){f=e;break a}if((ed[k[(k[a>>2]|0)+52>>2]&511](a,l[d>>0]|0)|0)==-1){f=e;break a}d=d+1|0;e=e+1|0}}else f=jta(b,1,c,k[a+32>>2]|0)|0;while(0);return f|0}function Oua(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;c=r;r=r+32|0;d=c+16|0;e=c+8|0;f=c+4|0;g=c;h=(b|0)==-1;do if(!h){i[e>>0]=b;if(i[a+44>>0]|0)if((jta(e,1,1,k[a+32>>2]|0)|0)==1){j=14;break}else{l=-1;break}k[f>>2]=d;m=e+1|0;n=a+36|0;o=a+40|0;p=d+8|0;q=d;s=a+32|0;t=e;while(1){u=k[n>>2]|0;v=pd[k[(k[u>>2]|0)+12>>2]&15](u,k[o>>2]|0,t,m,g,d,p,f)|0;if((k[g>>2]|0)==(t|0)){j=13;break}if((v|0)==3){w=t;j=7;break}if(v>>>0>=2){j=13;break}u=(k[f>>2]|0)-q|0;if((jta(d,1,u,k[s>>2]|0)|0)!=(u|0)){j=13;break}if((v|0)==1)t=k[g>>2]|0;else{j=12;break}}if((j|0)==7)if((jta(w,1,1,k[s>>2]|0)|0)==1)j=12;else j=13;if((j|0)==12){j=14;break}else if((j|0)==13){l=-1;break}}else j=14;while(0);if((j|0)==14)l=h?0:b;r=c;return l|0}function Pua(a,b){a=a|0;b=b|0;var c=0,d=0;c=$Aa(b,49380)|0;b=a+36|0;k[b>>2]=c;d=Hc[k[(k[c>>2]|0)+24>>2]&511](c)|0;c=a+44|0;k[c>>2]=d;d=k[b>>2]|0;b=(Hc[k[(k[d>>2]|0)+28>>2]&511](d)|0)&1;i[a+53>>0]=b;if((k[c>>2]|0)>8)iAa(157105);return}function Qua(a){a=a|0;Ava(a);Sqa(a);return}function Rua(a){a=a|0;return Uua(a,0)|0}function Sua(a){a=a|0;return Uua(a,1)|0}function Tua(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;c=r;r=r+32|0;d=c+16|0;e=c+4|0;f=c+8|0;g=c;h=a+52|0;j=(i[h>>0]|0)!=0;a:do if((b|0)==-1)if(j)l=-1;else{m=k[a+48>>2]|0;i[h>>0]=(m|0)!=-1&1;l=m}else{do if(j){m=a+48|0;i[f>>0]=k[m>>2];n=k[a+36>>2]|0;switch(pd[k[(k[n>>2]|0)+12>>2]&15](n,k[a+40>>2]|0,f,f+1|0,g,d,d+8|0,e)|0){case 1:case 2:{l=-1;break a;break}case 3:{i[d>>0]=k[m>>2];k[e>>2]=d+1;break}default:{}}n=a+32|0;while(1){o=k[e>>2]|0;if(o>>>0<=d>>>0){p=13;break}q=o+-1|0;k[e>>2]=q;if((sta(i[q>>0]|0,k[n>>2]|0)|0)==-1){p=12;break}}if((p|0)==12){l=-1;break a}else if((p|0)==13){s=m;break}}else s=a+48|0;while(0);k[s>>2]=b;i[h>>0]=1;l=b}while(0);r=c;return l|0}function Uua(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;c=r;r=r+32|0;d=c+16|0;e=c+8|0;f=c+4|0;g=c;h=a+52|0;if(i[h>>0]|0){j=a+48|0;m=k[j>>2]|0;if(b){k[j>>2]=-1;i[h>>0]=0;n=m}else n=m}else{m=k[a+44>>2]|0;h=(m|0)>1?m:1;m=a+32|0;j=0;while(1){if((j|0)>=(h|0)){o=8;break}p=kta(k[m>>2]|0)|0;if((p|0)==-1){q=-1;break}i[d+j>>0]=p;j=j+1|0}if((o|0)==8){do if(!(i[a+53>>0]|0)){j=a+40|0;p=a+36|0;s=e+1|0;t=h;a:while(1){u=k[j>>2]|0;v=u;w=k[v>>2]|0;x=k[v+4>>2]|0;v=k[p>>2]|0;y=d+t|0;switch(pd[k[(k[v>>2]|0)+16>>2]&15](v,u,d,y,f,e,s,g)|0){case 3:{z=t;o=15;break a;break}case 2:{o=17;break a;break}case 1:break;default:{A=t;break a}}u=k[j>>2]|0;k[u>>2]=w;k[u+4>>2]=x;if((t|0)==8){o=17;break}x=kta(k[m>>2]|0)|0;if((x|0)==-1){o=17;break}i[y>>0]=x;t=t+1|0}if((o|0)==15){i[e>>0]=i[d>>0]|0;A=z}else if((o|0)==17){B=-1;break}C=A;o=18}else{i[e>>0]=i[d>>0]|0;C=h;o=18}while(0);b:do if((o|0)==18){if(b){h=i[e>>0]|0;k[a+48>>2]=h&255;D=h}else{h=C;while(1){if((h|0)<=0)break;h=h+-1|0;if((sta(l[d+h>>0]|0,k[m>>2]|0)|0)==-1){B=-1;break b}}D=i[e>>0]|0}B=D&255}while(0);q=B}n=q}r=c;return n|0}function Vua(a,b){a=a|0;b=b|0;if(!(i[b>>0]&1)){k[a>>2]=k[b>>2];k[a+4>>2]=k[b+4>>2];k[a+8>>2]=k[b+8>>2]}else Wua(a,k[b+8>>2]|0,k[b+4>>2]|0);return}function Wua(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if(c>>>0>4294967279)Nqa(a);if(c>>>0<11){i[a>>0]=c<<1;d=a+1|0}else{e=c+16&-16;f=Qqa(e)|0;k[a+8>>2]=f;k[a>>2]=e|1;k[a+4>>2]=c;d=f}TEa(d|0,b|0,c|0)|0;i[d+c>>0]=0;return}function Xua(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if(b>>>0>4294967279)Nqa(a);if(b>>>0<11){i[a>>0]=b<<1;d=a+1|0}else{e=b+16&-16;f=Qqa(e)|0;k[a+8>>2]=f;k[a>>2]=e|1;k[a+4>>2]=b;d=f}WEa(d|0,c|0,b|0)|0;i[d+b>>0]=0;return}function Yua(a){a=a|0;if(i[a>>0]&1)Sqa(k[a+8>>2]|0);return}function Zua(a,b){a=a|0;b=b|0;var c=0,d=0;if((a|0)!=(b|0)){c=i[b>>0]|0;d=(c&1)==0;$ua(a,d?b+1|0:k[b+8>>2]|0,d?(c&255)>>>1:k[b+4>>2]|0)|0}return a|0}function _ua(a,b){a=a|0;b=b|0;return $ua(a,b,Lta(b)|0)|0}function $ua(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=i[a>>0]|0;if(!(d&1)){e=10;f=d}else{d=k[a>>2]|0;e=(d&-2)+-1|0;f=d&255}d=(f&1)==0;do if(e>>>0>=c>>>0){if(d)g=a+1|0;else g=k[a+8>>2]|0;UEa(g|0,b|0,c|0)|0;i[g+c>>0]=0;if(!(i[a>>0]&1)){i[a>>0]=c<<1;break}else{k[a+4>>2]=c;break}}else{if(d)h=(f&255)>>>1;else h=k[a+4>>2]|0;gva(a,e,c-e|0,h,0,h,c,b)}while(0);return a|0}function ava(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=i[a>>0]|0;e=(d&1)==0;if(e)f=(d&255)>>>1;else f=k[a+4>>2]|0;do if(f>>>0>=b>>>0)if(e){i[a+1+b>>0]=0;i[a>>0]=b<<1;break}else{i[(k[a+8>>2]|0)+b>>0]=0;k[a+4>>2]=b;break}else bva(a,b-f|0,c)|0;while(0);return}function bva(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;if(b){d=i[a>>0]|0;if(!(d&1)){e=10;f=d}else{d=k[a>>2]|0;e=(d&-2)+-1|0;f=d&255}if(!(f&1))g=(f&255)>>>1;else g=k[a+4>>2]|0;if((e-g|0)>>>0<b>>>0){hva(a,e,b-e+g|0,g,g,0,0);h=i[a>>0]|0}else h=f;if(!(h&1))j=a+1|0;else j=k[a+8>>2]|0;WEa(j+g|0,c|0,b|0)|0;c=g+b|0;if(!(i[a>>0]&1))i[a>>0]=c<<1;else k[a+4>>2]=c;i[j+c>>0]=0}return a|0}function cva(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;if(b>>>0>4294967279)Nqa(a);c=i[a>>0]|0;if(!(c&1)){d=10;e=c}else{c=k[a>>2]|0;d=(c&-2)+-1|0;e=c&255}if(!(e&1))f=(e&255)>>>1;else f=k[a+4>>2]|0;c=f>>>0>b>>>0?f:b;if(c>>>0<11)g=10;else g=(c+16&-16)+-1|0;a:do if((g|0)!=(d|0)){do if((g|0)!=10){c=g+1|0;if(g>>>0<=d>>>0){B=0;b=ya(423,c|0)|0;h=B;B=0;if(h&1){h=Rb(0)|0;Nb(h|0)|0;Pb();break a}else j=b}else j=Qqa(c)|0;if(!(e&1)){l=j;m=1;n=a+1|0;o=0;break}else{l=j;m=1;n=k[a+8>>2]|0;o=1;break}}else{l=a+1|0;m=0;n=k[a+8>>2]|0;o=1}while(0);if(!(e&1))p=(e&255)>>>1;else p=k[a+4>>2]|0;TEa(l|0,n|0,p+1|0)|0;if(o)Sqa(n);if(m){k[a>>2]=g+1|1;k[a+4>>2]=f;k[a+8>>2]=l;break}else{i[a>>0]=f<<1;break}}while(0);return}function dva(a,b){a=a|0;b=b|0;return fva(a,b,Lta(b)|0)|0}function eva(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=i[a>>0]|0;d=(c&1)!=0;if(d){e=(k[a>>2]&-2)+-1|0;f=k[a+4>>2]|0}else{e=10;f=(c&255)>>>1}if((f|0)==(e|0)){hva(a,e,1,e,e,0,0);if(!(i[a>>0]&1))g=7;else g=8}else if(d)g=8;else g=7;if((g|0)==7){i[a>>0]=(f<<1)+2;h=a+1|0}else if((g|0)==8){g=k[a+8>>2]|0;k[a+4>>2]=f+1;h=g}g=h+f|0;i[g>>0]=b;i[g+1>>0]=0;return}function fva(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=i[a>>0]|0;if(!(d&1)){e=10;f=d}else{d=k[a>>2]|0;e=(d&-2)+-1|0;f=d&255}if(!(f&1))g=(f&255)>>>1;else g=k[a+4>>2]|0;if((e-g|0)>>>0>=c>>>0){if(c){if(!(f&1))h=a+1|0;else h=k[a+8>>2]|0;TEa(h+g|0,b|0,c|0)|0;f=g+c|0;if(!(i[a>>0]&1))i[a>>0]=f<<1;else k[a+4>>2]=f;i[h+f>>0]=0}}else gva(a,e,c-e+g|0,g,g,0,c,b);return a|0}function gva(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0;if((-18-b|0)>>>0<c>>>0)Nqa(a);if(!(i[a>>0]&1))j=a+1|0;else j=k[a+8>>2]|0;if(b>>>0<2147483623){l=c+b|0;c=b<<1;m=l>>>0<c>>>0?c:l;n=m>>>0<11?11:m+16&-16}else n=-17;m=Qqa(n)|0;if(e)TEa(m|0,j|0,e|0)|0;if(g)TEa(m+e|0,h|0,g|0)|0;h=d-f|0;if((h|0)!=(e|0))TEa(m+e+g|0,j+e+f|0,h-e|0)|0;if((b|0)!=10)Sqa(j);k[a+8>>2]=m;k[a>>2]=n|1;n=h+g|0;k[a+4>>2]=n;i[m+n>>0]=0;return}function hva(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0;if((-17-b|0)>>>0<c>>>0)Nqa(a);if(!(i[a>>0]&1))h=a+1|0;else h=k[a+8>>2]|0;if(b>>>0<2147483623){j=c+b|0;c=b<<1;l=j>>>0<c>>>0?c:j;m=l>>>0<11?11:l+16&-16}else m=-17;l=Qqa(m)|0;if(e)TEa(l|0,h|0,e|0)|0;j=d-f|0;if((j|0)!=(e|0))TEa(l+e+g|0,h+e+f|0,j-e|0)|0;if((b|0)!=10)Sqa(h);k[a+8>>2]=l;k[a>>2]=m|1;return}function iva(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if(c>>>0>1073741807)Nqa(a);if(c>>>0<2){i[a>>0]=c<<1;d=a+4|0}else{e=c+4&-4;f=Qqa(e<<2)|0;k[a+8>>2]=f;k[a>>2]=e|1;k[a+4>>2]=c;d=f}Rta(d,b,c)|0;k[d+(c<<2)>>2]=0;return}function jva(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if(b>>>0>1073741807)Nqa(a);if(b>>>0<2){i[a>>0]=b<<1;d=a+4|0}else{e=b+4&-4;f=Qqa(e<<2)|0;k[a+8>>2]=f;k[a>>2]=e|1;k[a+4>>2]=b;d=f}Tta(d,c,b)|0;k[d+(b<<2)>>2]=0;return}function kva(a){a=a|0;if(i[a>>0]&1)Sqa(k[a+8>>2]|0);return}function lva(a,b){a=a|0;b=b|0;return mva(a,b,Qta(b)|0)|0}function mva(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=i[a>>0]|0;if(!(d&1)){e=1;f=d}else{d=k[a>>2]|0;e=(d&-2)+-1|0;f=d&255}d=(f&1)==0;do if(e>>>0>=c>>>0){if(d)g=a+4|0;else g=k[a+8>>2]|0;Sta(g,b,c)|0;k[g+(c<<2)>>2]=0;if(!(i[a>>0]&1)){i[a>>0]=c<<1;break}else{k[a+4>>2]=c;break}}else{if(d)h=(f&255)>>>1;else h=k[a+4>>2]|0;pva(a,e,c-e|0,h,0,h,c,b)}while(0);return a|0}function nva(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;if(b>>>0>1073741807)Nqa(a);c=i[a>>0]|0;if(!(c&1)){d=1;e=c}else{c=k[a>>2]|0;d=(c&-2)+-1|0;e=c&255}if(!(e&1))f=(e&255)>>>1;else f=k[a+4>>2]|0;c=f>>>0>b>>>0?f:b;if(c>>>0<2)g=1;else g=(c+4&-4)+-1|0;a:do if((g|0)!=(d|0)){do if((g|0)!=1){c=(g<<2)+4|0;if(g>>>0<=d>>>0){B=0;b=ya(423,c|0)|0;h=B;B=0;if(h&1){h=Rb(0)|0;Nb(h|0)|0;Pb();break a}else j=b}else j=Qqa(c)|0;if(!(e&1)){l=j;m=1;n=a+4|0;o=0;break}else{l=j;m=1;n=k[a+8>>2]|0;o=1;break}}else{l=a+4|0;m=0;n=k[a+8>>2]|0;o=1}while(0);if(!(e&1))p=(e&255)>>>1;else p=k[a+4>>2]|0;Rta(l,n,p+1|0)|0;if(o)Sqa(n);if(m){k[a>>2]=g+1|1;k[a+4>>2]=f;k[a+8>>2]=l;break}else{i[a>>0]=f<<1;break}}while(0);return}function ova(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=i[a>>0]|0;d=(c&1)!=0;if(d){e=(k[a>>2]&-2)+-1|0;f=k[a+4>>2]|0}else{e=1;f=(c&255)>>>1}if((f|0)==(e|0)){qva(a,e,1,e,e,0,0);if(!(i[a>>0]&1))g=7;else g=8}else if(d)g=8;else g=7;if((g|0)==7){i[a>>0]=(f<<1)+2;h=a+4|0}else if((g|0)==8){g=k[a+8>>2]|0;k[a+4>>2]=f+1;h=g}g=h+(f<<2)|0;k[g>>2]=b;k[g+4>>2]=0;return}function pva(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0;if((1073741806-b|0)>>>0<c>>>0)Nqa(a);if(!(i[a>>0]&1))j=a+4|0;else j=k[a+8>>2]|0;if(b>>>0<536870887){l=c+b|0;c=b<<1;m=l>>>0<c>>>0?c:l;n=m>>>0<2?2:m+4&-4}else n=1073741807;m=Qqa(n<<2)|0;if(e)Rta(m,j,e)|0;if(g)Rta(m+(e<<2)|0,h,g)|0;h=d-f|0;if((h|0)!=(e|0))Rta(m+(e<<2)+(g<<2)|0,j+(e<<2)+(f<<2)|0,h-e|0)|0;if((b|0)!=1)Sqa(j);k[a+8>>2]=m;k[a>>2]=n|1;n=h+g|0;k[a+4>>2]=n;k[m+(n<<2)>>2]=0;return}function qva(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0;if((1073741807-b|0)>>>0<c>>>0)Nqa(a);if(!(i[a>>0]&1))h=a+4|0;else h=k[a+8>>2]|0;if(b>>>0<536870887){j=c+b|0;c=b<<1;l=j>>>0<c>>>0?c:j;m=l>>>0<2?2:l+4&-4}else m=1073741807;l=Qqa(m<<2)|0;if(e)Rta(l,h,e)|0;j=d-f|0;if((j|0)!=(e|0))Rta(l+(e<<2)+(g<<2)|0,h+(e<<2)+(f<<2)|0,j-e|0)|0;if((b|0)!=1)Sqa(h);k[a+8>>2]=l;k[a>>2]=m|1;return}function rva(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=b;e=c-d|0;if(e>>>0>4294967279)Nqa(a);if(e>>>0<11){i[a>>0]=e<<1;f=a+1|0}else{g=e+16&-16;h=Qqa(g)|0;k[a+8>>2]=h;k[a>>2]=g|1;k[a+4>>2]=e;f=h}h=c-d|0;d=b;b=f;while(1){if((d|0)==(c|0))break;i[b>>0]=i[d>>0]|0;d=d+1|0;b=b+1|0}i[f+h>>0]=0;return}function sva(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=b;e=c-d|0;f=e>>2;if(f>>>0>1073741807)Nqa(a);if(f>>>0<2){i[a>>0]=e>>>1;g=a+4|0}else{e=f+4&-4;h=Qqa(e<<2)|0;k[a+8>>2]=h;k[a>>2]=e|1;k[a+4>>2]=f;g=h}h=(c-d|0)>>>2;d=b;b=g;while(1){if((d|0)==(c|0))break;k[b>>2]=k[d>>2];d=d+4|0;b=b+4|0}k[g+(h<<2)>>2]=0;return}function tva(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;d=c;e=(k[a+24>>2]|0)==0;k[a+16>>2]=e&1|b;if(!((e&1|b)&k[a+20>>2])){r=c;return}c=Ab(16)|0;Lwa()|0;k[d>>2]=1;k[d+4>>2]=48212;B=0;eb(531,c|0,157660,d|0);d=B;B=0;if(d&1){d=Rb()|0;zb(c|0);Qb(d|0)}else jc(c|0,25432,380)}function uva(a){a=a|0;var b=0;k[a>>2]=48168;B=0;wa(525,a|0,0);b=B;B=0;if(b&1){b=Rb(0)|0;Dd(b)}else{ZAa(a+28|0);mua(k[a+32>>2]|0);mua(k[a+36>>2]|0);mua(k[a+48>>2]|0);mua(k[a+60>>2]|0);return}}function vva(a){a=a|0;uva(a);return}function wva(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=a+32|0;d=a+36|0;e=k[a+40>>2]|0;while(1){if(!e)break;f=e+-1|0;nd[k[(k[c>>2]|0)+(f<<2)>>2]&1023](b,a,k[(k[d>>2]|0)+(f<<2)>>2]|0);e=f}return}function xva(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;YAa(c,a+28|0);r=b;return k[c>>2]|0}function yva(a,b){a=a|0;b=b|0;var c=0;k[a+24>>2]=b;k[a+16>>2]=(b|0)==0&1;k[a+20>>2]=0;k[a+4>>2]=4098;k[a+12>>2]=0;k[a+8>>2]=6;b=a+28|0;c=a+32|0;a=c+40|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(a|0));XAa(b);return}function zva(a){a=a|0;uva(a);return}function Ava(a){a=a|0;k[a>>2]=47860;ZAa(a+4|0);return}function Bva(a){a=a|0;k[a>>2]=47860;ZAa(a+4|0);Sqa(a);return}function Cva(a){a=a|0;var b=0;k[a>>2]=47860;XAa(a+4|0);b=a+8|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;return}function Dva(a,b){a=a|0;b=b|0;return}function Eva(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function Fva(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;f=a;k[f>>2]=0;k[f+4>>2]=0;f=a+8|0;k[f>>2]=-1;k[f+4>>2]=-1;return}function Gva(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=a;k[d>>2]=0;k[d+4>>2]=0;d=a+8|0;k[d>>2]=-1;k[d+4>>2]=-1;return}function Hva(a){a=a|0;return 0}function Iva(a){a=a|0;return 0}function Jva(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=a+12|0;e=a+16|0;f=b;b=0;while(1){if((b|0)>=(c|0)){g=b;break}h=k[d>>2]|0;if(h>>>0<(k[e>>2]|0)>>>0){k[d>>2]=h+1;j=i[h>>0]|0}else{h=Hc[k[(k[a>>2]|0)+40>>2]&511](a)|0;if((h|0)==-1){g=b;break}j=h&255}i[f>>0]=j;f=f+1|0;b=b+1|0}return g|0}function Kva(a){a=a|0;return -1}function Lva(a){a=a|0;var b=0,c=0;if((Hc[k[(k[a>>2]|0)+36>>2]&511](a)|0)==-1)b=-1;else{c=a+12|0;a=k[c>>2]|0;k[c>>2]=a+1;b=l[a>>0]|0}return b|0}function Mva(a,b){a=a|0;b=b|0;return -1}function Nva(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=a+24|0;e=a+28|0;f=b;b=0;while(1){if((b|0)>=(c|0)){g=b;break}h=k[d>>2]|0;if(h>>>0>=(k[e>>2]|0)>>>0){if((ed[k[(k[a>>2]|0)+52>>2]&511](a,l[f>>0]|0)|0)==-1){g=b;break}}else{j=i[f>>0]|0;k[d>>2]=h+1;i[h>>0]=j}f=f+1|0;b=b+1|0}return g|0}function Ova(a,b){a=a|0;b=b|0;return -1}function Pva(a){a=a|0;k[a>>2]=47924;ZAa(a+4|0);return}function Qva(a){a=a|0;k[a>>2]=47924;ZAa(a+4|0);Sqa(a);return}function Rva(a){a=a|0;var b=0;k[a>>2]=47924;XAa(a+4|0);b=a+8|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;return}function Sva(a,b){a=a|0;b=b|0;return}function Tva(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function Uva(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;f=a;k[f>>2]=0;k[f+4>>2]=0;f=a+8|0;k[f>>2]=-1;k[f+4>>2]=-1;return}function Vva(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=a;k[d>>2]=0;k[d+4>>2]=0;d=a+8|0;k[d>>2]=-1;k[d+4>>2]=-1;return}function Wva(a){a=a|0;return 0}function Xva(a){a=a|0;return 0}function Yva(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=a+12|0;e=a+16|0;f=b;b=0;while(1){if((b|0)>=(c|0)){g=b;break}h=k[d>>2]|0;if(h>>>0>=(k[e>>2]|0)>>>0){i=Hc[k[(k[a>>2]|0)+40>>2]&511](a)|0;if((i|0)==-1){g=b;break}else j=i}else{k[d>>2]=h+4;j=k[h>>2]|0}k[f>>2]=j;f=f+4|0;b=b+1|0}return g|0}function Zva(a){a=a|0;return -1}function _va(a){a=a|0;var b=0,c=0;if((Hc[k[(k[a>>2]|0)+36>>2]&511](a)|0)==-1)b=-1;else{c=a+12|0;a=k[c>>2]|0;k[c>>2]=a+4;b=k[a>>2]|0}return b|0}function $va(a,b){a=a|0;b=b|0;return -1}function awa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=a+24|0;e=a+28|0;f=b;b=0;while(1){if((b|0)>=(c|0)){g=b;break}h=k[d>>2]|0;if(h>>>0>=(k[e>>2]|0)>>>0){if((ed[k[(k[a>>2]|0)+52>>2]&511](a,k[f>>2]|0)|0)==-1){g=b;break}}else{i=k[f>>2]|0;k[d>>2]=h+4;k[h>>2]=i}f=f+4|0;b=b+1|0}return g|0}function bwa(a,b){a=a|0;b=b|0;return -1}function cwa(a){a=a|0;uva(a+8|0);return}function dwa(a){a=a|0;uva(a+(k[(k[a>>2]|0)+-12>>2]|0)+8|0);return}function ewa(a){a=a|0;uva(a+8|0);Sqa(a);return}function fwa(a){a=a|0;ewa(a+(k[(k[a>>2]|0)+-12>>2]|0)|0);return}function gwa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=r;r=r+16|0;c=b;a:do if(k[a+(k[(k[a>>2]|0)+-12>>2]|0)+24>>2]|0){B=0;wa(504,c|0,a|0);d=B;B=0;b:do if(d&1){e=Rb(0)|0;f=e}else{do if(i[c>>0]|0){e=k[a+(k[(k[a>>2]|0)+-12>>2]|0)+24>>2]|0;B=0;g=ya(k[(k[e>>2]|0)+24>>2]|0,e|0)|0;e=B;B=0;if(!(e&1)){if((g|0)!=-1)break;g=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;B=0;wa(505,g|0,k[g+16>>2]|1|0);g=B;B=0;if(!(g&1))break}g=Rb(0)|0;twa(c);f=g;break b}while(0);twa(c);break a}while(0);Nb(f|0)|0;B=0;va(447,a+(k[(k[a>>2]|0)+-12>>2]|0)|0);d=B;B=0;if(!(d&1)){Pb();break}d=Rb()|0;B=0;fb(4);g=B;B=0;if(g&1){g=Rb(0)|0;Dd(g)}else Qb(d|0)}while(0);r=b;return a|0}function hwa(a){a=a|0;var b=0;b=a+16|0;k[b>>2]=k[b>>2]|1;if(!(k[a+20>>2]&1))return;else ac()}function iwa(a){a=a|0;uva(a+8|0);return}function jwa(a){a=a|0;uva(a+(k[(k[a>>2]|0)+-12>>2]|0)+8|0);return}function kwa(a){a=a|0;uva(a+8|0);Sqa(a);return}function lwa(a){a=a|0;kwa(a+(k[(k[a>>2]|0)+-12>>2]|0)|0);return}function mwa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=r;r=r+16|0;c=b;a:do if(k[a+(k[(k[a>>2]|0)+-12>>2]|0)+24>>2]|0){B=0;wa(526,c|0,a|0);d=B;B=0;b:do if(d&1){e=Rb(0)|0;f=e}else{do if(i[c>>0]|0){e=k[a+(k[(k[a>>2]|0)+-12>>2]|0)+24>>2]|0;B=0;g=ya(k[(k[e>>2]|0)+24>>2]|0,e|0)|0;e=B;B=0;if(!(e&1)){if((g|0)!=-1)break;g=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;B=0;wa(505,g|0,k[g+16>>2]|1|0);g=B;B=0;if(!(g&1))break}g=Rb(0)|0;Iwa(c);f=g;break b}while(0);Iwa(c);break a}while(0);Nb(f|0)|0;B=0;va(447,a+(k[(k[a>>2]|0)+-12>>2]|0)|0);d=B;B=0;if(!(d&1)){Pb();break}d=Rb()|0;B=0;fb(4);g=B;B=0;if(g&1){g=Rb(0)|0;Dd(g)}else Qb(d|0)}while(0);r=b;return a|0}function nwa(a,b){a=a|0;b=b|0;return}function owa(a){a=a|0;uva(a+4|0);return}function pwa(a){a=a|0;uva(a+(k[(k[a>>2]|0)+-12>>2]|0)+4|0);return}function qwa(a){a=a|0;uva(a+4|0);Sqa(a);return}function rwa(a){a=a|0;qwa(a+(k[(k[a>>2]|0)+-12>>2]|0)|0);return}function swa(a,b){a=a|0;b=b|0;var c=0;i[a>>0]=0;k[a+4>>2]=b;c=b+(k[(k[b>>2]|0)+-12>>2]|0)|0;if(!(k[c+16>>2]|0)){b=k[c+72>>2]|0;if(b)gwa(b)|0;i[a>>0]=1}return}function twa(a){a=a|0;var b=0,c=0,d=0;b=a+4|0;a=k[b>>2]|0;c=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;do if((((k[c+24>>2]|0)!=0?(k[c+16>>2]|0)==0:0)?(k[c+4>>2]&8192|0)!=0:0)?!(Bb()|0):0){a=k[b>>2]|0;d=k[a+(k[(k[a>>2]|0)+-12>>2]|0)+24>>2]|0;B=0;a=ya(k[(k[d>>2]|0)+24>>2]|0,d|0)|0;d=B;B=0;if(!(d&1)){if((a|0)!=-1)break;a=k[b>>2]|0;d=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;B=0;wa(505,d|0,k[d+16>>2]|1|0);d=B;B=0;if(!(d&1))break}d=Rb(0)|0;Nb(d|0)|0;B=0;fb(4);d=B;B=0;if(d&1){d=Rb(0)|0;Dd(d)}}while(0);return}function uwa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;c=r;r=r+32|0;d=c+16|0;e=c+12|0;f=c;g=c+8|0;B=0;wa(504,f|0,a|0);h=B;B=0;a:do if(h&1){j=Rb(0)|0;l=j;m=a;n=a;o=19}else{do if(i[f>>0]|0){j=xva(a+(k[(k[a>>2]|0)+-12>>2]|0)|0)|0;k[g>>2]=j;B=0;j=Xa(238,g|0,48492)|0;p=B;B=0;if(p&1){p=Rb(0)|0;ZAa(g);q=p}else{ZAa(g);p=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;s=k[p+24>>2]|0;t=p+76|0;u=k[t>>2]|0;do if((u|0)==-1){v=xva(p)|0;k[d>>2]=v;B=0;v=Xa(238,d|0,49320)|0;w=B;B=0;if(!(w&1)?(B=0,w=Xa(k[(k[v>>2]|0)+28>>2]|0,v|0,32)|0,v=B,B=0,!(v&1)):0){ZAa(d);v=w<<24>>24;k[t>>2]=v;x=p;y=v;o=10;break}v=Rb(0)|0;ZAa(d);z=v}else{x=p;y=u;o=10}while(0);if((o|0)==10){u=k[(k[j>>2]|0)+12>>2]|0;k[e>>2]=s;B=0;k[d>>2]=k[e>>2];p=Ya(u|0,j|0,d|0,x|0,y&255|0,b|0)|0;u=B;B=0;if(!(u&1)){if(p)break;p=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;B=0;wa(505,p|0,k[p+16>>2]|5|0);p=B;B=0;if(!(p&1))break}p=Rb(0)|0;z=p}q=z}twa(f);l=q;m=a;n=a;o=19;break a}while(0);twa(f)}while(0);do if((o|0)==19){Nb(l|0)|0;B=0;va(447,m+(k[(k[n>>2]|0)+-12>>2]|0)|0);f=B;B=0;if(!(f&1)){Pb();break}f=Rb()|0;B=0;fb(4);q=B;B=0;if(q&1){q=Rb(0)|0;Dd(q)}else Qb(f|0)}while(0);r=c;return a|0}function vwa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;c=r;r=r+32|0;d=c+16|0;e=c+12|0;f=c;g=c+8|0;B=0;wa(504,f|0,a|0);h=B;B=0;a:do if(h&1){j=Rb(0)|0;l=j;m=a;n=a;o=19}else{do if(i[f>>0]|0){j=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;p=k[j+4>>2]&74;q=xva(j)|0;k[g>>2]=q;B=0;q=Xa(238,g|0,48492)|0;j=B;B=0;if(j&1){j=Rb(0)|0;ZAa(g);s=j}else{ZAa(g);j=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;t=k[j+24>>2]|0;u=j+76|0;v=k[u>>2]|0;do if((v|0)==-1){w=xva(j)|0;k[d>>2]=w;B=0;w=Xa(238,d|0,49320)|0;x=B;B=0;if(!(x&1)?(B=0,x=Xa(k[(k[w>>2]|0)+28>>2]|0,w|0,32)|0,w=B,B=0,!(w&1)):0){ZAa(d);w=x<<24>>24;k[u>>2]=w;y=j;z=w;o=10;break}w=Rb(0)|0;ZAa(d);A=w}else{y=j;z=v;o=10}while(0);if((o|0)==10){v=k[(k[q>>2]|0)+16>>2]|0;k[e>>2]=t;B=0;k[d>>2]=k[e>>2];j=Ya(v|0,q|0,d|0,y|0,z&255|0,((p|0)==64|(p|0)==8?b&65535:b<<16>>16)|0)|0;v=B;B=0;if(!(v&1)){if(j)break;j=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;B=0;wa(505,j|0,k[j+16>>2]|5|0);j=B;B=0;if(!(j&1))break}j=Rb(0)|0;A=j}s=A}twa(f);l=s;m=a;n=a;o=19;break a}while(0);twa(f)}while(0);do if((o|0)==19){Nb(l|0)|0;B=0;va(447,m+(k[(k[n>>2]|0)+-12>>2]|0)|0);f=B;B=0;if(!(f&1)){Pb();break}f=Rb()|0;B=0;fb(4);s=B;B=0;if(s&1){s=Rb(0)|0;Dd(s)}else Qb(f|0)}while(0);r=c;return a|0}function wwa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;c=r;r=r+32|0;d=c+16|0;e=c+12|0;f=c;g=c+8|0;B=0;wa(504,f|0,a|0);h=B;B=0;a:do if(h&1){j=Rb(0)|0;l=j;m=a;n=a;o=19}else{do if(i[f>>0]|0){j=xva(a+(k[(k[a>>2]|0)+-12>>2]|0)|0)|0;k[g>>2]=j;B=0;j=Xa(238,g|0,48492)|0;p=B;B=0;if(p&1){p=Rb(0)|0;ZAa(g);q=p}else{ZAa(g);p=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;s=k[p+24>>2]|0;t=p+76|0;u=k[t>>2]|0;do if((u|0)==-1){v=xva(p)|0;k[d>>2]=v;B=0;v=Xa(238,d|0,49320)|0;w=B;B=0;if(!(w&1)?(B=0,w=Xa(k[(k[v>>2]|0)+28>>2]|0,v|0,32)|0,v=B,B=0,!(v&1)):0){ZAa(d);v=w<<24>>24;k[t>>2]=v;x=p;y=v;o=10;break}v=Rb(0)|0;ZAa(d);z=v}else{x=p;y=u;o=10}while(0);if((o|0)==10){u=k[(k[j>>2]|0)+16>>2]|0;k[e>>2]=s;B=0;k[d>>2]=k[e>>2];p=Ya(u|0,j|0,d|0,x|0,y&255|0,b|0)|0;u=B;B=0;if(!(u&1)){if(p)break;p=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;B=0;wa(505,p|0,k[p+16>>2]|5|0);p=B;B=0;if(!(p&1))break}p=Rb(0)|0;z=p}q=z}twa(f);l=q;m=a;n=a;o=19;break a}while(0);twa(f)}while(0);do if((o|0)==19){Nb(l|0)|0;B=0;va(447,m+(k[(k[n>>2]|0)+-12>>2]|0)|0);f=B;B=0;if(!(f&1)){Pb();break}f=Rb()|0;B=0;fb(4);q=B;B=0;if(q&1){q=Rb(0)|0;Dd(q)}else Qb(f|0)}while(0);r=c;return a|0}function xwa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;c=r;r=r+32|0;d=c+16|0;e=c+12|0;f=c;g=c+8|0;B=0;wa(504,f|0,a|0);h=B;B=0;a:do if(h&1){j=Rb(0)|0;l=j;m=a;n=a;o=19}else{do if(i[f>>0]|0){j=xva(a+(k[(k[a>>2]|0)+-12>>2]|0)|0)|0;k[g>>2]=j;B=0;j=Xa(238,g|0,48492)|0;p=B;B=0;if(p&1){p=Rb(0)|0;ZAa(g);q=p}else{ZAa(g);p=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;s=k[p+24>>2]|0;t=p+76|0;u=k[t>>2]|0;do if((u|0)==-1){v=xva(p)|0;k[d>>2]=v;B=0;v=Xa(238,d|0,49320)|0;w=B;B=0;if(!(w&1)?(B=0,w=Xa(k[(k[v>>2]|0)+28>>2]|0,v|0,32)|0,v=B,B=0,!(v&1)):0){ZAa(d);v=w<<24>>24;k[t>>2]=v;x=p;y=v;o=10;break}v=Rb(0)|0;ZAa(d);z=v}else{x=p;y=u;o=10}while(0);if((o|0)==10){u=k[(k[j>>2]|0)+24>>2]|0;k[e>>2]=s;B=0;k[d>>2]=k[e>>2];p=Ya(u|0,j|0,d|0,x|0,y&255|0,b|0)|0;u=B;B=0;if(!(u&1)){if(p)break;p=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;B=0;wa(505,p|0,k[p+16>>2]|5|0);p=B;B=0;if(!(p&1))break}p=Rb(0)|0;z=p}q=z}twa(f);l=q;m=a;n=a;o=19;break a}while(0);twa(f)}while(0);do if((o|0)==19){Nb(l|0)|0;B=0;va(447,m+(k[(k[n>>2]|0)+-12>>2]|0)|0);f=B;B=0;if(!(f&1)){Pb();break}f=Rb()|0;B=0;fb(4);q=B;B=0;if(q&1){q=Rb(0)|0;Dd(q)}else Qb(f|0)}while(0);r=c;return a|0}function ywa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;c=r;r=r+32|0;d=c+16|0;e=c+12|0;f=c;g=c+8|0;B=0;wa(504,f|0,a|0);h=B;B=0;a:do if(h&1){j=Rb(0)|0;l=j;m=a;n=a;o=19}else{do if(i[f>>0]|0){j=xva(a+(k[(k[a>>2]|0)+-12>>2]|0)|0)|0;k[g>>2]=j;B=0;j=Xa(238,g|0,48492)|0;p=B;B=0;if(p&1){p=Rb(0)|0;ZAa(g);q=p}else{ZAa(g);p=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;s=k[p+24>>2]|0;t=p+76|0;u=k[t>>2]|0;do if((u|0)==-1){v=xva(p)|0;k[d>>2]=v;B=0;v=Xa(238,d|0,49320)|0;w=B;B=0;if(!(w&1)?(B=0,w=Xa(k[(k[v>>2]|0)+28>>2]|0,v|0,32)|0,v=B,B=0,!(v&1)):0){ZAa(d);v=w<<24>>24;k[t>>2]=v;x=p;y=v;o=10;break}v=Rb(0)|0;ZAa(d);z=v}else{x=p;y=u;o=10}while(0);if((o|0)==10){u=k[(k[j>>2]|0)+16>>2]|0;k[e>>2]=s;B=0;k[d>>2]=k[e>>2];p=Ya(u|0,j|0,d|0,x|0,y&255|0,b|0)|0;u=B;B=0;if(!(u&1)){if(p)break;p=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;B=0;wa(505,p|0,k[p+16>>2]|5|0);p=B;B=0;if(!(p&1))break}p=Rb(0)|0;z=p}q=z}twa(f);l=q;m=a;n=a;o=19;break a}while(0);twa(f)}while(0);do if((o|0)==19){Nb(l|0)|0;B=0;va(447,m+(k[(k[n>>2]|0)+-12>>2]|0)|0);f=B;B=0;if(!(f&1)){Pb();break}f=Rb()|0;B=0;fb(4);q=B;B=0;if(q&1){q=Rb(0)|0;Dd(q)}else Qb(f|0)}while(0);r=c;return a|0}function zwa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;d=r;r=r+32|0;e=d+16|0;f=d+12|0;g=d;h=d+8|0;B=0;wa(504,g|0,a|0);j=B;B=0;a:do if(j&1){l=Rb(0)|0;m=l;n=a;o=a;p=19}else{do if(i[g>>0]|0){l=xva(a+(k[(k[a>>2]|0)+-12>>2]|0)|0)|0;k[h>>2]=l;B=0;l=Xa(238,h|0,48492)|0;q=B;B=0;if(q&1){q=Rb(0)|0;ZAa(h);s=q}else{ZAa(h);q=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;t=k[q+24>>2]|0;u=q+76|0;v=k[u>>2]|0;do if((v|0)==-1){w=xva(q)|0;k[e>>2]=w;B=0;w=Xa(238,e|0,49320)|0;x=B;B=0;if(!(x&1)?(B=0,x=Xa(k[(k[w>>2]|0)+28>>2]|0,w|0,32)|0,w=B,B=0,!(w&1)):0){ZAa(e);w=x<<24>>24;k[u>>2]=w;y=q;z=w;p=10;break}w=Rb(0)|0;ZAa(e);A=w}else{y=q;z=v;p=10}while(0);if((p|0)==10){v=k[(k[l>>2]|0)+20>>2]|0;k[f>>2]=t;B=0;k[e>>2]=k[f>>2];q=xa(v|0,l|0,e|0,y|0,z&255|0,b|0,c|0)|0;v=B;B=0;if(!(v&1)){if(q)break;q=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;B=0;wa(505,q|0,k[q+16>>2]|5|0);q=B;B=0;if(!(q&1))break}q=Rb(0)|0;A=q}s=A}twa(g);m=s;n=a;o=a;p=19;break a}while(0);twa(g)}while(0);do if((p|0)==19){Nb(m|0)|0;B=0;va(447,n+(k[(k[o>>2]|0)+-12>>2]|0)|0);g=B;B=0;if(!(g&1)){Pb();break}g=Rb()|0;B=0;fb(4);s=B;B=0;if(s&1){s=Rb(0)|0;Dd(s)}else Qb(g|0)}while(0);r=d;return a|0}function Awa(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;c=r;r=r+32|0;d=c+16|0;e=c+12|0;f=c;g=c+8|0;B=0;wa(504,f|0,a|0);h=B;B=0;a:do if(h&1){j=Rb(0)|0;l=j;m=a;n=a;o=19}else{do if(i[f>>0]|0){j=xva(a+(k[(k[a>>2]|0)+-12>>2]|0)|0)|0;k[g>>2]=j;B=0;j=Xa(238,g|0,48492)|0;p=B;B=0;if(p&1){p=Rb(0)|0;ZAa(g);q=p}else{ZAa(g);p=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;s=k[p+24>>2]|0;t=p+76|0;u=k[t>>2]|0;do if((u|0)==-1){v=xva(p)|0;k[d>>2]=v;B=0;v=Xa(238,d|0,49320)|0;w=B;B=0;if(!(w&1)?(B=0,w=Xa(k[(k[v>>2]|0)+28>>2]|0,v|0,32)|0,v=B,B=0,!(v&1)):0){ZAa(d);v=w<<24>>24;k[t>>2]=v;x=p;y=v;o=10;break}v=Rb(0)|0;ZAa(d);z=v}else{x=p;y=u;o=10}while(0);if((o|0)==10){u=k[(k[j>>2]|0)+32>>2]|0;k[e>>2]=s;B=0;k[d>>2]=k[e>>2];p=hb(u|0,j|0,d|0,x|0,y&255|0,+b)|0;u=B;B=0;if(!(u&1)){if(p)break;p=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;B=0;wa(505,p|0,k[p+16>>2]|5|0);p=B;B=0;if(!(p&1))break}p=Rb(0)|0;z=p}q=z}twa(f);l=q;m=a;n=a;o=19;break a}while(0);twa(f)}while(0);do if((o|0)==19){Nb(l|0)|0;B=0;va(447,m+(k[(k[n>>2]|0)+-12>>2]|0)|0);f=B;B=0;if(!(f&1)){Pb();break}f=Rb()|0;B=0;fb(4);q=B;B=0;if(q&1){q=Rb(0)|0;Dd(q)}else Qb(f|0)}while(0);r=c;return a|0}function Bwa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;c=r;r=r+32|0;d=c+16|0;e=c+12|0;f=c;g=c+8|0;B=0;wa(504,f|0,a|0);h=B;B=0;a:do if(h&1){j=Rb(0)|0;l=j;m=a;n=a;o=19}else{do if(i[f>>0]|0){j=xva(a+(k[(k[a>>2]|0)+-12>>2]|0)|0)|0;k[g>>2]=j;B=0;j=Xa(238,g|0,48492)|0;p=B;B=0;if(p&1){p=Rb(0)|0;ZAa(g);q=p}else{ZAa(g);p=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;s=k[p+24>>2]|0;t=p+76|0;u=k[t>>2]|0;do if((u|0)==-1){v=xva(p)|0;k[d>>2]=v;B=0;v=Xa(238,d|0,49320)|0;w=B;B=0;if(!(w&1)?(B=0,w=Xa(k[(k[v>>2]|0)+28>>2]|0,v|0,32)|0,v=B,B=0,!(v&1)):0){ZAa(d);v=w<<24>>24;k[t>>2]=v;x=p;y=v;o=10;break}v=Rb(0)|0;ZAa(d);z=v}else{x=p;y=u;o=10}while(0);if((o|0)==10){u=k[(k[j>>2]|0)+40>>2]|0;k[e>>2]=s;B=0;k[d>>2]=k[e>>2];p=Ya(u|0,j|0,d|0,x|0,y&255|0,b|0)|0;u=B;B=0;if(!(u&1)){if(p)break;p=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;B=0;wa(505,p|0,k[p+16>>2]|5|0);p=B;B=0;if(!(p&1))break}p=Rb(0)|0;z=p}q=z}twa(f);l=q;m=a;n=a;o=19;break a}while(0);twa(f)}while(0);do if((o|0)==19){Nb(l|0)|0;B=0;va(447,m+(k[(k[n>>2]|0)+-12>>2]|0)|0);f=B;B=0;if(!(f&1)){Pb();break}f=Rb()|0;B=0;fb(4);q=B;B=0;if(q&1){q=Rb(0)|0;Dd(q)}else Qb(f|0)}while(0);r=c;return a|0}function Cwa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;c=r;r=r+16|0;d=c;B=0;wa(504,d|0,a|0);e=B;B=0;a:do if(e&1){f=Rb(0)|0;g=f;h=a;j=a;l=11}else{do if(i[d>>0]|0){f=k[a+(k[(k[a>>2]|0)+-12>>2]|0)+24>>2]|0;m=f;if(f){n=m+24|0;o=k[n>>2]|0;if((o|0)!=(k[m+28>>2]|0)){k[n>>2]=o+1;i[o>>0]=b;break}B=0;o=Xa(k[(k[f>>2]|0)+52>>2]|0,m|0,b&255|0)|0;m=B;B=0;if(!(m&1))if((o|0)==-1)l=8;else break}else l=8;if((l|0)==8?(o=a+(k[(k[a>>2]|0)+-12>>2]|0)|0,B=0,wa(505,o|0,k[o+16>>2]|1|0),o=B,B=0,!(o&1)):0)break;o=Rb(0)|0;twa(d);g=o;h=a;j=a;l=11;break a}while(0);twa(d)}while(0);do if((l|0)==11){Nb(g|0)|0;B=0;va(447,h+(k[(k[j>>2]|0)+-12>>2]|0)|0);d=B;B=0;if(!(d&1)){Pb();break}d=Rb()|0;B=0;fb(4);b=B;B=0;if(b&1){b=Rb(0)|0;Dd(b)}else Qb(d|0)}while(0);r=c;return a|0}function Dwa(a){a=a|0;uva(a+4|0);return}function Ewa(a){a=a|0;uva(a+(k[(k[a>>2]|0)+-12>>2]|0)+4|0);return}function Fwa(a){a=a|0;uva(a+4|0);Sqa(a);return}function Gwa(a){a=a|0;Fwa(a+(k[(k[a>>2]|0)+-12>>2]|0)|0);return}function Hwa(a,b){a=a|0;b=b|0;var c=0;i[a>>0]=0;k[a+4>>2]=b;c=b+(k[(k[b>>2]|0)+-12>>2]|0)|0;if(!(k[c+16>>2]|0)){b=k[c+72>>2]|0;if(b)mwa(b)|0;i[a>>0]=1}return}function Iwa(a){a=a|0;var b=0,c=0,d=0;b=a+4|0;a=k[b>>2]|0;c=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;do if((((k[c+24>>2]|0)!=0?(k[c+16>>2]|0)==0:0)?(k[c+4>>2]&8192|0)!=0:0)?!(Bb()|0):0){a=k[b>>2]|0;d=k[a+(k[(k[a>>2]|0)+-12>>2]|0)+24>>2]|0;B=0;a=ya(k[(k[d>>2]|0)+24>>2]|0,d|0)|0;d=B;B=0;if(!(d&1)){if((a|0)!=-1)break;a=k[b>>2]|0;d=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;B=0;wa(505,d|0,k[d+16>>2]|1|0);d=B;B=0;if(!(d&1))break}d=Rb(0)|0;Nb(d|0)|0;B=0;fb(4);d=B;B=0;if(d&1){d=Rb(0)|0;Dd(d)}}while(0);return}function Jwa(a){a=a|0;return 157676}function Kwa(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)!=1&(c|0)<257)IEa(a,b,c);else Wua(a,157685,35);return}function Lwa(){if((i[25616]|0)==0?(Gb(25616)|0)!=0:0){k[12053]=48184;ic(384,48212,w|0)|0;Eb(25616)}return 48212}function Mwa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=r;r=r+16|0;e=d+8|0;f=d;g=c;c=k[g+4>>2]|0;h=f;k[h>>2]=k[g>>2];k[h+4>>2]=c;k[e>>2]=k[f>>2];k[e+4>>2]=k[f+4>>2];KEa(a,e,b);k[a>>2]=48148;r=d;return}function Nwa(a){a=a|0;LEa(a);return}function Owa(a){a=a|0;LEa(a);Sqa(a);return}function Pwa(a){a=a|0;uva(a);Sqa(a);return}function Qwa(a){a=a|0;Sqa(a);return}function Rwa(a){a=a|0;return}function Swa(a){a=a|0;return}function Twa(a){a=a|0;Sqa(a);return}function Uwa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;a=d;d=b;while(1){if((a|0)==(e|0)){f=d;g=7;break}if((d|0)==(c|0)){h=-1;break}b=i[d>>0]|0;j=i[a>>0]|0;if(b<<24>>24<j<<24>>24){h=-1;break}if(j<<24>>24<b<<24>>24){h=1;break}a=a+1|0;d=d+1|0}if((g|0)==7)h=(f|0)!=(c|0)&1;return h|0}function Vwa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;rva(a,c,d);return}function Wwa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;a=0;d=b;while(1){if((d|0)==(c|0)){e=a;break}b=(i[d>>0]|0)+(a<<4)|0;f=b&-268435456;a=(f>>>24|f)^b;d=d+1|0}return e|0}function Xwa(a){a=a|0;return}function Ywa(a){a=a|0;Sqa(a);return}function Zwa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;a=d;d=b;while(1){if((a|0)==(e|0)){f=d;g=7;break}if((d|0)==(c|0)){h=-1;break}b=k[d>>2]|0;i=k[a>>2]|0;if((b|0)<(i|0)){h=-1;break}if((i|0)<(b|0)){h=1;break}a=a+4|0;d=d+4|0}if((g|0)==7)h=(f|0)!=(c|0)&1;return h|0}function _wa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;sva(a,c,d);return}function $wa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;a=0;d=b;while(1){if((d|0)==(c|0)){e=a;break}b=(k[d>>2]|0)+(a<<4)|0;f=b&-268435456;a=(f>>>24|f)^b;d=d+4|0}return e|0}function axa(a){a=a|0;return}function bxa(a){a=a|0;Sqa(a);return}function cxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;g=r;r=r+64|0;h=g+48|0;j=g+24|0;l=g+20|0;m=g+16|0;n=g+12|0;o=g+8|0;p=g+4|0;q=g;a:do if(!(k[d+4>>2]&1)){k[l>>2]=-1;s=k[(k[a>>2]|0)+16>>2]|0;k[m>>2]=k[b>>2];k[n>>2]=k[c>>2];k[j>>2]=k[m>>2];k[h>>2]=k[n>>2];t=Gc[s&63](a,j,h,d,e,l)|0;k[b>>2]=t;switch(k[l>>2]|0){case 0:{i[f>>0]=0;break}case 1:{i[f>>0]=1;break}default:{i[f>>0]=1;k[e>>2]=4}}u=t}else{t=xva(d)|0;k[o>>2]=t;B=0;s=Xa(238,o|0,49320)|0;v=B;B=0;do if(!(v&1)){BEa(t)|0;w=xva(d)|0;k[p>>2]=w;B=0;x=Xa(238,p|0,49460)|0;y=B;B=0;if(y&1){y=Rb()|0;z=Q;BEa(w)|0;A=y;C=z;break}BEa(w)|0;B=0;wa(k[(k[x>>2]|0)+24>>2]|0,j|0,x|0);w=B;B=0;if(!(w&1)){w=j+12|0;B=0;wa(k[(k[x>>2]|0)+28>>2]|0,w|0,x|0);x=B;B=0;if(!(x&1)){k[q>>2]=k[c>>2];B=0;k[h>>2]=k[q>>2];x=ra(8,b|0,h|0,j|0,j+24|0,s|0,e|0,1)|0;z=B;B=0;if(z&1){z=Rb()|0;y=Q;Yua(j+12|0);Yua(j);A=z;C=y;break}else{i[f>>0]=(x|0)==(j|0)&1;x=k[b>>2]|0;Yua(j+12|0);Yua(j);u=x;break a}}else D=w}else D=j;w=Rb()|0;x=Q;if((j|0)==(D|0)){A=w;C=x}else{y=D;do{y=y+-12|0;Yua(y)}while((y|0)!=(j|0));A=w;C=x}}else{x=Rb()|0;w=Q;BEa(t)|0;A=x;C=w}while(0);Qb(A|0)}while(0);r=g;return u|0}function dxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=RCa(a,i,h,d,e,f)|0;r=g;return l|0}function exa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=SCa(a,i,h,d,e,f)|0;r=g;return l|0}function fxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=TCa(a,i,h,d,e,f)|0;r=g;return l|0}function gxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=UCa(a,i,h,d,e,f)|0;r=g;return l|0}function hxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=VCa(a,i,h,d,e,f)|0;r=g;return l|0}function ixa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=WCa(a,i,h,d,e,f)|0;r=g;return l|0}function jxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=XCa(a,i,h,d,e,f)|0;r=g;return l|0}function kxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=YCa(a,i,h,d,e,f)|0;r=g;return l|0}function lxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=ZCa(a,i,h,d,e,f)|0;r=g;return l|0}function mxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0;a=r;r=r+240|0;g=a;h=a+208|0;j=a+196|0;m=a+192|0;n=a+180|0;o=a+176|0;p=a+16|0;q=a+8|0;s=a+4|0;t=0;while(1){if((t|0)==3)break;k[j+(t<<2)>>2]=0;t=t+1|0}B=0;t=ya(421,d|0)|0;d=B;B=0;do if(d&1){u=Rb()|0;v=u;w=Q}else{k[m>>2]=t;B=0;u=Xa(238,m|0,49320)|0;x=B;B=0;if(!(x&1)?(B=0,cb(k[(k[u>>2]|0)+32>>2]|0,u|0,157721,157747,h|0)|0,u=B,B=0,!(u&1)):0){BEa(t)|0;u=0;while(1){if((u|0)==3)break;k[n+(u<<2)>>2]=0;u=u+1|0}if(!(i[n>>0]&1))y=10;else y=(k[n>>2]&-2)+-1|0;B=0;eb(501,n|0,y|0,0);u=B;B=0;a:do if(!(u&1)){x=n+8|0;z=n+1|0;A=(i[n>>0]&1)==0?z:k[x>>2]|0;k[o>>2]=A;k[q>>2]=p;k[s>>2]=0;C=n+4|0;D=k[b>>2]|0;E=A;b:while(1){if(D)if((k[D+12>>2]|0)==(k[D+16>>2]|0)){B=0;A=ya(k[(k[D>>2]|0)+36>>2]|0,D|0)|0;F=B;B=0;if(F&1){G=35;break}if((A|0)==-1){k[b>>2]=0;H=0}else H=D}else H=D;else H=0;A=(H|0)==0;F=k[c>>2]|0;do if(F){if((k[F+12>>2]|0)!=(k[F+16>>2]|0))if(A){I=F;break}else{J=F;K=H;L=E;break b}B=0;M=ya(k[(k[F>>2]|0)+36>>2]|0,F|0)|0;N=B;B=0;if(N&1){G=35;break b}if((M|0)!=-1)if(A){I=F;break}else{J=F;K=H;L=E;break b}else{k[c>>2]=0;G=25;break}}else G=25;while(0);if((G|0)==25){G=0;if(A){J=0;K=H;L=E;break}else I=0}F=i[n>>0]|0;M=(F&1)==0?(F&255)>>>1:k[C>>2]|0;if((k[o>>2]|0)==(E+M|0)){B=0;eb(501,n|0,M<<1|0,0);F=B;B=0;if(F&1){G=35;break}if(!(i[n>>0]&1))O=10;else O=(k[n>>2]&-2)+-1|0;B=0;eb(501,n|0,O|0,0);F=B;B=0;if(F&1){G=35;break}F=(i[n>>0]&1)==0?z:k[x>>2]|0;k[o>>2]=F+M;P=F}else P=E;F=H+12|0;M=k[F>>2]|0;N=H+16|0;if((M|0)==(k[N>>2]|0)){B=0;R=ya(k[(k[H>>2]|0)+36>>2]|0,H|0)|0;S=B;B=0;if(S&1){G=35;break}else T=R}else T=l[M>>0]|0;if(nxa(T&255,16,P,o,s,0,j,p,q,h)|0){J=I;K=H;L=P;break}M=k[F>>2]|0;if((M|0)==(k[N>>2]|0)){B=0;ya(k[(k[H>>2]|0)+40>>2]|0,H|0)|0;N=B;B=0;if(N&1){G=35;break}else{D=H;E=P;continue}}else{k[F>>2]=M+1;D=H;E=P;continue}}if((G|0)==35){E=Rb()|0;U=E;V=Q;break}B=0;eb(501,n|0,(k[o>>2]|0)-L|0,0);E=B;B=0;if((!(E&1)?(E=i[n>>0]|0,D=k[x>>2]|0,B=0,C=bb(3)|0,M=B,B=0,!(M&1)):0)?(B=0,k[g>>2]=f,M=cb(68,((E&1)==0?z:D)|0,C|0,159105,g|0)|0,C=B,B=0,!(C&1)):0){if((M|0)!=1)k[e>>2]=4;if(K)if((k[K+12>>2]|0)==(k[K+16>>2]|0)){B=0;M=ya(k[(k[K>>2]|0)+36>>2]|0,K|0)|0;C=B;B=0;if(C&1){G=36;break}if((M|0)==-1){k[b>>2]=0;W=0}else W=K}else W=K;else W=0;M=(W|0)==0;do if(J){if((k[J+12>>2]|0)==(k[J+16>>2]|0)){B=0;C=ya(k[(k[J>>2]|0)+36>>2]|0,J|0)|0;D=B;B=0;if(D&1){G=36;break a}if((C|0)==-1){k[c>>2]=0;G=61;break}}if(!M)G=62}else G=61;while(0);if((G|0)==61?M:0)G=62;if((G|0)==62)k[e>>2]=k[e>>2]|2;z=k[b>>2]|0;Yua(n);Yua(j);r=a;return z|0}else G=36}else G=36;while(0);if((G|0)==36){u=Rb()|0;U=u;V=Q}Yua(n);v=U;w=V;break}u=Rb()|0;z=Q;BEa(t)|0;v=u;w=z}while(0);Yua(j);Qb(v|0);return 0}function nxa(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;m=k[d>>2]|0;n=(m|0)==(c|0);do if(n){o=(i[l+24>>0]|0)==a<<24>>24;if(!o?(i[l+25>>0]|0)!=a<<24>>24:0){p=5;break}k[d>>2]=c+1;i[c>>0]=o?43:45;k[e>>2]=0;q=0}else p=5;while(0);a:do if((p|0)==5){o=i[g>>0]|0;if(a<<24>>24==f<<24>>24?(((o&1)==0?(o&255)>>>1:k[g+4>>2]|0)|0)!=0:0){o=k[j>>2]|0;if((o-h|0)>=160){q=0;break}r=k[e>>2]|0;k[j>>2]=o+4;k[o>>2]=r;k[e>>2]=0;q=0;break}r=l+26|0;o=l;while(1){if((o|0)==(r|0)){s=r;break}if((i[o>>0]|0)==a<<24>>24){s=o;break}o=o+1|0}o=s-l|0;if((o|0)>23)q=-1;else{switch(b|0){case 10:case 8:{if((o|0)>=(b|0)){q=-1;break a}break}case 16:{if((o|0)>=22){if(n){q=-1;break a}if((m-c|0)>=3){q=-1;break a}if((i[m+-1>>0]|0)!=48){q=-1;break a}k[e>>2]=0;r=i[157721+o>>0]|0;k[d>>2]=m+1;i[m>>0]=r;q=0;break a}break}default:{}}r=i[157721+o>>0]|0;k[d>>2]=m+1;i[m>>0]=r;k[e>>2]=(k[e>>2]|0)+1;q=0}}while(0);return q|0}function oxa(){var a=0,b=0;do if((i[26536]|0)==0?(Gb(26536)|0)!=0:0){B=0;a=Ia(52,2147483647,159108,0)|0;b=B;B=0;if(b&1){b=Rb()|0;sc(26536);Qb(b|0)}else{k[12471]=a;Eb(26536);break}}while(0);return k[12471]|0}function pxa(a){a=a|0;return}function qxa(a){a=a|0;Sqa(a);return}function rxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;g=r;r=r+64|0;h=g+48|0;j=g+24|0;l=g+20|0;m=g+16|0;n=g+12|0;o=g+8|0;p=g+4|0;q=g;a:do if(!(k[d+4>>2]&1)){k[l>>2]=-1;s=k[(k[a>>2]|0)+16>>2]|0;k[m>>2]=k[b>>2];k[n>>2]=k[c>>2];k[j>>2]=k[m>>2];k[h>>2]=k[n>>2];t=Gc[s&63](a,j,h,d,e,l)|0;k[b>>2]=t;switch(k[l>>2]|0){case 0:{i[f>>0]=0;break}case 1:{i[f>>0]=1;break}default:{i[f>>0]=1;k[e>>2]=4}}u=t}else{t=xva(d)|0;k[o>>2]=t;B=0;s=Xa(238,o|0,49312)|0;v=B;B=0;do if(!(v&1)){BEa(t)|0;w=xva(d)|0;k[p>>2]=w;B=0;x=Xa(238,p|0,49468)|0;y=B;B=0;if(y&1){y=Rb()|0;z=Q;BEa(w)|0;A=y;C=z;break}BEa(w)|0;B=0;wa(k[(k[x>>2]|0)+24>>2]|0,j|0,x|0);w=B;B=0;if(!(w&1)){w=j+12|0;B=0;wa(k[(k[x>>2]|0)+28>>2]|0,w|0,x|0);x=B;B=0;if(!(x&1)){k[q>>2]=k[c>>2];B=0;k[h>>2]=k[q>>2];x=ra(9,b|0,h|0,j|0,j+24|0,s|0,e|0,1)|0;z=B;B=0;if(z&1){z=Rb()|0;y=Q;kva(j+12|0);kva(j);A=z;C=y;break}else{i[f>>0]=(x|0)==(j|0)&1;x=k[b>>2]|0;kva(j+12|0);kva(j);u=x;break a}}else D=w}else D=j;w=Rb()|0;x=Q;if((j|0)==(D|0)){A=w;C=x}else{y=D;do{y=y+-12|0;kva(y)}while((y|0)!=(j|0));A=w;C=x}}else{x=Rb()|0;w=Q;BEa(t)|0;A=x;C=w}while(0);Qb(A|0)}while(0);r=g;return u|0}function sxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=aDa(a,i,h,d,e,f)|0;r=g;return l|0}function txa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=bDa(a,i,h,d,e,f)|0;r=g;return l|0}function uxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=cDa(a,i,h,d,e,f)|0;r=g;return l|0}function vxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=dDa(a,i,h,d,e,f)|0;r=g;return l|0}function wxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=eDa(a,i,h,d,e,f)|0;r=g;return l|0}function xxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=fDa(a,i,h,d,e,f)|0;r=g;return l|0}function yxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=gDa(a,i,h,d,e,f)|0;r=g;return l|0}function zxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=hDa(a,i,h,d,e,f)|0;r=g;return l|0}function Axa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=iDa(a,i,h,d,e,f)|0;r=g;return l|0}function Bxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;a=r;r=r+320|0;g=a;h=a+208|0;j=a+196|0;l=a+192|0;m=a+180|0;n=a+176|0;o=a+16|0;p=a+8|0;q=a+4|0;s=0;while(1){if((s|0)==3)break;k[j+(s<<2)>>2]=0;s=s+1|0}B=0;s=ya(421,d|0)|0;d=B;B=0;do if(d&1){t=Rb()|0;u=t;v=Q}else{k[l>>2]=s;B=0;t=Xa(238,l|0,49312)|0;w=B;B=0;if(!(w&1)?(B=0,cb(k[(k[t>>2]|0)+48>>2]|0,t|0,157721,157747,h|0)|0,t=B,B=0,!(t&1)):0){BEa(s)|0;t=0;while(1){if((t|0)==3)break;k[m+(t<<2)>>2]=0;t=t+1|0}if(!(i[m>>0]&1))x=10;else x=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,x|0,0);t=B;B=0;a:do if(!(t&1)){w=m+8|0;y=m+1|0;z=(i[m>>0]&1)==0?y:k[w>>2]|0;k[n>>2]=z;k[p>>2]=o;k[q>>2]=0;A=m+4|0;C=k[b>>2]|0;D=z;b:while(1){if(C){z=k[C+12>>2]|0;if((z|0)==(k[C+16>>2]|0)){B=0;E=ya(k[(k[C>>2]|0)+36>>2]|0,C|0)|0;F=B;B=0;if(F&1){G=36;break}else H=E}else H=k[z>>2]|0;if((H|0)==-1){k[b>>2]=0;I=0;J=1}else{I=C;J=0}}else{I=0;J=1}z=k[c>>2]|0;do if(z){E=k[z+12>>2]|0;if((E|0)==(k[z+16>>2]|0)){B=0;F=ya(k[(k[z>>2]|0)+36>>2]|0,z|0)|0;K=B;B=0;if(K&1){G=36;break b}else L=F}else L=k[E>>2]|0;if((L|0)!=-1)if(J){M=z;break}else{N=z;O=I;P=D;break b}else{k[c>>2]=0;G=26;break}}else G=26;while(0);if((G|0)==26){G=0;if(J){N=0;O=I;P=D;break}else M=0}z=i[m>>0]|0;E=(z&1)==0?(z&255)>>>1:k[A>>2]|0;if((k[n>>2]|0)==(D+E|0)){B=0;eb(501,m|0,E<<1|0,0);z=B;B=0;if(z&1){G=36;break}if(!(i[m>>0]&1))R=10;else R=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,R|0,0);z=B;B=0;if(z&1){G=36;break}z=(i[m>>0]&1)==0?y:k[w>>2]|0;k[n>>2]=z+E;S=z}else S=D;z=I+12|0;E=k[z>>2]|0;F=I+16|0;if((E|0)==(k[F>>2]|0)){B=0;K=ya(k[(k[I>>2]|0)+36>>2]|0,I|0)|0;T=B;B=0;if(T&1){G=36;break}else U=K}else U=k[E>>2]|0;if(Cxa(U,16,S,n,q,0,j,o,p,h)|0){N=M;O=I;P=S;break}E=k[z>>2]|0;if((E|0)==(k[F>>2]|0)){B=0;ya(k[(k[I>>2]|0)+40>>2]|0,I|0)|0;F=B;B=0;if(F&1){G=36;break}else{C=I;D=S;continue}}else{k[z>>2]=E+4;C=I;D=S;continue}}if((G|0)==36){D=Rb()|0;V=D;W=Q;break}B=0;eb(501,m|0,(k[n>>2]|0)-P|0,0);D=B;B=0;if((!(D&1)?(D=i[m>>0]|0,C=k[w>>2]|0,B=0,A=bb(3)|0,E=B,B=0,!(E&1)):0)?(B=0,k[g>>2]=f,E=cb(68,((D&1)==0?y:C)|0,A|0,159105,g|0)|0,A=B,B=0,!(A&1)):0){if((E|0)!=1)k[e>>2]=4;if(O){E=k[O+12>>2]|0;if((E|0)==(k[O+16>>2]|0)){B=0;A=ya(k[(k[O>>2]|0)+36>>2]|0,O|0)|0;C=B;B=0;if(C&1){G=37;break}else X=A}else X=k[E>>2]|0;if((X|0)==-1){k[b>>2]=0;Y=1}else Y=0}else Y=1;do if(N){E=k[N+12>>2]|0;if((E|0)==(k[N+16>>2]|0)){B=0;A=ya(k[(k[N>>2]|0)+36>>2]|0,N|0)|0;C=B;B=0;if(C&1){G=37;break a}else Z=A}else Z=k[E>>2]|0;if((Z|0)!=-1)if(Y)break;else{G=65;break}else{k[c>>2]=0;G=63;break}}else G=63;while(0);if((G|0)==63?Y:0)G=65;if((G|0)==65)k[e>>2]=k[e>>2]|2;y=k[b>>2]|0;Yua(m);Yua(j);r=a;return y|0}else G=37}else G=37;while(0);if((G|0)==37){t=Rb()|0;V=t;W=Q}Yua(m);u=V;v=W;break}t=Rb()|0;y=Q;BEa(s)|0;u=t;v=y}while(0);Yua(j);Qb(u|0);return 0}function Cxa(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;m=k[d>>2]|0;n=(m|0)==(c|0);do if(n){o=(k[l+96>>2]|0)==(a|0);if(!o?(k[l+100>>2]|0)!=(a|0):0){p=5;break}k[d>>2]=c+1;i[c>>0]=o?43:45;k[e>>2]=0;q=0}else p=5;while(0);a:do if((p|0)==5){o=i[g>>0]|0;if((a|0)==(f|0)?(((o&1)==0?(o&255)>>>1:k[g+4>>2]|0)|0)!=0:0){o=k[j>>2]|0;if((o-h|0)>=160){q=0;break}r=k[e>>2]|0;k[j>>2]=o+4;k[o>>2]=r;k[e>>2]=0;q=0;break}r=l+104|0;o=l;while(1){if((o|0)==(r|0)){s=r;break}if((k[o>>2]|0)==(a|0)){s=o;break}o=o+4|0}o=s-l|0;r=o>>2;if((o|0)>92)q=-1;else{switch(b|0){case 10:case 8:{if((r|0)>=(b|0)){q=-1;break a}break}case 16:{if((o|0)>=88){if(n){q=-1;break a}if((m-c|0)>=3){q=-1;break a}if((i[m+-1>>0]|0)!=48){q=-1;break a}k[e>>2]=0;o=i[157721+r>>0]|0;k[d>>2]=m+1;i[m>>0]=o;q=0;break a}break}default:{}}o=i[157721+r>>0]|0;k[d>>2]=m+1;i[m>>0]=o;k[e>>2]=(k[e>>2]|0)+1;q=0}}while(0);return q|0}function Dxa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=r;r=r+16|0;f=e;g=xva(b)|0;k[f>>2]=g;B=0;b=Xa(238,f|0,49320)|0;h=B;B=0;if((((!(h&1)?(B=0,cb(k[(k[b>>2]|0)+32>>2]|0,b|0,157721,157747,c|0)|0,c=B,B=0,!(c&1)):0)?(B=0,c=Xa(238,f|0,49460)|0,f=B,B=0,!(f&1)):0)?(B=0,f=ya(k[(k[c>>2]|0)+16>>2]|0,c|0)|0,b=B,B=0,!(b&1)):0)?(i[d>>0]=f,B=0,wa(k[(k[c>>2]|0)+20>>2]|0,a|0,c|0),c=B,B=0,!(c&1)):0){BEa(g)|0;r=e;return}e=Rb()|0;BEa(g)|0;Qb(e|0)}function Exa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=r;r=r+16|0;g=f;h=xva(b)|0;k[g>>2]=h;B=0;b=Xa(238,g|0,49320)|0;j=B;B=0;if(((((!(j&1)?(B=0,cb(k[(k[b>>2]|0)+32>>2]|0,b|0,157721,157753,c|0)|0,c=B,B=0,!(c&1)):0)?(B=0,c=Xa(238,g|0,49460)|0,g=B,B=0,!(g&1)):0)?(B=0,g=ya(k[(k[c>>2]|0)+12>>2]|0,c|0)|0,b=B,B=0,!(b&1)):0)?(i[d>>0]=g,B=0,g=ya(k[(k[c>>2]|0)+16>>2]|0,c|0)|0,d=B,B=0,!(d&1)):0)?(i[e>>0]=g,B=0,wa(k[(k[c>>2]|0)+20>>2]|0,a|0,c|0),c=B,B=0,!(c&1)):0){BEa(h)|0;r=f;return}f=Rb()|0;BEa(h)|0;Qb(f|0)}function Fxa(a,b,c,d,e,f,g,h,j,m,n,o){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0;a:do if(a<<24>>24==f<<24>>24)if(i[b>>0]|0){i[b>>0]=0;p=k[e>>2]|0;k[e>>2]=p+1;i[p>>0]=46;p=i[h>>0]|0;if((((p&1)==0?(p&255)>>>1:k[h+4>>2]|0)|0)!=0?(p=k[m>>2]|0,(p-j|0)<160):0){q=k[n>>2]|0;k[m>>2]=p+4;k[p>>2]=q;r=0}else r=0}else r=-1;else{if(a<<24>>24==g<<24>>24?(q=i[h>>0]|0,(((q&1)==0?(q&255)>>>1:k[h+4>>2]|0)|0)!=0):0){if(!(i[b>>0]|0)){r=-1;break}q=k[m>>2]|0;if((q-j|0)>=160){r=0;break}p=k[n>>2]|0;k[m>>2]=q+4;k[q>>2]=p;k[n>>2]=0;r=0;break}p=o+32|0;q=o;while(1){if((q|0)==(p|0)){s=p;break}if((i[q>>0]|0)==a<<24>>24){s=q;break}q=q+1|0}q=s-o|0;if((q|0)>31)r=-1;else{p=i[157721+q>>0]|0;switch(q|0){case 24:case 25:{t=k[e>>2]|0;if((t|0)!=(d|0)?(l[t+-1>>0]&95|0)!=(l[c>>0]&127|0):0){r=-1;break a}k[e>>2]=t+1;i[t>>0]=p;r=0;break a;break}case 23:case 22:{i[c>>0]=80;t=k[e>>2]|0;k[e>>2]=t+1;i[t>>0]=p;r=0;break a;break}default:{t=p&95;if((((t|0)==(i[c>>0]|0)?(i[c>>0]=t|128,(i[b>>0]|0)!=0):0)?(i[b>>0]=0,t=i[h>>0]|0,(((t&1)==0?(t&255)>>>1:k[h+4>>2]|0)|0)!=0):0)?(t=k[m>>2]|0,(t-j|0)<160):0){u=k[n>>2]|0;k[m>>2]=t+4;k[t>>2]=u}u=k[e>>2]|0;k[e>>2]=u+1;i[u>>0]=p;if((q|0)>21){r=0;break a}k[n>>2]=(k[n>>2]|0)+1;r=0;break a}}}}while(0);return r|0}function Gxa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=r;r=r+16|0;f=e;g=xva(b)|0;k[f>>2]=g;B=0;b=Xa(238,f|0,49312)|0;h=B;B=0;if((((!(h&1)?(B=0,cb(k[(k[b>>2]|0)+48>>2]|0,b|0,157721,157747,c|0)|0,c=B,B=0,!(c&1)):0)?(B=0,c=Xa(238,f|0,49468)|0,f=B,B=0,!(f&1)):0)?(B=0,f=ya(k[(k[c>>2]|0)+16>>2]|0,c|0)|0,b=B,B=0,!(b&1)):0)?(k[d>>2]=f,B=0,wa(k[(k[c>>2]|0)+20>>2]|0,a|0,c|0),c=B,B=0,!(c&1)):0){BEa(g)|0;r=e;return}e=Rb()|0;BEa(g)|0;Qb(e|0)}function Hxa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=r;r=r+16|0;g=f;h=xva(b)|0;k[g>>2]=h;B=0;b=Xa(238,g|0,49312)|0;i=B;B=0;if(((((!(i&1)?(B=0,cb(k[(k[b>>2]|0)+48>>2]|0,b|0,157721,157753,c|0)|0,c=B,B=0,!(c&1)):0)?(B=0,c=Xa(238,g|0,49468)|0,g=B,B=0,!(g&1)):0)?(B=0,g=ya(k[(k[c>>2]|0)+12>>2]|0,c|0)|0,b=B,B=0,!(b&1)):0)?(k[d>>2]=g,B=0,g=ya(k[(k[c>>2]|0)+16>>2]|0,c|0)|0,d=B,B=0,!(d&1)):0)?(k[e>>2]=g,B=0,wa(k[(k[c>>2]|0)+20>>2]|0,a|0,c|0),c=B,B=0,!(c&1)):0){BEa(h)|0;r=f;return}f=Rb()|0;BEa(h)|0;Qb(f|0)}function Ixa(a,b,c,d,e,f,g,h,j,m,n,o){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0;a:do if((a|0)==(f|0))if(i[b>>0]|0){i[b>>0]=0;p=k[e>>2]|0;k[e>>2]=p+1;i[p>>0]=46;p=i[h>>0]|0;if((((p&1)==0?(p&255)>>>1:k[h+4>>2]|0)|0)!=0?(p=k[m>>2]|0,(p-j|0)<160):0){q=k[n>>2]|0;k[m>>2]=p+4;k[p>>2]=q;r=0}else r=0}else r=-1;else{if((a|0)==(g|0)?(q=i[h>>0]|0,(((q&1)==0?(q&255)>>>1:k[h+4>>2]|0)|0)!=0):0){if(!(i[b>>0]|0)){r=-1;break}q=k[m>>2]|0;if((q-j|0)>=160){r=0;break}p=k[n>>2]|0;k[m>>2]=q+4;k[q>>2]=p;k[n>>2]=0;r=0;break}p=o+128|0;q=o;while(1){if((q|0)==(p|0)){s=p;break}if((k[q>>2]|0)==(a|0)){s=q;break}q=q+4|0}q=s-o|0;p=q>>2;if((q|0)<=124){t=i[157721+p>>0]|0;switch(p|0){case 24:case 25:{p=k[e>>2]|0;if((p|0)!=(d|0)?(l[p+-1>>0]&95|0)!=(l[c>>0]&127|0):0){r=-1;break a}k[e>>2]=p+1;i[p>>0]=t;r=0;break a;break}case 23:case 22:{i[c>>0]=80;break}default:{p=t&95;if((((p|0)==(i[c>>0]|0)?(i[c>>0]=p|128,(i[b>>0]|0)!=0):0)?(i[b>>0]=0,p=i[h>>0]|0,(((p&1)==0?(p&255)>>>1:k[h+4>>2]|0)|0)!=0):0)?(p=k[m>>2]|0,(p-j|0)<160):0){u=k[n>>2]|0;k[m>>2]=p+4;k[p>>2]=u}}}u=k[e>>2]|0;k[e>>2]=u+1;i[u>>0]=t;if((q|0)>84)r=0;else{k[n>>2]=(k[n>>2]|0)+1;r=0}}else r=-1}while(0);return r|0}function Jxa(a){a=a|0;return}function Kxa(a){a=a|0;Sqa(a);return}function Lxa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;f=r;r=r+32|0;g=f+8|0;h=f+4|0;j=f;a:do if(!(k[c+4>>2]&1)){l=k[(k[a>>2]|0)+24>>2]|0;k[h>>2]=k[b>>2];k[g>>2]=k[h>>2];m=fd[l&31](a,g,c,d,e&1)|0}else{l=xva(c)|0;k[j>>2]=l;B=0;n=Xa(238,j|0,49460)|0;o=B;B=0;do if(!(o&1)){BEa(l)|0;p=k[n>>2]|0;if(e)Fc[k[p+24>>2]&1023](g,n);else Fc[k[p+28>>2]&1023](g,n);p=i[g>>0]|0;q=g+1|0;s=g+8|0;t=k[s>>2]|0;u=g+4|0;v=p;w=t;x=(p&1)==0?q:t;b:while(1){t=(v&1)==0;if((x|0)==((t?q:w)+(t?(v&255)>>>1:k[u>>2]|0)|0)){y=9;break}t=i[x>>0]|0;p=k[b>>2]|0;do if(p){z=p+24|0;A=k[z>>2]|0;if((A|0)!=(k[p+28>>2]|0)){k[z>>2]=A+1;i[A>>0]=t;break}B=0;A=Xa(k[(k[p>>2]|0)+52>>2]|0,p|0,t&255|0)|0;z=B;B=0;if(z&1){y=18;break b}if((A|0)==-1)k[b>>2]=0}while(0);v=i[g>>0]|0;w=k[s>>2]|0;x=x+1|0}if((y|0)==9){x=k[b>>2]|0;Yua(g);m=x;break a}else if((y|0)==18){x=Rb()|0;s=Q;Yua(g);C=s;D=x;break}}else{x=Rb()|0;s=Q;BEa(l)|0;C=s;D=x}while(0);Qb(D|0)}while(0);r=f;return m|0}function Mxa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;a=r;r=r+64|0;f=a;g=a+56|0;h=a+44|0;j=a+20|0;l=a+16|0;m=a+8|0;n=a+12|0;o=a+4|0;i[g>>0]=i[159110]|0;i[g+1>>0]=i[159111]|0;i[g+2>>0]=i[159112]|0;i[g+3>>0]=i[159113]|0;i[g+4>>0]=i[159114]|0;i[g+5>>0]=i[159115]|0;Nxa(g+1|0,159116,1,k[c+4>>2]|0);p=oxa()|0;k[f>>2]=e;e=h+(jDa(h,12,p,g,f)|0)|0;g=Oxa(h,e,c)|0;p=xva(c)|0;k[n>>2]=p;B=0;Ta(33,h|0,g|0,e|0,j|0,l|0,m|0,n|0);n=B;B=0;if(n&1){n=Rb()|0;BEa(p)|0;Qb(n|0)}else{BEa(p)|0;k[o>>2]=k[b>>2];b=k[l>>2]|0;l=k[m>>2]|0;k[f>>2]=k[o>>2];o=Qd(f,j,b,l,c,d)|0;r=a;return o|0}return 0}function Nxa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;if(!(d&2048))e=a;else{i[a>>0]=43;e=a+1|0}if(!(d&512)){f=b;g=e}else{i[e>>0]=35;f=b;g=e+1|0}while(1){e=i[f>>0]|0;if(!(e<<24>>24)){h=g;break}i[g>>0]=e;f=f+1|0;g=g+1|0}a:do switch(d&74|0){case 64:{i[h>>0]=111;break}case 8:{if(!(d&16384)){i[h>>0]=120;break a}else{i[h>>0]=88;break a}break}default:if(c){i[h>>0]=100;break a}else{i[h>>0]=117;break a}}while(0);return}function Oxa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;a:do switch(k[c+4>>2]&176|0){case 16:{d=i[a>>0]|0;switch(d<<24>>24){case 43:case 45:{e=a+1|0;break a;break}default:{}}if((b-a|0)>1&d<<24>>24==48){switch(i[a+1>>0]|0){case 88:case 120:break;default:{f=7;break a}}e=a+2|0}else f=7;break}case 32:{e=b;break}default:f=7}while(0);if((f|0)==7)e=a;return e|0}function Pxa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;h=r;r=r+16|0;j=h;l=$Aa(g,49320)|0;m=$Aa(g,49460)|0;Fc[k[(k[m>>2]|0)+20>>2]&1023](j,m);g=i[j>>0]|0;n=j+4|0;a:do if(!(((g&1)==0?(g&255)>>>1:k[n>>2]|0)|0)){B=0;cb(k[(k[l>>2]|0)+32>>2]|0,l|0,a|0,c|0,d|0)|0;o=B;B=0;if(o&1)p=5;else{o=a;q=d+(c-o)|0;k[f>>2]=q;s=o;t=q;p=30}}else{k[f>>2]=d;q=i[a>>0]|0;switch(q<<24>>24){case 43:case 45:{B=0;o=Xa(k[(k[l>>2]|0)+28>>2]|0,l|0,q|0)|0;q=B;B=0;if(q&1){p=5;break a}q=k[f>>2]|0;k[f>>2]=q+1;i[q>>0]=o;u=a+1|0;break}default:u=a}b:do if((c-u|0)>1?(i[u>>0]|0)==48:0){o=u+1|0;switch(i[o>>0]|0){case 88:case 120:break;default:{v=u;break b}}B=0;q=Xa(k[(k[l>>2]|0)+28>>2]|0,l|0,48)|0;w=B;B=0;if(w&1){p=5;break a}w=k[f>>2]|0;k[f>>2]=w+1;i[w>>0]=q;B=0;q=Xa(k[(k[l>>2]|0)+28>>2]|0,l|0,i[o>>0]|0)|0;o=B;B=0;if(o&1){p=5;break a}o=k[f>>2]|0;k[f>>2]=o+1;i[o>>0]=q;v=u+2|0}else v=u;while(0);c:do if((v|0)!=(c|0)){q=c;o=v;while(1){w=q+-1|0;if(o>>>0>=w>>>0)break c;x=i[o>>0]|0;i[o>>0]=i[w>>0]|0;i[w>>0]=x;q=w;o=o+1|0}}while(0);B=0;o=ya(k[(k[m>>2]|0)+16>>2]|0,m|0)|0;q=B;B=0;if(!(q&1)){q=j+8|0;w=j+1|0;x=0;y=0;z=v;while(1){if(z>>>0>=c>>>0)break;A=i[((i[j>>0]&1)==0?w:k[q>>2]|0)+y>>0]|0;if(A<<24>>24!=0&(x|0)==(A<<24>>24|0)){A=k[f>>2]|0;k[f>>2]=A+1;i[A>>0]=o;A=i[j>>0]|0;C=0;D=(y>>>0<(((A&1)==0?(A&255)>>>1:k[n>>2]|0)+-1|0)>>>0&1)+y|0}else{C=x;D=y}B=0;A=Xa(k[(k[l>>2]|0)+28>>2]|0,l|0,i[z>>0]|0)|0;E=B;B=0;if(E&1){p=4;break}E=k[f>>2]|0;k[f>>2]=E+1;i[E>>0]=A;x=C+1|0;y=D;z=z+1|0}if((p|0)==4){z=Rb()|0;F=z;G=Q;break}z=a;y=d+(v-z)|0;x=k[f>>2]|0;if((y|0)==(x|0)){s=z;t=y;p=30}else{o=x;x=y;while(1){y=o+-1|0;if(x>>>0>=y>>>0)break;q=i[x>>0]|0;i[x>>0]=i[y>>0]|0;i[y>>0]=q;o=y;x=x+1|0}s=z;t=k[f>>2]|0;p=30}}else p=5}while(0);if((p|0)==5){f=Rb()|0;F=f;G=Q}else if((p|0)==30){k[e>>2]=(b|0)==(c|0)?t:d+(b-s)|0;Yua(j);r=h;return}Yua(j);Qb(F|0)}function Qxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;a=r;r=r+96|0;g=a+8|0;h=a;i=a+74|0;j=a+32|0;l=a+28|0;m=a+20|0;n=a+24|0;o=a+16|0;p=h;k[p>>2]=37;k[p+4>>2]=0;Nxa(h+1|0,159118,1,k[c+4>>2]|0);p=oxa()|0;q=g;k[q>>2]=e;k[q+4>>2]=f;f=i+(jDa(i,22,p,h,g)|0)|0;h=Oxa(i,f,c)|0;p=xva(c)|0;k[n>>2]=p;B=0;Ta(33,i|0,h|0,f|0,j|0,l|0,m|0,n|0);n=B;B=0;if(n&1){n=Rb()|0;BEa(p)|0;Qb(n|0)}else{BEa(p)|0;k[o>>2]=k[b>>2];b=k[l>>2]|0;l=k[m>>2]|0;k[g>>2]=k[o>>2];o=Qd(g,j,b,l,c,d)|0;r=a;return o|0}return 0}function Rxa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;a=r;r=r+64|0;f=a;g=a+56|0;h=a+44|0;j=a+20|0;l=a+16|0;m=a+8|0;n=a+12|0;o=a+4|0;i[g>>0]=i[159110]|0;i[g+1>>0]=i[159111]|0;i[g+2>>0]=i[159112]|0;i[g+3>>0]=i[159113]|0;i[g+4>>0]=i[159114]|0;i[g+5>>0]=i[159115]|0;Nxa(g+1|0,159116,0,k[c+4>>2]|0);p=oxa()|0;k[f>>2]=e;e=h+(jDa(h,12,p,g,f)|0)|0;g=Oxa(h,e,c)|0;p=xva(c)|0;k[n>>2]=p;B=0;Ta(33,h|0,g|0,e|0,j|0,l|0,m|0,n|0);n=B;B=0;if(n&1){n=Rb()|0;BEa(p)|0;Qb(n|0)}else{BEa(p)|0;k[o>>2]=k[b>>2];b=k[l>>2]|0;l=k[m>>2]|0;k[f>>2]=k[o>>2];o=Qd(f,j,b,l,c,d)|0;r=a;return o|0}return 0}function Sxa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;a=r;r=r+112|0;g=a+8|0;h=a;i=a+75|0;j=a+32|0;l=a+28|0;m=a+20|0;n=a+24|0;o=a+16|0;p=h;k[p>>2]=37;k[p+4>>2]=0;Nxa(h+1|0,159118,0,k[c+4>>2]|0);p=oxa()|0;q=g;k[q>>2]=e;k[q+4>>2]=f;f=i+(jDa(i,23,p,h,g)|0)|0;h=Oxa(i,f,c)|0;p=xva(c)|0;k[n>>2]=p;B=0;Ta(33,i|0,h|0,f|0,j|0,l|0,m|0,n|0);n=B;B=0;if(n&1){n=Rb()|0;BEa(p)|0;Qb(n|0)}else{BEa(p)|0;k[o>>2]=k[b>>2];b=k[l>>2]|0;l=k[m>>2]|0;k[g>>2]=k[o>>2];o=Qd(g,j,b,l,c,d)|0;r=a;return o|0}return 0}function Txa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;a=r;r=r+176|0;f=a+84|0;g=a+48|0;h=a+32|0;i=a+24|0;j=a+8|0;l=a;m=a+146|0;n=a+80|0;o=a+88|0;q=a+76|0;s=a+72|0;t=a+68|0;u=a+64|0;v=l;k[v>>2]=37;k[v+4>>2]=0;v=Uxa(l+1|0,159121,k[c+4>>2]|0)|0;k[n>>2]=m;w=oxa()|0;if(v){k[j>>2]=k[c+8>>2];p[j+8>>3]=e;x=jDa(m,30,w,l,j)|0}else{p[i>>3]=e;x=jDa(m,30,w,l,i)|0}do if((x|0)>29){B=0;i=bb(3)|0;w=B;B=0;j=w&1;if(v){if(!j?(B=0,k[h>>2]=k[c+8>>2],p[h+8>>3]=e,w=cb(69,n|0,i|0,l|0,h|0)|0,y=B,B=0,!(y&1)):0){z=w;A=12}}else if(!j?(B=0,k[g>>2]=k[c+8>>2],p[g+8>>3]=e,j=cb(69,n|0,i|0,l|0,g|0)|0,i=B,B=0,!(i&1)):0){z=j;A=12}if((A|0)==12){j=k[n>>2]|0;if(j){C=j;D=j;E=z;A=16;break}B=0;fb(7);j=B;B=0;if(!(j&1)){j=k[n>>2]|0;C=j;D=j;E=z;A=16;break}}j=Rb()|0;F=j;G=Q}else{C=k[n>>2]|0;D=0;E=x;A=16}while(0);if((A|0)==16){x=C+E|0;z=Oxa(C,x,c)|0;do if((C|0)==(m|0)){H=m;I=o;J=0;A=22}else{g=lua(E<<1)|0;if(!g){B=0;fb(7);l=B;B=0;if(l&1){K=0;A=20;break}L=k[n>>2]|0}else L=C;H=L;I=g;J=g;A=22}while(0);do if((A|0)==22){B=0;L=ya(421,c|0)|0;C=B;B=0;if(!(C&1)){k[t>>2]=L;B=0;Ta(34,H|0,z|0,x|0,I|0,q|0,s|0,t|0);C=B;B=0;if(C&1){C=Rb()|0;n=Q;BEa(L)|0;M=C;N=n;O=J;break}BEa(L)|0;k[u>>2]=k[b>>2];L=k[q>>2]|0;n=k[s>>2]|0;B=0;k[f>>2]=k[u>>2];C=xa(39,f|0,I|0,L|0,n|0,c|0,d|0)|0;n=B;B=0;if(!(n&1)){k[b>>2]=C;if(J)mua(J);if(D)mua(D);r=a;return C|0}else{K=J;A=20}}else{K=J;A=20}}while(0);if((A|0)==20){A=Rb()|0;M=A;N=Q;O=K}if(O)mua(O);if(!D){F=M;G=N}else{mua(D);F=M;G=N}}Qb(F|0);return 0}function Uxa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;if(!(c&2048))d=a;else{i[a>>0]=43;d=a+1|0}if(!(c&1024))e=d;else{i[d>>0]=35;e=d+1|0}d=c&260;a=c>>>14;c=(d|0)==260;if(c){f=e;g=0}else{i[e>>0]=46;i[e+1>>0]=42;f=e+2|0;g=1}e=b;b=f;while(1){f=i[e>>0]|0;if(!(f<<24>>24)){h=b;break}i[b>>0]=f;e=e+1|0;b=b+1|0}a:do switch(d|0){case 4:{if(!(a&1)){i[h>>0]=102;break a}else{i[h>>0]=70;break a}break}case 256:{if(!(a&1)){i[h>>0]=101;break a}else{i[h>>0]=69;break a}break}default:{b=(a&1|0)!=0;if(c)if(b){i[h>>0]=65;break a}else{i[h>>0]=97;break a}else if(b){i[h>>0]=71;break a}else{i[h>>0]=103;break a}}}while(0);return g|0}function Vxa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;h=r;r=r+16|0;j=h;l=$Aa(g,49320)|0;m=$Aa(g,49460)|0;Fc[k[(k[m>>2]|0)+20>>2]&1023](j,m);k[f>>2]=d;g=i[a>>0]|0;switch(g<<24>>24){case 43:case 45:{B=0;n=Xa(k[(k[l>>2]|0)+28>>2]|0,l|0,g|0)|0;g=B;B=0;if(g&1)o=8;else{g=k[f>>2]|0;k[f>>2]=g+1;i[g>>0]=n;p=a+1|0;o=10}break}default:{p=a;o=10}}a:do if((o|0)==10){n=c;b:do if((n-p|0)>1?(i[p>>0]|0)==48:0){g=p+1|0;switch(i[g>>0]|0){case 88:case 120:break;default:{q=p;o=21;break b}}B=0;s=Xa(k[(k[l>>2]|0)+28>>2]|0,l|0,48)|0;t=B;B=0;if(t&1){o=8;break a}t=k[f>>2]|0;k[f>>2]=t+1;i[t>>0]=s;s=p+2|0;B=0;t=Xa(k[(k[l>>2]|0)+28>>2]|0,l|0,i[g>>0]|0)|0;g=B;B=0;if(g&1){o=8;break a}g=k[f>>2]|0;k[f>>2]=g+1;i[g>>0]=t;t=s;while(1){if(t>>>0>=c>>>0){u=s;v=t;break b}g=i[t>>0]|0;B=0;w=bb(3)|0;x=B;B=0;if(x&1)break;B=0;x=Xa(261,g<<24>>24|0,w|0)|0;w=B;B=0;if(w&1)break;if(!x){u=s;v=t;break b}t=t+1|0}t=Rb()|0;y=t;z=Q;break a}else{q=p;o=21}while(0);c:do if((o|0)==21){while(1){o=0;if(q>>>0>=c>>>0){u=p;v=q;break c}t=i[q>>0]|0;B=0;s=bb(3)|0;x=B;B=0;if(x&1)break;B=0;x=Xa(262,t<<24>>24|0,s|0)|0;s=B;B=0;if(s&1)break;if(!x){u=p;v=q;break c}q=q+1|0;o=21}x=Rb()|0;y=x;z=Q;break a}while(0);x=i[j>>0]|0;s=j+4|0;d:do if(((x&1)==0?(x&255)>>>1:k[s>>2]|0)|0){e:do if((u|0)!=(v|0)){t=v;w=u;while(1){g=t+-1|0;if(w>>>0>=g>>>0)break e;A=i[w>>0]|0;i[w>>0]=i[g>>0]|0;i[g>>0]=A;t=g;w=w+1|0}}while(0);B=0;w=ya(k[(k[m>>2]|0)+16>>2]|0,m|0)|0;t=B;B=0;if(t&1){o=8;break a}t=j+8|0;g=j+1|0;A=0;C=0;D=u;while(1){if(D>>>0>=v>>>0)break;E=i[((i[j>>0]&1)==0?g:k[t>>2]|0)+C>>0]|0;if(E<<24>>24>0&(A|0)==(E<<24>>24|0)){E=k[f>>2]|0;k[f>>2]=E+1;i[E>>0]=w;E=i[j>>0]|0;F=0;G=(C>>>0<(((E&1)==0?(E&255)>>>1:k[s>>2]|0)+-1|0)>>>0&1)+C|0}else{F=A;G=C}B=0;E=Xa(k[(k[l>>2]|0)+28>>2]|0,l|0,i[D>>0]|0)|0;H=B;B=0;if(H&1){o=5;break}H=k[f>>2]|0;k[f>>2]=H+1;i[H>>0]=E;A=F+1|0;C=G;D=D+1|0}if((o|0)==5){D=Rb()|0;y=D;z=Q;break a}D=d+(u-a)|0;C=k[f>>2]|0;if((D|0)==(C|0))I=l;else{A=C;C=D;while(1){D=A+-1|0;if(C>>>0>=D>>>0){I=l;break d}w=i[C>>0]|0;i[C>>0]=i[D>>0]|0;i[D>>0]=w;A=D;C=C+1|0}}}else{B=0;cb(k[(k[l>>2]|0)+32>>2]|0,l|0,u|0,v|0,k[f>>2]|0)|0;C=B;B=0;if(C&1){o=8;break a}k[f>>2]=(k[f>>2]|0)+(v-u);I=l}while(0);s=v;while(1){if(s>>>0>=c>>>0){J=s;break}x=i[s>>0]|0;if(x<<24>>24==46){K=s;o=45;break}B=0;C=Xa(k[(k[I>>2]|0)+28>>2]|0,l|0,x|0)|0;x=B;B=0;if(x&1){o=4;break}x=k[f>>2]|0;k[f>>2]=x+1;i[x>>0]=C;s=s+1|0}if((o|0)==4){s=Rb()|0;y=s;z=Q;break}if((o|0)==45){B=0;s=ya(k[(k[m>>2]|0)+12>>2]|0,m|0)|0;C=B;B=0;if(C&1){o=8;break}C=k[f>>2]|0;k[f>>2]=C+1;i[C>>0]=s;J=K+1|0}B=0;cb(k[(k[l>>2]|0)+32>>2]|0,l|0,J|0,c|0,k[f>>2]|0)|0;s=B;B=0;if(s&1)o=8;else{s=(k[f>>2]|0)+(n-J)|0;k[f>>2]=s;k[e>>2]=(b|0)==(c|0)?s:d+(b-a)|0;Yua(j);r=h;return}}while(0);if((o|0)==8){o=Rb()|0;y=o;z=Q}Yua(j);Qb(y|0)}function Wxa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;a=r;r=r+176|0;f=a+76|0;g=a+48|0;h=a+32|0;i=a+24|0;j=a+8|0;l=a;m=a+138|0;n=a+72|0;o=a+80|0;q=a+68|0;s=a+64|0;t=a+60|0;u=a+56|0;v=l;k[v>>2]=37;k[v+4>>2]=0;v=Uxa(l+1|0,159122,k[c+4>>2]|0)|0;k[n>>2]=m;w=oxa()|0;if(v){k[j>>2]=k[c+8>>2];p[j+8>>3]=e;x=jDa(m,30,w,l,j)|0}else{p[i>>3]=e;x=jDa(m,30,w,l,i)|0}do if((x|0)>29){B=0;i=bb(3)|0;w=B;B=0;j=w&1;if(v){if(!j?(B=0,k[h>>2]=k[c+8>>2],p[h+8>>3]=e,w=cb(69,n|0,i|0,l|0,h|0)|0,y=B,B=0,!(y&1)):0){z=w;A=12}}else if(!j?(B=0,p[g>>3]=e,j=cb(69,n|0,i|0,l|0,g|0)|0,i=B,B=0,!(i&1)):0){z=j;A=12}if((A|0)==12){j=k[n>>2]|0;if(j){C=j;D=j;E=z;A=16;break}B=0;fb(7);j=B;B=0;if(!(j&1)){j=k[n>>2]|0;C=j;D=j;E=z;A=16;break}}j=Rb()|0;F=j;G=Q}else{C=k[n>>2]|0;D=0;E=x;A=16}while(0);if((A|0)==16){x=C+E|0;z=Oxa(C,x,c)|0;do if((C|0)==(m|0)){H=m;I=o;J=0;A=22}else{g=lua(E<<1)|0;if(!g){B=0;fb(7);l=B;B=0;if(l&1){K=0;A=20;break}L=k[n>>2]|0}else L=C;H=L;I=g;J=g;A=22}while(0);do if((A|0)==22){B=0;L=ya(421,c|0)|0;C=B;B=0;if(!(C&1)){k[t>>2]=L;B=0;Ta(34,H|0,z|0,x|0,I|0,q|0,s|0,t|0);C=B;B=0;if(C&1){C=Rb()|0;n=Q;BEa(L)|0;M=C;N=n;O=J;break}BEa(L)|0;k[u>>2]=k[b>>2];L=k[q>>2]|0;n=k[s>>2]|0;B=0;k[f>>2]=k[u>>2];C=xa(39,f|0,I|0,L|0,n|0,c|0,d|0)|0;n=B;B=0;if(!(n&1)){k[b>>2]=C;if(J)mua(J);if(D)mua(D);r=a;return C|0}else{K=J;A=20}}else{K=J;A=20}}while(0);if((A|0)==20){A=Rb()|0;M=A;N=Q;O=K}if(O)mua(O);if(!D){F=M;G=N}else{mua(D);F=M;G=N}}Qb(F|0);return 0}function Xxa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;a=r;r=r+80|0;f=a;g=a+72|0;h=a+52|0;j=a+12|0;l=a+8|0;m=a+4|0;i[g>>0]=i[159124]|0;i[g+1>>0]=i[159125]|0;i[g+2>>0]=i[159126]|0;i[g+3>>0]=i[159127]|0;i[g+4>>0]=i[159128]|0;i[g+5>>0]=i[159129]|0;n=oxa()|0;k[f>>2]=e;e=jDa(h,20,n,g,f)|0;g=h+e|0;n=Oxa(h,g,c)|0;o=xva(c)|0;k[l>>2]=o;B=0;p=Xa(238,l|0,49320)|0;l=B;B=0;if(l&1){l=Rb()|0;BEa(o)|0;Qb(l|0)}else{BEa(o)|0;ld[k[(k[p>>2]|0)+32>>2]&127](p,h,g,j)|0;p=j+e|0;k[m>>2]=k[b>>2];k[f>>2]=k[m>>2];m=Qd(f,j,(n|0)==(g|0)?p:j+(n-h)|0,p,c,d)|0;r=a;return m|0}return 0}function Yxa(a){a=a|0;return}function Zxa(a){a=a|0;Sqa(a);return}function _xa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;f=r;r=r+32|0;g=f+8|0;h=f+4|0;j=f;a:do if(!(k[c+4>>2]&1)){l=k[(k[a>>2]|0)+24>>2]|0;k[h>>2]=k[b>>2];k[g>>2]=k[h>>2];m=fd[l&31](a,g,c,d,e&1)|0}else{l=xva(c)|0;k[j>>2]=l;B=0;n=Xa(238,j|0,49468)|0;o=B;B=0;do if(!(o&1)){BEa(l)|0;p=k[n>>2]|0;if(e)Fc[k[p+24>>2]&1023](g,n);else Fc[k[p+28>>2]&1023](g,n);p=i[g>>0]|0;q=g+4|0;s=g+8|0;t=k[s>>2]|0;u=p;v=t;w=(p&1)==0?q:t;while(1){t=(u&1)==0;if((w|0)==((t?q:v)+((t?(u&255)>>>1:k[q>>2]|0)<<2)|0)){x=9;break}t=k[w>>2]|0;p=k[b>>2]|0;if(p){y=p+24|0;z=k[y>>2]|0;if((z|0)==(k[p+28>>2]|0)){B=0;A=Xa(k[(k[p>>2]|0)+52>>2]|0,p|0,t|0)|0;p=B;B=0;if(p&1){x=18;break}else C=A}else{k[y>>2]=z+4;k[z>>2]=t;C=t}if((C|0)==-1)k[b>>2]=0}u=i[g>>0]|0;v=k[s>>2]|0;w=w+4|0}if((x|0)==9){w=k[b>>2]|0;kva(g);m=w;break a}else if((x|0)==18){w=Rb()|0;s=Q;kva(g);D=s;E=w;break}}else{w=Rb()|0;s=Q;BEa(l)|0;D=s;E=w}while(0);Qb(E|0)}while(0);r=f;return m|0}function $xa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;a=r;r=r+128|0;f=a;g=a+116|0;h=a+104|0;j=a+20|0;l=a+16|0;m=a+8|0;n=a+12|0;o=a+4|0;i[g>>0]=i[159110]|0;i[g+1>>0]=i[159111]|0;i[g+2>>0]=i[159112]|0;i[g+3>>0]=i[159113]|0;i[g+4>>0]=i[159114]|0;i[g+5>>0]=i[159115]|0;Nxa(g+1|0,159116,1,k[c+4>>2]|0);p=oxa()|0;k[f>>2]=e;e=h+(jDa(h,12,p,g,f)|0)|0;g=Oxa(h,e,c)|0;p=xva(c)|0;k[n>>2]=p;B=0;Ta(35,h|0,g|0,e|0,j|0,l|0,m|0,n|0);n=B;B=0;if(n&1){n=Rb()|0;BEa(p)|0;Qb(n|0)}else{BEa(p)|0;k[o>>2]=k[b>>2];b=k[l>>2]|0;l=k[m>>2]|0;k[f>>2]=k[o>>2];o=lDa(f,j,b,l,c,d)|0;r=a;return o|0}return 0}function aya(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;h=r;r=r+16|0;j=h;l=$Aa(g,49312)|0;m=$Aa(g,49468)|0;Fc[k[(k[m>>2]|0)+20>>2]&1023](j,m);g=i[j>>0]|0;n=j+4|0;a:do if(!(((g&1)==0?(g&255)>>>1:k[n>>2]|0)|0)){B=0;cb(k[(k[l>>2]|0)+48>>2]|0,l|0,a|0,c|0,d|0)|0;o=B;B=0;if(o&1)p=5;else{o=a;q=d+(c-o<<2)|0;k[f>>2]=q;s=o;t=q;p=29}}else{k[f>>2]=d;q=i[a>>0]|0;switch(q<<24>>24){case 43:case 45:{B=0;o=Xa(k[(k[l>>2]|0)+44>>2]|0,l|0,q|0)|0;q=B;B=0;if(q&1){p=5;break a}q=k[f>>2]|0;k[f>>2]=q+4;k[q>>2]=o;u=a+1|0;break}default:u=a}b:do if((c-u|0)>1?(i[u>>0]|0)==48:0){o=u+1|0;switch(i[o>>0]|0){case 88:case 120:break;default:{v=u;break b}}B=0;q=Xa(k[(k[l>>2]|0)+44>>2]|0,l|0,48)|0;w=B;B=0;if(w&1){p=5;break a}w=k[f>>2]|0;k[f>>2]=w+4;k[w>>2]=q;B=0;q=Xa(k[(k[l>>2]|0)+44>>2]|0,l|0,i[o>>0]|0)|0;o=B;B=0;if(o&1){p=5;break a}o=k[f>>2]|0;k[f>>2]=o+4;k[o>>2]=q;v=u+2|0}else v=u;while(0);c:do if((v|0)!=(c|0)){q=c;o=v;while(1){w=q+-1|0;if(o>>>0>=w>>>0)break c;x=i[o>>0]|0;i[o>>0]=i[w>>0]|0;i[w>>0]=x;q=w;o=o+1|0}}while(0);B=0;o=ya(k[(k[m>>2]|0)+16>>2]|0,m|0)|0;q=B;B=0;if(!(q&1)){q=j+8|0;w=j+1|0;x=0;y=0;z=v;while(1){if(z>>>0>=c>>>0)break;A=i[((i[j>>0]&1)==0?w:k[q>>2]|0)+y>>0]|0;if(A<<24>>24!=0&(x|0)==(A<<24>>24|0)){A=k[f>>2]|0;k[f>>2]=A+4;k[A>>2]=o;A=i[j>>0]|0;C=0;D=(y>>>0<(((A&1)==0?(A&255)>>>1:k[n>>2]|0)+-1|0)>>>0&1)+y|0}else{C=x;D=y}B=0;A=Xa(k[(k[l>>2]|0)+44>>2]|0,l|0,i[z>>0]|0)|0;E=B;B=0;if(E&1){p=4;break}E=k[f>>2]|0;k[f>>2]=E+4;k[E>>2]=A;x=C+1|0;y=D;z=z+1|0}if((p|0)==4){z=Rb()|0;F=z;G=Q;break}z=a;y=d+(v-z<<2)|0;x=k[f>>2]|0;if((y|0)==(x|0)){s=z;t=y;p=29}else{o=x;q=y;while(1){y=o+-4|0;if(q>>>0>=y>>>0){s=z;t=x;p=29;break a}w=k[q>>2]|0;k[q>>2]=k[y>>2];k[y>>2]=w;o=y;q=q+4|0}}}else p=5}while(0);if((p|0)==5){f=Rb()|0;F=f;G=Q}else if((p|0)==29){k[e>>2]=(b|0)==(c|0)?t:d+(b-s<<2)|0;Yua(j);r=h;return}Yua(j);Qb(F|0)}function bya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;a=r;r=r+224|0;g=a+8|0;h=a;i=a+196|0;j=a+32|0;l=a+28|0;m=a+20|0;n=a+24|0;o=a+16|0;p=h;k[p>>2]=37;k[p+4>>2]=0;Nxa(h+1|0,159118,1,k[c+4>>2]|0);p=oxa()|0;q=g;k[q>>2]=e;k[q+4>>2]=f;f=i+(jDa(i,22,p,h,g)|0)|0;h=Oxa(i,f,c)|0;p=xva(c)|0;k[n>>2]=p;B=0;Ta(35,i|0,h|0,f|0,j|0,l|0,m|0,n|0);n=B;B=0;if(n&1){n=Rb()|0;BEa(p)|0;Qb(n|0)}else{BEa(p)|0;k[o>>2]=k[b>>2];b=k[l>>2]|0;l=k[m>>2]|0;k[g>>2]=k[o>>2];o=lDa(g,j,b,l,c,d)|0;r=a;return o|0}return 0}function cya(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;a=r;r=r+128|0;f=a;g=a+116|0;h=a+104|0;j=a+20|0;l=a+16|0;m=a+8|0;n=a+12|0;o=a+4|0;i[g>>0]=i[159110]|0;i[g+1>>0]=i[159111]|0;i[g+2>>0]=i[159112]|0;i[g+3>>0]=i[159113]|0;i[g+4>>0]=i[159114]|0;i[g+5>>0]=i[159115]|0;Nxa(g+1|0,159116,0,k[c+4>>2]|0);p=oxa()|0;k[f>>2]=e;e=h+(jDa(h,12,p,g,f)|0)|0;g=Oxa(h,e,c)|0;p=xva(c)|0;k[n>>2]=p;B=0;Ta(35,h|0,g|0,e|0,j|0,l|0,m|0,n|0);n=B;B=0;if(n&1){n=Rb()|0;BEa(p)|0;Qb(n|0)}else{BEa(p)|0;k[o>>2]=k[b>>2];b=k[l>>2]|0;l=k[m>>2]|0;k[f>>2]=k[o>>2];o=lDa(f,j,b,l,c,d)|0;r=a;return o|0}return 0}function dya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;a=r;r=r+240|0;g=a+8|0;h=a;i=a+204|0;j=a+32|0;l=a+28|0;m=a+20|0;n=a+24|0;o=a+16|0;p=h;k[p>>2]=37;k[p+4>>2]=0;Nxa(h+1|0,159118,0,k[c+4>>2]|0);p=oxa()|0;q=g;k[q>>2]=e;k[q+4>>2]=f;f=i+(jDa(i,23,p,h,g)|0)|0;h=Oxa(i,f,c)|0;p=xva(c)|0;k[n>>2]=p;B=0;Ta(35,i|0,h|0,f|0,j|0,l|0,m|0,n|0);n=B;B=0;if(n&1){n=Rb()|0;BEa(p)|0;Qb(n|0)}else{BEa(p)|0;k[o>>2]=k[b>>2];b=k[l>>2]|0;l=k[m>>2]|0;k[g>>2]=k[o>>2];o=lDa(g,j,b,l,c,d)|0;r=a;return o|0}return 0}function eya(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;a=r;r=r+352|0;f=a+312|0;g=a+48|0;h=a+32|0;i=a+24|0;j=a+8|0;l=a;m=a+316|0;n=a+308|0;o=a+80|0;q=a+76|0;s=a+72|0;t=a+68|0;u=a+64|0;v=l;k[v>>2]=37;k[v+4>>2]=0;v=Uxa(l+1|0,159121,k[c+4>>2]|0)|0;k[n>>2]=m;w=oxa()|0;if(v){k[j>>2]=k[c+8>>2];p[j+8>>3]=e;x=jDa(m,30,w,l,j)|0}else{p[i>>3]=e;x=jDa(m,30,w,l,i)|0}do if((x|0)>29){B=0;i=bb(3)|0;w=B;B=0;j=w&1;if(v){if(!j?(B=0,k[h>>2]=k[c+8>>2],p[h+8>>3]=e,w=cb(69,n|0,i|0,l|0,h|0)|0,y=B,B=0,!(y&1)):0){z=w;A=12}}else if(!j?(B=0,k[g>>2]=k[c+8>>2],p[g+8>>3]=e,j=cb(69,n|0,i|0,l|0,g|0)|0,i=B,B=0,!(i&1)):0){z=j;A=12}if((A|0)==12){j=k[n>>2]|0;if(j){C=j;D=j;E=z;A=16;break}B=0;fb(7);j=B;B=0;if(!(j&1)){j=k[n>>2]|0;C=j;D=j;E=z;A=16;break}}j=Rb()|0;F=j;G=Q}else{C=k[n>>2]|0;D=0;E=x;A=16}while(0);if((A|0)==16){x=C+E|0;z=Oxa(C,x,c)|0;do if((C|0)==(m|0)){H=m;I=o;J=0;A=22}else{g=lua(E<<3)|0;if(!g){B=0;fb(7);l=B;B=0;if(l&1){K=0;A=20;break}L=k[n>>2]|0}else L=C;H=L;I=g;J=g;A=22}while(0);do if((A|0)==22){B=0;L=ya(421,c|0)|0;C=B;B=0;if(!(C&1)){k[t>>2]=L;B=0;Ta(36,H|0,z|0,x|0,I|0,q|0,s|0,t|0);C=B;B=0;if(C&1){C=Rb()|0;n=Q;BEa(L)|0;M=C;N=n;O=J;break}BEa(L)|0;k[u>>2]=k[b>>2];L=k[q>>2]|0;n=k[s>>2]|0;B=0;k[f>>2]=k[u>>2];C=xa(40,f|0,I|0,L|0,n|0,c|0,d|0)|0;n=B;B=0;if(!(n&1)){k[b>>2]=C;if(J)mua(J);if(D)mua(D);r=a;return C|0}else{K=J;A=20}}else{K=J;A=20}}while(0);if((A|0)==20){A=Rb()|0;M=A;N=Q;O=K}if(O)mua(O);if(!D){F=M;G=N}else{mua(D);F=M;G=N}}Qb(F|0);return 0}function fya(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;h=r;r=r+16|0;j=h;l=$Aa(g,49312)|0;m=$Aa(g,49468)|0;Fc[k[(k[m>>2]|0)+20>>2]&1023](j,m);k[f>>2]=d;g=i[a>>0]|0;switch(g<<24>>24){case 43:case 45:{B=0;n=Xa(k[(k[l>>2]|0)+44>>2]|0,l|0,g|0)|0;g=B;B=0;if(g&1)o=8;else{g=k[f>>2]|0;k[f>>2]=g+4;k[g>>2]=n;p=a+1|0;o=10}break}default:{p=a;o=10}}a:do if((o|0)==10){n=c;b:do if((n-p|0)>1?(i[p>>0]|0)==48:0){g=p+1|0;switch(i[g>>0]|0){case 88:case 120:break;default:{q=p;o=21;break b}}B=0;s=Xa(k[(k[l>>2]|0)+44>>2]|0,l|0,48)|0;t=B;B=0;if(t&1){o=8;break a}t=k[f>>2]|0;k[f>>2]=t+4;k[t>>2]=s;s=p+2|0;B=0;t=Xa(k[(k[l>>2]|0)+44>>2]|0,l|0,i[g>>0]|0)|0;g=B;B=0;if(g&1){o=8;break a}g=k[f>>2]|0;k[f>>2]=g+4;k[g>>2]=t;t=s;while(1){if(t>>>0>=c>>>0){u=s;v=t;break b}g=i[t>>0]|0;B=0;w=bb(3)|0;x=B;B=0;if(x&1)break;B=0;x=Xa(261,g<<24>>24|0,w|0)|0;w=B;B=0;if(w&1)break;if(!x){u=s;v=t;break b}t=t+1|0}t=Rb()|0;y=t;z=Q;break a}else{q=p;o=21}while(0);c:do if((o|0)==21){while(1){o=0;if(q>>>0>=c>>>0){u=p;v=q;break c}t=i[q>>0]|0;B=0;s=bb(3)|0;x=B;B=0;if(x&1)break;B=0;x=Xa(262,t<<24>>24|0,s|0)|0;s=B;B=0;if(s&1)break;if(!x){u=p;v=q;break c}q=q+1|0;o=21}x=Rb()|0;y=x;z=Q;break a}while(0);x=i[j>>0]|0;s=j+4|0;d:do if(((x&1)==0?(x&255)>>>1:k[s>>2]|0)|0){e:do if((u|0)!=(v|0)){t=v;w=u;while(1){g=t+-1|0;if(w>>>0>=g>>>0)break e;A=i[w>>0]|0;i[w>>0]=i[g>>0]|0;i[g>>0]=A;t=g;w=w+1|0}}while(0);B=0;w=ya(k[(k[m>>2]|0)+16>>2]|0,m|0)|0;t=B;B=0;if(t&1){o=8;break a}t=j+8|0;g=j+1|0;A=0;C=0;D=u;while(1){if(D>>>0>=v>>>0)break;E=i[((i[j>>0]&1)==0?g:k[t>>2]|0)+C>>0]|0;if(E<<24>>24>0&(A|0)==(E<<24>>24|0)){E=k[f>>2]|0;k[f>>2]=E+4;k[E>>2]=w;E=i[j>>0]|0;F=0;G=(C>>>0<(((E&1)==0?(E&255)>>>1:k[s>>2]|0)+-1|0)>>>0&1)+C|0}else{F=A;G=C}B=0;E=Xa(k[(k[l>>2]|0)+44>>2]|0,l|0,i[D>>0]|0)|0;H=B;B=0;if(H&1){o=5;break}H=k[f>>2]|0;k[f>>2]=H+4;k[H>>2]=E;A=F+1|0;C=G;D=D+1|0}if((o|0)==5){D=Rb()|0;y=D;z=Q;break a}D=d+(u-a<<2)|0;C=k[f>>2]|0;if((D|0)==(C|0)){I=l;J=D}else{A=C;w=D;while(1){D=A+-4|0;if(w>>>0>=D>>>0){I=l;J=C;break d}t=k[w>>2]|0;k[w>>2]=k[D>>2];k[D>>2]=t;A=D;w=w+4|0}}}else{B=0;cb(k[(k[l>>2]|0)+48>>2]|0,l|0,u|0,v|0,k[f>>2]|0)|0;w=B;B=0;if(w&1){o=8;break a}w=(k[f>>2]|0)+(v-u<<2)|0;k[f>>2]=w;I=l;J=w}while(0);s=J;x=v;while(1){if(x>>>0>=c>>>0){K=s;L=x;break}w=i[x>>0]|0;if(w<<24>>24==46){M=x;o=45;break}B=0;A=Xa(k[(k[I>>2]|0)+44>>2]|0,l|0,w|0)|0;w=B;B=0;if(w&1){o=4;break}w=k[f>>2]|0;C=w+4|0;k[f>>2]=C;k[w>>2]=A;s=C;x=x+1|0}if((o|0)==4){x=Rb()|0;y=x;z=Q;break}if((o|0)==45){B=0;x=ya(k[(k[m>>2]|0)+12>>2]|0,m|0)|0;s=B;B=0;if(s&1){o=8;break}s=k[f>>2]|0;C=s+4|0;k[f>>2]=C;k[s>>2]=x;K=C;L=M+1|0}B=0;cb(k[(k[l>>2]|0)+48>>2]|0,l|0,L|0,c|0,K|0)|0;C=B;B=0;if(C&1)o=8;else{C=(k[f>>2]|0)+(n-L<<2)|0;k[f>>2]=C;k[e>>2]=(b|0)==(c|0)?C:d+(b-a<<2)|0;Yua(j);r=h;return}}while(0);if((o|0)==8){o=Rb()|0;y=o;z=Q}Yua(j);Qb(y|0)}function gya(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;a=r;r=r+352|0;f=a+304|0;g=a+48|0;h=a+32|0;i=a+24|0;j=a+8|0;l=a;m=a+308|0;n=a+300|0;o=a+72|0;q=a+68|0;s=a+64|0;t=a+60|0;u=a+56|0;v=l;k[v>>2]=37;k[v+4>>2]=0;v=Uxa(l+1|0,159122,k[c+4>>2]|0)|0;k[n>>2]=m;w=oxa()|0;if(v){k[j>>2]=k[c+8>>2];p[j+8>>3]=e;x=jDa(m,30,w,l,j)|0}else{p[i>>3]=e;x=jDa(m,30,w,l,i)|0}do if((x|0)>29){B=0;i=bb(3)|0;w=B;B=0;j=w&1;if(v){if(!j?(B=0,k[h>>2]=k[c+8>>2],p[h+8>>3]=e,w=cb(69,n|0,i|0,l|0,h|0)|0,y=B,B=0,!(y&1)):0){z=w;A=12}}else if(!j?(B=0,p[g>>3]=e,j=cb(69,n|0,i|0,l|0,g|0)|0,i=B,B=0,!(i&1)):0){z=j;A=12}if((A|0)==12){j=k[n>>2]|0;if(j){C=j;D=j;E=z;A=16;break}B=0;fb(7);j=B;B=0;if(!(j&1)){j=k[n>>2]|0;C=j;D=j;E=z;A=16;break}}j=Rb()|0;F=j;G=Q}else{C=k[n>>2]|0;D=0;E=x;A=16}while(0);if((A|0)==16){x=C+E|0;z=Oxa(C,x,c)|0;do if((C|0)==(m|0)){H=m;I=o;J=0;A=22}else{g=lua(E<<3)|0;if(!g){B=0;fb(7);l=B;B=0;if(l&1){K=0;A=20;break}L=k[n>>2]|0}else L=C;H=L;I=g;J=g;A=22}while(0);do if((A|0)==22){B=0;L=ya(421,c|0)|0;C=B;B=0;if(!(C&1)){k[t>>2]=L;B=0;Ta(36,H|0,z|0,x|0,I|0,q|0,s|0,t|0);C=B;B=0;if(C&1){C=Rb()|0;n=Q;BEa(L)|0;M=C;N=n;O=J;break}BEa(L)|0;k[u>>2]=k[b>>2];L=k[q>>2]|0;n=k[s>>2]|0;B=0;k[f>>2]=k[u>>2];C=xa(40,f|0,I|0,L|0,n|0,c|0,d|0)|0;n=B;B=0;if(!(n&1)){k[b>>2]=C;if(J)mua(J);if(D)mua(D);r=a;return C|0}else{K=J;A=20}}else{K=J;A=20}}while(0);if((A|0)==20){A=Rb()|0;M=A;N=Q;O=K}if(O)mua(O);if(!D){F=M;G=N}else{mua(D);F=M;G=N}}Qb(F|0);return 0}function hya(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;a=r;r=r+192|0;f=a;g=a+180|0;h=a+160|0;j=a+8|0;l=a+156|0;m=a+4|0;i[g>>0]=i[159124]|0;i[g+1>>0]=i[159125]|0;i[g+2>>0]=i[159126]|0;i[g+3>>0]=i[159127]|0;i[g+4>>0]=i[159128]|0;i[g+5>>0]=i[159129]|0;n=oxa()|0;k[f>>2]=e;e=jDa(h,20,n,g,f)|0;g=h+e|0;n=Oxa(h,g,c)|0;o=xva(c)|0;k[l>>2]=o;B=0;p=Xa(238,l|0,49312)|0;l=B;B=0;if(l&1){l=Rb()|0;BEa(o)|0;Qb(l|0)}else{BEa(o)|0;ld[k[(k[p>>2]|0)+48>>2]&127](p,h,g,j)|0;p=j+(e<<2)|0;k[m>>2]=k[b>>2];k[f>>2]=k[m>>2];m=lDa(f,j,(n|0)==(g|0)?p:j+(n-h<<2)|0,p,c,d)|0;r=a;return m|0}return 0}function iya(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;m=r;r=r+32|0;n=m+16|0;o=m+12|0;p=m+8|0;q=m+4|0;s=m;t=xva(d)|0;k[p>>2]=t;B=0;u=Xa(238,p|0,49320)|0;p=B;B=0;if(p&1){p=Rb()|0;BEa(t)|0;Qb(p|0)}BEa(t)|0;k[e>>2]=0;t=u+8|0;p=g;g=0;a:while(1){v=(p|0)!=(h|0);w=g;while(1){x=k[b>>2]|0;if(!(v&(w|0)==0)){y=x;break a}z=x;if(x)if((k[x+12>>2]|0)==(k[x+16>>2]|0)?(Hc[k[(k[x>>2]|0)+36>>2]&511](x)|0)==-1:0){k[b>>2]=0;A=0;C=0}else{A=z;C=x}else{A=z;C=0}z=(C|0)==0;x=k[c>>2]|0;D=x;do if(x){if((k[x+12>>2]|0)==(k[x+16>>2]|0)?(Hc[k[(k[x>>2]|0)+36>>2]&511](x)|0)==-1:0){k[c>>2]=0;E=0;F=14;break}if(z){G=x;H=D}else{I=C;F=15;break a}}else{E=D;F=14}while(0);if((F|0)==14){F=0;if(z){I=C;F=15;break a}else{G=0;H=E}}if((Rc[k[(k[u>>2]|0)+36>>2]&63](u,i[p>>0]|0,0)|0)<<24>>24==37){J=A;K=C;L=H;F=18;break}D=i[p>>0]|0;if(D<<24>>24>-1?(x=k[t>>2]|0,(j[x+(D<<24>>24<<1)>>1]&8192)!=0):0){M=C;N=G;O=x;F=27;break}x=C+12|0;D=k[x>>2]|0;P=C+16|0;if((D|0)==(k[P>>2]|0))Q=Hc[k[(k[C>>2]|0)+36>>2]&511](C)|0;else Q=l[D>>0]|0;D=ed[k[(k[u>>2]|0)+12>>2]&511](u,Q&255)|0;if(D<<24>>24==(ed[k[(k[u>>2]|0)+12>>2]&511](u,i[p>>0]|0)|0)<<24>>24){R=C;S=x;T=P;F=55;break}k[e>>2]=4;w=4}b:do if((F|0)==18){F=0;w=p+1|0;if((w|0)==(h|0)){U=K;F=19;break a}v=Rc[k[(k[u>>2]|0)+36>>2]&63](u,i[w>>0]|0,0)|0;switch(v<<24>>24){case 48:case 69:{P=p+2|0;if((P|0)==(h|0)){V=K;F=24;break a}W=w;X=Rc[k[(k[u>>2]|0)+36>>2]&63](u,i[P>>0]|0,0)|0;Y=v;break}default:{W=p;X=v;Y=0}}v=k[(k[a>>2]|0)+36>>2]|0;k[q>>2]=J;k[s>>2]=L;k[o>>2]=k[q>>2];k[n>>2]=k[s>>2];P=pd[v&15](a,o,n,d,e,f,X,Y)|0;k[b>>2]=P;Z=W+2|0}else if((F|0)==27){F=0;P=p;while(1){v=P+1|0;if((v|0)==(h|0)){_=h;break}w=i[v>>0]|0;if(w<<24>>24<=-1){_=v;break}if(!(j[O+(w<<24>>24<<1)>>1]&8192)){_=v;break}else P=v}P=N;z=M;v=N;while(1){if(z)if((k[z+12>>2]|0)==(k[z+16>>2]|0)?(Hc[k[(k[z>>2]|0)+36>>2]&511](z)|0)==-1:0){k[b>>2]=0;$=0}else $=z;else $=0;w=($|0)==0;do if(v){if((k[v+12>>2]|0)!=(k[v+16>>2]|0))if(w){aa=P;ba=v;break}else{Z=_;break b}if((Hc[k[(k[v>>2]|0)+36>>2]&511](v)|0)!=-1)if(w^(P|0)==0){aa=P;ba=P;break}else{Z=_;break b}else{k[c>>2]=0;ca=0;F=41;break}}else{ca=P;F=41}while(0);if((F|0)==41){F=0;if(w){Z=_;break b}else{aa=ca;ba=0}}x=$+12|0;D=k[x>>2]|0;da=$+16|0;if((D|0)==(k[da>>2]|0))ea=Hc[k[(k[$>>2]|0)+36>>2]&511]($)|0;else ea=l[D>>0]|0;if((ea&255)<<24>>24<=-1){Z=_;break b}if(!(j[(k[t>>2]|0)+(ea<<24>>24<<1)>>1]&8192)){Z=_;break b}D=k[x>>2]|0;if((D|0)==(k[da>>2]|0)){Hc[k[(k[$>>2]|0)+40>>2]&511]($)|0;P=aa;z=$;v=ba;continue}else{k[x>>2]=D+1;P=aa;z=$;v=ba;continue}}}else if((F|0)==55){F=0;v=k[S>>2]|0;if((v|0)==(k[T>>2]|0))Hc[k[(k[R>>2]|0)+40>>2]&511](R)|0;else k[S>>2]=v+1;Z=p+1|0}while(0);p=Z;g=k[e>>2]|0}if((F|0)==15){k[e>>2]=4;y=I}else if((F|0)==19){k[e>>2]=4;y=U}else if((F|0)==24){k[e>>2]=4;y=V}if(y)if((k[y+12>>2]|0)==(k[y+16>>2]|0)?(Hc[k[(k[y>>2]|0)+36>>2]&511](y)|0)==-1:0){k[b>>2]=0;fa=0}else fa=y;else fa=0;y=(fa|0)==0;b=k[c>>2]|0;do if(b){if((k[b+12>>2]|0)==(k[b+16>>2]|0)?(Hc[k[(k[b>>2]|0)+36>>2]&511](b)|0)==-1:0){k[c>>2]=0;F=70;break}if(!y)F=71}else F=70;while(0);if((F|0)==70?y:0)F=71;if((F|0)==71)k[e>>2]=k[e>>2]|2;r=m;return fa|0}function jya(a){a=a|0;return}function kya(a){a=a|0;Sqa(a);return}function lya(a){a=a|0;return 2}function mya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=iya(a,i,h,d,e,f,159130,159138)|0;r=g;return l|0}function nya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;g=r;r=r+16|0;h=g+12|0;j=g+8|0;l=g+4|0;m=g;n=a+8|0;o=Hc[k[(k[n>>2]|0)+20>>2]&511](n)|0;k[l>>2]=k[b>>2];k[m>>2]=k[c>>2];c=i[o>>0]|0;b=(c&1)==0;n=b?o+1|0:k[o+8>>2]|0;p=n+(b?(c&255)>>>1:k[o+4>>2]|0)|0;k[j>>2]=k[l>>2];k[h>>2]=k[m>>2];m=iya(a,j,h,d,e,f,n,p)|0;r=g;return m|0}function oya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+8|0;i=g+4|0;j=g;l=xva(d)|0;k[i>>2]=l;B=0;d=Xa(238,i|0,49320)|0;i=B;B=0;if(i&1){i=Rb()|0;BEa(l)|0;Qb(i|0)}else{BEa(l)|0;k[j>>2]=k[c>>2];k[h>>2]=k[j>>2];pya(a,f+24|0,b,h,e,d);r=g;return k[b>>2]|0}return 0}function pya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=r;r=r+16|0;h=g+4|0;i=g;j=a+8|0;a=Hc[k[k[j>>2]>>2]&511](j)|0;k[i>>2]=k[d>>2];k[h>>2]=k[i>>2];i=(QCa(c,h,a,a+168|0,f,e,0)|0)-a|0;if((i|0)<168)k[b>>2]=((i|0)/12|0|0)%7|0;r=g;return}function qya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+8|0;i=g+4|0;j=g;l=xva(d)|0;k[i>>2]=l;B=0;d=Xa(238,i|0,49320)|0;i=B;B=0;if(i&1){i=Rb()|0;BEa(l)|0;Qb(i|0)}else{BEa(l)|0;k[j>>2]=k[c>>2];k[h>>2]=k[j>>2];rya(a,f+16|0,b,h,e,d);r=g;return k[b>>2]|0}return 0}function rya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=r;r=r+16|0;h=g+4|0;i=g;j=a+8|0;a=Hc[k[(k[j>>2]|0)+4>>2]&511](j)|0;k[i>>2]=k[d>>2];k[h>>2]=k[i>>2];i=(QCa(c,h,a,a+288|0,f,e,0)|0)-a|0;if((i|0)<288)k[b>>2]=((i|0)/12|0|0)%12|0;r=g;return}function sya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+8|0;i=g+4|0;j=g;l=xva(d)|0;k[i>>2]=l;B=0;d=Xa(238,i|0,49320)|0;i=B;B=0;if(i&1){i=Rb()|0;BEa(l)|0;Qb(i|0)}else{BEa(l)|0;k[j>>2]=k[c>>2];k[h>>2]=k[j>>2];tya(a,f+20|0,b,h,e,d);r=g;return k[b>>2]|0}return 0}function tya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=mDa(c,g,e,f,4)|0;if(!(k[e>>2]&4)){if((h|0)<69)i=h+2e3|0;else i=(h+-69|0)>>>0<31?h+1900|0:h;k[b>>2]=i+-1900}r=a;return}function uya(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;h=r;r=r+144|0;j=h+132|0;l=h+116|0;m=h+128|0;n=h+124|0;o=h+120|0;p=h+112|0;q=h+108|0;s=h+104|0;t=h+100|0;u=h+96|0;v=h+92|0;w=h+88|0;x=h+84|0;y=h+80|0;z=h+76|0;A=h+72|0;C=h+68|0;D=h+64|0;E=h+60|0;F=h+56|0;G=h+52|0;H=h+48|0;I=h+44|0;J=h+40|0;K=h+36|0;L=h+32|0;M=h+28|0;N=h+24|0;O=h+20|0;P=h+16|0;Q=h+12|0;R=h+8|0;S=h+4|0;T=h;k[e>>2]=0;U=xva(d)|0;k[m>>2]=U;B=0;V=Xa(238,m|0,49320)|0;m=B;B=0;if(m&1){m=Rb()|0;BEa(U)|0;Qb(m|0)}BEa(U)|0;do switch(g<<24>>24|0){case 65:case 97:{k[n>>2]=k[c>>2];k[j>>2]=k[n>>2];pya(a,f+24|0,b,j,e,V);W=28;break}case 104:case 66:case 98:{k[o>>2]=k[c>>2];k[j>>2]=k[o>>2];rya(a,f+16|0,b,j,e,V);W=28;break}case 99:{U=a+8|0;m=Hc[k[(k[U>>2]|0)+12>>2]&511](U)|0;k[p>>2]=k[b>>2];k[q>>2]=k[c>>2];U=i[m>>0]|0;X=(U&1)==0;Y=X?m+1|0:k[m+8>>2]|0;Z=Y+(X?(U&255)>>>1:k[m+4>>2]|0)|0;k[l>>2]=k[p>>2];k[j>>2]=k[q>>2];m=iya(a,l,j,d,e,f,Y,Z)|0;k[b>>2]=m;W=28;break}case 101:case 100:{k[s>>2]=k[c>>2];k[j>>2]=k[s>>2];vya(a,f+12|0,b,j,e,V);W=28;break}case 68:{k[t>>2]=k[b>>2];k[u>>2]=k[c>>2];k[l>>2]=k[t>>2];k[j>>2]=k[u>>2];m=iya(a,l,j,d,e,f,159138,159146)|0;k[b>>2]=m;W=28;break}case 70:{k[v>>2]=k[b>>2];k[w>>2]=k[c>>2];k[l>>2]=k[v>>2];k[j>>2]=k[w>>2];m=iya(a,l,j,d,e,f,159146,159154)|0;k[b>>2]=m;W=28;break}case 72:{k[x>>2]=k[c>>2];k[j>>2]=k[x>>2];wya(a,f+8|0,b,j,e,V);W=28;break}case 73:{k[y>>2]=k[c>>2];k[j>>2]=k[y>>2];xya(a,f+8|0,b,j,e,V);W=28;break}case 106:{k[z>>2]=k[c>>2];k[j>>2]=k[z>>2];yya(a,f+28|0,b,j,e,V);W=28;break}case 109:{k[A>>2]=k[c>>2];k[j>>2]=k[A>>2];zya(a,f+16|0,b,j,e,V);W=28;break}case 77:{k[C>>2]=k[c>>2];k[j>>2]=k[C>>2];Aya(a,f+4|0,b,j,e,V);W=28;break}case 116:case 110:{k[D>>2]=k[c>>2];k[j>>2]=k[D>>2];Bya(a,b,j,e,V);W=28;break}case 112:{k[E>>2]=k[c>>2];k[j>>2]=k[E>>2];Cya(a,f+8|0,b,j,e,V);W=28;break}case 114:{k[F>>2]=k[b>>2];k[G>>2]=k[c>>2];k[l>>2]=k[F>>2];k[j>>2]=k[G>>2];m=iya(a,l,j,d,e,f,159154,159165)|0;k[b>>2]=m;W=28;break}case 82:{k[H>>2]=k[b>>2];k[I>>2]=k[c>>2];k[l>>2]=k[H>>2];k[j>>2]=k[I>>2];m=iya(a,l,j,d,e,f,159165,159170)|0;k[b>>2]=m;W=28;break}case 83:{k[J>>2]=k[c>>2];k[j>>2]=k[J>>2];Dya(a,f,b,j,e,V);W=28;break}case 84:{k[K>>2]=k[b>>2];k[L>>2]=k[c>>2];k[l>>2]=k[K>>2];k[j>>2]=k[L>>2];m=iya(a,l,j,d,e,f,159170,159178)|0;k[b>>2]=m;W=28;break}case 119:{k[M>>2]=k[c>>2];k[j>>2]=k[M>>2];Eya(a,f+24|0,b,j,e,V);W=28;break}case 120:{m=k[(k[a>>2]|0)+20>>2]|0;k[N>>2]=k[b>>2];k[O>>2]=k[c>>2];k[l>>2]=k[N>>2];k[j>>2]=k[O>>2];_=Gc[m&63](a,l,j,d,e,f)|0;break}case 88:{m=a+8|0;Z=Hc[k[(k[m>>2]|0)+24>>2]&511](m)|0;k[P>>2]=k[b>>2];k[Q>>2]=k[c>>2];m=i[Z>>0]|0;Y=(m&1)==0;U=Y?Z+1|0:k[Z+8>>2]|0;X=U+(Y?(m&255)>>>1:k[Z+4>>2]|0)|0;k[l>>2]=k[P>>2];k[j>>2]=k[Q>>2];Z=iya(a,l,j,d,e,f,U,X)|0;k[b>>2]=Z;W=28;break}case 121:{k[R>>2]=k[c>>2];k[j>>2]=k[R>>2];tya(a,f+20|0,b,j,e,V);W=28;break}case 89:{k[S>>2]=k[c>>2];k[j>>2]=k[S>>2];Fya(a,f+20|0,b,j,e,V);W=28;break}case 37:{k[T>>2]=k[c>>2];k[j>>2]=k[T>>2];Gya(a,b,j,e,V);W=28;break}default:{k[e>>2]=k[e>>2]|4;W=28}}while(0);if((W|0)==28)_=k[b>>2]|0;r=h;return _|0}function vya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=mDa(c,g,e,f,2)|0;f=k[e>>2]|0;if((h+-1|0)>>>0<31&(f&4|0)==0)k[b>>2]=h;else k[e>>2]=f|4;r=a;return}function wya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=mDa(c,g,e,f,2)|0;f=k[e>>2]|0;if((h|0)<24&(f&4|0)==0)k[b>>2]=h;else k[e>>2]=f|4;r=a;return}function xya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=mDa(c,g,e,f,2)|0;f=k[e>>2]|0;if((h+-1|0)>>>0<12&(f&4|0)==0)k[b>>2]=h;else k[e>>2]=f|4;r=a;return}function yya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=mDa(c,g,e,f,3)|0;f=k[e>>2]|0;if((h|0)<366&(f&4|0)==0)k[b>>2]=h;else k[e>>2]=f|4;r=a;return}function zya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=mDa(c,g,e,f,2)|0;f=k[e>>2]|0;if((h|0)<13&(f&4|0)==0)k[b>>2]=h+-1;else k[e>>2]=f|4;r=a;return}function Aya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=mDa(c,g,e,f,2)|0;f=k[e>>2]|0;if((h|0)<60&(f&4|0)==0)k[b>>2]=h;else k[e>>2]=f|4;r=a;return}function Bya(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,m=0,n=0,o=0,p=0,q=0;a=e+8|0;a:while(1){e=k[b>>2]|0;do if(e)if((k[e+12>>2]|0)==(k[e+16>>2]|0))if((Hc[k[(k[e>>2]|0)+36>>2]&511](e)|0)==-1){k[b>>2]=0;f=0;break}else{f=k[b>>2]|0;break}else f=e;else f=0;while(0);e=(f|0)==0;g=k[c>>2]|0;do if(g){if((k[g+12>>2]|0)!=(k[g+16>>2]|0))if(e){h=g;break}else{i=g;break a}if((Hc[k[(k[g>>2]|0)+36>>2]&511](g)|0)!=-1)if(e){h=g;break}else{i=g;break a}else{k[c>>2]=0;m=12;break}}else m=12;while(0);if((m|0)==12){m=0;if(e){i=0;break}else h=0}g=k[b>>2]|0;n=k[g+12>>2]|0;if((n|0)==(k[g+16>>2]|0))o=Hc[k[(k[g>>2]|0)+36>>2]&511](g)|0;else o=l[n>>0]|0;if((o&255)<<24>>24<=-1){i=h;break}if(!(j[(k[a>>2]|0)+(o<<24>>24<<1)>>1]&8192)){i=h;break}n=k[b>>2]|0;g=n+12|0;p=k[g>>2]|0;if((p|0)==(k[n+16>>2]|0)){Hc[k[(k[n>>2]|0)+40>>2]&511](n)|0;continue}else{k[g>>2]=p+1;continue}}h=k[b>>2]|0;do if(h)if((k[h+12>>2]|0)==(k[h+16>>2]|0))if((Hc[k[(k[h>>2]|0)+36>>2]&511](h)|0)==-1){k[b>>2]=0;q=0;break}else{q=k[b>>2]|0;break}else q=h;else q=0;while(0);h=(q|0)==0;do if(i){if((k[i+12>>2]|0)==(k[i+16>>2]|0)?(Hc[k[(k[i>>2]|0)+36>>2]&511](i)|0)==-1:0){k[c>>2]=0;m=32;break}if(!h)m=33}else m=32;while(0);if((m|0)==32?h:0)m=33;if((m|0)==33)k[d>>2]=k[d>>2]|2;return}function Cya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0;g=r;r=r+16|0;h=g+4|0;j=g;l=a+8|0;a=Hc[k[(k[l>>2]|0)+8>>2]&511](l)|0;l=i[a>>0]|0;if(!(l&1))m=(l&255)>>>1;else m=k[a+4>>2]|0;l=i[a+12>>0]|0;if(!(l&1))n=(l&255)>>>1;else n=k[a+16>>2]|0;do if((m|0)!=(0-n|0)){k[j>>2]=k[d>>2];k[h>>2]=k[j>>2];l=QCa(c,h,a,a+24|0,f,e,0)|0;o=k[b>>2]|0;if((l|0)==(a|0)&(o|0)==12){k[b>>2]=0;break}if((o|0)<12&(l-a|0)==12)k[b>>2]=o+12}else k[e>>2]=k[e>>2]|4;while(0);r=g;return}function Dya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=mDa(c,g,e,f,2)|0;f=k[e>>2]|0;if((h|0)<61&(f&4|0)==0)k[b>>2]=h;else k[e>>2]=f|4;r=a;return}function Eya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=mDa(c,g,e,f,1)|0;f=k[e>>2]|0;if((h|0)<7&(f&4|0)==0)k[b>>2]=h;else k[e>>2]=f|4;r=a;return}function Fya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=mDa(c,g,e,f,4)|0;if(!(k[e>>2]&4))k[b>>2]=h+-1900;r=a;return}function Gya(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0;a=k[b>>2]|0;do if(a)if((k[a+12>>2]|0)==(k[a+16>>2]|0))if((Hc[k[(k[a>>2]|0)+36>>2]&511](a)|0)==-1){k[b>>2]=0;f=0;break}else{f=k[b>>2]|0;break}else f=a;else f=0;while(0);a=(f|0)==0;f=k[c>>2]|0;do if(f){if((k[f+12>>2]|0)==(k[f+16>>2]|0)?(Hc[k[(k[f>>2]|0)+36>>2]&511](f)|0)==-1:0){k[c>>2]=0;g=11;break}if(a){h=f;g=13}else g=12}else g=11;while(0);if((g|0)==11)if(a)g=12;else{h=0;g=13}a:do if((g|0)==12)k[d>>2]=k[d>>2]|6;else if((g|0)==13){a=k[b>>2]|0;f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))i=Hc[k[(k[a>>2]|0)+36>>2]&511](a)|0;else i=l[f>>0]|0;if((Rc[k[(k[e>>2]|0)+36>>2]&63](e,i&255,0)|0)<<24>>24!=37){k[d>>2]=k[d>>2]|4;break}f=k[b>>2]|0;a=f+12|0;j=k[a>>2]|0;if((j|0)==(k[f+16>>2]|0)){Hc[k[(k[f>>2]|0)+40>>2]&511](f)|0;m=k[b>>2]|0;if(!m)n=0;else{o=m;g=21}}else{k[a>>2]=j+1;o=f;g=21}do if((g|0)==21)if((k[o+12>>2]|0)==(k[o+16>>2]|0))if((Hc[k[(k[o>>2]|0)+36>>2]&511](o)|0)==-1){k[b>>2]=0;n=0;break}else{n=k[b>>2]|0;break}else n=o;while(0);f=(n|0)==0;do if(h){if((k[h+12>>2]|0)==(k[h+16>>2]|0)?(Hc[k[(k[h>>2]|0)+36>>2]&511](h)|0)==-1:0){k[c>>2]=0;g=30;break}if(f)break a}else g=30;while(0);if((g|0)==30?!f:0)break;k[d>>2]=k[d>>2]|2}while(0);return}function Hya(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0;i=r;r=r+32|0;j=i+16|0;l=i+12|0;m=i+8|0;n=i+4|0;o=i;p=xva(d)|0;k[m>>2]=p;B=0;q=Xa(238,m|0,49312)|0;m=B;B=0;if(m&1){m=Rb()|0;BEa(p)|0;Qb(m|0)}BEa(p)|0;k[e>>2]=0;p=g;g=0;a:while(1){m=(p|0)!=(h|0);s=g;while(1){t=k[b>>2]|0;if(!(m&(s|0)==0)){u=t;break a}v=t;if(t){w=k[t+12>>2]|0;if((w|0)==(k[t+16>>2]|0))x=Hc[k[(k[t>>2]|0)+36>>2]&511](t)|0;else x=k[w>>2]|0;if((x|0)==-1){k[b>>2]=0;y=0;z=0;A=1}else{y=t;z=v;A=0}}else{y=0;z=v;A=1}v=k[c>>2]|0;t=v;do if(v){w=k[v+12>>2]|0;if((w|0)==(k[v+16>>2]|0))C=Hc[k[(k[v>>2]|0)+36>>2]&511](v)|0;else C=k[w>>2]|0;if((C|0)!=-1)if(A){D=v;E=t;break}else{F=y;G=19;break a}else{k[c>>2]=0;H=0;G=17;break}}else{H=t;G=17}while(0);if((G|0)==17){G=0;if(A){F=y;G=19;break a}else{D=0;E=H}}if((Rc[k[(k[q>>2]|0)+52>>2]&63](q,k[p>>2]|0,0)|0)<<24>>24==37){I=z;J=y;K=E;G=22;break}if(Rc[k[(k[q>>2]|0)+12>>2]&63](q,8192,k[p>>2]|0)|0){L=y;M=D;G=30;break}t=y+12|0;v=k[t>>2]|0;w=y+16|0;if((v|0)==(k[w>>2]|0))N=Hc[k[(k[y>>2]|0)+36>>2]&511](y)|0;else N=k[v>>2]|0;v=ed[k[(k[q>>2]|0)+28>>2]&511](q,N)|0;if((v|0)==(ed[k[(k[q>>2]|0)+28>>2]&511](q,k[p>>2]|0)|0)){O=y;P=t;Q=w;G=59;break}k[e>>2]=4;s=4}b:do if((G|0)==22){G=0;s=p+4|0;if((s|0)==(h|0)){R=J;G=23;break a}m=Rc[k[(k[q>>2]|0)+52>>2]&63](q,k[s>>2]|0,0)|0;switch(m<<24>>24){case 48:case 69:{w=p+8|0;if((w|0)==(h|0)){S=J;G=28;break a}T=s;U=Rc[k[(k[q>>2]|0)+52>>2]&63](q,k[w>>2]|0,0)|0;V=m;break}default:{T=p;U=m;V=0}}m=k[(k[a>>2]|0)+36>>2]|0;k[n>>2]=I;k[o>>2]=K;k[l>>2]=k[n>>2];k[j>>2]=k[o>>2];w=pd[m&15](a,l,j,d,e,f,U,V)|0;k[b>>2]=w;W=T+8|0}else if((G|0)==30){G=0;w=p;while(1){m=w+4|0;if((m|0)==(h|0)){X=h;break}if(Rc[k[(k[q>>2]|0)+12>>2]&63](q,8192,k[m>>2]|0)|0)w=m;else{X=m;break}}w=M;m=L;s=M;while(1){if(m){t=k[m+12>>2]|0;if((t|0)==(k[m+16>>2]|0))Y=Hc[k[(k[m>>2]|0)+36>>2]&511](m)|0;else Y=k[t>>2]|0;if((Y|0)==-1){k[b>>2]=0;Z=1;_=0}else{Z=0;_=m}}else{Z=1;_=0}do if(s){t=k[s+12>>2]|0;if((t|0)==(k[s+16>>2]|0))$=Hc[k[(k[s>>2]|0)+36>>2]&511](s)|0;else $=k[t>>2]|0;if(($|0)!=-1)if(Z^(w|0)==0){aa=w;ba=w;break}else{W=X;break b}else{k[c>>2]=0;ca=0;G=46;break}}else{ca=w;G=46}while(0);if((G|0)==46){G=0;if(Z){W=X;break b}else{aa=ca;ba=0}}t=_+12|0;v=k[t>>2]|0;da=_+16|0;if((v|0)==(k[da>>2]|0))ea=Hc[k[(k[_>>2]|0)+36>>2]&511](_)|0;else ea=k[v>>2]|0;if(!(Rc[k[(k[q>>2]|0)+12>>2]&63](q,8192,ea)|0)){W=X;break b}v=k[t>>2]|0;if((v|0)==(k[da>>2]|0)){Hc[k[(k[_>>2]|0)+40>>2]&511](_)|0;w=aa;m=_;s=ba;continue}else{k[t>>2]=v+4;w=aa;m=_;s=ba;continue}}}else if((G|0)==59){G=0;s=k[P>>2]|0;if((s|0)==(k[Q>>2]|0))Hc[k[(k[O>>2]|0)+40>>2]&511](O)|0;else k[P>>2]=s+4;W=p+4|0}while(0);p=W;g=k[e>>2]|0}if((G|0)==19){k[e>>2]=4;u=F}else if((G|0)==23){k[e>>2]=4;u=R}else if((G|0)==28){k[e>>2]=4;u=S}if(u){S=k[u+12>>2]|0;if((S|0)==(k[u+16>>2]|0))fa=Hc[k[(k[u>>2]|0)+36>>2]&511](u)|0;else fa=k[S>>2]|0;if((fa|0)==-1){k[b>>2]=0;ga=0;ha=1}else{ga=u;ha=0}}else{ga=0;ha=1}u=k[c>>2]|0;do if(u){b=k[u+12>>2]|0;if((b|0)==(k[u+16>>2]|0))ia=Hc[k[(k[u>>2]|0)+36>>2]&511](u)|0;else ia=k[b>>2]|0;if((ia|0)!=-1)if(ha)break;else{G=79;break}else{k[c>>2]=0;G=77;break}}else G=77;while(0);if((G|0)==77?ha:0)G=79;if((G|0)==79)k[e>>2]=k[e>>2]|2;r=i;return ga|0}function Iya(a){a=a|0;return}function Jya(a){a=a|0;Sqa(a);return}function Kya(a){a=a|0;return 2}function Lya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;j=g+4|0;l=g;k[j>>2]=k[b>>2];k[l>>2]=k[c>>2];k[i>>2]=k[j>>2];k[h>>2]=k[l>>2];l=Hya(a,i,h,d,e,f,49888,49920)|0;r=g;return l|0}function Mya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;g=r;r=r+16|0;h=g+12|0;j=g+8|0;l=g+4|0;m=g;n=a+8|0;o=Hc[k[(k[n>>2]|0)+20>>2]&511](n)|0;k[l>>2]=k[b>>2];k[m>>2]=k[c>>2];c=i[o>>0]|0;b=(c&1)==0;n=o+4|0;p=b?n:k[o+8>>2]|0;o=p+((b?(c&255)>>>1:k[n>>2]|0)<<2)|0;k[j>>2]=k[l>>2];k[h>>2]=k[m>>2];m=Hya(a,j,h,d,e,f,p,o)|0;r=g;return m|0}function Nya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+8|0;i=g+4|0;j=g;l=xva(d)|0;k[i>>2]=l;B=0;d=Xa(238,i|0,49312)|0;i=B;B=0;if(i&1){i=Rb()|0;BEa(l)|0;Qb(i|0)}else{BEa(l)|0;k[j>>2]=k[c>>2];k[h>>2]=k[j>>2];Oya(a,f+24|0,b,h,e,d);r=g;return k[b>>2]|0}return 0}function Oya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=r;r=r+16|0;h=g+4|0;i=g;j=a+8|0;a=Hc[k[k[j>>2]>>2]&511](j)|0;k[i>>2]=k[d>>2];k[h>>2]=k[i>>2];i=($Ca(c,h,a,a+168|0,f,e,0)|0)-a|0;if((i|0)<168)k[b>>2]=((i|0)/12|0|0)%7|0;r=g;return}function Pya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+8|0;i=g+4|0;j=g;l=xva(d)|0;k[i>>2]=l;B=0;d=Xa(238,i|0,49312)|0;i=B;B=0;if(i&1){i=Rb()|0;BEa(l)|0;Qb(i|0)}else{BEa(l)|0;k[j>>2]=k[c>>2];k[h>>2]=k[j>>2];Qya(a,f+16|0,b,h,e,d);r=g;return k[b>>2]|0}return 0}function Qya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=r;r=r+16|0;h=g+4|0;i=g;j=a+8|0;a=Hc[k[(k[j>>2]|0)+4>>2]&511](j)|0;k[i>>2]=k[d>>2];k[h>>2]=k[i>>2];i=($Ca(c,h,a,a+288|0,f,e,0)|0)-a|0;if((i|0)<288)k[b>>2]=((i|0)/12|0|0)%12|0;r=g;return}function Rya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+8|0;i=g+4|0;j=g;l=xva(d)|0;k[i>>2]=l;B=0;d=Xa(238,i|0,49312)|0;i=B;B=0;if(i&1){i=Rb()|0;BEa(l)|0;Qb(i|0)}else{BEa(l)|0;k[j>>2]=k[c>>2];k[h>>2]=k[j>>2];Sya(a,f+20|0,b,h,e,d);r=g;return k[b>>2]|0}return 0}function Sya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=nDa(c,g,e,f,4)|0;if(!(k[e>>2]&4)){if((h|0)<69)i=h+2e3|0;else i=(h+-69|0)>>>0<31?h+1900|0:h;k[b>>2]=i+-1900}r=a;return}function Tya(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;h=r;r=r+144|0;j=h+132|0;l=h+116|0;m=h+128|0;n=h+124|0;o=h+120|0;p=h+112|0;q=h+108|0;s=h+104|0;t=h+100|0;u=h+96|0;v=h+92|0;w=h+88|0;x=h+84|0;y=h+80|0;z=h+76|0;A=h+72|0;C=h+68|0;D=h+64|0;E=h+60|0;F=h+56|0;G=h+52|0;H=h+48|0;I=h+44|0;J=h+40|0;K=h+36|0;L=h+32|0;M=h+28|0;N=h+24|0;O=h+20|0;P=h+16|0;Q=h+12|0;R=h+8|0;S=h+4|0;T=h;k[e>>2]=0;U=xva(d)|0;k[m>>2]=U;B=0;V=Xa(238,m|0,49312)|0;m=B;B=0;if(m&1){m=Rb()|0;BEa(U)|0;Qb(m|0)}BEa(U)|0;do switch(g<<24>>24|0){case 65:case 97:{k[n>>2]=k[c>>2];k[j>>2]=k[n>>2];Oya(a,f+24|0,b,j,e,V);W=28;break}case 104:case 66:case 98:{k[o>>2]=k[c>>2];k[j>>2]=k[o>>2];Qya(a,f+16|0,b,j,e,V);W=28;break}case 99:{U=a+8|0;m=Hc[k[(k[U>>2]|0)+12>>2]&511](U)|0;k[p>>2]=k[b>>2];k[q>>2]=k[c>>2];U=i[m>>0]|0;X=(U&1)==0;Y=m+4|0;Z=X?Y:k[m+8>>2]|0;m=Z+((X?(U&255)>>>1:k[Y>>2]|0)<<2)|0;k[l>>2]=k[p>>2];k[j>>2]=k[q>>2];Y=Hya(a,l,j,d,e,f,Z,m)|0;k[b>>2]=Y;W=28;break}case 101:case 100:{k[s>>2]=k[c>>2];k[j>>2]=k[s>>2];Uya(a,f+12|0,b,j,e,V);W=28;break}case 68:{k[t>>2]=k[b>>2];k[u>>2]=k[c>>2];k[l>>2]=k[t>>2];k[j>>2]=k[u>>2];Y=Hya(a,l,j,d,e,f,49920,49952)|0;k[b>>2]=Y;W=28;break}case 70:{k[v>>2]=k[b>>2];k[w>>2]=k[c>>2];k[l>>2]=k[v>>2];k[j>>2]=k[w>>2];Y=Hya(a,l,j,d,e,f,49952,49984)|0;k[b>>2]=Y;W=28;break}case 72:{k[x>>2]=k[c>>2];k[j>>2]=k[x>>2];Vya(a,f+8|0,b,j,e,V);W=28;break}case 73:{k[y>>2]=k[c>>2];k[j>>2]=k[y>>2];Wya(a,f+8|0,b,j,e,V);W=28;break}case 106:{k[z>>2]=k[c>>2];k[j>>2]=k[z>>2];Xya(a,f+28|0,b,j,e,V);W=28;break}case 109:{k[A>>2]=k[c>>2];k[j>>2]=k[A>>2];Yya(a,f+16|0,b,j,e,V);W=28;break}case 77:{k[C>>2]=k[c>>2];k[j>>2]=k[C>>2];Zya(a,f+4|0,b,j,e,V);W=28;break}case 116:case 110:{k[D>>2]=k[c>>2];k[j>>2]=k[D>>2];_ya(a,b,j,e,V);W=28;break}case 112:{k[E>>2]=k[c>>2];k[j>>2]=k[E>>2];$ya(a,f+8|0,b,j,e,V);W=28;break}case 114:{k[F>>2]=k[b>>2];k[G>>2]=k[c>>2];k[l>>2]=k[F>>2];k[j>>2]=k[G>>2];Y=Hya(a,l,j,d,e,f,49984,50028)|0;k[b>>2]=Y;W=28;break}case 82:{k[H>>2]=k[b>>2];k[I>>2]=k[c>>2];k[l>>2]=k[H>>2];k[j>>2]=k[I>>2];Y=Hya(a,l,j,d,e,f,50028,50048)|0;k[b>>2]=Y;W=28;break}case 83:{k[J>>2]=k[c>>2];k[j>>2]=k[J>>2];aza(a,f,b,j,e,V);W=28;break}case 84:{k[K>>2]=k[b>>2];k[L>>2]=k[c>>2];k[l>>2]=k[K>>2];k[j>>2]=k[L>>2];Y=Hya(a,l,j,d,e,f,50048,50080)|0;k[b>>2]=Y;W=28;break}case 119:{k[M>>2]=k[c>>2];k[j>>2]=k[M>>2];bza(a,f+24|0,b,j,e,V);W=28;break}case 120:{Y=k[(k[a>>2]|0)+20>>2]|0;k[N>>2]=k[b>>2];k[O>>2]=k[c>>2];k[l>>2]=k[N>>2];k[j>>2]=k[O>>2];_=Gc[Y&63](a,l,j,d,e,f)|0;break}case 88:{Y=a+8|0;m=Hc[k[(k[Y>>2]|0)+24>>2]&511](Y)|0;k[P>>2]=k[b>>2];k[Q>>2]=k[c>>2];Y=i[m>>0]|0;Z=(Y&1)==0;U=m+4|0;X=Z?U:k[m+8>>2]|0;m=X+((Z?(Y&255)>>>1:k[U>>2]|0)<<2)|0;k[l>>2]=k[P>>2];k[j>>2]=k[Q>>2];U=Hya(a,l,j,d,e,f,X,m)|0;k[b>>2]=U;W=28;break}case 121:{k[R>>2]=k[c>>2];k[j>>2]=k[R>>2];Sya(a,f+20|0,b,j,e,V);W=28;break}case 89:{k[S>>2]=k[c>>2];k[j>>2]=k[S>>2];cza(a,f+20|0,b,j,e,V);W=28;break}case 37:{k[T>>2]=k[c>>2];k[j>>2]=k[T>>2];dza(a,b,j,e,V);W=28;break}default:{k[e>>2]=k[e>>2]|4;W=28}}while(0);if((W|0)==28)_=k[b>>2]|0;r=h;return _|0}function Uya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=nDa(c,g,e,f,2)|0;f=k[e>>2]|0;if((h+-1|0)>>>0<31&(f&4|0)==0)k[b>>2]=h;else k[e>>2]=f|4;r=a;return}function Vya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=nDa(c,g,e,f,2)|0;f=k[e>>2]|0;if((h|0)<24&(f&4|0)==0)k[b>>2]=h;else k[e>>2]=f|4;r=a;return}function Wya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=nDa(c,g,e,f,2)|0;f=k[e>>2]|0;if((h+-1|0)>>>0<12&(f&4|0)==0)k[b>>2]=h;else k[e>>2]=f|4;r=a;return}function Xya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=nDa(c,g,e,f,3)|0;f=k[e>>2]|0;if((h|0)<366&(f&4|0)==0)k[b>>2]=h;else k[e>>2]=f|4;r=a;return}function Yya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=nDa(c,g,e,f,2)|0;f=k[e>>2]|0;if((h|0)<13&(f&4|0)==0)k[b>>2]=h+-1;else k[e>>2]=f|4;r=a;return}function Zya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=nDa(c,g,e,f,2)|0;f=k[e>>2]|0;if((h|0)<60&(f&4|0)==0)k[b>>2]=h;else k[e>>2]=f|4;r=a;return}function _ya(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:while(1){a=k[b>>2]|0;do if(a){f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))g=Hc[k[(k[a>>2]|0)+36>>2]&511](a)|0;else g=k[f>>2]|0;if((g|0)==-1){k[b>>2]=0;h=1;break}else{h=(k[b>>2]|0)==0;break}}else h=1;while(0);a=k[c>>2]|0;do if(a){f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))i=Hc[k[(k[a>>2]|0)+36>>2]&511](a)|0;else i=k[f>>2]|0;if((i|0)!=-1)if(h){j=a;break}else{l=a;break a}else{k[c>>2]=0;m=15;break}}else m=15;while(0);if((m|0)==15){m=0;if(h){l=0;break}else j=0}a=k[b>>2]|0;f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))n=Hc[k[(k[a>>2]|0)+36>>2]&511](a)|0;else n=k[f>>2]|0;if(!(Rc[k[(k[e>>2]|0)+12>>2]&63](e,8192,n)|0)){l=j;break}f=k[b>>2]|0;a=f+12|0;o=k[a>>2]|0;if((o|0)==(k[f+16>>2]|0)){Hc[k[(k[f>>2]|0)+40>>2]&511](f)|0;continue}else{k[a>>2]=o+4;continue}}j=k[b>>2]|0;do if(j){n=k[j+12>>2]|0;if((n|0)==(k[j+16>>2]|0))p=Hc[k[(k[j>>2]|0)+36>>2]&511](j)|0;else p=k[n>>2]|0;if((p|0)==-1){k[b>>2]=0;q=1;break}else{q=(k[b>>2]|0)==0;break}}else q=1;while(0);do if(l){b=k[l+12>>2]|0;if((b|0)==(k[l+16>>2]|0))r=Hc[k[(k[l>>2]|0)+36>>2]&511](l)|0;else r=k[b>>2]|0;if((r|0)!=-1)if(q)break;else{m=39;break}else{k[c>>2]=0;m=37;break}}else m=37;while(0);if((m|0)==37?q:0)m=39;if((m|0)==39)k[d>>2]=k[d>>2]|2;return}function $ya(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0;g=r;r=r+16|0;h=g+4|0;j=g;l=a+8|0;a=Hc[k[(k[l>>2]|0)+8>>2]&511](l)|0;l=i[a>>0]|0;if(!(l&1))m=(l&255)>>>1;else m=k[a+4>>2]|0;l=i[a+12>>0]|0;if(!(l&1))n=(l&255)>>>1;else n=k[a+16>>2]|0;do if((m|0)!=(0-n|0)){k[j>>2]=k[d>>2];k[h>>2]=k[j>>2];l=$Ca(c,h,a,a+24|0,f,e,0)|0;o=k[b>>2]|0;if((l|0)==(a|0)&(o|0)==12){k[b>>2]=0;break}if((o|0)<12&(l-a|0)==12)k[b>>2]=o+12}else k[e>>2]=k[e>>2]|4;while(0);r=g;return}function aza(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=nDa(c,g,e,f,2)|0;f=k[e>>2]|0;if((h|0)<61&(f&4|0)==0)k[b>>2]=h;else k[e>>2]=f|4;r=a;return}function bza(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=nDa(c,g,e,f,1)|0;f=k[e>>2]|0;if((h|0)<7&(f&4|0)==0)k[b>>2]=h;else k[e>>2]=f|4;r=a;return}function cza(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a=r;r=r+16|0;g=a+4|0;h=a;k[h>>2]=k[d>>2];k[g>>2]=k[h>>2];h=nDa(c,g,e,f,4)|0;if(!(k[e>>2]&4))k[b>>2]=h+-1900;r=a;return}function dza(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;a=k[b>>2]|0;do if(a){f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))g=Hc[k[(k[a>>2]|0)+36>>2]&511](a)|0;else g=k[f>>2]|0;if((g|0)==-1){k[b>>2]=0;h=1;break}else{h=(k[b>>2]|0)==0;break}}else h=1;while(0);g=k[c>>2]|0;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))i=Hc[k[(k[g>>2]|0)+36>>2]&511](g)|0;else i=k[a>>2]|0;if((i|0)!=-1)if(h){j=g;l=17;break}else{l=16;break}else{k[c>>2]=0;l=14;break}}else l=14;while(0);if((l|0)==14)if(h)l=16;else{j=0;l=17}a:do if((l|0)==16)k[d>>2]=k[d>>2]|6;else if((l|0)==17){h=k[b>>2]|0;g=k[h+12>>2]|0;if((g|0)==(k[h+16>>2]|0))m=Hc[k[(k[h>>2]|0)+36>>2]&511](h)|0;else m=k[g>>2]|0;if((Rc[k[(k[e>>2]|0)+52>>2]&63](e,m,0)|0)<<24>>24!=37){k[d>>2]=k[d>>2]|4;break}g=k[b>>2]|0;h=g+12|0;i=k[h>>2]|0;if((i|0)==(k[g+16>>2]|0)){Hc[k[(k[g>>2]|0)+40>>2]&511](g)|0;a=k[b>>2]|0;if(!a)n=1;else{o=a;l=25}}else{k[h>>2]=i+4;o=g;l=25}do if((l|0)==25){g=k[o+12>>2]|0;if((g|0)==(k[o+16>>2]|0))p=Hc[k[(k[o>>2]|0)+36>>2]&511](o)|0;else p=k[g>>2]|0;if((p|0)==-1){k[b>>2]=0;n=1;break}else{n=(k[b>>2]|0)==0;break}}while(0);do if(j){g=k[j+12>>2]|0;if((g|0)==(k[j+16>>2]|0))q=Hc[k[(k[j>>2]|0)+36>>2]&511](j)|0;else q=k[g>>2]|0;if((q|0)!=-1)if(n)break a;else break;else{k[c>>2]=0;l=37;break}}else l=37;while(0);if((l|0)==37?!n:0)break;k[d>>2]=k[d>>2]|2}while(0);return}function eza(a){a=a|0;fza(a+8|0);return}function fza(a){a=a|0;var b=0,c=0,d=0,e=0;b=k[a>>2]|0;B=0;c=bb(3)|0;d=B;B=0;do if(!(d&1)){if((b|0)!=(c|0)?(B=0,va(551,k[a>>2]|0),e=B,B=0,e&1):0)break;return}while(0);a=Rb(0)|0;Dd(a)}function gza(a){a=a|0;fza(a+8|0);Sqa(a);return}function hza(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0;d=r;r=r+112|0;c=d+4|0;h=d;k[h>>2]=c+100;iza(a+8|0,c,h,e,f,g);g=k[h>>2]|0;h=c;c=k[b>>2]|0;while(1){if((h|0)==(g|0)){j=c;break}b=i[h>>0]|0;do if(c){f=c+24|0;e=k[f>>2]|0;if((e|0)==(k[c+28>>2]|0)){a=(ed[k[(k[c>>2]|0)+52>>2]&511](c,b&255)|0)==-1;l=a?0:c;break}else{k[f>>2]=e+1;i[e>>0]=b;l=c;break}}else l=0;while(0);h=h+1|0;c=l}r=d;return j|0}function iza(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0;g=r;r=r+16|0;h=g;i[h>>0]=37;j=h+1|0;i[j>>0]=e;l=h+2|0;i[l>>0]=f;i[h+3>>0]=0;if(f<<24>>24){i[j>>0]=f;i[l>>0]=e}e=b+(Hb(b|0,(k[c>>2]|0)-b|0,h|0,d|0,k[a>>2]|0)|0)|0;k[c>>2]=e;r=g;return}function jza(a){a=a|0;fza(a+8|0);return}function kza(a){a=a|0;fza(a+8|0);Sqa(a);return}function lza(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0;d=r;r=r+416|0;c=d+8|0;h=d;k[h>>2]=c+400;mza(a+8|0,c,h,e,f,g);g=k[h>>2]|0;h=c;c=k[b>>2]|0;while(1){if((h|0)==(g|0)){i=c;break}b=k[h>>2]|0;if(!c)j=0;else{f=c+24|0;e=k[f>>2]|0;if((e|0)==(k[c+28>>2]|0))l=ed[k[(k[c>>2]|0)+52>>2]&511](c,b)|0;else{k[f>>2]=e+4;k[e>>2]=b;l=b}j=(l|0)==-1?0:c}h=h+4|0;c=j}r=d;return i|0}function mza(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+128|0;h=g+16|0;i=g+12|0;j=g;l=g+8|0;k[i>>2]=h+100;iza(a,h,i,d,e,f);f=j;k[f>>2]=0;k[f+4>>2]=0;k[l>>2]=h;h=(k[c>>2]|0)-b>>2;f=esa(k[a>>2]|0)|0;B=0;a=cb(70,b|0,l|0,h|0,j|0)|0;j=B;B=0;if(j&1){j=Rb()|0;if((f|0)!=0?(B=0,ya(444,f|0)|0,h=B,B=0,h&1):0){h=Rb(0)|0;Dd(h)}Qb(j|0)}if((f|0)!=0?(B=0,ya(444,f|0)|0,f=B,B=0,f&1):0){f=Rb(0)|0;Dd(f)}if((a|0)==-1)iAa(159178);else{k[c>>2]=b+(a<<2);r=g;return}}function nza(a){a=a|0;return}function oza(a){a=a|0;Sqa(a);return}function pza(a){a=a|0;return 127}function qza(a){a=a|0;return 127}function rza(a,b){a=a|0;b=b|0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function sza(a,b){a=a|0;b=b|0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function tza(a,b){a=a|0;b=b|0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function uza(a,b){a=a|0;b=b|0;Xua(a,1,45);return}function vza(a){a=a|0;return 0}function wza(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function xza(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function yza(a){a=a|0;return}function zza(a){a=a|0;Sqa(a);return}function Aza(a){a=a|0;return 127}function Bza(a){a=a|0;return 127}function Cza(a,b){a=a|0;b=b|0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function Dza(a,b){a=a|0;b=b|0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function Eza(a,b){a=a|0;b=b|0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function Fza(a,b){a=a|0;b=b|0;Xua(a,1,45);return}function Gza(a){a=a|0;return 0}function Hza(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function Iza(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function Jza(a){a=a|0;return}function Kza(a){a=a|0;Sqa(a);return}function Lza(a){a=a|0;return 2147483647}function Mza(a){a=a|0;return 2147483647}function Nza(a,b){a=a|0;b=b|0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function Oza(a,b){a=a|0;b=b|0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function Pza(a,b){a=a|0;b=b|0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function Qza(a,b){a=a|0;b=b|0;jva(a,1,45);return}function Rza(a){a=a|0;return 0}function Sza(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function Tza(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function Uza(a){a=a|0;return}function Vza(a){a=a|0;Sqa(a);return}function Wza(a){a=a|0;return 2147483647}function Xza(a){a=a|0;return 2147483647}function Yza(a,b){a=a|0;b=b|0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function Zza(a,b){a=a|0;b=b|0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function _za(a,b){a=a|0;b=b|0;b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}return}function $za(a,b){a=a|0;b=b|0;jva(a,1,45);return}function aAa(a){a=a|0;return 0}function bAa(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function cAa(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function dAa(a){a=a|0;return}function eAa(a){a=a|0;Sqa(a);return}function fAa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;a=r;r=r+240|0;h=a+24|0;j=a;l=a+140|0;m=a+16|0;n=a+12|0;o=a+8|0;p=a+136|0;q=a+4|0;s=a+36|0;k[m>>2]=l;t=m+4|0;k[t>>2]=552;u=l+100|0;B=0;v=ya(421,e|0)|0;w=B;B=0;if(!(w&1)){k[o>>2]=v;B=0;v=Xa(238,o|0,49320)|0;w=B;B=0;a:do if(!(w&1)?(i[p>>0]=0,k[q>>2]=k[c>>2],x=k[e+4>>2]|0,B=0,k[h>>2]=k[q>>2],y=Ua(1,b|0,h|0,d|0,o|0,x|0,f|0,p|0,v|0,m|0,n|0,u|0)|0,x=B,B=0,!(x&1)):0){b:do if(y){B=0;cb(k[(k[v>>2]|0)+32>>2]|0,v|0,159199,159209,h|0)|0;x=B;B=0;if(x&1){z=10;break a}x=k[n>>2]|0;A=k[m>>2]|0;C=x-A|0;D=A;A=x;if((C|0)>98){x=lua(C+2|0)|0;C=x;if(!x){B=0;fb(7);E=B;B=0;if(E&1)F=C;else{G=C;H=0;z=13}}else{G=C;H=x;z=13}}else{G=0;H=s;z=13}do if((z|0)==13){if(!(i[p>>0]|0))I=H;else{i[H>>0]=45;I=H+1|0}x=h+10|0;C=h;E=A;J=I;K=D;while(1){if(K>>>0>=E>>>0){L=J;break}M=i[K>>0]|0;N=h;while(1){if((N|0)==(x|0)){O=x;break}if((i[N>>0]|0)==M<<24>>24){O=N;break}N=N+1|0}i[J>>0]=i[159199+(O-C)>>0]|0;E=k[n>>2]|0;J=J+1|0;K=K+1|0}i[L>>0]=0;k[j>>2]=g;if((rta(s,159210,j)|0)!=1?(B=0,va(553,159214),K=B,B=0,K&1):0){F=G;break}if(G)mua(G);break b}while(0);D=Rb()|0;A=Q;if(!F){P=D;R=A;S=m;break a}mua(F);P=D;R=A;S=m;break a}while(0);y=k[b>>2]|0;do if(y)if((k[y+12>>2]|0)==(k[y+16>>2]|0)){B=0;A=ya(k[(k[y>>2]|0)+36>>2]|0,y|0)|0;D=B;B=0;if(D&1){z=10;break a}if((A|0)==-1){k[b>>2]=0;T=0;break}else{T=k[b>>2]|0;break}}else T=y;else T=0;while(0);y=(T|0)==0;A=k[c>>2]|0;do if(A){if((k[A+12>>2]|0)==(k[A+16>>2]|0)){B=0;D=ya(k[(k[A>>2]|0)+36>>2]|0,A|0)|0;K=B;B=0;if(K&1){z=10;break a}if((D|0)==-1){k[c>>2]=0;z=39;break}}if(!y)z=40}else z=39;while(0);if((z|0)==39?y:0)z=40;if((z|0)==40)k[f>>2]=k[f>>2]|2;A=k[b>>2]|0;BEa(k[o>>2]|0)|0;D=k[m>>2]|0;k[m>>2]=0;if((D|0)!=0?(B=0,va(k[t>>2]|0,D|0),D=B,B=0,D&1):0){D=Rb(0)|0;Dd(D)}r=a;return A|0}else z=10;while(0);if((z|0)==10){a=Rb()|0;P=a;R=Q;S=m}BEa(k[o>>2]|0)|0;o=k[S>>2]|0;k[S>>2]=0;if(!o){U=P;V=R}else{W=P;X=R;Y=k[t>>2]|0;Z=o;z=47}}else{o=Rb()|0;k[m>>2]=0;W=o;X=Q;Y=552;Z=l;z=47}if((z|0)==47){B=0;va(Y|0,Z|0);Z=B;B=0;if(Z&1){Z=Rb(0)|0;Dd(Z)}else{U=W;V=X}}Qb(U|0);return 0}function gAa(a){a=a|0;return}function hAa(a,b,c,d,e,f,g,h,m,n,o){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0;p=r;r=r+512|0;q=p+88|0;s=p+96|0;t=p+80|0;u=p+72|0;v=p+68|0;w=p+500|0;x=p+497|0;y=p+496|0;z=p+56|0;A=p+44|0;C=p+32|0;D=p+20|0;E=p+8|0;F=p+4|0;G=p;k[q>>2]=o;k[t>>2]=s;o=t+4|0;k[o>>2]=552;k[u>>2]=s;k[v>>2]=s+400;H=0;while(1){if((H|0)==3)break;k[z+(H<<2)>>2]=0;H=H+1|0}H=0;while(1){if((H|0)==3)break;k[A+(H<<2)>>2]=0;H=H+1|0}H=0;while(1){if((H|0)==3)break;k[C+(H<<2)>>2]=0;H=H+1|0}H=0;while(1){if((H|0)==3)break;k[D+(H<<2)>>2]=0;H=H+1|0}H=0;while(1){if((H|0)==3)break;k[E+(H<<2)>>2]=0;H=H+1|0}B=0;Wa(1,c|0,d|0,w|0,x|0,y|0,z|0,A|0,C|0,D|0,F|0);d=B;B=0;a:do if(d&1){c=Rb()|0;I=c;J=Q}else{k[n>>2]=k[m>>2];c=h+8|0;H=C+4|0;K=D+4|0;L=D+8|0;M=D+1|0;N=C+8|0;O=C+1|0;P=(e&512|0)!=0;R=A+8|0;S=A+1|0;T=A+4|0;U=E+4|0;V=E+8|0;W=E+1|0;X=w+3|0;Y=z+4|0;Z=s;_=0;$=0;b:while(1){if(_>>>0>=4){aa=Z;ba=$;ca=251;break}da=k[a>>2]|0;do if(da)if((k[da+12>>2]|0)==(k[da+16>>2]|0)){B=0;ea=ya(k[(k[da>>2]|0)+36>>2]|0,da|0)|0;fa=B;B=0;if(fa&1){ca=38;break b}if((ea|0)==-1){k[a>>2]=0;ga=0;break}else{ga=k[a>>2]|0;break}}else ga=da;else ga=0;while(0);da=(ga|0)==0;ea=k[b>>2]|0;do if(ea){if((k[ea+12>>2]|0)!=(k[ea+16>>2]|0))if(da){ha=ea;break}else{aa=Z;ba=$;ca=251;break b}B=0;fa=ya(k[(k[ea>>2]|0)+36>>2]|0,ea|0)|0;ia=B;B=0;if(ia&1){ca=38;break b}if((fa|0)!=-1)if(da){ha=ea;break}else{aa=Z;ba=$;ca=251;break b}else{k[b>>2]=0;ca=31;break}}else ca=31;while(0);if((ca|0)==31){ca=0;if(da){aa=Z;ba=$;ca=251;break}else ha=0}c:do switch(i[w+_>>0]|0){case 1:{if((_|0)!=3){ea=k[a>>2]|0;fa=k[ea+12>>2]|0;if((fa|0)==(k[ea+16>>2]|0)){B=0;ia=ya(k[(k[ea>>2]|0)+36>>2]|0,ea|0)|0;ea=B;B=0;if(ea&1){ca=38;break b}else ja=ia}else ja=l[fa>>0]|0;if((ja&255)<<24>>24<=-1){ca=56;break b}if(!(j[(k[c>>2]|0)+(ja<<24>>24<<1)>>1]&8192)){ca=56;break b}fa=k[a>>2]|0;ia=fa+12|0;ea=k[ia>>2]|0;if((ea|0)==(k[fa+16>>2]|0)){B=0;ka=ya(k[(k[fa>>2]|0)+40>>2]|0,fa|0)|0;fa=B;B=0;if(fa&1){ca=38;break b}else la=ka}else{k[ia>>2]=ea+1;la=l[ea>>0]|0}B=0;wa(503,E|0,la&255|0);ea=B;B=0;if(ea&1){ca=38;break b}else{ma=ha;na=ha;ca=58}}else{oa=Z;pa=$}break}case 0:{if((_|0)==3){oa=Z;pa=$}else{ma=ha;na=ha;ca=58}break}case 3:{ea=i[C>>0]|0;ia=(ea&1)==0?(ea&255)>>>1:k[H>>2]|0;ka=i[D>>0]|0;fa=(ka&1)==0?(ka&255)>>>1:k[K>>2]|0;if((ia|0)==(0-fa|0)){oa=Z;pa=$}else{if(!ia){ia=k[a>>2]|0;qa=k[ia+12>>2]|0;if((qa|0)==(k[ia+16>>2]|0)){B=0;ra=ya(k[(k[ia>>2]|0)+36>>2]|0,ia|0)|0;ia=B;B=0;if(ia&1){ca=38;break b}sa=ra;ta=i[D>>0]|0}else{sa=l[qa>>0]|0;ta=ka}if((sa&255)<<24>>24!=(i[((ta&1)==0?M:k[L>>2]|0)>>0]|0)){oa=Z;pa=$;break c}ka=k[a>>2]|0;qa=ka+12|0;ra=k[qa>>2]|0;if((ra|0)==(k[ka+16>>2]|0)){B=0;ya(k[(k[ka>>2]|0)+40>>2]|0,ka|0)|0;ka=B;B=0;if(ka&1){ca=38;break b}}else k[qa>>2]=ra+1;i[g>>0]=1;ra=i[D>>0]|0;oa=Z;pa=((ra&1)==0?(ra&255)>>>1:k[K>>2]|0)>>>0>1?D:$;break c}ra=k[a>>2]|0;qa=k[ra+12>>2]|0;ka=k[ra+16>>2]|0;ia=(qa|0)==(ka|0);if(!fa){if(ia){B=0;fa=ya(k[(k[ra>>2]|0)+36>>2]|0,ra|0)|0;ua=B;B=0;if(ua&1){ca=38;break b}xa=fa;za=i[C>>0]|0}else{xa=l[qa>>0]|0;za=ea}if((xa&255)<<24>>24!=(i[((za&1)==0?O:k[N>>2]|0)>>0]|0)){i[g>>0]=1;oa=Z;pa=$;break c}fa=k[a>>2]|0;ua=fa+12|0;Aa=k[ua>>2]|0;if((Aa|0)==(k[fa+16>>2]|0)){B=0;ya(k[(k[fa>>2]|0)+40>>2]|0,fa|0)|0;fa=B;B=0;if(fa&1){ca=38;break b}}else k[ua>>2]=Aa+1;Aa=i[C>>0]|0;oa=Z;pa=((Aa&1)==0?(Aa&255)>>>1:k[H>>2]|0)>>>0>1?C:$;break c}if(ia){B=0;ia=ya(k[(k[ra>>2]|0)+36>>2]|0,ra|0)|0;Aa=B;B=0;if(Aa&1){ca=38;break b}Aa=k[a>>2]|0;Ba=ia;Ca=i[C>>0]|0;Da=Aa;Ea=k[Aa+12>>2]|0;Fa=k[Aa+16>>2]|0}else{Ba=l[qa>>0]|0;Ca=ea;Da=ra;Ea=qa;Fa=ka}ka=Da+12|0;qa=(Ea|0)==(Fa|0);if((Ba&255)<<24>>24==(i[((Ca&1)==0?O:k[N>>2]|0)>>0]|0)){if(qa){B=0;ya(k[(k[Da>>2]|0)+40>>2]|0,Da|0)|0;ra=B;B=0;if(ra&1){ca=38;break b}}else k[ka>>2]=Ea+1;ka=i[C>>0]|0;oa=Z;pa=((ka&1)==0?(ka&255)>>>1:k[H>>2]|0)>>>0>1?C:$;break c}if(qa){B=0;qa=ya(k[(k[Da>>2]|0)+36>>2]|0,Da|0)|0;ka=B;B=0;if(ka&1){ca=38;break b}else Ga=qa}else Ga=l[Ea>>0]|0;if((Ga&255)<<24>>24!=(i[((i[D>>0]&1)==0?M:k[L>>2]|0)>>0]|0)){ca=120;break b}qa=k[a>>2]|0;ka=qa+12|0;ra=k[ka>>2]|0;if((ra|0)==(k[qa+16>>2]|0)){B=0;ya(k[(k[qa>>2]|0)+40>>2]|0,qa|0)|0;qa=B;B=0;if(qa&1){ca=38;break b}}else k[ka>>2]=ra+1;i[g>>0]=1;ra=i[D>>0]|0;oa=Z;pa=((ra&1)==0?(ra&255)>>>1:k[K>>2]|0)>>>0>1?D:$}break}case 2:{if(!(_>>>0<2|($|0)!=0)?!(P|(_|0)==2&(i[X>>0]|0)!=0):0){oa=Z;pa=0;break c}ra=i[A>>0]|0;ka=(ra&1)==0;qa=k[R>>2]|0;ea=ka?S:qa;Aa=ea;d:do if((_|0)!=0?(l[w+(_+-1)>>0]|0)<2:0){ia=ea+(ka?(ra&255)>>>1:k[T>>2]|0)|0;ua=Aa;while(1){fa=ua;if((fa|0)==(ia|0)){Ha=ua;break}Ia=i[fa>>0]|0;if(Ia<<24>>24<=-1){Ha=ua;break}if(!(j[(k[c>>2]|0)+(Ia<<24>>24<<1)>>1]&8192)){Ha=ua;break}ua=fa+1|0}ua=Ha-Aa|0;ia=i[E>>0]|0;fa=(ia&1)==0;Ia=fa?(ia&255)>>>1:k[U>>2]|0;if(ua>>>0<=Ia>>>0){ia=(fa?W:k[V>>2]|0)+Ia|0;Ia=ea;fa=ia+(0-ua)|0;while(1){if((fa|0)==(ia|0)){Ja=ha;Ka=ra;La=qa;Ma=ha;Na=Ha;break d}if((i[fa>>0]|0)!=(i[Ia>>0]|0)){Ja=ha;Ka=ra;La=qa;Ma=ha;Na=Aa;break d}Ia=Ia+1|0;fa=fa+1|0}}else{Ja=ha;Ka=ra;La=qa;Ma=ha;Na=Aa}}else{Ja=ha;Ka=ra;La=qa;Ma=ha;Na=Aa}while(0);e:while(1){Aa=(Ka&1)==0;qa=(Aa?S:La)+(Aa?(Ka&255)>>>1:k[T>>2]|0)|0;Aa=Na;if((Aa|0)==(qa|0)){Oa=qa;break}qa=k[a>>2]|0;do if(qa)if((k[qa+12>>2]|0)==(k[qa+16>>2]|0)){B=0;ra=ya(k[(k[qa>>2]|0)+36>>2]|0,qa|0)|0;ea=B;B=0;if(ea&1){ca=35;break b}if((ra|0)==-1){k[a>>2]=0;Pa=0;break}else{Pa=k[a>>2]|0;break}}else Pa=qa;else Pa=0;while(0);qa=(Pa|0)==0;do if(Ma){if((k[Ma+12>>2]|0)!=(k[Ma+16>>2]|0))if(qa){Qa=Ja;Ra=Ma;break}else{Oa=Aa;break e}B=0;ra=ya(k[(k[Ma>>2]|0)+36>>2]|0,Ma|0)|0;ea=B;B=0;if(ea&1){ca=35;break b}if((ra|0)!=-1)if(qa^(Ja|0)==0){Qa=Ja;Ra=Ja;break}else{Oa=Aa;break e}else{k[b>>2]=0;Sa=0;ca=148;break}}else{Sa=Ja;ca=148}while(0);if((ca|0)==148){ca=0;if(qa){Oa=Aa;break}else{Qa=Sa;Ra=0}}ra=k[a>>2]|0;ea=k[ra+12>>2]|0;if((ea|0)==(k[ra+16>>2]|0)){B=0;ka=ya(k[(k[ra>>2]|0)+36>>2]|0,ra|0)|0;ra=B;B=0;if(ra&1){ca=35;break b}else Ta=ka}else Ta=l[ea>>0]|0;if((Ta&255)<<24>>24!=(i[Aa>>0]|0)){Oa=Aa;break}ea=k[a>>2]|0;ka=ea+12|0;ra=k[ka>>2]|0;if((ra|0)==(k[ea+16>>2]|0)){B=0;ya(k[(k[ea>>2]|0)+40>>2]|0,ea|0)|0;ea=B;B=0;if(ea&1){ca=35;break b}}else k[ka>>2]=ra+1;Ja=Qa;Ka=i[A>>0]|0;La=k[R>>2]|0;Ma=Ra;Na=Aa+1|0}if(P?(ra=i[A>>0]|0,ka=(ra&1)==0,(Oa|0)!=((ka?S:k[R>>2]|0)+(ka?(ra&255)>>>1:k[T>>2]|0)|0)):0){ca=160;break b}else{oa=Z;pa=$}break}case 4:{ra=i[y>>0]|0;ka=ha;ea=ha;fa=Z;Ia=0;f:while(1){ia=k[a>>2]|0;do if(ia)if((k[ia+12>>2]|0)==(k[ia+16>>2]|0)){B=0;ua=ya(k[(k[ia>>2]|0)+36>>2]|0,ia|0)|0;Ua=B;B=0;if(Ua&1){ca=37;break b}if((ua|0)==-1){k[a>>2]=0;Va=0;break}else{Va=k[a>>2]|0;break}}else Va=ia;else Va=0;while(0);ia=(Va|0)==0;do if(ea){if((k[ea+12>>2]|0)!=(k[ea+16>>2]|0))if(ia){Xa=ka;Ya=ea;break}else{Za=fa;_a=ka;$a=Ia;break f}B=0;Aa=ya(k[(k[ea>>2]|0)+36>>2]|0,ea|0)|0;qa=B;B=0;if(qa&1){ca=37;break b}if((Aa|0)!=-1)if(ia^(ka|0)==0){Xa=ka;Ya=ka;break}else{Za=fa;_a=ka;$a=Ia;break f}else{k[b>>2]=0;ab=0;ca=173;break}}else{ab=ka;ca=173}while(0);if((ca|0)==173){ca=0;if(ia){Za=fa;_a=ab;$a=Ia;break}else{Xa=ab;Ya=0}}Aa=k[a>>2]|0;qa=k[Aa+12>>2]|0;if((qa|0)==(k[Aa+16>>2]|0)){B=0;ua=ya(k[(k[Aa>>2]|0)+36>>2]|0,Aa|0)|0;Aa=B;B=0;if(Aa&1){ca=37;break b}else bb=ua}else bb=l[qa>>0]|0;qa=bb&255;if(qa<<24>>24>-1?(j[(k[c>>2]|0)+(bb<<24>>24<<1)>>1]&2048)!=0:0){ua=k[n>>2]|0;if((ua|0)==(k[q>>2]|0)){B=0;eb(532,m|0,n|0,q|0);Aa=B;B=0;if(Aa&1){ca=37;break b}cb=k[n>>2]|0}else cb=ua;k[n>>2]=cb+1;i[cb>>0]=qa;db=fa;fb=Ia+1|0}else{ua=i[z>>0]|0;if(!(qa<<24>>24==ra<<24>>24&((Ia|0)!=0?(((ua&1)==0?(ua&255)>>>1:k[Y>>2]|0)|0)!=0:0))){Za=fa;_a=Xa;$a=Ia;break}if((fa|0)==(k[v>>2]|0)){B=0;eb(533,t|0,u|0,v|0);ua=B;B=0;if(ua&1){ca=37;break b}gb=k[u>>2]|0}else gb=fa;ua=gb+4|0;k[u>>2]=ua;k[gb>>2]=Ia;db=ua;fb=0}ua=k[a>>2]|0;qa=ua+12|0;Aa=k[qa>>2]|0;if((Aa|0)==(k[ua+16>>2]|0)){B=0;ya(k[(k[ua>>2]|0)+40>>2]|0,ua|0)|0;ua=B;B=0;if(ua&1){ca=37;break b}else{ka=Xa;ea=Ya;fa=db;Ia=fb;continue}}else{k[qa>>2]=Aa+1;ka=Xa;ea=Ya;fa=db;Ia=fb;continue}}if(($a|0)!=0?(k[t>>2]|0)!=(Za|0):0){if((Za|0)==(k[v>>2]|0)){B=0;eb(533,t|0,u|0,v|0);Ia=B;B=0;if(Ia&1){ca=38;break b}hb=k[u>>2]|0}else hb=Za;Ia=hb+4|0;k[u>>2]=Ia;k[hb>>2]=$a;ib=Ia}else ib=Za;Ia=k[F>>2]|0;g:do if((Ia|0)>0){fa=k[a>>2]|0;do if(fa)if((k[fa+12>>2]|0)==(k[fa+16>>2]|0)){B=0;ea=ya(k[(k[fa>>2]|0)+36>>2]|0,fa|0)|0;ka=B;B=0;if(ka&1){ca=38;break b}if((ea|0)==-1){k[a>>2]=0;jb=0;break}else{jb=k[a>>2]|0;break}}else jb=fa;else jb=0;while(0);fa=(jb|0)==0;do if(_a){if((k[_a+12>>2]|0)==(k[_a+16>>2]|0)){B=0;ia=ya(k[(k[_a>>2]|0)+36>>2]|0,_a|0)|0;ea=B;B=0;if(ea&1){ca=38;break b}if((ia|0)==-1){k[b>>2]=0;ca=210;break}}if(fa)kb=_a;else{ca=215;break b}}else ca=210;while(0);if((ca|0)==210){ca=0;if(fa){ca=215;break b}else kb=0}ia=k[a>>2]|0;ea=k[ia+12>>2]|0;if((ea|0)==(k[ia+16>>2]|0)){B=0;ka=ya(k[(k[ia>>2]|0)+36>>2]|0,ia|0)|0;ia=B;B=0;if(ia&1){ca=38;break b}else lb=ka}else lb=l[ea>>0]|0;if((lb&255)<<24>>24!=(i[x>>0]|0)){ca=215;break b}ea=k[a>>2]|0;ka=ea+12|0;ia=k[ka>>2]|0;if((ia|0)==(k[ea+16>>2]|0)){B=0;ya(k[(k[ea>>2]|0)+40>>2]|0,ea|0)|0;ea=B;B=0;if(ea&1){ca=38;break b}else{mb=kb;nb=Ia;ob=kb}}else{k[ka>>2]=ia+1;mb=kb;nb=Ia;ob=kb}while(1){if((nb|0)<=0)break g;ia=k[a>>2]|0;do if(ia)if((k[ia+12>>2]|0)==(k[ia+16>>2]|0)){B=0;ka=ya(k[(k[ia>>2]|0)+36>>2]|0,ia|0)|0;ea=B;B=0;if(ea&1){ca=36;break b}if((ka|0)==-1){k[a>>2]=0;pb=0;break}else{pb=k[a>>2]|0;break}}else pb=ia;else pb=0;while(0);ia=(pb|0)==0;do if(ob){if((k[ob+12>>2]|0)!=(k[ob+16>>2]|0))if(ia){qb=mb;rb=ob;break}else{ca=239;break b}B=0;ka=ya(k[(k[ob>>2]|0)+36>>2]|0,ob|0)|0;ea=B;B=0;if(ea&1){ca=36;break b}if((ka|0)!=-1)if(ia^(mb|0)==0){qb=mb;rb=mb;break}else{ca=239;break b}else{k[b>>2]=0;sb=0;ca=232;break}}else{sb=mb;ca=232}while(0);if((ca|0)==232){ca=0;if(ia){ca=239;break b}else{qb=sb;rb=0}}ka=k[a>>2]|0;ea=k[ka+12>>2]|0;if((ea|0)==(k[ka+16>>2]|0)){B=0;ra=ya(k[(k[ka>>2]|0)+36>>2]|0,ka|0)|0;ka=B;B=0;if(ka&1){ca=36;break b}else tb=ra}else tb=l[ea>>0]|0;if((tb&255)<<24>>24<=-1){ca=239;break b}if(!(j[(k[c>>2]|0)+(tb<<24>>24<<1)>>1]&2048)){ca=239;break b}if((k[n>>2]|0)==(k[q>>2]|0)?(B=0,eb(532,m|0,n|0,q|0),ea=B,B=0,ea&1):0){ca=36;break b}ea=k[a>>2]|0;ra=k[ea+12>>2]|0;if((ra|0)==(k[ea+16>>2]|0)){B=0;ka=ya(k[(k[ea>>2]|0)+36>>2]|0,ea|0)|0;ea=B;B=0;if(ea&1){ca=36;break b}else ub=ka}else ub=l[ra>>0]|0;ra=k[n>>2]|0;k[n>>2]=ra+1;i[ra>>0]=ub;ra=nb+-1|0;k[F>>2]=ra;ka=k[a>>2]|0;ea=ka+12|0;Aa=k[ea>>2]|0;if((Aa|0)==(k[ka+16>>2]|0)){B=0;ya(k[(k[ka>>2]|0)+40>>2]|0,ka|0)|0;ka=B;B=0;if(ka&1){ca=36;break b}else{mb=qb;nb=ra;ob=rb;continue}}else{k[ea>>2]=Aa+1;mb=qb;nb=ra;ob=rb;continue}}}while(0);if((k[n>>2]|0)==(k[m>>2]|0)){ca=249;break b}else{oa=ib;pa=$}break}default:{oa=Z;pa=$}}while(0);h:do if((ca|0)==58)while(1){ca=0;da=k[a>>2]|0;do if(da)if((k[da+12>>2]|0)==(k[da+16>>2]|0)){B=0;Ia=ya(k[(k[da>>2]|0)+36>>2]|0,da|0)|0;fa=B;B=0;if(fa&1){ca=34;break b}if((Ia|0)==-1){k[a>>2]=0;vb=0;break}else{vb=k[a>>2]|0;break}}else vb=da;else vb=0;while(0);da=(vb|0)==0;do if(na){if((k[na+12>>2]|0)!=(k[na+16>>2]|0))if(da){wb=ma;xb=na;break}else{oa=Z;pa=$;break h}B=0;Ia=ya(k[(k[na>>2]|0)+36>>2]|0,na|0)|0;fa=B;B=0;if(fa&1){ca=34;break b}if((Ia|0)!=-1)if(da^(ma|0)==0){wb=ma;xb=ma;break}else{oa=Z;pa=$;break h}else{k[b>>2]=0;yb=0;ca=70;break}}else{yb=ma;ca=70}while(0);if((ca|0)==70){ca=0;if(da){oa=Z;pa=$;break h}else{wb=yb;xb=0}}Ia=k[a>>2]|0;fa=k[Ia+12>>2]|0;if((fa|0)==(k[Ia+16>>2]|0)){B=0;ra=ya(k[(k[Ia>>2]|0)+36>>2]|0,Ia|0)|0;Ia=B;B=0;if(Ia&1){ca=34;break b}else zb=ra}else zb=l[fa>>0]|0;if((zb&255)<<24>>24<=-1){oa=Z;pa=$;break h}if(!(j[(k[c>>2]|0)+(zb<<24>>24<<1)>>1]&8192)){oa=Z;pa=$;break h}fa=k[a>>2]|0;ra=fa+12|0;Ia=k[ra>>2]|0;if((Ia|0)==(k[fa+16>>2]|0)){B=0;Aa=ya(k[(k[fa>>2]|0)+40>>2]|0,fa|0)|0;fa=B;B=0;if(fa&1){ca=34;break b}else Ab=Aa}else{k[ra>>2]=Ia+1;Ab=l[Ia>>0]|0}B=0;wa(503,E|0,Ab&255|0);Ia=B;B=0;if(Ia&1){ca=34;break b}else{ma=wb;na=xb;ca=58}}while(0);Z=oa;_=_+1|0;$=pa}i:switch(ca|0){case 34:{I=Rb()|0;J=Q;break a;break}case 35:{I=Rb()|0;J=Q;break a;break}case 36:{I=Rb()|0;J=Q;break a;break}case 37:{I=Rb()|0;J=Q;break a;break}case 38:{I=Rb()|0;J=Q;break a;break}case 56:{k[f>>2]=k[f>>2]|4;Bb=0;break}case 120:{k[f>>2]=k[f>>2]|4;Bb=0;break}case 160:{k[f>>2]=k[f>>2]|4;Bb=0;break}case 215:{k[f>>2]=k[f>>2]|4;Bb=0;break}case 239:{k[f>>2]=k[f>>2]|4;Bb=0;break}case 249:{k[f>>2]=k[f>>2]|4;Bb=0;break}case 251:{j:do if(ba){$=ba+1|0;_=ba+8|0;Z=ba+4|0;c=1;k:while(1){Y=i[ba>>0]|0;if(!(Y&1))Cb=(Y&255)>>>1;else Cb=k[Z>>2]|0;if(c>>>0>=Cb>>>0)break j;Y=k[a>>2]|0;do if(Y)if((k[Y+12>>2]|0)==(k[Y+16>>2]|0)){B=0;T=ya(k[(k[Y>>2]|0)+36>>2]|0,Y|0)|0;R=B;B=0;if(R&1){ca=33;break k}if((T|0)==-1){k[a>>2]=0;Db=0;break}else{Db=k[a>>2]|0;break}}else Db=Y;else Db=0;while(0);Y=(Db|0)==0;T=k[b>>2]|0;do if(T){if((k[T+12>>2]|0)==(k[T+16>>2]|0)){B=0;R=ya(k[(k[T>>2]|0)+36>>2]|0,T|0)|0;S=B;B=0;if(S&1){ca=33;break k}if((R|0)==-1){k[b>>2]=0;ca=269;break}}if(!Y){ca=276;break k}}else ca=269;while(0);if((ca|0)==269?(ca=0,Y):0){ca=276;break}T=k[a>>2]|0;R=k[T+12>>2]|0;if((R|0)==(k[T+16>>2]|0)){B=0;S=ya(k[(k[T>>2]|0)+36>>2]|0,T|0)|0;T=B;B=0;if(T&1){ca=33;break}else Eb=S}else Eb=l[R>>0]|0;if(!(i[ba>>0]&1))Fb=$;else Fb=k[_>>2]|0;if((Eb&255)<<24>>24!=(i[Fb+c>>0]|0)){ca=276;break}R=c+1|0;S=k[a>>2]|0;T=S+12|0;P=k[T>>2]|0;if((P|0)==(k[S+16>>2]|0)){B=0;ya(k[(k[S>>2]|0)+40>>2]|0,S|0)|0;S=B;B=0;if(S&1){ca=33;break}else{c=R;continue}}else{k[T>>2]=P+1;c=R;continue}}if((ca|0)==33){c=Rb()|0;I=c;J=Q;break a}else if((ca|0)==276){k[f>>2]=k[f>>2]|4;Bb=0;break i}}while(0);c=k[t>>2]|0;if((c|0)!=(aa|0)){k[G>>2]=0;lAa(z,c,aa,G);if(!(k[G>>2]|0)){Bb=1;break}else{k[f>>2]=k[f>>2]|4;Bb=0;break}}else Bb=1;break}}Yua(E);Yua(D);Yua(C);Yua(A);Yua(z);c=k[t>>2]|0;k[t>>2]=0;if((c|0)!=0?(B=0,va(k[o>>2]|0,c|0),c=B,B=0,c&1):0){c=Rb(0)|0;Dd(c)}r=p;return Bb|0}while(0);Yua(E);Yua(D);Yua(C);Yua(A);Yua(z);z=k[t>>2]|0;k[t>>2]=0;if((z|0)!=0?(B=0,va(k[o>>2]|0,z|0),z=B,B=0,z&1):0){z=Rb(0)|0;Dd(z)}Qb(I|0);return 0}function iAa(a){a=a|0;var b=0;b=Ab(8)|0;B=0;wa(527,b|0,a|0);a=B;B=0;if(a&1){a=Rb()|0;zb(b|0);Qb(a|0)}else jc(b|0,25224,350)}function jAa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;a=r;r=r+144|0;h=a+24|0;j=a+32|0;l=a+16|0;m=a+8|0;n=a+4|0;o=a+28|0;p=a;k[l>>2]=j;q=l+4|0;k[q>>2]=552;s=j+100|0;B=0;t=ya(421,e|0)|0;u=B;B=0;if(!(u&1)){k[n>>2]=t;B=0;u=Xa(238,n|0,49320)|0;v=B;B=0;a:do if(!(v&1)?(i[o>>0]=0,w=k[c>>2]|0,k[p>>2]=w,x=k[e+4>>2]|0,y=w,B=0,k[h>>2]=k[p>>2],z=Ua(1,b|0,h|0,d|0,n|0,x|0,f|0,o|0,u|0,l|0,m|0,s|0)|0,x=B,B=0,!(x&1)):0){if(z){if(!(i[g>>0]&1)){i[g+1>>0]=0;i[g>>0]=0}else{i[k[g+8>>2]>>0]=0;k[g+4>>2]=0}if(i[o>>0]|0){B=0;z=Xa(k[(k[u>>2]|0)+28>>2]|0,u|0,45)|0;x=B;B=0;if(x&1)break;B=0;wa(503,g|0,z|0);z=B;B=0;if(z&1)break}B=0;z=Xa(k[(k[u>>2]|0)+28>>2]|0,u|0,48)|0;x=B;B=0;if(x&1)break;x=k[m>>2]|0;A=x+-1|0;C=k[l>>2]|0;while(1){if(C>>>0>=A>>>0){D=C;break}if((i[C>>0]|0)!=z<<24>>24){D=C;break}C=C+1|0}B=0;Ia(53,g|0,D|0,x|0)|0;C=B;B=0;if(C&1)break}C=k[b>>2]|0;do if(C)if((k[C+12>>2]|0)==(k[C+16>>2]|0)){B=0;z=ya(k[(k[C>>2]|0)+36>>2]|0,C|0)|0;A=B;B=0;if(A&1)break a;if((z|0)==-1){k[b>>2]=0;E=0;break}else{E=k[b>>2]|0;break}}else E=C;else E=0;while(0);C=(E|0)==0;do if(w){if((k[y+12>>2]|0)==(k[y+16>>2]|0)){B=0;x=ya(k[(k[w>>2]|0)+36>>2]|0,y|0)|0;z=B;B=0;if(z&1)break a;if((x|0)==-1){k[c>>2]=0;F=30;break}}if(!C)F=31}else F=30;while(0);if((F|0)==30?C:0)F=31;if((F|0)==31)k[f>>2]=k[f>>2]|2;y=k[b>>2]|0;BEa(t)|0;w=k[l>>2]|0;k[l>>2]=0;if((w|0)!=0?(B=0,va(k[q>>2]|0,w|0),w=B,B=0,w&1):0){w=Rb(0)|0;Dd(w)}r=a;return y|0}while(0);a=Rb()|0;b=Q;BEa(t)|0;t=k[l>>2]|0;k[l>>2]=0;if(!t){G=b;H=a}else{I=a;J=b;K=t;F=37}}else{t=Rb()|0;k[l>>2]=0;I=t;J=Q;K=j;F=37}if((F|0)==37){B=0;va(k[q>>2]|0,K|0);K=B;B=0;if(K&1){K=Rb(0)|0;Dd(K)}else{G=J;H=I}}Qb(H|0);return 0}function kAa(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;m=r;r=r+112|0;n=m+100|0;o=m+88|0;p=m+76|0;q=m+64|0;s=m+52|0;t=m+48|0;u=m+36|0;v=m+24|0;w=m+12|0;x=m;if(a){a=$Aa(b,48928)|0;Fc[k[(k[a>>2]|0)+44>>2]&1023](n,a);y=k[n>>2]|0;i[c>>0]=y;i[c+1>>0]=y>>8;i[c+2>>0]=y>>16;i[c+3>>0]=y>>24;Fc[k[(k[a>>2]|0)+32>>2]&1023](o,a);if(!(i[j>>0]&1)){i[j+1>>0]=0;i[j>>0]=0}else{i[k[j+8>>2]>>0]=0;k[j+4>>2]=0}B=0;wa(528,j|0,0);y=B;B=0;if(y&1){y=Rb(0)|0;Dd(y)};k[j>>2]=k[o>>2];k[j+4>>2]=k[o+4>>2];k[j+8>>2]=k[o+8>>2];y=0;while(1){if((y|0)==3)break;k[o+(y<<2)>>2]=0;y=y+1|0}Yua(o);Fc[k[(k[a>>2]|0)+28>>2]&1023](p,a);if(!(i[h>>0]&1)){i[h+1>>0]=0;i[h>>0]=0}else{i[k[h+8>>2]>>0]=0;k[h+4>>2]=0}B=0;wa(528,h|0,0);o=B;B=0;if(o&1){o=Rb(0)|0;Dd(o)};k[h>>2]=k[p>>2];k[h+4>>2]=k[p+4>>2];k[h+8>>2]=k[p+8>>2];o=0;while(1){if((o|0)==3)break;k[p+(o<<2)>>2]=0;o=o+1|0}Yua(p);p=Hc[k[(k[a>>2]|0)+12>>2]&511](a)|0;i[d>>0]=p;p=Hc[k[(k[a>>2]|0)+16>>2]&511](a)|0;i[e>>0]=p;Fc[k[(k[a>>2]|0)+20>>2]&1023](q,a);if(!(i[f>>0]&1)){i[f+1>>0]=0;i[f>>0]=0}else{i[k[f+8>>2]>>0]=0;k[f+4>>2]=0}B=0;wa(528,f|0,0);p=B;B=0;if(p&1){p=Rb(0)|0;Dd(p)};k[f>>2]=k[q>>2];k[f+4>>2]=k[q+4>>2];k[f+8>>2]=k[q+8>>2];p=0;while(1){if((p|0)==3)break;k[q+(p<<2)>>2]=0;p=p+1|0}Yua(q);Fc[k[(k[a>>2]|0)+24>>2]&1023](s,a);if(!(i[g>>0]&1)){i[g+1>>0]=0;i[g>>0]=0}else{i[k[g+8>>2]>>0]=0;k[g+4>>2]=0}B=0;wa(528,g|0,0);q=B;B=0;if(q&1){q=Rb(0)|0;Dd(q)};k[g>>2]=k[s>>2];k[g+4>>2]=k[s+4>>2];k[g+8>>2]=k[s+8>>2];q=0;while(1){if((q|0)==3)break;k[s+(q<<2)>>2]=0;q=q+1|0}Yua(s);z=Hc[k[(k[a>>2]|0)+36>>2]&511](a)|0}else{a=$Aa(b,48864)|0;Fc[k[(k[a>>2]|0)+44>>2]&1023](t,a);b=k[t>>2]|0;i[c>>0]=b;i[c+1>>0]=b>>8;i[c+2>>0]=b>>16;i[c+3>>0]=b>>24;Fc[k[(k[a>>2]|0)+32>>2]&1023](u,a);if(!(i[j>>0]&1)){i[j+1>>0]=0;i[j>>0]=0}else{i[k[j+8>>2]>>0]=0;k[j+4>>2]=0}B=0;wa(528,j|0,0);b=B;B=0;if(b&1){b=Rb(0)|0;Dd(b)};k[j>>2]=k[u>>2];k[j+4>>2]=k[u+4>>2];k[j+8>>2]=k[u+8>>2];j=0;while(1){if((j|0)==3)break;k[u+(j<<2)>>2]=0;j=j+1|0}Yua(u);Fc[k[(k[a>>2]|0)+28>>2]&1023](v,a);if(!(i[h>>0]&1)){i[h+1>>0]=0;i[h>>0]=0}else{i[k[h+8>>2]>>0]=0;k[h+4>>2]=0}B=0;wa(528,h|0,0);u=B;B=0;if(u&1){u=Rb(0)|0;Dd(u)};k[h>>2]=k[v>>2];k[h+4>>2]=k[v+4>>2];k[h+8>>2]=k[v+8>>2];h=0;while(1){if((h|0)==3)break;k[v+(h<<2)>>2]=0;h=h+1|0}Yua(v);v=Hc[k[(k[a>>2]|0)+12>>2]&511](a)|0;i[d>>0]=v;v=Hc[k[(k[a>>2]|0)+16>>2]&511](a)|0;i[e>>0]=v;Fc[k[(k[a>>2]|0)+20>>2]&1023](w,a);if(!(i[f>>0]&1)){i[f+1>>0]=0;i[f>>0]=0}else{i[k[f+8>>2]>>0]=0;k[f+4>>2]=0}B=0;wa(528,f|0,0);v=B;B=0;if(v&1){v=Rb(0)|0;Dd(v)};k[f>>2]=k[w>>2];k[f+4>>2]=k[w+4>>2];k[f+8>>2]=k[w+8>>2];f=0;while(1){if((f|0)==3)break;k[w+(f<<2)>>2]=0;f=f+1|0}Yua(w);Fc[k[(k[a>>2]|0)+24>>2]&1023](x,a);if(!(i[g>>0]&1)){i[g+1>>0]=0;i[g>>0]=0}else{i[k[g+8>>2]>>0]=0;k[g+4>>2]=0}B=0;wa(528,g|0,0);w=B;B=0;if(w&1){w=Rb(0)|0;Dd(w)};k[g>>2]=k[x>>2];k[g+4>>2]=k[x+4>>2];k[g+8>>2]=k[x+8>>2];g=0;while(1){if((g|0)==3)break;k[x+(g<<2)>>2]=0;g=g+1|0}Yua(x);z=Hc[k[(k[a>>2]|0)+36>>2]&511](a)|0}k[l>>2]=z;r=m;return}function lAa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=i[a>>0]|0;f=a+4|0;g=k[f>>2]|0;do if(((e&1)==0?(e&255)>>>1:g)|0){if((b|0)==(c|0)){h=e;j=g}else{l=c;m=b;while(1){n=l+-4|0;if(m>>>0>=n>>>0)break;o=k[m>>2]|0;k[m>>2]=k[n>>2];k[n>>2]=o;l=n;m=m+4|0}h=i[a>>0]|0;j=k[f>>2]|0}m=(h&1)==0;l=m?a+1|0:k[a+8>>2]|0;n=c+-4|0;o=l+(m?(h&255)>>>1:j)|0;m=l;l=b;while(1){p=i[m>>0]|0;q=p<<24>>24<1|p<<24>>24==127;if(l>>>0>=n>>>0)break;if(!q?(p<<24>>24|0)!=(k[l>>2]|0):0){r=10;break}m=(o-m|0)>1?m+1|0:m;l=l+4|0}if((r|0)==10){k[d>>2]=4;break}if(!q?((k[n>>2]|0)+-1|0)>>>0>=p<<24>>24>>>0:0)k[d>>2]=4}while(0);return}function mAa(a){a=a|0;return}function nAa(a){a=a|0;Sqa(a);return}function oAa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;a=r;r=r+576|0;h=a+424|0;j=a;l=a+24|0;m=a+16|0;n=a+12|0;o=a+8|0;p=a+564|0;q=a+4|0;s=a+464|0;k[m>>2]=l;t=m+4|0;k[t>>2]=552;u=l+400|0;B=0;v=ya(421,e|0)|0;w=B;B=0;if(!(w&1)){k[o>>2]=v;B=0;v=Xa(238,o|0,49312)|0;w=B;B=0;a:do if(!(w&1)?(i[p>>0]=0,k[q>>2]=k[c>>2],x=k[e+4>>2]|0,B=0,k[h>>2]=k[q>>2],y=Ua(2,b|0,h|0,d|0,o|0,x|0,f|0,p|0,v|0,m|0,n|0,u|0)|0,x=B,B=0,!(x&1)):0){b:do if(y){B=0;cb(k[(k[v>>2]|0)+48>>2]|0,v|0,159230,159240,h|0)|0;x=B;B=0;if(x&1){z=10;break a}x=k[n>>2]|0;A=k[m>>2]|0;C=x-A|0;D=A;A=x;if((C|0)>392){x=lua((C>>2)+2|0)|0;C=x;if(!x){B=0;fb(7);E=B;B=0;if(E&1)F=C;else{G=C;H=0;z=13}}else{G=C;H=x;z=13}}else{G=0;H=s;z=13}do if((z|0)==13){if(!(i[p>>0]|0))I=H;else{i[H>>0]=45;I=H+1|0}x=h+40|0;C=h;E=A;J=I;K=D;while(1){if(K>>>0>=E>>>0){L=J;break}M=k[K>>2]|0;N=h;while(1){if((N|0)==(x|0)){O=x;break}if((k[N>>2]|0)==(M|0)){O=N;break}N=N+4|0}i[J>>0]=i[159230+(O-C>>2)>>0]|0;E=k[n>>2]|0;J=J+1|0;K=K+4|0}i[L>>0]=0;k[j>>2]=g;if((rta(s,159210,j)|0)!=1?(B=0,va(553,159214),K=B,B=0,K&1):0){F=G;break}if(G)mua(G);break b}while(0);D=Rb()|0;A=Q;if(!F){P=D;R=A;S=m;break a}mua(F);P=D;R=A;S=m;break a}while(0);y=k[b>>2]|0;do if(y){A=k[y+12>>2]|0;if((A|0)==(k[y+16>>2]|0)){B=0;D=ya(k[(k[y>>2]|0)+36>>2]|0,y|0)|0;K=B;B=0;if(K&1){z=10;break a}else T=D}else T=k[A>>2]|0;if((T|0)==-1){k[b>>2]=0;U=1;break}else{U=(k[b>>2]|0)==0;break}}else U=1;while(0);y=k[c>>2]|0;do if(y){A=k[y+12>>2]|0;if((A|0)==(k[y+16>>2]|0)){B=0;D=ya(k[(k[y>>2]|0)+36>>2]|0,y|0)|0;K=B;B=0;if(K&1){z=10;break a}else V=D}else V=k[A>>2]|0;if((V|0)!=-1)if(U)break;else{z=42;break}else{k[c>>2]=0;z=40;break}}else z=40;while(0);if((z|0)==40?U:0)z=42;if((z|0)==42)k[f>>2]=k[f>>2]|2;y=k[b>>2]|0;BEa(k[o>>2]|0)|0;A=k[m>>2]|0;k[m>>2]=0;if((A|0)!=0?(B=0,va(k[t>>2]|0,A|0),A=B,B=0,A&1):0){A=Rb(0)|0;Dd(A)}r=a;return y|0}else z=10;while(0);if((z|0)==10){a=Rb()|0;P=a;R=Q;S=m}BEa(k[o>>2]|0)|0;o=k[S>>2]|0;k[S>>2]=0;if(!o){W=P;X=R}else{Y=P;Z=R;_=k[t>>2]|0;$=o;z=49}}else{o=Rb()|0;k[m>>2]=0;Y=o;Z=Q;_=552;$=l;z=49}if((z|0)==49){B=0;va(_|0,$|0);$=B;B=0;if($&1){$=Rb(0)|0;Dd($)}else{W=Y;X=Z}}Qb(W|0);return 0}function pAa(a,b,c,d,e,f,g,h,j,m,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;m=m|0;n=n|0;var o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0;o=r;r=r+512|0;p=o+96|0;q=o+104|0;s=o+88|0;t=o+80|0;u=o+76|0;v=o+504|0;w=o+72|0;x=o+68|0;y=o+56|0;z=o+44|0;A=o+32|0;C=o+20|0;D=o+8|0;E=o+4|0;F=o;k[p>>2]=n;k[s>>2]=q;n=s+4|0;k[n>>2]=552;k[t>>2]=q;k[u>>2]=q+400;G=0;while(1){if((G|0)==3)break;k[y+(G<<2)>>2]=0;G=G+1|0}G=0;while(1){if((G|0)==3)break;k[z+(G<<2)>>2]=0;G=G+1|0}G=0;while(1){if((G|0)==3)break;k[A+(G<<2)>>2]=0;G=G+1|0}G=0;while(1){if((G|0)==3)break;k[C+(G<<2)>>2]=0;G=G+1|0}G=0;while(1){if((G|0)==3)break;k[D+(G<<2)>>2]=0;G=G+1|0}B=0;Wa(2,c|0,d|0,v|0,w|0,x|0,y|0,z|0,A|0,C|0,E|0);d=B;B=0;a:do if(d&1){c=Rb()|0;H=c;I=Q}else{k[m>>2]=k[j>>2];c=A+4|0;G=C+4|0;J=C+8|0;K=A+8|0;L=(e&512|0)!=0;M=z+8|0;N=z+4|0;O=D+4|0;P=D+8|0;R=v+3|0;S=y+4|0;T=q;U=0;V=0;b:while(1){if(U>>>0>=4){W=T;X=V;Y=259;break}Z=k[a>>2]|0;do if(Z){_=k[Z+12>>2]|0;if((_|0)==(k[Z+16>>2]|0)){B=0;$=ya(k[(k[Z>>2]|0)+36>>2]|0,Z|0)|0;aa=B;B=0;if(aa&1){Y=40;break b}else ba=$}else ba=k[_>>2]|0;if((ba|0)==-1){k[a>>2]=0;ca=1;break}else{ca=(k[a>>2]|0)==0;break}}else ca=1;while(0);Z=k[b>>2]|0;do if(Z){_=k[Z+12>>2]|0;if((_|0)==(k[Z+16>>2]|0)){B=0;$=ya(k[(k[Z>>2]|0)+36>>2]|0,Z|0)|0;aa=B;B=0;if(aa&1){Y=40;break b}else da=$}else da=k[_>>2]|0;if((da|0)!=-1)if(ca){ea=Z;break}else{W=T;X=V;Y=259;break b}else{k[b>>2]=0;Y=32;break}}else Y=32;while(0);if((Y|0)==32){Y=0;if(ca){W=T;X=V;Y=259;break}else ea=0}c:do switch(i[v+U>>0]|0){case 1:{if((U|0)!=3){Z=k[a>>2]|0;_=k[Z+12>>2]|0;if((_|0)==(k[Z+16>>2]|0)){B=0;$=ya(k[(k[Z>>2]|0)+36>>2]|0,Z|0)|0;Z=B;B=0;if(Z&1){Y=40;break b}else fa=$}else fa=k[_>>2]|0;B=0;_=Ia(k[(k[h>>2]|0)+12>>2]|0,h|0,8192,fa|0)|0;$=B;B=0;if($&1){Y=40;break b}if(!_){Y=58;break b}_=k[a>>2]|0;$=_+12|0;Z=k[$>>2]|0;if((Z|0)==(k[_+16>>2]|0)){B=0;aa=ya(k[(k[_>>2]|0)+40>>2]|0,_|0)|0;_=B;B=0;if(_&1){Y=40;break b}else ga=aa}else{k[$>>2]=Z+4;ga=k[Z>>2]|0}B=0;wa(529,D|0,ga|0);Z=B;B=0;if(Z&1){Y=40;break b}else{ha=ea;ia=ea;Y=60}}else{ja=T;ka=V}break}case 0:{if((U|0)==3){ja=T;ka=V}else{ha=ea;ia=ea;Y=60}break}case 3:{Z=i[A>>0]|0;$=(Z&1)==0?(Z&255)>>>1:k[c>>2]|0;aa=i[C>>0]|0;_=(aa&1)==0?(aa&255)>>>1:k[G>>2]|0;if(($|0)==(0-_|0)){ja=T;ka=V}else{if(!$){$=k[a>>2]|0;la=k[$+12>>2]|0;if((la|0)==(k[$+16>>2]|0)){B=0;ma=ya(k[(k[$>>2]|0)+36>>2]|0,$|0)|0;$=B;B=0;if($&1){Y=40;break b}na=ma;oa=i[C>>0]|0}else{na=k[la>>2]|0;oa=aa}if((na|0)!=(k[((oa&1)==0?G:k[J>>2]|0)>>2]|0)){ja=T;ka=V;break c}aa=k[a>>2]|0;la=aa+12|0;ma=k[la>>2]|0;if((ma|0)==(k[aa+16>>2]|0)){B=0;ya(k[(k[aa>>2]|0)+40>>2]|0,aa|0)|0;aa=B;B=0;if(aa&1){Y=40;break b}}else k[la>>2]=ma+4;i[g>>0]=1;ma=i[C>>0]|0;ja=T;ka=((ma&1)==0?(ma&255)>>>1:k[G>>2]|0)>>>0>1?C:V;break c}ma=k[a>>2]|0;la=k[ma+12>>2]|0;aa=k[ma+16>>2]|0;$=(la|0)==(aa|0);if(!_){if($){B=0;_=ya(k[(k[ma>>2]|0)+36>>2]|0,ma|0)|0;pa=B;B=0;if(pa&1){Y=40;break b}qa=_;ra=i[A>>0]|0}else{qa=k[la>>2]|0;ra=Z}if((qa|0)!=(k[((ra&1)==0?c:k[K>>2]|0)>>2]|0)){i[g>>0]=1;ja=T;ka=V;break c}_=k[a>>2]|0;pa=_+12|0;sa=k[pa>>2]|0;if((sa|0)==(k[_+16>>2]|0)){B=0;ya(k[(k[_>>2]|0)+40>>2]|0,_|0)|0;_=B;B=0;if(_&1){Y=40;break b}}else k[pa>>2]=sa+4;sa=i[A>>0]|0;ja=T;ka=((sa&1)==0?(sa&255)>>>1:k[c>>2]|0)>>>0>1?A:V;break c}if($){B=0;$=ya(k[(k[ma>>2]|0)+36>>2]|0,ma|0)|0;sa=B;B=0;if(sa&1){Y=40;break b}sa=k[a>>2]|0;ta=$;ua=i[A>>0]|0;xa=sa;za=k[sa+12>>2]|0;Aa=k[sa+16>>2]|0}else{ta=k[la>>2]|0;ua=Z;xa=ma;za=la;Aa=aa}aa=xa+12|0;la=(za|0)==(Aa|0);if((ta|0)==(k[((ua&1)==0?c:k[K>>2]|0)>>2]|0)){if(la){B=0;ya(k[(k[xa>>2]|0)+40>>2]|0,xa|0)|0;ma=B;B=0;if(ma&1){Y=40;break b}}else k[aa>>2]=za+4;aa=i[A>>0]|0;ja=T;ka=((aa&1)==0?(aa&255)>>>1:k[c>>2]|0)>>>0>1?A:V;break c}if(la){B=0;la=ya(k[(k[xa>>2]|0)+36>>2]|0,xa|0)|0;aa=B;B=0;if(aa&1){Y=40;break b}else Ba=la}else Ba=k[za>>2]|0;if((Ba|0)!=(k[((i[C>>0]&1)==0?G:k[J>>2]|0)>>2]|0)){Y=123;break b}la=k[a>>2]|0;aa=la+12|0;ma=k[aa>>2]|0;if((ma|0)==(k[la+16>>2]|0)){B=0;ya(k[(k[la>>2]|0)+40>>2]|0,la|0)|0;la=B;B=0;if(la&1){Y=40;break b}}else k[aa>>2]=ma+4;i[g>>0]=1;ma=i[C>>0]|0;ja=T;ka=((ma&1)==0?(ma&255)>>>1:k[G>>2]|0)>>>0>1?C:V}break}case 2:{if(!(U>>>0<2|(V|0)!=0)?!(L|(U|0)==2&(i[R>>0]|0)!=0):0){ja=T;ka=0;break c}ma=i[z>>0]|0;aa=k[M>>2]|0;la=(ma&1)==0?N:aa;d:do if((U|0)!=0?(l[v+(U+-1)>>0]|0)<2:0){Z=ma;sa=aa;$=la;while(1){pa=(Z&1)==0;_=$;if((_|0)==((pa?N:sa)+((pa?(Z&255)>>>1:k[N>>2]|0)<<2)|0)){Ca=Z;Da=sa;Ea=$;break}B=0;pa=Ia(k[(k[h>>2]|0)+12>>2]|0,h|0,8192,k[_>>2]|0)|0;Fa=B;B=0;if(Fa&1){Y=37;break b}if(!pa){Ga=$;Y=131;break}Z=i[z>>0]|0;sa=k[M>>2]|0;$=_+4|0}if((Y|0)==131){Y=0;Ca=i[z>>0]|0;Da=k[M>>2]|0;Ea=Ga}$=(Ca&1)==0?N:Da;sa=$;Z=Ea-sa>>2;_=i[D>>0]|0;pa=(_&1)==0;Fa=pa?(_&255)>>>1:k[O>>2]|0;if(Z>>>0>Fa>>>0){Ha=ea;Ja=Ca;Ka=Da;La=ea;Ma=sa}else{_=(pa?O:k[P>>2]|0)+(Fa<<2)|0;Fa=$;$=_+(0-Z<<2)|0;while(1){if(($|0)==(_|0)){Ha=ea;Ja=Ca;Ka=Da;La=ea;Ma=Ea;break d}if((k[$>>2]|0)!=(k[Fa>>2]|0)){Ha=ea;Ja=Ca;Ka=Da;La=ea;Ma=sa;break d}Fa=Fa+4|0;$=$+4|0}}}else{Ha=ea;Ja=ma;Ka=aa;La=ea;Ma=la}while(0);e:while(1){la=(Ja&1)==0;aa=(la?N:Ka)+((la?(Ja&255)>>>1:k[N>>2]|0)<<2)|0;la=Ma;if((la|0)==(aa|0)){Na=aa;break}aa=k[a>>2]|0;do if(aa){ma=k[aa+12>>2]|0;if((ma|0)==(k[aa+16>>2]|0)){B=0;$=ya(k[(k[aa>>2]|0)+36>>2]|0,aa|0)|0;Fa=B;B=0;if(Fa&1){Y=36;break b}else Oa=$}else Oa=k[ma>>2]|0;if((Oa|0)==-1){k[a>>2]=0;Pa=1;break}else{Pa=(k[a>>2]|0)==0;break}}else Pa=1;while(0);do if(La){aa=k[La+12>>2]|0;if((aa|0)==(k[La+16>>2]|0)){B=0;ma=ya(k[(k[La>>2]|0)+36>>2]|0,La|0)|0;$=B;B=0;if($&1){Y=36;break b}else Qa=ma}else Qa=k[aa>>2]|0;if((Qa|0)!=-1)if(Pa^(Ha|0)==0){Ra=Ha;Sa=Ha;break}else{Na=la;break e}else{k[b>>2]=0;Ta=0;Y=152;break}}else{Ta=Ha;Y=152}while(0);if((Y|0)==152){Y=0;if(Pa){Na=la;break}else{Ra=Ta;Sa=0}}aa=k[a>>2]|0;ma=k[aa+12>>2]|0;if((ma|0)==(k[aa+16>>2]|0)){B=0;$=ya(k[(k[aa>>2]|0)+36>>2]|0,aa|0)|0;aa=B;B=0;if(aa&1){Y=36;break b}else Ua=$}else Ua=k[ma>>2]|0;if((Ua|0)!=(k[la>>2]|0)){Na=la;break}ma=k[a>>2]|0;$=ma+12|0;aa=k[$>>2]|0;if((aa|0)==(k[ma+16>>2]|0)){B=0;ya(k[(k[ma>>2]|0)+40>>2]|0,ma|0)|0;ma=B;B=0;if(ma&1){Y=36;break b}}else k[$>>2]=aa+4;Ha=Ra;Ja=i[z>>0]|0;Ka=k[M>>2]|0;La=Sa;Ma=la+4|0}if(L?(aa=i[z>>0]|0,$=(aa&1)==0,(Na|0)!=(($?N:k[M>>2]|0)+(($?(aa&255)>>>1:k[N>>2]|0)<<2)|0)):0){Y=164;break b}else{ja=T;ka=V}break}case 4:{aa=k[x>>2]|0;$=ea;ma=ea;Fa=T;sa=0;f:while(1){_=k[a>>2]|0;do if(_){Z=k[_+12>>2]|0;if((Z|0)==(k[_+16>>2]|0)){B=0;pa=ya(k[(k[_>>2]|0)+36>>2]|0,_|0)|0;Va=B;B=0;if(Va&1){Y=39;break b}else Xa=pa}else Xa=k[Z>>2]|0;if((Xa|0)==-1){k[a>>2]=0;Ya=1;break}else{Ya=(k[a>>2]|0)==0;break}}else Ya=1;while(0);do if(ma){_=k[ma+12>>2]|0;if((_|0)==(k[ma+16>>2]|0)){B=0;la=ya(k[(k[ma>>2]|0)+36>>2]|0,ma|0)|0;Z=B;B=0;if(Z&1){Y=39;break b}else Za=la}else Za=k[_>>2]|0;if((Za|0)!=-1)if(Ya^($|0)==0){_a=$;$a=$;break}else{ab=Fa;bb=$;cb=sa;break f}else{k[b>>2]=0;db=0;Y=178;break}}else{db=$;Y=178}while(0);if((Y|0)==178){Y=0;if(Ya){ab=Fa;bb=db;cb=sa;break}else{_a=db;$a=0}}_=k[a>>2]|0;la=k[_+12>>2]|0;if((la|0)==(k[_+16>>2]|0)){B=0;Z=ya(k[(k[_>>2]|0)+36>>2]|0,_|0)|0;_=B;B=0;if(_&1){Y=39;break b}else fb=Z}else fb=k[la>>2]|0;B=0;la=Ia(k[(k[h>>2]|0)+12>>2]|0,h|0,2048,fb|0)|0;Z=B;B=0;if(Z&1){Y=39;break b}if(la){la=k[m>>2]|0;if((la|0)==(k[p>>2]|0)){B=0;eb(534,j|0,m|0,p|0);Z=B;B=0;if(Z&1){Y=39;break b}gb=k[m>>2]|0}else gb=la;k[m>>2]=gb+4;k[gb>>2]=fb;hb=Fa;ib=sa+1|0}else{la=i[y>>0]|0;if(!((fb|0)==(aa|0)&((sa|0)!=0?(((la&1)==0?(la&255)>>>1:k[S>>2]|0)|0)!=0:0))){ab=Fa;bb=_a;cb=sa;break}if((Fa|0)==(k[u>>2]|0)){B=0;eb(533,s|0,t|0,u|0);la=B;B=0;if(la&1){Y=39;break b}jb=k[t>>2]|0}else jb=Fa;la=jb+4|0;k[t>>2]=la;k[jb>>2]=sa;hb=la;ib=0}la=k[a>>2]|0;Z=la+12|0;_=k[Z>>2]|0;if((_|0)==(k[la+16>>2]|0)){B=0;ya(k[(k[la>>2]|0)+40>>2]|0,la|0)|0;la=B;B=0;if(la&1){Y=39;break b}else{$=_a;ma=$a;Fa=hb;sa=ib;continue}}else{k[Z>>2]=_+4;$=_a;ma=$a;Fa=hb;sa=ib;continue}}if((cb|0)!=0?(k[s>>2]|0)!=(ab|0):0){if((ab|0)==(k[u>>2]|0)){B=0;eb(533,s|0,t|0,u|0);sa=B;B=0;if(sa&1){Y=40;break b}kb=k[t>>2]|0}else kb=ab;sa=kb+4|0;k[t>>2]=sa;k[kb>>2]=cb;lb=sa}else lb=ab;sa=k[E>>2]|0;g:do if((sa|0)>0){Fa=k[a>>2]|0;do if(Fa){ma=k[Fa+12>>2]|0;if((ma|0)==(k[Fa+16>>2]|0)){B=0;$=ya(k[(k[Fa>>2]|0)+36>>2]|0,Fa|0)|0;aa=B;B=0;if(aa&1){Y=40;break b}else mb=$}else mb=k[ma>>2]|0;if((mb|0)==-1){k[a>>2]=0;nb=1;break}else{nb=(k[a>>2]|0)==0;break}}else nb=1;while(0);do if(bb){Fa=k[bb+12>>2]|0;if((Fa|0)==(k[bb+16>>2]|0)){B=0;ma=ya(k[(k[bb>>2]|0)+36>>2]|0,bb|0)|0;$=B;B=0;if($&1){Y=40;break b}else ob=ma}else ob=k[Fa>>2]|0;if((ob|0)!=-1)if(nb){pb=bb;break}else{Y=222;break b}else{k[b>>2]=0;Y=216;break}}else Y=216;while(0);if((Y|0)==216){Y=0;if(nb){Y=222;break b}else pb=0}Fa=k[a>>2]|0;ma=k[Fa+12>>2]|0;if((ma|0)==(k[Fa+16>>2]|0)){B=0;$=ya(k[(k[Fa>>2]|0)+36>>2]|0,Fa|0)|0;Fa=B;B=0;if(Fa&1){Y=40;break b}else qb=$}else qb=k[ma>>2]|0;if((qb|0)!=(k[w>>2]|0)){Y=222;break b}ma=k[a>>2]|0;$=ma+12|0;Fa=k[$>>2]|0;if((Fa|0)==(k[ma+16>>2]|0)){B=0;ya(k[(k[ma>>2]|0)+40>>2]|0,ma|0)|0;ma=B;B=0;if(ma&1){Y=40;break b}else{rb=pb;sb=sa;tb=pb}}else{k[$>>2]=Fa+4;rb=pb;sb=sa;tb=pb}while(1){if((sb|0)<=0)break g;Fa=k[a>>2]|0;do if(Fa){$=k[Fa+12>>2]|0;if(($|0)==(k[Fa+16>>2]|0)){B=0;ma=ya(k[(k[Fa>>2]|0)+36>>2]|0,Fa|0)|0;aa=B;B=0;if(aa&1){Y=38;break b}else ub=ma}else ub=k[$>>2]|0;if((ub|0)==-1){k[a>>2]=0;vb=1;break}else{vb=(k[a>>2]|0)==0;break}}else vb=1;while(0);do if(tb){Fa=k[tb+12>>2]|0;if((Fa|0)==(k[tb+16>>2]|0)){B=0;$=ya(k[(k[tb>>2]|0)+36>>2]|0,tb|0)|0;ma=B;B=0;if(ma&1){Y=38;break b}else wb=$}else wb=k[Fa>>2]|0;if((wb|0)!=-1)if(vb^(rb|0)==0){xb=rb;yb=rb;break}else{Y=247;break b}else{k[b>>2]=0;zb=0;Y=240;break}}else{zb=rb;Y=240}while(0);if((Y|0)==240){Y=0;if(vb){Y=247;break b}else{xb=zb;yb=0}}Fa=k[a>>2]|0;$=k[Fa+12>>2]|0;if(($|0)==(k[Fa+16>>2]|0)){B=0;ma=ya(k[(k[Fa>>2]|0)+36>>2]|0,Fa|0)|0;Fa=B;B=0;if(Fa&1){Y=38;break b}else Ab=ma}else Ab=k[$>>2]|0;B=0;$=Ia(k[(k[h>>2]|0)+12>>2]|0,h|0,2048,Ab|0)|0;ma=B;B=0;if(ma&1){Y=38;break b}if(!$){Y=247;break b}if((k[m>>2]|0)==(k[p>>2]|0)?(B=0,eb(534,j|0,m|0,p|0),$=B,B=0,$&1):0){Y=38;break b}$=k[a>>2]|0;ma=k[$+12>>2]|0;if((ma|0)==(k[$+16>>2]|0)){B=0;Fa=ya(k[(k[$>>2]|0)+36>>2]|0,$|0)|0;$=B;B=0;if($&1){Y=38;break b}else Bb=Fa}else Bb=k[ma>>2]|0;ma=k[m>>2]|0;k[m>>2]=ma+4;k[ma>>2]=Bb;ma=sb+-1|0;k[E>>2]=ma;Fa=k[a>>2]|0;$=Fa+12|0;aa=k[$>>2]|0;if((aa|0)==(k[Fa+16>>2]|0)){B=0;ya(k[(k[Fa>>2]|0)+40>>2]|0,Fa|0)|0;Fa=B;B=0;if(Fa&1){Y=38;break b}else{rb=xb;sb=ma;tb=yb;continue}}else{k[$>>2]=aa+4;rb=xb;sb=ma;tb=yb;continue}}}while(0);if((k[m>>2]|0)==(k[j>>2]|0)){Y=257;break b}else{ja=lb;ka=V}break}default:{ja=T;ka=V}}while(0);h:do if((Y|0)==60)while(1){Y=0;sa=k[a>>2]|0;do if(sa){ma=k[sa+12>>2]|0;if((ma|0)==(k[sa+16>>2]|0)){B=0;aa=ya(k[(k[sa>>2]|0)+36>>2]|0,sa|0)|0;$=B;B=0;if($&1){Y=35;break b}else Cb=aa}else Cb=k[ma>>2]|0;if((Cb|0)==-1){k[a>>2]=0;Db=1;break}else{Db=(k[a>>2]|0)==0;break}}else Db=1;while(0);do if(ia){sa=k[ia+12>>2]|0;if((sa|0)==(k[ia+16>>2]|0)){B=0;ma=ya(k[(k[ia>>2]|0)+36>>2]|0,ia|0)|0;aa=B;B=0;if(aa&1){Y=35;break b}else Eb=ma}else Eb=k[sa>>2]|0;if((Eb|0)!=-1)if(Db^(ha|0)==0){Fb=ha;Gb=ha;break}else{ja=T;ka=V;break h}else{k[b>>2]=0;Hb=0;Y=73;break}}else{Hb=ha;Y=73}while(0);if((Y|0)==73){Y=0;if(Db){ja=T;ka=V;break h}else{Fb=Hb;Gb=0}}sa=k[a>>2]|0;ma=k[sa+12>>2]|0;if((ma|0)==(k[sa+16>>2]|0)){B=0;aa=ya(k[(k[sa>>2]|0)+36>>2]|0,sa|0)|0;sa=B;B=0;if(sa&1){Y=35;break b}else Ib=aa}else Ib=k[ma>>2]|0;B=0;ma=Ia(k[(k[h>>2]|0)+12>>2]|0,h|0,8192,Ib|0)|0;aa=B;B=0;if(aa&1){Y=35;break b}if(!ma){ja=T;ka=V;break h}ma=k[a>>2]|0;aa=ma+12|0;sa=k[aa>>2]|0;if((sa|0)==(k[ma+16>>2]|0)){B=0;$=ya(k[(k[ma>>2]|0)+40>>2]|0,ma|0)|0;ma=B;B=0;if(ma&1){Y=35;break b}else Jb=$}else{k[aa>>2]=sa+4;Jb=k[sa>>2]|0}B=0;wa(529,D|0,Jb|0);sa=B;B=0;if(sa&1){Y=35;break b}else{ha=Fb;ia=Gb;Y=60}}while(0);T=ja;U=U+1|0;V=ka}i:switch(Y|0){case 35:{H=Rb()|0;I=Q;break a;break}case 36:{H=Rb()|0;I=Q;break a;break}case 37:{H=Rb()|0;I=Q;break a;break}case 38:{H=Rb()|0;I=Q;break a;break}case 39:{H=Rb()|0;I=Q;break a;break}case 40:{H=Rb()|0;I=Q;break a;break}case 58:{k[f>>2]=k[f>>2]|4;Kb=0;break}case 123:{k[f>>2]=k[f>>2]|4;Kb=0;break}case 164:{k[f>>2]=k[f>>2]|4;Kb=0;break}case 222:{k[f>>2]=k[f>>2]|4;Kb=0;break}case 247:{k[f>>2]=k[f>>2]|4;Kb=0;break}case 257:{k[f>>2]=k[f>>2]|4;Kb=0;break}case 259:{j:do if(X){V=X+4|0;U=X+8|0;T=1;k:while(1){S=i[X>>0]|0;if(!(S&1))Lb=(S&255)>>>1;else Lb=k[V>>2]|0;if(T>>>0>=Lb>>>0)break j;S=k[a>>2]|0;do if(S){N=k[S+12>>2]|0;if((N|0)==(k[S+16>>2]|0)){B=0;M=ya(k[(k[S>>2]|0)+36>>2]|0,S|0)|0;L=B;B=0;if(L&1){Y=34;break k}else Mb=M}else Mb=k[N>>2]|0;if((Mb|0)==-1){k[a>>2]=0;Nb=1;break}else{Nb=(k[a>>2]|0)==0;break}}else Nb=1;while(0);S=k[b>>2]|0;do if(S){N=k[S+12>>2]|0;if((N|0)==(k[S+16>>2]|0)){B=0;M=ya(k[(k[S>>2]|0)+36>>2]|0,S|0)|0;L=B;B=0;if(L&1){Y=34;break k}else Ob=M}else Ob=k[N>>2]|0;if((Ob|0)!=-1)if(Nb)break;else{Y=286;break k}else{k[b>>2]=0;Y=278;break}}else Y=278;while(0);if((Y|0)==278?(Y=0,Nb):0){Y=286;break}S=k[a>>2]|0;N=k[S+12>>2]|0;if((N|0)==(k[S+16>>2]|0)){B=0;M=ya(k[(k[S>>2]|0)+36>>2]|0,S|0)|0;S=B;B=0;if(S&1){Y=34;break}else Pb=M}else Pb=k[N>>2]|0;if(!(i[X>>0]&1))Sb=V;else Sb=k[U>>2]|0;if((Pb|0)!=(k[Sb+(T<<2)>>2]|0)){Y=286;break}N=T+1|0;M=k[a>>2]|0;S=M+12|0;L=k[S>>2]|0;if((L|0)==(k[M+16>>2]|0)){B=0;ya(k[(k[M>>2]|0)+40>>2]|0,M|0)|0;M=B;B=0;if(M&1){Y=34;break}else{T=N;continue}}else{k[S>>2]=L+4;T=N;continue}}if((Y|0)==34){T=Rb()|0;H=T;I=Q;break a}else if((Y|0)==286){k[f>>2]=k[f>>2]|4;Kb=0;break i}}while(0);T=k[s>>2]|0;if((T|0)!=(W|0)){k[F>>2]=0;lAa(y,T,W,F);if(!(k[F>>2]|0)){Kb=1;break}else{k[f>>2]=k[f>>2]|4;Kb=0;break}}else Kb=1;break}}kva(D);kva(C);kva(A);kva(z);Yua(y);T=k[s>>2]|0;k[s>>2]=0;if((T|0)!=0?(B=0,va(k[n>>2]|0,T|0),T=B,B=0,T&1):0){T=Rb(0)|0;Dd(T)}r=o;return Kb|0}while(0);kva(D);kva(C);kva(A);kva(z);Yua(y);y=k[s>>2]|0;k[s>>2]=0;if((y|0)!=0?(B=0,va(k[n>>2]|0,y|0),y=B,B=0,y&1):0){y=Rb(0)|0;Dd(y)}Qb(H|0);return 0}function qAa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;a=r;r=r+432|0;h=a+424|0;j=a+24|0;l=a+16|0;m=a+8|0;n=a+4|0;o=a+428|0;p=a;k[l>>2]=j;q=l+4|0;k[q>>2]=552;s=j+400|0;B=0;t=ya(421,e|0)|0;u=B;B=0;if(!(u&1)){k[n>>2]=t;B=0;u=Xa(238,n|0,49312)|0;v=B;B=0;a:do if(!(v&1)?(i[o>>0]=0,w=k[c>>2]|0,k[p>>2]=w,x=k[e+4>>2]|0,y=w,B=0,k[h>>2]=k[p>>2],z=Ua(2,b|0,h|0,d|0,n|0,x|0,f|0,o|0,u|0,l|0,m|0,s|0)|0,x=B,B=0,!(x&1)):0){if(z){if(!(i[g>>0]&1))i[g>>0]=0;else k[k[g+8>>2]>>2]=0;k[g+4>>2]=0;if(i[o>>0]|0){B=0;z=Xa(k[(k[u>>2]|0)+44>>2]|0,u|0,45)|0;x=B;B=0;if(x&1)break;B=0;wa(529,g|0,z|0);z=B;B=0;if(z&1)break}B=0;z=Xa(k[(k[u>>2]|0)+44>>2]|0,u|0,48)|0;x=B;B=0;if(x&1)break;x=k[m>>2]|0;A=x+-4|0;C=k[l>>2]|0;while(1){if(C>>>0>=A>>>0){D=C;break}if((k[C>>2]|0)!=(z|0)){D=C;break}C=C+4|0}B=0;Ia(54,g|0,D|0,x|0)|0;C=B;B=0;if(C&1)break}C=k[b>>2]|0;do if(C){z=k[C+12>>2]|0;if((z|0)==(k[C+16>>2]|0)){B=0;A=ya(k[(k[C>>2]|0)+36>>2]|0,C|0)|0;E=B;B=0;if(E&1)break a;else F=A}else F=k[z>>2]|0;if((F|0)==-1){k[b>>2]=0;G=1;break}else{G=(k[b>>2]|0)==0;break}}else G=1;while(0);do if(w){C=k[y+12>>2]|0;if((C|0)==(k[y+16>>2]|0)){B=0;x=ya(k[(k[w>>2]|0)+36>>2]|0,y|0)|0;z=B;B=0;if(z&1)break a;else H=x}else H=k[C>>2]|0;if((H|0)!=-1)if(G)break;else{I=33;break}else{k[c>>2]=0;I=31;break}}else I=31;while(0);if((I|0)==31?G:0)I=33;if((I|0)==33)k[f>>2]=k[f>>2]|2;y=k[b>>2]|0;BEa(t)|0;w=k[l>>2]|0;k[l>>2]=0;if((w|0)!=0?(B=0,va(k[q>>2]|0,w|0),w=B,B=0,w&1):0){w=Rb(0)|0;Dd(w)}r=a;return y|0}while(0);a=Rb()|0;b=Q;BEa(t)|0;t=k[l>>2]|0;k[l>>2]=0;if(!t){J=b;K=a}else{L=a;M=b;N=t;I=39}}else{t=Rb()|0;k[l>>2]=0;L=t;M=Q;N=j;I=39}if((I|0)==39){B=0;va(k[q>>2]|0,N|0);N=B;B=0;if(N&1){N=Rb(0)|0;Dd(N)}else{J=M;K=L}}Qb(K|0);return 0}function rAa(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;m=r;r=r+112|0;n=m+100|0;o=m+88|0;p=m+76|0;q=m+64|0;s=m+52|0;t=m+48|0;u=m+36|0;v=m+24|0;w=m+12|0;x=m;if(a){a=$Aa(b,49056)|0;Fc[k[(k[a>>2]|0)+44>>2]&1023](n,a);y=k[n>>2]|0;i[c>>0]=y;i[c+1>>0]=y>>8;i[c+2>>0]=y>>16;i[c+3>>0]=y>>24;Fc[k[(k[a>>2]|0)+32>>2]&1023](o,a);if(!(i[j>>0]&1))i[j>>0]=0;else k[k[j+8>>2]>>2]=0;k[j+4>>2]=0;B=0;wa(530,j|0,0);y=B;B=0;if(y&1){y=Rb(0)|0;Dd(y)};k[j>>2]=k[o>>2];k[j+4>>2]=k[o+4>>2];k[j+8>>2]=k[o+8>>2];y=0;while(1){if((y|0)==3)break;k[o+(y<<2)>>2]=0;y=y+1|0}kva(o);Fc[k[(k[a>>2]|0)+28>>2]&1023](p,a);if(!(i[h>>0]&1))i[h>>0]=0;else k[k[h+8>>2]>>2]=0;k[h+4>>2]=0;B=0;wa(530,h|0,0);o=B;B=0;if(o&1){o=Rb(0)|0;Dd(o)};k[h>>2]=k[p>>2];k[h+4>>2]=k[p+4>>2];k[h+8>>2]=k[p+8>>2];o=0;while(1){if((o|0)==3)break;k[p+(o<<2)>>2]=0;o=o+1|0}kva(p);p=Hc[k[(k[a>>2]|0)+12>>2]&511](a)|0;k[d>>2]=p;p=Hc[k[(k[a>>2]|0)+16>>2]&511](a)|0;k[e>>2]=p;Fc[k[(k[a>>2]|0)+20>>2]&1023](q,a);if(!(i[f>>0]&1)){i[f+1>>0]=0;i[f>>0]=0}else{i[k[f+8>>2]>>0]=0;k[f+4>>2]=0}B=0;wa(528,f|0,0);p=B;B=0;if(p&1){p=Rb(0)|0;Dd(p)};k[f>>2]=k[q>>2];k[f+4>>2]=k[q+4>>2];k[f+8>>2]=k[q+8>>2];p=0;while(1){if((p|0)==3)break;k[q+(p<<2)>>2]=0;p=p+1|0}Yua(q);Fc[k[(k[a>>2]|0)+24>>2]&1023](s,a);if(!(i[g>>0]&1))i[g>>0]=0;else k[k[g+8>>2]>>2]=0;k[g+4>>2]=0;B=0;wa(530,g|0,0);q=B;B=0;if(q&1){q=Rb(0)|0;Dd(q)};k[g>>2]=k[s>>2];k[g+4>>2]=k[s+4>>2];k[g+8>>2]=k[s+8>>2];q=0;while(1){if((q|0)==3)break;k[s+(q<<2)>>2]=0;q=q+1|0}kva(s);z=Hc[k[(k[a>>2]|0)+36>>2]&511](a)|0}else{a=$Aa(b,48992)|0;Fc[k[(k[a>>2]|0)+44>>2]&1023](t,a);b=k[t>>2]|0;i[c>>0]=b;i[c+1>>0]=b>>8;i[c+2>>0]=b>>16;i[c+3>>0]=b>>24;Fc[k[(k[a>>2]|0)+32>>2]&1023](u,a);if(!(i[j>>0]&1))i[j>>0]=0;else k[k[j+8>>2]>>2]=0;k[j+4>>2]=0;B=0;wa(530,j|0,0);b=B;B=0;if(b&1){b=Rb(0)|0;Dd(b)};k[j>>2]=k[u>>2];k[j+4>>2]=k[u+4>>2];k[j+8>>2]=k[u+8>>2];j=0;while(1){if((j|0)==3)break;k[u+(j<<2)>>2]=0;j=j+1|0}kva(u);Fc[k[(k[a>>2]|0)+28>>2]&1023](v,a);if(!(i[h>>0]&1))i[h>>0]=0;else k[k[h+8>>2]>>2]=0;k[h+4>>2]=0;B=0;wa(530,h|0,0);u=B;B=0;if(u&1){u=Rb(0)|0;Dd(u)};k[h>>2]=k[v>>2];k[h+4>>2]=k[v+4>>2];k[h+8>>2]=k[v+8>>2];h=0;while(1){if((h|0)==3)break;k[v+(h<<2)>>2]=0;h=h+1|0}kva(v);v=Hc[k[(k[a>>2]|0)+12>>2]&511](a)|0;k[d>>2]=v;v=Hc[k[(k[a>>2]|0)+16>>2]&511](a)|0;k[e>>2]=v;Fc[k[(k[a>>2]|0)+20>>2]&1023](w,a);if(!(i[f>>0]&1)){i[f+1>>0]=0;i[f>>0]=0}else{i[k[f+8>>2]>>0]=0;k[f+4>>2]=0}B=0;wa(528,f|0,0);v=B;B=0;if(v&1){v=Rb(0)|0;Dd(v)};k[f>>2]=k[w>>2];k[f+4>>2]=k[w+4>>2];k[f+8>>2]=k[w+8>>2];f=0;while(1){if((f|0)==3)break;k[w+(f<<2)>>2]=0;f=f+1|0}Yua(w);Fc[k[(k[a>>2]|0)+24>>2]&1023](x,a);if(!(i[g>>0]&1))i[g>>0]=0;else k[k[g+8>>2]>>2]=0;k[g+4>>2]=0;B=0;wa(530,g|0,0);w=B;B=0;if(w&1){w=Rb(0)|0;Dd(w)};k[g>>2]=k[x>>2];k[g+4>>2]=k[x+4>>2];k[g+8>>2]=k[x+8>>2];g=0;while(1){if((g|0)==3)break;k[x+(g<<2)>>2]=0;g=g+1|0}kva(x);z=Hc[k[(k[a>>2]|0)+36>>2]&511](a)|0}k[l>>2]=z;r=m;return}function sAa(a){a=a|0;return}function tAa(a){a=a|0;Sqa(a);return}function uAa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;a=r;r=r+384|0;g=a+8|0;h=a;j=a+284|0;l=a+72|0;m=a+184|0;n=a+68|0;o=a+180|0;q=a+177|0;s=a+176|0;t=a+56|0;u=a+44|0;v=a+32|0;w=a+28|0;x=a+76|0;y=a+24|0;z=a+20|0;A=a+16|0;k[l>>2]=j;p[g>>3]=f;C=pta(j,100,159241,g)|0;do if(C>>>0>99){B=0;j=bb(3)|0;D=B;B=0;if(!(D&1)?(B=0,p[h>>3]=f,D=cb(69,l|0,j|0,159241,h|0)|0,j=B,B=0,!(j&1)):0){j=k[l>>2]|0;if(!j){B=0;fb(7);E=B;B=0;if(E&1){F=0;G=0;H=8;break}I=k[l>>2]|0}else I=j;j=lua(D)|0;E=j;if(!j){B=0;fb(7);J=B;B=0;if(J&1){F=E;G=I;H=8}else{K=0;L=E;M=I;N=D;H=11}}else{K=j;L=E;M=I;N=D;H=11}}else{F=0;G=0;H=8}}else{K=m;L=0;M=0;N=C;H=11}while(0);if((H|0)==11){B=0;C=ya(421,d|0)|0;m=B;B=0;if(m&1){F=L;G=M;H=8}else{k[n>>2]=C;B=0;m=Xa(238,n|0,49320)|0;I=B;B=0;if(!(I&1)?(I=k[l>>2]|0,B=0,cb(k[(k[m>>2]|0)+32>>2]|0,m|0,I|0,I+N|0,K|0)|0,I=B,B=0,!(I&1)):0){if(!N)O=0;else O=(i[k[l>>2]>>0]|0)==45;l=0;while(1){if((l|0)==3)break;k[t+(l<<2)>>2]=0;l=l+1|0}l=0;while(1){if((l|0)==3)break;k[u+(l<<2)>>2]=0;l=l+1|0}l=0;while(1){if((l|0)==3)break;k[v+(l<<2)>>2]=0;l=l+1|0}B=0;Wa(3,c|0,O|0,n|0,o|0,q|0,s|0,t|0,u|0,v|0,w|0);c=B;B=0;if(!(c&1)){c=k[w>>2]|0;if((N|0)>(c|0)){w=i[v>>0]|0;l=i[u>>0]|0;P=(N-c<<1|1)+c+((w&1)==0?(w&255)>>>1:k[v+4>>2]|0)+((l&1)==0?(l&255)>>>1:k[u+4>>2]|0)|0}else{l=i[v>>0]|0;w=i[u>>0]|0;P=c+2+((l&1)==0?(l&255)>>>1:k[v+4>>2]|0)+((w&1)==0?(w&255)>>>1:k[u+4>>2]|0)|0}if(P>>>0>100){w=lua(P)|0;P=w;if(!w){B=0;fb(7);l=B;B=0;if(l&1)R=P;else{S=P;T=0;H=36}}else{S=P;T=w;H=36}}else{S=0;T=x;H=36}if((H|0)==36){B=0;Ja(1,T|0,y|0,z|0,k[d+4>>2]|0,K|0,K+N|0,m|0,O|0,o|0,i[q>>0]|0,i[s>>0]|0,t|0,u|0,v|0,c|0);c=B;B=0;if(!(c&1)?(k[A>>2]=k[b>>2],b=k[y>>2]|0,y=k[z>>2]|0,B=0,k[g>>2]=k[A>>2],A=xa(39,g|0,T|0,b|0,y|0,d|0,e|0)|0,e=B,B=0,!(e&1)):0){if(!S)U=C;else{mua(S);U=k[n>>2]|0}Yua(v);Yua(u);Yua(t);BEa(U)|0;if(L)mua(L);if(M)mua(M);r=a;return A|0}else R=S}S=Rb()|0;A=Q;if(!R){V=S;W=A;X=C}else{mua(R);V=S;W=A;X=k[n>>2]|0}}else{n=Rb()|0;V=n;W=Q;X=C}Yua(v);Yua(u);Yua(t);Y=V;Z=W;_=X}else{X=Rb()|0;Y=X;Z=Q;_=C}BEa(_)|0;$=Y;aa=Z;ba=L;ca=M}}if((H|0)==8){H=Rb()|0;$=H;aa=Q;ba=F;ca=G}if(ba)mua(ba);if(ca)mua(ca);Qb($|0);return 0}function vAa(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;m=r;r=r+112|0;n=m+108|0;o=m+96|0;p=m+92|0;q=m+80|0;s=m+68|0;t=m+56|0;u=m+52|0;v=m+40|0;w=m+36|0;x=m+24|0;y=m+12|0;z=m;if(a){a=$Aa(c,48928)|0;A=k[a>>2]|0;if(b){Fc[k[A+44>>2]&1023](n,a);C=k[n>>2]|0;i[d>>0]=C;i[d+1>>0]=C>>8;i[d+2>>0]=C>>16;i[d+3>>0]=C>>24;Fc[k[(k[a>>2]|0)+32>>2]&1023](o,a);if(!(i[j>>0]&1)){i[j+1>>0]=0;i[j>>0]=0}else{i[k[j+8>>2]>>0]=0;k[j+4>>2]=0}B=0;wa(528,j|0,0);C=B;B=0;if(C&1){C=Rb(0)|0;Dd(C)};k[j>>2]=k[o>>2];k[j+4>>2]=k[o+4>>2];k[j+8>>2]=k[o+8>>2];C=0;while(1){if((C|0)==3)break;k[o+(C<<2)>>2]=0;C=C+1|0}Yua(o);D=a}else{Fc[k[A+40>>2]&1023](p,a);A=k[p>>2]|0;i[d>>0]=A;i[d+1>>0]=A>>8;i[d+2>>0]=A>>16;i[d+3>>0]=A>>24;Fc[k[(k[a>>2]|0)+28>>2]&1023](q,a);if(!(i[j>>0]&1)){i[j+1>>0]=0;i[j>>0]=0}else{i[k[j+8>>2]>>0]=0;k[j+4>>2]=0}B=0;wa(528,j|0,0);A=B;B=0;if(A&1){A=Rb(0)|0;Dd(A)};k[j>>2]=k[q>>2];k[j+4>>2]=k[q+4>>2];k[j+8>>2]=k[q+8>>2];A=0;while(1){if((A|0)==3)break;k[q+(A<<2)>>2]=0;A=A+1|0}Yua(q);D=a}q=Hc[k[(k[a>>2]|0)+12>>2]&511](a)|0;i[e>>0]=q;q=Hc[k[(k[a>>2]|0)+16>>2]&511](a)|0;i[f>>0]=q;Fc[k[(k[D>>2]|0)+20>>2]&1023](s,a);if(!(i[g>>0]&1)){i[g+1>>0]=0;i[g>>0]=0}else{i[k[g+8>>2]>>0]=0;k[g+4>>2]=0}B=0;wa(528,g|0,0);q=B;B=0;if(q&1){q=Rb(0)|0;Dd(q)};k[g>>2]=k[s>>2];k[g+4>>2]=k[s+4>>2];k[g+8>>2]=k[s+8>>2];q=0;while(1){if((q|0)==3)break;k[s+(q<<2)>>2]=0;q=q+1|0}Yua(s);Fc[k[(k[D>>2]|0)+24>>2]&1023](t,a);if(!(i[h>>0]&1)){i[h+1>>0]=0;i[h>>0]=0}else{i[k[h+8>>2]>>0]=0;k[h+4>>2]=0}B=0;wa(528,h|0,0);D=B;B=0;if(D&1){D=Rb(0)|0;Dd(D)};k[h>>2]=k[t>>2];k[h+4>>2]=k[t+4>>2];k[h+8>>2]=k[t+8>>2];D=0;while(1){if((D|0)==3)break;k[t+(D<<2)>>2]=0;D=D+1|0}Yua(t);E=Hc[k[(k[a>>2]|0)+36>>2]&511](a)|0}else{a=$Aa(c,48864)|0;c=k[a>>2]|0;if(b){Fc[k[c+44>>2]&1023](u,a);b=k[u>>2]|0;i[d>>0]=b;i[d+1>>0]=b>>8;i[d+2>>0]=b>>16;i[d+3>>0]=b>>24;Fc[k[(k[a>>2]|0)+32>>2]&1023](v,a);if(!(i[j>>0]&1)){i[j+1>>0]=0;i[j>>0]=0}else{i[k[j+8>>2]>>0]=0;k[j+4>>2]=0}B=0;wa(528,j|0,0);b=B;B=0;if(b&1){b=Rb(0)|0;Dd(b)};k[j>>2]=k[v>>2];k[j+4>>2]=k[v+4>>2];k[j+8>>2]=k[v+8>>2];b=0;while(1){if((b|0)==3)break;k[v+(b<<2)>>2]=0;b=b+1|0}Yua(v);F=a}else{Fc[k[c+40>>2]&1023](w,a);c=k[w>>2]|0;i[d>>0]=c;i[d+1>>0]=c>>8;i[d+2>>0]=c>>16;i[d+3>>0]=c>>24;Fc[k[(k[a>>2]|0)+28>>2]&1023](x,a);if(!(i[j>>0]&1)){i[j+1>>0]=0;i[j>>0]=0}else{i[k[j+8>>2]>>0]=0;k[j+4>>2]=0}B=0;wa(528,j|0,0);c=B;B=0;if(c&1){c=Rb(0)|0;Dd(c)};k[j>>2]=k[x>>2];k[j+4>>2]=k[x+4>>2];k[j+8>>2]=k[x+8>>2];j=0;while(1){if((j|0)==3)break;k[x+(j<<2)>>2]=0;j=j+1|0}Yua(x);F=a}x=Hc[k[(k[a>>2]|0)+12>>2]&511](a)|0;i[e>>0]=x;x=Hc[k[(k[a>>2]|0)+16>>2]&511](a)|0;i[f>>0]=x;Fc[k[(k[F>>2]|0)+20>>2]&1023](y,a);if(!(i[g>>0]&1)){i[g+1>>0]=0;i[g>>0]=0}else{i[k[g+8>>2]>>0]=0;k[g+4>>2]=0}B=0;wa(528,g|0,0);x=B;B=0;if(x&1){x=Rb(0)|0;Dd(x)};k[g>>2]=k[y>>2];k[g+4>>2]=k[y+4>>2];k[g+8>>2]=k[y+8>>2];g=0;while(1){if((g|0)==3)break;k[y+(g<<2)>>2]=0;g=g+1|0}Yua(y);Fc[k[(k[F>>2]|0)+24>>2]&1023](z,a);if(!(i[h>>0]&1)){i[h+1>>0]=0;i[h>>0]=0}else{i[k[h+8>>2]>>0]=0;k[h+4>>2]=0}B=0;wa(528,h|0,0);F=B;B=0;if(F&1){F=Rb(0)|0;Dd(F)};k[h>>2]=k[z>>2];k[h+4>>2]=k[z+4>>2];k[h+8>>2]=k[z+8>>2];h=0;while(1){if((h|0)==3)break;k[z+(h<<2)>>2]=0;h=h+1|0}Yua(z);E=Hc[k[(k[a>>2]|0)+36>>2]&511](a)|0}k[l>>2]=E;r=m;return}function wAa(a,b,c,d,e,f,g,h,l,m,n,o,p,q,r){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;k[c>>2]=a;s=q+4|0;t=q+8|0;u=q+1|0;v=p+4|0;w=(d&512|0)==0;x=p+8|0;y=p+1|0;z=g+8|0;A=(r|0)>0;B=o+4|0;C=o+8|0;D=o+1|0;E=e;e=0;while(1){if((e|0)==4)break;a:do switch(i[l+e>>0]|0){case 0:{k[b>>2]=k[c>>2];F=E;break}case 1:{k[b>>2]=k[c>>2];G=ed[k[(k[g>>2]|0)+28>>2]&511](g,32)|0;H=k[c>>2]|0;k[c>>2]=H+1;i[H>>0]=G;F=E;break}case 3:{G=i[q>>0]|0;H=(G&1)==0;if(!((H?(G&255)>>>1:k[s>>2]|0)|0))F=E;else{G=i[(H?u:k[t>>2]|0)>>0]|0;H=k[c>>2]|0;k[c>>2]=H+1;i[H>>0]=G;F=E}break}case 2:{G=i[p>>0]|0;H=(G&1)==0;I=H?(G&255)>>>1:k[v>>2]|0;if(w|(I|0)==0)F=E;else{G=H?y:k[x>>2]|0;H=G+I|0;I=k[c>>2]|0;J=G;while(1){if((J|0)==(H|0)){K=I;break}i[I>>0]=i[J>>0]|0;I=I+1|0;J=J+1|0}k[c>>2]=K;F=E}break}case 4:{J=k[c>>2]|0;I=h?E+1|0:E;H=I;while(1){if(H>>>0>=f>>>0){L=H;break}G=i[H>>0]|0;if(G<<24>>24<=-1){L=H;break}if(!(j[(k[z>>2]|0)+(G<<24>>24<<1)>>1]&2048)){L=H;break}H=H+1|0}if(A){H=L;G=r;while(1){M=(G|0)>0;if(!(H>>>0>I>>>0&M))break;N=H+-1|0;O=i[N>>0]|0;P=k[c>>2]|0;k[c>>2]=P+1;i[P>>0]=O;H=N;G=G+-1|0}if(M)Q=ed[k[(k[g>>2]|0)+28>>2]&511](g,48)|0;else Q=0;N=G;while(1){O=k[c>>2]|0;k[c>>2]=O+1;if((N|0)<=0){R=O;break}i[O>>0]=Q;N=N+-1|0}i[R>>0]=m;S=H}else S=L;b:do if((S|0)==(I|0)){N=ed[k[(k[g>>2]|0)+28>>2]&511](g,48)|0;G=k[c>>2]|0;k[c>>2]=G+1;i[G>>0]=N}else{N=i[o>>0]|0;G=(N&1)==0;if(!((G?(N&255)>>>1:k[B>>2]|0)|0)){T=S;U=-1;V=0;W=0}else{T=S;U=i[(G?D:k[C>>2]|0)>>0]|0;V=0;W=0}while(1){if((T|0)==(I|0))break b;if((W|0)==(U|0)){G=k[c>>2]|0;k[c>>2]=G+1;i[G>>0]=n;G=V+1|0;N=i[o>>0]|0;O=(N&1)==0;if(G>>>0<(O?(N&255)>>>1:k[B>>2]|0)>>>0){N=i[(O?D:k[C>>2]|0)+G>>0]|0;X=N<<24>>24==127?-1:N<<24>>24;Y=G;Z=0}else{X=W;Y=G;Z=0}}else{X=U;Y=V;Z=W}G=T+-1|0;N=i[G>>0]|0;O=k[c>>2]|0;k[c>>2]=O+1;i[O>>0]=N;T=G;U=X;V=Y;W=Z+1|0}}while(0);H=k[c>>2]|0;if((J|0)==(H|0))F=I;else{G=H;H=J;while(1){N=G+-1|0;if(H>>>0>=N>>>0){F=I;break a}O=i[H>>0]|0;i[H>>0]=i[N>>0]|0;i[N>>0]=O;G=N;H=H+1|0}}break}default:F=E}while(0);E=F;e=e+1|0}e=i[q>>0]|0;q=(e&1)==0;F=q?(e&255)>>>1:k[s>>2]|0;if(F>>>0>1){s=q?u:k[t>>2]|0;t=s+F|0;F=k[c>>2]|0;u=s;while(1){s=u+1|0;if((s|0)==(t|0)){_=F;break}i[F>>0]=i[s>>0]|0;F=F+1|0;u=s}k[c>>2]=_}switch(d&176|0){case 32:{k[b>>2]=k[c>>2];break}case 16:break;default:k[b>>2]=a}return}function xAa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0;a=r;r=r+176|0;g=a+56|0;h=a+52|0;j=a+164|0;l=a+161|0;m=a+160|0;n=a+40|0;o=a+28|0;p=a+16|0;q=a+12|0;s=a+60|0;t=a+8|0;u=a+4|0;v=a;w=xva(d)|0;k[h>>2]=w;B=0;x=Xa(238,h|0,49320)|0;y=B;B=0;do if(y&1)z=22;else{A=i[f>>0]|0;C=(A&1)==0;D=f+4|0;if(!((C?(A&255)>>>1:k[D>>2]|0)|0))E=0;else{A=i[(C?f+1|0:k[f+8>>2]|0)>>0]|0;B=0;C=Xa(k[(k[x>>2]|0)+28>>2]|0,x|0,45)|0;F=B;B=0;if(F&1){z=22;break}E=A<<24>>24==C<<24>>24}C=0;while(1){if((C|0)==3)break;k[n+(C<<2)>>2]=0;C=C+1|0}C=0;while(1){if((C|0)==3)break;k[o+(C<<2)>>2]=0;C=C+1|0}C=0;while(1){if((C|0)==3)break;k[p+(C<<2)>>2]=0;C=C+1|0}B=0;Wa(3,c|0,E|0,h|0,j|0,l|0,m|0,n|0,o|0,p|0,q|0);C=B;B=0;if(!(C&1)){C=i[f>>0]|0;A=k[D>>2]|0;F=(C&1)==0?(C&255)>>>1:A;G=k[q>>2]|0;if((F|0)>(G|0)){H=i[p>>0]|0;I=i[o>>0]|0;J=(F-G<<1|1)+G+((H&1)==0?(H&255)>>>1:k[p+4>>2]|0)+((I&1)==0?(I&255)>>>1:k[o+4>>2]|0)|0}else{I=i[p>>0]|0;H=i[o>>0]|0;J=G+2+((I&1)==0?(I&255)>>>1:k[p+4>>2]|0)+((H&1)==0?(H&255)>>>1:k[o+4>>2]|0)|0}if(J>>>0>100){H=lua(J)|0;I=H;if(!H){B=0;fb(7);F=B;B=0;if(F&1)K=I;else{L=i[f>>0]|0;M=k[D>>2]|0;N=I;O=0;z=26}}else{L=C;M=A;N=I;O=H;z=26}}else{L=C;M=A;N=0;O=s;z=26}if((z|0)==26){A=(L&1)==0;C=A?f+1|0:k[f+8>>2]|0;B=0;Ja(1,O|0,t|0,u|0,k[d+4>>2]|0,C|0,C+(A?(L&255)>>>1:M)|0,x|0,E|0,j|0,i[l>>0]|0,i[m>>0]|0,n|0,o|0,p|0,G|0);G=B;B=0;if(!(G&1)?(k[v>>2]=k[b>>2],G=k[t>>2]|0,A=k[u>>2]|0,B=0,k[g>>2]=k[v>>2],C=xa(39,g|0,O|0,G|0,A|0,d|0,e|0)|0,A=B,B=0,!(A&1)):0){if(!N)P=w;else{mua(N);P=k[h>>2]|0}Yua(p);Yua(o);Yua(n);BEa(P)|0;r=a;return C|0}else K=N}C=Rb()|0;A=Q;if(!K){R=C;S=A;T=w}else{mua(K);R=C;S=A;T=k[h>>2]|0}}else{A=Rb()|0;R=A;S=Q;T=w}Yua(p);Yua(o);Yua(n);U=R;V=S;W=T}while(0);if((z|0)==22){z=Rb()|0;U=z;V=Q;W=w}BEa(W)|0;Qb(U|0);return 0}function yAa(a){a=a|0;return}function zAa(a){a=a|0;Sqa(a);return}function AAa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;a=r;r=r+1008|0;g=a+8|0;h=a;j=a+896|0;l=a+888|0;m=a+488|0;n=a+480|0;o=a+892|0;q=a+476|0;s=a+472|0;t=a+460|0;u=a+448|0;v=a+436|0;w=a+432|0;x=a+32|0;y=a+24|0;z=a+20|0;A=a+16|0;k[l>>2]=j;p[g>>3]=f;C=pta(j,100,159241,g)|0;do if(C>>>0>99){B=0;j=bb(3)|0;D=B;B=0;if(!(D&1)?(B=0,p[h>>3]=f,D=cb(69,l|0,j|0,159241,h|0)|0,j=B,B=0,!(j&1)):0){j=k[l>>2]|0;if(!j){B=0;fb(7);E=B;B=0;if(E&1){F=0;G=0;H=8;break}I=k[l>>2]|0}else I=j;j=lua(D<<2)|0;E=j;if(!j){B=0;fb(7);J=B;B=0;if(J&1){F=E;G=I;H=8}else{K=0;L=E;M=I;N=D;H=11}}else{K=j;L=E;M=I;N=D;H=11}}else{F=0;G=0;H=8}}else{K=m;L=0;M=0;N=C;H=11}while(0);if((H|0)==11){B=0;C=ya(421,d|0)|0;m=B;B=0;if(m&1){F=L;G=M;H=8}else{k[n>>2]=C;B=0;m=Xa(238,n|0,49312)|0;I=B;B=0;if(!(I&1)?(I=k[l>>2]|0,B=0,cb(k[(k[m>>2]|0)+48>>2]|0,m|0,I|0,I+N|0,K|0)|0,I=B,B=0,!(I&1)):0){if(!N)O=0;else O=(i[k[l>>2]>>0]|0)==45;l=0;while(1){if((l|0)==3)break;k[t+(l<<2)>>2]=0;l=l+1|0}l=0;while(1){if((l|0)==3)break;k[u+(l<<2)>>2]=0;l=l+1|0}l=0;while(1){if((l|0)==3)break;k[v+(l<<2)>>2]=0;l=l+1|0}B=0;Wa(4,c|0,O|0,n|0,o|0,q|0,s|0,t|0,u|0,v|0,w|0);c=B;B=0;if(!(c&1)){c=k[w>>2]|0;if((N|0)>(c|0)){w=i[v>>0]|0;l=i[u>>0]|0;P=(N-c<<1|1)+c+((w&1)==0?(w&255)>>>1:k[v+4>>2]|0)+((l&1)==0?(l&255)>>>1:k[u+4>>2]|0)|0}else{l=i[v>>0]|0;w=i[u>>0]|0;P=c+2+((l&1)==0?(l&255)>>>1:k[v+4>>2]|0)+((w&1)==0?(w&255)>>>1:k[u+4>>2]|0)|0}if(P>>>0>100){w=lua(P<<2)|0;P=w;if(!w){B=0;fb(7);l=B;B=0;if(l&1)R=P;else{S=P;T=0;H=36}}else{S=P;T=w;H=36}}else{S=0;T=x;H=36}if((H|0)==36){B=0;Ja(2,T|0,y|0,z|0,k[d+4>>2]|0,K|0,K+(N<<2)|0,m|0,O|0,o|0,k[q>>2]|0,k[s>>2]|0,t|0,u|0,v|0,c|0);c=B;B=0;if(!(c&1)?(k[A>>2]=k[b>>2],b=k[y>>2]|0,y=k[z>>2]|0,B=0,k[g>>2]=k[A>>2],A=xa(40,g|0,T|0,b|0,y|0,d|0,e|0)|0,e=B,B=0,!(e&1)):0){if(!S)U=C;else{mua(S);U=k[n>>2]|0}kva(v);kva(u);Yua(t);BEa(U)|0;if(L)mua(L);if(M)mua(M);r=a;return A|0}else R=S}S=Rb()|0;A=Q;if(!R){V=S;W=A;X=C}else{mua(R);V=S;W=A;X=k[n>>2]|0}}else{n=Rb()|0;V=n;W=Q;X=C}kva(v);kva(u);Yua(t);Y=V;Z=W;_=X}else{X=Rb()|0;Y=X;Z=Q;_=C}BEa(_)|0;$=Y;aa=Z;ba=L;ca=M}}if((H|0)==8){H=Rb()|0;$=H;aa=Q;ba=F;ca=G}if(ba)mua(ba);if(ca)mua(ca);Qb($|0);return 0}function BAa(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;m=r;r=r+112|0;n=m+108|0;o=m+96|0;p=m+92|0;q=m+80|0;s=m+68|0;t=m+56|0;u=m+52|0;v=m+40|0;w=m+36|0;x=m+24|0;y=m+12|0;z=m;if(a){a=$Aa(c,49056)|0;A=k[a>>2]|0;if(b){Fc[k[A+44>>2]&1023](n,a);C=k[n>>2]|0;i[d>>0]=C;i[d+1>>0]=C>>8;i[d+2>>0]=C>>16;i[d+3>>0]=C>>24;Fc[k[(k[a>>2]|0)+32>>2]&1023](o,a);if(!(i[j>>0]&1))i[j>>0]=0;else k[k[j+8>>2]>>2]=0;k[j+4>>2]=0;B=0;wa(530,j|0,0);C=B;B=0;if(C&1){C=Rb(0)|0;Dd(C)};k[j>>2]=k[o>>2];k[j+4>>2]=k[o+4>>2];k[j+8>>2]=k[o+8>>2];C=0;while(1){if((C|0)==3)break;k[o+(C<<2)>>2]=0;C=C+1|0}kva(o)}else{Fc[k[A+40>>2]&1023](p,a);A=k[p>>2]|0;i[d>>0]=A;i[d+1>>0]=A>>8;i[d+2>>0]=A>>16;i[d+3>>0]=A>>24;Fc[k[(k[a>>2]|0)+28>>2]&1023](q,a);if(!(i[j>>0]&1))i[j>>0]=0;else k[k[j+8>>2]>>2]=0;k[j+4>>2]=0;B=0;wa(530,j|0,0);A=B;B=0;if(A&1){A=Rb(0)|0;Dd(A)};k[j>>2]=k[q>>2];k[j+4>>2]=k[q+4>>2];k[j+8>>2]=k[q+8>>2];A=0;while(1){if((A|0)==3)break;k[q+(A<<2)>>2]=0;A=A+1|0}kva(q)}q=Hc[k[(k[a>>2]|0)+12>>2]&511](a)|0;k[e>>2]=q;q=Hc[k[(k[a>>2]|0)+16>>2]&511](a)|0;k[f>>2]=q;Fc[k[(k[a>>2]|0)+20>>2]&1023](s,a);if(!(i[g>>0]&1)){i[g+1>>0]=0;i[g>>0]=0}else{i[k[g+8>>2]>>0]=0;k[g+4>>2]=0}B=0;wa(528,g|0,0);q=B;B=0;if(q&1){q=Rb(0)|0;Dd(q)};k[g>>2]=k[s>>2];k[g+4>>2]=k[s+4>>2];k[g+8>>2]=k[s+8>>2];q=0;while(1){if((q|0)==3)break;k[s+(q<<2)>>2]=0;q=q+1|0}Yua(s);Fc[k[(k[a>>2]|0)+24>>2]&1023](t,a);if(!(i[h>>0]&1))i[h>>0]=0;else k[k[h+8>>2]>>2]=0;k[h+4>>2]=0;B=0;wa(530,h|0,0);s=B;B=0;if(s&1){s=Rb(0)|0;Dd(s)};k[h>>2]=k[t>>2];k[h+4>>2]=k[t+4>>2];k[h+8>>2]=k[t+8>>2];s=0;while(1){if((s|0)==3)break;k[t+(s<<2)>>2]=0;s=s+1|0}kva(t);D=Hc[k[(k[a>>2]|0)+36>>2]&511](a)|0}else{a=$Aa(c,48992)|0;c=k[a>>2]|0;if(b){Fc[k[c+44>>2]&1023](u,a);b=k[u>>2]|0;i[d>>0]=b;i[d+1>>0]=b>>8;i[d+2>>0]=b>>16;i[d+3>>0]=b>>24;Fc[k[(k[a>>2]|0)+32>>2]&1023](v,a);if(!(i[j>>0]&1))i[j>>0]=0;else k[k[j+8>>2]>>2]=0;k[j+4>>2]=0;B=0;wa(530,j|0,0);b=B;B=0;if(b&1){b=Rb(0)|0;Dd(b)};k[j>>2]=k[v>>2];k[j+4>>2]=k[v+4>>2];k[j+8>>2]=k[v+8>>2];b=0;while(1){if((b|0)==3)break;k[v+(b<<2)>>2]=0;b=b+1|0}kva(v)}else{Fc[k[c+40>>2]&1023](w,a);c=k[w>>2]|0;i[d>>0]=c;i[d+1>>0]=c>>8;i[d+2>>0]=c>>16;i[d+3>>0]=c>>24;Fc[k[(k[a>>2]|0)+28>>2]&1023](x,a);if(!(i[j>>0]&1))i[j>>0]=0;else k[k[j+8>>2]>>2]=0;k[j+4>>2]=0;B=0;wa(530,j|0,0);c=B;B=0;if(c&1){c=Rb(0)|0;Dd(c)};k[j>>2]=k[x>>2];k[j+4>>2]=k[x+4>>2];k[j+8>>2]=k[x+8>>2];j=0;while(1){if((j|0)==3)break;k[x+(j<<2)>>2]=0;j=j+1|0}kva(x)}x=Hc[k[(k[a>>2]|0)+12>>2]&511](a)|0;k[e>>2]=x;x=Hc[k[(k[a>>2]|0)+16>>2]&511](a)|0;k[f>>2]=x;Fc[k[(k[a>>2]|0)+20>>2]&1023](y,a);if(!(i[g>>0]&1)){i[g+1>>0]=0;i[g>>0]=0}else{i[k[g+8>>2]>>0]=0;k[g+4>>2]=0}B=0;wa(528,g|0,0);x=B;B=0;if(x&1){x=Rb(0)|0;Dd(x)};k[g>>2]=k[y>>2];k[g+4>>2]=k[y+4>>2];k[g+8>>2]=k[y+8>>2];g=0;while(1){if((g|0)==3)break;k[y+(g<<2)>>2]=0;g=g+1|0}Yua(y);Fc[k[(k[a>>2]|0)+24>>2]&1023](z,a);if(!(i[h>>0]&1))i[h>>0]=0;else k[k[h+8>>2]>>2]=0;k[h+4>>2]=0;B=0;wa(530,h|0,0);y=B;B=0;if(y&1){y=Rb(0)|0;Dd(y)};k[h>>2]=k[z>>2];k[h+4>>2]=k[z+4>>2];k[h+8>>2]=k[z+8>>2];h=0;while(1){if((h|0)==3)break;k[z+(h<<2)>>2]=0;h=h+1|0}kva(z);D=Hc[k[(k[a>>2]|0)+36>>2]&511](a)|0}k[l>>2]=D;r=m;return}function CAa(a,b,c,d,e,f,g,h,j,l,m,n,o,p,q){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;k[c>>2]=a;r=p+4|0;s=p+8|0;t=o+4|0;u=(d&512|0)==0;v=o+8|0;w=(q|0)>0;x=n+4|0;y=n+8|0;z=n+1|0;A=e;e=0;while(1){if((e|0)==4)break;a:do switch(i[j+e>>0]|0){case 0:{k[b>>2]=k[c>>2];B=A;break}case 1:{k[b>>2]=k[c>>2];C=ed[k[(k[g>>2]|0)+44>>2]&511](g,32)|0;D=k[c>>2]|0;k[c>>2]=D+4;k[D>>2]=C;B=A;break}case 3:{C=i[p>>0]|0;D=(C&1)==0;if(!((D?(C&255)>>>1:k[r>>2]|0)|0))B=A;else{C=k[(D?r:k[s>>2]|0)>>2]|0;D=k[c>>2]|0;k[c>>2]=D+4;k[D>>2]=C;B=A}break}case 2:{C=i[o>>0]|0;D=(C&1)==0;E=D?(C&255)>>>1:k[t>>2]|0;if(u|(E|0)==0)B=A;else{C=D?t:k[v>>2]|0;D=C+(E<<2)|0;F=k[c>>2]|0;G=F;H=C;while(1){if((H|0)==(D|0))break;k[G>>2]=k[H>>2];G=G+4|0;H=H+4|0}k[c>>2]=F+(E<<2);B=A}break}case 4:{H=k[c>>2]|0;G=h?A+4|0:A;D=G;while(1){if(D>>>0>=f>>>0){I=D;break}if(!(Rc[k[(k[g>>2]|0)+12>>2]&63](g,2048,k[D>>2]|0)|0)){I=D;break}D=D+4|0}if(w){D=I;E=q;while(1){J=(E|0)>0;if(!(D>>>0>G>>>0&J))break;F=D+-4|0;C=k[F>>2]|0;K=k[c>>2]|0;k[c>>2]=K+4;k[K>>2]=C;D=F;E=E+-1|0}if(J)L=ed[k[(k[g>>2]|0)+44>>2]&511](g,48)|0;else L=0;F=k[c>>2]|0;C=E;while(1){K=F+4|0;if((C|0)<=0){M=F;N=K;break}k[F>>2]=L;F=K;C=C+-1|0}k[c>>2]=N;k[M>>2]=l;O=D}else O=I;if((O|0)==(G|0)){C=ed[k[(k[g>>2]|0)+44>>2]&511](g,48)|0;F=k[c>>2]|0;E=F+4|0;k[c>>2]=E;k[F>>2]=C;P=E}else{E=i[n>>0]|0;C=(E&1)==0;F=k[x>>2]|0;if(!((C?(E&255)>>>1:F)|0)){Q=O;R=-1;S=0;T=0}else{Q=O;R=i[(C?z:k[y>>2]|0)>>0]|0;S=0;T=0}while(1){if((Q|0)==(G|0))break;C=k[c>>2]|0;if((T|0)==(R|0)){E=C+4|0;k[c>>2]=E;k[C>>2]=m;K=S+1|0;U=i[n>>0]|0;V=(U&1)==0;if(K>>>0<(V?(U&255)>>>1:F)>>>0){U=i[(V?z:k[y>>2]|0)+K>>0]|0;W=E;X=U<<24>>24==127?-1:U<<24>>24;Y=K;Z=0}else{W=E;X=T;Y=K;Z=0}}else{W=C;X=R;Y=S;Z=T}C=Q+-4|0;K=k[C>>2]|0;k[c>>2]=W+4;k[W>>2]=K;Q=C;R=X;S=Y;T=Z+1|0}P=k[c>>2]|0}if((H|0)==(P|0))B=G;else{F=P;D=H;while(1){C=F+-4|0;if(D>>>0>=C>>>0){B=G;break a}K=k[D>>2]|0;k[D>>2]=k[C>>2];k[C>>2]=K;F=C;D=D+4|0}}break}default:B=A}while(0);A=B;e=e+1|0}e=i[p>>0]|0;p=(e&1)==0;B=p?(e&255)>>>1:k[r>>2]|0;if(B>>>0>1){e=p?r:k[s>>2]|0;s=e+4|0;r=e+(B<<2)|0;B=k[c>>2]|0;e=r-s|0;p=B;A=s;while(1){if((A|0)==(r|0))break;k[p>>2]=k[A>>2];p=p+4|0;A=A+4|0}k[c>>2]=B+(e>>>2<<2)}switch(d&176|0){case 32:{k[b>>2]=k[c>>2];break}case 16:break;default:k[b>>2]=a}return}function DAa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0;a=r;r=r+480|0;g=a+468|0;h=a+464|0;j=a+472|0;l=a+460|0;m=a+456|0;n=a+444|0;o=a+432|0;p=a+420|0;q=a+416|0;s=a+16|0;t=a+8|0;u=a+4|0;v=a;w=xva(d)|0;k[h>>2]=w;B=0;x=Xa(238,h|0,49312)|0;y=B;B=0;do if(y&1)z=22;else{A=i[f>>0]|0;C=(A&1)==0;D=f+4|0;if(!((C?(A&255)>>>1:k[D>>2]|0)|0))E=0;else{A=k[(C?D:k[f+8>>2]|0)>>2]|0;B=0;C=Xa(k[(k[x>>2]|0)+44>>2]|0,x|0,45)|0;F=B;B=0;if(F&1){z=22;break}E=(A|0)==(C|0)}C=0;while(1){if((C|0)==3)break;k[n+(C<<2)>>2]=0;C=C+1|0}C=0;while(1){if((C|0)==3)break;k[o+(C<<2)>>2]=0;C=C+1|0}C=0;while(1){if((C|0)==3)break;k[p+(C<<2)>>2]=0;C=C+1|0}B=0;Wa(4,c|0,E|0,h|0,j|0,l|0,m|0,n|0,o|0,p|0,q|0);C=B;B=0;if(!(C&1)){C=i[f>>0]|0;A=k[D>>2]|0;F=(C&1)==0?(C&255)>>>1:A;G=k[q>>2]|0;if((F|0)>(G|0)){H=i[p>>0]|0;I=i[o>>0]|0;J=(F-G<<1|1)+G+((H&1)==0?(H&255)>>>1:k[p+4>>2]|0)+((I&1)==0?(I&255)>>>1:k[o+4>>2]|0)|0}else{I=i[p>>0]|0;H=i[o>>0]|0;J=G+2+((I&1)==0?(I&255)>>>1:k[p+4>>2]|0)+((H&1)==0?(H&255)>>>1:k[o+4>>2]|0)|0}if(J>>>0>100){H=lua(J<<2)|0;I=H;if(!H){B=0;fb(7);F=B;B=0;if(F&1)K=I;else{L=i[f>>0]|0;M=k[D>>2]|0;N=I;O=0;z=26}}else{L=C;M=A;N=I;O=H;z=26}}else{L=C;M=A;N=0;O=s;z=26}if((z|0)==26){A=(L&1)==0;C=A?D:k[f+8>>2]|0;B=0;Ja(2,O|0,t|0,u|0,k[d+4>>2]|0,C|0,C+((A?(L&255)>>>1:M)<<2)|0,x|0,E|0,j|0,k[l>>2]|0,k[m>>2]|0,n|0,o|0,p|0,G|0);G=B;B=0;if(!(G&1)?(k[v>>2]=k[b>>2],G=k[t>>2]|0,A=k[u>>2]|0,B=0,k[g>>2]=k[v>>2],C=xa(40,g|0,O|0,G|0,A|0,d|0,e|0)|0,A=B,B=0,!(A&1)):0){if(!N)P=w;else{mua(N);P=k[h>>2]|0}kva(p);kva(o);Yua(n);BEa(P)|0;r=a;return C|0}else K=N}C=Rb()|0;A=Q;if(!K){R=C;S=A;T=w}else{mua(K);R=C;S=A;T=k[h>>2]|0}}else{A=Rb()|0;R=A;S=Q;T=w}kva(p);kva(o);Yua(n);U=R;V=S;W=T}while(0);if((z|0)==22){z=Rb()|0;U=z;V=Q;W=w}BEa(W)|0;Qb(U|0);return 0}function EAa(a){a=a|0;return}function FAa(a){a=a|0;Sqa(a);return}function GAa(a,b,c){a=a|0;b=b|0;c=c|0;c=$ra((i[b>>0]&1)==0?b+1|0:k[b+8>>2]|0,1)|0;return c>>>((c|0)!=(-1|0)&1)|0}function HAa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;b=r;r=r+16|0;g=b;h=0;while(1){if((h|0)==3)break;k[g+(h<<2)>>2]=0;h=h+1|0}h=i[f>>0]|0;j=(h&1)==0;l=j?f+1|0:k[f+8>>2]|0;m=l+(j?(h&255)>>>1:k[f+4>>2]|0)|0;f=l;while(1){if(f>>>0>=m>>>0){n=8;break}B=0;wa(503,g|0,i[f>>0]|0);l=B;B=0;if(l&1){n=9;break}f=f+1|0}do if((n|0)==8){B=0;f=cb(71,((c|0)==-1?-1:c<<1)|0,d|0,e|0,((i[g>>0]&1)==0?g+1|0:k[g+8>>2]|0)|0)|0;m=B;B=0;if(m&1){m=Rb()|0;o=m;p=Q;n=11;break}m=0;while(1){if((m|0)==3)break;k[a+(m<<2)>>2]=0;m=m+1|0}m=f+(Lta(f)|0)|0;l=f;while(1){if(l>>>0>=m>>>0){n=20;break}B=0;wa(503,a|0,i[l>>0]|0);h=B;B=0;if(h&1){n=19;break}l=l+1|0}if((n|0)==19){l=Rb()|0;m=Q;Yua(a);q=l;s=m;break}else if((n|0)==20){Yua(g);r=b;return}}else if((n|0)==9){m=Rb()|0;o=m;p=Q;n=11}while(0);if((n|0)==11){q=o;s=p}Yua(g);Qb(q|0)}function IAa(a,b){a=a|0;b=b|0;return}function JAa(a){a=a|0;return}function KAa(a){a=a|0;Sqa(a);return}function LAa(a,b,c){a=a|0;b=b|0;c=c|0;c=$ra((i[b>>0]&1)==0?b+1|0:k[b+8>>2]|0,1)|0;return c>>>((c|0)!=(-1|0)&1)|0}function MAa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;b=r;r=r+224|0;g=b+184|0;h=b+192|0;j=b+180|0;l=b+176|0;m=b+168|0;n=b+40|0;o=b+32|0;p=b+28|0;q=b+16|0;s=b+8|0;t=b;u=0;while(1){if((u|0)==3)break;k[q+(u<<2)>>2]=0;u=u+1|0}k[s+4>>2]=0;k[s>>2]=49796;u=i[f>>0]|0;v=(u&1)==0;w=f+4|0;x=v?w:k[f+8>>2]|0;f=x+((v?(u&255)>>>1:k[w>>2]|0)<<2)|0;w=h+32|0;u=x;x=0;a:while(1){if(!((x|0)!=2&u>>>0<f>>>0)){y=13;break}k[l>>2]=u;B=0;v=gb(k[(k[s>>2]|0)+12>>2]|0,s|0,g|0,u|0,f|0,l|0,h|0,w|0,j|0)|0;z=B;B=0;if(z&1){y=16;break}if((v|0)==2?1:(k[l>>2]|0)==(u|0)){y=8;break}else A=h;while(1){if(A>>>0>=(k[j>>2]|0)>>>0)break;B=0;wa(503,q|0,i[A>>0]|0);z=B;B=0;if(z&1){y=15;break a}A=A+1|0}u=k[l>>2]|0;x=v}do if((y|0)==8){B=0;va(553,159178);B=0;x=Rb()|0;C=x;D=Q;y=17}else if((y|0)==13){B=0;x=cb(71,((c|0)==-1?-1:c<<1)|0,d|0,e|0,((i[q>>0]&1)==0?q+1|0:k[q+8>>2]|0)|0)|0;l=B;B=0;if(l&1){l=Rb()|0;E=l;F=Q;break}l=0;while(1){if((l|0)==3)break;k[a+(l<<2)>>2]=0;l=l+1|0}k[t+4>>2]=0;k[t>>2]=49844;l=x+(Lta(x)|0)|0;v=l;u=n+128|0;A=x;j=0;b:while(1){if(!((j|0)!=2&A>>>0<l>>>0)){y=30;break}k[p>>2]=A;B=0;h=gb(k[(k[t>>2]|0)+16>>2]|0,t|0,m|0,A|0,((v-A|0)>32?A+32|0:l)|0,p|0,n|0,u|0,o|0)|0;w=B;B=0;if(w&1){y=32;break}if((h|0)==2?1:(k[p>>2]|0)==(A|0)){y=25;break}else G=n;while(1){if(G>>>0>=(k[o>>2]|0)>>>0)break;B=0;wa(529,a|0,k[G>>2]|0);w=B;B=0;if(w&1){y=31;break b}G=G+4|0}A=k[p>>2]|0;j=h}if((y|0)==25){B=0;va(553,159178);B=0;j=Rb()|0;H=j;I=Q}else if((y|0)==30){Yua(q);r=b;return}else if((y|0)==31){j=Rb()|0;H=j;I=Q}else if((y|0)==32){j=Rb()|0;H=j;I=Q}kva(a);E=H;F=I}else if((y|0)==15){j=Rb()|0;C=j;D=Q;y=17}else if((y|0)==16){j=Rb()|0;C=j;D=Q;y=17}while(0);if((y|0)==17){E=C;F=D}Yua(q);Qb(E|0)}function NAa(a,b){a=a|0;b=b|0;return}function OAa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;k[a+4>>2]=b+-1;k[a>>2]=49296;b=a+8|0;B=0;wa(531,b|0,28);c=B;B=0;if(c&1){c=Rb()|0;d=Q;e=c}else{c=a+144|0;B=0;eb(502,c|0,159108,1);f=B;B=0;if(f&1){f=Rb()|0;g=Q;h=f}else{f=k[b>>2]|0;j=a+12|0;l=k[j>>2]|0;while(1){if((l|0)==(f|0))break;m=l+-4|0;k[j>>2]=m;l=m}k[6637]=0;k[6636]=48224;B=0;wa(532,a|0,26544);l=B;B=0;do if((((((((((((((!(l&1)?(k[6639]=0,k[6638]=48264,B=0,wa(533,a|0,26552),j=B,B=0,!(j&1)):0)?(k[6641]=0,k[6640]=49336,k[6642]=0,i[26572]=0,j=fBa()|0,k[6642]=j,B=0,wa(534,a|0,26560),j=B,B=0,!(j&1)):0)?(k[6645]=0,k[6644]=49584,B=0,wa(535,a|0,26576),j=B,B=0,!(j&1)):0)?(k[6647]=0,k[6646]=49652,B=0,wa(536,a|0,26584),j=B,B=0,!(j&1)):0)?(B=0,wa(537,26592,1),j=B,B=0,!(j&1)):0)?(B=0,wa(538,a|0,26592),j=B,B=0,!(j&1)):0)?(k[6653]=0,k[6652]=49700,B=0,wa(539,a|0,26608),j=B,B=0,!(j&1)):0)?(k[6655]=0,k[6654]=49748,B=0,wa(540,a|0,26616),j=B,B=0,!(j&1)):0)?(kCa(26624,1),B=0,wa(541,a|0,26624),j=B,B=0,!(j&1)):0)?(lCa(26648,1),B=0,wa(542,a|0,26648),j=B,B=0,!(j&1)):0)?(k[6671]=0,k[6670]=48304,B=0,wa(543,a|0,26680),j=B,B=0,!(j&1)):0)?(k[6673]=0,k[6672]=48376,B=0,wa(544,a|0,26688),j=B,B=0,!(j&1)):0)?(k[6675]=0,k[6674]=48448,B=0,wa(545,a|0,26696),j=B,B=0,!(j&1)):0)?(k[6677]=0,k[6676]=48508,B=0,wa(546,a|0,26704),j=B,B=0,!(j&1)):0){k[6679]=0;k[6678]=48816;B=0;wa(547,a|0,26712);j=B;B=0;if(j&1){n=42;break}k[6681]=0;k[6680]=48880;B=0;wa(548,a|0,26720);j=B;B=0;if(j&1){n=42;break}k[6683]=0;k[6682]=48944;B=0;wa(549,a|0,26728);j=B;B=0;if(j&1){n=42;break}k[6685]=0;k[6684]=49008;B=0;wa(550,a|0,26736);j=B;B=0;if(j&1){n=42;break}k[6687]=0;k[6686]=49072;B=0;wa(551,a|0,26744);j=B;B=0;if(j&1){n=42;break}k[6689]=0;k[6688]=49108;B=0;wa(552,a|0,26752);j=B;B=0;if(j&1){n=42;break}k[6691]=0;k[6690]=49144;B=0;wa(553,a|0,26760);j=B;B=0;if(j&1){n=42;break}k[6693]=0;k[6692]=49180;B=0;wa(554,a|0,26768);j=B;B=0;if(j&1){n=42;break}k[6695]=0;k[6694]=48568;k[6696]=48616;B=0;wa(555,a|0,26776);j=B;B=0;if(j&1){n=42;break}k[6699]=0;k[6698]=48660;k[6700]=48708;B=0;wa(556,a|0,26792);j=B;B=0;if(j&1){n=42;break}k[6703]=0;k[6702]=49564;B=0;j=bb(3)|0;f=B;B=0;if(f&1){f=Rb()|0;o=Q;p=f;break}k[6704]=j;k[6702]=48752;B=0;wa(557,a|0,26808);j=B;B=0;if(j&1){n=42;break}k[6707]=0;k[6706]=49564;B=0;j=bb(3)|0;f=B;B=0;if(f&1){f=Rb()|0;o=Q;p=f;break}k[6708]=j;k[6706]=48784;B=0;wa(558,a|0,26824);j=B;B=0;if(j&1){n=42;break}k[6711]=0;k[6710]=49216;B=0;wa(559,a|0,26840);j=B;B=0;if(j&1){n=42;break}k[6713]=0;k[6712]=49256;B=0;wa(560,a|0,26848);j=B;B=0;if(j&1){n=42;break}return}else n=42;while(0);if((n|0)==42){n=Rb()|0;o=Q;p=n}Yua(c);g=o;h=p}WDa(b);d=g;e=h}Qb(e|0)}function PAa(){var a=0;do if((i[26856]|0)==0?(Gb(26856)|0)!=0:0){B=0;bb(4)|0;a=B;B=0;if(a&1){a=Rb()|0;sc(26856);Qb(a|0)}else{k[12521]=50080;Eb(26856);break}}while(0);return k[12521]|0}function QAa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;AEa(b);d=a+8|0;e=k[d>>2]|0;do if((k[a+12>>2]|0)-e>>2>>>0>c>>>0){f=d;g=e}else{B=0;wa(561,d|0,c+1|0);h=B;B=0;if(!(h&1)){f=d;g=k[d>>2]|0;break}h=Rb()|0;if(b)BEa(b)|0;Qb(h|0)}while(0);d=k[g+(c<<2)>>2]|0;if(!d)i=g;else{BEa(d)|0;i=k[f>>2]|0}k[i+(c<<2)>>2]=b;return}function RAa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;k[a>>2]=49296;b=a+8|0;c=a+12|0;d=0;while(1){e=k[b>>2]|0;if(d>>>0>=(k[c>>2]|0)-e>>2>>>0)break;f=k[e+(d<<2)>>2]|0;if(f)BEa(f)|0;d=d+1|0}Yua(a+144|0);WDa(b);return}function SAa(a){a=a|0;RAa(a);Sqa(a);return}function TAa(a,b){a=a|0;b=b|0;if(YDa(a,b)|0)return k[(k[a+8>>2]|0)+(b<<2)>>2]|0;else{b=Ab(4)|0;era(b);jc(b|0,25248,352)}return 0}function UAa(){OAa(26864,1);k[12520]=26864;return 50080}function VAa(){var a=0,b=0;a=PAa()|0;b=k[a>>2]|0;k[12522]=b;AEa(b);return 50088}function WAa(){var a=0;do if((i[27024]|0)==0?(Gb(27024)|0)!=0:0){B=0;bb(5)|0;a=B;B=0;if(a&1){a=Rb()|0;sc(27024);Qb(a|0)}else{k[12523]=50088;Eb(27024);break}}while(0);return k[12523]|0}function XAa(a){a=a|0;var b=0,c=0;B=0;b=bb(6)|0;c=B;B=0;if(c&1){c=Rb(0)|0;Dd(c)}else{c=k[b>>2]|0;k[a>>2]=c;AEa(c);return}}function YAa(a,b){a=a|0;b=b|0;var c=0;c=k[b>>2]|0;k[a>>2]=c;AEa(c);return}function ZAa(a){a=a|0;BEa(k[a>>2]|0)|0;return}function _Aa(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;if((k[a>>2]|0)!=-1){k[c>>2]=a;k[c+4>>2]=554;k[c+8>>2]=0;OEa(a,c,555)}r=b;return (k[a+4>>2]|0)+-1|0}function $Aa(a,b){a=a|0;b=b|0;var c=0;c=k[a>>2]|0;return TAa(c,_Aa(b)|0)|0}function aBa(a){a=a|0;Sqa(a);return}function bBa(a){a=a|0;if(a)Ec[k[(k[a>>2]|0)+4>>2]&1023](a);return}function cBa(a){a=a|0;var b=0;b=k[12327]|0;k[12327]=b+1;k[a+4>>2]=b+1;return}function dBa(a){a=a|0;Sqa(a);return}function eBa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(c>>>0<128){a=(fBa()|0)+(c<<1)|0;d=(j[a>>1]&b)<<16>>16!=0}else d=0;return d|0}function fBa(){var a=0,b=0;B=0;a=bb(7)|0;b=B;B=0;if(b&1){b=Rb(0)|0;Dd(b)}else return k[a>>2]|0;return 0}function gBa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;a=(c-b|0)>>>2;e=d;d=b;while(1){if((d|0)==(c|0))break;f=k[d>>2]|0;if(f>>>0<128){g=(fBa()|0)+(f<<1)|0;h=m[g>>1]|0}else h=0;j[e>>1]=h;e=e+2|0;d=d+4|0}return b+(a<<2)|0}function hBa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;a=c;while(1){if((a|0)==(d|0)){e=d;break}c=k[a>>2]|0;if(c>>>0<128?(f=(fBa()|0)+(c<<1)|0,(j[f>>1]&b)<<16>>16!=0):0){e=a;break}a=a+4|0}return e|0}function iBa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;a=c;while(1){if((a|0)==(d|0)){e=d;break}c=k[a>>2]|0;if(c>>>0>=128){e=a;break}f=(fBa()|0)+(c<<1)|0;if(!((j[f>>1]&b)<<16>>16)){e=a;break}a=a+4|0}return e|0}function jBa(a,b){a=a|0;b=b|0;var c=0;if(b>>>0<128){a=(kBa()|0)+(b<<2)|0;c=k[a>>2]|0}else c=b;return c|0}function kBa(){var a=0,b=0;B=0;a=bb(8)|0;b=B;B=0;if(b&1){b=Rb(0)|0;Dd(b)}else return k[a>>2]|0;return 0}function lBa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a=(c-b|0)>>>2;d=b;while(1){if((d|0)==(c|0))break;e=k[d>>2]|0;if(e>>>0<128){f=(kBa()|0)+(e<<2)|0;g=k[f>>2]|0}else g=e;k[d>>2]=g;d=d+4|0}return b+(a<<2)|0}function mBa(a,b){a=a|0;b=b|0;var c=0;if(b>>>0<128){a=(nBa()|0)+(b<<2)|0;c=k[a>>2]|0}else c=b;return c|0}function nBa(){var a=0,b=0;B=0;a=bb(9)|0;b=B;B=0;if(b&1){b=Rb(0)|0;Dd(b)}else return k[a>>2]|0;return 0}function oBa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a=(c-b|0)>>>2;d=b;while(1){if((d|0)==(c|0))break;e=k[d>>2]|0;if(e>>>0<128){f=(nBa()|0)+(e<<2)|0;g=k[f>>2]|0}else g=e;k[d>>2]=g;d=d+4|0}return b+(a<<2)|0}function pBa(a,b){a=a|0;b=b|0;return b<<24>>24|0}function qBa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=d;d=b;while(1){if((d|0)==(c|0))break;k[a>>2]=i[d>>0];a=a+4|0;d=d+1|0}return c|0}function rBa(a,b,c){a=a|0;b=b|0;c=c|0;return (b>>>0<128?b&255:c)|0}function sBa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;a=(c-b|0)>>>2;f=e;e=b;while(1){if((e|0)==(c|0))break;g=k[e>>2]|0;i[f>>0]=g>>>0<128?g&255:d;f=f+1|0;e=e+4|0}return b+(a<<2)|0}function tBa(a){a=a|0;var b=0;k[a>>2]=49336;b=k[a+8>>2]|0;if((b|0)!=0?(i[a+12>>0]|0)!=0:0)Tqa(b);return}function uBa(a){a=a|0;tBa(a);Sqa(a);return}function vBa(a,b){a=a|0;b=b|0;var c=0;if(b<<24>>24>-1){a=(kBa()|0)+((b&255)<<2)|0;c=k[a>>2]&255}else c=b;return c|0}function wBa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a=b;while(1){if((a|0)==(c|0))break;b=i[a>>0]|0;if(b<<24>>24>-1){d=(kBa()|0)+(b<<24>>24<<2)|0;e=k[d>>2]&255}else e=b;i[a>>0]=e;a=a+1|0}return c|0}function xBa(a,b){a=a|0;b=b|0;var c=0;if(b<<24>>24>-1){a=(nBa()|0)+(b<<24>>24<<2)|0;c=k[a>>2]&255}else c=b;return c|0}function yBa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a=b;while(1){if((a|0)==(c|0))break;b=i[a>>0]|0;if(b<<24>>24>-1){d=(nBa()|0)+(b<<24>>24<<2)|0;e=k[d>>2]&255}else e=b;i[a>>0]=e;a=a+1|0}return c|0}function zBa(a,b){a=a|0;b=b|0;return b|0}function ABa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=d;d=b;while(1){if((d|0)==(c|0))break;i[a>>0]=i[d>>0]|0;a=a+1|0;d=d+1|0}return c|0}function BBa(a,b,c){a=a|0;b=b|0;c=c|0;return (b<<24>>24>-1?b:c)|0}function CBa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;a=e;e=b;while(1){if((e|0)==(c|0))break;b=i[e>>0]|0;i[a>>0]=b<<24>>24>-1?b:d;a=a+1|0;e=e+1|0}return c|0}function DBa(a){a=a|0;Sqa(a);return}function EBa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k[e>>2]=c;k[h>>2]=f;return 3}function FBa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k[e>>2]=c;k[h>>2]=f;return 3}function GBa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;k[e>>2]=c;return 3}function HBa(a){a=a|0;return 1}function IBa(a){a=a|0;return 1}function JBa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;b=d-c|0;return (b>>>0<e>>>0?b:e)|0}function KBa(a){a=a|0;return 1}function LBa(a,b){a=a|0;b=b|0;var c=0;k[a+4>>2]=b+-1;k[a>>2]=49404;B=0;b=bb(3)|0;c=B;B=0;if(c&1){c=Rb()|0;Qb(c|0)}else{k[a+8>>2]=b;return}}function MBa(a){a=a|0;PCa(a);Sqa(a);return}function NBa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;j=r;r=r+16|0;l=j;m=j+8|0;n=c;while(1){if((n|0)==(d|0)){o=d;break}if(!(k[n>>2]|0)){o=n;break}n=n+4|0}k[h>>2]=f;k[e>>2]=c;n=g;p=a+8|0;a=c;c=f;f=o;a:while(1){if((c|0)==(g|0)|(a|0)==(d|0)){q=a;s=53;break}o=b;t=k[o+4>>2]|0;u=l;k[u>>2]=k[o>>2];k[u+4>>2]=t;t=esa(k[p>>2]|0)|0;B=0;u=Ya(25,c|0,e|0,f-a>>2|0,n-c|0,b|0)|0;o=B;B=0;if(o&1){v=t;s=11;break}if((t|0)!=0?(B=0,ya(444,t|0)|0,t=B,B=0,t&1):0){s=10;break}switch(u|0){case -1:{w=a;x=c;s=16;break a;break}case 0:{y=1;s=50;break a;break}default:{}}t=(k[h>>2]|0)+u|0;k[h>>2]=t;if((t|0)==(g|0)){s=51;break}if((f|0)==(d|0)){z=t;A=k[e>>2]|0;C=d}else{t=esa(k[p>>2]|0)|0;B=0;u=Ia(55,m|0,0,b|0)|0;o=B;B=0;if(o&1){D=t;s=36;break}if((t|0)!=0?(B=0,ya(444,t|0)|0,t=B,B=0,t&1):0){s=35;break}if((u|0)==-1){E=2;s=49;break}if(u>>>0>(n-(k[h>>2]|0)|0)>>>0){E=1;s=49;break}else{F=u;G=m}while(1){if(!F)break;u=i[G>>0]|0;t=k[h>>2]|0;k[h>>2]=t+1;i[t>>0]=u;F=F+-1|0;G=G+1|0}u=(k[e>>2]|0)+4|0;k[e>>2]=u;t=u;while(1){if((t|0)==(d|0)){H=d;break}if(!(k[t>>2]|0)){H=t;break}t=t+4|0}z=k[h>>2]|0;A=u;C=H}a=A;c=z;f=C}do if((s|0)==10){C=Rb(0)|0;Dd(C)}else if((s|0)==11){C=Rb()|0;if((v|0)!=0?(B=0,ya(444,v|0)|0,f=B,B=0,f&1):0){f=Rb(0)|0;Dd(f)}Qb(C|0)}else if((s|0)==16){k[h>>2]=x;C=w;f=x;while(1){if((C|0)==(k[e>>2]|0)){I=C;s=28;break}z=k[C>>2]|0;c=esa(k[p>>2]|0)|0;B=0;A=Ia(55,f|0,z|0,l|0)|0;z=B;B=0;if(z&1){J=c;s=22;break}if((c|0)!=0?(B=0,ya(444,c|0)|0,c=B,B=0,c&1):0){s=21;break}if((A|0)==-1){I=C;s=28;break}c=(k[h>>2]|0)+A|0;k[h>>2]=c;C=C+4|0;f=c}if((s|0)==21){f=Rb(0)|0;Dd(f)}else if((s|0)==22){f=Rb()|0;if((J|0)!=0?(B=0,ya(444,J|0)|0,C=B,B=0,C&1):0){C=Rb(0)|0;Dd(C)}Qb(f|0)}else if((s|0)==28){k[e>>2]=I;y=2;s=50;break}}else if((s|0)==35){f=Rb(0)|0;Dd(f)}else if((s|0)==36){f=Rb()|0;if((D|0)!=0?(B=0,ya(444,D|0)|0,C=B,B=0,C&1):0){C=Rb(0)|0;Dd(C)}Qb(f|0)}else if((s|0)==49){y=E;s=50}else if((s|0)==51){q=k[e>>2]|0;s=53}while(0);if((s|0)==50)K=y;else if((s|0)==53)K=(q|0)!=(d|0)&1;r=j;return K|0}function OBa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;j=r;r=r+16|0;l=j;m=c;while(1){if((m|0)==(d|0)){n=d;break}if(!(i[m>>0]|0)){n=m;break}m=m+1|0}k[h>>2]=f;k[e>>2]=c;m=g;o=a+8|0;a=c;c=f;f=n;a:while(1){if((c|0)==(g|0)|(a|0)==(d|0)){p=a;q=52;break}n=b;s=k[n+4>>2]|0;t=l;k[t>>2]=k[n>>2];k[t+4>>2]=s;s=f;t=esa(k[o>>2]|0)|0;B=0;n=Ya(26,c|0,e|0,s-a|0,m-c>>2|0,b|0)|0;u=B;B=0;if(u&1){v=t;q=11;break}if((t|0)!=0?(B=0,ya(444,t|0)|0,t=B,B=0,t&1):0){q=10;break}switch(n|0){case -1:{w=a;x=c;y=s;q=16;break a;break}case 0:{z=2;q=48;break a;break}default:{}}s=(k[h>>2]|0)+(n<<2)|0;k[h>>2]=s;if((s|0)==(g|0)){q=49;break}n=k[e>>2]|0;if((f|0)==(d|0)){A=n;C=s;D=d}else{t=esa(k[o>>2]|0)|0;B=0;u=cb(72,s|0,n|0,1,b|0)|0;n=B;B=0;if(n&1){E=t;q=39;break}if((t|0)!=0?(B=0,ya(444,t|0)|0,t=B,B=0,t&1):0){q=38;break}if(u){z=2;q=48;break}k[h>>2]=(k[h>>2]|0)+4;u=(k[e>>2]|0)+1|0;k[e>>2]=u;t=u;while(1){if((t|0)==(d|0)){F=d;break}if(!(i[t>>0]|0)){F=t;break}t=t+1|0}A=u;C=k[h>>2]|0;D=F}a=A;c=C;f=D}do if((q|0)==10){D=Rb(0)|0;Dd(D)}else if((q|0)==11){D=Rb()|0;if((v|0)!=0?(B=0,ya(444,v|0)|0,f=B,B=0,f&1):0){f=Rb(0)|0;Dd(f)}Qb(D|0)}else if((q|0)==16){D=w;f=x;b:while(1){k[h>>2]=f;if((D|0)==(k[e>>2]|0)){G=D;q=32;break}C=esa(k[o>>2]|0)|0;B=0;c=cb(72,f|0,D|0,y-D|0,l|0)|0;A=B;B=0;if(A&1){H=C;q=22;break}if((C|0)!=0?(B=0,ya(444,C|0)|0,C=B,B=0,C&1):0){q=21;break}switch(c|0){case -1:{I=D;q=28;break b;break}case -2:{J=D;q=29;break b;break}case 0:{K=D+1|0;break}default:K=D+c|0}D=K;f=(k[h>>2]|0)+4|0}if((q|0)==21){f=Rb(0)|0;Dd(f)}else if((q|0)==22){f=Rb()|0;if((H|0)!=0?(B=0,ya(444,H|0)|0,D=B,B=0,D&1):0){D=Rb(0)|0;Dd(D)}Qb(f|0)}else if((q|0)==28){k[e>>2]=I;z=2;q=48;break}else if((q|0)==29){k[e>>2]=J;z=1;q=48;break}else if((q|0)==32){k[e>>2]=G;z=(G|0)!=(d|0)&1;q=48;break}}else if((q|0)==38){f=Rb(0)|0;Dd(f)}else if((q|0)==39){f=Rb()|0;if((E|0)!=0?(B=0,ya(444,E|0)|0,D=B,B=0,D&1):0){D=Rb(0)|0;Dd(D)}Qb(f|0)}else if((q|0)==49){p=k[e>>2]|0;q=52}while(0);if((q|0)==48)L=z;else if((q|0)==52)L=(p|0)!=(d|0)&1;r=j;return L|0}function PBa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0;f=r;r=r+16|0;g=f;k[e>>2]=c;c=esa(k[a+8>>2]|0)|0;B=0;a=Ia(55,g|0,0,b|0)|0;b=B;B=0;if(b&1){b=Rb()|0;if((c|0)!=0?(B=0,ya(444,c|0)|0,h=B,B=0,h&1):0){h=Rb(0)|0;Dd(h)}Qb(b|0)}if((c|0)!=0?(B=0,ya(444,c|0)|0,c=B,B=0,c&1):0){c=Rb(0)|0;Dd(c)}a:do switch(a|0){case 0:case -1:{j=2;break}default:{c=a+-1|0;if(c>>>0>(d-(k[e>>2]|0)|0)>>>0)j=1;else{b=c;c=g;while(1){if(!b){j=0;break a}h=i[c>>0]|0;l=k[e>>2]|0;k[e>>2]=l+1;i[l>>0]=h;b=b+-1|0;c=c+1|0}}}}while(0);r=f;return j|0}function QBa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=a+8|0;B=0;a=ya(444,k[b>>2]|0)|0;c=B;B=0;do if(c&1)d=16;else{B=0;e=Ia(56,0,0,4)|0;f=B;B=0;if(f&1){f=Rb(0)|0;if(!a){g=f;break}B=0;ya(444,a|0)|0;h=B;B=0;if(!(h&1)){g=f;break}f=Rb(0)|0;Dd(f)}if((a|0)!=0?(B=0,ya(444,a|0)|0,f=B,B=0,f&1):0){f=Rb(0)|0;Dd(f)}if(!e){e=k[b>>2]|0;if(e){B=0;f=ya(444,e|0)|0;e=B;B=0;if(e&1){d=16;break}if((f|0)!=0?(B=0,ya(444,f|0)|0,f=B,B=0,f&1):0){f=Rb(0)|0;Dd(f)}else i=0}else i=1}else i=-1;return i|0}while(0);if((d|0)==16){d=Rb(0)|0;g=d}Dd(g);return 0}function RBa(a){a=a|0;return 0}function SBa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;f=d;g=a+8|0;a=c;c=0;h=0;a:while(1){if((a|0)==(d|0)|h>>>0>=e>>>0){i=c;j=15;break}l=esa(k[g>>2]|0)|0;B=0;m=Ia(57,a|0,f-a|0,b|0)|0;n=B;B=0;if(n&1){o=l;j=7;break}if((l|0)!=0?(B=0,ya(444,l|0)|0,l=B,B=0,l&1):0){j=6;break}switch(m|0){case -2:case -1:{i=c;j=15;break a;break}case 0:{p=a+1|0;q=1;break}default:{p=a+m|0;q=m}}a=p;c=q+c|0;h=h+1|0}if((j|0)==6){h=Rb(0)|0;Dd(h)}else if((j|0)==7){h=Rb()|0;if((o|0)!=0?(B=0,ya(444,o|0)|0,o=B,B=0,o&1):0){o=Rb(0)|0;Dd(o)}Qb(h|0)}else if((j|0)==15)return i|0;return 0}function TBa(a){a=a|0;var b=0,c=0;b=k[a+8>>2]|0;if(b){B=0;a=ya(444,b|0)|0;b=B;B=0;if(b&1){b=Rb(0)|0;Dd(b)}if((a|0)!=0?(B=0,ya(444,a|0)|0,a=B,B=0,a&1):0){a=Rb(0)|0;Dd(a)}else c=4}else c=1;return c|0}function UBa(a){a=a|0;Sqa(a);return}function VBa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;b=r;r=r+16|0;a=b+4|0;i=b;k[a>>2]=c;k[i>>2]=f;j=_Da(c,d,a,f,g,i,1114111,0)|0;k[e>>2]=k[a>>2];k[h>>2]=k[i>>2];r=b;return j|0}function WBa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;b=r;r=r+16|0;a=b+4|0;i=b;k[a>>2]=c;k[i>>2]=f;j=$Da(c,d,a,f,g,i,1114111,0)|0;k[e>>2]=k[a>>2];k[h>>2]=k[i>>2];r=b;return j|0}function XBa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;k[e>>2]=c;return 3}function YBa(a){a=a|0;return 0}function ZBa(a){a=a|0;return 0}function _Ba(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return aEa(c,d,e,1114111,0)|0}function $Ba(a){a=a|0;return 4}function aCa(a){a=a|0;Sqa(a);return}function bCa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;b=r;r=r+16|0;a=b+4|0;i=b;k[a>>2]=c;k[i>>2]=f;j=bEa(c,d,a,f,g,i,1114111,0)|0;k[e>>2]=k[a>>2];k[h>>2]=k[i>>2];r=b;return j|0}function cCa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;b=r;r=r+16|0;a=b+4|0;i=b;k[a>>2]=c;k[i>>2]=f;j=cEa(c,d,a,f,g,i,1114111,0)|0;k[e>>2]=k[a>>2];k[h>>2]=k[i>>2];r=b;return j|0}function dCa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;k[e>>2]=c;return 3}function eCa(a){a=a|0;return 0}function fCa(a){a=a|0;return 0}function gCa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return dEa(c,d,e,1114111,0)|0}function hCa(a){a=a|0;return 4}function iCa(a){a=a|0;Sqa(a);return}function jCa(a){a=a|0;Sqa(a);return}function kCa(a,b){a=a|0;b=b|0;k[a+4>>2]=b+-1;k[a>>2]=49484;i[a+8>>0]=46;i[a+9>>0]=44;b=a+12|0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function lCa(a,b){a=a|0;b=b|0;k[a+4>>2]=b+-1;k[a>>2]=49524;k[a+8>>2]=46;k[a+12>>2]=44;b=a+16|0;a=0;while(1){if((a|0)==3)break;k[b+(a<<2)>>2]=0;a=a+1|0}return}function mCa(a){a=a|0;k[a>>2]=49484;Yua(a+12|0);return}function nCa(a){a=a|0;mCa(a);Sqa(a);return}function oCa(a){a=a|0;k[a>>2]=49524;Yua(a+16|0);return}function pCa(a){a=a|0;oCa(a);Sqa(a);return}function qCa(a){a=a|0;return i[a+8>>0]|0}function rCa(a){a=a|0;return k[a+8>>2]|0}function sCa(a){a=a|0;return i[a+9>>0]|0}function tCa(a){a=a|0;return k[a+12>>2]|0}function uCa(a,b){a=a|0;b=b|0;Vua(a,b+12|0);return}function vCa(a,b){a=a|0;b=b|0;Vua(a,b+16|0);return}function wCa(a,b){a=a|0;b=b|0;Wua(a,159247,4);return}function xCa(a,b){a=a|0;b=b|0;iva(a,50096,Qta(50096)|0);return}function yCa(a,b){a=a|0;b=b|0;Wua(a,159252,5);return}function zCa(a,b){a=a|0;b=b|0;iva(a,50116,Qta(50116)|0);return}function ACa(a){a=a|0;var b=0;switch(k[a+4>>2]&74|0){case 64:{b=8;break}case 8:{b=16;break}case 0:{b=0;break}default:b=10}return b|0}function BCa(a){a=a|0;var b=0;do if((i[27032]|0)==0?(Gb(27032)|0)!=0:0){if((i[27040]|0)==0?(Gb(27040)|0)!=0:0){a=50140;do{b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}a=a+12|0}while((a|0)!=50308);ic(556,0,w|0)|0;Eb(27040)}B=0;Xa(263,50140,159258)|0;a=B;B=0;if(((((((((((((!(a&1)?(B=0,Xa(263,50152,159265)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(263,50164,159272)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(263,50176,159280)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(263,50188,159290)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(263,50200,159299)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(263,50212,159306)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(263,50224,159315)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(263,50236,159319)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(263,50248,159323)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(263,50260,159327)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(263,50272,159331)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(263,50284,159335)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(263,50296,159339)|0,a=B,B=0,!(a&1)):0){k[12577]=50140;Eb(27032);break}a=Rb()|0;sc(27032);Qb(a|0)}while(0);return k[12577]|0}function CCa(a){a=a|0;var b=0;do if((i[27048]|0)==0?(Gb(27048)|0)!=0:0){if((i[27056]|0)==0?(Gb(27056)|0)!=0:0){a=50312;do{b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}a=a+12|0}while((a|0)!=50480);ic(557,0,w|0)|0;Eb(27056)}B=0;Xa(264,50312,50480)|0;a=B;B=0;if(((((((((((((!(a&1)?(B=0,Xa(264,50324,50508)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(264,50336,50536)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(264,50348,50568)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(264,50360,50608)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(264,50372,50644)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(264,50384,50672)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(264,50396,50708)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(264,50408,50724)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(264,50420,50740)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(264,50432,50756)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(264,50444,50772)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(264,50456,50788)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(264,50468,50804)|0,a=B,B=0,!(a&1)):0){k[12705]=50312;Eb(27048);break}a=Rb()|0;sc(27048);Qb(a|0)}while(0);return k[12705]|0}function DCa(a){a=a|0;var b=0;a:do if((i[27064]|0)==0?(Gb(27064)|0)!=0:0){if((i[27072]|0)==0?(Gb(27072)|0)!=0:0){a=50824;do{b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}a=a+12|0}while((a|0)!=51112);ic(558,0,w|0)|0;Eb(27072)}B=0;Xa(263,50824,159343)|0;a=B;B=0;do if((((((((((((((!(a&1)?(B=0,Xa(263,50836,159351)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(263,50848,159360)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(263,50860,159366)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(263,50872,159372)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(263,50884,159376)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(263,50896,159381)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(263,50908,159386)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(263,50920,159393)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(263,50932,159403)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(263,50944,159411)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(263,50956,159420)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(263,50968,159429)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(263,50980,159433)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(263,50992,159437)|0,b=B,B=0,!(b&1)):0){B=0;Xa(263,51004,159441)|0;b=B;B=0;if(b&1)break;B=0;Xa(263,51016,159372)|0;b=B;B=0;if(b&1)break;B=0;Xa(263,51028,159445)|0;b=B;B=0;if(b&1)break;B=0;Xa(263,51040,159449)|0;b=B;B=0;if(b&1)break;B=0;Xa(263,51052,159453)|0;b=B;B=0;if(b&1)break;B=0;Xa(263,51064,159457)|0;b=B;B=0;if(b&1)break;B=0;Xa(263,51076,159461)|0;b=B;B=0;if(b&1)break;B=0;Xa(263,51088,159465)|0;b=B;B=0;if(b&1)break;B=0;Xa(263,51100,159469)|0;b=B;B=0;if(b&1)break;k[12778]=50824;Eb(27064);break a}while(0);a=Rb()|0;sc(27064);Qb(a|0)}while(0);return k[12778]|0}function ECa(a){a=a|0;var b=0;a:do if((i[27080]|0)==0?(Gb(27080)|0)!=0:0){if((i[27088]|0)==0?(Gb(27088)|0)!=0:0){a=51116;do{b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}a=a+12|0}while((a|0)!=51404);ic(559,0,w|0)|0;Eb(27088)}B=0;Xa(264,51116,51404)|0;a=B;B=0;do if((((((((((((((!(a&1)?(B=0,Xa(264,51128,51436)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(264,51140,51472)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(264,51152,51496)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(264,51164,51520)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(264,51176,51536)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(264,51188,51556)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(264,51200,51576)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(264,51212,51604)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(264,51224,51644)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(264,51236,51676)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(264,51248,51712)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(264,51260,51748)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(264,51272,51764)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(264,51284,51780)|0,b=B,B=0,!(b&1)):0){B=0;Xa(264,51296,51796)|0;b=B;B=0;if(b&1)break;B=0;Xa(264,51308,51520)|0;b=B;B=0;if(b&1)break;B=0;Xa(264,51320,51812)|0;b=B;B=0;if(b&1)break;B=0;Xa(264,51332,51828)|0;b=B;B=0;if(b&1)break;B=0;Xa(264,51344,51844)|0;b=B;B=0;if(b&1)break;B=0;Xa(264,51356,51860)|0;b=B;B=0;if(b&1)break;B=0;Xa(264,51368,51876)|0;b=B;B=0;if(b&1)break;B=0;Xa(264,51380,51892)|0;b=B;B=0;if(b&1)break;B=0;Xa(264,51392,51908)|0;b=B;B=0;if(b&1)break;k[12981]=51116;Eb(27080);break a}while(0);a=Rb()|0;sc(27080);Qb(a|0)}while(0);return k[12981]|0}function FCa(a){a=a|0;var b=0;do if((i[27096]|0)==0?(Gb(27096)|0)!=0:0){if((i[27104]|0)==0?(Gb(27104)|0)!=0:0){a=51928;do{b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}a=a+12|0}while((a|0)!=52216);ic(560,0,w|0)|0;Eb(27104)}B=0;Xa(263,51928,159473)|0;a=B;B=0;if(!(a&1)?(B=0,Xa(263,51940,159476)|0,a=B,B=0,!(a&1)):0){k[13054]=51928;Eb(27096);break}a=Rb()|0;sc(27096);Qb(a|0)}while(0);return k[13054]|0}function GCa(a){a=a|0;var b=0;do if((i[27112]|0)==0?(Gb(27112)|0)!=0:0){if((i[27120]|0)==0?(Gb(27120)|0)!=0:0){a=52220;do{b=0;while(1){if((b|0)==3)break;k[a+(b<<2)>>2]=0;b=b+1|0}a=a+12|0}while((a|0)!=52508);ic(561,0,w|0)|0;Eb(27120)}B=0;Xa(264,52220,52508)|0;a=B;B=0;if(!(a&1)?(B=0,Xa(264,52232,52520)|0,a=B,B=0,!(a&1)):0){k[13133]=52220;Eb(27112);break}a=Rb()|0;sc(27112);Qb(a|0)}while(0);return k[13133]|0}function HCa(a){a=a|0;do if((i[27128]|0)==0?(Gb(27128)|0)!=0:0){B=0;eb(502,52536,159479,8);a=B;B=0;if(a&1){a=Rb()|0;sc(27128);Qb(a|0)}else{ic(562,52536,w|0)|0;Eb(27128);break}}while(0);return 52536}function ICa(a){a=a|0;var b=0;do if((i[27136]|0)==0?(Gb(27136)|0)!=0:0){B=0;a=ya(445,52548)|0;b=B;B=0;if(!(b&1)?(B=0,eb(535,52584,52548,a|0),a=B,B=0,!(a&1)):0){ic(563,52584,w|0)|0;Eb(27136);break}a=Rb()|0;sc(27136);Qb(a|0)}while(0);return 52584}function JCa(a){a=a|0;do if((i[27144]|0)==0?(Gb(27144)|0)!=0:0){B=0;eb(502,52596,159488,8);a=B;B=0;if(a&1){a=Rb()|0;sc(27144);Qb(a|0)}else{ic(562,52596,w|0)|0;Eb(27144);break}}while(0);return 52596}function KCa(a){a=a|0;var b=0;do if((i[27152]|0)==0?(Gb(27152)|0)!=0:0){B=0;a=ya(445,52608)|0;b=B;B=0;if(!(b&1)?(B=0,eb(535,52644,52608,a|0),a=B,B=0,!(a&1)):0){ic(563,52644,w|0)|0;Eb(27152);break}a=Rb()|0;sc(27152);Qb(a|0)}while(0);return 52644}function LCa(a){a=a|0;do if((i[27160]|0)==0?(Gb(27160)|0)!=0:0){B=0;eb(502,52656,159497,20);a=B;B=0;if(a&1){a=Rb()|0;sc(27160);Qb(a|0)}else{ic(562,52656,w|0)|0;Eb(27160);break}}while(0);return 52656}function MCa(a){a=a|0;var b=0;do if((i[27168]|0)==0?(Gb(27168)|0)!=0:0){B=0;a=ya(445,52668)|0;b=B;B=0;if(!(b&1)?(B=0,eb(535,52752,52668,a|0),a=B,B=0,!(a&1)):0){ic(563,52752,w|0)|0;Eb(27168);break}a=Rb()|0;sc(27168);Qb(a|0)}while(0);return 52752}function NCa(a){a=a|0;do if((i[27176]|0)==0?(Gb(27176)|0)!=0:0){B=0;eb(502,52764,159518,11);a=B;B=0;if(a&1){a=Rb()|0;sc(27176);Qb(a|0)}else{ic(562,52764,w|0)|0;Eb(27176);break}}while(0);return 52764}function OCa(a){a=a|0;var b=0;do if((i[27184]|0)==0?(Gb(27184)|0)!=0:0){B=0;a=ya(445,52776)|0;b=B;B=0;if(!(b&1)?(B=0,eb(535,52824,52776,a|0),a=B,B=0,!(a&1)):0){ic(563,52824,w|0)|0;Eb(27184);break}a=Rb()|0;sc(27184);Qb(a|0)}while(0);return 52824}function PCa(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=49404;b=a+8|0;a=k[b>>2]|0;B=0;c=bb(3)|0;d=B;B=0;do if(!(d&1)){if((a|0)!=(c|0)?(B=0,va(551,k[b>>2]|0),e=B,B=0,e&1):0)break;return}while(0);b=Rb(0)|0;Dd(b)}function QCa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;h=r;r=r+112|0;j=h;m=(d-c|0)/12|0;do if(m>>>0>100){n=lua(m)|0;if((n|0)==0?(B=0,fb(7),o=B,B=0,o&1):0){p=0;q=6;break}s=n;t=n;q=11}else{s=0;t=j;q=11}while(0);a:do if((q|0)==11){j=c;n=0;o=m;u=t;while(1){if((j|0)==(d|0)){v=n;w=o;break}x=i[j>>0]|0;if(!(x&1))y=(x&255)>>>1;else y=k[j+4>>2]|0;if(!y){i[u>>0]=2;z=n+1|0;A=o+-1|0}else{i[u>>0]=1;z=n;A=o}j=j+12|0;n=z;o=A;u=u+1|0}u=0;o=v;n=w;b:while(1){j=k[a>>2]|0;do if(j)if((k[j+12>>2]|0)==(k[j+16>>2]|0)){B=0;x=ya(k[(k[j>>2]|0)+36>>2]|0,j|0)|0;C=B;B=0;if(C&1){q=5;break b}if((x|0)==-1){k[a>>2]=0;D=0;break}else{D=k[a>>2]|0;break}}else D=j;else D=0;while(0);j=(D|0)==0;x=k[b>>2]|0;if(x)if((k[x+12>>2]|0)==(k[x+16>>2]|0)){B=0;C=ya(k[(k[x>>2]|0)+36>>2]|0,x|0)|0;E=B;B=0;if(E&1){q=5;break}if((C|0)==-1){k[b>>2]=0;F=0}else F=x}else F=x;else F=0;x=(F|0)==0;C=k[a>>2]|0;if(!((n|0)!=0&(j^x))){G=x;H=C;I=F;q=33;break}x=k[C+12>>2]|0;if((x|0)==(k[C+16>>2]|0)){B=0;j=ya(k[(k[C>>2]|0)+36>>2]|0,C|0)|0;C=B;B=0;if(C&1){q=5;break}else J=j}else J=l[x>>0]|0;x=J&255;if(!g){B=0;j=Xa(k[(k[e>>2]|0)+12>>2]|0,e|0,x|0)|0;C=B;B=0;if(C&1){q=5;break}else K=j}else K=x;x=u+1|0;j=0;C=c;E=o;L=n;M=t;while(1){if((C|0)==(d|0))break;do if((i[M>>0]|0)==1){if(!(i[C>>0]&1))N=C+1|0;else N=k[C+8>>2]|0;O=i[N+u>>0]|0;if(!g){B=0;P=Xa(k[(k[e>>2]|0)+12>>2]|0,e|0,O|0)|0;R=B;B=0;if(R&1){q=4;break b}else S=P}else S=O;if(K<<24>>24!=S<<24>>24){i[M>>0]=0;T=j;U=E;V=L+-1|0;break}O=i[C>>0]|0;if(!(O&1))W=(O&255)>>>1;else W=k[C+4>>2]|0;if((W|0)==(x|0)){i[M>>0]=2;T=1;U=E+1|0;V=L+-1|0}else{T=1;U=E;V=L}}else{T=j;U=E;V=L}while(0);j=T;C=C+12|0;E=U;L=V;M=M+1|0}if(!j){u=x;o=E;n=L;continue}M=k[a>>2]|0;C=M+12|0;O=k[C>>2]|0;if((O|0)==(k[M+16>>2]|0)){B=0;ya(k[(k[M>>2]|0)+40>>2]|0,M|0)|0;M=B;B=0;if(M&1){q=5;break}}else k[C>>2]=O+1;if((E+L|0)>>>0>1){X=c;Y=E;Z=t}else{u=x;o=E;n=L;continue}while(1){if((X|0)==(d|0)){u=x;o=Y;n=L;continue b}if((i[Z>>0]|0)==2){O=i[X>>0]|0;if(!(O&1))_=(O&255)>>>1;else _=k[X+4>>2]|0;if((_|0)!=(x|0)){i[Z>>0]=0;$=Y+-1|0}else $=Y}else $=Y;X=X+12|0;Y=$;Z=Z+1|0}}if((q|0)==4){n=Rb()|0;aa=s;ba=n;ca=Q;break}else if((q|0)==5){n=Rb()|0;aa=s;ba=n;ca=Q;break}else if((q|0)==33){do if(H)if((k[H+12>>2]|0)==(k[H+16>>2]|0)){B=0;n=ya(k[(k[H>>2]|0)+36>>2]|0,H|0)|0;o=B;B=0;if(o&1){p=s;q=6;break a}if((n|0)==-1){k[a>>2]=0;da=0;break}else{da=k[a>>2]|0;break}}else da=H;else da=0;while(0);n=(da|0)==0;do if(!G){if((k[I+12>>2]|0)==(k[I+16>>2]|0)){B=0;o=ya(k[(k[I>>2]|0)+36>>2]|0,I|0)|0;u=B;B=0;if(u&1){p=s;q=6;break a}if((o|0)==-1){k[b>>2]=0;q=79;break}}if(n){ea=c;fa=t}else q=80}else q=79;while(0);if((q|0)==79)if(n)q=80;else{ea=c;fa=t}if((q|0)==80){k[f>>2]=k[f>>2]|2;ea=c;fa=t}while(1){if((ea|0)==(d|0)){q=84;break}if((i[fa>>0]|0)==2){ga=ea;break}ea=ea+12|0;fa=fa+1|0}if((q|0)==84){k[f>>2]=k[f>>2]|4;ga=d}if(s)mua(s);r=h;return ga|0}}while(0);if((q|0)==6){q=Rb()|0;aa=p;ba=q;ca=Q}if(aa)mua(aa);Qb(ba|0);return 0}function RCa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0;a=r;r=r+224|0;g=a+198|0;h=a+196|0;j=a+184|0;m=a+172|0;n=a+168|0;o=a+8|0;p=a+4|0;q=a;s=ACa(d)|0;Dxa(j,d,g,h);d=0;while(1){if((d|0)==3)break;k[m+(d<<2)>>2]=0;d=d+1|0}if(!(i[m>>0]&1))t=10;else t=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,t|0,0);t=B;B=0;a:do if(!(t&1)){d=m+8|0;u=m+1|0;v=(i[m>>0]&1)==0?u:k[d>>2]|0;k[n>>2]=v;k[p>>2]=o;k[q>>2]=0;w=m+4|0;x=i[h>>0]|0;y=k[b>>2]|0;z=v;b:while(1){if(y)if((k[y+12>>2]|0)==(k[y+16>>2]|0)){B=0;v=ya(k[(k[y>>2]|0)+36>>2]|0,y|0)|0;A=B;B=0;if(A&1){C=27;break}if((v|0)==-1){k[b>>2]=0;D=0}else D=y}else D=y;else D=0;v=(D|0)==0;A=k[c>>2]|0;do if(A){if((k[A+12>>2]|0)!=(k[A+16>>2]|0))if(v){E=A;break}else{F=A;G=D;H=z;break b}B=0;I=ya(k[(k[A>>2]|0)+36>>2]|0,A|0)|0;J=B;B=0;if(J&1){C=27;break b}if((I|0)!=-1)if(v){E=A;break}else{F=A;G=D;H=z;break b}else{k[c>>2]=0;C=19;break}}else C=19;while(0);if((C|0)==19){C=0;if(v){F=0;G=D;H=z;break}else E=0}A=i[m>>0]|0;I=(A&1)==0?(A&255)>>>1:k[w>>2]|0;if((k[n>>2]|0)==(z+I|0)){B=0;eb(501,m|0,I<<1|0,0);A=B;B=0;if(A&1){C=27;break}if(!(i[m>>0]&1))K=10;else K=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,K|0,0);A=B;B=0;if(A&1){C=27;break}A=(i[m>>0]&1)==0?u:k[d>>2]|0;k[n>>2]=A+I;L=A}else L=z;A=D+12|0;I=k[A>>2]|0;J=D+16|0;if((I|0)==(k[J>>2]|0)){B=0;M=ya(k[(k[D>>2]|0)+36>>2]|0,D|0)|0;N=B;B=0;if(N&1){C=27;break}else O=M}else O=l[I>>0]|0;if(nxa(O&255,s,L,n,q,x,j,o,p,g)|0){F=E;G=D;H=L;break}I=k[A>>2]|0;if((I|0)==(k[J>>2]|0)){B=0;ya(k[(k[D>>2]|0)+40>>2]|0,D|0)|0;J=B;B=0;if(J&1){C=27;break}else{y=D;z=L;continue}}else{k[A>>2]=I+1;y=D;z=L;continue}}if((C|0)==27){z=Rb()|0;P=z;R=Q;break}z=i[j>>0]|0;if((((z&1)==0?(z&255)>>>1:k[j+4>>2]|0)|0)!=0?(z=k[p>>2]|0,(z-o|0)<160):0){y=k[q>>2]|0;k[p>>2]=z+4;k[z>>2]=y}B=0;y=cb(73,H|0,k[n>>2]|0,e|0,s|0)|0;z=B;B=0;if(!(z&1)){k[f>>2]=y;lAa(j,o,k[p>>2]|0,e);if(G)if((k[G+12>>2]|0)==(k[G+16>>2]|0)){B=0;y=ya(k[(k[G>>2]|0)+36>>2]|0,G|0)|0;z=B;B=0;if(z&1){C=28;break}if((y|0)==-1){k[b>>2]=0;S=0}else S=G}else S=G;else S=0;y=(S|0)==0;do if(F){if((k[F+12>>2]|0)==(k[F+16>>2]|0)){B=0;z=ya(k[(k[F>>2]|0)+36>>2]|0,F|0)|0;x=B;B=0;if(x&1){C=28;break a}if((z|0)==-1){k[c>>2]=0;C=52;break}}if(!y)C=53}else C=52;while(0);if((C|0)==52?y:0)C=53;if((C|0)==53)k[e>>2]=k[e>>2]|2;z=k[b>>2]|0;Yua(m);Yua(j);r=a;return z|0}else C=28}else C=28;while(0);if((C|0)==28){C=Rb()|0;P=C;R=Q}Yua(m);Yua(j);Qb(P|0);return 0}function SCa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0;a=r;r=r+224|0;g=a+198|0;h=a+196|0;j=a+184|0;m=a+172|0;n=a+168|0;o=a+8|0;p=a+4|0;q=a;s=ACa(d)|0;Dxa(j,d,g,h);d=0;while(1){if((d|0)==3)break;k[m+(d<<2)>>2]=0;d=d+1|0}if(!(i[m>>0]&1))t=10;else t=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,t|0,0);t=B;B=0;a:do if(!(t&1)){d=m+8|0;u=m+1|0;v=(i[m>>0]&1)==0?u:k[d>>2]|0;k[n>>2]=v;k[p>>2]=o;k[q>>2]=0;w=m+4|0;x=i[h>>0]|0;y=k[b>>2]|0;z=v;b:while(1){if(y)if((k[y+12>>2]|0)==(k[y+16>>2]|0)){B=0;v=ya(k[(k[y>>2]|0)+36>>2]|0,y|0)|0;A=B;B=0;if(A&1){C=27;break}if((v|0)==-1){k[b>>2]=0;D=0}else D=y}else D=y;else D=0;v=(D|0)==0;A=k[c>>2]|0;do if(A){if((k[A+12>>2]|0)!=(k[A+16>>2]|0))if(v){E=A;break}else{F=A;G=D;H=z;break b}B=0;I=ya(k[(k[A>>2]|0)+36>>2]|0,A|0)|0;J=B;B=0;if(J&1){C=27;break b}if((I|0)!=-1)if(v){E=A;break}else{F=A;G=D;H=z;break b}else{k[c>>2]=0;C=19;break}}else C=19;while(0);if((C|0)==19){C=0;if(v){F=0;G=D;H=z;break}else E=0}A=i[m>>0]|0;I=(A&1)==0?(A&255)>>>1:k[w>>2]|0;if((k[n>>2]|0)==(z+I|0)){B=0;eb(501,m|0,I<<1|0,0);A=B;B=0;if(A&1){C=27;break}if(!(i[m>>0]&1))K=10;else K=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,K|0,0);A=B;B=0;if(A&1){C=27;break}A=(i[m>>0]&1)==0?u:k[d>>2]|0;k[n>>2]=A+I;L=A}else L=z;A=D+12|0;I=k[A>>2]|0;J=D+16|0;if((I|0)==(k[J>>2]|0)){B=0;M=ya(k[(k[D>>2]|0)+36>>2]|0,D|0)|0;N=B;B=0;if(N&1){C=27;break}else O=M}else O=l[I>>0]|0;if(nxa(O&255,s,L,n,q,x,j,o,p,g)|0){F=E;G=D;H=L;break}I=k[A>>2]|0;if((I|0)==(k[J>>2]|0)){B=0;ya(k[(k[D>>2]|0)+40>>2]|0,D|0)|0;J=B;B=0;if(J&1){C=27;break}else{y=D;z=L;continue}}else{k[A>>2]=I+1;y=D;z=L;continue}}if((C|0)==27){z=Rb()|0;P=z;R=Q;break}z=i[j>>0]|0;if((((z&1)==0?(z&255)>>>1:k[j+4>>2]|0)|0)!=0?(z=k[p>>2]|0,(z-o|0)<160):0){y=k[q>>2]|0;k[p>>2]=z+4;k[z>>2]=y}B=0;y=cb(74,H|0,k[n>>2]|0,e|0,s|0)|0;z=Q;x=B;B=0;if(!(x&1)){x=f;k[x>>2]=y;k[x+4>>2]=z;lAa(j,o,k[p>>2]|0,e);if(G)if((k[G+12>>2]|0)==(k[G+16>>2]|0)){B=0;z=ya(k[(k[G>>2]|0)+36>>2]|0,G|0)|0;x=B;B=0;if(x&1){C=28;break}if((z|0)==-1){k[b>>2]=0;S=0}else S=G}else S=G;else S=0;z=(S|0)==0;do if(F){if((k[F+12>>2]|0)==(k[F+16>>2]|0)){B=0;x=ya(k[(k[F>>2]|0)+36>>2]|0,F|0)|0;y=B;B=0;if(y&1){C=28;break a}if((x|0)==-1){k[c>>2]=0;C=52;break}}if(!z)C=53}else C=52;while(0);if((C|0)==52?z:0)C=53;if((C|0)==53)k[e>>2]=k[e>>2]|2;x=k[b>>2]|0;Yua(m);Yua(j);r=a;return x|0}else C=28}else C=28;while(0);if((C|0)==28){C=Rb()|0;P=C;R=Q}Yua(m);Yua(j);Qb(P|0);return 0}function TCa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0;a=r;r=r+224|0;g=a+198|0;h=a+196|0;m=a+184|0;n=a+172|0;o=a+168|0;p=a+8|0;q=a+4|0;s=a;t=ACa(d)|0;Dxa(m,d,g,h);d=0;while(1){if((d|0)==3)break;k[n+(d<<2)>>2]=0;d=d+1|0}if(!(i[n>>0]&1))u=10;else u=(k[n>>2]&-2)+-1|0;B=0;eb(501,n|0,u|0,0);u=B;B=0;a:do if(!(u&1)){d=n+8|0;v=n+1|0;w=(i[n>>0]&1)==0?v:k[d>>2]|0;k[o>>2]=w;k[q>>2]=p;k[s>>2]=0;x=n+4|0;y=i[h>>0]|0;z=k[b>>2]|0;A=w;b:while(1){if(z)if((k[z+12>>2]|0)==(k[z+16>>2]|0)){B=0;w=ya(k[(k[z>>2]|0)+36>>2]|0,z|0)|0;C=B;B=0;if(C&1){D=27;break}if((w|0)==-1){k[b>>2]=0;E=0}else E=z}else E=z;else E=0;w=(E|0)==0;C=k[c>>2]|0;do if(C){if((k[C+12>>2]|0)!=(k[C+16>>2]|0))if(w){F=C;break}else{G=C;H=E;I=A;break b}B=0;J=ya(k[(k[C>>2]|0)+36>>2]|0,C|0)|0;K=B;B=0;if(K&1){D=27;break b}if((J|0)!=-1)if(w){F=C;break}else{G=C;H=E;I=A;break b}else{k[c>>2]=0;D=19;break}}else D=19;while(0);if((D|0)==19){D=0;if(w){G=0;H=E;I=A;break}else F=0}C=i[n>>0]|0;J=(C&1)==0?(C&255)>>>1:k[x>>2]|0;if((k[o>>2]|0)==(A+J|0)){B=0;eb(501,n|0,J<<1|0,0);C=B;B=0;if(C&1){D=27;break}if(!(i[n>>0]&1))L=10;else L=(k[n>>2]&-2)+-1|0;B=0;eb(501,n|0,L|0,0);C=B;B=0;if(C&1){D=27;break}C=(i[n>>0]&1)==0?v:k[d>>2]|0;k[o>>2]=C+J;M=C}else M=A;C=E+12|0;J=k[C>>2]|0;K=E+16|0;if((J|0)==(k[K>>2]|0)){B=0;N=ya(k[(k[E>>2]|0)+36>>2]|0,E|0)|0;O=B;B=0;if(O&1){D=27;break}else P=N}else P=l[J>>0]|0;if(nxa(P&255,t,M,o,s,y,m,p,q,g)|0){G=F;H=E;I=M;break}J=k[C>>2]|0;if((J|0)==(k[K>>2]|0)){B=0;ya(k[(k[E>>2]|0)+40>>2]|0,E|0)|0;K=B;B=0;if(K&1){D=27;break}else{z=E;A=M;continue}}else{k[C>>2]=J+1;z=E;A=M;continue}}if((D|0)==27){A=Rb()|0;R=A;S=Q;break}A=i[m>>0]|0;if((((A&1)==0?(A&255)>>>1:k[m+4>>2]|0)|0)!=0?(A=k[q>>2]|0,(A-p|0)<160):0){z=k[s>>2]|0;k[q>>2]=A+4;k[A>>2]=z}B=0;z=cb(75,I|0,k[o>>2]|0,e|0,t|0)|0;A=B;B=0;if(!(A&1)){j[f>>1]=z;lAa(m,p,k[q>>2]|0,e);if(H)if((k[H+12>>2]|0)==(k[H+16>>2]|0)){B=0;z=ya(k[(k[H>>2]|0)+36>>2]|0,H|0)|0;A=B;B=0;if(A&1){D=28;break}if((z|0)==-1){k[b>>2]=0;T=0}else T=H}else T=H;else T=0;z=(T|0)==0;do if(G){if((k[G+12>>2]|0)==(k[G+16>>2]|0)){B=0;A=ya(k[(k[G>>2]|0)+36>>2]|0,G|0)|0;y=B;B=0;if(y&1){D=28;break a}if((A|0)==-1){k[c>>2]=0;D=52;break}}if(!z)D=53}else D=52;while(0);if((D|0)==52?z:0)D=53;if((D|0)==53)k[e>>2]=k[e>>2]|2;A=k[b>>2]|0;Yua(n);Yua(m);r=a;return A|0}else D=28}else D=28;while(0);if((D|0)==28){D=Rb()|0;R=D;S=Q}Yua(n);Yua(m);Qb(R|0);return 0}function UCa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0;a=r;r=r+224|0;g=a+198|0;h=a+196|0;j=a+184|0;m=a+172|0;n=a+168|0;o=a+8|0;p=a+4|0;q=a;s=ACa(d)|0;Dxa(j,d,g,h);d=0;while(1){if((d|0)==3)break;k[m+(d<<2)>>2]=0;d=d+1|0}if(!(i[m>>0]&1))t=10;else t=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,t|0,0);t=B;B=0;a:do if(!(t&1)){d=m+8|0;u=m+1|0;v=(i[m>>0]&1)==0?u:k[d>>2]|0;k[n>>2]=v;k[p>>2]=o;k[q>>2]=0;w=m+4|0;x=i[h>>0]|0;y=k[b>>2]|0;z=v;b:while(1){if(y)if((k[y+12>>2]|0)==(k[y+16>>2]|0)){B=0;v=ya(k[(k[y>>2]|0)+36>>2]|0,y|0)|0;A=B;B=0;if(A&1){C=27;break}if((v|0)==-1){k[b>>2]=0;D=0}else D=y}else D=y;else D=0;v=(D|0)==0;A=k[c>>2]|0;do if(A){if((k[A+12>>2]|0)!=(k[A+16>>2]|0))if(v){E=A;break}else{F=A;G=D;H=z;break b}B=0;I=ya(k[(k[A>>2]|0)+36>>2]|0,A|0)|0;J=B;B=0;if(J&1){C=27;break b}if((I|0)!=-1)if(v){E=A;break}else{F=A;G=D;H=z;break b}else{k[c>>2]=0;C=19;break}}else C=19;while(0);if((C|0)==19){C=0;if(v){F=0;G=D;H=z;break}else E=0}A=i[m>>0]|0;I=(A&1)==0?(A&255)>>>1:k[w>>2]|0;if((k[n>>2]|0)==(z+I|0)){B=0;eb(501,m|0,I<<1|0,0);A=B;B=0;if(A&1){C=27;break}if(!(i[m>>0]&1))K=10;else K=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,K|0,0);A=B;B=0;if(A&1){C=27;break}A=(i[m>>0]&1)==0?u:k[d>>2]|0;k[n>>2]=A+I;L=A}else L=z;A=D+12|0;I=k[A>>2]|0;J=D+16|0;if((I|0)==(k[J>>2]|0)){B=0;M=ya(k[(k[D>>2]|0)+36>>2]|0,D|0)|0;N=B;B=0;if(N&1){C=27;break}else O=M}else O=l[I>>0]|0;if(nxa(O&255,s,L,n,q,x,j,o,p,g)|0){F=E;G=D;H=L;break}I=k[A>>2]|0;if((I|0)==(k[J>>2]|0)){B=0;ya(k[(k[D>>2]|0)+40>>2]|0,D|0)|0;J=B;B=0;if(J&1){C=27;break}else{y=D;z=L;continue}}else{k[A>>2]=I+1;y=D;z=L;continue}}if((C|0)==27){z=Rb()|0;P=z;R=Q;break}z=i[j>>0]|0;if((((z&1)==0?(z&255)>>>1:k[j+4>>2]|0)|0)!=0?(z=k[p>>2]|0,(z-o|0)<160):0){y=k[q>>2]|0;k[p>>2]=z+4;k[z>>2]=y}B=0;y=cb(76,H|0,k[n>>2]|0,e|0,s|0)|0;z=B;B=0;if(!(z&1)){k[f>>2]=y;lAa(j,o,k[p>>2]|0,e);if(G)if((k[G+12>>2]|0)==(k[G+16>>2]|0)){B=0;y=ya(k[(k[G>>2]|0)+36>>2]|0,G|0)|0;z=B;B=0;if(z&1){C=28;break}if((y|0)==-1){k[b>>2]=0;S=0}else S=G}else S=G;else S=0;y=(S|0)==0;do if(F){if((k[F+12>>2]|0)==(k[F+16>>2]|0)){B=0;z=ya(k[(k[F>>2]|0)+36>>2]|0,F|0)|0;x=B;B=0;if(x&1){C=28;break a}if((z|0)==-1){k[c>>2]=0;C=52;break}}if(!y)C=53}else C=52;while(0);if((C|0)==52?y:0)C=53;if((C|0)==53)k[e>>2]=k[e>>2]|2;z=k[b>>2]|0;Yua(m);Yua(j);r=a;return z|0}else C=28}else C=28;while(0);if((C|0)==28){C=Rb()|0;P=C;R=Q}Yua(m);Yua(j);Qb(P|0);return 0}function VCa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0;a=r;r=r+224|0;g=a+198|0;h=a+196|0;j=a+184|0;m=a+172|0;n=a+168|0;o=a+8|0;p=a+4|0;q=a;s=ACa(d)|0;Dxa(j,d,g,h);d=0;while(1){if((d|0)==3)break;k[m+(d<<2)>>2]=0;d=d+1|0}if(!(i[m>>0]&1))t=10;else t=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,t|0,0);t=B;B=0;a:do if(!(t&1)){d=m+8|0;u=m+1|0;v=(i[m>>0]&1)==0?u:k[d>>2]|0;k[n>>2]=v;k[p>>2]=o;k[q>>2]=0;w=m+4|0;x=i[h>>0]|0;y=k[b>>2]|0;z=v;b:while(1){if(y)if((k[y+12>>2]|0)==(k[y+16>>2]|0)){B=0;v=ya(k[(k[y>>2]|0)+36>>2]|0,y|0)|0;A=B;B=0;if(A&1){C=27;break}if((v|0)==-1){k[b>>2]=0;D=0}else D=y}else D=y;else D=0;v=(D|0)==0;A=k[c>>2]|0;do if(A){if((k[A+12>>2]|0)!=(k[A+16>>2]|0))if(v){E=A;break}else{F=A;G=D;H=z;break b}B=0;I=ya(k[(k[A>>2]|0)+36>>2]|0,A|0)|0;J=B;B=0;if(J&1){C=27;break b}if((I|0)!=-1)if(v){E=A;break}else{F=A;G=D;H=z;break b}else{k[c>>2]=0;C=19;break}}else C=19;while(0);if((C|0)==19){C=0;if(v){F=0;G=D;H=z;break}else E=0}A=i[m>>0]|0;I=(A&1)==0?(A&255)>>>1:k[w>>2]|0;if((k[n>>2]|0)==(z+I|0)){B=0;eb(501,m|0,I<<1|0,0);A=B;B=0;if(A&1){C=27;break}if(!(i[m>>0]&1))K=10;else K=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,K|0,0);A=B;B=0;if(A&1){C=27;break}A=(i[m>>0]&1)==0?u:k[d>>2]|0;k[n>>2]=A+I;L=A}else L=z;A=D+12|0;I=k[A>>2]|0;J=D+16|0;if((I|0)==(k[J>>2]|0)){B=0;M=ya(k[(k[D>>2]|0)+36>>2]|0,D|0)|0;N=B;B=0;if(N&1){C=27;break}else O=M}else O=l[I>>0]|0;if(nxa(O&255,s,L,n,q,x,j,o,p,g)|0){F=E;G=D;H=L;break}I=k[A>>2]|0;if((I|0)==(k[J>>2]|0)){B=0;ya(k[(k[D>>2]|0)+40>>2]|0,D|0)|0;J=B;B=0;if(J&1){C=27;break}else{y=D;z=L;continue}}else{k[A>>2]=I+1;y=D;z=L;continue}}if((C|0)==27){z=Rb()|0;P=z;R=Q;break}z=i[j>>0]|0;if((((z&1)==0?(z&255)>>>1:k[j+4>>2]|0)|0)!=0?(z=k[p>>2]|0,(z-o|0)<160):0){y=k[q>>2]|0;k[p>>2]=z+4;k[z>>2]=y}B=0;y=cb(77,H|0,k[n>>2]|0,e|0,s|0)|0;z=B;B=0;if(!(z&1)){k[f>>2]=y;lAa(j,o,k[p>>2]|0,e);if(G)if((k[G+12>>2]|0)==(k[G+16>>2]|0)){B=0;y=ya(k[(k[G>>2]|0)+36>>2]|0,G|0)|0;z=B;B=0;if(z&1){C=28;break}if((y|0)==-1){k[b>>2]=0;S=0}else S=G}else S=G;else S=0;y=(S|0)==0;do if(F){if((k[F+12>>2]|0)==(k[F+16>>2]|0)){B=0;z=ya(k[(k[F>>2]|0)+36>>2]|0,F|0)|0;x=B;B=0;if(x&1){C=28;break a}if((z|0)==-1){k[c>>2]=0;C=52;break}}if(!y)C=53}else C=52;while(0);if((C|0)==52?y:0)C=53;if((C|0)==53)k[e>>2]=k[e>>2]|2;z=k[b>>2]|0;Yua(m);Yua(j);r=a;return z|0}else C=28}else C=28;while(0);if((C|0)==28){C=Rb()|0;P=C;R=Q}Yua(m);Yua(j);Qb(P|0);return 0}
+function iaa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0.0,$=0.0,aa=0.0,ba=0.0,ca=0.0;a=r;r=r+128|0;c=a+116|0;d=a+104|0;e=a+96|0;f=a+88|0;g=a+80|0;h=a+72|0;i=a+64|0;j=a+56|0;l=a+48|0;m=a+40|0;n=a+32|0;o=a+24|0;q=a+16|0;s=a+8|0;t=a;u=a+112|0;k[u>>2]=0;cp(b,c,299);v=(k[c>>2]|0)==2?3:6;w=Hc[k[(k[b>>2]|0)+396>>2]&511](b)|0;x=Hc[k[(k[b>>2]|0)+392>>2]&511](b)|0;y=Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;z=x+w|0;A=Rqa(z>>>0>1073741823?-1:z<<2)|0;z=(w|0)>0;if((k[c>>2]|0)==2){if(z){B=0;do{k[A+(B<<2)>>2]=971;B=B+1|0}while((B|0)!=(w|0))}}else if(z){B=0;do{k[A+(B<<2)>>2]=972;B=B+1|0}while((B|0)!=(w|0))}if((x|0)>0){B=0;do{k[A+(B+w<<2)>>2]=653;B=B+1|0}while((B|0)!=(x|0))}x=iq(b,543)|0;B=k[c>>2]|0;C=ma(y,v)|0;D=ma(ma(C,w)|0,B)|0;E=Rqa(D>>>0>536870911?-1:D<<3)|0;if(D)WEa(E|0,0,D<<3|0)|0;D=C>>>0>536870911?-1:C<<3;F=Rqa(D)|0;G=Rqa(D)|0;D=ma(B,w)|0;B=Rqa(D>>>0>536870911?-1:D<<3)|0;D=Rqa(y>>>0>536870911?-1:y<<3)|0;H=ma(C,C)|0;I=Rqa(H>>>0>536870911?-1:H<<3)|0;if(H)WEa(I|0,0,H<<3|0)|0;pp(b,e,916);Uo(b,u);H=Wo(b,725)|0;J=Wo(b,728)|0;K=Wo(b,726)|0;L=Wo(b,716)|0;M=Wo(b,719)|0;N=Wo(b,717)|0;if((k[c>>2]|0)==3){O=Wo(b,730)|0;P=Wo(b,727)|0;Q=Wo(b,729)|0;R=Wo(b,721)|0;S=Wo(b,718)|0;T=P;U=Q;V=O;W=S;X=Wo(b,720)|0;Y=R}else{T=0;U=0;V=0;W=0;X=0;Y=0}R=Hc[k[(k[b>>2]|0)+304>>2]&511](b)|0;S=(y|0)>0;if(!S){if(R)Z=21}else{O=0;do{nd[k[(k[R>>2]|0)+32>>2]&1023](R,739,O);nd[k[(k[H>>2]|0)+48>>2]&1023](H,f,R);nd[k[(k[L>>2]|0)+48>>2]&1023](L,m,R);nd[k[(k[J>>2]|0)+48>>2]&1023](J,g,R);nd[k[(k[M>>2]|0)+48>>2]&1023](M,n,R);nd[k[(k[K>>2]|0)+48>>2]&1023](K,i,R);nd[k[(k[N>>2]|0)+48>>2]&1023](N,q,R);if((k[c>>2]|0)==2){Q=ma(O,v)|0;p[G+(Q<<3)>>3]=+p[f>>3];p[F+(Q<<3)>>3]=+p[m>>3];P=Q+1|0;p[G+(P<<3)>>3]=+p[g>>3];p[F+(P<<3)>>3]=+p[n>>3];P=Q+2|0;p[G+(P<<3)>>3]=+p[i>>3];p[F+(P<<3)>>3]=+p[q>>3]}else{nd[k[(k[V>>2]|0)+48>>2]&1023](V,h,R);nd[k[(k[Y>>2]|0)+48>>2]&1023](Y,o,R);nd[k[(k[T>>2]|0)+48>>2]&1023](T,j,R);nd[k[(k[W>>2]|0)+48>>2]&1023](W,s,R);nd[k[(k[U>>2]|0)+48>>2]&1023](U,l,R);nd[k[(k[X>>2]|0)+48>>2]&1023](X,t,R);P=ma(O,v)|0;p[G+(P<<3)>>3]=+p[f>>3];p[F+(P<<3)>>3]=+p[m>>3];Q=P+1|0;p[G+(Q<<3)>>3]=+p[g>>3];p[F+(Q<<3)>>3]=+p[n>>3];Q=P+2|0;p[G+(Q<<3)>>3]=+p[h>>3];p[F+(Q<<3)>>3]=+p[o>>3];Q=P+3|0;p[G+(Q<<3)>>3]=+p[i>>3];p[F+(Q<<3)>>3]=+p[q>>3];Q=P+4|0;p[G+(Q<<3)>>3]=+p[j>>3];p[F+(Q<<3)>>3]=+p[s>>3];Q=P+5|0;p[G+(Q<<3)>>3]=+p[l>>3];p[F+(Q<<3)>>3]=+p[t>>3]}O=O+1|0}while((O|0)!=(y|0));Z=21}if((Z|0)==21)Ec[k[(k[R>>2]|0)+4>>2]&1023](R);R=ed[k[(k[b>>2]|0)+308>>2]&511](b,5)|0;Z=Hc[k[(k[R>>2]|0)+8>>2]&511](R)|0;if((Z|0)<(Hc[k[(k[R>>2]|0)+12>>2]&511](R)|0)){O=R+8|0;t=w<<1;l=z&S;s=Z;do{Fc[k[(k[R>>2]|0)+24>>2]&1023](R,s);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[u>>2]|0,R);rd[k[(k[b>>2]|0)+344>>2]&511](b,B,k[u>>2]|0,R);nd[k[(k[b>>2]|0)+372>>2]&1023](b,D,R);Z=k[c>>2]|0;if((Z|0)==2){if(l){_=+p[d>>3];j=0;do{q=(ma(C,j)|0)<<1;i=ma(C,j<<1|1)|0;$=+p[B+(j<<3)>>3];aa=+p[B+(j+w<<3)>>3];o=0;do{ba=+p[D+(o<<3)>>3];h=ma(o,v)|0;n=E+(q+h<<3)|0;p[n>>3]=+p[O>>3]*_*ba*$+ +p[n>>3];n=h+2|0;g=E+(n+q<<3)|0;p[g>>3]=+p[O>>3]*_*ba*aa+ +p[g>>3];g=E+(h+1+i<<3)|0;p[g>>3]=+p[O>>3]*_*ba*aa+ +p[g>>3];g=E+(n+i<<3)|0;p[g>>3]=+p[O>>3]*_*ba*$+ +p[g>>3];o=o+1|0}while((o|0)!=(y|0));j=j+1|0}while((j|0)!=(w|0))}}else if(z){j=0;do{if(S){o=ma(ma(C,j)|0,Z)|0;i=ma(Z,j)|0;q=ma(C,i+1|0)|0;g=ma(C,i+2|0)|0;_=+p[d>>3];$=+p[B+(j<<3)>>3];aa=+p[B+(j+w<<3)>>3];ba=+p[B+(j+t<<3)>>3];i=0;do{ca=+p[D+(i<<3)>>3];n=ma(i,v)|0;h=E+(o+n<<3)|0;p[h>>3]=+p[O>>3]*_*ca*$+ +p[h>>3];h=n+3|0;m=E+(h+o<<3)|0;p[m>>3]=+p[O>>3]*_*ca*aa+ +p[m>>3];m=n+4|0;f=E+(m+o<<3)|0;p[f>>3]=+p[O>>3]*_*ca*ba+ +p[f>>3];f=E+(n+1+q<<3)|0;p[f>>3]=+p[O>>3]*_*ca*aa+ +p[f>>3];f=E+(h+q<<3)|0;p[f>>3]=+p[O>>3]*_*ca*$+ +p[f>>3];f=n+5|0;h=E+(f+q<<3)|0;p[h>>3]=+p[O>>3]*_*ca*ba+ +p[h>>3];h=E+(n+2+g<<3)|0;p[h>>3]=+p[O>>3]*_*ca*ba+ +p[h>>3];h=E+(m+g<<3)|0;p[h>>3]=+p[O>>3]*_*ca*$+ +p[h>>3];h=E+(f+g<<3)|0;p[h>>3]=+p[O>>3]*_*ca*aa+ +p[h>>3];i=i+1|0}while((i|0)!=(y|0))}j=j+1|0}while((j|0)!=(w|0))}s=s+1|0}while((s|0)<(Hc[k[(k[R>>2]|0)+12>>2]&511](R)|0))}s=(C|0)>0;if(s){y=0;do{O=I+((ma(y,C)|0)+y<<3)|0;p[O>>3]=-1.0;y=y+1|0}while((y|0)!=(C|0))}y=ma(k[c>>2]|0,w)|0;O=x+4|0;ZX(E,y,C,0,I,C,C,0,F,C,1,0,k[O>>2]|0,1)|0;if(s){aa=+p[e>>3];e=0;do{s=I+((ma(e,C)|0)+e<<3)|0;p[s>>3]=aa;e=e+1|0}while((e|0)!=(C|0))}e=ma(k[c>>2]|0,w)|0;ZX(E,e,C,0,I,C,C,0,G,C,1,0,k[O>>2]|0,1)|0;zq(b,x,A);if(R)Ec[k[(k[R>>2]|0)+4>>2]&1023](R);Tqa(A);A=k[u>>2]|0;if(!A){k[u>>2]=0;Tqa(E);Tqa(G);Tqa(I);Tqa(F);Tqa(B);Tqa(D);r=a;return x|0}Tqa(A);k[u>>2]=0;Tqa(E);Tqa(G);Tqa(I);Tqa(F);Tqa(B);Tqa(D);r=a;return x|0}function jaa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;a=r;r=r+32|0;c=a+20|0;d=a+8|0;e=a;f=a+16|0;k[f>>2]=0;cp(b,c,299);g=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;h=Rqa(g>>>0>1073741823?-1:g<<2)|0;i=(g|0)>0;if((k[c>>2]|0)==2){if(i){j=0;do{k[h+(j<<2)>>2]=971;j=j+1|0}while((j|0)!=(g|0))}}else if(i){j=0;do{k[h+(j<<2)>>2]=972;j=j+1|0}while((j|0)!=(g|0))}j=iq(b,543)|0;l=g*3|0;m=Rqa(l>>>0>536870911?-1:l<<3)|0;Uo(b,f);l=Wo(b,653)|0;Wo(b,706)|0;n=ed[k[(k[b>>2]|0)+308>>2]&511](b,5)|0;o=Hc[k[(k[n>>2]|0)+8>>2]&511](n)|0;if((o|0)<(Hc[k[(k[n>>2]|0)+12>>2]&511](n)|0)){q=n+8|0;s=j+4|0;t=g<<1;u=o;do{Fc[k[(k[n>>2]|0)+24>>2]&1023](n,u);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[f>>2]|0,n);nd[k[(k[l>>2]|0)+48>>2]&1023](l,e,n);rd[k[(k[b>>2]|0)+344>>2]&511](b,m,k[f>>2]|0,n);if(i){o=k[c>>2]|0;v=k[s>>2]|0;if((o|0)==3){w=0;do{x=w*3|0;y=v+(x<<3)|0;p[y>>3]=+p[e>>3]*+p[q>>3]*+p[d>>3]*+p[m+(w<<3)>>3]+ +p[y>>3];y=v+(x+1<<3)|0;p[y>>3]=+p[e>>3]*+p[q>>3]*+p[d>>3]*+p[m+(w+g<<3)>>3]+ +p[y>>3];y=v+(x+2<<3)|0;p[y>>3]=+p[e>>3]*+p[q>>3]*+p[d>>3]*+p[m+(w+t<<3)>>3]+ +p[y>>3];w=w+1|0}while((w|0)!=(g|0))}else{w=0;do{y=ma(o,w)|0;x=v+(y<<3)|0;p[x>>3]=+p[e>>3]*+p[q>>3]*+p[d>>3]*+p[m+(w<<3)>>3]+ +p[x>>3];x=v+(y+1<<3)|0;p[x>>3]=+p[e>>3]*+p[q>>3]*+p[d>>3]*+p[m+(w+g<<3)>>3]+ +p[x>>3];w=w+1|0}while((w|0)!=(g|0))}}u=u+1|0}while((u|0)<(Hc[k[(k[n>>2]|0)+12>>2]&511](n)|0))}Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0;zq(b,j,h);Ec[k[(k[n>>2]|0)+4>>2]&1023](n);Tqa(h);h=k[f>>2]|0;if(!h){k[f>>2]=0;Tqa(m);r=a;return j|0}Tqa(h);k[f>>2]=0;Tqa(m);r=a;return j|0}function kaa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0.0,S=0.0;a=r;r=r+96|0;d=a+84|0;e=a+56|0;f=a+32|0;g=a+8|0;h=a;i=a+80|0;k[i>>2]=0;cO(c,d,299);if((th(b)|0)<=0){r=a;return}c=f+8|0;j=e+8|0;l=g+16|0;m=e+16|0;n=f+16|0;o=g+8|0;q=0;s=0;while(1){t=qh(b,q)|0;Uo(t,i);u=Wo(t,674)|0;v=Wo(t,677)|0;if((k[d>>2]|0)==3)w=Wo(t,679)|0;else w=s;x=Hc[k[(k[t>>2]|0)+172>>2]&511](t)|0;y=x>>>0>536870911?-1:x<<3;z=Rqa(y)|0;A=Rqa(y)|0;B=Rqa(y)|0;C=Rqa(y)|0;D=Rqa(y)|0;E=Rqa(y)|0;if((k[d>>2]|0)==3){F=Rqa(y)|0;G=Rqa(y)|0;H=Rqa(y)|0;I=Rqa(y)|0;J=Rqa(y)|0;K=H;L=J;M=F;N=I;O=Rqa(y)|0;P=G}else{K=0;L=0;M=0;N=0;O=0;P=0}G=Hc[k[(k[t>>2]|0)+304>>2]&511](t)|0;if((x|0)>0){y=t+28|0;I=0;do{nd[k[(k[G>>2]|0)+32>>2]&1023](G,739,I);rd[k[(k[u>>2]|0)+60>>2]&511](u,e,k[i>>2]|0,G);rd[k[(k[v>>2]|0)+60>>2]&511](v,f,k[i>>2]|0,G);F=k[d>>2]|0;if((F|0)==3){rd[k[(k[w>>2]|0)+60>>2]&511](w,g,k[i>>2]|0,G);Q=k[d>>2]|0}else Q=F;F=k[y>>2]|0;Tc[k[(k[F>>2]|0)+108>>2]&15](F,h,Q,k[i>>2]|0,G,u,v,w);R=+p[e>>3];p[z+(I<<3)>>3]=R;S=+p[h>>3]*2.0;p[A+(I<<3)>>3]=R*S;R=+p[c>>3];p[B+(I<<3)>>3]=R;p[C+(I<<3)>>3]=R*S;R=(+p[j>>3]+ +p[f>>3])*.5;p[D+(I<<3)>>3]=R;p[E+(I<<3)>>3]=R*S;if((k[d>>2]|0)==3){R=+p[l>>3];p[M+(I<<3)>>3]=R;p[P+(I<<3)>>3]=R*S;R=(+p[m>>3]+ +p[g>>3])*.5;p[K+(I<<3)>>3]=R;p[N+(I<<3)>>3]=R*S;R=(+p[n>>3]+ +p[o>>3])*.5;p[L+(I<<3)>>3]=R;p[O+(I<<3)>>3]=R*S}I=I+1|0}while((I|0)!=(x|0))}rd[k[(k[t>>2]|0)+48>>2]&511](t,725,z,739);rd[k[(k[t>>2]|0)+48>>2]&511](t,716,A,739);rd[k[(k[t>>2]|0)+48>>2]&511](t,728,B,739);rd[k[(k[t>>2]|0)+48>>2]&511](t,719,C,739);rd[k[(k[t>>2]|0)+48>>2]&511](t,726,D,739);rd[k[(k[t>>2]|0)+48>>2]&511](t,717,E,739);if((k[d>>2]|0)==3){rd[k[(k[t>>2]|0)+48>>2]&511](t,730,M,739);rd[k[(k[t>>2]|0)+48>>2]&511](t,721,P,739);rd[k[(k[t>>2]|0)+48>>2]&511](t,727,K,739);rd[k[(k[t>>2]|0)+48>>2]&511](t,718,N,739);rd[k[(k[t>>2]|0)+48>>2]&511](t,729,L,739);rd[k[(k[t>>2]|0)+48>>2]&511](t,720,O,739)}if(G)Ec[k[(k[G>>2]|0)+4>>2]&1023](G);x=k[i>>2]|0;if(x)Tqa(x);k[i>>2]=0;Tqa(z);Tqa(A);Tqa(B);Tqa(C);if(M)Tqa(M);if(P)Tqa(P);Tqa(D);Tqa(E);if(K)Tqa(K);if(N)Tqa(N);if(L)Tqa(L);if(O)Tqa(O);q=q+1|0;if((q|0)>=(th(b)|0))break;else s=w}r=a;return}function laa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0.0,wa=0.0,xa=0.0,ya=0,za=0,Aa=0.0,Ba=0.0,Ca=0.0,Da=0.0,Ea=0.0,Fa=0.0,Ga=0.0,Ha=0.0,Ia=0.0,Ja=0.0,Ka=0.0,La=0.0,Ma=0.0,Na=0.0,Oa=0.0,Pa=0.0,Qa=0.0,Ra=0,Sa=0.0,Ta=0.0,Ua=0.0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0;a=r;r=r+224|0;d=a+220|0;e=a+208|0;f=a+200|0;g=a+192|0;h=a+184|0;i=a+176|0;j=a+168|0;l=a+160|0;m=a+152|0;n=a+144|0;o=a+136|0;q=a+128|0;s=a+120|0;t=a+112|0;u=a+88|0;v=a+64|0;w=a+40|0;x=a+32|0;y=a+24|0;z=a+216|0;A=a+16|0;B=a+8|0;C=a;k[z>>2]=0;dO(c,B,916);cO(c,d,299);if((th(b)|0)<=0){r=a;return}c=v+8|0;D=u+8|0;E=w+16|0;F=u+16|0;G=v+16|0;H=w+8|0;I=0.0;J=0.0;K=0.0;L=0;M=0;while(1){N=qh(b,L)|0;Uo(N,z);O=Wo(N,214)|0;P=Wo(N,217)|0;Q=Wo(N,674)|0;R=Wo(N,677)|0;if((k[d>>2]|0)==3)S=Wo(N,679)|0;else S=M;T=Hc[k[(k[N>>2]|0)+172>>2]&511](N)|0;U=T>>>0>536870911?-1:T<<3;V=Rqa(U)|0;W=ma(T,T)|0;X=Rqa(W>>>0>536870911?-1:W<<3)|0;if(W)WEa(X|0,0,W<<3|0)|0;W=Rqa(U)|0;Y=(T|0)==0;if(Y){Z=Rqa(U)|0;_=Rqa(U)|0;$=Z}else{Z=T<<3;WEa(W|0,0,Z|0)|0;ca=Rqa(U)|0;WEa(ca|0,0,Z|0)|0;da=Rqa(U)|0;WEa(da|0,0,Z|0)|0;_=da;$=ca}do if((k[d>>2]|0)==3){ca=Rqa(U)|0;if(Y){da=Rqa(U)|0;ea=da;fa=Rqa(U)|0;ga=ca;break}else{da=T<<3;WEa(ca|0,0,da|0)|0;Z=Rqa(U)|0;WEa(Z|0,0,da|0)|0;ha=Rqa(U)|0;WEa(ha|0,0,da|0)|0;ea=Z;fa=ha;ga=ca;break}}else{ea=0;fa=0;ga=0}while(0);Y=Wo(N,725)|0;ca=Wo(N,728)|0;ha=Wo(N,726)|0;if((k[d>>2]|0)==3){Z=Wo(N,730)|0;da=Wo(N,727)|0;ia=da;ja=Wo(N,729)|0;ka=Z}else{ia=0;ja=0;ka=0}Z=Wo(N,716)|0;da=Wo(N,719)|0;la=Wo(N,717)|0;if((k[d>>2]|0)==3){na=Wo(N,721)|0;oa=Wo(N,718)|0;pa=oa;qa=Wo(N,720)|0;ra=na}else{pa=0;qa=0;ra=0}na=ed[k[(k[N>>2]|0)+308>>2]&511](N,5)|0;oa=Hc[k[(k[na>>2]|0)+8>>2]&511](na)|0;if((oa|0)<(Hc[k[(k[na>>2]|0)+12>>2]&511](na)|0)){sa=na+8|0;ta=(T|0)>0;ua=ta^1;va=I;wa=J;xa=K;ya=oa;while(1){Fc[k[(k[na>>2]|0)+24>>2]&1023](na,ya);rd[k[(k[N>>2]|0)+260>>2]&511](N,A,k[z>>2]|0,na);nd[k[(k[N>>2]|0)+372>>2]&1023](N,V,na);nd[k[(k[Z>>2]|0)+48>>2]&1023](Z,m,na);nd[k[(k[da>>2]|0)+48>>2]&1023](da,n,na);nd[k[(k[la>>2]|0)+48>>2]&1023](la,q,na);if((k[d>>2]|0)==3){nd[k[(k[ra>>2]|0)+48>>2]&1023](ra,o,na);nd[k[(k[pa>>2]|0)+48>>2]&1023](pa,s,na);nd[k[(k[qa>>2]|0)+48>>2]&1023](qa,t,na)}nd[k[(k[Y>>2]|0)+48>>2]&1023](Y,f,na);nd[k[(k[ca>>2]|0)+48>>2]&1023](ca,g,na);nd[k[(k[ha>>2]|0)+48>>2]&1023](ha,i,na);if((k[d>>2]|0)==3){nd[k[(k[ka>>2]|0)+48>>2]&1023](ka,h,na);nd[k[(k[ia>>2]|0)+48>>2]&1023](ia,j,na);nd[k[(k[ja>>2]|0)+48>>2]&1023](ja,l,na)}rd[k[(k[Q>>2]|0)+60>>2]&511](Q,u,k[z>>2]|0,na);rd[k[(k[R>>2]|0)+60>>2]&511](R,v,k[z>>2]|0,na);oa=k[d>>2]|0;if((oa|0)==3){rd[k[(k[S>>2]|0)+60>>2]&511](S,w,k[z>>2]|0,na);za=k[d>>2]|0}else za=oa;Aa=+p[u>>3];Ba=+p[c>>3];Ca=(+p[D>>3]+ +p[v>>3])*.5;if((za|0)==3){Da=(+p[F>>3]+ +p[w>>3])*.5;Ea=(+p[G>>3]+ +p[H>>3])*.5;Fa=+p[E>>3]}else{Da=va;Ea=wa;Fa=xa}nd[k[(k[O>>2]|0)+48>>2]&1023](O,x,na);nd[k[(k[P>>2]|0)+48>>2]&1023](P,y,na);Ga=+p[y>>3];Ha=+p[x>>3]*+ba(.7071067811865475,+((1.0-Ga)/Ga));Ia=+p[B>>3];oa=(k[d>>2]|0)==2;Ja=Aa*Ia+ +p[m>>3];Ka=Ba*Ia+ +p[n>>3];La=Ja*Ja+Ka*Ka;if(oa){Ka=Ca*Ia+ +p[q>>3];Ma=La+Ka*(Ka*2.0)}else{Ka=Fa*Ia+ +p[o>>3];Ja=Ca*Ia+ +p[q>>3];Na=Da*Ia+ +p[s>>3];Oa=Ea*Ia+ +p[t>>3];Ma=La+Ka*Ka+Ja*(Ja*2.0)+Na*(Na*2.0)+Oa*(Oa*2.0)}Oa=+aa(+Ma);Na=+p[f>>3];Ja=+p[g>>3];Ka=Na*Na+Ja*Ja;if(oa){Ja=+p[i>>3];Pa=Ka+Ja*(Ja*2.0)}else{Ja=+p[h>>3];Na=+p[i>>3];La=+p[j>>3];Qa=+p[l>>3];Pa=Ka+Ja*Ja+(Na*Na+La*La+Qa*Qa)*2.0}Qa=+aa(+Pa);La=Qa==0.0?1.0:Qa;p[C>>3]=La;Wna(C,Ha,Ia,Oa,Ga,La)|0;La=+p[y>>3];Ga=Ha*+ba(+(+p[C>>3]),+((1.0-La)/La));p[e>>3]=(Ga+ +p[B>>3])*+p[sa>>3]*+p[A>>3];ZX(V,T,1,0,e,1,1,0,V,1,T,0,X,1)|0;do if(ta){Ga=+p[A>>3];La=Aa*+p[B>>3]+ +p[m>>3];oa=0;do{Ra=W+(oa<<3)|0;p[Ra>>3]=+p[Ra>>3]+La*+p[V+(oa<<3)>>3]*+p[sa>>3]*Ga;oa=oa+1|0}while((oa|0)!=(T|0));if(ta){Ga=+p[A>>3];La=Ba*+p[B>>3]+ +p[n>>3];oa=0;do{Ra=$+(oa<<3)|0;p[Ra>>3]=+p[Ra>>3]+La*+p[V+(oa<<3)>>3]*+p[sa>>3]*Ga;oa=oa+1|0}while((oa|0)!=(T|0));if(!ta)break;Ga=+p[A>>3];La=Ca*+p[B>>3]+ +p[q>>3];oa=0;do{Ra=_+(oa<<3)|0;p[Ra>>3]=+p[Ra>>3]+La*+p[V+(oa<<3)>>3]*+p[sa>>3]*Ga;oa=oa+1|0}while((oa|0)!=(T|0))}}while(0);do if(!((k[d>>2]|0)!=3|ua)){Ca=+p[A>>3];Ba=Fa*+p[B>>3]+ +p[o>>3];oa=0;do{Ra=ga+(oa<<3)|0;p[Ra>>3]=+p[Ra>>3]+Ba*+p[V+(oa<<3)>>3]*+p[sa>>3]*Ca;oa=oa+1|0}while((oa|0)!=(T|0));if(!ta)break;Ca=+p[A>>3];Ba=Da*+p[B>>3]+ +p[s>>3];oa=0;do{Ra=ea+(oa<<3)|0;p[Ra>>3]=+p[Ra>>3]+Ba*+p[V+(oa<<3)>>3]*+p[sa>>3]*Ca;oa=oa+1|0}while((oa|0)!=(T|0));if(!ta)break;Ca=+p[A>>3];Ba=Ea*+p[B>>3]+ +p[t>>3];oa=0;do{Ra=fa+(oa<<3)|0;p[Ra>>3]=+p[Ra>>3]+Ba*+p[V+(oa<<3)>>3]*+p[sa>>3]*Ca;oa=oa+1|0}while((oa|0)!=(T|0))}while(0);ya=ya+1|0;if((ya|0)>=(Hc[k[(k[na>>2]|0)+12>>2]&511](na)|0)){Sa=Da;Ta=Ea;Ua=Fa;break}else{va=Da;wa=Ea;xa=Fa}}}else{Sa=I;Ta=J;Ua=K}ya=Rqa(U)|0;T=Rqa(U)|0;sa=Rqa(U)|0;if((k[d>>2]|0)==2){fY(ya,X,W);fY(T,X,$);fY(sa,X,_);rd[k[(k[N>>2]|0)+48>>2]&511](N,725,ya,739);rd[k[(k[N>>2]|0)+48>>2]&511](N,728,T,739);rd[k[(k[N>>2]|0)+48>>2]&511](N,726,sa,739);if(!na){Va=0;Wa=0;Xa=0}else{Ya=0;Za=0;_a=0;$a=57}}else{ta=Rqa(U)|0;ua=Rqa(U)|0;P=Rqa(U)|0;iY(ya,X,W);iY(T,X,$);iY(sa,X,_);iY(ta,X,ga);iY(ua,X,ea);iY(P,X,fa);rd[k[(k[N>>2]|0)+48>>2]&511](N,725,ya,739);rd[k[(k[N>>2]|0)+48>>2]&511](N,728,T,739);rd[k[(k[N>>2]|0)+48>>2]&511](N,726,sa,739);rd[k[(k[N>>2]|0)+48>>2]&511](N,730,ta,739);rd[k[(k[N>>2]|0)+48>>2]&511](N,727,ua,739);rd[k[(k[N>>2]|0)+48>>2]&511](N,729,P,739);Ya=ua;Za=P;_a=ta;$a=57}if(($a|0)==57){$a=0;Ec[k[(k[na>>2]|0)+4>>2]&1023](na);Va=Ya;Wa=Za;Xa=_a}ta=k[z>>2]|0;if(ta)Tqa(ta);k[z>>2]=0;Tqa(V);Tqa(X);Tqa(W);Tqa(ya);Tqa($);Tqa(T);if(ga)Tqa(ga);if(Xa)Tqa(Xa);Tqa(_);Tqa(sa);if(ea)Tqa(ea);if(Va)Tqa(Va);if(fa)Tqa(fa);if(Wa)Tqa(Wa);L=L+1|0;if((L|0)>=(th(b)|0))break;else{I=Sa;J=Ta;K=Ua;M=S}}r=a;return}function maa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0.0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0.0,ga=0.0,ha=0.0,ia=0,ja=0.0,ka=0.0,la=0.0,ma=0.0,na=0.0,oa=0.0,pa=0,qa=0.0,ra=0.0,sa=0.0,ta=0.0;a=r;r=r+192|0;d=a+180|0;e=a+168|0;f=a+160|0;g=a+152|0;h=a+144|0;i=a+136|0;j=a+128|0;l=a+120|0;m=a+112|0;n=a+104|0;o=a+96|0;q=a+88|0;s=a+80|0;t=a+56|0;u=a+32|0;v=a+8|0;w=a+176|0;x=a;k[w>>2]=0;dO(c,x,916);cO(c,d,299);if((th(b)|0)<=0){r=a;return}c=u+8|0;y=t+8|0;z=v+16|0;A=t+16|0;B=u+16|0;C=v+8|0;D=0.0;E=0.0;F=0.0;G=0;while(1){H=qh(b,G)|0;Uo(H,w);I=Wo(H,674)|0;J=Wo(H,677)|0;if((k[d>>2]|0)==3)K=Wo(H,679)|0;else K=0;L=Wo(H,716)|0;M=Wo(H,719)|0;N=Wo(H,717)|0;if((k[d>>2]|0)==3){O=Wo(H,721)|0;P=Wo(H,718)|0;Q=P;R=Wo(H,720)|0;S=O}else{Q=0;R=0;S=0}O=Wo(H,725)|0;P=Wo(H,728)|0;T=Wo(H,726)|0;if((k[d>>2]|0)==3){U=Wo(H,730)|0;V=Wo(H,727)|0;W=V;X=Wo(H,729)|0;Y=U}else{W=0;X=0;Y=0}U=Hc[k[(k[H>>2]|0)+172>>2]&511](H)|0;V=U>>>0>536870911?-1:U<<3;Z=Rqa(V)|0;_=Rqa(V)|0;$=Rqa(V)|0;if((k[d>>2]|0)==3){aa=Rqa(V)|0;ba=Rqa(V)|0;ca=ba;da=Rqa(V)|0;ea=aa}else{ca=0;da=0;ea=0}aa=Hc[k[(k[H>>2]|0)+304>>2]&511](H)|0;if((U|0)>0){fa=D;ga=E;ha=F;V=0;while(1){nd[k[(k[aa>>2]|0)+32>>2]&1023](aa,739,V);rd[k[(k[I>>2]|0)+60>>2]&511](I,t,k[w>>2]|0,aa);rd[k[(k[J>>2]|0)+60>>2]&511](J,u,k[w>>2]|0,aa);ba=k[d>>2]|0;if((ba|0)==3){rd[k[(k[K>>2]|0)+60>>2]&511](K,v,k[w>>2]|0,aa);ia=k[d>>2]|0}else ia=ba;ja=+p[t>>3];ka=+p[c>>3];la=(+p[y>>3]+ +p[u>>3])*.5;if((ia|0)==3){ma=(+p[A>>3]+ +p[v>>3])*.5;na=(+p[B>>3]+ +p[C>>3])*.5;oa=+p[z>>3]}else{ma=fa;na=ga;oa=ha}nd[k[(k[L>>2]|0)+48>>2]&1023](L,l,aa);nd[k[(k[M>>2]|0)+48>>2]&1023](M,m,aa);nd[k[(k[N>>2]|0)+48>>2]&1023](N,o,aa);if((k[d>>2]|0)==3){nd[k[(k[S>>2]|0)+48>>2]&1023](S,n,aa);nd[k[(k[Q>>2]|0)+48>>2]&1023](Q,q,aa);nd[k[(k[R>>2]|0)+48>>2]&1023](R,s,aa)}nd[k[(k[O>>2]|0)+48>>2]&1023](O,e,aa);nd[k[(k[P>>2]|0)+48>>2]&1023](P,f,aa);nd[k[(k[T>>2]|0)+48>>2]&1023](T,h,aa);ba=k[d>>2]|0;if((ba|0)==3){nd[k[(k[Y>>2]|0)+48>>2]&1023](Y,g,aa);nd[k[(k[W>>2]|0)+48>>2]&1023](W,i,aa);nd[k[(k[X>>2]|0)+48>>2]&1023](X,j,aa);pa=k[d>>2]|0}else pa=ba;qa=+p[x>>3];p[Z+(V<<3)>>3]=+p[l>>3]+qa*(ja-+p[e>>3]);p[_+(V<<3)>>3]=+p[m>>3]+qa*(ka-+p[f>>3]);p[$+(V<<3)>>3]=+p[o>>3]+qa*(la-+p[h>>3]);if((pa|0)==3){p[ea+(V<<3)>>3]=+p[n>>3]+qa*(oa-+p[g>>3]);p[ca+(V<<3)>>3]=+p[q>>3]+qa*(ma-+p[i>>3]);p[da+(V<<3)>>3]=+p[s>>3]+qa*(na-+p[j>>3])}V=V+1|0;if((V|0)==(U|0)){ra=ma;sa=na;ta=oa;break}else{fa=ma;ga=na;ha=oa}}}else{ra=D;sa=E;ta=F}rd[k[(k[H>>2]|0)+48>>2]&511](H,716,Z,739);rd[k[(k[H>>2]|0)+48>>2]&511](H,719,_,739);rd[k[(k[H>>2]|0)+48>>2]&511](H,717,$,739);if((k[d>>2]|0)==3){rd[k[(k[H>>2]|0)+48>>2]&511](H,721,ea,739);rd[k[(k[H>>2]|0)+48>>2]&511](H,718,ca,739);rd[k[(k[H>>2]|0)+48>>2]&511](H,720,da,739)}if(aa)Ec[k[(k[aa>>2]|0)+4>>2]&1023](aa);U=k[w>>2]|0;if(U)Tqa(U);k[w>>2]=0;Tqa(Z);Tqa(_);if(ea)Tqa(ea);Tqa($);if(ca)Tqa(ca);if(da)Tqa(da);G=G+1|0;if((G|0)>=(th(b)|0))break;else{D=ra;E=sa;F=ta}}r=a;return}function naa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0;c=r;r=r+16|0;d=c;e=Rqa(76)|0;f=Rqa(52)|0;g=Rqa(76)|0;h=Hc[k[(k[b>>2]|0)+112>>2]&511](b)|0;i=ed[k[(k[b>>2]|0)+156>>2]&511](b,0)|0;k[g+24>>2]=i;k[e+24>>2]=972;k[f>>2]=972;i=ed[k[(k[b>>2]|0)+156>>2]&511](b,1)|0;k[g+28>>2]=i;k[e+28>>2]=972;k[f+4>>2]=972;i=ed[k[(k[b>>2]|0)+156>>2]&511](b,2)|0;k[g+32>>2]=i;k[e+32>>2]=972;k[f+8>>2]=972;i=ed[k[(k[b>>2]|0)+156>>2]&511](b,3)|0;k[g+36>>2]=i;k[e+36>>2]=972;k[f+12>>2]=972;i=ed[k[(k[b>>2]|0)+156>>2]&511](b,4)|0;k[g+40>>2]=i;k[e+40>>2]=972;k[f+16>>2]=972;i=ed[k[(k[b>>2]|0)+156>>2]&511](b,5)|0;k[g+44>>2]=i;k[e+44>>2]=972;k[f+20>>2]=972;i=ed[k[(k[b>>2]|0)+156>>2]&511](b,6)|0;k[g+48>>2]=i;k[e+48>>2]=972;k[f+24>>2]=972;i=ed[k[(k[b>>2]|0)+156>>2]&511](b,0)|0;k[g>>2]=i;i=ed[k[(k[b>>2]|0)+156>>2]&511](b,6)|0;k[g+52>>2]=i;k[e>>2]=971;k[e+52>>2]=653;k[f+28>>2]=653;i=ed[k[(k[b>>2]|0)+156>>2]&511](b,1)|0;k[g+4>>2]=i;i=ed[k[(k[b>>2]|0)+156>>2]&511](b,7)|0;k[g+56>>2]=i;k[e+4>>2]=971;k[e+56>>2]=653;k[f+32>>2]=653;i=ed[k[(k[b>>2]|0)+156>>2]&511](b,2)|0;k[g+8>>2]=i;i=ed[k[(k[b>>2]|0)+156>>2]&511](b,8)|0;k[g+60>>2]=i;k[e+8>>2]=971;k[e+60>>2]=653;k[f+36>>2]=653;i=ed[k[(k[b>>2]|0)+156>>2]&511](b,3)|0;k[g+12>>2]=i;i=ed[k[(k[b>>2]|0)+156>>2]&511](b,9)|0;k[g+64>>2]=i;k[e+12>>2]=971;k[e+64>>2]=653;k[f+40>>2]=653;i=ed[k[(k[b>>2]|0)+156>>2]&511](b,4)|0;k[g+16>>2]=i;i=ed[k[(k[b>>2]|0)+156>>2]&511](b,10)|0;k[g+68>>2]=i;k[e+16>>2]=971;k[e+68>>2]=653;k[f+44>>2]=653;i=ed[k[(k[b>>2]|0)+156>>2]&511](b,5)|0;k[g+20>>2]=i;i=ed[k[(k[b>>2]|0)+156>>2]&511](b,11)|0;k[g+72>>2]=i;k[e+20>>2]=971;k[e+72>>2]=653;k[f+48>>2]=653;i=hq(b,6,540)|0;j=gq(b,543)|0;l=Qqa(68)|0;B=0;eb(515,l|0,i|0,j|0);m=B;B=0;if(m&1){m=Rb()|0;Sqa(l);Qb(m|0)}if(i){HN(i);Sqa(i)}if(j){HN(j);Sqa(j)}j=i9(a,b)|0;wq(b,j,g,13,f);k[d>>2]=k[9691];k[d+4>>2]=k[9692];k[d+8>>2]=k[9693];NN(j,3,d);Fc[k[(k[b>>2]|0)+428>>2]&1023](b,738);d=h9(a,b)|0;vq(b,d,971);Fc[k[(k[b>>2]|0)+428>>2]&1023](b,h);h=k[j+12>>2]|0;a=l+12|0;i=k[a>>2]|0;m=0;do{n=m*27|0;o=m*39|0;q=i+(o+468<<3)|0;p[q>>3]=+p[h+(n<<3)>>3]+ +p[q>>3];q=i+(o+469<<3)|0;p[q>>3]=+p[h+(n+1<<3)>>3]+ +p[q>>3];q=i+(o+470<<3)|0;p[q>>3]=+p[h+(n+3<<3)>>3]+ +p[q>>3];q=i+(o+471<<3)|0;p[q>>3]=+p[h+(n+4<<3)>>3]+ +p[q>>3];q=i+(o+472<<3)|0;p[q>>3]=+p[h+(n+6<<3)>>3]+ +p[q>>3];q=i+(o+473<<3)|0;p[q>>3]=+p[h+(n+7<<3)>>3]+ +p[q>>3];q=i+(o+474<<3)|0;p[q>>3]=+p[h+(n+9<<3)>>3]+ +p[q>>3];q=i+(o+475<<3)|0;p[q>>3]=+p[h+(n+10<<3)>>3]+ +p[q>>3];q=i+(o+476<<3)|0;p[q>>3]=+p[h+(n+12<<3)>>3]+ +p[q>>3];q=i+(o+477<<3)|0;p[q>>3]=+p[h+(n+13<<3)>>3]+ +p[q>>3];q=i+(o+478<<3)|0;p[q>>3]=+p[h+(n+15<<3)>>3]+ +p[q>>3];q=i+(o+479<<3)|0;p[q>>3]=+p[h+(n+16<<3)>>3]+ +p[q>>3];m=m+1|0}while((m|0)!=27);m=k[d+12>>2]|0;h=k[a>>2]|0;a=0;do{i=a*12|0;q=a*39|0;n=h+(q+12<<3)|0;p[n>>3]=+p[m+(i<<3)>>3]+ +p[n>>3];n=h+(q+13<<3)|0;p[n>>3]=+p[m+((i|1)<<3)>>3]+ +p[n>>3];n=h+(q+15<<3)|0;p[n>>3]=+p[m+((i|2)<<3)>>3]+ +p[n>>3];n=h+(q+16<<3)|0;p[n>>3]=+p[m+((i|3)<<3)>>3]+ +p[n>>3];n=i+4|0;o=h+(q+18<<3)|0;p[o>>3]=+p[m+(n<<3)>>3]+ +p[o>>3];o=h+(q+19<<3)|0;p[o>>3]=+p[m+((n|1)<<3)>>3]+ +p[o>>3];o=i+6|0;n=h+(q+21<<3)|0;p[n>>3]=+p[m+(o<<3)>>3]+ +p[n>>3];n=h+(q+22<<3)|0;p[n>>3]=+p[m+((o|1)<<3)>>3]+ +p[n>>3];n=i+8|0;o=h+(q+24<<3)|0;p[o>>3]=+p[m+(n<<3)>>3]+ +p[o>>3];o=h+(q+25<<3)|0;p[o>>3]=+p[m+((n|1)<<3)>>3]+ +p[o>>3];o=i+10|0;i=h+(q+27<<3)|0;p[i>>3]=+p[m+(o<<3)>>3]+ +p[i>>3];i=h+(q+28<<3)|0;p[i>>3]=+p[m+((o|1)<<3)>>3]+ +p[i>>3];a=a+1|0}while((a|0)!=12);Gq(b,l,g,19,e);Tqa(e);Tqa(f);Tqa(g);if(j){HN(j);Sqa(j)}if(!d){r=c;return l|0}HN(d);Sqa(d);r=c;return l|0}function oaa(a,b){a=a|0;b=b|0;var c=0,d=0;c=paa(a,b)|0;d=qaa(a,b)|0;b=Qqa(68)|0;B=0;eb(515,b|0,c|0,d|0);a=B;B=0;if(a&1){a=Rb()|0;Sqa(b);Qb(a|0)}HN(c);Sqa(c);if(!d)return b|0;HN(d);Sqa(d);return b|0}function paa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0.0,T=0,U=0.0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0;a=r;r=r+4848|0;c=a+4664|0;d=a+4656|0;e=a+4648|0;f=a+4640|0;g=a+3776|0;h=a+3584|0;i=a+3440|0;j=a+2792|0;l=a+2664|0;m=a+2592|0;n=a+1296|0;o=a;q=a+4832|0;s=l;t=s+128|0;do{k[s>>2]=0;s=s+4|0}while((s|0)<(t|0));s=m;t=s+72|0;do{k[s>>2]=0;s=s+4|0}while((s|0)<(t|0));WEa(n|0,0,1296)|0;WEa(o|0,0,1296)|0;k[q>>2]=0;u=Hc[k[(k[b>>2]|0)+124>>2]&511](b)|0;v=Hc[k[(k[u>>2]|0)+432>>2]&511](u)|0;w=Hc[k[(k[b>>2]|0)+396>>2]&511](b)|0;x=Hc[k[(k[b>>2]|0)+392>>2]&511](b)|0;y=(w<<1)+-1|0;z=x+y|0;A=z>>>0>1073741823?-1:z<<2;C=Rqa(A)|0;D=Rqa(A)|0;if((w|0)>1){A=w+-1|0;E=0;do{F=ed[k[(k[u>>2]|0)+156>>2]&511](u,E)|0;k[D+(E<<2)>>2]=F;k[C+(E<<2)>>2]=971;E=E+1|0}while((E|0)!=(A|0))}if((w|0)>0){A=w+-1|0;E=0;do{F=ed[k[(k[b>>2]|0)+156>>2]&511](b,E)|0;G=A+E|0;k[D+(G<<2)>>2]=F;k[C+(G<<2)>>2]=972;E=E+1|0}while((E|0)!=(w|0))}if((x|0)>0){E=0;do{A=ed[k[(k[b>>2]|0)+156>>2]&511](b,E+w|0)|0;G=E+y|0;k[D+(G<<2)>>2]=A;k[C+(G<<2)>>2]=653;E=E+1|0}while((E|0)!=(x|0))}x=hq(u,6,536)|0;u=gq(b,543)|0;E=Qqa(68)|0;B=0;eb(515,E|0,x|0,u|0);y=B;B=0;if(y&1){y=Rb()|0;w=Q;Sqa(E);H=y;I=w;Qb(H|0)}if(x){HN(x);Sqa(x)}if(u){HN(u);Sqa(u)}Uo(b,q);pp(b,f,85);u=Wo(b,674)|0;x=Wo(b,677)|0;w=Wo(b,679)|0;y=ed[k[(k[b>>2]|0)+308>>2]&511](b,5)|0;G=Qqa(64)|0;B=0;va(491,G|0);A=B;B=0;if(A&1){A=Rb()|0;F=Q;Sqa(G);H=A;I=F;Qb(H|0)}H=Hc[k[(k[y>>2]|0)+8>>2]&511](y)|0;if((H|0)<(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0)){F=j+144|0;I=j+360|0;A=j+576|0;J=b+28|0;K=y+8|0;L=l+120|0;M=l+40|0;N=l+80|0;O=m+32|0;P=m+64|0;R=H;do{Fc[k[(k[y>>2]|0)+24>>2]&1023](y,R);Fc[k[(k[y>>2]|0)+36>>2]&1023](y,G);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[q>>2]|0,y);taa(0,g,b,k[q>>2]|0,y);uaa(0,h,v,k[q>>2]|0,G);vaa(0,i,v,k[q>>2]|0,G);rd[k[(k[b>>2]|0)+348>>2]&511](b,c,k[q>>2]|0,y);H=0;do{S=+p[c+(H<<3)>>3];T=H*3|0;p[j+(T<<3)>>3]=S*2.0;U=+p[c+56+(H<<3)>>3];p[j+(T+1<<3)>>3]=U;p[j+(T+2<<3)>>3]=0.0;p[j+(T+27<<3)>>3]=S;p[j+(T+28<<3)>>3]=U*2.0;p[j+(T+29<<3)>>3]=0.0;p[j+(T+54<<3)>>3]=U;p[j+(T+55<<3)>>3]=S;p[j+(T+56<<3)>>3]=0.0;H=H+1|0}while((H|0)!=6);s=F;t=s+72|0;do{k[s>>2]=0;s=s+4|0}while((s|0)<(t|0));s=I;t=s+72|0;do{k[s>>2]=0;s=s+4|0}while((s|0)<(t|0));s=A;t=s+72|0;do{k[s>>2]=0;s=s+4|0}while((s|0)<(t|0));H=k[J>>2]|0;Tc[k[(k[H>>2]|0)+108>>2]&15](H,e,3,k[q>>2]|0,y,u,x,w);S=+p[d>>3];U=+p[e>>3]*2.0*+p[K>>3]*S;p[l>>3]=U;p[M>>3]=U;p[N>>3]=U;p[L>>3]=-(+p[K>>3]*S*+p[f>>3]);p[m>>3]=U;p[O>>3]=U;p[P>>3]=U;ZX(g,4,27,1,l,4,4,0,h,4,6,0,n,1)|0;ZX(i,3,6,1,m,3,3,0,j,3,27,0,o,1)|0;R=R+1|0}while((R|0)<(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0))}R=k[E+12>>2]|0;j=0;do{m=j*39|0;i=R+(m+468<<3)|0;p[i>>3]=+p[n+(j*48|0)>>3]+ +p[i>>3];i=R+(m+469<<3)|0;p[i>>3]=+p[n+(j*48|0)+8>>3]+ +p[i>>3];i=R+(m+470<<3)|0;p[i>>3]=+p[n+(j*48|0)+16>>3]+ +p[i>>3];i=R+(m+471<<3)|0;p[i>>3]=+p[n+(j*48|0)+24>>3]+ +p[i>>3];i=R+(m+472<<3)|0;p[i>>3]=+p[n+(j*48|0)+32>>3]+ +p[i>>3];i=R+(m+473<<3)|0;p[i>>3]=+p[n+(j*48|0)+40>>3]+ +p[i>>3];j=j+1|0}while((j|0)!=27);V=0;do{j=R+(V+12<<3)|0;p[j>>3]=+p[o+(V<<3)>>3]+ +p[j>>3];V=V+1|0}while((V|0)!=27);W=0;do{V=R+(W+51<<3)|0;p[V>>3]=+p[o+216+(W<<3)>>3]+ +p[V>>3];W=W+1|0}while((W|0)!=27);X=0;do{W=R+(X+90<<3)|0;p[W>>3]=+p[o+432+(X<<3)>>3]+ +p[W>>3];X=X+1|0}while((X|0)!=27);Y=0;do{X=R+(Y+129<<3)|0;p[X>>3]=+p[o+648+(Y<<3)>>3]+ +p[X>>3];Y=Y+1|0}while((Y|0)!=27);Z=0;do{Y=R+(Z+168<<3)|0;p[Y>>3]=+p[o+864+(Z<<3)>>3]+ +p[Y>>3];Z=Z+1|0}while((Z|0)!=27);_=0;do{Z=R+(_+207<<3)|0;p[Z>>3]=+p[o+1080+(_<<3)>>3]+ +p[Z>>3];_=_+1|0}while((_|0)!=27);Gq(b,E,D,z,C);Tqa(C);Tqa(D);D=k[q>>2]|0;if(D)Tqa(D);k[q>>2]=0;q=k[v+28>>2]|0;if(q)Ec[k[(k[q>>2]|0)+4>>2]&1023](q);Ec[k[(k[v>>2]|0)+4>>2]&1023](v);if(!y){$=k[G>>2]|0;aa=$+4|0;ba=k[aa>>2]|0;Ec[ba&1023](G);r=a;return E|0}Ec[k[(k[y>>2]|0)+4>>2]&1023](y);$=k[G>>2]|0;aa=$+4|0;ba=k[aa>>2]|0;Ec[ba&1023](G);r=a;return E|0}function qaa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0.0,Wa=0.0,Xa=0.0,Ya=0.0,Za=0.0,_a=0.0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0;a=r;r=r+5040|0;c=a+5024|0;d=a+5008|0;e=a+5e3|0;f=a+4992|0;g=a+4984|0;h=a+4960|0;i=a+4576|0;j=a+2848|0;l=a+2336|0;m=a+2048|0;n=a+1856|0;o=a+1728|0;q=a+432|0;s=a;t=a+5020|0;u=a+5016|0;WEa(l|0,0,512)|0;v=o;w=v+128|0;do{k[v>>2]=0;v=v+4|0}while((v|0)<(w|0));WEa(q|0,0,1296)|0;WEa(s|0,0,432)|0;k[t>>2]=0;k[u>>2]=0;Ap(b,c,533);if(_p(b)|0){x=0;r=a;return x|0}if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){x=0;r=a;return x|0}c=Hc[k[(k[b>>2]|0)+396>>2]&511](b)|0;v=Hc[k[(k[b>>2]|0)+392>>2]&511](b)|0;w=(c<<1)+-1|0;y=v+w|0;z=y>>>0>1073741823?-1:y<<2;A=Rqa(z)|0;C=Rqa(z)|0;if((c|0)>1){z=c+-1|0;D=0;do{E=ed[k[(k[b>>2]|0)+156>>2]&511](b,D)|0;k[C+(D<<2)>>2]=E;k[A+(D<<2)>>2]=971;D=D+1|0}while((D|0)!=(z|0))}if((c|0)>0){z=c+-1|0;D=0;do{E=ed[k[(k[b>>2]|0)+156>>2]&511](b,D)|0;F=z+D|0;k[C+(F<<2)>>2]=E;k[A+(F<<2)>>2]=972;D=D+1|0}while((D|0)!=(c|0))}if((v|0)>0){D=0;do{z=ed[k[(k[b>>2]|0)+156>>2]&511](b,D+c|0)|0;F=D+w|0;k[C+(F<<2)>>2]=z;k[A+(F<<2)>>2]=653;D=D+1|0}while((D|0)!=(v|0))}v=hq(b,6,536)|0;D=gq(b,543)|0;w=Qqa(68)|0;B=0;eb(515,w|0,v|0,D|0);c=B;B=0;if(c&1){c=Rb()|0;F=Q;Sqa(w);G=c;H=F;Qb(G|0)}if(v){HN(v);Sqa(v)}if(D){HN(D);Sqa(D)}Uo(b,t);Fc[k[(k[b>>2]|0)+188>>2]&1023](b,u);pp(b,d,85);D=Wo(b,674)|0;v=Wo(b,677)|0;F=Wo(b,679)|0;c=Qqa(16)|0;B=0;eb(524,c|0,b|0,3);z=B;B=0;if(z&1){z=Rb()|0;E=Q;Sqa(c);G=z;H=E;Qb(G|0)}G=ed[k[(k[b>>2]|0)+324>>2]&511](b,2)|0;E=Hc[k[(k[G>>2]|0)+8>>2]&511](G)|0;if((E|0)<(Hc[k[(k[G>>2]|0)+12>>2]&511](G)|0)){H=G+40|0;z=G+64|0;I=G+48|0;J=G+56|0;K=m+8|0;L=m+72|0;M=m+80|0;N=m+88|0;O=m+144|0;P=m+160|0;R=m+216|0;S=m+232|0;T=m+24|0;U=m+32|0;V=m+96|0;W=m+104|0;X=m+112|0;Y=m+168|0;Z=m+184|0;_=m+240|0;$=m+256|0;aa=m+48|0;ba=m+56|0;ca=m+120|0;da=m+128|0;ea=m+136|0;fa=m+192|0;ga=m+208|0;ha=m+264|0;ia=m+280|0;ja=n+8|0;ka=n+48|0;la=n+56|0;ma=n+96|0;na=n+104|0;oa=n+144|0;pa=n+152|0;qa=n+16|0;ra=n+24|0;sa=n+64|0;ta=n+72|0;ua=n+112|0;va=n+120|0;wa=n+160|0;xa=n+168|0;ya=n+32|0;za=n+40|0;Aa=n+80|0;Ba=n+88|0;Ca=n+128|0;Da=n+136|0;Ea=n+176|0;Fa=n+184|0;Ga=b+28|0;Ha=G+8|0;Ia=l+72|0;Ja=h+16|0;Ka=l+144|0;La=h+8|0;Ma=l+216|0;Na=l+288|0;Oa=l+360|0;Pa=l+432|0;Qa=l+504|0;Ra=o+40|0;Sa=o+80|0;Ta=o+120|0;Ua=E;do{Fc[k[(k[G>>2]|0)+24>>2]&1023](G,Ua);rd[k[(k[b>>2]|0)+264>>2]&511](b,g,k[u>>2]|0,G);raa(0,i,0,G);saa(0,j,b,k[t>>2]|0,G);Va=1.0-+p[z>>3];Wa=+p[H>>3]*Va*.5;Xa=+p[I>>3]*Va*.5;Ya=Va*+p[J>>3]*.5;p[m>>3]=Wa;p[L>>3]=0.0;k[K>>2]=0;k[K+4>>2]=0;k[K+8>>2]=0;k[K+12>>2]=0;p[M>>3]=Wa;p[N>>3]=0.0;k[O>>2]=0;k[O+4>>2]=0;k[O+8>>2]=0;k[O+12>>2]=0;p[P>>3]=Wa;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;p[S>>3]=Wa;p[T>>3]=Xa;p[V>>3]=0.0;k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;k[U+12>>2]=0;p[W>>3]=Xa;p[X>>3]=0.0;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;p[Z>>3]=Xa;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0;p[$>>3]=Xa;p[aa>>3]=Ya;p[ca>>3]=0.0;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;p[da>>3]=Ya;p[ea>>3]=0.0;k[fa>>2]=0;k[fa+4>>2]=0;k[fa+8>>2]=0;k[fa+12>>2]=0;p[ga>>3]=Ya;k[ha>>2]=0;k[ha+4>>2]=0;k[ha+8>>2]=0;k[ha+12>>2]=0;p[ia>>3]=Ya;Ya=1.0-+p[z>>3];Xa=+p[H>>3]*Ya*.5;Wa=+p[I>>3]*Ya*.5;Va=Ya*+p[J>>3]*.5;p[n>>3]=Xa;p[ja>>3]=0.0;p[ka>>3]=0.0;p[la>>3]=Xa;p[ma>>3]=Xa;p[na>>3]=0.0;p[oa>>3]=0.0;p[pa>>3]=Xa;p[qa>>3]=Wa;p[ra>>3]=0.0;p[sa>>3]=0.0;p[ta>>3]=Wa;p[ua>>3]=Wa;p[va>>3]=0.0;p[wa>>3]=0.0;p[xa>>3]=Wa;p[ya>>3]=Va;p[za>>3]=0.0;p[Aa>>3]=0.0;p[Ba>>3]=Va;p[Ca>>3]=Va;p[Da>>3]=0.0;p[Ea>>3]=0.0;p[Fa>>3]=Va;E=k[Ga>>2]|0;Tc[k[(k[E>>2]|0)+108>>2]&15](E,e,3,k[t>>2]|0,G,D,v,F);nd[k[(k[b>>2]|0)+380>>2]&1023](b,h,k[u>>2]|0);fla(c,f,G);Va=+p[f>>3];Wa=+p[g>>3];p[l>>3]=Va*+p[Ha>>3]*Wa;p[Ia>>3]=Va*+p[Ha>>3]*Wa;Xa=+p[h>>3];Ya=+p[Ja>>3];p[Ka>>3]=-(Va*+p[Ha>>3]*Wa*Xa*Ya);Za=+p[La>>3];p[Ma>>3]=-(Va*+p[Ha>>3]*Wa*Za*Ya);_a=+p[e>>3]*-2.0;p[Na>>3]=_a*+p[Ha>>3]*Wa*Xa;p[Oa>>3]=_a*+p[Ha>>3]*Wa*Za;_a=+p[d>>3];p[Pa>>3]=_a*+p[Ha>>3]*Wa*Xa;p[Qa>>3]=_a*+p[Ha>>3]*Wa*Za;p[o>>3]=Va*+p[Ha>>3]*Wa;p[Ra>>3]=Va*+p[Ha>>3]*Wa;p[Sa>>3]=-(Va*+p[Ha>>3]*Wa*Xa*Ya);p[Ta>>3]=-(Va*+p[Ha>>3]*Wa*Za*Ya);ZX(i,8,6,1,l,8,8,0,j,8,27,0,q,1)|0;ZX(m,4,9,1,o,4,4,0,n,4,6,0,s,1)|0;Ua=Ua+1|0}while((Ua|0)<(Hc[k[(k[G>>2]|0)+12>>2]&511](G)|0))}Ua=k[w+12>>2]|0;n=0;do{o=Ua+(n+12<<3)|0;p[o>>3]=+p[q+(n<<3)>>3]+ +p[o>>3];n=n+1|0}while((n|0)!=27);$a=0;do{n=Ua+($a+51<<3)|0;p[n>>3]=+p[q+216+($a<<3)>>3]+ +p[n>>3];$a=$a+1|0}while(($a|0)!=27);ab=0;do{$a=Ua+(ab+90<<3)|0;p[$a>>3]=+p[q+432+(ab<<3)>>3]+ +p[$a>>3];ab=ab+1|0}while((ab|0)!=27);bb=0;do{ab=Ua+(bb+129<<3)|0;p[ab>>3]=+p[q+648+(bb<<3)>>3]+ +p[ab>>3];bb=bb+1|0}while((bb|0)!=27);cb=0;do{bb=Ua+(cb+168<<3)|0;p[bb>>3]=+p[q+864+(cb<<3)>>3]+ +p[bb>>3];cb=cb+1|0}while((cb|0)!=27);db=0;do{cb=Ua+(db+207<<3)|0;p[cb>>3]=+p[q+1080+(db<<3)>>3]+ +p[cb>>3];db=db+1|0}while((db|0)!=27);fb=0;do{db=fb*39|0;q=Ua+(db+468<<3)|0;p[q>>3]=+p[s+(fb*48|0)>>3]+ +p[q>>3];q=Ua+(db+469<<3)|0;p[q>>3]=+p[s+(fb*48|0)+8>>3]+ +p[q>>3];q=Ua+(db+470<<3)|0;p[q>>3]=+p[s+(fb*48|0)+16>>3]+ +p[q>>3];q=Ua+(db+471<<3)|0;p[q>>3]=+p[s+(fb*48|0)+24>>3]+ +p[q>>3];q=Ua+(db+472<<3)|0;p[q>>3]=+p[s+(fb*48|0)+32>>3]+ +p[q>>3];q=Ua+(db+473<<3)|0;p[q>>3]=+p[s+(fb*48|0)+40>>3]+ +p[q>>3];fb=fb+1|0}while((fb|0)!=9);Gq(b,w,C,y,A);Tqa(A);Tqa(C);C=k[t>>2]|0;if(C)Tqa(C);k[t>>2]=0;t=k[u>>2]|0;if(t)Tqa(t);k[u>>2]=0;if(G)Ec[k[(k[G>>2]|0)+4>>2]&1023](G);bla(c);Sqa(c);x=w;r=a;return x|0}function raa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0,g=0;c=r;r=r+32|0;a=c;e=1.0-+p[d+64>>3];f=+p[d+40>>3]*e*.5;p[a>>3]=f;p[a+8>>3]=+p[d+48>>3]*e*.5;p[a+16>>3]=+p[d+56>>3]*e*.5;e=f;d=0;while(1){g=d<<1;p[b+(g<<3)>>3]=e;p[b+((g|1)<<3)>>3]=0.0;p[b+(g+6<<3)>>3]=0.0;p[b+(g+7<<3)>>3]=e;p[b+(g+12<<3)>>3]=e;p[b+(g+13<<3)>>3]=0.0;p[b+(g+18<<3)>>3]=0.0;p[b+(g+19<<3)>>3]=e;p[b+(g+24<<3)>>3]=e;p[b+(g+25<<3)>>3]=0.0;p[b+(g+30<<3)>>3]=0.0;p[b+(g+31<<3)>>3]=e;p[b+(g+36<<3)>>3]=e;p[b+(g+37<<3)>>3]=0.0;p[b+(g+42<<3)>>3]=0.0;p[b+(g+43<<3)>>3]=e;g=d+1|0;if((g|0)==3)break;e=+p[a+(g<<3)>>3];d=g}r=c;return}function saa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0.0,i=0.0,j=0.0,l=0.0,m=0.0,n=0,o=0,q=0;a=r;r=r+176|0;f=a+144|0;g=a;h=1.0-+p[e+64>>3];i=+p[e+40>>3]*h*.5;p[f>>3]=i;j=+p[e+48>>3]*h*.5;p[f+8>>3]=j;l=+p[e+56>>3]*h*.5;p[f+16>>3]=l;rd[k[(k[c>>2]|0)+360>>2]&511](c,g,d,e);h=i;e=0;while(1){d=e*3|0;p[b+(d<<3)>>3]=h;p[b+(d+1<<3)>>3]=0.0;p[b+(d+2<<3)>>3]=0.0;p[b+(d+27<<3)>>3]=0.0;p[b+(d+28<<3)>>3]=h;p[b+(d+29<<3)>>3]=0.0;p[b+(d+54<<3)>>3]=0.0;p[b+(d+55<<3)>>3]=0.0;p[b+(d+56<<3)>>3]=h;p[b+(d+81<<3)>>3]=0.0;p[b+(d+82<<3)>>3]=0.0;p[b+(d+83<<3)>>3]=h;p[b+(d+108<<3)>>3]=0.0;p[b+(d+109<<3)>>3]=0.0;m=+p[g+96+(e<<3)>>3];p[b+(d+110<<3)>>3]=m;p[b+(d+135<<3)>>3]=0.0;p[b+(d+136<<3)>>3]=0.0;p[b+(d+137<<3)>>3]=m;p[b+(d+162<<3)>>3]=0.0;p[b+(d+163<<3)>>3]=0.0;p[b+(d+164<<3)>>3]=0.0;p[b+(d+189<<3)>>3]=0.0;p[b+(d+190<<3)>>3]=0.0;p[b+(d+191<<3)>>3]=0.0;d=e+1|0;if((d|0)==3){n=3;break}h=+p[f+(d<<3)>>3];e=d}do{e=n*3|0;p[b+(e<<3)>>3]=0.0;p[b+(e+1<<3)>>3]=0.0;p[b+(e+2<<3)>>3]=0.0;p[b+(e+27<<3)>>3]=0.0;p[b+(e+28<<3)>>3]=0.0;p[b+(e+29<<3)>>3]=0.0;p[b+(e+54<<3)>>3]=0.0;p[b+(e+55<<3)>>3]=0.0;p[b+(e+56<<3)>>3]=0.0;p[b+(e+81<<3)>>3]=0.0;p[b+(e+82<<3)>>3]=0.0;p[b+(e+83<<3)>>3]=0.0;p[b+(e+108<<3)>>3]=0.0;p[b+(e+109<<3)>>3]=0.0;p[b+(e+110<<3)>>3]=0.0;p[b+(e+135<<3)>>3]=0.0;p[b+(e+136<<3)>>3]=0.0;p[b+(e+137<<3)>>3]=0.0;p[b+(e+162<<3)>>3]=0.0;p[b+(e+163<<3)>>3]=0.0;p[b+(e+164<<3)>>3]=0.0;p[b+(e+189<<3)>>3]=0.0;p[b+(e+190<<3)>>3]=0.0;p[b+(e+191<<3)>>3]=0.0;n=n+1|0}while((n|0)!=7);p[b+168>>3]=0.0;p[b+384>>3]=0.0;p[b+600>>3]=0.0;p[b+816>>3]=0.0;p[b+1032>>3]=0.0;p[b+1248>>3]=0.0;p[b+1464>>3]=i;p[b+1680>>3]=i;p[b+176>>3]=0.0;p[b+392>>3]=0.0;p[b+608>>3]=0.0;p[b+824>>3]=0.0;p[b+1040>>3]=0.0;p[b+1256>>3]=0.0;p[b+1472>>3]=j;p[b+1688>>3]=j;p[b+184>>3]=0.0;p[b+400>>3]=0.0;p[b+616>>3]=0.0;p[b+832>>3]=0.0;p[b+1048>>3]=0.0;p[b+1264>>3]=0.0;p[b+1480>>3]=l;p[b+1696>>3]=l;n=b+192|0;e=b+408|0;f=b+624|0;g=b+840|0;d=b+1056|0;c=b+1272|0;o=b+1488|0;q=b+1704|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[n+16>>2]=0;k[n+20>>2]=0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[f+16>>2]=0;k[f+20>>2]=0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[g+16>>2]=0;k[g+20>>2]=0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[o+16>>2]=0;k[o+20>>2]=0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[q+16>>2]=0;k[q+20>>2]=0;r=a;return}function taa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0.0,i=0.0;a=r;r=r+224|0;f=a+48|0;g=a;rd[k[(k[c>>2]|0)+348>>2]&511](c,f,d,e);nd[k[(k[c>>2]|0)+356>>2]&1023](c,g,e);e=0;do{h=+p[f+(e<<3)>>3];c=e*3|0;p[b+(c<<3)>>3]=h;p[b+(c+1<<3)>>3]=0.0;p[b+(c+2<<3)>>3]=0.0;p[b+(c+27<<3)>>3]=0.0;i=+p[f+56+(e<<3)>>3];p[b+(c+28<<3)>>3]=i;p[b+(c+29<<3)>>3]=0.0;p[b+(c+54<<3)>>3]=i*.5;p[b+(c+55<<3)>>3]=h*.5;p[b+(c+56<<3)>>3]=0.0;p[b+(c+81<<3)>>3]=0.0;p[b+(c+82<<3)>>3]=0.0;p[b+(c+83<<3)>>3]=0.0;e=e+1|0}while((e|0)!=6);e=b+144|0;f=b+360|0;c=b+576|0;d=b+792|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;k[e+28>>2]=0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[f+16>>2]=0;k[f+20>>2]=0;k[f+24>>2]=0;k[f+28>>2]=0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=0;k[c+24>>2]=0;k[c+28>>2]=0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;p[b+816>>3]=+p[g>>3];p[b+176>>3]=0.0;p[b+392>>3]=0.0;p[b+608>>3]=0.0;p[b+824>>3]=+p[g+8>>3];p[b+184>>3]=0.0;p[b+400>>3]=0.0;p[b+616>>3]=0.0;p[b+832>>3]=+p[g+16>>3];p[b+192>>3]=0.0;p[b+408>>3]=0.0;p[b+624>>3]=0.0;p[b+840>>3]=+p[g+24>>3];p[b+200>>3]=0.0;p[b+416>>3]=0.0;p[b+632>>3]=0.0;p[b+848>>3]=+p[g+32>>3];p[b+208>>3]=0.0;p[b+424>>3]=0.0;p[b+640>>3]=0.0;p[b+856>>3]=+p[g+40>>3];r=a;return}function uaa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0.0,i=0,j=0,l=0.0;a=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;f=a<<1;g=Rqa(f>>>0>536870911?-1:f<<3)|0;rd[k[(k[c>>2]|0)+340>>2]&511](c,g,d,e);if((a|0)<=0){Tqa(g);return}e=a<<2;d=a*6|0;c=0;do{h=+p[g+(c<<3)>>3];i=c<<1;p[b+(i<<3)>>3]=h;p[b+((i|1)<<3)>>3]=0.0;j=i+f|0;p[b+(j<<3)>>3]=0.0;l=+p[g+(c+a<<3)>>3];p[b+((j|1)<<3)>>3]=l;j=i+e|0;p[b+(j<<3)>>3]=l;p[b+((j|1)<<3)>>3]=h;j=i+d|0;p[b+(j<<3)>>3]=h;p[b+((j|1)<<3)>>3]=l;c=c+1|0}while((c|0)!=(a|0));Tqa(g);return}function vaa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0.0,i=0,j=0.0;a=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;f=a<<1;g=Rqa(f>>>0>536870911?-1:f<<3)|0;rd[k[(k[c>>2]|0)+340>>2]&511](c,g,d,e);if((a|0)<=0){Tqa(g);return}e=a<<2;d=0;do{h=+p[g+(d<<3)>>3];c=d<<1;p[b+(c<<3)>>3]=h;p[b+((c|1)<<3)>>3]=0.0;i=c+f|0;p[b+(i<<3)>>3]=0.0;j=+p[g+(d+a<<3)>>3];p[b+((i|1)<<3)>>3]=j;i=c+e|0;p[b+(i<<3)>>3]=j*.5;p[b+((i|1)<<3)>>3]=h*.5;d=d+1|0}while((d|0)!=(a|0));Tqa(g);return}function waa(a,b){a=a|0;b=b|0;var c=0,d=0;c=xaa(a,b)|0;a=yaa(0,b)|0;b=Qqa(68)|0;B=0;eb(515,b|0,c|0,a|0);d=B;B=0;if(d&1){d=Rb()|0;Sqa(b);Qb(d|0)}HN(c);Sqa(c);if(!a)return b|0;HN(a);Sqa(a);return b|0}function xaa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0.0;a=r;r=r+112|0;c=a+96|0;d=a+88|0;e=a+80|0;f=a+72|0;g=a+104|0;h=a;i=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;j=i<<1;l=i<<2;k[g>>2]=0;m=i*6|0;n=Rqa(m>>>0>536870911?-1:m<<3)|0;m=i*3|0;o=Rqa(m>>>0>536870911?-1:m<<3)|0;m=h;q=m+72|0;do{k[m>>2]=0;m=m+4|0}while((m|0)<(q|0));m=ma(j,i)|0;q=Rqa(m>>>0>536870911?-1:m<<3)|0;if(m)WEa(q|0,0,m<<3|0)|0;m=j>>>0>1073741823?-1:j<<2;s=Rqa(m)|0;t=Rqa(m)|0;m=Hc[k[(k[b>>2]|0)+124>>2]&511](b)|0;u=Hc[k[(k[m>>2]|0)+432>>2]&511](m)|0;v=(i|0)>0;if(v){w=0;do{x=ed[k[(k[m>>2]|0)+156>>2]&511](m,w)|0;k[s+(w<<2)>>2]=x;x=ed[k[(k[b>>2]|0)+156>>2]&511](b,w)|0;y=w+i|0;k[s+(y<<2)>>2]=x;k[t+(w<<2)>>2]=971;k[t+(y<<2)>>2]=971;w=w+1|0}while((w|0)!=(i|0))}w=gq(m,536)|0;m=gq(b,540)|0;y=Qqa(68)|0;B=0;eb(515,y|0,w|0,m|0);x=B;B=0;if(x&1){x=Rb()|0;z=Q;Sqa(y);A=x;C=z;Qb(A|0)}if(w){HN(w);Sqa(w)}if(m){HN(m);Sqa(m)}Uo(b,g);pp(b,f,87);m=Wo(b,674)|0;w=Wo(b,677)|0;z=Wo(b,675)|0;x=Wo(b,678)|0;D=ed[k[(k[b>>2]|0)+308>>2]&511](b,5)|0;E=Qqa(64)|0;B=0;va(491,E|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Sqa(E);A=F;C=G;Qb(A|0)}A=Hc[k[(k[D>>2]|0)+8>>2]&511](D)|0;if((A|0)<(Hc[k[(k[D>>2]|0)+12>>2]&511](D)|0)){G=b+28|0;C=D+8|0;F=h+32|0;H=h+64|0;I=A;do{Fc[k[(k[D>>2]|0)+24>>2]&1023](D,I);Fc[k[(k[D>>2]|0)+36>>2]&1023](D,E);rd[k[(k[b>>2]|0)+260>>2]&511](b,c,k[g>>2]|0,D);zaa(0,n,b,k[g>>2]|0,D);K9(0,o,u,2,k[g>>2]|0,E);A=k[G>>2]|0;ad[k[(k[A>>2]|0)+116>>2]&63](A,d,3,k[g>>2]|0,D,m,w);A=k[G>>2]|0;ad[k[(k[A>>2]|0)+116>>2]&63](A,e,3,k[g>>2]|0,D,z,x);J=+p[d>>3];K=+p[c>>3]*(+p[C>>3]*((J+ +p[f>>3]*(J-+p[e>>3]))*2.0));p[h>>3]=K;p[F>>3]=K;p[H>>3]=K;ZX(n,3,j,1,h,3,3,0,o,3,i,0,q,1)|0;I=I+1|0}while((I|0)<(Hc[k[(k[D>>2]|0)+12>>2]&511](D)|0))}if(v){I=k[y+12>>2]|0;h=0;do{H=ma(h,i)|0;F=ma(h+j|0,l)|0;e=0;do{f=I+(e+F<<3)|0;p[f>>3]=+p[q+(e+H<<3)>>3]+ +p[f>>3];e=e+1|0}while((e|0)!=(i|0));h=h+1|0}while((h|0)<(j|0));if(v){v=k[y+12>>2]|0;h=0;do{I=(ma(h,l)|0)+j|0;e=0;do{H=q+((ma(e,i)|0)+h<<3)|0;F=v+(I+e<<3)|0;p[F>>3]=+p[H>>3]+ +p[F>>3];e=e+1|0}while((e|0)<(j|0));h=h+1|0}while((h|0)!=(i|0))}}Gq(b,y,s,j,t);ap(u);if(u)Ec[k[(k[u>>2]|0)+4>>2]&1023](u);if(D)Ec[k[(k[D>>2]|0)+4>>2]&1023](D);Ec[k[(k[E>>2]|0)+4>>2]&1023](E);Tqa(n);Tqa(o);Tqa(q);q=k[g>>2]|0;if(!q){k[g>>2]=0;Tqa(s);Tqa(t);r=a;return y|0}Tqa(q);k[g>>2]=0;Tqa(s);Tqa(t);r=a;return y|0}function yaa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0,D=0,E=0;a=r;r=r+64|0;c=a+40|0;d=a+32|0;e=a+48|0;f=a;if(_p(b)|0){g=0;r=a;return g|0}if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){g=0;r=a;return g|0}h=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;i=h<<1;j=h<<2;k[e>>2]=0;l=Rqa(j>>>0>536870911?-1:j<<3)|0;if(h)WEa(l|0,0,h<<5|0)|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[f+16>>2]=0;k[f+20>>2]=0;k[f+24>>2]=0;k[f+28>>2]=0;m=ma(i,i)|0;n=Rqa(m>>>0>536870911?-1:m<<3)|0;if(m)WEa(n|0,0,m<<3|0)|0;m=i>>>0>1073741823?-1:i<<2;o=Rqa(m)|0;q=Rqa(m)|0;m=gq(b,536)|0;s=gq(b,540)|0;t=Qqa(68)|0;B=0;eb(515,t|0,m|0,s|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Sqa(t);w=v;x=u;Qb(x|0)}if(m){HN(m);Sqa(m)}if(s){HN(s);Sqa(s)}s=(h|0)>0;if(s){m=0;do{u=ed[k[(k[b>>2]|0)+156>>2]&511](b,m)|0;k[o+(m<<2)>>2]=u;u=ed[k[(k[b>>2]|0)+156>>2]&511](b,m)|0;v=m+h|0;k[o+(v<<2)>>2]=u;k[q+(m<<2)>>2]=971;k[q+(v<<2)>>2]=971;m=m+1|0}while((m|0)!=(h|0))}Fc[k[(k[b>>2]|0)+188>>2]&1023](b,e);h=Qqa(16)|0;B=0;eb(524,h|0,b|0,2);m=B;B=0;if(m&1){m=Rb()|0;v=Q;Sqa(h);w=v;x=m;Qb(x|0)}x=ed[k[(k[b>>2]|0)+324>>2]&511](b,2)|0;m=Hc[k[(k[x>>2]|0)+8>>2]&511](x)|0;if((m|0)<(Hc[k[(k[x>>2]|0)+12>>2]&511](x)|0)){v=x+8|0;w=f+24|0;u=m;do{Fc[k[(k[x>>2]|0)+24>>2]&1023](x,u);fla(h,d,x);rd[k[(k[b>>2]|0)+264>>2]&511](b,c,k[e>>2]|0,x);m=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;y=Rqa(m>>>0>536870911?-1:m<<3)|0;nd[k[(k[b>>2]|0)+336>>2]&1023](b,y,x);if((m|0)>0){z=m<<1;A=0;do{C=+p[y+(A<<3)>>3];D=A<<1;p[l+(D<<3)>>3]=C;p[l+((D|1)<<3)>>3]=0.0;E=D+z|0;p[l+(E<<3)>>3]=0.0;p[l+((E|1)<<3)>>3]=C;A=A+1|0}while((A|0)!=(m|0))}Tqa(y);C=+p[d>>3]*+p[v>>3]*+p[c>>3];p[f>>3]=C;p[w>>3]=C;ZX(l,2,i,1,f,2,2,0,l,2,i,0,n,1)|0;u=u+1|0}while((u|0)<(Hc[k[(k[x>>2]|0)+12>>2]&511](x)|0))}if(s){u=k[t+12>>2]|0;f=0;do{w=ma(f,i)|0;c=(ma(f,j)|0)+i|0;v=0;do{d=u+(c+v<<3)|0;p[d>>3]=+p[n+(v+w<<3)>>3]+ +p[d>>3];v=v+1|0}while((v|0)<(i|0));f=f+1|0}while((f|0)<(i|0));if(s){s=k[t+12>>2]|0;f=0;do{u=ma(f,i)|0;v=ma(f+i|0,j)|0;w=0;do{c=s+(w+v<<3)|0;p[c>>3]=+p[n+(w+u<<3)>>3]+ +p[c>>3];w=w+1|0}while((w|0)<(i|0));f=f+1|0}while((f|0)<(i|0))}}Gq(b,t,o,i,q);if(x)Ec[k[(k[x>>2]|0)+4>>2]&1023](x);bla(h);Sqa(h);Tqa(q);Tqa(o);o=k[e>>2]|0;if(o)Tqa(o);k[e>>2]=0;Tqa(n);Tqa(l);g=t;r=a;return g|0}function zaa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0.0,i=0,j=0.0;a=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;f=a*3|0;g=Rqa(f>>>0>536870911?-1:f<<3)|0;rd[k[(k[c>>2]|0)+340>>2]&511](c,g,d,e);if((a|0)<=0){Tqa(g);return}e=a<<1;d=a<<2;c=0;do{h=+p[g+(c<<3)>>3];f=c<<1;p[b+(f<<3)>>3]=h;p[b+((f|1)<<3)>>3]=0.0;i=f+e|0;p[b+(i<<3)>>3]=0.0;j=+p[g+(c+a<<3)>>3];p[b+((i|1)<<3)>>3]=j;i=f+d|0;p[b+(i<<3)>>3]=j*.5;p[b+((i|1)<<3)>>3]=h*.5;c=c+1|0}while((c|0)!=(a|0));Tqa(g);return}function Aaa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=Baa(0,b)|0;if(!(_p(b)|0)?Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0:0){d=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;b=I9(a,d)|0;ap(d);if(!d)e=b;else{Ec[k[(k[d>>2]|0)+4>>2]&1023](d);e=b}}else e=0;b=Qqa(68)|0;B=0;eb(515,b|0,c|0,e|0);d=B;B=0;if(d&1){d=Rb()|0;Sqa(b);Qb(d|0)}if(c){HN(c);Sqa(c)}if(!e)return b|0;HN(e);Sqa(e);return b|0}function Baa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,R=0.0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;a=r;r=r+896|0;c=a+872|0;d=a+868|0;e=a+680|0;f=a+672|0;g=a+664|0;h=a+656|0;i=a+648|0;j=a+504|0;l=a+360|0;m=a+288|0;n=a;o=a+864|0;q=a+728|0;s=a+712|0;t=a+700|0;u=a+688|0;v=m;w=v+72|0;do{k[v>>2]=0;v=v+4|0}while((v|0)<(w|0));WEa(n|0,0,288)|0;k[o>>2]=0;v=Hc[k[(k[b>>2]|0)+124>>2]&511](b)|0;w=Hc[k[(k[v>>2]|0)+432>>2]&511](v)|0;v=gq(w,536)|0;Ap(b,d,533);Uo(b,o);pp(b,i,87);x=Wo(b,674)|0;y=Wo(b,677)|0;z=Wo(b,675)|0;A=Wo(b,678)|0;C=Wo(b,679)|0;D=ed[k[(k[b>>2]|0)+308>>2]&511](b,5)|0;E=Qqa(64)|0;B=0;va(491,E|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Sqa(E);H=G;I=F;Qb(I|0)}F=Hc[k[(k[D>>2]|0)+8>>2]&511](D)|0;a:do if((F|0)<(Hc[k[(k[D>>2]|0)+12>>2]&511](D)|0)){G=b+28|0;J=D+8|0;K=m+32|0;L=m+64|0;M=F;b:while(1){Fc[k[(k[D>>2]|0)+24>>2]&1023](D,M);Fc[k[(k[D>>2]|0)+36>>2]&1023](D,E);rd[k[(k[b>>2]|0)+260>>2]&511](b,e,k[o>>2]|0,D);J9(0,j,w,2,k[o>>2]|0,E);K9(0,l,w,2,k[o>>2]|0,E);switch(k[d>>2]|0){case 537:{N=k[G>>2]|0;ad[k[(k[N>>2]|0)+116>>2]&63](N,f,3,k[o>>2]|0,D,x,y);N=k[G>>2]|0;ad[k[(k[N>>2]|0)+116>>2]&63](N,g,3,k[o>>2]|0,D,z,A);O=+p[f>>3];P=O+ +p[i>>3]*(O-+p[g>>3]);p[h>>3]=P;R=P;break}case 538:{N=k[G>>2]|0;Tc[k[(k[N>>2]|0)+108>>2]&15](N,h,3,k[o>>2]|0,D,x,y,C);R=+p[h>>3];break}default:break b}P=R*2.0*+p[J>>3]*+p[e>>3];p[m>>3]=P;p[K>>3]=P;p[L>>3]=P;ZX(j,3,6,1,m,3,3,0,l,3,6,0,n,1)|0;M=M+1|0;if((M|0)>=(Hc[k[(k[D>>2]|0)+12>>2]&511](D)|0))break a}M=q+56|0;L=q+4|0;k[q>>2]=27524;k[M>>2]=27544;B=0;wa(508,q+56|0,L|0);K=B;B=0;if(K&1){K=Rb()|0;S=Q;T=K;vva(M);Qb(T|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[M>>2]=27488;B=0;va(448,L|0);K=B;B=0;do if(K&1){J=Rb()|0;U=Q;V=J}else{k[L>>2]=27560;J=q+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,L|0,c|0);G=B;B=0;if(G&1){G=Rb()|0;N=Q;Yua(c);Yua(J);Ava(L);U=N;V=G;break}Yua(c);B=0;G=Ia(40,q|0,128699,14)|0;N=B;B=0;c:do if((((((!(N&1)?(B=0,W=Xa(242,G|0,k[d>>2]|0)|0,X=B,B=0,!(X&1)):0)?(B=0,X=Ia(40,W|0,144166,2)|0,W=B,B=0,!(W&1)):0)?(B=0,W=ya(427,k[d>>2]|0)|0,Y=B,B=0,!(Y&1)):0)?(Y=Lta(W)|0,B=0,Z=Ia(40,X|0,W|0,Y|0)|0,Y=B,B=0,!(Y&1)):0)?(B=0,Y=Ia(40,Z|0,144169,19)|0,Z=B,B=0,!(Z&1)):0)?(B=0,Xa(239,Y|0,0)|0,Y=B,B=0,!(Y&1)):0){Y=Ab(20)|0;B=0;eb(502,s|0,127077,81);Z=B;B=0;do if(!(Z&1)){B=0;eb(502,t|0,128714,25);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Yua(s);_=X;$=W;break}B=0;wa(510,u|0,L|0);W=B;B=0;if(W&1){W=Rb()|0;aa=Q;ba=W;ca=1}else{B=0;ua(163,Y|0,s|0,t|0,5974,u|0);W=B;B=0;if(W&1)da=1;else{B=0;eb(503,Y|0,1240,229);B=0;da=0}W=Rb()|0;X=Q;Yua(u);aa=X;ba=W;ca=da}Yua(t);Yua(s);if(ca){_=aa;$=ba}else{ea=aa;fa=ba;break c}}else{W=Rb()|0;_=Q;$=W}while(0);zb(Y|0);ea=_;fa=$}else ga=29;while(0);if((ga|0)==29){G=Rb()|0;ea=Q;fa=G}k[q>>2]=27468;k[M>>2]=27488;k[L>>2]=27560;Yua(J);Ava(L);vva(M);H=ea;I=fa;Qb(I|0)}while(0);S=U;T=V;vva(M);Qb(T|0)}while(0);T=k[v+12>>2]|0;V=0;do{U=V*6|0;S=T+(U<<3)|0;p[S>>3]=+p[n+(V*48|0)>>3]+ +p[S>>3];S=T+((U|1)<<3)|0;p[S>>3]=+p[n+(V*48|0)+8>>3]+ +p[S>>3];S=T+(U+2<<3)|0;p[S>>3]=+p[n+(V*48|0)+16>>3]+ +p[S>>3];S=T+(U+3<<3)|0;p[S>>3]=+p[n+(V*48|0)+24>>3]+ +p[S>>3];S=T+(U+4<<3)|0;p[S>>3]=+p[n+(V*48|0)+32>>3]+ +p[S>>3];S=T+(U+5<<3)|0;p[S>>3]=+p[n+(V*48|0)+40>>3]+ +p[S>>3];V=V+1|0}while((V|0)!=6);Fq(w,v,971);V=k[o>>2]|0;if(V)Tqa(V);k[o>>2]=0;o=k[w+28>>2]|0;if(o)Ec[k[(k[o>>2]|0)+4>>2]&1023](o);Ec[k[(k[w>>2]|0)+4>>2]&1023](w);Ec[k[(k[E>>2]|0)+4>>2]&1023](E);if(!D){r=a;return v|0}Ec[k[(k[D>>2]|0)+4>>2]&1023](D);r=a;return v|0}function Caa(a,b){a=a|0;b=b|0;var c=0,d=0;a=Daa(0,b)|0;c=Eaa(0,b)|0;b=Qqa(24)|0;B=0;eb(516,b|0,a|0,c|0);d=B;B=0;if(d&1){d=Rb()|0;Sqa(b);Qb(d|0)}if(a){SN(a);Sqa(a)}if(!c)return b|0;SN(c);Sqa(c);return b|0}function Daa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;a=r;r=r+256|0;c=a+244|0;d=a+232|0;e=a+224|0;f=a+216|0;g=a+192|0;h=a+240|0;i=a+144|0;j=a;k[h>>2]=0;Ap(b,c,533);if((k[c>>2]|0)!=541){l=0;r=a;return l|0}c=Hc[k[(k[b>>2]|0)+396>>2]&511](b)|0;m=Hc[k[(k[b>>2]|0)+392>>2]&511](b)|0;n=m+c|0;o=n>>>0>1073741823?-1:n<<2;q=Rqa(o)|0;s=Rqa(o)|0;if((c|0)>0){o=0;do{k[q+(o<<2)>>2]=972;t=ed[k[(k[b>>2]|0)+156>>2]&511](b,o)|0;k[s+(o<<2)>>2]=t;o=o+1|0}while((o|0)!=(c|0))}if((m|0)>0){o=0;do{t=o+c|0;k[q+(t<<2)>>2]=653;u=ed[k[(k[b>>2]|0)+156>>2]&511](b,t)|0;k[s+(t<<2)>>2]=u;o=o+1|0}while((o|0)!=(m|0))}m=iq(b,543)|0;Uo(b,h);pp(b,f,85);o=Wo(b,674)|0;u=Wo(b,677)|0;t=Wo(b,679)|0;v=Wo(b,681)|0;w=ed[k[(k[b>>2]|0)+308>>2]&511](b,5)|0;x=Hc[k[(k[w>>2]|0)+8>>2]&511](w)|0;if((x|0)<(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0)){y=b+28|0;z=w+8|0;A=m+4|0;B=g+8|0;C=g+16|0;D=c*3|0;c=x;do{Fc[k[(k[w>>2]|0)+24>>2]&1023](w,c);rd[k[(k[b>>2]|0)+260>>2]&511](b,e,k[h>>2]|0,w);nd[k[(k[b>>2]|0)+356>>2]&1023](b,i,w);rd[k[(k[b>>2]|0)+360>>2]&511](b,j,k[h>>2]|0,w);x=k[y>>2]|0;Tc[k[(k[x>>2]|0)+108>>2]&15](x,d,3,k[h>>2]|0,w,o,u,t);rd[k[(k[v>>2]|0)+60>>2]&511](v,g,k[h>>2]|0,w);x=k[A>>2]|0;E=0;do{F=j+96+(E<<3)|0;G=E*3|0;H=x+(G<<3)|0;p[H>>3]=+p[H>>3]-+p[e>>3]*+p[z>>3]*+p[d>>3]*+p[g>>3]*+p[F>>3];H=x+(G+1<<3)|0;p[H>>3]=+p[H>>3]-+p[e>>3]*+p[z>>3]*+p[d>>3]*+p[B>>3]*+p[F>>3];H=x+(G+2<<3)|0;p[H>>3]=+p[H>>3]-+p[e>>3]*+p[z>>3]*+p[d>>3]*(+p[g>>3]*+p[j+(E<<3)>>3]+ +p[B>>3]*+p[j+48+(E<<3)>>3]+ +p[C>>3]*2.0*+p[F>>3]);F=x+(E+D<<3)|0;p[F>>3]=+p[e>>3]*+p[z>>3]*+p[f>>3]*+p[C>>3]*+p[i+(E<<3)>>3]+ +p[F>>3];E=E+1|0}while((E|0)!=6);c=c+1|0}while((c|0)<(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0))}yq(b,m,s,n,q);Tqa(q);Tqa(s);s=k[h>>2]|0;if(s)Tqa(s);k[h>>2]=0;Ec[k[(k[w>>2]|0)+4>>2]&1023](w);l=m;r=a;return l|0}function Eaa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0,N=0;a=r;r=r+160|0;c=a+144|0;d=a+128|0;e=a+120|0;f=a+96|0;g=a+88|0;h=a+80|0;i=a+72|0;j=a+48|0;l=a+140|0;m=a+136|0;n=a;k[l>>2]=0;k[m>>2]=0;if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){o=0;r=a;return o|0}if(_p(b)|0){o=0;r=a;return o|0}Ap(b,c,533);if((k[c>>2]|0)!=541){o=0;r=a;return o|0}c=Hc[k[(k[b>>2]|0)+396>>2]&511](b)|0;q=Hc[k[(k[b>>2]|0)+392>>2]&511](b)|0;s=q+c|0;t=s>>>0>1073741823?-1:s<<2;u=Rqa(t)|0;v=Rqa(t)|0;if((c|0)>0){t=0;do{k[u+(t<<2)>>2]=972;w=ed[k[(k[b>>2]|0)+156>>2]&511](b,t)|0;k[v+(t<<2)>>2]=w;t=t+1|0}while((t|0)!=(c|0))}if((q|0)>0){t=0;do{w=t+c|0;k[u+(w<<2)>>2]=653;x=ed[k[(k[b>>2]|0)+156>>2]&511](b,w)|0;k[v+(w<<2)>>2]=x;t=t+1|0}while((t|0)!=(q|0))}q=iq(b,543)|0;Uo(b,m);Fc[k[(k[b>>2]|0)+188>>2]&1023](b,l);pp(b,e,85);e=Wo(b,674)|0;t=Wo(b,677)|0;c=Wo(b,679)|0;x=Wo(b,681)|0;w=Qqa(16)|0;B=0;eb(524,w|0,b|0,3);y=B;B=0;if(y&1){y=Rb()|0;Sqa(w);Qb(y|0)}y=ed[k[(k[b>>2]|0)+324>>2]&511](b,2)|0;z=Hc[k[(k[y>>2]|0)+8>>2]&511](y)|0;if((z|0)<(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0)){A=b+28|0;C=y+8|0;D=f+16|0;E=j+16|0;F=q+4|0;G=f+8|0;H=j+8|0;I=z;do{Fc[k[(k[y>>2]|0)+24>>2]&1023](y,I);rd[k[(k[b>>2]|0)+264>>2]&511](b,d,k[l>>2]|0,y);nd[k[(k[b>>2]|0)+356>>2]&1023](b,n,y);nd[k[(k[x>>2]|0)+48>>2]&1023](x,h,y);rd[k[(k[x>>2]|0)+60>>2]&511](x,j,k[m>>2]|0,y);nd[k[(k[b>>2]|0)+380>>2]&1023](b,f,k[l>>2]|0);z=k[A>>2]|0;Tc[k[(k[z>>2]|0)+108>>2]&15](z,g,3,k[m>>2]|0,y,e,t,c);fla(w,i,y);z=k[F>>2]|0;J=0;do{K=+p[f>>3];L=n+(J<<3)|0;M=J*3|0;N=z+(M<<3)|0;p[N>>3]=+p[N>>3]+ +p[L>>3]*(+p[d>>3]*+p[C>>3]*(+p[i>>3]*+p[h>>3]*K*+p[D>>3]+K*(+p[g>>3]*2.0*+p[E>>3])));K=+p[G>>3];N=z+(M+1<<3)|0;p[N>>3]=+p[N>>3]+ +p[L>>3]*(+p[d>>3]*+p[C>>3]*(+p[i>>3]*+p[h>>3]*K*+p[D>>3]+K*(+p[g>>3]*2.0*+p[E>>3])));N=z+(M+2<<3)|0;p[N>>3]=+p[N>>3]+ +p[L>>3]*(+p[g>>3]*(+p[d>>3]*+p[C>>3]*2.0)*(+p[j>>3]*+p[f>>3]+ +p[H>>3]*+p[G>>3]+ +p[E>>3]*+p[D>>3]));J=J+1|0}while((J|0)!=3);I=I+1|0}while((I|0)<(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0))}yq(b,q,v,s,u);Tqa(u);Tqa(v);v=k[m>>2]|0;if(v)Tqa(v);k[m>>2]=0;m=k[l>>2]|0;if(m)Tqa(m);k[l>>2]=0;if(y)Ec[k[(k[y>>2]|0)+4>>2]&1023](y);bla(w);Sqa(w);o=q;r=a;return o|0}function Faa(a,b){a=a|0;b=b|0;var c=0,d=0;a=Gaa(0,b)|0;c=Haa(0,b)|0;b=Qqa(24)|0;B=0;eb(516,b|0,a|0,c|0);d=B;B=0;if(d&1){d=Rb()|0;Sqa(b);Qb(d|0)}if(a){SN(a);Sqa(a)}if(!c)return b|0;SN(c);Sqa(c);return b|0}function Gaa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;a=r;r=r+256|0;c=a+244|0;d=a+232|0;e=a+224|0;f=a+216|0;g=a+192|0;h=a+240|0;i=a+144|0;j=a;k[h>>2]=0;Ap(b,c,533);if((k[c>>2]|0)!=538){l=0;r=a;return l|0}c=Hc[k[(k[b>>2]|0)+396>>2]&511](b)|0;m=Hc[k[(k[b>>2]|0)+392>>2]&511](b)|0;n=m+c|0;o=n>>>0>1073741823?-1:n<<2;q=Rqa(o)|0;s=Rqa(o)|0;if((c|0)>0){o=0;do{k[q+(o<<2)>>2]=972;t=ed[k[(k[b>>2]|0)+156>>2]&511](b,o)|0;k[s+(o<<2)>>2]=t;o=o+1|0}while((o|0)!=(c|0))}if((m|0)>0){o=0;do{t=o+c|0;k[q+(t<<2)>>2]=653;u=ed[k[(k[b>>2]|0)+156>>2]&511](b,t)|0;k[s+(t<<2)>>2]=u;o=o+1|0}while((o|0)!=(m|0))}m=iq(b,543)|0;Uo(b,h);pp(b,f,85);o=Wo(b,674)|0;u=Wo(b,677)|0;t=Wo(b,679)|0;v=Wo(b,680)|0;w=ed[k[(k[b>>2]|0)+308>>2]&511](b,5)|0;x=Hc[k[(k[w>>2]|0)+8>>2]&511](w)|0;if((x|0)<(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0)){y=b+28|0;z=w+8|0;A=m+4|0;B=g+8|0;C=g+16|0;D=c*3|0;c=x;do{Fc[k[(k[w>>2]|0)+24>>2]&1023](w,c);rd[k[(k[b>>2]|0)+260>>2]&511](b,e,k[h>>2]|0,w);nd[k[(k[b>>2]|0)+356>>2]&1023](b,i,w);rd[k[(k[b>>2]|0)+360>>2]&511](b,j,k[h>>2]|0,w);rd[k[(k[v>>2]|0)+60>>2]&511](v,g,k[h>>2]|0,w);x=k[y>>2]|0;Tc[k[(k[x>>2]|0)+108>>2]&15](x,d,3,k[h>>2]|0,w,o,u,t);x=k[A>>2]|0;E=0;do{F=j+96+(E<<3)|0;G=E*3|0;H=x+(G<<3)|0;p[H>>3]=+p[H>>3]-+p[e>>3]*+p[z>>3]*+p[d>>3]*+p[g>>3]*+p[F>>3];H=x+(G+1<<3)|0;p[H>>3]=+p[H>>3]-+p[e>>3]*+p[z>>3]*+p[d>>3]*+p[B>>3]*+p[F>>3];H=x+(G+2<<3)|0;p[H>>3]=+p[H>>3]-+p[e>>3]*+p[z>>3]*+p[d>>3]*(+p[g>>3]*+p[j+(E<<3)>>3]+ +p[B>>3]*+p[j+48+(E<<3)>>3]+ +p[C>>3]*2.0*+p[F>>3]);F=x+(E+D<<3)|0;p[F>>3]=+p[e>>3]*+p[z>>3]*+p[f>>3]*+p[C>>3]*+p[i+(E<<3)>>3]+ +p[F>>3];E=E+1|0}while((E|0)!=6);c=c+1|0}while((c|0)<(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0))}yq(b,m,s,n,q);Tqa(q);Tqa(s);s=k[h>>2]|0;if(s)Tqa(s);k[h>>2]=0;Ec[k[(k[w>>2]|0)+4>>2]&1023](w);l=m;r=a;return l|0}function Haa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0,N=0;a=r;r=r+160|0;c=a+144|0;d=a+128|0;e=a+120|0;f=a+96|0;g=a+88|0;h=a+80|0;i=a+72|0;j=a+48|0;l=a;m=a+140|0;n=a+136|0;k[m>>2]=0;k[n>>2]=0;if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){o=0;r=a;return o|0}if(_p(b)|0){o=0;r=a;return o|0}Ap(b,c,533);if((k[c>>2]|0)!=538){o=0;r=a;return o|0}c=Hc[k[(k[b>>2]|0)+396>>2]&511](b)|0;q=Hc[k[(k[b>>2]|0)+392>>2]&511](b)|0;s=q+c|0;t=s>>>0>1073741823?-1:s<<2;u=Rqa(t)|0;v=Rqa(t)|0;if((c|0)>0){t=0;do{k[u+(t<<2)>>2]=972;w=ed[k[(k[b>>2]|0)+156>>2]&511](b,t)|0;k[v+(t<<2)>>2]=w;t=t+1|0}while((t|0)!=(c|0))}if((q|0)>0){t=0;do{w=t+c|0;k[u+(w<<2)>>2]=653;x=ed[k[(k[b>>2]|0)+156>>2]&511](b,w)|0;k[v+(w<<2)>>2]=x;t=t+1|0}while((t|0)!=(q|0))}q=iq(b,543)|0;Uo(b,n);Fc[k[(k[b>>2]|0)+188>>2]&1023](b,m);pp(b,e,85);e=Wo(b,674)|0;t=Wo(b,677)|0;c=Wo(b,679)|0;x=Wo(b,680)|0;w=Qqa(16)|0;B=0;eb(524,w|0,b|0,3);y=B;B=0;if(y&1){y=Rb()|0;Sqa(w);Qb(y|0)}y=ed[k[(k[b>>2]|0)+324>>2]&511](b,2)|0;z=Hc[k[(k[y>>2]|0)+8>>2]&511](y)|0;if((z|0)<(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0)){A=b+28|0;C=y+8|0;D=f+16|0;E=j+16|0;F=q+4|0;G=f+8|0;H=j+8|0;I=z;do{Fc[k[(k[y>>2]|0)+24>>2]&1023](y,I);rd[k[(k[b>>2]|0)+264>>2]&511](b,d,k[m>>2]|0,y);nd[k[(k[b>>2]|0)+356>>2]&1023](b,l,y);nd[k[(k[x>>2]|0)+48>>2]&1023](x,h,y);rd[k[(k[x>>2]|0)+60>>2]&511](x,j,k[n>>2]|0,y);nd[k[(k[b>>2]|0)+380>>2]&1023](b,f,k[m>>2]|0);z=k[A>>2]|0;Tc[k[(k[z>>2]|0)+108>>2]&15](z,g,3,k[n>>2]|0,y,e,t,c);fla(w,i,y);z=k[F>>2]|0;J=0;do{K=+p[f>>3];L=l+(J<<3)|0;M=J*3|0;N=z+(M<<3)|0;p[N>>3]=+p[N>>3]+ +p[L>>3]*(+p[d>>3]*+p[C>>3]*(+p[i>>3]*+p[h>>3]*K*+p[D>>3]+K*(+p[g>>3]*2.0*+p[E>>3])));K=+p[G>>3];N=z+(M+1<<3)|0;p[N>>3]=+p[N>>3]+ +p[L>>3]*(+p[d>>3]*+p[C>>3]*(+p[i>>3]*+p[h>>3]*K*+p[D>>3]+K*(+p[g>>3]*2.0*+p[E>>3])));N=z+(M+2<<3)|0;p[N>>3]=+p[N>>3]+ +p[L>>3]*(+p[g>>3]*(+p[d>>3]*+p[C>>3]*2.0)*(+p[j>>3]*+p[f>>3]+ +p[H>>3]*+p[G>>3]+ +p[E>>3]*+p[D>>3]));J=J+1|0}while((J|0)!=3);I=I+1|0}while((I|0)<(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0))}yq(b,q,v,s,u);Tqa(u);u=k[n>>2]|0;if(u)Tqa(u);k[n>>2]=0;n=k[m>>2]|0;if(n)Tqa(n);k[m>>2]=0;Tqa(v);if(y)Ec[k[(k[y>>2]|0)+4>>2]&1023](y);bla(w);Sqa(w);o=q;r=a;return o|0}function Iaa(a){a=a|0;Sqa(a);return}function Jaa(a,b,c){a=a|0;b=b|0;c=c|0;return}function Kaa(a,b,c){a=a|0;b=b|0;c=c|0;return}function Laa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;a=r;r=r+192|0;d=a+180|0;e=a+176|0;f=a+40|0;g=a+24|0;h=a+12|0;i=a;Fka(c,e,128764);switch(k[e>>2]|0){case 758:{j=739;hoa(b,c,524,j,534);r=a;return}case 754:{j=738;hoa(b,c,524,j,534);r=a;return}default:{a=f+56|0;j=f+4|0;k[f>>2]=27524;k[a>>2]=27544;B=0;wa(508,f+56|0,j|0);c=B;B=0;if(c&1){c=Rb()|0;l=Q;m=c;vva(a);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[a>>2]=27488;B=0;va(448,j|0);c=B;B=0;do if(c&1){b=Rb()|0;n=Q;o=b}else{k[j>>2]=27560;b=f+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,j|0,d|0);e=B;B=0;if(e&1){e=Rb()|0;p=Q;Yua(d);Yua(b);Ava(j);n=p;o=e;break}Yua(d);B=0;e=Ia(40,f|0,128786,26)|0;p=B;B=0;if(!(p&1)?(B=0,Xa(239,e|0,0)|0,e=B,B=0,!(e&1)):0){e=Ab(20)|0;B=0;eb(502,g|0,128813,81);p=B;B=0;do if(!(p&1)){B=0;eb(502,h|0,145111,11);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(g);t=s;u=q;break}B=0;wa(510,i|0,j|0);q=B;B=0;if(q&1){q=Rb()|0;v=Q;w=q;x=1}else{B=0;ua(163,e|0,g|0,h|0,22,i|0);q=B;B=0;if(q&1)y=1;else{B=0;eb(503,e|0,1240,229);B=0;y=0}q=Rb()|0;s=Q;Yua(i);v=s;w=q;x=y}Yua(h);Yua(g);if(x){t=v;u=w}else{z=v;A=w;k[f>>2]=27468;k[a>>2]=27488;k[j>>2]=27560;Yua(b);Ava(j);vva(a);Qb(A|0)}}else{q=Rb()|0;t=Q;u=q}while(0);zb(e|0);z=t;A=u;k[f>>2]=27468;k[a>>2]=27488;k[j>>2]=27560;Yua(b);Ava(j);vva(a);Qb(A|0)}p=Rb()|0;z=Q;A=p;k[f>>2]=27468;k[a>>2]=27488;k[j>>2]=27560;Yua(b);Ava(j);vva(a);Qb(A|0)}while(0);l=n;m=o;vva(a);Qb(m|0)}}}function Maa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function Naa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;a=r;r=r+192|0;f=a+180|0;g=a+176|0;h=a+40|0;j=a+24|0;l=a+12|0;m=a;Fka(c,g,128764);switch(k[g>>2]|0){case 754:{n=738;break}case 758:{n=739;break}default:{g=h+56|0;o=h+4|0;k[h>>2]=27524;k[g>>2]=27544;B=0;wa(508,h+56|0,o|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;s=p;vva(g);Qb(s|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[g>>2]=27488;B=0;va(448,o|0);p=B;B=0;do if(p&1){t=Rb()|0;u=Q;v=t}else{k[o>>2]=27560;t=h+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,o|0,f|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(f);Yua(t);Ava(o);u=x;v=w;break}Yua(f);B=0;w=Ia(40,h|0,128786,26)|0;x=B;B=0;if(!(x&1)?(B=0,Xa(239,w|0,0)|0,w=B,B=0,!(w&1)):0){w=Ab(20)|0;B=0;eb(502,j|0,128813,81);x=B;B=0;do if(!(x&1)){B=0;eb(502,l|0,136133,14);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(j);A=z;C=y;break}B=0;wa(510,m|0,o|0);y=B;B=0;if(y&1){y=Rb()|0;D=Q;E=y;F=1}else{B=0;ua(163,w|0,j|0,l|0,39,m|0);y=B;B=0;if(y&1)G=1;else{B=0;eb(503,w|0,1240,229);B=0;G=0}y=Rb()|0;z=Q;Yua(m);D=z;E=y;F=G}Yua(l);Yua(j);if(F){A=D;C=E}else{H=D;I=E;k[h>>2]=27468;k[g>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(g);Qb(I|0)}}else{y=Rb()|0;A=Q;C=y}while(0);zb(w|0);H=A;I=C;k[h>>2]=27468;k[g>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(g);Qb(I|0)}x=Rb()|0;H=Q;I=x;k[h>>2]=27468;k[g>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(g);Qb(I|0)}while(0);q=u;s=v;vva(g);Qb(s|0)}}s=c+56|0;g=k[s>>2]|0;if((g|0)>0){v=c+32|0;u=g;g=0;q=0;while(1){if(!(i[(k[v>>2]|0)+q>>0]|0)){J=u;K=g}else{I=qh(b,g)|0;Uc[k[(k[I>>2]|0)+480>>2]&63](I,q,c,d,e,n);J=k[s>>2]|0;K=g+1|0}q=q+1|0;if((q|0)>=(J|0))break;else{u=J;g=K}}}Yka(c,b,135923,674,0.0);Yka(c,b,135944,677,0.0);if((k[c+40>>2]|0)!=302){Yka(c,b,135039,653,0.0);woa(b,0.0,706);r=a;return}Yka(c,b,135096,679,0.0);Yka(c,b,135039,653,0.0);woa(b,0.0,706);r=a;return}function Oaa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;YN(b,Ika(c,128895,917)|0);YN(b,Ika(c,128937,919)|0);return}function Paa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,128813,81);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,63,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Qaa(a,b){a=a|0;b=b|0;return 0}function Raa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,128813,81);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,70,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Saa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0.0,i=0;a=r;r=r+16|0;c=a;k[c>>2]=0;Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;d=gq(b,534)|0;Uo(b,c);e=Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;if((e|0)>0){f=d+12|0;g=0;do{h=1.0/+(ed[k[(k[b>>2]|0)+508>>2]&511](b,g)|0);i=(ma(g,e)|0)+g|0;p[(k[f>>2]|0)+(i<<3)>>3]=h;g=g+1|0}while((g|0)!=(e|0))}e=k[c>>2]|0;if(!e){r=a;return d|0}Tqa(e);r=a;return d|0}function Taa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0,D=0;a=r;r=r+32|0;c=a+20|0;d=a+8|0;e=a;f=a+16|0;k[f>>2]=0;g=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;cp(b,c,299);pp(b,e,917);Uo(b,f);h=iq(b,534)|0;i=Rqa(g>>>0>536870911?-1:g<<3)|0;j=k[c>>2]|0;l=j>>>0>536870911?-1:j<<3;j=Rqa(l)|0;m=Rqa(l)|0;n=Rqa(l)|0;l=Wo(b,674)|0;o=Wo(b,677)|0;if((k[c>>2]|0)==3)q=Wo(b,679)|0;else q=0;s=ed[k[(k[b>>2]|0)+308>>2]&511](b,5)|0;t=Hc[k[(k[s>>2]|0)+8>>2]&511](s)|0;a:do if((t|0)<(Hc[k[(k[s>>2]|0)+12>>2]&511](s)|0)){u=m+8|0;v=n+16|0;w=s+8|0;x=h+4|0;if((g|0)>0)y=t;else{z=t;while(1){Fc[k[(k[s>>2]|0)+24>>2]&1023](s,z);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[f>>2]|0,s);nd[k[(k[b>>2]|0)+336>>2]&1023](b,i,s);rd[k[(k[l>>2]|0)+60>>2]&511](l,j,k[f>>2]|0,s);rd[k[(k[o>>2]|0)+60>>2]&511](o,m,k[f>>2]|0,s);if((k[c>>2]|0)==3)rd[k[(k[q>>2]|0)+60>>2]&511](q,n,k[f>>2]|0,s);z=z+1|0;if((z|0)>=(Hc[k[(k[s>>2]|0)+12>>2]&511](s)|0))break a}}do{Fc[k[(k[s>>2]|0)+24>>2]&1023](s,y);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[f>>2]|0,s);nd[k[(k[b>>2]|0)+336>>2]&1023](b,i,s);rd[k[(k[l>>2]|0)+60>>2]&511](l,j,k[f>>2]|0,s);rd[k[(k[o>>2]|0)+60>>2]&511](o,m,k[f>>2]|0,s);if((k[c>>2]|0)==3){rd[k[(k[q>>2]|0)+60>>2]&511](q,n,k[f>>2]|0,s);A=+p[j>>3]+ +p[u>>3];if((k[c>>2]|0)==3)B=A+ +p[v>>3];else B=A}else B=+p[j>>3]+ +p[u>>3];z=k[x>>2]|0;C=0;do{D=z+(C<<3)|0;p[D>>3]=+p[D>>3]-B*+p[e>>3]*+p[d>>3]*+p[w>>3]*+p[i+(C<<3)>>3];C=C+1|0}while((C|0)!=(g|0));y=y+1|0}while((y|0)<(Hc[k[(k[s>>2]|0)+12>>2]&511](s)|0))}while(0);Ec[k[(k[s>>2]|0)+4>>2]&1023](s);s=k[f>>2]|0;if(!s){k[f>>2]=0;Tqa(i);Tqa(j);Tqa(m);Tqa(n);r=a;return h|0}Tqa(s);k[f>>2]=0;Tqa(i);Tqa(j);Tqa(m);Tqa(n);r=a;return h|0}function Uaa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,128813,81);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,185,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Vaa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,128813,81);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,188,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function Waa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;a=r;r=r+208|0;d=a+184|0;e=a+180|0;f=a+176|0;g=a+40|0;h=a+24|0;i=a+12|0;j=a;k[f>>2]=0;l=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;switch(k[c+44>>2]|0){case 738:{ed[k[(k[c>>2]|0)+168>>2]&511](c,742)|0;break}case 739:{ed[k[(k[c>>2]|0)+168>>2]&511](c,742)|0;break}default:{m=g+56|0;n=g+4|0;k[g>>2]=27524;k[m>>2]=27544;B=0;wa(508,g+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;q=Q;s=o;vva(m);Qb(s|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){t=Rb()|0;u=Q;v=t}else{k[n>>2]=27560;t=g+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[g+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,n|0,d|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(d);Yua(t);Ava(n);u=x;v=w;break}Yua(d);B=0;w=Ia(40,g|0,128984,32)|0;x=B;B=0;if(!(x&1)?(B=0,Xa(239,w|0,0)|0,w=B,B=0,!(w&1)):0){w=Ab(20)|0;B=0;eb(502,h|0,128813,81);x=B;B=0;do if(!(x&1)){B=0;eb(502,i|0,137199,23);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(h);A=y;C=z;break}B=0;wa(510,j|0,n|0);z=B;B=0;if(z&1){z=Rb()|0;D=z;E=Q;F=1}else{B=0;ua(163,w|0,h|0,i|0,202,j|0);z=B;B=0;if(z&1)G=1;else{B=0;eb(503,w|0,1240,229);B=0;G=0}z=Rb()|0;y=Q;Yua(j);D=z;E=y;F=G}Yua(i);Yua(h);if(F){A=D;C=E}else{H=D;I=E;k[g>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);Qb(H|0)}}else{y=Rb()|0;A=y;C=Q}while(0);zb(w|0);H=A;I=C;k[g>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);Qb(H|0)}x=Rb()|0;H=x;I=Q;k[g>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);Qb(H|0)}while(0);q=u;s=v;vva(m);Qb(s|0)}}cp(c,e,299);rp(c,f,534,943);s=l>>>0>536870911?-1:l<<3;m=Rqa(s)|0;v=Rqa(s)|0;Wo(c,674)|0;Wo(c,677)|0;if((k[e>>2]|0)==3)Wo(c,679)|0;vp(c,v,653);if((l|0)>0){e=k[f>>2]|0;s=0;do{p[m+(s<<3)>>3]=+p[v+(s<<3)>>3]+ +p[b+(k[e+(s<<2)>>2]<<3)>>3];s=s+1|0}while((s|0)!=(l|0))}l=k[c>>2]|0;s=k[l+48>>2]|0;e=Hc[k[l+128>>2]&511](c)|0;rd[s&511](c,653,m,e);Hc[k[(k[c>>2]|0)+248>>2]&511](c)|0;Tqa(m);Tqa(v);v=k[f>>2]|0;if(!v){r=a;return}Tqa(v);r=a;return}function Xaa(a,b){a=a|0;b=b|0;return}function Yaa(a){a=a|0;Sqa(a);return}function Zaa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;a=r;r=r+48|0;d=a+16|0;e=a;f=a+32|0;g=a+31|0;h=a+30|0;j=a+29|0;l=a+28|0;zka(c,f,129324);zka(c,g,129346);zka(c,h,129368);zka(c,j,129391);zka(c,l,132257);if(!(i[f>>0]|0)){r=a;return}a:do if(((i[g>>0]|0)!=0?2.0:1.0)+((i[h>>0]|0)!=0?1.0:0.0)+((i[j>>0]|0)!=0?1.0:0.0)+((i[l>>0]|0)!=0?1.0:0.0)>1.0){k[e>>2]=129044;k[e+4>>2]=129067;k[e+8>>2]=129588;Ska(c,3,e);f=c+52|0;if((k[f>>2]|0)>0){m=c+36|0;n=c+108|0;o=c+100|0;q=0;s=0;b:while(1){do if(k[(k[m>>2]|0)+(s<<2)>>2]|0){u=(Jka(c,129588)|0)+(s<<3)|0;if((~~+p[u>>3]|0)!=535){u=Qqa(32)|0;v=s+1|0;B=0;Pa(1,u|0,q+1+(k[n>>2]|0)|0,v+(k[o>>2]|0)|0,0,0.0,498);w=B;B=0;if(w&1){x=u;y=11;break b}ih(b,u)|0;u=Qqa(32)|0;w=q+2|0;B=0;Pa(1,u|0,w+(k[n>>2]|0)|0,v+(k[o>>2]|0)|0,1,0.0,498);v=B;B=0;if(v&1){z=u;y=12;break b}ih(b,u)|0;A=w;break}w=(Jka(c,129044)|0)+(s<<3)|0;C=+$(+(+p[w>>3]));p[t>>3]=C;w=k[t+4>>2]|0;if(w>>>0>2146435072|(w|0)==2146435072&(k[t>>2]|0)>>>0>0)D=q;else{w=Qqa(32)|0;u=k[n>>2]|0;v=k[o>>2]|0;B=0;E=Xa(246,c|0,129044)|0;F=B;B=0;if(F&1){G=w;y=17;break b}F=q+1|0;B=0;Pa(1,w|0,F+u|0,s+1+v|0,0,+(+p[E+(s<<3)>>3]),498);E=B;B=0;if(E&1){G=w;y=17;break b}ih(b,w)|0;D=F}F=(Jka(c,129067)|0)+(s<<3)|0;C=+$(+(+p[F>>3]));p[t>>3]=C;F=k[t+4>>2]|0;if(F>>>0>2146435072|(F|0)==2146435072&(k[t>>2]|0)>>>0>0)A=D;else{F=Qqa(32)|0;w=k[n>>2]|0;E=k[o>>2]|0;B=0;v=Xa(246,c|0,129067)|0;u=B;B=0;if(u&1){H=F;y=22;break b}u=D+1|0;B=0;Pa(1,F|0,u+w|0,s+1+E|0,1,+(+p[v+(s<<3)>>3]),498);v=B;B=0;if(v&1){H=F;y=22;break b}ih(b,F)|0;A=u}}else A=q;while(0);s=s+1|0;if((s|0)>=(k[f>>2]|0))break a;else q=A}if((y|0)==11){q=Rb()|0;f=Q;Sqa(x);I=f;J=q;Qb(J|0)}else if((y|0)==12){q=Rb()|0;f=Q;Sqa(z);I=f;J=q;Qb(J|0)}else if((y|0)==17){q=Rb()|0;f=Q;Sqa(G);I=f;J=q;Qb(J|0)}else if((y|0)==22){q=Rb()|0;f=Q;Sqa(H);I=f;J=q;Qb(J|0)}}}else{qoa(b,c,129044,498,738,0);qoa(b,c,129067,498,738,1)}while(0);k[d>>2]=129044;k[d+4>>2]=129067;k[d+8>>2]=129588;Lka(c,3,d);r=a;return}function _aa(a,b,c){a=a|0;b=b|0;c=c|0;return}function $aa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0;a=r;r=r+64|0;d=a+24|0;e=a+16|0;f=a;g=a+48|0;zka(c,g,129324);if(!(i[g>>0]|0)){r=a;return}k[f>>2]=129090;k[f+4>>2]=129435;k[f+8>>2]=129588;k[f+12>>2]=129116;Ska(c,4,f);if((k[c+40>>2]|0)!=300){k[e>>2]=136615;k[e+4>>2]=136636;Ska(c,2,e)}e=c+52|0;f=k[e>>2]|0;a:do if((f|0)>0){g=c+36|0;h=c+100|0;j=f;l=0;m=0;while(1){if(!(k[(k[g>>2]|0)+(l<<2)>>2]|0)){n=l+1|0;o=j;q=m}else{s=Qqa(144)|0;t=k[h>>2]|0;B=0;u=Xa(246,c|0,129588)|0;v=B;B=0;if(v&1){w=s;x=13;break}v=l+1|0;B=0;Ka(13,s|0,v+t|0,l|0,m|0,l|0,c|0,498,~~+p[u+(l<<3)>>3]|0);u=B;B=0;if(u&1){w=s;x=13;break}u=(Jka(c,129588)|0)+(l<<3)|0;if((~~+p[u>>3]|0)!=535)$n(s);ih(b,s)|0;n=v;o=k[e>>2]|0;q=m+1|0}if((n|0)<(o|0)){j=o;l=n;m=q}else break a}if((x|0)==13){m=Rb()|0;Sqa(w);Qb(m|0)}}while(0);k[d>>2]=136615;k[d+4>>2]=136636;k[d+8>>2]=129090;k[d+12>>2]=129435;k[d+16>>2]=129588;k[d+20>>2]=129116;Lka(c,6,d);r=a;return}function aba(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 2}function bba(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;a=r;r=r+208|0;f=a+16|0;g=a;h=a+201|0;j=a+200|0;l=a+196|0;m=a+48|0;n=a+184|0;o=a+32|0;p=a+20|0;zka(c,h,129324);zka(c,j,134882);Fka(c,l,134909);if(!(i[h>>0]|0)){r=a;return}k[g>>2]=129145;Ska(c,1,g);h=c+56|0;q=k[h>>2]|0;if((q|0)>0){s=c+32|0;t=q;q=0;u=0;while(1){if(!(i[(k[s>>2]|0)+u>>0]|0)){v=t;w=q}else{x=qh(b,q)|0;Uc[k[(k[x>>2]|0)+480>>2]&63](x,u,c,d,e,738);v=k[h>>2]|0;w=q+1|0}u=u+1|0;if((u|0)>=(v|0))break;else{t=v;q=w}}}switch(k[l>>2]|0){case 1:{Zka(c,b,135172,105);Zka(c,b,135196,107);Zka(c,b,135210,108);break}case 2:{Zka(c,b,135224,110);Zka(c,b,135238,109);break}case 6:{Zka(c,b,135224,110);Zka(c,b,135238,109);Zka(c,b,135039,653);Zka(c,b,135066,666);break}default:{l=m+56|0;w=m+4|0;k[m>>2]=27524;k[l>>2]=27544;B=0;wa(508,m+56|0,w|0);q=B;B=0;if(q&1){q=Rb()|0;y=Q;z=q;vva(l);Qb(z|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[l>>2]=27488;B=0;va(448,w|0);q=B;B=0;do if(q&1){v=Rb()|0;A=Q;C=v}else{k[w>>2]=27560;v=m+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[m+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,w|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(g);Yua(v);Ava(w);A=u;C=t;break}Yua(g);B=0;t=Ia(40,m|0,145010,13)|0;u=B;B=0;if(!(u&1)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,n|0,129178,84);u=B;B=0;do if(!(u&1)){B=0;eb(502,o|0,136133,14);h=B;B=0;if(h&1){h=Rb()|0;e=Q;Yua(n);D=e;E=h;break}B=0;wa(510,p|0,w|0);h=B;B=0;if(h&1){h=Rb()|0;F=Q;G=h;H=1}else{B=0;ua(163,t|0,n|0,o|0,162,p|0);h=B;B=0;if(h&1)I=1;else{B=0;eb(503,t|0,1240,229);B=0;I=0}h=Rb()|0;e=Q;Yua(p);F=e;G=h;H=I}Yua(o);Yua(n);if(H){D=F;E=G}else{J=F;K=G;k[m>>2]=27468;k[l>>2]=27488;k[w>>2]=27560;Yua(v);Ava(w);vva(l);Qb(K|0)}}else{h=Rb()|0;D=Q;E=h}while(0);zb(t|0);J=D;K=E;k[m>>2]=27468;k[l>>2]=27488;k[w>>2]=27560;Yua(v);Ava(w);vva(l);Qb(K|0)}u=Rb()|0;J=Q;K=u;k[m>>2]=27468;k[l>>2]=27488;k[w>>2]=27560;Yua(v);Ava(w);vva(l);Qb(K|0)}while(0);y=A;z=C;vva(l);Qb(z|0)}}Zka(c,b,137052,353);Zka(c,b,134962,928);if((i[j>>0]|0)!=0?(k[c+40>>2]|0)!=300:0)Zka(c,b,136615,287);k[f>>2]=129145;Lka(c,1,f);r=a;return}function cba(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function dba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;a=r;r=r+176|0;c=a+152|0;d=a+16|0;e=a;if(!(CY()|0)){xh(b,498);Voa(b);r=a;return}f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;Ia(40,d|0,129263,28)|0;o=B;B=0;if(!(o&1)?(B=0,wa(510,e|0,g|0),o=B,B=0,!(o&1)):0){B=0;ya(425,e|0)|0;o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(e);q=p;s=o;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(s|0)}else{Yua(e);k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);xh(b,498);Voa(b);r=a;return}}o=Rb()|0;q=Q;s=o;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(s|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function eba(a,b){a=a|0;b=b|0;return 0}function fba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,129178,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,193,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function gba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;a=r;r=r+192|0;c=a+180|0;d=a+176|0;e=a+40|0;f=a+24|0;g=a+12|0;h=a;if(!($p(b)|0)){i=0;r=a;return i|0}cp(b,d,298);switch(k[d>>2]|0){case 300:{if($p(b)|0){j=Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;l=gq(b,534)|0;if((j|0)>0){m=j<<2;n=l+12|0;o=j<<1;q=0;do{s=1.0/+(ed[k[(k[b>>2]|0)+508>>2]&511](b,q)|0);t=q<<1;u=(ma(m,q)|0)+t|0;v=k[n>>2]|0;p[v+(u<<3)>>3]=s;u=t|1;t=v+((ma(o,u)|0)+u<<3)|0;p[t>>3]=s;q=q+1|0}while((q|0)!=(j|0));w=l}else w=l}else w=0;break}case 302:{w=hba(0,b)|0;break}default:{b=e+56|0;l=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,l|0);j=B;B=0;if(j&1){j=Rb()|0;x=Q;y=j;vva(b);Qb(y|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,l|0);j=B;B=0;do if(j&1){q=Rb()|0;z=Q;A=q}else{k[l>>2]=27560;q=e+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;n=Q;Yua(c);Yua(q);Ava(l);z=n;A=o;break}Yua(c);B=0;o=Ia(40,e|0,144639,5)|0;n=B;B=0;if((((!(n&1)?(B=0,n=ya(427,k[d>>2]|0)|0,m=B,B=0,!(m&1)):0)?(m=Lta(n)|0,B=0,t=Ia(40,o|0,n|0,m|0)|0,m=B,B=0,!(m&1)):0)?(B=0,m=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,m|0,0)|0,m=B,B=0,!(m&1)):0){m=Ab(20)|0;B=0;eb(502,f|0,129178,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,g|0,144189,13);n=B;B=0;if(n&1){n=Rb()|0;o=Q;Yua(f);C=o;D=n;break}B=0;wa(510,h|0,l|0);n=B;B=0;if(n&1){n=Rb()|0;E=Q;F=n;G=1}else{B=0;ua(163,m|0,f|0,g|0,207,h|0);n=B;B=0;if(n&1)H=1;else{B=0;eb(503,m|0,1240,229);B=0;H=0}n=Rb()|0;o=Q;Yua(h);E=o;F=n;G=H}Yua(g);Yua(f);if(G){C=E;D=F}else{I=E;J=F;k[e>>2]=27468;k[b>>2]=27488;k[l>>2]=27560;Yua(q);Ava(l);vva(b);Qb(J|0)}}else{n=Rb()|0;C=Q;D=n}while(0);zb(m|0);I=C;J=D;k[e>>2]=27468;k[b>>2]=27488;k[l>>2]=27560;Yua(q);Ava(l);vva(b);Qb(J|0)}t=Rb()|0;I=Q;J=t;k[e>>2]=27468;k[b>>2]=27488;k[l>>2]=27560;Yua(q);Ava(l);vva(b);Qb(J|0)}while(0);x=z;y=A;vva(b);Qb(y|0)}}i=w;r=a;return i|0}function hba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0.0,q=0.0,s=0,t=0,u=0.0,v=0,w=0.0;a=r;r=r+16|0;c=a+4|0;d=a;if(!($p(b)|0)){e=0;r=a;return e|0}k[d>>2]=0;f=(Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0)<<1;g=gq(b,534)|0;nd[k[(k[b>>2]|0)+512>>2]&1023](b,d,c);if((k[c>>2]|0)>0){h=g+12|0;i=0;do{j=i<<1;l=k[d>>2]|0;m=k[l+(j<<2)>>2]|0;n=k[l+((j|1)<<2)>>2]|0;o=+(ed[k[(k[b>>2]|0)+508>>2]&511](b,m)|0);q=1.0/o;o=1.0/+(ed[k[(k[b>>2]|0)+508>>2]&511](b,n)|0);j=m<<1;m=j|1;l=n<<1;n=l|1;if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0?Hc[k[(k[b>>2]|0)+252>>2]&511](b)|0:0){s=(ma(j,f)|0)+j|0;t=k[h>>2]|0;p[t+(s<<3)>>3]=q;s=t+((ma(m,f)|0)+m<<3)|0;p[s>>3]=q;u=-o;s=ma(l,f)|0;p[t+(s+j<<3)>>3]=u;p[t+(s+l<<3)>>3]=o;s=ma(n,f)|0;p[t+(s+m<<3)>>3]=u;p[t+(s+n<<3)>>3]=o}else v=10;do if((v|0)==10){v=0;if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){s=(ma(j,f)|0)+j|0;t=k[h>>2]|0;p[t+(s<<3)>>3]=q;s=t+((ma(m,f)|0)+m<<3)|0;p[s>>3]=q;u=o*-2.0;s=ma(l,f)|0;p[t+(s+j<<3)>>3]=u;w=o*2.0;p[t+(s+l<<3)>>3]=w;s=ma(n,f)|0;p[t+(s+m<<3)>>3]=u;p[t+(s+n<<3)>>3]=w;break}if(Hc[k[(k[b>>2]|0)+252>>2]&511](b)|0){w=-o;s=ma(l,f)|0;t=k[h>>2]|0;p[t+(s+j<<3)>>3]=w;p[t+(s+l<<3)>>3]=o;s=ma(n,f)|0;p[t+(s+m<<3)>>3]=w;p[t+(s+n<<3)>>3]=o;break}else{w=o*-2.0;s=ma(l,f)|0;t=k[h>>2]|0;p[t+(s+j<<3)>>3]=w;u=o*2.0;p[t+(s+l<<3)>>3]=u;s=ma(n,f)|0;p[t+(s+m<<3)>>3]=w;p[t+(s+n<<3)>>3]=u;break}}while(0);i=i+1|0}while((i|0)<(k[c>>2]|0))}c=k[d>>2]|0;if(c)Tqa(c);e=g;r=a;return e|0}function iba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+180|0;d=a+176|0;e=a+40|0;f=a+24|0;g=a+12|0;h=a;if(!($p(b)|0)){i=0;r=a;return i|0}cp(b,d,298);switch(k[d>>2]|0){case 300:{j=jba(0,b)|0;break}case 302:{j=kba(0,b)|0;break}default:{b=e+56|0;l=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(b);Qb(o|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=e+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(p);Ava(l);q=u;s=t;break}Yua(c);B=0;t=Ia(40,e|0,144639,5)|0;u=B;B=0;if((((!(u&1)?(B=0,u=ya(427,k[d>>2]|0)|0,v=B,B=0,!(v&1)):0)?(v=Lta(u)|0,B=0,w=Ia(40,t|0,u|0,v|0)|0,v=B,B=0,!(v&1)):0)?(B=0,v=Ia(40,w|0,146481,18)|0,w=B,B=0,!(w&1)):0)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,f|0,129178,84);w=B;B=0;do if(!(w&1)){B=0;eb(502,g|0,144203,13);u=B;B=0;if(u&1){u=Rb()|0;t=Q;Yua(f);x=t;y=u;break}B=0;wa(510,h|0,l|0);u=B;B=0;if(u&1){u=Rb()|0;z=Q;A=u;C=1}else{B=0;ua(163,v|0,f|0,g|0,310,h|0);u=B;B=0;if(u&1)D=1;else{B=0;eb(503,v|0,1240,229);B=0;D=0}u=Rb()|0;t=Q;Yua(h);z=t;A=u;C=D}Yua(g);Yua(f);if(C){x=z;y=A}else{E=z;F=A;k[e>>2]=27468;k[b>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(b);Qb(F|0)}}else{u=Rb()|0;x=Q;y=u}while(0);zb(v|0);E=x;F=y;k[e>>2]=27468;k[b>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(b);Qb(F|0)}w=Rb()|0;E=Q;F=w;k[e>>2]=27468;k[b>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(b);Qb(F|0)}while(0);n=q;o=s;vva(b);Qb(o|0)}}i=j;r=a;return i|0}function jba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0.0,j=0.0,l=0.0,m=0.0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0;a=r;r=r+32|0;c=a+24|0;d=a+16|0;e=a;if(!($p(b)|0)){f=0;r=a;return f|0}g=Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;h=iq(b,534)|0;i=+Dp(b,265);j=+Dp(b,65);l=+Dp(b,217);m=+Dp(b,215);n=Wo(b,664)|0;o=Wo(b,665)|0;q=Wo(b,353)|0;s=Wo(b,339)|0;t=Hc[k[(k[b>>2]|0)+304>>2]&511](b)|0;if((g|0)<=0){if(t)u=6}else{v=e+8|0;w=i*-1.5800000000000002e-10*j;x=i*j;j=(l+-1.0)*.5;i=l+1.0;y=l+2.0;z=h+4|0;A=0;do{Fc[k[(k[t>>2]|0)+28>>2]&1023](t,A);B=+(ed[k[(k[b>>2]|0)+508>>2]&511](b,A)|0);nd[k[(k[q>>2]|0)+48>>2]&1023](q,c,t);nd[k[(k[s>>2]|0)+48>>2]&1023](s,d,t);nd[k[(k[n>>2]|0)+48>>2]&1023](n,e,t);nd[k[(k[o>>2]|0)+48>>2]&1023](o,v,t);C=+p[e>>3];D=+p[v>>3];E=+p[c>>3];F=w*E;G=+ba(+x,+l)*2.0*+ba(+(C*C+D*D),+j);H=y*+ba(+m,+l);I=(C*F-C*(G*+ba(+E,+i)/H))/B;J=A<<1;K=k[z>>2]|0;p[K+(J<<3)>>3]=I;I=G*+ba(+(+p[c>>3]),+i)/H;p[K+((J|1)<<3)>>3]=(D*F-+p[v>>3]*I)/B;A=A+1|0}while((A|0)!=(g|0));u=6}if((u|0)==6)Ec[k[(k[t>>2]|0)+4>>2]&1023](t);f=h;r=a;return f|0}function kba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0.0,o=0.0,q=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0.0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0;a=r;r=r+112|0;c=a+96|0;d=a+80|0;e=a+72|0;f=a+64|0;g=a+48|0;h=a;i=a+92|0;j=a+88|0;if(!($p(b)|0)){l=0;r=a;return l|0}k[i>>2]=0;k[j>>2]=0;Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;m=iq(b,534)|0;Uo(b,i);n=+Dp(b,265);o=+Dp(b,65);q=+Dp(b,217);s=+Dp(b,214);t=Wo(b,339)|0;u=Wo(b,664)|0;v=Wo(b,665)|0;w=Wo(b,353)|0;nd[k[(k[b>>2]|0)+512>>2]&1023](b,j,c);if((k[c>>2]|0)>0){x=n*-1.5800000000000002e-10*o;y=g+8|0;z=m+4|0;A=n*o;o=(q+-1.0)*.5;B=h+24|0;C=h+8|0;D=h+32|0;E=h+16|0;F=h+40|0;G=0;do{H=G<<1;I=k[j>>2]|0;J=k[I+(H<<2)>>2]|0;K=k[I+((H|1)<<2)>>2]|0;H=ed[k[(k[b>>2]|0)+508>>2]&511](b,J)|0;I=ed[k[(k[b>>2]|0)+508>>2]&511](b,K)|0;L=J*3|0;M=k[i>>2]|0;N=K*3|0;p[h>>3]=+p[M+(L<<3)>>3];p[B>>3]=+p[M+(N<<3)>>3];p[C>>3]=+p[M+(L+1<<3)>>3];p[D>>3]=+p[M+(N+1<<3)>>3];p[E>>3]=+p[M+(L+2<<3)>>3];p[F>>3]=+p[M+(N+2<<3)>>3];n=+(H|0);O=+(I|0);I=ld[k[(k[b>>2]|0)+328>>2]&127](b,J,K,3)|0;H=Hc[k[(k[I>>2]|0)+8>>2]&511](I)|0;if((H|0)<(Hc[k[(k[I>>2]|0)+12>>2]&511](I)|0)){N=I+8|0;M=K<<1;K=M|1;L=H;do{Fc[k[(k[I>>2]|0)+24>>2]&1023](I,L);nd[k[(k[u>>2]|0)+48>>2]&1023](u,g,I);nd[k[(k[v>>2]|0)+48>>2]&1023](v,y,I);nd[k[(k[t>>2]|0)+48>>2]&1023](t,d,I);nd[k[(k[w>>2]|0)+48>>2]&1023](w,e,I);P=+p[g>>3];Q=+p[y>>3];R=+ba(+A,+q)*-2.0*+ba(+(P*P+Q*Q),+o);Q=+Lp(b,k[i>>2]|0,I);rd[k[(k[b>>2]|0)+268>>2]&511](b,f,h,I);H=Hc[k[(k[b>>2]|0)+252>>2]&511](b)|0;P=R*+ba(+((+p[d>>3]-Q)/s),+q);S=P*+p[g>>3]*+p[f>>3]*+p[N>>3];if(H){H=k[z>>2]|0;T=H+(M<<3)|0;p[T>>3]=S/O+ +p[T>>3];P=R*+ba(+((+p[d>>3]-Q)/s),+q);T=H+(K<<3)|0;p[T>>3]=+p[T>>3]+P*+p[y>>3]*+p[f>>3]*+p[N>>3]/O}else{T=k[z>>2]|0;H=T+(M<<3)|0;p[H>>3]=S*2.0/O+ +p[H>>3];S=R*+ba(+((+p[d>>3]-Q)/s),+q);H=T+(K<<3)|0;p[H>>3]=+p[H>>3]+S*+p[y>>3]*+p[f>>3]*+p[N>>3]*2.0/O}L=L+1|0}while((L|0)<(Hc[k[(k[I>>2]|0)+12>>2]&511](I)|0))}if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){O=x*+p[e>>3];S=O*+p[y>>3];L=J<<1;N=k[z>>2]|0;K=N+(L<<3)|0;p[K>>3]=+p[K>>3]+O*+p[g>>3]/n;K=N+((L|1)<<3)|0;p[K>>3]=S/n+ +p[K>>3]}Ec[k[(k[I>>2]|0)+4>>2]&1023](I);G=G+1|0}while((G|0)<(k[c>>2]|0))}c=k[j>>2]|0;if(c)Tqa(c);k[j>>2]=0;j=k[i>>2]|0;if(j)Tqa(j);l=m;r=a;return l|0}function lba(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;a=r;r=r+32|0;d=a+8|0;e=a;f=a+16|0;k[f>>2]=0;g=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;h=g<<1;i=Rqa(h>>>0>536870911?-1:h<<3)|0;rp(c,f,534,943);j=Wo(c,674)|0;l=Wo(c,677)|0;m=Hc[k[(k[c>>2]|0)+304>>2]&511](c)|0;if((g|0)>0){c=0;do{Fc[k[(k[m>>2]|0)+28>>2]&1023](m,c);nd[k[(k[j>>2]|0)+48>>2]&1023](j,d,m);nd[k[(k[l>>2]|0)+48>>2]&1023](l,e,m);n=c<<1;p[i+(n<<3)>>3]=+p[d>>3];p[i+((n|1)<<3)>>3]=+p[e>>3];c=c+1|0}while((c|0)!=(g|0))}if(k[b>>2]|0){g=k[k[b+4>>2]>>2]|0;Dc[k[(k[g>>2]|0)+16>>2]&255](g,h,k[f>>2]|0,i,0)}if(m)Ec[k[(k[m>>2]|0)+4>>2]&1023](m);m=k[f>>2]|0;if(!m){k[f>>2]=0;Tqa(i);r=a;return}Tqa(m);k[f>>2]=0;Tqa(i);r=a;return}function mba(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,129178,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,550,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function nba(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0.0,V=0.0,W=0.0,X=0,Y=0,Z=0,_=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0.0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0;a=r;r=r+896|0;d=a+880|0;e=a+864|0;f=a+860|0;g=a+844|0;h=a+696|0;i=a+868|0;j=a+848|0;l=a+832|0;m=a+560|0;n=a+548|0;o=a+536|0;q=a+384|0;s=a+400|0;u=a+96|0;v=a+84|0;w=a+72|0;x=a+248|0;y=a+60|0;z=a+48|0;A=a+36|0;C=a+112|0;D=a+24|0;E=a+12|0;F=a;k[f>>2]=0;k[g>>2]=0;G=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;H=G<<1;rp(c,f,534,943);I=H>>>0>536870911?-1:H<<3;J=Rqa(I)|0;K=Rqa(I)|0;L=Rqa(I)|0;M=Rqa(I)|0;N=Rqa(I)|0;O=Rqa(I)|0;P=Rqa(I)|0;I=Rqa(G>>>0>536870911?-1:G<<3)|0;R=(G|0)>0;do if(R){S=k[f>>2]|0;T=0;do{p[J+(T<<3)>>3]=+p[b+(k[S+(T<<2)>>2]<<3)>>3];T=T+1|0}while((T|0)<(H|0));Aq(c,J,971);if(R){T=0;while(1){S=T<<1;U=+p[J+(S<<3)>>3];p[K+(T<<3)>>3]=U;V=+p[J+((S|1)<<3)>>3];p[L+(T<<3)>>3]=V;W=+$(+U);p[t>>3]=W;S=k[t>>2]|0;X=k[t+4>>2]|0;if(X>>>0>2146435072|(X|0)==2146435072&S>>>0>0){Y=8;break}if((S|0)==0&(X|0)==2146435072){Y=32;break}W=+$(+V);p[t>>3]=W;X=k[t>>2]|0;S=k[t+4>>2]|0;if(S>>>0>2146435072|(S|0)==2146435072&X>>>0>0){Y=56;break}T=T+1|0;if((X|0)==0&(S|0)==2146435072){Y=80;break}if((T|0)>=(G|0)){Y=104;break}}if((Y|0)==8){T=h+56|0;S=h+4|0;k[h>>2]=27524;k[T>>2]=27544;B=0;wa(508,h+56|0,S|0);X=B;B=0;if(X&1){X=Rb()|0;Z=Q;_=X;vva(T);Qb(_|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[T>>2]=27488;B=0;va(448,S|0);X=B;B=0;do if(X&1){ba=Rb()|0;ca=Q;da=ba}else{k[S>>2]=27560;ba=h+36|0;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;k[h+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,S|0,d|0);ea=B;B=0;if(ea&1){ea=Rb()|0;fa=Q;Yua(d);Yua(ba);Ava(S);ca=fa;da=ea;break}Yua(d);B=0;ea=Ia(40,h|0,135564,28)|0;fa=B;B=0;a:do if(!(fa&1)?(B=0,Xa(239,ea|0,0)|0,ga=B,B=0,!(ga&1)):0){ga=Ab(20)|0;B=0;eb(502,i|0,129178,84);ha=B;B=0;do if(!(ha&1)){B=0;eb(502,j|0,137199,23);ia=B;B=0;if(ia&1){ia=Rb()|0;ja=Q;Yua(i);ka=ja;la=ia;break}B=0;wa(510,l|0,S|0);ia=B;B=0;if(ia&1){ia=Rb()|0;ma=Q;na=ia;oa=1}else{B=0;ua(163,ga|0,i|0,j|0,586,l|0);ia=B;B=0;if(ia&1)pa=1;else{B=0;eb(503,ga|0,1240,229);B=0;pa=0}ia=Rb()|0;ja=Q;Yua(l);ma=ja;na=ia;oa=pa}Yua(j);Yua(i);if(oa){ka=ma;la=na}else{qa=ma;ra=na;break a}}else{ia=Rb()|0;ka=Q;la=ia}while(0);zb(ga|0);qa=ka;ra=la}else Y=23;while(0);if((Y|0)==23){ea=Rb()|0;qa=Q;ra=ea}k[h>>2]=27468;k[T>>2]=27488;k[S>>2]=27560;Yua(ba);Ava(S);vva(T);sa=qa;ta=ra;Qb(ta|0)}while(0);Z=ca;_=da;vva(T);Qb(_|0)}else if((Y|0)==32){S=m+56|0;X=m+4|0;k[m>>2]=27524;k[S>>2]=27544;B=0;wa(508,m+56|0,X|0);ea=B;B=0;if(ea&1){ea=Rb()|0;xa=Q;za=ea;vva(S);Qb(za|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[S>>2]=27488;B=0;va(448,X|0);ea=B;B=0;do if(ea&1){fa=Rb()|0;Aa=Q;Ba=fa}else{k[X>>2]=27560;fa=m+36|0;k[fa>>2]=0;k[fa+4>>2]=0;k[fa+8>>2]=0;k[fa+12>>2]=0;k[m+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,X|0,d|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(d);Yua(fa);Ava(X);Aa=ia;Ba=ha;break}Yua(d);B=0;ha=Ia(40,m|0,135593,28)|0;ia=B;B=0;b:do if(!(ia&1)?(B=0,Xa(239,ha|0,0)|0,ja=B,B=0,!(ja&1)):0){ja=Ab(20)|0;B=0;eb(502,n|0,129178,84);Ca=B;B=0;do if(!(Ca&1)){B=0;eb(502,o|0,137199,23);Da=B;B=0;if(Da&1){Da=Rb()|0;Ea=Q;Yua(n);Fa=Ea;Ga=Da;break}B=0;wa(510,q|0,X|0);Da=B;B=0;if(Da&1){Da=Rb()|0;Ha=1;Ja=Q;Ka=Da}else{B=0;ua(163,ja|0,n|0,o|0,587,q|0);Da=B;B=0;if(Da&1)La=1;else{B=0;eb(503,ja|0,1240,229);B=0;La=0}Da=Rb()|0;Ea=Q;Yua(q);Ha=La;Ja=Ea;Ka=Da}Yua(o);Yua(n);if(Ha){Fa=Ja;Ga=Ka}else{Ma=Ja;Na=Ka;break b}}else{Da=Rb()|0;Fa=Q;Ga=Da}while(0);zb(ja|0);Ma=Fa;Na=Ga}else Y=47;while(0);if((Y|0)==47){ha=Rb()|0;Ma=Q;Na=ha}k[m>>2]=27468;k[S>>2]=27488;k[X>>2]=27560;Yua(fa);Ava(X);vva(S);sa=Ma;ta=Na;Qb(ta|0)}while(0);xa=Aa;za=Ba;vva(S);Qb(za|0)}else if((Y|0)==56){X=s+56|0;ea=s+4|0;k[s>>2]=27524;k[X>>2]=27544;B=0;wa(508,s+56|0,ea|0);T=B;B=0;if(T&1){T=Rb()|0;Oa=Q;Pa=T;vva(X);Qb(Pa|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[X>>2]=27488;B=0;va(448,ea|0);T=B;B=0;do if(T&1){ha=Rb()|0;Qa=Q;Ra=ha}else{k[ea>>2]=27560;ha=s+36|0;k[ha>>2]=0;k[ha+4>>2]=0;k[ha+8>>2]=0;k[ha+12>>2]=0;k[s+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ea|0,d|0);ia=B;B=0;if(ia&1){ia=Rb()|0;ba=Q;Yua(d);Yua(ha);Ava(ea);Qa=ba;Ra=ia;break}Yua(d);B=0;ia=Ia(40,s|0,135564,28)|0;ba=B;B=0;c:do if(!(ba&1)?(B=0,Xa(239,ia|0,0)|0,Ca=B,B=0,!(Ca&1)):0){Ca=Ab(20)|0;B=0;eb(502,u|0,129178,84);ga=B;B=0;do if(!(ga&1)){B=0;eb(502,v|0,137199,23);Da=B;B=0;if(Da&1){Da=Rb()|0;Ea=Q;Yua(u);Sa=Ea;Ta=Da;break}B=0;wa(510,w|0,ea|0);Da=B;B=0;if(Da&1){Da=Rb()|0;Ua=1;Va=Q;Wa=Da}else{B=0;ua(163,Ca|0,u|0,v|0,588,w|0);Da=B;B=0;if(Da&1)Ya=1;else{B=0;eb(503,Ca|0,1240,229);B=0;Ya=0}Da=Rb()|0;Ea=Q;Yua(w);Ua=Ya;Va=Ea;Wa=Da}Yua(v);Yua(u);if(Ua){Sa=Va;Ta=Wa}else{Za=Va;_a=Wa;break c}}else{Da=Rb()|0;Sa=Q;Ta=Da}while(0);zb(Ca|0);Za=Sa;_a=Ta}else Y=71;while(0);if((Y|0)==71){ia=Rb()|0;Za=Q;_a=ia}k[s>>2]=27468;k[X>>2]=27488;k[ea>>2]=27560;Yua(ha);Ava(ea);vva(X);sa=Za;ta=_a;Qb(ta|0)}while(0);Oa=Qa;Pa=Ra;vva(X);Qb(Pa|0)}else if((Y|0)==80){ea=x+56|0;T=x+4|0;k[x>>2]=27524;k[ea>>2]=27544;B=0;wa(508,x+56|0,T|0);S=B;B=0;if(S&1){S=Rb()|0;$a=Q;ab=S;vva(ea);Qb(ab|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[ea>>2]=27488;B=0;va(448,T|0);S=B;B=0;do if(S&1){ia=Rb()|0;bb=Q;cb=ia}else{k[T>>2]=27560;ia=x+36|0;k[ia>>2]=0;k[ia+4>>2]=0;k[ia+8>>2]=0;k[ia+12>>2]=0;k[x+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,T|0,d|0);ba=B;B=0;if(ba&1){ba=Rb()|0;fa=Q;Yua(d);Yua(ia);Ava(T);bb=fa;cb=ba;break}Yua(d);B=0;ba=Ia(40,x|0,135593,28)|0;fa=B;B=0;d:do if(!(fa&1)?(B=0,Xa(239,ba|0,0)|0,ga=B,B=0,!(ga&1)):0){ga=Ab(20)|0;B=0;eb(502,y|0,129178,84);ja=B;B=0;do if(!(ja&1)){B=0;eb(502,z|0,137199,23);Da=B;B=0;if(Da&1){Da=Rb()|0;Ea=Q;Yua(y);db=Ea;fb=Da;break}B=0;wa(510,A|0,T|0);Da=B;B=0;if(Da&1){Da=Rb()|0;gb=1;hb=Q;ib=Da}else{B=0;ua(163,ga|0,y|0,z|0,589,A|0);Da=B;B=0;if(Da&1)jb=1;else{B=0;eb(503,ga|0,1240,229);B=0;jb=0}Da=Rb()|0;Ea=Q;Yua(A);gb=jb;hb=Ea;ib=Da}Yua(z);Yua(y);if(gb){db=hb;fb=ib}else{kb=hb;lb=ib;break d}}else{Da=Rb()|0;db=Q;fb=Da}while(0);zb(ga|0);kb=db;lb=fb}else Y=95;while(0);if((Y|0)==95){ba=Rb()|0;kb=Q;lb=ba}k[x>>2]=27468;k[ea>>2]=27488;k[T>>2]=27560;Yua(ia);Ava(T);vva(ea);sa=kb;ta=lb;Qb(ta|0)}while(0);$a=bb;ab=cb;vva(ea);Qb(ab|0)}else if((Y|0)==104){up(c,M,679,0.0);if(R)mb=0;else break;do{W=+p[K+(mb<<3)>>3];V=+p[L+(mb<<3)>>3];U=+p[M+(mb<<3)>>3];nb=+aa(+(W*W+V*V+U*U));p[N+(mb<<3)>>3]=nb;mb=mb+1|0}while((mb|0)!=(G|0))}}else Y=103}else{Aq(c,J,971);Y=103}while(0);if((Y|0)==103)up(c,M,679,0.0);nb=+Dp(c,265);U=+Dp(c,65);cp(c,e,298);switch(k[e>>2]|0){case 300:{vp(c,P,353);if(R){V=nb*U;mb=0;do{p[O+(mb<<3)>>3]=V*+p[P+(mb<<3)>>3];mb=mb+1|0}while((mb|0)!=(G|0))}break}case 302:{Uo(c,g);vp(c,I,339);if(R){V=nb*U;R=k[g>>2]|0;mb=0;do{p[O+(mb<<3)>>3]=V*(+p[I+(mb<<3)>>3]-+p[R+((mb*3|0)+2<<3)>>3]);mb=mb+1|0}while((mb|0)!=(G|0))}break}default:{G=C+56|0;mb=C+4|0;k[C>>2]=27524;k[G>>2]=27544;B=0;wa(508,C+56|0,mb|0);R=B;B=0;if(R&1){R=Rb()|0;ob=Q;pb=R;vva(G);Qb(pb|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[G>>2]=27488;B=0;va(448,mb|0);R=B;B=0;do if(R&1){ab=Rb()|0;qb=Q;rb=ab}else{k[mb>>2]=27560;ab=C+36|0;k[ab>>2]=0;k[ab+4>>2]=0;k[ab+8>>2]=0;k[ab+12>>2]=0;k[C+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,mb|0,d|0);cb=B;B=0;if(cb&1){cb=Rb()|0;bb=Q;Yua(d);Yua(ab);Ava(mb);qb=bb;rb=cb;break}Yua(d);B=0;cb=Ia(40,C|0,144639,5)|0;bb=B;B=0;e:do if((((!(bb&1)?(B=0,$a=ya(427,k[e>>2]|0)|0,lb=B,B=0,!(lb&1)):0)?(lb=Lta($a)|0,B=0,kb=Ia(40,cb|0,$a|0,lb|0)|0,lb=B,B=0,!(lb&1)):0)?(B=0,lb=Ia(40,kb|0,146481,18)|0,kb=B,B=0,!(kb&1)):0)?(B=0,Xa(239,lb|0,0)|0,lb=B,B=0,!(lb&1)):0){lb=Ab(20)|0;B=0;eb(502,D|0,129178,84);kb=B;B=0;do if(!(kb&1)){B=0;eb(502,E|0,137199,23);$a=B;B=0;if($a&1){$a=Rb()|0;x=Q;Yua(D);sb=x;tb=$a;break}B=0;wa(510,F|0,mb|0);$a=B;B=0;if($a&1){$a=Rb()|0;ub=1;vb=Q;wb=$a}else{B=0;ua(163,lb|0,D|0,E|0,611,F|0);$a=B;B=0;if($a&1)xb=1;else{B=0;eb(503,lb|0,1240,229);B=0;xb=0}$a=Rb()|0;x=Q;Yua(F);ub=xb;vb=x;wb=$a}Yua(E);Yua(D);if(ub){sb=vb;tb=wb}else{yb=vb;Bb=wb;break e}}else{$a=Rb()|0;sb=Q;tb=$a}while(0);zb(lb|0);yb=sb;Bb=tb}else Y=131;while(0);if((Y|0)==131){cb=Rb()|0;yb=Q;Bb=cb}k[C>>2]=27468;k[G>>2]=27488;k[mb>>2]=27560;Yua(ab);Ava(mb);vva(G);sa=yb;ta=Bb;Qb(ta|0)}while(0);ob=qb;pb=rb;vva(G);Qb(pb|0)}}Pp(c,674,675);Pp(c,677,678);Pp(c,653,654);rd[k[(k[c>>2]|0)+48>>2]&511](c,674,K,738);rd[k[(k[c>>2]|0)+48>>2]&511](c,677,L,738);rd[k[(k[c>>2]|0)+48>>2]&511](c,671,N,738);rd[k[(k[c>>2]|0)+48>>2]&511](c,653,O,738);Tqa(P);Tqa(I);Tqa(O);Tqa(N);Tqa(M);Tqa(L);Tqa(K);Tqa(J);J=k[g>>2]|0;if(J)Tqa(J);k[g>>2]=0;g=k[f>>2]|0;if(!g){r=a;return}Tqa(g);r=a;return}function oba(a,b){a=a|0;b=b|0;RZ(b);return}function pba(a){a=a|0;Sqa(a);return}function qba(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0;a=r;r=r+224|0;d=a+16|0;e=a;f=a+208|0;g=a+207|0;h=a+206|0;j=a+205|0;l=a+204|0;m=a+196|0;n=a+192|0;o=a+56|0;q=a+44|0;s=a+32|0;u=a+20|0;k[n>>2]=0;if((k[c+40>>2]|0)!=302){r=a;return}zka(c,f,129324);zka(c,g,129346);zka(c,h,129368);zka(c,j,129391);zka(c,l,132257);if(!(((i[f>>0]|0)!=0?1.0:0.0)+((i[g>>0]|0)!=0?1.0:0.0)+((i[h>>0]|0)!=0?1.0:0.0)+((i[j>>0]|0)!=0?1.0:0.0)+((i[l>>0]|0)!=0?1.0:0.0)>1.0)){qoa(b,c,129412,500,738,0);r=a;return}k[e>>2]=129435;Ska(c,1,e);Qka(c,n,a+200|0,m,129412);if((k[m>>2]|0)<=1){m=c+52|0;a:do if((k[m>>2]|0)>0){l=c+36|0;j=c+108|0;h=c+100|0;g=0;f=0;b:while(1){do if(k[(k[l>>2]|0)+(f<<2)>>2]|0){v=(Jka(c,129435)|0)+(f<<3)|0;if(~~+p[v>>3]){v=Qqa(32)|0;w=g+1|0;B=0;Pa(1,v|0,w+(k[j>>2]|0)|0,f+1+(k[h>>2]|0)|0,0,0.0,500);x=B;B=0;if(x&1){y=v;z=35;break b}ih(b,v)|0;A=w;break}w=(k[n>>2]|0)+(f<<3)|0;C=+$(+(+p[w>>3]));p[t>>3]=C;v=k[t+4>>2]|0;if(!(v>>>0>2146435072|(v|0)==2146435072&(k[t>>2]|0)>>>0>0)){v=Qqa(32)|0;x=g+1|0;B=0;Pa(1,v|0,x+(k[j>>2]|0)|0,f+1+(k[h>>2]|0)|0,0,+(+p[w>>3]),500);w=B;B=0;if(w&1){D=v;z=39;break b}ih(b,v)|0;A=x}else A=g}else A=g;while(0);f=f+1|0;if((f|0)>=(k[m>>2]|0))break a;else g=A}if((z|0)==35){g=Rb()|0;f=Q;Sqa(y);E=f;F=g;Qb(F|0)}else if((z|0)==39){g=Rb()|0;f=Q;Sqa(D);E=f;F=g;Qb(F|0)}}while(0);k[d>>2]=129435;Lka(c,1,d);Mka(c,k[n>>2]|0,129412);r=a;return}a=o+56|0;n=o+4|0;k[o>>2]=27524;k[a>>2]=27544;B=0;wa(508,o+56|0,n|0);c=B;B=0;if(c&1){c=Rb()|0;G=Q;H=c;vva(a);Qb(H|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[a>>2]=27488;B=0;va(448,n|0);c=B;B=0;do if(c&1){d=Rb()|0;I=Q;J=d}else{k[n>>2]=27560;d=o+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[o+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,n|0,e|0);D=B;B=0;if(D&1){D=Rb()|0;y=Q;Yua(e);Yua(d);Ava(n);I=y;J=D;break}Yua(e);B=0;D=Ia(40,o|0,129460,37)|0;y=B;B=0;c:do if(!(y&1)?(B=0,Xa(239,D|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,q|0,129498,89);m=B;B=0;do if(!(m&1)){B=0;eb(502,s|0,135838,17);b=B;B=0;if(b&1){b=Rb()|0;g=Q;Yua(q);K=g;L=b;break}B=0;wa(510,u|0,n|0);b=B;B=0;if(b&1){b=Rb()|0;M=Q;N=b;O=1}else{B=0;ua(163,A|0,q|0,s|0,42,u|0);b=B;B=0;if(b&1)P=1;else{B=0;eb(503,A|0,1240,229);B=0;P=0}b=Rb()|0;g=Q;Yua(u);M=g;N=b;O=P}Yua(s);Yua(q);if(O){K=M;L=N}else{R=M;S=N;break c}}else{b=Rb()|0;K=Q;L=b}while(0);zb(A|0);R=K;S=L}else z=22;while(0);if((z|0)==22){D=Rb()|0;R=Q;S=D}k[o>>2]=27468;k[a>>2]=27488;k[n>>2]=27560;Yua(d);Ava(n);vva(a);E=R;F=S;Qb(F|0)}while(0);G=I;H=J;vva(a);Qb(H|0)}function rba(a,b,c){a=a|0;b=b|0;c=c|0;return}function sba(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a=r;r=r+32|0;d=a+16|0;e=a;if((k[c+40>>2]|0)!=302){r=a;return}k[e>>2]=136615;k[e+4>>2]=136636;k[e+8>>2]=129588;Ska(c,3,e);hoa(b,c,500,738,534);k[d>>2]=136615;k[d+4>>2]=136636;k[d+8>>2]=129588;Lka(c,3,d);r=a;return}function tba(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function uba(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;a=c+40|0;if((k[a>>2]|0)!=302)return;f=c+56|0;g=k[f>>2]|0;if((g|0)>0){h=c+32|0;j=g;g=0;l=0;while(1){if(!(i[(k[h>>2]|0)+l>>0]|0)){m=j;n=g}else{o=qh(b,g)|0;Uc[k[(k[o>>2]|0)+480>>2]&63](o,l,c,d,e,738);m=k[f>>2]|0;n=g+1|0}l=l+1|0;if((l|0)>=(m|0))break;else{j=m;g=n}}}Zka(c,b,137052,353);Zka(c,b,134925,339);Zka(c,b,134945,64);Yka(c,b,137955,999,0.0);Zka(c,b,137867,206);if((k[a>>2]|0)!=300){Zka(c,b,136615,287);Zka(c,b,136636,288)}Zka(c,b,134027,39);Zka(c,b,134069,40);Yka(c,b,135923,674,0.0);Yka(c,b,135944,677,0.0);return}function vba(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function wba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;a=r;r=r+176|0;c=a+152|0;d=a+16|0;e=a;if(!(CY()|0)){xh(b,500);Voa(b);r=a;return}f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;Ia(40,d|0,129620,33)|0;o=B;B=0;if(!(o&1)?(B=0,wa(510,e|0,g|0),o=B,B=0,!(o&1)):0){B=0;ya(425,e|0)|0;o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(e);q=p;s=o;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(s|0)}else{Yua(e);k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);xh(b,500);Voa(b);r=a;return}}o=Rb()|0;q=Q;s=o;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(s|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function xba(a,b){a=a|0;b=b|0;return 0}function yba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,129498,89);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,137,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function zba(a,b){a=a|0;b=b|0;var c=0,d=0;c=Aba(a,b)|0;a=Bba(0,b)|0;b=Qqa(68)|0;B=0;eb(515,b|0,c|0,a|0);d=B;B=0;if(d&1){d=Rb()|0;Sqa(b);Qb(d|0)}if(c){HN(c);Sqa(c)}if(!a)return b|0;HN(a);Sqa(a);return b|0}function Aba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0;a=r;r=r+32|0;c=a+8|0;d=a;e=a+16|0;k[e>>2]=0;f=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;g=gq(b,534)|0;h=f>>>0>536870911?-1:f<<3;i=Rqa(h)|0;j=Rqa(h)|0;Uo(b,e);h=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;l=Hc[k[(k[h>>2]|0)+8>>2]&511](h)|0;if((l|0)<(Hc[k[(k[h>>2]|0)+12>>2]&511](h)|0)){m=h+8|0;n=g+12|0;o=l;do{Fc[k[(k[h>>2]|0)+24>>2]&1023](h,o);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[e>>2]|0,h);l=k[e>>2]|0;q=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;s=q*3|0;t=Rqa(s>>>0>536870911?-1:s<<3)|0;rd[k[(k[b>>2]|0)+340>>2]&511](b,t,l,h);if((q|0)>0)TEa(i|0,t+(q<<4)|0,q<<3|0)|0;Tqa(t);nd[k[(k[b>>2]|0)+336>>2]&1023](b,j,h);p[c>>3]=+p[m>>3]*+p[d>>3];ZX(i,1,f,1,c,1,1,0,j,1,f,0,k[n>>2]|0,1)|0;o=o+1|0}while((o|0)<(Hc[k[(k[h>>2]|0)+12>>2]&511](h)|0))}Ec[k[(k[h>>2]|0)+4>>2]&1023](h);h=k[e>>2]|0;if(!h){k[e>>2]=0;Tqa(j);Tqa(i);r=a;return g|0}Tqa(h);k[e>>2]=0;Tqa(j);Tqa(i);r=a;return g|0}function Bba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0;a=r;r=r+48|0;c=a+32|0;d=a+24|0;e=a;f=a+40|0;if(!(Hc[k[(k[b>>2]|0)+252>>2]&511](b)|0)){g=0;r=a;return g|0}k[f>>2]=0;h=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;i=gq(b,534)|0;j=Rqa(h>>>0>536870911?-1:h<<3)|0;Fc[k[(k[b>>2]|0)+192>>2]&1023](b,f);l=ed[k[(k[b>>2]|0)+332>>2]&511](b,2)|0;nd[k[(k[b>>2]|0)+388>>2]&1023](b,e,k[f>>2]|0);m=Hc[k[(k[l>>2]|0)+8>>2]&511](l)|0;if((m|0)<(Hc[k[(k[l>>2]|0)+12>>2]&511](l)|0)){n=l+8|0;o=e+16|0;e=i+12|0;q=m;do{Fc[k[(k[l>>2]|0)+24>>2]&1023](l,q);rd[k[(k[b>>2]|0)+276>>2]&511](b,d,k[f>>2]|0,l);nd[k[(k[b>>2]|0)+336>>2]&1023](b,j,l);p[c>>3]=-(+p[n>>3]*+p[d>>3]*+p[o>>3]);ZX(j,1,h,1,c,1,1,0,j,1,h,0,k[e>>2]|0,1)|0;q=q+1|0}while((q|0)<(Hc[k[(k[l>>2]|0)+12>>2]&511](l)|0))}Ec[k[(k[l>>2]|0)+4>>2]&1023](l);l=k[f>>2]|0;if(l)Tqa(l);k[f>>2]=0;Tqa(j);g=i;r=a;return g|0}function Cba(a,b){a=a|0;b=b|0;var c=0,d=0;a=Dba(0,b)|0;c=Eba(0,b)|0;b=Qqa(24)|0;B=0;eb(516,b|0,a|0,c|0);d=B;B=0;if(d&1){d=Rb()|0;Sqa(b);Qb(d|0)}if(a){SN(a);Sqa(a)}if(!c)return b|0;SN(c);Sqa(c);return b|0}function Dba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0,C=0;a=r;r=r+96|0;c=a+84|0;d=a+72|0;e=a+48|0;f=a+24|0;g=a;h=a+80|0;k[h>>2]=0;i=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;j=iq(b,534)|0;l=Rqa(i>>>0>536870911?-1:i<<3)|0;Uo(b,h);Ap(b,c,533);m=Wo(b,674)|0;n=Wo(b,677)|0;switch(k[c>>2]|0){case 538:case 541:{o=Wo(b,683)|0;break}default:o=0}q=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;s=Hc[k[(k[q>>2]|0)+8>>2]&511](q)|0;a:do if((s|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0)){t=f+8|0;u=q+8|0;v=j+4|0;w=g+16|0;if((i|0)>0)x=s;else{y=s;while(1){Fc[k[(k[q>>2]|0)+24>>2]&1023](q,y);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[h>>2]|0,q);nd[k[(k[b>>2]|0)+336>>2]&1023](b,l,q);rd[k[(k[m>>2]|0)+60>>2]&511](m,e,k[h>>2]|0,q);rd[k[(k[n>>2]|0)+60>>2]&511](n,f,k[h>>2]|0,q);switch(k[c>>2]|0){case 538:case 541:{rd[k[(k[o>>2]|0)+60>>2]&511](o,g,k[h>>2]|0,q);break}default:{}}y=y+1|0;if((y|0)>=(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0))break a}}while(1){Fc[k[(k[q>>2]|0)+24>>2]&1023](q,x);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[h>>2]|0,q);nd[k[(k[b>>2]|0)+336>>2]&1023](b,l,q);rd[k[(k[m>>2]|0)+60>>2]&511](m,e,k[h>>2]|0,q);rd[k[(k[n>>2]|0)+60>>2]&511](n,f,k[h>>2]|0,q);switch(k[c>>2]|0){case 538:case 541:{rd[k[(k[o>>2]|0)+60>>2]&511](o,g,k[h>>2]|0,q);z=+p[w>>3];break}default:z=0.0}A=z+(+p[e>>3]+ +p[t>>3]);y=k[v>>2]|0;B=0;do{C=y+(B<<3)|0;p[C>>3]=A*+p[d>>3]*+p[u>>3]*+p[l+(B<<3)>>3]+ +p[C>>3];B=B+1|0}while((B|0)!=(i|0));x=x+1|0;if((x|0)>=(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0))break a}}while(0);Ec[k[(k[q>>2]|0)+4>>2]&1023](q);Tqa(l);l=k[h>>2]|0;if(!l){r=a;return j|0}Tqa(l);r=a;return j|0}function Eba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0,M=0,N=0;a=r;r=r+96|0;c=a+88|0;d=a+84|0;e=a+80|0;f=a+72|0;g=a+48|0;h=a+40|0;i=a+32|0;j=a+24|0;l=a+16|0;m=a+8|0;n=a;k[d>>2]=0;k[e>>2]=0;p[j>>3]=0.0;if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){o=0;r=a;return o|0}q=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;s=iq(b,534)|0;t=Rqa(q>>>0>536870911?-1:q<<3)|0;Uo(b,d);Fc[k[(k[b>>2]|0)+188>>2]&1023](b,e);Ap(b,c,533);u=Wo(b,64)|0;v=Wo(b,928)|0;w=Wo(b,39)|0;x=Wo(b,40)|0;y=Wo(b,674)|0;z=Wo(b,677)|0;switch(k[c>>2]|0){case 538:case 541:{A=Wo(b,683)|0;break}default:A=0}B=ed[k[(k[b>>2]|0)+324>>2]&511](b,2)|0;C=Hc[k[(k[B>>2]|0)+8>>2]&511](B)|0;a:do if((C|0)<(Hc[k[(k[B>>2]|0)+12>>2]&511](B)|0)){D=g+8|0;E=(q|0)>0;F=B+8|0;G=s+4|0;H=C;while(1){Fc[k[(k[B>>2]|0)+24>>2]&1023](B,H);nd[k[(k[w>>2]|0)+48>>2]&1023](w,l,B);nd[k[(k[x>>2]|0)+48>>2]&1023](x,m,B);nd[k[(k[v>>2]|0)+48>>2]&1023](v,n,B);rd[k[(k[u>>2]|0)+60>>2]&511](u,g,k[d>>2]|0,B);nd[k[(k[y>>2]|0)+48>>2]&1023](y,h,B);nd[k[(k[z>>2]|0)+48>>2]&1023](z,i,B);switch(k[c>>2]|0){case 538:case 541:{nd[k[(k[A>>2]|0)+48>>2]&1023](A,j,B);break}default:{}}I=+p[g>>3];J=+p[D>>3];K=+p[n>>3]>0.0?+p[l>>3]:+p[m>>3];rd[k[(k[b>>2]|0)+264>>2]&511](b,f,k[e>>2]|0,B);nd[k[(k[b>>2]|0)+336>>2]&1023](b,t,B);if(E){L=k[G>>2]|0;M=0;do{N=L+(M<<3)|0;p[N>>3]=+p[N>>3]-+p[t+(M<<3)>>3]*(+p[f>>3]*+p[F>>3]*(I*+p[h>>3]+J*+p[i>>3]-+p[j>>3]-K));M=M+1|0}while((M|0)!=(q|0))}H=H+1|0;if((H|0)>=(Hc[k[(k[B>>2]|0)+12>>2]&511](B)|0))break a}}while(0);Ec[k[(k[B>>2]|0)+4>>2]&1023](B);Tqa(t);t=k[d>>2]|0;if(t)Tqa(t);k[d>>2]=0;d=k[e>>2]|0;if(d)Tqa(d);k[e>>2]=0;o=s;r=a;return o|0}function Fba(a,b,c){a=a|0;b=b|0;c=c|0;nd[k[(k[c>>2]|0)+176>>2]&1023](c,b,679);return}function Gba(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,129498,89);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,501,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function Hba(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0.0,ba=0.0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0.0,Wb=0.0,Xb=0;a=r;r=r+1088|0;d=a+1064|0;e=a+1036|0;f=a+1020|0;g=a+1016|0;h=a+880|0;i=a+1052|0;j=a+1040|0;l=a+1024|0;m=a+728|0;n=a+864|0;o=a+712|0;q=a+560|0;s=a+576|0;u=a+272|0;v=a+120|0;w=a+108|0;x=a+424|0;y=a+96|0;z=a+84|0;A=a+72|0;C=a+288|0;D=a+60|0;E=a+48|0;F=a+36|0;H=a+136|0;I=a+24|0;J=a+12|0;K=a;L=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;k[f>>2]=0;k[g>>2]=0;Ap(c,e,533);if((k[e>>2]&-9|0)==534){r=a;return}Uo(c,g);rp(c,f,534,943);M=L>>>0>536870911?-1:L<<3;N=Rqa(M)|0;O=Rqa(M)|0;P=Rqa(M)|0;R=Rqa(M)|0;S=Rqa(M)|0;T=Rqa(M)|0;U=Rqa(M)|0;V=Rqa(M)|0;W=Rqa(M)|0;X=Rqa(M)|0;M=(L|0)>0;a:do if(M){Y=k[f>>2]|0;Z=0;do{p[N+(Z<<3)>>3]=+p[b+(k[Y+(Z<<2)>>2]<<3)>>3];Z=Z+1|0}while((Z|0)!=(L|0));if(M){Z=0;while(1){_=+p[N+(Z<<3)>>3];p[R+(Z<<3)>>3]=_;ba=+$(+_);p[t>>3]=ba;Y=k[t>>2]|0;ca=k[t+4>>2]|0;if(ca>>>0>2146435072|(ca|0)==2146435072&Y>>>0>0){da=8;break}Z=Z+1|0;if((Y|0)==0&(ca|0)==2146435072){da=32;break}if((Z|0)>=(L|0))break a}if((da|0)==8){Z=h+56|0;ca=h+4|0;k[h>>2]=27524;k[Z>>2]=27544;B=0;wa(508,h+56|0,ca|0);Y=B;B=0;if(Y&1){Y=Rb()|0;ea=Q;fa=Y;vva(Z);Qb(fa|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[Z>>2]=27488;B=0;va(448,ca|0);Y=B;B=0;do if(Y&1){ga=Rb()|0;ha=Q;ia=ga}else{k[ca>>2]=27560;ga=h+36|0;k[ga>>2]=0;k[ga+4>>2]=0;k[ga+8>>2]=0;k[ga+12>>2]=0;k[h+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ca|0,d|0);ja=B;B=0;if(ja&1){ja=Rb()|0;ka=Q;Yua(d);Yua(ga);Ava(ca);ha=ka;ia=ja;break}Yua(d);B=0;ja=Ia(40,h|0,135564,28)|0;ka=B;B=0;b:do if(!(ka&1)?(B=0,Xa(239,ja|0,0)|0,la=B,B=0,!(la&1)):0){la=Ab(20)|0;B=0;eb(502,i|0,129498,89);ma=B;B=0;do if(!(ma&1)){B=0;eb(502,j|0,137199,23);na=B;B=0;if(na&1){na=Rb()|0;oa=Q;Yua(i);pa=oa;qa=na;break}B=0;wa(510,l|0,ca|0);na=B;B=0;if(na&1){na=Rb()|0;ra=Q;sa=na;ta=1}else{B=0;ua(163,la|0,i|0,j|0,540,l|0);na=B;B=0;if(na&1)xa=1;else{B=0;eb(503,la|0,1240,229);B=0;xa=0}na=Rb()|0;oa=Q;Yua(l);ra=oa;sa=na;ta=xa}Yua(j);Yua(i);if(ta){pa=ra;qa=sa}else{za=ra;Aa=sa;break b}}else{na=Rb()|0;pa=Q;qa=na}while(0);zb(la|0);za=pa;Aa=qa}else da=23;while(0);if((da|0)==23){ja=Rb()|0;za=Q;Aa=ja}k[h>>2]=27468;k[Z>>2]=27488;k[ca>>2]=27560;Yua(ga);Ava(ca);vva(Z);Ba=za;Ca=Aa;Qb(Ca|0)}while(0);ea=ha;fa=ia;vva(Z);Qb(fa|0)}else if((da|0)==32){ca=m+56|0;Y=m+4|0;k[m>>2]=27524;k[ca>>2]=27544;B=0;wa(508,m+56|0,Y|0);ja=B;B=0;if(ja&1){ja=Rb()|0;Da=Q;Ea=ja;vva(ca);Qb(Ea|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[ca>>2]=27488;B=0;va(448,Y|0);ja=B;B=0;do if(ja&1){ka=Rb()|0;Fa=Q;Ga=ka}else{k[Y>>2]=27560;ka=m+36|0;k[ka>>2]=0;k[ka+4>>2]=0;k[ka+8>>2]=0;k[ka+12>>2]=0;k[m+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Y|0,d|0);ma=B;B=0;if(ma&1){ma=Rb()|0;na=Q;Yua(d);Yua(ka);Ava(Y);Fa=na;Ga=ma;break}Yua(d);B=0;ma=Ia(40,m|0,135593,28)|0;na=B;B=0;c:do if(!(na&1)?(B=0,Xa(239,ma|0,0)|0,oa=B,B=0,!(oa&1)):0){oa=Ab(20)|0;B=0;eb(502,n|0,129498,89);Ha=B;B=0;do if(!(Ha&1)){B=0;eb(502,o|0,137199,23);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;Ka=Q;Yua(n);La=Ka;Ma=Ja;break}B=0;wa(510,q|0,Y|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;Na=1;Oa=Q;Pa=Ja}else{B=0;ua(163,oa|0,n|0,o|0,541,q|0);Ja=B;B=0;if(Ja&1)Qa=1;else{B=0;eb(503,oa|0,1240,229);B=0;Qa=0}Ja=Rb()|0;Ka=Q;Yua(q);Na=Qa;Oa=Ka;Pa=Ja}Yua(o);Yua(n);if(Na){La=Oa;Ma=Pa}else{Ra=Oa;Sa=Pa;break c}}else{Ja=Rb()|0;La=Q;Ma=Ja}while(0);zb(oa|0);Ra=La;Sa=Ma}else da=47;while(0);if((da|0)==47){ma=Rb()|0;Ra=Q;Sa=ma}k[m>>2]=27468;k[ca>>2]=27488;k[Y>>2]=27560;Yua(ka);Ava(Y);vva(ca);Ba=Ra;Ca=Sa;Qb(Ca|0)}while(0);Da=Fa;Ea=Ga;vva(ca);Qb(Ea|0)}}}while(0);up(c,O,674,0.0);up(c,P,677,0.0);d:do switch(k[e>>2]|0){case 541:{Ea=Wo(c,683)|0;if(!Ea){Ga=x+56|0;Fa=x+4|0;k[x>>2]=27524;k[Ga>>2]=27544;B=0;wa(508,x+56|0,Fa|0);Da=B;B=0;if(Da&1){Da=Rb()|0;Ta=Q;Ua=Da;vva(Ga);Qb(Ua|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[Ga>>2]=27488;B=0;va(448,Fa|0);Da=B;B=0;do if(Da&1){Sa=Rb()|0;Va=Q;Wa=Sa}else{k[Fa>>2]=27560;Sa=x+36|0;k[Sa>>2]=0;k[Sa+4>>2]=0;k[Sa+8>>2]=0;k[Sa+12>>2]=0;k[x+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Fa|0,d|0);Ra=B;B=0;if(Ra&1){Ra=Rb()|0;m=Q;Yua(d);Yua(Sa);Ava(Fa);Va=m;Wa=Ra;break}Yua(d);B=0;Ra=Ia(40,x|0,129693,56)|0;m=B;B=0;e:do if(!(m&1)?(B=0,Xa(239,Ra|0,0)|0,Ma=B,B=0,!(Ma&1)):0){Ma=Ab(20)|0;B=0;eb(502,y|0,129498,89);La=B;B=0;do if(!(La&1)){B=0;eb(502,z|0,137199,23);Pa=B;B=0;if(Pa&1){Pa=Rb()|0;Oa=Q;Yua(y);Ya=Oa;Za=Pa;break}B=0;wa(510,A|0,Fa|0);Pa=B;B=0;if(Pa&1){Pa=Rb()|0;_a=1;$a=Q;ab=Pa}else{B=0;ua(163,Ma|0,y|0,z|0,555,A|0);Pa=B;B=0;if(Pa&1)bb=1;else{B=0;eb(503,Ma|0,1240,229);B=0;bb=0}Pa=Rb()|0;Oa=Q;Yua(A);_a=bb;$a=Oa;ab=Pa}Yua(z);Yua(y);if(_a){Ya=$a;Za=ab}else{cb=$a;db=ab;break e}}else{Pa=Rb()|0;Ya=Q;Za=Pa}while(0);zb(Ma|0);cb=Ya;db=Za}else da=100;while(0);if((da|0)==100){Ra=Rb()|0;cb=Q;db=Ra}k[x>>2]=27468;k[Ga>>2]=27488;k[Fa>>2]=27560;Yua(Sa);Ava(Fa);vva(Ga);Ba=cb;Ca=db;Qb(Ca|0)}while(0);Ta=Va;Ua=Wa;vva(Ga);Qb(Ua|0)}if((Hc[k[(k[Ea>>2]|0)+20>>2]&511](Ea)|0)==626){up(c,U,683,0.0);if(M)fb=0;else break d;while(1){Fa=R+(fb<<3)|0;ba=+p[Fa>>3];p[T+(fb<<3)>>3]=ba;p[Fa>>3]=ba+ +p[U+(fb<<3)>>3];fb=fb+1|0;if((fb|0)==(L|0)){da=108;break d}}}Ga=s+56|0;Fa=s+4|0;k[s>>2]=27524;k[Ga>>2]=27544;B=0;wa(508,s+56|0,Fa|0);Da=B;B=0;if(Da&1){Da=Rb()|0;gb=Q;hb=Da;vva(Ga);Qb(hb|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[Ga>>2]=27488;B=0;va(448,Fa|0);Da=B;B=0;do if(Da&1){ca=Rb()|0;ib=Q;jb=ca}else{k[Fa>>2]=27560;ca=s+36|0;k[ca>>2]=0;k[ca+4>>2]=0;k[ca+8>>2]=0;k[ca+12>>2]=0;k[s+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Fa|0,d|0);Ra=B;B=0;if(Ra&1){Ra=Rb()|0;m=Q;Yua(d);Yua(ca);Ava(Fa);ib=m;jb=Ra;break}Yua(d);B=0;Ra=Ia(40,s|0,129654,38)|0;m=B;B=0;f:do if((((!(m&1)?(B=0,ka=ya(k[(k[Ea>>2]|0)+20>>2]|0,Ea|0)|0,La=B,B=0,!(La&1)):0)?(B=0,La=ya(427,ka|0)|0,ka=B,B=0,!(ka&1)):0)?(ka=Lta(La)|0,B=0,oa=Ia(40,Ra|0,La|0,ka|0)|0,ka=B,B=0,!(ka&1)):0)?(B=0,Xa(239,oa|0,0)|0,oa=B,B=0,!(oa&1)):0){oa=Ab(20)|0;B=0;eb(502,u|0,129498,89);ka=B;B=0;do if(!(ka&1)){B=0;eb(502,v|0,137199,23);La=B;B=0;if(La&1){La=Rb()|0;Pa=Q;Yua(u);kb=Pa;lb=La;break}B=0;wa(510,w|0,Fa|0);La=B;B=0;if(La&1){La=Rb()|0;mb=1;nb=Q;ob=La}else{B=0;ua(163,oa|0,u|0,v|0,552,w|0);La=B;B=0;if(La&1)pb=1;else{B=0;eb(503,oa|0,1240,229);B=0;pb=0}La=Rb()|0;Pa=Q;Yua(w);mb=pb;nb=Pa;ob=La}Yua(v);Yua(u);if(mb){kb=nb;lb=ob}else{qb=nb;rb=ob;break f}}else{La=Rb()|0;kb=Q;lb=La}while(0);zb(oa|0);qb=kb;rb=lb}else da=76;while(0);if((da|0)==76){Ra=Rb()|0;qb=Q;rb=Ra}k[s>>2]=27468;k[Ga>>2]=27488;k[Fa>>2]=27560;Yua(ca);Ava(Fa);vva(Ga);Ba=qb;Ca=rb;Qb(Ca|0)}while(0);gb=ib;hb=jb;vva(Ga);Qb(hb|0);break}case 538:{Fa=Wo(c,683)|0;if(!Fa){Ea=H+56|0;Da=H+4|0;k[H>>2]=27524;k[Ea>>2]=27544;B=0;wa(508,H+56|0,Da|0);Ra=B;B=0;if(Ra&1){Ra=Rb()|0;sb=Q;tb=Ra;vva(Ea);Qb(tb|0)}k[H+128>>2]=0;k[H+132>>2]=-1;k[H>>2]=27468;k[Ea>>2]=27488;B=0;va(448,Da|0);Ra=B;B=0;do if(Ra&1){m=Rb()|0;ub=Q;vb=m}else{k[Da>>2]=27560;m=H+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[H+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Da|0,d|0);Sa=B;B=0;if(Sa&1){Sa=Rb()|0;ka=Q;Yua(d);Yua(m);Ava(Da);ub=ka;vb=Sa;break}Yua(d);B=0;Sa=Ia(40,H|0,129750,57)|0;ka=B;B=0;g:do if(!(ka&1)?(B=0,Xa(239,Sa|0,0)|0,Ma=B,B=0,!(Ma&1)):0){Ma=Ab(20)|0;B=0;eb(502,I|0,129498,89);La=B;B=0;do if(!(La&1)){B=0;eb(502,J|0,137199,23);Pa=B;B=0;if(Pa&1){Pa=Rb()|0;Oa=Q;Yua(I);wb=Oa;xb=Pa;break}B=0;wa(510,K|0,Da|0);Pa=B;B=0;if(Pa&1){Pa=Rb()|0;yb=1;Bb=Q;Cb=Pa}else{B=0;ua(163,Ma|0,I|0,J|0,567,K|0);Pa=B;B=0;if(Pa&1)Db=1;else{B=0;eb(503,Ma|0,1240,229);B=0;Db=0}Pa=Rb()|0;Oa=Q;Yua(K);yb=Db;Bb=Oa;Cb=Pa}Yua(J);Yua(I);if(yb){wb=Bb;xb=Cb}else{Eb=Bb;Fb=Cb;break g}}else{Pa=Rb()|0;wb=Q;xb=Pa}while(0);zb(Ma|0);Eb=wb;Fb=xb}else da=154;while(0);if((da|0)==154){Sa=Rb()|0;Eb=Q;Fb=Sa}k[H>>2]=27468;k[Ea>>2]=27488;k[Da>>2]=27560;Yua(m);Ava(Da);vva(Ea);Ba=Eb;Ca=Fb;Qb(Ca|0)}while(0);sb=ub;tb=vb;vva(Ea);Qb(tb|0)}if((Hc[k[(k[Fa>>2]|0)+20>>2]&511](Fa)|0)==626){up(c,U,683,0.0);if(M)Gb=0;else break d;while(1){Da=R+(Gb<<3)|0;ba=+p[Da>>3];p[S+(Gb<<3)>>3]=ba;p[Da>>3]=ba+ +p[U+(Gb<<3)>>3];Gb=Gb+1|0;if((Gb|0)==(L|0)){da=108;break d}}}Ea=C+56|0;Da=C+4|0;k[C>>2]=27524;k[Ea>>2]=27544;B=0;wa(508,C+56|0,Da|0);Ra=B;B=0;if(Ra&1){Ra=Rb()|0;Hb=Q;Ib=Ra;vva(Ea);Qb(Ib|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[Ea>>2]=27488;B=0;va(448,Da|0);Ra=B;B=0;do if(Ra&1){Ga=Rb()|0;Jb=Q;Kb=Ga}else{k[Da>>2]=27560;Ga=C+36|0;k[Ga>>2]=0;k[Ga+4>>2]=0;k[Ga+8>>2]=0;k[Ga+12>>2]=0;k[C+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Da|0,d|0);Sa=B;B=0;if(Sa&1){Sa=Rb()|0;ka=Q;Yua(d);Yua(Ga);Ava(Da);Jb=ka;Kb=Sa;break}Yua(d);B=0;Sa=Ia(40,C|0,129654,38)|0;ka=B;B=0;h:do if((((!(ka&1)?(B=0,ca=ya(k[(k[Fa>>2]|0)+20>>2]|0,Fa|0)|0,La=B,B=0,!(La&1)):0)?(B=0,La=ya(427,ca|0)|0,ca=B,B=0,!(ca&1)):0)?(ca=Lta(La)|0,B=0,oa=Ia(40,Sa|0,La|0,ca|0)|0,ca=B,B=0,!(ca&1)):0)?(B=0,Xa(239,oa|0,0)|0,oa=B,B=0,!(oa&1)):0){oa=Ab(20)|0;B=0;eb(502,D|0,129498,89);ca=B;B=0;do if(!(ca&1)){B=0;eb(502,E|0,137199,23);La=B;B=0;if(La&1){La=Rb()|0;Pa=Q;Yua(D);Lb=Pa;Mb=La;break}B=0;wa(510,F|0,Da|0);La=B;B=0;if(La&1){La=Rb()|0;Nb=Q;Ob=La;Pb=1}else{B=0;ua(163,oa|0,D|0,E|0,564,F|0);La=B;B=0;if(La&1)Sb=1;else{B=0;eb(503,oa|0,1240,229);B=0;Sb=0}La=Rb()|0;Pa=Q;Yua(F);Nb=Pa;Ob=La;Pb=Sb}Yua(E);Yua(D);if(Pb){Lb=Nb;Mb=Ob}else{Tb=Nb;Ub=Ob;break h}}else{La=Rb()|0;Lb=Q;Mb=La}while(0);zb(oa|0);Tb=Lb;Ub=Mb}else da=130;while(0);if((da|0)==130){Sa=Rb()|0;Tb=Q;Ub=Sa}k[C>>2]=27468;k[Ea>>2]=27488;k[Da>>2]=27560;Yua(Ga);Ava(Da);vva(Ea);Ba=Tb;Ca=Ub;Qb(Ca|0)}while(0);Hb=Jb;Ib=Kb;vva(Ea);Qb(Ib|0);break}default:da=108}while(0);if((da|0)==108?M:0){da=0;do{ba=+p[O+(da<<3)>>3];_=+p[P+(da<<3)>>3];Vb=+p[R+(da<<3)>>3];Wb=ba*ba+_*_+Vb*Vb;Vb=+$(+(+aa(+Wb)));p[V+(da<<3)>>3]=Wb==-G?G:Vb;da=da+1|0}while((da|0)!=(L|0))}switch(k[e>>2]|0){case 538:case 541:break;default:{Vb=+Dp(c,265);Wb=+Dp(c,65);up(c,X,339,0.0);if(M){_=Vb*Wb;M=k[g>>2]|0;da=0;do{p[W+(da<<3)>>3]=_*(+p[X+(da<<3)>>3]-+p[M+((da*3|0)+2<<3)>>3]);da=da+1|0}while((da|0)!=(L|0))}}}Pp(c,679,682);switch(k[e>>2]|0){case 541:{rd[k[(k[c>>2]|0)+48>>2]&511](c,681,T,738);Xb=c;break}case 538:{rd[k[(k[c>>2]|0)+48>>2]&511](c,680,S,738);Xb=c;break}default:{Pp(c,653,654);e=k[c>>2]|0;L=k[e+48>>2]|0;da=Hc[k[e+128>>2]&511](c)|0;rd[L&511](c,653,W,da);Xb=c}}rd[k[(k[Xb>>2]|0)+48>>2]&511](c,679,R,738);rd[k[(k[Xb>>2]|0)+48>>2]&511](c,671,V,738);Tqa(X);Tqa(W);Tqa(V);Tqa(R);Tqa(S);Tqa(T);Tqa(U);Tqa(P);Tqa(O);Tqa(N);N=k[g>>2]|0;if(N)Tqa(N);k[g>>2]=0;g=k[f>>2]|0;if(g)Tqa(g);k[f>>2]=0;r=a;return}function Iba(a,b){a=a|0;b=b|0;return}function Jba(a){a=a|0;Sqa(a);return}function Kba(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0.0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0;a=r;r=r+224|0;d=a+204|0;e=a+200|0;f=a+196|0;g=a+8|0;h=a;i=a+192|0;j=a+56|0;l=a+40|0;m=a+28|0;n=a+16|0;k[i>>2]=0;Gka(c,g,129827);Gka(c,h,129853);if((k[c+40>>2]|0)==300){r=a;return}Qka(c,i,e,f,134812);o=k[e>>2]|0;e=c+52|0;q=k[e>>2]|0;if((o|0)==(q|0)){a:do if((o|0)>0){s=c+36|0;u=c+108|0;v=c+100|0;w=o;x=0;y=0;while(1){if((k[(k[s>>2]|0)+(y<<2)>>2]|0)!=0?(z=(k[i>>2]|0)+(y<<3)|0,A=+$(+(+p[z>>3])),p[t>>3]=A,C=k[t+4>>2]|0,!(C>>>0>2146435072|(C|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){C=Qqa(32)|0;D=x+1|0;B=0;Pa(1,C|0,D+(k[u>>2]|0)|0,y+1+(k[v>>2]|0)|0,0,+(+p[g>>3]*(+p[z>>3]-+p[h>>3])),501);z=B;B=0;if(z&1){E=C;break}ih(b,C)|0;F=k[e>>2]|0;G=D}else{F=w;G=x}y=y+1|0;if((y|0)>=(F|0))break a;else{w=F;x=G}}x=Rb()|0;w=Q;Sqa(E);H=w;I=x;Qb(I|0)}while(0);Mka(c,k[i>>2]|0,134812);r=a;return}if((o|0)==(q+1|0)){E=k[f>>2]|0;G=Rqa(E>>>0>536870911?-1:E<<3)|0;if((E|0)>0){F=k[i>>2]|0;x=ma(o+-1|0,E)|0;o=0;do{p[G+(o<<3)>>3]=+p[F+(x+o<<3)>>3];o=o+1|0}while((o|0)<(E|0))}b:do if((q|0)>0){E=c+36|0;o=c+108|0;x=c+100|0;F=q;w=0;y=0;while(1){if(!(k[(k[E>>2]|0)+(y<<2)>>2]|0)){J=F;K=w}else{v=k[f>>2]|0;u=Rqa(v>>>0>536870911?-1:v<<3)|0;if((v|0)>0){s=k[i>>2]|0;A=+p[g>>3];L=+p[h>>3];D=ma(v,y)|0;C=0;z=0;do{M=A*(+p[s+(D+C<<3)>>3]-L);p[u+(C<<3)>>3]=M;N=+$(+M);p[t>>3]=N;O=k[t+4>>2]|0;z=z|(O>>>0<2146435072|(O|0)==2146435072&(k[t>>2]|0)>>>0<1);C=C+1|0}while((C|0)<(v|0));if(z){C=Qqa(36)|0;D=w+1|0;B=0;Ka(11,C|0,D+(k[o>>2]|0)|0,y+1+(k[x>>2]|0)|0,0,v|0,G|0,u|0,501);s=B;B=0;if(s&1){P=C;break}ih(b,C)|0;R=D}else R=w}else R=w;Tqa(u);J=k[e>>2]|0;K=R}y=y+1|0;if((y|0)>=(J|0))break b;else{F=J;w=K}}w=Rb()|0;F=Q;Sqa(P);H=F;I=w;Qb(I|0)}while(0);Mka(c,k[i>>2]|0,134812);Tqa(G);r=a;return}a=j+56|0;G=j+4|0;k[j>>2]=27524;k[a>>2]=27544;B=0;wa(508,j+56|0,G|0);i=B;B=0;if(i&1){i=Rb()|0;S=Q;T=i;vva(a);Qb(T|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[a>>2]=27488;B=0;va(448,G|0);i=B;B=0;do if(i&1){c=Rb()|0;U=Q;V=c}else{k[G>>2]=27560;c=j+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[j+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,G|0,d|0);P=B;B=0;if(P&1){P=Rb()|0;K=Q;Yua(d);Yua(c);Ava(G);U=K;V=P;break}Yua(d);B=0;P=Ia(40,j|0,129887,14)|0;K=B;B=0;c:do if((((!(K&1)?(B=0,J=ya(427,347)|0,R=B,B=0,!(R&1)):0)?(R=Lta(J)|0,B=0,e=Ia(40,P|0,J|0,R|0)|0,R=B,B=0,!(R&1)):0)?(B=0,R=Ia(40,e|0,144645,14)|0,e=B,B=0,!(e&1)):0)?(B=0,Xa(239,R|0,0)|0,R=B,B=0,!(R&1)):0){R=Ab(20)|0;B=0;eb(502,l|0,129902,76);e=B;B=0;do if(!(e&1)){B=0;eb(502,m|0,135838,17);J=B;B=0;if(J&1){J=Rb()|0;b=Q;Yua(l);W=b;X=J;break}B=0;wa(510,n|0,G|0);J=B;B=0;if(J&1){J=Rb()|0;Y=Q;Z=J;_=1}else{B=0;ua(163,R|0,l|0,m|0,86,n|0);J=B;B=0;if(J&1)aa=1;else{B=0;eb(503,R|0,1240,229);B=0;aa=0}J=Rb()|0;b=Q;Yua(n);Y=b;Z=J;_=aa}Yua(m);Yua(l);if(_){W=Y;X=Z}else{ba=Y;ca=Z;break c}}else{J=Rb()|0;W=Q;X=J}while(0);zb(R|0);ba=W;ca=X}else da=46;while(0);if((da|0)==46){P=Rb()|0;ba=Q;ca=P}k[j>>2]=27468;k[a>>2]=27488;k[G>>2]=27560;Yua(c);Ava(G);vva(a);H=ba;I=ca;Qb(I|0)}while(0);S=U;T=V;vva(a);Qb(T|0)}function Lba(a,b,c){a=a|0;b=b|0;c=c|0;return}function Mba(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a=r;r=r+16|0;d=a+8|0;e=a;if((k[c+40>>2]|0)==302){k[e>>2]=136615;k[e+4>>2]=136636;Ska(c,2,e)}hoa(b,c,501,738,534);k[d>>2]=136615;k[d+4>>2]=136636;Lka(c,2,d);r=a;return}function Nba(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function Oba(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;a=r;r=r+224|0;f=a+16|0;g=a;h=a+214|0;j=a+213|0;l=a+212|0;m=a+208|0;n=a+204|0;o=a+200|0;p=a+64|0;q=a+52|0;s=a+40|0;t=a+28|0;u=c+40|0;if((k[u>>2]|0)==300){r=a;return}zka(c,l,135466);if(!(i[l>>0]|0)){r=a;return}k[g>>2]=135066;k[g+4>>2]=129979;k[g+8>>2]=135039;Ska(c,3,g);l=c+56|0;v=k[l>>2]|0;if((v|0)>0){w=c+32|0;x=v;v=0;y=0;while(1){if(!(i[(k[w>>2]|0)+y>>0]|0)){z=x;A=v}else{C=qh(b,v)|0;Uc[k[(k[C>>2]|0)+480>>2]&63](C,y,c,d,e,738);z=k[l>>2]|0;A=v+1|0}y=y+1|0;if((y|0)>=(z|0))break;else{x=z;v=A}}}zka(c,h,134866);zka(c,j,134882);Fka(c,m,134909);Zka(c,b,137052,353);Zka(c,b,134925,339);Yka(c,b,137955,999,0.0);Zka(c,b,134945,64);Zka(c,b,137867,206);Zka(c,b,134962,928);if((k[u>>2]|0)!=300){Zka(c,b,136615,287);Zka(c,b,136636,288)}Zka(c,b,134991,214);Zka(c,b,135015,217);Zka(c,b,135039,653);Zka(c,b,135066,666);Zka(c,b,129979,698);Zka(c,b,130011,687);Zka(c,b,130224,699);Zka(c,b,134027,39);Zka(c,b,135923,674);Zka(c,b,135944,677);Zka(c,b,135096,679);woa(b,0.0,684);woa(b,0.0,685);woa(b,0.0,686);if(i[j>>0]|0)Zka(c,b,136615,287);Fka(c,n,135117);if((k[n>>2]|0)!=62)Zka(c,b,135140,38);switch(k[m>>2]|0){case 1:{Zka(c,b,135172,105);Zka(c,b,135196,107);Zka(c,b,135210,108);break}case 2:{Zka(c,b,135224,110);Zka(c,b,135238,109);break}case 3:{Fka(c,o,135252);Zka(c,b,135224,110);Zka(c,b,135273,104);Zka(c,b,135210,108);if(!(k[o>>2]|0))Zka(c,b,135288,115);break}case 4:{Zka(c,b,135172,105);Zka(c,b,135196,107);Zka(c,b,135210,108);Zka(c,b,135039,653);Zka(c,b,135066,666);break}case 5:{Zka(c,b,135172,105);Zka(c,b,135196,107);Zka(c,b,135210,108);Zka(c,b,135319,114);break}case 6:{Zka(c,b,135224,110);Zka(c,b,135238,109);Zka(c,b,135039,653);Zka(c,b,135066,666);break}default:{b=p+56|0;o=p+4|0;k[p>>2]=27524;k[b>>2]=27544;B=0;wa(508,p+56|0,o|0);m=B;B=0;if(m&1){m=Rb()|0;D=Q;E=m;vva(b);Qb(E|0)}k[p+128>>2]=0;k[p+132>>2]=-1;k[p>>2]=27468;k[b>>2]=27488;B=0;va(448,o|0);m=B;B=0;do if(m&1){n=Rb()|0;F=Q;G=n}else{k[o>>2]=27560;n=p+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[p+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,o|0,g|0);j=B;B=0;if(j&1){j=Rb()|0;u=Q;Yua(g);Yua(n);Ava(o);F=u;G=j;break}Yua(g);B=0;j=Ia(40,p|0,145010,13)|0;u=B;B=0;if(!(u&1)?(B=0,Xa(239,j|0,0)|0,j=B,B=0,!(j&1)):0){j=Ab(20)|0;B=0;eb(502,q|0,129902,76);u=B;B=0;do if(!(u&1)){B=0;eb(502,s|0,136133,14);h=B;B=0;if(h&1){h=Rb()|0;A=Q;Yua(q);H=A;I=h;break}B=0;wa(510,t|0,o|0);h=B;B=0;if(h&1){h=Rb()|0;J=Q;K=h;L=1}else{B=0;ua(163,j|0,q|0,s|0,215,t|0);h=B;B=0;if(h&1)M=1;else{B=0;eb(503,j|0,1240,229);B=0;M=0}h=Rb()|0;A=Q;Yua(t);J=A;K=h;L=M}Yua(s);Yua(q);if(L){H=J;I=K}else{N=J;O=K;k[p>>2]=27468;k[b>>2]=27488;k[o>>2]=27560;Yua(n);Ava(o);vva(b);Qb(O|0)}}else{h=Rb()|0;H=Q;I=h}while(0);zb(j|0);N=H;O=I;k[p>>2]=27468;k[b>>2]=27488;k[o>>2]=27560;Yua(n);Ava(o);vva(b);Qb(O|0)}u=Rb()|0;N=Q;O=u;k[p>>2]=27468;k[b>>2]=27488;k[o>>2]=27560;Yua(n);Ava(o);vva(b);Qb(O|0)}while(0);D=F;E=G;vva(b);Qb(E|0)}}k[f>>2]=135066;k[f+4>>2]=129979;k[f+8>>2]=135039;Lka(c,3,f);r=a;return}function Pba(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;e=r;r=r+16|0;d=e+8|0;a=e+4|0;f=e;k[a>>2]=0;YN(b,Ika(c,135362,348)|0);YN(b,Ika(c,135343,343)|0);YN(b,Ika(c,130038,342)|0);YN(b,Ika(c,135466,340)|0);YN(b,Ika(c,135488,341)|0);YN(b,Ika(c,134909,111)|0);Hka(c,a,d,135517);g=Qqa(12)|0;B=0;eb(518,g|0,349,k[d>>2]|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;Sqa(g);j=i;l=h;Qb(l|0)}YN(b,g);g=k[d>>2]|0;do if(!g)m=0;else{h=Qqa(16)|0;B=0;ib(294,h|0,350,k[a>>2]|0,g|0);i=B;B=0;if(!(i&1)){YN(b,h);m=k[d>>2]|0;break}i=Rb()|0;n=Q;Sqa(h);j=n;l=i;Qb(l|0)}while(0);Nka(c,a,m,135517);Fka(c,f,134909);m=k[f>>2]|0;if((m&-3|0)==4){YN(b,Ika(c,135546,112)|0);o=k[f>>2]|0}else o=m;if((o|0)!=3){r=e;return}YN(b,Ika(c,135252,116)|0);r=e;return}function Qba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0.0,o=0.0,q=0.0,s=0.0;c=r;r=r+32|0;d=c+16|0;e=c+12|0;f=c+8|0;g=c;if(!($p(b)|0)){r=c;return}if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){r=c;return}k[f>>2]=0;op(b,d,341);if(i[d>>0]|0){d=Wo(b,653)|0;VB(b,e,f,Hc[k[(k[b>>2]|0)+128>>2]&511](b)|0);h=Qqa(72)|0;B=0;va(493,h|0);j=B;B=0;if(j&1){j=Rb()|0;Sqa(h);Qb(j|0)}if((k[e>>2]|0)>0){j=0;do{l=k[(k[h>>2]|0)+32>>2]|0;m=Hc[k[(k[b>>2]|0)+128>>2]&511](b)|0;nd[l&1023](h,m,k[(k[f>>2]|0)+(j<<2)>>2]|0);nd[k[(k[d>>2]|0)+48>>2]&1023](d,g,h);m=ed[k[(k[b>>2]|0)+156>>2]&511](b,k[(k[f>>2]|0)+(j<<2)>>2]|0)|0;l=a+((Qn(m)|0)<<3)|0;if(+p[l>>3]==1.0){nd[k[(k[d>>2]|0)+48>>2]&1023](d,g,h);n=+p[g>>3];o=+Dp(b,210);q=+Dp(b,66);s=+Dp(b,212);Un(m,0,o*(s-n*+Dp(b,209)-q))}else Zn(m,0);j=j+1|0}while((j|0)<(k[e>>2]|0))}e=k[f>>2]|0;if(e)Tqa(e);k[f>>2]=0;Ec[k[(k[h>>2]|0)+4>>2]&1023](h)}r=c;return}function Rba(a){a=a|0;var b=0,c=0;b=a+20|0;if((th(k[b>>2]|0)|0)>0)c=0;else return;do{Sba(qh(k[b>>2]|0,c)|0);c=c+1|0}while((c|0)<(th(k[b>>2]|0)|0));return}function Sba(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,C=0.0,D=0.0,E=0.0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0.0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0.0,ha=0.0,ia=0.0,ja=0,ka=0,la=0,ma=0,na=0,oa=0.0,pa=0.0,qa=0.0,ra=0.0,sa=0.0,ta=0.0,ua=0,xa=0.0,za=0.0,Aa=0.0,Ba=0.0,Ca=0.0,Da=0,Ea=0,Fa=0.0,Ga=0.0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0;b=r;r=r+320|0;c=b+264|0;d=b+128|0;e=b+304|0;f=b+300|0;g=b+104|0;h=b+80|0;j=b+56|0;l=b+48|0;m=b+40|0;n=b+32|0;o=b+24|0;q=b+16|0;s=b+8|0;t=b;u=b+296|0;v=b+292|0;w=b+276|0;x=b+280|0;if(!($p(a)|0)){r=b;return}if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){r=b;return}if(_p(a)|0){r=b;return}k[u>>2]=0;k[v>>2]=0;k[w>>2]=0;Uo(a,u);Fc[k[(k[a>>2]|0)+188>>2]&1023](a,v);zp(a,e,645);pp(a,n,358);pp(a,o,67);y=+p[n>>3]==0.0&(i[e>>0]|0)==0?688:687;z=+Dp(a,211);A=+Dp(a,265);C=+Dp(a,267);D=+Dp(a,209);E=+Tba(a,y);e=Wo(a,y)|0;F=Wo(a,653)|0;G=Wo(a,38)|0;H=Wo(a,674)|0;I=Wo(a,677)|0;J=Wo(a,679)|0;K=Qqa(16)|0;B=0;eb(524,K|0,a|0,3);L=B;B=0;if(L&1){L=Rb()|0;M=Q;Sqa(K);N=M;O=L;Qb(O|0)}nd[k[(k[a>>2]|0)+380>>2]&1023](a,g,k[v>>2]|0);nd[k[(k[a>>2]|0)+512>>2]&1023](a,w,f);L=k[f>>2]|0;M=Rqa(L>>>0>536870911?-1:L<<3)|0;L=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;P=L>>>0>536870911?-1:L<<3;L=Rqa(P)|0;R=Rqa(P)|0;S=Rqa(P)|0;T=Rqa(P)|0;xp(a,L,y);xp(a,R,653);xp(a,S,699);xp(a,T,39);P=Hc[k[(k[a>>2]|0)+304>>2]&511](a)|0;a:do if((k[f>>2]|0)>0){U=d+56|0;V=d+4|0;W=d+56|0;X=d+128|0;Y=d+132|0;Z=d+36|0;_=d+52|0;$=z*A;aa=g+8|0;ba=g+16|0;ca=h+8|0;da=h+16|0;ea=j+8|0;fa=j+16|0;ga=0.0;ha=0.0;ia=0.0;ja=0;b:while(1){ka=ja<<1;la=k[w>>2]|0;ma=k[la+(ka<<2)>>2]|0;na=k[la+((ka|1)<<2)>>2]|0;Fc[k[(k[P>>2]|0)+28>>2]&1023](P,ma);ka=L+(ma<<3)|0;la=R+(ma<<3)|0;switch(Uba(a,+p[ka>>3],+p[L+(na<<3)>>3],+p[la>>3],+p[R+(na<<3)>>3],+p[S+(ma<<3)>>3],+p[T+(ma<<3)>>3])|0){case 0:{p[M+(ja<<3)>>3]=0.0;oa=0.0;pa=0.0;qa=0.0;break}case 3:case 2:case 1:{rd[k[(k[e>>2]|0)+60>>2]&511](e,h,k[u>>2]|0,P);ra=-(E*+p[h>>3]);sa=-(E*+p[ca>>3]);ta=-(E*+p[da>>3]);ua=30;break}case 4:{xa=+p[ka>>3];za=+p[la>>3];Aa=+Dp(a,270);np(a,c,d,xa,za);za=+p[d>>3];rd[k[(k[F>>2]|0)+60>>2]&511](F,j,k[u>>2]|0,P);xa=D*(za*.6+Aa*(1.0-za));ra=xa*+p[j>>3];sa=xa*+p[ea>>3];ta=xa*+p[fa>>3];ua=30;break}default:{k[d>>2]=27524;k[U>>2]=27544;B=0;wa(508,W|0,V|0);la=B;B=0;if(la&1){ua=22;break b}k[X>>2]=0;k[Y>>2]=-1;k[d>>2]=27468;k[U>>2]=27488;B=0;va(448,V|0);la=B;B=0;if(la&1){ua=23;break b}k[V>>2]=27560;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[_>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,V|0,c|0);la=B;B=0;if(la&1){ua=21;break b}Yua(c);B=0;Ia(40,d|0,130056,35)|0;la=B;B=0;if(la&1){ua=32;break b}B=0;wa(510,x|0,V|0);la=B;B=0;if(la&1){ua=32;break b}B=0;ya(425,x|0)|0;la=B;B=0;if(la&1){ua=33;break b}Yua(x);k[d>>2]=27468;k[U>>2]=27488;k[V>>2]=27560;Yua(Z);Ava(V);vva(U);ra=ia;sa=ha;ta=ga;ua=30}}if((ua|0)==30){ua=0;xa=ra*+p[g>>3]+0.0+sa*+p[aa>>3]+ta*+p[ba>>3];fla(K,l,P);nd[k[(k[H>>2]|0)+48>>2]&1023](H,q,P);nd[k[(k[I>>2]|0)+48>>2]&1023](I,s,P);nd[k[(k[J>>2]|0)+48>>2]&1023](J,t,P);za=+p[q>>3];Aa=+p[s>>3];Ba=+p[t>>3];Ca=+p[l>>3]*(za*za+Aa*Aa+Ba*Ba);nd[k[(k[G>>2]|0)+48>>2]&1023](G,m,P);p[M+(ja<<3)>>3]=(xa+Ca+ +p[m>>3])/$;oa=ta;pa=sa;qa=ra}ja=ja+1|0;la=k[f>>2]|0;if((ja|0)>=(la|0)){Da=la;ua=7;break}else{ga=oa;ha=pa;ia=qa}}if((ua|0)==7){if((Da|0)<=0){ua=8;break}ja=k[w>>2]|0;ia=+p[n>>3];ha=+p[o>>3];ga=C/A;if(ia!=0.0)Ea=0;else{ba=0;while(1){aa=k[ja+(ba<<1<<2)>>2]|0;$=+p[M+(ba<<3)>>3];_=T+(aa<<3)|0;p[_>>3]=$;Y=S+(aa<<3)|0;Ca=$+ +p[Y>>3];p[Y>>3]=Ca<0.0?0.0:Ca;p[_>>3]=ga*$;ba=ba+1|0;if((ba|0)>=(Da|0)){Fa=ia;break a}}}while(1){ba=k[ja+(Ea<<1<<2)>>2]|0;_=S+(ba<<3)|0;$=+p[_>>3];Ca=+p[M+(Ea<<3)>>3];xa=ia*Ca;Ba=$+xa;if(Ba<0.0){Aa=-$/xa;p[_>>3]=0.0;Y=L+(ba<<3)|0;p[Y>>3]=+p[Y>>3]+A*(z*((1.0-Aa)*ia/ha*Ca));Ga=Aa*Ca}else{p[_>>3]=Ba;Ga=Ca}p[T+(ba<<3)>>3]=ga*Ga;Ea=Ea+1|0;if((Ea|0)>=(Da|0)){Fa=ia;break a}}}else if((ua|0)==21){ja=Rb()|0;ba=Q;Yua(c);Yua(Z);Ava(V);Ha=ba;Ja=ja;ua=24}else if((ua|0)==22){ja=Rb()|0;Ka=Q;La=ja;vva(U);Qb(La|0)}else if((ua|0)==23){ja=Rb()|0;Ha=Q;Ja=ja;ua=24}else if((ua|0)==32){ja=Rb()|0;Ma=Q;Na=ja;ua=34}else if((ua|0)==33){ja=Rb()|0;ba=Q;Yua(x);Ma=ba;Na=ja;ua=34}if((ua|0)==24){Ka=Ha;La=Ja;vva(U);Qb(La|0)}else if((ua|0)==34){k[d>>2]=27468;k[U>>2]=27488;k[V>>2]=27560;Yua(Z);Ava(V);vva(U);N=Ma;O=Na;Qb(O|0)}}else ua=8;while(0);if((ua|0)==8)Fa=+p[n>>3];if(Fa!=0.0){rd[k[(k[a>>2]|0)+48>>2]&511](a,y,L,738);rd[k[(k[a>>2]|0)+48>>2]&511](a,699,S,738)}rd[k[(k[a>>2]|0)+48>>2]&511](a,39,T,738);if(P)Ec[k[(k[P>>2]|0)+4>>2]&1023](P);bla(K);Sqa(K);K=k[w>>2]|0;if(K)Tqa(K);k[w>>2]=0;Tqa(L);Tqa(R);Tqa(S);Tqa(T);Tqa(M);M=k[u>>2]|0;if(M)Tqa(M);k[u>>2]=0;u=k[v>>2]|0;if(u)Tqa(u);r=b;return}function Tba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0.0,j=0.0,l=0.0,m=0.0,n=0.0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0,A=0.0,B=0.0,C=0.0;c=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;d=c>>>0>536870911?-1:c<<3;e=Rqa(d)|0;f=Rqa(d)|0;g=Rqa(d)|0;h=Rqa(d)|0;xp(a,e,653);xp(a,f,b);b=(c|0)>0;do if(b){d=0;do{i=+p[e+(d<<3)>>3];j=+Dp(a,210);l=+Dp(a,66);m=+Dp(a,212);n=j*(m-i*+Dp(a,209)-l);p[g+(d<<3)>>3]=n;p[h+(d<<3)>>3]=+p[f+(d<<3)>>3]-n;d=d+1|0}while((d|0)!=(c|0));d=(c|0)>1;if(+p[h>>3]<0.0){if(d){o=1;q=1}else break;while(1){if(!(o<<24>>24))r=0;else r=+p[h+(q<<3)>>3]<0.0;q=q+1|0;if((q|0)==(c|0)){s=r;break}else o=r&1}}else{if(d){t=1;u=1}else break;while(1){if(t)v=+p[h+(u<<3)>>3]>=0.0;else v=0;u=u+1|0;if((u|0)==(c|0)){s=v;break}else t=v}}if(!s){n=+Dp(a,210);l=+Dp(a,66);i=+Dp(a,212);m=n*(i-+Dp(a,209)*0.0-l)+-1.0;l=+Dp(a,210);i=+Dp(a,271);n=+Dp(a,270);j=+Dp(a,210);w=+Dp(a,66);x=+Dp(a,212);d=j*(x-+Dp(a,209)*0.0-w)>m;m=(d?n:i)/l;l=+Dp(a,210);i=+Dp(a,66);n=+Dp(a,212);w=l*(n-+Dp(a,209)*0.0-i)+1.0;i=+Dp(a,210);n=+Dp(a,271);l=+Dp(a,270);x=+Dp(a,210);j=+Dp(a,66);y=+Dp(a,212);d=x*(y-+Dp(a,209)*0.0-j)>w;w=(d?l:n)/i;if(b){i=0.0;n=0.0;d=0;while(1){l=+p[f+(d<<3)>>3];j=+p[g+(d<<3)>>3];z=l<j;y=z?i+(j-l):i;x=z?n:n+(l-j);d=d+1|0;if((d|0)==(c|0)){A=y;B=x;break}else{i=y;n=x}}}else{A=0.0;B=0.0}n=A/(A+B);C=m*w/(w*n+m*(1.0-n));Tqa(g);Tqa(h);Tqa(e);Tqa(f);return +C}}while(0);B=+p[f>>3];A=+p[e>>3];n=+Dp(a,210);i=+Dp(a,271);x=+Dp(a,270);y=+Dp(a,210);j=+Dp(a,66);l=+Dp(a,212);c=y*(l-A*+Dp(a,209)-j)>B;C=(c?x:i)/n;Tqa(g);Tqa(h);Tqa(e);Tqa(f);return +C}function Uba(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;var h=0,i=0,j=0,l=0.0,m=0.0,n=0.0,o=0;h=r;r=r+16|0;i=h;if(!($p(a)|0)){j=-1;r=h;return j|0}if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){j=-1;r=h;return j|0}pp(a,i,358);l=+Dp(a,210);m=+Dp(a,66);n=+Dp(a,212);if(!(l*(n-+Dp(a,209)*d-m)>b)){b=+Dp(a,210);m=+Dp(a,66);d=+Dp(a,212);if(b*(d-+Dp(a,209)*e-m)>c)o=g<0.0&+p[i>>3]==0.0?2:3;else o=4}else o=!(f<=0.0)&1;j=o;r=h;return j|0}function Vba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0;a=r;r=r+160|0;c=a;d=a+24|0;e=a+12|0;a:do if(CY()|0){f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;q=Q;Yua(c);Yua(l);Ava(g);m=q;n=o;break}Yua(c);B=0;Ia(40,d|0,130092,22)|0;o=B;B=0;if(!(o&1)?(B=0,wa(510,e|0,g|0),o=B,B=0,!(o&1)):0){B=0;ya(425,e|0)|0;o=B;B=0;if(!(o&1)){Yua(e);k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);break a}o=Rb()|0;q=Q;Yua(e);s=q;t=o;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(t|0)}o=Rb()|0;s=Q;t=o;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(t|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}while(0);xh(b,501);C_(b);joa(b,687,688);dO(k[b+44>>2]|0,c,358);if(!(+p[c>>3]==0.0)){Wba(b);r=a;return}c=b+20|0;if((th(k[c>>2]|0)|0)>0)u=0;else{r=a;return}do{Sba(qh(k[c>>2]|0,u)|0);u=u+1|0}while((u|0)<(th(k[c>>2]|0)|0));r=a;return}function Wba(a){a=a|0;var b=0,c=0,d=0,e=0;b=r;r=r+16|0;c=b+8|0;d=a+44|0;bO(k[d>>2]|0,c,341);dO(k[d>>2]|0,b,358);d=a+20|0;if((th(k[d>>2]|0)|0)>0){e=0;do{eca(qh(k[d>>2]|0,e)|0);e=e+1|0}while((e|0)<(th(k[d>>2]|0)|0))}if((th(k[d>>2]|0)|0)>0){e=0;do{Sba(qh(k[d>>2]|0,e)|0);e=e+1|0}while((e|0)<(th(k[d>>2]|0)|0))}if(!(i[c>>0]|0)){r=b;return}lca(a);r=b;return}function Xba(a,b){a=a|0;b=b|0;return 0}function Yba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,129902,76);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,480,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Zba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if(!($p(b)|0)){c=0;return c|0}d=_ba(a,b)|0;a=$ba(0,b)|0;b=Qqa(68)|0;B=0;eb(515,b|0,d|0,a|0);e=B;B=0;if(e&1){e=Rb()|0;Sqa(b);Qb(e|0)}if(d){HN(d);Sqa(d)}if(!a){c=b;return c|0}HN(a);Sqa(a);c=b;return c|0}function _ba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0,G=0,H=0,I=0,J=0.0,K=0.0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0.0,_=0,ba=0,ca=0,da=0.0,ea=0.0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0.0,na=0.0,oa=0.0,pa=0.0,qa=0.0,ra=0.0,sa=0.0,ta=0.0,ua=0.0,va=0,wa=0,xa=0;a=r;r=r+256|0;c=a+244|0;d=a+232|0;e=a+224|0;f=a+216|0;g=a+208|0;h=a+200|0;i=a+192|0;j=a+184|0;l=a+176|0;m=a+168|0;n=a+160|0;o=a+152|0;q=a+144|0;s=a+240|0;t=a+72|0;u=a;if(!($p(b)|0)){v=0;r=a;return v|0}k[s>>2]=0;w=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;x=gq(b,534)|0;y=Rqa(w>>>0>536870911?-1:w<<3)|0;z=w*3|0;A=z>>>0>536870911?-1:z<<3;z=Rqa(A)|0;B=Rqa(A)|0;C=Rqa(A)|0;A=t;D=A+72|0;do{k[A>>2]=0;A=A+4|0}while((A|0)<(D|0));Uo(b,s);pp(b,e,358);cp(b,c,348);+Dp(b,266);E=+Dp(b,265);+Dp(b,65);+Dp(b,210);+Dp(b,270);A=Wo(b,674)|0;D=Wo(b,677)|0;F=Wo(b,679)|0;G=Wo(b,684)|0;H=Wo(b,685)|0;I=Wo(b,686)|0;if((k[c>>2]|0)==2)J=+id[k[(k[b>>2]|0)+292>>2]&63](b,k[s>>2]|0);else J=0.0;K=+Tba(b,688);L=ed[k[(k[b>>2]|0)+308>>2]&511](b,4)|0;M=Hc[k[(k[L>>2]|0)+8>>2]&511](L)|0;a:do if((M|0)<(Hc[k[(k[L>>2]|0)+12>>2]&511](L)|0)){N=L+8|0;O=t+32|0;P=t+64|0;Q=x+12|0;R=u+8|0;S=u+16|0;T=u+24|0;U=u+32|0;V=u+40|0;W=u+48|0;X=u+56|0;Y=u+64|0;Z=K/E;_=(w|0)>0;ba=w<<1;ca=M;while(1){Fc[k[(k[L>>2]|0)+24>>2]&1023](L,ca);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[s>>2]|0,L);da=+p[N>>3]*+p[d>>3];p[q>>3]=da;ea=+p[e>>3];if(ea!=0.0)p[q>>3]=da*ea;fa=k[s>>2]|0;ga=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;ha=ga*3|0;ia=Rqa(ha>>>0>536870911?-1:ha<<3)|0;rd[k[(k[b>>2]|0)+340>>2]&511](b,ia,fa,L);if((ga|0)>0){fa=ga<<1;ha=0;do{p[B+(ha<<3)>>3]=+p[ia+(ha<<3)>>3];ja=ha+ga|0;p[B+(ja<<3)>>3]=+p[ia+(ja<<3)>>3];ja=ha+fa|0;p[B+(ja<<3)>>3]=+p[ia+(ja<<3)>>3];ha=ha+1|0}while((ha|0)!=(ga|0))}Tqa(ia);ea=K*+p[q>>3]/E;p[t>>3]=ea;p[O>>3]=ea;p[P>>3]=ea;ZX(B,3,w,1,t,3,3,0,B,3,w,0,k[Q>>2]|0,1)|0;ga=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;ha=Rqa(ga>>>0>536870911?-1:ga<<3)|0;nd[k[(k[b>>2]|0)+336>>2]&1023](b,ha,L);if((ga|0)>0){fa=ga<<1;ja=0;do{ea=+p[ha+(ja<<3)>>3];p[B+(ja<<3)>>3]=ea;p[B+(ja+ga<<3)>>3]=ea;p[B+(ja+fa<<3)>>3]=ea;ja=ja+1|0}while((ja|0)!=(ga|0))}Tqa(ha);ga=k[s>>2]|0;ja=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;fa=ja*3|0;ia=Rqa(fa>>>0>536870911?-1:fa<<3)|0;rd[k[(k[b>>2]|0)+340>>2]&511](b,ia,ga,L);if((ja|0)>0){ga=ja<<1;fa=0;do{p[C+(fa<<3)>>3]=+p[ia+(fa<<3)>>3];ka=fa+ja|0;p[C+(ka<<3)>>3]=+p[ia+(ka<<3)>>3];ka=fa+ga|0;p[C+(ka<<3)>>3]=+p[ia+(ka<<3)>>3];fa=fa+1|0}while((fa|0)!=(ja|0))}Tqa(ia);nd[k[(k[A>>2]|0)+48>>2]&1023](A,f,L);nd[k[(k[G>>2]|0)+48>>2]&1023](G,i,L);ea=+p[f>>3]-+p[i>>3];nd[k[(k[D>>2]|0)+48>>2]&1023](D,g,L);nd[k[(k[H>>2]|0)+48>>2]&1023](H,j,L);da=+p[g>>3]-+p[j>>3];nd[k[(k[F>>2]|0)+48>>2]&1023](F,h,L);nd[k[(k[I>>2]|0)+48>>2]&1023](I,l,L);la=+p[h>>3]-+p[l>>3];na=+p[q>>3];p[t>>3]=ea*na;p[O>>3]=da*na;p[P>>3]=na*la;ZX(B,3,w,1,t,3,3,0,C,3,w,0,k[Q>>2]|0,1)|0;if(+p[e>>3]!=0.0){p[q>>3]=+p[N>>3]*+p[d>>3];nd[k[(k[b>>2]|0)+336>>2]&1023](b,y,L);ZX(y,w,1,0,q,1,1,0,y,1,w,0,k[Q>>2]|0,1)|0;p[q>>3]=+p[q>>3]*+p[e>>3]}switch(k[c>>2]|0){case 1:{rd[k[(k[b>>2]|0)+108>>2]&511](b,m,n,o);na=ea*ea;oa=da*da;pa=la*la;qa=+aa(+(na+oa+pa))+1.0e-14;ra=ea*+p[m>>3]/qa;sa=da*+p[n>>3]/qa;ta=la*+p[o>>3]/qa;ua=+aa(+(ra*ra+sa*sa+ta*ta))/(qa*2.0);qa=ua*+$(+(ea*da));ta=ua*+$(+(ea*la));ea=ua*+$(+(da*la));la=+p[q>>3];p[u>>3]=la*(na*ua);na=la*qa;p[R>>3]=na;qa=la*ta;p[S>>3]=qa;p[T>>3]=na;p[U>>3]=la*(oa*ua);oa=la*ea;p[V>>3]=oa;p[W>>3]=qa;p[X>>3]=oa;p[Y>>3]=la*(pa*ua);ja=k[s>>2]|0;fa=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;ga=fa*3|0;ha=Rqa(ga>>>0>536870911?-1:ga<<3)|0;rd[k[(k[b>>2]|0)+340>>2]&511](b,ha,ja,L);if((fa|0)>0){ja=fa<<1;ga=0;do{p[C+(ga<<3)>>3]=+p[ha+(ga<<3)>>3];ka=ga+fa|0;p[C+(ka<<3)>>3]=+p[ha+(ka<<3)>>3];ka=ga+ja|0;p[C+(ka<<3)>>3]=+p[ha+(ka<<3)>>3];ga=ga+1|0}while((ga|0)!=(fa|0))}Tqa(ha);ZX(C,3,w,1,u,3,3,0,C,3,w,0,k[Q>>2]|0,1)|0;break}case 2:{rd[k[(k[b>>2]|0)+340>>2]&511](b,z,k[s>>2]|0,L);ua=+Pc[k[(k[b>>2]|0)+440>>2]&7](b,+p[f>>3]-+p[i>>3],+p[g>>3]-+p[j>>3],+p[h>>3]-+p[l>>3],J,Z);if(_){fa=k[Q>>2]|0;ga=0;do{ja=z+(ga<<3)|0;ia=z+(ga+w<<3)|0;ka=z+(ga+ba<<3)|0;va=ma(ga,w)|0;wa=0;do{pa=+p[f>>3]-+p[i>>3];la=+p[g>>3]-+p[j>>3];oa=+p[h>>3]-+p[l>>3];xa=fa+(wa+va<<3)|0;p[xa>>3]=+p[xa>>3]+ua*+p[q>>3]*(pa*+p[ja>>3]+la*+p[ia>>3]+oa*+p[ka>>3])*(pa*+p[z+(wa<<3)>>3]+la*+p[z+(wa+w<<3)>>3]+oa*+p[z+(wa+ba<<3)>>3]);wa=wa+1|0}while((wa|0)!=(w|0));ga=ga+1|0}while((ga|0)!=(w|0))}if(+p[e>>3]!=0.0?(p[q>>3]=+p[N>>3]*+p[d>>3],_):0){ga=k[Q>>2]|0;fa=0;do{ha=z+(fa<<3)|0;wa=z+(fa+w<<3)|0;ka=z+(fa+ba<<3)|0;ia=ma(fa,w)|0;ja=0;do{va=ga+(ja+ia<<3)|0;p[va>>3]=+p[va>>3]+ua*+p[q>>3]*+p[y+(ja<<3)>>3]*((+p[f>>3]-+p[i>>3])*+p[ha>>3]+(+p[g>>3]-+p[j>>3])*+p[wa>>3]+(+p[h>>3]-+p[l>>3])*+p[ka>>3]);ja=ja+1|0}while((ja|0)!=(w|0));fa=fa+1|0}while((fa|0)!=(w|0))}break}default:{}}ca=ca+1|0;if((ca|0)>=(Hc[k[(k[L>>2]|0)+12>>2]&511](L)|0))break a}}while(0);w=k[s>>2]|0;if(w)Tqa(w);k[s>>2]=0;Tqa(y);Tqa(z);Tqa(B);Tqa(C);Ec[k[(k[L>>2]|0)+4>>2]&1023](L);v=x;r=a;return v|0}function $ba(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,s=0,t=0,u=0,v=0.0,w=0,x=0;a=r;r=r+32|0;c=a+16|0;d=a+8|0;e=a;f=a+24|0;if(!($p(b)|0)){g=0;r=a;return g|0}if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){g=0;r=a;return g|0}if(!(_p(b)|0)){g=0;r=a;return g|0}k[f>>2]=0;h=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;i=gq(b,534)|0;j=Rqa(h>>>0>536870911?-1:h<<3)|0;Fc[k[(k[b>>2]|0)+188>>2]&1023](b,f);pp(b,c,358);+Dp(b,65);l=+Dp(b,266);m=+Dp(b,265);n=+Dp(b,210);o=+Dp(b,213);q=+Dp(b,269);s=ed[k[(k[b>>2]|0)+324>>2]&511](b,4)|0;t=Hc[k[(k[s>>2]|0)+8>>2]&511](s)|0;if((t|0)<(Hc[k[(k[s>>2]|0)+12>>2]&511](s)|0)){u=s+8|0;v=m*n;w=i+12|0;x=t;do{Fc[k[(k[s>>2]|0)+24>>2]&1023](s,x);rd[k[(k[b>>2]|0)+264>>2]&511](b,d,k[f>>2]|0,s);nd[k[(k[b>>2]|0)+336>>2]&1023](b,j,s);n=q*(o*(l*(+p[u>>3]*+p[d>>3])))/v;p[e>>3]=n;m=+p[c>>3];if(m!=0.0)p[e>>3]=m*n;ZX(j,h,1,0,e,1,1,0,j,1,h,0,k[w>>2]|0,1)|0;x=x+1|0}while((x|0)<(Hc[k[(k[s>>2]|0)+12>>2]&511](s)|0))}Ec[k[(k[s>>2]|0)+4>>2]&1023](s);Tqa(j);j=k[f>>2]|0;if(j)Tqa(j);g=i;r=a;return g|0}function aca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if(!($p(b)|0)){c=0;return c|0}a=bca(0,b)|0;d=cca(0,b)|0;e=dca(0,b)|0;b=Qqa(24)|0;B=0;ib(300,b|0,a|0,d|0,e|0);f=B;B=0;if(f&1){f=Rb()|0;Sqa(b);Qb(f|0)}if(a){SN(a);Sqa(a)}if(d){SN(d);Sqa(d)}if(!e){c=b;return c|0}SN(e);Sqa(e);c=b;return c|0}function bca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0.0,L=0.0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0.0,Z=0,_=0,$=0.0,aa=0.0,ba=0.0,ca=0,da=0.0,ea=0.0;a=r;r=r+128|0;c=a+124|0;d=a+112|0;e=a+104|0;f=a+96|0;g=a+88|0;h=a+80|0;i=a+56|0;j=a+48|0;l=a+24|0;m=a+16|0;n=a+8|0;o=a;q=a+120|0;if(!($p(b)|0)){s=0;r=a;return s|0}k[q>>2]=0;t=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;u=iq(b,534)|0;v=Rqa(t>>>0>536870911?-1:t<<3)|0;w=t*3|0;x=Rqa(w>>>0>536870911?-1:w<<3)|0;Uo(b,q);y=+Dp(b,265);z=+Dp(b,210);A=+Dp(b,270);B=+Dp(b,271);C=+Dp(b,209);D=+Dp(b,211);pp(b,f,358);cp(b,c,348);w=Wo(b,674)|0;E=Wo(b,677)|0;F=Wo(b,679)|0;G=Wo(b,688)|0;H=Wo(b,653)|0;if(+p[f>>3]!=0.0)I=Wo(b,687)|0;else I=0;if((k[c>>2]|0)==2){J=+id[k[(k[b>>2]|0)+292>>2]&63](b,k[q>>2]|0);K=J;L=+Tba(b,688)}else{K=0.0;L=0.0}M=ed[k[(k[b>>2]|0)+308>>2]&511](b,4)|0;N=Hc[k[(k[M>>2]|0)+8>>2]&511](M)|0;if((N|0)<(Hc[k[(k[M>>2]|0)+12>>2]&511](M)|0)){O=M+8|0;P=(t|0)>0;Q=u+4|0;J=L/y;R=t<<1;L=(B-A)/D;D=z*C;S=(t|0)<1;T=i+8|0;U=l+8|0;V=i+16|0;W=l+16|0;X=N;z=0.0;while(1){Fc[k[(k[M>>2]|0)+24>>2]&1023](M,X);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[q>>2]|0,M);nd[k[(k[b>>2]|0)+336>>2]&1023](b,v,M);ad[k[(k[b>>2]|0)+516>>2]&63](b,e,k[q>>2]|0,M,w,E,F);A=+p[e>>3]/y*+p[d>>3]*+p[O>>3];B=+p[f>>3];Y=B!=0.0?A*B:A;if(P){N=k[Q>>2]|0;Z=0;do{_=N+(Z<<3)|0;p[_>>3]=Y*+p[v+(Z<<3)>>3]+ +p[_>>3];Z=Z+1|0}while((Z|0)!=(t|0))}nd[k[(k[G>>2]|0)+48>>2]&1023](G,h,M);nd[k[(k[H>>2]|0)+48>>2]&1023](H,j,M);A=+p[j>>3];B=+Dp(b,210);$=+Dp(b,66);aa=+Dp(b,212);ba=B*(aa-A*+Dp(b,209)-$);if(+p[h>>3]>=ba){rd[k[(k[G>>2]|0)+60>>2]&511](G,i,k[q>>2]|0,M);rd[k[(k[H>>2]|0)+60>>2]&511](H,l,k[q>>2]|0,M);ba=+p[l>>3];$=+p[U>>3];A=+p[W>>3];aa=-(C*(L*(+p[i>>3]*ba+0.0+ +p[T>>3]*$+ +p[V>>3]*A+D*(ba*ba+0.0+$*$+A*A))))/y;A=+p[f>>3];$=A!=0.0?aa*A:aa;if(P){Z=k[Q>>2]|0;N=0;do{_=Z+(N<<3)|0;p[_>>3]=$*+p[v+(N<<3)>>3]+ +p[_>>3];N=N+1|0}while((N|0)!=(t|0));ca=17}else da=A}else ca=17;if((ca|0)==17){ca=0;da=+p[f>>3]}if(da!=0.0){nd[k[(k[I>>2]|0)+48>>2]&1023](I,g,M);$=+p[g>>3]*+p[d>>3]*+p[O>>3];if(P){N=k[Q>>2]|0;Z=0;do{_=N+(Z<<3)|0;p[_>>3]=$*+p[v+(Z<<3)>>3]+ +p[_>>3];Z=Z+1|0}while((Z|0)!=(t|0));ea=$}else ea=$}else ea=z;if((k[c>>2]|0)==2?(rd[k[(k[b>>2]|0)+340>>2]&511](b,x,k[q>>2]|0,M),nd[k[(k[w>>2]|0)+48>>2]&1023](w,m,M),nd[k[(k[E>>2]|0)+48>>2]&1023](E,n,M),nd[k[(k[F>>2]|0)+48>>2]&1023](F,o,M),A=+Pc[k[(k[b>>2]|0)+440>>2]&7](b,+p[m>>3],+p[n>>3],+p[o>>3],K,J),P):0){aa=Y*A;Z=k[Q>>2]|0;N=0;do{_=Z+(N<<3)|0;p[_>>3]=+p[_>>3]+aa*(+p[m>>3]*+p[x+(N<<3)>>3]+ +p[n>>3]*+p[x+(N+t<<3)>>3]+ +p[o>>3]*+p[x+(N+R<<3)>>3]);N=N+1|0}while((N|0)!=(t|0));if(!(+p[f>>3]==0.0|S)){aa=ea*A;N=k[Q>>2]|0;Z=0;do{_=N+(Z<<3)|0;p[_>>3]=+p[_>>3]+aa*(+p[m>>3]*+p[x+(Z<<3)>>3]+ +p[n>>3]*+p[x+(Z+t<<3)>>3]+ +p[o>>3]*+p[x+(Z+R<<3)>>3]);Z=Z+1|0}while((Z|0)!=(t|0))}}X=X+1|0;if((X|0)>=(Hc[k[(k[M>>2]|0)+12>>2]&511](M)|0))break;else z=ea}}Tqa(v);Tqa(x);x=k[q>>2]|0;if(x)Tqa(x);k[q>>2]=0;Ec[k[(k[M>>2]|0)+4>>2]&1023](M);s=u;r=a;return s|0}function cca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0.0,ha=0.0,ia=0.0,ja=0.0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;a=r;r=r+288|0;c=a+260|0;d=a+273|0;e=a+272|0;f=a+96|0;g=a+88|0;h=a+80|0;j=a+72|0;l=a+64|0;m=a+56|0;n=a+48|0;o=a+40|0;q=a+32|0;s=a+24|0;t=a+16|0;u=a+8|0;v=a;w=a+256|0;x=a+120|0;y=a+104|0;if(!($p(b)|0)){z=0;r=a;return z|0}if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){z=0;r=a;return z|0}if(_p(b)|0){z=0;r=a;return z|0}k[w>>2]=0;A=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;C=iq(b,534)|0;D=Rqa(A>>>0>536870911?-1:A<<3)|0;Fc[k[(k[b>>2]|0)+188>>2]&1023](b,w);pp(b,f,358);op(b,e,341);zp(b,d,645);E=+p[f>>3]==0.0&(i[d>>0]|0)==0?688:687;d=Wo(b,674)|0;F=Wo(b,677)|0;G=Wo(b,679)|0;H=Wo(b,E)|0;E=Wo(b,653)|0;I=Wo(b,699)|0;J=Wo(b,39)|0;K=Wo(b,38)|0;L=+Dp(b,265);M=Qqa(16)|0;B=0;eb(524,M|0,b|0,3);N=B;B=0;if(N&1){N=Rb()|0;O=Q;Sqa(M);P=O;R=N;Qb(R|0)}N=ed[k[(k[b>>2]|0)+324>>2]&511](b,4)|0;O=ed[k[(k[b>>2]|0)+332>>2]&511](b,4)|0;S=Hc[k[(k[N>>2]|0)+8>>2]&511](N)|0;a:do if((S|0)<(Hc[k[(k[N>>2]|0)+12>>2]&511](N)|0)){T=N+8|0;U=(A|0)>0;V=C+4|0;W=x+56|0;X=x+4|0;Y=x+56|0;Z=x+128|0;_=x+132|0;$=x+36|0;aa=x+52|0;ba=S;b:while(1){Fc[k[(k[N>>2]|0)+24>>2]&1023](N,ba);Fc[k[(k[O>>2]|0)+24>>2]&1023](O,ba);rd[k[(k[b>>2]|0)+264>>2]&511](b,g,k[w>>2]|0,N);nd[k[(k[b>>2]|0)+336>>2]&1023](b,D,N);c:do if(!(i[e>>0]|0))ca=12;else{nd[k[(k[H>>2]|0)+48>>2]&1023](H,h,N);nd[k[(k[H>>2]|0)+48>>2]&1023](H,j,O);nd[k[(k[E>>2]|0)+48>>2]&1023](E,l,N);nd[k[(k[E>>2]|0)+48>>2]&1023](E,m,O);nd[k[(k[I>>2]|0)+48>>2]&1023](I,n,N);nd[k[(k[J>>2]|0)+48>>2]&1023](J,o,N);switch(Uba(b,+p[h>>3],+p[j>>3],+p[l>>3],+p[m>>3],+p[n>>3],+p[o>>3])|0){case 3:case 2:case 1:case 0:{ca=12;break c;break}case 4:{if(!U)break c;da=k[V>>2]|0;ea=0;while(1){fa=da+(ea<<3)|0;p[fa>>3]=+p[fa>>3]+0.0;ea=ea+1|0;if((ea|0)==(A|0))break c}break}default:{}}k[x>>2]=27524;k[W>>2]=27544;B=0;wa(508,Y|0,X|0);ea=B;B=0;if(ea&1){ca=20;break b}k[Z>>2]=0;k[_>>2]=-1;k[x>>2]=27468;k[W>>2]=27488;B=0;va(448,X|0);ea=B;B=0;if(ea&1){ca=21;break b}k[X>>2]=27560;k[$>>2]=0;k[$+4>>2]=0;k[$+8>>2]=0;k[$+12>>2]=0;k[aa>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,X|0,c|0);ea=B;B=0;if(ea&1){ca=19;break b}Yua(c);B=0;Ia(40,x|0,130056,35)|0;ea=B;B=0;if(ea&1){ca=29;break b}B=0;wa(510,y|0,X|0);ea=B;B=0;if(ea&1){ca=29;break b}B=0;ya(425,y|0)|0;ea=B;B=0;if(ea&1){ca=30;break b}Yua(y);k[x>>2]=27468;k[W>>2]=27488;k[X>>2]=27560;Yua($);Ava(X);vva(W)}while(0);if((ca|0)==12?(ca=0,nd[k[(k[K>>2]|0)+48>>2]&1023](K,v,N),fla(M,u,N),nd[k[(k[d>>2]|0)+48>>2]&1023](d,q,N),nd[k[(k[F>>2]|0)+48>>2]&1023](F,s,N),nd[k[(k[G>>2]|0)+48>>2]&1023](G,t,N),ga=+p[q>>3],ha=+p[s>>3],ia=+p[t>>3],ja=+p[T>>3]*+p[g>>3]*((+p[v>>3]+ +p[u>>3]*(ga*ga+ha*ha+ia*ia))/L),ia=+p[f>>3],ha=ia!=0.0?ia*ja:ja,U):0){ea=k[V>>2]|0;da=0;do{fa=ea+(da<<3)|0;p[fa>>3]=ha*+p[D+(da<<3)>>3]+ +p[fa>>3];da=da+1|0}while((da|0)!=(A|0))}ba=ba+1|0;if((ba|0)>=(Hc[k[(k[N>>2]|0)+12>>2]&511](N)|0))break a}if((ca|0)==19){ba=Rb()|0;V=Q;Yua(c);Yua($);Ava(X);ka=V;la=ba;ca=22}else if((ca|0)==20){ba=Rb()|0;ma=Q;na=ba;vva(W);Qb(na|0)}else if((ca|0)==21){ba=Rb()|0;ka=Q;la=ba;ca=22}else if((ca|0)==29){ba=Rb()|0;oa=Q;pa=ba;ca=31}else if((ca|0)==30){ba=Rb()|0;V=Q;Yua(y);oa=V;pa=ba;ca=31}if((ca|0)==22){ma=ka;na=la;vva(W);Qb(na|0)}else if((ca|0)==31){k[x>>2]=27468;k[W>>2]=27488;k[X>>2]=27560;Yua($);Ava(X);vva(W);P=oa;R=pa;Qb(R|0)}}while(0);Ec[k[(k[N>>2]|0)+4>>2]&1023](N);if(O)Ec[k[(k[O>>2]|0)+4>>2]&1023](O);bla(M);Sqa(M);Tqa(D);D=k[w>>2]|0;if(D)Tqa(D);z=C;r=a;return z|0}function dca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0.0,n=0.0,o=0.0,q=0.0,s=0.0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0,E=0;a=r;r=r+32|0;c=a+16|0;d=a+8|0;e=a;f=a+24|0;if(!($p(b)|0)){g=0;r=a;return g|0}if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){g=0;r=a;return g|0}if(!(_p(b)|0)){g=0;r=a;return g|0}k[f>>2]=0;h=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;i=iq(b,534)|0;j=Rqa(h>>>0>536870911?-1:h<<3)|0;Fc[k[(k[b>>2]|0)+188>>2]&1023](b,f);pp(b,c,358);l=Wo(b,653)|0;+Dp(b,65);m=+Dp(b,266);n=+Dp(b,265);o=+Dp(b,210);q=+Dp(b,213);s=+Dp(b,269);t=ed[k[(k[b>>2]|0)+324>>2]&511](b,4)|0;u=Hc[k[(k[t>>2]|0)+8>>2]&511](t)|0;a:do if((u|0)<(Hc[k[(k[t>>2]|0)+12>>2]&511](t)|0)){v=t+8|0;w=n*o;x=i+4|0;if((h|0)>0)y=u;else{z=u;while(1){Fc[k[(k[t>>2]|0)+24>>2]&1023](t,z);rd[k[(k[b>>2]|0)+264>>2]&511](b,d,k[f>>2]|0,t);nd[k[(k[b>>2]|0)+336>>2]&1023](b,j,t);nd[k[(k[l>>2]|0)+48>>2]&1023](l,e,t);+kq(b,+p[e>>3]);z=z+1|0;if((z|0)>=(Hc[k[(k[t>>2]|0)+12>>2]&511](t)|0))break a}}do{Fc[k[(k[t>>2]|0)+24>>2]&1023](t,y);rd[k[(k[b>>2]|0)+264>>2]&511](b,d,k[f>>2]|0,t);nd[k[(k[b>>2]|0)+336>>2]&1023](b,j,t);nd[k[(k[l>>2]|0)+48>>2]&1023](l,e,t);A=+kq(b,+p[e>>3]);B=A*(s*(q*(m*(+p[v>>3]*+p[d>>3]))))/w;A=+p[c>>3];C=A!=0.0?A*B:B;z=k[x>>2]|0;D=0;do{E=z+(D<<3)|0;p[E>>3]=C*+p[j+(D<<3)>>3]+ +p[E>>3];D=D+1|0}while((D|0)!=(h|0));y=y+1|0}while((y|0)<(Hc[k[(k[t>>2]|0)+12>>2]&511](t)|0))}while(0);Ec[k[(k[t>>2]|0)+4>>2]&1023](t);Tqa(j);j=k[f>>2]|0;if(j)Tqa(j);g=i;r=a;return g|0}function eca(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;b=r;r=r+16|0;c=b+4|0;d=b;if(!($p(a)|0)){r=b;return}if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){r=b;return}k[d>>2]=0;e=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;nd[k[(k[a>>2]|0)+512>>2]&1023](a,d,c);f=Rqa(e>>>0>536870911?-1:e<<3)|0;e=k[c>>2]|0;g=e>>>0>536870911?-1:e<<3;e=Rqa(g)|0;h=Rqa(g)|0;xp(a,f,699);g=k[c>>2]|0;if((g|0)>0){WEa(e|0,0,((g|0)>1?g:1)<<3|0)|0;i=g;j=a}else{i=g;j=a}while(1){if((i|0)>0)WEa(h|0,0,((i|0)>1?i:1)<<3|0)|0;fca(j,h);g=k[c>>2]|0;if((g|0)>0){l=0;do{m=e+(l<<3)|0;p[m>>3]=+p[h+(l<<3)>>3]+ +p[m>>3];l=l+1|0}while((l|0)<(g|0))}if(Hc[k[(k[j>>2]|0)+252>>2]&511](j)|0)break;g=Hc[k[(k[j>>2]|0)+180>>2]&511](j)|0;i=k[c>>2]|0;j=g}j=k[c>>2]|0;if((j|0)>0){c=0;do{i=f+(c<<3)|0;p[i>>3]=+p[e+(c<<3)>>3]+ +p[i>>3];c=c+1|0}while((c|0)<(j|0))}rd[k[(k[a>>2]|0)+48>>2]&511](a,699,f,738);a=k[d>>2]|0;if(a)Tqa(a);k[d>>2]=0;Tqa(e);Tqa(h);Tqa(f);r=b;return}function fca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0;c=r;r=r+32|0;d=c+16|0;e=c;f=c+12|0;g=c+8|0;if(!($p(a)|0)){r=c;return}h=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;k[f>>2]=0;i=h>>>0>536870911?-1:h<<3;j=Rqa(i)|0;l=Rqa(i)|0;m=Rqa(i)|0;n=Rqa(i)|0;o=Rqa(i)|0;k[g>>2]=0;+Dp(a,265);+Dp(a,266);Uo(a,f);xp(a,j,687);xp(a,l,653);pp(a,e,358);i=(h|0)>0;if(i){q=0;do{s=n+(q<<3)|0;np(a,m+(q<<3)|0,s,+p[j+(q<<3)>>3],+p[l+(q<<3)>>3]);t=+aoa(+p[s>>3],+p[e>>3]);p[o+(q<<3)>>3]=t;q=q+1|0}while((q|0)!=(h|0));if(i){i=0;do{t=+p[e>>3];u=+p[o+(i<<3)>>3];if(t!=0.0){q=n+(i<<3)|0;v=+p[q>>3]-t*u;p[q>>3]=v;w=v}else{q=n+(i<<3)|0;v=+p[q>>3]-u;p[q>>3]=v;w=v}tq(a,j+(i<<3)|0,+p[m+(i<<3)>>3],w,+p[l+(i<<3)>>3]);i=i+1|0}while((i|0)!=(h|0))}}rd[k[(k[a>>2]|0)+48>>2]&511](a,687,j,738);rd[k[(k[a>>2]|0)+48>>2]&511](a,698,n,738);nd[k[(k[a>>2]|0)+512>>2]&1023](a,g,d);a=k[d>>2]|0;d=k[g>>2]|0;if((a|0)<=0){if(d)x=13}else{h=k[f>>2]|0;i=0;do{e=i<<1;q=k[d+(e<<2)>>2]|0;s=k[d+((e|1)<<2)>>2]|0;w=+$(+(+p[h+((s*3|0)+2<<3)>>3]-+p[h+((q*3|0)+2<<3)>>3]));p[b+(i<<3)>>3]=w*((+p[o+(q<<3)>>3]+ +p[o+(s<<3)>>3])*.5);i=i+1|0}while((i|0)<(a|0));x=13}if((x|0)==13)Tqa(d);k[g>>2]=0;g=k[f>>2]|0;if(g)Tqa(g);k[f>>2]=0;Tqa(j);Tqa(l);Tqa(m);Tqa(n);Tqa(o);r=c;return}function gca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0;c=r;r=r+240|0;d=c+216|0;e=c+212|0;f=c+204|0;g=c+200|0;h=c+40|0;i=c+32|0;j=c+24|0;l=c+16|0;m=c+8|0;n=c;o=c+64|0;q=c+48|0;if(!($p(b)|0)){r=c;return}if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){r=c;return}if(_p(b)|0){r=c;return}k[f>>2]=0;k[g>>2]=0;s=Wo(b,688)|0;t=Wo(b,653)|0;u=Wo(b,699)|0;v=Wo(b,39)|0;VB(b,e,f,Hc[k[(k[b>>2]|0)+128>>2]&511](b)|0);gC(b,c+208|0,g,Hc[k[(k[b>>2]|0)+128>>2]&511](b)|0);w=Qqa(72)|0;B=0;va(493,w|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Sqa(w);z=x;A=y;Qb(z|0)}y=Qqa(72)|0;B=0;va(493,y|0);x=B;B=0;if(x&1){x=Rb()|0;C=Q;Sqa(y);z=x;A=C;Qb(z|0)}a:do if((k[e>>2]|0)>0){C=o+56|0;x=o+4|0;D=o+56|0;E=o+128|0;F=o+132|0;G=o+36|0;H=o+52|0;I=b+20|0;J=a+4|0;K=0;b:while(1){L=k[(k[w>>2]|0)+32>>2]|0;M=Hc[k[(k[b>>2]|0)+128>>2]&511](b)|0;nd[L&1023](w,M,k[(k[f>>2]|0)+(K<<2)>>2]|0);M=k[(k[y>>2]|0)+32>>2]|0;L=Hc[k[(k[b>>2]|0)+128>>2]&511](b)|0;nd[M&1023](y,L,k[(k[g>>2]|0)+(K<<2)>>2]|0);nd[k[(k[s>>2]|0)+48>>2]&1023](s,h,w);nd[k[(k[s>>2]|0)+48>>2]&1023](s,i,y);nd[k[(k[t>>2]|0)+48>>2]&1023](t,j,w);nd[k[(k[t>>2]|0)+48>>2]&1023](t,l,y);nd[k[(k[u>>2]|0)+48>>2]&1023](u,m,w);nd[k[(k[v>>2]|0)+48>>2]&1023](v,n,w);switch(Uba(b,+p[h>>3],+p[i>>3],+p[j>>3],+p[l>>3],+p[m>>3],+p[n>>3])|0){case 0:{L=Qn(k[(k[I>>2]|0)+(K<<2)>>2]|0)|0;if(k[a>>2]|0){M=k[k[J>>2]>>2]|0;Jc[k[(k[M>>2]|0)+20>>2]&1](M,L,0.0,0)}break}case 1:{L=Qn(k[(k[I>>2]|0)+(K<<2)>>2]|0)|0;if(k[a>>2]|0){M=k[k[J>>2]>>2]|0;Jc[k[(k[M>>2]|0)+20>>2]&1](M,L,1.0,0)}break}case 2:{L=Qn(k[(k[I>>2]|0)+(K<<2)>>2]|0)|0;if(k[a>>2]|0){M=k[k[J>>2]>>2]|0;Jc[k[(k[M>>2]|0)+20>>2]&1](M,L,1.0,0)}break}case 3:{L=Qn(k[(k[I>>2]|0)+(K<<2)>>2]|0)|0;if(k[a>>2]|0){M=k[k[J>>2]>>2]|0;Jc[k[(k[M>>2]|0)+20>>2]&1](M,L,1.0,0)}break}case 4:{L=Qn(k[(k[I>>2]|0)+(K<<2)>>2]|0)|0;if(k[a>>2]|0){M=k[k[J>>2]>>2]|0;Jc[k[(k[M>>2]|0)+20>>2]&1](M,L,1.0,0)}break}default:{k[o>>2]=27524;k[C>>2]=27544;B=0;wa(508,D|0,x|0);L=B;B=0;if(L&1){N=30;break b}k[E>>2]=0;k[F>>2]=-1;k[o>>2]=27468;k[C>>2]=27488;B=0;va(448,x|0);L=B;B=0;if(L&1){N=31;break b}k[x>>2]=27560;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[H>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,x|0,d|0);L=B;B=0;if(L&1){N=29;break b}Yua(d);B=0;Ia(40,o|0,130056,35)|0;L=B;B=0;if(L&1){N=39;break b}B=0;wa(510,q|0,x|0);L=B;B=0;if(L&1){N=39;break b}B=0;ya(425,q|0)|0;L=B;B=0;if(L&1){N=40;break b}Yua(q);k[o>>2]=27468;k[C>>2]=27488;k[x>>2]=27560;Yua(G);Ava(x);vva(C)}}K=K+1|0;if((K|0)>=(k[e>>2]|0))break a}if((N|0)==29){K=Rb()|0;H=Q;Yua(d);Yua(G);Ava(x);O=H;P=K;N=32}else if((N|0)==30){K=Rb()|0;R=Q;S=K;vva(C);Qb(S|0)}else if((N|0)==31){K=Rb()|0;O=Q;P=K;N=32}else if((N|0)==39){K=Rb()|0;T=K;U=Q;N=41}else if((N|0)==40){K=Rb()|0;H=Q;Yua(q);T=K;U=H;N=41}if((N|0)==32){R=O;S=P;vva(C);Qb(S|0)}else if((N|0)==41){k[o>>2]=27468;k[C>>2]=27488;k[x>>2]=27560;Yua(G);Ava(x);vva(C);z=T;A=U;Qb(z|0)}}while(0);z=k[f>>2]|0;if(z)Tqa(z);k[f>>2]=0;f=k[g>>2]|0;if(f)Tqa(f);k[g>>2]=0;Ec[k[(k[w>>2]|0)+4>>2]&1023](w);Ec[k[(k[y>>2]|0)+4>>2]&1023](y);r=c;return}function hca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0;c=r;r=r+240|0;d=c+216|0;e=c+212|0;f=c+204|0;g=c+200|0;h=c+40|0;i=c+32|0;j=c+24|0;l=c+16|0;m=c+8|0;n=c;o=c+64|0;q=c+48|0;if(!($p(b)|0)){r=c;return}if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){r=c;return}if(_p(b)|0){r=c;return}k[f>>2]=0;k[g>>2]=0;s=Wo(b,687)|0;t=Wo(b,653)|0;u=Wo(b,699)|0;v=Wo(b,39)|0;VB(b,e,f,Hc[k[(k[b>>2]|0)+128>>2]&511](b)|0);gC(b,c+208|0,g,Hc[k[(k[b>>2]|0)+128>>2]&511](b)|0);w=Qqa(72)|0;B=0;va(493,w|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Sqa(w);z=x;A=y;Qb(z|0)}y=Qqa(72)|0;B=0;va(493,y|0);x=B;B=0;if(x&1){x=Rb()|0;C=Q;Sqa(y);z=x;A=C;Qb(z|0)}a:do if((k[e>>2]|0)>0){C=o+56|0;x=o+4|0;D=o+56|0;E=o+128|0;F=o+132|0;G=o+36|0;H=o+52|0;I=b+20|0;J=a+4|0;K=0;b:while(1){L=k[(k[w>>2]|0)+32>>2]|0;M=Hc[k[(k[b>>2]|0)+128>>2]&511](b)|0;nd[L&1023](w,M,k[(k[f>>2]|0)+(K<<2)>>2]|0);M=k[(k[y>>2]|0)+32>>2]|0;L=Hc[k[(k[b>>2]|0)+128>>2]&511](b)|0;nd[M&1023](y,L,k[(k[g>>2]|0)+(K<<2)>>2]|0);nd[k[(k[s>>2]|0)+48>>2]&1023](s,h,w);nd[k[(k[s>>2]|0)+48>>2]&1023](s,i,y);nd[k[(k[t>>2]|0)+48>>2]&1023](t,j,w);nd[k[(k[t>>2]|0)+48>>2]&1023](t,l,y);nd[k[(k[u>>2]|0)+48>>2]&1023](u,m,w);nd[k[(k[v>>2]|0)+48>>2]&1023](v,n,w);switch(Uba(b,+p[h>>3],+p[i>>3],+p[j>>3],+p[l>>3],+p[m>>3],+p[n>>3])|0){case 0:{L=Qn(k[(k[I>>2]|0)+(K<<2)>>2]|0)|0;if(k[a>>2]|0){M=k[k[J>>2]>>2]|0;Jc[k[(k[M>>2]|0)+20>>2]&1](M,L,0.0,0)}break}case 1:{L=Qn(k[(k[I>>2]|0)+(K<<2)>>2]|0)|0;if(k[a>>2]|0){M=k[k[J>>2]>>2]|0;Jc[k[(k[M>>2]|0)+20>>2]&1](M,L,1.0,0)}break}case 2:{L=Qn(k[(k[I>>2]|0)+(K<<2)>>2]|0)|0;if(k[a>>2]|0){M=k[k[J>>2]>>2]|0;Jc[k[(k[M>>2]|0)+20>>2]&1](M,L,0.0,0)}break}case 3:{L=Qn(k[(k[I>>2]|0)+(K<<2)>>2]|0)|0;if(k[a>>2]|0){M=k[k[J>>2]>>2]|0;Jc[k[(k[M>>2]|0)+20>>2]&1](M,L,1.0,0)}break}case 4:{L=Qn(k[(k[I>>2]|0)+(K<<2)>>2]|0)|0;if(k[a>>2]|0){M=k[k[J>>2]>>2]|0;Jc[k[(k[M>>2]|0)+20>>2]&1](M,L,0.0,0)}break}default:{k[o>>2]=27524;k[C>>2]=27544;B=0;wa(508,D|0,x|0);L=B;B=0;if(L&1){N=30;break b}k[E>>2]=0;k[F>>2]=-1;k[o>>2]=27468;k[C>>2]=27488;B=0;va(448,x|0);L=B;B=0;if(L&1){N=31;break b}k[x>>2]=27560;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[H>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,x|0,d|0);L=B;B=0;if(L&1){N=29;break b}Yua(d);B=0;Ia(40,o|0,130056,35)|0;L=B;B=0;if(L&1){N=39;break b}B=0;wa(510,q|0,x|0);L=B;B=0;if(L&1){N=39;break b}B=0;ya(425,q|0)|0;L=B;B=0;if(L&1){N=40;break b}Yua(q);k[o>>2]=27468;k[C>>2]=27488;k[x>>2]=27560;Yua(G);Ava(x);vva(C)}}K=K+1|0;if((K|0)>=(k[e>>2]|0))break a}if((N|0)==29){K=Rb()|0;H=Q;Yua(d);Yua(G);Ava(x);O=H;P=K;N=32}else if((N|0)==30){K=Rb()|0;R=Q;S=K;vva(C);Qb(S|0)}else if((N|0)==31){K=Rb()|0;O=Q;P=K;N=32}else if((N|0)==39){K=Rb()|0;T=K;U=Q;N=41}else if((N|0)==40){K=Rb()|0;H=Q;Yua(q);T=K;U=H;N=41}if((N|0)==32){R=O;S=P;vva(C);Qb(S|0)}else if((N|0)==41){k[o>>2]=27468;k[C>>2]=27488;k[x>>2]=27560;Yua(G);Ava(x);vva(C);z=T;A=U;Qb(z|0)}}while(0);z=k[f>>2]|0;if(z)Tqa(z);k[f>>2]=0;f=k[g>>2]|0;if(f)Tqa(f);k[g>>2]=0;Ec[k[(k[w>>2]|0)+4>>2]&1023](w);Ec[k[(k[y>>2]|0)+4>>2]&1023](y);r=c;return}function ica(a,b,c){a=a|0;b=b|0;c=c|0;nd[k[(k[c>>2]|0)+176>>2]&1023](c,b,687);return}function jca(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,129902,76);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,1442,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function kca(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0.0,Ua=0.0,Va=0.0,Wa=0.0,Ya=0.0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0;a=r;r=r+736|0;d=a+708|0;e=a+720|0;f=a+704|0;g=a+688|0;h=a+672|0;j=a+536|0;l=a+692|0;m=a+676|0;n=a+520|0;o=a+384|0;q=a+236|0;s=a+224|0;u=a+72|0;v=a+248|0;w=a+60|0;x=a+48|0;y=a+36|0;z=a+88|0;A=a+24|0;C=a+12|0;D=a;k[g>>2]=0;k[h>>2]=0;E=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;rp(c,g,534,943);F=E>>>0>536870911?-1:E<<3;G=Rqa(F)|0;H=Rqa(F)|0;I=Rqa(F)|0;J=Rqa(F)|0;K=Rqa(F)|0;L=Rqa(F)|0;F=(E|0)>0;a:do if(F){M=k[g>>2]|0;N=0;while(1){O=+p[b+(k[M+(N<<2)>>2]<<3)>>3];p[G+(N<<3)>>3]=O;P=+$(+O);p[t>>3]=P;R=k[t>>2]|0;S=k[t+4>>2]|0;if(S>>>0>2146435072|(S|0)==2146435072&R>>>0>0){T=5;break}N=N+1|0;if((R|0)==0&(S|0)==2146435072){T=29;break}if((N|0)>=(E|0))break a}if((T|0)==5){N=j+56|0;M=j+4|0;k[j>>2]=27524;k[N>>2]=27544;B=0;wa(508,j+56|0,M|0);S=B;B=0;if(S&1){S=Rb()|0;U=Q;V=S;vva(N);Qb(V|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[N>>2]=27488;B=0;va(448,M|0);S=B;B=0;do if(S&1){R=Rb()|0;W=Q;X=R}else{k[M>>2]=27560;R=j+36|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[j+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,M|0,d|0);Y=B;B=0;if(Y&1){Y=Rb()|0;Z=Q;Yua(d);Yua(R);Ava(M);W=Z;X=Y;break}Yua(d);B=0;Y=Ia(40,j|0,135564,28)|0;Z=B;B=0;b:do if(!(Z&1)?(B=0,Xa(239,Y|0,0)|0,_=B,B=0,!(_&1)):0){_=Ab(20)|0;B=0;eb(502,l|0,129902,76);aa=B;B=0;do if(!(aa&1)){B=0;eb(502,m|0,137199,23);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;Yua(l);da=ca;ea=ba;break}B=0;wa(510,n|0,M|0);ba=B;B=0;if(ba&1){ba=Rb()|0;fa=Q;ga=ba;ha=1}else{B=0;ua(163,_|0,l|0,m|0,1469,n|0);ba=B;B=0;if(ba&1)ia=1;else{B=0;eb(503,_|0,1240,229);B=0;ia=0}ba=Rb()|0;ca=Q;Yua(n);fa=ca;ga=ba;ha=ia}Yua(m);Yua(l);if(ha){da=fa;ea=ga}else{ja=fa;ka=ga;break b}}else{ba=Rb()|0;da=Q;ea=ba}while(0);zb(_|0);ja=da;ka=ea}else T=20;while(0);if((T|0)==20){Y=Rb()|0;ja=Q;ka=Y}k[j>>2]=27468;k[N>>2]=27488;k[M>>2]=27560;Yua(R);Ava(M);vva(N);la=ja;ma=ka;Qb(ma|0)}while(0);U=W;V=X;vva(N);Qb(V|0)}else if((T|0)==29){M=o+56|0;S=o+4|0;k[o>>2]=27524;k[M>>2]=27544;B=0;wa(508,o+56|0,S|0);Y=B;B=0;if(Y&1){Y=Rb()|0;na=Q;oa=Y;vva(M);Qb(oa|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[M>>2]=27488;B=0;va(448,S|0);Y=B;B=0;do if(Y&1){Z=Rb()|0;pa=Q;qa=Z}else{k[S>>2]=27560;Z=o+36|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[o+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,S|0,d|0);aa=B;B=0;if(aa&1){aa=Rb()|0;ba=Q;Yua(d);Yua(Z);Ava(S);pa=ba;qa=aa;break}Yua(d);B=0;aa=Ia(40,o|0,135593,28)|0;ba=B;B=0;c:do if(!(ba&1)?(B=0,Xa(239,aa|0,0)|0,ca=B,B=0,!(ca&1)):0){ca=Ab(20)|0;B=0;eb(502,q|0,129902,76);ra=B;B=0;do if(!(ra&1)){B=0;eb(502,s|0,137199,23);sa=B;B=0;if(sa&1){sa=Rb()|0;ta=Q;Yua(q);xa=sa;za=ta;break}B=0;wa(510,u|0,S|0);ta=B;B=0;if(ta&1){ta=Rb()|0;Aa=1;Ba=Q;Ca=ta}else{B=0;ua(163,ca|0,q|0,s|0,1470,u|0);ta=B;B=0;if(ta&1)Da=1;else{B=0;eb(503,ca|0,1240,229);B=0;Da=0}ta=Rb()|0;sa=Q;Yua(u);Aa=Da;Ba=sa;Ca=ta}Yua(s);Yua(q);if(Aa){xa=Ca;za=Ba}else{Ea=Ba;Fa=Ca;break c}}else{ta=Rb()|0;xa=ta;za=Q}while(0);zb(ca|0);Ea=za;Fa=xa}else T=44;while(0);if((T|0)==44){aa=Rb()|0;Ea=Q;Fa=aa}k[o>>2]=27468;k[M>>2]=27488;k[S>>2]=27560;Yua(Z);Ava(S);vva(M);la=Ea;ma=Fa;Qb(ma|0)}while(0);na=pa;oa=qa;vva(M);Qb(oa|0)}}while(0);zp(c,e,645);vp(c,H,653);d:do if(!(i[e>>0]|0)){oa=k[c>>2]|0;qa=k[oa+48>>2]|0;pa=Hc[k[oa+128>>2]&511](c)|0;rd[qa&511](c,688,G,pa)}else{e:do if(F){pa=0;while(1){qa=L+(pa<<3)|0;np(c,K+(pa<<3)|0,qa,+p[G+(pa<<3)>>3],+p[H+(pa<<3)>>3]);pa=pa+1|0;if(+p[qa>>3]<0.0)break;if((pa|0)>=(E|0))break e}pa=v+56|0;Z=v+4|0;k[v>>2]=27524;k[pa>>2]=27544;B=0;wa(508,v+56|0,Z|0);qa=B;B=0;if(qa&1){qa=Rb()|0;Ga=Q;Ha=qa;vva(pa);Qb(Ha|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[pa>>2]=27488;B=0;va(448,Z|0);qa=B;B=0;do if(qa&1){oa=Rb()|0;Ja=Q;Ka=oa}else{k[Z>>2]=27560;oa=v+36|0;k[oa>>2]=0;k[oa+4>>2]=0;k[oa+8>>2]=0;k[oa+12>>2]=0;k[v+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Z|0,d|0);na=B;B=0;if(na&1){na=Rb()|0;Fa=Q;Yua(d);Yua(oa);Ava(Z);Ja=Fa;Ka=na;break}Yua(d);B=0;na=Ia(40,v|0,130115,48)|0;Fa=B;B=0;f:do if(!(Fa&1)?(B=0,Xa(239,na|0,0)|0,Ea=B,B=0,!(Ea&1)):0){Ea=Ab(20)|0;B=0;eb(502,w|0,129902,76);o=B;B=0;do if(!(o&1)){B=0;eb(502,x|0,137199,23);xa=B;B=0;if(xa&1){xa=Rb()|0;za=Q;Yua(w);La=xa;Ma=za;break}B=0;wa(510,y|0,Z|0);za=B;B=0;if(za&1){za=Rb()|0;Na=1;Oa=Q;Pa=za}else{B=0;ua(163,Ea|0,w|0,x|0,1479,y|0);za=B;B=0;if(za&1)Qa=1;else{B=0;eb(503,Ea|0,1240,229);B=0;Qa=0}za=Rb()|0;xa=Q;Yua(y);Na=Qa;Oa=xa;Pa=za}Yua(x);Yua(w);if(Na){La=Pa;Ma=Oa}else{Ra=Oa;Sa=Pa;break f}}else{za=Rb()|0;La=za;Ma=Q}while(0);zb(Ea|0);Ra=Ma;Sa=La}else T=71;while(0);if((T|0)==71){na=Rb()|0;Ra=Q;Sa=na}k[v>>2]=27468;k[pa>>2]=27488;k[Z>>2]=27560;Yua(oa);Ava(Z);vva(pa);la=Ra;ma=Sa;Qb(ma|0)}while(0);Ga=Ja;Ha=Ka;vva(pa);Qb(Ha|0)}while(0);M=k[c>>2]|0;Z=k[M+48>>2]|0;qa=Hc[k[M+128>>2]&511](c)|0;rd[Z&511](c,687,G,qa);qa=k[c>>2]|0;Z=k[qa+48>>2]|0;M=Hc[k[qa+128>>2]&511](c)|0;rd[Z&511](c,698,L,M);M=k[c>>2]|0;Z=k[M+48>>2]|0;qa=Hc[k[M+128>>2]&511](c)|0;rd[Z&511](c,666,K,qa);cp(c,f,216);vp(c,I,339);switch(k[f>>2]|0){case 921:{break d;break}case 984:{if(F){qa=0;do{P=+Xna(+p[K+(qa<<3)>>3]);p[J+(qa<<3)>>3]=P;qa=qa+1|0}while((qa|0)!=(E|0))}qa=k[c>>2]|0;Z=k[qa+48>>2]|0;M=Hc[k[qa+128>>2]&511](c)|0;rd[Z&511](c,214,J,M);break d;break}case 986:{if(F){M=0;do{P=+p[K+(M<<3)>>3];O=+p[L+(M<<3)>>3];Ta=+Yna(P,O,+Dp(c,217));p[J+(M<<3)>>3]=Ta;M=M+1|0}while((M|0)!=(E|0))}M=k[c>>2]|0;Z=k[M+48>>2]|0;qa=Hc[k[M+128>>2]&511](c)|0;rd[Z&511](c,214,J,qa);break d;break}case 987:{if(F){qa=0;do{Ta=+Zna(+p[K+(qa<<3)>>3]);p[J+(qa<<3)>>3]=Ta;qa=qa+1|0}while((qa|0)!=(E|0))}qa=k[c>>2]|0;Z=k[qa+48>>2]|0;M=Hc[k[qa+128>>2]&511](c)|0;rd[Z&511](c,214,J,M);break d;break}case 988:{Uo(c,h);if(F){M=0;do{Ta=+p[K+(M<<3)>>3];O=+p[I+(M<<3)>>3]-+p[(k[h>>2]|0)+((M*3|0)+2<<3)>>3];P=+_na(Ta,O,+Dp(c,217));p[J+(M<<3)>>3]=P;M=M+1|0}while((M|0)!=(E|0))}M=k[c>>2]|0;Z=k[M+48>>2]|0;qa=Hc[k[M+128>>2]&511](c)|0;rd[Z&511](c,214,J,qa);break d;break}case 989:{if(F){qa=0;do{P=+p[G+(qa<<3)>>3];O=+p[H+(qa<<3)>>3];Ta=+Dp(c,217);Ua=+Dp(c,209);Va=+Dp(c,66);Wa=+Dp(c,210);Ya=+$na(P,O,Ta,Ua,Va,Wa,+Dp(c,211));p[J+(qa<<3)>>3]=Ya;qa=qa+1|0}while((qa|0)!=(E|0))}qa=k[c>>2]|0;Z=k[qa+48>>2]|0;M=Hc[k[qa+128>>2]&511](c)|0;rd[Z&511](c,214,J,M);break d;break}default:{M=z+56|0;Z=z+4|0;k[z>>2]=27524;k[M>>2]=27544;B=0;wa(508,z+56|0,Z|0);qa=B;B=0;if(qa&1){qa=Rb()|0;Za=Q;_a=qa;vva(M);Qb(_a|0)}k[z+128>>2]=0;k[z+132>>2]=-1;k[z>>2]=27468;k[M>>2]=27488;B=0;va(448,Z|0);qa=B;B=0;do if(qa&1){na=Rb()|0;$a=Q;ab=na}else{k[Z>>2]=27560;na=z+36|0;k[na>>2]=0;k[na+4>>2]=0;k[na+8>>2]=0;k[na+12>>2]=0;k[z+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Z|0,d|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;ca=Q;Yua(d);Yua(na);Ava(Z);$a=ca;ab=Fa;break}Yua(d);B=0;Fa=Ia(40,z|0,135622,13)|0;ca=B;B=0;g:do if((((!(ca&1)?(B=0,o=ya(427,k[f>>2]|0)|0,za=B,B=0,!(za&1)):0)?(za=Lta(o)|0,B=0,xa=Ia(40,Fa|0,o|0,za|0)|0,za=B,B=0,!(za&1)):0)?(B=0,za=Ia(40,xa|0,146481,18)|0,xa=B,B=0,!(xa&1)):0)?(B=0,Xa(239,za|0,0)|0,za=B,B=0,!(za&1)):0){za=Ab(20)|0;B=0;eb(502,A|0,129902,76);xa=B;B=0;do if(!(xa&1)){B=0;eb(502,C|0,137199,23);o=B;B=0;if(o&1){o=Rb()|0;Ca=Q;Yua(A);bb=o;cb=Ca;break}B=0;wa(510,D|0,Z|0);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;db=1;fb=Q;gb=Ca}else{B=0;ua(163,za|0,A|0,C|0,1515,D|0);Ca=B;B=0;if(Ca&1)hb=1;else{B=0;eb(503,za|0,1240,229);B=0;hb=0}Ca=Rb()|0;o=Q;Yua(D);db=hb;fb=o;gb=Ca}Yua(C);Yua(A);if(db){bb=gb;cb=fb}else{ib=fb;jb=gb;break g}}else{Ca=Rb()|0;bb=Ca;cb=Q}while(0);zb(za|0);ib=cb;jb=bb}else T=113;while(0);if((T|0)==113){Fa=Rb()|0;ib=Q;jb=Fa}k[z>>2]=27468;k[M>>2]=27488;k[Z>>2]=27560;Yua(na);Ava(Z);vva(M);la=ib;ma=jb;Qb(ma|0)}while(0);Za=$a;_a=ab;vva(M);Qb(_a|0)}}}while(0);Tqa(G);Tqa(H);Tqa(I);Tqa(J);Tqa(K);Tqa(L);L=k[h>>2]|0;if(L)Tqa(L);k[h>>2]=0;h=k[g>>2]|0;if(!h){r=a;return}Tqa(h);r=a;return}function lca(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0;b=r;r=r+16|0;c=b+8|0;d=b;e=Qqa(8)|0;B=0;f=Xa(244,k[a+24>>2]|0,501)|0;g=B;B=0;a:do if(!(g&1)?(B=0,va(485,e|0),h=B,B=0,!(h&1)):0){do if(k[e>>2]|0){B=0;h=ya(423,4)|0;j=B;B=0;if(j&1)break a;B=0;eb(505,h|0,f|0,0);j=B;B=0;if(!(j&1)){k[e+4>>2]=h;break}j=Rb()|0;l=Q;Sqa(h);m=l;n=j;Sqa(e);Qb(n|0)}while(0);j=a+20|0;if((th(k[j>>2]|0)|0)>0){l=0;do{h=qh(k[j>>2]|0,l)|0;op(h,c,341);do if(i[c>>0]|0){pp(h,d,358);if(+p[d>>3]==0.0){gca(e,h);break}else{hca(e,h);break}}while(0);l=l+1|0}while((l|0)<(th(k[j>>2]|0)|0))}if((k[e>>2]|0)!=0?(l=e+4|0,h=k[k[l>>2]>>2]|0,Ec[k[(k[h>>2]|0)+12>>2]&1023](h),(k[e>>2]|0)!=0):0){h=k[k[l>>2]>>2]|0;o=Hc[k[(k[h>>2]|0)+52>>2]&511](h)|0;if((k[e>>2]|0)!=0?(h=k[l>>2]|0,(h|0)!=0):0){l=k[h>>2]|0;if(l)Ec[k[(k[l>>2]|0)+4>>2]&1023](l);Sqa(h);q=o}else q=o}else q=0;Sqa(e);if((th(k[j>>2]|0)|0)>0){o=0;do{Qba(q,qh(k[j>>2]|0,o)|0);o=o+1|0}while((o|0)<(th(k[j>>2]|0)|0))}Eh(a);if(!q){r=b;return}Tqa(q);r=b;return}while(0);b=Rb()|0;m=Q;n=b;Sqa(e);Qb(n|0)}function mca(a,b){a=a|0;b=b|0;RZ(b);return}function nca(a){a=a|0;Sqa(a);return}function oca(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=r;r=r+16|0;d=a;Fka(c,d,131762);if((k[d>>2]|0)!=119){r=a;return}qoa(b,c,130190,504,738,0);r=a;return}function pca(a,b,c){a=a|0;b=b|0;c=c|0;return}function qca(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;a=r;r=r+32|0;d=a+8|0;e=a;f=a+16|0;Fka(c,f,131762);if((k[f>>2]|0)!=119){r=a;return}if((k[c+40>>2]|0)==302){k[e>>2]=136615;k[e+4>>2]=136636;Ska(c,2,e)}hoa(b,c,504,738,534);k[d>>2]=136615;k[d+4>>2]=136636;Lka(c,2,d);r=a;return}function rca(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function sca(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;a=r;r=r+16|0;f=a;Fka(c,f,131762);if((k[f>>2]|0)!=119){r=a;return}f=c+56|0;g=k[f>>2]|0;if((g|0)>0){h=c+32|0;j=g;g=0;l=0;while(1){if(!(i[(k[h>>2]|0)+l>>0]|0)){m=j;n=g}else{o=qh(b,g)|0;Uc[k[(k[o>>2]|0)+480>>2]&63](o,l,c,d,e,738);m=k[f>>2]|0;n=g+1|0}l=l+1|0;if((l|0)>=(m|0))break;else{j=m;g=n}}}Zka(c,b,137052,353);Zka(c,b,134925,339);Zka(c,b,134945,64);Yka(c,b,137955,999,0.0);if((k[c+40>>2]|0)!=300){Zka(c,b,136615,287);Zka(c,b,136636,288)}Zka(c,b,137867,206);Zka(c,b,134962,928);Zka(c,b,134027,39);Zka(c,b,130224,699);Rq(b,699,768);r=a;return}function tca(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;e=r;r=r+16|0;d=e;Fka(c,d,131762);if((k[d>>2]|0)!=119){r=e;return}d=Qqa(12)|0;B=0;eb(518,d|0,118,119);a=B;B=0;if(a&1){a=Rb()|0;Sqa(d);Qb(a|0)}YN(b,d);YN(b,Ika(c,130254,121)|0);r=e;return}function uca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,130281,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,88,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function vca(a,b){a=a|0;b=b|0;return 0}function wca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0.0,i=0.0,j=0.0,l=0.0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0;a=r;r=r+48|0;c=a+32|0;d=a+24|0;e=a+16|0;f=a+8|0;g=a;h=+Dp(b,265);i=+Dp(b,266);j=+Dp(b,65);l=+Dp(b,268);m=Wo(b,664)|0;n=Wo(b,665)|0;o=Wo(b,642)|0;q=Wo(b,643)|0;s=Wo(b,699)|0;t=Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;u=t>>>0>536870911?-1:t<<3;v=Rqa(u)|0;w=Rqa(u)|0;u=Hc[k[(k[b>>2]|0)+304>>2]&511](b)|0;if((t|0)<=0){if(!u){x=k[b>>2]|0;y=x+48|0;z=k[y>>2]|0;rd[z&511](b,702,v,738);A=k[b>>2]|0;B=A+48|0;C=k[B>>2]|0;rd[C&511](b,703,w,738);Tqa(v);Tqa(w);r=a;return}}else{D=l*12.0;l=h*j;E=(i-h)*j;F=0;do{Fc[k[(k[u>>2]|0)+28>>2]&1023](u,F);nd[k[(k[m>>2]|0)+48>>2]&1023](m,c,u);nd[k[(k[n>>2]|0)+48>>2]&1023](n,d,u);nd[k[(k[o>>2]|0)+48>>2]&1023](o,e,u);nd[k[(k[q>>2]|0)+48>>2]&1023](q,f,u);nd[k[(k[s>>2]|0)+48>>2]&1023](s,g,u);j=+p[g>>3];h=-(j*j)/D;p[v+(F<<3)>>3]=h*(l*+p[c>>3]+E*+p[e>>3]);p[w+(F<<3)>>3]=h*(l*+p[d>>3]+E*+p[f>>3]);F=F+1|0}while((F|0)!=(t|0))}Ec[k[(k[u>>2]|0)+4>>2]&1023](u);x=k[b>>2]|0;y=x+48|0;z=k[y>>2]|0;rd[z&511](b,702,v,738);A=k[b>>2]|0;B=A+48|0;C=k[B>>2]|0;rd[C&511](b,703,w,738);Tqa(v);Tqa(w);r=a;return}function xca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,130281,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,139,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function yca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0,L=0.0,M=0.0,N=0.0,O=0.0,P=0,Q=0,R=0;a=r;r=r+128|0;c=a+104|0;d=a+96|0;e=a+88|0;f=a+80|0;g=a+72|0;h=a+64|0;i=a+48|0;j=a+32|0;l=a+112|0;m=a;k[l>>2]=0;n=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;o=gq(b,534)|0;q=Rqa(n>>>0>536870911?-1:n<<3)|0;s=n<<1;t=s>>>0>536870911?-1:s<<3;s=Rqa(t)|0;u=Rqa(t)|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[m+16>>2]=0;k[m+20>>2]=0;k[m+24>>2]=0;k[m+28>>2]=0;wca(0,b);Uo(b,l);pp(b,f,358);pp(b,c,121);t=Wo(b,702)|0;v=Wo(b,703)|0;w=+Zc[k[(k[b>>2]|0)+72>>2]&255](b);x=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;y=Hc[k[(k[x>>2]|0)+8>>2]&511](x)|0;if((y|0)<(Hc[k[(k[x>>2]|0)+12>>2]&511](x)|0)){z=x+8|0;A=o+12|0;B=j+8|0;C=m+24|0;D=m+16|0;E=m+8|0;F=y;do{Fc[k[(k[x>>2]|0)+24>>2]&1023](x,F);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[l>>2]|0,x);nd[k[(k[b>>2]|0)+336>>2]&1023](b,q,x);nd[k[(k[t>>2]|0)+48>>2]&1023](t,g,x);nd[k[(k[v>>2]|0)+48>>2]&1023](v,h,x);rd[k[(k[t>>2]|0)+60>>2]&511](t,i,k[l>>2]|0,x);rd[k[(k[v>>2]|0)+60>>2]&511](v,j,k[l>>2]|0,x);p[e>>3]=+p[z>>3]*+p[d>>3];ZX(q,1,n,1,e,1,1,0,q,1,n,0,k[A>>2]|0,1)|0;y=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;G=Rqa(y>>>0>536870911?-1:y<<3)|0;nd[k[(k[b>>2]|0)+336>>2]&1023](b,G,x);if((y|0)>0){H=0;do{I=+p[G+(H<<3)>>3];p[s+(H<<3)>>3]=I;p[s+(H+y<<3)>>3]=I;H=H+1|0}while((H|0)!=(y|0))}Tqa(G);y=k[l>>2]|0;H=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;J=H<<1;K=Rqa(J>>>0>536870911?-1:J<<3)|0;rd[k[(k[b>>2]|0)+340>>2]&511](b,K,y,x);if((H|0)>0){y=0;do{p[u+(y<<3)>>3]=+p[K+(y<<3)>>3];J=y+H|0;p[u+(J<<3)>>3]=+p[K+(J<<3)>>3];y=y+1|0}while((y|0)!=(H|0))}Tqa(K);I=+p[i>>3];L=+p[B>>3];M=+p[f>>3]*+p[z>>3]*+p[d>>3];p[e>>3]=M;p[m>>3]=I*M;p[C>>3]=L*M;ZX(s,2,n,1,m,2,2,0,s,2,n,0,k[A>>2]|0,1)|0;M=+p[e>>3];p[m>>3]=M*+p[g>>3];p[C>>3]=M*+p[h>>3];ZX(s,2,n,1,m,2,2,0,u,2,n,0,k[A>>2]|0,1)|0;M=+p[g>>3];L=+p[h>>3];I=+aa(+(M*M+L*L));N=w*(+p[e>>3]*+p[c>>3])/(I*2.0);I=M*N;p[m>>3]=M*I;O=L*N;p[D>>3]=M*O;p[E>>3]=L*I;p[C>>3]=L*O;ZX(u,2,n,1,m,2,2,0,u,2,n,0,k[A>>2]|0,1)|0;F=F+1|0}while((F|0)<(Hc[k[(k[x>>2]|0)+12>>2]&511](x)|0))}F=k[l>>2]|0;if(!F){k[l>>2]=0;Tqa(q);Tqa(s);Tqa(u);P=k[x>>2]|0;Q=P+4|0;R=k[Q>>2]|0;Ec[R&1023](x);r=a;return o|0}Tqa(F);k[l>>2]=0;Tqa(q);Tqa(s);Tqa(u);P=k[x>>2]|0;Q=P+4|0;R=k[Q>>2]|0;Ec[R&1023](x);r=a;return o|0}function zca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0;a=r;r=r+48|0;c=a+24|0;d=a+16|0;e=a+8|0;f=a;g=a+32|0;if(_p(b)|0){h=0;r=a;return h|0}k[g>>2]=0;i=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;j=iq(b,534)|0;l=Rqa(i>>>0>536870911?-1:i<<3)|0;Uo(b,g);pp(b,d,358);m=Wo(b,39)|0;n=Wo(b,768)|0;o=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;q=Hc[k[(k[o>>2]|0)+8>>2]&511](o)|0;a:do if((q|0)<(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0)){s=o+8|0;t=j+4|0;if((i|0)>0)u=q;else{v=q;while(1){Fc[k[(k[o>>2]|0)+24>>2]&1023](o,v);rd[k[(k[b>>2]|0)+260>>2]&511](b,c,k[g>>2]|0,o);nd[k[(k[b>>2]|0)+336>>2]&1023](b,l,o);nd[k[(k[m>>2]|0)+48>>2]&1023](m,e,o);nd[k[(k[n>>2]|0)+48>>2]&1023](n,f,o);v=v+1|0;if((v|0)>=(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0))break a}}do{Fc[k[(k[o>>2]|0)+24>>2]&1023](o,u);rd[k[(k[b>>2]|0)+260>>2]&511](b,c,k[g>>2]|0,o);nd[k[(k[b>>2]|0)+336>>2]&1023](b,l,o);nd[k[(k[m>>2]|0)+48>>2]&1023](m,e,o);nd[k[(k[n>>2]|0)+48>>2]&1023](n,f,o);w=+p[d>>3];v=k[t>>2]|0;b:do if(w!=0.0){x=w;y=0;while(1){z=v+(y<<3)|0;p[z>>3]=+p[z>>3]+ +p[l+(y<<3)>>3]*(+p[c>>3]*+p[s>>3]*(+p[f>>3]+x*+p[e>>3]));z=y+1|0;if((z|0)==(i|0))break b;x=+p[d>>3];y=z}}else{y=0;do{z=v+(y<<3)|0;p[z>>3]=+p[c>>3]*+p[s>>3]*+p[e>>3]*+p[l+(y<<3)>>3]+ +p[z>>3];y=y+1|0}while((y|0)!=(i|0))}while(0);u=u+1|0}while((u|0)<(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0))}while(0);u=k[g>>2]|0;if(u)Tqa(u);k[g>>2]=0;Tqa(l);Ec[k[(k[o>>2]|0)+4>>2]&1023](o);h=j;r=a;return h|0}function Aca(a,b,c){a=a|0;b=b|0;c=c|0;nd[k[(k[c>>2]|0)+176>>2]&1023](c,b,699);return}function Bca(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,130281,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,340,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function Cca(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0.0,w=0,x=0.0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;a=r;r=r+368|0;d=a+356|0;e=a+352|0;f=a+216|0;g=a+200|0;h=a+48|0;i=a+36|0;j=a+64|0;l=a+24|0;m=a+12|0;n=a;k[e>>2]=0;o=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;rp(c,e,534,943);q=Rqa(o>>>0>536870911?-1:o<<3)|0;a:do if((o|0)>0){s=k[e>>2]|0;u=0;while(1){v=+p[b+(k[s+(u<<2)>>2]<<3)>>3];w=q+(u<<3)|0;p[w>>3]=v;x=+$(+v);p[t>>3]=x;y=k[t>>2]|0;z=k[t+4>>2]|0;if(z>>>0>2146435072|(z|0)==2146435072&y>>>0>0){A=7;break}if((y|0)==0&(z|0)==2146435072){A=31;break}if(v<1.0e-09)p[w>>3]=1.0e-09;u=u+1|0;if((u|0)>=(o|0))break a}if((A|0)==7){u=f+56|0;s=f+4|0;k[f>>2]=27524;k[u>>2]=27544;B=0;wa(508,f+56|0,s|0);w=B;B=0;if(w&1){w=Rb()|0;C=Q;D=w;vva(u);Qb(D|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[u>>2]=27488;B=0;va(448,s|0);w=B;B=0;do if(w&1){z=Rb()|0;E=Q;F=z}else{k[s>>2]=27560;z=f+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,s|0,d|0);y=B;B=0;if(y&1){y=Rb()|0;G=Q;Yua(d);Yua(z);Ava(s);E=G;F=y;break}Yua(d);B=0;y=Ia(40,f|0,135564,28)|0;G=B;B=0;b:do if(!(G&1)?(B=0,Xa(239,y|0,0)|0,H=B,B=0,!(H&1)):0){H=Ab(20)|0;B=0;eb(502,g|0,130281,83);I=B;B=0;do if(!(I&1)){B=0;eb(502,h|0,137199,23);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(g);L=J;M=K;break}B=0;wa(510,i|0,s|0);K=B;B=0;if(K&1){K=Rb()|0;N=Q;O=K;P=1}else{B=0;ua(163,H|0,g|0,h|0,357,i|0);K=B;B=0;if(K&1)R=1;else{B=0;eb(503,H|0,1240,229);B=0;R=0}K=Rb()|0;J=Q;Yua(i);N=J;O=K;P=R}Yua(h);Yua(g);if(P){L=O;M=N}else{S=O;T=N;break b}}else{K=Rb()|0;L=K;M=Q}while(0);zb(H|0);S=L;T=M}else A=22;while(0);if((A|0)==22){y=Rb()|0;S=y;T=Q}k[f>>2]=27468;k[u>>2]=27488;k[s>>2]=27560;Yua(z);Ava(s);vva(u);U=T;V=S;Qb(V|0)}while(0);C=E;D=F;vva(u);Qb(D|0)}else if((A|0)==31){s=j+56|0;w=j+4|0;k[j>>2]=27524;k[s>>2]=27544;B=0;wa(508,j+56|0,w|0);y=B;B=0;if(y&1){y=Rb()|0;W=Q;X=y;vva(s);Qb(X|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[s>>2]=27488;B=0;va(448,w|0);y=B;B=0;do if(y&1){G=Rb()|0;Y=Q;Z=G}else{k[w>>2]=27560;G=j+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[j+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,w|0,d|0);I=B;B=0;if(I&1){I=Rb()|0;K=Q;Yua(d);Yua(G);Ava(w);Y=K;Z=I;break}Yua(d);B=0;I=Ia(40,j|0,135593,28)|0;K=B;B=0;c:do if(!(K&1)?(B=0,Xa(239,I|0,0)|0,J=B,B=0,!(J&1)):0){J=Ab(20)|0;B=0;eb(502,l|0,130281,83);_=B;B=0;do if(!(_&1)){B=0;eb(502,m|0,137199,23);aa=B;B=0;if(aa&1){aa=Rb()|0;ba=Q;Yua(l);ca=aa;da=ba;break}B=0;wa(510,n|0,w|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ea=1;fa=Q;ga=ba}else{B=0;ua(163,J|0,l|0,m|0,358,n|0);ba=B;B=0;if(ba&1)ha=1;else{B=0;eb(503,J|0,1240,229);B=0;ha=0}ba=Rb()|0;aa=Q;Yua(n);ea=ha;fa=aa;ga=ba}Yua(m);Yua(l);if(ea){ca=ga;da=fa}else{ia=fa;ja=ga;break c}}else{ba=Rb()|0;ca=ba;da=Q}while(0);zb(J|0);ia=da;ja=ca}else A=46;while(0);if((A|0)==46){I=Rb()|0;ia=Q;ja=I}k[j>>2]=27468;k[s>>2]=27488;k[w>>2]=27560;Yua(G);Ava(w);vva(s);U=ia;V=ja;Qb(V|0)}while(0);W=Y;X=Z;vva(s);Qb(X|0)}}while(0);X=k[c>>2]|0;Z=k[X+48>>2]|0;Y=Hc[k[X+128>>2]&511](c)|0;rd[Z&511](c,699,q,Y);Tqa(q);q=k[e>>2]|0;if(!q){r=a;return}Tqa(q);r=a;return}function Dca(a,b){a=a|0;b=b|0;return}function Eca(a){a=a|0;Sqa(a);return}function Fca(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=r;r=r+16|0;d=a;Fka(c,d,131762);if((k[d>>2]|0)!=165){r=a;return}qoa(b,c,130392,507,738,0);r=a;return}function Gca(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;a=r;r=r+32|0;d=a;e=a+16|0;f=a+12|0;g=a+8|0;h=a+4|0;Fka(c,e,131762);if((k[e>>2]|0)!=165){r=a;return}foa(c);e=c+52|0;a:do if((k[e>>2]|0)>0){j=c+40|0;l=c+36|0;m=c+104|0;n=0;while(1){if((k[j>>2]|0)==302){o=(Jka(c,136615)|0)+(n<<3)|0;if((~~+p[o>>3]|0)!=0?(k[(k[l>>2]|0)+(n<<2)>>2]|0)!=0:0){o=Qqa(44)|0;B=0;ua(176,o|0,n+1+(k[m>>2]|0)|0,n|0,c|0,507);q=B;B=0;if(q&1){s=o;t=15;break}ih(b,o)|0}}else if(k[(k[l>>2]|0)+(n<<2)>>2]|0){o=Qqa(44)|0;B=0;ua(176,o|0,n+1+(k[m>>2]|0)|0,n|0,c|0,507);q=B;B=0;if(q&1){u=o;t=10;break}ih(b,o)|0}n=n+1|0;if((n|0)>=(k[e>>2]|0))break a}if((t|0)==10){n=Rb()|0;m=Q;Sqa(u);v=m;w=n;Qb(w|0)}else if((t|0)==15){n=Rb()|0;m=Q;Sqa(s);v=m;w=n;Qb(w|0)}}while(0);k[d>>2]=136615;Lka(c,1,d);k[h>>2]=0;Cka(c,h,f,g,130413);g=k[f>>2]|0;b:do if((g|0)>0){d=c+32|0;s=c+104|0;t=g;u=0;while(1){e=k[h>>2]|0;if(!(i[(k[d>>2]|0)+((k[e+((u*3|0)+2<<2)>>2]|0)+-1)>>0]|0)){x=u+1|0;y=t}else{n=Qqa(44)|0;m=u+1|0;B=0;La(37,n|0,m+(k[s>>2]|0)|0,u|0,c|0,e|0,507);e=B;B=0;if(e&1){z=n;break}ih(b,n)|0;x=m;y=k[f>>2]|0}if((x|0)<(y|0)){t=y;u=x}else break b}u=Rb()|0;t=Q;Sqa(z);v=t;w=u;Qb(w|0)}while(0);w=k[h>>2]|0;if(w)Tqa(w);r=a;return}function Hca(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;a=r;r=r+32|0;d=a+8|0;e=a;f=a+16|0;Fka(c,f,131762);if((k[f>>2]|0)!=165){r=a;return}if((k[c+40>>2]|0)==302){k[e>>2]=136615;k[e+4>>2]=136636;Ska(c,2,e)}hoa(b,c,507,738,534);k[d>>2]=136615;k[d+4>>2]=136636;Lka(c,2,d);r=a;return}function Ica(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function Jca(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;a=r;r=r+208|0;f=a+184|0;g=a+180|0;h=a+176|0;j=a+40|0;l=a+24|0;m=a+12|0;n=a;Fka(c,g,131762);if((k[g>>2]|0)!=165){r=a;return}g=c+56|0;o=k[g>>2]|0;if((o|0)>0){p=c+32|0;q=o;o=0;s=0;while(1){if(!(i[(k[p>>2]|0)+s>>0]|0)){t=q;u=o}else{v=qh(b,o)|0;Uc[k[(k[v>>2]|0)+480>>2]&63](v,s,c,d,e,738);t=k[g>>2]|0;u=o+1|0}s=s+1|0;if((s|0)>=(t|0))break;else{q=t;o=u}}}Zka(c,b,137052,353);Zka(c,b,134945,64);if((k[c+40>>2]|0)!=300){Zka(c,b,136615,287);Zka(c,b,136636,288)}Zka(c,b,137867,206);Zka(c,b,134962,928);Zka(c,b,134027,39);Zka(c,b,135140,38);Zka(c,b,130430,166);Zka(c,b,130448,167);Zka(c,b,130472,170);Zka(c,b,130501,171);Zka(c,b,130527,168);Zka(c,b,130553,169);Zka(c,b,130578,172);Zka(c,b,130600,173);Zka(c,b,135923,674);Zka(c,b,135944,677);Fka(c,h,134909);switch(k[h>>2]|0){case 1:{Zka(c,b,135172,105);Zka(c,b,135196,107);Zka(c,b,135210,108);r=a;return}case 8:{Zka(c,b,135172,105);r=a;return}default:{a=j+56|0;b=j+4|0;k[j>>2]=27524;k[a>>2]=27544;B=0;wa(508,j+56|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;w=Q;x=c;vva(a);Qb(x|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[a>>2]=27488;B=0;va(448,b|0);c=B;B=0;do if(c&1){u=Rb()|0;y=Q;z=u}else{k[b>>2]=27560;u=j+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[j+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;t=Q;Yua(f);Yua(u);Ava(b);y=t;z=o;break}Yua(f);B=0;o=Ia(40,j|0,142117,13)|0;t=B;B=0;if(((!(t&1)?(B=0,t=Xa(242,o|0,k[h>>2]|0)|0,o=B,B=0,!(o&1)):0)?(B=0,o=Ia(40,t|0,144645,14)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,l|0,130625,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,m|0,136133,14);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(l);A=s;C=q;break}B=0;wa(510,n|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;D=Q;E=q;F=1}else{B=0;ua(163,o|0,l|0,m|0,133,n|0);q=B;B=0;if(q&1)G=1;else{B=0;eb(503,o|0,1240,229);B=0;G=0}q=Rb()|0;s=Q;Yua(n);D=s;E=q;F=G}Yua(m);Yua(l);if(F){A=D;C=E}else{H=D;I=E;k[j>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(u);Ava(b);vva(a);Qb(I|0)}}else{q=Rb()|0;A=Q;C=q}while(0);zb(o|0);H=A;I=C;k[j>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(u);Ava(b);vva(a);Qb(I|0)}t=Rb()|0;H=Q;I=t;k[j>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(u);Ava(b);vva(a);Qb(I|0)}while(0);w=y;x=z;vva(a);Qb(x|0)}}}function Kca(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;e=r;r=r+16|0;d=e;Fka(c,d,131762);if((k[d>>2]|0)!=165){r=e;return}d=Qqa(12)|0;B=0;eb(518,d|0,118,165);a=B;B=0;if(a&1){a=Rb()|0;Sqa(d);Qb(a|0)}YN(b,d);YN(b,Ika(c,134909,111)|0);r=e;return}function Lca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,130625,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,151,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Mca(a,b){a=a|0;b=b|0;return 0}function Nca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,130625,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,158,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Oca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0.0,m=0,n=0.0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;a=r;r=r+32|0;c=a+16|0;d=a+8|0;e=a;f=a+24|0;k[f>>2]=0;g=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;h=gq(b,534)|0;i=g<<1;j=Rqa(i>>>0>536870911?-1:i<<3)|0;Uo(b,f);l=+Dp(b,65);i=Wo(b,172)|0;m=Wo(b,167)|0;Fc[k[(k[i>>2]|0)+64>>2]&1023](i,d);Fc[k[(k[m>>2]|0)+64>>2]&1023](m,c);n=l*+ba(+(+p[c>>3]),3.0);l=n/((+p[d>>3]*.001+1.0)*.000021444);d=ed[k[(k[b>>2]|0)+308>>2]&511](b,1)|0;c=Hc[k[(k[d>>2]|0)+8>>2]&511](d)|0;if((c|0)<(Hc[k[(k[d>>2]|0)+12>>2]&511](d)|0)){m=(g|0)>0;i=d+8|0;o=h+12|0;q=c;do{Fc[k[(k[d>>2]|0)+24>>2]&1023](d,q);rd[k[(k[b>>2]|0)+260>>2]&511](b,e,k[f>>2]|0,d);rd[k[(k[b>>2]|0)+340>>2]&511](b,j,k[f>>2]|0,d);if(m){c=k[o>>2]|0;s=0;do{t=j+(s<<3)|0;u=j+(s+g<<3)|0;v=ma(s,g)|0;w=0;do{x=c+(w+v<<3)|0;p[x>>3]=+p[x>>3]+l*+p[i>>3]*+p[e>>3]*(+p[t>>3]*+p[j+(w<<3)>>3]+ +p[u>>3]*+p[j+(w+g<<3)>>3]);w=w+1|0}while((w|0)!=(g|0));s=s+1|0}while((s|0)!=(g|0))}q=q+1|0}while((q|0)<(Hc[k[(k[d>>2]|0)+12>>2]&511](d)|0))}q=k[f>>2]|0;if(!q){k[f>>2]=0;Tqa(j);y=k[d>>2]|0;z=y+4|0;A=k[z>>2]|0;Ec[A&1023](d);r=a;return h|0}Tqa(q);k[f>>2]=0;Tqa(j);y=k[d>>2]|0;z=y+4|0;A=k[z>>2]|0;Ec[A&1023](d);r=a;return h|0}function Pca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0.0,T=0,U=0,V=0.0,W=0.0,X=0,Y=0,Z=0,_=0,ca=0.0,da=0.0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0.0,ja=0.0,ka=0.0,la=0.0,ma=0.0,na=0,oa=0.0,pa=0.0,qa=0;a=r;r=r+160|0;c=a+136|0;d=a+128|0;e=a+120|0;f=a+112|0;g=a+96|0;h=a+88|0;i=a+80|0;j=a+72|0;l=a+64|0;m=a+56|0;n=a+48|0;o=a+40|0;q=a+32|0;s=a+24|0;t=a+16|0;u=a+8|0;v=a;w=a+144|0;if(_p(b)|0){x=0;r=a;return x|0}k[w>>2]=0;y=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;z=iq(b,534)|0;A=Rqa(y>>>0>536870911?-1:y<<3)|0;Uo(b,w);C=+Dp(b,211);D=+Dp(b,65);E=+Dp(b,265);F=+Dp(b,267);G=Wo(b,38)|0;H=Wo(b,166)|0;I=Wo(b,167)|0;J=Wo(b,353)|0;K=Wo(b,64)|0;L=Wo(b,214)|0;M=Wo(b,217)|0;N=Wo(b,170)|0;O=Wo(b,674)|0;P=Wo(b,677)|0;Q=Wo(b,168)|0;R=Wo(b,169)|0;S=+Dp(b,65);T=Wo(b,172)|0;U=Wo(b,167)|0;Fc[k[(k[T>>2]|0)+64>>2]&1023](T,d);Fc[k[(k[U>>2]|0)+64>>2]&1023](U,c);V=S*+ba(+(+p[c>>3]),3.0);S=V/((+p[d>>3]*.001+1.0)*.000021444);d=Qqa(16)|0;B=0;eb(524,d|0,b|0,2);c=B;B=0;if(c&1){c=Rb()|0;Sqa(d);Qb(c|0)}c=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;U=Hc[k[(k[c>>2]|0)+8>>2]&511](c)|0;if((U|0)<(Hc[k[(k[c>>2]|0)+12>>2]&511](c)|0)){V=D*E;W=D*F;D=1.0/C;C=W*S;T=g+8|0;X=(y|0)>0;Y=c+8|0;S=1.0/F-1.0/E;Z=z+4|0;_=U;do{Fc[k[(k[c>>2]|0)+24>>2]&1023](c,_);rd[k[(k[b>>2]|0)+260>>2]&511](b,e,k[w>>2]|0,c);nd[k[(k[b>>2]|0)+336>>2]&1023](b,A,c);nd[k[(k[G>>2]|0)+48>>2]&1023](G,f,c);nd[k[(k[K>>2]|0)+48>>2]&1023](K,l,c);nd[k[(k[J>>2]|0)+48>>2]&1023](J,m,c);nd[k[(k[I>>2]|0)+48>>2]&1023](I,j,c);nd[k[(k[H>>2]|0)+48>>2]&1023](H,n,c);rd[k[(k[H>>2]|0)+60>>2]&511](H,g,k[w>>2]|0,c);nd[k[(k[N>>2]|0)+48>>2]&1023](N,o,c);nd[k[(k[Q>>2]|0)+48>>2]&1023](Q,q,c);nd[k[(k[R>>2]|0)+48>>2]&1023](R,s,c);nd[k[(k[O>>2]|0)+48>>2]&1023](O,t,c);nd[k[(k[P>>2]|0)+48>>2]&1023](P,u,c);nd[k[(k[L>>2]|0)+48>>2]&1023](L,h,c);nd[k[(k[M>>2]|0)+48>>2]&1023](M,i,c);E=+ba(+(+p[h>>3]),+-+p[i>>3]);F=+p[j>>3];ca=+p[s>>3];if(F<ca)da=(ca-F)/+p[q>>3];else da=0.0;fla(d,v,c);nd[k[(k[O>>2]|0)+48>>2]&1023](O,t,c);nd[k[(k[P>>2]|0)+48>>2]&1023](P,u,c);F=+p[t>>3];ca=+p[u>>3];ea=V*+p[m>>3];fa=W*(+p[n>>3]-+p[l>>3]);ga=+p[g>>3];ha=+p[T>>3];a:do if(X){ia=S*(D*(+p[v>>3]*(F*F+ca*ca)+ +p[f>>3]+C*(ga*ga+ha*ha)));ja=ea-(fa>ea?ea:fa);ka=+$(+ja);U=k[Z>>2]|0;la=F;ma=ca;na=0;while(1){oa=ja*(E*+ba(+ka,+(+p[i>>3]+-1.0)));pa=ia+ +p[j>>3]*oa-da*+aa(+(la*la+ma*ma));qa=U+(na<<3)|0;p[qa>>3]=+p[qa>>3]+ +p[A+(na<<3)>>3]*(+p[e>>3]*+p[Y>>3]*(+p[o>>3]+pa));qa=na+1|0;if((qa|0)==(y|0))break a;la=+p[t>>3];ma=+p[u>>3];na=qa}}while(0);_=_+1|0}while((_|0)<(Hc[k[(k[c>>2]|0)+12>>2]&511](c)|0))}_=k[w>>2]|0;if(_)Tqa(_);k[w>>2]=0;Tqa(A);bla(d);Sqa(d);Ec[k[(k[c>>2]|0)+4>>2]&1023](c);x=z;r=a;return x|0}function Qca(a,b,c){a=a|0;b=b|0;c=c|0;nd[k[(k[c>>2]|0)+176>>2]&1023](c,b,166);return}function Rca(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,130625,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,308,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function Sca(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0,C=0.0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0;a=r;r=r+400|0;d=a+160|0;e=a+24|0;f=a;g=a+384|0;h=a+356|0;i=a+372|0;j=a+360|0;l=a+344|0;m=a+208|0;n=a+196|0;o=a+184|0;q=a+172|0;k[g>>2]=0;k[h>>2]=0;s=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;rp(c,g,534,943);u=s>>>0>536870911?-1:s<<3;v=Rqa(u)|0;w=Rqa(u)|0;x=Rqa(u)|0;y=+Dp(c,265);z=+Dp(c,267);vp(c,w,353);vp(c,x,64);a:do if((s|0)>0){u=k[g>>2]|0;A=0;while(1){C=+p[b+(k[u+(A<<2)>>2]<<3)>>3];D=v+(A<<3)|0;p[D>>3]=C;E=+p[x+(A<<3)>>3];F=E+y*+p[w+(A<<3)>>3]/z;if(C>F){p[D>>3]=F;G=F}else G=C;if(G<E){p[D>>3]=E;H=E}else H=G;E=+$(+H);p[t>>3]=E;D=k[t>>2]|0;I=k[t+4>>2]|0;if(I>>>0>2146435072|(I|0)==2146435072&D>>>0>0){J=14;break}A=A+1|0;if((D|0)==0&(I|0)==2146435072){J=38;break}if((A|0)>=(s|0))break a}if((J|0)==14){A=e+56|0;u=e+4|0;k[e>>2]=27524;k[A>>2]=27544;B=0;wa(508,e+56|0,u|0);I=B;B=0;if(I&1){I=Rb()|0;K=Q;L=I;vva(A);Qb(L|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[A>>2]=27488;B=0;va(448,u|0);I=B;B=0;do if(I&1){D=Rb()|0;M=Q;N=D}else{k[u>>2]=27560;D=e+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,u|0,d|0);O=B;B=0;if(O&1){O=Rb()|0;P=Q;Yua(d);Yua(D);Ava(u);M=P;N=O;break}Yua(d);B=0;O=Ia(40,e|0,135564,28)|0;P=B;B=0;b:do if(!(P&1)?(B=0,Xa(239,O|0,0)|0,R=B,B=0,!(R&1)):0){R=Ab(20)|0;B=0;eb(502,i|0,130625,84);S=B;B=0;do if(!(S&1)){B=0;eb(502,j|0,137199,23);T=B;B=0;if(T&1){T=Rb()|0;U=Q;Yua(i);V=U;W=T;break}B=0;wa(510,l|0,u|0);T=B;B=0;if(T&1){T=Rb()|0;X=T;Y=Q;Z=1}else{B=0;ua(163,R|0,i|0,j|0,346,l|0);T=B;B=0;if(T&1)_=1;else{B=0;eb(503,R|0,1240,229);B=0;_=0}T=Rb()|0;U=Q;Yua(l);X=T;Y=U;Z=_}Yua(j);Yua(i);if(Z){V=Y;W=X}else{ca=X;da=Y;break b}}else{U=Rb()|0;V=Q;W=U}while(0);zb(R|0);ca=W;da=V}else J=29;while(0);if((J|0)==29){O=Rb()|0;ca=O;da=Q}k[e>>2]=27468;k[A>>2]=27488;k[u>>2]=27560;Yua(D);Ava(u);vva(A);ea=ca;fa=da;Qb(ea|0)}while(0);K=M;L=N;vva(A);Qb(L|0)}else if((J|0)==38){u=m+56|0;I=m+4|0;k[m>>2]=27524;k[u>>2]=27544;B=0;wa(508,m+56|0,I|0);O=B;B=0;if(O&1){O=Rb()|0;ga=Q;ha=O;vva(u);Qb(ha|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[u>>2]=27488;B=0;va(448,I|0);O=B;B=0;do if(O&1){P=Rb()|0;ia=Q;ja=P}else{k[I>>2]=27560;P=m+36|0;k[P>>2]=0;k[P+4>>2]=0;k[P+8>>2]=0;k[P+12>>2]=0;k[m+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,I|0,d|0);S=B;B=0;if(S&1){S=Rb()|0;U=Q;Yua(d);Yua(P);Ava(I);ia=U;ja=S;break}Yua(d);B=0;S=Ia(40,m|0,135593,28)|0;U=B;B=0;c:do if(!(U&1)?(B=0,Xa(239,S|0,0)|0,T=B,B=0,!(T&1)):0){T=Ab(20)|0;B=0;eb(502,n|0,130625,84);ka=B;B=0;do if(!(ka&1)){B=0;eb(502,o|0,137199,23);la=B;B=0;if(la&1){la=Rb()|0;ma=Q;Yua(n);na=ma;oa=la;break}B=0;wa(510,q|0,I|0);la=B;B=0;if(la&1){la=Rb()|0;pa=1;qa=la;ra=Q}else{B=0;ua(163,T|0,n|0,o|0,347,q|0);la=B;B=0;if(la&1)sa=1;else{B=0;eb(503,T|0,1240,229);B=0;sa=0}la=Rb()|0;ma=Q;Yua(q);pa=sa;qa=la;ra=ma}Yua(o);Yua(n);if(pa){na=ra;oa=qa}else{ta=qa;xa=ra;break c}}else{ma=Rb()|0;na=Q;oa=ma}while(0);zb(T|0);ta=oa;xa=na}else J=53;while(0);if((J|0)==53){S=Rb()|0;ta=S;xa=Q}k[m>>2]=27468;k[u>>2]=27488;k[I>>2]=27560;Yua(P);Ava(I);vva(u);ea=ta;fa=xa;Qb(ea|0)}while(0);ga=ia;ha=ja;vva(u);Qb(ha|0)}}while(0);ha=k[c>>2]|0;ja=k[ha+48>>2]|0;ia=Hc[k[ha+128>>2]&511](c)|0;rd[ja&511](c,166,v,ia);Uo(c,h);ia=Wo(c,166)|0;nd[k[(k[ia>>2]|0)+68>>2]&1023](ia,f,k[h>>2]|0);H=+Dp(c,65);ia=Wo(c,172)|0;ja=Wo(c,167)|0;Fc[k[(k[ia>>2]|0)+64>>2]&1023](ia,e);Fc[k[(k[ja>>2]|0)+64>>2]&1023](ja,d);G=H*+ba(+(+p[d>>3]),3.0);H=+p[f>>3];z=+p[f+8>>3];y=G/((+p[e>>3]*.001+1.0)*.000021444)*+aa(+(H*H+z*z))/3.574e-06;p[d>>3]=y;rd[k[(k[c>>2]|0)+48>>2]&511](c,172,d,736);Tqa(v);Tqa(w);Tqa(x);x=k[h>>2]|0;if(x)Tqa(x);k[h>>2]=0;h=k[g>>2]|0;if(!h){r=a;return}Tqa(h);r=a;return}function Tca(a,b){a=a|0;b=b|0;return}function Uca(a,b){a=a|0;b=b|0;var c=0;a=b+20|0;if((th(k[a>>2]|0)|0)>0)c=0;else return;do{Vca(0,qh(k[a>>2]|0,c)|0);c=c+1|0}while((c|0)<(th(k[a>>2]|0)|0));return}function Vca(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0,S=0,T=0.0,U=0.0,V=0,W=0,X=0.0,Y=0.0,Z=0.0,_=0.0,ca=0.0,da=0.0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0.0,ja=0.0,ka=0.0;a=r;r=r+176|0;c=a+152|0;d=a+144|0;e=a+136|0;f=a+128|0;g=a+120|0;h=a+104|0;i=a+96|0;j=a+88|0;l=a+80|0;m=a+72|0;n=a+64|0;o=a+56|0;q=a+48|0;s=a+40|0;t=a+32|0;u=a+24|0;v=a+16|0;w=a+8|0;x=a;y=a+160|0;if(_p(b)|0){r=a;return}p[e>>3]=0.0;k[y>>2]=0;Uo(b,y);pp(b,l,358);z=+Dp(b,211);A=+Dp(b,65);C=+Dp(b,265);D=+Dp(b,267);E=Wo(b,38)|0;F=Wo(b,166)|0;G=Wo(b,167)|0;H=Wo(b,353)|0;I=Wo(b,64)|0;J=Wo(b,214)|0;K=Wo(b,217)|0;L=Wo(b,170)|0;M=Wo(b,674)|0;N=Wo(b,677)|0;O=Wo(b,168)|0;P=Wo(b,169)|0;Q=+Dp(b,65);R=Wo(b,172)|0;S=Wo(b,167)|0;Fc[k[(k[R>>2]|0)+64>>2]&1023](R,d);Fc[k[(k[S>>2]|0)+64>>2]&1023](S,c);T=Q*+ba(+(+p[c>>3]),3.0);Q=T/((+p[d>>3]*.001+1.0)*.000021444);d=Qqa(16)|0;B=0;eb(524,d|0,b|0,2);c=B;B=0;if(c&1){c=Rb()|0;Sqa(d);Qb(c|0)}c=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;S=Hc[k[(k[c>>2]|0)+8>>2]&511](c)|0;if((S|0)<(Hc[k[(k[c>>2]|0)+12>>2]&511](c)|0)){T=A*C;U=A*D;D=1.0/z;z=U*Q;R=h+8|0;V=c+8|0;W=S;Q=0.0;while(1){Fc[k[(k[c>>2]|0)+24>>2]&1023](c,W);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[y>>2]|0,c);nd[k[(k[E>>2]|0)+48>>2]&1023](E,g,c);nd[k[(k[I>>2]|0)+48>>2]&1023](I,n,c);nd[k[(k[H>>2]|0)+48>>2]&1023](H,o,c);nd[k[(k[G>>2]|0)+48>>2]&1023](G,m,c);nd[k[(k[F>>2]|0)+48>>2]&1023](F,q,c);rd[k[(k[F>>2]|0)+60>>2]&511](F,h,k[y>>2]|0,c);nd[k[(k[L>>2]|0)+48>>2]&1023](L,s,c);nd[k[(k[O>>2]|0)+48>>2]&1023](O,t,c);nd[k[(k[P>>2]|0)+48>>2]&1023](P,u,c);nd[k[(k[M>>2]|0)+48>>2]&1023](M,v,c);nd[k[(k[N>>2]|0)+48>>2]&1023](N,w,c);nd[k[(k[J>>2]|0)+48>>2]&1023](J,i,c);nd[k[(k[K>>2]|0)+48>>2]&1023](K,j,c);A=+ba(+(+p[i>>3]),+-+p[j>>3]);X=+p[m>>3];Y=+p[u>>3];if(X<Y)Z=(Y-X)/+p[t>>3];else Z=0.0;fla(d,x,c);nd[k[(k[M>>2]|0)+48>>2]&1023](M,v,c);nd[k[(k[N>>2]|0)+48>>2]&1023](N,w,c);X=+p[v>>3];Y=+p[w>>3];_=X*X+Y*Y;Y=T*+p[o>>3];X=U*(+p[q>>3]-+p[n>>3]);ca=+p[h>>3];da=+p[R>>3];ea=+p[f>>3];fa=+p[m>>3];ga=Y-(X>Y?Y:X);X=+$(+ga);Y=+p[V>>3]*ea*(fa+ +p[l>>3]*(Z*+aa(+_)+(D*(+p[x>>3]*_+ +p[g>>3]+z*(ca*ca+da*da))/C-fa*(ga*(A*+ba(+X,+(+p[j>>3]+-1.0)))))));p[e>>3]=+p[e>>3]+Y;Y=Q+ +p[V>>3]*ea;W=W+1|0;if((W|0)>=(Hc[k[(k[c>>2]|0)+12>>2]&511](c)|0)){ha=Y;break}else Q=Y}ia=+p[e>>3];ja=+p[o>>3];ka=ha}else{ia=0.0;ja=0.0;ka=0.0}ha=ia/ka;ka=ha<1.0e-05?1.0e-05:ha;p[e>>3]=ka>ja?ja:ka;rd[k[(k[b>>2]|0)+48>>2]&511](b,167,e,736);e=k[y>>2]|0;if(e)Tqa(e);k[y>>2]=0;bla(d);Sqa(d);Ec[k[(k[c>>2]|0)+4>>2]&1023](c);r=a;return}function Wca(a){a=a|0;Sqa(a);return}function Xca(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function Yca(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0;e=r;r=r+64|0;d=e+48|0;a=e+44|0;f=e+40|0;g=e+36|0;h=e+32|0;j=e+52|0;l=e+24|0;m=e+16|0;n=e+8|0;o=e;Fka(c,d,131762);if((k[d>>2]|0)!=122){r=e;return}Kka(c,j,131781);Bka(c,a,130743);Bka(c,f,130775);Pka(c,m,130802);Pka(c,o,130830);Bka(c,g,130851);Bka(c,h,130877);do if((k[a>>2]|0)==1){Pka(c,l,130899);q=Qqa(16)|0;B=0;Oa(59,q|0,154,+(+p[l>>3]));s=B;B=0;if(!(s&1)){YN(b,q);break}s=Rb()|0;t=Q;Sqa(q);u=t;v=s;Qb(v|0)}while(0);do if((k[f>>2]|0)==1){Pka(c,n,130926);l=Qqa(16)|0;B=0;Oa(59,l|0,156,+(+p[n>>3]));s=B;B=0;if(!(s&1)){YN(b,l);break}s=Rb()|0;t=Q;Sqa(l);u=t;v=s;Qb(v|0)}while(0);n=Qqa(16)|0;B=0;Oa(59,n|0,157,+(+p[m>>3]));m=B;B=0;if(m&1){m=Rb()|0;c=Q;Sqa(n);u=c;v=m;Qb(v|0)}YN(b,n);n=Qqa(12)|0;B=0;eb(518,n|0,118,k[d>>2]|0);d=B;B=0;if(d&1){d=Rb()|0;m=Q;Sqa(n);u=m;v=d;Qb(v|0)}YN(b,n);n=Qqa(12)|0;B=0;eb(517,n|0,152,(i[j>>0]|0)!=0|0);j=B;B=0;if(j&1){j=Rb()|0;d=Q;Sqa(n);u=d;v=j;Qb(v|0)}YN(b,n);n=Qqa(12)|0;B=0;eb(518,n|0,153,k[a>>2]|0);a=B;B=0;if(a&1){a=Rb()|0;j=Q;Sqa(n);u=j;v=a;Qb(v|0)}YN(b,n);n=Qqa(12)|0;B=0;eb(518,n|0,155,k[f>>2]|0);f=B;B=0;if(f&1){f=Rb()|0;a=Q;Sqa(n);u=a;v=f;Qb(v|0)}YN(b,n);n=Qqa(16)|0;B=0;Oa(59,n|0,133,+(+p[o>>3]));o=B;B=0;if(o&1){o=Rb()|0;f=Q;Sqa(n);u=f;v=o;Qb(v|0)}YN(b,n);n=Qqa(12)|0;B=0;eb(518,n|0,158,k[g>>2]|0);g=B;B=0;if(g&1){g=Rb()|0;o=Q;Sqa(n);u=o;v=g;Qb(v|0)}YN(b,n);n=Qqa(12)|0;B=0;eb(518,n|0,132,k[h>>2]|0);h=B;B=0;if(h&1){h=Rb()|0;g=Q;Sqa(n);u=g;v=h;Qb(v|0)}else{YN(b,n);r=e;return}}function Zca(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;a=r;r=r+16|0;f=a+4|0;g=a;Fka(c,g,131762);if((k[g>>2]|0)!=122){r=a;return}zka(c,f,131781);g=c+56|0;h=k[g>>2]|0;if((h|0)>0){j=c+32|0;l=h;h=0;m=0;while(1){if(!(i[(k[j>>2]|0)+m>>0]|0)){n=l;o=h}else{p=qh(b,h)|0;Uc[k[(k[p>>2]|0)+480>>2]&63](p,m,c,d,e,738);n=k[g>>2]|0;o=h+1|0}m=m+1|0;if((m|0)>=(n|0))break;else{l=n;h=o}}}Zka(c,b,137052,353);Zka(c,b,134945,64);Zka(c,b,137867,206);Zka(c,b,134027,39);Zka(c,b,130954,160);Zka(c,b,131261,123);Zka(c,b,130986,138);if((k[c+40>>2]|0)!=300){Zka(c,b,136615,287);Zka(c,b,136636,288)}if(!(i[f>>0]|0)){r=a;return}Zka(c,b,131022,141);r=a;return}function _ca(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;a=r;r=r+32|0;d=a+8|0;e=a;f=a+16|0;Fka(c,f,131762);if((k[f>>2]|0)!=122){r=a;return}if((k[c+40>>2]|0)!=300){k[e>>2]=136615;k[e+4>>2]=136636;Ska(c,2,e)}hoa(b,c,505,738,534);k[d>>2]=136615;k[d+4>>2]=136636;Lka(c,2,d);r=a;return}function $ca(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=r;r=r+16|0;d=a;Fka(c,d,131762);if((k[d>>2]|0)!=122){r=a;return}qoa(b,c,131055,505,738,0);r=a;return}function ada(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0;a=r;r=r+16|0;d=a+8|0;e=a;f=a+12|0;Fka(c,f,131762);if((k[f>>2]|0)!=122){r=a;return}f=c+40|0;if((k[f>>2]|0)==302){k[e>>2]=136615;Ska(c,1,e)}foa(c);e=c+52|0;a:do if((k[e>>2]|0)>0){g=c+36|0;h=c+104|0;i=0;while(1){if((k[f>>2]|0)==302){j=(Jka(c,136615)|0)+(i<<3)|0;if((~~+p[j>>3]|0)!=0?(k[(k[g>>2]|0)+(i<<2)>>2]|0)!=0:0){j=Qqa(52)|0;B=0;ua(177,j|0,i+1+(k[h>>2]|0)|0,i|0,c|0,505);l=B;B=0;if(l&1){m=j;n=16;break}ih(b,j)|0}}else if(k[(k[g>>2]|0)+(i<<2)>>2]|0){j=Qqa(52)|0;B=0;ua(177,j|0,i+1+(k[h>>2]|0)|0,i|0,c|0,505);l=B;B=0;if(l&1){o=j;n=11;break}ih(b,j)|0}i=i+1|0;if((i|0)>=(k[e>>2]|0))break a}if((n|0)==11){i=Rb()|0;h=Q;Sqa(o);q=h;s=i;Qb(s|0)}else if((n|0)==16){i=Rb()|0;h=Q;Sqa(m);q=h;s=i;Qb(s|0)}}while(0);k[d>>2]=136615;Lka(c,1,d);r=a;return}function bda(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,131085,90);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,155,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function cda(a,b){a=a|0;b=b|0;return 0}function dda(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,131085,90);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,164,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function eda(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0,Y=0.0;c=r;r=r+256|0;d=c+244|0;e=c+240|0;f=c+104|0;g=c+92|0;h=c+80|0;j=c+68|0;l=c+56|0;m=c+48|0;n=c+40|0;o=c+32|0;q=c+64|0;s=c;cp(b,e,298);a:do switch(k[e>>2]|0){case 300:{t=b;break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){t=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{u=0;r=c;return u|0}break}default:{v=f+56|0;w=f+4|0;k[f>>2]=27524;k[v>>2]=27544;B=0;wa(508,f+56|0,w|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;z=x;vva(v);Qb(z|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[v>>2]=27488;B=0;va(448,w|0);x=B;B=0;do if(x&1){A=Rb()|0;C=Q;D=A}else{k[w>>2]=27560;A=f+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,w|0,d|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(d);Yua(A);Ava(w);C=F;D=E;break}Yua(d);B=0;E=Ia(40,f|0,144639,5)|0;F=B;B=0;if((((!(F&1)?(B=0,F=ya(427,k[e>>2]|0)|0,G=B,B=0,!(G&1)):0)?(G=Lta(F)|0,B=0,H=Ia(40,E|0,F|0,G|0)|0,G=B,B=0,!(G&1)):0)?(B=0,G=Ia(40,H|0,146481,18)|0,H=B,B=0,!(H&1)):0)?(B=0,Xa(239,G|0,0)|0,G=B,B=0,!(G&1)):0){G=Ab(20)|0;B=0;eb(502,g|0,131085,90);H=B;B=0;do if(!(H&1)){B=0;eb(502,h|0,144189,13);F=B;B=0;if(F&1){F=Rb()|0;E=Q;Yua(g);I=F;J=E;break}B=0;wa(510,j|0,w|0);E=B;B=0;if(E&1){E=Rb()|0;K=E;L=Q;M=1}else{B=0;ua(163,G|0,g|0,h|0,183,j|0);E=B;B=0;if(E&1)N=1;else{B=0;eb(503,G|0,1240,229);B=0;N=0}E=Rb()|0;F=Q;Yua(j);K=E;L=F;M=N}Yua(h);Yua(g);if(M){I=K;J=L}else{O=K;P=L;k[f>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}}else{F=Rb()|0;I=F;J=Q}while(0);zb(G|0);O=I;P=J;k[f>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}H=Rb()|0;O=H;P=Q;k[f>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}while(0);y=C;z=D;vva(v);Qb(z|0)}}while(0);k[q>>2]=0;z=Hc[k[(k[t>>2]|0)+164>>2]&511](t)|0;D=gq(t,534)|0;C=z<<1;y=Rqa(C>>>0>536870911?-1:C<<3)|0;C=Rqa(z>>>0>536870911?-1:z<<3)|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[s+16>>2]=0;k[s+20>>2]=0;k[s+24>>2]=0;k[s+28>>2]=0;Uo(t,q);pp(t,n,358);op(t,f,152);O=Wo(t,138)|0;P=Wo(t,123)|0;J=Wo(t,127)|0;I=Wo(t,353)|0;L=Wo(t,64)|0;R=+Dp(t,267);S=+Dp(t,65);T=+Dp(t,136);U=+Dp(t,137);V=+Dp(t,135);W=R*S*T*U*(+Dp(t,139)+V/T);if(!(i[f>>0]|0))X=0;else X=Wo(t,142)|0;K=ed[k[(k[t>>2]|0)+308>>2]&511](t,2)|0;M=Hc[k[(k[K>>2]|0)+8>>2]&511](K)|0;if((M|0)<(Hc[k[(k[K>>2]|0)+12>>2]&511](K)|0)){g=K+8|0;h=s+24|0;N=D+12|0;j=M;do{Fc[k[(k[K>>2]|0)+24>>2]&1023](K,j);rd[k[(k[t>>2]|0)+260>>2]&511](t,m,k[q>>2]|0,K);nd[k[(k[O>>2]|0)+48>>2]&1023](O,o,K);T=+p[o>>3]*+p[g>>3]*+p[m>>3];p[l>>3]=T;V=+p[n>>3];if(V!=0.0){U=T*V;p[l>>3]=U;Y=U}else Y=T;p[s>>3]=Y;p[h>>3]=Y;M=k[q>>2]|0;b=Hc[k[(k[t>>2]|0)+164>>2]&511](t)|0;w=b<<1;x=Rqa(w>>>0>536870911?-1:w<<3)|0;rd[k[(k[t>>2]|0)+340>>2]&511](t,x,M,K);if((b|0)>0){M=0;do{p[y+(M<<3)>>3]=+p[x+(M<<3)>>3];w=M+b|0;p[y+(w<<3)>>3]=+p[x+(w<<3)>>3];M=M+1|0}while((M|0)!=(b|0))}Tqa(x);ZX(y,2,z,1,s,2,2,0,y,2,z,0,k[N>>2]|0,1)|0;if((+p[n>>3]!=0.0?(nd[k[(k[t>>2]|0)+336>>2]&1023](t,C,K),p[l>>3]=W*+p[g>>3]*+p[m>>3],ZX(C,z,1,0,l,1,1,0,C,1,z,0,k[N>>2]|0,1)|0,(i[f>>0]|0)!=0):0)?(Fc[k[(k[X>>2]|0)+36>>2]&1023](X,d),(i[d>>0]|0)!=0):0){T=+fda(a,t,K,P,J,I,L);nd[k[(k[t>>2]|0)+336>>2]&1023](t,C,K);p[l>>3]=T*+p[n>>3]*+p[g>>3]*+p[m>>3];ZX(C,z,1,0,l,1,1,0,C,1,z,0,k[N>>2]|0,1)|0}j=j+1|0}while((j|0)<(Hc[k[(k[K>>2]|0)+12>>2]&511](K)|0))}j=k[q>>2]|0;if(j)Tqa(j);k[q>>2]=0;Tqa(y);Tqa(C);Ec[k[(k[K>>2]|0)+4>>2]&1023](K);if((k[e>>2]|0)!=300?(ap(t),(t|0)!=0):0)Ec[k[(k[t>>2]|0)+4>>2]&1023](t);u=D;r=c;return u|0}function fda(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;a=r;r=r+224|0;h=a+204|0;i=a+200|0;j=a+16|0;l=a+8|0;m=a;n=a+64|0;o=a+48|0;q=a+36|0;s=a+24|0;cp(b,i,155);switch(k[i>>2]|0){case 1:{nd[k[(k[d>>2]|0)+48>>2]&1023](d,l,c);nd[k[(k[e>>2]|0)+48>>2]&1023](e,j,c);pp(b,m,156);t=+nda(0,b,c,f,g);u=+p[l>>3];v=+KY(1.0/(+ja(+((u-+p[j>>3])*-20.0))+1.0)+1.0/(+ja(+((t-u)*-20.0))+1.0),1.0)*+p[m>>3];r=a;return +v}case 0:{v=0.0;r=a;return +v}default:{a=n+56|0;m=n+4|0;k[n>>2]=27524;k[a>>2]=27544;B=0;wa(508,n+56|0,m|0);j=B;B=0;if(j&1){j=Rb()|0;w=Q;x=j;vva(a);Qb(x|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[a>>2]=27488;B=0;va(448,m|0);j=B;B=0;do if(j&1){l=Rb()|0;y=Q;z=l}else{k[m>>2]=27560;l=n+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[n+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,m|0,h|0);g=B;B=0;if(g&1){g=Rb()|0;f=Q;Yua(h);Yua(l);Ava(m);y=f;z=g;break}Yua(h);B=0;g=Ia(40,n|0,131439,45)|0;f=B;B=0;if(!(f&1)?(B=0,Xa(239,g|0,0)|0,g=B,B=0,!(g&1)):0){g=Ab(20)|0;B=0;eb(502,o|0,131085,90);f=B;B=0;do if(!(f&1)){B=0;eb(502,q|0,131485,27);c=B;B=0;if(c&1){c=Rb()|0;b=Q;Yua(o);A=b;C=c;break}B=0;wa(510,s|0,m|0);c=B;B=0;if(c&1){c=Rb()|0;D=Q;E=c;F=1}else{B=0;ua(163,g|0,o|0,q|0,622,s|0);c=B;B=0;if(c&1)G=1;else{B=0;eb(503,g|0,1240,229);B=0;G=0}c=Rb()|0;b=Q;Yua(s);D=b;E=c;F=G}Yua(q);Yua(o);if(F){A=D;C=E}else{H=D;I=E;k[n>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(l);Ava(m);vva(a);Qb(I|0)}}else{c=Rb()|0;A=Q;C=c}while(0);zb(g|0);H=A;I=C;k[n>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(l);Ava(m);vva(a);Qb(I|0)}f=Rb()|0;H=Q;I=f;k[n>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(l);Ava(m);vva(a);Qb(I|0)}while(0);w=y;x=z;vva(a);Qb(x|0)}}return +(0.0)}function gda(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0,Y=0.0,Z=0.0;c=r;r=r+224|0;d=c+212|0;e=c+208|0;f=c+72|0;g=c+60|0;h=c+48|0;j=c+36|0;l=c+24|0;m=c+16|0;n=c+8|0;o=c;q=c+32|0;cp(b,e,298);a:do switch(k[e>>2]|0){case 300:{s=b;break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){s=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{t=0;r=c;return t|0}break}default:{u=f+56|0;v=f+4|0;k[f>>2]=27524;k[u>>2]=27544;B=0;wa(508,f+56|0,v|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;y=w;vva(u);Qb(y|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);w=B;B=0;do if(w&1){z=Rb()|0;A=Q;C=z}else{k[v>>2]=27560;z=f+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,v|0,d|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(d);Yua(z);Ava(v);A=E;C=D;break}Yua(d);B=0;D=Ia(40,f|0,144639,5)|0;E=B;B=0;if((((!(E&1)?(B=0,E=ya(427,k[e>>2]|0)|0,F=B,B=0,!(F&1)):0)?(F=Lta(E)|0,B=0,G=Ia(40,D|0,E|0,F|0)|0,F=B,B=0,!(F&1)):0)?(B=0,F=Ia(40,G|0,146481,18)|0,G=B,B=0,!(G&1)):0)?(B=0,Xa(239,F|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,g|0,131085,90);G=B;B=0;do if(!(G&1)){B=0;eb(502,h|0,144203,13);E=B;B=0;if(E&1){E=Rb()|0;D=Q;Yua(g);H=E;I=D;break}B=0;wa(510,j|0,v|0);D=B;B=0;if(D&1){D=Rb()|0;J=D;K=Q;L=1}else{B=0;ua(163,F|0,g|0,h|0,287,j|0);D=B;B=0;if(D&1)M=1;else{B=0;eb(503,F|0,1240,229);B=0;M=0}D=Rb()|0;E=Q;Yua(j);J=D;K=E;L=M}Yua(h);Yua(g);if(L){H=J;I=K}else{N=J;O=K;k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);Qb(N|0)}}else{E=Rb()|0;H=E;I=Q}while(0);zb(F|0);N=H;O=I;k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);Qb(N|0)}G=Rb()|0;N=G;O=Q;k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);Qb(N|0)}while(0);x=A;y=C;vva(u);Qb(y|0)}}while(0);k[q>>2]=0;y=Hc[k[(k[s>>2]|0)+164>>2]&511](s)|0;C=iq(s,534)|0;A=Rqa(y>>>0>536870911?-1:y<<3)|0;Uo(s,q);pp(s,l,358);op(s,f,152);x=Wo(s,123)|0;N=Wo(s,127)|0;O=Wo(s,39)|0;I=Wo(s,353)|0;H=Wo(s,64)|0;if(+p[l>>3]!=0.0)P=Wo(s,124)|0;else P=0;R=+Dp(s,267);S=+Dp(s,65);T=+Dp(s,136);U=+Dp(s,137);V=+Dp(s,135);W=R*S*T*U*(+Dp(s,139)+V/T);if(!(i[f>>0]|0))X=0;else X=Wo(s,142)|0;K=ed[k[(k[s>>2]|0)+308>>2]&511](s,2)|0;J=Hc[k[(k[K>>2]|0)+8>>2]&511](K)|0;if((J|0)<(Hc[k[(k[K>>2]|0)+12>>2]&511](K)|0)){L=K+8|0;g=(y|0)>0;h=C+4|0;M=J;do{Fc[k[(k[K>>2]|0)+24>>2]&1023](K,M);rd[k[(k[s>>2]|0)+260>>2]&511](s,o,k[q>>2]|0,K);nd[k[(k[s>>2]|0)+336>>2]&1023](s,A,K);nd[k[(k[O>>2]|0)+48>>2]&1023](O,n,K);T=+p[o>>3]*+p[L>>3]*+p[n>>3];V=+p[l>>3];U=V!=0.0?T*V:T;if(g){J=k[h>>2]|0;j=0;do{b=J+(j<<3)|0;p[b>>3]=U*+p[A+(j<<3)>>3]+ +p[b>>3];j=j+1|0}while((j|0)!=(y|0));Y=+p[l>>3]}else Y=V;b:do if(Y!=0.0){nd[k[(k[P>>2]|0)+48>>2]&1023](P,m,K);if(!(i[f>>0]|0)){U=+p[o>>3]*+p[L>>3]*(W*+p[m>>3]);if(!g)break;j=k[h>>2]|0;J=0;while(1){u=j+(J<<3)|0;p[u>>3]=U*+p[A+(J<<3)>>3]+ +p[u>>3];J=J+1|0;if((J|0)==(y|0))break b}}Fc[k[(k[X>>2]|0)+36>>2]&1023](X,d);if(!(i[d>>0]|0))Z=0.0;else Z=+hda(a,s,K,x,N,I,H);U=+p[o>>3]*+p[L>>3]*(W*+p[m>>3]+Z*+p[l>>3]);if(g){J=k[h>>2]|0;j=0;do{z=J+(j<<3)|0;p[z>>3]=U*+p[A+(j<<3)>>3]+ +p[z>>3];j=j+1|0}while((j|0)!=(y|0))}}while(0);M=M+1|0}while((M|0)<(Hc[k[(k[K>>2]|0)+12>>2]&511](K)|0))}M=k[q>>2]|0;if(M)Tqa(M);k[q>>2]=0;Tqa(A);Ec[k[(k[K>>2]|0)+4>>2]&1023](K);if((k[e>>2]|0)!=300?(ap(s),(s|0)!=0):0)Ec[k[(k[s>>2]|0)+4>>2]&1023](s);t=C;r=c;return t|0}function hda(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;a=r;r=r+224|0;h=a+204|0;i=a+200|0;j=a+16|0;l=a+8|0;m=a;n=a+64|0;o=a+48|0;q=a+36|0;s=a+24|0;cp(b,i,155);switch(k[i>>2]|0){case 1:{nd[k[(k[d>>2]|0)+48>>2]&1023](d,l,c);nd[k[(k[e>>2]|0)+48>>2]&1023](e,j,c);pp(b,m,156);t=+nda(0,b,c,f,g);u=+p[l>>3];v=+KY(1.0/(+ja(+((u-+p[j>>3])*-20.0))+1.0)+1.0/(+ja(+((t-u)*-20.0))+1.0),1.0)*(+p[j>>3]*+p[m>>3]);r=a;return +v}case 0:{v=0.0;r=a;return +v}default:{a=n+56|0;m=n+4|0;k[n>>2]=27524;k[a>>2]=27544;B=0;wa(508,n+56|0,m|0);j=B;B=0;if(j&1){j=Rb()|0;w=Q;x=j;vva(a);Qb(x|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[a>>2]=27488;B=0;va(448,m|0);j=B;B=0;do if(j&1){l=Rb()|0;y=Q;z=l}else{k[m>>2]=27560;l=n+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[n+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,m|0,h|0);g=B;B=0;if(g&1){g=Rb()|0;f=Q;Yua(h);Yua(l);Ava(m);y=f;z=g;break}Yua(h);B=0;g=Ia(40,n|0,131439,45)|0;f=B;B=0;if(!(f&1)?(B=0,Xa(239,g|0,0)|0,g=B,B=0,!(g&1)):0){g=Ab(20)|0;B=0;eb(502,o|0,131085,90);f=B;B=0;do if(!(f&1)){B=0;eb(502,q|0,131513,27);c=B;B=0;if(c&1){c=Rb()|0;b=Q;Yua(o);A=b;C=c;break}B=0;wa(510,s|0,m|0);c=B;B=0;if(c&1){c=Rb()|0;D=Q;E=c;F=1}else{B=0;ua(163,g|0,o|0,q|0,660,s|0);c=B;B=0;if(c&1)G=1;else{B=0;eb(503,g|0,1240,229);B=0;G=0}c=Rb()|0;b=Q;Yua(s);D=b;E=c;F=G}Yua(q);Yua(o);if(F){A=D;C=E}else{H=D;I=E;k[n>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(l);Ava(m);vva(a);Qb(I|0)}}else{c=Rb()|0;A=Q;C=c}while(0);zb(g|0);H=A;I=C;k[n>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(l);Ava(m);vva(a);Qb(I|0)}f=Rb()|0;H=Q;I=f;k[n>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(l);Ava(m);vva(a);Qb(I|0)}while(0);w=y;x=z;vva(a);Qb(x|0)}}return +(0.0)}function ida(a,b,c){a=a|0;b=b|0;c=c|0;nd[k[(k[c>>2]|0)+176>>2]&1023](c,b,123);return}function jda(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,131085,90);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,405,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function kda(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0.0,F=0.0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0.0,xa=0.0,ya=0.0,za=0.0,Aa=0.0;a=r;r=r+368|0;d=a+272|0;e=a+360|0;f=a+364|0;g=a+356|0;h=a+136|0;j=a+344|0;l=a+332|0;m=a+320|0;n=a;o=a+308|0;q=a+296|0;s=a+284|0;k[g>>2]=0;cp(c,e,298);do if((k[e>>2]|0)!=300)if(Hc[k[(k[c>>2]|0)+248>>2]&511](c)|0){u=Hc[k[(k[c>>2]|0)+432>>2]&511](c)|0;break}else{r=a;return}else u=c;while(0);v=Hc[k[(k[u>>2]|0)+164>>2]&511](u)|0;rp(u,g,534,943);w=v>>>0>536870911?-1:v<<3;x=Rqa(w)|0;y=Rqa(w)|0;z=Rqa(w)|0;A=(v|0)>0;a:do if(A){C=k[g>>2]|0;D=0;while(1){E=+p[b+(k[C+(D<<2)>>2]<<3)>>3];p[x+(D<<3)>>3]=E;F=+$(+E);p[t>>3]=F;G=k[t>>2]|0;H=k[t+4>>2]|0;if(H>>>0>2146435072|(H|0)==2146435072&G>>>0>0){I=9;break}D=D+1|0;if((G|0)==0&(H|0)==2146435072){I=33;break}if((D|0)>=(v|0))break a}if((I|0)==9){D=h+56|0;C=h+4|0;k[h>>2]=27524;k[D>>2]=27544;B=0;wa(508,h+56|0,C|0);H=B;B=0;if(H&1){H=Rb()|0;J=Q;K=H;vva(D);Qb(K|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[D>>2]=27488;B=0;va(448,C|0);H=B;B=0;do if(H&1){G=Rb()|0;L=Q;M=G}else{k[C>>2]=27560;G=h+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[h+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,C|0,d|0);N=B;B=0;if(N&1){N=Rb()|0;O=Q;Yua(d);Yua(G);Ava(C);L=O;M=N;break}Yua(d);B=0;N=Ia(40,h|0,135564,28)|0;O=B;B=0;b:do if(!(O&1)?(B=0,Xa(239,N|0,0)|0,P=B,B=0,!(P&1)):0){P=Ab(20)|0;B=0;eb(502,j|0,131085,90);R=B;B=0;do if(!(R&1)){B=0;eb(502,l|0,137199,23);S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(j);U=T;V=S;break}B=0;wa(510,m|0,C|0);S=B;B=0;if(S&1){S=Rb()|0;W=S;X=Q;Y=1}else{B=0;ua(163,P|0,j|0,l|0,436,m|0);S=B;B=0;if(S&1)Z=1;else{B=0;eb(503,P|0,1240,229);B=0;Z=0}S=Rb()|0;T=Q;Yua(m);W=S;X=T;Y=Z}Yua(l);Yua(j);if(Y){U=X;V=W}else{_=W;aa=X;break b}}else{T=Rb()|0;U=Q;V=T}while(0);zb(P|0);_=V;aa=U}else I=24;while(0);if((I|0)==24){N=Rb()|0;_=N;aa=Q}k[h>>2]=27468;k[D>>2]=27488;k[C>>2]=27560;Yua(G);Ava(C);vva(D);ca=_;da=aa;Qb(ca|0)}while(0);J=L;K=M;vva(D);Qb(K|0)}else if((I|0)==33){C=n+56|0;H=n+4|0;k[n>>2]=27524;k[C>>2]=27544;B=0;wa(508,n+56|0,H|0);N=B;B=0;if(N&1){N=Rb()|0;ea=Q;fa=N;vva(C);Qb(fa|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[C>>2]=27488;B=0;va(448,H|0);N=B;B=0;do if(N&1){O=Rb()|0;ga=Q;ha=O}else{k[H>>2]=27560;O=n+36|0;k[O>>2]=0;k[O+4>>2]=0;k[O+8>>2]=0;k[O+12>>2]=0;k[n+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,H|0,d|0);R=B;B=0;if(R&1){R=Rb()|0;T=Q;Yua(d);Yua(O);Ava(H);ga=T;ha=R;break}Yua(d);B=0;R=Ia(40,n|0,135593,28)|0;T=B;B=0;c:do if(!(T&1)?(B=0,Xa(239,R|0,0)|0,S=B,B=0,!(S&1)):0){S=Ab(20)|0;B=0;eb(502,o|0,131085,90);ia=B;B=0;do if(!(ia&1)){B=0;eb(502,q|0,137199,23);ja=B;B=0;if(ja&1){ja=Rb()|0;ka=Q;Yua(o);la=ka;ma=ja;break}B=0;wa(510,s|0,H|0);ja=B;B=0;if(ja&1){ja=Rb()|0;na=1;oa=ja;pa=Q}else{B=0;ua(163,S|0,o|0,q|0,437,s|0);ja=B;B=0;if(ja&1)qa=1;else{B=0;eb(503,S|0,1240,229);B=0;qa=0}ja=Rb()|0;ka=Q;Yua(s);na=qa;oa=ja;pa=ka}Yua(q);Yua(o);if(na){la=pa;ma=oa}else{ra=oa;sa=pa;break c}}else{ka=Rb()|0;la=Q;ma=ka}while(0);zb(S|0);ra=ma;sa=la}else I=48;while(0);if((I|0)==48){R=Rb()|0;ra=R;sa=Q}k[n>>2]=27468;k[C>>2]=27488;k[H>>2]=27560;Yua(O);Ava(H);vva(C);ca=ra;da=sa;Qb(ca|0)}while(0);ea=ga;fa=ha;vva(C);Qb(fa|0)}}while(0);zp(u,f,645);if(i[f>>0]|0){f=Rqa(w)|0;fa=Rqa(w)|0;pp(u,h,164);pp(u,d,157);F=+Dp(u,267);E=+Dp(u,265);ta=+Dp(u,65);xp(u,f,353);xp(u,fa,64);xa=+p[h>>3]*+ba(10.0,+(+p[d>>3]));if(A){ya=E*ta;E=F*ta;A=0;do{lda(0,n,u,ed[k[(k[u>>2]|0)+156>>2]&511](u,A)|0);ta=+p[x+(A<<3)>>3];F=+p[n>>3];p[z+(A<<3)>>3]=ta>F?xa*(ta-F):0.0;za=ya*+p[f+(A<<3)>>3];Aa=+KY(F,ta);ta=za-E*+LY(Aa-+p[fa+(A<<3)>>3],0.0);p[y+(A<<3)>>3]=ta;A=A+1|0}while((A|0)!=(v|0))}Tqa(f);Tqa(fa)}rd[k[(k[c>>2]|0)+44>>2]&511](c,123,x,738);rd[k[(k[c>>2]|0)+44>>2]&511](c,125,z,738);rd[k[(k[c>>2]|0)+44>>2]&511](c,126,y,738);Tqa(x);Tqa(z);Tqa(y);y=k[g>>2]|0;if(y)Tqa(y);k[g>>2]=0;if((k[e>>2]|0)==300){r=a;return}ap(u);if(!u){r=a;return}Ec[k[(k[u>>2]|0)+4>>2]&1023](u);r=a;return}function lda(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;a=r;r=r+400|0;e=a+380|0;f=a+376|0;g=a+16|0;h=a+8|0;i=a;j=a+240|0;l=a+224|0;m=a+72|0;n=a+60|0;o=a+88|0;q=a+48|0;s=a+36|0;t=a+24|0;cp(c,f,153);switch(k[f>>2]|0){case 0:{p[g>>3]=1.0e10;u=1.0e10;p[b>>3]=u;r=a;return}case 1:{pp(c,g,154);u=+p[g>>3];p[b>>3]=u;r=a;return}case 2:{v=+Dp(c,267);w=+Dp(c,265);rd[k[(k[c>>2]|0)+144>>2]&511](c,h,d,353);rd[k[(k[c>>2]|0)+144>>2]&511](c,i,d,64);x=+p[i>>3]+w*+p[h>>3]/v;p[g>>3]=x;u=x;p[b>>3]=u;r=a;return}case 3:{a=j+56|0;b=j+4|0;k[j>>2]=27524;k[a>>2]=27544;B=0;wa(508,j+56|0,b|0);g=B;B=0;if(g&1){g=Rb()|0;y=Q;z=g;vva(a);Qb(z|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[a>>2]=27488;B=0;va(448,b|0);g=B;B=0;do if(g&1){h=Rb()|0;A=Q;C=h}else{k[b>>2]=27560;h=j+36|0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[j+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);i=B;B=0;if(i&1){i=Rb()|0;d=Q;Yua(e);Yua(h);Ava(b);A=d;C=i;break}Yua(e);B=0;i=Ia(40,j|0,131601,38)|0;d=B;B=0;a:do if(!(d&1)?(B=0,Xa(239,i|0,0)|0,c=B,B=0,!(c&1)):0){c=Ab(20)|0;B=0;eb(502,l|0,131085,90);f=B;B=0;do if(!(f&1)){B=0;eb(502,m|0,131640,29);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(l);F=D;G=E;break}B=0;wa(510,n|0,b|0);E=B;B=0;if(E&1){E=Rb()|0;H=Q;I=E;J=1}else{B=0;ua(163,c|0,l|0,m|0,578,n|0);E=B;B=0;if(E&1)K=1;else{B=0;eb(503,c|0,1240,229);B=0;K=0}E=Rb()|0;D=Q;Yua(n);H=D;I=E;J=K}Yua(m);Yua(l);if(J){F=I;G=H}else{L=I;M=H;break a}}else{E=Rb()|0;F=E;G=Q}while(0);zb(c|0);L=F;M=G}else N=20;while(0);if((N|0)==20){i=Rb()|0;L=i;M=Q}k[j>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(h);Ava(b);vva(a);O=M;P=L;Qb(P|0)}while(0);y=A;z=C;vva(a);Qb(z|0);break}default:{z=o+56|0;a=o+4|0;k[o>>2]=27524;k[z>>2]=27544;B=0;wa(508,o+56|0,a|0);C=B;B=0;if(C&1){C=Rb()|0;R=Q;S=C;vva(z);Qb(S|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[z>>2]=27488;B=0;va(448,a|0);C=B;B=0;do if(C&1){A=Rb()|0;T=Q;U=A}else{k[a>>2]=27560;A=o+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[o+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,a|0,e|0);y=B;B=0;if(y&1){y=Rb()|0;L=Q;Yua(e);Yua(A);Ava(a);T=L;U=y;break}Yua(e);B=0;y=Ia(40,o|0,131670,43)|0;L=B;B=0;b:do if(!(L&1)?(B=0,Xa(239,y|0,0)|0,M=B,B=0,!(M&1)):0){M=Ab(20)|0;B=0;eb(502,q|0,131085,90);b=B;B=0;do if(!(b&1)){B=0;eb(502,s|0,131640,29);j=B;B=0;if(j&1){j=Rb()|0;G=Q;Yua(q);V=j;W=G;break}B=0;wa(510,t|0,a|0);G=B;B=0;if(G&1){G=Rb()|0;X=1;Y=Q;Z=G}else{B=0;ua(163,M|0,q|0,s|0,581,t|0);G=B;B=0;if(G&1)_=1;else{B=0;eb(503,M|0,1240,229);B=0;_=0}G=Rb()|0;j=Q;Yua(t);X=_;Y=j;Z=G}Yua(s);Yua(q);if(X){V=Z;W=Y}else{$=Y;aa=Z;break b}}else{G=Rb()|0;V=G;W=Q}while(0);zb(M|0);$=W;aa=V}else N=43;while(0);if((N|0)==43){y=Rb()|0;$=Q;aa=y}k[o>>2]=27468;k[z>>2]=27488;k[a>>2]=27560;Yua(A);Ava(a);vva(z);O=$;P=aa;Qb(P|0)}while(0);R=T;S=U;vva(z);Qb(S|0)}}}function mda(a,b){a=a|0;b=b|0;return}function nda(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;a=r;r=r+400|0;f=a+380|0;g=a+376|0;h=a+16|0;i=a+8|0;j=a;l=a+240|0;m=a+224|0;n=a+72|0;o=a+60|0;q=a+88|0;s=a+48|0;t=a+36|0;u=a+24|0;cp(b,g,153);switch(k[g>>2]|0){case 0:{p[h>>3]=1.0e10;v=1.0e10;r=a;return +v}case 1:{pp(b,h,154);v=+p[h>>3];r=a;return +v}case 2:{w=+Dp(b,267);x=+Dp(b,265);nd[k[(k[d>>2]|0)+48>>2]&1023](d,i,c);nd[k[(k[e>>2]|0)+48>>2]&1023](e,j,c);y=+p[j>>3]+x*+p[i>>3]/w;p[h>>3]=y;v=y;r=a;return +v}case 3:{a=l+56|0;h=l+4|0;k[l>>2]=27524;k[a>>2]=27544;B=0;wa(508,l+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;z=Q;A=i;vva(a);Qb(A|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){j=Rb()|0;C=Q;D=j}else{k[h>>2]=27560;j=l+36|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;k[l+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,h|0,f|0);c=B;B=0;if(c&1){c=Rb()|0;e=Q;Yua(f);Yua(j);Ava(h);C=e;D=c;break}Yua(f);B=0;c=Ia(40,l|0,131601,38)|0;e=B;B=0;a:do if(!(e&1)?(B=0,Xa(239,c|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,m|0,131085,90);b=B;B=0;do if(!(b&1)){B=0;eb(502,n|0,131640,29);g=B;B=0;if(g&1){g=Rb()|0;E=Q;Yua(m);F=g;G=E;break}B=0;wa(510,o|0,h|0);E=B;B=0;if(E&1){E=Rb()|0;H=Q;I=E;J=1}else{B=0;ua(163,d|0,m|0,n|0,544,o|0);E=B;B=0;if(E&1)K=1;else{B=0;eb(503,d|0,1240,229);B=0;K=0}E=Rb()|0;g=Q;Yua(o);H=g;I=E;J=K}Yua(n);Yua(m);if(J){F=I;G=H}else{L=I;M=H;break a}}else{E=Rb()|0;F=E;G=Q}while(0);zb(d|0);L=F;M=G}else N=20;while(0);if((N|0)==20){c=Rb()|0;L=c;M=Q}k[l>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(j);Ava(h);vva(a);O=M;P=L;Qb(P|0)}while(0);z=C;A=D;vva(a);Qb(A|0);break}default:{A=q+56|0;a=q+4|0;k[q>>2]=27524;k[A>>2]=27544;B=0;wa(508,q+56|0,a|0);D=B;B=0;if(D&1){D=Rb()|0;R=Q;S=D;vva(A);Qb(S|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[A>>2]=27488;B=0;va(448,a|0);D=B;B=0;do if(D&1){C=Rb()|0;T=Q;U=C}else{k[a>>2]=27560;C=q+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[q+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,a|0,f|0);z=B;B=0;if(z&1){z=Rb()|0;L=Q;Yua(f);Yua(C);Ava(a);T=L;U=z;break}Yua(f);B=0;z=Ia(40,q|0,131670,43)|0;L=B;B=0;b:do if(!(L&1)?(B=0,Xa(239,z|0,0)|0,M=B,B=0,!(M&1)):0){M=Ab(20)|0;B=0;eb(502,s|0,131085,90);h=B;B=0;do if(!(h&1)){B=0;eb(502,t|0,131640,29);l=B;B=0;if(l&1){l=Rb()|0;G=Q;Yua(s);V=l;W=G;break}B=0;wa(510,u|0,a|0);G=B;B=0;if(G&1){G=Rb()|0;X=1;Y=Q;Z=G}else{B=0;ua(163,M|0,s|0,t|0,547,u|0);G=B;B=0;if(G&1)_=1;else{B=0;eb(503,M|0,1240,229);B=0;_=0}G=Rb()|0;l=Q;Yua(u);X=_;Y=l;Z=G}Yua(t);Yua(s);if(X){V=Z;W=Y}else{$=Y;aa=Z;break b}}else{G=Rb()|0;V=G;W=Q}while(0);zb(M|0);$=W;aa=V}else N=43;while(0);if((N|0)==43){z=Rb()|0;$=Q;aa=z}k[q>>2]=27468;k[A>>2]=27488;k[a>>2]=27560;Yua(C);Ava(a);vva(A);O=$;P=aa;Qb(P|0)}while(0);R=T;S=U;vva(A);Qb(S|0)}}return +(0.0)}function oda(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;a=b+20|0;if((th(k[a>>2]|0)|0)>0)c=0;else return;while(1){b=qh(k[a>>2]|0,c)|0;d=Wo(b,141)|0;e=+Zc[k[(k[d>>2]|0)+108>>2]&255](d)>0.0;d=Qqa(12)|0;B=0;eb(507,d|0,142,e|0);e=B;B=0;if(e&1){f=d;g=5;break}So(b,d);c=c+1|0;if((c|0)>=(th(k[a>>2]|0)|0)){g=2;break}}if((g|0)==2)return;else if((g|0)==5){g=Rb()|0;Sqa(f);Qb(g|0)}}function pda(a){a=a|0;Sqa(a);return}function qda(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function rda(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;e=r;r=r+16|0;d=e+8|0;a=e+4|0;f=e;g=e+12|0;Fka(c,d,131762);if((k[d>>2]|0)!=122){r=e;return}zka(c,g,131781);if(!(i[g>>0]|0)){r=e;return}Bka(c,a,131207);g=Qqa(12)|0;B=0;eb(518,g|0,159,k[a>>2]|0);a=B;B=0;if(a&1){a=Rb()|0;d=Q;Sqa(g);h=d;j=a;Qb(j|0)}YN(b,g);Bka(c,f,131233);c=Qqa(12)|0;B=0;eb(518,c|0,150,k[f>>2]|0);f=B;B=0;if(f&1){f=Rb()|0;g=Q;Sqa(c);h=g;j=f;Qb(j|0)}else{YN(b,c);r=e;return}}function sda(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;a=r;r=r+16|0;f=a+4|0;g=a;Fka(c,g,131762);if((k[g>>2]|0)!=122){r=a;return}zka(c,f,131781);if(!(i[f>>0]|0)){r=a;return}f=c+56|0;g=k[f>>2]|0;if((g|0)>0){h=c+32|0;j=g;g=0;l=0;while(1){if(!(i[(k[h>>2]|0)+l>>0]|0)){m=j;n=g}else{o=qh(b,g)|0;Uc[k[(k[o>>2]|0)+480>>2]&63](o,l,c,d,e,738);m=k[f>>2]|0;n=g+1|0}l=l+1|0;if((l|0)>=(m|0))break;else{j=m;g=n}}}Zka(c,b,137052,353);Zka(c,b,134945,64);Zka(c,b,137867,206);Zka(c,b,131811,127);Zka(c,b,131261,123);Zka(c,b,131293,148);if((k[c+40>>2]|0)==300){r=a;return}Zka(c,b,136615,287);Zka(c,b,136636,288);r=a;return}function tda(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a=r;r=r+32|0;d=a+8|0;e=a;f=a+16|0;g=a+20|0;Fka(c,f,131762);if((k[f>>2]|0)!=122){r=a;return}zka(c,g,131781);if(i[g>>0]|0){if((k[c+40>>2]|0)!=300){k[e>>2]=136615;k[e+4>>2]=136636;Ska(c,2,e)}hoa(b,c,506,738,534);k[d>>2]=136615;k[d+4>>2]=136636;Lka(c,2,d)}r=a;return}function uda(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a=r;r=r+16|0;d=a;e=a+4|0;Fka(c,d,131762);if((k[d>>2]|0)!=122){r=a;return}zka(c,e,131781);if(i[e>>0]|0)qoa(b,c,131325,506,738,0);r=a;return}function vda(a,b,c){a=a|0;b=b|0;c=c|0;return}function wda(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;a=b+24|0;c=th(k[a>>2]|0)|0;d=Rqa(c>>>0>1073741823?-1:c<<2)|0;if(c)WEa(d|0,0,c<<2|0)|0;c=k[b+44>>2]|0;b=Qqa(16)|0;B=0;e=ya(428,k[a>>2]|0)|0;a=B;B=0;if(a&1){f=Rb()|0;g=Q;Sqa(b);Qb(f|0)}B=0;ib(293,b|0,131,d|0,e|0);e=B;B=0;if(e&1){f=Rb()|0;g=Q;Sqa(b);Qb(f|0)}else{YN(c,b);Tqa(d);return}}function xda(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;a=r;r=r+16|0;c=a;k[c>>2]=0;d=b+44|0;hO(k[d>>2]|0,c,0,131);e=b+24|0;if((th(k[e>>2]|0)|0)>0){b=0;do{k[(k[c>>2]|0)+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(th(k[e>>2]|0)|0))}b=k[d>>2]|0;d=k[c>>2]|0;qO(b,d,th(k[e>>2]|0)|0,131);e=k[c>>2]|0;if(!e){r=a;return}Tqa(e);r=a;return}function yda(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,131350,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,132,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function zda(a,b){a=a|0;b=b|0;return 0}function Ada(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,131350,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,141,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Bda(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0;a=r;r=r+256|0;c=a+184|0;d=a+240|0;e=a+236|0;f=a+48|0;g=a+224|0;h=a+212|0;j=a+200|0;l=a+40|0;m=a+32|0;n=a+196|0;o=a;cp(b,e,298);a:do switch(k[e>>2]|0){case 300:{q=b;break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){q=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{s=0;r=a;return s|0}break}default:{t=f+56|0;u=f+4|0;k[f>>2]=27524;k[t>>2]=27544;B=0;wa(508,f+56|0,u|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;x=v;vva(t);Qb(x|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[t>>2]=27488;B=0;va(448,u|0);v=B;B=0;do if(v&1){y=Rb()|0;z=Q;A=y}else{k[u>>2]=27560;y=f+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,u|0,c|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(c);Yua(y);Ava(u);z=D;A=C;break}Yua(c);B=0;C=Ia(40,f|0,144639,5)|0;D=B;B=0;if((((!(D&1)?(B=0,D=ya(427,k[e>>2]|0)|0,E=B,B=0,!(E&1)):0)?(E=Lta(D)|0,B=0,F=Ia(40,C|0,D|0,E|0)|0,E=B,B=0,!(E&1)):0)?(B=0,E=Ia(40,F|0,146481,18)|0,F=B,B=0,!(F&1)):0)?(B=0,Xa(239,E|0,0)|0,E=B,B=0,!(E&1)):0){E=Ab(20)|0;B=0;eb(502,g|0,131350,88);F=B;B=0;do if(!(F&1)){B=0;eb(502,h|0,144189,13);D=B;B=0;if(D&1){D=Rb()|0;C=Q;Yua(g);G=D;H=C;break}B=0;wa(510,j|0,u|0);C=B;B=0;if(C&1){C=Rb()|0;I=C;J=Q;K=1}else{B=0;ua(163,E|0,g|0,h|0,161,j|0);C=B;B=0;if(C&1)L=1;else{B=0;eb(503,E|0,1240,229);B=0;L=0}C=Rb()|0;D=Q;Yua(j);I=C;J=D;K=L}Yua(h);Yua(g);if(K){G=I;H=J}else{M=I;N=J;k[f>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(t);Qb(M|0)}}else{D=Rb()|0;G=D;H=Q}while(0);zb(E|0);M=G;N=H;k[f>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(t);Qb(M|0)}F=Rb()|0;M=F;N=Q;k[f>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(t);Qb(M|0)}while(0);w=z;x=A;vva(t);Qb(x|0)}}while(0);x=Wo(q,142)|0;Fc[k[(k[x>>2]|0)+36>>2]&1023](x,d);if(!(i[d>>0]|0)){if((k[e>>2]|0)==300){s=0;r=a;return s|0}ap(q);if(!q){s=0;r=a;return s|0}Ec[k[(k[q>>2]|0)+4>>2]&1023](q);s=0;r=a;return s|0}k[n>>2]=0;d=Hc[k[(k[q>>2]|0)+164>>2]&511](q)|0;x=gq(q,534)|0;A=d<<1;z=Rqa(A>>>0>536870911?-1:A<<3)|0;A=Rqa(d>>>0>536870911?-1:d<<3)|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[o+16>>2]=0;k[o+20>>2]=0;k[o+24>>2]=0;k[o+28>>2]=0;Uo(q,n);pp(q,l,358);w=Wo(q,148)|0;M=Wo(q,123)|0;N=Wo(q,127)|0;H=Wo(q,353)|0;G=Wo(q,64)|0;O=+Dp(q,267);P=+Dp(q,65);R=+Dp(q,144);S=+Dp(q,143);T=O*P*R*(+Dp(q,139)+S/R);R=+Dp(q,151);J=ed[k[(k[q>>2]|0)+308>>2]&511](q,2)|0;I=Hc[k[(k[J>>2]|0)+8>>2]&511](J)|0;if((I|0)<(Hc[k[(k[J>>2]|0)+12>>2]&511](J)|0)){K=J+8|0;g=o+24|0;h=x+12|0;L=I;do{Fc[k[(k[J>>2]|0)+24>>2]&1023](J,L);rd[k[(k[q>>2]|0)+260>>2]&511](q,f,k[n>>2]|0,J);nd[k[(k[w>>2]|0)+48>>2]&1023](w,m,J);S=R*+p[m>>3]*+p[K>>3]*+p[f>>3];p[c>>3]=S;P=+p[l>>3];if(P!=0.0){O=S*P;p[c>>3]=O;U=O}else U=S;p[o>>3]=U;p[g>>3]=U;I=k[n>>2]|0;j=Hc[k[(k[q>>2]|0)+164>>2]&511](q)|0;b=j<<1;u=Rqa(b>>>0>536870911?-1:b<<3)|0;rd[k[(k[q>>2]|0)+340>>2]&511](q,u,I,J);if((j|0)>0){I=0;do{p[z+(I<<3)>>3]=+p[u+(I<<3)>>3];b=I+j|0;p[z+(b<<3)>>3]=+p[u+(b<<3)>>3];I=I+1|0}while((I|0)!=(j|0))}Tqa(u);ZX(z,2,d,1,o,2,2,0,z,2,d,0,k[h>>2]|0,1)|0;if(+p[l>>3]!=0.0){nd[k[(k[q>>2]|0)+336>>2]&1023](q,A,J);p[c>>3]=T*+p[m>>3]*+p[K>>3]*+p[f>>3];ZX(A,d,1,0,c,1,1,0,A,1,d,0,k[h>>2]|0,1)|0;S=+Cda(0,q,J,M,N,H,G);p[c>>3]=S*+p[l>>3]*+p[K>>3]*+p[f>>3];ZX(A,d,1,0,c,1,1,0,A,1,d,0,k[h>>2]|0,1)|0}L=L+1|0}while((L|0)<(Hc[k[(k[J>>2]|0)+12>>2]&511](J)|0))}L=k[n>>2]|0;if(L)Tqa(L);k[n>>2]=0;Tqa(A);Tqa(z);Ec[k[(k[J>>2]|0)+4>>2]&1023](J);if((k[e>>2]|0)!=300?(ap(q),(q|0)!=0):0)Ec[k[(k[q>>2]|0)+4>>2]&1023](q);s=x;r=a;return s|0}function Cda(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;a=r;r=r+224|0;h=a+204|0;i=a+200|0;j=a+16|0;l=a+8|0;m=a;n=a+64|0;o=a+48|0;q=a+36|0;s=a+24|0;cp(b,i,155);switch(k[i>>2]|0){case 1:{i=Qqa(4)|0;k[i>>2]=39240;t=+nda(i,b,c,f,g);Ec[k[(k[i>>2]|0)+4>>2]&1023](i);nd[k[(k[d>>2]|0)+48>>2]&1023](d,l,c);nd[k[(k[e>>2]|0)+48>>2]&1023](e,j,c);pp(b,m,156);u=+p[l>>3];v=+KY(1.0/(+ja(+((u-+p[j>>3])*-20.0))+1.0)+1.0/(+ja(+((t-u)*-20.0))+1.0),1.0)*+p[m>>3];r=a;return +v}case 0:{v=0.0;r=a;return +v}default:{a=n+56|0;m=n+4|0;k[n>>2]=27524;k[a>>2]=27544;B=0;wa(508,n+56|0,m|0);j=B;B=0;if(j&1){j=Rb()|0;w=Q;x=j;vva(a);Qb(x|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[a>>2]=27488;B=0;va(448,m|0);j=B;B=0;do if(j&1){l=Rb()|0;y=Q;z=l}else{k[m>>2]=27560;l=n+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[n+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,m|0,h|0);b=B;B=0;if(b&1){b=Rb()|0;c=Q;Yua(h);Yua(l);Ava(m);y=c;z=b;break}Yua(h);B=0;b=Ia(40,n|0,131439,45)|0;c=B;B=0;if(!(c&1)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,o|0,131350,88);c=B;B=0;do if(!(c&1)){B=0;eb(502,q|0,131485,27);e=B;B=0;if(e&1){e=Rb()|0;d=Q;Yua(o);A=d;C=e;break}B=0;wa(510,s|0,m|0);e=B;B=0;if(e&1){e=Rb()|0;D=Q;E=e;F=1}else{B=0;ua(163,b|0,o|0,q|0,471,s|0);e=B;B=0;if(e&1)G=1;else{B=0;eb(503,b|0,1240,229);B=0;G=0}e=Rb()|0;d=Q;Yua(s);D=d;E=e;F=G}Yua(q);Yua(o);if(F){A=D;C=E}else{H=D;I=E;k[n>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(l);Ava(m);vva(a);Qb(I|0)}}else{e=Rb()|0;A=Q;C=e}while(0);zb(b|0);H=A;I=C;k[n>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(l);Ava(m);vva(a);Qb(I|0)}c=Rb()|0;H=Q;I=c;k[n>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(l);Ava(m);vva(a);Qb(I|0)}while(0);w=y;x=z;vva(a);Qb(x|0)}}return +(0.0)}function Dda(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0;a=r;r=r+224|0;c=a+160|0;d=a+216|0;e=a+212|0;f=a+24|0;g=a+200|0;h=a+188|0;j=a+176|0;l=a+16|0;m=a+8|0;n=a;o=a+172|0;cp(b,e,298);a:do switch(k[e>>2]|0){case 300:{q=b;break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){q=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{s=0;r=a;return s|0}break}default:{t=f+56|0;u=f+4|0;k[f>>2]=27524;k[t>>2]=27544;B=0;wa(508,f+56|0,u|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;x=v;vva(t);Qb(x|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[t>>2]=27488;B=0;va(448,u|0);v=B;B=0;do if(v&1){y=Rb()|0;z=Q;A=y}else{k[u>>2]=27560;y=f+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,u|0,c|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(c);Yua(y);Ava(u);z=D;A=C;break}Yua(c);B=0;C=Ia(40,f|0,144639,5)|0;D=B;B=0;if((((!(D&1)?(B=0,D=ya(427,k[e>>2]|0)|0,E=B,B=0,!(E&1)):0)?(E=Lta(D)|0,B=0,F=Ia(40,C|0,D|0,E|0)|0,E=B,B=0,!(E&1)):0)?(B=0,E=Ia(40,F|0,146481,18)|0,F=B,B=0,!(F&1)):0)?(B=0,Xa(239,E|0,0)|0,E=B,B=0,!(E&1)):0){E=Ab(20)|0;B=0;eb(502,g|0,131350,88);F=B;B=0;do if(!(F&1)){B=0;eb(502,h|0,144203,13);D=B;B=0;if(D&1){D=Rb()|0;C=Q;Yua(g);G=D;H=C;break}B=0;wa(510,j|0,u|0);C=B;B=0;if(C&1){C=Rb()|0;I=C;J=Q;K=1}else{B=0;ua(163,E|0,g|0,h|0,268,j|0);C=B;B=0;if(C&1)L=1;else{B=0;eb(503,E|0,1240,229);B=0;L=0}C=Rb()|0;D=Q;Yua(j);I=C;J=D;K=L}Yua(h);Yua(g);if(K){G=I;H=J}else{M=I;N=J;k[f>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(t);Qb(M|0)}}else{D=Rb()|0;G=D;H=Q}while(0);zb(E|0);M=G;N=H;k[f>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(t);Qb(M|0)}F=Rb()|0;M=F;N=Q;k[f>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(t);Qb(M|0)}while(0);w=z;x=A;vva(t);Qb(x|0)}}while(0);x=Wo(q,142)|0;Fc[k[(k[x>>2]|0)+36>>2]&1023](x,d);if(!(i[d>>0]|0)){if((k[e>>2]|0)==300){s=0;r=a;return s|0}ap(q);if(!q){s=0;r=a;return s|0}Ec[k[(k[q>>2]|0)+4>>2]&1023](q);s=0;r=a;return s|0}k[o>>2]=0;d=Hc[k[(k[q>>2]|0)+164>>2]&511](q)|0;x=Hc[k[(k[q>>2]|0)+172>>2]&511](q)|0;A=iq(q,534)|0;z=Rqa(d>>>0>536870911?-1:d<<3)|0;Uo(q,o);pp(q,c,358);w=Wo(q,148)|0;M=Wo(q,123)|0;N=Wo(q,127)|0;H=Wo(q,353)|0;G=Wo(q,64)|0;J=Wo(q,125)|0;if(+p[c>>3]!=0.0)O=Wo(q,128)|0;else O=0;P=+Dp(q,267);R=+Dp(q,65);S=+Dp(q,144);T=+Dp(q,143);U=P*R*S*(+Dp(q,139)+T/S);I=ed[k[(k[q>>2]|0)+308>>2]&511](q,2)|0;K=Hc[k[(k[I>>2]|0)+8>>2]&511](I)|0;b:do if((K|0)<(Hc[k[(k[I>>2]|0)+12>>2]&511](I)|0)){g=I+8|0;h=A+4|0;if((d|0)>0)V=K;else{L=K;while(1){Fc[k[(k[I>>2]|0)+24>>2]&1023](I,L);rd[k[(k[q>>2]|0)+260>>2]&511](q,m,k[o>>2]|0,I);nd[k[(k[q>>2]|0)+336>>2]&1023](q,z,I);if(+p[c>>3]!=0.0){nd[k[(k[O>>2]|0)+48>>2]&1023](O,f,I);nd[k[(k[w>>2]|0)+48>>2]&1023](w,l,I);+Eda(0,q,I,M,N,H,G)}L=L+1|0;if((L|0)>=(Hc[k[(k[I>>2]|0)+12>>2]&511](I)|0))break b}}do{Fc[k[(k[I>>2]|0)+24>>2]&1023](I,V);rd[k[(k[q>>2]|0)+260>>2]&511](q,m,k[o>>2]|0,I);nd[k[(k[q>>2]|0)+336>>2]&1023](q,z,I);if(+p[c>>3]!=0.0){nd[k[(k[O>>2]|0)+48>>2]&1023](O,f,I);nd[k[(k[w>>2]|0)+48>>2]&1023](w,l,I);S=+Eda(0,q,I,M,N,H,G);T=+p[m>>3]*+p[g>>3]*(U*+p[f>>3]*+p[l>>3]+S*+p[c>>3]);L=k[h>>2]|0;t=0;do{j=L+(t<<3)|0;p[j>>3]=T*+p[z+(t<<3)>>3]+ +p[j>>3];t=t+1|0}while((t|0)!=(d|0))}V=V+1|0}while((V|0)<(Hc[k[(k[I>>2]|0)+12>>2]&511](I)|0))}while(0);Ec[k[(k[I>>2]|0)+4>>2]&1023](I);I=Hc[k[(k[q>>2]|0)+304>>2]&511](q)|0;if((x|0)>0){V=A+4|0;d=0;do{Fc[k[(k[I>>2]|0)+28>>2]&1023](I,d);U=+(ed[k[(k[q>>2]|0)+508>>2]&511](q,d)|0);nd[k[(k[J>>2]|0)+48>>2]&1023](J,n,I);c=(k[V>>2]|0)+(d<<3)|0;p[c>>3]=+p[n>>3]/U+ +p[c>>3];d=d+1|0}while((d|0)!=(x|0))}x=k[o>>2]|0;if(x)Tqa(x);k[o>>2]=0;Tqa(z);if(I)Ec[k[(k[I>>2]|0)+4>>2]&1023](I);if((k[e>>2]|0)!=300?(ap(q),(q|0)!=0):0)Ec[k[(k[q>>2]|0)+4>>2]&1023](q);s=A;r=a;return s|0}function Eda(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;a=r;r=r+224|0;h=a+204|0;i=a+200|0;j=a+16|0;l=a+8|0;m=a;n=a+64|0;o=a+48|0;q=a+36|0;s=a+24|0;cp(b,i,155);switch(k[i>>2]|0){case 1:{i=Qqa(4)|0;k[i>>2]=39240;t=+nda(i,b,c,f,g);Ec[k[(k[i>>2]|0)+4>>2]&1023](i);nd[k[(k[d>>2]|0)+48>>2]&1023](d,l,c);nd[k[(k[e>>2]|0)+48>>2]&1023](e,j,c);pp(b,m,156);u=+p[l>>3];v=+KY(1.0/(+ja(+((u-+p[j>>3])*-20.0))+1.0)+1.0/(+ja(+((t-u)*-20.0))+1.0),1.0)*(+p[l>>3]*+p[m>>3]);r=a;return +v}case 0:{v=0.0;r=a;return +v}default:{a=n+56|0;m=n+4|0;k[n>>2]=27524;k[a>>2]=27544;B=0;wa(508,n+56|0,m|0);l=B;B=0;if(l&1){l=Rb()|0;w=Q;x=l;vva(a);Qb(x|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[a>>2]=27488;B=0;va(448,m|0);l=B;B=0;do if(l&1){j=Rb()|0;y=Q;z=j}else{k[m>>2]=27560;j=n+36|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;k[n+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,m|0,h|0);b=B;B=0;if(b&1){b=Rb()|0;c=Q;Yua(h);Yua(j);Ava(m);y=c;z=b;break}Yua(h);B=0;b=Ia(40,n|0,131439,45)|0;c=B;B=0;if(!(c&1)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,o|0,131350,88);c=B;B=0;do if(!(c&1)){B=0;eb(502,q|0,131513,27);e=B;B=0;if(e&1){e=Rb()|0;d=Q;Yua(o);A=d;C=e;break}B=0;wa(510,s|0,m|0);e=B;B=0;if(e&1){e=Rb()|0;D=Q;E=e;F=1}else{B=0;ua(163,b|0,o|0,q|0,514,s|0);e=B;B=0;if(e&1)G=1;else{B=0;eb(503,b|0,1240,229);B=0;G=0}e=Rb()|0;d=Q;Yua(s);D=d;E=e;F=G}Yua(q);Yua(o);if(F){A=D;C=E}else{H=D;I=E;k[n>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(j);Ava(m);vva(a);Qb(I|0)}}else{e=Rb()|0;A=Q;C=e}while(0);zb(b|0);H=A;I=C;k[n>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(j);Ava(m);vva(a);Qb(I|0)}c=Rb()|0;H=Q;I=c;k[n>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(j);Ava(m);vva(a);Qb(I|0)}while(0);w=y;x=z;vva(a);Qb(x|0)}}return +(0.0)}function Fda(a,b,c){a=a|0;b=b|0;c=c|0;nd[k[(k[c>>2]|0)+176>>2]&1023](c,b,127);return}function Gda(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,131350,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,359,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function Hda(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;a=r;r=r+384|0;d=a+356|0;e=a+368|0;f=a+352|0;g=a+348|0;h=a+200|0;i=a+336|0;j=a+48|0;l=a+36|0;m=a+64|0;n=a+24|0;o=a+12|0;q=a;cp(c,f,298);do if((k[f>>2]|0)!=300)if(Hc[k[(k[c>>2]|0)+248>>2]&511](c)|0){s=Hc[k[(k[c>>2]|0)+432>>2]&511](c)|0;break}else{r=a;return}else s=c;while(0);k[g>>2]=0;u=Hc[k[(k[s>>2]|0)+164>>2]&511](s)|0;v=u>>>0>536870911?-1:u<<3;w=Rqa(v)|0;x=Rqa(v)|0;rp(s,g,534,943);xp(s,w,123);v=Wo(s,142)|0;Fc[k[(k[v>>2]|0)+36>>2]&1023](v,e);a:do if((u|0)>0){e=k[g>>2]|0;v=0;while(1){y=+p[b+(k[e+(v<<2)>>2]<<3)>>3];p[x+(v<<3)>>3]=y;z=+$(+y);p[t>>3]=z;A=k[t>>2]|0;C=k[t+4>>2]|0;if(C>>>0>2146435072|(C|0)==2146435072&A>>>0>0){D=8;break}v=v+1|0;if((A|0)==0&(C|0)==2146435072){D=32;break}if((v|0)>=(u|0))break a}if((D|0)==8){v=h+56|0;e=h+4|0;k[h>>2]=27524;k[v>>2]=27544;B=0;wa(508,h+56|0,e|0);C=B;B=0;if(C&1){C=Rb()|0;E=Q;F=C;vva(v);Qb(F|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[v>>2]=27488;B=0;va(448,e|0);C=B;B=0;do if(C&1){A=Rb()|0;G=Q;H=A}else{k[e>>2]=27560;A=h+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[h+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,e|0,d|0);I=B;B=0;if(I&1){I=Rb()|0;J=Q;Yua(d);Yua(A);Ava(e);G=J;H=I;break}Yua(d);B=0;I=Ia(40,h|0,135564,28)|0;J=B;B=0;b:do if(!(J&1)?(B=0,Xa(239,I|0,0)|0,K=B,B=0,!(K&1)):0){K=Ab(20)|0;B=0;eb(502,i|0,131350,88);L=B;B=0;do if(!(L&1)){B=0;eb(502,j|0,137199,23);M=B;B=0;if(M&1){M=Rb()|0;N=Q;Yua(i);O=M;P=N;break}B=0;wa(510,l|0,e|0);N=B;B=0;if(N&1){N=Rb()|0;R=Q;S=N;T=1}else{B=0;ua(163,K|0,i|0,j|0,397,l|0);N=B;B=0;if(N&1)U=1;else{B=0;eb(503,K|0,1240,229);B=0;U=0}N=Rb()|0;M=Q;Yua(l);R=M;S=N;T=U}Yua(j);Yua(i);if(T){O=S;P=R}else{V=S;W=R;break b}}else{N=Rb()|0;O=N;P=Q}while(0);zb(K|0);V=O;W=P}else D=23;while(0);if((D|0)==23){I=Rb()|0;V=I;W=Q}k[h>>2]=27468;k[v>>2]=27488;k[e>>2]=27560;Yua(A);Ava(e);vva(v);X=W;Y=V;Qb(Y|0)}while(0);E=G;F=H;vva(v);Qb(F|0)}else if((D|0)==32){e=m+56|0;C=m+4|0;k[m>>2]=27524;k[e>>2]=27544;B=0;wa(508,m+56|0,C|0);I=B;B=0;if(I&1){I=Rb()|0;Z=Q;_=I;vva(e);Qb(_|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[e>>2]=27488;B=0;va(448,C|0);I=B;B=0;do if(I&1){J=Rb()|0;aa=Q;ba=J}else{k[C>>2]=27560;J=m+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[m+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,C|0,d|0);L=B;B=0;if(L&1){L=Rb()|0;N=Q;Yua(d);Yua(J);Ava(C);aa=N;ba=L;break}Yua(d);B=0;L=Ia(40,m|0,135593,28)|0;N=B;B=0;c:do if(!(N&1)?(B=0,Xa(239,L|0,0)|0,M=B,B=0,!(M&1)):0){M=Ab(20)|0;B=0;eb(502,n|0,131350,88);ca=B;B=0;do if(!(ca&1)){B=0;eb(502,o|0,137199,23);da=B;B=0;if(da&1){da=Rb()|0;ea=Q;Yua(n);fa=da;ga=ea;break}B=0;wa(510,q|0,C|0);ea=B;B=0;if(ea&1){ea=Rb()|0;ha=1;ia=Q;ja=ea}else{B=0;ua(163,M|0,n|0,o|0,398,q|0);ea=B;B=0;if(ea&1)ka=1;else{B=0;eb(503,M|0,1240,229);B=0;ka=0}ea=Rb()|0;da=Q;Yua(q);ha=ka;ia=da;ja=ea}Yua(o);Yua(n);if(ha){fa=ja;ga=ia}else{la=ia;ma=ja;break c}}else{ea=Rb()|0;fa=ea;ga=Q}while(0);zb(M|0);la=ga;ma=fa}else D=47;while(0);if((D|0)==47){L=Rb()|0;la=Q;ma=L}k[m>>2]=27468;k[e>>2]=27488;k[C>>2]=27560;Yua(J);Ava(C);vva(e);X=la;Y=ma;Qb(Y|0)}while(0);Z=aa;_=ba;vva(e);Qb(_|0)}}while(0);rd[k[(k[c>>2]|0)+44>>2]&511](c,127,x,738);Tqa(x);Tqa(w);w=k[g>>2]|0;if(w)Tqa(w);k[g>>2]=0;if((k[f>>2]|0)!=300?(ap(s),(s|0)!=0):0)Ec[k[(k[s>>2]|0)+4>>2]&1023](s);r=a;return}function Ida(a,b){a=a|0;b=b|0;return}function Jda(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ca=0,da=0,ea=0;a=r;r=r+208|0;c=a+192|0;d=a+204|0;e=a+188|0;f=a+184|0;g=a;h=a+48|0;j=a+32|0;l=a+20|0;m=a+8|0;cO(k[b+44>>2]|0,f,298);n=b+20|0;if((th(k[n>>2]|0)|0)>0)o=0;else{r=a;return}a:while(1){b=qh(k[n>>2]|0,o)|0;cO(k[b+36>>2]|0,e,150);if(!(k[e>>2]|0)){q=37;break}switch(k[f>>2]|0){case 300:{if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){q=37;break a}s=+Dp(b,215);break}case 302:{s=+Dp(b,214);break}default:{q=7;break a}}t=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;u=t>>>0>536870911?-1:t<<3;v=Rqa(u)|0;w=Rqa(u)|0;x=Rqa(u)|0;y=Rqa(u)|0;z=Rqa(u)|0;A=Rqa(u)|0;C=Rqa(u)|0;u=Wo(b,142)|0;Fc[k[(k[u>>2]|0)+36>>2]&1023](u,d);pp(b,g,358);D=+Dp(b,65);E=+Dp(b,267);F=+Dp(b,265);G=+Dp(b,217);H=+Dp(b,211);I=+Dp(b,151);J=+Dp(b,145);K=+Dp(b,147);L=+ba(+s,+-G);xp(b,w,127);xp(b,x,129);xp(b,y,130);xp(b,z,149);xp(b,A,353);xp(b,C,64);u=(t|0)>0;if(!(i[d>>0]|0)){if(u){M=0;do{p[v+(M<<3)>>3]=J;M=M+1|0}while((M|0)!=(t|0))}}else if(u){J=D*E;N=F*H;M=0;do{O=F*+p[A+(M<<3)>>3];P=D*(O-E*+LY(0.0,+p[w+(M<<3)>>3]-+p[C+(M<<3)>>3]));O=+p[x+(M<<3)>>3];R=+p[y+(M<<3)>>3];S=+p[g>>3];T=+p[z+(M<<3)>>3]*((O*O+R*R)*(I*(J*S/N))+1.0-+ba(+(P<0.0?0.0:P),+G)*(L*S/+ba(+G,+G)*2.0));p[v+(M<<3)>>3]=T>K?K:T;M=M+1|0}while((M|0)!=(t|0))}t=k[b>>2]|0;M=k[t+48>>2]|0;u=Hc[k[t+128>>2]&511](b)|0;rd[M&511](b,148,v,u);Tqa(v);Tqa(w);Tqa(x);Tqa(y);Tqa(z);Tqa(A);Tqa(C);o=o+1|0;if((o|0)>=(th(k[n>>2]|0)|0)){q=37;break}}if((q|0)==7){n=h+56|0;o=h+4|0;k[h>>2]=27524;k[n>>2]=27544;B=0;wa(508,h+56|0,o|0);g=B;B=0;if(g&1){g=Rb()|0;U=Q;V=g;vva(n);Qb(V|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[n>>2]=27488;B=0;va(448,o|0);g=B;B=0;do if(g&1){d=Rb()|0;W=Q;X=d}else{k[o>>2]=27560;d=h+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,o|0,c|0);f=B;B=0;if(f&1){f=Rb()|0;e=Q;Yua(c);Yua(d);Ava(o);W=e;X=f;break}Yua(c);B=0;f=Ia(40,h|0,131541,19)|0;e=B;B=0;if(!(e&1)?(B=0,Xa(239,f|0,0)|0,f=B,B=0,!(f&1)):0){f=Ab(20)|0;B=0;eb(502,j|0,131350,88);e=B;B=0;do if(!(e&1)){B=0;eb(502,l|0,131561,19);u=B;B=0;if(u&1){u=Rb()|0;M=Q;Yua(j);Y=u;Z=M;break}B=0;wa(510,m|0,o|0);M=B;B=0;if(M&1){M=Rb()|0;_=M;$=Q;aa=1}else{B=0;ua(163,f|0,j|0,l|0,547,m|0);M=B;B=0;if(M&1)ca=1;else{B=0;eb(503,f|0,1240,229);B=0;ca=0}M=Rb()|0;u=Q;Yua(m);_=M;$=u;aa=ca}Yua(l);Yua(j);if(aa){Y=_;Z=$}else{da=_;ea=$;k[h>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(d);Ava(o);vva(n);Qb(da|0)}}else{u=Rb()|0;Y=u;Z=Q}while(0);zb(f|0);da=Y;ea=Z;k[h>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(d);Ava(o);vva(n);Qb(da|0)}e=Rb()|0;da=e;ea=Q;k[h>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(d);Ava(o);vva(n);Qb(da|0)}while(0);U=W;V=X;vva(n);Qb(V|0)}else if((q|0)==37){r=a;return}}function Kda(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0;d=r;r=r+208|0;a=d+188|0;f=d+200|0;g=d+184|0;h=d;j=d+48|0;l=d+32|0;m=d+20|0;n=d+8|0;cp(e,g,298);a:do switch(k[g>>2]|0){case 300:{o=e;break}case 302:{if(Hc[k[(k[e>>2]|0)+248>>2]&511](e)|0){o=Hc[k[(k[e>>2]|0)+432>>2]&511](e)|0;break a}else{r=d;return}break}default:{q=j+56|0;s=j+4|0;k[j>>2]=27524;k[q>>2]=27544;B=0;wa(508,j+56|0,s|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;v=t;vva(q);Qb(v|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[q>>2]=27488;B=0;va(448,s|0);t=B;B=0;do if(t&1){w=Rb()|0;x=Q;y=w}else{k[s>>2]=27560;w=j+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[j+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,s|0,a|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(a);Yua(w);Ava(s);x=A;y=z;break}Yua(a);B=0;z=Ia(40,j|0,144639,5)|0;A=B;B=0;if((((!(A&1)?(B=0,A=ya(427,k[g>>2]|0)|0,C=B,B=0,!(C&1)):0)?(C=Lta(A)|0,B=0,D=Ia(40,z|0,A|0,C|0)|0,C=B,B=0,!(C&1)):0)?(B=0,C=Ia(40,D|0,146481,18)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,C|0,0)|0,C=B,B=0,!(C&1)):0){C=Ab(20)|0;B=0;eb(502,l|0,131350,88);D=B;B=0;do if(!(D&1)){B=0;eb(502,m|0,131581,19);A=B;B=0;if(A&1){A=Rb()|0;z=Q;Yua(l);E=z;F=A;break}B=0;wa(510,n|0,s|0);A=B;B=0;if(A&1){A=Rb()|0;G=Q;H=A;I=1}else{B=0;ua(163,C|0,l|0,m|0,666,n|0);A=B;B=0;if(A&1)J=1;else{B=0;eb(503,C|0,1240,229);B=0;J=0}A=Rb()|0;z=Q;Yua(n);G=z;H=A;I=J}Yua(m);Yua(l);if(I){E=G;F=H}else{K=G;L=H;k[j>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);Qb(L|0)}}else{A=Rb()|0;E=Q;F=A}while(0);zb(C|0);K=E;L=F;k[j>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);Qb(L|0)}D=Rb()|0;K=Q;L=D;k[j>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);Qb(L|0)}while(0);u=x;v=y;vva(q);Qb(v|0)}}while(0);v=Hc[k[(k[o>>2]|0)+164>>2]&511](o)|0;y=v>>>0>536870911?-1:v<<3;x=Rqa(y)|0;u=Rqa(y)|0;L=Rqa(y)|0;j=Rqa(y)|0;K=Rqa(y)|0;M=+Dp(o,145);N=+Dp(o,146);y=Wo(o,142)|0;Fc[k[(k[y>>2]|0)+36>>2]&1023](y,f);xp(o,u,141);xp(o,x,148);xp(o,L,123);xp(o,j,127);xp(o,K,125);O=+p[L>>3];if((v|0)>1){y=1;P=O;while(1){R=+p[L+(y<<3)>>3];S=R<=P?R:P;y=y+1|0;if((y|0)==(v|0)){T=S;break}else P=S}}else T=O;if((v|0)>0){y=o+20|0;F=c+4|0;E=b+4|0;H=(v|0)<1;G=0;do{I=u+(G<<3)|0;O=+p[I>>3];if(O==0.0)p[x+(G<<3)>>3]=M;if(+p[K+(G<<3)>>3]>0.0){l=Qn(k[(k[y>>2]|0)+(G<<2)>>2]|0)|0;if(k[b>>2]|0){m=k[k[E>>2]>>2]|0;Jc[k[(k[m>>2]|0)+20>>2]&1](m,l,1.0,0)}if(+p[I>>3]==0.0?(l=Qn(k[(k[y>>2]|0)+(G<<2)>>2]|0)|0,(k[c>>2]|0)!=0):0){m=k[k[F>>2]>>2]|0;Jc[k[(k[m>>2]|0)+20>>2]&1](m,l,1.0,0)}}else if(O>0.0){l=Qn(k[(k[y>>2]|0)+(G<<2)>>2]|0)|0;if(k[b>>2]|0){m=k[k[E>>2]>>2]|0;Jc[k[(k[m>>2]|0)+20>>2]&1](m,l,1.0,0)}if(+p[x+(G<<3)>>3]<N){l=Qn(k[(k[y>>2]|0)+(G<<2)>>2]|0)|0;if(k[b>>2]|0){m=k[k[E>>2]>>2]|0;Jc[k[(k[m>>2]|0)+20>>2]&1](m,l,0.0,0)}l=Qn(k[(k[y>>2]|0)+(G<<2)>>2]|0)|0;if(k[c>>2]|0){m=k[k[F>>2]>>2]|0;Jc[k[(k[m>>2]|0)+20>>2]&1](m,l,1.0,0)}}}Lda(0,h,o,k[(k[y>>2]|0)+(G<<2)>>2]|0);if(!(((i[f>>0]|0)==0?1:!(+p[j+(G<<3)>>3]>=+p[h>>3]))|H)){l=0;do{if(+p[L+(l<<3)>>3]==T){m=Qn(k[(k[y>>2]|0)+(l<<2)>>2]|0)|0;if(k[b>>2]|0){J=k[k[E>>2]>>2]|0;Jc[k[(k[J>>2]|0)+20>>2]&1](J,m,1.0,0)}if(+p[I>>3]==0.0?(m=Qn(k[(k[y>>2]|0)+(G<<2)>>2]|0)|0,(k[c>>2]|0)!=0):0){J=k[k[F>>2]>>2]|0;Jc[k[(k[J>>2]|0)+20>>2]&1](J,m,1.0,0)}}l=l+1|0}while((l|0)!=(v|0))}G=G+1|0}while((G|0)!=(v|0))}v=k[o>>2]|0;G=k[v+48>>2]|0;F=Hc[k[v+128>>2]&511](o)|0;rd[G&511](o,148,x,F);if((k[g>>2]|0)!=300){ap(o);Ec[k[(k[o>>2]|0)+4>>2]&1023](o)}Tqa(x);Tqa(u);Tqa(L);Tqa(j);Tqa(K);r=d;return}function Lda(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;a=r;r=r+400|0;e=a+380|0;f=a+376|0;g=a+16|0;h=a+8|0;i=a;j=a+240|0;l=a+224|0;m=a+72|0;n=a+60|0;o=a+88|0;q=a+48|0;s=a+36|0;t=a+24|0;cp(c,f,153);switch(k[f>>2]|0){case 0:{p[g>>3]=1.0e10;u=1.0e10;p[b>>3]=u;r=a;return}case 1:{pp(c,g,154);u=+p[g>>3];p[b>>3]=u;r=a;return}case 2:{v=+Dp(c,267);w=+Dp(c,265);rd[k[(k[c>>2]|0)+144>>2]&511](c,h,d,353);rd[k[(k[c>>2]|0)+144>>2]&511](c,i,d,64);x=+p[i>>3]+w*+p[h>>3]/v;p[g>>3]=x;u=x;p[b>>3]=u;r=a;return}case 3:{a=j+56|0;b=j+4|0;k[j>>2]=27524;k[a>>2]=27544;B=0;wa(508,j+56|0,b|0);g=B;B=0;if(g&1){g=Rb()|0;y=Q;z=g;vva(a);Qb(z|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[a>>2]=27488;B=0;va(448,b|0);g=B;B=0;do if(g&1){h=Rb()|0;A=Q;C=h}else{k[b>>2]=27560;h=j+36|0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[j+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);i=B;B=0;if(i&1){i=Rb()|0;d=Q;Yua(e);Yua(h);Ava(b);A=d;C=i;break}Yua(e);B=0;i=Ia(40,j|0,131601,38)|0;d=B;B=0;a:do if(!(d&1)?(B=0,Xa(239,i|0,0)|0,c=B,B=0,!(c&1)):0){c=Ab(20)|0;B=0;eb(502,l|0,131350,88);f=B;B=0;do if(!(f&1)){B=0;eb(502,m|0,131640,29);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(l);F=D;G=E;break}B=0;wa(510,n|0,b|0);E=B;B=0;if(E&1){E=Rb()|0;H=Q;I=E;J=1}else{B=0;ua(163,c|0,l|0,m|0,809,n|0);E=B;B=0;if(E&1)K=1;else{B=0;eb(503,c|0,1240,229);B=0;K=0}E=Rb()|0;D=Q;Yua(n);H=D;I=E;J=K}Yua(m);Yua(l);if(J){F=I;G=H}else{L=I;M=H;break a}}else{E=Rb()|0;F=E;G=Q}while(0);zb(c|0);L=F;M=G}else N=20;while(0);if((N|0)==20){i=Rb()|0;L=i;M=Q}k[j>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(h);Ava(b);vva(a);O=M;P=L;Qb(P|0)}while(0);y=A;z=C;vva(a);Qb(z|0);break}default:{z=o+56|0;a=o+4|0;k[o>>2]=27524;k[z>>2]=27544;B=0;wa(508,o+56|0,a|0);C=B;B=0;if(C&1){C=Rb()|0;R=Q;S=C;vva(z);Qb(S|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[z>>2]=27488;B=0;va(448,a|0);C=B;B=0;do if(C&1){A=Rb()|0;T=Q;U=A}else{k[a>>2]=27560;A=o+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[o+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,a|0,e|0);y=B;B=0;if(y&1){y=Rb()|0;L=Q;Yua(e);Yua(A);Ava(a);T=L;U=y;break}Yua(e);B=0;y=Ia(40,o|0,131670,43)|0;L=B;B=0;b:do if(!(L&1)?(B=0,Xa(239,y|0,0)|0,M=B,B=0,!(M&1)):0){M=Ab(20)|0;B=0;eb(502,q|0,131350,88);b=B;B=0;do if(!(b&1)){B=0;eb(502,s|0,131640,29);j=B;B=0;if(j&1){j=Rb()|0;G=Q;Yua(q);V=j;W=G;break}B=0;wa(510,t|0,a|0);G=B;B=0;if(G&1){G=Rb()|0;X=1;Y=Q;Z=G}else{B=0;ua(163,M|0,q|0,s|0,812,t|0);G=B;B=0;if(G&1)_=1;else{B=0;eb(503,M|0,1240,229);B=0;_=0}G=Rb()|0;j=Q;Yua(t);X=_;Y=j;Z=G}Yua(s);Yua(q);if(X){V=Z;W=Y}else{$=Y;aa=Z;break b}}else{G=Rb()|0;V=G;W=Q}while(0);zb(M|0);$=W;aa=V}else N=43;while(0);if((N|0)==43){y=Rb()|0;$=Q;aa=y}k[o>>2]=27468;k[z>>2]=27488;k[a>>2]=27560;Yua(A);Ava(a);vva(z);O=$;P=aa;Qb(P|0)}while(0);R=T;S=U;vva(z);Qb(S|0)}}}function Mda(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0.0,L=0.0;a=r;r=r+192|0;d=a+180|0;e=a+176|0;f=a+40|0;g=a+24|0;h=a+12|0;j=a;cp(c,e,298);a:do switch(k[e>>2]|0){case 300:{l=c;break}case 302:{if(Hc[k[(k[c>>2]|0)+248>>2]&511](c)|0){l=Hc[k[(k[c>>2]|0)+432>>2]&511](c)|0;break a}else{r=a;return}break}default:{m=f+56|0;n=f+4|0;k[f>>2]=27524;k[m>>2]=27544;B=0;wa(508,f+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;q=Q;s=o;vva(m);Qb(s|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){t=Rb()|0;u=Q;v=t}else{k[n>>2]=27560;t=f+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,n|0,d|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(d);Yua(t);Ava(n);u=x;v=w;break}Yua(d);B=0;w=Ia(40,f|0,144639,5)|0;x=B;B=0;if((((!(x&1)?(B=0,x=ya(427,k[e>>2]|0)|0,y=B,B=0,!(y&1)):0)?(y=Lta(x)|0,B=0,z=Ia(40,w|0,x|0,y|0)|0,y=B,B=0,!(y&1)):0)?(B=0,y=Ia(40,z|0,146481,18)|0,z=B,B=0,!(z&1)):0)?(B=0,Xa(239,y|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,g|0,131350,88);z=B;B=0;do if(!(z&1)){B=0;eb(502,h|0,131714,21);x=B;B=0;if(x&1){x=Rb()|0;w=Q;Yua(g);A=w;C=x;break}B=0;wa(510,j|0,n|0);x=B;B=0;if(x&1){x=Rb()|0;D=Q;E=x;F=1}else{B=0;ua(163,y|0,g|0,h|0,749,j|0);x=B;B=0;if(x&1)G=1;else{B=0;eb(503,y|0,1240,229);B=0;G=0}x=Rb()|0;w=Q;Yua(j);D=w;E=x;F=G}Yua(h);Yua(g);if(F){A=D;C=E}else{H=D;I=E;k[f>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);Qb(I|0)}}else{x=Rb()|0;A=Q;C=x}while(0);zb(y|0);H=A;I=C;k[f>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);Qb(I|0)}z=Rb()|0;H=Q;I=z;k[f>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);Qb(I|0)}while(0);q=u;s=v;vva(m);Qb(s|0)}}while(0);s=Hc[k[(k[l>>2]|0)+164>>2]&511](l)|0;v=Rqa(s>>>0>536870911?-1:s<<3)|0;xp(l,v,141);u=Wo(l,142)|0;Fc[k[(k[u>>2]|0)+36>>2]&1023](u,d);u=(s|0)>0;do if(u){J=0.0;q=0;while(1){K=J+ +p[v+(q<<3)>>3];q=q+1|0;if((q|0)==(s|0)){L=K;break}else J=K}if(L>0.0){if(!u)break;q=l+20|0;m=b+4|0;I=0;do{f=Qn(k[(k[q>>2]|0)+(I<<2)>>2]|0)|0;if(k[b>>2]|0){H=k[k[m>>2]>>2]|0;Jc[k[(k[H>>2]|0)+20>>2]&1](H,f,1.0,0)}I=I+1|0}while((I|0)!=(s|0))}else{if(!((i[d>>0]|0)!=0&u))break;I=l+20|0;m=b+4|0;q=0;do{f=Qn(k[(k[I>>2]|0)+(q<<2)>>2]|0)|0;if(k[b>>2]|0){H=k[k[m>>2]>>2]|0;Jc[k[(k[H>>2]|0)+20>>2]&1](H,f,1.0,0)}q=q+1|0}while((q|0)!=(s|0))}}while(0);if((k[e>>2]|0)!=300?(ap(l),(l|0)!=0):0)Ec[k[(k[l>>2]|0)+4>>2]&1023](l);Tqa(v);r=a;return}function Nda(a){a=a|0;Sqa(a);return}function Oda(a,b,c){a=a|0;b=b|0;c=c|0;return}function Pda(a,b,c){a=a|0;b=b|0;c=c|0;return}function Qda(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;a=r;r=r+32|0;d=a+16|0;e=a+8|0;f=a;g=a+20|0;h=a+24|0;Fka(c,g,131762);if((k[g>>2]|0)!=122){r=a;return}zka(c,h,131781);if(i[h>>0]|0){switch(k[c+40>>2]|0){case 302:{k[f>>2]=136615;Ska(c,1,f);break}case 301:{k[e>>2]=136615;Ska(c,1,e);break}default:{}}hoa(b,c,492,738,534);k[d>>2]=136615;Lka(c,1,d)}r=a;return}function Rda(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function Sda(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;a=r;r=r+16|0;f=a+4|0;g=a;Fka(c,g,131762);if((k[g>>2]|0)!=122){r=a;return}zka(c,f,131781);if(!(i[f>>0]|0)){r=a;return}f=c+56|0;g=k[f>>2]|0;if((g|0)>0){h=c+32|0;j=g;g=0;l=0;while(1){if(!(i[(k[h>>2]|0)+l>>0]|0)){m=j;n=g}else{o=qh(b,g)|0;Uc[k[(k[o>>2]|0)+480>>2]&63](o,l,c,d,e,738);m=k[f>>2]|0;n=g+1|0}l=l+1|0;if((l|0)>=(m|0))break;else{j=m;g=n}}}Zka(c,b,131811,127);Zka(c,b,137867,206);if((k[c+40>>2]|0)==300){r=a;return}Zka(c,b,136615,287);Zka(c,b,136636,288);r=a;return}function Tda(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function Uda(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,131838,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,74,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Vda(a,b){a=a|0;b=b|0;return 0}function Wda(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,131838,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,81,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Xda(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;a=r;r=r+208|0;c=a+136|0;d=a+188|0;e=a+192|0;f=a;g=a+176|0;h=a+164|0;j=a+152|0;l=a+148|0;cp(b,d,298);a:do switch(k[d>>2]|0){case 300:{m=b;break}case 301:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){m=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{n=0;r=a;return n|0}break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){m=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{n=0;r=a;return n|0}break}default:{o=f+56|0;q=f+4|0;k[f>>2]=27524;k[o>>2]=27544;B=0;wa(508,f+56|0,q|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;u=s;vva(o);Qb(u|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[o>>2]=27488;B=0;va(448,q|0);s=B;B=0;do if(s&1){v=Rb()|0;w=Q;x=v}else{k[q>>2]=27560;v=f+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,q|0,c|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(c);Yua(v);Ava(q);w=z;x=y;break}Yua(c);B=0;y=Ia(40,f|0,144639,5)|0;z=B;B=0;if((((!(z&1)?(B=0,z=ya(427,k[d>>2]|0)|0,A=B,B=0,!(A&1)):0)?(A=Lta(z)|0,B=0,C=Ia(40,y|0,z|0,A|0)|0,A=B,B=0,!(A&1)):0)?(B=0,A=Ia(40,C|0,146481,18)|0,C=B,B=0,!(C&1)):0)?(B=0,Xa(239,A|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,g|0,131838,83);C=B;B=0;do if(!(C&1)){B=0;eb(502,h|0,144189,13);z=B;B=0;if(z&1){z=Rb()|0;y=Q;Yua(g);D=z;E=y;break}B=0;wa(510,j|0,q|0);y=B;B=0;if(y&1){y=Rb()|0;F=y;G=Q;H=1}else{B=0;ua(163,A|0,g|0,h|0,104,j|0);y=B;B=0;if(y&1)I=1;else{B=0;eb(503,A|0,1240,229);B=0;I=0}y=Rb()|0;z=Q;Yua(j);F=y;G=z;H=I}Yua(h);Yua(g);if(H){D=F;E=G}else{J=F;K=G;k[f>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(o);Qb(J|0)}}else{z=Rb()|0;D=z;E=Q}while(0);zb(A|0);J=D;K=E;k[f>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(o);Qb(J|0)}C=Rb()|0;J=C;K=Q;k[f>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(o);Qb(J|0)}while(0);t=w;u=x;vva(o);Qb(u|0)}}while(0);u=Wo(m,142)|0;Fc[k[(k[u>>2]|0)+36>>2]&1023](u,e);if(!(i[e>>0]|0)){if((k[d>>2]|0)==300){n=0;r=a;return n|0}ap(m);if(!m){n=0;r=a;return n|0}Ec[k[(k[m>>2]|0)+4>>2]&1023](m);n=0;r=a;return n|0}k[l>>2]=0;e=Hc[k[(k[m>>2]|0)+164>>2]&511](m)|0;u=gq(m,534)|0;x=Rqa(e>>>0>536870911?-1:e<<3)|0;Uo(m,l);w=ed[k[(k[m>>2]|0)+308>>2]&511](m,2)|0;t=Hc[k[(k[w>>2]|0)+8>>2]&511](w)|0;if((t|0)<(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0)){J=w+8|0;K=u+12|0;E=t;do{Fc[k[(k[w>>2]|0)+24>>2]&1023](w,E);rd[k[(k[m>>2]|0)+260>>2]&511](m,f,k[l>>2]|0,w);nd[k[(k[m>>2]|0)+336>>2]&1023](m,x,w);p[c>>3]=+p[J>>3]*+p[f>>3];ZX(x,1,e,1,c,1,1,0,x,1,e,0,k[K>>2]|0,1)|0;E=E+1|0}while((E|0)<(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0))}E=k[l>>2]|0;if(E)Tqa(E);k[l>>2]=0;Tqa(x);Ec[k[(k[w>>2]|0)+4>>2]&1023](w);if((k[d>>2]|0)!=300?(ap(m),(m|0)!=0):0)Ec[k[(k[m>>2]|0)+4>>2]&1023](m);n=u;r=a;return n|0}function Yda(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;a=r;r=r+416|0;c=a+388|0;d=a+384|0;e=a+400|0;f=a+248|0;g=a+232|0;h=a+220|0;j=a+204|0;l=a+216|0;m=a+16|0;n=a;o=a+200|0;q=a+64|0;s=a+48|0;t=a+36|0;u=a+24|0;cp(b,d,298);a:do switch(k[d>>2]|0){case 300:{v=b;break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){v=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{w=0;r=a;return w|0}break}default:{x=f+56|0;y=f+4|0;k[f>>2]=27524;k[x>>2]=27544;B=0;wa(508,f+56|0,y|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;C=z;vva(x);Qb(C|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[x>>2]=27488;B=0;va(448,y|0);z=B;B=0;do if(z&1){D=Rb()|0;E=Q;F=D}else{k[y>>2]=27560;D=f+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,y|0,c|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(c);Yua(D);Ava(y);E=H;F=G;break}Yua(c);B=0;G=Ia(40,f|0,144639,5)|0;H=B;B=0;b:do if((((!(H&1)?(B=0,I=ya(427,k[d>>2]|0)|0,J=B,B=0,!(J&1)):0)?(J=Lta(I)|0,B=0,K=Ia(40,G|0,I|0,J|0)|0,J=B,B=0,!(J&1)):0)?(B=0,J=Ia(40,K|0,146481,18)|0,K=B,B=0,!(K&1)):0)?(B=0,Xa(239,J|0,0)|0,J=B,B=0,!(J&1)):0){J=Ab(20)|0;B=0;eb(502,g|0,131838,83);K=B;B=0;do if(!(K&1)){B=0;eb(502,h|0,144203,13);I=B;B=0;if(I&1){I=Rb()|0;L=Q;Yua(g);M=L;N=I;break}B=0;wa(510,j|0,y|0);I=B;B=0;if(I&1){I=Rb()|0;O=Q;P=I;R=1}else{B=0;ua(163,J|0,g|0,h|0,172,j|0);I=B;B=0;if(I&1)S=1;else{B=0;eb(503,J|0,1240,229);B=0;S=0}I=Rb()|0;L=Q;Yua(j);O=L;P=I;R=S}Yua(h);Yua(g);if(R){M=O;N=P}else{T=O;U=P;break b}}else{I=Rb()|0;M=Q;N=I}while(0);zb(J|0);T=M;U=N}else V=22;while(0);if((V|0)==22){G=Rb()|0;T=Q;U=G}k[f>>2]=27468;k[x>>2]=27488;k[y>>2]=27560;Yua(D);Ava(y);vva(x);W=U;X=T;Qb(W|0)}while(0);A=E;C=F;vva(x);Qb(C|0)}}while(0);C=Wo(v,142)|0;Fc[k[(k[C>>2]|0)+36>>2]&1023](C,e);if(!(i[e>>0]|0)){if((k[d>>2]|0)==300){w=0;r=a;return w|0}ap(v);if(!v){w=0;r=a;return w|0}Ec[k[(k[v>>2]|0)+4>>2]&1023](v);w=0;r=a;return w|0}k[o>>2]=0;e=Hc[k[(k[v>>2]|0)+164>>2]&511](v)|0;C=iq(v,534)|0;F=Rqa(e>>>0>536870911?-1:e<<3)|0;Uo(v,o);cp(v,l,576);switch(k[l>>2]|0){case 129:{Y=0;Z=Wo(v,127)|0;break}case 130:{Y=1;Z=Wo(v,127)|0;break}default:{l=q+56|0;E=q+4|0;k[q>>2]=27524;k[l>>2]=27544;B=0;wa(508,q+56|0,E|0);A=B;B=0;if(A&1){A=Rb()|0;_=Q;$=A;vva(l);Qb($|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[l>>2]=27488;B=0;va(448,E|0);A=B;B=0;do if(A&1){T=Rb()|0;aa=Q;ba=T}else{k[E>>2]=27560;T=q+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,E|0,c|0);U=B;B=0;if(U&1){U=Rb()|0;f=Q;Yua(c);Yua(T);Ava(E);aa=f;ba=U;break}Yua(c);B=0;U=Ia(40,q|0,143640,15)|0;f=B;B=0;c:do if(!(f&1)?(B=0,Xa(239,U|0,0)|0,N=B,B=0,!(N&1)):0){N=Ab(20)|0;B=0;eb(502,s|0,131838,83);M=B;B=0;do if(!(M&1)){B=0;eb(502,t|0,144203,13);P=B;B=0;if(P&1){P=Rb()|0;O=Q;Yua(s);ca=O;da=P;break}B=0;wa(510,u|0,E|0);P=B;B=0;if(P&1){P=Rb()|0;ea=1;fa=P;ga=Q}else{B=0;ua(163,N|0,s|0,t|0,206,u|0);P=B;B=0;if(P&1)ha=1;else{B=0;eb(503,N|0,1240,229);B=0;ha=0}P=Rb()|0;O=Q;Yua(u);ea=ha;fa=P;ga=O}Yua(t);Yua(s);if(ea){ca=ga;da=fa}else{ia=fa;ja=ga;break c}}else{O=Rb()|0;ca=Q;da=O}while(0);zb(N|0);ia=da;ja=ca}else V=52;while(0);if((V|0)==52){U=Rb()|0;ia=U;ja=Q}k[q>>2]=27468;k[l>>2]=27488;k[E>>2]=27560;Yua(T);Ava(E);vva(l);W=ia;X=ja;Qb(W|0)}while(0);_=aa;$=ba;vva(l);Qb($|0)}}$=ed[k[(k[v>>2]|0)+308>>2]&511](v,2)|0;l=Hc[k[(k[$>>2]|0)+8>>2]&511]($)|0;d:do if((l|0)<(Hc[k[(k[$>>2]|0)+12>>2]&511]($)|0)){ba=$+8|0;aa=n+(Y<<3)|0;_=C+4|0;if((e|0)>0)ka=l;else{W=l;while(1){Fc[k[(k[$>>2]|0)+24>>2]&1023]($,W);rd[k[(k[v>>2]|0)+260>>2]&511](v,m,k[o>>2]|0,$);nd[k[(k[v>>2]|0)+336>>2]&1023](v,F,$);rd[k[(k[Z>>2]|0)+60>>2]&511](Z,n,k[o>>2]|0,$);W=W+1|0;if((W|0)>=(Hc[k[(k[$>>2]|0)+12>>2]&511]($)|0))break d}}do{Fc[k[(k[$>>2]|0)+24>>2]&1023]($,ka);rd[k[(k[v>>2]|0)+260>>2]&511](v,m,k[o>>2]|0,$);nd[k[(k[v>>2]|0)+336>>2]&1023](v,F,$);rd[k[(k[Z>>2]|0)+60>>2]&511](Z,n,k[o>>2]|0,$);W=k[_>>2]|0;T=0;do{ja=W+(T<<3)|0;p[ja>>3]=+p[m>>3]*+p[ba>>3]*+p[aa>>3]*+p[F+(T<<3)>>3]+ +p[ja>>3];T=T+1|0}while((T|0)!=(e|0));ka=ka+1|0}while((ka|0)<(Hc[k[(k[$>>2]|0)+12>>2]&511]($)|0))}while(0);ka=k[o>>2]|0;if(ka)Tqa(ka);k[o>>2]=0;Tqa(F);Ec[k[(k[$>>2]|0)+4>>2]&1023]($);if((k[d>>2]|0)!=300?(ap(v),(v|0)!=0):0)Ec[k[(k[v>>2]|0)+4>>2]&1023](v);w=C;r=a;return w|0}function Zda(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,131838,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,229,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function _da(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,131838,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,232,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function $da(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+208|0;d=a+184|0;e=a+180|0;f=a+176|0;g=a+40|0;h=a+24|0;i=a+12|0;j=a;cp(c,e,576);cp(c,f,298);switch(k[f>>2]|0){case 300:{nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,k[e>>2]|0);r=a;return}case 301:{nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,k[e>>2]|0);r=a;return}case 302:{nd[k[(k[c>>2]|0)+228>>2]&1023](c,b,k[e>>2]|0);r=a;return}default:{a=g+56|0;e=g+4|0;k[g>>2]=27524;k[a>>2]=27544;B=0;wa(508,g+56|0,e|0);b=B;B=0;if(b&1){b=Rb()|0;l=Q;m=b;vva(a);Qb(m|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[a>>2]=27488;B=0;va(448,e|0);b=B;B=0;do if(b&1){c=Rb()|0;n=Q;o=c}else{k[e>>2]=27560;c=g+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[g+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,e|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(c);Ava(e);n=q;o=p;break}Yua(d);B=0;p=Ia(40,g|0,144639,5)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[f>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,h|0,131838,83);t=B;B=0;do if(!(t&1)){B=0;eb(502,i|0,137199,23);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(h);u=p;v=q;break}B=0;wa(510,j|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,h|0,i|0,249,j|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(j);w=p;x=q;y=z}Yua(i);Yua(h);if(y){u=w;v=x}else{A=w;C=x;k[g>>2]=27468;k[a>>2]=27488;k[e>>2]=27560;Yua(c);Ava(e);vva(a);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[g>>2]=27468;k[a>>2]=27488;k[e>>2]=27560;Yua(c);Ava(e);vva(a);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[g>>2]=27468;k[a>>2]=27488;k[e>>2]=27560;Yua(c);Ava(e);vva(a);Qb(C|0)}while(0);l=n;m=o;vva(a);Qb(m|0)}}}function aea(a,b){a=a|0;b=b|0;return}function bea(a){a=a|0;Sqa(a);return}function cea(a,b,c){a=a|0;b=b|0;c=c|0;return}
+function Hu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0;d=r;r=r+304|0;e=d+280|0;f=d+268|0;g=d+56|0;h=d+32|0;j=d+8|0;l=d+292|0;m=d+264|0;n=d+260|0;o=d+256|0;q=d;s=d+120|0;t=d+104|0;u=d+92|0;v=d+80|0;i[l>>0]=0;k[o>>2]=0;Gka(c,q,106352);zka(c,l,139791);if((i[l>>0]|0)!=0?(Fka(c,m,113066),(i[l>>0]|0)!=0):0)Fka(c,n,113428);w=b*3|0;x=k[c+72>>2]|0;y=k[x+(w<<2)>>2]|0;k[f>>2]=y;z=k[x+(w+1<<2)>>2]|0;A=f+4|0;k[A>>2]=z;C=k[x+(w+2<<2)>>2]|0;w=f+8|0;k[w>>2]=C;do if(Jka(c,129145)|0){x=k[a+16>>2]|0;D=Qqa(12)|0;B=0;E=Xa(246,c|0,129145)|0;F=B;B=0;if(!(F&1)?(B=0,eb(508,D|0,533,~~+p[E+(b<<3)>>3]|0),E=B,B=0,!(E&1)):0){mC(x,D)|0;break}x=Rb()|0;E=Q;Sqa(D);G=E;H=x;Qb(H|0)}while(0);if(!(i[l>>0]|0)){r=d;return}Hka(c,o,0,113102);do if((k[m>>2]|0)>0){b=a+16|0;x=g+8|0;E=g+16|0;D=h+8|0;F=h+16|0;I=j+8|0;J=j+16|0;K=k[A>>2]|0;L=K+-1|0;M=g+8|0;N=k[w>>2]|0;O=N+-1|0;P=g+16|0;R=k[f>>2]|0;S=R+-1|0;T=h+8|0;U=h+16|0;V=j+8|0;W=j+16|0;X=(k[A>>2]|0)+-1|0;Y=g+8|0;Z=(k[w>>2]|0)+-1|0;_=g+16|0;$=(k[f>>2]|0)+-1|0;aa=(k[A>>2]|0)+-1|0;ba=h+8|0;ca=(k[w>>2]|0)+-1|0;da=h+16|0;ea=k[f>>2]|0;fa=ea+-1|0;ga=k[A>>2]|0;ha=ga+-1|0;ia=j+8|0;ja=k[w>>2]|0;ka=ja+-1|0;la=j+16|0;na=ga+-1|0;oa=g+8|0;pa=ja+-1|0;qa=g+16|0;ra=(k[f>>2]|0)+-1|0;sa=(k[A>>2]|0)+-1|0;ta=h+8|0;xa=(k[w>>2]|0)+-1|0;za=h+16|0;Aa=k[f>>2]|0;Ba=Aa+-1|0;Ca=k[A>>2]|0;Da=Ca+-1|0;Ea=j+8|0;Fa=k[w>>2]|0;Ga=Fa+-1|0;Ha=j+16|0;Ja=Ca+-1|0;Ka=g+8|0;La=Fa+-1|0;Ma=g+16|0;Na=(k[f>>2]|0)+-1|0;Oa=(k[A>>2]|0)+-1|0;Pa=h+8|0;Qa=(k[w>>2]|0)+-1|0;Ra=h+16|0;Sa=k[f>>2]|0;Ua=Sa+-1|0;Va=k[A>>2]|0;Wa=Va+-1|0;Ya=j+8|0;Za=k[w>>2]|0;_a=Za+-1|0;$a=j+16|0;ab=Va+-1|0;bb=g+8|0;cb=Za+-1|0;db=g+16|0;fb=(k[f>>2]|0)+-1|0;gb=(k[A>>2]|0)+-1|0;hb=h+8|0;jb=(k[w>>2]|0)+-1|0;kb=h+16|0;lb=k[f>>2]|0;mb=lb+-1|0;nb=k[A>>2]|0;ob=nb+-1|0;pb=j+8|0;qb=k[w>>2]|0;rb=qb+-1|0;sb=j+16|0;tb=nb+-1|0;ub=g+8|0;vb=qb+-1|0;wb=g+16|0;xb=(k[f>>2]|0)+-1|0;yb=(k[A>>2]|0)+-1|0;Bb=h+8|0;Cb=(k[w>>2]|0)+-1|0;Db=h+16|0;Eb=k[f>>2]|0;Fb=Eb+-1|0;Gb=k[A>>2]|0;Hb=Gb+-1|0;Ib=j+8|0;Jb=k[w>>2]|0;Kb=Jb+-1|0;Lb=j+16|0;Mb=y;Nb=z;Ob=C;Pb=0;a:while(1){Sb=zY(k[(k[o>>2]|0)+(Pb<<2)>>2]|0,1)|0;switch(Sb|0){case 36:{if(!(Jka(c,126035)|0)){Tb=Ob;Ub=Nb;Vb=Mb}else{Wb=Mb+-1|0;Xb=(Jka(c,126035)|0)+(Wb<<3)|0;p[g>>3]=+p[Xb>>3];Xb=Nb+-1|0;Yb=(Jka(c,126035)|0)+(Xb<<3)|0;p[x>>3]=+p[Yb>>3];Yb=Ob+-1|0;Zb=(Jka(c,126035)|0)+(Yb<<3)|0;p[E>>3]=+p[Zb>>3];Zb=(ma(Wb,k[m>>2]|0)|0)+Pb|0;_b=(Jka(c,113372)|0)+(Zb<<3)|0;p[h>>3]=+p[_b>>3]/+p[q>>3];_b=(ma(Xb,k[m>>2]|0)|0)+Pb|0;Zb=(Jka(c,113372)|0)+(_b<<3)|0;p[D>>3]=+p[Zb>>3]/+p[q>>3];Zb=(ma(Yb,k[m>>2]|0)|0)+Pb|0;_b=(Jka(c,113372)|0)+(Zb<<3)|0;p[F>>3]=+p[_b>>3]/+p[q>>3];_b=(ma(Wb,k[m>>2]|0)|0)+Pb|0;Wb=(Jka(c,113400)|0)+(_b<<3)|0;p[j>>3]=+p[Wb>>3]/+p[q>>3];Wb=(ma(Xb,k[m>>2]|0)|0)+Pb|0;Xb=(Jka(c,113400)|0)+(Wb<<3)|0;p[I>>3]=+p[Xb>>3]/+p[q>>3];Xb=(ma(Yb,k[m>>2]|0)|0)+Pb|0;Yb=(Jka(c,113400)|0)+(Xb<<3)|0;p[J>>3]=+p[Yb>>3]/+p[q>>3];Yb=k[b>>2]|0;Xb=Qqa(32)|0;B=0;Ta(31,Xb|0,36,622,g|0,h|0,j|0,Pb+1|0);Wb=B;B=0;if(Wb&1){$b=Xb;ac=18;break a}mC(Yb,Xb)|0;Tb=Ob;Ub=Nb;Vb=Mb}break}case 674:{if(!(Jka(c,135923)|0)){Tb=Ob;Ub=Nb;Vb=Mb}else{Xb=(Jka(c,135923)|0)+(Mb+-1<<3)|0;p[g>>3]=+p[Xb>>3];Xb=(Jka(c,135923)|0)+(L<<3)|0;p[M>>3]=+p[Xb>>3];Xb=(Jka(c,135923)|0)+(O<<3)|0;p[P>>3]=+p[Xb>>3];Xb=(ma(S,k[m>>2]|0)|0)+Pb|0;Yb=(Jka(c,113372)|0)+(Xb<<3)|0;p[h>>3]=+p[Yb>>3]/+p[q>>3];Yb=(ma(L,k[m>>2]|0)|0)+Pb|0;Xb=(Jka(c,113372)|0)+(Yb<<3)|0;p[T>>3]=+p[Xb>>3]/+p[q>>3];Xb=(ma(O,k[m>>2]|0)|0)+Pb|0;Yb=(Jka(c,113372)|0)+(Xb<<3)|0;p[U>>3]=+p[Yb>>3]/+p[q>>3];Yb=(ma(S,k[m>>2]|0)|0)+Pb|0;Xb=(Jka(c,113400)|0)+(Yb<<3)|0;p[j>>3]=+p[Xb>>3]/+p[q>>3];Xb=(ma(L,k[m>>2]|0)|0)+Pb|0;Yb=(Jka(c,113400)|0)+(Xb<<3)|0;p[V>>3]=+p[Yb>>3]/+p[q>>3];Yb=(ma(O,k[m>>2]|0)|0)+Pb|0;Xb=(Jka(c,113400)|0)+(Yb<<3)|0;p[W>>3]=+p[Xb>>3]/+p[q>>3];Xb=k[b>>2]|0;Yb=Qqa(32)|0;B=0;Ta(31,Yb|0,674,622,g|0,h|0,j|0,Pb+1|0);Wb=B;B=0;if(Wb&1){bc=Yb;ac=22;break a}mC(Xb,Yb)|0;Tb=N;Ub=K;Vb=R}break}case 677:{if(!(Jka(c,135944)|0)){Tb=Ob;Ub=Nb;Vb=Mb}else{Yb=(Jka(c,135944)|0)+(Mb+-1<<3)|0;p[g>>3]=+p[Yb>>3];Yb=(Jka(c,135944)|0)+(X<<3)|0;p[Y>>3]=+p[Yb>>3];Yb=(Jka(c,135944)|0)+(Z<<3)|0;p[_>>3]=+p[Yb>>3];Yb=(ma($,k[m>>2]|0)|0)+Pb|0;Xb=(Jka(c,113372)|0)+(Yb<<3)|0;p[h>>3]=+p[Xb>>3]/+p[q>>3];Xb=(ma(aa,k[m>>2]|0)|0)+Pb|0;Yb=(Jka(c,113372)|0)+(Xb<<3)|0;p[ba>>3]=+p[Yb>>3]/+p[q>>3];Yb=(ma(ca,k[m>>2]|0)|0)+Pb|0;Xb=(Jka(c,113372)|0)+(Yb<<3)|0;p[da>>3]=+p[Xb>>3]/+p[q>>3];Xb=(ma(fa,k[m>>2]|0)|0)+Pb|0;Yb=(Jka(c,113400)|0)+(Xb<<3)|0;p[j>>3]=+p[Yb>>3]/+p[q>>3];Yb=(ma(ha,k[m>>2]|0)|0)+Pb|0;Xb=(Jka(c,113400)|0)+(Yb<<3)|0;p[ia>>3]=+p[Xb>>3]/+p[q>>3];Xb=(ma(ka,k[m>>2]|0)|0)+Pb|0;Yb=(Jka(c,113400)|0)+(Xb<<3)|0;p[la>>3]=+p[Yb>>3]/+p[q>>3];Yb=k[b>>2]|0;Xb=Qqa(32)|0;B=0;Ta(31,Xb|0,677,622,g|0,h|0,j|0,Pb+1|0);Wb=B;B=0;if(Wb&1){cc=Xb;ac=26;break a}mC(Yb,Xb)|0;Tb=ja;Ub=ga;Vb=ea}break}case 353:{if(!(Jka(c,137052)|0)){Tb=Ob;Ub=Nb;Vb=Mb}else{Xb=(Jka(c,137052)|0)+(Mb+-1<<3)|0;p[g>>3]=+p[Xb>>3];Xb=(Jka(c,137052)|0)+(na<<3)|0;p[oa>>3]=+p[Xb>>3];Xb=(Jka(c,137052)|0)+(pa<<3)|0;p[qa>>3]=+p[Xb>>3];Xb=(ma(ra,k[m>>2]|0)|0)+Pb|0;Yb=(Jka(c,113372)|0)+(Xb<<3)|0;p[h>>3]=+p[Yb>>3];Yb=(ma(sa,k[m>>2]|0)|0)+Pb|0;Xb=(Jka(c,113372)|0)+(Yb<<3)|0;p[ta>>3]=+p[Xb>>3];Xb=(ma(xa,k[m>>2]|0)|0)+Pb|0;Yb=(Jka(c,113372)|0)+(Xb<<3)|0;p[za>>3]=+p[Yb>>3];Yb=(ma(Ba,k[m>>2]|0)|0)+Pb|0;Xb=(Jka(c,113400)|0)+(Yb<<3)|0;p[j>>3]=+p[Xb>>3];Xb=(ma(Da,k[m>>2]|0)|0)+Pb|0;Yb=(Jka(c,113400)|0)+(Xb<<3)|0;p[Ea>>3]=+p[Yb>>3];Yb=(ma(Ga,k[m>>2]|0)|0)+Pb|0;Xb=(Jka(c,113400)|0)+(Yb<<3)|0;p[Ha>>3]=+p[Xb>>3];Xb=k[b>>2]|0;Yb=Qqa(32)|0;B=0;Ta(31,Yb|0,353,622,g|0,h|0,j|0,Pb+1|0);Wb=B;B=0;if(Wb&1){dc=Yb;ac=30;break a}mC(Xb,Yb)|0;Tb=Fa;Ub=Ca;Vb=Aa}break}case 105:{if(!(Jka(c,135172)|0)){Tb=Ob;Ub=Nb;Vb=Mb}else{Yb=(Jka(c,135172)|0)+(Mb+-1<<3)|0;p[g>>3]=+p[Yb>>3];Yb=(Jka(c,135172)|0)+(Ja<<3)|0;p[Ka>>3]=+p[Yb>>3];Yb=(Jka(c,135172)|0)+(La<<3)|0;p[Ma>>3]=+p[Yb>>3];Yb=(ma(Na,k[m>>2]|0)|0)+Pb|0;Xb=(Jka(c,113372)|0)+(Yb<<3)|0;p[h>>3]=+p[Xb>>3];Xb=(ma(Oa,k[m>>2]|0)|0)+Pb|0;Yb=(Jka(c,113372)|0)+(Xb<<3)|0;p[Pa>>3]=+p[Yb>>3];Yb=(ma(Qa,k[m>>2]|0)|0)+Pb|0;Xb=(Jka(c,113372)|0)+(Yb<<3)|0;p[Ra>>3]=+p[Xb>>3];Xb=(ma(Ua,k[m>>2]|0)|0)+Pb|0;Yb=(Jka(c,113400)|0)+(Xb<<3)|0;p[j>>3]=+p[Yb>>3];Yb=(ma(Wa,k[m>>2]|0)|0)+Pb|0;Xb=(Jka(c,113400)|0)+(Yb<<3)|0;p[Ya>>3]=+p[Xb>>3];Xb=(ma(_a,k[m>>2]|0)|0)+Pb|0;Yb=(Jka(c,113400)|0)+(Xb<<3)|0;p[$a>>3]=+p[Yb>>3];Yb=k[b>>2]|0;Xb=Qqa(32)|0;B=0;Ta(31,Xb|0,105,622,g|0,h|0,j|0,Pb+1|0);Wb=B;B=0;if(Wb&1){ec=Xb;ac=34;break a}mC(Yb,Xb)|0;Tb=Za;Ub=Va;Vb=Sa}break}case 215:{if(!(Jka(c,134991)|0)){Tb=Ob;Ub=Nb;Vb=Mb}else{Xb=(Jka(c,134991)|0)+(Mb+-1<<3)|0;p[g>>3]=+p[Xb>>3];Xb=(Jka(c,134991)|0)+(ab<<3)|0;p[bb>>3]=+p[Xb>>3];Xb=(Jka(c,134991)|0)+(cb<<3)|0;p[db>>3]=+p[Xb>>3];Xb=(ma(fb,k[m>>2]|0)|0)+Pb|0;Yb=(Jka(c,113372)|0)+(Xb<<3)|0;p[h>>3]=+p[Yb>>3];Yb=(ma(gb,k[m>>2]|0)|0)+Pb|0;Xb=(Jka(c,113372)|0)+(Yb<<3)|0;p[hb>>3]=+p[Xb>>3];Xb=(ma(jb,k[m>>2]|0)|0)+Pb|0;Yb=(Jka(c,113372)|0)+(Xb<<3)|0;p[kb>>3]=+p[Yb>>3];Yb=(ma(mb,k[m>>2]|0)|0)+Pb|0;Xb=(Jka(c,113400)|0)+(Yb<<3)|0;p[j>>3]=+p[Xb>>3];Xb=(ma(ob,k[m>>2]|0)|0)+Pb|0;Yb=(Jka(c,113400)|0)+(Xb<<3)|0;p[pb>>3]=+p[Yb>>3];Yb=(ma(rb,k[m>>2]|0)|0)+Pb|0;Xb=(Jka(c,113400)|0)+(Yb<<3)|0;p[sb>>3]=+p[Xb>>3];Xb=k[b>>2]|0;Yb=Qqa(32)|0;B=0;Ta(31,Yb|0,215,622,g|0,h|0,j|0,Pb+1|0);Wb=B;B=0;if(Wb&1){fc=Yb;ac=38;break a}mC(Xb,Yb)|0;Tb=qb;Ub=nb;Vb=lb}break}case 227:{if(!(Jka(c,126277)|0)){Tb=Ob;Ub=Nb;Vb=Mb}else{Yb=(Jka(c,126277)|0)+(Mb+-1<<3)|0;p[g>>3]=+p[Yb>>3];Yb=(Jka(c,126277)|0)+(tb<<3)|0;p[ub>>3]=+p[Yb>>3];Yb=(Jka(c,126277)|0)+(vb<<3)|0;p[wb>>3]=+p[Yb>>3];Yb=(ma(xb,k[m>>2]|0)|0)+Pb|0;Xb=(Jka(c,113372)|0)+(Yb<<3)|0;p[h>>3]=+p[Xb>>3];Xb=(ma(yb,k[m>>2]|0)|0)+Pb|0;Yb=(Jka(c,113372)|0)+(Xb<<3)|0;p[Bb>>3]=+p[Yb>>3];Yb=(ma(Cb,k[m>>2]|0)|0)+Pb|0;Xb=(Jka(c,113372)|0)+(Yb<<3)|0;p[Db>>3]=+p[Xb>>3];Xb=(ma(Fb,k[m>>2]|0)|0)+Pb|0;Yb=(Jka(c,113400)|0)+(Xb<<3)|0;p[j>>3]=+p[Yb>>3];Yb=(ma(Hb,k[m>>2]|0)|0)+Pb|0;Xb=(Jka(c,113400)|0)+(Yb<<3)|0;p[Ib>>3]=+p[Xb>>3];Xb=(ma(Kb,k[m>>2]|0)|0)+Pb|0;Yb=(Jka(c,113400)|0)+(Xb<<3)|0;p[Lb>>3]=+p[Yb>>3];Yb=k[b>>2]|0;Xb=Qqa(32)|0;B=0;Ta(31,Xb|0,227,622,g|0,h|0,j|0,Pb+1|0);Wb=B;B=0;if(Wb&1){gc=Xb;ac=42;break a}mC(Yb,Xb)|0;Tb=Jb;Ub=Gb;Vb=Eb}break}default:{hc=Sb;ac=43;break a}}Pb=Pb+1|0;Sb=k[m>>2]|0;if((Pb|0)>=(Sb|0)){ic=Tb;jc=Ub;kc=Vb;lc=Sb;ac=13;break}else{Mb=Vb;Nb=Ub;Ob=Tb}}if((ac|0)==13){Ob=k[o>>2]|0;if((lc|0)>0){mc=Ob;nc=lc;oc=0}else{pc=Ob;qc=kc;rc=jc;sc=ic;break}while(1){Ob=mc+(oc<<2)|0;Nb=k[Ob>>2]|0;if(!Nb)tc=nc;else{Tqa(Nb);tc=k[m>>2]|0}k[Ob>>2]=0;oc=oc+1|0;Ob=k[o>>2]|0;if((oc|0)>=(tc|0)){pc=Ob;qc=kc;rc=jc;sc=ic;break}else{mc=Ob;nc=tc}}}else if((ac|0)==18){Ob=Rb()|0;Nb=Q;Sqa($b);G=Nb;H=Ob;Qb(H|0)}else if((ac|0)==22){Ob=Rb()|0;Nb=Q;Sqa(bc);G=Nb;H=Ob;Qb(H|0)}else if((ac|0)==26){Ob=Rb()|0;Nb=Q;Sqa(cc);G=Nb;H=Ob;Qb(H|0)}else if((ac|0)==30){Ob=Rb()|0;Nb=Q;Sqa(dc);G=Nb;H=Ob;Qb(H|0)}else if((ac|0)==34){Ob=Rb()|0;Nb=Q;Sqa(ec);G=Nb;H=Ob;Qb(H|0)}else if((ac|0)==38){Ob=Rb()|0;Nb=Q;Sqa(fc);G=Nb;H=Ob;Qb(H|0)}else if((ac|0)==42){Ob=Rb()|0;Nb=Q;Sqa(gc);G=Nb;H=Ob;Qb(H|0)}else if((ac|0)==43){Ob=s+56|0;Nb=s+4|0;k[s>>2]=27524;k[Ob>>2]=27544;B=0;wa(508,s+56|0,Nb|0);Mb=B;B=0;if(Mb&1){Mb=Rb()|0;uc=Q;vc=Mb;vva(Ob);Qb(vc|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[Ob>>2]=27488;B=0;va(448,Nb|0);Mb=B;B=0;do if(Mb&1){Pb=Rb()|0;wc=Q;xc=Pb}else{k[Nb>>2]=27560;Pb=s+36|0;k[Pb>>2]=0;k[Pb+4>>2]=0;k[Pb+8>>2]=0;k[Pb+12>>2]=0;k[s+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,Nb|0,e|0);Eb=B;B=0;if(Eb&1){Eb=Rb()|0;Gb=Q;Yua(e);Yua(Pb);Ava(Nb);wc=Gb;xc=Eb;break}Yua(e);B=0;Eb=Ia(40,s|0,125582,8)|0;Gb=B;B=0;b:do if((((!(Gb&1)?(B=0,Jb=ya(427,hc|0)|0,b=B,B=0,!(b&1)):0)?(b=Lta(Jb)|0,B=0,Lb=Ia(40,Eb|0,Jb|0,b|0)|0,b=B,B=0,!(b&1)):0)?(B=0,b=Ia(40,Lb|0,127493,20)|0,Lb=B,B=0,!(Lb&1)):0)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,t|0,71825,72);Lb=B;B=0;do if(!(Lb&1)){B=0;eb(502,u|0,144327,22);Jb=B;B=0;if(Jb&1){Jb=Rb()|0;Kb=Q;Yua(t);yc=Kb;zc=Jb;break}B=0;wa(510,v|0,Nb|0);Jb=B;B=0;if(Jb&1){Jb=Rb()|0;Ac=Q;Bc=Jb;Cc=1}else{B=0;ua(163,b|0,t|0,u|0,1908,v|0);Jb=B;B=0;if(Jb&1)Dc=1;else{B=0;eb(503,b|0,1240,229);B=0;Dc=0}Jb=Rb()|0;Kb=Q;Yua(v);Ac=Kb;Bc=Jb;Cc=Dc}Yua(u);Yua(t);if(Cc){yc=Ac;zc=Bc}else{Ec=Ac;Fc=Bc;break b}}else{Jb=Rb()|0;yc=Q;zc=Jb}while(0);zb(b|0);Ec=yc;Fc=zc}else ac=61;while(0);if((ac|0)==61){Eb=Rb()|0;Ec=Q;Fc=Eb}k[s>>2]=27468;k[Ob>>2]=27488;k[Nb>>2]=27560;Yua(Pb);Ava(Nb);vva(Ob);G=Ec;H=Fc;Qb(H|0)}while(0);uc=wc;vc=xc;vva(Ob);Qb(vc|0)}}else{pc=k[o>>2]|0;qc=y;rc=z;sc=C}while(0);if(pc)Tqa(pc);k[o>>2]=0;if(!(i[l>>0]|0)){r=d;return}if(!(Jka(c,113331)|0)){r=d;return}l=Qqa(20)|0;B=0;wa(516,l|0,179);o=B;B=0;if(o&1){o=Rb()|0;pc=Q;Sqa(l);G=pc;H=o;Qb(H|0)}o=k[n>>2]|0;c:do if((o|0)>0){pc=qc+-1|0;C=rc+-1|0;z=g+8|0;y=sc+-1|0;vc=g+16|0;xc=o;wc=0;while(1){uc=(ma(pc,xc)|0)+wc|0;Fc=(Jka(c,113331)|0)+(uc<<3)|0;p[g>>3]=+p[Fc>>3];Fc=(ma(C,k[n>>2]|0)|0)+wc|0;uc=(Jka(c,113331)|0)+(Fc<<3)|0;p[z>>3]=+p[uc>>3];uc=(ma(y,k[n>>2]|0)|0)+wc|0;Fc=(Jka(c,113331)|0)+(uc<<3)|0;p[vc>>3]=+p[Fc>>3];Fc=Qqa(16)|0;B=0;ib(284,Fc|0,179,g|0,738);uc=B;B=0;if(uc&1){Gc=Fc;break}uc=(Jka(c,113303)|0)+(wc<<3)|0;XH(l,Fc,~~+p[uc>>3]);wc=wc+1|0;xc=k[n>>2]|0;if((wc|0)>=(xc|0))break c}xc=Rb()|0;wc=Q;Sqa(Gc);G=wc;H=xc;Qb(H|0)}while(0);mC(k[a+16>>2]|0,l)|0;r=d;return}function Iu(a,b,c){a=a|0;b=b|0;c=c|0;Hu(a+-4|0,b,c);return}function Ju(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;d=r;r=r+368|0;e=d+356|0;f=d+352|0;g=d+216|0;h=d+200|0;i=d+48|0;j=d+36|0;l=d+64|0;m=d+24|0;n=d+12|0;o=d;k[f>>2]=0;q=qw(a,k[a+44>>2]|0)|0;rp(a,f,534,943);s=Rqa(q>>>0>536870911?-1:q<<3)|0;a:do if((q|0)>0){u=k[f>>2]|0;v=0;while(1){w=+p[b+(k[u+(v<<2)>>2]<<3)>>3];p[s+(v<<3)>>3]=w;x=+$(+w);p[t>>3]=x;y=k[t>>2]|0;z=k[t+4>>2]|0;if(z>>>0>2146435072|(z|0)==2146435072&y>>>0>0){A=6;break}v=v+1|0;if((y|0)==0&(z|0)==2146435072){A=30;break}if((v|0)>=(q|0))break a}if((A|0)==6){v=g+56|0;u=g+4|0;k[g>>2]=27524;k[v>>2]=27544;B=0;wa(508,g+56|0,u|0);z=B;B=0;if(z&1){z=Rb()|0;C=Q;D=z;vva(v);Qb(D|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[v>>2]=27488;B=0;va(448,u|0);z=B;B=0;do if(z&1){y=Rb()|0;E=Q;F=y}else{k[u>>2]=27560;y=g+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,u|0,e|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(e);Yua(y);Ava(u);E=H;F=G;break}Yua(e);B=0;G=Ia(40,g|0,135564,28)|0;H=B;B=0;b:do if(!(H&1)?(B=0,Xa(239,G|0,0)|0,I=B,B=0,!(I&1)):0){I=Ab(20)|0;B=0;eb(502,h|0,71825,72);J=B;B=0;do if(!(J&1)){B=0;eb(502,i|0,74717,29);K=B;B=0;if(K&1){K=Rb()|0;L=Q;Yua(h);M=K;N=L;break}B=0;wa(510,j|0,u|0);L=B;B=0;if(L&1){L=Rb()|0;O=Q;P=L;R=1}else{B=0;ua(163,I|0,h|0,i|0,1945,j|0);L=B;B=0;if(L&1)S=1;else{B=0;eb(503,I|0,1240,229);B=0;S=0}L=Rb()|0;K=Q;Yua(j);O=K;P=L;R=S}Yua(i);Yua(h);if(R){M=P;N=O}else{T=P;U=O;break b}}else{L=Rb()|0;M=L;N=Q}while(0);zb(I|0);T=M;U=N}else A=21;while(0);if((A|0)==21){G=Rb()|0;T=G;U=Q}k[g>>2]=27468;k[v>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(v);V=U;W=T;Qb(W|0)}while(0);C=E;D=F;vva(v);Qb(D|0)}else if((A|0)==30){u=l+56|0;z=l+4|0;k[l>>2]=27524;k[u>>2]=27544;B=0;wa(508,l+56|0,z|0);G=B;B=0;if(G&1){G=Rb()|0;X=Q;Y=G;vva(u);Qb(Y|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[u>>2]=27488;B=0;va(448,z|0);G=B;B=0;do if(G&1){H=Rb()|0;Z=Q;_=H}else{k[z>>2]=27560;H=l+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[l+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,z|0,e|0);J=B;B=0;if(J&1){J=Rb()|0;L=Q;Yua(e);Yua(H);Ava(z);Z=L;_=J;break}Yua(e);B=0;J=Ia(40,l|0,135593,28)|0;L=B;B=0;c:do if(!(L&1)?(B=0,Xa(239,J|0,0)|0,K=B,B=0,!(K&1)):0){K=Ab(20)|0;B=0;eb(502,m|0,71825,72);aa=B;B=0;do if(!(aa&1)){B=0;eb(502,n|0,74717,29);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;Yua(m);da=ba;ea=ca;break}B=0;wa(510,o|0,z|0);ca=B;B=0;if(ca&1){ca=Rb()|0;fa=1;ga=Q;ha=ca}else{B=0;ua(163,K|0,m|0,n|0,1946,o|0);ca=B;B=0;if(ca&1)ia=1;else{B=0;eb(503,K|0,1240,229);B=0;ia=0}ca=Rb()|0;ba=Q;Yua(o);fa=ia;ga=ba;ha=ca}Yua(n);Yua(m);if(fa){da=ha;ea=ga}else{ja=ga;ka=ha;break c}}else{ca=Rb()|0;da=ca;ea=Q}while(0);zb(K|0);ja=ea;ka=da}else A=45;while(0);if((A|0)==45){J=Rb()|0;ja=Q;ka=J}k[l>>2]=27468;k[u>>2]=27488;k[z>>2]=27560;Yua(H);Ava(z);vva(u);V=ja;W=ka;Qb(W|0)}while(0);X=Z;Y=_;vva(u);Qb(Y|0)}}while(0);Y=k[a+16>>2]|0;a=Qqa(16)|0;B=0;ib(284,a|0,c|0,s|0,738);c=B;B=0;if(c&1){c=Rb()|0;_=Q;Sqa(a);V=_;W=c;Qb(W|0)}mC(Y,a)|0;Tqa(s);s=k[f>>2]|0;if(!s){r=d;return}Tqa(s);r=d;return}function Ku(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0;e=r;r=r+896|0;f=e+872|0;g=e+844|0;h=e+696|0;i=e+860|0;j=e+848|0;l=e+832|0;m=e+544|0;n=e+680|0;o=e+396|0;q=e+384|0;s=e+408|0;u=e+96|0;v=e+84|0;w=e+72|0;x=e+248|0;y=e+60|0;z=e+48|0;A=e+36|0;C=e+112|0;D=e+24|0;E=e+12|0;F=e;if(!(Tp(a,c)|0)){r=e;return}k[g>>2]=0;a:do switch(d|0){case 628:{G=Rqa(24)|0;H=a+24|0;I=b+((Co(k[k[H>>2]>>2]|0)|0)<<3)|0;p[G>>3]=+p[I>>3];I=b+((Co(k[(k[H>>2]|0)+4>>2]|0)|0)<<3)|0;p[G+8>>3]=+p[I>>3];I=b+((Co(k[(k[H>>2]|0)+8>>2]|0)|0)<<3)|0;p[G+16>>3]=+p[I>>3];I=k[a+16>>2]|0;H=Qqa(16)|0;B=0;ib(284,H|0,c|0,G|0,738);J=B;B=0;if(!(J&1)){mC(I,H)|0;K=G;break a}G=Rb()|0;I=Q;Sqa(H);L=I;M=G;Qb(M|0);break}case 629:{G=Rqa(24)|0;I=a+24|0;H=b+((Bo(k[k[I>>2]>>2]|0)|0)<<3)|0;p[G>>3]=+p[H>>3];H=b+((Bo(k[(k[I>>2]|0)+4>>2]|0)|0)<<3)|0;p[G+8>>3]=+p[H>>3];H=b+((Bo(k[(k[I>>2]|0)+8>>2]|0)|0)<<3)|0;p[G+16>>3]=+p[H>>3];H=k[a+16>>2]|0;I=Qqa(16)|0;B=0;ib(284,I|0,c|0,G|0,738);J=B;B=0;if(!(J&1)){mC(H,I)|0;K=G;break a}G=Rb()|0;H=Q;Sqa(I);L=H;M=G;Qb(M|0);break}case 549:{G=a+44|0;H=qw(a,k[G>>2]|0)|0;I=Rqa(H>>>0>536870911?-1:H<<3)|0;rp(a,g,534,943);b:do if((H|0)>0){J=k[g>>2]|0;N=0;while(1){O=+p[b+(k[J+(N<<2)>>2]<<3)>>3];p[I+(N<<3)>>3]=O;P=+$(+O);p[t>>3]=P;R=k[t>>2]|0;S=k[t+4>>2]|0;if(S>>>0>2146435072|(S|0)==2146435072&R>>>0>0){T=14;break}N=N+1|0;if((R|0)==0&(S|0)==2146435072){T=38;break}if((N|0)>=(H|0))break b}if((T|0)==14){N=h+56|0;J=h+4|0;k[h>>2]=27524;k[N>>2]=27544;B=0;wa(508,h+56|0,J|0);S=B;B=0;if(S&1){S=Rb()|0;U=Q;V=S;vva(N);Qb(V|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[N>>2]=27488;B=0;va(448,J|0);S=B;B=0;do if(S&1){R=Rb()|0;W=Q;X=R}else{k[J>>2]=27560;R=h+36|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,J|0,f|0);Y=B;B=0;if(Y&1){Y=Rb()|0;Z=Q;Yua(f);Yua(R);Ava(J);W=Z;X=Y;break}Yua(f);B=0;Y=Ia(40,h|0,72427,19)|0;Z=B;B=0;c:do if(!(Z&1)?(B=0,Xa(239,Y|0,0)|0,_=B,B=0,!(_&1)):0){_=Ab(20)|0;B=0;eb(502,i|0,71825,72);aa=B;B=0;do if(!(aa&1)){B=0;eb(502,j|0,74786,21);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;Yua(i);da=ca;ea=ba;break}B=0;wa(510,l|0,J|0);ba=B;B=0;if(ba&1){ba=Rb()|0;fa=Q;ga=ba;ha=1}else{B=0;ua(163,_|0,i|0,j|0,1993,l|0);ba=B;B=0;if(ba&1)ia=1;else{B=0;eb(503,_|0,1240,229);B=0;ia=0}ba=Rb()|0;ca=Q;Yua(l);fa=ca;ga=ba;ha=ia}Yua(j);Yua(i);if(ha){da=fa;ea=ga}else{ja=fa;ka=ga;break c}}else{ba=Rb()|0;da=Q;ea=ba}while(0);zb(_|0);ja=da;ka=ea}else T=29;while(0);if((T|0)==29){Y=Rb()|0;ja=Q;ka=Y}k[h>>2]=27468;k[N>>2]=27488;k[J>>2]=27560;Yua(R);Ava(J);vva(N);L=ja;M=ka;Qb(M|0)}while(0);U=W;V=X;vva(N);Qb(V|0)}else if((T|0)==38){J=m+56|0;S=m+4|0;k[m>>2]=27524;k[J>>2]=27544;B=0;wa(508,m+56|0,S|0);Y=B;B=0;if(Y&1){Y=Rb()|0;la=Q;ma=Y;vva(J);Qb(ma|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[J>>2]=27488;B=0;va(448,S|0);Y=B;B=0;do if(Y&1){Z=Rb()|0;na=Q;oa=Z}else{k[S>>2]=27560;Z=m+36|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[m+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,S|0,f|0);aa=B;B=0;if(aa&1){aa=Rb()|0;ba=Q;Yua(f);Yua(Z);Ava(S);na=ba;oa=aa;break}Yua(f);B=0;aa=Ia(40,m|0,72447,19)|0;ba=B;B=0;d:do if(!(ba&1)?(B=0,Xa(239,aa|0,0)|0,ca=B,B=0,!(ca&1)):0){ca=Ab(20)|0;B=0;eb(502,n|0,71825,72);pa=B;B=0;do if(!(pa&1)){B=0;eb(502,o|0,74786,21);qa=B;B=0;if(qa&1){qa=Rb()|0;ra=Q;Yua(n);sa=ra;ta=qa;break}B=0;wa(510,q|0,S|0);qa=B;B=0;if(qa&1){qa=Rb()|0;xa=1;za=Q;Aa=qa}else{B=0;ua(163,ca|0,n|0,o|0,1994,q|0);qa=B;B=0;if(qa&1)Ba=1;else{B=0;eb(503,ca|0,1240,229);B=0;Ba=0}qa=Rb()|0;ra=Q;Yua(q);xa=Ba;za=ra;Aa=qa}Yua(o);Yua(n);if(xa){sa=za;ta=Aa}else{Ca=za;Da=Aa;break d}}else{qa=Rb()|0;sa=Q;ta=qa}while(0);zb(ca|0);Ca=sa;Da=ta}else T=53;while(0);if((T|0)==53){aa=Rb()|0;Ca=Q;Da=aa}k[m>>2]=27468;k[J>>2]=27488;k[S>>2]=27560;Yua(Z);Ava(S);vva(J);L=Ca;M=Da;Qb(M|0)}while(0);la=na;ma=oa;vva(J);Qb(ma|0)}}while(0);H=k[a+16>>2]|0;S=Qqa(16)|0;B=0;ib(284,S|0,c|0,I|0,k[G>>2]|0);Y=B;B=0;if(!(Y&1)){mC(H,S)|0;K=I;break a}H=Rb()|0;Y=Q;Sqa(S);L=Y;M=H;Qb(M|0);break}case 608:{H=a+44|0;Y=qw(a,k[H>>2]|0)|0;S=Rqa(Y>>>0>536870911?-1:Y<<3)|0;e:do if((Y|0)>0){N=a+20|0;aa=0;while(1){ba=b+((Qn(k[(k[N>>2]|0)+(aa<<2)>>2]|0)|0)<<3)|0;P=+p[ba>>3];p[S+(aa<<3)>>3]=P;O=+$(+P);p[t>>3]=O;ba=k[t>>2]|0;R=k[t+4>>2]|0;if(R>>>0>2146435072|(R|0)==2146435072&ba>>>0>0){T=68;break}aa=aa+1|0;if((ba|0)==0&(R|0)==2146435072){T=92;break}if((aa|0)>=(Y|0))break e}if((T|0)==68){aa=s+56|0;N=s+4|0;k[s>>2]=27524;k[aa>>2]=27544;B=0;wa(508,s+56|0,N|0);J=B;B=0;if(J&1){J=Rb()|0;Ea=Q;Fa=J;vva(aa);Qb(Fa|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[aa>>2]=27488;B=0;va(448,N|0);J=B;B=0;do if(J&1){R=Rb()|0;Ga=Q;Ha=R}else{k[N>>2]=27560;R=s+36|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[s+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,N|0,f|0);ba=B;B=0;if(ba&1){ba=Rb()|0;pa=Q;Yua(f);Yua(R);Ava(N);Ga=pa;Ha=ba;break}Yua(f);B=0;ba=Ia(40,s|0,72427,19)|0;pa=B;B=0;f:do if(!(pa&1)?(B=0,Xa(239,ba|0,0)|0,_=B,B=0,!(_&1)):0){_=Ab(20)|0;B=0;eb(502,u|0,71825,72);qa=B;B=0;do if(!(qa&1)){B=0;eb(502,v|0,74786,21);ra=B;B=0;if(ra&1){ra=Rb()|0;Ja=Q;Yua(u);Ka=Ja;La=ra;break}B=0;wa(510,w|0,N|0);ra=B;B=0;if(ra&1){ra=Rb()|0;Ma=1;Na=Q;Oa=ra}else{B=0;ua(163,_|0,u|0,v|0,2006,w|0);ra=B;B=0;if(ra&1)Pa=1;else{B=0;eb(503,_|0,1240,229);B=0;Pa=0}ra=Rb()|0;Ja=Q;Yua(w);Ma=Pa;Na=Ja;Oa=ra}Yua(v);Yua(u);if(Ma){Ka=Na;La=Oa}else{Qa=Na;Ra=Oa;break f}}else{ra=Rb()|0;Ka=Q;La=ra}while(0);zb(_|0);Qa=Ka;Ra=La}else T=83;while(0);if((T|0)==83){ba=Rb()|0;Qa=Q;Ra=ba}k[s>>2]=27468;k[aa>>2]=27488;k[N>>2]=27560;Yua(R);Ava(N);vva(aa);L=Qa;M=Ra;Qb(M|0)}while(0);Ea=Ga;Fa=Ha;vva(aa);Qb(Fa|0)}else if((T|0)==92){N=x+56|0;J=x+4|0;k[x>>2]=27524;k[N>>2]=27544;B=0;wa(508,x+56|0,J|0);ba=B;B=0;if(ba&1){ba=Rb()|0;Sa=Q;Ta=ba;vva(N);Qb(Ta|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[N>>2]=27488;B=0;va(448,J|0);ba=B;B=0;do if(ba&1){pa=Rb()|0;Ua=Q;Va=pa}else{k[J>>2]=27560;pa=x+36|0;k[pa>>2]=0;k[pa+4>>2]=0;k[pa+8>>2]=0;k[pa+12>>2]=0;k[x+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,J|0,f|0);Z=B;B=0;if(Z&1){Z=Rb()|0;qa=Q;Yua(f);Yua(pa);Ava(J);Ua=qa;Va=Z;break}Yua(f);B=0;Z=Ia(40,x|0,72447,19)|0;qa=B;B=0;g:do if(!(qa&1)?(B=0,Xa(239,Z|0,0)|0,ca=B,B=0,!(ca&1)):0){ca=Ab(20)|0;B=0;eb(502,y|0,71825,72);ra=B;B=0;do if(!(ra&1)){B=0;eb(502,z|0,74786,21);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;Wa=Q;Yua(y);Ya=Wa;Za=Ja;break}B=0;wa(510,A|0,J|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;_a=1;$a=Q;ab=Ja}else{B=0;ua(163,ca|0,y|0,z|0,2007,A|0);Ja=B;B=0;if(Ja&1)bb=1;else{B=0;eb(503,ca|0,1240,229);B=0;bb=0}Ja=Rb()|0;Wa=Q;Yua(A);_a=bb;$a=Wa;ab=Ja}Yua(z);Yua(y);if(_a){Ya=$a;Za=ab}else{cb=$a;db=ab;break g}}else{Ja=Rb()|0;Ya=Q;Za=Ja}while(0);zb(ca|0);cb=Ya;db=Za}else T=107;while(0);if((T|0)==107){Z=Rb()|0;cb=Q;db=Z}k[x>>2]=27468;k[N>>2]=27488;k[J>>2]=27560;Yua(pa);Ava(J);vva(N);L=cb;M=db;Qb(M|0)}while(0);Sa=Ua;Ta=Va;vva(N);Qb(Ta|0)}}while(0);Y=k[a+16>>2]|0;I=Qqa(16)|0;B=0;ib(284,I|0,c|0,S|0,k[H>>2]|0);G=B;B=0;if(!(G&1)){mC(Y,I)|0;K=S;break a}Y=Rb()|0;G=Q;Sqa(I);L=G;M=Y;Qb(M|0);break}default:{Y=C+56|0;G=C+4|0;k[C>>2]=27524;k[Y>>2]=27544;B=0;wa(508,C+56|0,G|0);I=B;B=0;if(I&1){I=Rb()|0;fb=Q;gb=I;vva(Y);Qb(gb|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[Y>>2]=27488;B=0;va(448,G|0);I=B;B=0;do if(I&1){J=Rb()|0;hb=Q;jb=J}else{k[G>>2]=27560;J=C+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[C+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,G|0,f|0);ba=B;B=0;if(ba&1){ba=Rb()|0;aa=Q;Yua(f);Yua(J);Ava(G);hb=aa;jb=ba;break}Yua(f);B=0;ba=Ia(40,C|0,74808,5)|0;aa=B;B=0;h:do if((((((!(aa&1)?(B=0,Z=Xa(242,ba|0,d|0)|0,qa=B,B=0,!(qa&1)):0)?(B=0,qa=Ia(40,Z|0,144166,2)|0,Z=B,B=0,!(Z&1)):0)?(B=0,Z=ya(427,d|0)|0,R=B,B=0,!(R&1)):0)?(R=Lta(Z)|0,B=0,ra=Ia(40,qa|0,Z|0,R|0)|0,R=B,B=0,!(R&1)):0)?(B=0,R=Ia(40,ra|0,74814,21)|0,ra=B,B=0,!(ra&1)):0)?(B=0,Xa(239,R|0,0)|0,R=B,B=0,!(R&1)):0){R=Ab(20)|0;B=0;eb(502,D|0,71825,72);ra=B;B=0;do if(!(ra&1)){B=0;eb(502,E|0,74786,21);Z=B;B=0;if(Z&1){Z=Rb()|0;qa=Q;Yua(D);kb=qa;lb=Z;break}B=0;wa(510,F|0,G|0);Z=B;B=0;if(Z&1){Z=Rb()|0;mb=1;nb=Q;ob=Z}else{B=0;ua(163,R|0,D|0,E|0,2013,F|0);Z=B;B=0;if(Z&1)pb=1;else{B=0;eb(503,R|0,1240,229);B=0;pb=0}Z=Rb()|0;qa=Q;Yua(F);mb=pb;nb=qa;ob=Z}Yua(E);Yua(D);if(mb){kb=nb;lb=ob}else{qb=nb;rb=ob;break h}}else{Z=Rb()|0;kb=Q;lb=Z}while(0);zb(R|0);qb=kb;rb=lb}else T=137;while(0);if((T|0)==137){ba=Rb()|0;qb=Q;rb=ba}k[C>>2]=27468;k[Y>>2]=27488;k[G>>2]=27560;Yua(J);Ava(G);vva(Y);L=qb;M=rb;Qb(M|0)}while(0);fb=hb;gb=jb;vva(Y);Qb(gb|0)}}while(0);gb=k[g>>2]|0;if(gb)Tqa(gb);k[g>>2]=0;Tqa(K);r=e;return}function Lu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ku(a+-4|0,b,c,d);return}function Mu(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0.0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;b=r;r=r+224|0;c=b+200|0;d=b;e=b+64|0;f=b+48|0;g=b+36|0;h=b+24|0;xp(a,d,289);i=+p[d>>3]+ +p[d+8>>3]+ +p[d+16>>3];if(!(i==3.0)){r=b;return i>1.0|0}b=e+56|0;d=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,d|0);a=B;B=0;if(a&1){a=Rb()|0;j=Q;l=a;vva(b);Qb(l|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,d|0);a=B;B=0;do if(a&1){m=Rb()|0;n=Q;o=m}else{k[d>>2]=27560;m=e+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,d|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(c);Yua(m);Ava(d);n=s;o=q;break}Yua(c);B=0;q=Ia(40,e|0,72467,42)|0;s=B;B=0;if(!(s&1)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,f|0,71825,72);s=B;B=0;do if(!(s&1)){B=0;eb(502,g|0,75251,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(f);v=u;w=t;break}B=0;wa(510,h|0,d|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,f|0,g|0,2033,h|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(h);x=u;y=t;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[b>>2]=27488;k[d>>2]=27560;Yua(m);Ava(d);vva(b);Qb(D|0)}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w;k[e>>2]=27468;k[b>>2]=27488;k[d>>2]=27560;Yua(m);Ava(d);vva(b);Qb(D|0)}s=Rb()|0;C=Q;D=s;k[e>>2]=27468;k[b>>2]=27488;k[d>>2]=27560;Yua(m);Ava(d);vva(b);Qb(D|0)}while(0);j=n;l=o;vva(b);Qb(l|0);return 0}function Nu(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+32|0;c=b;xp(a,c,206);if(!($p(a)|0)){d=0;r=b;return d|0}d=((+p[c+16>>3]<0.0&1)+((+p[c+8>>3]<0.0&1)+(+p[c>>3]<0.0&1))|0)==1;r=b;return d|0}function Ou(a,b){a=a|0;b=b|0;var c=0,d=0;c=a+24|0;a=b+((Co(k[k[c>>2]>>2]|0)|0)<<3)|0;if(+p[a>>3]<0.0){d=1;return d|0}a=b+((Co(k[(k[c>>2]|0)+4>>2]|0)|0)<<3)|0;if(+p[a>>3]<0.0){d=1;return d|0}a=b+((Co(k[(k[c>>2]|0)+8>>2]|0)|0)<<3)|0;if(+p[a>>3]<0.0){d=1;return d|0}d=0;return d|0}function Pu(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+180|0;d=b+176|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;cO(k[a+36>>2]|0,d,298);switch(k[d>>2]|0){case 301:{i=zu(a)|0;r=b;return i|0}case 300:{i=1;r=b;return i|0}default:{i=e+56|0;b=e+4|0;k[e>>2]=27524;k[i>>2]=27544;B=0;wa(508,e+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;j=Q;l=a;vva(i);Qb(l|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[i>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){m=Rb()|0;n=Q;o=m}else{k[b>>2]=27560;m=e+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(b);n=q;o=p;break}Yua(c);B=0;p=Ia(40,e|0,144639,5)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[d>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,f|0,71825,72);t=B;B=0;do if(!(t&1)){B=0;eb(502,g|0,72510,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(f);u=p;v=q;break}B=0;wa(510,h|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,f|0,g|0,2084,h|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(h);w=p;x=q;y=z}Yua(g);Yua(f);if(y){u=w;v=x}else{A=w;C=x;k[e>>2]=27468;k[i>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(i);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[e>>2]=27468;k[i>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(i);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[e>>2]=27468;k[i>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(i);Qb(C|0)}while(0);j=n;l=o;vva(i);Qb(l|0)}}return 0}function Qu(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+180|0;d=b+176|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;cO(k[a+36>>2]|0,d,298);switch(k[d>>2]|0){case 301:{i=Au(a)|0;r=b;return i|0}case 300:{i=1;r=b;return i|0}default:{i=e+56|0;b=e+4|0;k[e>>2]=27524;k[i>>2]=27544;B=0;wa(508,e+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;j=Q;l=a;vva(i);Qb(l|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[i>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){m=Rb()|0;n=Q;o=m}else{k[b>>2]=27560;m=e+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(b);n=q;o=p;break}Yua(c);B=0;p=Ia(40,e|0,144639,5)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[d>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,f|0,71825,72);t=B;B=0;do if(!(t&1)){B=0;eb(502,g|0,72519,11);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(f);u=p;v=q;break}B=0;wa(510,h|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,f|0,g|0,2097,h|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(h);w=p;x=q;y=z}Yua(g);Yua(f);if(y){u=w;v=x}else{A=w;C=x;k[e>>2]=27468;k[i>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(i);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[e>>2]=27468;k[i>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(i);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[e>>2]=27468;k[i>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(i);Qb(C|0)}while(0);j=n;l=o;vva(i);Qb(l|0)}}return 0}function Ru(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0;c=r;r=r+32|0;d=c;xp(a,d,b);do if($p(a)|0){e=+p[d>>3];f=+p[d+8>>3];g=e*f;if(!(g<0.0)?(h=+p[d+16>>3],i=e*h,!(i<0.0)):0){if(!(g*h==0.0)){j=0;break}if(!(f*h+(g+i)<=0.0)){j=0;break}}j=1}else j=0;while(0);r=c;return j|0}function Su(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;uw(a,b,c,d);return}function Tu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;yw(a,b,c,d);return}function Uu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;yw(a,b,c,d);return}function Vu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;yw(a,b,c,d);return}function Wu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0.0,o=0,q=0,s=0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0.0;c=r;r=r+48|0;d=c+24|0;e=c+16|0;f=c+36|0;g=c+32|0;h=c+8|0;j=c;l=c+40|0;k[f>>2]=0;i[l>>0]=1;Uo(a,f);m=Wo(a,353)|0;n=+WJ(k[a+32>>2]|0,265);o=Rqa(24)|0;q=a+24|0;s=b+((Bo(k[k[q>>2]>>2]|0)|0)<<3)|0;p[o>>3]=+p[s>>3];s=b+((Bo(k[(k[q>>2]|0)+4>>2]|0)|0)<<3)|0;p[o+8>>3]=+p[s>>3];s=b+((Bo(k[(k[q>>2]|0)+8>>2]|0)|0)<<3)|0;p[o+16>>3]=+p[s>>3];Uc[k[(k[a>>2]|0)+152>>2]&63](a,g,h,j,l,o);s=hd[k[(k[a>>2]|0)+320>>2]&7](a,k[g>>2]|0,+p[h>>3],+p[j>>3],(i[l>>0]|0)!=0,4)|0;l=Hc[k[(k[s>>2]|0)+8>>2]&511](s)|0;if((l|0)<(Hc[k[(k[s>>2]|0)+12>>2]&511](s)|0)){j=s+8|0;h=l;t=0.0;while(1){Fc[k[(k[s>>2]|0)+24>>2]&1023](s,h);rd[k[(k[a>>2]|0)+260>>2]&511](a,e,k[f>>2]|0,s);nd[k[(k[m>>2]|0)+48>>2]&1023](m,d,s);u=t+ +p[d>>3]*+p[j>>3]*+p[e>>3];h=h+1|0;if((h|0)>=(Hc[k[(k[s>>2]|0)+12>>2]&511](s)|0)){v=u;break}else t=u}}else v=0.0;h=k[f>>2]|0;if(!h){k[f>>2]=0;Tqa(o);w=k[s>>2]|0;x=w+4|0;y=k[x>>2]|0;Ec[y&1023](s);z=n*v;r=c;return +z}Tqa(h);k[f>>2]=0;Tqa(o);w=k[s>>2]|0;x=w+4|0;y=k[x>>2]|0;Ec[y&1023](s);z=n*v;r=c;return +z}function Xu(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0,J=0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,ba=0;g=r;r=r+320|0;h=g+300|0;i=g+296|0;j=g+48|0;l=g+40|0;m=g+32|0;n=g+24|0;o=g+16|0;q=g+8|0;s=g;t=g+160|0;u=g+144|0;v=g+132|0;w=g+120|0;x=+WJ(k[a+32>>2]|0,265);y=a+8|0;if((k[y>>2]|0)==(f|0)){Ko(j,k[a+24>>2]|0,3,0);z=Qqa(64)|0;B=0;va(491,z|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Sqa(z);D=C;E=A;Qb(E|0)}Oja(z,b,c,j);A=Qqa(64)|0;B=0;va(491,A|0);C=B;B=0;if(C&1){C=Rb()|0;F=Q;Sqa(A);D=F;E=C;Qb(E|0)}Oja(A,d,e,j);G=e-c;c=+ia(+(b-d),+G);e=+ca(+c);H=+da(+c);c=d-b;b=+aa(+(c*c+G*G));j=a+16|0;C=oC(k[j>>2]|0,353)|0;cO(k[a+36>>2]|0,i,298);a=k[j>>2]|0;if((k[i>>2]|0)==300){i=oC(a,674)|0;I=i;J=oC(k[j>>2]|0,677)|0}else{i=oC(a,673)|0;I=i;J=oC(k[j>>2]|0,676)|0}nd[k[(k[C>>2]|0)+48>>2]&1023](C,l,z);nd[k[(k[C>>2]|0)+48>>2]&1023](C,m,A);nd[k[(k[I>>2]|0)+48>>2]&1023](I,n,z);nd[k[(k[I>>2]|0)+48>>2]&1023](I,o,A);nd[k[(k[J>>2]|0)+48>>2]&1023](J,q,z);nd[k[(k[J>>2]|0)+48>>2]&1023](J,s,A);G=+p[m>>3];c=+p[l>>3]-G;d=c*.3333333333333333;K=+p[o>>3];L=+p[n>>3]-K;M=G*.5;N=c*.5;c=+p[s>>3];O=+p[q>>3]-c;Ec[k[(k[z>>2]|0)+4>>2]&1023](z);Ec[k[(k[A>>2]|0)+4>>2]&1023](A);r=g;return +(x*b*(e*(G*K+(N*K+(d*L+M*L)))+H*(G*c+(N*c+(d*O+M*O)))))}g=t+56|0;A=t+4|0;k[t>>2]=27524;k[g>>2]=27544;B=0;wa(508,t+56|0,A|0);z=B;B=0;if(z&1){z=Rb()|0;P=Q;R=z;vva(g);Qb(R|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[g>>2]=27488;B=0;va(448,A|0);z=B;B=0;do if(z&1){q=Rb()|0;S=Q;T=q}else{k[A>>2]=27560;q=t+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[t+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,A|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;n=Q;Yua(h);Yua(q);Ava(A);S=n;T=s;break}Yua(h);B=0;s=Ia(40,t|0,72531,31)|0;n=B;B=0;a:do if((((!(n&1)?(B=0,o=Xa(242,s|0,f|0)|0,l=B,B=0,!(l&1)):0)?(B=0,l=Ia(40,o|0,72563,36)|0,o=B,B=0,!(o&1)):0)?(B=0,o=Xa(242,l|0,k[y>>2]|0)|0,l=B,B=0,!(l&1)):0)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,u|0,71825,72);l=B;B=0;do if(!(l&1)){B=0;eb(502,v|0,99206,8);m=B;B=0;if(m&1){m=Rb()|0;J=Q;Yua(u);U=J;V=m;break}B=0;wa(510,w|0,A|0);m=B;B=0;if(m&1){m=Rb()|0;W=Q;X=m;Y=1}else{B=0;ua(163,o|0,u|0,v|0,2220,w|0);m=B;B=0;if(m&1)Z=1;else{B=0;eb(503,o|0,1240,229);B=0;Z=0}m=Rb()|0;J=Q;Yua(w);W=J;X=m;Y=Z}Yua(v);Yua(u);if(Y){U=W;V=X}else{_=W;$=X;break a}}else{m=Rb()|0;U=Q;V=m}while(0);zb(o|0);_=U;$=V}else ba=20;while(0);if((ba|0)==20){s=Rb()|0;_=Q;$=s}k[t>>2]=27468;k[g>>2]=27488;k[A>>2]=27560;Yua(q);Ava(A);vva(g);D=_;E=$;Qb(E|0)}while(0);P=S;R=T;vva(g);Qb(R|0);return +(0.0)}function Yu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0.0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0,J=0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,ba=0;c=r;r=r+320|0;d=c+300|0;e=c+296|0;f=c+48|0;g=c+40|0;h=c+32|0;i=c+24|0;j=c+16|0;l=c+8|0;m=c;n=c+160|0;o=c+144|0;q=c+132|0;s=c+120|0;t=+WJ(k[a+32>>2]|0,265);u=b+32|0;v=a+8|0;if((~~+p[u>>3]|0)==(k[v>>2]|0)){w=+p[b>>3];x=+p[b+8>>3];y=+p[b+16>>3];z=+p[b+24>>3];Ko(f,k[a+24>>2]|0,3,0);b=Qqa(64)|0;B=0;va(491,b|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Sqa(b);D=C;E=A;Qb(E|0)}Oja(b,w,x,f);A=Qqa(64)|0;B=0;va(491,A|0);C=B;B=0;if(C&1){C=Rb()|0;F=Q;Sqa(A);D=F;E=C;Qb(E|0)}Oja(A,y,z,f);G=z-x;x=+ia(+(w-y),+G);z=+ca(+x);H=+da(+x);x=y-w;w=+aa(+(x*x+G*G));f=a+16|0;C=oC(k[f>>2]|0,353)|0;cO(k[a+36>>2]|0,e,298);a=k[f>>2]|0;if((k[e>>2]|0)==300){e=oC(a,674)|0;I=e;J=oC(k[f>>2]|0,677)|0}else{e=oC(a,673)|0;I=e;J=oC(k[f>>2]|0,676)|0}nd[k[(k[C>>2]|0)+48>>2]&1023](C,g,b);nd[k[(k[C>>2]|0)+48>>2]&1023](C,h,A);nd[k[(k[I>>2]|0)+48>>2]&1023](I,i,b);nd[k[(k[I>>2]|0)+48>>2]&1023](I,j,A);nd[k[(k[J>>2]|0)+48>>2]&1023](J,l,b);nd[k[(k[J>>2]|0)+48>>2]&1023](J,m,A);G=+p[h>>3];x=+p[g>>3]-G;y=x*.3333333333333333;K=+p[j>>3];L=+p[i>>3]-K;M=G*.5;N=x*.5;x=+p[m>>3];O=+p[l>>3]-x;Ec[k[(k[b>>2]|0)+4>>2]&1023](b);Ec[k[(k[A>>2]|0)+4>>2]&1023](A);r=c;return +(t*w*(z*(G*K+(N*K+(y*L+M*L)))+H*(G*x+(N*x+(y*O+M*O)))))}c=n+56|0;A=n+4|0;k[n>>2]=27524;k[c>>2]=27544;B=0;wa(508,n+56|0,A|0);b=B;B=0;if(b&1){b=Rb()|0;P=Q;R=b;vva(c);Qb(R|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[c>>2]=27488;B=0;va(448,A|0);b=B;B=0;do if(b&1){l=Rb()|0;S=Q;T=l}else{k[A>>2]=27560;l=n+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[n+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,A|0,d|0);m=B;B=0;if(m&1){m=Rb()|0;i=Q;Yua(d);Yua(l);Ava(A);S=i;T=m;break}Yua(d);B=0;m=Ia(40,n|0,72531,31)|0;i=B;B=0;a:do if((((!(i&1)?(B=0,j=Xa(242,m|0,~~+p[u>>3]|0)|0,g=B,B=0,!(g&1)):0)?(B=0,g=Ia(40,j|0,72563,36)|0,j=B,B=0,!(j&1)):0)?(B=0,j=Xa(242,g|0,k[v>>2]|0)|0,g=B,B=0,!(g&1)):0)?(B=0,Xa(239,j|0,0)|0,j=B,B=0,!(j&1)):0){j=Ab(20)|0;B=0;eb(502,o|0,71825,72);g=B;B=0;do if(!(g&1)){B=0;eb(502,q|0,99206,8);h=B;B=0;if(h&1){h=Rb()|0;J=Q;Yua(o);U=J;V=h;break}B=0;wa(510,s|0,A|0);h=B;B=0;if(h&1){h=Rb()|0;W=Q;X=h;Y=1}else{B=0;ua(163,j|0,o|0,q|0,2283,s|0);h=B;B=0;if(h&1)Z=1;else{B=0;eb(503,j|0,1240,229);B=0;Z=0}h=Rb()|0;J=Q;Yua(s);W=J;X=h;Y=Z}Yua(q);Yua(o);if(Y){U=W;V=X}else{_=W;$=X;break a}}else{h=Rb()|0;U=Q;V=h}while(0);zb(j|0);_=U;$=V}else ba=20;while(0);if((ba|0)==20){m=Rb()|0;_=Q;$=m}k[n>>2]=27468;k[c>>2]=27488;k[A>>2]=27560;Yua(l);Ava(A);vva(c);D=_;E=$;Qb(E|0)}while(0);P=S;R=T;vva(c);Qb(R|0);return +(0.0)}function Zu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0.0,m=0,n=0,o=0,q=0.0,s=0,t=0.0,u=0.0,v=0.0;e=r;r=r+112|0;f=e+96|0;g=e+88|0;h=e+80|0;i=e+72|0;j=e;if(!($p(a)|0)){l=0.0;r=e;return +l}Ko(j,k[a+24>>2]|0,3,0);m=a+16|0;n=oC(k[m>>2]|0,b)|0;b=oC(k[m>>2]|0,c)|0;c=oC(k[m>>2]|0,d)|0;d=Qqa(64)|0;B=0;wa(517,d|0,2);m=B;B=0;if(m&1){m=Rb()|0;Sqa(d);Qb(m|0)}m=Hc[k[(k[d>>2]|0)+8>>2]&511](d)|0;if((m|0)<(Hc[k[(k[d>>2]|0)+12>>2]&511](d)|0)){o=d+8|0;q=0.0;s=m;while(1){Fc[k[(k[d>>2]|0)+24>>2]&1023](d,s);uw(a,i,j,d);nd[k[(k[n>>2]|0)+48>>2]&1023](n,f,d);nd[k[(k[b>>2]|0)+48>>2]&1023](b,g,d);nd[k[(k[c>>2]|0)+48>>2]&1023](c,h,d);t=+p[f>>3]-+p[g>>3];u=q+ +p[o>>3]*(+p[h>>3]*(+p[i>>3]*(t*(t*.5))));s=s+1|0;if((s|0)>=(Hc[k[(k[d>>2]|0)+12>>2]&511](d)|0)){v=u;break}else q=u}}else v=0.0;Ec[k[(k[d>>2]|0)+4>>2]&1023](d);l=v;r=e;return +l}function _u(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,i=0,j=0,l=0.0,m=0,n=0.0,o=0.0;c=r;r=r+96|0;d=c+80|0;e=c+72|0;f=c;if(!($p(a)|0)){g=0.0;r=c;return +g}Ko(f,k[a+24>>2]|0,3,0);h=oC(k[a+16>>2]|0,b)|0;b=Qqa(64)|0;B=0;wa(517,b|0,2);i=B;B=0;if(i&1){i=Rb()|0;Sqa(b);Qb(i|0)}i=Hc[k[(k[b>>2]|0)+8>>2]&511](b)|0;if((i|0)<(Hc[k[(k[b>>2]|0)+12>>2]&511](b)|0)){j=b+8|0;l=0.0;m=i;while(1){Fc[k[(k[b>>2]|0)+24>>2]&1023](b,m);uw(a,e,f,b);nd[k[(k[h>>2]|0)+48>>2]&1023](h,d,b);n=l+ +p[e>>3]*+p[d>>3]*+p[j>>3];m=m+1|0;if((m|0)>=(Hc[k[(k[b>>2]|0)+12>>2]&511](b)|0)){o=n;break}else l=n}}else o=0.0;Ec[k[(k[b>>2]|0)+4>>2]&1023](b);g=o;r=c;return +g}function $u(a){a=a|0;var b=0;a=Qqa(64)|0;B=0;va(491,a|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(a);Qb(b|0)}else return a|0;return 0}function av(a,b){a=a|0;b=b|0;a=Qqa(64)|0;B=0;wa(517,a|0,b|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(a);Qb(b|0)}else return a|0;return 0}function bv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=r;r=r+48|0;f=e;hu(a,f,c,b,2);b=Qqa(64)|0;B=0;eb(510,b|0,f|0,d|0);d=B;B=0;if(d&1){d=Rb()|0;Sqa(b);Qb(d|0)}else{r=e;return b|0}return 0}function cv(a,b,c,d,e,f){a=a|0;b=b|0;c=+c;d=+d;e=e|0;f=f|0;a=Qqa(64)|0;B=0;Fa(1,a|0,b|0,+c,+d,e|0,f|0);f=B;B=0;if(f&1){f=Rb()|0;Sqa(a);Qb(f|0)}else return a|0;return 0}function dv(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;d=r;r=r+48|0;f=d;hu(a,f,c,b,2);b=Qqa(64)|0;B=0;eb(510,b|0,f|0,e|0);e=B;B=0;if(e&1){e=Rb()|0;Sqa(b);Qb(e|0)}else{r=d;return b|0}return 0}function ev(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;d=c;e=d+4|0;_t(a,d,e);a=Qqa(64)|0;B=0;ib(289,a|0,k[d>>2]|0,k[e>>2]|0,b|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(a);Qb(b|0)}else{r=c;return a|0}return 0}function fv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;d=c;e=d+4|0;$t(a,d,e);a=Qqa(64)|0;B=0;ib(289,a|0,k[d>>2]|0,k[e>>2]|0,b|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(a);Qb(b|0)}else{r=c;return a|0}return 0}function gv(a,b,c){a=a|0;b=b|0;c=c|0;tw(a,b,c,k[a+44>>2]|0);return}function hv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;rw(a,b,c,d,k[a+44>>2]|0);return}function iv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;rw(a,b,c,d,Hc[k[(k[a>>2]|0)+504>>2]&511](a)|0);return}function jv(a,b,c){a=a|0;b=b|0;c=c|0;tw(a,b,c,Hc[k[(k[a>>2]|0)+404>>2]&511](a)|0);return}function kv(a,b,c){a=a|0;b=b|0;c=c|0;tw(a,b,c,738);return}function lv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;rw(a,b,c,d,738);return}function mv(a,b,c){a=a|0;b=b|0;c=c|0;tw(a,b,c,742);return}function nv(a,b,c){a=a|0;b=b|0;c=c|0;tw(a,b,c,Hc[k[(k[a>>2]|0)+460>>2]&511](a)|0);return}function ov(a,b,c){a=a|0;b=b|0;c=c|0;tw(a,b,c,Hc[k[(k[a>>2]|0)+504>>2]&511](a)|0);return}function pv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=r;r=r+16|0;f=e;g=oC(k[a+16>>2]|0,d)|0;d=a+24|0;a=Bo(k[k[d>>2]>>2]|0)|0;if(!g){h=0;r=e;return h|0}if((a|0)!=(c|0))if((Bo(k[(k[d>>2]|0)+4>>2]|0)|0)!=(c|0))if((Bo(k[(k[d>>2]|0)+8>>2]|0)|0)==(c|0))i=2;else{h=0;r=e;return h|0}else i=1;else i=0;c=Qqa(64)|0;B=0;va(491,c|0);d=B;B=0;if(d&1){d=Rb()|0;Sqa(c);Qb(d|0)}Fc[k[(k[c>>2]|0)+28>>2]&1023](c,i);nd[k[(k[g>>2]|0)+48>>2]&1023](g,f,c);Ec[k[(k[c>>2]|0)+4>>2]&1023](c);p[b>>3]=+p[f>>3];h=1;r=e;return h|0}function qv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;d=+p[c+24>>3]-+p[c>>3];e=+p[c+32>>3]-+p[c+8>>3];f=+aa(+(d*d+e*e));p[b>>3]=e/f;p[b+8>>3]=-d/f;return}function rv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;d=+p[c+24>>3]-+p[c>>3];e=+p[c+32>>3]-+p[c+8>>3];f=+aa(+(d*d+e*e));p[b>>3]=e/f;p[b+8>>3]=-d/f;return}function sv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0.0,g=0.0;d=r;r=r+16|0;$t(a,d+4|0,d);e=+p[c+24>>3]-+p[c>>3];f=+p[c+32>>3]-+p[c+8>>3];g=+aa(+(e*e+f*f));p[b>>3]=f/g;p[b+8>>3]=-e/g;r=d;return}function tv(a){a=a|0;return 621}function uv(a){a=a|0;return qw(a,Hc[k[(k[a>>2]|0)+404>>2]&511](a)|0)|0}function vv(a){a=a|0;return qw(a,Hc[k[(k[a>>2]|0)+504>>2]&511](a)|0)|0}function wv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0.0,i=0.0,j=0,l=0;c=r;r=r+80|0;d=c+48|0;e=c+24|0;f=c;g=a+32|0;h=+WJ(k[g>>2]|0,266);i=+WJ(k[g>>2]|0,265)/h;xp(a,d,353);xp(a,e,63);xp(a,f,928);g=a+24|0;a=b+4|0;if((+p[f>>3]>0.0?+p[e>>3]<-(i*+p[d>>3]):0)?(j=Co(k[k[g>>2]>>2]|0)|0,(k[b>>2]|0)!=0):0){l=k[k[a>>2]>>2]|0;Jc[k[(k[l>>2]|0)+20>>2]&1](l,j,1.0,0)}if((+p[f+8>>3]>0.0?+p[e+8>>3]<-(i*+p[d+8>>3]):0)?(j=Co(k[(k[g>>2]|0)+4>>2]|0)|0,(k[b>>2]|0)!=0):0){l=k[k[a>>2]>>2]|0;Jc[k[(k[l>>2]|0)+20>>2]&1](l,j,1.0,0)}if(!(+p[f+16>>3]>0.0)){r=c;return}if(!(+p[e+16>>3]<-(i*+p[d+16>>3]))){r=c;return}d=Co(k[(k[g>>2]|0)+8>>2]|0)|0;if(!(k[b>>2]|0)){r=c;return}b=k[k[a>>2]>>2]|0;Jc[k[(k[b>>2]|0)+20>>2]&1](b,d,1.0,0);r=c;return}function xv(a){a=a|0;return Bw(a,k[a+44>>2]|0)|0}function yv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=r;r=r+16|0;e=d;a:do if(c){switch(k[a+44>>2]|0){case 752:{f=e;k[f>>2]=6;k[f+4>>2]=7;VN(c,b,2,e);break a;break}case 741:break;default:break a}f=a+20|0;g=eo(k[(k[f>>2]|0)+12>>2]|0,534,943)|0;h=eo(k[k[f>>2]>>2]|0,534,943)|0;i=(eo(k[(k[f>>2]|0)+4>>2]|0,534,943)|0)+h|0;h=(eo(k[(k[f>>2]|0)+8>>2]|0,534,943)|0)+i|0;i=Rqa(g>>>0>1073741823?-1:g<<2)|0;if((g|0)>0){f=0;do{k[i+(f<<2)>>2]=f+h;f=f+1|0}while((f|0)!=(g|0))}VN(c,b,g,i);Tqa(i)}while(0);if(!b){r=d;return}switch(k[a+44>>2]|0){case 752:{c=e;k[c>>2]=6;k[c+4>>2]=7;NN(b,2,e);r=d;return}case 741:{e=a+20|0;a=eo(k[(k[e>>2]|0)+12>>2]|0,534,943)|0;c=(eo(k[k[e>>2]>>2]|0,534,943)|0)+(eo(k[(k[e>>2]|0)+4>>2]|0,534,943)|0)+(eo(k[(k[e>>2]|0)+8>>2]|0,534,943)|0)|0;e=Rqa(a>>>0>1073741823?-1:a<<2)|0;if((a|0)>0){f=0;do{k[e+(f<<2)>>2]=f+c;f=f+1|0}while((f|0)!=(a|0))}NN(b,a,e);Tqa(e);r=d;return}default:{r=d;return}}}function zv(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0.0,w=0.0;b=r;r=r+80|0;c=b+64|0;d=b+56|0;e=b+48|0;f=b;g=Hc[k[(k[a>>2]|0)+396>>2]&511](a)|0;h=a+16|0;kC(k[h>>2]|0,c,533);i=(Np(a)|0)^1;if((k[c>>2]|0)!=542|i){r=b;return}i=oC(k[h>>2]|0,642)|0;c=oC(k[h>>2]|0,928)|0;h=Rqa(g>>>0>536870911?-1:g<<3)|0;wp(a,h,287);g=Qqa(64)|0;B=0;va(491,g|0);j=B;B=0;if(j&1){j=Rb()|0;Sqa(g);Qb(j|0)}if((Hc[k[(k[a>>2]|0)+396>>2]&511](a)|0)>0){j=f+24|0;l=f+8|0;m=f+32|0;n=f+16|0;o=f+40|0;q=a+20|0;s=0;do{if(+p[h+(s<<3)>>3]==1.0){t=k[(k[g>>2]|0)+32>>2]|0;u=Hc[k[(k[a>>2]|0)+504>>2]&511](a)|0;nd[t&1023](g,u,s);nd[k[(k[i>>2]|0)+48>>2]&1023](i,d,g);nd[k[(k[c>>2]|0)+48>>2]&1023](c,e,g);v=+ha(+(+p[d>>3]));w=+ca(+v);p[f>>3]=w;p[j>>3]=0.0;w=+da(+v);p[l>>3]=w;p[m>>3]=0.0;p[n>>3]=0.0;p[o>>3]=1.0;u=k[(k[q>>2]|0)+(s<<2)>>2]|0;if(!(+p[e>>3]>=0.0))Zn(u,1);else Vn(u,1);NY((k[(k[q>>2]|0)+(s<<2)>>2]|0)+72|0,f)}s=s+1|0}while((s|0)<(Hc[k[(k[a>>2]|0)+396>>2]&511](a)|0))}Tqa(h);Ec[k[(k[g>>2]|0)+4>>2]&1023](g);r=b;return}function Av(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=a+20|0;c=a+48|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;b=k[c>>2]|0;if((b|0)>0){d=a+52|0;e=b;b=0;while(1){f=k[(k[d>>2]|0)+(b<<2)>>2]|0;if(!f)g=e;else{Dla(f);g=k[c>>2]|0}b=b+1|0;if((b|0)>=(g|0))break;else e=g}}Dla(k[a+56>>2]|0);Dla(k[a+60>>2]|0);Dla(k[a+64>>2]|0);g=k[a+68>>2]|0;if(!g)return;Dla(g);return}function Bv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;e=r;r=r+240|0;f=e+216|0;g=e;h=e+204|0;i=e+200|0;j=e+64|0;l=e+48|0;m=e+36|0;n=e+24|0;cO(k[a+36>>2]|0,i,298);a:do if((k[i>>2]|0)==301)switch(c|0){case 215:{if(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0){o=214;break a}r=e;return}case 227:{if(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0){o=225;break a}r=e;return}default:{o=c;break a}}else o=c;while(0);if(!(Tp(a,o)|0)){r=e;return}Mp(a,h,d,0);p[g>>3]=+p[b+(k[h>>2]<<3)>>3];p[g+8>>3]=+p[b+(k[h+4>>2]<<3)>>3];p[g+16>>3]=+p[b+(k[h+8>>2]<<3)>>3];h=Qqa(16)|0;B=0;ib(284,h|0,o|0,g|0,738);g=B;B=0;if(g&1){g=Rb()|0;b=Q;Sqa(h);q=b;s=g;Qb(s|0)}g=oC(k[a+16>>2]|0,o)|0;if((Hc[k[(k[g>>2]|0)+20>>2]&511](g)|0)==559){r$(g,h);r=e;return}e=j+56|0;h=j+4|0;k[j>>2]=27524;k[e>>2]=27544;B=0;wa(508,j+56|0,h|0);g=B;B=0;if(g&1){g=Rb()|0;t=Q;u=g;vva(e);Qb(u|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);g=B;B=0;do if(g&1){a=Rb()|0;v=Q;w=a}else{k[h>>2]=27560;a=j+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[j+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,h|0,f|0);b=B;B=0;if(b&1){b=Rb()|0;d=Q;Yua(f);Yua(a);Ava(h);v=d;w=b;break}Yua(f);B=0;b=Ia(40,j|0,74566,6)|0;d=B;B=0;b:do if((((!(d&1)?(B=0,c=ya(427,o|0)|0,i=B,B=0,!(i&1)):0)?(i=Lta(c)|0,B=0,x=Ia(40,b|0,c|0,i|0)|0,i=B,B=0,!(i&1)):0)?(B=0,i=Ia(40,x|0,74278,22)|0,x=B,B=0,!(x&1)):0)?(B=0,Xa(239,i|0,0)|0,i=B,B=0,!(i&1)):0){i=Ab(20)|0;B=0;eb(502,l|0,71825,72);x=B;B=0;do if(!(x&1)){B=0;eb(502,m|0,74894,26);c=B;B=0;if(c&1){c=Rb()|0;y=Q;Yua(l);z=y;A=c;break}B=0;wa(510,n|0,h|0);c=B;B=0;if(c&1){c=Rb()|0;C=Q;D=c;E=1}else{B=0;ua(163,i|0,l|0,m|0,2787,n|0);c=B;B=0;if(c&1)F=1;else{B=0;eb(503,i|0,1240,229);B=0;F=0}c=Rb()|0;y=Q;Yua(n);C=y;D=c;E=F}Yua(m);Yua(l);if(E){z=C;A=D}else{G=D;H=C;break b}}else{c=Rb()|0;z=Q;A=c}while(0);zb(i|0);G=A;H=z}else I=27;while(0);if((I|0)==27){b=Rb()|0;G=b;H=Q}k[j>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(a);Ava(h);vva(e);q=H;s=G;Qb(s|0)}while(0);t=v;u=w;vva(e);Qb(u|0)}function Cv(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;e=r;r=r+16|0;d=e;cO(f,d,482);f=k[a+40>>2]|0;if(f)k[a+44>>2]=k[f+(k[d>>2]<<2)>>2];f=k[a+52>>2]|0;if(!f){r=e;return}c=k[f+(k[d>>2]<<2)>>2]|0;if(!c){r=e;return}d=Gla(c)|0;k[a+20>>2]=d;r=e;return}function Dv(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;b=r;r=r+208|0;c=b+188|0;d=b+184|0;e=b+180|0;f=b+176|0;g=b+40|0;h=b+24|0;i=b+12|0;j=b;cO(k[a+36>>2]|0,f,298);switch(k[f>>2]|0){case 301:{_t(a,d,e);l=Ev(a,k[d>>2]|0,k[e>>2]|0)|0;r=b;return l|0}case 300:{l=a;r=b;return l|0}default:{l=g+56|0;b=g+4|0;k[g>>2]=27524;k[l>>2]=27544;B=0;wa(508,g+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;m=Q;n=a;vva(l);Qb(n|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[l>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){e=Rb()|0;o=Q;p=e}else{k[b>>2]=27560;e=g+36|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[g+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);d=B;B=0;if(d&1){d=Rb()|0;f=Q;Yua(c);Yua(e);Ava(b);o=f;p=d;break}Yua(c);B=0;d=Ia(40,g|0,149721,19)|0;f=B;B=0;if(!(f&1)?(B=0,Xa(239,d|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,h|0,71825,72);f=B;B=0;do if(!(f&1)){B=0;eb(502,i|0,74921,17);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(h);t=s;u=q;break}B=0;wa(510,j|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;v=Q;w=q;x=1}else{B=0;ua(163,d|0,h|0,i|0,2823,j|0);q=B;B=0;if(q&1)y=1;else{B=0;eb(503,d|0,1240,229);B=0;y=0}q=Rb()|0;s=Q;Yua(j);v=s;w=q;x=y}Yua(i);Yua(h);if(x){t=v;u=w}else{z=v;A=w;k[g>>2]=27468;k[l>>2]=27488;k[b>>2]=27560;Yua(e);Ava(b);vva(l);Qb(A|0)}}else{q=Rb()|0;t=Q;u=q}while(0);zb(d|0);z=t;A=u;k[g>>2]=27468;k[l>>2]=27488;k[b>>2]=27560;Yua(e);Ava(b);vva(l);Qb(A|0)}f=Rb()|0;z=Q;A=f;k[g>>2]=27468;k[l>>2]=27488;k[b>>2]=27560;Yua(e);Ava(b);vva(l);Qb(A|0)}while(0);m=o;n=p;vva(l);Qb(n|0)}}return 0}function Ev(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;d=r;r=r+16|0;e=d;f=a+36|0;cO(k[f>>2]|0,e,482);g=Qqa(72)|0;B=0;va(461,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;Sqa(g);Qb(j|0)}h=g+48|0;B=0;va(462,h|0);l=B;B=0;do if(!(l&1)){B=0;m=B;B=0;if(m&1){m=Rb()|0;n=Q;Tq(h);o=n;p=m;break}else{k[g>>2]=29448;k[g+4>>2]=30012;k[g+8>>2]=k[a+8>>2];m=vC(k[a+16>>2]|0,b,c)|0;k[g+16>>2]=m;k[g+36>>2]=k[f>>2];k[g+44>>2]=738;Yq(a+48|0,h,b,c);m=k[a+28>>2]|0;n=ed[k[(k[m>>2]|0)+32>>2]&511](m,g)|0;k[g+28>>2]=n;n=Gla(k[(k[g+52>>2]|0)+(k[e>>2]<<2)>>2]|0)|0;k[g+20>>2]=n;n=Gla(k[g+56>>2]|0)|0;k[g+24>>2]=n;n=Fla(k[g+64>>2]|0)|0;k[g+32>>2]=n;r=d;return g|0}}else{n=Rb()|0;o=Q;p=n}while(0);Qo(g);i=o;j=p;Sqa(g);Qb(j|0);return 0}function Fv(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;b=r;r=r+208|0;c=b+188|0;d=b+184|0;e=b+180|0;f=b+176|0;g=b+40|0;h=b+24|0;i=b+12|0;j=b;cO(k[a+36>>2]|0,f,298);switch(k[f>>2]|0){case 301:{$t(a,d,e);l=Ev(a,k[e>>2]|0,k[d>>2]|0)|0;r=b;return l|0}case 300:{l=a;r=b;return l|0}default:{l=g+56|0;b=g+4|0;k[g>>2]=27524;k[l>>2]=27544;B=0;wa(508,g+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;m=Q;n=a;vva(l);Qb(n|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[l>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){d=Rb()|0;o=Q;p=d}else{k[b>>2]=27560;d=g+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[g+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);e=B;B=0;if(e&1){e=Rb()|0;f=Q;Yua(c);Yua(d);Ava(b);o=f;p=e;break}Yua(c);B=0;e=Ia(40,g|0,149721,19)|0;f=B;B=0;if(!(f&1)?(B=0,Xa(239,e|0,0)|0,e=B,B=0,!(e&1)):0){e=Ab(20)|0;B=0;eb(502,h|0,71825,72);f=B;B=0;do if(!(f&1)){B=0;eb(502,i|0,72600,15);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(h);t=s;u=q;break}B=0;wa(510,j|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;v=Q;w=q;x=1}else{B=0;ua(163,e|0,h|0,i|0,2868,j|0);q=B;B=0;if(q&1)y=1;else{B=0;eb(503,e|0,1240,229);B=0;y=0}q=Rb()|0;s=Q;Yua(j);v=s;w=q;x=y}Yua(i);Yua(h);if(x){t=v;u=w}else{z=v;A=w;k[g>>2]=27468;k[l>>2]=27488;k[b>>2]=27560;Yua(d);Ava(b);vva(l);Qb(A|0)}}else{q=Rb()|0;t=Q;u=q}while(0);zb(e|0);z=t;A=u;k[g>>2]=27468;k[l>>2]=27488;k[b>>2]=27560;Yua(d);Ava(b);vva(l);Qb(A|0)}f=Rb()|0;z=Q;A=f;k[g>>2]=27468;k[l>>2]=27488;k[b>>2]=27560;Yua(d);Ava(b);vva(l);Qb(A|0)}while(0);m=o;n=p;vva(l);Qb(n|0)}}return 0}function Gv(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0;b=r;r=r+80|0;c=b+64|0;d=b+40|0;e=b+32|0;f=b+24|0;g=b;k[c>>2]=0;Uo(a,c);h=a+16|0;i=oC(k[h>>2]|0,674)|0;j=oC(k[h>>2]|0,677)|0;l=Qqa(64)|0;B=0;va(491,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;Sqa(l);o=n;q=m;Qb(q|0)}m=d+8|0;n=d+16|0;s=0;do{Fc[k[(k[l>>2]|0)+28>>2]&1023](l,s);nd[k[(k[i>>2]|0)+48>>2]&1023](i,e,l);nd[k[(k[j>>2]|0)+48>>2]&1023](j,f,l);t=+p[e>>3];u=+p[f>>3];Xo(a,d,k[c>>2]|0,l,i,j);v=+p[e>>3];w=+p[f>>3];p[g+(s<<3)>>3]=(+p[d>>3]*(v*v)+ +p[m>>3]*(w*w)+ +p[n>>3]*(v*(w*2.0)))/(t*t+u*u+1.0e-14);s=s+1|0}while((s|0)!=3);s=k[h>>2]|0;h=Qqa(16)|0;B=0;ib(284,h|0,262,g|0,738);g=B;B=0;if(g&1){g=Rb()|0;n=Q;Sqa(h);o=n;q=g;Qb(q|0)}mC(s,h)|0;Ec[k[(k[l>>2]|0)+4>>2]&1023](l);l=k[c>>2]|0;if(!l){r=b;return}Tqa(l);r=b;return}function Hv(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0;b=r;r=r+80|0;c=b+64|0;d=b+40|0;e=b+32|0;f=b+24|0;g=b;k[c>>2]=0;Uo(a,c);h=a+16|0;i=oC(k[h>>2]|0,674)|0;j=oC(k[h>>2]|0,677)|0;l=Qqa(64)|0;B=0;va(491,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;Sqa(l);o=n;q=m;Qb(q|0)}m=d+8|0;n=d+16|0;s=0;do{Fc[k[(k[l>>2]|0)+28>>2]&1023](l,s);nd[k[(k[i>>2]|0)+48>>2]&1023](i,e,l);nd[k[(k[j>>2]|0)+48>>2]&1023](j,f,l);t=+p[e>>3];u=+p[f>>3];Xo(a,d,k[c>>2]|0,l,i,j);v=+p[e>>3];w=+p[f>>3];p[g+(s<<3)>>3]=(+p[m>>3]*(v*v)+ +p[d>>3]*(w*w)-+p[n>>3]*(v*(w*2.0)))/(t*t+u*u+1.0e-14);s=s+1|0}while((s|0)!=3);s=k[h>>2]|0;h=Qqa(16)|0;B=0;ib(284,h|0,263,g|0,738);g=B;B=0;if(g&1){g=Rb()|0;n=Q;Sqa(h);o=n;q=g;Qb(q|0)}mC(s,h)|0;Ec[k[(k[l>>2]|0)+4>>2]&1023](l);l=k[c>>2]|0;if(!l){r=b;return}Tqa(l);r=b;return}function Iv(a){a=a|0;var b=0,c=0,d=0.0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,l=0.0,m=0.0;b=r;r=r+80|0;c=b;if(!($p(a)|0)){d=0.0;r=b;return +d}Ko(c,k[a+24>>2]|0,3,0);e=+p[c+48>>3];f=+p[c>>3]-e;g=+p[c+24>>3]-e;e=+p[c+56>>3];h=+p[c+8>>3]-e;i=+p[c+32>>3]-e;e=+p[c+64>>3];j=+p[c+16>>3]-e;l=+p[c+40>>3]-e;e=h*l-j*i;m=j*g-l*f;l=i*f-h*g;d=+aa(+(l*l+(e*e+m*m)))*.5;r=b;return +d}function Jv(a){a=a|0;return Cw(a,k[a+44>>2]|0)|0}function Kv(a){a=a|0;var b=0,c=0,d=0,e=0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,l=0.0,m=0.0,n=0.0;b=r;r=r+80|0;c=b+72|0;d=b;dO(k[a+36>>2]|0,c,356);e=a+16|0;f=+qC(k[e>>2]|0,674);g=+qC(k[e>>2]|0,677);Ko(d,k[a+24>>2]|0,3,0);h=+p[d>>3];i=+p[d+8>>3];j=+p[d+24>>3];l=j<h?j:h;m=j>h?j:h;h=+p[d+32>>3];j=h<i?h:i;n=h>i?h:i;i=+p[d+48>>3];h=+p[d+56>>3];r=b;return +(+p[c>>3]/(g/((h>n?h:n)-(h<j?h:j))+f/((i>m?i:m)-(i<l?i:l))))}function Lv(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0.0,m=0.0,n=0,o=0,q=0.0,s=0.0,t=0.0;b=r;r=r+112|0;c=b+104|0;d=b+108|0;e=b+96|0;f=b+88|0;g=b+80|0;h=b+72|0;j=b;if(!($p(a)|0)){l=0.0;r=b;return +l}m=+WJ(k[a+32>>2]|0,265);n=Wo(a,40)|0;Wo(a,928)|0;Ko(j,k[a+24>>2]|0,3,0);Dc[k[(k[a>>2]|0)+132>>2]&255](a,c,e,f,d);o=hd[k[(k[a>>2]|0)+320>>2]&7](a,k[c>>2]|0,+p[e>>3],+p[f>>3],(i[d>>0]|0)!=1,3)|0;d=Hc[k[(k[o>>2]|0)+8>>2]&511](o)|0;if((d|0)<(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0)){f=o+8|0;q=0.0;e=d;while(1){Fc[k[(k[o>>2]|0)+24>>2]&1023](o,e);rd[k[(k[a>>2]|0)+260>>2]&511](a,h,j,o);nd[k[(k[n>>2]|0)+48>>2]&1023](n,g,o);s=q+ +p[g>>3]*+p[h>>3]*+p[f>>3];e=e+1|0;if((e|0)>=(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0)){t=s;break}else q=s}}else t=0.0;Ec[k[(k[o>>2]|0)+4>>2]&1023](o);l=m*t;r=b;return +l}function Mv(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0.0,m=0.0,n=0,o=0,q=0.0,s=0.0,t=0.0;b=r;r=r+112|0;c=b+104|0;d=b+108|0;e=b+96|0;f=b+88|0;g=b+80|0;h=b+72|0;j=b;if(!($p(a)|0)){l=0.0;r=b;return +l}m=+WJ(k[a+32>>2]|0,265);n=Wo(a,39)|0;Wo(a,928)|0;Ko(j,k[a+24>>2]|0,3,0);Dc[k[(k[a>>2]|0)+132>>2]&255](a,c,e,f,d);o=hd[k[(k[a>>2]|0)+320>>2]&7](a,k[c>>2]|0,+p[e>>3],+p[f>>3],(i[d>>0]|0)!=0,2)|0;d=Hc[k[(k[o>>2]|0)+8>>2]&511](o)|0;if((d|0)<(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0)){f=o+8|0;q=0.0;e=d;while(1){Fc[k[(k[o>>2]|0)+24>>2]&1023](o,e);rd[k[(k[a>>2]|0)+260>>2]&511](a,h,j,o);nd[k[(k[n>>2]|0)+48>>2]&1023](n,g,o);s=q+ +p[g>>3]*+p[h>>3]*+p[f>>3];e=e+1|0;if((e|0)>=(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0)){t=s;break}else q=s}}else t=0.0;Ec[k[(k[o>>2]|0)+4>>2]&1023](o);l=m*t;r=b;return +l}function Nv(a){a=a|0;var b=0,c=0,d=0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0;b=r;r=r+80|0;c=b+72|0;d=b;e=+WJ(k[a+32>>2]|0,265);if(!($p(a)|0)){f=0.0;r=b;return +f}Ko(d,k[a+24>>2]|0,3,0);g=+p[d>>3];h=+p[d+8>>3];i=+$(+((g-+p[d+48>>3])*(+p[d+32>>3]-h)-(g-+p[d+24>>3])*(+p[d+56>>3]-h)))*.5;d=oC(k[a+16>>2]|0,388)|0;Fc[k[(k[d>>2]|0)+64>>2]&1023](d,c);f=e*i*+p[c>>3];r=b;return +f}function Ov(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;e=r;r=r+192|0;g=e+176|0;h=e+40|0;i=e+24|0;j=e+12|0;l=e;k[(k[a+40>>2]|0)+(d<<2)>>2]=f;do switch(f|0){case 738:{m=Rqa(12)|0;n=k[c+100>>2]|0;o=b*3|0;p=k[c+72>>2]|0;k[m>>2]=(k[p+(o<<2)>>2]|0)+n;k[m+4>>2]=(k[p+(o+1<<2)>>2]|0)+n;k[m+8>>2]=(k[p+(o+2<<2)>>2]|0)+n;q=3;s=m;break}case 739:{m=Rqa(12)|0;n=k[c+100>>2]|0;o=b*3|0;k[m>>2]=o+1+n;k[m+4>>2]=o+2+n;k[m+8>>2]=o+3+n;q=3;s=m;break}case 741:case 740:{m=Rqa(16)|0;n=k[c+100>>2]|0;o=b*3|0;p=k[c+72>>2]|0;k[m>>2]=(k[p+(o<<2)>>2]|0)+n;k[m+4>>2]=(k[p+(o+1<<2)>>2]|0)+n;k[m+8>>2]=(k[p+(o+2<<2)>>2]|0)+n;k[m+12>>2]=b+1+n+(k[c+52>>2]|0);q=4;s=m;break}case 742:{m=Rqa(24)|0;n=k[c+100>>2]|0;o=b*3|0;p=k[c+72>>2]|0;k[m>>2]=(k[p+(o<<2)>>2]|0)+n;t=o+1|0;k[m+4>>2]=(k[p+(t<<2)>>2]|0)+n;u=o+2|0;k[m+8>>2]=(k[p+(u<<2)>>2]|0)+n;p=k[c+84>>2]|0;v=n+1+(k[c+52>>2]|0)|0;k[m+12>>2]=v+(k[p+(o<<2)>>2]|0);k[m+16>>2]=v+(k[p+(t<<2)>>2]|0);k[m+20>>2]=v+(k[p+(u<<2)>>2]|0);q=6;s=m;break}case 744:case 743:{m=Rqa(28)|0;u=k[c+100>>2]|0;p=b*3|0;v=k[c+72>>2]|0;k[m>>2]=(k[v+(p<<2)>>2]|0)+u;t=p+1|0;k[m+4>>2]=(k[v+(t<<2)>>2]|0)+u;o=p+2|0;k[m+8>>2]=(k[v+(o<<2)>>2]|0)+u;v=k[c+52>>2]|0;n=k[c+84>>2]|0;w=u+1+v|0;k[m+12>>2]=w+(k[n+(p<<2)>>2]|0);k[m+16>>2]=w+(k[n+(t<<2)>>2]|0);k[m+20>>2]=w+(k[n+(o<<2)>>2]|0);k[m+24>>2]=b+1+u+v+(k[c+64>>2]|0);q=7;s=m;break}case 750:case 749:{m=Rqa(24)|0;v=k[c+100>>2]|0;u=b*3|0;o=k[c+72>>2]|0;n=o+(u<<2)|0;k[m>>2]=(k[n>>2]|0)+v;w=o+(u+1<<2)|0;k[m+4>>2]=(k[w>>2]|0)+v;t=o+(u+2<<2)|0;k[m+8>>2]=(k[t>>2]|0)+v;u=(k[c+52>>2]|0)+v|0;k[m+12>>2]=u+(k[n>>2]|0);k[m+16>>2]=u+(k[w>>2]|0);k[m+20>>2]=u+(k[t>>2]|0);q=6;s=m;break}case 752:case 751:{m=Rqa(28)|0;t=k[c+100>>2]|0;u=b*3|0;w=k[c+72>>2]|0;n=w+(u<<2)|0;k[m>>2]=(k[n>>2]|0)+t;v=w+(u+1<<2)|0;k[m+4>>2]=(k[v>>2]|0)+t;o=w+(u+2<<2)|0;k[m+8>>2]=(k[o>>2]|0)+t;u=k[c+52>>2]|0;k[m+12>>2]=b+1+t+u;w=u+t+(k[c+56>>2]|0)|0;k[m+16>>2]=w+(k[n>>2]|0);k[m+20>>2]=w+(k[v>>2]|0);k[m+24>>2]=w+(k[o>>2]|0);q=7;s=m;break}case 755:case 753:{m=Rqa(36)|0;o=k[c+100>>2]|0;w=b*3|0;v=k[c+72>>2]|0;n=v+(w<<2)|0;k[m>>2]=(k[n>>2]|0)+o;t=w+1|0;u=v+(t<<2)|0;k[m+4>>2]=(k[u>>2]|0)+o;p=w+2|0;x=v+(p<<2)|0;k[m+8>>2]=(k[x>>2]|0)+o;v=k[c+52>>2]|0;y=k[c+84>>2]|0;z=o+1+v|0;k[m+12>>2]=z+(k[y+(w<<2)>>2]|0);k[m+16>>2]=z+(k[y+(t<<2)>>2]|0);k[m+20>>2]=z+(k[y+(p<<2)>>2]|0);p=v+o+(k[c+64>>2]|0)|0;k[m+24>>2]=p+(k[n>>2]|0);k[m+28>>2]=p+(k[u>>2]|0);k[m+32>>2]=p+(k[x>>2]|0);q=9;s=m;break}case 754:{m=Rqa(24)|0;x=k[c+100>>2]|0;p=b*3|0;u=k[c+72>>2]|0;k[m>>2]=(k[u+(p<<2)>>2]|0)+x;n=p+1|0;k[m+4>>2]=(k[u+(n<<2)>>2]|0)+x;o=p+2|0;k[m+8>>2]=(k[u+(o<<2)>>2]|0)+x;u=k[c+84>>2]|0;v=x+1+(k[c+52>>2]|0)|0;k[m+12>>2]=v+(k[u+(p<<2)>>2]|0);k[m+16>>2]=v+(k[u+(n<<2)>>2]|0);k[m+20>>2]=v+(k[u+(o<<2)>>2]|0);q=6;s=m;break}case 757:{m=Rqa(40)|0;o=k[c+100>>2]|0;u=b*3|0;v=k[c+72>>2]|0;k[m>>2]=(k[v+(u<<2)>>2]|0)+o;n=u+1|0;k[m+4>>2]=(k[v+(n<<2)>>2]|0)+o;p=u+2|0;k[m+8>>2]=(k[v+(p<<2)>>2]|0)+o;v=k[c+52>>2]|0;x=k[c+84>>2]|0;y=o+1+v|0;k[m+12>>2]=y+(k[x+(u<<2)>>2]|0);k[m+16>>2]=y+(k[x+(n<<2)>>2]|0);k[m+20>>2]=y+(k[x+(p<<2)>>2]|0);x=k[c+64>>2]|0;k[m+24>>2]=b+1+o+v+x;y=k[c+56>>2]|0;k[m+28>>2]=n+o+v+x+y;k[m+32>>2]=p+o+v+x+y;k[m+36>>2]=u+3+o+v+x+y;q=10;s=m;break}case 758:{m=Rqa(28)|0;y=k[c+100>>2]|0;x=b*3|0;v=k[c+72>>2]|0;k[m>>2]=(k[v+(x<<2)>>2]|0)+y;o=x+1|0;k[m+4>>2]=(k[v+(o<<2)>>2]|0)+y;u=x+2|0;k[m+8>>2]=(k[v+(u<<2)>>2]|0)+y;v=k[c+52>>2]|0;p=k[c+84>>2]|0;n=y+1+v|0;k[m+12>>2]=n+(k[p+(x<<2)>>2]|0);k[m+16>>2]=n+(k[p+(o<<2)>>2]|0);k[m+20>>2]=n+(k[p+(u<<2)>>2]|0);k[m+24>>2]=b+1+y+v+(k[c+64>>2]|0);q=7;s=m;break}default:{m=h+56|0;v=h+4|0;k[h>>2]=27524;k[m>>2]=27544;B=0;wa(508,h+56|0,v|0);y=B;B=0;if(y&1){y=Rb()|0;A=Q;C=y;vva(m);Qb(C|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[m>>2]=27488;B=0;va(448,v|0);y=B;B=0;do if(y&1){u=Rb()|0;D=Q;E=u}else{k[v>>2]=27560;u=h+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[h+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,v|0,g|0);p=B;B=0;if(p&1){p=Rb()|0;n=Q;Yua(g);Yua(u);Ava(v);D=n;E=p;break}Yua(g);B=0;p=Ia(40,h|0,145867,15)|0;n=B;B=0;if((((!(n&1)?(B=0,n=ya(427,f|0)|0,o=B,B=0,!(o&1)):0)?(o=Lta(n)|0,B=0,x=Ia(40,p|0,n|0,o|0)|0,o=B,B=0,!(o&1)):0)?(B=0,o=Ia(40,x|0,146481,18)|0,x=B,B=0,!(x&1)):0)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,i|0,71825,72);x=B;B=0;do if(!(x&1)){B=0;eb(502,j|0,74939,6);n=B;B=0;if(n&1){n=Rb()|0;p=Q;Yua(i);F=p;G=n;break}B=0;wa(510,l|0,v|0);n=B;B=0;if(n&1){n=Rb()|0;H=Q;I=n;J=1}else{B=0;ua(163,o|0,i|0,j|0,3270,l|0);n=B;B=0;if(n&1)K=1;else{B=0;eb(503,o|0,1240,229);B=0;K=0}n=Rb()|0;p=Q;Yua(l);H=p;I=n;J=K}Yua(j);Yua(i);if(J){F=H;G=I}else{L=H;M=I;k[h>>2]=27468;k[m>>2]=27488;k[v>>2]=27560;Yua(u);Ava(v);vva(m);Qb(M|0)}}else{n=Rb()|0;F=Q;G=n}while(0);zb(o|0);L=F;M=G;k[h>>2]=27468;k[m>>2]=27488;k[v>>2]=27560;Yua(u);Ava(v);vva(m);Qb(M|0)}x=Rb()|0;L=Q;M=x;k[h>>2]=27468;k[m>>2]=27488;k[v>>2]=27560;Yua(u);Ava(v);vva(m);Qb(M|0)}while(0);A=D;C=E;vva(m);Qb(C|0)}}while(0);Xq(a+48|0,s,q,d);k[a+20>>2]=0;Tqa(s);nd[k[(k[a>>2]|0)+548>>2]&1023](a,b,c);r=e;return}function Pv(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=r;r=r+32|0;c=b+16|0;d=b+8|0;e=b;if(!(zu(a)|0)){r=b;return}cO(k[a+36>>2]|0,c,575);f=a+16|0;g=oC(k[f>>2]|0,k[c>>2]|0)|0;c=oC(k[f>>2]|0,287)|0;f=Qqa(64)|0;B=0;va(491,f|0);h=B;B=0;if(h&1){h=Rb()|0;Sqa(f);Qb(h|0)}h=a+44|0;if((qw(a,k[h>>2]|0)|0)>0){i=a+20|0;j=0;do{nd[k[(k[f>>2]|0)+32>>2]&1023](f,k[h>>2]|0,j);nd[k[(k[c>>2]|0)+48>>2]&1023](c,e,f);if(+p[e>>3]==1.0){nd[k[(k[g>>2]|0)+48>>2]&1023](g,d,f);Un(k[(k[i>>2]|0)+(j<<2)>>2]|0,0,+p[d>>3])}j=j+1|0}while((j|0)<(qw(a,k[h>>2]|0)|0))}Ec[k[(k[f>>2]|0)+4>>2]&1023](f);r=b;return}function Qv(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=r;r=r+32|0;c=b+16|0;d=b+8|0;e=b;if(!(Au(a)|0)){r=b;return}cO(k[a+36>>2]|0,c,575);f=oC(k[a+16>>2]|0,k[c>>2]|0)|0;c=d+4|0;$t(a,d,c);g=Qqa(64)|0;B=0;va(491,g|0);h=B;B=0;if(h&1){h=Rb()|0;Sqa(g);Qb(h|0)}h=a+20|0;a=k[d>>2]|0;nd[k[(k[g>>2]|0)+32>>2]&1023](g,738,a);nd[k[(k[f>>2]|0)+48>>2]&1023](f,e,g);Un(k[(k[h>>2]|0)+(a<<2)>>2]|0,0,+p[e>>3]);a=k[c>>2]|0;nd[k[(k[g>>2]|0)+32>>2]&1023](g,738,a);nd[k[(k[f>>2]|0)+48>>2]&1023](f,e,g);Un(k[(k[h>>2]|0)+(a<<2)>>2]|0,0,+p[e>>3]);Ec[k[(k[g>>2]|0)+4>>2]&1023](g);r=b;return}function Rv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=a+24|0;a=c+4|0;f=b+((Co(k[k[e>>2]>>2]|0)|0)<<3)|0;if(+p[f>>3]!=0.0){f=Co(k[k[e>>2]>>2]|0)|0;if(k[c>>2]|0){g=k[k[a>>2]>>2]|0;Jc[k[(k[g>>2]|0)+20>>2]&1](g,f,-1.0,0)}f=d+((Co(k[k[e>>2]>>2]|0)|0)<<3)|0;if(+p[f>>3]>=0.0)h=1;else h=0}else h=0;f=b+((Co(k[(k[e>>2]|0)+4>>2]|0)|0)<<3)|0;if(+p[f>>3]!=0.0){f=Co(k[(k[e>>2]|0)+4>>2]|0)|0;if(k[c>>2]|0){g=k[k[a>>2]>>2]|0;Jc[k[(k[g>>2]|0)+20>>2]&1](g,f,-1.0,0)}f=d+((Co(k[(k[e>>2]|0)+4>>2]|0)|0)<<3)|0;if(+p[f>>3]>=0.0)i=h+1|0;else i=h}else i=h;h=b+((Co(k[(k[e>>2]|0)+8>>2]|0)|0)<<3)|0;if(!(+p[h>>3]!=0.0)){j=i;return j|0}h=Co(k[(k[e>>2]|0)+8>>2]|0)|0;if(k[c>>2]|0){c=k[k[a>>2]>>2]|0;Jc[k[(k[c>>2]|0)+20>>2]&1](c,h,-1.0,0)}h=d+((Co(k[(k[e>>2]|0)+8>>2]|0)|0)<<3)|0;if(!(+p[h>>3]>=0.0)){j=i;return j|0}j=i+1|0;return j|0}function Sv(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;pw(a,b,c,d,e,738);return}function Tv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;sw(a,b,c,d,738);return}function Uv(a){a=a|0;return Dw(a,k[a+44>>2]|0)|0}function Vv(a,b){a=a|0;b=b|0;return Ao(k[(k[a+24>>2]|0)+(b<<2)>>2]|0)|0}function Wv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0.0,t=0.0,u=0.0,v=0,w=0.0,x=0;e=r;r=r+48|0;f=e+44|0;g=e+24|0;h=e+40|0;i=e;k[h>>2]=0;gu(a,h,f,g,d,0.0);j=k[f>>2]|0;if((j|0)>0)l=Rqa(48)|0;else l=0;if((j+-1|0)>>>0>=2){if((j|0)==3){xp(a,i,d);d=k[h>>2]|0;a=k[d>>2]|0;if(+p[i+(a<<3)>>3]==0.0){f=c+(a*3<<3)|0;k[l>>2]=k[f>>2];k[l+4>>2]=k[f+4>>2];k[l+8>>2]=k[f+8>>2];k[l+12>>2]=k[f+12>>2];k[l+16>>2]=k[f+16>>2];k[l+20>>2]=k[f+20>>2];m=1}else m=0;f=k[d+4>>2]|0;if(+p[i+(f<<3)>>3]==0.0){a=l+((0-m&3)<<3)|0;n=c+(f*3<<3)|0;k[a>>2]=k[n>>2];k[a+4>>2]=k[n+4>>2];k[a+8>>2]=k[n+8>>2];k[a+12>>2]=k[n+12>>2];k[a+16>>2]=k[n+16>>2];k[a+20>>2]=k[n+20>>2];if((m|0)!=1){o=1;q=19}}else{o=m;q=19}if((q|0)==19?(q=k[d+8>>2]|0,+p[i+(q<<3)>>3]==0.0):0){i=l+(o*3<<3)|0;o=c+(q*3<<3)|0;k[i>>2]=k[o>>2];k[i+4>>2]=k[o+4>>2];k[i+8>>2]=k[o+8>>2];k[i+12>>2]=k[o+12>>2];k[i+16>>2]=k[o+16>>2];k[i+20>>2]=k[o+20>>2]}}}else{o=k[h>>2]|0;i=(j|0)<3;q=0;d=0;while(1){if(i){m=(k[o+(d<<2)>>2]|0)*3|0;n=q+3|0;s=+p[c+(m<<3)>>3];t=+p[c+(m+1<<3)>>3];u=+p[c+(m+2<<3)>>3];m=q;a=j;while(1){f=(k[o+(a<<2)>>2]|0)*3|0;v=m*3|0;w=+p[g+(m<<3)>>3];p[l+(v<<3)>>3]=s+w*(+p[c+(f<<3)>>3]-s);p[l+(v+1<<3)>>3]=t+w*(+p[c+(f+1<<3)>>3]-t);p[l+(v+2<<3)>>3]=u+w*(+p[c+(f+2<<3)>>3]-u);a=a+1|0;if((a|0)==3)break;else m=m+1|0}x=n-j|0}else x=q;d=d+1|0;if((d|0)>=(j|0))break;else q=x}}x=k[h>>2]|0;if(!x){k[b>>2]=l;r=e;return}Tqa(x);k[b>>2]=l;r=e;return}function Xv(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0.0,Ga=0.0,Ha=0.0,Ja=0.0,Ka=0.0,La=0.0,Ma=0.0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0;f=r;r=r+864|0;g=f+240|0;h=f+856|0;i=f+168|0;j=f+852|0;l=f+848|0;m=f+160|0;n=f+844|0;o=f+840|0;q=f+152|0;s=f+144|0;t=f+136|0;u=f+128|0;v=f+120|0;w=f;x=f+680|0;y=f+828|0;z=f+816|0;A=f+664|0;C=f+528|0;D=f+512|0;E=f+360|0;F=f+348|0;G=f+376|0;H=f+336|0;I=f+324|0;J=f+312|0;k[j>>2]=0;k[l>>2]=0;k[o>>2]=0;K=a+36|0;cO(k[K>>2]|0,h,285);dO(k[K>>2]|0,t,67);cO(k[K>>2]|0,o,733);dO(k[K>>2]|0,m,767);K=a+32|0;L=+WJ(k[K>>2]|0,272);M=+WJ(k[K>>2]|0,273);N=+WJ(k[K>>2]|0,274);O=+WJ(k[K>>2]|0,275);P=+WJ(k[K>>2]|0,265);K=a+16|0;R=oC(k[K>>2]|0,353)|0;if(!R){S=x+56|0;T=x+4|0;k[x>>2]=27524;k[S>>2]=27544;B=0;wa(508,x+56|0,T|0);U=B;B=0;if(U&1){U=Rb()|0;V=Q;W=U;vva(S);Qb(W|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[S>>2]=27488;B=0;va(448,T|0);U=B;B=0;do if(U&1){X=Rb()|0;Y=Q;Z=X}else{k[T>>2]=27560;X=x+36|0;k[X>>2]=0;k[X+4>>2]=0;k[X+8>>2]=0;k[X+12>>2]=0;k[x+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,T|0,g|0);_=B;B=0;if(_&1){_=Rb()|0;$=Q;Yua(g);Yua(X);Ava(T);Y=$;Z=_;break}Yua(g);B=0;_=Ia(40,x|0,72616,49)|0;$=B;B=0;a:do if(!($&1)?(B=0,Xa(239,_|0,0)|0,ba=B,B=0,!(ba&1)):0){ba=Ab(20)|0;B=0;eb(502,y|0,71825,72);ca=B;B=0;do if(!(ca&1)){B=0;eb(502,z|0,75023,13);da=B;B=0;if(da&1){da=Rb()|0;ea=Q;Yua(y);fa=ea;ga=da;break}B=0;wa(510,A|0,T|0);da=B;B=0;if(da&1){da=Rb()|0;ha=da;ia=Q;ja=1}else{B=0;ua(163,ba|0,y|0,z|0,3475,A|0);da=B;B=0;if(da&1)ka=1;else{B=0;eb(503,ba|0,1240,229);B=0;ka=0}da=Rb()|0;ea=Q;Yua(A);ha=da;ia=ea;ja=ka}Yua(z);Yua(y);if(ja){fa=ia;ga=ha}else{la=ia;ma=ha;break a}}else{ea=Rb()|0;fa=Q;ga=ea}while(0);zb(ba|0);la=fa;ma=ga}else na=17;while(0);if((na|0)==17){_=Rb()|0;la=Q;ma=_}k[x>>2]=27468;k[S>>2]=27488;k[T>>2]=27560;Yua(X);Ava(T);vva(S);oa=la;pa=ma;Qb(pa|0)}while(0);V=Y;W=Z;vva(S);Qb(W|0)}jd[k[(k[R>>2]|0)+76>>2]&31](R,j,l,n,+p[m>>3]);R=oC(k[K>>2]|0,351)|0;if(!R){W=C+56|0;S=C+4|0;k[C>>2]=27524;k[W>>2]=27544;B=0;wa(508,C+56|0,S|0);Z=B;B=0;if(Z&1){Z=Rb()|0;qa=Q;ra=Z;vva(W);Qb(ra|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[W>>2]=27488;B=0;va(448,S|0);Z=B;B=0;do if(Z&1){Y=Rb()|0;sa=Q;ta=Y}else{k[S>>2]=27560;Y=C+36|0;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;k[C+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,S|0,g|0);V=B;B=0;if(V&1){V=Rb()|0;ma=Q;Yua(g);Yua(Y);Ava(S);sa=ma;ta=V;break}Yua(g);B=0;V=Ia(40,C|0,72666,56)|0;ma=B;B=0;b:do if(!(ma&1)?(B=0,Xa(239,V|0,0)|0,la=B,B=0,!(la&1)):0){la=Ab(20)|0;B=0;eb(502,D|0,71825,72);T=B;B=0;do if(!(T&1)){B=0;eb(502,E|0,75023,13);x=B;B=0;if(x&1){x=Rb()|0;ga=Q;Yua(D);xa=x;ya=ga;break}B=0;wa(510,F|0,S|0);ga=B;B=0;if(ga&1){ga=Rb()|0;za=1;Aa=Q;Ba=ga}else{B=0;ua(163,la|0,D|0,E|0,3480,F|0);ga=B;B=0;if(ga&1)Ca=1;else{B=0;eb(503,la|0,1240,229);B=0;Ca=0}ga=Rb()|0;x=Q;Yua(F);za=Ca;Aa=x;Ba=ga}Yua(E);Yua(D);if(za){xa=Ba;ya=Aa}else{Da=Aa;Ea=Ba;break b}}else{ga=Rb()|0;xa=ga;ya=Q}while(0);zb(la|0);Da=ya;Ea=xa}else na=41;while(0);if((na|0)==41){V=Rb()|0;Da=Q;Ea=V}k[C>>2]=27468;k[W>>2]=27488;k[S>>2]=27560;Yua(Y);Ava(S);vva(W);oa=Da;pa=Ea;Qb(pa|0)}while(0);qa=sa;ra=ta;vva(W);Qb(ra|0)}Fc[k[(k[R>>2]|0)+64>>2]&1023](R,q);R=oC(k[K>>2]|0,352)|0;if(R){Fc[k[(k[R>>2]|0)+64>>2]&1023](R,s);R=a+24|0;Ko(g,k[R>>2]|0,3,0);Fa=+p[g>>3];Ga=+p[g+8>>3];Ha=+p[g+24>>3];Ja=+p[g+32>>3];Ka=+p[g+48>>3];La=+p[g+56>>3];Ma=+aa(+((Ga*Ka+(Fa*Ja+(Ha*La-Ja*Ka)-Ga*Ha)-Fa*La)*.5/3.141592653589793));Ko(i,k[R>>2]|0,3,0);La=(+p[i>>3]+ +p[i+24>>3]+ +p[i+48>>3])/3.0;Fa=(+p[i+8>>3]+ +p[i+32>>3]+ +p[i+56>>3])/3.0;p[w+8>>3]=Ma;i=k[j>>2]|0;k[w+16>>2]=i;k[w+20>>2]=k[l>>2];k[w+24>>2]=k[n>>2];p[w+32>>3]=+p[m>>3];p[w+40>>3]=L;p[w+48>>3]=M;p[w+56>>3]=N;p[w+64>>3]=+p[q>>3];p[w+72>>3]=O;p[w+80>>3]=+p[s>>3];p[w+96>>3]=P;k[w+112>>2]=k[a+8>>2];k[w+88>>2]=k[o>>2];p[w+104>>3]=+p[t>>3];t=i;if((k[h>>2]|0)>0){i=c+4|0;o=b+4|0;a=0;do{P=+p[d+(a<<3)>>3]-La;O=+p[e+(a<<3)>>3]-Fa;N=+aa(+(P*P+O*O));p[w>>3]=N;Via(u,v,w);if(k[b>>2]|0){s=k[k[o>>2]>>2]|0;Jc[k[(k[s>>2]|0)+20>>2]&1](s,a,+p[u>>3],1)}if(k[c>>2]|0){s=k[k[i>>2]>>2]|0;Jc[k[(k[s>>2]|0)+20>>2]&1](s,a,+p[v>>3],1)}a=a+1|0}while((a|0)<(k[h>>2]|0));Na=k[j>>2]|0}else Na=t;if(Na)Tqa(Na);k[j>>2]=0;j=k[l>>2]|0;if(!j){r=f;return}Tqa(j);r=f;return}f=G+56|0;j=G+4|0;k[G>>2]=27524;k[f>>2]=27544;B=0;wa(508,G+56|0,j|0);l=B;B=0;if(l&1){l=Rb()|0;Oa=Q;Pa=l;vva(f);Qb(Pa|0)}k[G+128>>2]=0;k[G+132>>2]=-1;k[G>>2]=27468;k[f>>2]=27488;B=0;va(448,j|0);l=B;B=0;do if(l&1){Na=Rb()|0;Qa=Q;Ra=Na}else{k[j>>2]=27560;Na=G+36|0;k[Na>>2]=0;k[Na+4>>2]=0;k[Na+8>>2]=0;k[Na+12>>2]=0;k[G+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,j|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;h=Q;Yua(g);Yua(Na);Ava(j);Qa=h;Ra=t;break}Yua(g);B=0;t=Ia(40,G|0,72723,61)|0;h=B;B=0;c:do if(!(h&1)?(B=0,Xa(239,t|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,H|0,71825,72);v=B;B=0;do if(!(v&1)){B=0;eb(502,I|0,75023,13);i=B;B=0;if(i&1){i=Rb()|0;c=Q;Yua(H);Sa=i;Ta=c;break}B=0;wa(510,J|0,j|0);c=B;B=0;if(c&1){c=Rb()|0;Ua=1;Va=Q;Wa=c}else{B=0;ua(163,a|0,H|0,I|0,3485,J|0);c=B;B=0;if(c&1)Ya=1;else{B=0;eb(503,a|0,1240,229);B=0;Ya=0}c=Rb()|0;i=Q;Yua(J);Ua=Ya;Va=i;Wa=c}Yua(I);Yua(H);if(Ua){Sa=Wa;Ta=Va}else{Za=Va;_a=Wa;break c}}else{c=Rb()|0;Sa=c;Ta=Q}while(0);zb(a|0);Za=Ta;_a=Sa}else na=65;while(0);if((na|0)==65){t=Rb()|0;Za=Q;_a=t}k[G>>2]=27468;k[f>>2]=27488;k[j>>2]=27560;Yua(Na);Ava(j);vva(f);oa=Za;pa=_a;Qb(pa|0)}while(0);Oa=Qa;Pa=Ra;vva(f);Qb(Pa|0)}function Yv(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;var j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,ba=0.0,ea=0.0,fa=0.0,ha=0.0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0;f=r;r=r+288|0;j=f+268|0;l=f+264|0;m=f+8|0;n=f;o=f+260|0;q=f+256|0;s=f+281|0;t=f+280|0;u=f+120|0;v=f+104|0;w=f+92|0;x=f+80|0;k[o>>2]=0;i[s>>0]=1;i[t>>0]=1;y=a+16|0;if(!(+pC(k[y>>2]|0,206)<0.0)){z=0.0;p[c>>3]=z;r=f;return}A=a+32|0;C=+WJ(k[A>>2]|0,265);D=+WJ(k[A>>2]|0,267);E=+WJ(k[A>>2]|0,276);A=a+36|0;bO(k[A>>2]|0,s,1009);bO(k[A>>2]|0,t,1010);if(i[t>>0]|0)aV(nO(k[A>>2]|0,1012)|0,o,q);cO(k[A>>2]|0,l,285);Ko(m,k[a+24>>2]|0,3,1);F=90.0-+p[m>>3];p[m>>3]=F;A=m+8|0;G=+p[A>>3];if(G<0.0){H=G+180.0+180.0;p[A>>3]=H;I=H}else I=G;G=I>-20.0?I:-20.0;H=I<400.0?I:400.0;J=m+24|0;K=90.0-+p[J>>3];p[J>>3]=K;J=m+32|0;L=+p[J>>3];if(L<0.0){M=L+180.0+180.0;p[J>>3]=M;N=M}else N=L;L=N>G?N:G;G=N<H?N:H;O=m+48|0;H=90.0-+p[O>>3];p[O>>3]=H;O=m+56|0;M=+p[O>>3];if(M<0.0){P=M+180.0+180.0;p[O>>3]=P;R=P}else R=M;if((R>L?R:L)>180.0?(R<G?R:G)==0.0:0){if(I==0.0){p[A>>3]=360.0;S=360.0}else S=I;if(N==0.0){p[J>>3]=360.0;T=360.0}else T=N;if(R==0.0){p[O>>3]=360.0;U=S;V=T;W=360.0}else{U=S;V=T;W=R}}else{U=I;V=N;W=R}if(F==0.0){R=(V+W)*.5;p[A>>3]=R;X=R}else X=U;if(K==0.0){U=(X+W)*.5;p[J>>3]=U;Y=U}else Y=V;if(H==0.0){V=(X+Y)*.5;p[O>>3]=V;Z=V}else Z=W;if(F==180.0){W=(Y+Z)*.5;p[A>>3]=W;_=W}else _=X;if(K==180.0){X=(_+Z)*.5;p[J>>3]=X;ba=X}else ba=Y;Y=_+ba;if(H==180.0){ba=Y*.5;p[O>>3]=ba;ea=ba}else ea=Z;Z=(Y+ea)/3.0;ea=(90.0-(F+K+H)/3.0)/180.0*3.141592653589793;H=(Z>180.0?Z+-180.0+-180.0:Z)/180.0*3.141592653589793;Z=+Zc[k[(k[a>>2]|0)+544>>2]&255](a);a=oC(k[y>>2]|0,1001)|0;if(a){Fc[k[(k[a>>2]|0)+64>>2]&1023](a,n);K=+p[n>>3];F=C*Z*K/(D*g)+0.0;n=i[t>>0]|0;t=i[s>>0]|0;if(!((t|n)<<24>>24)){z=F;p[c>>3]=z;r=f;return}s=k[l>>2]|0;l=Rqa(s>>>0>1073741823?-1:s<<2)|0;a=Rqa(s>>>0>536870911?-1:s<<3)|0;if((s|0)>0){g=+ca(+ea);y=n<<24>>24==0;D=+((k[q>>2]|0)+-1|0);q=k[o>>2]|0;Y=C*3.0/E*Z/h*K;if(!(t<<24>>24)){t=0;do{k[l+(t<<2)>>2]=t;K=+p[d+(t<<3)>>3]/180.0*3.141592653589793;h=+da(+(+$(+(K-ea))*.5));Z=+da(+(+$(+(+p[e+(t<<3)>>3]/180.0*3.141592653589793-H))*.5));if(y)fa=0.0;else{o=q+(~~(+ga(+(+aa(+(h*h+ +ca(+K)*g*(Z*Z)))))*2.0/3.141592653589793*D)<<3)|0;fa=+p[o>>3]+0.0}p[a+(t<<3)>>3]=(fa+0.0)*Y;t=t+1|0}while((t|0)<(s|0))}else{t=0;do{k[l+(t<<2)>>2]=t;fa=+p[d+(t<<3)>>3]/180.0*3.141592653589793;Z=+da(+(+$(+(fa-ea))*.5));K=+da(+(+$(+(+p[e+(t<<3)>>3]/180.0*3.141592653589793-H))*.5));h=+ga(+(+aa(+(Z*Z+ +ca(+fa)*g*(K*K)))))*2.0;K=.5/+da(+(h*.5));if(y)ha=0.0;else ha=+p[q+(~~(h/3.141592653589793*D)<<3)>>3]+0.0;p[a+(t<<3)>>3]=(K+ha)*Y;t=t+1|0}while((t|0)<(s|0))}}if(k[b>>2]|0){t=k[k[b+4>>2]>>2]|0;Dc[k[(k[t>>2]|0)+16>>2]&255](t,s,l,a,1)}Tqa(a);Tqa(l);z=F;p[c>>3]=z;r=f;return}f=u+56|0;c=u+4|0;k[u>>2]=27524;k[f>>2]=27544;B=0;wa(508,u+56|0,c|0);l=B;B=0;if(l&1){l=Rb()|0;ia=Q;ja=l;vva(f);Qb(ja|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[f>>2]=27488;B=0;va(448,c|0);l=B;B=0;do if(l&1){a=Rb()|0;ka=Q;la=a}else{k[c>>2]=27560;a=u+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[u+52>>2]=16;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;B=0;wa(509,c|0,j|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(j);Yua(a);Ava(c);ka=t;la=s;break}Yua(j);B=0;s=Ia(40,u|0,72785,55)|0;t=B;B=0;if(!(t&1)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,v|0,71825,72);t=B;B=0;do if(t&1){b=Rb()|0;ma=Q;na=b}else{B=0;eb(502,w|0,75190,20);b=B;B=0;if(b&1){b=Rb()|0;q=Q;Yua(v);ma=q;na=b;break}B=0;wa(510,x|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;oa=Q;pa=b;qa=1}else{B=0;ua(163,s|0,v|0,w|0,3638,x|0);b=B;B=0;if(b&1)ra=1;else{B=0;eb(503,s|0,1240,229);B=0;ra=0}b=Rb()|0;q=Q;Yua(x);oa=q;pa=b;qa=ra}Yua(w);Yua(v);if(qa){ma=oa;na=pa;break}else{sa=oa;ta=pa}k[u>>2]=27468;k[f>>2]=27488;k[c>>2]=27560;Yua(a);Ava(c);vva(f);Qb(ta|0)}while(0);zb(s|0);sa=ma;ta=na;k[u>>2]=27468;k[f>>2]=27488;k[c>>2]=27560;Yua(a);Ava(c);vva(f);Qb(ta|0)}t=Rb()|0;sa=Q;ta=t;k[u>>2]=27468;k[f>>2]=27488;k[c>>2]=27560;Yua(a);Ava(c);vva(f);Qb(ta|0)}while(0);ia=ka;ja=la;vva(f);Qb(ja|0)}function Zv(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;var j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0.0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0,U=0,V=0,W=0;f=r;r=r+96|0;j=f+80|0;l=f;m=f+76|0;n=f+72|0;o=f+85|0;q=f+84|0;k[m>>2]=0;i[o>>0]=1;i[q>>0]=1;if(!(aq(a)|0)){r=f;return}s=a+36|0;bO(k[s>>2]|0,o,1009);bO(k[s>>2]|0,q,1010);if(!((i[q>>0]|i[o>>0])<<24>>24)){r=f;return}t=a+32|0;g=+WJ(k[t>>2]|0,267);u=+WJ(k[t>>2]|0,276);cO(k[s>>2]|0,j,285);t=a+24|0;v=c+((Bo(k[k[t>>2]>>2]|0)|0)<<3)|0;w=+p[v>>3]/3.0+0.0;v=c+((Bo(k[(k[t>>2]|0)+4>>2]|0)|0)<<3)|0;x=w+ +p[v>>3]/3.0;v=c+((Bo(k[(k[t>>2]|0)+8>>2]|0)|0)<<3)|0;w=x+ +p[v>>3]/3.0;x=+Zc[k[(k[a>>2]|0)+544>>2]&255](a);Ko(l,k[t>>2]|0,3,1);y=90.0-+p[l>>3];p[l>>3]=y;t=l+8|0;z=+p[t>>3];if(z<0.0){A=z+180.0+180.0;p[t>>3]=A;B=A}else B=z;z=B>-20.0?B:-20.0;A=B<400.0?B:400.0;a=l+24|0;C=90.0-+p[a>>3];p[a>>3]=C;a=l+32|0;D=+p[a>>3];if(D<0.0){E=D+180.0+180.0;p[a>>3]=E;F=E}else F=D;D=F>z?F:z;z=F<A?F:A;v=l+48|0;A=90.0-+p[v>>3];p[v>>3]=A;v=l+56|0;E=+p[v>>3];if(E<0.0){G=E+180.0+180.0;p[v>>3]=G;H=G}else H=E;if((H>D?H:D)>180.0?(H<z?H:z)==0.0:0){if(B==0.0){p[t>>3]=360.0;I=360.0}else I=B;if(F==0.0){p[a>>3]=360.0;J=360.0}else J=F;if(H==0.0){p[v>>3]=360.0;K=I;L=J;M=360.0}else{K=I;L=J;M=H}}else{K=B;L=F;M=H}if(y==0.0){H=(L+M)*.5;p[t>>3]=H;N=H}else N=K;if(C==0.0){K=(N+M)*.5;p[a>>3]=K;O=K}else O=L;if(A==0.0){L=(N+O)*.5;p[v>>3]=L;P=L}else P=M;if(y==180.0){M=(O+P)*.5;p[t>>3]=M;Q=M}else Q=N;if(C==180.0){N=(Q+P)*.5;p[a>>3]=N;R=N}else R=O;O=Q+R;if(A==180.0){R=O*.5;p[v>>3]=R;S=R}else S=P;P=(O+S)/3.0;S=(90.0-(y+C+A)/3.0)/180.0*3.141592653589793;A=(P>180.0?P+-180.0+-180.0:P)/180.0*3.141592653589793;if(i[q>>0]|0){aV(nO(k[s>>2]|0,1012)|0,m,n);s=k[j>>2]|0;v=Rqa(s>>>0>536870911?-1:s<<3)|0;if(!s)T=v;else{WEa(v|0,0,s<<3|0)|0;T=v}}else T=0;v=i[o>>0]|0;s=v<<24>>24==0;a=k[j>>2]|0;if(!s){j=Rqa(a>>>0>536870911?-1:a<<3)|0;if(!a){U=0;V=j}else{WEa(j|0,0,a<<3|0)|0;U=a;V=j}}else{U=a;V=0}a=Rqa(U>>>0>1073741823?-1:U<<2)|0;j=Rqa(U>>>0>536870911?-1:U<<3)|0;a:do if((U|0)!=0?(WEa(j|0,0,U<<3|0)|0,(U|0)>0):0){t=i[q>>0]|0;l=t<<24>>24==0;P=w*(g*3.0/u*x/h);C=+((k[n>>2]|0)+-1|0);c=k[m>>2]|0;if(!((v|t)<<24>>24)){t=0;while(1){k[a+(t<<2)>>2]=t;if(!s){W=j+(t<<3)|0;p[W>>3]=+p[W>>3]+P*+p[V+(t<<3)>>3]}if(!l){W=j+(t<<3)|0;p[W>>3]=+p[W>>3]+P*+p[T+(t<<3)>>3]}t=t+1|0;if((t|0)>=(U|0))break a}}y=+ca(+S);t=0;do{k[a+(t<<2)>>2]=t;O=+p[d+(t<<3)>>3]/180.0*3.141592653589793;R=+da(+(+$(+(O-S))*.5));Q=+da(+(+$(+(+p[e+(t<<3)>>3]/180.0*3.141592653589793-A))*.5));N=+ga(+(+aa(+(R*R+ +ca(+O)*y*(Q*Q)))))*2.0;if(!s){Q=.5/+da(+(N*.5));p[V+(t<<3)>>3]=Q}if(!l){W=T+(t<<3)|0;p[W>>3]=+p[c+(~~(N/3.141592653589793*C)<<3)>>3]+ +p[W>>3]}if(!s){W=j+(t<<3)|0;p[W>>3]=+p[W>>3]+P*+p[V+(t<<3)>>3]}if(!l){W=j+(t<<3)|0;p[W>>3]=+p[W>>3]+P*+p[T+(t<<3)>>3]}t=t+1|0}while((t|0)<(U|0))}while(0);if(k[b>>2]|0){s=k[k[b+4>>2]>>2]|0;Dc[k[(k[s>>2]|0)+16>>2]&255](s,U,a,j,1)}Tqa(j);Tqa(a);if(!((T|0)==0|(i[q>>0]|0)==0))Tqa(T);if((V|0)==0|(i[o>>0]|0)==0){r=f;return}Tqa(V);r=f;return}function _v(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0,f=0.0,g=0.0;if(!(aq(a)|0)){c=0.0;return +c}d=+Zc[k[(k[a>>2]|0)+544>>2]&255](a);e=a+24|0;a=b+((Bo(k[k[e>>2]>>2]|0)|0)<<3)|0;f=+p[a>>3]/3.0+0.0;a=b+((Bo(k[(k[e>>2]|0)+4>>2]|0)|0)<<3)|0;g=f+ +p[a>>3]/3.0;a=b+((Bo(k[(k[e>>2]|0)+8>>2]|0)|0)<<3)|0;c=d*(g+ +p[a>>3]/3.0);return +c}function $v(a){a=a|0;var b=0.0;if(!(aq(a)|0)){b=0.0;return +b}b=+Zc[k[(k[a>>2]|0)+544>>2]&255](a);return +b}function aw(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,72850,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73890,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,76,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function bw(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,72850,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73799,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,87,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function cw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,72850,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74656,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,99,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function dw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,72850,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74747,38);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,166,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function ew(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,72850,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73737,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,169,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function fw(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,72850,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73723,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,172,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return +(0.0)}function gw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,72850,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73710,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,179,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0);return 0}function hw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,72850,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73680,29);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,184,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function iw(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,72850,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73562,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,195,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function jw(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;a=r;r=r+192|0;g=a+176|0;h=a+40|0;i=a+24|0;j=a+12|0;l=a;a=h+56|0;m=h+4|0;k[h>>2]=27524;k[a>>2]=27544;B=0;wa(508,h+56|0,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(a);Qb(p|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[a>>2]=27488;B=0;va(448,m|0);n=B;B=0;do if(n&1){q=Rb()|0;s=Q;t=q}else{k[m>>2]=27560;q=h+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[h+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,m|0,g|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(g);Yua(q);Ava(m);s=v;t=u;break}Yua(g);B=0;u=Ia(40,h|0,149721,19)|0;v=B;B=0;a:do if(!(v&1)?(B=0,Xa(239,u|0,0)|0,w=B,B=0,!(w&1)):0){w=Ab(20)|0;B=0;eb(502,i|0,72850,84);x=B;B=0;do if(!(x&1)){B=0;eb(502,j|0,73539,22);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(i);A=z;C=y;break}B=0;wa(510,l|0,m|0);y=B;B=0;if(y&1){y=Rb()|0;D=Q;E=y;F=1}else{B=0;ua(163,w|0,i|0,j|0,197,l|0);y=B;B=0;if(y&1)G=1;else{B=0;eb(503,w|0,1240,229);B=0;G=0}y=Rb()|0;z=Q;Yua(l);D=z;E=y;F=G}Yua(j);Yua(i);if(F){A=D;C=E}else{H=D;I=E;break a}}else{y=Rb()|0;A=Q;C=y}while(0);zb(w|0);H=A;I=C}else J=16;while(0);if((J|0)==16){u=Rb()|0;H=Q;I=u}k[h>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(a);Qb(I|0)}while(0);o=s;p=t;vva(a);Qb(p|0);return +(0.0)}function kw(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,72850,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,92779,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,127,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function lw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,72850,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73369,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,140,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function mw(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;g=r;r=r+192|0;f=g+176|0;e=g+40|0;d=g+24|0;c=g+12|0;b=g;g=e+56|0;a=e+4|0;k[e>>2]=27524;k[g>>2]=27544;B=0;wa(508,e+56|0,a|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(g);Qb(j|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[g>>2]=27488;B=0;va(448,a|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[a>>2]=27560;l=e+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[e+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,a|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(f);Yua(l);Ava(a);m=p;n=o;break}Yua(f);B=0;o=Ia(40,e|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,72850,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,c|0,99724,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,b|0,a|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,c|0,200,b|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(b);x=u;y=t;z=A}Yua(c);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[e>>2]=27468;k[g>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(g);Qb(D|0)}while(0);i=m;j=n;vva(g);Qb(j|0)}function nw(a){a=a|0;return}function ow(a){a=a|0;return}function pw(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;g=r;r=r+112|0;h=g;i=qw(0,f)|0;rw(a,h,d,e,f);f=(i|0)>0;if(f){j=0.0;e=0;while(1){k=j+ +p[h+(e<<3)>>3]*+p[c+(e<<3)>>3];e=e+1|0;if((e|0)==(i|0)){l=k;break}else j=k}if(f){j=0.0;f=0;while(1){k=j+ +p[h+(f+i<<3)>>3]*+p[c+(f<<3)>>3];f=f+1|0;if((f|0)==(i|0)){m=l;n=k;break}else j=k}}else{m=l;n=0.0}}else{m=0.0;n=0.0}p[b>>3]=m;p[b+8>>3]=n;r=g;return}function qw(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;do switch(b|0){case 736:{h=1;r=a;return h|0}case 738:{h=3;r=a;return h|0}case 739:{h=3;r=a;return h|0}case 740:{h=4;r=a;return h|0}case 741:{h=4;r=a;return h|0}case 742:{h=6;r=a;return h|0}case 743:{h=7;r=a;return h|0}case 744:{h=7;r=a;return h|0}case 749:{h=6;r=a;return h|0}case 750:{h=6;r=a;return h|0}case 752:{h=7;r=a;return h|0}case 751:{h=7;r=a;return h|0}case 753:{h=9;r=a;return h|0}case 754:{h=6;r=a;return h|0}case 755:{h=9;r=a;return h|0}case 757:{h=10;r=a;return h|0}case 758:{h=7;r=a;return h|0}case 921:{h=0;r=a;return h|0}default:{i=d+56|0;j=d+4|0;k[d>>2]=27524;k[i>>2]=27544;B=0;wa(508,d+56|0,j|0);l=B;B=0;if(l&1){l=Rb()|0;m=Q;n=l;vva(i);Qb(n|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[i>>2]=27488;B=0;va(448,j|0);l=B;B=0;do if(l&1){o=Rb()|0;p=Q;q=o}else{k[j>>2]=27560;o=d+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,j|0,c|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(c);Yua(o);Ava(j);p=t;q=s;break}Yua(c);B=0;s=Ia(40,d|0,132447,13)|0;t=B;B=0;if((((!(t&1)?(B=0,t=ya(427,b|0)|0,u=B,B=0,!(u&1)):0)?(u=Lta(t)|0,B=0,v=Ia(40,s|0,t|0,u|0)|0,u=B,B=0,!(u&1)):0)?(B=0,u=Ia(40,v|0,146481,18)|0,v=B,B=0,!(v&1)):0)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,e|0,72935,75);v=B;B=0;do if(!(v&1)){B=0;eb(502,f|0,75442,13);t=B;B=0;if(t&1){t=Rb()|0;s=Q;Yua(e);w=s;x=t;break}B=0;wa(510,g|0,j|0);t=B;B=0;if(t&1){t=Rb()|0;y=Q;z=t;A=1}else{B=0;ua(163,u|0,e|0,f|0,489,g|0);t=B;B=0;if(t&1)C=1;else{B=0;eb(503,u|0,1240,229);B=0;C=0}t=Rb()|0;s=Q;Yua(g);y=s;z=t;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;k[d>>2]=27468;k[i>>2]=27488;k[j>>2]=27560;Yua(o);Ava(j);vva(i);Qb(E|0)}}else{t=Rb()|0;w=Q;x=t}while(0);zb(u|0);D=w;E=x;k[d>>2]=27468;k[i>>2]=27488;k[j>>2]=27560;Yua(o);Ava(j);vva(i);Qb(E|0)}v=Rb()|0;D=Q;E=v;k[d>>2]=27468;k[i>>2]=27488;k[j>>2]=27560;Yua(o);Ava(j);vva(i);Qb(E|0)}while(0);m=p;n=q;vva(i);Qb(n|0)}}while(0);return 0}function rw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;a=r;r=r+176|0;f=a+144|0;g=a+112|0;h=a;i=qw(0,e)|0;vw(0,h,d,e);j=+p[c>>3];k=+p[c+8>>3];l=+p[c+24>>3];m=+p[c+32>>3];n=+p[c+48>>3];o=+p[c+56>>3];p[f>>3]=(l-j)*.5;p[f+16>>3]=(n*2.0-j-l)*.28867513459481287;p[f+8>>3]=(m-k)*.5;p[f+24>>3]=(o*2.0-k-m)*.28867513459481287;bY(g,f);if((i|0)<=0){r=a;return}m=+p[g>>3];k=+p[g+8>>3];o=+p[g+16>>3];l=+p[g+24>>3];g=0;do{j=+p[h+(g<<3)>>3];f=g+i|0;n=+p[h+(f<<3)>>3];p[b+(g<<3)>>3]=m*j+k*n;p[b+(f<<3)>>3]=o*j+l*n;g=g+1|0}while((g|0)!=(i|0));r=a;return}function sw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0.0,j=0.0,k=0.0;a=r;r=r+64|0;f=a;g=qw(0,e)|0;tw(0,f,d,e);if((g|0)>0){h=0;i=0.0}else{j=0.0;p[b>>3]=j;r=a;return}while(1){k=i+ +p[f+(h<<3)>>3]*+p[c+(h<<3)>>3];h=h+1|0;if((h|0)==(g|0)){j=k;break}else i=k}p[b>>3]=j;r=a;return}function tw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0.0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;e=a+176|0;f=a+40|0;g=a+24|0;h=a+12|0;i=a;switch(d|0){case 736:{p[b>>3]=1.0;r=a;return}case 739:case 738:{p[b>>3]=+p[c+40>>3];p[b+8>>3]=+p[c+48>>3];p[b+16>>3]=+p[c+56>>3];r=a;return}case 741:case 740:{j=c+40|0;p[b>>3]=+p[j>>3];l=c+48|0;p[b+8>>3]=+p[l>>3];m=c+56|0;p[b+16>>3]=+p[m>>3];p[b+24>>3]=+p[j>>3]*27.0*+p[l>>3]*+p[m>>3];r=a;return}case 742:{m=c+40|0;n=+p[m>>3];p[b>>3]=n*(n*2.0+-1.0);l=c+48|0;n=+p[l>>3];p[b+8>>3]=n*(n*2.0+-1.0);j=c+56|0;n=+p[j>>3];p[b+16>>3]=n*(n*2.0+-1.0);p[b+24>>3]=+p[j>>3]*4.0*+p[l>>3];p[b+32>>3]=+p[j>>3]*4.0*+p[m>>3];p[b+40>>3]=+p[m>>3]*4.0*+p[l>>3];r=a;return}case 744:case 743:{l=c+40|0;n=+p[l>>3];p[b>>3]=n*(n*2.0+-1.0);m=c+48|0;n=+p[m>>3];p[b+8>>3]=n*(n*2.0+-1.0);j=c+56|0;n=+p[j>>3];p[b+16>>3]=n*(n*2.0+-1.0);p[b+24>>3]=+p[j>>3]*4.0*+p[m>>3];p[b+32>>3]=+p[j>>3]*4.0*+p[l>>3];p[b+40>>3]=+p[l>>3]*4.0*+p[m>>3];p[b+48>>3]=+p[l>>3]*27.0*+p[m>>3]*+p[j>>3];r=a;return}case 921:{r=a;return}default:{a=f+56|0;j=f+4|0;k[f>>2]=27524;k[a>>2]=27544;B=0;wa(508,f+56|0,j|0);m=B;B=0;if(m&1){m=Rb()|0;o=Q;q=m;vva(a);Qb(q|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[a>>2]=27488;B=0;va(448,j|0);m=B;B=0;do if(m&1){l=Rb()|0;s=Q;t=l}else{k[j>>2]=27560;l=f+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,j|0,e|0);b=B;B=0;if(b&1){b=Rb()|0;c=Q;Yua(e);Yua(l);Ava(j);s=c;t=b;break}Yua(e);B=0;b=Ia(40,f|0,132447,13)|0;c=B;B=0;if((((!(c&1)?(B=0,c=ya(427,d|0)|0,u=B,B=0,!(u&1)):0)?(u=Lta(c)|0,B=0,v=Ia(40,b|0,c|0,u|0)|0,u=B,B=0,!(u&1)):0)?(B=0,u=Ia(40,v|0,146481,18)|0,v=B,B=0,!(v&1)):0)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,g|0,72935,75);v=B;B=0;do if(!(v&1)){B=0;eb(502,h|0,75456,17);c=B;B=0;if(c&1){c=Rb()|0;b=Q;Yua(g);w=b;x=c;break}B=0;wa(510,i|0,j|0);c=B;B=0;if(c&1){c=Rb()|0;y=Q;z=c;A=1}else{B=0;ua(163,u|0,g|0,h|0,185,i|0);c=B;B=0;if(c&1)C=1;else{B=0;eb(503,u|0,1240,229);B=0;C=0}c=Rb()|0;b=Q;Yua(i);y=b;z=c;A=C}Yua(h);Yua(g);if(A){w=y;x=z}else{D=y;E=z;k[f>>2]=27468;k[a>>2]=27488;k[j>>2]=27560;Yua(l);Ava(j);vva(a);Qb(E|0)}}else{c=Rb()|0;w=Q;x=c}while(0);zb(u|0);D=w;E=x;k[f>>2]=27468;k[a>>2]=27488;k[j>>2]=27560;Yua(l);Ava(j);vva(a);Qb(E|0)}v=Rb()|0;D=Q;E=v;k[f>>2]=27468;k[a>>2]=27488;k[j>>2]=27560;Yua(l);Ava(j);vva(a);Qb(E|0)}while(0);o=s;q=t;vva(a);Qb(q|0)}}}function uw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;d=r;r=r+224|0;a=d+208|0;e=d;f=d+72|0;g=d+56|0;h=d+44|0;i=d+32|0;j=+p[c>>3];l=+p[c+8>>3];m=+p[c+24>>3];n=+p[c+32>>3];o=+p[c+48>>3];q=+p[c+56>>3];p[e>>3]=(m-j)*.5;p[e+16>>3]=(o*2.0-j-m)*.28867513459481287;p[e+8>>3]=(n-l)*.5;p[e+24>>3]=(q*2.0-l-n)*.28867513459481287;aY(b,e);if(!(+p[b>>3]<0.0)){r=d;return}d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);e=B;B=0;if(e&1){e=Rb()|0;s=Q;t=e;vva(d);Qb(t|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);e=B;B=0;do if(e&1){c=Rb()|0;u=Q;v=c}else{k[b>>2]=27560;c=f+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[f+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,b|0,a|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(a);Yua(c);Ava(b);u=x;v=w;break}Yua(a);B=0;w=Ia(40,f|0,75474,30)|0;x=B;B=0;if(!(x&1)?(B=0,Xa(239,w|0,0)|0,w=B,B=0,!(w&1)):0){w=Ab(20)|0;B=0;eb(502,g|0,72935,75);x=B;B=0;do if(!(x&1)){B=0;eb(502,h|0,75505,22);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(g);A=z;C=y;break}B=0;wa(510,i|0,b|0);y=B;B=0;if(y&1){y=Rb()|0;D=Q;E=y;F=1}else{B=0;ua(163,w|0,g|0,h|0,117,i|0);y=B;B=0;if(y&1)G=1;else{B=0;eb(503,w|0,1240,229);B=0;G=0}y=Rb()|0;z=Q;Yua(i);D=z;E=y;F=G}Yua(h);Yua(g);if(F){A=D;C=E}else{H=D;I=E;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(c);Ava(b);vva(d);Qb(I|0)}}else{y=Rb()|0;A=Q;C=y}while(0);zb(w|0);H=A;I=C;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(c);Ava(b);vva(d);Qb(I|0)}x=Rb()|0;H=Q;I=x;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(c);Ava(b);vva(d);Qb(I|0)}while(0);s=u;t=v;vva(d);Qb(t|0)}function vw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0.0,n=0,o=0.0,q=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;a=r;r=r+192|0;e=a+176|0;f=a+40|0;g=a+24|0;h=a+12|0;i=a;switch(d|0){case 736:{k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;r=a;return}case 739:case 738:{p[b>>3]=-.5;p[b+24>>3]=-.28867513459481287;p[b+8>>3]=.5;p[b+32>>3]=-.28867513459481287;p[b+16>>3]=0.0;p[b+40>>3]=.5773502691896257;r=a;return}case 741:case 740:{p[b>>3]=-.5;p[b+32>>3]=-.28867513459481287;p[b+8>>3]=.5;p[b+40>>3]=-.28867513459481287;p[b+16>>3]=0.0;p[b+48>>3]=.5773502691896257;j=c+48|0;l=c+56|0;m=+p[l>>3];n=c+40|0;p[b+24>>3]=(+p[j>>3]*-.5*m+m*(+p[n>>3]*.5))*27.0;m=+p[j>>3];o=+p[l>>3];q=+p[n>>3];p[b+56>>3]=(m*(q*.3333333333333333)+(m*-.16666666666666666*o-o*(q*.16666666666666666)))*46.76537180435968;r=a;return}case 742:{n=c+40|0;p[b>>3]=.5-+p[n>>3]*2.0;p[b+48>>3]=.28867513459481287-+p[n>>3]*1.1547005383792515;l=c+48|0;p[b+8>>3]=+p[l>>3]*2.0+-.5;p[b+56>>3]=.28867513459481287-+p[l>>3]*1.1547005383792515;p[b+16>>3]=0.0;j=c+56|0;p[b+64>>3]=+p[j>>3]*2.309401076758503+-.5773502691896257;p[b+24>>3]=+p[j>>3]*2.0;p[b+72>>3]=+p[l>>3]*2.309401076758503-+p[j>>3]*1.1547005383792515;p[b+32>>3]=+p[j>>3]*-2.0;p[b+80>>3]=+p[n>>3]*2.309401076758503-+p[j>>3]*1.1547005383792515;p[b+40>>3]=(+p[n>>3]-+p[l>>3])*2.0;p[b+88>>3]=(+p[n>>3]+ +p[l>>3])*-1.1547005383792515;r=a;return}case 744:case 743:{l=c+40|0;p[b>>3]=.5-+p[l>>3]*2.0;p[b+56>>3]=.28867513459481287-+p[l>>3]*1.1547005383792515;n=c+48|0;p[b+8>>3]=+p[n>>3]*2.0+-.5;p[b+64>>3]=.28867513459481287-+p[n>>3]*1.1547005383792515;p[b+16>>3]=0.0;j=c+56|0;p[b+72>>3]=+p[j>>3]*2.309401076758503+-.5773502691896257;p[b+24>>3]=+p[j>>3]*2.0;p[b+80>>3]=+p[n>>3]*2.309401076758503-+p[j>>3]*1.1547005383792515;p[b+32>>3]=+p[j>>3]*-2.0;p[b+88>>3]=+p[l>>3]*2.309401076758503-+p[j>>3]*1.1547005383792515;p[b+40>>3]=(+p[l>>3]-+p[n>>3])*2.0;p[b+96>>3]=(+p[l>>3]+ +p[n>>3])*-1.1547005383792515;q=+p[j>>3];p[b+48>>3]=(+p[n>>3]*-.5*q+q*(+p[l>>3]*.5))*27.0;q=+p[n>>3];o=+p[j>>3];m=+p[l>>3];p[b+104>>3]=(q*(m*.3333333333333333)+(q*-.16666666666666666*o-o*(m*.16666666666666666)))*46.76537180435968;r=a;return}default:{a=f+56|0;b=f+4|0;k[f>>2]=27524;k[a>>2]=27544;B=0;wa(508,f+56|0,b|0);l=B;B=0;if(l&1){l=Rb()|0;s=Q;t=l;vva(a);Qb(t|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[a>>2]=27488;B=0;va(448,b|0);l=B;B=0;do if(l&1){j=Rb()|0;u=Q;v=j}else{k[b>>2]=27560;j=f+36|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);n=B;B=0;if(n&1){n=Rb()|0;c=Q;Yua(e);Yua(j);Ava(b);u=c;v=n;break}Yua(e);B=0;n=Ia(40,f|0,132447,13)|0;c=B;B=0;if((((!(c&1)?(B=0,c=ya(427,d|0)|0,w=B,B=0,!(w&1)):0)?(w=Lta(c)|0,B=0,x=Ia(40,n|0,c|0,w|0)|0,w=B,B=0,!(w&1)):0)?(B=0,w=Ia(40,x|0,146481,18)|0,x=B,B=0,!(x&1)):0)?(B=0,Xa(239,w|0,0)|0,w=B,B=0,!(w&1)):0){w=Ab(20)|0;B=0;eb(502,g|0,72935,75);x=B;B=0;do if(!(x&1)){B=0;eb(502,h|0,75528,37);c=B;B=0;if(c&1){c=Rb()|0;n=Q;Yua(g);y=n;z=c;break}B=0;wa(510,i|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;A=Q;C=c;D=1}else{B=0;ua(163,w|0,g|0,h|0,301,i|0);c=B;B=0;if(c&1)E=1;else{B=0;eb(503,w|0,1240,229);B=0;E=0}c=Rb()|0;n=Q;Yua(i);A=n;C=c;D=E}Yua(h);Yua(g);if(D){y=A;z=C}else{F=A;G=C;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(j);Ava(b);vva(a);Qb(G|0)}}else{c=Rb()|0;y=Q;z=c}while(0);zb(w|0);F=y;G=z;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(j);Ava(b);vva(a);Qb(G|0)}x=Rb()|0;F=Q;G=x;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(j);Ava(b);vva(a);Qb(G|0)}while(0);s=u;t=v;vva(a);Qb(t|0)}}}function ww(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0.0,i=0.0;a=qw(0,f)|0;g=Rqa(a>>>0>536870911?-1:a<<3)|0;tw(0,g,c,f);h=+p[g+(d<<3)>>3];p[b>>3]=h;i=+p[g+(e<<3)>>3];p[b+8>>3]=i;p[b+16>>3]=-h;p[b+24>>3]=-i;Tqa(g);return}function xw(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0.0,i=0.0;a=qw(0,f)|0;g=Rqa(a>>>0>536870911?-1:a<<3)|0;tw(0,g,c,f);h=+p[g+(d<<3)>>3];p[b>>3]=h;i=+p[g+(e<<3)>>3];p[b+8>>3]=i;p[b+16>>3]=h;p[b+24>>3]=i;Tqa(g);return}function yw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0.0,j=0.0,l=0.0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;d=r;r=r+192|0;a=d+176|0;e=d+40|0;f=d+24|0;g=d+12|0;h=d;i=+p[c+24>>3]-+p[c>>3];j=+p[c+32>>3]-+p[c+8>>3];l=+aa(+(i*i+j*j))*.5;p[b>>3]=l;if(!(l<0.0)){r=d;return}d=e+56|0;b=e+4|0;k[e>>2]=27524;k[d>>2]=27544;B=0;wa(508,e+56|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;m=Q;n=c;vva(d);Qb(n|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);c=B;B=0;do if(c&1){o=Rb()|0;q=Q;s=o}else{k[b>>2]=27560;o=e+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[e+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,b|0,a|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);Yua(o);Ava(b);q=u;s=t;break}Yua(a);B=0;t=Ia(40,e|0,75474,30)|0;u=B;B=0;if(!(u&1)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,72935,75);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,75593,29);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(f);x=w;y=v;break}B=0;wa(510,h|0,b|0);v=B;B=0;if(v&1){v=Rb()|0;z=Q;A=v;C=1}else{B=0;ua(163,t|0,f|0,g|0,366,h|0);v=B;B=0;if(v&1)D=1;else{B=0;eb(503,t|0,1240,229);B=0;D=0}v=Rb()|0;w=Q;Yua(h);z=w;A=v;C=D}Yua(g);Yua(f);if(C){x=z;y=A}else{E=z;F=A;k[e>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(o);Ava(b);vva(d);Qb(F|0)}}else{v=Rb()|0;x=Q;y=v}while(0);zb(t|0);E=x;F=y;k[e>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(o);Ava(b);vva(d);Qb(F|0)}u=Rb()|0;E=Q;F=u;k[e>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(o);Ava(b);vva(d);Qb(F|0)}while(0);m=q;n=s;vva(d);Qb(n|0)}function zw(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;a=r;r=r+192|0;g=a+176|0;h=a+40|0;i=a+24|0;j=a+12|0;l=a;m=qw(0,f)|0;n=Rqa(m>>>0>536870911?-1:m<<3)|0;tw(0,n,c,f);switch(f|0){case 739:case 738:{p[b>>3]=+p[n+(d<<3)>>3];p[b+8>>3]=+p[n+(e<<3)>>3];Tqa(n);r=a;return}case 741:case 740:{p[b>>3]=+p[n+(d<<3)>>3];p[b+8>>3]=+p[n+(e<<3)>>3];Tqa(n);r=a;return}case 742:{p[b>>3]=+p[n+(d<<3)>>3];p[b+8>>3]=+p[n+(e<<3)>>3];p[b+16>>3]=+p[n+(e+2<<3)>>3];Tqa(n);r=a;return}default:{a=h+56|0;n=h+4|0;k[h>>2]=27524;k[a>>2]=27544;B=0;wa(508,h+56|0,n|0);e=B;B=0;if(e&1){e=Rb()|0;o=Q;q=e;vva(a);Qb(q|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[a>>2]=27488;B=0;va(448,n|0);e=B;B=0;do if(e&1){b=Rb()|0;s=Q;t=b}else{k[n>>2]=27560;b=h+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[h+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,n|0,g|0);d=B;B=0;if(d&1){d=Rb()|0;c=Q;Yua(g);Yua(b);Ava(n);s=c;t=d;break}Yua(g);B=0;d=Ia(40,h|0,132447,13)|0;c=B;B=0;if((((!(c&1)?(B=0,c=ya(427,f|0)|0,m=B,B=0,!(m&1)):0)?(m=Lta(c)|0,B=0,u=Ia(40,d|0,c|0,m|0)|0,m=B,B=0,!(m&1)):0)?(B=0,m=Ia(40,u|0,146481,18)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,m|0,0)|0,m=B,B=0,!(m&1)):0){m=Ab(20)|0;B=0;eb(502,i|0,72935,75);u=B;B=0;do if(!(u&1)){B=0;eb(502,j|0,73011,24);c=B;B=0;if(c&1){c=Rb()|0;d=Q;Yua(i);v=d;w=c;break}B=0;wa(510,l|0,n|0);c=B;B=0;if(c&1){c=Rb()|0;x=Q;y=c;z=1}else{B=0;ua(163,m|0,i|0,j|0,402,l|0);c=B;B=0;if(c&1)A=1;else{B=0;eb(503,m|0,1240,229);B=0;A=0}c=Rb()|0;d=Q;Yua(l);x=d;y=c;z=A}Yua(j);Yua(i);if(z){v=x;w=y}else{C=x;D=y;k[h>>2]=27468;k[a>>2]=27488;k[n>>2]=27560;Yua(b);Ava(n);vva(a);Qb(D|0)}}else{c=Rb()|0;v=Q;w=c}while(0);zb(m|0);C=v;D=w;k[h>>2]=27468;k[a>>2]=27488;k[n>>2]=27560;Yua(b);Ava(n);vva(a);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[h>>2]=27468;k[a>>2]=27488;k[n>>2]=27560;Yua(b);Ava(n);vva(a);Qb(D|0)}while(0);o=s;q=t;vva(a);Qb(q|0)}}}function Aw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0;a=r;r=r+528|0;f=a+516|0;g=a+368|0;h=a+504|0;i=a+356|0;j=a+344|0;l=a+208|0;m=a+60|0;n=a+48|0;o=a+36|0;p=a+72|0;q=a+24|0;s=a+12|0;t=a;switch(e|0){case 741:case 740:case 739:case 738:{u=Rqa(8)|0;switch(d|0){case 0:{k[u>>2]=1;k[u+4>>2]=2;v=u;w=2;k[b>>2]=w;k[c>>2]=v;r=a;return}case 1:{k[u>>2]=2;k[u+4>>2]=0;v=u;w=2;k[b>>2]=w;k[c>>2]=v;r=a;return}case 2:{k[u>>2]=0;k[u+4>>2]=1;v=u;w=2;k[b>>2]=w;k[c>>2]=v;r=a;return}default:{u=g+56|0;x=g+4|0;k[g>>2]=27524;k[u>>2]=27544;B=0;wa(508,g+56|0,x|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(u);Qb(A|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[u>>2]=27488;B=0;va(448,x|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[x>>2]=27560;C=g+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,x|0,f|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(f);Yua(C);Ava(x);D=G;E=F;break}Yua(f);B=0;F=Ia(40,g|0,73036,21)|0;G=B;B=0;a:do if(((!(G&1)?(B=0,H=Xa(242,F|0,d|0)|0,I=B,B=0,!(I&1)):0)?(B=0,I=Ia(40,H|0,73058,24)|0,H=B,B=0,!(H&1)):0)?(B=0,Xa(239,I|0,0)|0,I=B,B=0,!(I&1)):0){I=Ab(20)|0;B=0;eb(502,h|0,72935,75);H=B;B=0;do if(!(H&1)){B=0;eb(502,i|0,73083,17);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(h);L=K;M=J;break}B=0;wa(510,j|0,x|0);J=B;B=0;if(J&1){J=Rb()|0;N=J;O=Q;P=1}else{B=0;ua(163,I|0,h|0,i|0,433,j|0);J=B;B=0;if(J&1)R=1;else{B=0;eb(503,I|0,1240,229);B=0;R=0}J=Rb()|0;K=Q;Yua(j);N=J;O=K;P=R}Yua(i);Yua(h);if(P){L=O;M=N}else{S=O;T=N;break a}}else{K=Rb()|0;L=Q;M=K}while(0);zb(I|0);S=L;T=M}else U=23;while(0);if((U|0)==23){F=Rb()|0;S=Q;T=F}k[g>>2]=27468;k[u>>2]=27488;k[x>>2]=27560;Yua(C);Ava(x);vva(u);V=S;W=T;Qb(W|0)}while(0);z=D;A=E;vva(u);Qb(A|0)}}break}case 742:{A=Rqa(12)|0;switch(d|0){case 0:{k[A>>2]=1;k[A+4>>2]=2;k[A+8>>2]=3;v=A;w=3;k[b>>2]=w;k[c>>2]=v;r=a;return}case 1:{k[A>>2]=2;k[A+4>>2]=0;k[A+8>>2]=4;v=A;w=3;k[b>>2]=w;k[c>>2]=v;r=a;return}case 2:{k[A>>2]=0;k[A+4>>2]=1;k[A+8>>2]=5;v=A;w=3;k[b>>2]=w;k[c>>2]=v;r=a;return}default:{a=l+56|0;v=l+4|0;k[l>>2]=27524;k[a>>2]=27544;B=0;wa(508,l+56|0,v|0);c=B;B=0;if(c&1){c=Rb()|0;X=Q;Y=c;vva(a);Qb(Y|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[a>>2]=27488;B=0;va(448,v|0);c=B;B=0;do if(c&1){w=Rb()|0;Z=Q;_=w}else{k[v>>2]=27560;w=l+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[l+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,v|0,f|0);b=B;B=0;if(b&1){b=Rb()|0;A=Q;Yua(f);Yua(w);Ava(v);Z=A;_=b;break}Yua(f);B=0;b=Ia(40,l|0,73036,21)|0;A=B;B=0;b:do if(((!(A&1)?(B=0,u=Xa(242,b|0,d|0)|0,E=B,B=0,!(E&1)):0)?(B=0,E=Ia(40,u|0,73058,24)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,E|0,0)|0,E=B,B=0,!(E&1)):0){E=Ab(20)|0;B=0;eb(502,m|0,72935,75);u=B;B=0;do if(!(u&1)){B=0;eb(502,n|0,73083,17);D=B;B=0;if(D&1){D=Rb()|0;z=Q;Yua(m);$=D;aa=z;break}B=0;wa(510,o|0,v|0);z=B;B=0;if(z&1){z=Rb()|0;ba=1;ca=Q;da=z}else{B=0;ua(163,E|0,m|0,n|0,456,o|0);z=B;B=0;if(z&1)ea=1;else{B=0;eb(503,E|0,1240,229);B=0;ea=0}z=Rb()|0;D=Q;Yua(o);ba=ea;ca=D;da=z}Yua(n);Yua(m);if(ba){$=da;aa=ca}else{fa=ca;ga=da;break b}}else{z=Rb()|0;$=z;aa=Q}while(0);zb(E|0);fa=aa;ga=$}else U=52;while(0);if((U|0)==52){b=Rb()|0;fa=Q;ga=b}k[l>>2]=27468;k[a>>2]=27488;k[v>>2]=27560;Yua(w);Ava(v);vva(a);V=fa;W=ga;Qb(W|0)}while(0);X=Z;Y=_;vva(a);Qb(Y|0)}}break}default:{Y=p+56|0;a=p+4|0;k[p>>2]=27524;k[Y>>2]=27544;B=0;wa(508,p+56|0,a|0);_=B;B=0;if(_&1){_=Rb()|0;ha=Q;ia=_;vva(Y);Qb(ia|0)}k[p+128>>2]=0;k[p+132>>2]=-1;k[p>>2]=27468;k[Y>>2]=27488;B=0;va(448,a|0);_=B;B=0;do if(_&1){Z=Rb()|0;ja=Q;ka=Z}else{k[a>>2]=27560;Z=p+36|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[p+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,a|0,f|0);X=B;B=0;if(X&1){X=Rb()|0;ga=Q;Yua(f);Yua(Z);Ava(a);ja=ga;ka=X;break}Yua(f);B=0;X=Ia(40,p|0,132447,13)|0;ga=B;B=0;c:do if((((!(ga&1)?(B=0,fa=ya(427,e|0)|0,v=B,B=0,!(v&1)):0)?(v=Lta(fa)|0,B=0,l=Ia(40,X|0,fa|0,v|0)|0,v=B,B=0,!(v&1)):0)?(B=0,v=Ia(40,l|0,146481,18)|0,l=B,B=0,!(l&1)):0)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,q|0,72935,75);l=B;B=0;do if(!(l&1)){B=0;eb(502,s|0,73083,17);fa=B;B=0;if(fa&1){fa=Rb()|0;$=Q;Yua(q);la=fa;ma=$;break}B=0;wa(510,t|0,a|0);$=B;B=0;if($&1){$=Rb()|0;na=1;oa=Q;pa=$}else{B=0;ua(163,v|0,q|0,s|0,460,t|0);$=B;B=0;if($&1)qa=1;else{B=0;eb(503,v|0,1240,229);B=0;qa=0}$=Rb()|0;fa=Q;Yua(t);na=qa;oa=fa;pa=$}Yua(s);Yua(q);if(na){la=pa;ma=oa}else{ra=oa;sa=pa;break c}}else{$=Rb()|0;la=$;ma=Q}while(0);zb(v|0);ra=ma;sa=la}else U=78;while(0);if((U|0)==78){X=Rb()|0;ra=Q;sa=X}k[p>>2]=27468;k[Y>>2]=27488;k[a>>2]=27560;Yua(Z);Ava(a);vva(Y);V=ra;W=sa;Qb(W|0)}while(0);ha=ja;ia=ka;vva(Y);Qb(ia|0)}}}function Bw(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;switch(b|0){case 754:{h=921;r=a;return h|0}case 757:{h=739;r=a;return h|0}case 758:{h=921;r=a;return h|0}case 755:case 753:case 751:case 752:case 750:case 749:{h=738;r=a;return h|0}default:{h=d+56|0;a=d+4|0;k[d>>2]=27524;k[h>>2]=27544;B=0;wa(508,d+56|0,a|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(h);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[h>>2]=27488;B=0;va(448,a|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[a>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(a);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,132447,13)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,b|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,72935,75);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,75650,21);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,a|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,507,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}while(0);j=n;l=o;vva(h);Qb(l|0)}}return 0}function Cw(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;if((b|0)==755){r=a;return 739}a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,132447,13)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,b|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,72935,75);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,75211,19);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,518,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(C|0)}while(0);j=n;l=o;vva(a);Qb(l|0);return 0}function Dw(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;switch(b|0){case 752:{h=740;r=a;return h|0}case 751:{h=740;r=a;return h|0}case 753:{h=742;r=a;return h|0}case 754:{h=742;r=a;return h|0}case 755:{h=742;r=a;return h|0}case 757:{h=743;r=a;return h|0}case 758:{h=743;r=a;return h|0}case 750:case 749:{h=738;r=a;return h|0}default:{h=d+56|0;a=d+4|0;k[d>>2]=27524;k[h>>2]=27544;B=0;wa(508,d+56|0,a|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(h);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[h>>2]=27488;B=0;va(448,a|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[a>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(a);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,132447,13)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,b|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,72935,75);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,75691,21);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,a|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,534,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}while(0);j=n;l=o;vva(h);Qb(l|0)}}return 0}function Ew(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;Po(a);g=a+48|0;B=0;ua(167,g|0,f|0,d+1|0,4,e|0);e=B;B=0;if(e&1){e=Rb()|0;h=Q;i=e;Qo(a);Qb(i|0)}B=0;e=B;B=0;if(e&1){e=Rb()|0;j=Q;l=e}else{k[a>>2]=30656;k[a+4>>2]=31220;k[a+8>>2]=b;k[a+12>>2]=c;k[a+36>>2]=0;B=0;c=ya(423,36)|0;b=B;B=0;do if(!(b&1)){B=0;va(486,c|0);e=B;B=0;if(e&1){e=Rb()|0;d=Q;Sqa(c);m=d;n=e;break}k[a+16>>2]=c;e=a+20|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;B=0;e=ya(422,(f>>>0>1073741823?-1:f<<2)|0)|0;d=B;B=0;if(!(d&1)){k[a+40>>2]=e;return}else o=9}else o=9;while(0);if((o|0)==9){o=Rb()|0;m=Q;n=o}j=m;l=n}Tq(g);h=j;i=l;Qo(a);Qb(i|0)}function Fw(a){a=a|0;k[a>>2]=30656;k[a+4>>2]=31220;k[a+36>>2]=0;Tq(a+48|0);Qo(a);return}function Gw(a){a=a|0;k[a>>2]=30656;k[a+4>>2]=31220;k[a+36>>2]=0;Tq(a+48|0);Qo(a);Sqa(a);return}function Hw(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;b=Qqa(72)|0;B=0;va(461,b|0);c=B;B=0;if(c&1){c=Rb()|0;d=Q;e=c}else{c=b+48|0;B=0;va(462,c|0);f=B;B=0;do if(f&1){g=Rb()|0;h=Q;i=g}else{B=0;g=B;B=0;if(g&1){g=Rb()|0;j=Q;Tq(c);h=j;i=g;break}k[b>>2]=30656;k[b+4>>2]=31220;g=k[a+48>>2]|0;j=(g|0)>0;if(j){l=Rqa(g>>>0>1073741823?-1:g<<2)|0;k[b+40>>2]=l;m=k[a+40>>2]|0;n=0;do{k[l+(n<<2)>>2]=k[m+(n<<2)>>2];n=n+1|0}while((n|0)!=(g|0))}else k[b+40>>2]=0;k[b+44>>2]=k[a+44>>2];k[c>>2]=g;n=a+52|0;m=k[n>>2]|0;a:do if(m){l=Rqa(g>>>0>1073741823?-1:g<<2)|0;o=b+52|0;k[o>>2]=l;if(j){l=g;p=m;q=0;while(1){r=k[p+(q<<2)>>2]|0;if(!r){k[(k[o>>2]|0)+(q<<2)>>2]=0;s=l}else{t=Bla(r)|0;k[(k[o>>2]|0)+(q<<2)>>2]=t;s=k[c>>2]|0}t=q+1|0;if((t|0)>=(s|0))break a;l=s;p=k[n>>2]|0;q=t}}}else k[b+52>>2]=0;while(0);n=a+56|0;m=Bla(k[n>>2]|0)|0;k[b+56>>2]=m;m=a+60|0;g=Bla(k[m>>2]|0)|0;k[b+60>>2]=g;g=a+64|0;j=Bla(k[g>>2]|0)|0;k[b+64>>2]=j;k[b+68>>2]=0;k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2];j=k[a+16>>2]|0;do if(!j){q=Qqa(36)|0;B=0;va(486,q|0);p=B;B=0;if(!(p&1)){k[b+16>>2]=q;break}p=Rb()|0;l=Q;Sqa(q);u=l;v=p;Qb(v|0)}else{p=hh(j)|0;k[b+16>>2]=p}while(0);k[b+36>>2]=k[a+36>>2];j=Rqa(16)|0;k[b+20>>2]=j;p=k[a+20>>2]|0;k[j>>2]=k[p>>2];k[j+4>>2]=k[p+4>>2];k[j+8>>2]=k[p+8>>2];k[j+12>>2]=k[p+12>>2];p=Gla(k[n>>2]|0)|0;k[b+24>>2]=p;p=Fla(k[m>>2]|0)|0;k[b+28>>2]=p;p=Fla(k[g>>2]|0)|0;k[b+32>>2]=p;return b|0}while(0);Qo(b);d=h;e=i}Sqa(b);u=d;v=e;Qb(v|0);return 0}function Iw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;l=e;switch(d|0){case 0:{m=k[b>>2]|0;i[m>>0]=111;i[m+1>>0]=2;i[m+2>>0]=0;i[m+3>>0]=0;k[b>>2]=(k[b>>2]|0)+4;break}case 2:{k[c>>2]=(k[c>>2]|0)+4;break}case 1:{k[b>>2]=(k[b>>2]|0)+4;break}default:{m=g+56|0;n=g+4|0;k[g>>2]=27524;k[m>>2]=27544;B=0;wa(508,g+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;q=o;vva(m);Qb(q|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){s=Rb()|0;t=Q;u=s}else{k[n>>2]=27560;s=g+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,n|0,f|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(f);Yua(s);Ava(n);t=w;u=v;break}Yua(f);B=0;v=Ia(40,g|0,143951,43)|0;w=B;B=0;if(!(w&1)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,h|0,73108,73);w=B;B=0;do if(!(w&1)){B=0;eb(502,j|0,149525,8);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(h);z=y;A=x;break}B=0;wa(510,l|0,n|0);x=B;B=0;if(x&1){x=Rb()|0;C=Q;D=x;E=1}else{B=0;ua(163,v|0,h|0,j|0,107,l|0);x=B;B=0;if(x&1)F=1;else{B=0;eb(503,v|0,1240,229);B=0;F=0}x=Rb()|0;y=Q;Yua(l);C=y;D=x;E=F}Yua(j);Yua(h);if(E){z=C;A=D}else{G=C;H=D;k[g>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);Qb(H|0)}}else{x=Rb()|0;z=Q;A=x}while(0);zb(v|0);G=z;H=A;k[g>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);Qb(H|0)}w=Rb()|0;G=Q;H=w;k[g>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);Qb(H|0)}while(0);p=t;q=u;vva(m);Qb(q|0)}}q=a+48|0;Vq(q,b,c,d);dq(a,b,c,d,k[q>>2]|0);q=Gla(k[a+56>>2]|0)|0;k[a+24>>2]=q;q=Fla(k[a+60>>2]|0)|0;k[a+28>>2]=q;q=Fla(k[a+64>>2]|0)|0;k[a+32>>2]=q;r=e;return}function Jw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=k[a+16>>2]|0;a=Qqa(16)|0;B=0;ib(286,a|0,b|0,c|0,d|0);d=B;B=0;if(d&1){d=Rb()|0;Sqa(a);Qb(d|0)}else{mC(e,a)|0;return}}function Kw(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;c=r;r=r+16|0;b=c;cO(g,b,482);h=k[b>>2]|0;k[a+44>>2]=k[(k[a+40>>2]|0)+(h<<2)>>2];i=a+52|0;j=k[(k[i>>2]|0)+(h<<2)>>2]|0;if(j)Ela(j,d);d=a+56|0;Ela(k[d>>2]|0,e);e=a+60|0;Ela(k[e>>2]|0,f);j=a+64|0;Ela(k[j>>2]|0,f);f=k[(k[i>>2]|0)+(k[b>>2]<<2)>>2]|0;if(!f)k[a+20>>2]=0;else{b=Gla(f)|0;k[a+20>>2]=b}b=Gla(k[d>>2]|0)|0;k[a+24>>2]=b;b=Fla(k[e>>2]|0)|0;k[a+28>>2]=b;b=Fla(k[j>>2]|0)|0;k[a+32>>2]=b;k[a+36>>2]=g;wC(k[a+16>>2]|0,g);r=c;return}function Lw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0.0,h=0.0,i=0.0,j=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0;e=r;r=r+96|0;f=e;Ko(f,k[a+24>>2]|0,4,0);g=+p[f>>3];h=+p[f+8>>3];i=+p[f+16>>3];j=+p[f+24>>3];l=j<g?j:g;m=j>g?j:g;g=+p[f+32>>3];j=g<h?g:h;n=g>h?g:h;h=+p[f+40>>3];g=h<i?h:i;o=h>i?h:i;i=+p[f+48>>3];h=i<l?i:l;l=i>m?i:m;m=+p[f+56>>3];i=m<j?m:j;j=m>n?m:n;n=+p[f+64>>3];m=n<g?n:g;g=n>o?n:o;o=+p[f+72>>3];n=+p[f+80>>3];q=+p[f+88>>3];p[b>>3]=(o>l?o:l)-(o<h?o:h);p[c>>3]=(n>j?n:j)-(n<i?n:i);p[d>>3]=(q>g?q:g)-(q<m?q:m);r=e;return}function Mw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;e=r;r=r+224|0;f=e+208|0;g=e;h=e+72|0;i=e+56|0;j=e+44|0;l=e+32|0;xp(a,g,287);a=+p[g>>3]==1.0;if(a){if(+p[g+8>>3]==1.0?+p[g+16>>3]==1.0:0){m=0;n=31244;o=31248;k[b>>2]=m;q=k[n>>2]|0;k[c>>2]=q;s=k[o>>2]|0;k[d>>2]=s;r=e;return}if(+p[g+24>>3]==1.0?+p[g+8>>3]==1.0:0){m=0;n=31256;o=31260;k[b>>2]=m;q=k[n>>2]|0;k[c>>2]=q;s=k[o>>2]|0;k[d>>2]=s;r=e;return}}if((+p[g+8>>3]==1.0?+p[g+24>>3]==1.0:0)?+p[g+16>>3]==1.0:0){m=1;n=31268;o=31272;k[b>>2]=m;q=k[n>>2]|0;k[c>>2]=q;s=k[o>>2]|0;k[d>>2]=s;r=e;return}if((a?+p[g+16>>3]==1.0:0)?+p[g+24>>3]==1.0:0){m=0;n=31280;o=31284;k[b>>2]=m;q=k[n>>2]|0;k[c>>2]=q;s=k[o>>2]|0;k[d>>2]=s;r=e;return}e=h+56|0;s=h+4|0;k[h>>2]=27524;k[e>>2]=27544;B=0;wa(508,h+56|0,s|0);d=B;B=0;if(d&1){d=Rb()|0;t=Q;u=d;vva(e);Qb(u|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[e>>2]=27488;B=0;va(448,s|0);d=B;B=0;do if(d&1){o=Rb()|0;v=Q;w=o}else{k[s>>2]=27560;o=h+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,s|0,f|0);q=B;B=0;if(q&1){q=Rb()|0;c=Q;Yua(f);Yua(o);Ava(s);v=c;w=q;break}Yua(f);B=0;q=Ia(40,h|0,73182,32)|0;c=B;B=0;if(!(c&1)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,i|0,73108,73);c=B;B=0;do if(!(c&1)){B=0;eb(502,j|0,73215,17);n=B;B=0;if(n&1){n=Rb()|0;m=Q;Yua(i);x=m;y=n;break}B=0;wa(510,l|0,s|0);n=B;B=0;if(n&1){n=Rb()|0;z=Q;A=n;C=1}else{B=0;ua(163,q|0,i|0,j|0,202,l|0);n=B;B=0;if(n&1)D=1;else{B=0;eb(503,q|0,1240,229);B=0;D=0}n=Rb()|0;m=Q;Yua(l);z=m;A=n;C=D}Yua(j);Yua(i);if(C){x=z;y=A}else{E=z;F=A;k[h>>2]=27468;k[e>>2]=27488;k[s>>2]=27560;Yua(o);Ava(s);vva(e);Qb(F|0)}}else{n=Rb()|0;x=Q;y=n}while(0);zb(q|0);E=x;F=y;k[h>>2]=27468;k[e>>2]=27488;k[s>>2]=27560;Yua(o);Ava(s);vva(e);Qb(F|0)}c=Rb()|0;E=Q;F=c;k[h>>2]=27468;k[e>>2]=27488;k[s>>2]=27560;Yua(o);Ava(s);vva(e);Qb(F|0)}while(0);t=v;u=w;vva(e);Qb(u|0)}function Nw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;e=r;r=r+224|0;f=e+208|0;g=e;h=e+72|0;i=e+56|0;j=e+44|0;l=e+32|0;xp(a,g,206);a=+p[g>>3]==0.0;if(a){if(+p[g+8>>3]==0.0?+p[g+16>>3]==0.0:0){m=0;n=31244;o=31248;k[b>>2]=m;q=k[n>>2]|0;k[c>>2]=q;s=k[o>>2]|0;k[d>>2]=s;r=e;return}if(+p[g+24>>3]==0.0?+p[g+8>>3]==0.0:0){m=0;n=31256;o=31260;k[b>>2]=m;q=k[n>>2]|0;k[c>>2]=q;s=k[o>>2]|0;k[d>>2]=s;r=e;return}}if((+p[g+8>>3]==0.0?+p[g+24>>3]==0.0:0)?+p[g+16>>3]==0.0:0){m=1;n=31268;o=31272;k[b>>2]=m;q=k[n>>2]|0;k[c>>2]=q;s=k[o>>2]|0;k[d>>2]=s;r=e;return}if((a?+p[g+16>>3]==0.0:0)?+p[g+24>>3]==0.0:0){m=0;n=31280;o=31284;k[b>>2]=m;q=k[n>>2]|0;k[c>>2]=q;s=k[o>>2]|0;k[d>>2]=s;r=e;return}e=h+56|0;s=h+4|0;k[h>>2]=27524;k[e>>2]=27544;B=0;wa(508,h+56|0,s|0);d=B;B=0;if(d&1){d=Rb()|0;t=Q;u=d;vva(e);Qb(u|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[e>>2]=27488;B=0;va(448,s|0);d=B;B=0;do if(d&1){o=Rb()|0;v=Q;w=o}else{k[s>>2]=27560;o=h+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,s|0,f|0);q=B;B=0;if(q&1){q=Rb()|0;c=Q;Yua(f);Yua(o);Ava(s);v=c;w=q;break}Yua(f);B=0;q=Ia(40,h|0,73182,32)|0;c=B;B=0;if(!(c&1)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,i|0,73108,73);c=B;B=0;do if(!(c&1)){B=0;eb(502,j|0,73233,18);n=B;B=0;if(n&1){n=Rb()|0;m=Q;Yua(i);x=m;y=n;break}B=0;wa(510,l|0,s|0);n=B;B=0;if(n&1){n=Rb()|0;z=Q;A=n;C=1}else{B=0;ua(163,q|0,i|0,j|0,222,l|0);n=B;B=0;if(n&1)D=1;else{B=0;eb(503,q|0,1240,229);B=0;D=0}n=Rb()|0;m=Q;Yua(l);z=m;A=n;C=D}Yua(j);Yua(i);if(C){x=z;y=A}else{E=z;F=A;k[h>>2]=27468;k[e>>2]=27488;k[s>>2]=27560;Yua(o);Ava(s);vva(e);Qb(F|0)}}else{n=Rb()|0;x=Q;y=n}while(0);zb(q|0);E=x;F=y;k[h>>2]=27468;k[e>>2]=27488;k[s>>2]=27560;Yua(o);Ava(s);vva(e);Qb(F|0)}c=Rb()|0;E=Q;F=c;k[h>>2]=27468;k[e>>2]=27488;k[s>>2]=27560;Yua(o);Ava(s);vva(e);Qb(F|0)}while(0);t=v;u=w;vva(e);Qb(u|0)}function Ow(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;e=r;r=r+224|0;f=e+208|0;g=e;h=e+72|0;i=e+56|0;j=e+44|0;l=e+32|0;xp(a,g,288);a=+p[g>>3]==1.0;if(a){if(+p[g+8>>3]==1.0?+p[g+16>>3]==1.0:0){m=0;n=31244;o=31248;k[b>>2]=m;q=k[n>>2]|0;k[c>>2]=q;s=k[o>>2]|0;k[d>>2]=s;r=e;return}if(+p[g+24>>3]==1.0?+p[g+8>>3]==1.0:0){m=0;n=31256;o=31260;k[b>>2]=m;q=k[n>>2]|0;k[c>>2]=q;s=k[o>>2]|0;k[d>>2]=s;r=e;return}}if((+p[g+8>>3]==1.0?+p[g+24>>3]==1.0:0)?+p[g+16>>3]==1.0:0){m=1;n=31268;o=31272;k[b>>2]=m;q=k[n>>2]|0;k[c>>2]=q;s=k[o>>2]|0;k[d>>2]=s;r=e;return}if((a?+p[g+16>>3]==1.0:0)?+p[g+24>>3]==1.0:0){m=0;n=31280;o=31284;k[b>>2]=m;q=k[n>>2]|0;k[c>>2]=q;s=k[o>>2]|0;k[d>>2]=s;r=e;return}e=h+56|0;s=h+4|0;k[h>>2]=27524;k[e>>2]=27544;B=0;wa(508,h+56|0,s|0);d=B;B=0;if(d&1){d=Rb()|0;t=Q;u=d;vva(e);Qb(u|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[e>>2]=27488;B=0;va(448,s|0);d=B;B=0;do if(d&1){o=Rb()|0;v=Q;w=o}else{k[s>>2]=27560;o=h+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,s|0,f|0);q=B;B=0;if(q&1){q=Rb()|0;c=Q;Yua(f);Yua(o);Ava(s);v=c;w=q;break}Yua(f);B=0;q=Ia(40,h|0,73182,32)|0;c=B;B=0;if(!(c&1)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,i|0,73108,73);c=B;B=0;do if(!(c&1)){B=0;eb(502,j|0,73252,20);n=B;B=0;if(n&1){n=Rb()|0;m=Q;Yua(i);x=m;y=n;break}B=0;wa(510,l|0,s|0);n=B;B=0;if(n&1){n=Rb()|0;z=Q;A=n;C=1}else{B=0;ua(163,q|0,i|0,j|0,242,l|0);n=B;B=0;if(n&1)D=1;else{B=0;eb(503,q|0,1240,229);B=0;D=0}n=Rb()|0;m=Q;Yua(l);z=m;A=n;C=D}Yua(j);Yua(i);if(C){x=z;y=A}else{E=z;F=A;k[h>>2]=27468;k[e>>2]=27488;k[s>>2]=27560;Yua(o);Ava(s);vva(e);Qb(F|0)}}else{n=Rb()|0;x=Q;y=n}while(0);zb(q|0);E=x;F=y;k[h>>2]=27468;k[e>>2]=27488;k[s>>2]=27560;Yua(o);Ava(s);vva(e);Qb(F|0)}c=Rb()|0;E=Q;F=c;k[h>>2]=27468;k[e>>2]=27488;k[s>>2]=27560;Yua(o);Ava(s);vva(e);Qb(F|0)}while(0);t=v;u=w;vva(e);Qb(u|0)}function Pw(a){a=a|0;return k[a+44>>2]|0}function Qw(a){a=a|0;return k[a+44>>2]|0}function Rw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;i=e+12|0;j=e;l=oC(k[a+16>>2]|0,d)|0;if(l){m=Qqa(72)|0;B=0;va(492,m|0);n=B;B=0;if(!(n&1)){n=k[(k[m>>2]|0)+28>>2]|0;o=ed[k[(k[a>>2]|0)+160>>2]&511](a,c)|0;Fc[n&1023](m,o);nd[k[(k[l>>2]|0)+48>>2]&1023](l,b,m);Ec[k[(k[m>>2]|0)+4>>2]&1023](m);r=e;return}e=Rb()|0;b=Q;Sqa(m);p=e;q=b;Qb(p|0)}b=g+56|0;e=g+4|0;k[g>>2]=27524;k[b>>2]=27544;B=0;wa(508,g+56|0,e|0);m=B;B=0;if(m&1){m=Rb()|0;s=Q;t=m;vva(b);Qb(t|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[b>>2]=27488;B=0;va(448,e|0);m=B;B=0;do if(m&1){l=Rb()|0;u=Q;v=l}else{k[e>>2]=27560;l=g+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,e|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;n=Q;Yua(f);Yua(l);Ava(e);u=n;v=o;break}Yua(f);B=0;o=Ia(40,g|0,74449,17)|0;n=B;B=0;a:do if((((!(n&1)?(B=0,c=ya(427,d|0)|0,a=B,B=0,!(a&1)):0)?(a=Lta(c)|0,B=0,w=Ia(40,o|0,c|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,a=Ia(40,w|0,74467,14)|0,w=B,B=0,!(w&1)):0)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,h|0,73108,73);w=B;B=0;do if(!(w&1)){B=0;eb(502,i|0,121355,13);c=B;B=0;if(c&1){c=Rb()|0;x=Q;Yua(h);y=c;z=x;break}B=0;wa(510,j|0,e|0);x=B;B=0;if(x&1){x=Rb()|0;A=x;C=Q;D=1}else{B=0;ua(163,a|0,h|0,i|0,257,j|0);x=B;B=0;if(x&1)E=1;else{B=0;eb(503,a|0,1240,229);B=0;E=0}x=Rb()|0;c=Q;Yua(j);A=x;C=c;D=E}Yua(i);Yua(h);if(D){y=A;z=C}else{F=A;G=C;break a}}else{c=Rb()|0;y=c;z=Q}while(0);zb(a|0);F=y;G=z}else H=20;while(0);if((H|0)==20){o=Rb()|0;F=o;G=Q}k[g>>2]=27468;k[b>>2]=27488;k[e>>2]=27560;Yua(l);Ava(e);vva(b);p=F;q=G;Qb(p|0)}while(0);s=u;t=v;vva(b);Qb(t|0)}function Sw(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;i=iz(a,k[a+44>>2]|0)|0;a:do if((i|0)>0){j=k[a+20>>2]|0;l=0;while(1){if((k[j+(l<<2)>>2]|0)==(b|0)){m=l;break}l=l+1|0;if((l|0)>=(i|0))break a}r=c;return m|0}while(0);m=e+56|0;c=e+4|0;k[e>>2]=27524;k[m>>2]=27544;B=0;wa(508,e+56|0,c|0);i=B;B=0;if(i&1){i=Rb()|0;n=Q;o=i;vva(m);Qb(o|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[m>>2]=27488;B=0;va(448,c|0);i=B;B=0;do if(i&1){b=Rb()|0;p=Q;q=b}else{k[c>>2]=27560;b=e+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,c|0,d|0);a=B;B=0;if(a&1){a=Rb()|0;l=Q;Yua(d);Yua(b);Ava(c);p=l;q=a;break}Yua(d);B=0;a=Ia(40,e|0,74482,43)|0;l=B;B=0;if(!(l&1)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,f|0,73108,73);l=B;B=0;do if(!(l&1)){B=0;eb(502,g|0,74526,12);j=B;B=0;if(j&1){j=Rb()|0;s=Q;Yua(f);t=s;u=j;break}B=0;wa(510,h|0,c|0);j=B;B=0;if(j&1){j=Rb()|0;v=Q;w=j;x=1}else{B=0;ua(163,a|0,f|0,g|0,274,h|0);j=B;B=0;if(j&1)y=1;else{B=0;eb(503,a|0,1240,229);B=0;y=0}j=Rb()|0;s=Q;Yua(h);v=s;w=j;x=y}Yua(g);Yua(f);if(x){t=v;u=w}else{z=v;A=w;k[e>>2]=27468;k[m>>2]=27488;k[c>>2]=27560;Yua(b);Ava(c);vva(m);Qb(A|0)}}else{j=Rb()|0;t=Q;u=j}while(0);zb(a|0);z=t;A=u;k[e>>2]=27468;k[m>>2]=27488;k[c>>2]=27560;Yua(b);Ava(c);vva(m);Qb(A|0)}l=Rb()|0;z=Q;A=l;k[e>>2]=27468;k[m>>2]=27488;k[c>>2]=27560;Yua(b);Ava(c);vva(m);Qb(A|0)}while(0);n=p;o=q;vva(m);Qb(o|0);return 0}function Tw(a){a=a|0;return iz(a,k[a+44>>2]|0)|0}function Uw(a){a=a|0;return 4}function Vw(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=r;r=r+112|0;d=c+96|0;e=c;Ko(e,k[a+24>>2]|0,4,0);f=Rqa(72)|0;g=d+4|0;h=d+8|0;Mw(a,d,g,h);a=e+((k[d>>2]|0)*24|0)|0;k[f>>2]=k[a>>2];k[f+4>>2]=k[a+4>>2];k[f+8>>2]=k[a+8>>2];k[f+12>>2]=k[a+12>>2];k[f+16>>2]=k[a+16>>2];k[f+20>>2]=k[a+20>>2];a=f+24|0;d=e+((k[g>>2]|0)*24|0)|0;k[a>>2]=k[d>>2];k[a+4>>2]=k[d+4>>2];k[a+8>>2]=k[d+8>>2];k[a+12>>2]=k[d+12>>2];k[a+16>>2]=k[d+16>>2];k[a+20>>2]=k[d+20>>2];d=f+48|0;a=e+((k[h>>2]|0)*24|0)|0;k[d>>2]=k[a>>2];k[d+4>>2]=k[a+4>>2];k[d+8>>2]=k[a+8>>2];k[d+12>>2]=k[a+12>>2];k[d+16>>2]=k[a+16>>2];k[d+20>>2]=k[a+20>>2];k[b>>2]=f;r=c;return}function Ww(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=r;r=r+112|0;d=c+96|0;e=c;Ko(e,k[a+24>>2]|0,4,0);f=Rqa(72)|0;g=d+4|0;h=d+8|0;Ow(a,d,g,h);a=e+((k[d>>2]|0)*24|0)|0;k[f>>2]=k[a>>2];k[f+4>>2]=k[a+4>>2];k[f+8>>2]=k[a+8>>2];k[f+12>>2]=k[a+12>>2];k[f+16>>2]=k[a+16>>2];k[f+20>>2]=k[a+20>>2];a=f+24|0;d=e+((k[g>>2]|0)*24|0)|0;k[a>>2]=k[d>>2];k[a+4>>2]=k[d+4>>2];k[a+8>>2]=k[d+8>>2];k[a+12>>2]=k[d+12>>2];k[a+16>>2]=k[d+16>>2];k[a+20>>2]=k[d+20>>2];d=f+48|0;a=e+((k[h>>2]|0)*24|0)|0;k[d>>2]=k[a>>2];k[d+4>>2]=k[a+4>>2];k[d+8>>2]=k[a+8>>2];k[d+12>>2]=k[a+12>>2];k[d+16>>2]=k[a+16>>2];k[d+20>>2]=k[a+20>>2];k[b>>2]=f;r=c;return}function Xw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0;d=r;r=r+336|0;e=d+312|0;f=d+296|0;g=d+72|0;h=d+40|0;j=d+8|0;l=d;m=d+324|0;n=d+288|0;o=d+284|0;q=d+280|0;s=d+144|0;t=d+128|0;u=d+116|0;v=d+104|0;k[n>>2]=0;Gka(c,l,106352);zka(c,m,139791);if((i[m>>0]|0)!=0?(Fka(c,o,113066),(i[m>>0]|0)!=0):0){Fka(c,q,113428);w=i[m>>0]|0}else w=0;x=b<<2;y=k[c+72>>2]|0;z=k[y+(x<<2)>>2]|0;k[f>>2]=z;A=k[y+((x|1)<<2)>>2]|0;C=f+4|0;k[C>>2]=A;D=k[y+((x|2)<<2)>>2]|0;E=f+8|0;k[E>>2]=D;F=k[y+((x|3)<<2)>>2]|0;x=f+12|0;k[x>>2]=F;if(w<<24>>24){Hka(c,n,0,113102);do if((k[o>>2]|0)>0){w=a+16|0;y=g+8|0;G=g+16|0;H=g+24|0;I=h+8|0;J=h+16|0;K=h+24|0;L=j+8|0;M=j+16|0;N=j+24|0;O=(k[f>>2]|0)+-1|0;P=(k[C>>2]|0)+-1|0;R=g+8|0;S=(k[E>>2]|0)+-1|0;T=g+16|0;U=(k[x>>2]|0)+-1|0;V=g+24|0;W=(k[f>>2]|0)+-1|0;X=(k[C>>2]|0)+-1|0;Y=h+8|0;Z=(k[E>>2]|0)+-1|0;_=h+16|0;$=(k[x>>2]|0)+-1|0;aa=h+24|0;ba=k[f>>2]|0;ca=ba+-1|0;da=k[C>>2]|0;ea=da+-1|0;fa=j+8|0;ga=k[E>>2]|0;ha=ga+-1|0;ia=j+16|0;ja=k[x>>2]|0;ka=ja+-1|0;la=j+24|0;na=(k[f>>2]|0)+-1|0;oa=(k[C>>2]|0)+-1|0;pa=g+8|0;qa=(k[E>>2]|0)+-1|0;ra=g+16|0;sa=(k[x>>2]|0)+-1|0;ta=g+24|0;xa=(k[f>>2]|0)+-1|0;za=(k[C>>2]|0)+-1|0;Aa=h+8|0;Ba=(k[E>>2]|0)+-1|0;Ca=h+16|0;Da=(k[x>>2]|0)+-1|0;Ea=h+24|0;Fa=k[f>>2]|0;Ga=Fa+-1|0;Ha=k[C>>2]|0;Ja=Ha+-1|0;Ka=j+8|0;La=k[E>>2]|0;Ma=La+-1|0;Na=j+16|0;Oa=k[x>>2]|0;Pa=Oa+-1|0;Qa=j+24|0;Ra=(k[f>>2]|0)+-1|0;Sa=(k[C>>2]|0)+-1|0;Ua=g+8|0;Va=(k[E>>2]|0)+-1|0;Wa=g+16|0;Ya=(k[x>>2]|0)+-1|0;Za=g+24|0;_a=(k[f>>2]|0)+-1|0;$a=(k[C>>2]|0)+-1|0;ab=h+8|0;bb=(k[E>>2]|0)+-1|0;cb=h+16|0;db=(k[x>>2]|0)+-1|0;fb=h+24|0;gb=k[f>>2]|0;hb=gb+-1|0;jb=k[C>>2]|0;kb=jb+-1|0;lb=j+8|0;mb=k[E>>2]|0;nb=mb+-1|0;ob=j+16|0;pb=k[x>>2]|0;qb=pb+-1|0;rb=j+24|0;sb=(k[f>>2]|0)+-1|0;tb=(k[C>>2]|0)+-1|0;ub=g+8|0;vb=(k[E>>2]|0)+-1|0;wb=g+16|0;xb=(k[x>>2]|0)+-1|0;yb=g+24|0;Bb=(k[f>>2]|0)+-1|0;Cb=(k[C>>2]|0)+-1|0;Db=h+8|0;Eb=(k[E>>2]|0)+-1|0;Fb=h+16|0;Gb=(k[x>>2]|0)+-1|0;Hb=h+24|0;Ib=k[f>>2]|0;Jb=Ib+-1|0;Kb=k[C>>2]|0;Lb=Kb+-1|0;Mb=j+8|0;Nb=k[E>>2]|0;Ob=Nb+-1|0;Pb=j+16|0;Sb=k[x>>2]|0;Tb=Sb+-1|0;Ub=j+24|0;Vb=(k[f>>2]|0)+-1|0;Wb=(k[C>>2]|0)+-1|0;Xb=g+8|0;Yb=(k[E>>2]|0)+-1|0;Zb=g+16|0;_b=(k[x>>2]|0)+-1|0;$b=g+24|0;ac=(k[f>>2]|0)+-1|0;bc=(k[C>>2]|0)+-1|0;cc=h+8|0;dc=(k[E>>2]|0)+-1|0;ec=h+16|0;fc=(k[x>>2]|0)+-1|0;gc=h+24|0;hc=k[f>>2]|0;ic=hc+-1|0;jc=k[C>>2]|0;kc=jc+-1|0;lc=j+8|0;mc=k[E>>2]|0;nc=mc+-1|0;oc=j+16|0;pc=k[x>>2]|0;qc=pc+-1|0;rc=j+24|0;sc=z;tc=A;uc=D;vc=F;wc=0;a:while(1){xc=zY(k[(k[n>>2]|0)+(wc<<2)>>2]|0,1)|0;switch(xc|0){case 36:{if(!(Jka(c,126035)|0)){yc=vc;zc=uc;Ac=tc;Bc=sc}else{Cc=sc+-1|0;Dc=(Jka(c,126035)|0)+(Cc<<3)|0;p[g>>3]=+p[Dc>>3];Dc=tc+-1|0;Ec=(Jka(c,126035)|0)+(Dc<<3)|0;p[y>>3]=+p[Ec>>3];Ec=uc+-1|0;Fc=(Jka(c,126035)|0)+(Ec<<3)|0;p[G>>3]=+p[Fc>>3];Fc=vc+-1|0;Gc=(Jka(c,126035)|0)+(Fc<<3)|0;p[H>>3]=+p[Gc>>3];Gc=(ma(Cc,k[o>>2]|0)|0)+wc|0;Hc=(Jka(c,113372)|0)+(Gc<<3)|0;p[h>>3]=+p[Hc>>3]/+p[l>>3];Hc=(ma(Dc,k[o>>2]|0)|0)+wc|0;Gc=(Jka(c,113372)|0)+(Hc<<3)|0;p[I>>3]=+p[Gc>>3]/+p[l>>3];Gc=(ma(Ec,k[o>>2]|0)|0)+wc|0;Hc=(Jka(c,113372)|0)+(Gc<<3)|0;p[J>>3]=+p[Hc>>3]/+p[l>>3];Hc=(ma(Fc,k[o>>2]|0)|0)+wc|0;Gc=(Jka(c,113372)|0)+(Hc<<3)|0;p[K>>3]=+p[Gc>>3]/+p[l>>3];Gc=(ma(Cc,k[o>>2]|0)|0)+wc|0;Cc=(Jka(c,113400)|0)+(Gc<<3)|0;p[j>>3]=+p[Cc>>3]/+p[l>>3];Cc=(ma(Dc,k[o>>2]|0)|0)+wc|0;Dc=(Jka(c,113400)|0)+(Cc<<3)|0;p[L>>3]=+p[Dc>>3]/+p[l>>3];Dc=(ma(Ec,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113400)|0)+(Dc<<3)|0;p[M>>3]=+p[Ec>>3]/+p[l>>3];Ec=(ma(Fc,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113400)|0)+(Ec<<3)|0;p[N>>3]=+p[Fc>>3]/+p[l>>3];Fc=k[w>>2]|0;Ec=Qqa(32)|0;B=0;Ta(31,Ec|0,36,624,g|0,h|0,j|0,wc+1|0);Dc=B;B=0;if(Dc&1){Ic=Ec;Jc=13;break a}mC(Fc,Ec)|0;yc=vc;zc=uc;Ac=tc;Bc=sc}break}case 674:{if(!(Jka(c,135923)|0)){yc=vc;zc=uc;Ac=tc;Bc=sc}else{Ec=(Jka(c,135923)|0)+(O<<3)|0;p[g>>3]=+p[Ec>>3];Ec=(Jka(c,135923)|0)+(P<<3)|0;p[R>>3]=+p[Ec>>3];Ec=(Jka(c,135923)|0)+(S<<3)|0;p[T>>3]=+p[Ec>>3];Ec=(Jka(c,135923)|0)+(U<<3)|0;p[V>>3]=+p[Ec>>3];Ec=(ma(W,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113372)|0)+(Ec<<3)|0;p[h>>3]=+p[Fc>>3]/+p[l>>3];Fc=(ma(X,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113372)|0)+(Fc<<3)|0;p[Y>>3]=+p[Ec>>3]/+p[l>>3];Ec=(ma(Z,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113372)|0)+(Ec<<3)|0;p[_>>3]=+p[Fc>>3]/+p[l>>3];Fc=(ma($,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113372)|0)+(Fc<<3)|0;p[aa>>3]=+p[Ec>>3]/+p[l>>3];Ec=(ma(ca,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113400)|0)+(Ec<<3)|0;p[j>>3]=+p[Fc>>3]/+p[l>>3];Fc=(ma(ea,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113400)|0)+(Fc<<3)|0;p[fa>>3]=+p[Ec>>3]/+p[l>>3];Ec=(ma(ha,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113400)|0)+(Ec<<3)|0;p[ia>>3]=+p[Fc>>3]/+p[l>>3];Fc=(ma(ka,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113400)|0)+(Fc<<3)|0;p[la>>3]=+p[Ec>>3]/+p[l>>3];Ec=k[w>>2]|0;Fc=Qqa(32)|0;B=0;Ta(31,Fc|0,674,624,g|0,h|0,j|0,wc+1|0);Dc=B;B=0;if(Dc&1){Kc=Fc;Jc=17;break a}mC(Ec,Fc)|0;yc=ja;zc=ga;Ac=da;Bc=ba}break}case 677:{if(!(Jka(c,135944)|0)){yc=vc;zc=uc;Ac=tc;Bc=sc}else{Fc=(Jka(c,135944)|0)+(na<<3)|0;p[g>>3]=+p[Fc>>3];Fc=(Jka(c,135944)|0)+(oa<<3)|0;p[pa>>3]=+p[Fc>>3];Fc=(Jka(c,135944)|0)+(qa<<3)|0;p[ra>>3]=+p[Fc>>3];Fc=(Jka(c,135944)|0)+(sa<<3)|0;p[ta>>3]=+p[Fc>>3];Fc=(ma(xa,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113372)|0)+(Fc<<3)|0;p[h>>3]=+p[Ec>>3]/+p[l>>3];Ec=(ma(za,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113372)|0)+(Ec<<3)|0;p[Aa>>3]=+p[Fc>>3]/+p[l>>3];Fc=(ma(Ba,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113372)|0)+(Fc<<3)|0;p[Ca>>3]=+p[Ec>>3]/+p[l>>3];Ec=(ma(Da,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113372)|0)+(Ec<<3)|0;p[Ea>>3]=+p[Fc>>3]/+p[l>>3];Fc=(ma(Ga,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113400)|0)+(Fc<<3)|0;p[j>>3]=+p[Ec>>3]/+p[l>>3];Ec=(ma(Ja,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113400)|0)+(Ec<<3)|0;p[Ka>>3]=+p[Fc>>3]/+p[l>>3];Fc=(ma(Ma,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113400)|0)+(Fc<<3)|0;p[Na>>3]=+p[Ec>>3]/+p[l>>3];Ec=(ma(Pa,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113400)|0)+(Ec<<3)|0;p[Qa>>3]=+p[Fc>>3]/+p[l>>3];Fc=k[w>>2]|0;Ec=Qqa(32)|0;B=0;Ta(31,Ec|0,677,624,g|0,h|0,j|0,wc+1|0);Dc=B;B=0;if(Dc&1){Lc=Ec;Jc=21;break a}mC(Fc,Ec)|0;yc=Oa;zc=La;Ac=Ha;Bc=Fa}break}case 105:{if(!(Jka(c,135172)|0)){yc=vc;zc=uc;Ac=tc;Bc=sc}else{Ec=(Jka(c,135172)|0)+(Ra<<3)|0;p[g>>3]=+p[Ec>>3];Ec=(Jka(c,135172)|0)+(Sa<<3)|0;p[Ua>>3]=+p[Ec>>3];Ec=(Jka(c,135172)|0)+(Va<<3)|0;p[Wa>>3]=+p[Ec>>3];Ec=(Jka(c,135172)|0)+(Ya<<3)|0;p[Za>>3]=+p[Ec>>3];Ec=(ma(_a,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113372)|0)+(Ec<<3)|0;p[h>>3]=+p[Fc>>3];Fc=(ma($a,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113372)|0)+(Fc<<3)|0;p[ab>>3]=+p[Ec>>3];Ec=(ma(bb,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113372)|0)+(Ec<<3)|0;p[cb>>3]=+p[Fc>>3];Fc=(ma(db,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113372)|0)+(Fc<<3)|0;p[fb>>3]=+p[Ec>>3];Ec=(ma(hb,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113400)|0)+(Ec<<3)|0;p[j>>3]=+p[Fc>>3];Fc=(ma(kb,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113400)|0)+(Fc<<3)|0;p[lb>>3]=+p[Ec>>3];Ec=(ma(nb,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113400)|0)+(Ec<<3)|0;p[ob>>3]=+p[Fc>>3];Fc=(ma(qb,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113400)|0)+(Fc<<3)|0;p[rb>>3]=+p[Ec>>3];Ec=k[w>>2]|0;Fc=Qqa(32)|0;B=0;Ta(31,Fc|0,105,624,g|0,h|0,j|0,wc+1|0);Dc=B;B=0;if(Dc&1){Mc=Fc;Jc=25;break a}mC(Ec,Fc)|0;yc=pb;zc=mb;Ac=jb;Bc=gb}break}case 215:{if(!(Jka(c,134991)|0)){yc=vc;zc=uc;Ac=tc;Bc=sc}else{Fc=(Jka(c,134991)|0)+(sb<<3)|0;p[g>>3]=+p[Fc>>3];Fc=(Jka(c,134991)|0)+(tb<<3)|0;p[ub>>3]=+p[Fc>>3];Fc=(Jka(c,134991)|0)+(vb<<3)|0;p[wb>>3]=+p[Fc>>3];Fc=(Jka(c,134991)|0)+(xb<<3)|0;p[yb>>3]=+p[Fc>>3];Fc=(ma(Bb,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113372)|0)+(Fc<<3)|0;p[h>>3]=+p[Ec>>3];Ec=(ma(Cb,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113372)|0)+(Ec<<3)|0;p[Db>>3]=+p[Fc>>3];Fc=(ma(Eb,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113372)|0)+(Fc<<3)|0;p[Fb>>3]=+p[Ec>>3];Ec=(ma(Gb,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113372)|0)+(Ec<<3)|0;p[Hb>>3]=+p[Fc>>3];Fc=(ma(Jb,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113400)|0)+(Fc<<3)|0;p[j>>3]=+p[Ec>>3];Ec=(ma(Lb,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113400)|0)+(Ec<<3)|0;p[Mb>>3]=+p[Fc>>3];Fc=(ma(Ob,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113400)|0)+(Fc<<3)|0;p[Pb>>3]=+p[Ec>>3];Ec=(ma(Tb,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113400)|0)+(Ec<<3)|0;p[Ub>>3]=+p[Fc>>3];Fc=k[w>>2]|0;Ec=Qqa(32)|0;B=0;Ta(31,Ec|0,214,624,g|0,h|0,j|0,wc+1|0);Dc=B;B=0;if(Dc&1){Nc=Ec;Jc=29;break a}mC(Fc,Ec)|0;yc=Sb;zc=Nb;Ac=Kb;Bc=Ib}break}case 227:{if(!(Jka(c,126277)|0)){yc=vc;zc=uc;Ac=tc;Bc=sc}else{Ec=(Jka(c,126277)|0)+(Vb<<3)|0;p[g>>3]=+p[Ec>>3];Ec=(Jka(c,126277)|0)+(Wb<<3)|0;p[Xb>>3]=+p[Ec>>3];Ec=(Jka(c,126277)|0)+(Yb<<3)|0;p[Zb>>3]=+p[Ec>>3];Ec=(Jka(c,126277)|0)+(_b<<3)|0;p[$b>>3]=+p[Ec>>3];Ec=(ma(ac,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113372)|0)+(Ec<<3)|0;p[h>>3]=+p[Fc>>3];Fc=(ma(bc,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113372)|0)+(Fc<<3)|0;p[cc>>3]=+p[Ec>>3];Ec=(ma(dc,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113372)|0)+(Ec<<3)|0;p[ec>>3]=+p[Fc>>3];Fc=(ma(fc,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113372)|0)+(Fc<<3)|0;p[gc>>3]=+p[Ec>>3];Ec=(ma(ic,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113400)|0)+(Ec<<3)|0;p[j>>3]=+p[Fc>>3];Fc=(ma(kc,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113400)|0)+(Fc<<3)|0;p[lc>>3]=+p[Ec>>3];Ec=(ma(nc,k[o>>2]|0)|0)+wc|0;Fc=(Jka(c,113400)|0)+(Ec<<3)|0;p[oc>>3]=+p[Fc>>3];Fc=(ma(qc,k[o>>2]|0)|0)+wc|0;Ec=(Jka(c,113400)|0)+(Fc<<3)|0;p[rc>>3]=+p[Ec>>3];Ec=k[w>>2]|0;Fc=Qqa(32)|0;B=0;Ta(31,Fc|0,225,624,g|0,h|0,j|0,wc+1|0);Dc=B;B=0;if(Dc&1){Oc=Fc;Jc=33;break a}mC(Ec,Fc)|0;yc=pc;zc=mc;Ac=jc;Bc=hc}break}default:{Pc=xc;Jc=34;break a}}wc=wc+1|0;xc=k[o>>2]|0;if((wc|0)>=(xc|0)){Qc=xc;Jc=8;break}else{sc=Bc;tc=Ac;uc=zc;vc=yc}}if((Jc|0)==8){vc=k[n>>2]|0;if((Qc|0)>0){Rc=vc;Sc=Qc;Tc=0}else{Uc=vc;break}while(1){vc=Rc+(Tc<<2)|0;uc=k[vc>>2]|0;if(!uc)Vc=Sc;else{Tqa(uc);Vc=k[o>>2]|0}k[vc>>2]=0;Tc=Tc+1|0;vc=k[n>>2]|0;if((Tc|0)>=(Vc|0)){Uc=vc;break}else{Rc=vc;Sc=Vc}}}else if((Jc|0)==13){vc=Rb()|0;uc=Q;Sqa(Ic);Wc=uc;Xc=vc;Qb(Xc|0)}else if((Jc|0)==17){vc=Rb()|0;uc=Q;Sqa(Kc);Wc=uc;Xc=vc;Qb(Xc|0)}else if((Jc|0)==21){vc=Rb()|0;uc=Q;Sqa(Lc);Wc=uc;Xc=vc;Qb(Xc|0)}else if((Jc|0)==25){vc=Rb()|0;uc=Q;Sqa(Mc);Wc=uc;Xc=vc;Qb(Xc|0)}else if((Jc|0)==29){vc=Rb()|0;uc=Q;Sqa(Nc);Wc=uc;Xc=vc;Qb(Xc|0)}else if((Jc|0)==33){vc=Rb()|0;uc=Q;Sqa(Oc);Wc=uc;Xc=vc;Qb(Xc|0)}else if((Jc|0)==34){vc=s+56|0;uc=s+4|0;k[s>>2]=27524;k[vc>>2]=27544;B=0;wa(508,s+56|0,uc|0);tc=B;B=0;if(tc&1){tc=Rb()|0;Yc=Q;Zc=tc;vva(vc);Qb(Zc|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[vc>>2]=27488;B=0;va(448,uc|0);tc=B;B=0;do if(tc&1){sc=Rb()|0;_c=Q;$c=sc}else{k[uc>>2]=27560;sc=s+36|0;k[sc>>2]=0;k[sc+4>>2]=0;k[sc+8>>2]=0;k[sc+12>>2]=0;k[s+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,uc|0,e|0);wc=B;B=0;if(wc&1){wc=Rb()|0;hc=Q;Yua(e);Yua(sc);Ava(uc);_c=hc;$c=wc;break}Yua(e);B=0;wc=Ia(40,s|0,125582,8)|0;hc=B;B=0;b:do if((((!(hc&1)?(B=0,jc=ya(427,Pc|0)|0,mc=B,B=0,!(mc&1)):0)?(mc=Lta(jc)|0,B=0,pc=Ia(40,wc|0,jc|0,mc|0)|0,mc=B,B=0,!(mc&1)):0)?(B=0,mc=Ia(40,pc|0,127493,20)|0,pc=B,B=0,!(pc&1)):0)?(B=0,Xa(239,mc|0,0)|0,mc=B,B=0,!(mc&1)):0){mc=Ab(20)|0;B=0;eb(502,t|0,73108,73);pc=B;B=0;do if(!(pc&1)){B=0;eb(502,u|0,144327,22);jc=B;B=0;if(jc&1){jc=Rb()|0;w=Q;Yua(t);ad=w;bd=jc;break}B=0;wa(510,v|0,uc|0);jc=B;B=0;if(jc&1){jc=Rb()|0;cd=Q;dd=jc;ed=1}else{B=0;ua(163,mc|0,t|0,u|0,440,v|0);jc=B;B=0;if(jc&1)fd=1;else{B=0;eb(503,mc|0,1240,229);B=0;fd=0}jc=Rb()|0;w=Q;Yua(v);cd=w;dd=jc;ed=fd}Yua(u);Yua(t);if(ed){ad=cd;bd=dd}else{gd=cd;hd=dd;break b}}else{jc=Rb()|0;ad=Q;bd=jc}while(0);zb(mc|0);gd=ad;hd=bd}else Jc=52;while(0);if((Jc|0)==52){wc=Rb()|0;gd=Q;hd=wc}k[s>>2]=27468;k[vc>>2]=27488;k[uc>>2]=27560;Yua(sc);Ava(uc);vva(vc);Wc=gd;Xc=hd;Qb(Xc|0)}while(0);Yc=_c;Zc=$c;vva(vc);Qb(Zc|0)}}else Uc=k[n>>2]|0;while(0);if(Uc)Tqa(Uc);k[n>>2]=0}do if(Jka(c,129145)|0){n=k[a+16>>2]|0;Uc=Qqa(12)|0;B=0;Zc=Xa(246,c|0,129145)|0;$c=B;B=0;if(!($c&1)?(B=0,eb(508,Uc|0,533,~~+p[Zc+(b<<3)>>3]|0),Zc=B,B=0,!(Zc&1)):0){mC(n,Uc)|0;break}n=Rb()|0;Zc=Q;Sqa(Uc);Wc=Zc;Xc=n;Qb(Xc|0)}while(0);if(!(i[m>>0]|0)){r=d;return}if(!(Jka(c,113331)|0)){r=d;return}m=Qqa(20)|0;B=0;wa(516,m|0,179);b=B;B=0;if(b&1){b=Rb()|0;n=Q;Sqa(m);Wc=n;Xc=b;Qb(Xc|0)}b=k[q>>2]|0;c:do if((b|0)>0){n=(k[f>>2]|0)+-1|0;Zc=(k[C>>2]|0)+-1|0;Uc=g+8|0;$c=(k[E>>2]|0)+-1|0;_c=g+16|0;Yc=(k[x>>2]|0)+-1|0;hd=g+24|0;gd=b;s=0;while(1){Jc=(ma(n,gd)|0)+s|0;bd=(Jka(c,113331)|0)+(Jc<<3)|0;p[g>>3]=+p[bd>>3];bd=(ma(Zc,k[q>>2]|0)|0)+s|0;Jc=(Jka(c,113331)|0)+(bd<<3)|0;p[Uc>>3]=+p[Jc>>3];Jc=(ma($c,k[q>>2]|0)|0)+s|0;bd=(Jka(c,113331)|0)+(Jc<<3)|0;p[_c>>3]=+p[bd>>3];bd=(ma(Yc,k[q>>2]|0)|0)+s|0;Jc=(Jka(c,113331)|0)+(bd<<3)|0;p[hd>>3]=+p[Jc>>3];Jc=Qqa(16)|0;B=0;ib(286,Jc|0,179,g|0,738);bd=B;B=0;if(bd&1){id=Jc;break}bd=(Jka(c,113303)|0)+(s<<3)|0;XH(m,Jc,~~+p[bd>>3]);s=s+1|0;gd=k[q>>2]|0;if((s|0)>=(gd|0))break c}gd=Rb()|0;s=Q;Sqa(id);Wc=s;Xc=gd;Qb(Xc|0)}while(0);mC(k[a+16>>2]|0,m)|0;r=d;return}function Yw(a,b,c){a=a|0;b=b|0;c=c|0;Xw(a+-4|0,b,c);return}function Zw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;d=r;r=r+368|0;e=d+356|0;f=d+352|0;g=d+216|0;h=d+200|0;i=d+48|0;j=d+36|0;l=d+64|0;m=d+24|0;n=d+12|0;o=d;k[f>>2]=0;q=iz(a,k[a+44>>2]|0)|0;rp(a,f,534,943);s=Rqa(q>>>0>536870911?-1:q<<3)|0;a:do if((q|0)>0){u=k[f>>2]|0;v=0;while(1){w=+p[b+(k[u+(v<<2)>>2]<<3)>>3];p[s+(v<<3)>>3]=w;x=+$(+w);p[t>>3]=x;y=k[t>>2]|0;z=k[t+4>>2]|0;if(z>>>0>2146435072|(z|0)==2146435072&y>>>0>0){A=6;break}v=v+1|0;if((y|0)==0&(z|0)==2146435072){A=30;break}if((v|0)>=(q|0))break a}if((A|0)==6){v=g+56|0;u=g+4|0;k[g>>2]=27524;k[v>>2]=27544;B=0;wa(508,g+56|0,u|0);z=B;B=0;if(z&1){z=Rb()|0;C=Q;D=z;vva(v);Qb(D|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[v>>2]=27488;B=0;va(448,u|0);z=B;B=0;do if(z&1){y=Rb()|0;E=Q;F=y}else{k[u>>2]=27560;y=g+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,u|0,e|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(e);Yua(y);Ava(u);E=H;F=G;break}Yua(e);B=0;G=Ia(40,g|0,135564,28)|0;H=B;B=0;b:do if(!(H&1)?(B=0,Xa(239,G|0,0)|0,I=B,B=0,!(I&1)):0){I=Ab(20)|0;B=0;eb(502,h|0,73108,73);J=B;B=0;do if(!(J&1)){B=0;eb(502,i|0,74717,29);K=B;B=0;if(K&1){K=Rb()|0;L=Q;Yua(h);M=K;N=L;break}B=0;wa(510,j|0,u|0);L=B;B=0;if(L&1){L=Rb()|0;O=Q;P=L;R=1}else{B=0;ua(163,I|0,h|0,i|0,482,j|0);L=B;B=0;if(L&1)S=1;else{B=0;eb(503,I|0,1240,229);B=0;S=0}L=Rb()|0;K=Q;Yua(j);O=K;P=L;R=S}Yua(i);Yua(h);if(R){M=P;N=O}else{T=P;U=O;break b}}else{L=Rb()|0;M=L;N=Q}while(0);zb(I|0);T=M;U=N}else A=21;while(0);if((A|0)==21){G=Rb()|0;T=G;U=Q}k[g>>2]=27468;k[v>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(v);V=U;W=T;Qb(W|0)}while(0);C=E;D=F;vva(v);Qb(D|0)}else if((A|0)==30){u=l+56|0;z=l+4|0;k[l>>2]=27524;k[u>>2]=27544;B=0;wa(508,l+56|0,z|0);G=B;B=0;if(G&1){G=Rb()|0;X=Q;Y=G;vva(u);Qb(Y|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[u>>2]=27488;B=0;va(448,z|0);G=B;B=0;do if(G&1){H=Rb()|0;Z=Q;_=H}else{k[z>>2]=27560;H=l+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[l+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,z|0,e|0);J=B;B=0;if(J&1){J=Rb()|0;L=Q;Yua(e);Yua(H);Ava(z);Z=L;_=J;break}Yua(e);B=0;J=Ia(40,l|0,135593,28)|0;L=B;B=0;c:do if(!(L&1)?(B=0,Xa(239,J|0,0)|0,K=B,B=0,!(K&1)):0){K=Ab(20)|0;B=0;eb(502,m|0,73108,73);aa=B;B=0;do if(!(aa&1)){B=0;eb(502,n|0,74717,29);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;Yua(m);da=ba;ea=ca;break}B=0;wa(510,o|0,z|0);ca=B;B=0;if(ca&1){ca=Rb()|0;fa=1;ga=Q;ha=ca}else{B=0;ua(163,K|0,m|0,n|0,483,o|0);ca=B;B=0;if(ca&1)ia=1;else{B=0;eb(503,K|0,1240,229);B=0;ia=0}ca=Rb()|0;ba=Q;Yua(o);fa=ia;ga=ba;ha=ca}Yua(n);Yua(m);if(fa){da=ha;ea=ga}else{ja=ga;ka=ha;break c}}else{ca=Rb()|0;da=ca;ea=Q}while(0);zb(K|0);ja=ea;ka=da}else A=45;while(0);if((A|0)==45){J=Rb()|0;ja=Q;ka=J}k[l>>2]=27468;k[u>>2]=27488;k[z>>2]=27560;Yua(H);Ava(z);vva(u);V=ja;W=ka;Qb(W|0)}while(0);X=Z;Y=_;vva(u);Qb(Y|0)}}while(0);Y=k[a+16>>2]|0;a=Qqa(16)|0;B=0;ib(286,a|0,c|0,s|0,738);c=B;B=0;if(c&1){c=Rb()|0;_=Q;Sqa(a);V=_;W=c;Qb(W|0)}mC(Y,a)|0;Tqa(s);s=k[f>>2]|0;if(!s){r=d;return}Tqa(s);r=d;return}function _w(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+32|0;c=b;xp(a,c,206);if($p(a)|0?((+p[c+24>>3]<0.0&1)+((+p[c+16>>3]<0.0&1)+((+p[c+8>>3]<0.0&1)+(+p[c>>3]<0.0&1)))|0)==1:0){d=1;r=b;return d|0}d=0;r=b;return d|0}function $w(a){a=a|0;var b=0,c=0;b=r;r=r+32|0;c=b;xp(a,c,287);r=b;return +p[c>>3]+ +p[c+8>>3]+ +p[c+16>>3]+ +p[c+24>>3]==3.0|0}function ax(a){a=a|0;var b=0,c=0;b=r;r=r+32|0;c=b;xp(a,c,288);r=b;return +p[c>>3]+ +p[c+8>>3]+ +p[c+16>>3]+ +p[c+24>>3]==3.0|0}function bx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;mz(a,b,c,d);return}function cx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;nz(a,b,c,d);return}function dx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;nz(a,b,c,d);return}function ex(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;nz(a,b,c,d);return}function fx(a){a=a|0;var b=0;a=Qqa(72)|0;B=0;va(492,a|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(a);Qb(b|0)}else return a|0;return 0}function gx(a,b){a=a|0;b=b|0;a=Qqa(72)|0;B=0;wa(518,a|0,b|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(a);Qb(b|0)}else return a|0;return 0}function hx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;c=r;r=r+16|0;b=c;f=b+4|0;g=b+8|0;Nw(a,b,f,g);a=Qqa(72)|0;h=k[b>>2]|0;b=k[f>>2]|0;f=k[g>>2]|0;B=0;g=Xa(248,d|0,e|0)|0;e=B;B=0;if(e&1){i=Rb()|0;j=Q;Sqa(a);Qb(i|0)}B=0;ua(168,a|0,h|0,b|0,f|0,g|0);g=B;B=0;if(g&1){i=Rb()|0;j=Q;Sqa(a);Qb(i|0)}else{r=c;return a|0}return 0}function ix(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=r;r=r+16|0;d=c;e=d+4|0;f=d+8|0;Mw(a,d,e,f);a=Qqa(72)|0;B=0;ua(168,a|0,k[d>>2]|0,k[e>>2]|0,k[f>>2]|0,b|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(a);Qb(b|0)}else{r=c;return a|0}return 0}function jx(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=r;r=r+16|0;d=c;e=d+4|0;f=d+8|0;Ow(a,d,e,f);a=Qqa(72)|0;B=0;ua(168,a|0,k[d>>2]|0,k[e>>2]|0,k[f>>2]|0,b|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(a);Qb(b|0)}else{r=c;return a|0}return 0}function kx(a,b,c){a=a|0;b=b|0;c=c|0;lz(a,b,c,k[a+44>>2]|0);return}function lx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;jz(a,b,c,d,k[a+44>>2]|0);return}function mx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;jz(a,b,c,d,Hc[k[(k[a>>2]|0)+504>>2]&511](a)|0);return}function nx(a,b,c){a=a|0;b=b|0;c=c|0;lz(a,b,c,Hc[k[(k[a>>2]|0)+404>>2]&511](a)|0);return}function ox(a,b,c){a=a|0;b=b|0;c=c|0;lz(a,b,c,Hc[k[(k[a>>2]|0)+460>>2]&511](a)|0);return}function px(a,b,c){a=a|0;b=b|0;c=c|0;lz(a,b,c,Hc[k[(k[a>>2]|0)+504>>2]&511](a)|0);return}function qx(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0;d=+p[c+48>>3];e=+p[c>>3]-d;f=+p[c+24>>3]-d;d=+p[c+56>>3];g=+p[c+8>>3]-d;h=+p[c+32>>3]-d;d=+p[c+64>>3];i=+p[c+16>>3]-d;j=+p[c+40>>3]-d;d=g*j-i*h;k=i*f-j*e;j=h*e-g*f;f=+aa(+(j*j+(d*d+k*k)));p[b>>3]=-d/f;p[b+8>>3]=-k/f;p[b+16>>3]=-j/f;return}function rx(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0.0,g=0.0,h=0.0,i=0.0;a=r;r=r+48|0;d=a+24|0;e=a;f=+p[c>>3];p[d>>3]=+p[c+24>>3]-f;g=+p[c+8>>3];p[d+8>>3]=+p[c+32>>3]-g;h=+p[c+16>>3];p[d+16>>3]=+p[c+40>>3]-h;p[e>>3]=+p[c+48>>3]-f;p[e+8>>3]=+p[c+56>>3]-g;p[e+16>>3]=+p[c+64>>3]-h;IY(b,d,e);h=+p[b>>3];e=b+8|0;g=+p[e>>3];d=b+16|0;f=+p[d>>3];i=+aa(+(h*h+g*g+f*f));p[b>>3]=h/i;p[e>>3]=g/i;p[d>>3]=f/i;r=a;return}function sx(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0;d=+p[c+48>>3];e=+p[c>>3]-d;f=+p[c+24>>3]-d;d=+p[c+56>>3];g=+p[c+8>>3]-d;h=+p[c+32>>3]-d;d=+p[c+64>>3];i=+p[c+16>>3]-d;j=+p[c+40>>3]-d;d=g*j-i*h;k=i*f-j*e;j=h*e-g*f;f=+aa(+(j*j+(d*d+k*k)));p[b>>3]=d/f;p[b+8>>3]=k/f;p[b+16>>3]=j/f;return}function tx(a){a=a|0;return iz(a,Hc[k[(k[a>>2]|0)+404>>2]&511](a)|0)|0}function ux(a){a=a|0;return iz(a,Hc[k[(k[a>>2]|0)+504>>2]&511](a)|0)|0}function vx(a){a=a|0;return 623}function wx(a){a=a|0;return pz(a,k[a+44>>2]|0)|0}function xx(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=r;r=r+16|0;e=d;a:do if(c){switch(k[a+44>>2]|0){case 752:{k[e>>2]=k[7822];k[e+4>>2]=k[7823];k[e+8>>2]=k[7824];VN(c,b,3,e);break a;break}case 741:break;default:break a}f=a+20|0;g=eo(k[(k[f>>2]|0)+16>>2]|0,534,943)|0;h=eo(k[k[f>>2]>>2]|0,534,943)|0;i=(eo(k[(k[f>>2]|0)+4>>2]|0,534,943)|0)+h|0;h=(eo(k[(k[f>>2]|0)+8>>2]|0,534,943)|0)+i|0;i=(eo(k[(k[f>>2]|0)+12>>2]|0,534,943)|0)+h|0;h=Rqa(g>>>0>1073741823?-1:g<<2)|0;if((g|0)>0){f=0;do{k[h+(f<<2)>>2]=f+i;f=f+1|0}while((f|0)!=(g|0))}VN(c,b,g,h);Tqa(h)}while(0);if(!b){r=d;return}switch(k[a+44>>2]|0){case 752:{k[e>>2]=k[7822];k[e+4>>2]=k[7823];k[e+8>>2]=k[7824];NN(b,3,e);r=d;return}case 741:{e=a+20|0;a=eo(k[(k[e>>2]|0)+16>>2]|0,534,943)|0;c=(eo(k[k[e>>2]>>2]|0,534,943)|0)+(eo(k[(k[e>>2]|0)+4>>2]|0,534,943)|0)+(eo(k[(k[e>>2]|0)+8>>2]|0,534,943)|0)+(eo(k[(k[e>>2]|0)+12>>2]|0,534,943)|0)|0;e=Rqa(a>>>0>1073741823?-1:a<<2)|0;if((a|0)>0){f=0;do{k[e+(f<<2)>>2]=f+c;f=f+1|0}while((f|0)!=(a|0))}NN(b,a,e);Tqa(e);r=d;return}default:{r=d;return}}}function yx(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0;b=r;r=r+448|0;c=b+428|0;d=b+424|0;e=b+64|0;f=b+56|0;g=b+48|0;h=b;i=b+288|0;j=b+272|0;l=b+120|0;m=b+108|0;n=b+136|0;o=b+96|0;q=b+84|0;s=b+72|0;t=Hc[k[(k[a>>2]|0)+164>>2]&511](a)|0;u=a+16|0;kC(k[u>>2]|0,d,533);v=(Np(a)|0)^1;if((k[d>>2]|0)!=542|v){r=b;return}v=oC(k[u>>2]|0,642)|0;d=oC(k[u>>2]|0,643)|0;w=oC(k[u>>2]|0,928)|0;u=Rqa(t>>>0>536870911?-1:t<<3)|0;wp(a,u,287);t=Qqa(72)|0;B=0;va(492,t|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Sqa(t);z=y;A=x;Qb(A|0)}a:do if((Hc[k[(k[a>>2]|0)+396>>2]&511](a)|0)>0){x=h+24|0;y=h+8|0;C=h+32|0;D=h+16|0;E=h+40|0;F=a+20|0;G=0;while(1){if(+p[u+(G<<3)>>3]==1.0){H=k[(k[t>>2]|0)+32>>2]|0;I=Hc[k[(k[a>>2]|0)+504>>2]&511](a)|0;nd[H&1023](t,I,G);nd[k[(k[v>>2]|0)+48>>2]&1023](v,e,t);nd[k[(k[d>>2]|0)+48>>2]&1023](d,f,t);nd[k[(k[w>>2]|0)+48>>2]&1023](w,g,t);p[h>>3]=1.0;J=+p[e>>3];p[x>>3]=-J;p[y>>3]=0.0;p[C>>3]=-+p[f>>3];p[D>>3]=J;p[E>>3]=1.0;I=+p[g>>3]>0.0;H=(co(k[(k[F>>2]|0)+(G<<2)>>2]|0)|0)==543;if(I){if(!H){K=G;L=11;break}Vn(k[(k[F>>2]|0)+(G<<2)>>2]|0,2)}else{if(!H){M=G;L=40;break}Zn(k[(k[F>>2]|0)+(G<<2)>>2]|0,2)}NY((k[(k[F>>2]|0)+(G<<2)>>2]|0)+72|0,h)}G=G+1|0;if((G|0)>=(Hc[k[(k[a>>2]|0)+396>>2]&511](a)|0))break a}if((L|0)==11){G=i+56|0;E=i+4|0;k[i>>2]=27524;k[G>>2]=27544;B=0;wa(508,i+56|0,E|0);D=B;B=0;if(D&1){D=Rb()|0;N=Q;O=D;vva(G);Qb(O|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[G>>2]=27488;B=0;va(448,E|0);D=B;B=0;do if(D&1){C=Rb()|0;P=Q;R=C}else{k[E>>2]=27560;C=i+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[i+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,E|0,c|0);y=B;B=0;if(y&1){y=Rb()|0;x=Q;Yua(c);Yua(C);Ava(E);P=x;R=y;break}Yua(c);B=0;y=Ia(40,i|0,74836,27)|0;x=B;B=0;b:do if(((((!(x&1)?(B=0,H=ya(431,k[(k[F>>2]|0)+(K<<2)>>2]|0)|0,I=B,B=0,!(I&1)):0)?(B=0,I=ya(427,H|0)|0,H=B,B=0,!(H&1)):0)?(H=Lta(I)|0,B=0,S=Ia(40,y|0,I|0,H|0)|0,H=B,B=0,!(H&1)):0)?(B=0,H=Ia(40,S|0,146481,18)|0,S=B,B=0,!(S&1)):0)?(B=0,Xa(239,H|0,0)|0,H=B,B=0,!(H&1)):0){H=Ab(20)|0;B=0;eb(502,j|0,73108,73);S=B;B=0;do if(!(S&1)){B=0;eb(502,l|0,74864,29);I=B;B=0;if(I&1){I=Rb()|0;T=Q;Yua(j);U=I;V=T;break}B=0;wa(510,m|0,E|0);T=B;B=0;if(T&1){T=Rb()|0;W=T;X=Q;Y=1}else{B=0;ua(163,H|0,j|0,l|0,774,m|0);T=B;B=0;if(T&1)Z=1;else{B=0;eb(503,H|0,1240,229);B=0;Z=0}T=Rb()|0;I=Q;Yua(m);W=T;X=I;Y=Z}Yua(l);Yua(j);if(Y){U=W;V=X}else{_=W;$=X;break b}}else{I=Rb()|0;U=I;V=Q}while(0);zb(H|0);_=U;$=V}else L=30;while(0);if((L|0)==30){y=Rb()|0;_=y;$=Q}k[i>>2]=27468;k[G>>2]=27488;k[E>>2]=27560;Yua(C);Ava(E);vva(G);z=$;A=_;Qb(A|0)}while(0);N=P;O=R;vva(G);Qb(O|0)}else if((L|0)==40){E=n+56|0;D=n+4|0;k[n>>2]=27524;k[E>>2]=27544;B=0;wa(508,n+56|0,D|0);y=B;B=0;if(y&1){y=Rb()|0;aa=Q;ba=y;vva(E);Qb(ba|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[E>>2]=27488;B=0;va(448,D|0);y=B;B=0;do if(y&1){x=Rb()|0;ca=Q;da=x}else{k[D>>2]=27560;x=n+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[n+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,D|0,c|0);S=B;B=0;if(S&1){S=Rb()|0;I=Q;Yua(c);Yua(x);Ava(D);ca=I;da=S;break}Yua(c);B=0;S=Ia(40,n|0,74836,27)|0;I=B;B=0;c:do if(((((!(I&1)?(B=0,T=ya(431,k[(k[F>>2]|0)+(M<<2)>>2]|0)|0,ea=B,B=0,!(ea&1)):0)?(B=0,ea=ya(427,T|0)|0,T=B,B=0,!(T&1)):0)?(T=Lta(ea)|0,B=0,fa=Ia(40,S|0,ea|0,T|0)|0,T=B,B=0,!(T&1)):0)?(B=0,T=Ia(40,fa|0,146481,18)|0,fa=B,B=0,!(fa&1)):0)?(B=0,Xa(239,T|0,0)|0,T=B,B=0,!(T&1)):0){T=Ab(20)|0;B=0;eb(502,o|0,73108,73);fa=B;B=0;do if(!(fa&1)){B=0;eb(502,q|0,74864,29);ea=B;B=0;if(ea&1){ea=Rb()|0;ga=Q;Yua(o);ha=ea;ia=ga;break}B=0;wa(510,s|0,D|0);ga=B;B=0;if(ga&1){ga=Rb()|0;ja=1;ka=Q;la=ga}else{B=0;ua(163,T|0,o|0,q|0,780,s|0);ga=B;B=0;if(ga&1)ma=1;else{B=0;eb(503,T|0,1240,229);B=0;ma=0}ga=Rb()|0;ea=Q;Yua(s);ja=ma;ka=ea;la=ga}Yua(q);Yua(o);if(ja){ha=la;ia=ka}else{na=ka;oa=la;break c}}else{ga=Rb()|0;ha=ga;ia=Q}while(0);zb(T|0);na=ia;oa=ha}else L=59;while(0);if((L|0)==59){S=Rb()|0;na=Q;oa=S}k[n>>2]=27468;k[E>>2]=27488;k[D>>2]=27560;Yua(x);Ava(D);vva(E);z=na;A=oa;Qb(A|0)}while(0);aa=ca;ba=da;vva(E);Qb(ba|0)}}while(0);Tqa(u);Ec[k[(k[t>>2]|0)+4>>2]&1023](t);r=b;return}function zx(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=a+20|0;c=a+48|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;b=k[c>>2]|0;if((b|0)>0){d=a+52|0;e=b;b=0;while(1){f=k[(k[d>>2]|0)+(b<<2)>>2]|0;if(!f)g=e;else{Dla(f);g=k[c>>2]|0}b=b+1|0;if((b|0)>=(g|0))break;else e=g}}Dla(k[a+56>>2]|0);Dla(k[a+60>>2]|0);Dla(k[a+64>>2]|0);g=k[a+68>>2]|0;if(!g)return;Dla(g);return}function Ax(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;e=r;r=r+16|0;d=e;cO(f,d,482);f=k[d>>2]|0;k[a+44>>2]=k[(k[a+40>>2]|0)+(f<<2)>>2];d=k[(k[a+52>>2]|0)+(f<<2)>>2]|0;if(!d){k[a+20>>2]=0;r=e;return}else{f=Gla(d)|0;k[a+20>>2]=f;r=e;return}}function Bx(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=r;r=r+16|0;c=b+8|0;d=b+4|0;e=b;Mw(a,c,d,e);f=Cx(a,k[c>>2]|0,k[d>>2]|0,k[e>>2]|0)|0;r=b;return f|0}function Cx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;e=r;r=r+16|0;f=e;g=a+36|0;cO(k[g>>2]|0,f,482);h=Qqa(72)|0;B=0;va(461,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;Sqa(h);Qb(l|0)}i=h+48|0;B=0;va(462,i|0);m=B;B=0;do if(!(m&1)){B=0;n=B;B=0;if(n&1){n=Rb()|0;o=Q;Tq(i);p=o;q=n;break}else{k[h>>2]=30040;k[h+4>>2]=30604;k[h+8>>2]=k[a+8>>2];n=uC(k[a+16>>2]|0,b,c,d)|0;k[h+16>>2]=n;k[h+36>>2]=k[g>>2];k[h+44>>2]=738;Zq(a+48|0,i,b,c,d);n=k[a+28>>2]|0;o=ed[k[(k[n>>2]|0)+32>>2]&511](n,h)|0;k[h+28>>2]=o;o=Gla(k[(k[h+52>>2]|0)+(k[f>>2]<<2)>>2]|0)|0;k[h+20>>2]=o;o=Gla(k[h+56>>2]|0)|0;k[h+24>>2]=o;o=Fla(k[h+64>>2]|0)|0;k[h+32>>2]=o;r=e;return h|0}}else{o=Rb()|0;p=Q;q=o}while(0);Qo(h);j=p;l=q;Sqa(h);Qb(l|0);return 0}function Dx(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=r;r=r+16|0;c=b+8|0;d=b+4|0;e=b;Ow(a,c,d,e);f=Cx(a,k[c>>2]|0,k[d>>2]|0,k[e>>2]|0)|0;r=b;return f|0}function Ex(a){a=a|0;return qz(a,k[a+44>>2]|0)|0}function Fx(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0;e=r;r=r+208|0;g=e+184|0;h=e+48|0;i=e+32|0;j=e+20|0;l=e+8|0;Gka(c,e,106352);zka(c,e+197|0,134866);zka(c,e+196|0,132257);k[(k[a+40>>2]|0)+(d<<2)>>2]=f;switch(f|0){case 738:{m=Rqa(16)|0;n=k[c+100>>2]|0;o=b<<2;p=k[c+72>>2]|0;k[m>>2]=(k[p+(o<<2)>>2]|0)+n;k[m+4>>2]=(k[p+((o|1)<<2)>>2]|0)+n;k[m+8>>2]=(k[p+((o|2)<<2)>>2]|0)+n;k[m+12>>2]=(k[p+((o|3)<<2)>>2]|0)+n;q=4;s=m;t=a+48|0;Xq(t,s,q,d);u=a+20|0;k[u>>2]=0;Tqa(s);v=k[a>>2]|0;w=v+548|0;x=k[w>>2]|0;nd[x&1023](a,b,c);r=e;return}case 741:case 740:{m=Rqa(20)|0;n=k[c+100>>2]|0;o=b<<2;p=k[c+72>>2]|0;k[m>>2]=(k[p+(o<<2)>>2]|0)+n;k[m+4>>2]=(k[p+((o|1)<<2)>>2]|0)+n;k[m+8>>2]=(k[p+((o|2)<<2)>>2]|0)+n;k[m+12>>2]=(k[p+((o|3)<<2)>>2]|0)+n;k[m+16>>2]=b+1+n+(k[c+52>>2]|0);q=5;s=m;t=a+48|0;Xq(t,s,q,d);u=a+20|0;k[u>>2]=0;Tqa(s);v=k[a>>2]|0;w=v+548|0;x=k[w>>2]|0;nd[x&1023](a,b,c);r=e;return}case 742:{m=Rqa(40)|0;n=k[c+100>>2]|0;o=b<<2;p=k[c+72>>2]|0;k[m>>2]=(k[p+(o<<2)>>2]|0)+n;k[m+4>>2]=(k[p+((o|1)<<2)>>2]|0)+n;k[m+8>>2]=(k[p+((o|2)<<2)>>2]|0)+n;k[m+12>>2]=(k[p+((o|3)<<2)>>2]|0)+n;o=b*6|0;p=k[c+84>>2]|0;y=n+1+(k[c+52>>2]|0)|0;k[m+16>>2]=y+(k[p+(o<<2)>>2]|0);k[m+20>>2]=y+(k[p+((o|1)<<2)>>2]|0);k[m+24>>2]=y+(k[p+(o+2<<2)>>2]|0);k[m+28>>2]=y+(k[p+(o+3<<2)>>2]|0);k[m+32>>2]=y+(k[p+(o+4<<2)>>2]|0);k[m+36>>2]=y+(k[p+(o+5<<2)>>2]|0);q=10;s=m;t=a+48|0;Xq(t,s,q,d);u=a+20|0;k[u>>2]=0;Tqa(s);v=k[a>>2]|0;w=v+548|0;x=k[w>>2]|0;nd[x&1023](a,b,c);r=e;return}case 752:case 751:{m=Rqa(36)|0;o=k[c+100>>2]|0;p=b<<2;y=k[c+72>>2]|0;n=y+(p<<2)|0;k[m>>2]=(k[n>>2]|0)+o;z=y+((p|1)<<2)|0;k[m+4>>2]=(k[z>>2]|0)+o;A=y+((p|2)<<2)|0;k[m+8>>2]=(k[A>>2]|0)+o;C=y+((p|3)<<2)|0;k[m+12>>2]=(k[C>>2]|0)+o;p=k[c+52>>2]|0;k[m+16>>2]=b+1+o+p;y=p+o+(k[c+56>>2]|0)|0;k[m+20>>2]=y+(k[n>>2]|0);k[m+24>>2]=y+(k[z>>2]|0);k[m+28>>2]=y+(k[A>>2]|0);k[m+32>>2]=y+(k[C>>2]|0);q=9;s=m;t=a+48|0;Xq(t,s,q,d);u=a+20|0;k[u>>2]=0;Tqa(s);v=k[a>>2]|0;w=v+548|0;x=k[w>>2]|0;nd[x&1023](a,b,c);r=e;return}case 755:case 753:{m=Rqa(56)|0;C=k[c+100>>2]|0;y=b<<2;A=k[c+72>>2]|0;z=A+(y<<2)|0;k[m>>2]=(k[z>>2]|0)+C;n=A+((y|1)<<2)|0;k[m+4>>2]=(k[n>>2]|0)+C;o=A+((y|2)<<2)|0;k[m+8>>2]=(k[o>>2]|0)+C;p=A+((y|3)<<2)|0;k[m+12>>2]=(k[p>>2]|0)+C;y=k[c+52>>2]|0;A=b*6|0;D=k[c+84>>2]|0;E=C+1+y|0;k[m+16>>2]=E+(k[D+(A<<2)>>2]|0);k[m+20>>2]=E+(k[D+((A|1)<<2)>>2]|0);k[m+24>>2]=E+(k[D+(A+2<<2)>>2]|0);k[m+28>>2]=E+(k[D+(A+3<<2)>>2]|0);k[m+32>>2]=E+(k[D+(A+4<<2)>>2]|0);k[m+36>>2]=E+(k[D+(A+5<<2)>>2]|0);A=y+C+(k[c+64>>2]|0)|0;k[m+40>>2]=A+(k[z>>2]|0);k[m+44>>2]=A+(k[n>>2]|0);k[m+48>>2]=A+(k[o>>2]|0);k[m+52>>2]=A+(k[p>>2]|0);q=14;s=m;t=a+48|0;Xq(t,s,q,d);u=a+20|0;k[u>>2]=0;Tqa(s);v=k[a>>2]|0;w=v+548|0;x=k[w>>2]|0;nd[x&1023](a,b,c);r=e;return}case 754:{m=Rqa(40)|0;p=k[c+100>>2]|0;A=b<<2;o=k[c+72>>2]|0;k[m>>2]=(k[o+(A<<2)>>2]|0)+p;k[m+4>>2]=(k[o+((A|1)<<2)>>2]|0)+p;k[m+8>>2]=(k[o+((A|2)<<2)>>2]|0)+p;k[m+12>>2]=(k[o+((A|3)<<2)>>2]|0)+p;A=b*6|0;o=k[c+84>>2]|0;n=p+1+(k[c+52>>2]|0)|0;k[m+16>>2]=n+(k[o+(A<<2)>>2]|0);k[m+20>>2]=n+(k[o+((A|1)<<2)>>2]|0);k[m+24>>2]=n+(k[o+(A+2<<2)>>2]|0);k[m+28>>2]=n+(k[o+(A+3<<2)>>2]|0);k[m+32>>2]=n+(k[o+(A+4<<2)>>2]|0);k[m+36>>2]=n+(k[o+(A+5<<2)>>2]|0);q=10;s=m;t=a+48|0;Xq(t,s,q,d);u=a+20|0;k[u>>2]=0;Tqa(s);v=k[a>>2]|0;w=v+548|0;x=k[w>>2]|0;nd[x&1023](a,b,c);r=e;return}default:{e=h+56|0;c=h+4|0;k[h>>2]=27524;k[e>>2]=27544;B=0;wa(508,h+56|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;F=Q;G=b;vva(e);Qb(G|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[e>>2]=27488;B=0;va(448,c|0);b=B;B=0;do if(b&1){a=Rb()|0;H=Q;I=a}else{k[c>>2]=27560;a=h+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[h+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,c|0,g|0);x=B;B=0;if(x&1){x=Rb()|0;w=Q;Yua(g);Yua(a);Ava(c);H=w;I=x;break}Yua(g);B=0;x=Ia(40,h|0,145867,15)|0;w=B;B=0;if((((!(w&1)?(B=0,w=ya(427,f|0)|0,v=B,B=0,!(v&1)):0)?(v=Lta(w)|0,B=0,s=Ia(40,x|0,w|0,v|0)|0,v=B,B=0,!(v&1)):0)?(B=0,v=Ia(40,s|0,146481,18)|0,s=B,B=0,!(s&1)):0)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,i|0,73108,73);s=B;B=0;do if(!(s&1)){B=0;eb(502,j|0,74939,6);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(i);J=x;K=w;break}B=0;wa(510,l|0,c|0);w=B;B=0;if(w&1){w=Rb()|0;L=Q;M=w;N=1}else{B=0;ua(163,v|0,i|0,j|0,978,l|0);w=B;B=0;if(w&1)O=1;else{B=0;eb(503,v|0,1240,229);B=0;O=0}w=Rb()|0;x=Q;Yua(l);L=x;M=w;N=O}Yua(j);Yua(i);if(N){J=L;K=M}else{P=L;R=M;k[h>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(a);Ava(c);vva(e);Qb(R|0)}}else{w=Rb()|0;J=Q;K=w}while(0);zb(v|0);P=J;R=K;k[h>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(a);Ava(c);vva(e);Qb(R|0)}s=Rb()|0;P=Q;R=s;k[h>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(a);Ava(c);vva(e);Qb(R|0)}while(0);F=H;G=I;vva(e);Qb(G|0)}}}function Gx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;kz(a,b,c,d,738);return}function Hx(a){a=a|0;return rz(a,k[a+44>>2]|0)|0}function Ix(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0;h=r;r=r+64|0;i=h+56|0;j=h+48|0;l=h;Yo(a,l,c,d,e,f,g);m=k[a+28>>2]|0;Tc[k[(k[m>>2]|0)+108>>2]&15](m,j,3,c,d,e,f,g);Fp(a,i,l,+p[j>>3]);p[b>>3]=+p[i>>3];r=h;return}function Jx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0.0,o=0.0,q=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;e=r;r=r+224|0;f=e+208|0;g=e;h=e+72|0;i=e+56|0;j=e+44|0;l=e+32|0;m=Rqa(72)|0;xp(a,g,d);d=+p[g>>3]==0.0;n=+p[g+8>>3];if(d){if(n==0.0?+p[g+16>>3]==0.0:0){p[m>>3]=+p[c>>3];p[m+8>>3]=+p[c+8>>3];p[m+16>>3]=+p[c+16>>3];p[m+24>>3]=+p[c+24>>3];p[m+32>>3]=+p[c+32>>3];p[m+40>>3]=+p[c+40>>3];p[m+48>>3]=+p[c+48>>3];p[m+56>>3]=+p[c+56>>3];p[m+64>>3]=+p[c+64>>3];k[b>>2]=m;r=e;return}o=+p[g+8>>3];if(o==0.0?+p[g+24>>3]==0.0:0){p[m>>3]=+p[c>>3];p[m+8>>3]=+p[c+8>>3];p[m+16>>3]=+p[c+16>>3];p[m+24>>3]=+p[c+24>>3];p[m+32>>3]=+p[c+32>>3];p[m+40>>3]=+p[c+40>>3];p[m+48>>3]=+p[c+72>>3];p[m+56>>3]=+p[c+80>>3];p[m+64>>3]=+p[c+88>>3];k[b>>2]=m;r=e;return}else q=o}else q=n;n=+p[g+16>>3];if(q==0.0&n==0.0?+p[g+24>>3]==0.0:0){p[m>>3]=+p[c+24>>3];p[m+8>>3]=+p[c+32>>3];p[m+16>>3]=+p[c+40>>3];p[m+24>>3]=+p[c+48>>3];p[m+32>>3]=+p[c+56>>3];p[m+40>>3]=+p[c+64>>3];p[m+48>>3]=+p[c+72>>3];p[m+56>>3]=+p[c+80>>3];p[m+64>>3]=+p[c+88>>3];k[b>>2]=m;r=e;return}if(n==0.0&d?+p[g+24>>3]==0.0:0){p[m>>3]=+p[c+48>>3];p[m+8>>3]=+p[c+56>>3];p[m+16>>3]=+p[c+64>>3];p[m+24>>3]=+p[c>>3];p[m+32>>3]=+p[c+8>>3];p[m+40>>3]=+p[c+16>>3];p[m+48>>3]=+p[c+72>>3];p[m+56>>3]=+p[c+80>>3];p[m+64>>3]=+p[c+88>>3];k[b>>2]=m;r=e;return}e=h+56|0;m=h+4|0;k[h>>2]=27524;k[e>>2]=27544;B=0;wa(508,h+56|0,m|0);b=B;B=0;if(b&1){b=Rb()|0;s=Q;t=b;vva(e);Qb(t|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[e>>2]=27488;B=0;va(448,m|0);b=B;B=0;do if(b&1){c=Rb()|0;u=Q;v=c}else{k[m>>2]=27560;c=h+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,m|0,f|0);g=B;B=0;if(g&1){g=Rb()|0;d=Q;Yua(f);Yua(c);Ava(m);u=d;v=g;break}Yua(f);B=0;g=Ia(40,h|0,74946,16)|0;d=B;B=0;if(!(d&1)?(B=0,Xa(239,g|0,0)|0,g=B,B=0,!(g&1)):0){g=Ab(20)|0;B=0;eb(502,i|0,73108,73);d=B;B=0;do if(!(d&1)){B=0;eb(502,j|0,74963,23);a=B;B=0;if(a&1){a=Rb()|0;w=Q;Yua(i);x=w;y=a;break}B=0;wa(510,l|0,m|0);a=B;B=0;if(a&1){a=Rb()|0;z=Q;A=a;C=1}else{B=0;ua(163,g|0,i|0,j|0,1082,l|0);a=B;B=0;if(a&1)D=1;else{B=0;eb(503,g|0,1240,229);B=0;D=0}a=Rb()|0;w=Q;Yua(l);z=w;A=a;C=D}Yua(j);Yua(i);if(C){x=z;y=A}else{E=z;F=A;k[h>>2]=27468;k[e>>2]=27488;k[m>>2]=27560;Yua(c);Ava(m);vva(e);Qb(F|0)}}else{a=Rb()|0;x=Q;y=a}while(0);zb(g|0);E=x;F=y;k[h>>2]=27468;k[e>>2]=27488;k[m>>2]=27560;Yua(c);Ava(m);vva(e);Qb(F|0)}d=Rb()|0;E=Q;F=d;k[h>>2]=27468;k[e>>2]=27488;k[m>>2]=27560;Yua(c);Ava(m);vva(e);Qb(F|0)}while(0);s=u;t=v;vva(e);Qb(t|0)}function Kx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74181,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,43,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function Lx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,74214,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,45,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function Mx(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73975,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,46,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function Nx(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75327,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,47,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function Ox(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74235,18);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,48,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Px(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73945,29);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,51,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function Qx(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75312,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,49,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function Rx(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73925,19);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,50,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function Sx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74254,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,53,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function Tx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74301,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,54,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function Ux(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74333,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,56,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Vx(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,103020,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,62,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function Wx(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73906,18);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,63,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Xx(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73890,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,64,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function Yx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,73874,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,66,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function Zx(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74430,18);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,67,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return +(0.0)}function _x(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73851,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,68,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function $x(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,a|0,73283,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,75292,19);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(a);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,a|0,f|0,70,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(a);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(E|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function ay(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;f=r;r=r+192|0;e=f+176|0;d=f+40|0;c=f+24|0;b=f+12|0;a=f;f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,g|0,e|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(e);Yua(l);Ava(g);m=p;n=o;break}Yua(e);B=0;o=Ia(40,d|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,c|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,b|0,75268,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);v=u;w=t;break}B=0;wa(510,a|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,c|0,b|0,71,a|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(a);x=u;y=t;z=A}Yua(b);Yua(c);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(D|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function by(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73843,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,72,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function cy(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,80838,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,75,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function dy(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73815,27);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,77,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function ey(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73799,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,78,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function fy(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;f=r;r=r+192|0;e=f+176|0;d=f+40|0;c=f+24|0;b=f+12|0;a=f;f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,g|0,e|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(e);Yua(l);Ava(g);m=p;n=o;break}Yua(e);B=0;o=Ia(40,d|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,c|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,b|0,74539,26);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);v=u;w=t;break}B=0;wa(510,a|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,c|0,b|0,79,a|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(a);x=u;y=t;z=A}Yua(b);Yua(c);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(D|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function gy(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,103033,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,83,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function hy(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,103046,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,86,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function iy(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,103054,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,87,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function jy(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,103064,24);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,88,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function ky(a,b,c){a=a|0;b=+b;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;c=r;r=r+192|0;a=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,73283,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,74573,18);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,95,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(E|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function ly(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74624,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,96,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function my(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74656,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,97,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function ny(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;a=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,73283,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,74706,10);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,98,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(E|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function oy(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74747,38);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,101,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function py(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75251,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,89,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function qy(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73776,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,91,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function ry(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73761,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,94,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function sy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73737,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,105,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function ty(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,98621,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,108,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return +(0.0)}function uy(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,99206,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,109,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return +(0.0)}function vy(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;f=r;r=r+192|0;a=f+176|0;g=f+40|0;h=f+24|0;i=f+12|0;j=f;f=g+56|0;l=g+4|0;k[g>>2]=27524;k[f>>2]=27544;B=0;wa(508,g+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(f);Qb(o|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[f>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=g+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[g+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,l|0,a|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);Yua(p);Ava(l);q=u;s=t;break}Yua(a);B=0;t=Ia(40,g|0,149721,19)|0;u=B;B=0;a:do if(!(u&1)?(B=0,Xa(239,t|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,h|0,73283,85);w=B;B=0;do if(!(w&1)){B=0;eb(502,i|0,99206,8);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(h);z=y;A=x;break}B=0;wa(510,j|0,l|0);x=B;B=0;if(x&1){x=Rb()|0;C=Q;D=x;E=1}else{B=0;ua(163,v|0,h|0,i|0,110,j|0);x=B;B=0;if(x&1)F=1;else{B=0;eb(503,v|0,1240,229);B=0;F=0}x=Rb()|0;y=Q;Yua(j);C=y;D=x;E=F}Yua(i);Yua(h);if(E){z=C;A=D}else{G=C;H=D;break a}}else{x=Rb()|0;z=Q;A=x}while(0);zb(v|0);G=z;H=A}else I=16;while(0);if((I|0)==16){t=Rb()|0;G=Q;H=t}k[g>>2]=27468;k[f>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(f);Qb(H|0)}while(0);n=q;o=s;vva(f);Qb(o|0);return +(0.0)}function wy(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73723,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,112,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return +(0.0)}function xy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,99229,6);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,113,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0);return +(0.0)}function yy(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75240,10);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,114,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return +(0.0)}function zy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75231,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,117,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0);return 0}function Ay(a,b,c,d,e,f){a=a|0;b=b|0;c=+c;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;f=r;r=r+192|0;e=f+176|0;b=f+40|0;a=f+24|0;g=f+12|0;h=f;f=b+56|0;i=b+4|0;k[b>>2]=27524;k[f>>2]=27544;B=0;wa(508,b+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(f);Qb(m|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[f>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=b+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[b+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,i|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);Yua(n);Ava(i);o=s;p=q;break}Yua(e);B=0;q=Ia(40,b|0,149721,19)|0;s=B;B=0;a:do if(!(s&1)?(B=0,Xa(239,q|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,a|0,73283,85);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,75231,8);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(a);x=w;y=v;break}B=0;wa(510,h|0,i|0);v=B;B=0;if(v&1){v=Rb()|0;z=Q;A=v;C=1}else{B=0;ua(163,t|0,a|0,g|0,119,h|0);v=B;B=0;if(v&1)D=1;else{B=0;eb(503,t|0,1240,229);B=0;D=0}v=Rb()|0;w=Q;Yua(h);z=w;A=v;C=D}Yua(g);Yua(a);if(C){x=z;y=A}else{E=z;F=A;break a}}else{v=Rb()|0;x=Q;y=v}while(0);zb(t|0);E=x;F=y}else G=16;while(0);if((G|0)==16){q=Rb()|0;E=Q;F=q}k[b>>2]=27468;k[f>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(f);Qb(F|0)}while(0);l=o;m=p;vva(f);Qb(m|0);return 0}function By(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73710,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,121,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0);return 0}function Cy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73680,29);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,126,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function Dy(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73663,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,128,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Ey(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73635,27);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,129,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function Fy(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73618,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,130,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Gy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73607,10);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,133,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0);return 0}function Hy(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73586,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,139,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Iy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74894,26);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,144,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function Jy(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73562,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,146,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Ky(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;a=r;r=r+192|0;g=a+176|0;h=a+40|0;i=a+24|0;j=a+12|0;l=a;a=h+56|0;m=h+4|0;k[h>>2]=27524;k[a>>2]=27544;B=0;wa(508,h+56|0,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(a);Qb(p|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[a>>2]=27488;B=0;va(448,m|0);n=B;B=0;do if(n&1){q=Rb()|0;s=Q;t=q}else{k[m>>2]=27560;q=h+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[h+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,m|0,g|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(g);Yua(q);Ava(m);s=v;t=u;break}Yua(g);B=0;u=Ia(40,h|0,149721,19)|0;v=B;B=0;a:do if(!(v&1)?(B=0,Xa(239,u|0,0)|0,w=B,B=0,!(w&1)):0){w=Ab(20)|0;B=0;eb(502,i|0,73283,85);x=B;B=0;do if(!(x&1)){B=0;eb(502,j|0,73539,22);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(i);A=z;C=y;break}B=0;wa(510,l|0,m|0);y=B;B=0;if(y&1){y=Rb()|0;D=Q;E=y;F=1}else{B=0;ua(163,w|0,i|0,j|0,150,l|0);y=B;B=0;if(y&1)G=1;else{B=0;eb(503,w|0,1240,229);B=0;G=0}y=Rb()|0;z=Q;Yua(l);D=z;E=y;F=G}Yua(j);Yua(i);if(F){A=D;C=E}else{H=D;I=E;break a}}else{y=Rb()|0;A=Q;C=y}while(0);zb(w|0);H=A;I=C}else J=16;while(0);if((J|0)==16){u=Rb()|0;H=Q;I=u}k[h>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(a);Qb(I|0)}while(0);o=s;p=t;vva(a);Qb(p|0);return +(0.0)}function Ly(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,93069,18);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,151,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function My(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,93088,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,152,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function Ny(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,92779,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,153,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function Oy(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,99320,11);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,154,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function Py(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73529,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,156,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function Qy(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,103089,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,157,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function Ry(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,103106,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,158,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function Sy(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,103123,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,159,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function Ty(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73496,32);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,161,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function Uy(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73464,31);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,162,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function Vy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73437,26);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,163,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0);return 0}function Wy(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,73411,25);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,164,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function Xy(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73392,18);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,167,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Yy(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73369,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,168,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Zy(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,75023,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,174,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function _y(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;var i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;f=r;r=r+192|0;e=f+176|0;d=f+40|0;c=f+24|0;b=f+12|0;a=f;f=d+56|0;i=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(f);Qb(m|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=d+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[d+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,i|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);Yua(n);Ava(i);o=s;p=q;break}Yua(e);B=0;q=Ia(40,d|0,149435,20)|0;s=B;B=0;a:do if(!(s&1)?(B=0,Xa(239,q|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,c|0,73283,85);u=B;B=0;do if(!(u&1)){B=0;eb(502,b|0,75190,20);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);x=w;y=v;break}B=0;wa(510,a|0,i|0);v=B;B=0;if(v&1){v=Rb()|0;z=Q;A=v;C=1}else{B=0;ua(163,t|0,c|0,b|0,177,a|0);v=B;B=0;if(v&1)D=1;else{B=0;eb(503,t|0,1240,229);B=0;D=0}v=Rb()|0;w=Q;Yua(a);z=w;A=v;C=D}Yua(b);Yua(c);if(C){x=z;y=A}else{E=z;F=A;break a}}else{v=Rb()|0;x=Q;y=v}while(0);zb(t|0);E=x;F=y}else G=16;while(0);if((G|0)==16){q=Rb()|0;E=Q;F=q}k[d>>2]=27468;k[f>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(f);Qb(F|0)}while(0);l=o;m=p;vva(f);Qb(m|0)}function $y(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;var i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;f=r;r=r+192|0;e=f+176|0;d=f+40|0;c=f+24|0;b=f+12|0;a=f;f=d+56|0;i=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(f);Qb(m|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=d+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[d+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,i|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);Yua(n);Ava(i);o=s;p=q;break}Yua(e);B=0;q=Ia(40,d|0,149435,20)|0;s=B;B=0;a:do if(!(s&1)?(B=0,Xa(239,q|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,c|0,73283,85);u=B;B=0;do if(!(u&1)){B=0;eb(502,b|0,75166,23);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);x=w;y=v;break}B=0;wa(510,a|0,i|0);v=B;B=0;if(v&1){v=Rb()|0;z=Q;A=v;C=1}else{B=0;ua(163,t|0,c|0,b|0,178,a|0);v=B;B=0;if(v&1)D=1;else{B=0;eb(503,t|0,1240,229);B=0;D=0}v=Rb()|0;w=Q;Yua(a);z=w;A=v;C=D}Yua(b);Yua(c);if(C){x=z;y=A}else{E=z;F=A;break a}}else{v=Rb()|0;x=Q;y=v}while(0);zb(t|0);E=x;F=y}else G=16;while(0);if((G|0)==16){q=Rb()|0;E=Q;F=q}k[d>>2]=27468;k[f>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(f);Qb(F|0)}while(0);l=o;m=p;vva(f);Qb(m|0)}function az(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149435,20)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75153,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,180,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return +(0.0)}function bz(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149435,20)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75143,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,179,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function cz(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149435,20)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75133,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,171,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function dz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,73283,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74786,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,102,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function ez(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;dz(a+-4|0,b,c,d)}function fz(a){a=a|0;return}function gz(a){a=a|0;return}function hz(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0;g=r;r=r+240|0;h=g;i=iz(0,f)|0;jz(a,h,d,e,f);f=(i|0)>0;if(f){j=0.0;e=0;while(1){k=j+ +p[h+(e<<3)>>3]*+p[c+(e<<3)>>3];e=e+1|0;if((e|0)==(i|0)){l=k;break}else j=k}if(f){j=0.0;e=0;while(1){k=j+ +p[h+(e+i<<3)>>3]*+p[c+(e<<3)>>3];e=e+1|0;if((e|0)==(i|0)){m=k;break}else j=k}if(f){f=i<<1;j=0.0;e=0;while(1){k=j+ +p[h+(e+f<<3)>>3]*+p[c+(e<<3)>>3];e=e+1|0;if((e|0)==(i|0)){n=l;o=m;q=k;break}else j=k}}else{n=l;o=m;q=0.0}}else{n=l;o=0.0;q=0.0}}else{n=0.0;o=0.0;q=0.0}p[b>>3]=n;p[b+8>>3]=o;p[b+16>>3]=q;r=g;return}function iz(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;do switch(b|0){case 738:{h=4;r=a;return h|0}case 739:{h=4;r=a;return h|0}case 740:{h=5;r=a;return h|0}case 741:{h=5;r=a;return h|0}case 742:{h=10;r=a;return h|0}case 749:{h=8;r=a;return h|0}case 750:{h=8;r=a;return h|0}case 752:{h=9;r=a;return h|0}case 751:{h=9;r=a;return h|0}case 753:{h=14;r=a;return h|0}case 754:{h=10;r=a;return h|0}case 755:{h=14;r=a;return h|0}case 736:{h=1;r=a;return h|0}default:{i=d+56|0;j=d+4|0;k[d>>2]=27524;k[i>>2]=27544;B=0;wa(508,d+56|0,j|0);l=B;B=0;if(l&1){l=Rb()|0;m=Q;n=l;vva(i);Qb(n|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[i>>2]=27488;B=0;va(448,j|0);l=B;B=0;do if(l&1){o=Rb()|0;p=Q;q=o}else{k[j>>2]=27560;o=d+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,j|0,c|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(c);Yua(o);Ava(j);p=t;q=s;break}Yua(c);B=0;s=Ia(40,d|0,132447,13)|0;t=B;B=0;if((((!(t&1)?(B=0,t=ya(427,b|0)|0,u=B,B=0,!(u&1)):0)?(u=Lta(t)|0,B=0,v=Ia(40,s|0,t|0,u|0)|0,u=B,B=0,!(u&1)):0)?(B=0,u=Ia(40,v|0,146481,18)|0,v=B,B=0,!(v&1)):0)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,e|0,73996,76);v=B;B=0;do if(!(v&1)){B=0;eb(502,f|0,75442,13);t=B;B=0;if(t&1){t=Rb()|0;s=Q;Yua(e);w=s;x=t;break}B=0;wa(510,g|0,j|0);t=B;B=0;if(t&1){t=Rb()|0;y=Q;z=t;A=1}else{B=0;ua(163,u|0,e|0,f|0,361,g|0);t=B;B=0;if(t&1)C=1;else{B=0;eb(503,u|0,1240,229);B=0;C=0}t=Rb()|0;s=Q;Yua(g);y=s;z=t;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;k[d>>2]=27468;k[i>>2]=27488;k[j>>2]=27560;Yua(o);Ava(j);vva(i);Qb(E|0)}}else{t=Rb()|0;w=Q;x=t}while(0);zb(u|0);D=w;E=x;k[d>>2]=27468;k[i>>2]=27488;k[j>>2]=27560;Yua(o);Ava(j);vva(i);Qb(E|0)}v=Rb()|0;D=Q;E=v;k[d>>2]=27468;k[i>>2]=27488;k[j>>2]=27560;Yua(o);Ava(j);vva(i);Qb(E|0)}while(0);m=p;n=q;vva(i);Qb(n|0)}}while(0);return 0}function jz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0;a=r;r=r+384|0;f=a+312|0;g=a+240|0;h=a;i=iz(0,e)|0;oz(0,h,d,e);j=+p[c>>3];k=+p[c+48>>3];l=+p[c+72>>3];m=+p[c+8>>3];n=+p[c+32>>3];o=+p[c+56>>3];q=+p[c+80>>3];s=+p[c+16>>3];t=+p[c+40>>3];u=+p[c+64>>3];v=+p[c+88>>3];p[f>>3]=+p[c+24>>3]-j;p[f+8>>3]=n-m;p[f+16>>3]=t-s;p[f+24>>3]=k-j;p[f+32>>3]=o-m;p[f+40>>3]=u-s;p[f+48>>3]=l-j;p[f+56>>3]=q-m;p[f+64>>3]=v-s;eY(g,f);if((i|0)<=0){r=a;return}s=+p[g>>3];v=+p[g+8>>3];m=+p[g+16>>3];f=i<<1;q=+p[g+24>>3];j=+p[g+32>>3];l=+p[g+40>>3];u=+p[g+48>>3];o=+p[g+56>>3];k=+p[g+64>>3];g=0;do{t=+p[h+(g<<3)>>3];c=g+i|0;n=+p[h+(c<<3)>>3];e=g+f|0;w=+p[h+(e<<3)>>3];p[b+(g<<3)>>3]=s*t+v*n+m*w;p[b+(c<<3)>>3]=q*t+j*n+l*w;p[b+(e<<3)>>3]=u*t+o*n+k*w;g=g+1|0}while((g|0)!=(i|0));r=a;return}function kz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0.0,j=0.0,k=0.0;a=r;r=r+80|0;f=a;g=iz(0,e)|0;lz(0,f,d,e);if((g|0)>0){h=0;i=0.0}else{j=0.0;p[b>>3]=j;r=a;return}while(1){k=i+ +p[f+(h<<3)>>3]*+p[c+(h<<3)>>3];h=h+1|0;if((h|0)==(g|0)){j=k;break}else i=k}p[b>>3]=j;r=a;return}function lz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0.0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;e=a+176|0;f=a+40|0;g=a+24|0;h=a+12|0;i=a;switch(d|0){case 736:{p[b>>3]=1.0;r=a;return}case 739:case 738:{p[b>>3]=+p[c+40>>3];p[b+8>>3]=+p[c+48>>3];p[b+16>>3]=+p[c+56>>3];p[b+24>>3]=+p[c+64>>3];r=a;return}case 741:case 740:{j=c+40|0;p[b>>3]=+p[j>>3];l=c+48|0;p[b+8>>3]=+p[l>>3];m=c+56|0;p[b+16>>3]=+p[m>>3];n=c+64|0;p[b+24>>3]=+p[n>>3];p[b+32>>3]=+p[j>>3]*256.0*+p[l>>3]*+p[m>>3]*+p[n>>3];r=a;return}case 742:{n=c+40|0;o=+p[n>>3];p[b>>3]=o*(o*2.0+-1.0);m=c+48|0;o=+p[m>>3];p[b+8>>3]=o*(o*2.0+-1.0);l=c+56|0;o=+p[l>>3];p[b+16>>3]=o*(o*2.0+-1.0);j=c+64|0;o=+p[j>>3];p[b+24>>3]=o*(o*2.0+-1.0);p[b+32>>3]=+p[m>>3]*4.0*+p[l>>3];p[b+40>>3]=+p[n>>3]*4.0*+p[l>>3];p[b+48>>3]=+p[n>>3]*4.0*+p[m>>3];p[b+56>>3]=+p[m>>3]*4.0*+p[j>>3];p[b+64>>3]=+p[l>>3]*4.0*+p[j>>3];p[b+72>>3]=+p[n>>3]*4.0*+p[j>>3];r=a;return}default:{a=f+56|0;j=f+4|0;k[f>>2]=27524;k[a>>2]=27544;B=0;wa(508,f+56|0,j|0);n=B;B=0;if(n&1){n=Rb()|0;q=Q;s=n;vva(a);Qb(s|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[a>>2]=27488;B=0;va(448,j|0);n=B;B=0;do if(n&1){b=Rb()|0;t=Q;u=b}else{k[j>>2]=27560;b=f+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,j|0,e|0);l=B;B=0;if(l&1){l=Rb()|0;m=Q;Yua(e);Yua(b);Ava(j);t=m;u=l;break}Yua(e);B=0;l=Ia(40,f|0,132447,13)|0;m=B;B=0;if((((!(m&1)?(B=0,m=ya(427,d|0)|0,c=B,B=0,!(c&1)):0)?(c=Lta(m)|0,B=0,v=Ia(40,l|0,m|0,c|0)|0,c=B,B=0,!(c&1)):0)?(B=0,c=Ia(40,v|0,146481,18)|0,v=B,B=0,!(v&1)):0)?(B=0,Xa(239,c|0,0)|0,c=B,B=0,!(c&1)):0){c=Ab(20)|0;B=0;eb(502,g|0,73996,76);v=B;B=0;do if(!(v&1)){B=0;eb(502,h|0,75456,17);m=B;B=0;if(m&1){m=Rb()|0;l=Q;Yua(g);w=l;x=m;break}B=0;wa(510,i|0,j|0);m=B;B=0;if(m&1){m=Rb()|0;y=Q;z=m;A=1}else{B=0;ua(163,c|0,g|0,h|0,213,i|0);m=B;B=0;if(m&1)C=1;else{B=0;eb(503,c|0,1240,229);B=0;C=0}m=Rb()|0;l=Q;Yua(i);y=l;z=m;A=C}Yua(h);Yua(g);if(A){w=y;x=z}else{D=y;E=z;k[f>>2]=27468;k[a>>2]=27488;k[j>>2]=27560;Yua(b);Ava(j);vva(a);Qb(E|0)}}else{m=Rb()|0;w=Q;x=m}while(0);zb(c|0);D=w;E=x;k[f>>2]=27468;k[a>>2]=27488;k[j>>2]=27560;Yua(b);Ava(j);vva(a);Qb(E|0)}v=Rb()|0;D=Q;E=v;k[f>>2]=27468;k[a>>2]=27488;k[j>>2]=27560;Yua(b);Ava(j);vva(a);Qb(E|0)}while(0);q=t;s=u;vva(a);Qb(s|0)}}}function mz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;d=r;r=r+272|0;a=d+248|0;e=d;f=d+112|0;g=d+96|0;h=d+84|0;i=d+72|0;j=+p[c>>3];l=+p[c+48>>3];m=+p[c+72>>3];n=+p[c+8>>3];o=+p[c+32>>3];q=+p[c+56>>3];s=+p[c+80>>3];t=+p[c+16>>3];u=+p[c+40>>3];v=+p[c+64>>3];w=+p[c+88>>3];p[e>>3]=+p[c+24>>3]-j;p[e+8>>3]=o-n;p[e+16>>3]=u-t;p[e+24>>3]=l-j;p[e+32>>3]=q-n;p[e+40>>3]=v-t;p[e+48>>3]=m-j;p[e+56>>3]=s-n;p[e+64>>3]=w-t;dY(b,e);if(!(+p[b>>3]<0.0)){r=d;return}d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);e=B;B=0;if(e&1){e=Rb()|0;x=Q;y=e;vva(d);Qb(y|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);e=B;B=0;do if(e&1){c=Rb()|0;z=Q;A=c}else{k[b>>2]=27560;c=f+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[f+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,b|0,a|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(a);Yua(c);Ava(b);z=D;A=C;break}Yua(a);B=0;C=Ia(40,f|0,75474,30)|0;D=B;B=0;if(!(D&1)?(B=0,Xa(239,C|0,0)|0,C=B,B=0,!(C&1)):0){C=Ab(20)|0;B=0;eb(502,g|0,73996,76);D=B;B=0;do if(!(D&1)){B=0;eb(502,h|0,75505,22);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(g);G=F;H=E;break}B=0;wa(510,i|0,b|0);E=B;B=0;if(E&1){E=Rb()|0;I=Q;J=E;K=1}else{B=0;ua(163,C|0,g|0,h|0,135,i|0);E=B;B=0;if(E&1)L=1;else{B=0;eb(503,C|0,1240,229);B=0;L=0}E=Rb()|0;F=Q;Yua(i);I=F;J=E;K=L}Yua(h);Yua(g);if(K){G=I;H=J}else{M=I;N=J;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(c);Ava(b);vva(d);Qb(N|0)}}else{E=Rb()|0;G=Q;H=E}while(0);zb(C|0);M=G;N=H;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(c);Ava(b);vva(d);Qb(N|0)}D=Rb()|0;M=Q;N=D;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(c);Ava(b);vva(d);Qb(N|0)}while(0);x=z;y=A;vva(d);Qb(y|0)}function nz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0.0,j=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0;d=r;r=r+192|0;a=d+176|0;e=d+40|0;f=d+24|0;g=d+12|0;h=d;i=+p[c>>3];j=+p[c+8>>3];l=+p[c+16>>3];m=+p[c+32>>3]-j;n=+p[c+64>>3]-l;o=+p[c+40>>3]-l;l=+p[c+56>>3]-j;j=m*n-o*l;q=+p[c+48>>3]-i;s=+p[c+24>>3]-i;i=o*q-s*n;n=s*l-m*q;q=n*n+(j*j+i*i);i=+$(+(+aa(+q)));j=q==-G?G:i*.28867513459481287;p[b>>3]=j;if(!(j<0.0)){r=d;return}d=e+56|0;b=e+4|0;k[e>>2]=27524;k[d>>2]=27544;B=0;wa(508,e+56|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;t=Q;u=c;vva(d);Qb(u|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);c=B;B=0;do if(c&1){v=Rb()|0;w=Q;x=v}else{k[b>>2]=27560;v=e+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[e+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,b|0,a|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(a);Yua(v);Ava(b);w=z;x=y;break}Yua(a);B=0;y=Ia(40,e|0,75474,30)|0;z=B;B=0;if(!(z&1)?(B=0,Xa(239,y|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,f|0,73996,76);z=B;B=0;do if(!(z&1)){B=0;eb(502,g|0,74073,26);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(f);D=C;E=A;break}B=0;wa(510,h|0,b|0);A=B;B=0;if(A&1){A=Rb()|0;F=Q;H=A;I=1}else{B=0;ua(163,y|0,f|0,g|0,155,h|0);A=B;B=0;if(A&1)J=1;else{B=0;eb(503,y|0,1240,229);B=0;J=0}A=Rb()|0;C=Q;Yua(h);F=C;H=A;I=J}Yua(g);Yua(f);if(I){D=F;E=H}else{K=F;L=H;k[e>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(v);Ava(b);vva(d);Qb(L|0)}}else{A=Rb()|0;D=Q;E=A}while(0);zb(y|0);K=D;L=E;k[e>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(v);Ava(b);vva(d);Qb(L|0)}z=Rb()|0;K=Q;L=z;k[e>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(v);Ava(b);vva(d);Qb(L|0)}while(0);t=w;u=x;vva(d);Qb(u|0)}
+function rq(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;g=r;r=r+192|0;d=g+176|0;j=g+40|0;l=g+28|0;m=g+16|0;n=g;o=g+12|0;p=Hc[k[(k[a>>2]|0)+164>>2]&511](a)|0;a:do if((p|0)>0){q=a+20|0;if((h|0)==937){s=0;t=0;u=0;while(1){v=e+(Rn(k[(k[q>>2]|0)+(t<<2)>>2]|0)|0)|0;do if(!(i[v>>0]|0)){w=e+(Rn(k[(k[q>>2]|0)+(t<<2)>>2]|0)|0)|0;i[w>>0]=1;w=0;while(1){x=f+(w<<2)|0;if((k[x>>2]|0)>-1)w=w+1|0;else{y=x;break}}w=Rn(k[(k[q>>2]|0)+(t<<2)>>2]|0)|0;k[y>>2]=w;w=k[(k[q>>2]|0)+(t<<2)>>2]|0;if(k[w+28>>2]|0)if(!(fo(w)|0)){z=s+1|0;A=u;break}else{z=s;A=u+1|0;break}else{z=s;A=u}}else{z=s;A=u}while(0);t=t+1|0;if((t|0)==(p|0)){C=z;D=A;break a}else{s=z;u=A}}}else{E=0;F=0;G=0}b:while(1){u=e+(Rn(k[(k[q>>2]|0)+(F<<2)>>2]|0)|0)|0;c:do if(!(i[u>>0]|0)){s=e+(Rn(k[(k[q>>2]|0)+(F<<2)>>2]|0)|0)|0;i[s>>0]=1;s=0;while(1){t=f+(s<<2)|0;if((k[t>>2]|0)>-1)s=s+1|0;else{H=t;break}}s=Rn(k[(k[q>>2]|0)+(F<<2)>>2]|0)|0;k[H>>2]=s;switch(h|0){case 966:{s=k[(k[q>>2]|0)+(F<<2)>>2]|0;if(!(k[s+32>>2]|0)){I=E;J=G;break c}if(!(fo(s)|0)){I=E+1|0;J=G;break c}else{I=E;J=G+1|0;break c}break}case 943:{s=k[(k[q>>2]|0)+(F<<2)>>2]|0;if(!(k[s+24>>2]|0)){I=E;J=G;break c}if(!(fo(s)|0)){I=E+1|0;J=G;break c}else{I=E;J=G+1|0;break c}break}default:break b}}else{I=E;J=G}while(0);F=F+1|0;if((F|0)>=(p|0)){C=I;D=J;break a}else{E=I;G=J}}q=j+56|0;u=j+4|0;k[j>>2]=27524;k[q>>2]=27544;B=0;wa(508,j+56|0,u|0);s=B;B=0;if(s&1){s=Rb()|0;K=Q;L=s;vva(q);Qb(L|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[q>>2]=27488;B=0;va(448,u|0);s=B;B=0;do if(s&1){t=Rb()|0;M=Q;N=t}else{k[u>>2]=27560;t=j+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[j+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,u|0,d|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(d);Yua(t);Ava(u);M=w;N=v;break}Yua(d);B=0;v=Ia(40,j|0,145010,13)|0;w=B;B=0;if(!(w&1)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,l|0,69562,75);w=B;B=0;do if(!(w&1)){B=0;eb(502,m|0,144217,23);x=B;B=0;if(x&1){x=Rb()|0;O=Q;Yua(l);P=O;R=x;break}B=0;wa(510,n|0,u|0);x=B;B=0;if(x&1){x=Rb()|0;S=Q;T=x;U=1}else{B=0;ua(163,v|0,l|0,m|0,2210,n|0);x=B;B=0;if(x&1)V=1;else{B=0;eb(503,v|0,1240,229);B=0;V=0}x=Rb()|0;O=Q;Yua(n);S=O;T=x;U=V}Yua(m);Yua(l);if(U){P=S;R=T}else{W=S;X=T;k[j>>2]=27468;k[q>>2]=27488;k[u>>2]=27560;Yua(t);Ava(u);vva(q);Qb(X|0)}}else{x=Rb()|0;P=Q;R=x}while(0);zb(v|0);W=P;X=R;k[j>>2]=27468;k[q>>2]=27488;k[u>>2]=27560;Yua(t);Ava(u);vva(q);Qb(X|0)}w=Rb()|0;W=Q;X=w;k[j>>2]=27468;k[q>>2]=27488;k[u>>2]=27560;Yua(t);Ava(u);vva(q);Qb(X|0)}while(0);K=M;L=N;vva(q);Qb(L|0)}else{C=0;D=0}while(0);L=a+36|0;cO(k[L>>2]|0,d,477);if((k[d>>2]|0)!=497){Y=C;Z=D;k[b>>2]=Y;k[c>>2]=Z;r=g;return}kC(k[a+16>>2]|0,j,533);if(((k[j>>2]|0)+-537|0)>>>0>=2){Y=C;Z=D;k[b>>2]=Y;k[c>>2]=Z;r=g;return}cO(k[L>>2]|0,o,283);L=(k[o>>2]|0)*3|0;Y=L+C|0;Z=L+D|0;k[b>>2]=Y;k[c>>2]=Z;r=g;return}function sq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0.0,ua=0.0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0.0,db=0,fb=0,gb=0,hb=0,jb=0,kb=0.0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0.0,vb=0.0,wb=0.0,xb=0.0,yb=0.0,zb=0.0,Ab=0.0,Bb=0.0,Cb=0.0,Db=0.0,Eb=0.0,Fb=0.0,Gb=0.0,Hb=0.0,Ib=0,Jb=0.0,Kb=0.0,Lb=0.0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0.0,gc=0.0,hc=0.0;b=r;r=r+960|0;c=b+928|0;d=b+264|0;e=b+256|0;f=b+248|0;g=b+240|0;h=b+232|0;j=b+224|0;l=b+216|0;m=b+208|0;n=b+200|0;o=b+192|0;q=b+184|0;s=b+176|0;t=b+168|0;u=b+160|0;v=b+152|0;w=b+144|0;x=b+136|0;y=b+128|0;z=b+120|0;A=b+112|0;C=b+104|0;D=b+96|0;E=b+924|0;F=b+920|0;G=b+916|0;H=b+88|0;I=b+80|0;J=b+72|0;K=b+64|0;L=b+56|0;M=b+48|0;N=b+40|0;O=b+947|0;P=b+946|0;R=b+945|0;S=b+944|0;T=b+943|0;U=b+942|0;V=b+941|0;W=b+940|0;X=b+32|0;Y=b+912|0;Z=b+908|0;_=b+904|0;$=b+900|0;aa=b+896|0;ba=b+24|0;ca=b+892|0;da=b+888|0;ea=b+884|0;fa=b+880|0;ga=b+16|0;ha=b+8|0;ia=b;ja=b+864|0;ka=b+728|0;la=b+868|0;ma=b+576|0;na=b+712|0;oa=b+440|0;pa=b+424|0;qa=b+288|0;ra=b+272|0;k[E>>2]=0;k[F>>2]=0;k[G>>2]=0;p[X>>3]=1.0;k[Y>>2]=0;k[Z>>2]=0;k[_>>2]=0;k[$>>2]=0;k[aa>>2]=0;p[ba>>3]=0.0;k[ca>>2]=0;k[da>>2]=0;k[ea>>2]=0;k[fa>>2]=0;if(!(Hc[k[(k[a>>2]|0)+252>>2]&511](a)|0)){r=b;return}sa=a+32|0;ta=+WJ(k[sa>>2]|0,265);ua=+WJ(k[sa>>2]|0,267);sa=a+36|0;dO(k[sa>>2]|0,q,415);dO(k[sa>>2]|0,s,416);dO(k[sa>>2]|0,t,767);dO(k[sa>>2]|0,u,358);dO(k[sa>>2]|0,v,403);cO(k[sa>>2]|0,E,405);cO(k[sa>>2]|0,F,407);cO(k[sa>>2]|0,G,406);dO(k[sa>>2]|0,H,417);dO(k[sa>>2]|0,I,418);dO(k[sa>>2]|0,J,419);dO(k[sa>>2]|0,K,420);bO(k[sa>>2]|0,O,430);bO(k[sa>>2]|0,P,431);bO(k[sa>>2]|0,R,432);bO(k[sa>>2]|0,S,433);bO(k[sa>>2]|0,T,434);bO(k[sa>>2]|0,U,435);bO(k[sa>>2]|0,V,436);bO(k[sa>>2]|0,W,437);dO(k[sa>>2]|0,X,390);sa=a+16|0;xa=oC(k[sa>>2]|0,408)|0;za=oC(k[sa>>2]|0,409)|0;Aa=oC(k[sa>>2]|0,410)|0;Ba=oC(k[sa>>2]|0,412)|0;Ca=oC(k[sa>>2]|0,413)|0;Da=oC(k[sa>>2]|0,411)|0;Ea=oC(k[sa>>2]|0,399)|0;Fa=oC(k[sa>>2]|0,400)|0;Ga=oC(k[sa>>2]|0,401)|0;Ha=oC(k[sa>>2]|0,402)|0;Ja=oC(k[sa>>2]|0,391)|0;Ka=oC(k[sa>>2]|0,392)|0;La=oC(k[sa>>2]|0,394)|0;Ma=oC(k[sa>>2]|0,393)|0;Na=oC(k[sa>>2]|0,395)|0;Pa=oC(k[sa>>2]|0,397)|0;Qa=oC(k[sa>>2]|0,398)|0;Ra=oC(k[sa>>2]|0,386)|0;Ta=ed[k[(k[a>>2]|0)+308>>2]&511](a,1)|0;Fc[k[(k[Ta>>2]|0)+24>>2]&1023](Ta,0);nd[k[(k[xa>>2]|0)+48>>2]&1023](xa,d,Ta);nd[k[(k[za>>2]|0)+48>>2]&1023](za,e,Ta);nd[k[(k[Aa>>2]|0)+48>>2]&1023](Aa,j,Ta);nd[k[(k[Ba>>2]|0)+48>>2]&1023](Ba,f,Ta);nd[k[(k[Ca>>2]|0)+48>>2]&1023](Ca,g,Ta);nd[k[(k[Da>>2]|0)+48>>2]&1023](Da,h,Ta);nd[k[(k[Ea>>2]|0)+48>>2]&1023](Ea,l,Ta);nd[k[(k[Fa>>2]|0)+48>>2]&1023](Fa,m,Ta);nd[k[(k[Ga>>2]|0)+48>>2]&1023](Ga,n,Ta);nd[k[(k[Ha>>2]|0)+48>>2]&1023](Ha,o,Ta);do if(!Ra){a:do if(GY()|0?(k[a+12>>2]|0)==0:0){Ha=ka+56|0;Ga=ka+4|0;k[ka>>2]=27524;k[Ha>>2]=27544;B=0;wa(508,ka+56|0,Ga|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ua=Q;Va=Fa;vva(Ha);Qb(Va|0)}k[ka+128>>2]=0;k[ka+132>>2]=-1;k[ka>>2]=27468;k[Ha>>2]=27488;B=0;va(448,Ga|0);Fa=B;B=0;do if(Fa&1){Ea=Rb()|0;Wa=Q;Ya=Ea}else{k[Ga>>2]=27560;Ea=ka+36|0;k[Ea>>2]=0;k[Ea+4>>2]=0;k[Ea+8>>2]=0;k[Ea+12>>2]=0;k[ka+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ga|0,c|0);Da=B;B=0;if(Da&1){Da=Rb()|0;Ca=Q;Yua(c);Yua(Ea);Ava(Ga);Wa=Ca;Ya=Da;break}Yua(c);B=0;Ia(40,ka|0,70650,28)|0;Da=B;B=0;do if(!(Da&1)?(B=0,wa(510,la|0,Ga|0),Ca=B,B=0,!(Ca&1)):0){B=0;ya(425,la|0)|0;Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Ba=Q;Yua(la);Za=Ba;_a=Ca;break}else{Yua(la);k[ka>>2]=27468;k[Ha>>2]=27488;k[Ga>>2]=27560;Yua(Ea);Ava(Ga);vva(Ha);break a}}else $a=17;while(0);if(($a|0)==17){Da=Rb()|0;Za=Q;_a=Da}k[ka>>2]=27468;k[Ha>>2]=27488;k[Ga>>2]=27560;Yua(Ea);Ava(Ga);vva(Ha);ab=Za;bb=_a;Qb(bb|0)}while(0);Ua=Wa;Va=Ya;vva(Ha);Qb(Va|0)}while(0);_Z(Y,ja,+p[d>>3],+p[e>>3],+p[f>>3],+p[h>>3]);Ga=k[ja>>2]|0;Fa=Ga>>>0>536870911?-1:Ga<<3;Da=Rqa(Fa)|0;Ca=(Ga|0)==0;b:do if(Ca){k[Z>>2]=Da;Ba=Rqa(Fa)|0;k[_>>2]=Ba;$a=31}else{WEa(Da|0,0,Ga<<3|0)|0;k[Z>>2]=Da;Ba=(Ga|0)>0;do if(Ba){cb=ta*+p[X>>3];Aa=0;do{p[Da+(Aa<<3)>>3]=cb;Aa=Aa+1|0}while((Aa|0)<(Ga|0));Aa=Rqa(Fa)|0;if(Ca){k[_>>2]=Aa;if(!Ba){$a=31;break b}}else{WEa(Aa|0,0,Ga<<3|0)|0;k[_>>2]=Aa;if(!Ba){$a=27;break}}Ea=0;do{p[Aa+(Ea<<3)>>3]=2.5;Ea=Ea+1|0}while((Ea|0)<(Ga|0));Ea=Rqa(Fa)|0;if(Ca)k[$>>2]=Ea;else{WEa(Ea|0,0,Ga<<3|0)|0;k[$>>2]=Ea}WEa(Ea|0,0,((Ga|0)>1?Ga:1)<<3|0)|0;Ea=Rqa(Fa)|0;if(Ca){db=Ea;break b}else fb=Ea}else{Ea=Rqa(Fa)|0;WEa(Ea|0,0,Ga<<3|0)|0;k[_>>2]=Ea;$a=27}while(0);if(($a|0)==27){Ba=Rqa(Fa)|0;WEa(Ba|0,0,Ga<<3|0)|0;k[$>>2]=Ba;fb=Rqa(Fa)|0}WEa(fb|0,0,Ga<<3|0)|0;db=fb}while(0);if(($a|0)==31){Ga=Rqa(Fa)|0;k[$>>2]=Ga;db=Rqa(Fa)|0}k[aa>>2]=db;Ga=k[ja>>2]|0;if((Ga|0)>0){WEa(db|0,0,((Ga|0)>1?Ga:1)<<3|0)|0;gb=k[ja>>2]|0}else gb=Ga;p[ba>>3]=0.0;Ga=gb>>>0>536870911?-1:gb<<3;Ca=Rqa(Ga)|0;if(!gb){k[ca>>2]=Ca;hb=Rqa(Ga)|0}else{WEa(Ca|0,0,gb<<3|0)|0;k[ca>>2]=Ca;if((gb|0)>0)WEa(Ca|0,0,((gb|0)>1?gb:1)<<3|0)|0;Ca=Rqa(Ga)|0;WEa(Ca|0,0,gb<<3|0)|0;hb=Ca}k[da>>2]=hb;Ca=k[ja>>2]|0;Ga=(Ca|0)>0;if(Ga){cb=+p[q>>3];Da=0;do{p[hb+(Da<<3)>>3]=cb;Da=Da+1|0}while((Da|0)<(Ca|0))}Da=Rqa(Ca>>>0>536870911?-1:Ca<<3)|0;if(Ca)WEa(Da|0,0,Ca<<3|0)|0;k[fa>>2]=Da;if(Ga){cb=+p[l>>3];Fa=0;do{p[Da+(Fa<<3)>>3]=cb;Fa=Fa+1|0}while((Fa|0)<(Ca|0))}cb=+p[Da+(Ca+-1<<3)>>3];Fa=Qqa(12)|0;B=0;eb(507,Fa|0,386,1);Ga=B;B=0;if(!(Ga&1)){mC(k[sa>>2]|0,Fa)|0;jb=k[ja>>2]|0;kb=cb;break}Ga=Rb()|0;Ba=Q;Sqa(Fa);ab=Ba;bb=Ga;Qb(bb|0)}else{Ga=oC(k[sa>>2]|0,404)|0;if(!Ga)lb=0;else lb=ura(Ga,352,808,0)|0;Ga=oC(k[sa>>2]|0,421)|0;if(!Ga)mb=0;else mb=ura(Ga,352,808,0)|0;Ga=oC(k[sa>>2]|0,422)|0;if(!Ga)nb=0;else nb=ura(Ga,352,808,0)|0;Ga=oC(k[sa>>2]|0,423)|0;if(!Ga)ob=0;else ob=ura(Ga,352,808,0)|0;Ga=oC(k[sa>>2]|0,424)|0;if(!Ga)pb=0;else pb=ura(Ga,352,808,0)|0;Ga=oC(k[sa>>2]|0,425)|0;if(!Ga)qb=0;else qb=ura(Ga,352,792,0)|0;Ga=oC(k[sa>>2]|0,427)|0;if(!Ga)rb=0;else rb=ura(Ga,352,808,0)|0;Ga=oC(k[sa>>2]|0,428)|0;if(!Ga)sb=0;else sb=ura(Ga,352,808,0)|0;Ga=oC(k[sa>>2]|0,429)|0;if(!Ga)tb=0;else tb=ura(Ga,352,808,0)|0;cH(lb,Y,ja);cH(mb,Z,ja);cH(nb,_,ja);cH(ob,$,ja);cH(pb,aa,ja);Fc[k[(k[qb>>2]|0)+44>>2]&1023](qb,ba);cH(rb,ca,ja);cH(sb,da,ja);cH(tb,fa,ja);Ga=k[ja>>2]|0;jb=Ga;kb=+p[(k[fa>>2]|0)+(Ga+-1<<3)>>3]}while(0);if((jb|0)>0){tb=k[Y>>2]|0;sb=k[Z>>2]|0;rb=k[ca>>2]|0;qb=0;cb=0.0;while(1){ub=cb+(+p[tb+(qb<<3)>>3]*+p[sb+(qb<<3)>>3]+ +p[rb+(qb<<3)>>3]);qb=qb+1|0;if((qb|0)>=(jb|0)){vb=ub;break}else cb=ub}}else vb=0.0;cb=+p[u>>3];ub=+p[t>>3]-cb;p[t>>3]=ub;c:do if(ub<=ub+cb){qb=a+12|0;rb=ma+56|0;sb=ma+4|0;tb=ma+56|0;pb=ma+128|0;ob=ma+132|0;nb=ma+36|0;mb=ma+52|0;lb=oa+56|0;hb=oa+4|0;gb=oa+56|0;db=oa+128|0;fb=oa+132|0;X=oa+36|0;h=oa+52|0;e=qa+56|0;d=qa+4|0;Va=qa+56|0;Ya=qa+128|0;Wa=qa+132|0;Ua=qa+36|0;_a=qa+52|0;Za=1;wb=0.0;xb=0.0;yb=0.0;zb=0.0;Ab=ub;while(1){if((GY()|0?(k[qb>>2]|0)==0:0)?(vY()|0)==0:0){k[ma>>2]=27524;k[rb>>2]=27544;B=0;wa(508,tb|0,sb|0);ka=B;B=0;if(ka&1){$a=87;break}k[pb>>2]=0;k[ob>>2]=-1;k[ma>>2]=27468;k[rb>>2]=27488;B=0;va(448,sb|0);ka=B;B=0;if(ka&1){$a=88;break}k[sb>>2]=27560;k[nb>>2]=0;k[nb+4>>2]=0;k[nb+8>>2]=0;k[nb+12>>2]=0;k[mb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,sb|0,c|0);ka=B;B=0;if(ka&1){$a=86;break}Yua(c);B=0;ka=Ia(40,ma|0,70679,8)|0;la=B;B=0;if(la&1){$a=102;break}k[ka+(k[(k[ka>>2]|0)+-12>>2]|0)+8>>2]=8;B=0;la=Sa(1,ka|0,+(Ab/365.0/24.0/3600.0))|0;ka=B;B=0;if(ka&1){$a=102;break}B=0;ka=Ia(40,la|0,70688,4)|0;la=B;B=0;if(la&1){$a=102;break}B=0;la=Sa(1,ka|0,+((+p[t>>3]+ +p[u>>3])/365.0/24.0/3600.0))|0;ka=B;B=0;if(ka&1){$a=102;break}B=0;ka=Ia(40,la|0,70693,3)|0;la=B;B=0;if(la&1){$a=102;break}k[ka+(k[(k[ka>>2]|0)+-12>>2]|0)+8>>2]=3;B=0;la=Ia(40,ka|0,70697,7)|0;ka=B;B=0;if(ka&1){$a=102;break}B=0;ka=Xa(242,la|0,Za|0)|0;la=B;B=0;if(la&1){$a=102;break}B=0;Ia(40,ka|0,149177,1)|0;ka=B;B=0;if(ka&1){$a=102;break}B=0;wa(510,na|0,sb|0);ka=B;B=0;if(ka&1){$a=102;break}B=0;ya(425,na|0)|0;ka=B;B=0;if(ka&1){$a=103;break}Yua(na);k[ma>>2]=27468;k[rb>>2]=27488;k[sb>>2]=27560;Yua(nb);Ava(sb);vva(rb)}md[k[(k[Ja>>2]|0)+52>>2]&31](Ja,w,Ta,Ab);md[k[(k[Ka>>2]|0)+52>>2]&31](Ka,x,Ta,Ab);md[k[(k[La>>2]|0)+52>>2]&31](La,y,Ta,Ab);md[k[(k[Ma>>2]|0)+52>>2]&31](Ma,z,Ta,Ab);md[k[(k[Na>>2]|0)+52>>2]&31](Na,A,Ta,Ab);md[k[(k[Pa>>2]|0)+52>>2]&31](Pa,C,Ta,Ab);md[k[(k[Qa>>2]|0)+52>>2]&31](Qa,D,Ta,Ab);if(i[O>>0]|0)a_(k[_>>2]|0,k[$>>2]|0,k[aa>>2]|0,k[fa>>2]|0,k[Y>>2]|0,k[Z>>2]|0,k[ca>>2]|0,+p[v>>3],k[ja>>2]|0,k[E>>2]|0,k[qb>>2]|0);if(i[P>>0]|0)b_(k[da>>2]|0,k[E>>2]|0,k[_>>2]|0,k[Z>>2]|0,+p[H>>3],+p[s>>3],+p[q>>3],k[fa>>2]|0,k[ca>>2]|0,+p[A>>3],+p[ba>>3],+p[I>>3],+p[J>>3],+p[K>>3],+p[v>>3],k[ja>>2]|0,k[qb>>2]|0);if(i[R>>0]|0)d_(ea,k[G>>2]|0,k[E>>2]|0,+p[z>>3],+p[k[da>>2]>>3],k[Z>>2]|0,k[Y>>2]|0,k[_>>2]|0,k[ja>>2]|0,k[qb>>2]|0);if(i[S>>0]|0)c_(ba,k[fa>>2]|0,k[Y>>2]|0,k[Z>>2]|0,k[ea>>2]|0,+p[y>>3],+p[w>>3],+p[x>>3],+p[C>>3],+p[D>>3],+p[k[ca>>2]>>3],+p[v>>3],k[ja>>2]|0,+p[o>>3],+p[n>>3],k[qb>>2]|0);ka=k[Y>>2]|0;p[ka>>3]=+p[ka>>3]+ +p[ba>>3]/+p[k[Z>>2]>>3];if(i[T>>0]|0)e_(fa,Y,Z,ca,da,_,$,aa,ja,+p[w>>3],+p[A>>3],+p[j>>3],+p[q>>3],k[qb>>2]|0);if(i[U>>0]|0)f_(ga,ha,ia,fa,Z,Y,ca,da,_,$,aa,ja,+p[j>>3],+p[f>>3],+p[g>>3],k[qb>>2]|0);if(i[V>>0]|0)g_(k[Z>>2]|0,k[Y>>2]|0,k[fa>>2]|0,k[_>>2]|0,k[F>>2]|0,+p[m>>3],+p[v>>3],+p[l>>3],ta,k[ja>>2]|0,k[qb>>2]|0);if(i[W>>0]|0)h_(M,L,N,+p[w>>3],+p[k[fa>>2]>>3],+p[x>>3],+p[C>>3],+p[D>>3],+p[k[Z>>2]>>3],+p[k[ca>>2]>>3],+p[o>>3],+p[n>>3],k[qb>>2]|0);xb=xb+ +p[ia>>3];Bb=zb+ +p[ha>>3];Cb=+kY(k[ca>>2]|0,k[ja>>2]|0);Db=yb+ +p[A>>3];Eb=wb+ +p[ba>>3];ka=k[ja>>2]|0;if((ka|0)>0){la=k[Y>>2]|0;Ra=k[Z>>2]|0;Ga=0;Fb=0.0;while(1){Gb=Fb+ +p[la+(Ga<<3)>>3]*+p[Ra+(Ga<<3)>>3];Ga=Ga+1|0;if((Ga|0)>=(ka|0)){Hb=Gb;break}else Fb=Gb}}else Hb=0.0;if(+VEa(+((Cb+(Bb+Hb)-Db-Eb-vb-xb)*100.0))/100.0!=0.0){k[oa>>2]=27524;k[lb>>2]=27544;B=0;wa(508,gb|0,hb|0);Ga=B;B=0;if(Ga&1){$a=129;break}k[db>>2]=0;k[fb>>2]=-1;k[oa>>2]=27468;k[lb>>2]=27488;B=0;va(448,hb|0);Ga=B;B=0;if(Ga&1){$a=130;break}k[hb>>2]=27560;k[X>>2]=0;k[X+4>>2]=0;k[X+8>>2]=0;k[X+12>>2]=0;k[h>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,hb|0,c|0);Ga=B;B=0;if(Ga&1){$a=128;break}Yua(c);B=0;Ia(40,oa|0,70705,46)|0;Ga=B;B=0;if(Ga&1){$a=137;break}B=0;wa(510,pa|0,hb|0);Ga=B;B=0;if(Ga&1){$a=137;break}B=0;ya(424,pa|0)|0;Ga=B;B=0;if(Ga&1){$a=138;break}Yua(pa);k[oa>>2]=27468;k[lb>>2]=27488;k[hb>>2]=27560;Yua(X);Ava(hb);vva(lb);Ib=k[ja>>2]|0}else Ib=ka;if(+p[(k[fa>>2]|0)+(Ib+-1<<3)>>3]!=kb){k[qa>>2]=27524;k[e>>2]=27544;B=0;wa(508,Va|0,d|0);Ga=B;B=0;if(Ga&1){$a=145;break}k[Ya>>2]=0;k[Wa>>2]=-1;k[qa>>2]=27468;k[e>>2]=27488;B=0;va(448,d|0);Ga=B;B=0;if(Ga&1){$a=146;break}k[d>>2]=27560;k[Ua>>2]=0;k[Ua+4>>2]=0;k[Ua+8>>2]=0;k[Ua+12>>2]=0;k[_a>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,d|0,c|0);Ga=B;B=0;if(Ga&1){$a=144;break}Yua(c);B=0;Ga=Ia(40,qa|0,70752,16)|0;Ra=B;B=0;if(Ra&1){$a=154;break}B=0;Ia(40,Ga|0,149177,1)|0;Ga=B;B=0;if(Ga&1){$a=154;break}B=0;wa(510,ra|0,d|0);Ga=B;B=0;if(Ga&1){$a=154;break}B=0;ya(424,ra|0)|0;Ga=B;B=0;if(Ga&1){$a=155;break}Yua(ra);k[qa>>2]=27468;k[e>>2]=27488;k[d>>2]=27560;Yua(Ua);Ava(d);vva(e)}Ga=k[ea>>2]|0;if(Ga)Tqa(Ga);k[ea>>2]=0;Ab=Ab+ +p[v>>3];if(!(Ab<=+p[t>>3]+ +p[u>>3])){Jb=Bb;Kb=Db;Lb=Eb;$a=160;break}else{Za=Za+1|0;wb=Eb;yb=Db;zb=Bb}}switch($a|0){case 86:{Za=Rb()|0;_a=Q;Yua(c);Yua(nb);Ava(sb);Mb=_a;Nb=Za;$a=89;break}case 87:{Za=Rb()|0;Ob=Q;Pb=Za;vva(rb);Qb(Pb|0);break}case 88:{Za=Rb()|0;Mb=Q;Nb=Za;$a=89;break}case 102:{Za=Rb()|0;Sb=Q;Tb=Za;$a=104;break}case 103:{Za=Rb()|0;_a=Q;Yua(na);Sb=_a;Tb=Za;$a=104;break}case 128:{Za=Rb()|0;_a=Q;Yua(c);Yua(X);Ava(hb);Ub=_a;Vb=Za;$a=131;break}case 129:{Za=Rb()|0;Wb=Q;Xb=Za;vva(lb);Qb(Xb|0);break}case 130:{Za=Rb()|0;Ub=Q;Vb=Za;$a=131;break}case 137:{Za=Rb()|0;Yb=Q;Zb=Za;$a=139;break}case 138:{Za=Rb()|0;_a=Q;Yua(pa);Yb=_a;Zb=Za;$a=139;break}case 144:{Za=Rb()|0;_a=Q;Yua(c);Yua(Ua);Ava(d);_b=_a;$b=Za;$a=147;break}case 145:{Za=Rb()|0;ac=Q;bc=Za;vva(e);Qb(bc|0);break}case 146:{Za=Rb()|0;_b=Q;$b=Za;$a=147;break}case 154:{Za=Rb()|0;cc=Q;dc=Za;$a=156;break}case 155:{Za=Rb()|0;_a=Q;Yua(ra);cc=_a;dc=Za;$a=156;break}case 160:{ec=k[ja>>2]|0;fc=Lb;gc=Kb;hc=Jb;break c;break}}if(($a|0)==89){Ob=Mb;Pb=Nb;vva(rb);Qb(Pb|0)}else if(($a|0)==104){k[ma>>2]=27468;k[rb>>2]=27488;k[sb>>2]=27560;Yua(nb);Ava(sb);vva(rb);ab=Sb;bb=Tb;Qb(bb|0)}else if(($a|0)==131){Wb=Ub;Xb=Vb;vva(lb);Qb(Xb|0)}else if(($a|0)==139){k[oa>>2]=27468;k[lb>>2]=27488;k[hb>>2]=27560;Yua(X);Ava(hb);vva(lb);ab=Yb;bb=Zb;Qb(bb|0)}else if(($a|0)==147){ac=_b;bc=$b;vva(e);Qb(bc|0)}else if(($a|0)==156){k[qa>>2]=27468;k[e>>2]=27488;k[d>>2]=27560;Yua(Ua);Ava(d);vva(e);ab=cc;bb=dc;Qb(bb|0)}}else{ec=jb;fc=0.0;gc=0.0;hc=0.0}while(0);jb=Qqa(16)|0;B=0;ib(288,jb|0,404,k[Y>>2]|0,ec|0);ec=B;B=0;if(ec&1){ec=Rb()|0;dc=Q;Sqa(jb);ab=dc;bb=ec;Qb(bb|0)}mC(k[sa>>2]|0,jb)|0;jb=Qqa(16)|0;B=0;ib(288,jb|0,421,k[Z>>2]|0,k[ja>>2]|0);ec=B;B=0;if(ec&1){ec=Rb()|0;dc=Q;Sqa(jb);ab=dc;bb=ec;Qb(bb|0)}mC(k[sa>>2]|0,jb)|0;jb=Qqa(16)|0;B=0;ib(288,jb|0,422,k[_>>2]|0,k[ja>>2]|0);ec=B;B=0;if(ec&1){ec=Rb()|0;dc=Q;Sqa(jb);ab=dc;bb=ec;Qb(bb|0)}mC(k[sa>>2]|0,jb)|0;jb=Qqa(16)|0;B=0;ib(288,jb|0,423,k[$>>2]|0,k[ja>>2]|0);ec=B;B=0;if(ec&1){ec=Rb()|0;dc=Q;Sqa(jb);ab=dc;bb=ec;Qb(bb|0)}mC(k[sa>>2]|0,jb)|0;jb=Qqa(16)|0;B=0;ib(288,jb|0,424,k[aa>>2]|0,k[ja>>2]|0);ec=B;B=0;if(ec&1){ec=Rb()|0;dc=Q;Sqa(jb);ab=dc;bb=ec;Qb(bb|0)}mC(k[sa>>2]|0,jb)|0;jb=Qqa(16)|0;B=0;ib(288,jb|0,429,k[fa>>2]|0,k[ja>>2]|0);ec=B;B=0;if(ec&1){ec=Rb()|0;dc=Q;Sqa(jb);ab=dc;bb=ec;Qb(bb|0)}mC(k[sa>>2]|0,jb)|0;jb=Qqa(16)|0;B=0;Oa(58,jb|0,425,+(+p[ba>>3]));ba=B;B=0;if(ba&1){ba=Rb()|0;ec=Q;Sqa(jb);ab=ec;bb=ba;Qb(bb|0)}mC(k[sa>>2]|0,jb)|0;jb=Qqa(16)|0;B=0;ib(288,jb|0,427,k[ca>>2]|0,k[ja>>2]|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ec=Q;Sqa(jb);ab=ec;bb=ba;Qb(bb|0)}mC(k[sa>>2]|0,jb)|0;jb=Qqa(16)|0;B=0;ib(288,jb|0,428,k[da>>2]|0,k[ja>>2]|0);ja=B;B=0;if(ja&1){ja=Rb()|0;ba=Q;Sqa(jb);ab=ba;bb=ja;Qb(bb|0)}mC(k[sa>>2]|0,jb)|0;jb=Qqa(16)|0;B=0;Oa(58,jb|0,388,+((gc+fc-hc)/ua/+p[u>>3]));ja=B;B=0;if(ja&1){ja=Rb()|0;ba=Q;Sqa(jb);ab=ba;bb=ja;Qb(bb|0)}mC(k[sa>>2]|0,jb)|0;jb=Qqa(16)|0;B=0;Oa(58,jb|0,469,+(hc/ua/+p[u>>3]));ja=B;B=0;if(ja&1){ja=Rb()|0;ba=Q;Sqa(jb);ab=ba;bb=ja;Qb(bb|0)}mC(k[sa>>2]|0,jb)|0;jb=Qqa(16)|0;B=0;Oa(58,jb|0,448,+(gc/ua/+p[u>>3]));ja=B;B=0;if(ja&1){ja=Rb()|0;ba=Q;Sqa(jb);ab=ba;bb=ja;Qb(bb|0)}mC(k[sa>>2]|0,jb)|0;jb=Qqa(16)|0;B=0;Oa(58,jb|0,426,+(fc/ua/+p[u>>3]));u=B;B=0;if(u&1){u=Rb()|0;ja=Q;Sqa(jb);ab=ja;bb=u;Qb(bb|0)}mC(k[sa>>2]|0,jb)|0;jb=k[Y>>2]|0;if(jb)Tqa(jb);k[Y>>2]=0;Y=k[Z>>2]|0;if(Y)Tqa(Y);k[Z>>2]=0;Z=k[_>>2]|0;if(Z)Tqa(Z);k[_>>2]=0;_=k[$>>2]|0;if(_)Tqa(_);k[$>>2]=0;$=k[aa>>2]|0;if($)Tqa($);k[aa>>2]=0;aa=k[ca>>2]|0;if(aa)Tqa(aa);k[ca>>2]=0;ca=k[da>>2]|0;if(ca)Tqa(ca);k[da>>2]=0;da=k[fa>>2]|0;if(da)Tqa(da);k[fa>>2]=0;if(!Ta){r=b;return}Ec[k[(k[Ta>>2]|0)+4>>2]&1023](Ta);r=b;return}function tq(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=+e;YJ(k[a+32>>2]|0,b,c,d,e);return}function uq(a,b){a=a|0;b=+b;return +(+VJ(k[a+32>>2]|0,b))}function vq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=Hc[k[(k[a>>2]|0)+164>>2]&511](a)|0;e=Rqa(d>>>0>1073741823?-1:d<<2)|0;if((d|0)>0){f=0;do{k[e+(f<<2)>>2]=c;f=f+1|0}while((f|0)!=(d|0))}wq(0,b,k[a+20>>2]|0,d,e);Tqa(e);return}function wq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;a=r;r=r+192|0;f=a+180|0;g=a+176|0;h=a+40|0;i=a+24|0;j=a+12|0;l=a;k[g>>2]=0;a:do if((d|0)>0){m=0;n=0;b:while(1){o=e+(m<<2)|0;switch(k[o>>2]|0){case 653:{q=n+1|0;break}case 971:{q=n+2|0;break}case 972:{q=n+3|0;break}default:{s=o;break b}}m=m+1|0;if((m|0)>=(d|0)){t=q;break a}else n=q}n=h+56|0;m=h+4|0;k[h>>2]=27524;k[n>>2]=27544;B=0;wa(508,h+56|0,m|0);o=B;B=0;if(o&1){o=Rb()|0;u=Q;v=o;vva(n);Qb(v|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[n>>2]=27488;B=0;va(448,m|0);o=B;B=0;do if(o&1){w=Rb()|0;x=Q;y=w}else{k[m>>2]=27560;w=h+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,m|0,f|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(f);Yua(w);Ava(m);x=A;y=z;break}Yua(f);B=0;z=Ia(40,h|0,69672,18)|0;A=B;B=0;if((((!(A&1)?(B=0,A=ya(427,k[s>>2]|0)|0,C=B,B=0,!(C&1)):0)?(C=Lta(A)|0,B=0,D=Ia(40,z|0,A|0,C|0)|0,C=B,B=0,!(C&1)):0)?(B=0,C=Ia(40,D|0,146481,18)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,C|0,0)|0,C=B,B=0,!(C&1)):0){C=Ab(20)|0;B=0;eb(502,i|0,69562,75);D=B;B=0;do if(!(D&1)){B=0;eb(502,j|0,70769,32);A=B;B=0;if(A&1){A=Rb()|0;z=Q;Yua(i);E=z;F=A;break}B=0;wa(510,l|0,m|0);A=B;B=0;if(A&1){A=Rb()|0;G=Q;H=A;I=1}else{B=0;ua(163,C|0,i|0,j|0,2780,l|0);A=B;B=0;if(A&1)J=1;else{B=0;eb(503,C|0,1240,229);B=0;J=0}A=Rb()|0;z=Q;Yua(l);G=z;H=A;I=J}Yua(j);Yua(i);if(I){E=G;F=H}else{K=G;L=H;k[h>>2]=27468;k[n>>2]=27488;k[m>>2]=27560;Yua(w);Ava(m);vva(n);Qb(L|0)}}else{A=Rb()|0;E=Q;F=A}while(0);zb(C|0);K=E;L=F;k[h>>2]=27468;k[n>>2]=27488;k[m>>2]=27560;Yua(w);Ava(m);vva(n);Qb(L|0)}D=Rb()|0;K=Q;L=D;k[h>>2]=27468;k[n>>2]=27488;k[m>>2]=27560;Yua(w);Ava(m);vva(n);Qb(L|0)}while(0);u=x;v=y;vva(n);Qb(v|0)}else t=0;while(0);v=k[b>>2]|0;y=b+4|0;x=k[y>>2]|0;u=ma(x,v)|0;L=Rqa(u>>>0>536870911?-1:u<<3)|0;if((v|0)>0){u=b+12|0;if((x|0)>0){h=k[u>>2]|0;K=0;do{F=ma(x,K)|0;E=0;do{H=F+E|0;p[L+(H<<3)>>3]=+p[h+(H<<3)>>3];E=E+1|0}while((E|0)<(x|0));K=K+1|0}while((K|0)<(v|0));M=u}else M=u}else M=b+12|0;_o(0,g,c,d,e);e=k[g>>2]|0;ZX(e,t,t,0,L,k[b>>2]|0,k[y>>2]|0,0,e,t,t,1,k[M>>2]|0,0)|0;if(!e){Tqa(L);r=a;return}Tqa(e);Tqa(L);r=a;return}function xq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=Hc[k[(k[a>>2]|0)+164>>2]&511](a)|0;e=Rqa(d>>>0>1073741823?-1:d<<2)|0;if((d|0)>0){f=0;do{k[e+(f<<2)>>2]=c;f=f+1|0}while((f|0)!=(d|0))}yq(0,b,k[a+20>>2]|0,d,e);Tqa(e);return}function yq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;a=r;r=r+192|0;f=a+180|0;g=a+176|0;h=a+40|0;i=a+24|0;j=a+12|0;l=a;k[g>>2]=0;a:do if((d|0)>0){m=0;n=0;b:while(1){o=e+(m<<2)|0;switch(k[o>>2]|0){case 653:{q=n+1|0;break}case 971:{q=n+2|0;break}case 972:{q=n+3|0;break}default:{s=o;break b}}m=m+1|0;if((m|0)>=(d|0)){t=q;break a}else n=q}n=h+56|0;m=h+4|0;k[h>>2]=27524;k[n>>2]=27544;B=0;wa(508,h+56|0,m|0);o=B;B=0;if(o&1){o=Rb()|0;u=Q;v=o;vva(n);Qb(v|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[n>>2]=27488;B=0;va(448,m|0);o=B;B=0;do if(o&1){w=Rb()|0;x=Q;y=w}else{k[m>>2]=27560;w=h+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,m|0,f|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(f);Yua(w);Ava(m);x=A;y=z;break}Yua(f);B=0;z=Ia(40,h|0,69672,18)|0;A=B;B=0;if((((!(A&1)?(B=0,A=ya(427,k[s>>2]|0)|0,C=B,B=0,!(C&1)):0)?(C=Lta(A)|0,B=0,D=Ia(40,z|0,A|0,C|0)|0,C=B,B=0,!(C&1)):0)?(B=0,C=Ia(40,D|0,146481,18)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,C|0,0)|0,C=B,B=0,!(C&1)):0){C=Ab(20)|0;B=0;eb(502,i|0,69562,75);D=B;B=0;do if(!(D&1)){B=0;eb(502,j|0,70802,24);A=B;B=0;if(A&1){A=Rb()|0;z=Q;Yua(i);E=z;F=A;break}B=0;wa(510,l|0,m|0);A=B;B=0;if(A&1){A=Rb()|0;G=Q;H=A;I=1}else{B=0;ua(163,C|0,i|0,j|0,2832,l|0);A=B;B=0;if(A&1)J=1;else{B=0;eb(503,C|0,1240,229);B=0;J=0}A=Rb()|0;z=Q;Yua(l);G=z;H=A;I=J}Yua(j);Yua(i);if(I){E=G;F=H}else{K=G;L=H;k[h>>2]=27468;k[n>>2]=27488;k[m>>2]=27560;Yua(w);Ava(m);vva(n);Qb(L|0)}}else{A=Rb()|0;E=Q;F=A}while(0);zb(C|0);K=E;L=F;k[h>>2]=27468;k[n>>2]=27488;k[m>>2]=27560;Yua(w);Ava(m);vva(n);Qb(L|0)}D=Rb()|0;K=Q;L=D;k[h>>2]=27468;k[n>>2]=27488;k[m>>2]=27560;Yua(w);Ava(m);vva(n);Qb(L|0)}while(0);u=x;v=y;vva(n);Qb(v|0)}else t=0;while(0);v=k[b>>2]|0;y=Rqa(v>>>0>536870911?-1:v<<3)|0;x=b+4|0;if((v|0)>0){u=k[x>>2]|0;L=0;do{p[y+(L<<3)>>3]=+p[u+(L<<3)>>3];L=L+1|0}while((L|0)<(v|0))}_o(0,g,c,d,e);e=k[g>>2]|0;_X(e,t,t,1,y,k[b>>2]|0,1,0,k[x>>2]|0,0)|0;if(!e){Tqa(y);r=a;return}Tqa(e);Tqa(y);r=a;return}function zq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=k[a+20>>2]|0;yq(0,b,d,Hc[k[(k[a>>2]|0)+164>>2]&511](a)|0,c);return}function Aq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=Hc[k[(k[a>>2]|0)+164>>2]&511](a)|0;e=Rqa(d>>>0>1073741823?-1:d<<2)|0;if((d|0)>0){f=0;do{k[e+(f<<2)>>2]=c;f=f+1|0}while((f|0)!=(d|0))}Bq(0,b,k[a+20>>2]|0,d,e);Tqa(e);return}function Bq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;a=r;r=r+192|0;f=a+180|0;g=a+176|0;h=a+40|0;i=a+24|0;j=a+12|0;l=a;k[g>>2]=0;a:do if((d|0)>0){m=0;n=0;b:while(1){o=e+(m<<2)|0;switch(k[o>>2]|0){case 653:{p=n+1|0;break}case 971:{p=n+2|0;break}case 972:{p=n+3|0;break}default:{q=o;break b}}m=m+1|0;if((m|0)>=(d|0)){s=p;break a}else n=p}n=h+56|0;m=h+4|0;k[h>>2]=27524;k[n>>2]=27544;B=0;wa(508,h+56|0,m|0);o=B;B=0;if(o&1){o=Rb()|0;t=Q;u=o;vva(n);Qb(u|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[n>>2]=27488;B=0;va(448,m|0);o=B;B=0;do if(o&1){v=Rb()|0;w=Q;x=v}else{k[m>>2]=27560;v=h+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,m|0,f|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(f);Yua(v);Ava(m);w=z;x=y;break}Yua(f);B=0;y=Ia(40,h|0,69672,18)|0;z=B;B=0;if((((!(z&1)?(B=0,z=ya(427,k[q>>2]|0)|0,A=B,B=0,!(A&1)):0)?(A=Lta(z)|0,B=0,C=Ia(40,y|0,z|0,A|0)|0,A=B,B=0,!(A&1)):0)?(B=0,A=Ia(40,C|0,146481,18)|0,C=B,B=0,!(C&1)):0)?(B=0,Xa(239,A|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,i|0,69562,75);C=B;B=0;do if(!(C&1)){B=0;eb(502,j|0,70827,22);z=B;B=0;if(z&1){z=Rb()|0;y=Q;Yua(i);D=y;E=z;break}B=0;wa(510,l|0,m|0);z=B;B=0;if(z&1){z=Rb()|0;F=Q;G=z;H=1}else{B=0;ua(163,A|0,i|0,j|0,2908,l|0);z=B;B=0;if(z&1)I=1;else{B=0;eb(503,A|0,1240,229);B=0;I=0}z=Rb()|0;y=Q;Yua(l);F=y;G=z;H=I}Yua(j);Yua(i);if(H){D=F;E=G}else{J=F;K=G;k[h>>2]=27468;k[n>>2]=27488;k[m>>2]=27560;Yua(v);Ava(m);vva(n);Qb(K|0)}}else{z=Rb()|0;D=Q;E=z}while(0);zb(A|0);J=D;K=E;k[h>>2]=27468;k[n>>2]=27488;k[m>>2]=27560;Yua(v);Ava(m);vva(n);Qb(K|0)}C=Rb()|0;J=Q;K=C;k[h>>2]=27468;k[n>>2]=27488;k[m>>2]=27560;Yua(v);Ava(m);vva(n);Qb(K|0)}while(0);t=w;u=x;vva(n);Qb(u|0)}else s=0;while(0);u=Rqa(s>>>0>536870911?-1:s<<3)|0;if((s|0)>0)TEa(u|0,b|0,s<<3|0)|0;_o(0,g,c,d,e);e=k[g>>2]|0;_X(e,s,s,0,u,s,1,0,b,0)|0;if(!e){Tqa(u);r=a;return}Tqa(e);Tqa(u);r=a;return}function Cq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=k[a+20>>2]|0;Bq(0,b,d,Hc[k[(k[a>>2]|0)+164>>2]&511](a)|0,c);return}function Dq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=Rqa(c>>>0>1073741823?-1:c<<2)|0;if((c|0)>0){f=0;do{k[e+(f<<2)>>2]=d;f=f+1|0}while((f|0)!=(c|0))}Bq(0,b,k[a+20>>2]|0,c,e);Tqa(e);return}function Eq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Bq(0,b,k[a+20>>2]|0,c,d);return}function Fq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=Hc[k[(k[a>>2]|0)+164>>2]&511](a)|0;e=Rqa(d>>>0>1073741823?-1:d<<2)|0;if((d|0)>0){f=0;do{k[e+(f<<2)>>2]=c;f=f+1|0}while((f|0)!=(d|0))}Gq(0,b,k[a+20>>2]|0,d,e);Tqa(e);return}function Gq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;a=r;r=r+192|0;f=a+180|0;g=a+176|0;h=a+40|0;i=a+24|0;j=a+12|0;l=a;k[g>>2]=0;a:do if((d|0)>0){m=0;n=0;b:while(1){o=e+(m<<2)|0;switch(k[o>>2]|0){case 653:{q=n+1|0;break}case 971:{q=n+2|0;break}case 972:{q=n+3|0;break}default:{s=o;break b}}m=m+1|0;if((m|0)>=(d|0)){t=q;break a}else n=q}n=h+56|0;m=h+4|0;k[h>>2]=27524;k[n>>2]=27544;B=0;wa(508,h+56|0,m|0);o=B;B=0;if(o&1){o=Rb()|0;u=Q;v=o;vva(n);Qb(v|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[n>>2]=27488;B=0;va(448,m|0);o=B;B=0;do if(o&1){w=Rb()|0;x=Q;y=w}else{k[m>>2]=27560;w=h+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,m|0,f|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(f);Yua(w);Ava(m);x=A;y=z;break}Yua(f);B=0;z=Ia(40,h|0,69672,18)|0;A=B;B=0;if((((!(A&1)?(B=0,A=ya(427,k[s>>2]|0)|0,C=B,B=0,!(C&1)):0)?(C=Lta(A)|0,B=0,D=Ia(40,z|0,A|0,C|0)|0,C=B,B=0,!(C&1)):0)?(B=0,C=Ia(40,D|0,146481,18)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,C|0,0)|0,C=B,B=0,!(C&1)):0){C=Ab(20)|0;B=0;eb(502,i|0,69562,75);D=B;B=0;do if(!(D&1)){B=0;eb(502,j|0,70850,29);A=B;B=0;if(A&1){A=Rb()|0;z=Q;Yua(i);E=z;F=A;break}B=0;wa(510,l|0,m|0);A=B;B=0;if(A&1){A=Rb()|0;G=Q;H=A;I=1}else{B=0;ua(163,C|0,i|0,j|0,2956,l|0);A=B;B=0;if(A&1)J=1;else{B=0;eb(503,C|0,1240,229);B=0;J=0}A=Rb()|0;z=Q;Yua(l);G=z;H=A;I=J}Yua(j);Yua(i);if(I){E=G;F=H}else{K=G;L=H;k[h>>2]=27468;k[n>>2]=27488;k[m>>2]=27560;Yua(w);Ava(m);vva(n);Qb(L|0)}}else{A=Rb()|0;E=Q;F=A}while(0);zb(C|0);K=E;L=F;k[h>>2]=27468;k[n>>2]=27488;k[m>>2]=27560;Yua(w);Ava(m);vva(n);Qb(L|0)}D=Rb()|0;K=Q;L=D;k[h>>2]=27468;k[n>>2]=27488;k[m>>2]=27560;Yua(w);Ava(m);vva(n);Qb(L|0)}while(0);u=x;v=y;vva(n);Qb(v|0)}else t=0;while(0);v=b+4|0;y=ma(k[v>>2]|0,k[b>>2]|0)|0;x=Rqa(y>>>0>536870911?-1:y<<3)|0;u=b+12|0;if((y|0)>0){L=k[u>>2]|0;h=0;do{p[x+(h<<3)>>3]=+p[L+(h<<3)>>3];h=h+1|0}while((h|0)<(y|0))}_o(0,g,c,d,e);e=k[g>>2]|0;ZX(e,t,t,1,x,k[b>>2]|0,k[v>>2]|0,0,e,t,t,0,k[u>>2]|0,0)|0;if(!e){Tqa(x);r=a;return}Tqa(e);Tqa(x);r=a;return}function Hq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=k[a+20>>2]|0;Gq(0,b,d,Hc[k[(k[a>>2]|0)+164>>2]&511](a)|0,c);return}function Iq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,70888,87);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71026,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,177,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function Jq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,70888,87);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71005,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,178,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Kq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,70888,87);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,70976,28);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,179,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Lq(a){a=a|0;gh(a);k[a+12>>2]=279;return}function Mq(a){a=a|0;jh(a);return}function Nq(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;e=k[a>>2]|0;h=a+4|0;if(e>>>0<(k[h>>2]|0)>>>0)i=e;else return;do{e=k[i>>2]|0;Uc[k[(k[e>>2]|0)+424>>2]&63](e,b,c,d,f,g);i=i+4|0}while(i>>>0<(k[h>>2]|0)>>>0);return}function Oq(a){a=a|0;var b=0,c=0,d=0;b=k[a>>2]|0;c=a+4|0;if(b>>>0<(k[c>>2]|0)>>>0)d=b;else return;do{b=k[d>>2]|0;Ec[k[(k[b>>2]|0)+416>>2]&1023](b);d=d+4|0}while(d>>>0<(k[c>>2]|0)>>>0);return}function Pq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=r;r=r+16|0;c=b+4|0;d=b;k[c>>2]=0;if((th(a)|0)>0){e=0;f=0;while(1){g=qh(a,f)|0;h=Hc[k[(k[g>>2]|0)+164>>2]&511](g)|0;if((h|0)>(e|0)){k[c>>2]=h;i=h}else i=e;f=f+1|0;if((f|0)>=(th(a)|0))break;else e=i}}fZ(c,d,1,4,1,uY()|0)|0;r=b;return k[d>>2]|0}function Qq(a){a=a|0;var b=0,c=0,d=0,e=0;b=r;r=r+16|0;c=b+4|0;d=b;e=th(a)|0;k[c>>2]=e;fZ(c,d,1,4,4,uY()|0)|0;r=b;return k[d>>2]|0}function Rq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((th(a)|0)>0)d=0;else return;do{Sp(qh(a,d)|0,b,c);d=d+1|0}while((d|0)<(th(a)|0));return}function Sq(a){a=a|0;var b=0;k[a>>2]=-9999;b=a+4|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;return}function Tq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;b=a+4|0;c=k[b>>2]|0;do if(c){d=k[a>>2]|0;if((d|0)>0){e=d;d=c;f=0;while(1){g=k[d+(f<<2)>>2]|0;if(!g){h=d;i=e}else{yla(g);Sqa(g);h=k[b>>2]|0;i=k[a>>2]|0}f=f+1|0;if((f|0)>=(i|0)){j=h;break}else{e=i;d=h}}if(!j)break;else l=j}else l=c;Tqa(l)}while(0);l=k[a+8>>2]|0;if(l){yla(l);Sqa(l)}l=k[a+12>>2]|0;if(l){yla(l);Sqa(l)}l=k[a+16>>2]|0;if(l){yla(l);Sqa(l)}l=k[a+20>>2]|0;if(!l)return;yla(l);Sqa(l);return}function Uq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;f=r;r=r+16|0;g=f+4|0;h=f;k[g>>2]=(k[e+56>>2]|0)+1;k[h>>2]=c;i=Rqa(d>>>0>1073741823?-1:d<<2)|0;if((d|0)>0){j=ma(c+-1|0,d)|0;c=k[e+72>>2]|0;e=0;do{k[i+(e<<2)>>2]=k[c+(e+j<<2)>>2];e=e+1|0}while((e|0)!=(d|0))}k[a>>2]=b;e=Rqa(b>>>0>1073741823?-1:b<<2)|0;b=a+4|0;k[b>>2]=e;e=Qqa(16)|0;B=0;eb(509,e|0,i|0,d|0);d=B;B=0;if(d&1){d=Rb()|0;j=Q;Sqa(e);l=j;m=d;Qb(m|0)}k[a+8>>2]=e;e=Qqa(16)|0;B=0;eb(509,e|0,h|0,1);h=B;B=0;if(h&1){h=Rb()|0;d=Q;Sqa(e);l=d;m=h;Qb(m|0)}k[a+12>>2]=e;e=Qqa(16)|0;B=0;eb(509,e|0,g|0,1);g=B;B=0;if(g&1){g=Rb()|0;h=Q;Sqa(e);l=h;m=g;Qb(m|0)}k[a+16>>2]=e;k[a+20>>2]=0;e=k[a>>2]|0;if((e|0)>0)n=0;else{Tqa(i);r=f;return}do{k[(k[b>>2]|0)+(n<<2)>>2]=0;n=n+1|0}while((n|0)<(e|0));Tqa(i);r=f;return}function Vq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;if(!(d&-3)){n=(k[a+20>>2]|0)==0&1;o=k[a+4>>2]|0;if(o){p=k[a>>2]|0;q=Rqa(p)|0;if((p|0)>0){s=0;do{i[q+s>>0]=(k[o+(s<<2)>>2]|0)==0&1;s=s+1|0}while((s|0)<(p|0));t=n;u=0;v=q}else{t=n;u=0;v=q}}else{t=n;u=1;v=0}}else{t=1;u=1;v=0}a:do switch(d|0){case 0:{n=k[b>>2]|0;i[n>>0]=57;i[n+1>>0]=2;i[n+2>>0]=0;i[n+3>>0]=0;n=(k[b>>2]|0)+4|0;k[b>>2]=n;q=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;i[n>>0]=q;i[n+1>>0]=q>>8;i[n+2>>0]=q>>16;i[n+3>>0]=q>>24;q=(k[b>>2]|0)+4|0;k[b>>2]=q;i[q>>0]=t;q=(k[b>>2]|0)+1|0;k[b>>2]=q;i[q>>0]=u;q=(k[b>>2]|0)+1|0;k[b>>2]=q;n=(v|0)==0;i[q>>0]=n&1;q=(k[b>>2]|0)+1|0;k[b>>2]=q;if(n)w=0;else{TEa(q|0,v|0,k[a>>2]|0)|0;k[b>>2]=(k[b>>2]|0)+(k[a>>2]|0);w=v}break}case 2:{q=(k[c>>2]|0)+11|0;k[c>>2]=q;if(!v)w=0;else{k[c>>2]=q+(k[a>>2]|0);w=v}break}case 1:{q=(k[b>>2]|0)+4|0;k[b>>2]=q;n=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24;i[a>>0]=n;i[a+1>>0]=n>>8;i[a+2>>0]=n>>16;i[a+3>>0]=n>>24;q=k[b>>2]|0;p=q+4|0;k[b>>2]=p;s=i[p>>0]|0;p=q+5|0;k[b>>2]=p;o=(s&1)==0;s=i[p>>0]|0;p=q+6|0;k[b>>2]=p;x=(s&1)==0;s=i[p>>0]|0;p=q+7|0;k[b>>2]=p;if(!(s&1)){s=Rqa(n)|0;TEa(s|0,p|0,n|0)|0;k[b>>2]=p+n;if(x){y=s;z=36}else{A=s;z=37}}else if(x){y=v;z=36}else{A=v;z=37}if((z|0)==36){x=Rqa(n>>>0>1073741823?-1:n<<2)|0;k[a+4>>2]=x;C=y}else if((z|0)==37){k[a+4>>2]=0;C=A}x=Qqa(16)|0;B=0;va(489,x|0);n=B;B=0;if(n&1){n=Rb()|0;s=Q;Sqa(x);D=s;E=n;Qb(E|0)}k[a+8>>2]=x;x=Qqa(16)|0;B=0;va(489,x|0);n=B;B=0;if(n&1){n=Rb()|0;s=Q;Sqa(x);D=s;E=n;Qb(E|0)}k[a+12>>2]=x;x=Qqa(16)|0;B=0;va(489,x|0);n=B;B=0;if(n&1){n=Rb()|0;s=Q;Sqa(x);D=s;E=n;Qb(E|0)}k[a+16>>2]=x;do if(o){x=Qqa(16)|0;B=0;va(489,x|0);n=B;B=0;if(!(n&1)){k[a+20>>2]=x;break}n=Rb()|0;s=Q;Sqa(x);D=s;E=n;Qb(E|0)}else k[a+20>>2]=0;while(0);o=a+4|0;if((k[o>>2]|0)!=0?(n=k[a>>2]|0,(n|0)>0):0){s=n;n=0;while(1){if(!(i[C+n>>0]|0)){x=Qqa(16)|0;B=0;va(489,x|0);p=B;B=0;if(p&1){F=x;break}k[(k[o>>2]|0)+(n<<2)>>2]=x;G=k[a>>2]|0}else{k[(k[o>>2]|0)+(n<<2)>>2]=0;G=s}n=n+1|0;if((n|0)>=(G|0)){w=C;break a}else s=G}s=Rb()|0;n=Q;Sqa(F);D=n;E=s;Qb(E|0)}else w=C;break}default:{s=g+56|0;n=g+4|0;k[g>>2]=27524;k[s>>2]=27544;B=0;wa(508,g+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;H=Q;I=o;vva(s);Qb(I|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[s>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){x=Rb()|0;J=Q;K=x}else{k[n>>2]=27560;x=g+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,n|0,f|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(f);Yua(x);Ava(n);J=q;K=p;break}Yua(f);B=0;p=Ia(40,g|0,143951,43)|0;q=B;B=0;b:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,L=B,B=0,!(L&1)):0){L=Ab(20)|0;B=0;eb(502,h|0,71041,79);M=B;B=0;do if(!(M&1)){B=0;eb(502,j|0,149525,8);N=B;B=0;if(N&1){N=Rb()|0;O=Q;Yua(h);P=O;R=N;break}B=0;wa(510,m|0,n|0);N=B;B=0;if(N&1){N=Rb()|0;S=Q;T=N;U=1}else{B=0;ua(163,L|0,h|0,j|0,99,m|0);N=B;B=0;if(N&1)V=1;else{B=0;eb(503,L|0,1240,229);B=0;V=0}N=Rb()|0;O=Q;Yua(m);S=O;T=N;U=V}Yua(j);Yua(h);if(U){P=S;R=T}else{W=S;X=T;break b}}else{N=Rb()|0;P=Q;R=N}while(0);zb(L|0);W=P;X=R}else z=21;while(0);if((z|0)==21){p=Rb()|0;W=Q;X=p}k[g>>2]=27468;k[s>>2]=27488;k[n>>2]=27560;Yua(x);Ava(n);vva(s);D=W;E=X;Qb(E|0)}while(0);H=J;I=K;vva(s);Qb(I|0)}}while(0);I=a+4|0;K=k[I>>2]|0;c:do if((K|0)!=0?(J=k[a>>2]|0,(J|0)>0):0){H=K;E=J;J=0;while(1){X=k[H+(J<<2)>>2]|0;if(!X)Y=E;else{Cla(X,b,c,d);Y=k[a>>2]|0}X=J+1|0;if((X|0)>=(Y|0))break c;H=k[I>>2]|0;E=Y;J=X}}while(0);Cla(k[a+8>>2]|0,b,c,d);Cla(k[a+12>>2]|0,b,c,d);Cla(k[a+16>>2]|0,b,c,d);Y=k[a+20>>2]|0;if(Y)Cla(Y,b,c,d);if(!w){r=e;return}Tqa(w);r=e;return}function Wq(a,b){a=a|0;b=b|0;var c=0;c=Qqa(16)|0;B=0;eb(509,c|0,b|0,2);b=B;B=0;if(b&1){b=Rb()|0;Sqa(c);Qb(b|0)}else{k[a+20>>2]=c;return}}function Xq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=a+4|0;if(!(k[e>>2]|0))return;a=Qqa(16)|0;B=0;eb(509,a|0,b|0,c|0);c=B;B=0;if(c&1){c=Rb()|0;Sqa(a);Qb(c|0)}k[(k[e>>2]|0)+(d<<2)>>2]=a;return}function Yq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=r;r=r+16|0;f=e;k[b>>2]=k[a>>2];k[f>>2]=c;k[f+4>>2]=d;d=k[a>>2]|0;c=Rqa(d>>>0>1073741823?-1:d<<2)|0;g=b+4|0;k[g>>2]=c;if((d|0)>0){d=a+4|0;c=0;do{h=k[(k[d>>2]|0)+(c<<2)>>2]|0;if((h|0)!=0?(Hla(h)|0)!=0:0){h=Ila(k[(k[d>>2]|0)+(c<<2)>>2]|0,f,2)|0;k[(k[g>>2]|0)+(c<<2)>>2]=h}else k[(k[g>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)<(k[a>>2]|0))}k[b+12>>2]=0;c=Ila(k[a+8>>2]|0,f,2)|0;k[b+8>>2]=c;c=Bla(k[a+16>>2]|0)|0;k[b+16>>2]=c;r=e;return}function Zq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=r;r=r+16|0;g=f;k[g>>2]=c;k[g+4>>2]=d;k[g+8>>2]=e;k[b>>2]=k[a>>2];e=k[a>>2]|0;d=Rqa(e>>>0>1073741823?-1:e<<2)|0;c=b+4|0;k[c>>2]=d;if((e|0)>0){e=a+4|0;d=0;do{h=k[(k[e>>2]|0)+(d<<2)>>2]|0;if((h|0)!=0?(Hla(h)|0)!=0:0){h=Ila(k[(k[e>>2]|0)+(d<<2)>>2]|0,g,3)|0;k[(k[c>>2]|0)+(d<<2)>>2]=h}else k[(k[c>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)<(k[a>>2]|0))}k[b+12>>2]=0;d=Ila(k[a+8>>2]|0,g,3)|0;k[b+8>>2]=d;d=Bla(k[a+16>>2]|0)|0;k[b+16>>2]=d;r=f;return}function _q(a){a=a|0;k[a>>2]=29448;k[a+4>>2]=30012;k[a+36>>2]=0;Tq(a+48|0);Qo(a);return}function $q(a){a=a|0;k[a>>2]=29448;k[a+4>>2]=30012;k[a+36>>2]=0;Tq(a+48|0);Qo(a);Sqa(a);return}function ar(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=Qqa(72)|0;B=0;va(461,b|0);c=B;B=0;if(c&1){c=Rb()|0;d=Q;e=c}else{c=b+48|0;B=0;va(462,c|0);f=B;B=0;do if(!(f&1)){B=0;g=B;B=0;if(g&1){g=Rb()|0;h=Q;Tq(c);i=h;j=g;break}k[b>>2]=29448;k[b+4>>2]=30012;g=k[a+48>>2]|0;h=(g|0)>0;if(h){l=Rqa(g>>>0>1073741823?-1:g<<2)|0;k[b+40>>2]=l;m=k[a+40>>2]|0;n=0;do{k[l+(n<<2)>>2]=k[m+(n<<2)>>2];n=n+1|0}while((n|0)!=(g|0))}else k[b+40>>2]=0;k[b+44>>2]=k[a+44>>2];k[c>>2]=g;n=a+52|0;m=k[n>>2]|0;a:do if(m){l=Rqa(g>>>0>1073741823?-1:g<<2)|0;o=b+52|0;k[o>>2]=l;if(h){l=g;p=m;q=0;while(1){r=k[p+(q<<2)>>2]|0;if(!r){k[(k[o>>2]|0)+(q<<2)>>2]=0;s=l}else{t=Bla(r)|0;k[(k[o>>2]|0)+(q<<2)>>2]=t;s=k[c>>2]|0}t=q+1|0;if((t|0)>=(s|0))break a;l=s;p=k[n>>2]|0;q=t}}}else k[b+52>>2]=0;while(0);n=a+56|0;m=Bla(k[n>>2]|0)|0;k[b+56>>2]=m;m=a+60|0;g=Bla(k[m>>2]|0)|0;k[b+60>>2]=g;g=a+64|0;h=Bla(k[g>>2]|0)|0;k[b+64>>2]=h;k[b+68>>2]=0;k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2];h=k[a+16>>2]|0;do if(!h){q=Qqa(36)|0;B=0;va(486,q|0);p=B;B=0;if(!(p&1)){k[b+16>>2]=q;break}p=Rb()|0;l=Q;Sqa(q);u=l;v=p;Qb(v|0)}else{p=hh(h)|0;k[b+16>>2]=p}while(0);k[b+36>>2]=k[a+36>>2];h=k[a+20>>2]|0;if(!h){k[b+20>>2]=0;w=k[n>>2]|0;x=Gla(w)|0;y=b+24|0;k[y>>2]=x;z=k[m>>2]|0;A=Fla(z)|0;C=b+28|0;k[C>>2]=A;D=k[g>>2]|0;E=Fla(D)|0;F=b+32|0;k[F>>2]=E;return b|0}else{p=Rqa(12)|0;k[b+20>>2]=p;k[p>>2]=k[h>>2];k[p+4>>2]=k[h+4>>2];k[p+8>>2]=k[h+8>>2];w=k[n>>2]|0;x=Gla(w)|0;y=b+24|0;k[y>>2]=x;z=k[m>>2]|0;A=Fla(z)|0;C=b+28|0;k[C>>2]=A;D=k[g>>2]|0;E=Fla(D)|0;F=b+32|0;k[F>>2]=E;return b|0}}else{h=Rb()|0;i=Q;j=h}while(0);Qo(b);d=i;e=j}Sqa(b);u=d;v=e;Qb(v|0);return 0}function br(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;l=e;switch(d|0){case 0:{m=k[b>>2]|0;i[m>>0]=107;i[m+1>>0]=2;i[m+2>>0]=0;i[m+3>>0]=0;k[b>>2]=(k[b>>2]|0)+4;break}case 2:{k[c>>2]=(k[c>>2]|0)+4;break}case 1:{k[b>>2]=(k[b>>2]|0)+4;break}default:{m=g+56|0;n=g+4|0;k[g>>2]=27524;k[m>>2]=27544;B=0;wa(508,g+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;q=o;vva(m);Qb(q|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){s=Rb()|0;t=Q;u=s}else{k[n>>2]=27560;s=g+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,n|0,f|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(f);Yua(s);Ava(n);t=w;u=v;break}Yua(f);B=0;v=Ia(40,g|0,143951,43)|0;w=B;B=0;if(!(w&1)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,h|0,71126,71);w=B;B=0;do if(!(w&1)){B=0;eb(502,j|0,149525,8);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(h);z=y;A=x;break}B=0;wa(510,l|0,n|0);x=B;B=0;if(x&1){x=Rb()|0;C=Q;D=x;E=1}else{B=0;ua(163,v|0,h|0,j|0,111,l|0);x=B;B=0;if(x&1)F=1;else{B=0;eb(503,v|0,1240,229);B=0;F=0}x=Rb()|0;y=Q;Yua(l);C=y;D=x;E=F}Yua(j);Yua(h);if(E){z=C;A=D}else{G=C;H=D;k[g>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);Qb(H|0)}}else{x=Rb()|0;z=Q;A=x}while(0);zb(v|0);G=z;H=A;k[g>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);Qb(H|0)}w=Rb()|0;G=Q;H=w;k[g>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);Qb(H|0)}while(0);p=t;q=u;vva(m);Qb(q|0)}}q=a+48|0;Vq(q,b,c,d);dq(a,b,c,d,k[q>>2]|0);q=Gla(k[a+56>>2]|0)|0;k[a+24>>2]=q;q=Fla(k[a+60>>2]|0)|0;k[a+28>>2]=q;q=Fla(k[a+64>>2]|0)|0;k[a+32>>2]=q;r=e;return}function cr(a){a=a|0;var b=0,c=0,d=0.0,e=0.0,f=0.0;b=r;r=r+48|0;c=b;Ko(c,k[a+24>>2]|0,2,0);d=+p[c+24>>3]-+p[c>>3];e=+p[c+32>>3]-+p[c+8>>3];f=+aa(+(d*d+e*e));r=b;return +f}function dr(a){a=a|0;return k[a+44>>2]|0}function er(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=r;r=r+16|0;f=e;xp(a,f,d);d=+p[f+8>>3]>=0.0;f=Rqa(24)|0;a=c+((d?3:0)<<3)|0;k[f>>2]=k[a>>2];k[f+4>>2]=k[a+4>>2];k[f+8>>2]=k[a+8>>2];k[f+12>>2]=k[a+12>>2];k[f+16>>2]=k[a+16>>2];k[f+20>>2]=k[a+20>>2];k[b>>2]=f;r=e;return}function fr(a){a=a|0;return zt(a,k[a+44>>2]|0)|0}function gr(a){a=a|0;return 2}function hr(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+16|0;c=b;xp(a,c,206);if(!($p(a)|0)){d=0;r=b;return d|0}d=((+p[c+8>>3]<0.0&1)+(+p[c>>3]<0.0&1)|0)==1;r=b;return d|0}function ir(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Dt(a,b,c,d);return}function jr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;p[b>>3]=1.0;return}function kr(a){a=a|0;var b=0;a=Qqa(40)|0;B=0;va(490,a|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(a);Qb(b|0)}else return a|0;return 0}function lr(a,b){a=a|0;b=b|0;a=Qqa(40)|0;B=0;wa(515,a|0,b|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(a);Qb(b|0)}else return a|0;return 0}function mr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0.0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;d=r;r=r+192|0;a=d+176|0;e=d+40|0;f=d+24|0;g=d+12|0;h=d;i=+p[c>>3];if(i==+p[b>>3]){c=Qqa(40)|0;B=0;ta(55,c|0,-1.0);j=B;B=0;if(!(j&1)){l=c;r=d;return l|0}j=Rb()|0;m=Q;Sqa(c);n=m;o=j;Qb(o|0)}if(i==+p[b+24>>3]){b=Qqa(40)|0;B=0;ta(55,b|0,1.0);j=B;B=0;if(!(j&1)){l=b;r=d;return l|0}l=Rb()|0;d=Q;Sqa(b);n=d;o=l;Qb(o|0)}l=e+56|0;d=e+4|0;k[e>>2]=27524;k[l>>2]=27544;B=0;wa(508,e+56|0,d|0);b=B;B=0;if(b&1){b=Rb()|0;q=Q;s=b;vva(l);Qb(s|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[l>>2]=27488;B=0;va(448,d|0);b=B;B=0;do if(b&1){j=Rb()|0;t=Q;u=j}else{k[d>>2]=27560;j=e+36|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;k[e+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,d|0,a|0);m=B;B=0;if(m&1){m=Rb()|0;c=Q;Yua(a);Yua(j);Ava(d);t=c;u=m;break}Yua(a);B=0;m=Ia(40,e|0,71198,36)|0;c=B;B=0;a:do if(!(c&1)?(B=0,Xa(239,m|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,f|0,71126,71);w=B;B=0;do if(!(w&1)){B=0;eb(502,g|0,75231,8);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(f);z=y;A=x;break}B=0;wa(510,h|0,d|0);x=B;B=0;if(x&1){x=Rb()|0;C=Q;D=x;E=1}else{B=0;ua(163,v|0,f|0,g|0,239,h|0);x=B;B=0;if(x&1)F=1;else{B=0;eb(503,v|0,1240,229);B=0;F=0}x=Rb()|0;y=Q;Yua(h);C=y;D=x;E=F}Yua(g);Yua(f);if(E){z=C;A=D}else{G=C;H=D;break a}}else{x=Rb()|0;z=Q;A=x}while(0);zb(v|0);G=z;H=A}else I=22;while(0);if((I|0)==22){m=Rb()|0;G=Q;H=m}k[e>>2]=27468;k[l>>2]=27488;k[d>>2]=27560;Yua(j);Ava(d);vva(l);n=G;o=H;Qb(o|0)}while(0);q=t;s=u;vva(l);Qb(s|0);return 0}function nr(a,b,c){a=a|0;b=b|0;c=c|0;Ct(a,b,c,k[a+44>>2]|0);return}function or(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;At(a,b,c,d,k[a+44>>2]|0);return}function pr(a,b,c){a=a|0;b=b|0;c=c|0;Ct(a,b,c,738);return}function qr(a,b,c){a=a|0;b=b|0;c=c|0;Ct(a,b,c,742);return}function rr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=Rqa(48)|0;Ko(d,k[a+24>>2]|0,2,0);p[b>>3]=+p[c>>3]>+p[d>>3]?1.0:-1.0;Tqa(d);return}function sr(a){a=a|0;return 619}function tr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74181,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,43,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function ur(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71735,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,44,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function vr(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,74214,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,45,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function wr(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73975,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,46,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function xr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74235,18);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,48,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function yr(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73945,29);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,49,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function zr(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75312,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,50,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function Ar(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73925,19);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,51,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function Br(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;g=r;r=r+192|0;f=g+176|0;e=g+40|0;d=g+24|0;c=g+12|0;b=g;g=e+56|0;a=e+4|0;k[e>>2]=27524;k[g>>2]=27544;B=0;wa(508,e+56|0,a|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(g);Qb(j|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[g>>2]=27488;B=0;va(448,a|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[a>>2]=27560;l=e+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[e+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,a|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(f);Yua(l);Ava(a);m=p;n=o;break}Yua(f);B=0;o=Ia(40,e|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,c|0,71725,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,b|0,a|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,c|0,52,b|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(b);x=u;y=t;z=A}Yua(c);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[e>>2]=27468;k[g>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(g);Qb(D|0)}while(0);i=m;j=n;vva(g);Qb(j|0)}function Cr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74254,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,53,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function Dr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74301,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,54,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function Er(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74333,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,55,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Fr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71712,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,56,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function Gr(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,103020,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,58,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function Hr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73906,18);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,59,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Ir(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73890,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,60,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function Jr(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71697,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,61,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function Kr(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,73874,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,62,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function Lr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74430,18);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,63,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return +(0.0)}function Mr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,65,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function Nr(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,143640,15)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,a|0,71257,83);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,75292,19);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(a);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,a|0,f|0,66,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(a);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(E|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function Or(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;f=r;r=r+192|0;e=f+176|0;d=f+40|0;c=f+24|0;b=f+12|0;a=f;f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,g|0,e|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(e);Yua(l);Ava(g);m=p;n=o;break}Yua(e);B=0;o=Ia(40,d|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,c|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,b|0,75268,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);v=u;w=t;break}B=0;wa(510,a|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,c|0,b|0,67,a|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(a);x=u;y=t;z=A}Yua(b);Yua(c);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(D|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function Pr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73843,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,68,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Qr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74526,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,69,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Rr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,80838,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,71,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Sr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73815,27);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,73,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Tr(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73799,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,74,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function Ur(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;f=r;r=r+192|0;e=f+176|0;d=f+40|0;c=f+24|0;b=f+12|0;a=f;f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,g|0,e|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(e);Yua(l);Ava(g);m=p;n=o;break}Yua(e);B=0;o=Ia(40,d|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,c|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,b|0,74539,26);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);v=u;w=t;break}B=0;wa(510,a|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,c|0,b|0,75,a|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(a);x=u;y=t;z=A}Yua(b);Yua(c);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(D|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function Vr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71670,26);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,77,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Wr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71644,25);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,78,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Xr(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,103033,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,79,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function Yr(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,103046,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,80,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function Zr(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,103054,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,81,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function _r(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,103064,24);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,82,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function $r(a,b,c){a=a|0;b=+b;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;c=r;r=r+192|0;a=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,71257,83);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,74573,18);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,83,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(E|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function as(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74624,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,84,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function bs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74656,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,85,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function cs(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;a=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,71257,83);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,74706,10);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,86,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(E|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function ds(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74747,38);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,89,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function es(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74717,29);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,88,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function fs(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75251,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,91,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function gs(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73776,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,93,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function hs(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,72510,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,94,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function is(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,72519,11);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,95,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function js(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73761,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,96,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function ks(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71620,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,98,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function ls(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73737,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,99,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function ms(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71597,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,101,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function ns(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,98621,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,102,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return +(0.0)}function os(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,99206,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,103,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return +(0.0)}function ps(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;f=r;r=r+192|0;a=f+176|0;g=f+40|0;h=f+24|0;i=f+12|0;j=f;f=g+56|0;l=g+4|0;k[g>>2]=27524;k[f>>2]=27544;B=0;wa(508,g+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(f);Qb(o|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[f>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=g+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[g+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,l|0,a|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);Yua(p);Ava(l);q=u;s=t;break}Yua(a);B=0;t=Ia(40,g|0,149721,19)|0;u=B;B=0;a:do if(!(u&1)?(B=0,Xa(239,t|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,h|0,71257,83);w=B;B=0;do if(!(w&1)){B=0;eb(502,i|0,99206,8);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(h);z=y;A=x;break}B=0;wa(510,j|0,l|0);x=B;B=0;if(x&1){x=Rb()|0;C=Q;D=x;E=1}else{B=0;ua(163,v|0,h|0,i|0,104,j|0);x=B;B=0;if(x&1)F=1;else{B=0;eb(503,v|0,1240,229);B=0;F=0}x=Rb()|0;y=Q;Yua(j);C=y;D=x;E=F}Yua(i);Yua(h);if(E){z=C;A=D}else{G=C;H=D;break a}}else{x=Rb()|0;z=Q;A=x}while(0);zb(v|0);G=z;H=A}else I=16;while(0);if((I|0)==16){t=Rb()|0;G=Q;H=t}k[g>>2]=27468;k[f>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(f);Qb(H|0)}while(0);n=q;o=s;vva(f);Qb(o|0);return +(0.0)}function qs(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73723,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,106,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return +(0.0)}function rs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,99229,6);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,107,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0);return +(0.0)}function ss(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75240,10);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,108,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return +(0.0)}function ts(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,75231,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,112,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0);return 0}function us(a,b,c,d,e,f){a=a|0;b=b|0;c=+c;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;f=r;r=r+192|0;e=f+176|0;b=f+40|0;a=f+24|0;g=f+12|0;h=f;f=b+56|0;i=b+4|0;k[b>>2]=27524;k[f>>2]=27544;B=0;wa(508,b+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(f);Qb(m|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[f>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=b+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[b+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,i|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);Yua(n);Ava(i);o=s;p=q;break}Yua(e);B=0;q=Ia(40,b|0,149721,19)|0;s=B;B=0;a:do if(!(s&1)?(B=0,Xa(239,q|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,a|0,71257,83);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,75231,8);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(a);x=w;y=v;break}B=0;wa(510,h|0,i|0);v=B;B=0;if(v&1){v=Rb()|0;z=Q;A=v;C=1}else{B=0;ua(163,t|0,a|0,g|0,113,h|0);v=B;B=0;if(v&1)D=1;else{B=0;eb(503,t|0,1240,229);B=0;D=0}v=Rb()|0;w=Q;Yua(h);z=w;A=v;C=D}Yua(g);Yua(a);if(C){x=z;y=A}else{E=z;F=A;break a}}else{v=Rb()|0;x=Q;y=v}while(0);zb(t|0);E=x;F=y}else G=16;while(0);if((G|0)==16){q=Rb()|0;E=Q;F=q}k[b>>2]=27468;k[f>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(f);Qb(F|0)}while(0);l=o;m=p;vva(f);Qb(m|0);return 0}function vs(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71584,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,114,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function ws(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73710,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,115,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0);return 0}function xs(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71572,11);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,116,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function ys(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71538,33);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,120,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function zs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73680,29);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,121,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function As(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71515,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,122,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Bs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73635,27);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,124,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function Cs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71492,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,127,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Ds(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71471,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,126,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Es(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73607,10);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,117,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0);return 0}function Fs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71460,10);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,128,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Gs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71450,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,130,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Hs(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71428,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,131,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function Is(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71406,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,132,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function Js(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73586,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,133,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Ks(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75650,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,134,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function Ls(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71391,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,135,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Ms(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74864,29);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,136,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function Ns(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71380,10);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,137,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function Os(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74894,26);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,138,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function Ps(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;f=r;r=r+192|0;e=f+176|0;d=f+40|0;c=f+24|0;b=f+12|0;a=f;f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,g|0,e|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(e);Yua(l);Ava(g);m=p;n=o;break}Yua(e);B=0;o=Ia(40,d|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,c|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,b|0,71356,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);v=u;w=t;break}B=0;wa(510,a|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,c|0,b|0,139,a|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(a);x=u;y=t;z=A}Yua(b);Yua(c);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(D|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function Qs(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73562,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,140,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Rs(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74921,17);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,141,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function Ss(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,72600,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,142,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function Ts(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;a=r;r=r+192|0;g=a+176|0;h=a+40|0;i=a+24|0;j=a+12|0;l=a;a=h+56|0;m=h+4|0;k[h>>2]=27524;k[a>>2]=27544;B=0;wa(508,h+56|0,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(a);Qb(p|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[a>>2]=27488;B=0;va(448,m|0);n=B;B=0;do if(n&1){q=Rb()|0;s=Q;t=q}else{k[m>>2]=27560;q=h+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[h+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,m|0,g|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(g);Yua(q);Ava(m);s=v;t=u;break}Yua(g);B=0;u=Ia(40,h|0,149721,19)|0;v=B;B=0;a:do if(!(v&1)?(B=0,Xa(239,u|0,0)|0,w=B,B=0,!(w&1)):0){w=Ab(20)|0;B=0;eb(502,i|0,71257,83);x=B;B=0;do if(!(x&1)){B=0;eb(502,j|0,73539,22);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(i);A=z;C=y;break}B=0;wa(510,l|0,m|0);y=B;B=0;if(y&1){y=Rb()|0;D=Q;E=y;F=1}else{B=0;ua(163,w|0,i|0,j|0,143,l|0);y=B;B=0;if(y&1)G=1;else{B=0;eb(503,w|0,1240,229);B=0;G=0}y=Rb()|0;z=Q;Yua(l);D=z;E=y;F=G}Yua(j);Yua(i);if(F){A=D;C=E}else{H=D;I=E;break a}}else{y=Rb()|0;A=Q;C=y}while(0);zb(w|0);H=A;I=C}else J=16;while(0);if((J|0)==16){u=Rb()|0;H=Q;I=u}k[h>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(a);Qb(I|0)}while(0);o=s;p=t;vva(a);Qb(p|0);return +(0.0)}function Us(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,93069,18);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,144,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function Vs(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,93088,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,145,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function Ws(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,92779,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,146,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function Xs(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,99320,11);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,147,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function Ys(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75211,19);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,148,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function Zs(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73529,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,149,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function _s(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,103089,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,150,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function $s(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,103106,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,151,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function at(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,103123,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,152,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function bt(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;f=r;r=r+192|0;e=f+176|0;d=f+40|0;c=f+24|0;b=f+12|0;a=f;f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,g|0,e|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(e);Yua(l);Ava(g);m=p;n=o;break}Yua(e);B=0;o=Ia(40,d|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,c|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,b|0,74939,6);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);v=u;w=t;break}B=0;wa(510,a|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,c|0,b|0,153,a|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(a);x=u;y=t;z=A}Yua(b);Yua(c);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(D|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function ct(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73496,32);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,154,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function dt(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73464,31);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,155,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function et(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73437,26);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,156,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0);return 0}function ft(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,73411,25);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,157,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function gt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,71341,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,158,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function ht(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75691,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,159,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function it(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73392,18);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,160,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function jt(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,73369,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,161,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function kt(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;g=r;r=r+192|0;f=g+176|0;e=g+40|0;d=g+24|0;c=g+12|0;b=g;g=e+56|0;a=e+4|0;k[e>>2]=27524;k[g>>2]=27544;B=0;wa(508,e+56|0,a|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(g);Qb(j|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[g>>2]=27488;B=0;va(448,a|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[a>>2]=27560;l=e+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[e+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,a|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(f);Yua(l);Ava(a);m=p;n=o;break}Yua(f);B=0;o=Ia(40,e|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,c|0,99724,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,b|0,a|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,c|0,162,b|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(b);x=u;y=t;z=A}Yua(c);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[e>>2]=27468;k[g>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(g);Qb(D|0)}while(0);i=m;j=n;vva(g);Qb(j|0)}function lt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74963,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,163,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function mt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,75023,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,167,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function nt(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;var i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;f=r;r=r+192|0;e=f+176|0;d=f+40|0;c=f+24|0;b=f+12|0;a=f;f=d+56|0;i=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(f);Qb(m|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=d+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[d+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,i|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);Yua(n);Ava(i);o=s;p=q;break}Yua(e);B=0;q=Ia(40,d|0,149435,20)|0;s=B;B=0;a:do if(!(s&1)?(B=0,Xa(239,q|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,c|0,71257,83);u=B;B=0;do if(!(u&1)){B=0;eb(502,b|0,75190,20);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);x=w;y=v;break}B=0;wa(510,a|0,i|0);v=B;B=0;if(v&1){v=Rb()|0;z=Q;A=v;C=1}else{B=0;ua(163,t|0,c|0,b|0,171,a|0);v=B;B=0;if(v&1)D=1;else{B=0;eb(503,t|0,1240,229);B=0;D=0}v=Rb()|0;w=Q;Yua(a);z=w;A=v;C=D}Yua(b);Yua(c);if(C){x=z;y=A}else{E=z;F=A;break a}}else{v=Rb()|0;x=Q;y=v}while(0);zb(t|0);E=x;F=y}else G=16;while(0);if((G|0)==16){q=Rb()|0;E=Q;F=q}k[d>>2]=27468;k[f>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(f);Qb(F|0)}while(0);l=o;m=p;vva(f);Qb(m|0)}function ot(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;var i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;f=r;r=r+192|0;e=f+176|0;d=f+40|0;c=f+24|0;b=f+12|0;a=f;f=d+56|0;i=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(f);Qb(m|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=d+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[d+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,i|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);Yua(n);Ava(i);o=s;p=q;break}Yua(e);B=0;q=Ia(40,d|0,149435,20)|0;s=B;B=0;a:do if(!(s&1)?(B=0,Xa(239,q|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,c|0,71257,83);u=B;B=0;do if(!(u&1)){B=0;eb(502,b|0,75166,23);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);x=w;y=v;break}B=0;wa(510,a|0,i|0);v=B;B=0;if(v&1){v=Rb()|0;z=Q;A=v;C=1}else{B=0;ua(163,t|0,c|0,b|0,172,a|0);v=B;B=0;if(v&1)D=1;else{B=0;eb(503,t|0,1240,229);B=0;D=0}v=Rb()|0;w=Q;Yua(a);z=w;A=v;C=D}Yua(b);Yua(c);if(C){x=z;y=A}else{E=z;F=A;break a}}else{v=Rb()|0;x=Q;y=v}while(0);zb(t|0);E=x;F=y}else G=16;while(0);if((G|0)==16){q=Rb()|0;E=Q;F=q}k[d>>2]=27468;k[f>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(f);Qb(F|0)}while(0);l=o;m=p;vva(f);Qb(m|0)}function pt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149435,20)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75153,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,174,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return +(0.0)}function qt(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149435,20)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75143,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,173,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function rt(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149435,20)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75133,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,164,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function st(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144327,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,87,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function tt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,71257,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74786,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,90,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function ut(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;tt(a+-4|0,b,c,d)}function vt(a,b,c){a=a|0;b=b|0;c=c|0;st(a+-4|0,b,c)}function wt(a){a=a|0;return}function xt(a){a=a|0;return}function yt(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0.0,l=0.0,m=0,n=0.0;a=r;r=r+32|0;g=a+16|0;h=a;i=zt(0,f)|0;j=zt(0,f)|0;Et(0,g,e,f);k=1.0/(+$(+(+p[d+24>>3]-+p[d>>3]))*.5);if((j|0)>0){d=0;do{p[h+(d<<3)>>3]=k*+p[g+(d<<3)>>3];d=d+1|0}while((d|0)!=(j|0))}if((i|0)>0){l=0.0;m=0}else{n=0.0;p[b>>3]=n;r=a;return}while(1){k=l+ +p[h+(m<<3)>>3]*+p[c+(m<<3)>>3];m=m+1|0;if((m|0)==(i|0)){n=k;break}else l=k}p[b>>3]=n;r=a;return}function zt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;switch(b|0){case 738:{h=2;r=a;return h|0}case 739:{h=2;r=a;return h|0}case 736:{h=1;r=a;return h|0}default:{h=d+56|0;a=d+4|0;k[d>>2]=27524;k[h>>2]=27544;B=0;wa(508,d+56|0,a|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(h);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[h>>2]=27488;B=0;va(448,a|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[a>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(a);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,132447,13)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,b|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,71744,74);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,75442,13);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,a|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,197,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}while(0);j=n;l=o;vva(h);Qb(l|0)}}return 0}function At(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0.0,i=0;a=r;r=r+16|0;f=a;g=zt(0,e)|0;Et(0,f,d,e);h=1.0/(+$(+(+p[c+24>>3]-+p[c>>3]))*.5);if((g|0)>0)i=0;else{r=a;return}do{p[b+(i<<3)>>3]=h*+p[f+(i<<3)>>3];i=i+1|0}while((i|0)!=(g|0));r=a;return}function Bt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0.0,j=0.0,k=0.0;a=r;r=r+16|0;f=a;g=zt(0,e)|0;Ct(0,f,d,e);if((g|0)>0){h=0;i=0.0}else{j=0.0;p[b>>3]=j;r=a;return}while(1){k=i+ +p[f+(h<<3)>>3]*+p[c+(h<<3)>>3];h=h+1|0;if((h|0)==(g|0)){j=k;break}else i=k}p[b>>3]=j;r=a;return}function Ct(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0.0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;e=a+176|0;f=a+40|0;g=a+24|0;h=a+12|0;i=a;switch(d|0){case 736:{p[b>>3]=1.0;r=a;return}case 739:case 738:{j=c+32|0;p[b>>3]=(1.0-+p[j>>3])*.5;p[b+8>>3]=(+p[j>>3]+1.0)*.5;r=a;return}case 742:{j=c+32|0;l=+p[j>>3];p[b>>3]=l*(l+-1.0)*.5;l=+p[j>>3];p[b+8>>3]=l*(l+1.0)*.5;l=+p[j>>3];p[b+16>>3]=(1.0-l)*(l+1.0);r=a;return}default:{a=f+56|0;b=f+4|0;k[f>>2]=27524;k[a>>2]=27544;B=0;wa(508,f+56|0,b|0);j=B;B=0;if(j&1){j=Rb()|0;m=Q;n=j;vva(a);Qb(n|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[a>>2]=27488;B=0;va(448,b|0);j=B;B=0;do if(j&1){c=Rb()|0;o=Q;q=c}else{k[b>>2]=27560;c=f+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(e);Yua(c);Ava(b);o=t;q=s;break}Yua(e);B=0;s=Ia(40,f|0,132447,13)|0;t=B;B=0;if((((!(t&1)?(B=0,t=ya(427,d|0)|0,u=B,B=0,!(u&1)):0)?(u=Lta(t)|0,B=0,v=Ia(40,s|0,t|0,u|0)|0,u=B,B=0,!(u&1)):0)?(B=0,u=Ia(40,v|0,146481,18)|0,v=B,B=0,!(v&1)):0)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,g|0,71744,74);v=B;B=0;do if(!(v&1)){B=0;eb(502,h|0,75456,17);t=B;B=0;if(t&1){t=Rb()|0;s=Q;Yua(g);w=s;x=t;break}B=0;wa(510,i|0,b|0);t=B;B=0;if(t&1){t=Rb()|0;y=Q;z=t;A=1}else{B=0;ua(163,u|0,g|0,h|0,134,i|0);t=B;B=0;if(t&1)C=1;else{B=0;eb(503,u|0,1240,229);B=0;C=0}t=Rb()|0;s=Q;Yua(i);y=s;z=t;A=C}Yua(h);Yua(g);if(A){w=y;x=z}else{D=y;E=z;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(c);Ava(b);vva(a);Qb(E|0)}}else{t=Rb()|0;w=Q;x=t}while(0);zb(u|0);D=w;E=x;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(c);Ava(b);vva(a);Qb(E|0)}v=Rb()|0;D=Q;E=v;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(c);Ava(b);vva(a);Qb(E|0)}while(0);m=o;n=q;vva(a);Qb(n|0)}}}function Dt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0.0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;d=r;r=r+192|0;a=d+176|0;e=d+40|0;f=d+24|0;g=d+12|0;h=d;i=+$(+(+p[c+24>>3]-+p[c>>3]))*.5;p[b>>3]=i;if(!(i<0.0)){r=d;return}d=e+56|0;b=e+4|0;k[e>>2]=27524;k[d>>2]=27544;B=0;wa(508,e+56|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;j=Q;l=c;vva(d);Qb(l|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);c=B;B=0;do if(c&1){m=Rb()|0;n=Q;o=m}else{k[b>>2]=27560;m=e+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[e+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,b|0,a|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(a);Yua(m);Ava(b);n=s;o=q;break}Yua(a);B=0;q=Ia(40,e|0,75474,30)|0;s=B;B=0;if(!(s&1)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,f|0,71744,74);s=B;B=0;do if(!(s&1)){B=0;eb(502,g|0,75505,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(f);v=u;w=t;break}B=0;wa(510,h|0,b|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,f|0,g|0,99,h|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(h);x=u;y=t;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(d);Qb(D|0)}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w;k[e>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(d);Qb(D|0)}s=Rb()|0;C=Q;D=s;k[e>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(d);Qb(D|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function Et(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0.0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;e=a+176|0;f=a+40|0;g=a+24|0;h=a+12|0;i=a;switch(d|0){case 736:{p[b>>3]=0.0;r=a;return}case 739:case 738:{p[b>>3]=-.5;p[b+8>>3]=.5;r=a;return}case 742:{j=c+32|0;l=+p[j>>3];p[b>>3]=l*.5+(l+-1.0)*.5;l=+p[j>>3];p[b+8>>3]=l*.5+(l+1.0)*.5;p[b+16>>3]=+p[j>>3]*-2.0;r=a;return}default:{a=f+56|0;j=f+4|0;k[f>>2]=27524;k[a>>2]=27544;B=0;wa(508,f+56|0,j|0);b=B;B=0;if(b&1){b=Rb()|0;m=Q;n=b;vva(a);Qb(n|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[a>>2]=27488;B=0;va(448,j|0);b=B;B=0;do if(b&1){c=Rb()|0;o=Q;q=c}else{k[j>>2]=27560;c=f+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,j|0,e|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(e);Yua(c);Ava(j);o=t;q=s;break}Yua(e);B=0;s=Ia(40,f|0,132447,13)|0;t=B;B=0;if((((!(t&1)?(B=0,t=ya(427,d|0)|0,u=B,B=0,!(u&1)):0)?(u=Lta(t)|0,B=0,v=Ia(40,s|0,t|0,u|0)|0,u=B,B=0,!(u&1)):0)?(B=0,u=Ia(40,v|0,146481,18)|0,v=B,B=0,!(v&1)):0)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,g|0,71744,74);v=B;B=0;do if(!(v&1)){B=0;eb(502,h|0,75528,37);t=B;B=0;if(t&1){t=Rb()|0;s=Q;Yua(g);w=s;x=t;break}B=0;wa(510,i|0,j|0);t=B;B=0;if(t&1){t=Rb()|0;y=Q;z=t;A=1}else{B=0;ua(163,u|0,g|0,h|0,186,i|0);t=B;B=0;if(t&1)C=1;else{B=0;eb(503,u|0,1240,229);B=0;C=0}t=Rb()|0;s=Q;Yua(i);y=s;z=t;A=C}Yua(h);Yua(g);if(A){w=y;x=z}else{D=y;E=z;k[f>>2]=27468;k[a>>2]=27488;k[j>>2]=27560;Yua(c);Ava(j);vva(a);Qb(E|0)}}else{t=Rb()|0;w=Q;x=t}while(0);zb(u|0);D=w;E=x;k[f>>2]=27468;k[a>>2]=27488;k[j>>2]=27560;Yua(c);Ava(j);vva(a);Qb(E|0)}v=Rb()|0;D=Q;E=v;k[f>>2]=27468;k[a>>2]=27488;k[j>>2]=27560;Yua(c);Ava(j);vva(a);Qb(E|0)}while(0);m=o;n=q;vva(a);Qb(n|0)}}}function Ft(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;Po(a);g=a+48|0;B=0;ua(167,g|0,f|0,d+1|0,3,e|0);e=B;B=0;if(e&1){e=Rb()|0;h=Q;i=e;Qo(a);Qb(i|0)}B=0;e=B;B=0;if(e&1){e=Rb()|0;j=Q;l=e}else{k[a>>2]=30040;k[a+4>>2]=30604;k[a+8>>2]=b;k[a+12>>2]=c;k[a+36>>2]=0;B=0;c=ya(423,36)|0;b=B;B=0;do if(!(b&1)){B=0;va(486,c|0);e=B;B=0;if(e&1){e=Rb()|0;d=Q;Sqa(c);m=d;n=e;break}k[a+16>>2]=c;e=a+20|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;if((f|0)<=0){k[a+40>>2]=0;return}B=0;e=ya(422,(f>>>0>1073741823?-1:f<<2)|0)|0;d=B;B=0;if(!(d&1)){k[a+40>>2]=e;WEa(e|0,0,f<<2|0)|0;return}else o=10}else o=10;while(0);if((o|0)==10){o=Rb()|0;m=Q;n=o}j=m;l=n}Tq(g);h=j;i=l;Qo(a);Qb(i|0)}function Gt(a){a=a|0;k[a>>2]=30040;k[a+4>>2]=30604;k[a+36>>2]=0;Tq(a+48|0);Qo(a);return}function Ht(a){a=a|0;k[a>>2]=30040;k[a+4>>2]=30604;k[a+36>>2]=0;Tq(a+48|0);Qo(a);Sqa(a);return}function It(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=Qqa(72)|0;B=0;va(461,b|0);c=B;B=0;if(c&1){c=Rb()|0;d=Q;e=c}else{c=b+48|0;B=0;va(462,c|0);f=B;B=0;do if(!(f&1)){B=0;g=B;B=0;if(g&1){g=Rb()|0;h=Q;Tq(c);i=h;j=g;break}k[b>>2]=30040;k[b+4>>2]=30604;g=k[a+48>>2]|0;h=(g|0)>0;if(h){l=Rqa(g>>>0>1073741823?-1:g<<2)|0;k[b+40>>2]=l;m=k[a+40>>2]|0;n=0;do{k[l+(n<<2)>>2]=k[m+(n<<2)>>2];n=n+1|0}while((n|0)!=(g|0))}else k[b+40>>2]=0;k[b+44>>2]=k[a+44>>2];k[c>>2]=g;n=a+52|0;m=k[n>>2]|0;a:do if(m){l=Rqa(g>>>0>1073741823?-1:g<<2)|0;o=b+52|0;k[o>>2]=l;if(h){l=g;p=m;q=0;while(1){r=k[p+(q<<2)>>2]|0;if(!r){k[(k[o>>2]|0)+(q<<2)>>2]=0;s=l}else{t=Bla(r)|0;k[(k[o>>2]|0)+(q<<2)>>2]=t;s=k[c>>2]|0}t=q+1|0;if((t|0)>=(s|0))break a;l=s;p=k[n>>2]|0;q=t}}}else k[b+52>>2]=0;while(0);n=a+56|0;m=Bla(k[n>>2]|0)|0;k[b+56>>2]=m;m=a+60|0;g=Bla(k[m>>2]|0)|0;k[b+60>>2]=g;g=a+64|0;h=Bla(k[g>>2]|0)|0;k[b+64>>2]=h;k[b+68>>2]=0;k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2];h=k[a+16>>2]|0;do if(!h){q=Qqa(36)|0;B=0;va(486,q|0);p=B;B=0;if(!(p&1)){k[b+16>>2]=q;break}p=Rb()|0;l=Q;Sqa(q);u=l;v=p;Qb(v|0)}else{p=hh(h)|0;k[b+16>>2]=p}while(0);k[b+36>>2]=k[a+36>>2];h=k[a+20>>2]|0;if(!h){k[b+20>>2]=0;w=k[n>>2]|0;x=Gla(w)|0;y=b+24|0;k[y>>2]=x;z=k[m>>2]|0;A=Fla(z)|0;C=b+28|0;k[C>>2]=A;D=k[g>>2]|0;E=Fla(D)|0;F=b+32|0;k[F>>2]=E;return b|0}else{p=Rqa(12)|0;k[b+20>>2]=p;k[p>>2]=k[h>>2];k[p+4>>2]=k[h+4>>2];k[p+8>>2]=k[h+8>>2];w=k[n>>2]|0;x=Gla(w)|0;y=b+24|0;k[y>>2]=x;z=k[m>>2]|0;A=Fla(z)|0;C=b+28|0;k[C>>2]=A;D=k[g>>2]|0;E=Fla(D)|0;F=b+32|0;k[F>>2]=E;return b|0}}else{h=Rb()|0;i=Q;j=h}while(0);Qo(b);d=i;e=j}Sqa(b);u=d;v=e;Qb(v|0);return 0}function Jt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;l=e;switch(d|0){case 0:{m=k[b>>2]|0;i[m>>0]=109;i[m+1>>0]=2;i[m+2>>0]=0;i[m+3>>0]=0;k[b>>2]=(k[b>>2]|0)+4;break}case 2:{k[c>>2]=(k[c>>2]|0)+4;break}case 1:{k[b>>2]=(k[b>>2]|0)+4;break}default:{m=g+56|0;n=g+4|0;k[g>>2]=27524;k[m>>2]=27544;B=0;wa(508,g+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;q=o;vva(m);Qb(q|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){s=Rb()|0;t=Q;u=s}else{k[n>>2]=27560;s=g+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,n|0,f|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(f);Yua(s);Ava(n);t=w;u=v;break}Yua(f);B=0;v=Ia(40,g|0,143951,43)|0;w=B;B=0;if(!(w&1)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,h|0,71825,72);w=B;B=0;do if(!(w&1)){B=0;eb(502,j|0,149525,8);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(h);z=y;A=x;break}B=0;wa(510,l|0,n|0);x=B;B=0;if(x&1){x=Rb()|0;C=Q;D=x;E=1}else{B=0;ua(163,v|0,h|0,j|0,118,l|0);x=B;B=0;if(x&1)F=1;else{B=0;eb(503,v|0,1240,229);B=0;F=0}x=Rb()|0;y=Q;Yua(l);C=y;D=x;E=F}Yua(j);Yua(h);if(E){z=C;A=D}else{G=C;H=D;k[g>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);Qb(H|0)}}else{x=Rb()|0;z=Q;A=x}while(0);zb(v|0);G=z;H=A;k[g>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);Qb(H|0)}w=Rb()|0;G=Q;H=w;k[g>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);Qb(H|0)}while(0);p=t;q=u;vva(m);Qb(q|0)}}q=a+48|0;Vq(q,b,c,d);dq(a,b,c,d,k[q>>2]|0);q=Gla(k[a+56>>2]|0)|0;k[a+24>>2]=q;q=Fla(k[a+60>>2]|0)|0;k[a+28>>2]=q;q=Fla(k[a+64>>2]|0)|0;k[a+32>>2]=q;r=e;return}function Kt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;e=r;r=r+384|0;f=e;g=e+380|0;h=e+376|0;i=e+360|0;j=e+224|0;l=e+364|0;m=e+208|0;n=e+60|0;o=e+72|0;q=e+48|0;s=e+36|0;t=e+24|0;cO(k[a+36>>2]|0,g,298);switch(k[g>>2]|0){case 300:{u=k[a+16>>2]|0;v=Qqa(16)|0;B=0;ib(284,v|0,b|0,c|0,d|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Sqa(v);y=w;z=x;Qb(y|0)}else{mC(u,v)|0;r=e;return}break}case 301:{if((d|0)==738){k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[f+16>>2]=0;k[f+20>>2]=0;k[i>>2]=0;d=Lt(a)|0;Aw(a,h,i,d,Hc[k[(k[a>>2]|0)+112>>2]&511](a)|0);d=k[h>>2]|0;if((d|0)>0){h=k[i>>2]|0;v=0;do{p[f+(k[h+(v<<2)>>2]<<3)>>3]=+p[c+(v<<3)>>3];v=v+1|0}while((v|0)<(d|0))}d=k[a+16>>2]|0;a=Qqa(16)|0;B=0;ib(284,a|0,b|0,f|0,738);b=B;B=0;if(b&1){b=Rb()|0;v=Q;Sqa(a);y=b;z=v;Qb(y|0)}mC(d,a)|0;a=k[i>>2]|0;if(a)Tqa(a);r=e;return}e=j+56|0;a=j+4|0;k[j>>2]=27524;k[e>>2]=27544;B=0;wa(508,j+56|0,a|0);i=B;B=0;if(i&1){i=Rb()|0;A=Q;C=i;vva(e);Qb(C|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[e>>2]=27488;B=0;va(448,a|0);i=B;B=0;do if(i&1){d=Rb()|0;D=Q;E=d}else{k[a>>2]=27560;d=j+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[j+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,a|0,f|0);v=B;B=0;if(v&1){v=Rb()|0;b=Q;Yua(f);Yua(d);Ava(a);D=b;E=v;break}Yua(f);B=0;v=Ia(40,j|0,149721,19)|0;b=B;B=0;a:do if(!(b&1)?(B=0,Xa(239,v|0,0)|0,c=B,B=0,!(c&1)):0){c=Ab(20)|0;B=0;eb(502,l|0,71825,72);h=B;B=0;do if(!(h&1)){B=0;eb(502,m|0,74181,13);u=B;B=0;if(u&1){u=Rb()|0;x=Q;Yua(l);F=x;G=u;break}B=0;wa(510,n|0,a|0);u=B;B=0;if(u&1){u=Rb()|0;H=u;I=Q;J=1}else{B=0;ua(163,c|0,l|0,m|0,157,n|0);u=B;B=0;if(u&1)K=1;else{B=0;eb(503,c|0,1240,229);B=0;K=0}u=Rb()|0;x=Q;Yua(n);H=u;I=x;J=K}Yua(m);Yua(l);if(J){F=I;G=H}else{L=I;M=H;break a}}else{x=Rb()|0;F=Q;G=x}while(0);zb(c|0);L=F;M=G}else N=29;while(0);if((N|0)==29){v=Rb()|0;L=Q;M=v}k[j>>2]=27468;k[e>>2]=27488;k[a>>2]=27560;Yua(d);Ava(a);vva(e);y=M;z=L;Qb(y|0)}while(0);A=D;C=E;vva(e);Qb(C|0);break}default:{C=o+56|0;e=o+4|0;k[o>>2]=27524;k[C>>2]=27544;B=0;wa(508,o+56|0,e|0);E=B;B=0;if(E&1){E=Rb()|0;O=Q;P=E;vva(C);Qb(P|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[C>>2]=27488;B=0;va(448,e|0);E=B;B=0;do if(E&1){D=Rb()|0;R=Q;S=D}else{k[e>>2]=27560;D=o+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[o+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,e|0,f|0);A=B;B=0;if(A&1){A=Rb()|0;L=Q;Yua(f);Yua(D);Ava(e);R=L;S=A;break}Yua(f);B=0;A=Ia(40,o|0,144639,5)|0;L=B;B=0;b:do if((((!(L&1)?(B=0,M=ya(427,k[g>>2]|0)|0,a=B,B=0,!(a&1)):0)?(a=Lta(M)|0,B=0,j=Ia(40,A|0,M|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,a=Ia(40,j|0,146481,18)|0,j=B,B=0,!(j&1)):0)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,q|0,71825,72);j=B;B=0;do if(!(j&1)){B=0;eb(502,s|0,74181,13);M=B;B=0;if(M&1){M=Rb()|0;G=Q;Yua(q);T=G;U=M;break}B=0;wa(510,t|0,e|0);M=B;B=0;if(M&1){M=Rb()|0;V=1;W=M;X=Q}else{B=0;ua(163,a|0,q|0,s|0,160,t|0);M=B;B=0;if(M&1)Y=1;else{B=0;eb(503,a|0,1240,229);B=0;Y=0}M=Rb()|0;G=Q;Yua(t);V=Y;W=M;X=G}Yua(s);Yua(q);if(V){T=X;U=W}else{Z=W;_=X;break b}}else{G=Rb()|0;T=Q;U=G}while(0);zb(a|0);Z=U;_=T}else N=55;while(0);if((N|0)==55){A=Rb()|0;Z=A;_=Q}k[o>>2]=27468;k[C>>2]=27488;k[e>>2]=27560;Yua(D);Ava(e);vva(C);y=Z;z=_;Qb(y|0)}while(0);O=R;P=S;vva(C);Qb(P|0)}}}function Lt(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0.0,o=0,q=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;b=r;r=r+368|0;c=b+352|0;d=b;e=b+216|0;f=b+200|0;g=b+64|0;h=b+48|0;i=b+36|0;j=b+24|0;xp(a,d,287);a=d+8|0;l=+p[a>>3]==1.0;m=d+16|0;n=+p[m>>3];if(l&n==1.0){o=0;r=b;return o|0}q=+p[d>>3];if(n==1.0&q==1.0){o=1;r=b;return o|0}if(!(q!=1.0|l^1)){o=2;r=b;return o|0}o=e+56|0;b=e+4|0;k[e>>2]=27524;k[o>>2]=27544;B=0;wa(508,e+56|0,b|0);l=B;B=0;if(l&1){l=Rb()|0;s=Q;t=l;vva(o);Qb(t|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[o>>2]=27488;B=0;va(448,b|0);l=B;B=0;do if(l&1){u=Rb()|0;v=Q;w=u}else{k[b>>2]=27560;u=e+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(c);Yua(u);Ava(b);v=y;w=x;break}Yua(c);B=0;x=Ia(40,e|0,71898,25)|0;y=B;B=0;do if((((((!(y&1)?(B=0,z=Sa(1,x|0,+(+p[d>>3]))|0,A=B,B=0,!(A&1)):0)?(B=0,A=Ia(40,z|0,149175,1)|0,z=B,B=0,!(z&1)):0)?(B=0,z=Sa(1,A|0,+(+p[a>>3]))|0,A=B,B=0,!(A&1)):0)?(B=0,A=Ia(40,z|0,149175,1)|0,z=B,B=0,!(z&1)):0)?(B=0,Sa(1,A|0,+(+p[m>>3]))|0,A=B,B=0,!(A&1)):0)?(B=0,wa(510,f|0,b|0),A=B,B=0,!(A&1)):0){B=0;ya(424,f|0)|0;A=B;B=0;if(A&1){A=Rb()|0;z=Q;Yua(f);C=z;D=A;break}Yua(f);k[e>>2]=27468;k[o>>2]=27488;k[b>>2]=27560;Yua(u);Ava(b);vva(o);A=g+56|0;z=g+4|0;k[g>>2]=27524;k[A>>2]=27544;B=0;wa(508,g+56|0,z|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;G=E;vva(A);Qb(G|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[A>>2]=27488;B=0;va(448,z|0);E=B;B=0;do if(E&1){H=Rb()|0;I=Q;J=H}else{k[z>>2]=27560;H=g+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[g+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,z|0,c|0);K=B;B=0;if(K&1){K=Rb()|0;L=Q;Yua(c);Yua(H);Ava(z);I=L;J=K;break}Yua(c);B=0;K=Ia(40,g|0,71924,32)|0;L=B;B=0;a:do if(L&1)M=36;else{B=0;Xa(239,K|0,0)|0;N=B;B=0;if(N&1){M=36;break}N=Ab(20)|0;B=0;eb(502,h|0,71825,72);O=B;B=0;do if(!(O&1)){B=0;eb(502,i|0,71957,15);P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(h);S=R;T=P;break}B=0;wa(510,j|0,z|0);P=B;B=0;if(P&1){P=Rb()|0;U=1;V=Q;W=P}else{B=0;ua(163,N|0,h|0,i|0,747,j|0);P=B;B=0;if(P&1)X=1;else{B=0;eb(503,N|0,1240,229);B=0;X=0}P=Rb()|0;R=Q;Yua(j);U=X;V=R;W=P}Yua(i);Yua(h);if(U){S=V;T=W}else{Y=V;Z=W;break a}}else{P=Rb()|0;S=Q;T=P}while(0);zb(N|0);Y=S;Z=T}while(0);if((M|0)==36){K=Rb()|0;Y=Q;Z=K}k[g>>2]=27468;k[A>>2]=27488;k[z>>2]=27560;Yua(H);Ava(z);vva(A);_=Y;$=Z;Qb($|0)}while(0);F=I;G=J;vva(A);Qb(G|0)}else M=33;while(0);if((M|0)==33){x=Rb()|0;C=Q;D=x}k[e>>2]=27468;k[o>>2]=27488;k[b>>2]=27560;Yua(u);Ava(b);vva(o);_=C;$=D;Qb($|0)}while(0);s=v;t=w;vva(o);Qb(t|0);return 0}function Mt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=k[a+16>>2]|0;a=Qqa(16)|0;B=0;ib(284,a|0,b|0,c|0,d|0);d=B;B=0;if(d&1){d=Rb()|0;Sqa(a);Qb(d|0)}else{mC(e,a)|0;return}}function Nt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0;f=r;r=r+112|0;g=f;h=f+96|0;i=f+84|0;j=f+72|0;Ko(g,k[a+24>>2]|0,3,0);l=+p[g>>3];m=+p[g+8>>3];n=+p[g+24>>3];o=+p[g+32>>3];q=+p[g+48>>3];s=+p[g+56>>3];Ip(a,i);Hp(a,j);a=~~+p[e+(k[i>>2]<<3)>>3];k[h>>2]=a;t=+p[d+(k[j>>2]<<3)>>3]*.3333333333333333+0.0;g=~~+p[e+(k[i+4>>2]<<3)>>3];k[h+4>>2]=g;u=t+ +p[d+(k[j+4>>2]<<3)>>3]*.3333333333333333;v=~~+p[e+(k[i+8>>2]<<3)>>3];k[h+8>>2]=v;t=(m*q+(l*o+(n*s-o*q)-m*n)-l*s)*.5;i=c+4|0;s=t*(u+ +p[d+(k[j+8>>2]<<3)>>3]*.3333333333333333);j=b+4|0;if(k[b>>2]|0){d=k[k[j>>2]>>2]|0;Jc[k[(k[d>>2]|0)+20>>2]&1](d,a,s,1)}if(k[c>>2]|0){d=k[k[i>>2]>>2]|0;Jc[k[(k[d>>2]|0)+20>>2]&1](d,a,t,1)}if((g|0)!=(a|0)){if(k[b>>2]|0){d=k[k[j>>2]>>2]|0;Jc[k[(k[d>>2]|0)+20>>2]&1](d,g,s,1)}if(k[c>>2]|0){d=k[k[i>>2]>>2]|0;Jc[k[(k[d>>2]|0)+20>>2]&1](d,g,t,1)}}if((v|0)==(a|0)){r=f;return}else w=1;while(1){if((w|0)>=2)break;if((v|0)==(k[h+(w<<2)>>2]|0)){x=17;break}else w=w+1|0}if((x|0)==17){r=f;return}if(k[b>>2]|0){b=k[k[j>>2]>>2]|0;Jc[k[(k[b>>2]|0)+20>>2]&1](b,v,s,1)}if(!(k[c>>2]|0)){r=f;return}c=k[k[i>>2]>>2]|0;Jc[k[(k[c>>2]|0)+20>>2]&1](c,v,t,1);r=f;return}function Ot(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0,z=0.0,A=0.0;b=r;r=r+192|0;c=b+104|0;d=b+96|0;e=b+88|0;f=b+80|0;g=b+72|0;h=b+48|0;i=b+24|0;j=b;Ko(b+112|0,k[a+24>>2]|0,3,0);l=a+16|0;a=oC(k[l>>2]|0,674)|0;m=oC(k[l>>2]|0,677)|0;n=oC(k[l>>2]|0,262)|0;o=oC(k[l>>2]|0,263)|0;q=oC(k[l>>2]|0,255)|0;s=Qqa(64)|0;B=0;va(491,s|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Sqa(s);v=u;w=t;Qb(w|0)}t=0;do{Fc[k[(k[s>>2]|0)+28>>2]&1023](s,t);nd[k[(k[a>>2]|0)+48>>2]&1023](a,c,s);nd[k[(k[m>>2]|0)+48>>2]&1023](m,d,s);x=+p[c>>3];y=+p[d>>3];nd[k[(k[n>>2]|0)+48>>2]&1023](n,e,s);nd[k[(k[o>>2]|0)+48>>2]&1023](o,g,s);nd[k[(k[q>>2]|0)+48>>2]&1023](q,f,s);z=+p[f>>3]*+p[e>>3]*+p[g>>3];A=z<0.0?0.0:z;p[j+(t<<3)>>3]=A;z=+aa(+(x*x+y*y))+1.0e-14;p[h+(t<<3)>>3]=+p[c>>3]*A/z;p[i+(t<<3)>>3]=A*+p[d>>3]/z;t=t+1|0}while((t|0)!=3);t=k[l>>2]|0;d=Qqa(16)|0;B=0;ib(284,d|0,258,h|0,738);h=B;B=0;if(h&1){h=Rb()|0;c=Q;Sqa(d);v=c;w=h;Qb(w|0)}mC(t,d)|0;d=k[l>>2]|0;t=Qqa(16)|0;B=0;ib(284,t|0,259,i|0,738);i=B;B=0;if(i&1){i=Rb()|0;h=Q;Sqa(t);v=h;w=i;Qb(w|0)}mC(d,t)|0;t=k[l>>2]|0;l=Qqa(16)|0;B=0;ib(284,l|0,248,j|0,738);j=B;B=0;if(!(j&1)){mC(t,l)|0;Ec[k[(k[s>>2]|0)+4>>2]&1023](s);r=b;return}b=Rb()|0;s=Q;Sqa(l);v=s;w=b;Qb(w|0)}function Pt(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,C=0,D=0.0,E=0,F=0.0,G=0.0,H=0.0;b=r;r=r+224|0;c=b+152|0;d=b+128|0;e=b+104|0;f=b+80|0;g=b+56|0;h=b+48|0;i=b+40|0;j=b+32|0;l=b+24|0;m=b+16|0;n=b+8|0;o=b;Ko(c,k[a+24>>2]|0,3,0);q=a+16|0;s=oC(k[q>>2]|0,674)|0;t=oC(k[q>>2]|0,677)|0;u=oC(k[q>>2]|0,928)|0;v=+Dp(a,215);w=+Dp(a,217);x=Qqa(64)|0;B=0;va(491,x|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Sqa(x);A=z;C=y;Qb(C|0)}y=d+16|0;z=d+8|0;D=v*1.7320508075688772;v=1.0/(w*2.0);E=0;do{Fc[k[(k[x>>2]|0)+28>>2]&1023](x,E);nd[k[(k[s>>2]|0)+48>>2]&1023](s,m,x);nd[k[(k[t>>2]|0)+48>>2]&1023](t,n,x);nd[k[(k[u>>2]|0)+48>>2]&1023](u,o,x);Xo(a,d,c,x,s,t);cY(h,i,j,l,+p[d>>3],+p[y>>3],+p[z>>3]);w=+LY(+p[h>>3],0.0);p[h>>3]=w;w=+LY(+p[i>>3],0.0);p[i>>3]=w;F=+p[h>>3];G=D*+ba(+((w*w+F*F)*.5),+v);F=+p[o>>3]<0.0?2.0e5:1.0e6;w=G*+p[m>>3]/F;p[e+(E<<3)>>3]=w;H=G*+p[n>>3]/F;p[f+(E<<3)>>3]=H;F=+aa(+(w*w+H*H));p[g+(E<<3)>>3]=F;E=E+1|0}while((E|0)!=3);E=k[q>>2]|0;n=Qqa(16)|0;B=0;ib(284,n|0,258,e|0,738);e=B;B=0;if(e&1){e=Rb()|0;m=Q;Sqa(n);A=m;C=e;Qb(C|0)}mC(E,n)|0;n=k[q>>2]|0;E=Qqa(16)|0;B=0;ib(284,E|0,259,f|0,738);f=B;B=0;if(f&1){f=Rb()|0;e=Q;Sqa(E);A=e;C=f;Qb(C|0)}mC(n,E)|0;E=k[q>>2]|0;q=Qqa(16)|0;B=0;ib(284,q|0,248,g|0,738);g=B;B=0;if(!(g&1)){mC(E,q)|0;Ec[k[(k[x>>2]|0)+4>>2]&1023](x);r=b;return}b=Rb()|0;x=Q;Sqa(q);A=x;C=b;Qb(C|0)}function Qt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0.0,g=0.0,h=0.0,j=0.0,l=0,m=0,n=0;c=r;r=r+80|0;d=c+72|0;e=c;if(!(ed[k[(k[a>>2]|0)+256>>2]&511](a,206)|0)){r=c;return}k[d>>2]=0;Ko(e,k[a+24>>2]|0,3,0);rd[k[(k[a>>2]|0)+520>>2]&511](a,d,e,206);e=k[d>>2]|0;if(e){f=+p[e>>3];g=+p[e+24>>3];h=+p[e+8>>3];j=+p[e+32>>3];e=Qqa(24)|0;B=0;a=ya(428,b|0)|0;l=B;B=0;if(l&1){m=Rb()|0;n=Q;Sqa(e);Qb(m|0)}k[e>>2]=27652;k[e+4>>2]=a+1;k[e+8>>2]=2;i[e+20>>0]=0;B=0;a=ya(422,16)|0;l=B;B=0;if(l&1){m=Rb()|0;n=Q;Sqa(e);Qb(m|0)}k[e+12>>2]=a;p[a>>3]=f;p[a+8>>3]=g;B=0;a=ya(422,16)|0;l=B;B=0;if(l&1){m=Rb()|0;n=Q;Sqa(e);Qb(m|0)}k[e+16>>2]=a;p[a>>3]=h;p[a+8>>3]=j;ih(b,e)|0;e=k[d>>2]|0;if(e)Tqa(e)}r=c;return}function Rt(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0.0,i=0.0,j=0.0,l=0,m=0,n=0.0,o=0.0,q=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,C=0.0,D=0.0;d=r;r=r+96|0;e=d+72|0;f=d;Ko(f,k[a+24>>2]|0,3,0);xp(a,e,206);Sp(a,206,653);if((c|0)>0){g=0;do{h=+p[f+(g*24|0)>>3];i=+p[f+(g*24|0)+8>>3];j=1.e+50;l=0;while(1){m=l<<2;n=+p[b+((m|2)<<3)>>3];o=+p[b+(m<<3)>>3];q=n-o;s=+p[b+((m|3)<<3)>>3];t=+p[b+((m|1)<<3)>>3];u=s-t;v=q*q+u*u;w=h-o;if(v==0.0){x=i-t;y=w*w+x*x;z=y<j?y:j}else{y=i-t;x=(w*q+y*u)/v;do if(!(x<0.0))if(x>1.0){v=h-n;A=i-s;C=v*v+A*A;break}else{A=h-(o+q*x);v=i-(t+u*x);C=A*A+v*v;break}else C=w*w+y*y;while(0);z=C<j?C:j}l=l+1|0;if((l|0)==(c|0)){D=z;break}else j=z}j=+aa(+D);i=j>1.0e4?1.0e4:j;l=e+(g<<3)|0;p[l>>3]=+p[l>>3]>0.0?i:-i;g=g+1|0}while((g|0)!=3)}else{p[e>>3]=+p[e>>3]>0.0?1.0e4:-1.0e4;g=e+8|0;p[g>>3]=+p[g>>3]>0.0?1.0e4:-1.0e4;g=e+16|0;p[g>>3]=+p[g>>3]>0.0?1.0e4:-1.0e4}g=k[a+16>>2]|0;a=Qqa(16)|0;B=0;ib(284,a|0,206,e|0,738);e=B;B=0;if(e&1){e=Rb()|0;Sqa(a);Qb(e|0)}else{mC(g,a)|0;r=d;return}}function St(a){a=a|0;var b=0,c=0,d=0.0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0;b=r;r=r+80|0;c=b;Ko(c,k[a+24>>2]|0,3,0);d=+p[c>>3];e=+p[c+8>>3];f=+p[c+24>>3];g=+p[c+32>>3];h=+p[c+48>>3];i=+p[c+56>>3];j=+aa(+((e*h+(d*g+(f*i-g*h)-e*f)-d*i)*.5*2.0));r=b;return +j}function Tt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,71973,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,71825,72);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,74235,18);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,466,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Ut(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0.0,K=0.0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;b=r;r=r+480|0;c=b+456|0;d=b+200|0;e=b+192|0;f=b+168|0;g=b+144|0;h=b+120|0;i=b+96|0;j=b+72|0;l=b+48|0;m=b+24|0;n=b;o=b+448|0;q=b+312|0;s=b+296|0;t=b+284|0;u=b+272|0;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;k[i+12>>2]=0;k[i+16>>2]=0;k[i+20>>2]=0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[l+16>>2]=0;k[l+20>>2]=0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[m+16>>2]=0;k[m+20>>2]=0;v=a+16|0;kC(k[v>>2]|0,o,533);Ko(d,k[a+24>>2]|0,3,0);cp(a,b+452|0,298);w=oC(k[v>>2]|0,674)|0;x=oC(k[v>>2]|0,677)|0;y=Qqa(64)|0;B=0;va(491,y|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Sqa(y);C=A;D=z;Qb(D|0)}z=a+28|0;A=f+8|0;E=f+16|0;F=0;a:while(1){Fc[k[(k[y>>2]|0)+28>>2]&1023](y,F);Xo(a,f,d,y,w,x);switch(k[o>>2]|0){case 536:{G=k[z>>2]|0;ad[k[(k[G>>2]|0)+128>>2]&63](G,e,2,d,y,w,x);break}case 540:{G=k[z>>2]|0;ad[k[(k[G>>2]|0)+116>>2]&63](G,e,2,d,y,w,x);break}case 542:{G=k[z>>2]|0;Tc[k[(k[G>>2]|0)+108>>2]&15](G,e,2,d,y,w,x,0);break}default:break a}H=+p[e>>3]*2.0;I=H*+p[f>>3];p[g+(F<<3)>>3]=I;J=H*+p[A>>3];p[h+(F<<3)>>3]=J;K=H*+p[E>>3];p[j+(F<<3)>>3]=K;H=+aa(+(K*K*2.0+(I*I+J*J)))*.7071067811865475;p[n+(F<<3)>>3]=H;F=F+1|0;if((F|0)>=3){L=3;break}}if((L|0)==3){F=k[v>>2]|0;E=Qqa(16)|0;B=0;ib(284,E|0,716,g|0,738);g=B;B=0;if(g&1){g=Rb()|0;A=Q;Sqa(E);C=A;D=g;Qb(D|0)}mC(F,E)|0;E=k[v>>2]|0;F=Qqa(16)|0;B=0;ib(284,F|0,717,j|0,738);j=B;B=0;if(j&1){j=Rb()|0;g=Q;Sqa(F);C=g;D=j;Qb(D|0)}mC(E,F)|0;F=k[v>>2]|0;E=Qqa(16)|0;B=0;ib(284,E|0,718,l|0,738);l=B;B=0;if(l&1){l=Rb()|0;j=Q;Sqa(E);C=j;D=l;Qb(D|0)}mC(F,E)|0;E=k[v>>2]|0;F=Qqa(16)|0;B=0;ib(284,F|0,719,h|0,738);h=B;B=0;if(h&1){h=Rb()|0;l=Q;Sqa(F);C=l;D=h;Qb(D|0)}mC(E,F)|0;F=k[v>>2]|0;E=Qqa(16)|0;B=0;ib(284,E|0,720,m|0,738);m=B;B=0;if(m&1){m=Rb()|0;h=Q;Sqa(E);C=h;D=m;Qb(D|0)}mC(F,E)|0;E=k[v>>2]|0;F=Qqa(16)|0;B=0;ib(284,F|0,721,i|0,738);i=B;B=0;if(i&1){i=Rb()|0;m=Q;Sqa(F);C=m;D=i;Qb(D|0)}mC(E,F)|0;F=k[v>>2]|0;v=Qqa(16)|0;B=0;ib(284,v|0,722,n|0,738);n=B;B=0;if(!(n&1)){mC(F,v)|0;Ec[k[(k[y>>2]|0)+4>>2]&1023](y);r=b;return}b=Rb()|0;y=Q;Sqa(v);C=y;D=b;Qb(D|0)}b=q+56|0;y=q+4|0;k[q>>2]=27524;k[b>>2]=27544;B=0;wa(508,q+56|0,y|0);v=B;B=0;if(v&1){v=Rb()|0;M=Q;N=v;vva(b);Qb(N|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[b>>2]=27488;B=0;va(448,y|0);v=B;B=0;do if(v&1){F=Rb()|0;O=Q;P=F}else{k[y>>2]=27560;F=q+36|0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,y|0,c|0);n=B;B=0;if(n&1){n=Rb()|0;E=Q;Yua(c);Yua(F);Ava(y);O=E;P=n;break}Yua(c);B=0;n=Ia(40,q|0,134695,17)|0;E=B;B=0;b:do if(!(E&1)?(B=0,Xa(239,n|0,0)|0,i=B,B=0,!(i&1)):0){i=Ab(20)|0;B=0;eb(502,s|0,71825,72);m=B;B=0;do if(!(m&1)){B=0;eb(502,t|0,73945,29);h=B;B=0;if(h&1){h=Rb()|0;l=Q;Yua(s);R=l;S=h;break}B=0;wa(510,u|0,y|0);h=B;B=0;if(h&1){h=Rb()|0;T=Q;U=h;V=1}else{B=0;ua(163,i|0,s|0,t|0,514,u|0);h=B;B=0;if(h&1)W=1;else{B=0;eb(503,i|0,1240,229);B=0;W=0}h=Rb()|0;l=Q;Yua(u);T=l;U=h;V=W}Yua(t);Yua(s);if(V){R=T;S=U}else{X=T;Y=U;break b}}else{h=Rb()|0;R=Q;S=h}while(0);zb(i|0);X=R;Y=S}else L=24;while(0);if((L|0)==24){n=Rb()|0;X=Q;Y=n}k[q>>2]=27468;k[b>>2]=27488;k[y>>2]=27560;Yua(F);Ava(y);vva(b);C=X;D=Y;Qb(D|0)}while(0);M=O;N=P;vva(b);Qb(N|0)}function Vt(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;b=r;r=r+288|0;c=b+80|0;d=b+284|0;e=b+280|0;f=b+72|0;g=b+64|0;h=b+40|0;i=b+16|0;j=b;l=b+276|0;m=b+128|0;n=b+264|0;o=b+116|0;q=b+104|0;if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=0;s=k[a+16>>2]|0;t=Qqa(16)|0;B=0;ib(284,t|0,706,c|0,738);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Sqa(t);w=u;x=v;Qb(w|0)}else{mC(s,t)|0;r=b;return}}k[d>>2]=0;k[e>>2]=0;Uo(a,d);Fc[k[(k[a>>2]|0)+188>>2]&1023](a,e);cp(a,l,298);if((k[l>>2]|0)!=300){t=a+16|0;s=oC(k[t>>2]|0,653)|0;v=oC(k[t>>2]|0,674)|0;u=oC(k[t>>2]|0,677)|0;y=Hc[k[(k[a>>2]|0)+304>>2]&511](a)|0;z=a+28|0;A=i+8|0;C=i+16|0;D=j+8|0;E=0;do{nd[k[(k[y>>2]|0)+32>>2]&1023](y,738,E);Xo(a,i,k[d>>2]|0,y,v,u);F=k[z>>2]|0;Tc[k[(k[F>>2]|0)+108>>2]&15](F,g,2,k[d>>2]|0,y,v,u,0);nd[k[(k[s>>2]|0)+48>>2]&1023](s,f,y);G=+p[g>>3]*2.0;H=+p[f>>3];I=G*+p[i>>3]-H;J=G*+p[A>>3]-H;H=G*+p[C>>3];nd[k[(k[a>>2]|0)+380>>2]&1023](a,j,k[e>>2]|0);G=+p[j>>3];K=+p[D>>3];p[h+(E<<3)>>3]=G*(I*G)+H*2.0*G*K+K*(J*K);E=E+1|0}while((E|0)!=3);E=k[t>>2]|0;t=Qqa(16)|0;B=0;ib(284,t|0,706,h|0,738);h=B;B=0;if(h&1){h=Rb()|0;D=Q;Sqa(t);w=h;x=D;Qb(w|0)}mC(E,t)|0;t=k[d>>2]|0;if(t)Tqa(t);k[d>>2]=0;d=k[e>>2]|0;if(d)Tqa(d);k[e>>2]=0;if(y)Ec[k[(k[y>>2]|0)+4>>2]&1023](y);r=b;return}b=m+56|0;y=m+4|0;k[m>>2]=27524;k[b>>2]=27544;B=0;wa(508,m+56|0,y|0);e=B;B=0;if(e&1){e=Rb()|0;L=Q;M=e;vva(b);Qb(M|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[b>>2]=27488;B=0;va(448,y|0);e=B;B=0;do if(e&1){d=Rb()|0;N=Q;O=d}else{k[y>>2]=27560;d=m+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,y|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;E=Q;Yua(c);Yua(d);Ava(y);N=E;O=t;break}Yua(c);B=0;t=Ia(40,m|0,71993,57)|0;E=B;B=0;a:do if((((!(E&1)?(B=0,D=ya(427,k[l>>2]|0)|0,h=B,B=0,!(h&1)):0)?(h=Lta(D)|0,B=0,j=Ia(40,t|0,D|0,h|0)|0,h=B,B=0,!(h&1)):0)?(B=0,h=Ia(40,j|0,72051,52)|0,j=B,B=0,!(j&1)):0)?(B=0,Xa(239,h|0,0)|0,h=B,B=0,!(h&1)):0){h=Ab(20)|0;B=0;eb(502,n|0,71825,72);j=B;B=0;do if(!(j&1)){B=0;eb(502,o|0,75312,14);D=B;B=0;if(D&1){D=Rb()|0;a=Q;Yua(n);P=D;R=a;break}B=0;wa(510,q|0,y|0);a=B;B=0;if(a&1){a=Rb()|0;S=a;T=Q;U=1}else{B=0;ua(163,h|0,n|0,o|0,560,q|0);a=B;B=0;if(a&1)V=1;else{B=0;eb(503,h|0,1240,229);B=0;V=0}a=Rb()|0;D=Q;Yua(q);S=a;T=D;U=V}Yua(o);Yua(n);if(U){P=S;R=T}else{W=S;X=T;break a}}else{D=Rb()|0;P=D;R=Q}while(0);zb(h|0);W=P;X=R}else Y=24;while(0);if((Y|0)==24){t=Rb()|0;W=t;X=Q}k[m>>2]=27468;k[b>>2]=27488;k[y>>2]=27560;Yua(d);Ava(y);vva(b);w=W;x=X;Qb(w|0)}while(0);L=N;M=O;vva(b);Qb(M|0)}function Wt(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0;b=r;r=r+448|0;c=b+436|0;d=b+184|0;e=b+176|0;f=b+168|0;g=b+144|0;h=b+120|0;i=b+96|0;j=b+72|0;l=b+48|0;m=b+24|0;n=b;o=b+432|0;q=b+296|0;s=b+280|0;t=b+268|0;u=b+256|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;k[j+16>>2]=0;k[j+20>>2]=0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[m+16>>2]=0;k[m+20>>2]=0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[n+16>>2]=0;k[n+20>>2]=0;Ko(d,k[a+24>>2]|0,3,0);cp(a,o,298);if((k[o>>2]|0)!=300){v=a+16|0;w=oC(k[v>>2]|0,653)|0;x=oC(k[v>>2]|0,674)|0;y=oC(k[v>>2]|0,677)|0;z=Qqa(64)|0;B=0;va(491,z|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Sqa(z);D=A;E=C;Qb(D|0)}C=a+28|0;A=g+8|0;F=g+16|0;Fc[k[(k[z>>2]|0)+28>>2]&1023](z,0);Xo(a,g,d,z,x,y);G=k[C>>2]|0;ad[k[(k[G>>2]|0)+128>>2]&63](G,f,2,d,z,x,y);nd[k[(k[w>>2]|0)+48>>2]&1023](w,e,z);H=+p[f>>3]*2.0;I=+p[e>>3];p[h>>3]=H*+p[g>>3]-I;p[i>>3]=H*+p[A>>3]-I;p[l>>3]=H*+p[F>>3];Fc[k[(k[z>>2]|0)+28>>2]&1023](z,1);Xo(a,g,d,z,x,y);G=k[C>>2]|0;ad[k[(k[G>>2]|0)+128>>2]&63](G,f,2,d,z,x,y);nd[k[(k[w>>2]|0)+48>>2]&1023](w,e,z);H=+p[f>>3]*2.0;I=+p[e>>3];p[h+8>>3]=H*+p[g>>3]-I;p[i+8>>3]=H*+p[A>>3]-I;p[l+8>>3]=H*+p[F>>3];Fc[k[(k[z>>2]|0)+28>>2]&1023](z,2);Xo(a,g,d,z,x,y);a=k[C>>2]|0;ad[k[(k[a>>2]|0)+128>>2]&63](a,f,2,d,z,x,y);nd[k[(k[w>>2]|0)+48>>2]&1023](w,e,z);H=+p[f>>3]*2.0;I=+p[e>>3];p[h+16>>3]=H*+p[g>>3]-I;p[i+16>>3]=H*+p[A>>3]-I;p[l+16>>3]=H*+p[F>>3];F=k[v>>2]|0;A=Qqa(16)|0;B=0;ib(284,A|0,708,h|0,738);h=B;B=0;if(h&1){h=Rb()|0;g=Q;Sqa(A);D=h;E=g;Qb(D|0)}mC(F,A)|0;A=k[v>>2]|0;F=Qqa(16)|0;B=0;ib(284,F|0,709,l|0,738);l=B;B=0;if(l&1){l=Rb()|0;g=Q;Sqa(F);D=l;E=g;Qb(D|0)}mC(A,F)|0;F=k[v>>2]|0;A=Qqa(16)|0;B=0;ib(284,A|0,710,m|0,738);m=B;B=0;if(m&1){m=Rb()|0;g=Q;Sqa(A);D=m;E=g;Qb(D|0)}mC(F,A)|0;A=k[v>>2]|0;F=Qqa(16)|0;B=0;ib(284,F|0,711,i|0,738);i=B;B=0;if(i&1){i=Rb()|0;g=Q;Sqa(F);D=i;E=g;Qb(D|0)}mC(A,F)|0;F=k[v>>2]|0;A=Qqa(16)|0;B=0;ib(284,A|0,712,n|0,738);n=B;B=0;if(n&1){n=Rb()|0;g=Q;Sqa(A);D=n;E=g;Qb(D|0)}mC(F,A)|0;A=k[v>>2]|0;v=Qqa(16)|0;B=0;ib(284,v|0,713,j|0,738);j=B;B=0;if(!(j&1)){mC(A,v)|0;Ec[k[(k[z>>2]|0)+4>>2]&1023](z);r=b;return}b=Rb()|0;z=Q;Sqa(v);D=b;E=z;Qb(D|0)}z=q+56|0;b=q+4|0;k[q>>2]=27524;k[z>>2]=27544;B=0;wa(508,q+56|0,b|0);v=B;B=0;if(v&1){v=Rb()|0;J=Q;K=v;vva(z);Qb(K|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[z>>2]=27488;B=0;va(448,b|0);v=B;B=0;do if(v&1){A=Rb()|0;L=Q;M=A}else{k[b>>2]=27560;A=q+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);j=B;B=0;if(j&1){j=Rb()|0;F=Q;Yua(c);Yua(A);Ava(b);L=F;M=j;break}Yua(c);B=0;j=Ia(40,q|0,71993,57)|0;F=B;B=0;a:do if((((!(F&1)?(B=0,g=ya(427,k[o>>2]|0)|0,n=B,B=0,!(n&1)):0)?(n=Lta(g)|0,B=0,i=Ia(40,j|0,g|0,n|0)|0,n=B,B=0,!(n&1)):0)?(B=0,n=Ia(40,i|0,72051,52)|0,i=B,B=0,!(i&1)):0)?(B=0,Xa(239,n|0,0)|0,n=B,B=0,!(n&1)):0){n=Ab(20)|0;B=0;eb(502,s|0,71825,72);i=B;B=0;do if(!(i&1)){B=0;eb(502,t|0,73925,19);g=B;B=0;if(g&1){g=Rb()|0;m=Q;Yua(s);N=g;O=m;break}B=0;wa(510,u|0,b|0);m=B;B=0;if(m&1){m=Rb()|0;P=m;R=Q;S=1}else{B=0;ua(163,n|0,s|0,t|0,616,u|0);m=B;B=0;if(m&1)T=1;else{B=0;eb(503,n|0,1240,229);B=0;T=0}m=Rb()|0;g=Q;Yua(u);P=m;R=g;S=T}Yua(t);Yua(s);if(S){N=P;O=R}else{U=P;V=R;break a}}else{g=Rb()|0;N=g;O=Q}while(0);zb(n|0);U=N;V=O}else W=20;while(0);if((W|0)==20){j=Rb()|0;U=j;V=Q}k[q>>2]=27468;k[z>>2]=27488;k[b>>2]=27560;Yua(A);Ava(b);vva(z);D=U;E=V;Qb(D|0)}while(0);J=L;K=M;vva(z);Qb(K|0)}function Xt(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0;c=r;r=r+16|0;b=c;cO(g,b,482);h=k[a+40>>2]|0;if(h)k[a+44>>2]=k[h+(k[b>>2]<<2)>>2];h=a+52|0;i=k[h>>2]|0;do if(i){j=i+(k[b>>2]<<2)|0;l=k[j>>2]|0;if(!l){k[j>>2]=0;break}else{Ela(l,d);break}}else k[h>>2]=0;while(0);d=a+56|0;Ela(k[d>>2]|0,e);e=a+60|0;Ela(k[e>>2]|0,f);i=a+64|0;Ela(k[i>>2]|0,f);f=k[h>>2]|0;if((f|0)!=0?(h=k[f+(k[b>>2]<<2)>>2]|0,(h|0)!=0):0){b=Gla(h)|0;k[a+20>>2]=b}else k[a+20>>2]=0;b=Gla(k[d>>2]|0)|0;k[a+24>>2]=b;b=Fla(k[e>>2]|0)|0;k[a+28>>2]=b;b=Fla(k[i>>2]|0)|0;k[a+32>>2]=b;k[a+36>>2]=g;wC(k[a+16>>2]|0,g);r=c;return}function Yt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;e=r;r=r+400|0;f=e+388|0;g=e+376|0;h=e;i=e+240|0;j=e+224|0;l=e+72|0;m=e+60|0;n=e+88|0;o=e+48|0;q=e+36|0;s=e+24|0;t=oC(k[a+16>>2]|0,c)|0;if(!t){u=i+56|0;v=i+4|0;k[i>>2]=27524;k[u>>2]=27544;B=0;wa(508,i+56|0,v|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;y=w;vva(u);Qb(y|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);w=B;B=0;do if(w&1){z=Rb()|0;A=Q;C=z}else{k[v>>2]=27560;z=i+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[i+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,v|0,f|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(f);Yua(z);Ava(v);A=E;C=D;break}Yua(f);B=0;D=Ia(40,i|0,109148,6)|0;E=B;B=0;a:do if((((!(E&1)?(B=0,F=ya(427,c|0)|0,G=B,B=0,!(G&1)):0)?(G=Lta(F)|0,B=0,H=Ia(40,D|0,F|0,G|0)|0,G=B,B=0,!(G&1)):0)?(B=0,G=Ia(40,H|0,114879,10)|0,H=B,B=0,!(H&1)):0)?(B=0,Xa(239,G|0,0)|0,G=B,B=0,!(G&1)):0){G=Ab(20)|0;B=0;eb(502,j|0,71825,72);H=B;B=0;do if(!(H&1)){B=0;eb(502,l|0,74254,23);F=B;B=0;if(F&1){F=Rb()|0;I=Q;Yua(j);J=F;K=I;break}B=0;wa(510,m|0,v|0);I=B;B=0;if(I&1){I=Rb()|0;L=Q;M=I;N=1}else{B=0;ua(163,G|0,j|0,l|0,691,m|0);I=B;B=0;if(I&1)O=1;else{B=0;eb(503,G|0,1240,229);B=0;O=0}I=Rb()|0;F=Q;Yua(m);L=F;M=I;N=O}Yua(l);Yua(j);if(N){J=M;K=L}else{P=M;R=L;break a}}else{I=Rb()|0;J=I;K=Q}while(0);zb(G|0);P=J;R=K}else S=20;while(0);if((S|0)==20){D=Rb()|0;P=D;R=Q}k[i>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);T=R;U=P;Qb(U|0)}while(0);x=A;y=C;vva(u);Qb(y|0)}if((Hc[k[(k[t>>2]|0)+20>>2]&511](t)|0)==559){Mp(a,g,d,0);p[h>>3]=+p[b+(k[g>>2]<<3)>>3];p[h+8>>3]=+p[b+(k[g+4>>2]<<3)>>3];p[h+16>>3]=+p[b+(k[g+8>>2]<<3)>>3];g=Qqa(16)|0;B=0;ib(284,g|0,941,h|0,738);h=B;B=0;if(!(h&1)){q$(t,g);r=e;return}e=Rb()|0;t=Q;Sqa(g);T=t;U=e;Qb(U|0)}e=n+56|0;t=n+4|0;k[n>>2]=27524;k[e>>2]=27544;B=0;wa(508,n+56|0,t|0);g=B;B=0;if(g&1){g=Rb()|0;V=Q;W=g;vva(e);Qb(W|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[e>>2]=27488;B=0;va(448,t|0);g=B;B=0;do if(g&1){h=Rb()|0;X=Q;Y=h}else{k[t>>2]=27560;h=n+36|0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,t|0,f|0);b=B;B=0;if(b&1){b=Rb()|0;d=Q;Yua(f);Yua(h);Ava(t);X=d;Y=b;break}Yua(f);B=0;b=Ia(40,n|0,109148,6)|0;d=B;B=0;b:do if((((!(d&1)?(B=0,a=ya(427,c|0)|0,y=B,B=0,!(y&1)):0)?(y=Lta(a)|0,B=0,u=Ia(40,b|0,a|0,y|0)|0,y=B,B=0,!(y&1)):0)?(B=0,y=Ia(40,u|0,74278,22)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,y|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,o|0,71825,72);u=B;B=0;do if(!(u&1)){B=0;eb(502,q|0,74254,23);a=B;B=0;if(a&1){a=Rb()|0;C=Q;Yua(o);Z=a;_=C;break}B=0;wa(510,s|0,t|0);C=B;B=0;if(C&1){C=Rb()|0;$=1;aa=Q;ba=C}else{B=0;ua(163,y|0,o|0,q|0,692,s|0);C=B;B=0;if(C&1)ca=1;else{B=0;eb(503,y|0,1240,229);B=0;ca=0}C=Rb()|0;a=Q;Yua(s);$=ca;aa=a;ba=C}Yua(q);Yua(o);if($){Z=ba;_=aa}else{da=aa;ea=ba;break b}}else{C=Rb()|0;Z=C;_=Q}while(0);zb(y|0);da=_;ea=Z}else S=47;while(0);if((S|0)==47){b=Rb()|0;da=Q;ea=b}k[n>>2]=27468;k[e>>2]=27488;k[t>>2]=27560;Yua(h);Ava(t);vva(e);T=da;U=ea;Qb(U|0)}while(0);V=X;W=Y;vva(e);Qb(W|0)}function Zt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0.0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0;e=r;r=r+448|0;f=e+424|0;g=e+288|0;h=e+276|0;i=e+264|0;j=e+112|0;l=e+128|0;m=e+88|0;n=e+76|0;o=e+64|0;q=e+100|0;s=e+40|0;t=e+16|0;u=e+8|0;v=e;w=oC(k[a+16>>2]|0,d)|0;if(!w){x=g+56|0;y=g+4|0;k[g>>2]=27524;k[x>>2]=27544;B=0;wa(508,g+56|0,y|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;C=z;vva(x);Qb(C|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[x>>2]=27488;B=0;va(448,y|0);z=B;B=0;do if(z&1){D=Rb()|0;E=Q;F=D}else{k[y>>2]=27560;D=g+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,y|0,f|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(f);Yua(D);Ava(y);E=H;F=G;break}Yua(f);B=0;G=Ia(40,g|0,109148,6)|0;H=B;B=0;a:do if((((!(H&1)?(B=0,I=ya(427,d|0)|0,J=B,B=0,!(J&1)):0)?(J=Lta(I)|0,B=0,K=Ia(40,G|0,I|0,J|0)|0,J=B,B=0,!(J&1)):0)?(B=0,J=Ia(40,K|0,114879,10)|0,K=B,B=0,!(K&1)):0)?(B=0,Xa(239,J|0,0)|0,J=B,B=0,!(J&1)):0){J=Ab(20)|0;B=0;eb(502,h|0,71825,72);K=B;B=0;do if(!(K&1)){B=0;eb(502,i|0,74301,16);I=B;B=0;if(I&1){I=Rb()|0;L=Q;Yua(h);M=L;N=I;break}B=0;wa(510,j|0,y|0);I=B;B=0;if(I&1){I=Rb()|0;O=I;P=Q;R=1}else{B=0;ua(163,J|0,h|0,i|0,704,j|0);I=B;B=0;if(I&1)S=1;else{B=0;eb(503,J|0,1240,229);B=0;S=0}I=Rb()|0;L=Q;Yua(j);O=I;P=L;R=S}Yua(i);Yua(h);if(R){M=P;N=O}else{T=O;U=P;break a}}else{L=Rb()|0;M=Q;N=L}while(0);zb(J|0);T=N;U=M}else V=20;while(0);if((V|0)==20){G=Rb()|0;T=G;U=Q}k[g>>2]=27468;k[x>>2]=27488;k[y>>2]=27560;Yua(D);Ava(y);vva(x);W=T;X=U;Qb(W|0)}while(0);A=E;C=F;vva(x);Qb(C|0)}if((Hc[k[(k[w>>2]|0)+20>>2]&511](w)|0)==559){Jp(a,q);Ip(a,f);a=Qqa(64)|0;B=0;va(491,a|0);C=B;B=0;if(C&1){C=Rb()|0;x=Q;Sqa(a);W=C;X=x;Qb(W|0)}Fc[k[(k[a>>2]|0)+28>>2]&1023](a,0);nd[k[(k[w>>2]|0)+48>>2]&1023](w,u,a);C$(w,v,a);Y=+(k[q>>2]|0);p[s>>3]=+p[u>>3]/Y;p[t>>3]=+p[v>>3]/Y;Fc[k[(k[a>>2]|0)+28>>2]&1023](a,1);nd[k[(k[w>>2]|0)+48>>2]&1023](w,u,a);C$(w,v,a);Y=+(k[q+4>>2]|0);p[s+8>>3]=+p[u>>3]/Y;p[t+8>>3]=+p[v>>3]/Y;Fc[k[(k[a>>2]|0)+28>>2]&1023](a,2);nd[k[(k[w>>2]|0)+48>>2]&1023](w,u,a);C$(w,v,a);Y=+(k[q+8>>2]|0);p[s+16>>3]=+p[u>>3]/Y;p[t+16>>3]=+p[v>>3]/Y;Ec[k[(k[a>>2]|0)+4>>2]&1023](a);if(k[b>>2]|0){a=k[k[b+4>>2]>>2]|0;Dc[k[(k[a>>2]|0)+16>>2]&255](a,3,f,s,1)}if(!(k[c>>2]|0)){r=e;return}s=k[k[c+4>>2]>>2]|0;Dc[k[(k[s>>2]|0)+16>>2]&255](s,3,f,t,1);r=e;return}e=l+56|0;t=l+4|0;k[l>>2]=27524;k[e>>2]=27544;B=0;wa(508,l+56|0,t|0);s=B;B=0;if(s&1){s=Rb()|0;Z=Q;_=s;vva(e);Qb(_|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[e>>2]=27488;B=0;va(448,t|0);s=B;B=0;do if(s&1){c=Rb()|0;$=Q;aa=c}else{k[t>>2]=27560;c=l+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[l+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,t|0,f|0);a=B;B=0;if(a&1){a=Rb()|0;b=Q;Yua(f);Yua(c);Ava(t);$=b;aa=a;break}Yua(f);B=0;a=Ia(40,l|0,109148,6)|0;b=B;B=0;b:do if((((!(b&1)?(B=0,v=ya(427,d|0)|0,u=B,B=0,!(u&1)):0)?(u=Lta(v)|0,B=0,q=Ia(40,a|0,v|0,u|0)|0,u=B,B=0,!(u&1)):0)?(B=0,u=Ia(40,q|0,74278,22)|0,q=B,B=0,!(q&1)):0)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,m|0,71825,72);q=B;B=0;do if(!(q&1)){B=0;eb(502,n|0,74301,16);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(m);ba=w;ca=v;break}B=0;wa(510,o|0,t|0);v=B;B=0;if(v&1){v=Rb()|0;da=1;ea=v;fa=Q}else{B=0;ua(163,u|0,m|0,n|0,705,o|0);v=B;B=0;if(v&1)ga=1;else{B=0;eb(503,u|0,1240,229);B=0;ga=0}v=Rb()|0;w=Q;Yua(o);da=ga;ea=v;fa=w}Yua(n);Yua(m);if(da){ba=fa;ca=ea}else{ha=ea;ia=fa;break b}}else{w=Rb()|0;ba=Q;ca=w}while(0);zb(u|0);ha=ca;ia=ba}else V=47;while(0);if((V|0)==47){a=Rb()|0;ha=a;ia=Q}k[l>>2]=27468;k[e>>2]=27488;k[t>>2]=27560;Yua(c);Ava(t);vva(e);W=ha;X=ia;Qb(W|0)}while(0);Z=$;_=aa;vva(e);Qb(_|0)}function _t(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0.0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=r;r=r+368|0;e=d+352|0;f=d;g=d+216|0;h=d+200|0;i=d+64|0;j=d+48|0;l=d+36|0;m=d+24|0;xp(a,f,287);a=f+8|0;n=+p[a>>3]==1.0;o=f+16|0;q=+p[o>>3];if(n&q==1.0){s=1;t=30628;k[b>>2]=s;u=k[t>>2]|0;k[c>>2]=u;r=d;return}v=+p[f>>3];if(q==1.0&v==1.0){s=2;t=30636;k[b>>2]=s;u=k[t>>2]|0;k[c>>2]=u;r=d;return}if(!(v!=1.0|n^1)){s=0;t=30644;k[b>>2]=s;u=k[t>>2]|0;k[c>>2]=u;r=d;return}d=g+56|0;u=g+4|0;k[g>>2]=27524;k[d>>2]=27544;B=0;wa(508,g+56|0,u|0);c=B;B=0;if(c&1){c=Rb()|0;w=Q;x=c;vva(d);Qb(x|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[d>>2]=27488;B=0;va(448,u|0);c=B;B=0;do if(c&1){t=Rb()|0;y=Q;z=t}else{k[u>>2]=27560;t=g+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,u|0,e|0);s=B;B=0;if(s&1){s=Rb()|0;b=Q;Yua(e);Yua(t);Ava(u);y=b;z=s;break}Yua(e);B=0;s=Ia(40,g|0,71898,25)|0;b=B;B=0;do if((((((!(b&1)?(B=0,n=Sa(1,s|0,+(+p[f>>3]))|0,A=B,B=0,!(A&1)):0)?(B=0,A=Ia(40,n|0,149175,1)|0,n=B,B=0,!(n&1)):0)?(B=0,n=Sa(1,A|0,+(+p[a>>3]))|0,A=B,B=0,!(A&1)):0)?(B=0,A=Ia(40,n|0,149175,1)|0,n=B,B=0,!(n&1)):0)?(B=0,Sa(1,A|0,+(+p[o>>3]))|0,A=B,B=0,!(A&1)):0)?(B=0,wa(510,h|0,u|0),A=B,B=0,!(A&1)):0){B=0;ya(424,h|0)|0;A=B;B=0;if(A&1){A=Rb()|0;n=Q;Yua(h);C=n;D=A;break}Yua(h);k[g>>2]=27468;k[d>>2]=27488;k[u>>2]=27560;Yua(t);Ava(u);vva(d);A=i+56|0;n=i+4|0;k[i>>2]=27524;k[A>>2]=27544;B=0;wa(508,i+56|0,n|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;G=E;vva(A);Qb(G|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[A>>2]=27488;B=0;va(448,n|0);E=B;B=0;do if(E&1){H=Rb()|0;I=Q;J=H}else{k[n>>2]=27560;H=i+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[i+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,n|0,e|0);K=B;B=0;if(K&1){K=Rb()|0;L=Q;Yua(e);Yua(H);Ava(n);I=L;J=K;break}Yua(e);B=0;K=Ia(40,i|0,71924,32)|0;L=B;B=0;a:do if(L&1)M=37;else{B=0;Xa(239,K|0,0)|0;N=B;B=0;if(N&1){M=37;break}N=Ab(20)|0;B=0;eb(502,j|0,71825,72);O=B;B=0;do if(!(O&1)){B=0;eb(502,l|0,72104,17);P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(j);S=R;T=P;break}B=0;wa(510,m|0,n|0);P=B;B=0;if(P&1){P=Rb()|0;U=1;V=Q;W=P}else{B=0;ua(163,N|0,j|0,l|0,767,m|0);P=B;B=0;if(P&1)X=1;else{B=0;eb(503,N|0,1240,229);B=0;X=0}P=Rb()|0;R=Q;Yua(m);U=X;V=R;W=P}Yua(l);Yua(j);if(U){S=V;T=W}else{Y=V;Z=W;break a}}else{P=Rb()|0;S=Q;T=P}while(0);zb(N|0);Y=S;Z=T}while(0);if((M|0)==37){K=Rb()|0;Y=Q;Z=K}k[i>>2]=27468;k[A>>2]=27488;k[n>>2]=27560;Yua(H);Ava(n);vva(A);_=Y;$=Z;Qb($|0)}while(0);F=I;G=J;vva(A);Qb(G|0)}else M=34;while(0);if((M|0)==34){s=Rb()|0;C=Q;D=s}k[g>>2]=27468;k[d>>2]=27488;k[u>>2]=27560;Yua(t);Ava(u);vva(d);_=C;$=D;Qb($|0)}while(0);w=y;x=z;vva(d);Qb(x|0)}function $t(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0.0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=r;r=r+368|0;e=d+352|0;f=d;g=d+216|0;h=d+200|0;i=d+64|0;j=d+48|0;l=d+36|0;m=d+24|0;xp(a,f,288);a=f+8|0;n=+p[a>>3]==1.0;o=f+16|0;q=+p[o>>3];if(n&q==1.0){s=1;t=30628;k[b>>2]=s;u=k[t>>2]|0;k[c>>2]=u;r=d;return}v=+p[f>>3];if(q==1.0&v==1.0){s=2;t=30636;k[b>>2]=s;u=k[t>>2]|0;k[c>>2]=u;r=d;return}if(!(v!=1.0|n^1)){s=0;t=30644;k[b>>2]=s;u=k[t>>2]|0;k[c>>2]=u;r=d;return}d=g+56|0;u=g+4|0;k[g>>2]=27524;k[d>>2]=27544;B=0;wa(508,g+56|0,u|0);c=B;B=0;if(c&1){c=Rb()|0;w=Q;x=c;vva(d);Qb(x|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[d>>2]=27488;B=0;va(448,u|0);c=B;B=0;do if(c&1){t=Rb()|0;y=Q;z=t}else{k[u>>2]=27560;t=g+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,u|0,e|0);s=B;B=0;if(s&1){s=Rb()|0;b=Q;Yua(e);Yua(t);Ava(u);y=b;z=s;break}Yua(e);B=0;s=Ia(40,g|0,72122,29)|0;b=B;B=0;do if((((((!(b&1)?(B=0,n=Sa(1,s|0,+(+p[f>>3]))|0,A=B,B=0,!(A&1)):0)?(B=0,A=Ia(40,n|0,149175,1)|0,n=B,B=0,!(n&1)):0)?(B=0,n=Sa(1,A|0,+(+p[a>>3]))|0,A=B,B=0,!(A&1)):0)?(B=0,A=Ia(40,n|0,149175,1)|0,n=B,B=0,!(n&1)):0)?(B=0,Sa(1,A|0,+(+p[o>>3]))|0,A=B,B=0,!(A&1)):0)?(B=0,wa(510,h|0,u|0),A=B,B=0,!(A&1)):0){B=0;ya(424,h|0)|0;A=B;B=0;if(A&1){A=Rb()|0;n=Q;Yua(h);C=n;D=A;break}Yua(h);k[g>>2]=27468;k[d>>2]=27488;k[u>>2]=27560;Yua(t);Ava(u);vva(d);A=i+56|0;n=i+4|0;k[i>>2]=27524;k[A>>2]=27544;B=0;wa(508,i+56|0,n|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;G=E;vva(A);Qb(G|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[A>>2]=27488;B=0;va(448,n|0);E=B;B=0;do if(E&1){H=Rb()|0;I=Q;J=H}else{k[n>>2]=27560;H=i+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[i+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,n|0,e|0);K=B;B=0;if(K&1){K=Rb()|0;L=Q;Yua(e);Yua(H);Ava(n);I=L;J=K;break}Yua(e);B=0;K=Ia(40,i|0,72152,36)|0;L=B;B=0;a:do if(L&1)M=37;else{B=0;Xa(239,K|0,0)|0;N=B;B=0;if(N&1){M=37;break}N=Ab(20)|0;B=0;eb(502,j|0,71825,72);O=B;B=0;do if(!(O&1)){B=0;eb(502,l|0,72189,20);P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(j);S=R;T=P;break}B=0;wa(510,m|0,n|0);P=B;B=0;if(P&1){P=Rb()|0;U=1;V=Q;W=P}else{B=0;ua(163,N|0,j|0,l|0,805,m|0);P=B;B=0;if(P&1)X=1;else{B=0;eb(503,N|0,1240,229);B=0;X=0}P=Rb()|0;R=Q;Yua(m);U=X;V=R;W=P}Yua(l);Yua(j);if(U){S=V;T=W}else{Y=V;Z=W;break a}}else{P=Rb()|0;S=Q;T=P}while(0);zb(N|0);Y=S;Z=T}while(0);if((M|0)==37){K=Rb()|0;Y=Q;Z=K}k[i>>2]=27468;k[A>>2]=27488;k[n>>2]=27560;Yua(H);Ava(n);vva(A);_=Y;$=Z;Qb($|0)}while(0);F=I;G=J;vva(A);Qb(G|0)}else M=34;while(0);if((M|0)==34){s=Rb()|0;C=Q;D=s}k[g>>2]=27468;k[d>>2]=27488;k[u>>2]=27560;Yua(t);Ava(u);vva(d);_=C;$=D;Qb($|0)}while(0);w=y;x=z;vva(d);Qb(x|0)}function au(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0.0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;e=d;f=d+40|0;g=d+176|0;h=d+24|0;i=d+12|0;switch(c|0){case 215:{j=k[a+28>>2]|0;l=+Zc[k[(k[j>>2]|0)+52>>2]&255](j);p[b>>3]=l;r=d;return}case 671:{j=oC(k[a+16>>2]|0,671)|0;Fc[k[(k[j>>2]|0)+64>>2]&1023](j,e);p[b>>3]=+p[e>>3];r=d;return}default:{d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);j=B;B=0;if(j&1){j=Rb()|0;m=Q;n=j;vva(d);Qb(n|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);j=B;B=0;do if(j&1){a=Rb()|0;o=Q;q=a}else{k[b>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(e);Yua(a);Ava(b);o=t;q=s;break}Yua(e);B=0;s=Ia(40,f|0,74318,14)|0;t=B;B=0;if((((!(t&1)?(B=0,t=ya(427,c|0)|0,u=B,B=0,!(u&1)):0)?(u=Lta(t)|0,B=0,v=Ia(40,s|0,t|0,u|0)|0,u=B,B=0,!(u&1)):0)?(B=0,u=Ia(40,v|0,146956,19)|0,v=B,B=0,!(v&1)):0)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,g|0,71825,72);v=B;B=0;do if(!(v&1)){B=0;eb(502,h|0,74333,15);t=B;B=0;if(t&1){t=Rb()|0;s=Q;Yua(g);w=s;x=t;break}B=0;wa(510,i|0,b|0);t=B;B=0;if(t&1){t=Rb()|0;y=Q;z=t;A=1}else{B=0;ua(163,u|0,g|0,h|0,828,i|0);t=B;B=0;if(t&1)C=1;else{B=0;eb(503,u|0,1240,229);B=0;C=0}t=Rb()|0;s=Q;Yua(i);y=s;z=t;A=C}Yua(h);Yua(g);if(A){w=y;x=z}else{D=y;E=z;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(E|0)}}else{t=Rb()|0;w=Q;x=t}while(0);zb(u|0);D=w;E=x;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(E|0)}v=Rb()|0;D=Q;E=v;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(E|0)}while(0);m=o;n=q;vva(d);Qb(n|0)}}}function bu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0.0,h=0.0,i=0.0,j=0.0,l=0.0,m=0.0;e=r;r=r+80|0;f=e;Ko(f,k[a+24>>2]|0,3,0);g=+p[f>>3];h=+p[f+8>>3];i=+p[f+24>>3];j=i<g?i:g;l=i>g?i:g;g=+p[f+32>>3];i=g<h?g:h;m=g>h?g:h;h=+p[f+48>>3];g=+p[f+56>>3];p[b>>3]=(h>l?h:l)-(h<j?h:j);p[c>>3]=(g>m?g:m)-(g<i?g:i);p[d>>3]=0.0;r=e;return}function cu(a){a=a|0;return k[a+44>>2]|0}function du(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0.0,l=0.0,m=0,n=0.0,o=0.0,q=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;b=r;r=r+256|0;c=b;d=b+248|0;e=b+244|0;f=b+96|0;g=b+232|0;h=b+84|0;i=b+72|0;k[e>>2]=0;if(!($p(a)|0)){j=0.0;r=b;return +j}cp(a,d,298);switch(k[d>>2]|0){case 300:case 302:{Uo(a,e);l=+id[k[(k[a>>2]|0)+136>>2]&63](a,k[e>>2]|0);m=k[e>>2]|0;if(m)Tqa(m);k[e>>2]=0;Ko(c,k[a+24>>2]|0,3,0);n=+p[c>>3];o=+p[c+8>>3];q=+p[c+24>>3];s=+p[c+32>>3];t=+p[c+48>>3];u=+p[c+56>>3];j=(1.0-l)*((o*t+(n*s+(q*u-s*t)-o*q)-n*u)*.5);r=b;return +j}default:{}}b=f+56|0;a=f+4|0;k[f>>2]=27524;k[b>>2]=27544;B=0;wa(508,f+56|0,a|0);e=B;B=0;if(e&1){e=Rb()|0;v=Q;w=e;vva(b);Qb(w|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[b>>2]=27488;B=0;va(448,a|0);e=B;B=0;do if(e&1){m=Rb()|0;x=Q;y=m}else{k[a>>2]=27560;m=f+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(c);Yua(m);Ava(a);x=A;y=z;break}Yua(c);B=0;z=Ia(40,f|0,144639,5)|0;A=B;B=0;if((((!(A&1)?(B=0,A=ya(427,k[d>>2]|0)|0,C=B,B=0,!(C&1)):0)?(C=Lta(A)|0,B=0,D=Ia(40,z|0,A|0,C|0)|0,C=B,B=0,!(C&1)):0)?(B=0,C=Ia(40,D|0,146481,18)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,C|0,0)|0,C=B,B=0,!(C&1)):0){C=Ab(20)|0;B=0;eb(502,g|0,71825,72);D=B;B=0;do if(!(D&1)){B=0;eb(502,h|0,103020,12);A=B;B=0;if(A&1){A=Rb()|0;z=Q;Yua(g);E=z;F=A;break}B=0;wa(510,i|0,a|0);A=B;B=0;if(A&1){A=Rb()|0;G=Q;H=A;I=1}else{B=0;ua(163,C|0,g|0,h|0,871,i|0);A=B;B=0;if(A&1)J=1;else{B=0;eb(503,C|0,1240,229);B=0;J=0}A=Rb()|0;z=Q;Yua(i);G=z;H=A;I=J}Yua(h);Yua(g);if(I){E=G;F=H}else{K=G;L=H;k[f>>2]=27468;k[b>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(b);Qb(L|0)}}else{A=Rb()|0;E=Q;F=A}while(0);zb(C|0);K=E;L=F;k[f>>2]=27468;k[b>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(b);Qb(L|0)}D=Rb()|0;K=Q;L=D;k[f>>2]=27468;k[b>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(b);Qb(L|0)}while(0);v=x;w=y;vva(b);Qb(w|0);return +(0.0)}function eu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0;d=r;r=r+96|0;e=d+80|0;f=d+76|0;g=d+72|0;h=d+64|0;i=d+56|0;j=d+48|0;l=d+40|0;m=d+24|0;n=d;if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){r=d;return}o=a+16|0;kC(k[o>>2]|0,e,533);switch(k[e>>2]|0){case 536:case 537:case 540:{e=a+24|0;q=c+4|0;s=b+4|0;t=Co(k[k[e>>2]>>2]|0)|0;if(k[b>>2]|0){u=k[k[s>>2]>>2]|0;Jc[k[(k[u>>2]|0)+20>>2]&1](u,t,9999.0,0)}t=Co(k[k[e>>2]>>2]|0)|0;if(k[c>>2]|0){u=k[k[q>>2]>>2]|0;Jc[k[(k[u>>2]|0)+20>>2]&1](u,t,9999.0,0)}t=Co(k[(k[e>>2]|0)+4>>2]|0)|0;if(k[b>>2]|0){u=k[k[s>>2]>>2]|0;Jc[k[(k[u>>2]|0)+20>>2]&1](u,t,9999.0,0)}t=Co(k[(k[e>>2]|0)+4>>2]|0)|0;if(k[c>>2]|0){u=k[k[q>>2]>>2]|0;Jc[k[(k[u>>2]|0)+20>>2]&1](u,t,9999.0,0)}t=Co(k[(k[e>>2]|0)+8>>2]|0)|0;if(k[b>>2]|0){u=k[k[s>>2]>>2]|0;Jc[k[(k[u>>2]|0)+20>>2]&1](u,t,9999.0,0)}t=Co(k[(k[e>>2]|0)+8>>2]|0)|0;if(k[c>>2]|0){e=k[k[q>>2]>>2]|0;Jc[k[(k[e>>2]|0)+20>>2]&1](e,t,9999.0,0)}break}default:{k[f>>2]=0;k[g>>2]=0;Uo(a,f);Fc[k[(k[a>>2]|0)+188>>2]&1023](a,g);t=oC(k[o>>2]|0,653)|0;e=oC(k[o>>2]|0,64)|0;q=oC(k[o>>2]|0,63)|0;u=oC(k[o>>2]|0,674)|0;s=oC(k[o>>2]|0,677)|0;o=ed[k[(k[a>>2]|0)+324>>2]&511](a,1)|0;Fc[k[(k[o>>2]|0)+24>>2]&1023](o,0);if(_p(a)|0){nd[k[(k[e>>2]|0)+48>>2]&1023](e,l,o);nd[k[(k[q>>2]|0)+48>>2]&1023](q,j,o);q=a+24|0;if(+p[l>>3]<+p[j>>3]){v=q;w=12}else{x=q;w=11}}else{Xo(a,n,k[f>>2]|0,o,u,s);q=k[a+28>>2]|0;Tc[k[(k[q>>2]|0)+108>>2]&15](q,i,2,k[f>>2]|0,o,u,s,0);nd[k[(k[t>>2]|0)+48>>2]&1023](t,h,o);nd[k[(k[e>>2]|0)+48>>2]&1023](e,l,o);y=+p[i>>3]*2.0;z=+p[h>>3];A=y*+p[n>>3]-z;B=y*+p[n+8>>3]-z;z=y*+p[n+16>>3];nd[k[(k[a>>2]|0)+380>>2]&1023](a,m,k[g>>2]|0);y=+p[m>>3];C=+p[m+8>>3];m=a+32|0;+WJ(k[m>>2]|0,265);D=+WJ(k[m>>2]|0,266);E=D*+WJ(k[m>>2]|0,65);m=a+24|0;if(z*2.0*y*C+(y*(A*y)+C*(B*C))<E*+p[l>>3]){v=m;w=12}else{x=m;w=11}}if((w|0)==11){m=c+4|0;l=Co(k[k[x>>2]>>2]|0)|0;if(k[c>>2]|0){a=k[k[m>>2]>>2]|0;Jc[k[(k[a>>2]|0)+20>>2]&1](a,l,1.0,0)}l=Co(k[(k[x>>2]|0)+4>>2]|0)|0;if(k[c>>2]|0){a=k[k[m>>2]>>2]|0;Jc[k[(k[a>>2]|0)+20>>2]&1](a,l,1.0,0)}l=Co(k[(k[x>>2]|0)+8>>2]|0)|0;if(k[c>>2]|0){c=k[k[m>>2]>>2]|0;Jc[k[(k[c>>2]|0)+20>>2]&1](c,l,1.0,0)}}else if((w|0)==12){w=b+4|0;l=Co(k[k[v>>2]>>2]|0)|0;if(k[b>>2]|0){c=k[k[w>>2]>>2]|0;Jc[k[(k[c>>2]|0)+20>>2]&1](c,l,1.0,0)}l=Co(k[(k[v>>2]|0)+4>>2]|0)|0;if(k[b>>2]|0){c=k[k[w>>2]>>2]|0;Jc[k[(k[c>>2]|0)+20>>2]&1](c,l,1.0,0)}l=Co(k[(k[v>>2]|0)+8>>2]|0)|0;if(k[b>>2]|0){b=k[k[w>>2]>>2]|0;Jc[k[(k[b>>2]|0)+20>>2]&1](b,l,1.0,0)}}if(o)Ec[k[(k[o>>2]|0)+4>>2]&1023](o);o=k[f>>2]|0;if(o)Tqa(o);k[f>>2]=0;f=k[g>>2]|0;if(f)Tqa(f)}}r=d;return}function fu(a){a=a|0;var b=0,c=0,d=0.0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,l=0.0,m=0.0,n=0.0,o=0.0;b=r;r=r+80|0;c=b;Ko(c,k[a+24>>2]|0,3,0);d=+p[c>>3];e=+p[c+8>>3];f=+p[c+16>>3];g=+p[c+24>>3];h=+p[c+32>>3];i=+p[c+40>>3];j=+p[c+48>>3];l=+p[c+56>>3];m=+p[c+64>>3];n=g*l+(e*j+(d*h-e*g-d*l))-h*j;o=h*m+(f*l+(e*i-f*h-e*m))-i*l;l=i*j+(f*g-d*i+d*m-f*j-g*m);m=+aa(+(l*l+(n*n+o*o)))*.5;r=b;return +m}function gu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;g=r;r=r+240|0;h=g+224|0;i=g+212|0;j=g+200|0;l=g;m=g+64|0;n=g+48|0;o=g+36|0;q=g+24|0;s=Rqa(12)|0;xp(a,l,e);if(!(+p[l>>3]<=f)){k[j>>2]=0;t=0;u=1}else{k[i>>2]=0;t=1;u=0}if(!(+p[l+8>>3]<=f)){k[j+(u<<2)>>2]=1;v=t;w=u+1|0}else{k[i+(t<<2)>>2]=1;v=t+1|0;w=u}if(!(+p[l+16>>3]<=f)){k[j+(w<<2)>>2]=2;u=w+1|0;if((v|0)>0){TEa(s|0,i|0,v<<2|0)|0;x=v;y=u;z=6}else{x=0;y=u;z=6}}else{k[i+(v<<2)>>2]=2;u=v+1|0;TEa(s|0,i|0,u<<2|0)|0;if((w|0)>0){x=u;y=w;z=6}else A=u}if((z|0)==6){TEa(s+(x<<2)|0,j|0,y<<2|0)|0;A=x}switch(A|0){case 0:{k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[b>>2]=s;k[c>>2]=A;r=g;return}case 1:{C=+p[l+(k[s>>2]<<3)>>3];D=f-C;p[d>>3]=D/(+p[l+(k[s+4>>2]<<3)>>3]-C);p[d+8>>3]=D/(+p[l+(k[s+8>>2]<<3)>>3]-C);k[b>>2]=s;k[c>>2]=A;r=g;return}case 2:{C=+p[l+(k[s+8>>2]<<3)>>3];D=+p[l+(k[s>>2]<<3)>>3];p[d>>3]=(f-D)/(C-D);D=+p[l+(k[s+4>>2]<<3)>>3];p[d+8>>3]=(f-D)/(C-D);k[b>>2]=s;k[c>>2]=A;r=g;return}case 3:{p[d>>3]=1.0;p[d+8>>3]=1.0;k[b>>2]=s;k[c>>2]=A;r=g;return}default:{g=m+56|0;A=m+4|0;k[m>>2]=27524;k[g>>2]=27544;B=0;wa(508,m+56|0,A|0);c=B;B=0;if(c&1){c=Rb()|0;E=Q;F=c;vva(g);Qb(F|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[g>>2]=27488;B=0;va(448,A|0);c=B;B=0;do if(c&1){s=Rb()|0;G=Q;H=s}else{k[A>>2]=27560;s=m+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[m+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,A|0,h|0);b=B;B=0;if(b&1){b=Rb()|0;d=Q;Yua(h);Yua(s);Ava(A);G=d;H=b;break}Yua(h);B=0;b=Ia(40,m|0,72210,62)|0;d=B;B=0;if(!(d&1)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,n|0,71825,72);d=B;B=0;do if(!(d&1)){B=0;eb(502,o|0,72273,23);l=B;B=0;if(l&1){l=Rb()|0;x=Q;Yua(n);I=x;J=l;break}B=0;wa(510,q|0,A|0);l=B;B=0;if(l&1){l=Rb()|0;K=Q;L=l;M=1}else{B=0;ua(163,b|0,n|0,o|0,1407,q|0);l=B;B=0;if(l&1)N=1;else{B=0;eb(503,b|0,1240,229);B=0;N=0}l=Rb()|0;x=Q;Yua(q);K=x;L=l;M=N}Yua(o);Yua(n);if(M){I=K;J=L}else{O=K;P=L;k[m>>2]=27468;k[g>>2]=27488;k[A>>2]=27560;Yua(s);Ava(A);vva(g);Qb(P|0)}}else{l=Rb()|0;I=Q;J=l}while(0);zb(b|0);O=I;P=J;k[m>>2]=27468;k[g>>2]=27488;k[A>>2]=27560;Yua(s);Ava(A);vva(g);Qb(P|0)}d=Rb()|0;O=Q;P=d;k[m>>2]=27468;k[g>>2]=27488;k[A>>2]=27560;Yua(s);Ava(A);vva(g);Qb(P|0)}while(0);E=G;F=H;vva(g);Qb(F|0)}}}function hu(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0.0,j=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0;f=r;r=r+144|0;g=f+72|0;h=f;Ko(g,k[a+24>>2]|0,3,0);i=+p[g>>3];j=+p[g+8>>3];l=+p[g+24>>3];m=+p[g+32>>3];n=+p[g+48>>3];o=+p[g+56>>3];k[h>>2]=k[d>>2];k[h+4>>2]=k[d+4>>2];k[h+8>>2]=k[d+8>>2];k[h+12>>2]=k[d+12>>2];k[h+16>>2]=k[d+16>>2];k[h+20>>2]=k[d+20>>2];g=h+24|0;a=d+24|0;k[g>>2]=k[a>>2];k[g+4>>2]=k[a+4>>2];k[g+8>>2]=k[a+8>>2];k[g+12>>2]=k[a+12>>2];k[g+16>>2]=k[a+16>>2];k[g+20>>2]=k[a+20>>2];q=h+48|0;s=d+48|0;k[q>>2]=k[s>>2];k[q+4>>2]=k[s+4>>2];k[q+8>>2]=k[s+8>>2];k[q+12>>2]=k[s+12>>2];k[q+16>>2]=k[s+16>>2];k[q+20>>2]=k[s+20>>2];t=(j*n+(i*m+(l*o-m*n)-j*l)-i*o)*.5;if((e|0)<=0){r=f;return}u=h+56|0;v=h+32|0;w=h+8|0;o=+p[g>>3];i=+p[v>>3];x=0;do{y=x*3|0;z=c+(y<<3)|0;A=b+(y<<3)|0;k[h>>2]=k[z>>2];k[h+4>>2]=k[z+4>>2];k[h+8>>2]=k[z+8>>2];k[h+12>>2]=k[z+12>>2];k[h+16>>2]=k[z+16>>2];k[h+20>>2]=k[z+20>>2];l=+p[u>>3];j=+p[q>>3];n=+p[h>>3];m=+p[w>>3];B=+$(+(j*m+(o*l-i*j+i*n-o*m)-l*n))*.5/t;p[A>>3]=B;k[h>>2]=k[d>>2];k[h+4>>2]=k[d+4>>2];k[h+8>>2]=k[d+8>>2];k[h+12>>2]=k[d+12>>2];k[h+16>>2]=k[d+16>>2];k[h+20>>2]=k[d+20>>2];k[g>>2]=k[z>>2];k[g+4>>2]=k[z+4>>2];k[g+8>>2]=k[z+8>>2];k[g+12>>2]=k[z+12>>2];k[g+16>>2]=k[z+16>>2];k[g+20>>2]=k[z+20>>2];B=+p[g>>3];n=+p[v>>3];m=+p[h>>3];C=+p[w>>3];D=+$(+(j*C+(B*l-n*j+n*m-B*C)-l*m))*.5/t;p[A+8>>3]=D;k[g>>2]=k[a>>2];k[g+4>>2]=k[a+4>>2];k[g+8>>2]=k[a+8>>2];k[g+12>>2]=k[a+12>>2];k[g+16>>2]=k[a+16>>2];k[g+20>>2]=k[a+20>>2];k[q>>2]=k[z>>2];k[q+4>>2]=k[z+4>>2];k[q+8>>2]=k[z+8>>2];k[q+12>>2]=k[z+12>>2];k[q+16>>2]=k[z+16>>2];k[q+20>>2]=k[z+20>>2];o=+p[g>>3];D=+p[u>>3];i=+p[v>>3];l=+p[q>>3];B=+$(+(l*C+(o*D-i*l+i*m-o*C)-D*m))*.5/t;p[A+16>>3]=B;k[q>>2]=k[s>>2];k[q+4>>2]=k[s+4>>2];k[q+8>>2]=k[s+8>>2];k[q+12>>2]=k[s+12>>2];k[q+16>>2]=k[s+16>>2];k[q+20>>2]=k[s+20>>2];x=x+1|0}while((x|0)!=(e|0));r=f;return}function iu(a){a=a|0;return k[a+44>>2]|0}function ju(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0.0,j=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,s=0,t=0;f=r;r=r+32|0;g=f;xp(a,g,928);h=+p[g>>3];if(h==0.0){j=h+1.0e-15;p[g>>3]=j;l=j}else l=h;a=g+8|0;h=+p[a>>3];if(h==0.0){j=h+1.0e-15;p[a>>3]=j;m=j}else m=h;a=g+16|0;h=+p[a>>3];if(h==0.0){j=h+1.0e-15;p[a>>3]=j;n=j}else n=h;do if(!(l>0.0&m>0.0&n>0.0))if(!(l<0.0&m<0.0&n<0.0)){h=l*m;a=!(h*n<0.0);if(h>0.0){o=n/(n-l);q=n/(n-m);s=a;t=2;break}if(m*n>0.0){o=l/(l-m);q=l/(l-n);s=a;t=0;break}if(l*n>0.0){o=m/(m-n);q=m/(m-l);s=a;t=1}else{o=0.0;q=0.0;s=a;t=0}}else{o=0.0;q=0.0;s=1;t=0}else{o=1.0;q=1.0;s=1;t=0}while(0);k[b>>2]=t;p[c>>3]=o;p[d>>3]=q;i[e>>0]=s&1;r=f;return}function ku(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0,A=0.0,C=0.0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0.0,M=0.0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0;c=r;r=r+496|0;d=c+472|0;e=c+468|0;f=c+464|0;g=c+460|0;h=c+104|0;i=c+96|0;j=c+72|0;l=c;m=c+312|0;n=c+448|0;o=c+296|0;q=c+148|0;s=c+160|0;t=c+136|0;u=c+124|0;v=c+112|0;cO(k[a+36>>2]|0,e,298);xp(a,j,928);w=+p[j>>3];if(w==0.0){x=w+1.0e-15;p[j>>3]=x;y=x}else y=w;z=j+8|0;w=+p[z>>3];if(w==0.0){x=w+1.0e-15;p[z>>3]=x;A=x}else A=w;z=j+16|0;w=+p[z>>3];if(w==0.0){x=w+1.0e-15;p[z>>3]=x;C=x}else C=w;z=k[e>>2]|0;do if((z|0)==301){_t(a,f,g);w=+p[j+(k[f>>2]<<3)>>3];D=w>0.0;if(D?+p[j+(k[g>>2]<<3)>>3]>0.0:0){E=1.0;break}x=+p[j+(k[g>>2]<<3)>>3];if(w<0.0){if(x<0.0){E=0.0;break}F=+p[j+(k[g>>2]<<3)>>3];if(F>0.0){E=1.0/(1.0-w/F);break}else G=F}else G=x;if(!(G<0.0)|D^1)E=0.0;else E=1.0/(1.0-G/w)}else{if((z&-3|0)==300){if(y>0.0&A>0.0&C>0.0){E=1.0;break}if(y<0.0&A<0.0&C<0.0){E=0.0;break}w=y*A;D=!(w*C>0.0);do if(!(w>0.0)){if(A*C>0.0){x=+p[b>>3];p[l>>3]=x;F=+p[b+8>>3];p[l+8>>3]=F;H=+p[b+16>>3];p[l+16>>3]=H;I=y/(y-A);J=y/(y-C);p[l+24>>3]=x+I*(+p[b+24>>3]-x);p[l+32>>3]=F+I*(+p[b+32>>3]-F);p[l+40>>3]=H+I*(+p[b+40>>3]-H);p[l+48>>3]=x+J*(+p[b+48>>3]-x);p[l+56>>3]=F+J*(+p[b+56>>3]-F);p[l+64>>3]=H+J*(+p[b+64>>3]-H);K=l;break}if(y*C>0.0){H=+p[b+24>>3];p[l+24>>3]=H;J=+p[b+32>>3];p[l+32>>3]=J;F=+p[b+40>>3];p[l+40>>3]=F;x=A/(A-y);I=A/(A-C);p[l>>3]=H+x*(+p[b>>3]-H);p[l+8>>3]=J+x*(+p[b+8>>3]-J);p[l+16>>3]=F+x*(+p[b+16>>3]-F);p[l+48>>3]=H+I*(+p[b+48>>3]-H);p[l+56>>3]=J+I*(+p[b+56>>3]-J);p[l+64>>3]=F+I*(+p[b+64>>3]-F);K=l;break}else{K=l;break}}else{F=+p[b+48>>3];p[l+48>>3]=F;I=+p[b+56>>3];p[l+56>>3]=I;J=+p[b+64>>3];p[l+64>>3]=J;H=C/(C-A);x=C/(C-y);p[l+24>>3]=F+H*(+p[b+24>>3]-F);p[l+32>>3]=I+H*(+p[b+32>>3]-I);p[l+40>>3]=J+H*(+p[b+40>>3]-J);p[l>>3]=F+x*(+p[b>>3]-F);p[l+8>>3]=I+x*(+p[b+8>>3]-I);p[l+16>>3]=J+x*(+p[b+16>>3]-J);K=l}while(0);uw(a,h,b,0);uw(a,i,K,0);if(D){w=+p[h>>3];J=w-+p[i>>3];p[i>>3]=J;L=J;M=w}else{L=+p[i>>3];M=+p[h>>3]}E=L/M;break}N=m+56|0;O=m+4|0;k[m>>2]=27524;k[N>>2]=27544;B=0;wa(508,m+56|0,O|0);P=B;B=0;if(P&1){P=Rb()|0;R=Q;S=P;vva(N);Qb(S|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[N>>2]=27488;B=0;va(448,O|0);P=B;B=0;do if(P&1){T=Rb()|0;U=Q;V=T}else{k[O>>2]=27560;T=m+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[m+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,O|0,d|0);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Yua(d);Yua(T);Ava(O);U=X;V=W;break}Yua(d);B=0;W=Ia(40,m|0,144674,10)|0;X=B;B=0;a:do if((((!(X&1)?(B=0,Y=ya(427,k[e>>2]|0)|0,Z=B,B=0,!(Z&1)):0)?(Z=Lta(Y)|0,B=0,_=Ia(40,W|0,Y|0,Z|0)|0,Z=B,B=0,!(Z&1)):0)?(B=0,Z=Ia(40,_|0,72297,18)|0,_=B,B=0,!(_&1)):0)?(B=0,Xa(239,Z|0,0)|0,Z=B,B=0,!(Z&1)):0){Z=Ab(20)|0;B=0;eb(502,n|0,71825,72);_=B;B=0;do if(!(_&1)){B=0;eb(502,o|0,74430,18);Y=B;B=0;if(Y&1){Y=Rb()|0;$=Q;Yua(n);aa=$;ba=Y;break}B=0;wa(510,q|0,O|0);Y=B;B=0;if(Y&1){Y=Rb()|0;ca=Y;da=Q;ea=1}else{B=0;ua(163,Z|0,n|0,o|0,1240,q|0);Y=B;B=0;if(Y&1)fa=1;else{B=0;eb(503,Z|0,1240,229);B=0;fa=0}Y=Rb()|0;$=Q;Yua(q);ca=Y;da=$;ea=fa}Yua(o);Yua(n);if(ea){aa=da;ba=ca}else{ga=da;ha=ca;break a}}else{$=Rb()|0;aa=Q;ba=$}while(0);zb(Z|0);ga=aa;ha=ba}else ia=48;while(0);if((ia|0)==48){W=Rb()|0;ga=Q;ha=W}k[m>>2]=27468;k[N>>2]=27488;k[O>>2]=27560;Yua(T);Ava(O);vva(N);ja=ga;ka=ha;Qb(ka|0)}while(0);R=U;S=V;vva(N);Qb(S|0)}while(0);if(!(E>1.0|E<0.0)){r=c;return +E}c=s+56|0;S=s+4|0;k[s>>2]=27524;k[c>>2]=27544;B=0;wa(508,s+56|0,S|0);V=B;B=0;if(V&1){V=Rb()|0;la=Q;ma=V;vva(c);Qb(ma|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[c>>2]=27488;B=0;va(448,S|0);V=B;B=0;do if(V&1){U=Rb()|0;na=Q;oa=U}else{k[S>>2]=27560;U=s+36|0;k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;k[U+12>>2]=0;k[s+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,S|0,d|0);R=B;B=0;if(R&1){R=Rb()|0;ha=Q;Yua(d);Yua(U);Ava(S);na=ha;oa=R;break}Yua(d);B=0;R=Ia(40,s|0,74349,80)|0;ha=B;B=0;b:do if(!(ha&1)?(B=0,Xa(239,R|0,0)|0,ga=B,B=0,!(ga&1)):0){ga=Ab(20)|0;B=0;eb(502,t|0,71825,72);m=B;B=0;do if(!(m&1)){B=0;eb(502,u|0,74430,18);ba=B;B=0;if(ba&1){ba=Rb()|0;aa=Q;Yua(t);pa=ba;qa=aa;break}B=0;wa(510,v|0,S|0);aa=B;B=0;if(aa&1){aa=Rb()|0;ra=1;sa=Q;ta=aa}else{B=0;ua(163,ga|0,t|0,u|0,1242,v|0);aa=B;B=0;if(aa&1)xa=1;else{B=0;eb(503,ga|0,1240,229);B=0;xa=0}aa=Rb()|0;ba=Q;Yua(v);ra=xa;sa=ba;ta=aa}Yua(u);Yua(t);if(ra){pa=ta;qa=sa}else{za=sa;Aa=ta;break b}}else{aa=Rb()|0;pa=aa;qa=Q}while(0);zb(ga|0);za=qa;Aa=pa}else ia=72;while(0);if((ia|0)==72){R=Rb()|0;za=Q;Aa=R}k[s>>2]=27468;k[c>>2]=27488;k[S>>2]=27560;Yua(U);Ava(S);vva(c);ja=za;ka=Aa;Qb(ka|0)}while(0);la=na;ma=oa;vva(c);Qb(ma|0);return +(0.0)}function lu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0;e=r;r=r+32|0;f=e;xp(a,f,d);d=Rqa(12)|0;if(!(+p[f>>3]>=0.0))g=0;else{k[d>>2]=0;g=1}if(!(+p[f+8>>3]>=0.0))h=g;else{k[d+(g<<2)>>2]=1;h=g+1|0}if(!(+p[f+16>>3]>=0.0))i=h;else{k[d+(h<<2)>>2]=2;i=h+1|0}h=k[d>>2]|0;f=d+4|0;g=k[f>>2]|0;if(((h+3-g|0)%3|0|0)==2)j=h;else{k[d>>2]=g;k[f>>2]=h;j=g}g=i*3|0;h=Rqa(g>>>0>536870911?-1:g<<3)|0;if((i|0)<=0){k[b>>2]=h;Tqa(d);r=e;return}g=c+(j*3<<3)|0;k[h>>2]=k[g>>2];k[h+4>>2]=k[g+4>>2];k[h+8>>2]=k[g+8>>2];k[h+12>>2]=k[g+12>>2];k[h+16>>2]=k[g+16>>2];k[h+20>>2]=k[g+20>>2];if((i|0)==1){k[b>>2]=h;Tqa(d);r=e;return}else l=1;do{g=h+(l*24|0)|0;j=c+((k[d+(l<<2)>>2]|0)*3<<3)|0;k[g>>2]=k[j>>2];k[g+4>>2]=k[j+4>>2];k[g+8>>2]=k[j+8>>2];k[g+12>>2]=k[j+12>>2];k[g+16>>2]=k[j+16>>2];k[g+20>>2]=k[j+20>>2];l=l+1|0}while((l|0)!=(i|0));k[b>>2]=h;Tqa(d);r=e;return}function mu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;i=e+12|0;j=e;l=oC(k[a+16>>2]|0,d)|0;if(l){m=Qqa(64)|0;B=0;va(491,m|0);n=B;B=0;if(!(n&1)){n=k[(k[m>>2]|0)+28>>2]|0;o=ed[k[(k[a>>2]|0)+160>>2]&511](a,c)|0;Fc[n&1023](m,o);nd[k[(k[l>>2]|0)+48>>2]&1023](l,b,m);Ec[k[(k[m>>2]|0)+4>>2]&1023](m);r=e;return}e=Rb()|0;b=Q;Sqa(m);p=e;q=b;Qb(p|0)}b=g+56|0;e=g+4|0;k[g>>2]=27524;k[b>>2]=27544;B=0;wa(508,g+56|0,e|0);m=B;B=0;if(m&1){m=Rb()|0;s=Q;t=m;vva(b);Qb(t|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[b>>2]=27488;B=0;va(448,e|0);m=B;B=0;do if(m&1){l=Rb()|0;u=Q;v=l}else{k[e>>2]=27560;l=g+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,e|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;n=Q;Yua(f);Yua(l);Ava(e);u=n;v=o;break}Yua(f);B=0;o=Ia(40,g|0,74449,17)|0;n=B;B=0;a:do if((((!(n&1)?(B=0,c=ya(427,d|0)|0,a=B,B=0,!(a&1)):0)?(a=Lta(c)|0,B=0,w=Ia(40,o|0,c|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,a=Ia(40,w|0,74467,14)|0,w=B,B=0,!(w&1)):0)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,h|0,71825,72);w=B;B=0;do if(!(w&1)){B=0;eb(502,i|0,121355,13);c=B;B=0;if(c&1){c=Rb()|0;x=Q;Yua(h);y=c;z=x;break}B=0;wa(510,j|0,e|0);x=B;B=0;if(x&1){x=Rb()|0;A=x;C=Q;D=1}else{B=0;ua(163,a|0,h|0,i|0,1290,j|0);x=B;B=0;if(x&1)E=1;else{B=0;eb(503,a|0,1240,229);B=0;E=0}x=Rb()|0;c=Q;Yua(j);A=x;C=c;D=E}Yua(i);Yua(h);if(D){y=A;z=C}else{F=A;G=C;break a}}else{c=Rb()|0;y=c;z=Q}while(0);zb(a|0);F=y;G=z}else H=20;while(0);if((H|0)==20){o=Rb()|0;F=o;G=Q}k[g>>2]=27468;k[b>>2]=27488;k[e>>2]=27560;Yua(l);Ava(e);vva(b);p=F;q=G;Qb(p|0)}while(0);s=u;t=v;vva(b);Qb(t|0)}function nu(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0;f=r;r=r+32|0;g=f;xp(a,g,d);d=Rqa(12)|0;if(+p[g>>3]==e){k[d>>2]=0;h=1}else h=0;if(+p[g+8>>3]==e){k[d+(h<<2)>>2]=1;i=h+1|0}else i=h;if(+p[g+16>>3]==e){k[d+(i<<2)>>2]=2;j=i+1|0}else j=i;i=k[d>>2]|0;g=d+4|0;h=k[g>>2]|0;if(((i+3-h|0)%3|0|0)==2)l=i;else{k[d>>2]=h;k[g>>2]=i;l=h}h=j*3|0;i=Rqa(h>>>0>536870911?-1:h<<3)|0;if((j|0)<=0){k[b>>2]=i;Tqa(d);r=f;return}h=c+(l*3<<3)|0;k[i>>2]=k[h>>2];k[i+4>>2]=k[h+4>>2];k[i+8>>2]=k[h+8>>2];k[i+12>>2]=k[h+12>>2];k[i+16>>2]=k[h+16>>2];k[i+20>>2]=k[h+20>>2];if((j|0)==1){k[b>>2]=i;Tqa(d);r=f;return}else m=1;do{h=i+(m*24|0)|0;l=c+((k[d+(m<<2)>>2]|0)*3<<3)|0;k[h>>2]=k[l>>2];k[h+4>>2]=k[l+4>>2];k[h+8>>2]=k[l+8>>2];k[h+12>>2]=k[l+12>>2];k[h+16>>2]=k[l+16>>2];k[h+20>>2]=k[l+20>>2];m=m+1|0}while((m|0)!=(j|0));k[b>>2]=i;Tqa(d);r=f;return}function ou(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0.0,h=0.0,j=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0,r=0;g=+p[f>>3];if(g==0.0){h=g+1.0e-15;p[f>>3]=h;j=h}else j=g;a=f+8|0;g=+p[a>>3];if(g==0.0){h=g+1.0e-15;p[a>>3]=h;l=h}else l=g;a=f+16|0;g=+p[a>>3];if(g==0.0){h=g+1.0e-15;p[a>>3]=h;m=h}else m=g;do if(!(j>0.0&l>0.0&m>0.0))if(!(j<0.0&l<0.0&m<0.0)){g=j*l;a=!(g*m<0.0);if(g>0.0){n=m/(m-j);o=m/(m-l);q=a;r=2;break}if(l*m>0.0){n=j/(j-l);o=j/(j-m);q=a;r=0;break}if(j*m>0.0){n=l/(l-m);o=l/(l-j);q=a;r=1}else{n=0.0;o=0.0;q=a;r=0}}else{n=0.0;o=0.0;q=1;r=0}else{n=1.0;o=1.0;q=1;r=0}while(0);k[b>>2]=r;p[c>>3]=n;p[d>>3]=o;i[e>>0]=q&1;return}function pu(a,b){a=a|0;b=b|0;return k[(k[a+20>>2]|0)+(b<<2)>>2]|0}function qu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;i=k[a+20>>2]|0;if((k[i>>2]|0)==(b|0)){j=0;r=c;return j|0}if((k[i+4>>2]|0)==(b|0)){j=1;r=c;return j|0}if((k[i+8>>2]|0)==(b|0)){j=2;r=c;return j|0}j=e+56|0;c=e+4|0;k[e>>2]=27524;k[j>>2]=27544;B=0;wa(508,e+56|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;l=Q;m=b;vva(j);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[j>>2]=27488;B=0;va(448,c|0);b=B;B=0;do if(b&1){i=Rb()|0;n=Q;o=i}else{k[c>>2]=27560;i=e+36|0;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;k[i+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,c|0,d|0);a=B;B=0;if(a&1){a=Rb()|0;p=Q;Yua(d);Yua(i);Ava(c);n=p;o=a;break}Yua(d);B=0;a=Ia(40,e|0,74482,43)|0;p=B;B=0;if(!(p&1)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,f|0,71825,72);p=B;B=0;do if(!(p&1)){B=0;eb(502,g|0,74526,12);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(f);t=s;u=q;break}B=0;wa(510,h|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;v=Q;w=q;x=1}else{B=0;ua(163,a|0,f|0,g|0,1478,h|0);q=B;B=0;if(q&1)y=1;else{B=0;eb(503,a|0,1240,229);B=0;y=0}q=Rb()|0;s=Q;Yua(h);v=s;w=q;x=y}Yua(g);Yua(f);if(x){t=v;u=w}else{z=v;A=w;k[e>>2]=27468;k[j>>2]=27488;k[c>>2]=27560;Yua(i);Ava(c);vva(j);Qb(A|0)}}else{q=Rb()|0;t=Q;u=q}while(0);zb(a|0);z=t;A=u;k[e>>2]=27468;k[j>>2]=27488;k[c>>2]=27560;Yua(i);Ava(c);vva(j);Qb(A|0)}p=Rb()|0;z=Q;A=p;k[e>>2]=27468;k[j>>2]=27488;k[c>>2]=27560;Yua(i);Ava(c);vva(j);Qb(A|0)}while(0);l=n;m=o;vva(j);Qb(m|0);return 0}function ru(a){a=a|0;var b=0;if(!(k[a+20>>2]|0)){b=0;return b|0}b=qw(a,k[a+44>>2]|0)|0;return b|0}function su(a,b){a=a|0;b=b|0;return qw(a,b)|0}function tu(a){a=a|0;return 3}function uu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;d=r;r=r+16|0;e=d+8|0;f=d;k[e>>2]=0;g=a+44|0;h=qw(a,k[g>>2]|0)|0;rp(a,e,534,943);i=Rqa(h>>>0>536870911?-1:h<<3)|0;j=oC(k[a+16>>2]|0,c)|0;c=Qqa(64)|0;B=0;va(491,c|0);a=B;B=0;if(a&1){a=Rb()|0;Sqa(c);Qb(a|0)}if((h|0)>0){a=0;do{nd[k[(k[c>>2]|0)+32>>2]&1023](c,k[g>>2]|0,a);nd[k[(k[j>>2]|0)+48>>2]&1023](j,f,c);p[i+(a<<3)>>3]=+p[f>>3];a=a+1|0}while((a|0)!=(h|0))}a=k[e>>2]|0;if(!(k[b>>2]|0))l=a;else{f=k[k[b+4>>2]>>2]|0;Dc[k[(k[f>>2]|0)+16>>2]&255](f,h,a,i,0);l=k[e>>2]|0}if(!l){k[e>>2]=0;Tqa(i);m=k[c>>2]|0;n=m+4|0;o=k[n>>2]|0;Ec[o&1023](c);r=d;return}Tqa(l);k[e>>2]=0;Tqa(i);m=k[c>>2]|0;n=m+4|0;o=k[n>>2]|0;Ec[o&1023](c);r=d;return}function vu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;g=r;r=r+208|0;h=g+188|0;i=g+176|0;j=g+40|0;l=g+24|0;m=g+12|0;n=g;if(!(Tp(a,c)|0)){r=g;return}Mp(a,i,d,f);f=oC(k[a+16>>2]|0,c)|0;if((Hc[k[(k[f>>2]|0)+20>>2]&511](f)|0)==559){w$(f,b,i,e);r=g;return}g=j+56|0;e=j+4|0;k[j>>2]=27524;k[g>>2]=27544;B=0;wa(508,j+56|0,e|0);i=B;B=0;if(i&1){i=Rb()|0;o=Q;p=i;vva(g);Qb(p|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[g>>2]=27488;B=0;va(448,e|0);i=B;B=0;do if(i&1){b=Rb()|0;q=Q;s=b}else{k[e>>2]=27560;b=j+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[j+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,e|0,h|0);f=B;B=0;if(f&1){f=Rb()|0;a=Q;Yua(h);Yua(b);Ava(e);q=a;s=f;break}Yua(h);B=0;f=Ia(40,j|0,74566,6)|0;a=B;B=0;if((((!(a&1)?(B=0,a=ya(427,c|0)|0,d=B,B=0,!(d&1)):0)?(d=Lta(a)|0,B=0,t=Ia(40,f|0,a|0,d|0)|0,d=B,B=0,!(d&1)):0)?(B=0,d=Ia(40,t|0,74278,22)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,d|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,l|0,71825,72);t=B;B=0;do if(!(t&1)){B=0;eb(502,m|0,74539,26);a=B;B=0;if(a&1){a=Rb()|0;f=Q;Yua(l);u=f;v=a;break}B=0;wa(510,n|0,e|0);a=B;B=0;if(a&1){a=Rb()|0;w=Q;x=a;y=1}else{B=0;ua(163,d|0,l|0,m|0,1542,n|0);a=B;B=0;if(a&1)z=1;else{B=0;eb(503,d|0,1240,229);B=0;z=0}a=Rb()|0;f=Q;Yua(n);w=f;x=a;y=z}Yua(m);Yua(l);if(y){u=w;v=x}else{A=w;C=x;k[j>>2]=27468;k[g>>2]=27488;k[e>>2]=27560;Yua(b);Ava(e);vva(g);Qb(C|0)}}else{a=Rb()|0;u=Q;v=a}while(0);zb(d|0);A=u;C=v;k[j>>2]=27468;k[g>>2]=27488;k[e>>2]=27560;Yua(b);Ava(e);vva(g);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[j>>2]=27468;k[g>>2]=27488;k[e>>2]=27560;Yua(b);Ava(e);vva(g);Qb(C|0)}while(0);o=q;p=s;vva(g);Qb(p|0)}function wu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=r;r=r+80|0;d=c+72|0;e=c;Ko(e,k[a+24>>2]|0,3,0);f=Rqa(48)|0;g=d+4|0;_t(a,d,g);a=e+((k[d>>2]|0)*24|0)|0;k[f>>2]=k[a>>2];k[f+4>>2]=k[a+4>>2];k[f+8>>2]=k[a+8>>2];k[f+12>>2]=k[a+12>>2];a=f+24|0;d=e+((k[g>>2]|0)*24|0)|0;k[a>>2]=k[d>>2];k[a+4>>2]=k[d+4>>2];k[a+8>>2]=k[d+8>>2];k[a+12>>2]=k[d+12>>2];k[b>>2]=f;r=c;return}function xu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=r;r=r+80|0;d=c+72|0;e=c;Ko(e,k[a+24>>2]|0,3,0);f=Rqa(48)|0;g=d+4|0;$t(a,d,g);a=e+((k[d>>2]|0)*24|0)|0;k[f>>2]=k[a>>2];k[f+4>>2]=k[a+4>>2];k[f+8>>2]=k[a+8>>2];k[f+12>>2]=k[a+12>>2];a=f+24|0;d=e+((k[g>>2]|0)*24|0)|0;k[a>>2]=k[d>>2];k[a+4>>2]=k[d+4>>2];k[a+8>>2]=k[d+8>>2];k[a+12>>2]=k[d+12>>2];k[b>>2]=f;r=c;return}function yu(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0.0,l=0.0,m=0,n=0.0,o=0.0,q=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;b=r;r=r+256|0;c=b;d=b+248|0;e=b+244|0;f=b+96|0;g=b+232|0;h=b+84|0;i=b+72|0;k[e>>2]=0;if(!($p(a)|0)){j=0.0;r=b;return +j}cp(a,d,298);switch(k[d>>2]|0){case 300:case 302:{Uo(a,e);l=+id[k[(k[a>>2]|0)+136>>2]&63](a,k[e>>2]|0);m=k[e>>2]|0;if(m)Tqa(m);k[e>>2]=0;Ko(c,k[a+24>>2]|0,3,0);n=+p[c>>3];o=+p[c+8>>3];q=+p[c+24>>3];s=+p[c+32>>3];t=+p[c+48>>3];u=+p[c+56>>3];j=l*((o*t+(n*s+(q*u-s*t)-o*q)-n*u)*.5);r=b;return +j}default:{}}b=f+56|0;a=f+4|0;k[f>>2]=27524;k[b>>2]=27544;B=0;wa(508,f+56|0,a|0);e=B;B=0;if(e&1){e=Rb()|0;v=Q;w=e;vva(b);Qb(w|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[b>>2]=27488;B=0;va(448,a|0);e=B;B=0;do if(e&1){m=Rb()|0;x=Q;y=m}else{k[a>>2]=27560;m=f+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(c);Yua(m);Ava(a);x=A;y=z;break}Yua(c);B=0;z=Ia(40,f|0,144639,5)|0;A=B;B=0;if((((!(A&1)?(B=0,A=ya(427,k[d>>2]|0)|0,C=B,B=0,!(C&1)):0)?(C=Lta(A)|0,B=0,D=Ia(40,z|0,A|0,C|0)|0,C=B,B=0,!(C&1)):0)?(B=0,C=Ia(40,D|0,146481,18)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,C|0,0)|0,C=B,B=0,!(C&1)):0){C=Ab(20)|0;B=0;eb(502,g|0,71825,72);D=B;B=0;do if(!(D&1)){B=0;eb(502,h|0,103033,12);A=B;B=0;if(A&1){A=Rb()|0;z=Q;Yua(g);E=z;F=A;break}B=0;wa(510,i|0,a|0);A=B;B=0;if(A&1){A=Rb()|0;G=Q;H=A;I=1}else{B=0;ua(163,C|0,g|0,h|0,1593,i|0);A=B;B=0;if(A&1)J=1;else{B=0;eb(503,C|0,1240,229);B=0;J=0}A=Rb()|0;z=Q;Yua(i);G=z;H=A;I=J}Yua(h);Yua(g);if(I){E=G;F=H}else{K=G;L=H;k[f>>2]=27468;k[b>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(b);Qb(L|0)}}else{A=Rb()|0;E=Q;F=A}while(0);zb(C|0);K=E;L=F;k[f>>2]=27468;k[b>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(b);Qb(L|0)}D=Rb()|0;K=Q;L=D;k[f>>2]=27468;k[b>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(b);Qb(L|0)}while(0);v=x;w=y;vva(b);Qb(w|0);return +(0.0)}function zu(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0.0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;b=r;r=r+224|0;c=b+200|0;d=b;e=b+64|0;f=b+48|0;g=b+36|0;h=b+24|0;xp(a,d,287);i=+p[d>>3]+ +p[d+8>>3]+ +p[d+16>>3];if(!(i==3.0)){r=b;return i>1.0|0}b=e+56|0;d=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,d|0);a=B;B=0;if(a&1){a=Rb()|0;j=Q;l=a;vva(b);Qb(l|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,d|0);a=B;B=0;do if(a&1){m=Rb()|0;n=Q;o=m}else{k[d>>2]=27560;m=e+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,d|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(c);Yua(m);Ava(d);n=s;o=q;break}Yua(c);B=0;q=Ia(40,e|0,72316,37)|0;s=B;B=0;if(!(s&1)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,f|0,71825,72);s=B;B=0;do if(!(s&1)){B=0;eb(502,g|0,72354,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(f);v=u;w=t;break}B=0;wa(510,h|0,d|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,f|0,g|0,1614,h|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(h);x=u;y=t;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[b>>2]=27488;k[d>>2]=27560;Yua(m);Ava(d);vva(b);Qb(D|0)}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w;k[e>>2]=27468;k[b>>2]=27488;k[d>>2]=27560;Yua(m);Ava(d);vva(b);Qb(D|0)}s=Rb()|0;C=Q;D=s;k[e>>2]=27468;k[b>>2]=27488;k[d>>2]=27560;Yua(m);Ava(d);vva(b);Qb(D|0)}while(0);j=n;l=o;vva(b);Qb(l|0);return 0}function Au(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0.0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;b=r;r=r+224|0;c=b+200|0;d=b;e=b+64|0;f=b+48|0;g=b+36|0;h=b+24|0;xp(a,d,288);i=+p[d>>3]+ +p[d+8>>3]+ +p[d+16>>3];if(!(i==3.0)){r=b;return i>1.0|0}b=e+56|0;d=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,d|0);a=B;B=0;if(a&1){a=Rb()|0;j=Q;l=a;vva(b);Qb(l|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,d|0);a=B;B=0;do if(a&1){m=Rb()|0;n=Q;o=m}else{k[d>>2]=27560;m=e+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,d|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(c);Yua(m);Ava(d);n=s;o=q;break}Yua(c);B=0;q=Ia(40,e|0,72368,41)|0;s=B;B=0;if(!(s&1)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,f|0,71825,72);s=B;B=0;do if(!(s&1)){B=0;eb(502,g|0,72410,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(f);v=u;w=t;break}B=0;wa(510,h|0,d|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,f|0,g|0,1635,h|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(h);x=u;y=t;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[b>>2]=27488;k[d>>2]=27560;Yua(m);Ava(d);vva(b);Qb(D|0)}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w;k[e>>2]=27468;k[b>>2]=27488;k[d>>2]=27560;Yua(m);Ava(d);vva(b);Qb(D|0)}s=Rb()|0;C=Q;D=s;k[e>>2]=27468;k[b>>2]=27488;k[d>>2]=27560;Yua(m);Ava(d);vva(b);Qb(D|0)}while(0);j=n;l=o;vva(b);Qb(l|0);return 0}function Bu(a){a=a|0;var b=0.0,c=0.0;if(!($p(a)|0)){b=0.0;return +b}c=+WJ(k[a+32>>2]|0,265);b=c*+Zc[k[(k[a>>2]|0)+204>>2]&255](a);return +b}function Cu(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0.0,h=0.0,i=0.0,j=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0;b=r;r=r+96|0;c=b+16|0;d=b+8|0;e=b;f=b+88|0;if(!($p(a)|0)){g=0.0;r=b;return +g}cO(k[a+36>>2]|0,f,298);Ko(c,k[a+24>>2]|0,3,0);h=+p[c>>3];i=+p[c+8>>3];j=+p[c+24>>3];l=+p[c+32>>3];m=+p[c+48>>3];n=+p[c+56>>3];o=(i*m+(h*l+(j*n-l*m)-i*j)-h*n)*.5;c=a+16|0;a=oC(k[c>>2]|0,339)|0;q=oC(k[c>>2]|0,64)|0;Fc[k[(k[a>>2]|0)+64>>2]&1023](a,d);Fc[k[(k[q>>2]|0)+64>>2]&1023](q,e);g=(k[f>>2]|0)==301?o:o*(+p[d>>3]-+p[e>>3]);r=b;return +g}function Du(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0.0,h=0,i=0.0,j=0.0,l=0.0,m=0.0,n=0.0,o=0;b=r;r=r+96|0;c=b+88|0;d=b+80|0;e=b+72|0;f=b;if(!($p(a)|0)){g=0.0;r=b;return +g}if(_p(a)|0){g=0.0;r=b;return +g}h=a+32|0;i=+WJ(k[h>>2]|0,265);j=+WJ(k[h>>2]|0,266);Ko(f,k[a+24>>2]|0,3,0);l=+p[f>>3];m=+p[f+8>>3];n=+$(+((l-+p[f+48>>3])*(+p[f+32>>3]-m)-(l-+p[f+24>>3])*(+p[f+56>>3]-m)))*.5;f=a+16|0;a=oC(k[f>>2]|0,339)|0;h=oC(k[f>>2]|0,64)|0;o=oC(k[f>>2]|0,63)|0;Fc[k[(k[a>>2]|0)+64>>2]&1023](a,c);Fc[k[(k[h>>2]|0)+64>>2]&1023](h,d);Fc[k[(k[o>>2]|0)+64>>2]&1023](o,e);m=+p[c>>3]-+p[d>>3];g=n*(m+ +KY(j/i*+p[e>>3],0.0));r=b;return +g}function Eu(a,b,c){a=a|0;b=+b;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;d=r;r=r+208|0;e=d+184|0;f=d+180|0;g=d+176|0;h=d+40|0;i=d+24|0;j=d+12|0;l=d;k[g>>2]=0;m=a+36|0;cO(k[m>>2]|0,f,198);hO(k[m>>2]|0,g,0,176);a:do if((k[f>>2]|0)>0){m=a+16|0;b:do if(c){n=0;while(1){o=oC(k[m>>2]|0,k[(k[g>>2]|0)+(n<<2)>>2]|0)|0;if((Hc[k[(k[o>>2]|0)+20>>2]&511](o)|0)!=559){p=n;break b}F$(o,b);l$(o);s$(o);n=n+1|0;if((n|0)>=(k[f>>2]|0))break a}}else{n=0;while(1){o=oC(k[m>>2]|0,k[(k[g>>2]|0)+(n<<2)>>2]|0)|0;if((Hc[k[(k[o>>2]|0)+20>>2]&511](o)|0)!=559){p=n;break b}F$(o,b);l$(o);n=n+1|0;if((n|0)>=(k[f>>2]|0))break a}}while(0);m=h+56|0;n=h+4|0;k[h>>2]=27524;k[m>>2]=27544;B=0;wa(508,h+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;q=Q;s=o;vva(m);Qb(s|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){t=Rb()|0;u=Q;v=t}else{k[n>>2]=27560;t=h+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[h+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,n|0,e|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(e);Yua(t);Ava(n);u=x;v=w;break}Yua(e);B=0;w=Ia(40,h|0,74566,6)|0;x=B;B=0;if((((!(x&1)?(B=0,x=ya(427,k[(k[g>>2]|0)+(p<<2)>>2]|0)|0,y=B,B=0,!(y&1)):0)?(y=Lta(x)|0,B=0,z=Ia(40,w|0,x|0,y|0)|0,y=B,B=0,!(y&1)):0)?(B=0,y=Ia(40,z|0,74278,22)|0,z=B,B=0,!(z&1)):0)?(B=0,Xa(239,y|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,i|0,71825,72);z=B;B=0;do if(!(z&1)){B=0;eb(502,j|0,74573,18);x=B;B=0;if(x&1){x=Rb()|0;w=Q;Yua(i);A=w;C=x;break}B=0;wa(510,l|0,n|0);x=B;B=0;if(x&1){x=Rb()|0;D=Q;E=x;F=1}else{B=0;ua(163,y|0,i|0,j|0,1772,l|0);x=B;B=0;if(x&1)G=1;else{B=0;eb(503,y|0,1240,229);B=0;G=0}x=Rb()|0;w=Q;Yua(l);D=w;E=x;F=G}Yua(j);Yua(i);if(F){A=D;C=E}else{H=D;I=E;k[h>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);Qb(I|0)}}else{x=Rb()|0;A=Q;C=x}while(0);zb(y|0);H=A;I=C;k[h>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);Qb(I|0)}z=Rb()|0;H=Q;I=z;k[h>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);Qb(I|0)}while(0);q=u;s=v;vva(m);Qb(s|0)}while(0);s=k[g>>2]|0;if(!s){r=d;return}Tqa(s);r=d;return}function Fu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=a+16|0;a=oC(k[j>>2]|0,b)|0;if(a){l=Hc[k[(k[a>>2]|0)+24>>2]&511](a)|0;Fc[k[(k[l>>2]|0)+80>>2]&1023](l,c);mC(k[j>>2]|0,l)|0;r=d;return}d=f+56|0;l=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,l|0);j=B;B=0;if(j&1){j=Rb()|0;m=Q;n=j;vva(d);Qb(n|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,l|0);j=B;B=0;do if(j&1){c=Rb()|0;o=Q;p=c}else{k[l>>2]=27560;c=f+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,l|0,e|0);a=B;B=0;if(a&1){a=Rb()|0;q=Q;Yua(e);Yua(c);Ava(l);o=q;p=a;break}Yua(e);B=0;a=Ia(40,f|0,74669,36)|0;q=B;B=0;if(((!(q&1)?(B=0,q=ya(427,b|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,a|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,g|0,71825,72);s=B;B=0;do if(!(s&1)){B=0;eb(502,h|0,74624,23);q=B;B=0;if(q&1){q=Rb()|0;a=Q;Yua(g);u=a;v=q;break}B=0;wa(510,i|0,l|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,t|0,g|0,h|0,1793,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,t|0,1240,229);B=0;z=0}q=Rb()|0;a=Q;Yua(i);w=a;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[d>>2]=27488;k[l>>2]=27560;Yua(c);Ava(l);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(t|0);A=u;C=v;k[f>>2]=27468;k[d>>2]=27488;k[l>>2]=27560;Yua(c);Ava(l);vva(d);Qb(C|0)}s=Rb()|0;A=Q;C=s;k[f>>2]=27468;k[d>>2]=27488;k[l>>2]=27560;Yua(c);Ava(l);vva(d);Qb(C|0)}while(0);m=o;n=p;vva(d);Qb(n|0)}function Gu(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=oC(k[a+16>>2]|0,b)|0;if(j){Cc[k[(k[j>>2]|0)+120>>2]&63](j,c);r=d;return}d=f+56|0;j=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,j|0);a=B;B=0;if(a&1){a=Rb()|0;l=Q;m=a;vva(d);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,j|0);a=B;B=0;do if(a&1){n=Rb()|0;o=Q;p=n}else{k[j>>2]=27560;n=f+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,j|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);Yua(n);Ava(j);o=s;p=q;break}Yua(e);B=0;q=Ia(40,f|0,74669,36)|0;s=B;B=0;if(((!(s&1)?(B=0,s=ya(427,b|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,g|0,71825,72);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,74706,10);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(g);v=q;w=s;break}B=0;wa(510,i|0,j|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,u|0,g|0,h|0,1809,i|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,u|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(i);x=q;y=s;z=A}Yua(h);Yua(g);if(z){v=x;w=y}else{C=x;D=y;k[f>>2]=27468;k[d>>2]=27488;k[j>>2]=27560;Yua(n);Ava(j);vva(d);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(u|0);C=v;D=w;k[f>>2]=27468;k[d>>2]=27488;k[j>>2]=27560;Yua(n);Ava(j);vva(d);Qb(D|0)}t=Rb()|0;C=Q;D=t;k[f>>2]=27468;k[d>>2]=27488;k[j>>2]=27560;Yua(n);Ava(j);vva(d);Qb(D|0)}while(0);l=o;m=p;vva(d);Qb(m|0)}
+function b8(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,125951,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,245,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function c8(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;d=a+180|0;e=a+176|0;f=a+40|0;g=a+24|0;h=a+12|0;i=a;cp(c,e,298);switch(k[e>>2]|0){case 300:{nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,671);r=a;return}case 302:{nd[k[(k[c>>2]|0)+228>>2]&1023](c,b,671);r=a;return}default:{a=f+56|0;b=f+4|0;k[f>>2]=27524;k[a>>2]=27544;B=0;wa(508,f+56|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;j=Q;l=c;vva(a);Qb(l|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[a>>2]=27488;B=0;va(448,b|0);c=B;B=0;do if(c&1){m=Rb()|0;n=Q;o=m}else{k[b>>2]=27560;m=f+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(b);n=q;o=p;break}Yua(d);B=0;p=Ia(40,f|0,144639,5)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[e>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,125951,83);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,137199,23);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,258,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(a);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(a);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(a);Qb(C|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}}}function d8(a,b){a=a|0;b=b|0;return}function e8(a){a=a|0;Sqa(a);return}function f8(a,b,c){a=a|0;b=b|0;c=c|0;return}function g8(a,b,c){a=a|0;b=b|0;c=c|0;return}function h8(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;a=r;r=r+32|0;d=a+16|0;e=a+8|0;f=a;switch(k[c+40>>2]|0){case 302:{k[f>>2]=136615;k[f+4>>2]=136636;Ska(c,2,f);break}case 301:{k[e>>2]=136615;Ska(c,1,e);break}default:{}}hoa(b,c,493,738,534);k[d>>2]=136615;k[d+4>>2]=136636;Lka(c,2,d);r=a;return}function i8(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function j8(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0;a=c+56|0;f=k[a>>2]|0;if((f|0)>0){g=c+32|0;h=f;f=0;j=0;while(1){if(!(i[(k[g>>2]|0)+j>>0]|0)){l=h;m=f}else{n=qh(b,f)|0;Uc[k[(k[n>>2]|0)+480>>2]&63](n,j,c,d,e,738);l=k[a>>2]|0;m=f+1|0}j=j+1|0;if((j|0)>=(l|0))break;else{h=l;f=m}}}Zka(c,b,134925,339);Zka(c,b,134945,64);Yka(c,b,137955,999,0.0);Zka(c,b,137867,206);switch(k[c+40>>2]|0){case 300:case 303:return;default:{}}Zka(c,b,136615,287);Zka(c,b,136636,288);return}function k8(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function l8(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,126098,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,56,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function m8(a,b){a=a|0;b=b|0;return 0}function n8(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,126098,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,63,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function o8(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;a=r;r=r+192|0;c=a+136|0;d=a+188|0;e=a;f=a+176|0;g=a+164|0;h=a+148|0;i=a+160|0;cp(b,d,298);a:do switch(k[d>>2]|0){case 300:{j=b;break}case 301:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){j=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{l=0;r=a;return l|0}break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){j=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{l=0;r=a;return l|0}break}default:{m=e+56|0;n=e+4|0;k[e>>2]=27524;k[m>>2]=27544;B=0;wa(508,e+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;q=Q;s=o;vva(m);Qb(s|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){t=Rb()|0;u=Q;v=t}else{k[n>>2]=27560;t=e+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,n|0,c|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(c);Yua(t);Ava(n);u=x;v=w;break}Yua(c);B=0;w=Ia(40,e|0,144639,5)|0;x=B;B=0;if((((!(x&1)?(B=0,x=ya(427,k[d>>2]|0)|0,y=B,B=0,!(y&1)):0)?(y=Lta(x)|0,B=0,z=Ia(40,w|0,x|0,y|0)|0,y=B,B=0,!(y&1)):0)?(B=0,y=Ia(40,z|0,146481,18)|0,z=B,B=0,!(z&1)):0)?(B=0,Xa(239,y|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,f|0,126098,84);z=B;B=0;do if(!(z&1)){B=0;eb(502,g|0,144189,13);x=B;B=0;if(x&1){x=Rb()|0;w=Q;Yua(f);A=w;C=x;break}B=0;wa(510,h|0,n|0);x=B;B=0;if(x&1){x=Rb()|0;D=Q;E=x;F=1}else{B=0;ua(163,y|0,f|0,g|0,85,h|0);x=B;B=0;if(x&1)G=1;else{B=0;eb(503,y|0,1240,229);B=0;G=0}x=Rb()|0;w=Q;Yua(h);D=w;E=x;F=G}Yua(g);Yua(f);if(F){A=D;C=E}else{H=D;I=E;k[e>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);Qb(I|0)}}else{x=Rb()|0;A=Q;C=x}while(0);zb(y|0);H=A;I=C;k[e>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);Qb(I|0)}z=Rb()|0;H=Q;I=z;k[e>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);Qb(I|0)}while(0);q=u;s=v;vva(m);Qb(s|0)}}while(0);k[i>>2]=0;s=Hc[k[(k[j>>2]|0)+164>>2]&511](j)|0;v=gq(j,534)|0;u=Rqa(s>>>0>536870911?-1:s<<3)|0;Uo(j,i);q=ed[k[(k[j>>2]|0)+308>>2]&511](j,2)|0;I=Hc[k[(k[q>>2]|0)+8>>2]&511](q)|0;if((I|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0)){H=q+8|0;C=v+12|0;A=I;do{Fc[k[(k[q>>2]|0)+24>>2]&1023](q,A);rd[k[(k[j>>2]|0)+260>>2]&511](j,e,k[i>>2]|0,q);nd[k[(k[j>>2]|0)+336>>2]&1023](j,u,q);p[c>>3]=+p[H>>3]*+p[e>>3];ZX(u,1,s,1,c,1,1,0,u,1,s,0,k[C>>2]|0,1)|0;A=A+1|0}while((A|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0))}A=k[i>>2]|0;if(A)Tqa(A);k[i>>2]=0;Tqa(u);Ec[k[(k[q>>2]|0)+4>>2]&1023](q);if((k[d>>2]|0)!=300?(ap(j),(j|0)!=0):0)Ec[k[(k[j>>2]|0)+4>>2]&1023](j);l=v;r=a;return l|0}function p8(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;a=r;r=r+224|0;c=a+204|0;d=a+200|0;e=a+24|0;f=a+188|0;g=a+176|0;h=a+164|0;i=a+16|0;j=a;l=a+160|0;cp(b,d,298);a:do switch(k[d>>2]|0){case 300:{m=b;break}case 301:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){m=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{n=0;r=a;return n|0}break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){m=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{n=0;r=a;return n|0}break}default:{o=e+56|0;q=e+4|0;k[e>>2]=27524;k[o>>2]=27544;B=0;wa(508,e+56|0,q|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;u=s;vva(o);Qb(u|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[o>>2]=27488;B=0;va(448,q|0);s=B;B=0;do if(s&1){v=Rb()|0;w=Q;x=v}else{k[q>>2]=27560;v=e+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,q|0,c|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(c);Yua(v);Ava(q);w=z;x=y;break}Yua(c);B=0;y=Ia(40,e|0,144639,5)|0;z=B;B=0;if((((!(z&1)?(B=0,z=ya(427,k[d>>2]|0)|0,A=B,B=0,!(A&1)):0)?(A=Lta(z)|0,B=0,C=Ia(40,y|0,z|0,A|0)|0,A=B,B=0,!(A&1)):0)?(B=0,A=Ia(40,C|0,146481,18)|0,C=B,B=0,!(C&1)):0)?(B=0,Xa(239,A|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,f|0,126098,84);C=B;B=0;do if(!(C&1)){B=0;eb(502,g|0,144203,13);z=B;B=0;if(z&1){z=Rb()|0;y=Q;Yua(f);D=y;E=z;break}B=0;wa(510,h|0,q|0);z=B;B=0;if(z&1){z=Rb()|0;F=Q;G=z;H=1}else{B=0;ua(163,A|0,f|0,g|0,144,h|0);z=B;B=0;if(z&1)I=1;else{B=0;eb(503,A|0,1240,229);B=0;I=0}z=Rb()|0;y=Q;Yua(h);F=y;G=z;H=I}Yua(g);Yua(f);if(H){D=F;E=G}else{J=F;K=G;k[e>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(o);Qb(K|0)}}else{z=Rb()|0;D=Q;E=z}while(0);zb(A|0);J=D;K=E;k[e>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(o);Qb(K|0)}C=Rb()|0;J=Q;K=C;k[e>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(o);Qb(K|0)}while(0);t=w;u=x;vva(o);Qb(u|0)}}while(0);k[l>>2]=0;u=Hc[k[(k[m>>2]|0)+164>>2]&511](m)|0;x=iq(m,534)|0;w=Rqa(u>>>0>536870911?-1:u<<3)|0;Uo(m,l);cp(m,c,576);t=k[c>>2]|0;switch(t|0){case 664:{L=0;M=Wo(m,339)|0;break}case 665:{L=0;M=Wo(m,339)|0;break}case 642:{L=0;M=Wo(m,64)|0;break}case 643:{L=0;M=Wo(m,64)|0;break}case 993:{L=0;M=Wo(m,206)|0;break}case 994:{L=0;M=Wo(m,206)|0;break}default:{L=Wo(b,t)|0;M=0}}t=ed[k[(k[m>>2]|0)+308>>2]&511](m,2)|0;b=Hc[k[(k[t>>2]|0)+8>>2]&511](t)|0;b:do if((b|0)<(Hc[k[(k[t>>2]|0)+12>>2]&511](t)|0)){K=j+8|0;J=(u|0)>0;E=t+8|0;D=x+4|0;if(!M){G=b;while(1){Fc[k[(k[t>>2]|0)+24>>2]&1023](t,G);rd[k[(k[m>>2]|0)+260>>2]&511](m,e,k[l>>2]|0,t);nd[k[(k[m>>2]|0)+336>>2]&1023](m,w,t);switch(k[c>>2]|0){case 993:case 642:case 664:{p[i>>3]=+p[j>>3];break}case 994:case 643:case 665:{p[i>>3]=+p[K>>3];break}default:nd[k[(k[L>>2]|0)+48>>2]&1023](L,i,t)}if(J){F=k[D>>2]|0;H=0;do{f=F+(H<<3)|0;p[f>>3]=+p[e>>3]*+p[E>>3]*+p[i>>3]*+p[w+(H<<3)>>3]+ +p[f>>3];H=H+1|0}while((H|0)!=(u|0))}G=G+1|0;if((G|0)>=(Hc[k[(k[t>>2]|0)+12>>2]&511](t)|0))break b}}else{G=b;while(1){Fc[k[(k[t>>2]|0)+24>>2]&1023](t,G);rd[k[(k[m>>2]|0)+260>>2]&511](m,e,k[l>>2]|0,t);nd[k[(k[m>>2]|0)+336>>2]&1023](m,w,t);rd[k[(k[M>>2]|0)+60>>2]&511](M,j,k[l>>2]|0,t);switch(k[c>>2]|0){case 993:case 642:case 664:{p[i>>3]=+p[j>>3];break}case 994:case 643:case 665:{p[i>>3]=+p[K>>3];break}default:nd[k[(k[L>>2]|0)+48>>2]&1023](L,i,t)}if(J){o=k[D>>2]|0;H=0;do{F=o+(H<<3)|0;p[F>>3]=+p[e>>3]*+p[E>>3]*+p[i>>3]*+p[w+(H<<3)>>3]+ +p[F>>3];H=H+1|0}while((H|0)!=(u|0))}G=G+1|0;if((G|0)>=(Hc[k[(k[t>>2]|0)+12>>2]&511](t)|0))break b}}}while(0);u=k[l>>2]|0;if(u)Tqa(u);k[l>>2]=0;Tqa(w);Ec[k[(k[t>>2]|0)+4>>2]&1023](t);if((k[d>>2]|0)!=300?(ap(m),(m|0)!=0):0)Ec[k[(k[m>>2]|0)+4>>2]&1023](m);n=x;r=a;return n|0}function q8(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,126098,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,200,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function r8(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,126098,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,203,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function s8(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+208|0;d=a+188|0;e=a+184|0;f=a+180|0;g=a+176|0;h=a+40|0;i=a+24|0;j=a+12|0;l=a;cp(c,e,576);cp(c,f,298);cp(c,g,296);switch(k[f>>2]|0){case 300:{nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,k[e>>2]|0);r=a;return}case 301:{nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,k[e>>2]|0);r=a;return}case 302:{m=k[c>>2]|0;if((k[g>>2]|0)==623){nd[k[m+232>>2]&1023](c,b,k[e>>2]|0);r=a;return}else{nd[k[m+228>>2]&1023](c,b,k[e>>2]|0);r=a;return}break}default:{a=h+56|0;e=h+4|0;k[h>>2]=27524;k[a>>2]=27544;B=0;wa(508,h+56|0,e|0);b=B;B=0;if(b&1){b=Rb()|0;n=Q;o=b;vva(a);Qb(o|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[a>>2]=27488;B=0;va(448,e|0);b=B;B=0;do if(b&1){c=Rb()|0;p=Q;q=c}else{k[e>>2]=27560;c=h+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[h+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,e|0,d|0);m=B;B=0;if(m&1){m=Rb()|0;g=Q;Yua(d);Yua(c);Ava(e);p=g;q=m;break}Yua(d);B=0;m=Ia(40,h|0,144639,5)|0;g=B;B=0;if((((!(g&1)?(B=0,g=ya(427,k[f>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(g)|0,B=0,t=Ia(40,m|0,g|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,i|0,126098,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,j|0,137199,23);g=B;B=0;if(g&1){g=Rb()|0;m=Q;Yua(i);u=m;v=g;break}B=0;wa(510,l|0,e|0);g=B;B=0;if(g&1){g=Rb()|0;w=Q;x=g;y=1}else{B=0;ua(163,s|0,i|0,j|0,225,l|0);g=B;B=0;if(g&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}g=Rb()|0;m=Q;Yua(l);w=m;x=g;y=z}Yua(j);Yua(i);if(y){u=w;v=x}else{A=w;C=x;k[h>>2]=27468;k[a>>2]=27488;k[e>>2]=27560;Yua(c);Ava(e);vva(a);Qb(C|0)}}else{g=Rb()|0;u=Q;v=g}while(0);zb(s|0);A=u;C=v;k[h>>2]=27468;k[a>>2]=27488;k[e>>2]=27560;Yua(c);Ava(e);vva(a);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[h>>2]=27468;k[a>>2]=27488;k[e>>2]=27560;Yua(c);Ava(e);vva(a);Qb(C|0)}while(0);n=p;o=q;vva(a);Qb(o|0)}}}function t8(a,b){a=a|0;b=b|0;return}function u8(a){a=a|0;Sqa(a);return}function v8(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a=r;r=r+16|0;d=a+4|0;e=a;Fka(c,d,126209);Fka(c,e,126233);if((k[e>>2]|0)==3){r=a;return}qoa(b,c,126257,496,k[d>>2]|0,0);if((k[e>>2]|0)!=4){r=a;return}Bma(b,496);r=a;return}function w8(a,b,c){a=a|0;b=b|0;c=c|0;return}function x8(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=r;r=r+16|0;d=a;Fka(c,d,126209);hoa(b,c,496,k[d>>2]|0,534);r=a;return}function y8(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function z8(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;a=r;r=r+32|0;f=a+8|0;g=a;h=a+12|0;Fka(c,h,126209);zka(c,a+16|0,134882);k[g>>2]=129145;Ska(c,1,g);g=c+56|0;j=k[g>>2]|0;if((j|0)>0){l=c+32|0;m=j;j=0;n=0;while(1){if(!(i[(k[l>>2]|0)+n>>0]|0)){o=m;p=j}else{q=qh(b,j)|0;Uc[k[(k[q>>2]|0)+480>>2]&63](q,n,c,d,e,k[h>>2]|0);o=k[g>>2]|0;p=j+1|0}n=n+1|0;if((n|0)>=(o|0))break;else{m=o;j=p}}}k[f>>2]=129145;Lka(c,1,f);Zka(c,b,135923,674);Zka(c,b,135944,677);if((k[c+40>>2]|0)!=302){Zka(c,b,126277,225);Zka(c,b,137867,206);Zka(c,b,135039,653);r=a;return}Zka(c,b,135096,679);Zka(c,b,126277,225);Zka(c,b,137867,206);Zka(c,b,135039,653);r=a;return}function A8(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;e=r;r=r+16|0;d=e+8|0;a=e+4|0;f=e;k[a>>2]=0;YN(b,Ika(c,128031,228)|0);YN(b,Ika(c,126233,237)|0);YN(b,Ika(c,126289,238)|0);YN(b,Ika(c,126307,240)|0);YN(b,Ika(c,126209,233)|0);Hka(c,a,d,126328);g=Qqa(12)|0;B=0;eb(518,g|0,242,k[d>>2]|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;Sqa(g);j=i;l=h;Qb(l|0)}YN(b,g);g=k[d>>2]|0;do if(!g)m=0;else{h=Qqa(16)|0;B=0;ib(294,h|0,243,k[a>>2]|0,g|0);i=B;B=0;if(!(i&1)){YN(b,h);m=k[d>>2]|0;break}i=Rb()|0;n=Q;Sqa(h);j=n;l=i;Qb(l|0)}while(0);Nka(c,a,m,126328);Fka(c,f,128031);m=k[f>>2]|0;if(!m){YN(b,Ika(c,128061,235)|0);YN(b,Ika(c,128045,236)|0);r=e;return}if((m|0)<=0){r=e;return}YN(b,Ika(c,126356,229)|0);YN(b,Ika(c,126369,230)|0);YN(b,Ika(c,126382,231)|0);YN(b,Ika(c,126395,232)|0);YN(b,Ika(c,128061,235)|0);YN(b,Ika(c,128045,236)|0);YN(b,Ika(c,126408,234)|0);YN(b,Ika(c,126426,241)|0);r=e;return}function B8(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,126449,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,112,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function C8(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0;a=r;r=r+80|0;c=a+56|0;d=a+48|0;e=a+40|0;f=a+32|0;g=a+24|0;h=a+16|0;i=a+8|0;j=a;l=a+64|0;m=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;n=Rqa(m>>>0>536870911?-1:m<<3)|0;pp(b,c,229);pp(b,d,235);cp(b,l,298);Vo(b);o=Wo(b,725)|0;q=Wo(b,726)|0;s=Wo(b,728)|0;t=Wo(b,217)|0;if((k[l>>2]|0)==300){l=Wo(b,227)|0;u=Wo(b,215)|0;v=l}else{l=Wo(b,225)|0;u=Wo(b,214)|0;v=l}l=Hc[k[(k[b>>2]|0)+304>>2]&511](b)|0;if((m|0)>0){w=0;do{x=k[(k[l>>2]|0)+32>>2]|0;y=Hc[k[(k[b>>2]|0)+128>>2]&511](b)|0;nd[x&1023](l,y,w);nd[k[(k[o>>2]|0)+48>>2]&1023](o,h,l);nd[k[(k[q>>2]|0)+48>>2]&1023](q,j,l);nd[k[(k[s>>2]|0)+48>>2]&1023](s,i,l);nd[k[(k[u>>2]|0)+48>>2]&1023](u,f,l);nd[k[(k[t>>2]|0)+48>>2]&1023](t,g,l);nd[k[(k[v>>2]|0)+48>>2]&1023](v,e,l);z=+p[h>>3];A=+p[i>>3];B=(z+A)*.5;C=(z-A)*.5;A=+p[j>>3];z=+aa(+(A*A+C*C));C=B+z;A=B-z;y=+$(+A)>+$(+C);z=y?C:A;B=y?A:C;C=+aa(+(z*z+(B*B-B*z)))*.7071067811865475;z=+p[g>>3];B=+ba(+(+p[d>>3]/+p[f>>3]),+z);if(C>B){A=+ba(+(B/C),+(1.0/z));z=1.0-A*+ja(+(-(C-B)/(+p[c>>3]-B)));D=z-+p[e>>3]}else D=0.0;p[n+(w<<3)>>3]=D;w=w+1|0}while((w|0)!=(m|0))}m=k[b>>2]|0;w=k[m+48>>2]|0;e=Hc[k[m+128>>2]&511](b)|0;rd[w&511](b,226,n,e);Tqa(n);if(!l){r=a;return}Ec[k[(k[l>>2]|0)+4>>2]&1023](l);r=a;return}function D8(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ca=0,da=0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0.0,ja=0.0,ka=0.0,la=0.0,ma=0.0,na=0.0,oa=0.0,pa=0.0,qa=0.0,ra=0.0,sa=0.0,ta=0.0,xa=0.0,ya=0.0,za=0.0,Aa=0.0,Ba=0,Ca=0.0;a=r;r=r+304|0;c=a+288|0;d=a+96|0;e=a+88|0;f=a+80|0;g=a+72|0;h=a+64|0;i=a+56|0;j=a+48|0;l=a+40|0;m=a+32|0;n=a+24|0;o=a+16|0;q=a+8|0;s=a;t=a+284|0;u=a+280|0;v=a+144|0;w=a+128|0;x=a+116|0;y=a+104|0;z=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;A=Rqa(z>>>0>536870911?-1:z<<3)|0;pp(b,d,229);pp(b,e,230);pp(b,f,231);pp(b,g,234);pp(b,h,235);cp(b,u,298);switch(k[u>>2]|0){case 300:{C=2;break}case 302:{C=3;break}default:{D=v+56|0;E=v+4|0;k[v>>2]=27524;k[D>>2]=27544;B=0;wa(508,v+56|0,E|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;H=F;vva(D);Qb(H|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[D>>2]=27488;B=0;va(448,E|0);F=B;B=0;do if(F&1){I=Rb()|0;J=Q;K=I}else{k[E>>2]=27560;I=v+36|0;k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[I+12>>2]=0;k[v+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,E|0,c|0);L=B;B=0;if(L&1){L=Rb()|0;M=Q;Yua(c);Yua(I);Ava(E);J=M;K=L;break}Yua(c);B=0;L=Ia(40,v|0,143640,15)|0;M=B;B=0;if(!(M&1)?(B=0,Xa(239,L|0,0)|0,L=B,B=0,!(L&1)):0){L=Ab(20)|0;B=0;eb(502,w|0,126449,83);M=B;B=0;do if(!(M&1)){B=0;eb(502,x|0,126533,25);N=B;B=0;if(N&1){N=Rb()|0;O=Q;Yua(w);P=O;R=N;break}B=0;wa(510,y|0,E|0);N=B;B=0;if(N&1){N=Rb()|0;S=Q;T=N;U=1}else{B=0;ua(163,L|0,w|0,x|0,230,y|0);N=B;B=0;if(N&1)V=1;else{B=0;eb(503,L|0,1240,229);B=0;V=0}N=Rb()|0;O=Q;Yua(y);S=O;T=N;U=V}Yua(x);Yua(w);if(U){P=S;R=T}else{W=S;X=T;k[v>>2]=27468;k[D>>2]=27488;k[E>>2]=27560;Yua(I);Ava(E);vva(D);Qb(X|0)}}else{N=Rb()|0;P=Q;R=N}while(0);zb(L|0);W=P;X=R;k[v>>2]=27468;k[D>>2]=27488;k[E>>2]=27560;Yua(I);Ava(E);vva(D);Qb(X|0)}M=Rb()|0;W=Q;X=M;k[v>>2]=27468;k[D>>2]=27488;k[E>>2]=27560;Yua(I);Ava(E);vva(D);Qb(X|0)}while(0);G=J;H=K;vva(D);Qb(H|0)}}Ec[k[(k[b>>2]|0)+80>>2]&1023](b);H=(C|0)==3;if(H)nq(b);D=Wo(b,716)|0;K=Wo(b,717)|0;J=Wo(b,719)|0;if(H){G=Wo(b,718)|0;X=Wo(b,720)|0;E=Wo(b,721)|0;Y=Wo(b,714)|0;Z=G;_=X;ca=E}else{Y=0;Z=0;_=0;ca=0}if((k[u>>2]|0)==300)da=Wo(b,227)|0;else da=Wo(b,225)|0;cp(b,t,241);u=Hc[k[(k[b>>2]|0)+304>>2]&511](b)|0;if((z|0)>0){E=(C|0)==2;ea=0.0;C=0;fa=0.0;ga=0.0;ha=0.0;while(1){X=k[(k[u>>2]|0)+32>>2]|0;G=Hc[k[(k[b>>2]|0)+128>>2]&511](b)|0;nd[X&1023](u,G,C);nd[k[(k[da>>2]|0)+48>>2]&1023](da,i,u);nd[k[(k[D>>2]|0)+48>>2]&1023](D,j,u);nd[k[(k[K>>2]|0)+48>>2]&1023](K,l,u);nd[k[(k[J>>2]|0)+48>>2]&1023](J,n,u);if(H){nd[k[(k[Z>>2]|0)+48>>2]&1023](Z,m,u);nd[k[(k[_>>2]|0)+48>>2]&1023](_,o,u);nd[k[(k[ca>>2]|0)+48>>2]&1023](ca,q,u)}ia=1.0-+p[i>>3];ja=+p[j>>3]/ia;ka=+p[l>>3]/ia;la=+p[n>>3]/ia;if(!H)if(E){ma=(ja+la)*.5;na=(ja-la)*.5;oa=+aa(+(ka*ka+na*na));na=ma+oa;pa=ma-oa;G=+$(+pa)>+$(+na);oa=G?na:pa;ma=G?pa:na;switch(k[t>>2]|0){case 0:{qa=+aa(+(oa*oa+(ma*ma-ma*oa)));break}case 1:{qa=ma;break}default:qa=ea}ma=qa-+p[h>>3];oa=+LY(-qa,0.0);na=+LY(ma,0.0);ma=+p[e>>3];pa=+ba(+na,+ma);na=+p[d>>3]*(pa-+p[g>>3]*+ba(+oa,+ma));ma=na*+ba(+(1.0/(1.0-+p[i>>3])),+(+p[f>>3]));p[A+(C<<3)>>3]=ma;ra=qa;sa=fa;ta=ga;xa=ha}else{ya=fa;za=ga;Aa=ha;Ba=45}else{ya=+p[m>>3]/ia;za=+p[o>>3]/ia;Aa=+p[q>>3]/ia;Ba=45}if((Ba|0)==45){Ba=0;switch(k[t>>2]|0){case 1:{nd[k[(k[Y>>2]|0)+48>>2]&1023](Y,s,u);Ca=+p[s>>3]/(1.0-+p[i>>3]);break}case 0:{ia=ja-la;ma=la-Aa;la=Aa-ja;Ca=+aa(+(((ya*ya+(ka*ka+za*za))*6.0+(la*la+(ia*ia+ma*ma)))*.5));break}default:Ca=ea}ma=Ca-+p[h>>3];ia=+LY(-Ca,0.0);la=+LY(ma,0.0);ma=+p[e>>3];ka=+ba(+la,+ma);la=+p[d>>3]*(ka-+p[g>>3]*+ba(+ia,+ma));ma=la*+ba(+(1.0/(1.0-+p[i>>3])),+(+p[f>>3]));p[A+(C<<3)>>3]=ma;ra=Ca;sa=ya;ta=za;xa=Aa}C=C+1|0;if((C|0)==(z|0))break;else{ea=ra;fa=sa;ga=ta;ha=xa}}}z=k[b>>2]|0;C=k[z+48>>2]|0;f=Hc[k[z+128>>2]&511](b)|0;rd[C&511](b,226,A,f);Tqa(A);if(!u){r=a;return}Ec[k[(k[u>>2]|0)+4>>2]&1023](u);r=a;return}function E8(a,b){a=a|0;b=b|0;return 0}function F8(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,126449,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,329,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function G8(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0.0,Y=0,Z=0.0,_=0.0,ba=0,ca=0,da=0,ea=0,fa=0.0,ga=0,ha=0,ia=0,ja=0.0,ka=0.0,la=0.0,na=0.0,oa=0.0,pa=0.0,qa=0.0,ra=0.0,sa=0.0,ta=0.0,xa=0.0;a=r;r=r+352|0;c=a+332|0;d=a+328|0;e=a+324|0;f=a+136|0;g=a+128|0;h=a+120|0;i=a+112|0;j=a+104|0;l=a+96|0;m=a+88|0;n=a+80|0;o=a+72|0;q=a+48|0;s=a+24|0;t=a;u=a+320|0;v=a+184|0;w=a+168|0;x=a+156|0;y=a+144|0;if(!($p(b)|0)){z=0;r=a;return z|0}k[u>>2]=0;cp(b,d,298);switch(k[d>>2]|0){case 300:{A=2;break}case 302:{A=3;break}default:{d=v+56|0;C=v+4|0;k[v>>2]=27524;k[d>>2]=27544;B=0;wa(508,v+56|0,C|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;F=D;vva(d);Qb(F|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[d>>2]=27488;B=0;va(448,C|0);D=B;B=0;do if(D&1){G=Rb()|0;H=Q;I=G}else{k[C>>2]=27560;G=v+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[v+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,C|0,c|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(c);Yua(G);Ava(C);H=K;I=J;break}Yua(c);B=0;J=Ia(40,v|0,144350,19)|0;K=B;B=0;if(!(K&1)?(B=0,Xa(239,J|0,0)|0,J=B,B=0,!(J&1)):0){J=Ab(20)|0;B=0;eb(502,w|0,126449,83);K=B;B=0;do if(!(K&1)){B=0;eb(502,x|0,144189,13);L=B;B=0;if(L&1){L=Rb()|0;M=Q;Yua(w);N=M;O=L;break}B=0;wa(510,y|0,C|0);L=B;B=0;if(L&1){L=Rb()|0;P=Q;R=L;S=1}else{B=0;ua(163,J|0,w|0,x|0,347,y|0);L=B;B=0;if(L&1)T=1;else{B=0;eb(503,J|0,1240,229);B=0;T=0}L=Rb()|0;M=Q;Yua(y);P=M;R=L;S=T}Yua(x);Yua(w);if(S){N=P;O=R}else{U=R;V=P;k[v>>2]=27468;k[d>>2]=27488;k[C>>2]=27560;Yua(G);Ava(C);vva(d);Qb(U|0)}}else{L=Rb()|0;N=Q;O=L}while(0);zb(J|0);U=O;V=N;k[v>>2]=27468;k[d>>2]=27488;k[C>>2]=27560;Yua(G);Ava(C);vva(d);Qb(U|0)}K=Rb()|0;U=K;V=Q;k[v>>2]=27468;k[d>>2]=27488;k[C>>2]=27560;Yua(G);Ava(C);vva(d);Qb(U|0)}while(0);E=H;F=I;vva(d);Qb(F|0)}}F=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;d=gq(b,534)|0;I=Rqa(F>>>0>536870911?-1:F<<3)|0;H=ma(F,A)|0;E=H>>>0>536870911?-1:H<<3;H=Rqa(E)|0;U=Rqa(E)|0;E=(ma(A,A)|0)<<3;C=Rqa(E)|0;WEa(C|0,0,E|0)|0;Uo(b,u);pp(b,g,358);cp(b,e,237);E=Wo(b,674)|0;v=Wo(b,677)|0;V=(A|0)==3;if(V){W=0;X=0.0;Y=Wo(b,679)|0}else{W=1;X=+Zc[k[(k[b>>2]|0)+72>>2]&255](b);Y=0}N=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;O=Hc[k[(k[N>>2]|0)+8>>2]&511](N)|0;a:do if((O|0)<(Hc[k[(k[N>>2]|0)+12>>2]&511](N)|0)){P=N+8|0;R=d+12|0;S=s+8|0;w=t+16|0;x=C+(A+1<<3)|0;T=A<<1;y=C+(T+2<<3)|0;c=C+(A<<3)|0;D=C+8|0;K=C+(T<<3)|0;L=C+((T|1)<<3)|0;T=C+16|0;M=C+(A+2<<3)|0;Z=0.0;_=X;ba=O;while(1){Fc[k[(k[N>>2]|0)+24>>2]&1023](N,ba);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[u>>2]|0,N);nd[k[(k[b>>2]|0)+336>>2]&1023](b,I,N);nd[k[(k[E>>2]|0)+48>>2]&1023](E,m,N);rd[k[(k[E>>2]|0)+60>>2]&511](E,q,k[u>>2]|0,N);nd[k[(k[v>>2]|0)+48>>2]&1023](v,n,N);rd[k[(k[v>>2]|0)+60>>2]&511](v,s,k[u>>2]|0,N);if(V){nd[k[(k[Y>>2]|0)+48>>2]&1023](Y,o,N);rd[k[(k[Y>>2]|0)+60>>2]&511](Y,t,k[u>>2]|0,N)}p[h>>3]=+p[P>>3]*+p[f>>3];ZX(I,1,F,1,h,1,1,0,I,1,F,0,k[R>>2]|0,1)|0;ca=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;da=Rqa(ca>>>0>536870911?-1:ca<<3)|0;nd[k[(k[b>>2]|0)+336>>2]&1023](b,da,N);if((ca|0)>0){ea=0;do{fa=+p[da+(ea<<3)>>3];ga=0;do{ha=H+((ma(ga,ca)|0)+ea<<3)|0;p[ha>>3]=fa;ga=ga+1|0}while((ga|0)!=(A|0));ea=ea+1|0}while((ea|0)!=(ca|0))}Tqa(da);ca=k[u>>2]|0;ea=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;ga=ma(ea,A)|0;ha=Rqa(ga>>>0>536870911?-1:ga<<3)|0;rd[k[(k[b>>2]|0)+340>>2]&511](b,ha,ca,N);if((ea|0)>0){ca=0;do{ga=0;do{ia=(ma(ga,ea)|0)+ca|0;p[U+(ia<<3)>>3]=+p[ha+(ia<<3)>>3];ga=ga+1|0}while((ga|0)!=(A|0));ca=ca+1|0}while((ca|0)!=(ea|0))}Tqa(ha);fa=+p[q>>3];ja=+p[S>>3];Z=V?+p[w>>3]:Z;ka=+p[g>>3]*+p[P>>3]*+p[f>>3];p[h>>3]=ka;p[C>>3]=fa*ka;p[x>>3]=ja*ka;if(V){p[y>>3]=Z*ka;ZX(H,3,F,1,C,3,3,0,H,3,F,0,k[R>>2]|0,1)|0;ka=+p[h>>3];p[C>>3]=ka*+p[m>>3];p[x>>3]=ka*+p[n>>3];p[y>>3]=ka*+p[o>>3]}else{ZX(H,A,F,1,C,A,A,0,H,A,F,0,k[R>>2]|0,1)|0;ka=+p[h>>3];p[C>>3]=ka*+p[m>>3];p[x>>3]=ka*+p[n>>3]}ZX(H,A,F,1,C,A,A,0,U,A,F,0,k[R>>2]|0,1)|0;b:do switch(k[e>>2]|0){case 2:{ka=+p[m>>3];ja=+p[n>>3];fa=ka*ka+ja*ja;if(V){la=+p[o>>3];na=_/((+aa(+(fa+la*la))+1.0e-08)*2.0);oa=ka*na;p[C>>3]=ka*oa;pa=ja*na;p[c>>3]=ka*pa;qa=na*la;p[K>>3]=ka*qa;p[D>>3]=oa*ja;p[x>>3]=ja*pa;na=pa*la;p[L>>3]=na;p[T>>3]=oa*la;p[M>>3]=na;p[y>>3]=la*qa;ra=_;break b}else{qa=_/((+aa(+fa)+1.0e-08)*2.0);fa=ka*qa;p[C>>3]=ka*fa;la=ja*qa;p[c>>3]=ka*la;p[D>>3]=fa*ja;p[x>>3]=ja*la;ra=_;break b}break}case 1:{if(W){Fc[k[(k[E>>2]|0)+64>>2]&1023](E,m);Fc[k[(k[v>>2]|0)+64>>2]&1023](v,n);la=_*.5;ja=la*+$(+(+p[m>>3]));p[C>>3]=ja;ja=la*+$(+(+p[n>>3]));p[x>>3]=ja;ra=_;break b}if(V){rd[k[(k[b>>2]|0)+108>>2]&511](b,i,j,l);ja=+p[m>>3];la=ja*ja;fa=+p[n>>3];ka=fa*fa;qa=+p[o>>3];na=qa*qa;oa=+aa(+(la+ka+na))+1.0e-14;pa=ja*+p[i>>3]/oa;sa=fa*+p[j>>3]/oa;ta=qa*+p[l>>3]/oa;xa=+aa(+(pa*pa+sa*sa+ta*ta));ta=xa/(oa*2.0);p[C>>3]=la*ta;la=ta*+$(+(ja*fa));p[D>>3]=la;oa=ta*+$(+(ja*qa));p[T>>3]=oa;p[c>>3]=la;p[x>>3]=ta*ka;ka=ta*+$(+(fa*qa));p[M>>3]=ka;p[K>>3]=oa;p[L>>3]=ka;p[y>>3]=ta*na;ra=xa}else ra=_;break}default:ra=_}while(0);if(((k[e>>2]|0)+-1|0)>>>0<2){if(!W){if(V){xa=+p[h>>3];p[C>>3]=xa*+p[C>>3];p[c>>3]=xa*+p[c>>3];p[K>>3]=xa*+p[K>>3];p[D>>3]=xa*+p[D>>3];p[x>>3]=xa*+p[x>>3];p[L>>3]=xa*+p[L>>3];p[T>>3]=xa*+p[T>>3];p[M>>3]=xa*+p[M>>3];p[y>>3]=xa*+p[y>>3]}}else{xa=+p[h>>3];p[C>>3]=xa*+p[C>>3];p[c>>3]=xa*+p[c>>3];p[D>>3]=xa*+p[D>>3];p[x>>3]=xa*+p[x>>3]}ZX(U,A,F,1,C,A,A,0,U,A,F,0,k[R>>2]|0,1)|0}ba=ba+1|0;if((ba|0)>=(Hc[k[(k[N>>2]|0)+12>>2]&511](N)|0))break a;else _=ra}}while(0);F=k[u>>2]|0;if(F)Tqa(F);k[u>>2]=0;Tqa(I);Tqa(H);Tqa(U);Tqa(C);Ec[k[(k[N>>2]|0)+4>>2]&1023](N);z=d;r=a;return z|0}function H8(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0;a=r;r=r+240|0;c=a+220|0;d=a+216|0;e=a+212|0;f=a+24|0;g=a+16|0;h=a+8|0;i=a;j=a+208|0;l=a+72|0;m=a+56|0;n=a+44|0;o=a+32|0;if(!($p(b)|0)){q=0;r=a;return q|0}k[j>>2]=0;cp(b,d,298);s=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;t=iq(b,534)|0;u=Rqa(s>>>0>536870911?-1:s<<3)|0;Uo(b,j);pp(b,g,358);cp(b,e,228);switch(k[e>>2]|0){case 0:{e=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;v=Rqa(e>>>0>536870911?-1:e<<3)|0;if((e|0)>0)WEa(v|0,0,e<<3|0)|0;e=k[b>>2]|0;w=k[e+48>>2]|0;x=Hc[k[e+128>>2]&511](b)|0;rd[w&511](b,226,v,x);Tqa(v);break}case 1:{D8(0,b);break}case 2:{C8(0,b);break}default:{v=l+56|0;x=l+4|0;k[l>>2]=27524;k[v>>2]=27544;B=0;wa(508,l+56|0,x|0);w=B;B=0;if(w&1){w=Rb()|0;y=Q;z=w;vva(v);Qb(z|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[v>>2]=27488;B=0;va(448,x|0);w=B;B=0;do if(w&1){e=Rb()|0;A=Q;C=e}else{k[x>>2]=27560;e=l+36|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,x|0,c|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(c);Yua(e);Ava(x);A=E;C=D;break}Yua(c);B=0;D=Ia(40,l|0,149721,19)|0;E=B;B=0;if(!(E&1)?(B=0,Xa(239,D|0,0)|0,D=B,B=0,!(D&1)):0){D=Ab(20)|0;B=0;eb(502,m|0,126449,83);E=B;B=0;do if(!(E&1)){B=0;eb(502,n|0,144203,13);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(m);H=F;I=G;break}B=0;wa(510,o|0,x|0);G=B;B=0;if(G&1){G=Rb()|0;J=G;K=Q;L=1}else{B=0;ua(163,D|0,m|0,n|0,531,o|0);G=B;B=0;if(G&1)M=1;else{B=0;eb(503,D|0,1240,229);B=0;M=0}G=Rb()|0;F=Q;Yua(o);J=G;K=F;L=M}Yua(n);Yua(m);if(L){H=J;I=K}else{N=J;O=K;k[l>>2]=27468;k[v>>2]=27488;k[x>>2]=27560;Yua(e);Ava(x);vva(v);Qb(N|0)}}else{F=Rb()|0;H=F;I=Q}while(0);zb(D|0);N=H;O=I;k[l>>2]=27468;k[v>>2]=27488;k[x>>2]=27560;Yua(e);Ava(x);vva(v);Qb(N|0)}E=Rb()|0;N=E;O=Q;k[l>>2]=27468;k[v>>2]=27488;k[x>>2]=27560;Yua(e);Ava(x);vva(v);Qb(N|0)}while(0);y=A;z=C;vva(v);Qb(z|0)}}z=Wo(b,226)|0;if((k[d>>2]|0)==300)P=Wo(b,227)|0;else P=Wo(b,225)|0;d=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;v=Hc[k[(k[d>>2]|0)+8>>2]&511](d)|0;a:do if((v|0)<(Hc[k[(k[d>>2]|0)+12>>2]&511](d)|0)){C=d+8|0;A=t+4|0;if((s|0)>0)R=v;else{y=v;while(1){Fc[k[(k[d>>2]|0)+24>>2]&1023](d,y);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[j>>2]|0,d);nd[k[(k[b>>2]|0)+336>>2]&1023](b,u,d);nd[k[(k[P>>2]|0)+48>>2]&1023](P,i,d);nd[k[(k[z>>2]|0)+48>>2]&1023](z,h,d);y=y+1|0;if((y|0)>=(Hc[k[(k[d>>2]|0)+12>>2]&511](d)|0))break a}}do{Fc[k[(k[d>>2]|0)+24>>2]&1023](d,R);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[j>>2]|0,d);nd[k[(k[b>>2]|0)+336>>2]&1023](b,u,d);nd[k[(k[P>>2]|0)+48>>2]&1023](P,i,d);nd[k[(k[z>>2]|0)+48>>2]&1023](z,h,d);y=k[A>>2]|0;e=0;do{D=y+(e<<3)|0;p[D>>3]=+p[D>>3]+ +p[u+(e<<3)>>3]*(+p[f>>3]*+p[C>>3]*(+p[i>>3]+ +p[g>>3]*+p[h>>3]));e=e+1|0}while((e|0)!=(s|0));R=R+1|0}while((R|0)<(Hc[k[(k[d>>2]|0)+12>>2]&511](d)|0))}while(0);R=k[j>>2]|0;if(R)Tqa(R);k[j>>2]=0;Tqa(u);Ec[k[(k[d>>2]|0)+4>>2]&1023](d);q=t;r=a;return q|0}function I8(a,b,c){a=a|0;b=b|0;c=c|0;nd[k[(k[c>>2]|0)+176>>2]&1023](c,b,227);return}function J8(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,126449,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,626,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function K8(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0.0,x=0,y=0.0,z=0,A=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;a=r;r=r+384|0;d=a+368|0;e=a+364|0;f=a;g=a+360|0;h=a+224|0;i=a+208|0;j=a+56|0;l=a+44|0;m=a+72|0;n=a+32|0;o=a+20|0;q=a+8|0;k[g>>2]=0;cp(c,e,298);s=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;rp(c,g,534,943);u=Rqa(s>>>0>536870911?-1:s<<3)|0;pp(c,f,240);a:do if((s|0)>0){v=k[g>>2]|0;w=+p[f>>3];x=0;while(1){y=+p[b+(k[v+(x<<2)>>2]<<3)>>3];z=u+(x<<3)|0;p[z>>3]=y;A=+$(+y);p[t>>3]=A;C=k[t>>2]|0;D=k[t+4>>2]|0;if(D>>>0>2146435072|(D|0)==2146435072&C>>>0>0){E=5;break}if((C|0)==0&(D|0)==2146435072){E=29;break}if(!(y>w)){if(y<0.0)p[z>>3]=0.0}else p[z>>3]=w;x=x+1|0;if((x|0)>=(s|0))break a}if((E|0)==5){x=h+56|0;v=h+4|0;k[h>>2]=27524;k[x>>2]=27544;B=0;wa(508,h+56|0,v|0);z=B;B=0;if(z&1){z=Rb()|0;F=Q;G=z;vva(x);Qb(G|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[x>>2]=27488;B=0;va(448,v|0);z=B;B=0;do if(z&1){D=Rb()|0;H=Q;I=D}else{k[v>>2]=27560;D=h+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[h+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,v|0,d|0);C=B;B=0;if(C&1){C=Rb()|0;J=Q;Yua(d);Yua(D);Ava(v);H=J;I=C;break}Yua(d);B=0;C=Ia(40,h|0,135564,28)|0;J=B;B=0;b:do if(!(J&1)?(B=0,Xa(239,C|0,0)|0,K=B,B=0,!(K&1)):0){K=Ab(20)|0;B=0;eb(502,i|0,126449,83);L=B;B=0;do if(!(L&1)){B=0;eb(502,j|0,137199,23);M=B;B=0;if(M&1){M=Rb()|0;N=Q;Yua(i);O=M;P=N;break}B=0;wa(510,l|0,v|0);N=B;B=0;if(N&1){N=Rb()|0;R=Q;S=N;T=1}else{B=0;ua(163,K|0,i|0,j|0,650,l|0);N=B;B=0;if(N&1)U=1;else{B=0;eb(503,K|0,1240,229);B=0;U=0}N=Rb()|0;M=Q;Yua(l);R=M;S=N;T=U}Yua(j);Yua(i);if(T){O=S;P=R}else{V=S;W=R;break b}}else{N=Rb()|0;O=N;P=Q}while(0);zb(K|0);V=O;W=P}else E=20;while(0);if((E|0)==20){C=Rb()|0;V=C;W=Q}k[h>>2]=27468;k[x>>2]=27488;k[v>>2]=27560;Yua(D);Ava(v);vva(x);X=W;Y=V;Qb(Y|0)}while(0);F=H;G=I;vva(x);Qb(G|0)}else if((E|0)==29){v=m+56|0;z=m+4|0;k[m>>2]=27524;k[v>>2]=27544;B=0;wa(508,m+56|0,z|0);C=B;B=0;if(C&1){C=Rb()|0;Z=Q;_=C;vva(v);Qb(_|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[v>>2]=27488;B=0;va(448,z|0);C=B;B=0;do if(C&1){J=Rb()|0;aa=Q;ba=J}else{k[z>>2]=27560;J=m+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[m+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,z|0,d|0);L=B;B=0;if(L&1){L=Rb()|0;N=Q;Yua(d);Yua(J);Ava(z);aa=N;ba=L;break}Yua(d);B=0;L=Ia(40,m|0,135593,28)|0;N=B;B=0;c:do if(!(N&1)?(B=0,Xa(239,L|0,0)|0,M=B,B=0,!(M&1)):0){M=Ab(20)|0;B=0;eb(502,n|0,126449,83);ca=B;B=0;do if(!(ca&1)){B=0;eb(502,o|0,137199,23);da=B;B=0;if(da&1){da=Rb()|0;ea=Q;Yua(n);fa=da;ga=ea;break}B=0;wa(510,q|0,z|0);ea=B;B=0;if(ea&1){ea=Rb()|0;ha=1;ia=Q;ja=ea}else{B=0;ua(163,M|0,n|0,o|0,651,q|0);ea=B;B=0;if(ea&1)ka=1;else{B=0;eb(503,M|0,1240,229);B=0;ka=0}ea=Rb()|0;da=Q;Yua(q);ha=ka;ia=da;ja=ea}Yua(o);Yua(n);if(ha){fa=ja;ga=ia}else{la=ia;ma=ja;break c}}else{ea=Rb()|0;fa=ea;ga=Q}while(0);zb(M|0);la=ga;ma=fa}else E=44;while(0);if((E|0)==44){L=Rb()|0;la=Q;ma=L}k[m>>2]=27468;k[v>>2]=27488;k[z>>2]=27560;Yua(J);Ava(z);vva(v);X=la;Y=ma;Qb(Y|0)}while(0);Z=aa;_=ba;vva(v);Qb(_|0)}}while(0);_=(k[e>>2]|0)==300;e=k[c>>2]|0;ba=k[e+48>>2]|0;aa=Hc[k[e+128>>2]&511](c)|0;if(_)rd[ba&511](c,227,u,aa);else rd[ba&511](c,225,u,aa);Tqa(u);u=k[g>>2]|0;if(!u){r=a;return}Tqa(u);r=a;return}function L8(a,b){a=a|0;b=b|0;RZ(b);return}function M8(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0,B=0;a=r;r=r+32|0;c=a+16|0;d=a+8|0;e=a;f=a+24|0;if(!($p(b)|0)){g=0;r=a;return g|0}k[f>>2]=0;h=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;i=gq(b,534)|0;j=h<<1;l=j>>>0>536870911?-1:j<<3;j=Rqa(l)|0;m=Rqa(l)|0;l=Rqa(32)|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[l+16>>2]=0;k[l+20>>2]=0;k[l+24>>2]=0;k[l+28>>2]=0;Uo(b,f);n=Wo(b,674)|0;o=Wo(b,677)|0;q=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;s=Hc[k[(k[q>>2]|0)+8>>2]&511](q)|0;if((s|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0)){t=q+8|0;u=l+24|0;v=i+12|0;w=s;do{Fc[k[(k[q>>2]|0)+24>>2]&1023](q,w);rd[k[(k[b>>2]|0)+260>>2]&511](b,c,k[f>>2]|0,q);s=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;x=Rqa(s>>>0>536870911?-1:s<<3)|0;nd[k[(k[b>>2]|0)+336>>2]&1023](b,x,q);if((s|0)>0){y=0;do{z=+p[x+(y<<3)>>3];p[j+(y<<3)>>3]=z;p[j+(s+y<<3)>>3]=z;y=y+1|0}while((y|0)!=(s|0))}Tqa(x);s=k[f>>2]|0;y=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;A=y<<1;B=Rqa(A>>>0>536870911?-1:A<<3)|0;rd[k[(k[b>>2]|0)+340>>2]&511](b,B,s,q);if((y|0)>0){s=0;do{p[m+(s<<3)>>3]=+p[B+(s<<3)>>3];A=y+s|0;p[m+(A<<3)>>3]=+p[B+(A<<3)>>3];s=s+1|0}while((s|0)!=(y|0))}Tqa(B);nd[k[(k[n>>2]|0)+48>>2]&1023](n,d,q);nd[k[(k[o>>2]|0)+48>>2]&1023](o,e,q);z=+p[c>>3];p[l>>3]=-(+p[t>>3]*+p[d>>3]*z);p[u>>3]=-(+p[t>>3]*+p[e>>3]*z);ZX(j,2,h,1,l,2,2,0,m,2,h,0,k[v>>2]|0,1)|0;w=w+1|0}while((w|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0))}w=k[f>>2]|0;if(w)Tqa(w);k[f>>2]=0;Tqa(j);Tqa(m);Tqa(l);Ec[k[(k[q>>2]|0)+4>>2]&1023](q);g=i;r=a;return g|0}function N8(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;a=r;r=r+32|0;c=a+8|0;d=a;e=a+16|0;if(!($p(b)|0)){f=0;r=a;return f|0}k[e>>2]=0;g=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;h=gq(b,534)|0;i=Rqa(g>>>0>536870911?-1:g<<3)|0;Uo(b,e);j=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;l=Hc[k[(k[j>>2]|0)+8>>2]&511](j)|0;if((l|0)<(Hc[k[(k[j>>2]|0)+12>>2]&511](j)|0)){m=j+8|0;n=h+12|0;o=l;do{Fc[k[(k[j>>2]|0)+24>>2]&1023](j,o);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[e>>2]|0,j);nd[k[(k[b>>2]|0)+336>>2]&1023](b,i,j);p[c>>3]=+p[m>>3]*+p[d>>3];ZX(i,1,g,1,c,1,1,0,i,1,g,0,k[n>>2]|0,1)|0;o=o+1|0}while((o|0)<(Hc[k[(k[j>>2]|0)+12>>2]&511](j)|0))}o=k[e>>2]|0;if(o)Tqa(o);k[e>>2]=0;Tqa(i);Ec[k[(k[j>>2]|0)+4>>2]&1023](j);f=h;r=a;return f|0}function O8(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;a=r;r=r+16|0;e=a+4|0;f=a;k[e>>2]=0;k[f>>2]=0;loa(e,f,0,0,d);g=d+20|0;if((th(k[g>>2]|0)|0)>0){d=0;do{h=M8(0,qh(k[g>>2]|0,d)|0)|0;if(h){IN(h,k[e>>2]|0,k[f>>2]|0);HN(h);Sqa(h)}d=d+1|0}while((d|0)<(th(k[g>>2]|0)|0))}g=k[e>>2]|0;if(k[g>>2]|0){d=k[k[g+4>>2]>>2]|0;Ec[k[(k[d>>2]|0)+12>>2]&1023](d)}d=k[f>>2]|0;if(!(k[d>>2]|0))i=d;else{g=k[k[d+4>>2]>>2]|0;Ec[k[(k[g>>2]|0)+12>>2]&1023](g);i=k[f>>2]|0}k[b>>2]=k[e>>2];if(c){k[c>>2]=i;r=a;return}if(!i){r=a;return}if((k[i>>2]|0)!=0?(c=k[i+4>>2]|0,(c|0)!=0):0){e=k[c>>2]|0;if(e)Ec[k[(k[e>>2]|0)+4>>2]&1023](e);Sqa(c)}Sqa(i);r=a;return}function P8(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;a=r;r=r+16|0;d=a;cO(k[c+44>>2]|0,d,478);e=c+24|0;f=en(k[e>>2]|0,k[d>>2]|0,937)|0;g=fn(k[e>>2]|0,k[d>>2]|0,937)|0;d=Qqa(8)|0;B=0;va(485,d|0);e=B;B=0;a:do if(!(e&1)){do if(k[d>>2]|0){B=0;h=ya(423,4)|0;i=B;B=0;if(i&1)break a;B=0;eb(525,h|0,g|0,f|0);i=B;B=0;if(!(i&1)){k[d+4>>2]=h;break}i=Rb()|0;j=Q;Sqa(h);l=j;m=i;Sqa(d);Qb(m|0)}while(0);i=c+20|0;if((th(k[i>>2]|0)|0)>0){j=0;do{h=N8(0,qh(k[i>>2]|0,j)|0)|0;if(h){LN(h);KN(h,d);HN(h);Sqa(h)}j=j+1|0}while((j|0)<(th(k[i>>2]|0)|0))}if(!(k[d>>2]|0)){k[b>>2]=d;r=a;return}i=k[k[d+4>>2]>>2]|0;Ec[k[(k[i>>2]|0)+12>>2]&1023](i);k[b>>2]=d;r=a;return}while(0);a=Rb()|0;l=Q;m=a;Sqa(d);Qb(m|0)}function Q8(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a=r;r=r+16|0;d=a;k[d>>2]=0;loa(d,0,0,0,c);e=c+20|0;if((th(k[e>>2]|0)|0)>0){c=0;do{f=N8(0,qh(k[e>>2]|0,c)|0)|0;if(f){JN(f,k[d>>2]|0);HN(f);Sqa(f)}c=c+1|0}while((c|0)<(th(k[e>>2]|0)|0))}e=k[d>>2]|0;if(!(k[e>>2]|0)){g=e;k[b>>2]=g;r=a;return}else{c=k[k[e+4>>2]>>2]|0;Ec[k[(k[c>>2]|0)+12>>2]&1023](c);g=k[d>>2]|0;k[b>>2]=g;r=a;return}}function R8(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;b=r;r=r+368|0;d=b+344|0;e=b+208|0;f=b+196|0;g=b+184|0;h=b+36|0;i=b+48|0;j=b+24|0;l=b+12|0;m=b;switch(cZ()|0){case 976:{n=Qqa(12)|0;k[n>>2]=28388;k[n+8>>2]=c;o=n+4|0;k[o>>2]=0;if(!c){k[a>>2]=n;r=b;return}B=0;p=ya(422,(c>>>0>536870911?-1:c<<3)|0)|0;q=B;B=0;if(q&1){q=Rb()|0;s=Q;Sqa(n);t=s;u=q;Qb(u|0)}else{WEa(p|0,0,c<<3|0)|0;k[o>>2]=p;k[a>>2]=n;r=b;return}break}case 977:{b=e+56|0;n=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,n|0);a=B;B=0;if(a&1){a=Rb()|0;v=Q;w=a;vva(b);Qb(w|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,n|0);a=B;B=0;do if(a&1){p=Rb()|0;x=Q;y=p}else{k[n>>2]=27560;p=e+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,n|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;c=Q;Yua(d);Yua(p);Ava(n);x=c;y=o;break}Yua(d);B=0;o=Ia(40,e|0,126559,39)|0;c=B;B=0;a:do if(!(c&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,f|0,126599,95);s=B;B=0;do if(!(s&1)){B=0;eb(502,g|0,126695,7);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(f);C=z;D=A;break}B=0;wa(510,h|0,n|0);A=B;B=0;if(A&1){A=Rb()|0;E=Q;F=A;G=1}else{B=0;ua(163,q|0,f|0,g|0,75,h|0);A=B;B=0;if(A&1)H=1;else{B=0;eb(503,q|0,1240,229);B=0;H=0}A=Rb()|0;z=Q;Yua(h);E=z;F=A;G=H}Yua(g);Yua(f);if(G){C=F;D=E}else{I=F;J=E;break a}}else{A=Rb()|0;C=A;D=Q}while(0);zb(q|0);I=C;J=D}else K=22;while(0);if((K|0)==22){o=Rb()|0;I=o;J=Q}k[e>>2]=27468;k[b>>2]=27488;k[n>>2]=27560;Yua(p);Ava(n);vva(b);t=J;u=I;Qb(u|0)}while(0);v=x;w=y;vva(b);Qb(w|0);break}default:{w=i+56|0;b=i+4|0;k[i>>2]=27524;k[w>>2]=27544;B=0;wa(508,i+56|0,b|0);y=B;B=0;if(y&1){y=Rb()|0;L=Q;M=y;vva(w);Qb(M|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[w>>2]=27488;B=0;va(448,b|0);y=B;B=0;do if(y&1){x=Rb()|0;N=Q;O=x}else{k[b>>2]=27560;x=i+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);v=B;B=0;if(v&1){v=Rb()|0;I=Q;Yua(d);Yua(x);Ava(b);N=I;O=v;break}Yua(d);B=0;v=Ia(40,i|0,126703,30)|0;I=B;B=0;b:do if(!(I&1)?(B=0,Xa(239,v|0,0)|0,J=B,B=0,!(J&1)):0){J=Ab(20)|0;B=0;eb(502,j|0,126599,95);n=B;B=0;do if(!(n&1)){B=0;eb(502,l|0,126695,7);e=B;B=0;if(e&1){e=Rb()|0;D=Q;Yua(j);P=e;R=D;break}B=0;wa(510,m|0,b|0);D=B;B=0;if(D&1){D=Rb()|0;S=1;T=Q;U=D}else{B=0;ua(163,J|0,j|0,l|0,79,m|0);D=B;B=0;if(D&1)V=1;else{B=0;eb(503,J|0,1240,229);B=0;V=0}D=Rb()|0;e=Q;Yua(m);S=V;T=e;U=D}Yua(l);Yua(j);if(S){P=U;R=T}else{W=T;X=U;break b}}else{D=Rb()|0;P=D;R=Q}while(0);zb(J|0);W=R;X=P}else K=45;while(0);if((K|0)==45){v=Rb()|0;W=Q;X=v}k[i>>2]=27468;k[w>>2]=27488;k[b>>2]=27560;Yua(x);Ava(b);vva(w);t=W;u=X;Qb(u|0)}while(0);L=N;M=O;vva(w);Qb(M|0)}}}function S8(a){a=a|0;Sqa(a);return}function T8(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;b=r;r=r+512|0;c=b+492|0;d=b+464|0;e=b+328|0;f=b+480|0;g=b+472|0;h=b+176|0;i=b+312|0;j=b+40|0;l=b+24|0;m=b+12|0;n=b;cO(k[a+44>>2]|0,d,228);switch(k[d>>2]|0){case 0:{a:do if(BY()|0){o=e+56|0;p=e+4|0;k[e>>2]=27524;k[o>>2]=27544;B=0;wa(508,e+56|0,p|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;t=q;vva(o);Qb(t|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[o>>2]=27488;B=0;va(448,p|0);q=B;B=0;do if(q&1){u=Rb()|0;v=Q;w=u}else{k[p>>2]=27560;u=e+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,p|0,c|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(c);Yua(u);Ava(p);v=y;w=x;break}Yua(c);B=0;Ia(40,e|0,126734,33)|0;x=B;B=0;do if(!(x&1)?(B=0,wa(510,f|0,p|0),y=B,B=0,!(y&1)):0){B=0;ya(425,f|0)|0;y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(f);A=z;C=y;break}else{Yua(f);k[e>>2]=27468;k[o>>2]=27488;k[p>>2]=27560;Yua(u);Ava(p);vva(o);break a}}else D=15;while(0);if((D|0)==15){x=Rb()|0;A=Q;C=x}k[e>>2]=27468;k[o>>2]=27488;k[p>>2]=27560;Yua(u);Ava(p);vva(o);E=A;F=C;Qb(F|0)}while(0);s=v;t=w;vva(o);Qb(t|0)}while(0);k[g>>2]=536;k[g+4>>2]=0;k[c>>2]=k[g>>2];k[c+4>>2]=k[g+4>>2];Fh(a,c);r=b;return}case 2:case 1:{if(!(BY()|0)){r=b;return}a=h+56|0;g=h+4|0;k[h>>2]=27524;k[a>>2]=27544;B=0;wa(508,h+56|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;G=Q;H=t;vva(a);Qb(H|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);t=B;B=0;do if(t&1){w=Rb()|0;I=Q;J=w}else{k[g>>2]=27560;w=h+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);v=B;B=0;if(v&1){v=Rb()|0;s=Q;Yua(c);Yua(w);Ava(g);I=s;J=v;break}Yua(c);B=0;Ia(40,h|0,126768,58)|0;v=B;B=0;do if(!(v&1)?(B=0,wa(510,i|0,g|0),s=B,B=0,!(s&1)):0){B=0;ya(425,i|0)|0;s=B;B=0;if(s&1){s=Rb()|0;C=Q;Yua(i);K=C;L=s;break}Yua(i);k[h>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(w);Ava(g);vva(a);r=b;return}else D=32;while(0);if((D|0)==32){v=Rb()|0;K=Q;L=v}k[h>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(w);Ava(g);vva(a);E=K;F=L;Qb(F|0)}while(0);G=I;H=J;vva(a);Qb(H|0);break}default:{H=j+56|0;a=j+4|0;k[j>>2]=27524;k[H>>2]=27544;B=0;wa(508,j+56|0,a|0);J=B;B=0;if(J&1){J=Rb()|0;M=Q;N=J;vva(H);Qb(N|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[H>>2]=27488;B=0;va(448,a|0);J=B;B=0;do if(J&1){I=Rb()|0;O=Q;P=I}else{k[a>>2]=27560;I=j+36|0;k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[I+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);G=B;B=0;if(G&1){G=Rb()|0;L=Q;Yua(c);Yua(I);Ava(a);O=L;P=G;break}Yua(c);B=0;G=Ia(40,j|0,126827,11)|0;L=B;B=0;b:do if((((!(L&1)?(B=0,K=ya(427,k[d>>2]|0)|0,g=B,B=0,!(g&1)):0)?(g=Lta(K)|0,B=0,h=Ia(40,G|0,K|0,g|0)|0,g=B,B=0,!(g&1)):0)?(B=0,g=Ia(40,h|0,127493,20)|0,h=B,B=0,!(h&1)):0)?(B=0,Xa(239,g|0,0)|0,g=B,B=0,!(g&1)):0){g=Ab(20)|0;B=0;eb(502,l|0,126839,74);h=B;B=0;do if(!(h&1)){B=0;eb(502,m|0,126914,7);K=B;B=0;if(K&1){K=Rb()|0;b=Q;Yua(l);R=b;S=K;break}B=0;wa(510,n|0,a|0);K=B;B=0;if(K&1){K=Rb()|0;T=1;U=Q;V=K}else{B=0;ua(163,g|0,l|0,m|0,27,n|0);K=B;B=0;if(K&1)W=1;else{B=0;eb(503,g|0,1240,229);B=0;W=0}K=Rb()|0;b=Q;Yua(n);T=W;U=b;V=K}Yua(m);Yua(l);if(T){R=U;S=V}else{X=U;Y=V;break b}}else{K=Rb()|0;R=Q;S=K}while(0);zb(g|0);X=R;Y=S}else D=53;while(0);if((D|0)==53){G=Rb()|0;X=Q;Y=G}k[j>>2]=27468;k[H>>2]=27488;k[a>>2]=27560;Yua(I);Ava(a);vva(H);E=X;F=Y;Qb(F|0)}while(0);M=O;N=P;vva(H);Qb(N|0)}}}function U8(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,La=0,Ma=0,Na=0,Oa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0.0,mc=0,nc=0,oc=0.0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0.0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0;a=r;r=r+1520|0;d=a+1488|0;e=a+1484|0;f=a+16|0;g=a+8|0;h=a;j=a+1504|0;l=a+1503|0;m=a+1502|0;n=a+1501|0;o=a+1500|0;q=a+1480|0;s=a+1476|0;u=a+1472|0;v=a+1468|0;w=a+1464|0;x=a+1460|0;y=a+1456|0;z=a+1452|0;A=a+1448|0;C=a+1444|0;D=a+1440|0;E=a+1436|0;F=a+1420|0;G=a+1404|0;H=a+1388|0;I=a+1372|0;J=a+1356|0;K=a+1208|0;L=a+1424|0;M=a+1408|0;N=a+1392|0;O=a+1072|0;P=a+1376|0;R=a+1360|0;S=a+1344|0;T=a+920|0;U=a+1056|0;V=a+772|0;W=a+760|0;X=a+784|0;Y=a+472|0;Z=a+320|0;_=a+168|0;aa=a+624|0;ba=a+156|0;ca=a+144|0;da=a+132|0;ea=a+488|0;fa=a+120|0;ga=a+108|0;ha=a+96|0;ia=a+336|0;ja=a+84|0;ka=a+72|0;la=a+60|0;na=a+184|0;oa=a+48|0;pa=a+36|0;qa=a+24|0;k[y>>2]=0;k[z>>2]=0;k[A>>2]=0;k[C>>2]=0;k[D>>2]=0;k[E>>2]=0;k[F>>2]=0;k[G>>2]=0;k[H>>2]=0;k[I>>2]=0;k[J>>2]=0;Gka(c,f,126946);Gka(c,g,126961);Gka(c,h,126982);zka(c,j,129324);zka(c,l,129346);zka(c,m,129368);zka(c,n,129391);zka(c,o,132257);ra=i[l>>0]|0;l=ra<<24>>24==0;sa=i[n>>0]|0;n=sa<<24>>24==0;ta=i[o>>0]|0;xa=ta<<24>>24==0;za=i[m>>0]|0;m=za<<24>>24==0;if(!((sa|ra|ta|za)<<24>>24)){r=a;return}if(!((ta<<24>>24!=0?1.0:0.0)+((sa<<24>>24!=0?1.0:0.0)+((za<<24>>24!=0?1.0:0.0)+((ra<<24>>24!=0?1.0:0.0)+((i[j>>0]|0)!=0?1.0:0.0))))>1.0)){a:do if(l){if(!m){k[e>>2]=738;break}if(!n){Fka(c,e,127039);break}if(xa){j=O+56|0;ra=O+4|0;k[O>>2]=27524;k[j>>2]=27544;B=0;wa(508,O+56|0,ra|0);za=B;B=0;if(za&1){za=Rb()|0;Aa=Q;Ba=za;vva(j);Qb(Ba|0)}k[O+128>>2]=0;k[O+132>>2]=-1;k[O>>2]=27468;k[j>>2]=27488;B=0;va(448,ra|0);za=B;B=0;do if(za&1){sa=Rb()|0;Ca=Q;Da=sa}else{k[ra>>2]=27560;sa=O+36|0;k[sa>>2]=0;k[sa+4>>2]=0;k[sa+8>>2]=0;k[sa+12>>2]=0;k[O+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ra|0,d|0);ta=B;B=0;if(ta&1){ta=Rb()|0;Ea=Q;Yua(d);Yua(sa);Ava(ra);Ca=Ea;Da=ta;break}Yua(d);B=0;ta=Ia(40,O|0,127159,23)|0;Ea=B;B=0;b:do if(!(Ea&1)?(B=0,Xa(239,ta|0,0)|0,Fa=B,B=0,!(Fa&1)):0){Fa=Ab(20)|0;B=0;eb(502,P|0,127077,81);Ga=B;B=0;do if(!(Ga&1)){B=0;eb(502,R|0,135838,17);Ha=B;B=0;if(Ha&1){Ha=Rb()|0;Ja=Q;Yua(P);La=Ja;Ma=Ha;break}B=0;wa(510,S|0,ra|0);Ha=B;B=0;if(Ha&1){Ha=Rb()|0;Na=1;Oa=Q;Qa=Ha}else{B=0;ua(163,Fa|0,P|0,R|0,85,S|0);Ha=B;B=0;if(Ha&1)Ra=1;else{B=0;eb(503,Fa|0,1240,229);B=0;Ra=0}Ha=Rb()|0;Ja=Q;Yua(S);Na=Ra;Oa=Ja;Qa=Ha}Yua(R);Yua(P);if(Na){La=Oa;Ma=Qa}else{Sa=Oa;Ta=Qa;break b}}else{Ha=Rb()|0;La=Q;Ma=Ha}while(0);zb(Fa|0);Sa=La;Ta=Ma}else Ua=62;while(0);if((Ua|0)==62){ta=Rb()|0;Sa=Q;Ta=ta}k[O>>2]=27468;k[j>>2]=27488;k[ra>>2]=27560;Yua(sa);Ava(ra);vva(j);Va=Sa;Wa=Ta;Qb(Wa|0)}while(0);Aa=Ca;Ba=Da;vva(j);Qb(Ba|0)}Fka(c,e,128764);do switch(k[e>>2]|0){case 749:{k[e>>2]=738;break a;break}case 750:{k[e>>2]=738;break a;break}case 752:{k[e>>2]=740;break a;break}case 751:{k[e>>2]=740;break a;break}case 753:{k[e>>2]=742;break a;break}case 755:{k[e>>2]=742;break a;break}case 754:{k[e>>2]=742;break a;break}case 758:{k[e>>2]=743;break a;break}case 756:{k[e>>2]=748;break a;break}case 757:{k[e>>2]=743;break a;break}default:{ra=K+56|0;za=K+4|0;k[K>>2]=27524;k[ra>>2]=27544;B=0;wa(508,K+56|0,za|0);ta=B;B=0;if(ta&1){ta=Rb()|0;Ya=Q;Za=ta;vva(ra);Qb(Za|0)}k[K+128>>2]=0;k[K+132>>2]=-1;k[K>>2]=27468;k[ra>>2]=27488;B=0;va(448,za|0);ta=B;B=0;do if(ta&1){Ea=Rb()|0;_a=Q;$a=Ea}else{k[za>>2]=27560;Ea=K+36|0;k[Ea>>2]=0;k[Ea+4>>2]=0;k[Ea+8>>2]=0;k[Ea+12>>2]=0;k[K+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,za|0,d|0);Ga=B;B=0;if(Ga&1){Ga=Rb()|0;Ha=Q;Yua(d);Yua(Ea);Ava(za);_a=Ha;$a=Ga;break}Yua(d);B=0;Ga=Ia(40,K|0,127061,15)|0;Ha=B;B=0;c:do if((((!(Ha&1)?(B=0,Ja=ya(427,k[e>>2]|0)|0,ab=B,B=0,!(ab&1)):0)?(ab=Lta(Ja)|0,B=0,bb=Ia(40,Ga|0,Ja|0,ab|0)|0,ab=B,B=0,!(ab&1)):0)?(B=0,ab=Ia(40,bb|0,144645,14)|0,bb=B,B=0,!(bb&1)):0)?(B=0,Xa(239,ab|0,0)|0,ab=B,B=0,!(ab&1)):0){ab=Ab(20)|0;B=0;eb(502,L|0,127077,81);bb=B;B=0;do if(!(bb&1)){B=0;eb(502,M|0,135838,17);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;cb=Q;Yua(L);db=cb;fb=Ja;break}B=0;wa(510,N|0,za|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;gb=Q;hb=Ja;ib=1}else{B=0;ua(163,ab|0,L|0,M|0,81,N|0);Ja=B;B=0;if(Ja&1)jb=1;else{B=0;eb(503,ab|0,1240,229);B=0;jb=0}Ja=Rb()|0;cb=Q;Yua(N);gb=cb;hb=Ja;ib=jb}Yua(M);Yua(L);if(ib){db=gb;fb=hb}else{kb=gb;lb=hb;break c}}else{Ja=Rb()|0;db=Q;fb=Ja}while(0);zb(ab|0);kb=db;lb=fb}else Ua=39;while(0);if((Ua|0)==39){Ga=Rb()|0;kb=Q;lb=Ga}k[K>>2]=27468;k[ra>>2]=27488;k[za>>2]=27560;Yua(Ea);Ava(za);vva(ra);Va=kb;Wa=lb;Qb(Wa|0)}while(0);Ya=_a;Za=$a;vva(ra);Qb(Za|0)}}while(0)}else Fka(c,e,127016);while(0);if(!(i[o>>0]|0)){qoa(b,c,129044,497,k[e>>2]|0,0);if((k[c+40>>2]|0)==301){r=a;return}qoa(b,c,129067,497,k[e>>2]|0,1);r=a;return}Qka(c,H,0,0,129588);Qka(c,E,0,0,129435);Qka(c,F,0,0,136615);Qka(c,G,0,0,134962);o=c+40|0;switch(k[o>>2]|0){case 302:{Qka(c,A,w,x,129412);break}case 301:{Qka(c,A,w,x,129067);break}default:{Za=T+56|0;$a=T+4|0;k[T>>2]=27524;k[Za>>2]=27544;B=0;wa(508,T+56|0,$a|0);_a=B;B=0;if(_a&1){_a=Rb()|0;mb=Q;nb=_a;vva(Za);Qb(nb|0)}k[T+128>>2]=0;k[T+132>>2]=-1;k[T>>2]=27468;k[Za>>2]=27488;B=0;va(448,$a|0);_a=B;B=0;do if(_a&1){Ya=Rb()|0;ob=Q;pb=Ya}else{k[$a>>2]=27560;Ya=T+36|0;k[Ya>>2]=0;k[Ya+4>>2]=0;k[Ya+8>>2]=0;k[Ya+12>>2]=0;k[T+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,$a|0,d|0);lb=B;B=0;if(lb&1){lb=Rb()|0;kb=Q;Yua(d);Yua(Ya);Ava($a);ob=kb;pb=lb;break}Yua(d);B=0;lb=Ia(40,T|0,134695,17)|0;kb=B;B=0;d:do if(!(kb&1)?(B=0,Xa(239,lb|0,0)|0,K=B,B=0,!(K&1)):0){K=Ab(20)|0;B=0;eb(502,U|0,127077,81);fb=B;B=0;do if(!(fb&1)){B=0;eb(502,V|0,135838,17);db=B;B=0;if(db&1){db=Rb()|0;hb=Q;Yua(U);qb=hb;rb=db;break}B=0;wa(510,W|0,$a|0);db=B;B=0;if(db&1){db=Rb()|0;sb=1;tb=Q;ub=db}else{B=0;ua(163,K|0,U|0,V|0,102,W|0);db=B;B=0;if(db&1)vb=1;else{B=0;eb(503,K|0,1240,229);B=0;vb=0}db=Rb()|0;hb=Q;Yua(W);sb=vb;tb=hb;ub=db}Yua(V);Yua(U);if(sb){qb=tb;rb=ub}else{wb=tb;xb=ub;break d}}else{db=Rb()|0;qb=Q;rb=db}while(0);zb(K|0);wb=qb;xb=rb}else Ua=89;while(0);if((Ua|0)==89){lb=Rb()|0;wb=Q;xb=lb}k[T>>2]=27468;k[Za>>2]=27488;k[$a>>2]=27560;Yua(Ya);Ava($a);vva(Za);Va=wb;Wa=xb;Qb(Wa|0)}while(0);mb=ob;nb=pb;vva(Za);Qb(nb|0)}}switch(k[o>>2]|0){case 302:{qoa(b,c,129044,497,k[e>>2]|0,0);qoa(b,c,129067,497,k[e>>2]|0,1);roa(b,c,k[A>>2]|0,k[w>>2]|0,k[x>>2]|0,497,k[e>>2]|0,2);Mka(c,k[A>>2]|0,129412);break}case 301:{qoa(b,c,129044,497,k[e>>2]|0,0);roa(b,c,k[A>>2]|0,k[w>>2]|0,k[x>>2]|0,497,k[e>>2]|0,1);Mka(c,k[A>>2]|0,129067);break}default:{o=X+56|0;nb=X+4|0;k[X>>2]=27524;k[o>>2]=27544;B=0;wa(508,X+56|0,nb|0);Za=B;B=0;if(Za&1){Za=Rb()|0;yb=Q;Bb=Za;vva(o);Qb(Bb|0)}k[X+128>>2]=0;k[X+132>>2]=-1;k[X>>2]=27468;k[o>>2]=27488;B=0;va(448,nb|0);Za=B;B=0;do if(Za&1){pb=Rb()|0;Cb=Q;Db=pb}else{k[nb>>2]=27560;pb=X+36|0;k[pb>>2]=0;k[pb+4>>2]=0;k[pb+8>>2]=0;k[pb+12>>2]=0;k[X+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,nb|0,d|0);ob=B;B=0;if(ob&1){ob=Rb()|0;mb=Q;Yua(d);Yua(pb);Ava(nb);Cb=mb;Db=ob;break}Yua(d);B=0;ob=Ia(40,X|0,134695,17)|0;mb=B;B=0;e:do if(!(mb&1)?(B=0,Xa(239,ob|0,0)|0,xb=B,B=0,!(xb&1)):0){xb=Ab(20)|0;B=0;eb(502,Y|0,127077,81);wb=B;B=0;do if(!(wb&1)){B=0;eb(502,Z|0,135838,17);$a=B;B=0;if($a&1){$a=Rb()|0;T=Q;Yua(Y);Eb=T;Fb=$a;break}B=0;wa(510,_|0,nb|0);$a=B;B=0;if($a&1){$a=Rb()|0;Gb=1;Hb=Q;Ib=$a}else{B=0;ua(163,xb|0,Y|0,Z|0,116,_|0);$a=B;B=0;if($a&1)Jb=1;else{B=0;eb(503,xb|0,1240,229);B=0;Jb=0}$a=Rb()|0;T=Q;Yua(_);Gb=Jb;Hb=T;Ib=$a}Yua(Z);Yua(Y);if(Gb){Eb=Hb;Fb=Ib}else{Kb=Hb;Lb=Ib;break e}}else{$a=Rb()|0;Eb=Q;Fb=$a}while(0);zb(xb|0);Kb=Eb;Lb=Fb}else Ua=115;while(0);if((Ua|0)==115){ob=Rb()|0;Kb=Q;Lb=ob}k[X>>2]=27468;k[o>>2]=27488;k[nb>>2]=27560;Yua(pb);Ava(nb);vva(o);Va=Kb;Wa=Lb;Qb(Wa|0)}while(0);yb=Cb;Bb=Db;vva(o);Qb(Bb|0)}}Mka(c,k[H>>2]|0,129588);Mka(c,k[E>>2]|0,129435);Mka(c,k[F>>2]|0,136615);Mka(c,k[G>>2]|0,134962);Bb=th(b)|0;Qka(c,H,0,0,129588);Qka(c,I,0,0,134925);Qka(c,J,0,0,127183);f:do switch(k[e>>2]|0){case 738:{o=c+52|0;Db=k[o>>2]|0;if((Db|0)>0){Cb=c+36|0;yb=c+100|0;Lb=c+56|0;Kb=Db;Db=Bb;nb=0;while(1){if((k[(k[Cb>>2]|0)+(nb<<2)>>2]|0)!=0?(~~+p[(k[H>>2]|0)+(nb<<3)>>3]|0)==534:0){X=Qqa(32)|0;Fb=Db+1|0;B=0;Pa(1,X|0,Fb|0,nb+1+(k[yb>>2]|0)+Kb+(k[Lb>>2]|0)|0,0,+(+p[f>>3]*+p[g>>3]*(+p[(k[I>>2]|0)+(nb<<3)>>3]-+p[(k[J>>2]|0)+(nb<<3)>>3])/+p[h>>3]),497);Eb=B;B=0;if(Eb&1){Mb=X;break}ih(b,X)|0;Nb=k[o>>2]|0;Ob=Fb}else{Nb=Kb;Ob=Db}nb=nb+1|0;if((nb|0)>=(Nb|0))break f;else{Kb=Nb;Db=Ob}}Db=Rb()|0;Kb=Q;Sqa(Mb);Va=Kb;Wa=Db;Qb(Wa|0)}break}case 740:{Db=c+52|0;Kb=k[Db>>2]|0;if((Kb|0)>0){nb=c+36|0;o=c+100|0;Lb=c+56|0;yb=Kb;Kb=Bb;Cb=0;while(1){if((k[(k[nb>>2]|0)+(Cb<<2)>>2]|0)!=0?(~~+p[(k[H>>2]|0)+(Cb<<3)>>3]|0)==534:0){pb=Qqa(32)|0;Fb=Kb+1|0;B=0;Pa(1,pb|0,Fb|0,Cb+1+(k[o>>2]|0)+yb+(k[Lb>>2]|0)|0,0,+(+p[f>>3]*+p[g>>3]*(+p[(k[I>>2]|0)+(Cb<<3)>>3]-+p[(k[J>>2]|0)+(Cb<<3)>>3])/+p[h>>3]),497);X=B;B=0;if(X&1){Pb=pb;break}ih(b,pb)|0;Sb=k[Db>>2]|0;Tb=Fb}else{Sb=yb;Tb=Kb}Cb=Cb+1|0;if((Cb|0)>=(Sb|0))break f;else{yb=Sb;Kb=Tb}}Kb=Rb()|0;yb=Q;Sqa(Pb);Va=yb;Wa=Kb;Qb(Wa|0)}break}case 742:{Kb=c+52|0;yb=k[Kb>>2]|0;if((yb|0)>0){Cb=c+36|0;Db=c+100|0;Lb=c+64|0;o=yb;yb=Bb;nb=0;while(1){if((k[(k[Cb>>2]|0)+(nb<<2)>>2]|0)!=0?(~~+p[(k[H>>2]|0)+(nb<<3)>>3]|0)==534:0){Fb=Qqa(32)|0;pb=yb+1|0;B=0;Pa(1,Fb|0,pb|0,nb+1+(k[Db>>2]|0)+o+(k[Lb>>2]|0)|0,0,+(+p[f>>3]*+p[g>>3]*(+p[(k[I>>2]|0)+(nb<<3)>>3]-+p[(k[J>>2]|0)+(nb<<3)>>3])/+p[h>>3]),497);X=B;B=0;if(X&1){Ub=Fb;break}ih(b,Fb)|0;Vb=k[Kb>>2]|0;Wb=pb}else{Vb=o;Wb=yb}nb=nb+1|0;if((nb|0)>=(Vb|0))break f;else{o=Vb;yb=Wb}}yb=Rb()|0;o=Q;Sqa(Ub);Va=o;Wa=yb;Qb(Wa|0)}break}case 743:{yb=c+52|0;o=k[yb>>2]|0;if((o|0)>0){nb=c+36|0;Kb=c+100|0;Lb=c+64|0;Db=c+56|0;Cb=c+60|0;pb=o;o=Bb;Fb=0;while(1){if((k[(k[nb>>2]|0)+(Fb<<2)>>2]|0)!=0?(~~+p[(k[H>>2]|0)+(Fb<<3)>>3]|0)==534:0){X=Qqa(32)|0;Eb=o+1|0;B=0;Pa(1,X|0,Eb|0,Fb+1+(k[Kb>>2]|0)+pb+(k[Lb>>2]|0)+(k[Db>>2]|0)+(k[Cb>>2]|0)|0,0,+(+p[f>>3]*+p[g>>3]*(+p[(k[I>>2]|0)+(Fb<<3)>>3]-+p[(k[J>>2]|0)+(Fb<<3)>>3])/+p[h>>3]),497);Ib=B;B=0;if(Ib&1){Xb=X;break}ih(b,X)|0;Yb=k[yb>>2]|0;Zb=Eb}else{Yb=pb;Zb=o}Fb=Fb+1|0;if((Fb|0)>=(Yb|0))break f;else{pb=Yb;o=Zb}}o=Rb()|0;pb=Q;Sqa(Xb);Va=pb;Wa=o;Qb(Wa|0)}break}case 748:break;default:{o=aa+56|0;pb=aa+4|0;k[aa>>2]=27524;k[o>>2]=27544;B=0;wa(508,aa+56|0,pb|0);Fb=B;B=0;if(Fb&1){Fb=Rb()|0;_b=Q;$b=Fb;vva(o);Qb($b|0)}k[aa+128>>2]=0;k[aa+132>>2]=-1;k[aa>>2]=27468;k[o>>2]=27488;B=0;va(448,pb|0);Fb=B;B=0;do if(Fb&1){yb=Rb()|0;ac=Q;bc=yb}else{k[pb>>2]=27560;yb=aa+36|0;k[yb>>2]=0;k[yb+4>>2]=0;k[yb+8>>2]=0;k[yb+12>>2]=0;k[aa+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,pb|0,d|0);Cb=B;B=0;if(Cb&1){Cb=Rb()|0;Db=Q;Yua(d);Yua(yb);Ava(pb);ac=Db;bc=Cb;break}Yua(d);B=0;Cb=Ia(40,aa|0,149721,19)|0;Db=B;B=0;g:do if(!(Db&1)?(B=0,Xa(239,Cb|0,0)|0,Lb=B,B=0,!(Lb&1)):0){Lb=Ab(20)|0;B=0;eb(502,ba|0,127077,81);Kb=B;B=0;do if(!(Kb&1)){B=0;eb(502,ca|0,135838,17);nb=B;B=0;if(nb&1){nb=Rb()|0;Eb=Q;Yua(ba);cc=Eb;dc=nb;break}B=0;wa(510,da|0,pb|0);nb=B;B=0;if(nb&1){nb=Rb()|0;ec=1;fc=Q;gc=nb}else{B=0;ua(163,Lb|0,ba|0,ca|0,173,da|0);nb=B;B=0;if(nb&1)hc=1;else{B=0;eb(503,Lb|0,1240,229);B=0;hc=0}nb=Rb()|0;Eb=Q;Yua(da);ec=hc;fc=Eb;gc=nb}Yua(ca);Yua(ba);if(ec){cc=fc;dc=gc}else{ic=fc;jc=gc;break g}}else{nb=Rb()|0;cc=Q;dc=nb}while(0);zb(Lb|0);ic=cc;jc=dc}else Ua=171;while(0);if((Ua|0)==171){Cb=Rb()|0;ic=Q;jc=Cb}k[aa>>2]=27468;k[o>>2]=27488;k[pb>>2]=27560;Yua(yb);Ava(pb);vva(o);Va=ic;Wa=jc;Qb(Wa|0)}while(0);_b=ac;$b=bc;vva(o);Qb($b|0)}}while(0);Mka(c,k[H>>2]|0,129588);Mka(c,k[I>>2]|0,134925);Mka(c,k[J>>2]|0,127183);r=a;return}Qka(c,y,q,s,129044);Qka(c,z,u,v,129067);Qka(c,A,w,x,129412);Qka(c,C,0,0,129090);$b=c+40|0;if((((k[$b>>2]|0)==302?(Qka(c,D,0,0,127193),(k[$b>>2]|0)==302):0)?(Qka(c,E,0,0,129435),(k[$b>>2]|0)==302):0)?(Qka(c,F,0,0,136615),(k[$b>>2]|0)==302):0)Qka(c,G,0,0,134962);Qka(c,H,0,0,129588);Qka(c,I,0,0,134925);Qka(c,J,0,0,127183);bc=k[s>>2]|0;ac=Rqa(bc>>>0>536870911?-1:bc<<3)|0;if((bc|0)>0){_b=k[y>>2]|0;jc=ma((k[q>>2]|0)+-1|0,bc)|0;ic=0;do{p[ac+(ic<<3)>>3]=+p[_b+(jc+ic<<3)>>3];ic=ic+1|0}while((ic|0)<(bc|0))}bc=k[v>>2]|0;ic=Rqa(bc>>>0>536870911?-1:bc<<3)|0;if((bc|0)>0){jc=k[z>>2]|0;_b=ma((k[u>>2]|0)+-1|0,bc)|0;aa=0;do{p[ic+(aa<<3)>>3]=+p[jc+(_b+aa<<3)>>3];aa=aa+1|0}while((aa|0)<(bc|0))}bc=k[x>>2]|0;aa=Rqa(bc>>>0>536870911?-1:bc<<3)|0;if((bc|0)>0){_b=k[A>>2]|0;jc=ma((k[w>>2]|0)+-1|0,bc)|0;dc=0;do{p[aa+(dc<<3)>>3]=+p[_b+(jc+dc<<3)>>3];dc=dc+1|0}while((dc|0)<(bc|0))}bc=c+52|0;dc=k[bc>>2]|0;h:do if((dc|0)>0){jc=c+36|0;_b=c+108|0;cc=c+100|0;gc=dc;fc=0;ec=0;i:while(1){j:do if(!(k[(k[jc>>2]|0)+(ec<<2)>>2]|0))kc=fc;else{lc=+p[(k[H>>2]|0)+(ec<<3)>>3];if(lc==537.0){if(~~+p[(k[D>>2]|0)+(ec<<3)>>3]){ba=Qqa(32)|0;ca=ec+1|0;B=0;Pa(1,ba|0,fc+1+(k[_b>>2]|0)|0,ca+(k[cc>>2]|0)|0,0,0.0,497);hc=B;B=0;if(hc&1){mc=ba;Ua=206;break i}ih(b,ba)|0;ba=Qqa(32)|0;hc=fc+2|0;B=0;Pa(1,ba|0,hc+(k[_b>>2]|0)|0,ca+(k[cc>>2]|0)|0,1,0.0,497);da=B;B=0;if(da&1){nc=ba;Ua=207;break i}ih(b,ba)|0;ba=(k[y>>2]|0)+(ec<<3)|0;oc=+$(+(+p[ba>>3]));p[t>>3]=oc;da=k[t+4>>2]|0;if(da>>>0>2146435072|(da|0)==2146435072&(k[t>>2]|0)>>>0>0)pc=hc;else{hc=Qqa(32)|0;da=fc+3|0;B=0;Pa(1,hc|0,da+(k[_b>>2]|0)|0,ca+(k[cc>>2]|0)|0,2,+(+p[ba>>3]),497);ba=B;B=0;if(ba&1){qc=hc;Ua=208;break i}ih(b,hc)|0;pc=da}da=(k[z>>2]|0)+(ec<<3)|0;oc=+$(+(+p[da>>3]));p[t>>3]=oc;hc=k[t+4>>2]|0;if(hc>>>0>2146435072|(hc|0)==2146435072&(k[t>>2]|0)>>>0>0){kc=pc;break}hc=Qqa(32)|0;ba=pc+1|0;B=0;Pa(1,hc|0,ba+(k[_b>>2]|0)|0,ca+(k[cc>>2]|0)|0,3,+(+p[da>>3]),497);da=B;B=0;if(da&1){rc=hc;Ua=212;break i}ih(b,hc)|0;kc=ba;break}if(!~~+p[(k[C>>2]|0)+(ec<<3)>>3]){Ua=226;break i}ba=Qqa(32)|0;hc=ec+1|0;B=0;Pa(1,ba|0,fc+1+(k[_b>>2]|0)|0,hc+(k[cc>>2]|0)|0,2,0.0,497);da=B;B=0;if(da&1){sc=ba;Ua=219;break i}ih(b,ba)|0;ba=Qqa(32)|0;da=fc+2|0;B=0;Pa(1,ba|0,da+(k[_b>>2]|0)|0,hc+(k[cc>>2]|0)|0,3,0.0,497);ca=B;B=0;if(ca&1){tc=ba;Ua=220;break i}ih(b,ba)|0;ba=(k[y>>2]|0)+(ec<<3)|0;oc=+$(+(+p[ba>>3]));p[t>>3]=oc;ca=k[t+4>>2]|0;if(ca>>>0>2146435072|(ca|0)==2146435072&(k[t>>2]|0)>>>0>0)uc=da;else{da=Qqa(32)|0;ca=fc+3|0;B=0;Pa(1,da|0,ca+(k[_b>>2]|0)|0,hc+(k[cc>>2]|0)|0,0,+(+p[ba>>3]),497);ba=B;B=0;if(ba&1){vc=da;Ua=221;break i}ih(b,da)|0;uc=ca}ca=(k[z>>2]|0)+(ec<<3)|0;oc=+$(+(+p[ca>>3]));p[t>>3]=oc;da=k[t+4>>2]|0;if(da>>>0>2146435072|(da|0)==2146435072&(k[t>>2]|0)>>>0>0){kc=uc;break}da=Qqa(32)|0;ba=uc+1|0;B=0;Pa(1,da|0,ba+(k[_b>>2]|0)|0,hc+(k[cc>>2]|0)|0,1,+(+p[ca>>3]),497);ca=B;B=0;if(ca&1){wc=da;Ua=225;break i}ih(b,da)|0;kc=ba;break}switch(~~lc|0){case 541:{if(~~+p[(k[D>>2]|0)+(ec<<3)>>3]){ba=Qqa(32)|0;da=ec+1|0;B=0;Pa(1,ba|0,fc+1+(k[_b>>2]|0)|0,da+(k[cc>>2]|0)|0,2,0.0,497);ca=B;B=0;if(ca&1){xc=ba;Ua=257;break i}ih(b,ba)|0;ba=Qqa(32)|0;B=0;Pa(1,ba|0,fc+2+(k[_b>>2]|0)|0,da+(k[cc>>2]|0)|0,3,0.0,497);ca=B;B=0;if(ca&1){yc=ba;Ua=258;break i}ih(b,ba)|0;ba=Qqa(32)|0;ca=fc+3|0;B=0;Pa(1,ba|0,ca+(k[_b>>2]|0)|0,da+(k[cc>>2]|0)|0,4,0.0,497);hc=B;B=0;if(hc&1){zc=ba;Ua=259;break i}ih(b,ba)|0;ba=(k[y>>2]|0)+(ec<<3)|0;oc=+$(+(+p[ba>>3]));p[t>>3]=oc;hc=k[t+4>>2]|0;if(hc>>>0>2146435072|(hc|0)==2146435072&(k[t>>2]|0)>>>0>0)Ac=ca;else{ca=Qqa(32)|0;hc=fc+4|0;B=0;Pa(1,ca|0,hc+(k[_b>>2]|0)|0,da+(k[cc>>2]|0)|0,0,+(+p[ba>>3]),497);ba=B;B=0;if(ba&1){Bc=ca;Ua=260;break i}ih(b,ca)|0;Ac=hc}hc=(k[z>>2]|0)+(ec<<3)|0;oc=+$(+(+p[hc>>3]));p[t>>3]=oc;ca=k[t+4>>2]|0;if(ca>>>0>2146435072|(ca|0)==2146435072&(k[t>>2]|0)>>>0>0){kc=Ac;break j}ca=Qqa(32)|0;ba=Ac+1|0;B=0;Pa(1,ca|0,ba+(k[_b>>2]|0)|0,da+(k[cc>>2]|0)|0,1,+(+p[hc>>3]),497);hc=B;B=0;if(hc&1){Cc=ca;Ua=264;break i}ih(b,ca)|0;kc=ba;break j}if(!~~+p[(k[E>>2]|0)+(ec<<3)>>3]){Ua=282;break i}ba=Qqa(32)|0;ca=ec+1|0;B=0;Pa(1,ba|0,fc+1+(k[_b>>2]|0)|0,ca+(k[cc>>2]|0)|0,0,0.0,497);hc=B;B=0;if(hc&1){Dc=ba;Ua=271;break i}ih(b,ba)|0;ba=Qqa(32)|0;hc=fc+2|0;B=0;Pa(1,ba|0,hc+(k[_b>>2]|0)|0,ca+(k[cc>>2]|0)|0,1,0.0,497);da=B;B=0;if(da&1){Ec=ba;Ua=272;break i}ih(b,ba)|0;ba=(k[y>>2]|0)+(ec<<3)|0;oc=+$(+(+p[ba>>3]));p[t>>3]=oc;da=k[t+4>>2]|0;if(da>>>0>2146435072|(da|0)==2146435072&(k[t>>2]|0)>>>0>0)Fc=hc;else{hc=Qqa(32)|0;da=fc+3|0;B=0;Pa(1,hc|0,da+(k[_b>>2]|0)|0,ca+(k[cc>>2]|0)|0,2,+(+p[ba>>3]),497);ba=B;B=0;if(ba&1){Gc=hc;Ua=273;break i}ih(b,hc)|0;Fc=da}da=(k[z>>2]|0)+(ec<<3)|0;oc=+$(+(+p[da>>3]));p[t>>3]=oc;hc=k[t+4>>2]|0;if(hc>>>0>2146435072|(hc|0)==2146435072&(k[t>>2]|0)>>>0>0)Hc=Fc;else{hc=Qqa(32)|0;ba=Fc+1|0;B=0;Pa(1,hc|0,ba+(k[_b>>2]|0)|0,ca+(k[cc>>2]|0)|0,3,+(+p[da>>3]),497);da=B;B=0;if(da&1){Ic=hc;Ua=277;break i}ih(b,hc)|0;Hc=ba}ba=(k[A>>2]|0)+(ec<<3)|0;oc=+$(+(+p[ba>>3]));p[t>>3]=oc;hc=k[t+4>>2]|0;if(hc>>>0>2146435072|(hc|0)==2146435072&(k[t>>2]|0)>>>0>0){kc=Hc;break j}hc=Qqa(32)|0;da=Hc+1|0;B=0;Pa(1,hc|0,da+(k[_b>>2]|0)|0,ca+(k[cc>>2]|0)|0,4,+(+p[ba>>3]),497);ba=B;B=0;if(ba&1){Jc=hc;Ua=281;break i}ih(b,hc)|0;kc=da;break j;break}case 538:{if(~~+p[(k[C>>2]|0)+(ec<<3)>>3]){da=Qqa(32)|0;hc=ec+1|0;B=0;Pa(1,da|0,fc+1+(k[_b>>2]|0)|0,hc+(k[cc>>2]|0)|0,2,0.0,497);ba=B;B=0;if(ba&1){Kc=da;Ua=312;break i}ih(b,da)|0;da=Qqa(32)|0;B=0;Pa(1,da|0,fc+2+(k[_b>>2]|0)|0,hc+(k[cc>>2]|0)|0,3,0.0,497);ba=B;B=0;if(ba&1){Lc=da;Ua=313;break i}ih(b,da)|0;da=Qqa(32)|0;ba=fc+3|0;B=0;Pa(1,da|0,ba+(k[_b>>2]|0)|0,hc+(k[cc>>2]|0)|0,4,0.0,497);ca=B;B=0;if(ca&1){Mc=da;Ua=314;break i}ih(b,da)|0;da=(k[y>>2]|0)+(ec<<3)|0;oc=+$(+(+p[da>>3]));p[t>>3]=oc;ca=k[t+4>>2]|0;if(ca>>>0>2146435072|(ca|0)==2146435072&(k[t>>2]|0)>>>0>0)Nc=ba;else{ba=Qqa(32)|0;ca=fc+4|0;B=0;Pa(1,ba|0,ca+(k[_b>>2]|0)|0,hc+(k[cc>>2]|0)|0,0,+(+p[da>>3]),497);da=B;B=0;if(da&1){Oc=ba;Ua=315;break i}ih(b,ba)|0;Nc=ca}ca=(k[z>>2]|0)+(ec<<3)|0;oc=+$(+(+p[ca>>3]));p[t>>3]=oc;ba=k[t+4>>2]|0;if(ba>>>0>2146435072|(ba|0)==2146435072&(k[t>>2]|0)>>>0>0){kc=Nc;break j}ba=Qqa(32)|0;da=Nc+1|0;B=0;Pa(1,ba|0,da+(k[_b>>2]|0)|0,hc+(k[cc>>2]|0)|0,1,+(+p[ca>>3]),497);ca=B;B=0;if(ca&1){Pc=ba;Ua=319;break i}ih(b,ba)|0;kc=da;break j}if(!~~+p[(k[E>>2]|0)+(ec<<3)>>3]){Ua=337;break i}da=Qqa(32)|0;ba=ec+1|0;B=0;Pa(1,da|0,fc+1+(k[_b>>2]|0)|0,ba+(k[cc>>2]|0)|0,0,0.0,497);ca=B;B=0;if(ca&1){Qc=da;Ua=326;break i}ih(b,da)|0;da=Qqa(32)|0;ca=fc+2|0;B=0;Pa(1,da|0,ca+(k[_b>>2]|0)|0,ba+(k[cc>>2]|0)|0,1,0.0,497);hc=B;B=0;if(hc&1){Rc=da;Ua=327;break i}ih(b,da)|0;da=(k[y>>2]|0)+(ec<<3)|0;oc=+$(+(+p[da>>3]));p[t>>3]=oc;hc=k[t+4>>2]|0;if(hc>>>0>2146435072|(hc|0)==2146435072&(k[t>>2]|0)>>>0>0)Sc=ca;else{ca=Qqa(32)|0;hc=fc+3|0;B=0;Pa(1,ca|0,hc+(k[_b>>2]|0)|0,ba+(k[cc>>2]|0)|0,2,+(+p[da>>3]),497);da=B;B=0;if(da&1){Tc=ca;Ua=328;break i}ih(b,ca)|0;Sc=hc}hc=(k[z>>2]|0)+(ec<<3)|0;oc=+$(+(+p[hc>>3]));p[t>>3]=oc;ca=k[t+4>>2]|0;if(ca>>>0>2146435072|(ca|0)==2146435072&(k[t>>2]|0)>>>0>0)Uc=Sc;else{ca=Qqa(32)|0;da=Sc+1|0;B=0;Pa(1,ca|0,da+(k[_b>>2]|0)|0,ba+(k[cc>>2]|0)|0,3,+(+p[hc>>3]),497);hc=B;B=0;if(hc&1){Vc=ca;Ua=332;break i}ih(b,ca)|0;Uc=da}da=(k[A>>2]|0)+(ec<<3)|0;oc=+$(+(+p[da>>3]));p[t>>3]=oc;ca=k[t+4>>2]|0;if(ca>>>0>2146435072|(ca|0)==2146435072&(k[t>>2]|0)>>>0>0){kc=Uc;break j}ca=Qqa(32)|0;hc=Uc+1|0;B=0;Pa(1,ca|0,hc+(k[_b>>2]|0)|0,ba+(k[cc>>2]|0)|0,4,+(+p[da>>3]),497);da=B;B=0;if(da&1){Wc=ca;Ua=336;break i}ih(b,ca)|0;kc=hc;break j;break}default:{hc=k[q>>2]|0;if((hc|0)==(gc|0)?(ca=(k[y>>2]|0)+(ec<<3)|0,oc=+$(+(+p[ca>>3])),p[t>>3]=oc,da=k[t+4>>2]|0,!(da>>>0>2146435072|(da|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){da=Qqa(32)|0;ba=fc+1|0;B=0;Pa(1,da|0,ba+(k[_b>>2]|0)|0,ec+1+(k[cc>>2]|0)|0,0,+(+p[ca>>3]),497);ca=B;B=0;if(ca&1){Xc=da;Ua=364;break i}ih(b,da)|0;Yc=ba}else Ua=365;do if((Ua|0)==365){Ua=0;if((hc|0)!=(gc+1|0)){if(!(lc==535.0)){Yc=fc;break}ba=Qqa(40)|0;da=fc+1|0;B=0;ua(174,ba|0,da+(k[_b>>2]|0)|0,ec+1+(k[cc>>2]|0)|0,0,497);ca=B;B=0;if(ca&1){Zc=ba;Ua=377;break i}ih(b,ba)|0;Yc=da;break}da=k[s>>2]|0;ba=Rqa(da>>>0>536870911?-1:da<<3)|0;if((da|0)>0){ca=k[y>>2]|0;Xb=ma(da,ec)|0;Zb=0;Yb=0;do{oc=+p[ca+(Xb+Zb<<3)>>3];p[ba+(Zb<<3)>>3]=oc;_c=+$(+oc);p[t>>3]=_c;Bb=k[t+4>>2]|0;Yb=Yb|(Bb>>>0<2146435072|(Bb|0)==2146435072&(k[t>>2]|0)>>>0<1);Zb=Zb+1|0}while((Zb|0)<(da|0));if(Yb){Zb=Qqa(36)|0;Xb=fc+1|0;B=0;Ka(11,Zb|0,Xb+(k[_b>>2]|0)|0,ec+1+(k[cc>>2]|0)|0,0,da|0,ac|0,ba|0,497);ca=B;B=0;if(ca&1){$c=Zb;Ua=372;break i}ih(b,Zb)|0;ad=Xb}else ad=fc}else ad=fc;Tqa(ba);Yc=ad}while(0);hc=k[u>>2]|0;Lb=k[bc>>2]|0;if((hc|0)==(Lb|0)?(Xb=(k[z>>2]|0)+(ec<<3)|0,lc=+$(+(+p[Xb>>3])),p[t>>3]=lc,Zb=k[t+4>>2]|0,!(Zb>>>0>2146435072|(Zb|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){Zb=Qqa(32)|0;ca=Yc+1|0;B=0;Pa(1,Zb|0,ca+(k[_b>>2]|0)|0,ec+1+(k[cc>>2]|0)|0,1,+(+p[Xb>>3]),497);Xb=B;B=0;if(Xb&1){bd=Zb;Ua=382;break i}ih(b,Zb)|0;cd=ca}else Ua=383;do if((Ua|0)==383){Ua=0;if((hc|0)!=(Lb+1|0)){if(!(+p[(k[H>>2]|0)+(ec<<3)>>3]==535.0)){cd=Yc;break}ca=Qqa(40)|0;Zb=Yc+1|0;B=0;ua(174,ca|0,Zb+(k[_b>>2]|0)|0,ec+1+(k[cc>>2]|0)|0,1,497);Xb=B;B=0;if(Xb&1){dd=ca;Ua=395;break i}ih(b,ca)|0;cd=Zb;break}Zb=k[v>>2]|0;ca=Rqa(Zb>>>0>536870911?-1:Zb<<3)|0;if((Zb|0)>0){Xb=k[z>>2]|0;ab=ma(Zb,ec)|0;Bb=0;Ub=0;do{lc=+p[Xb+(ab+Bb<<3)>>3];p[ca+(Bb<<3)>>3]=lc;_c=+$(+lc);p[t>>3]=_c;Wb=k[t+4>>2]|0;Ub=Ub|(Wb>>>0<2146435072|(Wb|0)==2146435072&(k[t>>2]|0)>>>0<1);Bb=Bb+1|0}while((Bb|0)<(Zb|0));if(Ub){Bb=Qqa(36)|0;ab=Yc+1|0;B=0;Ka(11,Bb|0,ab+(k[_b>>2]|0)|0,ec+1+(k[cc>>2]|0)|0,1,Zb|0,ic|0,ca|0,497);Xb=B;B=0;if(Xb&1){ed=Bb;Ua=390;break i}ih(b,Bb)|0;fd=ab}else fd=Yc}else fd=Yc;Tqa(ca);cd=fd}while(0);k:do switch(~~+p[(k[H>>2]|0)+(ec<<3)>>3]|0){case 534:case 542:{Lb=k[w>>2]|0;hc=k[bc>>2]|0;if((Lb|0)==(hc|0)?(ab=(k[A>>2]|0)+(ec<<3)|0,_c=+$(+(+p[ab>>3])),p[t>>3]=_c,Bb=k[t+4>>2]|0,!(Bb>>>0>2146435072|(Bb|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){Bb=Qqa(32)|0;Xb=cd+1|0;B=0;Pa(1,Bb|0,Xb+(k[_b>>2]|0)|0,ec+1+(k[cc>>2]|0)|0,2,+(+p[ab>>3]),497);ab=B;B=0;if(ab&1){gd=Bb;Ua=401;break i}ih(b,Bb)|0;hd=Xb;break k}if((Lb|0)==(hc+1|0)){hc=k[x>>2]|0;Lb=Rqa(hc>>>0>536870911?-1:hc<<3)|0;do if((hc|0)>0){Xb=k[A>>2]|0;Bb=ma(hc,ec)|0;ab=0;ba=0;do{_c=+p[Xb+(Bb+ab<<3)>>3];p[Lb+(ab<<3)>>3]=_c;lc=+$(+_c);p[t>>3]=lc;da=k[t+4>>2]|0;ba=ba|(da>>>0<2146435072|(da|0)==2146435072&(k[t>>2]|0)>>>0<1);ab=ab+1|0}while((ab|0)<(hc|0));if(!ba){id=cd;break}ab=Qqa(36)|0;Bb=cd+1|0;B=0;Ka(11,ab|0,Bb+(k[_b>>2]|0)|0,ec+1+(k[cc>>2]|0)|0,2,hc|0,aa|0,Lb|0,497);Xb=B;B=0;if(Xb&1){jd=ab;Ua=409;break i}ih(b,ab)|0;id=Bb}else id=cd;while(0);Tqa(Lb);hd=id}else hd=cd;break}default:hd=cd}while(0);if((~~+p[(k[H>>2]|0)+(ec<<3)>>3]|0)!=534){kc=hd;break j}hc=Qqa(32)|0;ca=hd+1|0;B=0;Pa(1,hc|0,ca+(k[_b>>2]|0)|0,ec+1+(k[cc>>2]|0)+(k[bc>>2]|0)|0,0,+(+p[f>>3]*+p[g>>3]*(+p[(k[I>>2]|0)+(ec<<3)>>3]-+p[(k[J>>2]|0)+(ec<<3)>>3])/+p[h>>3]),497);Zb=B;B=0;if(Zb&1){kd=hc;Ua=414;break i}ih(b,hc)|0;kc=ca;break j}}}while(0);ec=ec+1|0;gc=k[bc>>2]|0;if((ec|0)>=(gc|0))break h;else fc=kc}switch(Ua|0){case 206:{fc=Rb()|0;gc=Q;Sqa(mc);Va=gc;Wa=fc;Qb(Wa|0);break}case 207:{fc=Rb()|0;gc=Q;Sqa(nc);Va=gc;Wa=fc;Qb(Wa|0);break}case 208:{fc=Rb()|0;gc=Q;Sqa(qc);Va=gc;Wa=fc;Qb(Wa|0);break}case 212:{fc=Rb()|0;gc=Q;Sqa(rc);Va=gc;Wa=fc;Qb(Wa|0);break}case 219:{fc=Rb()|0;gc=Q;Sqa(sc);Va=gc;Wa=fc;Qb(Wa|0);break}case 220:{fc=Rb()|0;gc=Q;Sqa(tc);Va=gc;Wa=fc;Qb(Wa|0);break}case 221:{fc=Rb()|0;gc=Q;Sqa(vc);Va=gc;Wa=fc;Qb(Wa|0);break}case 225:{fc=Rb()|0;gc=Q;Sqa(wc);Va=gc;Wa=fc;Qb(Wa|0);break}case 226:{fc=ea+56|0;gc=ea+4|0;k[ea>>2]=27524;k[fc>>2]=27544;B=0;wa(508,ea+56|0,gc|0);ec=B;B=0;if(ec&1){ec=Rb()|0;ld=Q;md=ec;vva(fc);Qb(md|0)}k[ea+128>>2]=0;k[ea+132>>2]=-1;k[ea>>2]=27468;k[fc>>2]=27488;B=0;va(448,gc|0);ec=B;B=0;do if(ec&1){cc=Rb()|0;nd=Q;od=cc}else{k[gc>>2]=27560;cc=ea+36|0;k[cc>>2]=0;k[cc+4>>2]=0;k[cc+8>>2]=0;k[cc+12>>2]=0;k[ea+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,gc|0,d|0);_b=B;B=0;if(_b&1){_b=Rb()|0;jc=Q;Yua(d);Yua(cc);Ava(gc);nd=jc;od=_b;break}Yua(d);B=0;_b=Ia(40,ea|0,127218,63)|0;jc=B;B=0;l:do if(!(jc&1)?(B=0,Xa(239,_b|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,fa|0,127077,81);yb=B;B=0;do if(!(yb&1)){B=0;eb(502,ga|0,135838,17);ca=B;B=0;if(ca&1){ca=Rb()|0;hc=Q;Yua(fa);pd=hc;qd=ca;break}B=0;wa(510,ha|0,gc|0);ca=B;B=0;if(ca&1){ca=Rb()|0;rd=1;sd=Q;td=ca}else{B=0;ua(163,o|0,fa|0,ga|0,258,ha|0);ca=B;B=0;if(ca&1)ud=1;else{B=0;eb(503,o|0,1240,229);B=0;ud=0}ca=Rb()|0;hc=Q;Yua(ha);rd=ud;sd=hc;td=ca}Yua(ga);Yua(fa);if(rd){pd=sd;qd=td}else{vd=sd;wd=td;break l}}else{ca=Rb()|0;pd=Q;qd=ca}while(0);zb(o|0);vd=pd;wd=qd}else Ua=241;while(0);if((Ua|0)==241){_b=Rb()|0;vd=Q;wd=_b}k[ea>>2]=27468;k[fc>>2]=27488;k[gc>>2]=27560;Yua(cc);Ava(gc);vva(fc);Va=vd;Wa=wd;Qb(Wa|0)}while(0);ld=nd;md=od;vva(fc);Qb(md|0);break}case 257:{gc=Rb()|0;ec=Q;Sqa(xc);Va=ec;Wa=gc;Qb(Wa|0);break}case 258:{gc=Rb()|0;ec=Q;Sqa(yc);Va=ec;Wa=gc;Qb(Wa|0);break}case 259:{gc=Rb()|0;ec=Q;Sqa(zc);Va=ec;Wa=gc;Qb(Wa|0);break}case 260:{gc=Rb()|0;ec=Q;Sqa(Bc);Va=ec;Wa=gc;Qb(Wa|0);break}case 264:{gc=Rb()|0;ec=Q;Sqa(Cc);Va=ec;Wa=gc;Qb(Wa|0);break}case 271:{gc=Rb()|0;ec=Q;Sqa(Dc);Va=ec;Wa=gc;Qb(Wa|0);break}case 272:{gc=Rb()|0;ec=Q;Sqa(Ec);Va=ec;Wa=gc;Qb(Wa|0);break}case 273:{gc=Rb()|0;ec=Q;Sqa(Gc);Va=ec;Wa=gc;Qb(Wa|0);break}case 277:{gc=Rb()|0;ec=Q;Sqa(Ic);Va=ec;Wa=gc;Qb(Wa|0);break}case 281:{gc=Rb()|0;ec=Q;Sqa(Jc);Va=ec;Wa=gc;Qb(Wa|0);break}case 282:{gc=ia+56|0;ec=ia+4|0;k[ia>>2]=27524;k[gc>>2]=27544;B=0;wa(508,ia+56|0,ec|0);_b=B;B=0;if(_b&1){_b=Rb()|0;xd=Q;yd=_b;vva(gc);Qb(yd|0)}k[ia+128>>2]=0;k[ia+132>>2]=-1;k[ia>>2]=27468;k[gc>>2]=27488;B=0;va(448,ec|0);_b=B;B=0;do if(_b&1){jc=Rb()|0;zd=Q;Ad=jc}else{k[ec>>2]=27560;jc=ia+36|0;k[jc>>2]=0;k[jc+4>>2]=0;k[jc+8>>2]=0;k[jc+12>>2]=0;k[ia+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ec|0,d|0);yb=B;B=0;if(yb&1){yb=Rb()|0;ca=Q;Yua(d);Yua(jc);Ava(ec);zd=ca;Ad=yb;break}Yua(d);B=0;yb=Ia(40,ia|0,127282,61)|0;ca=B;B=0;m:do if(!(ca&1)?(B=0,Xa(239,yb|0,0)|0,hc=B,B=0,!(hc&1)):0){hc=Ab(20)|0;B=0;eb(502,ja|0,127077,81);Zb=B;B=0;do if(!(Zb&1)){B=0;eb(502,ka|0,135838,17);Ub=B;B=0;if(Ub&1){Ub=Rb()|0;Bb=Q;Yua(ja);Bd=Bb;Cd=Ub;break}B=0;wa(510,la|0,ec|0);Ub=B;B=0;if(Ub&1){Ub=Rb()|0;Dd=1;Ed=Q;Fd=Ub}else{B=0;ua(163,hc|0,ja|0,ka|0,298,la|0);Ub=B;B=0;if(Ub&1)Gd=1;else{B=0;eb(503,hc|0,1240,229);B=0;Gd=0}Ub=Rb()|0;Bb=Q;Yua(la);Dd=Gd;Ed=Bb;Fd=Ub}Yua(ka);Yua(ja);if(Dd){Bd=Ed;Cd=Fd}else{Hd=Ed;Id=Fd;break m}}else{Ub=Rb()|0;Bd=Q;Cd=Ub}while(0);zb(hc|0);Hd=Bd;Id=Cd}else Ua=297;while(0);if((Ua|0)==297){yb=Rb()|0;Hd=Q;Id=yb}k[ia>>2]=27468;k[gc>>2]=27488;k[ec>>2]=27560;Yua(jc);Ava(ec);vva(gc);Va=Hd;Wa=Id;Qb(Wa|0)}while(0);xd=zd;yd=Ad;vva(gc);Qb(yd|0);break}case 312:{ec=Rb()|0;_b=Q;Sqa(Kc);Va=_b;Wa=ec;Qb(Wa|0);break}case 313:{ec=Rb()|0;_b=Q;Sqa(Lc);Va=_b;Wa=ec;Qb(Wa|0);break}case 314:{ec=Rb()|0;_b=Q;Sqa(Mc);Va=_b;Wa=ec;Qb(Wa|0);break}case 315:{ec=Rb()|0;_b=Q;Sqa(Oc);Va=_b;Wa=ec;Qb(Wa|0);break}case 319:{ec=Rb()|0;_b=Q;Sqa(Pc);Va=_b;Wa=ec;Qb(Wa|0);break}case 326:{ec=Rb()|0;_b=Q;Sqa(Qc);Va=_b;Wa=ec;Qb(Wa|0);break}case 327:{ec=Rb()|0;_b=Q;Sqa(Rc);Va=_b;Wa=ec;Qb(Wa|0);break}case 328:{ec=Rb()|0;_b=Q;Sqa(Tc);Va=_b;Wa=ec;Qb(Wa|0);break}case 332:{ec=Rb()|0;_b=Q;Sqa(Vc);Va=_b;Wa=ec;Qb(Wa|0);break}case 336:{ec=Rb()|0;_b=Q;Sqa(Wc);Va=_b;Wa=ec;Qb(Wa|0);break}case 337:{ec=na+56|0;_b=na+4|0;k[na>>2]=27524;k[ec>>2]=27544;B=0;wa(508,na+56|0,_b|0);fc=B;B=0;if(fc&1){fc=Rb()|0;Jd=Q;Kd=fc;vva(ec);Qb(Kd|0)}k[na+128>>2]=0;k[na+132>>2]=-1;k[na>>2]=27468;k[ec>>2]=27488;B=0;va(448,_b|0);fc=B;B=0;do if(fc&1){yb=Rb()|0;Ld=Q;Md=yb}else{k[_b>>2]=27560;yb=na+36|0;k[yb>>2]=0;k[yb+4>>2]=0;k[yb+8>>2]=0;k[yb+12>>2]=0;k[na+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,_b|0,d|0);ca=B;B=0;if(ca&1){ca=Rb()|0;cc=Q;Yua(d);Yua(yb);Ava(_b);Ld=cc;Md=ca;break}Yua(d);B=0;ca=Ia(40,na|0,127344,63)|0;cc=B;B=0;n:do if(!(cc&1)?(B=0,Xa(239,ca|0,0)|0,Zb=B,B=0,!(Zb&1)):0){Zb=Ab(20)|0;B=0;eb(502,oa|0,127077,81);o=B;B=0;do if(!(o&1)){B=0;eb(502,pa|0,135838,17);Ub=B;B=0;if(Ub&1){Ub=Rb()|0;Bb=Q;Yua(oa);Nd=Bb;Od=Ub;break}B=0;wa(510,qa|0,_b|0);Ub=B;B=0;if(Ub&1){Ub=Rb()|0;Pd=1;Qd=Q;Rd=Ub}else{B=0;ua(163,Zb|0,oa|0,pa|0,338,qa|0);Ub=B;B=0;if(Ub&1)Sd=1;else{B=0;eb(503,Zb|0,1240,229);B=0;Sd=0}Ub=Rb()|0;Bb=Q;Yua(qa);Pd=Sd;Qd=Bb;Rd=Ub}Yua(pa);Yua(oa);if(Pd){Nd=Qd;Od=Rd}else{Td=Qd;Ud=Rd;break n}}else{Ub=Rb()|0;Nd=Q;Od=Ub}while(0);zb(Zb|0);Td=Nd;Ud=Od}else Ua=352;while(0);if((Ua|0)==352){ca=Rb()|0;Td=Q;Ud=ca}k[na>>2]=27468;k[ec>>2]=27488;k[_b>>2]=27560;Yua(yb);Ava(_b);vva(ec);Va=Td;Wa=Ud;Qb(Wa|0)}while(0);Jd=Ld;Kd=Md;vva(ec);Qb(Kd|0);break}case 364:{_b=Rb()|0;fc=Q;Sqa(Xc);Va=fc;Wa=_b;Qb(Wa|0);break}case 372:{_b=Rb()|0;fc=Q;Sqa($c);Va=fc;Wa=_b;Qb(Wa|0);break}case 377:{_b=Rb()|0;fc=Q;Sqa(Zc);Va=fc;Wa=_b;Qb(Wa|0);break}case 382:{_b=Rb()|0;fc=Q;Sqa(bd);Va=fc;Wa=_b;Qb(Wa|0);break}case 390:{_b=Rb()|0;fc=Q;Sqa(ed);Va=fc;Wa=_b;Qb(Wa|0);break}case 395:{_b=Rb()|0;fc=Q;Sqa(dd);Va=fc;Wa=_b;Qb(Wa|0);break}case 401:{_b=Rb()|0;fc=Q;Sqa(gd);Va=fc;Wa=_b;Qb(Wa|0);break}case 409:{_b=Rb()|0;fc=Q;Sqa(jd);Va=fc;Wa=_b;Qb(Wa|0);break}case 414:{_b=Rb()|0;fc=Q;Sqa(kd);Va=fc;Wa=_b;Qb(Wa|0);break}}}while(0);Mka(c,k[y>>2]|0,129044);Mka(c,k[z>>2]|0,129067);Mka(c,k[A>>2]|0,129412);Mka(c,k[C>>2]|0,129090);if((((k[$b>>2]|0)==302?(Mka(c,k[D>>2]|0,127193),(k[$b>>2]|0)==302):0)?(Mka(c,k[E>>2]|0,129435),(k[$b>>2]|0)==302):0)?(Mka(c,k[F>>2]|0,136615),(k[$b>>2]|0)==302):0)Mka(c,k[G>>2]|0,134962);Mka(c,k[H>>2]|0,129588);Mka(c,k[I>>2]|0,134925);Mka(c,k[J>>2]|0,127183);Tqa(ac);Tqa(ic);Tqa(aa);r=a;return}function V8(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;a=r;r=r+80|0;d=a+24|0;e=a;f=a+64|0;g=a+75|0;h=a+74|0;j=a+73|0;l=a+72|0;m=a+60|0;n=a+56|0;o=a+52|0;q=a+48|0;s=a+44|0;k[q>>2]=0;k[s>>2]=0;zka(c,h,129368);zka(c,l,132257);zka(c,g,129346);zka(c,j,129391);Fka(c,n,127408);if(!((i[j>>0]|i[g>>0]|i[l>>0]|i[h>>0])<<24>>24)){r=a;return}Qka(c,s,m,0,127426);h=k[m>>2]|0;a:do if((h|0)>0){l=c+36|0;g=c+100|0;j=f+4|0;t=c+104|0;u=h;v=0;w=0;while(1){x=w<<1;y=k[s>>2]|0;z=+p[y+(x<<3)>>3];if(!(k[(k[l>>2]|0)+(~~(z+-1.0)<<2)>>2]|0)){A=u;C=v}else{D=k[g>>2]|0;k[f>>2]=D+~~z;k[j>>2]=~~+p[y+((x|1)<<3)>>3]+D;D=Qqa(28)|0;x=v+1|0;B=0;ib(298,D|0,x+(k[t>>2]|0)|0,f|0,497);y=B;B=0;if(y&1){E=D;break}ih(b,D)|0;A=k[m>>2]|0;C=x}w=w+1|0;if((w|0)>=(A|0)){F=C;break a}else{u=A;v=C}}v=Rb()|0;u=Q;Sqa(E);G=u;H=v;Qb(H|0)}else F=0;while(0);Mka(c,k[s>>2]|0,127426);if(!(k[n>>2]|0)){r=a;return}Qka(c,q,o,0,127458);k[e>>2]=127458;k[e+4>>2]=137052;k[e+8>>2]=134945;k[e+12>>2]=134925;k[e+16>>2]=134962;Ska(c,5,e);e=k[o>>2]|0;b:do if((e|0)>0){n=c+32|0;s=c+104|0;E=e;C=F;A=0;while(1){if(!(i[(k[n>>2]|0)+(~~+p[(k[q>>2]|0)+(A*12<<3)+16>>3]+-1)>>0]|0)){I=E;J=C}else{m=Qqa(128)|0;f=C+1|0;B=0;ua(175,m|0,f+(k[s>>2]|0)|0,A|0,c|0,497);h=B;B=0;if(h&1){K=m;break}ih(b,m)|0;I=k[o>>2]|0;J=f}A=A+1|0;if((A|0)>=(I|0))break b;else{E=I;C=J}}C=Rb()|0;E=Q;Sqa(K);G=E;H=C;Qb(H|0)}while(0);k[d>>2]=127458;k[d+4>>2]=137052;k[d+8>>2]=134945;k[d+12>>2]=134925;k[d+16>>2]=134962;Lka(c,5,d);d=k[q>>2]|0;if(d)Tqa(d);k[q>>2]=0;r=a;return}function W8(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0.0,W=0;a=r;r=r+112|0;d=a+80|0;e=a+56|0;f=a+32|0;g=a+16|0;h=a;j=a+111|0;l=a+110|0;m=a+109|0;n=a+108|0;o=a+104|0;k[o>>2]=-1;zka(c,j,129346);zka(c,l,129368);zka(c,m,129391);zka(c,n,132257);q=i[j>>0]|0;j=i[l>>0]|0;l=i[m>>0]|0;m=i[n>>0]|0;if((j&255^1)&(q&255^1)&(l&255^1)&(m&255^1)){r=a;return}if(!((q<<24>>24!=0?1.0:0.0)+(j<<24>>24!=0?1.0:0.0)+(l<<24>>24!=0?1.0:0.0)+(m<<24>>24!=0?1.0:0.0)>1.0)){do if(!(q<<24>>24)){if(j<<24>>24){k[o>>2]=738;s=539;break}if(l<<24>>24){Fka(c,o,127039);s=540;break}if(!(m<<24>>24))s=-1;else{Fka(c,o,128764);s=542}}else{Fka(c,o,127016);s=536}while(0);k[h>>2]=129090;k[h+4>>2]=129588;k[h+8>>2]=129116;Ska(c,3,h);if((k[c+40>>2]|0)!=300){k[g>>2]=136615;k[g+4>>2]=136636;k[g+8>>2]=129435;Ska(c,3,g)}hoa(b,c,497,k[o>>2]|0,s);k[f>>2]=136615;k[f+4>>2]=136636;k[f+8>>2]=129090;k[f+12>>2]=129588;k[f+16>>2]=129116;k[f+20>>2]=129435;Lka(c,6,f);r=a;return}if(!b){f=Qqa(36)|0;B=0;va(482,f|0);s=B;B=0;if(s&1){s=Rb()|0;o=Q;Sqa(f);t=o;u=s;Qb(u|0)}else v=f}else v=b;k[e>>2]=136615;k[e+4>>2]=136636;k[e+8>>2]=129090;k[e+12>>2]=129435;k[e+16>>2]=129588;k[e+20>>2]=129116;Ska(c,6,e);e=c+52|0;b=k[e>>2]|0;f=(b|0)>0;a:do if(!(i[n>>0]|0)){if(f){s=c+36|0;o=c+100|0;g=b;h=0;m=0;while(1){if(!(k[(k[s>>2]|0)+(h<<2)>>2]|0)){w=h+1|0;x=g;y=m}else{l=Qqa(144)|0;j=k[o>>2]|0;B=0;q=Xa(246,c|0,129588)|0;z=B;B=0;if(z&1){A=l;break}z=h+1|0;B=0;Ka(13,l|0,z+j|0,h|0,m|0,h|0,c|0,497,~~+p[q+(h<<3)>>3]|0);q=B;B=0;if(q&1){A=l;break}ih(v,l)|0;w=z;x=k[e>>2]|0;y=m+1|0}if((w|0)<(x|0)){g=x;h=w;m=y}else break a}m=Rb()|0;h=Q;Sqa(A);t=h;u=m;Qb(u|0)}}else{b:do if(f){m=c+36|0;h=c+100|0;g=b;o=0;s=0;while(1){if(!(k[(k[m>>2]|0)+(o<<2)>>2]|0)){C=o+1|0;D=g;E=s}else{z=(Jka(c,129588)|0)+(o<<3)|0;l=~~+p[z>>3];z=Qqa(144)|0;q=o+1|0;B=0;Ka(13,z|0,q+(k[h>>2]|0)|0,o|0,s|0,o|0,c|0,497,((l|0)==542?543:l)|0);l=B;B=0;if(l&1){F=z;break}ih(v,z)|0;C=q;D=k[e>>2]|0;E=s+1|0}if((C|0)<(D|0)){g=D;o=C;s=E}else{G=D;H=E;break b}}s=Rb()|0;o=Q;Sqa(F);t=o;u=s;Qb(u|0)}else{G=b;H=0}while(0);s=c+56|0;o=k[s>>2]|0;do if((o|0)>0){g=c+32|0;h=c+100|0;m=o;q=0;z=H;while(1){if(!(i[(k[g>>2]|0)+q>>0]|0)){I=q+1|0;J=m;K=z}else{l=Qqa(144)|0;j=k[e>>2]|0;L=q+1|0;B=0;Ka(13,l|0,L+(k[h>>2]|0)+j|0,j+q|0,z|0,0,c|0,497,543);j=B;B=0;if(j&1){M=l;break}$n(l);ih(v,l)|0;I=L;J=k[s>>2]|0;K=z+1|0}if((I|0)<(J|0)){m=J;q=I;z=K}else{N=K;O=30;break}}if((O|0)==30){P=k[e>>2]|0;R=N;break}z=Rb()|0;q=Q;Sqa(M);t=q;u=z;Qb(u|0)}else{P=G;R=H}while(0);if((P|0)>0){o=c+36|0;z=c+100|0;q=P;m=0;h=R;while(1){if(!(k[(k[o>>2]|0)+(m<<2)>>2]|0)){S=m+1|0;T=q;U=h}else{g=(Jka(c,129588)|0)+(m<<3)|0;V=+p[g>>3];g=Qqa(144)|0;L=k[e>>2]|0;l=k[s>>2]|0;j=m+1|0;B=0;Ka(13,g|0,j+(k[z>>2]|0)+L+l|0,L+m+l|0,h|0,m|0,c|0,497,544);l=B;B=0;if(l&1){W=g;break}if((~~V&-5|0)==536)$n(g);ih(v,g)|0;S=j;T=k[e>>2]|0;U=h+1|0}if((S|0)<(T|0)){q=T;m=S;h=U}else break a}h=Rb()|0;m=Q;Sqa(W);t=m;u=h;Qb(u|0)}}while(0);k[d>>2]=136615;k[d+4>>2]=136636;k[d+8>>2]=129090;k[d+12>>2]=129435;k[d+16>>2]=129588;k[d+20>>2]=129116;Lka(c,6,d);r=a;return}function X8(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0;a=r;r=r+896|0;e=a+876|0;f=a+704|0;g=a+864|0;h=a+852|0;i=a+840|0;j=a+552|0;l=a+688|0;m=a+536|0;n=a+248|0;o=a+400|0;p=a+96|0;q=a+84|0;s=a+72|0;t=a+264|0;u=a+60|0;v=a+48|0;w=a+36|0;x=a+112|0;y=a+24|0;z=a+12|0;A=a;do switch(d|0){case 536:{switch(c|0){case 301:{C=0;D=1;k[b>>2]=C;r=a;return D|0}case 300:case 302:{C=0;D=2;k[b>>2]=C;r=a;return D|0}default:{E=f+56|0;F=f+4|0;k[f>>2]=27524;k[E>>2]=27544;B=0;wa(508,f+56|0,F|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;I=G;vva(E);Qb(I|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[E>>2]=27488;B=0;va(448,F|0);G=B;B=0;do if(G&1){J=Rb()|0;K=Q;L=J}else{k[F>>2]=27560;J=f+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,F|0,e|0);M=B;B=0;if(M&1){M=Rb()|0;N=Q;Yua(e);Yua(J);Ava(F);K=N;L=M;break}Yua(e);B=0;M=Ia(40,f|0,145839,27)|0;N=B;B=0;a:do if(!(N&1)?(B=0,Xa(239,M|0,0)|0,O=B,B=0,!(O&1)):0){O=Ab(20)|0;B=0;eb(502,g|0,127077,81);P=B;B=0;do if(!(P&1)){B=0;eb(502,h|0,135868,11);R=B;B=0;if(R&1){R=Rb()|0;S=Q;Yua(g);T=S;U=R;break}B=0;wa(510,i|0,F|0);R=B;B=0;if(R&1){R=Rb()|0;V=Q;W=R;X=1}else{B=0;ua(163,O|0,g|0,h|0,609,i|0);R=B;B=0;if(R&1)Y=1;else{B=0;eb(503,O|0,1240,229);B=0;Y=0}R=Rb()|0;S=Q;Yua(i);V=S;W=R;X=Y}Yua(h);Yua(g);if(X){T=V;U=W}else{Z=V;_=W;break a}}else{R=Rb()|0;T=Q;U=R}while(0);zb(O|0);Z=T;_=U}else $=19;while(0);if(($|0)==19){M=Rb()|0;Z=Q;_=M}k[f>>2]=27468;k[E>>2]=27488;k[F>>2]=27560;Yua(J);Ava(F);vva(E);aa=Z;ba=_;Qb(ba|0)}while(0);H=K;I=L;vva(E);Qb(I|0)}}break}case 540:{switch(c|0){case 301:{C=0;D=1;k[b>>2]=C;r=a;return D|0}case 302:{C=0;D=2;k[b>>2]=C;r=a;return D|0}default:{F=j+56|0;G=j+4|0;k[j>>2]=27524;k[F>>2]=27544;B=0;wa(508,j+56|0,G|0);M=B;B=0;if(M&1){M=Rb()|0;ca=Q;da=M;vva(F);Qb(da|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[F>>2]=27488;B=0;va(448,G|0);M=B;B=0;do if(M&1){N=Rb()|0;ea=Q;fa=N}else{k[G>>2]=27560;N=j+36|0;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;k[j+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,G|0,e|0);P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(e);Yua(N);Ava(G);ea=R;fa=P;break}Yua(e);B=0;P=Ia(40,j|0,145839,27)|0;R=B;B=0;b:do if(!(R&1)?(B=0,Xa(239,P|0,0)|0,S=B,B=0,!(S&1)):0){S=Ab(20)|0;B=0;eb(502,l|0,127077,81);ga=B;B=0;do if(!(ga&1)){B=0;eb(502,m|0,135868,11);ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(l);ja=ia;ka=ha;break}B=0;wa(510,n|0,G|0);ha=B;B=0;if(ha&1){ha=Rb()|0;la=1;ma=Q;na=ha}else{B=0;ua(163,S|0,l|0,m|0,617,n|0);ha=B;B=0;if(ha&1)oa=1;else{B=0;eb(503,S|0,1240,229);B=0;oa=0}ha=Rb()|0;ia=Q;Yua(n);la=oa;ma=ia;na=ha}Yua(m);Yua(l);if(la){ja=ma;ka=na}else{pa=ma;qa=na;break b}}else{ha=Rb()|0;ja=Q;ka=ha}while(0);zb(S|0);pa=ja;qa=ka}else $=44;while(0);if(($|0)==44){P=Rb()|0;pa=Q;qa=P}k[j>>2]=27468;k[F>>2]=27488;k[G>>2]=27560;Yua(N);Ava(G);vva(F);aa=pa;ba=qa;Qb(ba|0)}while(0);ca=ea;da=fa;vva(F);Qb(da|0)}}break}case 543:{switch(c|0){case 301:{C=0;D=2;k[b>>2]=C;r=a;return D|0}case 302:{C=0;D=3;k[b>>2]=C;r=a;return D|0}default:{G=o+56|0;M=o+4|0;k[o>>2]=27524;k[G>>2]=27544;B=0;wa(508,o+56|0,M|0);E=B;B=0;if(E&1){E=Rb()|0;ra=Q;sa=E;vva(G);Qb(sa|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[G>>2]=27488;B=0;va(448,M|0);E=B;B=0;do if(E&1){P=Rb()|0;ta=Q;xa=P}else{k[M>>2]=27560;P=o+36|0;k[P>>2]=0;k[P+4>>2]=0;k[P+8>>2]=0;k[P+12>>2]=0;k[o+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,M|0,e|0);R=B;B=0;if(R&1){R=Rb()|0;J=Q;Yua(e);Yua(P);Ava(M);ta=J;xa=R;break}Yua(e);B=0;R=Ia(40,o|0,145839,27)|0;J=B;B=0;c:do if(!(J&1)?(B=0,Xa(239,R|0,0)|0,ga=B,B=0,!(ga&1)):0){ga=Ab(20)|0;B=0;eb(502,p|0,127077,81);O=B;B=0;do if(!(O&1)){B=0;eb(502,q|0,135868,11);ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(p);za=ia;Aa=ha;break}B=0;wa(510,s|0,M|0);ha=B;B=0;if(ha&1){ha=Rb()|0;Ba=1;Ca=Q;Da=ha}else{B=0;ua(163,ga|0,p|0,q|0,625,s|0);ha=B;B=0;if(ha&1)Ea=1;else{B=0;eb(503,ga|0,1240,229);B=0;Ea=0}ha=Rb()|0;ia=Q;Yua(s);Ba=Ea;Ca=ia;Da=ha}Yua(q);Yua(p);if(Ba){za=Ca;Aa=Da}else{Fa=Ca;Ga=Da;break c}}else{ha=Rb()|0;za=Q;Aa=ha}while(0);zb(ga|0);Fa=za;Ga=Aa}else $=69;while(0);if(($|0)==69){R=Rb()|0;Fa=Q;Ga=R}k[o>>2]=27468;k[G>>2]=27488;k[M>>2]=27560;Yua(P);Ava(M);vva(G);aa=Fa;ba=Ga;Qb(ba|0)}while(0);ra=ta;sa=xa;vva(G);Qb(sa|0)}}break}case 544:{C=0;D=1;k[b>>2]=C;r=a;return D|0}case 534:{switch(c|0){case 301:{C=0;D=3;k[b>>2]=C;r=a;return D|0}case 302:{C=0;D=4;k[b>>2]=C;r=a;return D|0}default:{M=t+56|0;E=t+4|0;k[t>>2]=27524;k[M>>2]=27544;B=0;wa(508,t+56|0,E|0);F=B;B=0;if(F&1){F=Rb()|0;Ha=Q;Ja=F;vva(M);Qb(Ja|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[M>>2]=27488;B=0;va(448,E|0);F=B;B=0;do if(F&1){R=Rb()|0;Ka=Q;La=R}else{k[E>>2]=27560;R=t+36|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[t+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,E|0,e|0);J=B;B=0;if(J&1){J=Rb()|0;N=Q;Yua(e);Yua(R);Ava(E);Ka=N;La=J;break}Yua(e);B=0;J=Ia(40,t|0,145839,27)|0;N=B;B=0;d:do if(!(N&1)?(B=0,Xa(239,J|0,0)|0,O=B,B=0,!(O&1)):0){O=Ab(20)|0;B=0;eb(502,u|0,127077,81);S=B;B=0;do if(!(S&1)){B=0;eb(502,v|0,135868,11);ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(u);Ma=ia;Na=ha;break}B=0;wa(510,w|0,E|0);ha=B;B=0;if(ha&1){ha=Rb()|0;Oa=1;Pa=Q;Qa=ha}else{B=0;ua(163,O|0,u|0,v|0,633,w|0);ha=B;B=0;if(ha&1)Ra=1;else{B=0;eb(503,O|0,1240,229);B=0;Ra=0}ha=Rb()|0;ia=Q;Yua(w);Oa=Ra;Pa=ia;Qa=ha}Yua(v);Yua(u);if(Oa){Ma=Pa;Na=Qa}else{Sa=Pa;Ta=Qa;break d}}else{ha=Rb()|0;Ma=Q;Na=ha}while(0);zb(O|0);Sa=Ma;Ta=Na}else $=95;while(0);if(($|0)==95){J=Rb()|0;Sa=Q;Ta=J}k[t>>2]=27468;k[M>>2]=27488;k[E>>2]=27560;Yua(R);Ava(E);vva(M);aa=Sa;ba=Ta;Qb(ba|0)}while(0);Ha=Ka;Ja=La;vva(M);Qb(Ja|0)}}break}case 537:{E=Rqa(16)|0;k[E>>2]=536;k[E+4>>2]=536;k[E+8>>2]=540;k[E+12>>2]=540;C=E;D=4;k[b>>2]=C;r=a;return D|0}case 541:{E=Rqa(20)|0;k[E>>2]=540;k[E+4>>2]=540;k[E+8>>2]=543;k[E+12>>2]=543;k[E+16>>2]=543;C=E;D=5;k[b>>2]=C;r=a;return D|0}case 538:{E=Rqa(20)|0;k[E>>2]=536;k[E+4>>2]=536;k[E+8>>2]=543;k[E+12>>2]=543;k[E+16>>2]=543;C=E;D=5;k[b>>2]=C;r=a;return D|0}case 535:case 539:{C=0;D=2;k[b>>2]=C;r=a;return D|0}default:{E=x+56|0;F=x+4|0;k[x>>2]=27524;k[E>>2]=27544;B=0;wa(508,x+56|0,F|0);G=B;B=0;if(G&1){G=Rb()|0;Ua=Q;Va=G;vva(E);Qb(Va|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[E>>2]=27488;B=0;va(448,F|0);G=B;B=0;do if(G&1){J=Rb()|0;Wa=Q;Ya=J}else{k[F>>2]=27560;J=x+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[x+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,F|0,e|0);N=B;B=0;if(N&1){N=Rb()|0;P=Q;Yua(e);Yua(J);Ava(F);Wa=P;Ya=N;break}Yua(e);B=0;N=Ia(40,x|0,127478,14)|0;P=B;B=0;e:do if((((!(P&1)?(B=0,S=ya(427,d|0)|0,ga=B,B=0,!(ga&1)):0)?(ga=Lta(S)|0,B=0,ha=Ia(40,N|0,S|0,ga|0)|0,ga=B,B=0,!(ga&1)):0)?(B=0,ga=Ia(40,ha|0,127493,20)|0,ha=B,B=0,!(ha&1)):0)?(B=0,Xa(239,ga|0,0)|0,ga=B,B=0,!(ga&1)):0){ga=Ab(20)|0;B=0;eb(502,y|0,127077,81);ha=B;B=0;do if(!(ha&1)){B=0;eb(502,z|0,135868,11);S=B;B=0;if(S&1){S=Rb()|0;ia=Q;Yua(y);Za=ia;_a=S;break}B=0;wa(510,A|0,F|0);S=B;B=0;if(S&1){S=Rb()|0;$a=1;ab=Q;bb=S}else{B=0;ua(163,ga|0,y|0,z|0,663,A|0);S=B;B=0;if(S&1)cb=1;else{B=0;eb(503,ga|0,1240,229);B=0;cb=0}S=Rb()|0;ia=Q;Yua(A);$a=cb;ab=ia;bb=S}Yua(z);Yua(y);if($a){Za=ab;_a=bb}else{db=ab;fb=bb;break e}}else{S=Rb()|0;Za=Q;_a=S}while(0);zb(ga|0);db=Za;fb=_a}else $=124;while(0);if(($|0)==124){N=Rb()|0;db=Q;fb=N}k[x>>2]=27468;k[E>>2]=27488;k[F>>2]=27560;Yua(J);Ava(F);vva(E);aa=db;ba=fb;Qb(ba|0)}while(0);Ua=Wa;Va=Ya;vva(E);Qb(Va|0)}}while(0);return 0}function Y8(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;a=r;r=r+224|0;f=a+16|0;g=a;h=a+208|0;j=a+204|0;l=a+200|0;m=a+196|0;n=a+222|0;o=a+221|0;q=a+220|0;s=a+219|0;t=a+48|0;u=a+184|0;v=a+32|0;w=a+20|0;zka(c,n,129346);zka(c,o,129368);zka(c,q,129391);zka(c,s,132257);zka(c,a+218|0,139791);zka(c,a+217|0,134866);Fka(c,a+212|0,127514);zka(c,a+216|0,134882);Fka(c,l,134909);if(((i[o>>0]^1)&(i[n>>0]^1)&(i[q>>0]^1)&(i[s>>0]^1))<<24>>24){r=a;return}k[g>>2]=129145;Ska(c,1,g);x=c+56|0;y=k[x>>2]|0;z=Rqa(y>>>0>1073741823?-1:y<<2)|0;if(y)WEa(z|0,0,y<<2|0)|0;A=i[n>>0]|0;n=i[o>>0]|0;o=i[q>>0]|0;q=i[s>>0]|0;a:do if((A<<24>>24!=0?1.0:0.0)+(n<<24>>24!=0?1.0:0.0)+(o<<24>>24!=0?1.0:0.0)+(q<<24>>24!=0?1.0:0.0)>1.0){if(!(q<<24>>24)){k[h>>2]=738;if((y|0)>0)C=0;else break;while(1){k[z+(C<<2)>>2]=738;C=C+1|0;if((C|0)>=(y|0)){D=y;E=15;break a}}}if((y|0)>0){F=0;while(1){G=(Jka(c,129145)|0)+(F<<3)|0;H=z+(F<<2)|0;switch(~~+p[G>>3]|0){case 538:case 541:case 542:{I=752;break}default:I=738}k[H>>2]=I;F=F+1|0;H=k[x>>2]|0;if((F|0)>=(H|0)){D=H;E=15;break a}}}}else{do if(!(A<<24>>24)){if(n<<24>>24){k[h>>2]=738;break}if(o<<24>>24){Fka(c,h,127039);break}if(q<<24>>24)Fka(c,h,128764)}else Fka(c,h,127016);while(0);F=k[x>>2]|0;if((F|0)>0){H=k[h>>2]|0;G=0;do{k[z+(G<<2)>>2]=H;G=G+1|0}while((G|0)<(F|0));D=F;E=15}}while(0);if((E|0)==15?(D|0)>0:0){E=c+32|0;h=D;D=0;q=0;while(1){if(!(i[(k[E>>2]|0)+q>>0]|0)){J=h;K=D}else{o=qh(b,D)|0;Uc[k[(k[o>>2]|0)+480>>2]&63](o,q,c,d,e,k[z+(q<<2)>>2]|0);J=k[x>>2]|0;K=D+1|0}q=q+1|0;if((q|0)>=(J|0))break;else{h=J;D=K}}}Zka(c,b,137052,353);Zka(c,b,134925,339);Zka(c,b,134945,64);Yka(c,b,137955,999,0.0);Zka(c,b,137867,206);Zka(c,b,134962,928);Yka(c,b,135923,674,0.0);Yka(c,b,135944,677,0.0);Zka(c,b,127532,88);Zka(c,b,127563,89);K=c+40|0;if((k[K>>2]|0)!=300?(Zka(c,b,136615,287),Zka(c,b,136636,288),(k[K>>2]|0)==302):0){Zka(c,b,129435,93);Zka(c,b,127594,90);Yka(c,b,135096,679,0.0)}if(i[s>>0]|0){Yka(c,b,135039,653,0.0);Yka(c,b,134069,40,0.0)}Fka(c,j,128764);if((k[j>>2]&-5|0)==754)woa(b,0.0,706);switch(k[l>>2]|0){case 1:{Zka(c,b,135172,105);Zka(c,b,135196,107);Zka(c,b,135210,108);break}case 2:{Zka(c,b,135224,110);Zka(c,b,135238,109);break}case 3:{Fka(c,m,135252);Zka(c,b,135224,110);Zka(c,b,135273,104);Zka(c,b,135210,108);if(!(k[m>>2]|0))Zka(c,b,135288,115);break}case 4:{Zka(c,b,135172,105);Zka(c,b,135196,107);Zka(c,b,135210,108);Zka(c,b,135039,653);Zka(c,b,135066,666);break}case 5:{Zka(c,b,135172,105);Zka(c,b,135196,107);Zka(c,b,135210,108);Zka(c,b,135319,114);break}case 6:{Zka(c,b,135224,110);Zka(c,b,135238,109);Zka(c,b,135039,653);Zka(c,b,135066,666);break}case 7:{Zka(c,b,135172,105);Zka(c,b,127625,106);Zka(c,b,135196,107);Zka(c,b,135210,108);break}default:{b=t+56|0;m=t+4|0;k[t>>2]=27524;k[b>>2]=27544;B=0;wa(508,t+56|0,m|0);l=B;B=0;if(l&1){l=Rb()|0;L=Q;M=l;vva(b);Qb(M|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[b>>2]=27488;B=0;va(448,m|0);l=B;B=0;do if(l&1){j=Rb()|0;N=Q;O=j}else{k[m>>2]=27560;j=t+36|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;k[t+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,m|0,g|0);s=B;B=0;if(s&1){s=Rb()|0;K=Q;Yua(g);Yua(j);Ava(m);N=K;O=s;break}Yua(g);B=0;s=Ia(40,t|0,145010,13)|0;K=B;B=0;if(!(K&1)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,u|0,127077,81);K=B;B=0;do if(!(K&1)){B=0;eb(502,v|0,136133,14);D=B;B=0;if(D&1){D=Rb()|0;J=Q;Yua(u);P=D;R=J;break}B=0;wa(510,w|0,m|0);J=B;B=0;if(J&1){J=Rb()|0;S=J;T=Q;U=1}else{B=0;ua(163,s|0,u|0,v|0,826,w|0);J=B;B=0;if(J&1)V=1;else{B=0;eb(503,s|0,1240,229);B=0;V=0}J=Rb()|0;D=Q;Yua(w);S=J;T=D;U=V}Yua(v);Yua(u);if(U){P=S;R=T}else{W=S;X=T;k[t>>2]=27468;k[b>>2]=27488;k[m>>2]=27560;Yua(j);Ava(m);vva(b);Qb(W|0)}}else{D=Rb()|0;P=D;R=Q}while(0);zb(s|0);W=P;X=R;k[t>>2]=27468;k[b>>2]=27488;k[m>>2]=27560;Yua(j);Ava(m);vva(b);Qb(W|0)}K=Rb()|0;W=K;X=Q;k[t>>2]=27468;k[b>>2]=27488;k[m>>2]=27560;Yua(j);Ava(m);vva(b);Qb(W|0)}while(0);L=N;M=O;vva(b);Qb(M|0)}}k[f>>2]=129145;Lka(c,1,f);Tqa(z);r=a;return}function Z8(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;e=r;r=r+32|0;d=e+16|0;a=e+12|0;f=e+8|0;g=e+4|0;h=e;k[f>>2]=0;YN(b,Ika(c,129324,95)|0);YN(b,Ika(c,129346,96)|0);YN(b,Ika(c,129368,97)|0);YN(b,Ika(c,129391,98)|0);YN(b,Ika(c,132257,99)|0);YN(b,Ika(c,128764,102)|0);YN(b,Ika(c,127656,78)|0);YN(b,Ika(c,127680,75)|0);YN(b,Ika(c,127704,69)|0);YN(b,Ika(c,127728,71)|0);YN(b,Ika(c,127754,72)|0);YN(b,Ika(c,127779,73)|0);YN(b,Ika(c,127811,80)|0);YN(b,Ika(c,126982,85)|0);YN(b,Ika(c,127851,81)|0);YN(b,Ika(c,127884,87)|0);YN(b,Ika(c,134909,111)|0);Fka(c,d,128764);switch(k[d>>2]|0){case 754:case 755:case 758:{YN(b,Ika(c,127921,916)|0);YN(b,Ika(c,127960,918)|0);YN(b,Ika(c,128005,920)|0);break}default:{}}Fka(c,g,127514);if((k[g>>2]|0)==584){YN(b,Ika(c,128031,228)|0);YN(b,Ika(c,128045,236)|0);YN(b,Ika(c,128061,235)|0)}Hka(c,f,a,128088);g=Qqa(12)|0;B=0;eb(518,g|0,76,k[a>>2]|0);d=B;B=0;if(d&1){d=Rb()|0;i=Q;Sqa(g);j=i;l=d;Qb(l|0)}YN(b,g);g=k[a>>2]|0;do if(!g)m=0;else{d=Qqa(16)|0;B=0;ib(294,d|0,77,k[f>>2]|0,g|0);i=B;B=0;if(!(i&1)){YN(b,d);m=k[a>>2]|0;break}i=Rb()|0;n=Q;Sqa(d);j=n;l=i;Qb(l|0)}while(0);Nka(c,f,m,128088);Fka(c,h,134909);m=k[h>>2]|0;if((m&-3|0)==4){YN(b,Ika(c,135546,112)|0);o=k[h>>2]|0}else o=m;if((o|0)==3){YN(b,Ika(c,135252,116)|0);p=k[h>>2]|0}else p=o;if((p|0)!=5){r=e;return}YN(b,Ika(c,128123,113)|0);r=e;return}function _8(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0;a=r;r=r+656|0;c=a+640|0;d=a+655|0;e=a+654|0;f=a+653|0;g=a+652|0;h=a+636|0;j=a+632|0;l=a+616|0;m=a+480|0;n=a+620|0;o=a+328|0;p=a+464|0;q=a+176|0;s=a+312|0;t=a+40|0;u=a+24|0;v=a+12|0;w=a;x=b+44|0;bO(k[x>>2]|0,d,96);bO(k[x>>2]|0,e,97);bO(k[x>>2]|0,f,98);bO(k[x>>2]|0,g,99);cO(k[x>>2]|0,l,102);cO(k[x>>2]|0,j,298);cO(k[x>>2]|0,h,71);y=i[g>>0]|0;g=y<<24>>24!=0;z=i[d>>0]|0;A=i[f>>0]|0;f=i[e>>0]|0;e=(A|z|f)<<24>>24==0;if(g&e){a:do if(CY()|0){C=m+56|0;D=m+4|0;k[m>>2]=27524;k[C>>2]=27544;B=0;wa(508,m+56|0,D|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;G=E;vva(C);Qb(G|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[C>>2]=27488;B=0;va(448,D|0);E=B;B=0;do if(E&1){H=Rb()|0;I=Q;J=H}else{k[D>>2]=27560;H=m+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,D|0,c|0);K=B;B=0;if(K&1){K=Rb()|0;L=Q;Yua(c);Yua(H);Ava(D);I=L;J=K;break}Yua(c);B=0;Ia(40,m|0,148846,24)|0;K=B;B=0;do if(!(K&1)?(B=0,wa(510,n|0,D|0),L=B,B=0,!(L&1)):0){B=0;ya(425,n|0)|0;L=B;B=0;if(L&1){L=Rb()|0;M=Q;Yua(n);N=M;O=L;break}else{Yua(n);k[m>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(H);Ava(D);vva(C);break a}}else P=15;while(0);if((P|0)==15){K=Rb()|0;N=Q;O=K}k[m>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(H);Ava(D);vva(C);R=N;S=O;Qb(S|0)}while(0);F=I;G=J;vva(C);Qb(G|0)}while(0);xh(b,497);G=k[l>>2]|0;if((G|0)==755){Uoa(b);r=a;return}if((G&-5|0)==754){Toa(b);r=a;return}if((k[h>>2]|0)>0){Xoa(b);r=a;return}else{Woa(b,1);r=a;return}}if(!(g|e)){b:do if(CY()|0){e=o+56|0;g=o+4|0;k[o>>2]=27524;k[e>>2]=27544;B=0;wa(508,o+56|0,g|0);G=B;B=0;if(G&1){G=Rb()|0;T=Q;U=G;vva(e);Qb(U|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);G=B;B=0;do if(G&1){l=Rb()|0;V=Q;W=l}else{k[g>>2]=27560;l=o+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);J=B;B=0;if(J&1){J=Rb()|0;I=Q;Yua(c);Yua(l);Ava(g);V=I;W=J;break}Yua(c);B=0;Ia(40,o|0,148846,24)|0;J=B;B=0;do if(!(J&1)?(B=0,wa(510,p|0,g|0),I=B,B=0,!(I&1)):0){B=0;ya(425,p|0)|0;I=B;B=0;if(I&1){I=Rb()|0;F=Q;Yua(p);X=F;Y=I;break}else{Yua(p);k[o>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);break b}}else P=39;while(0);if((P|0)==39){J=Rb()|0;X=Q;Y=J}k[o>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);R=X;S=Y;Qb(S|0)}while(0);T=V;U=W;vva(e);Qb(U|0)}while(0);xh(b,497);if((k[h>>2]|0)>0)Xoa(b);else Woa(b,1);if((k[j>>2]|0)!=301|(i[d>>0]|0)==0){r=a;return}oO(k[x>>2]|0,674,575);y_(b);oO(k[x>>2]|0,671,575);y_(b);r=a;return}if(!(y<<24>>24==0?1:(f|z|A)<<24>>24==0)){c:do if(CY()|0){A=q+56|0;z=q+4|0;k[q>>2]=27524;k[A>>2]=27544;B=0;wa(508,q+56|0,z|0);f=B;B=0;if(f&1){f=Rb()|0;Z=Q;_=f;vva(A);Qb(_|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[A>>2]=27488;B=0;va(448,z|0);f=B;B=0;do if(f&1){y=Rb()|0;$=Q;aa=y}else{k[z>>2]=27560;y=q+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,z|0,c|0);x=B;B=0;if(x&1){x=Rb()|0;d=Q;Yua(c);Yua(y);Ava(z);$=d;aa=x;break}Yua(c);B=0;Ia(40,q|0,128137,56)|0;x=B;B=0;do if(!(x&1)?(B=0,wa(510,s|0,z|0),d=B,B=0,!(d&1)):0){B=0;ya(425,s|0)|0;d=B;B=0;if(d&1){d=Rb()|0;j=Q;Yua(s);ba=j;ca=d;break}else{Yua(s);k[q>>2]=27468;k[A>>2]=27488;k[z>>2]=27560;Yua(y);Ava(z);vva(A);break c}}else P=61;while(0);if((P|0)==61){x=Rb()|0;ba=Q;ca=x}k[q>>2]=27468;k[A>>2]=27488;k[z>>2]=27560;Yua(y);Ava(z);vva(A);R=ba;S=ca;Qb(S|0)}while(0);Z=$;_=aa;vva(A);Qb(_|0)}while(0);jpa(b,1);r=a;return}a=t+56|0;b=t+4|0;k[t>>2]=27524;k[a>>2]=27544;B=0;wa(508,t+56|0,b|0);_=B;B=0;if(_&1){_=Rb()|0;da=Q;ea=_;vva(a);Qb(ea|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[a>>2]=27488;B=0;va(448,b|0);_=B;B=0;do if(_&1){aa=Rb()|0;fa=Q;ga=aa}else{k[b>>2]=27560;aa=t+36|0;k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;k[aa+12>>2]=0;k[t+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);$=B;B=0;if($&1){$=Rb()|0;Z=Q;Yua(c);Yua(aa);Ava(b);fa=Z;ga=$;break}Yua(c);B=0;$=Ia(40,t|0,145010,13)|0;Z=B;B=0;d:do if(!(Z&1)?(B=0,Xa(239,$|0,0)|0,ca=B,B=0,!(ca&1)):0){ca=Ab(20)|0;B=0;eb(502,u|0,127077,81);ba=B;B=0;do if(!(ba&1)){B=0;eb(502,v|0,138209,4);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(u);ha=q;ia=s;break}B=0;wa(510,w|0,b|0);s=B;B=0;if(s&1){s=Rb()|0;ja=1;ka=Q;la=s}else{B=0;ua(163,ca|0,u|0,v|0,944,w|0);s=B;B=0;if(s&1)ma=1;else{B=0;eb(503,ca|0,1240,229);B=0;ma=0}s=Rb()|0;q=Q;Yua(w);ja=ma;ka=q;la=s}Yua(v);Yua(u);if(ja){ha=la;ia=ka}else{na=ka;oa=la;break d}}else{s=Rb()|0;ha=s;ia=Q}while(0);zb(ca|0);na=ia;oa=ha}else P=80;while(0);if((P|0)==80){$=Rb()|0;na=Q;oa=$}k[t>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(aa);Ava(b);vva(a);R=na;S=oa;Qb(S|0)}while(0);da=fa;ea=ga;vva(a);Qb(ea|0)}function $8(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;a=r;r=r+16|0;c=a+4|0;d=a;Ap(b,d,533);if((k[d>>2]|0)!=542){e=0;r=a;return e|0}cp(b,c,299);d=Hc[k[(k[b>>2]|0)+396>>2]&511](b)|0;f=Hc[k[(k[b>>2]|0)+392>>2]&511](b)|0;g=iq(b,543)|0;if((d|0)>0?(b=k[c>>2]|0,(b|0)>0):0){h=k[g+4>>2]|0;i=0;do{j=ma(i,b)|0;l=0;do{p[h+(l+j<<3)>>3]=672.0;l=l+1|0}while((l|0)!=(b|0));i=i+1|0}while((i|0)!=(d|0))}if((f|0)>0){i=ma(k[c>>2]|0,d)|0;d=k[g+4>>2]|0;c=0;do{p[d+(c+i<<3)>>3]=653.0;c=c+1|0}while((c|0)!=(f|0))}e=g;r=a;return e|0}function a9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;d=c+180|0;e=c+176|0;f=c+40|0;g=c+24|0;h=c+12|0;i=c;Ap(b,e,533);switch(k[e>>2]|0){case 536:{j=b9(a,b)|0;r=c;return j|0}case 540:{j=c9(a,b)|0;r=c;return j|0}case 542:{j=d9(a,b)|0;r=c;return j|0}case 534:{j=0;r=c;return j|0}default:{j=f+56|0;c=f+4|0;k[f>>2]=27524;k[j>>2]=27544;B=0;wa(508,f+56|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;l=Q;m=b;vva(j);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[j>>2]=27488;B=0;va(448,c|0);b=B;B=0;do if(b&1){a=Rb()|0;n=Q;o=a}else{k[c>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,c|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(a);Ava(c);n=q;o=p;break}Yua(d);B=0;p=Ia(40,f|0,127478,14)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[e>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,144645,14)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,127077,81);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,144398,20);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,975,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[j>>2]=27488;k[c>>2]=27560;Yua(a);Ava(c);vva(j);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[j>>2]=27488;k[c>>2]=27560;Yua(a);Ava(c);vva(j);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[j>>2]=27488;k[c>>2]=27560;Yua(a);Ava(c);vva(j);Qb(C|0)}while(0);l=n;m=o;vva(j);Qb(m|0)}}return 0}function b9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0,Y=0,Z=0;c=r;r=r+224|0;d=c+168|0;e=c+220|0;f=c+32|0;g=c+208|0;h=c+196|0;i=c+184|0;j=c+24|0;l=c;m=c+180|0;cp(b,e,298);a:do switch(k[e>>2]|0){case 300:{n=b;break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){n=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{o=0;r=c;return o|0}break}default:{q=f+56|0;s=f+4|0;k[f>>2]=27524;k[q>>2]=27544;B=0;wa(508,f+56|0,s|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;v=t;vva(q);Qb(v|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[q>>2]=27488;B=0;va(448,s|0);t=B;B=0;do if(t&1){w=Rb()|0;x=Q;y=w}else{k[s>>2]=27560;w=f+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,s|0,d|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(d);Yua(w);Ava(s);x=A;y=z;break}Yua(d);B=0;z=Ia(40,f|0,144639,5)|0;A=B;B=0;if((((!(A&1)?(B=0,A=ya(427,k[e>>2]|0)|0,C=B,B=0,!(C&1)):0)?(C=Lta(A)|0,B=0,D=Ia(40,z|0,A|0,C|0)|0,C=B,B=0,!(C&1)):0)?(B=0,C=Ia(40,D|0,146481,18)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,C|0,0)|0,C=B,B=0,!(C&1)):0){C=Ab(20)|0;B=0;eb(502,g|0,127077,81);D=B;B=0;do if(!(D&1)){B=0;eb(502,h|0,128194,23);A=B;B=0;if(A&1){A=Rb()|0;z=Q;Yua(g);E=A;F=z;break}B=0;wa(510,i|0,s|0);z=B;B=0;if(z&1){z=Rb()|0;G=z;H=Q;I=1}else{B=0;ua(163,C|0,g|0,h|0,1158,i|0);z=B;B=0;if(z&1)J=1;else{B=0;eb(503,C|0,1240,229);B=0;J=0}z=Rb()|0;A=Q;Yua(i);G=z;H=A;I=J}Yua(h);Yua(g);if(I){E=G;F=H}else{K=G;L=H;k[f>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);Qb(K|0)}}else{A=Rb()|0;E=A;F=Q}while(0);zb(C|0);K=E;L=F;k[f>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);Qb(K|0)}D=Rb()|0;K=D;L=Q;k[f>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);Qb(K|0)}while(0);u=x;v=y;vva(q);Qb(v|0)}}while(0);k[m>>2]=0;v=Hc[k[(k[n>>2]|0)+164>>2]&511](n)|0;y=f9(a,b)|0;a=v<<1;x=Rqa(a>>>0>536870911?-1:a<<3)|0;Uo(b,m);b=Wo(n,353)|0;u=Wo(n,674)|0;K=Wo(n,677)|0;L=ed[k[(k[n>>2]|0)+308>>2]&511](n,2)|0;F=Hc[k[(k[L>>2]|0)+8>>2]&511](L)|0;if((F|0)<(Hc[k[(k[L>>2]|0)+12>>2]&511](L)|0)){E=n+28|0;H=l+8|0;G=l+16|0;I=(v|0)>0;g=L+8|0;h=y+12|0;J=F;do{Fc[k[(k[L>>2]|0)+24>>2]&1023](L,J);rd[k[(k[n>>2]|0)+260>>2]&511](n,d,k[m>>2]|0,L);rd[k[(k[n>>2]|0)+340>>2]&511](n,x,k[m>>2]|0,L);nd[k[(k[b>>2]|0)+48>>2]&1023](b,f,L);Xo(n,l,k[m>>2]|0,L,u,K);F=k[E>>2]|0;nd[k[(k[F>>2]|0)+132>>2]&1023](F,j,l);M=+p[l>>3];N=+p[H>>3];O=M*2.0+N;P=+p[G>>3];R=M+N*2.0;if(I){F=k[h>>2]|0;i=0;do{s=x+(i<<3)|0;t=x+(i+v<<3)|0;D=i<<1;A=ma(D,a)|0;z=ma(D|1,a)|0;D=0;do{N=+p[s>>3];M=+p[t>>3];S=O*N+P*M;T=+p[x+(D<<3)>>3];U=+p[x+(D+v<<3)>>3];V=O*T+P*U;W=P*N+R*M;M=P*T+R*U;X=D<<1;Y=X+A|0;Z=F+(Y<<3)|0;p[Z>>3]=+p[Z>>3]+S*(V*(+p[f>>3]*(+p[j>>3]*(+p[g>>3]*+p[d>>3]*2.0))));Z=F+((Y|1)<<3)|0;p[Z>>3]=+p[Z>>3]+S*(M*(+p[f>>3]*(+p[j>>3]*(+p[g>>3]*+p[d>>3]*2.0))));Z=X+z|0;X=F+(Z<<3)|0;p[X>>3]=+p[X>>3]+W*(V*(+p[f>>3]*(+p[j>>3]*(+p[g>>3]*+p[d>>3]*2.0))));X=F+((Z|1)<<3)|0;p[X>>3]=+p[X>>3]+W*(M*(+p[f>>3]*(+p[j>>3]*(+p[g>>3]*+p[d>>3]*2.0))));D=D+1|0}while((D|0)!=(v|0));i=i+1|0}while((i|0)!=(v|0))}J=J+1|0}while((J|0)<(Hc[k[(k[L>>2]|0)+12>>2]&511](L)|0))}Fq(n,y,971);Ec[k[(k[L>>2]|0)+4>>2]&1023](L);L=k[m>>2]|0;if(L)Tqa(L);k[m>>2]=0;Tqa(x);if((k[e>>2]|0)!=300?(ap(n),(n|0)!=0):0)Ec[k[(k[n>>2]|0)+4>>2]&1023](n);o=y;r=c;return o|0}function c9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0,W=0,X=0;c=r;r=r+64|0;d=c+48|0;e=c+40|0;f=c;g=c+56|0;k[g>>2]=0;h=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;i=h9(a,b)|0;a=h*3|0;j=Rqa(a>>>0>536870911?-1:a<<3)|0;Uo(b,g);a=Wo(b,674)|0;l=Wo(b,677)|0;m=ed[k[(k[b>>2]|0)+308>>2]&511](b,5)|0;n=Hc[k[(k[m>>2]|0)+8>>2]&511](m)|0;if((n|0)<(Hc[k[(k[m>>2]|0)+12>>2]&511](m)|0)){o=b+28|0;q=f+8|0;s=f+16|0;t=f+24|0;u=f+32|0;v=(h|0)>0;w=h<<1;x=m+8|0;y=i+12|0;z=n;do{Fc[k[(k[m>>2]|0)+24>>2]&1023](m,z);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[g>>2]|0,m);rd[k[(k[b>>2]|0)+340>>2]&511](b,j,k[g>>2]|0,m);ep(b,f,k[g>>2]|0,m,a,l);n=k[o>>2]|0;nd[k[(k[n>>2]|0)+120>>2]&1023](n,e,f);A=+p[f>>3];B=+p[q>>3];C=A*2.0+B;D=+p[s>>3];E=A+B*2.0;B=+p[t>>3];A=+p[u>>3];if(v){n=k[y>>2]|0;F=0;do{G=j+(F<<3)|0;H=j+(F+h<<3)|0;I=j+(F+w<<3)|0;J=F<<1;K=ma(J,w)|0;L=ma(J|1,w)|0;J=0;do{M=+p[G>>3];N=+p[H>>3];O=+p[I>>3];P=C*M+D*N+B*O;Q=+p[j+(J<<3)>>3];R=+p[j+(J+h<<3)>>3];S=+p[j+(J+w<<3)>>3];T=C*Q+D*R+B*S;U=D*M+E*N+A*O;O=D*Q+E*R+A*S;V=J<<1;W=V+K|0;X=n+(W<<3)|0;p[X>>3]=+p[X>>3]+P*(T*(+p[e>>3]*(+p[x>>3]*+p[d>>3]*2.0)));X=n+((W|1)<<3)|0;p[X>>3]=+p[X>>3]+P*(O*(+p[e>>3]*(+p[x>>3]*+p[d>>3]*2.0)));X=V+L|0;V=n+(X<<3)|0;p[V>>3]=+p[V>>3]+U*(T*(+p[e>>3]*(+p[x>>3]*+p[d>>3]*2.0)));V=n+((X|1)<<3)|0;p[V>>3]=+p[V>>3]+U*(O*(+p[e>>3]*(+p[x>>3]*+p[d>>3]*2.0)));J=J+1|0}while((J|0)!=(h|0));F=F+1|0}while((F|0)!=(h|0))}z=z+1|0}while((z|0)<(Hc[k[(k[m>>2]|0)+12>>2]&511](m)|0))}Fq(b,i,971);Ec[k[(k[m>>2]|0)+4>>2]&1023](m);m=k[g>>2]|0;if(!m){k[g>>2]=0;Tqa(j);r=c;return i|0}Tqa(m);k[g>>2]=0;Tqa(j);r=c;return i|0}function d9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0,aa=0,ba=0;c=r;r=r+80|0;d=c+56|0;e=c+48|0;f=c;g=c+64|0;k[g>>2]=0;h=Hc[k[(k[b>>2]|0)+396>>2]&511](b)|0;i=Hc[k[(k[b>>2]|0)+392>>2]&511](b)|0;j=h*3|0;l=i+j|0;m=i+h|0;n=Rqa(m>>>0>1073741823?-1:m<<2)|0;m=(h|0)>0;if(m){o=0;do{k[n+(o<<2)>>2]=972;o=o+1|0}while((o|0)!=(h|0))}if((i|0)>0){o=0;do{k[n+(o+h<<2)>>2]=653;o=o+1|0}while((o|0)!=(i|0))}i=i9(a,b)|0;a=Rqa(j>>>0>536870911?-1:j<<3)|0;Uo(b,g);j=Wo(b,674)|0;o=Wo(b,677)|0;Wo(b,679)|0;q=ed[k[(k[b>>2]|0)+308>>2]&511](b,5)|0;s=Hc[k[(k[q>>2]|0)+8>>2]&511](q)|0;if((s|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0)){t=f+16|0;u=f+24|0;v=f+8|0;w=f+32|0;x=b+28|0;y=h<<1;z=q+8|0;A=i+12|0;B=s;do{Fc[k[(k[q>>2]|0)+24>>2]&1023](q,B);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[g>>2]|0,q);rd[k[(k[b>>2]|0)+344>>2]&511](b,a,k[g>>2]|0,q);ep(b,f,k[g>>2]|0,q,j,o);C=+p[f>>3];D=+p[t>>3];E=+p[u>>3];F=+p[v>>3];G=+p[w>>3];H=-C-F;s=k[x>>2]|0;nd[k[(k[s>>2]|0)+112>>2]&1023](s,e,f);if(m){s=k[A>>2]|0;I=0;do{J=a+(I<<3)|0;K=a+(I+h<<3)|0;L=a+(I+y<<3)|0;M=I*3|0;N=ma(M,l)|0;O=ma(M+1|0,l)|0;P=ma(M+2|0,l)|0;M=0;do{Q=+p[J>>3];R=+p[K>>3];S=+p[L>>3];T=C*Q+D*R+E*S;U=+p[a+(M<<3)>>3];V=+p[a+(M+h<<3)>>3];W=+p[a+(M+y<<3)>>3];X=C*U+D*V+E*W;Y=D*Q+F*R+G*S;Z=D*U+F*V+G*W;_=E*Q+G*R+H*S;S=E*U+G*V+H*W;$=M*3|0;aa=$+N|0;ba=s+(aa<<3)|0;p[ba>>3]=+p[ba>>3]+T*(X*(+p[e>>3]*(+p[z>>3]*+p[d>>3]*2.0)));ba=s+(aa+1<<3)|0;p[ba>>3]=+p[ba>>3]+T*(Z*(+p[e>>3]*(+p[z>>3]*+p[d>>3]*2.0)));ba=s+(aa+2<<3)|0;p[ba>>3]=+p[ba>>3]+T*(S*(+p[e>>3]*(+p[z>>3]*+p[d>>3]*2.0)));ba=$+O|0;aa=s+(ba<<3)|0;p[aa>>3]=+p[aa>>3]+Y*(X*(+p[e>>3]*(+p[z>>3]*+p[d>>3]*2.0)));aa=s+(ba+1<<3)|0;p[aa>>3]=+p[aa>>3]+Y*(Z*(+p[e>>3]*(+p[z>>3]*+p[d>>3]*2.0)));aa=s+(ba+2<<3)|0;p[aa>>3]=+p[aa>>3]+Y*(S*(+p[e>>3]*(+p[z>>3]*+p[d>>3]*2.0)));aa=$+P|0;$=s+(aa<<3)|0;p[$>>3]=+p[$>>3]+_*(X*(+p[e>>3]*(+p[z>>3]*+p[d>>3]*2.0)));$=s+(aa+1<<3)|0;p[$>>3]=+p[$>>3]+_*(Z*(+p[e>>3]*(+p[z>>3]*+p[d>>3]*2.0)));$=s+(aa+2<<3)|0;p[$>>3]=+p[$>>3]+_*(S*(+p[e>>3]*(+p[z>>3]*+p[d>>3]*2.0)));M=M+1|0}while((M|0)!=(h|0));I=I+1|0}while((I|0)!=(h|0))}B=B+1|0}while((B|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0))}Hq(b,i,n);Ec[k[(k[q>>2]|0)+4>>2]&1023](q);q=k[g>>2]|0;if(!q){k[g>>2]=0;Tqa(a);Tqa(n);r=c;return i|0}Tqa(q);k[g>>2]=0;Tqa(a);Tqa(n);r=c;return i|0}function e9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;d=c+180|0;e=c+176|0;f=c+40|0;g=c+24|0;h=c+12|0;i=c;Ap(b,e,533);switch(k[e>>2]|0){case 536:{j=f9(a,b)|0;r=c;return j|0}case 539:{j=g9(a,b)|0;r=c;return j|0}case 540:{j=h9(a,b)|0;r=c;return j|0}case 542:{j=i9(a,b)|0;r=c;return j|0}case 537:{j=j9(a,b)|0;r=c;return j|0}case 541:{j=k9(a,b)|0;r=c;return j|0}case 538:{j=l9(a,b)|0;r=c;return j|0}case 534:case 535:{j=0;r=c;return j|0}default:{j=f+56|0;c=f+4|0;k[f>>2]=27524;k[j>>2]=27544;B=0;wa(508,f+56|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;l=Q;m=b;vva(j);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[j>>2]=27488;B=0;va(448,c|0);b=B;B=0;do if(b&1){a=Rb()|0;n=Q;o=a}else{k[c>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,c|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(a);Ava(c);n=q;o=p;break}Yua(d);B=0;p=Ia(40,f|0,127478,14)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[e>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,144645,14)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,127077,81);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,144189,13);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,1001,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[j>>2]=27488;k[c>>2]=27560;Yua(a);Ava(c);vva(j);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[j>>2]=27488;k[c>>2]=27560;Yua(a);Ava(c);vva(j);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[j>>2]=27488;k[c>>2]=27560;Yua(a);Ava(c);vva(j);Qb(C|0)}while(0);l=n;m=o;vva(j);Qb(m|0)}}return 0}function f9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;c=r;r=r+192|0;d=c+180|0;e=c+176|0;f=c+40|0;g=c+24|0;h=c+12|0;i=c;if(!($p(b)|0)){j=0;r=c;return j|0}cp(b,e,298);switch(k[e>>2]|0){case 300:{l=b;m=31;break}case 301:case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){l=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;m=31}else n=0;break}default:{b=f+56|0;o=f+4|0;k[f>>2]=27524;k[b>>2]=27544;B=0;wa(508,f+56|0,o|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;s=p;vva(b);Qb(s|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[b>>2]=27488;B=0;va(448,o|0);p=B;B=0;do if(p&1){t=Rb()|0;u=Q;v=t}else{k[o>>2]=27560;t=f+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,o|0,d|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(d);Yua(t);Ava(o);u=x;v=w;break}Yua(d);B=0;w=Ia(40,f|0,144639,5)|0;x=B;B=0;a:do if((((!(x&1)?(B=0,y=ya(427,k[e>>2]|0)|0,z=B,B=0,!(z&1)):0)?(z=Lta(y)|0,B=0,A=Ia(40,w|0,y|0,z|0)|0,z=B,B=0,!(z&1)):0)?(B=0,z=Ia(40,A|0,146481,18)|0,A=B,B=0,!(A&1)):0)?(B=0,Xa(239,z|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,g|0,127077,81);A=B;B=0;do if(!(A&1)){B=0;eb(502,h|0,128218,16);y=B;B=0;if(y&1){y=Rb()|0;C=Q;Yua(g);D=C;E=y;break}B=0;wa(510,i|0,o|0);y=B;B=0;if(y&1){y=Rb()|0;F=Q;G=y;H=1}else{B=0;ua(163,z|0,g|0,h|0,1244,i|0);y=B;B=0;if(y&1)I=1;else{B=0;eb(503,z|0,1240,229);B=0;I=0}y=Rb()|0;C=Q;Yua(i);F=C;G=y;H=I}Yua(h);Yua(g);if(H){D=F;E=G}else{J=G;K=F;break a}}else{y=Rb()|0;D=Q;E=y}while(0);zb(z|0);J=E;K=D}else m=23;while(0);if((m|0)==23){w=Rb()|0;J=w;K=Q}k[f>>2]=27468;k[b>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(b);L=K;M=J;Qb(M|0)}while(0);q=u;s=v;vva(b);Qb(s|0)}}if((m|0)==31){m=H9(a,l)|0;s=I9(a,l)|0;a=Qqa(68)|0;B=0;eb(515,a|0,m|0,s|0);b=B;B=0;if(b&1){b=Rb()|0;v=Q;Sqa(a);L=v;M=b;Qb(M|0)}if((k[e>>2]|0)!=300?(ap(l),(l|0)!=0):0)Ec[k[(k[l>>2]|0)+4>>2]&1023](l);if(m){HN(m);Sqa(m)}if(!s)n=a;else{HN(s);Sqa(s);n=a}}j=n;r=c;return j|0}function g9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if(!($p(b)|0)){c=0;return c|0}d=N9(0,b)|0;if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0?!(_p(b)|0):0){e=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;b=I9(a,e)|0;ap(e);if(!e)f=b;else{Ec[k[(k[e>>2]|0)+4>>2]&1023](e);f=b}}else f=0;b=Qqa(68)|0;B=0;eb(515,b|0,d|0,f|0);e=B;B=0;if(e&1){e=Rb()|0;Sqa(b);Qb(e|0)}if(d){HN(d);Sqa(d)}if(!f){c=b;return c|0}HN(f);Sqa(f);c=b;return c|0}function h9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if(!($p(b)|0)){c=0;return c|0}d=Q9(a,b)|0;e=R9(a,b)|0;b=Qqa(68)|0;B=0;eb(515,b|0,d|0,e|0);a=B;B=0;if(a&1){a=Rb()|0;Sqa(b);Qb(a|0)}if(d){HN(d);Sqa(d)}if(!e){c=b;return c|0}HN(e);Sqa(e);c=b;return c|0}function i9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=r;r=r+16|0;d=c;if(!($p(b)|0)){e=0;r=c;return e|0}cp(b,d,102);f=k[d>>2]|0;do if((f|0)!=755)if((f&-5|0)==754){g=X9(a,b)|0;break}else{g=Y9(a,b)|0;break}else g=W9(a,b)|0;while(0);f=Z9(a,b)|0;a=_9(0,b)|0;b=Qqa(68)|0;B=0;ib(299,b|0,g|0,f|0,a|0);d=B;B=0;if(d&1){d=Rb()|0;Sqa(b);Qb(d|0)}if(g){HN(g);Sqa(g)}if(f){HN(f);Sqa(f)}if(a){HN(a);Sqa(a)}e=b;r=c;return e|0}function j9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=Aaa(a,b)|0;d=h9(a,b)|0;e=waa(a,b)|0;b=Qqa(68)|0;B=0;ib(299,b|0,c|0,d|0,e|0);a=B;B=0;if(a&1){a=Rb()|0;Sqa(b);Qb(a|0)}HN(c);Sqa(c);if(!d){HN(e);Sqa(e);return b|0}HN(d);Sqa(d);HN(e);Sqa(e);return b|0}function k9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=r;r=r+16|0;d=c;e=i9(a,b)|0;k[d>>2]=k[9691];k[d+4>>2]=k[9692];k[d+8>>2]=k[9693];NN(e,3,d);d=Hc[k[(k[b>>2]|0)+112>>2]&511](b)|0;Fc[k[(k[b>>2]|0)+428>>2]&1023](b,738);f=h9(a,b)|0;Fc[k[(k[b>>2]|0)+428>>2]&1023](b,d);d=naa(a,b)|0;b=Qqa(68)|0;B=0;ib(299,b|0,e|0,f|0,d|0);a=B;B=0;if(a&1){a=Rb()|0;Sqa(b);Qb(a|0)}if(e){HN(e);Sqa(e)}if(!f){HN(d);Sqa(d);r=c;return b|0}HN(f);Sqa(f);HN(d);Sqa(d);r=c;return b|0}function l9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=r;r=r+16|0;d=c;e=i9(a,b)|0;k[d>>2]=k[9691];k[d+4>>2]=k[9692];k[d+8>>2]=k[9693];NN(e,3,d);d=Hc[k[(k[b>>2]|0)+112>>2]&511](b)|0;Fc[k[(k[b>>2]|0)+428>>2]&1023](b,738);f=Aaa(a,b)|0;Fc[k[(k[b>>2]|0)+428>>2]&1023](b,d);d=oaa(a,b)|0;b=Qqa(68)|0;B=0;ib(299,b|0,e|0,f|0,d|0);a=B;B=0;if(a&1){a=Rb()|0;Sqa(b);Qb(a|0)}if(!e){HN(f);Sqa(f);HN(d);Sqa(d);r=c;return b|0}HN(e);Sqa(e);HN(f);Sqa(f);HN(d);Sqa(d);r=c;return b|0}function m9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;d=c+180|0;e=c+176|0;f=c+40|0;g=c+24|0;h=c+12|0;i=c;Ap(b,e,533);switch(k[e>>2]|0){case 536:{j=n9(a,b)|0;r=c;return j|0}case 539:{j=o9(a,b)|0;r=c;return j|0}case 540:{j=p9(a,b)|0;r=c;return j|0}case 542:{j=q9(a,b)|0;r=c;return j|0}case 537:{j=r9(a,b)|0;r=c;return j|0}case 541:{j=s9(a,b)|0;r=c;return j|0}case 538:{j=t9(a,b)|0;r=c;return j|0}case 534:case 535:{j=0;r=c;return j|0}default:{j=f+56|0;c=f+4|0;k[f>>2]=27524;k[j>>2]=27544;B=0;wa(508,f+56|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;l=Q;m=b;vva(j);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[j>>2]=27488;B=0;va(448,c|0);b=B;B=0;do if(b&1){a=Rb()|0;n=Q;o=a}else{k[c>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,c|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(a);Ava(c);n=q;o=p;break}Yua(d);B=0;p=Ia(40,f|0,127478,14)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[e>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,144645,14)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,127077,81);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,144203,13);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,1028,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[j>>2]=27488;k[c>>2]=27560;Yua(a);Ava(c);vva(j);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[j>>2]=27488;k[c>>2]=27560;Yua(a);Ava(c);vva(j);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[j>>2]=27488;k[c>>2]=27560;Yua(a);Ava(c);vva(j);Qb(C|0)}while(0);l=n;m=o;vva(j);Qb(m|0)}}return 0}function n9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;a=r;r=r+192|0;c=a+180|0;d=a+176|0;e=a+40|0;f=a+24|0;g=a+12|0;h=a;if(!($p(b)|0)){i=0;r=a;return i|0}cp(b,d,298);switch(k[d>>2]|0){case 300:{j=b;l=31;break}case 301:case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){j=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;l=31}else m=0;break}default:{b=e+56|0;n=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;q=o;vva(b);Qb(q|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){s=Rb()|0;t=Q;u=s}else{k[n>>2]=27560;s=e+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,n|0,c|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);Yua(s);Ava(n);t=w;u=v;break}Yua(c);B=0;v=Ia(40,e|0,144639,5)|0;w=B;B=0;a:do if((((!(w&1)?(B=0,x=ya(427,k[d>>2]|0)|0,y=B,B=0,!(y&1)):0)?(y=Lta(x)|0,B=0,z=Ia(40,v|0,x|0,y|0)|0,y=B,B=0,!(y&1)):0)?(B=0,y=Ia(40,z|0,146481,18)|0,z=B,B=0,!(z&1)):0)?(B=0,Xa(239,y|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,f|0,127077,81);z=B;B=0;do if(!(z&1)){B=0;eb(502,g|0,128235,16);x=B;B=0;if(x&1){x=Rb()|0;A=Q;Yua(f);C=A;D=x;break}B=0;wa(510,h|0,n|0);x=B;B=0;if(x&1){x=Rb()|0;E=Q;F=x;G=1}else{B=0;ua(163,y|0,f|0,g|0,1511,h|0);x=B;B=0;if(x&1)H=1;else{B=0;eb(503,y|0,1240,229);B=0;H=0}x=Rb()|0;A=Q;Yua(h);E=A;F=x;G=H}Yua(g);Yua(f);if(G){C=E;D=F}else{I=F;J=E;break a}}else{x=Rb()|0;C=Q;D=x}while(0);zb(y|0);I=D;J=C}else l=23;while(0);if((l|0)==23){v=Rb()|0;I=v;J=Q}k[e>>2]=27468;k[b>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(b);K=J;L=I;Qb(L|0)}while(0);p=t;q=u;vva(b);Qb(q|0)}}if((l|0)==31){l=L9(0,j)|0;q=M9(0,j)|0;b=Qqa(24)|0;B=0;eb(516,b|0,l|0,q|0);u=B;B=0;if(u&1){u=Rb()|0;t=Q;Sqa(b);K=t;L=u;Qb(L|0)}if((k[d>>2]|0)!=300?(ap(j),(j|0)!=0):0)Ec[k[(k[j>>2]|0)+4>>2]&1023](j);if(l){SN(l);Sqa(l)}if(!q)m=b;else{SN(q);Sqa(q);m=b}}i=m;r=a;return i|0}function o9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;a=r;r=r+192|0;c=a+180|0;d=a+176|0;e=a+40|0;f=a+24|0;g=a+12|0;h=a;if(!($p(b)|0)){i=0;r=a;return i|0}cp(b,d,298);switch(k[d>>2]|0){case 300:{j=b;l=31;break}case 301:case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){j=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;l=31}else m=0;break}default:{b=e+56|0;n=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;q=o;vva(b);Qb(q|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){s=Rb()|0;t=Q;u=s}else{k[n>>2]=27560;s=e+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,n|0,c|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);Yua(s);Ava(n);t=w;u=v;break}Yua(c);B=0;v=Ia(40,e|0,144639,5)|0;w=B;B=0;a:do if((((!(w&1)?(B=0,x=ya(427,k[d>>2]|0)|0,y=B,B=0,!(y&1)):0)?(y=Lta(x)|0,B=0,z=Ia(40,v|0,x|0,y|0)|0,y=B,B=0,!(y&1)):0)?(B=0,y=Ia(40,z|0,146481,18)|0,z=B,B=0,!(z&1)):0)?(B=0,Xa(239,y|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,f|0,127077,81);z=B;B=0;do if(!(z&1)){B=0;eb(502,g|0,128252,17);x=B;B=0;if(x&1){x=Rb()|0;A=Q;Yua(f);C=A;D=x;break}B=0;wa(510,h|0,n|0);x=B;B=0;if(x&1){x=Rb()|0;E=Q;F=x;G=1}else{B=0;ua(163,y|0,f|0,g|0,1998,h|0);x=B;B=0;if(x&1)H=1;else{B=0;eb(503,y|0,1240,229);B=0;H=0}x=Rb()|0;A=Q;Yua(h);E=A;F=x;G=H}Yua(g);Yua(f);if(G){C=E;D=F}else{I=F;J=E;break a}}else{x=Rb()|0;C=Q;D=x}while(0);zb(y|0);I=D;J=C}else l=23;while(0);if((l|0)==23){v=Rb()|0;I=v;J=Q}k[e>>2]=27468;k[b>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(b);K=J;L=I;Qb(L|0)}while(0);p=t;q=u;vva(b);Qb(q|0)}}if((l|0)==31){l=O9(0,j)|0;q=P9(0,j)|0;b=Qqa(24)|0;B=0;eb(516,b|0,l|0,q|0);u=B;B=0;if(u&1){u=Rb()|0;t=Q;Sqa(b);K=t;L=u;Qb(L|0)}if((k[d>>2]|0)!=300?(ap(j),(j|0)!=0):0)Ec[k[(k[j>>2]|0)+4>>2]&1023](j);if(l){SN(l);Sqa(l)}if(!q)m=b;else{SN(q);Sqa(q);m=b}}i=m;r=a;return i|0}function p9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if(!($p(b)|0)){c=0;return c|0}a=U9(0,b)|0;d=V9(0,b)|0;b=Qqa(24)|0;B=0;eb(516,b|0,a|0,d|0);e=B;B=0;if(e&1){e=Rb()|0;Sqa(b);Qb(e|0)}if(a){SN(a);Sqa(a)}if(!d){c=b;return c|0}SN(d);Sqa(d);c=b;return c|0}function q9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;a=r;r=r+16|0;c=a;if(!($p(b)|0)){d=0;r=a;return d|0}cp(b,c,102);e=k[c>>2]|0;do if((e|0)==755){c=faa(0,b)|0;f=gaa(0,b)|0;g=haa(0,b)|0;h=Qqa(24)|0;B=0;ib(300,h|0,c|0,f|0,g|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;Sqa(h);l=i;m=j;Qb(l|0)}j=iaa(0,b)|0;i=Qqa(24)|0;B=0;eb(516,i|0,h|0,j|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;Sqa(i);l=n;m=o;Qb(l|0)}if(c){SN(c);Sqa(c)}if(f){SN(f);Sqa(f)}if(g){SN(g);Sqa(g)}SN(h);Sqa(h);if(!j)p=i;else{SN(j);Sqa(j);p=i}}else{i=faa(0,b)|0;j=gaa(0,b)|0;h=haa(0,b)|0;g=Qqa(24)|0;B=0;ib(300,g|0,i|0,j|0,h|0);f=B;B=0;c=f&1;if((e&-5|0)!=754){if(c){f=Rb()|0;o=Q;Sqa(g);l=f;m=o;Qb(l|0)}if(i){SN(i);Sqa(i)}if(j){SN(j);Sqa(j)}if(!h){p=g;break}SN(h);Sqa(h);p=g;break}if(c){c=Rb()|0;o=Q;Sqa(g);l=c;m=o;Qb(l|0)}o=jaa(0,b)|0;c=Qqa(24)|0;B=0;eb(516,c|0,g|0,o|0);f=B;B=0;if(f&1){f=Rb()|0;n=Q;Sqa(c);l=f;m=n;Qb(l|0)}if(i){SN(i);Sqa(i)}if(j){SN(j);Sqa(j)}if(h){SN(h);Sqa(h)}SN(g);Sqa(g);if(!o)p=c;else{SN(o);Sqa(o);p=c}}while(0);d=p;r=a;return d|0}function r9(a,b){a=a|0;b=b|0;var c=0,d=0;c=n9(a,b)|0;d=p9(a,b)|0;b=Qqa(24)|0;B=0;eb(516,b|0,c|0,d|0);a=B;B=0;if(a&1){a=Rb()|0;Sqa(b);Qb(a|0)}if(c){SN(c);Sqa(c)}if(!d)return b|0;SN(d);Sqa(d);return b|0}function s9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=r;r=r+16|0;d=c;e=Hc[k[(k[b>>2]|0)+112>>2]&511](b)|0;Fc[k[(k[b>>2]|0)+428>>2]&1023](b,738);f=p9(a,b)|0;Fc[k[(k[b>>2]|0)+428>>2]&1023](b,e);g=q9(a,b)|0;k[d>>2]=k[9691];k[d+4>>2]=k[9692];k[d+8>>2]=k[9693];Fc[k[(k[b>>2]|0)+428>>2]&1023](b,752);h=i9(a,b)|0;Fc[k[(k[b>>2]|0)+428>>2]&1023](b,e);VN(g,h,3,d);if(h){HN(h);Sqa(h)}h=Caa(a,b)|0;b=Qqa(24)|0;B=0;ib(300,b|0,f|0,g|0,h|0);a=B;B=0;if(a&1){a=Rb()|0;Sqa(b);Qb(a|0)}if(f){SN(f);Sqa(f)}if(!g){SN(h);Sqa(h);r=c;return b|0}SN(g);Sqa(g);SN(h);Sqa(h);r=c;return b|0}function t9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=r;r=r+16|0;d=c;e=Hc[k[(k[b>>2]|0)+112>>2]&511](b)|0;Fc[k[(k[b>>2]|0)+428>>2]&1023](b,738);f=n9(a,b)|0;Fc[k[(k[b>>2]|0)+428>>2]&1023](b,e);g=q9(a,b)|0;k[d>>2]=k[9691];k[d+4>>2]=k[9692];k[d+8>>2]=k[9693];Fc[k[(k[b>>2]|0)+428>>2]&1023](b,752);h=i9(a,b)|0;Fc[k[(k[b>>2]|0)+428>>2]&1023](b,e);VN(g,h,3,d);if(h){HN(h);Sqa(h)}h=Faa(a,b)|0;b=Qqa(24)|0;B=0;ib(300,b|0,f|0,g|0,h|0);a=B;B=0;if(a&1){a=Rb()|0;Sqa(b);Qb(a|0)}if(f){SN(f);Sqa(f)}if(!g){SN(h);Sqa(h);r=c;return b|0}SN(g);Sqa(g);SN(h);Sqa(h);r=c;return b|0}function u9(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;d=a+180|0;e=a+176|0;f=a+40|0;g=a+24|0;h=a+12|0;i=a;Ap(c,e,533);switch(k[e>>2]|0){case 534:case 542:{v9(0,b,c);r=a;return}case 535:case 540:case 536:{w9(0,b,c);r=a;return}case 539:{w9(0,b,c);r=a;return}case 538:case 541:case 537:{r=a;return}default:{a=f+56|0;c=f+4|0;k[f>>2]=27524;k[a>>2]=27544;B=0;wa(508,f+56|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;j=Q;l=b;vva(a);Qb(l|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[a>>2]=27488;B=0;va(448,c|0);b=B;B=0;do if(b&1){m=Rb()|0;n=Q;o=m}else{k[c>>2]=27560;m=f+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,c|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(c);n=q;o=p;break}Yua(d);B=0;p=Ia(40,f|0,127478,14)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[e>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,144645,14)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,127077,81);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,138230,21);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,1049,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[a>>2]=27488;k[c>>2]=27560;Yua(m);Ava(c);vva(a);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[a>>2]=27488;k[c>>2]=27560;Yua(m);Ava(c);vva(a);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[a>>2]=27488;k[c>>2]=27560;Yua(m);Ava(c);vva(a);Qb(C|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}}}function v9(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;a=r;r=r+64|0;d=a+48|0;e=a+44|0;f=a+40|0;g=a+32|0;h=a+24|0;i=a+16|0;j=a+8|0;l=a;k[d>>2]=0;k[e>>2]=0;cp(c,f,299);pp(c,l,85);m=Hc[k[(k[c>>2]|0)+396>>2]&511](c)|0;n=Hc[k[(k[c>>2]|0)+392>>2]&511](c)|0;o=ma(k[f>>2]|0,m)|0;q=Rqa(o>>>0>536870911?-1:o<<3)|0;s=Rqa(n>>>0>536870911?-1:n<<3)|0;tp(c,d,943);sp(c,e,943);t=Wo(c,674)|0;u=Wo(c,677)|0;if((k[f>>2]|0)==3)v=Wo(c,679)|0;else v=0;w=Wo(c,653)|0;pp(c,l,85);x=Hc[k[(k[c>>2]|0)+304>>2]&511](c)|0;if((m|0)>0){y=0;do{z=k[(k[x>>2]|0)+32>>2]|0;A=Hc[k[(k[c>>2]|0)+504>>2]&511](c)|0;nd[z&1023](x,A,y);nd[k[(k[t>>2]|0)+48>>2]&1023](t,g,x);nd[k[(k[u>>2]|0)+48>>2]&1023](u,h,x);A=k[f>>2]|0;z=ma(A,y)|0;p[q+(z<<3)>>3]=+p[g>>3];p[q+(z+1<<3)>>3]=+p[h>>3];if((A|0)==3){nd[k[(k[v>>2]|0)+48>>2]&1023](v,i,x);A=q+((ma(k[f>>2]|0,y)|0)+2<<3)|0;p[A>>3]=+p[i>>3]}y=y+1|0}while((y|0)!=(m|0))}m=(n|0)>0;if(m){y=0;do{i=k[(k[x>>2]|0)+32>>2]|0;f=Hc[k[(k[c>>2]|0)+404>>2]&511](c)|0;nd[i&1023](x,f,y);nd[k[(k[w>>2]|0)+48>>2]&1023](w,j,x);p[s+(y<<3)>>3]=+p[j>>3]/+p[l>>3];y=y+1|0}while((y|0)!=(n|0))}if(k[b>>2]|0){y=k[k[b+4>>2]>>2]|0;Dc[k[(k[y>>2]|0)+16>>2]&255](y,o,k[d>>2]|0,q,0)}if(m?(k[b>>2]|0)!=0:0){m=k[k[b+4>>2]>>2]|0;Dc[k[(k[m>>2]|0)+16>>2]&255](m,n,k[e>>2]|0,s,0)}if(x)Ec[k[(k[x>>2]|0)+4>>2]&1023](x);x=k[e>>2]|0;if(x)Tqa(x);k[e>>2]=0;e=k[d>>2]|0;if(!e){k[d>>2]=0;Tqa(s);Tqa(q);r=a;return}Tqa(e);k[d>>2]=0;Tqa(s);Tqa(q);r=a;return}function w9(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;a=r;r=r+224|0;d=a+204|0;e=a+8|0;f=a;g=a+200|0;h=a+196|0;i=a+192|0;j=a+56|0;l=a+40|0;m=a+28|0;n=a+16|0;k[i>>2]=0;cp(c,g,298);switch(k[g>>2]|0){case 302:case 300:{o=2;break}case 301:{o=1;break}default:{q=j+56|0;s=j+4|0;k[j>>2]=27524;k[q>>2]=27544;B=0;wa(508,j+56|0,s|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;v=t;vva(q);Qb(v|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[q>>2]=27488;B=0;va(448,s|0);t=B;B=0;do if(t&1){w=Rb()|0;x=Q;y=w}else{k[s>>2]=27560;w=j+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[j+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,s|0,d|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(d);Yua(w);Ava(s);x=A;y=z;break}Yua(d);B=0;z=Ia(40,j|0,144639,5)|0;A=B;B=0;if((((!(A&1)?(B=0,A=ya(427,k[g>>2]|0)|0,C=B,B=0,!(C&1)):0)?(C=Lta(A)|0,B=0,D=Ia(40,z|0,A|0,C|0)|0,C=B,B=0,!(C&1)):0)?(B=0,C=Ia(40,D|0,146481,18)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,C|0,0)|0,C=B,B=0,!(C&1)):0){C=Ab(20)|0;B=0;eb(502,l|0,127077,81);D=B;B=0;do if(!(D&1)){B=0;eb(502,m|0,128270,26);A=B;B=0;if(A&1){A=Rb()|0;z=Q;Yua(l);E=A;F=z;break}B=0;wa(510,n|0,s|0);z=B;B=0;if(z&1){z=Rb()|0;G=z;H=Q;I=1}else{B=0;ua(163,C|0,l|0,m|0,1064,n|0);z=B;B=0;if(z&1)J=1;else{B=0;eb(503,C|0,1240,229);B=0;J=0}z=Rb()|0;A=Q;Yua(n);G=z;H=A;I=J}Yua(m);Yua(l);if(I){E=G;F=H}else{K=G;L=H;k[j>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);Qb(K|0)}}else{A=Rb()|0;E=A;F=Q}while(0);zb(C|0);K=E;L=F;k[j>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);Qb(K|0)}D=Rb()|0;K=D;L=Q;k[j>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);Qb(K|0)}while(0);u=x;v=y;vva(q);Qb(v|0)}}v=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;q=ma(v,o)|0;Ap(c,h,533);rp(c,i,k[h>>2]|0,943);h=Rqa(q>>>0>536870911?-1:q<<3)|0;y=Wo(c,674)|0;if((k[g>>2]|0)==301)M=0;else M=Wo(c,677)|0;g=Hc[k[(k[c>>2]|0)+304>>2]&511](c)|0;if((v|0)>0)if((o|0)==2){x=0;do{u=k[(k[g>>2]|0)+32>>2]|0;K=Hc[k[(k[c>>2]|0)+112>>2]&511](c)|0;nd[u&1023](g,K,x);nd[k[(k[y>>2]|0)+48>>2]&1023](y,e,g);K=x<<1;p[h+(K<<3)>>3]=+p[e>>3];nd[k[(k[M>>2]|0)+48>>2]&1023](M,f,g);p[h+((K|1)<<3)>>3]=+p[f>>3];x=x+1|0}while((x|0)!=(v|0))}else{x=0;do{f=k[(k[g>>2]|0)+32>>2]|0;M=Hc[k[(k[c>>2]|0)+112>>2]&511](c)|0;nd[f&1023](g,M,x);nd[k[(k[y>>2]|0)+48>>2]&1023](y,e,g);M=h+((ma(x,o)|0)<<3)|0;p[M>>3]=+p[e>>3];x=x+1|0}while((x|0)!=(v|0))}if(k[b>>2]|0){v=k[k[b+4>>2]>>2]|0;Dc[k[(k[v>>2]|0)+16>>2]&255](v,q,k[i>>2]|0,h,0)}if(g)Ec[k[(k[g>>2]|0)+4>>2]&1023](g);Tqa(h);h=k[i>>2]|0;if(!h){r=a;return}Tqa(h);r=a;return}function x9(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,127077,81);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,1103,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function y9(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;d=a+180|0;e=a+176|0;f=a+40|0;g=a+24|0;h=a+12|0;i=a;Ap(c,e,533);switch(k[e>>2]|0){case 534:case 542:{z9(0,b,c);r=a;return}case 536:{A9(0,b,c);r=a;return}case 540:{B9(0,b,c);r=a;return}case 539:{C9(0,b,c);r=a;return}case 537:{D9(0,b,c);r=a;return}case 541:{E9(0,b,c);r=a;return}case 538:{F9(0,b,c);r=a;return}case 535:{r=a;return}default:{a=f+56|0;c=f+4|0;k[f>>2]=27524;k[a>>2]=27544;B=0;wa(508,f+56|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;j=Q;l=b;vva(a);Qb(l|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[a>>2]=27488;B=0;va(448,c|0);b=B;B=0;do if(b&1){m=Rb()|0;n=Q;o=m}else{k[c>>2]=27560;m=f+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,c|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(c);n=q;o=p;break}Yua(d);B=0;p=Ia(40,f|0,127478,14)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[e>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,144645,14)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,127077,81);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,137199,23);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,1134,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[a>>2]=27488;k[c>>2]=27560;Yua(m);Ava(c);vva(a);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[a>>2]=27488;k[c>>2]=27560;Yua(m);Ava(c);vva(a);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[a>>2]=27488;k[c>>2]=27560;Yua(m);Ava(c);vva(a);Qb(C|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}}}function z9(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0.0,ja=0.0,ka=0.0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0.0;a=r;r=r+1440|0;d=a+1416|0;e=a+1388|0;f=a+1372|0;g=a+1356|0;h=a;i=a+1208|0;j=a+1404|0;l=a+1392|0;m=a+1376|0;n=a+1056|0;o=a+1360|0;q=a+1344|0;s=a+1192|0;u=a+904|0;v=a+1040|0;w=a+888|0;x=a+736|0;y=a+752|0;z=a+316|0;A=a+304|0;C=a+152|0;D=a+600|0;E=a+140|0;F=a+128|0;G=a+116|0;H=a+464|0;I=a+104|0;J=a+92|0;K=a+80|0;L=a+328|0;M=a+68|0;N=a+56|0;O=a+44|0;P=a+168|0;R=a+32|0;S=a+20|0;T=a+8|0;k[f>>2]=0;k[g>>2]=0;cp(c,e,299);pp(c,h,85);op(c,a+1428|0,325);U=Hc[k[(k[c>>2]|0)+396>>2]&511](c)|0;V=Hc[k[(k[c>>2]|0)+392>>2]&511](c)|0;W=k[e>>2]|0;X=ma(W,U)|0;Y=X+V|0;Z=Rqa(Y>>>0>536870911?-1:Y<<3)|0;Y=U>>>0>536870911?-1:U<<3;_=Rqa(Y)|0;ba=Rqa(Y)|0;ca=Rqa(Y)|0;da=Rqa(Y)|0;Y=Rqa(V>>>0>536870911?-1:V<<3)|0;ea=V+U|0;fa=Rqa(ea>>>0>1073741823?-1:ea<<2)|0;ea=(U|0)>0;if((W|0)==2){if(ea){W=0;do{k[fa+(W<<2)>>2]=971;W=W+1|0}while((W|0)!=(U|0))}}else if(ea){W=0;do{k[fa+(W<<2)>>2]=972;W=W+1|0}while((W|0)!=(U|0))}W=(V|0)>0;if(W){ga=0;do{k[fa+(ga+U<<2)>>2]=653;ga=ga+1|0}while((ga|0)!=(V|0))}tp(c,f,943);sp(c,g,943);if((X|0)>0){ga=k[f>>2]|0;ha=0;do{p[Z+(ha<<3)>>3]=+p[b+(k[ga+(ha<<2)>>2]<<3)>>3];ha=ha+1|0}while((ha|0)!=(X|0))}if(W){ha=k[g>>2]|0;ga=0;do{p[Z+(ga+X<<3)>>3]=+p[b+(k[ha+(ga<<2)>>2]<<3)>>3];ga=ga+1|0}while((ga|0)!=(V|0))}Cq(c,Z,fa);a:do if(ea){ga=k[e>>2]|0;b:do if((ga|0)==3){ha=0;while(1){b=ha*3|0;ia=+p[Z+(b<<3)>>3];p[_+(ha<<3)>>3]=ia;ja=+p[Z+(b+1<<3)>>3];p[ba+(ha<<3)>>3]=ja;ka=+$(+ia);p[t>>3]=ka;la=k[t>>2]|0;na=k[t+4>>2]|0;if(na>>>0>2146435072|(na|0)==2146435072&la>>>0>0){oa=25;break b}if((la|0)==0&(na|0)==2146435072){oa=49;break b}ka=+$(+ja);p[t>>3]=ka;na=k[t>>2]|0;la=k[t+4>>2]|0;if(la>>>0>2146435072|(la|0)==2146435072&na>>>0>0){oa=73;break b}if((na|0)==0&(la|0)==2146435072){oa=97;break b}ka=+p[Z+(b+2<<3)>>3];p[ca+(ha<<3)>>3]=ka;ja=+$(+ka);p[t>>3]=ja;b=k[t>>2]|0;la=k[t+4>>2]|0;if(la>>>0>2146435072|(la|0)==2146435072&b>>>0>0){oa=120;break}if((b|0)==0&(la|0)==2146435072){oa=143;break}ha=ha+1|0;if((ha|0)>=(U|0))break a}if((oa|0)==120){ha=D+56|0;la=D+4|0;k[D>>2]=27524;k[ha>>2]=27544;B=0;wa(508,D+56|0,la|0);b=B;B=0;if(b&1){b=Rb()|0;pa=Q;qa=b;vva(ha);Qb(qa|0)}k[D+128>>2]=0;k[D+132>>2]=-1;k[D>>2]=27468;k[ha>>2]=27488;B=0;va(448,la|0);b=B;B=0;do if(b&1){na=Rb()|0;ra=Q;sa=na}else{k[la>>2]=27560;na=D+36|0;k[na>>2]=0;k[na+4>>2]=0;k[na+8>>2]=0;k[na+12>>2]=0;k[D+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,la|0,d|0);ta=B;B=0;if(ta&1){ta=Rb()|0;xa=Q;Yua(d);Yua(na);Ava(la);ra=xa;sa=ta;break}Yua(d);B=0;ta=Ia(40,D|0,135564,28)|0;xa=B;B=0;c:do if(!(xa&1)?(B=0,Xa(239,ta|0,0)|0,ya=B,B=0,!(ya&1)):0){ya=Ab(20)|0;B=0;eb(502,E|0,127077,81);za=B;B=0;do if(!(za&1)){B=0;eb(502,F|0,128297,25);Aa=B;B=0;if(Aa&1){Aa=Rb()|0;Ba=Q;Yua(E);Ca=Ba;Da=Aa;break}B=0;wa(510,G|0,la|0);Aa=B;B=0;if(Aa&1){Aa=Rb()|0;Ea=1;Fa=Q;Ga=Aa}else{B=0;ua(163,ya|0,E|0,F|0,4967,G|0);Aa=B;B=0;if(Aa&1)Ha=1;else{B=0;eb(503,ya|0,1240,229);B=0;Ha=0}Aa=Rb()|0;Ba=Q;Yua(G);Ea=Ha;Fa=Ba;Ga=Aa}Yua(F);Yua(E);if(Ea){Ca=Fa;Da=Ga}else{Ja=Fa;Ka=Ga;break c}}else{Aa=Rb()|0;Ca=Q;Da=Aa}while(0);zb(ya|0);Ja=Ca;Ka=Da}else oa=135;while(0);if((oa|0)==135){ta=Rb()|0;Ja=Q;Ka=ta}k[D>>2]=27468;k[ha>>2]=27488;k[la>>2]=27560;Yua(na);Ava(la);vva(ha);La=Ja;Ma=Ka;Qb(Ma|0)}while(0);pa=ra;qa=sa;vva(ha);Qb(qa|0)}else if((oa|0)==143){la=H+56|0;b=H+4|0;k[H>>2]=27524;k[la>>2]=27544;B=0;wa(508,H+56|0,b|0);ta=B;B=0;if(ta&1){ta=Rb()|0;Na=Q;Oa=ta;vva(la);Qb(Oa|0)}k[H+128>>2]=0;k[H+132>>2]=-1;k[H>>2]=27468;k[la>>2]=27488;B=0;va(448,b|0);ta=B;B=0;do if(ta&1){xa=Rb()|0;Pa=Q;Qa=xa}else{k[b>>2]=27560;xa=H+36|0;k[xa>>2]=0;k[xa+4>>2]=0;k[xa+8>>2]=0;k[xa+12>>2]=0;k[H+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);za=B;B=0;if(za&1){za=Rb()|0;Aa=Q;Yua(d);Yua(xa);Ava(b);Pa=Aa;Qa=za;break}Yua(d);B=0;za=Ia(40,H|0,135593,28)|0;Aa=B;B=0;d:do if(!(Aa&1)?(B=0,Xa(239,za|0,0)|0,Ba=B,B=0,!(Ba&1)):0){Ba=Ab(20)|0;B=0;eb(502,I|0,127077,81);Ra=B;B=0;do if(!(Ra&1)){B=0;eb(502,J|0,128297,25);Sa=B;B=0;if(Sa&1){Sa=Rb()|0;Ta=Q;Yua(I);Ua=Ta;Va=Sa;break}B=0;wa(510,K|0,b|0);Sa=B;B=0;if(Sa&1){Sa=Rb()|0;Wa=1;Ya=Q;Za=Sa}else{B=0;ua(163,Ba|0,I|0,J|0,4968,K|0);Sa=B;B=0;if(Sa&1)_a=1;else{B=0;eb(503,Ba|0,1240,229);B=0;_a=0}Sa=Rb()|0;Ta=Q;Yua(K);Wa=_a;Ya=Ta;Za=Sa}Yua(J);Yua(I);if(Wa){Ua=Ya;Va=Za}else{$a=Ya;ab=Za;break d}}else{Sa=Rb()|0;Ua=Q;Va=Sa}while(0);zb(Ba|0);$a=Ua;ab=Va}else oa=158;while(0);if((oa|0)==158){za=Rb()|0;$a=Q;ab=za}k[H>>2]=27468;k[la>>2]=27488;k[b>>2]=27560;Yua(xa);Ava(b);vva(la);La=$a;Ma=ab;Qb(Ma|0)}while(0);Na=Pa;Oa=Qa;vva(la);Qb(Oa|0)}}else{b=0;while(1){ta=ma(ga,b)|0;ja=+p[Z+(ta<<3)>>3];p[_+(b<<3)>>3]=ja;ka=+p[Z+(ta+1<<3)>>3];p[ba+(b<<3)>>3]=ka;ia=+$(+ja);p[t>>3]=ia;ta=k[t>>2]|0;ha=k[t+4>>2]|0;if(ha>>>0>2146435072|(ha|0)==2146435072&ta>>>0>0){oa=25;break b}if((ta|0)==0&(ha|0)==2146435072){oa=49;break b}ia=+$(+ka);p[t>>3]=ia;ha=k[t>>2]|0;ta=k[t+4>>2]|0;if(ta>>>0>2146435072|(ta|0)==2146435072&ha>>>0>0){oa=73;break b}if((ha|0)==0&(ta|0)==2146435072){oa=97;break b}b=b+1|0;if((b|0)>=(U|0))break a}}while(0);if((oa|0)==25){ga=i+56|0;b=i+4|0;k[i>>2]=27524;k[ga>>2]=27544;B=0;wa(508,i+56|0,b|0);la=B;B=0;if(la&1){la=Rb()|0;bb=Q;cb=la;vva(ga);Qb(cb|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[ga>>2]=27488;B=0;va(448,b|0);la=B;B=0;do if(la&1){ta=Rb()|0;db=Q;fb=ta}else{k[b>>2]=27560;ta=i+36|0;k[ta>>2]=0;k[ta+4>>2]=0;k[ta+8>>2]=0;k[ta+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);ha=B;B=0;if(ha&1){ha=Rb()|0;za=Q;Yua(d);Yua(ta);Ava(b);db=za;fb=ha;break}Yua(d);B=0;ha=Ia(40,i|0,135564,28)|0;za=B;B=0;e:do if(!(za&1)?(B=0,Xa(239,ha|0,0)|0,Aa=B,B=0,!(Aa&1)):0){Aa=Ab(20)|0;B=0;eb(502,j|0,127077,81);na=B;B=0;do if(!(na&1)){B=0;eb(502,l|0,128297,25);Ra=B;B=0;if(Ra&1){Ra=Rb()|0;ya=Q;Yua(j);gb=ya;hb=Ra;break}B=0;wa(510,m|0,b|0);Ra=B;B=0;if(Ra&1){Ra=Rb()|0;ib=Q;jb=Ra;kb=1}else{B=0;ua(163,Aa|0,j|0,l|0,4960,m|0);Ra=B;B=0;if(Ra&1)lb=1;else{B=0;eb(503,Aa|0,1240,229);B=0;lb=0}Ra=Rb()|0;ya=Q;Yua(m);ib=ya;jb=Ra;kb=lb}Yua(l);Yua(j);if(kb){gb=ib;hb=jb}else{mb=ib;nb=jb;break e}}else{Ra=Rb()|0;gb=Q;hb=Ra}while(0);zb(Aa|0);mb=gb;nb=hb}else oa=40;while(0);if((oa|0)==40){ha=Rb()|0;mb=Q;nb=ha}k[i>>2]=27468;k[ga>>2]=27488;k[b>>2]=27560;Yua(ta);Ava(b);vva(ga);La=mb;Ma=nb;Qb(Ma|0)}while(0);bb=db;cb=fb;vva(ga);Qb(cb|0)}else if((oa|0)==49){b=n+56|0;la=n+4|0;k[n>>2]=27524;k[b>>2]=27544;B=0;wa(508,n+56|0,la|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ob=Q;pb=ha;vva(b);Qb(pb|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[b>>2]=27488;B=0;va(448,la|0);ha=B;B=0;do if(ha&1){za=Rb()|0;qb=Q;rb=za}else{k[la>>2]=27560;za=n+36|0;k[za>>2]=0;k[za+4>>2]=0;k[za+8>>2]=0;k[za+12>>2]=0;k[n+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,la|0,d|0);na=B;B=0;if(na&1){na=Rb()|0;xa=Q;Yua(d);Yua(za);Ava(la);qb=xa;rb=na;break}Yua(d);B=0;na=Ia(40,n|0,135593,28)|0;xa=B;B=0;f:do if(!(xa&1)?(B=0,Xa(239,na|0,0)|0,Ra=B,B=0,!(Ra&1)):0){Ra=Ab(20)|0;B=0;eb(502,o|0,127077,81);ya=B;B=0;do if(!(ya&1)){B=0;eb(502,q|0,128297,25);Sa=B;B=0;if(Sa&1){Sa=Rb()|0;Ta=Q;Yua(o);sb=Ta;tb=Sa;break}B=0;wa(510,s|0,la|0);Sa=B;B=0;if(Sa&1){Sa=Rb()|0;ub=1;vb=Q;wb=Sa}else{B=0;ua(163,Ra|0,o|0,q|0,4961,s|0);Sa=B;B=0;if(Sa&1)xb=1;else{B=0;eb(503,Ra|0,1240,229);B=0;xb=0}Sa=Rb()|0;Ta=Q;Yua(s);ub=xb;vb=Ta;wb=Sa}Yua(q);Yua(o);if(ub){sb=vb;tb=wb}else{yb=vb;Bb=wb;break f}}else{Sa=Rb()|0;sb=Q;tb=Sa}while(0);zb(Ra|0);yb=sb;Bb=tb}else oa=64;while(0);if((oa|0)==64){na=Rb()|0;yb=Q;Bb=na}k[n>>2]=27468;k[b>>2]=27488;k[la>>2]=27560;Yua(za);Ava(la);vva(b);La=yb;Ma=Bb;Qb(Ma|0)}while(0);ob=qb;pb=rb;vva(b);Qb(pb|0)}else if((oa|0)==73){la=u+56|0;ha=u+4|0;k[u>>2]=27524;k[la>>2]=27544;B=0;wa(508,u+56|0,ha|0);ga=B;B=0;if(ga&1){ga=Rb()|0;Cb=Q;Db=ga;vva(la);Qb(Db|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[la>>2]=27488;B=0;va(448,ha|0);ga=B;B=0;do if(ga&1){na=Rb()|0;Eb=Q;Fb=na}else{k[ha>>2]=27560;na=u+36|0;k[na>>2]=0;k[na+4>>2]=0;k[na+8>>2]=0;k[na+12>>2]=0;k[u+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ha|0,d|0);xa=B;B=0;if(xa&1){xa=Rb()|0;ta=Q;Yua(d);Yua(na);Ava(ha);Eb=ta;Fb=xa;break}Yua(d);B=0;xa=Ia(40,u|0,135564,28)|0;ta=B;B=0;g:do if(!(ta&1)?(B=0,Xa(239,xa|0,0)|0,ya=B,B=0,!(ya&1)):0){ya=Ab(20)|0;B=0;eb(502,v|0,127077,81);Aa=B;B=0;do if(!(Aa&1)){B=0;eb(502,w|0,128297,25);Sa=B;B=0;if(Sa&1){Sa=Rb()|0;Ta=Q;Yua(v);Gb=Ta;Hb=Sa;break}B=0;wa(510,x|0,ha|0);Sa=B;B=0;if(Sa&1){Sa=Rb()|0;Ib=1;Jb=Q;Kb=Sa}else{B=0;ua(163,ya|0,v|0,w|0,4962,x|0);Sa=B;B=0;if(Sa&1)Lb=1;else{B=0;eb(503,ya|0,1240,229);B=0;Lb=0}Sa=Rb()|0;Ta=Q;Yua(x);Ib=Lb;Jb=Ta;Kb=Sa}Yua(w);Yua(v);if(Ib){Gb=Jb;Hb=Kb}else{Mb=Jb;Nb=Kb;break g}}else{Sa=Rb()|0;Gb=Q;Hb=Sa}while(0);zb(ya|0);Mb=Gb;Nb=Hb}else oa=88;while(0);if((oa|0)==88){xa=Rb()|0;Mb=Q;Nb=xa}k[u>>2]=27468;k[la>>2]=27488;k[ha>>2]=27560;Yua(na);Ava(ha);vva(la);La=Mb;Ma=Nb;Qb(Ma|0)}while(0);Cb=Eb;Db=Fb;vva(la);Qb(Db|0)}else if((oa|0)==97){ha=y+56|0;ga=y+4|0;k[y>>2]=27524;k[ha>>2]=27544;B=0;wa(508,y+56|0,ga|0);b=B;B=0;if(b&1){b=Rb()|0;Ob=Q;Pb=b;vva(ha);Qb(Pb|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[ha>>2]=27488;B=0;va(448,ga|0);b=B;B=0;do if(b&1){xa=Rb()|0;Sb=Q;Tb=xa}else{k[ga>>2]=27560;xa=y+36|0;k[xa>>2]=0;k[xa+4>>2]=0;k[xa+8>>2]=0;k[xa+12>>2]=0;k[y+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ga|0,d|0);ta=B;B=0;if(ta&1){ta=Rb()|0;za=Q;Yua(d);Yua(xa);Ava(ga);Sb=za;Tb=ta;break}Yua(d);B=0;ta=Ia(40,y|0,135593,28)|0;za=B;B=0;h:do if(!(za&1)?(B=0,Xa(239,ta|0,0)|0,Aa=B,B=0,!(Aa&1)):0){Aa=Ab(20)|0;B=0;eb(502,z|0,127077,81);Ra=B;B=0;do if(!(Ra&1)){B=0;eb(502,A|0,128297,25);Sa=B;B=0;if(Sa&1){Sa=Rb()|0;Ta=Q;Yua(z);Ub=Ta;Vb=Sa;break}B=0;wa(510,C|0,ga|0);Sa=B;B=0;if(Sa&1){Sa=Rb()|0;Wb=1;Xb=Q;Yb=Sa}else{B=0;ua(163,Aa|0,z|0,A|0,4963,C|0);Sa=B;B=0;if(Sa&1)Zb=1;else{B=0;eb(503,Aa|0,1240,229);B=0;Zb=0}Sa=Rb()|0;Ta=Q;Yua(C);Wb=Zb;Xb=Ta;Yb=Sa}Yua(A);Yua(z);if(Wb){Ub=Xb;Vb=Yb}else{_b=Xb;$b=Yb;break h}}else{Sa=Rb()|0;Ub=Q;Vb=Sa}while(0);zb(Aa|0);_b=Ub;$b=Vb}else oa=112;while(0);if((oa|0)==112){ta=Rb()|0;_b=Q;$b=ta}k[y>>2]=27468;k[ha>>2]=27488;k[ga>>2]=27560;Yua(xa);Ava(ga);vva(ha);La=_b;Ma=$b;Qb(Ma|0)}while(0);Ob=Sb;Pb=Tb;vva(ha);Qb(Pb|0)}}while(0);do if(W){Pb=0;while(1){ia=+p[Z+(Pb+X<<3)>>3];p[Y+(Pb<<3)>>3]=ia;ka=+$(+ia);p[t>>3]=ka;Tb=k[t>>2]|0;Sb=k[t+4>>2]|0;if(Sb>>>0>2146435072|(Sb|0)==2146435072&Tb>>>0>0){oa=171;break}Pb=Pb+1|0;if((Tb|0)==0&(Sb|0)==2146435072){oa=195;break}if((Pb|0)>=(V|0)){oa=168;break}}if((oa|0)==168){if(!W)break;ka=+p[h>>3];Pb=0;do{ha=Y+(Pb<<3)|0;p[ha>>3]=+p[ha>>3]*ka;Pb=Pb+1|0}while((Pb|0)!=(V|0))}else if((oa|0)==171){Pb=L+56|0;ha=L+4|0;k[L>>2]=27524;k[Pb>>2]=27544;B=0;wa(508,L+56|0,ha|0);Sb=B;B=0;if(Sb&1){Sb=Rb()|0;ac=Q;bc=Sb;vva(Pb);Qb(bc|0)}k[L+128>>2]=0;k[L+132>>2]=-1;k[L>>2]=27468;k[Pb>>2]=27488;B=0;va(448,ha|0);Sb=B;B=0;do if(Sb&1){Tb=Rb()|0;cc=Q;dc=Tb}else{k[ha>>2]=27560;Tb=L+36|0;k[Tb>>2]=0;k[Tb+4>>2]=0;k[Tb+8>>2]=0;k[Tb+12>>2]=0;k[L+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ha|0,d|0);Ob=B;B=0;if(Ob&1){Ob=Rb()|0;$b=Q;Yua(d);Yua(Tb);Ava(ha);cc=$b;dc=Ob;break}Yua(d);B=0;Ob=Ia(40,L|0,135564,28)|0;$b=B;B=0;i:do if(!($b&1)?(B=0,Xa(239,Ob|0,0)|0,_b=B,B=0,!(_b&1)):0){_b=Ab(20)|0;B=0;eb(502,M|0,127077,81);y=B;B=0;do if(!(y&1)){B=0;eb(502,N|0,128297,25);Vb=B;B=0;if(Vb&1){Vb=Rb()|0;Ub=Q;Yua(M);ec=Ub;fc=Vb;break}B=0;wa(510,O|0,ha|0);Vb=B;B=0;if(Vb&1){Vb=Rb()|0;gc=1;hc=Q;ic=Vb}else{B=0;ua(163,_b|0,M|0,N|0,4973,O|0);Vb=B;B=0;if(Vb&1)jc=1;else{B=0;eb(503,_b|0,1240,229);B=0;jc=0}Vb=Rb()|0;Ub=Q;Yua(O);gc=jc;hc=Ub;ic=Vb}Yua(N);Yua(M);if(gc){ec=hc;fc=ic}else{kc=hc;lc=ic;break i}}else{Vb=Rb()|0;ec=Q;fc=Vb}while(0);zb(_b|0);kc=ec;lc=fc}else oa=186;while(0);if((oa|0)==186){Ob=Rb()|0;kc=Q;lc=Ob}k[L>>2]=27468;k[Pb>>2]=27488;k[ha>>2]=27560;Yua(Tb);Ava(ha);vva(Pb);La=kc;Ma=lc;Qb(Ma|0)}while(0);ac=cc;bc=dc;vva(Pb);Qb(bc|0)}else if((oa|0)==195){ha=P+56|0;Sb=P+4|0;k[P>>2]=27524;k[ha>>2]=27544;B=0;wa(508,P+56|0,Sb|0);Ob=B;B=0;if(Ob&1){Ob=Rb()|0;mc=Q;nc=Ob;vva(ha);Qb(nc|0)}k[P+128>>2]=0;k[P+132>>2]=-1;k[P>>2]=27468;k[ha>>2]=27488;B=0;va(448,Sb|0);Ob=B;B=0;do if(Ob&1){$b=Rb()|0;oc=Q;pc=$b}else{k[Sb>>2]=27560;$b=P+36|0;k[$b>>2]=0;k[$b+4>>2]=0;k[$b+8>>2]=0;k[$b+12>>2]=0;k[P+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Sb|0,d|0);xa=B;B=0;if(xa&1){xa=Rb()|0;y=Q;Yua(d);Yua($b);Ava(Sb);oc=y;pc=xa;break}Yua(d);B=0;xa=Ia(40,P|0,135593,28)|0;y=B;B=0;j:do if(!(y&1)?(B=0,Xa(239,xa|0,0)|0,Aa=B,B=0,!(Aa&1)):0){Aa=Ab(20)|0;B=0;eb(502,R|0,127077,81);Vb=B;B=0;do if(!(Vb&1)){B=0;eb(502,S|0,128297,25);Ub=B;B=0;if(Ub&1){Ub=Rb()|0;Yb=Q;Yua(R);qc=Yb;rc=Ub;break}B=0;wa(510,T|0,Sb|0);Ub=B;B=0;if(Ub&1){Ub=Rb()|0;sc=1;tc=Q;uc=Ub}else{B=0;ua(163,Aa|0,R|0,S|0,4974,T|0);Ub=B;B=0;if(Ub&1)vc=1;else{B=0;eb(503,Aa|0,1240,229);B=0;vc=0}Ub=Rb()|0;Yb=Q;Yua(T);sc=vc;tc=Yb;uc=Ub}Yua(S);Yua(R);if(sc){qc=tc;rc=uc}else{wc=tc;xc=uc;break j}}else{Ub=Rb()|0;qc=Q;rc=Ub}while(0);zb(Aa|0);wc=qc;xc=rc}else oa=210;while(0);if((oa|0)==210){xa=Rb()|0;wc=Q;xc=xa}k[P>>2]=27468;k[ha>>2]=27488;k[Sb>>2]=27560;Yua($b);Ava(Sb);vva(ha);La=wc;Ma=xc;Qb(Ma|0)}while(0);mc=oc;nc=pc;vva(ha);Qb(nc|0)}}while(0);if((k[e>>2]|0)==3){if(ea){nc=0;do{ka=+p[_+(nc<<3)>>3];ia=+p[ba+(nc<<3)>>3];ja=+p[ca+(nc<<3)>>3];yc=+aa(+(ka*ka+ia*ia+ja*ja));p[da+(nc<<3)>>3]=yc;nc=nc+1|0}while((nc|0)!=(U|0))}}else if(ea){ea=0;do{yc=+p[_+(ea<<3)>>3];ja=+p[ba+(ea<<3)>>3];ia=+aa(+(yc*yc+ja*ja));p[da+(ea<<3)>>3]=ia;ea=ea+1|0}while((ea|0)!=(U|0))}Pp(c,674,675);Pp(c,677,678);if(W)Pp(c,653,654);if((k[e>>2]|0)==3)Pp(c,679,682);U=k[c>>2]|0;ea=k[U+48>>2]|0;nc=Hc[k[U+504>>2]&511](c)|0;rd[ea&511](c,674,_,nc);nc=k[c>>2]|0;ea=k[nc+48>>2]|0;U=Hc[k[nc+504>>2]&511](c)|0;rd[ea&511](c,677,ba,U);U=k[c>>2]|0;ea=k[U+48>>2]|0;nc=Hc[k[U+504>>2]&511](c)|0;rd[ea&511](c,671,da,nc);if(W){W=k[c>>2]|0;nc=k[W+48>>2]|0;ea=Hc[k[W+404>>2]&511](c)|0;rd[nc&511](c,653,Y,ea)}if((k[e>>2]|0)==3){e=k[c>>2]|0;ea=k[e+48>>2]|0;nc=Hc[k[e+504>>2]&511](c)|0;rd[ea&511](c,679,ca,nc)}Tqa(Y);Tqa(da);Tqa(ca);Tqa(ba);Tqa(_);Tqa(Z);Z=k[f>>2]|0;if(Z)Tqa(Z);k[f>>2]=0;f=k[g>>2]|0;if(!f){k[g>>2]=0;Tqa(fa);r=a;return}Tqa(f);k[g>>2]=0;Tqa(fa);r=a;return}function A9(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0,R=0.0,S=0.0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0.0;a=r;r=r+1088|0;d=a+1064|0;e=a+1036|0;f=a+1020|0;g=a+1016|0;h=a+880|0;i=a+1052|0;j=a+1040|0;l=a+1024|0;m=a+728|0;n=a+864|0;o=a+712|0;q=a+560|0;s=a+576|0;u=a+272|0;v=a+120|0;w=a+108|0;x=a+424|0;y=a+96|0;z=a+84|0;A=a+72|0;C=a+288|0;D=a+60|0;E=a+48|0;F=a+36|0;G=a+136|0;H=a+24|0;I=a+12|0;J=a;k[f>>2]=0;k[g>>2]=0;K=Hc[k[(k[c>>2]|0)+172>>2]&511](c)|0;L=K>>>0>536870911?-1:K<<3;M=Rqa(L)|0;N=Rqa(L)|0;O=Rqa(L)|0;cp(c,e,298);P=+Dp(c,265);R=+Dp(c,65);switch(k[e>>2]|0){case 300:{xp(c,N,353);if((K|0)>0){S=P*R;L=0;do{p[M+(L<<3)>>3]=S*+p[N+(L<<3)>>3];L=L+1|0}while((L|0)!=(K|0));T=2}else T=2;break}case 302:{Uo(c,g);xp(c,O,339);if((K|0)>0){S=P*R;L=k[g>>2]|0;U=0;do{p[M+(U<<3)>>3]=S*(+p[O+(U<<3)>>3]-+p[L+((U*3|0)+2<<3)>>3]);U=U+1|0}while((U|0)!=(K|0));T=2}else T=2;break}case 301:{Uo(c,g);xp(c,O,339);if((K|0)>0){S=P*R;U=k[g>>2]|0;L=0;do{p[M+(L<<3)>>3]=S*(+p[O+(L<<3)>>3]-+p[U+((L*3|0)+2<<3)>>3]);L=L+1|0}while((L|0)!=(K|0));T=1}else T=1;break}default:{K=h+56|0;L=h+4|0;k[h>>2]=27524;k[K>>2]=27544;B=0;wa(508,h+56|0,L|0);U=B;B=0;if(U&1){U=Rb()|0;V=Q;W=U;vva(K);Qb(W|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[K>>2]=27488;B=0;va(448,L|0);U=B;B=0;do if(U&1){X=Rb()|0;Y=Q;Z=X}else{k[L>>2]=27560;X=h+36|0;k[X>>2]=0;k[X+4>>2]=0;k[X+8>>2]=0;k[X+12>>2]=0;k[h+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,L|0,d|0);_=B;B=0;if(_&1){_=Rb()|0;ba=Q;Yua(d);Yua(X);Ava(L);Y=ba;Z=_;break}Yua(d);B=0;_=Ia(40,h|0,144639,5)|0;ba=B;B=0;a:do if((((!(ba&1)?(B=0,ca=ya(427,k[e>>2]|0)|0,da=B,B=0,!(da&1)):0)?(da=Lta(ca)|0,B=0,ea=Ia(40,_|0,ca|0,da|0)|0,da=B,B=0,!(da&1)):0)?(B=0,da=Ia(40,ea|0,146481,18)|0,ea=B,B=0,!(ea&1)):0)?(B=0,Xa(239,da|0,0)|0,da=B,B=0,!(da&1)):0){da=Ab(20)|0;B=0;eb(502,i|0,127077,81);ea=B;B=0;do if(!(ea&1)){B=0;eb(502,j|0,128323,26);ca=B;B=0;if(ca&1){ca=Rb()|0;fa=Q;Yua(i);ga=fa;ha=ca;break}B=0;wa(510,l|0,L|0);ca=B;B=0;if(ca&1){ca=Rb()|0;ia=Q;ja=ca;ka=1}else{B=0;ua(163,da|0,i|0,j|0,1812,l|0);ca=B;B=0;if(ca&1)la=1;else{B=0;eb(503,da|0,1240,229);B=0;la=0}ca=Rb()|0;fa=Q;Yua(l);ia=fa;ja=ca;ka=la}Yua(j);Yua(i);if(ka){ga=ia;ha=ja}else{na=ia;oa=ja;break a}}else{ca=Rb()|0;ga=Q;ha=ca}while(0);zb(da|0);na=ga;oa=ha}else pa=29;while(0);if((pa|0)==29){_=Rb()|0;na=Q;oa=_}k[h>>2]=27468;k[K>>2]=27488;k[L>>2]=27560;Yua(X);Ava(L);vva(K);qa=na;ra=oa;Qb(ra|0)}while(0);V=Y;W=Z;vva(K);Qb(W|0)}}rd[k[(k[c>>2]|0)+48>>2]&511](c,653,M,738);Tqa(M);Tqa(N);Tqa(O);b:do switch(k[e>>2]|0){case 300:{sa=c;break}case 301:case 302:{if(Hc[k[(k[c>>2]|0)+248>>2]&511](c)|0){sa=Hc[k[(k[c>>2]|0)+432>>2]&511](c)|0;break b}O=k[g>>2]|0;if(O)Tqa(O);k[g>>2]=0;r=a;return}default:{O=m+56|0;N=m+4|0;k[m>>2]=27524;k[O>>2]=27544;B=0;wa(508,m+56|0,N|0);M=B;B=0;if(M&1){M=Rb()|0;ta=Q;xa=M;vva(O);Qb(xa|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[O>>2]=27488;B=0;va(448,N|0);M=B;B=0;do if(M&1){W=Rb()|0;za=Q;Aa=W}else{k[N>>2]=27560;W=m+36|0;k[W>>2]=0;k[W+4>>2]=0;k[W+8>>2]=0;k[W+12>>2]=0;k[m+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,N|0,d|0);K=B;B=0;if(K&1){K=Rb()|0;Z=Q;Yua(d);Yua(W);Ava(N);za=Z;Aa=K;break}Yua(d);B=0;K=Ia(40,m|0,144639,5)|0;Z=B;B=0;c:do if((((!(Z&1)?(B=0,Y=ya(427,k[e>>2]|0)|0,V=B,B=0,!(V&1)):0)?(V=Lta(Y)|0,B=0,oa=Ia(40,K|0,Y|0,V|0)|0,V=B,B=0,!(V&1)):0)?(B=0,V=Ia(40,oa|0,146481,18)|0,oa=B,B=0,!(oa&1)):0)?(B=0,Xa(239,V|0,0)|0,V=B,B=0,!(V&1)):0){V=Ab(20)|0;B=0;eb(502,n|0,127077,81);oa=B;B=0;do if(!(oa&1)){B=0;eb(502,o|0,128323,26);Y=B;B=0;if(Y&1){Y=Rb()|0;na=Q;Yua(n);Ba=na;Ca=Y;break}B=0;wa(510,q|0,N|0);Y=B;B=0;if(Y&1){Y=Rb()|0;Da=1;Ea=Q;Fa=Y}else{B=0;ua(163,V|0,n|0,o|0,1828,q|0);Y=B;B=0;if(Y&1)Ga=1;else{B=0;eb(503,V|0,1240,229);B=0;Ga=0}Y=Rb()|0;na=Q;Yua(q);Da=Ga;Ea=na;Fa=Y}Yua(o);Yua(n);if(Da){Ba=Ea;Ca=Fa}else{Ha=Ea;Ja=Fa;break c}}else{Y=Rb()|0;Ba=Q;Ca=Y}while(0);zb(V|0);Ha=Ba;Ja=Ca}else pa=61;while(0);if((pa|0)==61){K=Rb()|0;Ha=Q;Ja=K}k[m>>2]=27468;k[O>>2]=27488;k[N>>2]=27560;Yua(W);Ava(N);vva(O);qa=Ha;ra=Ja;Qb(ra|0)}while(0);ta=za;xa=Aa;vva(O);Qb(xa|0)}}while(0);xa=Hc[k[(k[sa>>2]|0)+164>>2]&511](sa)|0;Aa=ma(xa,T)|0;rp(sa,f,536,943);za=Rqa(Aa>>>0>536870911?-1:Aa<<3)|0;ta=xa>>>0>536870911?-1:xa<<3;Ja=Rqa(ta)|0;Ha=Rqa(ta)|0;m=Rqa(ta)|0;Ca=Rqa(ta)|0;if((Aa|0)>0){ta=k[f>>2]|0;Ba=0;do{p[za+(Ba<<3)>>3]=+p[b+(k[ta+(Ba<<2)>>2]<<3)>>3];Ba=Ba+1|0}while((Ba|0)!=(Aa|0))}Aa=(T|0)==2;if(Aa)Aq(sa,za,971);Ba=(xa|0)>0;d:do if(Ba){e:do if(Aa){ta=0;while(1){b=ta<<1;S=+p[za+(b<<3)>>3];p[Ja+(ta<<3)>>3]=S;R=+$(+S);p[t>>3]=R;Fa=k[t>>2]|0;Ea=k[t+4>>2]|0;if(Ea>>>0>2146435072|(Ea|0)==2146435072&Fa>>>0>0){pa=82;break e}if((Fa|0)==0&(Ea|0)==2146435072){pa=106;break e}R=+p[za+((b|1)<<3)>>3];p[Ha+(ta<<3)>>3]=R;S=+$(+R);p[t>>3]=S;b=k[t>>2]|0;Ea=k[t+4>>2]|0;if(Ea>>>0>2146435072|(Ea|0)==2146435072&b>>>0>0){pa=129;break}if((b|0)==0&(Ea|0)==2146435072){pa=152;break}ta=ta+1|0;if((ta|0)>=(xa|0))break d}if((pa|0)==129){ta=C+56|0;W=C+4|0;k[C>>2]=27524;k[ta>>2]=27544;B=0;wa(508,C+56|0,W|0);Ea=B;B=0;if(Ea&1){Ea=Rb()|0;Ka=Q;La=Ea;vva(ta);Qb(La|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[ta>>2]=27488;B=0;va(448,W|0);Ea=B;B=0;do if(Ea&1){b=Rb()|0;Ma=Q;Na=b}else{k[W>>2]=27560;b=C+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[C+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,W|0,d|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Da=Q;Yua(d);Yua(b);Ava(W);Ma=Da;Na=Fa;break}Yua(d);B=0;Fa=Ia(40,C|0,135564,28)|0;Da=B;B=0;f:do if(!(Da&1)?(B=0,Xa(239,Fa|0,0)|0,n=B,B=0,!(n&1)):0){n=Ab(20)|0;B=0;eb(502,D|0,127077,81);o=B;B=0;do if(!(o&1)){B=0;eb(502,E|0,128323,26);Ga=B;B=0;if(Ga&1){Ga=Rb()|0;q=Q;Yua(D);Oa=q;Pa=Ga;break}B=0;wa(510,F|0,W|0);Ga=B;B=0;if(Ga&1){Ga=Rb()|0;Qa=1;Ra=Q;Sa=Ga}else{B=0;ua(163,n|0,D|0,E|0,1857,F|0);Ga=B;B=0;if(Ga&1)Ta=1;else{B=0;eb(503,n|0,1240,229);B=0;Ta=0}Ga=Rb()|0;q=Q;Yua(F);Qa=Ta;Ra=q;Sa=Ga}Yua(E);Yua(D);if(Qa){Oa=Ra;Pa=Sa}else{Ua=Ra;Va=Sa;break f}}else{Ga=Rb()|0;Oa=Q;Pa=Ga}while(0);zb(n|0);Ua=Oa;Va=Pa}else pa=144;while(0);if((pa|0)==144){Fa=Rb()|0;Ua=Q;Va=Fa}k[C>>2]=27468;k[ta>>2]=27488;k[W>>2]=27560;Yua(b);Ava(W);vva(ta);qa=Ua;ra=Va;Qb(ra|0)}while(0);Ka=Ma;La=Na;vva(ta);Qb(La|0)}else if((pa|0)==152){W=G+56|0;Ea=G+4|0;k[G>>2]=27524;k[W>>2]=27544;B=0;wa(508,G+56|0,Ea|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Wa=Q;Ya=Fa;vva(W);Qb(Ya|0)}k[G+128>>2]=0;k[G+132>>2]=-1;k[G>>2]=27468;k[W>>2]=27488;B=0;va(448,Ea|0);Fa=B;B=0;do if(Fa&1){Da=Rb()|0;Za=Q;_a=Da}else{k[Ea>>2]=27560;Da=G+36|0;k[Da>>2]=0;k[Da+4>>2]=0;k[Da+8>>2]=0;k[Da+12>>2]=0;k[G+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Ea|0,d|0);V=B;B=0;if(V&1){V=Rb()|0;o=Q;Yua(d);Yua(Da);Ava(Ea);Za=o;_a=V;break}Yua(d);B=0;V=Ia(40,G|0,135593,28)|0;o=B;B=0;g:do if(!(o&1)?(B=0,Xa(239,V|0,0)|0,Ga=B,B=0,!(Ga&1)):0){Ga=Ab(20)|0;B=0;eb(502,H|0,127077,81);q=B;B=0;do if(!(q&1)){B=0;eb(502,I|0,128323,26);N=B;B=0;if(N&1){N=Rb()|0;M=Q;Yua(H);$a=M;ab=N;break}B=0;wa(510,J|0,Ea|0);N=B;B=0;if(N&1){N=Rb()|0;bb=1;cb=Q;db=N}else{B=0;ua(163,Ga|0,H|0,I|0,1858,J|0);N=B;B=0;if(N&1)fb=1;else{B=0;eb(503,Ga|0,1240,229);B=0;fb=0}N=Rb()|0;M=Q;Yua(J);bb=fb;cb=M;db=N}Yua(I);Yua(H);if(bb){$a=cb;ab=db}else{gb=cb;hb=db;break g}}else{N=Rb()|0;$a=Q;ab=N}while(0);zb(Ga|0);gb=$a;hb=ab}else pa=167;while(0);if((pa|0)==167){V=Rb()|0;gb=Q;hb=V}k[G>>2]=27468;k[W>>2]=27488;k[Ea>>2]=27560;Yua(Da);Ava(Ea);vva(W);qa=gb;ra=hb;Qb(ra|0)}while(0);Wa=Za;Ya=_a;vva(W);Qb(Ya|0)}}else{Ea=0;while(1){Fa=za+((ma(Ea,T)|0)<<3)|0;S=+p[Fa>>3];p[Ja+(Ea<<3)>>3]=S;R=+$(+S);p[t>>3]=R;Fa=k[t>>2]|0;ta=k[t+4>>2]|0;if(ta>>>0>2146435072|(ta|0)==2146435072&Fa>>>0>0){pa=82;break e}if((Fa|0)==0&(ta|0)==2146435072){pa=106;break e}Ea=Ea+1|0;if((Ea|0)>=(xa|0))break d}}while(0);if((pa|0)==82){O=s+56|0;Ea=s+4|0;k[s>>2]=27524;k[O>>2]=27544;B=0;wa(508,s+56|0,Ea|0);W=B;B=0;if(W&1){W=Rb()|0;ib=Q;jb=W;vva(O);Qb(jb|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[O>>2]=27488;B=0;va(448,Ea|0);W=B;B=0;do if(W&1){ta=Rb()|0;kb=Q;lb=ta}else{k[Ea>>2]=27560;ta=s+36|0;k[ta>>2]=0;k[ta+4>>2]=0;k[ta+8>>2]=0;k[ta+12>>2]=0;k[s+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Ea|0,d|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;V=Q;Yua(d);Yua(ta);Ava(Ea);kb=V;lb=Fa;break}Yua(d);B=0;Fa=Ia(40,s|0,135564,28)|0;V=B;B=0;h:do if(!(V&1)?(B=0,Xa(239,Fa|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,u|0,127077,81);b=B;B=0;do if(!(b&1)){B=0;eb(502,v|0,128323,26);q=B;B=0;if(q&1){q=Rb()|0;n=Q;Yua(u);mb=n;nb=q;break}B=0;wa(510,w|0,Ea|0);q=B;B=0;if(q&1){q=Rb()|0;ob=1;pb=Q;qb=q}else{B=0;ua(163,o|0,u|0,v|0,1852,w|0);q=B;B=0;if(q&1)rb=1;else{B=0;eb(503,o|0,1240,229);B=0;rb=0}q=Rb()|0;n=Q;Yua(w);ob=rb;pb=n;qb=q}Yua(v);Yua(u);if(ob){mb=pb;nb=qb}else{sb=pb;tb=qb;break h}}else{q=Rb()|0;mb=Q;nb=q}while(0);zb(o|0);sb=mb;tb=nb}else pa=97;while(0);if((pa|0)==97){Fa=Rb()|0;sb=Q;tb=Fa}k[s>>2]=27468;k[O>>2]=27488;k[Ea>>2]=27560;Yua(ta);Ava(Ea);vva(O);qa=sb;ra=tb;Qb(ra|0)}while(0);ib=kb;jb=lb;vva(O);Qb(jb|0)}else if((pa|0)==106){Ea=x+56|0;W=x+4|0;k[x>>2]=27524;k[Ea>>2]=27544;B=0;wa(508,x+56|0,W|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;ub=Q;vb=Fa;vva(Ea);Qb(vb|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[Ea>>2]=27488;B=0;va(448,W|0);Fa=B;B=0;do if(Fa&1){V=Rb()|0;wb=Q;xb=V}else{k[W>>2]=27560;V=x+36|0;k[V>>2]=0;k[V+4>>2]=0;k[V+8>>2]=0;k[V+12>>2]=0;k[x+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,W|0,d|0);b=B;B=0;if(b&1){b=Rb()|0;Da=Q;Yua(d);Yua(V);Ava(W);wb=Da;xb=b;break}Yua(d);B=0;b=Ia(40,x|0,135593,28)|0;Da=B;B=0;i:do if(!(Da&1)?(B=0,Xa(239,b|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,y|0,127077,81);n=B;B=0;do if(!(n&1)){B=0;eb(502,z|0,128323,26);N=B;B=0;if(N&1){N=Rb()|0;M=Q;Yua(y);yb=M;Bb=N;break}B=0;wa(510,A|0,W|0);N=B;B=0;if(N&1){N=Rb()|0;Cb=Q;Db=N;Eb=1}else{B=0;ua(163,q|0,y|0,z|0,1853,A|0);N=B;B=0;if(N&1)Fb=1;else{B=0;eb(503,q|0,1240,229);B=0;Fb=0}N=Rb()|0;M=Q;Yua(A);Cb=M;Db=N;Eb=Fb}Yua(z);Yua(y);if(Eb){yb=Cb;Bb=Db}else{Gb=Cb;Hb=Db;break i}}else{N=Rb()|0;yb=Q;Bb=N}while(0);zb(q|0);Gb=yb;Hb=Bb}else pa=121;while(0);if((pa|0)==121){b=Rb()|0;Gb=Q;Hb=b}k[x>>2]=27468;k[Ea>>2]=27488;k[W>>2]=27560;Yua(V);Ava(W);vva(Ea);qa=Gb;ra=Hb;Qb(ra|0)}while(0);ub=wb;vb=xb;vva(Ea);Qb(vb|0)}}while(0);do if(Aa){up(sa,m,679,0.0);if(Ba){vb=0;do{R=+p[Ja+(vb<<3)>>3];S=+p[Ha+(vb<<3)>>3];P=+p[m+(vb<<3)>>3];Ib=+aa(+(R*R+S*S+P*P));p[Ca+(vb<<3)>>3]=Ib;vb=vb+1|0}while((vb|0)!=(xa|0));pa=183}else{Pp(c,674,675);pa=184;break}}else{up(sa,Ha,677,0.0);if(Ba){vb=0;do{Ib=+p[Ja+(vb<<3)>>3];P=+p[Ha+(vb<<3)>>3];S=+aa(+(Ib*Ib+P*P));p[Ca+(vb<<3)>>3]=S;vb=vb+1|0}while((vb|0)!=(xa|0));pa=183}else{Pp(c,674,675);pa=185;break}}while(0);if((pa|0)==183){Pp(c,674,675);if(Aa)pa=184;else pa=185}if((pa|0)==184){Pp(c,677,678);Aa=k[c>>2]|0;xa=k[Aa+44>>2]|0;Ba=Hc[k[Aa+128>>2]&511](c)|0;rd[xa&511](c,674,Ja,Ba);Ba=k[c>>2]|0;xa=k[Ba+44>>2]|0;Aa=Hc[k[Ba+128>>2]&511](c)|0;rd[xa&511](c,677,Ha,Aa)}else if((pa|0)==185){pa=k[c>>2]|0;Aa=k[pa+44>>2]|0;xa=Hc[k[pa+128>>2]&511](c)|0;rd[Aa&511](c,674,Ja,xa)}xa=k[c>>2]|0;Aa=k[xa+44>>2]|0;pa=Hc[k[xa+128>>2]&511](c)|0;rd[Aa&511](c,671,Ca,pa);Tqa(Ca);Tqa(m);Tqa(Ha);Tqa(Ja);Tqa(za);za=k[g>>2]|0;if(za)Tqa(za);k[g>>2]=0;g=k[f>>2]|0;if(g)Tqa(g);k[f>>2]=0;if((k[e>>2]|0)==300){r=a;return}ap(sa);if(!sa){r=a;return}Ec[k[(k[sa>>2]|0)+4>>2]&1023](sa);r=a;return}function B9(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0.0;a=r;r=r+720|0;d=a+704|0;e=a+700|0;f=a+684|0;g=a+680|0;h=a+520|0;i=a+688|0;j=a+668|0;l=a+656|0;m=a+384|0;n=a+368|0;o=a+84|0;q=a+72|0;s=a+232|0;u=a+60|0;v=a+48|0;w=a+36|0;x=a+96|0;y=a+24|0;z=a+12|0;A=a;k[f>>2]=0;k[g>>2]=0;cp(c,e,299);C=Hc[k[(k[c>>2]|0)+172>>2]&511](c)|0;D=C>>>0>536870911?-1:C<<3;E=Rqa(D)|0;F=Rqa(D)|0;G=+Dp(c,265);H=+Dp(c,65);Uo(c,g);xp(c,F,339);if((C|0)>0){I=G*H;D=k[g>>2]|0;J=0;do{p[E+(J<<3)>>3]=I*(+p[F+(J<<3)>>3]-+p[D+((J*3|0)+2<<3)>>3]);J=J+1|0}while((J|0)!=(C|0))}rd[k[(k[c>>2]|0)+48>>2]&511](c,653,E,738);Tqa(E);Tqa(F);F=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;E=ma((k[e>>2]|0)+-1|0,F)|0;rp(c,f,540,943);C=Rqa(E>>>0>536870911?-1:E<<3)|0;J=F>>>0>536870911?-1:F<<3;D=Rqa(J)|0;K=Rqa(J)|0;L=Rqa(J)|0;M=Rqa(J)|0;if((E|0)>0){J=k[f>>2]|0;N=0;do{p[C+(N<<3)>>3]=+p[b+(k[J+(N<<2)>>2]<<3)>>3];N=N+1|0}while((N|0)!=(E|0))}E=k[e>>2]|0;if((E|0)==3){Aq(c,C,971);O=k[e>>2]|0}else O=E;E=O+-1|0;N=(O|0)==3;a:do if((F|0)>0){J=0;while(1){b=C+((ma(J,E)|0)<<3)|0;I=+p[b>>3];p[D+(J<<3)>>3]=I;H=+$(+I);p[t>>3]=H;b=k[t>>2]|0;P=k[t+4>>2]|0;if(P>>>0>2146435072|(P|0)==2146435072&b>>>0>0){R=11;break}if((b|0)==0&(P|0)==2146435072){R=35;break}if(N){H=+p[C+((J<<1|1)<<3)>>3];p[K+(J<<3)>>3]=H;I=+$(+H);p[t>>3]=I;P=k[t>>2]|0;b=k[t+4>>2]|0;if(b>>>0>2146435072|(b|0)==2146435072&P>>>0>0){R=60;break}if((P|0)==0&(b|0)==2146435072){R=84;break}}J=J+1|0;if((J|0)>=(F|0))break a}if((R|0)==11){J=h+56|0;b=h+4|0;k[h>>2]=27524;k[J>>2]=27544;B=0;wa(508,h+56|0,b|0);P=B;B=0;if(P&1){P=Rb()|0;S=Q;T=P;vva(J);Qb(T|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[J>>2]=27488;B=0;va(448,b|0);P=B;B=0;do if(P&1){U=Rb()|0;V=Q;W=U}else{k[b>>2]=27560;U=h+36|0;k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;k[U+12>>2]=0;k[h+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);X=B;B=0;if(X&1){X=Rb()|0;Y=Q;Yua(d);Yua(U);Ava(b);V=Y;W=X;break}Yua(d);B=0;X=Ia(40,h|0,135564,28)|0;Y=B;B=0;b:do if(!(Y&1)?(B=0,Xa(239,X|0,0)|0,Z=B,B=0,!(Z&1)):0){Z=Ab(20)|0;B=0;eb(502,i|0,127077,81);_=B;B=0;do if(!(_&1)){B=0;eb(502,j|0,128350,25);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;Yua(i);da=ca;ea=ba;break}B=0;wa(510,l|0,b|0);ba=B;B=0;if(ba&1){ba=Rb()|0;fa=Q;ga=ba;ha=1}else{B=0;ua(163,Z|0,i|0,j|0,2820,l|0);ba=B;B=0;if(ba&1)ia=1;else{B=0;eb(503,Z|0,1240,229);B=0;ia=0}ba=Rb()|0;ca=Q;Yua(l);fa=ca;ga=ba;ha=ia}Yua(j);Yua(i);if(ha){da=fa;ea=ga}else{ja=fa;ka=ga;break b}}else{ba=Rb()|0;da=Q;ea=ba}while(0);zb(Z|0);ja=da;ka=ea}else R=26;while(0);if((R|0)==26){X=Rb()|0;ja=Q;ka=X}k[h>>2]=27468;k[J>>2]=27488;k[b>>2]=27560;Yua(U);Ava(b);vva(J);la=ja;na=ka;Qb(na|0)}while(0);S=V;T=W;vva(J);Qb(T|0)}else if((R|0)==35){b=m+56|0;P=m+4|0;k[m>>2]=27524;k[b>>2]=27544;B=0;wa(508,m+56|0,P|0);X=B;B=0;if(X&1){X=Rb()|0;oa=Q;pa=X;vva(b);Qb(pa|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[b>>2]=27488;B=0;va(448,P|0);X=B;B=0;do if(X&1){Y=Rb()|0;qa=Q;ra=Y}else{k[P>>2]=27560;Y=m+36|0;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;k[m+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,P|0,d|0);_=B;B=0;if(_&1){_=Rb()|0;ba=Q;Yua(d);Yua(Y);Ava(P);qa=ba;ra=_;break}Yua(d);B=0;_=Ia(40,m|0,135593,28)|0;ba=B;B=0;c:do if(!(ba&1)?(B=0,Xa(239,_|0,0)|0,ca=B,B=0,!(ca&1)):0){ca=Ab(20)|0;B=0;eb(502,n|0,127077,81);sa=B;B=0;do if(!(sa&1)){B=0;eb(502,o|0,128350,25);ta=B;B=0;if(ta&1){ta=Rb()|0;xa=Q;Yua(n);ya=ta;za=xa;break}B=0;wa(510,q|0,P|0);xa=B;B=0;if(xa&1){xa=Rb()|0;Aa=1;Ba=Q;Ca=xa}else{B=0;ua(163,ca|0,n|0,o|0,2821,q|0);xa=B;B=0;if(xa&1)Da=1;else{B=0;eb(503,ca|0,1240,229);B=0;Da=0}xa=Rb()|0;ta=Q;Yua(q);Aa=Da;Ba=ta;Ca=xa}Yua(o);Yua(n);if(Aa){ya=Ca;za=Ba}else{Ea=Ba;Fa=Ca;break c}}else{xa=Rb()|0;ya=xa;za=Q}while(0);zb(ca|0);Ea=za;Fa=ya}else R=50;while(0);if((R|0)==50){_=Rb()|0;Ea=Q;Fa=_}k[m>>2]=27468;k[b>>2]=27488;k[P>>2]=27560;Yua(Y);Ava(P);vva(b);la=Ea;na=Fa;Qb(na|0)}while(0);oa=qa;pa=ra;vva(b);Qb(pa|0)}else if((R|0)==60){P=s+56|0;X=s+4|0;k[s>>2]=27524;k[P>>2]=27544;B=0;wa(508,s+56|0,X|0);J=B;B=0;if(J&1){J=Rb()|0;Ga=Q;Ha=J;vva(P);Qb(Ha|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[P>>2]=27488;B=0;va(448,X|0);J=B;B=0;do if(J&1){_=Rb()|0;Ja=Q;Ka=_}else{k[X>>2]=27560;_=s+36|0;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0;k[s+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,X|0,d|0);ba=B;B=0;if(ba&1){ba=Rb()|0;U=Q;Yua(d);Yua(_);Ava(X);Ja=U;Ka=ba;break}Yua(d);B=0;ba=Ia(40,s|0,135564,28)|0;U=B;B=0;d:do if(!(U&1)?(B=0,Xa(239,ba|0,0)|0,sa=B,B=0,!(sa&1)):0){sa=Ab(20)|0;B=0;eb(502,u|0,127077,81);Z=B;B=0;do if(!(Z&1)){B=0;eb(502,v|0,128350,25);xa=B;B=0;if(xa&1){xa=Rb()|0;ta=Q;Yua(u);La=xa;Ma=ta;break}B=0;wa(510,w|0,X|0);ta=B;B=0;if(ta&1){ta=Rb()|0;Na=1;Oa=Q;Pa=ta}else{B=0;ua(163,sa|0,u|0,v|0,2824,w|0);ta=B;B=0;if(ta&1)Qa=1;else{B=0;eb(503,sa|0,1240,229);B=0;Qa=0}ta=Rb()|0;xa=Q;Yua(w);Na=Qa;Oa=xa;Pa=ta}Yua(v);Yua(u);if(Na){La=Pa;Ma=Oa}else{Ra=Oa;Sa=Pa;break d}}else{ta=Rb()|0;La=ta;Ma=Q}while(0);zb(sa|0);Ra=Ma;Sa=La}else R=75;while(0);if((R|0)==75){ba=Rb()|0;Ra=Q;Sa=ba}k[s>>2]=27468;k[P>>2]=27488;k[X>>2]=27560;Yua(_);Ava(X);vva(P);la=Ra;na=Sa;Qb(na|0)}while(0);Ga=Ja;Ha=Ka;vva(P);Qb(Ha|0)}else if((R|0)==84){X=x+56|0;J=x+4|0;k[x>>2]=27524;k[X>>2]=27544;B=0;wa(508,x+56|0,J|0);b=B;B=0;if(b&1){b=Rb()|0;Ta=Q;Ua=b;vva(X);Qb(Ua|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[X>>2]=27488;B=0;va(448,J|0);b=B;B=0;do if(b&1){ba=Rb()|0;Va=Q;Wa=ba}else{k[J>>2]=27560;ba=x+36|0;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;k[x+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,J|0,d|0);U=B;B=0;if(U&1){U=Rb()|0;Y=Q;Yua(d);Yua(ba);Ava(J);Va=Y;Wa=U;break}Yua(d);B=0;U=Ia(40,x|0,135593,28)|0;Y=B;B=0;e:do if(!(Y&1)?(B=0,Xa(239,U|0,0)|0,Z=B,B=0,!(Z&1)):0){Z=Ab(20)|0;B=0;eb(502,y|0,127077,81);ca=B;B=0;do if(!(ca&1)){B=0;eb(502,z|0,128350,25);ta=B;B=0;if(ta&1){ta=Rb()|0;xa=Q;Yua(y);Ya=ta;Za=xa;break}B=0;wa(510,A|0,J|0);xa=B;B=0;if(xa&1){xa=Rb()|0;_a=1;$a=Q;ab=xa}else{B=0;ua(163,Z|0,y|0,z|0,2825,A|0);xa=B;B=0;if(xa&1)bb=1;else{B=0;eb(503,Z|0,1240,229);B=0;bb=0}xa=Rb()|0;ta=Q;Yua(A);_a=bb;$a=ta;ab=xa}Yua(z);Yua(y);if(_a){Ya=ab;Za=$a}else{cb=$a;db=ab;break e}}else{xa=Rb()|0;Ya=xa;Za=Q}while(0);zb(Z|0);cb=Za;db=Ya}else R=99;while(0);if((R|0)==99){U=Rb()|0;cb=Q;db=U}k[x>>2]=27468;k[X>>2]=27488;k[J>>2]=27560;Yua(ba);Ava(J);vva(X);la=cb;na=db;Qb(na|0)}while(0);Ta=Va;Ua=Wa;vva(X);Qb(Ua|0)}}while(0);if((O|0)==3){up(c,L,679,0.0);if((F|0)>0){O=0;do{I=+p[D+(O<<3)>>3];H=+p[K+(O<<3)>>3];G=+p[L+(O<<3)>>3];fb=+aa(+(I*I+H*H+G*G));p[M+(O<<3)>>3]=fb;O=O+1|0}while((O|0)!=(F|0))}}else{up(c,K,677,0.0);if((F|0)>0){O=0;do{fb=+p[D+(O<<3)>>3];G=+p[K+(O<<3)>>3];H=+aa(+(fb*fb+G*G));p[M+(O<<3)>>3]=H;O=O+1|0}while((O|0)!=(F|0))}}Pp(c,674,675);if((k[e>>2]|0)==3)Pp(c,677,678);F=k[c>>2]|0;O=k[F+48>>2]|0;Ua=Hc[k[F+128>>2]&511](c)|0;rd[O&511](c,674,D,Ua);if((k[e>>2]|0)==3){e=k[c>>2]|0;Ua=k[e+48>>2]|0;O=Hc[k[e+128>>2]&511](c)|0;rd[Ua&511](c,677,K,O)}O=k[c>>2]|0;Ua=k[O+48>>2]|0;e=Hc[k[O+128>>2]&511](c)|0;rd[Ua&511](c,671,M,e);Tqa(M);Tqa(L);Tqa(K);Tqa(D);Tqa(C);C=k[g>>2]|0;if(C)Tqa(C);k[g>>2]=0;g=k[f>>2]|0;if(!g){r=a;return}Tqa(g);r=a;return}function C9(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0.0;a=r;r=r+912|0;d=a+892|0;e=a+888|0;f=a+872|0;g=a+868|0;h=a+852|0;i=a+704|0;j=a+876|0;l=a+856|0;m=a+840|0;n=a+552|0;o=a+688|0;q=a+536|0;s=a+248|0;u=a+400|0;v=a+96|0;w=a+84|0;x=a+72|0;y=a+264|0;z=a+60|0;A=a+48|0;C=a+36|0;D=a+112|0;E=a+24|0;F=a+12|0;G=a;k[g>>2]=0;k[h>>2]=0;H=Hc[k[(k[c>>2]|0)+172>>2]&511](c)|0;I=H>>>0>536870911?-1:H<<3;J=Rqa(I)|0;K=Rqa(I)|0;L=Rqa(I)|0;cp(c,e,299);cp(c,f,298);M=+Dp(c,265);N=+Dp(c,65);if((k[e>>2]|0)==2){xp(c,K,353);if((H|0)>0){O=M*N;e=0;do{p[J+(e<<3)>>3]=O*+p[K+(e<<3)>>3];e=e+1|0}while((e|0)!=(H|0))}}else{Uo(c,h);xp(c,L,339);if((H|0)>0){O=M*N;e=k[h>>2]|0;I=0;do{p[J+(I<<3)>>3]=O*(+p[L+(I<<3)>>3]-+p[e+((I*3|0)+2<<3)>>3]);I=I+1|0}while((I|0)!=(H|0))}}rd[k[(k[c>>2]|0)+48>>2]&511](c,653,J,738);Tqa(J);Tqa(K);Tqa(L);a:do switch(k[f>>2]|0){case 300:{P=c;break}case 302:{if(Hc[k[(k[c>>2]|0)+248>>2]&511](c)|0){P=Hc[k[(k[c>>2]|0)+432>>2]&511](c)|0;break a}L=k[h>>2]|0;if(L)Tqa(L);k[h>>2]=0;r=a;return}default:{L=i+56|0;K=i+4|0;k[i>>2]=27524;k[L>>2]=27544;B=0;wa(508,i+56|0,K|0);J=B;B=0;if(J&1){J=Rb()|0;R=Q;S=J;vva(L);Qb(S|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[L>>2]=27488;B=0;va(448,K|0);J=B;B=0;do if(J&1){H=Rb()|0;T=Q;U=H}else{k[K>>2]=27560;H=i+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,K|0,d|0);I=B;B=0;if(I&1){I=Rb()|0;e=Q;Yua(d);Yua(H);Ava(K);T=e;U=I;break}Yua(d);B=0;I=Ia(40,i|0,144639,5)|0;e=B;B=0;b:do if((((!(e&1)?(B=0,V=ya(427,k[f>>2]|0)|0,W=B,B=0,!(W&1)):0)?(W=Lta(V)|0,B=0,X=Ia(40,I|0,V|0,W|0)|0,W=B,B=0,!(W&1)):0)?(B=0,W=Ia(40,X|0,146481,18)|0,X=B,B=0,!(X&1)):0)?(B=0,Xa(239,W|0,0)|0,W=B,B=0,!(W&1)):0){W=Ab(20)|0;B=0;eb(502,j|0,127077,81);X=B;B=0;do if(!(X&1)){B=0;eb(502,l|0,128376,27);V=B;B=0;if(V&1){V=Rb()|0;Y=Q;Yua(j);Z=Y;_=V;break}B=0;wa(510,m|0,K|0);V=B;B=0;if(V&1){V=Rb()|0;ba=Q;ca=V;da=1}else{B=0;ua(163,W|0,j|0,l|0,2162,m|0);V=B;B=0;if(V&1)ea=1;else{B=0;eb(503,W|0,1240,229);B=0;ea=0}V=Rb()|0;Y=Q;Yua(m);ba=Y;ca=V;da=ea}Yua(l);Yua(j);if(da){Z=ba;_=ca}else{fa=ba;ga=ca;break b}}else{V=Rb()|0;Z=Q;_=V}while(0);zb(W|0);fa=Z;ga=_}else ha=32;while(0);if((ha|0)==32){I=Rb()|0;fa=Q;ga=I}k[i>>2]=27468;k[L>>2]=27488;k[K>>2]=27560;Yua(H);Ava(K);vva(L);ia=fa;ja=ga;Qb(ja|0)}while(0);R=T;S=U;vva(L);Qb(S|0)}}while(0);S=Hc[k[(k[P>>2]|0)+164>>2]&511](P)|0;U=S<<1;rp(P,g,534,943);T=Rqa(U>>>0>536870911?-1:U<<3)|0;R=S>>>0>536870911?-1:S<<3;ga=Rqa(R)|0;fa=Rqa(R)|0;i=Rqa(R)|0;_=Rqa(R)|0;R=(S|0)>0;do if(R){Z=k[g>>2]|0;ca=0;do{p[T+(ca<<3)>>3]=+p[b+(k[Z+(ca<<2)>>2]<<3)>>3];ca=ca+1|0}while((ca|0)<(U|0));Aq(P,T,971);cp(P,f,298);if(R){ca=0;while(1){Z=ca<<1;O=+p[T+(Z<<3)>>3];p[ga+(ca<<3)>>3]=O;N=+p[T+((Z|1)<<3)>>3];p[fa+(ca<<3)>>3]=N;M=+$(+O);p[t>>3]=M;Z=k[t>>2]|0;L=k[t+4>>2]|0;if(L>>>0>2146435072|(L|0)==2146435072&Z>>>0>0){ha=48;break}if((Z|0)==0&(L|0)==2146435072){ha=72;break}M=+$(+N);p[t>>3]=M;L=k[t>>2]|0;Z=k[t+4>>2]|0;if(Z>>>0>2146435072|(Z|0)==2146435072&L>>>0>0){ha=96;break}ca=ca+1|0;if((L|0)==0&(Z|0)==2146435072){ha=120;break}if((ca|0)>=(S|0)){ha=143;break}}if((ha|0)==48){ca=n+56|0;Z=n+4|0;k[n>>2]=27524;k[ca>>2]=27544;B=0;wa(508,n+56|0,Z|0);L=B;B=0;if(L&1){L=Rb()|0;ka=Q;la=L;vva(ca);Qb(la|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[ca>>2]=27488;B=0;va(448,Z|0);L=B;B=0;do if(L&1){ba=Rb()|0;ma=Q;na=ba}else{k[Z>>2]=27560;ba=n+36|0;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;k[n+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Z|0,d|0);da=B;B=0;if(da&1){da=Rb()|0;j=Q;Yua(d);Yua(ba);Ava(Z);ma=j;na=da;break}Yua(d);B=0;da=Ia(40,n|0,135564,28)|0;j=B;B=0;c:do if(!(j&1)?(B=0,Xa(239,da|0,0)|0,l=B,B=0,!(l&1)):0){l=Ab(20)|0;B=0;eb(502,o|0,127077,81);ea=B;B=0;do if(!(ea&1)){B=0;eb(502,q|0,128376,27);m=B;B=0;if(m&1){m=Rb()|0;K=Q;Yua(o);oa=K;pa=m;break}B=0;wa(510,s|0,Z|0);m=B;B=0;if(m&1){m=Rb()|0;qa=1;ra=Q;sa=m}else{B=0;ua(163,l|0,o|0,q|0,2190,s|0);m=B;B=0;if(m&1)ta=1;else{B=0;eb(503,l|0,1240,229);B=0;ta=0}m=Rb()|0;K=Q;Yua(s);qa=ta;ra=K;sa=m}Yua(q);Yua(o);if(qa){oa=ra;pa=sa}else{xa=ra;za=sa;break c}}else{m=Rb()|0;oa=Q;pa=m}while(0);zb(l|0);xa=oa;za=pa}else ha=63;while(0);if((ha|0)==63){da=Rb()|0;xa=Q;za=da}k[n>>2]=27468;k[ca>>2]=27488;k[Z>>2]=27560;Yua(ba);Ava(Z);vva(ca);ia=xa;ja=za;Qb(ja|0)}while(0);ka=ma;la=na;vva(ca);Qb(la|0)}else if((ha|0)==72){Z=u+56|0;L=u+4|0;k[u>>2]=27524;k[Z>>2]=27544;B=0;wa(508,u+56|0,L|0);da=B;B=0;if(da&1){da=Rb()|0;Aa=Q;Ba=da;vva(Z);Qb(Ba|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[Z>>2]=27488;B=0;va(448,L|0);da=B;B=0;do if(da&1){j=Rb()|0;Ca=Q;Da=j}else{k[L>>2]=27560;j=u+36|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;k[u+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,L|0,d|0);H=B;B=0;if(H&1){H=Rb()|0;ea=Q;Yua(d);Yua(j);Ava(L);Ca=ea;Da=H;break}Yua(d);B=0;H=Ia(40,u|0,135593,28)|0;ea=B;B=0;d:do if(!(ea&1)?(B=0,Xa(239,H|0,0)|0,W=B,B=0,!(W&1)):0){W=Ab(20)|0;B=0;eb(502,v|0,127077,81);m=B;B=0;do if(!(m&1)){B=0;eb(502,w|0,128376,27);K=B;B=0;if(K&1){K=Rb()|0;J=Q;Yua(v);Ea=J;Fa=K;break}B=0;wa(510,x|0,L|0);K=B;B=0;if(K&1){K=Rb()|0;Ga=1;Ha=Q;Ja=K}else{B=0;ua(163,W|0,v|0,w|0,2191,x|0);K=B;B=0;if(K&1)Ka=1;else{B=0;eb(503,W|0,1240,229);B=0;Ka=0}K=Rb()|0;J=Q;Yua(x);Ga=Ka;Ha=J;Ja=K}Yua(w);Yua(v);if(Ga){Ea=Ha;Fa=Ja}else{La=Ha;Ma=Ja;break d}}else{K=Rb()|0;Ea=Q;Fa=K}while(0);zb(W|0);La=Ea;Ma=Fa}else ha=87;while(0);if((ha|0)==87){H=Rb()|0;La=Q;Ma=H}k[u>>2]=27468;k[Z>>2]=27488;k[L>>2]=27560;Yua(j);Ava(L);vva(Z);ia=La;ja=Ma;Qb(ja|0)}while(0);Aa=Ca;Ba=Da;vva(Z);Qb(Ba|0)}else if((ha|0)==96){L=y+56|0;da=y+4|0;k[y>>2]=27524;k[L>>2]=27544;B=0;wa(508,y+56|0,da|0);ca=B;B=0;if(ca&1){ca=Rb()|0;Na=Q;Oa=ca;vva(L);Qb(Oa|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[L>>2]=27488;B=0;va(448,da|0);ca=B;B=0;do if(ca&1){H=Rb()|0;Pa=Q;Qa=H}else{k[da>>2]=27560;H=y+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[y+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,da|0,d|0);ea=B;B=0;if(ea&1){ea=Rb()|0;ba=Q;Yua(d);Yua(H);Ava(da);Pa=ba;Qa=ea;break}Yua(d);B=0;ea=Ia(40,y|0,135564,28)|0;ba=B;B=0;e:do if(!(ba&1)?(B=0,Xa(239,ea|0,0)|0,m=B,B=0,!(m&1)):0){m=Ab(20)|0;B=0;eb(502,z|0,127077,81);l=B;B=0;do if(!(l&1)){B=0;eb(502,A|0,128376,27);K=B;B=0;if(K&1){K=Rb()|0;J=Q;Yua(z);Ra=J;Sa=K;break}B=0;wa(510,C|0,da|0);K=B;B=0;if(K&1){K=Rb()|0;Ta=1;Ua=Q;Va=K}else{B=0;ua(163,m|0,z|0,A|0,2192,C|0);K=B;B=0;if(K&1)Wa=1;else{B=0;eb(503,m|0,1240,229);B=0;Wa=0}K=Rb()|0;J=Q;Yua(C);Ta=Wa;Ua=J;Va=K}Yua(A);Yua(z);if(Ta){Ra=Ua;Sa=Va}else{Ya=Ua;Za=Va;break e}}else{K=Rb()|0;Ra=Q;Sa=K}while(0);zb(m|0);Ya=Ra;Za=Sa}else ha=111;while(0);if((ha|0)==111){ea=Rb()|0;Ya=Q;Za=ea}k[y>>2]=27468;k[L>>2]=27488;k[da>>2]=27560;Yua(H);Ava(da);vva(L);ia=Ya;ja=Za;Qb(ja|0)}while(0);Na=Pa;Oa=Qa;vva(L);Qb(Oa|0)}else if((ha|0)==120){da=D+56|0;ca=D+4|0;k[D>>2]=27524;k[da>>2]=27544;B=0;wa(508,D+56|0,ca|0);Z=B;B=0;if(Z&1){Z=Rb()|0;_a=Q;$a=Z;vva(da);Qb($a|0)}k[D+128>>2]=0;k[D+132>>2]=-1;k[D>>2]=27468;k[da>>2]=27488;B=0;va(448,ca|0);Z=B;B=0;do if(Z&1){ea=Rb()|0;ab=Q;bb=ea}else{k[ca>>2]=27560;ea=D+36|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[D+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ca|0,d|0);ba=B;B=0;if(ba&1){ba=Rb()|0;j=Q;Yua(d);Yua(ea);Ava(ca);ab=j;bb=ba;break}Yua(d);B=0;ba=Ia(40,D|0,135593,28)|0;j=B;B=0;f:do if(!(j&1)?(B=0,Xa(239,ba|0,0)|0,l=B,B=0,!(l&1)):0){l=Ab(20)|0;B=0;eb(502,E|0,127077,81);W=B;B=0;do if(!(W&1)){B=0;eb(502,F|0,128376,27);K=B;B=0;if(K&1){K=Rb()|0;J=Q;Yua(E);cb=J;db=K;break}B=0;wa(510,G|0,ca|0);K=B;B=0;if(K&1){K=Rb()|0;fb=1;gb=Q;hb=K}else{B=0;ua(163,l|0,E|0,F|0,2193,G|0);K=B;B=0;if(K&1)ib=1;else{B=0;eb(503,l|0,1240,229);B=0;ib=0}K=Rb()|0;J=Q;Yua(G);fb=ib;gb=J;hb=K}Yua(F);Yua(E);if(fb){cb=gb;db=hb}else{jb=gb;kb=hb;break f}}else{K=Rb()|0;cb=Q;db=K}while(0);zb(l|0);jb=cb;kb=db}else ha=135;while(0);if((ha|0)==135){ba=Rb()|0;jb=Q;kb=ba}k[D>>2]=27468;k[da>>2]=27488;k[ca>>2]=27560;Yua(ea);Ava(ca);vva(da);ia=jb;ja=kb;Qb(ja|0)}while(0);_a=ab;$a=bb;vva(da);Qb($a|0)}else if((ha|0)==143){up(P,i,679,0.0);if(R)lb=0;else break;do{M=+p[ga+(lb<<3)>>3];N=+p[fa+(lb<<3)>>3];O=+p[i+(lb<<3)>>3];mb=+aa(+(M*M+N*N+O*O));p[_+(lb<<3)>>3]=mb;lb=lb+1|0}while((lb|0)!=(S|0))}}else ha=45}else{Aq(P,T,971);cp(P,f,298);ha=45}while(0);if((ha|0)==45)up(P,i,679,0.0);Pp(c,674,675);Pp(c,677,678);ha=k[c>>2]|0;S=k[ha+44>>2]|0;lb=Hc[k[ha+128>>2]&511](c)|0;rd[S&511](c,674,ga,lb);lb=k[c>>2]|0;S=k[lb+44>>2]|0;ha=Hc[k[lb+128>>2]&511](c)|0;rd[S&511](c,677,fa,ha);ha=k[c>>2]|0;S=k[ha+44>>2]|0;lb=Hc[k[ha+128>>2]&511](c)|0;rd[S&511](c,671,_,lb);Tqa(_);Tqa(i);Tqa(fa);Tqa(ga);Tqa(T);T=k[h>>2]|0;if(T)Tqa(T);k[h>>2]=0;h=k[g>>2]|0;if(h)Tqa(h);k[g>>2]=0;if((k[f>>2]|0)==300){r=a;return}ap(P);if(!P){r=a;return}Ec[k[(k[P>>2]|0)+4>>2]&1023](P);r=a;return}function D9(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0.0,ia=0.0,ja=0.0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0.0;a=r;r=r+896|0;d=a+880|0;e=a+864|0;f=a+860|0;g=a+844|0;h=a+696|0;i=a+868|0;j=a+848|0;l=a+832|0;m=a+560|0;n=a+548|0;o=a+536|0;q=a+384|0;s=a+400|0;u=a+96|0;v=a+84|0;w=a+72|0;x=a+248|0;y=a+60|0;z=a+48|0;A=a+36|0;C=a+112|0;D=a+24|0;E=a+12|0;F=a;k[e>>2]=0;k[f>>2]=0;k[g>>2]=0;G=Hc[k[(k[c>>2]|0)+124>>2]&511](c)|0;if((Hc[k[(k[G>>2]|0)+20>>2]&511](G)|0)!=625){H=h+56|0;I=h+4|0;k[h>>2]=27524;k[H>>2]=27544;B=0;wa(508,h+56|0,I|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;L=J;vva(H);Qb(L|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[H>>2]=27488;B=0;va(448,I|0);J=B;B=0;do if(J&1){M=Rb()|0;N=Q;O=M}else{k[I>>2]=27560;M=h+36|0;k[M>>2]=0;k[M+4>>2]=0;k[M+8>>2]=0;k[M+12>>2]=0;k[h+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,I|0,d|0);P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(d);Yua(M);Ava(I);N=R;O=P;break}Yua(d);B=0;P=Ia(40,h|0,128404,27)|0;R=B;B=0;a:do if((((!(R&1)?(B=0,S=ya(k[(k[G>>2]|0)+20>>2]|0,G|0)|0,T=B,B=0,!(T&1)):0)?(B=0,T=ya(427,S|0)|0,S=B,B=0,!(S&1)):0)?(S=Lta(T)|0,B=0,U=Ia(40,P|0,T|0,S|0)|0,S=B,B=0,!(S&1)):0)?(B=0,Xa(239,U|0,0)|0,U=B,B=0,!(U&1)):0){U=Ab(20)|0;B=0;eb(502,i|0,127077,81);S=B;B=0;do if(!(S&1)){B=0;eb(502,j|0,128432,28);T=B;B=0;if(T&1){T=Rb()|0;V=Q;Yua(i);W=T;X=V;break}B=0;wa(510,l|0,I|0);V=B;B=0;if(V&1){V=Rb()|0;Y=V;Z=Q;_=1}else{B=0;ua(163,U|0,i|0,j|0,7034,l|0);V=B;B=0;if(V&1)ba=1;else{B=0;eb(503,U|0,1240,229);B=0;ba=0}V=Rb()|0;T=Q;Yua(l);Y=V;Z=T;_=ba}Yua(j);Yua(i);if(_){W=Y;X=Z}else{ca=Y;da=Z;break a}}else{T=Rb()|0;W=T;X=Q}while(0);zb(U|0);ca=W;da=X}else ea=20;while(0);if((ea|0)==20){P=Rb()|0;ca=P;da=Q}k[h>>2]=27468;k[H>>2]=27488;k[I>>2]=27560;Yua(M);Ava(I);vva(H);fa=ca;ga=da;Qb(fa|0)}while(0);K=N;L=O;vva(H);Qb(L|0)}L=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;H=L<<1;rp(G,e,536,943);rp(c,f,540,943);O=H>>>0>536870911?-1:H<<3;N=Rqa(O)|0;K=Rqa(O)|0;O=L>>>0>536870911?-1:L<<3;da=Rqa(O)|0;ca=Rqa(O)|0;I=Rqa(O)|0;h=Rqa(O)|0;X=Rqa(O)|0;W=Rqa(O)|0;O=(L|0)>0;if(O){Z=k[f>>2]|0;Y=k[e>>2]|0;_=0;do{p[N+(_<<3)>>3]=+p[b+(k[Z+(_<<2)>>2]<<3)>>3];p[K+(_<<3)>>3]=+p[b+(k[Y+(_<<2)>>2]<<3)>>3];_=_+1|0}while((_|0)!=(L|0))}if((L|0)<(H|0)){_=k[f>>2]|0;Y=L;do{p[N+(Y<<3)>>3]=+p[b+(k[_+(Y<<2)>>2]<<3)>>3];p[K+(Y<<3)>>3]=+p[K+(Y-L<<3)>>3];Y=Y+1|0}while((Y|0)!=(H|0))}Aq(G,K,971);Aq(c,N,971);do if(O){G=0;while(1){H=G<<1;ha=+p[K+(H<<3)>>3]+ +p[N+(H<<3)>>3];p[da+(G<<3)>>3]=ha;Y=H|1;ia=+p[K+(Y<<3)>>3]+ +p[N+(Y<<3)>>3];p[ca+(G<<3)>>3]=ia;ja=+$(+ha);p[t>>3]=ja;Y=k[t>>2]|0;H=k[t+4>>2]|0;if(H>>>0>2146435072|(H|0)==2146435072&Y>>>0>0){ea=38;break}if((Y|0)==0&(H|0)==2146435072){ea=62;break}ja=+$(+ia);p[t>>3]=ja;H=k[t>>2]|0;Y=k[t+4>>2]|0;if(Y>>>0>2146435072|(Y|0)==2146435072&H>>>0>0){ea=86;break}G=G+1|0;if((H|0)==0&(Y|0)==2146435072){ea=110;break}if((G|0)>=(L|0)){ea=133;break}}if((ea|0)==38){G=m+56|0;M=m+4|0;k[m>>2]=27524;k[G>>2]=27544;B=0;wa(508,m+56|0,M|0);Y=B;B=0;if(Y&1){Y=Rb()|0;ka=Q;la=Y;vva(G);Qb(la|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[G>>2]=27488;B=0;va(448,M|0);Y=B;B=0;do if(Y&1){H=Rb()|0;ma=Q;na=H}else{k[M>>2]=27560;H=m+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[m+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,M|0,d|0);_=B;B=0;if(_&1){_=Rb()|0;b=Q;Yua(d);Yua(H);Ava(M);ma=b;na=_;break}Yua(d);B=0;_=Ia(40,m|0,135564,28)|0;b=B;B=0;b:do if(!(b&1)?(B=0,Xa(239,_|0,0)|0,Z=B,B=0,!(Z&1)):0){Z=Ab(20)|0;B=0;eb(502,n|0,127077,81);i=B;B=0;do if(!(i&1)){B=0;eb(502,o|0,128432,28);j=B;B=0;if(j&1){j=Rb()|0;ba=Q;Yua(n);oa=j;pa=ba;break}B=0;wa(510,q|0,M|0);ba=B;B=0;if(ba&1){ba=Rb()|0;qa=1;ra=ba;sa=Q}else{B=0;ua(163,Z|0,n|0,o|0,7074,q|0);ba=B;B=0;if(ba&1)ta=1;else{B=0;eb(503,Z|0,1240,229);B=0;ta=0}ba=Rb()|0;j=Q;Yua(q);qa=ta;ra=ba;sa=j}Yua(o);Yua(n);if(qa){oa=ra;pa=sa}else{xa=ra;za=sa;break b}}else{j=Rb()|0;oa=j;pa=Q}while(0);zb(Z|0);xa=oa;za=pa}else ea=53;while(0);if((ea|0)==53){_=Rb()|0;xa=_;za=Q}k[m>>2]=27468;k[G>>2]=27488;k[M>>2]=27560;Yua(H);Ava(M);vva(G);fa=xa;ga=za;Qb(fa|0)}while(0);ka=ma;la=na;vva(G);Qb(la|0)}else if((ea|0)==62){M=s+56|0;Y=s+4|0;k[s>>2]=27524;k[M>>2]=27544;B=0;wa(508,s+56|0,Y|0);_=B;B=0;if(_&1){_=Rb()|0;Aa=Q;Ba=_;vva(M);Qb(Ba|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[M>>2]=27488;B=0;va(448,Y|0);_=B;B=0;do if(_&1){b=Rb()|0;Ca=Q;Da=b}else{k[Y>>2]=27560;b=s+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[s+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Y|0,d|0);U=B;B=0;if(U&1){U=Rb()|0;i=Q;Yua(d);Yua(b);Ava(Y);Ca=i;Da=U;break}Yua(d);B=0;U=Ia(40,s|0,135593,28)|0;i=B;B=0;c:do if(!(i&1)?(B=0,Xa(239,U|0,0)|0,j=B,B=0,!(j&1)):0){j=Ab(20)|0;B=0;eb(502,u|0,127077,81);ba=B;B=0;do if(!(ba&1)){B=0;eb(502,v|0,128432,28);l=B;B=0;if(l&1){l=Rb()|0;J=Q;Yua(u);Ea=l;Fa=J;break}B=0;wa(510,w|0,Y|0);J=B;B=0;if(J&1){J=Rb()|0;Ga=1;Ha=J;Ja=Q}else{B=0;ua(163,j|0,u|0,v|0,7075,w|0);J=B;B=0;if(J&1)Ka=1;else{B=0;eb(503,j|0,1240,229);B=0;Ka=0}J=Rb()|0;l=Q;Yua(w);Ga=Ka;Ha=J;Ja=l}Yua(v);Yua(u);if(Ga){Ea=Ha;Fa=Ja}else{La=Ha;Ma=Ja;break c}}else{l=Rb()|0;Ea=l;Fa=Q}while(0);zb(j|0);La=Ea;Ma=Fa}else ea=77;while(0);if((ea|0)==77){U=Rb()|0;La=U;Ma=Q}k[s>>2]=27468;k[M>>2]=27488;k[Y>>2]=27560;Yua(b);Ava(Y);vva(M);fa=La;ga=Ma;Qb(fa|0)}while(0);Aa=Ca;Ba=Da;vva(M);Qb(Ba|0)}else if((ea|0)==86){Y=x+56|0;_=x+4|0;k[x>>2]=27524;k[Y>>2]=27544;B=0;wa(508,x+56|0,_|0);G=B;B=0;if(G&1){G=Rb()|0;Na=Q;Oa=G;vva(Y);Qb(Oa|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[Y>>2]=27488;B=0;va(448,_|0);G=B;B=0;do if(G&1){U=Rb()|0;Pa=Q;Qa=U}else{k[_>>2]=27560;U=x+36|0;k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;k[U+12>>2]=0;k[x+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,_|0,d|0);i=B;B=0;if(i&1){i=Rb()|0;H=Q;Yua(d);Yua(U);Ava(_);Pa=H;Qa=i;break}Yua(d);B=0;i=Ia(40,x|0,135564,28)|0;H=B;B=0;d:do if(!(H&1)?(B=0,Xa(239,i|0,0)|0,ba=B,B=0,!(ba&1)):0){ba=Ab(20)|0;B=0;eb(502,y|0,127077,81);Z=B;B=0;do if(!(Z&1)){B=0;eb(502,z|0,128432,28);l=B;B=0;if(l&1){l=Rb()|0;J=Q;Yua(y);Ra=l;Sa=J;break}B=0;wa(510,A|0,_|0);J=B;B=0;if(J&1){J=Rb()|0;Ta=1;Ua=J;Va=Q}else{B=0;ua(163,ba|0,y|0,z|0,7076,A|0);J=B;B=0;if(J&1)Wa=1;else{B=0;eb(503,ba|0,1240,229);B=0;Wa=0}J=Rb()|0;l=Q;Yua(A);Ta=Wa;Ua=J;Va=l}Yua(z);Yua(y);if(Ta){Ra=Ua;Sa=Va}else{Ya=Ua;Za=Va;break d}}else{l=Rb()|0;Ra=l;Sa=Q}while(0);zb(ba|0);Ya=Ra;Za=Sa}else ea=101;while(0);if((ea|0)==101){i=Rb()|0;Ya=i;Za=Q}k[x>>2]=27468;k[Y>>2]=27488;k[_>>2]=27560;Yua(U);Ava(_);vva(Y);fa=Ya;ga=Za;Qb(fa|0)}while(0);Na=Pa;Oa=Qa;vva(Y);Qb(Oa|0)}else if((ea|0)==110){_=C+56|0;G=C+4|0;k[C>>2]=27524;k[_>>2]=27544;B=0;wa(508,C+56|0,G|0);M=B;B=0;if(M&1){M=Rb()|0;_a=Q;$a=M;vva(_);Qb($a|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[_>>2]=27488;B=0;va(448,G|0);M=B;B=0;do if(M&1){i=Rb()|0;ab=Q;bb=i}else{k[G>>2]=27560;i=C+36|0;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;k[i+12>>2]=0;k[C+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,G|0,d|0);H=B;B=0;if(H&1){H=Rb()|0;b=Q;Yua(d);Yua(i);Ava(G);ab=b;bb=H;break}Yua(d);B=0;H=Ia(40,C|0,135593,28)|0;b=B;B=0;e:do if(!(b&1)?(B=0,Xa(239,H|0,0)|0,Z=B,B=0,!(Z&1)):0){Z=Ab(20)|0;B=0;eb(502,D|0,127077,81);j=B;B=0;do if(!(j&1)){B=0;eb(502,E|0,128432,28);l=B;B=0;if(l&1){l=Rb()|0;J=Q;Yua(D);cb=l;db=J;break}B=0;wa(510,F|0,G|0);J=B;B=0;if(J&1){J=Rb()|0;fb=1;gb=J;hb=Q}else{B=0;ua(163,Z|0,D|0,E|0,7077,F|0);J=B;B=0;if(J&1)ib=1;else{B=0;eb(503,Z|0,1240,229);B=0;ib=0}J=Rb()|0;l=Q;Yua(F);fb=ib;gb=J;hb=l}Yua(E);Yua(D);if(fb){cb=gb;db=hb}else{jb=gb;kb=hb;break e}}else{l=Rb()|0;cb=l;db=Q}while(0);zb(Z|0);jb=cb;kb=db}else ea=125;while(0);if((ea|0)==125){H=Rb()|0;jb=H;kb=Q}k[C>>2]=27468;k[_>>2]=27488;k[G>>2]=27560;Yua(i);Ava(G);vva(_);fa=jb;ga=kb;Qb(fa|0)}while(0);_a=ab;$a=bb;vva(_);Qb($a|0)}else if((ea|0)==133){up(c,I,679,0.0);if(O)lb=0;else break;do{ja=+p[da+(lb<<3)>>3];ia=+p[ca+(lb<<3)>>3];ha=+p[I+(lb<<3)>>3];mb=+aa(+(ja*ja+ia*ia+ha*ha));p[h+(lb<<3)>>3]=mb;lb=lb+1|0}while((lb|0)!=(L|0))}}else up(c,I,679,0.0);while(0);mb=+Dp(c,265);ha=+Dp(c,65);Uo(c,g);vp(c,W,339);if(O){ia=mb*ha;O=k[g>>2]|0;lb=0;do{p[X+(lb<<3)>>3]=ia*(+p[W+(lb<<3)>>3]-+p[O+((lb*3|0)+2<<3)>>3]);lb=lb+1|0}while((lb|0)!=(L|0))}Pp(c,674,675);Pp(c,677,678);Pp(c,653,654);rd[k[(k[c>>2]|0)+48>>2]&511](c,674,da,738);rd[k[(k[c>>2]|0)+48>>2]&511](c,677,ca,738);rd[k[(k[c>>2]|0)+48>>2]&511](c,671,h,738);rd[k[(k[c>>2]|0)+48>>2]&511](c,653,X,738);Tqa(W);Tqa(X);Tqa(h);Tqa(I);Tqa(ca);Tqa(da);da=k[g>>2]|0;if(da)Tqa(da);k[g>>2]=0;Tqa(K);Tqa(N);N=k[e>>2]|0;if(N)Tqa(N);k[e>>2]=0;e=k[f>>2]|0;if(!e){r=a;return}Tqa(e);r=a;return}function E9(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0.0,Ca=0.0,Da=0.0,Ea=0.0,Fa=0.0,Ga=0.0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0;a=r;r=r+1616|0;d=a+1596|0;e=a;f=a+1544|0;g=a+1540|0;h=a+1512|0;i=a+1376|0;j=a+1584|0;l=a+1572|0;m=a+1560|0;n=a+1224|0;o=a+1548|0;q=a+1528|0;s=a+1516|0;u=a+1072|0;v=a+1360|0;w=a+1208|0;x=a+1056|0;y=a+920|0;z=a+768|0;A=a+616|0;C=a+464|0;D=a+784|0;E=a+176|0;F=a+164|0;G=a+152|0;H=a+632|0;I=a+140|0;J=a+128|0;K=a+116|0;L=a+480|0;M=a+104|0;N=a+92|0;O=a+80|0;P=a+328|0;R=a+68|0;S=a+56|0;T=a+44|0;U=a+192|0;V=a+32|0;W=a+20|0;X=a+8|0;k[f>>2]=0;k[g>>2]=0;k[h>>2]=0;if((Hc[k[(k[c>>2]|0)+20>>2]&511](c)|0)!=625){Y=i+56|0;Z=i+4|0;k[i>>2]=27524;k[Y>>2]=27544;B=0;wa(508,i+56|0,Z|0);_=B;B=0;if(_&1){_=Rb()|0;ba=Q;ca=_;vva(Y);Qb(ca|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[Y>>2]=27488;B=0;va(448,Z|0);_=B;B=0;do if(_&1){da=Rb()|0;ea=Q;fa=da}else{k[Z>>2]=27560;da=i+36|0;k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;k[da+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Z|0,d|0);ga=B;B=0;if(ga&1){ga=Rb()|0;ha=Q;Yua(d);Yua(da);Ava(Z);ea=ha;fa=ga;break}Yua(d);B=0;ga=Ia(40,i|0,128404,27)|0;ha=B;B=0;a:do if((((!(ha&1)?(B=0,ia=ya(k[(k[c>>2]|0)+20>>2]|0,c|0)|0,ja=B,B=0,!(ja&1)):0)?(B=0,ja=ya(427,ia|0)|0,ia=B,B=0,!(ia&1)):0)?(ia=Lta(ja)|0,B=0,ka=Ia(40,ga|0,ja|0,ia|0)|0,ia=B,B=0,!(ia&1)):0)?(B=0,Xa(239,ka|0,0)|0,ka=B,B=0,!(ka&1)):0){ka=Ab(20)|0;B=0;eb(502,j|0,127077,81);ia=B;B=0;do if(!(ia&1)){B=0;eb(502,l|0,128461,27);ja=B;B=0;if(ja&1){ja=Rb()|0;la=Q;Yua(j);ma=ja;na=la;break}B=0;wa(510,m|0,Z|0);la=B;B=0;if(la&1){la=Rb()|0;oa=la;pa=Q;qa=1}else{B=0;ua(163,ka|0,j|0,l|0,6820,m|0);la=B;B=0;if(la&1)ra=1;else{B=0;eb(503,ka|0,1240,229);B=0;ra=0}la=Rb()|0;ja=Q;Yua(m);oa=la;pa=ja;qa=ra}Yua(l);Yua(j);if(qa){ma=oa;na=pa}else{sa=oa;ta=pa;break a}}else{ja=Rb()|0;ma=ja;na=Q}while(0);zb(ka|0);sa=ma;ta=na}else xa=20;while(0);if((xa|0)==20){ga=Rb()|0;sa=ga;ta=Q}k[i>>2]=27468;k[Y>>2]=27488;k[Z>>2]=27560;Yua(da);Ava(Z);vva(Y);za=sa;Aa=ta;Qb(za|0)}while(0);ba=ea;ca=fa;vva(Y);Qb(ca|0)}rp(c,g,543,943);rp(c,f,540,943);sp(c,h,943);ca=Rqa(96)|0;Y=Rqa(192)|0;fa=Rqa(48)|0;ea=Rqa(48)|0;ba=Rqa(48)|0;ta=Rqa(48)|0;sa=Rqa(48)|0;Z=Rqa(48)|0;i=Rqa(48)|0;na=Rqa(48)|0;k[na>>2]=972;k[na+4>>2]=972;k[na+8>>2]=972;k[na+12>>2]=972;k[na+16>>2]=972;k[na+20>>2]=972;k[na+24>>2]=653;k[na+28>>2]=653;k[na+32>>2]=653;k[na+36>>2]=653;k[na+40>>2]=653;k[na+44>>2]=653;pp(c,e,85);ma=k[f>>2]|0;p[ca>>3]=+p[b+(k[ma>>2]<<3)>>3];p[ca+8>>3]=+p[b+(k[ma+4>>2]<<3)>>3];p[ca+16>>3]=+p[b+(k[ma+8>>2]<<3)>>3];p[ca+24>>3]=+p[b+(k[ma+12>>2]<<3)>>3];p[ca+32>>3]=+p[b+(k[ma+16>>2]<<3)>>3];p[ca+40>>3]=+p[b+(k[ma+20>>2]<<3)>>3];p[ca+48>>3]=+p[b+(k[ma+24>>2]<<3)>>3];p[ca+56>>3]=+p[b+(k[ma+28>>2]<<3)>>3];p[ca+64>>3]=+p[b+(k[ma+32>>2]<<3)>>3];p[ca+72>>3]=+p[b+(k[ma+36>>2]<<3)>>3];p[ca+80>>3]=+p[b+(k[ma+40>>2]<<3)>>3];p[ca+88>>3]=+p[b+(k[ma+44>>2]<<3)>>3];ma=k[g>>2]|0;p[Y>>3]=+p[b+(k[ma>>2]<<3)>>3];p[Y+8>>3]=+p[b+(k[ma+4>>2]<<3)>>3];p[Y+16>>3]=+p[b+(k[ma+8>>2]<<3)>>3];p[Y+24>>3]=+p[b+(k[ma+12>>2]<<3)>>3];p[Y+32>>3]=+p[b+(k[ma+16>>2]<<3)>>3];p[Y+40>>3]=+p[b+(k[ma+20>>2]<<3)>>3];p[Y+48>>3]=+p[b+(k[ma+24>>2]<<3)>>3];p[Y+56>>3]=+p[b+(k[ma+28>>2]<<3)>>3];p[Y+64>>3]=+p[b+(k[ma+32>>2]<<3)>>3];p[Y+72>>3]=+p[b+(k[ma+36>>2]<<3)>>3];p[Y+80>>3]=+p[b+(k[ma+40>>2]<<3)>>3];p[Y+88>>3]=+p[b+(k[ma+44>>2]<<3)>>3];p[Y+96>>3]=+p[b+(k[ma+48>>2]<<3)>>3];p[Y+104>>3]=+p[b+(k[ma+52>>2]<<3)>>3];p[Y+112>>3]=+p[b+(k[ma+56>>2]<<3)>>3];p[Y+120>>3]=+p[b+(k[ma+60>>2]<<3)>>3];p[Y+128>>3]=+p[b+(k[ma+64>>2]<<3)>>3];p[Y+136>>3]=+p[b+(k[ma+68>>2]<<3)>>3];ma=k[h>>2]|0;p[Y+144>>3]=+p[b+(k[ma>>2]<<3)>>3];p[Y+152>>3]=+p[b+(k[ma+4>>2]<<3)>>3];p[Y+160>>3]=+p[b+(k[ma+8>>2]<<3)>>3];p[Y+168>>3]=+p[b+(k[ma+12>>2]<<3)>>3];p[Y+176>>3]=+p[b+(k[ma+16>>2]<<3)>>3];p[Y+184>>3]=+p[b+(k[ma+20>>2]<<3)>>3];Eq(c,Y,12,na);Dq(c,ca,6,971);Ba=+p[e>>3];e=0;while(1){ma=e*3|0;b=e<<1;Ca=+p[Y+(ma<<3)>>3]+ +p[ca+(b<<3)>>3];p[fa+(e<<3)>>3]=Ca;Da=+p[Y+(ma+1<<3)>>3]+ +p[ca+((b|1)<<3)>>3];p[ea+(e<<3)>>3]=Da;Ea=+p[Y+(ma+2<<3)>>3];p[sa+(e<<3)>>3]=Ea;Fa=+p[Y+(e+18<<3)>>3]*Ba;p[i+(e<<3)>>3]=Fa;Ga=+$(+Ca);p[t>>3]=Ga;ma=k[t>>2]|0;b=k[t+4>>2]|0;if(b>>>0>2146435072|(b|0)==2146435072&ma>>>0>0){xa=31;break}if((ma|0)==0&(b|0)==2146435072){xa=55;break}Ga=+$(+Da);p[t>>3]=Ga;b=k[t>>2]|0;ma=k[t+4>>2]|0;if(ma>>>0>2146435072|(ma|0)==2146435072&b>>>0>0){xa=79;break}if((b|0)==0&(ma|0)==2146435072){xa=103;break}Ga=+$(+Ea);p[t>>3]=Ga;ma=k[t>>2]|0;b=k[t+4>>2]|0;if(b>>>0>2146435072|(b|0)==2146435072&ma>>>0>0){xa=127;break}if((ma|0)==0&(b|0)==2146435072){xa=151;break}Ga=+$(+Fa);p[t>>3]=Ga;b=k[t>>2]|0;ma=k[t+4>>2]|0;if(ma>>>0>2146435072|(ma|0)==2146435072&b>>>0>0){xa=175;break}e=e+1|0;if((b|0)==0&(ma|0)==2146435072){xa=199;break}if((e|0)>=6){xa=222;break}}if((xa|0)==31){e=n+56|0;ma=n+4|0;k[n>>2]=27524;k[e>>2]=27544;B=0;wa(508,n+56|0,ma|0);b=B;B=0;if(b&1){b=Rb()|0;Ha=Q;Ja=b;vva(e);Qb(Ja|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[e>>2]=27488;B=0;va(448,ma|0);b=B;B=0;do if(b&1){pa=Rb()|0;Ka=Q;La=pa}else{k[ma>>2]=27560;pa=n+36|0;k[pa>>2]=0;k[pa+4>>2]=0;k[pa+8>>2]=0;k[pa+12>>2]=0;k[n+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ma|0,d|0);oa=B;B=0;if(oa&1){oa=Rb()|0;qa=Q;Yua(d);Yua(pa);Ava(ma);Ka=qa;La=oa;break}Yua(d);B=0;oa=Ia(40,n|0,135564,28)|0;qa=B;B=0;b:do if(!(qa&1)?(B=0,Xa(239,oa|0,0)|0,j=B,B=0,!(j&1)):0){j=Ab(20)|0;B=0;eb(502,o|0,127077,81);l=B;B=0;do if(!(l&1)){B=0;eb(502,q|0,128461,27);ra=B;B=0;if(ra&1){ra=Rb()|0;m=Q;Yua(o);Ma=ra;Na=m;break}B=0;wa(510,s|0,ma|0);m=B;B=0;if(m&1){m=Rb()|0;Oa=1;Pa=m;Qa=Q}else{B=0;ua(163,j|0,o|0,q|0,6865,s|0);m=B;B=0;if(m&1)Ra=1;else{B=0;eb(503,j|0,1240,229);B=0;Ra=0}m=Rb()|0;ra=Q;Yua(s);Oa=Ra;Pa=m;Qa=ra}Yua(q);Yua(o);if(Oa){Ma=Pa;Na=Qa}else{Sa=Pa;Ta=Qa;break b}}else{ra=Rb()|0;Ma=ra;Na=Q}while(0);zb(j|0);Sa=Ma;Ta=Na}else xa=46;while(0);if((xa|0)==46){oa=Rb()|0;Sa=oa;Ta=Q}k[n>>2]=27468;k[e>>2]=27488;k[ma>>2]=27560;Yua(pa);Ava(ma);vva(e);za=Sa;Aa=Ta;Qb(za|0)}while(0);Ha=Ka;Ja=La;vva(e);Qb(Ja|0)}else if((xa|0)==55){Ja=u+56|0;e=u+4|0;k[u>>2]=27524;k[Ja>>2]=27544;B=0;wa(508,u+56|0,e|0);La=B;B=0;if(La&1){La=Rb()|0;Ua=Q;Va=La;vva(Ja);Qb(Va|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[Ja>>2]=27488;B=0;va(448,e|0);La=B;B=0;do if(La&1){Ka=Rb()|0;Wa=Q;Ya=Ka}else{k[e>>2]=27560;Ka=u+36|0;k[Ka>>2]=0;k[Ka+4>>2]=0;k[Ka+8>>2]=0;k[Ka+12>>2]=0;k[u+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,e|0,d|0);Ha=B;B=0;if(Ha&1){Ha=Rb()|0;Ta=Q;Yua(d);Yua(Ka);Ava(e);Wa=Ta;Ya=Ha;break}Yua(d);B=0;Ha=Ia(40,u|0,135593,28)|0;Ta=B;B=0;c:do if(!(Ta&1)?(B=0,Xa(239,Ha|0,0)|0,Sa=B,B=0,!(Sa&1)):0){Sa=Ab(20)|0;B=0;eb(502,v|0,127077,81);ma=B;B=0;do if(!(ma&1)){B=0;eb(502,w|0,128461,27);n=B;B=0;if(n&1){n=Rb()|0;Na=Q;Yua(v);Za=n;_a=Na;break}B=0;wa(510,x|0,e|0);Na=B;B=0;if(Na&1){Na=Rb()|0;$a=1;ab=Na;bb=Q}else{B=0;ua(163,Sa|0,v|0,w|0,6866,x|0);Na=B;B=0;if(Na&1)cb=1;else{B=0;eb(503,Sa|0,1240,229);B=0;cb=0}Na=Rb()|0;n=Q;Yua(x);$a=cb;ab=Na;bb=n}Yua(w);Yua(v);if($a){Za=ab;_a=bb}else{db=ab;fb=bb;break c}}else{n=Rb()|0;Za=n;_a=Q}while(0);zb(Sa|0);db=Za;fb=_a}else xa=70;while(0);if((xa|0)==70){Ha=Rb()|0;db=Ha;fb=Q}k[u>>2]=27468;k[Ja>>2]=27488;k[e>>2]=27560;Yua(Ka);Ava(e);vva(Ja);za=db;Aa=fb;Qb(za|0)}while(0);Ua=Wa;Va=Ya;vva(Ja);Qb(Va|0)}else if((xa|0)==79){Va=y+56|0;Ja=y+4|0;k[y>>2]=27524;k[Va>>2]=27544;B=0;wa(508,y+56|0,Ja|0);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;gb=Q;hb=Ya;vva(Va);Qb(hb|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[Va>>2]=27488;B=0;va(448,Ja|0);Ya=B;B=0;do if(Ya&1){Wa=Rb()|0;ib=Q;jb=Wa}else{k[Ja>>2]=27560;Wa=y+36|0;k[Wa>>2]=0;k[Wa+4>>2]=0;k[Wa+8>>2]=0;k[Wa+12>>2]=0;k[y+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Ja|0,d|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;fb=Q;Yua(d);Yua(Wa);Ava(Ja);ib=fb;jb=Ua;break}Yua(d);B=0;Ua=Ia(40,y|0,135564,28)|0;fb=B;B=0;d:do if(!(fb&1)?(B=0,Xa(239,Ua|0,0)|0,db=B,B=0,!(db&1)):0){db=Ab(20)|0;B=0;eb(502,z|0,127077,81);e=B;B=0;do if(!(e&1)){B=0;eb(502,A|0,128461,27);u=B;B=0;if(u&1){u=Rb()|0;_a=Q;Yua(z);kb=u;lb=_a;break}B=0;wa(510,C|0,Ja|0);_a=B;B=0;if(_a&1){_a=Rb()|0;mb=1;nb=_a;ob=Q}else{B=0;ua(163,db|0,z|0,A|0,6867,C|0);_a=B;B=0;if(_a&1)pb=1;else{B=0;eb(503,db|0,1240,229);B=0;pb=0}_a=Rb()|0;u=Q;Yua(C);mb=pb;nb=_a;ob=u}Yua(A);Yua(z);if(mb){kb=nb;lb=ob}else{qb=nb;rb=ob;break d}}else{u=Rb()|0;kb=u;lb=Q}while(0);zb(db|0);qb=kb;rb=lb}else xa=94;while(0);if((xa|0)==94){Ua=Rb()|0;qb=Ua;rb=Q}k[y>>2]=27468;k[Va>>2]=27488;k[Ja>>2]=27560;Yua(Wa);Ava(Ja);vva(Va);za=qb;Aa=rb;Qb(za|0)}while(0);gb=ib;hb=jb;vva(Va);Qb(hb|0)}else if((xa|0)==103){hb=D+56|0;Va=D+4|0;k[D>>2]=27524;k[hb>>2]=27544;B=0;wa(508,D+56|0,Va|0);jb=B;B=0;if(jb&1){jb=Rb()|0;sb=Q;tb=jb;vva(hb);Qb(tb|0)}k[D+128>>2]=0;k[D+132>>2]=-1;k[D>>2]=27468;k[hb>>2]=27488;B=0;va(448,Va|0);jb=B;B=0;do if(jb&1){ib=Rb()|0;ub=Q;vb=ib}else{k[Va>>2]=27560;ib=D+36|0;k[ib>>2]=0;k[ib+4>>2]=0;k[ib+8>>2]=0;k[ib+12>>2]=0;k[D+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Va|0,d|0);gb=B;B=0;if(gb&1){gb=Rb()|0;rb=Q;Yua(d);Yua(ib);Ava(Va);ub=rb;vb=gb;break}Yua(d);B=0;gb=Ia(40,D|0,135593,28)|0;rb=B;B=0;e:do if(!(rb&1)?(B=0,Xa(239,gb|0,0)|0,qb=B,B=0,!(qb&1)):0){qb=Ab(20)|0;B=0;eb(502,E|0,127077,81);Ja=B;B=0;do if(!(Ja&1)){B=0;eb(502,F|0,128461,27);y=B;B=0;if(y&1){y=Rb()|0;lb=Q;Yua(E);wb=y;xb=lb;break}B=0;wa(510,G|0,Va|0);lb=B;B=0;if(lb&1){lb=Rb()|0;yb=1;Bb=lb;Cb=Q}else{B=0;ua(163,qb|0,E|0,F|0,6868,G|0);lb=B;B=0;if(lb&1)Db=1;else{B=0;eb(503,qb|0,1240,229);B=0;Db=0}lb=Rb()|0;y=Q;Yua(G);yb=Db;Bb=lb;Cb=y}Yua(F);Yua(E);if(yb){wb=Bb;xb=Cb}else{Eb=Bb;Fb=Cb;break e}}else{y=Rb()|0;wb=y;xb=Q}while(0);zb(qb|0);Eb=wb;Fb=xb}else xa=118;while(0);if((xa|0)==118){gb=Rb()|0;Eb=gb;Fb=Q}k[D>>2]=27468;k[hb>>2]=27488;k[Va>>2]=27560;Yua(ib);Ava(Va);vva(hb);za=Eb;Aa=Fb;Qb(za|0)}while(0);sb=ub;tb=vb;vva(hb);Qb(tb|0)}else if((xa|0)==127){tb=H+56|0;hb=H+4|0;k[H>>2]=27524;k[tb>>2]=27544;B=0;wa(508,H+56|0,hb|0);vb=B;B=0;if(vb&1){vb=Rb()|0;Gb=Q;Hb=vb;vva(tb);Qb(Hb|0)}k[H+128>>2]=0;k[H+132>>2]=-1;k[H>>2]=27468;k[tb>>2]=27488;B=0;va(448,hb|0);vb=B;B=0;do if(vb&1){ub=Rb()|0;Ib=Q;Jb=ub}else{k[hb>>2]=27560;ub=H+36|0;k[ub>>2]=0;k[ub+4>>2]=0;k[ub+8>>2]=0;k[ub+12>>2]=0;k[H+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,hb|0,d|0);sb=B;B=0;if(sb&1){sb=Rb()|0;Fb=Q;Yua(d);Yua(ub);Ava(hb);Ib=Fb;Jb=sb;break}Yua(d);B=0;sb=Ia(40,H|0,135564,28)|0;Fb=B;B=0;f:do if(!(Fb&1)?(B=0,Xa(239,sb|0,0)|0,Eb=B,B=0,!(Eb&1)):0){Eb=Ab(20)|0;B=0;eb(502,I|0,127077,81);Va=B;B=0;do if(!(Va&1)){B=0;eb(502,J|0,128461,27);D=B;B=0;if(D&1){D=Rb()|0;xb=Q;Yua(I);Kb=D;Lb=xb;break}B=0;wa(510,K|0,hb|0);xb=B;B=0;if(xb&1){xb=Rb()|0;Mb=1;Nb=xb;Ob=Q}else{B=0;ua(163,Eb|0,I|0,J|0,6869,K|0);xb=B;B=0;if(xb&1)Pb=1;else{B=0;eb(503,Eb|0,1240,229);B=0;Pb=0}xb=Rb()|0;D=Q;Yua(K);Mb=Pb;Nb=xb;Ob=D}Yua(J);Yua(I);if(Mb){Kb=Nb;Lb=Ob}else{Sb=Nb;Tb=Ob;break f}}else{D=Rb()|0;Kb=D;Lb=Q}while(0);zb(Eb|0);Sb=Kb;Tb=Lb}else xa=142;while(0);if((xa|0)==142){sb=Rb()|0;Sb=sb;Tb=Q}k[H>>2]=27468;k[tb>>2]=27488;k[hb>>2]=27560;Yua(ub);Ava(hb);vva(tb);za=Sb;Aa=Tb;Qb(za|0)}while(0);Gb=Ib;Hb=Jb;vva(tb);Qb(Hb|0)}else if((xa|0)==151){Hb=L+56|0;tb=L+4|0;k[L>>2]=27524;k[Hb>>2]=27544;B=0;wa(508,L+56|0,tb|0);Jb=B;B=0;if(Jb&1){Jb=Rb()|0;Ub=Q;Vb=Jb;vva(Hb);Qb(Vb|0)}k[L+128>>2]=0;k[L+132>>2]=-1;k[L>>2]=27468;k[Hb>>2]=27488;B=0;va(448,tb|0);Jb=B;B=0;do if(Jb&1){Ib=Rb()|0;Wb=Q;Xb=Ib}else{k[tb>>2]=27560;Ib=L+36|0;k[Ib>>2]=0;k[Ib+4>>2]=0;k[Ib+8>>2]=0;k[Ib+12>>2]=0;k[L+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,tb|0,d|0);Gb=B;B=0;if(Gb&1){Gb=Rb()|0;Tb=Q;Yua(d);Yua(Ib);Ava(tb);Wb=Tb;Xb=Gb;break}Yua(d);B=0;Gb=Ia(40,L|0,135593,28)|0;Tb=B;B=0;g:do if(!(Tb&1)?(B=0,Xa(239,Gb|0,0)|0,Sb=B,B=0,!(Sb&1)):0){Sb=Ab(20)|0;B=0;eb(502,M|0,127077,81);hb=B;B=0;do if(!(hb&1)){B=0;eb(502,N|0,128461,27);H=B;B=0;if(H&1){H=Rb()|0;Lb=Q;Yua(M);Yb=H;Zb=Lb;break}B=0;wa(510,O|0,tb|0);Lb=B;B=0;if(Lb&1){Lb=Rb()|0;_b=1;$b=Lb;ac=Q}else{B=0;ua(163,Sb|0,M|0,N|0,6870,O|0);Lb=B;B=0;if(Lb&1)bc=1;else{B=0;eb(503,Sb|0,1240,229);B=0;bc=0}Lb=Rb()|0;H=Q;Yua(O);_b=bc;$b=Lb;ac=H}Yua(N);Yua(M);if(_b){Yb=$b;Zb=ac}else{cc=$b;dc=ac;break g}}else{H=Rb()|0;Yb=H;Zb=Q}while(0);zb(Sb|0);cc=Yb;dc=Zb}else xa=166;while(0);if((xa|0)==166){Gb=Rb()|0;cc=Gb;dc=Q}k[L>>2]=27468;k[Hb>>2]=27488;k[tb>>2]=27560;Yua(Ib);Ava(tb);vva(Hb);za=cc;Aa=dc;Qb(za|0)}while(0);Ub=Wb;Vb=Xb;vva(Hb);Qb(Vb|0)}else if((xa|0)==175){Vb=P+56|0;Hb=P+4|0;k[P>>2]=27524;k[Vb>>2]=27544;B=0;wa(508,P+56|0,Hb|0);Xb=B;B=0;if(Xb&1){Xb=Rb()|0;ec=Q;fc=Xb;vva(Vb);Qb(fc|0)}k[P+128>>2]=0;k[P+132>>2]=-1;k[P>>2]=27468;k[Vb>>2]=27488;B=0;va(448,Hb|0);Xb=B;B=0;do if(Xb&1){Wb=Rb()|0;gc=Q;hc=Wb}else{k[Hb>>2]=27560;Wb=P+36|0;k[Wb>>2]=0;k[Wb+4>>2]=0;k[Wb+8>>2]=0;k[Wb+12>>2]=0;k[P+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Hb|0,d|0);Ub=B;B=0;if(Ub&1){Ub=Rb()|0;dc=Q;Yua(d);Yua(Wb);Ava(Hb);gc=dc;hc=Ub;break}Yua(d);B=0;Ub=Ia(40,P|0,135564,28)|0;dc=B;B=0;h:do if(!(dc&1)?(B=0,Xa(239,Ub|0,0)|0,cc=B,B=0,!(cc&1)):0){cc=Ab(20)|0;B=0;eb(502,R|0,127077,81);tb=B;B=0;do if(!(tb&1)){B=0;eb(502,S|0,128461,27);L=B;B=0;if(L&1){L=Rb()|0;Zb=Q;Yua(R);ic=L;jc=Zb;break}B=0;wa(510,T|0,Hb|0);Zb=B;B=0;if(Zb&1){Zb=Rb()|0;kc=1;lc=Zb;mc=Q}else{B=0;ua(163,cc|0,R|0,S|0,6871,T|0);Zb=B;B=0;if(Zb&1)nc=1;else{B=0;eb(503,cc|0,1240,229);B=0;nc=0}Zb=Rb()|0;L=Q;Yua(T);kc=nc;lc=Zb;mc=L}Yua(S);Yua(R);if(kc){ic=lc;jc=mc}else{oc=lc;pc=mc;break h}}else{L=Rb()|0;ic=L;jc=Q}while(0);zb(cc|0);oc=ic;pc=jc}else xa=190;while(0);if((xa|0)==190){Ub=Rb()|0;oc=Ub;pc=Q}k[P>>2]=27468;k[Vb>>2]=27488;k[Hb>>2]=27560;Yua(Wb);Ava(Hb);vva(Vb);za=oc;Aa=pc;Qb(za|0)}while(0);ec=gc;fc=hc;vva(Vb);Qb(fc|0)}else if((xa|0)==199){fc=U+56|0;Vb=U+4|0;k[U>>2]=27524;k[fc>>2]=27544;B=0;wa(508,U+56|0,Vb|0);hc=B;B=0;if(hc&1){hc=Rb()|0;qc=Q;rc=hc;vva(fc);Qb(rc|0)}k[U+128>>2]=0;k[U+132>>2]=-1;k[U>>2]=27468;k[fc>>2]=27488;B=0;va(448,Vb|0);hc=B;B=0;do if(hc&1){gc=Rb()|0;sc=Q;tc=gc}else{k[Vb>>2]=27560;gc=U+36|0;k[gc>>2]=0;k[gc+4>>2]=0;k[gc+8>>2]=0;k[gc+12>>2]=0;k[U+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Vb|0,d|0);ec=B;B=0;if(ec&1){ec=Rb()|0;pc=Q;Yua(d);Yua(gc);Ava(Vb);sc=pc;tc=ec;break}Yua(d);B=0;ec=Ia(40,U|0,135593,28)|0;pc=B;B=0;i:do if(!(pc&1)?(B=0,Xa(239,ec|0,0)|0,oc=B,B=0,!(oc&1)):0){oc=Ab(20)|0;B=0;eb(502,V|0,127077,81);Hb=B;B=0;do if(!(Hb&1)){B=0;eb(502,W|0,128461,27);P=B;B=0;if(P&1){P=Rb()|0;jc=Q;Yua(V);uc=P;vc=jc;break}B=0;wa(510,X|0,Vb|0);jc=B;B=0;if(jc&1){jc=Rb()|0;wc=1;xc=jc;yc=Q}else{B=0;ua(163,oc|0,V|0,W|0,6872,X|0);jc=B;B=0;if(jc&1)zc=1;else{B=0;eb(503,oc|0,1240,229);B=0;zc=0}jc=Rb()|0;P=Q;Yua(X);wc=zc;xc=jc;yc=P}Yua(W);Yua(V);if(wc){uc=xc;vc=yc}else{Ac=xc;Bc=yc;break i}}else{P=Rb()|0;uc=P;vc=Q}while(0);zb(oc|0);Ac=uc;Bc=vc}else xa=214;while(0);if((xa|0)==214){ec=Rb()|0;Ac=ec;Bc=Q}k[U>>2]=27468;k[fc>>2]=27488;k[Vb>>2]=27560;Yua(gc);Ava(Vb);vva(fc);za=Ac;Aa=Bc;Qb(za|0)}while(0);qc=sc;rc=tc;vva(fc);Qb(rc|0)}else if((xa|0)==222){xp(c,ta,681);Ba=+p[ta>>3]+ +p[sa>>3];p[ba>>3]=Ba;Ga=+p[fa>>3];Fa=+p[ea>>3];Ea=+aa(+(Ba*Ba+(Ga*Ga+Fa*Fa)));p[Z>>3]=Ea;Ea=+p[ta+8>>3]+ +p[sa+8>>3];p[ba+8>>3]=Ea;Fa=+p[fa+8>>3];Ga=+p[ea+8>>3];Ba=+aa(+(Ea*Ea+(Fa*Fa+Ga*Ga)));p[Z+8>>3]=Ba;Ba=+p[ta+16>>3]+ +p[sa+16>>3];p[ba+16>>3]=Ba;Ga=+p[fa+16>>3];Fa=+p[ea+16>>3];Ea=+aa(+(Ba*Ba+(Ga*Ga+Fa*Fa)));p[Z+16>>3]=Ea;Ea=+p[ta+24>>3]+ +p[sa+24>>3];p[ba+24>>3]=Ea;Fa=+p[fa+24>>3];Ga=+p[ea+24>>3];Ba=+aa(+(Ea*Ea+(Fa*Fa+Ga*Ga)));p[Z+24>>3]=Ba;Ba=+p[ta+32>>3]+ +p[sa+32>>3];p[ba+32>>3]=Ba;Ga=+p[fa+32>>3];Fa=+p[ea+32>>3];Ea=+aa(+(Ba*Ba+(Ga*Ga+Fa*Fa)));p[Z+32>>3]=Ea;Ea=+p[ta+40>>3]+ +p[sa+40>>3];p[ba+40>>3]=Ea;Fa=+p[fa+40>>3];Ga=+p[ea+40>>3];Ba=+aa(+(Ea*Ea+(Fa*Fa+Ga*Ga)));p[Z+40>>3]=Ba;Pp(c,674,675);Pp(c,677,678);Pp(c,679,682);Pp(c,653,654);rd[k[(k[c>>2]|0)+48>>2]&511](c,674,fa,738);rd[k[(k[c>>2]|0)+48>>2]&511](c,677,ea,738);rd[k[(k[c>>2]|0)+48>>2]&511](c,679,ba,738);rd[k[(k[c>>2]|0)+48>>2]&511](c,683,sa,738);rd[k[(k[c>>2]|0)+48>>2]&511](c,671,Z,738);rd[k[(k[c>>2]|0)+48>>2]&511](c,653,i,738);Tqa(i);Tqa(Z);Tqa(ba);Tqa(ta);Tqa(sa);Tqa(ea);Tqa(fa);Tqa(Y);Tqa(ca);ca=k[h>>2]|0;if(ca)Tqa(ca);k[h>>2]=0;h=k[g>>2]|0;if(h)Tqa(h);k[g>>2]=0;g=k[f>>2]|0;if(!g){k[f>>2]=0;Tqa(na);r=a;return}Tqa(g);k[f>>2]=0;Tqa(na);r=a;return}}function F9(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0.0,Da=0.0,Ea=0.0,Fa=0.0,Ga=0.0,Ha=0.0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0;a=r;r=r+1616|0;d=a+1596|0;e=a;f=a+1544|0;g=a+1540|0;h=a+1512|0;i=a+1376|0;j=a+1584|0;l=a+1572|0;m=a+1560|0;n=a+1224|0;o=a+1548|0;q=a+1528|0;s=a+1516|0;u=a+1072|0;v=a+1360|0;w=a+1208|0;x=a+1056|0;y=a+920|0;z=a+768|0;A=a+616|0;C=a+464|0;D=a+784|0;E=a+176|0;F=a+164|0;G=a+152|0;H=a+632|0;I=a+140|0;J=a+128|0;K=a+116|0;L=a+480|0;M=a+104|0;N=a+92|0;O=a+80|0;P=a+328|0;R=a+68|0;S=a+56|0;T=a+44|0;U=a+192|0;V=a+32|0;W=a+20|0;X=a+8|0;k[f>>2]=0;k[g>>2]=0;k[h>>2]=0;Y=Hc[k[(k[c>>2]|0)+124>>2]&511](c)|0;if((Hc[k[(k[Y>>2]|0)+20>>2]&511](Y)|0)!=625){Z=i+56|0;_=i+4|0;k[i>>2]=27524;k[Z>>2]=27544;B=0;wa(508,i+56|0,_|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;da=ba;vva(Z);Qb(da|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[Z>>2]=27488;B=0;va(448,_|0);ba=B;B=0;do if(ba&1){ea=Rb()|0;fa=Q;ga=ea}else{k[_>>2]=27560;ea=i+36|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,_|0,d|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(d);Yua(ea);Ava(_);fa=ia;ga=ha;break}Yua(d);B=0;ha=Ia(40,i|0,128404,27)|0;ia=B;B=0;a:do if((((!(ia&1)?(B=0,ja=ya(k[(k[Y>>2]|0)+20>>2]|0,Y|0)|0,ka=B,B=0,!(ka&1)):0)?(B=0,ka=ya(427,ja|0)|0,ja=B,B=0,!(ja&1)):0)?(ja=Lta(ka)|0,B=0,la=Ia(40,ha|0,ka|0,ja|0)|0,ja=B,B=0,!(ja&1)):0)?(B=0,Xa(239,la|0,0)|0,la=B,B=0,!(la&1)):0){la=Ab(20)|0;B=0;eb(502,j|0,127077,81);ja=B;B=0;do if(!(ja&1)){B=0;eb(502,l|0,128489,28);ka=B;B=0;if(ka&1){ka=Rb()|0;ma=Q;Yua(j);na=ka;oa=ma;break}B=0;wa(510,m|0,_|0);ma=B;B=0;if(ma&1){ma=Rb()|0;pa=ma;qa=Q;ra=1}else{B=0;ua(163,la|0,j|0,l|0,6924,m|0);ma=B;B=0;if(ma&1)sa=1;else{B=0;eb(503,la|0,1240,229);B=0;sa=0}ma=Rb()|0;ka=Q;Yua(m);pa=ma;qa=ka;ra=sa}Yua(l);Yua(j);if(ra){na=pa;oa=qa}else{ta=pa;xa=qa;break a}}else{ka=Rb()|0;na=ka;oa=Q}while(0);zb(la|0);ta=na;xa=oa}else za=20;while(0);if((za|0)==20){ha=Rb()|0;ta=ha;xa=Q}k[i>>2]=27468;k[Z>>2]=27488;k[_>>2]=27560;Yua(ea);Ava(_);vva(Z);Aa=ta;Ba=xa;Qb(Aa|0)}while(0);ca=fa;da=ga;vva(Z);Qb(da|0)}rp(c,g,543,943);sp(c,h,943);rp(Y,f,536,943);Y=Rqa(96)|0;da=Rqa(192)|0;Z=Rqa(48)|0;ga=Rqa(48)|0;fa=Rqa(48)|0;ca=Rqa(48)|0;xa=Rqa(48)|0;ta=Rqa(48)|0;_=Rqa(48)|0;i=Rqa(48)|0;k[i>>2]=972;k[i+4>>2]=972;k[i+8>>2]=972;k[i+12>>2]=972;k[i+16>>2]=972;k[i+20>>2]=972;k[i+24>>2]=653;k[i+28>>2]=653;k[i+32>>2]=653;k[i+36>>2]=653;k[i+40>>2]=653;k[i+44>>2]=653;pp(c,e,85);oa=k[f>>2]|0;Ca=+p[b+(k[oa>>2]<<3)>>3];p[Y>>3]=Ca;p[Y+48>>3]=Ca;Ca=+p[b+(k[oa+4>>2]<<3)>>3];p[Y+8>>3]=Ca;p[Y+56>>3]=Ca;Ca=+p[b+(k[oa+8>>2]<<3)>>3];p[Y+16>>3]=Ca;p[Y+64>>3]=Ca;Ca=+p[b+(k[oa+12>>2]<<3)>>3];p[Y+24>>3]=Ca;p[Y+72>>3]=Ca;Ca=+p[b+(k[oa+16>>2]<<3)>>3];p[Y+32>>3]=Ca;p[Y+80>>3]=Ca;Ca=+p[b+(k[oa+20>>2]<<3)>>3];p[Y+40>>3]=Ca;p[Y+88>>3]=Ca;oa=k[g>>2]|0;p[da>>3]=+p[b+(k[oa>>2]<<3)>>3];p[da+8>>3]=+p[b+(k[oa+4>>2]<<3)>>3];p[da+16>>3]=+p[b+(k[oa+8>>2]<<3)>>3];p[da+24>>3]=+p[b+(k[oa+12>>2]<<3)>>3];p[da+32>>3]=+p[b+(k[oa+16>>2]<<3)>>3];p[da+40>>3]=+p[b+(k[oa+20>>2]<<3)>>3];p[da+48>>3]=+p[b+(k[oa+24>>2]<<3)>>3];p[da+56>>3]=+p[b+(k[oa+28>>2]<<3)>>3];p[da+64>>3]=+p[b+(k[oa+32>>2]<<3)>>3];p[da+72>>3]=+p[b+(k[oa+36>>2]<<3)>>3];p[da+80>>3]=+p[b+(k[oa+40>>2]<<3)>>3];p[da+88>>3]=+p[b+(k[oa+44>>2]<<3)>>3];p[da+96>>3]=+p[b+(k[oa+48>>2]<<3)>>3];p[da+104>>3]=+p[b+(k[oa+52>>2]<<3)>>3];p[da+112>>3]=+p[b+(k[oa+56>>2]<<3)>>3];p[da+120>>3]=+p[b+(k[oa+60>>2]<<3)>>3];p[da+128>>3]=+p[b+(k[oa+64>>2]<<3)>>3];p[da+136>>3]=+p[b+(k[oa+68>>2]<<3)>>3];oa=k[h>>2]|0;p[da+144>>3]=+p[b+(k[oa>>2]<<3)>>3];p[da+152>>3]=+p[b+(k[oa+4>>2]<<3)>>3];p[da+160>>3]=+p[b+(k[oa+8>>2]<<3)>>3];p[da+168>>3]=+p[b+(k[oa+12>>2]<<3)>>3];p[da+176>>3]=+p[b+(k[oa+16>>2]<<3)>>3];p[da+184>>3]=+p[b+(k[oa+20>>2]<<3)>>3];Eq(c,da,12,i);Dq(c,Y,6,971);Ca=+p[e>>3];e=0;while(1){oa=e*3|0;b=e<<1;Da=+p[da+(oa<<3)>>3]+ +p[Y+(b<<3)>>3];p[Z+(e<<3)>>3]=Da;Ea=+p[da+(oa+1<<3)>>3]+ +p[Y+((b|1)<<3)>>3];p[ga+(e<<3)>>3]=Ea;Fa=+p[da+(oa+2<<3)>>3];p[xa+(e<<3)>>3]=Fa;Ga=+p[da+(e+18<<3)>>3]*Ca;p[_+(e<<3)>>3]=Ga;Ha=+$(+Da);p[t>>3]=Ha;oa=k[t>>2]|0;b=k[t+4>>2]|0;if(b>>>0>2146435072|(b|0)==2146435072&oa>>>0>0){za=31;break}if((oa|0)==0&(b|0)==2146435072){za=55;break}Ha=+$(+Ea);p[t>>3]=Ha;b=k[t>>2]|0;oa=k[t+4>>2]|0;if(oa>>>0>2146435072|(oa|0)==2146435072&b>>>0>0){za=79;break}if((b|0)==0&(oa|0)==2146435072){za=103;break}Ha=+$(+Fa);p[t>>3]=Ha;oa=k[t>>2]|0;b=k[t+4>>2]|0;if(b>>>0>2146435072|(b|0)==2146435072&oa>>>0>0){za=127;break}if((oa|0)==0&(b|0)==2146435072){za=151;break}Ha=+$(+Ga);p[t>>3]=Ha;b=k[t>>2]|0;oa=k[t+4>>2]|0;if(oa>>>0>2146435072|(oa|0)==2146435072&b>>>0>0){za=175;break}e=e+1|0;if((b|0)==0&(oa|0)==2146435072){za=199;break}if((e|0)>=6){za=222;break}}if((za|0)==31){e=n+56|0;oa=n+4|0;k[n>>2]=27524;k[e>>2]=27544;B=0;wa(508,n+56|0,oa|0);b=B;B=0;if(b&1){b=Rb()|0;Ja=Q;Ka=b;vva(e);Qb(Ka|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[e>>2]=27488;B=0;va(448,oa|0);b=B;B=0;do if(b&1){na=Rb()|0;La=Q;Ma=na}else{k[oa>>2]=27560;na=n+36|0;k[na>>2]=0;k[na+4>>2]=0;k[na+8>>2]=0;k[na+12>>2]=0;k[n+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,oa|0,d|0);qa=B;B=0;if(qa&1){qa=Rb()|0;pa=Q;Yua(d);Yua(na);Ava(oa);La=pa;Ma=qa;break}Yua(d);B=0;qa=Ia(40,n|0,135564,28)|0;pa=B;B=0;b:do if(!(pa&1)?(B=0,Xa(239,qa|0,0)|0,ra=B,B=0,!(ra&1)):0){ra=Ab(20)|0;B=0;eb(502,o|0,127077,81);j=B;B=0;do if(!(j&1)){B=0;eb(502,q|0,128489,28);l=B;B=0;if(l&1){l=Rb()|0;sa=Q;Yua(o);Na=l;Oa=sa;break}B=0;wa(510,s|0,oa|0);sa=B;B=0;if(sa&1){sa=Rb()|0;Pa=1;Qa=sa;Ra=Q}else{B=0;ua(163,ra|0,o|0,q|0,6975,s|0);sa=B;B=0;if(sa&1)Sa=1;else{B=0;eb(503,ra|0,1240,229);B=0;Sa=0}sa=Rb()|0;l=Q;Yua(s);Pa=Sa;Qa=sa;Ra=l}Yua(q);Yua(o);if(Pa){Na=Qa;Oa=Ra}else{Ta=Qa;Ua=Ra;break b}}else{l=Rb()|0;Na=l;Oa=Q}while(0);zb(ra|0);Ta=Na;Ua=Oa}else za=46;while(0);if((za|0)==46){qa=Rb()|0;Ta=qa;Ua=Q}k[n>>2]=27468;k[e>>2]=27488;k[oa>>2]=27560;Yua(na);Ava(oa);vva(e);Aa=Ta;Ba=Ua;Qb(Aa|0)}while(0);Ja=La;Ka=Ma;vva(e);Qb(Ka|0)}else if((za|0)==55){Ka=u+56|0;e=u+4|0;k[u>>2]=27524;k[Ka>>2]=27544;B=0;wa(508,u+56|0,e|0);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;Va=Q;Wa=Ma;vva(Ka);Qb(Wa|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[Ka>>2]=27488;B=0;va(448,e|0);Ma=B;B=0;do if(Ma&1){La=Rb()|0;Ya=Q;Za=La}else{k[e>>2]=27560;La=u+36|0;k[La>>2]=0;k[La+4>>2]=0;k[La+8>>2]=0;k[La+12>>2]=0;k[u+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,e|0,d|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;Ua=Q;Yua(d);Yua(La);Ava(e);Ya=Ua;Za=Ja;break}Yua(d);B=0;Ja=Ia(40,u|0,135593,28)|0;Ua=B;B=0;c:do if(!(Ua&1)?(B=0,Xa(239,Ja|0,0)|0,Ta=B,B=0,!(Ta&1)):0){Ta=Ab(20)|0;B=0;eb(502,v|0,127077,81);oa=B;B=0;do if(!(oa&1)){B=0;eb(502,w|0,128489,28);n=B;B=0;if(n&1){n=Rb()|0;Oa=Q;Yua(v);_a=n;$a=Oa;break}B=0;wa(510,x|0,e|0);Oa=B;B=0;if(Oa&1){Oa=Rb()|0;ab=1;bb=Oa;cb=Q}else{B=0;ua(163,Ta|0,v|0,w|0,6976,x|0);Oa=B;B=0;if(Oa&1)db=1;else{B=0;eb(503,Ta|0,1240,229);B=0;db=0}Oa=Rb()|0;n=Q;Yua(x);ab=db;bb=Oa;cb=n}Yua(w);Yua(v);if(ab){_a=bb;$a=cb}else{fb=bb;gb=cb;break c}}else{n=Rb()|0;_a=n;$a=Q}while(0);zb(Ta|0);fb=_a;gb=$a}else za=70;while(0);if((za|0)==70){Ja=Rb()|0;fb=Ja;gb=Q}k[u>>2]=27468;k[Ka>>2]=27488;k[e>>2]=27560;Yua(La);Ava(e);vva(Ka);Aa=fb;Ba=gb;Qb(Aa|0)}while(0);Va=Ya;Wa=Za;vva(Ka);Qb(Wa|0)}else if((za|0)==79){Wa=y+56|0;Ka=y+4|0;k[y>>2]=27524;k[Wa>>2]=27544;B=0;wa(508,y+56|0,Ka|0);Za=B;B=0;if(Za&1){Za=Rb()|0;hb=Q;ib=Za;vva(Wa);Qb(ib|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[Wa>>2]=27488;B=0;va(448,Ka|0);Za=B;B=0;do if(Za&1){Ya=Rb()|0;jb=Q;kb=Ya}else{k[Ka>>2]=27560;Ya=y+36|0;k[Ya>>2]=0;k[Ya+4>>2]=0;k[Ya+8>>2]=0;k[Ya+12>>2]=0;k[y+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Ka|0,d|0);Va=B;B=0;if(Va&1){Va=Rb()|0;gb=Q;Yua(d);Yua(Ya);Ava(Ka);jb=gb;kb=Va;break}Yua(d);B=0;Va=Ia(40,y|0,135564,28)|0;gb=B;B=0;d:do if(!(gb&1)?(B=0,Xa(239,Va|0,0)|0,fb=B,B=0,!(fb&1)):0){fb=Ab(20)|0;B=0;eb(502,z|0,127077,81);e=B;B=0;do if(!(e&1)){B=0;eb(502,A|0,128489,28);u=B;B=0;if(u&1){u=Rb()|0;$a=Q;Yua(z);lb=u;mb=$a;break}B=0;wa(510,C|0,Ka|0);$a=B;B=0;if($a&1){$a=Rb()|0;nb=1;ob=$a;pb=Q}else{B=0;ua(163,fb|0,z|0,A|0,6977,C|0);$a=B;B=0;if($a&1)qb=1;else{B=0;eb(503,fb|0,1240,229);B=0;qb=0}$a=Rb()|0;u=Q;Yua(C);nb=qb;ob=$a;pb=u}Yua(A);Yua(z);if(nb){lb=ob;mb=pb}else{rb=ob;sb=pb;break d}}else{u=Rb()|0;lb=u;mb=Q}while(0);zb(fb|0);rb=lb;sb=mb}else za=94;while(0);if((za|0)==94){Va=Rb()|0;rb=Va;sb=Q}k[y>>2]=27468;k[Wa>>2]=27488;k[Ka>>2]=27560;Yua(Ya);Ava(Ka);vva(Wa);Aa=rb;Ba=sb;Qb(Aa|0)}while(0);hb=jb;ib=kb;vva(Wa);Qb(ib|0)}else if((za|0)==103){ib=D+56|0;Wa=D+4|0;k[D>>2]=27524;k[ib>>2]=27544;B=0;wa(508,D+56|0,Wa|0);kb=B;B=0;if(kb&1){kb=Rb()|0;tb=Q;ub=kb;vva(ib);Qb(ub|0)}k[D+128>>2]=0;k[D+132>>2]=-1;k[D>>2]=27468;k[ib>>2]=27488;B=0;va(448,Wa|0);kb=B;B=0;do if(kb&1){jb=Rb()|0;vb=Q;wb=jb}else{k[Wa>>2]=27560;jb=D+36|0;k[jb>>2]=0;k[jb+4>>2]=0;k[jb+8>>2]=0;k[jb+12>>2]=0;k[D+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Wa|0,d|0);hb=B;B=0;if(hb&1){hb=Rb()|0;sb=Q;Yua(d);Yua(jb);Ava(Wa);vb=sb;wb=hb;break}Yua(d);B=0;hb=Ia(40,D|0,135593,28)|0;sb=B;B=0;e:do if(!(sb&1)?(B=0,Xa(239,hb|0,0)|0,rb=B,B=0,!(rb&1)):0){rb=Ab(20)|0;B=0;eb(502,E|0,127077,81);Ka=B;B=0;do if(!(Ka&1)){B=0;eb(502,F|0,128489,28);y=B;B=0;if(y&1){y=Rb()|0;mb=Q;Yua(E);xb=y;yb=mb;break}B=0;wa(510,G|0,Wa|0);mb=B;B=0;if(mb&1){mb=Rb()|0;Bb=1;Cb=mb;Db=Q}else{B=0;ua(163,rb|0,E|0,F|0,6978,G|0);mb=B;B=0;if(mb&1)Eb=1;else{B=0;eb(503,rb|0,1240,229);B=0;Eb=0}mb=Rb()|0;y=Q;Yua(G);Bb=Eb;Cb=mb;Db=y}Yua(F);Yua(E);if(Bb){xb=Cb;yb=Db}else{Fb=Cb;Gb=Db;break e}}else{y=Rb()|0;xb=y;yb=Q}while(0);zb(rb|0);Fb=xb;Gb=yb}else za=118;while(0);if((za|0)==118){hb=Rb()|0;Fb=hb;Gb=Q}k[D>>2]=27468;k[ib>>2]=27488;k[Wa>>2]=27560;Yua(jb);Ava(Wa);vva(ib);Aa=Fb;Ba=Gb;Qb(Aa|0)}while(0);tb=vb;ub=wb;vva(ib);Qb(ub|0)}else if((za|0)==127){ub=H+56|0;ib=H+4|0;k[H>>2]=27524;k[ub>>2]=27544;B=0;wa(508,H+56|0,ib|0);wb=B;B=0;if(wb&1){wb=Rb()|0;Hb=Q;Ib=wb;vva(ub);Qb(Ib|0)}k[H+128>>2]=0;k[H+132>>2]=-1;k[H>>2]=27468;k[ub>>2]=27488;B=0;va(448,ib|0);wb=B;B=0;do if(wb&1){vb=Rb()|0;Jb=Q;Kb=vb}else{k[ib>>2]=27560;vb=H+36|0;k[vb>>2]=0;k[vb+4>>2]=0;k[vb+8>>2]=0;k[vb+12>>2]=0;k[H+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ib|0,d|0);tb=B;B=0;if(tb&1){tb=Rb()|0;Gb=Q;Yua(d);Yua(vb);Ava(ib);Jb=Gb;Kb=tb;break}Yua(d);B=0;tb=Ia(40,H|0,135564,28)|0;Gb=B;B=0;f:do if(!(Gb&1)?(B=0,Xa(239,tb|0,0)|0,Fb=B,B=0,!(Fb&1)):0){Fb=Ab(20)|0;B=0;eb(502,I|0,127077,81);Wa=B;B=0;do if(!(Wa&1)){B=0;eb(502,J|0,128489,28);D=B;B=0;if(D&1){D=Rb()|0;yb=Q;Yua(I);Lb=D;Mb=yb;break}B=0;wa(510,K|0,ib|0);yb=B;B=0;if(yb&1){yb=Rb()|0;Nb=1;Ob=yb;Pb=Q}else{B=0;ua(163,Fb|0,I|0,J|0,6979,K|0);yb=B;B=0;if(yb&1)Sb=1;else{B=0;eb(503,Fb|0,1240,229);B=0;Sb=0}yb=Rb()|0;D=Q;Yua(K);Nb=Sb;Ob=yb;Pb=D}Yua(J);Yua(I);if(Nb){Lb=Ob;Mb=Pb}else{Tb=Ob;Ub=Pb;break f}}else{D=Rb()|0;Lb=D;Mb=Q}while(0);zb(Fb|0);Tb=Lb;Ub=Mb}else za=142;while(0);if((za|0)==142){tb=Rb()|0;Tb=tb;Ub=Q}k[H>>2]=27468;k[ub>>2]=27488;k[ib>>2]=27560;Yua(vb);Ava(ib);vva(ub);Aa=Tb;Ba=Ub;Qb(Aa|0)}while(0);Hb=Jb;Ib=Kb;vva(ub);Qb(Ib|0)}else if((za|0)==151){Ib=L+56|0;ub=L+4|0;k[L>>2]=27524;k[Ib>>2]=27544;B=0;wa(508,L+56|0,ub|0);Kb=B;B=0;if(Kb&1){Kb=Rb()|0;Vb=Q;Wb=Kb;vva(Ib);Qb(Wb|0)}k[L+128>>2]=0;k[L+132>>2]=-1;k[L>>2]=27468;k[Ib>>2]=27488;B=0;va(448,ub|0);Kb=B;B=0;do if(Kb&1){Jb=Rb()|0;Xb=Q;Yb=Jb}else{k[ub>>2]=27560;Jb=L+36|0;k[Jb>>2]=0;k[Jb+4>>2]=0;k[Jb+8>>2]=0;k[Jb+12>>2]=0;k[L+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ub|0,d|0);Hb=B;B=0;if(Hb&1){Hb=Rb()|0;Ub=Q;Yua(d);Yua(Jb);Ava(ub);Xb=Ub;Yb=Hb;break}Yua(d);B=0;Hb=Ia(40,L|0,135593,28)|0;Ub=B;B=0;g:do if(!(Ub&1)?(B=0,Xa(239,Hb|0,0)|0,Tb=B,B=0,!(Tb&1)):0){Tb=Ab(20)|0;B=0;eb(502,M|0,127077,81);ib=B;B=0;do if(!(ib&1)){B=0;eb(502,N|0,128489,28);H=B;B=0;if(H&1){H=Rb()|0;Mb=Q;Yua(M);Zb=H;_b=Mb;break}B=0;wa(510,O|0,ub|0);Mb=B;B=0;if(Mb&1){Mb=Rb()|0;$b=1;ac=Mb;bc=Q}else{B=0;ua(163,Tb|0,M|0,N|0,6980,O|0);Mb=B;B=0;if(Mb&1)cc=1;else{B=0;eb(503,Tb|0,1240,229);B=0;cc=0}Mb=Rb()|0;H=Q;Yua(O);$b=cc;ac=Mb;bc=H}Yua(N);Yua(M);if($b){Zb=ac;_b=bc}else{dc=ac;ec=bc;break g}}else{H=Rb()|0;Zb=H;_b=Q}while(0);zb(Tb|0);dc=Zb;ec=_b}else za=166;while(0);if((za|0)==166){Hb=Rb()|0;dc=Hb;ec=Q}k[L>>2]=27468;k[Ib>>2]=27488;k[ub>>2]=27560;Yua(Jb);Ava(ub);vva(Ib);Aa=dc;Ba=ec;Qb(Aa|0)}while(0);Vb=Xb;Wb=Yb;vva(Ib);Qb(Wb|0)}else if((za|0)==175){Wb=P+56|0;Ib=P+4|0;k[P>>2]=27524;k[Wb>>2]=27544;B=0;wa(508,P+56|0,Ib|0);Yb=B;B=0;if(Yb&1){Yb=Rb()|0;fc=Q;gc=Yb;vva(Wb);Qb(gc|0)}k[P+128>>2]=0;k[P+132>>2]=-1;k[P>>2]=27468;k[Wb>>2]=27488;B=0;va(448,Ib|0);Yb=B;B=0;do if(Yb&1){Xb=Rb()|0;hc=Q;ic=Xb}else{k[Ib>>2]=27560;Xb=P+36|0;k[Xb>>2]=0;k[Xb+4>>2]=0;k[Xb+8>>2]=0;k[Xb+12>>2]=0;k[P+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Ib|0,d|0);Vb=B;B=0;if(Vb&1){Vb=Rb()|0;ec=Q;Yua(d);Yua(Xb);Ava(Ib);hc=ec;ic=Vb;break}Yua(d);B=0;Vb=Ia(40,P|0,135564,28)|0;ec=B;B=0;h:do if(!(ec&1)?(B=0,Xa(239,Vb|0,0)|0,dc=B,B=0,!(dc&1)):0){dc=Ab(20)|0;B=0;eb(502,R|0,127077,81);ub=B;B=0;do if(!(ub&1)){B=0;eb(502,S|0,128489,28);L=B;B=0;if(L&1){L=Rb()|0;_b=Q;Yua(R);jc=L;kc=_b;break}B=0;wa(510,T|0,Ib|0);_b=B;B=0;if(_b&1){_b=Rb()|0;lc=1;mc=_b;nc=Q}else{B=0;ua(163,dc|0,R|0,S|0,6981,T|0);_b=B;B=0;if(_b&1)oc=1;else{B=0;eb(503,dc|0,1240,229);B=0;oc=0}_b=Rb()|0;L=Q;Yua(T);lc=oc;mc=_b;nc=L}Yua(S);Yua(R);if(lc){jc=mc;kc=nc}else{pc=mc;qc=nc;break h}}else{L=Rb()|0;jc=L;kc=Q}while(0);zb(dc|0);pc=jc;qc=kc}else za=190;while(0);if((za|0)==190){Vb=Rb()|0;pc=Vb;qc=Q}k[P>>2]=27468;k[Wb>>2]=27488;k[Ib>>2]=27560;Yua(Xb);Ava(Ib);vva(Wb);Aa=pc;Ba=qc;Qb(Aa|0)}while(0);fc=hc;gc=ic;vva(Wb);Qb(gc|0)}else if((za|0)==199){gc=U+56|0;Wb=U+4|0;k[U>>2]=27524;k[gc>>2]=27544;B=0;wa(508,U+56|0,Wb|0);ic=B;B=0;if(ic&1){ic=Rb()|0;rc=Q;sc=ic;vva(gc);Qb(sc|0)}k[U+128>>2]=0;k[U+132>>2]=-1;k[U>>2]=27468;k[gc>>2]=27488;B=0;va(448,Wb|0);ic=B;B=0;do if(ic&1){hc=Rb()|0;tc=Q;uc=hc}else{k[Wb>>2]=27560;hc=U+36|0;k[hc>>2]=0;k[hc+4>>2]=0;k[hc+8>>2]=0;k[hc+12>>2]=0;k[U+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Wb|0,d|0);fc=B;B=0;if(fc&1){fc=Rb()|0;qc=Q;Yua(d);Yua(hc);Ava(Wb);tc=qc;uc=fc;break}Yua(d);B=0;fc=Ia(40,U|0,135593,28)|0;qc=B;B=0;i:do if(!(qc&1)?(B=0,Xa(239,fc|0,0)|0,pc=B,B=0,!(pc&1)):0){pc=Ab(20)|0;B=0;eb(502,V|0,127077,81);Ib=B;B=0;do if(!(Ib&1)){B=0;eb(502,W|0,128489,28);P=B;B=0;if(P&1){P=Rb()|0;kc=Q;Yua(V);vc=P;wc=kc;break}B=0;wa(510,X|0,Wb|0);kc=B;B=0;if(kc&1){kc=Rb()|0;xc=1;yc=kc;zc=Q}else{B=0;ua(163,pc|0,V|0,W|0,6982,X|0);kc=B;B=0;if(kc&1)Ac=1;else{B=0;eb(503,pc|0,1240,229);B=0;Ac=0}kc=Rb()|0;P=Q;Yua(X);xc=Ac;yc=kc;zc=P}Yua(W);Yua(V);if(xc){vc=yc;wc=zc}else{Bc=yc;Cc=zc;break i}}else{P=Rb()|0;vc=P;wc=Q}while(0);zb(pc|0);Bc=vc;Cc=wc}else za=214;while(0);if((za|0)==214){fc=Rb()|0;Bc=fc;Cc=Q}k[U>>2]=27468;k[gc>>2]=27488;k[Wb>>2]=27560;Yua(hc);Ava(Wb);vva(gc);Aa=Bc;Ba=Cc;Qb(Aa|0)}while(0);rc=tc;sc=uc;vva(gc);Qb(sc|0)}else if((za|0)==222){xp(c,ca,680);Ca=+p[ca>>3]+ +p[xa>>3];p[fa>>3]=Ca;Ha=+p[Z>>3];Ga=+p[ga>>3];Fa=+aa(+(Ca*Ca+(Ha*Ha+Ga*Ga)));p[ta>>3]=Fa;Fa=+p[ca+8>>3]+ +p[xa+8>>3];p[fa+8>>3]=Fa;Ga=+p[Z+8>>3];Ha=+p[ga+8>>3];Ca=+aa(+(Fa*Fa+(Ga*Ga+Ha*Ha)));p[ta+8>>3]=Ca;Ca=+p[ca+16>>3]+ +p[xa+16>>3];p[fa+16>>3]=Ca;Ha=+p[Z+16>>3];Ga=+p[ga+16>>3];Fa=+aa(+(Ca*Ca+(Ha*Ha+Ga*Ga)));p[ta+16>>3]=Fa;Fa=+p[ca+24>>3]+ +p[xa+24>>3];p[fa+24>>3]=Fa;Ga=+p[Z+24>>3];Ha=+p[ga+24>>3];Ca=+aa(+(Fa*Fa+(Ga*Ga+Ha*Ha)));p[ta+24>>3]=Ca;Ca=+p[ca+32>>3]+ +p[xa+32>>3];p[fa+32>>3]=Ca;Ha=+p[Z+32>>3];Ga=+p[ga+32>>3];Fa=+aa(+(Ca*Ca+(Ha*Ha+Ga*Ga)));p[ta+32>>3]=Fa;Fa=+p[ca+40>>3]+ +p[xa+40>>3];p[fa+40>>3]=Fa;Ga=+p[Z+40>>3];Ha=+p[ga+40>>3];Ca=+aa(+(Fa*Fa+(Ga*Ga+Ha*Ha)));p[ta+40>>3]=Ca;Pp(c,674,675);Pp(c,677,678);Pp(c,679,682);Pp(c,653,654);rd[k[(k[c>>2]|0)+48>>2]&511](c,674,Z,738);rd[k[(k[c>>2]|0)+48>>2]&511](c,677,ga,738);rd[k[(k[c>>2]|0)+48>>2]&511](c,679,fa,738);rd[k[(k[c>>2]|0)+48>>2]&511](c,683,xa,738);rd[k[(k[c>>2]|0)+48>>2]&511](c,671,ta,738);rd[k[(k[c>>2]|0)+48>>2]&511](c,653,_,738);Tqa(_);Tqa(ta);Tqa(fa);Tqa(ca);Tqa(xa);Tqa(ga);Tqa(Z);Tqa(da);Tqa(Y);Y=k[h>>2]|0;if(Y)Tqa(Y);k[h>>2]=0;h=k[g>>2]|0;if(h)Tqa(h);k[g>>2]=0;g=k[f>>2]|0;if(!g){k[f>>2]=0;Tqa(i);r=a;return}Tqa(g);k[f>>2]=0;Tqa(i);r=a;return}}function G9(a,b){a=a|0;b=b|0;RZ(b);return}function H9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0.0,T=0.0;a=r;r=r+240|0;c=a+224|0;d=a+220|0;e=a+32|0;f=a+24|0;g=a+16|0;h=a+8|0;i=a;j=a+216|0;l=a+80|0;m=a+64|0;n=a+52|0;o=a+40|0;if(!($p(b)|0)){q=0;r=a;return q|0}k[j>>2]=0;cp(b,d,298);switch(k[d>>2]|0){case 301:{s=1;t=1;break}case 300:{s=3;t=2;break}case 302:{s=3;t=2;break}default:{u=l+56|0;v=l+4|0;k[l>>2]=27524;k[u>>2]=27544;B=0;wa(508,l+56|0,v|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;y=w;vva(u);Qb(y|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);w=B;B=0;do if(w&1){z=Rb()|0;A=Q;C=z}else{k[v>>2]=27560;z=l+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(c);Yua(z);Ava(v);A=E;C=D;break}Yua(c);B=0;D=Ia(40,l|0,144639,5)|0;E=B;B=0;if((((!(E&1)?(B=0,E=ya(427,k[d>>2]|0)|0,F=B,B=0,!(F&1)):0)?(F=Lta(E)|0,B=0,G=Ia(40,D|0,E|0,F|0)|0,F=B,B=0,!(F&1)):0)?(B=0,F=Ia(40,G|0,146481,18)|0,G=B,B=0,!(G&1)):0)?(B=0,Xa(239,F|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,m|0,127077,81);G=B;B=0;do if(!(G&1)){B=0;eb(502,n|0,128518,23);E=B;B=0;if(E&1){E=Rb()|0;D=Q;Yua(m);H=E;I=D;break}B=0;wa(510,o|0,v|0);D=B;B=0;if(D&1){D=Rb()|0;J=D;K=Q;L=1}else{B=0;ua(163,F|0,m|0,n|0,1432,o|0);D=B;B=0;if(D&1)M=1;else{B=0;eb(503,F|0,1240,229);B=0;M=0}D=Rb()|0;E=Q;Yua(o);J=D;K=E;L=M}Yua(n);Yua(m);if(L){H=J;I=K}else{N=J;O=K;k[l>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);Qb(N|0)}}else{E=Rb()|0;H=E;I=Q}while(0);zb(F|0);N=H;O=I;k[l>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);Qb(N|0)}G=Rb()|0;N=G;O=Q;k[l>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);Qb(N|0)}while(0);x=A;y=C;vva(u);Qb(y|0)}}y=ma(Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0,t)|0;u=gq(b,536)|0;C=ma(y,s)|0;A=C>>>0>536870911?-1:C<<3;C=Rqa(A)|0;x=Rqa(A)|0;A=(ma(s,s)|0)<<3;N=Rqa(A)|0;WEa(N|0,0,A|0)|0;Uo(b,j);A=Wo(b,353)|0;v=Wo(b,674)|0;l=Wo(b,675)|0;O=(t|0)==2;if(O){I=Wo(b,677)|0;P=I;R=Wo(b,678)|0}else{P=0;R=0}pp(b,g,87);I=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;H=Hc[k[(k[I>>2]|0)+8>>2]&511](I)|0;if((H|0)<(Hc[k[(k[I>>2]|0)+12>>2]&511](I)|0)){K=b+28|0;J=I+8|0;L=u+12|0;m=H;do{Fc[k[(k[I>>2]|0)+24>>2]&1023](I,m);rd[k[(k[b>>2]|0)+260>>2]&511](b,i,k[j>>2]|0,I);J9(0,C,b,t,k[j>>2]|0,I);K9(0,x,b,t,k[j>>2]|0,I);H=k[K>>2]|0;ad[k[(k[H>>2]|0)+128>>2]&63](H,e,t,k[j>>2]|0,I,v,P);H=k[K>>2]|0;ad[k[(k[H>>2]|0)+128>>2]&63](H,f,t,k[j>>2]|0,I,l,R);nd[k[(k[A>>2]|0)+48>>2]&1023](A,h,I);S=+p[e>>3];T=+p[i>>3]*(+p[J>>3]*(+p[h>>3]*((S+ +p[g>>3]*(S-+p[f>>3]))*2.0)));H=0;do{n=N+((ma(H,s)|0)+H<<3)|0;p[n>>3]=T;H=H+1|0}while((H|0)<(s|0));ZX(C,s,y,1,N,s,s,0,x,s,y,0,k[L>>2]|0,1)|0;m=m+1|0}while((m|0)<(Hc[k[(k[I>>2]|0)+12>>2]&511](I)|0))}if(O)Fq(b,u,971);Ec[k[(k[I>>2]|0)+4>>2]&1023](I);I=k[j>>2]|0;if(I)Tqa(I);k[j>>2]=0;Tqa(N);Tqa(x);Tqa(C);q=u;r=a;return q|0}function I9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0.0,Z=0,_=0.0,$=0,aa=0,ba=0.0;a=r;r=r+256|0;c=a+232|0;d=a+228|0;e=a+244|0;f=a+224|0;g=a+220|0;h=a+32|0;j=a+24|0;l=a+16|0;m=a+8|0;n=a;o=a+216|0;q=a+80|0;s=a+64|0;t=a+52|0;u=a+40|0;if(_p(b)|0){v=0;r=a;return v|0}if(!($p(b)|0)){v=0;r=a;return v|0}k[o>>2]=0;cp(b,d,298);switch(k[d>>2]|0){case 301:{w=1;break}case 300:{w=2;break}case 302:{w=2;break}default:{x=q+56|0;y=q+4|0;k[q>>2]=27524;k[x>>2]=27544;B=0;wa(508,q+56|0,y|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;C=z;vva(x);Qb(C|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[x>>2]=27488;B=0;va(448,y|0);z=B;B=0;do if(z&1){D=Rb()|0;E=Q;F=D}else{k[y>>2]=27560;D=q+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,y|0,c|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(c);Yua(D);Ava(y);E=H;F=G;break}Yua(c);B=0;G=Ia(40,q|0,144639,5)|0;H=B;B=0;a:do if((((!(H&1)?(B=0,I=ya(427,k[d>>2]|0)|0,J=B,B=0,!(J&1)):0)?(J=Lta(I)|0,B=0,K=Ia(40,G|0,I|0,J|0)|0,J=B,B=0,!(J&1)):0)?(B=0,J=Ia(40,K|0,146481,18)|0,K=B,B=0,!(K&1)):0)?(B=0,Xa(239,J|0,0)|0,J=B,B=0,!(J&1)):0){J=Ab(20)|0;B=0;eb(502,s|0,127077,81);K=B;B=0;do if(!(K&1)){B=0;eb(502,t|0,128542,24);I=B;B=0;if(I&1){I=Rb()|0;L=Q;Yua(s);M=I;N=L;break}B=0;wa(510,u|0,y|0);L=B;B=0;if(L&1){L=Rb()|0;O=L;P=Q;R=1}else{B=0;ua(163,J|0,s|0,t|0,1284,u|0);L=B;B=0;if(L&1)S=1;else{B=0;eb(503,J|0,1240,229);B=0;S=0}L=Rb()|0;I=Q;Yua(u);O=L;P=I;R=S}Yua(t);Yua(s);if(R){M=O;N=P}else{T=O;U=P;break a}}else{I=Rb()|0;M=I;N=Q}while(0);zb(J|0);T=M;U=N}else V=24;while(0);if((V|0)==24){G=Rb()|0;T=G;U=Q}k[q>>2]=27468;k[x>>2]=27488;k[y>>2]=27560;Yua(D);Ava(y);vva(x);W=T;X=U;Qb(W|0)}while(0);A=E;C=F;vva(x);Qb(C|0)}}C=ma(Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0,w)|0;x=gq(b,536)|0;F=ma(C,w)|0;E=Rqa(F>>>0>536870911?-1:F<<3)|0;F=ma(w,w)|0;A=F<<3;U=Rqa(A)|0;if(F)WEa(U|0,0,A|0)|0;Uo(b,o);cp(b,f,942);Wo(b,339)|0;A=Qqa(16)|0;B=0;eb(524,A|0,b|0,1);F=B;B=0;if(F&1){F=Rb()|0;T=Q;Sqa(A);W=F;X=T;Qb(W|0)}W=k[f>>2]|0;if((W|0)==924){Y=+id[k[(k[b>>2]|0)+136>>2]&63](b,k[o>>2]|0);Z=k[f>>2]|0;_=Y}else{Z=W;_=1.0}if((Z|0)==925){Z=Wo(b,928)|0;Dc[k[(k[b>>2]|0)+132>>2]&255](b,g,l,m,e);$=hd[k[(k[b>>2]|0)+320>>2]&7](b,k[g>>2]|0,+p[l>>3],+p[m>>3],(i[e>>0]|0)!=0,2)|0;aa=Z}else{$=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;aa=0}Z=Hc[k[(k[$>>2]|0)+8>>2]&511]($)|0;b:do if((Z|0)<(Hc[k[(k[$>>2]|0)+12>>2]&511]($)|0)){e=(w|0)==2;m=$+8|0;l=x+12|0;g=Z;while(1){Fc[k[(k[$>>2]|0)+24>>2]&1023]($,g);fla(A,h,$);switch(k[f>>2]|0){case 924:{p[h>>3]=_*+p[h>>3];break}case 925:{nd[k[(k[aa>>2]|0)+48>>2]&1023](aa,n,$);if(+p[n>>3]<0.0)p[h>>3]=0.0;break}default:{}}W=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;T=Rqa(W>>>0>536870911?-1:W<<3)|0;nd[k[(k[b>>2]|0)+336>>2]&1023](b,T,$);X=(W|0)>0;if(e){if(X){F=W<<1;y=0;do{Y=+p[T+(y<<3)>>3];q=y<<1;p[E+(q<<3)>>3]=Y;p[E+((q|1)<<3)>>3]=0.0;V=q+F|0;p[E+(V<<3)>>3]=0.0;p[E+((V|1)<<3)>>3]=Y;y=y+1|0}while((y|0)!=(W|0))}}else if(X)TEa(E|0,T|0,W<<3|0)|0;Tqa(T);rd[k[(k[b>>2]|0)+260>>2]&511](b,j,k[o>>2]|0,$);Y=+p[h>>3];ba=+p[j>>3];y=0;do{F=U+((ma(y,w)|0)+y<<3)|0;p[F>>3]=Y*+p[m>>3]*ba;y=y+1|0}while((y|0)<(w|0));ZX(E,w,C,1,U,w,w,0,E,w,C,0,k[l>>2]|0,1)|0;g=g+1|0;if((g|0)>=(Hc[k[(k[$>>2]|0)+12>>2]&511]($)|0))break b}}while(0);if((w|0)==2)Fq(b,x,971);Ec[k[(k[$>>2]|0)+4>>2]&1023]($);bla(A);Sqa(A);A=k[o>>2]|0;if(A)Tqa(A);k[o>>2]=0;Tqa(E);Tqa(U);v=x;r=a;return v|0}function J9(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0.0,j=0.0;a=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;g=ma(a,d)|0;h=Rqa(g>>>0>536870911?-1:g<<3)|0;rd[k[(k[c>>2]|0)+340>>2]&511](c,h,e,f);f=(a|0)>0;if((d|0)!=2){if(!f){Tqa(h);return}TEa(b|0,h|0,a<<3|0)|0;Tqa(h);return}if(!f){Tqa(h);return}f=a<<1;d=a<<2;e=0;do{i=+p[h+(e<<3)>>3];c=e<<1;p[b+(c<<3)>>3]=i;p[b+((c|1)<<3)>>3]=0.0;g=c+f|0;p[b+(g<<3)>>3]=0.0;j=+p[h+(e+a<<3)>>3];p[b+((g|1)<<3)>>3]=j;g=c+d|0;p[b+(g<<3)>>3]=j*.5;p[b+((g|1)<<3)>>3]=i*.5;e=e+1|0}while((e|0)!=(a|0));Tqa(h);return}function K9(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0.0,l=0.0;a=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;g=ma(a,d)|0;h=Rqa(g>>>0>536870911?-1:g<<3)|0;rd[k[(k[c>>2]|0)+340>>2]&511](c,h,e,f);f=(a|0)>0;if((d|0)!=2){if(f)i=0;else{Tqa(h);return}do{p[b+(i<<3)>>3]=+p[h+(i<<3)>>3]*2.0;i=i+1|0}while((i|0)!=(a|0));Tqa(h);return}if(!f){Tqa(h);return}f=a<<1;i=a<<2;d=0;do{j=+p[h+(d<<3)>>3];e=d<<1;p[b+(e<<3)>>3]=j*2.0;l=+p[h+(d+a<<3)>>3];p[b+((e|1)<<3)>>3]=l;c=e+f|0;p[b+(c<<3)>>3]=j;p[b+((c|1)<<3)>>3]=l*2.0;c=e+i|0;p[b+(c<<3)>>3]=l;p[b+((c|1)<<3)>>3]=j;d=d+1|0}while((d|0)!=(a|0));Tqa(h);return}function L9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0;a=r;r=r+240|0;c=a+216|0;d=a+212|0;e=a+24|0;f=a+16|0;g=a;h=a+208|0;i=a+72|0;j=a+56|0;l=a+44|0;m=a+32|0;if(!($p(b)|0)){n=0;r=a;return n|0}k[h>>2]=0;cp(b,d,298);switch(k[d>>2]|0){case 301:{o=1;break}case 300:{o=2;break}case 302:{o=2;break}default:{q=i+56|0;s=i+4|0;k[i>>2]=27524;k[q>>2]=27544;B=0;wa(508,i+56|0,s|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;v=t;vva(q);Qb(v|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[q>>2]=27488;B=0;va(448,s|0);t=B;B=0;do if(t&1){w=Rb()|0;x=Q;y=w}else{k[s>>2]=27560;w=i+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[i+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,s|0,c|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(c);Yua(w);Ava(s);x=A;y=z;break}Yua(c);B=0;z=Ia(40,i|0,144639,5)|0;A=B;B=0;if((((!(A&1)?(B=0,A=ya(427,k[d>>2]|0)|0,C=B,B=0,!(C&1)):0)?(C=Lta(A)|0,B=0,D=Ia(40,z|0,A|0,C|0)|0,C=B,B=0,!(C&1)):0)?(B=0,C=Ia(40,D|0,146481,18)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,C|0,0)|0,C=B,B=0,!(C&1)):0){C=Ab(20)|0;B=0;eb(502,j|0,127077,81);D=B;B=0;do if(!(D&1)){B=0;eb(502,l|0,128567,29);A=B;B=0;if(A&1){A=Rb()|0;z=Q;Yua(j);E=A;F=z;break}B=0;wa(510,m|0,s|0);z=B;B=0;if(z&1){z=Rb()|0;G=z;H=Q;I=1}else{B=0;ua(163,C|0,j|0,l|0,1541,m|0);z=B;B=0;if(z&1)J=1;else{B=0;eb(503,C|0,1240,229);B=0;J=0}z=Rb()|0;A=Q;Yua(m);G=z;H=A;I=J}Yua(l);Yua(j);if(I){E=G;F=H}else{K=G;L=H;k[i>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);Qb(K|0)}}else{A=Rb()|0;E=A;F=Q}while(0);zb(C|0);K=E;L=F;k[i>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);Qb(K|0)}D=Rb()|0;K=D;L=Q;k[i>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);Qb(K|0)}while(0);u=x;v=y;vva(q);Qb(v|0)}}v=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;q=iq(b,536)|0;y=Rqa(v>>>0>536870911?-1:v<<3)|0;Uo(b,h);x=Wo(b,353)|0;u=Wo(b,339)|0;M=+Dp(b,265);N=+Dp(b,65);K=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;s=Hc[k[(k[K>>2]|0)+8>>2]&511](K)|0;if((s|0)<(Hc[k[(k[K>>2]|0)+12>>2]&511](K)|0)){i=(v|0)>0;O=-(M*N);L=K+8|0;F=q+4|0;E=(o|0)==2;H=g+8|0;G=s;do{Fc[k[(k[K>>2]|0)+24>>2]&1023](K,G);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[h>>2]|0,K);nd[k[(k[b>>2]|0)+336>>2]&1023](b,y,K);nd[k[(k[x>>2]|0)+48>>2]&1023](x,e,K);rd[k[(k[u>>2]|0)+60>>2]&511](u,g,k[h>>2]|0,K);if(i){s=k[F>>2]|0;if(E){I=0;do{j=y+(I<<3)|0;l=I<<1;J=s+(l<<3)|0;p[J>>3]=+p[e>>3]*O*+p[g>>3]*+p[f>>3]*+p[L>>3]*+p[j>>3]+ +p[J>>3];J=s+((l|1)<<3)|0;p[J>>3]=+p[e>>3]*O*+p[H>>3]*+p[f>>3]*+p[L>>3]*+p[j>>3]+ +p[J>>3];I=I+1|0}while((I|0)!=(v|0))}else{I=0;do{w=s+((ma(I,o)|0)<<3)|0;p[w>>3]=+p[e>>3]*O*+p[g>>3]*+p[f>>3]*+p[L>>3]*+p[y+(I<<3)>>3]+ +p[w>>3];I=I+1|0}while((I|0)!=(v|0))}}G=G+1|0}while((G|0)<(Hc[k[(k[K>>2]|0)+12>>2]&511](K)|0))}if((o|0)==2)xq(b,q,971);b=k[h>>2]|0;if(b)Tqa(b);k[h>>2]=0;Tqa(y);Ec[k[(k[K>>2]|0)+4>>2]&1023](K);n=q;r=a;return n|0}function M9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0;a=r;r=r+256|0;c=a+236|0;d=a+232|0;e=a+40|0;f=a+32|0;g=a+24|0;h=a+16|0;i=a+228|0;j=a+224|0;l=a;m=a+88|0;n=a+72|0;o=a+60|0;q=a+48|0;if(!($p(b)|0)){s=0;r=a;return s|0}if(!(Hc[k[(k[b>>2]|0)+240>>2]&511](b)|0)){s=0;r=a;return s|0}k[i>>2]=0;k[j>>2]=0;cp(b,d,298);switch(k[d>>2]|0){case 301:{t=1;break}case 300:{t=2;break}case 302:{t=2;break}default:{u=m+56|0;v=m+4|0;k[m>>2]=27524;k[u>>2]=27544;B=0;wa(508,m+56|0,v|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;y=w;vva(u);Qb(y|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);w=B;B=0;do if(w&1){z=Rb()|0;A=Q;C=z}else{k[v>>2]=27560;z=m+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(c);Yua(z);Ava(v);A=E;C=D;break}Yua(c);B=0;D=Ia(40,m|0,144639,5)|0;E=B;B=0;if((((!(E&1)?(B=0,E=ya(427,k[d>>2]|0)|0,F=B,B=0,!(F&1)):0)?(F=Lta(E)|0,B=0,G=Ia(40,D|0,E|0,F|0)|0,F=B,B=0,!(F&1)):0)?(B=0,F=Ia(40,G|0,146481,18)|0,G=B,B=0,!(G&1)):0)?(B=0,Xa(239,F|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,n|0,127077,81);G=B;B=0;do if(!(G&1)){B=0;eb(502,o|0,128597,21);E=B;B=0;if(E&1){E=Rb()|0;D=Q;Yua(n);H=E;I=D;break}B=0;wa(510,q|0,v|0);D=B;B=0;if(D&1){D=Rb()|0;J=D;K=Q;L=1}else{B=0;ua(163,F|0,n|0,o|0,1606,q|0);D=B;B=0;if(D&1)M=1;else{B=0;eb(503,F|0,1240,229);B=0;M=0}D=Rb()|0;E=Q;Yua(q);J=D;K=E;L=M}Yua(o);Yua(n);if(L){H=J;I=K}else{N=J;O=K;k[m>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);Qb(N|0)}}else{E=Rb()|0;H=E;I=Q}while(0);zb(F|0);N=H;O=I;k[m>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);Qb(N|0)}G=Rb()|0;N=G;O=Q;k[m>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);Qb(N|0)}while(0);x=A;y=C;vva(u);Qb(y|0)}}y=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;u=iq(b,536)|0;C=Rqa(y>>>0>536870911?-1:y<<3)|0;A=Wo(b,353)|0;x=Wo(b,64)|0;N=Wo(b,999)|0;P=+Dp(b,266);R=+Dp(b,265);S=+Dp(b,65);Uo(b,i);rd[k[(k[b>>2]|0)+140>>2]&511](b,j,k[i>>2]|0,206);nd[k[(k[b>>2]|0)+384>>2]&1023](b,l,k[j>>2]|0);v=ld[k[(k[b>>2]|0)+312>>2]&127](b,k[i>>2]|0,k[j>>2]|0,3)|0;m=Hc[k[(k[v>>2]|0)+8>>2]&511](v)|0;if((m|0)<(Hc[k[(k[v>>2]|0)+12>>2]&511](v)|0)){T=S*.5;S=P*T;P=R*T;O=(y|0)>0;I=v+8|0;H=u+4|0;K=(t|0)==2;J=l+8|0;L=m;do{Fc[k[(k[v>>2]|0)+24>>2]&1023](v,L);nd[k[(k[A>>2]|0)+48>>2]&1023](A,f,v);nd[k[(k[N>>2]|0)+48>>2]&1023](N,h,v);nd[k[(k[x>>2]|0)+48>>2]&1023](x,g,v);rd[k[(k[b>>2]|0)+272>>2]&511](b,e,k[j>>2]|0,v);nd[k[(k[b>>2]|0)+336>>2]&1023](b,C,v);T=+KY(0.0,+p[f>>3]+ +p[g>>3]-+p[h>>3]);R=+KY(0.0,+p[g>>3]-+p[h>>3]);U=+p[f>>3];V=U*(P*U)+S*(T*T-R*R);if(O){m=k[H>>2]|0;if(K){n=0;do{o=C+(n<<3)|0;M=n<<1;q=m+(M<<3)|0;p[q>>3]=V*+p[e>>3]*+p[I>>3]*+p[l>>3]*+p[o>>3]+ +p[q>>3];q=m+((M|1)<<3)|0;p[q>>3]=V*+p[e>>3]*+p[I>>3]*+p[J>>3]*+p[o>>3]+ +p[q>>3];n=n+1|0}while((n|0)!=(y|0))}else{n=0;do{z=m+((ma(n,t)|0)<<3)|0;p[z>>3]=V*+p[e>>3]*+p[I>>3]*+p[l>>3]*+p[C+(n<<3)>>3]+ +p[z>>3];n=n+1|0}while((n|0)!=(y|0))}}L=L+1|0}while((L|0)<(Hc[k[(k[v>>2]|0)+12>>2]&511](v)|0))}if((t|0)==2)xq(b,u,971);b=k[i>>2]|0;if(b)Tqa(b);k[i>>2]=0;i=k[j>>2]|0;if(i)Tqa(i);k[j>>2]=0;Tqa(C);if(v)Ec[k[(k[v>>2]|0)+4>>2]&1023](v);s=u;r=a;return s|0}function N9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0;a=r;r=r+32|0;c=a+8|0;d=a;e=a+16|0;k[e>>2]=0;f=Hc[k[(k[b>>2]|0)+124>>2]&511](b)|0;g=Hc[k[(k[f>>2]|0)+432>>2]&511](f)|0;f=Hc[k[(k[g>>2]|0)+164>>2]&511](g)|0;h=f<<1;i=gq(g,539)|0;j=f*6|0;f=j>>>0>536870911?-1:j<<3;j=Rqa(f)|0;l=Rqa(f)|0;f=Rqa(72)|0;m=f;n=m+72|0;do{k[m>>2]=0;m=m+4|0}while((m|0)<(n|0));Uo(b,e);m=Wo(b,339)|0;n=Wo(b,674)|0;o=Wo(b,677)|0;q=ed[k[(k[b>>2]|0)+308>>2]&511](b,5)|0;s=Hc[k[(k[g>>2]|0)+304>>2]&511](g)|0;t=Hc[k[(k[q>>2]|0)+8>>2]&511](q)|0;if((t|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0)){u=b+28|0;v=q+8|0;w=i+12|0;x=f+32|0;y=f+64|0;z=t;do{Fc[k[(k[q>>2]|0)+24>>2]&1023](q,z);Fc[k[(k[q>>2]|0)+36>>2]&1023](q,s);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[e>>2]|0,q);J9(0,j,g,2,k[e>>2]|0,s);K9(0,l,g,2,k[e>>2]|0,s);t=k[u>>2]|0;ad[k[(k[t>>2]|0)+124>>2]&63](t,c,k[e>>2]|0,q,n,o,m);A=+p[c>>3]*2.0;B=+p[d>>3];p[f>>3]=A*+p[v>>3]*B;p[x>>3]=A*+p[v>>3]*B;p[y>>3]=A*+p[v>>3]*B;ZX(j,3,h,1,f,3,3,0,l,3,h,0,k[w>>2]|0,1)|0;z=z+1|0}while((z|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0))}Fq(g,i,971);Ec[k[(k[q>>2]|0)+4>>2]&1023](q);if(s)Ec[k[(k[s>>2]|0)+4>>2]&1023](s);ap(g);if(g)Ec[k[(k[g>>2]|0)+4>>2]&1023](g);g=k[e>>2]|0;if(!g){k[e>>2]=0;Tqa(f);Tqa(l);Tqa(j);r=a;return i|0}Tqa(g);k[e>>2]=0;Tqa(f);Tqa(l);Tqa(j);r=a;return i|0}function O9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0.0,n=0.0,o=0,q=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;a=r;r=r+48|0;c=a+24|0;d=a+16|0;e=a;f=a+32|0;k[f>>2]=0;g=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;h=iq(b,539)|0;i=Rqa(g>>>0>536870911?-1:g<<3)|0;Uo(b,f);j=Wo(b,353)|0;l=Wo(b,339)|0;m=+Dp(b,265);n=+Dp(b,65);o=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;q=Hc[k[(k[o>>2]|0)+8>>2]&511](o)|0;a:do if((q|0)<(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0)){s=-(m*n);t=o+8|0;u=h+4|0;v=e+8|0;if((g|0)>0)w=q;else{x=q;while(1){Fc[k[(k[o>>2]|0)+24>>2]&1023](o,x);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[f>>2]|0,o);nd[k[(k[b>>2]|0)+336>>2]&1023](b,i,o);nd[k[(k[j>>2]|0)+48>>2]&1023](j,c,o);rd[k[(k[l>>2]|0)+60>>2]&511](l,e,k[f>>2]|0,o);x=x+1|0;if((x|0)>=(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0))break a}}do{Fc[k[(k[o>>2]|0)+24>>2]&1023](o,w);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[f>>2]|0,o);nd[k[(k[b>>2]|0)+336>>2]&1023](b,i,o);nd[k[(k[j>>2]|0)+48>>2]&1023](j,c,o);rd[k[(k[l>>2]|0)+60>>2]&511](l,e,k[f>>2]|0,o);x=k[u>>2]|0;y=0;do{z=i+(y<<3)|0;A=y<<1;B=x+(A<<3)|0;p[B>>3]=+p[c>>3]*s*+p[e>>3]*+p[d>>3]*+p[t>>3]*+p[z>>3]+ +p[B>>3];B=x+((A|1)<<3)|0;p[B>>3]=+p[c>>3]*s*+p[v>>3]*+p[d>>3]*+p[t>>3]*+p[z>>3]+ +p[B>>3];y=y+1|0}while((y|0)!=(g|0));w=w+1|0}while((w|0)<(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0))}while(0);xq(b,h,971);b=k[f>>2]|0;if(!b){k[f>>2]=0;Tqa(i);C=k[o>>2]|0;D=C+4|0;E=k[D>>2]|0;Ec[E&1023](o);r=a;return h|0}Tqa(b);k[f>>2]=0;Tqa(i);C=k[o>>2]|0;D=C+4|0;E=k[D>>2]|0;Ec[E&1023](o);r=a;return h|0}function P9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0,H=0,I=0,J=0;a=r;r=r+64|0;c=a+40|0;d=a+32|0;e=a+24|0;f=a+16|0;g=a+52|0;h=a+48|0;i=a;if(!(Hc[k[(k[b>>2]|0)+240>>2]&511](b)|0)){j=0;r=a;return j|0}k[g>>2]=0;k[h>>2]=0;l=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;m=iq(b,539)|0;n=Rqa(l>>>0>536870911?-1:l<<3)|0;o=Wo(b,353)|0;q=Wo(b,64)|0;s=Wo(b,999)|0;t=+Dp(b,266);u=+Dp(b,265);v=+Dp(b,65);Uo(b,g);rd[k[(k[b>>2]|0)+140>>2]&511](b,h,k[g>>2]|0,206);nd[k[(k[b>>2]|0)+384>>2]&1023](b,i,k[h>>2]|0);w=ld[k[(k[b>>2]|0)+312>>2]&127](b,k[g>>2]|0,k[h>>2]|0,3)|0;x=Hc[k[(k[w>>2]|0)+8>>2]&511](w)|0;if((x|0)<(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0)){y=v*.5;v=t*y;t=u*y;z=(l|0)>0;A=w+8|0;B=m+4|0;C=i+8|0;D=x;do{Fc[k[(k[w>>2]|0)+24>>2]&1023](w,D);nd[k[(k[o>>2]|0)+48>>2]&1023](o,d,w);nd[k[(k[q>>2]|0)+48>>2]&1023](q,e,w);nd[k[(k[s>>2]|0)+48>>2]&1023](s,f,w);rd[k[(k[b>>2]|0)+272>>2]&511](b,c,k[h>>2]|0,w);nd[k[(k[b>>2]|0)+336>>2]&1023](b,n,w);y=+KY(0.0,+p[d>>3]+ +p[e>>3]-+p[f>>3]);u=+KY(0.0,+p[e>>3]-+p[f>>3]);E=+p[d>>3];F=E*(t*E)+v*(y*y-u*u);if(z){x=k[B>>2]|0;G=0;do{H=n+(G<<3)|0;I=G<<1;J=x+(I<<3)|0;p[J>>3]=F*+p[c>>3]*+p[A>>3]*+p[i>>3]*+p[H>>3]+ +p[J>>3];J=x+((I|1)<<3)|0;p[J>>3]=F*+p[c>>3]*+p[A>>3]*+p[C>>3]*+p[H>>3]+ +p[J>>3];G=G+1|0}while((G|0)!=(l|0))}D=D+1|0}while((D|0)<(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0))}xq(b,m,971);b=k[g>>2]|0;if(b)Tqa(b);k[g>>2]=0;g=k[h>>2]|0;if(g)Tqa(g);k[h>>2]=0;Tqa(n);if(w)Ec[k[(k[w>>2]|0)+4>>2]&1023](w);j=m;r=a;return j|0}function Q9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0;a=r;r=r+48|0;c=a+36|0;d=a+24|0;e=a+16|0;f=a+8|0;g=a;h=a+32|0;if(!($p(b)|0)){i=0;r=a;return i|0}k[h>>2]=0;cp(b,c,299);j=(k[c>>2]|0)==2;l=j?2:5;m=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;n=ma((k[c>>2]|0)+-1|0,m)|0;m=gq(b,540)|0;o=ma(n,l)|0;q=o>>>0>536870911?-1:o<<3;o=Rqa(q)|0;s=Rqa(q)|0;q=j?32:200;j=Rqa(q)|0;WEa(j|0,0,q|0)|0;Uo(b,h);q=Wo(b,674)|0;t=Wo(b,675)|0;if((k[c>>2]|0)==3){u=Wo(b,677)|0;v=u;w=Wo(b,678)|0}else{v=0;w=0}pp(b,f,87);u=ed[k[(k[b>>2]|0)+308>>2]&511](b,5)|0;x=Hc[k[(k[u>>2]|0)+8>>2]&511](u)|0;if((x|0)<(Hc[k[(k[u>>2]|0)+12>>2]&511](u)|0)){y=b+28|0;z=u+8|0;A=m+12|0;B=x;do{Fc[k[(k[u>>2]|0)+24>>2]&1023](u,B);rd[k[(k[b>>2]|0)+260>>2]&511](b,g,k[h>>2]|0,u);S9(0,o,b,k[c>>2]|0,k[h>>2]|0,u);T9(0,s,b,k[c>>2]|0,k[h>>2]|0,u);x=k[y>>2]|0;ad[k[(k[x>>2]|0)+116>>2]&63](x,d,k[c>>2]|0,k[h>>2]|0,u,q,v);x=k[y>>2]|0;ad[k[(k[x>>2]|0)+116>>2]&63](x,e,k[c>>2]|0,k[h>>2]|0,u,t,w);C=+p[d>>3];D=+p[g>>3]*(+p[z>>3]*((C+ +p[f>>3]*(C-+p[e>>3]))*2.0));x=0;do{E=j+((ma(x,l)|0)+x<<3)|0;p[E>>3]=D;x=x+1|0}while((x|0)<(l|0));ZX(o,l,n,1,j,l,l,0,s,l,n,0,k[A>>2]|0,1)|0;B=B+1|0}while((B|0)<(Hc[k[(k[u>>2]|0)+12>>2]&511](u)|0))}if((k[c>>2]|0)==3)Fq(b,m,971);Ec[k[(k[u>>2]|0)+4>>2]&1023](u);u=k[h>>2]|0;if(u)Tqa(u);k[h>>2]=0;Tqa(j);Tqa(s);Tqa(o);i=m;r=a;return i|0}function R9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0,z=0.0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0;a=r;r=r+64|0;c=a+52|0;d=a+56|0;e=a+48|0;f=a+44|0;g=a+32|0;h=a+24|0;j=a+16|0;l=a+8|0;m=a;n=a+40|0;if(!($p(b)|0)){o=0;r=a;return o|0}if(_p(b)|0){o=0;r=a;return o|0}if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){o=0;r=a;return o|0}k[n>>2]=0;cp(b,c,299);q=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;s=ma((k[c>>2]|0)+-1|0,q)|0;q=gq(b,540)|0;t=(k[c>>2]|0)+-1|0;u=ma(t,s)|0;v=Rqa(u>>>0>536870911?-1:u<<3)|0;u=ma(t,t)|0;t=Rqa(u>>>0>536870911?-1:u<<3)|0;if(u)WEa(t|0,0,u<<3|0)|0;Fc[k[(k[b>>2]|0)+188>>2]&1023](b,n);cp(b,e,942);u=Qqa(16)|0;B=0;eb(524,u|0,b|0,2);w=B;B=0;if(w&1){w=Rb()|0;Sqa(u);Qb(w|0)}w=k[e>>2]|0;if((w|0)==924){x=+id[k[(k[b>>2]|0)+136>>2]&63](b,k[n>>2]|0);y=k[e>>2]|0;z=x}else{y=w;z=1.0}if((y|0)==925){y=Wo(b,928)|0;Dc[k[(k[b>>2]|0)+132>>2]&255](b,f,j,l,d);A=hd[k[(k[b>>2]|0)+320>>2]&7](b,k[f>>2]|0,+p[j>>3],+p[l>>3],(i[d>>0]|0)!=0,2)|0;C=y}else{A=ed[k[(k[b>>2]|0)+324>>2]&511](b,2)|0;C=0}y=Hc[k[(k[A>>2]|0)+8>>2]&511](A)|0;a:do if((y|0)<(Hc[k[(k[A>>2]|0)+12>>2]&511](A)|0)){d=q+12|0;l=A+8|0;j=y;while(1){Fc[k[(k[A>>2]|0)+24>>2]&1023](A,j);fla(u,g,A);switch(k[e>>2]|0){case 924:{p[g>>3]=z*+p[g>>3];break}case 925:{nd[k[(k[C>>2]|0)+48>>2]&1023](C,m,A);if(+p[m>>3]<0.0)p[g>>3]=0.0;break}default:{}}f=k[c>>2]|0;w=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;D=Rqa(w>>>0>536870911?-1:w<<3)|0;nd[k[(k[b>>2]|0)+336>>2]&1023](b,D,A);E=(w|0)>0;if((f|0)==3){if(E){f=w<<1;F=0;do{x=+p[D+(F<<3)>>3];G=F<<1;p[v+(G<<3)>>3]=x;p[v+((G|1)<<3)>>3]=0.0;H=G+f|0;p[v+(H<<3)>>3]=0.0;p[v+((H|1)<<3)>>3]=x;F=F+1|0}while((F|0)!=(w|0))}}else if(E)TEa(v|0,D|0,w<<3|0)|0;Tqa(D);rd[k[(k[b>>2]|0)+264>>2]&511](b,h,k[n>>2]|0,A);F=k[c>>2]|0;f=F+-1|0;if((F|0)>1){x=+p[g>>3];I=+p[h>>3];H=0;do{G=t+((ma(F,H)|0)<<3)|0;p[G>>3]=x*+p[l>>3]*I;H=H+1|0}while((H|0)<(f|0))}ZX(v,f,s,1,t,f,f,0,v,f,s,0,k[d>>2]|0,1)|0;j=j+1|0;if((j|0)>=(Hc[k[(k[A>>2]|0)+12>>2]&511](A)|0))break a}}while(0);if((k[c>>2]|0)==3)Fq(b,q,971);Ec[k[(k[A>>2]|0)+4>>2]&1023](A);bla(u);Sqa(u);u=k[n>>2]|0;if(u)Tqa(u);k[n>>2]=0;Tqa(v);Tqa(t);o=q;r=a;return o|0}function S9(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0.0,l=0,m=0.0;a=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;g=ma(a,d)|0;h=Rqa(g>>>0>536870911?-1:g<<3)|0;rd[k[(k[c>>2]|0)+340>>2]&511](c,h,e,f);f=(a|0)>0;if((d|0)==2){if(f)i=0;else{Tqa(h);return}do{p[b+(i<<3)>>3]=+p[h+(i<<3)>>3];d=i+a|0;p[b+(d<<3)>>3]=+p[h+(d<<3)>>3]*.5;i=i+1|0}while((i|0)!=(a|0));Tqa(h);return}if(!f){Tqa(h);return}f=a<<1;i=a<<2;d=a*6|0;e=a<<3;c=0;do{j=+p[h+(c<<3)>>3];g=c<<1;p[b+(g<<3)>>3]=j;p[b+((g|1)<<3)>>3]=0.0;l=g+f|0;p[b+(l<<3)>>3]=0.0;m=+p[h+(c+a<<3)>>3];p[b+((l|1)<<3)>>3]=m;l=g+i|0;p[b+(l<<3)>>3]=m*.5;p[b+((l|1)<<3)>>3]=j*.5;j=+p[h+(c+f<<3)>>3]*.5;l=g+d|0;p[b+(l<<3)>>3]=j;p[b+((l|1)<<3)>>3]=0.0;l=g+e|0;p[b+(l<<3)>>3]=0.0;p[b+((l|1)<<3)>>3]=j;c=c+1|0}while((c|0)!=(a|0));Tqa(h);return}function T9(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0.0,l=0.0,m=0;a=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;g=ma(a,d)|0;h=Rqa(g>>>0>536870911?-1:g<<3)|0;rd[k[(k[c>>2]|0)+340>>2]&511](c,h,e,f);f=(a|0)>0;if((d|0)!=3){if(f)i=0;else{Tqa(h);return}do{p[b+(i<<3)>>3]=+p[h+(i<<3)>>3]*2.0;d=i+a|0;p[b+(d<<3)>>3]=+p[h+(d<<3)>>3];i=i+1|0}while((i|0)!=(a|0));Tqa(h);return}if(!f){Tqa(h);return}f=a<<1;i=a<<2;d=a*6|0;e=a<<3;c=0;do{j=+p[h+(c<<3)>>3];g=c<<1;p[b+(g<<3)>>3]=j*2.0;l=+p[h+(c+a<<3)>>3];p[b+((g|1)<<3)>>3]=l;m=g+f|0;p[b+(m<<3)>>3]=j;p[b+((m|1)<<3)>>3]=l*2.0;m=g+i|0;p[b+(m<<3)>>3]=l;p[b+((m|1)<<3)>>3]=j;j=+p[h+(c+f<<3)>>3];m=g+d|0;p[b+(m<<3)>>3]=j;p[b+((m|1)<<3)>>3]=0.0;m=g+e|0;p[b+(m<<3)>>3]=0.0;p[b+((m|1)<<3)>>3]=j;c=c+1|0}while((c|0)!=(a|0));Tqa(h);return}function U9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0.0,n=0.0,o=0,q=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;a=r;r=r+48|0;c=a+36|0;d=a+24|0;e=a;f=a+32|0;if(!($p(b)|0)){g=0;r=a;return g|0}k[f>>2]=0;cp(b,c,299);h=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;i=iq(b,540)|0;j=Rqa(h>>>0>536870911?-1:h<<3)|0;Uo(b,f);l=Wo(b,339)|0;m=+Dp(b,265);n=+Dp(b,65);o=ed[k[(k[b>>2]|0)+308>>2]&511](b,3)|0;q=Hc[k[(k[o>>2]|0)+8>>2]&511](o)|0;if((q|0)<(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0)){s=(h|0)>0;t=-(m*n);u=o+8|0;v=i+4|0;w=e+8|0;x=q;do{Fc[k[(k[o>>2]|0)+24>>2]&1023](o,x);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[f>>2]|0,o);nd[k[(k[b>>2]|0)+336>>2]&1023](b,j,o);rd[k[(k[l>>2]|0)+60>>2]&511](l,e,k[f>>2]|0,o);if(s){q=k[c>>2]|0;y=q+-1|0;z=k[v>>2]|0;if((q|0)==3){q=0;do{A=j+(q<<3)|0;B=ma(y,q)|0;C=z+(B<<3)|0;p[C>>3]=+p[e>>3]*t*+p[d>>3]*+p[u>>3]*+p[A>>3]+ +p[C>>3];C=z+(B+1<<3)|0;p[C>>3]=+p[w>>3]*t*+p[d>>3]*+p[u>>3]*+p[A>>3]+ +p[C>>3];q=q+1|0}while((q|0)!=(h|0))}else{q=0;do{C=z+((ma(y,q)|0)<<3)|0;p[C>>3]=+p[e>>3]*t*+p[d>>3]*+p[u>>3]*+p[j+(q<<3)>>3]+ +p[C>>3];q=q+1|0}while((q|0)!=(h|0))}}x=x+1|0}while((x|0)<(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0))}if((k[c>>2]|0)==3)xq(b,i,971);Tqa(j);j=k[f>>2]|0;if(j)Tqa(j);k[f>>2]=0;Ec[k[(k[o>>2]|0)+4>>2]&1023](o);g=i;r=a;return g|0}function V9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0.0,z=0,A=0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0,I=0,J=0.0,K=0,L=0,M=0,N=0,O=0;a=r;r=r+64|0;c=a+56|0;d=a+40|0;e=a+32|0;f=a+24|0;g=a+52|0;h=a+48|0;i=a;if(!($p(b)|0)){j=0;r=a;return j|0}if(!(Hc[k[(k[b>>2]|0)+240>>2]&511](b)|0)){j=0;r=a;return j|0}k[g>>2]=0;k[h>>2]=0;cp(b,c,299);l=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;m=Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;n=iq(b,540)|0;o=Rqa(l>>>0>536870911?-1:l<<3)|0;q=Wo(b,339)|0;s=Wo(b,999)|0;t=+Dp(b,266);u=+Dp(b,265);v=+Dp(b,65);Uo(b,g);rd[k[(k[b>>2]|0)+140>>2]&511](b,h,k[g>>2]|0,206);nd[k[(k[b>>2]|0)+384>>2]&1023](b,i,k[h>>2]|0);w=k[c>>2]|0;x=k[g>>2]|0;y=+p[x+(w+-1<<3)>>3];z=(m|0)>1;if(z){A=1;B=y;while(1){C=+p[x+((A*3|0)+-1+w<<3)>>3];D=C>B?C:B;A=A+1|0;if((A|0)==(m|0)){E=D;break}else B=D}if(z){z=1;B=y;while(1){D=+p[x+((z*3|0)+-1+w<<3)>>3];C=D<B?D:B;z=z+1|0;if((z|0)==(m|0)){F=E;G=C;break}else B=C}}else{F=E;G=y}}else{F=y;G=y}m=k[(k[b>>2]|0)+316>>2]|0;z=k[h>>2]|0;if(F>0.0&G<0.0)H=fd[m&31](b,x,z,3,10)|0;else H=fd[m&31](b,x,z,3,3)|0;z=Hc[k[(k[H>>2]|0)+8>>2]&511](H)|0;if((z|0)<(Hc[k[(k[H>>2]|0)+12>>2]&511](H)|0)){G=t*v;t=u*v;x=(l|0)>0;m=H+8|0;w=n+4|0;A=i+8|0;I=z;do{Fc[k[(k[H>>2]|0)+24>>2]&1023](H,I);nd[k[(k[q>>2]|0)+48>>2]&1023](q,e,H);nd[k[(k[s>>2]|0)+48>>2]&1023](s,f,H);z=k[g>>2]|0;if((k[c>>2]|0)==3)J=+Lp(b,z,H);else J=+Kp(b,z,H);nd[k[(k[b>>2]|0)+336>>2]&1023](b,o,H);rd[k[(k[b>>2]|0)+272>>2]&511](b,d,k[h>>2]|0,H);v=G*+KY(0.0,J-+p[f>>3]);u=v+t*(+p[e>>3]-J);if(x){z=k[c>>2]|0;K=z+-1|0;L=k[w>>2]|0;if((z|0)==3){z=0;do{M=o+(z<<3)|0;N=ma(K,z)|0;O=L+(N<<3)|0;p[O>>3]=u*+p[d>>3]*+p[m>>3]*+p[i>>3]*+p[M>>3]+ +p[O>>3];O=L+(N+1<<3)|0;p[O>>3]=u*+p[d>>3]*+p[m>>3]*+p[A>>3]*+p[M>>3]+ +p[O>>3];z=z+1|0}while((z|0)!=(l|0))}else{z=0;do{O=L+((ma(K,z)|0)<<3)|0;p[O>>3]=u*+p[d>>3]*+p[m>>3]*+p[i>>3]*+p[o+(z<<3)>>3]+ +p[O>>3];z=z+1|0}while((z|0)!=(l|0))}}I=I+1|0}while((I|0)<(Hc[k[(k[H>>2]|0)+12>>2]&511](H)|0))}if((k[c>>2]|0)==3)xq(b,n,971);Tqa(o);o=k[g>>2]|0;if(o)Tqa(o);k[g>>2]=0;g=k[h>>2]|0;if(g)Tqa(g);k[h>>2]=0;if(H)Ec[k[(k[H>>2]|0)+4>>2]&1023](H);j=n;r=a;return j|0}function W9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0;a=r;r=r+32|0;c=a+28|0;d=a+16|0;e=a+8|0;f=a;g=a+24|0;k[g>>2]=0;cp(b,c,299);pp(b,d,916);h=(k[c>>2]|0)==2?3:6;i=Hc[k[(k[b>>2]|0)+396>>2]&511](b)|0;j=Hc[k[(k[b>>2]|0)+392>>2]&511](b)|0;l=k[c>>2]|0;m=(ma(l,i)|0)+j|0;n=h+2|0;o=j+i|0;q=Rqa(o>>>0>1073741823?-1:o<<2)|0;o=(i|0)>0;if((l|0)==2){if(o){l=0;do{k[q+(l<<2)>>2]=971;l=l+1|0}while((l|0)!=(i|0))}}else if(o){o=0;do{k[q+(o<<2)>>2]=972;o=o+1|0}while((o|0)!=(i|0))}if((j|0)>0){o=0;do{k[q+(o+i<<2)>>2]=653;o=o+1|0}while((o|0)!=(j|0))}j=gq(b,543)|0;o=ma(m,n)|0;i=o>>>0>536870911?-1:o<<3;o=Rqa(i)|0;l=Rqa(i)|0;i=(ma(n,n)|0)<<3;s=Rqa(i)|0;WEa(s|0,0,i|0)|0;Uo(b,g);pp(b,e,85);Wo(b,674)|0;Wo(b,677)|0;if((k[c>>2]|0)==3)Wo(b,679)|0;i=ed[k[(k[b>>2]|0)+308>>2]&511](b,5)|0;t=Hc[k[(k[i>>2]|0)+8>>2]&511](i)|0;if((t|0)<(Hc[k[(k[i>>2]|0)+12>>2]&511](i)|0)){u=i+8|0;v=j+12|0;w=s+((ma(h,n)|0)+h<<3)|0;x=h+1|0;y=s+((ma(x,n)|0)+x<<3)|0;x=t;do{Fc[k[(k[i>>2]|0)+24>>2]&1023](i,x);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[g>>2]|0,i);$9(0,o,b,k[c>>2]|0,k[g>>2]|0,i);aaa(0,l,b,k[c>>2]|0,k[g>>2]|0,i);z=+p[d>>3];A=+p[f>>3];t=0;do{B=s+((ma(t,n)|0)+t<<3)|0;p[B>>3]=z*+p[u>>3]*A;t=t+1|0}while((t|0)<(h|0));z=+p[e>>3];p[w>>3]=-(z*+p[u>>3]*A);p[y>>3]=-(z*+p[u>>3]*A);ZX(o,n,m,1,s,n,n,0,l,n,m,0,k[v>>2]|0,1)|0;x=x+1|0}while((x|0)<(Hc[k[(k[i>>2]|0)+12>>2]&511](i)|0))}Hq(b,j,q);Ec[k[(k[i>>2]|0)+4>>2]&1023](i);i=k[g>>2]|0;if(!i){k[g>>2]=0;Tqa(s);Tqa(l);Tqa(o);Tqa(q);r=a;return j|0}Tqa(i);k[g>>2]=0;Tqa(s);Tqa(l);Tqa(o);Tqa(q);r=a;return j|0}function X9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0,I=0;a=r;r=r+48|0;c=a+36|0;d=a+24|0;e=a+16|0;f=a+8|0;g=a;h=a+32|0;k[h>>2]=0;cp(b,c,299);pp(b,d,916);i=(k[c>>2]|0)==2;j=i?3:6;l=Hc[k[(k[b>>2]|0)+396>>2]&511](b)|0;m=ed[k[(k[b>>2]|0)+168>>2]&511](b,738)|0;ed[k[(k[b>>2]|0)+168>>2]&511](b,742)|0;n=k[c>>2]|0;o=ma(n,l)|0;q=Rqa(l>>>0>1073741823?-1:l<<2)|0;s=(l|0)>0;if((n|0)==2){if(s){n=0;do{k[q+(n<<2)>>2]=971;n=n+1|0}while((n|0)!=(l|0))}}else if(s){s=0;do{k[q+(s<<2)>>2]=972;s=s+1|0}while((s|0)!=(l|0))}l=gq(b,543)|0;s=ma(o,j)|0;n=s>>>0>536870911?-1:s<<3;s=Rqa(n)|0;t=Rqa(n)|0;n=ma(o,m)|0;u=Rqa(n>>>0>536870911?-1:n<<3)|0;if(n)WEa(u|0,0,n<<3|0)|0;n=Rqa(m>>>0>536870911?-1:m<<3)|0;v=Rqa(o>>>0>536870911?-1:o<<3)|0;w=i?72:288;i=Rqa(w)|0;WEa(i|0,0,w|0)|0;Uo(b,h);w=Wo(b,674)|0;x=Wo(b,677)|0;if((k[c>>2]|0)==3)y=Wo(b,679)|0;else y=0;z=ed[k[(k[b>>2]|0)+308>>2]&511](b,5)|0;A=Hc[k[(k[z>>2]|0)+8>>2]&511](z)|0;if((A|0)<(Hc[k[(k[z>>2]|0)+12>>2]&511](z)|0)){B=b+28|0;C=z+8|0;D=l+12|0;E=A;do{Fc[k[(k[z>>2]|0)+24>>2]&1023](z,E);rd[k[(k[b>>2]|0)+260>>2]&511](b,e,k[h>>2]|0,z);baa(0,s,b,k[c>>2]|0,k[h>>2]|0,z);caa(0,t,b,k[c>>2]|0,k[h>>2]|0,z);A=k[B>>2]|0;Tc[k[(k[A>>2]|0)+108>>2]&15](A,f,k[c>>2]|0,k[h>>2]|0,z,w,x,y);F=+p[e>>3];G=+p[f>>3]*2.0;A=0;do{H=i+((ma(A,j)|0)+A<<3)|0;p[H>>3]=G*+p[C>>3]*F;A=A+1|0}while((A|0)<(j|0));ZX(s,j,o,1,i,j,j,0,t,j,o,0,k[D>>2]|0,1)|0;A=(k[c>>2]|0)==2?24:48;H=Rqa(A)|0;nd[k[(k[b>>2]|0)+356>>2]&1023](b,H,z);TEa(n|0,H|0,A|0)|0;Tqa(H);daa(0,v,b,k[c>>2]|0,k[h>>2]|0,z);F=+p[C>>3]*+p[e>>3]*+aa(+(+p[d>>3]));p[g>>3]=F;ZX(n,1,m,1,g,1,1,0,v,1,o,0,u,1)|0;E=E+1|0}while((E|0)<(Hc[k[(k[z>>2]|0)+12>>2]&511](z)|0));I=D}else I=l+12|0;_X(u,m,o,1,u,m,o,0,k[I>>2]|0,1)|0;Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0;Hq(b,l,q);Ec[k[(k[z>>2]|0)+4>>2]&1023](z);z=k[h>>2]|0;if(!z){k[h>>2]=0;Tqa(i);Tqa(t);Tqa(s);Tqa(v);Tqa(n);Tqa(u);Tqa(q);r=a;return l|0}Tqa(z);k[h>>2]=0;Tqa(i);Tqa(t);Tqa(s);Tqa(v);Tqa(n);Tqa(u);Tqa(q);r=a;return l|0}function Y9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0;a=r;r=r+32|0;c=a+28|0;d=a+16|0;e=a+8|0;f=a;g=a+24|0;k[g>>2]=0;cp(b,c,299);h=(k[c>>2]|0)==2?3:6;i=Hc[k[(k[b>>2]|0)+396>>2]&511](b)|0;j=Hc[k[(k[b>>2]|0)+392>>2]&511](b)|0;l=k[c>>2]|0;m=(ma(l,i)|0)+j|0;n=h+2|0;o=j+i|0;q=Rqa(o>>>0>1073741823?-1:o<<2)|0;o=(i|0)>0;if((l|0)==2){if(o){l=0;do{k[q+(l<<2)>>2]=971;l=l+1|0}while((l|0)!=(i|0))}}else if(o){o=0;do{k[q+(o<<2)>>2]=972;o=o+1|0}while((o|0)!=(i|0))}if((j|0)>0){o=0;do{k[q+(o+i<<2)>>2]=653;o=o+1|0}while((o|0)!=(j|0))}j=gq(b,543)|0;o=ma(m,n)|0;i=o>>>0>536870911?-1:o<<3;o=Rqa(i)|0;l=Rqa(i)|0;i=(ma(n,n)|0)<<3;s=Rqa(i)|0;WEa(s|0,0,i|0)|0;Uo(b,g);pp(b,e,85);i=Wo(b,674)|0;t=Wo(b,677)|0;if((k[c>>2]|0)==3)u=Wo(b,679)|0;else u=0;v=ed[k[(k[b>>2]|0)+308>>2]&511](b,5)|0;w=Hc[k[(k[v>>2]|0)+8>>2]&511](v)|0;if((w|0)<(Hc[k[(k[v>>2]|0)+12>>2]&511](v)|0)){x=b+28|0;y=v+8|0;z=j+12|0;A=s+((ma(h,n)|0)+h<<3)|0;B=h+1|0;C=s+((ma(B,n)|0)+B<<3)|0;B=w;do{Fc[k[(k[v>>2]|0)+24>>2]&1023](v,B);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[g>>2]|0,v);$9(0,o,b,k[c>>2]|0,k[g>>2]|0,v);aaa(0,l,b,k[c>>2]|0,k[g>>2]|0,v);w=k[x>>2]|0;Tc[k[(k[w>>2]|0)+108>>2]&15](w,d,k[c>>2]|0,k[g>>2]|0,v,i,t,u);D=+p[f>>3];E=+p[d>>3]*2.0;w=0;do{F=s+((ma(w,n)|0)+w<<3)|0;p[F>>3]=E*+p[y>>3]*D;w=w+1|0}while((w|0)<(h|0));E=+p[e>>3];p[A>>3]=-(E*+p[y>>3]*D);p[C>>3]=-(E*+p[y>>3]*D);ZX(o,n,m,1,s,n,n,0,l,n,m,0,k[z>>2]|0,1)|0;B=B+1|0}while((B|0)<(Hc[k[(k[v>>2]|0)+12>>2]&511](v)|0))}Hq(b,j,q);Ec[k[(k[v>>2]|0)+4>>2]&1023](v);v=k[g>>2]|0;if(!v){k[g>>2]=0;Tqa(s);Tqa(l);Tqa(o);Tqa(q);r=a;return j|0}Tqa(v);k[g>>2]=0;Tqa(s);Tqa(l);Tqa(o);Tqa(q);r=a;return j|0}function Z9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0.0,H=0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0.0,ga=0;a=r;r=r+256|0;c=a+240|0;d=a+236|0;e=a+252|0;f=a+232|0;g=a+228|0;h=a+224|0;i=a+220|0;j=a+32|0;l=a+24|0;m=a+16|0;n=a+8|0;o=a;q=a+216|0;s=a+80|0;t=a+64|0;u=a+52|0;v=a+40|0;if(_p(b)|0){w=0;r=a;return w|0}if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){w=0;r=a;return w|0}Ap(b,d,533);switch(k[d>>2]|0){case 538:case 541:case 542:{k[q>>2]=0;cp(b,f,299);cp(b,g,298);d=Hc[k[(k[b>>2]|0)+396>>2]&511](b)|0;x=(Hc[k[(k[b>>2]|0)+392>>2]&511](b)|0)+(ma(k[f>>2]|0,d)|0)|0;d=gq(b,543)|0;y=k[f>>2]|0;z=ma(y,x)|0;A=Rqa(z>>>0>536870911?-1:z<<3)|0;z=ma(y,y)|0;y=Rqa(z>>>0>536870911?-1:z<<3)|0;if(z)WEa(y|0,0,z<<3|0)|0;Fc[k[(k[b>>2]|0)+188>>2]&1023](b,q);cp(b,h,942);z=Qqa(16)|0;B=0;eb(524,z|0,b|0,((k[f>>2]|0)==3?3:1)|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Sqa(z);E=D;F=C;Qb(F|0)}C=k[h>>2]|0;if((C|0)==924){G=+id[k[(k[b>>2]|0)+136>>2]&63](b,k[q>>2]|0);H=k[h>>2]|0;I=G}else{H=C;I=1.0}do if((H|0)==925){if((k[g>>2]|0)!=301){C=Wo(b,928)|0;Dc[k[(k[b>>2]|0)+132>>2]&255](b,i,m,n,e);J=ed[k[(k[b>>2]|0)+324>>2]&511](b,3)|0;K=C;break}C=s+56|0;D=s+4|0;k[s>>2]=27524;k[C>>2]=27544;B=0;wa(508,s+56|0,D|0);L=B;B=0;if(L&1){L=Rb()|0;M=Q;N=L;vva(C);Qb(N|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[C>>2]=27488;B=0;va(448,D|0);L=B;B=0;do if(L&1){O=Rb()|0;P=Q;R=O}else{k[D>>2]=27560;O=s+36|0;k[O>>2]=0;k[O+4>>2]=0;k[O+8>>2]=0;k[O+12>>2]=0;k[s+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,D|0,c|0);S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(c);Yua(O);Ava(D);P=T;R=S;break}Yua(c);B=0;S=Ia(40,s|0,128619,55)|0;T=B;B=0;a:do if(!(T&1)?(B=0,Xa(239,S|0,0)|0,U=B,B=0,!(U&1)):0){U=Ab(20)|0;B=0;eb(502,t|0,127077,81);V=B;B=0;do if(!(V&1)){B=0;eb(502,u|0,128675,23);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Yua(t);Y=W;Z=X;break}B=0;wa(510,v|0,D|0);X=B;B=0;if(X&1){X=Rb()|0;_=Q;$=X;aa=1}else{B=0;ua(163,U|0,t|0,u|0,3654,v|0);X=B;B=0;if(X&1)ba=1;else{B=0;eb(503,U|0,1240,229);B=0;ba=0}X=Rb()|0;W=Q;Yua(v);_=W;$=X;aa=ba}Yua(u);Yua(t);if(aa){Y=$;Z=_}else{ca=$;da=_;break a}}else{X=Rb()|0;Y=X;Z=Q}while(0);zb(U|0);ca=Y;da=Z}else ea=27;while(0);if((ea|0)==27){S=Rb()|0;ca=S;da=Q}k[s>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(O);Ava(D);vva(C);E=da;F=ca;Qb(F|0)}while(0);M=P;N=R;vva(C);Qb(N|0)}else{J=ed[k[(k[b>>2]|0)+324>>2]&511](b,3)|0;K=0}while(0);N=Hc[k[(k[J>>2]|0)+8>>2]&511](J)|0;b:do if((N|0)<(Hc[k[(k[J>>2]|0)+12>>2]&511](J)|0)){R=d+12|0;P=J+8|0;M=N;while(1){Fc[k[(k[J>>2]|0)+24>>2]&1023](J,M);fla(z,j,J);switch(k[h>>2]|0){case 924:{p[j>>3]=I*+p[j>>3];break}case 925:{nd[k[(k[K>>2]|0)+48>>2]&1023](K,o,J);if(+p[o>>3]<0.0)p[j>>3]=0.0;break}default:{}}eaa(0,A,b,k[f>>2]|0,0,J);rd[k[(k[b>>2]|0)+264>>2]&511](b,l,k[q>>2]|0,J);F=k[f>>2]|0;if((F|0)>0){G=+p[j>>3];fa=+p[l>>3];ca=0;do{da=y+((ma(F,ca)|0)+ca<<3)|0;p[da>>3]=G*+p[P>>3]*fa;ca=ca+1|0}while((ca|0)<(F|0))}ZX(A,F,x,1,y,F,F,0,A,F,x,0,k[R>>2]|0,1)|0;M=M+1|0;if((M|0)>=(Hc[k[(k[J>>2]|0)+12>>2]&511](J)|0))break b}}while(0);Ec[k[(k[J>>2]|0)+4>>2]&1023](J);bla(z);Sqa(z);z=k[q>>2]|0;if(z)Tqa(z);k[q>>2]=0;Tqa(A);Tqa(y);ga=d;break}default:ga=0}w=ga;r=a;return w|0}function _9(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0.0,s=0.0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0,E=0.0,F=0.0,G=0.0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;a=r;r=r+64|0;c=a+56|0;d=a+52|0;e=a+48|0;f=a+32|0;g=a+24|0;h=a;i=a+44|0;j=a+40|0;if(!(_p(b)|0)){l=0;r=a;return l|0}if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){l=0;r=a;return l|0}Ap(b,c,533);switch(k[c>>2]|0){case 538:case 541:case 542:{cp(b,d,81);if(!(k[d>>2]|0))m=0;else{k[i>>2]=0;k[j>>2]=0;cp(b,e,299);d=Hc[k[(k[b>>2]|0)+396>>2]&511](b)|0;c=Hc[k[(k[b>>2]|0)+392>>2]&511](b)|0;n=(ma(k[e>>2]|0,d)|0)+c|0;c=gq(b,543)|0;o=Rqa(d>>>0>536870911?-1:d<<3)|0;Fc[k[(k[b>>2]|0)+188>>2]&1023](b,i);Uo(b,j);pp(b,g,358);if(+p[g>>3]==0.0)p[g>>3]=1.0e5;q=+Dp(b,266);s=+Dp(b,65);t=Wo(b,339)|0;u=ed[k[(k[b>>2]|0)+324>>2]&511](b,3)|0;v=Hc[k[(k[u>>2]|0)+8>>2]&511](u)|0;a:do if((v|0)<(Hc[k[(k[u>>2]|0)+12>>2]&511](u)|0)){w=q*s;x=u+8|0;y=(d|0)>0;z=c+12|0;A=h+8|0;B=v;C=0.0;while(1){Fc[k[(k[u>>2]|0)+24>>2]&1023](u,B);rd[k[(k[t>>2]|0)+60>>2]&511](t,h,k[j>>2]|0,u);nd[k[(k[b>>2]|0)+368>>2]&1023](b,o,u);rd[k[(k[b>>2]|0)+264>>2]&511](b,f,k[i>>2]|0,u);D=k[e>>2]|0;switch(D|0){case 2:{E=+p[h>>3];F=E*E;break}case 3:{E=+p[h>>3];G=+p[A>>3];F=E*E+G*G;break}default:F=C}G=w*+aa(+(F+1.0));E=G*+p[x>>3]*+p[f>>3]*+p[g>>3];if(y){H=k[z>>2]|0;I=0;do{J=o+(I<<3)|0;I=I+1|0;K=ma((ma(D,I)|0)+-1|0,n)|0;L=0;do{M=L;L=L+1|0;N=H+((ma(D,L)|0)+-1+K<<3)|0;p[N>>3]=E*+p[J>>3]*+p[o+(M<<3)>>3]+ +p[N>>3]}while((L|0)!=(d|0))}while((I|0)!=(d|0))}B=B+1|0;if((B|0)>=(Hc[k[(k[u>>2]|0)+12>>2]&511](u)|0))break a;else C=F}}while(0);Ec[k[(k[u>>2]|0)+4>>2]&1023](u);u=k[i>>2]|0;if(u)Tqa(u);k[i>>2]=0;i=k[j>>2]|0;if(i)Tqa(i);k[j>>2]=0;Tqa(o);m=c}break}default:m=0}l=m;r=a;return l|0}function $9(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0.0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0;a=Hc[k[(k[c>>2]|0)+392>>2]&511](c)|0;g=Hc[k[(k[c>>2]|0)+396>>2]&511](c)|0;h=ma(g,d)|0;i=Rqa(h>>>0>536870911?-1:h<<3)|0;j=Rqa(a>>>0>536870911?-1:a<<3)|0;rd[k[(k[c>>2]|0)+344>>2]&511](c,i,e,f);nd[k[(k[c>>2]|0)+352>>2]&1023](c,j,f);f=(g|0)>0;if((d|0)==2){if(f){c=h+a|0;e=c<<1;l=c*3|0;m=c<<2;n=0;do{o=+p[i+(n<<3)>>3];q=n<<1;p[b+(q<<3)>>3]=o;p[b+((q|1)<<3)>>3]=0.0;r=q+c|0;p[b+(r<<3)>>3]=0.0;s=+p[i+(n+g<<3)>>3];p[b+(r+1<<3)>>3]=s;r=q+e|0;p[b+(r<<3)>>3]=s*.5;p[b+((r|1)<<3)>>3]=o*.5;r=q+l|0;p[b+(r<<3)>>3]=0.0;p[b+(r+1<<3)>>3]=0.0;r=q+m|0;p[b+(r<<3)>>3]=o;p[b+((r|1)<<3)>>3]=s;n=n+1|0}while((n|0)!=(g|0))}if((a|0)<=0){Tqa(i);Tqa(j);return}n=h+a|0;m=n+h|0;l=(n<<1)+h|0;e=(n*3|0)+h|0;c=(n<<2)+h|0;n=0;do{p[b+(n+h<<3)>>3]=0.0;p[b+(m+n<<3)>>3]=0.0;p[b+(l+n<<3)>>3]=0.0;p[b+(e+n<<3)>>3]=+p[j+(n<<3)>>3];p[b+(c+n<<3)>>3]=0.0;n=n+1|0}while((n|0)!=(a|0));Tqa(i);Tqa(j);return}else{if(f){f=h+a|0;n=f<<1;c=g<<1;e=f*3|0;l=f<<2;m=f*5|0;r=f*6|0;q=f*7|0;t=0;do{s=+p[i+(t<<3)>>3];u=ma(t,d)|0;p[b+(u<<3)>>3]=s;p[b+(u+1<<3)>>3]=0.0;p[b+(u+2<<3)>>3]=0.0;v=u+f|0;p[b+(v<<3)>>3]=0.0;o=+p[i+(t+g<<3)>>3];p[b+(v+1<<3)>>3]=o;p[b+(v+2<<3)>>3]=0.0;v=u+n|0;p[b+(v<<3)>>3]=0.0;p[b+(v+1<<3)>>3]=0.0;w=+p[i+(t+c<<3)>>3];p[b+(v+2<<3)>>3]=w;x=o*.5;v=u+e|0;p[b+(v<<3)>>3]=x;y=s*.5;p[b+(v+1<<3)>>3]=y;p[b+(v+2<<3)>>3]=0.0;z=w*.5;v=u+l|0;p[b+(v<<3)>>3]=z;p[b+(v+1<<3)>>3]=0.0;p[b+(v+2<<3)>>3]=y;v=u+m|0;p[b+(v<<3)>>3]=0.0;p[b+(v+1<<3)>>3]=z;p[b+(v+2<<3)>>3]=x;v=u+r|0;p[b+(v<<3)>>3]=0.0;p[b+(v+1<<3)>>3]=0.0;p[b+(v+2<<3)>>3]=0.0;v=u+q|0;p[b+(v<<3)>>3]=s;p[b+(v+1<<3)>>3]=o;p[b+(v+2<<3)>>3]=w;t=t+1|0}while((t|0)!=(g|0))}if((a|0)<=0){Tqa(i);Tqa(j);return}g=h+a|0;t=g+h|0;q=(g<<1)+h|0;r=(g*3|0)+h|0;m=(g<<2)+h|0;l=(g*5|0)+h|0;e=(g*6|0)+h|0;c=(g*7|0)+h|0;g=0;do{p[b+(g+h<<3)>>3]=0.0;p[b+(t+g<<3)>>3]=0.0;p[b+(q+g<<3)>>3]=0.0;p[b+(r+g<<3)>>3]=0.0;p[b+(m+g<<3)>>3]=0.0;p[b+(l+g<<3)>>3]=0.0;p[b+(e+g<<3)>>3]=+p[j+(g<<3)>>3];p[b+(c+g<<3)>>3]=0.0;g=g+1|0}while((g|0)!=(a|0));Tqa(i);Tqa(j);return}}function aaa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0.0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0.0;a=Hc[k[(k[c>>2]|0)+392>>2]&511](c)|0;g=Hc[k[(k[c>>2]|0)+396>>2]&511](c)|0;h=ma(g,d)|0;i=Rqa(h>>>0>536870911?-1:h<<3)|0;j=Rqa(a>>>0>536870911?-1:a<<3)|0;rd[k[(k[c>>2]|0)+344>>2]&511](c,i,e,f);nd[k[(k[c>>2]|0)+352>>2]&1023](c,j,f);f=(g|0)>0;if((d|0)==2){if(f){c=h+a|0;e=c<<1;l=c*3|0;m=c<<2;n=0;do{o=+p[i+(n<<3)>>3];q=n<<1;p[b+(q<<3)>>3]=o;p[b+((q|1)<<3)>>3]=0.0;r=q+c|0;p[b+(r<<3)>>3]=0.0;s=+p[i+(n+g<<3)>>3];p[b+(r+1<<3)>>3]=s;r=q+e|0;p[b+(r<<3)>>3]=s;p[b+((r|1)<<3)>>3]=o;r=q+l|0;p[b+(r<<3)>>3]=o;p[b+(r+1<<3)>>3]=s;r=q+m|0;p[b+(r<<3)>>3]=0.0;p[b+((r|1)<<3)>>3]=0.0;n=n+1|0}while((n|0)!=(g|0))}if((a|0)<=0){Tqa(i);Tqa(j);return}n=h+a|0;m=n+h|0;l=(n<<1)+h|0;e=(n*3|0)+h|0;c=(n<<2)+h|0;n=0;do{p[b+(n+h<<3)>>3]=0.0;p[b+(m+n<<3)>>3]=0.0;p[b+(l+n<<3)>>3]=0.0;p[b+(e+n<<3)>>3]=0.0;p[b+(c+n<<3)>>3]=+p[j+(n<<3)>>3];n=n+1|0}while((n|0)!=(a|0));Tqa(i);Tqa(j);return}else{if(f){f=h+a|0;n=f<<1;c=g<<1;e=f*3|0;l=f<<2;m=f*5|0;r=f*6|0;q=f*7|0;t=0;do{s=+p[i+(t<<3)>>3];u=ma(t,d)|0;p[b+(u<<3)>>3]=s;p[b+(u+1<<3)>>3]=0.0;p[b+(u+2<<3)>>3]=0.0;v=u+f|0;p[b+(v<<3)>>3]=0.0;o=+p[i+(t+g<<3)>>3];p[b+(v+1<<3)>>3]=o;p[b+(v+2<<3)>>3]=0.0;v=u+n|0;p[b+(v<<3)>>3]=0.0;p[b+(v+1<<3)>>3]=0.0;w=+p[i+(t+c<<3)>>3];p[b+(v+2<<3)>>3]=w;v=u+e|0;p[b+(v<<3)>>3]=o;p[b+(v+1<<3)>>3]=s;p[b+(v+2<<3)>>3]=0.0;v=u+l|0;p[b+(v<<3)>>3]=w;p[b+(v+1<<3)>>3]=0.0;p[b+(v+2<<3)>>3]=s;v=u+m|0;p[b+(v<<3)>>3]=0.0;p[b+(v+1<<3)>>3]=w;p[b+(v+2<<3)>>3]=o;v=u+r|0;p[b+(v<<3)>>3]=s;p[b+(v+1<<3)>>3]=o;p[b+(v+2<<3)>>3]=w;v=u+q|0;p[b+(v<<3)>>3]=0.0;p[b+(v+1<<3)>>3]=0.0;p[b+(v+2<<3)>>3]=0.0;t=t+1|0}while((t|0)!=(g|0))}if((a|0)<=0){Tqa(i);Tqa(j);return}g=h+a|0;t=g+h|0;q=(g<<1)+h|0;r=(g*3|0)+h|0;m=(g<<2)+h|0;l=(g*5|0)+h|0;e=(g*6|0)+h|0;c=(g*7|0)+h|0;g=0;do{p[b+(g+h<<3)>>3]=0.0;p[b+(t+g<<3)>>3]=0.0;p[b+(q+g<<3)>>3]=0.0;p[b+(r+g<<3)>>3]=0.0;p[b+(m+g<<3)>>3]=0.0;p[b+(l+g<<3)>>3]=0.0;p[b+(e+g<<3)>>3]=0.0;p[b+(c+g<<3)>>3]=+p[j+(g<<3)>>3];g=g+1|0}while((g|0)!=(a|0));Tqa(i);Tqa(j);return}}function baa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0.0,j=0,l=0,m=0.0,n=0,o=0,q=0,r=0.0,s=0.0;a=Hc[k[(k[c>>2]|0)+396>>2]&511](c)|0;g=ma(a,d)|0;h=Rqa(g>>>0>536870911?-1:g<<3)|0;rd[k[(k[c>>2]|0)+344>>2]&511](c,h,e,f);f=(a|0)>0;if((d|0)==2){if(!f){Tqa(h);return}e=g<<1;c=0;do{i=+p[h+(c<<3)>>3];j=c<<1;p[b+(j<<3)>>3]=i;p[b+((j|1)<<3)>>3]=0.0;l=j+g|0;p[b+(l<<3)>>3]=0.0;m=+p[h+(c+a<<3)>>3];p[b+(l+1<<3)>>3]=m;l=j+e|0;p[b+(l<<3)>>3]=m*.5;p[b+((l|1)<<3)>>3]=i*.5;c=c+1|0}while((c|0)!=(a|0));Tqa(h);return}else{if(!f){Tqa(h);return}f=g<<1;c=a<<1;e=g*3|0;l=g<<2;j=g*5|0;n=0;do{i=+p[h+(n<<3)>>3];o=ma(n,d)|0;p[b+(o<<3)>>3]=i;p[b+(o+1<<3)>>3]=0.0;p[b+(o+2<<3)>>3]=0.0;q=o+g|0;p[b+(q<<3)>>3]=0.0;m=+p[h+(n+a<<3)>>3];p[b+(q+1<<3)>>3]=m;p[b+(q+2<<3)>>3]=0.0;q=o+f|0;p[b+(q<<3)>>3]=0.0;p[b+(q+1<<3)>>3]=0.0;r=+p[h+(n+c<<3)>>3];p[b+(q+2<<3)>>3]=r;s=m*.5;q=o+e|0;p[b+(q<<3)>>3]=s;m=i*.5;p[b+(q+1<<3)>>3]=m;p[b+(q+2<<3)>>3]=0.0;i=r*.5;q=o+l|0;p[b+(q<<3)>>3]=i;p[b+(q+1<<3)>>3]=0.0;p[b+(q+2<<3)>>3]=m;q=o+j|0;p[b+(q<<3)>>3]=0.0;p[b+(q+1<<3)>>3]=i;p[b+(q+2<<3)>>3]=s;n=n+1|0}while((n|0)!=(a|0));Tqa(h);return}}function caa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0.0,j=0,l=0,m=0.0,n=0,o=0,q=0,r=0.0;a=Hc[k[(k[c>>2]|0)+396>>2]&511](c)|0;g=ma(a,d)|0;h=Rqa(g>>>0>536870911?-1:g<<3)|0;rd[k[(k[c>>2]|0)+344>>2]&511](c,h,e,f);f=(a|0)>0;if((d|0)==2){if(!f){Tqa(h);return}e=g<<1;c=0;do{i=+p[h+(c<<3)>>3];j=c<<1;p[b+(j<<3)>>3]=i;p[b+((j|1)<<3)>>3]=0.0;l=j+g|0;p[b+(l<<3)>>3]=0.0;m=+p[h+(c+a<<3)>>3];p[b+(l+1<<3)>>3]=m;l=j+e|0;p[b+(l<<3)>>3]=m;p[b+((l|1)<<3)>>3]=i;c=c+1|0}while((c|0)!=(a|0));Tqa(h);return}else{if(!f){Tqa(h);return}f=g<<1;c=a<<1;e=g*3|0;l=g<<2;j=g*5|0;n=0;do{i=+p[h+(n<<3)>>3];o=ma(n,d)|0;p[b+(o<<3)>>3]=i;p[b+(o+1<<3)>>3]=0.0;p[b+(o+2<<3)>>3]=0.0;q=o+g|0;p[b+(q<<3)>>3]=0.0;m=+p[h+(n+a<<3)>>3];p[b+(q+1<<3)>>3]=m;p[b+(q+2<<3)>>3]=0.0;q=o+f|0;p[b+(q<<3)>>3]=0.0;p[b+(q+1<<3)>>3]=0.0;r=+p[h+(n+c<<3)>>3];p[b+(q+2<<3)>>3]=r;q=o+e|0;p[b+(q<<3)>>3]=m;p[b+(q+1<<3)>>3]=i;p[b+(q+2<<3)>>3]=0.0;q=o+l|0;p[b+(q<<3)>>3]=r;p[b+(q+1<<3)>>3]=0.0;p[b+(q+2<<3)>>3]=i;q=o+j|0;p[b+(q<<3)>>3]=0.0;p[b+(q+1<<3)>>3]=r;p[b+(q+2<<3)>>3]=m;n=n+1|0}while((n|0)!=(a|0));Tqa(h);return}}function daa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a=Hc[k[(k[c>>2]|0)+396>>2]&511](c)|0;g=ma(a,d)|0;h=Rqa(g>>>0>536870911?-1:g<<3)|0;rd[k[(k[c>>2]|0)+344>>2]&511](c,h,e,f);f=(a|0)>0;if((d|0)==2){if(f)i=0;else{Tqa(h);return}do{e=i<<1;p[b+(e<<3)>>3]=+p[h+(i<<3)>>3];p[b+((e|1)<<3)>>3]=+p[h+(i+a<<3)>>3];i=i+1|0}while((i|0)!=(a|0));Tqa(h);return}if(!f){Tqa(h);return}f=a<<1;i=0;do{e=ma(i,d)|0;p[b+(e<<3)>>3]=+p[h+(i<<3)>>3];p[b+(e+1<<3)>>3]=+p[h+(i+a<<3)>>3];p[b+(e+2<<3)>>3]=+p[h+(i+f<<3)>>3];i=i+1|0}while((i|0)!=(a|0));Tqa(h);return}function eaa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0.0,l=0,m=0;e=Hc[k[(k[c>>2]|0)+392>>2]&511](c)|0;a=Hc[k[(k[c>>2]|0)+396>>2]&511](c)|0;g=ma(a,d)|0;h=Rqa(a>>>0>536870911?-1:a<<3)|0;nd[k[(k[c>>2]|0)+368>>2]&1023](c,h,f);f=(a|0)>0;if((d|0)==3){if(f){d=g+e|0;c=d<<1;i=0;do{j=+p[h+(i<<3)>>3];l=i*3|0;p[b+(l<<3)>>3]=j;p[b+(l+1<<3)>>3]=0.0;p[b+(l+2<<3)>>3]=0.0;m=l+d|0;p[b+(m<<3)>>3]=0.0;p[b+(m+1<<3)>>3]=j;p[b+(m+2<<3)>>3]=0.0;m=l+c|0;p[b+(m<<3)>>3]=0.0;p[b+(m+1<<3)>>3]=0.0;p[b+(m+2<<3)>>3]=j;i=i+1|0}while((i|0)!=(a|0))}if((e|0)<=0){Tqa(h);return}i=g+e|0;c=i+g|0;d=(i<<1)+g|0;i=0;do{p[b+(i+g<<3)>>3]=0.0;p[b+(c+i<<3)>>3]=0.0;p[b+(d+i<<3)>>3]=0.0;i=i+1|0}while((i|0)!=(e|0));Tqa(h);return}else{if(f){f=g+e|0;i=0;do{j=+p[h+(i<<3)>>3];d=i<<1;p[b+(d<<3)>>3]=j;p[b+((d|1)<<3)>>3]=0.0;c=f+d|0;p[b+(c<<3)>>3]=0.0;p[b+(c+1<<3)>>3]=j;i=i+1|0}while((i|0)!=(a|0))}if((e|0)<=0){Tqa(h);return}a=g<<1;i=0;do{p[b+(i+g<<3)>>3]=0.0;p[b+(i+e+a<<3)>>3]=0.0;i=i+1|0}while((i|0)!=(e|0));Tqa(h);return}}function faa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0.0,q=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0,D=0,E=0,F=0;a=r;r=r+48|0;c=a+36|0;d=a+24|0;e=a+16|0;f=a+8|0;g=a;h=a+32|0;k[h>>2]=0;cp(b,c,299);i=Hc[k[(k[b>>2]|0)+396>>2]&511](b)|0;j=Hc[k[(k[b>>2]|0)+392>>2]&511](b)|0;l=j+i|0;m=Rqa(l>>>0>1073741823?-1:l<<2)|0;l=(i|0)>0;if((k[c>>2]|0)==2){if(l){n=0;do{k[m+(n<<2)>>2]=971;n=n+1|0}while((n|0)!=(i|0))}}else if(l){n=0;do{k[m+(n<<2)>>2]=972;n=n+1|0}while((n|0)!=(i|0))}if((j|0)>0){n=0;do{k[m+(n+i<<2)>>2]=653;n=n+1|0}while((n|0)!=(j|0))}j=iq(b,543)|0;n=Rqa(i>>>0>536870911?-1:i<<3)|0;Uo(b,h);o=+Dp(b,265);q=+Dp(b,65);s=Wo(b,88)|0;t=Wo(b,89)|0;if((k[c>>2]|0)==3)u=Wo(b,90)|0;else u=0;v=ed[k[(k[b>>2]|0)+308>>2]&511](b,5)|0;w=Hc[k[(k[v>>2]|0)+8>>2]&511](v)|0;if((w|0)<(Hc[k[(k[v>>2]|0)+12>>2]&511](v)|0)){x=v+8|0;y=j+4|0;z=o*q;A=w;do{Fc[k[(k[v>>2]|0)+24>>2]&1023](v,A);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[h>>2]|0,v);nd[k[(k[b>>2]|0)+368>>2]&1023](b,n,v);nd[k[(k[s>>2]|0)+48>>2]&1023](s,e,v);nd[k[(k[t>>2]|0)+48>>2]&1023](t,f,v);if((k[c>>2]|0)==3)nd[k[(k[u>>2]|0)+48>>2]&1023](u,g,v);if(l){w=k[c>>2]|0;B=k[y>>2]|0;if((w|0)==3){C=0;do{D=n+(C<<3)|0;E=C*3|0;F=B+(E<<3)|0;p[F>>3]=o*+p[e>>3]*+p[d>>3]*+p[x>>3]*+p[D>>3]+ +p[F>>3];F=B+(E+1<<3)|0;p[F>>3]=o*+p[f>>3]*+p[d>>3]*+p[x>>3]*+p[D>>3]+ +p[F>>3];F=B+(E+2<<3)|0;q=o*+p[g>>3]*+p[d>>3]*+p[x>>3]*+p[D>>3]+ +p[F>>3];p[F>>3]=q;p[F>>3]=q-z*+p[d>>3]*+p[x>>3]*+p[D>>3];C=C+1|0}while((C|0)!=(i|0))}else{C=0;do{D=n+(C<<3)|0;F=ma(w,C)|0;E=B+(F<<3)|0;p[E>>3]=o*+p[e>>3]*+p[d>>3]*+p[x>>3]*+p[D>>3]+ +p[E>>3];E=B+(F+1<<3)|0;q=o*+p[f>>3]*+p[d>>3]*+p[x>>3]*+p[D>>3]+ +p[E>>3];p[E>>3]=q;p[E>>3]=q-z*+p[d>>3]*+p[x>>3]*+p[D>>3];C=C+1|0}while((C|0)!=(i|0))}}A=A+1|0}while((A|0)<(Hc[k[(k[v>>2]|0)+12>>2]&511](v)|0))}zq(b,j,m);Ec[k[(k[v>>2]|0)+4>>2]&1023](v);Tqa(m);Tqa(n);n=k[h>>2]|0;if(!n){r=a;return j|0}Tqa(n);r=a;return j|0}function gaa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0.0,v=0.0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0.0;a=r;r=r+80|0;c=a+64|0;d=a+48|0;e=a+40|0;f=a+16|0;g=a+60|0;h=a+56|0;i=a+8|0;j=a;k[g>>2]=0;if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){l=0;r=a;return l|0}if(!(_p(b)|0)){l=0;r=a;return l|0}cp(b,c,299);m=Hc[k[(k[b>>2]|0)+396>>2]&511](b)|0;n=Hc[k[(k[b>>2]|0)+392>>2]&511](b)|0;o=n+m|0;q=Rqa(o>>>0>1073741823?-1:o<<2)|0;o=(m|0)>0;if((k[c>>2]|0)==2){if(o){s=0;do{k[q+(s<<2)>>2]=971;s=s+1|0}while((s|0)!=(m|0))}}else if(o){s=0;do{k[q+(s<<2)>>2]=972;s=s+1|0}while((s|0)!=(m|0))}if((n|0)>0){s=0;do{k[q+(s+m<<2)>>2]=653;s=s+1|0}while((s|0)!=(n|0))}n=iq(b,543)|0;s=Rqa(m>>>0>536870911?-1:m<<3)|0;Fc[k[(k[b>>2]|0)+188>>2]&1023](b,g);t=Wo(b,64)|0;u=+Dp(b,266);v=+Dp(b,65);w=ed[k[(k[b>>2]|0)+324>>2]&511](b,5)|0;x=Hc[k[(k[w>>2]|0)+8>>2]&511](w)|0;if((x|0)<(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0)){y=u*v;z=w+8|0;A=n+4|0;B=f+8|0;C=f+16|0;D=x;do{Fc[k[(k[w>>2]|0)+24>>2]&1023](w,D);rd[k[(k[b>>2]|0)+264>>2]&511](b,d,k[g>>2]|0,w);nd[k[(k[b>>2]|0)+368>>2]&1023](b,s,w);nd[k[(k[b>>2]|0)+380>>2]&1023](b,f,k[g>>2]|0);nd[k[(k[t>>2]|0)+48>>2]&1023](t,e,w);E=y*+p[e>>3];if(o){x=k[c>>2]|0;F=k[A>>2]|0;if((x|0)==3){G=0;do{H=s+(G<<3)|0;I=G*3|0;J=F+(I<<3)|0;p[J>>3]=E*+p[z>>3]*+p[d>>3]*+p[H>>3]*+p[f>>3]+ +p[J>>3];J=F+(I+1<<3)|0;p[J>>3]=E*+p[z>>3]*+p[d>>3]*+p[H>>3]*+p[B>>3]+ +p[J>>3];J=F+(I+2<<3)|0;p[J>>3]=E*+p[z>>3]*+p[d>>3]*+p[H>>3]*+p[C>>3]+ +p[J>>3];G=G+1|0}while((G|0)!=(m|0))}else{G=0;do{J=s+(G<<3)|0;H=ma(x,G)|0;I=F+(H<<3)|0;p[I>>3]=E*+p[z>>3]*+p[d>>3]*+p[J>>3]*+p[f>>3]+ +p[I>>3];I=F+(H+1<<3)|0;p[I>>3]=E*+p[z>>3]*+p[d>>3]*+p[J>>3]*+p[B>>3]+ +p[I>>3];G=G+1|0}while((G|0)!=(m|0))}}D=D+1|0}while((D|0)<(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0))}zq(b,n,q);cp(b,h,81);if(k[h>>2]|0){h=Wo(b,40)|0;pp(b,i,358);D=Hc[k[(k[w>>2]|0)+8>>2]&511](w)|0;a:do if((D|0)<(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0)){B=w+8|0;z=n+4|0;C=f+8|0;if(o){K=D;L=0.0}else{A=D;while(1){Fc[k[(k[w>>2]|0)+24>>2]&1023](w,A);rd[k[(k[b>>2]|0)+264>>2]&511](b,d,k[g>>2]|0,w);nd[k[(k[b>>2]|0)+368>>2]&1023](b,s,w);nd[k[(k[b>>2]|0)+380>>2]&1023](b,f,k[g>>2]|0);nd[k[(k[h>>2]|0)+48>>2]&1023](h,j,w);A=A+1|0;if((A|0)>=(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0))break a}}while(1){Fc[k[(k[w>>2]|0)+24>>2]&1023](w,K);rd[k[(k[b>>2]|0)+264>>2]&511](b,d,k[g>>2]|0,w);nd[k[(k[b>>2]|0)+368>>2]&1023](b,s,w);nd[k[(k[b>>2]|0)+380>>2]&1023](b,f,k[g>>2]|0);switch(k[c>>2]|0){case 2:{M=+p[C>>3];break}case 3:{y=+p[f>>3];E=+p[C>>3];M=+aa(+(y*y+E*E));break}default:M=L}nd[k[(k[h>>2]|0)+48>>2]&1023](h,j,w);A=k[c>>2]|0;e=k[z>>2]|0;t=0;do{G=e+((ma(A,t)|0)+1<<3)|0;p[G>>3]=+p[G>>3]+M*(+p[s+(t<<3)>>3]*(+p[d>>3]*(+p[B>>3]*(+p[j>>3]*(v*(u*+p[i>>3]))))));t=t+1|0}while((t|0)!=(m|0));K=K+1|0;if((K|0)>=(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0))break a;else L=M}}while(0)}Ec[k[(k[w>>2]|0)+4>>2]&1023](w);Tqa(q);Tqa(s);s=k[g>>2]|0;if(s)Tqa(s);k[g>>2]=0;l=n;r=a;return l|0}function haa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0,y=0,z=0.0,A=0,B=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0,J=0,K=0.0,L=0,M=0,N=0,O=0,P=0,Q=0;a=r;r=r+64|0;c=a+56|0;d=a+40|0;e=a+32|0;f=a+24|0;g=a;h=a+52|0;i=a+48|0;if(!(Hc[k[(k[b>>2]|0)+240>>2]&511](b)|0)){j=0;r=a;return j|0}k[h>>2]=0;k[i>>2]=0;if(_p(b)|0){cp(b,c,299);l=Hc[k[(k[b>>2]|0)+396>>2]&511](b)|0;m=Hc[k[(k[b>>2]|0)+392>>2]&511](b)|0;n=Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;o=m+l|0;q=Rqa(o>>>0>1073741823?-1:o<<2)|0;o=(l|0)>0;if((k[c>>2]|0)==2){if(o){s=0;do{k[q+(s<<2)>>2]=971;s=s+1|0}while((s|0)!=(l|0))}}else if(o){s=0;do{k[q+(s<<2)>>2]=972;s=s+1|0}while((s|0)!=(l|0))}if((m|0)>0){s=0;do{k[q+(s+l<<2)>>2]=653;s=s+1|0}while((s|0)!=(m|0))}m=iq(b,543)|0;s=Rqa(l>>>0>536870911?-1:l<<3)|0;Uo(b,h);rd[k[(k[b>>2]|0)+140>>2]&511](b,i,k[h>>2]|0,206);nd[k[(k[b>>2]|0)+384>>2]&1023](b,g,k[i>>2]|0);t=Wo(b,339)|0;u=Wo(b,999)|0;v=+Dp(b,266);w=+Dp(b,65);x=k[c>>2]|0;y=k[h>>2]|0;z=+p[y+(x+-1<<3)>>3];A=(n|0)>1;if(A){B=1;C=z;while(1){D=+p[y+((B*3|0)+-1+x<<3)>>3];E=D>C?D:C;B=B+1|0;if((B|0)==(n|0)){F=E;break}else C=E}if(A){A=1;C=z;while(1){E=+p[y+((A*3|0)+-1+x<<3)>>3];D=E<C?E:C;A=A+1|0;if((A|0)==(n|0)){G=F;H=D;break}else C=D}}else{G=F;H=z}}else{G=z;H=z}n=k[(k[b>>2]|0)+316>>2]|0;A=k[i>>2]|0;if(G>0.0&H<0.0)I=fd[n&31](b,y,A,3,30)|0;else I=fd[n&31](b,y,A,3,3)|0;A=Hc[k[(k[I>>2]|0)+8>>2]&511](I)|0;if((A|0)<(Hc[k[(k[I>>2]|0)+12>>2]&511](I)|0)){H=v*w;y=I+8|0;n=m+4|0;x=g+8|0;B=g+16|0;J=A;do{Fc[k[(k[I>>2]|0)+24>>2]&1023](I,J);rd[k[(k[b>>2]|0)+272>>2]&511](b,d,k[i>>2]|0,I);nd[k[(k[b>>2]|0)+368>>2]&1023](b,s,I);nd[k[(k[t>>2]|0)+48>>2]&1023](t,e,I);nd[k[(k[u>>2]|0)+48>>2]&1023](u,f,I);A=k[h>>2]|0;if((k[c>>2]|0)==3)K=+Lp(b,A,I);else K=+Kp(b,A,I);w=H*+KY(0.0,K-+p[f>>3]);if(o){A=k[c>>2]|0;L=k[n>>2]|0;if((A|0)==3){M=0;do{N=s+(M<<3)|0;O=M*3|0;P=L+(O<<3)|0;p[P>>3]=w*+p[d>>3]*+p[y>>3]*+p[g>>3]*+p[N>>3]+ +p[P>>3];P=L+(O+1<<3)|0;p[P>>3]=w*+p[d>>3]*+p[y>>3]*+p[x>>3]*+p[N>>3]+ +p[P>>3];P=L+(O+2<<3)|0;p[P>>3]=w*+p[d>>3]*+p[y>>3]*+p[B>>3]*+p[N>>3]+ +p[P>>3];M=M+1|0}while((M|0)!=(l|0))}else{M=0;do{P=s+(M<<3)|0;N=ma(A,M)|0;O=L+(N<<3)|0;p[O>>3]=w*+p[d>>3]*+p[y>>3]*+p[g>>3]*+p[P>>3]+ +p[O>>3];O=L+(N+1<<3)|0;p[O>>3]=w*+p[d>>3]*+p[y>>3]*+p[x>>3]*+p[P>>3]+ +p[O>>3];M=M+1|0}while((M|0)!=(l|0))}}J=J+1|0}while((J|0)<(Hc[k[(k[I>>2]|0)+12>>2]&511](I)|0))}zq(b,m,q);Ec[k[(k[I>>2]|0)+4>>2]&1023](I);Tqa(q);Tqa(s);s=k[h>>2]|0;if(s)Tqa(s);k[h>>2]=0;h=k[i>>2]|0;if(h)Tqa(h);k[i>>2]=0;Q=m}else Q=0;j=Q;r=a;return j|0}
+function dea(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;a=r;r=r+208|0;d=a+8|0;e=a;f=a+184|0;g=a+48|0;h=a+36|0;i=a+24|0;j=a+12|0;if((k[c+40>>2]|0)!=300){k[e>>2]=136615;Ska(c,1,e);foa(c);e=c+52|0;if((k[e>>2]|0)<=0){k[d>>2]=136615;Lka(c,1,d);r=a;return}l=c+36|0;m=c+104|0;n=0;while(1){if((k[(k[l>>2]|0)+(n<<2)>>2]|0)!=0?(o=(Jka(c,136615)|0)+(n<<3)|0,(~~+p[o>>3]|0)!=0):0){o=Qqa(52)|0;B=0;ua(177,o|0,n+1+(k[m>>2]|0)|0,n|0,c|0,509);q=B;B=0;if(q&1){s=o;break}ih(b,o)|0}n=n+1|0;if((n|0)>=(k[e>>2]|0)){t=27;break}}if((t|0)==27){k[d>>2]=136615;Lka(c,1,d);r=a;return}a=Rb()|0;d=Q;Sqa(s);u=d;v=a;Qb(v|0)}a=g+56|0;d=g+4|0;k[g>>2]=27524;k[a>>2]=27544;B=0;wa(508,g+56|0,d|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;vva(a);Qb(x|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[a>>2]=27488;B=0;va(448,d|0);s=B;B=0;do if(s&1){c=Rb()|0;y=Q;z=c}else{k[d>>2]=27560;c=g+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,d|0,f|0);e=B;B=0;if(e&1){e=Rb()|0;n=Q;Yua(f);Yua(c);Ava(d);y=n;z=e;break}Yua(f);B=0;e=Ia(40,g|0,134838,27)|0;n=B;B=0;a:do if(!(n&1)?(B=0,Xa(239,e|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,h|0,131940,75);m=B;B=0;do if(!(m&1)){B=0;eb(502,i|0,135856,11);l=B;B=0;if(l&1){l=Rb()|0;o=Q;Yua(h);A=o;C=l;break}B=0;wa(510,j|0,d|0);l=B;B=0;if(l&1){l=Rb()|0;D=Q;E=l;F=1}else{B=0;ua(163,b|0,h|0,i|0,14,j|0);l=B;B=0;if(l&1)G=1;else{B=0;eb(503,b|0,1240,229);B=0;G=0}l=Rb()|0;o=Q;Yua(j);D=o;E=l;F=G}Yua(i);Yua(h);if(F){A=D;C=E}else{H=D;I=E;break a}}else{l=Rb()|0;A=Q;C=l}while(0);zb(b|0);H=A;I=C}else t=17;while(0);if((t|0)==17){e=Rb()|0;H=Q;I=e}k[g>>2]=27468;k[a>>2]=27488;k[d>>2]=27560;Yua(c);Ava(d);vva(a);u=H;v=I;Qb(v|0)}while(0);w=y;x=z;vva(a);Qb(x|0)}function eea(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a=r;r=r+16|0;d=a+8|0;e=a;if((k[c+40>>2]|0)==302){k[e>>2]=136615;k[e+4>>2]=136636;Ska(c,2,e)}hoa(b,c,509,738,534);k[d>>2]=136615;k[d+4>>2]=136636;Lka(c,2,d);r=a;return}function fea(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function gea(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;a=c+40|0;if((k[a>>2]|0)==300)return;f=c+56|0;g=k[f>>2]|0;if((g|0)>0){h=c+32|0;j=g;g=0;l=0;while(1){if(!(i[(k[h>>2]|0)+l>>0]|0)){m=j;n=g}else{o=qh(b,g)|0;Uc[k[(k[o>>2]|0)+480>>2]&63](o,l,c,d,e,738);m=k[f>>2]|0;n=g+1|0}l=l+1|0;if((l|0)>=(m|0))break;else{j=m;g=n}}}Zka(c,b,137052,353);Zka(c,b,134925,339);Zka(c,b,134945,64);Yka(c,b,137955,999,0.0);Zka(c,b,137867,206);if((k[a>>2]|0)!=300){Zka(c,b,136615,287);Zka(c,b,136636,288)}Zka(c,b,135039,653);return}function hea(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function iea(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,131940,75);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,73,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function jea(a,b){a=a|0;b=b|0;return 0}function kea(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,131940,75);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,80,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function lea(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0.0,m=0.0,n=0,o=0.0,q=0,s=0,t=0;a=r;r=r+32|0;c=a+8|0;d=a;e=a+16|0;if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){f=0;r=a;return f|0}g=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;k[e>>2]=0;h=Hc[k[(k[g>>2]|0)+164>>2]&511](g)|0;i=gq(g,534)|0;j=Rqa(h>>>0>536870911?-1:h<<3)|0;Uo(g,e);l=+Dp(b,211);m=+Dp(b,210);b=ed[k[(k[g>>2]|0)+308>>2]&511](g,2)|0;n=Hc[k[(k[b>>2]|0)+8>>2]&511](b)|0;if((n|0)<(Hc[k[(k[b>>2]|0)+12>>2]&511](b)|0)){o=l/m;q=b+8|0;s=i+12|0;t=n;do{Fc[k[(k[b>>2]|0)+24>>2]&1023](b,t);rd[k[(k[g>>2]|0)+260>>2]&511](g,d,k[e>>2]|0,b);nd[k[(k[g>>2]|0)+336>>2]&1023](g,j,b);p[c>>3]=o*+p[q>>3]*+p[d>>3];ZX(j,1,h,1,c,1,1,0,j,1,h,0,k[s>>2]|0,1)|0;t=t+1|0}while((t|0)<(Hc[k[(k[b>>2]|0)+12>>2]&511](b)|0))}t=k[e>>2]|0;if(t)Tqa(t);k[e>>2]=0;Tqa(j);Ec[k[(k[b>>2]|0)+4>>2]&1023](b);ap(g);if(g)Ec[k[(k[g>>2]|0)+4>>2]&1023](g);f=i;r=a;return f|0}function mea(a,b){a=a|0;b=b|0;return 0}function nea(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,131940,75);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,130,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function oea(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,131940,75);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,133,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function pea(a,b,c){a=a|0;b=b|0;c=c|0;nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,39);return}function qea(a,b){a=a|0;b=b|0;return}function rea(a){a=a|0;Sqa(a);return}function sea(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=r;r=r+16|0;d=a;Fka(c,d,132040);if((k[d>>2]|0)==3){r=a;return}qoa(b,c,132071,510,738,0);if((k[d>>2]|0)!=4){r=a;return}Bma(b,510);r=a;return}function tea(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;a=r;r=r+48|0;d=a+8|0;e=a;f=a+32|0;g=a+24|0;h=a+20|0;j=a+16|0;l=a+12|0;Fka(c,g,132040);if((k[g>>2]|0)==3){doa(c);k[e>>2]=137052;Ska(c,1,e);e=c+60|0;g=k[e>>2]|0;a:do if((g|0)>0){m=c+76|0;n=c+32|0;o=c+104|0;q=g;s=0;while(1){if(!(i[(k[n>>2]|0)+((k[(k[m>>2]|0)+((s<<2|2)<<2)>>2]|0)+-1)>>0]|0)){t=s+1|0;u=q}else{v=Qqa(48)|0;w=s+1|0;B=0;La(36,v|0,w+(k[o>>2]|0)|0,s|0,s|0,c|0,510);x=B;B=0;if(x&1){y=v;break}ih(b,v)|0;t=w;u=k[e>>2]|0}if((t|0)<(u|0)){q=u;s=t}else break a}s=Rb()|0;q=Q;Sqa(y);z=q;A=s;Qb(A|0)}while(0);k[d>>2]=137052;Lka(c,1,d)}k[j>>2]=0;k[l>>2]=0;Qka(c,j,h,0,134220);d=c+40|0;if((k[d>>2]|0)!=300)Qka(c,l,0,0,136615);y=k[h>>2]|0;if((y|0)<=0){C=k[j>>2]|0;Mka(c,C,134220);D=k[l>>2]|0;Mka(c,D,136615);r=a;return}t=c+36|0;u=c+100|0;e=f+4|0;g=c+104|0;s=y;y=0;q=0;b:while(1){o=q<<1;m=k[j>>2]|0;n=~~+p[m+(o<<3)>>3];w=n+-1|0;do if(!(k[(k[t>>2]|0)+(w<<2)>>2]|0)){E=s;F=y}else{if((k[d>>2]|0)!=300){v=k[l>>2]|0;if(!(+p[v+(w<<3)>>3]!=0.0)){E=s;F=y;break}x=m+((o|1)<<3)|0;if(+p[v+(~~+p[x>>3]+-1<<3)>>3]!=0.0)G=x;else{E=s;F=y;break}}else G=m+((o|1)<<3)|0;x=k[u>>2]|0;k[f>>2]=n+x;k[e>>2]=~~+p[G>>3]+x;x=Qqa(28)|0;v=y+1|0;B=0;ib(298,x|0,v+(k[g>>2]|0)|0,f|0,510);H=B;B=0;if(H&1){I=x;break b}ih(b,x)|0;E=k[h>>2]|0;F=v}while(0);q=q+1|0;if((q|0)>=(E|0)){J=15;break}else{s=E;y=F}}if((J|0)==15){C=k[j>>2]|0;Mka(c,C,134220);D=k[l>>2]|0;Mka(c,D,136615);r=a;return}a=Rb()|0;D=Q;Sqa(I);z=D;A=a;Qb(A|0)}function uea(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;a=r;r=r+208|0;d=a+8|0;e=a;f=a+196|0;g=a+192|0;h=a+56|0;i=a+40|0;j=a+28|0;l=a+16|0;Fka(c,g,132040);m=k[g>>2]|0;n=k[c+40>>2]|0;if(!((m|0)==3&(n|0)==302)){if((n|0)==300)o=m;else{k[e>>2]=136615;k[e+4>>2]=136636;Ska(c,2,e);o=k[g>>2]|0}if((o|0)==3){hoa(b,c,510,739,534);k[d>>2]=136615;p=d+4|0;k[p>>2]=136636;Lka(c,2,d);r=a;return}else{hoa(b,c,510,738,534);k[d>>2]=136615;p=d+4|0;k[p>>2]=136636;Lka(c,2,d);r=a;return}}a=h+56|0;d=h+4|0;k[h>>2]=27524;k[a>>2]=27544;B=0;wa(508,h+56|0,d|0);c=B;B=0;if(c&1){c=Rb()|0;q=Q;s=c;vva(a);Qb(s|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[a>>2]=27488;B=0;va(448,d|0);c=B;B=0;do if(c&1){p=Rb()|0;t=Q;u=p}else{k[d>>2]=27560;p=h+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,d|0,f|0);b=B;B=0;if(b&1){b=Rb()|0;o=Q;Yua(f);Yua(p);Ava(d);t=o;u=b;break}Yua(f);B=0;b=Ia(40,h|0,132101,25)|0;o=B;B=0;if(!(o&1)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,i|0,132127,81);o=B;B=0;do if(!(o&1)){B=0;eb(502,j|0,145111,11);g=B;B=0;if(g&1){g=Rb()|0;e=Q;Yua(i);v=e;w=g;break}B=0;wa(510,l|0,d|0);g=B;B=0;if(g&1){g=Rb()|0;x=Q;y=g;z=1}else{B=0;ua(163,b|0,i|0,j|0,103,l|0);g=B;B=0;if(g&1)A=1;else{B=0;eb(503,b|0,1240,229);B=0;A=0}g=Rb()|0;e=Q;Yua(l);x=e;y=g;z=A}Yua(j);Yua(i);if(z){v=x;w=y}else{C=x;D=y;k[h>>2]=27468;k[a>>2]=27488;k[d>>2]=27560;Yua(p);Ava(d);vva(a);Qb(D|0)}}else{g=Rb()|0;v=Q;w=g}while(0);zb(b|0);C=v;D=w;k[h>>2]=27468;k[a>>2]=27488;k[d>>2]=27560;Yua(p);Ava(d);vva(a);Qb(D|0)}o=Rb()|0;C=Q;D=o;k[h>>2]=27468;k[a>>2]=27488;k[d>>2]=27560;Yua(p);Ava(d);vva(a);Qb(D|0)}while(0);q=t;s=u;vva(a);Qb(s|0)}function vea(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function wea(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0;a=r;r=r+16|0;f=a;g=a+4|0;Fka(c,f,132040);zka(c,a+7|0,134866);zka(c,a+6|0,132209);zka(c,a+5|0,134882);zka(c,g,132238);h=(k[f>>2]|0)==3?739:738;j=c+56|0;l=k[j>>2]|0;if((l|0)>0){m=c+32|0;n=l;l=0;o=0;while(1){if(!(i[(k[m>>2]|0)+o>>0]|0)){p=n;q=l}else{s=qh(b,l)|0;Uc[k[(k[s>>2]|0)+480>>2]&63](s,o,c,d,e,h);p=k[j>>2]|0;q=l+1|0}o=o+1|0;if((o|0)>=(p|0))break;else{n=p;l=q}}}Zka(c,b,137052,353);Zka(c,b,134925,339);Zka(c,b,134945,64);Yka(c,b,137955,999,0.0);Zka(c,b,137867,206);Zka(c,b,134962,928);Zka(c,b,134027,39);Zka(c,b,134069,40);Zka(c,b,135923,674);Zka(c,b,135944,677);if(!(i[g>>0]|0))Zka(c,b,134252,388);g=k[f>>2]|0;if((g|0)==3){Zka(c,b,132071,309);t=k[f>>2]|0}else t=g;if((t|0)==4)Zka(c,b,132071,309);if((k[c+40>>2]|0)==300){r=a;return}Zka(c,b,136615,287);Zka(c,b,136636,288);r=a;return}function xea(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0;e=r;r=r+16|0;d=e+4|0;a=e;k[a>>2]=0;YN(b,Ika(c,132257,99)|0);YN(b,Ika(c,132278,306)|0);YN(b,Ika(c,132309,305)|0);YN(b,Ika(c,132040,310)|0);YN(b,Ika(c,132349,307)|0);YN(b,Ika(c,132380,308)|0);Hka(c,a,d,132412);f=Qqa(12)|0;B=0;eb(518,f|0,312,k[d>>2]|0);g=B;B=0;if(g&1){g=Rb()|0;h=Q;Sqa(f);i=h;j=g;Qb(j|0)}YN(b,f);f=k[d>>2]|0;if(!f){l=0;Nka(c,a,l,132412);r=e;return}g=Qqa(16)|0;B=0;ib(294,g|0,313,k[a>>2]|0,f|0);f=B;B=0;if(f&1){f=Rb()|0;h=Q;Sqa(g);i=h;j=f;Qb(j|0)}else{YN(b,g);l=k[d>>2]|0;Nka(c,a,l,132412);r=e;return}}function yea(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,132127,81);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,198,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function zea(a,b){a=a|0;b=b|0;return 0}function Aea(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,132127,81);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,205,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Bea(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;if(!($p(b)|0)){i=0;r=c;return i|0}if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){i=0;r=c;return i|0}j=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;switch(Hc[k[(k[b>>2]|0)+112>>2]&511](b)|0){case 742:case 738:{l=Cea(a,j)|0;break}case 739:{l=Dea(a,j)|0;break}default:{a=e+56|0;m=e+4|0;k[e>>2]=27524;k[a>>2]=27544;B=0;wa(508,e+56|0,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(a);Qb(p|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[a>>2]=27488;B=0;va(448,m|0);n=B;B=0;do if(n&1){q=Rb()|0;s=Q;t=q}else{k[m>>2]=27560;q=e+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,m|0,d|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(d);Yua(q);Ava(m);s=v;t=u;break}Yua(d);B=0;u=Ia(40,e|0,132447,13)|0;v=B;B=0;if(((((!(v&1)?(B=0,v=ya(k[(k[b>>2]|0)+112>>2]|0,b|0)|0,w=B,B=0,!(w&1)):0)?(B=0,w=ya(427,v|0)|0,v=B,B=0,!(v&1)):0)?(v=Lta(w)|0,B=0,x=Ia(40,u|0,w|0,v|0)|0,v=B,B=0,!(v&1)):0)?(B=0,v=Ia(40,x|0,146481,18)|0,x=B,B=0,!(x&1)):0)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,f|0,132127,81);x=B;B=0;do if(!(x&1)){B=0;eb(502,g|0,144189,13);w=B;B=0;if(w&1){w=Rb()|0;u=Q;Yua(f);y=u;z=w;break}B=0;wa(510,h|0,m|0);w=B;B=0;if(w&1){w=Rb()|0;A=Q;C=w;D=1}else{B=0;ua(163,v|0,f|0,g|0,224,h|0);w=B;B=0;if(w&1)E=1;else{B=0;eb(503,v|0,1240,229);B=0;E=0}w=Rb()|0;u=Q;Yua(h);A=u;C=w;D=E}Yua(g);Yua(f);if(D){y=A;z=C}else{F=A;G=C;k[e>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(a);Qb(G|0)}}else{w=Rb()|0;y=Q;z=w}while(0);zb(v|0);F=y;G=z;k[e>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(a);Qb(G|0)}x=Rb()|0;F=Q;G=x;k[e>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(a);Qb(G|0)}while(0);o=s;p=t;vva(a);Qb(p|0)}}cp(b,d,298);if((k[d>>2]|0)!=300?(ap(j),(j|0)!=0):0)Ec[k[(k[j>>2]|0)+4>>2]&1023](j);i=l;r=c;return i|0}function Cea(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ba=0,ca=0,da=0.0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0.0,ja=0.0,ka=0.0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0;a=r;r=r+448|0;c=a+432|0;d=a+428|0;e=a+424|0;f=a+64|0;g=a+56|0;h=a+48|0;i=a+40|0;j=a+32|0;l=a+16|0;m=a;n=a+420|0;o=a+272|0;q=a+408|0;s=a+256|0;t=a+108|0;u=a+120|0;v=a+96|0;w=a+84|0;x=a+72|0;if(!($p(b)|0)){y=0;r=a;return y|0}k[n>>2]=0;cp(b,e,298);switch(k[e>>2]|0){case 301:{z=1;break}case 300:{z=2;break}case 302:{z=2;break}default:{A=o+56|0;C=o+4|0;k[o>>2]=27524;k[A>>2]=27544;B=0;wa(508,o+56|0,C|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;F=D;vva(A);Qb(F|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[A>>2]=27488;B=0;va(448,C|0);D=B;B=0;do if(D&1){G=Rb()|0;H=Q;I=G}else{k[C>>2]=27560;G=o+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,C|0,c|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(c);Yua(G);Ava(C);H=K;I=J;break}Yua(c);B=0;J=Ia(40,o|0,144639,5)|0;K=B;B=0;a:do if((((!(K&1)?(B=0,L=ya(427,k[e>>2]|0)|0,M=B,B=0,!(M&1)):0)?(M=Lta(L)|0,B=0,N=Ia(40,J|0,L|0,M|0)|0,M=B,B=0,!(M&1)):0)?(B=0,M=Ia(40,N|0,146481,18)|0,N=B,B=0,!(N&1)):0)?(B=0,Xa(239,M|0,0)|0,M=B,B=0,!(M&1)):0){M=Ab(20)|0;B=0;eb(502,q|0,132127,81);N=B;B=0;do if(!(N&1)){B=0;eb(502,s|0,132461,15);L=B;B=0;if(L&1){L=Rb()|0;O=Q;Yua(q);P=L;R=O;break}B=0;wa(510,t|0,C|0);O=B;B=0;if(O&1){O=Rb()|0;S=O;T=Q;U=1}else{B=0;ua(163,M|0,q|0,s|0,251,t|0);O=B;B=0;if(O&1)V=1;else{B=0;eb(503,M|0,1240,229);B=0;V=0}O=Rb()|0;L=Q;Yua(t);S=O;T=L;U=V}Yua(s);Yua(q);if(U){P=S;R=T}else{W=T;X=S;break a}}else{L=Rb()|0;P=L;R=Q}while(0);zb(M|0);W=R;X=P}else Y=23;while(0);if((Y|0)==23){J=Rb()|0;W=Q;X=J}k[o>>2]=27468;k[A>>2]=27488;k[C>>2]=27560;Yua(G);Ava(C);vva(A);Z=W;_=X;Qb(_|0)}while(0);E=H;F=I;vva(A);Qb(F|0)}}F=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;A=gq(b,534)|0;I=Rqa(F>>>0>536870911?-1:F<<3)|0;H=ma(F,z)|0;E=H>>>0>536870911?-1:H<<3;H=Rqa(E)|0;X=Rqa(E)|0;E=ma(z,z)|0;W=E<<3;C=Rqa(W)|0;if(E)WEa(C|0,0,W|0)|0;Uo(b,n);pp(b,h,358);cp(b,e,298);cp(b,d,310);b:do if((k[e>>2]|0)==300){W=Wo(b,674)|0;ba=W;ca=Wo(b,677)|0}else switch(z|0){case 1:{ba=Wo(b,674)|0;ca=0;break b;break}case 2:{ba=Wo(b,673)|0;ca=Wo(b,676)|0;break b;break}default:{ba=0;ca=0;break b}}while(0);da=+Zc[k[(k[b>>2]|0)+72>>2]&255](b);e=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;W=Hc[k[(k[e>>2]|0)+8>>2]&511](e)|0;c:do if((W|0)<(Hc[k[(k[e>>2]|0)+12>>2]&511](e)|0)){E=(z|0)==2;o=e+8|0;P=A+12|0;R=m+8|0;S=C+(z+1<<3)|0;T=(z|0)==1;U=C+(z<<3)|0;q=C+8|0;ea=da*.5;fa=0.0;s=W;d:while(1){Fc[k[(k[e>>2]|0)+24>>2]&1023](e,s);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[n>>2]|0,e);nd[k[(k[b>>2]|0)+336>>2]&1023](b,I,e);nd[k[(k[ba>>2]|0)+48>>2]&1023](ba,i,e);rd[k[(k[ba>>2]|0)+60>>2]&511](ba,l,k[n>>2]|0,e);if(E){nd[k[(k[ca>>2]|0)+48>>2]&1023](ca,j,e);rd[k[(k[ca>>2]|0)+60>>2]&511](ca,m,k[n>>2]|0,e)}p[g>>3]=+p[o>>3]*+p[f>>3];ZX(I,1,F,1,g,1,1,0,I,1,F,0,k[P>>2]|0,1)|0;V=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;t=Rqa(V>>>0>536870911?-1:V<<3)|0;nd[k[(k[b>>2]|0)+336>>2]&1023](b,t,e);if((V|0)>0){D=0;do{ga=+p[t+(D<<3)>>3];J=0;do{K=H+((ma(J,V)|0)+D<<3)|0;p[K>>3]=ga;J=J+1|0}while((J|0)!=(z|0));D=D+1|0}while((D|0)!=(V|0))}Tqa(t);V=k[n>>2]|0;D=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;M=ma(D,z)|0;J=Rqa(M>>>0>536870911?-1:M<<3)|0;rd[k[(k[b>>2]|0)+340>>2]&511](b,J,V,e);if((D|0)>0){V=0;do{M=0;do{K=(ma(M,D)|0)+V|0;p[X+(K<<3)>>3]=+p[J+(K<<3)>>3];M=M+1|0}while((M|0)!=(z|0));V=V+1|0}while((V|0)!=(D|0))}Tqa(J);ga=+p[l>>3];fa=E?+p[R>>3]:fa;ha=+p[h>>3]*+p[o>>3]*+p[f>>3];p[g>>3]=ha;p[C>>3]=ga*ha;if(E){p[S>>3]=fa*ha;ZX(H,2,F,1,C,2,2,0,H,2,F,0,k[P>>2]|0,1)|0;ha=+p[g>>3];p[C>>3]=ha*+p[i>>3];p[S>>3]=ha*+p[j>>3]}else{ZX(H,z,F,1,C,z,z,0,H,z,F,0,k[P>>2]|0,1)|0;p[C>>3]=+p[g>>3]*+p[i>>3]}ZX(H,z,F,1,C,z,z,0,X,z,F,0,k[P>>2]|0,1)|0;e:do switch(k[d>>2]|0){case 0:break;case 1:{Fc[k[(k[ba>>2]|0)+64>>2]&1023](ba,i);if(E){Fc[k[(k[ca>>2]|0)+64>>2]&1023](ca,j);ha=ea*+$(+(+p[i>>3]));p[C>>3]=ha;ha=ea*+$(+(+p[j>>3]));p[S>>3]=ha;break e}else{ha=ea*+$(+(+p[i>>3]));p[C>>3]=ha;break e}break}case 2:{ha=+p[i>>3];if(T){ga=ha*(ha*(da/((+$(+ha)+1.0e-08)*2.0)));p[C>>3]=ga;break e}else{ga=+p[j>>3];ia=da/((+aa(+(ha*ha+ga*ga))+1.0e-08)*2.0);ja=ha*ia;p[C>>3]=ha*ja;ka=ga*ia;p[U>>3]=ha*ka;p[q>>3]=ja*ga;p[S>>3]=ga*ka;break e}break}default:break d}while(0);if(((k[d>>2]|0)+-1|0)>>>0<2){ka=+p[g>>3];p[C>>3]=ka*+p[C>>3];if(!T){p[U>>3]=ka*+p[U>>3];p[q>>3]=ka*+p[q>>3];p[S>>3]=ka*+p[S>>3]}ZX(X,z,F,1,C,z,z,0,X,z,F,0,k[P>>2]|0,1)|0}s=s+1|0;if((s|0)>=(Hc[k[(k[e>>2]|0)+12>>2]&511](e)|0))break c}s=u+56|0;P=u+4|0;k[u>>2]=27524;k[s>>2]=27544;B=0;wa(508,u+56|0,P|0);S=B;B=0;if(S&1){S=Rb()|0;la=Q;na=S;vva(s);Qb(na|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[s>>2]=27488;B=0;va(448,P|0);S=B;B=0;do if(S&1){q=Rb()|0;oa=Q;pa=q}else{k[P>>2]=27560;q=u+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[u+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,P|0,c|0);U=B;B=0;if(U&1){U=Rb()|0;T=Q;Yua(c);Yua(q);Ava(P);oa=T;pa=U;break}Yua(c);B=0;U=Ia(40,u|0,132477,14)|0;T=B;B=0;f:do if(((!(T&1)?(B=0,E=Xa(242,U|0,k[d>>2]|0)|0,o=B,B=0,!(o&1)):0)?(B=0,o=Ia(40,E|0,146481,18)|0,E=B,B=0,!(E&1)):0)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,v|0,132127,81);E=B;B=0;do if(!(E&1)){B=0;eb(502,w|0,132461,15);R=B;B=0;if(R&1){R=Rb()|0;G=Q;Yua(v);qa=R;ra=G;break}B=0;wa(510,x|0,P|0);G=B;B=0;if(G&1){G=Rb()|0;sa=1;ta=Q;xa=G}else{B=0;ua(163,o|0,v|0,w|0,357,x|0);G=B;B=0;if(G&1)za=1;else{B=0;eb(503,o|0,1240,229);B=0;za=0}G=Rb()|0;R=Q;Yua(x);sa=za;ta=R;xa=G}Yua(w);Yua(v);if(sa){qa=xa;ra=ta}else{Aa=ta;Ba=xa;break f}}else{G=Rb()|0;qa=G;ra=Q}while(0);zb(o|0);Aa=ra;Ba=qa}else Y=78;while(0);if((Y|0)==78){U=Rb()|0;Aa=Q;Ba=U}k[u>>2]=27468;k[s>>2]=27488;k[P>>2]=27560;Yua(q);Ava(P);vva(s);Z=Aa;_=Ba;Qb(_|0)}while(0);la=oa;na=pa;vva(s);Qb(na|0)}while(0);na=k[n>>2]|0;if(na)Tqa(na);k[n>>2]=0;Tqa(I);Tqa(H);Tqa(X);Tqa(C);Ec[k[(k[e>>2]|0)+4>>2]&1023](e);y=A;r=a;return y|0}function Dea(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0,F=0;a=r;r=r+80|0;c=a+76|0;d=a+64|0;e=a+56|0;f=a+48|0;g=a+40|0;h=a+32|0;i=a+72|0;j=a;if(!($p(b)|0)){l=0;r=a;return l|0}k[i>>2]=0;m=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;n=gq(b,534)|0;o=Rqa(m>>>0>536870911?-1:m<<3)|0;q=m<<1;s=q>>>0>536870911?-1:q<<3;q=Rqa(s)|0;t=Rqa(s)|0;Uo(b,i);pp(b,f,358);cp(b,c,298);if((k[c>>2]|0)==300){c=Wo(b,674)|0;u=c;v=Wo(b,677)|0}else{c=Wo(b,673)|0;u=c;v=Wo(b,676)|0}c=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;s=Hc[k[(k[c>>2]|0)+8>>2]&511](c)|0;if((s|0)<(Hc[k[(k[c>>2]|0)+12>>2]&511](c)|0)){w=c+8|0;x=n+12|0;y=j+8|0;z=j+24|0;A=s;do{Fc[k[(k[c>>2]|0)+24>>2]&1023](c,A);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[i>>2]|0,c);nd[k[(k[b>>2]|0)+336>>2]&1023](b,o,c);nd[k[(k[u>>2]|0)+48>>2]&1023](u,g,c);nd[k[(k[v>>2]|0)+48>>2]&1023](v,h,c);p[e>>3]=+p[w>>3]*+p[d>>3];ZX(o,1,m,1,e,1,1,0,o,1,m,0,k[x>>2]|0,1)|0;s=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;B=Rqa(s>>>0>536870911?-1:s<<3)|0;nd[k[(k[b>>2]|0)+336>>2]&1023](b,B,c);if((s|0)>0){C=0;do{D=+p[B+(C<<3)>>3];p[t+(C<<3)>>3]=D;p[t+(s+C<<3)>>3]=D;C=C+1|0}while((C|0)!=(s|0))}Tqa(B);s=k[i>>2]|0;C=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;E=C<<1;F=Rqa(E>>>0>536870911?-1:E<<3)|0;rd[k[(k[b>>2]|0)+340>>2]&511](b,F,s,c);if((C|0)>0){s=0;do{p[q+(s<<3)>>3]=+p[F+(s<<3)>>3];E=C+s|0;p[q+(E<<3)>>3]=+p[F+(E<<3)>>3];s=s+1|0}while((s|0)!=(C|0))}Tqa(F);D=-(+p[f>>3]*+p[w>>3]*+p[d>>3]);p[e>>3]=D;p[j>>3]=+p[g>>3]*D;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;p[z>>3]=+p[h>>3]*D;ZX(q,2,m,1,j,2,2,0,t,2,m,0,k[x>>2]|0,1)|0;A=A+1|0}while((A|0)<(Hc[k[(k[c>>2]|0)+12>>2]&511](c)|0))}A=k[i>>2]|0;if(A)Tqa(A);k[i>>2]=0;Tqa(o);Tqa(q);Tqa(t);Ec[k[(k[c>>2]|0)+4>>2]&1023](c);l=n;r=a;return l|0}function Eea(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;if(!($p(b)|0)){h=0;r=a;return h|0}if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){h=0;r=a;return h|0}i=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;switch(Hc[k[(k[b>>2]|0)+112>>2]&511](b)|0){case 742:case 738:{j=Fea(0,i)|0;break}case 739:{j=Gea(0,i)|0;break}default:{l=d+56|0;m=d+4|0;k[d>>2]=27524;k[l>>2]=27544;B=0;wa(508,d+56|0,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(l);Qb(p|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[l>>2]=27488;B=0;va(448,m|0);n=B;B=0;do if(n&1){q=Rb()|0;s=Q;t=q}else{k[m>>2]=27560;q=d+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,m|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(c);Yua(q);Ava(m);s=v;t=u;break}Yua(c);B=0;u=Ia(40,d|0,132447,13)|0;v=B;B=0;if(((((!(v&1)?(B=0,v=ya(k[(k[b>>2]|0)+112>>2]|0,b|0)|0,w=B,B=0,!(w&1)):0)?(B=0,w=ya(427,v|0)|0,v=B,B=0,!(v&1)):0)?(v=Lta(w)|0,B=0,x=Ia(40,u|0,w|0,v|0)|0,v=B,B=0,!(v&1)):0)?(B=0,v=Ia(40,x|0,146481,18)|0,x=B,B=0,!(x&1)):0)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,e|0,132127,81);x=B;B=0;do if(!(x&1)){B=0;eb(502,f|0,144203,13);w=B;B=0;if(w&1){w=Rb()|0;u=Q;Yua(e);y=u;z=w;break}B=0;wa(510,g|0,m|0);w=B;B=0;if(w&1){w=Rb()|0;A=Q;C=w;D=1}else{B=0;ua(163,v|0,e|0,f|0,477,g|0);w=B;B=0;if(w&1)E=1;else{B=0;eb(503,v|0,1240,229);B=0;E=0}w=Rb()|0;u=Q;Yua(g);A=u;C=w;D=E}Yua(f);Yua(e);if(D){y=A;z=C}else{F=A;G=C;k[d>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);Qb(G|0)}}else{w=Rb()|0;y=Q;z=w}while(0);zb(v|0);F=y;G=z;k[d>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);Qb(G|0)}x=Rb()|0;F=Q;G=x;k[d>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);Qb(G|0)}while(0);o=s;p=t;vva(l);Qb(p|0)}}cp(b,c,298);if((k[c>>2]|0)!=300?(ap(i),(i|0)!=0):0)Ec[k[(k[i>>2]|0)+4>>2]&1023](i);h=j;r=a;return h|0}function Fea(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0,E=0;a=r;r=r+64|0;c=a+48|0;d=a+40|0;e=a+32|0;f=a+24|0;g=a+16|0;h=a+8|0;i=a;j=a+56|0;if(!($p(b)|0)){l=0;r=a;return l|0}k[j>>2]=0;m=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;n=iq(b,534)|0;o=Rqa(m>>>0>536870911?-1:m<<3)|0;Uo(b,j);pp(b,d,358);q=Wo(b,39)|0;s=Wo(b,40)|0;t=Wo(b,928)|0;u=Wo(b,388)|0;v=Wo(b,353)|0;w=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;x=Hc[k[(k[w>>2]|0)+8>>2]&511](w)|0;a:do if((x|0)<(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0)){y=w+8|0;z=n+4|0;if((m|0)>0)A=x;else{B=x;while(1){Fc[k[(k[w>>2]|0)+24>>2]&1023](w,B);rd[k[(k[b>>2]|0)+260>>2]&511](b,c,k[j>>2]|0,w);nd[k[(k[b>>2]|0)+336>>2]&1023](b,o,w);nd[k[(k[u>>2]|0)+48>>2]&1023](u,e,w);nd[k[(k[q>>2]|0)+48>>2]&1023](q,f,w);nd[k[(k[s>>2]|0)+48>>2]&1023](s,g,w);nd[k[(k[t>>2]|0)+48>>2]&1023](t,i,w);nd[k[(k[v>>2]|0)+48>>2]&1023](v,h,w);B=B+1|0;if((B|0)>=(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0))break a}}do{Fc[k[(k[w>>2]|0)+24>>2]&1023](w,A);rd[k[(k[b>>2]|0)+260>>2]&511](b,c,k[j>>2]|0,w);nd[k[(k[b>>2]|0)+336>>2]&1023](b,o,w);nd[k[(k[u>>2]|0)+48>>2]&1023](u,e,w);nd[k[(k[q>>2]|0)+48>>2]&1023](q,f,w);nd[k[(k[s>>2]|0)+48>>2]&1023](s,g,w);nd[k[(k[t>>2]|0)+48>>2]&1023](t,i,w);nd[k[(k[v>>2]|0)+48>>2]&1023](v,h,w);C=+p[i>>3]>0.0?+p[f>>3]:+p[g>>3];B=k[z>>2]|0;D=0;do{E=B+(D<<3)|0;p[E>>3]=+p[E>>3]+ +p[o+(D<<3)>>3]*(+p[c>>3]*+p[y>>3]*(+p[h>>3]+ +p[d>>3]*(+p[e>>3]-C)));D=D+1|0}while((D|0)!=(m|0));A=A+1|0}while((A|0)<(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0))}while(0);A=k[j>>2]|0;if(A)Tqa(A);k[j>>2]=0;Tqa(o);Ec[k[(k[w>>2]|0)+4>>2]&1023](w);l=n;r=a;return l|0}function Gea(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0,E=0;a=r;r=r+64|0;c=a+48|0;d=a+40|0;e=a+32|0;f=a+24|0;g=a+16|0;h=a+8|0;i=a;j=a+56|0;if(!($p(b)|0)){l=0;r=a;return l|0}k[j>>2]=0;m=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;n=iq(b,534)|0;o=Rqa(m>>>0>536870911?-1:m<<3)|0;Uo(b,j);pp(b,d,358);q=Wo(b,39)|0;s=Wo(b,40)|0;t=Wo(b,388)|0;u=Wo(b,928)|0;v=Wo(b,353)|0;w=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;x=Hc[k[(k[w>>2]|0)+8>>2]&511](w)|0;a:do if((x|0)<(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0)){y=w+8|0;z=n+4|0;if((m|0)>0)A=x;else{B=x;while(1){Fc[k[(k[w>>2]|0)+24>>2]&1023](w,B);rd[k[(k[b>>2]|0)+260>>2]&511](b,c,k[j>>2]|0,w);nd[k[(k[b>>2]|0)+336>>2]&1023](b,o,w);nd[k[(k[t>>2]|0)+48>>2]&1023](t,e,w);nd[k[(k[q>>2]|0)+48>>2]&1023](q,f,w);nd[k[(k[s>>2]|0)+48>>2]&1023](s,g,w);nd[k[(k[u>>2]|0)+48>>2]&1023](u,i,w);nd[k[(k[v>>2]|0)+48>>2]&1023](v,h,w);B=B+1|0;if((B|0)>=(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0))break a}}do{Fc[k[(k[w>>2]|0)+24>>2]&1023](w,A);rd[k[(k[b>>2]|0)+260>>2]&511](b,c,k[j>>2]|0,w);nd[k[(k[b>>2]|0)+336>>2]&1023](b,o,w);nd[k[(k[t>>2]|0)+48>>2]&1023](t,e,w);nd[k[(k[q>>2]|0)+48>>2]&1023](q,f,w);nd[k[(k[s>>2]|0)+48>>2]&1023](s,g,w);nd[k[(k[u>>2]|0)+48>>2]&1023](u,i,w);nd[k[(k[v>>2]|0)+48>>2]&1023](v,h,w);C=+p[i>>3]>0.0?+p[f>>3]:+p[g>>3];B=k[z>>2]|0;D=0;do{E=B+(D<<3)|0;p[E>>3]=+p[E>>3]+ +p[o+(D<<3)>>3]*(+p[c>>3]*+p[y>>3]*(+p[h>>3]+ +p[d>>3]*(+p[e>>3]-C)));D=D+1|0}while((D|0)!=(m|0));A=A+1|0}while((A|0)<(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0))}while(0);A=k[j>>2]|0;if(A)Tqa(A);k[j>>2]=0;Tqa(o);Ec[k[(k[w>>2]|0)+4>>2]&1023](w);l=n;r=a;return l|0}function Hea(a,b,c){a=a|0;b=b|0;c=c|0;nd[k[(k[c>>2]|0)+176>>2]&1023](c,b,353);return}function Iea(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,132127,81);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,648,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function Jea(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0,O=0.0,P=0,R=0.0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0.0,Ja=0.0,Ka=0.0,La=0.0,Ma=0.0,Na=0.0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0;a=r;r=r+560|0;d=a+540|0;e=a+536|0;f=a+532|0;g=a+528|0;h=a;i=a+368|0;j=a+516|0;l=a+504|0;m=a+216|0;n=a+232|0;o=a+68|0;q=a+56|0;s=a+44|0;u=a+80|0;v=a+32|0;w=a+20|0;x=a+8|0;k[g>>2]=0;cp(c,f,298);do if((k[f>>2]|0)!=300)if(Hc[k[(k[c>>2]|0)+248>>2]&511](c)|0){y=Hc[k[(k[c>>2]|0)+432>>2]&511](c)|0;break}else{r=a;return}else y=c;while(0);z=Hc[k[(k[y>>2]|0)+164>>2]&511](y)|0;rp(y,g,534,943);A=z>>>0>536870911?-1:z<<3;C=Rqa(A)|0;D=Rqa(A)|0;E=Rqa(A)|0;F=Rqa(A)|0;G=Rqa(A)|0;H=Rqa(A)|0;I=Rqa(A)|0;J=Rqa(A)|0;K=Rqa(A)|0;pp(y,h,307);A=(z|0)>0;do if(A){L=k[g>>2]|0;M=+p[h>>3];N=0;while(1){O=+p[b+(k[L+(N<<2)>>2]<<3)>>3];P=C+(N<<3)|0;p[P>>3]=O;R=+$(+O);p[t>>3]=R;S=k[t>>2]|0;T=k[t+4>>2]|0;if(T>>>0>2146435072|(T|0)==2146435072&S>>>0>0){U=7;break}if((S|0)==0&(T|0)==2146435072){U=31;break}if(O<M)p[P>>3]=M;N=N+1|0;if((N|0)>=(z|0)){U=57;break}}if((U|0)==7){N=i+56|0;L=i+4|0;k[i>>2]=27524;k[N>>2]=27544;B=0;wa(508,i+56|0,L|0);P=B;B=0;if(P&1){P=Rb()|0;V=Q;W=P;vva(N);Qb(W|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[N>>2]=27488;B=0;va(448,L|0);P=B;B=0;do if(P&1){T=Rb()|0;X=Q;Y=T}else{k[L>>2]=27560;T=i+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,L|0,d|0);S=B;B=0;if(S&1){S=Rb()|0;Z=Q;Yua(d);Yua(T);Ava(L);X=Z;Y=S;break}Yua(d);B=0;S=Ia(40,i|0,135564,28)|0;Z=B;B=0;a:do if(!(Z&1)?(B=0,Xa(239,S|0,0)|0,_=B,B=0,!(_&1)):0){_=Ab(20)|0;B=0;eb(502,j|0,132127,81);aa=B;B=0;do if(!(aa&1)){B=0;eb(502,l|0,137199,23);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;Yua(j);da=ca;ea=ba;break}B=0;wa(510,m|0,L|0);ba=B;B=0;if(ba&1){ba=Rb()|0;fa=ba;ga=Q;ha=1}else{B=0;ua(163,_|0,j|0,l|0,685,m|0);ba=B;B=0;if(ba&1)ia=1;else{B=0;eb(503,_|0,1240,229);B=0;ia=0}ba=Rb()|0;ca=Q;Yua(m);fa=ba;ga=ca;ha=ia}Yua(l);Yua(j);if(ha){da=ga;ea=fa}else{ja=ga;ka=fa;break a}}else{ca=Rb()|0;da=Q;ea=ca}while(0);zb(_|0);ja=da;ka=ea}else U=22;while(0);if((U|0)==22){S=Rb()|0;ja=Q;ka=S}k[i>>2]=27468;k[N>>2]=27488;k[L>>2]=27560;Yua(T);Ava(L);vva(N);la=ja;ma=ka;Qb(ma|0)}while(0);V=X;W=Y;vva(N);Qb(W|0)}else if((U|0)==31){L=n+56|0;P=n+4|0;k[n>>2]=27524;k[L>>2]=27544;B=0;wa(508,n+56|0,P|0);S=B;B=0;if(S&1){S=Rb()|0;na=Q;oa=S;vva(L);Qb(oa|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[L>>2]=27488;B=0;va(448,P|0);S=B;B=0;do if(S&1){Z=Rb()|0;pa=Q;qa=Z}else{k[P>>2]=27560;Z=n+36|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[n+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,P|0,d|0);aa=B;B=0;if(aa&1){aa=Rb()|0;ca=Q;Yua(d);Yua(Z);Ava(P);pa=ca;qa=aa;break}Yua(d);B=0;aa=Ia(40,n|0,135593,28)|0;ca=B;B=0;b:do if(!(ca&1)?(B=0,Xa(239,aa|0,0)|0,ba=B,B=0,!(ba&1)):0){ba=Ab(20)|0;B=0;eb(502,o|0,132127,81);ra=B;B=0;do if(!(ra&1)){B=0;eb(502,q|0,137199,23);sa=B;B=0;if(sa&1){sa=Rb()|0;ta=Q;Yua(o);xa=sa;za=ta;break}B=0;wa(510,s|0,P|0);ta=B;B=0;if(ta&1){ta=Rb()|0;Aa=1;Ba=Q;Ca=ta}else{B=0;ua(163,ba|0,o|0,q|0,686,s|0);ta=B;B=0;if(ta&1)Da=1;else{B=0;eb(503,ba|0,1240,229);B=0;Da=0}ta=Rb()|0;sa=Q;Yua(s);Aa=Da;Ba=sa;Ca=ta}Yua(q);Yua(o);if(Aa){xa=Ca;za=Ba}else{Ea=Ba;Fa=Ca;break b}}else{ta=Rb()|0;xa=ta;za=Q}while(0);zb(ba|0);Ea=za;Fa=xa}else U=46;while(0);if((U|0)==46){aa=Rb()|0;Ea=Q;Fa=aa}k[n>>2]=27468;k[L>>2]=27488;k[P>>2]=27560;Yua(Z);Ava(P);vva(L);la=Ea;ma=Fa;Qb(ma|0)}while(0);na=pa;oa=qa;vva(L);Qb(oa|0)}else if((U|0)==57){vp(y,H,64);vp(y,I,339);vp(y,G,353);vp(y,J,928);vp(y,K,999);if(A)Ga=0;else break;do{p[D+(Ga<<3)>>3]=+p[C+(Ga<<3)>>3]-+p[G+(Ga<<3)>>3];Ga=Ga+1|0}while((Ga|0)!=(z|0))}}else{vp(y,H,64);vp(y,I,339);vp(y,G,353);vp(y,J,928);vp(y,K,999)}while(0);cp(y,e,305);M=+Dp(y,265);O=+Dp(y,266);c:do if(A){Ga=k[e>>2]|0;R=M/O;Ha=1.0-R;Ja=-M/O;if((Ga|0)==914){oa=0;while(1){if(+p[J+(oa<<3)>>3]>0.0){Ka=+p[H+(oa<<3)>>3];La=Ka;Ma=Ka+ +p[C+(oa<<3)>>3]}else{Ka=+p[C+(oa<<3)>>3];Na=+p[K+(oa<<3)>>3];La=Ja*Ka+Na;Ma=Ha*Ka+Na}p[F+(oa<<3)>>3]=Ma;p[E+(oa<<3)>>3]=La;oa=oa+1|0;if((oa|0)==(z|0))break c}}oa=(Ga|0)==915;qa=0;while(1){if(+p[J+(qa<<3)>>3]>0.0){Ja=+p[H+(qa<<3)>>3];p[F+(qa<<3)>>3]=Ja+ +p[C+(qa<<3)>>3];p[E+(qa<<3)>>3]=Ja}else{if(!oa)break;Ja=+p[C+(qa<<3)>>3]-+p[G+(qa<<3)>>3];Na=+p[K+(qa<<3)>>3];p[F+(qa<<3)>>3]=Na+(+p[I+(qa<<3)>>3]+Ha*Ja);p[E+(qa<<3)>>3]=Na+(+p[H+(qa<<3)>>3]-R*Ja)}qa=qa+1|0;if((qa|0)>=(z|0))break c}qa=u+56|0;oa=u+4|0;k[u>>2]=27524;k[qa>>2]=27544;B=0;wa(508,u+56|0,oa|0);Ga=B;B=0;if(Ga&1){Ga=Rb()|0;Oa=Q;Pa=Ga;vva(qa);Qb(Pa|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[qa>>2]=27488;B=0;va(448,oa|0);Ga=B;B=0;do if(Ga&1){pa=Rb()|0;Qa=Q;Ra=pa}else{k[oa>>2]=27560;pa=u+36|0;k[pa>>2]=0;k[pa+4>>2]=0;k[pa+8>>2]=0;k[pa+12>>2]=0;k[u+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,oa|0,d|0);na=B;B=0;if(na&1){na=Rb()|0;Fa=Q;Yua(d);Yua(pa);Ava(oa);Qa=Fa;Ra=na;break}Yua(d);B=0;na=Ia(40,u|0,132492,23)|0;Fa=B;B=0;d:do if((((((!(Fa&1)?(B=0,Ea=Xa(242,na|0,k[e>>2]|0)|0,n=B,B=0,!(n&1)):0)?(B=0,n=Ia(40,Ea|0,144166,2)|0,Ea=B,B=0,!(Ea&1)):0)?(B=0,Ea=ya(427,k[e>>2]|0)|0,xa=B,B=0,!(xa&1)):0)?(xa=Lta(Ea)|0,B=0,za=Ia(40,n|0,Ea|0,xa|0)|0,xa=B,B=0,!(xa&1)):0)?(B=0,xa=Ia(40,za|0,144169,19)|0,za=B,B=0,!(za&1)):0)?(B=0,Xa(239,xa|0,0)|0,xa=B,B=0,!(xa&1)):0){xa=Ab(20)|0;B=0;eb(502,v|0,132127,81);za=B;B=0;do if(!(za&1)){B=0;eb(502,w|0,137199,23);Ea=B;B=0;if(Ea&1){Ea=Rb()|0;n=Q;Yua(v);Sa=Ea;Ta=n;break}B=0;wa(510,x|0,oa|0);n=B;B=0;if(n&1){n=Rb()|0;Ua=1;Va=Q;Wa=n}else{B=0;ua(163,xa|0,v|0,w|0,720,x|0);n=B;B=0;if(n&1)Ya=1;else{B=0;eb(503,xa|0,1240,229);B=0;Ya=0}n=Rb()|0;Ea=Q;Yua(x);Ua=Ya;Va=Ea;Wa=n}Yua(w);Yua(v);if(Ua){Sa=Wa;Ta=Va}else{Za=Va;_a=Wa;break d}}else{n=Rb()|0;Sa=n;Ta=Q}while(0);zb(xa|0);Za=Ta;_a=Sa}else U=91;while(0);if((U|0)==91){na=Rb()|0;Za=Q;_a=na}k[u>>2]=27468;k[qa>>2]=27488;k[oa>>2]=27560;Yua(pa);Ava(oa);vva(qa);la=Za;ma=_a;Qb(ma|0)}while(0);Oa=Qa;Pa=Ra;vva(qa);Qb(Pa|0)}while(0);rd[k[(k[c>>2]|0)+44>>2]&511](c,353,C,738);rd[k[(k[c>>2]|0)+44>>2]&511](c,1001,D,738);rd[k[(k[c>>2]|0)+44>>2]&511](c,339,F,738);rd[k[(k[c>>2]|0)+44>>2]&511](c,64,E,738);Tqa(C);Tqa(E);Tqa(F);Tqa(G);Tqa(D);Tqa(H);Tqa(I);Tqa(J);Tqa(K);K=k[g>>2]|0;if(K)Tqa(K);k[g>>2]=0;if((k[f>>2]|0)==300){r=a;return}ap(y);if(!y){r=a;return}Ec[k[(k[y>>2]|0)+4>>2]&1023](y);r=a;return}function Kea(a,b){a=a|0;b=b|0;RZ(b);return}function Lea(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0,B=0;a=r;r=r+32|0;c=a+16|0;d=a+8|0;e=a;f=a+24|0;if(!($p(b)|0)){g=0;r=a;return g|0}k[f>>2]=0;h=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;i=gq(b,534)|0;j=h<<1;l=j>>>0>536870911?-1:j<<3;j=Rqa(l)|0;m=Rqa(l)|0;l=Rqa(32)|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[l+16>>2]=0;k[l+20>>2]=0;k[l+24>>2]=0;k[l+28>>2]=0;Uo(b,f);n=Wo(b,674)|0;o=Wo(b,677)|0;q=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;s=Hc[k[(k[q>>2]|0)+8>>2]&511](q)|0;if((s|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0)){t=q+8|0;u=l+24|0;v=i+12|0;w=s;do{Fc[k[(k[q>>2]|0)+24>>2]&1023](q,w);rd[k[(k[b>>2]|0)+260>>2]&511](b,c,k[f>>2]|0,q);s=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;x=Rqa(s>>>0>536870911?-1:s<<3)|0;nd[k[(k[b>>2]|0)+336>>2]&1023](b,x,q);if((s|0)>0){y=0;do{z=+p[x+(y<<3)>>3];p[j+(y<<3)>>3]=z;p[j+(s+y<<3)>>3]=z;y=y+1|0}while((y|0)!=(s|0))}Tqa(x);s=k[f>>2]|0;y=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;A=y<<1;B=Rqa(A>>>0>536870911?-1:A<<3)|0;rd[k[(k[b>>2]|0)+340>>2]&511](b,B,s,q);if((y|0)>0){s=0;do{p[m+(s<<3)>>3]=+p[B+(s<<3)>>3];A=y+s|0;p[m+(A<<3)>>3]=+p[B+(A<<3)>>3];s=s+1|0}while((s|0)!=(y|0))}Tqa(B);nd[k[(k[n>>2]|0)+48>>2]&1023](n,d,q);nd[k[(k[o>>2]|0)+48>>2]&1023](o,e,q);z=+p[c>>3];p[l>>3]=-(+p[t>>3]*+p[d>>3]*z);p[u>>3]=-(+p[t>>3]*+p[e>>3]*z);ZX(j,2,h,1,l,2,2,0,m,2,h,0,k[v>>2]|0,1)|0;w=w+1|0}while((w|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0))}w=k[f>>2]|0;if(w)Tqa(w);k[f>>2]=0;Tqa(j);Tqa(m);Tqa(l);Ec[k[(k[q>>2]|0)+4>>2]&1023](q);g=i;r=a;return g|0}function Mea(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;a=r;r=r+32|0;c=a+8|0;d=a;e=a+16|0;if(!($p(b)|0)){f=0;r=a;return f|0}k[e>>2]=0;g=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;h=gq(b,534)|0;i=Rqa(g>>>0>536870911?-1:g<<3)|0;Uo(b,e);j=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;l=Hc[k[(k[j>>2]|0)+8>>2]&511](j)|0;if((l|0)<(Hc[k[(k[j>>2]|0)+12>>2]&511](j)|0)){m=j+8|0;n=h+12|0;o=l;do{Fc[k[(k[j>>2]|0)+24>>2]&1023](j,o);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[e>>2]|0,j);nd[k[(k[b>>2]|0)+336>>2]&1023](b,i,j);p[c>>3]=+p[m>>3]*+p[d>>3];ZX(i,1,g,1,c,1,1,0,i,1,g,0,k[n>>2]|0,1)|0;o=o+1|0}while((o|0)<(Hc[k[(k[j>>2]|0)+12>>2]&511](j)|0))}o=k[e>>2]|0;if(o)Tqa(o);k[e>>2]=0;Tqa(i);Ec[k[(k[j>>2]|0)+4>>2]&1023](j);f=h;r=a;return f|0}function Nea(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;a=r;r=r+16|0;e=a+4|0;f=a;k[e>>2]=0;k[f>>2]=0;loa(e,f,0,0,d);g=d+20|0;if((th(k[g>>2]|0)|0)>0){d=0;do{h=Lea(0,qh(k[g>>2]|0,d)|0)|0;if(h){IN(h,k[e>>2]|0,k[f>>2]|0);HN(h);Sqa(h)}d=d+1|0}while((d|0)<(th(k[g>>2]|0)|0))}g=k[e>>2]|0;if(k[g>>2]|0){d=k[k[g+4>>2]>>2]|0;Ec[k[(k[d>>2]|0)+12>>2]&1023](d)}d=k[f>>2]|0;if(!(k[d>>2]|0))i=d;else{g=k[k[d+4>>2]>>2]|0;Ec[k[(k[g>>2]|0)+12>>2]&1023](g);i=k[f>>2]|0}k[b>>2]=k[e>>2];if(c){k[c>>2]=i;r=a;return}if(!i){r=a;return}if((k[i>>2]|0)!=0?(c=k[i+4>>2]|0,(c|0)!=0):0){e=k[c>>2]|0;if(e)Ec[k[(k[e>>2]|0)+4>>2]&1023](e);Sqa(c)}Sqa(i);r=a;return}function Oea(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;a=r;r=r+16|0;d=a;cO(k[c+44>>2]|0,d,478);e=c+24|0;f=en(k[e>>2]|0,k[d>>2]|0,937)|0;g=fn(k[e>>2]|0,k[d>>2]|0,937)|0;d=Qqa(8)|0;B=0;va(485,d|0);e=B;B=0;a:do if(!(e&1)){do if(k[d>>2]|0){B=0;h=ya(423,4)|0;i=B;B=0;if(i&1)break a;B=0;eb(525,h|0,g|0,f|0);i=B;B=0;if(!(i&1)){k[d+4>>2]=h;break}i=Rb()|0;j=Q;Sqa(h);l=j;m=i;Sqa(d);Qb(m|0)}while(0);i=c+20|0;if((th(k[i>>2]|0)|0)>0){j=0;do{h=Mea(0,qh(k[i>>2]|0,j)|0)|0;if(h){LN(h);KN(h,d);HN(h);Sqa(h)}j=j+1|0}while((j|0)<(th(k[i>>2]|0)|0))}if(!(k[d>>2]|0)){k[b>>2]=d;r=a;return}i=k[k[d+4>>2]>>2]|0;Ec[k[(k[i>>2]|0)+12>>2]&1023](i);k[b>>2]=d;r=a;return}while(0);a=Rb()|0;l=Q;m=a;Sqa(d);Qb(m|0)}function Pea(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a=r;r=r+16|0;d=a;k[d>>2]=0;loa(d,0,0,0,c);e=c+20|0;if((th(k[e>>2]|0)|0)>0){c=0;do{f=Mea(0,qh(k[e>>2]|0,c)|0)|0;if(f){JN(f,k[d>>2]|0);HN(f);Sqa(f)}c=c+1|0}while((c|0)<(th(k[e>>2]|0)|0))}e=k[d>>2]|0;if(!(k[e>>2]|0)){g=e;k[b>>2]=g;r=a;return}else{c=k[k[e+4>>2]>>2]|0;Ec[k[(k[c>>2]|0)+12>>2]&1023](c);g=k[d>>2]|0;k[b>>2]=g;r=a;return}}function Qea(a){a=a|0;Sqa(a);return}function Rea(a,b,c){a=a|0;b=b|0;c=c|0;return}function Sea(a,b,c){a=a|0;b=b|0;c=c|0;return}function Tea(a,b,c){a=a|0;b=b|0;c=c|0;hoa(b,c,382,738,534);return}function Uea(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function Vea(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;a=r;r=r+208|0;f=a+180|0;g=a+176|0;h=a+194|0;j=a+193|0;l=a+192|0;m=a+40|0;n=a+24|0;o=a+12|0;p=a;q=c+56|0;s=k[q>>2]|0;if((s|0)>0){t=c+32|0;u=s;s=0;v=0;while(1){if(!(i[(k[t>>2]|0)+v>>0]|0)){w=u;x=s}else{y=qh(b,s)|0;Uc[k[(k[y>>2]|0)+480>>2]&63](y,v,c,d,e,738);w=k[q>>2]|0;x=s+1|0}v=v+1|0;if((v|0)>=(w|0))break;else{u=w;s=x}}}Fka(c,g,134789);switch(k[g>>2]|0){case 387:{Yka(c,b,134252,388,0.0);r=a;return}case 389:{Zka(c,b,132530,391);Zka(c,b,132540,392);Zka(c,b,132549,393);Zka(c,b,132562,394);Zka(c,b,132575,395);Zka(c,b,132584,397);Zka(c,b,132596,398);Zka(c,b,132608,408);Zka(c,b,132620,409);Zka(c,b,132633,410);Zka(c,b,132646,411);Zka(c,b,132656,412);Zka(c,b,132668,413);Zka(c,b,132680,399);Zka(c,b,132693,400);Zka(c,b,132702,401);Zka(c,b,132712,402);r=a;return}case 438:{zka(c,h,132722);zka(c,j,132740);Zka(c,b,134812,347);Zka(c,b,132756,450);Zka(c,b,132767,451);if(!((i[j>>0]|i[h>>0])<<24>>24)){Zka(c,b,132892,448);Zka(c,b,132913,460);r=a;return}else{Zka(c,b,132778,447);Zka(c,b,132802,446);Zka(c,b,132833,444);Zka(c,b,132866,445);r=a;return}break}case 457:{zka(c,j,132740);zka(c,l,132940);Zka(c,b,134812,347);Zka(c,b,132756,450);Zka(c,b,132767,451);if(!(i[l>>0]|0)){r=a;return}Zka(c,b,132802,446);Zka(c,b,132833,444);r=a;return}case 459:{Zka(c,b,132956,461);Zka(c,b,132968,462);Zka(c,b,132982,463);Zka(c,b,132995,464);r=a;return}case 465:{Yka(c,b,132968,462,0.0);r=a;return}case 466:{Yka(c,b,133008,467,0.0);Yka(c,b,133028,468,0.0);Yka(c,b,133047,469,0.0);r=a;return}case 470:{Yka(c,b,133008,467,0.0);Yka(c,b,133028,468,0.0);Yka(c,b,133061,471,0.0);Yka(c,b,133073,472,0.0);r=a;return}default:{a=m+56|0;b=m+4|0;k[m>>2]=27524;k[a>>2]=27544;B=0;wa(508,m+56|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;z=Q;A=c;vva(a);Qb(A|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[a>>2]=27488;B=0;va(448,b|0);c=B;B=0;do if(c&1){l=Rb()|0;C=Q;D=l}else{k[b>>2]=27560;l=m+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[m+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);j=B;B=0;if(j&1){j=Rb()|0;h=Q;Yua(f);Yua(l);Ava(b);C=h;D=j;break}Yua(f);B=0;j=Ia(40,m|0,133089,27)|0;h=B;B=0;if((((!(h&1)?(B=0,h=ya(427,k[g>>2]|0)|0,x=B,B=0,!(x&1)):0)?(x=Lta(h)|0,B=0,s=Ia(40,j|0,h|0,x|0)|0,x=B,B=0,!(x&1)):0)?(B=0,x=Ia(40,s|0,146481,18)|0,s=B,B=0,!(s&1)):0)?(B=0,Xa(239,x|0,0)|0,x=B,B=0,!(x&1)):0){x=Ab(20)|0;B=0;eb(502,n|0,133117,71);s=B;B=0;do if(!(s&1)){B=0;eb(502,o|0,136133,14);h=B;B=0;if(h&1){h=Rb()|0;j=Q;Yua(n);E=j;F=h;break}B=0;wa(510,p|0,b|0);h=B;B=0;if(h&1){h=Rb()|0;G=Q;H=h;I=1}else{B=0;ua(163,x|0,n|0,o|0,111,p|0);h=B;B=0;if(h&1)J=1;else{B=0;eb(503,x|0,1240,229);B=0;J=0}h=Rb()|0;j=Q;Yua(p);G=j;H=h;I=J}Yua(o);Yua(n);if(I){E=G;F=H}else{K=G;L=H;k[m>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(a);Qb(L|0)}}else{h=Rb()|0;E=Q;F=h}while(0);zb(x|0);K=E;L=F;k[m>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(a);Qb(L|0)}s=Rb()|0;K=Q;L=s;k[m>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(a);Qb(L|0)}while(0);z=C;A=D;vva(a);Qb(A|0)}}}function Wea(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0;e=r;r=r+224|0;d=e+200|0;a=e+196|0;f=e+192|0;g=e+215|0;h=e+214|0;j=e+213|0;l=e+212|0;m=e+188|0;n=e+184|0;o=e+180|0;p=e+176|0;q=e+40|0;s=e+24|0;t=e+12|0;u=e;k[f>>2]=0;k[n>>2]=0;YN(b,Ika(c,134789,381)|0);Fka(c,m,134789);zka(c,l,133189);a:do switch(k[m>>2]|0){case 470:case 466:case 465:case 459:case 387:break;case 389:{YN(b,Ika(c,133221,405)|0);YN(b,Ika(c,133233,406)|0);YN(b,Ika(c,133246,407)|0);YN(b,Ika(c,133260,414)|0);YN(b,Ika(c,133278,417)|0);YN(b,Ika(c,133293,418)|0);YN(b,Ika(c,133306,419)|0);YN(b,Ika(c,133319,420)|0);YN(b,Ika(c,133328,415)|0);YN(b,Ika(c,133341,416)|0);YN(b,Ika(c,133353,403)|0);YN(b,Ika(c,133363,430)|0);YN(b,Ika(c,133384,431)|0);YN(b,Ika(c,133400,432)|0);YN(b,Ika(c,133419,433)|0);YN(b,Ika(c,133436,434)|0);YN(b,Ika(c,133458,435)|0);YN(b,Ika(c,133472,436)|0);YN(b,Ika(c,133495,437)|0);YN(b,Ika(c,133518,390)|0);break}case 438:{YN(b,Ika(c,132722,441)|0);YN(b,Ika(c,132740,442)|0);YN(b,Ika(c,133544,449)|0);YN(b,Ika(c,133558,452)|0);YN(b,Ika(c,133571,453)|0);zka(c,g,132722);zka(c,h,132740);do if(i[h>>0]|0){Qka(c,n,o,p,133587);v=Qqa(24)|0;w=k[n>>2]|0;x=k[p>>2]|0;B=0;La(38,v|0,454,w|0,w+(x<<3)|0,(i[l>>0]|0)!=0|0,x|0);x=B;B=0;if(x&1){x=Rb()|0;w=Q;Sqa(v);y=w;z=x;Qb(z|0)}YN(b,v);Mka(c,k[n>>2]|0,133587);Qka(c,n,o,p,133599);v=Qqa(24)|0;x=k[n>>2]|0;w=k[p>>2]|0;B=0;La(38,v|0,455,x|0,x+(w<<3)|0,(i[l>>0]|0)!=0|0,w|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Sqa(v);y=x;z=w;Qb(z|0)}YN(b,v);Mka(c,k[n>>2]|0,133599);Qka(c,n,o,p,133612);v=Qqa(24)|0;w=k[n>>2]|0;x=k[p>>2]|0;B=0;La(38,v|0,456,w|0,w+(x<<3)|0,(i[l>>0]|0)!=0|0,x|0);x=B;B=0;if(!(x&1)){YN(b,v);Mka(c,k[n>>2]|0,133612);break}x=Rb()|0;w=Q;Sqa(v);y=w;z=x;Qb(z|0)}while(0);if(i[g>>0]|0){Qka(c,n,o,p,133626);x=Qqa(24)|0;w=k[n>>2]|0;v=k[p>>2]|0;B=0;La(38,x|0,439,w|0,w+(v<<3)|0,(i[l>>0]|0)!=0|0,v|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Sqa(x);y=w;z=v;Qb(z|0)}YN(b,x);Mka(c,k[n>>2]|0,133626);Qka(c,n,o,p,133642);x=Qqa(24)|0;v=k[n>>2]|0;w=k[p>>2]|0;B=0;La(38,x|0,440,v|0,v+(w<<3)|0,(i[l>>0]|0)!=0|0,w|0);w=B;B=0;if(!(w&1)){YN(b,x);Mka(c,k[n>>2]|0,133642);break a}w=Rb()|0;v=Q;Sqa(x);y=v;z=w;Qb(z|0)}break}case 457:{YN(b,Ika(c,132740,442)|0);YN(b,Ika(c,132940,443)|0);YN(b,Ika(c,133544,449)|0);YN(b,Ika(c,133558,452)|0);YN(b,Ika(c,133571,453)|0);zka(c,h,132740);zka(c,j,132940);if(i[j>>0]|0){Qka(c,n,o,p,133626);w=Qqa(24)|0;v=k[n>>2]|0;x=k[p>>2]|0;B=0;La(38,w|0,439,v|0,v+(x<<3)|0,(i[l>>0]|0)!=0|0,x|0);x=B;B=0;if(!(x&1)){YN(b,w);Mka(c,k[n>>2]|0,133626);YN(b,Ika(c,133666,458)|0);break a}x=Rb()|0;v=Q;Sqa(w);y=v;z=x;Qb(z|0)}break}default:{x=q+56|0;v=q+4|0;k[q>>2]=27524;k[x>>2]=27544;B=0;wa(508,q+56|0,v|0);w=B;B=0;if(w&1){w=Rb()|0;A=Q;C=w;vva(x);Qb(C|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[x>>2]=27488;B=0;va(448,v|0);w=B;B=0;do if(w&1){D=Rb()|0;E=Q;F=D}else{k[v>>2]=27560;D=q+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[q+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,v|0,d|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(d);Yua(D);Ava(v);E=H;F=G;break}Yua(d);B=0;G=Ia(40,q|0,133089,27)|0;H=B;B=0;b:do if((((!(H&1)?(B=0,I=ya(427,k[m>>2]|0)|0,J=B,B=0,!(J&1)):0)?(J=Lta(I)|0,B=0,K=Ia(40,G|0,I|0,J|0)|0,J=B,B=0,!(J&1)):0)?(B=0,J=Ia(40,K|0,146481,18)|0,K=B,B=0,!(K&1)):0)?(B=0,Xa(239,J|0,0)|0,J=B,B=0,!(J&1)):0){J=Ab(20)|0;B=0;eb(502,s|0,133117,71);K=B;B=0;do if(!(K&1)){B=0;eb(502,t|0,136199,16);I=B;B=0;if(I&1){I=Rb()|0;L=Q;Yua(s);M=L;N=I;break}B=0;wa(510,u|0,v|0);I=B;B=0;if(I&1){I=Rb()|0;O=Q;P=I;R=1}else{B=0;ua(163,J|0,s|0,t|0,218,u|0);I=B;B=0;if(I&1)S=1;else{B=0;eb(503,J|0,1240,229);B=0;S=0}I=Rb()|0;L=Q;Yua(u);O=L;P=I;R=S}Yua(t);Yua(s);if(R){M=O;N=P}else{T=O;U=P;break b}}else{I=Rb()|0;M=Q;N=I}while(0);zb(J|0);T=M;U=N}else V=39;while(0);if((V|0)==39){G=Rb()|0;T=Q;U=G}k[q>>2]=27468;k[x>>2]=27488;k[v>>2]=27560;Yua(D);Ava(v);vva(x);y=T;z=U;Qb(z|0)}while(0);A=E;C=F;vva(x);Qb(C|0)}}while(0);Hka(c,f,a,133681);C=Qqa(12)|0;B=0;eb(518,C|0,384,k[a>>2]|0);F=B;B=0;if(F&1){F=Rb()|0;E=Q;Sqa(C);y=E;z=F;Qb(z|0)}YN(b,C);C=k[a>>2]|0;if(!C){W=0;Nka(c,f,W,133681);r=e;return}F=Qqa(16)|0;B=0;ib(294,F|0,385,k[f>>2]|0,C|0);C=B;B=0;if(C&1){C=Rb()|0;E=Q;Sqa(F);y=E;z=C;Qb(z|0)}else{YN(b,F);W=k[a>>2]|0;Nka(c,f,W,133681);r=e;return}}function Xea(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0;a=r;r=r+1552|0;c=a+1532|0;d=a+1492|0;e=a+1546|0;f=a+1545|0;g=a+1344|0;h=a+1520|0;j=a+1192|0;l=a+1508|0;m=a+1056|0;n=a+1496|0;o=a+1544|0;p=a+904|0;q=a+1480|0;s=a+752|0;t=a+1328|0;u=a+616|0;v=a+1040|0;w=a+464|0;x=a+888|0;y=a+328|0;z=a+600|0;A=a+192|0;C=a+176|0;D=a+40|0;E=a+24|0;F=a+12|0;G=a;H=b+44|0;cO(k[H>>2]|0,d,381);switch(k[d>>2]|0){case 389:{ZZ(b);r=a;return}case 438:{bO(k[H>>2]|0,e,441);bO(k[H>>2]|0,f,442);if(i[e>>0]|0){a:do if(CY()|0){e=g+56|0;I=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,I|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;L=J;vva(e);Qb(L|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,I|0);J=B;B=0;do if(J&1){M=Rb()|0;N=Q;O=M}else{k[I>>2]=27560;M=g+36|0;k[M>>2]=0;k[M+4>>2]=0;k[M+8>>2]=0;k[M+12>>2]=0;k[g+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,I|0,c|0);P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(c);Yua(M);Ava(I);N=R;O=P;break}Yua(c);B=0;Ia(40,g|0,133706,40)|0;P=B;B=0;do if(!(P&1)?(B=0,wa(510,h|0,I|0),R=B,B=0,!(R&1)):0){B=0;ya(425,h|0)|0;R=B;B=0;if(R&1){R=Rb()|0;S=Q;Yua(h);T=S;U=R;break}else{Yua(h);k[g>>2]=27468;k[e>>2]=27488;k[I>>2]=27560;Yua(M);Ava(I);vva(e);break a}}else V=17;while(0);if((V|0)==17){P=Rb()|0;T=Q;U=P}k[g>>2]=27468;k[e>>2]=27488;k[I>>2]=27560;Yua(M);Ava(I);vva(e);W=T;X=U;Qb(X|0)}while(0);K=N;L=O;vva(e);Qb(L|0)}while(0);Doa(b)}if(i[f>>0]|0){b:do if(CY()|0){f=j+56|0;L=j+4|0;k[j>>2]=27524;k[f>>2]=27544;B=0;wa(508,j+56|0,L|0);O=B;B=0;if(O&1){O=Rb()|0;Y=Q;Z=O;vva(f);Qb(Z|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[f>>2]=27488;B=0;va(448,L|0);O=B;B=0;do if(O&1){N=Rb()|0;_=Q;$=N}else{k[L>>2]=27560;N=j+36|0;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,L|0,c|0);K=B;B=0;if(K&1){K=Rb()|0;U=Q;Yua(c);Yua(N);Ava(L);_=U;$=K;break}Yua(c);B=0;Ia(40,j|0,133747,40)|0;K=B;B=0;do if(!(K&1)?(B=0,wa(510,l|0,L|0),U=B,B=0,!(U&1)):0){B=0;ya(425,l|0)|0;U=B;B=0;if(U&1){U=Rb()|0;T=Q;Yua(l);aa=T;ba=U;break}else{Yua(l);k[j>>2]=27468;k[f>>2]=27488;k[L>>2]=27560;Yua(N);Ava(L);vva(f);break b}}else V=35;while(0);if((V|0)==35){K=Rb()|0;aa=Q;ba=K}k[j>>2]=27468;k[f>>2]=27488;k[L>>2]=27560;Yua(N);Ava(L);vva(f);W=aa;X=ba;Qb(X|0)}while(0);Y=_;Z=$;vva(f);Qb(Z|0)}while(0);Eoa(b)}c:do if(CY()|0){Z=m+56|0;$=m+4|0;k[m>>2]=27524;k[Z>>2]=27544;B=0;wa(508,m+56|0,$|0);_=B;B=0;if(_&1){_=Rb()|0;ca=Q;da=_;vva(Z);Qb(da|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[Z>>2]=27488;B=0;va(448,$|0);_=B;B=0;do if(_&1){Y=Rb()|0;ea=Q;fa=Y}else{k[$>>2]=27560;Y=m+36|0;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,$|0,c|0);ba=B;B=0;if(ba&1){ba=Rb()|0;aa=Q;Yua(c);Yua(Y);Ava($);ea=aa;fa=ba;break}Yua(c);B=0;Ia(40,m|0,133788,35)|0;ba=B;B=0;do if(!(ba&1)?(B=0,wa(510,n|0,$|0),aa=B,B=0,!(aa&1)):0){B=0;ya(425,n|0)|0;aa=B;B=0;if(aa&1){aa=Rb()|0;j=Q;Yua(n);ga=j;ha=aa;break}else{Yua(n);k[m>>2]=27468;k[Z>>2]=27488;k[$>>2]=27560;Yua(Y);Ava($);vva(Z);break c}}else V=52;while(0);if((V|0)==52){ba=Rb()|0;ga=Q;ha=ba}k[m>>2]=27468;k[Z>>2]=27488;k[$>>2]=27560;Yua(Y);Ava($);vva(Z);W=ga;X=ha;Qb(X|0)}while(0);ca=ea;da=fa;vva(Z);Qb(da|0)}while(0);Goa(b);break}case 457:{bO(k[H>>2]|0,o,443);if(!(i[o>>0]|0))V=184;else{d:do if(CY()|0){o=p+56|0;H=p+4|0;k[p>>2]=27524;k[o>>2]=27544;B=0;wa(508,p+56|0,H|0);da=B;B=0;if(da&1){da=Rb()|0;ia=Q;ja=da;vva(o);Qb(ja|0)}k[p+128>>2]=0;k[p+132>>2]=-1;k[p>>2]=27468;k[o>>2]=27488;B=0;va(448,H|0);da=B;B=0;do if(da&1){fa=Rb()|0;ka=Q;la=fa}else{k[H>>2]=27560;fa=p+36|0;k[fa>>2]=0;k[fa+4>>2]=0;k[fa+8>>2]=0;k[fa+12>>2]=0;k[p+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,H|0,c|0);ea=B;B=0;if(ea&1){ea=Rb()|0;ca=Q;Yua(c);Yua(fa);Ava(H);ka=ca;la=ea;break}Yua(c);B=0;Ia(40,p|0,133824,42)|0;ea=B;B=0;do if(!(ea&1)?(B=0,wa(510,q|0,H|0),ca=B,B=0,!(ca&1)):0){B=0;ya(425,q|0)|0;ca=B;B=0;if(ca&1){ca=Rb()|0;ha=Q;Yua(q);ma=ha;na=ca;break}else{Yua(q);k[p>>2]=27468;k[o>>2]=27488;k[H>>2]=27560;Yua(fa);Ava(H);vva(o);break d}}else V=70;while(0);if((V|0)==70){ea=Rb()|0;ma=Q;na=ea}k[p>>2]=27468;k[o>>2]=27488;k[H>>2]=27560;Yua(fa);Ava(H);vva(o);W=ma;X=na;Qb(X|0)}while(0);ia=ka;ja=la;vva(o);Qb(ja|0)}while(0);Foa(b);e:do if(CY()|0){ja=s+56|0;la=s+4|0;k[s>>2]=27524;k[ja>>2]=27544;B=0;wa(508,s+56|0,la|0);ka=B;B=0;if(ka&1){ka=Rb()|0;oa=Q;pa=ka;vva(ja);Qb(pa|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[ja>>2]=27488;B=0;va(448,la|0);ka=B;B=0;do if(ka&1){ia=Rb()|0;qa=Q;ra=ia}else{k[la>>2]=27560;ia=s+36|0;k[ia>>2]=0;k[ia+4>>2]=0;k[ia+8>>2]=0;k[ia+12>>2]=0;k[s+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,la|0,c|0);na=B;B=0;if(na&1){na=Rb()|0;ma=Q;Yua(c);Yua(ia);Ava(la);qa=ma;ra=na;break}Yua(c);B=0;Ia(40,s|0,133788,35)|0;na=B;B=0;do if(!(na&1)?(B=0,wa(510,t|0,la|0),ma=B,B=0,!(ma&1)):0){B=0;ya(425,t|0)|0;ma=B;B=0;if(ma&1){ma=Rb()|0;p=Q;Yua(t);sa=p;ta=ma;break}else{Yua(t);k[s>>2]=27468;k[ja>>2]=27488;k[la>>2]=27560;Yua(ia);Ava(la);vva(ja);break e}}else V=86;while(0);if((V|0)==86){na=Rb()|0;sa=Q;ta=na}k[s>>2]=27468;k[ja>>2]=27488;k[la>>2]=27560;Yua(ia);Ava(la);vva(ja);W=sa;X=ta;Qb(X|0)}while(0);oa=qa;pa=ra;vva(ja);Qb(pa|0)}while(0);Goa(b);V=184}break}case 459:{f:do if(CY()|0){pa=u+56|0;ra=u+4|0;k[u>>2]=27524;k[pa>>2]=27544;B=0;wa(508,u+56|0,ra|0);qa=B;B=0;if(qa&1){qa=Rb()|0;xa=Q;za=qa;vva(pa);Qb(za|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[pa>>2]=27488;B=0;va(448,ra|0);qa=B;B=0;do if(qa&1){oa=Rb()|0;Aa=Q;Ba=oa}else{k[ra>>2]=27560;oa=u+36|0;k[oa>>2]=0;k[oa+4>>2]=0;k[oa+8>>2]=0;k[oa+12>>2]=0;k[u+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ra|0,c|0);ta=B;B=0;if(ta&1){ta=Rb()|0;sa=Q;Yua(c);Yua(oa);Ava(ra);Aa=sa;Ba=ta;break}Yua(c);B=0;Ia(40,u|0,133867,27)|0;ta=B;B=0;do if(!(ta&1)?(B=0,wa(510,v|0,ra|0),sa=B,B=0,!(sa&1)):0){B=0;ya(425,v|0)|0;sa=B;B=0;if(sa&1){sa=Rb()|0;s=Q;Yua(v);Ca=s;Da=sa;break}else{Yua(v);k[u>>2]=27468;k[pa>>2]=27488;k[ra>>2]=27560;Yua(oa);Ava(ra);vva(pa);break f}}else V=103;while(0);if((V|0)==103){ta=Rb()|0;Ca=Q;Da=ta}k[u>>2]=27468;k[pa>>2]=27488;k[ra>>2]=27560;Yua(oa);Ava(ra);vva(pa);W=Ca;X=Da;Qb(X|0)}while(0);xa=Aa;za=Ba;vva(pa);Qb(za|0)}while(0);Coa(b);V=184;break}case 465:{g:do if(CY()|0){za=w+56|0;Ba=w+4|0;k[w>>2]=27524;k[za>>2]=27544;B=0;wa(508,w+56|0,Ba|0);Aa=B;B=0;if(Aa&1){Aa=Rb()|0;Ea=Q;Fa=Aa;vva(za);Qb(Fa|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[za>>2]=27488;B=0;va(448,Ba|0);Aa=B;B=0;do if(Aa&1){xa=Rb()|0;Ga=Q;Ha=xa}else{k[Ba>>2]=27560;xa=w+36|0;k[xa>>2]=0;k[xa+4>>2]=0;k[xa+8>>2]=0;k[xa+12>>2]=0;k[w+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ba|0,c|0);Da=B;B=0;if(Da&1){Da=Rb()|0;Ca=Q;Yua(c);Yua(xa);Ava(Ba);Ga=Ca;Ha=Da;break}Yua(c);B=0;Ia(40,w|0,133895,26)|0;Da=B;B=0;do if(!(Da&1)?(B=0,wa(510,x|0,Ba|0),Ca=B,B=0,!(Ca&1)):0){B=0;ya(425,x|0)|0;Ca=B;B=0;if(Ca&1){Ca=Rb()|0;u=Q;Yua(x);Ja=u;Ka=Ca;break}else{Yua(x);k[w>>2]=27468;k[za>>2]=27488;k[Ba>>2]=27560;Yua(xa);Ava(Ba);vva(za);break g}}else V=120;while(0);if((V|0)==120){Da=Rb()|0;Ja=Q;Ka=Da}k[w>>2]=27468;k[za>>2]=27488;k[Ba>>2]=27560;Yua(xa);Ava(Ba);vva(za);W=Ja;X=Ka;Qb(X|0)}while(0);Ea=Ga;Fa=Ha;vva(za);Qb(Fa|0)}while(0);Hoa(b);V=184;break}case 466:{h:do if(CY()|0){Fa=y+56|0;Ha=y+4|0;k[y>>2]=27524;k[Fa>>2]=27544;B=0;wa(508,y+56|0,Ha|0);Ga=B;B=0;if(Ga&1){Ga=Rb()|0;La=Q;Ma=Ga;vva(Fa);Qb(Ma|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[Fa>>2]=27488;B=0;va(448,Ha|0);Ga=B;B=0;do if(Ga&1){Ea=Rb()|0;Na=Q;Oa=Ea}else{k[Ha>>2]=27560;Ea=y+36|0;k[Ea>>2]=0;k[Ea+4>>2]=0;k[Ea+8>>2]=0;k[Ea+12>>2]=0;k[y+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ha|0,c|0);Ka=B;B=0;if(Ka&1){Ka=Rb()|0;Ja=Q;Yua(c);Yua(Ea);Ava(Ha);Na=Ja;Oa=Ka;break}Yua(c);B=0;Ia(40,y|0,133922,29)|0;Ka=B;B=0;do if(!(Ka&1)?(B=0,wa(510,z|0,Ha|0),Ja=B,B=0,!(Ja&1)):0){B=0;ya(425,z|0)|0;Ja=B;B=0;if(Ja&1){Ja=Rb()|0;w=Q;Yua(z);Pa=w;Qa=Ja;break}else{Yua(z);k[y>>2]=27468;k[Fa>>2]=27488;k[Ha>>2]=27560;Yua(Ea);Ava(Ha);vva(Fa);break h}}else V=137;while(0);if((V|0)==137){Ka=Rb()|0;Pa=Q;Qa=Ka}k[y>>2]=27468;k[Fa>>2]=27488;k[Ha>>2]=27560;Yua(Ea);Ava(Ha);vva(Fa);W=Pa;X=Qa;Qb(X|0)}while(0);La=Na;Ma=Oa;vva(Fa);Qb(Ma|0)}while(0);Ioa(b);V=184;break}case 470:{i:do if(CY()|0){Ma=A+56|0;Oa=A+4|0;k[A>>2]=27524;k[Ma>>2]=27544;B=0;wa(508,A+56|0,Oa|0);Na=B;B=0;if(Na&1){Na=Rb()|0;Ra=Q;Sa=Na;vva(Ma);Qb(Sa|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[Ma>>2]=27488;B=0;va(448,Oa|0);Na=B;B=0;do if(Na&1){La=Rb()|0;Ta=Q;Ua=La}else{k[Oa>>2]=27560;La=A+36|0;k[La>>2]=0;k[La+4>>2]=0;k[La+8>>2]=0;k[La+12>>2]=0;k[A+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Oa|0,c|0);Qa=B;B=0;if(Qa&1){Qa=Rb()|0;Pa=Q;Yua(c);Yua(La);Ava(Oa);Ta=Pa;Ua=Qa;break}Yua(c);B=0;Ia(40,A|0,133952,34)|0;Qa=B;B=0;do if(!(Qa&1)?(B=0,wa(510,C|0,Oa|0),Pa=B,B=0,!(Pa&1)):0){B=0;ya(425,C|0)|0;Pa=B;B=0;if(Pa&1){Pa=Rb()|0;y=Q;Yua(C);Va=y;Wa=Pa;break}else{Yua(C);k[A>>2]=27468;k[Ma>>2]=27488;k[Oa>>2]=27560;Yua(La);Ava(Oa);vva(Ma);break i}}else V=154;while(0);if((V|0)==154){Qa=Rb()|0;Va=Q;Wa=Qa}k[A>>2]=27468;k[Ma>>2]=27488;k[Oa>>2]=27560;Yua(La);Ava(Oa);vva(Ma);W=Va;X=Wa;Qb(X|0)}while(0);Ra=Ta;Sa=Ua;vva(Ma);Qb(Sa|0)}while(0);Joa(b);V=184;break}case 473:{V=184;break}case 387:{r=a;return}default:{b=D+56|0;Sa=D+4|0;k[D>>2]=27524;k[b>>2]=27544;B=0;wa(508,D+56|0,Sa|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;Ya=Q;Za=Ua;vva(b);Qb(Za|0)}k[D+128>>2]=0;k[D+132>>2]=-1;k[D>>2]=27468;k[b>>2]=27488;B=0;va(448,Sa|0);Ua=B;B=0;do if(Ua&1){Ta=Rb()|0;_a=Q;$a=Ta}else{k[Sa>>2]=27560;Ta=D+36|0;k[Ta>>2]=0;k[Ta+4>>2]=0;k[Ta+8>>2]=0;k[Ta+12>>2]=0;k[D+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Sa|0,c|0);Ra=B;B=0;if(Ra&1){Ra=Rb()|0;Wa=Q;Yua(c);Yua(Ta);Ava(Sa);_a=Wa;$a=Ra;break}Yua(c);B=0;Ra=Ia(40,D|0,133089,27)|0;Wa=B;B=0;j:do if((((!(Wa&1)?(B=0,Va=ya(427,k[d>>2]|0)|0,A=B,B=0,!(A&1)):0)?(A=Lta(Va)|0,B=0,C=Ia(40,Ra|0,Va|0,A|0)|0,A=B,B=0,!(A&1)):0)?(B=0,A=Ia(40,C|0,146481,18)|0,C=B,B=0,!(C&1)):0)?(B=0,Xa(239,A|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,E|0,133117,71);C=B;B=0;do if(!(C&1)){B=0;eb(502,F|0,138209,4);Va=B;B=0;if(Va&1){Va=Rb()|0;Oa=Q;Yua(E);ab=Va;bb=Oa;break}B=0;wa(510,G|0,Sa|0);Oa=B;B=0;if(Oa&1){Oa=Rb()|0;cb=1;db=Q;fb=Oa}else{B=0;ua(163,A|0,E|0,F|0,289,G|0);Oa=B;B=0;if(Oa&1)gb=1;else{B=0;eb(503,A|0,1240,229);B=0;gb=0}Oa=Rb()|0;Va=Q;Yua(G);cb=gb;db=Va;fb=Oa}Yua(F);Yua(E);if(cb){ab=fb;bb=db}else{hb=fb;ib=db;break j}}else{Oa=Rb()|0;ab=Oa;bb=Q}while(0);zb(A|0);hb=ab;ib=bb}else V=176;while(0);if((V|0)==176){Ra=Rb()|0;hb=Ra;ib=Q}k[D>>2]=27468;k[b>>2]=27488;k[Sa>>2]=27560;Yua(Ta);Ava(Sa);vva(b);W=ib;X=hb;Qb(X|0)}while(0);Ya=_a;Za=$a;vva(b);Qb(Za|0)}}r=a;return}function Yea(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,133117,71);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,133987,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,294,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Zea(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,133117,71);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,297,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function _ea(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,133117,71);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144189,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,300,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function $ea(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,133117,71);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144203,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,303,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function afa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,133117,71);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,306,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function bfa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,133117,71);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,309,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function cfa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,133117,71);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,137199,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,312,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function dfa(a,b){a=a|0;b=b|0;return}function efa(a){a=a|0;Sqa(a);return}function ffa(a,b,c){a=a|0;b=b|0;c=c|0;return}function gfa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;a=r;r=r+32|0;d=a+16|0;e=a+8|0;f=a+4|0;g=a;k[f>>2]=0;k[g>>2]=0;Qka(c,f,e,0,134220);h=c+40|0;if((k[h>>2]|0)!=300)Qka(c,g,0,0,136615);i=k[e>>2]|0;if((i|0)<=0){j=k[f>>2]|0;Mka(c,j,134220);l=k[g>>2]|0;Mka(c,l,136615);r=a;return}m=c+36|0;n=c+100|0;o=d+4|0;q=c+104|0;s=i;i=0;t=0;a:while(1){u=t<<1;v=k[f>>2]|0;w=~~+p[v+(u<<3)>>3];x=w+-1|0;do if(!(k[(k[m>>2]|0)+(x<<2)>>2]|0)){y=s;z=i}else{if((k[h>>2]|0)!=300){A=k[g>>2]|0;if(!(+p[A+(x<<3)>>3]!=0.0)){y=s;z=i;break}C=v+((u|1)<<3)|0;if(+p[A+(~~+p[C>>3]+-1<<3)>>3]!=0.0)D=C;else{y=s;z=i;break}}else D=v+((u|1)<<3)|0;C=k[n>>2]|0;k[d>>2]=w+C;k[o>>2]=~~+p[D>>3]+C;C=Qqa(28)|0;A=i+1|0;B=0;ib(298,C|0,A+(k[q>>2]|0)|0,d|0,512);E=B;B=0;if(E&1){F=C;G=13;break a}ih(b,C)|0;y=k[e>>2]|0;z=A}while(0);t=t+1|0;if((t|0)>=(y|0)){G=5;break}else{s=y;i=z}}if((G|0)==5){j=k[f>>2]|0;Mka(c,j,134220);l=k[g>>2]|0;Mka(c,l,136615);r=a;return}else if((G|0)==13){G=Rb()|0;Sqa(F);Qb(G|0)}}function hfa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a=r;r=r+16|0;d=a+8|0;e=a;if((k[c+40>>2]|0)!=300){k[e>>2]=136615;k[e+4>>2]=136636;Ska(c,2,e)}hoa(b,c,512,738,534);k[d>>2]=136615;k[d+4>>2]=136636;Lka(c,2,d);r=a;return}function ifa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function jfa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;a=c+40|0;if((k[a>>2]|0)==300)return;f=c+56|0;g=k[f>>2]|0;if((g|0)>0){h=c+32|0;j=g;g=0;l=0;while(1){if(!(i[(k[h>>2]|0)+l>>0]|0)){m=j;n=g}else{o=qh(b,g)|0;Uc[k[(k[o>>2]|0)+480>>2]&63](o,l,c,d,e,738);m=k[f>>2]|0;n=g+1|0}l=l+1|0;if((l|0)>=(m|0))break;else{j=m;g=n}}}Zka(c,b,134925,339);Yka(c,b,137955,999,0.0);Zka(c,b,137867,206);Zka(c,b,134027,39);Zka(c,b,134069,40);Zka(c,b,135923,674);Zka(c,b,135944,677);if((k[c+44>>2]|0)==3)Zka(c,b,135096,679);if((k[a>>2]|0)==300)return;Zka(c,b,136615,287);Zka(c,b,136636,288);return}function kfa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function lfa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,134111,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,98,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function mfa(a,b){a=a|0;b=b|0;return 0}function nfa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,134111,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,105,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function ofa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0.0,T=0.0,U=0.0,V=0,W=0,X=0.0,Y=0.0,Z=0.0,_=0.0;a=r;r=r+240|0;c=a+228|0;d=a+224|0;e=a+220|0;f=a+216|0;g=a+32|0;h=a+24|0;i=a+16|0;j=a+8|0;l=a;m=a+80|0;n=a+64|0;o=a+52|0;q=a+40|0;k[f>>2]=0;cp(b,d,298);a:do switch(k[d>>2]|0){case 300:{s=b;t=2;break}case 301:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){s=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;t=1;break a}else{u=0;r=a;return u|0}break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){s=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;t=2;break a}else{u=0;r=a;return u|0}break}default:{v=m+56|0;w=m+4|0;k[m>>2]=27524;k[v>>2]=27544;B=0;wa(508,m+56|0,w|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;z=x;vva(v);Qb(z|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[v>>2]=27488;B=0;va(448,w|0);x=B;B=0;do if(x&1){A=Rb()|0;C=Q;D=A}else{k[w>>2]=27560;A=m+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,w|0,c|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(c);Yua(A);Ava(w);C=F;D=E;break}Yua(c);B=0;E=Ia(40,m|0,144639,5)|0;F=B;B=0;if((((!(F&1)?(B=0,F=ya(427,k[d>>2]|0)|0,G=B,B=0,!(G&1)):0)?(G=Lta(F)|0,B=0,H=Ia(40,E|0,F|0,G|0)|0,G=B,B=0,!(G&1)):0)?(B=0,G=Ia(40,H|0,146481,18)|0,H=B,B=0,!(H&1)):0)?(B=0,Xa(239,G|0,0)|0,G=B,B=0,!(G&1)):0){G=Ab(20)|0;B=0;eb(502,n|0,134111,83);H=B;B=0;do if(!(H&1)){B=0;eb(502,o|0,144189,13);F=B;B=0;if(F&1){F=Rb()|0;E=Q;Yua(n);I=E;J=F;break}B=0;wa(510,q|0,w|0);F=B;B=0;if(F&1){F=Rb()|0;K=Q;L=F;M=1}else{B=0;ua(163,G|0,n|0,o|0,133,q|0);F=B;B=0;if(F&1)N=1;else{B=0;eb(503,G|0,1240,229);B=0;N=0}F=Rb()|0;E=Q;Yua(q);K=E;L=F;M=N}Yua(o);Yua(n);if(M){I=K;J=L}else{O=L;P=K;k[m>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}}else{F=Rb()|0;I=Q;J=F}while(0);zb(G|0);O=J;P=I;k[m>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}H=Rb()|0;O=H;P=Q;k[m>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}while(0);y=C;z=D;vva(v);Qb(z|0)}}while(0);z=Hc[k[(k[s>>2]|0)+164>>2]&511](s)|0;D=gq(s,534)|0;C=Rqa(z>>>0>536870911?-1:z<<3)|0;y=ma(z,t)|0;O=y>>>0>536870911?-1:y<<3;y=Rqa(O)|0;m=Rqa(O)|0;O=ma(t,t)|0;P=Rqa(O<<3)|0;Uo(s,f);pp(s,i,358);cp(s,e,310);I=Wo(s,674)|0;if(t>>>0>1)R=Wo(s,677)|0;else R=0;S=+Zc[k[(k[s>>2]|0)+72>>2]&255](s);J=ed[k[(k[s>>2]|0)+308>>2]&511](s,2)|0;K=Hc[k[(k[J>>2]|0)+8>>2]&511](J)|0;b:do if((K|0)<(Hc[k[(k[J>>2]|0)+12>>2]&511](J)|0)){L=(t|0)==2;M=J+8|0;n=D+12|0;o=(O|0)==0;N=P+(t+1<<3)|0;q=(t|0)==1;c=P+(t<<3)|0;b=P+8|0;T=S*.5;w=(O>>>0>1?O:1)<<3;x=K;while(1){Fc[k[(k[J>>2]|0)+24>>2]&1023](J,x);rd[k[(k[s>>2]|0)+260>>2]&511](s,g,k[f>>2]|0,J);nd[k[(k[s>>2]|0)+336>>2]&1023](s,C,J);nd[k[(k[I>>2]|0)+48>>2]&1023](I,j,J);if(L)nd[k[(k[R>>2]|0)+48>>2]&1023](R,l,J);p[h>>3]=+p[M>>3]*+p[g>>3];ZX(C,1,z,1,h,1,1,0,C,1,z,0,k[n>>2]|0,1)|0;H=Hc[k[(k[s>>2]|0)+164>>2]&511](s)|0;F=Rqa(H>>>0>536870911?-1:H<<3)|0;nd[k[(k[s>>2]|0)+336>>2]&1023](s,F,J);if((H|0)>0){E=0;do{U=+p[F+(E<<3)>>3];V=0;do{W=y+((ma(V,H)|0)+E<<3)|0;p[W>>3]=U;V=V+1|0}while((V|0)!=(t|0));E=E+1|0}while((E|0)!=(H|0))}Tqa(F);H=k[f>>2]|0;E=Hc[k[(k[s>>2]|0)+164>>2]&511](s)|0;A=ma(E,t)|0;G=Rqa(A>>>0>536870911?-1:A<<3)|0;rd[k[(k[s>>2]|0)+340>>2]&511](s,G,H,J);if((E|0)>0){H=0;do{A=0;do{V=(ma(A,E)|0)+H|0;p[m+(V<<3)>>3]=+p[G+(V<<3)>>3];A=A+1|0}while((A|0)!=(t|0));H=H+1|0}while((H|0)!=(E|0))}Tqa(G);U=+p[i>>3]*+p[M>>3]*+p[g>>3];p[h>>3]=U;if(!o)WEa(P|0,0,w|0)|0;p[P>>3]=U*+p[j>>3];if(L)p[N>>3]=U*+p[l>>3];ZX(y,t,z,1,P,t,t,0,m,t,z,0,k[n>>2]|0,1)|0;c:do switch(k[e>>2]|0){case 2:{U=+p[j>>3];if(q){X=U*(U*(S/((+$(+U)+1.0e-08)*2.0)));p[P>>3]=X;break c}else{X=+p[l>>3];Y=S/((+aa(+(U*U+X*X))+1.0e-08)*2.0);Z=U*Y;p[P>>3]=U*Z;_=X*Y;p[c>>3]=U*_;p[b>>3]=Z*X;p[N>>3]=X*_;break c}break}case 1:{Fc[k[(k[I>>2]|0)+64>>2]&1023](I,j);if(q){_=T*+$(+(+p[j>>3]));p[P>>3]=_;break c}else{Fc[k[(k[R>>2]|0)+64>>2]&1023](R,l);_=T*+$(+(+p[j>>3]));p[P>>3]=_;_=T*+$(+(+p[l>>3]));p[N>>3]=_;break c}break}default:{}}while(0);if(((k[e>>2]|0)+-1|0)>>>0<2){if(!o){_=+p[h>>3];G=0;do{E=P+(G<<3)|0;p[E>>3]=_*+p[E>>3];G=G+1|0}while((G|0)<(O|0))}ZX(m,t,z,1,P,t,t,0,m,t,z,0,k[n>>2]|0,1)|0}x=x+1|0;if((x|0)>=(Hc[k[(k[J>>2]|0)+12>>2]&511](J)|0))break b}}while(0);z=k[f>>2]|0;if(z)Tqa(z);k[f>>2]=0;Tqa(C);Tqa(y);Tqa(m);Tqa(P);Ec[k[(k[J>>2]|0)+4>>2]&1023](J);if((k[d>>2]|0)==300){u=D;r=a;return u|0}ap(s);if(!s){u=D;r=a;return u|0}Ec[k[(k[s>>2]|0)+4>>2]&1023](s);u=D;r=a;return u|0}function pfa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0.0,oa=0.0;a=r;r=r+432|0;c=a+412|0;d=a+408|0;e=a+48|0;f=a+40|0;g=a+32|0;h=a+24|0;i=a+16|0;j=a+8|0;l=a;m=a+404|0;n=a+256|0;o=a+392|0;q=a+104|0;s=a+92|0;t=a+120|0;u=a+80|0;v=a+68|0;w=a+56|0;k[m>>2]=0;cp(b,d,298);a:do switch(k[d>>2]|0){case 300:{x=b;y=2;break}case 301:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){x=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;y=1;break a}else{z=0;r=a;return z|0}break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){x=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;y=2;break a}else{z=0;r=a;return z|0}break}default:{A=n+56|0;C=n+4|0;k[n>>2]=27524;k[A>>2]=27544;B=0;wa(508,n+56|0,C|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;F=D;vva(A);Qb(F|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[A>>2]=27488;B=0;va(448,C|0);D=B;B=0;do if(D&1){G=Rb()|0;H=Q;I=G}else{k[C>>2]=27560;G=n+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[n+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,C|0,c|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(c);Yua(G);Ava(C);H=K;I=J;break}Yua(c);B=0;J=Ia(40,n|0,144639,5)|0;K=B;B=0;b:do if((((!(K&1)?(B=0,L=ya(427,k[d>>2]|0)|0,M=B,B=0,!(M&1)):0)?(M=Lta(L)|0,B=0,N=Ia(40,J|0,L|0,M|0)|0,M=B,B=0,!(M&1)):0)?(B=0,M=Ia(40,N|0,146481,18)|0,N=B,B=0,!(N&1)):0)?(B=0,Xa(239,M|0,0)|0,M=B,B=0,!(M&1)):0){M=Ab(20)|0;B=0;eb(502,o|0,134111,83);N=B;B=0;do if(!(N&1)){B=0;eb(502,q|0,144203,13);L=B;B=0;if(L&1){L=Rb()|0;O=Q;Yua(o);P=L;R=O;break}B=0;wa(510,s|0,C|0);O=B;B=0;if(O&1){O=Rb()|0;S=O;T=Q;U=1}else{B=0;ua(163,M|0,o|0,q|0,256,s|0);O=B;B=0;if(O&1)V=1;else{B=0;eb(503,M|0,1240,229);B=0;V=0}O=Rb()|0;L=Q;Yua(s);S=O;T=L;U=V}Yua(q);Yua(o);if(U){P=S;R=T}else{W=S;X=T;break b}}else{L=Rb()|0;P=L;R=Q}while(0);zb(M|0);W=P;X=R}else Y=24;while(0);if((Y|0)==24){J=Rb()|0;W=J;X=Q}k[n>>2]=27468;k[A>>2]=27488;k[C>>2]=27560;Yua(G);Ava(C);vva(A);Z=W;_=X;Qb(Z|0)}while(0);E=H;F=I;vva(A);Qb(F|0)}}while(0);F=Hc[k[(k[x>>2]|0)+164>>2]&511](x)|0;I=iq(x,534)|0;H=Rqa(F>>>0>536870911?-1:F<<3)|0;Uo(x,m);pp(x,f,358);E=Wo(x,928)|0;X=Wo(x,39)|0;W=Wo(x,40)|0;n=Wo(x,64)|0;switch(y|0){case 1:{$=Wo(x,677)|0;break}case 2:{$=Wo(x,679)|0;break}default:{y=t+56|0;R=t+4|0;k[t>>2]=27524;k[y>>2]=27544;B=0;wa(508,t+56|0,R|0);P=B;B=0;if(P&1){P=Rb()|0;aa=Q;ba=P;vva(y);Qb(ba|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[y>>2]=27488;B=0;va(448,R|0);P=B;B=0;do if(P&1){T=Rb()|0;ca=Q;da=T}else{k[R>>2]=27560;T=t+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[t+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,R|0,c|0);S=B;B=0;if(S&1){S=Rb()|0;U=Q;Yua(c);Yua(T);Ava(R);ca=U;da=S;break}Yua(c);B=0;S=Ia(40,t|0,143640,15)|0;U=B;B=0;c:do if(!(U&1)?(B=0,Xa(239,S|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,u|0,134111,83);q=B;B=0;do if(!(q&1)){B=0;eb(502,v|0,144203,13);V=B;B=0;if(V&1){V=Rb()|0;s=Q;Yua(u);ea=s;fa=V;break}B=0;wa(510,w|0,R|0);V=B;B=0;if(V&1){V=Rb()|0;ga=1;ha=V;ia=Q}else{B=0;ua(163,o|0,u|0,v|0,277,w|0);V=B;B=0;if(V&1)ja=1;else{B=0;eb(503,o|0,1240,229);B=0;ja=0}V=Rb()|0;s=Q;Yua(w);ga=ja;ha=V;ia=s}Yua(v);Yua(u);if(ga){ea=ia;fa=ha}else{ka=ha;la=ia;break c}}else{s=Rb()|0;ea=Q;fa=s}while(0);zb(o|0);ka=fa;la=ea}else Y=50;while(0);if((Y|0)==50){S=Rb()|0;ka=S;la=Q}k[t>>2]=27468;k[y>>2]=27488;k[R>>2]=27560;Yua(T);Ava(R);vva(y);Z=ka;_=la;Qb(Z|0)}while(0);aa=ca;ba=da;vva(y);Qb(ba|0)}}ba=ed[k[(k[x>>2]|0)+308>>2]&511](x,2)|0;y=Hc[k[(k[ba>>2]|0)+8>>2]&511](ba)|0;d:do if((y|0)<(Hc[k[(k[ba>>2]|0)+12>>2]&511](ba)|0)){da=ba+8|0;ca=I+4|0;if((F|0)>0)ma=y;else{aa=y;while(1){Fc[k[(k[ba>>2]|0)+24>>2]&1023](ba,aa);rd[k[(k[x>>2]|0)+260>>2]&511](x,e,k[m>>2]|0,ba);nd[k[(k[x>>2]|0)+336>>2]&1023](x,H,ba);nd[k[(k[$>>2]|0)+48>>2]&1023]($,l,ba);nd[k[(k[X>>2]|0)+48>>2]&1023](X,g,ba);nd[k[(k[W>>2]|0)+48>>2]&1023](W,h,ba);nd[k[(k[n>>2]|0)+48>>2]&1023](n,i,ba);nd[k[(k[E>>2]|0)+48>>2]&1023](E,j,ba);aa=aa+1|0;if((aa|0)>=(Hc[k[(k[ba>>2]|0)+12>>2]&511](ba)|0))break d}}do{Fc[k[(k[ba>>2]|0)+24>>2]&1023](ba,ma);rd[k[(k[x>>2]|0)+260>>2]&511](x,e,k[m>>2]|0,ba);nd[k[(k[x>>2]|0)+336>>2]&1023](x,H,ba);nd[k[(k[$>>2]|0)+48>>2]&1023]($,l,ba);nd[k[(k[X>>2]|0)+48>>2]&1023](X,g,ba);nd[k[(k[W>>2]|0)+48>>2]&1023](W,h,ba);nd[k[(k[n>>2]|0)+48>>2]&1023](n,i,ba);nd[k[(k[E>>2]|0)+48>>2]&1023](E,j,ba);na=+p[j>>3]>0.0?+p[g>>3]:+p[h>>3];aa=k[ca>>2]|0;T=0;do{oa=+p[f>>3];Z=aa+(T<<3)|0;p[Z>>3]=+p[Z>>3]+ +p[H+(T<<3)>>3]*(+p[e>>3]*+p[da>>3]*(+p[i>>3]+na*oa+oa*+p[l>>3]));T=T+1|0}while((T|0)!=(F|0));ma=ma+1|0}while((ma|0)<(Hc[k[(k[ba>>2]|0)+12>>2]&511](ba)|0))}while(0);ma=k[m>>2]|0;if(ma)Tqa(ma);k[m>>2]=0;Tqa(H);Ec[k[(k[ba>>2]|0)+4>>2]&1023](ba);if((k[d>>2]|0)==300){z=I;r=a;return z|0}ap(x);if(!x){z=I;r=a;return z|0}Ec[k[(k[x>>2]|0)+4>>2]&1023](x);z=I;r=a;return z|0}function qfa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,134111,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,365,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function rfa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,134111,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,368,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function sfa(a,b,c){a=a|0;b=b|0;c=c|0;nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,64);return}function tfa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0;a=r;r=r+32|0;c=a+16|0;d=a+8|0;e=a;f=b+20|0;if((th(k[f>>2]|0)|0)>0)g=0;else{r=a;return}do{b=qh(k[f>>2]|0,g)|0;if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){h=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;i=Wo(b,928)|0;j=Wo(b,287)|0;l=Wo(b,64)|0;m=Hc[k[(k[b>>2]|0)+304>>2]&511](b)|0;if((h|0)>0){n=b+20|0;o=0;do{q=k[(k[m>>2]|0)+32>>2]|0;s=Hc[k[(k[b>>2]|0)+128>>2]&511](b)|0;nd[q&1023](m,s,o);nd[k[(k[j>>2]|0)+48>>2]&1023](j,d,m);do if(+p[d>>3]==1.0){nd[k[(k[i>>2]|0)+48>>2]&1023](i,c,m);if(!(+p[c>>3]>=0.0)){Zn(k[(k[n>>2]|0)+(o<<2)>>2]|0,0);break}else{nd[k[(k[l>>2]|0)+48>>2]&1023](l,e,m);Un(k[(k[n>>2]|0)+(o<<2)>>2]|0,0,+p[e>>3]);break}}while(0);o=o+1|0}while((o|0)!=(h|0))}if(m)Ec[k[(k[m>>2]|0)+4>>2]&1023](m)}g=g+1|0}while((g|0)<(th(k[f>>2]|0)|0));r=a;return}function ufa(a){a=a|0;Sqa(a);return}function vfa(a,b,c){a=a|0;b=b|0;c=c|0;return}function wfa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;a=r;r=r+32|0;d=a+16|0;e=a+8|0;f=a+4|0;g=a;k[f>>2]=0;k[g>>2]=0;Qka(c,f,e,0,134220);h=c+40|0;if((k[h>>2]|0)!=300)Qka(c,g,0,0,136636);i=k[e>>2]|0;if((i|0)<=0){j=k[f>>2]|0;Mka(c,j,134220);l=k[g>>2]|0;Mka(c,l,136636);r=a;return}m=c+36|0;n=c+100|0;o=d+4|0;q=c+104|0;s=i;i=0;t=0;a:while(1){u=t<<1;v=k[f>>2]|0;w=~~+p[v+(u<<3)>>3];x=w+-1|0;do if(!(k[(k[m>>2]|0)+(x<<2)>>2]|0)){y=s;z=i}else{if((k[h>>2]|0)!=300){A=k[g>>2]|0;if(!(+p[A+(x<<3)>>3]!=0.0)){y=s;z=i;break}C=v+((u|1)<<3)|0;if(+p[A+(~~+p[C>>3]+-1<<3)>>3]!=0.0)D=C;else{y=s;z=i;break}}else D=v+((u|1)<<3)|0;C=k[n>>2]|0;k[d>>2]=w+C;k[o>>2]=~~+p[D>>3]+C;C=Qqa(28)|0;A=i+1|0;B=0;ib(298,C|0,A+(k[q>>2]|0)|0,d|0,513);E=B;B=0;if(E&1){F=C;G=13;break a}ih(b,C)|0;y=k[e>>2]|0;z=A}while(0);t=t+1|0;if((t|0)>=(y|0)){G=5;break}else{s=y;i=z}}if((G|0)==5){j=k[f>>2]|0;Mka(c,j,134220);l=k[g>>2]|0;Mka(c,l,136636);r=a;return}else if((G|0)==13){G=Rb()|0;Sqa(F);Qb(G|0)}}function xfa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a=r;r=r+16|0;d=a+8|0;e=a;if((k[c+40>>2]|0)!=300){k[e>>2]=136615;k[e+4>>2]=136636;Ska(c,2,e)}hoa(b,c,513,738,534);k[d>>2]=136615;k[d+4>>2]=136636;Lka(c,2,d);r=a;return}function yfa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function zfa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;a=r;r=r+16|0;f=a;g=c+40|0;if((k[g>>2]|0)==300){r=a;return}Fka(c,f,134789);h=c+56|0;j=k[h>>2]|0;if((j|0)>0){l=c+32|0;m=j;j=0;n=0;while(1){if(!(i[(k[l>>2]|0)+n>>0]|0)){o=m;p=j}else{q=qh(b,j)|0;Uc[k[(k[q>>2]|0)+480>>2]&63](q,n,c,d,e,738);o=k[h>>2]|0;p=j+1|0}n=n+1|0;if((n|0)>=(o|0))break;else{m=o;j=p}}}Zka(c,b,134925,339);Yka(c,b,137955,999,0.0);Zka(c,b,137867,206);Zka(c,b,135923,674);if((k[g>>2]|0)!=300){Zka(c,b,136636,288);Zka(c,b,136615,287)}if((k[c+44>>2]|0)==3)Zka(c,b,135096,679);if((k[f>>2]|0)==387)Yka(c,b,134252,388,0.0);r=a;return}function Afa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function Bfa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,134272,82);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,106,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Cfa(a,b){a=a|0;b=b|0;return 0}function Dfa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,134272,82);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,113,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Efa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0.0,T=0.0,U=0.0,V=0,W=0,X=0.0,Y=0.0,Z=0.0,_=0.0;a=r;r=r+240|0;c=a+228|0;d=a+224|0;e=a+220|0;f=a+216|0;g=a+32|0;h=a+24|0;i=a+16|0;j=a+8|0;l=a;m=a+80|0;n=a+64|0;o=a+52|0;q=a+40|0;k[f>>2]=0;cp(b,d,298);a:do switch(k[d>>2]|0){case 300:{s=2;t=b;break}case 301:{if(Hc[k[(k[b>>2]|0)+252>>2]&511](b)|0){s=1;t=Hc[k[(k[b>>2]|0)+436>>2]&511](b)|0;break a}else{u=0;r=a;return u|0}break}case 302:{if(Hc[k[(k[b>>2]|0)+252>>2]&511](b)|0){s=2;t=Hc[k[(k[b>>2]|0)+436>>2]&511](b)|0;break a}else{u=0;r=a;return u|0}break}default:{v=m+56|0;w=m+4|0;k[m>>2]=27524;k[v>>2]=27544;B=0;wa(508,m+56|0,w|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;z=x;vva(v);Qb(z|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[v>>2]=27488;B=0;va(448,w|0);x=B;B=0;do if(x&1){A=Rb()|0;C=Q;D=A}else{k[w>>2]=27560;A=m+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,w|0,c|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(c);Yua(A);Ava(w);C=F;D=E;break}Yua(c);B=0;E=Ia(40,m|0,144639,5)|0;F=B;B=0;if((((!(F&1)?(B=0,F=ya(427,k[d>>2]|0)|0,G=B,B=0,!(G&1)):0)?(G=Lta(F)|0,B=0,H=Ia(40,E|0,F|0,G|0)|0,G=B,B=0,!(G&1)):0)?(B=0,G=Ia(40,H|0,146481,18)|0,H=B,B=0,!(H&1)):0)?(B=0,Xa(239,G|0,0)|0,G=B,B=0,!(G&1)):0){G=Ab(20)|0;B=0;eb(502,n|0,134272,82);H=B;B=0;do if(!(H&1)){B=0;eb(502,o|0,144189,13);F=B;B=0;if(F&1){F=Rb()|0;E=Q;Yua(n);I=E;J=F;break}B=0;wa(510,q|0,w|0);F=B;B=0;if(F&1){F=Rb()|0;K=Q;L=F;M=1}else{B=0;ua(163,G|0,n|0,o|0,141,q|0);F=B;B=0;if(F&1)N=1;else{B=0;eb(503,G|0,1240,229);B=0;N=0}F=Rb()|0;E=Q;Yua(q);K=E;L=F;M=N}Yua(o);Yua(n);if(M){I=K;J=L}else{O=L;P=K;k[m>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}}else{F=Rb()|0;I=Q;J=F}while(0);zb(G|0);O=J;P=I;k[m>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}H=Rb()|0;O=H;P=Q;k[m>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}while(0);y=C;z=D;vva(v);Qb(z|0)}}while(0);z=Hc[k[(k[t>>2]|0)+164>>2]&511](t)|0;D=gq(t,534)|0;C=Rqa(z>>>0>536870911?-1:z<<3)|0;y=ma(z,s)|0;O=y>>>0>536870911?-1:y<<3;y=Rqa(O)|0;m=Rqa(O)|0;O=ma(s,s)|0;P=Rqa(O<<3)|0;Uo(t,f);pp(t,i,358);cp(t,e,310);I=Wo(t,674)|0;if(s>>>0>1)R=Wo(t,677)|0;else R=0;S=+Zc[k[(k[t>>2]|0)+72>>2]&255](t);J=ed[k[(k[t>>2]|0)+308>>2]&511](t,2)|0;K=Hc[k[(k[J>>2]|0)+8>>2]&511](J)|0;b:do if((K|0)<(Hc[k[(k[J>>2]|0)+12>>2]&511](J)|0)){L=(s|0)==2;M=J+8|0;n=D+12|0;o=(O|0)==0;N=P+(s+1<<3)|0;q=(s|0)==1;c=P+(s<<3)|0;b=P+8|0;T=S*.5;w=(O>>>0>1?O:1)<<3;x=K;while(1){Fc[k[(k[J>>2]|0)+24>>2]&1023](J,x);rd[k[(k[t>>2]|0)+260>>2]&511](t,g,k[f>>2]|0,J);nd[k[(k[t>>2]|0)+336>>2]&1023](t,C,J);nd[k[(k[I>>2]|0)+48>>2]&1023](I,j,J);if(L)nd[k[(k[R>>2]|0)+48>>2]&1023](R,l,J);p[h>>3]=+p[M>>3]*+p[g>>3];ZX(C,1,z,1,h,1,1,0,C,1,z,0,k[n>>2]|0,1)|0;H=Hc[k[(k[t>>2]|0)+164>>2]&511](t)|0;F=Rqa(H>>>0>536870911?-1:H<<3)|0;nd[k[(k[t>>2]|0)+336>>2]&1023](t,F,J);if((H|0)>0){E=0;do{U=+p[F+(E<<3)>>3];V=0;do{W=y+((ma(V,H)|0)+E<<3)|0;p[W>>3]=U;V=V+1|0}while((V|0)!=(s|0));E=E+1|0}while((E|0)!=(H|0))}Tqa(F);H=k[f>>2]|0;E=Hc[k[(k[t>>2]|0)+164>>2]&511](t)|0;A=ma(E,s)|0;G=Rqa(A>>>0>536870911?-1:A<<3)|0;rd[k[(k[t>>2]|0)+340>>2]&511](t,G,H,J);if((E|0)>0){H=0;do{A=0;do{V=(ma(A,E)|0)+H|0;p[m+(V<<3)>>3]=+p[G+(V<<3)>>3];A=A+1|0}while((A|0)!=(s|0));H=H+1|0}while((H|0)!=(E|0))}Tqa(G);U=+p[i>>3]*+p[M>>3]*+p[g>>3];p[h>>3]=U;if(!o)WEa(P|0,0,w|0)|0;p[P>>3]=U*+p[j>>3];if(L)p[N>>3]=U*+p[l>>3];ZX(y,s,z,1,P,s,s,0,m,s,z,0,k[n>>2]|0,1)|0;c:do switch(k[e>>2]|0){case 2:{U=+p[j>>3];if(q){X=U*(U*(S/((+$(+U)+1.0e-08)*2.0)));p[P>>3]=X;break c}else{X=+p[l>>3];Y=S/((+aa(+(U*U+X*X))+1.0e-08)*2.0);Z=U*Y;p[P>>3]=U*Z;_=X*Y;p[c>>3]=U*_;p[b>>3]=Z*X;p[N>>3]=X*_;break c}break}case 1:{Fc[k[(k[I>>2]|0)+64>>2]&1023](I,j);if(q){_=T*+$(+(+p[j>>3]));p[P>>3]=_;break c}else{Fc[k[(k[R>>2]|0)+64>>2]&1023](R,l);_=T*+$(+(+p[j>>3]));p[P>>3]=_;_=T*+$(+(+p[l>>3]));p[N>>3]=_;break c}break}default:{}}while(0);if(((k[e>>2]|0)+-1|0)>>>0<2){if(!o){_=+p[h>>3];G=0;do{E=P+(G<<3)|0;p[E>>3]=_*+p[E>>3];G=G+1|0}while((G|0)<(O|0))}ZX(m,s,z,1,P,s,s,0,m,s,z,0,k[n>>2]|0,1)|0}x=x+1|0;if((x|0)>=(Hc[k[(k[J>>2]|0)+12>>2]&511](J)|0))break b}}while(0);z=k[f>>2]|0;if(z)Tqa(z);k[f>>2]=0;Tqa(C);Tqa(y);Tqa(m);Tqa(P);Ec[k[(k[J>>2]|0)+4>>2]&1023](J);if((k[d>>2]|0)==300){u=D;r=a;return u|0}ap(t);if(!t){u=D;r=a;return u|0}Ec[k[(k[t>>2]|0)+4>>2]&1023](t);u=D;r=a;return u|0}function Ffa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0.0;a=r;r=r+416|0;c=a+396|0;d=a+392|0;e=a+32|0;f=a+24|0;g=a+16|0;h=a+8|0;i=a;j=a+388|0;l=a+240|0;m=a+376|0;n=a+224|0;o=a+76|0;q=a+88|0;s=a+64|0;t=a+52|0;u=a+40|0;k[j>>2]=0;cp(b,d,298);a:do switch(k[d>>2]|0){case 300:{v=2;w=b;break}case 301:{if(Hc[k[(k[b>>2]|0)+252>>2]&511](b)|0){v=1;w=Hc[k[(k[b>>2]|0)+436>>2]&511](b)|0;break a}else{x=0;r=a;return x|0}break}case 302:{if(Hc[k[(k[b>>2]|0)+252>>2]&511](b)|0){v=2;w=Hc[k[(k[b>>2]|0)+436>>2]&511](b)|0;break a}else{x=0;r=a;return x|0}break}default:{y=l+56|0;z=l+4|0;k[l>>2]=27524;k[y>>2]=27544;B=0;wa(508,l+56|0,z|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;D=A;vva(y);Qb(D|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[y>>2]=27488;B=0;va(448,z|0);A=B;B=0;do if(A&1){E=Rb()|0;F=Q;G=E}else{k[z>>2]=27560;E=l+36|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,z|0,c|0);H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(c);Yua(E);Ava(z);F=I;G=H;break}Yua(c);B=0;H=Ia(40,l|0,144639,5)|0;I=B;B=0;b:do if((((!(I&1)?(B=0,J=ya(427,k[d>>2]|0)|0,K=B,B=0,!(K&1)):0)?(K=Lta(J)|0,B=0,L=Ia(40,H|0,J|0,K|0)|0,K=B,B=0,!(K&1)):0)?(B=0,K=Ia(40,L|0,146481,18)|0,L=B,B=0,!(L&1)):0)?(B=0,Xa(239,K|0,0)|0,K=B,B=0,!(K&1)):0){K=Ab(20)|0;B=0;eb(502,m|0,134272,82);L=B;B=0;do if(!(L&1)){B=0;eb(502,n|0,144203,13);J=B;B=0;if(J&1){J=Rb()|0;M=Q;Yua(m);N=M;O=J;break}B=0;wa(510,o|0,z|0);J=B;B=0;if(J&1){J=Rb()|0;P=Q;R=J;S=1}else{B=0;ua(163,K|0,m|0,n|0,264,o|0);J=B;B=0;if(J&1)T=1;else{B=0;eb(503,K|0,1240,229);B=0;T=0}J=Rb()|0;M=Q;Yua(o);P=M;R=J;S=T}Yua(n);Yua(m);if(S){N=P;O=R}else{U=P;V=R;break b}}else{J=Rb()|0;N=Q;O=J}while(0);zb(K|0);U=N;V=O}else W=24;while(0);if((W|0)==24){H=Rb()|0;U=Q;V=H}k[l>>2]=27468;k[y>>2]=27488;k[z>>2]=27560;Yua(E);Ava(z);vva(y);X=V;Y=U;Qb(X|0)}while(0);C=F;D=G;vva(y);Qb(D|0)}}while(0);D=Hc[k[(k[w>>2]|0)+164>>2]&511](w)|0;G=iq(w,534)|0;F=Rqa(D>>>0>536870911?-1:D<<3)|0;Uo(w,j);pp(w,f,358);C=Wo(w,388)|0;U=Wo(w,339)|0;switch(v|0){case 1:{Z=Wo(w,677)|0;break}case 2:{Z=Wo(w,679)|0;break}default:{v=q+56|0;V=q+4|0;k[q>>2]=27524;k[v>>2]=27544;B=0;wa(508,q+56|0,V|0);l=B;B=0;if(l&1){l=Rb()|0;_=Q;$=l;vva(v);Qb($|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[v>>2]=27488;B=0;va(448,V|0);l=B;B=0;do if(l&1){O=Rb()|0;aa=Q;ba=O}else{k[V>>2]=27560;O=q+36|0;k[O>>2]=0;k[O+4>>2]=0;k[O+8>>2]=0;k[O+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,V|0,c|0);N=B;B=0;if(N&1){N=Rb()|0;R=Q;Yua(c);Yua(O);Ava(V);aa=R;ba=N;break}Yua(c);B=0;N=Ia(40,q|0,143640,15)|0;R=B;B=0;c:do if(!(R&1)?(B=0,Xa(239,N|0,0)|0,P=B,B=0,!(P&1)):0){P=Ab(20)|0;B=0;eb(502,s|0,134272,82);S=B;B=0;do if(!(S&1)){B=0;eb(502,t|0,144203,13);m=B;B=0;if(m&1){m=Rb()|0;n=Q;Yua(s);ca=n;da=m;break}B=0;wa(510,u|0,V|0);m=B;B=0;if(m&1){m=Rb()|0;ea=1;fa=m;ga=Q}else{B=0;ua(163,P|0,s|0,t|0,283,u|0);m=B;B=0;if(m&1)ha=1;else{B=0;eb(503,P|0,1240,229);B=0;ha=0}m=Rb()|0;n=Q;Yua(u);ea=ha;fa=m;ga=n}Yua(t);Yua(s);if(ea){ca=ga;da=fa}else{ia=fa;ja=ga;break c}}else{n=Rb()|0;ca=Q;da=n}while(0);zb(P|0);ia=da;ja=ca}else W=50;while(0);if((W|0)==50){N=Rb()|0;ia=N;ja=Q}k[q>>2]=27468;k[v>>2]=27488;k[V>>2]=27560;Yua(O);Ava(V);vva(v);X=ia;Y=ja;Qb(X|0)}while(0);_=aa;$=ba;vva(v);Qb($|0)}}$=ed[k[(k[w>>2]|0)+308>>2]&511](w,2)|0;v=Hc[k[(k[$>>2]|0)+8>>2]&511]($)|0;d:do if((v|0)<(Hc[k[(k[$>>2]|0)+12>>2]&511]($)|0)){ba=$+8|0;aa=G+4|0;if((D|0)>0)ka=v;else{_=v;while(1){Fc[k[(k[$>>2]|0)+24>>2]&1023]($,_);rd[k[(k[w>>2]|0)+260>>2]&511](w,e,k[j>>2]|0,$);nd[k[(k[w>>2]|0)+336>>2]&1023](w,F,$);nd[k[(k[C>>2]|0)+48>>2]&1023](C,g,$);nd[k[(k[Z>>2]|0)+48>>2]&1023](Z,i,$);nd[k[(k[U>>2]|0)+48>>2]&1023](U,h,$);_=_+1|0;if((_|0)>=(Hc[k[(k[$>>2]|0)+12>>2]&511]($)|0))break d}}do{Fc[k[(k[$>>2]|0)+24>>2]&1023]($,ka);rd[k[(k[w>>2]|0)+260>>2]&511](w,e,k[j>>2]|0,$);nd[k[(k[w>>2]|0)+336>>2]&1023](w,F,$);nd[k[(k[C>>2]|0)+48>>2]&1023](C,g,$);nd[k[(k[Z>>2]|0)+48>>2]&1023](Z,i,$);nd[k[(k[U>>2]|0)+48>>2]&1023](U,h,$);_=k[aa>>2]|0;O=0;do{la=+p[f>>3];X=_+(O<<3)|0;p[X>>3]=+p[X>>3]+ +p[F+(O<<3)>>3]*(+p[e>>3]*+p[ba>>3]*(+p[h>>3]+la*+p[g>>3]+la*+p[i>>3]));O=O+1|0}while((O|0)!=(D|0));ka=ka+1|0}while((ka|0)<(Hc[k[(k[$>>2]|0)+12>>2]&511]($)|0))}while(0);ka=k[j>>2]|0;if(ka)Tqa(ka);k[j>>2]=0;Tqa(F);Ec[k[(k[$>>2]|0)+4>>2]&1023]($);if((k[d>>2]|0)==300){x=G;r=a;return x|0}ap(w);if(!w){x=G;r=a;return x|0}Ec[k[(k[w>>2]|0)+4>>2]&1023](w);x=G;r=a;return x|0}function Gfa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,134272,82);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,368,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Hfa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,134272,82);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,371,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function Ifa(a,b,c){a=a|0;b=b|0;c=c|0;nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,339);return}function Jfa(a,b){a=a|0;b=b|0;return}function Kfa(a){a=a|0;Sqa(a);return}function Lfa(a,b,c){a=a|0;b=b|0;c=c|0;return}function Mfa(a,b,c){a=a|0;b=b|0;c=c|0;return}function Nfa(a,b,c){a=a|0;b=b|0;c=c|0;hoa(b,c,515,738,534);return}function Ofa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function Pfa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0;a=c+56|0;f=k[a>>2]|0;if((f|0)>0){g=c+32|0;h=f;f=0;j=0;while(1){if(!(i[(k[g>>2]|0)+j>>0]|0)){l=h;m=f}else{n=qh(b,f)|0;Uc[k[(k[n>>2]|0)+480>>2]&63](n,j,c,d,e,738);l=k[a>>2]|0;m=f+1|0}j=j+1|0;if((j|0)>=(l|0))break;else{h=l;f=m}}}if((k[c+40>>2]|0)!=301)return;Zka(c,b,136615,287);return}function Qfa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function Rfa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,134381,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,40,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Sfa(a,b){a=a|0;b=b|0;return 0}function Tfa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,134381,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,47,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Ufa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;a=r;r=r+16|0;c=a;d=a+12|0;e=a+8|0;k[d>>2]=0;cp(b,e,299);f=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;g=gq(b,534)|0;h=ma(k[e>>2]|0,f)|0;i=Rqa(h>>>0>536870911?-1:h<<3)|0;Uo(b,d);h=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;j=Hc[k[(k[h>>2]|0)+8>>2]&511](h)|0;a:do if((j|0)<(Hc[k[(k[h>>2]|0)+12>>2]&511](h)|0)){l=h+8|0;m=g+12|0;if((f|0)>0)n=j;else{o=j;while(1){Fc[k[(k[h>>2]|0)+24>>2]&1023](h,o);rd[k[(k[b>>2]|0)+260>>2]&511](b,c,k[d>>2]|0,h);rd[k[(k[b>>2]|0)+340>>2]&511](b,i,k[d>>2]|0,h);o=o+1|0;if((o|0)>=(Hc[k[(k[h>>2]|0)+12>>2]&511](h)|0))break a}}do{Fc[k[(k[h>>2]|0)+24>>2]&1023](h,n);rd[k[(k[b>>2]|0)+260>>2]&511](b,c,k[d>>2]|0,h);rd[k[(k[b>>2]|0)+340>>2]&511](b,i,k[d>>2]|0,h);o=ma((k[e>>2]|0)+-1|0,f)|0;q=k[m>>2]|0;s=0;do{t=i+(o+s<<3)|0;u=ma(s,f)|0;v=0;do{w=q+(v+u<<3)|0;p[w>>3]=+p[w>>3]+ +p[l>>3]*+p[c>>3]*(+p[t>>3]*+p[i+(o+v<<3)>>3]);v=v+1|0}while((v|0)!=(f|0));s=s+1|0}while((s|0)!=(f|0));n=n+1|0}while((n|0)<(Hc[k[(k[h>>2]|0)+12>>2]&511](h)|0))}while(0);n=k[d>>2]|0;if(!n){k[d>>2]=0;x=k[h>>2]|0;y=x+4|0;z=k[y>>2]|0;Ec[z&1023](h);r=a;return g|0}Tqa(n);k[d>>2]=0;x=k[h>>2]|0;y=x+4|0;z=k[y>>2]|0;Ec[z&1023](h);r=a;return g|0}function Vfa(a,b){a=a|0;b=b|0;return 0}function Wfa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,134381,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,94,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Xfa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,134381,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,97,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function Yfa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=r;r=r+16|0;d=a;cp(c,d,575);nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,k[d>>2]|0);r=a;return}function Zfa(a,b){a=a|0;b=b|0;return}function _fa(a){a=a|0;Sqa(a);return}function $fa(a,b,c){a=a|0;b=b|0;c=c|0;return}function aga(a,b,c){a=a|0;b=b|0;c=c|0;return}function bga(a,b,c){a=a|0;b=b|0;c=c|0;hoa(b,c,516,738,534);return}function cga(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function dga(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0;a=c+56|0;f=k[a>>2]|0;if((f|0)>0){g=c+32|0;h=f;f=0;j=0;while(1){if(!(i[(k[g>>2]|0)+j>>0]|0)){l=h;m=f}else{n=qh(b,f)|0;Uc[k[(k[n>>2]|0)+480>>2]&63](n,j,c,d,e,738);l=k[a>>2]|0;m=f+1|0}j=j+1|0;if((j|0)>=(l|0))break;else{h=l;f=m}}}if((k[c+40>>2]|0)!=301)return;Zka(c,b,136615,287);return}function ega(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function fga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,134490,82);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,40,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function gga(a,b){a=a|0;b=b|0;return 0}function hga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,134490,82);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,47,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function iga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;a=r;r=r+16|0;c=a;d=a+12|0;e=a+8|0;k[d>>2]=0;cp(b,e,299);f=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;g=gq(b,534)|0;h=ma(k[e>>2]|0,f)|0;i=Rqa(h>>>0>536870911?-1:h<<3)|0;Uo(b,d);h=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;j=Hc[k[(k[h>>2]|0)+8>>2]&511](h)|0;a:do if((j|0)<(Hc[k[(k[h>>2]|0)+12>>2]&511](h)|0)){l=h+8|0;m=g+12|0;if((f|0)>0)n=j;else{o=j;while(1){Fc[k[(k[h>>2]|0)+24>>2]&1023](h,o);rd[k[(k[b>>2]|0)+260>>2]&511](b,c,k[d>>2]|0,h);rd[k[(k[b>>2]|0)+340>>2]&511](b,i,k[d>>2]|0,h);o=o+1|0;if((o|0)>=(Hc[k[(k[h>>2]|0)+12>>2]&511](h)|0))break a}}do{Fc[k[(k[h>>2]|0)+24>>2]&1023](h,n);rd[k[(k[b>>2]|0)+260>>2]&511](b,c,k[d>>2]|0,h);rd[k[(k[b>>2]|0)+340>>2]&511](b,i,k[d>>2]|0,h);o=ma((k[e>>2]|0)+-1|0,f)|0;q=k[m>>2]|0;s=0;do{t=i+(o+s<<3)|0;u=ma(s,f)|0;v=0;do{w=q+(v+u<<3)|0;p[w>>3]=+p[w>>3]+ +p[l>>3]*+p[c>>3]*(+p[t>>3]*+p[i+(o+v<<3)>>3]);v=v+1|0}while((v|0)!=(f|0));s=s+1|0}while((s|0)!=(f|0));n=n+1|0}while((n|0)<(Hc[k[(k[h>>2]|0)+12>>2]&511](h)|0))}while(0);n=k[d>>2]|0;if(!n){k[d>>2]=0;x=k[h>>2]|0;y=x+4|0;z=k[y>>2]|0;Ec[z&1023](h);r=a;return g|0}Tqa(n);k[d>>2]=0;x=k[h>>2]|0;y=x+4|0;z=k[y>>2]|0;Ec[z&1023](h);r=a;return g|0}function jga(a,b){a=a|0;b=b|0;return 0}function kga(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,134490,82);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,94,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function lga(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,134490,82);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,97,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function mga(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=r;r=r+16|0;d=a;cp(c,d,575);nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,k[d>>2]|0);r=a;return}function nga(a,b){a=a|0;b=b|0;return}function oga(a){a=a|0;Sqa(a);return}function pga(a,b,c){a=a|0;b=b|0;c=c|0;return}function qga(a,b,c){a=a|0;b=b|0;c=c|0;return}function rga(a,b,c){a=a|0;b=b|0;c=c|0;hoa(b,c,517,738,534);return}function sga(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function tga(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0;a=c+56|0;f=k[a>>2]|0;if((f|0)>0){g=c+32|0;h=f;f=0;j=0;while(1){if(!(i[(k[g>>2]|0)+j>>0]|0)){l=h;m=f}else{n=qh(b,f)|0;Uc[k[(k[n>>2]|0)+480>>2]&63](n,j,c,d,e,738);l=k[a>>2]|0;m=f+1|0}j=j+1|0;if((j|0)>=(l|0))break;else{h=l;f=m}}}if((k[c+40>>2]|0)!=301)return;Zka(c,b,136615,287);return}function uga(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function vga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,134596,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,40,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function wga(a,b){a=a|0;b=b|0;return 0}function xga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,134596,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,47,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function yga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0;a=r;r=r+32|0;c=a+20|0;d=a+8|0;e=a;f=a+16|0;k[f>>2]=0;cp(b,c,299);g=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;h=gq(b,534)|0;i=Rqa(g>>>0>536870911?-1:g<<3)|0;Uo(b,f);j=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;l=Hc[k[(k[j>>2]|0)+8>>2]&511](j)|0;if((l|0)<(Hc[k[(k[j>>2]|0)+12>>2]&511](j)|0)){m=j+8|0;n=h+12|0;o=l;do{Fc[k[(k[j>>2]|0)+24>>2]&1023](j,o);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[f>>2]|0,j);l=k[c>>2]|0;q=k[f>>2]|0;s=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;t=ma(s,l)|0;u=Rqa(t>>>0>536870911?-1:t<<3)|0;rd[k[(k[b>>2]|0)+340>>2]&511](b,u,q,j);if((s|0)>0)TEa(i|0,u+(ma((l<<3)+-8|0,s)|0)|0,s<<3|0)|0;Tqa(u);p[e>>3]=+p[m>>3]*+p[d>>3]*1.0e9;ZX(i,1,g,1,e,1,1,0,i,1,g,0,k[n>>2]|0,1)|0;p[e>>3]=+p[m>>3]*+p[d>>3];nd[k[(k[b>>2]|0)+336>>2]&1023](b,i,j);ZX(i,g,1,0,e,1,1,0,i,1,g,0,k[n>>2]|0,1)|0;o=o+1|0}while((o|0)<(Hc[k[(k[j>>2]|0)+12>>2]&511](j)|0))}o=k[f>>2]|0;if(!o){k[f>>2]=0;Tqa(i);v=k[j>>2]|0;w=v+4|0;x=k[w>>2]|0;Ec[x&1023](j);r=a;return h|0}Tqa(o);k[f>>2]=0;Tqa(i);v=k[j>>2]|0;w=v+4|0;x=k[w>>2]|0;Ec[x&1023](j);r=a;return h|0}function zga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0.0,t=0,u=0,v=0,w=0,x=0;a=r;r=r+32|0;c=a+20|0;d=a+8|0;e=a;f=a+16|0;k[f>>2]=0;g=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;h=iq(b,534)|0;i=Rqa(g>>>0>536870911?-1:g<<3)|0;Uo(b,f);cp(b,c,577);j=Wo(b,k[c>>2]|0)|0;c=ed[k[(k[b>>2]|0)+308>>2]&511](b,3)|0;l=Hc[k[(k[c>>2]|0)+8>>2]&511](c)|0;a:do if((l|0)<(Hc[k[(k[c>>2]|0)+12>>2]&511](c)|0)){m=c+8|0;n=h+4|0;if((g|0)>0)o=l;else{q=l;while(1){Fc[k[(k[c>>2]|0)+24>>2]&1023](c,q);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[f>>2]|0,c);nd[k[(k[b>>2]|0)+336>>2]&1023](b,i,c);nd[k[(k[j>>2]|0)+48>>2]&1023](j,e,c);q=q+1|0;if((q|0)>=(Hc[k[(k[c>>2]|0)+12>>2]&511](c)|0))break a}}do{Fc[k[(k[c>>2]|0)+24>>2]&1023](c,o);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[f>>2]|0,c);nd[k[(k[b>>2]|0)+336>>2]&1023](b,i,c);nd[k[(k[j>>2]|0)+48>>2]&1023](j,e,c);s=+p[e>>3]*+p[d>>3]*+p[m>>3];q=k[n>>2]|0;t=0;do{u=q+(t<<3)|0;p[u>>3]=s*+p[i+(t<<3)>>3]+ +p[u>>3];t=t+1|0}while((t|0)!=(g|0));o=o+1|0}while((o|0)<(Hc[k[(k[c>>2]|0)+12>>2]&511](c)|0))}while(0);Tqa(i);i=k[f>>2]|0;if(!i){k[f>>2]=0;v=k[c>>2]|0;w=v+4|0;x=k[w>>2]|0;Ec[x&1023](c);r=a;return h|0}Tqa(i);k[f>>2]=0;v=k[c>>2]|0;w=v+4|0;x=k[w>>2]|0;Ec[x&1023](c);r=a;return h|0}function Aga(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,134596,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,160,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Bga(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,134596,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,163,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function Cga(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=r;r=r+16|0;d=a;cp(c,d,577);nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,k[d>>2]|0);r=a;return}function Dga(a,b){a=a|0;b=b|0;return}function Ega(a){a=a|0;Sqa(a);return}function Fga(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;a=r;r=r+368|0;d=a+348|0;e=a+200|0;f=a+336|0;g=a+184|0;h=a+36|0;i=a+48|0;j=a+24|0;l=a+12|0;m=a;if((k[c+40>>2]|0)!=302){n=e+56|0;o=e+4|0;k[e>>2]=27524;k[n>>2]=27544;B=0;wa(508,e+56|0,o|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;s=p;vva(n);Qb(s|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[n>>2]=27488;B=0;va(448,o|0);p=B;B=0;do if(p&1){t=Rb()|0;u=Q;v=t}else{k[o>>2]=27560;t=e+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,o|0,d|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(d);Yua(t);Ava(o);u=x;v=w;break}Yua(d);B=0;w=Ia(40,e|0,134695,17)|0;x=B;B=0;a:do if(!(x&1)?(B=0,Xa(239,w|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,f|0,134713,75);z=B;B=0;do if(!(z&1)){B=0;eb(502,g|0,135838,17);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(f);D=A;E=C;break}B=0;wa(510,h|0,o|0);C=B;B=0;if(C&1){C=Rb()|0;F=Q;G=C;H=1}else{B=0;ua(163,y|0,f|0,g|0,14,h|0);C=B;B=0;if(C&1)I=1;else{B=0;eb(503,y|0,1240,229);B=0;I=0}C=Rb()|0;A=Q;Yua(h);F=A;G=C;H=I}Yua(g);Yua(f);if(H){D=G;E=F}else{J=G;K=F;break a}}else{C=Rb()|0;D=C;E=Q}while(0);zb(y|0);J=D;K=E}else L=17;while(0);if((L|0)==17){w=Rb()|0;J=w;K=Q}k[e>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);M=K;N=J;Qb(N|0)}while(0);q=u;s=v;vva(n);Qb(s|0)}s=c+28|0;b:do switch(k[s>>2]|0){case 518:case 522:break;case 523:{Fka(c,d,134789);switch(k[d>>2]|0){case 438:case 457:break;default:break b}soa(b,c,134812,521,738,0);r=a;return}default:{n=i+56|0;v=i+4|0;k[i>>2]=27524;k[n>>2]=27544;B=0;wa(508,i+56|0,v|0);u=B;B=0;if(u&1){u=Rb()|0;O=Q;P=u;vva(n);Qb(P|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[n>>2]=27488;B=0;va(448,v|0);u=B;B=0;do if(u&1){q=Rb()|0;R=Q;S=q}else{k[v>>2]=27560;q=i+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,v|0,d|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(d);Yua(q);Ava(v);R=K;S=J;break}Yua(d);B=0;J=Ia(40,i|0,134802,9)|0;K=B;B=0;c:do if((((!(K&1)?(B=0,o=ya(427,k[s>>2]|0)|0,e=B,B=0,!(e&1)):0)?(e=Lta(o)|0,B=0,E=Ia(40,J|0,o|0,e|0)|0,e=B,B=0,!(e&1)):0)?(B=0,e=Ia(40,E|0,146481,18)|0,E=B,B=0,!(E&1)):0)?(B=0,Xa(239,e|0,0)|0,e=B,B=0,!(e&1)):0){e=Ab(20)|0;B=0;eb(502,j|0,134713,75);E=B;B=0;do if(!(E&1)){B=0;eb(502,l|0,135838,17);o=B;B=0;if(o&1){o=Rb()|0;D=Q;Yua(j);T=o;U=D;break}B=0;wa(510,m|0,v|0);D=B;B=0;if(D&1){D=Rb()|0;V=1;W=Q;X=D}else{B=0;ua(163,e|0,j|0,l|0,31,m|0);D=B;B=0;if(D&1)Y=1;else{B=0;eb(503,e|0,1240,229);B=0;Y=0}D=Rb()|0;o=Q;Yua(m);V=Y;W=o;X=D}Yua(l);Yua(j);if(V){T=X;U=W}else{Z=W;_=X;break c}}else{D=Rb()|0;T=D;U=Q}while(0);zb(e|0);Z=U;_=T}else L=45;while(0);if((L|0)==45){J=Rb()|0;Z=Q;_=J}k[i>>2]=27468;k[n>>2]=27488;k[v>>2]=27560;Yua(q);Ava(v);vva(n);M=Z;N=_;Qb(N|0)}while(0);O=R;P=S;vva(n);Qb(P|0)}}while(0);qoa(b,c,134812,521,738,0);r=a;return}function Gga(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0.0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;a=r;r=r+208|0;d=a+8|0;e=a;f=a+184|0;g=a+48|0;h=a+36|0;i=a+24|0;j=a+12|0;if((k[c+40>>2]|0)!=300){k[e>>2]=134812;Ska(c,1,e);foa(c);e=c+52|0;if((k[e>>2]|0)<=0){k[d>>2]=134812;Lka(c,1,d);r=a;return}l=c+36|0;m=c+104|0;n=0;while(1){if((k[(k[l>>2]|0)+(n<<2)>>2]|0)!=0?(o=(Jka(c,134812)|0)+(n<<3)|0,q=+$(+(+p[o>>3])),p[t>>3]=q,o=k[t+4>>2]|0,o>>>0>2146435072|(o|0)==2146435072&(k[t>>2]|0)>>>0>0):0){o=Qqa(52)|0;B=0;ua(177,o|0,n+1+(k[m>>2]|0)|0,n|0,c|0,521);s=B;B=0;if(s&1){u=o;break}ih(b,o)|0}n=n+1|0;if((n|0)>=(k[e>>2]|0)){v=27;break}}if((v|0)==27){k[d>>2]=134812;Lka(c,1,d);r=a;return}a=Rb()|0;d=Q;Sqa(u);w=d;x=a;Qb(x|0)}a=g+56|0;d=g+4|0;k[g>>2]=27524;k[a>>2]=27544;B=0;wa(508,g+56|0,d|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;vva(a);Qb(z|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[a>>2]=27488;B=0;va(448,d|0);u=B;B=0;do if(u&1){c=Rb()|0;A=Q;C=c}else{k[d>>2]=27560;c=g+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,d|0,f|0);e=B;B=0;if(e&1){e=Rb()|0;n=Q;Yua(f);Yua(c);Ava(d);A=n;C=e;break}Yua(f);B=0;e=Ia(40,g|0,134838,27)|0;n=B;B=0;a:do if(!(n&1)?(B=0,Xa(239,e|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,h|0,134713,75);m=B;B=0;do if(!(m&1)){B=0;eb(502,i|0,135856,11);l=B;B=0;if(l&1){l=Rb()|0;o=Q;Yua(h);D=o;E=l;break}B=0;wa(510,j|0,d|0);l=B;B=0;if(l&1){l=Rb()|0;F=Q;G=l;H=1}else{B=0;ua(163,b|0,h|0,i|0,44,j|0);l=B;B=0;if(l&1)I=1;else{B=0;eb(503,b|0,1240,229);B=0;I=0}l=Rb()|0;o=Q;Yua(j);F=o;G=l;H=I}Yua(i);Yua(h);if(H){D=F;E=G}else{J=F;K=G;break a}}else{l=Rb()|0;D=Q;E=l}while(0);zb(b|0);J=D;K=E}else v=17;while(0);if((v|0)==17){e=Rb()|0;J=Q;K=e}k[g>>2]=27468;k[a>>2]=27488;k[d>>2]=27560;Yua(c);Ava(d);vva(a);w=J;x=K;Qb(x|0)}while(0);y=A;z=C;vva(a);Qb(z|0)}function Hga(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a=r;r=r+16|0;d=a+8|0;e=a;if((k[c+40>>2]|0)==302){k[e>>2]=136615;k[e+4>>2]=136636;Ska(c,2,e)}hoa(b,c,521,738,534);k[d>>2]=136615;k[d+4>>2]=136636;Lka(c,2,d);r=a;return}function Iga(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function Jga(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;a=r;r=r+208|0;f=a+188|0;g=a+184|0;h=a+180|0;j=a+176|0;l=a+201|0;m=a+200|0;n=a+40|0;o=a+24|0;p=a+12|0;q=a;s=c+40|0;if((k[s>>2]|0)==300){r=a;return}t=c+56|0;u=k[t>>2]|0;if((u|0)>0){v=c+32|0;w=u;u=0;x=0;while(1){if(!(i[(k[v>>2]|0)+x>>0]|0)){y=w;z=u}else{A=qh(b,u)|0;Uc[k[(k[A>>2]|0)+480>>2]&63](A,x,c,d,e,738);y=k[t>>2]|0;z=u+1|0}x=x+1|0;if((x|0)>=(y|0))break;else{w=y;u=z}}}zka(c,l,134866);zka(c,m,134882);Fka(c,g,134909);Zka(c,b,137052,353);Zka(c,b,134925,339);Zka(c,b,134945,64);Yka(c,b,137955,999,0.0);Zka(c,b,137867,206);Zka(c,b,134962,928);if((k[s>>2]|0)!=300){Zka(c,b,136615,287);Zka(c,b,136636,288)}Zka(c,b,136615,287);Zka(c,b,136636,288);Zka(c,b,134991,214);Zka(c,b,135015,217);Zka(c,b,135039,653);Zka(c,b,135066,666);Zka(c,b,135923,674);Zka(c,b,135944,677);Zka(c,b,135096,679);woa(b,0.0,684);woa(b,0.0,685);woa(b,0.0,686);if(i[m>>0]|0)Zka(c,b,136615,287);Fka(c,h,135117);if((k[h>>2]|0)!=62)Zka(c,b,135140,38);switch(k[g>>2]|0){case 1:{Zka(c,b,135172,105);Zka(c,b,135196,107);Zka(c,b,135210,108);break}case 2:{Zka(c,b,135224,110);Zka(c,b,135238,109);break}case 3:{Fka(c,j,135252);Zka(c,b,135224,110);Zka(c,b,135273,104);Zka(c,b,135210,108);if(!(k[j>>2]|0))Zka(c,b,135288,115);break}case 4:{Zka(c,b,135172,105);Zka(c,b,135196,107);Zka(c,b,135210,108);Zka(c,b,135039,653);Zka(c,b,135066,666);break}case 5:{Zka(c,b,135172,105);Zka(c,b,135196,107);Zka(c,b,135210,108);Zka(c,b,135319,114);break}case 6:{Zka(c,b,135224,110);Zka(c,b,135238,109);Zka(c,b,135039,653);Zka(c,b,135066,666);break}default:{b=n+56|0;c=n+4|0;k[n>>2]=27524;k[b>>2]=27544;B=0;wa(508,n+56|0,c|0);j=B;B=0;if(j&1){j=Rb()|0;C=Q;D=j;vva(b);Qb(D|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[b>>2]=27488;B=0;va(448,c|0);j=B;B=0;do if(j&1){g=Rb()|0;E=Q;F=g}else{k[c>>2]=27560;g=n+36|0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,c|0,f|0);h=B;B=0;if(h&1){h=Rb()|0;m=Q;Yua(f);Yua(g);Ava(c);E=m;F=h;break}Yua(f);B=0;h=Ia(40,n|0,145010,13)|0;m=B;B=0;if(!(m&1)?(B=0,Xa(239,h|0,0)|0,h=B,B=0,!(h&1)):0){h=Ab(20)|0;B=0;eb(502,o|0,134713,75);m=B;B=0;do if(!(m&1)){B=0;eb(502,p|0,136133,14);s=B;B=0;if(s&1){s=Rb()|0;l=Q;Yua(o);G=l;H=s;break}B=0;wa(510,q|0,c|0);s=B;B=0;if(s&1){s=Rb()|0;I=Q;J=s;K=1}else{B=0;ua(163,h|0,o|0,p|0,170,q|0);s=B;B=0;if(s&1)L=1;else{B=0;eb(503,h|0,1240,229);B=0;L=0}s=Rb()|0;l=Q;Yua(q);I=l;J=s;K=L}Yua(p);Yua(o);if(K){G=I;H=J}else{M=I;N=J;k[n>>2]=27468;k[b>>2]=27488;k[c>>2]=27560;Yua(g);Ava(c);vva(b);Qb(N|0)}}else{s=Rb()|0;G=Q;H=s}while(0);zb(h|0);M=G;N=H;k[n>>2]=27468;k[b>>2]=27488;k[c>>2]=27560;Yua(g);Ava(c);vva(b);Qb(N|0)}m=Rb()|0;M=Q;N=m;k[n>>2]=27468;k[b>>2]=27488;k[c>>2]=27560;Yua(g);Ava(c);vva(b);Qb(N|0)}while(0);C=E;D=F;vva(b);Qb(D|0)}}r=a;return}function Kga(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;e=r;r=r+16|0;d=e+8|0;a=e+4|0;f=e;k[a>>2]=0;YN(b,Ika(c,135343,343)|0);YN(b,Ika(c,135362,348)|0);YN(b,Ika(c,135387,344)|0);YN(b,Ika(c,135413,346)|0);YN(b,Ika(c,135442,345)|0);YN(b,Ika(c,135466,340)|0);YN(b,Ika(c,135488,341)|0);YN(b,Ika(c,134909,111)|0);Hka(c,a,d,135517);g=Qqa(12)|0;B=0;eb(518,g|0,349,k[d>>2]|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;Sqa(g);j=i;l=h;Qb(l|0)}YN(b,g);g=k[d>>2]|0;do if(!g)m=0;else{h=Qqa(16)|0;B=0;ib(294,h|0,350,k[a>>2]|0,g|0);i=B;B=0;if(!(i&1)){YN(b,h);m=k[d>>2]|0;break}i=Rb()|0;n=Q;Sqa(h);j=n;l=i;Qb(l|0)}while(0);Nka(c,a,m,135517);Fka(c,f,134909);m=k[f>>2]|0;if((m&-3|0)==4){YN(b,Ika(c,135546,112)|0);o=k[f>>2]|0}else o=m;if((o|0)!=3){r=e;return}YN(b,Ika(c,135252,116)|0);r=e;return}function Lga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,134713,75);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,201,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Mga(a,b){a=a|0;b=b|0;return 0}function Nga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,134713,75);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,208,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Oga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if(!($p(b)|0)){c=0;return c|0}d=Pga(a,b)|0;a=Qga(0,b)|0;b=Qqa(68)|0;B=0;eb(515,b|0,d|0,a|0);e=B;B=0;if(e&1){e=Rb()|0;Sqa(b);Qb(e|0)}if(d){HN(d);Sqa(d)}if(!a){c=b;return c|0}HN(a);Sqa(a);c=b;return c|0}function Pga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0,H=0,I=0,J=0,K=0,L=0.0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0.0,ka=0.0,la=0.0,na=0.0,oa=0.0,pa=0.0,qa=0.0,ra=0.0,sa=0.0,ta=0,ua=0,va=0;a=r;r=r+256|0;c=a+244|0;d=a+232|0;e=a+224|0;f=a+216|0;g=a+208|0;h=a+200|0;i=a+192|0;j=a+184|0;l=a+176|0;m=a+168|0;n=a+160|0;o=a+152|0;q=a+144|0;s=a+240|0;t=a+72|0;u=a;if(!($p(b)|0)){v=0;r=a;return v|0}k[s>>2]=0;w=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;x=gq(b,534)|0;y=Rqa(w>>>0>536870911?-1:w<<3)|0;z=w*3|0;A=z>>>0>536870911?-1:z<<3;z=Rqa(A)|0;B=Rqa(A)|0;C=Rqa(A)|0;A=t;D=A+72|0;do{k[A>>2]=0;A=A+4|0}while((A|0)<(D|0));Uo(b,s);pp(b,e,358);cp(b,c,348);+Dp(b,266);E=+Dp(b,265);+Dp(b,65);F=+Dp(b,210);G=+Dp(b,270)/(E*F);A=Wo(b,674)|0;D=Wo(b,677)|0;H=Wo(b,679)|0;I=Wo(b,684)|0;J=Wo(b,685)|0;K=Wo(b,686)|0;if((k[c>>2]|0)==2)L=+id[k[(k[b>>2]|0)+292>>2]&63](b,k[s>>2]|0);else L=0.0;M=ed[k[(k[b>>2]|0)+308>>2]&511](b,4)|0;N=Hc[k[(k[M>>2]|0)+8>>2]&511](M)|0;a:do if((N|0)<(Hc[k[(k[M>>2]|0)+12>>2]&511](M)|0)){O=M+8|0;P=t+32|0;Q=t+64|0;R=x+12|0;S=u+8|0;T=u+16|0;U=u+24|0;V=u+32|0;W=u+40|0;X=u+48|0;Y=u+56|0;Z=u+64|0;_=(w|0)>0;ba=w<<1;ca=N;while(1){Fc[k[(k[M>>2]|0)+24>>2]&1023](M,ca);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[s>>2]|0,M);F=+p[O>>3]*+p[d>>3];p[q>>3]=F;E=+p[e>>3];if(E!=0.0)p[q>>3]=F*E;da=k[s>>2]|0;ea=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;fa=ea*3|0;ga=Rqa(fa>>>0>536870911?-1:fa<<3)|0;rd[k[(k[b>>2]|0)+340>>2]&511](b,ga,da,M);if((ea|0)>0){da=ea<<1;fa=0;do{p[B+(fa<<3)>>3]=+p[ga+(fa<<3)>>3];ha=fa+ea|0;p[B+(ha<<3)>>3]=+p[ga+(ha<<3)>>3];ha=fa+da|0;p[B+(ha<<3)>>3]=+p[ga+(ha<<3)>>3];fa=fa+1|0}while((fa|0)!=(ea|0))}Tqa(ga);E=G*+p[q>>3];p[t>>3]=E;p[P>>3]=E;p[Q>>3]=E;ZX(B,3,w,1,t,3,3,0,B,3,w,0,k[R>>2]|0,1)|0;ea=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;fa=Rqa(ea>>>0>536870911?-1:ea<<3)|0;nd[k[(k[b>>2]|0)+336>>2]&1023](b,fa,M);if((ea|0)>0){da=ea<<1;ha=0;do{E=+p[fa+(ha<<3)>>3];p[B+(ha<<3)>>3]=E;p[B+(ha+ea<<3)>>3]=E;p[B+(ha+da<<3)>>3]=E;ha=ha+1|0}while((ha|0)!=(ea|0))}Tqa(fa);ea=k[s>>2]|0;ha=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;da=ha*3|0;ga=Rqa(da>>>0>536870911?-1:da<<3)|0;rd[k[(k[b>>2]|0)+340>>2]&511](b,ga,ea,M);if((ha|0)>0){ea=ha<<1;da=0;do{p[C+(da<<3)>>3]=+p[ga+(da<<3)>>3];ia=da+ha|0;p[C+(ia<<3)>>3]=+p[ga+(ia<<3)>>3];ia=da+ea|0;p[C+(ia<<3)>>3]=+p[ga+(ia<<3)>>3];da=da+1|0}while((da|0)!=(ha|0))}Tqa(ga);nd[k[(k[A>>2]|0)+48>>2]&1023](A,f,M);nd[k[(k[I>>2]|0)+48>>2]&1023](I,i,M);E=+p[f>>3]-+p[i>>3];nd[k[(k[D>>2]|0)+48>>2]&1023](D,g,M);nd[k[(k[J>>2]|0)+48>>2]&1023](J,j,M);F=+p[g>>3]-+p[j>>3];nd[k[(k[H>>2]|0)+48>>2]&1023](H,h,M);nd[k[(k[K>>2]|0)+48>>2]&1023](K,l,M);ja=+p[h>>3]-+p[l>>3];ka=+p[q>>3];p[t>>3]=E*ka;p[P>>3]=F*ka;p[Q>>3]=ka*ja;ZX(B,3,w,1,t,3,3,0,C,3,w,0,k[R>>2]|0,1)|0;if(+p[e>>3]!=0.0){p[q>>3]=+p[O>>3]*+p[d>>3];nd[k[(k[b>>2]|0)+336>>2]&1023](b,y,M);ZX(y,w,1,0,q,1,1,0,y,1,w,0,k[R>>2]|0,1)|0;p[q>>3]=+p[q>>3]*+p[e>>3]}switch(k[c>>2]|0){case 1:{rd[k[(k[b>>2]|0)+108>>2]&511](b,m,n,o);ka=E*E;la=F*F;na=ja*ja;oa=+aa(+(ka+la+na))+1.0e-14;pa=E*+p[m>>3]/oa;qa=F*+p[n>>3]/oa;ra=ja*+p[o>>3]/oa;sa=+aa(+(pa*pa+qa*qa+ra*ra))/(oa*2.0);oa=sa*+$(+(E*F));ra=sa*+$(+(E*ja));E=sa*+$(+(F*ja));ja=+p[q>>3];p[u>>3]=ja*(ka*sa);ka=ja*oa;p[S>>3]=ka;oa=ja*ra;p[T>>3]=oa;p[U>>3]=ka;p[V>>3]=ja*(la*sa);la=ja*E;p[W>>3]=la;p[X>>3]=oa;p[Y>>3]=la;p[Z>>3]=ja*(na*sa);ha=k[s>>2]|0;da=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;ea=da*3|0;fa=Rqa(ea>>>0>536870911?-1:ea<<3)|0;rd[k[(k[b>>2]|0)+340>>2]&511](b,fa,ha,M);if((da|0)>0){ha=da<<1;ea=0;do{p[C+(ea<<3)>>3]=+p[fa+(ea<<3)>>3];ia=ea+da|0;p[C+(ia<<3)>>3]=+p[fa+(ia<<3)>>3];ia=ea+ha|0;p[C+(ia<<3)>>3]=+p[fa+(ia<<3)>>3];ea=ea+1|0}while((ea|0)!=(da|0))}Tqa(fa);ZX(C,3,w,1,u,3,3,0,C,3,w,0,k[R>>2]|0,1)|0;break}case 2:{rd[k[(k[b>>2]|0)+340>>2]&511](b,z,k[s>>2]|0,M);sa=+Pc[k[(k[b>>2]|0)+440>>2]&7](b,+p[f>>3]-+p[i>>3],+p[g>>3]-+p[j>>3],+p[h>>3]-+p[l>>3],L,G);if(_){da=k[R>>2]|0;ea=0;do{ha=z+(ea<<3)|0;ga=z+(ea+w<<3)|0;ia=z+(ea+ba<<3)|0;ta=ma(ea,w)|0;ua=0;do{na=+p[f>>3]-+p[i>>3];ja=+p[g>>3]-+p[j>>3];la=+p[h>>3]-+p[l>>3];va=da+(ua+ta<<3)|0;p[va>>3]=+p[va>>3]+sa*+p[q>>3]*(na*+p[ha>>3]+ja*+p[ga>>3]+la*+p[ia>>3])*(na*+p[z+(ua<<3)>>3]+ja*+p[z+(ua+w<<3)>>3]+la*+p[z+(ua+ba<<3)>>3]);ua=ua+1|0}while((ua|0)!=(w|0));ea=ea+1|0}while((ea|0)!=(w|0))}if(+p[e>>3]!=0.0?(p[q>>3]=+p[O>>3]*+p[d>>3],_):0){ea=k[R>>2]|0;da=0;do{fa=z+(da<<3)|0;ua=z+(da+w<<3)|0;ia=z+(da+ba<<3)|0;ga=ma(da,w)|0;ha=0;do{ta=ea+(ha+ga<<3)|0;p[ta>>3]=+p[ta>>3]+sa*+p[q>>3]*+p[y+(ha<<3)>>3]*((+p[f>>3]-+p[i>>3])*+p[fa>>3]+(+p[g>>3]-+p[j>>3])*+p[ua>>3]+(+p[h>>3]-+p[l>>3])*+p[ia>>3]);ha=ha+1|0}while((ha|0)!=(w|0));da=da+1|0}while((da|0)!=(w|0))}break}default:{}}ca=ca+1|0;if((ca|0)>=(Hc[k[(k[M>>2]|0)+12>>2]&511](M)|0))break a}}while(0);w=k[s>>2]|0;if(w)Tqa(w);k[s>>2]=0;Tqa(B);Tqa(C);Tqa(y);Tqa(z);Ec[k[(k[M>>2]|0)+4>>2]&1023](M);v=x;r=a;return v|0}function Qga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0;a=r;r=r+32|0;c=a+16|0;d=a+8|0;e=a;f=a+24|0;if(!($p(b)|0)){g=0;r=a;return g|0}if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){g=0;r=a;return g|0}if(!(_p(b)|0)){g=0;r=a;return g|0}k[f>>2]=0;if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0?_p(b)|0:0){h=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;i=gq(b,534)|0;j=Rqa(h>>>0>536870911?-1:h<<3)|0;Fc[k[(k[b>>2]|0)+188>>2]&1023](b,f);pp(b,c,358);+Dp(b,65);l=+Dp(b,266);m=+Dp(b,265);n=+Dp(b,210);o=+Dp(b,213);q=+Dp(b,269);s=ed[k[(k[b>>2]|0)+324>>2]&511](b,4)|0;t=Hc[k[(k[s>>2]|0)+8>>2]&511](s)|0;if((t|0)<(Hc[k[(k[s>>2]|0)+12>>2]&511](s)|0)){u=s+8|0;v=m*n;w=i+12|0;x=t;do{Fc[k[(k[s>>2]|0)+24>>2]&1023](s,x);rd[k[(k[b>>2]|0)+264>>2]&511](b,d,k[f>>2]|0,s);nd[k[(k[b>>2]|0)+336>>2]&1023](b,j,s);n=q*(o*(l*(+p[u>>3]*+p[d>>3])))/v;p[e>>3]=n;m=+p[c>>3];if(m!=0.0)p[e>>3]=m*n;ZX(j,h,1,0,e,1,1,0,j,1,h,0,k[w>>2]|0,1)|0;x=x+1|0}while((x|0)<(Hc[k[(k[s>>2]|0)+12>>2]&511](s)|0))}Ec[k[(k[s>>2]|0)+4>>2]&1023](s);Tqa(j);j=k[f>>2]|0;if(j)Tqa(j);k[f>>2]=0;y=i}else y=0;g=y;r=a;return g|0}function Rga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if(!($p(b)|0)){c=0;return c|0}a=Sga(0,b)|0;d=Tga(0,b)|0;e=Uga(0,b)|0;b=Qqa(24)|0;B=0;ib(300,b|0,a|0,d|0,e|0);f=B;B=0;if(f&1){f=Rb()|0;Sqa(b);Qb(f|0)}if(a){SN(a);Sqa(a)}if(d){SN(d);Sqa(d)}if(!e){c=b;return c|0}SN(e);Sqa(e);c=b;return c|0}function Sga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0.0,L=0.0,M=0,N=0,O=0.0,P=0.0,Q=0.0;a=r;r=r+64|0;c=a+60|0;d=a+48|0;e=a+40|0;f=a+32|0;g=a+24|0;h=a+16|0;i=a+8|0;j=a;l=a+56|0;if(!($p(b)|0)){m=0;r=a;return m|0}k[l>>2]=0;n=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;o=iq(b,534)|0;q=Rqa(n>>>0>536870911?-1:n<<3)|0;s=n*3|0;t=Rqa(s>>>0>536870911?-1:s<<3)|0;Uo(b,l);u=+Dp(b,265);v=+Dp(b,210);w=u*v;v=+Dp(b,270)/w;pp(b,f,358);cp(b,c,348);s=Wo(b,674)|0;x=Wo(b,677)|0;y=Wo(b,679)|0;if(+p[f>>3]!=0.0)z=Wo(b,666)|0;else z=0;if((k[c>>2]|0)==2)A=+id[k[(k[b>>2]|0)+292>>2]&63](b,k[l>>2]|0);else A=0.0;B=ed[k[(k[b>>2]|0)+308>>2]&511](b,4)|0;C=Hc[k[(k[B>>2]|0)+8>>2]&511](B)|0;if((C|0)<(Hc[k[(k[B>>2]|0)+12>>2]&511](B)|0)){D=B+8|0;E=(n|0)>0;F=o+4|0;G=n<<1;H=(n|0)<1;I=C;u=0.0;while(1){Fc[k[(k[B>>2]|0)+24>>2]&1023](B,I);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[l>>2]|0,B);nd[k[(k[b>>2]|0)+336>>2]&1023](b,q,B);ad[k[(k[b>>2]|0)+516>>2]&63](b,e,k[l>>2]|0,B,s,x,y);J=+p[e>>3]/w*+p[d>>3]*+p[D>>3];K=+p[f>>3];L=K!=0.0?J*K:J;if(E){C=k[F>>2]|0;M=0;do{N=C+(M<<3)|0;p[N>>3]=L*+p[q+(M<<3)>>3]+ +p[N>>3];M=M+1|0}while((M|0)!=(n|0));O=+p[f>>3]}else O=K;if(O!=0.0){nd[k[(k[z>>2]|0)+48>>2]&1023](z,g,B);J=+p[g>>3]*+p[d>>3]*+p[D>>3];if(E){M=k[F>>2]|0;C=0;do{N=M+(C<<3)|0;p[N>>3]=J*+p[q+(C<<3)>>3]+ +p[N>>3];C=C+1|0}while((C|0)!=(n|0));P=J}else P=J}else P=u;if((k[c>>2]|0)==2?(rd[k[(k[b>>2]|0)+340>>2]&511](b,t,k[l>>2]|0,B),nd[k[(k[s>>2]|0)+48>>2]&1023](s,h,B),nd[k[(k[x>>2]|0)+48>>2]&1023](x,i,B),nd[k[(k[y>>2]|0)+48>>2]&1023](y,j,B),K=+Pc[k[(k[b>>2]|0)+440>>2]&7](b,+p[h>>3],+p[i>>3],+p[j>>3],A,v),E):0){Q=L*K;C=k[F>>2]|0;M=0;do{N=C+(M<<3)|0;p[N>>3]=+p[N>>3]+Q*(+p[h>>3]*+p[t+(M<<3)>>3]+ +p[i>>3]*+p[t+(M+n<<3)>>3]+ +p[j>>3]*+p[t+(M+G<<3)>>3]);M=M+1|0}while((M|0)!=(n|0));if(!(+p[f>>3]==0.0|H)){Q=P*K;M=k[F>>2]|0;C=0;do{N=M+(C<<3)|0;p[N>>3]=+p[N>>3]+Q*(+p[h>>3]*+p[t+(C<<3)>>3]+ +p[i>>3]*+p[t+(C+n<<3)>>3]+ +p[j>>3]*+p[t+(C+G<<3)>>3]);C=C+1|0}while((C|0)!=(n|0))}}I=I+1|0;if((I|0)>=(Hc[k[(k[B>>2]|0)+12>>2]&511](B)|0))break;else u=P}}Tqa(q);Tqa(t);t=k[l>>2]|0;if(t)Tqa(t);k[l>>2]=0;Ec[k[(k[B>>2]|0)+4>>2]&1023](B);m=o;r=a;return m|0}function Tga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0,y=0,z=0,A=0.0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0.0,J=0,K=0;a=r;r=r+64|0;c=a+48|0;d=a+40|0;e=a+32|0;f=a+24|0;g=a+16|0;h=a+8|0;i=a;j=a+56|0;if(!($p(b)|0)){l=0;r=a;return l|0}if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){l=0;r=a;return l|0}if(_p(b)|0){l=0;r=a;return l|0}k[j>>2]=0;m=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;n=iq(b,534)|0;o=Rqa(m>>>0>536870911?-1:m<<3)|0;Fc[k[(k[b>>2]|0)+188>>2]&1023](b,j);pp(b,c,358);q=Wo(b,674)|0;s=Wo(b,677)|0;t=Wo(b,679)|0;u=Wo(b,38)|0;v=+Dp(b,265);w=+Dp(b,210);x=Qqa(16)|0;B=0;eb(524,x|0,b|0,3);y=B;B=0;if(y&1){y=Rb()|0;Sqa(x);Qb(y|0)}y=ed[k[(k[b>>2]|0)+324>>2]&511](b,4)|0;z=Hc[k[(k[y>>2]|0)+8>>2]&511](y)|0;a:do if((z|0)<(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0)){A=v*w;C=y+8|0;D=n+4|0;if((m|0)>0)E=z;else{F=z;while(1){Fc[k[(k[y>>2]|0)+24>>2]&1023](y,F);rd[k[(k[b>>2]|0)+264>>2]&511](b,d,k[j>>2]|0,y);nd[k[(k[b>>2]|0)+336>>2]&1023](b,o,y);nd[k[(k[u>>2]|0)+48>>2]&1023](u,e,y);fla(x,i,y);nd[k[(k[q>>2]|0)+48>>2]&1023](q,f,y);nd[k[(k[s>>2]|0)+48>>2]&1023](s,g,y);nd[k[(k[t>>2]|0)+48>>2]&1023](t,h,y);p[h>>3]=0.0;F=F+1|0;if((F|0)>=(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0))break a}}do{Fc[k[(k[y>>2]|0)+24>>2]&1023](y,E);rd[k[(k[b>>2]|0)+264>>2]&511](b,d,k[j>>2]|0,y);nd[k[(k[b>>2]|0)+336>>2]&1023](b,o,y);nd[k[(k[u>>2]|0)+48>>2]&1023](u,e,y);fla(x,i,y);nd[k[(k[q>>2]|0)+48>>2]&1023](q,f,y);nd[k[(k[s>>2]|0)+48>>2]&1023](s,g,y);nd[k[(k[t>>2]|0)+48>>2]&1023](t,h,y);p[h>>3]=0.0;G=+p[f>>3];H=+p[g>>3];I=+p[C>>3]*+p[d>>3]*((+p[e>>3]+ +p[i>>3]*(G*G+H*H+0.0))/A);H=+p[c>>3];G=H!=0.0?H*I:I;F=k[D>>2]|0;J=0;do{K=F+(J<<3)|0;p[K>>3]=G*+p[o+(J<<3)>>3]+ +p[K>>3];J=J+1|0}while((J|0)!=(m|0));E=E+1|0}while((E|0)<(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0))}while(0);Ec[k[(k[y>>2]|0)+4>>2]&1023](y);bla(x);Sqa(x);Tqa(o);o=k[j>>2]|0;if(o)Tqa(o);l=n;r=a;return l|0}function Uga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0.0,n=0.0,o=0.0,q=0.0,s=0.0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0;a=r;r=r+32|0;c=a+16|0;d=a+8|0;e=a;f=a+24|0;if(!($p(b)|0)){g=0;r=a;return g|0}k[f>>2]=0;if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0?_p(b)|0:0){h=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;i=iq(b,534)|0;j=Rqa(h>>>0>536870911?-1:h<<3)|0;Fc[k[(k[b>>2]|0)+188>>2]&1023](b,f);pp(b,c,358);l=Wo(b,653)|0;+Dp(b,65);m=+Dp(b,266);n=+Dp(b,265);o=+Dp(b,210);q=+Dp(b,213);s=+Dp(b,269);t=ed[k[(k[b>>2]|0)+324>>2]&511](b,4)|0;u=Hc[k[(k[t>>2]|0)+8>>2]&511](t)|0;a:do if((u|0)<(Hc[k[(k[t>>2]|0)+12>>2]&511](t)|0)){v=t+8|0;w=n*o;x=i+4|0;if((h|0)>0)y=u;else{z=u;while(1){Fc[k[(k[t>>2]|0)+24>>2]&1023](t,z);rd[k[(k[b>>2]|0)+264>>2]&511](b,d,k[f>>2]|0,t);nd[k[(k[b>>2]|0)+336>>2]&1023](b,j,t);nd[k[(k[l>>2]|0)+48>>2]&1023](l,e,t);+uq(b,+p[e>>3]);z=z+1|0;if((z|0)>=(Hc[k[(k[t>>2]|0)+12>>2]&511](t)|0))break a}}do{Fc[k[(k[t>>2]|0)+24>>2]&1023](t,y);rd[k[(k[b>>2]|0)+264>>2]&511](b,d,k[f>>2]|0,t);nd[k[(k[b>>2]|0)+336>>2]&1023](b,j,t);nd[k[(k[l>>2]|0)+48>>2]&1023](l,e,t);A=+uq(b,+p[e>>3]);B=A*(s*(q*(m*(+p[v>>3]*+p[d>>3]))))/w;A=+p[c>>3];C=A!=0.0?A*B:B;z=k[x>>2]|0;D=0;do{E=z+(D<<3)|0;p[E>>3]=C*+p[j+(D<<3)>>3]+ +p[E>>3];D=D+1|0}while((D|0)!=(h|0));y=y+1|0}while((y|0)<(Hc[k[(k[t>>2]|0)+12>>2]&511](t)|0))}while(0);Ec[k[(k[t>>2]|0)+4>>2]&1023](t);Tqa(j);j=k[f>>2]|0;if(j)Tqa(j);k[f>>2]=0;F=i}else F=0;g=F;r=a;return g|0}function Vga(a,b,c){a=a|0;b=b|0;c=c|0;nd[k[(k[c>>2]|0)+176>>2]&1023](c,b,666);return}function Wga(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,134713,75);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,716,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function Xga(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0.0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0;a=r;r=r+560|0;d=a+536|0;e=a+548|0;f=a+532|0;g=a+528|0;h=a+524|0;j=a+376|0;l=a+512|0;m=a+360|0;n=a+208|0;o=a+224|0;q=a+60|0;s=a+48|0;u=a+36|0;v=a+72|0;w=a+24|0;x=a+12|0;y=a;k[g>>2]=0;k[h>>2]=0;z=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;rp(c,g,534,943);A=z>>>0>536870911?-1:z<<3;C=Rqa(A)|0;D=Rqa(A)|0;E=Rqa(A)|0;A=(z|0)>0;a:do if(A){F=k[g>>2]|0;G=0;while(1){H=+p[b+(k[F+(G<<2)>>2]<<3)>>3];p[C+(G<<3)>>3]=H;I=+$(+H);p[t>>3]=I;J=k[t>>2]|0;K=k[t+4>>2]|0;if(K>>>0>2146435072|(K|0)==2146435072&J>>>0>0){L=5;break}G=G+1|0;if((J|0)==0&(K|0)==2146435072){L=29;break}if((G|0)>=(z|0))break a}if((L|0)==5){G=j+56|0;F=j+4|0;k[j>>2]=27524;k[G>>2]=27544;B=0;wa(508,j+56|0,F|0);K=B;B=0;if(K&1){K=Rb()|0;M=Q;N=K;vva(G);Qb(N|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[G>>2]=27488;B=0;va(448,F|0);K=B;B=0;do if(K&1){J=Rb()|0;O=Q;P=J}else{k[F>>2]=27560;J=j+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[j+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,F|0,d|0);R=B;B=0;if(R&1){R=Rb()|0;S=Q;Yua(d);Yua(J);Ava(F);O=S;P=R;break}Yua(d);B=0;R=Ia(40,j|0,135564,28)|0;S=B;B=0;b:do if(!(S&1)?(B=0,Xa(239,R|0,0)|0,T=B,B=0,!(T&1)):0){T=Ab(20)|0;B=0;eb(502,l|0,134713,75);U=B;B=0;do if(!(U&1)){B=0;eb(502,m|0,137199,23);V=B;B=0;if(V&1){V=Rb()|0;W=Q;Yua(l);X=W;Y=V;break}B=0;wa(510,n|0,F|0);V=B;B=0;if(V&1){V=Rb()|0;Z=V;_=Q;aa=1}else{B=0;ua(163,T|0,l|0,m|0,740,n|0);V=B;B=0;if(V&1)ba=1;else{B=0;eb(503,T|0,1240,229);B=0;ba=0}V=Rb()|0;W=Q;Yua(n);Z=V;_=W;aa=ba}Yua(m);Yua(l);if(aa){X=_;Y=Z}else{ca=_;da=Z;break b}}else{W=Rb()|0;X=Q;Y=W}while(0);zb(T|0);ca=X;da=Y}else L=20;while(0);if((L|0)==20){R=Rb()|0;ca=Q;da=R}k[j>>2]=27468;k[G>>2]=27488;k[F>>2]=27560;Yua(J);Ava(F);vva(G);ea=ca;fa=da;Qb(fa|0)}while(0);M=O;N=P;vva(G);Qb(N|0)}else if((L|0)==29){F=o+56|0;K=o+4|0;k[o>>2]=27524;k[F>>2]=27544;B=0;wa(508,o+56|0,K|0);R=B;B=0;if(R&1){R=Rb()|0;ga=Q;ha=R;vva(F);Qb(ha|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[F>>2]=27488;B=0;va(448,K|0);R=B;B=0;do if(R&1){S=Rb()|0;ia=Q;ja=S}else{k[K>>2]=27560;S=o+36|0;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;k[o+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,K|0,d|0);U=B;B=0;if(U&1){U=Rb()|0;W=Q;Yua(d);Yua(S);Ava(K);ia=W;ja=U;break}Yua(d);B=0;U=Ia(40,o|0,135593,28)|0;W=B;B=0;c:do if(!(W&1)?(B=0,Xa(239,U|0,0)|0,V=B,B=0,!(V&1)):0){V=Ab(20)|0;B=0;eb(502,q|0,134713,75);ka=B;B=0;do if(!(ka&1)){B=0;eb(502,s|0,137199,23);la=B;B=0;if(la&1){la=Rb()|0;ma=Q;Yua(q);na=la;oa=ma;break}B=0;wa(510,u|0,K|0);ma=B;B=0;if(ma&1){ma=Rb()|0;pa=1;qa=Q;ra=ma}else{B=0;ua(163,V|0,q|0,s|0,741,u|0);ma=B;B=0;if(ma&1)sa=1;else{B=0;eb(503,V|0,1240,229);B=0;sa=0}ma=Rb()|0;la=Q;Yua(u);pa=sa;qa=la;ra=ma}Yua(s);Yua(q);if(pa){na=ra;oa=qa}else{ta=qa;xa=ra;break c}}else{ma=Rb()|0;na=ma;oa=Q}while(0);zb(V|0);ta=oa;xa=na}else L=44;while(0);if((L|0)==44){U=Rb()|0;ta=Q;xa=U}k[o>>2]=27468;k[F>>2]=27488;k[K>>2]=27560;Yua(S);Ava(K);vva(F);ea=ta;fa=xa;Qb(fa|0)}while(0);ga=ia;ha=ja;vva(F);Qb(ha|0)}}while(0);zp(c,e,645);ha=(i[e>>0]|0)==0;e=k[c>>2]|0;ja=k[e+48>>2]|0;ia=Hc[k[e+128>>2]&511](c)|0;d:do if(ha)rd[ja&511](c,667,C,ia);else{rd[ja&511](c,666,C,ia);cp(c,f,216);vp(c,D,339);switch(k[f>>2]|0){case 921:{break d;break}case 984:{if(A){e=0;do{I=+Xna(+p[C+(e<<3)>>3]);p[E+(e<<3)>>3]=I;e=e+1|0}while((e|0)!=(z|0))}e=k[c>>2]|0;F=k[e+48>>2]|0;ga=Hc[k[e+128>>2]&511](c)|0;rd[F&511](c,214,E,ga);break d;break}case 987:{if(A){ga=0;do{I=+Zna(+p[C+(ga<<3)>>3]);p[E+(ga<<3)>>3]=I;ga=ga+1|0}while((ga|0)!=(z|0))}ga=k[c>>2]|0;F=k[ga+48>>2]|0;e=Hc[k[ga+128>>2]&511](c)|0;rd[F&511](c,214,E,e);break d;break}case 988:{Uo(c,h);if(A){e=0;do{I=+p[C+(e<<3)>>3];H=+p[D+(e<<3)>>3]-+p[(k[h>>2]|0)+((e*3|0)+2<<3)>>3];za=+_na(I,H,+Dp(c,217));p[E+(e<<3)>>3]=za;e=e+1|0}while((e|0)!=(z|0))}e=k[c>>2]|0;F=k[e+48>>2]|0;ga=Hc[k[e+128>>2]&511](c)|0;rd[F&511](c,214,E,ga);break d;break}default:{ga=v+56|0;F=v+4|0;k[v>>2]=27524;k[ga>>2]=27544;B=0;wa(508,v+56|0,F|0);e=B;B=0;if(e&1){e=Rb()|0;Aa=Q;Ba=e;vva(ga);Qb(Ba|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[ga>>2]=27488;B=0;va(448,F|0);e=B;B=0;do if(e&1){xa=Rb()|0;Ca=Q;Da=xa}else{k[F>>2]=27560;xa=v+36|0;k[xa>>2]=0;k[xa+4>>2]=0;k[xa+8>>2]=0;k[xa+12>>2]=0;k[v+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,F|0,d|0);ta=B;B=0;if(ta&1){ta=Rb()|0;o=Q;Yua(d);Yua(xa);Ava(F);Ca=o;Da=ta;break}Yua(d);B=0;ta=Ia(40,v|0,135622,13)|0;o=B;B=0;e:do if((((!(o&1)?(B=0,na=ya(427,k[f>>2]|0)|0,oa=B,B=0,!(oa&1)):0)?(oa=Lta(na)|0,B=0,ra=Ia(40,ta|0,na|0,oa|0)|0,oa=B,B=0,!(oa&1)):0)?(B=0,oa=Ia(40,ra|0,146481,18)|0,ra=B,B=0,!(ra&1)):0)?(B=0,Xa(239,oa|0,0)|0,oa=B,B=0,!(oa&1)):0){oa=Ab(20)|0;B=0;eb(502,w|0,134713,75);ra=B;B=0;do if(!(ra&1)){B=0;eb(502,x|0,137199,23);na=B;B=0;if(na&1){na=Rb()|0;qa=Q;Yua(w);Ea=na;Fa=qa;break}B=0;wa(510,y|0,F|0);qa=B;B=0;if(qa&1){qa=Rb()|0;Ga=1;Ha=Q;Ja=qa}else{B=0;ua(163,oa|0,w|0,x|0,785,y|0);qa=B;B=0;if(qa&1)Ka=1;else{B=0;eb(503,oa|0,1240,229);B=0;Ka=0}qa=Rb()|0;na=Q;Yua(y);Ga=Ka;Ha=na;Ja=qa}Yua(x);Yua(w);if(Ga){Ea=Ja;Fa=Ha}else{La=Ha;Ma=Ja;break e}}else{qa=Rb()|0;Ea=qa;Fa=Q}while(0);zb(oa|0);La=Fa;Ma=Ea}else L=81;while(0);if((L|0)==81){ta=Rb()|0;La=Q;Ma=ta}k[v>>2]=27468;k[ga>>2]=27488;k[F>>2]=27560;Yua(xa);Ava(F);vva(ga);ea=La;fa=Ma;Qb(fa|0)}while(0);Aa=Ca;Ba=Da;vva(ga);Qb(Ba|0)}}}while(0);Tqa(C);Tqa(D);Tqa(E);E=k[h>>2]|0;if(E)Tqa(E);k[h>>2]=0;h=k[g>>2]|0;if(!h){r=a;return}Tqa(h);r=a;return}function Yga(a,b){a=a|0;b=b|0;RZ(b);return}function Zga(a){a=a|0;Sqa(a);return}function _ga(a,b,c){a=a|0;b=b|0;c=c|0;return}function $ga(a,b,c){a=a|0;b=b|0;c=c|0;return}function aha(a,b,c){a=a|0;b=b|0;c=c|0;hoa(b,c,520,738,534);return}function bha(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function cha(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0;a=c+56|0;f=k[a>>2]|0;if((f|0)<=0)return;g=c+32|0;h=f;f=0;j=0;while(1){if(!(i[(k[g>>2]|0)+j>>0]|0)){l=h;m=f}else{n=qh(b,f)|0;Uc[k[(k[n>>2]|0)+480>>2]&63](n,j,c,d,e,738);l=k[a>>2]|0;m=f+1|0}j=j+1|0;if((j|0)>=(l|0))break;else{h=l;f=m}}return}function dha(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function eha(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,135653,74);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,37,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function fha(a,b){a=a|0;b=b|0;return 0}function gha(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,135653,74);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,44,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function hha(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0;a=r;r=r+224|0;c=a+208|0;d=a+204|0;e=a+16|0;f=a+8|0;g=a;h=a+200|0;i=a+64|0;j=a+48|0;l=a+36|0;m=a+24|0;k[h>>2]=0;cp(b,d,298);if((k[d>>2]|0)==300){n=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;o=gq(b,534)|0;q=n<<1;s=Rqa(q>>>0>536870911?-1:q<<3)|0;q=Rqa(n>>>0>536870911?-1:n<<3)|0;pp(b,g,579);Uo(b,h);t=Wo(b,353)|0;u=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;v=Hc[k[(k[u>>2]|0)+8>>2]&511](u)|0;if((v|0)<(Hc[k[(k[u>>2]|0)+12>>2]&511](u)|0)){w=(n|0)>0;x=u+8|0;y=o+12|0;z=v;do{Fc[k[(k[u>>2]|0)+24>>2]&1023](u,z);rd[k[(k[b>>2]|0)+260>>2]&511](b,e,k[h>>2]|0,u);nd[k[(k[t>>2]|0)+48>>2]&1023](t,f,u);if(+p[f>>3]<50.0)p[f>>3]=50.0;nd[k[(k[b>>2]|0)+336>>2]&1023](b,q,u);rd[k[(k[b>>2]|0)+340>>2]&511](b,s,k[h>>2]|0,u);if(w){v=k[y>>2]|0;A=0;do{C=q+(A<<3)|0;D=s+(A<<3)|0;E=s+(A+n<<3)|0;F=ma(A,n)|0;G=0;do{H=+p[g>>3]*+p[f>>3];I=v+(G+F<<3)|0;p[I>>3]=+p[I>>3]+ +p[x>>3]*+p[e>>3]*(+p[C>>3]*+p[q+(G<<3)>>3]+H*H*(+p[D>>3]*+p[s+(G<<3)>>3]+ +p[E>>3]*+p[s+(G+n<<3)>>3]));G=G+1|0}while((G|0)!=(n|0));A=A+1|0}while((A|0)!=(n|0))}z=z+1|0}while((z|0)<(Hc[k[(k[u>>2]|0)+12>>2]&511](u)|0))}Ec[k[(k[u>>2]|0)+4>>2]&1023](u);Tqa(s);Tqa(q);q=k[h>>2]|0;if(!q){r=a;return o|0}Tqa(q);r=a;return o|0}o=i+56|0;a=i+4|0;k[i>>2]=27524;k[o>>2]=27544;B=0;wa(508,i+56|0,a|0);q=B;B=0;if(q&1){q=Rb()|0;J=Q;K=q;vva(o);Qb(K|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[o>>2]=27488;B=0;va(448,a|0);q=B;B=0;do if(q&1){h=Rb()|0;L=Q;M=h}else{k[a>>2]=27560;h=i+36|0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[i+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);s=B;B=0;if(s&1){s=Rb()|0;u=Q;Yua(c);Yua(h);Ava(a);L=u;M=s;break}Yua(c);B=0;s=Ia(40,i|0,144639,5)|0;u=B;B=0;if((((!(u&1)?(B=0,u=ya(427,k[d>>2]|0)|0,z=B,B=0,!(z&1)):0)?(z=Lta(u)|0,B=0,n=Ia(40,s|0,u|0,z|0)|0,z=B,B=0,!(z&1)):0)?(B=0,z=Ia(40,n|0,146481,18)|0,n=B,B=0,!(n&1)):0)?(B=0,Xa(239,z|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,j|0,135653,74);n=B;B=0;do if(!(n&1)){B=0;eb(502,l|0,144189,13);u=B;B=0;if(u&1){u=Rb()|0;s=Q;Yua(j);N=u;O=s;break}B=0;wa(510,m|0,a|0);s=B;B=0;if(s&1){s=Rb()|0;P=s;R=Q;S=1}else{B=0;ua(163,z|0,j|0,l|0,58,m|0);s=B;B=0;if(s&1)T=1;else{B=0;eb(503,z|0,1240,229);B=0;T=0}s=Rb()|0;u=Q;Yua(m);P=s;R=u;S=T}Yua(l);Yua(j);if(S){N=P;O=R}else{U=P;V=R;k[i>>2]=27468;k[o>>2]=27488;k[a>>2]=27560;Yua(h);Ava(a);vva(o);Qb(U|0)}}else{u=Rb()|0;N=u;O=Q}while(0);zb(z|0);U=N;V=O;k[i>>2]=27468;k[o>>2]=27488;k[a>>2]=27560;Yua(h);Ava(a);vva(o);Qb(U|0)}n=Rb()|0;U=n;V=Q;k[i>>2]=27468;k[o>>2]=27488;k[a>>2]=27560;Yua(h);Ava(a);vva(o);Qb(U|0)}while(0);J=L;K=M;vva(o);Qb(K|0);return 0}function iha(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0,y=0,z=0,A=0.0,C=0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;a=r;r=r+240|0;c=a+228|0;d=a+224|0;e=a+48|0;f=a+212|0;g=a+200|0;h=a+188|0;i=a+40|0;j=a+184|0;l=a+32|0;m=a+24|0;n=a+8|0;o=a;cp(b,d,298);if((k[d>>2]|0)==300){k[j>>2]=0;q=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;s=iq(b,534)|0;t=Rqa(q>>>0>536870911?-1:q<<3)|0;Uo(b,j);cp(b,c,578);u=k[c>>2]|0;switch(u|0){case 705:case 704:{v=+Dp(b,265);w=+Dp(b,65);x=Wo(b,353)|0;y=Wo(b,339)|0;z=x;A=w;C=0;D=v;E=y;F=Wo(b,674)|0;G=Wo(b,677)|0;break}case 665:case 664:{z=0;A=0.0;C=0;D=0.0;E=Wo(b,339)|0;F=0;G=0;break}default:{z=0;A=0.0;C=Wo(b,u)|0;D=0.0;E=0;F=0;G=0}}u=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;y=Hc[k[(k[u>>2]|0)+8>>2]&511](u)|0;a:do if((y|0)<(Hc[k[(k[u>>2]|0)+12>>2]&511](u)|0)){x=(F|0)!=0&(G|0)!=0;H=n+8|0;v=D*A;I=(q|0)>0;J=u+8|0;K=s+4|0;L=y;while(1){Fc[k[(k[u>>2]|0)+24>>2]&1023](u,L);rd[k[(k[b>>2]|0)+260>>2]&511](b,e,k[j>>2]|0,u);nd[k[(k[b>>2]|0)+336>>2]&1023](b,t,u);b:do switch(k[c>>2]|0){case 705:case 704:{nd[k[(k[z>>2]|0)+48>>2]&1023](z,o,u);rd[k[(k[E>>2]|0)+60>>2]&511](E,n,k[j>>2]|0,u);if(x?(nd[k[(k[F>>2]|0)+48>>2]&1023](F,l,u),nd[k[(k[G>>2]|0)+48>>2]&1023](G,m,u),w=+p[n>>3],M=+p[H>>3],N=+aa(+(w*w+M*M+1.0e-10)),M=+p[l>>3],w=+p[m>>3],O=+aa(+(M*M+w*w)),O>4.756468797564688e-07):0){p[n>>3]=N*(-M/O);p[H>>3]=N*(-w/O)}O=v*+p[o>>3];if((k[c>>2]|0)==704){p[i>>3]=O*+p[n>>3];break b}else{p[i>>3]=O*+p[H>>3];break b}break}case 664:{rd[k[(k[E>>2]|0)+60>>2]&511](E,n,k[j>>2]|0,u);p[i>>3]=+p[n>>3];break}case 665:{rd[k[(k[E>>2]|0)+60>>2]&511](E,n,k[j>>2]|0,u);p[i>>3]=+p[H>>3];break}default:nd[k[(k[C>>2]|0)+48>>2]&1023](C,i,u)}while(0);if(I){P=k[K>>2]|0;R=0;do{S=P+(R<<3)|0;p[S>>3]=+p[e>>3]*+p[J>>3]*+p[i>>3]*+p[t+(R<<3)>>3]+ +p[S>>3];R=R+1|0}while((R|0)!=(q|0))}L=L+1|0;if((L|0)>=(Hc[k[(k[u>>2]|0)+12>>2]&511](u)|0))break a}}while(0);q=k[j>>2]|0;if(!q){k[j>>2]=0;Tqa(t);T=k[u>>2]|0;U=T+4|0;V=k[U>>2]|0;Ec[V&1023](u);r=a;return s|0}Tqa(q);k[j>>2]=0;Tqa(t);T=k[u>>2]|0;U=T+4|0;V=k[U>>2]|0;Ec[V&1023](u);r=a;return s|0}s=e+56|0;a=e+4|0;k[e>>2]=27524;k[s>>2]=27544;B=0;wa(508,e+56|0,a|0);u=B;B=0;if(u&1){u=Rb()|0;W=Q;X=u;vva(s);Qb(X|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[s>>2]=27488;B=0;va(448,a|0);u=B;B=0;do if(u&1){V=Rb()|0;Y=Q;Z=V}else{k[a>>2]=27560;V=e+36|0;k[V>>2]=0;k[V+4>>2]=0;k[V+8>>2]=0;k[V+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);U=B;B=0;if(U&1){U=Rb()|0;T=Q;Yua(c);Yua(V);Ava(a);Y=T;Z=U;break}Yua(c);B=0;U=Ia(40,e|0,144639,5)|0;T=B;B=0;if((((!(T&1)?(B=0,T=ya(427,k[d>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(T)|0,B=0,j=Ia(40,U|0,T|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,j|0,146481,18)|0,j=B,B=0,!(j&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,135653,74);j=B;B=0;do if(!(j&1)){B=0;eb(502,g|0,144203,13);T=B;B=0;if(T&1){T=Rb()|0;U=Q;Yua(f);_=T;$=U;break}B=0;wa(510,h|0,a|0);U=B;B=0;if(U&1){U=Rb()|0;ba=U;ca=Q;da=1}else{B=0;ua(163,t|0,f|0,g|0,111,h|0);U=B;B=0;if(U&1)ea=1;else{B=0;eb(503,t|0,1240,229);B=0;ea=0}U=Rb()|0;T=Q;Yua(h);ba=U;ca=T;da=ea}Yua(g);Yua(f);if(da){_=ba;$=ca}else{fa=ba;ga=ca;k[e>>2]=27468;k[s>>2]=27488;k[a>>2]=27560;Yua(V);Ava(a);vva(s);Qb(fa|0)}}else{T=Rb()|0;_=T;$=Q}while(0);zb(t|0);fa=_;ga=$;k[e>>2]=27468;k[s>>2]=27488;k[a>>2]=27560;Yua(V);Ava(a);vva(s);Qb(fa|0)}j=Rb()|0;fa=j;ga=Q;k[e>>2]=27468;k[s>>2]=27488;k[a>>2]=27560;Yua(V);Ava(a);vva(s);Qb(fa|0)}while(0);W=Y;X=Z;vva(s);Qb(X|0);return 0}function jha(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,135653,74);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,208,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function kha(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,135653,74);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,211,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function lha(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+208|0;d=a+184|0;e=a+180|0;f=a+176|0;g=a+40|0;h=a+24|0;i=a+12|0;j=a;cp(c,e,578);cp(c,f,298);if((k[f>>2]|0)==300){nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,k[e>>2]|0);r=a;return}a=g+56|0;e=g+4|0;k[g>>2]=27524;k[a>>2]=27544;B=0;wa(508,g+56|0,e|0);b=B;B=0;if(b&1){b=Rb()|0;l=Q;m=b;vva(a);Qb(m|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[a>>2]=27488;B=0;va(448,e|0);b=B;B=0;do if(b&1){c=Rb()|0;n=Q;o=c}else{k[e>>2]=27560;c=g+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[g+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,e|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(c);Ava(e);n=q;o=p;break}Yua(d);B=0;p=Ia(40,g|0,144639,5)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[f>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,h|0,135653,74);t=B;B=0;do if(!(t&1)){B=0;eb(502,i|0,137199,23);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(h);u=p;v=q;break}B=0;wa(510,j|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,h|0,i|0,222,j|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(j);w=p;x=q;y=z}Yua(i);Yua(h);if(y){u=w;v=x}else{A=w;C=x;k[g>>2]=27468;k[a>>2]=27488;k[e>>2]=27560;Yua(c);Ava(e);vva(a);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[g>>2]=27468;k[a>>2]=27488;k[e>>2]=27560;Yua(c);Ava(e);vva(a);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[g>>2]=27468;k[a>>2]=27488;k[e>>2]=27560;Yua(c);Ava(e);vva(a);Qb(C|0)}while(0);l=n;m=o;vva(a);Qb(m|0)}function mha(a,b){a=a|0;b=b|0;return}function nha(a){a=a|0;Sqa(a);return}function oha(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,135754,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,135838,17);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,9,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function pha(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,135754,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,135856,11);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,12,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function qha(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,135754,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,145111,11);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,15,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function rha(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,135754,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,135868,11);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,18,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0);return 0}function sha(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,135754,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,136133,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,21,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function tha(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,135754,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,136199,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,24,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function uha(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,135754,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,29,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function vha(a,b){a=a|0;b=b|0;return 0}function wha(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,135754,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,36,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function xha(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,135754,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144189,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,39,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function yha(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,135754,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144203,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,42,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function zha(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,135754,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,45,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Aha(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,135754,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,48,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function Bha(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,135754,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,137199,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,51,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Cha(a,b){a=a|0;b=b|0;return}function Dha(a){a=a|0;Sqa(a);return}function Eha(a,b,c){a=a|0;b=b|0;c=c|0;qoa(b,c,135899,529,738,0);return}function Fha(a,b,c){a=a|0;b=b|0;c=c|0;return}function Gha(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a=r;r=r+16|0;d=a+8|0;e=a;if((k[c+40>>2]|0)!=300){k[e>>2]=136615;k[e+4>>2]=136636;Ska(c,2,e)}hoa(b,c,529,738,534);k[d>>2]=136615;k[d+4>>2]=136636;Lka(c,2,d);r=a;return}function Hha(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function Iha(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;a=r;r=r+192|0;f=a+180|0;g=a+176|0;h=a+40|0;j=a+24|0;l=a+12|0;m=a;n=c+56|0;o=k[n>>2]|0;if((o|0)>0){p=c+32|0;q=o;o=0;s=0;while(1){if(!(i[(k[p>>2]|0)+s>>0]|0)){t=q;u=o}else{v=qh(b,o)|0;Uc[k[(k[v>>2]|0)+480>>2]&63](v,s,c,d,e,738);t=k[n>>2]|0;u=o+1|0}s=s+1|0;if((s|0)>=(t|0))break;else{q=t;o=u}}}Zka(c,b,137867,206);Zka(c,b,135923,674);Zka(c,b,135944,677);Fka(c,g,135965);switch(k[g>>2]|0){case 253:{Zka(c,b,135980,248);Zka(c,b,136003,249);r=a;return}case 250:{Zka(c,b,136026,255);Zka(c,b,136003,256);r=a;return}case 251:{Zka(c,b,136026,257);Zka(c,b,136003,249);r=a;return}case 252:{Zka(c,b,136003,249);r=a;return}default:{a=h+56|0;b=h+4|0;k[h>>2]=27524;k[a>>2]=27544;B=0;wa(508,h+56|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;w=Q;x=c;vva(a);Qb(x|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[a>>2]=27488;B=0;va(448,b|0);c=B;B=0;do if(c&1){u=Rb()|0;y=Q;z=u}else{k[b>>2]=27560;u=h+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;t=Q;Yua(f);Yua(u);Ava(b);y=t;z=o;break}Yua(f);B=0;o=Ia(40,h|0,136043,12)|0;t=B;B=0;if((((!(t&1)?(B=0,t=ya(427,k[g>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(t)|0,B=0,s=Ia(40,o|0,t|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,s|0,146481,18)|0,s=B,B=0,!(s&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,j|0,136056,76);s=B;B=0;do if(!(s&1)){B=0;eb(502,l|0,136133,14);t=B;B=0;if(t&1){t=Rb()|0;o=Q;Yua(j);A=o;C=t;break}B=0;wa(510,m|0,b|0);t=B;B=0;if(t&1){t=Rb()|0;D=Q;E=t;F=1}else{B=0;ua(163,q|0,j|0,l|0,70,m|0);t=B;B=0;if(t&1)G=1;else{B=0;eb(503,q|0,1240,229);B=0;G=0}t=Rb()|0;o=Q;Yua(m);D=o;E=t;F=G}Yua(l);Yua(j);if(F){A=D;C=E}else{H=D;I=E;k[h>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(u);Ava(b);vva(a);Qb(I|0)}}else{t=Rb()|0;A=Q;C=t}while(0);zb(q|0);H=A;I=C;k[h>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(u);Ava(b);vva(a);Qb(I|0)}s=Rb()|0;H=Q;I=s;k[h>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(u);Ava(b);vva(a);Qb(I|0)}while(0);w=y;x=z;vva(a);Qb(x|0)}}}function Jha(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+180|0;a=e+176|0;f=e+40|0;g=e+24|0;h=e+12|0;i=e;YN(b,Ika(c,136148,530)|0);Fka(c,a,135965);switch(k[a>>2]|0){case 252:{YN(b,Ika(c,136174,252)|0);r=e;return}case 251:case 250:case 253:{r=e;return}default:{e=f+56|0;c=f+4|0;k[f>>2]=27524;k[e>>2]=27544;B=0;wa(508,f+56|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;j=Q;l=b;vva(e);Qb(l|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[e>>2]=27488;B=0;va(448,c|0);b=B;B=0;do if(b&1){m=Rb()|0;n=Q;o=m}else{k[c>>2]=27560;m=f+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,c|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(c);n=q;o=p;break}Yua(d);B=0;p=Ia(40,f|0,136043,12)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,136056,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,136199,16);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,87,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(m);Ava(c);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(m);Ava(c);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(m);Ava(c);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}}}function Kha(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;a=r;r=r+320|0;c=a+304|0;d=a+300|0;e=a+316|0;f=a+152|0;g=a+288|0;h=a+16|0;j=a;l=b+44|0;bO(k[l>>2]|0,e,759);cO(k[l>>2]|0,d,530);xh(b,529);a:do if(CY()|0){l=f+56|0;m=f+4|0;k[f>>2]=27524;k[l>>2]=27544;B=0;wa(508,f+56|0,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(l);Qb(p|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[l>>2]=27488;B=0;va(448,m|0);n=B;B=0;do if(n&1){q=Rb()|0;s=Q;t=q}else{k[m>>2]=27560;q=f+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,m|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(c);Yua(q);Ava(m);s=v;t=u;break}Yua(c);B=0;Ia(40,f|0,136216,25)|0;u=B;B=0;do if(!(u&1)?(B=0,wa(510,g|0,m|0),v=B,B=0,!(v&1)):0){B=0;ya(425,g|0)|0;v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(g);x=w;y=v;break}else{Yua(g);k[f>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);break a}}else z=14;while(0);if((z|0)==14){u=Rb()|0;x=Q;y=u}k[f>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);A=x;C=y;Qb(C|0)}while(0);o=s;p=t;vva(l);Qb(p|0)}while(0);if((k[d>>2]|0)==4)Yoa(b);Voa(b);if(!(i[e>>0]|0)){r=a;return}b:do if(CY()|0){e=h+56|0;d=h+4|0;k[h>>2]=27524;k[e>>2]=27544;B=0;wa(508,h+56|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;D=Q;E=p;vva(e);Qb(E|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[e>>2]=27488;B=0;va(448,d|0);p=B;B=0;do if(p&1){t=Rb()|0;F=Q;G=t}else{k[d>>2]=27560;t=h+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,d|0,c|0);s=B;B=0;if(s&1){s=Rb()|0;o=Q;Yua(c);Yua(t);Ava(d);F=o;G=s;break}Yua(c);B=0;Ia(40,h|0,148942,18)|0;s=B;B=0;do if(!(s&1)?(B=0,wa(510,j|0,d|0),o=B,B=0,!(o&1)):0){B=0;ya(425,j|0)|0;o=B;B=0;if(o&1){o=Rb()|0;y=Q;Yua(j);H=y;I=o;break}else{Yua(j);k[h>>2]=27468;k[e>>2]=27488;k[d>>2]=27560;Yua(t);Ava(d);vva(e);break b}}else z=33;while(0);if((z|0)==33){s=Rb()|0;H=Q;I=s}k[h>>2]=27468;k[e>>2]=27488;k[d>>2]=27560;Yua(t);Ava(d);vva(e);A=H;C=I;Qb(C|0)}while(0);D=F;E=G;vva(e);Qb(E|0)}while(0);k[c>>2]=206;fi(b,b+48|0,c,1,1);r=a;return}function Lha(a,b){a=a|0;b=b|0;return 0}function Mha(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,136056,76);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,125,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Nha(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0.0,vb=0.0,wb=0.0,xb=0.0,yb=0,Bb=0.0,Cb=0.0,Db=0.0,Eb=0.0,Fb=0.0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0;a=r;r=r+1136|0;c=a+1116|0;d=a+1112|0;e=a+1108|0;f=a+1104|0;g=a+56|0;h=a+48|0;i=a+40|0;j=a+32|0;l=a+24|0;m=a+16|0;n=a+8|0;o=a;q=a+1064|0;s=a+928|0;t=a+1092|0;u=a+1080|0;v=a+1068|0;w=a+768|0;x=a+916|0;y=a+904|0;z=a+752|0;A=a+616|0;C=a+332|0;D=a+320|0;E=a+172|0;F=a+480|0;G=a+160|0;H=a+148|0;I=a+136|0;J=a+344|0;K=a+124|0;L=a+112|0;M=a+100|0;N=a+184|0;O=a+88|0;P=a+76|0;R=a+64|0;if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){S=0;r=a;return S|0}T=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;k[q>>2]=0;cp(T,e,298);cp(T,f,247);cp(T,d,530);switch(k[e>>2]|0){case 301:{U=1;break}case 300:{U=2;break}case 302:{U=2;break}default:{b=s+56|0;V=s+4|0;k[s>>2]=27524;k[b>>2]=27544;B=0;wa(508,s+56|0,V|0);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Y=W;vva(b);Qb(Y|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[b>>2]=27488;B=0;va(448,V|0);W=B;B=0;do if(W&1){Z=Rb()|0;_=Q;$=Z}else{k[V>>2]=27560;Z=s+36|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[s+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,V|0,c|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;Yua(c);Yua(Z);Ava(V);_=ca;$=ba;break}Yua(c);B=0;ba=Ia(40,s|0,144639,5)|0;ca=B;B=0;a:do if((((!(ca&1)?(B=0,da=ya(427,k[e>>2]|0)|0,ea=B,B=0,!(ea&1)):0)?(ea=Lta(da)|0,B=0,fa=Ia(40,ba|0,da|0,ea|0)|0,ea=B,B=0,!(ea&1)):0)?(B=0,ea=Ia(40,fa|0,146481,18)|0,fa=B,B=0,!(fa&1)):0)?(B=0,Xa(239,ea|0,0)|0,ea=B,B=0,!(ea&1)):0){ea=Ab(20)|0;B=0;eb(502,t|0,136056,76);fa=B;B=0;do if(!(fa&1)){B=0;eb(502,u|0,144189,13);da=B;B=0;if(da&1){da=Rb()|0;ga=Q;Yua(t);ha=ga;ia=da;break}B=0;wa(510,v|0,V|0);da=B;B=0;if(da&1){da=Rb()|0;ja=Q;ka=da;la=1}else{B=0;ua(163,ea|0,t|0,u|0,150,v|0);da=B;B=0;if(da&1)na=1;else{B=0;eb(503,ea|0,1240,229);B=0;na=0}da=Rb()|0;ga=Q;Yua(v);ja=ga;ka=da;la=na}Yua(u);Yua(t);if(la){ha=ja;ia=ka}else{oa=ja;pa=ka;break a}}else{da=Rb()|0;ha=Q;ia=da}while(0);zb(ea|0);oa=ha;pa=ia}else qa=23;while(0);if((qa|0)==23){ba=Rb()|0;oa=Q;pa=ba}k[s>>2]=27468;k[b>>2]=27488;k[V>>2]=27560;Yua(Z);Ava(V);vva(b);ra=oa;sa=pa;Qb(sa|0)}while(0);X=_;Y=$;vva(b);Qb(Y|0)}}Y=Hc[k[(k[T>>2]|0)+164>>2]&511](T)|0;b=gq(T,534)|0;$=Rqa(Y>>>0>536870911?-1:Y<<3)|0;_=ma(Y,U)|0;X=_>>>0>536870911?-1:_<<3;_=Rqa(X)|0;pa=Rqa(X)|0;X=U<<3;oa=Rqa(ma(X,U)|0)|0;V=Rqa(X)|0;s=Rqa(X)|0;ia=Rqa(X)|0;WEa(ia|0,0,X|0)|0;ha=Rqa(X)|0;WEa(ha|0,0,X|0)|0;ka=Rqa(X)|0;Uo(T,q);pp(T,h,358);switch(k[e>>2]|0){case 301:{ta=Wo(T,674)|0;xa=0;break}case 300:{ta=Wo(T,674)|0;xa=Wo(T,677)|0;break}case 302:{ta=Wo(T,673)|0;xa=Wo(T,676)|0;break}default:{X=w+56|0;ja=w+4|0;k[w>>2]=27524;k[X>>2]=27544;B=0;wa(508,w+56|0,ja|0);la=B;B=0;if(la&1){la=Rb()|0;za=Q;Aa=la;vva(X);Qb(Aa|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[X>>2]=27488;B=0;va(448,ja|0);la=B;B=0;do if(la&1){t=Rb()|0;Ba=Q;Ca=t}else{k[ja>>2]=27560;t=w+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[w+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ja|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;na=Q;Yua(c);Yua(t);Ava(ja);Ba=na;Ca=u;break}Yua(c);B=0;u=Ia(40,w|0,144639,5)|0;na=B;B=0;b:do if((((!(na&1)?(B=0,v=ya(427,k[e>>2]|0)|0,W=B,B=0,!(W&1)):0)?(W=Lta(v)|0,B=0,ba=Ia(40,u|0,v|0,W|0)|0,W=B,B=0,!(W&1)):0)?(B=0,W=Ia(40,ba|0,146481,18)|0,ba=B,B=0,!(ba&1)):0)?(B=0,Xa(239,W|0,0)|0,W=B,B=0,!(W&1)):0){W=Ab(20)|0;B=0;eb(502,x|0,136056,76);ba=B;B=0;do if(!(ba&1)){B=0;eb(502,y|0,144189,13);v=B;B=0;if(v&1){v=Rb()|0;ca=Q;Yua(x);Da=ca;Ea=v;break}B=0;wa(510,z|0,ja|0);v=B;B=0;if(v&1){v=Rb()|0;Fa=1;Ga=Q;Ha=v}else{B=0;ua(163,W|0,x|0,y|0,193,z|0);v=B;B=0;if(v&1)Ja=1;else{B=0;eb(503,W|0,1240,229);B=0;Ja=0}v=Rb()|0;ca=Q;Yua(z);Fa=Ja;Ga=ca;Ha=v}Yua(y);Yua(x);if(Fa){Da=Ga;Ea=Ha}else{Ka=Ga;La=Ha;break b}}else{v=Rb()|0;Da=Q;Ea=v}while(0);zb(W|0);Ka=Da;La=Ea}else qa=53;while(0);if((qa|0)==53){u=Rb()|0;Ka=Q;La=u}k[w>>2]=27468;k[X>>2]=27488;k[ja>>2]=27560;Yua(t);Ava(ja);vva(X);ra=Ka;sa=La;Qb(sa|0)}while(0);za=Ba;Aa=Ca;vva(X);Qb(Aa|0)}}switch(k[f>>2]|0){case 251:case 253:{Aa=Wo(T,993)|0;if((U|0)==2)Ma=Wo(T,994)|0;else Ma=0;Na=Wo(T,248)|0;Oa=0;Pa=0;Qa=Aa;Ra=Ma;Sa=Wo(T,249)|0;break}case 250:{switch(k[e>>2]|0){case 301:{Ta=Wo(T,258)|0;Ua=0;break}case 300:{Ta=Wo(T,258)|0;Ua=Wo(T,259)|0;break}case 302:{Ta=Wo(T,260)|0;Ua=Wo(T,261)|0;break}default:{Ma=A+56|0;Aa=A+4|0;k[A>>2]=27524;k[Ma>>2]=27544;B=0;wa(508,A+56|0,Aa|0);X=B;B=0;if(X&1){X=Rb()|0;Va=Q;Wa=X;vva(Ma);Qb(Wa|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[Ma>>2]=27488;B=0;va(448,Aa|0);X=B;B=0;do if(X&1){Ca=Rb()|0;Ya=Q;Za=Ca}else{k[Aa>>2]=27560;Ca=A+36|0;k[Ca>>2]=0;k[Ca+4>>2]=0;k[Ca+8>>2]=0;k[Ca+12>>2]=0;k[A+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Aa|0,c|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;za=Q;Yua(c);Yua(Ca);Ava(Aa);Ya=za;Za=Ba;break}Yua(c);B=0;Ba=Ia(40,A|0,144639,5)|0;za=B;B=0;c:do if((((!(za&1)?(B=0,La=ya(427,k[e>>2]|0)|0,Ka=B,B=0,!(Ka&1)):0)?(Ka=Lta(La)|0,B=0,ja=Ia(40,Ba|0,La|0,Ka|0)|0,Ka=B,B=0,!(Ka&1)):0)?(B=0,Ka=Ia(40,ja|0,146481,18)|0,ja=B,B=0,!(ja&1)):0)?(B=0,Xa(239,Ka|0,0)|0,Ka=B,B=0,!(Ka&1)):0){Ka=Ab(20)|0;B=0;eb(502,C|0,136056,76);ja=B;B=0;do if(!(ja&1)){B=0;eb(502,D|0,144189,13);La=B;B=0;if(La&1){La=Rb()|0;w=Q;Yua(C);_a=w;$a=La;break}B=0;wa(510,E|0,Aa|0);La=B;B=0;if(La&1){La=Rb()|0;ab=1;bb=Q;cb=La}else{B=0;ua(163,Ka|0,C|0,D|0,218,E|0);La=B;B=0;if(La&1)db=1;else{B=0;eb(503,Ka|0,1240,229);B=0;db=0}La=Rb()|0;w=Q;Yua(E);ab=db;bb=w;cb=La}Yua(D);Yua(C);if(ab){_a=bb;$a=cb}else{fb=bb;gb=cb;break c}}else{La=Rb()|0;_a=Q;$a=La}while(0);zb(Ka|0);fb=_a;gb=$a}else qa=87;while(0);if((qa|0)==87){Ba=Rb()|0;fb=Q;gb=Ba}k[A>>2]=27468;k[Ma>>2]=27488;k[Aa>>2]=27560;Yua(Ca);Ava(Aa);vva(Ma);ra=fb;sa=gb;Qb(sa|0)}while(0);Va=Ya;Wa=Za;vva(Ma);Qb(Wa|0)}}Na=0;Oa=Ta;Pa=Ua;Qa=0;Ra=0;Sa=Wo(T,256)|0;break}case 252:{Ua=Wo(T,993)|0;if((U|0)==2)hb=Wo(T,994)|0;else hb=0;Na=0;Oa=0;Pa=0;Qa=Ua;Ra=hb;Sa=Wo(T,249)|0;break}default:{hb=F+56|0;Ua=F+4|0;k[F>>2]=27524;k[hb>>2]=27544;B=0;wa(508,F+56|0,Ua|0);Ta=B;B=0;if(Ta&1){Ta=Rb()|0;ib=Q;jb=Ta;vva(hb);Qb(jb|0)}k[F+128>>2]=0;k[F+132>>2]=-1;k[F>>2]=27468;k[hb>>2]=27488;B=0;va(448,Ua|0);Ta=B;B=0;do if(Ta&1){Wa=Rb()|0;kb=Q;lb=Wa}else{k[Ua>>2]=27560;Wa=F+36|0;k[Wa>>2]=0;k[Wa+4>>2]=0;k[Wa+8>>2]=0;k[Wa+12>>2]=0;k[F+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ua|0,c|0);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;Za=Q;Yua(c);Yua(Wa);Ava(Ua);kb=Za;lb=Ma;break}Yua(c);B=0;Ma=Ia(40,F|0,136043,12)|0;Za=B;B=0;d:do if((((!(Za&1)?(B=0,Ya=ya(427,k[f>>2]|0)|0,Va=B,B=0,!(Va&1)):0)?(Va=Lta(Ya)|0,B=0,gb=Ia(40,Ma|0,Ya|0,Va|0)|0,Va=B,B=0,!(Va&1)):0)?(B=0,Va=Ia(40,gb|0,146481,18)|0,gb=B,B=0,!(gb&1)):0)?(B=0,Xa(239,Va|0,0)|0,Va=B,B=0,!(Va&1)):0){Va=Ab(20)|0;B=0;eb(502,G|0,136056,76);gb=B;B=0;do if(!(gb&1)){B=0;eb(502,H|0,144189,13);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;fb=Q;Yua(G);mb=fb;nb=Ya;break}B=0;wa(510,I|0,Ua|0);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;ob=Q;pb=Ya;qb=1}else{B=0;ua(163,Va|0,G|0,H|0,228,I|0);Ya=B;B=0;if(Ya&1)rb=1;else{B=0;eb(503,Va|0,1240,229);B=0;rb=0}Ya=Rb()|0;fb=Q;Yua(I);ob=fb;pb=Ya;qb=rb}Yua(H);Yua(G);if(qb){mb=ob;nb=pb}else{sb=ob;tb=pb;break d}}else{Ya=Rb()|0;mb=Q;nb=Ya}while(0);zb(Va|0);sb=mb;tb=nb}else qa=117;while(0);if((qa|0)==117){Ma=Rb()|0;sb=Q;tb=Ma}k[F>>2]=27468;k[hb>>2]=27488;k[Ua>>2]=27560;Yua(Wa);Ava(Ua);vva(hb);ra=sb;sa=tb;Qb(sa|0)}while(0);ib=kb;jb=lb;vva(hb);Qb(jb|0)}}jb=ed[k[(k[T>>2]|0)+308>>2]&511](T,2)|0;hb=Hc[k[(k[jb>>2]|0)+8>>2]&511](jb)|0;e:do if((hb|0)<(Hc[k[(k[jb>>2]|0)+12>>2]&511](jb)|0)){lb=jb+8|0;kb=b+12|0;ib=V+8|0;tb=(U|0)==2;sb=ka+8|0;Ua=ia+8|0;F=s+8|0;nb=(U>>>0>1?U:1)<<3;mb=hb;f:while(1){Fc[k[(k[jb>>2]|0)+24>>2]&1023](jb,mb);rd[k[(k[T>>2]|0)+260>>2]&511](T,g,k[q>>2]|0,jb);p[i>>3]=+p[lb>>3]*+p[g>>3];if(+p[h>>3]!=0.0){nd[k[(k[T>>2]|0)+336>>2]&1023](T,$,jb);ZX($,Y,1,0,i,1,1,0,$,1,Y,0,k[kb>>2]|0,1)|0;p[i>>3]=+p[h>>3]*+p[i>>3]}pb=Hc[k[(k[T>>2]|0)+164>>2]&511](T)|0;ob=Rqa(pb>>>0>536870911?-1:pb<<3)|0;nd[k[(k[T>>2]|0)+336>>2]&1023](T,ob,jb);if((pb|0)>0){qb=0;do{ub=+p[ob+(qb<<3)>>3];p[_+(qb<<3)>>3]=ub;p[_+(qb+pb<<3)>>3]=ub;qb=qb+1|0}while((qb|0)!=(pb|0))}Tqa(ob);pb=k[q>>2]|0;qb=Hc[k[(k[T>>2]|0)+164>>2]&511](T)|0;Va=qb<<1;G=Rqa(Va>>>0>536870911?-1:Va<<3)|0;rd[k[(k[T>>2]|0)+340>>2]&511](T,G,pb,jb);if((qb|0)>0){pb=0;do{p[pa+(pb<<3)>>3]=+p[G+(pb<<3)>>3];Va=pb+qb|0;p[pa+(Va<<3)>>3]=+p[G+(Va<<3)>>3];pb=pb+1|0}while((pb|0)!=(qb|0))}Tqa(G);nd[k[(k[ta>>2]|0)+48>>2]&1023](ta,V,jb);nd[k[(k[xa>>2]|0)+48>>2]&1023](xa,ib,jb);g:do switch(k[f>>2]|0){case 251:case 253:{nd[k[(k[Qa>>2]|0)+48>>2]&1023](Qa,ka,jb);if(tb)nd[k[(k[Ra>>2]|0)+48>>2]&1023](Ra,sb,jb);nd[k[(k[Na>>2]|0)+48>>2]&1023](Na,n,jb);nd[k[(k[Sa>>2]|0)+48>>2]&1023](Sa,o,jb);qb=0;ub=0.0;while(1){vb=+p[ka+(qb<<3)>>3];wb=ub+vb*vb;qb=qb+1|0;if((qb|0)>=(U|0)){xb=wb;break}else ub=wb}ub=+aa(+xb);if(!(ub>1.0e-10)){WEa(ia|0,0,nb|0)|0;WEa(ha|0,0,nb|0)|0;yb=0;break g}wb=+p[n>>3];vb=+p[o>>3];qb=0;do{Bb=+p[ka+(qb<<3)>>3];p[ia+(qb<<3)>>3]=wb*Bb/ub;p[ha+(qb<<3)>>3]=Bb*vb/ub;qb=qb+1|0}while((qb|0)<(U|0));yb=0;break}case 250:{nd[k[(k[Oa>>2]|0)+48>>2]&1023](Oa,ia,jb);if(tb)nd[k[(k[Pa>>2]|0)+48>>2]&1023](Pa,Ua,jb);nd[k[(k[Sa>>2]|0)+48>>2]&1023](Sa,o,jb);qb=0;ub=0.0;while(1){vb=+p[ia+(qb<<3)>>3];wb=ub+vb*vb;qb=qb+1|0;if((qb|0)>=(U|0)){Cb=wb;break}else ub=wb}ub=+aa(+Cb)+1.0e-14;wb=+p[o>>3];qb=0;do{p[ha+(qb<<3)>>3]=wb*+p[ia+(qb<<3)>>3]/ub;qb=qb+1|0}while((qb|0)<(U|0));yb=0;break}case 252:{nd[k[(k[Qa>>2]|0)+48>>2]&1023](Qa,ka,jb);if(tb)nd[k[(k[Ra>>2]|0)+48>>2]&1023](Ra,sb,jb);nd[k[(k[Sa>>2]|0)+48>>2]&1023](Sa,o,jb);qb=0;ub=0.0;while(1){wb=+p[ka+(qb<<3)>>3];vb=ub+wb*wb;qb=qb+1|0;if((qb|0)>=(U|0)){Db=vb;break}else ub=vb}ub=+aa(+Db);if(!(ub>1.0e-10)){WEa(ia|0,0,nb|0)|0;WEa(ha|0,0,nb|0)|0;yb=0;break g}vb=+p[o>>3];WEa(ia|0,0,nb|0)|0;qb=0;do{p[ha+(qb<<3)>>3]=vb*+p[ka+(qb<<3)>>3]/ub;qb=qb+1|0}while((qb|0)<(U|0));yb=0;break}default:break f}while(0);do{p[s+(yb<<3)>>3]=+p[V+(yb<<3)>>3]-+p[ia+(yb<<3)>>3]-+p[ha+(yb<<3)>>3];yb=yb+1|0}while((yb|0)<(U|0));ub=+p[i>>3];G=0;do{qb=s+(G<<3)|0;pb=ma(G,U)|0;ob=oa+(G+pb<<3)|0;Va=0;do{if((G|0)==(Va|0))p[ob>>3]=ub*+p[qb>>3];else p[oa+(Va+pb<<3)>>3]=0.0;Va=Va+1|0}while((Va|0)<(U|0));G=G+1|0}while((G|0)<(U|0));ZX(_,U,Y,1,oa,U,U,0,pa,U,Y,0,k[kb>>2]|0,1)|0;G=0;ub=0.0;while(1){vb=+p[s+(G<<3)>>3];wb=ub+vb*vb;G=G+1|0;if((G|0)>=(U|0)){Eb=wb;break}else ub=wb}ub=+aa(+Eb)+1.0e-14;switch(k[d>>2]|0){case 0:break;case 1:{rd[k[(k[T>>2]|0)+108>>2]&511](T,j,l,m);wb=+p[j>>3]*+p[s>>3]/ub;vb=+p[l>>3]*+p[F>>3]/ub;Bb=ub*+aa(+(wb*wb+vb*vb))*.5*+p[i>>3];G=0;do{Va=ma(G,U)|0;pb=oa+(G+Va<<3)|0;qb=0;do{if((G|0)==(qb|0))p[pb>>3]=Bb;else p[oa+(qb+Va<<3)>>3]=0.0;qb=qb+1|0}while((qb|0)<(U|0));G=G+1|0}while((G|0)<(U|0));ZX(pa,U,Y,1,oa,U,U,0,pa,U,Y,0,k[kb>>2]|0,1)|0;break}case 2:{rd[k[(k[T>>2]|0)+108>>2]&511](T,j,l,m);Bb=+p[s>>3];vb=+p[j>>3]*Bb/ub;wb=+p[l>>3]*+p[F>>3]/ub;Fb=+aa(+(vb*vb+wb*wb));wb=Fb*+p[i>>3]/(ub*2.0);Fb=Bb;G=0;while(1){Bb=Fb*wb;qb=ma(G,U)|0;Va=0;do{p[oa+(Va+qb<<3)>>3]=+p[s+(Va<<3)>>3]*Bb;Va=Va+1|0}while((Va|0)<(U|0));Va=G+1|0;if((Va|0)>=(U|0))break;Fb=+p[s+(Va<<3)>>3];G=Va}ZX(pa,U,Y,1,oa,U,U,0,pa,U,Y,0,k[kb>>2]|0,1)|0;break}default:{qa=209;break f}}mb=mb+1|0;if((mb|0)>=(Hc[k[(k[jb>>2]|0)+12>>2]&511](jb)|0))break e}if((qa|0)==209){mb=N+56|0;kb=N+4|0;k[N>>2]=27524;k[mb>>2]=27544;B=0;wa(508,N+56|0,kb|0);F=B;B=0;if(F&1){F=Rb()|0;Gb=Q;Hb=F;vva(mb);Qb(Hb|0)}k[N+128>>2]=0;k[N+132>>2]=-1;k[N>>2]=27468;k[mb>>2]=27488;B=0;va(448,kb|0);F=B;B=0;do if(F&1){nb=Rb()|0;Ib=Q;Jb=nb}else{k[kb>>2]=27560;nb=N+36|0;k[nb>>2]=0;k[nb+4>>2]=0;k[nb+8>>2]=0;k[nb+12>>2]=0;k[N+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,kb|0,c|0);sb=B;B=0;if(sb&1){sb=Rb()|0;tb=Q;Yua(c);Yua(nb);Ava(kb);Ib=tb;Jb=sb;break}Yua(c);B=0;sb=Ia(40,N|0,136242,53)|0;tb=B;B=0;h:do if(!(tb&1)?(B=0,Xa(239,sb|0,0)|0,Ua=B,B=0,!(Ua&1)):0){Ua=Ab(20)|0;B=0;eb(502,O|0,136056,76);ib=B;B=0;do if(!(ib&1)){B=0;eb(502,P|0,144189,13);lb=B;B=0;if(lb&1){lb=Rb()|0;Wa=Q;Yua(O);Kb=Wa;Lb=lb;break}B=0;wa(510,R|0,kb|0);lb=B;B=0;if(lb&1){lb=Rb()|0;Mb=1;Nb=Q;Ob=lb}else{B=0;ua(163,Ua|0,O|0,P|0,370,R|0);lb=B;B=0;if(lb&1)Pb=1;else{B=0;eb(503,Ua|0,1240,229);B=0;Pb=0}lb=Rb()|0;Wa=Q;Yua(R);Mb=Pb;Nb=Wa;Ob=lb}Yua(P);Yua(O);if(Mb){Kb=Nb;Lb=Ob}else{Sb=Nb;Tb=Ob;break h}}else{lb=Rb()|0;Kb=Q;Lb=lb}while(0);zb(Ua|0);Sb=Kb;Tb=Lb}else qa=224;while(0);if((qa|0)==224){sb=Rb()|0;Sb=Q;Tb=sb}k[N>>2]=27468;k[mb>>2]=27488;k[kb>>2]=27560;Yua(nb);Ava(kb);vva(mb);ra=Sb;sa=Tb;Qb(sa|0)}while(0);Gb=Ib;Hb=Jb;vva(mb);Qb(Hb|0)}kb=J+56|0;F=J+4|0;k[J>>2]=27524;k[kb>>2]=27544;B=0;wa(508,J+56|0,F|0);sb=B;B=0;if(sb&1){sb=Rb()|0;Ub=Q;Vb=sb;vva(kb);Qb(Vb|0)}k[J+128>>2]=0;k[J+132>>2]=-1;k[J>>2]=27468;k[kb>>2]=27488;B=0;va(448,F|0);sb=B;B=0;do if(sb&1){tb=Rb()|0;Wb=Q;Xb=tb}else{k[F>>2]=27560;tb=J+36|0;k[tb>>2]=0;k[tb+4>>2]=0;k[tb+8>>2]=0;k[tb+12>>2]=0;k[J+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,F|0,c|0);ib=B;B=0;if(ib&1){ib=Rb()|0;lb=Q;Yua(c);Yua(tb);Ava(F);Wb=lb;Xb=ib;break}Yua(c);B=0;ib=Ia(40,J|0,136043,12)|0;lb=B;B=0;i:do if((((!(lb&1)?(B=0,Wa=ya(427,k[f>>2]|0)|0,G=B,B=0,!(G&1)):0)?(G=Lta(Wa)|0,B=0,Va=Ia(40,ib|0,Wa|0,G|0)|0,G=B,B=0,!(G&1)):0)?(B=0,G=Ia(40,Va|0,146481,18)|0,Va=B,B=0,!(Va&1)):0)?(B=0,Xa(239,G|0,0)|0,G=B,B=0,!(G&1)):0){G=Ab(20)|0;B=0;eb(502,K|0,136056,76);Va=B;B=0;do if(!(Va&1)){B=0;eb(502,L|0,144189,13);Wa=B;B=0;if(Wa&1){Wa=Rb()|0;qb=Q;Yua(K);Yb=qb;Zb=Wa;break}B=0;wa(510,M|0,F|0);Wa=B;B=0;if(Wa&1){Wa=Rb()|0;_b=1;$b=Q;ac=Wa}else{B=0;ua(163,G|0,K|0,L|0,310,M|0);Wa=B;B=0;if(Wa&1)bc=1;else{B=0;eb(503,G|0,1240,229);B=0;bc=0}Wa=Rb()|0;qb=Q;Yua(M);_b=bc;$b=qb;ac=Wa}Yua(L);Yua(K);if(_b){Yb=$b;Zb=ac}else{cc=$b;dc=ac;break i}}else{Wa=Rb()|0;Yb=Q;Zb=Wa}while(0);zb(G|0);cc=Yb;dc=Zb}else qa=176;while(0);if((qa|0)==176){ib=Rb()|0;cc=Q;dc=ib}k[J>>2]=27468;k[kb>>2]=27488;k[F>>2]=27560;Yua(tb);Ava(F);vva(kb);ra=cc;sa=dc;Qb(sa|0)}while(0);Ub=Wb;Vb=Xb;vva(kb);Qb(Vb|0)}while(0);Vb=k[q>>2]|0;if(Vb)Tqa(Vb);k[q>>2]=0;Tqa($);Tqa(_);Tqa(oa);Tqa(pa);Tqa(V);Tqa(s);Tqa(ia);Tqa(ha);Tqa(ka);Ec[k[(k[jb>>2]|0)+4>>2]&1023](jb);if((k[e>>2]|0)!=300?(ap(T),(T|0)!=0):0)Ec[k[(k[T>>2]|0)+4>>2]&1023](T);S=b;r=a;return S|0}function Oha(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0;a=r;r=r+32|0;c=a+28|0;d=a+16|0;e=a+8|0;f=a;g=a+24|0;if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){h=0;r=a;return h|0}i=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;k[g>>2]=0;b=Hc[k[(k[i>>2]|0)+164>>2]&511](i)|0;j=iq(i,534)|0;pp(i,e,358);if(+p[e>>3]!=0.0){e=Rqa(b>>>0>536870911?-1:b<<3)|0;Uo(i,g);l=Wo(i,206)|0;m=ed[k[(k[i>>2]|0)+308>>2]&511](i,2)|0;n=Hc[k[(k[m>>2]|0)+8>>2]&511](m)|0;a:do if((n|0)<(Hc[k[(k[m>>2]|0)+12>>2]&511](m)|0)){o=m+8|0;q=j+4|0;if((b|0)>0)s=n;else{t=n;while(1){Fc[k[(k[m>>2]|0)+24>>2]&1023](m,t);rd[k[(k[i>>2]|0)+260>>2]&511](i,d,k[g>>2]|0,m);nd[k[(k[i>>2]|0)+336>>2]&1023](i,e,m);nd[k[(k[l>>2]|0)+48>>2]&1023](l,f,m);t=t+1|0;if((t|0)>=(Hc[k[(k[m>>2]|0)+12>>2]&511](m)|0))break a}}do{Fc[k[(k[m>>2]|0)+24>>2]&1023](m,s);rd[k[(k[i>>2]|0)+260>>2]&511](i,d,k[g>>2]|0,m);nd[k[(k[i>>2]|0)+336>>2]&1023](i,e,m);nd[k[(k[l>>2]|0)+48>>2]&1023](l,f,m);t=k[q>>2]|0;u=0;do{v=t+(u<<3)|0;p[v>>3]=+p[d>>3]*+p[o>>3]*+p[f>>3]*+p[e+(u<<3)>>3]+ +p[v>>3];u=u+1|0}while((u|0)!=(b|0));s=s+1|0}while((s|0)<(Hc[k[(k[m>>2]|0)+12>>2]&511](m)|0))}while(0);s=k[g>>2]|0;if(s)Tqa(s);k[g>>2]=0;Tqa(e);cp(i,c,298);if((k[c>>2]|0)!=300?(ap(i),(i|0)!=0):0)Ec[k[(k[i>>2]|0)+4>>2]&1023](i);if(m)Ec[k[(k[m>>2]|0)+4>>2]&1023](m)}h=j;r=a;return h|0}function Pha(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,136056,76);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,518,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Qha(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,136056,76);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,521,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function Rha(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;d=a+180|0;e=a+176|0;f=a+40|0;g=a+24|0;h=a+12|0;i=a;cp(c,e,298);switch(k[e>>2]|0){case 300:{nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,206);r=a;return}case 302:{nd[k[(k[c>>2]|0)+228>>2]&1023](c,b,206);r=a;return}default:{a=f+56|0;b=f+4|0;k[f>>2]=27524;k[a>>2]=27544;B=0;wa(508,f+56|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;j=Q;l=c;vva(a);Qb(l|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[a>>2]=27488;B=0;va(448,b|0);c=B;B=0;do if(c&1){m=Rb()|0;n=Q;o=m}else{k[b>>2]=27560;m=f+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(b);n=q;o=p;break}Yua(d);B=0;p=Ia(40,f|0,144639,5)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[e>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,136056,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,137199,23);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,534,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(a);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(a);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(a);Qb(C|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}}}function Sha(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;a=r;r=r+32|0;c=a+16|0;d=a+8|0;e=a;f=b+44|0;cO(k[f>>2]|0,c,247);if((k[c>>2]|0)!=252){r=a;return}dO(k[f>>2]|0,d,252);f=b+20|0;if((th(k[f>>2]|0)|0)>0)g=0;else{r=a;return}do{b=qh(k[f>>2]|0,g)|0;c=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;h=Hc[k[(k[b>>2]|0)+304>>2]&511](b)|0;i=Wo(b,353)|0;if((c|0)<=0){if(h)j=10}else{l=0;do{m=k[(k[h>>2]|0)+32>>2]|0;n=Hc[k[(k[b>>2]|0)+128>>2]&511](b)|0;nd[m&1023](h,n,l);n=ed[k[(k[b>>2]|0)+156>>2]&511](b,l)|0;nd[k[(k[i>>2]|0)+48>>2]&1023](i,e,h);if(+p[e>>3]<+p[d>>3])Un(n,0,1.0);else Zn(n,0);l=l+1|0}while((l|0)!=(c|0));j=10}if((j|0)==10){j=0;Ec[k[(k[h>>2]|0)+4>>2]&1023](h)}g=g+1|0}while((g|0)<(th(k[f>>2]|0)|0));r=a;return}function Tha(a){a=a|0;Sqa(a);return}function Uha(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;b=r;r=r+352|0;c=b+336|0;d=b+332|0;e=b+184|0;f=b+320|0;g=b+176|0;h=b+40|0;i=b+24|0;j=b+12|0;l=b;cO(k[a+44>>2]|0,d,247);switch(k[d>>2]|0){case 250:{a:do if(BY()|0){m=e+56|0;n=e+4|0;k[e>>2]=27524;k[m>>2]=27544;B=0;wa(508,e+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;q=o;vva(m);Qb(q|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){s=Rb()|0;t=Q;u=s}else{k[n>>2]=27560;s=e+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,n|0,c|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);Yua(s);Ava(n);t=w;u=v;break}Yua(c);B=0;Ia(40,e|0,136296,38)|0;v=B;B=0;do if(!(v&1)?(B=0,wa(510,f|0,n|0),w=B,B=0,!(w&1)):0){B=0;ya(425,f|0)|0;w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(f);y=x;z=w;break}else{Yua(f);k[e>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);break a}}else A=15;while(0);if((A|0)==15){v=Rb()|0;y=Q;z=v}k[e>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);C=y;D=z;Qb(D|0)}while(0);p=t;q=u;vva(m);Qb(q|0)}while(0);oi(a);pi(a);mi(a);r=b;return}case 251:{ni(a);k[g>>2]=60;k[g+4>>2]=1;k[c>>2]=k[g>>2];k[c+4>>2]=k[g+4>>2];Fh(a,c);r=b;return}case 252:case 253:{r=b;return}default:{b=h+56|0;a=h+4|0;k[h>>2]=27524;k[b>>2]=27544;B=0;wa(508,h+56|0,a|0);g=B;B=0;if(g&1){g=Rb()|0;E=Q;F=g;vva(b);Qb(F|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[b>>2]=27488;B=0;va(448,a|0);g=B;B=0;do if(g&1){q=Rb()|0;G=Q;H=q}else{k[a>>2]=27560;q=h+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;t=Q;Yua(c);Yua(q);Ava(a);G=t;H=u;break}Yua(c);B=0;u=Ia(40,h|0,136335,11)|0;t=B;B=0;b:do if((((!(t&1)?(B=0,p=ya(427,k[d>>2]|0)|0,z=B,B=0,!(z&1)):0)?(z=Lta(p)|0,B=0,y=Ia(40,u|0,p|0,z|0)|0,z=B,B=0,!(z&1)):0)?(B=0,z=Ia(40,y|0,146481,18)|0,y=B,B=0,!(y&1)):0)?(B=0,Xa(239,z|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,i|0,136347,76);y=B;B=0;do if(!(y&1)){B=0;eb(502,j|0,136424,8);p=B;B=0;if(p&1){p=Rb()|0;e=Q;Yua(i);I=e;J=p;break}B=0;wa(510,l|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;K=1;L=Q;M=p}else{B=0;ua(163,z|0,i|0,j|0,31,l|0);p=B;B=0;if(p&1)N=1;else{B=0;eb(503,z|0,1240,229);B=0;N=0}p=Rb()|0;e=Q;Yua(l);K=N;L=e;M=p}Yua(j);Yua(i);if(K){I=L;J=M}else{O=L;P=M;break b}}else{p=Rb()|0;I=Q;J=p}while(0);zb(z|0);O=I;P=J}else A=38;while(0);if((A|0)==38){u=Rb()|0;O=Q;P=u}k[h>>2]=27468;k[b>>2]=27488;k[a>>2]=27560;Yua(q);Ava(a);vva(b);C=O;D=P;Qb(D|0)}while(0);E=G;F=H;vva(b);Qb(F|0)}}}function Vha(a,b,c){a=a|0;b=b|0;c=c|0;return}function Wha(a,b,c){a=a|0;b=b|0;c=c|0;return}function Xha(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a=r;r=r+16|0;d=a+8|0;e=a;if((k[c+40>>2]|0)!=300){k[e>>2]=136615;k[e+4>>2]=136636;Ska(c,2,e)}hoa(b,c,531,738,534);k[d>>2]=136615;k[d+4>>2]=136636;Lka(c,2,d);r=a;return}function Yha(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function Zha(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0;a=c+56|0;f=k[a>>2]|0;if((f|0)>0){g=c+32|0;h=f;f=0;j=0;while(1){if(!(i[(k[g>>2]|0)+j>>0]|0)){l=h;m=f}else{n=qh(b,f)|0;Uc[k[(k[n>>2]|0)+480>>2]&63](n,j,c,d,e,738);l=k[a>>2]|0;m=f+1|0}j=j+1|0;if((j|0)>=(l|0))break;else{h=l;f=m}}}if((k[c+40>>2]|0)==300)return;Zka(c,b,136615,287);Zka(c,b,136636,288);return}function _ha(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function $ha(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;a=r;r=r+320|0;c=a+304|0;d=a+316|0;e=a+300|0;f=a+152|0;g=a+288|0;h=a+16|0;j=a;l=b+44|0;bO(k[l>>2]|0,d,759);cO(k[l>>2]|0,e,991);xh(b,531);a:do if(CY()|0){l=f+56|0;m=f+4|0;k[f>>2]=27524;k[l>>2]=27544;B=0;wa(508,f+56|0,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(l);Qb(p|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[l>>2]=27488;B=0;va(448,m|0);n=B;B=0;do if(n&1){q=Rb()|0;s=Q;t=q}else{k[m>>2]=27560;q=f+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,m|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(c);Yua(q);Ava(m);s=v;t=u;break}Yua(c);B=0;u=Ia(40,f|0,136457,17)|0;v=B;B=0;do if((((!(v&1)?(B=0,w=ya(427,k[e>>2]|0)|0,x=B,B=0,!(x&1)):0)?(x=Lta(w)|0,B=0,y=Ia(40,u|0,w|0,x|0)|0,x=B,B=0,!(x&1)):0)?(B=0,Ia(40,y|0,136475,27)|0,y=B,B=0,!(y&1)):0)?(B=0,wa(510,g|0,m|0),y=B,B=0,!(y&1)):0){B=0;ya(425,g|0)|0;y=B;B=0;if(y&1){y=Rb()|0;x=Q;Yua(g);z=x;A=y;break}else{Yua(g);k[f>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);break a}}else C=17;while(0);if((C|0)==17){u=Rb()|0;z=Q;A=u}k[f>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);D=z;E=A;Qb(E|0)}while(0);o=s;p=t;vva(l);Qb(p|0)}while(0);Voa(b);if(!(i[d>>0]|0)){r=a;return}b:do if(CY()|0){d=h+56|0;p=h+4|0;k[h>>2]=27524;k[d>>2]=27544;B=0;wa(508,h+56|0,p|0);t=B;B=0;if(t&1){t=Rb()|0;F=Q;G=t;vva(d);Qb(G|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[d>>2]=27488;B=0;va(448,p|0);t=B;B=0;do if(t&1){s=Rb()|0;H=Q;I=s}else{k[p>>2]=27560;s=h+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,p|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;A=Q;Yua(c);Yua(s);Ava(p);H=A;I=o;break}Yua(c);B=0;Ia(40,h|0,148942,18)|0;o=B;B=0;do if(!(o&1)?(B=0,wa(510,j|0,p|0),A=B,B=0,!(A&1)):0){B=0;ya(425,j|0)|0;A=B;B=0;if(A&1){A=Rb()|0;z=Q;Yua(j);J=z;K=A;break}else{Yua(j);k[h>>2]=27468;k[d>>2]=27488;k[p>>2]=27560;Yua(s);Ava(p);vva(d);break b}}else C=34;while(0);if((C|0)==34){o=Rb()|0;J=Q;K=o}k[h>>2]=27468;k[d>>2]=27488;k[p>>2]=27560;Yua(s);Ava(p);vva(d);D=J;E=K;Qb(E|0)}while(0);F=H;G=I;vva(d);Qb(G|0)}while(0);fi(b,b+48|0,e,1,1);r=a;return}function aia(a,b){a=a|0;b=b|0;return 0}function bia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,136503,81);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,81,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function cia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;a=r;r=r+32|0;c=a+20|0;d=a+16|0;e=a+12|0;f=a;g=a+8|0;k[g>>2]=0;cp(b,c,298);a:do switch(k[c>>2]|0){case 302:{cp(b,d,991);h=(k[d>>2]|0)==353?2:3;i=b;break}case 300:{h=1;i=b;break}default:if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){h=0;i=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{j=0;r=a;return j|0}}while(0);cp(i,e,298);b=k[e>>2]|0;e=(b|0)==300;d=(b|0)==302;b=d?3:e?2:1;c=Hc[k[(k[i>>2]|0)+164>>2]&511](i)|0;l=gq(i,534)|0;m=ma(b,c)|0;n=Rqa(m>>>0>536870911?-1:m<<3)|0;m=Rqa(d?72:e?32:8)|0;Wo(i,993)|0;Wo(i,994)|0;Uo(i,g);e=ed[k[(k[i>>2]|0)+308>>2]&511](i,2)|0;d=Hc[k[(k[e>>2]|0)+8>>2]&511](e)|0;if((d|0)<(Hc[k[(k[e>>2]|0)+12>>2]&511](e)|0)){o=e+8|0;q=l+12|0;s=b<<3;t=(b>>>0>1?b:1)<<3;u=d;do{Fc[k[(k[e>>2]|0)+24>>2]&1023](e,u);rd[k[(k[i>>2]|0)+260>>2]&511](i,f,k[g>>2]|0,e);d=Hc[k[(k[i>>2]|0)+164>>2]&511](i)|0;v=Rqa(d>>>0>536870911?-1:d<<3)|0;nd[k[(k[i>>2]|0)+336>>2]&1023](i,v,e);Tqa(v);v=k[g>>2]|0;d=Hc[k[(k[i>>2]|0)+164>>2]&511](i)|0;w=ma(d,b)|0;x=Rqa(w>>>0>536870911?-1:w<<3)|0;rd[k[(k[i>>2]|0)+340>>2]&511](i,x,v,e);if((d|0)>0){v=0;do{w=0;do{y=(ma(w,d)|0)+v|0;p[n+(y<<3)>>3]=+p[x+(y<<3)>>3];w=w+1|0}while((w|0)!=(b|0));v=v+1|0}while((v|0)!=(d|0))}Tqa(x);z=+p[o>>3]*+p[f>>3];d=0;do{v=ma(d,b)|0;if((d|0)<2){w=0;do{p[m+(w+v<<3)>>3]=(d|0)==(w|0)?z:0.0;w=w+1|0}while((w|0)<(b|0))}else WEa(m+(ma(s,d)|0)|0,0,t|0)|0;d=d+1|0}while((d|0)<(b|0));ZX(n,b,c,1,m,b,b,0,n,b,c,0,k[q>>2]|0,1)|0;u=u+1|0}while((u|0)<(Hc[k[(k[e>>2]|0)+12>>2]&511](e)|0))}u=k[g>>2]|0;if(u)Tqa(u);k[g>>2]=0;Tqa(n);Tqa(m);Ec[k[(k[e>>2]|0)+4>>2]&1023](e);if(h){j=l;r=a;return j|0}ap(i);if(!i){j=l;r=a;return j|0}Ec[k[(k[i>>2]|0)+4>>2]&1023](i);j=l;r=a;return j|0}function dia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;a=r;r=r+16|0;c=a+4|0;d=a;cp(b,c,298);a:do switch(k[c>>2]|0){case 302:{cp(b,d,991);e=(k[d>>2]|0)==353?2:3;f=b;break}case 300:{e=1;f=b;break}default:if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){e=0;f=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{g=0;r=a;return g|0}}while(0);b=Hc[k[(k[f>>2]|0)+164>>2]&511](f)|0;d=iq(f,534)|0;if((b|0)>0)WEa(k[d+4>>2]|0,0,b<<3|0)|0;if(e){g=d;r=a;return g|0}ap(f);if(!f){g=d;r=a;return g|0}Ec[k[(k[f>>2]|0)+4>>2]&1023](f);g=d;r=a;return g|0}function eia(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,136503,81);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,298,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function fia(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,136503,81);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,301,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function gia(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;a=r;r=r+16|0;d=a+8|0;e=a+4|0;f=a;cp(c,d,298);switch(k[d>>2]|0){case 302:{cp(c,e,991);d=(k[e>>2]|0)==353;cp(c,f,991);e=k[c>>2]|0;if(d){nd[k[e+228>>2]&1023](c,b,k[f>>2]|0);r=a;return}else{nd[k[e+232>>2]&1023](c,b,k[f>>2]|0);r=a;return}break}case 300:{cp(c,f,991);nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,k[f>>2]|0);r=a;return}default:{cp(c,f,991);nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,k[f>>2]|0);r=a;return}}}function hia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;a=r;r=r+32|0;c=a+16|0;d=a+8|0;e=a;f=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;cp(b,c,991);g=Wo(b,206)|0;h=Wo(b,k[c>>2]|0)|0;c=Hc[k[(k[b>>2]|0)+304>>2]&511](b)|0;if((f|0)>0){i=0;do{j=k[(k[c>>2]|0)+32>>2]|0;l=Hc[k[(k[b>>2]|0)+128>>2]&511](b)|0;nd[j&1023](c,l,i);l=ed[k[(k[b>>2]|0)+156>>2]&511](b,i)|0;nd[k[(k[g>>2]|0)+48>>2]&1023](g,d,c);do if(ao(l)|0)if(!(+p[d>>3]<=0.0)){Zn(l,0);break}else{nd[k[(k[h>>2]|0)+48>>2]&1023](h,e,c);Un(l,0,+p[e>>3]);break}while(0);i=i+1|0}while((i|0)!=(f|0))}if(!c){r=a;return}Ec[k[(k[c>>2]|0)+4>>2]&1023](c);r=a;return}function iia(a,b){a=a|0;b=b|0;var c=0;a=b+20|0;if((th(k[a>>2]|0)|0)>0)c=0;else return;do{hia(0,qh(k[a>>2]|0,c)|0);c=c+1|0}while((c|0)<(th(k[a>>2]|0)|0));return}function jia(a){a=a|0;Sqa(a);return}function kia(a,b,c){a=a|0;b=b|0;c=c|0;return}function lia(a,b,c){a=a|0;b=b|0;c=c|0;return}function mia(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a=r;r=r+16|0;d=a+8|0;e=a;if((k[c+40>>2]|0)!=300){k[e>>2]=136615;k[e+4>>2]=136636;Ska(c,2,e)}hoa(b,c,532,738,534);k[d>>2]=136615;k[d+4>>2]=136636;Lka(c,2,d);r=a;return}function nia(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function oia(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0;a=c+56|0;f=k[a>>2]|0;if((f|0)<=0){Zka(c,b,137867,206);return}g=c+32|0;h=f;f=0;j=0;while(1){if(!(i[(k[g>>2]|0)+j>>0]|0)){l=h;m=f}else{n=qh(b,f)|0;Uc[k[(k[n>>2]|0)+480>>2]&63](n,j,c,d,e,738);l=k[a>>2]|0;m=f+1|0}j=j+1|0;if((j|0)>=(l|0))break;else{h=l;f=m}}Zka(c,b,137867,206);return}function pia(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function qia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0;c=r;r=r+928|0;d=c+904|0;e=c+916|0;f=c+876|0;g=c+728|0;h=c+892|0;j=c+592|0;l=c+880|0;m=c+440|0;n=c+864|0;o=c+304|0;p=c+576|0;q=c+168|0;s=c+152|0;t=c+16|0;u=c;k[f>>2]=0;bO(k[b+44>>2]|0,e,759);xh(b,532);a:do if(CY()|0){v=g+56|0;w=g+4|0;k[g>>2]=27524;k[v>>2]=27544;B=0;wa(508,g+56|0,w|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;z=x;vva(v);Qb(z|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[v>>2]=27488;B=0;va(448,w|0);x=B;B=0;do if(x&1){A=Rb()|0;C=Q;D=A}else{k[w>>2]=27560;A=g+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[g+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,w|0,d|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(d);Yua(A);Ava(w);C=F;D=E;break}Yua(d);B=0;Ia(40,g|0,136660,34)|0;E=B;B=0;do if(!(E&1)?(B=0,wa(510,h|0,w|0),F=B,B=0,!(F&1)):0){B=0;ya(425,h|0)|0;F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(h);H=G;I=F;break}else{Yua(h);k[g>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);break a}}else J=14;while(0);if((J|0)==14){E=Rb()|0;H=Q;I=E}k[g>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);K=H;L=I;Qb(L|0)}while(0);y=C;z=D;vva(v);Qb(z|0)}while(0);ria(a,b);a=j+56|0;z=j+4|0;D=j+56|0;C=j+128|0;y=j+132|0;I=j+36|0;H=j+52|0;g=m+56|0;h=m+4|0;w=m+56|0;x=m+128|0;E=m+132|0;F=m+36|0;G=m+52|0;M=o+56|0;N=o+4|0;O=o+56|0;P=o+128|0;R=o+132|0;S=o+36|0;T=o+52|0;U=0;V=1;while(1){k[j>>2]=27524;k[a>>2]=27544;B=0;wa(508,D|0,z|0);W=B;B=0;if(W&1){J=22;break}k[C>>2]=0;k[y>>2]=-1;k[j>>2]=27468;k[a>>2]=27488;B=0;va(448,z|0);W=B;B=0;if(W&1){J=23;break}k[z>>2]=27560;k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[I+12>>2]=0;k[H>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,z|0,d|0);W=B;B=0;if(W&1){J=21;break}Yua(d);B=0;Ia(40,j|0,136695,20)|0;W=B;B=0;if(W&1){J=44;break}B=0;wa(510,l|0,z|0);W=B;B=0;if(W&1){J=44;break}B=0;ya(424,l|0)|0;W=B;B=0;if(W&1){J=45;break}Yua(l);k[j>>2]=27468;k[a>>2]=27488;k[z>>2]=27560;Yua(I);Ava(z);vva(a);kpa(b);if(CY()|0){k[m>>2]=27524;k[g>>2]=27544;B=0;wa(508,w|0,h|0);W=B;B=0;if(W&1){J=34;break}k[x>>2]=0;k[E>>2]=-1;k[m>>2]=27468;k[g>>2]=27488;B=0;va(448,h|0);W=B;B=0;if(W&1){J=35;break}k[h>>2]=27560;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;k[G>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);W=B;B=0;if(W&1){J=33;break}Yua(d);B=0;W=Ia(40,m|0,136716,53)|0;X=B;B=0;if(X&1){J=47;break}B=0;X=Xa(242,W|0,V|0)|0;W=B;B=0;if(W&1){J=47;break}B=0;Ia(40,X|0,136770,2)|0;X=B;B=0;if(X&1){J=47;break}B=0;wa(510,n|0,h|0);X=B;B=0;if(X&1){J=47;break}B=0;ya(425,n|0)|0;X=B;B=0;if(X&1){J=48;break}Yua(n);k[m>>2]=27468;k[g>>2]=27488;k[h>>2]=27560;Yua(F);Ava(h);vva(g)}Voa(b);Aoa(f,b);if((V|0)>1){if(CY()|0){k[o>>2]=27524;k[M>>2]=27544;B=0;wa(508,O|0,N|0);X=B;B=0;if(X&1){J=56;break}k[P>>2]=0;k[R>>2]=-1;k[o>>2]=27468;k[M>>2]=27488;B=0;va(448,N|0);X=B;B=0;if(X&1){J=57;break}k[N>>2]=27560;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;k[T>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,N|0,d|0);X=B;B=0;if(X&1){J=55;break}Yua(d);B=0;Ia(40,o|0,136773,41)|0;X=B;B=0;if(X&1){J=64;break}B=0;wa(510,p|0,N|0);X=B;B=0;if(X&1){J=64;break}B=0;ya(425,p|0)|0;X=B;B=0;if(X&1){J=65;break}Yua(p);k[o>>2]=27468;k[M>>2]=27488;k[N>>2]=27560;Yua(S);Ava(N);vva(M)}if(sia(0,k[f>>2]|0,U,.05)|0){J=95;break}if((V|0)>3){J=69;break}}if(U){if((k[U>>2]|0)!=0?(X=k[U+4>>2]|0,(X|0)!=0):0){W=k[X>>2]|0;if(W)Ec[k[(k[W>>2]|0)+4>>2]&1023](W);Sqa(X)}Sqa(U)}U=k[f>>2]|0;V=V+1|0}b:switch(J|0){case 21:{V=Rb()|0;f=Q;Yua(d);Yua(I);Ava(z);Y=f;Z=V;J=24;break}case 22:{V=Rb()|0;_=Q;$=V;vva(a);Qb($|0);break}case 23:{V=Rb()|0;Y=Q;Z=V;J=24;break}case 33:{V=Rb()|0;f=Q;Yua(d);Yua(F);Ava(h);aa=f;ba=V;J=36;break}case 34:{V=Rb()|0;ca=Q;da=V;vva(g);Qb(da|0);break}case 35:{V=Rb()|0;aa=Q;ba=V;J=36;break}case 44:{V=Rb()|0;ea=Q;fa=V;J=46;break}case 45:{V=Rb()|0;f=Q;Yua(l);ea=f;fa=V;J=46;break}case 47:{V=Rb()|0;ga=Q;ha=V;J=49;break}case 48:{V=Rb()|0;f=Q;Yua(n);ga=f;ha=V;J=49;break}case 55:{V=Rb()|0;f=Q;Yua(d);Yua(S);Ava(N);ia=f;ja=V;J=58;break}case 56:{V=Rb()|0;ka=Q;la=V;vva(M);Qb(la|0);break}case 57:{V=Rb()|0;ia=Q;ja=V;J=58;break}case 64:{V=Rb()|0;ma=Q;na=V;J=66;break}case 65:{V=Rb()|0;f=Q;Yua(p);ma=f;na=V;J=66;break}case 69:{if(CY()|0){V=q+56|0;f=q+4|0;k[q>>2]=27524;k[V>>2]=27544;B=0;wa(508,q+56|0,f|0);p=B;B=0;if(p&1){p=Rb()|0;oa=Q;pa=p;vva(V);Qb(pa|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[V>>2]=27488;B=0;va(448,f|0);p=B;B=0;do if(p&1){n=Rb()|0;qa=Q;ra=n}else{k[f>>2]=27560;n=q+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[q+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,f|0,d|0);l=B;B=0;if(l&1){l=Rb()|0;U=Q;Yua(d);Yua(n);Ava(f);qa=U;ra=l;break}Yua(d);B=0;l=Ia(40,q|0,136815,46)|0;U=B;B=0;do if(((!(U&1)?(B=0,T=Xa(242,l|0,3)|0,R=B,B=0,!(R&1)):0)?(B=0,Ia(40,T|0,136862,9)|0,T=B,B=0,!(T&1)):0)?(B=0,wa(510,s|0,f|0),T=B,B=0,!(T&1)):0){B=0;ya(425,s|0)|0;T=B;B=0;if(T&1){T=Rb()|0;R=Q;Yua(s);sa=R;ta=T;break}else{Yua(s);k[q>>2]=27468;k[V>>2]=27488;k[f>>2]=27560;Yua(n);Ava(f);vva(V);J=95;break b}}else J=84;while(0);if((J|0)==84){l=Rb()|0;sa=Q;ta=l}k[q>>2]=27468;k[V>>2]=27488;k[f>>2]=27560;Yua(n);Ava(f);vva(V);K=sa;L=ta;Qb(L|0)}while(0);oa=qa;pa=ra;vva(V);Qb(pa|0)}else J=95;break}}if((J|0)==24){_=Y;$=Z;vva(a);Qb($|0)}else if((J|0)==36){ca=aa;da=ba;vva(g);Qb(da|0)}else if((J|0)==46){k[j>>2]=27468;k[a>>2]=27488;k[z>>2]=27560;Yua(I);Ava(z);vva(a);K=ea;L=fa;Qb(L|0)}else if((J|0)==49){k[m>>2]=27468;k[g>>2]=27488;k[h>>2]=27560;Yua(F);Ava(h);vva(g);K=ga;L=ha;Qb(L|0)}else if((J|0)==58){ka=ia;la=ja;vva(M);Qb(la|0)}else if((J|0)==66){k[o>>2]=27468;k[M>>2]=27488;k[N>>2]=27560;Yua(S);Ava(N);vva(M);K=ma;L=na;Qb(L|0)}else if((J|0)==95){if(!(i[e>>0]|0)){r=c;return}c:do if(CY()|0){e=t+56|0;na=t+4|0;k[t>>2]=27524;k[e>>2]=27544;B=0;wa(508,t+56|0,na|0);ma=B;B=0;if(ma&1){ma=Rb()|0;ua=Q;xa=ma;vva(e);Qb(xa|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[e>>2]=27488;B=0;va(448,na|0);ma=B;B=0;do if(ma&1){M=Rb()|0;za=Q;Aa=M}else{k[na>>2]=27560;M=t+36|0;k[M>>2]=0;k[M+4>>2]=0;k[M+8>>2]=0;k[M+12>>2]=0;k[t+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,na|0,d|0);N=B;B=0;if(N&1){N=Rb()|0;S=Q;Yua(d);Yua(M);Ava(na);za=S;Aa=N;break}Yua(d);B=0;Ia(40,t|0,148942,18)|0;N=B;B=0;do if(!(N&1)?(B=0,wa(510,u|0,na|0),S=B,B=0,!(S&1)):0){B=0;ya(425,u|0)|0;S=B;B=0;if(S&1){S=Rb()|0;o=Q;Yua(u);Ba=o;Ca=S;break}else{Yua(u);k[t>>2]=27468;k[e>>2]=27488;k[na>>2]=27560;Yua(M);Ava(na);vva(e);break c}}else J=109;while(0);if((J|0)==109){N=Rb()|0;Ba=Q;Ca=N}k[t>>2]=27468;k[e>>2]=27488;k[na>>2]=27560;Yua(M);Ava(na);vva(e);K=Ba;L=Ca;Qb(L|0)}while(0);ua=za;xa=Aa;vva(e);Qb(xa|0)}while(0);k[d>>2]=206;fi(b,b+48|0,d,1,1);r=c;return}}function ria(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=b+20|0;if((th(k[c>>2]|0)|0)>0){d=0;do{e=qh(k[c>>2]|0,d)|0;if((Hc[k[(k[e>>2]|0)+164>>2]&511](e)|0)>0){f=0;do{g=ed[k[(k[e>>2]|0)+156>>2]&511](e,f)|0;if(ao(g)|0)Zn(g,0);f=f+1|0}while((f|0)<(Hc[k[(k[e>>2]|0)+164>>2]&511](e)|0))}d=d+1|0}while((d|0)<(th(k[c>>2]|0)|0))}Aia(a,b);if((th(k[c>>2]|0)|0)>0)h=0;else return;do{b=qh(k[c>>2]|0,h)|0;if(ed[k[(k[b>>2]|0)+256>>2]&511](b,206)|0){a=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;d=Rqa(a>>>0>536870911?-1:a<<3)|0;vp(b,d,206);if((a|0)>0){e=0;do{f=ed[k[(k[b>>2]|0)+156>>2]&511](b,e)|0;if(ao(f)|0)Un(f,0,+p[d+(e<<3)>>3]);e=e+1|0}while((e|0)!=(a|0))}Tqa(d)}h=h+1|0}while((h|0)<(th(k[c>>2]|0)|0));return}function sia(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0.0,y=0.0,z=0.0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;a=r;r=r+496|0;e=a+472|0;f=a+312|0;g=a+460|0;h=a+448|0;i=a+160|0;j=a+176|0;l=a+12|0;m=a+24|0;n=a;o=Qqa(8)|0;B=0;va(485,o|0);q=B;B=0;if(q&1){q=Rb()|0;Sqa(o);Qb(q|0)}if((k[c>>2]|0)!=0?(q=c+4|0,s=k[q>>2]|0,u=Qqa(4)|0,v=k[s>>2]|0,w=Hc[k[(k[v>>2]|0)+36>>2]&511](v)|0,k[u>>2]=w,v=k[s>>2]|0,Fc[k[(k[v>>2]|0)+60>>2]&1023](v,w),k[o+4>>2]=u,(k[c>>2]|0)!=0):0){w=k[k[q>>2]>>2]|0;Fc[k[(k[w>>2]|0)+60>>2]&1023](w,k[u>>2]|0)}if((k[o>>2]|0)!=0?(u=o+4|0,w=k[k[u>>2]>>2]|0,Xc[k[(k[w>>2]|0)+48>>2]&63](w,k[k[b+4>>2]>>2]|0,-1.0),(k[o>>2]|0)!=0):0){b=k[k[u>>2]>>2]|0;x=+id[k[(k[b>>2]|0)+64>>2]&63](b,1)}else x=0.0;if(!(k[c>>2]|0))y=0.0;else{b=k[k[c+4>>2]>>2]|0;y=+id[k[(k[b>>2]|0)+64>>2]&63](b,1)}z=+$(+x);p[t>>3]=z;b=k[t+4>>2]|0;if(!(b>>>0>2146435072|(b|0)==2146435072&(k[t>>2]|0)>>>0>0)?(z=+$(+y),p[t>>3]=z,b=k[t+4>>2]|0,!(b>>>0>2146435072|(b|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){z=x/y;b=EY()|0;a:do if(z<d)if(b){c=j+56|0;u=j+4|0;k[j>>2]=27524;k[c>>2]=27544;B=0;wa(508,j+56|0,u|0);w=B;B=0;if(w&1){w=Rb()|0;A=Q;C=w;vva(c);Qb(C|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[c>>2]=27488;B=0;va(448,u|0);w=B;B=0;do if(w&1){q=Rb()|0;D=Q;E=q}else{k[u>>2]=27560;q=j+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[j+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,u|0,e|0);v=B;B=0;if(v&1){v=Rb()|0;s=Q;Yua(e);Yua(q);Ava(u);D=s;E=v;break}Yua(e);B=0;v=Ia(40,j|0,149177,1)|0;s=B;B=0;do if((((!(s&1)?(k[v+(k[(k[v>>2]|0)+-12>>2]|0)+12>>2]=50,F=v+(k[(k[v>>2]|0)+-12>>2]|0)+4|0,k[F>>2]=k[F>>2]&-177|32,B=0,F=Ia(40,v|0,136978,41)|0,G=B,B=0,!(G&1)):0)?(B=0,G=Sa(1,F|0,+(z*100.0))|0,F=B,B=0,!(F&1)):0)?(B=0,F=Ia(40,G|0,148270,3)|0,G=B,B=0,!(G&1)):0)?(B=0,G=Sa(1,F|0,+(d*100.0))|0,F=B,B=0,!(F&1)):0){B=0;Ia(40,G|0,148274,3)|0;G=B;B=0;if(G&1){H=55;break}B=0;wa(510,l|0,u|0);G=B;B=0;if(G&1){H=55;break}B=0;ya(425,l|0)|0;G=B;B=0;if(G&1){G=Rb()|0;F=Q;Yua(l);I=F;J=G;break}else{Yua(l);k[j>>2]=27468;k[c>>2]=27488;k[u>>2]=27560;Yua(q);Ava(u);vva(c);K=1;break a}}else H=55;while(0);if((H|0)==55){v=Rb()|0;I=Q;J=v}k[j>>2]=27468;k[c>>2]=27488;k[u>>2]=27560;Yua(q);Ava(u);vva(c);L=I;M=J;Qb(M|0)}while(0);A=D;C=E;vva(c);Qb(C|0)}else K=1;else if(b){u=m+56|0;w=m+4|0;k[m>>2]=27524;k[u>>2]=27544;B=0;wa(508,m+56|0,w|0);v=B;B=0;if(v&1){v=Rb()|0;N=Q;O=v;vva(u);Qb(O|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[u>>2]=27488;B=0;va(448,w|0);v=B;B=0;do if(v&1){s=Rb()|0;P=Q;R=s}else{k[w>>2]=27560;s=m+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[m+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,w|0,e|0);G=B;B=0;if(G&1){G=Rb()|0;F=Q;Yua(e);Yua(s);Ava(w);P=F;R=G;break}Yua(e);B=0;G=Ia(40,m|0,149177,1)|0;F=B;B=0;do if((((!(F&1)?(k[G+(k[(k[G>>2]|0)+-12>>2]|0)+12>>2]=50,S=G+(k[(k[G>>2]|0)+-12>>2]|0)+4|0,k[S>>2]=k[S>>2]&-177|32,B=0,S=Ia(40,G|0,136978,41)|0,T=B,B=0,!(T&1)):0)?(B=0,T=Sa(1,S|0,+(z*100.0))|0,S=B,B=0,!(S&1)):0)?(B=0,S=Ia(40,T|0,148278,3)|0,T=B,B=0,!(T&1)):0)?(B=0,T=Sa(1,S|0,+(d*100.0))|0,S=B,B=0,!(S&1)):0){B=0;Ia(40,T|0,148274,3)|0;T=B;B=0;if(T&1){H=76;break}B=0;wa(510,n|0,w|0);T=B;B=0;if(T&1){H=76;break}B=0;ya(425,n|0)|0;T=B;B=0;if(T&1){T=Rb()|0;S=Q;Yua(n);U=S;V=T;break}else{Yua(n);k[m>>2]=27468;k[u>>2]=27488;k[w>>2]=27560;Yua(s);Ava(w);vva(u);K=0;break a}}else H=76;while(0);if((H|0)==76){G=Rb()|0;U=Q;V=G}k[m>>2]=27468;k[u>>2]=27488;k[w>>2]=27560;Yua(s);Ava(w);vva(u);L=U;M=V;Qb(M|0)}while(0);N=P;O=R;vva(u);Qb(O|0)}else K=0;while(0);if(!(k[o>>2]|0)){Sqa(o);r=a;return K|0}O=k[o+4>>2]|0;if(!O){Sqa(o);r=a;return K|0}R=k[O>>2]|0;if(R)Ec[k[(k[R>>2]|0)+4>>2]&1023](R);Sqa(O);Sqa(o);r=a;return K|0}K=f+56|0;a=f+4|0;k[f>>2]=27524;k[K>>2]=27544;B=0;wa(508,f+56|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;W=Q;X=o;vva(K);Qb(X|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[K>>2]=27488;B=0;va(448,a|0);o=B;B=0;do if(o&1){O=Rb()|0;Y=Q;Z=O}else{k[a>>2]=27560;O=f+36|0;k[O>>2]=0;k[O+4>>2]=0;k[O+8>>2]=0;k[O+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,a|0,e|0);R=B;B=0;if(R&1){R=Rb()|0;P=Q;Yua(e);Yua(O);Ava(a);Y=P;Z=R;break}Yua(e);B=0;R=Ia(40,f|0,148282,29)|0;P=B;B=0;b:do if(!(P&1)?(B=0,Xa(239,R|0,0)|0,N=B,B=0,!(N&1)):0){N=Ab(20)|0;B=0;eb(502,g|0,136872,87);V=B;B=0;do if(!(V&1)){B=0;eb(502,h|0,136960,17);U=B;B=0;if(U&1){U=Rb()|0;m=Q;Yua(g);_=m;aa=U;break}B=0;wa(510,i|0,a|0);U=B;B=0;if(U&1){U=Rb()|0;ba=Q;ca=U;da=1}else{B=0;ua(163,N|0,g|0,h|0,394,i|0);U=B;B=0;if(U&1)ea=1;else{B=0;eb(503,N|0,1240,229);B=0;ea=0}U=Rb()|0;m=Q;Yua(i);ba=m;ca=U;da=ea}Yua(h);Yua(g);if(da){_=ba;aa=ca}else{fa=ba;ga=ca;break b}}else{U=Rb()|0;_=Q;aa=U}while(0);zb(N|0);fa=_;ga=aa}else H=28;while(0);if((H|0)==28){R=Rb()|0;fa=Q;ga=R}k[f>>2]=27468;k[K>>2]=27488;k[a>>2]=27560;Yua(O);Ava(a);vva(K);L=fa;M=ga;Qb(M|0)}while(0);W=Y;X=Z;vva(K);Qb(X|0);return 0}function tia(a,b){a=a|0;b=b|0;return 0}function uia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,136872,87);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,108,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function via(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0;a=r;r=r+32|0;c=a+8|0;d=a;e=a+16|0;k[e>>2]=0;f=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;g=gq(b,534)|0;h=Rqa(f>>>0>536870911?-1:f<<3)|0;i=f<<1;j=Rqa(i>>>0>536870911?-1:i<<3)|0;i=Rqa(32)|0;Uo(b,e);l=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;m=Hc[k[(k[l>>2]|0)+8>>2]&511](l)|0;if((m|0)<(Hc[k[(k[l>>2]|0)+12>>2]&511](l)|0)){n=l+8|0;o=g+12|0;q=i+8|0;s=i+16|0;t=i+24|0;u=m;do{Fc[k[(k[l>>2]|0)+24>>2]&1023](l,u);rd[k[(k[b>>2]|0)+260>>2]&511](b,c,k[e>>2]|0,l);p[d>>3]=+p[n>>3]*+p[c>>3];nd[k[(k[b>>2]|0)+336>>2]&1023](b,h,l);ZX(h,f,1,0,d,1,1,0,h,1,f,0,k[o>>2]|0,1)|0;m=k[e>>2]|0;v=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;w=v<<1;x=Rqa(w>>>0>536870911?-1:w<<3)|0;rd[k[(k[b>>2]|0)+340>>2]&511](b,x,m,l);if((v|0)>0){m=0;do{p[j+(m<<3)>>3]=+p[x+(m<<3)>>3];w=m+v|0;p[j+(w<<3)>>3]=+p[x+(w<<3)>>3];m=m+1|0}while((m|0)!=(v|0))}Tqa(x);y=+p[d>>3];p[i>>3]=y;p[q>>3]=0.0;p[s>>3]=0.0;p[t>>3]=y;ZX(j,2,f,1,i,2,2,0,j,2,f,0,k[o>>2]|0,1)|0;u=u+1|0}while((u|0)<(Hc[k[(k[l>>2]|0)+12>>2]&511](l)|0))}u=k[e>>2]|0;if(!u){k[e>>2]=0;Tqa(h);Tqa(j);Tqa(i);z=k[l>>2]|0;A=z+4|0;B=k[A>>2]|0;Ec[B&1023](l);r=a;return g|0}Tqa(u);k[e>>2]=0;Tqa(h);Tqa(j);Tqa(i);z=k[l>>2]|0;A=z+4|0;B=k[A>>2]|0;Ec[B&1023](l);r=a;return g|0}function wia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0;a=r;r=r+32|0;c=a+8|0;d=a;e=a+16|0;f=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;k[e>>2]=0;g=Rqa(f>>>0>536870911?-1:f<<3)|0;h=f<<1;i=Rqa(h>>>0>536870911?-1:h<<3)|0;h=Rqa(16)|0;j=Rqa(16)|0;Uo(b,e);l=iq(b,534)|0;m=Wo(b,206)|0;n=Wo(b,993)|0;o=Wo(b,994)|0;q=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;s=Hc[k[(k[q>>2]|0)+8>>2]&511](q)|0;if((s|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0)){t=q+8|0;u=(f|0)>0;v=h+8|0;w=l+4|0;x=h+8|0;y=j+8|0;z=j+8|0;A=s;do{Fc[k[(k[q>>2]|0)+24>>2]&1023](q,A);rd[k[(k[b>>2]|0)+260>>2]&511](b,c,k[e>>2]|0,q);nd[k[(k[b>>2]|0)+336>>2]&1023](b,g,q);rd[k[(k[b>>2]|0)+340>>2]&511](b,i,k[e>>2]|0,q);B=+p[c>>3]*+p[t>>3];nd[k[(k[m>>2]|0)+48>>2]&1023](m,d,q);if(u){s=k[w>>2]|0;C=0;do{D=s+(C<<3)|0;p[D>>3]=B*+p[d>>3]*+p[g+(C<<3)>>3]+ +p[D>>3];C=C+1|0}while((C|0)!=(f|0))}nd[k[(k[n>>2]|0)+48>>2]&1023](n,h,q);nd[k[(k[o>>2]|0)+48>>2]&1023](o,v,q);E=+p[h>>3];F=+p[x>>3];G=+aa(+(E*E+0.0+F*F));if(G>0.0){H=E/G;p[j>>3]=H;E=F/G;p[y>>3]=E;I=E;J=H}else{k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;I=0.0;J=0.0}a:do if(u){C=k[w>>2]|0;H=J;E=I;s=0;while(1){D=C+(s<<3)|0;p[D>>3]=B*(+p[i+(s<<3)>>3]*H+0.0+ +p[i+(f+s<<3)>>3]*E)+ +p[D>>3];D=s+1|0;if((D|0)==(f|0))break a;H=+p[j>>3];E=+p[z>>3];s=D}}while(0);A=A+1|0}while((A|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0))}Tqa(g);Tqa(i);i=k[e>>2]|0;if(!i){k[e>>2]=0;Tqa(h);Tqa(j);r=a;return l|0}Tqa(i);k[e>>2]=0;Tqa(h);Tqa(j);r=a;return l|0}function xia(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;a=r;r=r+16|0;d=a;e=a+8|0;k[e>>2]=0;cp(c,a+12|0,299);f=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;rp(c,e,534,943);g=Rqa(f>>>0>536870911?-1:f<<3)|0;h=Wo(c,206)|0;i=Hc[k[(k[c>>2]|0)+304>>2]&511](c)|0;if((f|0)>0){j=0;do{l=k[(k[i>>2]|0)+32>>2]|0;m=Hc[k[(k[c>>2]|0)+112>>2]&511](c)|0;nd[l&1023](i,m,j);nd[k[(k[h>>2]|0)+48>>2]&1023](h,d,i);p[g+(j<<3)>>3]=+p[d>>3];j=j+1|0}while((j|0)!=(f|0))}if(k[b>>2]|0){j=k[k[b+4>>2]>>2]|0;Dc[k[(k[j>>2]|0)+16>>2]&255](j,f,k[e>>2]|0,g,0)}if(i)Ec[k[(k[i>>2]|0)+4>>2]&1023](i);Tqa(g);g=k[e>>2]|0;if(!g){r=a;return}Tqa(g);r=a;return}function yia(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,136872,87);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,366,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function zia(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;d=a+180|0;e=a+176|0;f=a+40|0;g=a+24|0;h=a+12|0;i=a;cp(c,e,298);switch(k[e>>2]|0){case 300:{nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,206);r=a;return}case 302:{nd[k[(k[c>>2]|0)+228>>2]&1023](c,b,206);r=a;return}default:{a=f+56|0;b=f+4|0;k[f>>2]=27524;k[a>>2]=27544;B=0;wa(508,f+56|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;j=Q;l=c;vva(a);Qb(l|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[a>>2]=27488;B=0;va(448,b|0);c=B;B=0;do if(c&1){m=Rb()|0;n=Q;o=m}else{k[b>>2]=27560;m=f+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(b);n=q;o=p;break}Yua(d);B=0;p=Ia(40,f|0,144639,5)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[e>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,136872,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,137199,23);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,379,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(a);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(a);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(a);Qb(C|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}}}function Aia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0.0,j=0.0,l=0,m=0.0,n=0.0,o=0.0,q=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;a=r;r=r+16|0;c=a;d=a+8|0;e=nn(k[b+28>>2]|0)|0;k[d>>2]=0;TZ(d,b,206,628);f=b+20|0;if((th(k[f>>2]|0)|0)>0){g=0;do{h=qh(k[f>>2]|0,g)|0;if(ed[k[(k[h>>2]|0)+256>>2]&511](h,206)|0)Bia(0,k[d>>2]|0,h);g=g+1|0}while((g|0)<(th(k[f>>2]|0)|0))}f=k[d>>2]|0;if(k[f>>2]|0){g=k[k[f+4>>2]>>2]|0;Ec[k[(k[g>>2]|0)+12>>2]&1023](g)}g=(e|0)>0;if(g){i=0.0;j=0.0;f=0;while(1){h=k[d>>2]|0;if(k[h>>2]|0){l=k[k[h+4>>2]>>2]|0;nd[k[(k[l>>2]|0)+24>>2]&1023](l,c,f)}m=+p[c>>3];if(m>0.0&m>j){n=i;o=m}else{n=m<0.0&m<i?m:i;o=j}f=f+1|0;if((f|0)==(e|0)){q=n;s=o;break}else{i=n;j=o}}f=k[d>>2]|0;l=(k[f>>2]|0)==0;if(g){o=s*3.0;s=q*3.0;g=l;h=f;t=0;while(1){if(!g){u=k[k[h+4>>2]>>2]|0;nd[k[(k[u>>2]|0)+24>>2]&1023](u,c,t)}q=+p[c>>3];if(q==1.0){u=k[d>>2]|0;if(k[u>>2]|0){v=k[k[u+4>>2]>>2]|0;Jc[k[(k[v>>2]|0)+20>>2]&1](v,t,o,0)}}else if(q==-1.0?(v=k[d>>2]|0,(k[v>>2]|0)!=0):0){u=k[k[v+4>>2]>>2]|0;Jc[k[(k[u>>2]|0)+20>>2]&1](u,t,s,0)}t=t+1|0;u=k[d>>2]|0;v=(k[u>>2]|0)==0;if((t|0)==(e|0)){w=u;x=v;break}else{g=v;h=u}}}else{w=f;x=l}if(x)y=w;else{z=w;A=26}}else{w=k[d>>2]|0;if(!(k[w>>2]|0))y=w;else{z=w;A=26}}if((A|0)==26){A=k[k[z+4>>2]>>2]|0;Ec[k[(k[A>>2]|0)+12>>2]&1023](A);y=k[d>>2]|0}if(!(k[y>>2]|0))B=0;else{A=k[k[y+4>>2]>>2]|0;B=Hc[k[(k[A>>2]|0)+52>>2]&511](A)|0}WZ(b,B,206,629);b=k[d>>2]|0;if(b){if((k[b>>2]|0)!=0?(d=k[b+4>>2]|0,(d|0)!=0):0){A=k[d>>2]|0;if(A)Ec[k[(k[A>>2]|0)+4>>2]&1023](A);Sqa(d)}Sqa(b)}if(!B){r=a;return}Sqa(B);r=a;return}function Bia(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0.0,o=0.0,q=0.0,s=0.0,t=0.0,u=0.0,v=0;a=r;r=r+16|0;d=a;e=a+12|0;f=a+8|0;if(!(ed[k[(k[c>>2]|0)+256>>2]&511](c,206)|0)){r=a;return}g=Hc[k[(k[c>>2]|0)+172>>2]&511](c)|0;h=g>>>0>536870911?-1:g<<3;i=Rqa(h)|0;j=Rqa(h)|0;l=Rqa(h)|0;k[e>>2]=0;k[f>>2]=0;Uo(c,e);xp(c,i,206);h=(g|0)>0;if(h){m=0;do{p[j+(m<<3)>>3]=+p[i+(m<<3)>>3]>=0.0?1.0:-1.0;m=m+1|0}while((m|0)!=(g|0))}rd[k[(k[c>>2]|0)+520>>2]&511](c,f,k[e>>2]|0,206);m=k[f>>2]|0;n=+p[m>>3];o=+p[m+8>>3];if(h){f=k[e>>2]|0;q=+p[m+24>>3]-n;s=+p[m+32>>3]-o;t=+aa(+(q*q+0.0+s*s));m=0;do{e=m*3|0;u=+$(+((+p[f+(e<<3)>>3]-n)*s-q*(+p[f+(e+1<<3)>>3]-o)))/t;p[l+(m<<3)>>3]=+p[j+(m<<3)>>3]*u;m=m+1|0}while((m|0)!=(g|0));if(h){h=c+24|0;c=b+4|0;m=0;do{f=Bo(k[(k[h>>2]|0)+(m<<2)>>2]|0)|0;if(k[b>>2]|0){e=k[k[c>>2]>>2]|0;nd[k[(k[e>>2]|0)+24>>2]&1023](e,d,f)}t=+$(+(+p[d>>3]));if(!(!(t==1.0)?!(+$(+(+p[l+(m<<3)>>3]))<t):0))v=13;if((v|0)==13?(v=0,f=Bo(k[(k[h>>2]|0)+(m<<2)>>2]|0)|0,(k[b>>2]|0)!=0):0){e=k[k[c>>2]>>2]|0;Jc[k[(k[e>>2]|0)+20>>2]&1](e,f,+p[l+(m<<3)>>3],0)}m=m+1|0}while((m|0)!=(g|0))}}Tqa(i);Tqa(j);Tqa(l);r=a;return}function Cia(a,b){a=a|0;b=b|0;return}function Dia(a){a=a|0;Sqa(a);return}function Eia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;b=r;r=r+336|0;c=b;d=b+316|0;e=b+312|0;f=b+320|0;g=b+308|0;h=b+160|0;j=b+296|0;l=b+24|0;m=b+12|0;k[d>>2]=0;k[e>>2]=0;n=a+44|0;bO(k[n>>2]|0,f,759);cO(k[n>>2]|0,g,478);a:do if(CY()|0){n=h+56|0;o=h+4|0;k[h>>2]=27524;k[n>>2]=27544;B=0;wa(508,h+56|0,o|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;s=p;vva(n);Qb(s|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[n>>2]=27488;B=0;va(448,o|0);p=B;B=0;do if(p&1){t=Rb()|0;u=Q;v=t}else{k[o>>2]=27560;t=h+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,o|0,c|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(c);Yua(t);Ava(o);u=x;v=w;break}Yua(c);B=0;Ia(40,h|0,137020,17)|0;w=B;B=0;do if(!(w&1)?(B=0,wa(510,j|0,o|0),x=B,B=0,!(x&1)):0){B=0;ya(425,j|0)|0;x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(j);z=y;A=x;break}else{Yua(j);k[h>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);break a}}else C=14;while(0);if((C|0)==14){w=Rb()|0;z=Q;A=w}k[h>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);D=z;E=A;Qb(E|0)}while(0);q=u;s=v;vva(n);Qb(s|0)}while(0);xh(a,526);s=en(k[a+24>>2]|0,k[g>>2]|0,943)|0;g=Qqa(8)|0;B=0;va(485,g|0);v=B;B=0;b:do if(v&1)C=47;else{do if(k[g>>2]|0){B=0;u=ya(423,4)|0;q=B;B=0;if(q&1){C=47;break b}B=0;eb(505,u|0,s|0,0);q=B;B=0;if(q&1){q=Rb()|0;A=Q;Sqa(u);F=A;G=q;break b}else{k[g+4>>2]=u;break}}while(0);n=Qqa(8)|0;B=0;va(485,n|0);u=B;B=0;c:do if(u&1)C=49;else{do if(k[n>>2]|0){B=0;q=ya(423,4)|0;A=B;B=0;if(A&1){C=49;break c}B=0;eb(505,q|0,s|0,0);A=B;B=0;if(A&1){A=Rb()|0;z=Q;Sqa(q);H=z;I=A;break c}else{k[n+4>>2]=q;break}}while(0);ioa(d,e,0,k[a+28>>2]|0,0);qi(a,g,n,k[d>>2]|0,k[e>>2]|0);if(k[g>>2]|0){t=k[k[g+4>>2]>>2]|0;Ec[k[(k[t>>2]|0)+12>>2]&1023](t)}if(k[n>>2]|0){t=k[k[n+4>>2]>>2]|0;Ec[k[(k[t>>2]|0)+12>>2]&1023](t)}VZ(a,g,735,629);VZ(a,n,734,629);if(i[f>>0]|0){d:do if(CY()|0){t=l+56|0;q=l+4|0;k[l>>2]=27524;k[t>>2]=27544;B=0;wa(508,l+56|0,q|0);A=B;B=0;if(A&1){A=Rb()|0;J=Q;K=A;vva(t);Qb(K|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[t>>2]=27488;B=0;va(448,q|0);A=B;B=0;do if(A&1){z=Rb()|0;L=Q;M=z}else{k[q>>2]=27560;z=l+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,q|0,c|0);h=B;B=0;if(h&1){h=Rb()|0;j=Q;Yua(c);Yua(z);Ava(q);L=j;M=h;break}Yua(c);B=0;Ia(40,l|0,148942,18)|0;h=B;B=0;do if(!(h&1)?(B=0,wa(510,m|0,q|0),j=B,B=0,!(j&1)):0){B=0;ya(425,m|0)|0;j=B;B=0;if(j&1){j=Rb()|0;o=Q;Yua(m);N=o;O=j;break}else{Yua(m);k[l>>2]=27468;k[t>>2]=27488;k[q>>2]=27560;Yua(z);Ava(q);vva(t);break d}}else C=51;while(0);if((C|0)==51){h=Rb()|0;N=Q;O=h}k[l>>2]=27468;k[t>>2]=27488;k[q>>2]=27560;Yua(z);Ava(q);vva(t);D=N;E=O;Qb(E|0)}while(0);J=L;K=M;vva(t);Qb(K|0)}while(0);q=c;k[q>>2]=735;k[q+4>>2]=734;fi(a,a+48|0,c,2,1)}q=k[d>>2]|0;if(q)Tqa(q);k[d>>2]=0;q=k[e>>2]|0;if(!q){r=b;return}Tqa(q);r=b;return}while(0);if((C|0)==49){u=Rb()|0;H=Q;I=u}Sqa(n);D=H;E=I;Qb(E|0)}while(0);if((C|0)==47){C=Rb()|0;F=Q;G=C}Sqa(g);D=F;E=G;Qb(E|0)}function Fia(a,b,c){a=a|0;b=b|0;c=c|0;return}function Gia(a,b,c){a=a|0;b=b|0;c=c|0;return}function Hia(a,b,c){a=a|0;b=b|0;c=c|0;hoa(b,c,526,738,534);return}function Iia(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function Jia(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0;a=c+56|0;f=k[a>>2]|0;if((f|0)>0){g=c+32|0;h=f;f=0;j=0;while(1){if(!(i[(k[g>>2]|0)+j>>0]|0)){l=h;m=f}else{n=qh(b,f)|0;Uc[k[(k[n>>2]|0)+480>>2]&63](n,j,c,d,e,738);l=k[a>>2]|0;m=f+1|0}j=j+1|0;if((j|0)>=(l|0))break;else{h=l;f=m}}}Zka(c,b,137052,353);Zka(c,b,137074,351);Zka(c,b,137098,352);Zka(c,b,137867,206);return}function Kia(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function Lia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,137127,71);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,42,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Mia(a,b){a=a|0;b=b|0;return 0}function Nia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,137127,71);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,49,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Oia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,137127,71);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144189,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,52,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Pia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,137127,71);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144203,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,55,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Qia(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,137127,71);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,58,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Ria(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,137127,71);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,61,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function Sia(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,137127,71);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,137199,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,64,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Tia(a,b){a=a|0;b=b|0;return}function Uia(a){a=a|0;Sqa(a);return}function Via(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0.0,j=0.0,l=0,m=0,n=0,o=0.0,q=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,B=0.0,C=0,D=0,E=0,F=0;d=r;r=r+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;i=+p[c>>3];j=+p[c+8>>3];l=k[c+16>>2]|0;m=k[c+20>>2]|0;n=k[c+24>>2]|0;o=+p[c+40>>3];q=+p[c+48>>3];s=+p[c+56>>3];t=+p[c+64>>3];u=+p[c+72>>3];v=+p[c+80>>3];w=+p[c+96>>3];k[e>>2]=k[c+88>>2];B=+p[c+104>>3];k[f>>2]=n;c=n+-1|0;k[g>>2]=c;C=n+1|0;k[h>>2]=C;p[y>>3]=v;p[y+8>>3]=t;p[y+16>>3]=o;p[y+24>>3]=s;p[y+32>>3]=q;p[y+40>>3]=u;p[y+48>>3]=j;p[x>>3]=w;D=Rqa(n>>>0>536870911?-1:n<<3)|0;if((n|0)>0){E=0;do{p[D+(E<<3)>>3]=+p[l+(E<<3)>>3];E=E+1|0}while((E|0)<(n|0))}E=Rqa(C>>>0>536870911?-1:C<<3)|0;if((n|0)>-1){C=m+(c<<3)|0;l=0;while(1){F=E+(l<<3)|0;p[F>>3]=+p[m+(l<<3)>>3]/1.0e3/B;if((l|0)==(c|0))p[F>>3]=+p[C>>3]/1.0e3/B;if((l|0)==(n|0))p[F>>3]=+p[C>>3]/1.0e3/B;if((l|0)<(n|0))l=l+1|0;else break}}l=c>>>0>536870911?-1:c<<3;c=Rqa(l)|0;n=Rqa(l)|0;p[z>>3]=i/1.0e3;rc(f|0,h|0,g|0,E|0,c|0,n|0,D|0)|0;Ib(e|0,h|0,g|0,E|0,c|0,n|0)|0;i=+p[A+8>>3];p[a>>3]=+p[A>>3];p[b>>3]=i;Tqa(E);Tqa(c);Tqa(n);Tqa(D);r=d;return}function Wia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;b=r;r=r+336|0;c=b+320|0;d=b+334|0;e=b+333|0;f=b+332|0;g=b+312|0;h=b+308|0;j=b+304|0;l=b+168|0;m=b+152|0;n=b+16|0;o=b;k[h>>2]=0;k[j>>2]=0;p=a+44|0;cO(k[p>>2]|0,b+316|0,478);cO(k[p>>2]|0,g,476);bO(k[p>>2]|0,d,759);bO(k[p>>2]|0,e,370);bO(k[p>>2]|0,f,361);if((k[g>>2]|0)==997){i[e>>0]=1;i[f>>0]=0;q=0;s=1}else{q=i[f>>0]|0;s=i[e>>0]|0}if(((s^1)&(q^1))<<24>>24){r=b;return}a:do if(CY()|0){q=l+56|0;s=l+4|0;k[l>>2]=27524;k[q>>2]=27544;B=0;wa(508,l+56|0,s|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;v=t;vva(q);Qb(v|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[q>>2]=27488;B=0;va(448,s|0);t=B;B=0;do if(t&1){w=Rb()|0;x=Q;y=w}else{k[s>>2]=27560;w=l+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,s|0,c|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(c);Yua(w);Ava(s);x=A;y=z;break}Yua(c);B=0;Ia(40,l|0,137223,28)|0;z=B;B=0;do if(!(z&1)?(B=0,wa(510,m|0,s|0),A=B,B=0,!(A&1)):0){B=0;ya(425,m|0)|0;A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(m);D=C;E=A;break}else{Yua(m);k[l>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);break a}}else F=18;while(0);if((F|0)==18){z=Rb()|0;D=Q;E=z}k[l>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);G=D;H=E;Qb(H|0)}while(0);u=x;v=y;vva(q);Qb(v|0)}while(0);if(i[e>>0]|0)xh(a,998);if(i[f>>0]|0)Xia(a,1001);if(i[e>>0]|0){e=Zia(a)|0;v=_ia(a,e)|0;xoa(a,v);if(i[d>>0]|0){b:do if(CY()|0){d=n+56|0;y=n+4|0;k[n>>2]=27524;k[d>>2]=27544;B=0;wa(508,n+56|0,y|0);x=B;B=0;if(x&1){x=Rb()|0;I=Q;J=x;vva(d);Qb(J|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[d>>2]=27488;B=0;va(448,y|0);x=B;B=0;do if(x&1){u=Rb()|0;K=Q;L=u}else{k[y>>2]=27560;u=n+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[n+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,y|0,c|0);E=B;B=0;if(E&1){E=Rb()|0;D=Q;Yua(c);Yua(u);Ava(y);K=D;L=E;break}Yua(c);B=0;Ia(40,n|0,148942,18)|0;E=B;B=0;do if(!(E&1)?(B=0,wa(510,o|0,y|0),D=B,B=0,!(D&1)):0){B=0;ya(425,o|0)|0;D=B;B=0;if(D&1){D=Rb()|0;l=Q;Yua(o);M=l;N=D;break}else{Yua(o);k[n>>2]=27468;k[d>>2]=27488;k[y>>2]=27560;Yua(u);Ava(y);vva(d);break b}}else F=40;while(0);if((F|0)==40){E=Rb()|0;M=Q;N=E}k[n>>2]=27468;k[d>>2]=27488;k[y>>2]=27560;Yua(u);Ava(y);vva(d);G=M;H=N;Qb(H|0)}while(0);I=K;J=L;vva(d);Qb(J|0)}while(0);gO(k[p>>2]|0,j,h,1015);ci(a,a+48|0,k[j>>2]|0,k[h>>2]|0,1)}if((k[g>>2]|0)==997)gi(a);if(v){if((k[v>>2]|0)!=0?(g=k[v+4>>2]|0,(g|0)!=0):0){p=k[g>>2]|0;if(p)Ec[k[(k[p>>2]|0)+4>>2]&1023](p);Sqa(g)}Sqa(v)}if(e){if((k[e>>2]|0)!=0?(v=k[e+4>>2]|0,(v|0)!=0):0){g=k[v>>2]|0;if(g)Ec[k[(k[g>>2]|0)+4>>2]&1023](g);Sqa(v)}Sqa(e)}e=k[h>>2]|0;if(e){v=k[j>>2]|0;if((e|0)>0){g=v;p=e;e=0;while(1){J=g+(e<<2)|0;L=k[J>>2]|0;if(!L)O=p;else{Tqa(L);O=k[h>>2]|0}k[J>>2]=0;e=e+1|0;J=k[j>>2]|0;if((e|0)>=(O|0)){P=J;break}else{g=J;p=O}}}else P=v;if(P)Tqa(P);k[j>>2]=0}}if(!(i[f>>0]|0)){r=b;return}Yia(a,999);r=b;return}
+function bD(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,75969,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,115194,5);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,66,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function cD(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;a=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,75969,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,121097,4);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,67,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(E|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function dD(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;a=r;r=r+192|0;d=a+176|0;e=a+40|0;f=a+24|0;g=a+12|0;h=a;a=e+56|0;i=e+4|0;k[e>>2]=27524;k[a>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(a);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[a>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,149721,19)|0;s=B;B=0;a:do if(!(s&1)?(B=0,Xa(239,q|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,75969,84);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,118419,9);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(f);x=w;y=v;break}B=0;wa(510,h|0,i|0);v=B;B=0;if(v&1){v=Rb()|0;z=Q;A=v;C=1}else{B=0;ua(163,t|0,f|0,g|0,68,h|0);v=B;B=0;if(v&1)D=1;else{B=0;eb(503,t|0,1240,229);B=0;D=0}v=Rb()|0;w=Q;Yua(h);z=w;A=v;C=D}Yua(g);Yua(f);if(C){x=z;y=A}else{E=z;F=A;break a}}else{v=Rb()|0;x=Q;y=v}while(0);zb(t|0);E=x;F=y}else G=16;while(0);if((G|0)==16){q=Rb()|0;E=Q;F=q}k[e>>2]=27468;k[a>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(a);Qb(F|0)}while(0);l=o;m=p;vva(a);Qb(m|0)}function eD(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121304,19);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,75,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function fD(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121296,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,74,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function gD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115046,19);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,76,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function hD(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77521,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,38,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0);return 0}function iD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121282,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,39,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0);return 0}function jD(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121179,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,40,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function kD(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121166,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,42,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function lD(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121153,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,41,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function mD(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77921,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,43,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function nD(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77898,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,44,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function oD(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77879,18);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,45,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function pD(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115180,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,46,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function qD(a){a=a|0;return}function rD(a){a=a|0;Sqa(a);return}function sD(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,76054,90);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115180,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,65,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function tD(a){a=a|0;k[a>>2]=32164;k[a>>2]=32356;k[a+12>>2]=0;return}function uD(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;k[a>>2]=32164;B=0;e=B;B=0;if(e&1){e=Rb()|0;f=e;g=Q;Qb(f|0)}k[a>>2]=32356;k[a+4>>2]=b;k[a+8>>2]=d;B=0;b=Xa(250,a|0,d|0)|0;d=B;B=0;if(!(d&1)){if((b|0)<=0){k[a+12>>2]=0;return}B=0;d=ya(422,(b>>>0>536870911?-1:b<<3)|0)|0;e=B;B=0;if(!(e&1)){k[a+12>>2]=d;a=0;do{p[d+(a<<3)>>3]=+p[c+(a<<3)>>3];a=a+1|0}while((a|0)!=(b|0));return}}b=Rb()|0;f=b;g=Q;Qb(f|0)}function vD(a){a=a|0;var b=0;k[a>>2]=32356;b=a+12|0;a=k[b>>2]|0;if(!a){k[b>>2]=0;return}Tqa(a);k[b>>2]=0;return}function wD(a){a=a|0;var b=0,c=0;k[a>>2]=32356;b=a+12|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;Sqa(a);return}function xD(a){a=a|0;Ec[k[(k[a>>2]|0)+12>>2]&1023](a);return}function yD(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){q=Rb()|0;s=Q;t=q}else{k[l>>2]=27560;q=d+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(c);Yua(q);Ava(l);s=v;t=u;break}Yua(c);k[d+(k[(k[d>>2]|0)+-12>>2]|0)+12>>2]=15;B=0;u=Ia(40,d|0,76156,13)|0;v=B;B=0;do if((((!(v&1)?(k[u+(k[(k[u>>2]|0)+-12>>2]|0)+12>>2]=25,w=u+(k[(k[u>>2]|0)+-12>>2]|0)+4|0,k[w>>2]=k[w>>2]&-177|32,B=0,w=ya(427,k[a+4>>2]|0)|0,x=B,B=0,!(x&1)):0)?(x=Lta(w)|0,B=0,y=Ia(40,u|0,w|0,x|0)|0,x=B,B=0,!(x&1)):0)?(B=0,Ia(40,y|0,120962,2)|0,y=B,B=0,!(y&1)):0)?(B=0,wa(510,e|0,l|0),y=B,B=0,!(y&1)):0){B=0;ya(424,e|0)|0;y=B;B=0;if(y&1){y=Rb()|0;x=Q;Yua(e);z=x;A=y;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(q);Ava(l);vva(j);y=a+8|0;a:do if((qw(a,k[y>>2]|0)|0)>0){x=f+56|0;w=f+4|0;C=f+56|0;D=f+128|0;E=f+132|0;F=f+36|0;G=f+52|0;H=a+12|0;I=0;while(1){k[f>>2]=27524;k[x>>2]=27544;B=0;wa(508,C|0,w|0);J=B;B=0;if(J&1){K=33;break}k[D>>2]=0;k[E>>2]=-1;k[f>>2]=27468;k[x>>2]=27488;B=0;va(448,w|0);J=B;B=0;if(J&1){K=34;break}k[w>>2]=27560;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;k[G>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,w|0,c|0);J=B;B=0;if(J&1){K=32;break}Yua(c);B=0;J=Ia(40,f|0,149175,1)|0;L=B;B=0;if(L&1){K=42;break}B=0;Sa(1,J|0,+(+p[(k[H>>2]|0)+(I<<3)>>3]))|0;J=B;B=0;if(J&1){K=42;break}B=0;wa(510,g|0,w|0);J=B;B=0;if(J&1){K=42;break}B=0;ya(424,g|0)|0;J=B;B=0;if(J&1){K=43;break}Yua(g);k[f>>2]=27468;k[x>>2]=27488;k[w>>2]=27560;Yua(F);Ava(w);vva(x);I=I+1|0;if((I|0)>=(qw(a,k[y>>2]|0)|0))break a}if((K|0)==32){I=Rb()|0;H=Q;Yua(c);Yua(F);Ava(w);M=H;N=I;K=35}else if((K|0)==33){I=Rb()|0;O=Q;P=I;vva(x);Qb(P|0)}else if((K|0)==34){I=Rb()|0;M=Q;N=I;K=35}else if((K|0)==42){I=Rb()|0;R=Q;S=I;K=44}else if((K|0)==43){I=Rb()|0;H=Q;Yua(g);R=H;S=I;K=44}if((K|0)==35){O=M;P=N;vva(x);Qb(P|0)}else if((K|0)==44){k[f>>2]=27468;k[x>>2]=27488;k[w>>2]=27560;Yua(F);Ava(w);vva(x);T=R;U=S;Qb(U|0)}}while(0);I=h+56|0;H=h+4|0;k[h>>2]=27524;k[I>>2]=27544;B=0;wa(508,h+56|0,H|0);G=B;B=0;if(G&1){G=Rb()|0;V=Q;W=G;vva(I);Qb(W|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[I>>2]=27488;B=0;va(448,H|0);G=B;B=0;do if(G&1){E=Rb()|0;X=Q;Y=E}else{k[H>>2]=27560;E=h+36|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,H|0,c|0);D=B;B=0;if(D&1){D=Rb()|0;C=Q;Yua(c);Yua(E);Ava(H);X=C;Y=D;break}Yua(c);B=0;D=Ia(40,h|0,120965,3)|0;C=B;B=0;do if((!(C&1)?(B=0,J=ya(427,k[y>>2]|0)|0,L=B,B=0,!(L&1)):0)?(L=Lta(J)|0,B=0,Z=Ia(40,D|0,J|0,L|0)|0,L=B,B=0,!(L&1)):0){B=0;Ia(40,Z|0,145593,2)|0;Z=B;B=0;if(Z&1){K=51;break}B=0;wa(510,i|0,H|0);Z=B;B=0;if(Z&1){K=51;break}B=0;ya(424,i|0)|0;Z=B;B=0;if(Z&1){Z=Rb()|0;L=Q;Yua(i);_=L;$=Z;break}else{Yua(i);k[h>>2]=27468;k[I>>2]=27488;k[H>>2]=27560;Yua(E);Ava(H);vva(I);r=b;return}}else K=51;while(0);if((K|0)==51){D=Rb()|0;_=Q;$=D}k[h>>2]=27468;k[I>>2]=27488;k[H>>2]=27560;Yua(E);Ava(H);vva(I);T=_;U=$;Qb(U|0)}while(0);V=X;W=Y;vva(I);Qb(W|0)}else K=26;while(0);if((K|0)==26){u=Rb()|0;z=Q;A=u}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(q);Ava(l);vva(j);T=z;U=A;Qb(U|0)}while(0);n=s;o=t;vva(j);Qb(o|0)}function zD(a){a=a|0;return -1}function AD(a){a=a|0;return 622}function BD(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Qqa(16)|0;c=k[a+4>>2]|0;d=k[a+12>>2]|0;e=k[a+8>>2]|0;k[b>>2]=32164;B=0;a=B;B=0;if(a&1){a=Rb()|0;f=a;g=Q;Sqa(b);Qb(f|0)}k[b>>2]=32356;k[b+4>>2]=c;k[b+8>>2]=e;B=0;c=Xa(250,b|0,e|0)|0;e=B;B=0;if(!(e&1)){if((c|0)<=0){k[b+12>>2]=0;return b|0}B=0;e=ya(422,(c>>>0>536870911?-1:c<<3)|0)|0;a=B;B=0;if(!(a&1)){k[b+12>>2]=e;a=0;do{p[e+(a<<3)>>3]=+p[d+(a<<3)>>3];a=a+1|0}while((a|0)!=(c|0));return b|0}}c=Rb()|0;f=c;g=Q;Sqa(b);Qb(f|0);return 0}function CD(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;e=r;r=r+368|0;f=e+344|0;g=e+208|0;h=e+196|0;j=e+184|0;m=e+36|0;n=e+48|0;o=e+24|0;p=e+12|0;q=e;s=(d|0)==0;a:do if(s){t=k[b>>2]|0;i[t>>0]=110;i[t+1>>0]=2;i[t+2>>0]=0;i[t+3>>0]=0;t=(k[b>>2]|0)+4|0;k[b>>2]=t;u=a+4|0;v=l[u>>0]|l[u+1>>0]<<8|l[u+2>>0]<<16|l[u+3>>0]<<24;i[t>>0]=v;i[t+1>>0]=v>>8;i[t+2>>0]=v>>16;i[t+3>>0]=v>>24;v=(k[b>>2]|0)+4|0;k[b>>2]=v;t=a+8|0;u=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[v>>0]=u;i[v+1>>0]=u>>8;i[v+2>>0]=u>>16;i[v+3>>0]=u>>24;k[b>>2]=(k[b>>2]|0)+4;w=t}else switch(d|0){case 2:{k[c>>2]=(k[c>>2]|0)+12;w=a+8|0;break a;break}case 1:{t=(k[b>>2]|0)+4|0;k[b>>2]=t;u=a+4|0;v=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[u>>0]=v;i[u+1>>0]=v>>8;i[u+2>>0]=v>>16;i[u+3>>0]=v>>24;v=(k[b>>2]|0)+4|0;k[b>>2]=v;u=a+8|0;t=l[v>>0]|l[v+1>>0]<<8|l[v+2>>0]<<16|l[v+3>>0]<<24;i[u>>0]=t;i[u+1>>0]=t>>8;i[u+2>>0]=t>>16;i[u+3>>0]=t>>24;k[b>>2]=(k[b>>2]|0)+4;w=u;break a;break}default:{u=g+56|0;t=g+4|0;k[g>>2]=27524;k[u>>2]=27544;B=0;wa(508,g+56|0,t|0);v=B;B=0;if(v&1){v=Rb()|0;x=Q;y=v;vva(u);Qb(y|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[u>>2]=27488;B=0;va(448,t|0);v=B;B=0;do if(v&1){z=Rb()|0;A=Q;C=z}else{k[t>>2]=27560;z=g+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,t|0,f|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(f);Yua(z);Ava(t);A=E;C=D;break}Yua(f);B=0;D=Ia(40,g|0,143951,43)|0;E=B;B=0;b:do if(!(E&1)?(B=0,Xa(239,D|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,h|0,76170,75);G=B;B=0;do if(!(G&1)){B=0;eb(502,j|0,149525,8);H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(h);J=I;K=H;break}B=0;wa(510,m|0,t|0);H=B;B=0;if(H&1){H=Rb()|0;L=Q;M=H;N=1}else{B=0;ua(163,F|0,h|0,j|0,70,m|0);H=B;B=0;if(H&1)O=1;else{B=0;eb(503,F|0,1240,229);B=0;O=0}H=Rb()|0;I=Q;Yua(m);L=I;M=H;N=O}Yua(j);Yua(h);if(N){J=L;K=M}else{P=L;R=M;break b}}else{H=Rb()|0;J=Q;K=H}while(0);zb(F|0);P=J;R=K}else S=18;while(0);if((S|0)==18){D=Rb()|0;P=Q;R=D}k[g>>2]=27468;k[u>>2]=27488;k[t>>2]=27560;Yua(z);Ava(t);vva(u);T=R;U=P;Qb(T|0)}while(0);x=A;y=C;vva(u);Qb(y|0)}}while(0);y=qw(a,k[w>>2]|0)|0;w=a+12|0;if((y|0)<=0){k[w>>2]=0;r=e;return}a=(k[w>>2]|0)==0;if(s){i[k[b>>2]>>0]=a&1;s=(k[b>>2]|0)+1|0;k[b>>2]=s;if(a){r=e;return}C=y<<3;TEa(s|0,k[w>>2]|0,C|0)|0;k[b>>2]=(k[b>>2]|0)+C;r=e;return}switch(d|0){case 2:{d=(k[c>>2]|0)+1|0;k[c>>2]=d;if(a){r=e;return}k[c>>2]=d+(y<<3);r=e;return}case 1:{d=k[b>>2]|0;c=i[d>>0]|0;k[b>>2]=d+1;if(c&1){r=e;return}c=Rqa(y>>>0>536870911?-1:y<<3)|0;k[w>>2]=c;w=k[b>>2]|0;d=y<<3;TEa(c|0,w|0,d|0)|0;k[b>>2]=w+d;r=e;return}default:{e=n+56|0;d=n+4|0;k[n>>2]=27524;k[e>>2]=27544;B=0;wa(508,n+56|0,d|0);w=B;B=0;if(w&1){w=Rb()|0;V=Q;W=w;vva(e);Qb(W|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[e>>2]=27488;B=0;va(448,d|0);w=B;B=0;do if(w&1){b=Rb()|0;X=Q;Y=b}else{k[d>>2]=27560;b=n+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,d|0,f|0);c=B;B=0;if(c&1){c=Rb()|0;y=Q;Yua(f);Yua(b);Ava(d);X=y;Y=c;break}Yua(f);B=0;c=Ia(40,n|0,143951,43)|0;y=B;B=0;c:do if(!(y&1)?(B=0,Xa(239,c|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,o|0,76170,75);C=B;B=0;do if(!(C&1)){B=0;eb(502,p|0,149525,8);s=B;B=0;if(s&1){s=Rb()|0;A=Q;Yua(o);Z=s;_=A;break}B=0;wa(510,q|0,d|0);A=B;B=0;if(A&1){A=Rb()|0;$=1;aa=Q;ba=A}else{B=0;ua(163,a|0,o|0,p|0,77,q|0);A=B;B=0;if(A&1)ca=1;else{B=0;eb(503,a|0,1240,229);B=0;ca=0}A=Rb()|0;s=Q;Yua(q);$=ca;aa=s;ba=A}Yua(p);Yua(o);if($){Z=ba;_=aa}else{da=ba;ea=aa;break c}}else{A=Rb()|0;Z=A;_=Q}while(0);zb(a|0);da=Z;ea=_}else S=49;while(0);if((S|0)==49){c=Rb()|0;da=c;ea=Q}k[n>>2]=27468;k[e>>2]=27488;k[d>>2]=27560;Yua(b);Ava(d);vva(e);T=da;U=ea;Qb(T|0)}while(0);V=X;W=Y;vva(e);Qb(W|0)}}}function DD(a){a=a|0;return k[a+4>>2]|0}function ED(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;d=Qqa(16)|0;c=k[a+4>>2]|0;b=k[a+12>>2]|0;e=k[a+8>>2]|0;k[d>>2]=32164;B=0;a=B;B=0;if(a&1){a=Rb()|0;f=a;g=Q;Sqa(d);Qb(f|0)}k[d>>2]=32356;k[d+4>>2]=c;k[d+8>>2]=e;B=0;c=Xa(250,d|0,e|0)|0;e=B;B=0;if(!(e&1)){if((c|0)<=0){k[d+12>>2]=0;return d|0}B=0;e=ya(422,(c>>>0>536870911?-1:c<<3)|0)|0;a=B;B=0;if(!(a&1)){k[d+12>>2]=e;a=0;do{p[e+(a<<3)>>3]=+p[b+(a<<3)>>3];a=a+1|0}while((a|0)!=(c|0));return d|0}}c=Rb()|0;f=c;g=Q;Sqa(d);Qb(f|0);return 0}function FD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;d=r;r=r+16|0;e=d;if((k[a+8>>2]|0)==736){f=Qqa(16)|0;B=0;ib(292,f|0,k[a+4>>2]|0,k[a+12>>2]|0,736);g=B;B=0;if(!(g&1)){h=f;r=d;return h|0}g=Rb()|0;i=Q;Sqa(f);j=i;l=g;Qb(l|0)}g=k[a+12>>2]|0;p[e>>3]=+p[g+(b<<3)>>3];p[e+8>>3]=+p[g+(c<<3)>>3];c=Qqa(16)|0;B=0;ib(292,c|0,k[a+4>>2]|0,e|0,738);e=B;B=0;if(e&1){e=Rb()|0;a=Q;Sqa(c);j=a;l=e;Qb(l|0)}else{h=c;r=d;return h|0}return 0}function GD(a){a=a|0;return ((k[a+8>>2]|0)==736?736:738)|0}function HD(a){a=a|0;return qw(a,k[a+8>>2]|0)|0}function ID(a){a=a|0;return 1}function JD(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;c=qw(a,k[a+8>>2]|0)|0;if((c|0)<=0)return;e=k[a+12>>2]|0;a=ma(c,d)|0;d=0;do{p[b+(d+a<<3)>>3]=+p[e+(d<<3)>>3];d=d+1|0}while((d|0)!=(c|0));return}function KD(a,b,c){a=a|0;b=b|0;c=c|0;sw(a,b,k[a+12>>2]|0,c,k[a+8>>2]|0);return}function LD(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;pw(a,b,k[a+12>>2]|0,c,d,k[a+8>>2]|0);return}function MD(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function ND(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0.0,g=0,h=0.0,i=0.0;c=qw(a,k[a+8>>2]|0)|0;d=+(c|0);if((c|0)<=0){e=0.0;f=e/d;p[b>>3]=f;return}g=k[a+12>>2]|0;a=0;h=0.0;while(1){i=h+ +p[g+(a<<3)>>3];a=a+1|0;if((a|0)==(c|0)){e=i;break}else h=i}f=e/d;p[b>>3]=f;return}function OD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0.0,i=0,j=0,l=0,m=0,n=0,o=0,q=0;d=r;r=r+32|0;e=d;f=a+8|0;g=qw(a,k[f>>2]|0)|0;h=+(g|0);i=b+8|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;j=Qqa(64)|0;B=0;va(491,j|0);l=B;B=0;if(l&1){l=Rb()|0;Sqa(j);Qb(l|0)}if((g|0)<=0){m=k[j>>2]|0;n=m+4|0;o=k[n>>2]|0;Ec[o&1023](j);r=d;return}l=e+8|0;q=0;do{nd[k[(k[j>>2]|0)+32>>2]&1023](j,k[f>>2]|0,q);rd[k[(k[a>>2]|0)+60>>2]&511](a,e,c,j);p[b>>3]=+p[b>>3]+ +p[e>>3]/h;p[i>>3]=+p[i>>3]+ +p[l>>3]/h;q=q+1|0}while((q|0)!=(g|0));m=k[j>>2]|0;n=m+4|0;o=k[n>>2]|0;Ec[o&1023](j);r=d;return}function PD(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=Rqa(8)|0;f=Rqa(8)|0;Fc[k[(k[a>>2]|0)+64>>2]&1023](a,e);p[f>>3]=0.0;k[b>>2]=e;k[c>>2]=f;k[d>>2]=1;return}function QD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0;f=Rqa(8)|0;g=Rqa(8)|0;Fc[k[(k[a>>2]|0)+64>>2]&1023](a,f);p[g>>3]=e;k[b>>2]=f;k[c>>2]=g;k[d>>2]=1;return}function RD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0.0,g=0,h=0.0,i=0.0;c=qw(a,k[a+8>>2]|0)|0;d=k[a+12>>2]|0;e=+p[d>>3];f=e*e;if((c|0)>1){g=1;h=f}else{i=f;p[b>>3]=i;return}while(1){f=+p[d+(g<<3)>>3];e=f*f;f=e<h?e:h;g=g+1|0;if((g|0)==(c|0)){i=f;break}else h=f}p[b>>3]=i;return}function SD(a,b){a=a|0;b=+b;var c=0,d=0,e=0;c=qw(a,k[a+8>>2]|0)|0;if((c|0)<=0)return;d=k[a+12>>2]|0;a=0;do{e=d+(a<<3)|0;if(+p[e>>3]<b)p[e>>3]=b;a=a+1|0}while((a|0)!=(c|0));return}function TD(a){a=a|0;var b=0,c=0.0,d=0,e=0.0,f=0.0,g=0.0;b=qw(a,k[a+8>>2]|0)|0;if((b|0)<=0){c=0.0;return +c}d=k[a+12>>2]|0;a=0;e=0.0;while(1){f=+$(+(+p[d+(a<<3)>>3]));g=f>e?f:e;a=a+1|0;if((a|0)==(b|0)){c=g;break}else e=g}return +c}function UD(a){a=a|0;var b=0,c=0,d=0.0,e=0,f=0.0,g=0.0,h=0.0;b=qw(a,k[a+8>>2]|0)|0;c=k[a+12>>2]|0;d=+p[c>>3];if((b|0)>1){e=1;f=d}else{g=d;return +g}while(1){d=+p[c+(e<<3)>>3];h=d>f?d:f;e=e+1|0;if((e|0)==(b|0)){g=h;break}else f=h}return +g}function VD(a){a=a|0;var b=0,c=0,d=0.0,e=0,f=0.0,g=0.0,h=0.0;b=qw(a,k[a+8>>2]|0)|0;c=k[a+12>>2]|0;d=+$(+(+p[c>>3]));if((b|0)>1){e=1;f=d}else{g=d;return +g}while(1){d=+$(+(+p[c+(e<<3)>>3]));h=d>f?d:f;e=e+1|0;if((e|0)==(b|0)){g=h;break}else f=h}return +g}function WD(a){a=a|0;var b=0,c=0,d=0.0,e=0,f=0.0,g=0.0,h=0.0;b=qw(a,k[a+8>>2]|0)|0;c=k[a+12>>2]|0;d=+p[c>>3];if((b|0)>1){e=1;f=d}else{g=d;return +g}while(1){d=+p[c+(e<<3)>>3];h=d<f?d:f;e=e+1|0;if((e|0)==(b|0)){g=h;break}else f=h}return +g}function XD(a){a=a|0;var b=0,c=0,d=0.0,e=0,f=0.0,g=0.0,h=0.0;b=qw(a,k[a+8>>2]|0)|0;c=k[a+12>>2]|0;d=+$(+(+p[c>>3]));if((b|0)>1){e=1;f=d}else{g=d;return +g}while(1){d=+$(+(+p[c+(e<<3)>>3]));h=d<f?d:f;e=e+1|0;if((e|0)==(b|0)){g=h;break}else f=h}return +g}function YD(a,b){a=a|0;b=+b;var c=0,d=0,e=0;c=qw(a,k[a+8>>2]|0)|0;if((c|0)<=0)return;d=k[a+12>>2]|0;a=0;do{e=d+(a<<3)|0;p[e>>3]=+p[e>>3]*b;a=a+1|0}while((a|0)!=(c|0));return}function ZD(a,b){a=a|0;b=+b;var c=0,d=0;c=qw(a,k[a+8>>2]|0)|0;if((c|0)<=0)return;d=k[a+12>>2]|0;a=0;do{p[d+(a<<3)>>3]=b;a=a+1|0}while((a|0)!=(c|0));return}function _D(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;d=r;r=r+368|0;e=d+344|0;f=d+208|0;g=d+196|0;h=d+184|0;i=d+36|0;j=d+48|0;l=d+24|0;m=d+12|0;n=d;o=a+8|0;q=qw(a,k[o>>2]|0)|0;if((Hc[k[(k[b>>2]|0)+20>>2]&511](b)|0)!=622){s=f+56|0;t=f+4|0;k[f>>2]=27524;k[s>>2]=27544;B=0;wa(508,f+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=f+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,t|0,e|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(e);Yua(x);Ava(t);y=C;z=A;break}Yua(e);B=0;A=Ia(40,f|0,121046,50)|0;C=B;B=0;a:do if((((!(C&1)?(B=0,D=ya(k[(k[b>>2]|0)+20>>2]|0,b|0)|0,E=B,B=0,!(E&1)):0)?(B=0,E=ya(427,D|0)|0,D=B,B=0,!(D&1)):0)?(D=Lta(E)|0,B=0,F=Ia(40,A|0,E|0,D|0)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,F|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,g|0,76170,75);D=B;B=0;do if(!(D&1)){B=0;eb(502,h|0,121097,4);E=B;B=0;if(E&1){E=Rb()|0;G=Q;Yua(g);H=E;I=G;break}B=0;wa(510,i|0,t|0);G=B;B=0;if(G&1){G=Rb()|0;J=Q;K=G;L=1}else{B=0;ua(163,F|0,g|0,h|0,346,i|0);G=B;B=0;if(G&1)M=1;else{B=0;eb(503,F|0,1240,229);B=0;M=0}G=Rb()|0;E=Q;Yua(i);J=E;K=G;L=M}Yua(h);Yua(g);if(L){H=K;I=J}else{N=K;O=J;break a}}else{G=Rb()|0;H=G;I=Q}while(0);zb(F|0);N=H;O=I}else P=20;while(0);if((P|0)==20){A=Rb()|0;N=A;O=Q}k[f>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);R=O;S=N;Qb(S|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}if((k[b+8>>2]|0)==(k[o>>2]|0)){if((q|0)<=0){r=d;return}o=k[a+12>>2]|0;a=k[b+12>>2]|0;w=0;do{s=o+(w<<3)|0;p[s>>3]=+p[s>>3]+ +p[a+(w<<3)>>3]*c;w=w+1|0}while((w|0)!=(q|0));r=d;return}d=j+56|0;q=j+4|0;k[j>>2]=27524;k[d>>2]=27544;B=0;wa(508,j+56|0,q|0);w=B;B=0;if(w&1){w=Rb()|0;T=Q;U=w;vva(d);Qb(U|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[d>>2]=27488;B=0;va(448,q|0);w=B;B=0;do if(w&1){a=Rb()|0;V=Q;W=a}else{k[q>>2]=27560;a=j+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[j+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,q|0,e|0);o=B;B=0;if(o&1){o=Rb()|0;s=Q;Yua(e);Yua(a);Ava(q);V=s;W=o;break}Yua(e);B=0;o=Ia(40,j|0,121046,50)|0;s=B;B=0;b:do if((((!(s&1)?(B=0,z=ya(k[(k[b>>2]|0)+20>>2]|0,b|0)|0,y=B,B=0,!(y&1)):0)?(B=0,y=ya(427,z|0)|0,z=B,B=0,!(z&1)):0)?(z=Lta(y)|0,B=0,v=Ia(40,o|0,y|0,z|0)|0,z=B,B=0,!(z&1)):0)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,l|0,76170,75);z=B;B=0;do if(!(z&1)){B=0;eb(502,m|0,121097,4);y=B;B=0;if(y&1){y=Rb()|0;N=Q;Yua(l);X=y;Y=N;break}B=0;wa(510,n|0,q|0);N=B;B=0;if(N&1){N=Rb()|0;Z=1;_=Q;$=N}else{B=0;ua(163,v|0,l|0,m|0,348,n|0);N=B;B=0;if(N&1)aa=1;else{B=0;eb(503,v|0,1240,229);B=0;aa=0}N=Rb()|0;y=Q;Yua(n);Z=aa;_=y;$=N}Yua(m);Yua(l);if(Z){X=$;Y=_}else{ba=_;ca=$;break b}}else{N=Rb()|0;X=N;Y=Q}while(0);zb(v|0);ba=Y;ca=X}else P=49;while(0);if((P|0)==49){o=Rb()|0;ba=Q;ca=o}k[j>>2]=27468;k[d>>2]=27488;k[q>>2]=27560;Yua(a);Ava(q);vva(d);R=ba;S=ca;Qb(S|0)}while(0);T=V;U=W;vva(d);Qb(U|0)}function $D(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0.0,f=0,g=0,h=0,i=0;d=qw(a,k[a+8>>2]|0)|0;e=+$(+b);p[t>>3]=e;f=k[t+4>>2]|0;g=(d|0)>0;if((f>>>0<2146435072|(f|0)==2146435072&(k[t>>2]|0)>>>0<1)&g){f=k[a+12>>2]|0;h=0;do{i=f+(h<<3)|0;if(+p[i>>3]<b)p[i>>3]=b;h=h+1|0}while((h|0)!=(d|0))}b=+$(+c);p[t>>3]=b;h=k[t+4>>2]|0;if(!((h>>>0<2146435072|(h|0)==2146435072&(k[t>>2]|0)>>>0<1)&g))return;g=k[a+12>>2]|0;a=0;do{h=g+(a<<3)|0;if(+p[h>>3]>c)p[h>>3]=c;a=a+1|0}while((a|0)!=(d|0));return}function aE(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!(k[b>>2]|0))return;d=k[k[b+4>>2]>>2]|0;Dc[k[(k[d>>2]|0)+16>>2]&255](d,3,c,k[a+12>>2]|0,0);return}function bE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0.0,U=0.0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;c=r;r=r+368|0;d=c+344|0;e=c+208|0;f=c+196|0;g=c+184|0;h=c+36|0;i=c+48|0;j=c+24|0;l=c+12|0;m=c;n=a+8|0;o=qw(a,k[n>>2]|0)|0;q=Rqa(o>>>0>536870911?-1:o<<3)|0;if((Hc[k[(k[b>>2]|0)+20>>2]&511](b)|0)!=622){s=e+56|0;t=e+4|0;k[e>>2]=27524;k[s>>2]=27544;B=0;wa(508,e+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=e+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,t|0,d|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(d);Yua(x);Ava(t);y=C;z=A;break}Yua(d);B=0;A=Ia(40,e|0,121102,50)|0;C=B;B=0;a:do if((((!(C&1)?(B=0,D=ya(k[(k[b>>2]|0)+20>>2]|0,b|0)|0,E=B,B=0,!(E&1)):0)?(B=0,E=ya(427,D|0)|0,D=B,B=0,!(D&1)):0)?(D=Lta(E)|0,B=0,F=Ia(40,A|0,E|0,D|0)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,F|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,f|0,76170,75);D=B;B=0;do if(!(D&1)){B=0;eb(502,g|0,121153,12);E=B;B=0;if(E&1){E=Rb()|0;G=Q;Yua(f);H=E;I=G;break}B=0;wa(510,h|0,t|0);G=B;B=0;if(G&1){G=Rb()|0;J=Q;K=G;L=1}else{B=0;ua(163,F|0,f|0,g|0,381,h|0);G=B;B=0;if(G&1)M=1;else{B=0;eb(503,F|0,1240,229);B=0;M=0}G=Rb()|0;E=Q;Yua(h);J=E;K=G;L=M}Yua(g);Yua(f);if(L){H=K;I=J}else{N=K;O=J;break a}}else{G=Rb()|0;H=G;I=Q}while(0);zb(F|0);N=H;O=I}else P=20;while(0);if((P|0)==20){A=Rb()|0;N=A;O=Q}k[e>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);R=O;S=N;Qb(S|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}w=b+8|0;s=k[w>>2]|0;if((s|0)==(k[n>>2]|0)){if((o|0)>0){n=k[a+12>>2]|0;z=k[b+12>>2]|0;b=0;do{T=+p[n+(b<<3)>>3];U=+p[z+(b<<3)>>3];p[q+(b<<3)>>3]=T>U?U:T;b=b+1|0}while((b|0)!=(o|0))}o=Qqa(16)|0;b=k[a+4>>2]|0;k[o>>2]=32164;B=0;a=B;B=0;if(a&1){a=Rb()|0;V=a;W=Q}else{k[o>>2]=32356;k[o+4>>2]=b;k[o+8>>2]=s;B=0;b=Xa(250,o|0,s|0)|0;s=B;B=0;if(!(s&1)){if((b|0)<=0){k[o+12>>2]=0;Tqa(q);r=c;return o|0}B=0;s=ya(422,(b>>>0>536870911?-1:b<<3)|0)|0;a=B;B=0;if(!(a&1)){k[o+12>>2]=s;TEa(s|0,q|0,b<<3|0)|0;Tqa(q);r=c;return o|0}}c=Rb()|0;V=c;W=Q}Sqa(o);R=W;S=V;Qb(S|0)}V=i+56|0;W=i+4|0;k[i>>2]=27524;k[V>>2]=27544;B=0;wa(508,i+56|0,W|0);o=B;B=0;if(o&1){o=Rb()|0;X=Q;Y=o;vva(V);Qb(Y|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[V>>2]=27488;B=0;va(448,W|0);o=B;B=0;do if(o&1){c=Rb()|0;Z=Q;_=c}else{k[W>>2]=27560;c=i+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,W|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;b=Q;Yua(d);Yua(c);Ava(W);Z=b;_=q;break}Yua(d);B=0;q=Ia(40,i|0,121102,50)|0;b=B;B=0;b:do if(((!(b&1)?(B=0,s=ya(427,k[w>>2]|0)|0,a=B,B=0,!(a&1)):0)?(a=Lta(s)|0,B=0,z=Ia(40,q|0,s|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(239,z|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,j|0,76170,75);a=B;B=0;do if(!(a&1)){B=0;eb(502,l|0,121153,12);s=B;B=0;if(s&1){s=Rb()|0;n=Q;Yua(j);$=s;aa=n;break}B=0;wa(510,m|0,W|0);n=B;B=0;if(n&1){n=Rb()|0;ba=1;ca=Q;da=n}else{B=0;ua(163,z|0,j|0,l|0,383,m|0);n=B;B=0;if(n&1)ea=1;else{B=0;eb(503,z|0,1240,229);B=0;ea=0}n=Rb()|0;s=Q;Yua(m);ba=ea;ca=s;da=n}Yua(l);Yua(j);if(ba){$=da;aa=ca}else{fa=ca;ga=da;break b}}else{n=Rb()|0;$=n;aa=Q}while(0);zb(z|0);fa=aa;ga=$}else P=48;while(0);if((P|0)==48){q=Rb()|0;fa=Q;ga=q}k[i>>2]=27468;k[V>>2]=27488;k[W>>2]=27560;Yua(c);Ava(W);vva(V);R=fa;S=ga;Qb(S|0)}while(0);X=Z;Y=_;vva(V);Qb(Y|0);return 0}function cE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0.0,U=0.0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;c=r;r=r+368|0;d=c+344|0;e=c+208|0;f=c+196|0;g=c+184|0;h=c+36|0;i=c+48|0;j=c+24|0;l=c+12|0;m=c;n=a+8|0;o=qw(a,k[n>>2]|0)|0;q=Rqa(o>>>0>536870911?-1:o<<3)|0;if((Hc[k[(k[b>>2]|0)+20>>2]&511](b)|0)!=622){s=e+56|0;t=e+4|0;k[e>>2]=27524;k[s>>2]=27544;B=0;wa(508,e+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=e+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,t|0,d|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(d);Yua(x);Ava(t);y=C;z=A;break}Yua(d);B=0;A=Ia(40,e|0,121102,50)|0;C=B;B=0;a:do if((((!(C&1)?(B=0,D=ya(k[(k[b>>2]|0)+20>>2]|0,b|0)|0,E=B,B=0,!(E&1)):0)?(B=0,E=ya(427,D|0)|0,D=B,B=0,!(D&1)):0)?(D=Lta(E)|0,B=0,F=Ia(40,A|0,E|0,D|0)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,F|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,f|0,76170,75);D=B;B=0;do if(!(D&1)){B=0;eb(502,g|0,121166,12);E=B;B=0;if(E&1){E=Rb()|0;G=Q;Yua(f);H=E;I=G;break}B=0;wa(510,h|0,t|0);G=B;B=0;if(G&1){G=Rb()|0;J=Q;K=G;L=1}else{B=0;ua(163,F|0,f|0,g|0,412,h|0);G=B;B=0;if(G&1)M=1;else{B=0;eb(503,F|0,1240,229);B=0;M=0}G=Rb()|0;E=Q;Yua(h);J=E;K=G;L=M}Yua(g);Yua(f);if(L){H=K;I=J}else{N=K;O=J;break a}}else{G=Rb()|0;H=G;I=Q}while(0);zb(F|0);N=H;O=I}else P=20;while(0);if((P|0)==20){A=Rb()|0;N=A;O=Q}k[e>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);R=O;S=N;Qb(S|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}w=b+8|0;s=k[w>>2]|0;if((s|0)==(k[n>>2]|0)){if((o|0)>0){n=k[a+12>>2]|0;z=k[b+12>>2]|0;b=0;do{T=+p[n+(b<<3)>>3];U=+p[z+(b<<3)>>3];p[q+(b<<3)>>3]=T<U?U:T;b=b+1|0}while((b|0)!=(o|0))}o=Qqa(16)|0;b=k[a+4>>2]|0;k[o>>2]=32164;B=0;a=B;B=0;if(a&1){a=Rb()|0;V=a;W=Q}else{k[o>>2]=32356;k[o+4>>2]=b;k[o+8>>2]=s;B=0;b=Xa(250,o|0,s|0)|0;s=B;B=0;if(!(s&1)){if((b|0)<=0){k[o+12>>2]=0;Tqa(q);r=c;return o|0}B=0;s=ya(422,(b>>>0>536870911?-1:b<<3)|0)|0;a=B;B=0;if(!(a&1)){k[o+12>>2]=s;TEa(s|0,q|0,b<<3|0)|0;Tqa(q);r=c;return o|0}}c=Rb()|0;V=c;W=Q}Sqa(o);R=W;S=V;Qb(S|0)}V=i+56|0;W=i+4|0;k[i>>2]=27524;k[V>>2]=27544;B=0;wa(508,i+56|0,W|0);o=B;B=0;if(o&1){o=Rb()|0;X=Q;Y=o;vva(V);Qb(Y|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[V>>2]=27488;B=0;va(448,W|0);o=B;B=0;do if(o&1){c=Rb()|0;Z=Q;_=c}else{k[W>>2]=27560;c=i+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,W|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;b=Q;Yua(d);Yua(c);Ava(W);Z=b;_=q;break}Yua(d);B=0;q=Ia(40,i|0,121102,50)|0;b=B;B=0;b:do if(((!(b&1)?(B=0,s=ya(427,k[w>>2]|0)|0,a=B,B=0,!(a&1)):0)?(a=Lta(s)|0,B=0,z=Ia(40,q|0,s|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(239,z|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,j|0,76170,75);a=B;B=0;do if(!(a&1)){B=0;eb(502,l|0,121166,12);s=B;B=0;if(s&1){s=Rb()|0;n=Q;Yua(j);$=s;aa=n;break}B=0;wa(510,m|0,W|0);n=B;B=0;if(n&1){n=Rb()|0;ba=1;ca=Q;da=n}else{B=0;ua(163,z|0,j|0,l|0,414,m|0);n=B;B=0;if(n&1)ea=1;else{B=0;eb(503,z|0,1240,229);B=0;ea=0}n=Rb()|0;s=Q;Yua(m);ba=ea;ca=s;da=n}Yua(l);Yua(j);if(ba){$=da;aa=ca}else{fa=ca;ga=da;break b}}else{n=Rb()|0;$=n;aa=Q}while(0);zb(z|0);fa=aa;ga=$}else P=48;while(0);if((P|0)==48){q=Rb()|0;fa=Q;ga=q}k[i>>2]=27468;k[V>>2]=27488;k[W>>2]=27560;Yua(c);Ava(W);vva(V);R=fa;S=ga;Qb(S|0)}while(0);X=Z;Y=_;vva(V);Qb(Y|0);return 0}function dE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0;c=r;r=r+368|0;d=c+344|0;e=c+208|0;f=c+196|0;g=c+184|0;h=c+36|0;i=c+48|0;j=c+24|0;l=c+12|0;m=c;n=a+8|0;o=qw(a,k[n>>2]|0)|0;if((Hc[k[(k[b>>2]|0)+20>>2]&511](b)|0)!=622){q=e+56|0;s=e+4|0;k[e>>2]=27524;k[q>>2]=27544;B=0;wa(508,e+56|0,s|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;v=t;vva(q);Qb(v|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[q>>2]=27488;B=0;va(448,s|0);t=B;B=0;do if(t&1){w=Rb()|0;x=Q;y=w}else{k[s>>2]=27560;w=e+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,s|0,d|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(d);Yua(w);Ava(s);x=A;y=z;break}Yua(d);B=0;z=Ia(40,e|0,121102,50)|0;A=B;B=0;a:do if((((!(A&1)?(B=0,C=ya(k[(k[b>>2]|0)+20>>2]|0,b|0)|0,D=B,B=0,!(D&1)):0)?(B=0,D=ya(427,C|0)|0,C=B,B=0,!(C&1)):0)?(C=Lta(D)|0,B=0,E=Ia(40,z|0,D|0,C|0)|0,C=B,B=0,!(C&1)):0)?(B=0,Xa(239,E|0,0)|0,E=B,B=0,!(E&1)):0){E=Ab(20)|0;B=0;eb(502,f|0,76170,75);C=B;B=0;do if(!(C&1)){B=0;eb(502,g|0,121179,15);D=B;B=0;if(D&1){D=Rb()|0;F=Q;Yua(f);G=D;H=F;break}B=0;wa(510,h|0,s|0);F=B;B=0;if(F&1){F=Rb()|0;I=Q;J=F;K=1}else{B=0;ua(163,E|0,f|0,g|0,441,h|0);F=B;B=0;if(F&1)L=1;else{B=0;eb(503,E|0,1240,229);B=0;L=0}F=Rb()|0;D=Q;Yua(h);I=D;J=F;K=L}Yua(g);Yua(f);if(K){G=J;H=I}else{M=J;N=I;break a}}else{F=Rb()|0;G=F;H=Q}while(0);zb(E|0);M=G;N=H}else O=20;while(0);if((O|0)==20){z=Rb()|0;M=z;N=Q}k[e>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);P=N;R=M;Qb(R|0)}while(0);u=x;v=y;vva(q);Qb(v|0)}v=b+8|0;q=k[v>>2]|0;if((q|0)==(k[n>>2]|0)){n=Rqa(o>>>0>536870911?-1:o<<3)|0;if((o|0)>0){y=k[a+12>>2]|0;x=k[b+12>>2]|0;b=0;do{p[n+(b<<3)>>3]=+p[y+(b<<3)>>3]/+p[x+(b<<3)>>3];b=b+1|0}while((b|0)!=(o|0))}o=Qqa(16)|0;b=k[a+4>>2]|0;k[o>>2]=32164;B=0;a=B;B=0;if(a&1){a=Rb()|0;S=a;T=Q}else{k[o>>2]=32356;k[o+4>>2]=b;k[o+8>>2]=q;B=0;b=Xa(250,o|0,q|0)|0;q=B;B=0;if(!(q&1)){if((b|0)<=0){k[o+12>>2]=0;Tqa(n);r=c;return o|0}B=0;q=ya(422,(b>>>0>536870911?-1:b<<3)|0)|0;a=B;B=0;if(!(a&1)){k[o+12>>2]=q;TEa(q|0,n|0,b<<3|0)|0;Tqa(n);r=c;return o|0}}c=Rb()|0;S=c;T=Q}Sqa(o);P=T;R=S;Qb(R|0)}S=i+56|0;T=i+4|0;k[i>>2]=27524;k[S>>2]=27544;B=0;wa(508,i+56|0,T|0);o=B;B=0;if(o&1){o=Rb()|0;U=Q;V=o;vva(S);Qb(V|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[S>>2]=27488;B=0;va(448,T|0);o=B;B=0;do if(o&1){c=Rb()|0;W=Q;X=c}else{k[T>>2]=27560;c=i+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,T|0,d|0);n=B;B=0;if(n&1){n=Rb()|0;b=Q;Yua(d);Yua(c);Ava(T);W=b;X=n;break}Yua(d);B=0;n=Ia(40,i|0,121102,50)|0;b=B;B=0;b:do if(((!(b&1)?(B=0,q=ya(427,k[v>>2]|0)|0,a=B,B=0,!(a&1)):0)?(a=Lta(q)|0,B=0,x=Ia(40,n|0,q|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(239,x|0,0)|0,x=B,B=0,!(x&1)):0){x=Ab(20)|0;B=0;eb(502,j|0,76170,75);a=B;B=0;do if(!(a&1)){B=0;eb(502,l|0,121179,15);q=B;B=0;if(q&1){q=Rb()|0;y=Q;Yua(j);Y=q;Z=y;break}B=0;wa(510,m|0,T|0);y=B;B=0;if(y&1){y=Rb()|0;_=1;$=Q;aa=y}else{B=0;ua(163,x|0,j|0,l|0,443,m|0);y=B;B=0;if(y&1)ba=1;else{B=0;eb(503,x|0,1240,229);B=0;ba=0}y=Rb()|0;q=Q;Yua(m);_=ba;$=q;aa=y}Yua(l);Yua(j);if(_){Y=aa;Z=$}else{ca=$;da=aa;break b}}else{y=Rb()|0;Y=y;Z=Q}while(0);zb(x|0);ca=Z;da=Y}else O=46;while(0);if((O|0)==46){n=Rb()|0;ca=Q;da=n}k[i>>2]=27468;k[S>>2]=27488;k[T>>2]=27560;Yua(c);Ava(T);vva(S);P=ca;R=da;Qb(R|0)}while(0);U=W;V=X;vva(S);Qb(V|0);return 0}function eE(a,b){a=a|0;b=b|0;return}function fE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76246,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,51,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function gE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76246,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,52,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function hE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,76332,30)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,141170,1)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,76246,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,121355,13);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,53,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function iE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;e=c+24|0;f=c+12|0;g=c;c=a+56|0;h=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=a+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,a|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,76246,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,121355,13);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,55,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[a>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(E|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function jE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,76246,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,56,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function kE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76246,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121304,19);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,75,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function lE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76246,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121296,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,74,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function mE(a){a=a|0;k[a>>2]=32548;return}function nE(a,b,c){a=a|0;b=b|0;c=c|0;k[a>>2]=32548;k[a+4>>2]=b;i[a+8>>0]=c&1;return}function oE(a){a=a|0;k[a>>2]=32548;return}function pE(a){a=a|0;Sqa(a);return}function qE(a){a=a|0;Ec[k[(k[a>>2]|0)+12>>2]&1023](a);return}function rE(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;b=r;r=r+176|0;c=b+152|0;d=b+16|0;e=b;f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;j=Q;l=h;vva(f);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){m=Rb()|0;n=Q;o=m}else{k[g>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(g);n=q;o=p;break}Yua(c);k[d+(k[(k[d>>2]|0)+-12>>2]|0)+12>>2]=15;B=0;p=Ia(40,d|0,76374,13)|0;q=B;B=0;if((((((!(q&1)?(k[p+(k[(k[p>>2]|0)+-12>>2]|0)+12>>2]=25,q=p+(k[(k[p>>2]|0)+-12>>2]|0)+4|0,k[q>>2]=k[q>>2]&-177|32,B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,149175,1)|0,t=B,B=0,!(t&1)):0)?(t=(i[a+8>>0]|0)!=0,B=0,q=Ia(40,s|0,(t?159247:159252)|0,(t?4:5)|0)|0,t=B,B=0,!(t&1)):0)?(B=0,Ia(40,q|0,149177,1)|0,q=B,B=0,!(q&1)):0)?(B=0,wa(510,e|0,g|0),q=B,B=0,!(q&1)):0){B=0;ya(424,e|0)|0;q=B;B=0;if(!(q&1)){Yua(e);k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(m);Ava(g);vva(f);r=b;return}q=Rb()|0;t=Q;Yua(e);u=t;v=q;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(m);Ava(g);vva(f);Qb(v|0)}q=Rb()|0;u=Q;v=q;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(m);Ava(g);vva(f);Qb(v|0)}while(0);j=n;l=o;vva(f);Qb(l|0)}function sE(a){a=a|0;return -1}function tE(a){a=a|0;return 556}function uE(a){a=a|0;var b=0,c=0,d=0;b=Qqa(12)|0;c=k[a+4>>2]|0;d=i[a+8>>0]|0;k[b>>2]=32548;k[b+4>>2]=c;i[b+8>>0]=d;return b|0}function vE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=44;i[d+1>>0]=2;i[d+2>>0]=0;i[d+3>>0]=0;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;i[o>>0]=i[a+8>>0]|0;k[b>>2]=(k[b>>2]|0)+1;r=e;return}case 2:{k[c>>2]=(k[c>>2]|0)+9;r=e;return}case 1:{c=(k[b>>2]|0)+4|0;k[b>>2]=c;o=a+4|0;d=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[o>>0]=d;i[o+1>>0]=d>>8;i[o+2>>0]=d>>16;i[o+3>>0]=d>>24;d=(k[b>>2]|0)+4|0;k[b>>2]=d;i[a+8>>0]=i[d>>0]|0;k[b>>2]=(k[b>>2]|0)+1;r=e;return}default:{e=g+56|0;b=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,b|0);d=B;B=0;if(d&1){d=Rb()|0;p=Q;q=d;vva(e);Qb(q|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,b|0);d=B;B=0;do if(d&1){a=Rb()|0;s=Q;t=a}else{k[b>>2]=27560;a=g+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;c=Q;Yua(f);Yua(a);Ava(b);s=c;t=o;break}Yua(f);B=0;o=Ia(40,g|0,143951,43)|0;c=B;B=0;if(!(c&1)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,h|0,76388,75);c=B;B=0;do if(!(c&1)){B=0;eb(502,j|0,149525,8);n=B;B=0;if(n&1){n=Rb()|0;u=Q;Yua(h);v=u;w=n;break}B=0;wa(510,m|0,b|0);n=B;B=0;if(n&1){n=Rb()|0;x=n;y=Q;z=1}else{B=0;ua(163,o|0,h|0,j|0,56,m|0);n=B;B=0;if(n&1)A=1;else{B=0;eb(503,o|0,1240,229);B=0;A=0}n=Rb()|0;u=Q;Yua(m);x=n;y=u;z=A}Yua(j);Yua(h);if(z){v=y;w=x}else{C=y;D=x;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(e);Qb(D|0)}}else{u=Rb()|0;v=Q;w=u}while(0);zb(o|0);C=v;D=w;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(e);Qb(D|0)}c=Rb()|0;C=Q;D=c;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(e);Qb(D|0)}while(0);p=s;q=t;vva(e);Qb(q|0)}}}function wE(a){a=a|0;return k[a+4>>2]|0}function xE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=Qqa(12)|0;k[d>>2]=32548;k[d+4>>2]=k[a+4>>2];i[d+8>>0]=i[a+8>>0]|0;return d|0}function yE(a,b,c){a=a|0;b=b|0;c=c|0;c=Qqa(12)|0;k[c>>2]=32548;k[c+4>>2]=k[a+4>>2];i[c+8>>0]=i[a+8>>0]|0;return c|0}function zE(a,b){a=a|0;b=b|0;i[b>>0]=i[a+8>>0]|0;return}function AE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,119332,18)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76388,75);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,105,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function BE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,119332,18)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76388,75);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,107,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function CE(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,119332,18)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76388,75);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,109,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function DE(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function EE(a,b,c){a=a|0;b=b|0;c=c|0;p[b>>3]=+((i[a+8>>0]|0)!=0&1);return}function FE(a,b){a=a|0;b=+b;return}function GE(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;j=d;if((Hc[k[(k[b>>2]|0)+20>>2]&511](b)|0)==556){m=a+8|0;i[m>>0]=+(l[m>>0]|0)+ +(l[b+8>>0]|0)*c!=0.0&1;r=d;return}d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(d);Qb(o|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);m=B;B=0;do if(m&1){a=Rb()|0;p=Q;q=a}else{k[b>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(e);Yua(a);Ava(b);p=t;q=s;break}Yua(e);B=0;s=Ia(40,f|0,149721,19)|0;t=B;B=0;if(!(t&1)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,76388,75);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,121097,4);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(g);w=v;x=u;break}B=0;wa(510,j|0,b|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,g|0,h|0,139,j|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(j);y=v;z=u;A=C}Yua(h);Yua(g);if(A){w=y;x=z}else{D=y;E=z;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(E|0)}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(E|0)}t=Rb()|0;D=Q;E=t;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(E|0)}while(0);n=p;o=q;vva(d);Qb(o|0)}function HE(a,b){a=a|0;b=b|0;return}function IE(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,77191,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76388,75);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115046,19);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,152,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function JE(a,b){a=a|0;b=b|0;return}function KE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;e=c+24|0;f=c+12|0;g=c;c=a+56|0;h=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=a+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,a|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,76464,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,121355,13);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,50,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[a>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(E|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function LE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,76464,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,51,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function ME(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,76464,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77964,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,52,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function NE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76464,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77948,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,53,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function OE(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76464,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121324,30);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,54,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function PE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,76464,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,120910,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,55,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function QE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,a|0,76464,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,120878,31);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(a);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,a|0,f|0,56,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(a);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(E|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function RE(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,76464,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,115231,12);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,59,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function SE(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,76655,41)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76464,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115218,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,60,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function TE(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,76622,32)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76464,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115211,6);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,62,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function UE(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,76589,32)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76464,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115204,6);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,64,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function VE(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,76622,32)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76464,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115200,3);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,61,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function WE(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,76589,32)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76464,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77944,3);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,63,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function XE(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,120763,23)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,76464,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,120874,3);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,65,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function YE(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;a=r;r=r+192|0;d=a+176|0;e=a+40|0;f=a+24|0;g=a+12|0;h=a;a=e+56|0;i=e+4|0;k[e>>2]=27524;k[a>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(a);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[a>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,76550,38)|0;s=B;B=0;a:do if(!(s&1)?(B=0,Xa(239,q|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,76464,85);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,118419,9);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(f);x=w;y=v;break}B=0;wa(510,h|0,i|0);v=B;B=0;if(v&1){v=Rb()|0;z=Q;A=v;C=1}else{B=0;ua(163,t|0,f|0,g|0,68,h|0);v=B;B=0;if(v&1)D=1;else{B=0;eb(503,t|0,1240,229);B=0;D=0}v=Rb()|0;w=Q;Yua(h);z=w;A=v;C=D}Yua(g);Yua(f);if(C){x=z;y=A}else{E=z;F=A;break a}}else{v=Rb()|0;x=Q;y=v}while(0);zb(t|0);E=x;F=y}else G=16;while(0);if((G|0)==16){q=Rb()|0;E=Q;F=q}k[e>>2]=27468;k[a>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(a);Qb(F|0)}while(0);l=o;m=p;vva(a);Qb(m|0)}function ZE(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76464,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121304,19);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,70,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function _E(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76464,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121179,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,35,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function $E(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76464,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121166,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,37,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function aF(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76464,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121153,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,36,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function bF(a){a=a|0;return 736}function cF(a){a=a|0;return 1}function dF(a){a=a|0;return 1}function eF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,76464,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115180,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,41,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function fF(a){a=a|0;k[a>>2]=32740;return}function gF(a,b,c){a=a|0;b=b|0;c=c|0;k[a>>2]=32740;k[a+4>>2]=b;k[a+8>>2]=c;return}function hF(a){a=a|0;k[a>>2]=32740;return}function iF(a){a=a|0;Sqa(a);return}function jF(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;b=r;r=r+176|0;c=b+152|0;d=b+16|0;e=b;f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);k[d+(k[(k[d>>2]|0)+-12>>2]|0)+12>>2]=15;B=0;o=Ia(40,d|0,76707,12)|0;p=B;B=0;if((((((!(p&1)?(k[o+(k[(k[o>>2]|0)+-12>>2]|0)+12>>2]=25,p=o+(k[(k[o>>2]|0)+-12>>2]|0)+4|0,k[p>>2]=k[p>>2]&-177|32,B=0,p=ya(427,k[a+4>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(p)|0,B=0,s=Ia(40,o|0,p|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,s|0,149175,1)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Xa(242,q|0,k[a+8>>2]|0)|0,q=B,B=0,!(q&1)):0)?(B=0,Ia(40,s|0,149177,1)|0,s=B,B=0,!(s&1)):0)?(B=0,wa(510,e|0,g|0),s=B,B=0,!(s&1)):0){B=0;ya(424,e|0)|0;s=B;B=0;if(!(s&1)){Yua(e);k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);r=b;return}s=Rb()|0;q=Q;Yua(e);t=q;u=s;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(u|0)}s=Rb()|0;t=Q;u=s;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(u|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function kF(a){a=a|0;return -1}function lF(a){a=a|0;return 574}function mF(a){a=a|0;var b=0,c=0,d=0;b=Qqa(12)|0;c=k[a+4>>2]|0;d=k[a+8>>2]|0;k[b>>2]=32740;k[b+4>>2]=c;k[b+8>>2]=d;return b|0}function nF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=62;i[d+1>>0]=2;i[d+2>>0]=0;i[d+3>>0]=0;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;d=a+8|0;n=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;k[b>>2]=(k[b>>2]|0)+4;r=e;return}case 2:{k[c>>2]=(k[c>>2]|0)+12;r=e;return}case 1:{c=(k[b>>2]|0)+4|0;k[b>>2]=c;n=a+4|0;o=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[n>>0]=o;i[n+1>>0]=o>>8;i[n+2>>0]=o>>16;i[n+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;n=a+8|0;a=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[n>>0]=a;i[n+1>>0]=a>>8;i[n+2>>0]=a>>16;i[n+3>>0]=a>>24;k[b>>2]=(k[b>>2]|0)+4;r=e;return}default:{e=g+56|0;b=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;p=Q;q=a;vva(e);Qb(q|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){n=Rb()|0;s=Q;t=n}else{k[b>>2]=27560;n=g+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;c=Q;Yua(f);Yua(n);Ava(b);s=c;t=o;break}Yua(f);B=0;o=Ia(40,g|0,143951,43)|0;c=B;B=0;if(!(c&1)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,h|0,76720,74);c=B;B=0;do if(!(c&1)){B=0;eb(502,j|0,149525,8);d=B;B=0;if(d&1){d=Rb()|0;u=Q;Yua(h);v=u;w=d;break}B=0;wa(510,m|0,b|0);d=B;B=0;if(d&1){d=Rb()|0;x=d;y=Q;z=1}else{B=0;ua(163,o|0,h|0,j|0,52,m|0);d=B;B=0;if(d&1)A=1;else{B=0;eb(503,o|0,1240,229);B=0;A=0}d=Rb()|0;u=Q;Yua(m);x=d;y=u;z=A}Yua(j);Yua(h);if(z){v=y;w=x}else{C=y;D=x;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(n);Ava(b);vva(e);Qb(D|0)}}else{u=Rb()|0;v=Q;w=u}while(0);zb(o|0);C=v;D=w;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(n);Ava(b);vva(e);Qb(D|0)}c=Rb()|0;C=Q;D=c;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(n);Ava(b);vva(e);Qb(D|0)}while(0);p=s;q=t;vva(e);Qb(q|0)}}}function oF(a){a=a|0;Ec[k[(k[a>>2]|0)+12>>2]&1023](a);return}function pF(a){a=a|0;return k[a+4>>2]|0}function qF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=Qqa(12)|0;k[d>>2]=32740;k[d+4>>2]=k[a+4>>2];k[d+8>>2]=k[a+8>>2];return d|0}function rF(a,b,c){a=a|0;b=b|0;c=c|0;c=Qqa(12)|0;k[c>>2]=32740;k[c+4>>2]=k[a+4>>2];k[c+8>>2]=k[a+8>>2];return c|0}function sF(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,119332,18)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76720,74);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,99,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function tF(a,b){a=a|0;b=b|0;k[b>>2]=k[a+8>>2];return}function uF(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,76795,47)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76720,74);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,106,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function vF(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,119332,18)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76720,74);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,109,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function wF(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function xF(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+(k[a+8>>2]|0);p[b>>3]=d*d;return}function yF(a,b){a=a|0;b=+b;var c=0;c=a+8|0;k[c>>2]=~~(+(k[c>>2]|0)*b);return}function zF(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;if((Hc[k[(k[b>>2]|0)+20>>2]&511](b)|0)==574){j=a+8|0;k[j>>2]=~~(+(k[j>>2]|0)+ +(k[b+8>>2]|0)*c);r=d;return}d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(d);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);j=B;B=0;do if(j&1){a=Rb()|0;n=Q;o=a}else{k[b>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(e);Yua(a);Ava(b);n=q;o=p;break}Yua(e);B=0;p=Ia(40,f|0,149721,19)|0;q=B;B=0;if(!(q&1)?(B=0,Xa(239,p|0,0)|0,p=B,B=0,!(p&1)):0){p=Ab(20)|0;B=0;eb(502,g|0,76720,74);q=B;B=0;do if(!(q&1)){B=0;eb(502,h|0,121097,4);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(g);u=t;v=s;break}B=0;wa(510,i|0,b|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,p|0,g|0,h|0,143,i|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,p|0,1240,229);B=0;z=0}s=Rb()|0;t=Q;Yua(i);w=t;x=s;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(p|0);A=u;C=v;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}q=Rb()|0;A=Q;C=q;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}while(0);l=n;m=o;vva(d);Qb(m|0)}function AF(a,b,c){a=a|0;b=+b;c=+c;var d=0.0,e=0;d=+$(+b);p[t>>3]=d;e=k[t+4>>2]|0;if(!(e>>>0>2146435072|(e|0)==2146435072&(k[t>>2]|0)>>>0>0)?(e=a+8|0,+(k[e>>2]|0)<b):0)k[e>>2]=~~b;b=+$(+c);p[t>>3]=b;e=k[t+4>>2]|0;if(e>>>0>2146435072|(e|0)==2146435072&(k[t>>2]|0)>>>0>0)return;e=a+8|0;if(!(+(k[e>>2]|0)>c))return;k[e>>2]=~~c;return}function BF(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,77191,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76720,74);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115046,19);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,157,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function CF(a,b){a=a|0;b=b|0;return}function DF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;e=c+24|0;f=c+12|0;g=c;c=a+56|0;h=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=a+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,a|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,76843,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,121355,13);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,54,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[a>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(E|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function EF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,76843,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,55,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function FF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,76843,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77964,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,56,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function GF(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76843,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77948,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,57,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function HF(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76843,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121324,30);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,58,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function IF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,76843,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,120910,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,59,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function JF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,a|0,76843,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,120878,31);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(a);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,a|0,f|0,60,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(a);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(E|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function KF(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,76843,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,115231,12);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,63,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function LF(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,76994,41)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76843,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115218,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,68,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function MF(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,76961,32)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76843,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115211,6);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,70,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function NF(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,76928,32)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76843,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115204,6);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,72,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function OF(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,76961,32)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76843,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115200,3);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,69,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function PF(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,76928,32)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76843,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77944,3);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,71,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function QF(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,120763,23)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,76843,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,120874,3);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,64,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function RF(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76843,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121304,19);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,74,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function SF(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76843,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121296,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,73,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function TF(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76843,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121179,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,39,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function UF(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76843,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121166,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,41,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function VF(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,76843,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121153,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,40,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function WF(a){a=a|0;return 736}function XF(a){a=a|0;return 1}function YF(a){a=a|0;return 1}function ZF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,76843,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115180,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,45,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function _F(a){a=a|0;k[a>>2]=32932;return}function $F(a,b,c){a=a|0;b=b|0;c=+c;k[a>>2]=32932;k[a+4>>2]=b;p[a+8>>3]=c;return}function aG(a){a=a|0;k[a>>2]=32932;return}function bG(a){a=a|0;Sqa(a);return}function cG(a){a=a|0;Ec[k[(k[a>>2]|0)+12>>2]&1023](a);return}function dG(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0;b=r;r=r+176|0;c=b+152|0;d=b+16|0;e=b;f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;q=Q;Yua(c);Yua(l);Ava(g);m=q;n=o;break}Yua(c);k[d+(k[(k[d>>2]|0)+-12>>2]|0)+12>>2]=15;B=0;o=Ia(40,d|0,77050,15)|0;q=B;B=0;if((((((!(q&1)?(k[o+(k[(k[o>>2]|0)+-12>>2]|0)+12>>2]=25,q=o+(k[(k[o>>2]|0)+-12>>2]|0)+4|0,k[q>>2]=k[q>>2]&-177|32,B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,o|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,149175,1)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Sa(1,s|0,+(+p[a+8>>3]))|0,s=B,B=0,!(s&1)):0)?(B=0,Ia(40,t|0,149177,1)|0,t=B,B=0,!(t&1)):0)?(B=0,wa(510,e|0,g|0),t=B,B=0,!(t&1)):0){B=0;ya(424,e|0)|0;t=B;B=0;if(!(t&1)){Yua(e);k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);r=b;return}t=Rb()|0;s=Q;Yua(e);u=s;v=t;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(v|0)}t=Rb()|0;u=Q;v=t;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(v|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function eG(a){a=a|0;return -1}function fG(a){a=a|0;return 561}function gG(a){a=a|0;var b=0,c=0,d=0.0;b=Qqa(16)|0;c=k[a+4>>2]|0;d=+p[a+8>>3];k[b>>2]=32932;k[b+4>>2]=c;p[b+8>>3]=d;return b|0}function hG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=49;i[d+1>>0]=2;i[d+2>>0]=0;i[d+3>>0]=0;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;d=a+8|0;n=d;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d+4|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o;o=n;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=n+4|0;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;k[b>>2]=(k[b>>2]|0)+8;r=e;return}case 2:{k[c>>2]=(k[c>>2]|0)+16;r=e;return}case 1:{c=(k[b>>2]|0)+4|0;k[b>>2]=c;d=a+4|0;q=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[d>>0]=q;i[d+1>>0]=q>>8;i[d+2>>0]=q>>16;i[d+3>>0]=q>>24;q=(k[b>>2]|0)+4|0;k[b>>2]=q;d=a+8|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];k[b>>2]=(k[b>>2]|0)+8;r=e;return}default:{e=g+56|0;b=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,b|0);d=B;B=0;if(d&1){d=Rb()|0;s=Q;u=d;vva(e);Qb(u|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,b|0);d=B;B=0;do if(d&1){q=Rb()|0;v=Q;w=q}else{k[b>>2]=27560;q=g+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);a=B;B=0;if(a&1){a=Rb()|0;c=Q;Yua(f);Yua(q);Ava(b);v=c;w=a;break}Yua(f);B=0;a=Ia(40,g|0,143951,43)|0;c=B;B=0;if(!(c&1)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,h|0,77066,77);c=B;B=0;do if(!(c&1)){B=0;eb(502,j|0,149525,8);n=B;B=0;if(n&1){n=Rb()|0;o=Q;Yua(h);x=o;y=n;break}B=0;wa(510,m|0,b|0);n=B;B=0;if(n&1){n=Rb()|0;z=n;A=Q;C=1}else{B=0;ua(163,a|0,h|0,j|0,56,m|0);n=B;B=0;if(n&1)D=1;else{B=0;eb(503,a|0,1240,229);B=0;D=0}n=Rb()|0;o=Q;Yua(m);z=n;A=o;C=D}Yua(j);Yua(h);if(C){x=A;y=z}else{E=A;F=z;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(q);Ava(b);vva(e);Qb(F|0)}}else{o=Rb()|0;x=Q;y=o}while(0);zb(a|0);E=x;F=y;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(q);Ava(b);vva(e);Qb(F|0)}c=Rb()|0;E=Q;F=c;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(q);Ava(b);vva(e);Qb(F|0)}while(0);s=v;u=w;vva(e);Qb(u|0)}}}function iG(a){a=a|0;return k[a+4>>2]|0}function jG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=Qqa(16)|0;k[d>>2]=32932;k[d+4>>2]=k[a+4>>2];p[d+8>>3]=+p[a+8>>3];return d|0}function kG(a,b,c){a=a|0;b=b|0;c=c|0;c=Qqa(16)|0;k[c>>2]=32932;k[c+4>>2]=k[a+4>>2];p[c+8>>3]=+p[a+8>>3];return c|0}function lG(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,77144,21)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,77166,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,77066,77);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,121355,13);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,102,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function mG(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,77144,21)|0;q=B;B=0;if((((((!(q&1)?(q=a+4|0,B=0,s=Xa(242,p|0,k[q>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,s|0,144166,2)|0,s=B,B=0,!(s&1)):0)?(B=0,s=ya(427,k[q>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(s)|0,B=0,t=Ia(40,p|0,s|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,t|0,82829,26)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,e|0,77066,77);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,121355,13);s=B;B=0;if(s&1){s=Rb()|0;p=Q;Yua(e);u=p;v=s;break}B=0;wa(510,g|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,q|0,e|0,f|0,107,g|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,q|0,1240,229);B=0;z=0}s=Rb()|0;p=Q;Yua(g);w=p;x=s;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(q|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function nG(a,b){a=a|0;b=b|0;p[b>>3]=+p[a+8>>3];return}function oG(a,b,c){a=a|0;b=b|0;c=c|0;p[b>>3]=+p[a+8>>3];return}function pG(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function qG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+p[a+8>>3];p[b>>3]=d*d;return}function rG(a,b){a=a|0;b=+b;var c=0;c=a+8|0;p[c>>3]=+p[c>>3]*b;return}function sG(a,b){a=a|0;b=+b;var c=0;c=a+8|0;if(!(+p[c>>3]<b))return;p[c>>3]=b;return}function tG(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;if((Hc[k[(k[b>>2]|0)+20>>2]&511](b)|0)==561){j=a+8|0;p[j>>3]=+p[j>>3]+ +p[b+8>>3]*c;r=d;return}d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(d);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);j=B;B=0;do if(j&1){a=Rb()|0;n=Q;o=a}else{k[b>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);Yua(a);Ava(b);n=s;o=q;break}Yua(e);B=0;q=Ia(40,f|0,149721,19)|0;s=B;B=0;if(!(s&1)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,g|0,77066,77);s=B;B=0;do if(!(s&1)){B=0;eb(502,h|0,121097,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(g);v=u;w=t;break}B=0;wa(510,i|0,b|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,g|0,h|0,152,i|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(i);x=u;y=t;z=A}Yua(h);Yua(g);if(z){v=x;w=y}else{C=x;D=y;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(D|0)}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(D|0)}s=Rb()|0;C=Q;D=s;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(D|0)}while(0);l=n;m=o;vva(d);Qb(m|0)}function uG(a,b,c){a=a|0;b=+b;c=+c;var d=0.0,e=0;d=+$(+b);p[t>>3]=d;e=k[t+4>>2]|0;if(!(e>>>0>2146435072|(e|0)==2146435072&(k[t>>2]|0)>>>0>0)?(e=a+8|0,+p[e>>3]<b):0)p[e>>3]=b;b=+$(+c);p[t>>3]=b;e=k[t+4>>2]|0;if(e>>>0>2146435072|(e|0)==2146435072&(k[t>>2]|0)>>>0>0)return;e=a+8|0;if(!(+p[e>>3]>c))return;p[e>>3]=c;return}function vG(a){a=a|0;return +(+p[a+8>>3])}function wG(a){a=a|0;return +(+$(+(+p[a+8>>3])))}function xG(a){a=a|0;return +(+p[a+8>>3])}function yG(a){a=a|0;return +(+$(+(+p[a+8>>3])))}function zG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,77191,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77066,77);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115046,19);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,182,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function AG(a,b){a=a|0;b=b|0;p[b>>3]=+p[a+8>>3];return}function BG(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;c=r;r=r+368|0;d=c+352|0;e=c;f=c+216|0;g=c+204|0;h=c+192|0;i=c+44|0;j=c+56|0;l=c+32|0;m=c+20|0;n=c+8|0;if((Hc[k[(k[b>>2]|0)+32>>2]&511](b)|0)==353){if((Hc[k[(k[b>>2]|0)+20>>2]&511](b)|0)==626){Fc[k[(k[b>>2]|0)+64>>2]&1023](b,e);o=a+8|0;p[o>>3]=+p[o>>3]*+p[e>>3];r=c;return}c=j+56|0;e=j+4|0;k[j>>2]=27524;k[c>>2]=27544;B=0;wa(508,j+56|0,e|0);o=B;B=0;if(o&1){o=Rb()|0;q=Q;s=o;vva(c);Qb(s|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[c>>2]=27488;B=0;va(448,e|0);o=B;B=0;do if(o&1){a=Rb()|0;t=Q;u=a}else{k[e>>2]=27560;a=j+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[j+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,e|0,d|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(d);Yua(a);Ava(e);t=w;u=v;break}Yua(d);B=0;v=Ia(40,j|0,149721,19)|0;w=B;B=0;a:do if(!(w&1)?(B=0,Xa(239,v|0,0)|0,x=B,B=0,!(x&1)):0){x=Ab(20)|0;B=0;eb(502,l|0,77066,77);y=B;B=0;do if(!(y&1)){B=0;eb(502,m|0,121304,19);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(l);C=A;D=z;break}B=0;wa(510,n|0,e|0);z=B;B=0;if(z&1){z=Rb()|0;E=1;F=z;G=Q}else{B=0;ua(163,x|0,l|0,m|0,207,n|0);z=B;B=0;if(z&1)H=1;else{B=0;eb(503,x|0,1240,229);B=0;H=0}z=Rb()|0;A=Q;Yua(n);E=H;F=z;G=A}Yua(m);Yua(l);if(E){C=G;D=F}else{I=F;J=G;break a}}else{A=Rb()|0;C=Q;D=A}while(0);zb(x|0);I=D;J=C}else K=46;while(0);if((K|0)==46){v=Rb()|0;I=v;J=Q}k[j>>2]=27468;k[c>>2]=27488;k[e>>2]=27560;Yua(a);Ava(e);vva(c);L=I;M=J;Qb(L|0)}while(0);q=t;s=u;vva(c);Qb(s|0)}s=f+56|0;c=f+4|0;k[f>>2]=27524;k[s>>2]=27544;B=0;wa(508,f+56|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;N=Q;O=u;vva(s);Qb(O|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[s>>2]=27488;B=0;va(448,c|0);u=B;B=0;do if(u&1){t=Rb()|0;P=Q;R=t}else{k[c>>2]=27560;t=f+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,c|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;J=Q;Yua(d);Yua(t);Ava(c);P=J;R=q;break}Yua(d);B=0;q=Ia(40,f|0,120714,48)|0;J=B;B=0;b:do if(((((!(J&1)?(B=0,I=ya(k[(k[b>>2]|0)+32>>2]|0,b|0)|0,e=B,B=0,!(e&1)):0)?(B=0,e=ya(427,I|0)|0,I=B,B=0,!(I&1)):0)?(I=Lta(e)|0,B=0,j=Ia(40,q|0,e|0,I|0)|0,I=B,B=0,!(I&1)):0)?(B=0,I=Ia(40,j|0,141170,1)|0,j=B,B=0,!(j&1)):0)?(B=0,Xa(239,I|0,0)|0,I=B,B=0,!(I&1)):0){I=Ab(20)|0;B=0;eb(502,g|0,77066,77);j=B;B=0;do if(!(j&1)){B=0;eb(502,h|0,121304,19);e=B;B=0;if(e&1){e=Rb()|0;C=Q;Yua(g);S=C;T=e;break}B=0;wa(510,i|0,c|0);e=B;B=0;if(e&1){e=Rb()|0;U=e;V=Q;W=1}else{B=0;ua(163,I|0,g|0,h|0,196,i|0);e=B;B=0;if(e&1)X=1;else{B=0;eb(503,I|0,1240,229);B=0;X=0}e=Rb()|0;C=Q;Yua(i);U=e;V=C;W=X}Yua(h);Yua(g);if(W){S=V;T=U}else{Y=V;Z=U;break b}}else{C=Rb()|0;S=Q;T=C}while(0);zb(I|0);Y=S;Z=T}else K=21;while(0);if((K|0)==21){q=Rb()|0;Y=Q;Z=q}k[f>>2]=27468;k[s>>2]=27488;k[c>>2]=27560;Yua(t);Ava(c);vva(s);L=Z;M=Y;Qb(L|0)}while(0);N=P;O=R;vva(s);Qb(O|0)}function CG(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0.0;c=r;r=r+16|0;d=c;Fc[k[(k[b>>2]|0)+64>>2]&1023](b,d);b=Qqa(16)|0;e=k[a+4>>2]|0;f=+p[a+8>>3]/+p[d>>3];k[b>>2]=32932;k[b+4>>2]=e;p[b+8>>3]=f;r=c;return b|0}function DG(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0;c=+Zc[k[(k[b>>2]|0)+112>>2]&255](b);if(c<+Zc[k[(k[a>>2]|0)+112>>2]&255](a))d=+Zc[k[(k[b>>2]|0)+112>>2]&255](b);else d=+Zc[k[(k[a>>2]|0)+112>>2]&255](a);b=Qqa(16)|0;e=k[a+4>>2]|0;k[b>>2]=32932;k[b+4>>2]=e;p[b+8>>3]=d;return b|0}function EG(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0;c=+Zc[k[(k[b>>2]|0)+108>>2]&255](b);if(c>+Zc[k[(k[a>>2]|0)+108>>2]&255](a))d=+Zc[k[(k[b>>2]|0)+108>>2]&255](b);else d=+Zc[k[(k[a>>2]|0)+108>>2]&255](a);b=Qqa(16)|0;e=k[a+4>>2]|0;k[b>>2]=32932;k[b+4>>2]=e;p[b+8>>3]=d;return b|0}function FG(a,b){a=a|0;b=b|0;return}function GG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;e=c+24|0;f=c+12|0;g=c;c=a+56|0;h=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=a+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,a|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,77209,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,121355,13);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,53,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[a>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(E|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function HG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,77209,87);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,54,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function IG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,77209,87);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77964,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,55,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function JG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77209,87);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121324,30);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,57,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function KG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,77209,87);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,120910,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,58,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function LG(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,a|0,77209,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,120878,31);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(a);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,a|0,f|0,59,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(a);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(E|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function MG(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77209,87);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115218,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,67,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function NG(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,120763,23)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,77209,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,120874,3);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,63,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function OG(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77209,87);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121296,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,72,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function PG(a){a=a|0;return 736}function QG(a){a=a|0;return 1}function RG(a){a=a|0;return 1}function SG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,77209,87);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115180,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,44,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function TG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;k[a>>2]=33124;k[a+4>>2]=b;k[a+12>>2]=d;b=Rqa(d>>>0>536870911?-1:d<<3)|0;k[a+8>>2]=b;if(!c)yb(142353,77590,137,142345);if(!d)return;TEa(b|0,c|0,d<<3|0)|0;return}function UG(a){a=a|0;var b=0;k[a>>2]=33124;b=a+8|0;a=k[b>>2]|0;if(!a)return;Tqa(a);k[b>>2]=0;return}function VG(a){a=a|0;var b=0;k[a>>2]=33124;b=k[a+8>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function WG(a){a=a|0;Ec[k[(k[a>>2]|0)+12>>2]&1023](a);return}function XG(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0;b=r;r=r+320|0;c=b+300|0;d=b+152|0;e=b+288|0;f=b+16|0;g=b;h=d+56|0;i=d+4|0;k[d>>2]=27524;k[h>>2]=27544;B=0;wa(508,d+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(h);Qb(m|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[h>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;q=n}else{k[i>>2]=27560;n=d+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,i|0,c|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(c);Yua(n);Ava(i);o=t;q=s;break}Yua(c);k[d+(k[(k[d>>2]|0)+-12>>2]|0)+12>>2]=15;B=0;s=Ia(40,d|0,77316,20)|0;t=B;B=0;do if((((((!(t&1)?(k[s+(k[(k[s>>2]|0)+-12>>2]|0)+12>>2]=25,u=s+(k[(k[s>>2]|0)+-12>>2]|0)+4|0,k[u>>2]=k[u>>2]&-177|32,B=0,u=ya(427,k[a+4>>2]|0)|0,v=B,B=0,!(v&1)):0)?(v=Lta(u)|0,B=0,w=Ia(40,s|0,u|0,v|0)|0,v=B,B=0,!(v&1)):0)?(B=0,v=Ia(40,w|0,77337,7)|0,w=B,B=0,!(w&1)):0)?(w=a+12|0,B=0,u=Xa(242,v|0,k[w>>2]|0)|0,v=B,B=0,!(v&1)):0)?(B=0,Ia(40,u|0,149177,1)|0,u=B,B=0,!(u&1)):0)?(B=0,wa(510,e|0,i|0),u=B,B=0,!(u&1)):0){B=0;ya(424,e|0)|0;u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);x=v;y=u;break}Yua(e);k[d>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);if((k[w>>2]|0)<=0){r=b;return}u=f+56|0;v=f+4|0;z=f+56|0;A=f+128|0;C=f+132|0;D=f+36|0;E=f+52|0;F=a+8|0;G=0;while(1){k[f>>2]=27524;k[u>>2]=27544;B=0;wa(508,z|0,v|0);H=B;B=0;if(H&1){I=27;break}k[A>>2]=0;k[C>>2]=-1;k[f>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);H=B;B=0;if(H&1){I=28;break}k[v>>2]=27560;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[E>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);H=B;B=0;if(H&1){I=26;break}Yua(c);k[f+(k[(k[f>>2]|0)+-12>>2]|0)+12>>2]=20;B=0;H=Sa(1,f|0,+(+p[(k[F>>2]|0)+(G<<3)>>3]))|0;J=B;B=0;if(J&1){I=36;break}B=0;Ia(40,H|0,149177,1)|0;H=B;B=0;if(H&1){I=36;break}B=0;wa(510,g|0,v|0);H=B;B=0;if(H&1){I=36;break}B=0;ya(424,g|0)|0;H=B;B=0;if(H&1){I=37;break}Yua(g);k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(D);Ava(v);vva(u);G=G+1|0;if((G|0)>=(k[w>>2]|0)){I=19;break}}if((I|0)==19){r=b;return}else if((I|0)==26){w=Rb()|0;G=Q;Yua(c);Yua(D);Ava(v);K=G;L=w;I=29}else if((I|0)==27){w=Rb()|0;M=Q;N=w;vva(u);Qb(N|0)}else if((I|0)==28){w=Rb()|0;K=Q;L=w;I=29}else if((I|0)==36){w=Rb()|0;O=Q;P=w;I=38}else if((I|0)==37){w=Rb()|0;G=Q;Yua(g);O=G;P=w;I=38}if((I|0)==29){M=K;N=L;vva(u);Qb(N|0)}else if((I|0)==38){k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(D);Ava(v);vva(u);R=O;S=P;Qb(S|0)}}else I=20;while(0);if((I|0)==20){s=Rb()|0;x=Q;y=s}k[d>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);R=x;S=y;Qb(S|0)}while(0);l=o;m=q;vva(h);Qb(m|0)}function YG(a){a=a|0;return -1}function ZG(a){a=a|0;return 562}function _G(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Qqa(16)|0;c=k[a+4>>2]|0;d=k[a+8>>2]|0;e=k[a+12>>2]|0;k[b>>2]=33124;k[b+4>>2]=c;k[b+12>>2]=e;B=0;c=ya(422,(e>>>0>536870911?-1:e<<3)|0)|0;a=B;B=0;if(a&1){f=Rb()|0;g=Q;Sqa(b);Qb(f|0)}k[b+8>>2]=c;if(!d){B=0;ib(283,142353,77590,137,142345);B=0;f=Rb()|0;g=Q;Sqa(b);Qb(f|0)}if(!e)return b|0;TEa(c|0,d|0,e<<3|0)|0;return b|0}function $G(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=50;i[d+1>>0]=2;i[d+2>>0]=0;i[d+3>>0]=0;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;d=a+12|0;n=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+8|0;p=(k[o>>2]|0)==0;i[n>>0]=p&1;n=(k[b>>2]|0)+1|0;k[b>>2]=n;if(p){r=e;return}TEa(n|0,k[o>>2]|0,k[d>>2]<<3|0)|0;k[b>>2]=(k[b>>2]|0)+(k[d>>2]<<3);r=e;return}case 2:{d=(k[a+8>>2]|0)==0;o=(k[c>>2]|0)+13|0;k[c>>2]=o;if(d){r=e;return}k[c>>2]=o+(k[a+12>>2]<<3);r=e;return}case 1:{o=(k[b>>2]|0)+4|0;k[b>>2]=o;c=a+4|0;d=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[c>>0]=d;i[c+1>>0]=d>>8;i[c+2>>0]=d>>16;i[c+3>>0]=d>>24;d=(k[b>>2]|0)+4|0;k[b>>2]=d;c=a+12|0;o=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[c>>0]=o;i[c+1>>0]=o>>8;i[c+2>>0]=o>>16;i[c+3>>0]=o>>24;c=k[b>>2]|0;d=c+4|0;k[b>>2]=d;n=i[d>>0]|0;k[b>>2]=c+5;if(n&1){r=e;return}n=Rqa(o>>>0>536870911?-1:o<<3)|0;k[a+8>>2]=n;a=k[b>>2]|0;c=o<<3;TEa(n|0,a|0,c|0)|0;k[b>>2]=a+c;r=e;return}default:{e=g+56|0;c=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,c|0);a=B;B=0;if(a&1){a=Rb()|0;q=Q;s=a;vva(e);Qb(s|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,c|0);a=B;B=0;do if(a&1){b=Rb()|0;t=Q;u=b}else{k[c>>2]=27560;b=g+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,c|0,f|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;Yua(f);Yua(b);Ava(c);t=o;u=n;break}Yua(f);B=0;n=Ia(40,g|0,143951,43)|0;o=B;B=0;if(!(o&1)?(B=0,Xa(239,n|0,0)|0,n=B,B=0,!(n&1)):0){n=Ab(20)|0;B=0;eb(502,h|0,77345,82);o=B;B=0;do if(!(o&1)){B=0;eb(502,j|0,149525,8);d=B;B=0;if(d&1){d=Rb()|0;p=Q;Yua(h);v=p;w=d;break}B=0;wa(510,m|0,c|0);d=B;B=0;if(d&1){d=Rb()|0;x=Q;y=d;z=1}else{B=0;ua(163,n|0,h|0,j|0,64,m|0);d=B;B=0;if(d&1)A=1;else{B=0;eb(503,n|0,1240,229);B=0;A=0}d=Rb()|0;p=Q;Yua(m);x=p;y=d;z=A}Yua(j);Yua(h);if(z){v=x;w=y}else{C=x;D=y;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(b);Ava(c);vva(e);Qb(D|0)}}else{d=Rb()|0;v=Q;w=d}while(0);zb(n|0);C=v;D=w;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(b);Ava(c);vva(e);Qb(D|0)}o=Rb()|0;C=Q;D=o;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(b);Ava(c);vva(e);Qb(D|0)}while(0);q=t;s=u;vva(e);Qb(s|0)}}}function aH(a){a=a|0;return k[a+4>>2]|0}function bH(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;if((e|0)<=0)return;f=k[a+8>>2]|0;a=ma(d,c)|0;c=0;do{p[b+(c+a<<3)>>3]=+p[f+(c<<3)>>3];c=c+1|0}while((c|0)!=(e|0));return}function cH(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=k[a+12>>2]|0;e=Rqa(d>>>0>536870911?-1:d<<3)|0;f=k[a+8>>2]|0;if(!f)yb(142353,77590,137,142345);if(!d){k[c>>2]=d;k[b>>2]=e;return}else g=0;do{p[e+(g<<3)>>3]=+p[f+(g<<3)>>3];g=g+1|0}while((g|0)!=(d|0));k[c>>2]=d;k[b>>2]=e;return}function dH(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function eH(a,b){a=a|0;b=b|0;return}function fH(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,48,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function gH(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,49,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function hH(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,50,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function iH(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,51,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function jH(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;e=c+24|0;f=c+12|0;g=c;c=a+56|0;h=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=a+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,a|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,77428,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,121355,13);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,52,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[a>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(E|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function kH(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,53,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function lH(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77964,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,54,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function mH(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77948,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,55,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function nH(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121324,30);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,56,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function oH(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,120910,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,57,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function pH(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,a|0,77428,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,120878,31);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(a);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,a|0,f|0,58,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(a);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(E|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function qH(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115244,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,59,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function rH(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,77428,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,115231,12);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,60,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function sH(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115218,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,66,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function tH(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115211,6);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,68,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function uH(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115204,6);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,70,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function vH(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115200,3);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,67,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function wH(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77944,3);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,69,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function xH(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,120763,23)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,77428,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,120874,3);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,61,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function yH(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,77428,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,115194,5);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,62,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function zH(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;a=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,77428,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,121097,4);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,63,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(E|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function AH(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;a=r;r=r+192|0;d=a+176|0;e=a+40|0;f=a+24|0;g=a+12|0;h=a;a=e+56|0;i=e+4|0;k[e>>2]=27524;k[a>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(a);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[a>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,149721,19)|0;s=B;B=0;a:do if(!(s&1)?(B=0,Xa(239,q|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,77428,92);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,118419,9);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(f);x=w;y=v;break}B=0;wa(510,h|0,i|0);v=B;B=0;if(v&1){v=Rb()|0;z=Q;A=v;C=1}else{B=0;ua(163,t|0,f|0,g|0,64,h|0);v=B;B=0;if(v&1)D=1;else{B=0;eb(503,t|0,1240,229);B=0;D=0}v=Rb()|0;w=Q;Yua(h);z=w;A=v;C=D}Yua(g);Yua(f);if(C){x=z;y=A}else{E=z;F=A;break a}}else{v=Rb()|0;x=Q;y=v}while(0);zb(t|0);E=x;F=y}else G=16;while(0);if((G|0)==16){q=Rb()|0;E=Q;F=q}k[e>>2]=27468;k[a>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(a);Qb(F|0)}while(0);l=o;m=p;vva(a);Qb(m|0)}function BH(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121304,19);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,72,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function CH(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121296,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,71,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function DH(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115046,19);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,73,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function EH(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77521,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,35,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0);return 0}function FH(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121282,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,36,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0);return 0}function GH(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121179,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,37,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function HH(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121166,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,39,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function IH(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77428,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121153,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,38,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function JH(a){a=a|0;return 737}function KH(a){a=a|0;return 1}function LH(a){a=a|0;return k[a+12>>2]|0}function MH(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;k[a>>2]=33316;k[a+4>>2]=b;k[a+8>>2]=0;B=0;b=ya(423,36)|0;c=B;B=0;if(c&1){c=Rb()|0;d=Q;e=c;Qb(e|0)}B=0;va(486,b|0);c=B;B=0;if(!(c&1)){k[a+12>>2]=b;k[a+16>>2]=0;return}a=Rb()|0;c=Q;Sqa(b);d=c;e=a;Qb(e|0)}function NH(a){a=a|0;var b=0,c=0;k[a>>2]=33316;b=a+16|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=k[a+12>>2]|0;if(!b)return;jC(b);Sqa(b);return}function OH(a){a=a|0;var b=0,c=0;k[a>>2]=33316;b=a+16|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=k[a+12>>2]|0;if(!b){Sqa(a);return}jC(b);Sqa(b);Sqa(a);return}function PH(a){a=a|0;Ec[k[(k[a>>2]|0)+12>>2]&1023](a);return}function QH(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0;b=r;r=r+1072|0;c=b+1052|0;d=b+880|0;e=b+1040|0;f=b+728|0;g=b+1028|0;h=b+592|0;i=b+1016|0;j=b+440|0;l=b+864|0;m=b+304|0;n=b+576|0;o=b+168|0;p=b+152|0;q=b+16|0;s=b;t=d+56|0;u=d+4|0;k[d>>2]=27524;k[t>>2]=27544;B=0;wa(508,d+56|0,u|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;x=v;vva(t);Qb(x|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[t>>2]=27488;B=0;va(448,u|0);v=B;B=0;do if(v&1){y=Rb()|0;z=Q;A=y}else{k[u>>2]=27560;y=d+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,u|0,c|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(c);Yua(y);Ava(u);z=D;A=C;break}Yua(c);B=0;Ia(40,d|0,77551,14)|0;C=B;B=0;do if(!(C&1)?(B=0,wa(510,e|0,u|0),D=B,B=0,!(D&1)):0){B=0;ya(424,e|0)|0;D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(e);F=E;G=D;break}Yua(e);k[d>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(t);D=f+56|0;E=f+4|0;k[f>>2]=27524;k[D>>2]=27544;B=0;wa(508,f+56|0,E|0);H=B;B=0;if(H&1){H=Rb()|0;I=Q;J=H;vva(D);Qb(J|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[D>>2]=27488;B=0;va(448,E|0);H=B;B=0;do if(H&1){K=Rb()|0;L=Q;M=K}else{k[E>>2]=27560;K=f+36|0;k[K>>2]=0;k[K+4>>2]=0;k[K+8>>2]=0;k[K+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,E|0,c|0);N=B;B=0;if(N&1){N=Rb()|0;O=Q;Yua(c);Yua(K);Ava(E);L=O;M=N;break}Yua(c);B=0;N=Ia(40,f|0,85228,9)|0;O=B;B=0;do if((((((!(O&1)?(P=a+4|0,B=0,R=Xa(242,N|0,k[P>>2]|0)|0,S=B,B=0,!(S&1)):0)?(B=0,S=Ia(40,R|0,144166,2)|0,R=B,B=0,!(R&1)):0)?(B=0,R=ya(427,k[P>>2]|0)|0,P=B,B=0,!(P&1)):0)?(P=Lta(R)|0,B=0,T=Ia(40,S|0,R|0,P|0)|0,P=B,B=0,!(P&1)):0)?(B=0,Ia(40,T|0,145593,2)|0,T=B,B=0,!(T&1)):0)?(B=0,wa(510,g|0,E|0),T=B,B=0,!(T&1)):0){B=0;ya(424,g|0)|0;T=B;B=0;if(T&1){T=Rb()|0;P=Q;Yua(g);U=P;V=T;break}Yua(g);k[f>>2]=27468;k[D>>2]=27488;k[E>>2]=27560;Yua(K);Ava(E);vva(D);T=h+56|0;P=h+4|0;k[h>>2]=27524;k[T>>2]=27544;B=0;wa(508,h+56|0,P|0);R=B;B=0;if(R&1){R=Rb()|0;W=Q;X=R;vva(T);Qb(X|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[T>>2]=27488;B=0;va(448,P|0);R=B;B=0;do if(R&1){S=Rb()|0;Y=Q;Z=S}else{k[P>>2]=27560;S=h+36|0;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,P|0,c|0);_=B;B=0;if(_&1){_=Rb()|0;$=Q;Yua(c);Yua(S);Ava(P);Y=$;Z=_;break}Yua(c);B=0;_=Ia(40,h|0,77566,10)|0;$=B;B=0;do if($&1)aa=69;else{ba=a+8|0;B=0;ca=Xa(242,_|0,k[ba>>2]|0)|0;da=B;B=0;if(da&1){aa=69;break}B=0;Ia(40,ca|0,149177,1)|0;ca=B;B=0;if(ca&1){aa=69;break}B=0;wa(510,i|0,P|0);ca=B;B=0;if(ca&1){aa=69;break}B=0;ya(424,i|0)|0;ca=B;B=0;if(ca&1){ca=Rb()|0;da=Q;Yua(i);ea=da;fa=ca;break}Yua(i);k[h>>2]=27468;k[T>>2]=27488;k[P>>2]=27560;Yua(S);Ava(P);vva(T);ca=j+56|0;da=j+4|0;k[j>>2]=27524;k[ca>>2]=27544;B=0;wa(508,j+56|0,da|0);ga=B;B=0;if(ga&1){ga=Rb()|0;ha=Q;ia=ga;vva(ca);Qb(ia|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[ca>>2]=27488;B=0;va(448,da|0);ga=B;B=0;do if(ga&1){ja=Rb()|0;ka=Q;la=ja}else{k[da>>2]=27560;ja=j+36|0;k[ja>>2]=0;k[ja+4>>2]=0;k[ja+8>>2]=0;k[ja+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,da|0,c|0);ma=B;B=0;if(ma&1){ma=Rb()|0;na=Q;Yua(c);Yua(ja);Ava(da);ka=na;la=ma;break}Yua(c);B=0;Ia(40,j|0,142701,11)|0;ma=B;B=0;do if(ma&1)aa=72;else{B=0;wa(510,l|0,da|0);na=B;B=0;if(na&1){aa=72;break}B=0;ya(424,l|0)|0;na=B;B=0;if(na&1){na=Rb()|0;oa=Q;Yua(l);pa=oa;qa=na;break}Yua(l);k[j>>2]=27468;k[ca>>2]=27488;k[da>>2]=27560;Yua(ja);Ava(da);vva(ca);a:do if((k[ba>>2]|0)>0){na=m+56|0;oa=m+4|0;ra=m+56|0;sa=m+128|0;ta=m+132|0;ua=m+36|0;xa=m+52|0;za=a+16|0;Aa=0;while(1){k[m>>2]=27524;k[na>>2]=27544;B=0;wa(508,ra|0,oa|0);Ba=B;B=0;if(Ba&1){aa=79;break}k[sa>>2]=0;k[ta>>2]=-1;k[m>>2]=27468;k[na>>2]=27488;B=0;va(448,oa|0);Ba=B;B=0;if(Ba&1){aa=80;break}k[oa>>2]=27560;k[ua>>2]=0;k[ua+4>>2]=0;k[ua+8>>2]=0;k[ua+12>>2]=0;k[xa>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,oa|0,c|0);Ba=B;B=0;if(Ba&1){aa=78;break}Yua(c);B=0;Ba=Xa(242,m|0,k[(k[za>>2]|0)+(Aa<<2)>>2]|0)|0;Ca=B;B=0;if(Ca&1){aa=88;break}B=0;Ia(40,Ba|0,149175,1)|0;Ba=B;B=0;if(Ba&1){aa=88;break}B=0;wa(510,n|0,oa|0);Ba=B;B=0;if(Ba&1){aa=88;break}B=0;ya(424,n|0)|0;Ba=B;B=0;if(Ba&1){aa=89;break}Yua(n);k[m>>2]=27468;k[na>>2]=27488;k[oa>>2]=27560;Yua(ua);Ava(oa);vva(na);Aa=Aa+1|0;if((Aa|0)>=(k[ba>>2]|0))break a}if((aa|0)==78){Aa=Rb()|0;za=Q;Yua(c);Yua(ua);Ava(oa);Da=za;Ea=Aa;aa=81}else if((aa|0)==79){Aa=Rb()|0;Fa=Q;Ga=Aa;vva(na);Qb(Ga|0)}else if((aa|0)==80){Aa=Rb()|0;Da=Q;Ea=Aa;aa=81}else if((aa|0)==88){Aa=Rb()|0;Ha=Q;Ja=Aa;aa=90}else if((aa|0)==89){Aa=Rb()|0;za=Q;Yua(n);Ha=za;Ja=Aa;aa=90}if((aa|0)==81){Fa=Da;Ga=Ea;vva(na);Qb(Ga|0)}else if((aa|0)==90){k[m>>2]=27468;k[na>>2]=27488;k[oa>>2]=27560;Yua(ua);Ava(oa);vva(na);Ka=Ha;La=Ja;Qb(La|0)}}while(0);Aa=o+56|0;za=o+4|0;k[o>>2]=27524;k[Aa>>2]=27544;B=0;wa(508,o+56|0,za|0);xa=B;B=0;if(xa&1){xa=Rb()|0;Ma=Q;Na=xa;vva(Aa);Qb(Na|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[Aa>>2]=27488;B=0;va(448,za|0);xa=B;B=0;do if(xa&1){ta=Rb()|0;Oa=Q;Pa=ta}else{k[za>>2]=27560;ta=o+36|0;k[ta>>2]=0;k[ta+4>>2]=0;k[ta+8>>2]=0;k[ta+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,za|0,c|0);sa=B;B=0;if(sa&1){sa=Rb()|0;ra=Q;Yua(c);Yua(ta);Ava(za);Oa=ra;Pa=sa;break}Yua(c);B=0;Ia(40,o|0,149177,1)|0;sa=B;B=0;do if(sa&1)aa=105;else{B=0;wa(510,p|0,za|0);ra=B;B=0;if(ra&1){aa=105;break}B=0;ya(424,p|0)|0;ra=B;B=0;if(ra&1){ra=Rb()|0;Ba=Q;Yua(p);Qa=Ba;Ra=ra;break}Yua(p);k[o>>2]=27468;k[Aa>>2]=27488;k[za>>2]=27560;Yua(ta);Ava(za);vva(Aa);ra=q+56|0;Ba=q+4|0;k[q>>2]=27524;k[ra>>2]=27544;B=0;wa(508,q+56|0,Ba|0);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Sa=Q;Ta=Ca;vva(ra);Qb(Ta|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[ra>>2]=27488;B=0;va(448,Ba|0);Ca=B;B=0;do if(Ca&1){Ua=Rb()|0;Va=Q;Wa=Ua}else{k[Ba>>2]=27560;Ua=q+36|0;k[Ua>>2]=0;k[Ua+4>>2]=0;k[Ua+8>>2]=0;k[Ua+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ba|0,c|0);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;Za=Q;Yua(c);Yua(Ua);Ava(Ba);Va=Za;Wa=Ya;break}Yua(c);B=0;Ia(40,q|0,77577,12)|0;Ya=B;B=0;do if(!(Ya&1)){B=0;wa(510,s|0,Ba|0);Za=B;B=0;if(Za&1){aa=108;break}B=0;ya(424,s|0)|0;Za=B;B=0;if(Za&1){Za=Rb()|0;_a=Q;Yua(s);$a=_a;ab=Za;break}else{Yua(s);k[q>>2]=27468;k[ra>>2]=27488;k[Ba>>2]=27560;Yua(Ua);Ava(Ba);vva(ra);oh(k[a+12>>2]|0);r=b;return}}else aa=108;while(0);if((aa|0)==108){Ya=Rb()|0;$a=Q;ab=Ya}k[q>>2]=27468;k[ra>>2]=27488;k[Ba>>2]=27560;Yua(Ua);Ava(Ba);vva(ra);Ka=$a;La=ab;Qb(La|0)}while(0);Sa=Va;Ta=Wa;vva(ra);Qb(Ta|0)}while(0);if((aa|0)==105){sa=Rb()|0;Qa=Q;Ra=sa}k[o>>2]=27468;k[Aa>>2]=27488;k[za>>2]=27560;Yua(ta);Ava(za);vva(Aa);Ka=Qa;La=Ra;Qb(La|0)}while(0);Ma=Oa;Na=Pa;vva(Aa);Qb(Na|0)}while(0);if((aa|0)==72){ma=Rb()|0;pa=Q;qa=ma}k[j>>2]=27468;k[ca>>2]=27488;k[da>>2]=27560;Yua(ja);Ava(da);vva(ca);Ka=pa;La=qa;Qb(La|0)}while(0);ha=ka;ia=la;vva(ca);Qb(ia|0)}while(0);if((aa|0)==69){_=Rb()|0;ea=Q;fa=_}k[h>>2]=27468;k[T>>2]=27488;k[P>>2]=27560;Yua(S);Ava(P);vva(T);Ka=ea;La=fa;Qb(La|0)}while(0);W=Y;X=Z;vva(T);Qb(X|0)}else aa=66;while(0);if((aa|0)==66){N=Rb()|0;U=Q;V=N}k[f>>2]=27468;k[D>>2]=27488;k[E>>2]=27560;Yua(K);Ava(E);vva(D);Ka=U;La=V;Qb(La|0)}while(0);I=L;J=M;vva(D);Qb(J|0)}else aa=63;while(0);if((aa|0)==63){C=Rb()|0;F=Q;G=C}k[d>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(t);Ka=F;La=G;Qb(La|0)}while(0);w=z;x=A;vva(t);Qb(x|0)}function RH(a){a=a|0;return -1}function SH(a){a=a|0;return 560}function TH(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=Qqa(20)|0;k[b>>2]=33316;c=b+12|0;k[c>>2]=0;k[b+4>>2]=k[a+4>>2];d=k[a+8>>2]|0;k[b+8>>2]=d;e=Rqa(d>>>0>1073741823?-1:d<<2)|0;k[b+16>>2]=e;f=k[a+16>>2]|0;if(!f)yb(142353,77590,137,142345);if(!d){g=a+12|0;h=k[g>>2]|0;i=hh(h)|0;k[c>>2]=i;return b|0}else j=0;do{k[e+(j<<2)>>2]=k[f+(j<<2)>>2];j=j+1|0}while((j|0)!=(d|0));g=a+12|0;h=k[g>>2]|0;i=hh(h)|0;k[c>>2]=i;return b|0}function UH(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{n=k[b>>2]|0;i[n>>0]=48;i[n+1>>0]=2;i[n+2>>0]=0;i[n+3>>0]=0;n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+4|0;p=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[n>>0]=p;i[n+1>>0]=p>>8;i[n+2>>0]=p>>16;i[n+3>>0]=p>>24;p=(k[b>>2]|0)+4|0;k[b>>2]=p;n=a+8|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[p>>0]=o;i[p+1>>0]=o>>8;i[p+2>>0]=o>>16;i[p+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;p=a+16|0;q=(k[p>>2]|0)==0;i[o>>0]=q&1;o=(k[b>>2]|0)+1|0;k[b>>2]=o;if(q){s=a+12|0;t=k[s>>2]|0;lh(t,b,c,d);r=e;return}TEa(o|0,k[p>>2]|0,k[n>>2]<<2|0)|0;k[b>>2]=(k[b>>2]|0)+(k[n>>2]<<2);s=a+12|0;t=k[s>>2]|0;lh(t,b,c,d);r=e;return}case 2:{n=(k[a+16>>2]|0)==0;p=(k[c>>2]|0)+13|0;k[c>>2]=p;if(n){s=a+12|0;t=k[s>>2]|0;lh(t,b,c,d);r=e;return}k[c>>2]=p+(k[a+8>>2]<<2);s=a+12|0;t=k[s>>2]|0;lh(t,b,c,d);r=e;return}case 1:{p=(k[b>>2]|0)+4|0;k[b>>2]=p;n=a+4|0;o=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;i[n>>0]=o;i[n+1>>0]=o>>8;i[n+2>>0]=o>>16;i[n+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;n=a+8|0;p=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[n>>0]=p;i[n+1>>0]=p>>8;i[n+2>>0]=p>>16;i[n+3>>0]=p>>24;n=k[b>>2]|0;o=n+4|0;k[b>>2]=o;q=i[o>>0]|0;k[b>>2]=n+5;if(!(q&1)){q=Rqa(p>>>0>1073741823?-1:p<<2)|0;k[a+16>>2]=q;n=k[b>>2]|0;o=p<<2;TEa(q|0,n|0,o|0)|0;k[b>>2]=n+o}o=Qqa(36)|0;B=0;va(486,o|0);n=B;B=0;if(n&1){n=Rb()|0;q=Q;Sqa(o);u=q;v=n;Qb(v|0)}else{k[a+12>>2]=o;s=a+12|0;t=k[s>>2]|0;lh(t,b,c,d);r=e;return}break}default:{e=g+56|0;d=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,d|0);c=B;B=0;if(c&1){c=Rb()|0;w=Q;x=c;vva(e);Qb(x|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,d|0);c=B;B=0;do if(c&1){b=Rb()|0;y=Q;z=b}else{k[d>>2]=27560;b=g+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,d|0,f|0);t=B;B=0;if(t&1){t=Rb()|0;s=Q;Yua(f);Yua(b);Ava(d);y=s;z=t;break}Yua(f);B=0;t=Ia(40,g|0,143951,43)|0;s=B;B=0;a:do if(!(s&1)?(B=0,Xa(239,t|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,h|0,77683,78);o=B;B=0;do if(!(o&1)){B=0;eb(502,j|0,149525,8);n=B;B=0;if(n&1){n=Rb()|0;q=Q;Yua(h);A=q;C=n;break}B=0;wa(510,m|0,d|0);n=B;B=0;if(n&1){n=Rb()|0;D=Q;E=n;F=1}else{B=0;ua(163,a|0,h|0,j|0,77,m|0);n=B;B=0;if(n&1)G=1;else{B=0;eb(503,a|0,1240,229);B=0;G=0}n=Rb()|0;q=Q;Yua(m);D=q;E=n;F=G}Yua(j);Yua(h);if(F){A=D;C=E}else{H=D;I=E;break a}}else{n=Rb()|0;A=Q;C=n}while(0);zb(a|0);H=A;I=C}else J=17;while(0);if((J|0)==17){t=Rb()|0;H=Q;I=t}k[g>>2]=27468;k[e>>2]=27488;k[d>>2]=27560;Yua(b);Ava(d);vva(e);u=H;v=I;Qb(v|0)}while(0);w=y;x=z;vva(e);Qb(x|0)}}}function VH(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=Qqa(20)|0;k[e>>2]=33316;k[e+4>>2]=k[a+4>>2];f=uC(k[a+12>>2]|0,b,c,d)|0;k[e+12>>2]=f;f=k[a+8>>2]|0;k[e+8>>2]=f;d=Rqa(f>>>0>1073741823?-1:f<<2)|0;k[e+16>>2]=d;c=k[a+16>>2]|0;if(!c)yb(142353,77590,137,142345);if(!f)return e|0;else g=0;do{k[d+(g<<2)>>2]=k[c+(g<<2)>>2];g=g+1|0}while((g|0)!=(f|0));return e|0}function WH(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=Qqa(20)|0;k[d>>2]=33316;k[d+4>>2]=k[a+4>>2];e=vC(k[a+12>>2]|0,b,c)|0;k[d+12>>2]=e;e=k[a+8>>2]|0;k[d+8>>2]=e;c=Rqa(e>>>0>1073741823?-1:e<<2)|0;k[d+16>>2]=c;b=k[a+16>>2]|0;if(!b)yb(142353,77590,137,142345);if(!e)return d|0;else f=0;do{k[c+(f<<2)>>2]=k[b+(f<<2)>>2];f=f+1|0}while((f|0)!=(e|0));return d|0}function XH(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=a+8|0;e=k[d>>2]|0;if((e|0)>0){f=Rqa(e>>>0>1073741823?-1:e<<2)|0;g=a+16|0;h=k[g>>2]|0;if(!h)yb(142353,77590,137,142345);else i=0;do{k[f+(i<<2)>>2]=k[h+(i<<2)>>2];i=i+1|0}while((i|0)!=(e|0));Tqa(h);h=k[d>>2]|0;k[g>>2]=0;j=g;l=h;m=f}else{j=a+16|0;l=e;m=0}e=l+1|0;k[d>>2]=e;f=Rqa(e>>>0>1073741823?-1:e<<2)|0;k[j>>2]=f;if((l|0)<=0){n=e;o=f;p=n+-1|0;q=o+(p<<2)|0;k[q>>2]=c;r=a+12|0;s=k[r>>2]|0;ih(s,b)|0;return}if(!m)yb(142353,77590,137,142345);TEa(f|0,m|0,(e<<2)+-4|0)|0;Tqa(m);n=k[d>>2]|0;o=k[j>>2]|0;p=n+-1|0;q=o+(p<<2)|0;k[q>>2]=c;r=a+12|0;s=k[r>>2]|0;ih(s,b)|0;return}function YH(a){a=a|0;return k[a+4>>2]|0}function ZH(a,b){a=a|0;b=b|0;return}function _H(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;i=e+12|0;j=e;l=k[a+8>>2]|0;if((l|0)>0){m=k[a+16>>2]|0;n=0;o=-1;while(1){p=(k[m+(n<<2)>>2]|0)==(d|0)?n:o;n=n+1|0;if((n|0)>=(l|0)){q=p;break}else o=p}if((q|0)>=0){o=qh(k[a+12>>2]|0,q)|0;nd[k[(k[o>>2]|0)+48>>2]&1023](o,b,c);r=e;return}}e=g+56|0;c=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;s=Q;t=b;vva(e);Qb(t|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,c|0);b=B;B=0;do if(b&1){o=Rb()|0;u=Q;v=o}else{k[c>>2]=27560;o=g+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,c|0,f|0);q=B;B=0;if(q&1){q=Rb()|0;a=Q;Yua(f);Yua(o);Ava(c);u=a;v=q;break}Yua(f);B=0;q=Ia(40,g|0,77762,27)|0;a=B;B=0;if((!(a&1)?(B=0,a=Xa(242,q|0,d|0)|0,q=B,B=0,!(q&1)):0)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,h|0,77683,78);q=B;B=0;do if(!(q&1)){B=0;eb(502,i|0,121355,13);l=B;B=0;if(l&1){l=Rb()|0;n=Q;Yua(h);w=n;x=l;break}B=0;wa(510,j|0,c|0);l=B;B=0;if(l&1){l=Rb()|0;y=Q;z=l;A=1}else{B=0;ua(163,a|0,h|0,i|0,169,j|0);l=B;B=0;if(l&1)C=1;else{B=0;eb(503,a|0,1240,229);B=0;C=0}l=Rb()|0;n=Q;Yua(j);y=n;z=l;A=C}Yua(i);Yua(h);if(A){w=y;x=z}else{D=y;E=z;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(o);Ava(c);vva(e);Qb(E|0)}}else{l=Rb()|0;w=Q;x=l}while(0);zb(a|0);D=w;E=x;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(o);Ava(c);vva(e);Qb(E|0)}q=Rb()|0;D=Q;E=q;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(o);Ava(c);vva(e);Qb(E|0)}while(0);s=u;t=v;vva(e);Qb(t|0)}function $H(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,48,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function aI(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,49,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function bI(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,50,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function cI(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,51,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function dI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;e=c+24|0;f=c+12|0;g=c;c=a+56|0;h=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=a+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,a|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,77790,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,121355,13);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,52,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[a>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(E|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function eI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77964,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,54,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function fI(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77948,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,55,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function gI(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121324,30);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,56,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function hI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,120910,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,57,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function iI(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,a|0,77790,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,120878,31);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(a);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,a|0,f|0,58,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(a);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(E|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function jI(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115254,10);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,59,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function kI(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115244,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,60,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function lI(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,77790,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,115231,12);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,61,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function mI(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115218,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,67,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function nI(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115211,6);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,69,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function oI(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115204,6);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,71,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function pI(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115200,3);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,68,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function qI(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77944,3);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,70,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function rI(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,120763,23)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,77790,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,120874,3);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,62,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function sI(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,77790,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,115194,5);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,63,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function tI(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;a=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,77790,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,121097,4);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,64,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(E|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function uI(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;a=r;r=r+192|0;d=a+176|0;e=a+40|0;f=a+24|0;g=a+12|0;h=a;a=e+56|0;i=e+4|0;k[e>>2]=27524;k[a>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(a);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[a>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,149721,19)|0;s=B;B=0;a:do if(!(s&1)?(B=0,Xa(239,q|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,77790,88);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,118419,9);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(f);x=w;y=v;break}B=0;wa(510,h|0,i|0);v=B;B=0;if(v&1){v=Rb()|0;z=Q;A=v;C=1}else{B=0;ua(163,t|0,f|0,g|0,66,h|0);v=B;B=0;if(v&1)D=1;else{B=0;eb(503,t|0,1240,229);B=0;D=0}v=Rb()|0;w=Q;Yua(h);z=w;A=v;C=D}Yua(g);Yua(f);if(C){x=z;y=A}else{E=z;F=A;break a}}else{v=Rb()|0;x=Q;y=v}while(0);zb(t|0);E=x;F=y}else G=16;while(0);if((G|0)==16){q=Rb()|0;E=Q;F=q}k[e>>2]=27468;k[a>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(a);Qb(F|0)}while(0);l=o;m=p;vva(a);Qb(m|0)}function vI(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121304,19);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,73,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function wI(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121296,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,72,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function xI(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115046,19);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,74,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function yI(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121179,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,41,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function zI(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121166,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,43,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function AI(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121153,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,42,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function BI(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77921,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,75,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function CI(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77898,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,76,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function DI(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,77879,18);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,77,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function EI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,77790,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115180,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,78,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function FI(a){a=a|0;gh(a);k[a+12>>2]=548;return}function GI(a){a=a|0;jh(a);return}function HI(a){a=a|0;var b=0,c=0,d=0;b=k[a>>2]|0;c=a+4|0;if(b>>>0<(k[c>>2]|0)>>>0)d=b;else return;do{b=k[d>>2]|0;Ec[k[(k[b>>2]|0)+104>>2]&1023](b);d=d+4|0}while(d>>>0<(k[c>>2]|0)>>>0);return}function II(a){a=a|0;k[a>>2]=33508;k[a+4>>2]=33672;k[a+16>>2]=0;k[a+20>>2]=0;i[a+12>>0]=0;return}function JI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0;e=r;r=r+208|0;f=e+184|0;g=e+180|0;h=e+176|0;j=e+40|0;l=e+24|0;m=e+12|0;n=e;k[a>>2]=33508;k[a+4>>2]=33672;k[a+8>>2]=b;k[g>>2]=c+1;B=0;c=ya(423,16)|0;b=B;B=0;a:do if(!(b&1)){B=0;eb(509,c|0,g|0,1);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Sqa(c);q=p;s=o;Qb(s|0)}k[a+16>>2]=c;k[a+20>>2]=0;B=0;eb(512,d|0,h|0,127514);o=B;B=0;if(!(o&1))switch(k[h>>2]|0){case 584:{i[a+12>>0]=1;r=e;return}case 583:{i[a+12>>0]=0;r=e;return}default:{o=j+56|0;p=j+4|0;k[j>>2]=27524;k[o>>2]=27544;B=0;wa(508,j+56|0,p|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;v=t}else{k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[o>>2]=27488;B=0;va(448,p|0);t=B;B=0;do if(t&1){w=Rb()|0;x=Q;y=w}else{k[p>>2]=27560;w=j+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[j+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,p|0,f|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(f);Yua(w);Ava(p);x=A;y=z;break}Yua(f);B=0;z=Ia(40,j|0,77996,28)|0;A=B;B=0;b:do if(!(A&1)?(B=0,Xa(239,z|0,0)|0,C=B,B=0,!(C&1)):0){C=Ab(20)|0;B=0;eb(502,l|0,78025,75);D=B;B=0;do if(!(D&1)){B=0;eb(502,m|0,98486,6);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(l);G=F;H=E;break}B=0;wa(510,n|0,p|0);E=B;B=0;if(E&1){E=Rb()|0;I=Q;J=E;K=1}else{B=0;ua(163,C|0,l|0,m|0,54,n|0);E=B;B=0;if(E&1)L=1;else{B=0;eb(503,C|0,1240,229);B=0;L=0}E=Rb()|0;F=Q;Yua(n);I=F;J=E;K=L}Yua(m);Yua(l);if(K){G=I;H=J}else{M=I;N=J;break b}}else{E=Rb()|0;G=Q;H=E}while(0);zb(C|0);M=G;N=H}else O=25;while(0);if((O|0)==25){z=Rb()|0;M=Q;N=z}k[j>>2]=27468;k[o>>2]=27488;k[p>>2]=27560;Yua(w);Ava(p);vva(o);q=M;s=N;Qb(s|0)}while(0);u=x;v=y}vva(o);P=u;R=v;break a}}else O=6}else O=6;while(0);if((O|0)==6){O=Rb()|0;P=Q;R=O}q=P;s=R;Qb(s|0)}function KI(a){a=a|0;var b=0;k[a>>2]=33508;k[a+4>>2]=33672;b=k[a+16>>2]|0;if(!b)return;yla(b);Sqa(b);return}function LI(a){a=a|0;var b=0;k[a>>2]=33508;k[a+4>>2]=33672;b=k[a+16>>2]|0;if(!b){Sqa(a);return}yla(b);Sqa(b);Sqa(a);return}function MI(a){a=a|0;var b=0,c=0,d=0;b=Qqa(24)|0;k[b>>2]=33508;k[b+4>>2]=33672;k[b+8>>2]=k[a+8>>2];c=a+16|0;d=Bla(k[c>>2]|0)|0;k[b+16>>2]=d;d=Fla(k[c>>2]|0)|0;k[b+20>>2]=d;i[b+12>>0]=i[a+12>>0]|0;return b|0}function NI(a,b){a=a|0;b=b|0;var c=0,d=0;c=Qqa(24)|0;k[c>>2]=33508;k[c+4>>2]=33672;k[c+8>>2]=k[a+8>>2];d=Bla(k[a+16>>2]|0)|0;k[c+16>>2]=d;k[c+20>>2]=b;i[c+12>>0]=i[a+12>>0]|0;return c|0}function OI(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=d+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(p);Ava(l);q=u;s=t;break}Yua(c);B=0;Ia(40,d|0,78101,8)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,e|0,l|0),u=B,B=0,!(u&1)):0){B=0;ya(424,e|0)|0;u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);u=f+56|0;v=f+4|0;k[f>>2]=27524;k[u>>2]=27544;B=0;wa(508,f+56|0,v|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(u);Qb(A|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[v>>2]=27560;C=f+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(c);Yua(C);Ava(v);D=G;E=F;break}Yua(c);B=0;F=Ia(40,f|0,143238,8)|0;G=B;B=0;do if(((!(G&1)?(B=0,H=Xa(242,F|0,k[a+8>>2]|0)|0,I=B,B=0,!(I&1)):0)?(B=0,Ia(40,H|0,149177,1)|0,H=B,B=0,!(H&1)):0)?(B=0,wa(510,g|0,v|0),H=B,B=0,!(H&1)):0){B=0;ya(424,g|0)|0;H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(g);J=I;K=H;break}Yua(g);k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);H=h+56|0;I=h+4|0;k[h>>2]=27524;k[H>>2]=27544;B=0;wa(508,h+56|0,I|0);L=B;B=0;if(L&1){L=Rb()|0;M=Q;N=L;vva(H);Qb(N|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[H>>2]=27488;B=0;va(448,I|0);L=B;B=0;do if(L&1){O=Rb()|0;P=Q;R=O}else{k[I>>2]=27560;O=h+36|0;k[O>>2]=0;k[O+4>>2]=0;k[O+8>>2]=0;k[O+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,I|0,c|0);S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(c);Yua(O);Ava(I);P=T;R=S;break}Yua(c);B=0;Ia(40,h|0,143247,12)|0;S=B;B=0;do if(!(S&1)){B=0;wa(510,i|0,I|0);T=B;B=0;if(T&1){U=43;break}B=0;ya(424,i|0)|0;T=B;B=0;if(T&1){T=Rb()|0;V=Q;Yua(i);W=V;X=T;break}else{Yua(i);k[h>>2]=27468;k[H>>2]=27488;k[I>>2]=27560;Yua(O);Ava(I);vva(H);zla(k[a+16>>2]|0);r=b;return}}else U=43;while(0);if((U|0)==43){S=Rb()|0;W=Q;X=S}k[h>>2]=27468;k[H>>2]=27488;k[I>>2]=27560;Yua(O);Ava(I);vva(H);Y=W;Z=X;Qb(Z|0)}while(0);M=P;N=R;vva(H);Qb(N|0)}else U=40;while(0);if((U|0)==40){F=Rb()|0;J=Q;K=F}k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);Y=J;Z=K;Qb(Z|0)}while(0);z=D;A=E;vva(u);Qb(A|0)}else U=37;while(0);if((U|0)==37){t=Rb()|0;w=Q;x=t}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Y=w;Z=x;Qb(Z|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}function PI(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=d+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(p);Ava(l);q=u;s=t;break}Yua(c);B=0;Ia(40,d|0,78101,8)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,e|0,l|0),u=B,B=0,!(u&1)):0){B=0;ya(424,e|0)|0;u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);u=f+56|0;v=f+4|0;k[f>>2]=27524;k[u>>2]=27544;B=0;wa(508,f+56|0,v|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(u);Qb(A|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[v>>2]=27560;C=f+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(c);Yua(C);Ava(v);D=G;E=F;break}Yua(c);B=0;F=Ia(40,f|0,143238,8)|0;G=B;B=0;do if(((!(G&1)?(B=0,H=Xa(242,F|0,k[a+8>>2]|0)|0,I=B,B=0,!(I&1)):0)?(B=0,Ia(40,H|0,149177,1)|0,H=B,B=0,!(H&1)):0)?(B=0,wa(510,g|0,v|0),H=B,B=0,!(H&1)):0){B=0;ya(424,g|0)|0;H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(g);J=I;K=H;break}Yua(g);k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);H=h+56|0;I=h+4|0;k[h>>2]=27524;k[H>>2]=27544;B=0;wa(508,h+56|0,I|0);L=B;B=0;if(L&1){L=Rb()|0;M=Q;N=L;vva(H);Qb(N|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[H>>2]=27488;B=0;va(448,I|0);L=B;B=0;do if(L&1){O=Rb()|0;P=Q;R=O}else{k[I>>2]=27560;O=h+36|0;k[O>>2]=0;k[O+4>>2]=0;k[O+8>>2]=0;k[O+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,I|0,c|0);S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(c);Yua(O);Ava(I);P=T;R=S;break}Yua(c);B=0;Ia(40,h|0,143247,12)|0;S=B;B=0;do if(!(S&1)){B=0;wa(510,i|0,I|0);T=B;B=0;if(T&1){U=43;break}B=0;ya(424,i|0)|0;T=B;B=0;if(T&1){T=Rb()|0;V=Q;Yua(i);W=V;X=T;break}else{Yua(i);k[h>>2]=27468;k[H>>2]=27488;k[I>>2]=27560;Yua(O);Ava(I);vva(H);zla(k[a+16>>2]|0);r=b;return}}else U=43;while(0);if((U|0)==43){S=Rb()|0;W=Q;X=S}k[h>>2]=27468;k[H>>2]=27488;k[I>>2]=27560;Yua(O);Ava(I);vva(H);Y=W;Z=X;Qb(Z|0)}while(0);M=P;N=R;vva(H);Qb(N|0)}else U=40;while(0);if((U|0)==40){F=Rb()|0;J=Q;K=F}k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);Y=J;Z=K;Qb(Z|0)}while(0);z=D;A=E;vva(u);Qb(A|0)}else U=37;while(0);if((U|0)==37){t=Rb()|0;w=Q;x=t}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Y=w;Z=x;Qb(Z|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}function QI(a){a=a|0;return k[a+8>>2]|0}function RI(a){a=a|0;return 583}
+function HY(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;if((a|0)>=0){k[9114]=a;r=b;return}b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,104740,59)|0;q=B;B=0;if(((!(q&1)?(B=0,q=Xa(242,p|0,a|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,q|0,141170,1)|0,q=B,B=0,!(q&1)):0)?(B=0,Xa(239,p|0,0)|0,p=B,B=0,!(p&1)):0){p=Ab(20)|0;B=0;eb(502,e|0,104800,76);q=B;B=0;do if(!(q&1)){B=0;eb(502,f|0,104877,17);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(e);u=t;v=s;break}B=0;wa(510,g|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,p|0,e|0,f|0,36,g|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,p|0,1240,229);B=0;z=0}s=Rb()|0;t=Q;Yua(g);w=t;x=s;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(p|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}q=Rb()|0;A=Q;C=q;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function IY(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=b+8|0;e=c+16|0;f=b+16|0;g=c+8|0;p[a>>3]=+p[d>>3]*+p[e>>3]-+p[f>>3]*+p[g>>3];p[a+8>>3]=+p[f>>3]*+p[c>>3]-+p[b>>3]*+p[e>>3];p[a+16>>3]=+p[b>>3]*+p[g>>3]-+p[d>>3]*+p[c>>3];return}function JY(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=+d;e=e|0;f=f|0;var g=0.0,h=0.0,i=0.0,j=0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0;do if(!(a!=0.0))if(b!=0.0){g=c*.5/b;h=g*g-d/b;if(h>0.0){i=+aa(+h);p[e>>3]=-g-i;p[e+8>>3]=i-g;k[f>>2]=2;j=2;break}k[f>>2]=0;return 0}else{if(c!=0.0){p[e>>3]=d/c;k[f>>2]=1;j=1;break}k[f>>2]=0;return 0}else{g=b/a*.3333333333333333;i=+ba(+(c/a*.3333333333333333-g*g),3.0);h=(+ba(+g,3.0)*2.0-(g*c-d)/a)*-.5;l=i+h*h;if(l<0.0){m=-i;i=+fa(+(+KY(1.0,+LY(-1.0,h/+aa(+m)))));n=+ba(+m,.16666666666666666)*2.0;m=n*+ca(+((i+0.0)*.3333333333333333))-g;o=n*+ca(+((i+6.283185307179586)*.3333333333333333))-g;q=n*+ca(+((i+12.566370614359172)*.3333333333333333))-g;i=+KY(m,+KY(o,q));p[e>>3]=i;i=+KY(m,o);n=+KY(m,q);r=+LY(i,+LY(n,+KY(o,q)));p[e+8>>3]=r;r=+LY(m,+LY(o,q));p[e+16>>3]=r;k[f>>2]=3;j=3;break}r=+aa(+l);l=h+r;if(!(l>0.0))if(l<0.0)s=-+$(+(+ba(+(+$(+l)),.3333333333333333)));else s=0.0;else s=+$(+(+ba(+(+$(+l)),.3333333333333333)));l=h-r;if(!(l>0.0))if(l<0.0)t=-+$(+(+ba(+(+$(+l)),.3333333333333333)));else t=0.0;else t=+$(+(+ba(+(+$(+l)),.3333333333333333)));p[e>>3]=s+t-g;k[f>>2]=1;j=1}while(0);t=b*2.0;f=0;do{u=e+(f<<3)|0;s=+p[u>>3];p[u>>3]=s-(s*(s*(s*a+b)+c)+d)/(s*(t+s*3.0*a)+c);f=f+1|0}while((f|0)<(j|0));return 0}function KY(a,b){a=+a;b=+b;return +(a<b?a:b)}function LY(a,b){a=+a;b=+b;return +(a>b?a:b)}function MY(a,b){a=a|0;b=b|0;return ((a|0)>(b|0)?a:b)|0}function NY(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0;c=+p[b>>3];d=+$(+c);p[t>>3]=d;e=k[t+4>>2]|0;if(((((!(e>>>0>2146435072|(e|0)==2146435072&(k[t>>2]|0)>>>0>0)?(d=+p[b+8>>3],f=+$(+d),p[t>>3]=f,e=k[t+4>>2]|0,!(e>>>0>2146435072|(e|0)==2146435072&(k[t>>2]|0)>>>0>0)):0)?(f=+p[b+16>>3],g=+$(+f),p[t>>3]=g,e=k[t+4>>2]|0,!(e>>>0>2146435072|(e|0)==2146435072&(k[t>>2]|0)>>>0>0)):0)?(g=+p[b+24>>3],h=+$(+g),p[t>>3]=h,e=k[t+4>>2]|0,!(e>>>0>2146435072|(e|0)==2146435072&(k[t>>2]|0)>>>0>0)):0)?(h=+p[b+32>>3],i=+$(+h),p[t>>3]=i,e=k[t+4>>2]|0,!(e>>>0>2146435072|(e|0)==2146435072&(k[t>>2]|0)>>>0>0)):0)?(i=+p[b+40>>3],j=+$(+i),p[t>>3]=j,b=k[t+4>>2]|0,!(b>>>0>2146435072|(b|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){j=f*h-d*i;l=c*i-f*g;m=d*g-c*h;n=+aa(+(c*c+d*d+f*f));o=+aa(+(m*m+(j*j+l*l)));q=+aa(+(g*g+h*h+i*i));p[a>>3]=c/n;p[a+8>>3]=j/o;p[a+16>>3]=g/q;p[a+24>>3]=d/n;p[a+32>>3]=l/o;p[a+40>>3]=h/q;p[a+48>>3]=f/n;p[a+56>>3]=m/o;p[a+64>>3]=i/q;return}p[a>>3]=1.0;b=a+8|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;p[a+32>>3]=1.0;b=a+40|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;p[a+64>>3]=1.0;return}function OY(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0;k[a>>2]=36468;f=k[e+8>>2]|0;g=e+1|0;h=(Lta((i[e>>0]&1)==0?g:f)|0)+1|0;B=0;j=ya(422,((h|0)>-1?h:-1)|0)|0;l=B;B=0;if(l&1){m=Rb()|0;n=Q;Qb(m|0)}k[a+4>>2]=j;TEa(j|0,((i[e>>0]&1)==0?g:f)|0,h|0)|0;h=k[b+8>>2]|0;f=b+1|0;g=(Lta((i[b>>0]&1)==0?f:h)|0)+1|0;B=0;e=ya(422,((g|0)>-1?g:-1)|0)|0;j=B;B=0;if(j&1){m=Rb()|0;n=Q;Qb(m|0)}k[a+12>>2]=e;TEa(e|0,((i[b>>0]&1)==0?f:h)|0,g|0)|0;g=k[c+8>>2]|0;h=c+1|0;f=(Lta((i[c>>0]&1)==0?h:g)|0)+1|0;B=0;b=ya(422,((f|0)>-1?f:-1)|0)|0;e=B;B=0;if(e&1){m=Rb()|0;n=Q;Qb(m|0)}else{k[a+8>>2]=b;TEa(b|0,((i[c>>0]&1)==0?h:g)|0,f|0)|0;k[a+16>>2]=d;return}}function PY(a){a=a|0;var b=0;k[a>>2]=36468;b=k[a+4>>2]|0;if(b)Tqa(b);b=k[a+12>>2]|0;if(b)Tqa(b);b=k[a+8>>2]|0;if(!b)return;Tqa(b);return}function QY(a){a=a|0;var b=0;k[a>>2]=36468;b=k[a+4>>2]|0;if(b)Tqa(b);b=k[a+12>>2]|0;if(b)Tqa(b);b=k[a+8>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function RY(a){a=a|0;return k[a+4>>2]|0}function SY(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0;b=r;r=r+768|0;c=b+752|0;d=b+592|0;e=b+740|0;f=b+456|0;g=b+728|0;h=b+304|0;i=b+440|0;j=b+152|0;l=b+288|0;m=b+16|0;n=b;o=a+8|0;if((k[o>>2]|0)!=0?(p=a+16|0,(k[p>>2]|0)!=0):0){q=vY()|0;if((wY()|0)==1){s=f+56|0;t=f+4|0;k[f>>2]=27524;k[s>>2]=27544;B=0;wa(508,f+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=f+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,t|0,c|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(c);Yua(x);Ava(t);y=C;z=A;break}Yua(c);B=0;A=Ia(40,f|0,104928,18)|0;C=B;B=0;do if(((((!(C&1)?(D=k[a+12>>2]|0,E=Lta(D)|0,B=0,F=Ia(40,A|0,D|0,E|0)|0,E=B,B=0,!(E&1)):0)?(B=0,E=Ia(40,F|0,104947,1)|0,F=B,B=0,!(F&1)):0)?(B=0,F=Xa(242,E|0,k[p>>2]|0)|0,E=B,B=0,!(E&1)):0)?(B=0,Ia(40,F|0,149177,1)|0,F=B,B=0,!(F&1)):0)?(B=0,wa(510,g|0,t|0),F=B,B=0,!(F&1)):0){B=0;ya(424,g|0)|0;F=B;B=0;if(F&1){F=Rb()|0;E=Q;Yua(g);G=F;H=E;break}Yua(g);k[f>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);E=h+56|0;F=h+4|0;k[h>>2]=27524;k[E>>2]=27544;B=0;wa(508,h+56|0,F|0);D=B;B=0;if(D&1){D=Rb()|0;I=Q;J=D;vva(E);Qb(J|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[E>>2]=27488;B=0;va(448,F|0);D=B;B=0;do if(D&1){K=Rb()|0;L=Q;M=K}else{k[F>>2]=27560;K=h+36|0;k[K>>2]=0;k[K+4>>2]=0;k[K+8>>2]=0;k[K+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,F|0,c|0);N=B;B=0;if(N&1){N=Rb()|0;O=Q;Yua(c);Yua(K);Ava(F);L=O;M=N;break}Yua(c);N=k[o>>2]|0;O=Lta(N)|0;B=0;P=Ia(40,h|0,N|0,O|0)|0;O=B;B=0;do if(O&1)R=53;else{B=0;N=Ia(40,P|0,104949,16)|0;S=B;B=0;if(S&1){R=53;break}S=Hc[k[(k[a>>2]|0)+8>>2]&511](a)|0;T=Lta(S)|0;B=0;U=Ia(40,N|0,S|0,T|0)|0;T=B;B=0;if(T&1){R=53;break}B=0;Ia(40,U|0,104966,2)|0;U=B;B=0;if(U&1){R=53;break}B=0;wa(510,i|0,F|0);U=B;B=0;if(U&1){R=53;break}B=0;ya(424,i|0)|0;U=B;B=0;if(U&1){U=Rb()|0;T=Q;Yua(i);V=U;W=T;break}Yua(i);k[h>>2]=27468;k[E>>2]=27488;k[F>>2]=27560;Yua(K);Ava(F);vva(E);r=b;return}while(0);if((R|0)==53){P=Rb()|0;V=P;W=Q}k[h>>2]=27468;k[E>>2]=27488;k[F>>2]=27560;Yua(K);Ava(F);vva(E);X=V;Y=W;Qb(X|0)}while(0);I=L;J=M;vva(E);Qb(J|0)}else R=50;while(0);if((R|0)==50){A=Rb()|0;G=A;H=Q}k[f>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);X=G;Y=H;Qb(X|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}w=j+56|0;s=j+4|0;k[j>>2]=27524;k[w>>2]=27544;B=0;wa(508,j+56|0,s|0);z=B;B=0;if(z&1){z=Rb()|0;Z=Q;_=z;vva(w);Qb(_|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[w>>2]=27488;B=0;va(448,s|0);z=B;B=0;do if(z&1){y=Rb()|0;$=Q;aa=y}else{k[s>>2]=27560;y=j+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,s|0,c|0);v=B;B=0;if(v&1){v=Rb()|0;H=Q;Yua(c);Yua(y);Ava(s);$=H;aa=v;break}Yua(c);B=0;v=Ia(40,j|0,104969,2)|0;H=B;B=0;do if(((((((!(H&1)?(B=0,G=Xa(242,v|0,q|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,G|0,104972,22)|0,G=B,B=0,!(G&1)):0)?(G=k[a+12>>2]|0,f=Lta(G)|0,B=0,J=Ia(40,t|0,G|0,f|0)|0,f=B,B=0,!(f&1)):0)?(B=0,f=Ia(40,J|0,104947,1)|0,J=B,B=0,!(J&1)):0)?(B=0,J=Xa(242,f|0,k[p>>2]|0)|0,f=B,B=0,!(f&1)):0)?(B=0,Ia(40,J|0,149177,1)|0,J=B,B=0,!(J&1)):0)?(B=0,wa(510,l|0,s|0),J=B,B=0,!(J&1)):0){B=0;ya(424,l|0)|0;J=B;B=0;if(J&1){J=Rb()|0;f=Q;Yua(l);ba=J;ca=f;break}Yua(l);k[j>>2]=27468;k[w>>2]=27488;k[s>>2]=27560;Yua(y);Ava(s);vva(w);f=m+56|0;J=m+4|0;k[m>>2]=27524;k[f>>2]=27544;B=0;wa(508,m+56|0,J|0);G=B;B=0;if(G&1){G=Rb()|0;da=Q;ea=G;vva(f);Qb(ea|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[f>>2]=27488;B=0;va(448,J|0);G=B;B=0;do if(G&1){t=Rb()|0;fa=Q;ga=t}else{k[J>>2]=27560;t=m+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,J|0,c|0);M=B;B=0;if(M&1){M=Rb()|0;L=Q;Yua(c);Yua(t);Ava(J);fa=L;ga=M;break}Yua(c);B=0;M=Ia(40,m|0,104995,1)|0;L=B;B=0;do if(L&1)R=94;else{B=0;I=Xa(242,M|0,q|0)|0;W=B;B=0;if(W&1){R=94;break}B=0;W=Ia(40,I|0,104997,2)|0;I=B;B=0;if(I&1){R=94;break}I=k[o>>2]|0;V=Lta(I)|0;B=0;h=Ia(40,W|0,I|0,V|0)|0;V=B;B=0;if(V&1){R=94;break}B=0;V=Ia(40,h|0,104949,16)|0;h=B;B=0;if(h&1){R=94;break}h=Hc[k[(k[a>>2]|0)+8>>2]&511](a)|0;I=Lta(h)|0;B=0;W=Ia(40,V|0,h|0,I|0)|0;I=B;B=0;if(I&1){R=94;break}B=0;Ia(40,W|0,104966,2)|0;W=B;B=0;if(W&1){R=94;break}B=0;wa(510,n|0,J|0);W=B;B=0;if(W&1){R=94;break}B=0;ya(424,n|0)|0;W=B;B=0;if(W&1){W=Rb()|0;I=Q;Yua(n);ha=W;ia=I;break}Yua(n);k[m>>2]=27468;k[f>>2]=27488;k[J>>2]=27560;Yua(t);Ava(J);vva(f);r=b;return}while(0);if((R|0)==94){M=Rb()|0;ha=M;ia=Q}k[m>>2]=27468;k[f>>2]=27488;k[J>>2]=27560;Yua(t);Ava(J);vva(f);X=ha;Y=ia;Qb(X|0)}while(0);da=fa;ea=ga;vva(f);Qb(ea|0)}else R=91;while(0);if((R|0)==91){v=Rb()|0;ba=v;ca=Q}k[j>>2]=27468;k[w>>2]=27488;k[s>>2]=27560;Yua(y);Ava(s);vva(w);X=ba;Y=ca;Qb(X|0)}while(0);Z=$;_=aa;vva(w);Qb(_|0)}_=d+56|0;w=d+4|0;k[d>>2]=27524;k[_>>2]=27544;B=0;wa(508,d+56|0,w|0);aa=B;B=0;if(aa&1){aa=Rb()|0;ja=Q;ka=aa;vva(_);Qb(ka|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[_>>2]=27488;B=0;va(448,w|0);aa=B;B=0;do if(aa&1){$=Rb()|0;la=Q;ma=$}else{k[w>>2]=27560;$=d+36|0;k[$>>2]=0;k[$+4>>2]=0;k[$+8>>2]=0;k[$+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,w|0,c|0);Z=B;B=0;if(Z&1){Z=Rb()|0;ca=Q;Yua(c);Yua($);Ava(w);la=ca;ma=Z;break}Yua(c);B=0;Z=Ia(40,d|0,104912,15)|0;ca=B;B=0;do if((!(ca&1)?(ba=Hc[k[(k[a>>2]|0)+8>>2]&511](a)|0,s=Lta(ba)|0,B=0,Ia(40,Z|0,ba|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,wa(510,e|0,w|0),s=B,B=0,!(s&1)):0){B=0;ya(424,e|0)|0;s=B;B=0;if(s&1){s=Rb()|0;ba=Q;Yua(e);na=s;oa=ba;break}Yua(e);k[d>>2]=27468;k[_>>2]=27488;k[w>>2]=27560;Yua($);Ava(w);vva(_);r=b;return}else R=16;while(0);if((R|0)==16){Z=Rb()|0;na=Z;oa=Q}k[d>>2]=27468;k[_>>2]=27488;k[w>>2]=27560;Yua($);Ava(w);vva(_);X=na;Y=oa;Qb(X|0)}while(0);ja=la;ka=ma;vva(_);Qb(ka|0)}function TY(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0;b=r;r=r+160|0;c=b+136|0;d=b;e=d+56|0;f=d+4|0;k[d>>2]=27524;k[e>>2]=27544;B=0;wa(508,d+56|0,f|0);g=B;B=0;if(g&1){g=Rb()|0;h=Q;j=g;vva(e);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[e>>2]=27488;B=0;va(448,f|0);g=B;B=0;do if(g&1){l=Rb()|0;m=Q;n=l}else{k[f>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,f|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(f);m=p;n=o;break}Yua(c);o=a+8|0;if((k[o>>2]|0)!=0?(p=a+16|0,(k[p>>2]|0)!=0):0){B=0;q=Ia(40,d|0,105e3,14)|0;s=B;B=0;if(((((((!(s&1)?(s=k[a+12>>2]|0,t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,104947,1)|0,u=B,B=0,!(u&1)):0)?(B=0,u=Xa(242,t|0,k[p>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,Ia(40,u|0,149177,1)|0,u=B,B=0,!(u&1)):0)?(u=k[o>>2]|0,o=Lta(u)|0,B=0,p=Ia(40,d|0,u|0,o|0)|0,o=B,B=0,!(o&1)):0)?(B=0,o=Ia(40,p|0,104949,16)|0,p=B,B=0,!(p&1)):0)?(p=k[a+4>>2]|0,u=Lta(p)|0,B=0,Ia(40,o|0,p|0,u|0)|0,u=B,B=0,!(u&1)):0)v=22}else v=11;if(((v|0)==11?(B=0,u=Ia(40,d|0,104949,16)|0,p=B,B=0,!(p&1)):0)?(p=k[a+4>>2]|0,o=Lta(p)|0,B=0,Ia(40,u|0,p|0,o|0)|0,o=B,B=0,!(o&1)):0)v=22;if((v|0)==22?(B=0,wa(510,c|0,f|0),o=B,B=0,!(o&1)):0){o=(i[c>>0]&1)==0?c+1|0:k[c+8>>2]|0;p=(Lta(o)|0)+1|0;B=0;u=ya(422,p|0)|0;p=B;B=0;if(!(p&1)){TEa(u|0,o|0,(Lta(o)|0)+1|0)|0;Yua(c);k[d>>2]=27468;k[e>>2]=27488;k[f>>2]=27560;Yua(l);Ava(f);vva(e);r=b;return u|0}u=Rb()|0;o=Q;Yua(c);w=o;x=u;k[d>>2]=27468;k[e>>2]=27488;k[f>>2]=27560;Yua(l);Ava(f);vva(e);Qb(x|0)}u=Rb()|0;w=Q;x=u;k[d>>2]=27468;k[e>>2]=27488;k[f>>2]=27560;Yua(l);Ava(f);vva(e);Qb(x|0)}while(0);h=m;j=n;vva(e);Qb(j|0);return 0}function UY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=c+(d<<2)|0;if((k[c>>2]|0)==(b|0)){f=1;g=0;k[a>>2]=g;return f|0}h=c+(((d|0)/2|0)<<2)|0;if((k[e+-4>>2]|0)==(b|0)){f=1;g=d+-1|0;k[a>>2]=g;return f|0}a:do if((d|0)<0)i=h;else{j=c;l=e;m=h;while(1){n=j;o=l;p=m;while(1){q=k[p>>2]|0;if((q|0)==(b|0)){i=p;break a}if((q|0)<=(b|0)){r=o;s=p;break}o=p+-4|0;q=j+(((o-n>>2|0)/2|0)<<2)|0;if(j>>>0>o>>>0){i=q;break a}else p=q}p=s+4|0;o=p+(((r-p>>2|0)/2|0)<<2)|0;if(p>>>0>r>>>0){i=o;break}else{j=p;l=r;m=o}}}while(0);if((k[i>>2]|0)!=(b|0)){f=0;g=0;k[a>>2]=g;return f|0}f=1;g=i-c>>2;k[a>>2]=g;return f|0}function VY(a,b,c){a=+a;b=+b;c=+c;var d=0.0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;d=b/c;c=d*d;e=+ba(+d,3.0);f=+ba(+d,4.0);g=+ba(+d,5.0);h=+ba(+d,6.0);i=+ba(+d,7.0);j=+ba(+d,8.0);k=+ba(+d,9.0);l=+ba(+d,10.0);m=1.0-a/b;return +(2.0/+aa(+((b-a)*6.283185307179586))*((.529659-d*22.3235+c*532.074-e*5479.53+f*28592.2-g*81388.6+h*128746.0-i*106246.0+j*35780.7)*+ba(+m,1.5)+(m*(d*6.47583+.246984+c*176.456-e*4058.76+f*37303.8-g*181755.0+h*520551.0-i*904370.0+j*936863.0-k*531940.0+l*127291.0)+((.0719768-d*1.513476-c*61.1001+e*1554.95-f*14583.8+g*71590.7-h*205384.0+i*356469.0-j*368270.0+k*208233.0-l*49544.0)*+aa(+m)+1.0))))}function WY(a,b,c,d,e,f,g,h,i,j,l,m,n,o,q,r,s,t,u){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;i=+i;j=+j;l=+l;m=+m;n=+n;o=+o;q=+q;r=+r;s=+s;t=+t;u=+u;var v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0.0,B=0.0,C=0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ca=0.0,da=0.0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0.0;v=t/u/12.0;u=g*2.5;t=(g+-.5)*2.5;g=u/.02+.5;w=t/.02+.5;x=t+2.0;y=(j-m)/1.0e3;m=q*r+(1.0-r)*o;o=s*.001;s=-t;t=(j-n)/1.0e3+-1.0;n=-(t*l);l=-u;if(t>0.0){t=0.0;j=0.0;r=0.0;z=0;q=0.0;A=0.0;B=0.0;while(1){C=k[36480+(z<<2)>>2]|0;D=a+(C<<3)|0;E=+p[D>>3];F=E-m*+LY(y,o);p[D>>3]=F;E=F*.08333333333333333;G=j+E;if(F<x)if(!(F>=s))H=1.0;else H=+p[d+(~~(w+F/.02)<<3)>>3];else H=0.0;I=+ja(+n);J=v*(I*+p[b+(C<<3)>>3]);I=B+J;K=A+H*J;J=(z+-6|0)>>>0<3?t+F:t;do if(!(F>=u))if(F>l){L=+p[c+(~~(g+F/.02)<<3)>>3];M=r-(F-L)*.08333333333333333;N=q+L*.08333333333333333;break}else{M=r-E;N=q;break}else{M=r;N=q+E}while(0);z=z+1|0;if((z|0)==12){O=J;P=G;Q=M;R=N;S=K;T=I;break}else{t=J;j=G;r=M;q=N;A=K;B=I}}}else{B=0.0;A=0.0;N=0.0;z=0;q=0.0;M=0.0;r=0.0;while(1){C=k[36480+(z<<2)>>2]|0;D=a+(C<<3)|0;j=+p[D>>3];t=j-m*+LY(y,o);p[D>>3]=t;j=t*.08333333333333333;H=A+j;if(t<x)if(!(t>=s))U=1.0;else U=+p[d+(~~(w+t/.02)<<3)>>3];else U=0.0;n=v*+p[b+(C<<3)>>3];E=r+n;F=M+U*n;n=(z+-6|0)>>>0<3?B+t:B;do if(!(t>=u))if(t>l){L=+p[c+(~~(g+t/.02)<<3)>>3];V=N-(t-L)*.08333333333333333;W=q+L*.08333333333333333;break}else{V=N-j;W=q;break}else{V=N;W=q+j}while(0);z=z+1|0;if((z|0)==12){O=n;P=H;Q=V;R=W;S=F;T=E;break}else{B=n;A=H;N=V;q=W;M=F;r=E}}}r=O/3.0;if(!(r<-1.0))if(r<10.0){X=(+ba(+(10.0-r),3.0)*.0067+8.3)*.001*.95;Y=(r*.15+2.8)*.001*.95}else{X=.007885;Y=.004085}else{X=.016359;Y=2.5174999999999998e-03}r=R*365.0;R=r*Y;O=+KY(i,1.5);if(R<S){i=T-S+R;M=(S-R)*2.2;W=+KY(M+Q*(O*.005997014925373134),i);Z=R-W;_=+KY(M,i);$=W}else{W=+KY(Q*(O*.005997014925373134),T);Z=S+X*(r-S/Y)-W;_=0.0;$=W}if(Q>0.0)aa=Q-+KY(($-_)/.008995522388059701,Q)*.5;else aa=Q;if(Z<0.0){ca=+LY(P,-aa);da=S-Z;ea=0.0}else{ca=P;da=S;ea=Z}if(!(ca<0.0)){fa=ea/h;p[e>>3]=fa;ga=da/h;p[f>>3]=ga;ha=da-ea;ia=ha/h;return +ia}fa=ea/h;p[e>>3]=fa;ga=da/h;p[f>>3]=ga;ha=da-ea;ia=ha/h;return +ia}function XY(a,b,c,d,e,f,g,h,i,j,k){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0.0,m=0;l=((c-a)*.006200000000000001+(f-d))/((b-a)*.006200000000000001+(e-d));d=1.0-l;m=0;do{e=+p[g+(m<<3)>>3];p[j+(m<<3)>>3]=l*+p[h+(m<<3)>>3]+d*+p[i+(m<<3)>>3];p[k+(m<<3)>>3]=e;m=m+1|0}while((m|0)!=12);return}function YY(a,b,c,d,e,f,g,h){a=+a;b=+b;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0.0,k=0.0;i=0;do{j=+p[f+(i<<3)>>3];k=j+(+p[e+(i<<3)>>3]-j)*a;j=+KY(1.5,+p[d+(i<<3)>>3]*+ba(+(+p[c+(i<<3)>>3]),+b));p[g+(i<<3)>>3]=k;p[h+(i<<3)>>3]=j;i=i+1|0}while((i|0)!=12);return}function ZY(a,b,c,d,e,f){a=+a;b=+b;c=c|0;d=d|0;e=e|0;f=f|0;var g=0.0;g=(a+34.83)*b;a=+ja(+(.169/b*g));b=+p[c>>3]*a;p[e>>3]=g+ +p[d>>3];p[f>>3]=b;b=+p[c+8>>3]*a;p[e+8>>3]=g+ +p[d+8>>3];p[f+8>>3]=b;b=+p[c+16>>3]*a;p[e+16>>3]=g+ +p[d+16>>3];p[f+16>>3]=b;b=+p[c+24>>3]*a;p[e+24>>3]=g+ +p[d+24>>3];p[f+24>>3]=b;b=+p[c+32>>3]*a;p[e+32>>3]=g+ +p[d+32>>3];p[f+32>>3]=b;b=+p[c+40>>3]*a;p[e+40>>3]=g+ +p[d+40>>3];p[f+40>>3]=b;b=+p[c+48>>3]*a;p[e+48>>3]=g+ +p[d+48>>3];p[f+48>>3]=b;b=+p[c+56>>3]*a;p[e+56>>3]=g+ +p[d+56>>3];p[f+56>>3]=b;b=+p[c+64>>3]*a;p[e+64>>3]=g+ +p[d+64>>3];p[f+64>>3]=b;b=+p[c+72>>3]*a;p[e+72>>3]=g+ +p[d+72>>3];p[f+72>>3]=b;b=+p[c+80>>3]*a;p[e+80>>3]=g+ +p[d+80>>3];p[f+80>>3]=b;b=+p[c+88>>3]*a;p[e+88>>3]=g+ +p[d+88>>3];p[f+88>>3]=b;return}function _Y(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=+c;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;j=j|0;var l=0,m=0,n=0,o=0,q=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0,S=0.0,T=0.0,U=0.0;l=r;r=r+128|0;m=l+96|0;n=l+72|0;o=l;$Y(m,c,d,e,f,g,h,i,j);f=+p[m+16>>3];q=+p[m+8>>3];s=f*d-q*e;p[n>>3]=s;t=+p[m>>3];u=t*e-f*c;m=n+8|0;p[m>>3]=u;e=q*c-t*d;j=n+16|0;p[j>>3]=e;d=+aa(+(e*e+(s*s+u*u)));if(d==0.0){k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;v=0.0;w=0.0;x=1.0}else{c=s/d;p[n>>3]=c;s=u/d;p[m>>3]=s;v=c;w=s;x=e/d}p[j>>3]=x;d=+p[g>>3];p[o>>3]=d;e=(+p[g+8>>3]+ +p[h>>3])*.5;p[o+8>>3]=e;s=(+p[g+16>>3]+ +p[i>>3])*.5;p[o+16>>3]=s;p[o+24>>3]=e;c=+p[h+8>>3];p[o+32>>3]=c;u=(+p[h+16>>3]+ +p[i+8>>3])*.5;p[o+40>>3]=u;p[o+48>>3]=s;p[o+56>>3]=u;y=+p[i+16>>3];p[o+64>>3]=y;z=e*e;A=s*s;B=u*u;C=d*d+0.0+z+A+z+c*c+B+A+B+y*y;B=+aa(+(C==0.0?1.0e-14:C))/1.7320508075688772;C=d*v+0.0+e*w+s*x;A=e*v+0.0+c*w+u*x;c=s*v+0.0+u*w+y*x;y=e;u=s;z=v;D=d;i=0;while(1){E=z*D*v;F=z*y*w;G=z*u*x;H=C-E*v-F*v-G*v;I=A-E*w-F*w-G*w;J=c-E*x-F*x-G*x;h=i+1|0;if((h|0)==3){K=H;L=I;M=J;N=v;O=d;P=e;Q=s;R=0;break}C=H;A=I;c=J;y=+p[o+(h*24|0)+8>>3];u=+p[o+(h*24|0)+16>>3];z=+p[n+(h<<3)>>3];D=+p[o+(h*24|0)>>3];i=h}while(1){D=N*O*t;z=N*P*q;u=N*Q*f;y=K-D*t-z*t-u*t;c=L-D*q-z*q-u*q;A=M-D*f-z*f-u*f;i=R+1|0;if((i|0)==3){S=y;T=c;U=A;break}K=y;L=c;M=A;N=+p[n+(i<<3)>>3];O=+p[o+(i*24|0)>>3];P=+p[o+(i*24|0)+8>>3];Q=+p[o+(i*24|0)+16>>3];R=i}Q=+aa(+(S*S+T*T+U*U));p[a>>3]=B;p[b>>3]=Q;r=l;return}function $Y(a,b,c,d,e,f,g,h,i){a=a|0;b=+b;c=+c;d=+d;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;var j=0.0,l=0,m=0,n=0.0,o=0.0,q=0.0,r=0.0,s=0.0;j=e<1.0e-12?1.0e-12:e;l=i+8|0;m=i+16|0;e=(+p[l>>3]*d-+p[m>>3]*c)*2.0/j-(+p[h+8>>3]-+p[g+16>>3]);p[a>>3]=e;n=(+p[m>>3]*b-+p[i>>3]*d)*2.0/j-(+p[f+16>>3]-+p[h>>3]);h=a+8|0;p[h>>3]=n;o=(+p[i>>3]*c-+p[l>>3]*b)*2.0/j-(+p[g>>3]-+p[f+8>>3]);f=a+16|0;q=b/j*e+c/j*n+d/j*o;r=e-q*b/j;p[a>>3]=r;b=n-q*c/j;p[h>>3]=b;c=o-q*d/j;p[f>>3]=c;j=+aa(+(c*c+(r*r+b*b)));if(j==0.0){k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;s=1.0;p[f>>3]=s;return}else{p[a>>3]=r/j;p[h>>3]=b/j;s=c/j;p[f>>3]=s;return}}function aZ(a,b){a=+a;b=+b;return +(+aa(+(b*2.0*b/(a*3.0*a))))}function bZ(){var a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;a=r;r=r+368|0;b=a+344|0;c=a+208|0;d=a+196|0;e=a+184|0;f=a+36|0;g=a+48|0;h=a+24|0;i=a+12|0;j=a;l=(wY()|0)>1;m=sZ(105015)|0;if(Ita(m,105024)|0)if(Ita(m,105033)|0){if(Ita(m,105043)|0){n=g+56|0;o=g+4|0;k[g>>2]=27524;k[n>>2]=27544;B=0;wa(508,g+56|0,o|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;s=p;vva(n);Qb(s|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[n>>2]=27488;B=0;va(448,o|0);p=B;B=0;do if(p&1){t=Rb()|0;u=Q;v=t}else{k[o>>2]=27560;t=g+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[g+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,o|0,b|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(b);Yua(t);Ava(o);u=x;v=w;break}Yua(b);B=0;w=Ia(40,g|0,145505,30)|0;x=B;B=0;a:do if(!(x&1)?(B=0,Xa(239,w|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,h|0,105116,81);z=B;B=0;do if(!(z&1)){B=0;eb(502,i|0,105198,29);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(h);D=A;E=C;break}B=0;wa(510,j|0,o|0);C=B;B=0;if(C&1){C=Rb()|0;F=1;G=Q;H=C}else{B=0;ua(163,y|0,h|0,i|0,48,j|0);C=B;B=0;if(C&1)I=1;else{B=0;eb(503,y|0,1240,229);B=0;I=0}C=Rb()|0;A=Q;Yua(j);F=I;G=A;H=C}Yua(i);Yua(h);if(F){D=H;E=G}else{J=G;K=H;break a}}else{C=Rb()|0;D=C;E=Q}while(0);zb(y|0);J=E;K=D}else L=43;while(0);if((L|0)==43){w=Rb()|0;J=Q;K=w}k[g>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);M=J;N=K;Qb(N|0)}while(0);q=u;s=v;vva(n);Qb(s|0)}if(l){l=c+56|0;s=c+4|0;k[c>>2]=27524;k[l>>2]=27544;B=0;wa(508,c+56|0,s|0);n=B;B=0;if(n&1){n=Rb()|0;O=Q;P=n;vva(l);Qb(P|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[l>>2]=27488;B=0;va(448,s|0);n=B;B=0;do if(n&1){v=Rb()|0;R=Q;S=v}else{k[s>>2]=27560;v=c+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,s|0,b|0);u=B;B=0;if(u&1){u=Rb()|0;q=Q;Yua(b);Yua(v);Ava(s);R=q;S=u;break}Yua(b);B=0;u=Ia(40,c|0,105049,66)|0;q=B;B=0;b:do if(!(q&1)?(B=0,Xa(239,u|0,0)|0,K=B,B=0,!(K&1)):0){K=Ab(20)|0;B=0;eb(502,d|0,105116,81);J=B;B=0;do if(!(J&1)){B=0;eb(502,e|0,105198,29);o=B;B=0;if(o&1){o=Rb()|0;g=Q;Yua(d);T=o;U=g;break}B=0;wa(510,f|0,s|0);g=B;B=0;if(g&1){g=Rb()|0;V=Q;W=g;X=1}else{B=0;ua(163,K|0,d|0,e|0,45,f|0);g=B;B=0;if(g&1)Y=1;else{B=0;eb(503,K|0,1240,229);B=0;Y=0}g=Rb()|0;o=Q;Yua(f);V=o;W=g;X=Y}Yua(e);Yua(d);if(X){T=W;U=V}else{Z=W;_=V;break b}}else{g=Rb()|0;T=g;U=Q}while(0);zb(K|0);Z=T;_=U}else L=20;while(0);if((L|0)==20){u=Rb()|0;Z=u;_=Q}k[c>>2]=27468;k[l>>2]=27488;k[s>>2]=27560;Yua(v);Ava(s);vva(l);M=_;N=Z;Qb(N|0)}while(0);O=R;P=S;vva(l);Qb(P|0)}else $=973}else $=975;else $=974;if(!m){r=a;return $|0}Tqa(m);r=a;return $|0}function cZ(){var a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;a=r;r=r+368|0;b=a+344|0;c=a+208|0;d=a+196|0;e=a+184|0;f=a+36|0;g=a+48|0;h=a+24|0;i=a+12|0;j=a;l=(wY()|0)>1;m=sZ(105228)|0;if(Ita(m,105237)|0){if(Ita(m,105241)|0){n=g+56|0;o=g+4|0;k[g>>2]=27524;k[n>>2]=27544;B=0;wa(508,g+56|0,o|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;s=p;vva(n);Qb(s|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[n>>2]=27488;B=0;va(448,o|0);p=B;B=0;do if(p&1){t=Rb()|0;u=Q;v=t}else{k[o>>2]=27560;t=g+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[g+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,o|0,b|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(b);Yua(t);Ava(o);u=x;v=w;break}Yua(b);B=0;w=Ia(40,g|0,126703,30)|0;x=B;B=0;a:do if(!(x&1)?(B=0,Xa(239,w|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,h|0,105116,81);z=B;B=0;do if(!(z&1)){B=0;eb(502,i|0,105312,29);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(h);D=A;E=C;break}B=0;wa(510,j|0,o|0);C=B;B=0;if(C&1){C=Rb()|0;F=1;G=Q;H=C}else{B=0;ua(163,y|0,h|0,i|0,78,j|0);C=B;B=0;if(C&1)I=1;else{B=0;eb(503,y|0,1240,229);B=0;I=0}C=Rb()|0;A=Q;Yua(j);F=I;G=A;H=C}Yua(i);Yua(h);if(F){D=H;E=G}else{J=G;K=H;break a}}else{C=Rb()|0;D=C;E=Q}while(0);zb(y|0);J=E;K=D}else L=42;while(0);if((L|0)==42){w=Rb()|0;J=Q;K=w}k[g>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);M=J;N=K;Qb(N|0)}while(0);q=u;s=v;vva(n);Qb(s|0)}if(l){l=c+56|0;s=c+4|0;k[c>>2]=27524;k[l>>2]=27544;B=0;wa(508,c+56|0,s|0);n=B;B=0;if(n&1){n=Rb()|0;O=Q;P=n;vva(l);Qb(P|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[l>>2]=27488;B=0;va(448,s|0);n=B;B=0;do if(n&1){v=Rb()|0;R=Q;S=v}else{k[s>>2]=27560;v=c+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,s|0,b|0);u=B;B=0;if(u&1){u=Rb()|0;q=Q;Yua(b);Yua(v);Ava(s);R=q;S=u;break}Yua(b);B=0;u=Ia(40,c|0,105245,66)|0;q=B;B=0;b:do if(!(q&1)?(B=0,Xa(239,u|0,0)|0,K=B,B=0,!(K&1)):0){K=Ab(20)|0;B=0;eb(502,d|0,105116,81);J=B;B=0;do if(!(J&1)){B=0;eb(502,e|0,105312,29);o=B;B=0;if(o&1){o=Rb()|0;g=Q;Yua(d);T=o;U=g;break}B=0;wa(510,f|0,s|0);g=B;B=0;if(g&1){g=Rb()|0;V=Q;W=g;X=1}else{B=0;ua(163,K|0,d|0,e|0,75,f|0);g=B;B=0;if(g&1)Y=1;else{B=0;eb(503,K|0,1240,229);B=0;Y=0}g=Rb()|0;o=Q;Yua(f);V=o;W=g;X=Y}Yua(e);Yua(d);if(X){T=W;U=V}else{Z=W;_=V;break b}}else{g=Rb()|0;T=g;U=Q}while(0);zb(K|0);Z=T;_=U}else L=19;while(0);if((L|0)==19){u=Rb()|0;Z=u;_=Q}k[c>>2]=27468;k[l>>2]=27488;k[s>>2]=27560;Yua(v);Ava(s);vva(l);M=_;N=Z;Qb(N|0)}while(0);O=R;P=S;vva(l);Qb(P|0)}else $=976}else $=977;if(!m){r=a;return $|0}Tqa(m);r=a;return $|0}function dZ(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;if(!((b|0)==(e|0)|(c|0)==(f|0)))yb(105427,105344,42,105470);switch(c|0){case 4:case 1:{h=c;break}case 2:{h=8;break}default:yb(105342,105344,33,105416)}TEa(d|0,a|0,ma(h,b)|0)|0;return 0}function eZ(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,l=0,m=0;if((c|0)!=(g|0))yb(105489,105344,76,105508);if((k[e>>2]|0)!=(b|0))yb(105528,105344,98,105508);a:do switch(c|0){case 4:case 1:{e=d+(ma(k[f>>2]|0,c)|0)|0;switch(c|0){case 2:{i=e;break a;break}case 4:case 1:{j=c;l=e;m=ma(j,b)|0;TEa(l|0,a|0,m|0)|0;return 0}default:yb(105342,105344,33,105416)}break}case 2:{i=d+(k[f>>2]<<3)|0;break}default:yb(105342,105344,33,105416)}while(0);j=8;l=i;m=ma(j,b)|0;TEa(l|0,a|0,m|0)|0;return 0}function fZ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;switch(d|0){case 4:case 1:{g=d;break}case 2:{g=8;break}default:yb(105342,105344,33,105416)}TEa(b|0,a|0,ma(g,c)|0)|0;return 0}function gZ(a){a=a|0;return 0}function hZ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return 0}function iZ(a,b){a=a|0;b=b|0;k[b>>2]=0;return 0}function jZ(a,b){a=a|0;b=b|0;k[b>>2]=1;return 0}function kZ(){return 0}function lZ(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;if(!((b|0)==(e|0)&(c|0)==(f|0)))yb(105553,105344,230,105592);switch(c|0){case 4:case 1:{i=c;break}case 2:{i=8;break}default:yb(105342,105344,33,105416)}TEa(d|0,a|0,ma(i,b)|0)|0;return 0}function mZ(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return 0}function nZ(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;switch(d|0){case 4:case 1:{h=d;break}case 2:{h=8;break}default:yb(105342,105344,33,105416)}TEa(b|0,a|0,ma(h,c)|0)|0;return 0}function oZ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return 0}function pZ(a){a=a|0;var b=0;b=k[6863]|0;if(b)Tqa(b);k[6863]=0;b=Rqa((Lta(a)|0)+1|0)|0;k[6863]=b;TEa(b|0,a|0,(Lta(a)|0)+1|0)|0;return}function qZ(){return rZ(k[6863]|0,105608)|0}function rZ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;j=Rqa((Lta(a)|0)+1|0)|0;TEa(j|0,a|0,(Lta(a)|0)+1|0)|0;a=Pta(j,149175)|0;l=0;a:while(1){m=a;while(1){if(!m){n=l;o=34;break a}if((i[m>>0]|0)!=45)break a;p=(Ita(m+1|0,b)|0)==0;m=Pta(0,149175)|0;q=(i[m>>0]|0)==45;if(p){o=6;break}if(!q){s=l;break}}do if((o|0)==6){o=0;if(q){p=Rqa(1)|0;i[p>>0]=0;a=m;l=p;continue a}else{p=Rqa((Lta(m)|0)+1|0)|0;TEa(p|0,m|0,(Lta(m)|0)+1|0)|0;s=p;break}}while(0);a=Pta(0,149175)|0;l=s}if((o|0)==34){Tqa(j);r=c;return n|0}n=e+56|0;c=e+4|0;k[e>>2]=27524;k[n>>2]=27544;B=0;wa(508,e+56|0,c|0);j=B;B=0;if(j&1){j=Rb()|0;t=Q;u=j;vva(n);Qb(u|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[n>>2]=27488;B=0;va(448,c|0);j=B;B=0;do if(j&1){o=Rb()|0;v=Q;w=o}else{k[c>>2]=27560;o=e+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,c|0,d|0);s=B;B=0;if(s&1){s=Rb()|0;l=Q;Yua(d);Yua(o);Ava(c);v=l;w=s;break}Yua(d);B=0;s=Ia(40,e|0,105616,51)|0;l=B;B=0;if(!(l&1)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,f|0,105668,74);l=B;B=0;do if(!(l&1)){B=0;eb(502,g|0,105743,10);a=B;B=0;if(a&1){a=Rb()|0;q=Q;Yua(f);x=q;y=a;break}B=0;wa(510,h|0,c|0);a=B;B=0;if(a&1){a=Rb()|0;z=Q;A=a;C=1}else{B=0;ua(163,s|0,f|0,g|0,82,h|0);a=B;B=0;if(a&1)D=1;else{B=0;eb(503,s|0,1240,229);B=0;D=0}a=Rb()|0;q=Q;Yua(h);z=q;A=a;C=D}Yua(g);Yua(f);if(C){x=z;y=A}else{E=z;F=A;k[e>>2]=27468;k[n>>2]=27488;k[c>>2]=27560;Yua(o);Ava(c);vva(n);Qb(F|0)}}else{a=Rb()|0;x=Q;y=a}while(0);zb(s|0);E=x;F=y;k[e>>2]=27468;k[n>>2]=27488;k[c>>2]=27560;Yua(o);Ava(c);vva(n);Qb(F|0)}l=Rb()|0;E=Q;F=l;k[e>>2]=27468;k[n>>2]=27488;k[c>>2]=27560;Yua(o);Ava(c);vva(n);Qb(F|0)}while(0);t=v;u=w;vva(n);Qb(u|0);return 0}function sZ(a){a=a|0;return rZ(k[6863]|0,a)|0}function tZ(a,b,c,d,e,f,g,h,i,j,l,m,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0;o=r;r=r+480|0;p=o+456|0;q=o+440|0;s=o+304|0;t=o+444|0;u=o+152|0;v=o+288|0;w=o+16|0;x=o;y=Qqa(36)|0;B=0;va(484,y|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Sqa(y);C=z;D=A;Qb(C|0)}A=Qqa(36)|0;B=0;va(482,A|0);z=B;B=0;if(z&1){z=Rb()|0;E=Q;Sqa(A);C=z;D=E;Qb(C|0)}E=Qqa(36)|0;B=0;va(483,E|0);z=B;B=0;if(z&1){z=Rb()|0;F=Q;Sqa(E);C=z;D=F;Qb(C|0)}F=Qqa(36)|0;B=0;va(478,F|0);z=B;B=0;if(z&1){z=Rb()|0;G=Q;Sqa(F);C=z;D=G;Qb(C|0)}G=Qqa(36)|0;B=0;va(480,G|0);z=B;B=0;if(z&1){z=Rb()|0;H=Q;Sqa(G);C=z;D=H;Qb(C|0)}k[G+12>>2]=546;H=Qqa(36)|0;B=0;va(477,H|0);z=B;B=0;if(z&1){z=Rb()|0;I=Q;Sqa(H);C=z;D=I;Qb(C|0)}I=Qqa(4064)|0;B=0;va(479,I|0);z=B;B=0;if(z&1){z=Rb()|0;J=Q;Sqa(I);C=z;D=J;Qb(C|0)}Fka(h,q,105754);HY(k[q>>2]|0);a:do if(AY()|0){q=s+56|0;J=s+4|0;k[s>>2]=27524;k[q>>2]=27544;B=0;wa(508,s+56|0,J|0);z=B;B=0;if(z&1){z=Rb()|0;K=Q;L=z;vva(q);Qb(L|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[q>>2]=27488;B=0;va(448,J|0);z=B;B=0;do if(z&1){M=Rb()|0;N=Q;O=M}else{k[J>>2]=27560;M=s+36|0;k[M>>2]=0;k[M+4>>2]=0;k[M+8>>2]=0;k[M+12>>2]=0;k[s+52>>2]=16;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;B=0;wa(509,J|0,p|0);P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(p);Yua(M);Ava(J);N=R;O=P;break}Yua(p);B=0;Ia(40,s|0,105765,29)|0;P=B;B=0;do if(!(P&1)?(B=0,wa(510,t|0,J|0),R=B,B=0,!(R&1)):0){B=0;ya(425,t|0)|0;R=B;B=0;if(R&1){R=Rb()|0;S=Q;Yua(t);T=R;U=S;break}else{Yua(t);k[s>>2]=27468;k[q>>2]=27488;k[J>>2]=27560;Yua(M);Ava(J);vva(q);break a}}else V=28;while(0);if((V|0)==28){P=Rb()|0;T=P;U=Q}k[s>>2]=27468;k[q>>2]=27488;k[J>>2]=27560;Yua(M);Ava(J);vva(q);C=T;D=U;Qb(C|0)}while(0);K=N;L=O;vva(q);Qb(L|0)}while(0);uZ(h+32|0,h+36|0,h);xZ(y,E,F,h,m);wZ(I,h,j,i,l);b:do if((m|0)>0){i=u+56|0;j=u+4|0;L=u+56|0;O=u+128|0;N=u+132|0;K=u+36|0;U=u+52|0;T=h+104|0;s=h+108|0;t=h+100|0;J=0;while(1){z=k[n+(J<<2)>>2]|0;P=Qqa(12)|0;B=0;eb(518,P|0,482,J|0);S=B;B=0;if(S&1){W=P;V=50;break}YN(I,P);if(AY()|0){k[u>>2]=27524;k[i>>2]=27544;B=0;wa(508,L|0,j|0);P=B;B=0;if(P&1){V=39;break}k[O>>2]=0;k[N>>2]=-1;k[u>>2]=27468;k[i>>2]=27488;B=0;va(448,j|0);P=B;B=0;if(P&1){V=40;break}k[j>>2]=27560;k[K>>2]=0;k[K+4>>2]=0;k[K+8>>2]=0;k[K+12>>2]=0;k[U>>2]=16;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;B=0;wa(509,j|0,p|0);P=B;B=0;if(P&1){V=38;break}Yua(p);B=0;P=Ia(40,u|0,105795,34)|0;S=B;B=0;if(S&1){V=51;break}B=0;S=ya(427,z|0)|0;R=B;B=0;if(R&1){V=51;break}R=Lta(S)|0;B=0;X=Ia(40,P|0,S|0,R|0)|0;R=B;B=0;if(R&1){V=51;break}B=0;Ia(40,X|0,149177,1)|0;X=B;B=0;if(X&1){V=51;break}B=0;wa(510,v|0,j|0);X=B;B=0;if(X&1){V=51;break}B=0;ya(425,v|0)|0;X=B;B=0;if(X&1){V=52;break}Yua(v);k[u>>2]=27468;k[i>>2]=27488;k[j>>2]=27560;Yua(K);Ava(j);vva(i)}X=n_(z)|0;Dc[k[(k[X>>2]|0)+28>>2]&255](X,I,h,l,z);nd[k[(k[X>>2]|0)+16>>2]&1023](X,A,h);nd[k[(k[X>>2]|0)+8>>2]&1023](X,G,h);nd[k[(k[X>>2]|0)+12>>2]&1023](X,H,h);Dc[k[(k[X>>2]|0)+24>>2]&255](X,y,h,J,z);if(X)Ec[k[(k[X>>2]|0)+4>>2]&1023](X);if(th(A)|0){X=dn(A)|0;k[t>>2]=X}X=dL(H)|0;k[T>>2]=X;X=Cma(G)|0;k[s>>2]=X;J=J+1|0;if((J|0)>=(m|0)){Y=z;break b}}if((V|0)==38){J=Rb()|0;s=Q;Yua(p);Yua(K);Ava(j);Z=s;_=J;V=41}else if((V|0)==39){J=Rb()|0;$=Q;aa=J;vva(i);Qb(aa|0)}else if((V|0)==40){J=Rb()|0;Z=Q;_=J;V=41}else if((V|0)==50){J=Rb()|0;s=Q;Sqa(W);C=J;D=s;Qb(C|0)}else if((V|0)==51){s=Rb()|0;ba=s;ca=Q;V=53}else if((V|0)==52){s=Rb()|0;J=Q;Yua(v);ba=s;ca=J;V=53}if((V|0)==41){$=Z;aa=_;vva(i);Qb(aa|0)}else if((V|0)==53){k[u>>2]=27468;k[i>>2]=27488;k[j>>2]=27560;Yua(K);Ava(j);vva(i);C=ba;D=ca;Qb(C|0)}}else Y=0;while(0);E_(y,F,h);if((l|0)==523)t_(y,I,h,Y);i1(y,I,h);sh(y);sh(A);sh(E);sh(H);sh(F);sh(G);if(!(AY()|0)){k[a>>2]=y;k[b>>2]=A;k[c>>2]=E;k[d>>2]=F;k[e>>2]=G;k[f>>2]=H;k[g>>2]=I;r=o;return}h=w+56|0;Y=w+4|0;k[w>>2]=27524;k[h>>2]=27544;B=0;wa(508,w+56|0,Y|0);l=B;B=0;if(l&1){l=Rb()|0;da=Q;ea=l;vva(h);Qb(ea|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[h>>2]=27488;B=0;va(448,Y|0);l=B;B=0;do if(l&1){ca=Rb()|0;fa=Q;ga=ca}else{k[Y>>2]=27560;ca=w+36|0;k[ca>>2]=0;k[ca+4>>2]=0;k[ca+8>>2]=0;k[ca+12>>2]=0;k[w+52>>2]=16;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;B=0;wa(509,Y|0,p|0);ba=B;B=0;if(ba&1){ba=Rb()|0;u=Q;Yua(p);Yua(ca);Ava(Y);fa=u;ga=ba;break}Yua(p);B=0;Ia(40,w|0,105830,30)|0;ba=B;B=0;do if(!(ba&1)?(B=0,wa(510,x|0,Y|0),u=B,B=0,!(u&1)):0){B=0;ya(425,x|0)|0;u=B;B=0;if(u&1){u=Rb()|0;aa=Q;Yua(x);ha=u;ia=aa;break}Yua(x);k[w>>2]=27468;k[h>>2]=27488;k[Y>>2]=27560;Yua(ca);Ava(Y);vva(h);k[a>>2]=y;k[b>>2]=A;k[c>>2]=E;k[d>>2]=F;k[e>>2]=G;k[f>>2]=H;k[g>>2]=I;r=o;return}else V=74;while(0);if((V|0)==74){ba=Rb()|0;ha=ba;ia=Q}k[w>>2]=27468;k[h>>2]=27488;k[Y>>2]=27560;Yua(ca);Ava(Y);vva(h);C=ha;D=ia;Qb(C|0)}while(0);da=fa;ea=ga;vva(h);Qb(ea|0)}function uZ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;d=r;r=r+240|0;e=d+216|0;f=d+212|0;g=d+208|0;h=d+204|0;j=d+200|0;l=d+196|0;m=d+192|0;n=d+188|0;o=d+184|0;q=d+180|0;s=d+176|0;t=d+40|0;u=d+24|0;v=d+12|0;w=d;k[m>>2]=0;k[n>>2]=0;k[o>>2]=0;k[q>>2]=0;k[s>>2]=0;x=vY()|0;y=wY()|0;Fka(c,j,127408);if(k[a>>2]|0){r=d;return}z=c+48|0;switch(k[z>>2]|0){case 621:{k[f>>2]=0;k[g>>2]=0;k[h>>2]=0;A=0;C=0;D=0;E=0;F=621;G=3;break}case 623:{k[f>>2]=0;k[g>>2]=0;k[h>>2]=0;A=0;C=0;D=0;E=0;F=623;G=4;break}case 625:{Cka(c,o,0,0,105861);Fka(c,f,105880);Fka(c,g,105907);Fka(c,h,106979);A=k[f>>2]|0;C=k[g>>2]|0;D=k[o>>2]|0;E=k[h>>2]|0;F=k[z>>2]|0;G=6;break}default:{z=t+56|0;h=t+4|0;k[t>>2]=27524;k[z>>2]=27544;B=0;wa(508,t+56|0,h|0);g=B;B=0;if(g&1){g=Rb()|0;H=Q;I=g;vva(z);Qb(I|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[z>>2]=27488;B=0;va(448,h|0);g=B;B=0;do if(g&1){f=Rb()|0;J=Q;K=f}else{k[h>>2]=27560;f=t+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[t+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,h|0,e|0);L=B;B=0;if(L&1){L=Rb()|0;M=Q;Yua(e);Yua(f);Ava(h);J=M;K=L;break}Yua(e);B=0;L=Ia(40,t|0,144836,22)|0;M=B;B=0;if(!(M&1)?(B=0,Xa(239,L|0,0)|0,L=B,B=0,!(L&1)):0){L=Ab(20)|0;B=0;eb(502,u|0,105934,106);M=B;B=0;do if(!(M&1)){B=0;eb(502,v|0,106041,31);N=B;B=0;if(N&1){N=Rb()|0;O=Q;Yua(u);P=O;R=N;break}B=0;wa(510,w|0,h|0);N=B;B=0;if(N&1){N=Rb()|0;S=Q;T=N;U=1}else{B=0;ua(163,L|0,u|0,v|0,74,w|0);N=B;B=0;if(N&1)V=1;else{B=0;eb(503,L|0,1240,229);B=0;V=0}N=Rb()|0;O=Q;Yua(w);S=O;T=N;U=V}Yua(v);Yua(u);if(U){P=S;R=T}else{W=S;X=T;k[t>>2]=27468;k[z>>2]=27488;k[h>>2]=27560;Yua(f);Ava(h);vva(z);Qb(X|0)}}else{N=Rb()|0;P=Q;R=N}while(0);zb(L|0);W=P;X=R;k[t>>2]=27468;k[z>>2]=27488;k[h>>2]=27560;Yua(f);Ava(h);vva(z);Qb(X|0)}M=Rb()|0;W=Q;X=M;k[t>>2]=27468;k[z>>2]=27488;k[h>>2]=27560;Yua(f);Ava(h);vva(z);Qb(X|0)}while(0);H=J;I=K;vva(z);Qb(I|0)}}I=c+56|0;z=c+52|0;K=c+72|0;vZ(m,n,k[I>>2]|0,k[z>>2]|0,k[K>>2]|0,A,C,D,E,G,F,y)|0;y=k[o>>2]|0;if(y)Tqa(y);k[o>>2]=0;if(k[j>>2]|0){Qka(c,s,j,0,127458);o=k[s>>2]|0;if((k[j>>2]|0)>0){s=k[m>>2]|0;y=0;do{F=o+(y*12<<3)|0;k[s+(~~+p[F+24>>3]+-1<<2)>>2]=k[s+(~~+p[F+16>>3]+-1<<2)>>2];y=y+1|0}while((y|0)<(k[j>>2]|0))}Mka(c,o,127458)}o=k[z>>2]|0;z=Rqa(o>>>0>1073741823?-1:o<<2)|0;if(o)WEa(z|0,0,o<<2|0)|0;o=k[I>>2]|0;I=Rqa(o)|0;if((o|0)!=0?(WEa(I|0,0,o|0)|0,(o|0)>0):0){j=k[m>>2]|0;y=0;do{if((x|0)==(k[j+(y<<2)>>2]|0)){i[I+y>>0]=1;s=ma(y,G)|0;F=k[K>>2]|0;E=0;do{k[z+((k[F+(E+s<<2)>>2]|0)+-1<<2)>>2]=1;E=E+1|0}while((E|0)<(G|0))}y=y+1|0}while((y|0)<(o|0))}Cka(c,q,l,0,127426);o=k[l>>2]|0;y=k[q>>2]|0;if((o|0)>0){G=0;do{K=G<<1;if((k[z+((k[y+(K<<2)>>2]|0)+-1<<2)>>2]|0)!=0?(j=z+((k[y+((K|1)<<2)>>2]|0)+-1<<2)|0,(k[j>>2]|0)==0):0)k[j>>2]=2;G=G+1|0}while((G|0)<(o|0))}if(y)Tqa(y);k[q>>2]=0;Cka(c,q,l,0,134220);c=k[l>>2]|0;l=k[q>>2]|0;if((c|0)>0){y=0;do{o=y<<1;if((k[z+((k[l+(o<<2)>>2]|0)+-1<<2)>>2]|0)!=0?(G=z+((k[l+((o|1)<<2)>>2]|0)+-1<<2)|0,(k[G>>2]|0)==0):0)k[G>>2]=2;y=y+1|0}while((y|0)<(c|0))}if(l)Tqa(l);k[q>>2]=0;q=k[n>>2]|0;if(q)Tqa(q);k[n>>2]=0;n=k[m>>2]|0;if(n)Tqa(n);k[m>>2]=0;k[a>>2]=I;k[b>>2]=z;r=d;return}function vZ(a,b,c,d,e,f,g,h,i,j,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0;j=r;r=r+896|0;h=j+876|0;e=j+704|0;n=j+864|0;o=j+852|0;p=j+840|0;q=j+552|0;s=j+688|0;t=j+536|0;u=j+248|0;v=j+400|0;w=j+96|0;x=j+84|0;y=j+72|0;z=j+264|0;A=j+60|0;C=j+48|0;D=j+36|0;E=j+112|0;F=j+24|0;G=j+12|0;H=j;switch(l|0){case 623:case 621:{I=Rqa(c>>>0>1073741823?-1:c<<2)|0;J=Rqa(d>>>0>1073741823?-1:d<<2)|0;K=(c|0)>0;if((m|0)>1){L=e+56|0;M=e+4|0;k[e>>2]=27524;k[L>>2]=27544;B=0;wa(508,e+56|0,M|0);N=B;B=0;if(N&1){N=Rb()|0;O=Q;P=N;vva(L);Qb(P|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[L>>2]=27488;B=0;va(448,M|0);N=B;B=0;do if(N&1){R=Rb()|0;S=Q;T=R}else{k[M>>2]=27560;R=e+36|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[e+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,M|0,h|0);U=B;B=0;if(U&1){U=Rb()|0;V=Q;Yua(h);Yua(R);Ava(M);S=V;T=U;break}Yua(h);B=0;U=Ia(40,e|0,106073,61)|0;V=B;B=0;a:do if(!(V&1)?(B=0,Xa(239,U|0,0)|0,W=B,B=0,!(W&1)):0){W=Ab(20)|0;B=0;eb(502,n|0,106135,105);X=B;B=0;do if(!(X&1)){B=0;eb(502,o|0,106241,14);Y=B;B=0;if(Y&1){Y=Rb()|0;Z=Q;Yua(n);_=Z;$=Y;break}B=0;wa(510,p|0,M|0);Y=B;B=0;if(Y&1){Y=Rb()|0;aa=Q;ba=Y;ca=1}else{B=0;ua(163,W|0,n|0,o|0,50,p|0);Y=B;B=0;if(Y&1)da=1;else{B=0;eb(503,W|0,1240,229);B=0;da=0}Y=Rb()|0;Z=Q;Yua(p);aa=Z;ba=Y;ca=da}Yua(o);Yua(n);if(ca){_=aa;$=ba}else{ea=aa;fa=ba;break a}}else{Y=Rb()|0;_=Q;$=Y}while(0);zb(W|0);ea=_;fa=$}else ga=18;while(0);if((ga|0)==18){U=Rb()|0;ea=Q;fa=U}k[e>>2]=27468;k[L>>2]=27488;k[M>>2]=27560;Yua(R);Ava(M);vva(L);ha=ea;ia=fa;Qb(ia|0)}while(0);O=S;P=T;vva(L);Qb(P|0)}if((m|0)==1){if(K)WEa(I|0,0,c<<2|0)|0;if((d|0)>0)WEa(J|0,0,d<<2|0)|0;k[a>>2]=I;k[b>>2]=J;r=j;return 1}J=q+56|0;I=q+4|0;k[q>>2]=27524;k[J>>2]=27544;B=0;wa(508,q+56|0,I|0);K=B;B=0;if(K&1){K=Rb()|0;ja=Q;ka=K;vva(J);Qb(ka|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[J>>2]=27488;B=0;va(448,I|0);K=B;B=0;do if(K&1){P=Rb()|0;la=Q;na=P}else{k[I>>2]=27560;P=q+36|0;k[P>>2]=0;k[P+4>>2]=0;k[P+8>>2]=0;k[P+12>>2]=0;k[q+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,I|0,h|0);L=B;B=0;if(L&1){L=Rb()|0;T=Q;Yua(h);Yua(P);Ava(I);la=T;na=L;break}Yua(h);B=0;L=Ia(40,q|0,106256,34)|0;T=B;B=0;b:do if(!(T&1)?(B=0,Xa(239,L|0,0)|0,S=B,B=0,!(S&1)):0){S=Ab(20)|0;B=0;eb(502,s|0,106135,105);O=B;B=0;do if(!(O&1)){B=0;eb(502,t|0,106241,14);fa=B;B=0;if(fa&1){fa=Rb()|0;ea=Q;Yua(s);oa=ea;pa=fa;break}B=0;wa(510,u|0,I|0);fa=B;B=0;if(fa&1){fa=Rb()|0;qa=1;ra=Q;sa=fa}else{B=0;ua(163,S|0,s|0,t|0,58,u|0);fa=B;B=0;if(fa&1)ta=1;else{B=0;eb(503,S|0,1240,229);B=0;ta=0}fa=Rb()|0;ea=Q;Yua(u);qa=ta;ra=ea;sa=fa}Yua(t);Yua(s);if(qa){oa=ra;pa=sa}else{xa=ra;za=sa;break b}}else{fa=Rb()|0;oa=Q;pa=fa}while(0);zb(S|0);xa=oa;za=pa}else ga=46;while(0);if((ga|0)==46){L=Rb()|0;xa=Q;za=L}k[q>>2]=27468;k[J>>2]=27488;k[I>>2]=27560;Yua(P);Ava(I);vva(J);ha=xa;ia=za;Qb(ia|0)}while(0);ja=la;ka=na;vva(J);Qb(ka|0);break}case 625:{ka=Rqa(f>>>0>1073741823?-1:f<<2)|0;J=Rqa(g>>>0>1073741823?-1:g<<2)|0;na=(f|0)>0;if((m|0)>1){la=v+56|0;ja=v+4|0;k[v>>2]=27524;k[la>>2]=27544;B=0;wa(508,v+56|0,ja|0);za=B;B=0;if(za&1){za=Rb()|0;Aa=Q;Ba=za;vva(la);Qb(Ba|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[la>>2]=27488;B=0;va(448,ja|0);za=B;B=0;do if(za&1){xa=Rb()|0;Ca=Q;Da=xa}else{k[ja>>2]=27560;xa=v+36|0;k[xa>>2]=0;k[xa+4>>2]=0;k[xa+8>>2]=0;k[xa+12>>2]=0;k[v+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,ja|0,h|0);I=B;B=0;if(I&1){I=Rb()|0;q=Q;Yua(h);Yua(xa);Ava(ja);Ca=q;Da=I;break}Yua(h);B=0;I=Ia(40,v|0,106073,61)|0;q=B;B=0;c:do if(!(q&1)?(B=0,Xa(239,I|0,0)|0,pa=B,B=0,!(pa&1)):0){pa=Ab(20)|0;B=0;eb(502,w|0,106135,105);oa=B;B=0;do if(!(oa&1)){B=0;eb(502,x|0,106241,14);sa=B;B=0;if(sa&1){sa=Rb()|0;ra=Q;Yua(w);Ea=ra;Fa=sa;break}B=0;wa(510,y|0,ja|0);sa=B;B=0;if(sa&1){sa=Rb()|0;Ga=1;Ha=Q;Ja=sa}else{B=0;ua(163,pa|0,w|0,x|0,79,y|0);sa=B;B=0;if(sa&1)Ka=1;else{B=0;eb(503,pa|0,1240,229);B=0;Ka=0}sa=Rb()|0;ra=Q;Yua(y);Ga=Ka;Ha=ra;Ja=sa}Yua(x);Yua(w);if(Ga){Ea=Ha;Fa=Ja}else{La=Ha;Ma=Ja;break c}}else{sa=Rb()|0;Ea=Q;Fa=sa}while(0);zb(pa|0);La=Ea;Ma=Fa}else ga=70;while(0);if((ga|0)==70){I=Rb()|0;La=Q;Ma=I}k[v>>2]=27468;k[la>>2]=27488;k[ja>>2]=27560;Yua(xa);Ava(ja);vva(la);ha=La;ia=Ma;Qb(ia|0)}while(0);Aa=Ca;Ba=Da;vva(la);Qb(Ba|0)}if((m|0)==1){if(na)WEa(ka|0,0,f<<2|0)|0;m=(g|0)>0;if(m)WEa(J|0,0,g<<2|0)|0;Ba=Rqa(c>>>0>1073741823?-1:c<<2)|0;if(!((i|0)<2|na^1)){na=i+-1|0;c=f<<2;f=0;do{TEa(Ba+(ma(c,f)|0)|0,ka|0,c|0)|0;f=f+1|0}while((f|0)!=(na|0))}na=Rqa(d>>>0>1073741823?-1:d<<2)|0;if(!((i|0)<1|m^1)){m=g<<2;g=0;do{TEa(na+(ma(m,g)|0)|0,J|0,m|0)|0;g=g+1|0}while((g|0)!=(i|0))}k[a>>2]=Ba;k[b>>2]=na;Tqa(ka);Tqa(J);r=j;return 1}j=z+56|0;J=z+4|0;k[z>>2]=27524;k[j>>2]=27544;B=0;wa(508,z+56|0,J|0);ka=B;B=0;if(ka&1){ka=Rb()|0;Na=Q;Oa=ka;vva(j);Qb(Oa|0)}k[z+128>>2]=0;k[z+132>>2]=-1;k[z>>2]=27468;k[j>>2]=27488;B=0;va(448,J|0);ka=B;B=0;do if(ka&1){na=Rb()|0;Pa=Q;Qa=na}else{k[J>>2]=27560;na=z+36|0;k[na>>2]=0;k[na+4>>2]=0;k[na+8>>2]=0;k[na+12>>2]=0;k[z+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,J|0,h|0);b=B;B=0;if(b&1){b=Rb()|0;Ba=Q;Yua(h);Yua(na);Ava(J);Pa=Ba;Qa=b;break}Yua(h);B=0;b=Ia(40,z|0,106256,34)|0;Ba=B;B=0;d:do if(!(Ba&1)?(B=0,Xa(239,b|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,A|0,106135,105);i=B;B=0;do if(!(i&1)){B=0;eb(502,C|0,106241,14);g=B;B=0;if(g&1){g=Rb()|0;m=Q;Yua(A);Ra=m;Sa=g;break}B=0;wa(510,D|0,J|0);g=B;B=0;if(g&1){g=Rb()|0;Ta=1;Ua=Q;Va=g}else{B=0;ua(163,a|0,A|0,C|0,87,D|0);g=B;B=0;if(g&1)Wa=1;else{B=0;eb(503,a|0,1240,229);B=0;Wa=0}g=Rb()|0;m=Q;Yua(D);Ta=Wa;Ua=m;Va=g}Yua(C);Yua(A);if(Ta){Ra=Ua;Sa=Va}else{Ya=Ua;Za=Va;break d}}else{g=Rb()|0;Ra=Q;Sa=g}while(0);zb(a|0);Ya=Ra;Za=Sa}else ga=98;while(0);if((ga|0)==98){b=Rb()|0;Ya=Q;Za=b}k[z>>2]=27468;k[j>>2]=27488;k[J>>2]=27560;Yua(na);Ava(J);vva(j);ha=Ya;ia=Za;Qb(ia|0)}while(0);Na=Pa;Oa=Qa;vva(j);Qb(Oa|0);break}default:{Oa=E+56|0;j=E+4|0;k[E>>2]=27524;k[Oa>>2]=27544;B=0;wa(508,E+56|0,j|0);Qa=B;B=0;if(Qa&1){Qa=Rb()|0;_a=Q;$a=Qa;vva(Oa);Qb($a|0)}k[E+128>>2]=0;k[E+132>>2]=-1;k[E>>2]=27468;k[Oa>>2]=27488;B=0;va(448,j|0);Qa=B;B=0;do if(Qa&1){Pa=Rb()|0;ab=Q;bb=Pa}else{k[j>>2]=27560;Pa=E+36|0;k[Pa>>2]=0;k[Pa+4>>2]=0;k[Pa+8>>2]=0;k[Pa+12>>2]=0;k[E+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,j|0,h|0);Na=B;B=0;if(Na&1){Na=Rb()|0;Za=Q;Yua(h);Yua(Pa);Ava(j);ab=Za;bb=Na;break}Yua(h);B=0;Na=Ia(40,E|0,144674,10)|0;Za=B;B=0;e:do if((((!(Za&1)?(B=0,Ya=ya(427,l|0)|0,J=B,B=0,!(J&1)):0)?(J=Lta(Ya)|0,B=0,z=Ia(40,Na|0,Ya|0,J|0)|0,J=B,B=0,!(J&1)):0)?(B=0,J=Ia(40,z|0,146481,18)|0,z=B,B=0,!(z&1)):0)?(B=0,Xa(239,J|0,0)|0,J=B,B=0,!(J&1)):0){J=Ab(20)|0;B=0;eb(502,F|0,106135,105);z=B;B=0;do if(!(z&1)){B=0;eb(502,G|0,106241,14);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;Sa=Q;Yua(F);cb=Sa;db=Ya;break}B=0;wa(510,H|0,j|0);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;fb=1;gb=Q;hb=Ya}else{B=0;ua(163,J|0,F|0,G|0,112,H|0);Ya=B;B=0;if(Ya&1)ib=1;else{B=0;eb(503,J|0,1240,229);B=0;ib=0}Ya=Rb()|0;Sa=Q;Yua(H);fb=ib;gb=Sa;hb=Ya}Yua(G);Yua(F);if(fb){cb=gb;db=hb}else{jb=gb;kb=hb;break e}}else{Ya=Rb()|0;cb=Q;db=Ya}while(0);zb(J|0);jb=cb;kb=db}else ga=130;while(0);if((ga|0)==130){Na=Rb()|0;jb=Q;kb=Na}k[E>>2]=27468;k[Oa>>2]=27488;k[j>>2]=27560;Yua(Pa);Ava(j);vva(Oa);ha=jb;ia=kb;Qb(ia|0)}while(0);_a=ab;$a=bb;vva(Oa);Qb($a|0)}}return 0}function wZ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0;c=r;r=r+416|0;f=c+388|0;g=c+384|0;h=c+380|0;j=c+376|0;m=c+372|0;n=c;o=c+368|0;q=c+401|0;s=c+400|0;t=c+364|0;u=c+360|0;v=c+356|0;w=c+208|0;x=c+344|0;y=c+192|0;z=c+44|0;A=c+56|0;C=c+32|0;D=c+20|0;E=c+8|0;k[m>>2]=0;k[o>>2]=0;i[q>>0]=0;i[s>>0]=0;k[t>>2]=0;k[u>>2]=0;k[v>>2]=0;YN(a,Ika(b,139814,298)|0);YN(a,Ika(b,139834,299)|0);YN(a,Ika(b,106291,328)|0);YN(a,Ika(b,106320,329)|0);YN(a,Ika(b,106352,67)|0);YN(a,Ika(b,106369,354)|0);YN(a,Ika(b,106396,355)|0);YN(a,Ika(b,106423,357)|0);YN(a,Ika(b,106450,358)|0);YN(a,Ika(b,106476,356)|0);YN(a,Ika(b,133189,359)|0);YN(a,Ika(b,106508,327)|0);YN(a,Ika(b,106527,331)|0);YN(a,Ika(b,106546,277)|0);YN(a,Ika(b,106582,330)|0);YN(a,Ika(b,139904,282)|0);YN(a,Ika(b,139879,285)|0);YN(a,Ika(b,106605,325)|0);YN(a,Ika(b,106634,326)|0);YN(a,Ika(b,139768,8)|0);YN(a,Ika(b,134866,314)|0);YN(a,Ika(b,139791,182)|0);YN(a,Ika(b,112523,183)|0);YN(a,Ika(b,135965,247)|0);YN(a,Ika(b,139859,296)|0);YN(a,Ika(b,106656,337)|0);YN(a,Ika(b,106678,335)|0);YN(a,Ika(b,129853,66)|0);YN(a,Ika(b,106701,942)|0);YN(a,Ika(b,106728,362)|0);YN(a,Ika(b,106757,364)|0);YN(a,Ika(b,132238,360)|0);YN(a,Ika(b,106786,365)|0);YN(a,Ika(b,132209,363)|0);YN(a,Ika(b,106809,366)|0);YN(a,Ika(b,106828,367)|0);YN(a,Ika(b,106859,368)|0);YN(a,Ika(b,134882,369)|0);YN(a,Ika(b,106884,370)|0);YN(a,Ika(b,106903,361)|0);YN(a,Ika(b,106926,216)|0);YN(a,Ika(b,106952,733)|0);YN(a,Ika(b,132257,99)|0);YN(a,Ika(b,127811,80)|0);YN(a,Ika(b,127754,72)|0);YN(a,Ika(b,127656,78)|0);YN(a,Ika(b,127680,75)|0);YN(a,Ika(b,127704,69)|0);if((k[b+40>>2]|0)==302)YN(a,Ika(b,106979,283)|0);YN(a,Ika(b,135117,37)|0);Fka(b,j,135117);switch(k[j>>2]|0){case 59:break;case 60:{YN(a,Ika(b,107002,41)|0);YN(a,Ika(b,107042,42)|0);YN(a,Ika(b,107079,43)|0);break}case 61:{YN(a,Ika(b,107117,44)|0);YN(a,Ika(b,107150,45)|0);YN(a,Ika(b,107187,46)|0);break}case 62:{YN(a,Ika(b,107220,47)|0);YN(a,Ika(b,107256,48)|0);YN(a,Ika(b,107281,49)|0);YN(a,Ika(b,107303,50)|0);YN(a,Ika(b,107332,51)|0);YN(a,Ika(b,107363,52)|0);YN(a,Ika(b,107397,53)|0);YN(a,Ika(b,107421,54)|0);YN(a,Ika(b,107445,55)|0);YN(a,Ika(b,107477,56)|0);YN(a,Ika(b,107514,57)|0);YN(a,Ika(b,107546,58)|0);break}default:{j=w+56|0;F=w+4|0;k[w>>2]=27524;k[j>>2]=27544;B=0;wa(508,w+56|0,F|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;I=G;vva(j);Qb(I|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[j>>2]=27488;B=0;va(448,F|0);G=B;B=0;do if(G&1){J=Rb()|0;K=Q;L=J}else{k[F>>2]=27560;J=w+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[w+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,F|0,f|0);M=B;B=0;if(M&1){M=Rb()|0;N=Q;Yua(f);Yua(J);Ava(F);K=N;L=M;break}Yua(f);B=0;M=Ia(40,w|0,146460,20)|0;N=B;B=0;a:do if((((!(N&1)?(B=0,O=ya(427,0)|0,P=B,B=0,!(P&1)):0)?(P=Lta(O)|0,B=0,R=Ia(40,M|0,O|0,P|0)|0,P=B,B=0,!(P&1)):0)?(B=0,P=Ia(40,R|0,146481,18)|0,R=B,B=0,!(R&1)):0)?(B=0,Xa(239,P|0,0)|0,P=B,B=0,!(P&1)):0){P=Ab(20)|0;B=0;eb(502,x|0,107578,91);R=B;B=0;do if(!(R&1)){B=0;eb(502,y|0,107670,16);O=B;B=0;if(O&1){O=Rb()|0;S=Q;Yua(x);T=O;U=S;break}B=0;wa(510,z|0,F|0);S=B;B=0;if(S&1){S=Rb()|0;V=Q;W=S;X=1}else{B=0;ua(163,P|0,x|0,y|0,131,z|0);S=B;B=0;if(S&1)Y=1;else{B=0;eb(503,P|0,1240,229);B=0;Y=0}S=Rb()|0;O=Q;Yua(z);V=O;W=S;X=Y}Yua(y);Yua(x);if(X){T=W;U=V}else{Z=W;_=V;break a}}else{S=Rb()|0;T=S;U=Q}while(0);zb(P|0);Z=T;_=U}else $=25;while(0);if(($|0)==25){M=Rb()|0;Z=M;_=Q}k[w>>2]=27468;k[j>>2]=27488;k[F>>2]=27560;Yua(J);Ava(F);vva(j);aa=_;ba=Z;Qb(ba|0)}while(0);H=K;I=L;vva(j);Qb(I|0)}}I=Qqa(12)|0;B=0;eb(518,I|0,476,e|0);j=B;B=0;if(j&1){j=Rb()|0;L=Q;Sqa(I);aa=L;ba=j;Qb(ba|0)}YN(a,I);Gka(b,n,106369);I=Qqa(16)|0;B=0;Oa(59,I|0,767,+(+p[n>>3]));n=B;B=0;if(n&1){n=Rb()|0;j=Q;Sqa(I);aa=j;ba=n;Qb(ba|0)}YN(a,I);I=Qqa(12)|0;B=0;eb(518,I|0,766,0);n=B;B=0;if(n&1){n=Rb()|0;j=Q;Sqa(I);aa=j;ba=n;Qb(ba|0)}YN(a,I);I=Qqa(12)|0;B=0;eb(517,I|0,759,1);n=B;B=0;if(n&1){n=Rb()|0;j=Q;Sqa(I);aa=j;ba=n;Qb(ba|0)}YN(a,I);Hka(b,m,g,107687);I=Qqa(12)|0;B=0;eb(518,I|0,371,k[g>>2]|0);n=B;B=0;if(n&1){n=Rb()|0;j=Q;Sqa(I);aa=j;ba=n;Qb(ba|0)}YN(a,I);I=k[g>>2]|0;do if(!I)ca=0;else{n=Qqa(16)|0;B=0;ib(294,n|0,372,k[m>>2]|0,I|0);j=B;B=0;if(!(j&1)){YN(a,n);ca=k[g>>2]|0;break}j=Rb()|0;L=Q;Sqa(n);aa=L;ba=j;Qb(ba|0)}while(0);Nka(b,m,ca,107687);Hka(b,m,g,107718);ca=Qqa(12)|0;B=0;eb(518,ca|0,336,k[g>>2]|0);I=B;B=0;if(I&1){I=Rb()|0;j=Q;Sqa(ca);aa=j;ba=I;Qb(ba|0)}YN(a,ca);ca=k[g>>2]|0;do if(!ca)da=0;else{I=Qqa(16)|0;B=0;ib(294,I|0,338,k[m>>2]|0,ca|0);j=B;B=0;if(!(j&1)){YN(a,I);da=k[g>>2]|0;break}j=Rb()|0;L=Q;Sqa(I);aa=L;ba=j;Qb(ba|0)}while(0);Nka(b,m,da,107718);Fka(b,h,127514);if((k[h>>2]|0)==584){Hka(b,m,g,126328);h=Qqa(12)|0;B=0;eb(518,h|0,242,k[g>>2]|0);da=B;B=0;if(da&1){da=Rb()|0;ca=Q;Sqa(h);aa=ca;ba=da;Qb(ba|0)}YN(a,h);h=k[g>>2]|0;do if(!h)ea=0;else{da=Qqa(16)|0;B=0;ib(294,da|0,243,k[m>>2]|0,h|0);ca=B;B=0;if(!(ca&1)){YN(a,da);ea=k[g>>2]|0;break}ca=Rb()|0;j=Q;Sqa(da);aa=j;ba=ca;Qb(ba|0)}while(0);Nka(b,m,ea,126328)}Kka(b,q,107751);Kka(b,s,107785);ea=(i[s>>0]|i[q>>0])<<24>>24!=0;q=Qqa(12)|0;B=0;eb(517,q|0,316,ea|0);s=B;B=0;if(s&1){s=Rb()|0;m=Q;Sqa(q);aa=m;ba=s;Qb(ba|0)}YN(a,q);if(!ea){D_(a,b,e);yZ(a,d);r=c;return}Rka(b,t,u,v,o,107824);ea=k[o>>2]|0;if(!ea){q=A+56|0;s=A+4|0;k[A>>2]=27524;k[q>>2]=27544;B=0;wa(508,A+56|0,s|0);m=B;B=0;if(m&1){m=Rb()|0;fa=Q;ga=m;vva(q);Qb(ga|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[q>>2]=27488;B=0;va(448,s|0);m=B;B=0;do if(m&1){g=Rb()|0;ha=Q;ia=g}else{k[s>>2]=27560;g=A+36|0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[A+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,s|0,f|0);h=B;B=0;if(h&1){h=Rb()|0;ca=Q;Yua(f);Yua(g);Ava(s);ha=ca;ia=h;break}Yua(f);B=0;h=Ia(40,A|0,107850,71)|0;ca=B;B=0;b:do if(ca&1)$=82;else{B=0;Xa(239,h|0,0)|0;j=B;B=0;if(j&1){$=82;break}j=Ab(20)|0;B=0;eb(502,C|0,107578,91);da=B;B=0;do if(!(da&1)){B=0;eb(502,D|0,107670,16);L=B;B=0;if(L&1){L=Rb()|0;I=Q;Yua(C);ja=L;ka=I;break}B=0;wa(510,E|0,s|0);I=B;B=0;if(I&1){I=Rb()|0;la=1;ma=Q;na=I}else{B=0;ua(163,j|0,C|0,D|0,175,E|0);I=B;B=0;if(I&1)oa=1;else{B=0;eb(503,j|0,1240,229);B=0;oa=0}I=Rb()|0;L=Q;Yua(E);la=oa;ma=L;na=I}Yua(D);Yua(C);if(la){ja=na;ka=ma}else{pa=ma;qa=na;break b}}else{I=Rb()|0;ja=I;ka=Q}while(0);zb(j|0);pa=ka;qa=ja}while(0);if(($|0)==82){h=Rb()|0;pa=Q;qa=h}k[A>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(g);Ava(s);vva(q);aa=pa;ba=qa;Qb(ba|0)}while(0);fa=ha;ga=ia;vva(q);Qb(ga|0)}if((ea|0)>0){ga=b+32|0;q=0;do{ia=(k[t>>2]|0)+(q<<2)|0;ha=k[ia>>2]|0;fa=k[(k[u>>2]|0)+(q<<2)>>2]|0;qa=(fa|0)>0;if(qa){pa=ha;s=k[ga>>2]|0;A=0;$=0;while(1){ja=(l[s+(~~+p[pa+(A*5<<3)+32>>3]+-1)>>0]|0)+$|0;A=A+1|0;if((A|0)==(fa|0)){ra=ja;break}else $=ja}if(ra){$=ra*5|0;A=Rqa($>>>0>536870911?-1:$<<3)|0;WEa(A|0,0,ra*40|0)|0;if(qa){$=ha;pa=k[ga>>2]|0;s=0;g=0;while(1){ja=$+(g*5<<3)|0;ka=ja+32|0;if(!(i[pa+(~~+p[ka>>3]+-1)>>0]|0))sa=s;else{na=A+(s*5<<3)|0;p[na>>3]=+p[ja>>3];p[na+8>>3]=+p[ja+8>>3];p[na+16>>3]=+p[ja+16>>3];p[na+24>>3]=+p[ja+24>>3];p[na+32>>3]=+p[ka>>3];sa=s+1|0}g=g+1|0;if((g|0)==(fa|0)){ta=ra;xa=A;break}else s=sa}}else{ta=ra;xa=A}}else{ta=0;xa=0}}else{ta=0;xa=0}k[ia>>2]=xa;k[(k[u>>2]|0)+(q<<2)>>2]=ta;k[(k[v>>2]|0)+(q<<2)>>2]=5;if(ha)Tqa(ha);q=q+1|0;s=k[o>>2]|0}while((q|0)<(s|0));za=s}else za=ea;ea=Qqa(24)|0;B=0;La(31,ea|0,315,k[t>>2]|0,za|0,k[u>>2]|0,k[v>>2]|0);za=B;B=0;if(za&1){za=Rb()|0;q=Q;Sqa(ea);aa=q;ba=za;Qb(ba|0)}YN(a,ea);ea=k[o>>2]|0;if((ea|0)>0){ba=ea;ea=0;while(1){za=k[(k[t>>2]|0)+(ea<<2)>>2]|0;if(!za)Aa=ba;else{Tqa(za);Aa=k[o>>2]|0}ea=ea+1|0;if((ea|0)>=(Aa|0))break;else ba=Aa}}Aa=k[u>>2]|0;if(Aa)Tqa(Aa);k[u>>2]=0;u=k[v>>2]|0;if(u)Tqa(u);k[v>>2]=0;v=k[t>>2]|0;if(v)Tqa(v);k[t>>2]=0;D_(a,b,e);yZ(a,d);r=c;return}function xZ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0;f=r;r=r+1008|0;g=f+112|0;h=f+88|0;j=f+72|0;l=f+48|0;m=f+16|0;n=f+8|0;o=f;p=f+992|0;q=f+976|0;s=f+1005|0;t=f+816|0;u=f+980|0;v=f+964|0;w=f+952|0;x=f+680|0;y=f+668|0;z=f+656|0;A=f+504|0;C=f+520|0;D=f+220|0;E=f+208|0;F=f+196|0;G=f+368|0;H=f+184|0;I=f+172|0;J=f+160|0;K=f+232|0;L=f+148|0;M=f+136|0;N=f+124|0;zka(d,s,139791);zka(d,f+1004|0,134866);Fka(d,q,127514);if(i[s>>0]|0){k[o>>2]=113372;k[o+4>>2]=113400;Ska(d,2,o)}a:do switch(k[d+48>>2]|0){case 621:{o=d+56|0;s=k[o>>2]|0;if((s|0)>0){O=d+32|0;P=s;s=0;while(1){if(!(i[(k[O>>2]|0)+s>>0]|0)){R=s+1|0;S=P}else{T=Qqa(72)|0;U=s+1|0;B=0;La(32,T|0,U|0,s|0,s|0,d|0,e|0);V=B;B=0;if(V&1){W=T;break}ih(a,T)|0;R=U;S=k[o>>2]|0}if((R|0)<(S|0)){P=S;s=R}else break a}s=Rb()|0;P=Q;Sqa(W);X=P;Y=s;Qb(Y|0)}break}case 623:{s=d+56|0;P=k[s>>2]|0;if((P|0)>0){o=d+32|0;O=P;P=0;while(1){if(!(i[(k[o>>2]|0)+P>>0]|0)){Z=P+1|0;_=O}else{U=Qqa(72)|0;T=P+1|0;B=0;La(33,U|0,T|0,P|0,P|0,d|0,e|0);V=B;B=0;if(V&1){$=U;break}ih(a,U)|0;Z=T;_=k[s>>2]|0}if((Z|0)<(_|0)){O=_;P=Z}else break a}P=Rb()|0;O=Q;Sqa($);X=O;Y=P;Qb(Y|0)}break}case 625:{k[n>>2]=107922;k[n+4>>2]=107944;Ska(d,2,n);P=d+56|0;O=k[P>>2]|0;if((O|0)>0){s=d+32|0;o=O;O=0;while(1){if(!(i[(k[s>>2]|0)+O>>0]|0)){aa=O+1|0;ba=o}else{T=Qqa(76)|0;U=O+1|0;B=0;La(34,T|0,U|0,O|0,O|0,d|0,e|0);V=B;B=0;if(V&1){ca=T;break}ih(a,T)|0;aa=U;ba=k[P>>2]|0}if((aa|0)<(ba|0)){o=ba;O=aa}else break a}O=Rb()|0;o=Q;Sqa(ca);X=o;Y=O;Qb(Y|0)}break}default:{O=t+56|0;o=t+4|0;k[t>>2]=27524;k[O>>2]=27544;B=0;wa(508,t+56|0,o|0);P=B;B=0;if(P&1){P=Rb()|0;da=Q;ea=P;vva(O);Qb(ea|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[O>>2]=27488;B=0;va(448,o|0);P=B;B=0;do if(P&1){s=Rb()|0;fa=Q;ga=s}else{k[o>>2]=27560;s=t+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[t+52>>2]=16;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;B=0;wa(509,o|0,p|0);U=B;B=0;if(U&1){U=Rb()|0;T=Q;Yua(p);Yua(s);Ava(o);fa=T;ga=U;break}Yua(p);B=0;U=Ia(40,t|0,107966,22)|0;T=B;B=0;b:do if(!(T&1)?(B=0,Xa(239,U|0,0)|0,V=B,B=0,!(V&1)):0){V=Ab(20)|0;B=0;eb(502,u|0,107989,109);ha=B;B=0;do if(!(ha&1)){B=0;eb(502,v|0,108099,34);ia=B;B=0;if(ia&1){ia=Rb()|0;ja=Q;Yua(u);ka=ja;la=ia;break}B=0;wa(510,w|0,o|0);ia=B;B=0;if(ia&1){ia=Rb()|0;ma=Q;na=ia;oa=1}else{B=0;ua(163,V|0,u|0,v|0,46,w|0);ia=B;B=0;if(ia&1)pa=1;else{B=0;eb(503,V|0,1240,229);B=0;pa=0}ia=Rb()|0;ja=Q;Yua(w);ma=ja;na=ia;oa=pa}Yua(v);Yua(u);if(oa){ka=ma;la=na}else{qa=ma;ra=na;break b}}else{ia=Rb()|0;ka=Q;la=ia}while(0);zb(V|0);qa=ka;ra=la}else sa=43;while(0);if((sa|0)==43){U=Rb()|0;qa=Q;ra=U}k[t>>2]=27468;k[O>>2]=27488;k[o>>2]=27560;Yua(s);Ava(o);vva(O);X=qa;Y=ra;Qb(Y|0)}while(0);da=fa;ea=ga;vva(O);Qb(ea|0)}}while(0);c:do switch(k[q>>2]|0){case 583:{Zka(d,a,134991,214);Zka(d,a,135015,217);ea=d+56|0;ga=k[ea>>2]|0;d:do if((ga|0)>0){fa=d+32|0;da=ga;ra=0;while(1){if(!(i[(k[fa>>2]|0)+ra>>0]|0)){ta=ra+1|0;xa=da}else{qa=Qqa(24)|0;t=ra+1|0;B=0;ib(295,qa|0,t|0,ra|0,d|0);la=B;B=0;if(la&1){za=qa;break}ih(c,qa)|0;ta=t;xa=k[ea>>2]|0}if((ta|0)<(xa|0)){da=xa;ra=ta}else break d}ra=Rb()|0;da=Q;Sqa(za);X=da;Y=ra;Qb(Y|0)}while(0);switch(k[d+44>>2]|0){case 3:{Aa=ea;break c;break}case 2:{Rq(a,214,215);Aa=ea;break c;break}default:{}}ga=x+56|0;O=x+4|0;k[x>>2]=27524;k[ga>>2]=27544;B=0;wa(508,x+56|0,O|0);ra=B;B=0;if(ra&1){ra=Rb()|0;Ba=Q;Ca=ra;vva(ga);Qb(Ca|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[ga>>2]=27488;B=0;va(448,O|0);ra=B;B=0;do if(ra&1){da=Rb()|0;Da=Q;Ea=da}else{k[O>>2]=27560;da=x+36|0;k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;k[da+12>>2]=0;k[x+52>>2]=16;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;B=0;wa(509,O|0,p|0);fa=B;B=0;if(fa&1){fa=Rb()|0;s=Q;Yua(p);Yua(da);Ava(O);Da=s;Ea=fa;break}Yua(p);B=0;fa=Ia(40,x|0,107966,22)|0;s=B;B=0;e:do if(!(s&1)?(B=0,Xa(239,fa|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,y|0,107989,109);qa=B;B=0;do if(!(qa&1)){B=0;eb(502,z|0,108099,34);la=B;B=0;if(la&1){la=Rb()|0;ka=Q;Yua(y);Fa=ka;Ga=la;break}B=0;wa(510,A|0,O|0);la=B;B=0;if(la&1){la=Rb()|0;Ha=1;Ja=Q;Ka=la}else{B=0;ua(163,t|0,y|0,z|0,62,A|0);la=B;B=0;if(la&1)Ma=1;else{B=0;eb(503,t|0,1240,229);B=0;Ma=0}la=Rb()|0;ka=Q;Yua(A);Ha=Ma;Ja=ka;Ka=la}Yua(z);Yua(y);if(Ha){Fa=Ja;Ga=Ka}else{Na=Ja;Oa=Ka;break e}}else{la=Rb()|0;Fa=Q;Ga=la}while(0);zb(t|0);Na=Fa;Oa=Ga}else sa=77;while(0);if((sa|0)==77){fa=Rb()|0;Na=Q;Oa=fa}k[x>>2]=27468;k[ga>>2]=27488;k[O>>2]=27560;Yua(da);Ava(O);vva(ga);X=Na;Y=Oa;Qb(Y|0)}while(0);Ba=Da;Ca=Ea;vva(ga);Qb(Ca|0);break}case 584:{Zka(d,a,134991,214);Zka(d,a,135015,217);Zka(d,a,126277,225);O=d+56|0;ra=k[O>>2]|0;f:do if((ra|0)>0){ea=d+32|0;fa=ra;s=0;while(1){if(!(i[(k[ea>>2]|0)+s>>0]|0)){Pa=s+1|0;Qa=fa}else{qa=Qqa(24)|0;V=s+1|0;B=0;ib(295,qa|0,V|0,s|0,d|0);la=B;B=0;if(la&1){Ra=qa;break}ih(c,qa)|0;Pa=V;Qa=k[O>>2]|0}if((Pa|0)<(Qa|0)){fa=Qa;s=Pa}else break f}s=Rb()|0;fa=Q;Sqa(Ra);X=fa;Y=s;Qb(Y|0)}while(0);switch(k[d+44>>2]|0){case 3:{Aa=O;break c;break}case 2:{Rq(a,214,215);Rq(a,225,227);Aa=O;break c;break}default:{}}ra=C+56|0;ga=C+4|0;k[C>>2]=27524;k[ra>>2]=27544;B=0;wa(508,C+56|0,ga|0);s=B;B=0;if(s&1){s=Rb()|0;Sa=Q;Ta=s;vva(ra);Qb(Ta|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[ra>>2]=27488;B=0;va(448,ga|0);s=B;B=0;do if(s&1){fa=Rb()|0;Ua=Q;Va=fa}else{k[ga>>2]=27560;fa=C+36|0;k[fa>>2]=0;k[fa+4>>2]=0;k[fa+8>>2]=0;k[fa+12>>2]=0;k[C+52>>2]=16;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;B=0;wa(509,ga|0,p|0);ea=B;B=0;if(ea&1){ea=Rb()|0;da=Q;Yua(p);Yua(fa);Ava(ga);Ua=da;Va=ea;break}Yua(p);B=0;ea=Ia(40,C|0,107966,22)|0;da=B;B=0;g:do if(!(da&1)?(B=0,Xa(239,ea|0,0)|0,V=B,B=0,!(V&1)):0){V=Ab(20)|0;B=0;eb(502,D|0,107989,109);qa=B;B=0;do if(!(qa&1)){B=0;eb(502,E|0,108099,34);la=B;B=0;if(la&1){la=Rb()|0;ka=Q;Yua(D);Wa=ka;Ya=la;break}B=0;wa(510,F|0,ga|0);la=B;B=0;if(la&1){la=Rb()|0;Za=1;_a=Q;$a=la}else{B=0;ua(163,V|0,D|0,E|0,78,F|0);la=B;B=0;if(la&1)ab=1;else{B=0;eb(503,V|0,1240,229);B=0;ab=0}la=Rb()|0;ka=Q;Yua(F);Za=ab;_a=ka;$a=la}Yua(E);Yua(D);if(Za){Wa=_a;Ya=$a}else{bb=_a;cb=$a;break g}}else{la=Rb()|0;Wa=Q;Ya=la}while(0);zb(V|0);bb=Wa;cb=Ya}else sa=110;while(0);if((sa|0)==110){ea=Rb()|0;bb=Q;cb=ea}k[C>>2]=27468;k[ra>>2]=27488;k[ga>>2]=27560;Yua(fa);Ava(ga);vva(ra);X=bb;Y=cb;Qb(Y|0)}while(0);Sa=Ua;Ta=Va;vva(ra);Qb(Ta|0);break}case 585:{Zka(d,a,108134,218);Zka(d,a,108159,220);Zka(d,a,108184,222);ga=d+56|0;s=k[ga>>2]|0;h:do if((s|0)>0){O=d+32|0;ea=s;da=0;while(1){if(!(i[(k[O>>2]|0)+da>>0]|0)){db=da+1|0;fb=ea}else{qa=Qqa(20)|0;t=da+1|0;B=0;ib(296,qa|0,t|0,da|0,d|0);la=B;B=0;if(la&1){gb=qa;break}ih(c,qa)|0;db=t;fb=k[ga>>2]|0}if((db|0)<(fb|0)){ea=fb;da=db}else break h}da=Rb()|0;ea=Q;Sqa(gb);X=ea;Y=da;Qb(Y|0)}while(0);switch(k[d+44>>2]|0){case 3:{Aa=ga;break c;break}case 2:{Rq(a,218,219);Rq(a,220,221);Rq(a,222,223);Aa=ga;break c;break}default:{}}s=G+56|0;ra=G+4|0;k[G>>2]=27524;k[s>>2]=27544;B=0;wa(508,G+56|0,ra|0);da=B;B=0;if(da&1){da=Rb()|0;hb=Q;jb=da;vva(s);Qb(jb|0)}k[G+128>>2]=0;k[G+132>>2]=-1;k[G>>2]=27468;k[s>>2]=27488;B=0;va(448,ra|0);da=B;B=0;do if(da&1){ea=Rb()|0;kb=Q;lb=ea}else{k[ra>>2]=27560;ea=G+36|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[G+52>>2]=16;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;B=0;wa(509,ra|0,p|0);O=B;B=0;if(O&1){O=Rb()|0;fa=Q;Yua(p);Yua(ea);Ava(ra);kb=fa;lb=O;break}Yua(p);B=0;O=Ia(40,G|0,107966,22)|0;fa=B;B=0;i:do if(!(fa&1)?(B=0,Xa(239,O|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,H|0,107989,109);qa=B;B=0;do if(!(qa&1)){B=0;eb(502,I|0,108099,34);la=B;B=0;if(la&1){la=Rb()|0;ka=Q;Yua(H);mb=ka;nb=la;break}B=0;wa(510,J|0,ra|0);la=B;B=0;if(la&1){la=Rb()|0;ob=1;pb=Q;qb=la}else{B=0;ua(163,t|0,H|0,I|0,95,J|0);la=B;B=0;if(la&1)rb=1;else{B=0;eb(503,t|0,1240,229);B=0;rb=0}la=Rb()|0;ka=Q;Yua(J);ob=rb;pb=ka;qb=la}Yua(I);Yua(H);if(ob){mb=pb;nb=qb}else{sb=pb;tb=qb;break i}}else{la=Rb()|0;mb=Q;nb=la}while(0);zb(t|0);sb=mb;tb=nb}else sa=143;while(0);if((sa|0)==143){O=Rb()|0;sb=Q;tb=O}k[G>>2]=27468;k[s>>2]=27488;k[ra>>2]=27560;Yua(ea);Ava(ra);vva(s);X=sb;Y=tb;Qb(Y|0)}while(0);hb=kb;jb=lb;vva(s);Qb(jb|0);break}default:{ra=K+56|0;da=K+4|0;k[K>>2]=27524;k[ra>>2]=27544;B=0;wa(508,K+56|0,da|0);ga=B;B=0;if(ga&1){ga=Rb()|0;ub=Q;vb=ga;vva(ra);Qb(vb|0)}k[K+128>>2]=0;k[K+132>>2]=-1;k[K>>2]=27468;k[ra>>2]=27488;B=0;va(448,da|0);ga=B;B=0;do if(ga&1){O=Rb()|0;wb=Q;xb=O}else{k[da>>2]=27560;O=K+36|0;k[O>>2]=0;k[O+4>>2]=0;k[O+8>>2]=0;k[O+12>>2]=0;k[K+52>>2]=16;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;B=0;wa(509,da|0,p|0);fa=B;B=0;if(fa&1){fa=Rb()|0;qa=Q;Yua(p);Yua(O);Ava(da);wb=qa;xb=fa;break}Yua(p);B=0;fa=Ia(40,K|0,108209,10)|0;qa=B;B=0;j:do if((((!(qa&1)?(B=0,V=ya(427,k[q>>2]|0)|0,la=B,B=0,!(la&1)):0)?(la=Lta(V)|0,B=0,ka=Ia(40,fa|0,V|0,la|0)|0,la=B,B=0,!(la&1)):0)?(B=0,la=Ia(40,ka|0,144645,14)|0,ka=B,B=0,!(ka&1)):0)?(B=0,Xa(239,la|0,0)|0,la=B,B=0,!(la&1)):0){la=Ab(20)|0;B=0;eb(502,L|0,107989,109);ka=B;B=0;do if(!(ka&1)){B=0;eb(502,M|0,108099,34);V=B;B=0;if(V&1){V=Rb()|0;na=Q;Yua(L);yb=na;Bb=V;break}B=0;wa(510,N|0,da|0);V=B;B=0;if(V&1){V=Rb()|0;Cb=1;Db=Q;Eb=V}else{B=0;ua(163,la|0,L|0,M|0,99,N|0);V=B;B=0;if(V&1)Fb=1;else{B=0;eb(503,la|0,1240,229);B=0;Fb=0}V=Rb()|0;na=Q;Yua(N);Cb=Fb;Db=na;Eb=V}Yua(M);Yua(L);if(Cb){yb=Db;Bb=Eb}else{Gb=Db;Hb=Eb;break j}}else{V=Rb()|0;yb=Q;Bb=V}while(0);zb(la|0);Gb=yb;Hb=Bb}else sa=169;while(0);if((sa|0)==169){fa=Rb()|0;Gb=Q;Hb=fa}k[K>>2]=27468;k[ra>>2]=27488;k[da>>2]=27560;Yua(O);Ava(da);vva(ra);X=Gb;Y=Hb;Qb(Y|0)}while(0);ub=wb;vb=xb;vva(ra);Qb(vb|0)}}while(0);k[m>>2]=107922;k[m+4>>2]=107944;k[m+8>>2]=108220;k[m+12>>2]=108243;k[m+16>>2]=126277;k[m+20>>2]=113372;k[m+24>>2]=113400;Lka(d,7,m);m=Qqa(376)|0;B=0;eb(520,m|0,(k[Aa>>2]|0)+1|0,d|0);Aa=B;B=0;if(Aa&1){Aa=Rb()|0;vb=Q;Sqa(m);X=vb;Y=Aa;Qb(Y|0)}ih(c,m)|0;k[l>>2]=108266;k[l+4>>2]=108276;k[l+8>>2]=127183;k[l+12>>2]=134945;k[l+16>>2]=137052;k[l+20>>2]=137867;Ska(d,6,l);l=d+40|0;if((k[l>>2]|0)==303){k[j>>2]=108286;k[j+4>>2]=108298;k[j+8>>2]=108311;Ska(d,3,j)}goa(d);j=d+52|0;m=k[j>>2]|0;k:do if((m|0)>0){c=d+36|0;Aa=m;vb=0;while(1){if(!(k[(k[c>>2]|0)+(vb<<2)>>2]|0)){Ib=vb+1|0;Jb=Aa}else{xb=Qqa(88)|0;wb=vb+1|0;B=0;ua(170,xb|0,wb|0,vb|0,vb|0,d|0);ub=B;B=0;if(ub&1){Kb=xb;break}ih(b,xb)|0;Ib=wb;Jb=k[j>>2]|0}if((Ib|0)<(Jb|0)){Aa=Jb;vb=Ib}else break k}vb=Rb()|0;Aa=Q;Sqa(Kb);X=Aa;Y=vb;Qb(Y|0)}while(0);k[h>>2]=108266;k[h+4>>2]=108276;k[h+8>>2]=127183;k[h+12>>2]=134945;k[h+16>>2]=137052;k[h+20>>2]=137867;Lka(d,6,h);if((k[l>>2]|0)!=303){r=f;return}k[g>>2]=108286;k[g+4>>2]=108298;k[g+8>>2]=108311;Lka(d,3,g);r=f;return}function yZ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;c=r;r=r+1200|0;d=c+184|0;e=c+200|0;f=c+180|0;g=c+176|0;h=c+40|0;j=c+24|0;l=c+12|0;m=c;n=vY()|0;o=(n|0)==0;a:do if(o){k[f>>2]=0;if(Wsa(e,1e3,b)|0)do if((i[e>>0]|0)==43)k[f>>2]=(k[f>>2]|0)+1;while((Wsa(e,1e3,b)|0)!=0);q=k[f>>2]|0;s=Rqa(q>>>0>536870911?-1:q<<3)|0;t=Rqa(q>>>0>1073741823?-1:q<<2)|0;if((q|0)>0)WEa(t|0,0,((q|0)>1?q:1)<<2|0)|0;dta(b,0,0)|0;k[f>>2]=0;if(!(Wsa(e,1e3,b)|0)){u=s;v=t}else{q=e+1|0;while(1){b:do switch(i[e>>0]|0){case 13:case 9:case 32:case 10:case 37:break;default:{w=e+((Lta(e)|0)+-1)|0;i[w>>0]=0;if((i[e>>0]|0)==43){x=+(zY(q,1)|0);w=k[f>>2]|0;p[s+(w<<3)>>3]=x;k[f>>2]=w+1;break b}w=t+((k[f>>2]|0)+-1<<2)|0;y=k[w>>2]|0;z=Rqa((Lta(e)|0)+1|0)|0;if(!y){A=(Lta(e)|0)+1|0;if(A)TEa(z|0,e|0,A|0)|0;k[w>>2]=z;break b}w=(Lta(e)|0)+1|0;if(w)TEa(z|0,e|0,w|0)|0;w=Rqa((Lta(y)|0)+3+(Lta(z)|0)|0)|0;A=(Lta(y)|0)+1|0;if(A){C=0;do{i[w+C>>0]=i[y+C>>0]|0;C=C+1|0}while((C|0)!=(A|0))}A=w+(Lta(w)|0)|0;i[A>>0]=32;i[A+1>>0]=0;Fta(w,z)|0;k[t+((k[f>>2]|0)+-1<<2)>>2]=w;Tqa(z);Tqa(y)}}while(0);if(!(Wsa(e,1e3,b)|0)){u=s;v=t;break a}}}}else{u=0;v=0}while(0);uY()|0;b=k[f>>2]|0;if(!n){D=u;E=v}else{v=Rqa(b>>>0>536870911?-1:b<<3)|0;D=v;E=Rqa(b>>>0>1073741823?-1:b<<2)|0}uY()|0;b=k[f>>2]|0;c:do if((b|0)>0){if(o)F=0;else{v=0;while(1){uY()|0;u=Rqa(k[g>>2]|0)|0;uY()|0;k[E+(v<<2)>>2]=u;v=v+1|0;u=k[f>>2]|0;if((v|0)>=(u|0)){G=u;break c}}}while(1){v=k[E+(F<<2)>>2]|0;if(!v){H=F;break}u=(Lta(v)|0)+1|0;k[g>>2]=u;uY()|0;uY()|0;F=F+1|0;u=k[f>>2]|0;if((F|0)>=(u|0)){G=u;break c}}u=h+56|0;v=h+4|0;k[h>>2]=27524;k[u>>2]=27544;B=0;wa(508,h+56|0,v|0);n=B;B=0;if(n&1){n=Rb()|0;I=Q;J=n;vva(u);Qb(J|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);n=B;B=0;do if(n&1){e=Rb()|0;K=Q;L=e}else{k[v>>2]=27560;e=h+36|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[h+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,v|0,d|0);t=B;B=0;if(t&1){t=Rb()|0;s=Q;Yua(d);Yua(e);Ava(v);K=s;L=t;break}Yua(d);B=0;t=Ia(40,h|0,108321,27)|0;s=B;B=0;d:do if((((!(s&1)?(B=0,q=ya(427,~~+p[D+(H<<3)>>3]|0)|0,A=B,B=0,!(A&1)):0)?(A=Lta(q)|0,B=0,C=Ia(40,t|0,q|0,A|0)|0,A=B,B=0,!(A&1)):0)?(B=0,A=Ia(40,C|0,108349,38)|0,C=B,B=0,!(C&1)):0)?(B=0,Xa(239,A|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,j|0,108388,102);C=B;B=0;do if(!(C&1)){B=0;eb(502,l|0,108491,21);q=B;B=0;if(q&1){q=Rb()|0;M=Q;Yua(j);N=M;O=q;break}B=0;wa(510,m|0,v|0);q=B;B=0;if(q&1){q=Rb()|0;P=Q;R=q;S=1}else{B=0;ua(163,A|0,j|0,l|0,106,m|0);q=B;B=0;if(q&1)T=1;else{B=0;eb(503,A|0,1240,229);B=0;T=0}q=Rb()|0;M=Q;Yua(m);P=M;R=q;S=T}Yua(l);Yua(j);if(S){N=P;O=R}else{U=P;V=R;break d}}else{q=Rb()|0;N=Q;O=q}while(0);zb(A|0);U=N;V=O}else W=48;while(0);if((W|0)==48){t=Rb()|0;U=Q;V=t}k[h>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(e);Ava(v);vva(u);X=U;Y=V;Qb(Y|0)}while(0);I=K;J=L;vva(u);Qb(J|0)}else G=b;while(0);b=Qqa(16)|0;B=0;ib(294,b|0,959,E|0,G|0);G=B;B=0;if(G&1){G=Rb()|0;J=Q;Sqa(b);X=J;Y=G;Qb(Y|0)}YN(a,b);b=Qqa(16)|0;B=0;ib(297,b|0,958,D|0,k[f>>2]|0);G=B;B=0;if(G&1){G=Rb()|0;J=Q;Sqa(b);X=J;Y=G;Qb(Y|0)}YN(a,b);b=k[f>>2]|0;if((b|0)<=0){if(E)W=65}else{a=b;b=0;while(1){Y=E+(b<<2)|0;G=k[Y>>2]|0;if(!G)Z=a;else{Tqa(G);Z=k[f>>2]|0}k[Y>>2]=0;b=b+1|0;if((b|0)>=(Z|0)){W=65;break}else a=Z}}if((W|0)==65)Tqa(E);if(!D){r=c;return}Tqa(D);r=c;return}function zZ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0;b=r;r=r+176|0;d=b+152|0;e=b+16|0;f=b;if(!(bn(a,c)|0)){r=b;return}if(!(hn(a,c)|0)){r=b;return}a:do if(BY()|0){g=e+56|0;h=e+4|0;k[e>>2]=27524;k[g>>2]=27544;B=0;wa(508,e+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(g);Qb(l|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[g>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=e+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;Ia(40,e|0,108513,34)|0;p=B;B=0;if(!(p&1)?(B=0,wa(510,f|0,h|0),p=B,B=0,!(p&1)):0){B=0;ya(425,f|0)|0;p=B;B=0;if(!(p&1)){Yua(f);k[e>>2]=27468;k[g>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(g);break a}p=Rb()|0;q=Q;Yua(f);s=q;t=p;k[e>>2]=27468;k[g>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(g);Qb(t|0)}p=Rb()|0;s=Q;t=p;k[e>>2]=27468;k[g>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(g);Qb(t|0)}while(0);j=n;l=o;vva(g);Qb(l|0)}while(0);cn(a,c);$m(a,c,943);$m(a,c,937);$m(a,c,966);r=b;return}function AZ(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;g=r;r=r+224|0;f=g+204|0;e=g;d=g+200|0;i=g+196|0;j=g+192|0;l=g+188|0;m=g+184|0;n=g+48|0;o=g+32|0;q=g+20|0;s=g+8|0;cO(h,d,944);k[l>>2]=-1;k[i>>2]=0;a:do if((th(c)|0)>0){h=0;while(1){t=qh(c,h)|0;u=ld[k[(k[t>>2]|0)+376>>2]&127](t,e,k[d>>2]|0,b)|0;k[i>>2]=u;h=h+1|0;if(u)break;if((h|0)>=(th(c)|0))break a}h=vY()|0;k[l>>2]=h}while(0);fZ(i,j,1,4,4,uY()|0)|0;if(k[j>>2]|0){fZ(l,m,1,4,1,uY()|0)|0;uY()|0;p[a>>3]=+p[e>>3];r=g;return}g=n+56|0;e=n+4|0;k[n>>2]=27524;k[g>>2]=27544;B=0;wa(508,n+56|0,e|0);a=B;B=0;if(a&1){a=Rb()|0;v=Q;w=a;vva(g);Qb(w|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[g>>2]=27488;B=0;va(448,e|0);a=B;B=0;do if(a&1){m=Rb()|0;x=Q;y=m}else{k[e>>2]=27560;m=n+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,e|0,f|0);l=B;B=0;if(l&1){l=Rb()|0;j=Q;Yua(f);Yua(m);Ava(e);x=j;y=l;break}Yua(f);B=0;l=Ia(40,n|0,108548,43)|0;j=B;B=0;if(((((!(j&1)?(B=0,j=Xa(242,l|0,k[d>>2]|0)|0,l=B,B=0,!(l&1)):0)?(B=0,l=Ia(40,j|0,108592,24)|0,j=B,B=0,!(j&1)):0)?(B=0,j=ya(427,b|0)|0,i=B,B=0,!(i&1)):0)?(i=Lta(j)|0,B=0,c=Ia(40,l|0,j|0,i|0)|0,i=B,B=0,!(i&1)):0)?(B=0,Xa(239,c|0,0)|0,c=B,B=0,!(c&1)):0){c=Ab(20)|0;B=0;eb(502,o|0,108617,82);i=B;B=0;do if(!(i&1)){B=0;eb(502,q|0,108700,11);j=B;B=0;if(j&1){j=Rb()|0;l=Q;Yua(o);z=l;A=j;break}B=0;wa(510,s|0,e|0);j=B;B=0;if(j&1){j=Rb()|0;C=Q;D=j;E=1}else{B=0;ua(163,c|0,o|0,q|0,35,s|0);j=B;B=0;if(j&1)F=1;else{B=0;eb(503,c|0,1240,229);B=0;F=0}j=Rb()|0;l=Q;Yua(s);C=l;D=j;E=F}Yua(q);Yua(o);if(E){z=C;A=D}else{G=C;H=D;k[n>>2]=27468;k[g>>2]=27488;k[e>>2]=27560;Yua(m);Ava(e);vva(g);Qb(H|0)}}else{j=Rb()|0;z=Q;A=j}while(0);zb(c|0);G=z;H=A;k[n>>2]=27468;k[g>>2]=27488;k[e>>2]=27560;Yua(m);Ava(e);vva(g);Qb(H|0)}i=Rb()|0;G=Q;H=i;k[n>>2]=27468;k[g>>2]=27488;k[e>>2]=27560;Yua(m);Ava(e);vva(g);Qb(H|0)}while(0);v=x;w=y;vva(g);Qb(w|0)}function BZ(a,b){a=a|0;b=b|0;b=nn(a)|0;mn(a,b);ln(a,b);return}function CZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0;b=r;r=r+128|0;c=b;d=b+20|0;e=b+16|0;f=b+28|0;g=b+25|0;h=b+12|0;j=b+8|0;l=b+24|0;k[d>>2]=0;k[e>>2]=0;k[j>>2]=0;i[l>>0]=0;m=a+44|0;bO(k[m>>2]|0,l,314);n=vY()|0;if(i[l>>0]|0){r=b;return}l=(n|0)==0;if(l){cO(k[m>>2]|0,h,476);yY(j,k[h>>2]|0);h=k[a+48>>2]|0;o=Qqa(40)|0;B=0;q=ya(428,h|0)|0;s=B;B=0;if(s&1){t=Rb()|0;u=Q;Sqa(o);Qb(t|0)}s=k[j>>2]|0;k[o>>2]=36536;k[o+4>>2]=q+1;q=(Lta(s)|0)+1|0;B=0;v=ya(422,q|0)|0;q=B;B=0;if(q&1){t=Rb()|0;u=Q;Sqa(o);Qb(t|0)}k[o+12>>2]=v;q=(Lta(s)|0)+1|0;if(!s){B=0;ib(283,142353,108712,137,142345);B=0;t=Rb()|0;u=Q;Sqa(o);Qb(t|0)}if(q)TEa(v|0,s|0,q|0)|0;k[o+24>>2]=-9999;p[o+32>>3]=-9999.0;B=0;wa(512,o+8|0,476);q=B;B=0;if(q&1){t=Rb()|0;u=Q;Sqa(o);Qb(t|0)}Oo(h,o)|0;o=k[j>>2]|0;if(o)Tqa(o);k[j>>2]=0}if(!(aO(k[m>>2]|0,951)|0)){fO(k[m>>2]|0,e,954);bO(k[m>>2]|0,g,326);if(i[g>>0]|0){if(l){l=nY(k[e>>2]|0,108824)|0;k[d>>2]=l}}else{lO(k[m>>2]|0,d,951);k[c>>2]=k[e>>2];k[c+4>>2]=n;qta(f,108827,c)|0;c=oY(f,108824,1)|0;k[d>>2]=c}c=k[e>>2]|0;if(c)Tqa(c);k[e>>2]=0;rO(k[m>>2]|0,k[d>>2]|0,951)}d=a+48|0;No(k[d>>2]|0,k[m>>2]|0);kh(k[d>>2]|0);r=b;return}function DZ(a){a=a|0;var b=0,c=0;k[a>>2]=36536;b=a+8|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+12|0;a=k[b>>2]|0;if(!a){k[b>>2]=0;return}Tqa(a);k[b>>2]=0;return}function EZ(a){a=a|0;var b=0,c=0;k[a>>2]=36536;b=a+8|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=k[a+12>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function FZ(a){a=a|0;Ec[k[(k[a>>2]|0)+12>>2]&1023](a);return}function GZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;b=r;r=r+320|0;c=b+300|0;d=b+152|0;e=b+288|0;f=b+16|0;g=b;h=d+56|0;i=d+4|0;k[d>>2]=27524;k[h>>2]=27544;B=0;wa(508,d+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(h);Qb(m|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[h>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=d+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,i|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(c);Yua(n);Ava(i);o=s;p=q;break}Yua(c);B=0;Ia(40,d|0,109006,30)|0;q=B;B=0;do if(!(q&1)?(B=0,wa(510,e|0,i|0),s=B,B=0,!(s&1)):0){B=0;ya(424,e|0)|0;s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(e);u=t;v=s;break}Yua(e);k[d>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);QZ(a);s=f+56|0;t=f+4|0;k[f>>2]=27524;k[s>>2]=27544;B=0;wa(508,f+56|0,t|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;y=w;vva(s);Qb(y|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);w=B;B=0;do if(w&1){z=Rb()|0;A=Q;C=z}else{k[t>>2]=27560;z=f+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,t|0,c|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(c);Yua(z);Ava(t);A=E;C=D;break}Yua(c);B=0;D=Ia(40,f|0,109037,10)|0;E=B;B=0;do if(((!(E&1)?(F=k[a+12>>2]|0,G=Lta(F)|0,B=0,H=Ia(40,D|0,F|0,G|0)|0,G=B,B=0,!(G&1)):0)?(B=0,Ia(40,H|0,149177,1)|0,H=B,B=0,!(H&1)):0)?(B=0,wa(510,g|0,t|0),H=B,B=0,!(H&1)):0){B=0;ya(424,g|0)|0;H=B;B=0;if(H&1){H=Rb()|0;G=Q;Yua(g);I=G;J=H;break}else{Yua(g);k[f>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(z);Ava(t);vva(s);r=b;return}}else K=29;while(0);if((K|0)==29){D=Rb()|0;I=Q;J=D}k[f>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(z);Ava(t);vva(s);L=I;M=J;Qb(M|0)}while(0);x=A;y=C;vva(s);Qb(y|0)}else K=26;while(0);if((K|0)==26){q=Rb()|0;u=Q;v=q}k[d>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);L=u;M=v;Qb(M|0)}while(0);l=o;m=p;vva(h);Qb(m|0)}function HZ(a){a=a|0;return -1}function IZ(a){a=a|0;return 765}function JZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0.0,h=0,i=0;b=Qqa(40)|0;c=k[a+4>>2]|0;d=k[a+8>>2]|0;e=k[a+12>>2]|0;f=k[a+24>>2]|0;g=+p[a+32>>3];k[b>>2]=36536;k[b+4>>2]=c;k[b+12>>2]=e;k[b+24>>2]=f;p[b+32>>3]=g;k[b+16>>2]=1;k[b+20>>2]=1;f=(Lta(d)|0)+1|0;B=0;e=ya(422,f|0)|0;f=B;B=0;if(f&1){h=Rb()|0;i=Q;Sqa(b);Qb(h|0)}k[b+8>>2]=e;f=(Lta(d)|0)+1|0;if(!d){B=0;ib(283,142353,108712,137,142345);B=0;h=Rb()|0;i=Q;Sqa(b);Qb(h|0)}if(!f)return b|0;TEa(e|0,d|0,f|0)|0;return b|0}function KZ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;if(!(d&-3))n=(Lta(k[a+12>>2]|0)|0)+1|0;else n=0;switch(d|0){case 0:{d=k[b>>2]|0;o=a+4|0;q=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[d>>0]=q;i[d+1>>0]=q>>8;i[d+2>>0]=q>>16;i[d+3>>0]=q>>24;q=(k[b>>2]|0)+4|0;k[b>>2]=q;d=a+8|0;o=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=o;i[q+1>>0]=o>>8;i[q+2>>0]=o>>16;i[q+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;q=a+12|0;d=(k[q>>2]|0)==0;i[o>>0]=d&1;o=(k[b>>2]|0)+1|0;k[b>>2]=o;if(d)s=o;else{TEa(o|0,k[q>>2]|0,n|0)|0;q=(k[b>>2]|0)+n|0;k[b>>2]=q;s=q}q=a+24|0;o=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24;i[s>>0]=o;i[s+1>>0]=o>>8;i[s+2>>0]=o>>16;i[s+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;s=a+32|0;q=s;d=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24;q=s+4|0;s=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24;q=o;o=q;i[o>>0]=d;i[o+1>>0]=d>>8;i[o+2>>0]=d>>16;i[o+3>>0]=d>>24;d=q+4|0;i[d>>0]=s;i[d+1>>0]=s>>8;i[d+2>>0]=s>>16;i[d+3>>0]=s>>24;k[b>>2]=(k[b>>2]|0)+8;r=e;return}case 2:{s=k[c>>2]|0;k[c>>2]=s+12;k[c>>2]=s+13+((k[a+12>>2]|0)==0?0:n)+12;r=e;return}case 1:{n=a+4|0;s=k[b>>2]|0;c=l[s>>0]|l[s+1>>0]<<8|l[s+2>>0]<<16|l[s+3>>0]<<24;i[n>>0]=c;i[n+1>>0]=c>>8;i[n+2>>0]=c>>16;i[n+3>>0]=c>>24;c=(k[b>>2]|0)+4|0;k[b>>2]=c;n=a+8|0;s=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[n>>0]=s;i[n+1>>0]=s>>8;i[n+2>>0]=s>>16;i[n+3>>0]=s>>24;s=k[b>>2]|0;n=s+4|0;k[b>>2]=n;c=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=s+8|0;k[b>>2]=n;d=i[n>>0]|0;n=s+9|0;k[b>>2]=n;if(!(d&1)){d=Rqa(c)|0;k[a+12>>2]=d;s=k[b>>2]|0;TEa(d|0,s|0,c|0)|0;d=s+c|0;k[b>>2]=d;u=d}else u=n;n=a+24|0;d=l[u>>0]|l[u+1>>0]<<8|l[u+2>>0]<<16|l[u+3>>0]<<24;i[n>>0]=d;i[n+1>>0]=d>>8;i[n+2>>0]=d>>16;i[n+3>>0]=d>>24;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+32|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[n>>0]=i[t>>0];i[n+1>>0]=i[t+1>>0];i[n+2>>0]=i[t+2>>0];i[n+3>>0]=i[t+3>>0];i[n+4>>0]=i[t+4>>0];i[n+5>>0]=i[t+5>>0];i[n+6>>0]=i[t+6>>0];i[n+7>>0]=i[t+7>>0];k[b>>2]=(k[b>>2]|0)+8;r=e;return}default:{e=g+56|0;b=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,b|0);n=B;B=0;if(n&1){n=Rb()|0;v=Q;w=n;vva(e);Qb(w|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,b|0);n=B;B=0;do if(n&1){d=Rb()|0;x=Q;y=d}else{k[b>>2]=27560;d=g+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);a=B;B=0;if(a&1){a=Rb()|0;u=Q;Yua(f);Yua(d);Ava(b);x=u;y=a;break}Yua(f);B=0;a=Ia(40,g|0,143951,43)|0;u=B;B=0;if(!(u&1)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,h|0,108871,125);u=B;B=0;do if(!(u&1)){B=0;eb(502,j|0,149525,8);c=B;B=0;if(c&1){c=Rb()|0;s=Q;Yua(h);z=s;A=c;break}B=0;wa(510,m|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;C=Q;D=c;E=1}else{B=0;ua(163,a|0,h|0,j|0,330,m|0);c=B;B=0;if(c&1)F=1;else{B=0;eb(503,a|0,1240,229);B=0;F=0}c=Rb()|0;s=Q;Yua(m);C=s;D=c;E=F}Yua(j);Yua(h);if(E){z=C;A=D}else{G=C;H=D;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(d);Ava(b);vva(e);Qb(H|0)}}else{c=Rb()|0;z=Q;A=c}while(0);zb(a|0);G=z;H=A;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(d);Ava(b);vva(e);Qb(H|0)}u=Rb()|0;G=Q;H=u;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(d);Ava(b);vva(e);Qb(H|0)}while(0);v=x;w=y;vva(e);Qb(w|0)}}}function LZ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;c=r;r=r+32|0;d=c;e=c+16|0;f=c+12|0;g=c+8|0;if(vY()|0){r=c;return}h=a+8|0;i=(Lta(k[h>>2]|0)|0)+1|0;k[e>>2]=i;jta(e,4,1,b)|0;jta(k[h>>2]|0,k[e>>2]|0,1,b)|0;p[d>>3]=+p[a+32>>3];jta(d,8,1,b)|0;jta(a+24|0,4,1,b)|0;k[f>>2]=2;jta(f,4,1,b)|0;f=a+12|0;a=(Lta(k[f>>2]|0)|0)+1|0;k[g>>2]=a;jta(g,4,1,b)|0;jta(k[f>>2]|0,k[g>>2]|0,1,b)|0;r=c;return}function MZ(a){a=a|0;var b=0,c=0;b=k[a+8>>2]|0;a=Rqa((Lta(b)|0)+1|0)|0;c=(Lta(b)|0)+1|0;if(!b)yb(142353,108712,137,142345);if(!c)return a|0;TEa(a|0,b|0,c|0)|0;return a|0}function NZ(a){a=a|0;return k[a+24>>2]|0}function OZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,108833,37)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,108871,125);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,108997,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,197,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function PZ(a){a=a|0;return zY(k[a+8>>2]|0,0)|0}function QZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0;b=r;r=r+624|0;c=b+604|0;d=b+456|0;e=b+592|0;f=b+304|0;g=b+440|0;h=b+152|0;i=b+288|0;j=b+16|0;l=b;m=d+56|0;n=d+4|0;k[d>>2]=27524;k[m>>2]=27544;B=0;wa(508,d+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;q=Q;s=o;vva(m);Qb(s|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){t=Rb()|0;u=Q;v=t}else{k[n>>2]=27560;t=d+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,n|0,c|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(c);Yua(t);Ava(n);u=x;v=w;break}Yua(c);B=0;w=Ia(40,d|0,109048,17)|0;x=B;B=0;do if(((!(x&1)?(B=0,y=Xa(242,w|0,k[a+4>>2]|0)|0,z=B,B=0,!(z&1)):0)?(B=0,Ia(40,y|0,149177,1)|0,y=B,B=0,!(y&1)):0)?(B=0,wa(510,e|0,n|0),y=B,B=0,!(y&1)):0){B=0;ya(424,e|0)|0;y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(e);A=z;C=y;break}Yua(e);k[d>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);y=f+56|0;z=f+4|0;k[f>>2]=27524;k[y>>2]=27544;B=0;wa(508,f+56|0,z|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;F=D;vva(y);Qb(F|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[y>>2]=27488;B=0;va(448,z|0);D=B;B=0;do if(D&1){G=Rb()|0;H=Q;I=G}else{k[z>>2]=27560;G=f+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,z|0,c|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(c);Yua(G);Ava(z);H=K;I=J;break}Yua(c);B=0;J=Ia(40,f|0,109066,17)|0;K=B;B=0;do if(((!(K&1)?(L=k[a+8>>2]|0,M=Lta(L)|0,B=0,N=Ia(40,J|0,L|0,M|0)|0,M=B,B=0,!(M&1)):0)?(B=0,Ia(40,N|0,149177,1)|0,N=B,B=0,!(N&1)):0)?(B=0,wa(510,g|0,z|0),N=B,B=0,!(N&1)):0){B=0;ya(424,g|0)|0;N=B;B=0;if(N&1){N=Rb()|0;M=Q;Yua(g);O=M;P=N;break}Yua(g);k[f>>2]=27468;k[y>>2]=27488;k[z>>2]=27560;Yua(G);Ava(z);vva(y);N=h+56|0;M=h+4|0;k[h>>2]=27524;k[N>>2]=27544;B=0;wa(508,h+56|0,M|0);L=B;B=0;if(L&1){L=Rb()|0;R=Q;S=L;vva(N);Qb(S|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[N>>2]=27488;B=0;va(448,M|0);L=B;B=0;do if(L&1){T=Rb()|0;U=Q;V=T}else{k[M>>2]=27560;T=h+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,M|0,c|0);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Yua(c);Yua(T);Ava(M);U=X;V=W;break}Yua(c);B=0;W=Ia(40,h|0,109084,17)|0;X=B;B=0;do if(X&1)Y=60;else{B=0;Z=Xa(242,W|0,k[a+24>>2]|0)|0;_=B;B=0;if(_&1){Y=60;break}B=0;Ia(40,Z|0,149177,1)|0;Z=B;B=0;if(Z&1){Y=60;break}B=0;wa(510,i|0,M|0);Z=B;B=0;if(Z&1){Y=60;break}B=0;ya(424,i|0)|0;Z=B;B=0;if(Z&1){Z=Rb()|0;_=Q;Yua(i);$=_;aa=Z;break}Yua(i);k[h>>2]=27468;k[N>>2]=27488;k[M>>2]=27560;Yua(T);Ava(M);vva(N);Z=j+56|0;_=j+4|0;k[j>>2]=27524;k[Z>>2]=27544;B=0;wa(508,j+56|0,_|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;da=ba;vva(Z);Qb(da|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[Z>>2]=27488;B=0;va(448,_|0);ba=B;B=0;do if(ba&1){ea=Rb()|0;fa=Q;ga=ea}else{k[_>>2]=27560;ea=j+36|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,_|0,c|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(c);Yua(ea);Ava(_);fa=ia;ga=ha;break}Yua(c);B=0;ha=Ia(40,j|0,109102,17)|0;ia=B;B=0;do if(!(ia&1)){B=0;ja=Sa(1,ha|0,+(+p[a+32>>3]))|0;ka=B;B=0;if(ka&1){Y=63;break}B=0;Ia(40,ja|0,149177,1)|0;ja=B;B=0;if(ja&1){Y=63;break}B=0;wa(510,l|0,_|0);ja=B;B=0;if(ja&1){Y=63;break}B=0;ya(424,l|0)|0;ja=B;B=0;if(ja&1){ja=Rb()|0;ka=Q;Yua(l);la=ka;ma=ja;break}else{Yua(l);k[j>>2]=27468;k[Z>>2]=27488;k[_>>2]=27560;Yua(ea);Ava(_);vva(Z);r=b;return}}else Y=63;while(0);if((Y|0)==63){ha=Rb()|0;la=Q;ma=ha}k[j>>2]=27468;k[Z>>2]=27488;k[_>>2]=27560;Yua(ea);Ava(_);vva(Z);na=la;oa=ma;Qb(oa|0)}while(0);ca=fa;da=ga;vva(Z);Qb(da|0)}while(0);if((Y|0)==60){W=Rb()|0;$=Q;aa=W}k[h>>2]=27468;k[N>>2]=27488;k[M>>2]=27560;Yua(T);Ava(M);vva(N);na=$;oa=aa;Qb(oa|0)}while(0);R=U;S=V;vva(N);Qb(S|0)}else Y=57;while(0);if((Y|0)==57){J=Rb()|0;O=Q;P=J}k[f>>2]=27468;k[y>>2]=27488;k[z>>2]=27560;Yua(G);Ava(z);vva(y);na=O;oa=P;Qb(oa|0)}while(0);E=H;F=I;vva(y);Qb(F|0)}else Y=54;while(0);if((Y|0)==54){w=Rb()|0;A=Q;C=w}k[d>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);na=A;oa=C;Qb(oa|0)}while(0);q=u;s=v;vva(m);Qb(s|0)}function RZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;b=r;r=r+192|0;c=b+180|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;h=k[a+20>>2]|0;cO(k[a+44>>2]|0,b+176|0,298);if((th(h)|0)>0)i=0;else{r=b;return}a:while(1){a=qh(h,i)|0;j=Hc[k[(k[a>>2]|0)+164>>2]&511](a)|0;l=Rqa(j>>>0>536870911?-1:j<<3)|0;do if(((Hc[k[(k[a>>2]|0)+128>>2]&511](a)|0)+-751|0)>>>0<8){m=Wo(a,992)|0;if(!m)break a;n=Hc[k[(k[a>>2]|0)+304>>2]&511](a)|0;if((Hc[k[(k[a>>2]|0)+396>>2]&511](a)|0)>0){o=0;do{q=k[(k[n>>2]|0)+32>>2]|0;s=Hc[k[(k[a>>2]|0)+504>>2]&511](a)|0;nd[q&1023](n,s,o);nd[k[(k[m>>2]|0)+48>>2]&1023](m,l+(o<<3)|0,n);o=o+1|0}while((o|0)<(Hc[k[(k[a>>2]|0)+396>>2]&511](a)|0))}if((Hc[k[(k[a>>2]|0)+392>>2]&511](a)|0)<=0){if(!n)break}else{o=0;do{s=k[(k[n>>2]|0)+32>>2]|0;q=Hc[k[(k[a>>2]|0)+404>>2]&511](a)|0;nd[s&1023](n,q,o);q=k[(k[m>>2]|0)+48>>2]|0;s=l+((Hc[k[(k[a>>2]|0)+396>>2]&511](a)|0)+o<<3)|0;nd[q&1023](m,s,n);o=o+1|0}while((o|0)<(Hc[k[(k[a>>2]|0)+392>>2]&511](a)|0))}Ec[k[(k[n>>2]|0)+4>>2]&1023](n)}else vp(a,l,992);while(0);if((j|0)>0){o=0;do{m=ed[k[(k[a>>2]|0)+156>>2]&511](a,o)|0;if(+p[l+(o<<3)>>3]==1.0)bo(m);else $n(m);o=o+1|0}while((o|0)!=(j|0))}Tqa(l);i=i+1|0;if((i|0)>=(th(h)|0)){t=46;break}}if((t|0)==46){r=b;return}b=d+56|0;t=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,t|0);h=B;B=0;if(h&1){h=Rb()|0;u=Q;v=h;vva(b);Qb(v|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,t|0);h=B;B=0;do if(h&1){i=Rb()|0;w=Q;x=i}else{k[t>>2]=27560;i=d+36|0;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;k[i+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,t|0,c|0);j=B;B=0;if(j&1){j=Rb()|0;o=Q;Yua(c);Yua(i);Ava(t);w=o;x=j;break}Yua(c);B=0;j=Ia(40,d|0,109148,6)|0;o=B;B=0;if((((!(o&1)?(B=0,o=ya(427,992)|0,a=B,B=0,!(a&1)):0)?(a=Lta(o)|0,B=0,m=Ia(40,j|0,o|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,a=Ia(40,m|0,109155,21)|0,m=B,B=0,!(m&1)):0)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,e|0,109177,96);m=B;B=0;do if(!(m&1)){B=0;eb(502,f|0,109274,18);o=B;B=0;if(o&1){o=Rb()|0;j=Q;Yua(e);y=j;z=o;break}B=0;wa(510,g|0,t|0);o=B;B=0;if(o&1){o=Rb()|0;A=Q;C=o;D=1}else{B=0;ua(163,a|0,e|0,f|0,33,g|0);o=B;B=0;if(o&1)E=1;else{B=0;eb(503,a|0,1240,229);B=0;E=0}o=Rb()|0;j=Q;Yua(g);A=j;C=o;D=E}Yua(f);Yua(e);if(D){y=A;z=C}else{F=A;G=C;k[d>>2]=27468;k[b>>2]=27488;k[t>>2]=27560;Yua(i);Ava(t);vva(b);Qb(G|0)}}else{o=Rb()|0;y=Q;z=o}while(0);zb(a|0);F=y;G=z;k[d>>2]=27468;k[b>>2]=27488;k[t>>2]=27560;Yua(i);Ava(t);vva(b);Qb(G|0)}m=Rb()|0;F=Q;G=m;k[d>>2]=27468;k[b>>2]=27488;k[t>>2]=27560;Yua(i);Ava(t);vva(b);Qb(G|0)}while(0);u=w;v=x;vva(b);Qb(v|0)}function SZ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;b=nn(k[a+28>>2]|0)|0;c=Qqa(8)|0;B=0;va(485,c|0);d=B;B=0;a:do if(!(d&1)){do if(k[c>>2]|0){B=0;e=ya(423,4)|0;f=B;B=0;if(f&1)break a;B=0;eb(505,e|0,b|0,0);f=B;B=0;if(!(f&1)){k[c+4>>2]=e;break}f=Rb()|0;g=Q;Sqa(e);h=g;i=f;Sqa(c);Qb(i|0)}while(0);f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=c+4|0;e=0;do{j=qh(k[f>>2]|0,e)|0;l=Hc[k[(k[j>>2]|0)+172>>2]&511](j)|0;if(($p(j)|0)&(l|0)>0){m=j+24|0;j=0;do{n=Bo(k[(k[m>>2]|0)+(j<<2)>>2]|0)|0;if(k[c>>2]|0){o=k[k[g>>2]>>2]|0;Jc[k[(k[o>>2]|0)+20>>2]&1](o,n,1.0,0)}j=j+1|0}while((j|0)!=(l|0))}e=e+1|0}while((e|0)<(th(k[f>>2]|0)|0))}if((k[c>>2]|0)!=0?(f=c+4|0,e=k[k[f>>2]>>2]|0,Ec[k[(k[e>>2]|0)+12>>2]&1023](e),(k[c>>2]|0)!=0):0){e=k[k[f>>2]>>2]|0;p=Hc[k[(k[e>>2]|0)+52>>2]&511](e)|0}else p=0;WZ(a,p,992,629);if((k[c>>2]|0)!=0?(e=k[c+4>>2]|0,(e|0)!=0):0){f=k[e>>2]|0;if(f)Ec[k[(k[f>>2]|0)+4>>2]&1023](f);Sqa(e)}Sqa(c);if(!p)return;Tqa(p);return}while(0);p=Rb()|0;h=Q;i=p;Sqa(c);Qb(i|0)}function TZ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;i=e+12|0;j=e;a:do switch(d|0){case 629:case 628:{l=Qqa(8)|0;B=0;m=ya(429,k[b+28>>2]|0)|0;n=B;B=0;do if(!(n&1)?(B=0,va(485,l|0),o=B,B=0,!(o&1)):0){if(!(k[l>>2]|0)){p=l;break a}B=0;o=ya(423,4)|0;q=B;B=0;if(!(q&1)){B=0;eb(505,o|0,m|0,0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Sqa(o);t=s;u=q;break}else{k[l+4>>2]=o;p=l;break a}}else v=9}else v=9;while(0);if((v|0)==9){m=Rb()|0;t=Q;u=m}Sqa(l);w=t;x=u;Qb(x|0);break}case 608:case 549:{m=Qqa(8)|0;B=0;n=ya(433,k[b+24>>2]|0)|0;o=B;B=0;do if(!(o&1)?(B=0,va(485,m|0),q=B,B=0,!(q&1)):0){if(!(k[m>>2]|0)){p=m;break a}B=0;q=ya(423,4)|0;s=B;B=0;if(!(s&1)){B=0;eb(505,q|0,n|0,0);s=B;B=0;if(s&1){s=Rb()|0;y=Q;Sqa(q);z=y;A=s;break}else{k[m+4>>2]=q;p=m;break a}}else v=18}else v=18;while(0);if((v|0)==18){n=Rb()|0;z=Q;A=n}Sqa(m);w=z;x=A;Qb(x|0);break}default:{n=g+56|0;o=g+4|0;k[g>>2]=27524;k[n>>2]=27544;B=0;wa(508,g+56|0,o|0);l=B;B=0;if(l&1){l=Rb()|0;C=Q;D=l;vva(n);Qb(D|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[n>>2]=27488;B=0;va(448,o|0);l=B;B=0;do if(l&1){q=Rb()|0;E=Q;F=q}else{k[o>>2]=27560;q=g+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,o|0,f|0);s=B;B=0;if(s&1){s=Rb()|0;y=Q;Yua(f);Yua(q);Ava(o);E=y;F=s;break}Yua(f);B=0;s=Ia(40,g|0,109293,13)|0;y=B;B=0;b:do if((((!(y&1)?(B=0,G=ya(427,d|0)|0,H=B,B=0,!(H&1)):0)?(H=Lta(G)|0,B=0,I=Ia(40,s|0,G|0,H|0)|0,H=B,B=0,!(H&1)):0)?(B=0,H=Ia(40,I|0,146956,19)|0,I=B,B=0,!(I&1)):0)?(B=0,Xa(239,H|0,0)|0,H=B,B=0,!(H&1)):0){H=Ab(20)|0;B=0;eb(502,h|0,109307,100);I=B;B=0;do if(!(I&1)){B=0;eb(502,i|0,109408,20);G=B;B=0;if(G&1){G=Rb()|0;J=Q;Yua(h);K=J;L=G;break}B=0;wa(510,j|0,o|0);G=B;B=0;if(G&1){G=Rb()|0;M=Q;N=G;O=1}else{B=0;ua(163,H|0,h|0,i|0,22,j|0);G=B;B=0;if(G&1)P=1;else{B=0;eb(503,H|0,1240,229);B=0;P=0}G=Rb()|0;J=Q;Yua(j);M=J;N=G;O=P}Yua(i);Yua(h);if(O){K=M;L=N}else{R=M;S=N;break b}}else{G=Rb()|0;K=Q;L=G}while(0);zb(H|0);R=K;S=L}else v=38;while(0);if((v|0)==38){s=Rb()|0;R=Q;S=s}k[g>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(q);Ava(o);vva(n);w=R;x=S;Qb(x|0)}while(0);C=E;D=F;vva(n);Qb(D|0)}}while(0);D=b+20|0;if((th(k[D>>2]|0)|0)>0){b=0;do{Gp(qh(k[D>>2]|0,b)|0,p,c,d);b=b+1|0}while((b|0)<(th(k[D>>2]|0)|0))}if(!(k[p>>2]|0)){k[a>>2]=p;r=e;return}D=k[k[p+4>>2]>>2]|0;Ec[k[(k[D>>2]|0)+12>>2]&1023](D);k[a>>2]=p;r=e;return}function UZ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=r;r=r+16|0;f=e;k[f>>2]=0;TZ(f,b,c,d);d=k[f>>2]|0;if(!(k[d>>2]|0))if(!d){g=0;k[a>>2]=g;r=e;return}else h=0;else{f=k[k[d+4>>2]>>2]|0;h=Hc[k[(k[f>>2]|0)+52>>2]&511](f)|0}if((k[d>>2]|0)!=0?(f=k[d+4>>2]|0,(f|0)!=0):0){c=k[f>>2]|0;if(c)Ec[k[(k[c>>2]|0)+4>>2]&1023](c);Sqa(f)}Sqa(d);g=h;k[a>>2]=g;r=e;return}function VZ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if(!(k[b>>2]|0)){WZ(a,0,c,d);return}e=k[k[b+4>>2]>>2]|0;b=Hc[k[(k[e>>2]|0)+52>>2]&511](e)|0;WZ(a,b,c,d);if(!b)return;Tqa(b);return}function WZ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=a+20|0;if((th(k[e>>2]|0)|0)>0){f=0;do{g=(qh(k[e>>2]|0,f)|0)+4|0;rd[k[k[g>>2]>>2]&511](g,b,c,d);f=f+1|0}while((f|0)<(th(k[e>>2]|0)|0))}e=a+36|0;if((bL(k[e>>2]|0)|0)>0){f=0;do{g=(qh(k[e>>2]|0,f)|0)+4|0;rd[k[k[g>>2]>>2]&511](g,b,c,d);f=f+1|0}while((f|0)<(bL(k[e>>2]|0)|0))}e=a+40|0;if((th(k[e>>2]|0)|0)>0)h=0;else return;do{a=(qh(k[e>>2]|0,h)|0)+4|0;rd[k[k[a>>2]>>2]&511](a,b,c,d);h=h+1|0}while((h|0)<(th(k[e>>2]|0)|0));return}function XZ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0;g=r;r=r+480|0;h=g+456|0;i=g+440|0;j=g+304|0;l=g+444|0;m=g+152|0;n=g+288|0;o=g+16|0;p=g;cO(f,i,478);a:do if(AY()|0){q=j+56|0;s=j+4|0;k[j>>2]=27524;k[q>>2]=27544;B=0;wa(508,j+56|0,s|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;v=t;vva(q);Qb(v|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[q>>2]=27488;B=0;va(448,s|0);t=B;B=0;do if(t&1){w=Rb()|0;x=Q;y=w}else{k[s>>2]=27560;w=j+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[j+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,s|0,h|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(h);Yua(w);Ava(s);x=A;y=z;break}Yua(h);B=0;Ia(40,j|0,109429,30)|0;z=B;B=0;do if(!(z&1)?(B=0,wa(510,l|0,s|0),A=B,B=0,!(A&1)):0){B=0;ya(425,l|0)|0;A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(l);D=C;E=A;break}else{Yua(l);k[j>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);break a}}else F=15;while(0);if((F|0)==15){z=Rb()|0;D=Q;E=z}k[j>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);G=D;H=E;Qb(H|0)}while(0);u=x;v=y;vva(q);Qb(v|0)}while(0);if((th(a)|0)>0){v=0;do{y=qh(a,v)|0;ad[k[(k[y>>2]|0)+92>>2]&63](y,a,b,c,d,e,f);v=v+1|0}while((v|0)<(th(a)|0))}b:do if(AY()|0){v=m+56|0;y=m+4|0;k[m>>2]=27524;k[v>>2]=27544;B=0;wa(508,m+56|0,y|0);x=B;B=0;if(x&1){x=Rb()|0;I=Q;J=x;vva(v);Qb(J|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[v>>2]=27488;B=0;va(448,y|0);x=B;B=0;do if(x&1){u=Rb()|0;K=Q;L=u}else{k[y>>2]=27560;u=m+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[m+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,y|0,h|0);E=B;B=0;if(E&1){E=Rb()|0;D=Q;Yua(h);Yua(u);Ava(y);K=D;L=E;break}Yua(h);B=0;Ia(40,m|0,109460,27)|0;E=B;B=0;do if(!(E&1)?(B=0,wa(510,n|0,y|0),D=B,B=0,!(D&1)):0){B=0;ya(425,n|0)|0;D=B;B=0;if(D&1){D=Rb()|0;j=Q;Yua(n);M=j;N=D;break}else{Yua(n);k[m>>2]=27468;k[v>>2]=27488;k[y>>2]=27560;Yua(u);Ava(y);vva(v);break b}}else F=34;while(0);if((F|0)==34){E=Rb()|0;M=Q;N=E}k[m>>2]=27468;k[v>>2]=27488;k[y>>2]=27560;Yua(u);Ava(y);vva(v);G=M;H=N;Qb(H|0)}while(0);I=K;J=L;vva(v);Qb(J|0)}while(0);if((bL(b)|0)>0){J=0;do{L=qh(b,J)|0;if(ed[k[(k[L>>2]|0)+60>>2]&511](L,k[i>>2]|0)|0)ad[k[(k[L>>2]|0)+32>>2]&63](L,a,b,c,d,e,f);J=J+1|0}while((J|0)<(bL(b)|0))}c:do if(AY()|0){b=o+56|0;J=o+4|0;k[o>>2]=27524;k[b>>2]=27544;B=0;wa(508,o+56|0,J|0);f=B;B=0;if(f&1){f=Rb()|0;O=Q;P=f;vva(b);Qb(P|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[b>>2]=27488;B=0;va(448,J|0);f=B;B=0;do if(f&1){d=Rb()|0;R=Q;S=d}else{k[J>>2]=27560;d=o+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[o+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,J|0,h|0);c=B;B=0;if(c&1){c=Rb()|0;i=Q;Yua(h);Yua(d);Ava(J);R=i;S=c;break}Yua(h);B=0;Ia(40,o|0,109488,31)|0;c=B;B=0;do if(!(c&1)?(B=0,wa(510,p|0,J|0),i=B,B=0,!(i&1)):0){B=0;ya(425,p|0)|0;i=B;B=0;if(i&1){i=Rb()|0;L=Q;Yua(p);T=L;U=i;break}else{Yua(p);k[o>>2]=27468;k[b>>2]=27488;k[J>>2]=27560;Yua(d);Ava(J);vva(b);break c}}else F=54;while(0);if((F|0)==54){c=Rb()|0;T=Q;U=c}k[o>>2]=27468;k[b>>2]=27488;k[J>>2]=27560;Yua(d);Ava(J);vva(b);G=T;H=U;Qb(H|0)}while(0);O=R;P=S;vva(b);Qb(P|0)}while(0);if((th(e)|0)>0)V=0;else{r=g;return 1}do{P=qh(e,V)|0;Fc[k[(k[P>>2]|0)+36>>2]&1023](P,a);V=V+1|0}while((V|0)<(th(e)|0));r=g;return 1}function YZ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;if((th(b)|0)>0)e=0;else return;do{f=qh(b,e)|0;if(ed[k[(k[f>>2]|0)+40>>2]&511](f,d)|0)nd[k[(k[f>>2]|0)+36>>2]&1023](f,a,c);e=e+1|0}while((e|0)<(th(b)|0));return}function ZZ(a){a=a|0;var b=0,c=0;b=a+20|0;if((th(k[b>>2]|0)|0)>0)c=0;else return;do{sq(qh(k[b>>2]|0,c)|0);c=c+1|0}while((c|0)<(th(k[b>>2]|0)|0));return}function _Z(a,b,c,d,e,f){a=a|0;b=b|0;c=+c;d=+d;e=+e;f=+f;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0.0,_=0,$=0;g=r;r=r+352|0;h=g+328|0;i=g+192|0;j=g+176|0;l=g+24|0;m=g+12|0;n=g+40|0;o=g;q=c/d;if(q!=+VEa(+q)){s=i+56|0;t=i+4|0;k[i>>2]=27524;k[s>>2]=27544;B=0;wa(508,i+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=i+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[i+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,t|0,h|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(h);Yua(x);Ava(t);y=C;z=A;break}Yua(h);B=0;A=Ia(40,i|0,109520,106)|0;C=B;B=0;a:do if(!(C&1)?(B=0,Xa(239,A|0,0)|0,D=B,B=0,!(D&1)):0){D=Ab(20)|0;B=0;eb(502,j|0,109627,84);E=B;B=0;do if(!(E&1)){B=0;eb(502,l|0,109712,18);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(j);H=G;I=F;break}B=0;wa(510,m|0,t|0);F=B;B=0;if(F&1){F=Rb()|0;J=Q;K=F;L=1}else{B=0;ua(163,D|0,j|0,l|0,47,m|0);F=B;B=0;if(F&1)M=1;else{B=0;eb(503,D|0,1240,229);B=0;M=0}F=Rb()|0;G=Q;Yua(m);J=G;K=F;L=M}Yua(l);Yua(j);if(L){H=J;I=K}else{N=J;O=K;break a}}else{F=Rb()|0;H=Q;I=F}while(0);zb(D|0);N=H;O=I}else P=17;while(0);if((P|0)==17){A=Rb()|0;N=Q;O=A}k[i>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);R=N;S=O;Qb(S|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}b:do if(d<.05){w=n+56|0;s=n+4|0;k[n>>2]=27524;k[w>>2]=27544;B=0;wa(508,n+56|0,s|0);z=B;B=0;if(z&1){z=Rb()|0;T=Q;U=z;vva(w);Qb(U|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[w>>2]=27488;B=0;va(448,s|0);z=B;B=0;do if(z&1){y=Rb()|0;V=Q;W=y}else{k[s>>2]=27560;y=n+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[n+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,s|0,h|0);v=B;B=0;if(v&1){v=Rb()|0;O=Q;Yua(h);Yua(y);Ava(s);V=O;W=v;break}Yua(h);B=0;Ia(40,n|0,109731,48)|0;v=B;B=0;do if(!(v&1)?(B=0,wa(510,o|0,s|0),O=B,B=0,!(O&1)):0){B=0;ya(424,o|0)|0;O=B;B=0;if(O&1){O=Rb()|0;N=Q;Yua(o);X=N;Y=O;break}else{Yua(o);k[n>>2]=27468;k[w>>2]=27488;k[s>>2]=27560;Yua(y);Ava(s);vva(w);break b}}else P=38;while(0);if((P|0)==38){v=Rb()|0;X=Q;Y=v}k[n>>2]=27468;k[w>>2]=27488;k[s>>2]=27560;Yua(y);Ava(s);vva(w);R=X;S=Y;Qb(S|0)}while(0);T=V;U=W;vva(w);Qb(U|0)}while(0);U=~~q;W=Rqa(U>>>0>536870911?-1:U<<3)|0;V=(U|0)>0;if(V){T=0;do{p[W+(T<<3)>>3]=d;T=T+1|0}while((T|0)!=(U|0))}if(c<e){q=d;T=0;Z=c;while(1){q=q*f;Z=Z+q;S=T+1|0;if(!(Z<e)){_=S;break}else T=S}}else _=0;T=Rqa(_>>>0>536870911?-1:_<<3)|0;if((_|0)!=0?(WEa(T|0,0,_<<3|0)|0,S=(_|0)>0,S):0){e=d;Y=0;do{e=e*f;p[T+(Y<<3)>>3]=e;Y=Y+1|0}while((Y|0)!=(_|0));$=S}else $=0;S=_+U|0;Y=Rqa(S>>>0>536870911?-1:S<<3)|0;if(V)TEa(Y|0,W|0,U<<3|0)|0;if(!$){Tqa(W);Tqa(T);k[a>>2]=Y;k[b>>2]=S;r=g;return}TEa(Y+(U<<3)|0,T|0,_<<3|0)|0;Tqa(W);Tqa(T);k[a>>2]=Y;k[b>>2]=S;r=g;return}function $Z(a,b,c){a=+a;b=+b;c=+c;var d=0.0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0;d=a+-273.15;if(d>-6.0)e=d/-6.0*.3+.7;else e=0.0;if(d<=-6.0&d>-22.0)f=1.0-(d+6.0)*-.0625*.8;else f=e;if(d<=-22.0&d>-40.0)g=.2-(d+22.0)/-18.0*.2;else g=f;if(b>=150.0&b<400.0)h=1.0-(b+-150.0)/250.0;else h=b<150.0?1.0:0.0;if(c>=.16&c<.25)i=(c+-.16)/.09*.1;else i=0.0;if(c>=.25&c<.4)j=(c+-.25)/.15*.57+.1;else j=i;if(c>=.4&c<.5)k=(c+-.4)/.1*.23+.67;else k=j;if(!(c>=.5&c<.7)){l=k;m=!(c>=.7);n=m?l:1.0;o=g*h;p=o*n;q=p*.09;return +q}l=(c+-.5)/.2*.1+.9;m=!(c>=.7);n=m?l:1.0;o=g*h;p=o*n;q=p*.09;return +q}function a_(a,b,c,d,e,f,g,h,i,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;i=i|0;j=j|0;l=l|0;var m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0,I=0,J=0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0,U=0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0;m=r;r=r+176|0;n=m+152|0;o=m+16|0;q=m;a:do if((l|0)==0&(GY()|0)?(vY()|0)==0:0){s=o+56|0;t=o+4|0;k[o>>2]=27524;k[s>>2]=27544;B=0;wa(508,o+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=o+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[o+52>>2]=16;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;B=0;wa(509,t|0,n|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(n);Yua(x);Ava(t);y=C;z=A;break}Yua(n);B=0;Ia(40,o|0,109780,23)|0;A=B;B=0;if(!(A&1)?(B=0,wa(510,q|0,t|0),A=B,B=0,!(A&1)):0){B=0;ya(425,q|0)|0;A=B;B=0;if(!(A&1)){Yua(q);k[o>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);break a}A=Rb()|0;C=Q;Yua(q);D=A;E=C;k[o>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);Qb(D|0)}C=Rb()|0;D=C;E=Q;k[o>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);Qb(D|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}while(0);if((j+-1|0)>>>0>1){r=m;return}j=i>>>0>536870911?-1:i<<3;w=Rqa(j)|0;z=(i|0)>0;if(z){y=0;do{p[w+(y<<3)>>3]=+p[a+(y<<3)>>3]*2.0;y=y+1|0}while((y|0)!=(i|0));F=h/86400.0;y=Rqa(j)|0;if(z){v=0;do{p[y+(v<<3)>>3]=+p[g+(v<<3)>>3]/(+p[f+(v<<3)>>3]*+p[e+(v<<3)>>3])*100.0;v=v+1|0}while((v|0)!=(i|0));if(z){v=0;do{D=y+(v<<3)|0;if(+p[D>>3]>9.0)p[D>>3]=9.0;v=v+1|0}while((v|0)!=(i|0));G=F;H=y;I=y}else{G=F;H=y;I=y}}else{G=F;H=y;I=y}}else{y=Rqa(j)|0;G=h/86400.0;H=y;I=y}y=Rqa(j)|0;if(!i)J=Rqa(j)|0;else{v=i<<3;WEa(y|0,0,v|0)|0;D=Rqa(j)|0;WEa(D|0,0,v|0)|0;J=D}if(z){D=0;v=1;while(1){j=J+(D<<3)|0;h=+p[j>>3];o=0;while(1){F=+p[e+(o<<3)>>3]+h;o=o+1|0;if((o|0)==(v|0)){K=F;break}else h=F}p[j>>3]=K-+p[e+(D<<3)>>3]*.5;D=D+1|0;if((D|0)==(i|0))break;else v=v+1|0}}K=+p[d>>3];h=+p[J>>3];p[y>>3]=(+p[d+8>>3]-K)/(+p[J+8>>3]-h);v=i+-1|0;D=i+-2|0;p[y+(v<<3)>>3]=(+p[d+(v<<3)>>3]-+p[d+(D<<3)>>3])/(+p[J+(v<<3)>>3]-+p[J+(D<<3)>>3]);if((v|0)>1?(p[y+8>>3]=(+p[d+16>>3]-K)/(+p[J+16>>3]-h),(v|0)!=2):0){D=2;e=1;while(1){o=D+1|0;p[y+(D<<3)>>3]=(+p[d+(o<<3)>>3]-+p[d+(e<<3)>>3])/(+p[J+(o<<3)>>3]-+p[J+(e<<3)>>3]);if((o|0)==(v|0))break;else{s=D;D=o;e=s}}}if(z){e=0;do{D=y+(e<<3)|0;h=+$(+(+p[D>>3]));p[D>>3]=h;e=e+1|0}while((e|0)!=(i|0));if(z){h=G*86400.0;z=0;do{e=b+(z<<3)|0;K=+p[e>>3];if(!(K>0.0)){F=G*+$Z(+p[d+(z<<3)>>3],+p[f+(z<<3)>>3],+p[y+(z<<3)>>3]);D=w+(z<<3)|0;L=+p[D>>3]+F;p[D>>3]=L;if(+p[g+(z<<3)>>3]>0.0){F=+ba(+((+ba(+(L*.5),3.0)*4.1887902047863905+(h*(+ba(+(+p[I+(z<<3)>>3]),3.0)*4.22e-10)+1.28e-08))*.238732414637843),.3333333333333333)*2.0;p[D>>3]=F;M=F}else M=L;L=+p[c+(z<<3)>>3];if(L==1.0&M>2.0){p[D>>3]=2.0;N=2.0}else N=M;if(L!=1.0&N>5.0){p[D>>3]=5.0;O=5.0}else O=N}else{L=+p[y+(z<<3)>>3];F=+ja(+(-6.0e3/+p[d+(z<<3)>>3]));P=G*(F*-2.0e8);if(L<5.0){p[e>>3]=K+P;D=c+(z<<3)|0;R=G*(F*1.0e9)+ +p[D>>3];p[D>>3]=R;S=R}else{R=P*+ba(+L,.4);p[e>>3]=K+R;D=c+(z<<3)|0;K=R+ +p[D>>3];p[D>>3]=K;S=K}if(+p[g+(z<<3)>>3]>0.0){K=G*(+ba(+(+p[I+(z<<3)>>3]),3.0)*.0625);p[e>>3]=+p[e>>3]-K;D=c+(z<<3)|0;R=K+ +p[D>>3];p[D>>3]=R;T=R}else T=S;R=+p[e>>3];if(R<0.0){p[e>>3]=0.0;D=c+(z<<3)|0;U=D;V=+p[D>>3];W=0.0}else{U=c+(z<<3)|0;V=T;W=R}if(V<0.0){p[U>>3]=0.0;X=+p[e>>3]}else X=W;if(X>1.0){p[e>>3]=1.0;Y=1.0}else Y=X;R=+p[U>>3];if(R>1.0){p[U>>3]=1.0;Z=+p[e>>3];_=1.0}else{Z=Y;_=R}R=(1.0-Z)*.25+.1+(.5-_)*.1;p[w+(z<<3)>>3]=R;O=R}p[a+(z<<3)>>3]=O*.5;z=z+1|0}while((z|0)!=(i|0))}}Tqa(w);Tqa(y);Tqa(J);Tqa(H);r=m;return}function b_(a,b,c,d,e,f,g,h,i,j,l,m,n,o,q,s,u){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=h|0;i=i|0;j=+j;l=+l;m=+m;n=+n;o=+o;q=+q;s=s|0;u=u|0;var v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ca=0,da=0,ea=0,fa=0.0,ga=0.0,ha=0.0,ia=0.0,ka=0.0,la=0.0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0;v=r;r=r+816|0;w=v+792|0;x=v+632|0;y=v+780|0;z=v+472|0;A=v+768|0;C=v+620|0;D=v+608|0;E=v+336|0;F=v+184|0;H=v+200|0;I=v+36|0;J=v+48|0;K=v+24|0;L=v+12|0;M=v;a:do if((u|0)==0&(GY()|0)?(vY()|0)==0:0){N=x+56|0;O=x+4|0;k[x>>2]=27524;k[N>>2]=27544;B=0;wa(508,x+56|0,O|0);P=B;B=0;if(P&1){P=Rb()|0;R=Q;S=P;vva(N);Qb(S|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[N>>2]=27488;B=0;va(448,O|0);P=B;B=0;do if(P&1){T=Rb()|0;U=Q;V=T}else{k[O>>2]=27560;T=x+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[x+52>>2]=16;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;B=0;wa(509,O|0,w|0);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Yua(w);Yua(T);Ava(O);U=X;V=W;break}Yua(w);B=0;Ia(40,x|0,109804,17)|0;W=B;B=0;do if(!(W&1)?(B=0,wa(510,y|0,O|0),X=B,B=0,!(X&1)):0){B=0;ya(425,y|0)|0;X=B;B=0;if(X&1){X=Rb()|0;Y=Q;Yua(y);Z=Y;_=X;break}else{Yua(y);k[x>>2]=27468;k[N>>2]=27488;k[O>>2]=27560;Yua(T);Ava(O);vva(N);break a}}else ca=15;while(0);if((ca|0)==15){W=Rb()|0;Z=Q;_=W}k[x>>2]=27468;k[N>>2]=27488;k[O>>2]=27560;Yua(T);Ava(O);vva(N);da=_;ea=Z;Qb(da|0)}while(0);R=U;S=V;vva(N);Qb(S|0)}while(0);switch(b|0){case 1:{fa=1.48-+ba(+(3.0/(+p[c>>3]*.091)),-.07);p[a>>3]=fa;ga=fa;break}case 2:{fa=+p[c>>3]*2.0/1.0e3;ha=+$(+(+aa(+fa)));ia=fa==-G?G:ha;ha=+jsa(.98,1.0-ia*1.58);ka=ha*.606+ +isa(0.0,.95-ia*15.4)*.301+ +isa(.127,fa*346.3+.88-ia*32.31)*.093;p[a>>3]=ka;ga=ka;break}case 3:{ka=(e+-.5)*.05+(f-(g-f)*(+p[d>>3]+-910.0)/610.0);p[a>>3]=ka;ga=ka;break}case 4:{ka=q/86400.0;d=s>>>0>536870911?-1:s<<3;c=Rqa(d)|0;b=Rqa(d)|0;S=Rqa(d)|0;V=Rqa(d)|0;d=(s|0)>0;if(d){U=0;do{if(+p[i+(U<<3)>>3]>0.0)p[c+(U<<3)>>3]=m;U=U+1|0}while((U|0)!=(s|0));if(d){U=0;do{p[b+(U<<3)>>3]=+p[h+(U<<3)>>3]+-273.15;U=U+1|0}while((U|0)!=(s|0));if(d){U=0;do{m=+$(+(+p[b+(U<<3)>>3]))*o+n;p[S+(U<<3)>>3]=m;U=U+1|0}while((U|0)!=(s|0));if(d){U=0;do{if(+p[i+(U<<3)>>3]==0.0?+p[b+(U<<3)>>3]>=-10.0:0)p[c+(U<<3)>>3]=+p[S+(U<<3)>>3];U=U+1|0}while((U|0)!=(s|0));if(d){m=o*10.0+n;U=0;do{if(+p[b+(U<<3)>>3]<-10.0)p[c+(U<<3)>>3]=m;U=U+1|0}while((U|0)!=(s|0));if(d){U=0;do{p[V+(U<<3)>>3]=ka*((+p[a+(U<<3)>>3]-f)/+p[c+(U<<3)>>3]);U=U+1|0}while((U|0)!=(s|0));if(d){d=0;do{U=a+(d<<3)|0;p[U>>3]=+p[U>>3]-+p[V+(d<<3)>>3];d=d+1|0}while((d|0)!=(s|0))}}}}}}}if(l>0.0?+p[b>>3]<0.0:0)la=l/300.0*1.0e3+j;else la=j;j=g-(g-+p[a>>3])*+ja(+(-la/15.0));p[a>>3]=j;Tqa(c);Tqa(b);Tqa(S);Tqa(V);ga=+p[a>>3];break}default:{a=z+56|0;V=z+4|0;k[z>>2]=27524;k[a>>2]=27544;B=0;wa(508,z+56|0,V|0);S=B;B=0;if(S&1){S=Rb()|0;ma=Q;na=S;vva(a);Qb(na|0)}k[z+128>>2]=0;k[z+132>>2]=-1;k[z>>2]=27468;k[a>>2]=27488;B=0;va(448,V|0);S=B;B=0;do if(S&1){b=Rb()|0;oa=Q;pa=b}else{k[V>>2]=27560;b=z+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[z+52>>2]=16;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;B=0;wa(509,V|0,w|0);c=B;B=0;if(c&1){c=Rb()|0;s=Q;Yua(w);Yua(b);Ava(V);oa=s;pa=c;break}Yua(w);B=0;c=Ia(40,z|0,109822,46)|0;s=B;B=0;b:do if(!(s&1)?(B=0,Xa(239,c|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,A|0,109627,84);U=B;B=0;do if(!(U&1)){B=0;eb(502,C|0,109869,6);i=B;B=0;if(i&1){i=Rb()|0;h=Q;Yua(A);qa=i;ra=h;break}B=0;wa(510,D|0,V|0);h=B;B=0;if(h&1){h=Rb()|0;sa=Q;ta=1;xa=h}else{B=0;ua(163,d|0,A|0,C|0,449,D|0);h=B;B=0;if(h&1)za=1;else{B=0;eb(503,d|0,1240,229);B=0;za=0}h=Rb()|0;i=Q;Yua(D);sa=i;ta=za;xa=h}Yua(C);Yua(A);if(ta){qa=xa;ra=sa}else{Aa=xa;Ba=sa;break b}}else{h=Rb()|0;qa=h;ra=Q}while(0);zb(d|0);Aa=qa;Ba=ra}else ca=63;while(0);if((ca|0)==63){c=Rb()|0;Aa=c;Ba=Q}k[z>>2]=27468;k[a>>2]=27488;k[V>>2]=27560;Yua(b);Ava(V);vva(a);da=Aa;ea=Ba;Qb(da|0)}while(0);ma=oa;na=pa;vva(a);Qb(na|0)}}if(ga>1.0){na=E+56|0;a=E+4|0;k[E>>2]=27524;k[na>>2]=27544;B=0;wa(508,E+56|0,a|0);pa=B;B=0;if(pa&1){pa=Rb()|0;Ca=Q;Da=pa;vva(na);Qb(Da|0)}k[E+128>>2]=0;k[E+132>>2]=-1;k[E>>2]=27468;k[na>>2]=27488;B=0;va(448,a|0);pa=B;B=0;do if(pa&1){oa=Rb()|0;Ea=Q;Fa=oa}else{k[a>>2]=27560;oa=E+36|0;k[oa>>2]=0;k[oa+4>>2]=0;k[oa+8>>2]=0;k[oa+12>>2]=0;k[E+52>>2]=16;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;B=0;wa(509,a|0,w|0);ma=B;B=0;if(ma&1){ma=Rb()|0;Ba=Q;Yua(w);Yua(oa);Ava(a);Ea=Ba;Fa=ma;break}Yua(w);B=0;Ia(40,E|0,109876,13)|0;ma=B;B=0;do if(!(ma&1)?(B=0,wa(510,F|0,a|0),Ba=B,B=0,!(Ba&1)):0){B=0;ya(424,F|0)|0;Ba=B;B=0;if(Ba&1){Ba=Rb()|0;Aa=Q;Yua(F);Ga=Ba;Ha=Aa;break}Yua(F);k[E>>2]=27468;k[na>>2]=27488;k[a>>2]=27560;Yua(oa);Ava(a);vva(na);r=v;return}else ca=84;while(0);if((ca|0)==84){ma=Rb()|0;Ga=ma;Ha=Q}k[E>>2]=27468;k[na>>2]=27488;k[a>>2]=27560;Yua(oa);Ava(a);vva(na);da=Ga;ea=Ha;Qb(da|0)}while(0);Ca=Ea;Da=Fa;vva(na);Qb(Da|0)}if(ga<0.0){Da=H+56|0;na=H+4|0;k[H>>2]=27524;k[Da>>2]=27544;B=0;wa(508,H+56|0,na|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ja=Q;Ka=Fa;vva(Da);Qb(Ka|0)}k[H+128>>2]=0;k[H+132>>2]=-1;k[H>>2]=27468;k[Da>>2]=27488;B=0;va(448,na|0);Fa=B;B=0;do if(Fa&1){Ea=Rb()|0;La=Q;Ma=Ea}else{k[na>>2]=27560;Ea=H+36|0;k[Ea>>2]=0;k[Ea+4>>2]=0;k[Ea+8>>2]=0;k[Ea+12>>2]=0;k[H+52>>2]=16;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;B=0;wa(509,na|0,w|0);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Ha=Q;Yua(w);Yua(Ea);Ava(na);La=Ha;Ma=Ca;break}Yua(w);B=0;Ia(40,H|0,109890,19)|0;Ca=B;B=0;do if(!(Ca&1)?(B=0,wa(510,I|0,na|0),Ha=B,B=0,!(Ha&1)):0){B=0;ya(424,I|0)|0;Ha=B;B=0;if(Ha&1){Ha=Rb()|0;Ga=Q;Yua(I);Na=Ha;Oa=Ga;break}Yua(I);k[H>>2]=27468;k[Da>>2]=27488;k[na>>2]=27560;Yua(Ea);Ava(na);vva(Da);r=v;return}else ca=100;while(0);if((ca|0)==100){Ca=Rb()|0;Na=Ca;Oa=Q}k[H>>2]=27468;k[Da>>2]=27488;k[na>>2]=27560;Yua(Ea);Ava(na);vva(Da);da=Na;ea=Oa;Qb(da|0)}while(0);Ja=La;Ka=Ma;vva(Da);Qb(Ka|0)}j=+$(+ga);p[t>>3]=j;Ka=k[t+4>>2]|0;if(!(Ka>>>0>2146435072|(Ka|0)==2146435072&(k[t>>2]|0)>>>0>0)){r=v;return}v=J+56|0;Ka=J+4|0;k[J>>2]=27524;k[v>>2]=27544;B=0;wa(508,J+56|0,Ka|0);Da=B;B=0;if(Da&1){Da=Rb()|0;Pa=Q;Qa=Da;vva(v);Qb(Qa|0)}k[J+128>>2]=0;k[J+132>>2]=-1;k[J>>2]=27468;k[v>>2]=27488;B=0;va(448,Ka|0);Da=B;B=0;do if(Da&1){Ma=Rb()|0;Ra=Q;Sa=Ma}else{k[Ka>>2]=27560;Ma=J+36|0;k[Ma>>2]=0;k[Ma+4>>2]=0;k[Ma+8>>2]=0;k[Ma+12>>2]=0;k[J+52>>2]=16;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;B=0;wa(509,Ka|0,w|0);La=B;B=0;if(La&1){La=Rb()|0;Ja=Q;Yua(w);Yua(Ma);Ava(Ka);Ra=Ja;Sa=La;break}Yua(w);B=0;La=Ia(40,J|0,109910,14)|0;Ja=B;B=0;c:do if(!(Ja&1)?(B=0,Xa(239,La|0,0)|0,Oa=B,B=0,!(Oa&1)):0){Oa=Ab(20)|0;B=0;eb(502,K|0,109627,84);Na=B;B=0;do if(!(Na&1)){B=0;eb(502,L|0,109869,6);na=B;B=0;if(na&1){na=Rb()|0;H=Q;Yua(K);Ta=H;Ua=na;break}B=0;wa(510,M|0,Ka|0);na=B;B=0;if(na&1){na=Rb()|0;Va=1;Wa=na;Ya=Q}else{B=0;ua(163,Oa|0,K|0,L|0,454,M|0);na=B;B=0;if(na&1)Za=1;else{B=0;eb(503,Oa|0,1240,229);B=0;Za=0}na=Rb()|0;H=Q;Yua(M);Va=Za;Wa=na;Ya=H}Yua(L);Yua(K);if(Va){Ta=Ya;Ua=Wa}else{_a=Wa;$a=Ya;break c}}else{H=Rb()|0;Ta=Q;Ua=H}while(0);zb(Oa|0);_a=Ua;$a=Ta}else ca=119;while(0);if((ca|0)==119){La=Rb()|0;_a=La;$a=Q}k[J>>2]=27468;k[v>>2]=27488;k[Ka>>2]=27560;Yua(Ma);Ava(Ka);vva(v);da=_a;ea=$a;Qb(da|0)}while(0);Pa=Ra;Qa=Sa;vva(v);Qb(Qa|0)}function c_(a,b,c,d,e,f,g,h,i,j,l,m,n,o,q,s){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;g=+g;h=+h;i=+i;j=+j;l=+l;m=+m;n=n|0;o=+o;q=+q;s=s|0;var t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0,Y=0,Z=0.0,_=0,$=0,aa=0.0,ca=0.0,da=0.0,ea=0,fa=0;t=r;r=r+176|0;u=t+152|0;v=t+16|0;w=t;a:do if((s|0)==0&(GY()|0)?(vY()|0)==0:0){x=v+56|0;y=v+4|0;k[v>>2]=27524;k[x>>2]=27544;B=0;wa(508,v+56|0,y|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;C=z;vva(x);Qb(C|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[x>>2]=27488;B=0;va(448,y|0);z=B;B=0;do if(z&1){D=Rb()|0;E=Q;F=D}else{k[y>>2]=27560;D=v+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[v+52>>2]=16;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;B=0;wa(509,y|0,u|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(u);Yua(D);Ava(y);E=H;F=G;break}Yua(u);B=0;Ia(40,v|0,109925,18)|0;G=B;B=0;if(!(G&1)?(B=0,wa(510,w|0,y|0),G=B,B=0,!(G&1)):0){B=0;ya(425,w|0)|0;G=B;B=0;if(!(G&1)){Yua(w);k[v>>2]=27468;k[x>>2]=27488;k[y>>2]=27560;Yua(D);Ava(y);vva(x);break a}G=Rb()|0;H=Q;Yua(w);I=H;J=G;k[v>>2]=27468;k[x>>2]=27488;k[y>>2]=27560;Yua(D);Ava(y);vva(x);Qb(J|0)}G=Rb()|0;I=Q;J=G;k[v>>2]=27468;k[x>>2]=27488;k[y>>2]=27560;Yua(D);Ava(y);vva(x);Qb(J|0)}while(0);A=E;C=F;vva(x);Qb(C|0)}while(0);K=+p[d>>3];L=+p[c>>3];M=K*L*2102.0;N=l==0.0&K<910.0?.00012:!(K>=910.0)?.0013:.0032;l=h<.01?.01:h;h=+ka(+(q/N));q=l*(j*.029/(g*8.314)*(.16000000000000003/(h*h)));C=n>>>0>536870911?-1:n<<3;F=Rqa(C)|0;b:do if((n|0)!=0?(WEa(F|0,0,n<<3|0)|0,E=(n|0)>0,E):0){h=K;A=0;while(1){if(h<910.0)p[F+(A<<3)>>3]=.138-h*.00101+h*h*3.233e-06;J=A+1|0;if((J|0)==(n|0))break;h=+p[d+(J<<3)>>3];A=J}if(E){h=K;A=0;while(1){if(h>=910.0){O=+ja(+(+p[b+(A<<3)>>3]*-.0057))*9.828;p[F+(A<<3)>>3]=O}x=A+1|0;if((x|0)==(n|0)){P=1;break b}h=+p[d+(x<<3)>>3];A=x}}else P=0}else P=0;while(0);A=Rqa(C)|0;E=Rqa(C)|0;x=Rqa(C)|0;p[A>>3]=-9999.0;J=n+-1|0;p[E+(J<<3)>>3]=-9999.0;v=(n|0)>1;if(v){TEa(A+8|0,F|0,(n<<3)+-8|0)|0;TEa(E|0,F+8|0,(n<<3)+-8|0)|0}if(P)TEa(x|0,F|0,n<<3|0)|0;I=Rqa(C)|0;w=Rqa(C)|0;p[I>>3]=-9999.0;p[w+(J<<3)>>3]=-9999.0;if(v){TEa(I+8|0,c|0,(n<<3)+-8|0)|0;TEa(w|0,c+8|0,(n<<3)+-8|0)|0}if(P){h=+jsa(1.0e12,K*(L*L*2102.0)/(+p[F>>3]*3.0));if((n|0)==1)R=h;else{O=h;v=1;while(1){h=+p[c+(v<<3)>>3];S=+jsa(O,+p[d+(v<<3)>>3]*(h*h*2102.0)/(+p[F+(v<<3)>>3]*3.0));v=v+1|0;if((v|0)==(n|0)){R=S;break}else O=S}}}else R=1.0e12;v=0;O=1.0;while(1){S=+(k[36588+(v<<2)>>2]|0);h=!(S<R)|!(S>=O)?O:S;v=v+1|0;if((v|0)==45){T=h;break}else O=h}v=Rqa(C)|0;u=Rqa(C)|0;s=Rqa(C)|0;c:do if(P){O=-9999.0;R=L;h=-9999.0;S=K;y=0;while(1){U=+p[x+(y<<3)>>3];V=R*.5;p[v+(y<<3)>>3]=1.0/(O*.5/U+V/h);p[u+(y<<3)>>3]=1.0/(+p[w+(y<<3)>>3]*.5/U+V/+p[E+(y<<3)>>3]);p[s+(y<<3)>>3]=S*R*2102.0/T;z=y+1|0;if((z|0)==(n|0))break c;O=+p[I+(z<<3)>>3];R=+p[c+(z<<3)>>3];h=+p[A+(z<<3)>>3];S=+p[d+(z<<3)>>3];y=z}}while(0);y=Rqa(C)|0;z=Rqa(C)|0;D=Rqa(C)|0;if(P){G=0;do{S=+p[s+(G<<3)>>3];h=+p[v+(G<<3)>>3]/S;p[y+(G<<3)>>3]=h;R=+p[u+(G<<3)>>3]/S;p[z+(G<<3)>>3]=R;p[D+(G<<3)>>3]=1.0-h-R;G=G+1|0}while((G|0)!=(n|0));W=+p[z>>3]}else W=0.0;p[y+(J<<3)>>3]=0.0;p[D+(J<<3)>>3]=1.0;p[D>>3]=1.0-W;p[y>>3]=0.0;p[z+(J<<3)>>3]=0.0;J=Rqa(C)|0;if(P){G=0;do{p[J+(G<<3)>>3]=T*+p[e+(G<<3)>>3];G=G+1|0}while((G|0)!=(n|0));G=Rqa(C)|0;if(P?(p[G>>3]=+p[J>>3]/(K*2102.0*L),(n|0)!=1):0){e=1;do{p[G+(e<<3)>>3]=+p[J+(e<<3)>>3]/(+p[d+(e<<3)>>3]*2102.0*+p[c+(e<<3)>>3]);e=e+1|0}while((e|0)!=(n|0));X=G;Y=G}else{X=G;Y=G}}else{G=Rqa(C)|0;X=G;Y=G}L=T*f/M;G=n+2|0;e=Rqa(G>>>0>536870911?-1:G<<3)|0;if(G)WEa(e|0,0,G<<3|0)|0;G=Rqa(C)|0;c=Rqa(C)|0;if(!(m>=1.0)){Z=0.0;Tqa(F);Tqa(A);Tqa(E);Tqa(x);Tqa(v);Tqa(u);Tqa(s);Tqa(y);Tqa(z);Tqa(D);Tqa(I);Tqa(w);Tqa(J);Tqa(X);Tqa(e);Tqa(G);Tqa(c);p[a>>3]=Z;r=t;return}C=b+8|0;f=(o-N)*19.62;N=l*l;l=q*1005.0;d=e+8|0;H=n<<3;_=e+16|0;$=(n|0)==1;o=0.0;K=1.0;while(1){W=+p[b>>3];R=+jsa(273.15,(W+ +p[C>>3])*.5);h=g-R;S=+jsa(f*h/(N*(R+g)),.19);if(S>0.0)aa=1.0/(1.0-S*5.2);else aa=+ba(+(1.0-S*18.0),-.25);O=aa*(S<-.03?aa*1.3:aa);if(!(R>=273.15)){ca=2829500.0;da=+ja(+((R+-273.15)*17.502/(R+240.97+-273.15)))*611.21}else{ca=2495.0e3;da=+ja(+(9.550426-5723.265/R+ +ka(+R)*3.53068-R*.00728332))}S=(i-da)*(q*ca)*.622/j/O;V=S*86400.0/ca;U=T*(l*h/O+S)/M;S=T*(+ba(+R,4.0)*-5.67e-08)/M;d:do if(P){p[b>>3]=W+ +p[Y>>3];if(!$){ea=1;do{p[b+(ea<<3)>>3]=+p[b+(ea<<3)>>3]+ +p[Y+(ea<<3)>>3];ea=ea+1|0}while((ea|0)!=(n|0))}R=U+(S+(L+ +p[b>>3]));p[b>>3]=R;if(P){TEa(d|0,b|0,H|0)|0;TEa(G|0,e|0,H|0)|0;TEa(c|0,_|0,H|0)|0;O=R;ea=0;while(1){p[b+(ea<<3)>>3]=+p[D+(ea<<3)>>3]*O+ +p[y+(ea<<3)>>3]*+p[G+(ea<<3)>>3]+ +p[z+(ea<<3)>>3]*+p[c+(ea<<3)>>3];fa=ea+1|0;if((fa|0)==(n|0))break d;O=+p[b+(fa<<3)>>3];ea=fa}}}else p[b>>3]=U+(S+(L+W));while(0);W=o+T*(V/86400.0);K=T+K;if(!(K<=m)){Z=W;break}else o=W}Tqa(F);Tqa(A);Tqa(E);Tqa(x);Tqa(v);Tqa(u);Tqa(s);Tqa(y);Tqa(z);Tqa(D);Tqa(I);Tqa(w);Tqa(J);Tqa(X);Tqa(e);Tqa(G);Tqa(c);p[a>>3]=Z;r=t;return}function d_(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0.0,F=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0;l=r;r=r+176|0;m=l+152|0;n=l+16|0;o=l;a:do if((j|0)==0&(GY()|0)?(vY()|0)==0:0){q=n+56|0;s=n+4|0;k[n>>2]=27524;k[q>>2]=27544;B=0;wa(508,n+56|0,s|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;v=t;vva(q);Qb(v|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[q>>2]=27488;B=0;va(448,s|0);t=B;B=0;do if(t&1){w=Rb()|0;x=Q;y=w}else{k[s>>2]=27560;w=n+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[n+52>>2]=16;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;B=0;wa(509,s|0,m|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(m);Yua(w);Ava(s);x=A;y=z;break}Yua(m);B=0;Ia(40,n|0,109944,20)|0;z=B;B=0;if(!(z&1)?(B=0,wa(510,o|0,s|0),z=B,B=0,!(z&1)):0){B=0;ya(425,o|0)|0;z=B;B=0;if(!(z&1)){Yua(o);k[n>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);break a}z=Rb()|0;A=Q;Yua(o);C=z;D=A;k[n>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);Qb(C|0)}A=Rb()|0;C=A;D=Q;k[n>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);Qb(C|0)}while(0);u=x;v=y;vva(q);Qb(v|0)}while(0);v=i>>>0>536870911?-1:i<<3;y=Rqa(v)|0;if(i)WEa(y|0,0,i<<3|0)|0;if(!b){p[y>>3]=(1.0-e)*d;k[a>>2]=y;r=l;return}if((c|0)!=2){E=1.0-e;e=E*.36*d;F=E*.64*d;c=Rqa(v)|0;b=(i|0)>0;if(b){x=0;do{p[c+(x<<3)>>3]=(300.0-+p[f+(x<<3)>>3])*.014262295081967212+10.0;x=x+1|0}while((x|0)!=(i|0))}x=i+1|0;u=x>>>0>536870911?-1:x<<3;C=Rqa(u)|0;n=Rqa(v)|0;if(b){D=0;do{E=+ja(+-(+p[c+(D<<3)>>3]*+p[g+(D<<3)>>3]));p[n+(D<<3)>>3]=E;D=D+1|0}while((D|0)!=(i|0));p[C>>3]=1.0;if(b){E=+p[n>>3];D=0;o=1;while(1){if((D|0)<1)H=E;else{I=E;m=1;while(1){J=I*+p[n+(m<<3)>>3];m=m+1|0;if((m|0)==(o|0)){H=J;break}else I=J}}D=D+1|0;p[C+(D<<3)>>3]=H;if((D|0)==(i|0))break;else o=o+1|0}}}else p[C>>3]=1.0;o=Rqa(u)|0;if((i|0)>=0){u=0;do{p[o+(u<<3)>>3]=F*+p[C+(u<<3)>>3];u=u+1|0}while((u|0)!=(x|0))}if(b){F=+p[o>>3];b=0;do{x=b;b=b+1|0;H=F;F=+p[o+(b<<3)>>3];p[y+(x<<3)>>3]=H-F}while((b|0)!=(i|0))}p[y>>3]=e+ +p[y>>3];Tqa(C);Tqa(n);Tqa(o);Tqa(c);k[a>>2]=y;r=l;return}c=Rqa(v)|0;o=(i|0)>0;if(o){n=0;do{p[c+(n<<3)>>3]=+p[h+(n<<3)>>3]*2.0/1.0e3;n=n+1|0}while((n|0)!=(i|0))}n=i+1|0;h=n>>>0>536870911?-1:n<<3;C=Rqa(h)|0;b=Rqa(h)|0;x=(i|0)<0;if(!x){u=0;do{p[C+(u<<3)>>3]=1.0;p[b+(u<<3)>>3]=1.0;u=u+1|0}while((u|0)!=(n|0))}e=+p[c>>3];F=+$(+(+aa(+e)));u=e==-G;H=u?G:F;E=+jsa(.98,1.0-H*1.58);I=+isa(0.0,.95-H*15.4);H=d*.606*(1.0-E);E=d*.301*(1.0-I);I=d*.093*(1.0-+isa(.127,e*346.3+.88-(u?G:F*32.31)));u=Rqa(v)|0;D=Rqa(v)|0;m=Rqa(v)|0;if(o){F=+$(+(+aa(+e)));p[u>>3]=+p[f>>3]/(e==-G?G:F);if((i|0)!=1){q=1;do{F=+p[c+(q<<3)>>3];e=+$(+(+aa(+F)));p[u+(q<<3)>>3]=+p[f+(q<<3)>>3]/(F==-G?G:e);q=q+1|0}while((q|0)!=(i|0))}if(o){q=0;do{p[D+(q<<3)>>3]=+p[u+(q<<3)>>3]*.0192;q=q+1|0}while((q|0)!=(i|0));if(o){q=0;do{p[m+(q<<3)>>3]=+p[u+(q<<3)>>3]*.1098;q=q+1|0}while((q|0)!=(i|0))}}}q=Rqa(v)|0;f=Rqa(v)|0;if(o){v=0;do{e=+ja(+-(+p[D+(v<<3)>>3]*+p[g+(v<<3)>>3]));p[q+(v<<3)>>3]=e;v=v+1|0}while((v|0)!=(i|0));if(o){v=0;do{e=+ja(+-(+p[m+(v<<3)>>3]*+p[g+(v<<3)>>3]));p[f+(v<<3)>>3]=e;v=v+1|0}while((v|0)!=(i|0));if(o){e=+p[q>>3];F=+p[f>>3];v=0;g=1;while(1){if((v|0)<1){K=e;L=F}else{d=e;J=F;j=1;while(1){M=d*+p[q+(j<<3)>>3];N=J*+p[f+(j<<3)>>3];j=j+1|0;if((j|0)==(g|0)){K=M;L=N;break}else{d=M;J=N}}}v=v+1|0;p[C+(v<<3)>>3]=K;p[b+(v<<3)>>3]=L;if((v|0)==(i|0))break;else g=g+1|0}}}}g=Rqa(h)|0;v=Rqa(h)|0;if(!x){x=0;do{p[g+(x<<3)>>3]=H*+p[C+(x<<3)>>3];p[v+(x<<3)>>3]=E*+p[b+(x<<3)>>3];x=x+1|0}while((x|0)!=(n|0))}if(o){E=+p[g>>3];H=+p[v>>3];o=0;do{n=o;o=o+1|0;L=E;E=+p[g+(o<<3)>>3];K=H;H=+p[v+(o<<3)>>3];p[y+(n<<3)>>3]=L-E+(K-H)}while((o|0)!=(i|0))}p[y>>3]=I+ +p[y>>3];Tqa(c);Tqa(C);Tqa(b);Tqa(u);Tqa(D);Tqa(m);Tqa(q);Tqa(f);Tqa(g);Tqa(v);k[a>>2]=y;r=l;return}function e_(a,b,c,d,e,f,g,h,i,j,l,m,n,o){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=+j;l=+l;m=+m;n=+n;o=o|0;var q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0.0,_=0.0,$=0.0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0.0,la=0.0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0;q=r;r=r+384|0;s=q+360|0;t=q+356|0;u=q+352|0;v=q+348|0;w=q+344|0;x=q+340|0;y=q+336|0;z=q+332|0;A=q+328|0;C=q+192|0;D=q+176|0;E=q+40|0;F=q+24|0;G=q+12|0;H=q;k[t>>2]=0;k[u>>2]=0;k[v>>2]=0;k[w>>2]=0;k[x>>2]=0;k[y>>2]=0;k[z>>2]=0;k[A>>2]=0;a:do if((o|0)==0&(GY()|0)?(vY()|0)==0:0){I=C+56|0;J=C+4|0;k[C>>2]=27524;k[I>>2]=27544;B=0;wa(508,C+56|0,J|0);K=B;B=0;if(K&1){K=Rb()|0;L=Q;M=K;vva(I);Qb(M|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[I>>2]=27488;B=0;va(448,J|0);K=B;B=0;do if(K&1){N=Rb()|0;O=Q;P=N}else{k[J>>2]=27560;N=C+36|0;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;k[C+52>>2]=16;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;B=0;wa(509,J|0,s|0);R=B;B=0;if(R&1){R=Rb()|0;S=Q;Yua(s);Yua(N);Ava(J);O=S;P=R;break}Yua(s);B=0;Ia(40,C|0,109965,23)|0;R=B;B=0;do if(!(R&1)?(B=0,wa(510,D|0,J|0),S=B,B=0,!(S&1)):0){B=0;ya(425,D|0)|0;S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(D);U=S;V=T;break}else{Yua(D);k[C>>2]=27468;k[I>>2]=27488;k[J>>2]=27560;Yua(N);Ava(J);vva(I);break a}}else W=15;while(0);if((W|0)==15){R=Rb()|0;U=R;V=Q}k[C>>2]=27468;k[I>>2]=27488;k[J>>2]=27560;Yua(N);Ava(J);vva(I);X=U;Y=V;Qb(X|0)}while(0);L=O;M=P;vva(I);Qb(M|0)}while(0);M=k[a>>2]|0;k[t>>2]=M;P=k[b>>2]|0;k[u>>2]=P;O=k[c>>2]|0;k[v>>2]=O;k[w>>2]=k[d>>2];L=k[e>>2]|0;k[x>>2]=L;V=k[f>>2]|0;k[y>>2]=V;U=k[g>>2]|0;k[z>>2]=U;C=k[h>>2]|0;k[A>>2]=C;D=k[i>>2]|0;o=Rqa(D>>>0>536870911?-1:D<<3)|0;J=(D|0)>0;K=O;O=P;P=M;M=L;L=V;V=U;U=C;if(J){C=0;do{p[o+(C<<3)>>3]=+p[K+(C<<3)>>3]*+p[O+(C<<3)>>3];C=C+1|0}while((C|0)!=(D|0));if(J){J=0;Z=0.0;while(1){_=Z+ +p[o+(J<<3)>>3];J=J+1|0;if((J|0)==(D|0)){$=_;break}else Z=_}}else $=0.0}else $=0.0;if(!(l>0.0)){aa=D;Tqa(o);ba=k[t>>2]|0;k[a>>2]=ba;ca=k[u>>2]|0;k[b>>2]=ca;da=k[v>>2]|0;k[c>>2]=da;ea=k[w>>2]|0;k[d>>2]=ea;fa=k[x>>2]|0;k[e>>2]=fa;ga=k[y>>2]|0;k[f>>2]=ga;ha=k[z>>2]|0;k[g>>2]=ha;ia=k[A>>2]|0;k[h>>2]=ia;k[i>>2]=aa;r=q;return}do if(!(j<=273.15)){Z=+p[o>>3];_=Z+l;p[P>>3]=((j+159.13415794481446)*l+Z*+p[P>>3])/_;Z=_/+p[O>>3];p[K>>3]=Z;if(Z>910.0){p[K>>3]=910.0;p[O>>3]=_/910.0;ja=D}else ja=D}else{_=l/150.0;if(_>m){jY(t,j,1,D);jY(u,_,1,D);jY(v,150.0,1,D);jY(w,0.0,1,D);jY(x,n,1,D);jY(y,.1,1,D);jY(z,1.0,1,D);jY(A,.5,1,D);ja=D+1|0;break}else{Z=+p[o>>3]+l;ka=_+ +p[O>>3];p[O>>3]=ka;p[K>>3]=Z/ka;p[P>>3]=(j*l+ +p[P>>3]*+p[o>>3])/Z;p[M>>3]=(l*n+ +p[M>>3]*+p[o>>3])/Z;p[L>>3]=(l*.1+ +p[L>>3]*+p[o>>3])/Z;p[V>>3]=(+p[V>>3]*+p[o>>3]+l)/Z;p[U>>3]=(l*.5+ +p[U>>3]*+p[o>>3])/Z;ja=D;break}}while(0);if((ja|0)>0){D=k[v>>2]|0;U=k[u>>2]|0;V=0;n=0.0;while(1){j=n+ +p[D+(V<<3)>>3]*+p[U+(V<<3)>>3];V=V+1|0;if((V|0)==(ja|0)){la=j;break}else n=j}}else la=0.0;if(!(+VEa(+((la-$-l)*100.0))/100.0>0.0)){aa=ja;Tqa(o);ba=k[t>>2]|0;k[a>>2]=ba;ca=k[u>>2]|0;k[b>>2]=ca;da=k[v>>2]|0;k[c>>2]=da;ea=k[w>>2]|0;k[d>>2]=ea;fa=k[x>>2]|0;k[e>>2]=fa;ga=k[y>>2]|0;k[f>>2]=ga;ha=k[z>>2]|0;k[g>>2]=ha;ia=k[A>>2]|0;k[h>>2]=ia;k[i>>2]=aa;r=q;return}q=E+56|0;aa=E+4|0;k[E>>2]=27524;k[q>>2]=27544;B=0;wa(508,E+56|0,aa|0);i=B;B=0;if(i&1){i=Rb()|0;ma=Q;na=i;vva(q);Qb(na|0)}k[E+128>>2]=0;k[E+132>>2]=-1;k[E>>2]=27468;k[q>>2]=27488;B=0;va(448,aa|0);i=B;B=0;do if(i&1){ia=Rb()|0;oa=Q;pa=ia}else{k[aa>>2]=27560;ia=E+36|0;k[ia>>2]=0;k[ia+4>>2]=0;k[ia+8>>2]=0;k[ia+12>>2]=0;k[E+52>>2]=16;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;B=0;wa(509,aa|0,s|0);h=B;B=0;if(h&1){h=Rb()|0;A=Q;Yua(s);Yua(ia);Ava(aa);oa=A;pa=h;break}Yua(s);B=0;h=Ia(40,E|0,109989,43)|0;A=B;B=0;b:do if(!(A&1)?(B=0,Xa(239,h|0,0)|0,ha=B,B=0,!(ha&1)):0){ha=Ab(20)|0;B=0;eb(502,F|0,109627,84);g=B;B=0;do if(!(g&1)){B=0;eb(502,G|0,110033,12);z=B;B=0;if(z&1){z=Rb()|0;ga=Q;Yua(F);qa=z;ra=ga;break}B=0;wa(510,H|0,aa|0);ga=B;B=0;if(ga&1){ga=Rb()|0;sa=1;ta=ga;xa=Q}else{B=0;ua(163,ha|0,F|0,G|0,1167,H|0);ga=B;B=0;if(ga&1)za=1;else{B=0;eb(503,ha|0,1240,229);B=0;za=0}ga=Rb()|0;z=Q;Yua(H);sa=za;ta=ga;xa=z}Yua(G);Yua(F);if(sa){qa=ta;ra=xa}else{Aa=ta;Ba=xa;break b}}else{z=Rb()|0;qa=z;ra=Q}while(0);zb(ha|0);Aa=qa;Ba=ra}else W=48;while(0);if((W|0)==48){h=Rb()|0;Aa=h;Ba=Q}k[E>>2]=27468;k[q>>2]=27488;k[aa>>2]=27560;Yua(ia);Ava(aa);vva(q);X=Aa;Y=Ba;Qb(X|0)}while(0);ma=oa;na=pa;vva(q);Qb(na|0)}function f_(a,b,c,d,e,f,g,h,i,j,l,m,n,o,q,s){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;l=l|0;m=m|0;n=+n;o=+o;q=+q;s=s|0;var t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0.0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0.0,Da=0.0,Ea=0,Fa=0,Ga=0.0,Ha=0,Ja=0,Ka=0,La=0,Ma=0.0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0.0,Ta=0,Ua=0.0,Va=0.0,Wa=0.0,Ya=0.0,Za=0.0,_a=0.0,$a=0,ab=0.0,bb=0.0,cb=0.0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0.0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0.0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0;t=r;r=r+880|0;u=t+868|0;v=t+864|0;w=t+860|0;x=t+856|0;y=t+852|0;z=t+848|0;A=t+844|0;C=t+840|0;D=t+836|0;E=t+820|0;F=t+816|0;G=t+800|0;H=t+664|0;I=t+824|0;J=t+528|0;K=t+804|0;L=t+520|0;M=t+360|0;N=t+508|0;O=t+496|0;P=t+344|0;R=t+208|0;S=t+60|0;T=t+48|0;U=t+36|0;V=t+72|0;W=t+24|0;X=t+12|0;Y=t;k[v>>2]=0;k[w>>2]=0;k[x>>2]=0;k[y>>2]=k[d>>2];k[z>>2]=k[e>>2];k[A>>2]=k[f>>2];k[C>>2]=k[g>>2];k[D>>2]=k[h>>2];k[E>>2]=k[i>>2];k[F>>2]=k[j>>2];k[G>>2]=k[l>>2];Z=k[m>>2]|0;_=(s|0)==0;a:do if(_&(GY()|0)?(vY()|0)==0:0){s=H+56|0;$=H+4|0;k[H>>2]=27524;k[s>>2]=27544;B=0;wa(508,H+56|0,$|0);aa=B;B=0;if(aa&1){aa=Rb()|0;ba=Q;ca=aa;vva(s);Qb(ca|0)}k[H+128>>2]=0;k[H+132>>2]=-1;k[H>>2]=27468;k[s>>2]=27488;B=0;va(448,$|0);aa=B;B=0;do if(aa&1){da=Rb()|0;ea=Q;fa=da}else{k[$>>2]=27560;da=H+36|0;k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;k[da+12>>2]=0;k[H+52>>2]=16;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;B=0;wa(509,$|0,u|0);ga=B;B=0;if(ga&1){ga=Rb()|0;ha=Q;Yua(u);Yua(da);Ava($);ea=ha;fa=ga;break}Yua(u);B=0;Ia(40,H|0,110046,15)|0;ga=B;B=0;do if(!(ga&1)?(B=0,wa(510,I|0,$|0),ha=B,B=0,!(ha&1)):0){B=0;ya(425,I|0)|0;ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(I);ja=ha;ka=ia;break}else{Yua(I);k[H>>2]=27468;k[s>>2]=27488;k[$>>2]=27560;Yua(da);Ava($);vva(s);break a}}else la=15;while(0);if((la|0)==15){ga=Rb()|0;ja=ga;ka=Q}k[H>>2]=27468;k[s>>2]=27488;k[$>>2]=27560;Yua(da);Ava($);vva(s);ma=ja;na=ka;Qb(ma|0)}while(0);ba=ea;ca=fa;vva(s);Qb(ca|0)}while(0);ca=Z>>>0>536870911?-1:Z<<3;fa=Rqa(ca)|0;ea=(Z|0)==0;if(!ea)WEa(fa|0,0,Z<<3|0)|0;ba=Rqa(ca)|0;ka=Rqa(ca)|0;ja=Rqa(ca)|0;k[v>>2]=ja;H=(Z|0)>0;if(H){I=k[A>>2]|0;$=k[z>>2]|0;aa=0;do{p[ja+(aa<<3)>>3]=+p[I+(aa<<3)>>3]*+p[$+(aa<<3)>>3];aa=aa+1|0}while((aa|0)!=(Z|0));aa=Rqa(ca)|0;k[w>>2]=aa;if(H){$=k[y>>2]|0;I=0;do{p[aa+(I<<3)>>3]=+p[ja+(I<<3)>>3]*+p[$+(I<<3)>>3]*2102.0;I=I+1|0}while((I|0)!=(Z|0));I=Rqa(ca)|0;k[x>>2]=I;$=k[C>>2]|0;if(H){ja=0;do{p[I+(ja<<3)>>3]=+p[$+(ja<<3)>>3]*908661.2999999999;ja=ja+1|0}while((ja|0)!=(Z|0));oa=$}else oa=$}else la=26}else{$=Rqa(ca)|0;k[w>>2]=$;la=26}if((la|0)==26){$=Rqa(ca)|0;k[x>>2]=$;oa=k[C>>2]|0}q=+kY(oa,Z);o=q+ +kY(k[v>>2]|0,Z);q=+kY(k[w>>2]|0,Z);pa=q+ +kY(k[x>>2]|0,Z);oa=Rqa(ca)|0;if(!ea)WEa(oa|0,0,Z<<3|0)|0;if(H){$=k[y>>2]|0;ja=0;do{q=+isa(0.0,+p[$+(ja<<3)>>3]+-273.15);p[oa+(ja<<3)>>3]=q;ja=ja+1|0}while((ja|0)!=(Z|0));if(H){ja=k[y>>2]|0;$=0;do{I=ja+($<<3)|0;p[I>>3]=+p[I>>3]-+p[oa+($<<3)>>3];$=$+1|0}while(($|0)!=(Z|0))}}b:do if(+kY(k[C>>2]|0,Z)>0.0){c:do if(_&(GY()|0)?(vY()|0)==0:0){$=J+56|0;ja=J+4|0;k[J>>2]=27524;k[$>>2]=27544;B=0;wa(508,J+56|0,ja|0);I=B;B=0;if(I&1){I=Rb()|0;qa=Q;ra=I;vva($);Qb(ra|0)}k[J+128>>2]=0;k[J+132>>2]=-1;k[J>>2]=27468;k[$>>2]=27488;B=0;va(448,ja|0);I=B;B=0;do if(I&1){aa=Rb()|0;sa=Q;ta=aa}else{k[ja>>2]=27560;aa=J+36|0;k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;k[aa+12>>2]=0;k[J+52>>2]=16;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;B=0;wa(509,ja|0,u|0);ga=B;B=0;if(ga&1){ga=Rb()|0;ia=Q;Yua(u);Yua(aa);Ava(ja);sa=ia;ta=ga;break}Yua(u);B=0;Ia(40,J|0,110062,26)|0;ga=B;B=0;do if(!(ga&1)?(B=0,wa(510,K|0,ja|0),ia=B,B=0,!(ia&1)):0){B=0;ya(425,K|0)|0;ia=B;B=0;if(ia&1){ia=Rb()|0;ha=Q;Yua(K);xa=ia;za=ha;break}else{Yua(K);k[J>>2]=27468;k[$>>2]=27488;k[ja>>2]=27560;Yua(aa);Ava(ja);vva($);break c}}else la=55;while(0);if((la|0)==55){ga=Rb()|0;xa=ga;za=Q}k[J>>2]=27468;k[$>>2]=27488;k[ja>>2]=27560;Yua(aa);Ava(ja);vva($);ma=xa;na=za;Qb(ma|0)}while(0);qa=sa;ra=ta;vva($);Qb(ra|0)}while(0);if(H){s=k[y>>2]|0;ja=k[v>>2]|0;I=0;do{q=+isa(0.0,-((+p[s+(I<<3)>>3]+-273.15)*+p[ja+(I<<3)>>3]*2102.0)/334500.0);p[ba+(I<<3)>>3]=q;I=I+1|0}while((I|0)!=(Z|0));if(H){I=k[C>>2]|0;ja=0;do{q=+jsa(+p[ba+(ja<<3)>>3],+p[I+(ja<<3)>>3]);p[ka+(ja<<3)>>3]=q;ja=ja+1|0}while((ja|0)!=(Z|0));if(H){ja=k[C>>2]|0;I=0;do{s=ja+(I<<3)|0;p[s>>3]=+p[s>>3]-+p[ka+(I<<3)>>3];I=I+1|0}while((I|0)!=(Z|0));if(H){I=k[v>>2]|0;ja=0;do{s=I+(ja<<3)|0;p[s>>3]=+p[ka+(ja<<3)>>3]+ +p[s>>3];ja=ja+1|0}while((ja|0)!=(Z|0));if(H){ja=k[v>>2]|0;I=k[A>>2]|0;s=k[z>>2]|0;da=0;do{p[s+(da<<3)>>3]=+p[ja+(da<<3)>>3]/+p[I+(da<<3)>>3];da=da+1|0}while((da|0)!=(Z|0));if(H){da=k[y>>2]|0;I=k[v>>2]|0;ja=0;do{s=da+(ja<<3)|0;q=+p[s>>3];p[s>>3]=q+ +p[ka+(ja<<3)>>3]*((273.15-q)*2102.0+334500.0)/(+p[I+(ja<<3)>>3]*2102.0);ja=ja+1|0}while((ja|0)!=(Z|0));if(H){ja=k[z>>2]|0;I=0;do{da=ja+(I<<3)|0;if(+p[da>>3]>910.0)p[da>>3]=910.0;I=I+1|0}while((I|0)!=(Z|0));if(H){I=k[v>>2]|0;ja=k[z>>2]|0;da=k[A>>2]|0;s=0;while(1){p[da+(s<<3)>>3]=+p[I+(s<<3)>>3]/+p[ja+(s<<3)>>3];s=s+1|0;if((s|0)==(Z|0)){la=83;break b}}}}}}}}}}s=Rqa(ca)|0;Aa=s;Ba=s}else la=83;while(0);if((la|0)==83){ra=Rqa(ca)|0;if(H){ta=k[z>>2]|0;sa=k[v>>2]|0;qa=k[C>>2]|0;za=0;do{q=+p[ta+(za<<3)>>3];Ca=+isa(0.0,+p[qa+(za<<3)>>3]-(910.0-q)*.07*(+p[sa+(za<<3)>>3]/q));p[ra+(za<<3)>>3]=Ca;za=za+1|0}while((za|0)!=(Z|0));Aa=ra;Ba=ra}else{Aa=ra;Ba=ra}}if(!(+kY(oa,Z)>0.0)?!(+kY(Aa,Z)>0.0):0){Da=0.0;Ea=0;Fa=Z;Ga=0.0;Ha=0;Ja=0}else{ra=Rqa(ca)|0;if(H){za=0;do{Ca=+isa(0.0,+p[oa+(za<<3)>>3]+-159.1342);p[ra+(za<<3)>>3]=Ca;za=za+1|0}while((za|0)!=(Z|0))}if(+kY(ra,Z)>0.0){za=Rqa(ca)|0;if(H){sa=k[v>>2]|0;qa=0;do{p[za+(qa<<3)>>3]=+p[ra+(qa<<3)>>3]*2102.0/+p[sa+(qa<<3)>>3];qa=qa+1|0}while((qa|0)!=(Z|0))}if(+kY(za,Z)>0.0){qa=0;do{sa=za+(qa<<3)|0;ta=qa;qa=qa+1|0;xa=(k[v>>2]|0)+(qa<<3)|0;J=k[y>>2]|0;K=J+(qa<<3)|0;Ca=+p[sa>>3]*+p[xa>>3]/2102.0+ +p[K>>3];p[K>>3]=Ca;q=+isa(0.0,Ca+-273.15+-159.1342);p[ra+(qa<<3)>>3]=q;p[za+(qa<<3)>>3]=q*2102.0/+p[xa>>3];p[J+(ta<<3)>>3]=432.28419999999994;p[sa>>3]=0.0}while(+kY(za,Z)>0.0)}if(H){qa=k[y>>2]|0;sa=0;do{q=+isa(0.0,+p[qa+(sa<<3)>>3]+-273.15);p[oa+(sa<<3)>>3]=q;sa=sa+1|0}while((sa|0)!=(Z|0));Ka=za;la=90}else{La=za;la=101}}else{Ka=0;la=90}if((la|0)==90)if(H){za=k[z>>2]|0;sa=k[A>>2]|0;qa=0;do{p[fa+(qa<<3)>>3]=+p[oa+(qa<<3)>>3]*+p[za+(qa<<3)>>3]*+p[sa+(qa<<3)>>3]*2102.0/334500.0;qa=qa+1|0}while((qa|0)!=(Z|0));q=+kY(fa,Z);if(H){qa=k[y>>2]|0;sa=k[z>>2]|0;za=k[A>>2]|0;ta=0;do{Ca=+isa(0.0,-((+p[qa+(ta<<3)>>3]+-273.15)*+p[sa+(ta<<3)>>3]*+p[za+(ta<<3)>>3]*2102.0)/334500.0);p[ba+(ta<<3)>>3]=Ca;ta=ta+1|0}while((ta|0)!=(Z|0));Ma=q;Na=Ka}else{Ma=q;Na=Ka}}else{La=Ka;la=101}if((la|0)==101){Ma=+kY(fa,Z);Na=La}La=Rqa(ca)|0;if(ea){Oa=Rqa(ca)|0;Pa=L}else{ea=Z<<3;WEa(La|0,0,ea|0)|0;Ka=Rqa(ca)|0;WEa(Ka|0,0,ea|0)|0;Oa=Ka;Pa=L}k[L>>2]=Oa;if(H)WEa(ka|0,0,Z<<3|0)|0;Pa=Z+1|0;Ka=Rqa(Pa>>>0>536870911?-1:Pa<<3)|0;if(Pa)WEa(Ka|0,0,Pa<<3|0)|0;if(H){TEa(Ka+8|0,La|0,Z<<3|0)|0;Qa=Z}else Qa=Z;while(1){Pa=Qa+-1|0;if((Qa|0)<=0){Ra=0.0;break}if(+p[fa+(Pa<<3)>>3]>0.0){Ta=Pa;la=118;break}if(!~~+p[Aa+(Pa<<3)>>3])Qa=Pa;else{Ta=Pa;la=118;break}}if((la|0)==118)Ra=+(Ta|0);d:do if(H){Ta=k[z>>2]|0;Qa=k[v>>2]|0;Aa=k[C>>2]|0;Pa=k[y>>2]|0;ea=0;while(1){q=+p[fa+(ea<<3)>>3];Ca=q+ +p[Ka+(ea<<3)>>3];if(+(ea|0)>Ra&Ca==0.0)break;ca=Ta+(ea<<3)|0;Ua=+p[ca>>3];do if(!(Ua>=910.0)){ta=ba+(ea<<3)|0;Va=+p[ta>>3];za=Qa+(ea<<3)|0;Wa=+p[za>>3];if(Va==0.0){Ya=Wa-q;p[za>>3]=Ya;Za=+p[ca>>3];_a=+jsa(Ca,(910.0-Za)*.07*(Ya/Za)-+p[Aa+(ea<<3)>>3]);p[ka+(ea<<3)>>3]=_a;Za=+isa(0.0,Ca-_a);sa=ea+1|0;p[Ka+(sa<<3)>>3]=Za;p[La+(ea<<3)>>3]=0.0;$a=sa;break}Za=Wa/Ua;_a=+jsa(+jsa(Ca,(910.0-Ua)*Za),Va);Va=Wa+_a;p[za>>3]=Va;Wa=Va/Za;p[ca>>3]=Wa;Va=Ca-_a;sa=Aa+(ea<<3)|0;Ya=+jsa(Va,Za*((910.0-Wa)*.07)-+p[sa>>3]);qa=ka+(ea<<3)|0;p[qa>>3]=Ya;Wa=+p[sa>>3];if(Wa<-Ya){p[qa>>3]=Wa;ab=Wa}else ab=Ya;if(ab<0.0){Ya=+jsa(-ab,+jsa(Za*(910.0-+p[ca>>3]),+p[ta>>3]-_a));Wa=Ya+ +p[za>>3];p[za>>3]=Wa;p[ca>>3]=Wa/Za;bb=+p[qa>>3];cb=Ya}else{bb=ab;cb=0.0}qa=ea+1|0;ta=Ka+(qa<<3)|0;p[ta>>3]=Va-bb-cb;sa=Pa+(ea<<3)|0;Va=+p[sa>>3];p[sa>>3]=Va+(_a+cb)*((273.15-Va)*2102.0+334500.0)/(+p[za>>3]*2102.0);if(!(+p[ca>>3]==910.0)){$a=qa;break}p[Oa+(ea<<3)>>3]=+p[ta>>3];p[ta>>3]=0.0;$a=qa}else{qa=Qa+(ea<<3)|0;Va=+p[qa>>3]-q;p[qa>>3]=Va;_a=+p[ca>>3];Ya=+jsa(Ca,(910.0-_a)*.07*(Va/_a)-+p[Aa+(ea<<3)>>3]);p[ka+(ea<<3)>>3]=Ya;_a=+isa(0.0,Ca-Ya);p[Oa+(ea<<3)>>3]=_a;$a=ea+1|0}while(0);if(($a|0)<(Z|0))ea=$a;else break}if(H){ea=k[C>>2]|0;Aa=0;while(1){if(+p[ea+(Aa<<3)>>3]<0.0)break;Aa=Aa+1|0;if((Aa|0)>=(Z|0)){la=136;break}}if((la|0)==136){if(!H){db=0;break}Aa=k[C>>2]|0;ea=0;do{Qa=Aa+(ea<<3)|0;p[Qa>>3]=+p[ka+(ea<<3)>>3]+ +p[Qa>>3];ea=ea+1|0}while((ea|0)!=(Z|0));if(!H){db=0;break}ea=k[v>>2]|0;Aa=0;Qa=0;while(1){Pa=(+p[ea+(Qa<<3)>>3]!=0.0&1)+Aa|0;Qa=Qa+1|0;if((Qa|0)==(Z|0)){db=Pa;break d}else Aa=Pa}}Aa=M+56|0;Qa=M+4|0;k[M>>2]=27524;k[Aa>>2]=27544;B=0;wa(508,M+56|0,Qa|0);ea=B;B=0;if(ea&1){ea=Rb()|0;fb=Q;gb=ea;vva(Aa);Qb(gb|0)}k[M+128>>2]=0;k[M+132>>2]=-1;k[M>>2]=27468;k[Aa>>2]=27488;B=0;va(448,Qa|0);ea=B;B=0;do if(ea&1){Pa=Rb()|0;hb=Q;ib=Pa}else{k[Qa>>2]=27560;Pa=M+36|0;k[Pa>>2]=0;k[Pa+4>>2]=0;k[Pa+8>>2]=0;k[Pa+12>>2]=0;k[M+52>>2]=16;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;B=0;wa(509,Qa|0,u|0);Ta=B;B=0;if(Ta&1){Ta=Rb()|0;ca=Q;Yua(u);Yua(Pa);Ava(Qa);hb=ca;ib=Ta;break}Yua(u);B=0;Ta=Ia(40,M|0,110089,47)|0;ca=B;B=0;e:do if(ca&1)la=154;else{B=0;Xa(239,Ta|0,0)|0;$=B;B=0;if($&1){la=154;break}$=Ab(20)|0;B=0;eb(502,N|0,109627,84);qa=B;B=0;do if(!(qa&1)){B=0;eb(502,O|0,110137,4);ta=B;B=0;if(ta&1){ta=Rb()|0;za=Q;Yua(N);jb=ta;kb=za;break}B=0;wa(510,P|0,Qa|0);za=B;B=0;if(za&1){za=Rb()|0;lb=1;mb=za;nb=Q}else{B=0;ua(163,$|0,N|0,O|0,1437,P|0);za=B;B=0;if(za&1)ob=1;else{B=0;eb(503,$|0,1240,229);B=0;ob=0}za=Rb()|0;ta=Q;Yua(P);lb=ob;mb=za;nb=ta}Yua(O);Yua(N);if(lb){jb=mb;kb=nb}else{pb=mb;qb=nb;break e}}else{ta=Rb()|0;jb=ta;kb=Q}while(0);zb($|0);pb=jb;qb=kb}while(0);if((la|0)==154){Ta=Rb()|0;pb=Ta;qb=Q}k[M>>2]=27468;k[Aa>>2]=27488;k[Qa>>2]=27560;Yua(Pa);Ava(Qa);vva(Aa);ma=pb;na=qb;Qb(ma|0)}while(0);fb=hb;gb=ib;vva(Aa);Qb(gb|0)}else db=0}else db=0;while(0);gb=Rqa(db>>>0>1073741823?-1:db<<2)|0;if(H){H=k[v>>2]|0;db=0;ib=0;while(1){if(+p[H+(ib<<3)>>3]!=0.0){k[gb+(db<<2)>>2]=ib;rb=db+1|0}else rb=db;ib=ib+1|0;if((ib|0)==(Z|0)){sb=rb;break}else db=rb}}else sb=0;lY(v,Z,gb,sb);lY(C,Z,gb,sb);lY(z,Z,gb,sb);lY(y,Z,gb,sb);lY(D,Z,gb,sb);lY(E,Z,gb,sb);lY(F,Z,gb,sb);lY(G,Z,gb,sb);lY(w,Z,gb,sb);lY(x,Z,gb,sb);lY(L,Z,gb,sb);Tqa(gb);if((sb|0)>0){gb=k[v>>2]|0;Z=k[z>>2]|0;rb=k[A>>2]|0;db=0;do{p[rb+(db<<3)>>3]=+p[gb+(db<<3)>>3]/+p[Z+(db<<3)>>3];db=db+1|0}while((db|0)!=(sb|0))}cb=+kY(k[L>>2]|0,sb);Tqa(La);La=k[L>>2]|0;if(La)Tqa(La);k[L>>2]=0;Da=cb;Ea=Ka;Fa=sb;Ga=Ma;Ha=Na;Ja=ra}ra=k[A>>2]|0;Na=Fa;while(1){sb=Na+-1|0;if((Na|0)<=0){tb=0.0;la=181;break}if(+p[ra+(sb<<3)>>3]<n){ub=Na;vb=sb;la=180;break}else Na=sb}if((la|0)==180?(ub|0)>=1:0){tb=+(vb|0);la=181}if((la|0)==181){vb=k[v>>2]|0;ub=k[y>>2]|0;Na=k[D>>2]|0;sb=k[E>>2]|0;Ka=k[F>>2]|0;L=k[G>>2]|0;La=k[z>>2]|0;db=k[C>>2]|0;Z=0;while(1){gb=ra+(Z<<3)|0;if(+p[gb>>3]<n){rb=vb+(Z<<3)|0;Ma=+p[rb>>3];ib=Z+1|0;H=vb+(ib<<3)|0;cb=+p[H>>3];bb=Ma+cb;hb=ub+(ib<<3)|0;p[hb>>3]=(Ma*+p[ub+(Z<<3)>>3]+cb*+p[hb>>3])/bb;hb=Na+(ib<<3)|0;p[hb>>3]=(+p[Na+(Z<<3)>>3]*+p[rb>>3]+ +p[hb>>3]*+p[H>>3])/bb;hb=sb+(ib<<3)|0;p[hb>>3]=(+p[sb+(Z<<3)>>3]*+p[rb>>3]+ +p[hb>>3]*+p[H>>3])/bb;hb=Ka+(ib<<3)|0;p[hb>>3]=(+p[Ka+(Z<<3)>>3]*+p[rb>>3]+ +p[hb>>3]*+p[H>>3])/bb;hb=L+(ib<<3)|0;p[hb>>3]=(+p[L+(Z<<3)>>3]*+p[rb>>3]+ +p[hb>>3]*+p[H>>3])/bb;hb=ra+(ib<<3)|0;cb=+p[gb>>3]+ +p[hb>>3];p[hb>>3]=cb;p[La+(ib<<3)>>3]=bb/cb;hb=db+(ib<<3)|0;p[hb>>3]=+p[hb>>3]+ +p[db+(Z<<3)>>3];p[H>>3]=bb;p[rb>>3]=99999.0;wb=ib}else wb=Z+1|0;if(!(+(wb|0)<=tb))break;else Z=wb}}wb=(Fa|0)>0;if(wb){Z=k[v>>2]|0;db=0;La=0;while(1){ra=(+p[Z+(La<<3)>>3]!=99999.0&1)+db|0;La=La+1|0;if((La|0)==(Fa|0)){xb=ra;break}else db=ra}}else xb=0;db=Rqa(xb>>>0>1073741823?-1:xb<<2)|0;if(wb){wb=k[v>>2]|0;xb=0;La=0;while(1){if(+p[wb+(La<<3)>>3]!=99999.0){k[db+(xb<<2)>>2]=La;yb=xb+1|0}else yb=xb;La=La+1|0;if((La|0)==(Fa|0)){Bb=yb;break}else xb=yb}}else Bb=0;lY(v,Fa,db,Bb);lY(C,Fa,db,Bb);lY(A,Fa,db,Bb);lY(z,Fa,db,Bb);lY(y,Fa,db,Bb);lY(D,Fa,db,Bb);lY(E,Fa,db,Bb);lY(F,Fa,db,Bb);lY(G,Fa,db,Bb);lY(w,Fa,db,Bb);lY(x,Fa,db,Bb);Tqa(db);db=k[A>>2]|0;tb=n*2.0;if(!(+p[db+72>>3]>tb))if(!(+p[db+64>>3]>tb))if(!(+p[db+56>>3]>tb))if(!(+p[db+48>>3]>tb))if(!(+p[db+40>>3]>tb))if(!(+p[db+32>>3]>tb))if(!(+p[db+24>>3]>tb))if(!(+p[db+16>>3]>tb))if(+p[db+8>>3]>tb){Cb=db;Db=1.0;Eb=0;Fb=Bb}else{Cb=db;Db=0.0;Eb=0;Fb=Bb}else{Cb=db;Db=2.0;Eb=0;Fb=Bb}else{Cb=db;Db=3.0;Eb=0;Fb=Bb}else{Cb=db;Db=4.0;Eb=0;Fb=Bb}else{Cb=db;Db=5.0;Eb=0;Fb=Bb}else{Cb=db;Db=6.0;Eb=0;Fb=Bb}else{Cb=db;Db=7.0;Eb=0;Fb=Bb}else{Cb=db;Db=8.0;Eb=0;Fb=Bb}else{Cb=db;Db=9.0;Eb=0;Fb=Bb}f:while(1){Bb=Eb;while(1){if(+p[Cb+(Bb<<3)>>3]>tb){Gb=Bb;break}Bb=Bb+1|0;if(!(+(Bb|0)<=Db)){Hb=Fb;break f}}mY(A,Fb,Gb,.5);mY(C,Fb,Gb,.5);mY(v,Fb,Gb,.5);mY(y,Fb,Gb,1.0);mY(z,Fb,Gb,1.0);mY(D,Fb,Gb,1.0);mY(w,Fb,Gb,1.0);mY(x,Fb,Gb,1.0);mY(E,Fb,Gb,1.0);mY(F,Fb,Gb,1.0);mY(G,Fb,Gb,1.0);Bb=Fb+1|0;n=Db+1.0;if(!(+(Gb|0)<=n)){Hb=Bb;break}Cb=k[A>>2]|0;Db=n;Eb=Gb;Fb=Bb}Db=Da*908661.2999999999;Fb=(Hb|0)>0;if(Fb){Gb=k[v>>2]|0;Eb=k[y>>2]|0;Cb=k[w>>2]|0;Bb=0;do{p[Cb+(Bb<<3)>>3]=+p[Gb+(Bb<<3)>>3]*+p[Eb+(Bb<<3)>>3]*2102.0;Bb=Bb+1|0}while((Bb|0)!=(Hb|0));Bb=k[C>>2]|0;if(Fb){Eb=k[x>>2]|0;Gb=0;do{p[Eb+(Gb<<3)>>3]=+p[Bb+(Gb<<3)>>3]*908661.2999999999;Gb=Gb+1|0}while((Gb|0)!=(Hb|0));Ib=Bb}else Ib=Bb}else Ib=k[C>>2]|0;tb=+kY(Ib,Hb);n=Da+(tb+ +kY(k[v>>2]|0,Hb));tb=+kY(k[w>>2]|0,Hb);bb=tb+ +kY(k[x>>2]|0,Hb);g:do if(Fb){Ib=k[C>>2]|0;Bb=0;while(1){if(+p[Ib+(Bb<<3)>>3]<0.0)break;Bb=Bb+1|0;if((Bb|0)>=(Hb|0))break g}Bb=R+56|0;Ib=R+4|0;k[R>>2]=27524;k[Bb>>2]=27544;B=0;wa(508,R+56|0,Ib|0);Gb=B;B=0;if(Gb&1){Gb=Rb()|0;Jb=Q;Kb=Gb;vva(Bb);Qb(Kb|0)}k[R+128>>2]=0;k[R+132>>2]=-1;k[R>>2]=27468;k[Bb>>2]=27488;B=0;va(448,Ib|0);Gb=B;B=0;do if(Gb&1){Eb=Rb()|0;Lb=Q;Mb=Eb}else{k[Ib>>2]=27560;Eb=R+36|0;k[Eb>>2]=0;k[Eb+4>>2]=0;k[Eb+8>>2]=0;k[Eb+12>>2]=0;k[R+52>>2]=16;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;B=0;wa(509,Ib|0,u|0);Cb=B;B=0;if(Cb&1){Cb=Rb()|0;Aa=Q;Yua(u);Yua(Eb);Ava(Ib);Lb=Aa;Mb=Cb;break}Yua(u);B=0;Cb=Ia(40,R|0,110142,48)|0;Aa=B;B=0;h:do if(!(Aa&1)?(B=0,Xa(239,Cb|0,0)|0,db=B,B=0,!(db&1)):0){db=Ab(20)|0;B=0;eb(502,S|0,109627,84);Fa=B;B=0;do if(!(Fa&1)){B=0;eb(502,T|0,110137,4);yb=B;B=0;if(yb&1){yb=Rb()|0;xb=Q;Yua(S);Nb=yb;Ob=xb;break}B=0;wa(510,U|0,Ib|0);xb=B;B=0;if(xb&1){xb=Rb()|0;Pb=1;Sb=xb;Tb=Q}else{B=0;ua(163,db|0,S|0,T|0,1600,U|0);xb=B;B=0;if(xb&1)Ub=1;else{B=0;eb(503,db|0,1240,229);B=0;Ub=0}xb=Rb()|0;yb=Q;Yua(U);Pb=Ub;Sb=xb;Tb=yb}Yua(T);Yua(S);if(Pb){Nb=Sb;Ob=Tb}else{Vb=Sb;Wb=Tb;break h}}else{yb=Rb()|0;Nb=yb;Ob=Q}while(0);zb(db|0);Vb=Nb;Wb=Ob}else la=228;while(0);if((la|0)==228){Cb=Rb()|0;Vb=Cb;Wb=Q}k[R>>2]=27468;k[Bb>>2]=27488;k[Ib>>2]=27560;Yua(Eb);Ava(Ib);vva(Bb);ma=Vb;na=Wb;Qb(ma|0)}while(0);Jb=Lb;Kb=Mb;vva(Bb);Qb(Kb|0)}while(0);tb=+VEa(+(o-n+0.0));n=+VEa(+(pa-bb-Db+0.0));if(!(tb!=0.0|n!=0.0)){Kb=k[v>>2]|0;if(Kb){Tqa(Kb);k[v>>2]=0}v=k[w>>2]|0;if(v){Tqa(v);k[w>>2]=0}w=k[x>>2]|0;if(w){Tqa(w);k[x>>2]=0}Tqa(ba);Tqa(ka);Tqa(Ba);Tqa(oa);if(Ja)Tqa(Ja);if(Ha)Tqa(Ha);if(!Ea){Tqa(fa);p[a>>3]=Ga;p[b>>3]=Da;p[c>>3]=0.0;Xb=k[y>>2]|0;k[d>>2]=Xb;Yb=k[z>>2]|0;k[e>>2]=Yb;Zb=k[A>>2]|0;k[f>>2]=Zb;_b=k[C>>2]|0;k[g>>2]=_b;$b=k[D>>2]|0;k[h>>2]=$b;ac=k[E>>2]|0;k[i>>2]=ac;bc=k[F>>2]|0;k[j>>2]=bc;cc=k[G>>2]|0;k[l>>2]=cc;k[m>>2]=Hb;r=t;return}Tqa(Ea);Tqa(fa);p[a>>3]=Ga;p[b>>3]=Da;p[c>>3]=0.0;Xb=k[y>>2]|0;k[d>>2]=Xb;Yb=k[z>>2]|0;k[e>>2]=Yb;Zb=k[A>>2]|0;k[f>>2]=Zb;_b=k[C>>2]|0;k[g>>2]=_b;$b=k[D>>2]|0;k[h>>2]=$b;ac=k[E>>2]|0;k[i>>2]=ac;bc=k[F>>2]|0;k[j>>2]=bc;cc=k[G>>2]|0;k[l>>2]=cc;k[m>>2]=Hb;r=t;return}t=V+56|0;Hb=V+4|0;k[V>>2]=27524;k[t>>2]=27544;B=0;wa(508,V+56|0,Hb|0);m=B;B=0;if(m&1){m=Rb()|0;dc=Q;ec=m;vva(t);Qb(ec|0)}k[V+128>>2]=0;k[V+132>>2]=-1;k[V>>2]=27468;k[t>>2]=27488;B=0;va(448,Hb|0);m=B;B=0;do if(m&1){cc=Rb()|0;fc=Q;gc=cc}else{k[Hb>>2]=27560;cc=V+36|0;k[cc>>2]=0;k[cc+4>>2]=0;k[cc+8>>2]=0;k[cc+12>>2]=0;k[V+52>>2]=16;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;B=0;wa(509,Hb|0,u|0);l=B;B=0;if(l&1){l=Rb()|0;G=Q;Yua(u);Yua(cc);Ava(Hb);fc=G;gc=l;break}Yua(u);B=0;l=Ia(40,V|0,110191,51)|0;G=B;B=0;i:do if(!(G&1)?(B=0,bc=Ia(40,l|0,110243,4)|0,j=B,B=0,!(j&1)):0){B=0;j=Sa(1,bc|0,+tb)|0;bc=B;B=0;if(bc&1){la=256;break}B=0;bc=Ia(40,j|0,110248,5)|0;j=B;B=0;if(j&1){la=256;break}B=0;j=Sa(1,bc|0,+n)|0;bc=B;B=0;if(bc&1){la=256;break}B=0;bc=Ia(40,j|0,149177,1)|0;j=B;B=0;if(j&1){la=256;break}B=0;Xa(239,bc|0,0)|0;bc=B;B=0;if(bc&1){la=256;break}bc=Ab(20)|0;B=0;eb(502,W|0,109627,84);j=B;B=0;do if(!(j&1)){B=0;eb(502,X|0,110137,4);F=B;B=0;if(F&1){F=Rb()|0;ac=Q;Yua(W);hc=F;ic=ac;break}B=0;wa(510,Y|0,Hb|0);ac=B;B=0;if(ac&1){ac=Rb()|0;jc=1;kc=ac;lc=Q}else{B=0;ua(163,bc|0,W|0,X|0,1607,Y|0);ac=B;B=0;if(ac&1)mc=1;else{B=0;eb(503,bc|0,1240,229);B=0;mc=0}ac=Rb()|0;F=Q;Yua(Y);jc=mc;kc=ac;lc=F}Yua(X);Yua(W);if(jc){hc=kc;ic=lc}else{nc=kc;oc=lc;break i}}else{F=Rb()|0;hc=F;ic=Q}while(0);zb(bc|0);nc=hc;oc=ic}else la=256;while(0);if((la|0)==256){l=Rb()|0;nc=l;oc=Q}k[V>>2]=27468;k[t>>2]=27488;k[Hb>>2]=27560;Yua(cc);Ava(Hb);vva(t);ma=nc;na=oc;Qb(ma|0)}while(0);dc=fc;ec=gc;vva(t);Qb(ec|0)}function g_(a,b,c,d,e,f,g,h,i,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;g=+g;h=+h;i=+i;j=j|0;l=l|0;var m=0,n=0,o=0,q=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0;m=r;r=r+176|0;n=m+152|0;o=m+16|0;q=m;s=g/86400.0;a:do if((l|0)==0&(GY()|0)?(vY()|0)==0:0){t=o+56|0;u=o+4|0;k[o>>2]=27524;k[t>>2]=27544;B=0;wa(508,o+56|0,u|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;x=v;vva(t);Qb(x|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[t>>2]=27488;B=0;va(448,u|0);v=B;B=0;do if(v&1){y=Rb()|0;z=Q;A=y}else{k[u>>2]=27560;y=o+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[o+52>>2]=16;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;B=0;wa(509,u|0,n|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(n);Yua(y);Ava(u);z=D;A=C;break}Yua(n);B=0;Ia(40,o|0,110254,24)|0;C=B;B=0;if(!(C&1)?(B=0,wa(510,q|0,u|0),C=B,B=0,!(C&1)):0){B=0;ya(425,q|0)|0;C=B;B=0;if(!(C&1)){Yua(q);k[o>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(t);break a}C=Rb()|0;D=Q;Yua(q);E=D;F=C;k[o>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(t);Qb(F|0)}C=Rb()|0;E=Q;F=C;k[o>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(t);Qb(F|0)}while(0);w=z;x=A;vva(t);Qb(x|0)}while(0);x=j>>>0>536870911?-1:j<<3;A=Rqa(x)|0;z=(j|0)>0;if(z){w=0;do{p[A+(w<<3)>>3]=+p[a+(w<<3)>>3]*+p[b+(w<<3)>>3];w=w+1|0}while((w|0)!=(j|0))}w=j+-1|0;F=Rqa(w>>>0>536870911?-1:w<<3)|0;g=+p[b>>3];p[F>>3]=g;if((w|0)>1){H=g;o=1;do{H=H+ +p[b+(o<<3)>>3];p[F+(o<<3)>>3]=H;o=o+1|0}while((o|0)!=(w|0))}w=Rqa(x)|0;p[w>>3]=0.0;if((j|0)>1){x=1;do{o=x+-1|0;p[w+(x<<3)>>3]=+p[F+(o<<3)>>3]*+p[a+(o<<3)>>3];x=x+1|0}while((x|0)!=(j|0))}if(!z){Tqa(A);Tqa(F);Tqa(w);r=m;return}H=f/1.0e3;z=H==-G;g=42400.0/(h*8.314);I=f*9.81;J=f/i;K=J*(139.21-h*.542)*8.36;L=J*(76.138-h*.28965)*8.36;h=0.0;J=0.0;x=0;while(1){switch(e|0){case 1:{M=+p[c+(x<<3)>>3]*8.314;N=+$(+(+aa(+H)));O=+ja(+(-10160.0/M))*11.0*f/1.0e3;P=+ja(+(-21400.0/M))*575.0*(z?G:N);break}case 2:{N=I*+ja(+(g-6.0e4/(+p[c+(x<<3)>>3]*8.314)));O=N*.07;P=N*.03;break}case 3:{N=+ja(+(-60.0/(+p[c+(x<<3)>>3]*8.314)));M=+p[d+(x<<3)>>3]/1.0e3;R=N*+p[w+(x<<3)>>3]/(M*M);O=R*9.2e-09;P=R*3.7e-09;break}case 4:{R=K*+ba(+(273.15-+p[c+(x<<3)>>3]),-2.061);O=R;P=R;break}case 5:{R=L*+ba(+(273.15-+p[c+(x<<3)>>3]),-2.061);O=R;P=R;break}default:{O=h;P=J}}o=a+(x<<3)|0;R=+p[o>>3];M=R+s*((i-R)*(!(R<=550.0)?P:O)/365.0);R=M>i?i:M;p[o>>3]=R;p[b+(x<<3)>>3]=+p[A+(x<<3)>>3]/R;x=x+1|0;if((x|0)==(j|0))break;else{h=O;J=P}}Tqa(A);Tqa(F);Tqa(w);r=m;return}function h_(a,b,c,d,e,f,g,h,i,j,l,m,n){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;l=+l;m=+m;n=n|0;var o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0;o=r;r=r+176|0;q=o+152|0;s=o+16|0;t=o;a:do if((n|0)==0&(GY()|0)?(vY()|0)==0:0){u=s+56|0;v=s+4|0;k[s>>2]=27524;k[u>>2]=27544;B=0;wa(508,s+56|0,v|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;y=w;vva(u);Qb(y|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);w=B;B=0;do if(w&1){z=Rb()|0;A=Q;C=z}else{k[v>>2]=27560;z=s+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[s+52>>2]=16;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;B=0;wa(509,v|0,q|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(q);Yua(z);Ava(v);A=E;C=D;break}Yua(q);B=0;Ia(40,s|0,110279,24)|0;D=B;B=0;if(!(D&1)?(B=0,wa(510,t|0,v|0),D=B,B=0,!(D&1)):0){B=0;ya(425,t|0)|0;D=B;B=0;if(!(D&1)){Yua(t);k[s>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);break a}D=Rb()|0;E=Q;Yua(t);F=E;G=D;k[s>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);Qb(G|0)}D=Rb()|0;F=Q;G=D;k[s>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);Qb(G|0)}while(0);x=A;y=C;vva(u);Qb(y|0)}while(0);H=i<910.0&j==0.0?.00012:!(i>=910.0)?.0013:.0032;i=f<.01?.01:f;f=d-e;j=f*((l-H)*19.62)/((d+e)*(i*i));l=j>.19?.19:j;if(l>0.0)I=1.0/(1.0-l*5.2);else I=+ba(+(1.0-l*18.0),-.25);j=+ka(+(m/H));H=i*(h*.029/(d*8.314)*(.16000000000000003/(j*j)));j=I*(l<-.03?I*1.3:I);I=f*(H*1005.0)/j;if(!(e>=273.15)){J=2829500.0;K=+ja(+((e+-273.15)*17.502/(e+240.97+-273.15)))*611.21;L=H*J;M=g-K;N=L*M;O=N*.622;P=O/h;R=P/j;S=R*86400.0;T=S/J;p[a>>3]=I;p[b>>3]=R;p[c>>3]=T;r=o;return}else{J=2495.0e3;K=+ja(+(9.550426-5723.265/e+ +ka(+e)*3.53068-e*.00728332));L=H*J;M=g-K;N=L*M;O=N*.622;P=O/h;R=P/j;S=R*86400.0;T=S/J;p[a>>3]=I;p[b>>3]=R;p[c>>3]=T;r=o;return}}function i_(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;e=r;r=r+384|0;f=e+360|0;g=e+356|0;h=e+373|0;j=e+372|0;l=e+352|0;m=e+216|0;n=e+200|0;o=e+48|0;p=e+36|0;q=e+64|0;s=e+24|0;t=e+12|0;u=e;k[g>>2]=0;bO(b,j,314);bO(b,h,182);cO(b,l,183);if(!d){if(i[j>>0]|0){d=m+56|0;v=m+4|0;k[m>>2]=27524;k[d>>2]=27544;B=0;wa(508,m+56|0,v|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;y=w;vva(d);Qb(y|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[d>>2]=27488;B=0;va(448,v|0);w=B;B=0;do if(w&1){z=Rb()|0;A=Q;C=z}else{k[v>>2]=27560;z=m+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[m+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,v|0,f|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(f);Yua(z);Ava(v);A=E;C=D;break}Yua(f);B=0;D=Ia(40,m|0,110304,76)|0;E=B;B=0;a:do if(!(E&1)?(B=0,Xa(239,D|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,n|0,110381,91);G=B;B=0;do if(!(G&1)){B=0;eb(502,o|0,110473,34);H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(n);J=H;K=I;break}B=0;wa(510,p|0,v|0);I=B;B=0;if(I&1){I=Rb()|0;L=Q;M=I;N=1}else{B=0;ua(163,F|0,n|0,o|0,40,p|0);I=B;B=0;if(I&1)O=1;else{B=0;eb(503,F|0,1240,229);B=0;O=0}I=Rb()|0;H=Q;Yua(p);L=H;M=I;N=O}Yua(o);Yua(n);if(N){J=M;K=L}else{P=M;R=L;break a}}else{I=Rb()|0;J=I;K=Q}while(0);zb(F|0);P=J;R=K}else S=19;while(0);if((S|0)==19){D=Rb()|0;P=D;R=Q}k[m>>2]=27468;k[d>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(d);T=R;U=P;Qb(U|0)}while(0);x=A;y=C;vva(d);Qb(y|0)}}else i[j>>0]=0;if(!(i[h>>0]|0)){j_(g,b,c);V=k[g>>2]|0;k[a>>2]=V;r=e;return}switch(k[l>>2]|0){case 0:{k[g>>2]=507;V=507;k[a>>2]=V;r=e;return}case 1:{k[g>>2]=508;V=508;k[a>>2]=V;r=e;return}case 2:{k[g>>2]=509;V=509;k[a>>2]=V;r=e;return}case 3:{k[g>>2]=510;V=510;k[a>>2]=V;r=e;return}case 4:{k[g>>2]=511;V=511;k[a>>2]=V;r=e;return}default:{e=q+56|0;V=q+4|0;k[q>>2]=27524;k[e>>2]=27544;B=0;wa(508,q+56|0,V|0);a=B;B=0;if(a&1){a=Rb()|0;W=Q;X=a;vva(e);Qb(X|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[e>>2]=27488;B=0;va(448,V|0);a=B;B=0;do if(a&1){g=Rb()|0;Y=Q;Z=g}else{k[V>>2]=27560;g=q+36|0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[q+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,V|0,f|0);l=B;B=0;if(l&1){l=Rb()|0;c=Q;Yua(f);Yua(g);Ava(V);Y=c;Z=l;break}Yua(f);B=0;l=Ia(40,q|0,110508,26)|0;c=B;B=0;b:do if(!(c&1)?(B=0,Xa(239,l|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,s|0,110381,91);h=B;B=0;do if(!(h&1)){B=0;eb(502,t|0,110473,34);j=B;B=0;if(j&1){j=Rb()|0;y=Q;Yua(s);_=j;$=y;break}B=0;wa(510,u|0,V|0);y=B;B=0;if(y&1){y=Rb()|0;aa=1;ba=Q;ca=y}else{B=0;ua(163,b|0,s|0,t|0,50,u|0);y=B;B=0;if(y&1)da=1;else{B=0;eb(503,b|0,1240,229);B=0;da=0}y=Rb()|0;j=Q;Yua(u);aa=da;ba=j;ca=y}Yua(t);Yua(s);if(aa){_=ca;$=ba}else{ea=ba;fa=ca;break b}}else{y=Rb()|0;_=y;$=Q}while(0);zb(b|0);ea=$;fa=_}else S=49;while(0);if((S|0)==49){l=Rb()|0;ea=Q;fa=l}k[q>>2]=27468;k[e>>2]=27488;k[V>>2]=27560;Yua(g);Ava(V);vva(e);T=ea;U=fa;Qb(U|0)}while(0);W=Y;X=Z;vva(e);Qb(X|0)}}}function j_(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;d=b+176|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;do switch(c|0){case 499:{i=512;break}case 518:{i=513;break}case 522:{i=514;break}case 485:{i=515;break}case 487:{i=516;break}case 489:{i=517;break}case 491:{i=518;break}case 508:{i=519;break}case 519:{i=520;break}case 494:{i=521;break}case 523:{i=522;break}case 511:{i=523;break}case 997:{i=524;break}case 525:{i=525;break}case 495:{i=526;break}default:{j=e+56|0;l=e+4|0;k[e>>2]=27524;k[j>>2]=27544;B=0;wa(508,e+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=e+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,l|0,d|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);Yua(p);Ava(l);q=u;s=t;break}Yua(d);B=0;t=Ia(40,e|0,110535,15)|0;u=B;B=0;if((((!(u&1)?(B=0,u=ya(427,c|0)|0,v=B,B=0,!(v&1)):0)?(v=Lta(u)|0,B=0,w=Ia(40,t|0,u|0,v|0)|0,v=B,B=0,!(v&1)):0)?(B=0,v=Ia(40,w|0,146956,19)|0,w=B,B=0,!(w&1)):0)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,f|0,110551,84);w=B;B=0;do if(!(w&1)){B=0;eb(502,g|0,110636,27);u=B;B=0;if(u&1){u=Rb()|0;t=Q;Yua(f);x=t;y=u;break}B=0;wa(510,h|0,l|0);u=B;B=0;if(u&1){u=Rb()|0;z=Q;A=u;C=1}else{B=0;ua(163,v|0,f|0,g|0,75,h|0);u=B;B=0;if(u&1)D=1;else{B=0;eb(503,v|0,1240,229);B=0;D=0}u=Rb()|0;t=Q;Yua(h);z=t;A=u;C=D}Yua(g);Yua(f);if(C){x=z;y=A}else{E=z;F=A;k[e>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Qb(F|0)}}else{u=Rb()|0;x=Q;y=u}while(0);zb(v|0);E=x;F=y;k[e>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Qb(F|0)}w=Rb()|0;E=Q;F=w;k[e>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Qb(F|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}}while(0);k[a>>2]=i;r=b;return}function k_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+188|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;i[d>>0]=0;vY()|0;bO(k[a+44>>2]|0,d,8);if(!(i[d>>0]|0)){r=b;return}b=e+56|0;d=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,d|0);a=B;B=0;if(a&1){a=Rb()|0;j=Q;l=a;vva(b);Qb(l|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,d|0);a=B;B=0;do if(a&1){m=Rb()|0;n=Q;o=m}else{k[d>>2]=27560;m=e+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,d|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(d);n=q;o=p;break}Yua(c);B=0;p=Ia(40,e|0,110664,72)|0;q=B;B=0;if(!(q&1)?(B=0,Xa(239,p|0,0)|0,p=B,B=0,!(p&1)):0){p=Ab(20)|0;B=0;eb(502,f|0,110737,64);q=B;B=0;do if(!(q&1)){B=0;eb(502,g|0,110802,7);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(f);u=t;v=s;break}B=0;wa(510,h|0,d|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,p|0,f|0,g|0,326,h|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,p|0,1240,229);B=0;z=0}s=Rb()|0;t=Q;Yua(h);w=t;x=s;y=z}Yua(g);Yua(f);if(y){u=w;v=x}else{A=w;C=x;k[e>>2]=27468;k[b>>2]=27488;k[d>>2]=27560;Yua(m);Ava(d);vva(b);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(p|0);A=u;C=v;k[e>>2]=27468;k[b>>2]=27488;k[d>>2]=27560;Yua(m);Ava(d);vva(b);Qb(C|0)}q=Rb()|0;A=Q;C=q;k[e>>2]=27468;k[b>>2]=27488;k[d>>2]=27560;Yua(m);Ava(d);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function l_(a,b){a=a|0;b=b|0;var c=0,d=0;b=r;r=r+32|0;a=b+8|0;c=b;d=b+16|0;k[d>>2]=0;iZ(1,d)|0;if(k[d>>2]|0){r=b;return 1}nta(10)|0;if(k[d>>2]|0){r=b;return 1}k[c>>2]=110826;k[c+4>>2]=110856;mta(110810,c)|0;if(k[d>>2]|0){r=b;return 1}k[a>>2]=110887;k[a+4>>2]=110912;mta(110860,a)|0;if(k[d>>2]|0){r=b;return 1}nta(10)|0;r=b;return 1}function m_(){var a=0,b=0;a=r;r=r+16|0;b=a;iZ(1,b)|0;if(k[b>>2]|0){r=a;return}ota(110930)|0;r=a;return}function n_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;do switch(a|0){case 382:{h=Qqa(4)|0;k[h>>2]=39620;i=h;break}case 479:{h=Qqa(4)|0;k[h>>2]=38012;i=h;break}case 480:{h=Qqa(4)|0;k[h>>2]=38088;i=h;break}case 481:{h=Qqa(4)|0;k[h>>2]=38164;i=h;break}case 484:{h=Qqa(4)|0;k[h>>2]=38240;i=h;break}case 486:{h=Qqa(4)|0;k[h>>2]=38316;i=h;break}case 488:{h=Qqa(4)|0;k[h>>2]=38392;i=h;break}case 490:{h=Qqa(4)|0;k[h>>2]=38468;i=h;break}case 492:{h=Qqa(4)|0;k[h>>2]=39392;i=h;break}case 493:{h=Qqa(4)|0;k[h>>2]=38544;i=h;break}case 496:{h=Qqa(4)|0;k[h>>2]=38620;i=h;break}case 497:{h=Qqa(4)|0;k[h>>2]=38696;i=h;break}case 498:{h=Qqa(4)|0;k[h>>2]=38860;i=h;break}case 500:{h=Qqa(4)|0;k[h>>2]=38936;i=h;break}case 501:{h=Qqa(4)|0;k[h>>2]=39012;i=h;break}case 504:{h=Qqa(4)|0;k[h>>2]=39088;i=h;break}case 505:{h=Qqa(4)|0;k[h>>2]=39240;i=h;break}case 506:{h=Qqa(4)|0;k[h>>2]=39316;i=h;break}case 507:{h=Qqa(4)|0;k[h>>2]=39164;i=h;break}case 509:{h=Qqa(4)|0;k[h>>2]=39468;i=h;break}case 510:{h=Qqa(4)|0;k[h>>2]=39544;i=h;break}case 512:{h=Qqa(4)|0;k[h>>2]=39696;i=h;break}case 513:{h=Qqa(4)|0;k[h>>2]=39772;i=h;break}case 515:{h=Qqa(4)|0;k[h>>2]=39848;i=h;break}case 516:{h=Qqa(4)|0;k[h>>2]=39924;i=h;break}case 517:{h=Qqa(4)|0;k[h>>2]=4e4;i=h;break}case 520:{h=Qqa(4)|0;k[h>>2]=40152;i=h;break}case 521:{h=Qqa(4)|0;k[h>>2]=40076;i=h;break}case 524:{h=Qqa(4)|0;k[h>>2]=38784;i=h;break}case 526:{h=Qqa(4)|0;k[h>>2]=40532;i=h;break}case 528:{h=Qqa(4)|0;k[h>>2]=40228;i=h;break}case 529:{h=Qqa(4)|0;k[h>>2]=40304;i=h;break}case 531:{h=Qqa(4)|0;k[h>>2]=40380;i=h;break}case 532:{h=Qqa(4)|0;k[h>>2]=40456;i=h;break}case 998:{h=Qqa(4)|0;k[h>>2]=40608;i=h;break}default:{h=d+56|0;j=d+4|0;k[d>>2]=27524;k[h>>2]=27544;B=0;wa(508,d+56|0,j|0);l=B;B=0;if(l&1){l=Rb()|0;m=Q;n=l;vva(h);Qb(n|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[h>>2]=27488;B=0;va(448,j|0);l=B;B=0;do if(l&1){o=Rb()|0;p=Q;q=o}else{k[j>>2]=27560;o=d+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,j|0,c|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(c);Yua(o);Ava(j);p=t;q=s;break}Yua(c);B=0;s=Ia(40,d|0,110942,29)|0;t=B;B=0;if((((!(t&1)?(B=0,t=ya(427,a|0)|0,u=B,B=0,!(u&1)):0)?(u=Lta(t)|0,B=0,v=Ia(40,s|0,t|0,u|0)|0,u=B,B=0,!(u&1)):0)?(B=0,u=Ia(40,v|0,141170,1)|0,v=B,B=0,!(v&1)):0)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,e|0,110972,74);v=B;B=0;do if(!(v&1)){B=0;eb(502,f|0,111047,14);t=B;B=0;if(t&1){t=Rb()|0;s=Q;Yua(e);w=s;x=t;break}B=0;wa(510,g|0,j|0);t=B;B=0;if(t&1){t=Rb()|0;y=Q;z=t;A=1}else{B=0;ua(163,u|0,e|0,f|0,121,g|0);t=B;B=0;if(t&1)C=1;else{B=0;eb(503,u|0,1240,229);B=0;C=0}t=Rb()|0;s=Q;Yua(g);y=s;z=t;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;k[d>>2]=27468;k[h>>2]=27488;k[j>>2]=27560;Yua(o);Ava(j);vva(h);Qb(E|0)}}else{t=Rb()|0;w=Q;x=t}while(0);zb(u|0);D=w;E=x;k[d>>2]=27468;k[h>>2]=27488;k[j>>2]=27560;Yua(o);Ava(j);vva(h);Qb(E|0)}v=Rb()|0;D=Q;E=v;k[d>>2]=27468;k[h>>2]=27488;k[j>>2]=27560;Yua(o);Ava(j);vva(h);Qb(E|0)}while(0);m=p;n=q;vva(h);Qb(n|0)}}while(0);r=b;return i|0}function o_(a){a=a|0;gh(a);return}function p_(a){a=a|0;jh(a);return}function q_(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0;c=r;r=r+896|0;d=c+876|0;e=c+704|0;f=c+864|0;g=c+852|0;h=c+840|0;i=c+552|0;j=c+688|0;l=c+536|0;m=c+248|0;n=c+400|0;o=c+96|0;p=c+84|0;q=c+72|0;s=c+264|0;t=c+60|0;u=c+48|0;v=c+36|0;w=c+112|0;x=c+24|0;y=c+12|0;z=c;A=Hc[k[(k[b>>2]|0)+36>>2]&511](b)|0;if(!A){C=e+56|0;D=e+4|0;k[e>>2]=27524;k[C>>2]=27544;B=0;wa(508,e+56|0,D|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;G=E;vva(C);Qb(G|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[C>>2]=27488;B=0;va(448,D|0);E=B;B=0;do if(E&1){H=Rb()|0;I=Q;J=H}else{k[D>>2]=27560;H=e+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,D|0,d|0);K=B;B=0;if(K&1){K=Rb()|0;L=Q;Yua(d);Yua(H);Ava(D);I=L;J=K;break}Yua(d);B=0;K=Ia(40,e|0,111062,30)|0;L=B;B=0;a:do if(!(L&1)?(B=0,Xa(239,K|0,0)|0,M=B,B=0,!(M&1)):0){M=Ab(20)|0;B=0;eb(502,f|0,111093,74);N=B;B=0;do if(!(N&1)){B=0;eb(502,g|0,111168,9);O=B;B=0;if(O&1){O=Rb()|0;P=Q;Yua(f);R=P;S=O;break}B=0;wa(510,h|0,D|0);O=B;B=0;if(O&1){O=Rb()|0;T=Q;U=O;V=1}else{B=0;ua(163,M|0,f|0,g|0,46,h|0);O=B;B=0;if(O&1)W=1;else{B=0;eb(503,M|0,1240,229);B=0;W=0}O=Rb()|0;P=Q;Yua(h);T=P;U=O;V=W}Yua(g);Yua(f);if(V){R=T;S=U}else{X=T;Y=U;break a}}else{O=Rb()|0;R=Q;S=O}while(0);zb(M|0);X=R;Y=S}else Z=17;while(0);if((Z|0)==17){K=Rb()|0;X=Q;Y=K}k[e>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(H);Ava(D);vva(C);_=X;$=Y;Qb($|0)}while(0);F=I;G=J;vva(C);Qb(G|0)}if(Gta(A,46)|0){G=i+56|0;C=i+4|0;k[i>>2]=27524;k[G>>2]=27544;B=0;wa(508,i+56|0,C|0);J=B;B=0;if(J&1){J=Rb()|0;aa=Q;ba=J;vva(G);Qb(ba|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[G>>2]=27488;B=0;va(448,C|0);J=B;B=0;do if(J&1){I=Rb()|0;ca=Q;da=I}else{k[C>>2]=27560;I=i+36|0;k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[I+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,C|0,d|0);F=B;B=0;if(F&1){F=Rb()|0;Y=Q;Yua(d);Yua(I);Ava(C);ca=Y;da=F;break}Yua(d);B=0;F=Ia(40,i|0,111178,8)|0;Y=B;B=0;b:do if(((!(Y&1)?(X=Lta(A)|0,B=0,D=Ia(40,F|0,A|0,X|0)|0,X=B,B=0,!(X&1)):0)?(B=0,X=Ia(40,D|0,111187,31)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,X|0,0)|0,X=B,B=0,!(X&1)):0){X=Ab(20)|0;B=0;eb(502,j|0,111093,74);D=B;B=0;do if(!(D&1)){B=0;eb(502,l|0,111168,9);e=B;B=0;if(e&1){e=Rb()|0;S=Q;Yua(j);ea=S;fa=e;break}B=0;wa(510,m|0,C|0);e=B;B=0;if(e&1){e=Rb()|0;ga=1;ha=Q;ia=e}else{B=0;ua(163,X|0,j|0,l|0,47,m|0);e=B;B=0;if(e&1)ja=1;else{B=0;eb(503,X|0,1240,229);B=0;ja=0}e=Rb()|0;S=Q;Yua(m);ga=ja;ha=S;ia=e}Yua(l);Yua(j);if(ga){ea=ha;fa=ia}else{ka=ha;la=ia;break b}}else{e=Rb()|0;ea=Q;fa=e}while(0);zb(X|0);ka=ea;la=fa}else Z=43;while(0);if((Z|0)==43){F=Rb()|0;ka=Q;la=F}k[i>>2]=27468;k[G>>2]=27488;k[C>>2]=27560;Yua(I);Ava(C);vva(G);_=ka;$=la;Qb($|0)}while(0);aa=ca;ba=da;vva(G);Qb(ba|0)}if(Gta(A,91)|0){ba=n+56|0;G=n+4|0;k[n>>2]=27524;k[ba>>2]=27544;B=0;wa(508,n+56|0,G|0);da=B;B=0;if(da&1){da=Rb()|0;ma=Q;na=da;vva(ba);Qb(na|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[ba>>2]=27488;B=0;va(448,G|0);da=B;B=0;do if(da&1){ca=Rb()|0;oa=Q;pa=ca}else{k[G>>2]=27560;ca=n+36|0;k[ca>>2]=0;k[ca+4>>2]=0;k[ca+8>>2]=0;k[ca+12>>2]=0;k[n+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,G|0,d|0);aa=B;B=0;if(aa&1){aa=Rb()|0;la=Q;Yua(d);Yua(ca);Ava(G);oa=la;pa=aa;break}Yua(d);B=0;aa=Ia(40,n|0,111178,8)|0;la=B;B=0;c:do if(((!(la&1)?(ka=Lta(A)|0,B=0,C=Ia(40,aa|0,A|0,ka|0)|0,ka=B,B=0,!(ka&1)):0)?(B=0,ka=Ia(40,C|0,111219,31)|0,C=B,B=0,!(C&1)):0)?(B=0,Xa(239,ka|0,0)|0,ka=B,B=0,!(ka&1)):0){ka=Ab(20)|0;B=0;eb(502,o|0,111093,74);C=B;B=0;do if(!(C&1)){B=0;eb(502,p|0,111168,9);i=B;B=0;if(i&1){i=Rb()|0;fa=Q;Yua(o);qa=fa;ra=i;break}B=0;wa(510,q|0,G|0);i=B;B=0;if(i&1){i=Rb()|0;sa=1;ta=Q;xa=i}else{B=0;ua(163,ka|0,o|0,p|0,48,q|0);i=B;B=0;if(i&1)ya=1;else{B=0;eb(503,ka|0,1240,229);B=0;ya=0}i=Rb()|0;fa=Q;Yua(q);sa=ya;ta=fa;xa=i}Yua(p);Yua(o);if(sa){qa=ta;ra=xa}else{za=ta;Aa=xa;break c}}else{i=Rb()|0;qa=Q;ra=i}while(0);zb(ka|0);za=qa;Aa=ra}else Z=69;while(0);if((Z|0)==69){aa=Rb()|0;za=Q;Aa=aa}k[n>>2]=27468;k[ba>>2]=27488;k[G>>2]=27560;Yua(ca);Ava(G);vva(ba);_=za;$=Aa;Qb($|0)}while(0);ma=oa;na=pa;vva(ba);Qb(na|0)}if(Gta(A,93)|0){na=s+56|0;ba=s+4|0;k[s>>2]=27524;k[na>>2]=27544;B=0;wa(508,s+56|0,ba|0);pa=B;B=0;if(pa&1){pa=Rb()|0;Ba=Q;Ca=pa;vva(na);Qb(Ca|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[na>>2]=27488;B=0;va(448,ba|0);pa=B;B=0;do if(pa&1){oa=Rb()|0;Da=Q;Ea=oa}else{k[ba>>2]=27560;oa=s+36|0;k[oa>>2]=0;k[oa+4>>2]=0;k[oa+8>>2]=0;k[oa+12>>2]=0;k[s+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ba|0,d|0);ma=B;B=0;if(ma&1){ma=Rb()|0;Aa=Q;Yua(d);Yua(oa);Ava(ba);Da=Aa;Ea=ma;break}Yua(d);B=0;ma=Ia(40,s|0,111178,8)|0;Aa=B;B=0;d:do if(((!(Aa&1)?(za=Lta(A)|0,B=0,G=Ia(40,ma|0,A|0,za|0)|0,za=B,B=0,!(za&1)):0)?(B=0,za=Ia(40,G|0,111251,31)|0,G=B,B=0,!(G&1)):0)?(B=0,Xa(239,za|0,0)|0,za=B,B=0,!(za&1)):0){za=Ab(20)|0;B=0;eb(502,t|0,111093,74);G=B;B=0;do if(!(G&1)){B=0;eb(502,u|0,111168,9);n=B;B=0;if(n&1){n=Rb()|0;ra=Q;Yua(t);Fa=ra;Ga=n;break}B=0;wa(510,v|0,ba|0);n=B;B=0;if(n&1){n=Rb()|0;Ha=Q;Ja=n;Ka=1}else{B=0;ua(163,za|0,t|0,u|0,49,v|0);n=B;B=0;if(n&1)La=1;else{B=0;eb(503,za|0,1240,229);B=0;La=0}n=Rb()|0;ra=Q;Yua(v);Ha=ra;Ja=n;Ka=La}Yua(u);Yua(t);if(Ka){Fa=Ha;Ga=Ja}else{Ma=Ha;Na=Ja;break d}}else{n=Rb()|0;Fa=Q;Ga=n}while(0);zb(za|0);Ma=Fa;Na=Ga}else Z=95;while(0);if((Z|0)==95){ma=Rb()|0;Ma=Q;Na=ma}k[s>>2]=27468;k[na>>2]=27488;k[ba>>2]=27560;Yua(oa);Ava(ba);vva(na);_=Ma;$=Na;Qb($|0)}while(0);Ba=Da;Ca=Ea;vva(na);Qb(Ca|0)}Ca=k[a>>2]|0;na=a+4|0;if(Ca>>>0<(k[na>>2]|0)>>>0)Oa=Ca;else{ih(a,b)|0;r=c;return 1}while(1){Ca=k[Oa>>2]|0;Oa=Oa+4|0;if(!(Ita(Hc[k[(k[Ca>>2]|0)+36>>2]&511](Ca)|0,A)|0))break;if(Oa>>>0>=(k[na>>2]|0)>>>0){Z=131;break}}if((Z|0)==131){ih(a,b)|0;r=c;return 1}c=w+56|0;b=w+4|0;k[w>>2]=27524;k[c>>2]=27544;B=0;wa(508,w+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;Pa=Q;Qa=a;vva(c);Qb(Qa|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[c>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){na=Rb()|0;Ra=Q;Sa=na}else{k[b>>2]=27560;na=w+36|0;k[na>>2]=0;k[na+4>>2]=0;k[na+8>>2]=0;k[na+12>>2]=0;k[w+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);Oa=B;B=0;if(Oa&1){Oa=Rb()|0;Ca=Q;Yua(d);Yua(na);Ava(b);Ra=Ca;Sa=Oa;break}Yua(d);B=0;Oa=Ia(40,w|0,111283,9)|0;Ca=B;B=0;e:do if(((!(Ca&1)?(Ea=Lta(A)|0,B=0,Da=Ia(40,Oa|0,A|0,Ea|0)|0,Ea=B,B=0,!(Ea&1)):0)?(B=0,Ea=Ia(40,Da|0,111293,22)|0,Da=B,B=0,!(Da&1)):0)?(B=0,Xa(239,Ea|0,0)|0,Ea=B,B=0,!(Ea&1)):0){Ea=Ab(20)|0;B=0;eb(502,x|0,111093,74);Da=B;B=0;do if(!(Da&1)){B=0;eb(502,y|0,111168,9);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;Na=Q;Yua(x);Ta=Na;Ua=Ba;break}B=0;wa(510,z|0,b|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;Va=1;Wa=Q;Ya=Ba}else{B=0;ua(163,Ea|0,x|0,y|0,56,z|0);Ba=B;B=0;if(Ba&1)Za=1;else{B=0;eb(503,Ea|0,1240,229);B=0;Za=0}Ba=Rb()|0;Na=Q;Yua(z);Va=Za;Wa=Na;Ya=Ba}Yua(y);Yua(x);if(Va){Ta=Wa;Ua=Ya}else{_a=Wa;$a=Ya;break e}}else{Ba=Rb()|0;Ta=Q;Ua=Ba}while(0);zb(Ea|0);_a=Ta;$a=Ua}else Z=123;while(0);if((Z|0)==123){Oa=Rb()|0;_a=Q;$a=Oa}k[w>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(na);Ava(b);vva(c);_=_a;$=$a;Qb($|0)}while(0);Pa=Ra;Qa=Sa;vva(c);Qb(Qa|0);return 0}function r_(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0;c=r;r=r+1264|0;d=c+1252|0;e=c+1080|0;f=c+1240|0;g=c+928|0;h=c+1228|0;i=c+792|0;j=c+1216|0;l=c+640|0;m=c+1064|0;n=c+488|0;o=c+776|0;p=c+352|0;q=c+624|0;s=c+200|0;t=c+336|0;u=c+48|0;v=c+36|0;w=c+64|0;x=c+24|0;y=c+12|0;z=c;A=k[a>>2]|0;C=a+4|0;if(A>>>0<(k[C>>2]|0)>>>0)D=A;else{E=0;r=c;return E|0}while(1){A=k[D>>2]|0;if(!A){F=3;break}a=Hc[k[(k[A>>2]|0)+36>>2]&511](A)|0;if(!(Mta(b,a,Lta(Hc[k[(k[A>>2]|0)+36>>2]&511](A)|0)|0)|0)){if(!(Ita(b,Hc[k[(k[A>>2]|0)+36>>2]&511](A)|0)|0)){E=A;F=146;break}if((Hc[k[(k[A>>2]|0)+20>>2]&511](A)|0)==982){G=A;F=113;break}if((Hc[k[(k[A>>2]|0)+20>>2]&511](A)|0)!=983){H=A;I=A;F=117;break}if((Hc[k[(k[A>>2]|0)+40>>2]&511](A)|0)>0){J=A;F=116;break}}D=D+4|0;if(D>>>0>=(k[C>>2]|0)>>>0){E=0;F=146;break}}if((F|0)==3){C=e+56|0;D=e+4|0;k[e>>2]=27524;k[C>>2]=27544;B=0;wa(508,e+56|0,D|0);A=B;B=0;if(A&1){A=Rb()|0;K=Q;L=A;vva(C);Qb(L|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[C>>2]=27488;B=0;va(448,D|0);A=B;B=0;do if(A&1){a=Rb()|0;M=Q;N=a}else{k[D>>2]=27560;a=e+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,D|0,d|0);O=B;B=0;if(O&1){O=Rb()|0;P=Q;Yua(d);Yua(a);Ava(D);M=P;N=O;break}Yua(d);B=0;Ia(40,e|0,111316,53)|0;O=B;B=0;do if(!(O&1)?(B=0,wa(510,f|0,D|0),P=B,B=0,!(P&1)):0){B=0;ya(424,f|0)|0;P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(f);S=R;T=P;break}Yua(f);k[e>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(a);Ava(D);vva(C);P=g+56|0;R=g+4|0;k[g>>2]=27524;k[P>>2]=27544;B=0;wa(508,g+56|0,R|0);U=B;B=0;if(U&1){U=Rb()|0;V=Q;W=U;vva(P);Qb(W|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[P>>2]=27488;B=0;va(448,R|0);U=B;B=0;do if(U&1){X=Rb()|0;Y=Q;Z=X}else{k[R>>2]=27560;X=g+36|0;k[X>>2]=0;k[X+4>>2]=0;k[X+8>>2]=0;k[X+12>>2]=0;k[g+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,R|0,d|0);_=B;B=0;if(_&1){_=Rb()|0;$=Q;Yua(d);Yua(X);Ava(R);Y=$;Z=_;break}Yua(d);B=0;Ia(40,g|0,149177,1)|0;_=B;B=0;do if(!(_&1)?(B=0,wa(510,h|0,R|0),$=B,B=0,!($&1)):0){B=0;ya(424,h|0)|0;$=B;B=0;if($&1){$=Rb()|0;aa=Q;Yua(h);ba=aa;ca=$;break}Yua(h);k[g>>2]=27468;k[P>>2]=27488;k[R>>2]=27560;Yua(X);Ava(R);vva(P);$=i+56|0;aa=i+4|0;k[i>>2]=27524;k[$>>2]=27544;B=0;wa(508,i+56|0,aa|0);da=B;B=0;if(da&1){da=Rb()|0;ea=Q;fa=da;vva($);Qb(fa|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[$>>2]=27488;B=0;va(448,aa|0);da=B;B=0;do if(da&1){ga=Rb()|0;ha=Q;ia=ga}else{k[aa>>2]=27560;ga=i+36|0;k[ga>>2]=0;k[ga+4>>2]=0;k[ga+8>>2]=0;k[ga+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,aa|0,d|0);ja=B;B=0;if(ja&1){ja=Rb()|0;ka=Q;Yua(d);Yua(ga);Ava(aa);ha=ka;ia=ja;break}Yua(d);B=0;Ia(40,i|0,111370,51)|0;ja=B;B=0;do if(ja&1)F=90;else{B=0;wa(510,j|0,aa|0);ka=B;B=0;if(ka&1){F=90;break}B=0;ya(424,j|0)|0;ka=B;B=0;if(ka&1){ka=Rb()|0;la=Q;Yua(j);ma=la;na=ka;break}Yua(j);k[i>>2]=27468;k[$>>2]=27488;k[aa>>2]=27560;Yua(ga);Ava(aa);vva($);ka=l+56|0;la=l+4|0;k[l>>2]=27524;k[ka>>2]=27544;B=0;wa(508,l+56|0,la|0);oa=B;B=0;if(oa&1){oa=Rb()|0;pa=Q;qa=oa;vva(ka);Qb(qa|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[ka>>2]=27488;B=0;va(448,la|0);oa=B;B=0;do if(oa&1){ra=Rb()|0;sa=Q;ta=ra}else{k[la>>2]=27560;ra=l+36|0;k[ra>>2]=0;k[ra+4>>2]=0;k[ra+8>>2]=0;k[ra+12>>2]=0;k[l+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,la|0,d|0);xa=B;B=0;if(xa&1){xa=Rb()|0;za=Q;Yua(d);Yua(ra);Ava(la);sa=za;ta=xa;break}Yua(d);B=0;Ia(40,l|0,149177,1)|0;xa=B;B=0;do if(xa&1)F=93;else{B=0;wa(510,m|0,la|0);za=B;B=0;if(za&1){F=93;break}B=0;ya(424,m|0)|0;za=B;B=0;if(za&1){za=Rb()|0;Aa=Q;Yua(m);Ba=Aa;Ca=za;break}Yua(m);k[l>>2]=27468;k[ka>>2]=27488;k[la>>2]=27560;Yua(ra);Ava(la);vva(ka);za=n+56|0;Aa=n+4|0;k[n>>2]=27524;k[za>>2]=27544;B=0;wa(508,n+56|0,Aa|0);Da=B;B=0;if(Da&1){Da=Rb()|0;Ea=Q;Fa=Da;vva(za);Qb(Fa|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[za>>2]=27488;B=0;va(448,Aa|0);Da=B;B=0;do if(Da&1){Ga=Rb()|0;Ha=Q;Ja=Ga}else{k[Aa>>2]=27560;Ga=n+36|0;k[Ga>>2]=0;k[Ga+4>>2]=0;k[Ga+8>>2]=0;k[Ga+12>>2]=0;k[n+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Aa|0,d|0);Ka=B;B=0;if(Ka&1){Ka=Rb()|0;La=Q;Yua(d);Yua(Ga);Ava(Aa);Ha=La;Ja=Ka;break}Yua(d);B=0;Ia(40,n|0,111422,84)|0;Ka=B;B=0;do if(Ka&1)F=96;else{B=0;wa(510,o|0,Aa|0);La=B;B=0;if(La&1){F=96;break}B=0;ya(424,o|0)|0;La=B;B=0;if(La&1){La=Rb()|0;Ma=Q;Yua(o);Na=La;Oa=Ma;break}Yua(o);k[n>>2]=27468;k[za>>2]=27488;k[Aa>>2]=27560;Yua(Ga);Ava(Aa);vva(za);Ma=p+56|0;La=p+4|0;k[p>>2]=27524;k[Ma>>2]=27544;B=0;wa(508,p+56|0,La|0);Pa=B;B=0;if(Pa&1){Pa=Rb()|0;Qa=Q;Ra=Pa;vva(Ma);Qb(Ra|0)}k[p+128>>2]=0;k[p+132>>2]=-1;k[p>>2]=27468;k[Ma>>2]=27488;B=0;va(448,La|0);Pa=B;B=0;do if(Pa&1){Sa=Rb()|0;Ta=Q;Ua=Sa}else{k[La>>2]=27560;Sa=p+36|0;k[Sa>>2]=0;k[Sa+4>>2]=0;k[Sa+8>>2]=0;k[Sa+12>>2]=0;k[p+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,La|0,d|0);Va=B;B=0;if(Va&1){Va=Rb()|0;Wa=Q;Yua(d);Yua(Sa);Ava(La);Ta=Wa;Ua=Va;break}Yua(d);B=0;Ia(40,p|0,149177,1)|0;Va=B;B=0;do if(Va&1)F=99;else{B=0;wa(510,q|0,La|0);Wa=B;B=0;if(Wa&1){F=99;break}B=0;ya(424,q|0)|0;Wa=B;B=0;if(Wa&1){Wa=Rb()|0;Ya=Q;Yua(q);Za=Wa;_a=Ya;break}Yua(q);k[p>>2]=27468;k[Ma>>2]=27488;k[La>>2]=27560;Yua(Sa);Ava(La);vva(Ma);Ya=s+56|0;Wa=s+4|0;k[s>>2]=27524;k[Ya>>2]=27544;B=0;wa(508,s+56|0,Wa|0);$a=B;B=0;if($a&1){$a=Rb()|0;ab=Q;bb=$a;vva(Ya);Qb(bb|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[Ya>>2]=27488;B=0;va(448,Wa|0);$a=B;B=0;do if($a&1){cb=Rb()|0;db=Q;fb=cb}else{k[Wa>>2]=27560;cb=s+36|0;k[cb>>2]=0;k[cb+4>>2]=0;k[cb+8>>2]=0;k[cb+12>>2]=0;k[s+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Wa|0,d|0);gb=B;B=0;if(gb&1){gb=Rb()|0;hb=Q;Yua(d);Yua(cb);Ava(Wa);db=hb;fb=gb;break}Yua(d);B=0;gb=Ia(40,s|0,111507,37)|0;hb=B;B=0;a:do if(hb&1)F=102;else{B=0;Xa(239,gb|0,0)|0;ib=B;B=0;if(ib&1){F=102;break}ib=Ab(20)|0;B=0;eb(502,t|0,111093,74);jb=B;B=0;do if(!(jb&1)){B=0;eb(502,u|0,111545,9);kb=B;B=0;if(kb&1){kb=Rb()|0;lb=Q;Yua(t);mb=lb;nb=kb;break}B=0;wa(510,v|0,Wa|0);kb=B;B=0;if(kb&1){kb=Rb()|0;ob=1;pb=kb;qb=Q}else{B=0;ua(163,ib|0,t|0,u|0,86,v|0);kb=B;B=0;if(kb&1)rb=1;else{B=0;eb(503,ib|0,1240,229);B=0;rb=0}kb=Rb()|0;lb=Q;Yua(v);ob=rb;pb=kb;qb=lb}Yua(u);Yua(t);if(ob){mb=qb;nb=pb}else{sb=pb;tb=qb;break a}}else{lb=Rb()|0;mb=Q;nb=lb}while(0);zb(ib|0);sb=nb;tb=mb}while(0);if((F|0)==102){gb=Rb()|0;sb=gb;tb=Q}k[s>>2]=27468;k[Ya>>2]=27488;k[Wa>>2]=27560;Yua(cb);Ava(Wa);vva(Ya);ub=sb;vb=tb;Qb(ub|0)}while(0);ab=db;bb=fb;vva(Ya);Qb(bb|0)}while(0);if((F|0)==99){Va=Rb()|0;Za=Va;_a=Q}k[p>>2]=27468;k[Ma>>2]=27488;k[La>>2]=27560;Yua(Sa);Ava(La);vva(Ma);ub=Za;vb=_a;Qb(ub|0)}while(0);Qa=Ta;Ra=Ua;vva(Ma);Qb(Ra|0)}while(0);if((F|0)==96){Ka=Rb()|0;Na=Ka;Oa=Q}k[n>>2]=27468;k[za>>2]=27488;k[Aa>>2]=27560;Yua(Ga);Ava(Aa);vva(za);ub=Na;vb=Oa;Qb(ub|0)}while(0);Ea=Ha;Fa=Ja;vva(za);Qb(Fa|0)}while(0);if((F|0)==93){xa=Rb()|0;Ba=Q;Ca=xa}k[l>>2]=27468;k[ka>>2]=27488;k[la>>2]=27560;Yua(ra);Ava(la);vva(ka);ub=Ca;vb=Ba;Qb(ub|0)}while(0);pa=sa;qa=ta;vva(ka);Qb(qa|0)}while(0);if((F|0)==90){ja=Rb()|0;ma=Q;na=ja}k[i>>2]=27468;k[$>>2]=27488;k[aa>>2]=27560;Yua(ga);Ava(aa);vva($);ub=na;vb=ma;Qb(ub|0)}while(0);ea=ha;fa=ia;vva($);Qb(fa|0)}else F=87;while(0);if((F|0)==87){_=Rb()|0;ba=Q;ca=_}k[g>>2]=27468;k[P>>2]=27488;k[R>>2]=27560;Yua(X);Ava(R);vva(P);ub=ca;vb=ba;Qb(ub|0)}while(0);V=Y;W=Z;vva(P);Qb(W|0)}else F=84;while(0);if((F|0)==84){O=Rb()|0;S=Q;T=O}k[e>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(a);Ava(D);vva(C);ub=T;vb=S;Qb(ub|0)}while(0);K=M;L=N;vva(C);Qb(L|0)}else if((F|0)==113){E=r_(k[G+8>>2]|0,b)|0;r=c;return E|0}else if((F|0)==116){E=r_(k[k[J+8>>2]>>2]|0,b)|0;r=c;return E|0}else if((F|0)==117){J=w+56|0;G=w+4|0;k[w>>2]=27524;k[J>>2]=27544;B=0;wa(508,w+56|0,G|0);L=B;B=0;if(L&1){L=Rb()|0;wb=Q;xb=L;vva(J);Qb(xb|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[J>>2]=27488;B=0;va(448,G|0);L=B;B=0;do if(L&1){C=Rb()|0;yb=Q;Bb=C}else{k[G>>2]=27560;C=w+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[w+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,G|0,d|0);N=B;B=0;if(N&1){N=Rb()|0;M=Q;Yua(d);Yua(C);Ava(G);yb=M;Bb=N;break}Yua(d);B=0;N=Ia(40,w|0,111555,22)|0;M=B;B=0;b:do if((((((!(M&1)?(K=Lta(b)|0,B=0,S=Ia(40,N|0,b|0,K|0)|0,K=B,B=0,!(K&1)):0)?(B=0,K=Ia(40,S|0,111578,24)|0,S=B,B=0,!(S&1)):0)?(B=0,S=ya(k[(k[I>>2]|0)+20>>2]|0,H|0)|0,T=B,B=0,!(T&1)):0)?(B=0,T=ya(427,S|0)|0,S=B,B=0,!(S&1)):0)?(S=Lta(T)|0,B=0,D=Ia(40,K|0,T|0,S|0)|0,S=B,B=0,!(S&1)):0)?(B=0,Xa(239,D|0,0)|0,D=B,B=0,!(D&1)):0){D=Ab(20)|0;B=0;eb(502,x|0,111093,74);S=B;B=0;do if(!(S&1)){B=0;eb(502,y|0,111545,9);T=B;B=0;if(T&1){T=Rb()|0;K=Q;Yua(x);Cb=T;Db=K;break}B=0;wa(510,z|0,G|0);K=B;B=0;if(K&1){K=Rb()|0;Eb=K;Fb=Q;Gb=1}else{B=0;ua(163,D|0,x|0,y|0,111,z|0);K=B;B=0;if(K&1)Hb=1;else{B=0;eb(503,D|0,1240,229);B=0;Hb=0}K=Rb()|0;T=Q;Yua(z);Eb=K;Fb=T;Gb=Hb}Yua(y);Yua(x);if(Gb){Cb=Eb;Db=Fb}else{Ib=Eb;Jb=Fb;break b}}else{T=Rb()|0;Cb=T;Db=Q}while(0);zb(D|0);Ib=Cb;Jb=Db}else F=137;while(0);if((F|0)==137){N=Rb()|0;Ib=N;Jb=Q}k[w>>2]=27468;k[J>>2]=27488;k[G>>2]=27560;Yua(C);Ava(G);vva(J);ub=Ib;vb=Jb;Qb(ub|0)}while(0);wb=yb;xb=Bb;vva(J);Qb(xb|0)}else if((F|0)==146){r=c;return E|0}return 0}function s_(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;d=r;r=r+16|0;e=d+8|0;f=d;i[a>>0]=91;i[a+1>>0]=0;g=c+-1|0;h=a+(Lta(a)|0)|0;if((c|0)>1){c=h;j=0;while(1){k[e>>2]=k[b+(j<<2)>>2];qta(c,111607,e)|0;j=j+1|0;l=a+(Lta(a)|0)|0;if((j|0)==(g|0)){m=l;break}else c=l}}else m=h;k[f>>2]=k[b+(g<<2)>>2];qta(m,111603,f)|0;r=d;return 0}function t_(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;d=r;r=r+16|0;e=d;bO(b,e,363);if(!(i[e>>0]|0)){r=d;return}Zka(c,a,111611,63);r=d;return}function u_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0.0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0.0,db=0.0,eb=0.0,fb=0.0,gb=0.0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0;b=r;r=r+1136|0;c=b+1108|0;d=b+24|0;e=b+16|0;f=b+8|0;g=b;h=b+1133|0;j=b+1132|0;l=b+1131|0;m=b+1129|0;n=b+1128|0;o=b+1127|0;q=b+1126|0;s=b+1125|0;t=b+1124|0;u=b+1123|0;v=b+1122|0;w=b+1120|0;x=b+1104|0;y=b+1100|0;z=b+1096|0;A=b+1092|0;C=b+1076|0;D=b+1060|0;E=b+1056|0;F=b+1052|0;G=b+904|0;H=b+1080|0;I=b+752|0;J=b+1064|0;K=b+616|0;L=b+1040|0;M=b+464|0;N=b+888|0;O=b+328|0;P=b+600|0;R=b+168|0;S=b+316|0;T=b+32|0;U=b+304|0;k[E>>2]=0;V=a+44|0;cO(k[V>>2]|0,z,298);cO(k[V>>2]|0,F,766);dO(k[V>>2]|0,d,354);dO(k[V>>2]|0,e,355);dO(k[V>>2]|0,f,358);dO(k[V>>2]|0,g,67);bO(k[V>>2]|0,b+1121|0,314);cO(k[V>>2]|0,x,328);cO(k[V>>2]|0,y,329);bO(k[V>>2]|0,w,357);bO(k[V>>2]|0,h,362);bO(k[V>>2]|0,j,364);bO(k[V>>2]|0,l,360);bO(k[V>>2]|0,m,365);bO(k[V>>2]|0,o,366);bO(k[V>>2]|0,q,370);bO(k[V>>2]|0,s,361);bO(k[V>>2]|0,n,363);bO(k[V>>2]|0,t,369);bO(k[V>>2]|0,u,367);bO(k[V>>2]|0,v,368);bO(k[V>>2]|0,b+1130|0,99);if(i[n>>0]|0)cO(k[V>>2]|0,A,942);cO(k[V>>2]|0,D,371);if(k[D>>2]|0)gO(k[V>>2]|0,E,D,372);if(k[y>>2]|0)Ch(a);W=+p[d>>3];a:do if(W<+p[e>>3]-+p[g>>3]*2.220446049250313e-16){d=G+56|0;X=G+4|0;Y=G+56|0;Z=G+128|0;$=G+132|0;aa=G+36|0;ba=G+52|0;ca=I+56|0;da=I+4|0;ea=I+56|0;fa=I+128|0;ga=I+132|0;ha=I+36|0;ia=I+52|0;ja=O+56|0;ka=O+4|0;la=O+56|0;ma=O+128|0;na=O+132|0;oa=O+36|0;pa=O+52|0;qa=a+48|0;ra=R+56|0;sa=R+4|0;ta=R+56|0;ua=R+128|0;xa=R+132|0;za=R+36|0;Aa=R+52|0;Ba=T+56|0;Ca=T+4|0;Da=T+56|0;Ea=T+128|0;Fa=T+132|0;Ga=T+36|0;Ha=T+52|0;Ja=M+56|0;Ka=M+4|0;La=M+56|0;Ma=M+128|0;Na=M+132|0;Oa=M+36|0;Pa=M+52|0;Qa=K+56|0;Ra=K+4|0;Ta=K+56|0;Ua=K+128|0;Va=K+132|0;Wa=K+36|0;Ya=K+52|0;Za=a+20|0;_a=a+24|0;$a=a+28|0;ab=a+36|0;bb=a+40|0;cb=W;b:while(1){if(i[w>>0]|0){hi(a,f);db=+p[f>>3];eb=+p[e>>3];if(cb+db>eb){fb=eb-cb;p[f>>3]=fb;gb=fb}else gb=db;pO(k[V>>2]|0,gb,358)}k[F>>2]=(k[F>>2]|0)+1;cb=cb+ +p[f>>3];pO(k[V>>2]|0,cb,767);oO(k[V>>2]|0,k[F>>2]|0,766);if(CY()|0){k[G>>2]=27524;k[d>>2]=27544;B=0;wa(508,Y|0,X|0);hb=B;B=0;if(hb&1){ib=18;break}k[Z>>2]=0;k[$>>2]=-1;k[G>>2]=27468;k[d>>2]=27488;B=0;va(448,X|0);hb=B;B=0;if(hb&1){ib=19;break}k[X>>2]=27560;k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;k[aa+12>>2]=0;k[ba>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,X|0,c|0);hb=B;B=0;if(hb&1){ib=17;break}Yua(c);B=0;hb=Ia(40,G|0,111627,10)|0;jb=B;B=0;if(jb&1){ib=34;break}B=0;jb=Xa(242,hb|0,k[F>>2]|0)|0;hb=B;B=0;if(hb&1){ib=34;break}B=0;hb=Ia(40,jb|0,148676,1)|0;jb=B;B=0;if(jb&1){ib=34;break}db=+_(+((+p[e>>3]-cb)/+p[f>>3]));B=0;jb=Sa(1,hb|0,+(db+ +(k[F>>2]|0)))|0;hb=B;B=0;if(hb&1){ib=34;break}B=0;hb=Ia(40,jb|0,111638,13)|0;jb=B;B=0;if(jb&1){ib=34;break}k[hb+(k[(k[hb>>2]|0)+-12>>2]|0)+8>>2]=4;B=0;jb=Sa(1,hb|0,+(cb/+p[g>>3]))|0;hb=B;B=0;if(hb&1){ib=34;break}B=0;hb=Ia(40,jb|0,111652,13)|0;jb=B;B=0;if(jb&1){ib=34;break}B=0;jb=Sa(1,hb|0,+(+p[f>>3]/+p[g>>3]))|0;hb=B;B=0;if(hb&1){ib=34;break}B=0;Ia(40,jb|0,145593,2)|0;jb=B;B=0;if(jb&1){ib=34;break}B=0;wa(510,H|0,X|0);jb=B;B=0;if(jb&1){ib=34;break}B=0;ya(425,H|0)|0;jb=B;B=0;if(jb&1){ib=35;break}Yua(H);k[G>>2]=27468;k[d>>2]=27488;k[X>>2]=27560;Yua(aa);Ava(X);vva(d)}jb=k[F>>2]|0;if(!((jb|0)%(k[x>>2]|0)|0))kb=1;else kb=(jb|0)==1?1:cb>=+p[e>>3]-+p[g>>3]*2.220446049250313e-16;mO(k[V>>2]|0,kb,759);if((i[m>>0]|0)!=0&(k[z>>2]|0)==302){if(i[l>>0]|0){cO(k[V>>2]|0,C,381);jb=k[C>>2]|0;if((jb|0)==438){Soa(a,521);lb=k[C>>2]|0}else lb=jb;if((lb|0)==457)Soa(a,521)}if(CY()|0){k[I>>2]=27524;k[ca>>2]=27544;B=0;wa(508,ea|0,da|0);jb=B;B=0;if(jb&1){ib=50;break}k[fa>>2]=0;k[ga>>2]=-1;k[I>>2]=27468;k[ca>>2]=27488;B=0;va(448,da|0);jb=B;B=0;if(jb&1){ib=51;break}k[da>>2]=27560;k[ha>>2]=0;k[ha+4>>2]=0;k[ha+8>>2]=0;k[ha+12>>2]=0;k[ia>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,da|0,c|0);jb=B;B=0;if(jb&1){ib=49;break}Yua(c);B=0;Ia(40,I|0,111666,28)|0;jb=B;B=0;if(jb&1){ib=58;break}B=0;wa(510,J|0,da|0);jb=B;B=0;if(jb&1){ib=58;break}B=0;ya(425,J|0)|0;jb=B;B=0;if(jb&1){ib=59;break}Yua(J);k[I>>2]=27468;k[ca>>2]=27488;k[da>>2]=27560;Yua(ha);Ava(da);vva(ca)}A_(a)}if(i[v>>0]|0)h0(a);if(i[h>>0]|0)j0(a);if(i[u>>0]|0)q0(a);if(i[t>>0]|0)r0(a);if(i[l>>0]|0)B_(a);if(i[j>>0]|0){x_(a);Dh(a)|0}if(i[n>>0]|0){if(CY()|0){k[K>>2]=27524;k[Qa>>2]=27544;B=0;wa(508,Ta|0,Ra|0);jb=B;B=0;if(jb&1){ib=80;break}k[Ua>>2]=0;k[Va>>2]=-1;k[K>>2]=27468;k[Qa>>2]=27488;B=0;va(448,Ra|0);jb=B;B=0;if(jb&1){ib=81;break}k[Ra>>2]=27560;k[Wa>>2]=0;k[Wa+4>>2]=0;k[Wa+8>>2]=0;k[Wa+12>>2]=0;k[Ya>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ra|0,c|0);jb=B;B=0;if(jb&1){ib=79;break}Yua(c);B=0;Ia(40,K|0,111695,41)|0;jb=B;B=0;if(jb&1){ib=88;break}B=0;wa(510,L|0,Ra|0);jb=B;B=0;if(jb&1){ib=88;break}B=0;ya(425,L|0)|0;jb=B;B=0;if(jb&1){ib=89;break}Yua(L);k[K>>2]=27468;k[Qa>>2]=27488;k[Ra>>2]=27560;Yua(Wa);Ava(Ra);vva(Qa)}s0(k[Za>>2]|0,k[_a>>2]|0,k[$a>>2]|0,k[ab>>2]|0,k[bb>>2]|0,k[V>>2]|0);oO(k[V>>2]|0,928,575);y_(a);oO(k[V>>2]|0,64,575);y_(a);oO(k[V>>2]|0,339,575);y_(a);if(kb){k[c>>2]=k[9192];k[c+4>>2]=k[9193];k[c+8>>2]=k[9194];fi(a,qa,c,3,1)}}Boa(a);if(i[o>>0]|0){if(CY()|0){k[M>>2]=27524;k[Ja>>2]=27544;B=0;wa(508,La|0,Ka|0);jb=B;B=0;if(jb&1){ib=99;break}k[Ma>>2]=0;k[Na>>2]=-1;k[M>>2]=27468;k[Ja>>2]=27488;B=0;va(448,Ka|0);jb=B;B=0;if(jb&1){ib=100;break}k[Ka>>2]=27560;k[Oa>>2]=0;k[Oa+4>>2]=0;k[Oa+8>>2]=0;k[Oa+12>>2]=0;k[Pa>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ka|0,c|0);jb=B;B=0;if(jb&1){ib=98;break}Yua(c);B=0;Ia(40,M|0,111737,42)|0;jb=B;B=0;if(jb&1){ib=107;break}B=0;wa(510,N|0,Ka|0);jb=B;B=0;if(jb&1){ib=107;break}B=0;ya(425,N|0)|0;jb=B;B=0;if(jb&1){ib=108;break}Yua(N);k[M>>2]=27468;k[Ja>>2]=27488;k[Ka>>2]=27560;Yua(Oa);Ava(Ka);vva(Ja)}Eia(a)}if((i[s>>0]|i[q>>0])<<24>>24)Wia(a);if(CY()|0){k[O>>2]=27524;k[ja>>2]=27544;B=0;wa(508,la|0,ka|0);jb=B;B=0;if(jb&1){ib=118;break}k[ma>>2]=0;k[na>>2]=-1;k[O>>2]=27468;k[ja>>2]=27488;B=0;va(448,ka|0);jb=B;B=0;if(jb&1){ib=119;break}k[ka>>2]=27560;k[oa>>2]=0;k[oa+4>>2]=0;k[oa+8>>2]=0;k[oa+12>>2]=0;k[pa>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ka|0,c|0);jb=B;B=0;if(jb&1){ib=117;break}Yua(c);B=0;Ia(40,O|0,111780,31)|0;jb=B;B=0;if(jb&1){ib=126;break}B=0;wa(510,P|0,ka|0);jb=B;B=0;if(jb&1){ib=126;break}B=0;ya(425,P|0)|0;jb=B;B=0;if(jb&1){ib=127;break}Yua(P);k[O>>2]=27468;k[ja>>2]=27488;k[ka>>2]=27560;Yua(oa);Ava(ka);vva(ja)}ci(a,qa,k[E>>2]|0,k[D>>2]|0,kb);do if(i[n>>0]|0){if((k[A>>2]&-2|0)!=924)break;k[c>>2]=928;fi(a,qa,c,1,kb)}while(0);if(kb){if(CY()|0){k[R>>2]=27524;k[ra>>2]=27544;B=0;wa(508,ta|0,sa|0);jb=B;B=0;if(jb&1){ib=138;break}k[ua>>2]=0;k[xa>>2]=-1;k[R>>2]=27468;k[ra>>2]=27488;B=0;va(448,sa|0);jb=B;B=0;if(jb&1){ib=139;break}k[sa>>2]=27560;k[za>>2]=0;k[za+4>>2]=0;k[za+8>>2]=0;k[za+12>>2]=0;k[Aa>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,sa|0,c|0);jb=B;B=0;if(jb&1){ib=137;break}Yua(c);B=0;Ia(40,R|0,116371,28)|0;jb=B;B=0;if(jb&1){ib=146;break}B=0;wa(510,S|0,sa|0);jb=B;B=0;if(jb&1){ib=146;break}B=0;ya(425,S|0)|0;jb=B;B=0;if(jb&1){ib=147;break}Yua(S);k[R>>2]=27468;k[ra>>2]=27488;k[sa>>2]=27560;Yua(za);Ava(sa);vva(ra)}CZ(a)}jb=k[y>>2]|0;do if(jb){if((k[F>>2]|0)%(jb|0)|0)break;if(CY()|0){k[T>>2]=27524;k[Ba>>2]=27544;B=0;wa(508,Da|0,Ca|0);hb=B;B=0;if(hb&1){ib=157;break b}k[Ea>>2]=0;k[Fa>>2]=-1;k[T>>2]=27468;k[Ba>>2]=27488;B=0;va(448,Ca|0);hb=B;B=0;if(hb&1){ib=158;break b}k[Ca>>2]=27560;k[Ga>>2]=0;k[Ga+4>>2]=0;k[Ga+8>>2]=0;k[Ga+12>>2]=0;k[Ha>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ca|0,c|0);hb=B;B=0;if(hb&1){ib=156;break b}Yua(c);B=0;Ia(40,T|0,111812,24)|0;hb=B;B=0;if(hb&1){ib=165;break b}B=0;wa(510,U|0,Ca|0);hb=B;B=0;if(hb&1){ib=165;break b}B=0;ya(425,U|0)|0;hb=B;B=0;if(hb&1){ib=166;break b}Yua(U);k[T>>2]=27468;k[Ba>>2]=27488;k[Ca>>2]=27560;Yua(Ga);Ava(Ca);vva(Ba)}Ah(a)}while(0);if(!(cb<+p[e>>3]-+p[g>>3]*2.220446049250313e-16))break a}switch(ib|0){case 17:{Ha=Rb()|0;Fa=Q;Yua(c);Yua(aa);Ava(X);mb=Fa;nb=Ha;ib=20;break}case 18:{Ha=Rb()|0;ob=Q;pb=Ha;vva(d);Qb(pb|0);break}case 19:{Ha=Rb()|0;mb=Q;nb=Ha;ib=20;break}case 34:{Ha=Rb()|0;qb=Q;rb=Ha;ib=36;break}case 35:{Ha=Rb()|0;Fa=Q;Yua(H);qb=Fa;rb=Ha;ib=36;break}case 49:{Ha=Rb()|0;Fa=Q;Yua(c);Yua(ha);Ava(da);sb=Fa;tb=Ha;ib=52;break}case 50:{Ha=Rb()|0;ub=Q;vb=Ha;vva(ca);Qb(vb|0);break}case 51:{Ha=Rb()|0;sb=Q;tb=Ha;ib=52;break}case 58:{Ha=Rb()|0;wb=Q;xb=Ha;ib=60;break}case 59:{Ha=Rb()|0;Fa=Q;Yua(J);wb=Fa;xb=Ha;ib=60;break}case 79:{Ha=Rb()|0;Fa=Q;Yua(c);Yua(Wa);Ava(Ra);yb=Fa;zb=Ha;ib=82;break}case 80:{Ha=Rb()|0;Ab=Q;Bb=Ha;vva(Qa);Qb(Bb|0);break}case 81:{Ha=Rb()|0;yb=Q;zb=Ha;ib=82;break}case 88:{Ha=Rb()|0;Cb=Q;Db=Ha;ib=90;break}case 89:{Ha=Rb()|0;Fa=Q;Yua(L);Cb=Fa;Db=Ha;ib=90;break}case 98:{Ha=Rb()|0;Fa=Q;Yua(c);Yua(Oa);Ava(Ka);Eb=Fa;Fb=Ha;ib=101;break}case 99:{Ha=Rb()|0;Gb=Q;Hb=Ha;vva(Ja);Qb(Hb|0);break}case 100:{Ha=Rb()|0;Eb=Q;Fb=Ha;ib=101;break}case 107:{Ha=Rb()|0;Ib=Q;Jb=Ha;ib=109;break}case 108:{Ha=Rb()|0;Fa=Q;Yua(N);Ib=Fa;Jb=Ha;ib=109;break}case 117:{Ha=Rb()|0;Fa=Q;Yua(c);Yua(oa);Ava(ka);Kb=Fa;Lb=Ha;ib=120;break}case 118:{Ha=Rb()|0;Mb=Q;Nb=Ha;vva(ja);Qb(Nb|0);break}case 119:{Ha=Rb()|0;Kb=Q;Lb=Ha;ib=120;break}case 126:{Ha=Rb()|0;Ob=Q;Pb=Ha;ib=128;break}case 127:{Ha=Rb()|0;Fa=Q;Yua(P);Ob=Fa;Pb=Ha;ib=128;break}case 137:{Ha=Rb()|0;Fa=Q;Yua(c);Yua(za);Ava(sa);Sb=Fa;Tb=Ha;ib=140;break}case 138:{Ha=Rb()|0;Ub=Q;Vb=Ha;vva(ra);Qb(Vb|0);break}case 139:{Ha=Rb()|0;Sb=Q;Tb=Ha;ib=140;break}case 146:{Ha=Rb()|0;Wb=Q;Xb=Ha;ib=148;break}case 147:{Ha=Rb()|0;Fa=Q;Yua(S);Wb=Fa;Xb=Ha;ib=148;break}case 156:{Ha=Rb()|0;Fa=Q;Yua(c);Yua(Ga);Ava(Ca);Yb=Fa;Zb=Ha;ib=159;break}case 157:{Ha=Rb()|0;_b=Q;$b=Ha;vva(Ba);Qb($b|0);break}case 158:{Ha=Rb()|0;Yb=Q;Zb=Ha;ib=159;break}case 165:{Ha=Rb()|0;ac=Q;bc=Ha;ib=167;break}case 166:{Ha=Rb()|0;Fa=Q;Yua(U);ac=Fa;bc=Ha;ib=167;break}}switch(ib|0){case 20:{ob=mb;pb=nb;vva(d);Qb(pb|0);break}case 36:{k[G>>2]=27468;k[d>>2]=27488;k[X>>2]=27560;Yua(aa);Ava(X);vva(d);cc=qb;dc=rb;Qb(dc|0);break}case 52:{ub=sb;vb=tb;vva(ca);Qb(vb|0);break}case 60:{k[I>>2]=27468;k[ca>>2]=27488;k[da>>2]=27560;Yua(ha);Ava(da);vva(ca);cc=wb;dc=xb;Qb(dc|0);break}case 82:{Ab=yb;Bb=zb;vva(Qa);Qb(Bb|0);break}case 90:{k[K>>2]=27468;k[Qa>>2]=27488;k[Ra>>2]=27560;Yua(Wa);Ava(Ra);vva(Qa);cc=Cb;dc=Db;Qb(dc|0);break}case 101:{Gb=Eb;Hb=Fb;vva(Ja);Qb(Hb|0);break}case 109:{k[M>>2]=27468;k[Ja>>2]=27488;k[Ka>>2]=27560;Yua(Oa);Ava(Ka);vva(Ja);cc=Ib;dc=Jb;Qb(dc|0);break}case 120:{Mb=Kb;Nb=Lb;vva(ja);Qb(Nb|0);break}case 128:{k[O>>2]=27468;k[ja>>2]=27488;k[ka>>2]=27560;Yua(oa);Ava(ka);vva(ja);cc=Ob;dc=Pb;Qb(dc|0);break}case 140:{Ub=Sb;Vb=Tb;vva(ra);Qb(Vb|0);break}case 148:{k[R>>2]=27468;k[ra>>2]=27488;k[sa>>2]=27560;Yua(za);Ava(sa);vva(ra);cc=Wb;dc=Xb;Qb(dc|0);break}case 159:{_b=Yb;$b=Zb;vva(Ba);Qb($b|0);break}case 167:{k[T>>2]=27468;k[Ba>>2]=27488;k[Ca>>2]=27560;Yua(Ga);Ava(Ca);vva(Ba);cc=ac;dc=bc;Qb(dc|0);break}}}while(0);gi(a);a=k[D>>2]|0;if(!a){r=b;return}dc=k[E>>2]|0;if((a|0)>0){bc=dc;ac=a;a=0;while(1){cc=bc+(a<<2)|0;T=k[cc>>2]|0;if(!T)ec=ac;else{Tqa(T);ec=k[D>>2]|0}k[cc>>2]=0;a=a+1|0;cc=k[E>>2]|0;if((a|0)>=(ec|0)){fc=cc;break}else{bc=cc;ac=ec}}}else fc=dc;if(fc)Tqa(fc);k[E>>2]=0;r=b;return}function v_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0;b=r;r=r+1248|0;c=b+1232|0;d=b+1228|0;e=b+1224|0;f=b+1245|0;g=b+1244|0;h=b+1208|0;j=b;l=b+1192|0;m=b+1176|0;n=b+1040|0;o=b+1212|0;q=b+888|0;s=b+1196|0;t=b+736|0;u=b+1180|0;v=b+600|0;w=b+1024|0;x=b+448|0;y=b+872|0;z=b+312|0;A=b+584|0;C=b+176|0;D=b+160|0;E=b+24|0;F=b+8|0;k[d>>2]=0;k[e>>2]=0;k[l>>2]=0;k[m>>2]=0;G=a+44|0;bO(k[G>>2]|0,f,759);cO(k[G>>2]|0,h,335);bO(k[G>>2]|0,g,340);dO(k[G>>2]|0,j,337);mO(k[G>>2]|0,0,759);cO(k[G>>2]|0,l,336);if(k[l>>2]|0)gO(k[G>>2]|0,m,l,338);G=n+56|0;H=n+4|0;I=n+56|0;J=n+128|0;K=n+132|0;L=n+36|0;M=n+52|0;N=q+56|0;O=q+4|0;P=q+56|0;R=q+128|0;S=q+132|0;T=q+36|0;U=q+52|0;V=t+56|0;W=t+4|0;X=t+56|0;Y=t+128|0;Z=t+132|0;_=t+36|0;$=t+52|0;aa=v+56|0;ba=v+4|0;ca=v+56|0;da=v+128|0;ea=v+132|0;fa=v+36|0;ga=v+52|0;ha=x+56|0;ia=x+4|0;ja=x+56|0;ka=x+128|0;la=x+132|0;ma=x+36|0;na=x+52|0;oa=z+56|0;pa=z+4|0;qa=z+56|0;ra=z+128|0;sa=z+132|0;ta=z+36|0;ua=z+52|0;xa=1;za=0;Aa=0;while(1){if(CY()|0){k[n>>2]=27524;k[G>>2]=27544;B=0;wa(508,I|0,H|0);Ba=B;B=0;if(Ba&1){Ca=9;break}k[J>>2]=0;k[K>>2]=-1;k[n>>2]=27468;k[G>>2]=27488;B=0;va(448,H|0);Ba=B;B=0;if(Ba&1){Ca=10;break}k[H>>2]=27560;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;k[M>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,H|0,c|0);Ba=B;B=0;if(Ba&1){Ca=8;break}Yua(c);B=0;Ia(40,n|0,111837,56)|0;Ba=B;B=0;if(Ba&1){Ca=17;break}B=0;wa(510,o|0,H|0);Ba=B;B=0;if(Ba&1){Ca=17;break}B=0;ya(425,o|0)|0;Ba=B;B=0;if(Ba&1){Ca=18;break}Yua(o);k[n>>2]=27468;k[G>>2]=27488;k[H>>2]=27560;Yua(L);Ava(H);vva(G)}if(CY()|0){k[q>>2]=27524;k[N>>2]=27544;B=0;wa(508,P|0,O|0);Ba=B;B=0;if(Ba&1){Ca=25;break}k[R>>2]=0;k[S>>2]=-1;k[q>>2]=27468;k[N>>2]=27488;B=0;va(448,O|0);Ba=B;B=0;if(Ba&1){Ca=26;break}k[O>>2]=27560;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[U>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,O|0,c|0);Ba=B;B=0;if(Ba&1){Ca=24;break}Yua(c);B=0;Ba=Ia(40,q|0,111894,48)|0;Da=B;B=0;if(Da&1){Ca=35;break}B=0;Da=Xa(242,Ba|0,xa|0)|0;Ba=B;B=0;if(Ba&1){Ca=35;break}B=0;Ia(40,Da|0,149177,1)|0;Da=B;B=0;if(Da&1){Ca=35;break}B=0;wa(510,s|0,O|0);Da=B;B=0;if(Da&1){Ca=35;break}B=0;ya(425,s|0)|0;Da=B;B=0;if(Da&1){Ca=36;break}Yua(s);k[q>>2]=27468;k[N>>2]=27488;k[O>>2]=27560;Yua(T);Ava(O);vva(N)}if(CY()|0){k[t>>2]=27524;k[V>>2]=27544;B=0;wa(508,X|0,W|0);Da=B;B=0;if(Da&1){Ca=43;break}k[Y>>2]=0;k[Z>>2]=-1;k[t>>2]=27468;k[V>>2]=27488;B=0;va(448,W|0);Da=B;B=0;if(Da&1){Ca=44;break}k[W>>2]=27560;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0;k[$>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,W|0,c|0);Da=B;B=0;if(Da&1){Ca=42;break}Yua(c);B=0;Ia(40,t|0,111943,53)|0;Da=B;B=0;if(Da&1){Ca=51;break}B=0;wa(510,u|0,W|0);Da=B;B=0;if(Da&1){Ca=51;break}B=0;ya(425,u|0)|0;Da=B;B=0;if(Da&1){Ca=52;break}Yua(u);k[t>>2]=27468;k[V>>2]=27488;k[W>>2]=27560;Yua(_);Ava(W);vva(V)}if(CY()|0){k[v>>2]=27524;k[aa>>2]=27544;B=0;wa(508,ca|0,ba|0);Da=B;B=0;if(Da&1){Ca=59;break}k[da>>2]=0;k[ea>>2]=-1;k[v>>2]=27468;k[aa>>2]=27488;B=0;va(448,ba|0);Da=B;B=0;if(Da&1){Ca=60;break}k[ba>>2]=27560;k[fa>>2]=0;k[fa+4>>2]=0;k[fa+8>>2]=0;k[fa+12>>2]=0;k[ga>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ba|0,c|0);Da=B;B=0;if(Da&1){Ca=58;break}Yua(c);B=0;Ia(40,v|0,111997,35)|0;Da=B;B=0;if(Da&1){Ca=67;break}B=0;wa(510,w|0,ba|0);Da=B;B=0;if(Da&1){Ca=67;break}B=0;ya(425,w|0)|0;Da=B;B=0;if(Da&1){Ca=68;break}Yua(w);k[v>>2]=27468;k[aa>>2]=27488;k[ba>>2]=27560;Yua(fa);Ava(ba);vva(aa)}j0(a);Aoa(d,a);if(CY()|0){k[x>>2]=27524;k[ha>>2]=27544;B=0;wa(508,ja|0,ia|0);Da=B;B=0;if(Da&1){Ca=75;break}k[ka>>2]=0;k[la>>2]=-1;k[x>>2]=27468;k[ha>>2]=27488;B=0;va(448,ia|0);Da=B;B=0;if(Da&1){Ca=76;break}k[ia>>2]=27560;k[ma>>2]=0;k[ma+4>>2]=0;k[ma+8>>2]=0;k[ma+12>>2]=0;k[na>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ia|0,c|0);Da=B;B=0;if(Da&1){Ca=74;break}Yua(c);B=0;Ia(40,x|0,112033,37)|0;Da=B;B=0;if(Da&1){Ca=83;break}B=0;wa(510,y|0,ia|0);Da=B;B=0;if(Da&1){Ca=83;break}B=0;ya(425,y|0)|0;Da=B;B=0;if(Da&1){Ca=84;break}Yua(y);k[x>>2]=27468;k[ha>>2]=27488;k[ia>>2]=27560;Yua(ma);Ava(ia);vva(ha)}A_(a);if(!(i[g>>0]|0))xh(a,521);Aoa(e,a);if((xa|0)>1){if(CY()|0){k[z>>2]=27524;k[oa>>2]=27544;B=0;wa(508,qa|0,pa|0);Da=B;B=0;if(Da&1){Ca=94;break}k[ra>>2]=0;k[sa>>2]=-1;k[z>>2]=27468;k[oa>>2]=27488;B=0;va(448,pa|0);Da=B;B=0;if(Da&1){Ca=95;break}k[pa>>2]=27560;k[ta>>2]=0;k[ta+4>>2]=0;k[ta+8>>2]=0;k[ta+12>>2]=0;k[ua>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,pa|0,c|0);Da=B;B=0;if(Da&1){Ca=93;break}Yua(c);B=0;Ia(40,z|0,112071,36)|0;Da=B;B=0;if(Da&1){Ca=102;break}B=0;wa(510,A|0,pa|0);Da=B;B=0;if(Da&1){Ca=102;break}B=0;ya(425,A|0)|0;Da=B;B=0;if(Da&1){Ca=103;break}Yua(A);k[z>>2]=27468;k[oa>>2]=27488;k[pa>>2]=27560;Yua(ta);Ava(pa);vva(oa)}if(w_(k[e>>2]|0,za,k[d>>2]|0,Aa,+p[j>>3])|0){Ea=za;Fa=Aa;Ca=140;break}}if((xa|0)>(k[h>>2]|0)){Ga=za;Ha=Aa;Ca=107;break}if(za){if((k[za>>2]|0)!=0?(Da=k[za+4>>2]|0,(Da|0)!=0):0){Ba=k[Da>>2]|0;if(Ba)Ec[k[(k[Ba>>2]|0)+4>>2]&1023](Ba);Sqa(Da)}Sqa(za)}Da=k[e>>2]|0;if(Aa){if((k[Aa>>2]|0)!=0?(Ba=k[Aa+4>>2]|0,(Ba|0)!=0):0){Ja=k[Ba>>2]|0;if(Ja)Ec[k[(k[Ja>>2]|0)+4>>2]&1023](Ja);Sqa(Ba)}Sqa(Aa)}xa=xa+1|0;za=Da;Aa=k[d>>2]|0}a:switch(Ca|0){case 8:{Aa=Rb()|0;za=Q;Yua(c);Yua(L);Ava(H);Ka=za;La=Aa;Ca=11;break}case 9:{Aa=Rb()|0;Ma=Q;Na=Aa;vva(G);Qb(Na|0);break}case 10:{Aa=Rb()|0;Ka=Q;La=Aa;Ca=11;break}case 17:{Aa=Rb()|0;Oa=Q;Pa=Aa;Ca=19;break}case 18:{Aa=Rb()|0;za=Q;Yua(o);Oa=za;Pa=Aa;Ca=19;break}case 24:{Aa=Rb()|0;za=Q;Yua(c);Yua(T);Ava(O);Qa=za;Ra=Aa;Ca=27;break}case 25:{Aa=Rb()|0;Sa=Q;Ta=Aa;vva(N);Qb(Ta|0);break}case 26:{Aa=Rb()|0;Qa=Q;Ra=Aa;Ca=27;break}case 35:{Aa=Rb()|0;Ua=Q;Va=Aa;Ca=37;break}case 36:{Aa=Rb()|0;za=Q;Yua(s);Ua=za;Va=Aa;Ca=37;break}case 42:{Aa=Rb()|0;za=Q;Yua(c);Yua(_);Ava(W);Wa=za;Ya=Aa;Ca=45;break}case 43:{Aa=Rb()|0;Za=Q;_a=Aa;vva(V);Qb(_a|0);break}case 44:{Aa=Rb()|0;Wa=Q;Ya=Aa;Ca=45;break}case 51:{Aa=Rb()|0;$a=Q;ab=Aa;Ca=53;break}case 52:{Aa=Rb()|0;za=Q;Yua(u);$a=za;ab=Aa;Ca=53;break}case 58:{Aa=Rb()|0;za=Q;Yua(c);Yua(fa);Ava(ba);bb=za;cb=Aa;Ca=61;break}case 59:{Aa=Rb()|0;db=Q;eb=Aa;vva(aa);Qb(eb|0);break}case 60:{Aa=Rb()|0;bb=Q;cb=Aa;Ca=61;break}case 67:{Aa=Rb()|0;fb=Q;gb=Aa;Ca=69;break}case 68:{Aa=Rb()|0;za=Q;Yua(w);fb=za;gb=Aa;Ca=69;break}case 74:{Aa=Rb()|0;za=Q;Yua(c);Yua(ma);Ava(ia);hb=za;ib=Aa;Ca=77;break}case 75:{Aa=Rb()|0;jb=Q;kb=Aa;vva(ha);Qb(kb|0);break}case 76:{Aa=Rb()|0;hb=Q;ib=Aa;Ca=77;break}case 83:{Aa=Rb()|0;lb=Q;mb=Aa;Ca=85;break}case 84:{Aa=Rb()|0;za=Q;Yua(y);lb=za;mb=Aa;Ca=85;break}case 93:{Aa=Rb()|0;za=Q;Yua(c);Yua(ta);Ava(pa);nb=za;ob=Aa;Ca=96;break}case 94:{Aa=Rb()|0;pb=Q;qb=Aa;vva(oa);Qb(qb|0);break}case 95:{Aa=Rb()|0;nb=Q;ob=Aa;Ca=96;break}case 102:{Aa=Rb()|0;rb=Q;sb=Aa;Ca=104;break}case 103:{Aa=Rb()|0;za=Q;Yua(A);rb=za;sb=Aa;Ca=104;break}case 107:{if(CY()|0){Aa=C+56|0;za=C+4|0;k[C>>2]=27524;k[Aa>>2]=27544;B=0;wa(508,C+56|0,za|0);A=B;B=0;if(A&1){A=Rb()|0;tb=Q;ub=A;vva(Aa);Qb(ub|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[Aa>>2]=27488;B=0;va(448,za|0);A=B;B=0;do if(A&1){y=Rb()|0;vb=Q;wb=y}else{k[za>>2]=27560;y=C+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[C+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,za|0,c|0);w=B;B=0;if(w&1){w=Rb()|0;u=Q;Yua(c);Yua(y);Ava(za);vb=u;wb=w;break}Yua(c);B=0;w=Ia(40,C|0,112108,41)|0;u=B;B=0;do if(((!(u&1)?(B=0,s=Xa(242,w|0,k[h>>2]|0)|0,o=B,B=0,!(o&1)):0)?(B=0,Ia(40,s|0,136862,9)|0,s=B,B=0,!(s&1)):0)?(B=0,wa(510,D|0,za|0),s=B,B=0,!(s&1)):0){B=0;ya(425,D|0)|0;s=B;B=0;if(s&1){s=Rb()|0;o=Q;Yua(D);xb=o;yb=s;break}else{Yua(D);k[C>>2]=27468;k[Aa>>2]=27488;k[za>>2]=27560;Yua(y);Ava(za);vva(Aa);Ea=Ga;Fa=Ha;Ca=140;break a}}else Ca=122;while(0);if((Ca|0)==122){w=Rb()|0;xb=Q;yb=w}k[C>>2]=27468;k[Aa>>2]=27488;k[za>>2]=27560;Yua(y);Ava(za);vva(Aa);zb=xb;Ab=yb;Qb(Ab|0)}while(0);tb=vb;ub=wb;vva(Aa);Qb(ub|0)}else{Ea=Ga;Fa=Ha;Ca=140}break}}switch(Ca|0){case 11:{Ma=Ka;Na=La;vva(G);Qb(Na|0);break}case 19:{k[n>>2]=27468;k[G>>2]=27488;k[H>>2]=27560;Yua(L);Ava(H);vva(G);zb=Oa;Ab=Pa;Qb(Ab|0);break}case 27:{Sa=Qa;Ta=Ra;vva(N);Qb(Ta|0);break}case 37:{k[q>>2]=27468;k[N>>2]=27488;k[O>>2]=27560;Yua(T);Ava(O);vva(N);zb=Ua;Ab=Va;Qb(Ab|0);break}case 45:{Za=Wa;_a=Ya;vva(V);Qb(_a|0);break}case 53:{k[t>>2]=27468;k[V>>2]=27488;k[W>>2]=27560;Yua(_);Ava(W);vva(V);zb=$a;Ab=ab;Qb(Ab|0);break}case 61:{db=bb;eb=cb;vva(aa);Qb(eb|0);break}case 69:{k[v>>2]=27468;k[aa>>2]=27488;k[ba>>2]=27560;Yua(fa);Ava(ba);vva(aa);zb=fb;Ab=gb;Qb(Ab|0);break}case 77:{jb=hb;kb=ib;vva(ha);Qb(kb|0);break}case 85:{k[x>>2]=27468;k[ha>>2]=27488;k[ia>>2]=27560;Yua(ma);Ava(ia);vva(ha);zb=lb;Ab=mb;Qb(Ab|0);break}case 96:{pb=nb;qb=ob;vva(oa);Qb(qb|0);break}case 104:{k[z>>2]=27468;k[oa>>2]=27488;k[pa>>2]=27560;Yua(ta);Ava(pa);vva(oa);zb=rb;Ab=sb;Qb(Ab|0);break}case 140:{if(i[f>>0]|0){b:do if(CY()|0){f=E+56|0;sb=E+4|0;k[E>>2]=27524;k[f>>2]=27544;B=0;wa(508,E+56|0,sb|0);rb=B;B=0;if(rb&1){rb=Rb()|0;Bb=Q;Cb=rb;vva(f);Qb(Cb|0)}k[E+128>>2]=0;k[E+132>>2]=-1;k[E>>2]=27468;k[f>>2]=27488;B=0;va(448,sb|0);rb=B;B=0;do if(rb&1){oa=Rb()|0;Db=Q;Eb=oa}else{k[sb>>2]=27560;oa=E+36|0;k[oa>>2]=0;k[oa+4>>2]=0;k[oa+8>>2]=0;k[oa+12>>2]=0;k[E+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,sb|0,c|0);pa=B;B=0;if(pa&1){pa=Rb()|0;ta=Q;Yua(c);Yua(oa);Ava(sb);Db=ta;Eb=pa;break}Yua(c);B=0;Ia(40,E|0,148942,18)|0;pa=B;B=0;do if(!(pa&1)?(B=0,wa(510,F|0,sb|0),ta=B,B=0,!(ta&1)):0){B=0;ya(425,F|0)|0;ta=B;B=0;if(ta&1){ta=Rb()|0;z=Q;Yua(F);Fb=z;Gb=ta;break}else{Yua(F);k[E>>2]=27468;k[f>>2]=27488;k[sb>>2]=27560;Yua(oa);Ava(sb);vva(f);break b}}else Ca=154;while(0);if((Ca|0)==154){pa=Rb()|0;Fb=Q;Gb=pa}k[E>>2]=27468;k[f>>2]=27488;k[sb>>2]=27560;Yua(oa);Ava(sb);vva(f);zb=Fb;Ab=Gb;Qb(Ab|0)}while(0);Bb=Db;Cb=Eb;vva(f);Qb(Cb|0)}while(0);ci(a,a+48|0,k[m>>2]|0,k[l>>2]|0,1)}if(Ea){if((k[Ea>>2]|0)!=0?(a=k[Ea+4>>2]|0,(a|0)!=0):0){Cb=k[a>>2]|0;if(Cb)Ec[k[(k[Cb>>2]|0)+4>>2]&1023](Cb);Sqa(a)}Sqa(Ea)}if(Fa){if((k[Fa>>2]|0)!=0?(Ea=k[Fa+4>>2]|0,(Ea|0)!=0):0){a=k[Ea>>2]|0;if(a)Ec[k[(k[a>>2]|0)+4>>2]&1023](a);Sqa(Ea)}Sqa(Fa)}Fa=k[e>>2]|0;if(Fa){if((k[Fa>>2]|0)!=0?(e=k[Fa+4>>2]|0,(e|0)!=0):0){Ea=k[e>>2]|0;if(Ea)Ec[k[(k[Ea>>2]|0)+4>>2]&1023](Ea);Sqa(e)}Sqa(Fa)}Fa=k[d>>2]|0;if(Fa){if((k[Fa>>2]|0)!=0?(d=k[Fa+4>>2]|0,(d|0)!=0):0){e=k[d>>2]|0;if(e)Ec[k[(k[e>>2]|0)+4>>2]&1023](e);Sqa(d)}Sqa(Fa)}Fa=k[l>>2]|0;if(!Fa){r=b;return}d=k[m>>2]|0;if((Fa|0)>0){e=d;Ea=Fa;Fa=0;while(1){a=e+(Fa<<2)|0;Cb=k[a>>2]|0;if(!Cb)Hb=Ea;else{Tqa(Cb);Hb=k[l>>2]|0}k[a>>2]=0;Fa=Fa+1|0;a=k[m>>2]|0;if((Fa|0)>=(Hb|0)){Ib=a;break}else{e=a;Ea=Hb}}}else Ib=d;if(Ib)Tqa(Ib);k[m>>2]=0;r=b;return}}}function w_(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0.0,ga=0.0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0;f=r;r=r+960|0;g=f+944|0;h=f+760|0;i=f+932|0;j=f+920|0;l=f+908|0;m=f+624|0;n=f+896|0;o=f+488|0;q=f+472|0;s=f+336|0;u=f+320|0;v=f+36|0;w=f+24|0;x=f+184|0;y=f+12|0;z=f+48|0;A=f;C=Qqa(8)|0;B=0;va(485,C|0);D=B;B=0;if(D&1){D=Rb()|0;Sqa(C);Qb(D|0)}if((k[d>>2]|0)!=0?(D=d+4|0,E=k[D>>2]|0,F=Qqa(4)|0,G=k[E>>2]|0,H=Hc[k[(k[G>>2]|0)+36>>2]&511](G)|0,k[F>>2]=H,G=k[E>>2]|0,Fc[k[(k[G>>2]|0)+60>>2]&1023](G,H),k[C+4>>2]=F,(k[d>>2]|0)!=0):0){H=k[k[D>>2]>>2]|0;Fc[k[(k[H>>2]|0)+60>>2]&1023](H,k[F>>2]|0)}if((k[C>>2]|0)!=0?(F=C+4|0,H=k[k[F>>2]>>2]|0,Xc[k[(k[H>>2]|0)+48>>2]&63](H,k[k[c+4>>2]>>2]|0,-1.0),(k[C>>2]|0)!=0):0){c=k[k[F>>2]>>2]|0;I=+id[k[(k[c>>2]|0)+64>>2]&63](c,1)}else I=0.0;if(!(k[d>>2]|0))J=0.0;else{c=k[k[d+4>>2]>>2]|0;J=+id[k[(k[c>>2]|0)+64>>2]&63](c,1)}K=+$(+I);p[t>>3]=K;c=k[t+4>>2]|0;if(!(c>>>0>2146435072|(c|0)==2146435072&(k[t>>2]|0)>>>0>0)?(K=+$(+J),p[t>>3]=K,c=k[t+4>>2]|0,!(c>>>0>2146435072|(c|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){K=I/J;c=EY()|0;a:do if(K<e)if(c){d=m+56|0;F=m+4|0;k[m>>2]=27524;k[d>>2]=27544;B=0;wa(508,m+56|0,F|0);H=B;B=0;if(H&1){H=Rb()|0;L=Q;M=H;vva(d);Qb(M|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[d>>2]=27488;B=0;va(448,F|0);H=B;B=0;do if(H&1){D=Rb()|0;N=Q;O=D}else{k[F>>2]=27560;D=m+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[m+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,F|0,g|0);G=B;B=0;if(G&1){G=Rb()|0;E=Q;Yua(g);Yua(D);Ava(F);N=E;O=G;break}Yua(g);B=0;G=Ia(40,m|0,149177,1)|0;E=B;B=0;do if((((!(E&1)?(k[G+(k[(k[G>>2]|0)+-12>>2]|0)+12>>2]=50,P=G+(k[(k[G>>2]|0)+-12>>2]|0)+4|0,k[P>>2]=k[P>>2]&-177|32,B=0,P=Ia(40,G|0,136978,41)|0,R=B,B=0,!(R&1)):0)?(B=0,R=Sa(1,P|0,+(K*100.0))|0,P=B,B=0,!(P&1)):0)?(B=0,P=Ia(40,R|0,148270,3)|0,R=B,B=0,!(R&1)):0)?(B=0,R=Sa(1,P|0,+(e*100.0))|0,P=B,B=0,!(P&1)):0){B=0;Ia(40,R|0,148274,3)|0;R=B;B=0;if(R&1){S=55;break}B=0;wa(510,n|0,F|0);R=B;B=0;if(R&1){S=55;break}B=0;ya(425,n|0)|0;R=B;B=0;if(R&1){R=Rb()|0;P=Q;Yua(n);T=P;U=R;break}else{Yua(n);k[m>>2]=27468;k[d>>2]=27488;k[F>>2]=27560;Yua(D);Ava(F);vva(d);V=1;break a}}else S=55;while(0);if((S|0)==55){G=Rb()|0;T=Q;U=G}k[m>>2]=27468;k[d>>2]=27488;k[F>>2]=27560;Yua(D);Ava(F);vva(d);W=U;X=T;Qb(W|0)}while(0);L=N;M=O;vva(d);Qb(M|0)}else V=1;else if(c){F=o+56|0;H=o+4|0;k[o>>2]=27524;k[F>>2]=27544;B=0;wa(508,o+56|0,H|0);G=B;B=0;if(G&1){G=Rb()|0;Y=Q;Z=G;vva(F);Qb(Z|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[F>>2]=27488;B=0;va(448,H|0);G=B;B=0;do if(G&1){E=Rb()|0;_=Q;aa=E}else{k[H>>2]=27560;E=o+36|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[o+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,H|0,g|0);R=B;B=0;if(R&1){R=Rb()|0;P=Q;Yua(g);Yua(E);Ava(H);_=P;aa=R;break}Yua(g);B=0;R=Ia(40,o|0,149177,1)|0;P=B;B=0;do if((((!(P&1)?(k[R+(k[(k[R>>2]|0)+-12>>2]|0)+12>>2]=50,ba=R+(k[(k[R>>2]|0)+-12>>2]|0)+4|0,k[ba>>2]=k[ba>>2]&-177|32,B=0,ba=Ia(40,R|0,136978,41)|0,ca=B,B=0,!(ca&1)):0)?(B=0,ca=Sa(1,ba|0,+(K*100.0))|0,ba=B,B=0,!(ba&1)):0)?(B=0,ba=Ia(40,ca|0,148278,3)|0,ca=B,B=0,!(ca&1)):0)?(B=0,ca=Sa(1,ba|0,+(e*100.0))|0,ba=B,B=0,!(ba&1)):0){B=0;Ia(40,ca|0,148274,3)|0;ca=B;B=0;if(ca&1){S=76;break}B=0;wa(510,q|0,H|0);ca=B;B=0;if(ca&1){S=76;break}B=0;ya(425,q|0)|0;ca=B;B=0;if(ca&1){ca=Rb()|0;ba=Q;Yua(q);da=ba;ea=ca;break}else{Yua(q);k[o>>2]=27468;k[F>>2]=27488;k[H>>2]=27560;Yua(E);Ava(H);vva(F);V=0;break a}}else S=76;while(0);if((S|0)==76){R=Rb()|0;da=Q;ea=R}k[o>>2]=27468;k[F>>2]=27488;k[H>>2]=27560;Yua(E);Ava(H);vva(F);W=ea;X=da;Qb(W|0)}while(0);Y=_;Z=aa;vva(F);Qb(Z|0)}else V=0;while(0);Z=Qqa(8)|0;B=0;va(485,Z|0);aa=B;B=0;if(aa&1){aa=Rb()|0;Sqa(Z);Qb(aa|0)}if((k[b>>2]|0)!=0?(aa=b+4|0,_=k[aa>>2]|0,Y=Qqa(4)|0,da=k[_>>2]|0,ea=Hc[k[(k[da>>2]|0)+36>>2]&511](da)|0,k[Y>>2]=ea,da=k[_>>2]|0,Fc[k[(k[da>>2]|0)+60>>2]&1023](da,ea),k[Z+4>>2]=Y,(k[b>>2]|0)!=0):0){ea=k[k[aa>>2]>>2]|0;Fc[k[(k[ea>>2]|0)+60>>2]&1023](ea,k[Y>>2]|0)}if((k[Z>>2]|0)!=0?(Y=Z+4|0,ea=k[k[Y>>2]>>2]|0,Xc[k[(k[ea>>2]|0)+48>>2]&63](ea,k[k[a+4>>2]>>2]|0,-1.0),(k[Z>>2]|0)!=0):0){a=k[k[Y>>2]>>2]|0;fa=+id[k[(k[a>>2]|0)+64>>2]&63](a,1)}else fa=0.0;if(!(k[b>>2]|0))ga=0.0;else{a=k[k[b+4>>2]>>2]|0;ga=+id[k[(k[a>>2]|0)+64>>2]&63](a,1)}K=+$(+fa);p[t>>3]=K;a=k[t+4>>2]|0;if(!(a>>>0>2146435072|(a|0)==2146435072&(k[t>>2]|0)>>>0>0)?(K=+$(+ga),p[t>>3]=K,a=k[t+4>>2]|0,!(a>>>0>2146435072|(a|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){K=fa/ga;a=EY()|0;b:do if(K<e)if(a){b=x+56|0;Y=x+4|0;k[x>>2]=27524;k[b>>2]=27544;B=0;wa(508,x+56|0,Y|0);ea=B;B=0;if(ea&1){ea=Rb()|0;ha=Q;ia=ea;vva(b);Qb(ia|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[b>>2]=27488;B=0;va(448,Y|0);ea=B;B=0;do if(ea&1){aa=Rb()|0;ja=Q;ka=aa}else{k[Y>>2]=27560;aa=x+36|0;k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;k[aa+12>>2]=0;k[x+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,Y|0,g|0);da=B;B=0;if(da&1){da=Rb()|0;_=Q;Yua(g);Yua(aa);Ava(Y);ja=_;ka=da;break}Yua(g);k[x+(k[(k[x>>2]|0)+-12>>2]|0)+12>>2]=50;da=x+(k[(k[x>>2]|0)+-12>>2]|0)+4|0;k[da>>2]=k[da>>2]&-177|32;B=0;da=Ia(40,x|0,112247,44)|0;_=B;B=0;do if(!(_&1)){B=0;o=Sa(1,da|0,+(K*100.0))|0;q=B;B=0;if(q&1){S=132;break}B=0;q=Ia(40,o|0,148270,3)|0;o=B;B=0;if(o&1){S=132;break}B=0;o=Sa(1,q|0,+(e*100.0))|0;q=B;B=0;if(q&1){S=132;break}B=0;Ia(40,o|0,148274,3)|0;o=B;B=0;if(o&1){S=132;break}B=0;wa(510,y|0,Y|0);o=B;B=0;if(o&1){S=132;break}B=0;ya(425,y|0)|0;o=B;B=0;if(o&1){o=Rb()|0;q=Q;Yua(y);la=q;ma=o;break}else{Yua(y);k[x>>2]=27468;k[b>>2]=27488;k[Y>>2]=27560;Yua(aa);Ava(Y);vva(b);na=V;break b}}else S=132;while(0);if((S|0)==132){da=Rb()|0;la=Q;ma=da}k[x>>2]=27468;k[b>>2]=27488;k[Y>>2]=27560;Yua(aa);Ava(Y);vva(b);W=ma;X=la;Qb(W|0)}while(0);ha=ja;ia=ka;vva(b);Qb(ia|0)}else na=V;else if(a){Y=z+56|0;ea=z+4|0;k[z>>2]=27524;k[Y>>2]=27544;B=0;wa(508,z+56|0,ea|0);F=B;B=0;if(F&1){F=Rb()|0;oa=Q;pa=F;vva(Y);Qb(pa|0)}k[z+128>>2]=0;k[z+132>>2]=-1;k[z>>2]=27468;k[Y>>2]=27488;B=0;va(448,ea|0);F=B;B=0;do if(F&1){da=Rb()|0;qa=Q;ra=da}else{k[ea>>2]=27560;da=z+36|0;k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;k[da+12>>2]=0;k[z+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,ea|0,g|0);_=B;B=0;if(_&1){_=Rb()|0;E=Q;Yua(g);Yua(da);Ava(ea);qa=E;ra=_;break}Yua(g);k[z+(k[(k[z>>2]|0)+-12>>2]|0)+12>>2]=50;_=z+(k[(k[z>>2]|0)+-12>>2]|0)+4|0;k[_>>2]=k[_>>2]&-177|32;B=0;_=Ia(40,z|0,112247,44)|0;E=B;B=0;do if(!(E&1)){B=0;o=Sa(1,_|0,+(K*100.0))|0;q=B;B=0;if(q&1){S=152;break}B=0;q=Ia(40,o|0,148278,3)|0;o=B;B=0;if(o&1){S=152;break}B=0;o=Sa(1,q|0,+(e*100.0))|0;q=B;B=0;if(q&1){S=152;break}B=0;Ia(40,o|0,148274,3)|0;o=B;B=0;if(o&1){S=152;break}B=0;wa(510,A|0,ea|0);o=B;B=0;if(o&1){S=152;break}B=0;ya(425,A|0)|0;o=B;B=0;if(o&1){o=Rb()|0;q=Q;Yua(A);sa=q;ta=o;break}else{Yua(A);k[z>>2]=27468;k[Y>>2]=27488;k[ea>>2]=27560;Yua(da);Ava(ea);vva(Y);na=0;break b}}else S=152;while(0);if((S|0)==152){_=Rb()|0;sa=Q;ta=_}k[z>>2]=27468;k[Y>>2]=27488;k[ea>>2]=27560;Yua(da);Ava(ea);vva(Y);W=ta;X=sa;Qb(W|0)}while(0);oa=qa;pa=ra;vva(Y);Qb(pa|0)}else na=0;while(0);if((k[Z>>2]|0)!=0?(pa=k[Z+4>>2]|0,(pa|0)!=0):0){ra=k[pa>>2]|0;if(ra)Ec[k[(k[ra>>2]|0)+4>>2]&1023](ra);Sqa(pa)}Sqa(Z);if(!(k[C>>2]|0)){Sqa(C);r=f;return na|0}Z=k[C+4>>2]|0;if(!Z){Sqa(C);r=f;return na|0}pa=k[Z>>2]|0;if(pa)Ec[k[(k[pa>>2]|0)+4>>2]&1023](pa);Sqa(Z);Sqa(C);r=f;return na|0}na=s+56|0;f=s+4|0;k[s>>2]=27524;k[na>>2]=27544;B=0;wa(508,s+56|0,f|0);C=B;B=0;if(C&1){C=Rb()|0;xa=Q;za=C;vva(na);Qb(za|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[na>>2]=27488;B=0;va(448,f|0);C=B;B=0;do if(C&1){Z=Rb()|0;Aa=Q;Ba=Z}else{k[f>>2]=27560;Z=s+36|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[s+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,f|0,g|0);pa=B;B=0;if(pa&1){pa=Rb()|0;ra=Q;Yua(g);Yua(Z);Ava(f);Aa=ra;Ba=pa;break}Yua(g);B=0;pa=Ia(40,s|0,148282,29)|0;ra=B;B=0;c:do if(!(ra&1)?(B=0,Xa(239,pa|0,0)|0,qa=B,B=0,!(qa&1)):0){qa=Ab(20)|0;B=0;eb(502,u|0,112150,73);oa=B;B=0;do if(!(oa&1)){B=0;eb(502,v|0,112224,22);sa=B;B=0;if(sa&1){sa=Rb()|0;ta=Q;Yua(u);Ca=ta;Da=sa;break}B=0;wa(510,w|0,f|0);sa=B;B=0;if(sa&1){sa=Rb()|0;Ea=1;Fa=Q;Ga=sa}else{B=0;ua(163,qa|0,u|0,v|0,117,w|0);sa=B;B=0;if(sa&1)Ha=1;else{B=0;eb(503,qa|0,1240,229);B=0;Ha=0}sa=Rb()|0;ta=Q;Yua(w);Ea=Ha;Fa=ta;Ga=sa}Yua(v);Yua(u);if(Ea){Ca=Fa;Da=Ga}else{Ja=Fa;Ka=Ga;break c}}else{sa=Rb()|0;Ca=Q;Da=sa}while(0);zb(qa|0);Ja=Ca;Ka=Da}else S=106;while(0);if((S|0)==106){pa=Rb()|0;Ja=Q;Ka=pa}k[s>>2]=27468;k[na>>2]=27488;k[f>>2]=27560;Yua(Z);Ava(f);vva(na);W=Ka;X=Ja;Qb(W|0)}while(0);xa=Aa;za=Ba;vva(na);Qb(za|0)}za=h+56|0;na=h+4|0;k[h>>2]=27524;k[za>>2]=27544;B=0;wa(508,h+56|0,na|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;La=Q;Ma=Ba;vva(za);Qb(Ma|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[za>>2]=27488;B=0;va(448,na|0);Ba=B;B=0;do if(Ba&1){Aa=Rb()|0;Na=Q;Oa=Aa}else{k[na>>2]=27560;Aa=h+36|0;k[Aa>>2]=0;k[Aa+4>>2]=0;k[Aa+8>>2]=0;k[Aa+12>>2]=0;k[h+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,na|0,g|0);xa=B;B=0;if(xa&1){xa=Rb()|0;Ja=Q;Yua(g);Yua(Aa);Ava(na);Na=Ja;Oa=xa;break}Yua(g);B=0;xa=Ia(40,h|0,148282,29)|0;Ja=B;B=0;d:do if(!(Ja&1)?(B=0,Xa(239,xa|0,0)|0,Ka=B,B=0,!(Ka&1)):0){Ka=Ab(20)|0;B=0;eb(502,i|0,112150,73);f=B;B=0;do if(!(f&1)){B=0;eb(502,j|0,112224,22);s=B;B=0;if(s&1){s=Rb()|0;Da=Q;Yua(i);Pa=s;Qa=Da;break}B=0;wa(510,l|0,na|0);Da=B;B=0;if(Da&1){Da=Rb()|0;Ra=Da;Ta=Q;Ua=1}else{B=0;ua(163,Ka|0,i|0,j|0,105,l|0);Da=B;B=0;if(Da&1)Va=1;else{B=0;eb(503,Ka|0,1240,229);B=0;Va=0}Da=Rb()|0;s=Q;Yua(l);Ra=Da;Ta=s;Ua=Va}Yua(j);Yua(i);if(Ua){Pa=Ra;Qa=Ta}else{Wa=Ra;Ya=Ta;break d}}else{s=Rb()|0;Pa=s;Qa=Q}while(0);zb(Ka|0);Wa=Pa;Ya=Qa}else S=28;while(0);if((S|0)==28){xa=Rb()|0;Wa=xa;Ya=Q}k[h>>2]=27468;k[za>>2]=27488;k[na>>2]=27560;Yua(Aa);Ava(na);vva(za);W=Wa;X=Ya;Qb(W|0)}while(0);La=Na;Ma=Oa;vva(za);Qb(Ma|0);return 0}function x_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;b=r;r=r+640|0;c=b+624|0;d=b+620|0;e=b+638|0;f=b+637|0;g=b+636|0;h=b+612|0;j=b+596|0;l=b+592|0;m=b+456|0;n=b+600|0;o=b+304|0;p=b+440|0;q=b+168|0;s=b+152|0;t=b+16|0;u=b;k[l>>2]=0;xh(a,510);v=a+44|0;bO(k[v>>2]|0,e,759);bO(k[v>>2]|0,f,99);bO(k[v>>2]|0,g,306);cO(k[v>>2]|0,h,476);cO(k[v>>2]|0,b+616|0,298);cO(k[v>>2]|0,d,312);cO(k[v>>2]|0,j,310);if(k[d>>2]|0)gO(k[v>>2]|0,l,d,313);a:do if(CY()|0){w=m+56|0;x=m+4|0;k[m>>2]=27524;k[w>>2]=27544;B=0;wa(508,m+56|0,x|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(w);Qb(A|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[w>>2]=27488;B=0;va(448,x|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[x>>2]=27560;C=m+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,x|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(c);Yua(C);Ava(x);D=G;E=F;break}Yua(c);B=0;Ia(40,m|0,112292,28)|0;F=B;B=0;do if(!(F&1)?(B=0,wa(510,n|0,x|0),G=B,B=0,!(G&1)):0){B=0;ya(425,n|0)|0;G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(n);I=H;J=G;break}else{Yua(n);k[m>>2]=27468;k[w>>2]=27488;k[x>>2]=27560;Yua(C);Ava(x);vva(w);break a}}else K=16;while(0);if((K|0)==16){F=Rb()|0;I=Q;J=F}k[m>>2]=27468;k[w>>2]=27488;k[x>>2]=27560;Yua(C);Ava(x);vva(w);L=I;M=J;Qb(M|0)}while(0);z=D;A=E;vva(w);Qb(A|0)}while(0);A=(i[f>>0]|0)==0|(i[g>>0]|0)==0;g=CY()|0;do if(A){b:do if(g){f=q+56|0;E=q+4|0;k[q>>2]=27524;k[f>>2]=27544;B=0;wa(508,q+56|0,E|0);D=B;B=0;if(D&1){D=Rb()|0;N=Q;O=D;vva(f);Qb(O|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[f>>2]=27488;B=0;va(448,E|0);D=B;B=0;do if(D&1){z=Rb()|0;P=Q;R=z}else{k[E>>2]=27560;z=q+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,E|0,c|0);J=B;B=0;if(J&1){J=Rb()|0;I=Q;Yua(c);Yua(z);Ava(E);P=I;R=J;break}Yua(c);B=0;Ia(40,q|0,112362,27)|0;J=B;B=0;do if(!(J&1)?(B=0,wa(510,s|0,E|0),I=B,B=0,!(I&1)):0){B=0;ya(425,s|0)|0;I=B;B=0;if(I&1){I=Rb()|0;m=Q;Yua(s);S=m;T=I;break}else{Yua(s);k[q>>2]=27468;k[f>>2]=27488;k[E>>2]=27560;Yua(z);Ava(E);vva(f);break b}}else K=50;while(0);if((K|0)==50){J=Rb()|0;S=Q;T=J}k[q>>2]=27468;k[f>>2]=27488;k[E>>2]=27560;Yua(z);Ava(E);vva(f);L=S;M=T;Qb(M|0)}while(0);N=P;O=R;vva(f);Qb(O|0)}while(0);if((k[j>>2]|0)==4)Yoa(a);else{Voa(a);oO(k[v>>2]|0,353,575);y_(a);oO(k[v>>2]|0,64,575);y_(a);oO(k[v>>2]|0,339,575);y_(a);break}}else{c:do if(g){w=o+56|0;E=o+4|0;k[o>>2]=27524;k[w>>2]=27544;B=0;wa(508,o+56|0,E|0);D=B;B=0;if(D&1){D=Rb()|0;U=Q;V=D;vva(w);Qb(V|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[w>>2]=27488;B=0;va(448,E|0);D=B;B=0;do if(D&1){C=Rb()|0;W=Q;X=C}else{k[E>>2]=27560;C=o+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,E|0,c|0);J=B;B=0;if(J&1){J=Rb()|0;I=Q;Yua(c);Yua(C);Ava(E);W=I;X=J;break}Yua(c);B=0;Ia(40,o|0,112321,40)|0;J=B;B=0;do if(!(J&1)?(B=0,wa(510,p|0,E|0),I=B,B=0,!(I&1)):0){B=0;ya(425,p|0)|0;I=B;B=0;if(I&1){I=Rb()|0;m=Q;Yua(p);Y=m;Z=I;break}else{Yua(p);k[o>>2]=27468;k[w>>2]=27488;k[E>>2]=27560;Yua(C);Ava(E);vva(w);break c}}else K=33;while(0);if((K|0)==33){J=Rb()|0;Y=Q;Z=J}k[o>>2]=27468;k[w>>2]=27488;k[E>>2]=27560;Yua(C);Ava(E);vva(w);L=Y;M=Z;Qb(M|0)}while(0);U=W;V=X;vva(w);Qb(V|0)}while(0);xh(a,512);Voa(a);oO(k[v>>2]|0,64,575);y_(a);xh(a,513);Voa(a);oO(k[v>>2]|0,339,575);z_(a)}while(0);if(i[e>>0]|0){d:do if(CY()|0){e=t+56|0;v=t+4|0;k[t>>2]=27524;k[e>>2]=27544;B=0;wa(508,t+56|0,v|0);V=B;B=0;if(V&1){V=Rb()|0;_=Q;$=V;vva(e);Qb($|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[e>>2]=27488;B=0;va(448,v|0);V=B;B=0;do if(V&1){X=Rb()|0;aa=Q;ba=X}else{k[v>>2]=27560;X=t+36|0;k[X>>2]=0;k[X+4>>2]=0;k[X+8>>2]=0;k[X+12>>2]=0;k[t+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);W=B;B=0;if(W&1){W=Rb()|0;U=Q;Yua(c);Yua(X);Ava(v);aa=U;ba=W;break}Yua(c);B=0;Ia(40,t|0,148942,18)|0;W=B;B=0;do if(!(W&1)?(B=0,wa(510,u|0,v|0),U=B,B=0,!(U&1)):0){B=0;ya(425,u|0)|0;U=B;B=0;if(U&1){U=Rb()|0;Z=Q;Yua(u);ca=Z;da=U;break}else{Yua(u);k[t>>2]=27468;k[e>>2]=27488;k[v>>2]=27560;Yua(X);Ava(v);vva(e);break d}}else K=70;while(0);if((K|0)==70){W=Rb()|0;ca=Q;da=W}k[t>>2]=27468;k[e>>2]=27488;k[v>>2]=27560;Yua(X);Ava(v);vva(e);L=ca;M=da;Qb(M|0)}while(0);_=aa;$=ba;vva(e);Qb($|0)}while(0);ci(a,a+48|0,k[l>>2]|0,k[d>>2]|0,1)}if((k[h>>2]|0)==511)gi(a);a=k[d>>2]|0;if(!a){r=b;return}h=k[l>>2]|0;if((a|0)>0){$=h;ba=a;a=0;while(1){aa=$+(a<<2)|0;_=k[aa>>2]|0;if(!_)ea=ba;else{Tqa(_);ea=k[d>>2]|0}k[aa>>2]=0;a=a+1|0;aa=k[l>>2]|0;if((a|0)>=(ea|0)){fa=aa;break}else{$=aa;ba=ea}}}else fa=h;if(fa)Tqa(fa);k[l>>2]=0;r=b;return}function y_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;b=r;r=r+176|0;c=b+160|0;d=b+156|0;e=b+152|0;f=b+16|0;g=b;a:do if(CY()|0){h=f+56|0;i=f+4|0;k[f>>2]=27524;k[h>>2]=27544;B=0;wa(508,f+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(h);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[h>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=f+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,i|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(c);Yua(n);Ava(i);o=s;p=q;break}Yua(c);B=0;Ia(40,f|0,112390,32)|0;q=B;B=0;if(!(q&1)?(B=0,wa(510,g|0,i|0),q=B,B=0,!(q&1)):0){B=0;ya(425,g|0)|0;q=B;B=0;if(!(q&1)){Yua(g);k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);break a}q=Rb()|0;s=Q;Yua(g);t=s;u=q;k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);Qb(u|0)}q=Rb()|0;t=Q;u=q;k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);Qb(u|0)}while(0);l=o;m=p;vva(h);Qb(m|0)}while(0);m=a+44|0;cO(k[m>>2]|0,e,298);cO(k[m>>2]|0,d,296);if((k[e>>2]|0)==300){r=b;return}if((k[d>>2]|0)==625){cO(k[m>>2]|0,c,575);koa(a,k[c>>2]|0,-1);r=b;return}else{xh(a,515);ii(a);Voa(a);r=b;return}}function z_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;b=r;r=r+176|0;c=b+160|0;d=b+156|0;e=b+152|0;f=b+16|0;g=b;a:do if(CY()|0){h=f+56|0;i=f+4|0;k[f>>2]=27524;k[h>>2]=27544;B=0;wa(508,f+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(h);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[h>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=f+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,i|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(c);Yua(n);Ava(i);o=s;p=q;break}Yua(c);B=0;Ia(40,f|0,112423,31)|0;q=B;B=0;if(!(q&1)?(B=0,wa(510,g|0,i|0),q=B,B=0,!(q&1)):0){B=0;ya(425,g|0)|0;q=B;B=0;if(!(q&1)){Yua(g);k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);break a}q=Rb()|0;s=Q;Yua(g);t=s;u=q;k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);Qb(u|0)}q=Rb()|0;t=Q;u=q;k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);Qb(u|0)}while(0);l=o;m=p;vva(h);Qb(m|0)}while(0);m=a+44|0;cO(k[m>>2]|0,e,298);cO(k[m>>2]|0,d,296);if((k[e>>2]|0)==300){r=b;return}if((k[d>>2]|0)==625){cO(k[m>>2]|0,c,575);koa(a,k[c>>2]|0,1);r=b;return}else{xh(a,516);ji(a);Voa(a);r=b;return}}function A_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0;b=r;r=r+480|0;c=b+464|0;d=b+477|0;e=b+476|0;f=b+456|0;g=b+452|0;h=b+304|0;j=b+440|0;l=b+152|0;m=b+288|0;n=b+16|0;o=b;k[g>>2]=0;p=a+44|0;bO(k[p>>2]|0,d,759);cO(k[p>>2]|0,b+460|0,476);bO(k[p>>2]|0,e,340);cO(k[p>>2]|0,f,349);if(k[f>>2]|0)gO(k[p>>2]|0,g,f,350);zoa(a);if(!(i[e>>0]|0)){a:do if(CY()|0){e=h+56|0;p=h+4|0;k[h>>2]=27524;k[e>>2]=27544;B=0;wa(508,h+56|0,p|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;t=q;vva(e);Qb(t|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[e>>2]=27488;B=0;va(448,p|0);q=B;B=0;do if(q&1){u=Rb()|0;v=Q;w=u}else{k[p>>2]=27560;u=h+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,p|0,c|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(c);Yua(u);Ava(p);v=y;w=x;break}Yua(c);B=0;Ia(40,h|0,112455,26)|0;x=B;B=0;do if(!(x&1)?(B=0,wa(510,j|0,p|0),y=B,B=0,!(y&1)):0){B=0;ya(425,j|0)|0;y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(j);A=z;C=y;break}else{Yua(j);k[h>>2]=27468;k[e>>2]=27488;k[p>>2]=27560;Yua(u);Ava(p);vva(e);break a}}else D=18;while(0);if((D|0)==18){x=Rb()|0;A=Q;C=x}k[h>>2]=27468;k[e>>2]=27488;k[p>>2]=27560;Yua(u);Ava(p);vva(e);E=A;F=C;Qb(F|0)}while(0);s=v;t=w;vva(e);Qb(t|0)}while(0);xh(a,521);C_(a);b:do if(CY()|0){t=l+56|0;w=l+4|0;k[l>>2]=27524;k[t>>2]=27544;B=0;wa(508,l+56|0,w|0);v=B;B=0;if(v&1){v=Rb()|0;G=Q;H=v;vva(t);Qb(H|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[t>>2]=27488;B=0;va(448,w|0);v=B;B=0;do if(v&1){s=Rb()|0;I=Q;J=s}else{k[w>>2]=27560;s=l+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,w|0,c|0);C=B;B=0;if(C&1){C=Rb()|0;A=Q;Yua(c);Yua(s);Ava(w);I=A;J=C;break}Yua(c);B=0;Ia(40,l|0,112482,21)|0;C=B;B=0;do if(!(C&1)?(B=0,wa(510,m|0,w|0),A=B,B=0,!(A&1)):0){B=0;ya(425,m|0)|0;A=B;B=0;if(A&1){A=Rb()|0;h=Q;Yua(m);K=h;L=A;break}else{Yua(m);k[l>>2]=27468;k[t>>2]=27488;k[w>>2]=27560;Yua(s);Ava(w);vva(t);break b}}else D=34;while(0);if((D|0)==34){C=Rb()|0;K=Q;L=C}k[l>>2]=27468;k[t>>2]=27488;k[w>>2]=27560;Yua(s);Ava(w);vva(t);E=K;F=L;Qb(F|0)}while(0);G=I;H=J;vva(t);Qb(H|0)}while(0);xh(a,509);Voa(a)}else{H=Qqa(4)|0;k[H>>2]=39012;Fc[k[39044>>2]&1023](H,a);Ec[k[(k[H>>2]|0)+4>>2]&1023](H)}if(i[d>>0]|0){c:do if(CY()|0){d=n+56|0;H=n+4|0;k[n>>2]=27524;k[d>>2]=27544;B=0;wa(508,n+56|0,H|0);J=B;B=0;if(J&1){J=Rb()|0;M=Q;N=J;vva(d);Qb(N|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[d>>2]=27488;B=0;va(448,H|0);J=B;B=0;do if(J&1){I=Rb()|0;O=Q;P=I}else{k[H>>2]=27560;I=n+36|0;k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[I+12>>2]=0;k[n+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,H|0,c|0);G=B;B=0;if(G&1){G=Rb()|0;L=Q;Yua(c);Yua(I);Ava(H);O=L;P=G;break}Yua(c);B=0;Ia(40,n|0,148942,18)|0;G=B;B=0;do if(!(G&1)?(B=0,wa(510,o|0,H|0),L=B,B=0,!(L&1)):0){B=0;ya(425,o|0)|0;L=B;B=0;if(L&1){L=Rb()|0;K=Q;Yua(o);R=K;S=L;break}else{Yua(o);k[n>>2]=27468;k[d>>2]=27488;k[H>>2]=27560;Yua(I);Ava(H);vva(d);break c}}else D=52;while(0);if((D|0)==52){G=Rb()|0;R=Q;S=G}k[n>>2]=27468;k[d>>2]=27488;k[H>>2]=27560;Yua(I);Ava(H);vva(d);E=R;F=S;Qb(F|0)}while(0);M=O;N=P;vva(d);Qb(N|0)}while(0);ci(a,a+48|0,k[g>>2]|0,k[f>>2]|0,1)}a=k[f>>2]|0;if(!a){r=b;return}N=k[g>>2]|0;if((a|0)>0){P=N;O=a;a=0;while(1){M=P+(a<<2)|0;F=k[M>>2]|0;if(!F)T=O;else{Tqa(F);T=k[f>>2]|0}k[M>>2]=0;a=a+1|0;M=k[g>>2]|0;if((a|0)>=(T|0)){U=M;break}else{P=M;O=T}}}else U=N;if(U)Tqa(U);k[g>>2]=0;r=b;return}function B_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;b=r;r=r+336|0;c=b+316|0;d=b+308|0;e=b+328|0;f=b+304|0;g=b+300|0;h=b+152|0;j=b+288|0;l=b+16|0;m=b;k[g>>2]=0;xh(a,382);n=a+44|0;cO(k[n>>2]|0,b+312|0,381);bO(k[n>>2]|0,e,759);cO(k[n>>2]|0,f,476);cO(k[n>>2]|0,d,384);if(k[d>>2]|0)gO(k[n>>2]|0,g,d,385);a:do if(CY()|0){n=h+56|0;o=h+4|0;k[h>>2]=27524;k[n>>2]=27544;B=0;wa(508,h+56|0,o|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;s=p;vva(n);Qb(s|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[n>>2]=27488;B=0;va(448,o|0);p=B;B=0;do if(p&1){t=Rb()|0;u=Q;v=t}else{k[o>>2]=27560;t=h+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,o|0,c|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(c);Yua(t);Ava(o);u=x;v=w;break}Yua(c);B=0;Ia(40,h|0,112504,18)|0;w=B;B=0;do if(!(w&1)?(B=0,wa(510,j|0,o|0),x=B,B=0,!(x&1)):0){B=0;ya(425,j|0)|0;x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(j);z=y;A=x;break}else{Yua(j);k[h>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);break a}}else C=16;while(0);if((C|0)==16){w=Rb()|0;z=Q;A=w}k[h>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);D=z;E=A;Qb(E|0)}while(0);q=u;s=v;vva(n);Qb(s|0)}while(0);s=Qqa(4)|0;k[s>>2]=39620;Fc[k[39652>>2]&1023](s,a);Ec[k[(k[s>>2]|0)+4>>2]&1023](s);if(i[e>>0]|0){b:do if(CY()|0){e=l+56|0;s=l+4|0;k[l>>2]=27524;k[e>>2]=27544;B=0;wa(508,l+56|0,s|0);v=B;B=0;if(v&1){v=Rb()|0;F=Q;G=v;vva(e);Qb(G|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[e>>2]=27488;B=0;va(448,s|0);v=B;B=0;do if(v&1){u=Rb()|0;H=Q;I=u}else{k[s>>2]=27560;u=l+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,s|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;A=Q;Yua(c);Yua(u);Ava(s);H=A;I=q;break}Yua(c);B=0;Ia(40,l|0,148942,18)|0;q=B;B=0;do if(!(q&1)?(B=0,wa(510,m|0,s|0),A=B,B=0,!(A&1)):0){B=0;ya(425,m|0)|0;A=B;B=0;if(A&1){A=Rb()|0;z=Q;Yua(m);J=z;K=A;break}else{Yua(m);k[l>>2]=27468;k[e>>2]=27488;k[s>>2]=27560;Yua(u);Ava(s);vva(e);break b}}else C=33;while(0);if((C|0)==33){q=Rb()|0;J=Q;K=q}k[l>>2]=27468;k[e>>2]=27488;k[s>>2]=27560;Yua(u);Ava(s);vva(e);D=J;E=K;Qb(E|0)}while(0);F=H;G=I;vva(e);Qb(G|0)}while(0);ci(a,a+48|0,k[g>>2]|0,k[d>>2]|0,1)}if((k[f>>2]|0)==383)gi(a);a=k[d>>2]|0;if(!a){r=b;return}f=k[g>>2]|0;if((a|0)>0){G=f;I=a;a=0;while(1){H=G+(a<<2)|0;F=k[H>>2]|0;if(!F)L=I;else{Tqa(F);L=k[d>>2]|0}k[H>>2]=0;a=a+1|0;H=k[g>>2]|0;if((a|0)>=(L|0)){M=H;break}else{G=H;I=L}}}else M=f;if(M)Tqa(M);k[g>>2]=0;r=b;return}function C_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0;b=r;r=r+704|0;c=b+680|0;d=b+676|0;e=b+672|0;f=b+668|0;g=b+664|0;h=b+16|0;j=b+660|0;l=b+656|0;m=b+652|0;n=b+648|0;o=b+694|0;q=b+693|0;s=b+692|0;t=b+644|0;u=b+640|0;v=b+636|0;w=b+632|0;x=b+616|0;y=b+8|0;z=b+480|0;A=b+620|0;C=b;D=b+328|0;E=b+464|0;G=b+192|0;H=b+176|0;I=b+40|0;J=b+24|0;k[d>>2]=0;k[e>>2]=0;k[f>>2]=0;k[g>>2]=0;k[j>>2]=0;k[l>>2]=0;k[m>>2]=0;k[n>>2]=0;K=a+44|0;bO(k[K>>2]|0,q,340);cO(k[K>>2]|0,x,478);cO(k[K>>2]|0,w,343);i[o>>0]=0;uoa(a,0,645);L=k[K>>2]|0;if(!(i[q>>0]|0)){cO(L,v,346);uoa(a,1,656);Eh(a);M=a+24|0}else{bO(L,s,341);dO(k[K>>2]|0,y,342);Eh(a);Aoa(d,a);L=a+24|0;Koa(e,k[d>>2]|0,k[L>>2]|0,k[K>>2]|0);xoa(a,k[d>>2]|0);M=L}L=z+56|0;N=z+4|0;O=z+56|0;P=z+128|0;R=z+132|0;S=z+36|0;T=z+52|0;U=G+56|0;V=G+4|0;W=G+56|0;X=G+128|0;Y=G+132|0;Z=G+36|0;_=G+52|0;$=D+56|0;aa=D+4|0;ba=D+56|0;ca=D+128|0;da=D+132|0;ea=D+36|0;fa=D+52|0;ga=1;while(1){ha=k[f>>2]|0;if(ha){if((k[ha>>2]|0)!=0?(ia=k[ha+4>>2]|0,(ia|0)!=0):0){ja=k[ia>>2]|0;if(ja)Ec[k[(k[ja>>2]|0)+4>>2]&1023](ja);Sqa(ia)}Sqa(ha)}k[f>>2]=k[e>>2];if(i[q>>0]|0){ooa(j,l,m,n,0,a);if(i[s>>0]|0){ha=k[f>>2]|0;if(ha){if((k[ha>>2]|0)!=0?(ia=k[ha+4>>2]|0,(ia|0)!=0):0){ja=k[ia>>2]|0;if(ja)Ec[k[(k[ja>>2]|0)+4>>2]&1023](ja);Sqa(ia)}Sqa(ha)}Koa(f,k[d>>2]|0,k[M>>2]|0,k[K>>2]|0)}}else ooa(j,l,m,n,h,a);ha=k[d>>2]|0;if(ha){if((k[ha>>2]|0)!=0?(ia=k[ha+4>>2]|0,(ia|0)!=0):0){ja=k[ia>>2]|0;if(ja)Ec[k[(k[ja>>2]|0)+4>>2]&1023](ja);Sqa(ia)}Sqa(ha)}poa(g,k[M>>2]|0,k[x>>2]|0);Loa(k[m>>2]|0,k[l>>2]|0,k[g>>2]|0,0);ha=k[l>>2]|0;if(ha){if((k[ha>>2]|0)!=0?(ia=k[ha+4>>2]|0,(ia|0)!=0):0){ja=k[ia>>2]|0;if(ja)Ec[k[(k[ja>>2]|0)+4>>2]&1023](ja);Sqa(ia)}Sqa(ha)}Poa(e,k[j>>2]|0,k[m>>2]|0,k[f>>2]|0,k[n>>2]|0,k[K>>2]|0);Roa(d,k[e>>2]|0,k[g>>2]|0,k[M>>2]|0,k[K>>2]|0,0);ha=k[g>>2]|0;if(ha){if((k[ha>>2]|0)!=0?(ia=k[ha+4>>2]|0,(ia|0)!=0):0){ja=k[ia>>2]|0;if(ja)Ec[k[(k[ja>>2]|0)+4>>2]&1023](ja);Sqa(ia)}Sqa(ha)}if(i[q>>0]|0){Zoa(o,k[j>>2]|0,k[m>>2]|0,k[e>>2]|0,k[f>>2]|0,.05,+p[y>>3],F);uoa(a,(i[o>>0]|0)!=0,645)}ha=k[j>>2]|0;if(ha){if((k[ha>>2]|0)!=0?(ia=k[ha+4>>2]|0,(ia|0)!=0):0){ja=k[ia>>2]|0;if(ja)Ec[k[(k[ja>>2]|0)+4>>2]&1023](ja);Sqa(ia)}Sqa(ha)}ha=k[m>>2]|0;if(ha){if((k[ha>>2]|0)!=0?(ia=k[ha+4>>2]|0,(ia|0)!=0):0){ja=k[ia>>2]|0;if(ja)Ec[k[(k[ja>>2]|0)+4>>2]&1023](ja);Sqa(ia)}Sqa(ha)}ha=k[n>>2]|0;if(ha){if((k[ha>>2]|0)!=0?(ia=k[ha+4>>2]|0,(ia|0)!=0):0){ja=k[ia>>2]|0;if(ja)Ec[k[(k[ja>>2]|0)+4>>2]&1023](ja);Sqa(ia)}Sqa(ha)}xoa(a,k[d>>2]|0);Moa(t,u,a);if(EY()|0){k[z>>2]=27524;k[L>>2]=27544;B=0;wa(508,O|0,N|0);ha=B;B=0;if(ha&1){ka=72;break}k[P>>2]=0;k[R>>2]=-1;k[z>>2]=27468;k[L>>2]=27488;B=0;va(448,N|0);ha=B;B=0;if(ha&1){ka=73;break}k[N>>2]=27560;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;k[T>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,N|0,c|0);ha=B;B=0;if(ha&1){ka=71;break}Yua(c);B=0;ha=Ia(40,z|0,147646,35)|0;ia=B;B=0;if(ia&1){ka=82;break}B=0;ia=Xa(242,ha|0,k[u>>2]|0)|0;ha=B;B=0;if(ha&1){ka=82;break}B=0;Ia(40,ia|0,149177,1)|0;ia=B;B=0;if(ia&1){ka=82;break}B=0;wa(510,A|0,N|0);ia=B;B=0;if(ia&1){ka=82;break}B=0;ya(425,A|0)|0;ia=B;B=0;if(ia&1){ka=83;break}Yua(A);k[z>>2]=27468;k[L>>2]=27488;k[N>>2]=27560;Yua(S);Ava(N);vva(L)}if(!(i[q>>0]|0)){ia=i[o>>0]|0;if(!(ia<<24>>24)){if((k[u>>2]|0)>(k[v>>2]|0))la=0;else{i[o>>0]=1;la=1}if((ga|0)<(k[w>>2]|0))ma=la;else{i[o>>0]=1;k[G>>2]=27524;k[U>>2]=27544;B=0;wa(508,W|0,V|0);ha=B;B=0;if(ha&1){ka=116;break}k[X>>2]=0;k[Y>>2]=-1;k[G>>2]=27468;k[U>>2]=27488;B=0;va(448,V|0);ha=B;B=0;if(ha&1){ka=117;break}k[V>>2]=27560;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[_>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,V|0,c|0);ha=B;B=0;if(ha&1){ka=115;break}Yua(c);B=0;ha=Ia(40,G|0,148961,33)|0;ja=B;B=0;if(ja&1){ka=126;break}B=0;ja=Xa(242,ha|0,k[w>>2]|0)|0;ha=B;B=0;if(ha&1){ka=126;break}B=0;Ia(40,ja|0,148995,11)|0;ja=B;B=0;if(ja&1){ka=126;break}B=0;wa(510,H|0,V|0);ja=B;B=0;if(ja&1){ka=126;break}B=0;ya(425,H|0)|0;ja=B;B=0;if(ja&1){ka=127;break}Yua(H);k[G>>2]=27468;k[U>>2]=27488;k[V>>2]=27560;Yua(Z);Ava(V);vva(U);ma=i[o>>0]|0}}else ma=ia;ia=ga+1|0;uoa(a,ma<<24>>24!=0,645);if(!(i[o>>0]|0)){ga=ia;continue}else{na=ia;ka=131;break}}else{dO(k[K>>2]|0,C,358);ia=ga+1|0;if((ia|0)>=(k[w>>2]|0)){k[D>>2]=27524;k[$>>2]=27544;B=0;wa(508,ba|0,aa|0);ja=B;B=0;if(ja&1){ka=91;break}k[ca>>2]=0;k[da>>2]=-1;k[D>>2]=27468;k[$>>2]=27488;B=0;va(448,aa|0);ja=B;B=0;if(ja&1){ka=92;break}k[aa>>2]=27560;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[fa>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,aa|0,c|0);ja=B;B=0;if(ja&1){ka=90;break}Yua(c);B=0;ja=Ia(40,D|0,147682,43)|0;ha=B;B=0;if(ha&1){ka=101;break}B=0;ha=Xa(242,ja|0,k[w>>2]|0)|0;ja=B;B=0;if(ja&1){ka=101;break}B=0;Ia(40,ha|0,148995,11)|0;ha=B;B=0;if(ha&1){ka=101;break}B=0;wa(510,E|0,aa|0);ha=B;B=0;if(ha&1){ka=101;break}B=0;ya(425,E|0)|0;ha=B;B=0;if(ha&1){ka=102;break}Yua(E);k[D>>2]=27468;k[$>>2]=27488;k[aa>>2]=27560;Yua(ea);Ava(aa);vva($);i[o>>0]=1;uoa(a,1,645);xoa(a,k[d>>2]|0)}if(i[o>>0]|0){oa=ia;ka=130;break}if(+p[C>>3]==0.0){Rba(a);lca(a)}ga=ia;continue}}switch(ka|0){case 71:{ga=Rb()|0;C=Q;Yua(c);Yua(S);Ava(N);pa=C;qa=ga;ka=74;break}case 72:{ga=Rb()|0;ra=Q;sa=ga;vva(L);Qb(sa|0);break}case 73:{ga=Rb()|0;pa=Q;qa=ga;ka=74;break}case 82:{ga=Rb()|0;ta=Q;ua=ga;ka=84;break}case 83:{ga=Rb()|0;C=Q;Yua(A);ta=C;ua=ga;ka=84;break}case 90:{ga=Rb()|0;C=Q;Yua(c);Yua(ea);Ava(aa);xa=C;za=ga;ka=93;break}case 91:{ga=Rb()|0;Aa=Q;Ba=ga;vva($);Qb(Ba|0);break}case 92:{ga=Rb()|0;xa=Q;za=ga;ka=93;break}case 101:{ga=Rb()|0;Ca=Q;Da=ga;ka=103;break}case 102:{ga=Rb()|0;C=Q;Yua(E);Ca=C;Da=ga;ka=103;break}case 115:{ga=Rb()|0;C=Q;Yua(c);Yua(Z);Ava(V);Ea=C;Fa=ga;ka=118;break}case 116:{ga=Rb()|0;Ga=Q;Ha=ga;vva(U);Qb(Ha|0);break}case 117:{ga=Rb()|0;Ea=Q;Fa=ga;ka=118;break}case 126:{ga=Rb()|0;Ja=Q;Ka=ga;ka=128;break}case 127:{ga=Rb()|0;C=Q;Yua(H);Ja=C;Ka=ga;ka=128;break}case 130:{na=oa;ka=131;break}}if((ka|0)==74){ra=pa;sa=qa;vva(L);Qb(sa|0)}else if((ka|0)==84){k[z>>2]=27468;k[L>>2]=27488;k[N>>2]=27560;Yua(S);Ava(N);vva(L);La=ta;Ma=ua;Qb(Ma|0)}else if((ka|0)==93){Aa=xa;Ba=za;vva($);Qb(Ba|0)}else if((ka|0)==103){k[D>>2]=27468;k[$>>2]=27488;k[aa>>2]=27560;Yua(ea);Ava(aa);vva($);La=Ca;Ma=Da;Qb(Ma|0)}else if((ka|0)==118){Ga=Ea;Ha=Fa;vva(U);Qb(Ha|0)}else if((ka|0)==128){k[G>>2]=27468;k[U>>2]=27488;k[V>>2]=27560;Yua(Z);Ava(V);vva(U);La=Ja;Ma=Ka;Qb(Ma|0)}else if((ka|0)==131){a:do if(i[q>>0]|0){if(EY()|0){Ka=I+56|0;Ja=I+4|0;k[I>>2]=27524;k[Ka>>2]=27544;B=0;wa(508,I+56|0,Ja|0);U=B;B=0;if(U&1){U=Rb()|0;Na=Q;Oa=U;vva(Ka);Qb(Oa|0)}k[I+128>>2]=0;k[I+132>>2]=-1;k[I>>2]=27468;k[Ka>>2]=27488;B=0;va(448,Ja|0);U=B;B=0;do if(U&1){V=Rb()|0;Pa=Q;Qa=V}else{k[Ja>>2]=27560;V=I+36|0;k[V>>2]=0;k[V+4>>2]=0;k[V+8>>2]=0;k[V+12>>2]=0;k[I+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ja|0,c|0);Z=B;B=0;if(Z&1){Z=Rb()|0;G=Q;Yua(c);Yua(V);Ava(Ja);Pa=G;Qa=Z;break}Yua(c);B=0;Z=Ia(40,I|0,147767,32)|0;G=B;B=0;do if(((!(G&1)?(B=0,Ha=Xa(242,Z|0,na+-1|0)|0,Fa=B,B=0,!(Fa&1)):0)?(B=0,Ia(40,Ha|0,149177,1)|0,Ha=B,B=0,!(Ha&1)):0)?(B=0,wa(510,J|0,Ja|0),Ha=B,B=0,!(Ha&1)):0){B=0;ya(425,J|0)|0;Ha=B;B=0;if(Ha&1){Ha=Rb()|0;Fa=Q;Yua(J);Ra=Fa;Sa=Ha;break}else{Yua(J);k[I>>2]=27468;k[Ka>>2]=27488;k[Ja>>2]=27560;Yua(V);Ava(Ja);vva(Ka);break a}}else ka=147;while(0);if((ka|0)==147){Z=Rb()|0;Ra=Q;Sa=Z}k[I>>2]=27468;k[Ka>>2]=27488;k[Ja>>2]=27560;Yua(V);Ava(Ja);vva(Ka);La=Ra;Ma=Sa;Qb(Ma|0)}while(0);Na=Pa;Oa=Qa;vva(Ka);Qb(Oa|0)}}else{xoa(a,k[d>>2]|0);pO(k[K>>2]|0,+p[h>>3],651)}while(0);h=k[d>>2]|0;if(h){if((k[h>>2]|0)!=0?(d=k[h+4>>2]|0,(d|0)!=0):0){K=k[d>>2]|0;if(K)Ec[k[(k[K>>2]|0)+4>>2]&1023](K);Sqa(d)}Sqa(h)}h=k[e>>2]|0;if(h){if((k[h>>2]|0)!=0?(e=k[h+4>>2]|0,(e|0)!=0):0){d=k[e>>2]|0;if(d)Ec[k[(k[d>>2]|0)+4>>2]&1023](d);Sqa(e)}Sqa(h)}h=k[f>>2]|0;if(!h){r=b;return}if((k[h>>2]|0)!=0?(f=k[h+4>>2]|0,(f|0)!=0):0){e=k[f>>2]|0;if(e)Ec[k[(k[e>>2]|0)+4>>2]&1023](e);Sqa(f)}Sqa(h);r=b;return}}function D_(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;d=r;r=r+416|0;e=d+388|0;f=d+400|0;g=d+384|0;h=d+380|0;j=d+376|0;l=d+372|0;m=d+368|0;n=d+364|0;o=d+360|0;p=d+356|0;q=d+352|0;s=d+348|0;t=d+200|0;u=d+336|0;v=d+48|0;w=d+36|0;x=d+64|0;y=d+24|0;z=d+12|0;A=d;k[m>>2]=0;k[n>>2]=0;k[o>>2]=0;k[p>>2]=0;k[q>>2]=0;k[s>>2]=0;zka(b,f,139791);Fka(b,g,112523);if(!(i[f>>0]|0)){r=d;return}YN(a,Ika(b,113066,198)|0);YN(a,Ika(b,113428,199)|0);f=Qqa(12)|0;B=0;do if((c|0)==518){vO(f,936,1);C=B;B=0;if(!(C&1)){YN(a,f);break}C=Rb()|0;D=Q;Sqa(f);E=D;F=C;Qb(F|0)}else{vO(f,936,0);C=B;B=0;if(!(C&1)){YN(a,f);break}C=Rb()|0;D=Q;Sqa(f);E=D;F=C;Qb(F|0)}while(0);Hka(b,m,j,113102);f=k[j>>2]|0;if((f|0)<1){c=t+56|0;C=t+4|0;k[t>>2]=27524;k[c>>2]=27544;B=0;wa(508,t+56|0,C|0);D=B;B=0;if(D&1){D=Rb()|0;G=Q;H=D;vva(c);Qb(H|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[c>>2]=27488;B=0;va(448,C|0);D=B;B=0;do if(D&1){I=Rb()|0;J=Q;K=I}else{k[C>>2]=27560;I=t+36|0;k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[I+12>>2]=0;k[t+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,C|0,e|0);L=B;B=0;if(L&1){L=Rb()|0;M=Q;Yua(e);Yua(I);Ava(C);J=M;K=L;break}Yua(e);B=0;L=Ia(40,t|0,113134,17)|0;M=B;B=0;a:do if(!(M&1)?(B=0,Xa(239,L|0,0)|0,N=B,B=0,!(N&1)):0){N=Ab(20)|0;B=0;eb(502,u|0,112541,106);O=B;B=0;do if(!(O&1)){B=0;eb(502,v|0,112648,23);P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(u);S=P;T=R;break}B=0;wa(510,w|0,C|0);R=B;B=0;if(R&1){R=Rb()|0;U=Q;V=R;W=1}else{B=0;ua(163,N|0,u|0,v|0,44,w|0);R=B;B=0;if(R&1)X=1;else{B=0;eb(503,N|0,1240,229);B=0;X=0}R=Rb()|0;P=Q;Yua(w);U=P;V=R;W=X}Yua(v);Yua(u);if(W){S=V;T=U}else{Y=V;Z=U;break a}}else{R=Rb()|0;S=R;T=Q}while(0);zb(N|0);Y=S;Z=T}else _=25;while(0);if((_|0)==25){L=Rb()|0;Y=L;Z=Q}k[t>>2]=27468;k[c>>2]=27488;k[C>>2]=27560;Yua(I);Ava(C);vva(c);E=Z;F=Y;Qb(F|0)}while(0);G=J;H=K;vva(c);Qb(H|0)}H=Rqa(f>>>0>1073741823?-1:f<<2)|0;f=k[m>>2]|0;c=0;while(1){K=zY(k[f+(c<<2)>>2]|0,1)|0;k[H+(c<<2)>>2]=K;K=(k[m>>2]|0)+(c<<2)|0;J=k[K>>2]|0;if(J)Tqa(J);k[K>>2]=0;c=c+1|0;K=k[j>>2]|0;J=k[m>>2]|0;if((c|0)>=(K|0)){$=K;aa=J;break}else f=J}if(!aa)ba=$;else{Tqa(aa);ba=k[j>>2]|0}k[m>>2]=0;m=Qqa(16)|0;B=0;ib(293,m|0,176,H|0,ba|0);ba=B;B=0;if(ba&1){ba=Rb()|0;aa=Q;Sqa(m);E=aa;F=ba;Qb(F|0)}YN(a,m);Cka(b,o,0,l,113303);m=Qqa(16)|0;B=0;ib(293,m|0,180,k[o>>2]|0,k[l>>2]|0);l=B;B=0;if(l&1){l=Rb()|0;ba=Q;Sqa(m);E=ba;F=l;Qb(F|0)}YN(a,m);Tqa(H);b:do switch(k[g>>2]|0){case 0:{YN(a,Ika(b,112672,184)|0);YN(a,Ika(b,112704,196)|0);YN(a,Ika(b,112724,178)|0);Qka(b,p,h,0,112761);Qka(b,q,0,0,112789);Cka(b,n,0,0,112819);H=Qqa(20)|0;B=0;ua(171,H|0,181,k[q>>2]|0,k[h>>2]|0,k[j>>2]|0);m=B;B=0;if(m&1){m=Rb()|0;l=Q;Sqa(H);E=l;F=m;Qb(F|0)}YN(a,H);H=Qqa(16)|0;B=0;ib(297,H|0,200,k[p>>2]|0,k[h>>2]|0);m=B;B=0;if(m&1){m=Rb()|0;l=Q;Sqa(H);E=l;F=m;Qb(F|0)}YN(a,H);H=Qqa(16)|0;B=0;ib(293,H|0,186,k[n>>2]|0,k[h>>2]|0);m=B;B=0;if(!(m&1)){YN(a,H);break b}m=Rb()|0;l=Q;Sqa(H);E=l;F=m;Qb(F|0);break}case 1:{YN(a,Ika(b,112672,184)|0);YN(a,Ika(b,112849,189)|0);YN(a,Ika(b,112868,190)|0);YN(a,Ika(b,112887,191)|0);YN(a,Ika(b,112906,192)|0);YN(a,Ika(b,112925,193)|0);YN(a,Ika(b,112944,188)|0);YN(a,Ika(b,112966,187)|0);YN(a,Ika(b,112987,194)|0);break}case 2:{YN(a,Ika(b,112672,184)|0);YN(a,Ika(b,113010,197)|0);YN(a,Ika(b,112925,193)|0);YN(a,Ika(b,112944,188)|0);YN(a,Ika(b,112966,187)|0);Qka(b,s,0,0,113029);m=Qqa(16)|0;B=0;ib(297,m|0,177,k[s>>2]|0,k[j>>2]|0);l=B;B=0;if(!(l&1)){YN(a,m);break b}l=Rb()|0;H=Q;Sqa(m);E=H;F=l;Qb(F|0);break}case 3:{YN(a,Ika(b,112672,184)|0);Qka(b,s,0,0,113029);l=Qqa(16)|0;B=0;ib(297,l|0,177,k[s>>2]|0,k[j>>2]|0);H=B;B=0;if(!(H&1)){YN(a,l);break b}H=Rb()|0;m=Q;Sqa(l);E=m;F=H;Qb(F|0);break}case 4:{YN(a,Ika(b,113010,197)|0);YN(a,Ika(b,112925,193)|0);YN(a,Ika(b,112944,188)|0);YN(a,Ika(b,112966,187)|0);Qka(b,s,0,0,113029);H=Qqa(16)|0;B=0;ib(297,H|0,177,k[s>>2]|0,k[j>>2]|0);m=B;B=0;if(!(m&1)){YN(a,H);break b}m=Rb()|0;l=Q;Sqa(H);E=l;F=m;Qb(F|0);break}default:{m=x+56|0;l=x+4|0;k[x>>2]=27524;k[m>>2]=27544;B=0;wa(508,x+56|0,l|0);H=B;B=0;if(H&1){H=Rb()|0;ca=Q;da=H;vva(m);Qb(da|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[m>>2]=27488;B=0;va(448,l|0);H=B;B=0;do if(H&1){ba=Rb()|0;ea=Q;fa=ba}else{k[l>>2]=27560;ba=x+36|0;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;k[x+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,l|0,e|0);aa=B;B=0;if(aa&1){aa=Rb()|0;$=Q;Yua(e);Yua(ba);Ava(l);ea=$;fa=aa;break}Yua(e);B=0;aa=Ia(40,x|0,145010,13)|0;$=B;B=0;c:do if(!($&1)?(B=0,Xa(239,aa|0,0)|0,f=B,B=0,!(f&1)):0){f=Ab(20)|0;B=0;eb(502,y|0,112541,106);c=B;B=0;do if(!(c&1)){B=0;eb(502,z|0,112648,23);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(y);ga=J;ha=K;break}B=0;wa(510,A|0,l|0);K=B;B=0;if(K&1){K=Rb()|0;ia=1;ja=Q;ka=K}else{B=0;ua(163,f|0,y|0,z|0,104,A|0);K=B;B=0;if(K&1)la=1;else{B=0;eb(503,f|0,1240,229);B=0;la=0}K=Rb()|0;J=Q;Yua(A);ia=la;ja=J;ka=K}Yua(z);Yua(y);if(ia){ga=ka;ha=ja}else{ma=ja;na=ka;break c}}else{K=Rb()|0;ga=K;ha=Q}while(0);zb(f|0);ma=ha;na=ga}else _=76;while(0);if((_|0)==76){aa=Rb()|0;ma=Q;na=aa}k[x>>2]=27468;k[m>>2]=27488;k[l>>2]=27560;Yua(ba);Ava(l);vva(m);E=ma;F=na;Qb(F|0)}while(0);ca=ea;da=fa;vva(m);Qb(da|0)}}while(0);da=k[o>>2]|0;if(da)Tqa(da);k[o>>2]=0;o=k[n>>2]|0;if(o)Tqa(o);k[n>>2]=0;n=k[s>>2]|0;if(n)Tqa(n);k[s>>2]=0;Mka(b,k[p>>2]|0,112761);Mka(b,k[q>>2]|0,112789);r=d;return}function E_(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0;b=r;r=r+752|0;d=b+200|0;e=b+192|0;f=b+184|0;g=b+176|0;h=b+168|0;j=b+160|0;l=b+152|0;m=b+144|0;n=b+136|0;o=b+128|0;q=b+120|0;s=b+104|0;t=b+96|0;u=b+88|0;v=b+80|0;w=b+72|0;x=b+64|0;y=b+56|0;z=b+48|0;A=b+40|0;C=b+32|0;D=b+24|0;E=b+16|0;F=b;G=b+600|0;H=b+596|0;I=b+592|0;J=b+588|0;K=b+584|0;L=b+736|0;M=b+424|0;N=b+572|0;O=b+560|0;P=b+412|0;R=b+400|0;S=b+252|0;T=b+240|0;U=b+264|0;V=b+228|0;W=b+216|0;X=b+204|0;zka(c,L,139791);if(!(i[L>>0]|0)){r=b;return}Fka(c,I,113066);if(!(i[L>>0]|0)){r=b;return}Hka(c,K,I,113102);L=k[I>>2]|0;if((L|0)<1){Y=M+56|0;Z=M+4|0;k[M>>2]=27524;k[Y>>2]=27544;B=0;wa(508,M+56|0,Z|0);_=B;B=0;if(_&1){_=Rb()|0;$=Q;aa=_;vva(Y);Qb(aa|0)}k[M+128>>2]=0;k[M+132>>2]=-1;k[M>>2]=27468;k[Y>>2]=27488;B=0;va(448,Z|0);_=B;B=0;do if(_&1){ba=Rb()|0;ca=Q;da=ba}else{k[Z>>2]=27560;ba=M+36|0;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;k[M+52>>2]=16;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;B=0;wa(509,Z|0,G|0);ea=B;B=0;if(ea&1){ea=Rb()|0;fa=Q;Yua(G);Yua(ba);Ava(Z);ca=fa;da=ea;break}Yua(G);B=0;ea=Ia(40,M|0,113134,17)|0;fa=B;B=0;a:do if(!(fa&1)?(B=0,Xa(239,ea|0,0)|0,ga=B,B=0,!(ga&1)):0){ga=Ab(20)|0;B=0;eb(502,N|0,113152,116);ha=B;B=0;do if(!(ha&1)){B=0;eb(502,O|0,113269,33);ia=B;B=0;if(ia&1){ia=Rb()|0;ja=Q;Yua(N);ka=ja;la=ia;break}B=0;wa(510,P|0,Z|0);ia=B;B=0;if(ia&1){ia=Rb()|0;ma=Q;na=ia;oa=1}else{B=0;ua(163,ga|0,N|0,O|0,31,P|0);ia=B;B=0;if(ia&1)pa=1;else{B=0;eb(503,ga|0,1240,229);B=0;pa=0}ia=Rb()|0;ja=Q;Yua(P);ma=ja;na=ia;oa=pa}Yua(O);Yua(N);if(oa){ka=ma;la=na}else{qa=ma;ra=na;break a}}else{ia=Rb()|0;ka=Q;la=ia}while(0);zb(ga|0);qa=ka;ra=la}else sa=19;while(0);if((sa|0)==19){ea=Rb()|0;qa=Q;ra=ea}k[M>>2]=27468;k[Y>>2]=27488;k[Z>>2]=27560;Yua(ba);Ava(Z);vva(Y);ta=qa;xa=ra;Qb(xa|0)}while(0);$=ca;aa=da;vva(Y);Qb(aa|0)}aa=Rqa(L>>>0>1073741823?-1:L<<2)|0;L=0;do{Y=zY(k[(k[K>>2]|0)+(L<<2)>>2]|0,1)|0;k[aa+(L<<2)>>2]=Y;L=L+1|0}while((L|0)<(k[I>>2]|0));k[F>>2]=113303;k[F+4>>2]=113331;k[F+8>>2]=113372;k[F+12>>2]=113400;Ska(c,4,F);Fka(c,J,113428);Fka(c,H,139814);b:do if((k[J>>2]|0)>0){L=0;while(1){Y=(Jka(c,113303)|0)+(L<<3)|0;switch(~~+p[Y>>3]|0){case 669:{Zka(c,a,113460,201);break}case 670:{Zka(c,a,113487,202);break}case 658:case 660:case 661:case 662:case 663:{Zka(c,a,113512,203);if((k[H>>2]|0)!=301)Zka(c,a,113532,204);break}default:{}}L=L+1|0;if((L|0)>=(k[J>>2]|0))break b}}while(0);J=k[I>>2]|0;c:do if((J|0)>0){H=0;d:while(1){L=k[aa+(H<<2)>>2]|0;do switch(L|0){case 36:{k[E>>2]=126035;Ska(c,1,E);break}case 674:{k[D>>2]=135923;Ska(c,1,D);break}case 677:{k[C>>2]=135944;Ska(c,1,C);break}case 353:{k[A>>2]=137052;Ska(c,1,A);break}case 105:{k[z>>2]=135172;Ska(c,1,z);break}case 104:{k[y>>2]=135273;Ska(c,1,y);break}case 375:{k[x>>2]=113552;Ska(c,1,x);break}case 379:{k[w>>2]=125662;Ska(c,1,w);break}case 214:{k[v>>2]=134991;Ska(c,1,v);break}case 215:{k[u>>2]=134991;Ska(c,1,u);break}case 227:{k[t>>2]=126277;Ska(c,1,t);break}default:{za=L;break d}}while(0);H=H+1|0;L=k[I>>2]|0;if((H|0)>=(L|0)){Aa=L;break c}}H=G+56|0;L=G+4|0;k[G>>2]=27524;k[H>>2]=27544;B=0;wa(508,G+56|0,L|0);ga=B;B=0;if(ga&1){ga=Rb()|0;Ba=Q;Ca=ga;vva(H);Qb(Ca|0)}k[G+128>>2]=0;k[G+132>>2]=-1;k[G>>2]=27468;k[H>>2]=27488;B=0;va(448,L|0);ga=B;B=0;do if(ga&1){ba=Rb()|0;Da=Q;Ea=ba}else{k[L>>2]=27560;ba=G+36|0;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;k[G+52>>2]=16;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;B=0;wa(509,L|0,F|0);Y=B;B=0;if(Y&1){Y=Rb()|0;da=Q;Yua(F);Yua(ba);Ava(L);Da=da;Ea=Y;break}Yua(F);B=0;Y=Ia(40,G|0,125582,8)|0;da=B;B=0;e:do if((((!(da&1)?(B=0,ca=ya(427,za|0)|0,$=B,B=0,!($&1)):0)?($=Lta(ca)|0,B=0,ra=Ia(40,Y|0,ca|0,$|0)|0,$=B,B=0,!($&1)):0)?(B=0,$=Ia(40,ra|0,127493,20)|0,ra=B,B=0,!(ra&1)):0)?(B=0,Xa(239,$|0,0)|0,$=B,B=0,!($&1)):0){$=Ab(20)|0;B=0;eb(502,R|0,113152,116);ra=B;B=0;do if(!(ra&1)){B=0;eb(502,S|0,113269,33);ca=B;B=0;if(ca&1){ca=Rb()|0;qa=Q;Yua(R);Fa=ca;Ga=qa;break}B=0;wa(510,T|0,L|0);qa=B;B=0;if(qa&1){qa=Rb()|0;Ha=1;Ja=Q;Ka=qa}else{B=0;ua(163,$|0,R|0,S|0,74,T|0);qa=B;B=0;if(qa&1)La=1;else{B=0;eb(503,$|0,1240,229);B=0;La=0}qa=Rb()|0;ca=Q;Yua(T);Ha=La;Ja=ca;Ka=qa}Yua(S);Yua(R);if(Ha){Fa=Ka;Ga=Ja}else{Ma=Ja;Na=Ka;break e}}else{qa=Rb()|0;Fa=qa;Ga=Q}while(0);zb($|0);Ma=Ga;Na=Fa}else sa=69;while(0);if((sa|0)==69){Y=Rb()|0;Ma=Q;Na=Y}k[G>>2]=27468;k[H>>2]=27488;k[L>>2]=27560;Yua(ba);Ava(L);vva(H);ta=Ma;xa=Na;Qb(xa|0)}while(0);Ba=Da;Ca=Ea;vva(H);Qb(Ca|0)}else Aa=J;while(0);J=c+56|0;Ca=k[J>>2]|0;if((Ca|0)>0){Ea=c+32|0;Da=Ca;Ca=0;Ba=0;while(1){if(!(i[(k[Ea>>2]|0)+Ba>>0]|0)){Oa=Da;Pa=Ca}else{Na=(qh(a,Ca)|0)+4|0;nd[k[(k[Na>>2]|0)+16>>2]&1023](Na,Ba,c);Oa=k[J>>2]|0;Pa=Ca+1|0}Ba=Ba+1|0;if((Ba|0)>=(Oa|0))break;else{Da=Oa;Ca=Pa}}Qa=k[I>>2]|0}else Qa=Aa;f:do if((Qa|0)>0){Aa=0;g:while(1){Pa=aa+(Aa<<2)|0;do switch(k[Pa>>2]|0){case 36:{k[q>>2]=126035;Lka(c,1,q);break}case 674:{k[o>>2]=135923;Lka(c,1,o);break}case 677:{k[n>>2]=135944;Lka(c,1,n);break}case 353:{k[m>>2]=137052;Lka(c,1,m);break}case 105:{k[l>>2]=135172;Lka(c,1,l);break}case 104:{k[j>>2]=135273;Lka(c,1,j);break}case 375:{k[h>>2]=113552;Lka(c,1,h);break}case 379:{k[g>>2]=125662;Lka(c,1,g);break}case 214:{k[f>>2]=134991;Lka(c,1,f);break}case 215:{k[e>>2]=134991;Lka(c,1,e);break}case 227:{k[d>>2]=126277;Lka(c,1,d);break}default:{Ra=Pa;break g}}while(0);Aa=Aa+1|0;if((Aa|0)>=(k[I>>2]|0))break f}Aa=U+56|0;H=U+4|0;k[U>>2]=27524;k[Aa>>2]=27544;B=0;wa(508,U+56|0,H|0);Pa=B;B=0;if(Pa&1){Pa=Rb()|0;Sa=Q;Ta=Pa;vva(Aa);Qb(Ta|0)}k[U+128>>2]=0;k[U+132>>2]=-1;k[U>>2]=27468;k[Aa>>2]=27488;B=0;va(448,H|0);Pa=B;B=0;do if(Pa&1){ba=Rb()|0;Ua=Q;Va=ba}else{k[H>>2]=27560;ba=U+36|0;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;k[U+52>>2]=16;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;B=0;wa(509,H|0,F|0);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Oa=Q;Yua(F);Yua(ba);Ava(H);Ua=Oa;Va=Ca;break}Yua(F);B=0;Ca=Ia(40,U|0,125582,8)|0;Oa=B;B=0;h:do if((((!(Oa&1)?(B=0,Da=ya(427,k[Ra>>2]|0)|0,Ba=B,B=0,!(Ba&1)):0)?(Ba=Lta(Da)|0,B=0,J=Ia(40,Ca|0,Da|0,Ba|0)|0,Ba=B,B=0,!(Ba&1)):0)?(B=0,Ba=Ia(40,J|0,127493,20)|0,J=B,B=0,!(J&1)):0)?(B=0,Xa(239,Ba|0,0)|0,Ba=B,B=0,!(Ba&1)):0){Ba=Ab(20)|0;B=0;eb(502,V|0,113152,116);J=B;B=0;do if(!(J&1)){B=0;eb(502,W|0,113269,33);Da=B;B=0;if(Da&1){Da=Rb()|0;a=Q;Yua(V);Wa=Da;Ya=a;break}B=0;wa(510,X|0,H|0);a=B;B=0;if(a&1){a=Rb()|0;Za=1;_a=Q;$a=a}else{B=0;ua(163,Ba|0,V|0,W|0,105,X|0);a=B;B=0;if(a&1)ab=1;else{B=0;eb(503,Ba|0,1240,229);B=0;ab=0}a=Rb()|0;Da=Q;Yua(X);Za=ab;_a=Da;$a=a}Yua(W);Yua(V);if(Za){Wa=$a;Ya=_a}else{bb=_a;cb=$a;break h}}else{a=Rb()|0;Wa=a;Ya=Q}while(0);zb(Ba|0);bb=Ya;cb=Wa}else sa=114;while(0);if((sa|0)==114){Ca=Rb()|0;bb=Q;cb=Ca}k[U>>2]=27468;k[Aa>>2]=27488;k[H>>2]=27560;Yua(ba);Ava(H);vva(Aa);ta=bb;xa=cb;Qb(xa|0)}while(0);Sa=Ua;Ta=Va;vva(Aa);Qb(Ta|0)}while(0);k[s>>2]=113303;k[s+4>>2]=113331;k[s+8>>2]=113372;k[s+12>>2]=113400;Lka(c,4,s);Tqa(aa);aa=k[I>>2]|0;s=k[K>>2]|0;if((aa|0)>0){c=s;Ta=aa;aa=0;while(1){Va=c+(aa<<2)|0;Ua=k[Va>>2]|0;if(!Ua)db=Ta;else{Tqa(Ua);db=k[I>>2]|0}k[Va>>2]=0;aa=aa+1|0;Va=k[K>>2]|0;if((aa|0)>=(db|0)){fb=Va;break}else{c=Va;Ta=db}}}else fb=s;if(fb)Tqa(fb);k[K>>2]=0;r=b;return}function F_(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0.0;g=r;r=r+16|0;f=g+8|0;e=g;p[f>>3]=0.0;if((th(b)|0)>0){h=0.0;d=0;do{h=+G_(qh(b,d)|0)+h;p[f>>3]=h;d=d+1|0}while((d|0)<(th(b)|0))}nZ(f,e,1,2,4,0,uY()|0)|0;uY()|0;p[a>>3]=+p[e>>3];r=g;return}function G_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0;b=r;r=r+256|0;c=b+232|0;d=b+228|0;e=b+40|0;f=b+32|0;g=b+24|0;h=b+16|0;i=b+8|0;j=b;l=b+224|0;m=b+88|0;n=b+72|0;o=b+60|0;q=b+48|0;k[l>>2]=0;if(!(Hc[k[(k[a>>2]|0)+252>>2]&511](a)|0)){s=0.0;r=b;return +s}if(!($p(a)|0)){s=0.0;r=b;return +s}cp(a,d,298);t=(k[d>>2]|0)+-300|0;if(t>>>0<3){u=(t&1|0)==0;t=Hc[k[(k[a>>2]|0)+436>>2]&511](a)|0;Uo(t,l);a=Wo(t,179)|0;v=Wo(t,674)|0;w=Wo(t,203)|0;if(u){x=Wo(t,677)|0;y=x;z=Wo(t,204)|0}else{y=0;z=0}x=ed[k[(k[t>>2]|0)+308>>2]&511](t,2)|0;A=Hc[k[(k[x>>2]|0)+8>>2]&511](x)|0;if((A|0)<(Hc[k[(k[x>>2]|0)+12>>2]&511](x)|0)){C=x+8|0;if(u){D=0.0;u=A;while(1){Fc[k[(k[x>>2]|0)+24>>2]&1023](x,u);rd[k[(k[t>>2]|0)+260>>2]&511](t,e,k[l>>2]|0,x);rd[k[(k[a>>2]|0)+56>>2]&511](a,j,x,658);nd[k[(k[v>>2]|0)+48>>2]&1023](v,f,x);nd[k[(k[w>>2]|0)+48>>2]&1023](w,h,x);nd[k[(k[y>>2]|0)+48>>2]&1023](y,g,x);nd[k[(k[z>>2]|0)+48>>2]&1023](z,i,x);E=+p[f>>3]-+p[h>>3];F=+p[g>>3]-+p[i>>3];G=D+(E*(E*.5)+F*(F*.5))*+p[j>>3]*+p[e>>3]*+p[C>>3];u=u+1|0;if((u|0)>=(Hc[k[(k[x>>2]|0)+12>>2]&511](x)|0)){H=G;break}else D=G}}else{D=0.0;u=A;while(1){Fc[k[(k[x>>2]|0)+24>>2]&1023](x,u);rd[k[(k[t>>2]|0)+260>>2]&511](t,e,k[l>>2]|0,x);rd[k[(k[a>>2]|0)+56>>2]&511](a,j,x,658);nd[k[(k[v>>2]|0)+48>>2]&1023](v,f,x);nd[k[(k[w>>2]|0)+48>>2]&1023](w,h,x);G=+p[f>>3]-+p[h>>3];F=D+G*(G*.5)*+p[j>>3]*+p[e>>3]*+p[C>>3];u=u+1|0;if((u|0)>=(Hc[k[(k[x>>2]|0)+12>>2]&511](x)|0)){H=F;break}else D=F}}}else H=0.0;if((k[d>>2]|0)!=300){ap(t);Ec[k[(k[t>>2]|0)+4>>2]&1023](t)}t=k[l>>2]|0;if(t)Tqa(t);k[l>>2]=0;if(!x){s=H;r=b;return +s}Ec[k[(k[x>>2]|0)+4>>2]&1023](x);s=H;r=b;return +s}b=m+56|0;x=m+4|0;k[m>>2]=27524;k[b>>2]=27544;B=0;wa(508,m+56|0,x|0);l=B;B=0;if(l&1){l=Rb()|0;I=Q;J=l;vva(b);Qb(J|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[b>>2]=27488;B=0;va(448,x|0);l=B;B=0;do if(l&1){t=Rb()|0;K=Q;L=t}else{k[x>>2]=27560;t=m+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,x|0,c|0);d=B;B=0;if(d&1){d=Rb()|0;u=Q;Yua(c);Yua(t);Ava(x);K=u;L=d;break}Yua(c);B=0;d=Ia(40,m|0,134695,17)|0;u=B;B=0;if(!(u&1)?(B=0,Xa(239,d|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,n|0,113593,100);u=B;B=0;do if(!(u&1)){B=0;eb(502,o|0,113694,19);C=B;B=0;if(C&1){C=Rb()|0;e=Q;Yua(n);M=e;N=C;break}B=0;wa(510,q|0,x|0);C=B;B=0;if(C&1){C=Rb()|0;O=Q;P=C;R=1}else{B=0;ua(163,d|0,n|0,o|0,51,q|0);C=B;B=0;if(C&1)S=1;else{B=0;eb(503,d|0,1240,229);B=0;S=0}C=Rb()|0;e=Q;Yua(q);O=e;P=C;R=S}Yua(o);Yua(n);if(R){M=O;N=P}else{T=O;U=P;k[m>>2]=27468;k[b>>2]=27488;k[x>>2]=27560;Yua(t);Ava(x);vva(b);Qb(U|0)}}else{C=Rb()|0;M=Q;N=C}while(0);zb(d|0);T=M;U=N;k[m>>2]=27468;k[b>>2]=27488;k[x>>2]=27560;Yua(t);Ava(x);vva(b);Qb(U|0)}u=Rb()|0;T=Q;U=u;k[m>>2]=27468;k[b>>2]=27488;k[x>>2]=27560;Yua(t);Ava(x);vva(b);Qb(U|0)}while(0);I=K;J=L;vva(b);Qb(J|0);return +(0.0)}function H_(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0.0;g=r;r=r+16|0;f=g+8|0;e=g;p[f>>3]=0.0;if((th(b)|0)>0){h=0.0;d=0;do{h=+I_(qh(b,d)|0)+h;p[f>>3]=h;d=d+1|0}while((d|0)<(th(b)|0))}nZ(f,e,1,2,4,0,uY()|0)|0;uY()|0;p[a>>3]=+p[e>>3];r=g;return}function I_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;b=r;r=r+256|0;c=b+232|0;d=b+228|0;e=b+40|0;f=b+32|0;g=b+24|0;h=b+16|0;i=b+8|0;j=b;l=b+224|0;m=b+88|0;n=b+72|0;o=b+60|0;q=b+48|0;k[l>>2]=0;if(!(Hc[k[(k[a>>2]|0)+252>>2]&511](a)|0)){s=0.0;r=b;return +s}if(!($p(a)|0)){s=0.0;r=b;return +s}cp(a,d,298);t=(k[d>>2]|0)+-300|0;if(t>>>0<3){u=(t&1|0)==0;t=Hc[k[(k[a>>2]|0)+436>>2]&511](a)|0;Uo(t,l);a=Wo(t,179)|0;v=Wo(t,674)|0;w=Wo(t,203)|0;if(u){x=Wo(t,677)|0;y=x;z=Wo(t,204)|0}else{y=0;z=0}x=ed[k[(k[t>>2]|0)+308>>2]&511](t,4)|0;A=Hc[k[(k[x>>2]|0)+8>>2]&511](x)|0;if((A|0)<(Hc[k[(k[x>>2]|0)+12>>2]&511](x)|0)){C=x+8|0;if(u){D=0.0;u=A;while(1){Fc[k[(k[x>>2]|0)+24>>2]&1023](x,u);rd[k[(k[t>>2]|0)+260>>2]&511](t,e,k[l>>2]|0,x);rd[k[(k[a>>2]|0)+56>>2]&511](a,j,x,663);nd[k[(k[v>>2]|0)+48>>2]&1023](v,f,x);nd[k[(k[w>>2]|0)+48>>2]&1023](w,h,x);nd[k[(k[y>>2]|0)+48>>2]&1023](y,g,x);nd[k[(k[z>>2]|0)+48>>2]&1023](z,i,x);E=+p[h>>3];F=3.170979198376458e-05/(E+2.220446049250313e-16);G=+p[i>>3];H=3.170979198376458e-05/(G+2.220446049250313e-16);I=+p[f>>3]-E;J=+p[g>>3]-G;K=D+((E==0.0?0.0:F*F)*(I*I)+(G==0.0?0.0:H*H)*(J*J))*.5*+p[j>>3]*+p[e>>3]*+p[C>>3];u=u+1|0;if((u|0)>=(Hc[k[(k[x>>2]|0)+12>>2]&511](x)|0)){L=K;break}else D=K}}else{D=0.0;u=A;while(1){Fc[k[(k[x>>2]|0)+24>>2]&1023](x,u);rd[k[(k[t>>2]|0)+260>>2]&511](t,e,k[l>>2]|0,x);rd[k[(k[a>>2]|0)+56>>2]&511](a,j,x,663);nd[k[(k[v>>2]|0)+48>>2]&1023](v,f,x);nd[k[(k[w>>2]|0)+48>>2]&1023](w,h,x);K=+p[h>>3];J=3.170979198376458e-05/(K+2.220446049250313e-16);H=+p[f>>3]-K;G=D+(K==0.0?0.0:J*J)*(H*H)*.5*+p[j>>3]*+p[e>>3]*+p[C>>3];u=u+1|0;if((u|0)>=(Hc[k[(k[x>>2]|0)+12>>2]&511](x)|0)){L=G;break}else D=G}}}else L=0.0;if((k[d>>2]|0)!=300){ap(t);Ec[k[(k[t>>2]|0)+4>>2]&1023](t)}t=k[l>>2]|0;if(t)Tqa(t);k[l>>2]=0;if(!x){s=L;r=b;return +s}Ec[k[(k[x>>2]|0)+4>>2]&1023](x);s=L;r=b;return +s}b=m+56|0;x=m+4|0;k[m>>2]=27524;k[b>>2]=27544;B=0;wa(508,m+56|0,x|0);l=B;B=0;if(l&1){l=Rb()|0;M=Q;N=l;vva(b);Qb(N|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[b>>2]=27488;B=0;va(448,x|0);l=B;B=0;do if(l&1){t=Rb()|0;O=Q;P=t}else{k[x>>2]=27560;t=m+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,x|0,c|0);d=B;B=0;if(d&1){d=Rb()|0;u=Q;Yua(c);Yua(t);Ava(x);O=u;P=d;break}Yua(c);B=0;d=Ia(40,m|0,134695,17)|0;u=B;B=0;if(!(u&1)?(B=0,Xa(239,d|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,n|0,113714,100);u=B;B=0;do if(!(u&1)){B=0;eb(502,o|0,113815,19);C=B;B=0;if(C&1){C=Rb()|0;e=Q;Yua(n);R=e;S=C;break}B=0;wa(510,q|0,x|0);C=B;B=0;if(C&1){C=Rb()|0;T=Q;U=C;V=1}else{B=0;ua(163,d|0,n|0,o|0,53,q|0);C=B;B=0;if(C&1)W=1;else{B=0;eb(503,d|0,1240,229);B=0;W=0}C=Rb()|0;e=Q;Yua(q);T=e;U=C;V=W}Yua(o);Yua(n);if(V){R=T;S=U}else{X=T;Y=U;k[m>>2]=27468;k[b>>2]=27488;k[x>>2]=27560;Yua(t);Ava(x);vva(b);Qb(Y|0)}}else{C=Rb()|0;R=Q;S=C}while(0);zb(d|0);X=R;Y=S;k[m>>2]=27468;k[b>>2]=27488;k[x>>2]=27560;Yua(t);Ava(x);vva(b);Qb(Y|0)}u=Rb()|0;X=Q;Y=u;k[m>>2]=27468;k[b>>2]=27488;k[x>>2]=27560;Yua(t);Ava(x);vva(b);Qb(Y|0)}while(0);M=O;N=P;vva(b);Qb(N|0);return +(0.0)}function J_(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0.0;g=r;r=r+16|0;f=g+8|0;e=g;p[f>>3]=0.0;if((th(b)|0)>0){h=0.0;d=0;do{h=+K_(qh(b,d)|0)+h;p[f>>3]=h;d=d+1|0}while((d|0)<(th(b)|0))}nZ(f,e,1,2,4,0,uY()|0)|0;uY()|0;p[a>>3]=+p[e>>3];r=g;return}function K_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0,_=0.0,ba=0.0;b=r;r=r+256|0;c=b+232|0;d=b+228|0;e=b+40|0;f=b+32|0;g=b+24|0;h=b+16|0;i=b+8|0;j=b;l=b+224|0;m=b+88|0;n=b+72|0;o=b+60|0;q=b+48|0;k[l>>2]=0;if(!(Hc[k[(k[a>>2]|0)+252>>2]&511](a)|0)){s=0.0;r=b;return +s}if(!($p(a)|0)){s=0.0;r=b;return +s}cp(a,d,298);switch(k[d>>2]|0){case 301:{t=1;break}case 302:{t=2;break}case 300:{t=2;break}default:{u=m+56|0;v=m+4|0;k[m>>2]=27524;k[u>>2]=27544;B=0;wa(508,m+56|0,v|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;y=w;vva(u);Qb(y|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);w=B;B=0;do if(w&1){z=Rb()|0;A=Q;C=z}else{k[v>>2]=27560;z=m+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(c);Yua(z);Ava(v);A=E;C=D;break}Yua(c);B=0;D=Ia(40,m|0,134695,17)|0;E=B;B=0;if(!(E&1)?(B=0,Xa(239,D|0,0)|0,D=B,B=0,!(D&1)):0){D=Ab(20)|0;B=0;eb(502,n|0,113835,100);E=B;B=0;do if(!(E&1)){B=0;eb(502,o|0,113936,19);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(n);H=G;I=F;break}B=0;wa(510,q|0,v|0);F=B;B=0;if(F&1){F=Rb()|0;J=Q;K=F;L=1}else{B=0;ua(163,D|0,n|0,o|0,54,q|0);F=B;B=0;if(F&1)M=1;else{B=0;eb(503,D|0,1240,229);B=0;M=0}F=Rb()|0;G=Q;Yua(q);J=G;K=F;L=M}Yua(o);Yua(n);if(L){H=J;I=K}else{N=J;O=K;k[m>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);Qb(O|0)}}else{F=Rb()|0;H=Q;I=F}while(0);zb(D|0);N=H;O=I;k[m>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);Qb(O|0)}E=Rb()|0;N=Q;O=E;k[m>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);Qb(O|0)}while(0);x=A;y=C;vva(u);Qb(y|0)}}y=Hc[k[(k[a>>2]|0)+436>>2]&511](a)|0;Uo(y,l);a=Wo(y,179)|0;u=Wo(y,674)|0;C=Wo(y,203)|0;A=(t|0)==2;if(A){x=Wo(y,677)|0;P=x;R=Wo(y,204)|0}else{P=0;R=0}x=ed[k[(k[y>>2]|0)+308>>2]&511](y,4)|0;O=Hc[k[(k[x>>2]|0)+8>>2]&511](x)|0;a:do if((O|0)<(Hc[k[(k[x>>2]|0)+12>>2]&511](x)|0)){v=x+8|0;m=(t|0)==1;if(A){S=0.0;N=O;while(1){Fc[k[(k[x>>2]|0)+24>>2]&1023](x,N);rd[k[(k[y>>2]|0)+260>>2]&511](y,e,k[l>>2]|0,x);rd[k[(k[a>>2]|0)+56>>2]&511](a,j,x,661);nd[k[(k[u>>2]|0)+48>>2]&1023](u,f,x);nd[k[(k[C>>2]|0)+48>>2]&1023](C,h,x);nd[k[(k[P>>2]|0)+48>>2]&1023](P,g,x);nd[k[(k[R>>2]|0)+48>>2]&1023](R,i,x);T=+p[f>>3];U=+p[g>>3];V=+aa(+(T*T+U*U));U=+p[h>>3];T=+p[i>>3];W=+ka(+((V+2.220446049250313e-16)/(+aa(+(U*U+T*T))+2.220446049250313e-16)));T=S+ +p[v>>3]*(+p[e>>3]*(+p[j>>3]*(W*W*4.022043630614481e-09)));N=N+1|0;if((N|0)>=(Hc[k[(k[x>>2]|0)+12>>2]&511](x)|0)){X=T;break a}else S=T}}else{Y=0.0;Z=O}while(1){Fc[k[(k[x>>2]|0)+24>>2]&1023](x,Z);rd[k[(k[y>>2]|0)+260>>2]&511](y,e,k[l>>2]|0,x);rd[k[(k[a>>2]|0)+56>>2]&511](a,j,x,661);nd[k[(k[u>>2]|0)+48>>2]&1023](u,f,x);nd[k[(k[C>>2]|0)+48>>2]&1023](C,h,x);S=+p[f>>3];if(m){T=+$(+S);_=+$(+(+p[h>>3]));ba=T}else{T=+p[g>>3];W=+aa(+(S*S+T*T));T=+p[h>>3];S=+p[i>>3];_=+aa(+(T*T+S*S));ba=W}W=+ka(+((ba+2.220446049250313e-16)/(_+2.220446049250313e-16)));S=Y+ +p[v>>3]*(+p[e>>3]*(+p[j>>3]*(W*W*4.022043630614481e-09)));Z=Z+1|0;if((Z|0)>=(Hc[k[(k[x>>2]|0)+12>>2]&511](x)|0)){X=S;break}else Y=S}}else X=0.0;while(0);if((k[d>>2]|0)!=300){ap(y);Ec[k[(k[y>>2]|0)+4>>2]&1023](y)}y=k[l>>2]|0;if(y)Tqa(y);k[l>>2]=0;if(!x){s=X;r=b;return +s}Ec[k[(k[x>>2]|0)+4>>2]&1023](x);s=X;r=b;return +s}function L_(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0.0;g=r;r=r+16|0;f=g+8|0;e=g;p[f>>3]=0.0;if((th(b)|0)>0){h=0.0;d=0;do{h=+M_(qh(b,d)|0)+h;p[f>>3]=h;d=d+1|0}while((d|0)<(th(b)|0))}nZ(f,e,1,2,4,0,uY()|0)|0;uY()|0;p[a>>3]=+p[e>>3];r=g;return}function M_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0;b=r;r=r+256|0;c=b+232|0;d=b+228|0;e=b+40|0;f=b+32|0;g=b+24|0;h=b+16|0;i=b+8|0;j=b;l=b+224|0;m=b+88|0;n=b+72|0;o=b+60|0;q=b+48|0;k[l>>2]=0;if(!(Hc[k[(k[a>>2]|0)+252>>2]&511](a)|0)){s=0.0;r=b;return +s}if(!($p(a)|0)){s=0.0;r=b;return +s}cp(a,d,298);switch(k[d>>2]|0){case 301:{t=1;break}case 302:{t=2;break}case 300:{t=2;break}default:{u=m+56|0;v=m+4|0;k[m>>2]=27524;k[u>>2]=27544;B=0;wa(508,m+56|0,v|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;y=w;vva(u);Qb(y|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);w=B;B=0;do if(w&1){z=Rb()|0;A=Q;C=z}else{k[v>>2]=27560;z=m+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(c);Yua(z);Ava(v);A=E;C=D;break}Yua(c);B=0;D=Ia(40,m|0,134695,17)|0;E=B;B=0;if(!(E&1)?(B=0,Xa(239,D|0,0)|0,D=B,B=0,!(D&1)):0){D=Ab(20)|0;B=0;eb(502,n|0,113956,102);E=B;B=0;do if(!(E&1)){B=0;eb(502,o|0,114059,20);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(n);H=G;I=F;break}B=0;wa(510,q|0,v|0);F=B;B=0;if(F&1){F=Rb()|0;J=Q;K=F;L=1}else{B=0;ua(163,D|0,n|0,o|0,53,q|0);F=B;B=0;if(F&1)M=1;else{B=0;eb(503,D|0,1240,229);B=0;M=0}F=Rb()|0;G=Q;Yua(q);J=G;K=F;L=M}Yua(o);Yua(n);if(L){H=J;I=K}else{N=J;O=K;k[m>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);Qb(O|0)}}else{F=Rb()|0;H=Q;I=F}while(0);zb(D|0);N=H;O=I;k[m>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);Qb(O|0)}E=Rb()|0;N=Q;O=E;k[m>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);Qb(O|0)}while(0);x=A;y=C;vva(u);Qb(y|0)}}y=Hc[k[(k[a>>2]|0)+436>>2]&511](a)|0;Uo(y,l);a=Wo(y,179)|0;u=Wo(y,674)|0;C=Wo(y,203)|0;A=(t|0)==2;if(A){x=Wo(y,677)|0;P=x;R=Wo(y,204)|0}else{P=0;R=0}x=ed[k[(k[y>>2]|0)+308>>2]&511](y,4)|0;O=Hc[k[(k[x>>2]|0)+8>>2]&511](x)|0;if((O|0)<(Hc[k[(k[x>>2]|0)+12>>2]&511](x)|0)){v=(t|0)==1;t=x+8|0;if(A){S=0.0;A=O;while(1){Fc[k[(k[x>>2]|0)+24>>2]&1023](x,A);rd[k[(k[y>>2]|0)+260>>2]&511](y,e,k[l>>2]|0,x);rd[k[(k[a>>2]|0)+56>>2]&511](a,j,x,662);nd[k[(k[u>>2]|0)+48>>2]&1023](u,f,x);nd[k[(k[C>>2]|0)+48>>2]&1023](C,h,x);nd[k[(k[P>>2]|0)+48>>2]&1023](P,g,x);nd[k[(k[R>>2]|0)+48>>2]&1023](R,i,x);T=+$(+(+p[f>>3]))+2.220446049250313e-16;U=+ka(+(T/(+$(+(+p[h>>3]))+2.220446049250313e-16)));T=U*U;if(v)V=T;else{U=+$(+(+p[g>>3]))+2.220446049250313e-16;W=+ka(+(U/(+$(+(+p[i>>3]))+2.220446049250313e-16)));V=T+W*W}W=S+V*5.027554538268101e-10*+p[j>>3]*+p[e>>3]*+p[t>>3];A=A+1|0;if((A|0)>=(Hc[k[(k[x>>2]|0)+12>>2]&511](x)|0)){X=W;break}else S=W}}else{S=0.0;A=O;while(1){Fc[k[(k[x>>2]|0)+24>>2]&1023](x,A);rd[k[(k[y>>2]|0)+260>>2]&511](y,e,k[l>>2]|0,x);rd[k[(k[a>>2]|0)+56>>2]&511](a,j,x,662);nd[k[(k[u>>2]|0)+48>>2]&1023](u,f,x);nd[k[(k[C>>2]|0)+48>>2]&1023](C,h,x);V=+$(+(+p[f>>3]))+2.220446049250313e-16;W=+ka(+(V/(+$(+(+p[h>>3]))+2.220446049250313e-16)));V=W*W;if(v)Y=V;else{W=+$(+(+p[g>>3]))+2.220446049250313e-16;T=+ka(+(W/(+$(+(+p[i>>3]))+2.220446049250313e-16)));Y=V+T*T}T=S+Y*5.027554538268101e-10*+p[j>>3]*+p[e>>3]*+p[t>>3];A=A+1|0;if((A|0)>=(Hc[k[(k[x>>2]|0)+12>>2]&511](x)|0)){X=T;break}else S=T}}}else X=0.0;if((k[d>>2]|0)!=300?(ap(y),(y|0)!=0):0)Ec[k[(k[y>>2]|0)+4>>2]&1023](y);y=k[l>>2]|0;if(y)Tqa(y);k[l>>2]=0;if(!x){s=X;r=b;return +s}Ec[k[(k[x>>2]|0)+4>>2]&1023](x);s=X;r=b;return +s}function N_(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=0.0;f=b+20|0;if((th(k[f>>2]|0)|0)>0){g=0.0;b=0;do{g=+O_(qh(k[f>>2]|0,b)|0)+g;p[d>>3]=g;b=b+1|0}while((b|0)<(th(k[f>>2]|0)|0))}nZ(d,e,1,2,4,0,uY()|0)|0;uY()|0;p[a>>3]=+p[e>>3];r=c;return}function O_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0,_=0.0;b=r;r=r+256|0;c=b+240|0;d=b+236|0;e=b+48|0;f=b+40|0;g=b+32|0;h=b+24|0;i=b+16|0;j=b+8|0;l=b;m=b+232|0;n=b+96|0;o=b+80|0;q=b+68|0;s=b+56|0;k[m>>2]=0;if(!(Hc[k[(k[a>>2]|0)+252>>2]&511](a)|0)){t=0.0;r=b;return +t}if(!($p(a)|0)){t=0.0;r=b;return +t}cp(a,d,298);switch(k[d>>2]|0){case 301:{u=1;break}case 302:{u=2;break}case 300:{u=2;break}default:{v=n+56|0;w=n+4|0;k[n>>2]=27524;k[v>>2]=27544;B=0;wa(508,n+56|0,w|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;z=x;vva(v);Qb(z|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[v>>2]=27488;B=0;va(448,w|0);x=B;B=0;do if(x&1){A=Rb()|0;C=Q;D=A}else{k[w>>2]=27560;A=n+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[n+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,w|0,c|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(c);Yua(A);Ava(w);C=F;D=E;break}Yua(c);B=0;E=Ia(40,n|0,134695,17)|0;F=B;B=0;if(!(F&1)?(B=0,Xa(239,E|0,0)|0,E=B,B=0,!(E&1)):0){E=Ab(20)|0;B=0;eb(502,o|0,114080,108);F=B;B=0;do if(!(F&1)){B=0;eb(502,q|0,114189,23);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(o);I=H;J=G;break}B=0;wa(510,s|0,w|0);G=B;B=0;if(G&1){G=Rb()|0;K=Q;L=G;M=1}else{B=0;ua(163,E|0,o|0,q|0,58,s|0);G=B;B=0;if(G&1)N=1;else{B=0;eb(503,E|0,1240,229);B=0;N=0}G=Rb()|0;H=Q;Yua(s);K=H;L=G;M=N}Yua(q);Yua(o);if(M){I=K;J=L}else{O=K;P=L;k[n>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(P|0)}}else{G=Rb()|0;I=Q;J=G}while(0);zb(E|0);O=I;P=J;k[n>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(P|0)}F=Rb()|0;O=Q;P=F;k[n>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(P|0)}while(0);y=C;z=D;vva(v);Qb(z|0)}}z=Hc[k[(k[a>>2]|0)+436>>2]&511](a)|0;Uo(z,m);Bp(z,e,659);a=Wo(z,179)|0;v=Wo(z,674)|0;D=Wo(z,203)|0;C=(u|0)==2;if(C){y=Wo(z,677)|0;R=y;S=Wo(z,204)|0}else{R=0;S=0}y=ed[k[(k[z>>2]|0)+308>>2]&511](z,3)|0;P=Hc[k[(k[y>>2]|0)+8>>2]&511](y)|0;a:do if((P|0)<(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0)){w=y+8|0;n=(u|0)==1;if(C){T=0.0;O=P;while(1){Fc[k[(k[y>>2]|0)+24>>2]&1023](y,O);rd[k[(k[z>>2]|0)+260>>2]&511](z,f,k[m>>2]|0,y);rd[k[(k[a>>2]|0)+56>>2]&511](a,l,y,660);nd[k[(k[v>>2]|0)+48>>2]&1023](v,g,y);nd[k[(k[D>>2]|0)+48>>2]&1023](D,i,y);nd[k[(k[R>>2]|0)+48>>2]&1023](R,h,y);nd[k[(k[S>>2]|0)+48>>2]&1023](S,j,y);U=+p[g>>3]-+p[i>>3];V=+p[h>>3]-+p[j>>3];W=1.0/+p[e>>3]*+aa(+(U*U+V*V));V=T+W*+p[l>>3]*+p[f>>3]*+p[w>>3];O=O+1|0;if((O|0)>=(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0)){X=V;break a}else T=V}}else{Y=0.0;Z=P}while(1){Fc[k[(k[y>>2]|0)+24>>2]&1023](y,Z);rd[k[(k[z>>2]|0)+260>>2]&511](z,f,k[m>>2]|0,y);rd[k[(k[a>>2]|0)+56>>2]&511](a,l,y,660);nd[k[(k[v>>2]|0)+48>>2]&1023](v,g,y);nd[k[(k[D>>2]|0)+48>>2]&1023](D,i,y);T=1.0/+p[e>>3];V=+p[g>>3]-+p[i>>3];if(n)_=V*(T*V);else{W=+p[h>>3]-+p[j>>3];_=T*+aa(+(V*V+W*W))}W=Y+_*+p[l>>3]*+p[f>>3]*+p[w>>3];Z=Z+1|0;if((Z|0)>=(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0)){X=W;break}else Y=W}}else X=0.0;while(0);if((k[d>>2]|0)!=300){ap(z);Ec[k[(k[z>>2]|0)+4>>2]&1023](z)}z=k[m>>2]|0;if(z)Tqa(z);k[m>>2]=0;if(!y){t=X;r=b;return +t}Ec[k[(k[y>>2]|0)+4>>2]&1023](y);t=X;r=b;return +t}function P_(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0.0;g=r;r=r+16|0;f=g+8|0;e=g;p[f>>3]=0.0;if((th(b)|0)>0){h=0.0;d=0;do{h=+Q_(qh(b,d)|0)+h;p[f>>3]=h;d=d+1|0}while((d|0)<(th(b)|0))}nZ(f,e,1,2,4,0,uY()|0)|0;uY()|0;p[a>>3]=+p[e>>3];r=g;return}function Q_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0.0,i=0,j=0,l=0,m=0,n=0,o=0,q=0.0,s=0,t=0.0,u=0.0,v=0.0;b=r;r=r+48|0;c=b+24|0;d=b+16|0;e=b+8|0;f=b;g=b+32|0;k[g>>2]=0;if(!($p(a)|0)){h=0.0;r=b;return +h}Uo(a,g);i=Wo(a,179)|0;j=Wo(a,353)|0;l=Wo(a,201)|0;m=ed[k[(k[a>>2]|0)+308>>2]&511](a,2)|0;n=Hc[k[(k[m>>2]|0)+8>>2]&511](m)|0;if((n|0)<(Hc[k[(k[m>>2]|0)+12>>2]&511](m)|0)){o=m+8|0;q=0.0;s=n;while(1){Fc[k[(k[m>>2]|0)+24>>2]&1023](m,s);rd[k[(k[a>>2]|0)+260>>2]&511](a,f,k[g>>2]|0,m);rd[k[(k[i>>2]|0)+56>>2]&511](i,e,m,669);nd[k[(k[j>>2]|0)+48>>2]&1023](j,c,m);nd[k[(k[l>>2]|0)+48>>2]&1023](l,d,m);t=+p[c>>3]-+p[d>>3];u=q+ +p[o>>3]*(+p[f>>3]*(+p[e>>3]*(t*(t*.5))));s=s+1|0;if((s|0)>=(Hc[k[(k[m>>2]|0)+12>>2]&511](m)|0)){v=u;break}else q=u}}else v=0.0;s=k[g>>2]|0;if(s)Tqa(s);k[g>>2]=0;Ec[k[(k[m>>2]|0)+4>>2]&1023](m);h=v;r=b;return +h}function R_(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0.0;g=r;r=r+16|0;f=g+8|0;e=g;p[f>>3]=0.0;if((th(b)|0)>0){h=0.0;d=0;do{h=+S_(qh(b,d)|0)+h;p[f>>3]=h;d=d+1|0}while((d|0)<(th(b)|0))}nZ(f,e,1,2,4,0,uY()|0)|0;uY()|0;p[a>>3]=+p[e>>3];r=g;return}function S_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0.0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0;b=r;r=r+240|0;c=b+216|0;d=b+212|0;e=b+24|0;f=b+8|0;g=b;h=b+208|0;i=b+72|0;j=b+56|0;l=b+44|0;m=b+32|0;k[h>>2]=0;if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){n=0.0;r=b;return +n}if(!($p(a)|0)){n=0.0;r=b;return +n}cp(a,d,298);switch(k[d>>2]|0){case 301:{o=1;break}case 302:{o=2;break}case 300:{o=2;break}default:{q=i+56|0;s=i+4|0;k[i>>2]=27524;k[q>>2]=27544;B=0;wa(508,i+56|0,s|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;v=t;vva(q);Qb(v|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[q>>2]=27488;B=0;va(448,s|0);t=B;B=0;do if(t&1){w=Rb()|0;x=Q;y=w}else{k[s>>2]=27560;w=i+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[i+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,s|0,c|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(c);Yua(w);Ava(s);x=A;y=z;break}Yua(c);B=0;z=Ia(40,i|0,134695,17)|0;A=B;B=0;if(!(A&1)?(B=0,Xa(239,z|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,j|0,114213,114);A=B;B=0;do if(!(A&1)){B=0;eb(502,l|0,114328,26);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(j);E=D;F=C;break}B=0;wa(510,m|0,s|0);C=B;B=0;if(C&1){C=Rb()|0;G=Q;H=C;I=1}else{B=0;ua(163,z|0,j|0,l|0,51,m|0);C=B;B=0;if(C&1)J=1;else{B=0;eb(503,z|0,1240,229);B=0;J=0}C=Rb()|0;D=Q;Yua(m);G=D;H=C;I=J}Yua(l);Yua(j);if(I){E=G;F=H}else{K=G;L=H;k[i>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);Qb(L|0)}}else{C=Rb()|0;E=Q;F=C}while(0);zb(z|0);K=E;L=F;k[i>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);Qb(L|0)}A=Rb()|0;K=Q;L=A;k[i>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);Qb(L|0)}while(0);u=x;v=y;vva(q);Qb(v|0)}}v=Hc[k[(k[a>>2]|0)+432>>2]&511](a)|0;Uo(v,h);a=Wo(v,179)|0;q=Wo(v,105)|0;y=ed[k[(k[v>>2]|0)+308>>2]&511](v,2)|0;x=Hc[k[(k[y>>2]|0)+8>>2]&511](y)|0;if((x|0)<(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0)){u=y+8|0;L=f+8|0;if((o|0)==2){M=0.0;o=x;while(1){Fc[k[(k[y>>2]|0)+24>>2]&1023](y,o);rd[k[(k[v>>2]|0)+260>>2]&511](v,e,k[h>>2]|0,y);rd[k[(k[a>>2]|0)+56>>2]&511](a,g,y,696);rd[k[(k[q>>2]|0)+60>>2]&511](q,f,k[h>>2]|0,y);N=+p[g>>3]*.5;O=+p[f>>3];P=+p[e>>3];R=+p[u>>3];S=+p[L>>3];T=M+R*(P*(O*(N*O)))+R*(P*(S*(N*S)));o=o+1|0;if((o|0)>=(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0)){U=T;break}else M=T}}else{M=0.0;o=x;while(1){Fc[k[(k[y>>2]|0)+24>>2]&1023](y,o);rd[k[(k[v>>2]|0)+260>>2]&511](v,e,k[h>>2]|0,y);rd[k[(k[a>>2]|0)+56>>2]&511](a,g,y,696);rd[k[(k[q>>2]|0)+60>>2]&511](q,f,k[h>>2]|0,y);T=+p[f>>3];S=M+ +p[u>>3]*(+p[e>>3]*(T*(+p[g>>3]*.5*T)));o=o+1|0;if((o|0)>=(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0)){U=S;break}else M=S}}}else U=0.0;if((k[d>>2]|0)!=300?(ap(v),(v|0)!=0):0)Ec[k[(k[v>>2]|0)+4>>2]&1023](v);v=k[h>>2]|0;if(v)Tqa(v);k[h>>2]=0;if(!y){n=U;r=b;return +n}Ec[k[(k[y>>2]|0)+4>>2]&1023](y);n=U;r=b;return +n}function T_(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0.0;g=r;r=r+16|0;f=g+8|0;e=g;p[f>>3]=0.0;if((th(b)|0)>0){h=0.0;d=0;do{h=+U_(qh(b,d)|0)+h;p[f>>3]=h;d=d+1|0}while((d|0)<(th(b)|0))}nZ(f,e,1,2,4,0,uY()|0)|0;uY()|0;p[a>>3]=+p[e>>3];r=g;return}function U_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0.0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0.0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0;b=r;r=r+80|0;c=b+56|0;d=b+48|0;e=b+40|0;f=b+64|0;g=b+16|0;h=b+8|0;i=b;k[f>>2]=0;if(!($p(a)|0)){j=0.0;r=b;return +j}Uo(a,f);l=Wo(a,179)|0;m=Wo(a,353)|0;n=Wo(a,674)|0;o=Wo(a,677)|0;q=ed[k[(k[a>>2]|0)+308>>2]&511](a,2)|0;s=Hc[k[(k[q>>2]|0)+8>>2]&511](q)|0;if((s|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0)){t=g+8|0;u=q+8|0;v=0.0;w=s;while(1){Fc[k[(k[q>>2]|0)+24>>2]&1023](q,w);rd[k[(k[a>>2]|0)+260>>2]&511](a,e,k[f>>2]|0,q);rd[k[(k[l>>2]|0)+56>>2]&511](l,d,q,690);nd[k[(k[m>>2]|0)+48>>2]&1023](m,c,q);rd[k[(k[m>>2]|0)+60>>2]&511](m,g,k[f>>2]|0,q);nd[k[(k[n>>2]|0)+48>>2]&1023](n,h,q);nd[k[(k[o>>2]|0)+48>>2]&1023](o,i,q);x=+p[h>>3];y=+p[i>>3];z=+aa(+(x*x+y*y))+1.0e-09;A=x/z;p[h>>3]=A;x=y/z;p[i>>3]=x;z=A*+p[g>>3]+x*+p[t>>3];x=v+ +p[u>>3]*(+p[e>>3]*(z*(+p[d>>3]*.5*z)));w=w+1|0;if((w|0)>=(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0)){B=x;break}else v=x}}else B=0.0;w=k[f>>2]|0;if(w)Tqa(w);k[f>>2]=0;Ec[k[(k[q>>2]|0)+4>>2]&1023](q);j=B;r=b;return +j}function V_(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0.0;g=r;r=r+16|0;f=g+8|0;e=g;p[f>>3]=0.0;if((th(b)|0)>0){h=0.0;d=0;do{h=+W_(qh(b,d)|0)+h;p[f>>3]=h;d=d+1|0}while((d|0)<(th(b)|0))}nZ(f,e,1,2,4,0,uY()|0)|0;uY()|0;p[a>>3]=+p[e>>3];r=g;return}function W_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0.0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0.0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0;b=r;r=r+80|0;c=b+56|0;d=b+48|0;e=b+40|0;f=b+64|0;g=b+16|0;h=b+8|0;i=b;k[f>>2]=0;if(!($p(a)|0)){j=0.0;r=b;return +j}Uo(a,f);l=Wo(a,179)|0;m=Wo(a,353)|0;n=Wo(a,674)|0;o=Wo(a,677)|0;q=ed[k[(k[a>>2]|0)+308>>2]&511](a,2)|0;s=Hc[k[(k[q>>2]|0)+8>>2]&511](q)|0;if((s|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0)){t=g+8|0;u=q+8|0;v=0.0;w=s;while(1){Fc[k[(k[q>>2]|0)+24>>2]&1023](q,w);rd[k[(k[a>>2]|0)+260>>2]&511](a,e,k[f>>2]|0,q);rd[k[(k[l>>2]|0)+56>>2]&511](l,d,q,691);nd[k[(k[m>>2]|0)+48>>2]&1023](m,c,q);rd[k[(k[m>>2]|0)+60>>2]&511](m,g,k[f>>2]|0,q);nd[k[(k[n>>2]|0)+48>>2]&1023](n,h,q);nd[k[(k[o>>2]|0)+48>>2]&1023](o,i,q);x=+p[h>>3];y=+p[i>>3];z=+aa(+(x*x+y*y))+1.0e-09;A=x/z;p[h>>3]=A;x=y/z;p[i>>3]=x;z=A*+p[t>>3]-x*+p[g>>3];x=v+ +p[u>>3]*(+p[e>>3]*(z*(+p[d>>3]*.5*z)));w=w+1|0;if((w|0)>=(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0)){B=x;break}else v=x}}else B=0.0;w=k[f>>2]|0;if(w)Tqa(w);k[f>>2]=0;Ec[k[(k[q>>2]|0)+4>>2]&1023](q);j=B;r=b;return +j}function X_(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0.0;g=r;r=r+16|0;f=g+8|0;e=g;p[f>>3]=0.0;if((th(b)|0)>0){h=0.0;d=0;do{h=+Y_(qh(b,d)|0)+h;p[f>>3]=h;d=d+1|0}while((d|0)<(th(b)|0))}nZ(f,e,1,2,4,0,uY()|0)|0;uY()|0;p[a>>3]=+p[e>>3];r=g;return}function Y_(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0.0,o=0,q=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0.0,z=0.0,A=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;b=r;r=r+240|0;c=b+216|0;d=b+212|0;e=b+24|0;f=b+8|0;g=b;h=b+208|0;i=b+72|0;j=b+56|0;l=b+44|0;m=b+32|0;k[h>>2]=0;if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){n=0.0;r=b;return +n}if(!($p(a)|0)){n=0.0;r=b;return +n}cp(a,d,298);if(((k[d>>2]|0)+-300|0)>>>0<3){o=Hc[k[(k[a>>2]|0)+432>>2]&511](a)|0;Uo(o,h);a=Wo(o,179)|0;q=Wo(o,215)|0;s=ed[k[(k[o>>2]|0)+308>>2]&511](o,2)|0;t=Hc[k[(k[s>>2]|0)+8>>2]&511](s)|0;if((t|0)<(Hc[k[(k[s>>2]|0)+12>>2]&511](s)|0)){u=f+8|0;v=s+8|0;w=0.0;x=t;while(1){Fc[k[(k[s>>2]|0)+24>>2]&1023](s,x);rd[k[(k[o>>2]|0)+260>>2]&511](o,e,k[h>>2]|0,s);rd[k[(k[a>>2]|0)+56>>2]&511](a,g,s,694);rd[k[(k[q>>2]|0)+60>>2]&511](q,f,k[h>>2]|0,s);y=+p[f>>3];z=+p[u>>3];A=w+ +p[v>>3]*(+p[e>>3]*(+p[g>>3]*.5*(y*y+z*z)));x=x+1|0;if((x|0)>=(Hc[k[(k[s>>2]|0)+12>>2]&511](s)|0)){C=A;break}else w=A}}else C=0.0;if((k[d>>2]|0)!=300?(ap(o),(o|0)!=0):0)Ec[k[(k[o>>2]|0)+4>>2]&1023](o);o=k[h>>2]|0;if(o)Tqa(o);k[h>>2]=0;if(!s){n=C;r=b;return +n}Ec[k[(k[s>>2]|0)+4>>2]&1023](s);n=C;r=b;return +n}b=i+56|0;s=i+4|0;k[i>>2]=27524;k[b>>2]=27544;B=0;wa(508,i+56|0,s|0);h=B;B=0;if(h&1){h=Rb()|0;D=Q;E=h;vva(b);Qb(E|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[b>>2]=27488;B=0;va(448,s|0);h=B;B=0;do if(h&1){o=Rb()|0;F=Q;G=o}else{k[s>>2]=27560;o=i+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[i+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,s|0,c|0);d=B;B=0;if(d&1){d=Rb()|0;x=Q;Yua(c);Yua(o);Ava(s);F=x;G=d;break}Yua(c);B=0;d=Ia(40,i|0,134695,17)|0;x=B;B=0;if(!(x&1)?(B=0,Xa(239,d|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,j|0,114355,108);x=B;B=0;do if(!(x&1)){B=0;eb(502,l|0,114464,23);g=B;B=0;if(g&1){g=Rb()|0;e=Q;Yua(j);H=e;I=g;break}B=0;wa(510,m|0,s|0);g=B;B=0;if(g&1){g=Rb()|0;J=Q;K=g;L=1}else{B=0;ua(163,d|0,j|0,l|0,51,m|0);g=B;B=0;if(g&1)M=1;else{B=0;eb(503,d|0,1240,229);B=0;M=0}g=Rb()|0;e=Q;Yua(m);J=e;K=g;L=M}Yua(l);Yua(j);if(L){H=J;I=K}else{N=J;O=K;k[i>>2]=27468;k[b>>2]=27488;k[s>>2]=27560;Yua(o);Ava(s);vva(b);Qb(O|0)}}else{g=Rb()|0;H=Q;I=g}while(0);zb(d|0);N=H;O=I;k[i>>2]=27468;k[b>>2]=27488;k[s>>2]=27560;Yua(o);Ava(s);vva(b);Qb(O|0)}x=Rb()|0;N=Q;O=x;k[i>>2]=27468;k[b>>2]=27488;k[s>>2]=27560;Yua(o);Ava(s);vva(b);Qb(O|0)}while(0);D=F;E=G;vva(b);Qb(E|0);return +(0.0)}function Z_(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0.0;g=r;r=r+16|0;f=g+8|0;e=g;p[f>>3]=0.0;if((th(b)|0)>0){h=0.0;d=0;do{h=+__(qh(b,d)|0)+h;p[f>>3]=h;d=d+1|0}while((d|0)<(th(b)|0))}nZ(f,e,1,2,4,0,uY()|0)|0;uY()|0;p[a>>3]=+p[e>>3];r=g;return}function __(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0.0,o=0,q=0,s=0,t=0,u=0,v=0.0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;b=r;r=r+240|0;c=b+224|0;d=b+220|0;e=b+32|0;f=b+8|0;g=b;h=b+216|0;i=b+80|0;j=b+64|0;l=b+52|0;m=b+40|0;k[h>>2]=0;if(!($p(a)|0)){n=0.0;r=b;return +n}cp(a,d,298);if(((k[d>>2]|0)+-300|0)>>>0<3){Uo(a,h);d=Wo(a,179)|0;o=Wo(a,214)|0;q=ed[k[(k[a>>2]|0)+308>>2]&511](a,2)|0;s=Hc[k[(k[q>>2]|0)+8>>2]&511](q)|0;if((s|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0)){t=f+8|0;u=q+8|0;v=0.0;w=s;while(1){Fc[k[(k[q>>2]|0)+24>>2]&1023](q,w);rd[k[(k[a>>2]|0)+260>>2]&511](a,e,k[h>>2]|0,q);rd[k[(k[d>>2]|0)+56>>2]&511](d,g,q,695);rd[k[(k[o>>2]|0)+60>>2]&511](o,f,k[h>>2]|0,q);x=+p[f>>3];y=+p[t>>3];z=v+ +p[u>>3]*(+p[e>>3]*(+p[g>>3]*.5*(x*x+y*y)));w=w+1|0;if((w|0)>=(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0)){A=z;break}else v=z}}else A=0.0;w=k[h>>2]|0;if(w)Tqa(w);k[h>>2]=0;Ec[k[(k[q>>2]|0)+4>>2]&1023](q);n=A;r=b;return +n}b=i+56|0;q=i+4|0;k[i>>2]=27524;k[b>>2]=27544;B=0;wa(508,i+56|0,q|0);h=B;B=0;if(h&1){h=Rb()|0;C=Q;D=h;vva(b);Qb(D|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[b>>2]=27488;B=0;va(448,q|0);h=B;B=0;do if(h&1){w=Rb()|0;E=Q;F=w}else{k[q>>2]=27560;w=i+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[i+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,q|0,c|0);g=B;B=0;if(g&1){g=Rb()|0;e=Q;Yua(c);Yua(w);Ava(q);E=e;F=g;break}Yua(c);B=0;g=Ia(40,i|0,134695,17)|0;e=B;B=0;if(!(e&1)?(B=0,Xa(239,g|0,0)|0,g=B,B=0,!(g&1)):0){g=Ab(20)|0;B=0;eb(502,j|0,114488,102);e=B;B=0;do if(!(e&1)){B=0;eb(502,l|0,114591,20);u=B;B=0;if(u&1){u=Rb()|0;t=Q;Yua(j);G=t;H=u;break}B=0;wa(510,m|0,q|0);u=B;B=0;if(u&1){u=Rb()|0;I=Q;J=u;K=1}else{B=0;ua(163,g|0,j|0,l|0,48,m|0);u=B;B=0;if(u&1)L=1;else{B=0;eb(503,g|0,1240,229);B=0;L=0}u=Rb()|0;t=Q;Yua(m);I=t;J=u;K=L}Yua(l);Yua(j);if(K){G=I;H=J}else{M=I;N=J;k[i>>2]=27468;k[b>>2]=27488;k[q>>2]=27560;Yua(w);Ava(q);vva(b);Qb(N|0)}}else{u=Rb()|0;G=Q;H=u}while(0);zb(g|0);M=G;N=H;k[i>>2]=27468;k[b>>2]=27488;k[q>>2]=27560;Yua(w);Ava(q);vva(b);Qb(N|0)}e=Rb()|0;M=Q;N=e;k[i>>2]=27468;k[b>>2]=27488;k[q>>2]=27560;Yua(w);Ava(q);vva(b);Qb(N|0)}while(0);C=E;D=F;vva(b);Qb(D|0);return +(0.0)}function $_(a){a=a|0;var b=0;k[a>>2]=36788;b=a+8|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;return}function a$(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;h=r;r=r+192|0;i=h+176|0;j=h+40|0;l=h+24|0;m=h+12|0;n=h;k[a>>2]=36788;k[a+8>>2]=g;g=a+4|0;k[g>>2]=b;switch(c|0){case 622:{B=0;o=ya(423,16)|0;p=B;B=0;if(!(p&1)){B=0;ib(284,o|0,b|0,d|0,738);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Sqa(o);s=q;t=p;Qb(t|0)}k[a+12>>2]=o;B=0;o=ya(423,16)|0;p=B;B=0;if(!(p&1)){B=0;ib(284,o|0,k[g>>2]|0,d|0,738);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Sqa(o);s=q;t=p;Qb(t|0)}k[a+16>>2]=o;B=0;o=ya(423,16)|0;p=B;B=0;if(!(p&1)){B=0;ib(284,o|0,k[g>>2]|0,e|0,738);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Sqa(o);s=q;t=p;Qb(t|0)}k[a+20>>2]=o;B=0;o=ya(423,16)|0;p=B;B=0;if(!(p&1)){B=0;ib(284,o|0,k[g>>2]|0,f|0,738);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Sqa(o);s=q;t=p;Qb(t|0)}else{k[a+24>>2]=o;u=a+28|0;k[u>>2]=0;r=h;return}}else v=11}else v=11}else v=11}else v=11;break}case 626:{B=0;o=ya(423,16)|0;p=B;B=0;if(!(p&1)){B=0;ib(285,o|0,b|0,d|0,738);b=B;B=0;if(b&1){b=Rb()|0;p=Q;Sqa(o);s=p;t=b;Qb(t|0)}k[a+12>>2]=o;B=0;o=ya(423,16)|0;b=B;B=0;if(!(b&1)){B=0;ib(285,o|0,k[g>>2]|0,d|0,738);d=B;B=0;if(d&1){d=Rb()|0;b=Q;Sqa(o);s=b;t=d;Qb(t|0)}k[a+16>>2]=o;B=0;o=ya(423,16)|0;d=B;B=0;if(!(d&1)){B=0;ib(285,o|0,k[g>>2]|0,e|0,738);e=B;B=0;if(e&1){e=Rb()|0;d=Q;Sqa(o);s=d;t=e;Qb(t|0)}k[a+20>>2]=o;B=0;o=ya(423,16)|0;e=B;B=0;if(!(e&1)){B=0;ib(285,o|0,k[g>>2]|0,f|0,738);f=B;B=0;if(f&1){f=Rb()|0;g=Q;Sqa(o);s=g;t=f;Qb(t|0)}else{k[a+24>>2]=o;u=a+28|0;k[u>>2]=0;r=h;return}}else v=11}else v=11}else v=11}else v=11;break}default:{h=j+56|0;u=j+4|0;k[j>>2]=27524;k[h>>2]=27544;B=0;wa(508,j+56|0,u|0);a=B;B=0;if(a&1){a=Rb()|0;w=Q;x=a}else{k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[h>>2]=27488;B=0;va(448,u|0);a=B;B=0;do if(a&1){o=Rb()|0;y=Q;z=o}else{k[u>>2]=27560;o=j+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[j+52>>2]=16;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;B=0;wa(509,u|0,i|0);f=B;B=0;if(f&1){f=Rb()|0;g=Q;Yua(i);Yua(o);Ava(u);y=g;z=f;break}Yua(i);B=0;f=Ia(40,j|0,114627,14)|0;g=B;B=0;a:do if((((!(g&1)?(B=0,e=ya(427,c|0)|0,d=B,B=0,!(d&1)):0)?(d=Lta(e)|0,B=0,b=Ia(40,f|0,e|0,d|0)|0,d=B,B=0,!(d&1)):0)?(B=0,d=Ia(40,b|0,114642,34)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(239,d|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,l|0,114677,78);b=B;B=0;do if(!(b&1)){B=0;eb(502,m|0,114756,12);e=B;B=0;if(e&1){e=Rb()|0;p=Q;Yua(l);A=p;C=e;break}B=0;wa(510,n|0,u|0);e=B;B=0;if(e&1){e=Rb()|0;D=Q;E=e;F=1}else{B=0;ua(163,d|0,l|0,m|0,43,n|0);e=B;B=0;if(e&1)G=1;else{B=0;eb(503,d|0,1240,229);B=0;G=0}e=Rb()|0;p=Q;Yua(n);D=p;E=e;F=G}Yua(m);Yua(l);if(F){A=D;C=E}else{H=D;I=E;break a}}else{e=Rb()|0;A=Q;C=e}while(0);zb(d|0);H=A;I=C}else v=48;while(0);if((v|0)==48){f=Rb()|0;H=Q;I=f}k[j>>2]=27468;k[h>>2]=27488;k[u>>2]=27560;Yua(o);Ava(u);vva(h);s=H;t=I;Qb(t|0)}while(0);w=y;x=z}vva(h);J=w;K=x}}if((v|0)==11){v=Rb()|0;J=Q;K=v}s=J;t=K;Qb(t|0)}
+function oz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0.0,n=0,o=0.0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;e=a+176|0;f=a+40|0;g=a+24|0;h=a+12|0;i=a;switch(d|0){case 736:{k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;r=a;return}case 739:case 738:{p[b>>3]=-1.0;p[b+32>>3]=-1.0;p[b+64>>3]=-1.0;p[b+8>>3]=1.0;p[b+40>>3]=0.0;p[b+72>>3]=0.0;p[b+16>>3]=0.0;p[b+48>>3]=1.0;p[b+80>>3]=0.0;p[b+24>>3]=0.0;p[b+56>>3]=0.0;p[b+88>>3]=1.0;r=a;return}case 741:case 740:{p[b>>3]=-1.0;p[b+40>>3]=-1.0;p[b+80>>3]=-1.0;p[b+8>>3]=1.0;p[b+48>>3]=0.0;p[b+88>>3]=0.0;p[b+16>>3]=0.0;p[b+56>>3]=1.0;p[b+96>>3]=0.0;p[b+24>>3]=0.0;p[b+64>>3]=0.0;p[b+104>>3]=1.0;j=c+48|0;l=c+56|0;m=+p[l>>3];n=c+64|0;o=+p[n>>3];q=c+40|0;p[b+32>>3]=(o*(m*+p[q>>3])-+p[j>>3]*m*o)*256.0;o=+p[j>>3];m=+p[n>>3];p[b+72>>3]=(m*(o*+p[q>>3])-o*+p[l>>3]*m)*256.0;m=+p[j>>3];o=+p[l>>3];p[b+112>>3]=(o*(m*+p[q>>3])-m*o*+p[n>>3])*256.0;r=a;return}case 742:{n=c+40|0;p[b>>3]=1.0-+p[n>>3]*4.0;p[b+80>>3]=1.0-+p[n>>3]*4.0;p[b+160>>3]=1.0-+p[n>>3]*4.0;q=c+48|0;p[b+8>>3]=+p[q>>3]*4.0+-1.0;p[b+88>>3]=0.0;p[b+168>>3]=0.0;p[b+16>>3]=0.0;l=c+56|0;p[b+96>>3]=+p[l>>3]*4.0+-1.0;p[b+176>>3]=0.0;p[b+24>>3]=0.0;p[b+104>>3]=0.0;j=c+64|0;p[b+184>>3]=+p[j>>3]*4.0+-1.0;p[b+32>>3]=+p[l>>3]*4.0;p[b+112>>3]=+p[q>>3]*4.0;p[b+192>>3]=0.0;p[b+40>>3]=+p[l>>3]*-4.0;p[b+120>>3]=(+p[n>>3]-+p[l>>3])*4.0;p[b+200>>3]=+p[l>>3]*-4.0;p[b+48>>3]=(+p[n>>3]-+p[q>>3])*4.0;p[b+128>>3]=+p[q>>3]*-4.0;p[b+208>>3]=+p[q>>3]*-4.0;p[b+56>>3]=+p[j>>3]*4.0;p[b+136>>3]=0.0;p[b+216>>3]=+p[q>>3]*4.0;p[b+64>>3]=0.0;p[b+144>>3]=+p[j>>3]*4.0;p[b+224>>3]=+p[l>>3]*4.0;p[b+72>>3]=+p[j>>3]*-4.0;p[b+152>>3]=+p[j>>3]*-4.0;p[b+232>>3]=(+p[n>>3]-+p[j>>3])*4.0;r=a;return}default:{a=f+56|0;j=f+4|0;k[f>>2]=27524;k[a>>2]=27544;B=0;wa(508,f+56|0,j|0);n=B;B=0;if(n&1){n=Rb()|0;s=Q;t=n;vva(a);Qb(t|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[a>>2]=27488;B=0;va(448,j|0);n=B;B=0;do if(n&1){b=Rb()|0;u=Q;v=b}else{k[j>>2]=27560;b=f+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,j|0,e|0);l=B;B=0;if(l&1){l=Rb()|0;q=Q;Yua(e);Yua(b);Ava(j);u=q;v=l;break}Yua(e);B=0;l=Ia(40,f|0,132447,13)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,d|0)|0,c=B,B=0,!(c&1)):0)?(c=Lta(q)|0,B=0,w=Ia(40,l|0,q|0,c|0)|0,c=B,B=0,!(c&1)):0)?(B=0,c=Ia(40,w|0,146481,18)|0,w=B,B=0,!(w&1)):0)?(B=0,Xa(239,c|0,0)|0,c=B,B=0,!(c&1)):0){c=Ab(20)|0;B=0;eb(502,g|0,73996,76);w=B;B=0;do if(!(w&1)){B=0;eb(502,h|0,75528,37);q=B;B=0;if(q&1){q=Rb()|0;l=Q;Yua(g);x=l;y=q;break}B=0;wa(510,i|0,j|0);q=B;B=0;if(q&1){q=Rb()|0;z=Q;A=q;C=1}else{B=0;ua(163,c|0,g|0,h|0,340,i|0);q=B;B=0;if(q&1)D=1;else{B=0;eb(503,c|0,1240,229);B=0;D=0}q=Rb()|0;l=Q;Yua(i);z=l;A=q;C=D}Yua(h);Yua(g);if(C){x=z;y=A}else{E=z;F=A;k[f>>2]=27468;k[a>>2]=27488;k[j>>2]=27560;Yua(b);Ava(j);vva(a);Qb(F|0)}}else{q=Rb()|0;x=Q;y=q}while(0);zb(c|0);E=x;F=y;k[f>>2]=27468;k[a>>2]=27488;k[j>>2]=27560;Yua(b);Ava(j);vva(a);Qb(F|0)}w=Rb()|0;E=Q;F=w;k[f>>2]=27468;k[a>>2]=27488;k[j>>2]=27560;Yua(b);Ava(j);vva(a);Qb(F|0)}while(0);s=u;t=v;vva(a);Qb(t|0)}}}function pz(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;switch(b|0){case 754:{h=921;r=a;return h|0}case 755:case 753:case 751:case 752:case 750:case 749:{h=738;r=a;return h|0}default:{h=d+56|0;a=d+4|0;k[d>>2]=27524;k[h>>2]=27544;B=0;wa(508,d+56|0,a|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(h);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[h>>2]=27488;B=0;va(448,a|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[a>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(a);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,132447,13)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,b|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,73996,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,75650,21);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,a|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,377,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}while(0);j=n;l=o;vva(h);Qb(l|0)}}return 0}function qz(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;if((b|0)==755){r=a;return 739}a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,132447,13)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,b|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,73996,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,75211,19);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,387,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(C|0)}while(0);j=n;l=o;vva(a);Qb(l|0);return 0}function rz(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;switch(b|0){case 752:{h=740;r=a;return h|0}case 751:{h=740;r=a;return h|0}case 753:{h=742;r=a;return h|0}case 754:{h=742;r=a;return h|0}case 755:{h=742;r=a;return h|0}case 750:case 749:{h=738;r=a;return h|0}default:{h=d+56|0;a=d+4|0;k[d>>2]=27524;k[h>>2]=27544;B=0;wa(508,d+56|0,a|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(h);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[h>>2]=27488;B=0;va(448,a|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[a>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(a);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,132447,13)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,b|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,73996,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,75691,21);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,a|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,401,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}while(0);j=n;l=o;vva(h);Qb(l|0)}}return 0}function sz(a){a=a|0;k[a>>2]=31308;k[a+4>>2]=31872;k[a+36>>2]=0;Tq(a+48|0);Qo(a);return}function tz(a){a=a|0;k[a>>2]=31308;k[a+4>>2]=31872;k[a+36>>2]=0;Tq(a+48|0);Qo(a);Sqa(a);return}function uz(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0.0,s=0,u=0,v=0,w=0,x=0,y=0,z=0;g=r;r=r+16|0;h=g;Po(a);i=a+48|0;B=0;ua(167,i|0,f|0,d+1|0,6,e|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;Qo(a);Qb(m|0)}B=0;j=B;B=0;if(j&1){j=Rb()|0;n=Q;o=j}else{k[a>>2]=31308;k[a+4>>2]=31872;j=a+8|0;k[j>>2]=b;k[a+12>>2]=c;B=0;c=Xa(246,e|0,107922)|0;b=B;B=0;do if(!(b&1)){q=+$(+(+p[c+(d<<3)>>3]));p[t>>3]=q;s=k[t+4>>2]|0;if(!(s>>>0>2146435072|(s|0)==2146435072&(k[t>>2]|0)>>>0>0)){B=0;s=Xa(246,e|0,107922)|0;u=B;B=0;if(u&1){v=10;break}if(!(+p[s+(d<<3)>>3]==-1.0)){B=0;s=Xa(246,e|0,107922)|0;u=B;B=0;if(u&1){v=10;break}k[h+4>>2]=~~+p[s+(d<<3)>>3]}else v=7}else v=7;if((v|0)==7)k[h+4>>2]=k[j>>2];B=0;s=Xa(246,e|0,107944)|0;u=B;B=0;if(!(u&1)){q=+$(+(+p[s+(d<<3)>>3]));p[t>>3]=q;s=k[t+4>>2]|0;if(!(s>>>0>2146435072|(s|0)==2146435072&(k[t>>2]|0)>>>0>0)){B=0;s=Xa(246,e|0,107944)|0;u=B;B=0;if(u&1){v=10;break}if(!(+p[s+(d<<3)>>3]==-1.0)){B=0;s=Xa(246,e|0,107944)|0;u=B;B=0;if(u&1){v=10;break}k[h>>2]=~~+p[s+(d<<3)>>3];w=h}else v=17}else v=17;if((v|0)==17){k[h>>2]=k[j>>2];w=h}B=0;wa(519,i|0,w|0);s=B;B=0;if(!(s&1)?(k[a+36>>2]=0,B=0,s=ya(423,36)|0,u=B,B=0,!(u&1)):0){B=0;va(486,s|0);u=B;B=0;if(u&1){u=Rb()|0;x=Q;Sqa(s);y=x;z=u;break}k[a+16>>2]=s;s=a+20|0;k[a+72>>2]=0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;B=0;s=ya(422,(f>>>0>1073741823?-1:f<<2)|0)|0;u=B;B=0;if(!(u&1)){k[a+40>>2]=s;r=g;return}else v=10}else v=10}else v=10}else v=10;while(0);if((v|0)==10){v=Rb()|0;y=Q;z=v}n=y;o=z}Tq(i);l=n;m=o;Qo(a);Qb(m|0)}function vz(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;b=Qqa(76)|0;B=0;va(461,b|0);c=B;B=0;if(c&1){c=Rb()|0;d=Q;e=c}else{c=b+48|0;B=0;va(462,c|0);f=B;B=0;do if(!(f&1)){B=0;g=B;B=0;if(g&1){g=Rb()|0;h=Q;Tq(c);i=h;j=g;break}k[b>>2]=31308;k[b+4>>2]=31872;g=k[a+48>>2]|0;h=(g|0)>0;if(h){l=Rqa(g>>>0>1073741823?-1:g<<2)|0;k[b+40>>2]=l;m=k[a+40>>2]|0;n=0;do{k[l+(n<<2)>>2]=k[m+(n<<2)>>2];n=n+1|0}while((n|0)!=(g|0))}else k[b+40>>2]=0;k[b+44>>2]=k[a+44>>2];k[c>>2]=g;n=a+52|0;m=k[n>>2]|0;a:do if(m){l=Rqa(g>>>0>1073741823?-1:g<<2)|0;o=b+52|0;k[o>>2]=l;if(h){l=g;p=m;q=0;while(1){r=k[p+(q<<2)>>2]|0;if(!r){k[(k[o>>2]|0)+(q<<2)>>2]=0;s=l}else{t=Bla(r)|0;k[(k[o>>2]|0)+(q<<2)>>2]=t;s=k[c>>2]|0}t=q+1|0;if((t|0)>=(s|0))break a;l=s;p=k[n>>2]|0;q=t}}}else k[b+52>>2]=0;while(0);n=a+56|0;m=Bla(k[n>>2]|0)|0;k[b+56>>2]=m;m=a+60|0;g=Bla(k[m>>2]|0)|0;k[b+60>>2]=g;g=a+64|0;h=Bla(k[g>>2]|0)|0;k[b+64>>2]=h;h=a+68|0;q=k[h>>2]|0;if(!q)k[b+68>>2]=0;else{p=Bla(q)|0;k[b+68>>2]=p}k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2];p=k[a+16>>2]|0;do if(!p){q=Qqa(36)|0;B=0;va(486,q|0);l=B;B=0;if(!(l&1)){k[b+16>>2]=q;break}l=Rb()|0;o=Q;Sqa(q);u=o;v=l;Qb(v|0)}else{l=hh(p)|0;k[b+16>>2]=l}while(0);k[b+36>>2]=k[a+36>>2];p=k[a+20>>2]|0;if(!p){k[b+20>>2]=0;w=k[n>>2]|0;x=Gla(w)|0;y=b+24|0;k[y>>2]=x;z=k[m>>2]|0;A=Fla(z)|0;C=b+28|0;k[C>>2]=A;D=k[g>>2]|0;E=Fla(D)|0;F=b+32|0;k[F>>2]=E;G=k[h>>2]|0;H=Gla(G)|0;I=b+72|0;k[I>>2]=H;return b|0}else{l=Rqa(24)|0;k[b+20>>2]=l;k[l>>2]=k[p>>2];k[l+4>>2]=k[p+4>>2];k[l+8>>2]=k[p+8>>2];k[l+12>>2]=k[p+12>>2];k[l+16>>2]=k[p+16>>2];k[l+20>>2]=k[p+20>>2];w=k[n>>2]|0;x=Gla(w)|0;y=b+24|0;k[y>>2]=x;z=k[m>>2]|0;A=Fla(z)|0;C=b+28|0;k[C>>2]=A;D=k[g>>2]|0;E=Fla(D)|0;F=b+32|0;k[F>>2]=E;G=k[h>>2]|0;H=Gla(G)|0;I=b+72|0;k[I>>2]=H;return b|0}}else{p=Rb()|0;i=Q;j=p}while(0);Qo(b);d=i;e=j}Sqa(b);u=d;v=e;Qb(v|0);return 0}function wz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;l=e;switch(d|0){case 0:{m=k[b>>2]|0;i[m>>0]=113;i[m+1>>0]=2;i[m+2>>0]=0;i[m+3>>0]=0;k[b>>2]=(k[b>>2]|0)+4;break}case 2:{k[c>>2]=(k[c>>2]|0)+4;break}case 1:{k[b>>2]=(k[b>>2]|0)+4;break}default:{m=g+56|0;n=g+4|0;k[g>>2]=27524;k[m>>2]=27544;B=0;wa(508,g+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;q=o;vva(m);Qb(q|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){s=Rb()|0;t=Q;u=s}else{k[n>>2]=27560;s=g+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,n|0,f|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(f);Yua(s);Ava(n);t=w;u=v;break}Yua(f);B=0;v=Ia(40,g|0,143951,43)|0;w=B;B=0;if(!(w&1)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,h|0,74107,73);w=B;B=0;do if(!(w&1)){B=0;eb(502,j|0,149525,8);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(h);z=y;A=x;break}B=0;wa(510,l|0,n|0);x=B;B=0;if(x&1){x=Rb()|0;C=Q;D=x;E=1}else{B=0;ua(163,v|0,h|0,j|0,127,l|0);x=B;B=0;if(x&1)F=1;else{B=0;eb(503,v|0,1240,229);B=0;F=0}x=Rb()|0;y=Q;Yua(l);C=y;D=x;E=F}Yua(j);Yua(h);if(E){z=C;A=D}else{G=C;H=D;k[g>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);Qb(H|0)}}else{x=Rb()|0;z=Q;A=x}while(0);zb(v|0);G=z;H=A;k[g>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);Qb(H|0)}w=Rb()|0;G=Q;H=w;k[g>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);Qb(H|0)}while(0);p=t;q=u;vva(m);Qb(q|0)}}q=a+48|0;Vq(q,b,c,d);dq(a,b,c,d,k[q>>2]|0);q=Gla(k[a+56>>2]|0)|0;k[a+24>>2]=q;q=Fla(k[a+60>>2]|0)|0;k[a+28>>2]=q;q=Fla(k[a+64>>2]|0)|0;k[a+32>>2]=q;q=Gla(k[a+68>>2]|0)|0;k[a+72>>2]=q;r=e;return}function xz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0.0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;e=r;r=r+224|0;f=e;g=e+72|0;h=e+208|0;i=e+60|0;j=e+48|0;if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){r=e;return}if((d|0)==738){l=+p[c>>3];p[f>>3]=l;p[f+24>>3]=l;l=+p[c+8>>3];p[f+8>>3]=l;p[f+32>>3]=l;l=+p[c+16>>3];p[f+16>>3]=l;p[f+40>>3]=l;c=a;while(1){a=k[c+16>>2]|0;d=Qqa(16)|0;B=0;ib(285,d|0,b|0,f|0,738);m=B;B=0;if(m&1){n=d;o=6;break}mC(a,d)|0;if(Hc[k[(k[c>>2]|0)+252>>2]&511](c)|0){o=8;break}c=k[(k[c+72>>2]|0)+4>>2]|0}if((o|0)==6){c=Rb()|0;b=Q;Sqa(n);q=b;s=c;Qb(s|0)}else if((o|0)==8){r=e;return}}e=g+56|0;c=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;t=Q;u=b;vva(e);Qb(u|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,c|0);b=B;B=0;do if(b&1){n=Rb()|0;v=Q;w=n}else{k[c>>2]=27560;n=g+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,c|0,f|0);d=B;B=0;if(d&1){d=Rb()|0;a=Q;Yua(f);Yua(n);Ava(c);v=a;w=d;break}Yua(f);B=0;d=Ia(40,g|0,149721,19)|0;a=B;B=0;a:do if(!(a&1)?(B=0,Xa(239,d|0,0)|0,m=B,B=0,!(m&1)):0){m=Ab(20)|0;B=0;eb(502,h|0,74107,73);x=B;B=0;do if(!(x&1)){B=0;eb(502,i|0,74181,13);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(h);A=z;C=y;break}B=0;wa(510,j|0,c|0);y=B;B=0;if(y&1){y=Rb()|0;D=Q;E=y;F=1}else{B=0;ua(163,m|0,h|0,i|0,164,j|0);y=B;B=0;if(y&1)G=1;else{B=0;eb(503,m|0,1240,229);B=0;G=0}y=Rb()|0;z=Q;Yua(j);D=z;E=y;F=G}Yua(i);Yua(h);if(F){A=D;C=E}else{H=D;I=E;break a}}else{y=Rb()|0;A=Q;C=y}while(0);zb(m|0);H=A;I=C}else o=24;while(0);if((o|0)==24){d=Rb()|0;H=Q;I=d}k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(n);Ava(c);vva(e);q=H;s=I;Qb(s|0)}while(0);t=v;u=w;vva(e);Qb(u|0)}function yz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=k[a+16>>2]|0;a=Qqa(16)|0;B=0;ib(285,a|0,b|0,c|0,d|0);d=B;B=0;if(d&1){d=Rb()|0;Sqa(a);Qb(d|0)}else{mC(e,a)|0;return}}function zz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,74195,18)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,74107,73);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,74214,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,175,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function Az(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0,z=0.0,A=0.0;b=r;r=r+336|0;c=b+176|0;d=b+168|0;e=b+160|0;f=b+152|0;g=b+144|0;h=b+96|0;i=b+48|0;j=b;Ko(b+184|0,k[a+24>>2]|0,6,0);l=a+16|0;a=oC(k[l>>2]|0,674)|0;m=oC(k[l>>2]|0,677)|0;n=oC(k[l>>2]|0,262)|0;o=oC(k[l>>2]|0,263)|0;q=oC(k[l>>2]|0,255)|0;s=Qqa(72)|0;B=0;va(493,s|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Sqa(s);v=u;w=t;Qb(w|0)}t=0;do{Fc[k[(k[s>>2]|0)+28>>2]&1023](s,t);nd[k[(k[a>>2]|0)+48>>2]&1023](a,c,s);nd[k[(k[m>>2]|0)+48>>2]&1023](m,d,s);x=+p[c>>3];y=+p[d>>3];nd[k[(k[n>>2]|0)+48>>2]&1023](n,e,s);nd[k[(k[o>>2]|0)+48>>2]&1023](o,g,s);nd[k[(k[q>>2]|0)+48>>2]&1023](q,f,s);z=+p[f>>3]*+p[e>>3]*+p[g>>3];A=z<0.0?0.0:z;p[j+(t<<3)>>3]=A;z=+aa(+(x*x+y*y))+1.0e-14;p[h+(t<<3)>>3]=+p[c>>3]*A/z;p[i+(t<<3)>>3]=A*+p[d>>3]/z;t=t+1|0}while((t|0)!=6);t=k[l>>2]|0;d=Qqa(16)|0;B=0;ib(285,d|0,258,h|0,738);h=B;B=0;if(h&1){h=Rb()|0;c=Q;Sqa(d);v=c;w=h;Qb(w|0)}mC(t,d)|0;d=k[l>>2]|0;t=Qqa(16)|0;B=0;ib(285,t|0,259,i|0,738);i=B;B=0;if(i&1){i=Rb()|0;h=Q;Sqa(t);v=h;w=i;Qb(w|0)}mC(d,t)|0;t=k[l>>2]|0;l=Qqa(16)|0;B=0;ib(285,l|0,248,j|0,738);j=B;B=0;if(!(j&1)){mC(t,l)|0;Ec[k[(k[s>>2]|0)+4>>2]&1023](s);r=b;return}b=Rb()|0;s=Q;Sqa(l);v=s;w=b;Qb(w|0)}function Bz(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0.0,aa=0.0,ba=0.0,ca=0.0,da=0.0,ea=0.0,fa=0.0,ga=0.0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0;c=r;r=r+688|0;d=c+672|0;e=c+668|0;f=c+664|0;g=c+176|0;h=c+104|0;i=c+96|0;j=c+88|0;l=c+80|0;m=c+72|0;n=c+48|0;o=c;q=c+528|0;s=c+516|0;t=c+504|0;u=c+356|0;v=c+368|0;w=c+344|0;x=c+332|0;y=c+320|0;z=a+36|0;cO(k[z>>2]|0,e,477);A=a+16|0;kC(k[A>>2]|0,f,533);if((k[e>>2]|0)!=497){e=q+56|0;C=q+4|0;k[q>>2]=27524;k[e>>2]=27544;B=0;wa(508,q+56|0,C|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;F=D;vva(e);Qb(F|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[e>>2]=27488;B=0;va(448,C|0);D=B;B=0;do if(D&1){G=Rb()|0;H=Q;I=G}else{k[C>>2]=27560;G=q+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[q+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,C|0,d|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(d);Yua(G);Ava(C);H=K;I=J;break}Yua(d);B=0;J=Ia(40,q|0,74195,18)|0;K=B;B=0;a:do if(!(K&1)?(B=0,Xa(239,J|0,0)|0,L=B,B=0,!(L&1)):0){L=Ab(20)|0;B=0;eb(502,s|0,74107,73);M=B;B=0;do if(!(M&1)){B=0;eb(502,t|0,74235,18);N=B;B=0;if(N&1){N=Rb()|0;O=Q;Yua(s);P=N;R=O;break}B=0;wa(510,u|0,C|0);O=B;B=0;if(O&1){O=Rb()|0;S=Q;T=O;U=1}else{B=0;ua(163,L|0,s|0,t|0,257,u|0);O=B;B=0;if(O&1)V=1;else{B=0;eb(503,L|0,1240,229);B=0;V=0}O=Rb()|0;N=Q;Yua(u);S=N;T=O;U=V}Yua(t);Yua(s);if(U){P=T;R=S}else{W=T;X=S;break a}}else{O=Rb()|0;P=O;R=Q}while(0);zb(L|0);W=P;X=R}else Y=17;while(0);if((Y|0)==17){J=Rb()|0;W=J;X=Q}k[q>>2]=27468;k[e>>2]=27488;k[C>>2]=27560;Yua(G);Ava(C);vva(e);Z=X;_=W;Qb(_|0)}while(0);E=H;F=I;vva(e);Qb(F|0)}if((k[f>>2]|0)==542){dO(k[z>>2]|0,i,85);if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){if(!(k[b>>2]|0)){r=c;return}z=k[k[b+4>>2]>>2]|0;Jc[k[(k[z>>2]|0)+20>>2]&1](z,(k[a+8>>2]|0)+-1|0,0.0,0);r=c;return}z=a+32|0;+WJ(k[z>>2]|0,265);+WJ(k[z>>2]|0,65);Ko(g,k[a+24>>2]|0,6,0);k[h>>2]=k[g>>2];k[h+4>>2]=k[g+4>>2];k[h+8>>2]=k[g+8>>2];k[h+12>>2]=k[g+12>>2];k[h+16>>2]=k[g+16>>2];k[h+20>>2]=k[g+20>>2];z=h+24|0;f=g+24|0;k[z>>2]=k[f>>2];k[z+4>>2]=k[f+4>>2];k[z+8>>2]=k[f+8>>2];k[z+12>>2]=k[f+12>>2];k[z+16>>2]=k[f+16>>2];k[z+20>>2]=k[f+20>>2];f=h+48|0;z=g+48|0;k[f>>2]=k[z>>2];k[f+4>>2]=k[z+4>>2];k[f+8>>2]=k[z+8>>2];k[f+12>>2]=k[z+12>>2];k[f+16>>2]=k[z+16>>2];k[f+20>>2]=k[z+20>>2];z=oC(k[A>>2]|0,653)|0;f=oC(k[A>>2]|0,674)|0;F=oC(k[A>>2]|0,677)|0;e=oC(k[A>>2]|0,679)|0;A=Qqa(72)|0;B=0;ua(169,A|0,0,1,2,2);I=B;B=0;if(I&1){I=Rb()|0;H=Q;Sqa(A);Z=H;_=I;Qb(_|0)}I=Hc[k[(k[A>>2]|0)+8>>2]&511](A)|0;if((I|0)<(Hc[k[(k[A>>2]|0)+12>>2]&511](A)|0)){H=a+28|0;E=o+16|0;W=A+8|0;X=I;$=0.0;aa=0.0;while(1){Fc[k[(k[A>>2]|0)+24>>2]&1023](A,X);Yo(a,o,g,A,f,F,e);I=k[H>>2]|0;Tc[k[(k[I>>2]|0)+108>>2]&15](I,l,3,g,A,f,F,e);nd[k[(k[z>>2]|0)+48>>2]&1023](z,j,A);ba=+p[l>>3]*2.0*+p[E>>3]-+p[j>>3]*+p[i>>3];nd[k[(k[a>>2]|0)+380>>2]&1023](a,n,h);eC(a,m,h,A);ca=+p[m>>3];da=+p[W>>3];ea=aa+ba*ca*da;ba=$+ca*da;X=X+1|0;if((X|0)>=(Hc[k[(k[A>>2]|0)+12>>2]&511](A)|0)){fa=ba;ga=ea;break}else{$=ba;aa=ea}}}else{fa=0.0;ga=0.0}if(!(k[b>>2]|0)){r=c;return}A=k[k[b+4>>2]>>2]|0;Jc[k[(k[A>>2]|0)+20>>2]&1](A,(k[a+8>>2]|0)+-1|0,ga/fa,0);r=c;return}c=v+56|0;a=v+4|0;k[v>>2]=27524;k[c>>2]=27544;B=0;wa(508,v+56|0,a|0);A=B;B=0;if(A&1){A=Rb()|0;ha=Q;ia=A;vva(c);Qb(ia|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[c>>2]=27488;B=0;va(448,a|0);A=B;B=0;do if(A&1){b=Rb()|0;ja=Q;ka=b}else{k[a>>2]=27560;b=v+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[v+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,a|0,d|0);X=B;B=0;if(X&1){X=Rb()|0;W=Q;Yua(d);Yua(b);Ava(a);ja=W;ka=X;break}Yua(d);B=0;X=Ia(40,v|0,74195,18)|0;W=B;B=0;b:do if(!(W&1)?(B=0,Xa(239,X|0,0)|0,m=B,B=0,!(m&1)):0){m=Ab(20)|0;B=0;eb(502,w|0,74107,73);h=B;B=0;do if(!(h&1)){B=0;eb(502,x|0,74235,18);n=B;B=0;if(n&1){n=Rb()|0;i=Q;Yua(w);la=n;ma=i;break}B=0;wa(510,y|0,a|0);i=B;B=0;if(i&1){i=Rb()|0;na=1;oa=Q;pa=i}else{B=0;ua(163,m|0,w|0,x|0,258,y|0);i=B;B=0;if(i&1)qa=1;else{B=0;eb(503,m|0,1240,229);B=0;qa=0}i=Rb()|0;n=Q;Yua(y);na=qa;oa=n;pa=i}Yua(x);Yua(w);if(na){la=pa;ma=oa}else{ra=oa;sa=pa;break b}}else{i=Rb()|0;la=i;ma=Q}while(0);zb(m|0);ra=ma;sa=la}else Y=41;while(0);if((Y|0)==41){X=Rb()|0;ra=Q;sa=X}k[v>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(b);Ava(a);vva(c);Z=ra;_=sa;Qb(_|0)}while(0);ha=ja;ia=ka;vva(c);Qb(ia|0)}function Cz(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0;b=r;r=r+544|0;c=b+392|0;d=b+384|0;e=b+336|0;f=b+288|0;g=b+240|0;h=b+192|0;i=b+144|0;j=b+96|0;l=b+48|0;m=b;Ko(c,k[a+24>>2]|0,6,0);n=a+16|0;o=oC(k[n>>2]|0,674)|0;q=oC(k[n>>2]|0,677)|0;s=oC(k[n>>2]|0,679)|0;t=Qqa(72)|0;B=0;va(493,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Sqa(t);w=v;x=u;Qb(x|0)}u=a+28|0;v=e+8|0;y=e+16|0;z=e+24|0;A=e+32|0;C=e+40|0;D=0;do{Fc[k[(k[t>>2]|0)+28>>2]&1023](t,D);Yo(a,e,c,t,o,q,s);E=k[u>>2]|0;Tc[k[(k[E>>2]|0)+108>>2]&15](E,d,3,c,t,o,q,s);F=+p[d>>3]*2.0;G=F*+p[e>>3];p[f+(D<<3)>>3]=G;H=F*+p[v>>3];p[g+(D<<3)>>3]=H;I=F*+p[y>>3];p[h+(D<<3)>>3]=I;J=F*+p[z>>3];p[i+(D<<3)>>3]=J;K=F*+p[A>>3];p[j+(D<<3)>>3]=K;L=F*+p[C>>3];p[l+(D<<3)>>3]=L;F=+aa(+((L*(L*2.0)+(G*G+H*H+I*I+J*(J*2.0)+K*(K*2.0)))*.5));p[m+(D<<3)>>3]=F;D=D+1|0}while((D|0)!=6);D=k[n>>2]|0;C=Qqa(16)|0;B=0;ib(285,C|0,716,f|0,738);f=B;B=0;if(f&1){f=Rb()|0;A=Q;Sqa(C);w=A;x=f;Qb(x|0)}mC(D,C)|0;C=k[n>>2]|0;D=Qqa(16)|0;B=0;ib(285,D|0,717,i|0,738);i=B;B=0;if(i&1){i=Rb()|0;f=Q;Sqa(D);w=f;x=i;Qb(x|0)}mC(C,D)|0;D=k[n>>2]|0;C=Qqa(16)|0;B=0;ib(285,C|0,718,j|0,738);j=B;B=0;if(j&1){j=Rb()|0;i=Q;Sqa(C);w=i;x=j;Qb(x|0)}mC(D,C)|0;C=k[n>>2]|0;D=Qqa(16)|0;B=0;ib(285,D|0,719,g|0,738);g=B;B=0;if(g&1){g=Rb()|0;j=Q;Sqa(D);w=j;x=g;Qb(x|0)}mC(C,D)|0;D=k[n>>2]|0;C=Qqa(16)|0;B=0;ib(285,C|0,720,l|0,738);l=B;B=0;if(l&1){l=Rb()|0;g=Q;Sqa(C);w=g;x=l;Qb(x|0)}mC(D,C)|0;C=k[n>>2]|0;D=Qqa(16)|0;B=0;ib(285,D|0,721,h|0,738);h=B;B=0;if(h&1){h=Rb()|0;l=Q;Sqa(D);w=l;x=h;Qb(x|0)}mC(C,D)|0;D=k[n>>2]|0;n=Qqa(16)|0;B=0;ib(285,n|0,722,m|0,738);m=B;B=0;if(!(m&1)){mC(D,n)|0;Ec[k[(k[t>>2]|0)+4>>2]&1023](t);r=b;return}b=Rb()|0;t=Q;Sqa(n);w=t;x=b;Qb(x|0)}function Dz(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0;b=r;r=r+496|0;c=b+352|0;d=b+344|0;e=b+336|0;f=b+288|0;g=b+240|0;h=b+192|0;i=b+144|0;j=b+96|0;l=b+48|0;m=b;Ko(c,k[a+24>>2]|0,6,0);n=a+16|0;o=oC(k[n>>2]|0,653)|0;q=oC(k[n>>2]|0,674)|0;s=oC(k[n>>2]|0,677)|0;t=oC(k[n>>2]|0,679)|0;u=Qqa(72)|0;B=0;va(493,u|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Sqa(u);x=w;y=v;Qb(y|0)}v=a+28|0;w=f+8|0;z=f+16|0;A=f+24|0;C=f+32|0;D=f+40|0;E=0;do{Fc[k[(k[u>>2]|0)+28>>2]&1023](u,E);Yo(a,f,c,u,q,s,t);F=k[v>>2]|0;Tc[k[(k[F>>2]|0)+108>>2]&15](F,e,3,c,u,q,s,t);nd[k[(k[o>>2]|0)+48>>2]&1023](o,d,u);G=+p[e>>3]*2.0;H=+p[d>>3];p[g+(E<<3)>>3]=G*+p[f>>3]-H;p[h+(E<<3)>>3]=G*+p[w>>3]-H;p[i+(E<<3)>>3]=G*+p[z>>3]-H;p[j+(E<<3)>>3]=G*+p[A>>3];p[l+(E<<3)>>3]=G*+p[C>>3];p[m+(E<<3)>>3]=G*+p[D>>3];E=E+1|0}while((E|0)!=6);E=k[n>>2]|0;D=Qqa(16)|0;B=0;ib(285,D|0,708,g|0,738);g=B;B=0;if(g&1){g=Rb()|0;C=Q;Sqa(D);x=C;y=g;Qb(y|0)}mC(E,D)|0;D=k[n>>2]|0;E=Qqa(16)|0;B=0;ib(285,E|0,709,j|0,738);j=B;B=0;if(j&1){j=Rb()|0;g=Q;Sqa(E);x=g;y=j;Qb(y|0)}mC(D,E)|0;E=k[n>>2]|0;D=Qqa(16)|0;B=0;ib(285,D|0,710,l|0,738);l=B;B=0;if(l&1){l=Rb()|0;j=Q;Sqa(D);x=j;y=l;Qb(y|0)}mC(E,D)|0;D=k[n>>2]|0;E=Qqa(16)|0;B=0;ib(285,E|0,711,h|0,738);h=B;B=0;if(h&1){h=Rb()|0;l=Q;Sqa(E);x=l;y=h;Qb(y|0)}mC(D,E)|0;E=k[n>>2]|0;D=Qqa(16)|0;B=0;ib(285,D|0,712,m|0,738);m=B;B=0;if(m&1){m=Rb()|0;h=Q;Sqa(D);x=h;y=m;Qb(y|0)}mC(E,D)|0;D=k[n>>2]|0;n=Qqa(16)|0;B=0;ib(285,n|0,713,i|0,738);i=B;B=0;if(!(i&1)){mC(D,n)|0;Ec[k[(k[u>>2]|0)+4>>2]&1023](u);r=b;return}b=Rb()|0;u=Q;Sqa(n);x=u;y=b;Qb(y|0)}function Ez(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0;c=r;r=r+16|0;h=c;cO(g,h,482);i=k[h>>2]|0;k[a+44>>2]=k[(k[a+40>>2]|0)+(i<<2)>>2];j=a+52|0;l=k[(k[j>>2]|0)+(i<<2)>>2]|0;if(l)Ela(l,d);d=a+56|0;Ela(k[d>>2]|0,e);e=a+60|0;Ela(k[e>>2]|0,f);l=a+64|0;Ela(k[l>>2]|0,f);f=a+68|0;Ela(k[f>>2]|0,b);b=k[(k[j>>2]|0)+(k[h>>2]<<2)>>2]|0;if(!b)k[a+20>>2]=0;else{h=Gla(b)|0;k[a+20>>2]=h}h=Gla(k[d>>2]|0)|0;k[a+24>>2]=h;h=Fla(k[e>>2]|0)|0;k[a+28>>2]=h;h=Fla(k[l>>2]|0)|0;k[a+32>>2]=h;h=Gla(k[f>>2]|0)|0;k[a+72>>2]=h;k[a+36>>2]=g;wC(k[a+16>>2]|0,g);r=c;return}function Fz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;e=r;r=r+448|0;f=e+424|0;g=e+400|0;h=e;i=e+264|0;j=e+248|0;l=e+96|0;m=e+84|0;n=e+112|0;o=e+72|0;q=e+60|0;s=e+48|0;do if((c|0)!=215){t=k[a+16>>2]|0;if((c|0)==227){u=oC(t,225)|0;break}else{u=oC(t,c)|0;break}}else u=oC(k[a+16>>2]|0,214)|0;while(0);if(!u){t=i+56|0;v=i+4|0;k[i>>2]=27524;k[t>>2]=27544;B=0;wa(508,i+56|0,v|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;y=w;vva(t);Qb(y|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[t>>2]=27488;B=0;va(448,v|0);w=B;B=0;do if(w&1){z=Rb()|0;A=Q;C=z}else{k[v>>2]=27560;z=i+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[i+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,v|0,f|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(f);Yua(z);Ava(v);A=E;C=D;break}Yua(f);B=0;D=Ia(40,i|0,109148,6)|0;E=B;B=0;a:do if((((!(E&1)?(B=0,F=ya(427,c|0)|0,G=B,B=0,!(G&1)):0)?(G=Lta(F)|0,B=0,H=Ia(40,D|0,F|0,G|0)|0,G=B,B=0,!(G&1)):0)?(B=0,G=Ia(40,H|0,114879,10)|0,H=B,B=0,!(H&1)):0)?(B=0,Xa(239,G|0,0)|0,G=B,B=0,!(G&1)):0){G=Ab(20)|0;B=0;eb(502,j|0,74107,73);H=B;B=0;do if(!(H&1)){B=0;eb(502,l|0,74254,23);F=B;B=0;if(F&1){F=Rb()|0;I=Q;Yua(j);J=F;K=I;break}B=0;wa(510,m|0,v|0);I=B;B=0;if(I&1){I=Rb()|0;L=Q;M=I;N=1}else{B=0;ua(163,G|0,j|0,l|0,480,m|0);I=B;B=0;if(I&1)O=1;else{B=0;eb(503,G|0,1240,229);B=0;O=0}I=Rb()|0;F=Q;Yua(m);L=F;M=I;N=O}Yua(l);Yua(j);if(N){J=M;K=L}else{P=M;R=L;break a}}else{I=Rb()|0;J=I;K=Q}while(0);zb(G|0);P=J;R=K}else S=25;while(0);if((S|0)==25){D=Rb()|0;P=D;R=Q}k[i>>2]=27468;k[t>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(t);T=R;U=P;Qb(U|0)}while(0);x=A;y=C;vva(t);Qb(y|0)}if((Hc[k[(k[u>>2]|0)+20>>2]&511](u)|0)==559){Mp(a,g,d,0);p[h>>3]=+p[b+(k[g>>2]<<3)>>3];p[h+8>>3]=+p[b+(k[g+4>>2]<<3)>>3];p[h+16>>3]=+p[b+(k[g+8>>2]<<3)>>3];p[h+24>>3]=+p[b+(k[g+12>>2]<<3)>>3];p[h+32>>3]=+p[b+(k[g+16>>2]<<3)>>3];p[h+40>>3]=+p[b+(k[g+20>>2]<<3)>>3];g=Qqa(16)|0;B=0;ib(285,g|0,941,h|0,738);h=B;B=0;if(!(h&1)){q$(u,g);r=e;return}e=Rb()|0;u=Q;Sqa(g);T=u;U=e;Qb(U|0)}e=n+56|0;u=n+4|0;k[n>>2]=27524;k[e>>2]=27544;B=0;wa(508,n+56|0,u|0);g=B;B=0;if(g&1){g=Rb()|0;V=Q;W=g;vva(e);Qb(W|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[e>>2]=27488;B=0;va(448,u|0);g=B;B=0;do if(g&1){h=Rb()|0;X=Q;Y=h}else{k[u>>2]=27560;h=n+36|0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,u|0,f|0);b=B;B=0;if(b&1){b=Rb()|0;d=Q;Yua(f);Yua(h);Ava(u);X=d;Y=b;break}Yua(f);B=0;b=Ia(40,n|0,109148,6)|0;d=B;B=0;b:do if((((!(d&1)?(B=0,a=ya(427,c|0)|0,y=B,B=0,!(y&1)):0)?(y=Lta(a)|0,B=0,t=Ia(40,b|0,a|0,y|0)|0,y=B,B=0,!(y&1)):0)?(B=0,y=Ia(40,t|0,74278,22)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,y|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,o|0,74107,73);t=B;B=0;do if(!(t&1)){B=0;eb(502,q|0,74254,23);a=B;B=0;if(a&1){a=Rb()|0;C=Q;Yua(o);Z=a;_=C;break}B=0;wa(510,s|0,u|0);C=B;B=0;if(C&1){C=Rb()|0;$=1;aa=Q;ba=C}else{B=0;ua(163,y|0,o|0,q|0,481,s|0);C=B;B=0;if(C&1)ca=1;else{B=0;eb(503,y|0,1240,229);B=0;ca=0}C=Rb()|0;a=Q;Yua(s);$=ca;aa=a;ba=C}Yua(q);Yua(o);if($){Z=ba;_=aa}else{da=aa;ea=ba;break b}}else{C=Rb()|0;Z=C;_=Q}while(0);zb(y|0);da=_;ea=Z}else S=52;while(0);if((S|0)==52){b=Rb()|0;da=Q;ea=b}k[n>>2]=27468;k[e>>2]=27488;k[u>>2]=27560;Yua(h);Ava(u);vva(e);T=da;U=ea;Qb(U|0)}while(0);V=X;W=Y;vva(e);Qb(W|0)}function Gz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0.0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0;e=r;r=r+512|0;f=e+488|0;g=e+352|0;h=e+340|0;i=e+328|0;j=e+176|0;l=e+192|0;m=e+136|0;n=e+124|0;o=e+112|0;q=e+152|0;s=e+64|0;t=e+16|0;u=e+8|0;v=e;do if((d|0)!=215){w=k[a+16>>2]|0;if((d|0)==227){x=oC(w,225)|0;break}else{x=oC(w,d)|0;break}}else x=oC(k[a+16>>2]|0,214)|0;while(0);if(!x){w=g+56|0;y=g+4|0;k[g>>2]=27524;k[w>>2]=27544;B=0;wa(508,g+56|0,y|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;C=z;vva(w);Qb(C|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[w>>2]=27488;B=0;va(448,y|0);z=B;B=0;do if(z&1){D=Rb()|0;E=Q;F=D}else{k[y>>2]=27560;D=g+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,y|0,f|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(f);Yua(D);Ava(y);E=H;F=G;break}Yua(f);B=0;G=Ia(40,g|0,109148,6)|0;H=B;B=0;a:do if((((!(H&1)?(B=0,I=ya(427,d|0)|0,J=B,B=0,!(J&1)):0)?(J=Lta(I)|0,B=0,K=Ia(40,G|0,I|0,J|0)|0,J=B,B=0,!(J&1)):0)?(B=0,J=Ia(40,K|0,114879,10)|0,K=B,B=0,!(K&1)):0)?(B=0,Xa(239,J|0,0)|0,J=B,B=0,!(J&1)):0){J=Ab(20)|0;B=0;eb(502,h|0,74107,73);K=B;B=0;do if(!(K&1)){B=0;eb(502,i|0,74301,16);I=B;B=0;if(I&1){I=Rb()|0;L=Q;Yua(h);M=I;N=L;break}B=0;wa(510,j|0,y|0);L=B;B=0;if(L&1){L=Rb()|0;O=Q;P=L;R=1}else{B=0;ua(163,J|0,h|0,i|0,502,j|0);L=B;B=0;if(L&1)S=1;else{B=0;eb(503,J|0,1240,229);B=0;S=0}L=Rb()|0;I=Q;Yua(j);O=I;P=L;R=S}Yua(i);Yua(h);if(R){M=P;N=O}else{T=P;U=O;break a}}else{L=Rb()|0;M=L;N=Q}while(0);zb(J|0);T=M;U=N}else V=25;while(0);if((V|0)==25){G=Rb()|0;T=G;U=Q}k[g>>2]=27468;k[w>>2]=27488;k[y>>2]=27560;Yua(D);Ava(y);vva(w);W=U;X=T;Qb(X|0)}while(0);A=E;C=F;vva(w);Qb(C|0)}if((Hc[k[(k[x>>2]|0)+20>>2]&511](x)|0)==559){Jp(a,q);Ip(a,f);a=Qqa(72)|0;B=0;va(493,a|0);C=B;B=0;if(C&1){C=Rb()|0;w=Q;Sqa(a);W=w;X=C;Qb(X|0)}C=0;do{Fc[k[(k[a>>2]|0)+28>>2]&1023](a,C);nd[k[(k[x>>2]|0)+48>>2]&1023](x,u,a);C$(x,v,a);Y=+(k[q+(C<<2)>>2]|0);p[s+(C<<3)>>3]=+p[u>>3]/Y;p[t+(C<<3)>>3]=+p[v>>3]/Y;C=C+1|0}while((C|0)!=6);Ec[k[(k[a>>2]|0)+4>>2]&1023](a);if(k[b>>2]|0){a=k[k[b+4>>2]>>2]|0;Dc[k[(k[a>>2]|0)+16>>2]&255](a,6,f,s,1)}if(!(k[c>>2]|0)){r=e;return}s=k[k[c+4>>2]>>2]|0;Dc[k[(k[s>>2]|0)+16>>2]&255](s,6,f,t,1);r=e;return}e=l+56|0;t=l+4|0;k[l>>2]=27524;k[e>>2]=27544;B=0;wa(508,l+56|0,t|0);s=B;B=0;if(s&1){s=Rb()|0;Z=Q;_=s;vva(e);Qb(_|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[e>>2]=27488;B=0;va(448,t|0);s=B;B=0;do if(s&1){c=Rb()|0;$=Q;aa=c}else{k[t>>2]=27560;c=l+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[l+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,t|0,f|0);a=B;B=0;if(a&1){a=Rb()|0;b=Q;Yua(f);Yua(c);Ava(t);$=b;aa=a;break}Yua(f);B=0;a=Ia(40,l|0,109148,6)|0;b=B;B=0;b:do if((((!(b&1)?(B=0,C=ya(427,d|0)|0,v=B,B=0,!(v&1)):0)?(v=Lta(C)|0,B=0,u=Ia(40,a|0,C|0,v|0)|0,v=B,B=0,!(v&1)):0)?(B=0,v=Ia(40,u|0,74278,22)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,m|0,74107,73);u=B;B=0;do if(!(u&1)){B=0;eb(502,n|0,74301,16);C=B;B=0;if(C&1){C=Rb()|0;q=Q;Yua(m);ba=C;ca=q;break}B=0;wa(510,o|0,t|0);q=B;B=0;if(q&1){q=Rb()|0;da=1;ea=Q;fa=q}else{B=0;ua(163,v|0,m|0,n|0,503,o|0);q=B;B=0;if(q&1)ga=1;else{B=0;eb(503,v|0,1240,229);B=0;ga=0}q=Rb()|0;C=Q;Yua(o);da=ga;ea=C;fa=q}Yua(n);Yua(m);if(da){ba=fa;ca=ea}else{ha=ea;ia=fa;break b}}else{q=Rb()|0;ba=q;ca=Q}while(0);zb(v|0);ha=ca;ia=ba}else V=52;while(0);if((V|0)==52){a=Rb()|0;ha=Q;ia=a}k[l>>2]=27468;k[e>>2]=27488;k[t>>2]=27560;Yua(c);Ava(t);vva(e);W=ha;X=ia;Qb(X|0)}while(0);Z=$;_=aa;vva(e);Qb(_|0)}function Hz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0.0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;e=d;f=d+40|0;g=d+176|0;h=d+24|0;i=d+12|0;switch(c|0){case 215:{j=k[a+28>>2]|0;l=+Zc[k[(k[j>>2]|0)+52>>2]&255](j);p[b>>3]=l;r=d;return}case 227:{j=k[a+28>>2]|0;l=+Zc[k[(k[j>>2]|0)+60>>2]&255](j);p[b>>3]=l;r=d;return}case 671:{j=oC(k[a+16>>2]|0,671)|0;Fc[k[(k[j>>2]|0)+64>>2]&1023](j,e);p[b>>3]=+p[e>>3];r=d;return}default:{d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);j=B;B=0;if(j&1){j=Rb()|0;m=Q;n=j;vva(d);Qb(n|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);j=B;B=0;do if(j&1){a=Rb()|0;o=Q;q=a}else{k[b>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(e);Yua(a);Ava(b);o=t;q=s;break}Yua(e);B=0;s=Ia(40,f|0,74318,14)|0;t=B;B=0;if((((!(t&1)?(B=0,t=ya(427,c|0)|0,u=B,B=0,!(u&1)):0)?(u=Lta(t)|0,B=0,v=Ia(40,s|0,t|0,u|0)|0,u=B,B=0,!(u&1)):0)?(B=0,u=Ia(40,v|0,146956,19)|0,v=B,B=0,!(v&1)):0)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,g|0,74107,73);v=B;B=0;do if(!(v&1)){B=0;eb(502,h|0,74333,15);t=B;B=0;if(t&1){t=Rb()|0;s=Q;Yua(g);w=s;x=t;break}B=0;wa(510,i|0,b|0);t=B;B=0;if(t&1){t=Rb()|0;y=Q;z=t;A=1}else{B=0;ua(163,u|0,g|0,h|0,554,i|0);t=B;B=0;if(t&1)C=1;else{B=0;eb(503,u|0,1240,229);B=0;C=0}t=Rb()|0;s=Q;Yua(i);y=s;z=t;A=C}Yua(h);Yua(g);if(A){w=y;x=z}else{D=y;E=z;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(E|0)}}else{t=Rb()|0;w=Q;x=t}while(0);zb(u|0);D=w;E=x;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(E|0)}v=Rb()|0;D=Q;E=v;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(E|0)}while(0);m=o;n=q;vva(d);Qb(n|0)}}}function Iz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0.0,h=0.0,i=0.0,j=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0;e=r;r=r+144|0;f=e;Ko(f,k[a+24>>2]|0,6,0);g=+p[f>>3];h=+p[f+8>>3];i=+p[f+16>>3];j=+p[f+24>>3];l=j<g?j:g;m=j>g?j:g;g=+p[f+32>>3];j=g<h?g:h;n=g>h?g:h;h=+p[f+40>>3];g=h<i?h:i;o=h>i?h:i;i=+p[f+48>>3];h=i<l?i:l;l=i>m?i:m;m=+p[f+56>>3];i=m<j?m:j;j=m>n?m:n;n=+p[f+64>>3];m=n<g?n:g;g=n>o?n:o;o=+p[f+72>>3];n=o<h?o:h;h=o>l?o:l;l=+p[f+80>>3];o=l<i?l:i;i=l>j?l:j;j=+p[f+88>>3];l=j<m?j:m;m=j>g?j:g;g=+p[f+96>>3];j=g<n?g:n;n=g>h?g:h;h=+p[f+104>>3];g=h<o?h:o;o=h>i?h:i;i=+p[f+112>>3];h=i<l?i:l;l=i>m?i:m;m=+p[f+120>>3];i=+p[f+128>>3];q=+p[f+136>>3];p[b>>3]=(m>n?m:n)-(m<j?m:j);p[c>>3]=(i>o?i:o)-(i<g?i:g);p[d>>3]=(q>l?q:l)-(q<h?q:h);r=e;return}function Jz(a){a=a|0;return k[a+44>>2]|0}function Kz(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0.0,l=0.0,m=0.0,n=0.0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;b=r;r=r+336|0;c=b+324|0;d=b+320|0;e=b;f=b+184|0;g=b+168|0;h=b+156|0;i=b+144|0;if(!($p(a)|0)){j=0.0;r=b;return +j}if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){j=0.0;r=b;return +j}cp(a,d,298);if((k[d>>2]|0)==302){Ko(e,k[a+24>>2]|0,6,0);l=+id[k[(k[a>>2]|0)+136>>2]&63](a,e);m=+p[e>>3];n=+p[e+8>>3];j=(1.0-l)*(+$(+((m-+p[e+48>>3])*(+p[e+32>>3]-n)-(m-+p[e+24>>3])*(+p[e+56>>3]-n)))*.5);r=b;return +j}b=f+56|0;e=f+4|0;k[f>>2]=27524;k[b>>2]=27544;B=0;wa(508,f+56|0,e|0);a=B;B=0;if(a&1){a=Rb()|0;o=Q;q=a;vva(b);Qb(q|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[b>>2]=27488;B=0;va(448,e|0);a=B;B=0;do if(a&1){s=Rb()|0;t=Q;u=s}else{k[e>>2]=27560;s=f+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,e|0,c|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);Yua(s);Ava(e);t=w;u=v;break}Yua(c);B=0;v=Ia(40,f|0,144639,5)|0;w=B;B=0;if((((!(w&1)?(B=0,w=ya(427,k[d>>2]|0)|0,x=B,B=0,!(x&1)):0)?(x=Lta(w)|0,B=0,y=Ia(40,v|0,w|0,x|0)|0,x=B,B=0,!(x&1)):0)?(B=0,x=Ia(40,y|0,146481,18)|0,y=B,B=0,!(y&1)):0)?(B=0,Xa(239,x|0,0)|0,x=B,B=0,!(x&1)):0){x=Ab(20)|0;B=0;eb(502,g|0,74107,73);y=B;B=0;do if(!(y&1)){B=0;eb(502,h|0,103020,12);w=B;B=0;if(w&1){w=Rb()|0;v=Q;Yua(g);z=v;A=w;break}B=0;wa(510,i|0,e|0);w=B;B=0;if(w&1){w=Rb()|0;C=Q;D=w;E=1}else{B=0;ua(163,x|0,g|0,h|0,600,i|0);w=B;B=0;if(w&1)F=1;else{B=0;eb(503,x|0,1240,229);B=0;F=0}w=Rb()|0;v=Q;Yua(i);C=v;D=w;E=F}Yua(h);Yua(g);if(E){z=C;A=D}else{G=C;H=D;k[f>>2]=27468;k[b>>2]=27488;k[e>>2]=27560;Yua(s);Ava(e);vva(b);Qb(H|0)}}else{w=Rb()|0;z=Q;A=w}while(0);zb(x|0);G=z;H=A;k[f>>2]=27468;k[b>>2]=27488;k[e>>2]=27560;Yua(s);Ava(e);vva(b);Qb(H|0)}y=Rb()|0;G=Q;H=y;k[f>>2]=27468;k[b>>2]=27488;k[e>>2]=27560;Yua(s);Ava(e);vva(b);Qb(H|0)}while(0);o=t;q=u;vva(b);Qb(q|0);return +(0.0)}function Lz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0;d=r;r=r+112|0;e=d+108|0;f=d+104|0;g=d+96|0;h=d+88|0;i=d+80|0;j=d+72|0;l=d+48|0;m=d;if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){r=d;return}n=a+16|0;kC(k[n>>2]|0,e,533);switch(k[e>>2]|0){case 536:case 537:case 540:{e=a+24|0;o=c+4|0;q=b+4|0;s=0;do{t=Co(k[(k[e>>2]|0)+(s<<2)>>2]|0)|0;if(k[b>>2]|0){u=k[k[q>>2]>>2]|0;Jc[k[(k[u>>2]|0)+20>>2]&1](u,t,9999.0,0)}t=Co(k[(k[e>>2]|0)+(s<<2)>>2]|0)|0;if(k[c>>2]|0){u=k[k[o>>2]>>2]|0;Jc[k[(k[u>>2]|0)+20>>2]&1](u,t,9999.0,0)}s=s+1|0}while((s|0)!=6);break}default:{k[f>>2]=0;Uo(a,f);s=oC(k[n>>2]|0,653)|0;o=oC(k[n>>2]|0,64)|0;e=oC(k[n>>2]|0,63)|0;q=oC(k[n>>2]|0,674)|0;t=oC(k[n>>2]|0,677)|0;u=oC(k[n>>2]|0,679)|0;n=ed[k[(k[a>>2]|0)+324>>2]&511](a,1)|0;Fc[k[(k[n>>2]|0)+24>>2]&1023](n,0);if(_p(a)|0){nd[k[(k[o>>2]|0)+48>>2]&1023](o,j,n);nd[k[(k[e>>2]|0)+48>>2]&1023](e,i,n);e=a+24|0;if(+p[j>>3]<+p[i>>3]){v=e;w=13}else{x=e;w=12}}else{Yo(a,m,k[f>>2]|0,n,q,t,u);e=k[a+28>>2]|0;Tc[k[(k[e>>2]|0)+108>>2]&15](e,h,3,k[f>>2]|0,n,q,t,u);nd[k[(k[s>>2]|0)+48>>2]&1023](s,g,n);nd[k[(k[o>>2]|0)+48>>2]&1023](o,j,n);y=+p[h>>3]*2.0;z=+p[g>>3];A=y*+p[m>>3]-z;B=y*+p[m+8>>3]-z;C=y*+p[m+16>>3]-z;z=y*+p[m+24>>3];D=y*+p[m+32>>3];E=y*+p[m+40>>3];nd[k[(k[a>>2]|0)+380>>2]&1023](a,l,k[f>>2]|0);y=+p[l>>3];F=+p[l+8>>3];G=+p[l+16>>3];l=a+32|0;+WJ(k[l>>2]|0,265);H=+WJ(k[l>>2]|0,266);I=H*+WJ(k[l>>2]|0,65);l=a+24|0;if(E*2.0*F*G+(D*2.0*y*G+(z*2.0*y*F+(y*(A*y)+F*(B*F)+G*(C*G))))<I*+p[j>>3]){v=l;w=13}else{x=l;w=12}}if((w|0)==12){l=c+4|0;j=Co(k[k[x>>2]>>2]|0)|0;if(k[c>>2]|0){a=k[k[l>>2]>>2]|0;Jc[k[(k[a>>2]|0)+20>>2]&1](a,j,1.0,0)}j=Co(k[(k[x>>2]|0)+4>>2]|0)|0;if(k[c>>2]|0){a=k[k[l>>2]>>2]|0;Jc[k[(k[a>>2]|0)+20>>2]&1](a,j,1.0,0)}j=Co(k[(k[x>>2]|0)+8>>2]|0)|0;if(k[c>>2]|0){a=k[k[l>>2]>>2]|0;Jc[k[(k[a>>2]|0)+20>>2]&1](a,j,1.0,0)}j=Co(k[(k[x>>2]|0)+12>>2]|0)|0;if(k[c>>2]|0){a=k[k[l>>2]>>2]|0;Jc[k[(k[a>>2]|0)+20>>2]&1](a,j,1.0,0)}j=Co(k[(k[x>>2]|0)+16>>2]|0)|0;if(k[c>>2]|0){a=k[k[l>>2]>>2]|0;Jc[k[(k[a>>2]|0)+20>>2]&1](a,j,1.0,0)}j=Co(k[(k[x>>2]|0)+20>>2]|0)|0;if(k[c>>2]|0){c=k[k[l>>2]>>2]|0;Jc[k[(k[c>>2]|0)+20>>2]&1](c,j,1.0,0)}}else if((w|0)==13){w=b+4|0;j=Co(k[k[v>>2]>>2]|0)|0;if(k[b>>2]|0){c=k[k[w>>2]>>2]|0;Jc[k[(k[c>>2]|0)+20>>2]&1](c,j,1.0,0)}j=Co(k[(k[v>>2]|0)+4>>2]|0)|0;if(k[b>>2]|0){c=k[k[w>>2]>>2]|0;Jc[k[(k[c>>2]|0)+20>>2]&1](c,j,1.0,0)}j=Co(k[(k[v>>2]|0)+8>>2]|0)|0;if(k[b>>2]|0){c=k[k[w>>2]>>2]|0;Jc[k[(k[c>>2]|0)+20>>2]&1](c,j,1.0,0)}j=Co(k[(k[v>>2]|0)+12>>2]|0)|0;if(k[b>>2]|0){c=k[k[w>>2]>>2]|0;Jc[k[(k[c>>2]|0)+20>>2]&1](c,j,1.0,0)}j=Co(k[(k[v>>2]|0)+16>>2]|0)|0;if(k[b>>2]|0){c=k[k[w>>2]>>2]|0;Jc[k[(k[c>>2]|0)+20>>2]&1](c,j,1.0,0)}j=Co(k[(k[v>>2]|0)+20>>2]|0)|0;if(k[b>>2]|0){b=k[k[w>>2]>>2]|0;Jc[k[(k[b>>2]|0)+20>>2]&1](b,j,1.0,0)}}if(n)Ec[k[(k[n>>2]|0)+4>>2]&1023](n);n=k[f>>2]|0;if(n)Tqa(n)}}r=d;return}function Mz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0.0,i=0.0,j=0.0,l=0,m=0.0,n=0.0,o=0.0,q=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0;a=r;r=r+80|0;f=a;g=d+24|0;h=+p[g>>3];i=+p[d+56>>3];j=+p[d+32>>3];l=d+48|0;m=+p[l>>3];n=+p[d>>3];o=+p[d+8>>3];q=+$(+(m*o+(h*i-j*m+j*n-h*o)-i*n));k[f>>2]=k[d>>2];k[f+4>>2]=k[d+4>>2];k[f+8>>2]=k[d+8>>2];k[f+12>>2]=k[d+12>>2];k[f+16>>2]=k[d+16>>2];k[f+20>>2]=k[d+20>>2];s=f+24|0;k[s>>2]=k[g>>2];k[s+4>>2]=k[g+4>>2];k[s+8>>2]=k[g+8>>2];k[s+12>>2]=k[g+12>>2];k[s+16>>2]=k[g+16>>2];k[s+20>>2]=k[g+20>>2];t=f+48|0;k[t>>2]=k[l>>2];k[t+4>>2]=k[l+4>>2];k[t+8>>2]=k[l+8>>2];k[t+12>>2]=k[l+12>>2];k[t+16>>2]=k[l+16>>2];k[t+20>>2]=k[l+20>>2];n=q*.5;if((e|0)<=0){r=a;return}u=f+56|0;v=f+32|0;w=f+8|0;q=+p[s>>3];i=+p[v>>3];x=0;do{y=x*3|0;z=c+(y<<3)|0;A=b+(y<<3)|0;k[f>>2]=k[z>>2];k[f+4>>2]=k[z+4>>2];k[f+8>>2]=k[z+8>>2];k[f+12>>2]=k[z+12>>2];k[f+16>>2]=k[z+16>>2];k[f+20>>2]=k[z+20>>2];o=+p[u>>3];h=+p[t>>3];j=+p[f>>3];m=+p[w>>3];B=+$(+(h*m+(q*o-i*h+i*j-q*m)-o*j))*.5/n;p[A>>3]=B;k[f>>2]=k[d>>2];k[f+4>>2]=k[d+4>>2];k[f+8>>2]=k[d+8>>2];k[f+12>>2]=k[d+12>>2];k[f+16>>2]=k[d+16>>2];k[f+20>>2]=k[d+20>>2];k[s>>2]=k[z>>2];k[s+4>>2]=k[z+4>>2];k[s+8>>2]=k[z+8>>2];k[s+12>>2]=k[z+12>>2];k[s+16>>2]=k[z+16>>2];k[s+20>>2]=k[z+20>>2];B=+p[s>>3];j=+p[v>>3];m=+p[f>>3];C=+p[w>>3];D=+$(+(h*C+(B*o-j*h+j*m-B*C)-o*m))*.5/n;p[A+8>>3]=D;k[s>>2]=k[g>>2];k[s+4>>2]=k[g+4>>2];k[s+8>>2]=k[g+8>>2];k[s+12>>2]=k[g+12>>2];k[s+16>>2]=k[g+16>>2];k[s+20>>2]=k[g+20>>2];k[t>>2]=k[z>>2];k[t+4>>2]=k[z+4>>2];k[t+8>>2]=k[z+8>>2];k[t+12>>2]=k[z+12>>2];k[t+16>>2]=k[z+16>>2];k[t+20>>2]=k[z+20>>2];q=+p[s>>3];D=+p[u>>3];i=+p[v>>3];o=+p[t>>3];B=+$(+(o*C+(q*D-i*o+i*m-q*C)-D*m))*.5/n;p[A+16>>3]=B;k[t>>2]=k[l>>2];k[t+4>>2]=k[l+4>>2];k[t+8>>2]=k[l+8>>2];k[t+12>>2]=k[l+12>>2];k[t+16>>2]=k[l+16>>2];k[t+20>>2]=k[l+20>>2];x=x+1|0}while((x|0)!=(e|0));r=a;return}function Nz(a){a=a|0;var b=0,c=0;if(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0){b=a;return b|0}else c=a;while(1){a=k[k[c+72>>2]>>2]|0;if(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0){b=a;break}else c=a}return b|0}function Oz(a){a=a|0;return k[a+44>>2]|0}function Pz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0.0,j=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,s=0,t=0;f=r;r=r+48|0;g=f;xp(a,g,928);h=+p[g>>3];if(h==0.0){j=h+1.0e-15;p[g>>3]=j;l=j}else l=h;a=g+8|0;h=+p[a>>3];if(h==0.0){j=h+1.0e-15;p[a>>3]=j;m=j}else m=h;a=g+16|0;h=+p[a>>3];if(h==0.0){j=h+1.0e-15;p[a>>3]=j;n=j}else n=h;do if(!(l>0.0&m>0.0&n>0.0))if(!(l<0.0&m<0.0&n<0.0)){h=l*m;a=!(h*n<0.0);if(h>0.0){o=n/(n-l);q=n/(n-m);s=a;t=2;break}if(m*n>0.0){o=l/(l-m);q=l/(l-n);s=a;t=0;break}if(l*n>0.0){o=m/(m-n);q=m/(m-l);s=a;t=1}else{o=0.0;q=0.0;s=a;t=0}}else{o=0.0;q=0.0;s=1;t=0}else{o=1.0;q=1.0;s=1;t=0}while(0);k[b>>2]=t;p[c>>3]=o;p[d>>3]=q;i[e>>0]=s&1;r=f;return}function Qz(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0.0,o=0.0,q=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;c=r;r=r+336|0;d=c+312|0;e=c+128|0;f=c+120|0;g=c+72|0;h=c;i=c+176|0;j=c+160|0;l=c+148|0;m=c+136|0;xp(a,g,928);n=+p[g>>3];if(n==0.0){o=n+1.0e-15;p[g>>3]=o;q=o}else q=n;s=g+8|0;n=+p[s>>3];if(n==0.0){o=n+1.0e-15;p[s>>3]=o;t=o}else t=n;s=g+16|0;n=+p[s>>3];if(n==0.0){o=n+1.0e-15;p[s>>3]=o;u=o}else u=n;if(!(q>0.0&t>0.0&u>0.0))if(q<0.0&t<0.0&u<0.0)v=0.0;else{n=q*t;s=!(n*u>0.0);do if(!(n>0.0)){if(t*u>0.0){o=+p[b>>3];p[h>>3]=o;w=+p[b+8>>3];p[h+8>>3]=w;x=+p[b+16>>3];p[h+16>>3]=x;y=q/(q-t);z=q/(q-u);p[h+24>>3]=o+y*(+p[b+24>>3]-o);p[h+32>>3]=w+y*(+p[b+32>>3]-w);p[h+40>>3]=x+y*(+p[b+40>>3]-x);p[h+48>>3]=o+z*(+p[b+48>>3]-o);p[h+56>>3]=w+z*(+p[b+56>>3]-w);p[h+64>>3]=x+z*(+p[b+64>>3]-x);A=h;break}if(q*u>0.0){x=+p[b+24>>3];p[h+24>>3]=x;z=+p[b+32>>3];p[h+32>>3]=z;w=+p[b+40>>3];p[h+40>>3]=w;o=t/(t-q);y=t/(t-u);p[h>>3]=x+o*(+p[b>>3]-x);p[h+8>>3]=z+o*(+p[b+8>>3]-z);p[h+16>>3]=w+o*(+p[b+16>>3]-w);p[h+48>>3]=x+y*(+p[b+48>>3]-x);p[h+56>>3]=z+y*(+p[b+56>>3]-z);p[h+64>>3]=w+y*(+p[b+64>>3]-w);A=h;break}else{A=h;break}}else{w=+p[b+48>>3];p[h+48>>3]=w;y=+p[b+56>>3];p[h+56>>3]=y;z=+p[b+64>>3];p[h+64>>3]=z;x=u/(u-t);o=u/(u-q);p[h+24>>3]=w+x*(+p[b+24>>3]-w);p[h+32>>3]=y+x*(+p[b+32>>3]-y);p[h+40>>3]=z+x*(+p[b+40>>3]-z);p[h>>3]=w+o*(+p[b>>3]-w);p[h+8>>3]=y+o*(+p[b+8>>3]-y);p[h+16>>3]=z+o*(+p[b+16>>3]-z);A=h}while(0);eC(a,e,b,0);eC(a,f,A,0);if(s){q=+p[e>>3];u=q-+p[f>>3];p[f>>3]=u;C=u;D=q}else{C=+p[f>>3];D=+p[e>>3]}v=C/D}else v=1.0;if(!(v>1.0|v<0.0)){r=c;return +v}c=i+56|0;e=i+4|0;k[i>>2]=27524;k[c>>2]=27544;B=0;wa(508,i+56|0,e|0);f=B;B=0;if(f&1){f=Rb()|0;E=Q;F=f;vva(c);Qb(F|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[c>>2]=27488;B=0;va(448,e|0);f=B;B=0;do if(f&1){s=Rb()|0;G=Q;H=s}else{k[e>>2]=27560;s=i+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,e|0,d|0);A=B;B=0;if(A&1){A=Rb()|0;a=Q;Yua(d);Yua(s);Ava(e);G=a;H=A;break}Yua(d);B=0;A=Ia(40,i|0,74349,80)|0;a=B;B=0;if(!(a&1)?(B=0,Xa(239,A|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,j|0,74107,73);a=B;B=0;do if(!(a&1)){B=0;eb(502,l|0,74430,18);b=B;B=0;if(b&1){b=Rb()|0;h=Q;Yua(j);I=h;J=b;break}B=0;wa(510,m|0,e|0);b=B;B=0;if(b&1){b=Rb()|0;K=Q;L=b;M=1}else{B=0;ua(163,A|0,j|0,l|0,913,m|0);b=B;B=0;if(b&1)N=1;else{B=0;eb(503,A|0,1240,229);B=0;N=0}b=Rb()|0;h=Q;Yua(m);K=h;L=b;M=N}Yua(l);Yua(j);if(M){I=K;J=L}else{O=K;P=L;k[i>>2]=27468;k[c>>2]=27488;k[e>>2]=27560;Yua(s);Ava(e);vva(c);Qb(P|0)}}else{b=Rb()|0;I=Q;J=b}while(0);zb(A|0);O=I;P=J;k[i>>2]=27468;k[c>>2]=27488;k[e>>2]=27560;Yua(s);Ava(e);vva(c);Qb(P|0)}a=Rb()|0;O=Q;P=a;k[i>>2]=27468;k[c>>2]=27488;k[e>>2]=27560;Yua(s);Ava(e);vva(c);Qb(P|0)}while(0);E=G;F=H;vva(c);Qb(F|0);return +(0.0)}function Rz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;e=r;r=r+48|0;f=e;xp(a,f,d);d=Rqa(24)|0;if(!(+p[f>>3]>=0.0))g=0;else{k[d>>2]=0;g=1}if(!(+p[f+8>>3]>=0.0))h=g;else{k[d+(g<<2)>>2]=1;h=g+1|0}if(!(+p[f+16>>3]>=0.0))i=h;else{k[d+(h<<2)>>2]=2;i=h+1|0}h=k[d>>2]|0;f=d+4|0;g=k[f>>2]|0;if(((h+3-g|0)%3|0|0)==2)j=h;else{k[d>>2]=g;k[f>>2]=h;j=g}g=i*6|0;h=Rqa(g>>>0>536870911?-1:g<<3)|0;if((i|0)<=0){k[b>>2]=h;Tqa(d);r=e;return}g=(i<<1)+-1|0;f=j;j=0;while(1){a=j*3|0;l=(g-j|0)*3|0;m=f*3|0;p[h+(a<<3)>>3]=+p[c+(m<<3)>>3];p[h+(l<<3)>>3]=+p[c+(m+9<<3)>>3];p[h+(a+1<<3)>>3]=+p[c+(m+1<<3)>>3];p[h+(l+1<<3)>>3]=+p[c+(m+10<<3)>>3];p[h+(a+2<<3)>>3]=+p[c+(m+2<<3)>>3];p[h+(l+2<<3)>>3]=+p[c+(m+11<<3)>>3];m=j+1|0;if((m|0)==(i|0))break;f=k[d+(m<<2)>>2]|0;j=m}k[b>>2]=h;Tqa(d);r=e;return}function Sz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;i=e+12|0;j=e;l=oC(k[a+16>>2]|0,d)|0;if(l){m=Qqa(72)|0;B=0;va(493,m|0);n=B;B=0;if(!(n&1)){n=k[(k[m>>2]|0)+28>>2]|0;o=ed[k[(k[a>>2]|0)+160>>2]&511](a,c)|0;Fc[n&1023](m,o);nd[k[(k[l>>2]|0)+48>>2]&1023](l,b,m);Ec[k[(k[m>>2]|0)+4>>2]&1023](m);r=e;return}e=Rb()|0;b=Q;Sqa(m);p=e;q=b;Qb(p|0)}b=g+56|0;e=g+4|0;k[g>>2]=27524;k[b>>2]=27544;B=0;wa(508,g+56|0,e|0);m=B;B=0;if(m&1){m=Rb()|0;s=Q;t=m;vva(b);Qb(t|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[b>>2]=27488;B=0;va(448,e|0);m=B;B=0;do if(m&1){l=Rb()|0;u=Q;v=l}else{k[e>>2]=27560;l=g+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,e|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;n=Q;Yua(f);Yua(l);Ava(e);u=n;v=o;break}Yua(f);B=0;o=Ia(40,g|0,74449,17)|0;n=B;B=0;a:do if((((!(n&1)?(B=0,c=ya(427,d|0)|0,a=B,B=0,!(a&1)):0)?(a=Lta(c)|0,B=0,w=Ia(40,o|0,c|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,a=Ia(40,w|0,74467,14)|0,w=B,B=0,!(w&1)):0)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,h|0,74107,73);w=B;B=0;do if(!(w&1)){B=0;eb(502,i|0,121355,13);c=B;B=0;if(c&1){c=Rb()|0;x=Q;Yua(h);y=c;z=x;break}B=0;wa(510,j|0,e|0);x=B;B=0;if(x&1){x=Rb()|0;A=x;C=Q;D=1}else{B=0;ua(163,a|0,h|0,i|0,963,j|0);x=B;B=0;if(x&1)E=1;else{B=0;eb(503,a|0,1240,229);B=0;E=0}x=Rb()|0;c=Q;Yua(j);A=x;C=c;D=E}Yua(i);Yua(h);if(D){y=A;z=C}else{F=A;G=C;break a}}else{c=Rb()|0;y=c;z=Q}while(0);zb(a|0);F=y;G=z}else H=20;while(0);if((H|0)==20){o=Rb()|0;F=o;G=Q}k[g>>2]=27468;k[b>>2]=27488;k[e>>2]=27560;Yua(l);Ava(e);vva(b);p=F;q=G;Qb(p|0)}while(0);s=u;t=v;vva(b);Qb(t|0)}function Tz(a,b){a=a|0;b=b|0;return k[(k[a+20>>2]|0)+(b<<2)>>2]|0}function Uz(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;i=XB(a,k[a+44>>2]|0)|0;a:do if((i|0)>0){j=k[a+20>>2]|0;l=0;while(1){if((k[j+(l<<2)>>2]|0)==(b|0)){m=l;break}l=l+1|0;if((l|0)>=(i|0))break a}r=c;return m|0}while(0);m=e+56|0;c=e+4|0;k[e>>2]=27524;k[m>>2]=27544;B=0;wa(508,e+56|0,c|0);i=B;B=0;if(i&1){i=Rb()|0;n=Q;o=i;vva(m);Qb(o|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[m>>2]=27488;B=0;va(448,c|0);i=B;B=0;do if(i&1){b=Rb()|0;p=Q;q=b}else{k[c>>2]=27560;b=e+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,c|0,d|0);a=B;B=0;if(a&1){a=Rb()|0;l=Q;Yua(d);Yua(b);Ava(c);p=l;q=a;break}Yua(d);B=0;a=Ia(40,e|0,74482,43)|0;l=B;B=0;if(!(l&1)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,f|0,74107,73);l=B;B=0;do if(!(l&1)){B=0;eb(502,g|0,74526,12);j=B;B=0;if(j&1){j=Rb()|0;s=Q;Yua(f);t=s;u=j;break}B=0;wa(510,h|0,c|0);j=B;B=0;if(j&1){j=Rb()|0;v=Q;w=j;x=1}else{B=0;ua(163,a|0,f|0,g|0,995,h|0);j=B;B=0;if(j&1)y=1;else{B=0;eb(503,a|0,1240,229);B=0;y=0}j=Rb()|0;s=Q;Yua(h);v=s;w=j;x=y}Yua(g);Yua(f);if(x){t=v;u=w}else{z=v;A=w;k[e>>2]=27468;k[m>>2]=27488;k[c>>2]=27560;Yua(b);Ava(c);vva(m);Qb(A|0)}}else{j=Rb()|0;t=Q;u=j}while(0);zb(a|0);z=t;A=u;k[e>>2]=27468;k[m>>2]=27488;k[c>>2]=27560;Yua(b);Ava(c);vva(m);Qb(A|0)}l=Rb()|0;z=Q;A=l;k[e>>2]=27468;k[m>>2]=27488;k[c>>2]=27560;Yua(b);Ava(c);vva(m);Qb(A|0)}while(0);n=p;o=q;vva(m);Qb(o|0);return 0}function Vz(a){a=a|0;return XB(a,k[a+44>>2]|0)|0}function Wz(a,b){a=a|0;b=b|0;return XB(a,b)|0}function Xz(a){a=a|0;return 6}function Yz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=r;r=r+64|0;e=d+56|0;f=d+8|0;g=d;k[e>>2]=0;rp(a,e,534,943);h=oC(k[a+16>>2]|0,c)|0;c=Qqa(72)|0;B=0;va(493,c|0);a=B;B=0;if(a&1){a=Rb()|0;Sqa(c);Qb(a|0)}Fc[k[(k[c>>2]|0)+28>>2]&1023](c,0);nd[k[(k[h>>2]|0)+48>>2]&1023](h,g,c);p[f>>3]=+p[g>>3];Fc[k[(k[c>>2]|0)+28>>2]&1023](c,1);nd[k[(k[h>>2]|0)+48>>2]&1023](h,g,c);p[f+8>>3]=+p[g>>3];Fc[k[(k[c>>2]|0)+28>>2]&1023](c,2);nd[k[(k[h>>2]|0)+48>>2]&1023](h,g,c);p[f+16>>3]=+p[g>>3];Fc[k[(k[c>>2]|0)+28>>2]&1023](c,3);nd[k[(k[h>>2]|0)+48>>2]&1023](h,g,c);p[f+24>>3]=+p[g>>3];Fc[k[(k[c>>2]|0)+28>>2]&1023](c,4);nd[k[(k[h>>2]|0)+48>>2]&1023](h,g,c);p[f+32>>3]=+p[g>>3];Fc[k[(k[c>>2]|0)+28>>2]&1023](c,5);nd[k[(k[h>>2]|0)+48>>2]&1023](h,g,c);p[f+40>>3]=+p[g>>3];if(k[b>>2]|0){g=k[k[b+4>>2]>>2]|0;Dc[k[(k[g>>2]|0)+16>>2]&255](g,6,k[e>>2]|0,f,0)}Ec[k[(k[c>>2]|0)+4>>2]&1023](c);c=k[e>>2]|0;if(!c){r=d;return}Tqa(c);r=d;return}function Zz(a){a=a|0;return k[(k[a+72>>2]|0)+4>>2]|0}function _z(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0;g=r;r=r+400|0;h=g+376|0;i=g+352|0;j=g+216|0;l=g+200|0;m=g+48|0;n=g+36|0;o=g+64|0;p=g+24|0;q=g+12|0;s=g;if(!(Tp(a,c)|0)){r=g;return}Mp(a,i,d,f);f=(c|0)==215?214:c;c=oC(k[a+16>>2]|0,f)|0;if(!c){a=j+56|0;d=j+4|0;k[j>>2]=27524;k[a>>2]=27544;B=0;wa(508,j+56|0,d|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;v=t;vva(a);Qb(v|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[a>>2]=27488;B=0;va(448,d|0);t=B;B=0;do if(t&1){w=Rb()|0;x=Q;y=w}else{k[d>>2]=27560;w=j+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[j+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,d|0,h|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(h);Yua(w);Ava(d);x=A;y=z;break}Yua(h);B=0;z=Ia(40,j|0,109148,6)|0;A=B;B=0;a:do if((((!(A&1)?(B=0,C=ya(427,f|0)|0,D=B,B=0,!(D&1)):0)?(D=Lta(C)|0,B=0,E=Ia(40,z|0,C|0,D|0)|0,D=B,B=0,!(D&1)):0)?(B=0,D=Ia(40,E|0,109155,21)|0,E=B,B=0,!(E&1)):0)?(B=0,Xa(239,D|0,0)|0,D=B,B=0,!(D&1)):0){D=Ab(20)|0;B=0;eb(502,l|0,74107,73);E=B;B=0;do if(!(E&1)){B=0;eb(502,m|0,74539,26);C=B;B=0;if(C&1){C=Rb()|0;F=Q;Yua(l);G=C;H=F;break}B=0;wa(510,n|0,d|0);F=B;B=0;if(F&1){F=Rb()|0;I=Q;J=F;K=1}else{B=0;ua(163,D|0,l|0,m|0,1090,n|0);F=B;B=0;if(F&1)L=1;else{B=0;eb(503,D|0,1240,229);B=0;L=0}F=Rb()|0;C=Q;Yua(n);I=C;J=F;K=L}Yua(m);Yua(l);if(K){G=J;H=I}else{M=J;N=I;break a}}else{F=Rb()|0;G=F;H=Q}while(0);zb(D|0);M=G;N=H}else O=21;while(0);if((O|0)==21){z=Rb()|0;M=z;N=Q}k[j>>2]=27468;k[a>>2]=27488;k[d>>2]=27560;Yua(w);Ava(d);vva(a);P=N;R=M;Qb(R|0)}while(0);u=x;v=y;vva(a);Qb(v|0)}if((Hc[k[(k[c>>2]|0)+20>>2]&511](c)|0)==559){w$(c,b,i,e);r=g;return}g=o+56|0;e=o+4|0;k[o>>2]=27524;k[g>>2]=27544;B=0;wa(508,o+56|0,e|0);i=B;B=0;if(i&1){i=Rb()|0;S=Q;T=i;vva(g);Qb(T|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[g>>2]=27488;B=0;va(448,e|0);i=B;B=0;do if(i&1){b=Rb()|0;U=Q;V=b}else{k[e>>2]=27560;b=o+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[o+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,e|0,h|0);c=B;B=0;if(c&1){c=Rb()|0;v=Q;Yua(h);Yua(b);Ava(e);U=v;V=c;break}Yua(h);B=0;c=Ia(40,o|0,74566,6)|0;v=B;B=0;b:do if((((!(v&1)?(B=0,a=ya(427,f|0)|0,y=B,B=0,!(y&1)):0)?(y=Lta(a)|0,B=0,x=Ia(40,c|0,a|0,y|0)|0,y=B,B=0,!(y&1)):0)?(B=0,y=Ia(40,x|0,74278,22)|0,x=B,B=0,!(x&1)):0)?(B=0,Xa(239,y|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,p|0,74107,73);x=B;B=0;do if(!(x&1)){B=0;eb(502,q|0,74539,26);a=B;B=0;if(a&1){a=Rb()|0;u=Q;Yua(p);W=a;X=u;break}B=0;wa(510,s|0,e|0);u=B;B=0;if(u&1){u=Rb()|0;Y=1;Z=Q;_=u}else{B=0;ua(163,y|0,p|0,q|0,1094,s|0);u=B;B=0;if(u&1)$=1;else{B=0;eb(503,y|0,1240,229);B=0;$=0}u=Rb()|0;a=Q;Yua(s);Y=$;Z=a;_=u}Yua(q);Yua(p);if(Y){W=_;X=Z}else{aa=Z;ba=_;break b}}else{u=Rb()|0;W=u;X=Q}while(0);zb(y|0);aa=X;ba=W}else O=48;while(0);if((O|0)==48){c=Rb()|0;aa=Q;ba=c}k[o>>2]=27468;k[g>>2]=27488;k[e>>2]=27560;Yua(b);Ava(e);vva(g);P=aa;R=ba;Qb(R|0)}while(0);S=U;T=V;vva(g);Qb(T|0)}function $z(a,b){a=a|0;b=b|0;var c=0;c=Rqa(72)|0;Ko(c,k[a+24>>2]|0,3,0);k[b>>2]=c;return}function aA(a,b){a=a|0;b=b|0;var c=0;c=Rqa(72)|0;Ko(c,(k[a+24>>2]|0)+12|0,3,0);k[b>>2]=c;return}function bA(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0.0,l=0.0,m=0.0,n=0.0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;b=r;r=r+336|0;c=b+324|0;d=b+320|0;e=b;f=b+184|0;g=b+168|0;h=b+156|0;i=b+144|0;if(!($p(a)|0)){j=0.0;r=b;return +j}if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){j=0.0;r=b;return +j}cp(a,d,298);if((k[d>>2]|0)==302){Ko(e,k[a+24>>2]|0,6,0);l=+id[k[(k[a>>2]|0)+136>>2]&63](a,e);m=+p[e>>3];n=+p[e+8>>3];j=l*(+$(+((m-+p[e+48>>3])*(+p[e+32>>3]-n)-(m-+p[e+24>>3])*(+p[e+56>>3]-n)))*.5);r=b;return +j}b=f+56|0;e=f+4|0;k[f>>2]=27524;k[b>>2]=27544;B=0;wa(508,f+56|0,e|0);a=B;B=0;if(a&1){a=Rb()|0;o=Q;q=a;vva(b);Qb(q|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[b>>2]=27488;B=0;va(448,e|0);a=B;B=0;do if(a&1){s=Rb()|0;t=Q;u=s}else{k[e>>2]=27560;s=f+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,e|0,c|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);Yua(s);Ava(e);t=w;u=v;break}Yua(c);B=0;v=Ia(40,f|0,144639,5)|0;w=B;B=0;if((((!(w&1)?(B=0,w=ya(427,k[d>>2]|0)|0,x=B,B=0,!(x&1)):0)?(x=Lta(w)|0,B=0,y=Ia(40,v|0,w|0,x|0)|0,x=B,B=0,!(x&1)):0)?(B=0,x=Ia(40,y|0,146481,18)|0,y=B,B=0,!(y&1)):0)?(B=0,Xa(239,x|0,0)|0,x=B,B=0,!(x&1)):0){x=Ab(20)|0;B=0;eb(502,g|0,74107,73);y=B;B=0;do if(!(y&1)){B=0;eb(502,h|0,103033,12);w=B;B=0;if(w&1){w=Rb()|0;v=Q;Yua(g);z=v;A=w;break}B=0;wa(510,i|0,e|0);w=B;B=0;if(w&1){w=Rb()|0;C=Q;D=w;E=1}else{B=0;ua(163,x|0,g|0,h|0,1129,i|0);w=B;B=0;if(w&1)F=1;else{B=0;eb(503,x|0,1240,229);B=0;F=0}w=Rb()|0;v=Q;Yua(i);C=v;D=w;E=F}Yua(h);Yua(g);if(E){z=C;A=D}else{G=C;H=D;k[f>>2]=27468;k[b>>2]=27488;k[e>>2]=27560;Yua(s);Ava(e);vva(b);Qb(H|0)}}else{w=Rb()|0;z=Q;A=w}while(0);zb(x|0);G=z;H=A;k[f>>2]=27468;k[b>>2]=27488;k[e>>2]=27560;Yua(s);Ava(e);vva(b);Qb(H|0)}y=Rb()|0;G=Q;H=y;k[f>>2]=27468;k[b>>2]=27488;k[e>>2]=27560;Yua(s);Ava(e);vva(b);Qb(H|0)}while(0);o=t;q=u;vva(b);Qb(q|0);return +(0.0)}function cA(a){a=a|0;var b=0.0,c=0.0;if(!($p(a)|0)){b=0.0;return +b}c=+WJ(k[a+32>>2]|0,265);b=c*+Zc[k[(k[a>>2]|0)+204>>2]&255](a);return +b}function dA(a){a=a|0;var b=0,c=0,d=0.0,e=0.0,f=0.0,g=0.0;b=r;r=r+144|0;c=b;if(!($p(a)|0)){d=0.0;r=b;return +d}Ko(c,k[a+24>>2]|0,6,0);e=+p[c>>3];f=+p[c+8>>3];g=+$(+((e-+p[c+48>>3])*(+p[c+32>>3]-f)-(e-+p[c+24>>3])*(+p[c+56>>3]-f)))*.5;d=g*((+p[c+88>>3]-+p[c+16>>3]+(+p[c+112>>3]-+p[c+40>>3])+(+p[c+136>>3]-+p[c+64>>3]))*.3333333333333333);r=b;return +d}function eA(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0.0,h=0,i=0.0,j=0.0,l=0.0,m=0.0,n=0.0,o=0;b=r;r=r+176|0;c=b+160|0;d=b+152|0;e=b+144|0;f=b;if(!($p(a)|0)){g=0.0;r=b;return +g}if(_p(a)|0){g=0.0;r=b;return +g}if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){g=0.0;r=b;return +g}h=a+32|0;i=+WJ(k[h>>2]|0,265);j=+WJ(k[h>>2]|0,266);Ko(f,k[a+24>>2]|0,6,0);l=+p[f>>3];m=+p[f+8>>3];n=+$(+((l-+p[f+48>>3])*(+p[f+32>>3]-m)-(l-+p[f+24>>3])*(+p[f+56>>3]-m)))*.5;f=a+16|0;a=oC(k[f>>2]|0,339)|0;h=oC(k[f>>2]|0,64)|0;o=oC(k[f>>2]|0,63)|0;Fc[k[(k[a>>2]|0)+64>>2]&1023](a,d);Fc[k[(k[h>>2]|0)+64>>2]&1023](h,c);Fc[k[(k[o>>2]|0)+64>>2]&1023](o,e);m=+p[d>>3]-+p[c>>3];g=n*(m+ +KY(j/i*+p[e>>3],0.0));r=b;return +g}function fA(a,b,c){a=a|0;b=+b;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;d=r;r=r+208|0;e=d+184|0;f=d+180|0;g=d+176|0;h=d+40|0;i=d+24|0;j=d+12|0;l=d;k[g>>2]=0;m=a+36|0;cO(k[m>>2]|0,f,198);hO(k[m>>2]|0,g,0,176);a:do if((k[f>>2]|0)>0){m=a+16|0;b:do if(c){n=0;while(1){o=k[(k[g>>2]|0)+(n<<2)>>2]|0;switch(o|0){case 215:{if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0))break a;p=oC(k[m>>2]|0,214)|0;break}case 227:{if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0))break a;p=oC(k[m>>2]|0,225)|0;break}default:p=oC(k[m>>2]|0,o)|0}if((Hc[k[(k[p>>2]|0)+20>>2]&511](p)|0)!=559){q=n;break b}F$(p,b);l$(p);s$(p);switch(k[(k[g>>2]|0)+(n<<2)>>2]|0){case 215:{nd[k[(k[a>>2]|0)+220>>2]&1023](a,214,-1);break}case 227:{nd[k[(k[a>>2]|0)+220>>2]&1023](a,225,-1);break}default:{}}n=n+1|0;if((n|0)>=(k[f>>2]|0))break a}}else{n=0;while(1){o=k[(k[g>>2]|0)+(n<<2)>>2]|0;switch(o|0){case 215:{if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0))break a;s=oC(k[m>>2]|0,214)|0;break}case 227:{if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0))break a;s=oC(k[m>>2]|0,225)|0;break}default:s=oC(k[m>>2]|0,o)|0}if((Hc[k[(k[s>>2]|0)+20>>2]&511](s)|0)!=559){q=n;break b}F$(s,b);l$(s);switch(k[(k[g>>2]|0)+(n<<2)>>2]|0){case 215:{nd[k[(k[a>>2]|0)+220>>2]&1023](a,214,-1);break}case 227:{nd[k[(k[a>>2]|0)+220>>2]&1023](a,225,-1);break}default:{}}n=n+1|0;if((n|0)>=(k[f>>2]|0))break a}}while(0);m=h+56|0;n=h+4|0;k[h>>2]=27524;k[m>>2]=27544;B=0;wa(508,h+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;t=Q;u=o;vva(m);Qb(u|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){v=Rb()|0;w=Q;x=v}else{k[n>>2]=27560;v=h+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[h+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,n|0,e|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(e);Yua(v);Ava(n);w=z;x=y;break}Yua(e);B=0;y=Ia(40,h|0,74566,6)|0;z=B;B=0;if((((!(z&1)?(B=0,z=ya(427,k[(k[g>>2]|0)+(q<<2)>>2]|0)|0,A=B,B=0,!(A&1)):0)?(A=Lta(z)|0,B=0,C=Ia(40,y|0,z|0,A|0)|0,A=B,B=0,!(A&1)):0)?(B=0,A=Ia(40,C|0,74278,22)|0,C=B,B=0,!(C&1)):0)?(B=0,Xa(239,A|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,i|0,74107,73);C=B;B=0;do if(!(C&1)){B=0;eb(502,j|0,74573,18);z=B;B=0;if(z&1){z=Rb()|0;y=Q;Yua(i);D=y;E=z;break}B=0;wa(510,l|0,n|0);z=B;B=0;if(z&1){z=Rb()|0;F=Q;G=z;H=1}else{B=0;ua(163,A|0,i|0,j|0,1227,l|0);z=B;B=0;if(z&1)I=1;else{B=0;eb(503,A|0,1240,229);B=0;I=0}z=Rb()|0;y=Q;Yua(l);F=y;G=z;H=I}Yua(j);Yua(i);if(H){D=F;E=G}else{J=F;K=G;k[h>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(v);Ava(n);vva(m);Qb(K|0)}}else{z=Rb()|0;D=Q;E=z}while(0);zb(A|0);J=D;K=E;k[h>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(v);Ava(n);vva(m);Qb(K|0)}C=Rb()|0;J=Q;K=C;k[h>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(v);Ava(n);vva(m);Qb(K|0)}while(0);t=w;u=x;vva(m);Qb(u|0)}while(0);u=k[g>>2]|0;if(!u){r=d;return}Tqa(u);r=d;return}function gA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0.0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0;d=r;r=r+656|0;e=d+640|0;f=d+144|0;g=d+96|0;h=d+48|0;i=d;j=d+504|0;l=d+488|0;m=d+336|0;n=d+324|0;o=d+352|0;q=d+312|0;s=d+300|0;t=d+288|0;u=h;v=u+48|0;do{k[u>>2]=0;u=u+4|0}while((u|0)<(v|0));if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){r=d;return}u=Qqa(16)|0;B=0;ib(285,u|0,353,h|0,738);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Sqa(u);x=w;y=v;Qb(y|0)}v=a+16|0;w=oC(k[v>>2]|0,b)|0;a:do if(w){z=f+88|0;A=f+16|0;C=g+24|0;D=f+112|0;E=f+40|0;F=g+8|0;G=g+32|0;H=f+136|0;I=f+64|0;J=g+16|0;K=g+40|0;L=i+24|0;M=w;N=a;O=0;P=0;b:while(1){do if(!O){if((Hc[k[(k[M>>2]|0)+20>>2]&511](M)|0)==626){R=Qqa(16)|0;B=0;ib(285,R|0,c|0,h|0,738);S=B;B=0;if(S&1){T=R;U=35;break b}V=R;break}if((Hc[k[(k[M>>2]|0)+20>>2]&511](M)|0)==559){R=Qqa(16)|0;B=0;ib(285,R|0,c|0,h|0,738);S=B;B=0;if(S&1){W=R;U=39;break b}V=R;break}if((Hc[k[(k[M>>2]|0)+20>>2]&511](M)|0)!=561){X=M;Y=M;U=44;break b}R=Qqa(16)|0;B=0;Oa(58,R|0,c|0,0.0);S=B;B=0;if(S&1){Z=R;U=43;break b}V=R}else V=P;while(0);Ko(f,k[N+24>>2]|0,6,0);_=+p[z>>3]-+p[A>>3];p[g>>3]=_;p[C>>3]=_;_=+p[D>>3]-+p[E>>3];p[F>>3]=_;p[G>>3]=_;_=+p[H>>3]-+p[I>>3];p[J>>3]=_;p[K>>3]=_;R=Qqa(16)|0;B=0;ib(285,R|0,353,g|0,738);S=B;B=0;if(S&1){$=R;U=77;break}do if((Hc[k[(k[M>>2]|0)+20>>2]&511](M)|0)==626){if((k[M+8>>2]|0)!=736){S=Hc[k[(k[M>>2]|0)+24>>2]&511](M)|0;Fc[k[(k[S>>2]|0)+132>>2]&1023](S,R);aa=S;break}Fc[k[(k[M>>2]|0)+44>>2]&1023](M,L);S=Qqa(16)|0;B=0;ba=ya(k[(k[M>>2]|0)+32>>2]|0,M|0)|0;ca=B;B=0;if(ca&1){da=S;U=78;break b}B=0;ib(285,S|0,ba|0,i|0,738);ba=B;B=0;if(ba&1){da=S;U=78;break b}Fc[k[(k[S>>2]|0)+132>>2]&1023](S,R);aa=S}else{S=Hc[k[(k[M>>2]|0)+24>>2]&511](M)|0;Fc[k[(k[S>>2]|0)+132>>2]&1023](S,R);aa=S}while(0);Xc[k[(k[V>>2]|0)+124>>2]&63](V,aa,1.0);Xc[k[(k[u>>2]|0)+124>>2]&63](u,R,1.0);Ec[k[(k[R>>2]|0)+4>>2]&1023](R);if(aa)Ec[k[(k[aa>>2]|0)+4>>2]&1023](aa);if(Hc[k[(k[N>>2]|0)+252>>2]&511](N)|0){ea=V;U=85;break}N=k[(k[N+72>>2]|0)+4>>2]|0;M=oC(k[N+16>>2]|0,b)|0;if(!M)break a;else{O=O+1|0;P=V}}if((U|0)==35){P=Rb()|0;O=Q;Sqa(T);x=O;y=P;Qb(y|0)}else if((U|0)==39){P=Rb()|0;O=Q;Sqa(W);x=O;y=P;Qb(y|0)}else if((U|0)==43){P=Rb()|0;O=Q;Sqa(Z);x=O;y=P;Qb(y|0)}else if((U|0)==44){P=o+56|0;O=o+4|0;k[o>>2]=27524;k[P>>2]=27544;B=0;wa(508,o+56|0,O|0);M=B;B=0;if(M&1){M=Rb()|0;fa=Q;ga=M;vva(P);Qb(ga|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[P>>2]=27488;B=0;va(448,O|0);M=B;B=0;do if(M&1){N=Rb()|0;ha=Q;ia=N}else{k[O>>2]=27560;N=o+36|0;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;k[o+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,O|0,e|0);L=B;B=0;if(L&1){L=Rb()|0;K=Q;Yua(e);Yua(N);Ava(O);ha=K;ia=L;break}Yua(e);B=0;L=Ia(40,o|0,74648,7)|0;K=B;B=0;c:do if(((((!(K&1)?(B=0,J=ya(k[(k[Y>>2]|0)+20>>2]|0,X|0)|0,I=B,B=0,!(I&1)):0)?(B=0,I=ya(427,J|0)|0,J=B,B=0,!(J&1)):0)?(J=Lta(I)|0,B=0,H=Ia(40,L|0,I|0,J|0)|0,J=B,B=0,!(J&1)):0)?(B=0,J=Ia(40,H|0,146481,18)|0,H=B,B=0,!(H&1)):0)?(B=0,Xa(239,J|0,0)|0,J=B,B=0,!(J&1)):0){J=Ab(20)|0;B=0;eb(502,q|0,74107,73);H=B;B=0;do if(!(H&1)){B=0;eb(502,s|0,74624,23);I=B;B=0;if(I&1){I=Rb()|0;G=Q;Yua(q);ja=I;ka=G;break}B=0;wa(510,t|0,O|0);G=B;B=0;if(G&1){G=Rb()|0;la=1;ma=Q;na=G}else{B=0;ua(163,J|0,q|0,s|0,1287,t|0);G=B;B=0;if(G&1)oa=1;else{B=0;eb(503,J|0,1240,229);B=0;oa=0}G=Rb()|0;I=Q;Yua(t);la=oa;ma=I;na=G}Yua(s);Yua(q);if(la){ja=na;ka=ma}else{pa=ma;qa=na;break c}}else{G=Rb()|0;ja=G;ka=Q}while(0);zb(J|0);pa=ka;qa=ja}else U=63;while(0);if((U|0)==63){L=Rb()|0;pa=Q;qa=L}k[o>>2]=27468;k[P>>2]=27488;k[O>>2]=27560;Yua(N);Ava(O);vva(P);x=pa;y=qa;Qb(y|0)}while(0);fa=ha;ga=ia;vva(P);Qb(ga|0)}else if((U|0)==77){O=Rb()|0;M=Q;Sqa($);x=M;y=O;Qb(y|0)}else if((U|0)==78){O=Rb()|0;M=Q;Sqa(da);x=M;y=O;Qb(y|0)}else if((U|0)==85){O=ed[k[(k[ea>>2]|0)+152>>2]&511](ea,u)|0;Fc[k[(k[O>>2]|0)+80>>2]&1023](O,c);Ec[k[(k[u>>2]|0)+4>>2]&1023](u);Ec[k[(k[ea>>2]|0)+4>>2]&1023](ea);mC(k[v>>2]|0,O)|0;r=d;return}}while(0);d=j+56|0;v=j+4|0;k[j>>2]=27524;k[d>>2]=27544;B=0;wa(508,j+56|0,v|0);ea=B;B=0;if(ea&1){ea=Rb()|0;ra=Q;sa=ea;vva(d);Qb(sa|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[d>>2]=27488;B=0;va(448,v|0);ea=B;B=0;do if(ea&1){u=Rb()|0;ta=Q;xa=u}else{k[v>>2]=27560;u=j+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[j+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,v|0,e|0);c=B;B=0;if(c&1){c=Rb()|0;da=Q;Yua(e);Yua(u);Ava(v);ta=da;xa=c;break}Yua(e);B=0;c=Ia(40,j|0,74592,31)|0;da=B;B=0;d:do if(((!(da&1)?(B=0,$=ya(427,b|0)|0,ga=B,B=0,!(ga&1)):0)?(ga=Lta($)|0,B=0,ia=Ia(40,c|0,$|0,ga|0)|0,ga=B,B=0,!(ga&1)):0)?(B=0,Xa(239,ia|0,0)|0,ia=B,B=0,!(ia&1)):0){ia=Ab(20)|0;B=0;eb(502,l|0,74107,73);ga=B;B=0;do if(!(ga&1)){B=0;eb(502,m|0,74624,23);$=B;B=0;if($&1){$=Rb()|0;ha=Q;Yua(l);za=$;Aa=ha;break}B=0;wa(510,n|0,v|0);ha=B;B=0;if(ha&1){ha=Rb()|0;Ba=Q;Ca=ha;Da=1}else{B=0;ua(163,ia|0,l|0,m|0,1276,n|0);ha=B;B=0;if(ha&1)Ea=1;else{B=0;eb(503,ia|0,1240,229);B=0;Ea=0}ha=Rb()|0;$=Q;Yua(n);Ba=$;Ca=ha;Da=Ea}Yua(m);Yua(l);if(Da){za=Ca;Aa=Ba}else{Fa=Ca;Ga=Ba;break d}}else{ha=Rb()|0;za=ha;Aa=Q}while(0);zb(ia|0);Fa=za;Ga=Aa}else U=23;while(0);if((U|0)==23){c=Rb()|0;Fa=c;Ga=Q}k[j>>2]=27468;k[d>>2]=27488;k[v>>2]=27560;Yua(u);Ava(v);vva(d);x=Ga;y=Fa;Qb(y|0)}while(0);ra=ta;sa=xa;vva(d);Qb(sa|0)}function hA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=(c|0)==-1;if(j)if(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)l=0;else{r=d;return}else if((c|0)==1)if(Hc[k[(k[a>>2]|0)+252>>2]&511](a)|0)l=1;else{r=d;return}else l=0;m=oC(k[a+16>>2]|0,b)|0;if(m){Fc[k[(k[m>>2]|0)+136>>2]&1023](m,c);if(j?Hc[k[(k[a>>2]|0)+252>>2]&511](a)|0:0){r=d;return}if(l?Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0:0){r=d;return}if(!j){if(l)n=a;else{j=a;while(1){c=k[k[j+72>>2]>>2]|0;o=Hc[k[(k[m>>2]|0)+24>>2]&511](m)|0;mC(k[c+16>>2]|0,o)|0;j=c}}do{n=k[k[n+72>>2]>>2]|0;j=Hc[k[(k[m>>2]|0)+24>>2]&511](m)|0;mC(k[n+16>>2]|0,j)|0}while(!(Hc[k[(k[n>>2]|0)+248>>2]&511](n)|0));r=d;return}if(l)p=a;else{l=a;do{l=k[(k[l+72>>2]|0)+4>>2]|0;a=Hc[k[(k[m>>2]|0)+24>>2]&511](m)|0;mC(k[l+16>>2]|0,a)|0}while(!(Hc[k[(k[l>>2]|0)+252>>2]&511](l)|0));r=d;return}while(1){p=k[(k[p+72>>2]|0)+4>>2]|0;l=Hc[k[(k[m>>2]|0)+24>>2]&511](m)|0;mC(k[p+16>>2]|0,l)|0;if(Hc[k[(k[p>>2]|0)+252>>2]&511](p)|0){q=43;break}if(Hc[k[(k[p>>2]|0)+248>>2]&511](p)|0){q=43;break}}if((q|0)==43){r=d;return}}d=f+56|0;q=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,q|0);p=B;B=0;if(p&1){p=Rb()|0;s=Q;t=p;vva(d);Qb(t|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,q|0);p=B;B=0;do if(p&1){m=Rb()|0;u=Q;v=m}else{k[q>>2]=27560;m=f+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,q|0,e|0);l=B;B=0;if(l&1){l=Rb()|0;a=Q;Yua(e);Yua(m);Ava(q);u=a;v=l;break}Yua(e);B=0;l=Ia(40,f|0,74592,31)|0;a=B;B=0;if(((!(a&1)?(B=0,a=ya(427,b|0)|0,n=B,B=0,!(n&1)):0)?(n=Lta(a)|0,B=0,j=Ia(40,l|0,a|0,n|0)|0,n=B,B=0,!(n&1)):0)?(B=0,Xa(239,j|0,0)|0,j=B,B=0,!(j&1)):0){j=Ab(20)|0;B=0;eb(502,g|0,74107,73);n=B;B=0;do if(!(n&1)){B=0;eb(502,h|0,74656,12);a=B;B=0;if(a&1){a=Rb()|0;l=Q;Yua(g);w=a;x=l;break}B=0;wa(510,i|0,q|0);l=B;B=0;if(l&1){l=Rb()|0;y=l;z=Q;A=1}else{B=0;ua(163,j|0,g|0,h|0,1357,i|0);l=B;B=0;if(l&1)C=1;else{B=0;eb(503,j|0,1240,229);B=0;C=0}l=Rb()|0;a=Q;Yua(i);y=l;z=a;A=C}Yua(h);Yua(g);if(A){w=y;x=z}else{D=y;E=z;k[f>>2]=27468;k[d>>2]=27488;k[q>>2]=27560;Yua(m);Ava(q);vva(d);Qb(D|0)}}else{a=Rb()|0;w=a;x=Q}while(0);zb(j|0);D=w;E=x;k[f>>2]=27468;k[d>>2]=27488;k[q>>2]=27560;Yua(m);Ava(q);vva(d);Qb(D|0)}n=Rb()|0;D=n;E=Q;k[f>>2]=27468;k[d>>2]=27488;k[q>>2]=27560;Yua(m);Ava(q);vva(d);Qb(D|0)}while(0);s=u;t=v;vva(d);Qb(t|0)}function iA(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=oC(k[a+16>>2]|0,b)|0;if(j){Cc[k[(k[j>>2]|0)+120>>2]&63](j,c);r=d;return}d=f+56|0;j=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,j|0);a=B;B=0;if(a&1){a=Rb()|0;l=Q;m=a;vva(d);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,j|0);a=B;B=0;do if(a&1){n=Rb()|0;o=Q;p=n}else{k[j>>2]=27560;n=f+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,j|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);Yua(n);Ava(j);o=s;p=q;break}Yua(e);B=0;q=Ia(40,f|0,74669,36)|0;s=B;B=0;if(((!(s&1)?(B=0,s=ya(427,b|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,g|0,74107,73);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,74706,10);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(g);v=q;w=s;break}B=0;wa(510,i|0,j|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,u|0,g|0,h|0,1388,i|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,u|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(i);x=q;y=s;z=A}Yua(h);Yua(g);if(z){v=x;w=y}else{C=x;D=y;k[f>>2]=27468;k[d>>2]=27488;k[j>>2]=27560;Yua(n);Ava(j);vva(d);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(u|0);C=v;D=w;k[f>>2]=27468;k[d>>2]=27488;k[j>>2]=27560;Yua(n);Ava(j);vva(d);Qb(D|0)}t=Rb()|0;C=Q;D=t;k[f>>2]=27468;k[d>>2]=27488;k[j>>2]=27560;Yua(n);Ava(j);vva(d);Qb(D|0)}while(0);l=o;m=p;vva(d);Qb(m|0)}function jA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0;d=r;r=r+384|0;e=d+368|0;f=d+344|0;g=d+104|0;h=d+56|0;j=d+8|0;l=d;m=d+380|0;n=d+336|0;o=d+332|0;q=d+328|0;s=d+192|0;t=d+176|0;u=d+164|0;v=d+152|0;k[n>>2]=0;Gka(c,l,106352);zka(c,m,139791);if((i[m>>0]|0)!=0?(Fka(c,o,113066),(i[m>>0]|0)!=0):0){Fka(c,q,113428);w=i[m>>0]|0}else w=0;x=b*6|0;y=k[c+72>>2]|0;k[f>>2]=k[y+(x<<2)>>2];z=f+4|0;k[z>>2]=k[y+((x|1)<<2)>>2];A=f+8|0;k[A>>2]=k[y+(x+2<<2)>>2];C=f+12|0;k[C>>2]=k[y+(x+3<<2)>>2];D=k[y+(x+4<<2)>>2]|0;E=f+16|0;k[E>>2]=D;F=k[y+(x+5<<2)>>2]|0;x=f+20|0;k[x>>2]=F;if(!(w<<24>>24)){G=D;H=F}else{Hka(c,n,0,113102);do if((k[o>>2]|0)>0){w=a+16|0;y=(k[f>>2]|0)+-1|0;I=(k[z>>2]|0)+-1|0;J=g+8|0;K=(k[A>>2]|0)+-1|0;L=g+16|0;M=(k[C>>2]|0)+-1|0;N=g+24|0;O=(k[E>>2]|0)+-1|0;P=g+32|0;R=(k[x>>2]|0)+-1|0;S=g+40|0;T=(k[f>>2]|0)+-1|0;U=(k[z>>2]|0)+-1|0;V=h+8|0;W=(k[A>>2]|0)+-1|0;X=h+16|0;Y=(k[C>>2]|0)+-1|0;Z=h+24|0;_=h+32|0;$=h+40|0;aa=j+8|0;ba=j+16|0;ca=j+24|0;da=k[E>>2]|0;ea=da+-1|0;fa=j+32|0;ga=k[x>>2]|0;ha=ga+-1|0;ia=j+40|0;ja=(k[f>>2]|0)+-1|0;ka=(k[z>>2]|0)+-1|0;la=g+8|0;na=(k[A>>2]|0)+-1|0;oa=g+16|0;pa=(k[C>>2]|0)+-1|0;qa=g+24|0;ra=(k[E>>2]|0)+-1|0;sa=g+32|0;ta=(k[x>>2]|0)+-1|0;xa=g+40|0;za=(k[f>>2]|0)+-1|0;Aa=(k[z>>2]|0)+-1|0;Ba=h+8|0;Ca=(k[A>>2]|0)+-1|0;Da=h+16|0;Ea=(k[C>>2]|0)+-1|0;Fa=h+24|0;Ga=(k[E>>2]|0)+-1|0;Ha=h+32|0;Ja=(k[x>>2]|0)+-1|0;Ka=h+40|0;La=(k[f>>2]|0)+-1|0;Ma=(k[z>>2]|0)+-1|0;Na=j+8|0;Oa=(k[A>>2]|0)+-1|0;Pa=j+16|0;Qa=(k[C>>2]|0)+-1|0;Ra=j+24|0;Sa=k[E>>2]|0;Ua=Sa+-1|0;Va=j+32|0;Wa=k[x>>2]|0;Ya=Wa+-1|0;Za=j+40|0;_a=(k[f>>2]|0)+-1|0;$a=(k[z>>2]|0)+-1|0;ab=g+8|0;bb=(k[A>>2]|0)+-1|0;cb=g+16|0;db=(k[C>>2]|0)+-1|0;fb=g+24|0;gb=(k[E>>2]|0)+-1|0;hb=g+32|0;jb=(k[x>>2]|0)+-1|0;kb=g+40|0;lb=(k[f>>2]|0)+-1|0;mb=(k[z>>2]|0)+-1|0;nb=h+8|0;ob=(k[A>>2]|0)+-1|0;pb=h+16|0;qb=(k[C>>2]|0)+-1|0;rb=h+24|0;sb=(k[E>>2]|0)+-1|0;tb=h+32|0;ub=(k[x>>2]|0)+-1|0;vb=h+40|0;wb=(k[f>>2]|0)+-1|0;xb=(k[z>>2]|0)+-1|0;yb=j+8|0;Bb=(k[A>>2]|0)+-1|0;Cb=j+16|0;Db=(k[C>>2]|0)+-1|0;Eb=j+24|0;Fb=k[E>>2]|0;Gb=Fb+-1|0;Hb=j+32|0;Ib=k[x>>2]|0;Jb=Ib+-1|0;Kb=j+40|0;Lb=(k[f>>2]|0)+-1|0;Mb=(k[z>>2]|0)+-1|0;Nb=g+8|0;Ob=(k[A>>2]|0)+-1|0;Pb=g+16|0;Sb=(k[C>>2]|0)+-1|0;Tb=g+24|0;Ub=(k[E>>2]|0)+-1|0;Vb=g+32|0;Wb=(k[x>>2]|0)+-1|0;Xb=g+40|0;Yb=(k[f>>2]|0)+-1|0;Zb=(k[z>>2]|0)+-1|0;_b=h+8|0;$b=(k[A>>2]|0)+-1|0;ac=h+16|0;bc=(k[C>>2]|0)+-1|0;cc=h+24|0;dc=(k[E>>2]|0)+-1|0;ec=h+32|0;fc=(k[x>>2]|0)+-1|0;gc=h+40|0;hc=(k[f>>2]|0)+-1|0;ic=(k[z>>2]|0)+-1|0;jc=j+8|0;kc=(k[A>>2]|0)+-1|0;lc=j+16|0;mc=(k[C>>2]|0)+-1|0;nc=j+24|0;oc=k[E>>2]|0;pc=oc+-1|0;qc=j+32|0;rc=k[x>>2]|0;sc=rc+-1|0;tc=j+40|0;uc=(k[f>>2]|0)+-1|0;vc=(k[z>>2]|0)+-1|0;wc=g+8|0;xc=(k[A>>2]|0)+-1|0;yc=g+16|0;zc=(k[C>>2]|0)+-1|0;Ac=g+24|0;Bc=(k[E>>2]|0)+-1|0;Cc=g+32|0;Dc=(k[x>>2]|0)+-1|0;Ec=g+40|0;Fc=(k[f>>2]|0)+-1|0;Gc=(k[z>>2]|0)+-1|0;Hc=h+8|0;Ic=(k[A>>2]|0)+-1|0;Jc=h+16|0;Kc=(k[C>>2]|0)+-1|0;Lc=h+24|0;Mc=(k[E>>2]|0)+-1|0;Nc=h+32|0;Oc=(k[x>>2]|0)+-1|0;Pc=h+40|0;Qc=(k[f>>2]|0)+-1|0;Rc=(k[z>>2]|0)+-1|0;Sc=j+8|0;Tc=(k[A>>2]|0)+-1|0;Uc=j+16|0;Vc=(k[C>>2]|0)+-1|0;Wc=j+24|0;Xc=k[E>>2]|0;Yc=Xc+-1|0;Zc=j+32|0;_c=k[x>>2]|0;$c=_c+-1|0;ad=j+40|0;bd=(k[f>>2]|0)+-1|0;cd=(k[z>>2]|0)+-1|0;dd=g+8|0;ed=(k[A>>2]|0)+-1|0;fd=g+16|0;gd=(k[C>>2]|0)+-1|0;hd=g+24|0;id=(k[E>>2]|0)+-1|0;jd=g+32|0;kd=(k[x>>2]|0)+-1|0;ld=g+40|0;md=(k[f>>2]|0)+-1|0;nd=(k[z>>2]|0)+-1|0;od=h+8|0;pd=(k[A>>2]|0)+-1|0;qd=h+16|0;rd=(k[C>>2]|0)+-1|0;sd=h+24|0;td=(k[E>>2]|0)+-1|0;ud=h+32|0;vd=(k[x>>2]|0)+-1|0;wd=h+40|0;xd=(k[f>>2]|0)+-1|0;yd=(k[z>>2]|0)+-1|0;zd=j+8|0;Ad=(k[A>>2]|0)+-1|0;Bd=j+16|0;Cd=(k[C>>2]|0)+-1|0;Dd=j+24|0;Ed=k[E>>2]|0;Fd=Ed+-1|0;Gd=j+32|0;Hd=k[x>>2]|0;Id=Hd+-1|0;Jd=j+40|0;Kd=F;Ld=D;Md=0;a:while(1){Nd=zY(k[(k[n>>2]|0)+(Md<<2)>>2]|0,1)|0;switch(Nd|0){case 36:{if(!(Jka(c,126035)|0)){Od=Kd;Pd=Ld}else{Qd=(Jka(c,126035)|0)+(y<<3)|0;p[g>>3]=+p[Qd>>3];Qd=(Jka(c,126035)|0)+(I<<3)|0;p[J>>3]=+p[Qd>>3];Qd=(Jka(c,126035)|0)+(K<<3)|0;p[L>>3]=+p[Qd>>3];Qd=(Jka(c,126035)|0)+(M<<3)|0;p[N>>3]=+p[Qd>>3];Qd=(Jka(c,126035)|0)+(O<<3)|0;p[P>>3]=+p[Qd>>3];Qd=(Jka(c,126035)|0)+(R<<3)|0;p[S>>3]=+p[Qd>>3];Qd=(ma(T,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113372)|0)+(Qd<<3)|0;p[h>>3]=+p[Rd>>3]/+p[l>>3];Rd=(ma(U,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113372)|0)+(Rd<<3)|0;p[V>>3]=+p[Qd>>3]/+p[l>>3];Qd=(ma(W,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113372)|0)+(Qd<<3)|0;p[X>>3]=+p[Rd>>3]/+p[l>>3];Rd=(ma(Y,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113372)|0)+(Rd<<3)|0;p[Z>>3]=+p[Qd>>3]/+p[l>>3];Qd=(ma(O,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113372)|0)+(Qd<<3)|0;p[_>>3]=+p[Rd>>3]/+p[l>>3];Rd=(ma(R,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113372)|0)+(Rd<<3)|0;p[$>>3]=+p[Qd>>3]/+p[l>>3];Qd=(ma(T,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113400)|0)+(Qd<<3)|0;p[j>>3]=+p[Rd>>3]/+p[l>>3];Rd=(ma(U,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113400)|0)+(Rd<<3)|0;p[aa>>3]=+p[Qd>>3]/+p[l>>3];Qd=(ma(W,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113400)|0)+(Qd<<3)|0;p[ba>>3]=+p[Rd>>3]/+p[l>>3];Rd=(ma(Y,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113400)|0)+(Rd<<3)|0;p[ca>>3]=+p[Qd>>3]/+p[l>>3];Qd=(ma(ea,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113400)|0)+(Qd<<3)|0;p[fa>>3]=+p[Rd>>3]/+p[l>>3];Rd=(ma(ha,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113400)|0)+(Rd<<3)|0;p[ia>>3]=+p[Qd>>3]/+p[l>>3];Qd=k[w>>2]|0;Rd=Qqa(32)|0;B=0;Ta(31,Rd|0,36,626,g|0,h|0,j|0,Md+1|0);Sd=B;B=0;if(Sd&1){Td=Rd;Ud=13;break a}mC(Qd,Rd)|0;Od=ga;Pd=da}break}case 674:{if(!(Jka(c,135923)|0)){Od=Kd;Pd=Ld}else{Rd=(Jka(c,135923)|0)+(ja<<3)|0;p[g>>3]=+p[Rd>>3];Rd=(Jka(c,135923)|0)+(ka<<3)|0;p[la>>3]=+p[Rd>>3];Rd=(Jka(c,135923)|0)+(na<<3)|0;p[oa>>3]=+p[Rd>>3];Rd=(Jka(c,135923)|0)+(pa<<3)|0;p[qa>>3]=+p[Rd>>3];Rd=(Jka(c,135923)|0)+(ra<<3)|0;p[sa>>3]=+p[Rd>>3];Rd=(Jka(c,135923)|0)+(ta<<3)|0;p[xa>>3]=+p[Rd>>3];Rd=(ma(za,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113372)|0)+(Rd<<3)|0;p[h>>3]=+p[Qd>>3]/+p[l>>3];Qd=(ma(Aa,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113372)|0)+(Qd<<3)|0;p[Ba>>3]=+p[Rd>>3]/+p[l>>3];Rd=(ma(Ca,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113372)|0)+(Rd<<3)|0;p[Da>>3]=+p[Qd>>3]/+p[l>>3];Qd=(ma(Ea,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113372)|0)+(Qd<<3)|0;p[Fa>>3]=+p[Rd>>3]/+p[l>>3];Rd=(ma(Ga,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113372)|0)+(Rd<<3)|0;p[Ha>>3]=+p[Qd>>3]/+p[l>>3];Qd=(ma(Ja,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113372)|0)+(Qd<<3)|0;p[Ka>>3]=+p[Rd>>3]/+p[l>>3];Rd=(ma(La,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113400)|0)+(Rd<<3)|0;p[j>>3]=+p[Qd>>3]/+p[l>>3];Qd=(ma(Ma,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113400)|0)+(Qd<<3)|0;p[Na>>3]=+p[Rd>>3]/+p[l>>3];Rd=(ma(Oa,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113400)|0)+(Rd<<3)|0;p[Pa>>3]=+p[Qd>>3]/+p[l>>3];Qd=(ma(Qa,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113400)|0)+(Qd<<3)|0;p[Ra>>3]=+p[Rd>>3]/+p[l>>3];Rd=(ma(Ua,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113400)|0)+(Rd<<3)|0;p[Va>>3]=+p[Qd>>3]/+p[l>>3];Qd=(ma(Ya,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113400)|0)+(Qd<<3)|0;p[Za>>3]=+p[Rd>>3]/+p[l>>3];Rd=k[w>>2]|0;Qd=Qqa(32)|0;B=0;Ta(31,Qd|0,674,626,g|0,h|0,j|0,Md+1|0);Sd=B;B=0;if(Sd&1){Vd=Qd;Ud=17;break a}mC(Rd,Qd)|0;Od=Wa;Pd=Sa}break}case 677:{if(!(Jka(c,135944)|0)){Od=Kd;Pd=Ld}else{Qd=(Jka(c,135944)|0)+(_a<<3)|0;p[g>>3]=+p[Qd>>3];Qd=(Jka(c,135944)|0)+($a<<3)|0;p[ab>>3]=+p[Qd>>3];Qd=(Jka(c,135944)|0)+(bb<<3)|0;p[cb>>3]=+p[Qd>>3];Qd=(Jka(c,135944)|0)+(db<<3)|0;p[fb>>3]=+p[Qd>>3];Qd=(Jka(c,135944)|0)+(gb<<3)|0;p[hb>>3]=+p[Qd>>3];Qd=(Jka(c,135944)|0)+(jb<<3)|0;p[kb>>3]=+p[Qd>>3];Qd=(ma(lb,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113372)|0)+(Qd<<3)|0;p[h>>3]=+p[Rd>>3]/+p[l>>3];Rd=(ma(mb,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113372)|0)+(Rd<<3)|0;p[nb>>3]=+p[Qd>>3]/+p[l>>3];Qd=(ma(ob,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113372)|0)+(Qd<<3)|0;p[pb>>3]=+p[Rd>>3]/+p[l>>3];Rd=(ma(qb,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113372)|0)+(Rd<<3)|0;p[rb>>3]=+p[Qd>>3]/+p[l>>3];Qd=(ma(sb,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113372)|0)+(Qd<<3)|0;p[tb>>3]=+p[Rd>>3]/+p[l>>3];Rd=(ma(ub,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113372)|0)+(Rd<<3)|0;p[vb>>3]=+p[Qd>>3]/+p[l>>3];Qd=(ma(wb,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113400)|0)+(Qd<<3)|0;p[j>>3]=+p[Rd>>3]/+p[l>>3];Rd=(ma(xb,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113400)|0)+(Rd<<3)|0;p[yb>>3]=+p[Qd>>3]/+p[l>>3];Qd=(ma(Bb,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113400)|0)+(Qd<<3)|0;p[Cb>>3]=+p[Rd>>3]/+p[l>>3];Rd=(ma(Db,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113400)|0)+(Rd<<3)|0;p[Eb>>3]=+p[Qd>>3]/+p[l>>3];Qd=(ma(Gb,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113400)|0)+(Qd<<3)|0;p[Hb>>3]=+p[Rd>>3]/+p[l>>3];Rd=(ma(Jb,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113400)|0)+(Rd<<3)|0;p[Kb>>3]=+p[Qd>>3]/+p[l>>3];Qd=k[w>>2]|0;Rd=Qqa(32)|0;B=0;Ta(31,Rd|0,677,626,g|0,h|0,j|0,Md+1|0);Sd=B;B=0;if(Sd&1){Wd=Rd;Ud=21;break a}mC(Qd,Rd)|0;Od=Ib;Pd=Fb}break}case 105:{if(!(Jka(c,135172)|0)){Od=Kd;Pd=Ld}else{Rd=(Jka(c,135172)|0)+(Lb<<3)|0;p[g>>3]=+p[Rd>>3];Rd=(Jka(c,135172)|0)+(Mb<<3)|0;p[Nb>>3]=+p[Rd>>3];Rd=(Jka(c,135172)|0)+(Ob<<3)|0;p[Pb>>3]=+p[Rd>>3];Rd=(Jka(c,135172)|0)+(Sb<<3)|0;p[Tb>>3]=+p[Rd>>3];Rd=(Jka(c,135172)|0)+(Ub<<3)|0;p[Vb>>3]=+p[Rd>>3];Rd=(Jka(c,135172)|0)+(Wb<<3)|0;p[Xb>>3]=+p[Rd>>3];Rd=(ma(Yb,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113372)|0)+(Rd<<3)|0;p[h>>3]=+p[Qd>>3];Qd=(ma(Zb,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113372)|0)+(Qd<<3)|0;p[_b>>3]=+p[Rd>>3];Rd=(ma($b,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113372)|0)+(Rd<<3)|0;p[ac>>3]=+p[Qd>>3];Qd=(ma(bc,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113372)|0)+(Qd<<3)|0;p[cc>>3]=+p[Rd>>3];Rd=(ma(dc,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113372)|0)+(Rd<<3)|0;p[ec>>3]=+p[Qd>>3];Qd=(ma(fc,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113372)|0)+(Qd<<3)|0;p[gc>>3]=+p[Rd>>3];Rd=(ma(hc,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113400)|0)+(Rd<<3)|0;p[j>>3]=+p[Qd>>3];Qd=(ma(ic,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113400)|0)+(Qd<<3)|0;p[jc>>3]=+p[Rd>>3];Rd=(ma(kc,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113400)|0)+(Rd<<3)|0;p[lc>>3]=+p[Qd>>3];Qd=(ma(mc,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113400)|0)+(Qd<<3)|0;p[nc>>3]=+p[Rd>>3];Rd=(ma(pc,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113400)|0)+(Rd<<3)|0;p[qc>>3]=+p[Qd>>3];Qd=(ma(sc,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113400)|0)+(Qd<<3)|0;p[tc>>3]=+p[Rd>>3];Rd=k[w>>2]|0;Qd=Qqa(32)|0;B=0;Ta(31,Qd|0,105,626,g|0,h|0,j|0,Md+1|0);Sd=B;B=0;if(Sd&1){Xd=Qd;Ud=25;break a}mC(Rd,Qd)|0;Od=rc;Pd=oc}break}case 215:{if(!(Jka(c,134991)|0)){Od=Kd;Pd=Ld}else{Qd=(Jka(c,134991)|0)+(uc<<3)|0;p[g>>3]=+p[Qd>>3];Qd=(Jka(c,134991)|0)+(vc<<3)|0;p[wc>>3]=+p[Qd>>3];Qd=(Jka(c,134991)|0)+(xc<<3)|0;p[yc>>3]=+p[Qd>>3];Qd=(Jka(c,134991)|0)+(zc<<3)|0;p[Ac>>3]=+p[Qd>>3];Qd=(Jka(c,134991)|0)+(Bc<<3)|0;p[Cc>>3]=+p[Qd>>3];Qd=(Jka(c,134991)|0)+(Dc<<3)|0;p[Ec>>3]=+p[Qd>>3];Qd=(ma(Fc,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113372)|0)+(Qd<<3)|0;p[h>>3]=+p[Rd>>3];Rd=(ma(Gc,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113372)|0)+(Rd<<3)|0;p[Hc>>3]=+p[Qd>>3];Qd=(ma(Ic,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113372)|0)+(Qd<<3)|0;p[Jc>>3]=+p[Rd>>3];Rd=(ma(Kc,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113372)|0)+(Rd<<3)|0;p[Lc>>3]=+p[Qd>>3];Qd=(ma(Mc,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113372)|0)+(Qd<<3)|0;p[Nc>>3]=+p[Rd>>3];Rd=(ma(Oc,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113372)|0)+(Rd<<3)|0;p[Pc>>3]=+p[Qd>>3];Qd=(ma(Qc,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113400)|0)+(Qd<<3)|0;p[j>>3]=+p[Rd>>3];Rd=(ma(Rc,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113400)|0)+(Rd<<3)|0;p[Sc>>3]=+p[Qd>>3];Qd=(ma(Tc,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113400)|0)+(Qd<<3)|0;p[Uc>>3]=+p[Rd>>3];Rd=(ma(Vc,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113400)|0)+(Rd<<3)|0;p[Wc>>3]=+p[Qd>>3];Qd=(ma(Yc,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113400)|0)+(Qd<<3)|0;p[Zc>>3]=+p[Rd>>3];Rd=(ma($c,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113400)|0)+(Rd<<3)|0;p[ad>>3]=+p[Qd>>3];Qd=k[w>>2]|0;Rd=Qqa(32)|0;B=0;Ta(31,Rd|0,214,626,g|0,h|0,j|0,Md+1|0);Sd=B;B=0;if(Sd&1){Yd=Rd;Ud=29;break a}mC(Qd,Rd)|0;Od=_c;Pd=Xc}break}case 227:{if(!(Jka(c,126277)|0)){Od=Kd;Pd=Ld}else{Rd=(Jka(c,126277)|0)+(bd<<3)|0;p[g>>3]=+p[Rd>>3];Rd=(Jka(c,126277)|0)+(cd<<3)|0;p[dd>>3]=+p[Rd>>3];Rd=(Jka(c,126277)|0)+(ed<<3)|0;p[fd>>3]=+p[Rd>>3];Rd=(Jka(c,126277)|0)+(gd<<3)|0;p[hd>>3]=+p[Rd>>3];Rd=(Jka(c,126277)|0)+(id<<3)|0;p[jd>>3]=+p[Rd>>3];Rd=(Jka(c,126277)|0)+(kd<<3)|0;p[ld>>3]=+p[Rd>>3];Rd=(ma(md,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113372)|0)+(Rd<<3)|0;p[h>>3]=+p[Qd>>3];Qd=(ma(nd,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113372)|0)+(Qd<<3)|0;p[od>>3]=+p[Rd>>3];Rd=(ma(pd,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113372)|0)+(Rd<<3)|0;p[qd>>3]=+p[Qd>>3];Qd=(ma(rd,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113372)|0)+(Qd<<3)|0;p[sd>>3]=+p[Rd>>3];Rd=(ma(td,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113372)|0)+(Rd<<3)|0;p[ud>>3]=+p[Qd>>3];Qd=(ma(vd,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113372)|0)+(Qd<<3)|0;p[wd>>3]=+p[Rd>>3];Rd=(ma(xd,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113400)|0)+(Rd<<3)|0;p[j>>3]=+p[Qd>>3];Qd=(ma(yd,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113400)|0)+(Qd<<3)|0;p[zd>>3]=+p[Rd>>3];Rd=(ma(Ad,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113400)|0)+(Rd<<3)|0;p[Bd>>3]=+p[Qd>>3];Qd=(ma(Cd,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113400)|0)+(Qd<<3)|0;p[Dd>>3]=+p[Rd>>3];Rd=(ma(Fd,k[o>>2]|0)|0)+Md|0;Qd=(Jka(c,113400)|0)+(Rd<<3)|0;p[Gd>>3]=+p[Qd>>3];Qd=(ma(Id,k[o>>2]|0)|0)+Md|0;Rd=(Jka(c,113400)|0)+(Qd<<3)|0;p[Jd>>3]=+p[Rd>>3];Rd=k[w>>2]|0;Qd=Qqa(32)|0;B=0;Ta(31,Qd|0,225,626,g|0,h|0,j|0,Md+1|0);Sd=B;B=0;if(Sd&1){Zd=Qd;Ud=33;break a}mC(Rd,Qd)|0;Od=Hd;Pd=Ed}break}default:{_d=Nd;Ud=34;break a}}Md=Md+1|0;Nd=k[o>>2]|0;if((Md|0)>=(Nd|0)){$d=Od;ae=Pd;be=Nd;Ud=8;break}else{Kd=Od;Ld=Pd}}if((Ud|0)==8){Ld=k[n>>2]|0;if((be|0)>0){ce=Ld;de=be;ee=0}else{fe=Ld;ge=ae;he=$d;break}while(1){Ld=ce+(ee<<2)|0;Kd=k[Ld>>2]|0;if(!Kd)ie=de;else{Tqa(Kd);ie=k[o>>2]|0}k[Ld>>2]=0;ee=ee+1|0;Ld=k[n>>2]|0;if((ee|0)>=(ie|0)){fe=Ld;ge=ae;he=$d;break}else{ce=Ld;de=ie}}}else if((Ud|0)==13){Ld=Rb()|0;Kd=Q;Sqa(Td);je=Kd;ke=Ld;Qb(ke|0)}else if((Ud|0)==17){Ld=Rb()|0;Kd=Q;Sqa(Vd);je=Kd;ke=Ld;Qb(ke|0)}else if((Ud|0)==21){Ld=Rb()|0;Kd=Q;Sqa(Wd);je=Kd;ke=Ld;Qb(ke|0)}else if((Ud|0)==25){Ld=Rb()|0;Kd=Q;Sqa(Xd);je=Kd;ke=Ld;Qb(ke|0)}else if((Ud|0)==29){Ld=Rb()|0;Kd=Q;Sqa(Yd);je=Kd;ke=Ld;Qb(ke|0)}else if((Ud|0)==33){Ld=Rb()|0;Kd=Q;Sqa(Zd);je=Kd;ke=Ld;Qb(ke|0)}else if((Ud|0)==34){Ld=s+56|0;Kd=s+4|0;k[s>>2]=27524;k[Ld>>2]=27544;B=0;wa(508,s+56|0,Kd|0);Md=B;B=0;if(Md&1){Md=Rb()|0;le=Q;me=Md;vva(Ld);Qb(me|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[Ld>>2]=27488;B=0;va(448,Kd|0);Md=B;B=0;do if(Md&1){Ed=Rb()|0;ne=Q;oe=Ed}else{k[Kd>>2]=27560;Ed=s+36|0;k[Ed>>2]=0;k[Ed+4>>2]=0;k[Ed+8>>2]=0;k[Ed+12>>2]=0;k[s+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,Kd|0,e|0);Hd=B;B=0;if(Hd&1){Hd=Rb()|0;w=Q;Yua(e);Yua(Ed);Ava(Kd);ne=w;oe=Hd;break}Yua(e);B=0;Hd=Ia(40,s|0,125582,8)|0;w=B;B=0;b:do if((((!(w&1)?(B=0,Jd=ya(427,_d|0)|0,Id=B,B=0,!(Id&1)):0)?(Id=Lta(Jd)|0,B=0,Gd=Ia(40,Hd|0,Jd|0,Id|0)|0,Id=B,B=0,!(Id&1)):0)?(B=0,Id=Ia(40,Gd|0,127493,20)|0,Gd=B,B=0,!(Gd&1)):0)?(B=0,Xa(239,Id|0,0)|0,Id=B,B=0,!(Id&1)):0){Id=Ab(20)|0;B=0;eb(502,t|0,74107,73);Gd=B;B=0;do if(!(Gd&1)){B=0;eb(502,u|0,144327,22);Jd=B;B=0;if(Jd&1){Jd=Rb()|0;Fd=Q;Yua(t);pe=Fd;qe=Jd;break}B=0;wa(510,v|0,Kd|0);Jd=B;B=0;if(Jd&1){Jd=Rb()|0;re=Q;se=Jd;te=1}else{B=0;ua(163,Id|0,t|0,u|0,1476,v|0);Jd=B;B=0;if(Jd&1)ue=1;else{B=0;eb(503,Id|0,1240,229);B=0;ue=0}Jd=Rb()|0;Fd=Q;Yua(v);re=Fd;se=Jd;te=ue}Yua(u);Yua(t);if(te){pe=re;qe=se}else{ve=re;we=se;break b}}else{Jd=Rb()|0;pe=Q;qe=Jd}while(0);zb(Id|0);ve=pe;we=qe}else Ud=52;while(0);if((Ud|0)==52){Hd=Rb()|0;ve=Q;we=Hd}k[s>>2]=27468;k[Ld>>2]=27488;k[Kd>>2]=27560;Yua(Ed);Ava(Kd);vva(Ld);je=ve;ke=we;Qb(ke|0)}while(0);le=ne;me=oe;vva(Ld);Qb(me|0)}}else{fe=k[n>>2]|0;ge=D;he=F}while(0);if(fe)Tqa(fe);k[n>>2]=0;G=ge;H=he}do if(Jka(c,129145)|0){he=k[a+16>>2]|0;ge=Qqa(12)|0;B=0;n=Xa(246,c|0,129145)|0;fe=B;B=0;if(!(fe&1)?(B=0,eb(508,ge|0,533,~~+p[n+(b<<3)>>3]|0),n=B,B=0,!(n&1)):0){mC(he,ge)|0;break}he=Rb()|0;n=Q;Sqa(ge);je=n;ke=he;Qb(ke|0)}while(0);if(!(i[m>>0]|0)){r=d;return}if(!(Jka(c,113331)|0)){r=d;return}m=Qqa(20)|0;B=0;wa(516,m|0,179);b=B;B=0;if(b&1){b=Rb()|0;he=Q;Sqa(m);je=he;ke=b;Qb(ke|0)}b=k[q>>2]|0;c:do if((b|0)>0){he=(k[f>>2]|0)+-1|0;n=(k[z>>2]|0)+-1|0;ge=g+8|0;fe=(k[A>>2]|0)+-1|0;F=g+16|0;D=(k[C>>2]|0)+-1|0;me=g+24|0;oe=G+-1|0;ne=g+32|0;le=H+-1|0;we=g+40|0;ve=b;s=0;while(1){Ud=(ma(he,ve)|0)+s|0;qe=(Jka(c,113331)|0)+(Ud<<3)|0;p[g>>3]=+p[qe>>3];qe=(ma(n,k[q>>2]|0)|0)+s|0;Ud=(Jka(c,113331)|0)+(qe<<3)|0;p[ge>>3]=+p[Ud>>3];Ud=(ma(fe,k[q>>2]|0)|0)+s|0;qe=(Jka(c,113331)|0)+(Ud<<3)|0;p[F>>3]=+p[qe>>3];qe=(ma(D,k[q>>2]|0)|0)+s|0;Ud=(Jka(c,113331)|0)+(qe<<3)|0;p[me>>3]=+p[Ud>>3];Ud=(ma(oe,k[q>>2]|0)|0)+s|0;qe=(Jka(c,113331)|0)+(Ud<<3)|0;p[ne>>3]=+p[qe>>3];qe=(ma(le,k[q>>2]|0)|0)+s|0;Ud=(Jka(c,113331)|0)+(qe<<3)|0;p[we>>3]=+p[Ud>>3];Ud=Qqa(16)|0;B=0;ib(285,Ud|0,179,g|0,738);qe=B;B=0;if(qe&1){xe=Ud;break}qe=(Jka(c,113303)|0)+(s<<3)|0;XH(m,Ud,~~+p[qe>>3]);s=s+1|0;ve=k[q>>2]|0;if((s|0)>=(ve|0))break c}ve=Rb()|0;s=Q;Sqa(xe);je=s;ke=ve;Qb(ke|0)}while(0);mC(k[a+16>>2]|0,m)|0;r=d;return}function kA(a,b,c){a=a|0;b=b|0;c=c|0;jA(a+-4|0,b,c);return}function lA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;d=r;r=r+368|0;e=d+356|0;f=d+352|0;g=d+216|0;h=d+200|0;i=d+48|0;j=d+36|0;l=d+64|0;m=d+24|0;n=d+12|0;o=d;k[f>>2]=0;q=XB(a,k[a+44>>2]|0)|0;rp(a,f,534,943);s=Rqa(q>>>0>536870911?-1:q<<3)|0;a:do if((q|0)>0){u=k[f>>2]|0;v=0;while(1){w=+p[b+(k[u+(v<<2)>>2]<<3)>>3];p[s+(v<<3)>>3]=w;x=+$(+w);p[t>>3]=x;y=k[t>>2]|0;z=k[t+4>>2]|0;if(z>>>0>2146435072|(z|0)==2146435072&y>>>0>0){A=6;break}v=v+1|0;if((y|0)==0&(z|0)==2146435072){A=30;break}if((v|0)>=(q|0))break a}if((A|0)==6){v=g+56|0;u=g+4|0;k[g>>2]=27524;k[v>>2]=27544;B=0;wa(508,g+56|0,u|0);z=B;B=0;if(z&1){z=Rb()|0;C=Q;D=z;vva(v);Qb(D|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[v>>2]=27488;B=0;va(448,u|0);z=B;B=0;do if(z&1){y=Rb()|0;E=Q;F=y}else{k[u>>2]=27560;y=g+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,u|0,e|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(e);Yua(y);Ava(u);E=H;F=G;break}Yua(e);B=0;G=Ia(40,g|0,135564,28)|0;H=B;B=0;b:do if(!(H&1)?(B=0,Xa(239,G|0,0)|0,I=B,B=0,!(I&1)):0){I=Ab(20)|0;B=0;eb(502,h|0,74107,73);J=B;B=0;do if(!(J&1)){B=0;eb(502,i|0,74717,29);K=B;B=0;if(K&1){K=Rb()|0;L=Q;Yua(h);M=K;N=L;break}B=0;wa(510,j|0,u|0);L=B;B=0;if(L&1){L=Rb()|0;O=Q;P=L;R=1}else{B=0;ua(163,I|0,h|0,i|0,1518,j|0);L=B;B=0;if(L&1)S=1;else{B=0;eb(503,I|0,1240,229);B=0;S=0}L=Rb()|0;K=Q;Yua(j);O=K;P=L;R=S}Yua(i);Yua(h);if(R){M=P;N=O}else{T=P;U=O;break b}}else{L=Rb()|0;M=L;N=Q}while(0);zb(I|0);T=M;U=N}else A=21;while(0);if((A|0)==21){G=Rb()|0;T=G;U=Q}k[g>>2]=27468;k[v>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(v);V=U;W=T;Qb(W|0)}while(0);C=E;D=F;vva(v);Qb(D|0)}else if((A|0)==30){u=l+56|0;z=l+4|0;k[l>>2]=27524;k[u>>2]=27544;B=0;wa(508,l+56|0,z|0);G=B;B=0;if(G&1){G=Rb()|0;X=Q;Y=G;vva(u);Qb(Y|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[u>>2]=27488;B=0;va(448,z|0);G=B;B=0;do if(G&1){H=Rb()|0;Z=Q;_=H}else{k[z>>2]=27560;H=l+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[l+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,z|0,e|0);J=B;B=0;if(J&1){J=Rb()|0;L=Q;Yua(e);Yua(H);Ava(z);Z=L;_=J;break}Yua(e);B=0;J=Ia(40,l|0,135593,28)|0;L=B;B=0;c:do if(!(L&1)?(B=0,Xa(239,J|0,0)|0,K=B,B=0,!(K&1)):0){K=Ab(20)|0;B=0;eb(502,m|0,74107,73);aa=B;B=0;do if(!(aa&1)){B=0;eb(502,n|0,74717,29);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;Yua(m);da=ba;ea=ca;break}B=0;wa(510,o|0,z|0);ca=B;B=0;if(ca&1){ca=Rb()|0;fa=1;ga=Q;ha=ca}else{B=0;ua(163,K|0,m|0,n|0,1519,o|0);ca=B;B=0;if(ca&1)ia=1;else{B=0;eb(503,K|0,1240,229);B=0;ia=0}ca=Rb()|0;ba=Q;Yua(o);fa=ia;ga=ba;ha=ca}Yua(n);Yua(m);if(fa){da=ha;ea=ga}else{ja=ga;ka=ha;break c}}else{ca=Rb()|0;da=ca;ea=Q}while(0);zb(K|0);ja=ea;ka=da}else A=45;while(0);if((A|0)==45){J=Rb()|0;ja=Q;ka=J}k[l>>2]=27468;k[u>>2]=27488;k[z>>2]=27560;Yua(H);Ava(z);vva(u);V=ja;W=ka;Qb(W|0)}while(0);X=Z;Y=_;vva(u);Qb(Y|0)}}while(0);Y=k[a+16>>2]|0;a=Qqa(16)|0;B=0;ib(285,a|0,c|0,s|0,738);c=B;B=0;if(c&1){c=Rb()|0;_=Q;Sqa(a);V=_;W=c;Qb(W|0)}mC(Y,a)|0;Tqa(s);s=k[f>>2]|0;if(!s){r=d;return}Tqa(s);r=d;return}function mA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;d=r;r=r+416|0;e=d+404|0;f=d;g=d+400|0;h=d+264|0;i=d+248|0;j=d+96|0;l=d+84|0;m=d+112|0;n=d+72|0;o=d+60|0;q=d+48|0;k[g>>2]=0;if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){r=d;return}rp(a,g,534,943);s=k[g>>2]|0;u=+p[b+(k[s>>2]<<3)>>3];p[f>>3]=u;p[f+24>>3]=u;v=+$(+u);p[t>>3]=v;w=k[t>>2]|0;x=k[t+4>>2]|0;do if(!(x>>>0>2146435072|(x|0)==2146435072&w>>>0>0)){if(!((w|0)==0&(x|0)==2146435072)){v=+p[b+(k[s+4>>2]<<3)>>3];p[f+8>>3]=v;p[f+32>>3]=v;u=+$(+v);p[t>>3]=u;y=k[t>>2]|0;z=k[t+4>>2]|0;if(z>>>0>2146435072|(z|0)==2146435072&y>>>0>0)break;if(!((y|0)==0&(z|0)==2146435072)){u=+p[b+(k[s+8>>2]<<3)>>3];p[f+16>>3]=u;p[f+40>>3]=u;v=+$(+u);p[t>>3]=v;z=k[t>>2]|0;y=k[t+4>>2]|0;if(y>>>0>2146435072|(y|0)==2146435072&z>>>0>0)break;if(!((z|0)==0&(y|0)==2146435072)){y=a;while(1){z=k[y+16>>2]|0;A=Qqa(16)|0;B=0;ib(285,A|0,c|0,f|0,738);C=B;B=0;if(C&1){D=A;E=53;break}mC(z,A)|0;if(Hc[k[(k[y>>2]|0)+252>>2]&511](y)|0)break;y=k[(k[y+72>>2]|0)+4>>2]|0}if((E|0)==53){y=Rb()|0;A=Q;Sqa(D);F=A;G=y;Qb(G|0)}y=k[g>>2]|0;if(y)Tqa(y);k[g>>2]=0;r=d;return}}}y=m+56|0;A=m+4|0;k[m>>2]=27524;k[y>>2]=27544;B=0;wa(508,m+56|0,A|0);z=B;B=0;if(z&1){z=Rb()|0;H=Q;I=z;vva(y);Qb(I|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[y>>2]=27488;B=0;va(448,A|0);z=B;B=0;do if(z&1){C=Rb()|0;J=Q;K=C}else{k[A>>2]=27560;C=m+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[m+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,A|0,e|0);L=B;B=0;if(L&1){L=Rb()|0;M=Q;Yua(e);Yua(C);Ava(A);J=M;K=L;break}Yua(e);B=0;L=Ia(40,m|0,135593,28)|0;M=B;B=0;a:do if(!(M&1)?(B=0,Xa(239,L|0,0)|0,N=B,B=0,!(N&1)):0){N=Ab(20)|0;B=0;eb(502,n|0,74107,73);O=B;B=0;do if(!(O&1)){B=0;eb(502,o|0,74747,38);P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(n);S=P;T=R;break}B=0;wa(510,q|0,A|0);R=B;B=0;if(R&1){R=Rb()|0;U=1;V=Q;W=R}else{B=0;ua(163,N|0,n|0,o|0,1550,q|0);R=B;B=0;if(R&1)X=1;else{B=0;eb(503,N|0,1240,229);B=0;X=0}R=Rb()|0;P=Q;Yua(q);U=X;V=P;W=R}Yua(o);Yua(n);if(U){S=W;T=V}else{Y=V;Z=W;break a}}else{R=Rb()|0;S=R;T=Q}while(0);zb(N|0);Y=T;Z=S}else E=43;while(0);if((E|0)==43){L=Rb()|0;Y=Q;Z=L}k[m>>2]=27468;k[y>>2]=27488;k[A>>2]=27560;Yua(C);Ava(A);vva(y);F=Y;G=Z;Qb(G|0)}while(0);H=J;I=K;vva(y);Qb(I|0)}while(0);I=h+56|0;K=h+4|0;k[h>>2]=27524;k[I>>2]=27544;B=0;wa(508,h+56|0,K|0);J=B;B=0;if(J&1){J=Rb()|0;_=Q;aa=J;vva(I);Qb(aa|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[I>>2]=27488;B=0;va(448,K|0);J=B;B=0;do if(J&1){H=Rb()|0;ba=Q;ca=H}else{k[K>>2]=27560;H=h+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[h+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,K|0,e|0);Z=B;B=0;if(Z&1){Z=Rb()|0;Y=Q;Yua(e);Yua(H);Ava(K);ba=Y;ca=Z;break}Yua(e);B=0;Z=Ia(40,h|0,135564,28)|0;Y=B;B=0;b:do if(!(Y&1)?(B=0,Xa(239,Z|0,0)|0,m=B,B=0,!(m&1)):0){m=Ab(20)|0;B=0;eb(502,i|0,74107,73);S=B;B=0;do if(!(S&1)){B=0;eb(502,j|0,74747,38);T=B;B=0;if(T&1){T=Rb()|0;W=Q;Yua(i);da=T;ea=W;break}B=0;wa(510,l|0,K|0);W=B;B=0;if(W&1){W=Rb()|0;fa=Q;ga=W;ha=1}else{B=0;ua(163,m|0,i|0,j|0,1549,l|0);W=B;B=0;if(W&1)ia=1;else{B=0;eb(503,m|0,1240,229);B=0;ia=0}W=Rb()|0;T=Q;Yua(l);fa=T;ga=W;ha=ia}Yua(j);Yua(i);if(ha){da=ga;ea=fa}else{ja=ga;ka=fa;break b}}else{W=Rb()|0;da=W;ea=Q}while(0);zb(m|0);ja=da;ka=ea}else E=19;while(0);if((E|0)==19){Z=Rb()|0;ja=Z;ka=Q}k[h>>2]=27468;k[I>>2]=27488;k[K>>2]=27560;Yua(H);Ava(K);vva(I);F=ka;G=ja;Qb(G|0)}while(0);_=ba;aa=ca;vva(I);Qb(aa|0)}function nA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0.0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,jb=0,kb=0,lb=0,mb=0;e=r;r=r+944|0;f=e+920|0;g=e+892|0;h=e;i=e+744|0;j=e+908|0;l=e+896|0;m=e+880|0;n=e+608|0;o=e+596|0;q=e+584|0;s=e+296|0;u=e+448|0;v=e+144|0;w=e+132|0;x=e+120|0;y=e+312|0;z=e+108|0;A=e+96|0;C=e+84|0;D=e+160|0;E=e+72|0;F=e+60|0;G=e+48|0;k[g>>2]=0;if(!(Tp(a,c)|0)){r=e;return}switch(d|0){case 628:{H=a+24|0;I=b+((Co(k[k[H>>2]>>2]|0)|0)<<3)|0;p[h>>3]=+p[I>>3];I=b+((Co(k[(k[H>>2]|0)+4>>2]|0)|0)<<3)|0;p[h+8>>3]=+p[I>>3];I=b+((Co(k[(k[H>>2]|0)+8>>2]|0)|0)<<3)|0;p[h+16>>3]=+p[I>>3];I=b+((Co(k[(k[H>>2]|0)+12>>2]|0)|0)<<3)|0;p[h+24>>3]=+p[I>>3];I=b+((Co(k[(k[H>>2]|0)+16>>2]|0)|0)<<3)|0;p[h+32>>3]=+p[I>>3];I=b+((Co(k[(k[H>>2]|0)+20>>2]|0)|0)<<3)|0;p[h+40>>3]=+p[I>>3];I=k[a+16>>2]|0;H=Qqa(16)|0;B=0;ib(285,H|0,c|0,h|0,738);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Sqa(H);L=K;M=J;Qb(M|0)}else{mC(I,H)|0;r=e;return}break}case 629:{H=a+24|0;I=b+((Bo(k[k[H>>2]>>2]|0)|0)<<3)|0;p[h>>3]=+p[I>>3];I=b+((Bo(k[(k[H>>2]|0)+4>>2]|0)|0)<<3)|0;p[h+8>>3]=+p[I>>3];I=b+((Bo(k[(k[H>>2]|0)+8>>2]|0)|0)<<3)|0;p[h+16>>3]=+p[I>>3];I=b+((Bo(k[(k[H>>2]|0)+12>>2]|0)|0)<<3)|0;p[h+24>>3]=+p[I>>3];I=b+((Bo(k[(k[H>>2]|0)+16>>2]|0)|0)<<3)|0;p[h+32>>3]=+p[I>>3];I=b+((Bo(k[(k[H>>2]|0)+20>>2]|0)|0)<<3)|0;p[h+40>>3]=+p[I>>3];I=k[a+16>>2]|0;H=Qqa(16)|0;B=0;ib(285,H|0,c|0,h|0,738);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Sqa(H);L=K;M=J;Qb(M|0)}else{mC(I,H)|0;r=e;return}break}case 549:{rp(a,g,534,943);H=k[g>>2]|0;N=+p[b+(k[H>>2]<<3)>>3];p[h>>3]=N;O=+$(+N);p[t>>3]=O;I=k[t>>2]|0;J=k[t+4>>2]|0;do if(!(J>>>0>2146435072|(J|0)==2146435072&I>>>0>0)){if(!((I|0)==0&(J|0)==2146435072)){O=+p[b+(k[H+4>>2]<<3)>>3];p[h+8>>3]=O;N=+$(+O);p[t>>3]=N;K=k[t>>2]|0;P=k[t+4>>2]|0;if(P>>>0>2146435072|(P|0)==2146435072&K>>>0>0)break;if(!((K|0)==0&(P|0)==2146435072)){N=+p[b+(k[H+8>>2]<<3)>>3];p[h+16>>3]=N;O=+$(+N);p[t>>3]=O;P=k[t>>2]|0;K=k[t+4>>2]|0;if(K>>>0>2146435072|(K|0)==2146435072&P>>>0>0)break;if(!((P|0)==0&(K|0)==2146435072)){O=+p[b+(k[H+12>>2]<<3)>>3];p[h+24>>3]=O;N=+$(+O);p[t>>3]=N;K=k[t>>2]|0;P=k[t+4>>2]|0;if(P>>>0>2146435072|(P|0)==2146435072&K>>>0>0)break;if(!((K|0)==0&(P|0)==2146435072)){N=+p[b+(k[H+16>>2]<<3)>>3];p[h+32>>3]=N;O=+$(+N);p[t>>3]=O;P=k[t>>2]|0;K=k[t+4>>2]|0;if(K>>>0>2146435072|(K|0)==2146435072&P>>>0>0)break;if(!((P|0)==0&(K|0)==2146435072)){O=+p[b+(k[H+20>>2]<<3)>>3];p[h+40>>3]=O;N=+$(+O);p[t>>3]=N;K=k[t>>2]|0;P=k[t+4>>2]|0;if(P>>>0>2146435072|(P|0)==2146435072&K>>>0>0)break;if(!((K|0)==0&(P|0)==2146435072)){P=k[a+16>>2]|0;K=Qqa(16)|0;B=0;ib(285,K|0,c|0,h|0,738);R=B;B=0;if(R&1){R=Rb()|0;S=Q;Sqa(K);L=S;M=R;Qb(M|0)}mC(P,K)|0;K=k[g>>2]|0;if(K)Tqa(K);k[g>>2]=0;r=e;return}}}}}}K=n+56|0;P=n+4|0;k[n>>2]=27524;k[K>>2]=27544;B=0;wa(508,n+56|0,P|0);R=B;B=0;if(R&1){R=Rb()|0;T=Q;U=R;vva(K);Qb(U|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[K>>2]=27488;B=0;va(448,P|0);R=B;B=0;do if(R&1){S=Rb()|0;V=Q;W=S}else{k[P>>2]=27560;S=n+36|0;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,P|0,f|0);X=B;B=0;if(X&1){X=Rb()|0;Y=Q;Yua(f);Yua(S);Ava(P);V=Y;W=X;break}Yua(f);B=0;X=Ia(40,n|0,135593,28)|0;Y=B;B=0;a:do if(!(Y&1)?(B=0,Xa(239,X|0,0)|0,Z=B,B=0,!(Z&1)):0){Z=Ab(20)|0;B=0;eb(502,o|0,74107,73);_=B;B=0;do if(!(_&1)){B=0;eb(502,q|0,74786,21);aa=B;B=0;if(aa&1){aa=Rb()|0;ba=Q;Yua(o);ca=ba;da=aa;break}B=0;wa(510,s|0,P|0);aa=B;B=0;if(aa&1){aa=Rb()|0;ea=1;fa=Q;ga=aa}else{B=0;ua(163,Z|0,o|0,q|0,1604,s|0);aa=B;B=0;if(aa&1)ha=1;else{B=0;eb(503,Z|0,1240,229);B=0;ha=0}aa=Rb()|0;ba=Q;Yua(s);ea=ha;fa=ba;ga=aa}Yua(q);Yua(o);if(ea){ca=fa;da=ga}else{ia=fa;ja=ga;break a}}else{aa=Rb()|0;ca=Q;da=aa}while(0);zb(Z|0);ia=ca;ja=da}else ka=51;while(0);if((ka|0)==51){X=Rb()|0;ia=Q;ja=X}k[n>>2]=27468;k[K>>2]=27488;k[P>>2]=27560;Yua(S);Ava(P);vva(K);L=ia;M=ja;Qb(M|0)}while(0);T=V;U=W;vva(K);Qb(U|0)}while(0);U=i+56|0;W=i+4|0;k[i>>2]=27524;k[U>>2]=27544;B=0;wa(508,i+56|0,W|0);V=B;B=0;if(V&1){V=Rb()|0;la=Q;ma=V;vva(U);Qb(ma|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[U>>2]=27488;B=0;va(448,W|0);V=B;B=0;do if(V&1){T=Rb()|0;na=Q;oa=T}else{k[W>>2]=27560;T=i+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[i+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,W|0,f|0);ja=B;B=0;if(ja&1){ja=Rb()|0;ia=Q;Yua(f);Yua(T);Ava(W);na=ia;oa=ja;break}Yua(f);B=0;ja=Ia(40,i|0,135564,28)|0;ia=B;B=0;b:do if(!(ia&1)?(B=0,Xa(239,ja|0,0)|0,n=B,B=0,!(n&1)):0){n=Ab(20)|0;B=0;eb(502,j|0,74107,73);da=B;B=0;do if(!(da&1)){B=0;eb(502,l|0,74786,21);ca=B;B=0;if(ca&1){ca=Rb()|0;ga=Q;Yua(j);pa=ga;qa=ca;break}B=0;wa(510,m|0,W|0);ca=B;B=0;if(ca&1){ca=Rb()|0;ra=Q;sa=ca;ta=1}else{B=0;ua(163,n|0,j|0,l|0,1603,m|0);ca=B;B=0;if(ca&1)xa=1;else{B=0;eb(503,n|0,1240,229);B=0;xa=0}ca=Rb()|0;ga=Q;Yua(m);ra=ga;sa=ca;ta=xa}Yua(l);Yua(j);if(ta){pa=ra;qa=sa}else{za=ra;Aa=sa;break b}}else{ca=Rb()|0;pa=Q;qa=ca}while(0);zb(n|0);za=pa;Aa=qa}else ka=27;while(0);if((ka|0)==27){ja=Rb()|0;za=Q;Aa=ja}k[i>>2]=27468;k[U>>2]=27488;k[W>>2]=27560;Yua(T);Ava(W);vva(U);L=za;M=Aa;Qb(M|0)}while(0);la=na;ma=oa;vva(U);Qb(ma|0);break}case 608:{ma=a+20|0;U=b+((Qn(k[k[ma>>2]>>2]|0)|0)<<3)|0;N=+p[U>>3];p[h>>3]=N;O=+$(+N);p[t>>3]=O;U=k[t>>2]|0;oa=k[t+4>>2]|0;do if(!(oa>>>0>2146435072|(oa|0)==2146435072&U>>>0>0)){if(!((U|0)==0&(oa|0)==2146435072)){na=b+((Qn(k[(k[ma>>2]|0)+4>>2]|0)|0)<<3)|0;O=+p[na>>3];p[h+8>>3]=O;N=+$(+O);p[t>>3]=N;na=k[t>>2]|0;la=k[t+4>>2]|0;if(la>>>0>2146435072|(la|0)==2146435072&na>>>0>0)break;if(!((na|0)==0&(la|0)==2146435072)){la=b+((Qn(k[(k[ma>>2]|0)+8>>2]|0)|0)<<3)|0;N=+p[la>>3];p[h+16>>3]=N;O=+$(+N);p[t>>3]=O;la=k[t>>2]|0;na=k[t+4>>2]|0;if(na>>>0>2146435072|(na|0)==2146435072&la>>>0>0)break;if(!((la|0)==0&(na|0)==2146435072)){na=b+((Qn(k[(k[ma>>2]|0)+12>>2]|0)|0)<<3)|0;O=+p[na>>3];p[h+24>>3]=O;N=+$(+O);p[t>>3]=N;na=k[t>>2]|0;la=k[t+4>>2]|0;if(la>>>0>2146435072|(la|0)==2146435072&na>>>0>0)break;if(!((na|0)==0&(la|0)==2146435072)){la=b+((Qn(k[(k[ma>>2]|0)+16>>2]|0)|0)<<3)|0;N=+p[la>>3];p[h+32>>3]=N;O=+$(+N);p[t>>3]=O;la=k[t>>2]|0;na=k[t+4>>2]|0;if(na>>>0>2146435072|(na|0)==2146435072&la>>>0>0)break;if(!((la|0)==0&(na|0)==2146435072)){na=b+((Qn(k[(k[ma>>2]|0)+20>>2]|0)|0)<<3)|0;O=+p[na>>3];p[h+40>>3]=O;N=+$(+O);p[t>>3]=N;na=k[t>>2]|0;la=k[t+4>>2]|0;if(la>>>0>2146435072|(la|0)==2146435072&na>>>0>0)break;if(!((na|0)==0&(la|0)==2146435072)){la=k[a+16>>2]|0;na=Qqa(16)|0;B=0;ib(285,na|0,c|0,h|0,738);Aa=B;B=0;if(Aa&1){Aa=Rb()|0;za=Q;Sqa(na);L=za;M=Aa;Qb(M|0)}mC(la,na)|0;na=k[g>>2]|0;if(na)Tqa(na);k[g>>2]=0;r=e;return}}}}}}na=y+56|0;la=y+4|0;k[y>>2]=27524;k[na>>2]=27544;B=0;wa(508,y+56|0,la|0);Aa=B;B=0;if(Aa&1){Aa=Rb()|0;Ba=Q;Ca=Aa;vva(na);Qb(Ca|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[na>>2]=27488;B=0;va(448,la|0);Aa=B;B=0;do if(Aa&1){za=Rb()|0;Da=Q;Ea=za}else{k[la>>2]=27560;za=y+36|0;k[za>>2]=0;k[za+4>>2]=0;k[za+8>>2]=0;k[za+12>>2]=0;k[y+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,la|0,f|0);W=B;B=0;if(W&1){W=Rb()|0;i=Q;Yua(f);Yua(za);Ava(la);Da=i;Ea=W;break}Yua(f);B=0;W=Ia(40,y|0,135593,28)|0;i=B;B=0;c:do if(!(i&1)?(B=0,Xa(239,W|0,0)|0,qa=B,B=0,!(qa&1)):0){qa=Ab(20)|0;B=0;eb(502,z|0,74107,73);pa=B;B=0;do if(!(pa&1)){B=0;eb(502,A|0,74786,21);sa=B;B=0;if(sa&1){sa=Rb()|0;ra=Q;Yua(z);Fa=ra;Ga=sa;break}B=0;wa(510,C|0,la|0);sa=B;B=0;if(sa&1){sa=Rb()|0;Ha=1;Ja=Q;Ka=sa}else{B=0;ua(163,qa|0,z|0,A|0,1617,C|0);sa=B;B=0;if(sa&1)La=1;else{B=0;eb(503,qa|0,1240,229);B=0;La=0}sa=Rb()|0;ra=Q;Yua(C);Ha=La;Ja=ra;Ka=sa}Yua(A);Yua(z);if(Ha){Fa=Ja;Ga=Ka}else{Ma=Ja;Na=Ka;break c}}else{sa=Rb()|0;Fa=Q;Ga=sa}while(0);zb(qa|0);Ma=Fa;Na=Ga}else ka=103;while(0);if((ka|0)==103){W=Rb()|0;Ma=Q;Na=W}k[y>>2]=27468;k[na>>2]=27488;k[la>>2]=27560;Yua(za);Ava(la);vva(na);L=Ma;M=Na;Qb(M|0)}while(0);Ba=Da;Ca=Ea;vva(na);Qb(Ca|0)}while(0);Ca=u+56|0;Ea=u+4|0;k[u>>2]=27524;k[Ca>>2]=27544;B=0;wa(508,u+56|0,Ea|0);Da=B;B=0;if(Da&1){Da=Rb()|0;Oa=Q;Pa=Da;vva(Ca);Qb(Pa|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[Ca>>2]=27488;B=0;va(448,Ea|0);Da=B;B=0;do if(Da&1){Ba=Rb()|0;Qa=Q;Ra=Ba}else{k[Ea>>2]=27560;Ba=u+36|0;k[Ba>>2]=0;k[Ba+4>>2]=0;k[Ba+8>>2]=0;k[Ba+12>>2]=0;k[u+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,Ea|0,f|0);Na=B;B=0;if(Na&1){Na=Rb()|0;Ma=Q;Yua(f);Yua(Ba);Ava(Ea);Qa=Ma;Ra=Na;break}Yua(f);B=0;Na=Ia(40,u|0,135564,28)|0;Ma=B;B=0;d:do if(!(Ma&1)?(B=0,Xa(239,Na|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,v|0,74107,73);Ga=B;B=0;do if(!(Ga&1)){B=0;eb(502,w|0,74786,21);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ka=Q;Yua(v);Sa=Ka;Ta=Fa;break}B=0;wa(510,x|0,Ea|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ua=1;Va=Q;Wa=Fa}else{B=0;ua(163,y|0,v|0,w|0,1616,x|0);Fa=B;B=0;if(Fa&1)Ya=1;else{B=0;eb(503,y|0,1240,229);B=0;Ya=0}Fa=Rb()|0;Ka=Q;Yua(x);Ua=Ya;Va=Ka;Wa=Fa}Yua(w);Yua(v);if(Ua){Sa=Va;Ta=Wa}else{Za=Va;_a=Wa;break d}}else{Fa=Rb()|0;Sa=Q;Ta=Fa}while(0);zb(y|0);Za=Sa;_a=Ta}else ka=79;while(0);if((ka|0)==79){Na=Rb()|0;Za=Q;_a=Na}k[u>>2]=27468;k[Ca>>2]=27488;k[Ea>>2]=27560;Yua(Ba);Ava(Ea);vva(Ca);L=Za;M=_a;Qb(M|0)}while(0);Oa=Qa;Pa=Ra;vva(Ca);Qb(Pa|0);break}default:{Pa=D+56|0;Ca=D+4|0;k[D>>2]=27524;k[Pa>>2]=27544;B=0;wa(508,D+56|0,Ca|0);Ra=B;B=0;if(Ra&1){Ra=Rb()|0;$a=Q;ab=Ra;vva(Pa);Qb(ab|0)}k[D+128>>2]=0;k[D+132>>2]=-1;k[D>>2]=27468;k[Pa>>2]=27488;B=0;va(448,Ca|0);Ra=B;B=0;do if(Ra&1){Qa=Rb()|0;bb=Q;cb=Qa}else{k[Ca>>2]=27560;Qa=D+36|0;k[Qa>>2]=0;k[Qa+4>>2]=0;k[Qa+8>>2]=0;k[Qa+12>>2]=0;k[D+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,Ca|0,f|0);Oa=B;B=0;if(Oa&1){Oa=Rb()|0;_a=Q;Yua(f);Yua(Qa);Ava(Ca);bb=_a;cb=Oa;break}Yua(f);B=0;Oa=Ia(40,D|0,74808,5)|0;_a=B;B=0;e:do if((((((!(_a&1)?(B=0,Za=Xa(242,Oa|0,d|0)|0,Ea=B,B=0,!(Ea&1)):0)?(B=0,Ea=Ia(40,Za|0,144166,2)|0,Za=B,B=0,!(Za&1)):0)?(B=0,Za=ya(427,d|0)|0,u=B,B=0,!(u&1)):0)?(u=Lta(Za)|0,B=0,Ta=Ia(40,Ea|0,Za|0,u|0)|0,u=B,B=0,!(u&1)):0)?(B=0,u=Ia(40,Ta|0,74814,21)|0,Ta=B,B=0,!(Ta&1)):0)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,E|0,74107,73);Ta=B;B=0;do if(!(Ta&1)){B=0;eb(502,F|0,74786,21);Za=B;B=0;if(Za&1){Za=Rb()|0;Ea=Q;Yua(E);db=Ea;fb=Za;break}B=0;wa(510,G|0,Ca|0);Za=B;B=0;if(Za&1){Za=Rb()|0;gb=1;hb=Q;jb=Za}else{B=0;ua(163,u|0,E|0,F|0,1627,G|0);Za=B;B=0;if(Za&1)kb=1;else{B=0;eb(503,u|0,1240,229);B=0;kb=0}Za=Rb()|0;Ea=Q;Yua(G);gb=kb;hb=Ea;jb=Za}Yua(F);Yua(E);if(gb){db=hb;fb=jb}else{lb=hb;mb=jb;break e}}else{Za=Rb()|0;db=Q;fb=Za}while(0);zb(u|0);lb=db;mb=fb}else ka=135;while(0);if((ka|0)==135){Oa=Rb()|0;lb=Q;mb=Oa}k[D>>2]=27468;k[Pa>>2]=27488;k[Ca>>2]=27560;Yua(Qa);Ava(Ca);vva(Pa);L=lb;M=mb;Qb(M|0)}while(0);$a=bb;ab=cb;vva(Pa);Qb(ab|0)}}}function oA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;nA(a+-4|0,b,c,d);return}function pA(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+48|0;c=b;xp(a,c,206);if(!($p(a)|0)){d=0;r=b;return d|0}d=((+p[c+16>>3]<0.0&1)+((+p[c+8>>3]<0.0&1)+(+p[c>>3]<0.0&1))|0)==1;r=b;return d|0}function qA(a,b){a=a|0;b=b|0;var c=0,d=0;c=a+24|0;a=b+((Co(k[k[c>>2]>>2]|0)|0)<<3)|0;if(+p[a>>3]<0.0){d=1;return d|0}a=b+((Co(k[(k[c>>2]|0)+4>>2]|0)|0)<<3)|0;if(+p[a>>3]<0.0){d=1;return d|0}a=b+((Co(k[(k[c>>2]|0)+8>>2]|0)|0)<<3)|0;if(+p[a>>3]<0.0){d=1;return d|0}a=b+((Co(k[(k[c>>2]|0)+12>>2]|0)|0)<<3)|0;if(+p[a>>3]<0.0){d=1;return d|0}a=b+((Co(k[(k[c>>2]|0)+16>>2]|0)|0)<<3)|0;if(+p[a>>3]<0.0){d=1;return d|0}a=b+((Co(k[(k[c>>2]|0)+20>>2]|0)|0)<<3)|0;if(+p[a>>3]<0.0){d=1;return d|0}d=0;return d|0}function rA(a){a=a|0;var b=0,c=0;b=r;r=r+48|0;c=b;xp(a,c,287);r=b;return +p[c>>3]+ +p[c+8>>3]+ +p[c+16>>3]+ +p[c+24>>3]+ +p[c+32>>3]+ +p[c+40>>3]==3.0|0}function sA(a){a=a|0;var b=0,c=0;b=r;r=r+48|0;c=b;xp(a,c,288);r=b;return +p[c>>3]+ +p[c+8>>3]+ +p[c+16>>3]+ +p[c+24>>3]+ +p[c+32>>3]+ +p[c+40>>3]==3.0|0}function tA(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0;c=r;r=r+48|0;d=c;xp(a,d,b);do if($p(a)|0){e=+p[d>>3];f=+p[d+8>>3];g=e*f;if(!(g<0.0)?(h=+p[d+16>>3],i=e*h,!(i<0.0)):0){if(!(g*h==0.0)){j=0;break}if(!(f*h+(g+i)<=0.0)){j=0;break}}j=1}else j=0;while(0);r=c;return j|0}function uA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;aC(a,b,c,d);return}function vA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;eC(a,b,c,d);return}function wA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;dC(a,b,c,d);return}function xA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;cC(a,b,c,d);return}function yA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;eC(a,b,c,d);return}function zA(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0;if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){c=0.0;return +c}nd[k[(k[a>>2]|0)+216>>2]&1023](a,674,673);nd[k[(k[a>>2]|0)+216>>2]&1023](a,677,676);d=AA(a,0,1,2)|0;e=+id[k[(k[d>>2]|0)+284>>2]&63](d,b);b=k[d+28>>2]|0;if(b)Ec[k[(k[b>>2]|0)+4>>2]&1023](b);if(d)Ec[k[(k[d>>2]|0)+4>>2]&1023](d);d=a+16|0;sC(k[d>>2]|0,673)|0;sC(k[d>>2]|0,676)|0;c=e;return +c}function AA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;e=r;r=r+16|0;f=e;g=a+36|0;cO(k[g>>2]|0,f,482);h=Qqa(72)|0;B=0;va(461,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;Sqa(h);Qb(l|0)}i=h+48|0;B=0;va(462,i|0);m=B;B=0;do if(!(m&1)){B=0;n=B;B=0;if(n&1){n=Rb()|0;o=Q;Tq(i);p=o;q=n;break}else{k[h>>2]=30040;k[h+4>>2]=30604;k[h+8>>2]=k[a+8>>2];n=uC(k[a+16>>2]|0,b,c,d)|0;k[h+16>>2]=n;k[h+36>>2]=k[g>>2];k[h+44>>2]=738;Zq(a+48|0,i,b,c,d);n=k[a+28>>2]|0;o=ed[k[(k[n>>2]|0)+32>>2]&511](n,h)|0;k[h+28>>2]=o;o=Gla(k[(k[h+52>>2]|0)+(k[f>>2]<<2)>>2]|0)|0;k[h+20>>2]=o;o=Gla(k[h+56>>2]|0)|0;k[h+24>>2]=o;o=Fla(k[h+64>>2]|0)|0;k[h+32>>2]=o;r=e;return h|0}}else{o=Rb()|0;p=Q;q=o}while(0);Qo(h);j=p;l=q;Sqa(h);Qb(l|0);return 0}function BA(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=f|0;var g=0.0,h=0,i=0.0;if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){g=0.0;return +g}nd[k[(k[a>>2]|0)+216>>2]&1023](a,674,673);nd[k[(k[a>>2]|0)+216>>2]&1023](a,677,676);h=AA(a,0,1,2)|0;i=+Mc[k[(k[h>>2]|0)+288>>2]&7](h,b,c,d,e,f);f=k[h+28>>2]|0;if(f)Ec[k[(k[f>>2]|0)+4>>2]&1023](f);if(h)Ec[k[(k[h>>2]|0)+4>>2]&1023](h);h=a+16|0;sC(k[h>>2]|0,673)|0;sC(k[h>>2]|0,676)|0;g=i;return +g}function CA(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0;a=0;c=-1.0;while(1){d=(k[31892+(a<<3)>>2]|0)*3|0;e=(k[31892+(a<<3)+4>>2]|0)*3|0;f=+p[b+(d<<3)>>3]-+p[b+(e<<3)>>3];g=+p[b+(d+1<<3)>>3]-+p[b+(e+1<<3)>>3];h=+p[b+(d+2<<3)>>3]-+p[b+(e+2<<3)>>3];i=+aa(+(f*f+g*g+h*h));h=c<0.0|i<c?i:c;a=a+1|0;if((a|0)==9){j=h;break}else c=h}return +j}function DA(a){a=a|0;var b=0;a=Qqa(72)|0;B=0;va(493,a|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(a);Qb(b|0)}else return a|0;return 0}function EA(a,b){a=a|0;b=b|0;a=Qqa(72)|0;B=0;eb(511,a|0,b|0,b|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(a);Qb(b|0)}else return a|0;return 0}function FA(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;a=r;r=r+96|0;f=a;Mz(0,f,c,b,4);b=Qqa(72)|0;B=0;ib(290,b|0,f|0,d|0,e|0);e=B;B=0;if(e&1){e=Rb()|0;Sqa(b);Qb(e|0)}else{r=a;return b|0}return 0}function GA(a,b,c,d,e,f){a=a|0;b=b|0;c=+c;d=+d;e=e|0;f=f|0;a=Qqa(72)|0;B=0;Fa(2,a|0,b|0,+c,+d,e|0,f|0);f=B;B=0;if(f&1){f=Rb()|0;Sqa(a);Qb(f|0)}else return a|0;return 0}function HA(a,b){a=a|0;b=b|0;a=Qqa(72)|0;B=0;ua(169,a|0,0,1,2,b|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(a);Qb(b|0)}else return a|0;return 0}function IA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=Qqa(72)|0;B=0;ib(291,a|0,b|0,c|0,d|0);d=B;B=0;if(d&1){d=Rb()|0;Sqa(a);Qb(d|0)}else return a|0;return 0}function JA(a,b){a=a|0;b=b|0;a=Qqa(72)|0;B=0;ua(169,a|0,3,4,5,b|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(a);Qb(b|0)}else return a|0;return 0}function KA(a,b,c){a=a|0;b=b|0;c=c|0;_B(a,b,c,k[a+44>>2]|0);return}function LA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;YB(a,b,c,d,k[a+44>>2]|0);return}function MA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;YB(a,b,c,d,Hc[k[(k[a>>2]|0)+504>>2]&511](a)|0);return}function NA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;YB(a,b,c,d,740);return}function OA(a,b,c){a=a|0;b=b|0;c=c|0;_B(a,b,c,Hc[k[(k[a>>2]|0)+404>>2]&511](a)|0);return}function PA(a,b,c){a=a|0;b=b|0;c=c|0;_B(a,b,c,738);return}function QA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;YB(a,b,c,d,738);return}function RA(a,b,c){a=a|0;b=b|0;c=c|0;_B(a,b,c,742);return}function SA(a,b,c){a=a|0;b=b|0;c=c|0;_B(a,b,c,Hc[k[(k[a>>2]|0)+504>>2]&511](a)|0);return}function TA(a,b,c){a=a|0;b=b|0;c=c|0;_B(a,b,c,Hc[k[(k[a>>2]|0)+460>>2]&511](a)|0);return}function UA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=r;r=r+16|0;f=e;g=oC(k[a+16>>2]|0,d)|0;d=a+24|0;a=k[k[d>>2]>>2]|0;h=Hc[k[(k[a>>2]|0)+16>>2]&511](a)|0;if(!g){a=k[(k[d>>2]|0)+4>>2]|0;Hc[k[(k[a>>2]|0)+16>>2]&511](a)|0;a=k[(k[d>>2]|0)+8>>2]|0;Hc[k[(k[a>>2]|0)+16>>2]&511](a)|0;a=k[(k[d>>2]|0)+12>>2]|0;Hc[k[(k[a>>2]|0)+16>>2]&511](a)|0;a=k[(k[d>>2]|0)+16>>2]|0;Hc[k[(k[a>>2]|0)+16>>2]&511](a)|0;a=k[(k[d>>2]|0)+20>>2]|0;Hc[k[(k[a>>2]|0)+16>>2]&511](a)|0;i=0;r=e;return i|0}if((h|0)!=(c|0)){h=k[(k[d>>2]|0)+4>>2]|0;if((Hc[k[(k[h>>2]|0)+16>>2]&511](h)|0)!=(c|0)){h=k[(k[d>>2]|0)+8>>2]|0;if((Hc[k[(k[h>>2]|0)+16>>2]&511](h)|0)!=(c|0)){h=k[(k[d>>2]|0)+12>>2]|0;if((Hc[k[(k[h>>2]|0)+16>>2]&511](h)|0)!=(c|0)){h=k[(k[d>>2]|0)+16>>2]|0;if((Hc[k[(k[h>>2]|0)+16>>2]&511](h)|0)!=(c|0)){h=k[(k[d>>2]|0)+20>>2]|0;if((Hc[k[(k[h>>2]|0)+16>>2]&511](h)|0)==(c|0))j=5;else{i=0;r=e;return i|0}}else j=4}else j=3}else j=2}else j=1}else j=0;c=Qqa(72)|0;B=0;va(493,c|0);h=B;B=0;if(h&1){h=Rb()|0;Sqa(c);Qb(h|0)}Fc[k[(k[c>>2]|0)+28>>2]&1023](c,j);nd[k[(k[g>>2]|0)+48>>2]&1023](g,f,c);Ec[k[(k[c>>2]|0)+4>>2]&1023](c);p[b>>3]=+p[f>>3];i=1;r=e;return i|0}function VA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0;d=+p[c+48>>3];e=+p[c>>3]-d;f=+p[c+24>>3]-d;d=+p[c+56>>3];g=+p[c+8>>3]-d;h=+p[c+32>>3]-d;d=+p[c+64>>3];i=+p[c+16>>3]-d;j=+p[c+40>>3]-d;d=g*j-i*h;k=i*f-j*e;j=h*e-g*f;f=+aa(+(j*j+(d*d+k*k)));p[b>>3]=-d/f;p[b+8>>3]=-k/f;p[b+16>>3]=-j/f;return}function WA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0.0,g=0.0,h=0.0,i=0.0;a=r;r=r+48|0;d=a+24|0;e=a;f=+p[c>>3];p[d>>3]=+p[c+24>>3]-f;g=+p[c+8>>3];p[d+8>>3]=+p[c+32>>3]-g;h=+p[c+16>>3];p[d+16>>3]=+p[c+40>>3]-h;p[e>>3]=+p[c+48>>3]-f;p[e+8>>3]=+p[c+56>>3]-g;p[e+16>>3]=+p[c+64>>3]-h;IY(b,d,e);h=+p[b>>3];e=b+8|0;g=+p[e>>3];d=b+16|0;f=+p[d>>3];i=+aa(+(h*h+g*g+f*f));p[b>>3]=h/i;p[e>>3]=g/i;p[d>>3]=f/i;r=a;return}function XA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0;d=+p[c+48>>3];e=+p[c>>3]-d;f=+p[c+24>>3]-d;d=+p[c+56>>3];g=+p[c+8>>3]-d;h=+p[c+32>>3]-d;d=+p[c+64>>3];i=+p[c+16>>3]-d;j=+p[c+40>>3]-d;d=g*j-i*h;k=i*f-j*e;j=h*e-g*f;f=+aa(+(j*j+(d*d+k*k)));p[b>>3]=d/f;p[b+8>>3]=k/f;p[b+16>>3]=j/f;return}function YA(a){a=a|0;return XB(a,Hc[k[(k[a>>2]|0)+404>>2]&511](a)|0)|0}function ZA(a){a=a|0;return XB(a,Hc[k[(k[a>>2]|0)+504>>2]&511](a)|0)|0}function _A(a){a=a|0;return 625}function $A(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0.0,i=0.0,j=0,l=0,m=0;c=r;r=r+144|0;d=c+96|0;e=c+48|0;f=c;g=a+32|0;h=+WJ(k[g>>2]|0,266);i=+WJ(k[g>>2]|0,265)/h;xp(a,d,353);xp(a,e,63);xp(a,f,928);g=a+24|0;a=b+4|0;j=0;do{if((+p[f+(j<<3)>>3]>0.0?+p[e+(j<<3)>>3]<-(i*+p[d+(j<<3)>>3]):0)?(l=Co(k[(k[g>>2]|0)+(j<<2)>>2]|0)|0,(k[b>>2]|0)!=0):0){m=k[k[a>>2]>>2]|0;Jc[k[(k[m>>2]|0)+20>>2]&1](m,l,1.0,0)}j=j+1|0}while((j|0)!=6);r=c;return}function aB(a){a=a|0;return fC(a,k[a+44>>2]|0)|0}function bB(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;d=r;r=r+32|0;e=d+16|0;f=d+12|0;g=d;cO(k[a+36>>2]|0,e,477);a:do if((c|0)!=0&(k[e>>2]|0)==497)switch(k[a+44>>2]|0){case 752:{kC(k[a+16>>2]|0,f,533);switch(k[f>>2]|0){case 538:case 541:break;default:{k[g>>2]=k[9691];k[g+4>>2]=k[9692];k[g+8>>2]=k[9693];VN(c,b,3,g)}}break a;break}case 741:{h=a+20|0;i=eo(k[(k[h>>2]|0)+24>>2]|0,534,943)|0;j=(eo(k[k[h>>2]>>2]|0,534,943)|0)+(eo(k[(k[h>>2]|0)+4>>2]|0,534,943)|0)+(eo(k[(k[h>>2]|0)+8>>2]|0,534,943)|0)+(eo(k[(k[h>>2]|0)+12>>2]|0,534,943)|0)+(eo(k[(k[h>>2]|0)+16>>2]|0,534,943)|0)+(eo(k[(k[h>>2]|0)+20>>2]|0,534,943)|0)|0;h=Rqa(i>>>0>1073741823?-1:i<<2)|0;if((i|0)>0){l=0;do{k[h+(l<<2)>>2]=l+j;l=l+1|0}while((l|0)!=(i|0))}VN(c,b,i,h);Tqa(h);break a;break}default:break a}while(0);if(!((b|0)!=0&(k[e>>2]|0)==497)){r=d;return}kC(k[a+16>>2]|0,f,533);b:do switch(k[f>>2]|0){case 538:case 541:break;default:{switch(k[a+44>>2]|0){case 752:{k[g>>2]=k[9691];k[g+4>>2]=k[9692];k[g+8>>2]=k[9693];NN(b,3,g);break b;break}case 741:break;default:break b}e=a+20|0;c=eo(k[(k[e>>2]|0)+24>>2]|0,534,943)|0;l=(eo(k[k[e>>2]>>2]|0,534,943)|0)+(eo(k[(k[e>>2]|0)+4>>2]|0,534,943)|0)+(eo(k[(k[e>>2]|0)+8>>2]|0,534,943)|0)+(eo(k[(k[e>>2]|0)+12>>2]|0,534,943)|0)+(eo(k[(k[e>>2]|0)+16>>2]|0,534,943)|0)+(eo(k[(k[e>>2]|0)+20>>2]|0,534,943)|0)|0;e=Rqa(c>>>0>1073741823?-1:c<<2)|0;if((c|0)>0){j=0;do{k[e+(j<<2)>>2]=j+l;j=j+1|0}while((j|0)!=(c|0))}NN(b,c,e);Tqa(e)}}while(0);r=d;return}function cB(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;b=r;r=r+448|0;c=b+432|0;d=b+428|0;e=b+424|0;f=b+420|0;g=b+64|0;h=b+56|0;i=b+48|0;j=b;l=b+272|0;m=b+408|0;n=b+256|0;o=b+108|0;q=b+120|0;s=b+96|0;t=b+84|0;u=b+72|0;k[f>>2]=0;v=a+16|0;kC(k[v>>2]|0,d,533);if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){r=b;return}switch(k[d>>2]|0){case 538:case 541:case 542:break;default:{r=b;return}}VB(a,e,f,Hc[k[(k[a>>2]|0)+504>>2]&511](a)|0);d=oC(k[v>>2]|0,642)|0;w=oC(k[v>>2]|0,643)|0;x=oC(k[v>>2]|0,928)|0;v=Qqa(72)|0;B=0;va(493,v|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Sqa(v);A=z;C=y;Qb(C|0)}a:do if((k[e>>2]|0)>0){y=j+24|0;z=j+8|0;D=j+32|0;E=j+16|0;F=j+40|0;G=a+20|0;H=0;b:while(1){I=k[(k[v>>2]|0)+32>>2]|0;J=Hc[k[(k[a>>2]|0)+504>>2]&511](a)|0;nd[I&1023](v,J,k[(k[f>>2]|0)+(H<<2)>>2]|0);nd[k[(k[d>>2]|0)+48>>2]&1023](d,g,v);nd[k[(k[w>>2]|0)+48>>2]&1023](w,h,v);nd[k[(k[x>>2]|0)+48>>2]&1023](x,i,v);p[j>>3]=1.0;K=+p[g>>3];p[y>>3]=-K;p[z>>3]=0.0;p[D>>3]=-+p[h>>3];p[E>>3]=K;p[F>>3]=1.0;J=!(+p[i>>3]>=0.0);I=(co(k[(k[G>>2]|0)+(k[(k[f>>2]|0)+(H<<2)>>2]<<2)>>2]|0)|0)==543;L=k[(k[G>>2]|0)+(k[(k[f>>2]|0)+(H<<2)>>2]<<2)>>2]|0;do if(J){if(I){Zn(L,2);break}if((co(L)|0)!=538?(co(k[(k[G>>2]|0)+(k[(k[f>>2]|0)+(H<<2)>>2]<<2)>>2]|0)|0)!=541:0){M=H;N=48;break b}Zn(k[(k[G>>2]|0)+(k[(k[f>>2]|0)+(H<<2)>>2]<<2)>>2]|0,4)}else{if(I){Vn(L,2);break}if((co(L)|0)!=538?(co(k[(k[G>>2]|0)+(k[(k[f>>2]|0)+(H<<2)>>2]<<2)>>2]|0)|0)!=541:0){O=H;N=16;break b}Vn(k[(k[G>>2]|0)+(k[(k[f>>2]|0)+(H<<2)>>2]<<2)>>2]|0,4)}while(0);NY((k[(k[G>>2]|0)+(k[(k[f>>2]|0)+(H<<2)>>2]<<2)>>2]|0)+72|0,j);H=H+1|0;if((H|0)>=(k[e>>2]|0))break a}if((N|0)==16){H=l+56|0;F=l+4|0;k[l>>2]=27524;k[H>>2]=27544;B=0;wa(508,l+56|0,F|0);E=B;B=0;if(E&1){E=Rb()|0;P=Q;R=E;vva(H);Qb(R|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[H>>2]=27488;B=0;va(448,F|0);E=B;B=0;do if(E&1){D=Rb()|0;S=Q;T=D}else{k[F>>2]=27560;D=l+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,F|0,c|0);z=B;B=0;if(z&1){z=Rb()|0;y=Q;Yua(c);Yua(D);Ava(F);S=y;T=z;break}Yua(c);B=0;z=Ia(40,l|0,74836,27)|0;y=B;B=0;c:do if(((((!(y&1)?(B=0,L=ya(431,k[(k[G>>2]|0)+(k[(k[f>>2]|0)+(O<<2)>>2]<<2)>>2]|0)|0,I=B,B=0,!(I&1)):0)?(B=0,I=ya(427,L|0)|0,L=B,B=0,!(L&1)):0)?(L=Lta(I)|0,B=0,J=Ia(40,z|0,I|0,L|0)|0,L=B,B=0,!(L&1)):0)?(B=0,L=Ia(40,J|0,146481,18)|0,J=B,B=0,!(J&1)):0)?(B=0,Xa(239,L|0,0)|0,L=B,B=0,!(L&1)):0){L=Ab(20)|0;B=0;eb(502,m|0,74107,73);J=B;B=0;do if(!(J&1)){B=0;eb(502,n|0,74864,29);I=B;B=0;if(I&1){I=Rb()|0;U=Q;Yua(m);V=U;W=I;break}B=0;wa(510,o|0,F|0);I=B;B=0;if(I&1){I=Rb()|0;X=I;Y=Q;Z=1}else{B=0;ua(163,L|0,m|0,n|0,2161,o|0);I=B;B=0;if(I&1)_=1;else{B=0;eb(503,L|0,1240,229);B=0;_=0}I=Rb()|0;U=Q;Yua(o);X=I;Y=U;Z=_}Yua(n);Yua(m);if(Z){V=Y;W=X}else{$=Y;aa=X;break c}}else{U=Rb()|0;V=Q;W=U}while(0);zb(L|0);$=V;aa=W}else N=35;while(0);if((N|0)==35){z=Rb()|0;$=Q;aa=z}k[l>>2]=27468;k[H>>2]=27488;k[F>>2]=27560;Yua(D);Ava(F);vva(H);A=$;C=aa;Qb(C|0)}while(0);P=S;R=T;vva(H);Qb(R|0)}else if((N|0)==48){F=q+56|0;E=q+4|0;k[q>>2]=27524;k[F>>2]=27544;B=0;wa(508,q+56|0,E|0);z=B;B=0;if(z&1){z=Rb()|0;ba=Q;ca=z;vva(F);Qb(ca|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[F>>2]=27488;B=0;va(448,E|0);z=B;B=0;do if(z&1){y=Rb()|0;da=Q;ea=y}else{k[E>>2]=27560;y=q+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,E|0,c|0);J=B;B=0;if(J&1){J=Rb()|0;U=Q;Yua(c);Yua(y);Ava(E);da=U;ea=J;break}Yua(c);B=0;J=Ia(40,q|0,74836,27)|0;U=B;B=0;d:do if(((((!(U&1)?(B=0,I=ya(431,k[(k[G>>2]|0)+(k[(k[f>>2]|0)+(M<<2)>>2]<<2)>>2]|0)|0,fa=B,B=0,!(fa&1)):0)?(B=0,fa=ya(427,I|0)|0,I=B,B=0,!(I&1)):0)?(I=Lta(fa)|0,B=0,ga=Ia(40,J|0,fa|0,I|0)|0,I=B,B=0,!(I&1)):0)?(B=0,I=Ia(40,ga|0,146481,18)|0,ga=B,B=0,!(ga&1)):0)?(B=0,Xa(239,I|0,0)|0,I=B,B=0,!(I&1)):0){I=Ab(20)|0;B=0;eb(502,s|0,74107,73);ga=B;B=0;do if(!(ga&1)){B=0;eb(502,t|0,74864,29);fa=B;B=0;if(fa&1){fa=Rb()|0;ha=Q;Yua(s);ia=fa;ja=ha;break}B=0;wa(510,u|0,E|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ka=1;la=Q;ma=ha}else{B=0;ua(163,I|0,s|0,t|0,2170,u|0);ha=B;B=0;if(ha&1)na=1;else{B=0;eb(503,I|0,1240,229);B=0;na=0}ha=Rb()|0;fa=Q;Yua(u);ka=na;la=fa;ma=ha}Yua(t);Yua(s);if(ka){ia=ma;ja=la}else{oa=la;pa=ma;break d}}else{ha=Rb()|0;ia=ha;ja=Q}while(0);zb(I|0);oa=ja;pa=ia}else N=67;while(0);if((N|0)==67){J=Rb()|0;oa=Q;pa=J}k[q>>2]=27468;k[F>>2]=27488;k[E>>2]=27560;Yua(y);Ava(E);vva(F);A=oa;C=pa;Qb(C|0)}while(0);ba=da;ca=ea;vva(F);Qb(ca|0)}}while(0);ca=k[f>>2]|0;if(ca)Tqa(ca);k[f>>2]=0;Ec[k[(k[v>>2]|0)+4>>2]&1023](v);r=b;return}function dB(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=a+20|0;k[a+72>>2]=0;c=a+48|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;b=k[c>>2]|0;if((b|0)>0){d=a+52|0;e=b;b=0;while(1){f=k[(k[d>>2]|0)+(b<<2)>>2]|0;if(!f)g=e;else{Dla(f);g=k[c>>2]|0}b=b+1|0;if((b|0)>=(g|0))break;else e=g}}Dla(k[a+56>>2]|0);Dla(k[a+60>>2]|0);Dla(k[a+64>>2]|0);g=k[a+68>>2]|0;if(!g)return;Dla(g);return}function eB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;e=r;r=r+272|0;f=e+248|0;g=e;h=e+224|0;i=e+88|0;j=e+72|0;l=e+60|0;m=e+48|0;n=(c|0)==215;if(n)if(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)o=214;else{r=e;return}else if((c|0)==227)if(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)o=225;else{r=e;return}else o=c;if(!(Tp(a,o)|0)){r=e;return}Mp(a,h,d,0);p[g>>3]=+p[b+(k[h>>2]<<3)>>3];p[g+8>>3]=+p[b+(k[h+4>>2]<<3)>>3];p[g+16>>3]=+p[b+(k[h+8>>2]<<3)>>3];p[g+24>>3]=+p[b+(k[h+12>>2]<<3)>>3];p[g+32>>3]=+p[b+(k[h+16>>2]<<3)>>3];p[g+40>>3]=+p[b+(k[h+20>>2]<<3)>>3];h=Qqa(16)|0;B=0;ib(285,h|0,o|0,g|0,738);g=B;B=0;if(g&1){g=Rb()|0;b=Q;Sqa(h);q=b;s=g;Qb(s|0)}g=oC(k[a+16>>2]|0,o)|0;if((Hc[k[(k[g>>2]|0)+20>>2]&511](g)|0)==559){r$(g,h);if(n){nd[k[(k[a>>2]|0)+220>>2]&1023](a,o,-1);r=e;return}if((c|0)!=227){r=e;return}nd[k[(k[a>>2]|0)+220>>2]&1023](a,o,-1);r=e;return}e=i+56|0;a=i+4|0;k[i>>2]=27524;k[e>>2]=27544;B=0;wa(508,i+56|0,a|0);c=B;B=0;if(c&1){c=Rb()|0;t=Q;u=c;vva(e);Qb(u|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[e>>2]=27488;B=0;va(448,a|0);c=B;B=0;do if(c&1){n=Rb()|0;v=Q;w=n}else{k[a>>2]=27560;n=i+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[i+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,a|0,f|0);h=B;B=0;if(h&1){h=Rb()|0;g=Q;Yua(f);Yua(n);Ava(a);v=g;w=h;break}Yua(f);B=0;h=Ia(40,i|0,74566,6)|0;g=B;B=0;a:do if((((!(g&1)?(B=0,b=ya(427,o|0)|0,d=B,B=0,!(d&1)):0)?(d=Lta(b)|0,B=0,x=Ia(40,h|0,b|0,d|0)|0,d=B,B=0,!(d&1)):0)?(B=0,d=Ia(40,x|0,74278,22)|0,x=B,B=0,!(x&1)):0)?(B=0,Xa(239,d|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,j|0,74107,73);x=B;B=0;do if(!(x&1)){B=0;eb(502,l|0,74894,26);b=B;B=0;if(b&1){b=Rb()|0;y=Q;Yua(j);z=y;A=b;break}B=0;wa(510,m|0,a|0);b=B;B=0;if(b&1){b=Rb()|0;C=Q;D=b;E=1}else{B=0;ua(163,d|0,j|0,l|0,2233,m|0);b=B;B=0;if(b&1)F=1;else{B=0;eb(503,d|0,1240,229);B=0;F=0}b=Rb()|0;y=Q;Yua(m);C=y;D=b;E=F}Yua(l);Yua(j);if(E){z=C;A=D}else{G=D;H=C;break a}}else{b=Rb()|0;z=Q;A=b}while(0);zb(d|0);G=A;H=z}else I=27;while(0);if((I|0)==27){h=Rb()|0;G=h;H=Q}k[i>>2]=27468;k[e>>2]=27488;k[a>>2]=27560;Yua(n);Ava(a);vva(e);q=H;s=G;Qb(s|0)}while(0);t=v;u=w;vva(e);Qb(u|0)}function fB(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;e=r;r=r+16|0;d=e;cO(f,d,482);f=k[d>>2]|0;k[a+44>>2]=k[(k[a+40>>2]|0)+(f<<2)>>2];d=k[(k[a+52>>2]|0)+(f<<2)>>2]|0;if(!d){k[a+20>>2]=0;r=e;return}else{f=Gla(d)|0;k[a+20>>2]=f;r=e;return}}function gB(a,b){a=a|0;b=b|0;k[a+44>>2]=b;return}function hB(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;b=r;r=r+368|0;c=b+344|0;d=b+208|0;e=b+196|0;f=b+184|0;g=b+36|0;h=b+48|0;i=b+24|0;j=b+12|0;l=b;m=a+28|0;n=k[m>>2]|0;switch(Hc[k[(k[n>>2]|0)+20>>2]&511](n)|0){case 583:{nd[k[(k[a>>2]|0)+216>>2]&1023](a,214,215);n=k[m>>2]|0;if(Hc[k[(k[n>>2]|0)+100>>2]&511](n)|0)nd[k[(k[a>>2]|0)+216>>2]&1023](a,225,227);break}case 585:{nd[k[(k[a>>2]|0)+216>>2]&1023](a,218,219);nd[k[(k[a>>2]|0)+216>>2]&1023](a,220,221);nd[k[(k[a>>2]|0)+216>>2]&1023](a,222,223);break}default:{n=d+56|0;o=d+4|0;k[d>>2]=27524;k[n>>2]=27544;B=0;wa(508,d+56|0,o|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;s=p;vva(n);Qb(s|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[n>>2]=27488;B=0;va(448,o|0);p=B;B=0;do if(p&1){t=Rb()|0;u=Q;v=t}else{k[o>>2]=27560;t=d+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,o|0,c|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(c);Yua(t);Ava(o);u=x;v=w;break}Yua(c);B=0;w=Ia(40,d|0,134695,17)|0;x=B;B=0;a:do if(!(x&1)?(B=0,Xa(239,w|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,e|0,74107,73);z=B;B=0;do if(!(z&1)){B=0;eb(502,f|0,74921,17);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(e);D=C;E=A;break}B=0;wa(510,g|0,o|0);A=B;B=0;if(A&1){A=Rb()|0;F=A;G=Q;H=1}else{B=0;ua(163,y|0,e|0,f|0,2280,g|0);A=B;B=0;if(A&1)I=1;else{B=0;eb(503,y|0,1240,229);B=0;I=0}A=Rb()|0;C=Q;Yua(g);F=A;G=C;H=I}Yua(f);Yua(e);if(H){D=G;E=F}else{J=G;K=F;break a}}else{C=Rb()|0;D=Q;E=C}while(0);zb(y|0);J=D;K=E}else L=20;while(0);if((L|0)==20){w=Rb()|0;J=Q;K=w}k[d>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);M=K;N=J;Qb(M|0)}while(0);q=u;s=v;vva(n);Qb(s|0)}}s=a+16|0;if(oC(k[s>>2]|0,674)|0)nd[k[(k[a>>2]|0)+216>>2]&1023](a,674,673);if(oC(k[s>>2]|0,677)|0)nd[k[(k[a>>2]|0)+216>>2]&1023](a,677,676);if(oC(k[s>>2]|0,258)|0)nd[k[(k[a>>2]|0)+216>>2]&1023](a,258,260);if(oC(k[s>>2]|0,259)|0)nd[k[(k[a>>2]|0)+216>>2]&1023](a,259,261);n=AA(a,0,1,2)|0;a=k[m>>2]|0;switch(Hc[k[(k[a>>2]|0)+20>>2]&511](a)|0){case 583:{sC(k[s>>2]|0,215)|0;sC(k[s>>2]|0,227)|0;O=k[s>>2]|0;sC(O,673)|0;P=k[s>>2]|0;sC(P,676)|0;R=k[s>>2]|0;sC(R,260)|0;S=k[s>>2]|0;sC(S,261)|0;r=b;return n|0}case 585:{O=k[s>>2]|0;sC(O,673)|0;P=k[s>>2]|0;sC(P,676)|0;R=k[s>>2]|0;sC(R,260)|0;S=k[s>>2]|0;sC(S,261)|0;r=b;return n|0}default:{n=h+56|0;b=h+4|0;k[h>>2]=27524;k[n>>2]=27544;B=0;wa(508,h+56|0,b|0);S=B;B=0;if(S&1){S=Rb()|0;T=Q;U=S;vva(n);Qb(U|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[n>>2]=27488;B=0;va(448,b|0);S=B;B=0;do if(S&1){s=Rb()|0;V=Q;W=s}else{k[b>>2]=27560;s=h+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);R=B;B=0;if(R&1){R=Rb()|0;P=Q;Yua(c);Yua(s);Ava(b);V=P;W=R;break}Yua(c);B=0;R=Ia(40,h|0,134695,17)|0;P=B;B=0;b:do if(!(P&1)?(B=0,Xa(239,R|0,0)|0,O=B,B=0,!(O&1)):0){O=Ab(20)|0;B=0;eb(502,i|0,74107,73);a=B;B=0;do if(!(a&1)){B=0;eb(502,j|0,74921,17);m=B;B=0;if(m&1){m=Rb()|0;v=Q;Yua(i);X=v;Y=m;break}B=0;wa(510,l|0,b|0);m=B;B=0;if(m&1){m=Rb()|0;Z=1;_=m;$=Q}else{B=0;ua(163,O|0,i|0,j|0,2295,l|0);m=B;B=0;if(m&1)aa=1;else{B=0;eb(503,O|0,1240,229);B=0;aa=0}m=Rb()|0;v=Q;Yua(l);Z=aa;_=m;$=v}Yua(j);Yua(i);if(Z){X=$;Y=_}else{ba=_;ca=$;break b}}else{v=Rb()|0;X=Q;Y=v}while(0);zb(O|0);ba=Y;ca=X}else L=53;while(0);if((L|0)==53){R=Rb()|0;ba=R;ca=Q}k[h>>2]=27468;k[n>>2]=27488;k[b>>2]=27560;Yua(s);Ava(b);vva(n);M=ba;N=ca;Qb(M|0)}while(0);T=V;U=W;vva(n);Qb(U|0)}}return 0}function iB(a){a=a|0;return AA(a,3,4,5)|0}function jB(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0.0,h=0.0;g=b*b+c*c+d*d;d=+$(+(+aa(+g)));c=g==-G?G:d;if(c*e/(f*6.0)<1.0){h=e*e/(f*12.0);return +h}else{h=e/(c*2.0);return +h}return +(0.0)}function kB(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0;b=r;r=r+128|0;c=b+112|0;d=b+64|0;e=b+56|0;f=b+48|0;g=b;k[c>>2]=0;Uo(a,c);h=a+16|0;i=oC(k[h>>2]|0,674)|0;j=oC(k[h>>2]|0,677)|0;l=oC(k[h>>2]|0,679)|0;m=Qqa(72)|0;B=0;va(493,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;Sqa(m);q=o;s=n;Qb(s|0)}n=d+8|0;o=d+24|0;t=0;do{Fc[k[(k[m>>2]|0)+28>>2]&1023](m,t);nd[k[(k[i>>2]|0)+48>>2]&1023](i,e,m);nd[k[(k[j>>2]|0)+48>>2]&1023](j,f,m);u=+p[e>>3];v=+p[f>>3];Yo(a,d,k[c>>2]|0,m,i,j,l);w=+p[e>>3];x=+p[f>>3];p[g+(t<<3)>>3]=(+p[d>>3]*(w*w)+ +p[n>>3]*(x*x)+ +p[o>>3]*(w*(x*2.0)))/(u*u+v*v+1.0e-14);t=t+1|0}while((t|0)!=6);t=k[h>>2]|0;h=Qqa(16)|0;B=0;ib(285,h|0,262,g|0,738);g=B;B=0;if(g&1){g=Rb()|0;o=Q;Sqa(h);q=o;s=g;Qb(s|0)}mC(t,h)|0;Ec[k[(k[m>>2]|0)+4>>2]&1023](m);m=k[c>>2]|0;if(!m){r=b;return}Tqa(m);r=b;return}function lB(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0;b=r;r=r+128|0;c=b+112|0;d=b+64|0;e=b+56|0;f=b+48|0;g=b;k[c>>2]=0;Uo(a,c);h=a+16|0;i=oC(k[h>>2]|0,674)|0;j=oC(k[h>>2]|0,677)|0;l=oC(k[h>>2]|0,679)|0;m=Qqa(72)|0;B=0;va(493,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;Sqa(m);q=o;s=n;Qb(s|0)}n=d+8|0;o=d+24|0;t=0;do{Fc[k[(k[m>>2]|0)+28>>2]&1023](m,t);nd[k[(k[i>>2]|0)+48>>2]&1023](i,e,m);nd[k[(k[j>>2]|0)+48>>2]&1023](j,f,m);u=+p[e>>3];v=+p[f>>3];Yo(a,d,k[c>>2]|0,m,i,j,l);w=+p[e>>3];x=+p[f>>3];p[g+(t<<3)>>3]=(+p[n>>3]*(w*w)+ +p[d>>3]*(x*x)-+p[o>>3]*(w*(x*2.0)))/(u*u+v*v+1.0e-14);t=t+1|0}while((t|0)!=6);t=k[h>>2]|0;h=Qqa(16)|0;B=0;ib(285,h|0,263,g|0,738);g=B;B=0;if(g&1){g=Rb()|0;o=Q;Sqa(h);q=o;s=g;Qb(s|0)}mC(t,h)|0;Ec[k[(k[m>>2]|0)+4>>2]&1023](m);m=k[c>>2]|0;if(!m){r=b;return}Tqa(m);r=b;return}function mB(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0,ba=0;b=r;r=r+288|0;c=b+240|0;d=b+216|0;e=b+208|0;f=b+200|0;g=b+192|0;h=b+184|0;i=b+176|0;j=b+168|0;l=b+160|0;m=b+152|0;n=b+144|0;o=b;if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){r=b;return}q=c;s=q+48|0;do{k[q>>2]=0;q=q+4|0}while((q|0)<(s|0));q=o+88|0;s=o+16|0;t=o+112|0;u=o+40|0;v=d+8|0;w=o+136|0;x=o+64|0;y=d+16|0;z=a+16|0;A=a;a:while(1){Ko(o,k[A+24>>2]|0,6,0);p[d>>3]=(+p[q>>3]-+p[s>>3])*.5;p[v>>3]=(+p[t>>3]-+p[u>>3])*.5;p[y>>3]=(+p[w>>3]-+p[x>>3])*.5;C=oC(k[z>>2]|0,674)|0;D=oC(k[z>>2]|0,677)|0;E=oC(k[z>>2]|0,671)|0;F=oC(k[z>>2]|0,653)|0;G=oC(k[z>>2]|0,716)|0;H=oC(k[z>>2]|0,717)|0;I=oC(k[z>>2]|0,719)|0;J=oC(k[z>>2]|0,339)|0;K=oC(k[z>>2]|0,353)|0;L=0;do{M=Qqa(72)|0;B=0;ib(291,M|0,L|0,L+3|0,11);N=B;B=0;if(N&1){O=M;P=8;break a}N=Hc[k[(k[M>>2]|0)+8>>2]&511](M)|0;if((N|0)<(Hc[k[(k[M>>2]|0)+12>>2]&511](M)|0)){R=d+(L<<3)|0;S=M+8|0;T=c+(L<<3)|0;U=N;do{Fc[k[(k[M>>2]|0)+24>>2]&1023](M,U);nd[k[(k[F>>2]|0)+48>>2]&1023](F,e,M);nd[k[(k[C>>2]|0)+48>>2]&1023](C,f,M);nd[k[(k[D>>2]|0)+48>>2]&1023](D,g,M);nd[k[(k[E>>2]|0)+48>>2]&1023](E,h,M);nd[k[(k[G>>2]|0)+48>>2]&1023](G,i,M);nd[k[(k[H>>2]|0)+48>>2]&1023](H,j,M);nd[k[(k[I>>2]|0)+48>>2]&1023](I,l,M);nd[k[(k[J>>2]|0)+48>>2]&1023](J,m,M);nd[k[(k[K>>2]|0)+48>>2]&1023](K,n,M);V=+p[m>>3];W=V-+Lp(A,o,M);V=+p[f>>3];X=+p[g>>3];Y=+p[h>>3];Z=+p[m>>3];_=+p[n>>3];if(W<Z&W<_){$=+p[R>>3]*+p[S>>3]*((V*V*+p[i>>3]+X*X*+p[l>>3]+V*(X*2.0)*+p[j>>3])/(Y*Y+1.0e-06));Y=+KY(Z,_);_=$*+VY(W,Y,+p[n>>3]);p[T>>3]=+p[T>>3]+_}U=U+1|0}while((U|0)<(Hc[k[(k[M>>2]|0)+12>>2]&511](M)|0))}Ec[k[(k[M>>2]|0)+4>>2]&1023](M);L=L+1|0}while((L|0)<3);if(Hc[k[(k[A>>2]|0)+252>>2]&511](A)|0)break;A=k[(k[A+72>>2]|0)+4>>2]|0}if((P|0)==8){P=Rb()|0;A=Q;Sqa(O);aa=A;ba=P;Qb(ba|0)}P=k[z>>2]|0;z=Qqa(16)|0;B=0;ib(285,z|0,246,c|0,738);c=B;B=0;if(c&1){c=Rb()|0;A=Q;Sqa(z);aa=A;ba=c;Qb(ba|0)}else{mC(P,z)|0;nd[k[(k[a>>2]|0)+220>>2]&1023](a,246,-1);r=b;return}}function nB(a){a=a|0;var b=0,c=0,d=0.0,e=0,f=0.0;b=r;r=r+16|0;c=b;kC(k[a+16>>2]|0,c,533);if(!($p(a)|0)){d=0.0;r=b;return +d}do if((k[c>>2]|0)!=536)if(Hc[k[(k[a>>2]|0)+252>>2]&511](a)|0)if((k[c>>2]|0)==536){e=5;break}else break;else{d=0.0;r=b;return +d}else e=5;while(0);if((e|0)==5){if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){d=0.0;r=b;return +d}if((k[c>>2]|0)==536){c=AA(a,0,1,2)|0;f=+Zc[k[(k[c>>2]|0)+456>>2]&255](c);e=k[c+28>>2]|0;if(e)Ec[k[(k[e>>2]|0)+4>>2]&1023](e);if(!c){d=f;r=b;return +d}Ec[k[(k[c>>2]|0)+4>>2]&1023](c);d=f;r=b;return +d}}c=AA(a,3,4,5)|0;f=+Zc[k[(k[c>>2]|0)+456>>2]&255](c);a=k[c+28>>2]|0;if(a)Ec[k[(k[a>>2]|0)+4>>2]&1023](a);if(!c){d=f;r=b;return +d}Ec[k[(k[c>>2]|0)+4>>2]&1023](c);d=f;r=b;return +d}function oB(a){a=a|0;var b=0,c=0,d=0,e=0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,s=0.0,t=0.0;b=r;r=r+160|0;c=b+144|0;d=b;dO(k[a+36>>2]|0,c,356);e=a+16|0;f=+qC(k[e>>2]|0,674);g=+qC(k[e>>2]|0,677);h=+qC(k[e>>2]|0,679);Ko(d,k[a+24>>2]|0,6,0);i=+p[d>>3];j=+p[d+8>>3];l=+p[d+16>>3];m=+p[d+24>>3];n=m<i?m:i;o=m>i?m:i;i=+p[d+32>>3];m=i<j?i:j;q=i>j?i:j;j=+p[d+40>>3];i=j<l?j:l;s=j>l?j:l;l=+p[d+48>>3];j=l<n?l:n;n=l>o?l:o;o=+p[d+56>>3];l=o<m?o:m;m=o>q?o:q;q=+p[d+64>>3];o=q<i?q:i;i=q>s?q:s;s=+p[d+72>>3];q=s<j?s:j;j=s>n?s:n;n=+p[d+80>>3];s=n<l?n:l;l=n>m?n:m;m=+p[d+88>>3];n=m<o?m:o;o=m>i?m:i;i=+p[d+96>>3];m=i<q?i:q;q=i>j?i:j;j=+p[d+104>>3];i=j<s?j:s;s=j>l?j:l;l=+p[d+112>>3];j=l<n?l:n;n=l>o?l:o;o=+p[d+120>>3];l=+p[d+128>>3];t=+p[d+136>>3];r=b;return +(+p[c>>3]/(f/((o>q?o:q)-(o<m?o:m))+g/((l>s?l:s)-(l<i?l:i))+h/((t>n?t:n)-(t<j?t:j))))}function pB(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0.0,m=0.0,n=0,o=0,q=0.0,s=0.0,t=0.0;b=r;r=r+192|0;c=b+176|0;d=b+180|0;e=b+168|0;f=b+160|0;g=b+152|0;h=b+144|0;j=b;if(!($p(a)|0)){l=0.0;r=b;return +l}if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){l=0.0;r=b;return +l}m=+WJ(k[a+32>>2]|0,265);n=Wo(a,40)|0;Wo(a,928)|0;Ko(j,k[a+24>>2]|0,6,0);Dc[k[(k[a>>2]|0)+132>>2]&255](a,c,e,f,d);o=hd[k[(k[a>>2]|0)+320>>2]&7](a,k[c>>2]|0,+p[e>>3],+p[f>>3],(i[d>>0]|0)!=1,3)|0;d=Hc[k[(k[o>>2]|0)+8>>2]&511](o)|0;if((d|0)<(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0)){f=o+8|0;q=0.0;e=d;while(1){Fc[k[(k[o>>2]|0)+24>>2]&1023](o,e);rd[k[(k[a>>2]|0)+264>>2]&511](a,h,j,o);nd[k[(k[n>>2]|0)+48>>2]&1023](n,g,o);s=q+ +p[g>>3]*+p[h>>3]*+p[f>>3];e=e+1|0;if((e|0)>=(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0)){t=s;break}else q=s}}else t=0.0;Ec[k[(k[o>>2]|0)+4>>2]&1023](o);l=m*t;r=b;return +l}function qB(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0.0,m=0.0,n=0,o=0,q=0.0,s=0.0,t=0.0;b=r;r=r+192|0;c=b+176|0;d=b+180|0;e=b+168|0;f=b+160|0;g=b+152|0;h=b+144|0;j=b;if(!($p(a)|0)){l=0.0;r=b;return +l}if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){l=0.0;r=b;return +l}m=+WJ(k[a+32>>2]|0,265);n=Wo(a,39)|0;Wo(a,928)|0;Ko(j,k[a+24>>2]|0,6,0);Dc[k[(k[a>>2]|0)+132>>2]&255](a,c,e,f,d);o=hd[k[(k[a>>2]|0)+320>>2]&7](a,k[c>>2]|0,+p[e>>3],+p[f>>3],(i[d>>0]|0)!=0,3)|0;d=Hc[k[(k[o>>2]|0)+8>>2]&511](o)|0;if((d|0)<(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0)){f=o+8|0;q=0.0;e=d;while(1){Fc[k[(k[o>>2]|0)+24>>2]&1023](o,e);rd[k[(k[a>>2]|0)+264>>2]&511](a,h,j,o);nd[k[(k[n>>2]|0)+48>>2]&1023](n,g,o);s=q+ +p[g>>3]*+p[h>>3]*+p[f>>3];e=e+1|0;if((e|0)>=(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0)){t=s;break}else q=s}}else t=0.0;Ec[k[(k[o>>2]|0)+4>>2]&1023](o);l=m*t;r=b;return +l}function rB(a){a=a|0;var b=0,c=0,d=0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0;b=r;r=r+160|0;c=b+144|0;d=b;e=+WJ(k[a+32>>2]|0,265);if(!($p(a)|0)){f=0.0;r=b;return +f}if(!(Hc[k[(k[a>>2]|0)+252>>2]&511](a)|0)){f=0.0;r=b;return +f}Ko(d,k[a+24>>2]|0,6,0);g=+p[d>>3];h=+p[d+8>>3];i=+$(+((g-+p[d+48>>3])*(+p[d+32>>3]-h)-(g-+p[d+24>>3])*(+p[d+56>>3]-h)))*.5;d=oC(k[a+16>>2]|0,388)|0;Fc[k[(k[d>>2]|0)+64>>2]&1023](d,c);f=e*i*+p[c>>3];r=b;return +f}function sB(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0.0,ha=0,ia=0;g=r;r=r+272|0;h=g+256|0;i=g+232|0;j=g+8|0;l=g+96|0;m=g+80|0;n=g+68|0;o=g+56|0;Gka(c,g,106352);zka(c,g+268|0,134866);k[(k[a+40>>2]|0)+(d<<2)>>2]=f;q=b*6|0;s=c+72|0;t=k[s>>2]|0;u=t+(q<<2)|0;k[i>>2]=k[u>>2];k[i+4>>2]=k[u+4>>2];k[i+8>>2]=k[u+8>>2];k[i+12>>2]=k[u+12>>2];k[i+16>>2]=k[u+16>>2];k[i+20>>2]=k[u+20>>2];do switch(f|0){case 738:{v=Rqa(24)|0;w=k[c+100>>2]|0;k[v>>2]=(k[u>>2]|0)+w;k[v+4>>2]=(k[t+((q|1)<<2)>>2]|0)+w;k[v+8>>2]=(k[t+(q+2<<2)>>2]|0)+w;k[v+12>>2]=(k[t+(q+3<<2)>>2]|0)+w;k[v+16>>2]=(k[t+(q+4<<2)>>2]|0)+w;k[v+20>>2]=(k[t+(q+5<<2)>>2]|0)+w;x=6;y=v;break}case 741:case 740:{v=Rqa(28)|0;w=k[c+100>>2]|0;k[v>>2]=(k[u>>2]|0)+w;k[v+4>>2]=(k[t+((q|1)<<2)>>2]|0)+w;k[v+8>>2]=(k[t+(q+2<<2)>>2]|0)+w;k[v+12>>2]=(k[t+(q+3<<2)>>2]|0)+w;k[v+16>>2]=(k[t+(q+4<<2)>>2]|0)+w;k[v+20>>2]=(k[t+(q+5<<2)>>2]|0)+w;k[v+24>>2]=b+1+w+(k[c+52>>2]|0);x=7;y=v;break}case 746:{v=Rqa(36)|0;w=k[c+100>>2]|0;k[v>>2]=(k[u>>2]|0)+w;k[v+4>>2]=(k[t+((q|1)<<2)>>2]|0)+w;k[v+8>>2]=(k[t+(q+2<<2)>>2]|0)+w;k[v+12>>2]=(k[t+(q+3<<2)>>2]|0)+w;k[v+16>>2]=(k[t+(q+4<<2)>>2]|0)+w;k[v+20>>2]=(k[t+(q+5<<2)>>2]|0)+w;z=b*9|0;A=k[c+84>>2]|0;C=w+1+(k[c+52>>2]|0)|0;k[v+24>>2]=C+(k[A+(z<<2)>>2]|0);k[v+28>>2]=C+(k[A+(z+1<<2)>>2]|0);k[v+32>>2]=C+(k[A+(z+2<<2)>>2]|0);x=9;y=v;break}case 747:{v=Rqa(48)|0;z=k[c+100>>2]|0;k[v>>2]=(k[u>>2]|0)+z;k[v+4>>2]=(k[t+((q|1)<<2)>>2]|0)+z;k[v+8>>2]=(k[t+(q+2<<2)>>2]|0)+z;k[v+12>>2]=(k[t+(q+3<<2)>>2]|0)+z;k[v+16>>2]=(k[t+(q+4<<2)>>2]|0)+z;k[v+20>>2]=(k[t+(q+5<<2)>>2]|0)+z;A=k[c+52>>2]|0;C=b*9|0;w=k[c+84>>2]|0;D=w+(C<<2)|0;E=z+1+A|0;k[v+24>>2]=E+(k[D>>2]<<1);F=w+(C+1<<2)|0;k[v+28>>2]=E+(k[F>>2]<<1);G=w+(C+2<<2)|0;k[v+32>>2]=E+(k[G>>2]<<1);E=z+2+A|0;k[v+36>>2]=E+(k[D>>2]<<1);k[v+40>>2]=E+(k[F>>2]<<1);k[v+44>>2]=E+(k[G>>2]<<1);x=12;y=v;break}case 745:{v=Rqa(48)|0;G=k[c+100>>2]|0;k[v>>2]=(k[u>>2]|0)+G;k[v+4>>2]=(k[t+((q|1)<<2)>>2]|0)+G;k[v+8>>2]=(k[t+(q+2<<2)>>2]|0)+G;k[v+12>>2]=(k[t+(q+3<<2)>>2]|0)+G;k[v+16>>2]=(k[t+(q+4<<2)>>2]|0)+G;k[v+20>>2]=(k[t+(q+5<<2)>>2]|0)+G;E=b*9|0;F=k[c+84>>2]|0;D=G+1+(k[c+52>>2]|0)|0;k[v+24>>2]=D+(k[F+(E+3<<2)>>2]|0);k[v+28>>2]=D+(k[F+(E+4<<2)>>2]|0);k[v+32>>2]=D+(k[F+(E+5<<2)>>2]|0);k[v+36>>2]=D+(k[F+(E+6<<2)>>2]|0);k[v+40>>2]=D+(k[F+(E+7<<2)>>2]|0);k[v+44>>2]=D+(k[F+(E+8<<2)>>2]|0);x=12;y=v;break}case 748:{v=Rqa(120)|0;E=c+100|0;F=k[E>>2]|0;k[v>>2]=(k[u>>2]|0)+F;k[v+4>>2]=(k[t+((q|1)<<2)>>2]|0)+F;k[v+8>>2]=(k[t+(q+2<<2)>>2]|0)+F;k[v+12>>2]=(k[t+(q+3<<2)>>2]|0)+F;k[v+16>>2]=(k[t+(q+4<<2)>>2]|0)+F;k[v+20>>2]=(k[t+(q+5<<2)>>2]|0)+F;D=c+52|0;G=k[D>>2]|0;A=b*9|0;z=c+84|0;C=k[z>>2]|0;w=C+(A<<2)|0;H=F+1+G|0;k[v+24>>2]=H+((k[w>>2]|0)*3|0);F=A+1|0;I=C+(F<<2)|0;k[v+28>>2]=H+((k[I>>2]|0)*3|0);J=A+2|0;K=C+(J<<2)|0;k[v+32>>2]=H+((k[K>>2]|0)*3|0);k[v+36>>2]=H+((k[C+(A+3<<2)>>2]|0)*3|0);k[v+40>>2]=H+((k[C+(A+4<<2)>>2]|0)*3|0);k[v+44>>2]=H+((k[C+(A+5<<2)>>2]|0)*3|0);k[v+48>>2]=H+((k[C+(A+6<<2)>>2]|0)*3|0);H=k[E>>2]|0;L=H+1|0;M=L+G|0;k[v+52>>2]=M+((k[C+(A+7<<2)>>2]|0)*3|0);k[v+56>>2]=M+((k[C+(A+8<<2)>>2]|0)*3|0);A=H+2|0;C=A+G|0;k[v+60>>2]=C+((k[w>>2]|0)*3|0);k[v+64>>2]=C+((k[I>>2]|0)*3|0);k[v+68>>2]=C+((k[K>>2]|0)*3|0);K=k[D>>2]|0;D=H+3+K|0;k[v+72>>2]=D+((k[w>>2]|0)*3|0);w=k[z>>2]|0;k[v+76>>2]=D+((k[w+(F<<2)>>2]|0)*3|0);k[v+80>>2]=D+((k[w+(J<<2)>>2]|0)*3|0);J=k[c+64>>2]|0;w=b*5|0;D=k[c+88>>2]|0;F=D+(w+2<<2)|0;z=L+K|0;k[v+84>>2]=z+(((k[F>>2]|0)+J|0)*3|0);L=D+(w+3<<2)|0;k[v+88>>2]=z+(((k[L>>2]|0)+J|0)*3|0);H=D+(w+4<<2)|0;k[v+92>>2]=z+(((k[H>>2]|0)+J|0)*3|0);k[v+96>>2]=A+K+(((k[F>>2]|0)+J|0)*3|0);A=k[E>>2]|0;E=A+2+K|0;k[v+100>>2]=E+(((k[L>>2]|0)+J|0)*3|0);k[v+104>>2]=E+(((k[H>>2]|0)+J|0)*3|0);E=A+3+K|0;k[v+108>>2]=E+(((k[F>>2]|0)+J|0)*3|0);k[v+112>>2]=E+(((k[L>>2]|0)+J|0)*3|0);k[v+116>>2]=E+(((k[H>>2]|0)+J|0)*3|0);x=30;y=v;break}case 742:{v=Rqa(72)|0;J=c+100|0;H=k[J>>2]|0;k[v>>2]=(k[u>>2]|0)+H;k[v+4>>2]=(k[t+((q|1)<<2)>>2]|0)+H;k[v+8>>2]=(k[t+(q+2<<2)>>2]|0)+H;k[v+12>>2]=(k[t+(q+3<<2)>>2]|0)+H;k[v+16>>2]=(k[t+(q+4<<2)>>2]|0)+H;k[v+20>>2]=(k[t+(q+5<<2)>>2]|0)+H;E=k[c+52>>2]|0;L=b*9|0;F=k[c+84>>2]|0;K=H+1+E|0;k[v+24>>2]=K+(k[F+(L<<2)>>2]|0);k[v+28>>2]=K+(k[F+(L+1<<2)>>2]|0);k[v+32>>2]=K+(k[F+(L+2<<2)>>2]|0);k[v+36>>2]=K+(k[F+(L+3<<2)>>2]|0);k[v+40>>2]=K+(k[F+(L+4<<2)>>2]|0);k[v+44>>2]=K+(k[F+(L+5<<2)>>2]|0);k[v+48>>2]=K+(k[F+(L+6<<2)>>2]|0);k[v+52>>2]=K+(k[F+(L+7<<2)>>2]|0);K=(k[J>>2]|0)+1+E|0;k[v+56>>2]=K+(k[F+(L+8<<2)>>2]|0);L=b*5|0;F=k[c+88>>2]|0;E=K+(k[c+64>>2]|0)|0;k[v+60>>2]=E+(k[F+(L+2<<2)>>2]|0);k[v+64>>2]=E+(k[F+(L+3<<2)>>2]|0);k[v+68>>2]=E+(k[F+(L+4<<2)>>2]|0);x=18;y=v;break}case 744:case 743:{v=Rqa(76)|0;L=c+100|0;F=k[L>>2]|0;k[v>>2]=(k[u>>2]|0)+F;k[v+4>>2]=(k[t+((q|1)<<2)>>2]|0)+F;k[v+8>>2]=(k[t+(q+2<<2)>>2]|0)+F;k[v+12>>2]=(k[t+(q+3<<2)>>2]|0)+F;k[v+16>>2]=(k[t+(q+4<<2)>>2]|0)+F;k[v+20>>2]=(k[t+(q+5<<2)>>2]|0)+F;E=k[c+52>>2]|0;K=b*9|0;J=k[c+84>>2]|0;H=F+1+E|0;k[v+24>>2]=H+(k[J+(K<<2)>>2]|0);k[v+28>>2]=H+(k[J+(K+1<<2)>>2]|0);k[v+32>>2]=H+(k[J+(K+2<<2)>>2]|0);k[v+36>>2]=H+(k[J+(K+3<<2)>>2]|0);k[v+40>>2]=H+(k[J+(K+4<<2)>>2]|0);k[v+44>>2]=H+(k[J+(K+5<<2)>>2]|0);k[v+48>>2]=H+(k[J+(K+6<<2)>>2]|0);k[v+52>>2]=H+(k[J+(K+7<<2)>>2]|0);H=k[L>>2]|0;L=H+1+E|0;k[v+56>>2]=L+(k[J+(K+8<<2)>>2]|0);K=k[c+64>>2]|0;J=b*5|0;F=k[c+88>>2]|0;A=L+K|0;k[v+60>>2]=A+(k[F+(J+2<<2)>>2]|0);k[v+64>>2]=A+(k[F+(J+3<<2)>>2]|0);k[v+68>>2]=A+(k[F+(J+4<<2)>>2]|0);k[v+72>>2]=b+1+H+E+K+(k[c+60>>2]|0);x=19;y=v;break}case 750:case 749:{v=Rqa(48)|0;K=k[c+100>>2]|0;k[v>>2]=(k[u>>2]|0)+K;E=t+((q|1)<<2)|0;k[v+4>>2]=(k[E>>2]|0)+K;H=t+(q+2<<2)|0;k[v+8>>2]=(k[H>>2]|0)+K;J=t+(q+3<<2)|0;k[v+12>>2]=(k[J>>2]|0)+K;F=t+(q+4<<2)|0;k[v+16>>2]=(k[F>>2]|0)+K;A=t+(q+5<<2)|0;k[v+20>>2]=(k[A>>2]|0)+K;L=(k[c+52>>2]|0)+K|0;k[v+24>>2]=L+(k[u>>2]|0);k[v+28>>2]=L+(k[E>>2]|0);k[v+32>>2]=L+(k[H>>2]|0);k[v+36>>2]=L+(k[J>>2]|0);k[v+40>>2]=L+(k[F>>2]|0);k[v+44>>2]=L+(k[A>>2]|0);x=12;y=v;break}case 752:case 751:{v=Rqa(52)|0;A=k[c+100>>2]|0;k[v>>2]=(k[u>>2]|0)+A;L=t+((q|1)<<2)|0;k[v+4>>2]=(k[L>>2]|0)+A;F=t+(q+2<<2)|0;k[v+8>>2]=(k[F>>2]|0)+A;J=t+(q+3<<2)|0;k[v+12>>2]=(k[J>>2]|0)+A;H=t+(q+4<<2)|0;k[v+16>>2]=(k[H>>2]|0)+A;E=t+(q+5<<2)|0;k[v+20>>2]=(k[E>>2]|0)+A;K=k[c+52>>2]|0;k[v+24>>2]=b+1+A+K;z=K+A+(k[c+56>>2]|0)|0;k[v+28>>2]=z+(k[u>>2]|0);k[v+32>>2]=z+(k[L>>2]|0);k[v+36>>2]=z+(k[F>>2]|0);k[v+40>>2]=z+(k[J>>2]|0);k[v+44>>2]=z+(k[H>>2]|0);k[v+48>>2]=z+(k[E>>2]|0);x=13;y=v;break}case 753:{v=Rqa(96)|0;E=c+100|0;z=k[E>>2]|0;k[v>>2]=(k[u>>2]|0)+z;H=q|1;k[v+4>>2]=(k[t+(H<<2)>>2]|0)+z;J=q+2|0;k[v+8>>2]=(k[t+(J<<2)>>2]|0)+z;F=q+3|0;k[v+12>>2]=(k[t+(F<<2)>>2]|0)+z;L=q+4|0;k[v+16>>2]=(k[t+(L<<2)>>2]|0)+z;A=q+5|0;k[v+20>>2]=(k[t+(A<<2)>>2]|0)+z;K=c+52|0;w=k[K>>2]|0;D=b*9|0;C=k[c+84>>2]|0;I=z+1+w|0;k[v+24>>2]=I+(k[C+(D<<2)>>2]|0);k[v+28>>2]=I+(k[C+(D+1<<2)>>2]|0);k[v+32>>2]=I+(k[C+(D+2<<2)>>2]|0);k[v+36>>2]=I+(k[C+(D+3<<2)>>2]|0);k[v+40>>2]=I+(k[C+(D+4<<2)>>2]|0);k[v+44>>2]=I+(k[C+(D+5<<2)>>2]|0);k[v+48>>2]=I+(k[C+(D+6<<2)>>2]|0);k[v+52>>2]=I+(k[C+(D+7<<2)>>2]|0);I=k[E>>2]|0;E=I+1+w|0;k[v+56>>2]=E+(k[C+(D+8<<2)>>2]|0);D=k[c+64>>2]|0;C=b*5|0;z=k[c+88>>2]|0;G=E+D|0;k[v+60>>2]=G+(k[z+(C+2<<2)>>2]|0);k[v+64>>2]=G+(k[z+(C+3<<2)>>2]|0);k[v+68>>2]=G+(k[z+(C+4<<2)>>2]|0);C=k[c+60>>2]|0;z=k[s>>2]|0;k[v+72>>2]=w+I+D+C+(k[z+(q<<2)>>2]|0);w=(k[K>>2]|0)+I+D+C|0;k[v+76>>2]=w+(k[z+(H<<2)>>2]|0);k[v+80>>2]=w+(k[z+(J<<2)>>2]|0);k[v+84>>2]=w+(k[z+(F<<2)>>2]|0);k[v+88>>2]=w+(k[z+(L<<2)>>2]|0);k[v+92>>2]=w+(k[z+(A<<2)>>2]|0);x=24;y=v;break}case 754:{v=Rqa(72)|0;A=c+100|0;z=k[A>>2]|0;k[v>>2]=(k[u>>2]|0)+z;k[v+4>>2]=(k[t+((q|1)<<2)>>2]|0)+z;k[v+8>>2]=(k[t+(q+2<<2)>>2]|0)+z;k[v+12>>2]=(k[t+(q+3<<2)>>2]|0)+z;k[v+16>>2]=(k[t+(q+4<<2)>>2]|0)+z;k[v+20>>2]=(k[t+(q+5<<2)>>2]|0)+z;w=k[c+52>>2]|0;L=b*9|0;F=k[c+84>>2]|0;J=z+1+w|0;k[v+24>>2]=J+(k[F+(L<<2)>>2]|0);k[v+28>>2]=J+(k[F+(L+1<<2)>>2]|0);k[v+32>>2]=J+(k[F+(L+2<<2)>>2]|0);k[v+36>>2]=J+(k[F+(L+3<<2)>>2]|0);k[v+40>>2]=J+(k[F+(L+4<<2)>>2]|0);k[v+44>>2]=J+(k[F+(L+5<<2)>>2]|0);k[v+48>>2]=J+(k[F+(L+6<<2)>>2]|0);k[v+52>>2]=J+(k[F+(L+7<<2)>>2]|0);J=(k[A>>2]|0)+1+w|0;k[v+56>>2]=J+(k[F+(L+8<<2)>>2]|0);L=b*5|0;F=k[c+88>>2]|0;w=J+(k[c+64>>2]|0)|0;k[v+60>>2]=w+(k[F+(L+2<<2)>>2]|0);k[v+64>>2]=w+(k[F+(L+3<<2)>>2]|0);k[v+68>>2]=w+(k[F+(L+4<<2)>>2]|0);x=18;y=v;break}case 756:{v=Rqa(144)|0;L=c+100|0;F=k[L>>2]|0;k[v>>2]=(k[u>>2]|0)+F;w=q|1;k[v+4>>2]=(k[t+(w<<2)>>2]|0)+F;J=q+2|0;k[v+8>>2]=(k[t+(J<<2)>>2]|0)+F;A=q+3|0;k[v+12>>2]=(k[t+(A<<2)>>2]|0)+F;z=q+4|0;k[v+16>>2]=(k[t+(z<<2)>>2]|0)+F;H=q+5|0;k[v+20>>2]=(k[t+(H<<2)>>2]|0)+F;C=c+52|0;D=k[C>>2]|0;I=b*9|0;K=c+84|0;G=k[K>>2]|0;E=G+(I<<2)|0;M=F+1+D|0;k[v+24>>2]=M+((k[E>>2]|0)*3|0);F=I+1|0;N=G+(F<<2)|0;k[v+28>>2]=M+((k[N>>2]|0)*3|0);O=I+2|0;P=G+(O<<2)|0;k[v+32>>2]=M+((k[P>>2]|0)*3|0);k[v+36>>2]=M+((k[G+(I+3<<2)>>2]|0)*3|0);k[v+40>>2]=M+((k[G+(I+4<<2)>>2]|0)*3|0);k[v+44>>2]=M+((k[G+(I+5<<2)>>2]|0)*3|0);k[v+48>>2]=M+((k[G+(I+6<<2)>>2]|0)*3|0);M=k[L>>2]|0;R=M+1|0;S=R+D|0;k[v+52>>2]=S+((k[G+(I+7<<2)>>2]|0)*3|0);k[v+56>>2]=S+((k[G+(I+8<<2)>>2]|0)*3|0);I=M+2|0;G=I+D|0;k[v+60>>2]=G+((k[E>>2]|0)*3|0);k[v+64>>2]=G+((k[N>>2]|0)*3|0);k[v+68>>2]=G+((k[P>>2]|0)*3|0);P=k[C>>2]|0;G=M+3+P|0;k[v+72>>2]=G+((k[E>>2]|0)*3|0);E=k[K>>2]|0;k[v+76>>2]=G+((k[E+(F<<2)>>2]|0)*3|0);k[v+80>>2]=G+((k[E+(O<<2)>>2]|0)*3|0);O=c+64|0;E=k[O>>2]|0;G=b*5|0;F=k[c+88>>2]|0;K=F+(G+2<<2)|0;M=R+P|0;k[v+84>>2]=M+(((k[K>>2]|0)+E|0)*3|0);R=F+(G+3<<2)|0;k[v+88>>2]=M+(((k[R>>2]|0)+E|0)*3|0);N=F+(G+4<<2)|0;k[v+92>>2]=M+(((k[N>>2]|0)+E|0)*3|0);k[v+96>>2]=I+P+(((k[K>>2]|0)+E|0)*3|0);I=k[L>>2]|0;L=I+2+P|0;k[v+100>>2]=L+(((k[R>>2]|0)+E|0)*3|0);k[v+104>>2]=L+(((k[N>>2]|0)+E|0)*3|0);L=I+3+P|0;k[v+108>>2]=L+(((k[K>>2]|0)+E|0)*3|0);k[v+112>>2]=L+(((k[R>>2]|0)+E|0)*3|0);k[v+116>>2]=L+(((k[N>>2]|0)+E|0)*3|0);N=k[c+60>>2]|0;L=k[s>>2]|0;R=(N+E|0)*3|0;E=(k[C>>2]|0)+I|0;k[v+120>>2]=E+(k[L+(q<<2)>>2]|0)+R;k[v+124>>2]=E+(k[L+(w<<2)>>2]|0)+R;R=(N+(k[O>>2]|0)|0)*3|0;k[v+128>>2]=E+(k[L+(J<<2)>>2]|0)+R;k[v+132>>2]=E+(k[L+(A<<2)>>2]|0)+R;k[v+136>>2]=E+(k[L+(z<<2)>>2]|0)+R;k[v+140>>2]=E+(k[L+(H<<2)>>2]|0)+R;x=36;y=v;break}case 757:{v=Rqa(100)|0;R=c+100|0;H=k[R>>2]|0;k[v>>2]=(k[u>>2]|0)+H;L=q|1;k[v+4>>2]=(k[t+(L<<2)>>2]|0)+H;E=q+2|0;k[v+8>>2]=(k[t+(E<<2)>>2]|0)+H;z=q+3|0;k[v+12>>2]=(k[t+(z<<2)>>2]|0)+H;A=q+4|0;k[v+16>>2]=(k[t+(A<<2)>>2]|0)+H;J=q+5|0;k[v+20>>2]=(k[t+(J<<2)>>2]|0)+H;O=c+52|0;N=k[O>>2]|0;w=b*9|0;I=k[c+84>>2]|0;C=H+1+N|0;k[v+24>>2]=C+(k[I+(w<<2)>>2]|0);k[v+28>>2]=C+(k[I+(w+1<<2)>>2]|0);k[v+32>>2]=C+(k[I+(w+2<<2)>>2]|0);k[v+36>>2]=C+(k[I+(w+3<<2)>>2]|0);k[v+40>>2]=C+(k[I+(w+4<<2)>>2]|0);k[v+44>>2]=C+(k[I+(w+5<<2)>>2]|0);k[v+48>>2]=C+(k[I+(w+6<<2)>>2]|0);k[v+52>>2]=C+(k[I+(w+7<<2)>>2]|0);C=k[R>>2]|0;R=C+1+N|0;k[v+56>>2]=R+(k[I+(w+8<<2)>>2]|0);w=k[c+64>>2]|0;I=b*5|0;H=k[c+88>>2]|0;K=R+w|0;k[v+60>>2]=K+(k[H+(I+2<<2)>>2]|0);k[v+64>>2]=K+(k[H+(I+3<<2)>>2]|0);k[v+68>>2]=K+(k[H+(I+4<<2)>>2]|0);I=k[c+60>>2]|0;k[v+72>>2]=b+1+C+N+w+I;N=k[O>>2]|0;O=k[c+56>>2]|0;k[v+76>>2]=L+C+N+w+I+O;k[v+80>>2]=E+C+N+w+I+O;k[v+84>>2]=z+C+N+w+I+O;k[v+88>>2]=A+C+N+w+I+O;k[v+92>>2]=J+C+N+w+I+O;k[v+96>>2]=q+6+C+N+w+I+O;x=25;y=v;break}case 758:{v=Rqa(76)|0;O=c+100|0;I=k[O>>2]|0;k[v>>2]=(k[u>>2]|0)+I;k[v+4>>2]=(k[t+((q|1)<<2)>>2]|0)+I;k[v+8>>2]=(k[t+(q+2<<2)>>2]|0)+I;k[v+12>>2]=(k[t+(q+3<<2)>>2]|0)+I;k[v+16>>2]=(k[t+(q+4<<2)>>2]|0)+I;k[v+20>>2]=(k[t+(q+5<<2)>>2]|0)+I;w=k[c+52>>2]|0;N=b*9|0;C=k[c+84>>2]|0;J=I+1+w|0;k[v+24>>2]=J+(k[C+(N<<2)>>2]|0);k[v+28>>2]=J+(k[C+(N+1<<2)>>2]|0);k[v+32>>2]=J+(k[C+(N+2<<2)>>2]|0);k[v+36>>2]=J+(k[C+(N+3<<2)>>2]|0);k[v+40>>2]=J+(k[C+(N+4<<2)>>2]|0);k[v+44>>2]=J+(k[C+(N+5<<2)>>2]|0);k[v+48>>2]=J+(k[C+(N+6<<2)>>2]|0);k[v+52>>2]=J+(k[C+(N+7<<2)>>2]|0);J=k[O>>2]|0;O=J+1+w|0;k[v+56>>2]=O+(k[C+(N+8<<2)>>2]|0);N=k[c+64>>2]|0;C=b*5|0;I=k[c+88>>2]|0;A=O+N|0;k[v+60>>2]=A+(k[I+(C+2<<2)>>2]|0);k[v+64>>2]=A+(k[I+(C+3<<2)>>2]|0);k[v+68>>2]=A+(k[I+(C+4<<2)>>2]|0);k[v+72>>2]=b+1+J+w+N+(k[c+60>>2]|0);x=19;y=v;break}default:{v=l+56|0;N=l+4|0;k[l>>2]=27524;k[v>>2]=27544;B=0;wa(508,l+56|0,N|0);w=B;B=0;if(w&1){w=Rb()|0;T=Q;U=w;vva(v);Qb(U|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[v>>2]=27488;B=0;va(448,N|0);w=B;B=0;do if(w&1){J=Rb()|0;V=Q;W=J}else{k[N>>2]=27560;J=l+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[l+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,N|0,h|0);C=B;B=0;if(C&1){C=Rb()|0;I=Q;Yua(h);Yua(J);Ava(N);V=I;W=C;break}Yua(h);B=0;C=Ia(40,l|0,145867,15)|0;I=B;B=0;a:do if((((!(I&1)?(B=0,A=ya(427,f|0)|0,O=B,B=0,!(O&1)):0)?(O=Lta(A)|0,B=0,z=Ia(40,C|0,A|0,O|0)|0,O=B,B=0,!(O&1)):0)?(B=0,O=Ia(40,z|0,146481,18)|0,z=B,B=0,!(z&1)):0)?(B=0,Xa(239,O|0,0)|0,O=B,B=0,!(O&1)):0){O=Ab(20)|0;B=0;eb(502,m|0,74107,73);z=B;B=0;do if(!(z&1)){B=0;eb(502,n|0,74939,6);A=B;B=0;if(A&1){A=Rb()|0;E=Q;Yua(m);X=E;Y=A;break}B=0;wa(510,o|0,N|0);A=B;B=0;if(A&1){A=Rb()|0;Z=Q;_=A;$=1}else{B=0;ua(163,O|0,m|0,n|0,3063,o|0);A=B;B=0;if(A&1)aa=1;else{B=0;eb(503,O|0,1240,229);B=0;aa=0}A=Rb()|0;E=Q;Yua(o);Z=E;_=A;$=aa}Yua(n);Yua(m);if($){X=Z;Y=_}else{ba=Z;ca=_;break a}}else{A=Rb()|0;X=Q;Y=A}while(0);zb(O|0);ba=X;ca=Y}else da=35;while(0);if((da|0)==35){C=Rb()|0;ba=Q;ca=C}k[l>>2]=27468;k[v>>2]=27488;k[N>>2]=27560;Yua(J);Ava(N);vva(v);ea=ba;fa=ca;Qb(fa|0)}while(0);T=V;U=W;vva(v);Qb(U|0)}}while(0);Xq(a+48|0,y,x,d);k[a+20>>2]=0;Tqa(y);nd[k[(k[a>>2]|0)+548>>2]&1023](a,b,c);if((e|0)!=497){r=g;return}e=(Jka(c,129145)|0)+(b<<3)|0;do if(+p[e>>3]==541.0){if((Jka(c,135096)|0)!=0?(Jka(c,129435)|0)!=0:0){y=(k[i>>2]|0)+-1|0;d=(Jka(c,135096)|0)+(y<<3)|0;ga=+p[d>>3];d=(Jka(c,129435)|0)+(y<<3)|0;p[j>>3]=ga*+p[d>>3];d=i+4|0;y=(k[d>>2]|0)+-1|0;x=(Jka(c,135096)|0)+(y<<3)|0;ga=+p[x>>3];x=(Jka(c,129435)|0)+(y<<3)|0;y=j+8|0;p[y>>3]=ga*+p[x>>3];x=i+8|0;U=(k[x>>2]|0)+-1|0;W=(Jka(c,135096)|0)+(U<<3)|0;ga=+p[W>>3];W=(Jka(c,129435)|0)+(U<<3)|0;U=j+16|0;p[U>>3]=ga*+p[W>>3];W=i+12|0;V=(k[W>>2]|0)+-1|0;T=(Jka(c,135096)|0)+(V<<3)|0;ga=+p[T>>3];T=(Jka(c,129435)|0)+(V<<3)|0;V=j+24|0;p[V>>3]=ga*+p[T>>3];T=(k[i+16>>2]|0)+-1|0;ca=(Jka(c,135096)|0)+(T<<3)|0;ga=+p[ca>>3];ca=(Jka(c,129435)|0)+(T<<3)|0;ba=j+32|0;p[ba>>3]=ga*+p[ca>>3];ca=(k[i+20>>2]|0)+-1|0;l=(Jka(c,135096)|0)+(ca<<3)|0;ga=+p[l>>3];l=(Jka(c,129435)|0)+(ca<<3)|0;da=j+40|0;p[da>>3]=ga*+p[l>>3];l=a+16|0;Y=k[l>>2]|0;X=Qqa(16)|0;B=0;ib(285,X|0,683,j|0,738);_=B;B=0;if(_&1){_=Rb()|0;Z=Q;Sqa(X);ea=Z;fa=_;Qb(fa|0)}mC(Y,X)|0;X=(k[i>>2]|0)+-1|0;Y=(Jka(c,135096)|0)+(X<<3)|0;ga=+p[Y>>3];Y=(Jka(c,129435)|0)+(X<<3)|0;p[j>>3]=ga*(1.0-+p[Y>>3]);Y=(k[d>>2]|0)+-1|0;d=(Jka(c,135096)|0)+(Y<<3)|0;ga=+p[d>>3];d=(Jka(c,129435)|0)+(Y<<3)|0;p[y>>3]=ga*(1.0-+p[d>>3]);d=(k[x>>2]|0)+-1|0;x=(Jka(c,135096)|0)+(d<<3)|0;ga=+p[x>>3];x=(Jka(c,129435)|0)+(d<<3)|0;p[U>>3]=ga*(1.0-+p[x>>3]);x=(k[W>>2]|0)+-1|0;W=(Jka(c,135096)|0)+(x<<3)|0;ga=+p[W>>3];W=(Jka(c,129435)|0)+(x<<3)|0;p[V>>3]=ga*(1.0-+p[W>>3]);W=(Jka(c,135096)|0)+(T<<3)|0;ga=+p[W>>3];W=(Jka(c,129435)|0)+(T<<3)|0;p[ba>>3]=ga*(1.0-+p[W>>3]);W=(Jka(c,135096)|0)+(ca<<3)|0;ga=+p[W>>3];W=(Jka(c,129435)|0)+(ca<<3)|0;p[da>>3]=ga*(1.0-+p[W>>3]);W=k[l>>2]|0;l=Qqa(16)|0;B=0;ib(285,l|0,681,j|0,738);da=B;B=0;if(!(da&1)){mC(W,l)|0;break}W=Rb()|0;da=Q;Sqa(l);ea=da;fa=W;Qb(fa|0)}ha=j;ia=ha+48|0;do{k[ha>>2]=0;ha=ha+4|0}while((ha|0)<(ia|0));v=a+16|0;W=k[v>>2]|0;da=Qqa(16)|0;B=0;ib(285,da|0,683,j|0,738);l=B;B=0;if(l&1){l=Rb()|0;ca=Q;Sqa(da);ea=ca;fa=l;Qb(fa|0)}mC(W,da)|0;da=k[v>>2]|0;v=Qqa(16)|0;B=0;ib(285,v|0,681,j|0,738);W=B;B=0;if(!(W&1)){mC(da,v)|0;break}da=Rb()|0;W=Q;Sqa(v);ea=W;fa=da;Qb(fa|0)}while(0);e=(Jka(c,129145)|0)+(b<<3)|0;if(!(+p[e>>3]==538.0)){r=g;return}if((Jka(c,135096)|0)!=0?(Jka(c,129435)|0)!=0:0){e=(k[i>>2]|0)+-1|0;b=(Jka(c,135096)|0)+(e<<3)|0;ga=+p[b>>3];b=(Jka(c,129435)|0)+(e<<3)|0;p[j>>3]=ga*+p[b>>3];b=(k[i+4>>2]|0)+-1|0;da=(Jka(c,135096)|0)+(b<<3)|0;ga=+p[da>>3];da=(Jka(c,129435)|0)+(b<<3)|0;W=j+8|0;p[W>>3]=ga*+p[da>>3];da=(k[i+8>>2]|0)+-1|0;v=(Jka(c,135096)|0)+(da<<3)|0;ga=+p[v>>3];v=(Jka(c,129435)|0)+(da<<3)|0;l=j+16|0;p[l>>3]=ga*+p[v>>3];v=(k[i+12>>2]|0)+-1|0;ca=(Jka(c,135096)|0)+(v<<3)|0;ga=+p[ca>>3];ca=(Jka(c,129435)|0)+(v<<3)|0;ba=j+24|0;p[ba>>3]=ga*+p[ca>>3];ca=(k[i+16>>2]|0)+-1|0;T=(Jka(c,135096)|0)+(ca<<3)|0;ga=+p[T>>3];T=(Jka(c,129435)|0)+(ca<<3)|0;V=j+32|0;p[V>>3]=ga*+p[T>>3];T=(k[i+20>>2]|0)+-1|0;i=(Jka(c,135096)|0)+(T<<3)|0;ga=+p[i>>3];i=(Jka(c,129435)|0)+(T<<3)|0;x=j+40|0;p[x>>3]=ga*+p[i>>3];i=a+16|0;U=k[i>>2]|0;d=Qqa(16)|0;B=0;ib(285,d|0,683,j|0,738);y=B;B=0;if(y&1){y=Rb()|0;Y=Q;Sqa(d);ea=Y;fa=y;Qb(fa|0)}mC(U,d)|0;d=(Jka(c,135096)|0)+(e<<3)|0;ga=+p[d>>3];d=(Jka(c,129435)|0)+(e<<3)|0;p[j>>3]=ga*(1.0-+p[d>>3]);d=(Jka(c,135096)|0)+(b<<3)|0;ga=+p[d>>3];d=(Jka(c,129435)|0)+(b<<3)|0;p[W>>3]=ga*(1.0-+p[d>>3]);d=(Jka(c,135096)|0)+(da<<3)|0;ga=+p[d>>3];d=(Jka(c,129435)|0)+(da<<3)|0;p[l>>3]=ga*(1.0-+p[d>>3]);d=(Jka(c,135096)|0)+(v<<3)|0;ga=+p[d>>3];d=(Jka(c,129435)|0)+(v<<3)|0;p[ba>>3]=ga*(1.0-+p[d>>3]);d=(Jka(c,135096)|0)+(ca<<3)|0;ga=+p[d>>3];d=(Jka(c,129435)|0)+(ca<<3)|0;p[V>>3]=ga*(1.0-+p[d>>3]);d=(Jka(c,135096)|0)+(T<<3)|0;ga=+p[d>>3];d=(Jka(c,129435)|0)+(T<<3)|0;p[x>>3]=ga*(1.0-+p[d>>3]);d=k[i>>2]|0;i=Qqa(16)|0;B=0;ib(285,i|0,680,j|0,738);x=B;B=0;if(x&1){x=Rb()|0;T=Q;Sqa(i);ea=T;fa=x;Qb(fa|0)}else{mC(d,i)|0;r=g;return}}ha=j;ia=ha+48|0;do{k[ha>>2]=0;ha=ha+4|0}while((ha|0)<(ia|0));ha=a+16|0;a=k[ha>>2]|0;ia=Qqa(16)|0;B=0;ib(285,ia|0,683,j|0,738);i=B;B=0;if(i&1){i=Rb()|0;d=Q;Sqa(ia);ea=d;fa=i;Qb(fa|0)}mC(a,ia)|0;ia=k[ha>>2]|0;ha=Qqa(16)|0;B=0;ib(285,ha|0,680,j|0,738);j=B;B=0;if(j&1){j=Rb()|0;a=Q;Sqa(ha);ea=a;fa=j;Qb(fa|0)}else{mC(ia,ha)|0;r=g;return}}function tB(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=r;r=r+32|0;c=b+16|0;d=b+8|0;e=b;if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){r=b;return}cO(k[a+36>>2]|0,c,575);f=a+16|0;g=oC(k[f>>2]|0,k[c>>2]|0)|0;c=oC(k[f>>2]|0,287)|0;f=Qqa(72)|0;B=0;va(493,f|0);h=B;B=0;if(h&1){h=Rb()|0;Sqa(f);Qb(h|0)}h=a+44|0;if((XB(a,k[h>>2]|0)|0)>0){i=a+20|0;j=0;do{nd[k[(k[f>>2]|0)+32>>2]&1023](f,k[h>>2]|0,j);nd[k[(k[c>>2]|0)+48>>2]&1023](c,e,f);if(+p[e>>3]==1.0){nd[k[(k[g>>2]|0)+48>>2]&1023](g,d,f);Un(k[(k[i>>2]|0)+(j<<2)>>2]|0,0,+p[d>>3])}j=j+1|0}while((j|0)<(XB(a,k[h>>2]|0)|0))}Ec[k[(k[f>>2]|0)+4>>2]&1023](f);r=b;return}function uB(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=r;r=r+16|0;c=b+8|0;d=b;if(!(Hc[k[(k[a>>2]|0)+252>>2]&511](a)|0)){r=b;return}cO(k[a+36>>2]|0,c,575);e=oC(k[a+16>>2]|0,k[c>>2]|0)|0;c=Qqa(72)|0;B=0;va(493,c|0);f=B;B=0;if(f&1){f=Rb()|0;Sqa(c);Qb(f|0)}f=a+20|0;nd[k[(k[c>>2]|0)+32>>2]&1023](c,738,3);nd[k[(k[e>>2]|0)+48>>2]&1023](e,d,c);Un(k[(k[f>>2]|0)+12>>2]|0,0,+p[d>>3]);nd[k[(k[c>>2]|0)+32>>2]&1023](c,738,4);nd[k[(k[e>>2]|0)+48>>2]&1023](e,d,c);Un(k[(k[f>>2]|0)+16>>2]|0,0,+p[d>>3]);nd[k[(k[c>>2]|0)+32>>2]&1023](c,738,5);nd[k[(k[e>>2]|0)+48>>2]&1023](e,d,c);Un(k[(k[f>>2]|0)+20>>2]|0,0,+p[d>>3]);Ec[k[(k[c>>2]|0)+4>>2]&1023](c);r=b;return}function vB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0;e=a+24|0;a=c+4|0;f=0;g=0;while(1){h=b+((Co(k[(k[e>>2]|0)+(f<<2)>>2]|0)|0)<<3)|0;if(+p[h>>3]!=0.0){h=Co(k[(k[e>>2]|0)+(f<<2)>>2]|0)|0;if(k[c>>2]|0){i=k[k[a>>2]>>2]|0;Jc[k[(k[i>>2]|0)+20>>2]&1](i,h,-1.0,0)}h=d+((Co(k[(k[e>>2]|0)+(f<<2)>>2]|0)|0)<<3)|0;if(+p[h>>3]>=0.0)j=g+1|0;else j=g}else j=g;f=f+1|0;if((f|0)==6){l=j;break}else g=j}return l|0}function wB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;WB(a,b,c,d,e,738);return}function xB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ZB(a,b,c,d,738);return}function yB(a){a=a|0;return hC(a,k[a+44>>2]|0)|0}function zB(a,b){a=a|0;b=b|0;return Ao(k[(k[a+24>>2]|0)+(b<<2)>>2]|0)|0}function AB(a,b,c){a=a|0;b=b|0;c=c|0;a=Rqa(24)|0;k[a>>2]=0;k[a+4>>2]=3;k[a+8>>2]=1;k[a+12>>2]=4;k[a+16>>2]=2;k[a+20>>2]=5;k[b>>2]=a;k[c>>2]=3;return}function BB(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0;h=r;r=r+64|0;i=h+56|0;j=h+48|0;l=h;Yo(a,l,c,d,e,f,g);m=k[a+28>>2]|0;Tc[k[(k[m>>2]|0)+108>>2]&15](m,j,3,c,d,e,f,g);Fp(a,i,l,+p[j>>3]);p[b>>3]=+p[i>>3];r=h;return}function CB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0.0,o=0.0,q=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;e=r;r=r+240|0;f=e+224|0;g=e;h=e+88|0;i=e+72|0;j=e+60|0;l=e+48|0;m=Rqa(96)|0;xp(a,g,d);n=+p[g>>3];o=+p[g+8>>3];q=+p[g+16>>3];if(n*o>0.0){s=q/(q-o);t=q/(q-n);g=q<0.0;d=g&1;u=+p[c+48>>3];a=g?3:0;p[m+(a<<3)>>3]=u+s*(+p[c+24>>3]-u);v=+p[c+56>>3];p[m+(a+1<<3)>>3]=v+s*(+p[c+32>>3]-v);w=+p[c+64>>3];p[m+(a+2<<3)>>3]=w+s*(+p[c+40>>3]-w);a=0-(d^1)&3;p[m+(a<<3)>>3]=u+t*(+p[c>>3]-u);p[m+(a+1<<3)>>3]=v+t*(+p[c+8>>3]-v);p[m+(a+2<<3)>>3]=w+t*(+p[c+16>>3]-w);w=+p[c+120>>3];a=(d^3)*3|0;p[m+(a<<3)>>3]=w+s*(+p[c+96>>3]-w);v=+p[c+128>>3];p[m+(a+1<<3)>>3]=v+s*(+p[c+104>>3]-v);u=+p[c+136>>3];p[m+(a+2<<3)>>3]=u+s*(+p[c+112>>3]-u);a=(d|2)*3|0;p[m+(a<<3)>>3]=w+t*(+p[c+72>>3]-w);p[m+(a+1<<3)>>3]=v+t*(+p[c+80>>3]-v);p[m+(a+2<<3)>>3]=u+t*(+p[c+88>>3]-u);k[b>>2]=m;r=e;return}if(o*q>0.0){u=n/(n-q);t=n/(n-o);a=n<0.0;d=a&1;v=+p[c>>3];g=a?3:0;p[m+(g<<3)>>3]=v+u*(+p[c+48>>3]-v);w=+p[c+8>>3];p[m+(g+1<<3)>>3]=w+u*(+p[c+56>>3]-w);s=+p[c+16>>3];p[m+(g+2<<3)>>3]=s+u*(+p[c+64>>3]-s);g=0-(d^1)&3;p[m+(g<<3)>>3]=v+t*(+p[c+24>>3]-v);p[m+(g+1<<3)>>3]=w+t*(+p[c+32>>3]-w);p[m+(g+2<<3)>>3]=s+t*(+p[c+40>>3]-s);s=+p[c+72>>3];g=(d^3)*3|0;p[m+(g<<3)>>3]=s+u*(+p[c+120>>3]-s);w=+p[c+80>>3];p[m+(g+1<<3)>>3]=w+u*(+p[c+128>>3]-w);v=+p[c+88>>3];p[m+(g+2<<3)>>3]=v+u*(+p[c+136>>3]-v);g=(d|2)*3|0;p[m+(g<<3)>>3]=s+t*(+p[c+96>>3]-s);p[m+(g+1<<3)>>3]=w+t*(+p[c+104>>3]-w);p[m+(g+2<<3)>>3]=v+t*(+p[c+112>>3]-v);k[b>>2]=m;r=e;return}if(n*q>0.0){v=o/(o-n);t=o/(o-q);g=o<0.0;d=g&1;w=+p[c+24>>3];a=g?3:0;p[m+(a<<3)>>3]=w+v*(+p[c>>3]-w);s=+p[c+32>>3];p[m+(a+1<<3)>>3]=s+v*(+p[c+8>>3]-s);u=+p[c+40>>3];p[m+(a+2<<3)>>3]=u+v*(+p[c+16>>3]-u);a=0-(d^1)&3;p[m+(a<<3)>>3]=w+t*(+p[c+48>>3]-w);p[m+(a+1<<3)>>3]=s+t*(+p[c+56>>3]-s);p[m+(a+2<<3)>>3]=u+t*(+p[c+64>>3]-u);u=+p[c+96>>3];a=(d^3)*3|0;p[m+(a<<3)>>3]=u+v*(+p[c+72>>3]-u);s=+p[c+104>>3];p[m+(a+1<<3)>>3]=s+v*(+p[c+80>>3]-s);w=+p[c+112>>3];p[m+(a+2<<3)>>3]=w+v*(+p[c+88>>3]-w);a=(d|2)*3|0;p[m+(a<<3)>>3]=u+t*(+p[c+120>>3]-u);p[m+(a+1<<3)>>3]=s+t*(+p[c+128>>3]-s);p[m+(a+2<<3)>>3]=w+t*(+p[c+136>>3]-w);k[b>>2]=m;r=e;return}a=n==0.0;d=o==0.0;if(a&d){p[m>>3]=+p[c>>3];p[m+8>>3]=+p[c+8>>3];p[m+16>>3]=+p[c+16>>3];p[m+24>>3]=+p[c+24>>3];p[m+32>>3]=+p[c+32>>3];p[m+40>>3]=+p[c+40>>3];p[m+48>>3]=+p[c+96>>3];p[m+56>>3]=+p[c+104>>3];p[m+64>>3]=+p[c+112>>3];p[m+72>>3]=+p[c+72>>3];p[m+80>>3]=+p[c+80>>3];p[m+88>>3]=+p[c+88>>3];k[b>>2]=m;r=e;return}g=q==0.0;if(a&g){p[m>>3]=+p[c+48>>3];p[m+8>>3]=+p[c+56>>3];p[m+16>>3]=+p[c+64>>3];p[m+24>>3]=+p[c>>3];p[m+32>>3]=+p[c+8>>3];p[m+40>>3]=+p[c+16>>3];p[m+48>>3]=+p[c+72>>3];p[m+56>>3]=+p[c+80>>3];p[m+64>>3]=+p[c+88>>3];p[m+72>>3]=+p[c+120>>3];p[m+80>>3]=+p[c+128>>3];p[m+88>>3]=+p[c+136>>3];k[b>>2]=m;r=e;return}if(d&g){p[m>>3]=+p[c+24>>3];p[m+8>>3]=+p[c+32>>3];p[m+16>>3]=+p[c+40>>3];p[m+24>>3]=+p[c+48>>3];p[m+32>>3]=+p[c+56>>3];p[m+40>>3]=+p[c+64>>3];p[m+48>>3]=+p[c+120>>3];p[m+56>>3]=+p[c+128>>3];p[m+64>>3]=+p[c+136>>3];p[m+72>>3]=+p[c+96>>3];p[m+80>>3]=+p[c+104>>3];p[m+88>>3]=+p[c+112>>3];k[b>>2]=m;r=e;return}e=h+56|0;m=h+4|0;k[h>>2]=27524;k[e>>2]=27544;B=0;wa(508,h+56|0,m|0);b=B;B=0;if(b&1){b=Rb()|0;x=Q;y=b;vva(e);Qb(y|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[e>>2]=27488;B=0;va(448,m|0);b=B;B=0;do if(b&1){c=Rb()|0;z=Q;A=c}else{k[m>>2]=27560;c=h+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,m|0,f|0);g=B;B=0;if(g&1){g=Rb()|0;d=Q;Yua(f);Yua(c);Ava(m);z=d;A=g;break}Yua(f);B=0;g=Ia(40,h|0,74946,16)|0;d=B;B=0;if(!(d&1)?(B=0,Xa(239,g|0,0)|0,g=B,B=0,!(g&1)):0){g=Ab(20)|0;B=0;eb(502,i|0,74107,73);d=B;B=0;do if(!(d&1)){B=0;eb(502,j|0,74963,23);a=B;B=0;if(a&1){a=Rb()|0;C=Q;Yua(i);D=C;E=a;break}B=0;wa(510,l|0,m|0);a=B;B=0;if(a&1){a=Rb()|0;F=Q;G=a;H=1}else{B=0;ua(163,g|0,i|0,j|0,3373,l|0);a=B;B=0;if(a&1)I=1;else{B=0;eb(503,g|0,1240,229);B=0;I=0}a=Rb()|0;C=Q;Yua(l);F=C;G=a;H=I}Yua(j);Yua(i);if(H){D=F;E=G}else{J=F;K=G;k[h>>2]=27468;k[e>>2]=27488;k[m>>2]=27560;Yua(c);Ava(m);vva(e);Qb(K|0)}}else{a=Rb()|0;D=Q;E=a}while(0);zb(g|0);J=D;K=E;k[h>>2]=27468;k[e>>2]=27488;k[m>>2]=27560;Yua(c);Ava(m);vva(e);Qb(K|0)}d=Rb()|0;J=Q;K=d;k[h>>2]=27468;k[e>>2]=27488;k[m>>2]=27560;Yua(c);Ava(m);vva(e);Qb(K|0)}while(0);x=z;y=A;vva(e);Qb(y|0)}function DB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,74987,35)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,74107,73);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,75023,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,3382,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function EB(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75047,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75327,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,50,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function FB(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75047,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75312,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,54,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function GB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,a|0,75047,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,75292,19);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(a);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,a|0,f|0,73,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(a);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(E|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function HB(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;f=r;r=r+192|0;e=f+176|0;d=f+40|0;c=f+24|0;b=f+12|0;a=f;f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,g|0,e|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(e);Yua(l);Ava(g);m=p;n=o;break}Yua(e);B=0;o=Ia(40,d|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,c|0,75047,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,b|0,75268,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);v=u;w=t;break}B=0;wa(510,a|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,c|0,b|0,74,a|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(a);x=u;y=t;z=A}Yua(b);Yua(c);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(D|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function IB(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75047,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75251,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,100,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function JB(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75047,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,98621,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,111,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return +(0.0)}function KB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,75047,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,99229,6);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,115,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0);return +(0.0)}function LB(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75047,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75240,10);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,116,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return +(0.0)}function MB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,75047,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75231,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,119,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0);return 0}function NB(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75047,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75211,19);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,158,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function OB(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;var i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;f=r;r=r+192|0;e=f+176|0;d=f+40|0;c=f+24|0;b=f+12|0;a=f;f=d+56|0;i=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(f);Qb(m|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=d+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[d+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,i|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);Yua(n);Ava(i);o=s;p=q;break}Yua(e);B=0;q=Ia(40,d|0,149435,20)|0;s=B;B=0;a:do if(!(s&1)?(B=0,Xa(239,q|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,c|0,75047,85);u=B;B=0;do if(!(u&1)){B=0;eb(502,b|0,75190,20);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);x=w;y=v;break}B=0;wa(510,a|0,i|0);v=B;B=0;if(v&1){v=Rb()|0;z=Q;A=v;C=1}else{B=0;ua(163,t|0,c|0,b|0,185,a|0);v=B;B=0;if(v&1)D=1;else{B=0;eb(503,t|0,1240,229);B=0;D=0}v=Rb()|0;w=Q;Yua(a);z=w;A=v;C=D}Yua(b);Yua(c);if(C){x=z;y=A}else{E=z;F=A;break a}}else{v=Rb()|0;x=Q;y=v}while(0);zb(t|0);E=x;F=y}else G=16;while(0);if((G|0)==16){q=Rb()|0;E=Q;F=q}k[d>>2]=27468;k[f>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(f);Qb(F|0)}while(0);l=o;m=p;vva(f);Qb(m|0)}function PB(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;var i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;f=r;r=r+192|0;e=f+176|0;d=f+40|0;c=f+24|0;b=f+12|0;a=f;f=d+56|0;i=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(f);Qb(m|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=d+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[d+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,i|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);Yua(n);Ava(i);o=s;p=q;break}Yua(e);B=0;q=Ia(40,d|0,149435,20)|0;s=B;B=0;a:do if(!(s&1)?(B=0,Xa(239,q|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,c|0,75047,85);u=B;B=0;do if(!(u&1)){B=0;eb(502,b|0,75166,23);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);x=w;y=v;break}B=0;wa(510,a|0,i|0);v=B;B=0;if(v&1){v=Rb()|0;z=Q;A=v;C=1}else{B=0;ua(163,t|0,c|0,b|0,186,a|0);v=B;B=0;if(v&1)D=1;else{B=0;eb(503,t|0,1240,229);B=0;D=0}v=Rb()|0;w=Q;Yua(a);z=w;A=v;C=D}Yua(b);Yua(c);if(C){x=z;y=A}else{E=z;F=A;break a}}else{v=Rb()|0;x=Q;y=v}while(0);zb(t|0);E=x;F=y}else G=16;while(0);if((G|0)==16){q=Rb()|0;E=Q;F=q}k[d>>2]=27468;k[f>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(f);Qb(F|0)}while(0);l=o;m=p;vva(f);Qb(m|0)}function QB(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149435,20)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75047,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75153,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,188,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return +(0.0)}function RB(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149435,20)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75047,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75143,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,187,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function SB(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149435,20)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75047,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,75133,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,174,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function TB(a){a=a|0;return}function UB(a){a=a|0;return}function VB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;e=a+176|0;f=a+40|0;g=a+24|0;h=a+12|0;i=a;switch(d|0){case 739:case 738:{j=Rqa(12)|0;k[j>>2]=0;k[j+4>>2]=1;k[j+8>>2]=2;l=j;m=3;k[b>>2]=m;k[c>>2]=l;r=a;return}case 741:case 740:{j=Rqa(12)|0;k[j>>2]=0;k[j+4>>2]=1;k[j+8>>2]=2;l=j;m=3;k[b>>2]=m;k[c>>2]=l;r=a;return}case 745:{j=Rqa(24)|0;k[j>>2]=0;k[j+4>>2]=1;k[j+8>>2]=2;k[j+12>>2]=6;k[j+16>>2]=7;k[j+20>>2]=8;l=j;m=6;k[b>>2]=m;k[c>>2]=l;r=a;return}case 746:{j=Rqa(12)|0;k[j>>2]=0;k[j+4>>2]=1;k[j+8>>2]=2;l=j;m=3;k[b>>2]=m;k[c>>2]=l;r=a;return}case 747:{j=Rqa(12)|0;k[j>>2]=0;k[j+4>>2]=1;k[j+8>>2]=2;l=j;m=3;k[b>>2]=m;k[c>>2]=l;r=a;return}case 742:{j=Rqa(24)|0;k[j>>2]=0;k[j+4>>2]=1;k[j+8>>2]=2;k[j+12>>2]=9;k[j+16>>2]=10;k[j+20>>2]=11;l=j;m=6;k[b>>2]=m;k[c>>2]=l;r=a;return}case 743:{j=Rqa(24)|0;k[j>>2]=0;k[j+4>>2]=1;k[j+8>>2]=2;k[j+12>>2]=9;k[j+16>>2]=10;k[j+20>>2]=11;l=j;m=6;k[b>>2]=m;k[c>>2]=l;r=a;return}case 748:{j=Rqa(24)|0;k[j>>2]=0;k[j+4>>2]=1;k[j+8>>2]=2;k[j+12>>2]=9;k[j+16>>2]=10;k[j+20>>2]=11;l=j;m=6;k[b>>2]=m;k[c>>2]=l;r=a;return}default:{a=f+56|0;l=f+4|0;k[f>>2]=27524;k[a>>2]=27544;B=0;wa(508,f+56|0,l|0);c=B;B=0;if(c&1){c=Rb()|0;n=Q;o=c;vva(a);Qb(o|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[a>>2]=27488;B=0;va(448,l|0);c=B;B=0;do if(c&1){m=Rb()|0;p=Q;q=m}else{k[l>>2]=27560;m=f+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,l|0,e|0);b=B;B=0;if(b&1){b=Rb()|0;j=Q;Yua(e);Yua(m);Ava(l);p=j;q=b;break}Yua(e);B=0;b=Ia(40,f|0,132447,13)|0;j=B;B=0;if((((!(j&1)?(B=0,j=ya(427,d|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(j)|0,B=0,t=Ia(40,b|0,j|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,75348,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,75425,16);j=B;B=0;if(j&1){j=Rb()|0;b=Q;Yua(g);u=b;v=j;break}B=0;wa(510,i|0,l|0);j=B;B=0;if(j&1){j=Rb()|0;w=Q;x=j;y=1}else{B=0;ua(163,s|0,g|0,h|0,115,i|0);j=B;B=0;if(j&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}j=Rb()|0;b=Q;Yua(i);w=b;x=j;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[a>>2]=27488;k[l>>2]=27560;Yua(m);Ava(l);vva(a);Qb(C|0)}}else{j=Rb()|0;u=Q;v=j}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[a>>2]=27488;k[l>>2]=27560;Yua(m);Ava(l);vva(a);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[a>>2]=27488;k[l>>2]=27560;Yua(m);Ava(l);vva(a);Qb(C|0)}while(0);n=p;o=q;vva(a);Qb(o|0)}}}function WB(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0;g=r;r=r+720|0;h=g;i=XB(0,f)|0;YB(a,h,d,e,f);f=(i|0)>0;if(f){j=0.0;e=0;while(1){k=j+ +p[h+(e<<3)>>3]*+p[c+(e<<3)>>3];e=e+1|0;if((e|0)==(i|0)){l=k;break}else j=k}if(f){j=0.0;e=0;while(1){k=j+ +p[h+(e+i<<3)>>3]*+p[c+(e<<3)>>3];e=e+1|0;if((e|0)==(i|0)){m=k;break}else j=k}if(f){f=i<<1;j=0.0;e=0;while(1){k=j+ +p[h+(e+f<<3)>>3]*+p[c+(e<<3)>>3];e=e+1|0;if((e|0)==(i|0)){n=l;o=m;q=k;break}else j=k}}else{n=l;o=m;q=0.0}}else{n=l;o=0.0;q=0.0}}else{n=0.0;o=0.0;q=0.0}p[b>>3]=n;p[b+8>>3]=o;p[b+16>>3]=q;r=g;return}function XB(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;do switch(b|0){case 736:{h=1;r=a;return h|0}case 738:{h=6;r=a;return h|0}case 739:{h=6;r=a;return h|0}case 740:{h=7;r=a;return h|0}case 741:{h=7;r=a;return h|0}case 742:{h=18;r=a;return h|0}case 743:{h=19;r=a;return h|0}case 744:{h=19;r=a;return h|0}case 745:{h=12;r=a;return h|0}case 746:{h=9;r=a;return h|0}case 748:{h=30;r=a;return h|0}case 747:{h=12;r=a;return h|0}case 749:{h=12;r=a;return h|0}case 750:{h=12;r=a;return h|0}case 752:{h=13;r=a;return h|0}case 751:{h=13;r=a;return h|0}case 753:{h=24;r=a;return h|0}case 754:{h=18;r=a;return h|0}case 756:{h=36;r=a;return h|0}case 757:{h=25;r=a;return h|0}case 758:{h=19;r=a;return h|0}case 921:{h=0;r=a;return h|0}default:{i=d+56|0;j=d+4|0;k[d>>2]=27524;k[i>>2]=27544;B=0;wa(508,d+56|0,j|0);l=B;B=0;if(l&1){l=Rb()|0;m=Q;n=l;vva(i);Qb(n|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[i>>2]=27488;B=0;va(448,j|0);l=B;B=0;do if(l&1){o=Rb()|0;p=Q;q=o}else{k[j>>2]=27560;o=d+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,j|0,c|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(c);Yua(o);Ava(j);p=t;q=s;break}Yua(c);B=0;s=Ia(40,d|0,132447,13)|0;t=B;B=0;if((((!(t&1)?(B=0,t=ya(427,b|0)|0,u=B,B=0,!(u&1)):0)?(u=Lta(t)|0,B=0,v=Ia(40,s|0,t|0,u|0)|0,u=B,B=0,!(u&1)):0)?(B=0,u=Ia(40,v|0,146481,18)|0,v=B,B=0,!(v&1)):0)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,e|0,75348,76);v=B;B=0;do if(!(v&1)){B=0;eb(502,f|0,75442,13);t=B;B=0;if(t&1){t=Rb()|0;s=Q;Yua(e);w=s;x=t;break}B=0;wa(510,g|0,j|0);t=B;B=0;if(t&1){t=Rb()|0;y=Q;z=t;A=1}else{B=0;ua(163,u|0,e|0,f|0,1054,g|0);t=B;B=0;if(t&1)C=1;else{B=0;eb(503,u|0,1240,229);B=0;C=0}t=Rb()|0;s=Q;Yua(g);y=s;z=t;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;k[d>>2]=27468;k[i>>2]=27488;k[j>>2]=27560;Yua(o);Ava(j);vva(i);Qb(E|0)}}else{t=Rb()|0;w=Q;x=t}while(0);zb(u|0);D=w;E=x;k[d>>2]=27468;k[i>>2]=27488;k[j>>2]=27560;Yua(o);Ava(j);vva(i);Qb(E|0)}v=Rb()|0;D=Q;E=v;k[d>>2]=27468;k[i>>2]=27488;k[j>>2]=27560;Yua(o);Ava(j);vva(i);Qb(E|0)}while(0);m=p;n=q;vva(i);Qb(n|0)}}while(0);return 0}function YB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0;a=r;r=r+864|0;f=a+792|0;g=a+720|0;h=a;i=XB(0,e)|0;bC(0,h,d,e);$B(0,f,c,d);eY(g,f);if((i|0)<=0){r=a;return}j=+p[g>>3];k=+p[g+8>>3];l=+p[g+16>>3];f=i<<1;m=+p[g+24>>3];n=+p[g+32>>3];o=+p[g+40>>3];q=+p[g+48>>3];s=+p[g+56>>3];t=+p[g+64>>3];g=0;do{u=+p[h+(g<<3)>>3];d=g+i|0;v=+p[h+(d<<3)>>3];c=g+f|0;w=+p[h+(c<<3)>>3];p[b+(g<<3)>>3]=j*u+k*v+l*w;p[b+(d<<3)>>3]=m*u+n*v+o*w;p[b+(c<<3)>>3]=q*u+s*v+t*w;g=g+1|0}while((g|0)!=(i|0));r=a;return}function ZB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0.0,j=0.0,k=0.0;a=r;r=r+240|0;f=a;g=XB(0,e)|0;_B(0,f,d,e);if((g|0)>0){h=0;i=0.0}else{j=0.0;p[b>>3]=j;r=a;return}while(1){k=i+ +p[f+(h<<3)>>3]*+p[c+(h<<3)>>3];h=h+1|0;if((h|0)==(g|0)){j=k;break}else i=k}p[b>>3]=j;r=a;return}function _B(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0.0,l=0,m=0.0,n=0,o=0,q=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;a=r;r=r+192|0;e=a+176|0;f=a+40|0;g=a+24|0;h=a+12|0;i=a;j=+p[c+64>>3];do switch(d|0){case 736:{p[b>>3]=1.0;r=a;return}case 739:case 738:{l=c+40|0;m=1.0-j;p[b>>3]=m*+p[l>>3]*.5;n=c+48|0;p[b+8>>3]=m*+p[n>>3]*.5;o=c+56|0;p[b+16>>3]=m*+p[o>>3]*.5;m=j+1.0;p[b+24>>3]=m*+p[l>>3]*.5;p[b+32>>3]=m*+p[n>>3]*.5;p[b+40>>3]=m*+p[o>>3]*.5;r=a;return}case 741:case 740:{o=c+40|0;m=1.0-j;p[b>>3]=m*+p[o>>3]*.5;n=c+48|0;p[b+8>>3]=m*+p[n>>3]*.5;l=c+56|0;p[b+16>>3]=m*+p[l>>3]*.5;q=j+1.0;p[b+24>>3]=q*+p[o>>3]*.5;p[b+32>>3]=q*+p[n>>3]*.5;p[b+40>>3]=q*+p[l>>3]*.5;p[b+48>>3]=m*(q*(+p[o>>3]*27.0*+p[n>>3]*+p[l>>3]));r=a;return}case 745:{l=c+40|0;q=+p[l>>3];m=1.0-j;p[b>>3]=m*(q*(q*2.0+-1.0))*.5;n=c+48|0;q=+p[n>>3];p[b+8>>3]=m*(q*(q*2.0+-1.0))*.5;o=c+56|0;q=+p[o>>3];p[b+16>>3]=m*(q*(q*2.0+-1.0))*.5;q=+p[l>>3];s=j+1.0;p[b+24>>3]=s*(q*(q*2.0+-1.0))*.5;q=+p[n>>3];p[b+32>>3]=s*(q*(q*2.0+-1.0))*.5;q=+p[o>>3];p[b+40>>3]=s*(q*(q*2.0+-1.0))*.5;p[b+48>>3]=m*(+p[o>>3]*4.0*+p[n>>3])*.5;p[b+56>>3]=m*(+p[o>>3]*4.0*+p[l>>3])*.5;p[b+64>>3]=m*(+p[l>>3]*4.0*+p[n>>3])*.5;p[b+72>>3]=s*(+p[o>>3]*4.0*+p[n>>3])*.5;p[b+80>>3]=s*(+p[o>>3]*4.0*+p[l>>3])*.5;p[b+88>>3]=s*(+p[l>>3]*4.0*+p[n>>3])*.5;r=a;return}case 746:{n=c+40|0;s=j+-1.0;p[b>>3]=s*(j*+p[n>>3])*.5;l=c+48|0;p[b+8>>3]=s*(j*+p[l>>3])*.5;o=c+56|0;p[b+16>>3]=s*(j*+p[o>>3])*.5;s=j+1.0;p[b+24>>3]=s*(j*+p[n>>3])*.5;p[b+32>>3]=s*(j*+p[l>>3])*.5;p[b+40>>3]=s*(j*+p[o>>3])*.5;s=1.0-j*j;p[b+48>>3]=s*+p[n>>3];p[b+56>>3]=s*+p[l>>3];p[b+64>>3]=s*+p[o>>3];r=a;return}case 742:{o=c+40|0;s=+p[o>>3];m=j+-1.0;p[b>>3]=m*(j*(s*(s*2.0+-1.0)))*.5;l=c+48|0;s=+p[l>>3];p[b+8>>3]=m*(j*(s*(s*2.0+-1.0)))*.5;n=c+56|0;s=+p[n>>3];p[b+16>>3]=m*(j*(s*(s*2.0+-1.0)))*.5;s=+p[o>>3];q=j+1.0;p[b+24>>3]=q*(j*(s*(s*2.0+-1.0)))*.5;s=+p[l>>3];p[b+32>>3]=q*(j*(s*(s*2.0+-1.0)))*.5;s=+p[n>>3];p[b+40>>3]=q*(j*(s*(s*2.0+-1.0)))*.5;s=+p[o>>3];t=1.0-j*j;p[b+48>>3]=t*(s*(s*2.0+-1.0));s=+p[l>>3];p[b+56>>3]=t*(s*(s*2.0+-1.0));s=+p[n>>3];p[b+64>>3]=t*(s*(s*2.0+-1.0));p[b+72>>3]=m*(j*(+p[n>>3]*4.0*+p[l>>3]))*.5;p[b+80>>3]=m*(j*(+p[n>>3]*4.0*+p[o>>3]))*.5;p[b+88>>3]=m*(j*(+p[o>>3]*4.0*+p[l>>3]))*.5;p[b+96>>3]=q*(j*(+p[n>>3]*4.0*+p[l>>3]))*.5;p[b+104>>3]=q*(j*(+p[n>>3]*4.0*+p[o>>3]))*.5;p[b+112>>3]=q*(j*(+p[o>>3]*4.0*+p[l>>3]))*.5;p[b+120>>3]=t*(+p[n>>3]*4.0*+p[l>>3]);p[b+128>>3]=t*(+p[n>>3]*4.0*+p[o>>3]);p[b+136>>3]=t*(+p[o>>3]*4.0*+p[l>>3]);r=a;return}case 744:case 743:{l=c+40|0;t=+p[l>>3];q=j+-1.0;p[b>>3]=q*(j*(t*(t*2.0+-1.0)))*.5;o=c+48|0;t=+p[o>>3];p[b+8>>3]=q*(j*(t*(t*2.0+-1.0)))*.5;n=c+56|0;t=+p[n>>3];p[b+16>>3]=q*(j*(t*(t*2.0+-1.0)))*.5;t=+p[l>>3];m=j+1.0;p[b+24>>3]=m*(j*(t*(t*2.0+-1.0)))*.5;t=+p[o>>3];p[b+32>>3]=m*(j*(t*(t*2.0+-1.0)))*.5;t=+p[n>>3];p[b+40>>3]=m*(j*(t*(t*2.0+-1.0)))*.5;t=+p[l>>3];s=1.0-j*j;p[b+48>>3]=s*(t*(t*2.0+-1.0));t=+p[o>>3];p[b+56>>3]=s*(t*(t*2.0+-1.0));t=+p[n>>3];p[b+64>>3]=s*(t*(t*2.0+-1.0));p[b+72>>3]=q*(j*(+p[n>>3]*4.0*+p[o>>3]))*.5;p[b+80>>3]=q*(j*(+p[n>>3]*4.0*+p[l>>3]))*.5;p[b+88>>3]=q*(j*(+p[l>>3]*4.0*+p[o>>3]))*.5;p[b+96>>3]=m*(j*(+p[n>>3]*4.0*+p[o>>3]))*.5;p[b+104>>3]=m*(j*(+p[n>>3]*4.0*+p[l>>3]))*.5;p[b+112>>3]=m*(j*(+p[l>>3]*4.0*+p[o>>3]))*.5;p[b+120>>3]=s*(+p[n>>3]*4.0*+p[o>>3]);p[b+128>>3]=s*(+p[n>>3]*4.0*+p[l>>3]);p[b+136>>3]=s*(+p[l>>3]*4.0*+p[o>>3]);p[b+144>>3]=(1.0-j)*(m*(+p[l>>3]*27.0*+p[o>>3]*+p[n>>3]));r=a;return}case 748:{n=c+40|0;m=+p[n>>3];s=j+-1.0;q=j+-.5;t=j+.5;p[b>>3]=t*(j*(q*(s*(m*(m*2.0+-1.0)*.6666666666666666))));o=c+48|0;m=+p[o>>3];p[b+8>>3]=t*(j*(q*(s*(m*(m*2.0+-1.0)*.6666666666666666))));l=c+56|0;m=+p[l>>3];p[b+16>>3]=t*(j*(q*(s*(m*(m*2.0+-1.0)*.6666666666666666))));m=+p[n>>3];u=j+1.0;p[b+24>>3]=u*(t*(j*(q*(m*(m*2.0+-1.0)*.6666666666666666))));m=+p[o>>3];p[b+32>>3]=u*(t*(j*(q*(m*(m*2.0+-1.0)*.6666666666666666))));m=+p[l>>3];p[b+40>>3]=u*(t*(j*(q*(m*(m*2.0+-1.0)*.6666666666666666))));m=+p[n>>3];p[b+48>>3]=u*(t*(q*(s*(m*(m*2.0+-1.0)*4.0))));m=+p[o>>3];p[b+56>>3]=u*(t*(q*(s*(m*(m*2.0+-1.0)*4.0))));m=+p[l>>3];p[b+64>>3]=u*(t*(q*(s*(m*(m*2.0+-1.0)*4.0))));p[b+72>>3]=t*(j*(q*(s*(+p[o>>3]*4.0*+p[l>>3]*.6666666666666666))));p[b+80>>3]=t*(j*(q*(s*(+p[n>>3]*4.0*+p[l>>3]*.6666666666666666))));p[b+88>>3]=t*(j*(q*(s*(+p[n>>3]*4.0*+p[o>>3]*.6666666666666666))));p[b+96>>3]=u*(t*(j*(q*(+p[o>>3]*4.0*+p[l>>3]*.6666666666666666))));p[b+104>>3]=u*(t*(j*(q*(+p[n>>3]*4.0*+p[l>>3]*.6666666666666666))));p[b+112>>3]=u*(t*(j*(q*(+p[n>>3]*4.0*+p[o>>3]*.6666666666666666))));m=+p[n>>3];p[b+120>>3]=u*(j*(q*(s*(m*(m*2.0+-1.0)*-2.6666666666666665))));m=+p[o>>3];p[b+128>>3]=u*(j*(q*(s*(m*(m*2.0+-1.0)*-2.6666666666666665))));m=+p[l>>3];p[b+136>>3]=u*(j*(q*(s*(m*(m*2.0+-1.0)*-2.6666666666666665))));m=+p[n>>3];p[b+144>>3]=u*(t*(j*(s*(m*(m*2.0+-1.0)*-2.6666666666666665))));m=+p[o>>3];p[b+152>>3]=u*(t*(j*(s*(m*(m*2.0+-1.0)*-2.6666666666666665))));m=+p[l>>3];p[b+160>>3]=u*(t*(j*(s*(m*(m*2.0+-1.0)*-2.6666666666666665))));p[b+168>>3]=u*(j*(q*(s*(+p[o>>3]*4.0*+p[l>>3]*-2.6666666666666665))));p[b+176>>3]=u*(j*(q*(s*(+p[n>>3]*4.0*+p[l>>3]*-2.6666666666666665))));p[b+184>>3]=u*(j*(q*(s*(+p[n>>3]*4.0*+p[o>>3]*-2.6666666666666665))));p[b+192>>3]=u*(t*(q*(s*(+p[o>>3]*4.0*+p[l>>3]*4.0))));p[b+200>>3]=u*(t*(q*(s*(+p[n>>3]*4.0*+p[l>>3]*4.0))));p[b+208>>3]=u*(t*(q*(s*(+p[n>>3]*4.0*+p[o>>3]*4.0))));p[b+216>>3]=u*(t*(j*(s*(+p[o>>3]*4.0*+p[l>>3]*-2.6666666666666665))));p[b+224>>3]=u*(t*(j*(s*(+p[n>>3]*4.0*+p[l>>3]*-2.6666666666666665))));p[b+232>>3]=u*(t*(j*(s*(+p[n>>3]*4.0*+p[o>>3]*-2.6666666666666665))));r=a;return}case 747:{o=c+40|0;s=j+-1.0;t=j+-.3333333333333333;u=j+.3333333333333333;p[b>>3]=u*(t*(s*(+p[o>>3]*-.5625)));n=c+48|0;p[b+8>>3]=u*(t*(s*(+p[n>>3]*-.5625)));l=c+56|0;p[b+16>>3]=u*(t*(s*(+p[l>>3]*-.5625)));q=j+1.0;p[b+24>>3]=q*(u*(t*(+p[o>>3]*.5625)));p[b+32>>3]=q*(u*(t*(+p[n>>3]*.5625)));p[b+40>>3]=q*(u*(t*(+p[l>>3]*.5625)));p[b+48>>3]=q*(t*(s*(+p[o>>3]*1.6875)));p[b+56>>3]=q*(t*(s*(+p[n>>3]*1.6875)));p[b+64>>3]=q*(t*(s*(+p[l>>3]*1.6875)));p[b+72>>3]=q*(u*(s*(+p[o>>3]*-1.6875)));p[b+80>>3]=q*(u*(s*(+p[n>>3]*-1.6875)));p[b+88>>3]=q*(u*(s*(+p[l>>3]*-1.6875)));r=a;return}default:{l=f+56|0;n=f+4|0;k[f>>2]=27524;k[l>>2]=27544;B=0;wa(508,f+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;v=Q;w=o;vva(l);Qb(w|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[l>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){x=Rb()|0;y=Q;z=x}else{k[n>>2]=27560;x=f+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,n|0,e|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(e);Yua(x);Ava(n);y=C;z=A;break}Yua(e);B=0;A=Ia(40,f|0,132447,13)|0;C=B;B=0;if((((!(C&1)?(B=0,C=ya(427,d|0)|0,D=B,B=0,!(D&1)):0)?(D=Lta(C)|0,B=0,E=Ia(40,A|0,C|0,D|0)|0,D=B,B=0,!(D&1)):0)?(B=0,D=Ia(40,E|0,146481,18)|0,E=B,B=0,!(E&1)):0)?(B=0,Xa(239,D|0,0)|0,D=B,B=0,!(D&1)):0){D=Ab(20)|0;B=0;eb(502,g|0,75348,76);E=B;B=0;do if(!(E&1)){B=0;eb(502,h|0,75456,17);C=B;B=0;if(C&1){C=Rb()|0;A=Q;Yua(g);F=A;G=C;break}B=0;wa(510,i|0,n|0);C=B;B=0;if(C&1){C=Rb()|0;H=Q;I=C;J=1}else{B=0;ua(163,D|0,g|0,h|0,431,i|0);C=B;B=0;if(C&1)K=1;else{B=0;eb(503,D|0,1240,229);B=0;K=0}C=Rb()|0;A=Q;Yua(i);H=A;I=C;J=K}Yua(h);Yua(g);if(J){F=H;G=I}else{L=H;M=I;k[f>>2]=27468;k[l>>2]=27488;k[n>>2]=27560;Yua(x);Ava(n);vva(l);Qb(M|0)}}else{C=Rb()|0;F=Q;G=C}while(0);zb(D|0);L=F;M=G;k[f>>2]=27468;k[l>>2]=27488;k[n>>2]=27560;Yua(x);Ava(n);vva(l);Qb(M|0)}E=Rb()|0;L=Q;M=E;k[f>>2]=27468;k[l>>2]=27488;k[n>>2]=27560;Yua(x);Ava(n);vva(l);Qb(M|0)}while(0);v=y;w=z;vva(l);Qb(w|0)}}while(0)}function $B(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0;e=+p[d+48>>3]-+p[d+40>>3];f=+p[d+56>>3]*1.7320508075688772;g=+p[d+64>>3];h=+p[c>>3];i=+p[c+24>>3];j=+p[c+48>>3];k=+p[c+72>>3];l=+p[c+96>>3];m=+p[c+120>>3];n=+p[c+8>>3];o=+p[c+32>>3];q=+p[c+56>>3];r=+p[c+80>>3];s=+p[c+104>>3];t=+p[c+128>>3];u=+p[c+16>>3];v=+p[c+40>>3];w=+p[c+64>>3];x=+p[c+88>>3];y=+p[c+112>>3];z=+p[c+136>>3];A=h-i-k+l;p[b>>3]=(i-h-k+l)*.25+g*(A*.25);B=j*2.0;j=m*2.0;m=(h+i-B-k-l+j)*.14433756729740643;p[b+24>>3]=(-h-i+B-k-l+j)*.14433756729740643+g*m;p[b+48>>3]=(k+(l-h-i))*.25+(e*(A*0.0)+f*m);m=(n-o-r+s)*.25;p[b+8>>3]=(o-n-r+s)*.25+g*m;A=q*2.0;q=t*2.0;t=(n+o-A-r-s+q)*.14433756729740643;p[b+32>>3]=(-n-o+A-r-s+q)*.14433756729740643+g*t;p[b+56>>3]=(r-n+s-o)*.25+(e*m+f*t);t=(u-v-x+y)*.25;p[b+16>>3]=(v-u-x+y)*.25+g*t;m=w*2.0;w=z*2.0;z=(u+v-m-x-y+w)*.14433756729740643;p[b+40>>3]=(-u-v+m-x-y+w)*.14433756729740643+g*z;p[b+64>>3]=(x+(y-u-v))*.25+(e*t+f*z);return}function aC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+272|0;e=a+248|0;f=a;g=a+112|0;h=a+96|0;i=a+84|0;j=a+72|0;$B(0,f,c,d);dY(b,f);if(!(+p[b>>3]<0.0)){r=a;return}a=g+56|0;b=g+4|0;k[g>>2]=27524;k[a>>2]=27544;B=0;wa(508,g+56|0,b|0);f=B;B=0;if(f&1){f=Rb()|0;l=Q;m=f;vva(a);Qb(m|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[a>>2]=27488;B=0;va(448,b|0);f=B;B=0;do if(f&1){d=Rb()|0;n=Q;o=d}else{k[b>>2]=27560;d=g+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);c=B;B=0;if(c&1){c=Rb()|0;q=Q;Yua(e);Yua(d);Ava(b);n=q;o=c;break}Yua(e);B=0;c=Ia(40,g|0,75474,30)|0;q=B;B=0;if(!(q&1)?(B=0,Xa(239,c|0,0)|0,c=B,B=0,!(c&1)):0){c=Ab(20)|0;B=0;eb(502,h|0,75348,76);q=B;B=0;do if(!(q&1)){B=0;eb(502,i|0,75505,22);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(h);u=t;v=s;break}B=0;wa(510,j|0,b|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,c|0,h|0,i|0,249,j|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,c|0,1240,229);B=0;z=0}s=Rb()|0;t=Q;Yua(j);w=t;x=s;y=z}Yua(i);Yua(h);if(y){u=w;v=x}else{A=w;C=x;k[g>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(d);Ava(b);vva(a);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(c|0);A=u;C=v;k[g>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(d);Ava(b);vva(a);Qb(C|0)}q=Rb()|0;A=Q;C=q;k[g>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(d);Ava(b);vva(a);Qb(C|0)}while(0);l=n;m=o;vva(a);Qb(m|0)}function bC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0.0,l=0.0,m=0.0,n=0,o=0,q=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0;a=r;r=r+192|0;e=a+176|0;f=a+40|0;g=a+24|0;h=a+12|0;i=a;j=+p[c+64>>3];do switch(d|0){case 736:{k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;r=a;return}case 739:case 738:{l=j+-1.0;p[b>>3]=l*.25;m=l*.14433756729740643;p[b+48>>3]=m;n=c+40|0;p[b+96>>3]=+p[n>>3]*-.5;l=1.0-j;p[b+8>>3]=l*.25;p[b+56>>3]=m;o=c+48|0;p[b+104>>3]=+p[o>>3]*-.5;p[b+16>>3]=0.0;p[b+64>>3]=l*.28867513459481287;q=c+56|0;p[b+112>>3]=+p[q>>3]*-.5;l=j+1.0;p[b+24>>3]=l*-.25;m=l*-.14433756729740643;p[b+72>>3]=m;p[b+120>>3]=+p[n>>3]*.5;p[b+32>>3]=l*.25;p[b+80>>3]=m;p[b+128>>3]=+p[o>>3]*.5;p[b+40>>3]=0.0;p[b+88>>3]=l*.28867513459481287;p[b+136>>3]=+p[q>>3]*.5;r=a;return}case 741:case 740:{l=j+-1.0;p[b>>3]=l*.25;m=l*.14433756729740643;p[b+56>>3]=m;q=c+40|0;p[b+112>>3]=+p[q>>3]*-.5;l=1.0-j;p[b+8>>3]=l*.25;p[b+64>>3]=m;o=c+48|0;p[b+120>>3]=+p[o>>3]*-.5;p[b+16>>3]=0.0;p[b+72>>3]=l*.28867513459481287;n=c+56|0;p[b+128>>3]=+p[n>>3]*-.5;m=j+1.0;p[b+24>>3]=m*-.25;s=m*-.14433756729740643;p[b+80>>3]=s;p[b+136>>3]=+p[q>>3]*.5;p[b+32>>3]=m*.25;p[b+88>>3]=s;p[b+144>>3]=+p[o>>3]*.5;p[b+40>>3]=0.0;p[b+96>>3]=m*.28867513459481287;p[b+152>>3]=+p[n>>3]*.5;s=l*(m*27.0);m=+p[n>>3];p[b+48>>3]=s*(+p[o>>3]*-.5*m+m*(+p[q>>3]*.5));m=+p[o>>3];l=+p[n>>3];t=+p[q>>3];p[b+104>>3]=s*1.7320508075688772*(m*(t*.3333333333333333)+(m*-.16666666666666666*l-l*(t*.16666666666666666)));p[b+160>>3]=j*(+p[q>>3]*-54.0*+p[o>>3]*+p[n>>3]);r=a;return}case 745:{t=1.0-j;l=t*.5;n=c+40|0;p[b>>3]=l*(.5-+p[n>>3]*2.0);p[b+96>>3]=l*(.28867513459481287-+p[n>>3]*1.1547005383792515);m=+p[n>>3];p[b+192>>3]=m*-.5*(m*2.0+-1.0);o=c+48|0;p[b+8>>3]=l*(+p[o>>3]*2.0+-.5);p[b+104>>3]=l*(.28867513459481287-+p[o>>3]*1.1547005383792515);m=+p[o>>3];p[b+200>>3]=m*-.5*(m*2.0+-1.0);p[b+16>>3]=0.0;q=c+56|0;p[b+112>>3]=l*(+p[q>>3]*2.309401076758503+-.5773502691896257);m=+p[q>>3];p[b+208>>3]=m*-.5*(m*2.0+-1.0);m=j+1.0;s=m*.5;p[b+24>>3]=s*(.5-+p[n>>3]*2.0);p[b+120>>3]=s*(.28867513459481287-+p[n>>3]*1.1547005383792515);u=+p[n>>3];p[b+216>>3]=u*.5*(u*2.0+-1.0);p[b+32>>3]=s*(+p[o>>3]*2.0+-.5);p[b+128>>3]=s*(.28867513459481287-+p[o>>3]*1.1547005383792515);u=+p[o>>3];p[b+224>>3]=u*.5*(u*2.0+-1.0);p[b+40>>3]=0.0;p[b+136>>3]=s*(+p[q>>3]*2.309401076758503+-.5773502691896257);u=+p[q>>3];p[b+232>>3]=u*.5*(u*2.0+-1.0);p[b+48>>3]=t*+p[q>>3];p[b+144>>3]=l*(+p[o>>3]*2.309401076758503-+p[q>>3]*1.1547005383792515);p[b+240>>3]=+p[q>>3]*-2.0*+p[o>>3];p[b+56>>3]=-(t*+p[q>>3]);p[b+152>>3]=l*(+p[n>>3]*2.309401076758503-+p[q>>3]*1.1547005383792515);p[b+248>>3]=+p[q>>3]*-2.0*+p[n>>3];p[b+64>>3]=t*(+p[n>>3]-+p[o>>3]);p[b+160>>3]=l*((+p[n>>3]+ +p[o>>3])*-1.1547005383792515);p[b+256>>3]=+p[n>>3]*-2.0*+p[o>>3];p[b+72>>3]=m*+p[q>>3];p[b+168>>3]=s*(+p[o>>3]*2.309401076758503-+p[q>>3]*1.1547005383792515);p[b+264>>3]=+p[q>>3]*2.0*+p[o>>3];p[b+80>>3]=-(m*+p[q>>3]);p[b+176>>3]=s*(+p[n>>3]*2.309401076758503-+p[q>>3]*1.1547005383792515);p[b+272>>3]=+p[q>>3]*2.0*+p[n>>3];p[b+88>>3]=m*(+p[n>>3]-+p[o>>3]);p[b+184>>3]=s*((+p[n>>3]+ +p[o>>3])*-1.1547005383792515);p[b+280>>3]=+p[n>>3]*2.0*+p[o>>3];r=a;return}case 746:{s=-j;m=j+-1.0;p[b>>3]=m*s*.25;l=j*-.14433756729740643;t=l*m;p[b+72>>3]=t;u=j*2.0;v=(u+-1.0)*.5;o=c+40|0;p[b+144>>3]=v*+p[o>>3];p[b+8>>3]=j*m*.25;p[b+80>>3]=t;n=c+48|0;p[b+152>>3]=v*+p[n>>3];p[b+16>>3]=0.0;t=j*.28867513459481287;p[b+88>>3]=t*m;q=c+56|0;p[b+160>>3]=v*+p[q>>3];v=j+1.0;p[b+24>>3]=v*s*.25;s=l*v;p[b+96>>3]=s;l=(u+1.0)*.5;p[b+168>>3]=l*+p[o>>3];p[b+32>>3]=j*v*.25;p[b+104>>3]=s;p[b+176>>3]=l*+p[n>>3];p[b+40>>3]=0.0;p[b+112>>3]=t*v;p[b+184>>3]=l*+p[q>>3];l=1.0-j*j;p[b+48>>3]=l*-.5;v=l*-.28867513459481287;p[b+120>>3]=v;t=j*-2.0;p[b+192>>3]=t*+p[o>>3];p[b+56>>3]=l*.5;p[b+128>>3]=v;p[b+200>>3]=t*+p[n>>3];p[b+64>>3]=0.0;p[b+136>>3]=l*.5773502691896257;p[b+208>>3]=t*+p[q>>3];r=a;return}case 742:{t=j*.5;l=j+-1.0;v=t*l;q=c+40|0;p[b>>3]=v*(.5-+p[q>>3]*2.0);p[b+144>>3]=v*(.28867513459481287-+p[q>>3]*1.1547005383792515);s=j*2.0;u=s+-1.0;m=u*.5;w=+p[q>>3];p[b+288>>3]=m*w*(w*2.0+-1.0);n=c+48|0;p[b+8>>3]=v*(+p[n>>3]*2.0+-.5);p[b+152>>3]=v*(.28867513459481287-+p[n>>3]*1.1547005383792515);w=+p[n>>3];p[b+296>>3]=m*w*(w*2.0+-1.0);p[b+16>>3]=0.0;o=c+56|0;p[b+160>>3]=v*(+p[o>>3]*2.309401076758503+-.5773502691896257);w=+p[o>>3];p[b+304>>3]=m*w*(w*2.0+-1.0);w=j+1.0;m=t*w;p[b+24>>3]=m*(.5-+p[q>>3]*2.0);p[b+168>>3]=m*(.28867513459481287-+p[q>>3]*1.1547005383792515);t=s+1.0;s=t*.5;x=+p[q>>3];p[b+312>>3]=s*x*(x*2.0+-1.0);p[b+32>>3]=m*(+p[n>>3]*2.0+-.5);p[b+176>>3]=m*(.28867513459481287-+p[n>>3]*1.1547005383792515);x=+p[n>>3];p[b+320>>3]=s*x*(x*2.0+-1.0);p[b+40>>3]=0.0;p[b+184>>3]=m*(+p[o>>3]*2.309401076758503+-.5773502691896257);x=+p[o>>3];p[b+328>>3]=s*x*(x*2.0+-1.0);x=1.0-j*j;p[b+48>>3]=x*(.5-+p[q>>3]*2.0);p[b+192>>3]=x*(.28867513459481287-+p[q>>3]*1.1547005383792515);s=j*-2.0;y=+p[q>>3];p[b+336>>3]=s*y*(y*2.0+-1.0);p[b+56>>3]=x*(+p[n>>3]*2.0+-.5);p[b+200>>3]=x*(.28867513459481287-+p[n>>3]*1.1547005383792515);y=+p[n>>3];p[b+344>>3]=s*y*(y*2.0+-1.0);p[b+64>>3]=0.0;p[b+208>>3]=x*(+p[o>>3]*2.309401076758503+-.5773502691896257);y=+p[o>>3];p[b+352>>3]=s*y*(y*2.0+-1.0);y=j*l;p[b+72>>3]=y*+p[o>>3];p[b+216>>3]=v*(+p[n>>3]*2.309401076758503-+p[o>>3]*1.1547005383792515);p[b+360>>3]=u*(+p[o>>3]*2.0*+p[n>>3]);z=-j;p[b+80>>3]=l*z*+p[o>>3];p[b+224>>3]=v*(+p[q>>3]*2.309401076758503-+p[o>>3]*1.1547005383792515);p[b+368>>3]=u*(+p[o>>3]*2.0*+p[q>>3]);p[b+88>>3]=y*(+p[q>>3]-+p[n>>3]);p[b+232>>3]=v*((+p[q>>3]+ +p[n>>3])*-1.1547005383792515);p[b+376>>3]=u*(+p[q>>3]*2.0*+p[n>>3]);u=j*w;p[b+96>>3]=u*+p[o>>3];p[b+240>>3]=m*(+p[n>>3]*2.309401076758503-+p[o>>3]*1.1547005383792515);p[b+384>>3]=t*(+p[o>>3]*2.0*+p[n>>3]);p[b+104>>3]=w*z*+p[o>>3];p[b+248>>3]=m*(+p[q>>3]*2.309401076758503-+p[o>>3]*1.1547005383792515);p[b+392>>3]=t*(+p[o>>3]*2.0*+p[q>>3]);p[b+112>>3]=u*(+p[q>>3]-+p[n>>3]);p[b+256>>3]=m*((+p[q>>3]+ +p[n>>3])*-1.1547005383792515);p[b+400>>3]=t*(+p[q>>3]*2.0*+p[n>>3]);p[b+120>>3]=x*(+p[o>>3]*2.0);p[b+264>>3]=x*(+p[n>>3]*2.309401076758503-+p[o>>3]*1.1547005383792515);t=s*4.0;p[b+408>>3]=t*+p[o>>3]*+p[n>>3];p[b+128>>3]=x*(+p[o>>3]*-2.0);p[b+272>>3]=x*(+p[q>>3]*2.309401076758503-+p[o>>3]*1.1547005383792515);p[b+416>>3]=t*+p[o>>3]*+p[q>>3];p[b+136>>3]=x*((+p[q>>3]-+p[n>>3])*2.0);p[b+280>>3]=x*((+p[q>>3]+ +p[n>>3])*-1.1547005383792515);p[b+424>>3]=t*+p[q>>3]*+p[n>>3];r=a;return}case 744:case 743:{t=j*.5;x=j+-1.0;s=t*x;n=c+40|0;p[b>>3]=s*(.5-+p[n>>3]*2.0);p[b+152>>3]=s*(.28867513459481287-+p[n>>3]*1.1547005383792515);m=j*2.0;u=m+-1.0;z=u*.5;w=+p[n>>3];p[b+304>>3]=z*w*(w*2.0+-1.0);q=c+48|0;p[b+8>>3]=s*(+p[q>>3]*2.0+-.5);p[b+160>>3]=s*(.28867513459481287-+p[q>>3]*1.1547005383792515);w=+p[q>>3];p[b+312>>3]=z*w*(w*2.0+-1.0);p[b+16>>3]=0.0;o=c+56|0;p[b+168>>3]=s*(+p[o>>3]*2.309401076758503+-.5773502691896257);w=+p[o>>3];p[b+320>>3]=z*w*(w*2.0+-1.0);w=j+1.0;z=t*w;p[b+24>>3]=z*(.5-+p[n>>3]*2.0);p[b+176>>3]=z*(.28867513459481287-+p[n>>3]*1.1547005383792515);t=m+1.0;m=t*.5;v=+p[n>>3];p[b+328>>3]=m*v*(v*2.0+-1.0);p[b+32>>3]=z*(+p[q>>3]*2.0+-.5);p[b+184>>3]=z*(.28867513459481287-+p[q>>3]*1.1547005383792515);v=+p[q>>3];p[b+336>>3]=m*v*(v*2.0+-1.0);p[b+40>>3]=0.0;p[b+192>>3]=z*(+p[o>>3]*2.309401076758503+-.5773502691896257);v=+p[o>>3];p[b+344>>3]=m*v*(v*2.0+-1.0);v=1.0-j*j;p[b+48>>3]=v*(.5-+p[n>>3]*2.0);p[b+200>>3]=v*(.28867513459481287-+p[n>>3]*1.1547005383792515);m=j*-2.0;y=+p[n>>3];p[b+352>>3]=m*y*(y*2.0+-1.0);p[b+56>>3]=v*(+p[q>>3]*2.0+-.5);p[b+208>>3]=v*(.28867513459481287-+p[q>>3]*1.1547005383792515);y=+p[q>>3];p[b+360>>3]=m*y*(y*2.0+-1.0);p[b+64>>3]=0.0;p[b+216>>3]=v*(+p[o>>3]*2.309401076758503+-.5773502691896257);y=+p[o>>3];p[b+368>>3]=m*y*(y*2.0+-1.0);y=j*x;p[b+72>>3]=y*+p[o>>3];p[b+224>>3]=s*(+p[q>>3]*2.309401076758503-+p[o>>3]*1.1547005383792515);p[b+376>>3]=u*(+p[o>>3]*2.0*+p[q>>3]);l=-j;p[b+80>>3]=x*l*+p[o>>3];p[b+232>>3]=s*(+p[n>>3]*2.309401076758503-+p[o>>3]*1.1547005383792515);p[b+384>>3]=u*(+p[o>>3]*2.0*+p[n>>3]);p[b+88>>3]=y*(+p[n>>3]-+p[q>>3]);p[b+240>>3]=s*((+p[n>>3]+ +p[q>>3])*-1.1547005383792515);p[b+392>>3]=u*(+p[n>>3]*2.0*+p[q>>3]);u=j*w;p[b+96>>3]=u*+p[o>>3];p[b+248>>3]=z*(+p[q>>3]*2.309401076758503-+p[o>>3]*1.1547005383792515);p[b+400>>3]=t*(+p[o>>3]*2.0*+p[q>>3]);p[b+104>>3]=w*l*+p[o>>3];p[b+256>>3]=z*(+p[n>>3]*2.309401076758503-+p[o>>3]*1.1547005383792515);p[b+408>>3]=t*(+p[o>>3]*2.0*+p[n>>3]);p[b+112>>3]=u*(+p[n>>3]-+p[q>>3]);p[b+264>>3]=z*((+p[n>>3]+ +p[q>>3])*-1.1547005383792515);p[b+416>>3]=t*(+p[n>>3]*2.0*+p[q>>3]);p[b+120>>3]=v*(+p[o>>3]*2.0);p[b+272>>3]=v*(+p[q>>3]*2.309401076758503-+p[o>>3]*1.1547005383792515);t=m*4.0;p[b+424>>3]=t*+p[o>>3]*+p[q>>3];p[b+128>>3]=v*(+p[o>>3]*-2.0);p[b+280>>3]=v*(+p[n>>3]*2.309401076758503-+p[o>>3]*1.1547005383792515);p[b+432>>3]=t*+p[o>>3]*+p[n>>3];p[b+136>>3]=v*((+p[n>>3]-+p[q>>3])*2.0);p[b+288>>3]=v*((+p[n>>3]+ +p[q>>3])*-1.1547005383792515);p[b+440>>3]=t*+p[n>>3]*+p[q>>3];t=(1.0-j)*(w*27.0);w=+p[o>>3];p[b+144>>3]=t*(+p[q>>3]*-.5*w+w*(+p[n>>3]*.5));w=+p[q>>3];v=+p[o>>3];m=+p[n>>3];p[b+296>>3]=t*1.7320508075688772*(w*(m*.3333333333333333)+(w*-.16666666666666666*v-v*(m*.16666666666666666)));p[b+448>>3]=j*(+p[n>>3]*-54.0*+p[q>>3]*+p[o>>3]);r=a;return}case 748:{o=c+40|0;m=j+-1.0;v=j+-.5;w=j+.5;p[b>>3]=w*(j*(v*(m*((.5-+p[o>>3]*2.0)*.6666666666666666))));p[b+240>>3]=w*(j*(v*(m*((.28867513459481287-+p[o>>3]*1.1547005383792515)*.6666666666666666))));t=+p[o>>3];z=j*2.0;u=z+-1.0;l=v*u;s=j*z;y=m*s+w*l;p[b+480>>3]=y*(t*(t*2.0+-1.0)*2.0/3.0);q=c+48|0;p[b+8>>3]=w*(j*(v*(m*((+p[q>>3]*2.0+-.5)*.6666666666666666))));p[b+248>>3]=w*(j*(v*(m*((.28867513459481287-+p[q>>3]*1.1547005383792515)*.6666666666666666))));t=+p[q>>3];p[b+488>>3]=y*(t*(t*2.0+-1.0)*2.0/3.0);p[b+16>>3]=0.0;n=c+56|0;p[b+256>>3]=w*(j*(v*(m*((+p[n>>3]*2.309401076758503+-.5773502691896257)*.6666666666666666))));t=+p[n>>3];p[b+496>>3]=y*(t*(t*2.0+-1.0)*2.0/3.0);t=j+1.0;p[b+24>>3]=t*(w*(j*(v*((.5-+p[o>>3]*2.0)*.6666666666666666))));p[b+264>>3]=t*(w*(j*(v*((.28867513459481287-+p[o>>3]*1.1547005383792515)*.6666666666666666))));x=+p[o>>3];A=t*s+w*(v*(z+1.0));p[b+504>>3]=A*(x*(x*2.0+-1.0)*2.0/3.0);p[b+32>>3]=t*(w*(j*(v*((+p[q>>3]*2.0+-.5)*.6666666666666666))));p[b+272>>3]=t*(w*(j*(v*((.28867513459481287-+p[q>>3]*1.1547005383792515)*.6666666666666666))));x=+p[q>>3];p[b+512>>3]=A*(x*(x*2.0+-1.0)*2.0/3.0);p[b+40>>3]=0.0;p[b+280>>3]=t*(w*(j*(v*((+p[n>>3]*2.309401076758503+-.5773502691896257)*.6666666666666666))));x=+p[n>>3];p[b+520>>3]=A*(x*(x*2.0+-1.0)*2.0/3.0);p[b+48>>3]=t*(w*(v*(m*((.5-+p[o>>3]*2.0)*4.0))));p[b+288>>3]=t*(w*(v*(m*((.28867513459481287-+p[o>>3]*1.1547005383792515)*4.0))));x=+p[o>>3];s=j*(j*(j*4.0))-j*2.5;p[b+528>>3]=s*(x*(x*2.0+-1.0)*4.0);p[b+56>>3]=t*(w*(v*(m*((+p[q>>3]*2.0+-.5)*4.0))));p[b+296>>3]=t*(w*(v*(m*((.28867513459481287-+p[q>>3]*1.1547005383792515)*4.0))));x=+p[q>>3];p[b+536>>3]=s*(x*(x*2.0+-1.0)*4.0);p[b+64>>3]=0.0;p[b+304>>3]=t*(w*(v*(m*((+p[n>>3]*2.309401076758503+-.5773502691896257)*4.0))));x=+p[n>>3];p[b+544>>3]=s*(x*(x*2.0+-1.0)*4.0);p[b+72>>3]=w*(j*(v*(m*(+p[n>>3]*2.0*2.0/3.0))));p[b+312>>3]=w*(j*(v*(m*((+p[q>>3]*2.309401076758503-+p[n>>3]*1.1547005383792515)*.6666666666666666))));p[b+552>>3]=y*(+p[q>>3]*4.0*+p[n>>3]*.6666666666666666);p[b+80>>3]=w*(j*(v*(m*(+p[n>>3]*-2.0*2.0/3.0))));p[b+320>>3]=w*(j*(v*(m*((+p[o>>3]*2.309401076758503-+p[n>>3]*1.1547005383792515)*.6666666666666666))));p[b+560>>3]=y*(+p[n>>3]*4.0*+p[o>>3]*.6666666666666666);p[b+88>>3]=w*(j*(v*(m*((+p[o>>3]-+p[q>>3])*2.0*.6666666666666666))));p[b+328>>3]=w*(j*(v*(m*((+p[q>>3]+ +p[o>>3])*-1.1547005383792515*.6666666666666666))));p[b+568>>3]=y*(+p[o>>3]*4.0*+p[q>>3]*.6666666666666666);p[b+96>>3]=t*(w*(j*(v*(+p[n>>3]*2.0*2.0/3.0))));p[b+336>>3]=t*(w*(j*(v*((+p[q>>3]*2.309401076758503-+p[n>>3]*1.1547005383792515)*.6666666666666666))));p[b+576>>3]=A*(+p[q>>3]*4.0*+p[n>>3]*.6666666666666666);p[b+104>>3]=t*(w*(j*(v*(+p[n>>3]*-2.0*2.0/3.0))));p[b+344>>3]=t*(w*(j*(v*((+p[o>>3]*2.309401076758503-+p[n>>3]*1.1547005383792515)*.6666666666666666))));p[b+584>>3]=A*(+p[n>>3]*4.0*+p[o>>3]*.6666666666666666);p[b+112>>3]=t*(w*(j*(v*((+p[o>>3]-+p[q>>3])*2.0*.6666666666666666))));p[b+352>>3]=t*(w*(j*(v*((+p[q>>3]+ +p[o>>3])*-1.1547005383792515*.6666666666666666))));p[b+592>>3]=A*(+p[o>>3]*4.0*+p[q>>3]*.6666666666666666);p[b+120>>3]=t*(j*(v*(m*((.5-+p[o>>3]*2.0)*-2.6666666666666665))));p[b+360>>3]=t*(j*(v*(m*((.28867513459481287-+p[o>>3]*1.1547005383792515)*-2.6666666666666665))));A=+p[o>>3];y=j*m;x=y*(z+.5)+t*l;p[b+600>>3]=x*(A*(A*2.0+-1.0)*-2.6666666666666665);p[b+128>>3]=t*(j*(v*(m*((+p[q>>3]*2.0+-.5)*-2.6666666666666665))));p[b+368>>3]=t*(j*(v*(m*((.28867513459481287-+p[q>>3]*1.1547005383792515)*-2.6666666666666665))));A=+p[q>>3];p[b+608>>3]=x*(A*(A*2.0+-1.0)*-2.6666666666666665);p[b+136>>3]=0.0;p[b+376>>3]=t*(j*(v*(m*((+p[n>>3]*2.309401076758503+-.5773502691896257)*-2.6666666666666665))));A=+p[n>>3];p[b+616>>3]=x*(A*(A*2.0+-1.0)*-2.6666666666666665);p[b+144>>3]=t*(w*(j*(m*((.5-+p[o>>3]*2.0)*-2.6666666666666665))));p[b+384>>3]=t*(w*(j*(m*((.28867513459481287-+p[o>>3]*1.1547005383792515)*-2.6666666666666665))));A=+p[o>>3];l=y*(z+1.5)+t*(w*u);p[b+624>>3]=l*(A*(A*2.0+-1.0)*-2.6666666666666665);p[b+152>>3]=t*(w*(j*(m*((+p[q>>3]*2.0+-.5)*-2.6666666666666665))));p[b+392>>3]=t*(w*(j*(m*((.28867513459481287-+p[q>>3]*1.1547005383792515)*-2.6666666666666665))));A=+p[q>>3];p[b+632>>3]=l*(A*(A*2.0+-1.0)*-2.6666666666666665);p[b+160>>3]=0.0;p[b+400>>3]=t*(j*(w*(m*((+p[n>>3]*2.309401076758503+-.5773502691896257)*-2.6666666666666665))));A=+p[n>>3];p[b+640>>3]=l*(A*(A*2.0+-1.0)*-2.6666666666666665);p[b+168>>3]=t*(j*(v*(m*(+p[n>>3]*2.0*-2.6666666666666665))));p[b+408>>3]=t*(j*(v*(m*((+p[q>>3]*2.309401076758503-+p[n>>3]*1.1547005383792515)*-2.6666666666666665))));p[b+648>>3]=x*(+p[q>>3]*4.0*+p[n>>3]*-2.6666666666666665);p[b+176>>3]=t*(j*(v*(m*(+p[n>>3]*-2.0*-2.6666666666666665))));p[b+416>>3]=t*(j*(v*(m*((+p[o>>3]*2.309401076758503-+p[n>>3]*1.1547005383792515)*-2.6666666666666665))));p[b+656>>3]=x*(+p[o>>3]*4.0*+p[n>>3]*-2.6666666666666665);p[b+184>>3]=t*(j*(v*(m*((+p[o>>3]-+p[q>>3])*2.0*-2.6666666666666665))));p[b+424>>3]=t*(j*(v*(m*((+p[q>>3]+ +p[o>>3])*-1.1547005383792515*-2.6666666666666665))));p[b+664>>3]=x*(+p[o>>3]*4.0*+p[q>>3]*-2.6666666666666665);p[b+192>>3]=t*(w*(v*(m*(+p[n>>3]*2.0*4.0))));p[b+432>>3]=t*(w*(v*(m*((+p[q>>3]*2.309401076758503-+p[n>>3]*1.1547005383792515)*4.0))));p[b+672>>3]=s*(+p[q>>3]*4.0*+p[n>>3]*4.0);p[b+200>>3]=t*(w*(v*(m*(+p[n>>3]*-2.0*4.0))));p[b+440>>3]=t*(w*(v*(m*((+p[o>>3]*2.309401076758503-+p[n>>3]*1.1547005383792515)*4.0))));p[b+680>>3]=s*(+p[o>>3]*4.0*+p[n>>3]*4.0);p[b+208>>3]=t*(w*(v*(m*((+p[o>>3]-+p[q>>3])*2.0*4.0))));p[b+448>>3]=t*(w*(v*(m*((+p[o>>3]+ +p[q>>3])*-1.1547005383792515*4.0))));p[b+688>>3]=s*(+p[o>>3]*4.0*+p[q>>3]*4.0);p[b+216>>3]=t*(w*(j*(m*(+p[n>>3]*2.0*-2.6666666666666665))));p[b+456>>3]=t*(w*(j*(m*((+p[q>>3]*2.309401076758503-+p[n>>3]*1.1547005383792515)*-2.6666666666666665))));p[b+696>>3]=l*(+p[q>>3]*4.0*+p[n>>3]*-2.6666666666666665);p[b+224>>3]=t*(w*(j*(m*(+p[n>>3]*-2.0*-2.6666666666666665))));p[b+464>>3]=t*(w*(j*(m*((+p[o>>3]*2.309401076758503-+p[n>>3]*1.1547005383792515)*-2.6666666666666665))));p[b+704>>3]=l*(+p[o>>3]*4.0*+p[n>>3]*-2.6666666666666665);p[b+232>>3]=t*(w*(j*(m*((+p[o>>3]-+p[q>>3])*2.0*-2.6666666666666665))));p[b+472>>3]=t*(w*(j*(m*((+p[o>>3]+ +p[q>>3])*-1.1547005383792515*-2.6666666666666665))));p[b+712>>3]=l*(+p[o>>3]*4.0*+p[q>>3]*-2.6666666666666665);r=a;return}case 747:{l=j+-1.0;m=j+-.3333333333333333;w=j+.3333333333333333;p[b>>3]=w*(m*(l*.28125));t=w*(m*(l*.16237976320958225));p[b+96>>3]=t;q=c+40|0;s=j*2.0;v=m*w;x=s*l+v;p[b+192>>3]=x*(+p[q>>3]*-.5625);p[b+8>>3]=w*(m*(l*-.28125));p[b+104>>3]=t;o=c+48|0;p[b+200>>3]=x*(+p[o>>3]*-.5625);p[b+16>>3]=0.0;p[b+112>>3]=w*(m*(l*-.3247595264191645));n=c+56|0;p[b+208>>3]=x*(+p[n>>3]*-.5625);x=j+1.0;p[b+24>>3]=x*(w*(m*-.28125));t=x*(w*(m*-.16237976320958225));p[b+120>>3]=t;A=s*x+v;p[b+216>>3]=A*(+p[q>>3]*.5625);p[b+32>>3]=x*(w*(m*.28125));p[b+128>>3]=t;p[b+224>>3]=A*(+p[o>>3]*.5625);p[b+40>>3]=0.0;p[b+136>>3]=x*(w*(m*.3247595264191645));p[b+232>>3]=A*(+p[n>>3]*.5625);A=l*-.84375;p[b+48>>3]=x*(m*A);t=x*(m*(l*-.4871392896287467));p[b+144>>3]=t;v=l*x;u=s*m+v;p[b+240>>3]=u*(+p[q>>3]*1.6875);z=l*.84375;p[b+56>>3]=x*(m*z);p[b+152>>3]=t;p[b+248>>3]=u*(+p[o>>3]*1.6875);p[b+64>>3]=0.0;p[b+160>>3]=x*(m*(l*.9742785792574934));p[b+256>>3]=u*(+p[n>>3]*1.6875);p[b+72>>3]=x*(w*z);z=x*(w*(l*.4871392896287467));p[b+168>>3]=z;u=s*w+v;p[b+264>>3]=u*(+p[q>>3]*-1.6875);p[b+80>>3]=x*(w*A);p[b+176>>3]=z;p[b+272>>3]=u*(+p[o>>3]*-1.6875);p[b+88>>3]=0.0;p[b+184>>3]=x*(w*(l*-.9742785792574934));p[b+280>>3]=u*(+p[n>>3]*-1.6875);r=a;return}default:{n=f+56|0;o=f+4|0;k[f>>2]=27524;k[n>>2]=27544;B=0;wa(508,f+56|0,o|0);q=B;B=0;if(q&1){q=Rb()|0;C=Q;D=q;vva(n);Qb(D|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[n>>2]=27488;B=0;va(448,o|0);q=B;B=0;do if(q&1){E=Rb()|0;F=Q;G=E}else{k[o>>2]=27560;E=f+36|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,o|0,e|0);H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(e);Yua(E);Ava(o);F=I;G=H;break}Yua(e);B=0;H=Ia(40,f|0,132447,13)|0;I=B;B=0;if((((!(I&1)?(B=0,I=ya(427,d|0)|0,J=B,B=0,!(J&1)):0)?(J=Lta(I)|0,B=0,K=Ia(40,H|0,I|0,J|0)|0,J=B,B=0,!(J&1)):0)?(B=0,J=Ia(40,K|0,146481,18)|0,K=B,B=0,!(K&1)):0)?(B=0,Xa(239,J|0,0)|0,J=B,B=0,!(J&1)):0){J=Ab(20)|0;B=0;eb(502,g|0,75348,76);K=B;B=0;do if(!(K&1)){B=0;eb(502,h|0,75528,37);I=B;B=0;if(I&1){I=Rb()|0;H=Q;Yua(g);L=H;M=I;break}B=0;wa(510,i|0,o|0);I=B;B=0;if(I&1){I=Rb()|0;N=Q;O=I;P=1}else{B=0;ua(163,J|0,g|0,h|0,964,i|0);I=B;B=0;if(I&1)R=1;else{B=0;eb(503,J|0,1240,229);B=0;R=0}I=Rb()|0;H=Q;Yua(i);N=H;O=I;P=R}Yua(h);Yua(g);if(P){L=N;M=O}else{S=N;T=O;k[f>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(E);Ava(o);vva(n);Qb(T|0)}}else{I=Rb()|0;L=Q;M=I}while(0);zb(J|0);S=L;T=M;k[f>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(E);Ava(o);vva(n);Qb(T|0)}K=Rb()|0;S=Q;T=K;k[f>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(E);Ava(o);vva(n);Qb(T|0)}while(0);C=F;D=G;vva(n);Qb(D|0)}}while(0)}function cC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0.0,j=0.0,l=0.0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;d=r;r=r+192|0;a=d+176|0;e=d+40|0;f=d+24|0;g=d+12|0;h=d;i=+p[c+24>>3]-+p[c>>3];j=+p[c+32>>3]-+p[c+8>>3];l=+aa(+(i*i+j*j))*(+p[c+64>>3]+(+p[c+88>>3]-+p[c+16>>3])-+p[c+40>>3])*.125;p[b>>3]=l;if(!(l<0.0)){r=d;return}d=e+56|0;b=e+4|0;k[e>>2]=27524;k[d>>2]=27544;B=0;wa(508,e+56|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;m=Q;n=c;vva(d);Qb(n|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);c=B;B=0;do if(c&1){o=Rb()|0;q=Q;s=o}else{k[b>>2]=27560;o=e+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[e+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,b|0,a|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);Yua(o);Ava(b);q=u;s=t;break}Yua(a);B=0;t=Ia(40,e|0,75474,30)|0;u=B;B=0;if(!(u&1)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,75348,76);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,75566,26);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(f);x=w;y=v;break}B=0;wa(510,h|0,b|0);v=B;B=0;if(v&1){v=Rb()|0;z=Q;A=v;C=1}else{B=0;ua(163,t|0,f|0,g|0,990,h|0);v=B;B=0;if(v&1)D=1;else{B=0;eb(503,t|0,1240,229);B=0;D=0}v=Rb()|0;w=Q;Yua(h);z=w;A=v;C=D}Yua(g);Yua(f);if(C){x=z;y=A}else{E=z;F=A;k[e>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(o);Ava(b);vva(d);Qb(F|0)}}else{v=Rb()|0;x=Q;y=v}while(0);zb(t|0);E=x;F=y;k[e>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(o);Ava(b);vva(d);Qb(F|0)}u=Rb()|0;E=Q;F=u;k[e>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(o);Ava(b);vva(d);Qb(F|0)}while(0);m=q;n=s;vva(d);Qb(n|0)}function dC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0.0,j=0.0,l=0.0,m=0.0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;d=r;r=r+192|0;a=d+176|0;e=d+40|0;f=d+24|0;g=d+12|0;h=d;i=+p[c+24>>3]-+p[c>>3];j=+p[c+32>>3]-+p[c+8>>3];l=+p[c+40>>3]-+p[c+16>>3];m=+aa(+(i*i+j*j+l*l))*.5;p[b>>3]=m;if(!(m<0.0)){r=d;return}d=e+56|0;b=e+4|0;k[e>>2]=27524;k[d>>2]=27544;B=0;wa(508,e+56|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;n=Q;o=c;vva(d);Qb(o|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);c=B;B=0;do if(c&1){q=Rb()|0;s=Q;t=q}else{k[b>>2]=27560;q=e+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[e+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,b|0,a|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(a);Yua(q);Ava(b);s=v;t=u;break}Yua(a);B=0;u=Ia(40,e|0,75474,30)|0;v=B;B=0;if(!(v&1)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,f|0,75348,76);v=B;B=0;do if(!(v&1)){B=0;eb(502,g|0,75593,29);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(f);y=x;z=w;break}B=0;wa(510,h|0,b|0);w=B;B=0;if(w&1){w=Rb()|0;A=Q;C=w;D=1}else{B=0;ua(163,u|0,f|0,g|0,1006,h|0);w=B;B=0;if(w&1)E=1;else{B=0;eb(503,u|0,1240,229);B=0;E=0}w=Rb()|0;x=Q;Yua(h);A=x;C=w;D=E}Yua(g);Yua(f);if(D){y=A;z=C}else{F=A;G=C;k[e>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(q);Ava(b);vva(d);Qb(G|0)}}else{w=Rb()|0;y=Q;z=w}while(0);zb(u|0);F=y;G=z;k[e>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(q);Ava(b);vva(d);Qb(G|0)}v=Rb()|0;F=Q;G=v;k[e>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(q);Ava(b);vva(d);Qb(G|0)}while(0);n=s;o=t;vva(d);Qb(o|0)}function eC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0.0,j=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0;d=r;r=r+192|0;a=d+176|0;e=d+40|0;f=d+24|0;g=d+12|0;h=d;i=+p[c>>3];j=+p[c+8>>3];l=+p[c+16>>3];m=+p[c+32>>3]-j;n=+p[c+64>>3]-l;o=+p[c+40>>3]-l;l=+p[c+56>>3]-j;j=m*n-o*l;q=+p[c+48>>3]-i;s=+p[c+24>>3]-i;i=o*q-s*n;n=s*l-m*q;q=n*n+(j*j+i*i);i=+$(+(+aa(+q)));j=q==-G?G:i*.28867513459481287;p[b>>3]=j;if(!(j<0.0)){r=d;return}d=e+56|0;b=e+4|0;k[e>>2]=27524;k[d>>2]=27544;B=0;wa(508,e+56|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;t=Q;u=c;vva(d);Qb(u|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);c=B;B=0;do if(c&1){v=Rb()|0;w=Q;x=v}else{k[b>>2]=27560;v=e+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[e+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,b|0,a|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(a);Yua(v);Ava(b);w=z;x=y;break}Yua(a);B=0;y=Ia(40,e|0,75474,30)|0;z=B;B=0;if(!(z&1)?(B=0,Xa(239,y|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,f|0,75348,76);z=B;B=0;do if(!(z&1)){B=0;eb(502,g|0,75623,26);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(f);D=C;E=A;break}B=0;wa(510,h|0,b|0);A=B;B=0;if(A&1){A=Rb()|0;F=Q;H=A;I=1}else{B=0;ua(163,y|0,f|0,g|0,1026,h|0);A=B;B=0;if(A&1)J=1;else{B=0;eb(503,y|0,1240,229);B=0;J=0}A=Rb()|0;C=Q;Yua(h);F=C;H=A;I=J}Yua(g);Yua(f);if(I){D=F;E=H}else{K=F;L=H;k[e>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(v);Ava(b);vva(d);Qb(L|0)}}else{A=Rb()|0;D=Q;E=A}while(0);zb(y|0);K=D;L=E;k[e>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(v);Ava(b);vva(d);Qb(L|0)}z=Rb()|0;K=Q;L=z;k[e>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(v);Ava(b);vva(d);Qb(L|0)}while(0);t=w;u=x;vva(d);Qb(u|0)}function fC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;switch(b|0){case 754:{h=921;r=a;return h|0}case 757:{h=739;r=a;return h|0}case 758:{h=921;r=a;return h|0}case 756:case 753:case 751:case 752:case 750:case 749:{h=738;r=a;return h|0}default:{h=d+56|0;a=d+4|0;k[d>>2]=27524;k[h>>2]=27544;B=0;wa(508,d+56|0,a|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(h);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[h>>2]=27488;B=0;va(448,a|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[a>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(a);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,132447,13)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,b|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,75348,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,75650,21);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,a|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,1072,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}while(0);j=n;l=o;vva(h);Qb(l|0)}}return 0}function gC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;a=r;r=r+192|0;e=a+176|0;f=a+40|0;g=a+24|0;h=a+12|0;i=a;switch(d|0){case 739:case 738:{j=Rqa(12)|0;k[j>>2]=3;k[j+4>>2]=4;k[j+8>>2]=5;l=j;m=3;break}case 741:case 740:{j=Rqa(12)|0;k[j>>2]=3;k[j+4>>2]=4;k[j+8>>2]=5;l=j;m=3;break}case 745:{j=Rqa(24)|0;k[j>>2]=3;k[j+4>>2]=4;k[j+8>>2]=5;k[j+12>>2]=9;k[j+16>>2]=10;k[j+20>>2]=11;l=j;m=6;break}case 742:{j=Rqa(24)|0;k[j>>2]=3;k[j+4>>2]=4;k[j+8>>2]=5;k[j+12>>2]=12;k[j+16>>2]=13;k[j+20>>2]=14;l=j;m=6;break}case 746:{r=a;return}default:{j=f+56|0;n=f+4|0;k[f>>2]=27524;k[j>>2]=27544;B=0;wa(508,f+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;q=o;vva(j);Qb(q|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[j>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){s=Rb()|0;t=Q;u=s}else{k[n>>2]=27560;s=f+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,n|0,e|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(e);Yua(s);Ava(n);t=w;u=v;break}Yua(e);B=0;v=Ia(40,f|0,132447,13)|0;w=B;B=0;if((((!(w&1)?(B=0,w=ya(427,d|0)|0,x=B,B=0,!(x&1)):0)?(x=Lta(w)|0,B=0,y=Ia(40,v|0,w|0,x|0)|0,x=B,B=0,!(x&1)):0)?(B=0,x=Ia(40,y|0,146481,18)|0,y=B,B=0,!(y&1)):0)?(B=0,Xa(239,x|0,0)|0,x=B,B=0,!(x&1)):0){x=Ab(20)|0;B=0;eb(502,g|0,75348,76);y=B;B=0;do if(!(y&1)){B=0;eb(502,h|0,75672,18);w=B;B=0;if(w&1){w=Rb()|0;v=Q;Yua(g);z=v;A=w;break}B=0;wa(510,i|0,n|0);w=B;B=0;if(w&1){w=Rb()|0;C=Q;D=w;E=1}else{B=0;ua(163,x|0,g|0,h|0,1127,i|0);w=B;B=0;if(w&1)F=1;else{B=0;eb(503,x|0,1240,229);B=0;F=0}w=Rb()|0;v=Q;Yua(i);C=v;D=w;E=F}Yua(h);Yua(g);if(E){z=C;A=D}else{G=C;H=D;k[f>>2]=27468;k[j>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(j);Qb(H|0)}}else{w=Rb()|0;z=Q;A=w}while(0);zb(x|0);G=z;H=A;k[f>>2]=27468;k[j>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(j);Qb(H|0)}y=Rb()|0;G=Q;H=y;k[f>>2]=27468;k[j>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(j);Qb(H|0)}while(0);p=t;q=u;vva(j);Qb(q|0)}}k[b>>2]=m;k[c>>2]=l;r=a;return}function hC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;switch(b|0){case 752:{h=740;r=a;return h|0}case 751:{h=740;r=a;return h|0}case 753:{h=742;r=a;return h|0}case 754:{h=742;r=a;return h|0}case 756:{h=748;r=a;return h|0}case 757:{h=743;r=a;return h|0}case 758:{h=743;r=a;return h|0}case 750:case 749:{h=738;r=a;return h|0}default:{h=d+56|0;a=d+4|0;k[d>>2]=27524;k[h>>2]=27544;B=0;wa(508,d+56|0,a|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(h);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[h>>2]=27488;B=0;va(448,a|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[a>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(a);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,132447,13)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,b|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,75348,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,75691,21);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,a|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,1157,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[h>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(h);Qb(C|0)}while(0);j=n;l=o;vva(h);Qb(l|0)}}return 0}function iC(a){a=a|0;gh(a);return}function jC(a){a=a|0;jh(a);return}function kC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=k[a>>2]|0;l=a+4|0;a:do if(j>>>0<(k[l>>2]|0)>>>0){a=j;while(1){m=k[a>>2]|0;a=a+4|0;if((Hc[k[(k[m>>2]|0)+32>>2]&511](m)|0)==(c|0)){n=m;break}if(a>>>0>=(k[l>>2]|0)>>>0)break a}Fc[k[(k[n>>2]|0)+40>>2]&1023](n,b);r=d;return}while(0);d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(d);Qb(p|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);n=B;B=0;do if(n&1){l=Rb()|0;q=Q;s=l}else{k[b>>2]=27560;l=f+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);j=B;B=0;if(j&1){j=Rb()|0;a=Q;Yua(e);Yua(l);Ava(b);q=a;s=j;break}Yua(e);B=0;j=Ia(40,f|0,75713,36)|0;a=B;B=0;if((((((!(a&1)?(B=0,a=Xa(242,j|0,c|0)|0,j=B,B=0,!(j&1)):0)?(B=0,j=Ia(40,a|0,144166,2)|0,a=B,B=0,!(a&1)):0)?(B=0,a=ya(427,c|0)|0,m=B,B=0,!(m&1)):0)?(m=Lta(a)|0,B=0,t=Ia(40,j|0,a|0,m|0)|0,m=B,B=0,!(m&1)):0)?(B=0,m=Ia(40,t|0,141170,1)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,m|0,0)|0,m=B,B=0,!(m&1)):0){m=Ab(20)|0;B=0;eb(502,g|0,75750,72);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,121355,13);a=B;B=0;if(a&1){a=Rb()|0;j=Q;Yua(g);u=j;v=a;break}B=0;wa(510,i|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;w=Q;x=a;y=1}else{B=0;ua(163,m|0,g|0,h|0,77,i|0);a=B;B=0;if(a&1)z=1;else{B=0;eb(503,m|0,1240,229);B=0;z=0}a=Rb()|0;j=Q;Yua(i);w=j;x=a;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(d);Qb(C|0)}}else{a=Rb()|0;u=Q;v=a}while(0);zb(m|0);A=u;C=v;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(d);Qb(C|0)}while(0);o=q;p=s;vva(d);Qb(p|0)}function lC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=k[a>>2]|0;l=a+4|0;a:do if(j>>>0<(k[l>>2]|0)>>>0){a=j;while(1){m=k[a>>2]|0;a=a+4|0;if((Hc[k[(k[m>>2]|0)+32>>2]&511](m)|0)==(c|0)){n=m;break}if(a>>>0>=(k[l>>2]|0)>>>0)break a}Fc[k[(k[n>>2]|0)+64>>2]&1023](n,b);r=d;return}while(0);d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(d);Qb(p|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);n=B;B=0;do if(n&1){l=Rb()|0;q=Q;s=l}else{k[b>>2]=27560;l=f+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);j=B;B=0;if(j&1){j=Rb()|0;a=Q;Yua(e);Yua(l);Ava(b);q=a;s=j;break}Yua(e);B=0;j=Ia(40,f|0,75713,36)|0;a=B;B=0;if((((((!(a&1)?(B=0,a=Xa(242,j|0,c|0)|0,j=B,B=0,!(j&1)):0)?(B=0,j=Ia(40,a|0,144166,2)|0,a=B,B=0,!(a&1)):0)?(B=0,a=ya(427,c|0)|0,m=B,B=0,!(m&1)):0)?(m=Lta(a)|0,B=0,t=Ia(40,j|0,a|0,m|0)|0,m=B,B=0,!(m&1)):0)?(B=0,m=Ia(40,t|0,141170,1)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,m|0,0)|0,m=B,B=0,!(m&1)):0){m=Ab(20)|0;B=0;eb(502,g|0,75750,72);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,77948,15);a=B;B=0;if(a&1){a=Rb()|0;j=Q;Yua(g);u=j;v=a;break}B=0;wa(510,i|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;w=Q;x=a;y=1}else{B=0;ua(163,m|0,g|0,h|0,131,i|0);a=B;B=0;if(a&1)z=1;else{B=0;eb(503,m|0,1240,229);B=0;z=0}a=Rb()|0;j=Q;Yua(i);w=j;x=a;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(d);Qb(C|0)}}else{a=Rb()|0;u=Q;v=a}while(0);zb(m|0);A=u;C=v;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(d);Qb(C|0)}while(0);o=q;p=s;vva(d);Qb(p|0)}function mC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=k[a>>2]|0;d=a+4|0;a:do if(c>>>0<(k[d>>2]|0)>>>0){e=c;while(1){f=k[e>>2]|0;g=Hc[k[(k[f>>2]|0)+32>>2]&511](f)|0;e=e+4|0;if((g|0)==(Hc[k[(k[b>>2]|0)+32>>2]&511](b)|0)){h=f;break}if(e>>>0>=(k[d>>2]|0)>>>0)break a}mh(a,h)|0}while(0);ih(a,b)|0;return 1}function nC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;d=k[a>>2]|0;e=a+4|0;f=k[e>>2]|0;a:do if(d>>>0<f>>>0){g=d;while(1){h=k[g>>2]|0;g=g+4|0;if((Hc[k[(k[h>>2]|0)+32>>2]&511](h)|0)==(c|0)){i=h;break}h=k[e>>2]|0;if(g>>>0>=h>>>0){j=h;break a}}mh(a,i)|0;j=k[e>>2]|0}else j=f;while(0);f=k[a>>2]|0;if(f>>>0<j>>>0)l=f;else return;while(1){f=k[l>>2]|0;l=l+4|0;if((Hc[k[(k[f>>2]|0)+32>>2]&511](f)|0)==(b|0)){m=f;break}if(l>>>0>=(k[e>>2]|0)>>>0){n=9;break}}if((n|0)==9)return;Fc[k[(k[m>>2]|0)+80>>2]&1023](m,c);return}function oC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=k[a>>2]|0;d=a+4|0;if(c>>>0<(k[d>>2]|0)>>>0)e=c;else{f=0;return f|0}while(1){c=k[e>>2]|0;e=e+4|0;if((Hc[k[(k[c>>2]|0)+32>>2]&511](c)|0)==(b|0)){f=c;g=4;break}if(e>>>0>=(k[d>>2]|0)>>>0){f=0;g=4;break}}if((g|0)==4)return f|0;return 0}function pC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0.0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;i=k[a>>2]|0;j=a+4|0;a:do if(i>>>0<(k[j>>2]|0)>>>0){a=i;while(1){l=k[a>>2]|0;a=a+4|0;if((Hc[k[(k[l>>2]|0)+32>>2]&511](l)|0)==(b|0)){m=l;break}if(a>>>0>=(k[j>>2]|0)>>>0)break a}if(m){n=+Zc[k[(k[m>>2]|0)+108>>2]&255](m);r=c;return +n}}while(0);c=e+56|0;m=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,m|0);j=B;B=0;if(j&1){j=Rb()|0;o=Q;p=j;vva(c);Qb(p|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,m|0);j=B;B=0;do if(j&1){i=Rb()|0;q=Q;s=i}else{k[m>>2]=27560;i=e+36|0;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;k[i+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,m|0,d|0);a=B;B=0;if(a&1){a=Rb()|0;l=Q;Yua(d);Yua(i);Ava(m);q=l;s=a;break}Yua(d);B=0;a=Ia(40,e|0,109148,6)|0;l=B;B=0;if((((!(l&1)?(B=0,l=ya(427,b|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(l)|0,B=0,u=Ia(40,a|0,l|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,114879,10)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,75750,72);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,115200,3);l=B;B=0;if(l&1){l=Rb()|0;a=Q;Yua(f);v=a;w=l;break}B=0;wa(510,h|0,m|0);l=B;B=0;if(l&1){l=Rb()|0;x=Q;y=l;z=1}else{B=0;ua(163,t|0,f|0,g|0,238,h|0);l=B;B=0;if(l&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}l=Rb()|0;a=Q;Yua(h);x=a;y=l;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[m>>2]=27560;Yua(i);Ava(m);vva(c);Qb(D|0)}}else{l=Rb()|0;v=Q;w=l}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[m>>2]=27560;Yua(i);Ava(m);vva(c);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[c>>2]=27488;k[m>>2]=27560;Yua(i);Ava(m);vva(c);Qb(D|0)}while(0);o=q;p=s;vva(c);Qb(p|0);return +(0.0)}function qC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0.0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;i=k[a>>2]|0;j=a+4|0;a:do if(i>>>0<(k[j>>2]|0)>>>0){a=i;while(1){l=k[a>>2]|0;a=a+4|0;if((Hc[k[(k[l>>2]|0)+32>>2]&511](l)|0)==(b|0)){m=l;break}if(a>>>0>=(k[j>>2]|0)>>>0)break a}if(m){n=+Zc[k[(k[m>>2]|0)+100>>2]&255](m);r=c;return +n}}while(0);c=e+56|0;m=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,m|0);j=B;B=0;if(j&1){j=Rb()|0;o=Q;p=j;vva(c);Qb(p|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,m|0);j=B;B=0;do if(j&1){i=Rb()|0;q=Q;s=i}else{k[m>>2]=27560;i=e+36|0;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;k[i+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,m|0,d|0);a=B;B=0;if(a&1){a=Rb()|0;l=Q;Yua(d);Yua(i);Ava(m);q=l;s=a;break}Yua(d);B=0;a=Ia(40,e|0,109148,6)|0;l=B;B=0;if((((!(l&1)?(B=0,l=ya(427,b|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(l)|0,B=0,u=Ia(40,a|0,l|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,114879,10)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,75750,72);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,115211,6);l=B;B=0;if(l&1){l=Rb()|0;a=Q;Yua(f);v=a;w=l;break}B=0;wa(510,h|0,m|0);l=B;B=0;if(l&1){l=Rb()|0;x=Q;y=l;z=1}else{B=0;ua(163,t|0,f|0,g|0,258,h|0);l=B;B=0;if(l&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}l=Rb()|0;a=Q;Yua(h);x=a;y=l;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[m>>2]=27560;Yua(i);Ava(m);vva(c);Qb(D|0)}}else{l=Rb()|0;v=Q;w=l}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[m>>2]=27560;Yua(i);Ava(m);vva(c);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[c>>2]=27488;k[m>>2]=27560;Yua(i);Ava(m);vva(c);Qb(D|0)}while(0);o=q;p=s;vva(c);Qb(p|0);return +(0.0)}function rC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0.0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;i=k[a>>2]|0;j=a+4|0;a:do if(i>>>0<(k[j>>2]|0)>>>0){a=i;while(1){l=k[a>>2]|0;a=a+4|0;if((Hc[k[(k[l>>2]|0)+32>>2]&511](l)|0)==(b|0)){m=l;break}if(a>>>0>=(k[j>>2]|0)>>>0)break a}if(m){n=+Zc[k[(k[m>>2]|0)+112>>2]&255](m);r=c;return +n}}while(0);c=e+56|0;m=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,m|0);j=B;B=0;if(j&1){j=Rb()|0;o=Q;p=j;vva(c);Qb(p|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,m|0);j=B;B=0;do if(j&1){i=Rb()|0;q=Q;s=i}else{k[m>>2]=27560;i=e+36|0;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;k[i+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,m|0,d|0);a=B;B=0;if(a&1){a=Rb()|0;l=Q;Yua(d);Yua(i);Ava(m);q=l;s=a;break}Yua(d);B=0;a=Ia(40,e|0,109148,6)|0;l=B;B=0;if((((!(l&1)?(B=0,l=ya(427,b|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(l)|0,B=0,u=Ia(40,a|0,l|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,114879,10)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,75750,72);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,77944,3);l=B;B=0;if(l&1){l=Rb()|0;a=Q;Yua(f);v=a;w=l;break}B=0;wa(510,h|0,m|0);l=B;B=0;if(l&1){l=Rb()|0;x=Q;y=l;z=1}else{B=0;ua(163,t|0,f|0,g|0,278,h|0);l=B;B=0;if(l&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}l=Rb()|0;a=Q;Yua(h);x=a;y=l;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[m>>2]=27560;Yua(i);Ava(m);vva(c);Qb(D|0)}}else{l=Rb()|0;v=Q;w=l}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[m>>2]=27560;Yua(i);Ava(m);vva(c);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[c>>2]=27488;k[m>>2]=27560;Yua(i);Ava(m);vva(c);Qb(D|0)}while(0);o=q;p=s;vva(c);Qb(p|0);return +(0.0)}function sC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=k[a>>2]|0;d=a+4|0;if(c>>>0<(k[d>>2]|0)>>>0)e=c;else return 1;while(1){c=k[e>>2]|0;e=e+4|0;if((Hc[k[(k[c>>2]|0)+32>>2]&511](c)|0)==(b|0)){f=c;break}if(e>>>0>=(k[d>>2]|0)>>>0){g=5;break}}if((g|0)==5)return 1;mh(a,f)|0;return 1}function tC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=k[a>>2]|0;l=a+4|0;a:do if(j>>>0<(k[l>>2]|0)>>>0){m=j;while(1){n=k[m>>2]|0;m=m+4|0;if((Hc[k[(k[n>>2]|0)+32>>2]&511](n)|0)==(b|0)){o=n;break}if(m>>>0>=(k[l>>2]|0)>>>0)break a}if(o){m=Hc[k[(k[o>>2]|0)+24>>2]&511](o)|0;Fc[k[(k[m>>2]|0)+80>>2]&1023](m,c);n=k[a>>2]|0;if(n>>>0>=(k[l>>2]|0)>>>0){ih(a,m)|0;r=d;return}p=n;while(1){n=k[p>>2]|0;q=Hc[k[(k[n>>2]|0)+32>>2]&511](n)|0;p=p+4|0;if((q|0)==(Hc[k[(k[m>>2]|0)+32>>2]&511](m)|0)){s=n;break}if(p>>>0>=(k[l>>2]|0)>>>0){t=35;break}}if((t|0)==35){ih(a,m)|0;r=d;return}mh(a,s)|0;ih(a,m)|0;r=d;return}}while(0);d=f+56|0;a=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,a|0);s=B;B=0;if(s&1){s=Rb()|0;u=Q;v=s;vva(d);Qb(v|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,a|0);s=B;B=0;do if(s&1){t=Rb()|0;w=Q;x=t}else{k[a>>2]=27560;t=f+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,a|0,e|0);l=B;B=0;if(l&1){l=Rb()|0;c=Q;Yua(e);Yua(t);Ava(a);w=c;x=l;break}Yua(e);B=0;l=Ia(40,f|0,75823,32)|0;c=B;B=0;if(((!(c&1)?(B=0,c=ya(427,b|0)|0,o=B,B=0,!(o&1)):0)?(o=Lta(c)|0,B=0,j=Ia(40,l|0,c|0,o|0)|0,o=B,B=0,!(o&1)):0)?(B=0,Xa(239,j|0,0)|0,j=B,B=0,!(j&1)):0){j=Ab(20)|0;B=0;eb(502,g|0,75750,72);o=B;B=0;do if(!(o&1)){B=0;eb(502,h|0,75856,14);c=B;B=0;if(c&1){c=Rb()|0;l=Q;Yua(g);y=l;z=c;break}B=0;wa(510,i|0,a|0);c=B;B=0;if(c&1){c=Rb()|0;A=Q;C=c;D=1}else{B=0;ua(163,j|0,g|0,h|0,344,i|0);c=B;B=0;if(c&1)E=1;else{B=0;eb(503,j|0,1240,229);B=0;E=0}c=Rb()|0;l=Q;Yua(i);A=l;C=c;D=E}Yua(h);Yua(g);if(D){y=A;z=C}else{F=A;G=C;k[f>>2]=27468;k[d>>2]=27488;k[a>>2]=27560;Yua(t);Ava(a);vva(d);Qb(G|0)}}else{c=Rb()|0;y=Q;z=c}while(0);zb(j|0);F=y;G=z;k[f>>2]=27468;k[d>>2]=27488;k[a>>2]=27560;Yua(t);Ava(a);vva(d);Qb(G|0)}o=Rb()|0;F=Q;G=o;k[f>>2]=27468;k[d>>2]=27488;k[a>>2]=27560;Yua(t);Ava(a);vva(d);Qb(G|0)}while(0);u=w;v=x;vva(d);Qb(v|0)}function uC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=Qqa(36)|0;B=0;va(480,e|0);f=B;B=0;if(f&1){f=Rb()|0;Sqa(e);Qb(f|0)}f=k[a>>2]|0;g=a+4|0;if(f>>>0<(k[g>>2]|0)>>>0)h=f;else return e|0;do{f=k[h>>2]|0;ih(e,ld[k[(k[f>>2]|0)+144>>2]&127](f,b,c,d)|0)|0;h=h+4|0}while(h>>>0<(k[g>>2]|0)>>>0);return e|0}function vC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=Qqa(36)|0;B=0;va(480,d|0);e=B;B=0;if(e&1){e=Rb()|0;Sqa(d);Qb(e|0)}e=k[a>>2]|0;f=a+4|0;if(e>>>0<(k[f>>2]|0)>>>0)g=e;else return d|0;do{e=k[g>>2]|0;ih(d,Rc[k[(k[e>>2]|0)+148>>2]&63](e,b,c)|0)|0;g=g+4|0}while(g>>>0<(k[f>>2]|0)>>>0);return d|0}function wC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=k[a>>2]|0;d=a+4|0;if(c>>>0<(k[d>>2]|0)>>>0)e=c;else return;do{c=k[e>>2]|0;Fc[k[(k[c>>2]|0)+84>>2]&1023](c,b);e=e+4|0}while(e>>>0<(k[d>>2]|0)>>>0);return}function xC(a){a=a|0;k[a>>2]=32164;k[a>>2]=31972;k[a+12>>2]=0;return}function yC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;k[a>>2]=32164;B=0;e=B;B=0;if(e&1){e=Rb()|0;f=Q;g=e;Qb(g|0)}k[a>>2]=31972;k[a+4>>2]=b;b=a+8|0;k[b>>2]=d;B=0;e=Xa(249,a|0,d|0)|0;d=B;B=0;do if(!(d&1)?(B=0,h=ya(422,(e>>>0>536870911?-1:e<<3)|0)|0,i=B,B=0,!(i&1)):0){i=a+12|0;k[i>>2]=h;h=0;while(1){B=0;j=Xa(249,a|0,k[b>>2]|0)|0;l=B;B=0;if(l&1){m=9;break}if((h|0)>=(j|0)){m=7;break}p[(k[i>>2]|0)+(h<<3)>>3]=+p[c+(h<<3)>>3];h=h+1|0}if((m|0)==7)return;else if((m|0)==9){h=Rb()|0;n=h;o=Q;break}}else m=10;while(0);if((m|0)==10){m=Rb()|0;n=m;o=Q}f=o;g=n;Qb(g|0)}function zC(a){a=a|0;var b=0;k[a>>2]=31972;b=a+12|0;a=k[b>>2]|0;if(!a){k[b>>2]=0;return}Tqa(a);k[b>>2]=0;return}function AC(a){a=a|0;var b=0,c=0;k[a>>2]=31972;b=a+12|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;Sqa(a);return}function BC(a){a=a|0;Ec[k[(k[a>>2]|0)+12>>2]&1023](a);return}function CC(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){q=Rb()|0;s=Q;t=q}else{k[l>>2]=27560;q=d+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(c);Yua(q);Ava(l);s=v;t=u;break}Yua(c);k[d+(k[(k[d>>2]|0)+-12>>2]|0)+12>>2]=15;B=0;u=Ia(40,d|0,75881,12)|0;v=B;B=0;do if((((!(v&1)?(k[u+(k[(k[u>>2]|0)+-12>>2]|0)+12>>2]=25,w=u+(k[(k[u>>2]|0)+-12>>2]|0)+4|0,k[w>>2]=k[w>>2]&-177|32,B=0,w=ya(427,k[a+4>>2]|0)|0,x=B,B=0,!(x&1)):0)?(x=Lta(w)|0,B=0,y=Ia(40,u|0,w|0,x|0)|0,x=B,B=0,!(x&1)):0)?(B=0,Ia(40,y|0,120962,2)|0,y=B,B=0,!(y&1)):0)?(B=0,wa(510,e|0,l|0),y=B,B=0,!(y&1)):0){B=0;ya(424,e|0)|0;y=B;B=0;if(y&1){y=Rb()|0;x=Q;Yua(e);z=x;A=y;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(q);Ava(l);vva(j);y=a+8|0;a:do if((zt(a,k[y>>2]|0)|0)>0){x=f+56|0;w=f+4|0;C=f+56|0;D=f+128|0;E=f+132|0;F=f+36|0;G=f+52|0;H=a+12|0;I=0;while(1){k[f>>2]=27524;k[x>>2]=27544;B=0;wa(508,C|0,w|0);J=B;B=0;if(J&1){K=33;break}k[D>>2]=0;k[E>>2]=-1;k[f>>2]=27468;k[x>>2]=27488;B=0;va(448,w|0);J=B;B=0;if(J&1){K=34;break}k[w>>2]=27560;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;k[G>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,w|0,c|0);J=B;B=0;if(J&1){K=32;break}Yua(c);B=0;J=Ia(40,f|0,149175,1)|0;L=B;B=0;if(L&1){K=42;break}B=0;Sa(1,J|0,+(+p[(k[H>>2]|0)+(I<<3)>>3]))|0;J=B;B=0;if(J&1){K=42;break}B=0;wa(510,g|0,w|0);J=B;B=0;if(J&1){K=42;break}B=0;ya(424,g|0)|0;J=B;B=0;if(J&1){K=43;break}Yua(g);k[f>>2]=27468;k[x>>2]=27488;k[w>>2]=27560;Yua(F);Ava(w);vva(x);I=I+1|0;if((I|0)>=(zt(a,k[y>>2]|0)|0))break a}if((K|0)==32){I=Rb()|0;H=Q;Yua(c);Yua(F);Ava(w);M=H;N=I;K=35}else if((K|0)==33){I=Rb()|0;O=Q;P=I;vva(x);Qb(P|0)}else if((K|0)==34){I=Rb()|0;M=Q;N=I;K=35}else if((K|0)==42){I=Rb()|0;R=Q;S=I;K=44}else if((K|0)==43){I=Rb()|0;H=Q;Yua(g);R=H;S=I;K=44}if((K|0)==35){O=M;P=N;vva(x);Qb(P|0)}else if((K|0)==44){k[f>>2]=27468;k[x>>2]=27488;k[w>>2]=27560;Yua(F);Ava(w);vva(x);T=R;U=S;Qb(U|0)}}while(0);y=h+56|0;I=h+4|0;k[h>>2]=27524;k[y>>2]=27544;B=0;wa(508,h+56|0,I|0);H=B;B=0;if(H&1){H=Rb()|0;V=Q;W=H;vva(y);Qb(W|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[y>>2]=27488;B=0;va(448,I|0);H=B;B=0;do if(H&1){G=Rb()|0;X=Q;Y=G}else{k[I>>2]=27560;G=h+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,I|0,c|0);E=B;B=0;if(E&1){E=Rb()|0;D=Q;Yua(c);Yua(G);Ava(I);X=D;Y=E;break}Yua(c);B=0;Ia(40,h|0,149198,2)|0;E=B;B=0;do if(!(E&1)?(B=0,wa(510,i|0,I|0),D=B,B=0,!(D&1)):0){B=0;ya(424,i|0)|0;D=B;B=0;if(D&1){D=Rb()|0;C=Q;Yua(i);Z=C;_=D;break}else{Yua(i);k[h>>2]=27468;k[y>>2]=27488;k[I>>2]=27560;Yua(G);Ava(I);vva(y);r=b;return}}else K=48;while(0);if((K|0)==48){E=Rb()|0;Z=Q;_=E}k[h>>2]=27468;k[y>>2]=27488;k[I>>2]=27560;Yua(G);Ava(I);vva(y);T=Z;U=_;Qb(U|0)}while(0);V=X;W=Y;vva(y);Qb(W|0)}else K=26;while(0);if((K|0)==26){u=Rb()|0;z=Q;A=u}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(q);Ava(l);vva(j);T=z;U=A;Qb(U|0)}while(0);n=s;o=t;vva(j);Qb(o|0)}function DC(a){a=a|0;return -1}function EC(a){a=a|0;return 620}function FC(a){a=a|0;var b=0;b=Qqa(16)|0;B=0;ib(292,b|0,k[a+4>>2]|0,k[a+12>>2]|0,k[a+8>>2]|0);a=B;B=0;if(a&1){a=Rb()|0;Sqa(b);Qb(a|0)}else return b|0;return 0}function GC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;e=r;r=r+368|0;f=e+344|0;g=e+208|0;h=e+196|0;j=e+184|0;m=e+36|0;n=e+48|0;o=e+24|0;p=e+12|0;q=e;s=(d|0)==0;a:do if(s){t=k[b>>2]|0;i[t>>0]=108;i[t+1>>0]=2;i[t+2>>0]=0;i[t+3>>0]=0;t=(k[b>>2]|0)+4|0;k[b>>2]=t;u=a+4|0;v=l[u>>0]|l[u+1>>0]<<8|l[u+2>>0]<<16|l[u+3>>0]<<24;i[t>>0]=v;i[t+1>>0]=v>>8;i[t+2>>0]=v>>16;i[t+3>>0]=v>>24;v=(k[b>>2]|0)+4|0;k[b>>2]=v;t=a+8|0;u=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[v>>0]=u;i[v+1>>0]=u>>8;i[v+2>>0]=u>>16;i[v+3>>0]=u>>24;k[b>>2]=(k[b>>2]|0)+4;w=t}else switch(d|0){case 2:{k[c>>2]=(k[c>>2]|0)+12;w=a+8|0;break a;break}case 1:{t=(k[b>>2]|0)+4|0;k[b>>2]=t;u=a+4|0;v=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[u>>0]=v;i[u+1>>0]=v>>8;i[u+2>>0]=v>>16;i[u+3>>0]=v>>24;v=(k[b>>2]|0)+4|0;k[b>>2]=v;u=a+8|0;t=l[v>>0]|l[v+1>>0]<<8|l[v+2>>0]<<16|l[v+3>>0]<<24;i[u>>0]=t;i[u+1>>0]=t>>8;i[u+2>>0]=t>>16;i[u+3>>0]=t>>24;k[b>>2]=(k[b>>2]|0)+4;w=u;break a;break}default:{u=g+56|0;t=g+4|0;k[g>>2]=27524;k[u>>2]=27544;B=0;wa(508,g+56|0,t|0);v=B;B=0;if(v&1){v=Rb()|0;x=Q;y=v;vva(u);Qb(y|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[u>>2]=27488;B=0;va(448,t|0);v=B;B=0;do if(v&1){z=Rb()|0;A=Q;C=z}else{k[t>>2]=27560;z=g+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,t|0,f|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(f);Yua(z);Ava(t);A=E;C=D;break}Yua(f);B=0;D=Ia(40,g|0,143951,43)|0;E=B;B=0;b:do if(!(E&1)?(B=0,Xa(239,D|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,h|0,75894,74);G=B;B=0;do if(!(G&1)){B=0;eb(502,j|0,149525,8);H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(h);J=I;K=H;break}B=0;wa(510,m|0,t|0);H=B;B=0;if(H&1){H=Rb()|0;L=Q;M=H;N=1}else{B=0;ua(163,F|0,h|0,j|0,63,m|0);H=B;B=0;if(H&1)O=1;else{B=0;eb(503,F|0,1240,229);B=0;O=0}H=Rb()|0;I=Q;Yua(m);L=I;M=H;N=O}Yua(j);Yua(h);if(N){J=L;K=M}else{P=L;R=M;break b}}else{H=Rb()|0;J=Q;K=H}while(0);zb(F|0);P=J;R=K}else S=18;while(0);if((S|0)==18){D=Rb()|0;P=Q;R=D}k[g>>2]=27468;k[u>>2]=27488;k[t>>2]=27560;Yua(z);Ava(t);vva(u);T=R;U=P;Qb(T|0)}while(0);x=A;y=C;vva(u);Qb(y|0)}}while(0);y=zt(a,k[w>>2]|0)|0;w=a+12|0;if((y|0)<=0){k[w>>2]=0;r=e;return}a=(k[w>>2]|0)==0;if(s){i[k[b>>2]>>0]=a&1;s=(k[b>>2]|0)+1|0;k[b>>2]=s;if(a){r=e;return}C=y<<3;TEa(s|0,k[w>>2]|0,C|0)|0;k[b>>2]=(k[b>>2]|0)+C;r=e;return}switch(d|0){case 2:{d=(k[c>>2]|0)+1|0;k[c>>2]=d;if(a){r=e;return}k[c>>2]=d+(y<<3);r=e;return}case 1:{d=k[b>>2]|0;c=i[d>>0]|0;k[b>>2]=d+1;if(c&1){r=e;return}c=Rqa(y>>>0>536870911?-1:y<<3)|0;k[w>>2]=c;w=k[b>>2]|0;d=y<<3;TEa(c|0,w|0,d|0)|0;k[b>>2]=w+d;r=e;return}default:{e=n+56|0;d=n+4|0;k[n>>2]=27524;k[e>>2]=27544;B=0;wa(508,n+56|0,d|0);w=B;B=0;if(w&1){w=Rb()|0;V=Q;W=w;vva(e);Qb(W|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[e>>2]=27488;B=0;va(448,d|0);w=B;B=0;do if(w&1){b=Rb()|0;X=Q;Y=b}else{k[d>>2]=27560;b=n+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,d|0,f|0);c=B;B=0;if(c&1){c=Rb()|0;y=Q;Yua(f);Yua(b);Ava(d);X=y;Y=c;break}Yua(f);B=0;c=Ia(40,n|0,143951,43)|0;y=B;B=0;c:do if(!(y&1)?(B=0,Xa(239,c|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,o|0,75894,74);C=B;B=0;do if(!(C&1)){B=0;eb(502,p|0,149525,8);s=B;B=0;if(s&1){s=Rb()|0;A=Q;Yua(o);Z=s;_=A;break}B=0;wa(510,q|0,d|0);A=B;B=0;if(A&1){A=Rb()|0;$=1;aa=Q;ba=A}else{B=0;ua(163,a|0,o|0,p|0,70,q|0);A=B;B=0;if(A&1)ca=1;else{B=0;eb(503,a|0,1240,229);B=0;ca=0}A=Rb()|0;s=Q;Yua(q);$=ca;aa=s;ba=A}Yua(p);Yua(o);if($){Z=ba;_=aa}else{da=ba;ea=aa;break c}}else{A=Rb()|0;Z=A;_=Q}while(0);zb(a|0);da=Z;ea=_}else S=49;while(0);if((S|0)==49){c=Rb()|0;da=c;ea=Q}k[n>>2]=27468;k[e>>2]=27488;k[d>>2]=27560;Yua(b);Ava(d);vva(e);T=da;U=ea;Qb(T|0)}while(0);V=X;W=Y;vva(e);Qb(W|0)}}}function HC(a){a=a|0;return k[a+4>>2]|0}function IC(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0.0,g=0,h=0.0,i=0.0;c=zt(a,k[a+8>>2]|0)|0;d=+(c|0);if((c|0)<=0){e=0.0;f=e/d;p[b>>3]=f;return}g=k[a+12>>2]|0;a=0;h=0.0;while(1){i=h+ +p[g+(a<<3)>>3];a=a+1|0;if((a|0)==(c|0)){e=i;break}else h=i}f=e/d;p[b>>3]=f;return}function JC(a,b,c){a=a|0;b=b|0;c=c|0;Bt(a,b,k[a+12>>2]|0,c,k[a+8>>2]|0);return}function KC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;yt(a,b,k[a+12>>2]|0,c,d,k[a+8>>2]|0);return}function LC(a,b){a=a|0;b=b|0;return}function MC(a){a=a|0;var b=0,c=0,d=0.0,e=0,f=0.0,g=0.0,h=0.0;b=zt(a,k[a+8>>2]|0)|0;c=k[a+12>>2]|0;d=+p[c>>3];if((b|0)>1){e=1;f=d}else{g=d;return +g}while(1){d=+p[c+(e<<3)>>3];h=d<f?d:f;e=e+1|0;if((e|0)==(b|0)){g=h;break}else f=h}return +g}function NC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,51,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function OC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,52,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function PC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,53,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function QC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;e=c+24|0;f=c+12|0;g=c;c=a+56|0;h=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=a+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,a|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,75969,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,121355,13);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,55,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[a>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(E|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function RC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,56,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function SC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121324,30);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,59,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function TC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,120910,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,60,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function UC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,a|0,75969,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,120878,31);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(a);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,a|0,f|0,61,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(a);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(E|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function VC(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115254,10);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,62,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function WC(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115244,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,63,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function XC(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,75969,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,115231,12);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,64,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function YC(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115218,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,69,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function ZC(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115211,6);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,71,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function _C(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115204,6);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,73,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function $C(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,75969,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115200,3);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,70,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function aD(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,75969,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,120874,3);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,65,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}
+function Goa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0.0,h=0.0,j=0.0,l=0,m=0.0,n=0.0,o=0.0,q=0.0,s=0.0,t=0;b=r;r=r+16|0;c=b;d=Rqa(12040)|0;e=Rqa(11640)|0;bO(k[a+44>>2]|0,c,442);f=0;do{g=+(f|0)*.02+-13.75;h=g+13.75;if(h<.05)j=0.0;else{l=0;m=0.0;n=.05;while(1){o=n-g;q=m+n*+ja(+(o*o*-.01652892561983471))*.1;n=n+.1;if(n>h|(l|0)>598){j=q;break}else{l=l+1|0;m=q}}}p[d+(f<<3)>>3]=j*.07253496007298776;f=f+1|0}while((f|0)!=1376);p[d+11016>>3]=13.77;f=0;do{j=+(f|0)*.02+-12.5;m=j+-12.5;if(m>1.95)s=0.0;else{l=0;h=0.0;n=1.95;while(1){g=n-j;q=h+ +ja(+(g*g*-.02))*.1;n=n+-.1;if(n<m|(l|0)>598){s=q;break}else{l=l+1|0;h=q}}}p[e+(f<<3)>>3]=s*.07978845608028655;f=f+1|0}while((f|0)!=1351);p[e+10816>>3]=0.0;f=a+20|0;if((th(k[f>>2]|0)|0)>0)t=0;else{Tqa(d);Tqa(e);r=b;return}do{a=qh(k[f>>2]|0,t)|0;jq(a,d,e,5.5,(i[c>>0]|0)!=0);t=t+1|0}while((t|0)<(th(k[f>>2]|0)|0));Tqa(d);Tqa(e);r=b;return}function Hoa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0;b=r;r=r+16|0;c=b;dO(k[a+44>>2]|0,c,67);d=a+20|0;if((th(k[d>>2]|0)|0)>0)e=0;else{r=b;return}do{a=qh(k[d>>2]|0,e)|0;f=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;g=f>>>0>536870911?-1:f<<3;h=Rqa(g)|0;i=Rqa(g)|0;j=Rqa(g)|0;xp(a,h,339);xp(a,i,462);if((f|0)>0){l=+p[c>>3];g=0;do{m=+p[h+(g<<3)>>3];n=m*.00969+-15.86;if(m<1675.0)o=n;else{q=m+-1675.0;o=n*(1.0-q*.0011+q*(q*-.0000154))}p[j+(g<<3)>>3]=+p[i+(g<<3)>>3]+(o+-.235)/l;g=g+1|0}while((g|0)!=(f|0))}rd[k[(k[a>>2]|0)+48>>2]&511](a,388,j,738);Tqa(h);Tqa(i);Tqa(j);e=e+1|0}while((e|0)<(th(k[d>>2]|0)|0));r=b;return}function Ioa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=a+20|0;if((th(k[b>>2]|0)|0)>0)c=0;else return;do{a=qh(k[b>>2]|0,c)|0;d=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;e=d>>>0>536870911?-1:d<<3;f=Rqa(e)|0;g=Rqa(e)|0;h=Rqa(e)|0;i=Rqa(e)|0;xp(a,f,467);xp(a,g,468);xp(a,h,469);if((d|0)>0){e=0;do{p[i+(e<<3)>>3]=+p[f+(e<<3)>>3]-+p[g+(e<<3)>>3]-+p[h+(e<<3)>>3];e=e+1|0}while((e|0)!=(d|0))}rd[k[(k[a>>2]|0)+48>>2]&511](a,388,i,738);Tqa(f);Tqa(g);Tqa(h);Tqa(i);c=c+1|0}while((c|0)<(th(k[b>>2]|0)|0));return}function Joa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=a+20|0;if((th(k[b>>2]|0)|0)>0)c=0;else return;do{a=qh(k[b>>2]|0,c)|0;d=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;e=d>>>0>536870911?-1:d<<3;f=Rqa(e)|0;g=Rqa(e)|0;h=Rqa(e)|0;i=Rqa(e)|0;j=Rqa(e)|0;xp(a,f,467);xp(a,g,468);xp(a,h,471);xp(a,i,472);if((d|0)>0){e=0;do{p[j+(e<<3)>>3]=+p[f+(e<<3)>>3]-+p[g+(e<<3)>>3]-+p[h+(e<<3)>>3]+ +p[i+(e<<3)>>3];e=e+1|0}while((e|0)!=(d|0))}rd[k[(k[a>>2]|0)+48>>2]&511](a,388,j,738);Tqa(f);Tqa(g);Tqa(h);Tqa(i);Tqa(j);c=c+1|0}while((c|0)<(th(k[b>>2]|0)|0));return}function Koa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;e=r;r=r+176|0;f=e+156|0;g=e+152|0;h=e+16|0;i=e;a:do if(BY()|0){j=h+56|0;l=h+4|0;k[h>>2]=27524;k[j>>2]=27544;B=0;wa(508,h+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=h+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,l|0,f|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(f);Yua(p);Ava(l);q=u;s=t;break}Yua(f);B=0;Ia(40,h|0,146631,33)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,i|0,l|0),u=B,B=0,!(u&1)):0){B=0;ya(425,i|0)|0;u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(i);w=u;x=v;break}else{Yua(i);k[h>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);break a}}else y=14;while(0);if((y|0)==14){t=Rb()|0;w=t;x=Q}k[h>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);z=w;A=x;Qb(z|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}while(0);cO(d,g,478);o=en(c,k[g>>2]|0,937)|0;cO(d,f,477);d=fn(c,k[f>>2]|0,937)|0;if(!o){C=0;k[a>>2]=C;r=e;return}f=Qqa(8)|0;B=0;va(485,f|0);s=B;B=0;b:do if(s&1)y=24;else{do if(k[f>>2]|0){B=0;q=ya(423,4)|0;n=B;B=0;if(n&1){y=24;break b}B=0;eb(525,q|0,d|0,o|0);n=B;B=0;if(n&1){n=Rb()|0;x=Q;Sqa(q);D=x;E=n;break b}else{k[f+4>>2]=q;break}}while(0);if(bn(c,k[g>>2]|0)|0){if(!(k[b>>2]|0))F=0;else{j=k[k[b+4>>2]>>2]|0;F=Hc[k[(k[j>>2]|0)+52>>2]&511](j)|0}if((th(c)|0)>0){j=0;do{q=qh(c,j)|0;if(Tn(q,k[g>>2]|0)|0)ho(q,f,F,937);j=j+1|0}while((j|0)<(th(c)|0));G=F}else G=F}else G=0;if(k[f>>2]|0){j=k[k[f+4>>2]>>2]|0;Ec[k[(k[j>>2]|0)+12>>2]&1023](j)}if(!G){C=f;k[a>>2]=C;r=e;return}Tqa(G);C=f;k[a>>2]=C;r=e;return}while(0);if((y|0)==24){y=Rb()|0;D=Q;E=y}Sqa(f);z=E;A=D;Qb(z|0)}function Loa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;e=r;r=r+192|0;f=e+168|0;g=e+164|0;h=e+160|0;i=e+156|0;j=e+152|0;l=e+16|0;m=e;a:do if(BY()|0){n=l+56|0;o=l+4|0;k[l>>2]=27524;k[n>>2]=27544;B=0;wa(508,l+56|0,o|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;s=p;vva(n);Qb(s|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[n>>2]=27488;B=0;va(448,o|0);p=B;B=0;do if(p&1){t=Rb()|0;u=Q;v=t}else{k[o>>2]=27560;t=l+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[l+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,o|0,f|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(f);Yua(t);Ava(o);u=x;v=w;break}Yua(f);B=0;Ia(40,l|0,146665,44)|0;w=B;B=0;do if(!(w&1)?(B=0,wa(510,m|0,o|0),x=B,B=0,!(x&1)):0){B=0;ya(425,m|0)|0;x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(m);z=y;A=x;break}else{Yua(m);k[l>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);break a}}else C=14;while(0);if((C|0)==14){w=Rb()|0;z=Q;A=w}k[l>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);D=z;E=A;Qb(E|0)}while(0);q=u;s=v;vva(n);Qb(s|0)}while(0);if(k[b>>2]|0){s=k[k[b+4>>2]>>2]|0;nd[k[(k[s>>2]|0)+20>>2]&1023](s,i,j)}if(!a){r=e;return}s=k[i>>2]|0;if(!(ma(k[j>>2]|0,s)|0)){r=e;return}if(!(k[b>>2]|0))F=s;else{s=k[k[b+4>>2]>>2]|0;nd[k[(k[s>>2]|0)+24>>2]&1023](s,g,h);F=k[i>>2]|0}i=Qqa(8)|0;h=k[g>>2]|0;B=0;va(485,i|0);g=B;B=0;b:do if(g&1)C=29;else{do if(k[i>>2]|0){B=0;s=ya(423,4)|0;j=B;B=0;if(j&1){C=29;break b}B=0;eb(525,s|0,h|0,F|0);j=B;B=0;if(j&1){j=Rb()|0;v=Q;Sqa(s);G=v;H=j;break b}else{k[i+4>>2]=s;break}}while(0);if(d){n=Qqa(8)|0;B=0;va(485,n|0);s=B;B=0;if(s&1){s=Rb()|0;Sqa(n);Qb(s|0)}if(k[c>>2]|0){s=k[c+4>>2]|0;j=Qqa(4)|0;v=k[s>>2]|0;u=Hc[k[(k[v>>2]|0)+36>>2]&511](v)|0;k[j>>2]=u;v=k[s>>2]|0;Fc[k[(k[v>>2]|0)+60>>2]&1023](v,u);k[n+4>>2]=j}if((k[n>>2]|0)!=0?(j=n+4|0,u=k[k[j>>2]>>2]|0,Cc[k[(k[u>>2]|0)+40>>2]&63](u,0.0),(k[n>>2]|0)!=0):0){u=k[k[j>>2]>>2]|0;Ec[k[(k[u>>2]|0)+12>>2]&1023](u)}if(!(k[b>>2]|0))I=n;else{u=k[k[b+4>>2]>>2]|0;nd[k[(k[u>>2]|0)+28>>2]&1023](u,k[k[n+4>>2]>>2]|0,k[k[i+4>>2]>>2]|0);I=n}}else if(!(k[b>>2]|0))I=0;else{n=k[k[b+4>>2]>>2]|0;nd[k[(k[n>>2]|0)+28>>2]&1023](n,k[k[c+4>>2]>>2]|0,k[k[i+4>>2]>>2]|0);I=0}if(k[a>>2]|0){n=k[k[a+4>>2]>>2]|0;Xc[k[(k[n>>2]|0)+44>>2]&63](n,k[k[i+4>>2]>>2]|0,-1.0)}if(I){if((k[I>>2]|0)!=0?(n=k[I+4>>2]|0,(n|0)!=0):0){u=k[n>>2]|0;if(u)Ec[k[(k[u>>2]|0)+4>>2]&1023](u);Sqa(n)}Sqa(I)}if((k[i>>2]|0)!=0?(n=k[i+4>>2]|0,(n|0)!=0):0){u=k[n>>2]|0;if(u)Ec[k[(k[u>>2]|0)+4>>2]&1023](u);Sqa(n)}Sqa(i);r=e;return}while(0);if((C|0)==29){C=Rb()|0;G=Q;H=C}Sqa(i);D=G;E=H;Qb(E|0)}function Moa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;e=d+176|0;f=d+172|0;g=d+168|0;h=d+164|0;i=d+160|0;j=d+156|0;l=d+152|0;m=d+16|0;n=d;k[f>>2]=1;k[g>>2]=0;k[h>>2]=0;k[i>>2]=0;k[j>>2]=0;a:do if(BY()|0){o=m+56|0;p=m+4|0;k[m>>2]=27524;k[o>>2]=27544;B=0;wa(508,m+56|0,p|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;t=q;vva(o);Qb(t|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[o>>2]=27488;B=0;va(448,p|0);q=B;B=0;do if(q&1){u=Rb()|0;v=Q;w=u}else{k[p>>2]=27560;u=m+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[m+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,p|0,e|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(e);Yua(u);Ava(p);v=y;w=x;break}Yua(e);B=0;Ia(40,m|0,146710,26)|0;x=B;B=0;if(!(x&1)?(B=0,wa(510,n|0,p|0),x=B,B=0,!(x&1)):0){B=0;ya(425,n|0)|0;x=B;B=0;if(!(x&1)){Yua(n);k[m>>2]=27468;k[o>>2]=27488;k[p>>2]=27560;Yua(u);Ava(p);vva(o);break a}x=Rb()|0;y=Q;Yua(n);z=x;A=y;k[m>>2]=27468;k[o>>2]=27488;k[p>>2]=27560;Yua(u);Ava(p);vva(o);Qb(z|0)}y=Rb()|0;z=y;A=Q;k[m>>2]=27468;k[o>>2]=27488;k[p>>2]=27560;Yua(u);Ava(p);vva(o);Qb(z|0)}while(0);s=v;t=w;vva(o);Qb(t|0)}while(0);t=c+44|0;cO(k[t>>2]|0,h,80);cO(k[t>>2]|0,l,477);t=c+36|0;if(lpa(k[t>>2]|0,k[l>>2]|0)|0)mpa(f,g,k[t>>2]|0,k[h>>2]|0,k[l>>2]|0);if((bL(k[t>>2]|0)|0)>0){h=0;do{c=qh(k[t>>2]|0,h)|0;if(ed[k[(k[c>>2]|0)+60>>2]&511](c,k[l>>2]|0)|0?(Hc[k[(k[c>>2]|0)+20>>2]&511](c)|0)==593:0){CM(c,i);k[g>>2]=(k[g>>2]|0)+(k[i>>2]|0)}h=h+1|0}while((h|0)<(bL(k[t>>2]|0)|0))}nZ(g,j,1,4,4,0,uY()|0)|0;uY()|0;t=k[j>>2]|0;k[g>>2]=t;if(!t){C=k[f>>2]|0;k[a>>2]=C;k[b>>2]=t;r=d;return}else{k[f>>2]=0;C=0;k[a>>2]=C;k[b>>2]=t;r=d;return}}function Noa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;b=r;r=r+352|0;c=b+328|0;d=b+192|0;e=b+180|0;f=b+176|0;g=b+40|0;h=b+24|0;i=b+12|0;j=b;a:do if(BY()|0){l=d+56|0;m=d+4|0;k[d>>2]=27524;k[l>>2]=27544;B=0;wa(508,d+56|0,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(l);Qb(p|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[l>>2]=27488;B=0;va(448,m|0);n=B;B=0;do if(n&1){q=Rb()|0;s=Q;t=q}else{k[m>>2]=27560;q=d+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,m|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(c);Yua(q);Ava(m);s=v;t=u;break}Yua(c);B=0;Ia(40,d|0,146737,23)|0;u=B;B=0;do if(!(u&1)?(B=0,wa(510,e|0,m|0),v=B,B=0,!(v&1)):0){B=0;ya(425,e|0)|0;v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(e);x=v;y=w;break}else{Yua(e);k[d>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);break a}}else z=14;while(0);if((z|0)==14){u=Rb()|0;x=u;y=Q}k[d>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);A=x;C=y;Qb(A|0)}while(0);o=s;p=t;vva(l);Qb(p|0)}while(0);cO(k[a+44>>2]|0,f,477);p=a+36|0;if(!(lpa(k[p>>2]|0,k[f>>2]|0)|0)){if((bL(k[p>>2]|0)|0)<=0){r=b;return}a=0;do{t=qh(k[p>>2]|0,a)|0;if(ed[k[(k[t>>2]|0)+60>>2]&511](t,k[f>>2]|0)|0?(Hc[k[(k[t>>2]|0)+20>>2]&511](t)|0)==593:0)FM(t);a=a+1|0}while((a|0)<(bL(k[p>>2]|0)|0));r=b;return}b=g+56|0;p=g+4|0;k[g>>2]=27524;k[b>>2]=27544;B=0;wa(508,g+56|0,p|0);a=B;B=0;if(a&1){a=Rb()|0;D=Q;E=a;vva(b);Qb(E|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[b>>2]=27488;B=0;va(448,p|0);a=B;B=0;do if(a&1){f=Rb()|0;F=Q;G=f}else{k[p>>2]=27560;f=g+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[g+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,p|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;s=Q;Yua(c);Yua(f);Ava(p);F=s;G=t;break}Yua(c);B=0;t=Ia(40,g|0,146761,41)|0;s=B;B=0;b:do if(!(s&1)?(B=0,Xa(239,t|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,h|0,146803,94);y=B;B=0;do if(!(y&1)){B=0;eb(502,i|0,146898,17);x=B;B=0;if(x&1){x=Rb()|0;d=Q;Yua(h);H=x;I=d;break}B=0;wa(510,j|0,p|0);d=B;B=0;if(d&1){d=Rb()|0;J=d;K=Q;L=1}else{B=0;ua(163,o|0,h|0,i|0,27,j|0);d=B;B=0;if(d&1)M=1;else{B=0;eb(503,o|0,1240,229);B=0;M=0}d=Rb()|0;x=Q;Yua(j);J=d;K=x;L=M}Yua(i);Yua(h);if(L){H=J;I=K}else{N=J;O=K;break b}}else{x=Rb()|0;H=x;I=Q}while(0);zb(o|0);N=H;O=I}else z=35;while(0);if((z|0)==35){t=Rb()|0;N=t;O=Q}k[g>>2]=27468;k[b>>2]=27488;k[p>>2]=27560;Yua(f);Ava(p);vva(b);A=N;C=O;Qb(A|0)}while(0);D=F;E=G;vva(b);Qb(E|0)}function Ooa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;if((th(a)|0)>0)g=0;else return;do{f=qh(a,g)|0;Ec[k[(k[f>>2]|0)+412>>2]&1023](f);g=g+1|0}while((g|0)<(th(a)|0));return}function Poa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;g=r;r=r+176|0;h=g+152|0;i=g+16|0;j=g;if(!(BY()|0)){l=Qqa(20)|0;k[l>>2]=b;m=l+4|0;k[m>>2]=c;n=l+8|0;k[n>>2]=d;o=l+12|0;k[o>>2]=e;p=l+16|0;k[p>>2]=f;q=Qoa(l)|0;Sqa(l);k[a>>2]=q;r=g;return}s=i+56|0;t=i+4|0;k[i>>2]=27524;k[s>>2]=27544;B=0;wa(508,i+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=i+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[i+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,t|0,h|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(h);Yua(x);Ava(t);y=C;z=A;break}Yua(h);B=0;Ia(40,i|0,146916,25)|0;A=B;B=0;if(!(A&1)?(B=0,wa(510,j|0,t|0),A=B,B=0,!(A&1)):0){B=0;ya(425,j|0)|0;A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(j);D=C;E=A;k[i>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);Qb(E|0)}else{Yua(j);k[i>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);l=Qqa(20)|0;k[l>>2]=b;m=l+4|0;k[m>>2]=c;n=l+8|0;k[n>>2]=d;o=l+12|0;k[o>>2]=e;p=l+16|0;k[p>>2]=f;q=Qoa(l)|0;Sqa(l);k[a>>2]=q;r=g;return}}A=Rb()|0;D=Q;E=A;k[i>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);Qb(E|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}function Qoa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;h=Qqa(8)|0;B=0;va(485,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;Sqa(h);l=j;m=i;Qb(m|0)}i=k[a>>2]|0;if((k[i>>2]|0)==1){iqa(h+4|0,k[i+4>>2]|0,k[(k[a+4>>2]|0)+4>>2]|0,k[a+16>>2]|0);r=b;return h|0}h=d+56|0;b=d+4|0;k[d>>2]=27524;k[h>>2]=27544;B=0;wa(508,d+56|0,b|0);i=B;B=0;if(i&1){i=Rb()|0;n=Q;o=i;vva(h);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[h>>2]=27488;B=0;va(448,b|0);i=B;B=0;do if(i&1){j=Rb()|0;p=Q;q=j}else{k[b>>2]=27560;j=d+36|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(c);Yua(j);Ava(b);p=t;q=s;break}Yua(c);B=0;s=Ia(40,d|0,146942,13)|0;t=B;B=0;a:do if(((!(t&1)?(B=0,u=Xa(242,s|0,k[k[a>>2]>>2]|0)|0,v=B,B=0,!(v&1)):0)?(B=0,v=Ia(40,u|0,146956,19)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,e|0,146976,98);u=B;B=0;do if(!(u&1)){B=0;eb(502,f|0,147075,5);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(e);y=x;z=w;break}B=0;wa(510,g|0,b|0);w=B;B=0;if(w&1){w=Rb()|0;A=Q;C=w;D=1}else{B=0;ua(163,v|0,e|0,f|0,78,g|0);w=B;B=0;if(w&1)E=1;else{B=0;eb(503,v|0,1240,229);B=0;E=0}w=Rb()|0;x=Q;Yua(g);A=x;C=w;D=E}Yua(f);Yua(e);if(D){y=A;z=C}else{F=A;G=C;break a}}else{w=Rb()|0;y=Q;z=w}while(0);zb(v|0);F=y;G=z}else H=22;while(0);if((H|0)==22){s=Rb()|0;F=Q;G=s}k[d>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(j);Ava(b);vva(h);l=F;m=G;Qb(m|0)}while(0);n=p;o=q;vva(h);Qb(o|0);return 0}function Roa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;g=r;r=r+176|0;h=g+156|0;i=g+152|0;j=g+16|0;l=g;a:do if(BY()|0){m=j+56|0;n=j+4|0;k[j>>2]=27524;k[m>>2]=27544;B=0;wa(508,j+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;q=o;vva(m);Qb(q|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){s=Rb()|0;t=Q;u=s}else{k[n>>2]=27560;s=j+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[j+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,n|0,h|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(h);Yua(s);Ava(n);t=w;u=v;break}Yua(h);B=0;Ia(40,j|0,147081,45)|0;v=B;B=0;do if(!(v&1)?(B=0,wa(510,l|0,n|0),w=B,B=0,!(w&1)):0){B=0;ya(425,l|0)|0;w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(l);y=x;z=w;break}else{Yua(l);k[j>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);break a}}else A=14;while(0);if((A|0)==14){v=Rb()|0;y=Q;z=v}k[j>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);C=y;D=z;Qb(D|0)}while(0);p=t;q=u;vva(m);Qb(q|0)}while(0);cO(e,i,478);q=en(d,k[i>>2]|0,943)|0;u=en(d,k[i>>2]|0,937)|0;t=(en(d,k[i>>2]|0,966)|0)!=0;if(t&f?(k[c>>2]|0)!=0:0){f=k[k[c+4>>2]>>2]|0;Cc[k[(k[f>>2]|0)+40>>2]&63](f,0.0)}f=Qqa(8)|0;B=0;va(485,f|0);i=B;B=0;b:do if(i&1)A=28;else{do if(k[f>>2]|0){B=0;p=ya(423,4)|0;z=B;B=0;if(z&1){A=28;break b}B=0;eb(505,p|0,q|0,0);z=B;B=0;if(z&1){z=Rb()|0;y=Q;Sqa(p);E=y;F=z;break b}else{k[f+4>>2]=p;break}}while(0);if(u)sqa(f,b,d,e,937);if(!t){k[a>>2]=f;r=g;return}sqa(f,c,d,e,966);k[a>>2]=f;r=g;return}while(0);if((A|0)==28){A=Rb()|0;E=Q;F=A}Sqa(f);C=E;D=F;Qb(D|0)}function Soa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;c=r;r=r+176|0;d=c+156|0;e=c+152|0;f=c+16|0;g=c;k[e>>2]=0;a:do if(CY()|0){h=f+56|0;i=f+4|0;k[f>>2]=27524;k[h>>2]=27544;B=0;wa(508,f+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(h);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[h>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=f+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;Ia(40,f|0,147127,35)|0;q=B;B=0;if(!(q&1)?(B=0,wa(510,g|0,i|0),q=B,B=0,!(q&1)):0){B=0;ya(425,g|0)|0;q=B;B=0;if(!(q&1)){Yua(g);k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);break a}q=Rb()|0;s=Q;Yua(g);t=s;u=q;k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);Qb(u|0)}q=Rb()|0;t=Q;u=q;k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);Qb(u|0)}while(0);l=o;m=p;vva(h);Qb(m|0)}while(0);xh(a,b);Aoa(e,a);rqa(k[a+32>>2]|0,k[a+24>>2]|0,k[a+44>>2]|0,k[e>>2]|0);a=k[e>>2]|0;if(!a){r=c;return}if((k[a>>2]|0)!=0?(e=k[a+4>>2]|0,(e|0)!=0):0){b=k[e>>2]|0;if(b)Ec[k[(k[b>>2]|0)+4>>2]&1023](b);Sqa(e)}Sqa(a);r=c;return}function Toa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0.0,Bb=0.0,Cb=0.0,Db=0.0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0.0,Lb=0.0,Mb=0,Nb=0,Ob=0.0,Pb=0.0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Gc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0;b=r;r=r+1936|0;c=b+1920|0;d=b+1916|0;e=b+1912|0;f=b+1908|0;g=b+1880|0;h=b+1876|0;i=b+1860|0;j=b+1856|0;l=b+1840|0;m=b;n=b+1824|0;o=b+1808|0;q=b+1804|0;s=b+1656|0;u=b+1896|0;v=b+1884|0;w=b+1864|0;x=b+1520|0;y=b+1844|0;z=b+1368|0;A=b+1828|0;C=b+1216|0;D=b+1812|0;E=b+1080|0;F=b+1792|0;G=b+1504|0;H=b+1352|0;I=b+928|0;J=b+1064|0;K=b+792|0;L=b+776|0;M=b+640|0;N=b+492|0;O=b+480|0;P=b+192|0;R=b+504|0;S=b+44|0;T=b+344|0;U=b+32|0;V=b+208|0;W=b+20|0;X=b+56|0;Y=b+8|0;k[d>>2]=0;k[e>>2]=0;k[f>>2]=0;k[g>>2]=0;k[h>>2]=0;k[i>>2]=0;k[j>>2]=0;k[l>>2]=0;Z=Qqa(4)|0;k[Z>>2]=38696;_=Qqa(4)|0;k[_>>2]=38784;xh(a,497);aa=a+44|0;cO(k[aa>>2]|0,n,478);dO(k[aa>>2]|0,m,75);cO(k[aa>>2]|0,o,72);Eh(a);k[q>>2]=0;TZ(q,a,674,628);TZ(l,a,653,628);ba=a+24|0;ca=z+56|0;da=z+4|0;ea=z+56|0;fa=z+128|0;ga=z+132|0;ha=z+36|0;ia=z+52|0;ja=x+56|0;ka=x+4|0;la=x+56|0;ma=x+128|0;na=x+132|0;oa=x+36|0;pa=x+52|0;qa=I+56|0;ra=I+4|0;sa=I+56|0;ta=I+128|0;xa=I+132|0;za=I+36|0;Aa=I+52|0;Ba=R+56|0;Ca=R+4|0;Da=R+56|0;Ea=R+128|0;Fa=R+132|0;Ga=R+36|0;Ha=R+52|0;Ja=T+56|0;Ka=T+4|0;La=T+56|0;Ma=T+128|0;Na=T+132|0;Oa=T+36|0;Pa=T+52|0;Qa=K+56|0;Ra=K+4|0;Ta=K+56|0;Ua=K+128|0;Va=K+132|0;Wa=K+36|0;Ya=K+52|0;Za=C+56|0;_a=C+4|0;$a=C+56|0;ab=C+128|0;bb=C+132|0;cb=C+36|0;db=C+52|0;fb=0;gb=0;hb=0;ib=0;a:while(1){jb=fb+1|0;if(hb){if((k[hb>>2]|0)!=0?(kb=k[hb+4>>2]|0,(kb|0)!=0):0){lb=k[kb>>2]|0;if(lb)Ec[k[(k[lb>>2]|0)+4>>2]&1023](lb);Sqa(kb)}Sqa(hb)}kb=k[q>>2]|0;lb=Qqa(8)|0;B=0;va(485,lb|0);mb=B;B=0;if(mb&1){nb=lb;ob=11;break}if(k[kb>>2]|0){mb=k[kb+4>>2]|0;kb=Qqa(4)|0;pb=k[mb>>2]|0;qb=Hc[k[(k[pb>>2]|0)+36>>2]&511](pb)|0;k[kb>>2]=qb;pb=k[mb>>2]|0;Fc[k[(k[pb>>2]|0)+60>>2]&1023](pb,qb);k[lb+4>>2]=kb}kb=k[q>>2]|0;if(k[kb>>2]|0){qb=k[k[kb+4>>2]>>2]|0;Fc[k[(k[qb>>2]|0)+60>>2]&1023](qb,k[k[lb+4>>2]>>2]|0)}if(gb){if((k[gb>>2]|0)!=0?(qb=k[gb+4>>2]|0,(qb|0)!=0):0){kb=k[qb>>2]|0;if(kb)Ec[k[(k[kb>>2]|0)+4>>2]&1023](kb);Sqa(qb)}Sqa(gb)}qb=k[l>>2]|0;kb=0;pb=ib;while(1){kb=kb+1|0;if(pb){if((k[pb>>2]|0)!=0?(mb=k[pb+4>>2]|0,(mb|0)!=0):0){rb=k[mb>>2]|0;if(rb)Ec[k[(k[rb>>2]|0)+4>>2]&1023](rb);Sqa(mb)}Sqa(pb)}sb=k[q>>2]|0;xh(a,497);cO(k[aa>>2]|0,n,478);ooa(d,e,h,i,0,a);poa(j,k[ba>>2]|0,k[n>>2]|0);Loa(k[h>>2]|0,k[e>>2]|0,k[j>>2]|0,0);mb=k[e>>2]|0;if(mb){if((k[mb>>2]|0)!=0?(rb=k[mb+4>>2]|0,(rb|0)!=0):0){tb=k[rb>>2]|0;if(tb)Ec[k[(k[tb>>2]|0)+4>>2]&1023](tb);Sqa(rb)}Sqa(mb)}Poa(g,k[d>>2]|0,k[h>>2]|0,0,k[i>>2]|0,k[aa>>2]|0);mb=k[d>>2]|0;if(mb){if((k[mb>>2]|0)!=0?(rb=k[mb+4>>2]|0,(rb|0)!=0):0){tb=k[rb>>2]|0;if(tb)Ec[k[(k[tb>>2]|0)+4>>2]&1023](tb);Sqa(rb)}Sqa(mb)}mb=k[h>>2]|0;if(mb){if((k[mb>>2]|0)!=0?(rb=k[mb+4>>2]|0,(rb|0)!=0):0){tb=k[rb>>2]|0;if(tb)Ec[k[(k[tb>>2]|0)+4>>2]&1023](tb);Sqa(rb)}Sqa(mb)}mb=k[i>>2]|0;if(mb){if((k[mb>>2]|0)!=0?(rb=k[mb+4>>2]|0,(rb|0)!=0):0){tb=k[rb>>2]|0;if(tb)Ec[k[(k[tb>>2]|0)+4>>2]&1023](tb);Sqa(rb)}Sqa(mb)}Roa(f,k[g>>2]|0,k[j>>2]|0,k[ba>>2]|0,k[aa>>2]|0,0);mb=k[g>>2]|0;if(mb){if((k[mb>>2]|0)!=0?(rb=k[mb+4>>2]|0,(rb|0)!=0):0){tb=k[rb>>2]|0;if(tb)Ec[k[(k[tb>>2]|0)+4>>2]&1023](tb);Sqa(rb)}Sqa(mb)}mb=k[j>>2]|0;if(mb){if((k[mb>>2]|0)!=0?(rb=k[mb+4>>2]|0,(rb|0)!=0):0){tb=k[rb>>2]|0;if(tb)Ec[k[(k[tb>>2]|0)+4>>2]&1023](tb);Sqa(rb)}Sqa(mb)}xoa(a,k[f>>2]|0);mb=k[f>>2]|0;if(mb){if((k[mb>>2]|0)!=0?(rb=k[mb+4>>2]|0,(rb|0)!=0):0){tb=k[rb>>2]|0;if(tb)Ec[k[(k[tb>>2]|0)+4>>2]&1023](tb);Sqa(rb)}Sqa(mb)}TZ(q,a,674,628);mb=Qqa(8)|0;B=0;va(485,mb|0);rb=B;B=0;if(rb&1){ub=mb;ob=81;break a}if((k[sb>>2]|0)!=0?(rb=sb+4|0,tb=k[rb>>2]|0,vb=Qqa(4)|0,wb=k[tb>>2]|0,xb=Hc[k[(k[wb>>2]|0)+36>>2]&511](wb)|0,k[vb>>2]=xb,wb=k[tb>>2]|0,Fc[k[(k[wb>>2]|0)+60>>2]&1023](wb,xb),k[mb+4>>2]=vb,(k[sb>>2]|0)!=0):0){xb=k[k[rb>>2]>>2]|0;Fc[k[(k[xb>>2]|0)+60>>2]&1023](xb,k[vb>>2]|0)}do if((k[mb>>2]|0)!=0?(vb=mb+4|0,xb=k[k[vb>>2]>>2]|0,Xc[k[(k[xb>>2]|0)+48>>2]&63](xb,k[k[(k[q>>2]|0)+4>>2]>>2]|0,-1.0),(k[mb>>2]|0)!=0):0){xb=k[k[vb>>2]>>2]|0;yb=+id[k[(k[xb>>2]|0)+64>>2]&63](xb,1);if(!(k[mb>>2]|0)){Bb=yb;break}xb=k[vb>>2]|0;if(!xb){Bb=yb;break}vb=k[xb>>2]|0;if(vb)Ec[k[(k[vb>>2]|0)+4>>2]&1023](vb);Sqa(xb);Bb=yb}else Bb=0.0;while(0);Sqa(mb);if(!(k[sb>>2]|0))Cb=0.0;else{xb=k[k[sb+4>>2]>>2]|0;Cb=+id[k[(k[xb>>2]|0)+64>>2]&63](xb,1)}yb=+$(+Bb);p[t>>3]=yb;xb=k[t+4>>2]|0;if(xb>>>0>2146435072|(xb|0)==2146435072&(k[t>>2]|0)>>>0>0){ob=95;break a}yb=+$(+Cb);p[t>>3]=yb;xb=k[t+4>>2]|0;if(xb>>>0>2146435072|(xb|0)==2146435072&(k[t>>2]|0)>>>0>0){ob=95;break a}Db=Bb/Cb;xb=Db<+p[m>>3];Eb=EY()|0;if(xb){ob=119;break}if(Eb){k[z>>2]=27524;k[ca>>2]=27544;B=0;wa(508,ea|0,da|0);xb=B;B=0;if(xb&1){ob=144;break a}k[fa>>2]=0;k[ga>>2]=-1;k[z>>2]=27468;k[ca>>2]=27488;B=0;va(448,da|0);xb=B;B=0;if(xb&1){ob=145;break a}k[da>>2]=27560;k[ha>>2]=0;k[ha+4>>2]=0;k[ha+8>>2]=0;k[ha+12>>2]=0;k[ia>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,da|0,c|0);xb=B;B=0;if(xb&1){ob=143;break a}Yua(c);k[z+(k[(k[z>>2]|0)+-12>>2]|0)+12>>2]=50;xb=z+(k[(k[z>>2]|0)+-12>>2]|0)+4|0;k[xb>>2]=k[xb>>2]&-177|32;B=0;xb=Ia(40,z|0,148312,42)|0;vb=B;B=0;if(vb&1){ob=156;break a}B=0;vb=Sa(1,xb|0,+(Db*100.0))|0;xb=B;B=0;if(xb&1){ob=156;break a}B=0;xb=Ia(40,vb|0,148278,3)|0;vb=B;B=0;if(vb&1){ob=156;break a}B=0;vb=Sa(1,xb|0,+(+p[m>>3]*100.0))|0;xb=B;B=0;if(xb&1){ob=156;break a}B=0;Ia(40,vb|0,148274,3)|0;vb=B;B=0;if(vb&1){ob=156;break a}B=0;wa(510,A|0,da|0);vb=B;B=0;if(vb&1){ob=156;break a}B=0;ya(425,A|0)|0;vb=B;B=0;if(vb&1){ob=157;break a}Yua(A);k[z>>2]=27468;k[ca>>2]=27488;k[da>>2]=27560;Yua(ha);Ava(da);vva(ca)}if((kb|0)>=(k[o>>2]|0)){Fb=sb;Gb=sb;ob=160;break}else pb=sb}if((ob|0)==119){ob=0;if(Eb){k[x>>2]=27524;k[ja>>2]=27544;B=0;wa(508,la|0,ka|0);pb=B;B=0;if(pb&1){ob=124;break}k[ma>>2]=0;k[na>>2]=-1;k[x>>2]=27468;k[ja>>2]=27488;B=0;va(448,ka|0);pb=B;B=0;if(pb&1){ob=125;break}k[ka>>2]=27560;k[oa>>2]=0;k[oa+4>>2]=0;k[oa+8>>2]=0;k[oa+12>>2]=0;k[pa>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ka|0,c|0);pb=B;B=0;if(pb&1){ob=123;break}Yua(c);k[x+(k[(k[x>>2]|0)+-12>>2]|0)+12>>2]=50;pb=x+(k[(k[x>>2]|0)+-12>>2]|0)+4|0;k[pb>>2]=k[pb>>2]&-177|32;B=0;pb=Ia(40,x|0,148312,42)|0;kb=B;B=0;if(kb&1){ob=136;break}B=0;kb=Sa(1,pb|0,+(Db*100.0))|0;pb=B;B=0;if(pb&1){ob=136;break}B=0;pb=Ia(40,kb|0,148270,3)|0;kb=B;B=0;if(kb&1){ob=136;break}B=0;kb=Sa(1,pb|0,+(+p[m>>3]*100.0))|0;pb=B;B=0;if(pb&1){ob=136;break}B=0;Ia(40,kb|0,148274,3)|0;kb=B;B=0;if(kb&1){ob=136;break}B=0;wa(510,y|0,ka|0);kb=B;B=0;if(kb&1){ob=136;break}B=0;ya(425,y|0)|0;kb=B;B=0;if(kb&1){ob=137;break}Yua(y);k[x>>2]=27468;k[ja>>2]=27488;k[ka>>2]=27560;Yua(oa);Ava(ka);vva(ja);Hb=sb;Ib=sb}else{Hb=sb;Ib=sb}}else if((ob|0)==160){ob=0;k[C>>2]=27524;k[Za>>2]=27544;B=0;wa(508,$a|0,_a|0);kb=B;B=0;if(kb&1){ob=164;break}k[ab>>2]=0;k[bb>>2]=-1;k[C>>2]=27468;k[Za>>2]=27488;B=0;va(448,_a|0);kb=B;B=0;if(kb&1){ob=165;break}k[_a>>2]=27560;k[cb>>2]=0;k[cb+4>>2]=0;k[cb+8>>2]=0;k[cb+12>>2]=0;k[db>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,_a|0,c|0);kb=B;B=0;if(kb&1){ob=163;break}Yua(c);B=0;kb=Ia(40,C|0,147682,43)|0;pb=B;B=0;if(pb&1){ob=174;break}B=0;pb=Xa(242,kb|0,k[o>>2]|0)|0;kb=B;B=0;if(kb&1){ob=174;break}B=0;Ia(40,pb|0,148995,11)|0;pb=B;B=0;if(pb&1){ob=174;break}B=0;wa(510,D|0,_a|0);pb=B;B=0;if(pb&1){ob=174;break}B=0;ya(425,D|0)|0;pb=B;B=0;if(pb&1){ob=175;break}Yua(D);k[C>>2]=27468;k[Za>>2]=27488;k[_a>>2]=27560;Yua(cb);Ava(_a);vva(Za);Hb=Gb;Ib=Fb}xh(a,524);cO(k[aa>>2]|0,n,478);ooa(d,e,h,i,0,a);poa(j,k[ba>>2]|0,k[n>>2]|0);Loa(k[h>>2]|0,k[e>>2]|0,k[j>>2]|0,0);pb=k[e>>2]|0;if(pb){if((k[pb>>2]|0)!=0?(kb=k[pb+4>>2]|0,(kb|0)!=0):0){vb=k[kb>>2]|0;if(vb)Ec[k[(k[vb>>2]|0)+4>>2]&1023](vb);Sqa(kb)}Sqa(pb)}Poa(g,k[d>>2]|0,k[h>>2]|0,0,k[i>>2]|0,k[aa>>2]|0);pb=k[d>>2]|0;if(pb){if((k[pb>>2]|0)!=0?(kb=k[pb+4>>2]|0,(kb|0)!=0):0){vb=k[kb>>2]|0;if(vb)Ec[k[(k[vb>>2]|0)+4>>2]&1023](vb);Sqa(kb)}Sqa(pb)}pb=k[h>>2]|0;if(pb){if((k[pb>>2]|0)!=0?(kb=k[pb+4>>2]|0,(kb|0)!=0):0){vb=k[kb>>2]|0;if(vb)Ec[k[(k[vb>>2]|0)+4>>2]&1023](vb);Sqa(kb)}Sqa(pb)}pb=k[i>>2]|0;if(pb){if((k[pb>>2]|0)!=0?(kb=k[pb+4>>2]|0,(kb|0)!=0):0){vb=k[kb>>2]|0;if(vb)Ec[k[(k[vb>>2]|0)+4>>2]&1023](vb);Sqa(kb)}Sqa(pb)}Roa(l,k[g>>2]|0,k[j>>2]|0,k[ba>>2]|0,k[aa>>2]|0,0);pb=k[g>>2]|0;if(pb){if((k[pb>>2]|0)!=0?(kb=k[pb+4>>2]|0,(kb|0)!=0):0){vb=k[kb>>2]|0;if(vb)Ec[k[(k[vb>>2]|0)+4>>2]&1023](vb);Sqa(kb)}Sqa(pb)}pb=k[j>>2]|0;if(pb){if((k[pb>>2]|0)!=0?(kb=k[pb+4>>2]|0,(kb|0)!=0):0){vb=k[kb>>2]|0;if(vb)Ec[k[(k[vb>>2]|0)+4>>2]&1023](vb);Sqa(kb)}Sqa(pb)}xoa(a,k[l>>2]|0);pb=k[l>>2]|0;if(pb){if((k[pb>>2]|0)!=0?(kb=k[pb+4>>2]|0,(kb|0)!=0):0){vb=k[kb>>2]|0;if(vb)Ec[k[(k[vb>>2]|0)+4>>2]&1023](vb);Sqa(kb)}Sqa(pb)}TZ(l,a,653,628);pb=Qqa(8)|0;B=0;va(485,pb|0);kb=B;B=0;if(kb&1){Jb=pb;ob=228;break}if((k[Hb>>2]|0)!=0?(kb=Ib+4|0,vb=k[kb>>2]|0,xb=Qqa(4)|0,rb=k[vb>>2]|0,wb=Hc[k[(k[rb>>2]|0)+36>>2]&511](rb)|0,k[xb>>2]=wb,rb=k[vb>>2]|0,Fc[k[(k[rb>>2]|0)+60>>2]&1023](rb,wb),k[pb+4>>2]=xb,(k[Hb>>2]|0)!=0):0){wb=k[k[kb>>2]>>2]|0;Fc[k[(k[wb>>2]|0)+60>>2]&1023](wb,k[xb>>2]|0)}if((k[pb>>2]|0)!=0?(xb=pb+4|0,wb=k[k[xb>>2]>>2]|0,Xc[k[(k[wb>>2]|0)+48>>2]&63](wb,k[k[(k[q>>2]|0)+4>>2]>>2]|0,-1.0),(k[pb>>2]|0)!=0):0){wb=k[k[xb>>2]>>2]|0;yb=+id[k[(k[wb>>2]|0)+64>>2]&63](wb,1);if((k[pb>>2]|0)!=0?(wb=k[xb>>2]|0,(wb|0)!=0):0){xb=k[wb>>2]|0;if(xb)Ec[k[(k[xb>>2]|0)+4>>2]&1023](xb);Sqa(wb);Kb=yb}else Kb=yb}else Kb=0.0;Sqa(pb);if(!(k[Hb>>2]|0))Lb=0.0;else{pb=k[k[Ib+4>>2]>>2]|0;Lb=+id[k[(k[pb>>2]|0)+64>>2]&63](pb,1)}yb=+$(+Kb);p[t>>3]=yb;pb=k[t+4>>2]|0;if(pb>>>0>2146435072|(pb|0)==2146435072&(k[t>>2]|0)>>>0>0){ob=242;break}yb=+$(+Lb);p[t>>3]=yb;pb=k[t+4>>2]|0;if(pb>>>0>2146435072|(pb|0)==2146435072&(k[t>>2]|0)>>>0>0){ob=242;break}yb=Kb/Lb;pb=yb<+p[m>>3];wb=EY()|0;do if(pb){if(!wb){Mb=1;break}k[I>>2]=27524;k[qa>>2]=27544;B=0;wa(508,sa|0,ra|0);xb=B;B=0;if(xb&1){ob=271;break a}k[ta>>2]=0;k[xa>>2]=-1;k[I>>2]=27468;k[qa>>2]=27488;B=0;va(448,ra|0);xb=B;B=0;if(xb&1){ob=272;break a}k[ra>>2]=27560;k[za>>2]=0;k[za+4>>2]=0;k[za+8>>2]=0;k[za+12>>2]=0;k[Aa>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ra|0,c|0);xb=B;B=0;if(xb&1){ob=270;break a}Yua(c);k[I+(k[(k[I>>2]|0)+-12>>2]|0)+12>>2]=50;xb=I+(k[(k[I>>2]|0)+-12>>2]|0)+4|0;k[xb>>2]=k[xb>>2]&-177|32;B=0;xb=Ia(40,I|0,148312,42)|0;kb=B;B=0;if(kb&1){ob=283;break a}B=0;kb=Sa(1,xb|0,+(yb*100.0))|0;xb=B;B=0;if(xb&1){ob=283;break a}B=0;xb=Ia(40,kb|0,148270,3)|0;kb=B;B=0;if(kb&1){ob=283;break a}B=0;kb=Sa(1,xb|0,+(+p[m>>3]*100.0))|0;xb=B;B=0;if(xb&1){ob=283;break a}B=0;Ia(40,kb|0,148274,3)|0;kb=B;B=0;if(kb&1){ob=283;break a}B=0;wa(510,J|0,ra|0);kb=B;B=0;if(kb&1){ob=283;break a}B=0;ya(425,J|0)|0;kb=B;B=0;if(kb&1){ob=284;break a}Yua(J);k[I>>2]=27468;k[qa>>2]=27488;k[ra>>2]=27560;Yua(za);Ava(ra);vva(qa);Mb=1}else{if(!wb){Mb=0;break}k[K>>2]=27524;k[Qa>>2]=27544;B=0;wa(508,Ta|0,Ra|0);kb=B;B=0;if(kb&1){ob=291;break a}k[Ua>>2]=0;k[Va>>2]=-1;k[K>>2]=27468;k[Qa>>2]=27488;B=0;va(448,Ra|0);kb=B;B=0;if(kb&1){ob=292;break a}k[Ra>>2]=27560;k[Wa>>2]=0;k[Wa+4>>2]=0;k[Wa+8>>2]=0;k[Wa+12>>2]=0;k[Ya>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ra|0,c|0);kb=B;B=0;if(kb&1){ob=290;break a}Yua(c);k[K+(k[(k[K>>2]|0)+-12>>2]|0)+12>>2]=50;kb=K+(k[(k[K>>2]|0)+-12>>2]|0)+4|0;k[kb>>2]=k[kb>>2]&-177|32;B=0;kb=Ia(40,K|0,148312,42)|0;xb=B;B=0;if(xb&1){ob=303;break a}B=0;xb=Sa(1,kb|0,+(yb*100.0))|0;kb=B;B=0;if(kb&1){ob=303;break a}B=0;kb=Ia(40,xb|0,148278,3)|0;xb=B;B=0;if(xb&1){ob=303;break a}B=0;xb=Sa(1,kb|0,+(+p[m>>3]*100.0))|0;kb=B;B=0;if(kb&1){ob=303;break a}B=0;Ia(40,xb|0,148274,3)|0;xb=B;B=0;if(xb&1){ob=303;break a}B=0;wa(510,L|0,Ra|0);xb=B;B=0;if(xb&1){ob=303;break a}B=0;ya(425,L|0)|0;xb=B;B=0;if(xb&1){ob=304;break a}Yua(L);k[K>>2]=27468;k[Qa>>2]=27488;k[Ra>>2]=27560;Yua(Wa);Ava(Ra);vva(Qa);Mb=0}while(0);wb=Qqa(8)|0;B=0;va(485,wb|0);pb=B;B=0;if(pb&1){Nb=wb;ob=308;break}do if(k[qb>>2]|0){pb=qb+4|0;xb=k[pb>>2]|0;kb=Qqa(4)|0;rb=k[xb>>2]|0;vb=Hc[k[(k[rb>>2]|0)+36>>2]&511](rb)|0;k[kb>>2]=vb;rb=k[xb>>2]|0;Fc[k[(k[rb>>2]|0)+60>>2]&1023](rb,vb);k[wb+4>>2]=kb;if(!(k[qb>>2]|0))break;vb=k[k[pb>>2]>>2]|0;Fc[k[(k[vb>>2]|0)+60>>2]&1023](vb,k[kb>>2]|0)}while(0);do if(!(k[wb>>2]|0))Ob=0.0;else{kb=wb+4|0;vb=k[k[kb>>2]>>2]|0;Xc[k[(k[vb>>2]|0)+48>>2]&63](vb,k[k[(k[l>>2]|0)+4>>2]>>2]|0,-1.0);if(!(k[wb>>2]|0)){Ob=0.0;break}vb=k[k[kb>>2]>>2]|0;yb=+id[k[(k[vb>>2]|0)+64>>2]&63](vb,1);if(!(k[wb>>2]|0)){Ob=yb;break}vb=k[kb>>2]|0;if(!vb){Ob=yb;break}kb=k[vb>>2]|0;if(kb)Ec[k[(k[kb>>2]|0)+4>>2]&1023](kb);Sqa(vb);Ob=yb}while(0);Sqa(wb);if(!(k[qb>>2]|0))Pb=0.0;else{vb=k[k[qb+4>>2]>>2]|0;Pb=+id[k[(k[vb>>2]|0)+64>>2]&63](vb,1)}yb=+$(+Ob);p[t>>3]=yb;vb=k[t+4>>2]|0;if(vb>>>0>2146435072|(vb|0)==2146435072&(k[t>>2]|0)>>>0>0){ob=322;break}yb=+$(+Pb);p[t>>3]=yb;vb=k[t+4>>2]|0;if(vb>>>0>2146435072|(vb|0)==2146435072&(k[t>>2]|0)>>>0>0){ob=322;break}yb=Ob/Pb;vb=yb<+p[m>>3];kb=EY()|0;do if(vb){if(kb){k[R>>2]=27524;k[Ba>>2]=27544;B=0;wa(508,Da|0,Ca|0);pb=B;B=0;if(pb&1){ob=351;break a}k[Ea>>2]=0;k[Fa>>2]=-1;k[R>>2]=27468;k[Ba>>2]=27488;B=0;va(448,Ca|0);pb=B;B=0;if(pb&1){ob=352;break a}k[Ca>>2]=27560;k[Ga>>2]=0;k[Ga+4>>2]=0;k[Ga+8>>2]=0;k[Ga+12>>2]=0;k[Ha>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ca|0,c|0);pb=B;B=0;if(pb&1){ob=350;break a}Yua(c);k[R+(k[(k[R>>2]|0)+-12>>2]|0)+12>>2]=50;pb=R+(k[(k[R>>2]|0)+-12>>2]|0)+4|0;k[pb>>2]=k[pb>>2]&-177|32;B=0;pb=Ia(40,R|0,147272,42)|0;rb=B;B=0;if(rb&1){ob=363;break a}B=0;rb=Sa(1,pb|0,+(yb*100.0))|0;pb=B;B=0;if(pb&1){ob=363;break a}B=0;pb=Ia(40,rb|0,148270,3)|0;rb=B;B=0;if(rb&1){ob=363;break a}B=0;rb=Sa(1,pb|0,+(+p[m>>3]*100.0))|0;pb=B;B=0;if(pb&1){ob=363;break a}B=0;Ia(40,rb|0,148274,3)|0;rb=B;B=0;if(rb&1){ob=363;break a}B=0;wa(510,S|0,Ca|0);rb=B;B=0;if(rb&1){ob=363;break a}B=0;ya(425,S|0)|0;rb=B;B=0;if(rb&1){ob=364;break a}Yua(S);k[R>>2]=27468;k[Ba>>2]=27488;k[Ca>>2]=27560;Yua(Ga);Ava(Ca);vva(Ba)}if(Mb){Sb=qb;Tb=qb;Ub=lb;Vb=Ib;Wb=Hb;Xb=fb;ob=405;break a}}else{if(!kb)break;k[T>>2]=27524;k[Ja>>2]=27544;B=0;wa(508,La|0,Ka|0);rb=B;B=0;if(rb&1){ob=371;break a}k[Ma>>2]=0;k[Na>>2]=-1;k[T>>2]=27468;k[Ja>>2]=27488;B=0;va(448,Ka|0);rb=B;B=0;if(rb&1){ob=372;break a}k[Ka>>2]=27560;k[Oa>>2]=0;k[Oa+4>>2]=0;k[Oa+8>>2]=0;k[Oa+12>>2]=0;k[Pa>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ka|0,c|0);rb=B;B=0;if(rb&1){ob=370;break a}Yua(c);k[T+(k[(k[T>>2]|0)+-12>>2]|0)+12>>2]=50;rb=T+(k[(k[T>>2]|0)+-12>>2]|0)+4|0;k[rb>>2]=k[rb>>2]&-177|32;B=0;rb=Ia(40,T|0,147315,43)|0;pb=B;B=0;if(pb&1){ob=383;break a}B=0;pb=Sa(1,rb|0,+(yb*100.0))|0;rb=B;B=0;if(rb&1){ob=383;break a}B=0;rb=Ia(40,pb|0,148278,3)|0;pb=B;B=0;if(pb&1){ob=383;break a}B=0;pb=Sa(1,rb|0,+(+p[m>>3]*100.0))|0;rb=B;B=0;if(rb&1){ob=383;break a}B=0;Ia(40,pb|0,148274,3)|0;pb=B;B=0;if(pb&1){ob=383;break a}B=0;wa(510,U|0,Ka|0);pb=B;B=0;if(pb&1){ob=383;break a}B=0;ya(425,U|0)|0;pb=B;B=0;if(pb&1){ob=384;break a}Yua(U);k[T>>2]=27468;k[Ja>>2]=27488;k[Ka>>2]=27560;Yua(Oa);Ava(Ka);vva(Ja)}while(0);if((jb|0)<(k[o>>2]|0)){fb=jb;gb=qb;hb=lb;ib=Ib}else{Yb=lb;Zb=qb;_b=Hb;$b=Ib;ac=qb;bc=fb;ob=388;break}}b:switch(ob|0){case 11:{fb=Rb()|0;Sqa(nb);Qb(fb|0);break}case 81:{fb=Rb()|0;Sqa(ub);Qb(fb|0);break}case 95:{fb=s+56|0;ub=s+4|0;k[s>>2]=27524;k[fb>>2]=27544;B=0;wa(508,s+56|0,ub|0);nb=B;B=0;if(nb&1){nb=Rb()|0;cc=Q;dc=nb;vva(fb);Qb(dc|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[fb>>2]=27488;B=0;va(448,ub|0);nb=B;B=0;do if(nb&1){Ib=Rb()|0;ec=Q;fc=Ib}else{k[ub>>2]=27560;Ib=s+36|0;k[Ib>>2]=0;k[Ib+4>>2]=0;k[Ib+8>>2]=0;k[Ib+12>>2]=0;k[s+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ub|0,c|0);Hb=B;B=0;if(Hb&1){Hb=Rb()|0;ib=Q;Yua(c);Yua(Ib);Ava(ub);ec=ib;fc=Hb;break}Yua(c);B=0;Hb=Ia(40,s|0,148282,29)|0;ib=B;B=0;c:do if(!(ib&1)?(B=0,Xa(239,Hb|0,0)|0,hb=B,B=0,!(hb&1)):0){hb=Ab(20)|0;B=0;eb(502,u|0,147163,88);gb=B;B=0;do if(!(gb&1)){B=0;eb(502,v|0,147252,19);m=B;B=0;if(m&1){m=Rb()|0;Pa=Q;Yua(u);gc=Pa;hc=m;break}B=0;wa(510,w|0,ub|0);m=B;B=0;if(m&1){m=Rb()|0;ic=Q;jc=m;kc=1}else{B=0;ua(163,hb|0,u|0,v|0,77,w|0);m=B;B=0;if(m&1)lc=1;else{B=0;eb(503,hb|0,1240,229);B=0;lc=0}m=Rb()|0;Pa=Q;Yua(w);ic=Pa;jc=m;kc=lc}Yua(v);Yua(u);if(kc){gc=ic;hc=jc}else{mc=ic;nc=jc;break c}}else{m=Rb()|0;gc=Q;hc=m}while(0);zb(hb|0);mc=gc;nc=hc}else ob=110;while(0);if((ob|0)==110){Hb=Rb()|0;mc=Q;nc=Hb}k[s>>2]=27468;k[fb>>2]=27488;k[ub>>2]=27560;Yua(Ib);Ava(ub);vva(fb);oc=mc;pc=nc;Qb(pc|0)}while(0);cc=ec;dc=fc;vva(fb);Qb(dc|0);break}case 123:{dc=Rb()|0;fb=Q;Yua(c);Yua(oa);Ava(ka);qc=fb;rc=dc;ob=126;break}case 124:{dc=Rb()|0;sc=Q;tc=dc;vva(ja);Qb(tc|0);break}case 125:{dc=Rb()|0;qc=Q;rc=dc;ob=126;break}case 136:{dc=Rb()|0;uc=Q;vc=dc;ob=138;break}case 137:{dc=Rb()|0;fb=Q;Yua(y);uc=fb;vc=dc;ob=138;break}case 143:{dc=Rb()|0;fb=Q;Yua(c);Yua(ha);Ava(da);wc=fb;xc=dc;ob=146;break}case 144:{dc=Rb()|0;yc=Q;zc=dc;vva(ca);Qb(zc|0);break}case 145:{dc=Rb()|0;wc=Q;xc=dc;ob=146;break}case 156:{dc=Rb()|0;Ac=Q;Bc=dc;ob=158;break}case 157:{dc=Rb()|0;fb=Q;Yua(A);Ac=fb;Bc=dc;ob=158;break}case 163:{dc=Rb()|0;fb=Q;Yua(c);Yua(cb);Ava(_a);Cc=fb;Dc=dc;ob=166;break}case 164:{dc=Rb()|0;Gc=Q;Ic=dc;vva(Za);Qb(Ic|0);break}case 165:{dc=Rb()|0;Cc=Q;Dc=dc;ob=166;break}case 174:{dc=Rb()|0;Jc=Q;Kc=dc;ob=176;break}case 175:{dc=Rb()|0;fb=Q;Yua(D);Jc=fb;Kc=dc;ob=176;break}case 228:{dc=Rb()|0;Sqa(Jb);Qb(dc|0);break}case 242:{dc=E+56|0;Jb=E+4|0;k[E>>2]=27524;k[dc>>2]=27544;B=0;wa(508,E+56|0,Jb|0);fb=B;B=0;if(fb&1){fb=Rb()|0;Lc=Q;Mc=fb;vva(dc);Qb(Mc|0)}k[E+128>>2]=0;k[E+132>>2]=-1;k[E>>2]=27468;k[dc>>2]=27488;B=0;va(448,Jb|0);fb=B;B=0;do if(fb&1){D=Rb()|0;Nc=Q;Oc=D}else{k[Jb>>2]=27560;D=E+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[E+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Jb|0,c|0);A=B;B=0;if(A&1){A=Rb()|0;y=Q;Yua(c);Yua(D);Ava(Jb);Nc=y;Oc=A;break}Yua(c);B=0;A=Ia(40,E|0,148282,29)|0;y=B;B=0;d:do if(!(y&1)?(B=0,Xa(239,A|0,0)|0,fc=B,B=0,!(fc&1)):0){fc=Ab(20)|0;B=0;eb(502,F|0,147163,88);ec=B;B=0;do if(!(ec&1)){B=0;eb(502,G|0,147252,19);cc=B;B=0;if(cc&1){cc=Rb()|0;nc=Q;Yua(F);Pc=nc;Qc=cc;break}B=0;wa(510,H|0,Jb|0);cc=B;B=0;if(cc&1){cc=Rb()|0;Rc=1;Sc=Q;Tc=cc}else{B=0;ua(163,fc|0,F|0,G|0,109,H|0);cc=B;B=0;if(cc&1)Uc=1;else{B=0;eb(503,fc|0,1240,229);B=0;Uc=0}cc=Rb()|0;nc=Q;Yua(H);Rc=Uc;Sc=nc;Tc=cc}Yua(G);Yua(F);if(Rc){Pc=Sc;Qc=Tc}else{Vc=Sc;Wc=Tc;break d}}else{cc=Rb()|0;Pc=Q;Qc=cc}while(0);zb(fc|0);Vc=Pc;Wc=Qc}else ob=257;while(0);if((ob|0)==257){A=Rb()|0;Vc=Q;Wc=A}k[E>>2]=27468;k[dc>>2]=27488;k[Jb>>2]=27560;Yua(D);Ava(Jb);vva(dc);oc=Vc;pc=Wc;Qb(pc|0)}while(0);Lc=Nc;Mc=Oc;vva(dc);Qb(Mc|0);break}case 270:{Mc=Rb()|0;dc=Q;Yua(c);Yua(za);Ava(ra);Yc=dc;Zc=Mc;ob=273;break}case 271:{Mc=Rb()|0;_c=Q;$c=Mc;vva(qa);Qb($c|0);break}case 272:{Mc=Rb()|0;Yc=Q;Zc=Mc;ob=273;break}case 283:{Mc=Rb()|0;ad=Q;bd=Mc;ob=285;break}case 284:{Mc=Rb()|0;dc=Q;Yua(J);ad=dc;bd=Mc;ob=285;break}case 290:{Mc=Rb()|0;dc=Q;Yua(c);Yua(Wa);Ava(Ra);cd=dc;dd=Mc;ob=293;break}case 291:{Mc=Rb()|0;ed=Q;fd=Mc;vva(Qa);Qb(fd|0);break}case 292:{Mc=Rb()|0;cd=Q;dd=Mc;ob=293;break}case 303:{Mc=Rb()|0;gd=Q;hd=Mc;ob=305;break}case 304:{Mc=Rb()|0;dc=Q;Yua(L);gd=dc;hd=Mc;ob=305;break}case 308:{Mc=Rb()|0;Sqa(Nb);Qb(Mc|0);break}case 322:{Mc=M+56|0;Nb=M+4|0;k[M>>2]=27524;k[Mc>>2]=27544;B=0;wa(508,M+56|0,Nb|0);dc=B;B=0;if(dc&1){dc=Rb()|0;jd=Q;kd=dc;vva(Mc);Qb(kd|0)}k[M+128>>2]=0;k[M+132>>2]=-1;k[M>>2]=27468;k[Mc>>2]=27488;B=0;va(448,Nb|0);dc=B;B=0;do if(dc&1){L=Rb()|0;ld=Q;md=L}else{k[Nb>>2]=27560;L=M+36|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;k[M+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Nb|0,c|0);J=B;B=0;if(J&1){J=Rb()|0;Oc=Q;Yua(c);Yua(L);Ava(Nb);ld=Oc;md=J;break}Yua(c);B=0;J=Ia(40,M|0,148282,29)|0;Oc=B;B=0;e:do if(!(Oc&1)?(B=0,Xa(239,J|0,0)|0,Nc=B,B=0,!(Nc&1)):0){Nc=Ab(20)|0;B=0;eb(502,N|0,147163,88);Lc=B;B=0;do if(!(Lc&1)){B=0;eb(502,O|0,147252,19);Wc=B;B=0;if(Wc&1){Wc=Rb()|0;Vc=Q;Yua(N);nd=Vc;od=Wc;break}B=0;wa(510,P|0,Nb|0);Wc=B;B=0;if(Wc&1){Wc=Rb()|0;pd=1;qd=Q;rd=Wc}else{B=0;ua(163,Nc|0,N|0,O|0,121,P|0);Wc=B;B=0;if(Wc&1)sd=1;else{B=0;eb(503,Nc|0,1240,229);B=0;sd=0}Wc=Rb()|0;Vc=Q;Yua(P);pd=sd;qd=Vc;rd=Wc}Yua(O);Yua(N);if(pd){nd=qd;od=rd}else{td=qd;ud=rd;break e}}else{Wc=Rb()|0;nd=Q;od=Wc}while(0);zb(Nc|0);td=nd;ud=od}else ob=337;while(0);if((ob|0)==337){J=Rb()|0;td=Q;ud=J}k[M>>2]=27468;k[Mc>>2]=27488;k[Nb>>2]=27560;Yua(L);Ava(Nb);vva(Mc);oc=td;pc=ud;Qb(pc|0)}while(0);jd=ld;kd=md;vva(Mc);Qb(kd|0);break}case 350:{kd=Rb()|0;Mc=Q;Yua(c);Yua(Ga);Ava(Ca);vd=Mc;wd=kd;ob=353;break}case 351:{kd=Rb()|0;xd=Q;yd=kd;vva(Ba);Qb(yd|0);break}case 352:{kd=Rb()|0;vd=Q;wd=kd;ob=353;break}case 363:{kd=Rb()|0;zd=Q;Ad=kd;ob=365;break}case 364:{kd=Rb()|0;Mc=Q;Yua(S);zd=Mc;Ad=kd;ob=365;break}case 370:{kd=Rb()|0;Mc=Q;Yua(c);Yua(Oa);Ava(Ka);Bd=Mc;Cd=kd;ob=373;break}case 371:{kd=Rb()|0;Dd=Q;Ed=kd;vva(Ja);Qb(Ed|0);break}case 372:{kd=Rb()|0;Bd=Q;Cd=kd;ob=373;break}case 383:{kd=Rb()|0;Fd=Q;Gd=kd;ob=385;break}case 384:{kd=Rb()|0;Mc=Q;Yua(U);Fd=Mc;Gd=kd;ob=385;break}case 388:{kd=V+56|0;Mc=V+4|0;k[V>>2]=27524;k[kd>>2]=27544;B=0;wa(508,V+56|0,Mc|0);U=B;B=0;if(U&1){U=Rb()|0;Hd=Q;Id=U;vva(kd);Qb(Id|0)}k[V+128>>2]=0;k[V+132>>2]=-1;k[V>>2]=27468;k[kd>>2]=27488;B=0;va(448,Mc|0);U=B;B=0;do if(U&1){S=Rb()|0;Jd=Q;Kd=S}else{k[Mc>>2]=27560;S=V+36|0;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;k[V+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Mc|0,c|0);md=B;B=0;if(md&1){md=Rb()|0;ld=Q;Yua(c);Yua(S);Ava(Mc);Jd=ld;Kd=md;break}Yua(c);B=0;md=Ia(40,V|0,147682,43)|0;ld=B;B=0;do if(((!(ld&1)?(B=0,jd=Xa(242,md|0,k[o>>2]|0)|0,ud=B,B=0,!(ud&1)):0)?(B=0,Ia(40,jd|0,148995,11)|0,jd=B,B=0,!(jd&1)):0)?(B=0,wa(510,W|0,Mc|0),jd=B,B=0,!(jd&1)):0){B=0;ya(425,W|0)|0;jd=B;B=0;if(jd&1){jd=Rb()|0;ud=Q;Yua(W);Ld=ud;Md=jd;break}else{Yua(W);k[V>>2]=27468;k[kd>>2]=27488;k[Mc>>2]=27560;Yua(S);Ava(Mc);vva(kd);Sb=Zb;Tb=ac;Ub=Yb;Vb=$b;Wb=_b;Xb=bc;ob=405;break b}}else ob=402;while(0);if((ob|0)==402){md=Rb()|0;Ld=Q;Md=md}k[V>>2]=27468;k[kd>>2]=27488;k[Mc>>2]=27560;Yua(S);Ava(Mc);vva(kd);oc=Ld;pc=Md;Qb(pc|0)}while(0);Hd=Jd;Id=Kd;vva(kd);Qb(Id|0);break}}switch(ob|0){case 126:{sc=qc;tc=rc;vva(ja);Qb(tc|0);break}case 138:{k[x>>2]=27468;k[ja>>2]=27488;k[ka>>2]=27560;Yua(oa);Ava(ka);vva(ja);oc=uc;pc=vc;Qb(pc|0);break}case 146:{yc=wc;zc=xc;vva(ca);Qb(zc|0);break}case 158:{k[z>>2]=27468;k[ca>>2]=27488;k[da>>2]=27560;Yua(ha);Ava(da);vva(ca);oc=Ac;pc=Bc;Qb(pc|0);break}case 166:{Gc=Cc;Ic=Dc;vva(Za);Qb(Ic|0);break}case 176:{k[C>>2]=27468;k[Za>>2]=27488;k[_a>>2]=27560;Yua(cb);Ava(_a);vva(Za);oc=Jc;pc=Kc;Qb(pc|0);break}case 273:{_c=Yc;$c=Zc;vva(qa);Qb($c|0);break}case 285:{k[I>>2]=27468;k[qa>>2]=27488;k[ra>>2]=27560;Yua(za);Ava(ra);vva(qa);oc=ad;pc=bd;Qb(pc|0);break}case 293:{ed=cd;fd=dd;vva(Qa);Qb(fd|0);break}case 305:{k[K>>2]=27468;k[Qa>>2]=27488;k[Ra>>2]=27560;Yua(Wa);Ava(Ra);vva(Qa);oc=gd;pc=hd;Qb(pc|0);break}case 353:{xd=vd;yd=wd;vva(Ba);Qb(yd|0);break}case 365:{k[R>>2]=27468;k[Ba>>2]=27488;k[Ca>>2]=27560;Yua(Ga);Ava(Ca);vva(Ba);oc=zd;pc=Ad;Qb(pc|0);break}case 373:{Dd=Bd;Ed=Cd;vva(Ja);Qb(Ed|0);break}case 385:{k[T>>2]=27468;k[Ja>>2]=27488;k[Ka>>2]=27560;Yua(Oa);Ava(Ka);vva(Ja);oc=Fd;pc=Gd;Qb(pc|0);break}case 405:{f:do if(EY()|0){Gd=X+56|0;Fd=X+4|0;k[X>>2]=27524;k[Gd>>2]=27544;B=0;wa(508,X+56|0,Fd|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;Nd=Q;Od=Ja;vva(Gd);Qb(Od|0)}k[X+128>>2]=0;k[X+132>>2]=-1;k[X>>2]=27468;k[Gd>>2]=27488;B=0;va(448,Fd|0);Ja=B;B=0;do if(Ja&1){Ka=Rb()|0;Pd=Q;Qd=Ka}else{k[Fd>>2]=27560;Ka=X+36|0;k[Ka>>2]=0;k[Ka+4>>2]=0;k[Ka+8>>2]=0;k[Ka+12>>2]=0;k[X+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Fd|0,c|0);Oa=B;B=0;if(Oa&1){Oa=Rb()|0;T=Q;Yua(c);Yua(Ka);Ava(Fd);Pd=T;Qd=Oa;break}Yua(c);B=0;Oa=Ia(40,X|0,147767,32)|0;T=B;B=0;do if(((!(T&1)?(B=0,Ed=Xa(242,Oa|0,Xb|0)|0,Cd=B,B=0,!(Cd&1)):0)?(B=0,Ia(40,Ed|0,149177,1)|0,Ed=B,B=0,!(Ed&1)):0)?(B=0,wa(510,Y|0,Fd|0),Ed=B,B=0,!(Ed&1)):0){B=0;ya(425,Y|0)|0;Ed=B;B=0;if(Ed&1){Ed=Rb()|0;Cd=Q;Yua(Y);Rd=Cd;Sd=Ed;break}else{Yua(Y);k[X>>2]=27468;k[Gd>>2]=27488;k[Fd>>2]=27560;Yua(Ka);Ava(Fd);vva(Gd);break f}}else ob=420;while(0);if((ob|0)==420){Oa=Rb()|0;Rd=Q;Sd=Oa}k[X>>2]=27468;k[Gd>>2]=27488;k[Fd>>2]=27560;Yua(Ka);Ava(Fd);vva(Gd);oc=Rd;pc=Sd;Qb(pc|0)}while(0);Nd=Pd;Od=Qd;vva(Gd);Qb(Od|0)}while(0);Od=k[l>>2]|0;if(Od){if((k[Od>>2]|0)!=0?(l=k[Od+4>>2]|0,(l|0)!=0):0){Qd=k[l>>2]|0;if(Qd)Ec[k[(k[Qd>>2]|0)+4>>2]&1023](Qd);Sqa(l)}Sqa(Od)}if(Sb){if((k[Tb>>2]|0)!=0?(Tb=k[Sb+4>>2]|0,(Tb|0)!=0):0){Od=k[Tb>>2]|0;if(Od)Ec[k[(k[Od>>2]|0)+4>>2]&1023](Od);Sqa(Tb)}Sqa(Sb)}Sb=k[q>>2]|0;if(Sb){if((k[Sb>>2]|0)!=0?(q=k[Sb+4>>2]|0,(q|0)!=0):0){Tb=k[q>>2]|0;if(Tb)Ec[k[(k[Tb>>2]|0)+4>>2]&1023](Tb);Sqa(q)}Sqa(Sb)}if((k[Ub>>2]|0)!=0?(Sb=k[Ub+4>>2]|0,(Sb|0)!=0):0){q=k[Sb>>2]|0;if(q)Ec[k[(k[q>>2]|0)+4>>2]&1023](q);Sqa(Sb)}Sqa(Ub);if(!Vb){Td=k[Z>>2]|0;Ud=Td+4|0;Vd=k[Ud>>2]|0;Ec[Vd&1023](Z);Wd=k[_>>2]|0;Xd=Wd+4|0;Yd=k[Xd>>2]|0;Ec[Yd&1023](_);r=b;return}if((k[Wb>>2]|0)!=0?(Wb=k[Vb+4>>2]|0,(Wb|0)!=0):0){Ub=k[Wb>>2]|0;if(Ub)Ec[k[(k[Ub>>2]|0)+4>>2]&1023](Ub);Sqa(Wb)}Sqa(Vb);Td=k[Z>>2]|0;Ud=Td+4|0;Vd=k[Ud>>2]|0;Ec[Vd&1023](Z);Wd=k[_>>2]|0;Xd=Wd+4|0;Yd=k[Xd>>2]|0;Ec[Yd&1023](_);r=b;return}}}function Uoa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0.0,ga=0.0,ha=0.0,ia=0.0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0;b=r;r=r+848|0;c=b+836|0;d=b+832|0;e=b+828|0;f=b+824|0;g=b+820|0;h=b+816|0;i=b+812|0;j=b+808|0;l=b+16|0;m=b;n=b+804|0;o=b+788|0;q=b+760|0;s=b+624|0;u=b+792|0;v=b+776|0;w=b+764|0;x=b+472|0;y=b+608|0;z=b+336|0;A=b+320|0;C=b+184|0;D=b+36|0;E=b+48|0;F=b+24|0;k[d>>2]=0;k[e>>2]=0;k[f>>2]=0;k[g>>2]=0;k[h>>2]=0;k[i>>2]=0;k[j>>2]=0;G=Qqa(4)|0;k[G>>2]=38696;H=a+44|0;cO(k[H>>2]|0,n,478);dO(k[H>>2]|0,l,75);cO(k[H>>2]|0,o,72);dO(k[H>>2]|0,b+8|0,916);dO(k[H>>2]|0,m,920);Eh(a);I=a+20|0;kaa(G,k[I>>2]|0,k[H>>2]|0);Aoa(f,a);k[q>>2]=0;TZ(q,a,674,628);J=a+24|0;K=z+56|0;L=z+4|0;M=z+56|0;N=z+128|0;O=z+132|0;P=z+36|0;R=z+52|0;S=0;T=0;U=0;while(1){V=S+1|0;if(T){if((k[T>>2]|0)!=0?(W=k[T+4>>2]|0,(W|0)!=0):0){X=k[W>>2]|0;if(X)Ec[k[(k[X>>2]|0)+4>>2]&1023](X);Sqa(W)}Sqa(T)}Y=k[f>>2]|0;if(U){if((k[U>>2]|0)!=0?(W=k[U+4>>2]|0,(W|0)!=0):0){X=k[W>>2]|0;if(X)Ec[k[(k[X>>2]|0)+4>>2]&1023](X);Sqa(W)}Sqa(U)}Z=k[q>>2]|0;if(+p[m>>3]>0.0)laa(G,k[I>>2]|0,k[H>>2]|0);ooa(d,e,h,i,0,a);poa(j,k[J>>2]|0,k[n>>2]|0);Loa(k[h>>2]|0,k[e>>2]|0,k[j>>2]|0,0);W=k[e>>2]|0;if(W){if((k[W>>2]|0)!=0?(X=k[W+4>>2]|0,(X|0)!=0):0){_=k[X>>2]|0;if(_)Ec[k[(k[_>>2]|0)+4>>2]&1023](_);Sqa(X)}Sqa(W)}Poa(g,k[d>>2]|0,k[h>>2]|0,0,k[i>>2]|0,k[H>>2]|0);W=k[d>>2]|0;if(W){if((k[W>>2]|0)!=0?(X=k[W+4>>2]|0,(X|0)!=0):0){_=k[X>>2]|0;if(_)Ec[k[(k[_>>2]|0)+4>>2]&1023](_);Sqa(X)}Sqa(W)}W=k[h>>2]|0;if(W){if((k[W>>2]|0)!=0?(X=k[W+4>>2]|0,(X|0)!=0):0){_=k[X>>2]|0;if(_)Ec[k[(k[_>>2]|0)+4>>2]&1023](_);Sqa(X)}Sqa(W)}W=k[i>>2]|0;if(W){if((k[W>>2]|0)!=0?(X=k[W+4>>2]|0,(X|0)!=0):0){_=k[X>>2]|0;if(_)Ec[k[(k[_>>2]|0)+4>>2]&1023](_);Sqa(X)}Sqa(W)}Roa(f,k[g>>2]|0,k[j>>2]|0,k[J>>2]|0,k[H>>2]|0,0);W=k[g>>2]|0;if(W){if((k[W>>2]|0)!=0?(X=k[W+4>>2]|0,(X|0)!=0):0){_=k[X>>2]|0;if(_)Ec[k[(k[_>>2]|0)+4>>2]&1023](_);Sqa(X)}Sqa(W)}W=k[j>>2]|0;if(W){if((k[W>>2]|0)!=0?(X=k[W+4>>2]|0,(X|0)!=0):0){_=k[X>>2]|0;if(_)Ec[k[(k[_>>2]|0)+4>>2]&1023](_);Sqa(X)}Sqa(W)}xoa(a,k[f>>2]|0);laa(G,k[I>>2]|0,k[H>>2]|0);maa(G,k[I>>2]|0,k[H>>2]|0);TZ(q,a,674,628);W=Qqa(8)|0;B=0;va(485,W|0);X=B;B=0;if(X&1){aa=W;ba=62;break}if((k[Z>>2]|0)!=0?(X=Z+4|0,_=k[X>>2]|0,ca=Qqa(4)|0,da=k[_>>2]|0,ea=Hc[k[(k[da>>2]|0)+36>>2]&511](da)|0,k[ca>>2]=ea,da=k[_>>2]|0,Fc[k[(k[da>>2]|0)+60>>2]&1023](da,ea),k[W+4>>2]=ca,(k[Z>>2]|0)!=0):0){ea=k[k[X>>2]>>2]|0;Fc[k[(k[ea>>2]|0)+60>>2]&1023](ea,k[ca>>2]|0)}if((k[W>>2]|0)!=0?(ca=W+4|0,ea=k[k[ca>>2]>>2]|0,Xc[k[(k[ea>>2]|0)+48>>2]&63](ea,k[k[(k[q>>2]|0)+4>>2]>>2]|0,-1.0),(k[W>>2]|0)!=0):0){ea=k[k[ca>>2]>>2]|0;fa=+id[k[(k[ea>>2]|0)+64>>2]&63](ea,1);if((k[W>>2]|0)!=0?(ea=k[ca>>2]|0,(ea|0)!=0):0){ca=k[ea>>2]|0;if(ca)Ec[k[(k[ca>>2]|0)+4>>2]&1023](ca);Sqa(ea);ga=fa}else ga=fa}else ga=0.0;Sqa(W);if(!(k[Z>>2]|0))ha=0.0;else{W=k[k[Z+4>>2]>>2]|0;ha=+id[k[(k[W>>2]|0)+64>>2]&63](W,1)}fa=+$(+ga);p[t>>3]=fa;W=k[t+4>>2]|0;if(W>>>0>2146435072|(W|0)==2146435072&(k[t>>2]|0)>>>0>0){ba=76;break}fa=+$(+ha);p[t>>3]=fa;W=k[t+4>>2]|0;if(W>>>0>2146435072|(W|0)==2146435072&(k[t>>2]|0)>>>0>0){ba=76;break}ia=ga/ha;W=ia<+p[l>>3];ja=EY()|0;if(W){ba=100;break}if(ja){k[z>>2]=27524;k[K>>2]=27544;B=0;wa(508,M|0,L|0);W=B;B=0;if(W&1){ba=125;break}k[N>>2]=0;k[O>>2]=-1;k[z>>2]=27468;k[K>>2]=27488;B=0;va(448,L|0);W=B;B=0;if(W&1){ba=126;break}k[L>>2]=27560;k[P>>2]=0;k[P+4>>2]=0;k[P+8>>2]=0;k[P+12>>2]=0;k[R>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,L|0,c|0);W=B;B=0;if(W&1){ba=124;break}Yua(c);k[z+(k[(k[z>>2]|0)+-12>>2]|0)+12>>2]=50;W=z+(k[(k[z>>2]|0)+-12>>2]|0)+4|0;k[W>>2]=k[W>>2]&-177|32;B=0;W=Ia(40,z|0,148312,42)|0;ea=B;B=0;if(ea&1){ba=137;break}B=0;ea=Sa(1,W|0,+(ia*100.0))|0;W=B;B=0;if(W&1){ba=137;break}B=0;W=Ia(40,ea|0,148278,3)|0;ea=B;B=0;if(ea&1){ba=137;break}B=0;ea=Sa(1,W|0,+(+p[l>>3]*100.0))|0;W=B;B=0;if(W&1){ba=137;break}B=0;Ia(40,ea|0,148274,3)|0;ea=B;B=0;if(ea&1){ba=137;break}B=0;wa(510,A|0,L|0);ea=B;B=0;if(ea&1){ba=137;break}B=0;ya(425,A|0)|0;ea=B;B=0;if(ea&1){ba=138;break}Yua(A);k[z>>2]=27468;k[K>>2]=27488;k[L>>2]=27560;Yua(P);Ava(L);vva(K)}if((V|0)<(k[o>>2]|0)){S=V;T=Y;U=Z}else{ka=Y;la=Z;ma=Z;na=S;ba=141;break}}a:do if((ba|0)==62){U=Rb()|0;Sqa(aa);Qb(U|0)}else if((ba|0)==76){U=s+56|0;T=s+4|0;k[s>>2]=27524;k[U>>2]=27544;B=0;wa(508,s+56|0,T|0);R=B;B=0;if(R&1){R=Rb()|0;oa=Q;pa=R;vva(U);Qb(pa|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[U>>2]=27488;B=0;va(448,T|0);R=B;B=0;do if(R&1){O=Rb()|0;qa=Q;ra=O}else{k[T>>2]=27560;O=s+36|0;k[O>>2]=0;k[O+4>>2]=0;k[O+8>>2]=0;k[O+12>>2]=0;k[s+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,T|0,c|0);N=B;B=0;if(N&1){N=Rb()|0;M=Q;Yua(c);Yua(O);Ava(T);qa=M;ra=N;break}Yua(c);B=0;N=Ia(40,s|0,148282,29)|0;M=B;B=0;b:do if(!(M&1)?(B=0,Xa(239,N|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,u|0,147359,94);H=B;B=0;do if(!(H&1)){B=0;eb(502,v|0,147454,25);I=B;B=0;if(I&1){I=Rb()|0;j=Q;Yua(u);sa=j;ta=I;break}B=0;wa(510,w|0,T|0);I=B;B=0;if(I&1){I=Rb()|0;xa=Q;za=I;Aa=1}else{B=0;ua(163,a|0,u|0,v|0,80,w|0);I=B;B=0;if(I&1)Ba=1;else{B=0;eb(503,a|0,1240,229);B=0;Ba=0}I=Rb()|0;j=Q;Yua(w);xa=j;za=I;Aa=Ba}Yua(v);Yua(u);if(Aa){sa=xa;ta=za}else{Ca=xa;Da=za;break b}}else{I=Rb()|0;sa=Q;ta=I}while(0);zb(a|0);Ca=sa;Da=ta}else ba=91;while(0);if((ba|0)==91){N=Rb()|0;Ca=Q;Da=N}k[s>>2]=27468;k[U>>2]=27488;k[T>>2]=27560;Yua(O);Ava(T);vva(U);Ea=Ca;Fa=Da;Qb(Fa|0)}while(0);oa=qa;pa=ra;vva(U);Qb(pa|0)}else if((ba|0)==100)if(ja){T=x+56|0;R=x+4|0;k[x>>2]=27524;k[T>>2]=27544;B=0;wa(508,x+56|0,R|0);N=B;B=0;if(N&1){N=Rb()|0;Ga=Q;Ha=N;vva(T);Qb(Ha|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[T>>2]=27488;B=0;va(448,R|0);N=B;B=0;do if(N&1){M=Rb()|0;Ja=Q;Ka=M}else{k[R>>2]=27560;M=x+36|0;k[M>>2]=0;k[M+4>>2]=0;k[M+8>>2]=0;k[M+12>>2]=0;k[x+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,R|0,c|0);H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(c);Yua(M);Ava(R);Ja=I;Ka=H;break}Yua(c);k[x+(k[(k[x>>2]|0)+-12>>2]|0)+12>>2]=50;H=x+(k[(k[x>>2]|0)+-12>>2]|0)+4|0;k[H>>2]=k[H>>2]&-177|32;B=0;H=Ia(40,x|0,148312,42)|0;I=B;B=0;do if(((((!(I&1)?(B=0,j=Sa(1,H|0,+(ia*100.0))|0,g=B,B=0,!(g&1)):0)?(B=0,g=Ia(40,j|0,148270,3)|0,j=B,B=0,!(j&1)):0)?(B=0,j=Sa(1,g|0,+(+p[l>>3]*100.0))|0,g=B,B=0,!(g&1)):0)?(B=0,Ia(40,j|0,148274,3)|0,j=B,B=0,!(j&1)):0)?(B=0,wa(510,y|0,R|0),j=B,B=0,!(j&1)):0){B=0;ya(425,y|0)|0;j=B;B=0;if(j&1){j=Rb()|0;g=Q;Yua(y);La=g;Ma=j;break}else{Yua(y);k[x>>2]=27468;k[T>>2]=27488;k[R>>2]=27560;Yua(M);Ava(R);vva(T);Na=Y;Oa=Z;Pa=Z;Qa=S;ba=158;break a}}else ba=117;while(0);if((ba|0)==117){H=Rb()|0;La=Q;Ma=H}k[x>>2]=27468;k[T>>2]=27488;k[R>>2]=27560;Yua(M);Ava(R);vva(T);Ea=La;Fa=Ma;Qb(Fa|0)}while(0);Ga=Ja;Ha=Ka;vva(T);Qb(Ha|0)}else{Na=Y;Oa=Z;Pa=Z;Qa=S;ba=158}else if((ba|0)==124){R=Rb()|0;N=Q;Yua(c);Yua(P);Ava(L);Ra=N;Ta=R;ba=127}else if((ba|0)==125){R=Rb()|0;Ua=Q;Va=R;vva(K);Qb(Va|0)}else if((ba|0)==126){R=Rb()|0;Ra=Q;Ta=R;ba=127}else if((ba|0)==137){R=Rb()|0;Wa=Q;Ya=R;ba=139}else if((ba|0)==138){R=Rb()|0;N=Q;Yua(A);Wa=N;Ya=R;ba=139}else if((ba|0)==141){R=C+56|0;N=C+4|0;k[C>>2]=27524;k[R>>2]=27544;B=0;wa(508,C+56|0,N|0);U=B;B=0;if(U&1){U=Rb()|0;Za=Q;_a=U;vva(R);Qb(_a|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[R>>2]=27488;B=0;va(448,N|0);U=B;B=0;do if(U&1){H=Rb()|0;$a=Q;ab=H}else{k[N>>2]=27560;H=C+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[C+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,N|0,c|0);I=B;B=0;if(I&1){I=Rb()|0;O=Q;Yua(c);Yua(H);Ava(N);$a=O;ab=I;break}Yua(c);B=0;I=Ia(40,C|0,147682,43)|0;O=B;B=0;do if(((!(O&1)?(B=0,j=Xa(242,I|0,k[o>>2]|0)|0,g=B,B=0,!(g&1)):0)?(B=0,Ia(40,j|0,148995,11)|0,j=B,B=0,!(j&1)):0)?(B=0,wa(510,D|0,N|0),j=B,B=0,!(j&1)):0){B=0;ya(425,D|0)|0;j=B;B=0;if(j&1){j=Rb()|0;g=Q;Yua(D);bb=g;cb=j;break}else{Yua(D);k[C>>2]=27468;k[R>>2]=27488;k[N>>2]=27560;Yua(H);Ava(N);vva(R);Na=ka;Oa=la;Pa=ma;Qa=na;ba=158;break a}}else ba=155;while(0);if((ba|0)==155){I=Rb()|0;bb=Q;cb=I}k[C>>2]=27468;k[R>>2]=27488;k[N>>2]=27560;Yua(H);Ava(N);vva(R);Ea=bb;Fa=cb;Qb(Fa|0)}while(0);Za=$a;_a=ab;vva(R);Qb(_a|0)}while(0);if((ba|0)==127){Ua=Ra;Va=Ta;vva(K);Qb(Va|0)}else if((ba|0)==139){k[z>>2]=27468;k[K>>2]=27488;k[L>>2]=27560;Yua(P);Ava(L);vva(K);Ea=Wa;Fa=Ya;Qb(Fa|0)}else if((ba|0)==158){c:do if(EY()|0){Ya=E+56|0;Wa=E+4|0;k[E>>2]=27524;k[Ya>>2]=27544;B=0;wa(508,E+56|0,Wa|0);K=B;B=0;if(K&1){K=Rb()|0;db=Q;fb=K;vva(Ya);Qb(fb|0)}k[E+128>>2]=0;k[E+132>>2]=-1;k[E>>2]=27468;k[Ya>>2]=27488;B=0;va(448,Wa|0);K=B;B=0;do if(K&1){L=Rb()|0;gb=Q;hb=L}else{k[Wa>>2]=27560;L=E+36|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;k[E+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Wa|0,c|0);P=B;B=0;if(P&1){P=Rb()|0;z=Q;Yua(c);Yua(L);Ava(Wa);gb=z;hb=P;break}Yua(c);B=0;P=Ia(40,E|0,147767,32)|0;z=B;B=0;do if(((!(z&1)?(B=0,Va=Xa(242,P|0,Qa|0)|0,Ta=B,B=0,!(Ta&1)):0)?(B=0,Ia(40,Va|0,149177,1)|0,Va=B,B=0,!(Va&1)):0)?(B=0,wa(510,F|0,Wa|0),Va=B,B=0,!(Va&1)):0){B=0;ya(425,F|0)|0;Va=B;B=0;if(Va&1){Va=Rb()|0;Ta=Q;Yua(F);ib=Ta;jb=Va;break}else{Yua(F);k[E>>2]=27468;k[Ya>>2]=27488;k[Wa>>2]=27560;Yua(L);Ava(Wa);vva(Ya);break c}}else ba=173;while(0);if((ba|0)==173){P=Rb()|0;ib=Q;jb=P}k[E>>2]=27468;k[Ya>>2]=27488;k[Wa>>2]=27560;Yua(L);Ava(Wa);vva(Ya);Ea=ib;Fa=jb;Qb(Fa|0)}while(0);db=gb;fb=hb;vva(Ya);Qb(fb|0)}while(0);fb=k[f>>2]|0;if(fb){if((k[fb>>2]|0)!=0?(f=k[fb+4>>2]|0,(f|0)!=0):0){hb=k[f>>2]|0;if(hb)Ec[k[(k[hb>>2]|0)+4>>2]&1023](hb);Sqa(f)}Sqa(fb)}if(Na){if((k[Na>>2]|0)!=0?(fb=k[Na+4>>2]|0,(fb|0)!=0):0){f=k[fb>>2]|0;if(f)Ec[k[(k[f>>2]|0)+4>>2]&1023](f);Sqa(fb)}Sqa(Na)}Na=k[q>>2]|0;if(Na){if((k[Na>>2]|0)!=0?(q=k[Na+4>>2]|0,(q|0)!=0):0){fb=k[q>>2]|0;if(fb)Ec[k[(k[fb>>2]|0)+4>>2]&1023](fb);Sqa(q)}Sqa(Na)}if(!Oa){kb=k[G>>2]|0;lb=kb+4|0;mb=k[lb>>2]|0;Ec[mb&1023](G);r=b;return}if((k[Pa>>2]|0)!=0?(Pa=k[Oa+4>>2]|0,(Pa|0)!=0):0){Na=k[Pa>>2]|0;if(Na)Ec[k[(k[Na>>2]|0)+4>>2]&1023](Na);Sqa(Pa)}Sqa(Oa);kb=k[G>>2]|0;lb=kb+4|0;mb=k[lb>>2]|0;Ec[mb&1023](G);r=b;return}}function Voa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0;b=r;r=r+224|0;c=b+208|0;d=b+204|0;e=b+200|0;f=b+196|0;g=b+192|0;h=b+188|0;i=b+184|0;j=b+180|0;l=b+176|0;m=b+40|0;n=b+24|0;o=b+12|0;p=b;k[d>>2]=0;k[e>>2]=0;k[f>>2]=0;k[g>>2]=0;k[h>>2]=0;k[i>>2]=0;k[j>>2]=0;q=a+44|0;cO(k[q>>2]|0,l,478);Eh(a);ooa(d,e,h,i,0,a);s=a+24|0;poa(j,k[s>>2]|0,k[l>>2]|0);Loa(k[h>>2]|0,k[e>>2]|0,k[j>>2]|0,0);l=k[e>>2]|0;if(l){if((k[l>>2]|0)!=0?(e=k[l+4>>2]|0,(e|0)!=0):0){t=k[e>>2]|0;if(t)Ec[k[(k[t>>2]|0)+4>>2]&1023](t);Sqa(e)}Sqa(l)}Poa(g,k[d>>2]|0,k[h>>2]|0,0,k[i>>2]|0,k[q>>2]|0);l=k[g>>2]|0;e=Qqa(8)|0;B=0;va(485,e|0);t=B;B=0;if(t&1){t=Rb()|0;Sqa(e);Qb(t|0)}if(k[l>>2]|0){t=k[l+4>>2]|0;l=Qqa(4)|0;u=k[t>>2]|0;v=Hc[k[(k[u>>2]|0)+36>>2]&511](u)|0;k[l>>2]=v;u=k[t>>2]|0;Fc[k[(k[u>>2]|0)+60>>2]&1023](u,v);k[e+4>>2]=l}l=k[d>>2]|0;if(k[l>>2]|0){v=k[k[l+4>>2]>>2]|0;nd[k[(k[v>>2]|0)+28>>2]&1023](v,k[k[(k[g>>2]|0)+4>>2]>>2]|0,k[k[e+4>>2]>>2]|0)}v=Qqa(8)|0;B=0;va(485,v|0);l=B;B=0;if(l&1){l=Rb()|0;Sqa(v);Qb(l|0)}if((k[e>>2]|0)!=0?(l=e+4|0,u=k[l>>2]|0,t=Qqa(4)|0,w=k[u>>2]|0,x=Hc[k[(k[w>>2]|0)+36>>2]&511](w)|0,k[t>>2]=x,w=k[u>>2]|0,Fc[k[(k[w>>2]|0)+60>>2]&1023](w,x),k[v+4>>2]=t,(k[e>>2]|0)!=0):0){x=k[k[l>>2]>>2]|0;Fc[k[(k[x>>2]|0)+60>>2]&1023](x,k[t>>2]|0)}if((k[v>>2]|0)!=0?(t=v+4|0,x=k[k[t>>2]>>2]|0,Xc[k[(k[x>>2]|0)+48>>2]&63](x,k[k[(k[h>>2]|0)+4>>2]>>2]|0,-1.0),(k[v>>2]|0)!=0):0){x=k[k[t>>2]>>2]|0;y=+id[k[(k[x>>2]|0)+64>>2]&63](x,1)}else y=0.0;x=k[h>>2]|0;if(!(k[x>>2]|0))z=0.0;else{t=k[k[x+4>>2]>>2]|0;z=+id[k[(k[t>>2]|0)+64>>2]&63](t,1)}A=y/z;if(A>1.0e-06){t=m+56|0;x=m+4|0;k[m>>2]=27524;k[t>>2]=27544;B=0;wa(508,m+56|0,x|0);l=B;B=0;if(l&1){l=Rb()|0;C=Q;D=l;vva(t);Qb(D|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[t>>2]=27488;B=0;va(448,x|0);l=B;B=0;do if(l&1){w=Rb()|0;E=Q;F=w}else{k[x>>2]=27560;w=m+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,x|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;G=Q;Yua(c);Yua(w);Ava(x);E=G;F=u;break}Yua(c);B=0;u=Ia(40,m|0,147480,48)|0;G=B;B=0;if(((!(G&1)?(B=0,G=Sa(1,u|0,+A)|0,u=B,B=0,!(u&1)):0)?(B=0,u=Ia(40,G|0,149177,1)|0,G=B,B=0,!(G&1)):0)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,n|0,147529,92);G=B;B=0;do if(G&1){H=Rb()|0;I=Q;J=H}else{B=0;eb(502,o|0,147622,23);H=B;B=0;if(H&1){H=Rb()|0;K=Q;Yua(n);I=K;J=H;break}B=0;wa(510,p|0,x|0);H=B;B=0;if(H&1){H=Rb()|0;L=Q;M=H;N=1}else{B=0;ua(163,u|0,n|0,o|0,49,p|0);H=B;B=0;if(H&1)O=1;else{B=0;eb(503,u|0,1240,229);B=0;O=0}H=Rb()|0;K=Q;Yua(p);L=K;M=H;N=O}Yua(o);Yua(n);if(N){I=L;J=M;break}else{P=L;R=M}k[m>>2]=27468;k[t>>2]=27488;k[x>>2]=27560;Yua(w);Ava(x);vva(t);Qb(R|0)}while(0);zb(u|0);P=I;R=J;k[m>>2]=27468;k[t>>2]=27488;k[x>>2]=27560;Yua(w);Ava(x);vva(t);Qb(R|0)}G=Rb()|0;P=Q;R=G;k[m>>2]=27468;k[t>>2]=27488;k[x>>2]=27560;Yua(w);Ava(x);vva(t);Qb(R|0)}while(0);C=E;D=F;vva(t);Qb(D|0)}if((k[e>>2]|0)!=0?(D=k[e+4>>2]|0,(D|0)!=0):0){t=k[D>>2]|0;if(t)Ec[k[(k[t>>2]|0)+4>>2]&1023](t);Sqa(D)}Sqa(e);if((k[v>>2]|0)!=0?(e=k[v+4>>2]|0,(e|0)!=0):0){D=k[e>>2]|0;if(D)Ec[k[(k[D>>2]|0)+4>>2]&1023](D);Sqa(e)}Sqa(v);v=k[d>>2]|0;if(v){if((k[v>>2]|0)!=0?(d=k[v+4>>2]|0,(d|0)!=0):0){e=k[d>>2]|0;if(e)Ec[k[(k[e>>2]|0)+4>>2]&1023](e);Sqa(d)}Sqa(v)}v=k[h>>2]|0;if(v){if((k[v>>2]|0)!=0?(h=k[v+4>>2]|0,(h|0)!=0):0){d=k[h>>2]|0;if(d)Ec[k[(k[d>>2]|0)+4>>2]&1023](d);Sqa(h)}Sqa(v)}v=k[i>>2]|0;if(v){if((k[v>>2]|0)!=0?(i=k[v+4>>2]|0,(i|0)!=0):0){h=k[i>>2]|0;if(h)Ec[k[(k[h>>2]|0)+4>>2]&1023](h);Sqa(i)}Sqa(v)}Roa(f,k[g>>2]|0,k[j>>2]|0,k[s>>2]|0,k[q>>2]|0,0);q=k[g>>2]|0;if(q){if((k[q>>2]|0)!=0?(g=k[q+4>>2]|0,(g|0)!=0):0){s=k[g>>2]|0;if(s)Ec[k[(k[s>>2]|0)+4>>2]&1023](s);Sqa(g)}Sqa(q)}q=k[j>>2]|0;if(q){if((k[q>>2]|0)!=0?(j=k[q+4>>2]|0,(j|0)!=0):0){g=k[j>>2]|0;if(g)Ec[k[(k[g>>2]|0)+4>>2]&1023](g);Sqa(j)}Sqa(q)}xoa(a,k[f>>2]|0);a=k[f>>2]|0;if(!a){r=b;return}if((k[a>>2]|0)!=0?(f=k[a+4>>2]|0,(f|0)!=0):0){q=k[f>>2]|0;if(q)Ec[k[(k[q>>2]|0)+4>>2]&1023](q);Sqa(f)}Sqa(a);r=b;return}function Woa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0.0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0;c=r;r=r+544|0;d=c+524|0;e=c+520|0;f=c+516|0;g=c+512|0;h=c+508|0;j=c+504|0;l=c+500|0;m=c+496|0;n=c+536|0;o=c+492|0;q=c+488|0;s=c+484|0;t=c+480|0;u=c+476|0;v=c+16|0;w=c+8|0;x=c;y=c+328|0;z=c+464|0;A=c+176|0;C=c+312|0;D=c+40|0;E=c+24|0;k[e>>2]=0;k[f>>2]=0;k[g>>2]=0;k[h>>2]=0;k[j>>2]=0;k[l>>2]=0;k[m>>2]=0;F=a+44|0;cO(k[F>>2]|0,s,80);cO(k[F>>2]|0,t,72);dO(k[F>>2]|0,v,78);dO(k[F>>2]|0,w,75);dO(k[F>>2]|0,x,69);cO(k[F>>2]|0,u,478);Eh(a);if(b)G=hh(k[a+36>>2]|0)|0;else G=0;i[n>>0]=0;Aoa(g,a);H=a+24|0;Koa(h,k[g>>2]|0,k[H>>2]|0,k[F>>2]|0);uoa(a,(i[n>>0]|0)!=0,645);xoa(a,k[g>>2]|0);I=y+56|0;J=y+4|0;K=y+56|0;L=y+128|0;M=y+132|0;N=y+36|0;O=y+52|0;P=1;R=0;while(1){if(R){if((k[R>>2]|0)!=0?(S=k[R+4>>2]|0,(S|0)!=0):0){T=k[S>>2]|0;if(T)Ec[k[(k[T>>2]|0)+4>>2]&1023](T);Sqa(S)}Sqa(R)}S=k[h>>2]|0;T=k[g>>2]|0;if(T){if((k[T>>2]|0)!=0?(U=k[T+4>>2]|0,(U|0)!=0):0){V=k[U>>2]|0;if(V)Ec[k[(k[V>>2]|0)+4>>2]&1023](V);Sqa(U)}Sqa(T)}ooa(e,f,j,l,0,a);poa(m,k[H>>2]|0,k[u>>2]|0);Loa(k[j>>2]|0,k[f>>2]|0,k[m>>2]|0,0);T=k[f>>2]|0;if(T){if((k[T>>2]|0)!=0?(U=k[T+4>>2]|0,(U|0)!=0):0){V=k[U>>2]|0;if(V)Ec[k[(k[V>>2]|0)+4>>2]&1023](V);Sqa(U)}Sqa(T)}Poa(h,k[e>>2]|0,k[j>>2]|0,S,k[l>>2]|0,k[F>>2]|0);Roa(g,k[h>>2]|0,k[m>>2]|0,k[H>>2]|0,k[F>>2]|0,0);T=k[m>>2]|0;if(T){if((k[T>>2]|0)!=0?(U=k[T+4>>2]|0,(U|0)!=0):0){V=k[U>>2]|0;if(V)Ec[k[(k[V>>2]|0)+4>>2]&1023](V);Sqa(U)}Sqa(T)}Zoa(n,k[e>>2]|0,k[j>>2]|0,k[h>>2]|0,S,+p[v>>3],+p[w>>3],+p[x>>3]);T=k[e>>2]|0;if(T){if((k[T>>2]|0)!=0?(U=k[T+4>>2]|0,(U|0)!=0):0){V=k[U>>2]|0;if(V)Ec[k[(k[V>>2]|0)+4>>2]&1023](V);Sqa(U)}Sqa(T)}T=k[j>>2]|0;if(T){if((k[T>>2]|0)!=0?(U=k[T+4>>2]|0,(U|0)!=0):0){V=k[U>>2]|0;if(V)Ec[k[(k[V>>2]|0)+4>>2]&1023](V);Sqa(U)}Sqa(T)}T=k[l>>2]|0;if(T){if((k[T>>2]|0)!=0?(U=k[T+4>>2]|0,(U|0)!=0):0){V=k[U>>2]|0;if(V)Ec[k[(k[V>>2]|0)+4>>2]&1023](V);Sqa(U)}Sqa(T)}uoa(a,(i[n>>0]|0)!=0,645);xoa(a,k[g>>2]|0);Moa(o,q,a);if(EY()|0){k[y>>2]=27524;k[I>>2]=27544;B=0;wa(508,K|0,J|0);T=B;B=0;if(T&1){W=58;break}k[L>>2]=0;k[M>>2]=-1;k[y>>2]=27468;k[I>>2]=27488;B=0;va(448,J|0);T=B;B=0;if(T&1){W=59;break}k[J>>2]=27560;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;k[O>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,J|0,d|0);T=B;B=0;if(T&1){W=57;break}Yua(d);B=0;T=Ia(40,y|0,147646,35)|0;U=B;B=0;if(U&1){W=68;break}B=0;U=Xa(242,T|0,k[q>>2]|0)|0;T=B;B=0;if(T&1){W=68;break}B=0;Ia(40,U|0,149177,1)|0;U=B;B=0;if(U&1){W=68;break}B=0;wa(510,z|0,J|0);U=B;B=0;if(U&1){W=68;break}B=0;ya(425,z|0)|0;U=B;B=0;if(U&1){W=69;break}Yua(z);k[y>>2]=27468;k[I>>2]=27488;k[J>>2]=27560;Yua(N);Ava(J);vva(I)}U=(i[n>>0]|0)==0;if((k[o>>2]|0)!=0|U){T=P+1|0;if(U)X=T;else{Y=T;Z=S;_=P;W=76;break}}else{if((k[q>>2]|0)<=(k[s>>2]|0)){$=S;aa=P;W=73;break}i[n>>0]=0;X=P+1|0}if((X|0)<(k[t>>2]|0)){P=X;R=S}else{ba=S;ca=P;W=81;break}}a:do if((W|0)==57){P=Rb()|0;R=Q;Yua(d);Yua(N);Ava(J);da=R;ea=P;W=60}else if((W|0)==58){P=Rb()|0;fa=Q;ga=P;vva(I);Qb(ga|0)}else if((W|0)==59){P=Rb()|0;da=Q;ea=P;W=60}else if((W|0)==68){P=Rb()|0;ha=Q;ia=P;W=70}else if((W|0)==69){P=Rb()|0;R=Q;Yua(z);ha=R;ia=P;W=70}else if((W|0)==73){i[n>>0]=1;Y=aa+1|0;Z=$;_=aa;W=76}else if((W|0)==81){P=A+56|0;R=A+4|0;k[A>>2]=27524;k[P>>2]=27544;B=0;wa(508,A+56|0,R|0);X=B;B=0;if(X&1){X=Rb()|0;ja=Q;ka=X;vva(P);Qb(ka|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[P>>2]=27488;B=0;va(448,R|0);X=B;B=0;do if(X&1){s=Rb()|0;la=Q;ma=s}else{k[R>>2]=27560;s=A+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[A+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,R|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;o=Q;Yua(d);Yua(s);Ava(R);la=o;ma=q;break}Yua(d);B=0;q=Ia(40,A|0,147682,43)|0;o=B;B=0;do if(((!(o&1)?(B=0,O=Xa(242,q|0,k[t>>2]|0)|0,M=B,B=0,!(M&1)):0)?(B=0,Ia(40,O|0,148995,11)|0,O=B,B=0,!(O&1)):0)?(B=0,wa(510,C|0,R|0),O=B,B=0,!(O&1)):0){B=0;ya(425,C|0)|0;O=B;B=0;if(O&1){O=Rb()|0;M=Q;Yua(C);na=M;oa=O;break}Yua(C);k[A>>2]=27468;k[P>>2]=27488;k[R>>2]=27560;Yua(s);Ava(R);vva(P);i[n>>0]=1;O=k[a+48>>2]|0;M=Qqa(48)|0;B=0;L=ya(428,O|0)|0;K=B;B=0;if(!(K&1)?(pa=+(k[t>>2]|0),k[M>>2]=27904,k[M+4>>2]=L+1,p[M+16>>3]=pa,k[M+32>>2]=-9999,p[M+40>>3]=-9999.0,k[M+24>>2]=1,k[M+28>>2]=1,B=0,wa(512,M+8|0,70),L=B,B=0,!(L&1)):0){Oo(O,M)|0;uoa(a,(i[n>>0]|0)!=0,645);xoa(a,k[g>>2]|0);qa=ba;ra=ca;break a}O=Rb()|0;L=Q;Sqa(M);sa=L;ta=O;Qb(ta|0)}else W=97;while(0);if((W|0)==97){q=Rb()|0;na=Q;oa=q}k[A>>2]=27468;k[P>>2]=27488;k[R>>2]=27560;Yua(s);Ava(R);vva(P);sa=na;ta=oa;Qb(ta|0)}while(0);ja=la;ka=ma;vva(P);Qb(ka|0)}while(0);do if((W|0)==60){fa=da;ga=ea;vva(I);Qb(ga|0)}else if((W|0)==70){k[y>>2]=27468;k[I>>2]=27488;k[J>>2]=27560;Yua(N);Ava(J);vva(I);sa=ha;ta=ia;Qb(ta|0)}else if((W|0)==76){ka=k[a+48>>2]|0;ma=Qqa(48)|0;B=0;la=ya(428,ka|0)|0;ja=B;B=0;if(!(ja&1)?(k[ma>>2]=27904,k[ma+4>>2]=la+1,p[ma+16>>3]=+(Y|0),k[ma+32>>2]=-9999,p[ma+40>>3]=-9999.0,k[ma+24>>2]=1,k[ma+28>>2]=1,B=0,wa(512,ma+8|0,70),la=B,B=0,!(la&1)):0){Oo(ka,ma)|0;qa=Z;ra=_;break}ka=Rb()|0;la=Q;Sqa(ma);sa=la;ta=ka;Qb(ta|0)}while(0);b:do if(EY()|0){_=D+56|0;Z=D+4|0;k[D>>2]=27524;k[_>>2]=27544;B=0;wa(508,D+56|0,Z|0);Y=B;B=0;if(Y&1){Y=Rb()|0;ua=Q;xa=Y;vva(_);Qb(xa|0)}k[D+128>>2]=0;k[D+132>>2]=-1;k[D>>2]=27468;k[_>>2]=27488;B=0;va(448,Z|0);Y=B;B=0;do if(Y&1){ia=Rb()|0;za=Q;Aa=ia}else{k[Z>>2]=27560;ia=D+36|0;k[ia>>2]=0;k[ia+4>>2]=0;k[ia+8>>2]=0;k[ia+12>>2]=0;k[D+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Z|0,d|0);ha=B;B=0;if(ha&1){ha=Rb()|0;I=Q;Yua(d);Yua(ia);Ava(Z);za=I;Aa=ha;break}Yua(d);B=0;ha=Ia(40,D|0,147767,32)|0;I=B;B=0;do if(((!(I&1)?(B=0,J=Xa(242,ha|0,ra|0)|0,N=B,B=0,!(N&1)):0)?(B=0,Ia(40,J|0,149177,1)|0,J=B,B=0,!(J&1)):0)?(B=0,wa(510,E|0,Z|0),J=B,B=0,!(J&1)):0){B=0;ya(425,E|0)|0;J=B;B=0;if(J&1){J=Rb()|0;N=Q;Yua(E);Ba=N;Ca=J;break}else{Yua(E);k[D>>2]=27468;k[_>>2]=27488;k[Z>>2]=27560;Yua(ia);Ava(Z);vva(_);break b}}else W=116;while(0);if((W|0)==116){ha=Rb()|0;Ba=Q;Ca=ha}k[D>>2]=27468;k[_>>2]=27488;k[Z>>2]=27560;Yua(ia);Ava(Z);vva(_);sa=Ba;ta=Ca;Qb(ta|0)}while(0);ua=za;xa=Aa;vva(_);Qb(xa|0)}while(0);if(b){b=a+36|0;a=k[b>>2]|0;if(a){$K(a);Sqa(a)}k[b>>2]=G}G=k[h>>2]|0;if(G){if((k[G>>2]|0)!=0?(h=k[G+4>>2]|0,(h|0)!=0):0){b=k[h>>2]|0;if(b)Ec[k[(k[b>>2]|0)+4>>2]&1023](b);Sqa(h)}Sqa(G)}G=k[g>>2]|0;if(G){if((k[G>>2]|0)!=0?(g=k[G+4>>2]|0,(g|0)!=0):0){h=k[g>>2]|0;if(h)Ec[k[(k[h>>2]|0)+4>>2]&1023](h);Sqa(g)}Sqa(G)}if(!qa){r=c;return}if((k[qa>>2]|0)!=0?(G=k[qa+4>>2]|0,(G|0)!=0):0){g=k[G>>2]|0;if(g)Ec[k[(k[g>>2]|0)+4>>2]&1023](g);Sqa(G)}Sqa(qa);r=c;return}function Xoa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;b=r;r=r+400|0;c=b+380|0;d=b+392|0;e=b+376|0;f=b+24|0;g=b+372|0;h=b+368|0;j=b+364|0;l=b+360|0;m=b+356|0;n=b+352|0;o=b+348|0;q=b+344|0;s=b+340|0;t=b+336|0;u=b+332|0;v=b+16|0;w=b+8|0;x=b;y=b+184|0;z=b+320|0;A=b+48|0;C=b+32|0;k[g>>2]=0;k[h>>2]=0;k[j>>2]=0;k[l>>2]=0;k[m>>2]=0;k[n>>2]=0;k[o>>2]=0;k[q>>2]=0;k[s>>2]=0;D=a+44|0;cO(k[D>>2]|0,t,72);cO(k[D>>2]|0,u,478);cO(k[D>>2]|0,e,71);dO(k[D>>2]|0,v,78);dO(k[D>>2]|0,w,75);dO(k[D>>2]|0,x,69);Eh(a);i[d>>0]=0;Aoa(l,a);E=a+24|0;Koa(m,k[l>>2]|0,k[E>>2]|0,k[D>>2]|0);uoa(a,0,645);xoa(a,k[l>>2]|0);F=1;G=0;H=0;while(1){if(H){if((k[H>>2]|0)!=0?(I=k[H+4>>2]|0,(I|0)!=0):0){J=k[I>>2]|0;if(J)Ec[k[(k[J>>2]|0)+4>>2]&1023](J);Sqa(I)}Sqa(H)}I=k[l>>2]|0;if(G){if((k[G>>2]|0)!=0?(J=k[G+4>>2]|0,(J|0)!=0):0){K=k[J>>2]|0;if(K)Ec[k[(k[K>>2]|0)+4>>2]&1023](K);Sqa(J)}Sqa(G)}J=k[m>>2]|0;if((F|0)==1|(k[e>>2]|0)==2){ooa(g,h,o,q,0,a);poa(s,k[E>>2]|0,k[u>>2]|0);Loa(k[o>>2]|0,k[h>>2]|0,k[s>>2]|0,0);K=k[h>>2]|0;if(K){if((k[K>>2]|0)!=0?(L=k[K+4>>2]|0,(L|0)!=0):0){M=k[L>>2]|0;if(M)Ec[k[(k[M>>2]|0)+4>>2]&1023](M);Sqa(L)}Sqa(K)}Poa(m,k[g>>2]|0,k[o>>2]|0,J,k[q>>2]|0,k[D>>2]|0);K=k[q>>2]|0;if(K){if((k[K>>2]|0)!=0?(L=k[K+4>>2]|0,(L|0)!=0):0){M=k[L>>2]|0;if(M)Ec[k[(k[M>>2]|0)+4>>2]&1023](M);Sqa(L)}Sqa(K)}K=k[g>>2]|0;if(K){if((k[K>>2]|0)!=0?(L=k[K+4>>2]|0,(L|0)!=0):0){M=k[L>>2]|0;if(M)Ec[k[(k[M>>2]|0)+4>>2]&1023](M);Sqa(L)}Sqa(K)}K=k[o>>2]|0;if(K){if((k[K>>2]|0)!=0?(L=k[K+4>>2]|0,(L|0)!=0):0){M=k[L>>2]|0;if(M)Ec[k[(k[M>>2]|0)+4>>2]&1023](M);Sqa(L)}Sqa(K)}Roa(l,k[m>>2]|0,k[s>>2]|0,k[E>>2]|0,k[D>>2]|0,0);K=k[s>>2]|0;if(K){if((k[K>>2]|0)!=0?(L=k[K+4>>2]|0,(L|0)!=0):0){M=k[L>>2]|0;if(M)Ec[k[(k[M>>2]|0)+4>>2]&1023](M);Sqa(L)}Sqa(K)}xoa(a,k[l>>2]|0);if(I){if((k[I>>2]|0)!=0?(K=k[I+4>>2]|0,(K|0)!=0):0){L=k[K>>2]|0;if(L)Ec[k[(k[L>>2]|0)+4>>2]&1023](L);Sqa(K)}Sqa(I)}K=k[l>>2]|0;if(J){if((k[J>>2]|0)!=0?(L=k[J+4>>2]|0,(L|0)!=0):0){M=k[L>>2]|0;if(M)Ec[k[(k[M>>2]|0)+4>>2]&1023](M);Sqa(L)}Sqa(J)}N=k[m>>2]|0;O=K}else{N=J;O=I}I=Qqa(8)|0;B=0;va(485,I|0);J=B;B=0;if(J&1){P=I;R=70;break}if(k[N>>2]|0){J=k[N+4>>2]|0;K=Qqa(4)|0;L=k[J>>2]|0;M=Hc[k[(k[L>>2]|0)+36>>2]&511](L)|0;k[K>>2]=M;L=k[J>>2]|0;Fc[k[(k[L>>2]|0)+60>>2]&1023](L,M);k[I+4>>2]=K;K=k[N>>2]|0;k[m>>2]=I;if(K){K=k[k[N+4>>2]>>2]|0;Fc[k[(k[K>>2]|0)+60>>2]&1023](K,k[k[I+4>>2]>>2]|0)}}else k[m>>2]=I;ooa(g,h,o,q,f,a);I=k[q>>2]|0;if(I){if((k[I>>2]|0)!=0?(K=k[I+4>>2]|0,(K|0)!=0):0){M=k[K>>2]|0;if(M)Ec[k[(k[M>>2]|0)+4>>2]&1023](M);Sqa(K)}Sqa(I)}poa(s,k[E>>2]|0,k[u>>2]|0);Loa(k[o>>2]|0,k[h>>2]|0,k[s>>2]|0,0);I=k[h>>2]|0;if(I){if((k[I>>2]|0)!=0?(K=k[I+4>>2]|0,(K|0)!=0):0){M=k[K>>2]|0;if(M)Ec[k[(k[M>>2]|0)+4>>2]&1023](M);Sqa(K)}Sqa(I)}I=k[o>>2]|0;K=Qqa(8)|0;B=0;va(485,K|0);M=B;B=0;if(M&1){S=K;R=89;break}if(k[I>>2]|0){M=k[I+4>>2]|0;I=Qqa(4)|0;L=k[M>>2]|0;J=Hc[k[(k[L>>2]|0)+36>>2]&511](L)|0;k[I>>2]=J;L=k[M>>2]|0;Fc[k[(k[L>>2]|0)+60>>2]&1023](L,J);k[K+4>>2]=I}I=k[g>>2]|0;if(k[I>>2]|0){J=k[k[I+4>>2]>>2]|0;nd[k[(k[J>>2]|0)+28>>2]&1023](J,k[k[(k[m>>2]|0)+4>>2]>>2]|0,k[k[K+4>>2]>>2]|0)}if((k[K>>2]|0)!=0?(J=K+4|0,I=k[k[J>>2]>>2]|0,Cc[k[(k[I>>2]|0)+68>>2]&63](I,-1.0),(k[K>>2]|0)!=0):0){I=k[k[J>>2]>>2]|0;Xc[k[(k[I>>2]|0)+44>>2]&63](I,k[k[(k[o>>2]|0)+4>>2]>>2]|0,1.0)}qqa(j,a,+p[f>>3]);Poa(n,k[j>>2]|0,K,0,0,k[D>>2]|0);I=k[j>>2]|0;if(I){if((k[I>>2]|0)!=0?(J=k[I+4>>2]|0,(J|0)!=0):0){L=k[J>>2]|0;if(L)Ec[k[(k[L>>2]|0)+4>>2]&1023](L);Sqa(J)}Sqa(I)}if((k[K>>2]|0)!=0?(I=k[K+4>>2]|0,(I|0)!=0):0){J=k[I>>2]|0;if(J)Ec[k[(k[J>>2]|0)+4>>2]&1023](J);Sqa(I)}Sqa(K);K=k[m>>2]|0;I=k[n>>2]|0;if(!(k[K>>2]|0))T=I;else{J=k[k[K+4>>2]>>2]|0;Xc[k[(k[J>>2]|0)+44>>2]&63](J,k[k[I+4>>2]>>2]|0,1.0);T=k[n>>2]|0}if(T){if((k[T>>2]|0)!=0?(I=k[T+4>>2]|0,(I|0)!=0):0){J=k[I>>2]|0;if(J)Ec[k[(k[J>>2]|0)+4>>2]&1023](J);Sqa(I)}Sqa(T)}Roa(l,k[m>>2]|0,k[s>>2]|0,k[E>>2]|0,k[D>>2]|0,0);I=k[s>>2]|0;if(I){do if(k[I>>2]|0){J=k[I+4>>2]|0;if(!J)break;K=k[J>>2]|0;if(K)Ec[k[(k[K>>2]|0)+4>>2]&1023](K);Sqa(J)}while(0);Sqa(I)}xoa(a,k[l>>2]|0);Zoa(d,k[g>>2]|0,k[o>>2]|0,k[m>>2]|0,N,+p[v>>3],+p[w>>3],+p[x>>3]);J=k[g>>2]|0;if(J){do if(k[J>>2]|0){K=k[J+4>>2]|0;if(!K)break;L=k[K>>2]|0;if(L)Ec[k[(k[L>>2]|0)+4>>2]&1023](L);Sqa(K)}while(0);Sqa(J)}I=k[o>>2]|0;if(I){do if(k[I>>2]|0){K=k[I+4>>2]|0;if(!K)break;L=k[K>>2]|0;if(L)Ec[k[(k[L>>2]|0)+4>>2]&1023](L);Sqa(K)}while(0);Sqa(I)}if(i[d>>0]|0){U=N;V=F;W=N;X=O;break}if((F|0)>=(k[t>>2]|0)){Y=N;Z=F;_=N;$=O;R=140;break}F=F+1|0;G=N;H=O}a:do if((R|0)==70){O=Rb()|0;Sqa(P);Qb(O|0)}else if((R|0)==89){O=Rb()|0;Sqa(S);Qb(O|0)}else if((R|0)==140){O=y+56|0;H=y+4|0;k[y>>2]=27524;k[O>>2]=27544;B=0;wa(508,y+56|0,H|0);N=B;B=0;if(N&1){N=Rb()|0;aa=Q;ba=N;vva(O);Qb(ba|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[O>>2]=27488;B=0;va(448,H|0);N=B;B=0;do if(N&1){G=Rb()|0;ca=Q;da=G}else{k[H>>2]=27560;G=y+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[y+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,H|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;d=Q;Yua(c);Yua(G);Ava(H);ca=d;da=F;break}Yua(c);B=0;F=Ia(40,y|0,147726,40)|0;d=B;B=0;do if(((!(d&1)?(B=0,o=Xa(242,F|0,k[t>>2]|0)|0,g=B,B=0,!(g&1)):0)?(B=0,Ia(40,o|0,148995,11)|0,o=B,B=0,!(o&1)):0)?(B=0,wa(510,z|0,H|0),o=B,B=0,!(o&1)):0){B=0;ya(425,z|0)|0;o=B;B=0;if(o&1){o=Rb()|0;g=Q;Yua(z);ea=g;fa=o;break}else{Yua(z);k[y>>2]=27468;k[O>>2]=27488;k[H>>2]=27560;Yua(G);Ava(H);vva(O);U=Y;V=Z;W=_;X=$;break a}}else R=154;while(0);if((R|0)==154){F=Rb()|0;ea=Q;fa=F}k[y>>2]=27468;k[O>>2]=27488;k[H>>2]=27560;Yua(G);Ava(H);vva(O);ga=ea;ha=fa;Qb(ha|0)}while(0);aa=ca;ba=da;vva(O);Qb(ba|0)}while(0);b:do if(EY()|0){ba=A+56|0;da=A+4|0;k[A>>2]=27524;k[ba>>2]=27544;B=0;wa(508,A+56|0,da|0);ca=B;B=0;if(ca&1){ca=Rb()|0;ia=Q;ja=ca;vva(ba);Qb(ja|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[ba>>2]=27488;B=0;va(448,da|0);ca=B;B=0;do if(ca&1){aa=Rb()|0;ka=Q;la=aa}else{k[da>>2]=27560;aa=A+36|0;k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;k[aa+12>>2]=0;k[A+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,da|0,c|0);fa=B;B=0;if(fa&1){fa=Rb()|0;ea=Q;Yua(c);Yua(aa);Ava(da);ka=ea;la=fa;break}Yua(c);B=0;fa=Ia(40,A|0,147767,32)|0;ea=B;B=0;do if(((!(ea&1)?(B=0,y=Xa(242,fa|0,V+-1|0)|0,$=B,B=0,!($&1)):0)?(B=0,Ia(40,y|0,149177,1)|0,y=B,B=0,!(y&1)):0)?(B=0,wa(510,C|0,da|0),y=B,B=0,!(y&1)):0){B=0;ya(425,C|0)|0;y=B;B=0;if(y&1){y=Rb()|0;$=Q;Yua(C);ma=$;na=y;break}else{Yua(C);k[A>>2]=27468;k[ba>>2]=27488;k[da>>2]=27560;Yua(aa);Ava(da);vva(ba);break b}}else R=173;while(0);if((R|0)==173){fa=Rb()|0;ma=Q;na=fa}k[A>>2]=27468;k[ba>>2]=27488;k[da>>2]=27560;Yua(aa);Ava(da);vva(ba);ga=ma;ha=na;Qb(ha|0)}while(0);ia=ka;ja=la;vva(ba);Qb(ja|0)}while(0);ja=k[m>>2]|0;if(ja){if((k[ja>>2]|0)!=0?(m=k[ja+4>>2]|0,(m|0)!=0):0){la=k[m>>2]|0;if(la)Ec[k[(k[la>>2]|0)+4>>2]&1023](la);Sqa(m)}Sqa(ja)}ja=k[l>>2]|0;if(ja){if((k[ja>>2]|0)!=0?(l=k[ja+4>>2]|0,(l|0)!=0):0){m=k[l>>2]|0;if(m)Ec[k[(k[m>>2]|0)+4>>2]&1023](m);Sqa(l)}Sqa(ja)}if(X){if((k[X>>2]|0)!=0?(ja=k[X+4>>2]|0,(ja|0)!=0):0){l=k[ja>>2]|0;if(l)Ec[k[(k[l>>2]|0)+4>>2]&1023](l);Sqa(ja)}Sqa(X)}if(!W){r=b;return}if((k[U>>2]|0)!=0?(U=k[W+4>>2]|0,(U|0)!=0):0){X=k[U>>2]|0;if(X)Ec[k[(k[X>>2]|0)+4>>2]&1023](X);Sqa(U)}Sqa(W);r=b;return}function Yoa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;b=r;r=r+400|0;c=b+376|0;d=b+368|0;e=b+364|0;f=b+360|0;g=b+356|0;h=b+208|0;i=b+344|0;j=b+56|0;l=b+44|0;m=b+72|0;n=b+32|0;o=b+20|0;p=b+8|0;k[e>>2]=0;k[f>>2]=0;k[g>>2]=0;q=a+44|0;dO(k[q>>2]|0,b,358);cO(k[q>>2]|0,b+372|0,478);Eh(a);cO(k[q>>2]|0,d,477);switch(k[d>>2]|0){case 510:{q=Qqa(4)|0;k[q>>2]=39544;Oea(q,e,a);Pea(q,g,a);Nea(q,f,0,a);Ec[k[(k[q>>2]|0)+4>>2]&1023](q);break}case 496:{q=Qqa(4)|0;k[q>>2]=38620;P8(q,e,a);Q8(q,g,a);O8(q,f,0,a);Ec[k[(k[q>>2]|0)+4>>2]&1023](q);break}default:{q=h+56|0;a=h+4|0;k[h>>2]=27524;k[q>>2]=27544;B=0;wa(508,h+56|0,a|0);f=B;B=0;if(f&1){f=Rb()|0;s=Q;t=f;vva(q);Qb(t|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[q>>2]=27488;B=0;va(448,a|0);f=B;B=0;do if(f&1){g=Rb()|0;u=Q;v=g}else{k[a>>2]=27560;g=h+36|0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);e=B;B=0;if(e&1){e=Rb()|0;b=Q;Yua(c);Yua(g);Ava(a);u=b;v=e;break}Yua(c);B=0;e=Ia(40,h|0,147800,14)|0;b=B;B=0;a:do if((((!(b&1)?(B=0,w=ya(427,k[d>>2]|0)|0,x=B,B=0,!(x&1)):0)?(x=Lta(w)|0,B=0,y=Ia(40,e|0,w|0,x|0)|0,x=B,B=0,!(x&1)):0)?(B=0,x=Ia(40,y|0,147815,23)|0,y=B,B=0,!(y&1)):0)?(B=0,Xa(239,x|0,0)|0,x=B,B=0,!(x&1)):0){x=Ab(20)|0;B=0;eb(502,i|0,147839,89);y=B;B=0;do if(!(y&1)){B=0;eb(502,j|0,147929,20);w=B;B=0;if(w&1){w=Rb()|0;z=Q;Yua(i);A=w;C=z;break}B=0;wa(510,l|0,a|0);z=B;B=0;if(z&1){z=Rb()|0;D=Q;E=z;F=1}else{B=0;ua(163,x|0,i|0,j|0,373,l|0);z=B;B=0;if(z&1)G=1;else{B=0;eb(503,x|0,1240,229);B=0;G=0}z=Rb()|0;w=Q;Yua(l);D=w;E=z;F=G}Yua(j);Yua(i);if(F){A=E;C=D}else{H=E;I=D;break a}}else{z=Rb()|0;A=z;C=Q}while(0);zb(x|0);H=A;I=C}else J=20;while(0);if((J|0)==20){e=Rb()|0;H=e;I=Q}k[h>>2]=27468;k[q>>2]=27488;k[a>>2]=27560;Yua(g);Ava(a);vva(q);K=I;L=H;Qb(L|0)}while(0);s=u;t=v;vva(q);Qb(t|0)}}t=m+56|0;q=m+4|0;k[m>>2]=27524;k[t>>2]=27544;B=0;wa(508,m+56|0,q|0);v=B;B=0;if(v&1){v=Rb()|0;M=Q;N=v;vva(t);Qb(N|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[t>>2]=27488;B=0;va(448,q|0);v=B;B=0;do if(v&1){u=Rb()|0;O=Q;P=u}else{k[q>>2]=27560;u=m+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,q|0,c|0);s=B;B=0;if(s&1){s=Rb()|0;H=Q;Yua(c);Yua(u);Ava(q);O=H;P=s;break}Yua(c);B=0;s=Ia(40,m|0,147950,27)|0;H=B;B=0;b:do if(!(H&1)?(B=0,Xa(239,s|0,0)|0,I=B,B=0,!(I&1)):0){I=Ab(20)|0;B=0;eb(502,n|0,147839,89);a=B;B=0;do if(!(a&1)){B=0;eb(502,o|0,147929,20);h=B;B=0;if(h&1){h=Rb()|0;C=Q;Yua(n);R=h;S=C;break}B=0;wa(510,p|0,q|0);C=B;B=0;if(C&1){C=Rb()|0;T=1;U=Q;V=C}else{B=0;ua(163,I|0,n|0,o|0,456,p|0);C=B;B=0;if(C&1)W=1;else{B=0;eb(503,I|0,1240,229);B=0;W=0}C=Rb()|0;h=Q;Yua(p);T=W;U=h;V=C}Yua(o);Yua(n);if(T){R=V;S=U}else{X=U;Y=V;break b}}else{C=Rb()|0;R=C;S=Q}while(0);zb(I|0);X=S;Y=R}else J=45;while(0);if((J|0)==45){s=Rb()|0;X=Q;Y=s}k[m>>2]=27468;k[t>>2]=27488;k[q>>2]=27560;Yua(u);Ava(q);vva(t);K=X;L=Y;Qb(L|0)}while(0);M=O;N=P;vva(t);Qb(N|0)}function Zoa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;g=+g;h=+h;var j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0.0,qa=0.0,ra=0.0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0.0,Da=0.0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0.0,nb=0.0,ob=0.0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0.0,Zb=0.0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0;j=r;r=r+2192|0;l=j+2176|0;m=j+1944|0;n=j+2164|0;o=j+1808|0;q=j+2152|0;s=j+1656|0;u=j+2140|0;v=j+1504|0;w=j+2128|0;x=j+2116|0;y=j+2104|0;z=j+1352|0;A=j+2092|0;C=j+1216|0;D=j+2080|0;E=j+1064|0;F=j+1792|0;G=j+1640|0;H=j+1488|0;I=j+928|0;J=j+1200|0;K=j+776|0;L=j+912|0;M=j+640|0;N=j+624|0;O=j+488|0;P=j+340|0;R=j+328|0;S=j+176|0;T=j+352|0;U=j+24|0;V=j+192|0;W=j+12|0;X=j+40|0;Y=j;a:do if(BY()|0){Z=m+56|0;_=m+4|0;k[m>>2]=27524;k[Z>>2]=27544;B=0;wa(508,m+56|0,_|0);aa=B;B=0;if(aa&1){aa=Rb()|0;ba=Q;ca=aa;vva(Z);Qb(ca|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[Z>>2]=27488;B=0;va(448,_|0);aa=B;B=0;do if(aa&1){da=Rb()|0;ea=Q;fa=da}else{k[_>>2]=27560;da=m+36|0;k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;k[da+12>>2]=0;k[m+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,_|0,l|0);ga=B;B=0;if(ga&1){ga=Rb()|0;ha=Q;Yua(l);Yua(da);Ava(_);ea=ha;fa=ga;break}Yua(l);B=0;Ia(40,m|0,147978,24)|0;ga=B;B=0;do if(!(ga&1)?(B=0,wa(510,n|0,_|0),ha=B,B=0,!(ha&1)):0){B=0;ya(425,n|0)|0;ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(n);ja=ha;ka=ia;break}else{Yua(n);k[m>>2]=27468;k[Z>>2]=27488;k[_>>2]=27560;Yua(da);Ava(_);vva(Z);break a}}else la=14;while(0);if((la|0)==14){ga=Rb()|0;ja=ga;ka=Q}k[m>>2]=27468;k[Z>>2]=27488;k[_>>2]=27560;Yua(da);Ava(_);vva(Z);ma=ka;na=ja;Qb(na|0)}while(0);ba=ea;ca=fa;vva(Z);Qb(ca|0)}while(0);if(k[d>>2]|0){ca=k[k[d+4>>2]>>2]|0;Fc[k[(k[ca>>2]|0)+28>>2]&1023](ca,l);if(!(k[l>>2]|0)){oa=1;i[a>>0]=oa;r=j;return}}b:do if(EY()|0){ca=Qqa(8)|0;B=0;va(485,ca|0);fa=B;B=0;if(fa&1){fa=Rb()|0;Sqa(ca);Qb(fa|0)}if(k[d>>2]|0){fa=k[d+4>>2]|0;ea=Qqa(4)|0;ba=k[fa>>2]|0;ja=Hc[k[(k[ba>>2]|0)+36>>2]&511](ba)|0;k[ea>>2]=ja;ba=k[fa>>2]|0;Fc[k[(k[ba>>2]|0)+60>>2]&1023](ba,ja);k[ca+4>>2]=ea}if(k[b>>2]|0){ea=k[k[b+4>>2]>>2]|0;nd[k[(k[ea>>2]|0)+28>>2]&1023](ea,k[k[d+4>>2]>>2]|0,k[k[ca+4>>2]>>2]|0)}ea=Qqa(8)|0;B=0;va(485,ea|0);ja=B;B=0;if(ja&1){ja=Rb()|0;Sqa(ea);Qb(ja|0)}if((k[ca>>2]|0)!=0?(ja=ca+4|0,ba=k[ja>>2]|0,fa=Qqa(4)|0,ka=k[ba>>2]|0,m=Hc[k[(k[ka>>2]|0)+36>>2]&511](ka)|0,k[fa>>2]=m,ka=k[ba>>2]|0,Fc[k[(k[ka>>2]|0)+60>>2]&1023](ka,m),k[ea+4>>2]=fa,(k[ca>>2]|0)!=0):0){m=k[k[ja>>2]>>2]|0;Fc[k[(k[m>>2]|0)+60>>2]&1023](m,k[fa>>2]|0)}if((k[ea>>2]|0)!=0?(fa=ea+4|0,m=k[k[fa>>2]>>2]|0,Xc[k[(k[m>>2]|0)+48>>2]&63](m,k[k[c+4>>2]>>2]|0,-1.0),(k[ea>>2]|0)!=0):0){m=k[k[fa>>2]>>2]|0;pa=+id[k[(k[m>>2]|0)+64>>2]&63](m,1)}else pa=0.0;if(!(k[c>>2]|0))qa=0.0;else{m=k[k[c+4>>2]>>2]|0;qa=+id[k[(k[m>>2]|0)+64>>2]&63](m,1)}ra=pa/qa;m=o+56|0;fa=o+4|0;k[o>>2]=27524;k[m>>2]=27544;B=0;wa(508,o+56|0,fa|0);ja=B;B=0;if(ja&1){ja=Rb()|0;sa=Q;ta=ja;vva(m);Qb(ta|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[m>>2]=27488;B=0;va(448,fa|0);ja=B;B=0;do if(ja&1){ka=Rb()|0;xa=Q;za=ka}else{k[fa>>2]=27560;ka=o+36|0;k[ka>>2]=0;k[ka+4>>2]=0;k[ka+8>>2]=0;k[ka+12>>2]=0;k[o+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,fa|0,l|0);ba=B;B=0;if(ba&1){ba=Rb()|0;n=Q;Yua(l);Yua(ka);Ava(fa);xa=n;za=ba;break}Yua(l);B=0;ba=Ia(40,o|0,149177,1)|0;n=B;B=0;do if(((!(n&1)?(B=0,_=Ia(40,ba|0,148003,38)|0,aa=B,B=0,!(aa&1)):0)?(B=0,aa=Sa(1,_|0,+ra)|0,_=B,B=0,!(_&1)):0)?(B=0,Ia(40,aa|0,149177,1)|0,aa=B,B=0,!(aa&1)):0){B=0;wa(510,q|0,fa|0);aa=B;B=0;if(aa&1){la=62;break}B=0;ya(425,q|0)|0;aa=B;B=0;if(aa&1){aa=Rb()|0;_=Q;Yua(q);Aa=_;Ba=aa;break}Yua(q);k[o>>2]=27468;k[m>>2]=27488;k[fa>>2]=27560;Yua(ka);Ava(fa);vva(m);do if(k[ca>>2]|0){aa=k[ca+4>>2]|0;if(!aa)break;_=k[aa>>2]|0;if(_)Ec[k[(k[_>>2]|0)+4>>2]&1023](_);Sqa(aa)}while(0);Sqa(ca);do if(k[ea>>2]|0){aa=k[ea+4>>2]|0;if(!aa)break;_=k[aa>>2]|0;if(_)Ec[k[(k[_>>2]|0)+4>>2]&1023](_);Sqa(aa)}while(0);Sqa(ea);break b}else la=62;while(0);if((la|0)==62){ba=Rb()|0;Aa=Q;Ba=ba}k[o>>2]=27468;k[m>>2]=27488;k[fa>>2]=27560;Yua(ka);Ava(fa);vva(m);ma=Aa;na=Ba;Qb(na|0)}while(0);sa=xa;ta=za;vva(m);Qb(ta|0)}while(0);ta=Qqa(8)|0;B=0;va(485,ta|0);za=B;B=0;if(za&1){za=Rb()|0;Sqa(ta);Qb(za|0)}if(k[d>>2]|0){za=k[d+4>>2]|0;xa=Qqa(4)|0;sa=k[za>>2]|0;Ba=Hc[k[(k[sa>>2]|0)+36>>2]&511](sa)|0;k[xa>>2]=Ba;sa=k[za>>2]|0;Fc[k[(k[sa>>2]|0)+60>>2]&1023](sa,Ba);k[ta+4>>2]=xa}if(k[b>>2]|0){xa=k[k[b+4>>2]>>2]|0;nd[k[(k[xa>>2]|0)+28>>2]&1023](xa,k[k[e+4>>2]>>2]|0,k[k[ta+4>>2]>>2]|0)}xa=Qqa(8)|0;B=0;va(485,xa|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(xa);Qb(b|0)}if((k[ta>>2]|0)!=0?(b=ta+4|0,Ba=k[b>>2]|0,sa=Qqa(4)|0,za=k[Ba>>2]|0,Aa=Hc[k[(k[za>>2]|0)+36>>2]&511](za)|0,k[sa>>2]=Aa,za=k[Ba>>2]|0,Fc[k[(k[za>>2]|0)+60>>2]&1023](za,Aa),k[xa+4>>2]=sa,(k[ta>>2]|0)!=0):0){Aa=k[k[b>>2]>>2]|0;Fc[k[(k[Aa>>2]|0)+60>>2]&1023](Aa,k[sa>>2]|0)}if((k[xa>>2]|0)!=0?(sa=xa+4|0,Aa=k[k[sa>>2]>>2]|0,Xc[k[(k[Aa>>2]|0)+48>>2]&63](Aa,k[k[c+4>>2]>>2]|0,-1.0),(k[xa>>2]|0)!=0):0){Aa=k[k[sa>>2]>>2]|0;Ca=+id[k[(k[Aa>>2]|0)+64>>2]&63](Aa,1)}else Ca=0.0;if(!(k[c>>2]|0))Da=0.0;else{Aa=k[k[c+4>>2]>>2]|0;Da=+id[k[(k[Aa>>2]|0)+64>>2]&63](Aa,1)}qa=Ca/Da;pa=+$(+qa);p[t>>3]=pa;Aa=k[t+4>>2]|0;if(Aa>>>0>2146435072|(Aa|0)==2146435072&(k[t>>2]|0)>>>0>0){Aa=s+56|0;c=s+4|0;k[s>>2]=27524;k[Aa>>2]=27544;B=0;wa(508,s+56|0,c|0);sa=B;B=0;if(sa&1){sa=Rb()|0;Ea=Q;Fa=sa;vva(Aa);Qb(Fa|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[Aa>>2]=27488;B=0;va(448,c|0);sa=B;B=0;do if(sa&1){b=Rb()|0;Ga=Q;Ha=b}else{k[c>>2]=27560;b=s+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[s+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,c|0,l|0);za=B;B=0;if(za&1){za=Rb()|0;Ba=Q;Yua(l);Yua(b);Ava(c);Ga=Ba;Ha=za;break}Yua(l);B=0;za=Ia(40,s|0,148042,10)|0;Ba=B;B=0;do if((!(Ba&1)?(B=0,o=Sa(1,za|0,+Da)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,o|0,148053,19)|0,o=B,B=0,!(o&1)):0){B=0;o=Sa(1,q|0,+Ca)|0;q=B;B=0;if(q&1){la=112;break}B=0;Ia(40,o|0,148073,2)|0;o=B;B=0;if(o&1){la=112;break}B=0;wa(510,u|0,c|0);o=B;B=0;if(o&1){la=112;break}B=0;ya(425,u|0)|0;o=B;B=0;if(o&1){o=Rb()|0;q=Q;Yua(u);Ja=q;Ka=o;break}Yua(u);k[s>>2]=27468;k[Aa>>2]=27488;k[c>>2]=27560;Yua(b);Ava(c);vva(Aa);o=v+56|0;q=v+4|0;k[v>>2]=27524;k[o>>2]=27544;B=0;wa(508,v+56|0,q|0);fa=B;B=0;if(fa&1){fa=Rb()|0;La=Q;Ma=fa;vva(o);Qb(Ma|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[o>>2]=27488;B=0;va(448,q|0);fa=B;B=0;do if(fa&1){ea=Rb()|0;Na=Q;Oa=ea}else{k[q>>2]=27560;ea=v+36|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[v+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,q|0,l|0);ca=B;B=0;if(ca&1){ca=Rb()|0;ja=Q;Yua(l);Yua(ea);Ava(q);Na=ja;Oa=ca;break}Yua(l);B=0;ca=Ia(40,v|0,148076,52)|0;ja=B;B=0;c:do if(ja&1)la=115;else{B=0;Xa(239,ca|0,0)|0;Z=B;B=0;if(Z&1){la=115;break}Z=Ab(20)|0;B=0;eb(502,w|0,148129,80);ba=B;B=0;do if(!(ba&1)){B=0;eb(502,x|0,148210,11);n=B;B=0;if(n&1){n=Rb()|0;da=Q;Yua(w);Pa=n;Qa=da;break}B=0;wa(510,y|0,q|0);da=B;B=0;if(da&1){da=Rb()|0;Ra=1;Ta=Q;Ua=da}else{B=0;ua(163,Z|0,w|0,x|0,65,y|0);da=B;B=0;if(da&1)Va=1;else{B=0;eb(503,Z|0,1240,229);B=0;Va=0}da=Rb()|0;n=Q;Yua(y);Ra=Va;Ta=n;Ua=da}Yua(x);Yua(w);if(Ra){Pa=Ua;Qa=Ta}else{Wa=Ta;Ya=Ua;break c}}else{da=Rb()|0;Pa=da;Qa=Q}while(0);zb(Z|0);Wa=Qa;Ya=Pa}while(0);if((la|0)==115){ca=Rb()|0;Wa=Q;Ya=ca}k[v>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(ea);Ava(q);vva(o);ma=Wa;na=Ya;Qb(na|0)}while(0);La=Na;Ma=Oa;vva(o);Qb(Ma|0)}else la=112;while(0);if((la|0)==112){za=Rb()|0;Ja=Q;Ka=za}k[s>>2]=27468;k[Aa>>2]=27488;k[c>>2]=27560;Yua(b);Ava(c);vva(Aa);ma=Ja;na=Ka;Qb(na|0)}while(0);Ea=Ga;Fa=Ha;vva(Aa);Qb(Fa|0)}if((k[ta>>2]|0)!=0?(Fa=k[ta+4>>2]|0,(Fa|0)!=0):0){Aa=k[Fa>>2]|0;if(Aa)Ec[k[(k[Aa>>2]|0)+4>>2]&1023](Aa);Sqa(Fa)}Sqa(ta);if((k[xa>>2]|0)!=0?(ta=k[xa+4>>2]|0,(ta|0)!=0):0){Fa=k[ta>>2]|0;if(Fa)Ec[k[(k[Fa>>2]|0)+4>>2]&1023](Fa);Sqa(ta)}Sqa(xa);xa=EY()|0;d:do if(qa<f)if(xa){ta=z+56|0;Fa=z+4|0;k[z>>2]=27524;k[ta>>2]=27544;B=0;wa(508,z+56|0,Fa|0);Aa=B;B=0;if(Aa&1){Aa=Rb()|0;Za=Q;_a=Aa;vva(ta);Qb(_a|0)}k[z+128>>2]=0;k[z+132>>2]=-1;k[z>>2]=27468;k[ta>>2]=27488;B=0;va(448,Fa|0);Aa=B;B=0;do if(Aa&1){Ha=Rb()|0;$a=Q;ab=Ha}else{k[Fa>>2]=27560;Ha=z+36|0;k[Ha>>2]=0;k[Ha+4>>2]=0;k[Ha+8>>2]=0;k[Ha+12>>2]=0;k[z+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,Fa|0,l|0);Ga=B;B=0;if(Ga&1){Ga=Rb()|0;Ea=Q;Yua(l);Yua(Ha);Ava(Fa);$a=Ea;ab=Ga;break}Yua(l);k[z+(k[(k[z>>2]|0)+-12>>2]|0)+12>>2]=50;Ga=z+(k[(k[z>>2]|0)+-12>>2]|0)+4|0;k[Ga>>2]=k[Ga>>2]&-177|32;B=0;Ga=Ia(40,z|0,148222,47)|0;Ea=B;B=0;do if(!(Ea&1)){B=0;Ka=Sa(1,Ga|0,+(qa*100.0))|0;Ja=B;B=0;if(Ja&1){la=151;break}B=0;Ja=Ia(40,Ka|0,148270,3)|0;Ka=B;B=0;if(Ka&1){la=151;break}B=0;Ka=Sa(1,Ja|0,+(f*100.0))|0;Ja=B;B=0;if(Ja&1){la=151;break}B=0;Ia(40,Ka|0,148274,3)|0;Ka=B;B=0;if(Ka&1){la=151;break}B=0;wa(510,A|0,Fa|0);Ka=B;B=0;if(Ka&1){la=151;break}B=0;ya(425,A|0)|0;Ka=B;B=0;if(Ka&1){Ka=Rb()|0;Ja=Q;Yua(A);bb=Ja;cb=Ka;break}else{Yua(A);k[z>>2]=27468;k[ta>>2]=27488;k[Fa>>2]=27560;Yua(Ha);Ava(Fa);vva(ta);db=1;break d}}else la=151;while(0);if((la|0)==151){Ga=Rb()|0;bb=Q;cb=Ga}k[z>>2]=27468;k[ta>>2]=27488;k[Fa>>2]=27560;Yua(Ha);Ava(Fa);vva(ta);ma=bb;na=cb;Qb(na|0)}while(0);Za=$a;_a=ab;vva(ta);Qb(_a|0)}else db=1;else if(xa){Fa=C+56|0;Aa=C+4|0;k[C>>2]=27524;k[Fa>>2]=27544;B=0;wa(508,C+56|0,Aa|0);b=B;B=0;if(b&1){b=Rb()|0;fb=Q;gb=b;vva(Fa);Qb(gb|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[Fa>>2]=27488;B=0;va(448,Aa|0);b=B;B=0;do if(b&1){Ga=Rb()|0;hb=Q;ib=Ga}else{k[Aa>>2]=27560;Ga=C+36|0;k[Ga>>2]=0;k[Ga+4>>2]=0;k[Ga+8>>2]=0;k[Ga+12>>2]=0;k[C+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,Aa|0,l|0);Ea=B;B=0;if(Ea&1){Ea=Rb()|0;o=Q;Yua(l);Yua(Ga);Ava(Aa);hb=o;ib=Ea;break}Yua(l);k[C+(k[(k[C>>2]|0)+-12>>2]|0)+12>>2]=50;Ea=C+(k[(k[C>>2]|0)+-12>>2]|0)+4|0;k[Ea>>2]=k[Ea>>2]&-177|32;B=0;Ea=Ia(40,C|0,148222,47)|0;o=B;B=0;do if(!(o&1)){B=0;Ka=Sa(1,Ea|0,+(qa*100.0))|0;Ja=B;B=0;if(Ja&1){la=171;break}B=0;Ja=Ia(40,Ka|0,148278,3)|0;Ka=B;B=0;if(Ka&1){la=171;break}B=0;Ka=Sa(1,Ja|0,+(f*100.0))|0;Ja=B;B=0;if(Ja&1){la=171;break}B=0;Ia(40,Ka|0,148274,3)|0;Ka=B;B=0;if(Ka&1){la=171;break}B=0;wa(510,D|0,Aa|0);Ka=B;B=0;if(Ka&1){la=171;break}B=0;ya(425,D|0)|0;Ka=B;B=0;if(Ka&1){Ka=Rb()|0;Ja=Q;Yua(D);jb=Ja;kb=Ka;break}else{Yua(D);k[C>>2]=27468;k[Fa>>2]=27488;k[Aa>>2]=27560;Yua(Ga);Ava(Aa);vva(Fa);db=0;break d}}else la=171;while(0);if((la|0)==171){Ea=Rb()|0;jb=Q;kb=Ea}k[C>>2]=27468;k[Fa>>2]=27488;k[Aa>>2]=27560;Yua(Ga);Ava(Aa);vva(Fa);ma=jb;na=kb;Qb(na|0)}while(0);fb=hb;gb=ib;vva(Fa);Qb(gb|0)}else db=0;while(0);f=+$(+g);p[t>>3]=f;gb=k[t+4>>2]|0;ib=gb>>>0>2146435072|(gb|0)==2146435072&(k[t>>2]|0)>>>0>0;if(ib?!(EY()|0):0){lb=db;mb=0.0}else la=176;e:do if((la|0)==176){gb=Qqa(8)|0;B=0;va(485,gb|0);hb=B;B=0;if(hb&1){hb=Rb()|0;Sqa(gb);Qb(hb|0)}if((k[e>>2]|0)!=0?(hb=e+4|0,fb=k[hb>>2]|0,kb=Qqa(4)|0,jb=k[fb>>2]|0,C=Hc[k[(k[jb>>2]|0)+36>>2]&511](jb)|0,k[kb>>2]=C,jb=k[fb>>2]|0,Fc[k[(k[jb>>2]|0)+60>>2]&1023](jb,C),k[gb+4>>2]=kb,(k[e>>2]|0)!=0):0){C=k[k[hb>>2]>>2]|0;Fc[k[(k[C>>2]|0)+60>>2]&1023](C,k[kb>>2]|0)}do if(!(k[gb>>2]|0))nb=0.0;else{kb=gb+4|0;C=k[k[kb>>2]>>2]|0;Xc[k[(k[C>>2]|0)+48>>2]&63](C,k[k[d+4>>2]>>2]|0,-1.0);if(!(k[gb>>2]|0)){nb=0.0;break}C=k[k[kb>>2]>>2]|0;nb=+id[k[(k[C>>2]|0)+64>>2]&63](C,1)}while(0);if(!(k[e>>2]|0))ob=0.0;else{Fa=k[k[e+4>>2]>>2]|0;ob=+id[k[(k[Fa>>2]|0)+64>>2]&63](Fa,1)}f=+$(+nb);p[t>>3]=f;Fa=k[t+4>>2]|0;do if(!(Fa>>>0>2146435072|(Fa|0)==2146435072&(k[t>>2]|0)>>>0>0)){f=+$(+ob);p[t>>3]=f;C=k[t+4>>2]|0;if(C>>>0>2146435072|(C|0)==2146435072&(k[t>>2]|0)>>>0>0)break;do if(k[gb>>2]|0){C=k[gb+4>>2]|0;if(!C)break;kb=k[C>>2]|0;if(kb)Ec[k[(k[kb>>2]|0)+4>>2]&1023](kb);Sqa(C)}while(0);Sqa(gb);if(ib){Ga=M+56|0;C=M+4|0;k[M>>2]=27524;k[Ga>>2]=27544;B=0;wa(508,M+56|0,C|0);kb=B;B=0;if(kb&1){kb=Rb()|0;pb=Q;qb=kb;vva(Ga);Qb(qb|0)}k[M+128>>2]=0;k[M+132>>2]=-1;k[M>>2]=27468;k[Ga>>2]=27488;B=0;va(448,C|0);kb=B;B=0;do if(kb&1){hb=Rb()|0;rb=Q;sb=hb}else{k[C>>2]=27560;hb=M+36|0;k[hb>>2]=0;k[hb+4>>2]=0;k[hb+8>>2]=0;k[hb+12>>2]=0;k[M+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,C|0,l|0);jb=B;B=0;if(jb&1){jb=Rb()|0;fb=Q;Yua(l);Yua(hb);Ava(C);rb=fb;sb=jb;break}Yua(l);k[M+(k[(k[M>>2]|0)+-12>>2]|0)+12>>2]=50;jb=M+(k[(k[M>>2]|0)+-12>>2]|0)+4|0;k[jb>>2]=k[jb>>2]&-177|32;B=0;jb=Ia(40,M|0,148312,42)|0;fb=B;B=0;do if(!(fb&1)){B=0;D=Sa(1,jb|0,+(nb/ob*100.0))|0;xa=B;B=0;if(xa&1){la=272;break}B=0;Ia(40,D|0,148274,3)|0;D=B;B=0;if(D&1){la=272;break}B=0;wa(510,N|0,C|0);D=B;B=0;if(D&1){la=272;break}B=0;ya(425,N|0)|0;D=B;B=0;if(D&1){D=Rb()|0;xa=Q;Yua(N);tb=xa;ub=D;break}else{Yua(N);k[M>>2]=27468;k[Ga>>2]=27488;k[C>>2]=27560;Yua(hb);Ava(C);vva(Ga);lb=db;mb=ob;break e}}else la=272;while(0);if((la|0)==272){jb=Rb()|0;tb=Q;ub=jb}k[M>>2]=27468;k[Ga>>2]=27488;k[C>>2]=27560;Yua(hb);Ava(C);vva(Ga);ma=tb;na=ub;Qb(na|0)}while(0);pb=rb;qb=sb;vva(Ga);Qb(qb|0)}f=nb/ob;C=EY()|0;if(f<g){if(!C){lb=db;mb=ob;break e}kb=I+56|0;jb=I+4|0;k[I>>2]=27524;k[kb>>2]=27544;B=0;wa(508,I+56|0,jb|0);fb=B;B=0;if(fb&1){fb=Rb()|0;vb=Q;wb=fb;vva(kb);Qb(wb|0)}k[I+128>>2]=0;k[I+132>>2]=-1;k[I>>2]=27468;k[kb>>2]=27488;B=0;va(448,jb|0);fb=B;B=0;do if(fb&1){ea=Rb()|0;xb=Q;yb=ea}else{k[jb>>2]=27560;ea=I+36|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[I+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,jb|0,l|0);D=B;B=0;if(D&1){D=Rb()|0;xa=Q;Yua(l);Yua(ea);Ava(jb);xb=xa;yb=D;break}Yua(l);k[I+(k[(k[I>>2]|0)+-12>>2]|0)+12>>2]=50;D=I+(k[(k[I>>2]|0)+-12>>2]|0)+4|0;k[D>>2]=k[D>>2]&-177|32;B=0;D=Ia(40,I|0,148312,42)|0;xa=B;B=0;do if(!(xa&1)){B=0;_a=Sa(1,D|0,+(f*100.0))|0;ab=B;B=0;if(ab&1){la=235;break}B=0;ab=Ia(40,_a|0,148270,3)|0;_a=B;B=0;if(_a&1){la=235;break}B=0;_a=Sa(1,ab|0,+(g*100.0))|0;ab=B;B=0;if(ab&1){la=235;break}B=0;Ia(40,_a|0,148274,3)|0;_a=B;B=0;if(_a&1){la=235;break}B=0;wa(510,J|0,jb|0);_a=B;B=0;if(_a&1){la=235;break}B=0;ya(425,J|0)|0;_a=B;B=0;if(_a&1){_a=Rb()|0;ab=Q;Yua(J);Bb=ab;Cb=_a;break}else{Yua(J);k[I>>2]=27468;k[kb>>2]=27488;k[jb>>2]=27560;Yua(ea);Ava(jb);vva(kb);lb=db;mb=ob;break e}}else la=235;while(0);if((la|0)==235){D=Rb()|0;Bb=Q;Cb=D}k[I>>2]=27468;k[kb>>2]=27488;k[jb>>2]=27560;Yua(ea);Ava(jb);vva(kb);ma=Bb;na=Cb;Qb(na|0)}while(0);vb=xb;wb=yb;vva(kb);Qb(wb|0)}else{if(!C){lb=0;mb=ob;break e}jb=K+56|0;fb=K+4|0;k[K>>2]=27524;k[jb>>2]=27544;B=0;wa(508,K+56|0,fb|0);Ga=B;B=0;if(Ga&1){Ga=Rb()|0;Db=Q;Eb=Ga;vva(jb);Qb(Eb|0)}k[K+128>>2]=0;k[K+132>>2]=-1;k[K>>2]=27468;k[jb>>2]=27488;B=0;va(448,fb|0);Ga=B;B=0;do if(Ga&1){D=Rb()|0;Fb=Q;Gb=D}else{k[fb>>2]=27560;D=K+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[K+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,fb|0,l|0);xa=B;B=0;if(xa&1){xa=Rb()|0;hb=Q;Yua(l);Yua(D);Ava(fb);Fb=hb;Gb=xa;break}Yua(l);k[K+(k[(k[K>>2]|0)+-12>>2]|0)+12>>2]=50;xa=K+(k[(k[K>>2]|0)+-12>>2]|0)+4|0;k[xa>>2]=k[xa>>2]&-177|32;B=0;xa=Ia(40,K|0,148312,42)|0;hb=B;B=0;do if(!(hb&1)){B=0;_a=Sa(1,xa|0,+(f*100.0))|0;ab=B;B=0;if(ab&1){la=255;break}B=0;ab=Ia(40,_a|0,148278,3)|0;_a=B;B=0;if(_a&1){la=255;break}B=0;_a=Sa(1,ab|0,+(g*100.0))|0;ab=B;B=0;if(ab&1){la=255;break}B=0;Ia(40,_a|0,148274,3)|0;_a=B;B=0;if(_a&1){la=255;break}B=0;wa(510,L|0,fb|0);_a=B;B=0;if(_a&1){la=255;break}B=0;ya(425,L|0)|0;_a=B;B=0;if(_a&1){_a=Rb()|0;ab=Q;Yua(L);Hb=ab;Ib=_a;break}else{Yua(L);k[K>>2]=27468;k[jb>>2]=27488;k[fb>>2]=27560;Yua(D);Ava(fb);vva(jb);lb=0;mb=ob;break e}}else la=255;while(0);if((la|0)==255){xa=Rb()|0;Hb=Q;Ib=xa}k[K>>2]=27468;k[jb>>2]=27488;k[fb>>2]=27560;Yua(D);Ava(fb);vva(jb);ma=Hb;na=Ib;Qb(na|0)}while(0);Db=Fb;Eb=Gb;vva(jb);Qb(Eb|0)}}while(0);gb=E+56|0;Fa=E+4|0;k[E>>2]=27524;k[gb>>2]=27544;B=0;wa(508,E+56|0,Fa|0);fb=B;B=0;if(fb&1){fb=Rb()|0;Jb=Q;Kb=fb;vva(gb);Qb(Kb|0)}k[E+128>>2]=0;k[E+132>>2]=-1;k[E>>2]=27468;k[gb>>2]=27488;B=0;va(448,Fa|0);fb=B;B=0;do if(fb&1){Ga=Rb()|0;Lb=Q;Mb=Ga}else{k[Fa>>2]=27560;Ga=E+36|0;k[Ga>>2]=0;k[Ga+4>>2]=0;k[Ga+8>>2]=0;k[Ga+12>>2]=0;k[E+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,Fa|0,l|0);C=B;B=0;if(C&1){C=Rb()|0;kb=Q;Yua(l);Yua(Ga);Ava(Fa);Lb=kb;Mb=C;break}Yua(l);B=0;C=Ia(40,E|0,148282,29)|0;kb=B;B=0;f:do if(kb&1)la=203;else{B=0;Xa(239,C|0,0)|0;xa=B;B=0;if(xa&1){la=203;break}xa=Ab(20)|0;B=0;eb(502,F|0,148129,80);hb=B;B=0;do if(!(hb&1)){B=0;eb(502,G|0,148210,11);ea=B;B=0;if(ea&1){ea=Rb()|0;_a=Q;Yua(F);Nb=_a;Ob=ea;break}B=0;wa(510,H|0,Fa|0);ea=B;B=0;if(ea&1){ea=Rb()|0;Pb=1;Sb=Q;Tb=ea}else{B=0;ua(163,xa|0,F|0,G|0,89,H|0);ea=B;B=0;if(ea&1)Ub=1;else{B=0;eb(503,xa|0,1240,229);B=0;Ub=0}ea=Rb()|0;_a=Q;Yua(H);Pb=Ub;Sb=_a;Tb=ea}Yua(G);Yua(F);if(Pb){Nb=Sb;Ob=Tb}else{Vb=Sb;Wb=Tb;break f}}else{ea=Rb()|0;Nb=Q;Ob=ea}while(0);zb(xa|0);Vb=Nb;Wb=Ob}while(0);if((la|0)==203){C=Rb()|0;Vb=Q;Wb=C}k[E>>2]=27468;k[gb>>2]=27488;k[Fa>>2]=27560;Yua(Ga);Ava(Fa);vva(gb);ma=Vb;na=Wb;Qb(na|0)}while(0);Jb=Lb;Kb=Mb;vva(gb);Qb(Kb|0)}while(0);ob=+$(+h);p[t>>3]=ob;Kb=k[t+4>>2]|0;Mb=Kb>>>0>2146435072|(Kb|0)==2146435072&(k[t>>2]|0)>>>0>0;if(Mb?!(EY()|0):0)Xb=lb;else la=277;g:do if((la|0)==277){Kb=Qqa(8)|0;B=0;va(485,Kb|0);Lb=B;B=0;if(Lb&1){Lb=Rb()|0;Sqa(Kb);Qb(Lb|0)}do if(k[e>>2]|0){Lb=e+4|0;Jb=k[Lb>>2]|0;Wb=Qqa(4)|0;Vb=k[Jb>>2]|0;E=Hc[k[(k[Vb>>2]|0)+36>>2]&511](Vb)|0;k[Wb>>2]=E;Vb=k[Jb>>2]|0;Fc[k[(k[Vb>>2]|0)+60>>2]&1023](Vb,E);k[Kb+4>>2]=Wb;if(!(k[e>>2]|0))break;E=k[k[Lb>>2]>>2]|0;Fc[k[(k[E>>2]|0)+60>>2]&1023](E,k[Wb>>2]|0)}while(0);do if(!(k[Kb>>2]|0)){Yb=0.0;Zb=0.0}else{gb=Kb+4|0;Wb=k[k[gb>>2]>>2]|0;Xc[k[(k[Wb>>2]|0)+48>>2]&63](Wb,k[k[d+4>>2]>>2]|0,-1.0);if(!(k[Kb>>2]|0)){Yb=0.0;Zb=0.0;break}Wb=k[k[gb>>2]>>2]|0;ob=+id[k[(k[Wb>>2]|0)+64>>2]&63](Wb,1);if(!(k[Kb>>2]|0)){Yb=ob;Zb=0.0;break}Wb=k[k[gb>>2]>>2]|0;Yb=ob;Zb=+id[k[(k[Wb>>2]|0)+64>>2]&63](Wb,0)}while(0);ob=+$(+Yb);p[t>>3]=ob;Wb=k[t+4>>2]|0;do if(!(Wb>>>0>2146435072|(Wb|0)==2146435072&(k[t>>2]|0)>>>0>0)){ob=+$(+mb);p[t>>3]=ob;gb=k[t+4>>2]|0;if(gb>>>0>2146435072|(gb|0)==2146435072&(k[t>>2]|0)>>>0>0)break;do if(k[Kb>>2]|0){gb=k[Kb+4>>2]|0;if(!gb)break;E=k[gb>>2]|0;if(E)Ec[k[(k[E>>2]|0)+4>>2]&1023](E);Sqa(gb)}while(0);Sqa(Kb);if(Mb){Ga=X+56|0;gb=X+4|0;k[X>>2]=27524;k[Ga>>2]=27544;B=0;wa(508,X+56|0,gb|0);E=B;B=0;if(E&1){E=Rb()|0;_b=Q;$b=E;vva(Ga);Qb($b|0)}k[X+128>>2]=0;k[X+132>>2]=-1;k[X>>2]=27468;k[Ga>>2]=27488;B=0;va(448,gb|0);E=B;B=0;do if(E&1){Lb=Rb()|0;ac=Q;bc=Lb}else{k[gb>>2]=27560;Lb=X+36|0;k[Lb>>2]=0;k[Lb+4>>2]=0;k[Lb+8>>2]=0;k[Lb+12>>2]=0;k[X+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,gb|0,l|0);Vb=B;B=0;if(Vb&1){Vb=Rb()|0;Jb=Q;Yua(l);Yua(Lb);Ava(gb);ac=Jb;bc=Vb;break}Yua(l);k[X+(k[(k[X>>2]|0)+-12>>2]|0)+12>>2]=50;Vb=X+(k[(k[X>>2]|0)+-12>>2]|0)+4|0;k[Vb>>2]=k[Vb>>2]&-177|32;B=0;Vb=Ia(40,X|0,148355,33)|0;Jb=B;B=0;do if(!(Jb&1)){B=0;Ob=Sa(1,Vb|0,+Zb)|0;Nb=B;B=0;if(Nb&1){la=372;break}B=0;Ia(40,Ob|0,149177,1)|0;Ob=B;B=0;if(Ob&1){la=372;break}B=0;wa(510,Y|0,gb|0);Ob=B;B=0;if(Ob&1){la=372;break}B=0;ya(425,Y|0)|0;Ob=B;B=0;if(Ob&1){Ob=Rb()|0;Nb=Q;Yua(Y);cc=Nb;dc=Ob;break}else{Yua(Y);k[X>>2]=27468;k[Ga>>2]=27488;k[gb>>2]=27560;Yua(Lb);Ava(gb);vva(Ga);Xb=lb;break g}}else la=372;while(0);if((la|0)==372){Vb=Rb()|0;cc=Q;dc=Vb}k[X>>2]=27468;k[Ga>>2]=27488;k[gb>>2]=27560;Yua(Lb);Ava(gb);vva(Ga);ma=cc;na=dc;Qb(na|0)}while(0);_b=ac;$b=bc;vva(Ga);Qb($b|0)}gb=EY()|0;if(Zb<h){if(!gb){Xb=lb;break g}E=T+56|0;Vb=T+4|0;k[T>>2]=27524;k[E>>2]=27544;B=0;wa(508,T+56|0,Vb|0);Jb=B;B=0;if(Jb&1){Jb=Rb()|0;ec=Q;fc=Jb;vva(E);Qb(fc|0)}k[T+128>>2]=0;k[T+132>>2]=-1;k[T>>2]=27468;k[E>>2]=27488;B=0;va(448,Vb|0);Jb=B;B=0;do if(Jb&1){xa=Rb()|0;gc=Q;hc=xa}else{k[Vb>>2]=27560;xa=T+36|0;k[xa>>2]=0;k[xa+4>>2]=0;k[xa+8>>2]=0;k[xa+12>>2]=0;k[T+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,Vb|0,l|0);Ob=B;B=0;if(Ob&1){Ob=Rb()|0;Nb=Q;Yua(l);Yua(xa);Ava(Vb);gc=Nb;hc=Ob;break}Yua(l);k[T+(k[(k[T>>2]|0)+-12>>2]|0)+12>>2]=50;Ob=T+(k[(k[T>>2]|0)+-12>>2]|0)+4|0;k[Ob>>2]=k[Ob>>2]&-177|32;B=0;Ob=Ia(40,T|0,148355,33)|0;Nb=B;B=0;do if(!(Nb&1)){B=0;Tb=Sa(1,Ob|0,+Zb)|0;Sb=B;B=0;if(Sb&1){la=335;break}B=0;Sb=Ia(40,Tb|0,148270,3)|0;Tb=B;B=0;if(Tb&1){la=335;break}B=0;Tb=Sa(1,Sb|0,+h)|0;Sb=B;B=0;if(Sb&1){la=335;break}B=0;Ia(40,Tb|0,149177,1)|0;Tb=B;B=0;if(Tb&1){la=335;break}B=0;wa(510,U|0,Vb|0);Tb=B;B=0;if(Tb&1){la=335;break}B=0;ya(425,U|0)|0;Tb=B;B=0;if(Tb&1){Tb=Rb()|0;Sb=Q;Yua(U);ic=Sb;jc=Tb;break}else{Yua(U);k[T>>2]=27468;k[E>>2]=27488;k[Vb>>2]=27560;Yua(xa);Ava(Vb);vva(E);Xb=lb;break g}}else la=335;while(0);if((la|0)==335){Ob=Rb()|0;ic=Q;jc=Ob}k[T>>2]=27468;k[E>>2]=27488;k[Vb>>2]=27560;Yua(xa);Ava(Vb);vva(E);ma=ic;na=jc;Qb(na|0)}while(0);ec=gc;fc=hc;vva(E);Qb(fc|0)}else{if(!gb){Xb=0;break g}Vb=V+56|0;Jb=V+4|0;k[V>>2]=27524;k[Vb>>2]=27544;B=0;wa(508,V+56|0,Jb|0);Ga=B;B=0;if(Ga&1){Ga=Rb()|0;kc=Q;lc=Ga;vva(Vb);Qb(lc|0)}k[V+128>>2]=0;k[V+132>>2]=-1;k[V>>2]=27468;k[Vb>>2]=27488;B=0;va(448,Jb|0);Ga=B;B=0;do if(Ga&1){Ob=Rb()|0;mc=Q;nc=Ob}else{k[Jb>>2]=27560;Ob=V+36|0;k[Ob>>2]=0;k[Ob+4>>2]=0;k[Ob+8>>2]=0;k[Ob+12>>2]=0;k[V+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,Jb|0,l|0);Nb=B;B=0;if(Nb&1){Nb=Rb()|0;Lb=Q;Yua(l);Yua(Ob);Ava(Jb);mc=Lb;nc=Nb;break}Yua(l);k[V+(k[(k[V>>2]|0)+-12>>2]|0)+12>>2]=50;Nb=V+(k[(k[V>>2]|0)+-12>>2]|0)+4|0;k[Nb>>2]=k[Nb>>2]&-177|32;B=0;Nb=Ia(40,V|0,148355,33)|0;Lb=B;B=0;do if(!(Lb&1)){B=0;Tb=Sa(1,Nb|0,+Zb)|0;Sb=B;B=0;if(Sb&1){la=355;break}B=0;Sb=Ia(40,Tb|0,148278,3)|0;Tb=B;B=0;if(Tb&1){la=355;break}B=0;Tb=Sa(1,Sb|0,+h)|0;Sb=B;B=0;if(Sb&1){la=355;break}B=0;Ia(40,Tb|0,149177,1)|0;Tb=B;B=0;if(Tb&1){la=355;break}B=0;wa(510,W|0,Jb|0);Tb=B;B=0;if(Tb&1){la=355;break}B=0;ya(425,W|0)|0;Tb=B;B=0;if(Tb&1){Tb=Rb()|0;Sb=Q;Yua(W);oc=Sb;pc=Tb;break}else{Yua(W);k[V>>2]=27468;k[Vb>>2]=27488;k[Jb>>2]=27560;Yua(Ob);Ava(Jb);vva(Vb);Xb=0;break g}}else la=355;while(0);if((la|0)==355){Nb=Rb()|0;oc=Q;pc=Nb}k[V>>2]=27468;k[Vb>>2]=27488;k[Jb>>2]=27560;Yua(Ob);Ava(Jb);vva(Vb);ma=oc;na=pc;Qb(na|0)}while(0);kc=mc;lc=nc;vva(Vb);Qb(lc|0)}}while(0);Kb=O+56|0;Wb=O+4|0;k[O>>2]=27524;k[Kb>>2]=27544;B=0;wa(508,O+56|0,Wb|0);Jb=B;B=0;if(Jb&1){Jb=Rb()|0;qc=Q;rc=Jb;vva(Kb);Qb(rc|0)}k[O+128>>2]=0;k[O+132>>2]=-1;k[O>>2]=27468;k[Kb>>2]=27488;B=0;va(448,Wb|0);Jb=B;B=0;do if(Jb&1){Ga=Rb()|0;sc=Q;tc=Ga}else{k[Wb>>2]=27560;Ga=O+36|0;k[Ga>>2]=0;k[Ga+4>>2]=0;k[Ga+8>>2]=0;k[Ga+12>>2]=0;k[O+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,Wb|0,l|0);gb=B;B=0;if(gb&1){gb=Rb()|0;E=Q;Yua(l);Yua(Ga);Ava(Wb);sc=E;tc=gb;break}Yua(l);B=0;gb=Ia(40,O|0,148282,29)|0;E=B;B=0;h:do if(E&1)la=303;else{B=0;Xa(239,gb|0,0)|0;Nb=B;B=0;if(Nb&1){la=303;break}Nb=Ab(20)|0;B=0;eb(502,P|0,148129,80);Lb=B;B=0;do if(!(Lb&1)){B=0;eb(502,R|0,148210,11);xa=B;B=0;if(xa&1){xa=Rb()|0;Tb=Q;Yua(P);uc=Tb;vc=xa;break}B=0;wa(510,S|0,Wb|0);xa=B;B=0;if(xa&1){xa=Rb()|0;wc=1;xc=Q;yc=xa}else{B=0;ua(163,Nb|0,P|0,R|0,114,S|0);xa=B;B=0;if(xa&1)zc=1;else{B=0;eb(503,Nb|0,1240,229);B=0;zc=0}xa=Rb()|0;Tb=Q;Yua(S);wc=zc;xc=Tb;yc=xa}Yua(R);Yua(P);if(wc){uc=xc;vc=yc}else{Ac=xc;Bc=yc;break h}}else{xa=Rb()|0;uc=Q;vc=xa}while(0);zb(Nb|0);Ac=uc;Bc=vc}while(0);if((la|0)==303){gb=Rb()|0;Ac=Q;Bc=gb}k[O>>2]=27468;k[Kb>>2]=27488;k[Wb>>2]=27560;Yua(Ga);Ava(Wb);vva(Kb);ma=Ac;na=Bc;Qb(na|0)}while(0);qc=sc;rc=tc;vva(Kb);Qb(rc|0)}while(0);oa=Xb&1;i[a>>0]=oa;r=j;return}function _oa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;e=r;r=r+16|0;d=e+4|0;c=e;k[c>>2]=0;cO(f,d,198);hO(f,c,0,176);if((k[d>>2]|0)>0){f=0;do{if((th(a)|0)>0){b=0;do{h=qh(a,b)|0;rd[k[(k[h>>2]|0)+96>>2]&511](h,g,k[(k[c>>2]|0)+(f<<2)>>2]|0,f);b=b+1|0}while((b|0)<(th(a)|0))}f=f+1|0}while((f|0)<(k[d>>2]|0))}d=k[c>>2]|0;if(!d){r=e;return}Tqa(d);r=e;return}function $oa(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;f=r;r=r+16|0;e=f+4|0;c=f;k[c>>2]=0;cO(g,e,198);hO(g,c,0,176);g=Qqa(8)|0;j=k[e>>2]|0;B=0;l=ya(429,d|0)|0;d=B;B=0;a:do if(!(d&1)?(m=ma(l,j)|0,B=0,va(485,g|0),n=B,B=0,!(n&1)):0){do if(k[g>>2]|0){B=0;n=ya(423,4)|0;o=B;B=0;if(o&1)break a;B=0;eb(505,n|0,m|0,0);o=B;B=0;if(!(o&1)){k[g+4>>2]=n;break}o=Rb()|0;p=Q;Sqa(n);q=p;s=o;Sqa(g);Qb(s|0)}while(0);if((k[e>>2]|0)>0){m=0;do{if((th(b)|0)>0){o=0;do{p=qh(b,o)|0;Uc[k[(k[p>>2]|0)+184>>2]&63](p,g,k[(k[c>>2]|0)+(m<<2)>>2]|0,m,h,i);o=o+1|0}while((o|0)<(th(b)|0))}m=m+1|0}while((m|0)<(k[e>>2]|0))}if(k[g>>2]|0){m=k[k[g+4>>2]>>2]|0;Ec[k[(k[m>>2]|0)+12>>2]&1023](m)}m=k[c>>2]|0;if(!m){k[a>>2]=g;r=f;return}Tqa(m);k[a>>2]=g;r=f;return}while(0);f=Rb()|0;q=Q;s=f;Sqa(g);Qb(s|0)}function apa(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,l=0;f=r;r=r+16|0;e=f;k[e>>2]=0;$oa(e,b,0,d,0,0,g,h,i);i=k[e>>2]|0;if(!(k[i>>2]|0))if(!i){j=0;k[a>>2]=j;r=f;return}else l=0;else{e=k[k[i+4>>2]>>2]|0;l=Hc[k[(k[e>>2]|0)+52>>2]&511](e)|0}if((k[i>>2]|0)!=0?(e=k[i+4>>2]|0,(e|0)!=0):0){h=k[e>>2]|0;if(h)Ec[k[(k[h>>2]|0)+4>>2]&1023](h);Sqa(e)}Sqa(i);j=l;k[a>>2]=j;r=f;return}function bpa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=r;r=r+16|0;d=c+4|0;e=c;k[e>>2]=0;f=a+44|0;cO(k[f>>2]|0,d,198);hO(k[f>>2]|0,e,0,176);if((k[d>>2]|0)>0){f=a+20|0;a=0;do{if((th(k[f>>2]|0)|0)>0){g=0;do{h=qh(k[f>>2]|0,g)|0;rd[k[(k[h>>2]|0)+420>>2]&511](h,b,k[(k[e>>2]|0)+(a<<2)>>2]|0,a);g=g+1|0}while((g|0)<(th(k[f>>2]|0)|0))}a=a+1|0}while((a|0)<(k[d>>2]|0))}d=k[e>>2]|0;if(!d){r=c;return}Tqa(d);r=c;return}function cpa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0.0,ba=0,ca=0,da=0.0,ea=0.0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0;g=r;r=r+528|0;f=g+512|0;d=g+508|0;i=g+504|0;j=g+500|0;l=g+352|0;m=g+488|0;n=g+216|0;o=g+200|0;q=g+48|0;s=g+36|0;u=g+64|0;v=g+24|0;w=g+12|0;x=g;k[j>>2]=0;a:do if(BY()|0){y=l+56|0;z=l+4|0;k[l>>2]=27524;k[y>>2]=27544;B=0;wa(508,l+56|0,z|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;D=A;vva(y);Qb(D|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[y>>2]=27488;B=0;va(448,z|0);A=B;B=0;do if(A&1){E=Rb()|0;F=Q;G=E}else{k[z>>2]=27560;E=l+36|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[l+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,z|0,f|0);H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(f);Yua(E);Ava(z);F=I;G=H;break}Yua(f);B=0;Ia(40,l|0,148389,36)|0;H=B;B=0;do if(!(H&1)?(B=0,wa(510,m|0,z|0),I=B,B=0,!(I&1)):0){B=0;ya(425,m|0)|0;I=B;B=0;if(I&1){I=Rb()|0;J=Q;Yua(m);K=I;L=J;break}else{Yua(m);k[l>>2]=27468;k[y>>2]=27488;k[z>>2]=27560;Yua(E);Ava(z);vva(y);break a}}else M=14;while(0);if((M|0)==14){H=Rb()|0;K=H;L=Q}k[l>>2]=27468;k[y>>2]=27488;k[z>>2]=27560;Yua(E);Ava(z);vva(y);N=K;O=L;Qb(N|0)}while(0);C=F;D=G;vva(y);Qb(D|0)}while(0);cO(h,d,198);hO(h,j,0,176);D=nn(e)|0;cO(h,i,477);h=n_(k[i>>2]|0)|0;i=k[d>>2]|0;e=Rqa(i>>>0>1073741823?-1:i<<2)|0;G=Rqa(i>>>0>536870911?-1:i<<3)|0;F=G;C=Qqa(8)|0;L=ma(i,D)|0;b:do if((i|0)>0){K=C;l=C;m=L;z=0;while(1){B=0;va(485,K|0);A=B;B=0;if(A&1){P=l;M=33;break}if(k[l>>2]|0){B=0;A=ya(423,4)|0;H=B;B=0;if(H&1){P=l;M=33;break}B=0;eb(505,A|0,m|0,0);H=B;B=0;if(H&1){R=l;S=A;M=31;break}k[l+4>>2]=A}k[e+(z<<2)>>2]=l;z=z+1|0;A=k[d>>2]|0;H=Qqa(8)|0;J=ma(A,D)|0;if((z|0)>=(A|0)){T=H;U=H;V=J;break b}else{K=H;l=H;m=J}}if((M|0)==31){m=Rb()|0;l=Q;Sqa(S);W=R;X=l;Y=m}else if((M|0)==33){m=Rb()|0;W=P;X=Q;Y=m}Sqa(W);N=Y;O=X;Qb(N|0)}else{T=C;U=C;V=L}while(0);B=0;va(485,U|0);U=B;B=0;c:do if(U&1)M=38;else{do if(k[T>>2]|0){B=0;L=ya(423,4)|0;C=B;B=0;if(C&1){M=38;break c}B=0;eb(505,L|0,V|0,0);C=B;B=0;if(C&1){C=Rb()|0;X=Q;Sqa(L);Z=X;_=C;break c}else{k[T+4>>2]=L;break}}while(0);if((k[d>>2]|0)>0){L=0;do{C=e+(L<<2)|0;if((th(c)|0)>0){X=0;do{Y=qh(c,X)|0;Dc[k[(k[h>>2]|0)+56>>2]&255](h,k[C>>2]|0,Y,k[(k[j>>2]|0)+(L<<2)>>2]|0,L);X=X+1|0}while((X|0)<(th(c)|0))}X=k[C>>2]|0;if((k[X>>2]|0)!=0?(E=k[k[X+4>>2]>>2]|0,Ec[k[(k[E>>2]|0)+12>>2]&1023](E),E=k[C>>2]|0,(k[E>>2]|0)!=0):0){X=k[k[E+4>>2]>>2]|0;aa=+id[k[(k[X>>2]|0)+64>>2]&63](X,0)}else aa=0.0;p[G+(L<<3)>>3]=aa;L=L+1|0;X=k[d>>2]|0}while((L|0)<(X|0));ba=X;if((ba|0)>0){L=T+4|0;X=0;do{E=e+(X<<2)|0;Y=k[E>>2]|0;if(!(k[T>>2]|0))ca=Y;else{W=k[k[L>>2]>>2]|0;Xc[k[(k[W>>2]|0)+44>>2]&63](W,k[k[Y+4>>2]>>2]|0,1.0);ca=k[E>>2]|0}if(ca){if((k[ca>>2]|0)!=0?(E=k[ca+4>>2]|0,(E|0)!=0):0){Y=k[E>>2]|0;if(Y)Ec[k[(k[Y>>2]|0)+4>>2]&1023](Y);Sqa(E)}Sqa(ca)}X=X+1|0}while((X|0)<(k[d>>2]|0))}}if((k[T>>2]|0)!=0?(X=k[k[T+4>>2]>>2]|0,da=+id[k[(k[X>>2]|0)+64>>2]&63](X,0),!(da<=0.0)):0){ea=+$(+da);p[t>>3]=ea;X=k[t+4>>2]|0;if(!(X>>>0>2146435072|(X|0)==2146435072&(k[t>>2]|0)>>>0>0)){if(h)Ec[k[(k[h>>2]|0)+4>>2]&1023](h);Tqa(e);X=k[j>>2]|0;if(X)Tqa(X);k[j>>2]=0;if(!b)Tqa(G);else k[b>>2]=F;if(!a){r=g;return}k[a>>2]=T;r=g;return}X=u+56|0;L=u+4|0;k[u>>2]=27524;k[X>>2]=27544;B=0;wa(508,u+56|0,L|0);E=B;B=0;if(E&1){E=Rb()|0;fa=Q;ga=E;vva(X);Qb(ga|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[X>>2]=27488;B=0;va(448,L|0);E=B;B=0;do if(E&1){Y=Rb()|0;ha=Q;ia=Y}else{k[L>>2]=27560;Y=u+36|0;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;k[u+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,L|0,f|0);W=B;B=0;if(W&1){W=Rb()|0;P=Q;Yua(f);Yua(Y);Ava(L);ha=P;ia=W;break}Yua(f);B=0;W=Ia(40,u|0,148545,37)|0;P=B;B=0;d:do if(!(P&1)?(B=0,Xa(239,W|0,0)|0,R=B,B=0,!(R&1)):0){R=Ab(20)|0;B=0;eb(502,v|0,148465,72);S=B;B=0;do if(!(S&1)){B=0;eb(502,w|0,148538,6);D=B;B=0;if(D&1){D=Rb()|0;i=Q;Yua(v);ja=i;ka=D;break}B=0;wa(510,x|0,L|0);D=B;B=0;if(D&1){D=Rb()|0;la=1;na=D;oa=Q}else{B=0;ua(163,R|0,v|0,w|0,58,x|0);D=B;B=0;if(D&1)pa=1;else{B=0;eb(503,R|0,1240,229);B=0;pa=0}D=Rb()|0;i=Q;Yua(x);la=pa;na=D;oa=i}Yua(w);Yua(v);if(la){ja=oa;ka=na}else{qa=na;ra=oa;break d}}else{i=Rb()|0;ja=Q;ka=i}while(0);zb(R|0);qa=ka;ra=ja}else M=96;while(0);if((M|0)==96){W=Rb()|0;qa=W;ra=Q}k[u>>2]=27468;k[X>>2]=27488;k[L>>2]=27560;Yua(Y);Ava(L);vva(X);N=qa;O=ra;Qb(N|0)}while(0);fa=ha;ga=ia;vva(X);Qb(ga|0)}L=n+56|0;E=n+4|0;k[n>>2]=27524;k[L>>2]=27544;B=0;wa(508,n+56|0,E|0);W=B;B=0;if(W&1){W=Rb()|0;sa=Q;ta=W;vva(L);Qb(ta|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[L>>2]=27488;B=0;va(448,E|0);W=B;B=0;do if(W&1){P=Rb()|0;xa=Q;za=P}else{k[E>>2]=27560;P=n+36|0;k[P>>2]=0;k[P+4>>2]=0;k[P+8>>2]=0;k[P+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,E|0,f|0);C=B;B=0;if(C&1){C=Rb()|0;S=Q;Yua(f);Yua(P);Ava(E);xa=S;za=C;break}Yua(f);B=0;C=Ia(40,n|0,148426,38)|0;S=B;B=0;e:do if(!(S&1)?(B=0,Xa(239,C|0,0)|0,i=B,B=0,!(i&1)):0){i=Ab(20)|0;B=0;eb(502,o|0,148465,72);D=B;B=0;do if(!(D&1)){B=0;eb(502,q|0,148538,6);m=B;B=0;if(m&1){m=Rb()|0;l=Q;Yua(o);Aa=l;Ba=m;break}B=0;wa(510,s|0,E|0);m=B;B=0;if(m&1){m=Rb()|0;Ca=Q;Da=1;Ea=m}else{B=0;ua(163,i|0,o|0,q|0,57,s|0);m=B;B=0;if(m&1)Fa=1;else{B=0;eb(503,i|0,1240,229);B=0;Fa=0}m=Rb()|0;l=Q;Yua(s);Ca=l;Da=Fa;Ea=m}Yua(q);Yua(o);if(Da){Aa=Ca;Ba=Ea}else{Ga=Ea;Ha=Ca;break e}}else{m=Rb()|0;Aa=Q;Ba=m}while(0);zb(i|0);Ga=Ba;Ha=Aa}else M=72;while(0);if((M|0)==72){C=Rb()|0;Ga=C;Ha=Q}k[n>>2]=27468;k[L>>2]=27488;k[E>>2]=27560;Yua(P);Ava(E);vva(L);N=Ga;O=Ha;Qb(N|0)}while(0);sa=xa;ta=za;vva(L);Qb(ta|0)}while(0);if((M|0)==38){M=Rb()|0;Z=Q;_=M}Sqa(T);N=_;O=Z;Qb(N|0)}function dpa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;g=r;r=r+16|0;f=g;k[f>>2]=0;cpa(f,b,c,0,e,0,0,h);h=k[f>>2]|0;if(!(k[h>>2]|0)){i=h;j=0}else{e=k[k[h+4>>2]>>2]|0;h=Hc[k[(k[e>>2]|0)+52>>2]&511](e)|0;i=k[f>>2]|0;j=h}if(!i){k[a>>2]=j;r=g;return}if((k[i>>2]|0)!=0?(h=k[i+4>>2]|0,(h|0)!=0):0){f=k[h>>2]|0;if(f)Ec[k[(k[f>>2]|0)+4>>2]&1023](f);Sqa(h)}Sqa(i);k[a>>2]=j;r=g;return}function epa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0.0,hb=0.0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0.0,vb=0.0,wb=0.0,xb=0.0,yb=0,Bb=0,Cb=0.0,Db=0.0,Eb=0.0,Fb=0.0,Gb=0.0,Hb=0.0,Ib=0.0,Jb=0.0,Kb=0.0,Lb=0.0,Mb=0.0,Nb=0.0,Ob=0.0,Pb=0.0,Sb=0.0,Tb=0.0,Ub=0.0,Vb=0.0,Wb=0.0,Xb=0.0,Yb=0.0,Zb=0,_b=0,$b=0.0,ac=0.0,bc=0.0,cc=0.0,dc=0.0,ec=0.0,fc=0.0,gc=0.0,hc=0.0,ic=0.0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,hd=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0;g=r;r=r+1776|0;h=g+1760|0;i=g+1696|0;j=g+1560|0;l=g+1748|0;m=g+1408|0;n=g+1736|0;o=g+1256|0;q=g+1724|0;s=g+1120|0;u=g+1712|0;v=g+968|0;w=g+1700|0;x=g+1544|0;y=g+1392|0;z=g+816|0;A=g+1104|0;C=g+664|0;D=g+952|0;E=g+800|0;F=g+648|0;H=g+512|0;I=g+224|0;J=g+376|0;K=g+72|0;L=g+60|0;M=g+48|0;N=g+240|0;O=g+36|0;P=g+88|0;R=g+24|0;S=g+12|0;T=g;U=k[b+24>>2]|0;V=k[b+28>>2]|0;W=b+8|0;X=k[b+20>>2]|0;Y=k[b+16>>2]|0;k[i>>2]=0;Z=Rqa(U>>>0>536870911?-1:U<<3)|0;_=Rqa(V>>>0>536870911?-1:V<<3)|0;ba=j+56|0;ca=j+4|0;k[j>>2]=27524;k[ba>>2]=27544;B=0;wa(508,j+56|0,ca|0);da=B;B=0;if(da&1){da=Rb()|0;ea=Q;fa=da;vva(ba);Qb(fa|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[ba>>2]=27488;B=0;va(448,ca|0);da=B;B=0;do if(da&1){ga=Rb()|0;ha=Q;ia=ga}else{k[ca>>2]=27560;ga=j+36|0;k[ga>>2]=0;k[ga+4>>2]=0;k[ga+8>>2]=0;k[ga+12>>2]=0;k[j+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,ca|0,h|0);ja=B;B=0;if(ja&1){ja=Rb()|0;ka=Q;Yua(h);Yua(ga);Ava(ca);ha=ka;ia=ja;break}Yua(h);B=0;Ia(40,j|0,149177,1)|0;ja=B;B=0;do if(!(ja&1)?(B=0,wa(510,l|0,ca|0),ka=B,B=0,!(ka&1)):0){B=0;ya(425,l|0)|0;ka=B;B=0;if(ka&1){ka=Rb()|0;la=Q;Yua(l);ma=la;na=ka;break}Yua(l);k[j>>2]=27468;k[ba>>2]=27488;k[ca>>2]=27560;Yua(ga);Ava(ca);vva(ba);ka=m+56|0;la=m+4|0;k[m>>2]=27524;k[ka>>2]=27544;B=0;wa(508,m+56|0,la|0);oa=B;B=0;if(oa&1){oa=Rb()|0;pa=Q;qa=oa;vva(ka);Qb(qa|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[ka>>2]=27488;B=0;va(448,la|0);oa=B;B=0;do if(oa&1){ra=Rb()|0;sa=Q;ta=ra}else{k[la>>2]=27560;ra=m+36|0;k[ra>>2]=0;k[ra+4>>2]=0;k[ra+8>>2]=0;k[ra+12>>2]=0;k[m+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,la|0,h|0);xa=B;B=0;if(xa&1){xa=Rb()|0;za=Q;Yua(h);Yua(ra);Ava(la);sa=za;ta=xa;break}Yua(h);B=0;Ia(40,m|0,148583,63)|0;xa=B;B=0;do if(!(xa&1)?(B=0,wa(510,n|0,la|0),za=B,B=0,!(za&1)):0){B=0;ya(425,n|0)|0;za=B;B=0;if(za&1){za=Rb()|0;Aa=Q;Yua(n);Ba=Aa;Ca=za;break}Yua(n);k[m>>2]=27468;k[ka>>2]=27488;k[la>>2]=27560;Yua(ra);Ava(la);vva(ka);if((U|0)<=0){Tqa(_);k[a>>2]=Z;r=g;return}za=o+56|0;Aa=o+4|0;Da=o+56|0;Ea=o+128|0;Fa=o+132|0;Ga=o+36|0;Ha=o+52|0;Ja=s+56|0;Ka=s+4|0;La=s+56|0;Ma=s+128|0;Na=s+132|0;Oa=s+36|0;Pa=s+52|0;Qa=z+56|0;Ra=z+4|0;Ta=z+56|0;Ua=z+128|0;Va=z+132|0;Wa=z+36|0;Ya=z+52|0;Za=(V|0)>0;_a=H+56|0;$a=H+4|0;ab=H+56|0;bb=H+128|0;cb=H+132|0;db=H+36|0;fb=H+52|0;gb=+p[b>>3];hb=+p[W>>3];ib=N+56|0;jb=N+4|0;kb=N+56|0;lb=N+128|0;mb=N+132|0;nb=N+36|0;ob=N+52|0;pb=0;a:while(1){k[o>>2]=27524;k[za>>2]=27544;B=0;wa(508,Da|0,Aa|0);qb=B;B=0;if(qb&1){rb=36;break}k[Ea>>2]=0;k[Fa>>2]=-1;k[o>>2]=27468;k[za>>2]=27488;B=0;va(448,Aa|0);qb=B;B=0;if(qb&1){rb=37;break}k[Aa>>2]=27560;k[Ga>>2]=0;k[Ga+4>>2]=0;k[Ga+8>>2]=0;k[Ga+12>>2]=0;k[Ha>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,Aa|0,h|0);qb=B;B=0;if(qb&1){rb=35;break}Yua(h);B=0;qb=Ia(40,o|0,148647,28)|0;sb=B;B=0;if(sb&1){rb=76;break}sb=pb;pb=pb+1|0;B=0;tb=Xa(242,qb|0,pb|0)|0;qb=B;B=0;if(qb&1){rb=76;break}B=0;qb=Ia(40,tb|0,148676,1)|0;tb=B;B=0;if(tb&1){rb=76;break}B=0;tb=Xa(242,qb|0,U|0)|0;qb=B;B=0;if(qb&1){rb=76;break}B=0;Ia(40,tb|0,148678,33)|0;tb=B;B=0;if(tb&1){rb=76;break}B=0;wa(510,q|0,Aa|0);tb=B;B=0;if(tb&1){rb=76;break}B=0;ya(425,q|0)|0;tb=B;B=0;if(tb&1){rb=77;break}Yua(q);k[o>>2]=27468;k[za>>2]=27488;k[Aa>>2]=27560;Yua(Ga);Ava(Aa);vva(za);k[46652+(k[(k[11663]|0)+-12>>2]|0)+8>>2]=5;k[s>>2]=27524;k[Ja>>2]=27544;B=0;wa(508,La|0,Ka|0);tb=B;B=0;if(tb&1){rb=51;break}k[Ma>>2]=0;k[Na>>2]=-1;k[s>>2]=27468;k[Ja>>2]=27488;B=0;va(448,Ka|0);tb=B;B=0;if(tb&1){rb=52;break}k[Ka>>2]=27560;k[Oa>>2]=0;k[Oa+4>>2]=0;k[Oa+8>>2]=0;k[Oa+12>>2]=0;k[Pa>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,Ka|0,h|0);tb=B;B=0;if(tb&1){rb=50;break}Yua(h);B=0;tb=Ia(40,s|0,148712,5)|0;qb=B;B=0;if(qb&1){rb=79;break}k[tb+(k[(k[tb>>2]|0)+-12>>2]|0)+12>>2]=9;B=0;qb=Sa(1,tb|0,0.0)|0;tb=B;B=0;if(tb&1){rb=79;break}B=0;Ia(40,qb|0,148718,3)|0;qb=B;B=0;if(qb&1){rb=79;break}B=0;wa(510,u|0,Ka|0);qb=B;B=0;if(qb&1){rb=79;break}B=0;ya(425,u|0)|0;qb=B;B=0;if(qb&1){rb=80;break}Yua(u);k[s>>2]=27468;k[Ja>>2]=27488;k[Ka>>2]=27560;Yua(Oa);Ava(Ka);vva(Ja);ub=+gd[e&7](i,c,f);vb=+$(+ub);p[t>>3]=vb;qb=k[t+4>>2]|0;if(qb>>>0>2146435072|(qb|0)==2146435072&(k[t>>2]|0)>>>0>0){rb=61;break}k[z>>2]=27524;k[Qa>>2]=27544;B=0;wa(508,Ta|0,Ra|0);qb=B;B=0;if(qb&1){rb=94;break}k[Ua>>2]=0;k[Va>>2]=-1;k[z>>2]=27468;k[Qa>>2]=27488;B=0;va(448,Ra|0);qb=B;B=0;if(qb&1){rb=95;break}k[Ra>>2]=27560;k[Wa>>2]=0;k[Wa+4>>2]=0;k[Wa+8>>2]=0;k[Wa+12>>2]=0;k[Ya>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,Ra|0,h|0);qb=B;B=0;if(qb&1){rb=93;break}Yua(h);B=0;qb=Ia(40,z|0,148712,5)|0;tb=B;B=0;if(tb&1){rb=106;break}k[qb+(k[(k[qb>>2]|0)+-12>>2]|0)+12>>2]=9;B=0;tb=Sa(1,qb|0,1.0)|0;qb=B;B=0;if(qb&1){rb=106;break}B=0;Ia(40,tb|0,148718,3)|0;tb=B;B=0;if(tb&1){rb=106;break}B=0;wa(510,A|0,Ra|0);tb=B;B=0;if(tb&1){rb=106;break}B=0;ya(425,A|0)|0;tb=B;B=0;if(tb&1){rb=107;break}Yua(A);k[z>>2]=27468;k[Qa>>2]=27488;k[Ra>>2]=27560;Yua(Wa);Ava(Ra);vva(Qa);if(Za){tb=k[i>>2]|0;qb=0;do{p[_+(qb<<3)>>3]=+p[c+(qb<<3)>>3]+ +p[tb+(qb<<3)>>3];qb=qb+1|0}while((qb|0)!=(V|0))}vb=+id[d&63](_,f);wb=+$(+vb);p[t>>3]=wb;qb=k[t+4>>2]|0;if(qb>>>0>2146435072|(qb|0)==2146435072&(k[t>>2]|0)>>>0>0){rb=110;break}qb=Y+(sb<<3)|0;wb=+p[qb>>3];xb=+$(+wb);p[t>>3]=xb;tb=k[t+4>>2]|0;if(vb/ub<wb&(tb>>>0<2146435072|(tb|0)==2146435072&(k[t>>2]|0)>>>0<1)){tb=k[i>>2]|0;if(!Za){if(tb)rb=136}else{yb=0;do{Bb=c+(yb<<3)|0;p[Bb>>3]=+p[Bb>>3]+ +p[tb+(yb<<3)>>3];yb=yb+1|0}while((yb|0)!=(V|0));rb=136}if((rb|0)==136){rb=0;Tqa(tb)}k[i>>2]=0;p[Z+(sb<<3)>>3]=vb}else{k[H>>2]=27524;k[_a>>2]=27544;B=0;wa(508,ab|0,$a|0);yb=B;B=0;if(yb&1){rb=143;break}k[bb>>2]=0;k[cb>>2]=-1;k[H>>2]=27468;k[_a>>2]=27488;B=0;va(448,$a|0);yb=B;B=0;if(yb&1){rb=144;break}k[$a>>2]=27560;k[db>>2]=0;k[db+4>>2]=0;k[db+8>>2]=0;k[db+12>>2]=0;k[fb>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,$a|0,h|0);yb=B;B=0;if(yb&1){rb=142;break}Yua(h);B=0;yb=Ia(40,H|0,148712,5)|0;Bb=B;B=0;if(Bb&1){rb=155;break}k[yb+(k[(k[yb>>2]|0)+-12>>2]|0)+12>>2]=9;B=0;Bb=Sa(1,yb|0,.3819660112501051)|0;yb=B;B=0;if(yb&1){rb=155;break}B=0;Ia(40,Bb|0,148718,3)|0;Bb=B;B=0;if(Bb&1){rb=155;break}B=0;wa(510,I|0,$a|0);Bb=B;B=0;if(Bb&1){rb=155;break}B=0;ya(425,I|0)|0;Bb=B;B=0;if(Bb&1){rb=156;break}Yua(I);k[H>>2]=27468;k[_a>>2]=27488;k[$a>>2]=27560;Yua(db);Ava($a);vva(_a);if(Za){Bb=k[i>>2]|0;yb=0;do{p[_+(yb<<3)>>3]=+p[c+(yb<<3)>>3]+ +p[Bb+(yb<<3)>>3]*.3819660112501051;yb=yb+1|0}while((yb|0)!=(V|0))}wb=+id[d&63](_,f);xb=+$(+wb);p[t>>3]=xb;yb=k[t+4>>2]|0;if(yb>>>0>2146435072|(yb|0)==2146435072&(k[t>>2]|0)>>>0>0){rb=159;break}xb=+p[qb>>3];Cb=+$(+xb);p[t>>3]=Cb;yb=k[t+4>>2]|0;b:do if(!(wb/ub<xb)|(yb>>>0>2146435072|(yb|0)==2146435072&(k[t>>2]|0)>>>0>0)){Bb=X+(sb<<2)|0;Cb=0.0;Db=wb;Eb=wb;Fb=wb;Gb=0.0;tb=1;Hb=3.333902507043754e-05;Ib=6.667805014087508e-05;Jb=.3819660112501051;Kb=.3819660112501051;Lb=.3819660112501051;Mb=.5;Nb=1.0;Ob=0.0;while(1){do if(+aa(+(Gb*Gb))>Hb){Pb=Lb-Jb;Sb=Fb-Eb;Tb=Lb-Kb;Ub=Fb-Db;Vb=Sb*(Pb*Pb)-Tb*Tb*Ub;Wb=Sb*(Pb*2.0)-Tb*2.0*Ub;Ub=Wb>0.0?-Vb:Vb;Vb=+aa(+(Wb*Wb));Wb=Gb*(Vb*.5);if(!(+aa(+(Ub*Ub))<+aa(+(Wb*Wb)))){rb=190;break}if(!(Ub>(Ob-Lb)*Vb+1.4901161193847656e-08)){rb=190;break}if(!(Ub<(Nb-Lb)*Vb+-1.4901161193847656e-08)){rb=190;break}Wb=Ub/Vb;Vb=Lb+Wb;if(!(Vb-Ob<Ib|Nb-Vb<Ib)){Xb=Wb;Yb=Cb;break}Xb=Hb*(Mb-Lb<0.0?-1.0:1.0);Yb=Cb}else rb=190;while(0);if((rb|0)==190){rb=0;Wb=(!(Lb>=Mb)?Nb:Ob)-Lb;Xb=Wb*.3819660112501051;Yb=Wb}Wb=+aa(+(Xb*Xb));Vb=Lb+(Xb<0.0?-1.0:1.0)*(Wb>Hb?Wb:Hb);k[N>>2]=27524;k[ib>>2]=27544;B=0;wa(508,kb|0,jb|0);Zb=B;B=0;if(Zb&1){rb=195;break a}k[lb>>2]=0;k[mb>>2]=-1;k[N>>2]=27468;k[ib>>2]=27488;B=0;va(448,jb|0);Zb=B;B=0;if(Zb&1){rb=196;break a}k[jb>>2]=27560;k[nb>>2]=0;k[nb+4>>2]=0;k[nb+8>>2]=0;k[nb+12>>2]=0;k[ob>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,jb|0,h|0);Zb=B;B=0;if(Zb&1){rb=194;break a}Yua(h);B=0;Zb=Ia(40,N|0,148712,5)|0;_b=B;B=0;if(_b&1){rb=207;break a}k[Zb+(k[(k[Zb>>2]|0)+-12>>2]|0)+12>>2]=9;B=0;_b=Sa(1,Zb|0,+Vb)|0;Zb=B;B=0;if(Zb&1){rb=207;break a}B=0;Ia(40,_b|0,148718,3)|0;_b=B;B=0;if(_b&1){rb=207;break a}B=0;wa(510,O|0,jb|0);_b=B;B=0;if(_b&1){rb=207;break a}B=0;ya(425,O|0)|0;_b=B;B=0;if(_b&1){rb=208;break a}Yua(O);k[N>>2]=27468;k[ib>>2]=27488;k[jb>>2]=27560;Yua(nb);Ava(jb);vva(ib);if(Za){_b=k[i>>2]|0;Zb=0;do{p[_+(Zb<<3)>>3]=+p[c+(Zb<<3)>>3]+Vb*+p[_b+(Zb<<3)>>3];Zb=Zb+1|0}while((Zb|0)!=(V|0))}Wb=+id[d&63](_,f);Ub=+$(+Wb);p[t>>3]=Ub;Zb=k[t+4>>2]|0;if(Zb>>>0>2146435072|(Zb|0)==2146435072&(k[t>>2]|0)>>>0>0){rb=211;break a}tb=tb+1|0;do if(!(Wb<=Fb)){Zb=Vb<Lb;Ub=Zb?Vb:Ob;Tb=Zb?Nb:Vb;if(Kb==Lb|Wb<=Eb){$b=Eb;ac=Wb;bc=Fb;cc=Kb;dc=Vb;ec=Lb;fc=Tb;gc=Ub;break}Zb=Jb==Kb|(Jb==Lb|Wb<=Db);$b=Zb?Wb:Db;ac=Eb;bc=Fb;cc=Zb?Vb:Jb;dc=Kb;ec=Lb;fc=Tb;gc=Ub}else{Zb=!(Vb>=Lb);$b=Eb;ac=Fb;bc=Wb;cc=Kb;dc=Lb;ec=Vb;fc=Zb?Lb:Nb;gc=Zb?Ob:Lb}while(0);Mb=(gc+fc)*.5;Vb=ec*ec;Wb=+$(+(+aa(+Vb)));Hb=Vb==-G?G:Wb*1.4901161193847656e-08+3.3333333333333335e-05;Ib=Hb*2.0;Wb=ec-Mb;if(+aa(+(Wb*Wb))<Ib-(fc-gc)*.5){hc=bc;ic=ec;break b}if((tb|0)>=(k[Bb>>2]|0)){hc=bc;ic=ec;break b}Wb=+p[qb>>3];Vb=+$(+Wb);p[t>>3]=Vb;Zb=k[t+4>>2]|0;if(bc/ub<Wb&(gc==0.0&(Zb>>>0<2146435072|(Zb|0)==2146435072&(k[t>>2]|0)>>>0<1))){hc=bc;ic=ec;break}else{Cb=Xb;Db=$b;Eb=ac;Fb=bc;Gb=Yb;Jb=cc;Kb=dc;Lb=ec;Nb=fc;Ob=gc}}}else{hc=wb;ic=.3819660112501051}while(0);qb=hc>ub;wb=qb?ub:hc;yb=wb>vb;xb=yb?vb:wb;wb=yb?hb:qb?gb:ic;qb=k[i>>2]|0;if(!Za){if(qb)rb=243}else{yb=0;do{Bb=c+(yb<<3)|0;p[Bb>>3]=+p[Bb>>3]+wb*+p[qb+(yb<<3)>>3];yb=yb+1|0}while((yb|0)!=(V|0));rb=243}if((rb|0)==243){rb=0;Tqa(qb)}k[i>>2]=0;p[Z+(sb<<3)>>3]=xb}if((pb|0)>=(U|0)){rb=25;break}}switch(rb|0){case 25:{Tqa(_);k[a>>2]=Z;r=g;return}case 35:{pb=Rb()|0;Za=Q;Yua(h);Yua(Ga);Ava(Aa);jc=Za;kc=pb;rb=38;break}case 36:{pb=Rb()|0;lc=Q;mc=pb;vva(za);Qb(mc|0);break}case 37:{pb=Rb()|0;jc=Q;kc=pb;rb=38;break}case 50:{pb=Rb()|0;Za=Q;Yua(h);Yua(Oa);Ava(Ka);nc=Za;oc=pb;rb=53;break}case 51:{pb=Rb()|0;pc=Q;qc=pb;vva(Ja);Qb(qc|0);break}case 52:{pb=Rb()|0;nc=Q;oc=pb;rb=53;break}case 61:{pb=v+56|0;Za=v+4|0;k[v>>2]=27524;k[pb>>2]=27544;B=0;wa(508,v+56|0,Za|0);ob=B;B=0;if(ob&1){ob=Rb()|0;rc=Q;sc=ob;vva(pb);Qb(sc|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[pb>>2]=27488;B=0;va(448,Za|0);ob=B;B=0;do if(ob&1){mb=Rb()|0;tc=Q;uc=mb}else{k[Za>>2]=27560;mb=v+36|0;k[mb>>2]=0;k[mb+4>>2]=0;k[mb+8>>2]=0;k[mb+12>>2]=0;k[v+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,Za|0,h|0);lb=B;B=0;if(lb&1){lb=Rb()|0;kb=Q;Yua(h);Yua(mb);Ava(Za);tc=kb;uc=lb;break}Yua(h);B=0;lb=Ia(40,v|0,148722,32)|0;kb=B;B=0;c:do if(kb&1)rb=82;else{B=0;Xa(239,lb|0,0)|0;fb=B;B=0;if(fb&1){rb=82;break}fb=Ab(20)|0;B=0;eb(502,w|0,148755,78);cb=B;B=0;do if(!(cb&1)){B=0;eb(502,x|0,148834,11);bb=B;B=0;if(bb&1){bb=Rb()|0;ab=Q;Yua(w);vc=ab;wc=bb;break}B=0;wa(510,y|0,Za|0);bb=B;B=0;if(bb&1){bb=Rb()|0;xc=1;yc=Q;zc=bb}else{B=0;ua(163,fb|0,w|0,x|0,69,y|0);bb=B;B=0;if(bb&1)Ac=1;else{B=0;eb(503,fb|0,1240,229);B=0;Ac=0}bb=Rb()|0;ab=Q;Yua(y);xc=Ac;yc=ab;zc=bb}Yua(x);Yua(w);if(xc){vc=yc;wc=zc}else{Bc=yc;Cc=zc;break c}}else{bb=Rb()|0;vc=Q;wc=bb}while(0);zb(fb|0);Bc=vc;Cc=wc}while(0);if((rb|0)==82){lb=Rb()|0;Bc=Q;Cc=lb}k[v>>2]=27468;k[pb>>2]=27488;k[Za>>2]=27560;Yua(mb);Ava(Za);vva(pb);Dc=Bc;Ec=Cc;Qb(Ec|0)}while(0);rc=tc;sc=uc;vva(pb);Qb(sc|0);break}case 76:{Za=Rb()|0;Fc=Q;Gc=Za;rb=78;break}case 77:{Za=Rb()|0;ob=Q;Yua(q);Fc=ob;Gc=Za;rb=78;break}case 79:{Za=Rb()|0;Hc=Q;Ic=Za;rb=81;break}case 80:{Za=Rb()|0;ob=Q;Yua(u);Hc=ob;Ic=Za;rb=81;break}case 93:{Za=Rb()|0;ob=Q;Yua(h);Yua(Wa);Ava(Ra);Jc=ob;Kc=Za;rb=96;break}case 94:{Za=Rb()|0;Lc=Q;Mc=Za;vva(Qa);Qb(Mc|0);break}case 95:{Za=Rb()|0;Jc=Q;Kc=Za;rb=96;break}case 106:{Za=Rb()|0;Nc=Q;Oc=Za;rb=108;break}case 107:{Za=Rb()|0;ob=Q;Yua(A);Nc=ob;Oc=Za;rb=108;break}case 110:{Za=C+56|0;ob=C+4|0;k[C>>2]=27524;k[Za>>2]=27544;B=0;wa(508,C+56|0,ob|0);lb=B;B=0;if(lb&1){lb=Rb()|0;Pc=Q;Qc=lb;vva(Za);Qb(Qc|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[Za>>2]=27488;B=0;va(448,ob|0);lb=B;B=0;do if(lb&1){kb=Rb()|0;Rc=Q;Sc=kb}else{k[ob>>2]=27560;kb=C+36|0;k[kb>>2]=0;k[kb+4>>2]=0;k[kb+8>>2]=0;k[kb+12>>2]=0;k[C+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,ob|0,h|0);sb=B;B=0;if(sb&1){sb=Rb()|0;qb=Q;Yua(h);Yua(kb);Ava(ob);Rc=qb;Sc=sb;break}Yua(h);B=0;sb=Ia(40,C|0,148722,32)|0;qb=B;B=0;d:do if(qb&1)rb=125;else{B=0;Xa(239,sb|0,0)|0;cb=B;B=0;if(cb&1){rb=125;break}cb=Ab(20)|0;B=0;eb(502,D|0,148755,78);bb=B;B=0;do if(!(bb&1)){B=0;eb(502,E|0,148834,11);ab=B;B=0;if(ab&1){ab=Rb()|0;Ya=Q;Yua(D);Tc=Ya;Uc=ab;break}B=0;wa(510,F|0,ob|0);ab=B;B=0;if(ab&1){ab=Rb()|0;Vc=1;Wc=Q;Xc=ab}else{B=0;ua(163,cb|0,D|0,E|0,74,F|0);ab=B;B=0;if(ab&1)Yc=1;else{B=0;eb(503,cb|0,1240,229);B=0;Yc=0}ab=Rb()|0;Ya=Q;Yua(F);Vc=Yc;Wc=Ya;Xc=ab}Yua(E);Yua(D);if(Vc){Tc=Wc;Uc=Xc}else{Zc=Wc;_c=Xc;break d}}else{ab=Rb()|0;Tc=Q;Uc=ab}while(0);zb(cb|0);Zc=Tc;_c=Uc}while(0);if((rb|0)==125){sb=Rb()|0;Zc=Q;_c=sb}k[C>>2]=27468;k[Za>>2]=27488;k[ob>>2]=27560;Yua(kb);Ava(ob);vva(Za);Dc=Zc;Ec=_c;Qb(Ec|0)}while(0);Pc=Rc;Qc=Sc;vva(Za);Qb(Qc|0);break}case 142:{ob=Rb()|0;lb=Q;Yua(h);Yua(db);Ava($a);$c=lb;ad=ob;rb=145;break}case 143:{ob=Rb()|0;bd=Q;cd=ob;vva(_a);Qb(cd|0);break}case 144:{ob=Rb()|0;$c=Q;ad=ob;rb=145;break}case 155:{ob=Rb()|0;dd=Q;ed=ob;rb=157;break}case 156:{ob=Rb()|0;lb=Q;Yua(I);dd=lb;ed=ob;rb=157;break}case 159:{ob=J+56|0;lb=J+4|0;k[J>>2]=27524;k[ob>>2]=27544;B=0;wa(508,J+56|0,lb|0);pb=B;B=0;if(pb&1){pb=Rb()|0;fd=Q;hd=pb;vva(ob);Qb(hd|0)}k[J+128>>2]=0;k[J+132>>2]=-1;k[J>>2]=27468;k[ob>>2]=27488;B=0;va(448,lb|0);pb=B;B=0;do if(pb&1){sb=Rb()|0;jd=Q;kd=sb}else{k[lb>>2]=27560;sb=J+36|0;k[sb>>2]=0;k[sb+4>>2]=0;k[sb+8>>2]=0;k[sb+12>>2]=0;k[J+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,lb|0,h|0);qb=B;B=0;if(qb&1){qb=Rb()|0;mb=Q;Yua(h);Yua(sb);Ava(lb);jd=mb;kd=qb;break}Yua(h);B=0;qb=Ia(40,J|0,148722,32)|0;mb=B;B=0;e:do if(mb&1)rb=174;else{B=0;Xa(239,qb|0,0)|0;bb=B;B=0;if(bb&1){rb=174;break}bb=Ab(20)|0;B=0;eb(502,K|0,148755,78);fb=B;B=0;do if(!(fb&1)){B=0;eb(502,L|0,148834,11);ab=B;B=0;if(ab&1){ab=Rb()|0;Ya=Q;Yua(K);ld=Ya;md=ab;break}B=0;wa(510,M|0,lb|0);ab=B;B=0;if(ab&1){ab=Rb()|0;nd=Q;od=ab;pd=1}else{B=0;ua(163,bb|0,K|0,L|0,100,M|0);ab=B;B=0;if(ab&1)qd=1;else{B=0;eb(503,bb|0,1240,229);B=0;qd=0}ab=Rb()|0;Ya=Q;Yua(M);nd=Ya;od=ab;pd=qd}Yua(L);Yua(K);if(pd){ld=nd;md=od}else{rd=nd;sd=od;break e}}else{ab=Rb()|0;ld=Q;md=ab}while(0);zb(bb|0);rd=ld;sd=md}while(0);if((rb|0)==174){qb=Rb()|0;rd=Q;sd=qb}k[J>>2]=27468;k[ob>>2]=27488;k[lb>>2]=27560;Yua(sb);Ava(lb);vva(ob);Dc=rd;Ec=sd;Qb(Ec|0)}while(0);fd=jd;hd=kd;vva(ob);Qb(hd|0);break}case 194:{lb=Rb()|0;pb=Q;Yua(h);Yua(nb);Ava(jb);td=pb;ud=lb;rb=197;break}case 195:{lb=Rb()|0;vd=Q;wd=lb;vva(ib);Qb(wd|0);break}case 196:{lb=Rb()|0;td=Q;ud=lb;rb=197;break}case 207:{lb=Rb()|0;xd=Q;yd=lb;rb=209;break}case 208:{lb=Rb()|0;pb=Q;Yua(O);xd=pb;yd=lb;rb=209;break}case 211:{lb=P+56|0;pb=P+4|0;k[P>>2]=27524;k[lb>>2]=27544;B=0;wa(508,P+56|0,pb|0);Za=B;B=0;if(Za&1){Za=Rb()|0;zd=Q;Ad=Za;vva(lb);Qb(Ad|0)}k[P+128>>2]=0;k[P+132>>2]=-1;k[P>>2]=27468;k[lb>>2]=27488;B=0;va(448,pb|0);Za=B;B=0;do if(Za&1){qb=Rb()|0;Bd=Q;Cd=qb}else{k[pb>>2]=27560;qb=P+36|0;k[qb>>2]=0;k[qb+4>>2]=0;k[qb+8>>2]=0;k[qb+12>>2]=0;k[P+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,pb|0,h|0);mb=B;B=0;if(mb&1){mb=Rb()|0;kb=Q;Yua(h);Yua(qb);Ava(pb);Bd=kb;Cd=mb;break}Yua(h);B=0;mb=Ia(40,P|0,148722,32)|0;kb=B;B=0;f:do if(kb&1)rb=226;else{B=0;Xa(239,mb|0,0)|0;fb=B;B=0;if(fb&1){rb=226;break}fb=Ab(20)|0;B=0;eb(502,R|0,148755,78);cb=B;B=0;do if(!(cb&1)){B=0;eb(502,S|0,148834,11);ab=B;B=0;if(ab&1){ab=Rb()|0;Ya=Q;Yua(R);Dd=Ya;Ed=ab;break}B=0;wa(510,T|0,pb|0);ab=B;B=0;if(ab&1){ab=Rb()|0;Fd=1;Gd=Q;Hd=ab}else{B=0;ua(163,fb|0,R|0,S|0,185,T|0);ab=B;B=0;if(ab&1)Id=1;else{B=0;eb(503,fb|0,1240,229);B=0;Id=0}ab=Rb()|0;Ya=Q;Yua(T);Fd=Id;Gd=Ya;Hd=ab}Yua(S);Yua(R);if(Fd){Dd=Gd;Ed=Hd}else{Jd=Gd;Kd=Hd;break f}}else{ab=Rb()|0;Dd=Q;Ed=ab}while(0);zb(fb|0);Jd=Dd;Kd=Ed}while(0);if((rb|0)==226){mb=Rb()|0;Jd=Q;Kd=mb}k[P>>2]=27468;k[lb>>2]=27488;k[pb>>2]=27560;Yua(qb);Ava(pb);vva(lb);Dc=Jd;Ec=Kd;Qb(Ec|0)}while(0);zd=Bd;Ad=Cd;vva(lb);Qb(Ad|0);break}}switch(rb|0){case 38:{lc=jc;mc=kc;vva(za);Qb(mc|0);break}case 53:{pc=nc;qc=oc;vva(Ja);Qb(qc|0);break}case 78:{k[o>>2]=27468;k[za>>2]=27488;k[Aa>>2]=27560;Yua(Ga);Ava(Aa);vva(za);Dc=Fc;Ec=Gc;Qb(Ec|0);break}case 81:{k[s>>2]=27468;k[Ja>>2]=27488;k[Ka>>2]=27560;Yua(Oa);Ava(Ka);vva(Ja);Dc=Hc;Ec=Ic;Qb(Ec|0);break}case 96:{Lc=Jc;Mc=Kc;vva(Qa);Qb(Mc|0);break}case 108:{k[z>>2]=27468;k[Qa>>2]=27488;k[Ra>>2]=27560;Yua(Wa);Ava(Ra);vva(Qa);Dc=Nc;Ec=Oc;Qb(Ec|0);break}case 145:{bd=$c;cd=ad;vva(_a);Qb(cd|0);break}case 157:{k[H>>2]=27468;k[_a>>2]=27488;k[$a>>2]=27560;Yua(db);Ava($a);vva(_a);Dc=dd;Ec=ed;Qb(Ec|0);break}case 197:{vd=td;wd=ud;vva(ib);Qb(wd|0);break}case 209:{k[N>>2]=27468;k[ib>>2]=27488;k[jb>>2]=27560;Yua(nb);Ava(jb);vva(ib);Dc=xd;Ec=yd;Qb(Ec|0);break}}}else rb=29;while(0);if((rb|0)==29){xa=Rb()|0;Ba=Q;Ca=xa}k[m>>2]=27468;k[ka>>2]=27488;k[la>>2]=27560;Yua(ra);Ava(la);vva(ka);Dc=Ba;Ec=Ca;Qb(Ec|0)}while(0);pa=sa;qa=ta;vva(ka);Qb(qa|0)}else rb=26;while(0);if((rb|0)==26){ja=Rb()|0;ma=Q;na=ja}k[j>>2]=27468;k[ba>>2]=27488;k[ca>>2]=27560;Yua(ga);Ava(ca);vva(ba);Dc=ma;Ec=na;Qb(Ec|0)}while(0);ea=ha;fa=ia;vva(ba);Qb(fa|0)}function fpa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;b=r;r=r+624|0;c=b;d=b+617|0;e=b+600|0;f=b+464|0;g=b+604|0;h=b+312|0;j=b+448|0;l=b+176|0;m=b+160|0;n=b+24|0;o=b+12|0;p=a+44|0;bO(k[p>>2]|0,d,99);bO(k[p>>2]|0,b+616|0,759);cO(k[p>>2]|0,e,102);a:do if(CY()|0){p=f+56|0;q=f+4|0;k[f>>2]=27524;k[p>>2]=27544;B=0;wa(508,f+56|0,q|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;u=s;vva(p);Qb(u|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[p>>2]=27488;B=0;va(448,q|0);s=B;B=0;do if(s&1){v=Rb()|0;w=Q;x=v}else{k[q>>2]=27560;v=f+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,q|0,c|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(c);Yua(v);Ava(q);w=z;x=y;break}Yua(c);B=0;Ia(40,f|0,148846,24)|0;y=B;B=0;do if(!(y&1)?(B=0,wa(510,g|0,q|0),z=B,B=0,!(z&1)):0){B=0;ya(425,g|0)|0;z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(g);C=A;D=z;break}else{Yua(g);k[f>>2]=27468;k[p>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(p);break a}}else E=14;while(0);if((E|0)==14){y=Rb()|0;C=Q;D=y}k[f>>2]=27468;k[p>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(p);F=C;G=D;Qb(G|0)}while(0);t=w;u=x;vva(p);Qb(u|0)}while(0);xh(a,497);b:do if(CY()|0){u=h+56|0;x=h+4|0;k[h>>2]=27524;k[u>>2]=27544;B=0;wa(508,h+56|0,x|0);w=B;B=0;if(w&1){w=Rb()|0;H=Q;I=w;vva(u);Qb(I|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[u>>2]=27488;B=0;va(448,x|0);w=B;B=0;do if(w&1){t=Rb()|0;J=Q;K=t}else{k[x>>2]=27560;t=h+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,x|0,c|0);D=B;B=0;if(D&1){D=Rb()|0;C=Q;Yua(c);Yua(t);Ava(x);J=C;K=D;break}Yua(c);B=0;Ia(40,h|0,148846,24)|0;D=B;B=0;do if(!(D&1)?(B=0,wa(510,j|0,x|0),C=B,B=0,!(C&1)):0){B=0;ya(425,j|0)|0;C=B;B=0;if(C&1){C=Rb()|0;f=Q;Yua(j);L=f;M=C;break}else{Yua(j);k[h>>2]=27468;k[u>>2]=27488;k[x>>2]=27560;Yua(t);Ava(x);vva(u);break b}}else E=30;while(0);if((E|0)==30){D=Rb()|0;L=Q;M=D}k[h>>2]=27468;k[u>>2]=27488;k[x>>2]=27560;Yua(t);Ava(x);vva(u);F=L;G=M;Qb(G|0)}while(0);H=J;I=K;vva(u);Qb(I|0)}while(0);xh(a,497);do if(i[d>>0]|0)if((k[e>>2]&-5|0)==754){Toa(a);break}else{Woa(a,1);break}else Woa(a,1);while(0);pqa(0,a);c:do if(CY()|0){I=l+56|0;K=l+4|0;k[l>>2]=27524;k[I>>2]=27544;B=0;wa(508,l+56|0,K|0);J=B;B=0;if(J&1){J=Rb()|0;N=Q;O=J;vva(I);Qb(O|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[I>>2]=27488;B=0;va(448,K|0);J=B;B=0;do if(J&1){H=Rb()|0;P=Q;R=H}else{k[K>>2]=27560;H=l+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,K|0,c|0);M=B;B=0;if(M&1){M=Rb()|0;L=Q;Yua(c);Yua(H);Ava(K);P=L;R=M;break}Yua(c);B=0;Ia(40,l|0,148920,21)|0;M=B;B=0;do if(!(M&1)?(B=0,wa(510,m|0,K|0),L=B,B=0,!(L&1)):0){B=0;ya(425,m|0)|0;L=B;B=0;if(L&1){L=Rb()|0;h=Q;Yua(m);S=h;T=L;break}else{Yua(m);k[l>>2]=27468;k[I>>2]=27488;k[K>>2]=27560;Yua(H);Ava(K);vva(I);break c}}else E=51;while(0);if((E|0)==51){M=Rb()|0;S=Q;T=M}k[l>>2]=27468;k[I>>2]=27488;k[K>>2]=27560;Yua(H);Ava(K);vva(I);F=S;G=T;Qb(G|0)}while(0);N=P;O=R;vva(I);Qb(O|0)}while(0);yh(a,497,481);ipa(a);d:do if(CY()|0){O=n+56|0;R=n+4|0;k[n>>2]=27524;k[O>>2]=27544;B=0;wa(508,n+56|0,R|0);P=B;B=0;if(P&1){P=Rb()|0;U=Q;V=P;vva(O);Qb(V|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[O>>2]=27488;B=0;va(448,R|0);P=B;B=0;do if(P&1){N=Rb()|0;W=Q;X=N}else{k[R>>2]=27560;N=n+36|0;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;k[n+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,R|0,c|0);T=B;B=0;if(T&1){T=Rb()|0;S=Q;Yua(c);Yua(N);Ava(R);W=S;X=T;break}Yua(c);B=0;Ia(40,n|0,148942,18)|0;T=B;B=0;do if(!(T&1)?(B=0,wa(510,o|0,R|0),S=B,B=0,!(S&1)):0){B=0;ya(425,o|0)|0;S=B;B=0;if(S&1){S=Rb()|0;l=Q;Yua(o);Y=l;Z=S;break}else{Yua(o);k[n>>2]=27468;k[O>>2]=27488;k[R>>2]=27560;Yua(N);Ava(R);vva(O);break d}}else E=67;while(0);if((E|0)==67){T=Rb()|0;Y=Q;Z=T}k[n>>2]=27468;k[O>>2]=27488;k[R>>2]=27560;Yua(N);Ava(R);vva(O);F=Y;G=Z;Qb(G|0)}while(0);U=W;V=X;vva(O);Qb(V|0)}while(0);if(!(i[d>>0]|0)){d=c;k[d>>2]=638;k[d+4>>2]=639;fi(a,a+48|0,c,2,1);r=b;return}if((k[e>>2]&-5|0)==754){e=c;k[e>>2]=638;k[e+4>>2]=639;fi(a,a+48|0,c,2,1);r=b;return}else{k[c>>2]=k[10489];k[c+4>>2]=k[10490];k[c+8>>2]=k[10491];fi(a,a+48|0,c,3,1);r=b;return}}function gpa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;b=r;r=r+480|0;c=b+452|0;d=b+464|0;e=b+304|0;f=b+440|0;g=b+152|0;h=b+288|0;j=b+16|0;l=b;bO(k[a+44>>2]|0,d,759);a:do if(CY()|0){m=e+56|0;n=e+4|0;k[e>>2]=27524;k[m>>2]=27544;B=0;wa(508,e+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;q=o;vva(m);Qb(q|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){s=Rb()|0;t=Q;u=s}else{k[n>>2]=27560;s=e+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,n|0,c|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);Yua(s);Ava(n);t=w;u=v;break}Yua(c);B=0;Ia(40,e|0,148871,23)|0;v=B;B=0;do if(!(v&1)?(B=0,wa(510,f|0,n|0),w=B,B=0,!(w&1)):0){B=0;ya(425,f|0)|0;w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(f);y=x;z=w;break}else{Yua(f);k[e>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);break a}}else A=14;while(0);if((A|0)==14){v=Rb()|0;y=Q;z=v}k[e>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);C=y;D=z;Qb(D|0)}while(0);p=t;q=u;vva(m);Qb(q|0)}while(0);xh(a,484);Voa(a);pqa(0,a);b:do if(CY()|0){q=g+56|0;u=g+4|0;k[g>>2]=27524;k[q>>2]=27544;B=0;wa(508,g+56|0,u|0);t=B;B=0;if(t&1){t=Rb()|0;E=Q;F=t;vva(q);Qb(F|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[q>>2]=27488;B=0;va(448,u|0);t=B;B=0;do if(t&1){p=Rb()|0;G=Q;H=p}else{k[u>>2]=27560;p=g+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[g+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,u|0,c|0);z=B;B=0;if(z&1){z=Rb()|0;y=Q;Yua(c);Yua(p);Ava(u);G=y;H=z;break}Yua(c);B=0;Ia(40,g|0,148920,21)|0;z=B;B=0;do if(!(z&1)?(B=0,wa(510,h|0,u|0),y=B,B=0,!(y&1)):0){B=0;ya(425,h|0)|0;y=B;B=0;if(y&1){y=Rb()|0;e=Q;Yua(h);I=e;J=y;break}else{Yua(h);k[g>>2]=27468;k[q>>2]=27488;k[u>>2]=27560;Yua(p);Ava(u);vva(q);break b}}else A=30;while(0);if((A|0)==30){z=Rb()|0;I=Q;J=z}k[g>>2]=27468;k[q>>2]=27488;k[u>>2]=27560;Yua(p);Ava(u);vva(q);C=I;D=J;Qb(D|0)}while(0);E=G;F=H;vva(q);Qb(F|0)}while(0);yh(a,484,479);ipa(a);if(!(i[d>>0]|0)){r=b;return}c:do if(CY()|0){d=j+56|0;F=j+4|0;k[j>>2]=27524;k[d>>2]=27544;B=0;wa(508,j+56|0,F|0);H=B;B=0;if(H&1){H=Rb()|0;K=Q;L=H;vva(d);Qb(L|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[d>>2]=27488;B=0;va(448,F|0);H=B;B=0;do if(H&1){G=Rb()|0;M=Q;N=G}else{k[F>>2]=27560;G=j+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,F|0,c|0);E=B;B=0;if(E&1){E=Rb()|0;J=Q;Yua(c);Yua(G);Ava(F);M=J;N=E;break}Yua(c);B=0;Ia(40,j|0,148942,18)|0;E=B;B=0;do if(!(E&1)?(B=0,wa(510,l|0,F|0),J=B,B=0,!(J&1)):0){B=0;ya(425,l|0)|0;J=B;B=0;if(J&1){J=Rb()|0;I=Q;Yua(l);O=I;P=J;break}else{Yua(l);k[j>>2]=27468;k[d>>2]=27488;k[F>>2]=27560;Yua(G);Ava(F);vva(d);break c}}else A=47;while(0);if((A|0)==47){E=Rb()|0;O=Q;P=E}k[j>>2]=27468;k[d>>2]=27488;k[F>>2]=27560;Yua(G);Ava(F);vva(d);C=O;D=P;Qb(D|0)}while(0);K=M;L=N;vva(d);Qb(L|0)}while(0);k[c>>2]=934;fi(a,a+48|0,c,1,1);r=b;return}function hpa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;b=r;r=r+480|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;bO(k[a+44>>2]|0,b+464|0,759);a:do if(CY()|0){j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=d+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(p);Ava(l);q=u;s=t;break}Yua(c);B=0;Ia(40,d|0,148895,24)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,e|0,l|0),u=B,B=0,!(u&1)):0){B=0;ya(425,e|0)|0;u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}else{Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);break a}}else y=14;while(0);if((y|0)==14){t=Rb()|0;w=Q;x=t}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);z=w;A=x;Qb(A|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}while(0);xh(a,486);Voa(a);pqa(0,a);b:do if(CY()|0){o=f+56|0;s=f+4|0;k[f>>2]=27524;k[o>>2]=27544;B=0;wa(508,f+56|0,s|0);q=B;B=0;if(q&1){q=Rb()|0;C=Q;D=q;vva(o);Qb(D|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[o>>2]=27488;B=0;va(448,s|0);q=B;B=0;do if(q&1){n=Rb()|0;E=Q;F=n}else{k[s>>2]=27560;n=f+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,s|0,c|0);x=B;B=0;if(x&1){x=Rb()|0;w=Q;Yua(c);Yua(n);Ava(s);E=w;F=x;break}Yua(c);B=0;Ia(40,f|0,148920,21)|0;x=B;B=0;do if(!(x&1)?(B=0,wa(510,g|0,s|0),w=B,B=0,!(w&1)):0){B=0;ya(425,g|0)|0;w=B;B=0;if(w&1){w=Rb()|0;d=Q;Yua(g);G=d;H=w;break}else{Yua(g);k[f>>2]=27468;k[o>>2]=27488;k[s>>2]=27560;Yua(n);Ava(s);vva(o);break b}}else y=30;while(0);if((y|0)==30){x=Rb()|0;G=Q;H=x}k[f>>2]=27468;k[o>>2]=27488;k[s>>2]=27560;Yua(n);Ava(s);vva(o);z=G;A=H;Qb(A|0)}while(0);C=E;D=F;vva(o);Qb(D|0)}while(0);yh(a,486,480);ipa(a);if(!(CY()|0)){k[c>>2]=934;I=a+48|0;fi(a,I,c,1,1);r=b;return}D=h+56|0;F=h+4|0;k[h>>2]=27524;k[D>>2]=27544;B=0;wa(508,h+56|0,F|0);E=B;B=0;if(E&1){E=Rb()|0;J=Q;K=E;vva(D);Qb(K|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[D>>2]=27488;B=0;va(448,F|0);E=B;B=0;do if(E&1){C=Rb()|0;L=Q;M=C}else{k[F>>2]=27560;C=h+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,F|0,c|0);H=B;B=0;if(H&1){H=Rb()|0;G=Q;Yua(c);Yua(C);Ava(F);L=G;M=H;break}Yua(c);B=0;Ia(40,h|0,148942,18)|0;H=B;B=0;do if(!(H&1)?(B=0,wa(510,i|0,F|0),G=B,B=0,!(G&1)):0){B=0;ya(425,i|0)|0;G=B;B=0;if(G&1){G=Rb()|0;f=Q;Yua(i);N=f;O=G;break}Yua(i);k[h>>2]=27468;k[D>>2]=27488;k[F>>2]=27560;Yua(C);Ava(F);vva(D);k[c>>2]=934;I=a+48|0;fi(a,I,c,1,1);r=b;return}else y=46;while(0);if((y|0)==46){H=Rb()|0;N=Q;O=H}k[h>>2]=27468;k[D>>2]=27488;k[F>>2]=27560;Yua(C);Ava(F);vva(D);z=N;A=O;Qb(A|0)}while(0);J=L;K=M;vva(D);Qb(K|0)}function ipa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;b=r;r=r+32|0;c=b+28|0;d=b+24|0;e=b+20|0;f=b+16|0;g=b+12|0;h=b+8|0;i=b+4|0;j=b;k[c>>2]=0;k[d>>2]=0;k[e>>2]=0;k[f>>2]=0;k[g>>2]=0;k[h>>2]=0;k[i>>2]=0;l=a+44|0;cO(k[l>>2]|0,j,478);Eh(a);ooa(c,d,g,h,0,a);m=a+24|0;poa(i,k[m>>2]|0,k[j>>2]|0);Loa(k[g>>2]|0,k[d>>2]|0,k[i>>2]|0,1);j=k[d>>2]|0;if(j){if((k[j>>2]|0)!=0?(d=k[j+4>>2]|0,(d|0)!=0):0){n=k[d>>2]|0;if(n)Ec[k[(k[n>>2]|0)+4>>2]&1023](n);Sqa(d)}Sqa(j)}Poa(f,k[c>>2]|0,k[g>>2]|0,0,k[h>>2]|0,k[l>>2]|0);j=k[c>>2]|0;if(j){if((k[j>>2]|0)!=0?(c=k[j+4>>2]|0,(c|0)!=0):0){d=k[c>>2]|0;if(d)Ec[k[(k[d>>2]|0)+4>>2]&1023](d);Sqa(c)}Sqa(j)}j=k[g>>2]|0;if(j){if((k[j>>2]|0)!=0?(g=k[j+4>>2]|0,(g|0)!=0):0){c=k[g>>2]|0;if(c)Ec[k[(k[c>>2]|0)+4>>2]&1023](c);Sqa(g)}Sqa(j)}j=k[h>>2]|0;if(j){if((k[j>>2]|0)!=0?(h=k[j+4>>2]|0,(h|0)!=0):0){g=k[h>>2]|0;if(g)Ec[k[(k[g>>2]|0)+4>>2]&1023](g);Sqa(h)}Sqa(j)}Roa(e,k[f>>2]|0,k[i>>2]|0,k[m>>2]|0,k[l>>2]|0,1);l=k[i>>2]|0;if(l){if((k[l>>2]|0)!=0?(i=k[l+4>>2]|0,(i|0)!=0):0){m=k[i>>2]|0;if(m)Ec[k[(k[m>>2]|0)+4>>2]&1023](m);Sqa(i)}Sqa(l)}xoa(a,k[e>>2]|0);a=k[e>>2]|0;if(a){if((k[a>>2]|0)!=0?(e=k[a+4>>2]|0,(e|0)!=0):0){l=k[e>>2]|0;if(l)Ec[k[(k[l>>2]|0)+4>>2]&1023](l);Sqa(e)}Sqa(a)}a=k[f>>2]|0;if(!a){r=b;return}if((k[a>>2]|0)!=0?(f=k[a+4>>2]|0,(f|0)!=0):0){e=k[f>>2]|0;if(e)Ec[k[(k[e>>2]|0)+4>>2]&1023](e);Sqa(f)}Sqa(a);r=b;return}function jpa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0;b=r;r=r+256|0;c=b+240|0;d=b+236|0;e=b+232|0;f=b+228|0;g=b+224|0;h=b+220|0;j=b+216|0;l=b+212|0;m=b+208|0;n=b+204|0;o=b+200|0;q=b+196|0;s=b+192|0;t=b+188|0;u=b+252|0;v=b+180|0;w=b+176|0;x=b+16|0;y=b+8|0;z=b;A=b+40|0;C=b+24|0;k[d>>2]=0;k[e>>2]=0;k[f>>2]=0;k[g>>2]=0;k[h>>2]=0;k[j>>2]=0;k[l>>2]=0;k[m>>2]=0;k[n>>2]=0;k[o>>2]=0;k[q>>2]=0;k[s>>2]=0;k[t>>2]=0;D=a+44|0;cO(k[D>>2]|0,b+184|0,80);cO(k[D>>2]|0,v,72);dO(k[D>>2]|0,x,78);dO(k[D>>2]|0,y,75);dO(k[D>>2]|0,z,69);Eh(a);i[u>>0]=0;xh(a,497);Aoa(f,a);E=a+24|0;Koa(g,k[f>>2]|0,k[E>>2]|0,k[D>>2]|0);F=1;G=0;while(1){xh(a,497);cO(k[D>>2]|0,w,478);xoa(a,k[f>>2]|0);H=k[f>>2]|0;if(H){if((k[H>>2]|0)!=0?(I=k[H+4>>2]|0,(I|0)!=0):0){J=k[I>>2]|0;if(J)Ec[k[(k[J>>2]|0)+4>>2]&1023](J);Sqa(I)}Sqa(H)}if(G){if((k[G>>2]|0)!=0?(H=k[G+4>>2]|0,(H|0)!=0):0){I=k[H>>2]|0;if(I)Ec[k[(k[I>>2]|0)+4>>2]&1023](I);Sqa(H)}Sqa(G)}H=k[g>>2]|0;ooa(d,e,h,j,0,a);poa(t,k[E>>2]|0,k[w>>2]|0);Loa(k[h>>2]|0,k[e>>2]|0,k[t>>2]|0,0);I=k[e>>2]|0;if(I){if((k[I>>2]|0)!=0?(J=k[I+4>>2]|0,(J|0)!=0):0){K=k[J>>2]|0;if(K)Ec[k[(k[K>>2]|0)+4>>2]&1023](K);Sqa(J)}Sqa(I)}Poa(g,k[d>>2]|0,k[h>>2]|0,H,k[j>>2]|0,k[D>>2]|0);Roa(f,k[g>>2]|0,k[t>>2]|0,k[E>>2]|0,k[D>>2]|0,0);I=k[t>>2]|0;if(I){if((k[I>>2]|0)!=0?(J=k[I+4>>2]|0,(J|0)!=0):0){K=k[J>>2]|0;if(K)Ec[k[(k[K>>2]|0)+4>>2]&1023](K);Sqa(J)}Sqa(I)}xoa(a,k[f>>2]|0);Zoa(u,k[d>>2]|0,k[h>>2]|0,k[g>>2]|0,H,+p[x>>3],+p[y>>3],+p[z>>3]);I=k[d>>2]|0;if(I){if((k[I>>2]|0)!=0?(J=k[I+4>>2]|0,(J|0)!=0):0){K=k[J>>2]|0;if(K)Ec[k[(k[K>>2]|0)+4>>2]&1023](K);Sqa(J)}Sqa(I)}I=k[h>>2]|0;if(I){if((k[I>>2]|0)!=0?(J=k[I+4>>2]|0,(J|0)!=0):0){K=k[J>>2]|0;if(K)Ec[k[(k[K>>2]|0)+4>>2]&1023](K);Sqa(J)}Sqa(I)}I=k[j>>2]|0;if(I){if((k[I>>2]|0)!=0?(J=k[I+4>>2]|0,(J|0)!=0):0){K=k[J>>2]|0;if(K)Ec[k[(k[K>>2]|0)+4>>2]&1023](K);Sqa(J)}Sqa(I)}xh(a,500);cO(k[D>>2]|0,w,478);ooa(l,m,q,s,0,a);poa(t,k[E>>2]|0,k[w>>2]|0);Loa(k[q>>2]|0,k[m>>2]|0,k[t>>2]|0,0);I=k[m>>2]|0;if(I){if((k[I>>2]|0)!=0?(J=k[I+4>>2]|0,(J|0)!=0):0){K=k[J>>2]|0;if(K)Ec[k[(k[K>>2]|0)+4>>2]&1023](K);Sqa(J)}Sqa(I)}Poa(o,k[l>>2]|0,k[q>>2]|0,0,k[s>>2]|0,k[D>>2]|0);I=k[l>>2]|0;if(I){if((k[I>>2]|0)!=0?(J=k[I+4>>2]|0,(J|0)!=0):0){K=k[J>>2]|0;if(K)Ec[k[(k[K>>2]|0)+4>>2]&1023](K);Sqa(J)}Sqa(I)}I=k[q>>2]|0;if(I){if((k[I>>2]|0)!=0?(J=k[I+4>>2]|0,(J|0)!=0):0){K=k[J>>2]|0;if(K)Ec[k[(k[K>>2]|0)+4>>2]&1023](K);Sqa(J)}Sqa(I)}I=k[s>>2]|0;if(I){if((k[I>>2]|0)!=0?(J=k[I+4>>2]|0,(J|0)!=0):0){K=k[J>>2]|0;if(K)Ec[k[(k[K>>2]|0)+4>>2]&1023](K);Sqa(J)}Sqa(I)}Roa(n,k[o>>2]|0,k[t>>2]|0,k[E>>2]|0,k[D>>2]|0,0);I=k[o>>2]|0;if(I){if((k[I>>2]|0)!=0?(J=k[I+4>>2]|0,(J|0)!=0):0){K=k[J>>2]|0;if(K)Ec[k[(k[K>>2]|0)+4>>2]&1023](K);Sqa(J)}Sqa(I)}I=k[t>>2]|0;if(I){if((k[I>>2]|0)!=0?(J=k[I+4>>2]|0,(J|0)!=0):0){K=k[J>>2]|0;if(K)Ec[k[(k[K>>2]|0)+4>>2]&1023](K);Sqa(J)}Sqa(I)}xoa(a,k[n>>2]|0);I=k[n>>2]|0;if(I){if((k[I>>2]|0)!=0?(J=k[I+4>>2]|0,(J|0)!=0):0){K=k[J>>2]|0;if(K)Ec[k[(k[K>>2]|0)+4>>2]&1023](K);Sqa(J)}Sqa(I)}F=F+1|0;if(i[u>>0]|0){L=H;break}if((F|0)>=(k[v>>2]|0)){M=H;N=102;break}else G=H}a:do if((N|0)==102){G=A+56|0;F=A+4|0;k[A>>2]=27524;k[G>>2]=27544;B=0;wa(508,A+56|0,F|0);u=B;B=0;if(u&1){u=Rb()|0;O=Q;P=u;vva(G);Qb(P|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[G>>2]=27488;B=0;va(448,F|0);u=B;B=0;do if(u&1){n=Rb()|0;R=Q;S=n}else{k[F>>2]=27560;n=A+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[A+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,F|0,c|0);a=B;B=0;if(a&1){a=Rb()|0;t=Q;Yua(c);Yua(n);Ava(F);R=t;S=a;break}Yua(c);B=0;a=Ia(40,A|0,148961,33)|0;t=B;B=0;if(((!(t&1)?(B=0,t=Xa(242,a|0,k[v>>2]|0)|0,a=B,B=0,!(a&1)):0)?(B=0,Ia(40,t|0,148995,11)|0,t=B,B=0,!(t&1)):0)?(B=0,wa(510,C|0,F|0),t=B,B=0,!(t&1)):0){B=0;ya(425,C|0)|0;t=B;B=0;if(!(t&1)){Yua(C);k[A>>2]=27468;k[G>>2]=27488;k[F>>2]=27560;Yua(n);Ava(F);vva(G);L=M;break a}t=Rb()|0;a=Q;Yua(C);T=a;U=t;k[A>>2]=27468;k[G>>2]=27488;k[F>>2]=27560;Yua(n);Ava(F);vva(G);Qb(U|0)}t=Rb()|0;T=Q;U=t;k[A>>2]=27468;k[G>>2]=27488;k[F>>2]=27560;Yua(n);Ava(F);vva(G);Qb(U|0)}while(0);O=R;P=S;vva(G);Qb(P|0)}while(0);if(L){if((k[L>>2]|0)!=0?(P=k[L+4>>2]|0,(P|0)!=0):0){S=k[P>>2]|0;if(S)Ec[k[(k[S>>2]|0)+4>>2]&1023](S);Sqa(P)}Sqa(L)}L=k[g>>2]|0;if(L){if((k[L>>2]|0)!=0?(g=k[L+4>>2]|0,(g|0)!=0):0){P=k[g>>2]|0;if(P)Ec[k[(k[P>>2]|0)+4>>2]&1023](P);Sqa(g)}Sqa(L)}L=k[f>>2]|0;if(!L){r=b;return}if((k[L>>2]|0)!=0?(f=k[L+4>>2]|0,(f|0)!=0):0){g=k[f>>2]|0;if(g)Ec[k[(k[g>>2]|0)+4>>2]&1023](g);Sqa(f)}Sqa(L);r=b;return}function kpa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;b=r;r=r+320|0;c=b;d=b+312|0;e=b+308|0;f=b+160|0;g=b+296|0;h=b+24|0;j=b+12|0;l=a+44|0;bO(k[l>>2]|0,d,759);cO(k[l>>2]|0,e,298);a:do if(CY()|0){m=f+56|0;n=f+4|0;k[f>>2]=27524;k[m>>2]=27544;B=0;wa(508,f+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;q=o;vva(m);Qb(q|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){s=Rb()|0;t=Q;u=s}else{k[n>>2]=27560;s=f+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,n|0,c|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);Yua(s);Ava(n);t=w;u=v;break}Yua(c);B=0;Ia(40,f|0,149007,40)|0;v=B;B=0;do if(!(v&1)?(B=0,wa(510,g|0,n|0),w=B,B=0,!(w&1)):0){B=0;ya(425,g|0)|0;w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(g);y=x;z=w;break}else{Yua(g);k[f>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);break a}}else A=14;while(0);if((A|0)==14){v=Rb()|0;y=Q;z=v}k[f>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);C=y;D=z;Qb(D|0)}while(0);p=t;q=u;vva(m);Qb(q|0)}while(0);xh(a,493);oO(k[l>>2]|0,993,576);Voa(a);if(!((k[e>>2]|0)!=301?(oO(k[l>>2]|0,994,576),Voa(a),(k[e>>2]|0)!=301):0)){oO(k[l>>2]|0,993,575);y_(a)}if(!(i[d>>0]|0)){r=b;return}b:do if(CY()|0){d=h+56|0;l=h+4|0;k[h>>2]=27524;k[d>>2]=27544;B=0;wa(508,h+56|0,l|0);q=B;B=0;if(q&1){q=Rb()|0;E=Q;F=q;vva(d);Qb(F|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[d>>2]=27488;B=0;va(448,l|0);q=B;B=0;do if(q&1){u=Rb()|0;G=Q;H=u}else{k[l>>2]=27560;u=h+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;p=Q;Yua(c);Yua(u);Ava(l);G=p;H=t;break}Yua(c);B=0;Ia(40,h|0,149048,16)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,j|0,l|0),p=B,B=0,!(p&1)):0){B=0;ya(425,j|0)|0;p=B;B=0;if(p&1){p=Rb()|0;z=Q;Yua(j);I=z;J=p;break}else{Yua(j);k[h>>2]=27468;k[d>>2]=27488;k[l>>2]=27560;Yua(u);Ava(l);vva(d);break b}}else A=34;while(0);if((A|0)==34){t=Rb()|0;I=Q;J=t}k[h>>2]=27468;k[d>>2]=27488;k[l>>2]=27560;Yua(u);Ava(l);vva(d);C=I;D=J;Qb(D|0)}while(0);E=G;F=H;vva(d);Qb(F|0)}while(0);if((k[e>>2]|0)==301){k[c>>2]=993;fi(a,a+48|0,c,1,1);r=b;return}else{e=c;k[e>>2]=993;k[e+4>>2]=994;fi(a,a+48|0,c,2,1);r=b;return}}function lpa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=r;r=r+16|0;d=c+4|0;e=c;k[d>>2]=0;k[e>>2]=0;a:do if((bL(a)|0)>0){f=0;while(1){g=qh(a,f)|0;if(ed[k[(k[g>>2]|0)+60>>2]&511](g,b)|0?(ph(a,f)|0)==610:0)break;f=f+1|0;if((f|0)>=(bL(a)|0))break a}k[d>>2]=1}while(0);nZ(d,e,1,4,4,0,uY()|0)|0;uY()|0;r=c;return k[e>>2]|0}function mpa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;f=r;r=r+176|0;g=f+156|0;h=f+152|0;i=f+16|0;j=f;k[h>>2]=0;npa(h,c,e);l=k[h>>2]|0;m=(l|0)==0&1;if(opa(c,e)|0){k[h>>2]=0;n=0;o=1;k[a>>2]=o;k[b>>2]=n;r=f;return}if((l|0)>(d|0)){n=l;o=m;k[a>>2]=o;k[b>>2]=n;r=f;return}a:do if(BY()|0){d=i+56|0;h=i+4|0;k[i>>2]=27524;k[d>>2]=27544;B=0;wa(508,i+56|0,h|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;s=p;vva(d);Qb(s|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);p=B;B=0;do if(p&1){t=Rb()|0;u=Q;v=t}else{k[h>>2]=27560;t=i+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[i+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,h|0,g|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(g);Yua(t);Ava(h);u=x;v=w;break}Yua(g);B=0;Ia(40,i|0,149065,24)|0;w=B;B=0;if(!(w&1)?(B=0,wa(510,j|0,h|0),w=B,B=0,!(w&1)):0){B=0;ya(425,j|0)|0;w=B;B=0;if(!(w&1)){Yua(j);k[i>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(t);Ava(h);vva(d);break a}w=Rb()|0;x=Q;Yua(j);y=x;z=w;k[i>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(t);Ava(h);vva(d);Qb(z|0)}w=Rb()|0;y=Q;z=w;k[i>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(t);Ava(h);vva(d);Qb(z|0)}while(0);q=u;s=v;vva(d);Qb(s|0)}while(0);if((bL(c)|0)<=0){n=l;o=m;k[a>>2]=o;k[b>>2]=n;r=f;return}s=0;do{if((ph(c,s)|0)==610?(v=qh(c,s)|0,ed[k[(k[v>>2]|0)+60>>2]&511](v,e)|0):0)a1(v);s=s+1|0}while((s|0)<(bL(c)|0));n=l;o=m;k[a>>2]=o;k[b>>2]=n;r=f;return}function npa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=r;r=r+16|0;e=d+8|0;f=d+4|0;g=d;k[g>>2]=0;if((bL(b)|0)>0){h=0;do{if((ph(b,h)|0)==610?(i=qh(b,h)|0,ed[k[(k[i>>2]|0)+60>>2]&511](i,c)|0):0){$0(i,e)|0;k[g>>2]=(k[g>>2]|0)+(k[e>>2]|0)}h=h+1|0}while((h|0)<(bL(b)|0))}nZ(g,f,1,4,4,0,uY()|0)|0;uY()|0;k[a>>2]=k[f>>2];r=d;return}function opa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=r;r=r+16|0;d=c+4|0;e=c;k[d>>2]=0;k[e>>2]=0;a:do if((bL(a)|0)>0){f=0;while(1){if(((ph(a,f)|0)==610?(g=qh(a,f)|0,ed[k[(k[g>>2]|0)+60>>2]&511](g,b)|0):0)?b1(g)|0:0)break;f=f+1|0;if((f|0)>=(bL(a)|0))break a}k[d>>2]=1}while(0);nZ(d,e,1,4,1,0,uY()|0)|0;uY()|0;r=c;return k[e>>2]|0}function ppa(a){a=a|0;k[a>>2]=1073741823;return}function qpa(a){a=a|0;return k[a+64>>2]&16|0}function rpa(a){a=a|0;return k[a+64>>2]&64|0}function spa(a){a=a|0;var b=0;b=a+64|0;k[b>>2]=k[b>>2]|4;return}function tpa(a){a=a|0;var b=0;b=a+64|0;k[b>>2]=k[b>>2]|8;return}function upa(a){a=a|0;var b=0;b=a+64|0;k[b>>2]=k[b>>2]|16;return}function vpa(a){a=a|0;var b=0;b=a+64|0;k[b>>2]=k[b>>2]&1007;return}function wpa(a){a=a|0;var b=0;b=a+64|0;k[b>>2]=k[b>>2]|64;return}function xpa(a){a=a|0;return k[a+68>>2]&4|0}function ypa(a){a=a|0;return k[a+68>>2]&6|0}function zpa(a){a=a|0;var b=0;b=a+68|0;k[b>>2]=k[b>>2]|4;return}function Apa(a){a=a|0;var b=0;b=a+68|0;k[b>>2]=k[b>>2]|2;return}function Bpa(a){a=a|0;var b=0,c=0;b=a+80|0;c=a;a=c+72|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(a|0));p[b>>3]=.17453292519943295;return}function Cpa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0.0,T=0,U=0,V=0,W=0,X=0.0,Y=0,Z=0,_=0,$=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0.0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0.0,Db=0,Eb=0,Fb=0,Gb=0.0,Hb=0,Ib=0,Jb=0.0,Kb=0.0,Lb=0,Mb=0,Nb=0.0,Ob=0.0,Pb=0.0,Sb=0.0,Tb=0.0,Ub=0.0,Vb=0,Wb=0.0,Xb=0.0,Yb=0.0,Zb=0.0,_b=0,$b=0.0,ac=0.0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0;b=r;r=r+1056|0;c=b+1044|0;d=b+1032|0;e=b+1020|0;f=b+1008|0;g=b+996|0;h=b+984|0;i=b+968|0;j=b+832|0;l=b+680|0;m=b+696|0;n=b+392|0;q=b+544|0;s=b+108|0;t=b+408|0;u=b+96|0;v=b+84|0;w=b+72|0;x=b+256|0;y=b+60|0;z=b+48|0;A=b+36|0;C=b+120|0;D=b+24|0;E=b+12|0;F=b;G=a+4|0;H=k[G>>2]|0;I=Rqa(H>>>0>1073741823?-1:H<<2)|0;H=a+8|0;J=k[H>>2]|0;K=J<<1;L=Rqa(K>>>0>1073741823?-1:K<<2)|0;K=Rqa(J>>>0>1073741823?-1:J<<2)|0;Lpa(i);a:do if((k[G>>2]|0)>0){J=a+20|0;M=a+72|0;N=a+40|0;O=a+48|0;P=0;while(1){R=k[J>>2]|0;S=+p[M>>3];T=~~(S*(+p[R+(P*72|0)+16>>3]-+p[O>>3]));U=R+(P*72|0)|0;k[U>>2]=~~(S*(+p[R+(P*72|0)+8>>3]-+p[N>>3]));k[U+4>>2]=T;T=k[J>>2]|0;B=0;U=Ia(45,i|0,k[T+(P*72|0)>>2]|0,k[T+(P*72|0)+4>>2]|0)|0;T=B;B=0;if(T&1){V=78;break}T=k[J>>2]|0;if((U|0)!=0?(R=U+8|0,S=+p[R>>3]-+p[T+(P*72|0)+8>>3],W=U+16|0,X=+p[W>>3]-+p[T+(P*72|0)+16>>3],(S<0.0?-S:S)+(X<0.0?-X:X)<1.0e-20):0){Y=U;Z=R;_=W;$=P;V=8;break}B=0;wa(523,i|0,T+(P*72|0)|0);T=B;B=0;if(T&1){V=78;break}P=P+1|0;T=k[G>>2]|0;if((P|0)>=(T|0)){ba=T;V=3;break}}if((V|0)==3){if((ba|0)<=0){ca=0;V=99;break}WEa(I|0,-1,((ba|0)>1?ba:1)<<2|0)|0;ca=1;V=99;break}else if((V|0)==8){P=j+56|0;N=j+4|0;k[j>>2]=27524;k[P>>2]=27544;B=0;wa(508,j+56|0,N|0);O=B;B=0;if(O&1){O=Rb()|0;da=Q;ea=O}else{k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[P>>2]=27488;B=0;va(448,N|0);O=B;B=0;do if(O&1){M=Rb()|0;fa=Q;ga=M}else{k[N>>2]=27560;M=j+36|0;k[M>>2]=0;k[M+4>>2]=0;k[M+8>>2]=0;k[M+12>>2]=0;k[j+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,N|0,h|0);T=B;B=0;if(T&1){T=Rb()|0;W=Q;Yua(h);Yua(M);Ava(N);fa=W;ga=T;break}Yua(h);B=0;T=Ia(40,j|0,149155,19)|0;W=B;B=0;do if(((((!(W&1)?(B=0,R=Xa(253,T|0,k[Y+48>>2]|0)|0,U=B,B=0,!(U&1)):0)?(B=0,U=Ia(40,R|0,149175,1)|0,R=B,B=0,!(R&1)):0)?(B=0,R=Xa(253,U|0,k[(k[J>>2]|0)+($*72|0)+48>>2]|0)|0,U=B,B=0,!(U&1)):0)?(B=0,Ia(40,R|0,149177,1)|0,R=B,B=0,!(R&1)):0)?(B=0,wa(510,l|0,N|0),R=B,B=0,!(R&1)):0){B=0;ya(424,l|0)|0;R=B;B=0;if(R&1){R=Rb()|0;U=Q;Yua(l);ha=R;ja=U;break}Yua(l);k[j>>2]=27468;k[P>>2]=27488;k[N>>2]=27560;Yua(M);Ava(N);vva(P);U=m+56|0;R=m+4|0;k[m>>2]=27524;k[U>>2]=27544;B=0;wa(508,m+56|0,R|0);ka=B;B=0;if(ka&1){ka=Rb()|0;la=Q;ma=ka}else{k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[U>>2]=27488;B=0;va(448,R|0);ka=B;B=0;do if(ka&1){na=Rb()|0;oa=Q;pa=na}else{k[R>>2]=27560;na=m+36|0;k[na>>2]=0;k[na+4>>2]=0;k[na+8>>2]=0;k[na+12>>2]=0;k[m+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,R|0,g|0);qa=B;B=0;if(qa&1){qa=Rb()|0;ra=Q;Yua(g);Yua(na);Ava(R);oa=ra;pa=qa;break}Yua(g);B=0;qa=Ia(40,m|0,149179,4)|0;ra=B;B=0;do if(ra&1)V=83;else{B=0;sa=Xa(253,qa|0,$+1|0)|0;ta=B;B=0;if(ta&1){V=83;break}B=0;Ia(40,sa|0,149177,1)|0;sa=B;B=0;if(sa&1){V=83;break}B=0;wa(510,n|0,R|0);sa=B;B=0;if(sa&1){V=83;break}B=0;ya(424,n|0)|0;sa=B;B=0;if(sa&1){sa=Rb()|0;ta=Q;Yua(n);xa=sa;za=ta;break}Yua(n);k[m>>2]=27468;k[U>>2]=27488;k[R>>2]=27560;Yua(na);Ava(R);vva(U);ta=q+56|0;sa=q+4|0;k[q>>2]=27524;k[ta>>2]=27544;B=0;wa(508,q+56|0,sa|0);Aa=B;B=0;if(Aa&1){Aa=Rb()|0;Ba=Q;Ca=Aa}else{k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[ta>>2]=27488;B=0;va(448,sa|0);Aa=B;B=0;do if(Aa&1){Da=Rb()|0;Ea=Q;Fa=Da}else{k[sa>>2]=27560;Da=q+36|0;k[Da>>2]=0;k[Da+4>>2]=0;k[Da+8>>2]=0;k[Da+12>>2]=0;k[q+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,sa|0,f|0);Ga=B;B=0;if(Ga&1){Ga=Rb()|0;Ha=Q;Yua(f);Yua(Da);Ava(sa);Ea=Ha;Fa=Ga;break}Yua(f);B=0;Ga=Ia(40,q|0,149184,9)|0;Ha=B;B=0;do if(Ha&1)V=86;else{B=0;Ja=Sa(1,Ga|0,+(+p[Z>>3]))|0;Ka=B;B=0;if(Ka&1){V=86;break}B=0;Ka=Ia(40,Ja|0,149175,1)|0;Ja=B;B=0;if(Ja&1){V=86;break}B=0;Ja=Sa(1,Ka|0,+(+p[_>>3]))|0;Ka=B;B=0;if(Ka&1){V=86;break}B=0;Ka=Ia(40,Ja|0,149194,3)|0;Ja=B;B=0;if(Ja&1){V=86;break}B=0;Ja=Sa(1,Ka|0,+(+p[(k[J>>2]|0)+($*72|0)+8>>3]))|0;Ka=B;B=0;if(Ka&1){V=86;break}B=0;Ka=Ia(40,Ja|0,149175,1)|0;Ja=B;B=0;if(Ja&1){V=86;break}B=0;Ja=Sa(1,Ka|0,+(+p[(k[J>>2]|0)+($*72|0)+16>>3]))|0;Ka=B;B=0;if(Ka&1){V=86;break}B=0;Ia(40,Ja|0,149198,2)|0;Ja=B;B=0;if(Ja&1){V=86;break}B=0;wa(510,s|0,sa|0);Ja=B;B=0;if(Ja&1){V=86;break}B=0;ya(424,s|0)|0;Ja=B;B=0;if(Ja&1){Ja=Rb()|0;Ka=Q;Yua(s);La=Ja;Ma=Ka;break}Yua(s);k[q>>2]=27468;k[ta>>2]=27488;k[sa>>2]=27560;Yua(Da);Ava(sa);vva(ta);Tqa(L);Tqa(I);Tqa(K);Ka=t+56|0;Ja=t+4|0;k[t>>2]=27524;k[Ka>>2]=27544;B=0;wa(508,t+56|0,Ja|0);Na=B;B=0;if(Na&1){Na=Rb()|0;Oa=Q;Pa=Na}else{k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[Ka>>2]=27488;B=0;va(448,Ja|0);Na=B;B=0;do if(Na&1){Qa=Rb()|0;Ra=Q;Ta=Qa}else{k[Ja>>2]=27560;Qa=t+36|0;k[Qa>>2]=0;k[Qa+4>>2]=0;k[Qa+8>>2]=0;k[Qa+12>>2]=0;k[t+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,Ja|0,e|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;Va=Q;Yua(e);Yua(Qa);Ava(Ja);Ra=Va;Ta=Ua;break}Yua(e);B=0;Ua=Ia(40,t|0,149201,86)|0;Va=B;B=0;b:do if(Va&1)V=89;else{B=0;Xa(239,Ua|0,0)|0;Wa=B;B=0;if(Wa&1){V=89;break}Wa=Ab(20)|0;B=0;eb(502,u|0,149090,64);Ya=B;B=0;do if(!(Ya&1)){B=0;eb(502,v|0,149288,8);Za=B;B=0;if(Za&1){Za=Rb()|0;_a=Q;Yua(u);$a=_a;ab=Za;break}B=0;wa(510,w|0,Ja|0);Za=B;B=0;if(Za&1){Za=Rb()|0;bb=1;cb=Za;db=Q}else{B=0;ua(163,Wa|0,u|0,v|0,485,w|0);Za=B;B=0;if(Za&1)fb=1;else{B=0;eb(503,Wa|0,1240,229);B=0;fb=0}Za=Rb()|0;_a=Q;Yua(w);bb=fb;cb=Za;db=_a}Yua(v);Yua(u);if(bb){$a=db;ab=cb}else{gb=cb;hb=db;break b}}else{_a=Rb()|0;$a=Q;ab=_a}while(0);zb(Wa|0);gb=ab;hb=$a}while(0);if((V|0)==89){Ua=Rb()|0;gb=Ua;hb=Q}k[t>>2]=27468;k[Ka>>2]=27488;k[Ja>>2]=27560;Yua(Qa);Ava(Ja);vva(Ka);ib=gb;jb=hb;Opa(i);Qb(ib|0)}while(0);Oa=Ra;Pa=Ta}vva(Ka);kb=Oa;lb=Pa;break a}while(0);if((V|0)==86){Ga=Rb()|0;La=Ga;Ma=Q}k[q>>2]=27468;k[ta>>2]=27488;k[sa>>2]=27560;Yua(Da);Ava(sa);vva(ta);ib=La;jb=Ma;Opa(i);Qb(ib|0)}while(0);Ba=Ea;Ca=Fa}vva(ta);kb=Ba;lb=Ca;break a}while(0);if((V|0)==83){qa=Rb()|0;xa=qa;za=Q}k[m>>2]=27468;k[U>>2]=27488;k[R>>2]=27560;Yua(na);Ava(R);vva(U);ib=xa;jb=za;Opa(i);Qb(ib|0)}while(0);la=oa;ma=pa}vva(U);kb=la;lb=ma;break a}else V=80;while(0);if((V|0)==80){T=Rb()|0;ha=T;ja=Q}k[j>>2]=27468;k[P>>2]=27488;k[N>>2]=27560;Yua(M);Ava(N);vva(P);ib=ha;jb=ja;Opa(i);Qb(ib|0)}while(0);da=fa;ea=ga}vva(P);kb=da;lb=ea;break}else if((V|0)==78){N=Rb()|0;kb=Q;lb=N;break}}else{ca=0;V=99}while(0);c:do if((V|0)==99){ea=k[H>>2]|0;d:do if((ea|0)>0){da=k[a+24>>2]|0;ga=a+20|0;fa=0;ja=0;while(1){ha=k[da+(fa*72|0)+4>>2]|0;j=k[da+(fa*72|0)>>2]|0;X=+p[ha+8>>3]-+p[j+8>>3];S=+p[ha+16>>3]-+p[j+16>>3];if(+aa(+(X*X+S*S))==0.0){mb=fa;break}nb=+ia(+S,+X);o[K+(fa<<2)>>2]=nb;ma=k[ga>>2]|0;la=I+(((j-ma|0)/72|0)<<2)|0;k[L+(ja<<2)>>2]=k[la>>2];j=ja|1;k[la>>2]=ja;la=I+(((ha-ma|0)/72|0)<<2)|0;k[L+(j<<2)>>2]=k[la>>2];k[la>>2]=j;fa=fa+1|0;if((fa|0)>=(ea|0))break d;else ja=ja+2|0}Tqa(L);Tqa(I);Tqa(K);ja=x+56|0;fa=x+4|0;k[x>>2]=27524;k[ja>>2]=27544;B=0;wa(508,x+56|0,fa|0);ga=B;B=0;if(ga&1){ga=Rb()|0;ob=Q;pb=ga}else{k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[ja>>2]=27488;B=0;va(448,fa|0);ga=B;B=0;do if(ga&1){da=Rb()|0;qb=Q;rb=da}else{k[fa>>2]=27560;da=x+36|0;k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;k[da+12>>2]=0;k[x+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,fa|0,d|0);M=B;B=0;if(M&1){M=Rb()|0;j=Q;Yua(d);Yua(da);Ava(fa);qb=j;rb=M;break}Yua(d);B=0;M=Ia(40,x|0,149297,15)|0;j=B;B=0;e:do if(((!(j&1)?(B=0,la=Xa(253,M|0,mb|0)|0,ma=B,B=0,!(ma&1)):0)?(B=0,ma=Ia(40,la|0,149313,5)|0,la=B,B=0,!(la&1)):0)?(B=0,Xa(239,ma|0,0)|0,ma=B,B=0,!(ma&1)):0){ma=Ab(20)|0;B=0;eb(502,y|0,149090,64);la=B;B=0;do if(!(la&1)){B=0;eb(502,z|0,149288,8);ha=B;B=0;if(ha&1){ha=Rb()|0;pa=Q;Yua(y);sb=ha;tb=pa;break}B=0;wa(510,A|0,fa|0);pa=B;B=0;if(pa&1){pa=Rb()|0;ub=1;vb=pa;wb=Q}else{B=0;ua(163,ma|0,y|0,z|0,563,A|0);pa=B;B=0;if(pa&1)xb=1;else{B=0;eb(503,ma|0,1240,229);B=0;xb=0}pa=Rb()|0;ha=Q;Yua(A);ub=xb;vb=pa;wb=ha}Yua(z);Yua(y);if(ub){sb=vb;tb=wb}else{yb=vb;Bb=wb;break e}}else{ha=Rb()|0;sb=ha;tb=Q}while(0);zb(ma|0);yb=sb;Bb=tb}else V=121;while(0);if((V|0)==121){M=Rb()|0;yb=M;Bb=Q}k[x>>2]=27468;k[ja>>2]=27488;k[fa>>2]=27560;Yua(da);Ava(fa);vva(ja);ib=yb;jb=Bb;Opa(i);Qb(ib|0)}while(0);ob=qb;pb=rb}vva(ja);kb=ob;lb=pb;break c}while(0);do if(ca){P=a+80|0;fa=a+24|0;ga=a+20|0;M=0;f:while(1){j=I+(M<<2)|0;U=k[j>>2]|0;g:do if((U|0)>-1){nb=-1.0e3;la=0;na=U;ha=0;pa=j;oa=j;while(1){za=la;xa=na;m=ha;Ca=oa;while(1){m=m+1|0;Ba=Ca;Ca=L+(xa<<2)|0;Fa=xa;xa=k[Ca>>2]|0;X=+o[K+(((Fa|0)/2|0)<<2)>>2];if(!(Fa&1))Cb=X;else Cb=X+(X<0.0?3.141592653589793:-3.141592653589793);if(!(nb>Cb)){Db=m;Eb=Ca;Fb=xa;Gb=Cb;Hb=za;V=136;break}k[Ca>>2]=k[Ba>>2];k[Ba>>2]=k[pa>>2];k[pa>>2]=xa;if((xa|0)<=-1)break;else za=1}if((V|0)==136){V=0;if((Fb|0)>-1){za=pa;nb=Gb;la=Hb;na=Fb;ha=Db;pa=Eb;oa=za;continue}if(!Hb){Ib=Db;break}}za=k[j>>2]|0;if((za|0)>-1){nb=-1.0e3;la=0;na=za;ha=0;pa=j;oa=j}else{V=155;break g}}if((Ib|0)==2){oa=k[j>>2]|0;pa=k[L+(oa<<2)>>2]|0;ha=(oa|0)/2|0;na=(pa|0)/2|0;nb=+o[K+(ha<<2)>>2];if(!(oa&1))Jb=nb;else Jb=nb+(nb<0.0?3.141592653589793:-3.141592653589793);nb=+o[K+(na<<2)>>2];if(!(pa&1))Kb=nb+(nb<0.0?3.141592653589793:-3.141592653589793);else Kb=nb;nb=Kb-Jb;X=nb<0.0?-nb:nb;nb=+p[P>>3];if(!(!(X>=nb)|!(X<=6.283185307179586-nb))?(B=0,va(540,(k[ga>>2]|0)+(M*72|0)|0),pa=B,B=0,pa&1):0){V=77;break f}pa=k[fa>>2]|0;if((k[pa+(ha*72|0)+64>>2]|0)==(k[pa+(na*72|0)+64>>2]|0)){B=0;oa=ya(436,pa+(ha*72|0)|0)|0;pa=B;B=0;if(pa&1){V=77;break f}if(oa)V=152}else V=152;if((V|0)==152?(V=0,B=0,va(541,(k[ga>>2]|0)+(M*72|0)|0),oa=B,B=0,oa&1):0){V=77;break f}oa=k[fa>>2]|0;if((k[oa+(ha*72|0)+8>>2]|0)!=(k[oa+(na*72|0)+8>>2]|0)?(B=0,va(541,(k[ga>>2]|0)+(M*72|0)|0),na=B,B=0,na&1):0){V=77;break f}}else V=155}else V=155;while(0);if((V|0)==155?(V=0,B=0,va(540,(k[ga>>2]|0)+(M*72|0)|0),U=B,B=0,U&1):0){V=77;break}U=k[j>>2]|0;if((U|0)>-1){da=U;while(1){na=k[L+(da<<2)>>2]|0;if((na|0)>-1)da=na;else{Lb=da;break}}k[L+(Lb<<2)>>2]=U}M=M+1|0;if((M|0)>=(k[G>>2]|0)){V=131;break}}if((V|0)==77){M=Rb()|0;kb=Q;lb=M;break c}else if((V|0)==131){Mb=k[H>>2]|0;break}}else Mb=ea;while(0);ea=(Mb|0)>0;h:do if(ea){M=a+24|0;ga=k[M>>2]|0;fa=0;P=0;while(1){ja=k[L+(P<<2)>>2]|0;da=(ja|0)/2|0;j=(ja|0)%2|0;if((k[ga+(da*72|0)+(j<<2)>>2]|0)!=(k[ga+(fa*72|0)>>2]|0))break;k[ga+(da*72|0)+48+(j<<2)>>2]=ga+(fa*72|0);ja=k[M>>2]|0;k[ja+(da*72|0)+56+(j<<2)>>2]=0;j=k[L+((P|1)<<2)>>2]|0;da=(j|0)/2|0;na=(j|0)%2|0;if((k[ja+(da*72|0)+(na<<2)>>2]|0)!=(k[ja+(fa*72|0)+4>>2]|0))break;k[ja+(da*72|0)+48+(na<<2)>>2]=ja+(fa*72|0);ga=k[M>>2]|0;k[ga+(da*72|0)+56+(na<<2)>>2]=1;fa=fa+1|0;if((fa|0)>=(Mb|0)){V=161;break}else P=P+2|0}if((V|0)==161){if(!ea){V=162;break}P=a+24|0;fa=0;while(1){ga=k[P>>2]|0;M=k[ga+(fa*72|0)+4>>2]|0;na=k[ga+(fa*72|0)>>2]|0;nb=+p[M+8>>3]-+p[na+8>>3];X=+p[M+16>>3]-+p[na+16>>3];S=+aa(+(nb*nb+X*X));Nb=+p[ga+(fa*72|0)+16>>3];Ob=+p[ga+(fa*72|0)+24>>3];Pb=+aa(+(Nb*Nb+Ob*Ob));if(Pb==0.0){B=0;M=ya(437,na|0)|0;na=B;B=0;if(na&1){V=75;break}na=k[P>>2]|0;if(!M){M=k[na+(fa*72|0)+4>>2]|0;da=k[(k[na+(fa*72|0)+48>>2]|0)+(1-(k[na+(fa*72|0)+56>>2]|0)<<2)>>2]|0;Sb=+p[M+8>>3]-+p[da+8>>3];Tb=+p[M+16>>3]-+p[da+16>>3];Ub=S/+aa(+(Sb*Sb+Tb*Tb));Vb=na;Wb=S;Xb=Sb*Ub;Yb=Tb*Ub}else{Vb=na;Wb=Pb;Xb=Nb;Yb=Ob}}else{Ub=S/Pb;Vb=ga;Wb=S;Xb=Nb*Ub;Yb=Ob*Ub}ga=nb*Xb+X*Yb<0.0;p[Vb+(fa*72|0)+16>>3]=ga?-Xb:Xb;p[Vb+(fa*72|0)+24>>3]=ga?-Yb:Yb;ga=k[P>>2]|0;Ub=+p[ga+(fa*72|0)+32>>3];Ob=+p[ga+(fa*72|0)+40>>3];Nb=+aa(+(Ub*Ub+Ob*Ob));if(Nb==0.0){B=0;na=ya(437,k[ga+(fa*72|0)+4>>2]|0)|0;da=B;B=0;if(da&1){V=75;break}da=k[P>>2]|0;if(!na){na=k[da+(fa*72|0)>>2]|0;M=k[(k[da+(fa*72|0)+52>>2]|0)+(1-(k[da+(fa*72|0)+60>>2]|0)<<2)>>2]|0;Pb=+p[na+8>>3]-+p[M+8>>3];Tb=+p[na+16>>3]-+p[M+16>>3];Sb=S/+aa(+(Pb*Pb+Tb*Tb));Zb=S;_b=da;$b=Pb*Sb;ac=Tb*Sb}else{Zb=Nb;_b=da;$b=Ub;ac=Ob}}else{Sb=S/Nb;Zb=S;_b=ga;$b=Ub*Sb;ac=Ob*Sb}ga=nb*$b+X*ac<0.0;p[_b+(fa*72|0)+32>>3]=ga?-$b:$b;p[_b+(fa*72|0)+40>>3]=ga?-ac:ac;if(Wb!=0.0?(B=0,va(542,(k[P>>2]|0)+(fa*72|0)|0),ga=B,B=0,ga&1):0){V=76;break}if(Zb!=0.0?(B=0,va(543,(k[P>>2]|0)+(fa*72|0)|0),ga=B,B=0,ga&1):0){V=76;break}fa=fa+1|0;ga=k[H>>2]|0;if((fa|0)>=(ga|0)){bc=P;cc=ga;break h}}if((V|0)==75){P=Rb()|0;kb=Q;lb=P;break c}else if((V|0)==76){P=Rb()|0;kb=Q;lb=P;break c}}P=C+56|0;fa=C+4|0;k[C>>2]=27524;k[P>>2]=27544;B=0;wa(508,C+56|0,fa|0);ga=B;B=0;if(ga&1){ga=Rb()|0;dc=Q;ec=ga}else{k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[P>>2]=27488;B=0;va(448,fa|0);ga=B;B=0;do if(ga&1){da=Rb()|0;fc=Q;gc=da}else{k[fa>>2]=27560;da=C+36|0;k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;k[da+12>>2]=0;k[C+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,fa|0,c|0);M=B;B=0;if(M&1){M=Rb()|0;na=Q;Yua(c);Yua(da);Ava(fa);fc=na;gc=M;break}Yua(c);B=0;M=Ia(40,C|0,149319,51)|0;na=B;B=0;i:do if(!(na&1)?(B=0,Xa(239,M|0,0)|0,ja=B,B=0,!(ja&1)):0){ja=Ab(20)|0;B=0;eb(502,D|0,149090,64);j=B;B=0;do if(!(j&1)){B=0;eb(502,E|0,149288,8);oa=B;B=0;if(oa&1){oa=Rb()|0;ha=Q;Yua(D);hc=oa;ic=ha;break}B=0;wa(510,F|0,fa|0);ha=B;B=0;if(ha&1){ha=Rb()|0;jc=ha;kc=Q;lc=1}else{B=0;ua(163,ja|0,D|0,E|0,657,F|0);ha=B;B=0;if(ha&1)mc=1;else{B=0;eb(503,ja|0,1240,229);B=0;mc=0}ha=Rb()|0;oa=Q;Yua(F);jc=ha;kc=oa;lc=mc}Yua(E);Yua(D);if(lc){hc=jc;ic=kc}else{nc=jc;oc=kc;break i}}else{oa=Rb()|0;hc=oa;ic=Q}while(0);zb(ja|0);nc=hc;oc=ic}else V=179;while(0);if((V|0)==179){M=Rb()|0;nc=M;oc=Q}k[C>>2]=27468;k[P>>2]=27488;k[fa>>2]=27560;Yua(da);Ava(fa);vva(P);ib=nc;jb=oc;Opa(i);Qb(ib|0)}while(0);dc=fc;ec=gc}vva(P);kb=dc;lb=ec;break c}else V=162;while(0);if((V|0)==162){bc=a+24|0;cc=Mb}ea=a+16|0;fa=a+36|0;ga=cc;M=0;j:while(1){if((ga|0)>0){na=0;while(1){B=0;va(544,(k[bc>>2]|0)+(na*72|0)|0);U=B;B=0;if(U&1){V=73;break j}na=na+1|0;U=k[H>>2]|0;if((na|0)>=(U|0)){pc=U;break}}}else pc=ga;k[ea>>2]=0;na=pc;P=0;U=0;while(1){if((U|0)==(na|0))break;if((na|0)>0){j=(P|0)==0;oa=0;ha=U;while(1){pa=k[bc>>2]|0;la=pa+(oa*72|0)|0;B=0;ma=ya(438,la|0)|0;za=B;B=0;xa=za&1;if(j){if(xa){V=72;break j}if(!ma){za=pa+(oa*72|0)|0;B=0;Ca=ya(439,k[za>>2]|0)|0;m=B;B=0;if(m&1){V=72;break j}if(Ca){Ca=k[za>>2]|0;za=k[fa>>2]|0;if(!za){qc=la;rc=0;sc=ha}else{m=k[ea>>2]|0;k[za+(m<<4)>>2]=la;k[za+(m<<4)+8>>2]=0;qc=la;rc=0;sc=ha}while(1){m=1-rc|0;B=0;va(545,qc|0);za=B;B=0;if(za&1){V=70;break j}za=sc+1|0;k[qc+12>>2]=k[ea>>2];ta=k[qc+(m<<2)>>2]|0;if((Ca|0)==(ta|0)){tc=m;uc=za;vc=qc;break}B=0;Ba=ya(439,ta|0)|0;ta=B;B=0;if(ta&1){V=70;break j}if(Ba){tc=m;uc=za;vc=qc;break}Ba=k[qc+56+(m<<2)>>2]|0;qc=k[qc+48+(m<<2)>>2]|0;rc=Ba;sc=za}Ca=k[fa>>2]|0;ja=k[ea>>2]|0;if(Ca){k[Ca+(ja<<4)+4>>2]=vc;k[Ca+(ja<<4)+12>>2]=tc}k[ea>>2]=ja+1;wc=uc}else wc=ha}else wc=ha;B=0;ja=ya(438,la|0)|0;Ca=B;B=0;if(Ca&1){V=72;break j}if(!ja){ja=pa+(oa*72|0)+4|0;B=0;Ca=ya(439,k[ja>>2]|0)|0;za=B;B=0;if(za&1){V=72;break j}if(Ca){Ca=k[ja>>2]|0;ja=k[fa>>2]|0;if(!ja){xc=la;yc=1;zc=wc}else{za=k[ea>>2]|0;k[ja+(za<<4)>>2]=la;k[ja+(za<<4)+8>>2]=1;xc=la;yc=1;zc=wc}while(1){za=1-yc|0;B=0;va(545,xc|0);ja=B;B=0;if(ja&1){V=71;break j}ja=zc+1|0;k[xc+12>>2]=k[ea>>2];Ba=k[xc+(za<<2)>>2]|0;if((Ca|0)==(Ba|0)){Ac=za;Bc=ja;Cc=xc;break}B=0;m=ya(439,Ba|0)|0;Ba=B;B=0;if(Ba&1){V=71;break j}if(m){Ac=za;Bc=ja;Cc=xc;break}m=k[xc+56+(za<<2)>>2]|0;xc=k[xc+48+(za<<2)>>2]|0;yc=m;zc=ja}Ca=k[fa>>2]|0;ja=k[ea>>2]|0;if(Ca){k[Ca+(ja<<4)+4>>2]=Cc;k[Ca+(ja<<4)+12>>2]=Ac}k[ea>>2]=ja+1;Dc=Bc}else Dc=wc}else Dc=wc}else{if(xa){V=222;break j}if(!ma){ja=k[pa+(oa*72|0)>>2]|0;Ca=k[fa>>2]|0;if(!Ca){Ec=la;Fc=0;Gc=ha}else{m=k[ea>>2]|0;k[Ca+(m<<4)>>2]=la;k[Ca+(m<<4)+8>>2]=0;Ec=la;Fc=0;Gc=ha}while(1){m=1-Fc|0;B=0;va(545,Ec|0);Ca=B;B=0;if(Ca&1){V=223;break j}Ca=Gc+1|0;k[Ec+12>>2]=k[ea>>2];za=k[Ec+(m<<2)>>2]|0;if((ja|0)==(za|0)){Hc=m;Ic=Ca;Jc=Ec;break}B=0;Ba=ya(439,za|0)|0;za=B;B=0;if(za&1){V=223;break j}if(Ba){Hc=m;Ic=Ca;Jc=Ec;break}Ba=k[Ec+56+(m<<2)>>2]|0;Ec=k[Ec+48+(m<<2)>>2]|0;Fc=Ba;Gc=Ca}ma=k[fa>>2]|0;xa=k[ea>>2]|0;if(ma){k[ma+(xa<<4)+4>>2]=Jc;k[ma+(xa<<4)+12>>2]=Hc}k[ea>>2]=xa+1;B=0;va(541,ja|0);xa=B;B=0;if(xa&1){V=222;break j}else Kc=Ic}else Kc=ha;B=0;xa=ya(438,la|0)|0;ma=B;B=0;if(ma&1){V=222;break j}if(!xa){xa=k[pa+(oa*72|0)+4>>2]|0;ma=k[fa>>2]|0;if(!ma){Lc=la;Mc=1;Nc=Kc}else{Ca=k[ea>>2]|0;k[ma+(Ca<<4)>>2]=la;k[ma+(Ca<<4)+8>>2]=1;Lc=la;Mc=1;Nc=Kc}while(1){Ca=1-Mc|0;B=0;va(545,Lc|0);ma=B;B=0;if(ma&1){V=224;break j}ma=Nc+1|0;k[Lc+12>>2]=k[ea>>2];Ba=k[Lc+(Ca<<2)>>2]|0;if((xa|0)==(Ba|0)){Oc=Ca;Pc=ma;Qc=Lc;break}B=0;m=ya(439,Ba|0)|0;Ba=B;B=0;if(Ba&1){V=224;break j}if(m){Oc=Ca;Pc=ma;Qc=Lc;break}m=k[Lc+56+(Ca<<2)>>2]|0;Lc=k[Lc+48+(Ca<<2)>>2]|0;Mc=m;Nc=ma}la=k[fa>>2]|0;pa=k[ea>>2]|0;if(la){k[la+(pa<<4)+4>>2]=Qc;k[la+(pa<<4)+12>>2]=Oc}k[ea>>2]=pa+1;B=0;va(541,xa|0);pa=B;B=0;if(pa&1){V=222;break j}else Dc=Pc}else Dc=Kc}oa=oa+1|0;pa=k[H>>2]|0;if((oa|0)>=(pa|0)){Rc=pa;Sc=Dc;break}else ha=Dc}}else{Rc=na;Sc=U}P=P+1|0;if((P|0)>=2)break;else{na=Rc;U=Sc}}if(!M){U=k[ea>>2]|0;B=0;na=ya(422,(U>>>0>268435455?-1:U<<4)|0)|0;P=B;B=0;if(P&1){V=74;break}if(U){P=na+(U<<4)|0;U=na;do{B=0;va(546,U|0);ha=B;B=0;if(ha&1){Tc=na;V=247;break j}U=U+16|0}while((U|0)!=(P|0))}k[fa>>2]=na}P=M+1|0;if((P|0)>=2){V=250;break}ga=k[H>>2]|0;M=P}switch(V|0){case 70:{M=Rb()|0;kb=Q;lb=M;break c;break}case 71:{M=Rb()|0;kb=Q;lb=M;break c;break}case 72:{M=Rb()|0;kb=Q;lb=M;break c;break}case 73:{M=Rb()|0;kb=Q;lb=M;break c;break}case 74:{M=Rb()|0;kb=Q;lb=M;break c;break}case 222:{M=Rb()|0;kb=Q;lb=M;break c;break}case 223:{M=Rb()|0;kb=Q;lb=M;break c;break}case 224:{M=Rb()|0;kb=Q;lb=M;break c;break}case 247:{M=Rb()|0;ga=Q;Tqa(Tc);ib=M;jb=ga;Opa(i);Qb(ib|0);break}case 250:{Tqa(L);Tqa(I);Tqa(K);Opa(i);r=b;return}}}while(0);ib=lb;jb=kb;Opa(i);Qb(ib|0)}function Dpa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;b=r;r=r+176|0;c=b+152|0;d=b+16|0;e=b;if((k[a>>2]|0)<=0){f=a+20|0;g=k[f>>2]|0;if(g)Tqa(g);k[f>>2]=0;f=a+24|0;g=k[f>>2]|0;if(g)Tqa(g);k[f>>2]=0;f=a+28|0;g=k[f>>2]|0;if(g){Opa(g);Sqa(g)}k[f>>2]=0;f=a+36|0;g=k[f>>2]|0;if(g)Tqa(g);k[f>>2]=0;k[a+16>>2]=0;f=k[a+32>>2]|0;if(f)Tqa(f);f=a+80|0;g=a;a=g+40|0;do{k[g>>2]=0;g=g+4|0}while((g|0)<(a|0));p[f>>3]=.17453292519943295;r=b;return}f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);a=B;B=0;if(a&1){a=Rb(0)|0;h=a;vva(f);Dd(h)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);a=B;B=0;do if(a&1){i=Rb(0)|0;j=i}else{k[g>>2]=27560;i=d+36|0;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;k[i+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);l=B;B=0;if(l&1){l=Rb(0)|0;Yua(c);Yua(i);Ava(g);j=l;break}Yua(c);B=0;Ia(40,d|0,149371,63)|0;l=B;B=0;if(!(l&1)?(B=0,wa(510,e|0,g|0),l=B,B=0,!(l&1)):0){B=0;ya(424,e|0)|0;l=B;B=0;if(l&1){l=Rb(0)|0;Yua(e);m=l;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(i);Ava(g);vva(f);Dd(m)}else{Yua(e);k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(i);Ava(g);vva(f);r=b;return}}l=Rb(0)|0;m=l;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(i);Ava(g);vva(f);Dd(m)}while(0);h=j;vva(f);Dd(h)}function Epa(a,b){a=a|0;b=b|0;return (b-(k[a+24>>2]|0)|0)/72|0|0}function Fpa(a,b){a=a|0;b=b|0;return (b-(k[a+20>>2]|0)|0)/72|0|0}function Gpa(a,b){a=a|0;b=b|0;return (b-(k[a+24>>2]|0)|0)/72|0|0}function Hpa(){ppa(41968);return}function Ipa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;k[a>>2]=b;k[a+4>>2]=0;p[a+8>>3]=-1.0;k[a+16>>2]=-1;d=a+20|0;e=Rqa(b>>>0>44739242?-1:b*96|0)|0;if(b){f=e+(b*96|0)|0;b=e;do{g=b+32|0;h=g+40|0;do{k[g>>2]=0;g=g+4|0}while((g|0)<(h|0));b=b+96|0}while((b|0)!=(f|0))}k[d>>2]=e;k[a+24>>2]=0;k[a+28>>2]=c;e=Rqa(c>>>0>89478485?-1:c*48|0)|0;k[a+32>>2]=e;return}function Jpa(a){a=a|0;var b=0,c=0;b=a+20|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=a+32|0;a=k[b>>2]|0;if(!a)return;Tqa(a);k[b>>2]=0;return}function Kpa(a,b){a=a|0;b=+b;var c=0.0;c=1.0/(b*b);p[a>>3]=c;p[a+8>>3]=0.0;p[a+16>>3]=c;return}function Lpa(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+8|0;k[b>>2]=0;k[a+12>>2]=0;c=Qqa(36)|0;B=0;va(480,c|0);d=B;B=0;if(d&1){d=Rb()|0;Sqa(c);Qb(d|0)}else{k[a>>2]=c;d=Qqa(24)|0;k[d>>2]=41980;e=d+4|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;ih(c,d)|0;k[b>>2]=(k[b>>2]|0)+1;k[a+4>>2]=d;return}}function Mpa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=a+8|0;k[d>>2]=0;k[a+12>>2]=0;e=Qqa(36)|0;B=0;va(480,e|0);f=B;B=0;if(f&1){f=Rb()|0;Sqa(e);Qb(f|0)}k[a>>2]=e;f=Qqa(24)|0;k[f>>2]=41980;g=f+4|0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[g+16>>2]=0;ih(e,f)|0;k[d>>2]=(k[d>>2]|0)+1;k[a+4>>2]=f;if((c|0)==-1)h=k[b+44>>2]|0;else h=c;if((h|0)<=0)return;c=b+8|0;b=0;do{Npa(a,(k[c>>2]|0)+(b*72|0)|0);b=b+1|0}while((b|0)!=(h|0));return}function Npa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;c=r;r=r+16|0;d=c;e=k[b>>2]|0;f=k[b+4>>2]|0;g=a+4|0;h=k[g>>2]|0;a:do if(!h){i=g;j=12}else{l=h;m=1073741824;while(1){n=l+4|0;o=k[n>>2]|0;if((o|0)>=0){p=l;q=o;s=m;break}k[n>>2]=o+-1;m=m>>1;o=(m&e|0)!=0;n=l+8+(((m&f|0)!=0?(o?3:2):o&1)<<2)|0;l=k[n>>2]|0;if(!l){i=n;j=12;break a}}if((q|0)>3)if((k[p+20>>2]|0)==(b|0)){r=c;return}else j=7;else if((q|0)<=2)if((q|0)<=1){if((q|0)>0)j=11}else j=9;else j=7;if((j|0)==7)if((k[p+16>>2]|0)==(b|0)){r=c;return}else j=9;if((j|0)==9)if((k[p+12>>2]|0)==(b|0)){r=c;return}else j=11;if((j|0)==11?(k[p+8>>2]|0)==(b|0):0){r=c;return}l=d+4|0;m=d+8|0;n=d+12|0;o=a+8|0;t=p;u=s;while(1){v=t+4|0;w=k[v>>2]|0;if((w|0)!=4){x=w;y=t;break a}w=t+8|0;k[d>>2]=k[w>>2];k[l>>2]=k[t+12>>2];k[m>>2]=k[t+16>>2];k[n>>2]=k[t+20>>2];k[v>>2]=-4;u=u>>1;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;w=k[d>>2]|0;v=(k[w>>2]&u|0)!=0;z=t+8+(((k[w+4>>2]&u|0)!=0?(v?3:2):v&1)<<2)|0;v=k[z>>2]|0;if(!v){A=Qqa(24)|0;k[A>>2]=41980;B=A+4|0;k[B>>2]=0;k[B+4>>2]=0;k[B+8>>2]=0;k[B+12>>2]=0;k[B+16>>2]=0;ih(k[a>>2]|0,A)|0;k[o>>2]=(k[o>>2]|0)+1;k[z>>2]=A;C=k[d>>2]|0;D=A}else{C=w;D=v}v=D+4|0;w=k[v>>2]|0;k[v>>2]=w+1;k[D+8+(w<<2)>>2]=C;w=k[l>>2]|0;v=(k[w>>2]&u|0)!=0;A=t+8+(((k[w+4>>2]&u|0)!=0?(v?3:2):v&1)<<2)|0;v=k[A>>2]|0;if(!v){z=Qqa(24)|0;k[z>>2]=41980;B=z+4|0;k[B>>2]=0;k[B+4>>2]=0;k[B+8>>2]=0;k[B+12>>2]=0;k[B+16>>2]=0;ih(k[a>>2]|0,z)|0;k[o>>2]=(k[o>>2]|0)+1;k[A>>2]=z;E=k[l>>2]|0;F=z}else{E=w;F=v}v=F+4|0;w=k[v>>2]|0;k[v>>2]=w+1;k[F+8+(w<<2)>>2]=E;w=k[m>>2]|0;v=(k[w>>2]&u|0)!=0;z=t+8+(((k[w+4>>2]&u|0)!=0?(v?3:2):v&1)<<2)|0;v=k[z>>2]|0;if(!v){A=Qqa(24)|0;k[A>>2]=41980;B=A+4|0;k[B>>2]=0;k[B+4>>2]=0;k[B+8>>2]=0;k[B+12>>2]=0;k[B+16>>2]=0;ih(k[a>>2]|0,A)|0;k[o>>2]=(k[o>>2]|0)+1;k[z>>2]=A;G=k[m>>2]|0;H=A}else{G=w;H=v}v=H+4|0;w=k[v>>2]|0;k[v>>2]=w+1;k[H+8+(w<<2)>>2]=G;w=k[n>>2]|0;v=(k[w>>2]&u|0)!=0;A=t+8+(((k[w+4>>2]&u|0)!=0?(v?3:2):v&1)<<2)|0;v=k[A>>2]|0;if(!v){z=Qqa(24)|0;k[z>>2]=41980;B=z+4|0;k[B>>2]=0;k[B+4>>2]=0;k[B+8>>2]=0;k[B+12>>2]=0;k[B+16>>2]=0;ih(k[a>>2]|0,z)|0;k[o>>2]=(k[o>>2]|0)+1;k[A>>2]=z;I=k[n>>2]|0;J=z}else{I=w;J=v}v=J+4|0;w=k[v>>2]|0;k[v>>2]=w+1;k[J+8+(w<<2)>>2]=I;w=(u&e|0)!=0;v=t+8+(((u&f|0)!=0?(w?3:2):w&1)<<2)|0;t=k[v>>2]|0;if(!t){K=o;L=a;M=v;j=19;break}}}while(0);if((j|0)==12){K=a+8|0;L=a;M=i;j=19}if((j|0)==19){j=Qqa(24)|0;k[j>>2]=41980;i=j+4|0;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;k[i+12>>2]=0;k[i+16>>2]=0;ih(k[L>>2]|0,j)|0;k[K>>2]=(k[K>>2]|0)+1;k[M>>2]=j;x=k[j+4>>2]|0;y=j}k[y+4>>2]=x+1;k[y+8+(x<<2)>>2]=b;b=a+12|0;k[b>>2]=(k[b>>2]|0)+1;r=c;return}function Opa(a){a=a|0;var b=0;b=k[a>>2]|0;if(b){jh(b);Sqa(b)}k[a+4>>2]=0;return}function Ppa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;d=r;r=r+480|0;e=d+360|0;f=d+240|0;g=d+120|0;h=d;i=(b|0)<1073741824?((b|0)<0?0:b):1073741823;b=(c|0)<1073741824?((c|0)<0?0:c):1073741823;c=k[a+4>>2]|0;a=k[c+4>>2]|0;if(!a){j=0;r=d;return j|0}a:do if((a|0)<0){l=c;m=1073741824;n=0;o=0;while(1){p=m>>1;q=(p&i|0)!=0;s=(p&b|0)!=0?(q?3:2):q&1;q=k[l+8+(s<<2)>>2]|0;if(!q){t=l;u=m;v=n;w=o;break}x=k[q+4>>2]|0;if(!x){t=l;u=m;v=n;w=o;break}if((x|0)<0){l=q;m=p;n=((s&1|0)!=0?p:0)+n|0;o=((s&2|0)!=0?p:0)+o|0}else{y=x;z=q;break a}}k[e>>2]=t;o=k[t+4>>2]|0;n=(o|0)>0?o:4;k[f>>2]=n;k[g>>2]=v;k[h>>2]=w;o=n;n=t;m=u;l=u;q=0;x=0;b:while(1){p=m+i|0;s=i-m|0;A=m+b|0;B=b-m|0;C=o;D=n;E=l;F=q;c:while(1){G=f+(F<<2)|0;H=D+4|0;I=g+(F<<2)|0;J=h+(F<<2)|0;K=C;L=E;d:while(1){M=K;while(1){if(!M){N=L;break d}O=M+-1|0;k[G>>2]=O;if((k[H>>2]|0)>0){P=O;Q=D;R=L;S=F;break c}T=k[D+8+(O<<2)>>2]|0;if(!T)M=O;else{U=O;V=T;break}}M=L>>1;T=(k[I>>2]|0)+((U&1|0)!=0?M:0)|0;O=(k[J>>2]|0)+((U&2|0)!=0?M:0)|0;if((p|0)>(T|0)?(s|0)<(T+M|0)&(A|0)>(O|0)&(B|0)<(O+M|0):0){W=V;X=M;Y=T;Z=O;_=18;break}K=U;L=M<<1}if((_|0)==18){_=0;L=F+1|0;k[e+(L<<2)>>2]=W;K=k[W+4>>2]|0;J=(K|0)>0?K:4;k[f+(L<<2)>>2]=J;k[g+(L<<2)>>2]=Y;k[h+(L<<2)>>2]=Z;C=J;D=W;E=X;F=L;continue}L=F+-1|0;if(!F){j=x;break b}C=k[f+(L<<2)>>2]|0;D=k[e+(L<<2)>>2]|0;E=N<<1;F=L}F=k[Q+8+(P<<2)>>2]|0;E=i-(k[F>>2]|0)|0;D=(E|0)<0?0-E|0:E;E=b-(k[F+4>>2]|0)|0;C=(E|0)<0?0-E|0:E;E=(D|0)>(C|0)?D:C;C=(E|0)<(m|0);o=P;n=Q;m=C?E:m;l=R;q=S;x=C?F:x}r=d;return j|0}else{y=a;z=c}while(0);c=z+8|0;z=1073741824;a=0;S=0;while(1){R=k[c+(a<<2)>>2]|0;Q=i-(k[R>>2]|0)|0;P=(Q|0)<0?0-Q|0:Q;Q=b-(k[R+4>>2]|0)|0;N=(Q|0)<0?0-Q|0:Q;Q=(P|0)>(N|0)?P:N;N=(Q|0)<(z|0);P=N?R:S;a=a+1|0;if((a|0)==(y|0)){j=P;break}else{z=N?Q:z;S=P}}r=d;return j|0}function Qpa(a){a=a|0;Sqa(a);return}function Rpa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,149456,68);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,149562,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,32,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function Spa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,149456,68);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,149553,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,33,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function Tpa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,149456,68);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,149550,2);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,34,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function Upa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,149456,68);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,149539,10);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,35,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function Vpa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,149456,68);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,149534,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,36,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function Wpa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149435,20)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,149456,68);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,149525,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,37,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function Xpa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;k[a>>2]=c;k[a+4>>2]=b;k[a+8>>2]=0;d=Rqa(c>>>0>1073741823?-1:c<<2)|0;k[a+12>>2]=d;e=Rqa(b>>>0>357913941?-1:b*12|0)|0;k[a+16>>2]=e;if(!c)return;WEa(d|0,-1,c<<2|0)|0;return}function Ypa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=(k[a+12>>2]|0)+(((((b|0)<0?0-b|0:b)|0)%(k[a>>2]|0)|0)<<2)|0;l=k[j>>2]|0;a:do if((l|0)>-1){m=k[a+16>>2]|0;n=l;while(1){if((k[m+(n*12|0)>>2]|0)==(b|0)?(k[m+(n*12|0)+4>>2]|0)==(c|0):0){o=n;break}n=k[m+(n*12|0)+8>>2]|0;if((n|0)<=-1)break a}r=d;return o|0}while(0);l=a+4|0;n=a+8|0;m=k[n>>2]|0;if((k[l>>2]|0)>(m|0)){p=k[a+16>>2]|0;k[p+(m*12|0)>>2]=b;k[p+(m*12|0)+4>>2]=c;k[p+(m*12|0)+8>>2]=k[j>>2];k[j>>2]=m;m=k[n>>2]|0;k[n>>2]=m+1;o=m;r=d;return o|0}o=f+56|0;d=f+4|0;k[f>>2]=27524;k[o>>2]=27544;B=0;wa(508,f+56|0,d|0);m=B;B=0;if(m&1){m=Rb()|0;q=Q;s=m;vva(o);Qb(s|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[o>>2]=27488;B=0;va(448,d|0);m=B;B=0;do if(m&1){j=Rb()|0;t=Q;u=j}else{k[d>>2]=27560;j=f+36|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,d|0,e|0);p=B;B=0;if(p&1){p=Rb()|0;c=Q;Yua(e);Yua(j);Ava(d);t=c;u=p;break}Yua(e);B=0;p=Ia(40,f|0,149606,37)|0;c=B;B=0;if((((!(c&1)?(B=0,c=Xa(253,p|0,k[n>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,c|0,149644,8)|0,c=B,B=0,!(c&1)):0)?(B=0,c=Xa(253,p|0,k[l>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,Xa(239,c|0,0)|0,c=B,B=0,!(c&1)):0){c=Ab(20)|0;B=0;eb(502,g|0,149653,63);p=B;B=0;do if(!(p&1)){B=0;eb(502,h|0,149717,3);b=B;B=0;if(b&1){b=Rb()|0;a=Q;Yua(g);v=a;w=b;break}B=0;wa(510,i|0,d|0);b=B;B=0;if(b&1){b=Rb()|0;x=Q;y=b;z=1}else{B=0;ua(163,c|0,g|0,h|0,50,i|0);b=B;B=0;if(b&1)A=1;else{B=0;eb(503,c|0,1240,229);B=0;A=0}b=Rb()|0;a=Q;Yua(i);x=a;y=b;z=A}Yua(h);Yua(g);if(z){v=x;w=y}else{C=x;D=y;k[f>>2]=27468;k[o>>2]=27488;k[d>>2]=27560;Yua(j);Ava(d);vva(o);Qb(D|0)}}else{b=Rb()|0;v=Q;w=b}while(0);zb(c|0);C=v;D=w;k[f>>2]=27468;k[o>>2]=27488;k[d>>2]=27560;Yua(j);Ava(d);vva(o);Qb(D|0)}p=Rb()|0;C=Q;D=p;k[f>>2]=27468;k[o>>2]=27488;k[d>>2]=27560;Yua(j);Ava(d);vva(o);Qb(D|0)}while(0);q=t;s=u;vva(o);Qb(s|0);return 0}function Zpa(a,b){a=a|0;b=b|0;return k[(k[a+16>>2]|0)+(b*12|0)>>2]|0}function _pa(a,b){a=a|0;b=b|0;return k[(k[a+16>>2]|0)+(b*12|0)+4>>2]|0}function $pa(a){a=a|0;return k[a+8>>2]|0}function aqa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((b|0)>(c|0)){d=Ypa(a,c,b)|0;return d|0}else{d=Ypa(a,b,c)|0;return d|0}return 0}function bqa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;if((b|0)>(c|0)){d=k[(k[a+12>>2]|0)+(((((c|0)<0?0-c|0:c)|0)%(k[a>>2]|0)|0)<<2)>>2]|0;if((d|0)<=-1){e=-1;return e|0}f=k[a+16>>2]|0;g=d;while(1){if((k[f+(g*12|0)>>2]|0)==(c|0)?(k[f+(g*12|0)+4>>2]|0)==(b|0):0){e=g;h=12;break}g=k[f+(g*12|0)+8>>2]|0;if((g|0)<=-1){e=-1;h=12;break}}if((h|0)==12)return e|0}else{g=k[(k[a+12>>2]|0)+(((((b|0)<0?0-b|0:b)|0)%(k[a>>2]|0)|0)<<2)>>2]|0;if((g|0)<=-1){e=-1;return e|0}f=k[a+16>>2]|0;a=g;while(1){if((k[f+(a*12|0)>>2]|0)==(b|0)?(k[f+(a*12|0)+4>>2]|0)==(c|0):0){e=a;h=12;break}a=k[f+(a*12|0)+8>>2]|0;if((a|0)<=-1){e=-1;h=12;break}}if((h|0)==12)return e|0}return 0}function cqa(a){a=a|0;k[a>>2]=0;p[a+8>>3]=0.0;k[a+16>>2]=0;return}function dqa(a,b,c){a=a|0;b=b|0;c=c|0;k[a>>2]=b;p[a+8>>3]=-1.0;k[a+16>>2]=c;return}function eqa(a){a=a|0;return +p[a+8>>3]<0.0|0}function fqa(a){a=a|0;return +p[a+8>>3]>=0.0|0}function gqa(a){a=a|0;var b=0,c=0;if(!(+p[a+8>>3]<0.0)){b=0;return b|0}c=k[a+16>>2]|0;if(!c){b=0;return b|0}b=ypa(c)|0;return b|0}function hqa(a){a=a|0;k[(k[a>>2]|0)+64>>2]=a;j[(k[a>>2]|0)+60>>1]=8;return}function iqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=Qqa(4)|0;f=k[b>>2]|0;b=Rc[k[(k[f>>2]|0)+48>>2]&63](f,k[c>>2]|0,d)|0;k[e>>2]=b;k[a>>2]=e;return}function jqa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(!e){kqa(a,b,0,d);return}b=k[d+52>>2]|0;d=Rqa(b)|0;if((b|0)>0){e=0;do{i[d+e>>0]=(k[c+(e<<2)>>2]|0)!=0&1;e=e+1|0}while((e|0)!=(b|0))}k[a>>2]=d;return}function kqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0;c=r;r=r+368|0;e=c+344|0;f=c+208|0;g=c+196|0;h=c+184|0;j=c+36|0;l=c+48|0;m=c+24|0;n=c+12|0;o=c;nqa(d);p=k[d+56>>2]|0;q=p*3|0;s=Rqa(q)|0;if(p)WEa(s|0,0,q|0)|0;q=d+40|0;if((k[q>>2]&-2|0)!=300){t=f+56|0;u=f+4|0;k[f>>2]=27524;k[t>>2]=27544;B=0;wa(508,f+56|0,u|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;x=v;vva(t);Qb(x|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[t>>2]=27488;B=0;va(448,u|0);v=B;B=0;do if(v&1){y=Rb()|0;z=Q;A=y}else{k[u>>2]=27560;y=f+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,u|0,e|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(e);Yua(y);Ava(u);z=D;A=C;break}Yua(e);B=0;C=Ia(40,f|0,149721,19)|0;D=B;B=0;a:do if(!(D&1)?(B=0,Xa(239,C|0,0)|0,E=B,B=0,!(E&1)):0){E=Ab(20)|0;B=0;eb(502,g|0,149741,92);F=B;B=0;do if(!(F&1)){B=0;eb(502,h|0,149834,38);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(g);I=G;J=H;break}B=0;wa(510,j|0,u|0);H=B;B=0;if(H&1){H=Rb()|0;K=H;L=Q;M=1}else{B=0;ua(163,E|0,g|0,h|0,77,j|0);H=B;B=0;if(H&1)N=1;else{B=0;eb(503,E|0,1240,229);B=0;N=0}H=Rb()|0;G=Q;Yua(j);K=H;L=G;M=N}Yua(h);Yua(g);if(M){I=K;J=L}else{O=K;P=L;break a}}else{G=Rb()|0;I=G;J=Q}while(0);zb(E|0);O=I;P=J}else R=23;while(0);if((R|0)==23){C=Rb()|0;O=C;P=Q}k[f>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(t);S=P;T=O;Qb(T|0)}while(0);w=z;x=A;vva(t);Qb(x|0)}if((p|0)>0){x=0;do{if(i[b+x>>0]|0){t=x*3|0;i[s+t>>0]=1;i[s+(t+1)>>0]=1;i[s+(t+2)>>0]=1}x=x+1|0}while((x|0)<(p|0))}doa(d);if((k[q>>2]|0)!=300){k[a>>2]=s;r=c;return}q=k[d+60>>2]|0;if((q|0)<=0){k[a>>2]=s;r=c;return}p=k[d+76>>2]|0;x=d+72|0;d=0;b:while(1){t=d<<2;A=(k[p+((t|3)<<2)>>2]|0)+-1|0;c:do if(((A|0)!=-2?(i[b+((k[p+((t|2)<<2)>>2]|0)+-1)>>0]|0)!=0:0)?(i[b+A>>0]|0)==0:0){z=k[p+(t<<2)>>2]|0;w=A*3|0;O=k[x>>2]|0;P=w+1|0;u=w+2|0;switch(((k[O+(u<<2)>>2]|0)==(z|0)?2:(k[O+(P<<2)>>2]|0)==(z|0)?1:(k[O+(w<<2)>>2]|0)==(z|0)?0:-9999)|0){case 0:{i[s+w>>0]=1;i[s+u>>0]=1;break c;break}case 1:{i[s+P>>0]=1;i[s+w>>0]=1;break c;break}case 2:{i[s+u>>0]=1;i[s+P>>0]=1;break c;break}default:break b}}while(0);d=d+1|0;if((d|0)>=(q|0)){R=64;break}}if((R|0)==64){k[a>>2]=s;r=c;return}c=l+56|0;s=l+4|0;k[l>>2]=27524;k[c>>2]=27544;B=0;wa(508,l+56|0,s|0);a=B;B=0;if(a&1){a=Rb()|0;U=Q;V=a;vva(c);Qb(V|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[c>>2]=27488;B=0;va(448,s|0);a=B;B=0;do if(a&1){q=Rb()|0;W=Q;X=q}else{k[s>>2]=27560;q=l+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[l+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,s|0,e|0);d=B;B=0;if(d&1){d=Rb()|0;x=Q;Yua(e);Yua(q);Ava(s);W=x;X=d;break}Yua(e);B=0;d=Ia(40,l|0,149873,25)|0;x=B;B=0;d:do if(!(x&1)?(B=0,Xa(239,d|0,0)|0,p=B,B=0,!(p&1)):0){p=Ab(20)|0;B=0;eb(502,m|0,149741,92);b=B;B=0;do if(!(b&1)){B=0;eb(502,n|0,149834,38);A=B;B=0;if(A&1){A=Rb()|0;t=Q;Yua(m);Y=A;Z=t;break}B=0;wa(510,o|0,s|0);t=B;B=0;if(t&1){t=Rb()|0;_=1;$=Q;aa=t}else{B=0;ua(163,p|0,m|0,n|0,125,o|0);t=B;B=0;if(t&1)ba=1;else{B=0;eb(503,p|0,1240,229);B=0;ba=0}t=Rb()|0;A=Q;Yua(o);_=ba;$=A;aa=t}Yua(n);Yua(m);if(_){Y=aa;Z=$}else{ca=$;da=aa;break d}}else{t=Rb()|0;Y=t;Z=Q}while(0);zb(p|0);ca=Z;da=Y}else R=55;while(0);if((R|0)==55){d=Rb()|0;ca=Q;da=d}k[l>>2]=27468;k[c>>2]=27488;k[s>>2]=27560;Yua(q);Ava(s);vva(c);S=ca;T=da;Qb(T|0)}while(0);U=W;V=X;vva(c);Qb(V|0)}function lqa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;nqa(b);switch(k[b+48>>2]|0){case 621:{j=3;break}case 623:{j=6;break}case 625:{j=9;break}default:{l=e+56|0;m=e+4|0;k[e>>2]=27524;k[l>>2]=27544;B=0;wa(508,e+56|0,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(l);Qb(p|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[l>>2]=27488;B=0;va(448,m|0);n=B;B=0;do if(n&1){q=Rb()|0;s=Q;t=q}else{k[m>>2]=27560;q=e+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,m|0,d|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(d);Yua(q);Ava(m);s=v;t=u;break}Yua(d);B=0;u=Ia(40,e|0,150248,32)|0;v=B;B=0;if(!(v&1)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,f|0,149899,92);v=B;B=0;do if(!(v&1)){B=0;eb(502,g|0,149992,17);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(f);y=x;z=w;break}B=0;wa(510,h|0,m|0);w=B;B=0;if(w&1){w=Rb()|0;A=Q;C=w;D=1}else{B=0;ua(163,u|0,f|0,g|0,24,h|0);w=B;B=0;if(w&1)E=1;else{B=0;eb(503,u|0,1240,229);B=0;E=0}w=Rb()|0;x=Q;Yua(h);A=x;C=w;D=E}Yua(g);Yua(f);if(D){y=A;z=C}else{F=A;G=C;k[e>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);Qb(G|0)}}else{w=Rb()|0;y=Q;z=w}while(0);zb(u|0);F=y;G=z;k[e>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);Qb(G|0)}v=Rb()|0;F=Q;G=v;k[e>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);Qb(G|0)}while(0);o=s;p=t;vva(l);Qb(p|0)}}p=k[b+64>>2]|0;l=Rqa(p)|0;if(p)WEa(l|0,0,p|0)|0;p=k[b+56>>2]|0;if((p|0)<=0){k[a>>2]=l;r=c;return}t=k[b+32>>2]|0;s=b+84|0;b=0;do{if(i[t+b>>0]|0){o=ma(b,j)|0;G=k[s>>2]|0;m=0;do{i[l+(k[G+(m+o<<2)>>2]|0)>>0]=1;m=m+1|0}while((m|0)<(j|0))}b=b+1|0}while((b|0)<(p|0));k[a>>2]=l;r=c;return}function mqa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;doa(b);switch(k[b+40>>2]|0){case 301:case 300:{j=3;break}case 302:{j=5;break}default:{l=e+56|0;m=e+4|0;k[e>>2]=27524;k[l>>2]=27544;B=0;wa(508,e+56|0,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(l);Qb(p|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[l>>2]=27488;B=0;va(448,m|0);n=B;B=0;do if(n&1){q=Rb()|0;s=Q;t=q}else{k[m>>2]=27560;q=e+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,m|0,d|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(d);Yua(q);Ava(m);s=v;t=u;break}Yua(d);B=0;u=Ia(40,e|0,150248,32)|0;v=B;B=0;if(!(v&1)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,f|0,150010,92);v=B;B=0;do if(!(v&1)){B=0;eb(502,g|0,150103,17);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(f);y=x;z=w;break}B=0;wa(510,h|0,m|0);w=B;B=0;if(w&1){w=Rb()|0;A=Q;C=w;D=1}else{B=0;ua(163,u|0,f|0,g|0,30,h|0);w=B;B=0;if(w&1)E=1;else{B=0;eb(503,u|0,1240,229);B=0;E=0}w=Rb()|0;x=Q;Yua(h);A=x;C=w;D=E}Yua(g);Yua(f);if(D){y=A;z=C}else{F=A;G=C;k[e>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);Qb(G|0)}}else{w=Rb()|0;y=Q;z=w}while(0);zb(u|0);F=y;G=z;k[e>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);Qb(G|0)}v=Rb()|0;F=Q;G=v;k[e>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);Qb(G|0)}while(0);o=s;p=t;vva(l);Qb(p|0)}}p=k[b+60>>2]|0;l=Rqa(p)|0;if(p)WEa(l|0,0,p|0)|0;p=k[b+56>>2]|0;if((p|0)<=0){k[a>>2]=l;r=c;return}t=k[b+32>>2]|0;s=b+88|0;b=0;do{if(i[t+b>>0]|0){o=ma(b,j)|0;G=k[s>>2]|0;m=0;do{i[l+(k[G+(m+o<<2)>>2]|0)>>0]=1;m=m+1|0}while((m|0)<(j|0))}b=b+1|0}while((b|0)<(p|0));k[a>>2]=l;r=c;return}function nqa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;b=r;r=r+368|0;c=b+344|0;d=b+208|0;e=b+196|0;f=b+184|0;g=b+36|0;h=b+48|0;i=b+24|0;j=b+12|0;l=b;m=a+80|0;if(k[m>>2]|0){r=b;return}n=k[a+52>>2]|0;if((n|0)<3){o=d+56|0;p=d+4|0;k[d>>2]=27524;k[o>>2]=27544;B=0;wa(508,d+56|0,p|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;t=q;vva(o);Qb(t|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[o>>2]=27488;B=0;va(448,p|0);q=B;B=0;do if(q&1){u=Rb()|0;v=Q;w=u}else{k[p>>2]=27560;u=d+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,p|0,c|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(c);Yua(u);Ava(p);v=y;w=x;break}Yua(c);B=0;x=Ia(40,d|0,150121,27)|0;y=B;B=0;a:do if(!(y&1)?(B=0,Xa(239,x|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,e|0,150149,86);A=B;B=0;do if(!(A&1)){B=0;eb(502,f|0,150236,11);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(e);E=D;F=C;break}B=0;wa(510,g|0,p|0);C=B;B=0;if(C&1){C=Rb()|0;G=C;H=Q;I=1}else{B=0;ua(163,z|0,e|0,f|0,15,g|0);C=B;B=0;if(C&1)J=1;else{B=0;eb(503,z|0,1240,229);B=0;J=0}C=Rb()|0;D=Q;Yua(g);G=C;H=D;I=J}Yua(f);Yua(e);if(I){E=H;F=G}else{K=G;L=H;break a}}else{D=Rb()|0;E=Q;F=D}while(0);zb(z|0);K=F;L=E}else M=18;while(0);if((M|0)==18){x=Rb()|0;K=x;L=Q}k[d>>2]=27468;k[o>>2]=27488;k[p>>2]=27560;Yua(u);Ava(p);vva(o);N=K;O=L;Qb(N|0)}while(0);s=v;t=w;vva(o);Qb(t|0)}switch(k[a+48>>2]|0){case 621:{t=Rqa(24)|0;o=Rqa(12)|0;k[t>>2]=1;k[t+4>>2]=2;k[o>>2]=1;k[t+8>>2]=2;k[t+12>>2]=0;k[o+4>>2]=1;k[t+16>>2]=0;k[t+20>>2]=1;k[o+8>>2]=1;P=t;R=o;S=3;T=3;break}case 623:{o=Rqa(48)|0;t=Rqa(24)|0;k[o>>2]=1;k[o+4>>2]=2;k[t>>2]=1;k[o+8>>2]=0;k[o+12>>2]=2;k[t+4>>2]=1;k[o+16>>2]=0;k[o+20>>2]=1;k[t+8>>2]=1;k[o+24>>2]=1;k[o+28>>2]=3;k[t+12>>2]=1;k[o+32>>2]=2;k[o+36>>2]=3;k[t+16>>2]=1;k[o+40>>2]=0;k[o+44>>2]=3;k[t+20>>2]=1;P=o;R=t;S=6;T=4;break}case 625:{t=Rqa(72)|0;o=Rqa(36)|0;k[t>>2]=0;k[t+4>>2]=3;k[o>>2]=2;k[t+8>>2]=1;k[t+12>>2]=4;k[o+4>>2]=2;k[t+16>>2]=2;k[t+20>>2]=5;k[o+8>>2]=2;k[t+24>>2]=1;k[t+28>>2]=2;k[o+12>>2]=1;k[t+32>>2]=2;k[t+36>>2]=0;k[o+16>>2]=1;k[t+40>>2]=0;k[t+44>>2]=1;k[o+20>>2]=1;k[t+48>>2]=4;k[t+52>>2]=5;k[o+24>>2]=1;k[t+56>>2]=5;k[t+60>>2]=3;k[o+28>>2]=1;k[t+64>>2]=3;k[t+68>>2]=4;k[o+32>>2]=1;P=t;R=o;S=9;T=6;break}default:{o=h+56|0;t=h+4|0;k[h>>2]=27524;k[o>>2]=27544;B=0;wa(508,h+56|0,t|0);w=B;B=0;if(w&1){w=Rb()|0;U=Q;V=w;vva(o);Qb(V|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[o>>2]=27488;B=0;va(448,t|0);w=B;B=0;do if(w&1){v=Rb()|0;W=Q;X=v}else{k[t>>2]=27560;v=h+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,t|0,c|0);s=B;B=0;if(s&1){s=Rb()|0;L=Q;Yua(c);Yua(v);Ava(t);W=L;X=s;break}Yua(c);B=0;s=Ia(40,h|0,150248,32)|0;L=B;B=0;b:do if(!(L&1)?(B=0,Xa(239,s|0,0)|0,K=B,B=0,!(K&1)):0){K=Ab(20)|0;B=0;eb(502,i|0,150149,86);p=B;B=0;do if(!(p&1)){B=0;eb(502,j|0,150236,11);d=B;B=0;if(d&1){d=Rb()|0;E=Q;Yua(i);Y=d;Z=E;break}B=0;wa(510,l|0,t|0);E=B;B=0;if(E&1){E=Rb()|0;_=1;$=E;aa=Q}else{B=0;ua(163,K|0,i|0,j|0,64,l|0);E=B;B=0;if(E&1)ba=1;else{B=0;eb(503,K|0,1240,229);B=0;ba=0}E=Rb()|0;d=Q;Yua(l);_=ba;$=E;aa=d}Yua(j);Yua(i);if(_){Y=$;Z=aa}else{ca=$;da=aa;break b}}else{d=Rb()|0;Y=d;Z=Q}while(0);zb(K|0);ca=Y;da=Z}else M=45;while(0);if((M|0)==45){s=Rb()|0;ca=s;da=Q}k[h>>2]=27468;k[o>>2]=27488;k[t>>2]=27560;Yua(v);Ava(t);vva(o);N=ca;O=da;Qb(N|0)}while(0);U=W;V=X;vva(o);Qb(V|0)}}V=k[a+56>>2]|0;o=ma(V,S)|0;X=o*3|0;W=Rqa(X>>>0>1073741823?-1:X<<2)|0;X=o>>>0>1073741823?-1:o<<2;o=Rqa(X)|0;U=Rqa(n>>>0>1073741823?-1:n<<2)|0;N=Rqa(X)|0;WEa(U|0,-1,n<<2|0)|0;if((V|0)>0){n=k[a+72>>2]|0;X=0;da=0;while(1){O=ma(X,T)|0;ca=ma(X,S)|0;t=0;h=da;while(1){Z=t<<1;Y=k[n+((k[P+(Z<<2)>>2]|0)+O<<2)>>2]|0;aa=Y+-1|0;$=k[n+((k[P+((Z|1)<<2)>>2]|0)+O<<2)>>2]|0;Z=$+-1|0;_=($|0)<(Y|0);Y=_?Z:aa;$=U+(Y<<2)|0;i=k[$>>2]|0;j=(_?aa:Z)+1|0;c:do if((i|0)==-1)M=60;else{Z=i;while(1){if((k[W+((Z*3|0)+1<<2)>>2]|0)==(j|0)){ea=Z;break}Z=k[N+(Z<<2)>>2]|0;if((Z|0)==-1){M=60;break c}}k[o+(t+ca<<2)>>2]=ea;fa=h}while(0);if((M|0)==60){M=0;K=h*3|0;k[W+(K<<2)>>2]=Y+1;k[W+(K+1<<2)>>2]=j;k[W+(K+2<<2)>>2]=k[R+(t<<2)>>2];k[o+(t+ca<<2)>>2]=h;k[N+(h<<2)>>2]=i;k[$>>2]=h;fa=h+1|0}t=t+1|0;if((t|0)>=(S|0)){ga=fa;break}else h=fa}X=X+1|0;if((X|0)>=(V|0)){ha=ga;break}else da=ga}}else ha=0;Tqa(U);Tqa(N);Tqa(R);R=ha*3|0;N=Rqa(R>>>0>1073741823?-1:R<<2)|0;if((ha|0)>0)TEa(N|0,W|0,((R|0)>1?R:1)<<2|0)|0;Tqa(W);Tqa(P);k[m>>2]=N;k[a+84>>2]=o;k[a+64>>2]=ha;r=b;return}function oqa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0;c=r;r=r+368|0;d=c+344|0;e=c+208|0;f=c+196|0;g=c+184|0;h=c+36|0;j=c+48|0;l=c+24|0;m=c+12|0;n=c;switch(k[b+48>>2]|0){case 621:{o=3;break}case 623:{o=6;break}case 625:{o=9;break}default:{p=e+56|0;q=e+4|0;k[e>>2]=27524;k[p>>2]=27544;B=0;wa(508,e+56|0,q|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;u=s;vva(p);Qb(u|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[p>>2]=27488;B=0;va(448,q|0);s=B;B=0;do if(s&1){v=Rb()|0;w=Q;x=v}else{k[q>>2]=27560;v=e+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,q|0,d|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(d);Yua(v);Ava(q);w=z;x=y;break}Yua(d);B=0;y=Ia(40,e|0,150248,32)|0;z=B;B=0;a:do if(!(z&1)?(B=0,Xa(239,y|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,f|0,150149,86);C=B;B=0;do if(!(C&1)){B=0;eb(502,g|0,150281,19);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(f);F=D;G=E;break}B=0;wa(510,h|0,q|0);E=B;B=0;if(E&1){E=Rb()|0;H=Q;I=E;J=1}else{B=0;ua(163,A|0,f|0,g|0,159,h|0);E=B;B=0;if(E&1)K=1;else{B=0;eb(503,A|0,1240,229);B=0;K=0}E=Rb()|0;D=Q;Yua(h);H=D;I=E;J=K}Yua(g);Yua(f);if(J){F=I;G=H}else{L=I;M=H;break a}}else{E=Rb()|0;F=E;G=Q}while(0);zb(A|0);L=F;M=G}else N=19;while(0);if((N|0)==19){y=Rb()|0;L=y;M=Q}k[e>>2]=27468;k[p>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(p);O=M;P=L;Qb(P|0)}while(0);t=w;u=x;vva(p);Qb(u|0)}}u=b+80|0;if(!(k[u>>2]|0))nqa(b);p=k[b+64>>2]|0;x=Rqa(p)|0;w=(p|0)==0;if(!w)WEa(x|0,0,p|0)|0;switch(k[b+44>>2]|0){case 2:{t=Rqa(p>>>0>1073741823?-1:p<<2)|0;if(!w)WEa(t|0,0,p<<2|0)|0;w=k[b+56>>2]|0;if((w|0)>0){L=k[b+84>>2]|0;M=0;do{q=ma(M,o)|0;e=0;do{G=t+(k[L+(e+q<<2)>>2]<<2)|0;k[G>>2]=(k[G>>2]|0)+1;e=e+1|0}while((e|0)<(o|0));M=M+1|0}while((M|0)<(w|0))}if((p|0)>0){w=0;do{if((k[t+(w<<2)>>2]|0)==1)i[x+w>>0]=1;w=w+1|0}while((w|0)<(p|0))}Tqa(t);k[a>>2]=x;r=c;return}case 3:{t=b+76|0;if(!(k[t>>2]|0))doa(b);p=k[b+60>>2]|0;if((p|0)<=0){k[a>>2]=x;r=c;return}w=k[b+68>>2]|0;M=k[t>>2]|0;t=b+84|0;b=0;do{L=ma(w,b)|0;if((k[M+(L+1<<2)>>2]|0)==-1?(e=k[M+(L+3<<2)>>2]|0,q=ma((k[M+(L<<2)>>2]|0)+-1|0,o)|0,v=k[t>>2]|0,G=k[u>>2]|0,(e|0)>0):0){F=ma(w,b)|0;H=0;do{I=k[v+(H+q<<2)>>2]|0;J=I*3|0;f=k[G+(J<<2)>>2]|0;g=k[G+(J+1<<2)>>2]|0;J=0;do{if((k[M+(J+4+F<<2)>>2]|0)==(f|0)){R=0;N=55;break}J=J+1|0}while((J|0)<(e|0));b:do if((N|0)==55){while(1){N=0;if((k[M+(R+4+L<<2)>>2]|0)==(g|0))break;R=R+1|0;if((R|0)>=(e|0))break b;else N=55}i[x+I>>0]=1}while(0);H=H+1|0}while((H|0)<(o|0))}b=b+1|0}while((b|0)<(p|0));k[a>>2]=x;r=c;return}default:{c=j+56|0;x=j+4|0;k[j>>2]=27524;k[c>>2]=27544;B=0;wa(508,j+56|0,x|0);a=B;B=0;if(a&1){a=Rb()|0;S=Q;T=a;vva(c);Qb(T|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[c>>2]=27488;B=0;va(448,x|0);a=B;B=0;do if(a&1){p=Rb()|0;U=Q;V=p}else{k[x>>2]=27560;p=j+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[j+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,x|0,d|0);b=B;B=0;if(b&1){b=Rb()|0;o=Q;Yua(d);Yua(p);Ava(x);U=o;V=b;break}Yua(d);B=0;b=Ia(40,j|0,150301,23)|0;o=B;B=0;c:do if(!(o&1)?(B=0,Xa(239,b|0,0)|0,R=B,B=0,!(R&1)):0){R=Ab(20)|0;B=0;eb(502,l|0,150149,86);M=B;B=0;do if(!(M&1)){B=0;eb(502,m|0,150281,19);w=B;B=0;if(w&1){w=Rb()|0;u=Q;Yua(l);W=w;X=u;break}B=0;wa(510,n|0,x|0);u=B;B=0;if(u&1){u=Rb()|0;Y=1;Z=Q;_=u}else{B=0;ua(163,R|0,l|0,m|0,229,n|0);u=B;B=0;if(u&1)$=1;else{B=0;eb(503,R|0,1240,229);B=0;$=0}u=Rb()|0;w=Q;Yua(n);Y=$;Z=w;_=u}Yua(m);Yua(l);if(Y){W=_;X=Z}else{aa=Z;ba=_;break c}}else{u=Rb()|0;W=u;X=Q}while(0);zb(R|0);aa=X;ba=W}else N=74;while(0);if((N|0)==74){b=Rb()|0;aa=Q;ba=b}k[j>>2]=27468;k[c>>2]=27488;k[x>>2]=27560;Yua(p);Ava(x);vva(c);O=aa;P=ba;Qb(P|0)}while(0);S=U;T=V;vva(c);Qb(T|0)}}}function pqa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,i=0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=0.0;f=b+20|0;if((th(k[f>>2]|0)|0)>0){g=0.0;h=0;do{i=qh(k[f>>2]|0,h)|0;g=+Zc[k[(k[i>>2]|0)+456>>2]&255](i)+g;p[d>>3]=g;h=h+1|0}while((h|0)<(th(k[f>>2]|0)|0))}nZ(d,e,1,2,4,0,uY()|0)|0;uY()|0;g=+p[e>>3];p[d>>3]=g;voa(b,g,659);if(!a){r=c;return}p[a>>3]=+p[d>>3];r=c;return}function qqa(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;d=r;r=r+16|0;e=d+8|0;f=d+4|0;g=d;k[g>>2]=0;h=b+44|0;cO(k[h>>2]|0,e,478);cO(k[h>>2]|0,f,477);h=n_(k[f>>2]|0)|0;loa(g,0,0,0,b);f=b+20|0;if((th(k[f>>2]|0)|0)>0){i=0;do{j=qh(k[f>>2]|0,i)|0;l=ed[k[(k[h>>2]|0)+40>>2]&511](h,j)|0;if(l){JN(l,k[g>>2]|0);HN(l);Sqa(l)}i=i+1|0}while((i|0)<(th(k[f>>2]|0)|0))}f=b+36|0;if((bL(k[f>>2]|0)|0)>0){b=0;do{i=qh(k[f>>2]|0,b)|0;if(ed[k[(k[i>>2]|0)+60>>2]&511](i,k[e>>2]|0)|0)Fc[k[(k[i>>2]|0)+36>>2]&1023](i,k[g>>2]|0);if(ed[k[(k[i>>2]|0)+60>>2]&511](i,k[e>>2]|0)|0)Xc[k[(k[i>>2]|0)+68>>2]&63](i,k[g>>2]|0,c);b=b+1|0}while((b|0)<(bL(k[f>>2]|0)|0))}f=k[g>>2]|0;if(k[f>>2]|0){b=k[k[f+4>>2]>>2]|0;Ec[k[(k[b>>2]|0)+12>>2]&1023](b)}if(!h){m=k[g>>2]|0;k[a>>2]=m;r=d;return}Ec[k[(k[h>>2]|0)+4>>2]&1023](h);m=k[g>>2]|0;k[a>>2]=m;r=d;return}function rqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=r;r=r+16|0;f=e;cO(c,f,478);if(!(k[d>>2]|0))g=0;else{c=k[k[d+4>>2]>>2]|0;g=Hc[k[(k[c>>2]|0)+52>>2]&511](c)|0}if((th(a)|0)>0){c=0;do{d=qh(a,c)|0;if(ed[k[(k[d>>2]|0)+40>>2]&511](d,k[f>>2]|0)|0?(Hc[k[(k[d>>2]|0)+20>>2]&511](d)|0)==614:0)YK(d,b,g);c=c+1|0}while((c|0)<(th(a)|0))}if(!g){r=e;return}Tqa(g);r=e;return}function sqa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=r;r=r+16|0;g=f;cO(d,g,478);if(!(k[b>>2]|0))h=0;else{d=k[k[b+4>>2]>>2]|0;h=Hc[k[(k[d>>2]|0)+52>>2]&511](d)|0}if((bn(c,k[g>>2]|0)|0)!=0?(th(c)|0)>0:0){d=0;do{b=qh(c,d)|0;if(Tn(b,k[g>>2]|0)|0)go(b,a,h,e);d=d+1|0}while((d|0)<(th(c)|0))}if(h)Tqa(h);if(!(k[a>>2]|0)){r=f;return}h=k[k[a+4>>2]>>2]|0;Ec[k[(k[h>>2]|0)+12>>2]&1023](h);r=f;return}function tqa(a){a=a|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;return}function uqa(a){a=a|0;var b=0;b=r;r=r+16|0;mta(a,b)|0;r=b;return}function vqa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=k[d>>2]|0;if((f|0)!=(k[d+4>>2]|0)){wqa(150347,150340,915,20);g=20;return g|0}if((f|0)==(k[e>>2]|0)){Kqa(101,a,b,c,f,k[d+12>>2]|0,k[d+8>>2]|0,k[e+8>>2]|0,k[e+4>>2]|0);g=0;return g|0}else{wqa(150325,150340,919,19);g=19;return g|0}return 0}function wqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=k[10503]|0;if(!e){xqa(150369,b,c,a);Usa(k[10620]|0)|0;f=k[10618]|0;jta(150375,35,1,f)|0;Usa(f)|0;mc()}else{rd[e&511](a,b,c,d);return}}function xqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=r;r=r+16|0;f=e;g=k[10504]|0;if(!g){h=k[10618]|0;k[10504]=h;i=h}else i=g;g=k[10505]|0;if(!g){k[f>>2]=b;k[f+4>>2]=c;k[f+8>>2]=a;k[f+12>>2]=d;Zsa(i,150411,f)|0;r=e;return}else{rd[g&511](a,b,c,d);r=e;return}}function yqa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0.0,t=0.0,u=0,v=0,w=0;d=k[a>>2]|0;if((d|0)!=(k[a+4>>2]|0)){wqa(150431,150471,64,20);e=20;return e|0}if((k[b>>2]|0)!=(d|0)){wqa(150476,150471,68,19);e=19;return e|0}k[c>>2]=1;Eqa(b);f=d+-1|0;if(!f){e=0;return e|0}g=a+8|0;h=a+12|0;i=0;do{j=i;i=i+1|0;l=i>>>0<d>>>0;if(l){m=k[h>>2]|0;n=k[g>>2]|0;o=m+((ma(n,j)|0)+j<<3)|0;q=i;r=j;s=+$(+(+p[o>>3]));while(1){o=m+((ma(n,q)|0)+j<<3)|0;t=+$(+(+p[o>>3]));o=t>s;u=o?q:r;q=q+1|0;if((q|0)==(d|0)){v=u;break}else{r=u;s=o?t:s}}if((v|0)!=(j|0)){Bqa(a,j,v)|0;Gqa(b,j,v)|0;k[c>>2]=0-(k[c>>2]|0)}}r=k[g>>2]|0;q=ma(r,j)|0;n=k[h>>2]|0;s=+p[n+(q+j<<3)>>3];if(s!=0.0&l){m=i;do{o=ma(r,m)|0;u=n+(o+j<<3)|0;t=+p[u>>3]/s;p[u>>3]=t;u=i;do{w=n+(o+u<<3)|0;p[w>>3]=+p[w>>3]-t*+p[n+(q+u<<3)>>3];u=u+1|0}while((u|0)!=(d|0));m=m+1|0}while((m|0)!=(d|0))}}while((i|0)!=(f|0));e=0;return e|0}function zqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=k[a>>2]|0;if((e|0)!=(k[a+4>>2]|0)){wqa(150518,150471,131,20);f=20;return f|0}if((e|0)!=(k[b>>2]|0)){wqa(150476,150471,135,19);f=19;return f|0}if((e|0)!=(k[c>>2]|0)){wqa(150543,150471,139,19);f=19;return f|0}if((e|0)!=(k[d>>2]|0)){wqa(150573,150471,143,19);f=19;return f|0}a:do if(e){g=k[a+8>>2]|0;h=k[a+12>>2]|0;i=0;while(1){j=h+((ma(i,g)|0)+i<<3)|0;i=i+1|0;if(!(+p[j>>3]!=0.0))break;if(i>>>0>=e>>>0)break a}wqa(150610,150471,147,1);f=1;return f|0}while(0);Iqa(d,c)|0;f=Aqa(a,b,d)|0;return f|0}function Aqa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=k[a>>2]|0;if((d|0)!=(k[a+4>>2]|0)){wqa(150518,150471,171,20);e=20;return e|0}if((d|0)!=(k[b>>2]|0)){wqa(150476,150471,175,19);e=19;return e|0}if((d|0)!=(k[c>>2]|0)){wqa(150629,150471,179,19);e=19;return e|0}a:do if(d){f=k[a+8>>2]|0;g=k[a+12>>2]|0;h=0;while(1){i=g+((ma(h,f)|0)+h<<3)|0;h=h+1|0;if(!(+p[i>>3]!=0.0))break;if(h>>>0>=d>>>0)break a}wqa(150610,150471,183,1);e=1;return e|0}while(0);Hqa(b,c)|0;vqa(122,111,132,a,c)|0;vqa(121,111,131,a,c)|0;e=0;return e|0}function Bqa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0.0;d=k[a>>2]|0;e=k[a+4>>2]|0;if(d>>>0<=b>>>0){wqa(150670,150702,29,4);f=4;return f|0}if(d>>>0<=c>>>0){wqa(150718,150702,34,4);f=4;return f|0}if((b|0)==(c|0)){f=0;return f|0}d=k[a+12>>2]|0;g=k[a+8>>2]|0;a=d+((ma(g,b)|0)<<3)|0;b=d+((ma(g,c)|0)<<3)|0;if(!e){f=0;return f|0}else h=0;do{c=a+(h<<3)|0;i=+p[c>>3];g=b+(h<<3)|0;p[c>>3]=+p[g>>3];p[g>>3]=i;h=h+1|0}while((h|0)!=(e|0));f=0;return f|0}function Cqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!c){wqa(150751,151211,29,4);k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;return}if(!d){wqa(150796,151211,34,4);k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;return}else{k[a>>2]=c;k[a+4>>2]=d;k[a+8>>2]=d;k[a+12>>2]=b;k[a+16>>2]=0;k[a+20>>2]=0;return}}function Dqa(a){a=a|0;var b=0,c=0,d=0;if(!a){wqa(150841,150887,33,1);b=0;return b|0}c=lua(8)|0;if(!c){wqa(150894,150887,41,8);b=0;return b|0}d=lua(a<<2)|0;k[c+4>>2]=d;if(!d){mua(c);wqa(150942,150887,51,8);b=0;return b|0}else{k[c>>2]=a;b=c;return b|0}return 0}function Eqa(a){a=a|0;var b=0,c=0;b=k[a>>2]|0;if(!b)return;c=k[a+4>>2]|0;a=0;do{k[c+(a<<2)>>2]=a;a=a+1|0}while((a|0)!=(b|0));return}function Fqa(a){a=a|0;if(!a)return;mua(k[a+4>>2]|0);mua(a);return}function Gqa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=k[a>>2]|0;if(d>>>0<=b>>>0){wqa(150988,151016,43,4);e=4;return e|0}if(d>>>0<=c>>>0){wqa(151030,151016,48,4);e=4;return e|0}if((b|0)==(c|0)){e=0;return e|0}d=k[a+4>>2]|0;a=d+(b<<2)|0;b=k[a>>2]|0;f=d+(c<<2)|0;k[a>>2]=k[f>>2];k[f>>2]=b;e=0;return e|0}function Hqa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0.0,l=0,m=0,n=0;c=k[b>>2]|0;if((c|0)!=(k[a>>2]|0)){wqa(151059,151106,144,19);d=19;return d|0}e=k[a+4>>2]|0;a=k[b+8>>2]|0;f=k[b+4>>2]|0;if(!c){d=0;return d|0}else g=0;do{b=g;while(1){h=k[e+(b<<2)>>2]|0;if(h>>>0>g>>>0)b=h;else{i=h;break}}if(i>>>0>=g>>>0?(b=k[e+(i<<2)>>2]|0,(b|0)!=(g|0)):0){h=a+((ma(g,f)|0)<<3)|0;j=+p[h>>3];h=i;l=b;while(1){b=ma(h,f)|0;m=a+((ma(l,f)|0)<<3)|0;p[a+(b<<3)>>3]=+p[m>>3];b=k[e+(l<<2)>>2]|0;if((b|0)==(g|0)){n=m;break}else{m=l;l=b;h=m}}p[n>>3]=j}g=g+1|0}while((g|0)!=(c|0));d=0;return d|0}function Iqa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=k[b>>2]|0;if((c|0)!=(k[a>>2]|0)){wqa(151125,151154,29,19);d=19;return d|0}e=k[b+4>>2]|0;f=k[a+4>>2]|0;if(!c){d=0;return d|0}g=k[b+8>>2]|0;b=k[a+8>>2]|0;a=0;do{h=ma(a,f)|0;i=g+((ma(a,e)|0)<<3)|0;p[b+(h<<3)>>3]=+p[i>>3];a=a+1|0}while((a|0)!=(c|0));d=0;return d|0}function Jqa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if(!c){wqa(151170,151211,28,4);d=0;e=0;f=0}else{d=b;e=1;f=c}k[a>>2]=f;k[a+4>>2]=e;k[a+8>>2]=d;k[a+12>>2]=0;k[a+16>>2]=0;return}function Kqa(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0,M=0,N=0,O=0.0;j=r;r=r+16|0;k=j+8|0;l=(d|0)==131;m=(c|0)!=113?c:112;n=(i|0)==0?9:(((e|0)<1?1:e)|0)>(g|0)?7:(e|0)<0?5:(d+-131|0)>>>0>1?4:(c+-111|0)>>>0<3?((b+-121|0)>>>0>1?2:(a+-101|0)>>>0>1&1):3;if(n)Lqa(n,151227,159121,j);if(!e){r=j;return}n=(a|0)==101;c=(m|0)==111;d=n&c;o=(b|0)==121;if(!(o&d)?(q=(a|0)==102,a=(m|0)==112,m=q&a,s=(b|0)==122,!(s&m)):0){if(s&d|o&m){m=(i|0)>0;d=ma(1-e|0,i)|0;b=m?0:d;if(l){d=h+(b<<3)|0;p[d>>3]=+p[d>>3]/+p[f>>3]}d=b+i|0;if((e|0)<=1){r=j;return}b=ma(1-e|0,i)|0;if(m){m=1;t=d;while(1){u=h+(t<<3)|0;v=ma(m,g)|0;w=0;x=0;y=+p[u>>3];while(1){z=y-+p[f+(w+v<<3)>>3]*+p[h+(x<<3)>>3];w=w+1|0;if((w|0)==(m|0)){A=z;break}else{x=x+i|0;y=z}}if(l){x=f+((ma(m,g)|0)+m<<3)|0;B=A/+p[x>>3]}else B=A;p[u>>3]=B;m=m+1|0;if((m|0)==(e|0))break;else t=t+i|0}r=j;return}else{t=1;m=d;while(1){d=h+(m<<3)|0;x=ma(t,g)|0;w=0;v=b;B=+p[d>>3];while(1){A=B-+p[f+(w+x<<3)>>3]*+p[h+(v<<3)>>3];w=w+1|0;if((w|0)==(t|0)){C=A;break}else{v=v+i|0;B=A}}if(l){v=f+((ma(t,g)|0)+t<<3)|0;D=C/+p[v>>3]}else D=C;p[d>>3]=D;t=t+1|0;if((t|0)==(e|0))break;else m=m+i|0}r=j;return}}m=n&a;if(!(o&m)?(a=q&c,!(s&a)):0){if(!(s&m|o&a))Lqa(0,151227,151245,k);k=ma(1-e|0,i)|0;a=e+-1|0;o=((i|0)>0?0:k)+(ma(a,i)|0)|0;if(l){k=h+(o<<3)|0;m=f+((ma(a,g)|0)+a<<3)|0;p[k>>3]=+p[k>>3]/+p[m>>3]}m=o-i|0;if((e|0)<=1){r=j;return}if(l){k=o;s=a;c=m;while(1){q=s;s=s+-1|0;n=h+(c<<3)|0;D=+p[n>>3];if((q|0)<(e|0)){t=q;b=k;C=D;while(1){v=f+((ma(t,g)|0)+s<<3)|0;B=C-+p[v>>3]*+p[h+(b<<3)>>3];t=t+1|0;if((t|0)==(e|0)){E=B;break}else{b=b+i|0;C=B}}}else E=D;b=f+((ma(s,g)|0)+s<<3)|0;p[n>>3]=E/+p[b>>3];if((q|0)<=1)break;else{b=c;c=c-i|0;k=b}}r=j;return}else{k=o;o=a;a=m;while(1){m=o;o=o+-1|0;c=h+(a<<3)|0;E=+p[c>>3];if((m|0)<(e|0)){s=m;b=k;C=E;while(1){t=f+((ma(s,g)|0)+o<<3)|0;B=C-+p[t>>3]*+p[h+(b<<3)>>3];s=s+1|0;if((s|0)==(e|0)){F=B;break}else{b=b+i|0;C=B}}}else F=E;p[c>>3]=F;if((m|0)<=1)break;else{b=a;a=a-i|0;k=b}}r=j;return}}k=(i|0)>0;a=ma(1-e|0,i)|0;o=k?0:a;if(l){a=h+(o<<3)|0;p[a>>3]=+p[a>>3]/+p[f>>3]}a=o+i|0;if((e|0)<=1){r=j;return}o=ma(1-e|0,i)|0;if(k){k=1;b=a;while(1){s=h+(b<<3)|0;q=0;n=0;F=+p[s>>3];while(1){t=f+((ma(q,g)|0)+k<<3)|0;C=F-+p[t>>3]*+p[h+(n<<3)>>3];q=q+1|0;if((q|0)==(k|0)){G=C;break}else{n=n+i|0;F=C}}if(l){n=f+((ma(k,g)|0)+k<<3)|0;H=G/+p[n>>3]}else H=G;p[s>>3]=H;k=k+1|0;if((k|0)==(e|0))break;else b=b+i|0}r=j;return}else{b=1;k=a;while(1){a=h+(k<<3)|0;n=0;q=o;H=+p[a>>3];while(1){m=f+((ma(n,g)|0)+b<<3)|0;G=H-+p[m>>3]*+p[h+(q<<3)>>3];n=n+1|0;if((n|0)==(b|0)){I=G;break}else{q=q+i|0;H=G}}if(l){q=f+((ma(b,g)|0)+b<<3)|0;J=I/+p[q>>3]}else J=I;p[a>>3]=J;b=b+1|0;if((b|0)==(e|0))break;else k=k+i|0}r=j;return}}k=ma(1-e|0,i)|0;b=e+-1|0;o=((i|0)>0?0:k)+(ma(b,i)|0)|0;if(l){k=h+(o<<3)|0;q=f+((ma(b,g)|0)+b<<3)|0;p[k>>3]=+p[k>>3]/+p[q>>3]}q=o-i|0;if((e|0)<=1){r=j;return}if(l){l=o;k=b;n=q;while(1){s=k;k=k+-1|0;m=h+(n<<3)|0;J=+p[m>>3];c=ma(k,g)|0;if((s|0)<(e|0)){t=s;d=l;I=J;while(1){H=I-+p[f+(t+c<<3)>>3]*+p[h+(d<<3)>>3];t=t+1|0;if((t|0)==(e|0)){K=H;break}else{d=d+i|0;I=H}}}else K=J;p[m>>3]=K/+p[f+(c+k<<3)>>3];if((s|0)<=1)break;else{d=n;n=n-i|0;l=d}}r=j;return}else{L=o;M=b;N=q}while(1){q=M;M=M+-1|0;b=h+(N<<3)|0;K=+p[b>>3];if((q|0)<(e|0)){o=ma(M,g)|0;l=q;n=L;I=K;while(1){H=I-+p[f+(l+o<<3)>>3]*+p[h+(n<<3)>>3];l=l+1|0;if((l|0)==(e|0)){O=H;break}else{n=n+i|0;I=H}}}else O=K;p[b>>3]=O;if((q|0)<=1)break;else{n=N;N=N-i|0;L=n}}r=j;return}function Lqa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=r;r=r+32|0;f=e;g=e+8|0;k[g>>2]=d;d=k[10618]|0;if(!a){uta(d,c,g)|0;mc()}k[f>>2]=a;k[f+4>>2]=b;Zsa(d,151268,f)|0;uta(d,c,g)|0;mc()}function Mqa(a,b){a=a|0;b=b|0;var c=0,d=0;c=r;r=r+16|0;d=c;k[d>>2]=b;b=k[10618]|0;uta(b,a,d)|0;_sa(10,b)|0;mc()}function Nqa(a){a=a|0;yb(151591,151620,1164,151728)}function Oqa(a){a=a|0;yb(151749,151772,303,151728)}function Pqa(){var a=0,b=0;a=r;r=r+16|0;if(!(_b(42216,6)|0)){b=Tb(k[10553]|0)|0;r=a;return b|0}else Mqa(151880,a);return 0}function Qqa(a){a=a|0;var b=0,c=0,d=0;b=(a|0)==0?1:a;while(1){a=lua(b)|0;if(a){c=a;d=6;break}a=_qa()|0;if(!a){d=5;break}od[a&15]()}if((d|0)==5){b=Ab(4)|0;k[b>>2]=42036;jc(b|0,25200,348)}else if((d|0)==6)return c|0;return 0}function Rqa(a){a=a|0;return Qqa(a)|0}function Sqa(a){a=a|0;mua(a);return}function Tqa(a){a=a|0;Sqa(a);return}function Uqa(a){a=a|0;k[a>>2]=42036;return}function Vqa(a){a=a|0;return}function Wqa(a){a=a|0;Sqa(a);return}function Xqa(a){a=a|0;return 151929}function Yqa(a){a=a|0;var b=0;b=r;r=r+16|0;B=0;fb(a|0);a=B;B=0;if(!(a&1)){B=0;wa(524,151944,b|0);B=0}a=Rb(0)|0;Nb(a|0)|0;B=0;wa(524,151984,b+8|0);B=0;b=Rb(0)|0;B=0;fb(4);a=B;B=0;if(a&1){a=Rb(0)|0;Dd(a)}else Dd(b)}function Zqa(){var a=0,b=0;B=0;a=bb(2)|0;b=B;B=0;if(b&1){b=Rb(0)|0;Dd(b)}if(((a|0)!=0?(b=k[a>>2]|0,(b|0)!=0):0)?(a=b+48|0,(k[a>>2]&-256|0)==1126902528?(k[a+4>>2]|0)==1129074247:0):0)Yqa(k[b+12>>2]|0);b=k[10506]|0;k[10506]=b+0;Yqa(b)}function _qa(){var a=0;a=k[10512]|0;k[10512]=a+0;return a|0}function $qa(a){a=a|0;return}function ara(a){a=a|0;k[a>>2]=42060;Jra(a+4|0);return}function bra(a){a=a|0;ara(a);Sqa(a);return}function cra(a){a=a|0;return k[a+4>>2]|0}function dra(a){a=a|0;return}function era(a){a=a|0;k[a>>2]=42080;return}function fra(a){a=a|0;return}function gra(a){a=a|0;Sqa(a);return}function hra(a){a=a|0;return 152034}function ira(a){a=a|0;return}function jra(a){a=a|0;return}function kra(a){a=a|0;return}function lra(a){a=a|0;Sqa(a);return}function mra(a){a=a|0;Sqa(a);return}function nra(a){a=a|0;Sqa(a);return}function ora(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=r;r=r+64|0;e=d;if((a|0)!=(b|0))if((b|0)!=0?(f=ura(b,25264,25280,0)|0,(f|0)!=0):0){b=e;g=b+56|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(g|0));k[e>>2]=f;k[e+8>>2]=a;k[e+12>>2]=-1;k[e+48>>2]=1;rd[k[(k[f>>2]|0)+28>>2]&511](f,e,k[c>>2]|0,1);if((k[e+24>>2]|0)==1){k[c>>2]=k[e+16>>2];h=1}else h=0;i=h}else i=0;else i=1;r=d;return i|0}function pra(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;a=b+16|0;e=k[a>>2]|0;do if(e){if((e|0)!=(c|0)){f=b+36|0;k[f>>2]=(k[f>>2]|0)+1;k[b+24>>2]=2;i[b+54>>0]=1;break}f=b+24|0;if((k[f>>2]|0)==2)k[f>>2]=d}else{k[a>>2]=c;k[b+24>>2]=d;k[b+36>>2]=1}while(0);return}function qra(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(k[b+8>>2]|0))pra(0,b,c,d);return}function rra(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if((a|0)==(k[b+8>>2]|0))pra(0,b,c,d);else{e=k[a+8>>2]|0;rd[k[(k[e>>2]|0)+28>>2]&511](e,b,c,d)}return}function sra(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=k[a+4>>2]|0;f=e>>8;if(!(e&1))g=f;else g=k[(k[c>>2]|0)+f>>2]|0;f=k[a>>2]|0;rd[k[(k[f>>2]|0)+28>>2]&511](f,b,c+g|0,(e&2|0)!=0?d:2);return}function tra(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;a:do if((a|0)!=(k[b+8>>2]|0)){e=k[a+12>>2]|0;f=a+16+(e<<3)|0;sra(a+16|0,b,c,d);if((e|0)>1){e=b+54|0;g=a+24|0;do{sra(g,b,c,d);if(i[e>>0]|0)break a;g=g+8|0}while(g>>>0<f>>>0)}}else pra(0,b,c,d);while(0);return}function ura(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;e=r;r=r+64|0;f=e;g=k[a>>2]|0;h=a+(k[g+-8>>2]|0)|0;l=k[g+-4>>2]|0;k[f>>2]=c;k[f+4>>2]=a;k[f+8>>2]=b;k[f+12>>2]=d;d=f+16|0;b=f+20|0;a=f+24|0;g=f+28|0;m=f+32|0;n=f+40|0;o=(l|0)==(c|0);p=d;q=p+36|0;do{k[p>>2]=0;p=p+4|0}while((p|0)<(q|0));j[d+36>>1]=0;i[d+38>>0]=0;a:do if(o){k[f+48>>2]=1;Uc[k[(k[c>>2]|0)+20>>2]&63](c,f,h,h,1,0);s=(k[a>>2]|0)==1?h:0}else{Dc[k[(k[l>>2]|0)+24>>2]&255](l,f,h,1,0);switch(k[f+36>>2]|0){case 0:{s=(k[n>>2]|0)==1&(k[g>>2]|0)==1&(k[m>>2]|0)==1?k[b>>2]|0:0;break a;break}case 1:break;default:{s=0;break a}}if((k[a>>2]|0)!=1?!((k[n>>2]|0)==0&(k[g>>2]|0)==1&(k[m>>2]|0)==1):0){s=0;break}s=k[d>>2]|0}while(0);r=e;return s|0}function vra(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;i[b+53>>0]=1;do if((k[b+4>>2]|0)==(d|0)){i[b+52>>0]=1;a=b+16|0;f=k[a>>2]|0;if(!f){k[a>>2]=c;k[b+24>>2]=e;k[b+36>>2]=1;if(!((e|0)==1?(k[b+48>>2]|0)==1:0))break;i[b+54>>0]=1;break}if((f|0)!=(c|0)){f=b+36|0;k[f>>2]=(k[f>>2]|0)+1;i[b+54>>0]=1;break}f=b+24|0;a=k[f>>2]|0;if((a|0)==2){k[f>>2]=e;g=e}else g=a;if((g|0)==1?(k[b+48>>2]|0)==1:0)i[b+54>>0]=1}while(0);return}function wra(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;a:do if((a|0)==(k[b+8>>2]|0)){if((k[b+4>>2]|0)==(c|0)?(f=b+28|0,(k[f>>2]|0)!=1):0)k[f>>2]=d}else{if((a|0)!=(k[b>>2]|0)){f=k[a+12>>2]|0;g=a+16+(f<<3)|0;yra(a+16|0,b,c,d,e);h=a+24|0;if((f|0)<=1)break;f=k[a+8>>2]|0;if((f&2|0)==0?(j=b+36|0,(k[j>>2]|0)!=1):0){if(!(f&1)){f=b+54|0;l=h;while(1){if(i[f>>0]|0)break a;if((k[j>>2]|0)==1)break a;yra(l,b,c,d,e);l=l+8|0;if(l>>>0>=g>>>0)break a}}l=b+24|0;f=b+54|0;m=h;while(1){if(i[f>>0]|0)break a;if((k[j>>2]|0)==1?(k[l>>2]|0)==1:0)break a;yra(m,b,c,d,e);m=m+8|0;if(m>>>0>=g>>>0)break a}}m=b+54|0;l=h;while(1){if(i[m>>0]|0)break a;yra(l,b,c,d,e);l=l+8|0;if(l>>>0>=g>>>0)break a}}if((k[b+16>>2]|0)!=(c|0)?(g=b+20|0,(k[g>>2]|0)!=(c|0)):0){k[b+32>>2]=d;l=b+44|0;if((k[l>>2]|0)==4)break;m=a+16+(k[a+12>>2]<<3)|0;h=b+52|0;j=b+53|0;f=b+54|0;n=a+8|0;o=b+24|0;p=0;q=0;r=a+16|0;b:while(1){if(r>>>0>=m>>>0){s=p;t=q;u=20;break}i[h>>0]=0;i[j>>0]=0;xra(r,b,c,c,1,e);if(i[f>>0]|0){s=p;t=q;u=20;break}do if(i[j>>0]|0){if(!(i[h>>0]|0))if(!(k[n>>2]&1)){s=p;t=1;u=20;break b}else{v=p;w=1;break}if((k[o>>2]|0)==1){x=1;break b}if(!(k[n>>2]&2)){x=1;break b}else{v=1;w=1}}else{v=p;w=q}while(0);p=v;q=w;r=r+8|0}if((u|0)==20)if((!s?(k[g>>2]=c,r=b+40|0,k[r>>2]=(k[r>>2]|0)+1,(k[b+36>>2]|0)==1):0)?(k[o>>2]|0)==2:0){i[f>>0]=1;x=t}else x=t;k[l>>2]=x?3:4;break}if((d|0)==1)k[b+32>>2]=1}while(0);return}function xra(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=k[a+4>>2]|0;h=g>>8;if(!(g&1))i=h;else i=k[(k[d>>2]|0)+h>>2]|0;h=k[a>>2]|0;Uc[k[(k[h>>2]|0)+20>>2]&63](h,b,c,d+i|0,(g&2|0)!=0?e:2,f);return}function yra(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=k[a+4>>2]|0;g=f>>8;if(!(f&1))h=g;else h=k[(k[c>>2]|0)+g>>2]|0;g=k[a>>2]|0;Dc[k[(k[g>>2]|0)+24>>2]&255](g,b,c+h|0,(f&2|0)!=0?d:2,e);return}function zra(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;do if((a|0)==(k[b+8>>2]|0)){if((k[b+4>>2]|0)==(c|0)?(f=b+28|0,(k[f>>2]|0)!=1):0)k[f>>2]=d}else{if((a|0)!=(k[b>>2]|0)){f=k[a+8>>2]|0;Dc[k[(k[f>>2]|0)+24>>2]&255](f,b,c,d,e);break}if((k[b+16>>2]|0)!=(c|0)?(f=b+20|0,(k[f>>2]|0)!=(c|0)):0){k[b+32>>2]=d;g=b+44|0;if((k[g>>2]|0)==4)break;h=b+52|0;i[h>>0]=0;j=b+53|0;i[j>>0]=0;l=k[a+8>>2]|0;Uc[k[(k[l>>2]|0)+20>>2]&63](l,b,c,c,1,e);if(i[j>>0]|0)if(!(i[h>>0]|0)){m=1;n=13}else o=1;else{m=0;n=13}if((n|0)==13){k[f>>2]=c;f=b+40|0;k[f>>2]=(k[f>>2]|0)+1;if((k[b+36>>2]|0)==1?(k[b+24>>2]|0)==2:0){i[b+54>>0]=1;o=m}else o=m}k[g>>2]=o?3:4;break}if((d|0)==1)k[b+32>>2]=1}while(0);return}function Ara(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;do if((a|0)==(k[b+8>>2]|0)){if((k[b+4>>2]|0)==(c|0)?(e=b+28|0,(k[e>>2]|0)!=1):0)k[e>>2]=d}else if((a|0)==(k[b>>2]|0)){if((k[b+16>>2]|0)!=(c|0)?(e=b+20|0,(k[e>>2]|0)!=(c|0)):0){k[b+32>>2]=d;k[e>>2]=c;e=b+40|0;k[e>>2]=(k[e>>2]|0)+1;if((k[b+36>>2]|0)==1?(k[b+24>>2]|0)==2:0)i[b+54>>0]=1;k[b+44>>2]=4;break}if((d|0)==1)k[b+32>>2]=1}while(0);return}function Bra(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;if((a|0)==(k[b+8>>2]|0))vra(0,b,c,d,e);else{g=b+52|0;h=j[g>>1]|0;l=h&255;m=b+53|0;n=(h&65535)>>>8&255;h=k[a+12>>2]|0;o=a+16+(h<<3)|0;i[g>>0]=0;i[m>>0]=0;xra(a+16|0,b,c,d,e,f);a:do if((h|0)>1){p=b+24|0;q=a+8|0;r=b+54|0;s=a+24|0;do{if(i[r>>0]|0)break a;t=j[g>>1]|0;if(!((t&255)<<24>>24)){if((t&65535)>=256?(k[q>>2]&1|0)==0:0)break a}else{if((k[p>>2]|0)==1)break a;if(!(k[q>>2]&2))break a}i[g>>0]=0;i[m>>0]=0;xra(s,b,c,d,e,f);s=s+8|0}while(s>>>0<o>>>0)}while(0);i[g>>0]=l;i[m>>0]=n}return}function Cra(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;if((a|0)==(k[b+8>>2]|0))vra(0,b,c,d,e);else{g=k[a+8>>2]|0;Uc[k[(k[g>>2]|0)+20>>2]&63](g,b,c,d,e,f)}return}function Dra(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if((a|0)==(k[b+8>>2]|0))vra(0,b,c,d,e);return}function Era(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=r;r=r+16|0;e=d;k[e>>2]=k[c>>2];f=Rc[k[(k[a>>2]|0)+16>>2]&63](a,b,e)|0;if(f)k[c>>2]=k[e>>2];r=d;return f&1|0}function Fra(a){a=a|0;var b=0;if(!a)b=0;else b=(ura(a,25264,25312,0)|0)!=0;return b&1|0}function Gra(){var a=0;a=Ab(4)|0;Uqa(a);jc(a|0,25200,348)}function Hra(){var a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a=r;r=r+48|0;b=a+32|0;c=a+24|0;d=a+16|0;e=a;f=a+36|0;a=Pqa()|0;if((a|0)!=0?(g=k[a>>2]|0,(g|0)!=0):0){a=g+48|0;h=k[a>>2]|0;i=k[a+4>>2]|0;if(!((h&-256|0)==1126902528&(i|0)==1129074247)){k[c>>2]=k[10555];Mqa(152237,c)}if((h|0)==1126902529&(i|0)==1129074247)j=k[g+44>>2]|0;else j=g+80|0;k[f>>2]=j;j=k[g>>2]|0;g=k[j+4>>2]|0;if(Rc[k[(k[6304]|0)+16>>2]&63](25216,j,f)|0){j=k[f>>2]|0;f=k[10555]|0;i=Hc[k[(k[j>>2]|0)+8>>2]&511](j)|0;k[e>>2]=f;k[e+4>>2]=g;k[e+8>>2]=i;Mqa(152151,e)}else{k[d>>2]=k[10555];k[d+4>>2]=g;Mqa(152196,d)}}Mqa(152275,b)}function Ira(){var a=0;a=r;r=r+16|0;if(!(cc(42212,547)|0)){r=a;return}else Mqa(152048,a)}function Jra(a){a=a|0;var b=0,c=0;b=(k[a>>2]|0)+-4|0;c=k[b>>2]|0;k[b>>2]=c+-1;if((c+-1|0)<0)Sqa((k[a>>2]|0)+-12|0);return}function Kra(a){a=a|0;var b=0;b=r;r=r+16|0;mua(a);if(!(hc(k[10553]|0,0)|0)){r=b;return}else Mqa(152098,b)}function Lra(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=Bta(a,b,c)|0;return d|0}function Mra(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=Cta(a,b,c)|0;return d|0}function Nra(){return 42488}function Ora(){return 42492}function Pra(){return 42496}function Qra(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function Rra(a){a=a|0;var b=0;if((a+-48|0)>>>0<10)b=1;else b=((a|32)+-97|0)>>>0<6;return b&1|0}function Sra(){var a=0,b=0;if(!(k[10556]|0))a=42500;else{b=(Yb()|0)+60|0;a=k[b>>2]|0}return a|0}function Tra(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=0;while(1){if((l[152296+b>>0]|0)==(a|0)){c=b;d=2;break}b=b+1|0;if((b|0)==87){e=87;f=152384;d=5;break}}if((d|0)==2)if(!c)g=152384;else{e=c;f=152384;d=5}if((d|0)==5)while(1){d=0;c=f;while(1){b=c+1|0;if(!(i[c>>0]|0)){h=b;break}else c=b}e=e+-1|0;if(!e){g=h;break}else{f=h;d=5}}return g|0}function Ura(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0.0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0.0,Z=0,_=0.0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0.0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0.0,ua=0,va=0.0,wa=0.0,xa=0,ya=0.0,za=0,Aa=0.0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0.0,La=0,Ma=0,Na=0,Oa=0,Pa=0.0,Qa=0,Ra=0,Sa=0,Ta=0.0,Ua=0.0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0.0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0.0,fd=0.0,gd=0.0,hd=0.0,id=0.0,jd=0.0,kd=0.0,ld=0,md=0,nd=0.0,od=0,pd=0.0;d=r;r=r+512|0;e=d;switch(b|0){case 0:{f=24;g=-149;h=4;break}case 1:{f=53;g=-1074;h=4;break}case 2:{f=53;g=-1074;h=4;break}default:j=0.0}a:do if((h|0)==4){b=a+4|0;m=a+100|0;do{n=k[b>>2]|0;if(n>>>0<(k[m>>2]|0)>>>0){k[b>>2]=n+1;o=l[n>>0]|0}else o=Xra(a)|0}while((Qra(o)|0)!=0);p=o;b:do switch(p|0){case 43:case 45:{n=1-(((p|0)==45&1)<<1)|0;q=k[b>>2]|0;if(q>>>0<(k[m>>2]|0)>>>0){k[b>>2]=q+1;s=l[q>>0]|0;t=n;break b}else{s=Xra(a)|0;t=n;break b}break}default:{s=p;t=1}}while(0);n=s;q=0;while(1){if((n|32|0)!=(i[154188+q>>0]|0)){u=n;v=q;break}do if(q>>>0<7){w=k[b>>2]|0;if(w>>>0<(k[m>>2]|0)>>>0){k[b>>2]=w+1;x=l[w>>0]|0;break}else{x=Xra(a)|0;break}}else x=n;while(0);w=q+1|0;if(w>>>0<8){n=x;q=w}else{u=x;v=w;break}}c:do switch(v|0){case 8:break;case 3:{h=23;break}default:{q=(c|0)!=0;if(q&v>>>0>3)if((v|0)==8)break c;else{h=23;break c}d:do if(!v){n=u;w=0;while(1){if((n|32|0)!=(i[157069+w>>0]|0)){y=n;z=w;break d}do if(w>>>0<2){A=k[b>>2]|0;if(A>>>0<(k[m>>2]|0)>>>0){k[b>>2]=A+1;B=l[A>>0]|0;break}else{B=Xra(a)|0;break}}else B=n;while(0);A=w+1|0;if(A>>>0<3){n=B;w=A}else{y=B;z=A;break}}}else{y=u;z=v}while(0);switch(z|0){case 3:{w=k[b>>2]|0;if(w>>>0<(k[m>>2]|0)>>>0){k[b>>2]=w+1;C=l[w>>0]|0}else C=Xra(a)|0;if((C|0)==40)D=1;else{if(!(k[m>>2]|0)){j=F;break a}k[b>>2]=(k[b>>2]|0)+-1;j=F;break a}while(1){w=k[b>>2]|0;if(w>>>0<(k[m>>2]|0)>>>0){k[b>>2]=w+1;E=l[w>>0]|0}else E=Xra(a)|0;if(!((E+-48|0)>>>0<10|(E+-65|0)>>>0<26)?!((E|0)==95|(E+-97|0)>>>0<26):0){H=E;I=D;break}D=D+1|0}if((H|0)==41){j=F;break a}w=(k[m>>2]|0)==0;if(!w)k[b>>2]=(k[b>>2]|0)+-1;if(!q){n=Sra()|0;k[n>>2]=22;Wra(a,0);j=0.0;break a}if(!I){j=F;break a}else J=I;while(1){J=J+-1|0;if(!w)k[b>>2]=(k[b>>2]|0)+-1;if(!J){j=F;break a}}break}case 0:{do if((y|0)==48){w=k[b>>2]|0;if(w>>>0<(k[m>>2]|0)>>>0){k[b>>2]=w+1;K=l[w>>0]|0}else K=Xra(a)|0;if((K|32|0)!=120){if(!(k[m>>2]|0)){L=48;break}k[b>>2]=(k[b>>2]|0)+-1;L=48;break}w=k[b>>2]|0;if(w>>>0<(k[m>>2]|0)>>>0){k[b>>2]=w+1;M=l[w>>0]|0;N=0}else{M=Xra(a)|0;N=0}e:while(1){switch(M|0){case 46:{O=N;h=74;break e;break}case 48:break;default:{P=0;R=0;S=0;T=0;U=M;V=N;W=0;X=0;Y=1.0;Z=0;_=0.0;break e}}w=k[b>>2]|0;if(w>>>0<(k[m>>2]|0)>>>0){k[b>>2]=w+1;M=l[w>>0]|0;N=1;continue}else{M=Xra(a)|0;N=1;continue}}if((h|0)==74){w=k[b>>2]|0;if(w>>>0<(k[m>>2]|0)>>>0){k[b>>2]=w+1;aa=l[w>>0]|0}else aa=Xra(a)|0;if((aa|0)==48){w=0;q=0;while(1){n=k[b>>2]|0;if(n>>>0<(k[m>>2]|0)>>>0){k[b>>2]=n+1;ba=l[n>>0]|0}else ba=Xra(a)|0;n=QEa(w|0,q|0,-1,-1)|0;A=Q;if((ba|0)==48){w=n;q=A}else{P=0;R=0;S=n;T=A;U=ba;V=1;W=1;X=0;Y=1.0;Z=0;_=0.0;break}}}else{P=0;R=0;S=0;T=0;U=aa;V=O;W=1;X=0;Y=1.0;Z=0;_=0.0}}while(1){q=U+-48|0;w=U|32;if(q>>>0>=10){A=(U|0)==46;if(!(A|(w+-97|0)>>>0<6)){ca=R;da=S;ea=P;fa=T;ga=U;ha=V;ia=W;ja=Z;ka=_;break}if(A)if(!W){la=R;na=P;oa=R;pa=P;qa=V;ra=1;sa=X;ta=Y;ua=Z;va=_}else{ca=R;da=S;ea=P;fa=T;ga=46;ha=V;ia=W;ja=Z;ka=_;break}else h=86}else h=86;if((h|0)==86){h=0;A=(U|0)>57?w+-87|0:q;do if(!((P|0)<0|(P|0)==0&R>>>0<8)){if((P|0)<0|(P|0)==0&R>>>0<14){wa=Y*.0625;xa=X;ya=wa;za=Z;Aa=_+wa*+(A|0);break}if((X|0)!=0|(A|0)==0){xa=X;ya=Y;za=Z;Aa=_}else{xa=1;ya=Y;za=Z;Aa=_+Y*.5}}else{xa=X;ya=Y;za=A+(Z<<4)|0;Aa=_}while(0);A=QEa(R|0,P|0,1,0)|0;la=S;na=T;oa=A;pa=Q;qa=1;ra=W;sa=xa;ta=ya;ua=za;va=Aa}A=k[b>>2]|0;if(A>>>0<(k[m>>2]|0)>>>0){k[b>>2]=A+1;P=pa;R=oa;S=la;T=na;U=l[A>>0]|0;V=qa;W=ra;X=sa;Y=ta;Z=ua;_=va;continue}else{P=pa;R=oa;S=la;T=na;U=Xra(a)|0;V=qa;W=ra;X=sa;Y=ta;Z=ua;_=va;continue}}if(!ha){A=(k[m>>2]|0)==0;if(!A)k[b>>2]=(k[b>>2]|0)+-1;if(c){if(!A?(A=k[b>>2]|0,k[b>>2]=A+-1,(ia|0)!=0):0)k[b>>2]=A+-2}else Wra(a,0);j=+(t|0)*0.0;break a}A=(ia|0)==0;q=A?ca:da;w=A?ea:fa;if((ea|0)<0|(ea|0)==0&ca>>>0<8){A=ca;n=ea;Ba=ja;while(1){Ca=Ba<<4;A=QEa(A|0,n|0,1,0)|0;n=Q;if(!((n|0)<0|(n|0)==0&A>>>0<8)){Da=Ca;break}else Ba=Ca}}else Da=ja;if((ga|32|0)==112){Ba=Uta(a,c)|0;A=Q;if((Ba|0)==0&(A|0)==-2147483648){if(!c){Wra(a,0);j=0.0;break a}if(!(k[m>>2]|0)){Ea=0;Fa=0}else{k[b>>2]=(k[b>>2]|0)+-1;Ea=0;Fa=0}}else{Ea=Ba;Fa=A}}else if(!(k[m>>2]|0)){Ea=0;Fa=0}else{k[b>>2]=(k[b>>2]|0)+-1;Ea=0;Fa=0}A=XEa(q|0,w|0,2)|0;Ba=QEa(A|0,Q|0,-32,-1)|0;A=QEa(Ba|0,Q|0,Ea|0,Fa|0)|0;Ba=Q;if(!Da){j=+(t|0)*0.0;break a}if((Ba|0)>0|(Ba|0)==0&A>>>0>(0-g|0)>>>0){n=Sra()|0;k[n>>2]=34;j=+(t|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break a}n=g+-106|0;Ca=((n|0)<0)<<31>>31;if((Ba|0)<(Ca|0)|(Ba|0)==(Ca|0)&A>>>0<n>>>0){n=Sra()|0;k[n>>2]=34;j=+(t|0)*2.2250738585072014e-308*2.2250738585072014e-308;break a}if((Da|0)>-1){n=A;Ca=Ba;Ga=Da;wa=ka;while(1){Ha=!(wa>=.5);Ia=Ha&1|Ga<<1;Ja=Ia^1;Ka=wa+(Ha?wa:wa+-1.0);Ha=QEa(n|0,Ca|0,-1,-1)|0;La=Q;if((Ia|0)>-1){n=Ha;Ca=La;Ga=Ja;wa=Ka}else{Ma=Ha;Na=La;Oa=Ja;Pa=Ka;break}}}else{Ma=A;Na=Ba;Oa=Da;Pa=ka}Ga=REa(32,0,g|0,((g|0)<0)<<31>>31|0)|0;Ca=QEa(Ma|0,Na|0,Ga|0,Q|0)|0;Ga=Q;if(0>(Ga|0)|0==(Ga|0)&f>>>0>Ca>>>0)if((Ca|0)<0){Qa=0;h=127}else{Ra=Ca;h=125}else{Ra=f;h=125}if((h|0)==125)if((Ra|0)<53){Qa=Ra;h=127}else{Sa=Ra;Ta=+(t|0);Ua=0.0}if((h|0)==127){wa=+(t|0);Sa=Qa;Ta=wa;Ua=+gsa(+qsa(1.0,84-Qa|0),wa)}Ca=(Oa&1|0)==0&(Pa!=0.0&(Sa|0)<32);wa=Ta*(Ca?0.0:Pa)+(Ua+Ta*+(((Ca&1)+Oa|0)>>>0))-Ua;if(!(wa!=0.0)){Ca=Sra()|0;k[Ca>>2]=34}j=+rsa(wa,Ma);break a}else L=y;while(0);Ca=g+f|0;Ga=0-Ca|0;n=L;w=0;f:while(1){switch(n|0){case 46:{Va=w;h=138;break f;break}case 48:break;default:{Wa=n;Xa=0;Ya=0;Za=w;_a=0;break f}}q=k[b>>2]|0;if(q>>>0<(k[m>>2]|0)>>>0){k[b>>2]=q+1;n=l[q>>0]|0;w=1;continue}else{n=Xra(a)|0;w=1;continue}}if((h|0)==138){w=k[b>>2]|0;if(w>>>0<(k[m>>2]|0)>>>0){k[b>>2]=w+1;$a=l[w>>0]|0}else $a=Xra(a)|0;if(($a|0)==48){w=0;n=0;while(1){q=QEa(w|0,n|0,-1,-1)|0;Ja=Q;La=k[b>>2]|0;if(La>>>0<(k[m>>2]|0)>>>0){k[b>>2]=La+1;ab=l[La>>0]|0}else ab=Xra(a)|0;if((ab|0)==48){w=q;n=Ja}else{Wa=ab;Xa=q;Ya=Ja;Za=1;_a=1;break}}}else{Wa=$a;Xa=0;Ya=0;Za=Va;_a=1}}k[e>>2]=0;n=Wa+-48|0;w=(Wa|0)==46;g:do if(w|n>>>0<10){Ja=e+496|0;q=Wa;La=0;Ha=0;Ia=w;bb=n;cb=Xa;db=Ya;eb=Za;fb=_a;gb=0;hb=0;ib=0;h:while(1){do if(Ia)if(!fb){jb=La;kb=Ha;lb=La;mb=Ha;nb=eb;ob=1;pb=gb;qb=hb;rb=ib}else{sb=cb;tb=db;ub=La;vb=Ha;wb=eb;xb=gb;yb=hb;zb=ib;break h}else{Ab=QEa(La|0,Ha|0,1,0)|0;Bb=Q;Cb=(q|0)!=48;if((hb|0)>=125){if(!Cb){jb=cb;kb=db;lb=Ab;mb=Bb;nb=eb;ob=fb;pb=gb;qb=hb;rb=ib;break}k[Ja>>2]=k[Ja>>2]|1;jb=cb;kb=db;lb=Ab;mb=Bb;nb=eb;ob=fb;pb=gb;qb=hb;rb=ib;break}Db=e+(hb<<2)|0;if(!gb)Eb=bb;else Eb=q+-48+((k[Db>>2]|0)*10|0)|0;k[Db>>2]=Eb;Db=gb+1|0;Fb=(Db|0)==9;jb=cb;kb=db;lb=Ab;mb=Bb;nb=1;ob=fb;pb=Fb?0:Db;qb=(Fb&1)+hb|0;rb=Cb?Ab:ib}while(0);Ab=k[b>>2]|0;if(Ab>>>0<(k[m>>2]|0)>>>0){k[b>>2]=Ab+1;Gb=l[Ab>>0]|0}else Gb=Xra(a)|0;bb=Gb+-48|0;Ia=(Gb|0)==46;if(!(Ia|bb>>>0<10)){Hb=Gb;Ib=lb;Jb=jb;Kb=mb;Lb=kb;Mb=nb;Nb=ob;Ob=pb;Pb=qb;Qb=rb;h=161;break g}else{q=Gb;La=lb;Ha=mb;cb=jb;db=kb;eb=nb;fb=ob;gb=pb;hb=qb;ib=rb}}Rb=ub;Sb=vb;Tb=sb;Ub=tb;Vb=(wb|0)!=0;Wb=xb;Xb=yb;Yb=zb;h=169}else{Hb=Wa;Ib=0;Jb=Xa;Kb=0;Lb=Ya;Mb=Za;Nb=_a;Ob=0;Pb=0;Qb=0;h=161}while(0);do if((h|0)==161){n=(Nb|0)==0;w=n?Ib:Jb;ib=n?Kb:Lb;n=(Mb|0)!=0;if(!((Hb|32|0)==101&n))if((Hb|0)>-1){Rb=Ib;Sb=Kb;Tb=w;Ub=ib;Vb=n;Wb=Ob;Xb=Pb;Yb=Qb;h=169;break}else{Zb=Ib;_b=Kb;$b=n;ac=w;bc=ib;cc=Ob;dc=Pb;ec=Qb;h=171;break}n=Uta(a,c)|0;hb=Q;if((n|0)==0&(hb|0)==-2147483648){if(!c){Wra(a,0);fc=0.0;break}if(!(k[m>>2]|0)){gc=0;hc=0}else{k[b>>2]=(k[b>>2]|0)+-1;gc=0;hc=0}}else{gc=n;hc=hb}hb=QEa(gc|0,hc|0,w|0,ib|0)|0;ic=hb;jc=Ib;kc=Q;lc=Kb;mc=Ob;nc=Pb;oc=Qb;h=173}while(0);if((h|0)==169)if(k[m>>2]|0){k[b>>2]=(k[b>>2]|0)+-1;if(Vb){ic=Tb;jc=Rb;kc=Ub;lc=Sb;mc=Wb;nc=Xb;oc=Yb;h=173}else h=172}else{Zb=Rb;_b=Sb;$b=Vb;ac=Tb;bc=Ub;cc=Wb;dc=Xb;ec=Yb;h=171}if((h|0)==171)if($b){ic=ac;jc=Zb;kc=bc;lc=_b;mc=cc;nc=dc;oc=ec;h=173}else h=172;do if((h|0)==172){hb=Sra()|0;k[hb>>2]=22;Wra(a,0);fc=0.0}else if((h|0)==173){hb=k[e>>2]|0;if(!hb){fc=+(t|0)*0.0;break}if(((lc|0)<0|(lc|0)==0&jc>>>0<10)&((ic|0)==(jc|0)&(kc|0)==(lc|0))?f>>>0>30|(hb>>>f|0)==0:0){fc=+(t|0)*+(hb>>>0);break}hb=(g|0)/-2|0;ib=((hb|0)<0)<<31>>31;if((kc|0)>(ib|0)|(kc|0)==(ib|0)&ic>>>0>hb>>>0){hb=Sra()|0;k[hb>>2]=34;fc=+(t|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}hb=g+-106|0;ib=((hb|0)<0)<<31>>31;if((kc|0)<(ib|0)|(kc|0)==(ib|0)&ic>>>0<hb>>>0){hb=Sra()|0;k[hb>>2]=34;fc=+(t|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(!mc)pc=nc;else{if((mc|0)<9){hb=e+(nc<<2)|0;ib=k[hb>>2]|0;w=mc;while(1){n=ib*10|0;w=w+1|0;if((w|0)==9){qc=n;break}else ib=n}k[hb>>2]=qc}pc=nc+1|0}if((oc|0)<9?(oc|0)<=(ic|0)&(ic|0)<18:0){if((ic|0)==9){fc=+(t|0)*+((k[e>>2]|0)>>>0);break}if((ic|0)<9){fc=+(t|0)*+((k[e>>2]|0)>>>0)/+(k[42504+(8-ic<<2)>>2]|0);break}ib=f+27+(ma(ic,-3)|0)|0;w=k[e>>2]|0;if((ib|0)>30|(w>>>ib|0)==0){fc=+(t|0)*+(w>>>0)*+(k[42504+(ic+-10<<2)>>2]|0);break}}w=(ic|0)%9|0;if(!w){rc=0;sc=0;tc=ic;uc=pc}else{ib=(ic|0)>-1?w:w+9|0;w=k[42504+(8-ib<<2)>>2]|0;if(pc){n=1e9/(w|0)|0;gb=0;fb=0;eb=0;db=ic;while(1){cb=e+(eb<<2)|0;Ha=k[cb>>2]|0;La=((Ha>>>0)/(w>>>0)|0)+fb|0;k[cb>>2]=La;cb=ma((Ha>>>0)%(w>>>0)|0,n)|0;Ha=(eb|0)==(gb|0)&(La|0)==0;eb=eb+1|0;La=Ha?db+-9|0:db;q=Ha?eb&127:gb;if((eb|0)==(pc|0)){vc=cb;wc=q;xc=La;break}else{gb=q;fb=cb;db=La}}if(!vc){yc=wc;zc=xc;Ac=pc}else{k[e+(pc<<2)>>2]=vc;yc=wc;zc=xc;Ac=pc+1|0}}else{yc=0;zc=ic;Ac=0}rc=yc;sc=0;tc=9-ib+zc|0;uc=Ac}i:while(1){db=(tc|0)<18;fb=(tc|0)==18;gb=e+(rc<<2)|0;eb=sc;n=uc;while(1){if(!db){if(!fb){Bc=rc;Cc=eb;Dc=tc;Ec=n;break i}if((k[gb>>2]|0)>>>0>=9007199){Bc=rc;Cc=eb;Dc=18;Ec=n;break i}}w=0;hb=n+127|0;La=n;while(1){cb=hb&127;q=e+(cb<<2)|0;Ha=XEa(k[q>>2]|0,0,29)|0;bb=QEa(Ha|0,Q|0,w|0,0)|0;Ha=Q;if(Ha>>>0>0|(Ha|0)==0&bb>>>0>1e9){Ia=cFa(bb|0,Ha|0,1e9,0)|0;Ja=dFa(bb|0,Ha|0,1e9,0)|0;Fc=Ja;Gc=Ia}else{Fc=bb;Gc=0}k[q>>2]=Fc;q=(cb|0)==(rc|0);bb=(cb|0)!=(La+127&127|0)|q?La:(Fc|0)==0?cb:La;if(q){Hc=Gc;Ic=bb;break}else{w=Gc;hb=cb+-1|0;La=bb}}La=eb+-29|0;if(!Hc){eb=La;n=Ic}else{Jc=La;Kc=Hc;Lc=Ic;break}}n=rc+127&127;if((n|0)==(Lc|0)){eb=Lc+127&127;gb=e+((Lc+126&127)<<2)|0;k[gb>>2]=k[gb>>2]|k[e+(eb<<2)>>2];Mc=eb}else Mc=Lc;k[e+(n<<2)>>2]=Kc;rc=n;sc=Jc;tc=tc+9|0;uc=Mc}j:while(1){Nc=Ec+1&127;ib=e+((Ec+127&127)<<2)|0;n=Bc;eb=Cc;gb=Dc;while(1){fb=(gb|0)==18;db=(gb|0)>27?9:1;La=fb^1;Oc=n;Pc=eb;while(1){Qc=Oc&127;Rc=(Qc|0)==(Ec|0);do if(!Rc){hb=k[e+(Qc<<2)>>2]|0;if(hb>>>0<9007199){h=219;break}if(hb>>>0>9007199)break;hb=Oc+1&127;if((hb|0)==(Ec|0)){h=219;break}w=k[e+(hb<<2)>>2]|0;if(w>>>0<254740991){h=219;break}if(!(w>>>0>254740991|La)){Sc=Qc;Tc=Oc;Uc=Pc;Vc=Ec;break j}}else h=219;while(0);if((h|0)==219?(h=0,fb):0){h=220;break j}w=Pc+db|0;if((Oc|0)==(Ec|0)){Oc=Ec;Pc=w}else{Wc=w;Xc=Oc;break}}fb=(1<<db)+-1|0;La=1e9>>>db;w=Xc;hb=0;bb=Xc;cb=gb;while(1){q=e+(bb<<2)|0;Ia=k[q>>2]|0;Ja=(Ia>>>db)+hb|0;k[q>>2]=Ja;q=ma(Ia&fb,La)|0;Ia=(bb|0)==(w|0)&(Ja|0)==0;bb=bb+1&127;Ja=Ia?cb+-9|0:cb;Ha=Ia?bb:w;if((bb|0)==(Ec|0)){Yc=q;Zc=Ha;_c=Ja;break}else{w=Ha;hb=q;cb=Ja}}if(!Yc){n=Zc;eb=Wc;gb=_c;continue}if((Nc|0)!=(Zc|0)){$c=Wc;ad=Yc;bd=Zc;cd=_c;break}k[ib>>2]=k[ib>>2]|1;n=Zc;eb=Wc;gb=_c}k[e+(Ec<<2)>>2]=ad;Bc=bd;Cc=$c;Dc=cd;Ec=Nc}if((h|0)==220)if(Rc){k[e+(Nc+-1<<2)>>2]=0;Sc=Ec;Tc=Oc;Uc=Pc;Vc=Nc}else{Sc=Qc;Tc=Oc;Uc=Pc;Vc=Ec}wa=+((k[e+(Sc<<2)>>2]|0)>>>0);gb=Tc+1&127;if((gb|0)==(Vc|0)){eb=Tc+2&127;k[e+(eb+-1<<2)>>2]=0;dd=eb}else dd=Vc;Ka=+(t|0);ed=Ka*(wa*1.0e9+ +((k[e+(gb<<2)>>2]|0)>>>0));gb=Uc+53|0;eb=gb-g|0;n=(eb|0)<(f|0);ib=n&1;cb=n?((eb|0)<0?0:eb):f;if((cb|0)<53){wa=+gsa(+qsa(1.0,105-cb|0),ed);fd=+lsa(ed,+qsa(1.0,53-cb|0));gd=wa;hd=fd;id=wa+(ed-fd)}else{gd=0.0;hd=0.0;id=ed}hb=Tc+2&127;do if((hb|0)==(dd|0))jd=hd;else{w=k[e+(hb<<2)>>2]|0;do if(w>>>0>=5e8){if(w>>>0>5e8){kd=Ka*.75+hd;break}if((Tc+3&127|0)==(dd|0)){kd=Ka*.5+hd;break}else{kd=Ka*.75+hd;break}}else{if((w|0)==0?(Tc+3&127|0)==(dd|0):0){kd=hd;break}kd=Ka*.25+hd}while(0);if((53-cb|0)<=1){jd=kd;break}if(+lsa(kd,1.0)!=0.0){jd=kd;break}jd=kd+1.0}while(0);Ka=id+jd-gd;do if((gb&2147483647|0)>(-2-Ca|0)){if(!(+$(+Ka)>=9007199254740992.0)){ld=ib;md=Uc;nd=Ka}else{ld=n&(cb|0)==(eb|0)?0:ib;md=Uc+1|0;nd=Ka*.5}if((md+50|0)<=(Ga|0)?!(jd!=0.0&(ld|0)!=0):0){od=md;pd=nd;break}hb=Sra()|0;k[hb>>2]=34;od=md;pd=nd}else{od=Uc;pd=Ka}while(0);fc=+rsa(pd,od)}while(0);j=fc;break a;break}default:{if(k[m>>2]|0)k[b>>2]=(k[b>>2]|0)+-1;Ga=Sra()|0;k[Ga>>2]=22;Wra(a,0);j=0.0;break a}}}}while(0);if((h|0)==23){Ga=(k[m>>2]|0)==0;if(!Ga)k[b>>2]=(k[b>>2]|0)+-1;if((c|0)!=0&v>>>0>3){Ca=v;do{if(!Ga)k[b>>2]=(k[b>>2]|0)+-1;Ca=Ca+-1|0}while(Ca>>>0>3)}}j=+(t|0)*G}while(0);r=d;return +j}function Vra(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0;a:do if(b>>>0>36){f=Sra()|0;k[f>>2]=22;g=0;h=0}else{f=a+4|0;j=a+100|0;do{m=k[f>>2]|0;if(m>>>0<(k[j>>2]|0)>>>0){k[f>>2]=m+1;n=l[m>>0]|0}else n=Xra(a)|0}while((Qra(n)|0)!=0);o=n;b:do switch(o|0){case 43:case 45:{m=((o|0)==45)<<31>>31;p=k[f>>2]|0;if(p>>>0<(k[j>>2]|0)>>>0){k[f>>2]=p+1;q=l[p>>0]|0;r=m;break b}else{q=Xra(a)|0;r=m;break b}break}default:{q=o;r=0}}while(0);m=(b|0)==0;do if((b&-17|0)==0&(q|0)==48){p=k[f>>2]|0;if(p>>>0<(k[j>>2]|0)>>>0){k[f>>2]=p+1;s=l[p>>0]|0}else s=Xra(a)|0;if((s|32|0)!=120)if(m){t=8;u=s;v=46;break}else{w=b;x=s;v=32;break}p=k[f>>2]|0;if(p>>>0<(k[j>>2]|0)>>>0){k[f>>2]=p+1;y=l[p>>0]|0}else y=Xra(a)|0;if((l[154198+y>>0]|0)>15){p=(k[j>>2]|0)==0;if(!p)k[f>>2]=(k[f>>2]|0)+-1;if(!c){Wra(a,0);g=0;h=0;break a}if(p){g=0;h=0;break a}k[f>>2]=(k[f>>2]|0)+-1;g=0;h=0;break a}else{t=16;u=y;v=46}}else{p=m?10:b;if((l[154198+q>>0]|0)>>>0<p>>>0){w=p;x=q;v=32}else{if(k[j>>2]|0)k[f>>2]=(k[f>>2]|0)+-1;Wra(a,0);p=Sra()|0;k[p>>2]=22;g=0;h=0;break a}}while(0);if((v|0)==32)if((w|0)==10){m=x+-48|0;if(m>>>0<10){p=m;m=0;while(1){z=(m*10|0)+p|0;A=k[f>>2]|0;if(A>>>0<(k[j>>2]|0)>>>0){k[f>>2]=A+1;B=l[A>>0]|0}else B=Xra(a)|0;p=B+-48|0;if(!(p>>>0<10&z>>>0<429496729)){C=z;D=B;break}else m=z}E=C;F=0;G=D}else{E=0;F=0;G=x}m=G+-48|0;if(m>>>0<10){p=E;z=F;A=m;m=G;while(1){H=bFa(p|0,z|0,10,0)|0;I=Q;J=((A|0)<0)<<31>>31;K=~J;if(I>>>0>K>>>0|(I|0)==(K|0)&H>>>0>~A>>>0){L=A;M=p;N=z;O=m;break}K=QEa(H|0,I|0,A|0,J|0)|0;J=Q;I=k[f>>2]|0;if(I>>>0<(k[j>>2]|0)>>>0){k[f>>2]=I+1;P=l[I>>0]|0}else P=Xra(a)|0;I=P+-48|0;if(I>>>0<10&(J>>>0<429496729|(J|0)==429496729&K>>>0<2576980378)){p=K;z=J;A=I;m=P}else{L=I;M=K;N=J;O=P;break}}if(L>>>0>9){R=N;S=M;T=r}else{U=10;V=M;W=N;X=O;v=72}}else{R=F;S=E;T=r}}else{t=w;u=x;v=46}c:do if((v|0)==46){if(!(t+-1&t)){m=i[154454+((t*23|0)>>>5&7)>>0]|0;A=i[154198+u>>0]|0;z=A&255;if(z>>>0<t>>>0){p=z;z=0;while(1){J=p|z<<m;K=k[f>>2]|0;if(K>>>0<(k[j>>2]|0)>>>0){k[f>>2]=K+1;Y=l[K>>0]|0}else Y=Xra(a)|0;K=i[154198+Y>>0]|0;p=K&255;if(!(J>>>0<134217728&p>>>0<t>>>0)){Z=J;_=K;$=Y;break}else z=J}aa=_;ba=0;ca=Z;da=$}else{aa=A;ba=0;ca=0;da=u}z=SEa(-1,-1,m|0)|0;p=Q;if((aa&255)>>>0>=t>>>0|(ba>>>0>p>>>0|(ba|0)==(p|0)&ca>>>0>z>>>0)){U=t;V=ca;W=ba;X=da;v=72;break}else{ea=ca;fa=ba;ga=aa}while(1){J=XEa(ea|0,fa|0,m|0)|0;K=Q;I=ga&255|J;J=k[f>>2]|0;if(J>>>0<(k[j>>2]|0)>>>0){k[f>>2]=J+1;ha=l[J>>0]|0}else ha=Xra(a)|0;ga=i[154198+ha>>0]|0;if((ga&255)>>>0>=t>>>0|(K>>>0>p>>>0|(K|0)==(p|0)&I>>>0>z>>>0)){U=t;V=I;W=K;X=ha;v=72;break c}else{ea=I;fa=K}}}z=i[154198+u>>0]|0;p=z&255;if(p>>>0<t>>>0){m=p;p=0;while(1){A=m+(ma(p,t)|0)|0;K=k[f>>2]|0;if(K>>>0<(k[j>>2]|0)>>>0){k[f>>2]=K+1;ia=l[K>>0]|0}else ia=Xra(a)|0;K=i[154198+ia>>0]|0;m=K&255;if(!(A>>>0<119304647&m>>>0<t>>>0)){ja=A;ka=K;la=ia;break}else p=A}na=ka;oa=ja;pa=0;qa=la}else{na=z;oa=0;pa=0;qa=u}if((na&255)>>>0<t>>>0){p=cFa(-1,-1,t|0,0)|0;m=Q;A=pa;K=oa;I=na;J=qa;while(1){if(A>>>0>m>>>0|(A|0)==(m|0)&K>>>0>p>>>0){U=t;V=K;W=A;X=J;v=72;break c}H=bFa(K|0,A|0,t|0,0)|0;ra=Q;sa=I&255;if(ra>>>0>4294967295|(ra|0)==-1&H>>>0>~sa>>>0){U=t;V=K;W=A;X=J;v=72;break c}ta=QEa(sa|0,0,H|0,ra|0)|0;ra=Q;H=k[f>>2]|0;if(H>>>0<(k[j>>2]|0)>>>0){k[f>>2]=H+1;ua=l[H>>0]|0}else ua=Xra(a)|0;I=i[154198+ua>>0]|0;if((I&255)>>>0>=t>>>0){U=t;V=ta;W=ra;X=ua;v=72;break}else{A=ra;K=ta;J=ua}}}else{U=t;V=oa;W=pa;X=qa;v=72}}while(0);if((v|0)==72)if((l[154198+X>>0]|0)>>>0<U>>>0){do{J=k[f>>2]|0;if(J>>>0<(k[j>>2]|0)>>>0){k[f>>2]=J+1;va=l[J>>0]|0}else va=Xra(a)|0}while((l[154198+va>>0]|0)>>>0<U>>>0);J=Sra()|0;k[J>>2]=34;R=e;S=d;T=(d&1|0)==0&0==0?r:0}else{R=W;S=V;T=r}if(k[j>>2]|0)k[f>>2]=(k[f>>2]|0)+-1;if(!(R>>>0<e>>>0|(R|0)==(e|0)&S>>>0<d>>>0)){if(!((d&1|0)!=0|0!=0|(T|0)!=0)){J=Sra()|0;k[J>>2]=34;J=QEa(d|0,e|0,-1,-1)|0;g=Q;h=J;break}if(R>>>0>e>>>0|(R|0)==(e|0)&S>>>0>d>>>0){J=Sra()|0;k[J>>2]=34;g=e;h=d;break}}J=((T|0)<0)<<31>>31;K=REa(S^T|0,R^J|0,T|0,J|0)|0;g=Q;h=K}while(0);Q=g;return h|0}function Wra(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;k[a+104>>2]=b;c=k[a+8>>2]|0;d=k[a+4>>2]|0;e=c-d|0;k[a+108>>2]=e;if((b|0)!=0&(e|0)>(b|0))k[a+100>>2]=d+b;else k[a+100>>2]=c;return}function Xra(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;b=a+104|0;c=k[b>>2]|0;if((c|0)!=0?(k[a+108>>2]|0)>=(c|0):0)d=4;else{c=Ssa(a)|0;if((c|0)>=0){e=k[b>>2]|0;b=k[a+8>>2]|0;if(e){f=k[a+4>>2]|0;g=e-(k[a+108>>2]|0)|0;e=b;if((b-f|0)<(g|0)){h=e;d=9}else{k[a+100>>2]=f+(g+-1);j=e}}else{h=b;d=9}if((d|0)==9){k[a+100>>2]=b;j=h}h=a+4|0;if(!j)m=k[h>>2]|0;else{b=k[h>>2]|0;h=a+108|0;k[h>>2]=j+1-b+(k[h>>2]|0);m=b}b=m+-1|0;if((l[b>>0]|0|0)==(c|0))n=c;else{i[b>>0]=c;n=c}}else d=4}if((d|0)==4){k[a+100>>2]=0;n=-1}return n|0}function Yra(a){a=a|0;var b=0,c=0;if(a>>>0>4294963200){b=Sra()|0;k[b>>2]=0-a;c=-1}else c=a;return c|0}function Zra(a){a=a|0;return 0}function _ra(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return d|0}function $ra(a,b){a=a|0;b=b|0;return -1|0}function asa(a){a=a|0;mua(a);return}function bsa(a,b){a=a|0;b=b|0;return (a+-48|0)>>>0<10|0}function csa(a,b){a=a|0;b=b|0;return Rra(a)|0}function dsa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(((i[b>>0]|0)!=0?(Ita(b,159108)|0)!=0:0)?(Ita(b,154463)|0)!=0:0)d=0;else if(!c)d=nua(1,4)|0;else d=c;return d|0}function esa(a){a=a|0;var b=0,c=0;b=(Yb()|0)+176|0;c=k[b>>2]|0;if(a)k[b>>2]=a;return c|0}function fsa(a,b){a=+a;b=+b;var c=0,d=0;p[t>>3]=b;c=k[t+4>>2]|0;b=+$(+a);p[t>>3]=b;d=c&-2147483648|k[t+4>>2];k[t>>2]=k[t>>2];k[t+4>>2]=d;return +(+p[t>>3])}function gsa(a,b){a=+a;b=+b;return +(+fsa(a,b))}function hsa(a){a=+a;var b=0,c=0,d=0,e=0.0,f=0.0,g=0,h=0.0,i=0.0,j=0,l=0.0,m=0,n=0.0,o=0.0;p[t>>3]=a;b=k[t+4>>2]|0;c=b&2147483647;d=SEa(k[t>>2]|0,b|0,63)|0;do if(c>>>0>1078159481){e=+$(+a);p[t>>3]=e;b=k[t+4>>2]|0;if(!(b>>>0>2146435072|(b|0)==2146435072&(k[t>>2]|0)>>>0>0))if(!d)if(a>709.782712893384)f=a*8988465674311579538646525.0e283;else g=11;else f=-1.0;else f=a}else{if(c>>>0<=1071001154)if(c>>>0<1016070144){f=a;break}else{h=a;i=0.0;j=0;g=14;break}if(c>>>0<1072734898)if(!d){l=a+-.6931471803691238;m=1;n=1.9082149292705877e-10;g=12;break}else{l=a+.6931471803691238;m=-1;n=-1.9082149292705877e-10;g=12;break}else g=11}while(0);if((g|0)==11){c=~~(a*1.4426950408889634+((d|0)!=0?-.5:.5));e=+(c|0);l=a-e*.6931471803691238;m=c;n=e*1.9082149292705877e-10;g=12}if((g|0)==12){e=l-n;h=e;i=l-e-n;j=m;g=14}a:do if((g|0)==14){n=h*.5;e=h*n;l=e*(e*(e*(e*(4.008217827329362e-06-e*2.0109921818362437e-07)+-7.93650757867488e-05)+1.5873015872548146e-03)+-.03333333333333313)+1.0;a=3.0-n*l;n=e*((l-a)/(6.0-h*a));if(!j){f=h-(h*n-e);break}a=h*(n-i)-i-e;switch(j|0){case -1:{f=(h-a)*.5+-.5;break a;break}case 1:{if(h<-.25){f=(a-(h+.5))*-2.0;break a}else{f=(h-a)*2.0+1.0;break a}break}default:{m=XEa(j+1023|0,0,52)|0;c=Q;k[t>>2]=m;k[t+4>>2]=c;e=+p[t>>3];if(j>>>0>56){n=h-a+1.0;f=((j|0)==1024?n*2.0*8988465674311579538646525.0e283:e*n)+-1.0;break a}c=XEa(1023-j|0,0,52)|0;m=Q;if((j|0)<20){k[t>>2]=c;k[t+4>>2]=m;o=1.0-+p[t>>3]+(h-a)}else{k[t>>2]=c;k[t+4>>2]=m;o=h-(+p[t>>3]+a)+1.0}f=e*o;break a}}}while(0);return +f}function isa(a,b){a=+a;b=+b;var c=0,d=0,e=0.0,f=0,g=0,h=0,i=0,j=0,l=0.0;p[t>>3]=a;c=k[t>>2]|0;d=k[t+4>>2]|0;e=+$(+a);p[t>>3]=e;f=k[t+4>>2]|0;do if(!(f>>>0>2146435072|(f|0)==2146435072&(k[t>>2]|0)>>>0>0)){e=+$(+b);p[t>>3]=e;g=k[t+4>>2]|0;if(!(g>>>0>2146435072|(g|0)==2146435072&(k[t>>2]|0)>>>0>0)){p[t>>3]=b;g=k[t>>2]|0;h=k[t+4>>2]|0;i=SEa(c|0,d|0,63)|0;j=SEa(g|0,h|0,63)|0;if((i|0)==(j|0)){l=a<b?b:a;break}else{l=(d|0)<0?b:a;break}}else l=a}else l=b;while(0);return +l}function jsa(a,b){a=+a;b=+b;var c=0,d=0,e=0.0,f=0,g=0,h=0,i=0,j=0,l=0.0;p[t>>3]=a;c=k[t>>2]|0;d=k[t+4>>2]|0;e=+$(+a);p[t>>3]=e;f=k[t+4>>2]|0;do if(!(f>>>0>2146435072|(f|0)==2146435072&(k[t>>2]|0)>>>0>0)){e=+$(+b);p[t>>3]=e;g=k[t+4>>2]|0;if(!(g>>>0>2146435072|(g|0)==2146435072&(k[t>>2]|0)>>>0>0)){p[t>>3]=b;g=k[t>>2]|0;h=k[t+4>>2]|0;i=SEa(c|0,d|0,63)|0;j=SEa(g|0,h|0,63)|0;if((i|0)==(j|0)){l=a<b?a:b;break}else{l=(d|0)<0?a:b;break}}else l=a}else l=b;while(0);return +l}function ksa(a,b){a=+a;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0.0,n=0,o=0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0.0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0;p[t>>3]=a;c=k[t>>2]|0;d=k[t+4>>2]|0;p[t>>3]=b;e=k[t>>2]|0;f=k[t+4>>2]|0;g=SEa(c|0,d|0,52)|0;h=g&2047;g=SEa(e|0,f|0,52)|0;i=g&2047;g=d&-2147483648;j=XEa(e|0,f|0,1)|0;l=Q;a:do if(!((j|0)==0&(l|0)==0)?(m=+$(+b),p[t>>3]=m,n=k[t+4>>2]|0,!(n>>>0>2146435072|(n|0)==2146435072&(k[t>>2]|0)>>>0>0|(h|0)==2047)):0){n=XEa(c|0,d|0,1)|0;o=Q;if(!(o>>>0>l>>>0|(o|0)==(l|0)&n>>>0>j>>>0))return +((n|0)==(j|0)&(o|0)==(l|0)?a*0.0:a);if(!h){o=XEa(c|0,d|0,12)|0;n=Q;if((n|0)>-1|(n|0)==-1&o>>>0>4294967295){q=o;o=n;n=0;while(1){r=n+-1|0;q=XEa(q|0,o|0,1)|0;o=Q;if(!((o|0)>-1|(o|0)==-1&q>>>0>4294967295)){s=r;break}else n=r}}else s=0;n=XEa(c|0,d|0,1-s|0)|0;u=n;v=Q;w=s}else{u=c;v=d&1048575|1048576;w=h}if(!i){n=XEa(e|0,f|0,12)|0;q=Q;if((q|0)>-1|(q|0)==-1&n>>>0>4294967295){o=n;n=q;q=0;while(1){r=q+-1|0;o=XEa(o|0,n|0,1)|0;n=Q;if(!((n|0)>-1|(n|0)==-1&o>>>0>4294967295)){x=r;break}else q=r}}else x=0;q=XEa(e|0,f|0,1-x|0)|0;y=q;z=Q;A=x}else{y=e;z=f&1048575|1048576;A=i}q=REa(u|0,v|0,y|0,z|0)|0;o=Q;n=(o|0)>-1|(o|0)==-1&q>>>0>4294967295;b:do if((w|0)>(A|0)){r=n;B=q;C=o;D=u;E=v;F=w;while(1){if(r)if((D|0)==(y|0)&(E|0)==(z|0))break;else{G=B;H=C}else{G=D;H=E}I=XEa(G|0,H|0,1)|0;J=Q;K=F+-1|0;L=REa(I|0,J|0,y|0,z|0)|0;M=Q;N=(M|0)>-1|(M|0)==-1&L>>>0>4294967295;if((K|0)>(A|0)){r=N;B=L;C=M;D=I;E=J;F=K}else{O=N;P=I;R=J;S=L;T=M;U=K;break b}}V=a*0.0;break a}else{O=n;P=u;R=v;S=q;T=o;U=w}while(0);if(O)if((P|0)==(y|0)&(R|0)==(z|0)){V=a*0.0;break}else{W=T;X=S}else{W=R;X=P}if(W>>>0<1048576|(W|0)==1048576&X>>>0<0){o=X;q=W;n=U;while(1){F=XEa(o|0,q|0,1)|0;E=Q;D=n+-1|0;if(E>>>0<1048576|(E|0)==1048576&F>>>0<0){o=F;q=E;n=D}else{Y=F;Z=E;_=D;break}}}else{Y=X;Z=W;_=U}if((_|0)>0){n=QEa(Y|0,Z|0,0,-1048576)|0;q=Q;o=XEa(_|0,0,52)|0;aa=q|Q;ba=n|o}else{o=SEa(Y|0,Z|0,1-_|0)|0;aa=Q;ba=o}k[t>>2]=ba;k[t+4>>2]=aa|g;V=+p[t>>3]}else ca=3;while(0);if((ca|0)==3){m=a*b;V=m/m}return +V}function lsa(a,b){a=+a;b=+b;return +(+ksa(a,b))}function msa(a,b){a=+a;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0.0,i=0,j=0.0;p[t>>3]=a;c=k[t>>2]|0;d=k[t+4>>2]|0;e=SEa(c|0,d|0,52)|0;f=e&2047;switch(f|0){case 0:{if(a!=0.0){g=+msa(a*18446744073709551616.0,b);h=g;i=(k[b>>2]|0)+-64|0}else{h=a;i=0}k[b>>2]=i;j=h;break}case 2047:{j=a;break}default:{k[b>>2]=f+-1022;k[t>>2]=c;k[t+4>>2]=d&-2146435073|1071644672;j=+p[t>>3]}}return +j}function nsa(a,b){a=+a;b=b|0;return +(+msa(a,b))}function osa(a,b){a=+a;b=b|0;return +(+qsa(a,b))}function psa(a){a=+a;var b=0,c=0,d=0,e=0.0,f=0.0,g=0,h=0,i=0,j=0,l=0,m=0,n=0.0,o=0.0,q=0.0,r=0.0,s=0.0;p[t>>3]=a;b=k[t>>2]|0;c=k[t+4>>2]|0;d=(c|0)<0;do if(d|c>>>0<1048576){e=+$(+a);p[t>>3]=e;if((k[t>>2]|0)==0&(k[t+4>>2]|0)==0){f=-1.0/(a*a);break}if(d){f=(a-a)/0.0;break}else{p[t>>3]=a*18014398509481984.0;g=k[t+4>>2]|0;h=k[t>>2]|0;i=g;j=g;l=-1077;m=9;break}}else if(c>>>0<=2146435071)if((b|0)==0&0==0&(c|0)==1072693248)f=0.0;else{h=b;i=c;j=c;l=-1023;m=9}else f=a;while(0);if((m|0)==9){m=j+614242|0;k[t>>2]=h;k[t+4>>2]=(m&1048575)+1072079006;a=+p[t>>3]+-1.0;e=a*(a*.5);n=a/(a+2.0);o=n*n;q=o*o;p[t>>3]=a-e;h=k[t+4>>2]|0;k[t>>2]=0;k[t+4>>2]=h;r=+p[t>>3];s=a-r-e+n*(e+(q*(q*(q*.15313837699209373+.22222198432149784)+.3999999999940942)+o*(q*(q*(q*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));q=r*.4342944818781689;o=+(l+(m>>>20)|0);e=o*.30102999566361177;n=e+q;f=n+(q+(e-n)+(s*.4342944818781689+(o*3.694239077158931e-13+(r+s)*2.5082946711645275e-11)))}return +f}function qsa(a,b){a=+a;b=b|0;var c=0.0,d=0,e=0,f=0,g=0.0;if((b|0)>1023){c=a*8988465674311579538646525.0e283;d=b+-1023|0;if((d|0)>1023){e=b+-2046|0;f=(e|0)>1023?1023:e;g=c*8988465674311579538646525.0e283}else{f=d;g=c}}else if((b|0)<-1022){c=a*2.2250738585072014e-308;d=b+1022|0;if((d|0)<-1022){e=b+2044|0;f=(e|0)<-1022?-1022:e;g=c*2.2250738585072014e-308}else{f=d;g=c}}else{f=b;g=a}b=XEa(f+1023|0,0,52)|0;f=Q;k[t>>2]=b;k[t+4>>2]=f;return +(g*+p[t>>3])}function rsa(a,b){a=+a;b=b|0;return +(+qsa(a,b))}function ssa(a){a=+a;var b=0,c=0.0,d=0,e=0.0;p[t>>3]=a;b=k[t+4>>2]|0;c=+$(+a);p[t>>3]=c;d=k[t+4>>2]|0;do if(d>>>0>1071748074)if(d>>>0>1077149696){e=1.0-0.0/c;break}else{e=1.0-2.0/(+hsa(c*2.0)+2.0);break}else{if(d>>>0>1070618798){a=+hsa(c*2.0);e=a/(a+2.0);break}if(d>>>0>1048575){a=+hsa(c*-2.0);e=-a/(a+2.0)}else e=c}while(0);return +((b|0)<0?-e:e)}function tsa(a,b,c){a=a|0;b=b|0;c=c|0;return usa(0,a,b,(c|0)!=0?c:42536)|0}function usa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;e=r;r=r+16|0;f=e;g=(d|0)==0?42540:d;d=k[g>>2]|0;a:do if(!b)if(!d)h=0;else j=15;else{l=(a|0)==0?f:a;if(!c)h=-2;else{if(!d){m=i[b>>0]|0;n=m&255;if(m<<24>>24>-1){k[l>>2]=n;h=m<<24>>24!=0&1;break}m=n+-194|0;if(m>>>0>50){j=15;break}n=k[42268+(m<<2)>>2]|0;m=c+-1|0;if(!m)o=n;else{p=m;q=n;s=b+1|0;j=9}}else{p=c;q=d;s=b;j=9}b:do if((j|0)==9){n=i[s>>0]|0;m=(n&255)>>>3;if((m+-16|m+(q>>26))>>>0>7){j=15;break a}else{t=p;u=n;v=q;w=s}while(1){w=w+1|0;v=(u&255)+-128|v<<6;t=t+-1|0;if((v|0)>=0){x=v;y=t;break}if(!t){o=v;break b}u=i[w>>0]|0;if((u&-64)<<24>>24!=-128){j=15;break a}}k[g>>2]=0;k[l>>2]=x;h=c-y|0;break a}while(0);k[g>>2]=o;h=-2}}while(0);if((j|0)==15){k[g>>2]=0;g=Sra()|0;k[g>>2]=84;h=-1}r=e;return h|0}function vsa(a){a=a|0;var b=0;if(!a)b=1;else b=(k[a>>2]|0)==0;return b&1|0}function wsa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;f=r;r=r+1040|0;g=f+8|0;h=f;i=k[b>>2]|0;k[h>>2]=i;j=(a|0)!=0;l=j?d:256;d=j?a:g;a=i;a:do if((l|0)!=0&(i|0)!=0){m=c;n=l;o=a;p=0;q=d;while(1){s=m>>>2;t=s>>>0>=n>>>0;if(!(m>>>0>131|t)){u=m;v=n;w=o;x=p;y=q;break a}z=t?n:s;s=m-z|0;t=xsa(q,h,z,e)|0;if((t|0)==-1){A=s;B=q;break}z=(q|0)==(g|0);C=z?0:t;D=n-C|0;E=z?q:q+(t<<2)|0;z=t+p|0;t=k[h>>2]|0;if((n|0)!=(C|0)&(t|0)!=0){m=s;n=D;o=t;p=z;q=E}else{u=s;v=D;w=t;x=z;y=E;break a}}u=A;v=0;w=k[h>>2]|0;x=-1;y=B}else{u=c;v=l;w=a;x=0;y=d}while(0);b:do if((w|0)!=0?(v|0)!=0&(u|0)!=0:0){d=u;a=v;l=w;c=x;B=y;while(1){A=usa(B,l,d,e)|0;if((A+2|0)>>>0<3){F=A;G=c;break}l=(k[h>>2]|0)+A|0;k[h>>2]=l;a=a+-1|0;g=c+1|0;if(!((a|0)!=0&(d|0)!=(A|0))){H=g;break b}else{d=d-A|0;c=g;B=B+4|0}}switch(F|0){case -1:{H=-1;break b;break}case 0:{k[h>>2]=0;H=G;break b;break}default:{k[e>>2]=0;H=G;break b}}}else H=x;while(0);if(j)k[b>>2]=k[h>>2];r=f;return H|0}function xsa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;e=k[b>>2]|0;if((d|0)!=0?(f=k[d>>2]|0,(f|0)!=0):0)if(!a){g=c;h=f;j=e;m=16}else{k[d>>2]=0;n=a;o=c;p=f;q=e;m=37}else if(!a){r=c;s=e;m=7}else{t=a;u=c;v=e;m=6}a:while(1)if((m|0)==6){m=0;if(!u){w=v;m=26;break}else{x=t;y=u;z=v}while(1){e=i[z>>0]|0;do if(((e&255)+-1|0)>>>0<127?y>>>0>4&(z&3|0)==0:0){f=x;d=y;A=z;while(1){B=k[A>>2]|0;if((B+-16843009|B)&-2139062144){C=f;D=d;E=B;F=A;m=32;break}k[f>>2]=B&255;k[f+4>>2]=l[A+1>>0];k[f+8>>2]=l[A+2>>0];B=A+4|0;G=f+16|0;k[f+12>>2]=l[A+3>>0];H=d+-4|0;if(H>>>0>4){f=G;d=H;A=B}else{I=B;J=G;K=H;m=31;break}}if((m|0)==31){m=0;L=J;M=K;N=i[I>>0]|0;O=I;break}else if((m|0)==32){m=0;L=C;M=D;N=E&255;O=F;break}}else{L=x;M=y;N=e;O=z}while(0);e=N&255;if((e+-1|0)>>>0>=127){P=L;Q=M;R=e;S=O;break}A=O+1|0;k[L>>2]=e;y=M+-1|0;if(!y){w=A;m=26;break a}else{x=L+4|0;z=A}}A=R+-194|0;if(A>>>0>50){T=P;U=Q;V=S;m=48;break}n=P;o=Q;p=k[42268+(A<<2)>>2]|0;q=S+1|0;m=37;continue}else if((m|0)==7){m=0;A=i[s>>0]|0;if(((A&255)+-1|0)>>>0<127?(s&3|0)==0:0){e=k[s>>2]|0;d=e&255;if(!((e+-16843009|e)&-2139062144)){e=r;f=s;while(1){H=f+4|0;G=e+-4|0;B=k[H>>2]|0;if(!((B+-16843009|B)&-2139062144)){e=G;f=H}else{W=H;X=G;Y=B;break}}Z=X;_=Y&255;$=W}else{Z=r;_=d;$=s}}else{Z=r;_=A;$=s}f=_&255;if((f+-1|0)>>>0<127){r=Z+-1|0;s=$+1|0;m=7;continue}else{aa=Z;ba=f;ca=$}f=ba+-194|0;if(f>>>0>50){T=a;U=aa;V=ca;m=48;break}g=aa;h=k[42268+(f<<2)>>2]|0;j=ca+1|0;m=16;continue}else if((m|0)==16){m=0;f=(l[j>>0]|0)>>>3;if((f+-16|f+(h>>26))>>>0>7){m=17;break}f=j+1|0;if(h&33554432){if((i[f>>0]&-64)<<24>>24!=-128){m=20;break}e=j+2|0;if(!(h&524288))da=e;else{if((i[e>>0]&-64)<<24>>24!=-128){m=23;break}da=j+3|0}}else da=f;r=g+-1|0;s=da;m=7;continue}else if((m|0)==37){m=0;f=l[q>>0]|0;e=f>>>3;if((e+-16|e+(p>>26))>>>0>7){m=38;break}e=q+1|0;B=f+-128|p<<6;if((B|0)<0){f=l[e>>0]|0;if((f&192|0)!=128){m=41;break}G=q+2|0;H=f+-128|B<<6;if((H|0)<0){f=l[G>>0]|0;if((f&192|0)!=128){m=44;break}ea=f+-128|H<<6;fa=q+3|0}else{ea=H;fa=G}}else{ea=B;fa=e}k[n>>2]=ea;t=n+4|0;u=o+-1|0;v=fa;m=6;continue}if((m|0)==17){ga=a;ha=g;ia=h;ja=j+-1|0;m=47}else if((m|0)==20){ga=a;ha=g;ia=h;ja=j+-1|0;m=47}else if((m|0)==23){ga=a;ha=g;ia=h;ja=j+-1|0;m=47}else if((m|0)==26){k[b>>2]=w;ka=c}else if((m|0)==38){ga=n;ha=o;ia=p;ja=q+-1|0;m=47}else if((m|0)==41){la=n;ma=q+-1|0;m=52}else if((m|0)==44){la=n;ma=q+-1|0;m=52}if((m|0)==47)if(!ia){T=ga;U=ha;V=ja;m=48}else{la=ga;ma=ja;m=52}if((m|0)==48)if(!(i[V>>0]|0)){if(T){k[T>>2]=0;k[b>>2]=0}ka=c-U|0}else{la=T;ma=V;m=52}if((m|0)==52){m=Sra()|0;k[m>>2]=84;if(!la)ka=-1;else{k[b>>2]=ma;ka=-1}}return ka|0}function ysa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0;d=r;r=r+16|0;e=d;a:do if(!b)f=0;else{do if(c){g=(a|0)==0?e:a;h=i[b>>0]|0;j=h&255;if(h<<24>>24>-1){k[g>>2]=j;f=h<<24>>24!=0&1;break a}h=j+-194|0;if(h>>>0<=50){j=b+1|0;m=k[42268+(h<<2)>>2]|0;if(c>>>0<4?(m&-2147483648>>>((c*6|0)+-6|0)|0)!=0:0)break;h=l[j>>0]|0;j=h>>>3;if((j+-16|j+(m>>26))>>>0<=7){j=h+-128|m<<6;if((j|0)>=0){k[g>>2]=j;f=2;break a}m=l[b+2>>0]|0;if((m&192|0)==128){h=m+-128|j<<6;if((h|0)>=0){k[g>>2]=h;f=3;break a}j=l[b+3>>0]|0;if((j&192|0)==128){k[g>>2]=j+-128|h<<6;f=4;break a}}}}}while(0);h=Sra()|0;k[h>>2]=84;f=-1}while(0);r=d;return f|0}function zsa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;do if(a){if(b>>>0<128){i[a>>0]=b;d=1;break}if(b>>>0<2048){i[a>>0]=b>>>6|192;i[a+1>>0]=b&63|128;d=2;break}if(b>>>0<55296|(b&-8192|0)==57344){i[a>>0]=b>>>12|224;i[a+1>>0]=b>>>6&63|128;i[a+2>>0]=b&63|128;d=3;break}if((b+-65536|0)>>>0<1048576){i[a>>0]=b>>>18|240;i[a+1>>0]=b>>>12&63|128;i[a+2>>0]=b>>>6&63|128;i[a+3>>0]=b&63|128;d=4;break}else{c=Sra()|0;k[c>>2]=84;d=-1;break}}else d=1;while(0);return d|0}function Asa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;e=r;r=r+272|0;f=e+8|0;g=e;h=k[b>>2]|0;k[g>>2]=h;i=(a|0)!=0;j=i?d:256;d=i?a:f;a=h;a:do if((j|0)!=0&(h|0)!=0){l=c;m=j;n=a;o=0;p=d;while(1){q=l>>>0>=m>>>0;if(!(q|l>>>0>32)){s=l;t=m;u=n;v=o;w=p;break a}x=q?m:l;q=l-x|0;y=Bsa(p,g,x,0)|0;if((y|0)==-1){z=q;A=p;break}x=(p|0)==(f|0);B=x?0:y;C=m-B|0;D=x?p:p+y|0;x=y+o|0;y=k[g>>2]|0;if((m|0)!=(B|0)&(y|0)!=0){l=q;m=C;n=y;o=x;p=D}else{s=q;t=C;u=y;v=x;w=D;break a}}s=z;t=0;u=k[g>>2]|0;v=-1;w=A}else{s=c;t=j;u=a;v=0;w=d}while(0);b:do if((u|0)!=0?(t|0)!=0&(s|0)!=0:0){d=s;a=t;j=u;c=v;A=w;while(1){z=zsa(A,k[j>>2]|0,0)|0;if((z+1|0)>>>0<2){E=z;F=c;break}j=(k[g>>2]|0)+4|0;k[g>>2]=j;d=d+-1|0;f=c+1|0;if(!((a|0)!=(z|0)&(d|0)!=0)){G=f;break b}else{a=a-z|0;c=f;A=A+z|0}}if(!E){k[g>>2]=0;G=F}else G=-1}else G=v;while(0);if(i)k[b>>2]=k[g>>2];r=e;return G|0}function Bsa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;d=r;r=r+16|0;e=d;a:do if(!a){f=k[b>>2]|0;g=k[f>>2]|0;if(!g)h=0;else{j=0;l=g;g=f;while(1){if(l>>>0>127){f=zsa(e,l,0)|0;if((f|0)==-1){h=-1;break a}else m=f}else m=1;f=m+j|0;g=g+4|0;l=k[g>>2]|0;if(!l){h=f;break}else j=f}}}else{b:do if(c>>>0>3){j=a;l=c;g=k[b>>2]|0;while(1){f=k[g>>2]|0;if((f+-1|0)>>>0>126){if(!f){n=j;o=l;break}p=zsa(j,f,0)|0;if((p|0)==-1){h=-1;break a}q=j+p|0;s=l-p|0;t=g}else{i[j>>0]=f;q=j+1|0;s=l+-1|0;t=k[b>>2]|0}g=t+4|0;k[b>>2]=g;if(s>>>0<=3){u=q;v=s;break b}else{j=q;l=s}}i[n>>0]=0;k[b>>2]=0;h=c-o|0;break a}else{u=a;v=c}while(0);if(v){l=u;j=v;g=k[b>>2]|0;while(1){f=k[g>>2]|0;if((f+-1|0)>>>0>126){if(!f){w=l;x=j;y=19;break}p=zsa(e,f,0)|0;if((p|0)==-1){h=-1;break a}if(j>>>0<p>>>0){z=j;y=22;break}zsa(l,k[g>>2]|0,0)|0;A=l+p|0;B=j-p|0;C=g}else{i[l>>0]=f;A=l+1|0;B=j+-1|0;C=k[b>>2]|0}g=C+4|0;k[b>>2]=g;if(!B){h=c;break a}else{l=A;j=B}}if((y|0)==19){i[w>>0]=0;k[b>>2]=0;h=c-x|0;break}else if((y|0)==22){h=c-z|0;break}}else h=c}while(0);r=d;return h|0}function Csa(a,b){a=a|0;b=b|0;var c=0;if(!a)c=0;else c=zsa(a,b,0)|0;return c|0}function Dsa(a){a=a|0;var b=0;b=25360;k[b>>2]=a+-1;k[b+4>>2]=0;return}function Esa(){var a=0,b=0,c=0;a=25360;b=bFa(k[a>>2]|0,k[a+4>>2]|0,1284865837,1481765933)|0;a=QEa(b|0,Q|0,1,0)|0;b=Q;c=25360;k[c>>2]=a;k[c+4>>2]=b;c=SEa(a|0,b|0,33)|0;return c|0}function Fsa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;c=r;r=r+112|0;d=c+40|0;e=c+24|0;f=c+16|0;g=c;h=c+52|0;j=i[b>>0]|0;if(Dta(154469,j<<24>>24,4)|0){l=lua(1144)|0;if(!l)m=0;else{n=l;o=n+112|0;do{k[n>>2]=0;n=n+4|0}while((n|0)<(o|0));if(!(Gta(b,43)|0))k[l>>2]=j<<24>>24==114?8:4;if(!(Gta(b,101)|0))p=j;else{k[g>>2]=a;k[g+4>>2]=2;k[g+8>>2]=1;Wb(221,g|0)|0;p=i[b>>0]|0}if(p<<24>>24==97){k[f>>2]=a;k[f+4>>2]=3;p=Wb(221,f|0)|0;if(!(p&1024)){k[e>>2]=a;k[e+4>>2]=4;k[e+8>>2]=p|1024;Wb(221,e|0)|0}e=k[l>>2]|128;k[l>>2]=e;q=e}else q=k[l>>2]|0;k[l+60>>2]=a;k[l+44>>2]=l+120;k[l+48>>2]=1024;e=l+75|0;i[e>>0]=-1;if((q&8|0)==0?(k[d>>2]=a,k[d+4>>2]=21505,k[d+8>>2]=h,(qb(54,d|0)|0)==0):0)i[e>>0]=10;k[l+32>>2]=20;k[l+36>>2]=18;k[l+40>>2]=19;k[l+12>>2]=363;if(!(k[10557]|0))k[l+76>>2]=-1;lc(42252);e=k[10562]|0;k[l+56>>2]=e;if(e)k[e+52>>2]=l;k[10562]=l;dc(42252);m=l}}else{l=Sra()|0;k[l>>2]=22;m=0}r=c;return m|0}function Gsa(a){a=a|0;var b=0,c=0,d=0,e=0;b=(Gta(a,43)|0)==0;c=i[a>>0]|0;d=b?c<<24>>24!=114&1:2;b=(Gta(a,120)|0)==0;e=b?d:d|128;d=(Gta(a,101)|0)==0;a=d?e:e|524288;e=c<<24>>24==114?a:a|64;a=c<<24>>24==119?e|512:e;return (c<<24>>24==97?a|1024:a)|0}function Hsa(a){a=a|0;return 0}function Isa(a){a=a|0;return}function Jsa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;c=r;r=r+16|0;d=c;e=b&255;i[d>>0]=e;f=a+16|0;g=k[f>>2]|0;if(!g)if(!(Rsa(a)|0)){h=k[f>>2]|0;j=4}else m=-1;else{h=g;j=4}do if((j|0)==4){g=a+20|0;f=k[g>>2]|0;if(f>>>0<h>>>0?(n=b&255,(n|0)!=(i[a+75>>0]|0)):0){k[g>>2]=f+1;i[f>>0]=e;m=n;break}if((Rc[k[a+36>>2]&63](a,d,1)|0)==1)m=l[d>>0]|0;else m=-1}while(0);r=c;return m|0}function Ksa(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;k[c>>2]=k[a+60>>2];a=Yra(sb(6,c|0)|0)|0;r=b;return a|0}function Lsa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;d=r;r=r+48|0;e=d+16|0;f=d;g=d+32|0;k[g>>2]=b;h=g+4|0;j=a+48|0;l=k[j>>2]|0;k[h>>2]=c-((l|0)!=0&1);m=a+44|0;k[g+8>>2]=k[m>>2];k[g+12>>2]=l;if(!(k[10556]|0)){k[e>>2]=k[a+60>>2];k[e+4>>2]=g;k[e+8>>2]=2;n=Yra(wc(145,e|0)|0)|0}else{rb(548,a|0);k[f>>2]=k[a+60>>2];k[f+4>>2]=g;k[f+8>>2]=2;g=Yra(wc(145,f|0)|0)|0;jb(0);n=g}if((n|0)>=1){g=k[h>>2]|0;if(n>>>0>g>>>0){h=k[m>>2]|0;m=a+4|0;k[m>>2]=h;f=h;k[a+8>>2]=f+(n-g);if(!(k[j>>2]|0))o=c;else{k[m>>2]=f+1;i[b+(c+-1)>>0]=i[f>>0]|0;o=c}}else o=n}else{k[a>>2]=k[a>>2]|n&48^16;k[a+8>>2]=0;k[a+4>>2]=0;o=n}r=d;return o|0}function Msa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=r;r=r+32|0;e=d;f=d+20|0;k[e>>2]=k[a+60>>2];k[e+4>>2]=0;k[e+8>>2]=b;k[e+12>>2]=f;k[e+16>>2]=c;if((Yra(uc(140,e|0)|0)|0)<0){k[f>>2]=-1;g=-1}else g=k[f>>2]|0;r=d;return g|0}function Nsa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;d=r;r=r+48|0;e=d+16|0;f=d;g=d+32|0;h=a+28|0;i=k[h>>2]|0;k[g>>2]=i;j=a+20|0;l=(k[j>>2]|0)-i|0;k[g+4>>2]=l;k[g+8>>2]=b;k[g+12>>2]=c;b=a+60|0;i=a+44|0;m=g;g=2;n=l+c|0;while(1){if(!(k[10556]|0)){k[e>>2]=k[b>>2];k[e+4>>2]=m;k[e+8>>2]=g;o=Yra(xc(146,e|0)|0)|0}else{rb(549,a|0);k[f>>2]=k[b>>2];k[f+4>>2]=m;k[f+8>>2]=g;l=Yra(xc(146,f|0)|0)|0;jb(0);o=l}if((n|0)==(o|0)){p=6;break}if((o|0)<0){q=m;s=g;p=8;break}l=n-o|0;t=k[m+4>>2]|0;if(o>>>0<=t>>>0)if((g|0)==2){k[h>>2]=(k[h>>2]|0)+o;u=t;v=o;w=m;x=2}else{u=t;v=o;w=m;x=g}else{y=k[i>>2]|0;k[h>>2]=y;k[j>>2]=y;u=k[m+12>>2]|0;v=o-t|0;w=m+8|0;x=g+-1|0}k[w>>2]=(k[w>>2]|0)+v;k[w+4>>2]=u-v;m=w;g=x;n=l}if((p|0)==6){n=k[i>>2]|0;k[a+16>>2]=n+(k[a+48>>2]|0);i=n;k[h>>2]=i;k[j>>2]=i;z=c}else if((p|0)==8){k[a+16>>2]=0;k[h>>2]=0;k[j>>2]=0;k[a>>2]=k[a>>2]|32;if((s|0)==2)z=0;else z=c-(k[q+4>>2]|0)|0}r=d;return z|0}function Osa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=r;r=r+80|0;e=d;k[a+36>>2]=18;if((k[a>>2]&64|0)==0?(k[e>>2]=k[a+60>>2],k[e+4>>2]=21505,k[e+8>>2]=d+12,(qb(54,e|0)|0)!=0):0)i[a+75>>0]=-1;e=Nsa(a,b,c)|0;r=d;return e|0}function Psa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=a+84|0;e=k[d>>2]|0;f=c+256|0;g=Dta(e,0,f)|0;h=(g|0)==0?f:g-e|0;g=h>>>0<c>>>0?h:c;TEa(b|0,e|0,g|0)|0;k[a+4>>2]=e+g;b=e+h|0;k[a+8>>2]=b;k[d>>2]=b;return g|0}function Qsa(a){a=a|0;var b=0,c=0,d=0;b=a+74|0;c=i[b>>0]|0;i[b>>0]=c+255|c;c=a+20|0;b=a+44|0;if((k[c>>2]|0)>>>0>(k[b>>2]|0)>>>0)Rc[k[a+36>>2]&63](a,0,0)|0;k[a+16>>2]=0;k[a+28>>2]=0;k[c>>2]=0;c=k[a>>2]|0;if(c&20)if(!(c&4))d=-1;else{k[a>>2]=c|32;d=-1}else{c=k[b>>2]|0;k[a+8>>2]=c;k[a+4>>2]=c;d=0}return d|0}function Rsa(a){a=a|0;var b=0,c=0,d=0;b=a+74|0;c=i[b>>0]|0;i[b>>0]=c+255|c;c=k[a>>2]|0;if(!(c&8)){k[a+8>>2]=0;k[a+4>>2]=0;b=k[a+44>>2]|0;k[a+28>>2]=b;k[a+20>>2]=b;k[a+16>>2]=b+(k[a+48>>2]|0);d=0}else{k[a>>2]=c|32;d=-1}return d|0}function Ssa(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+16|0;c=b;if((k[a+8>>2]|0)==0?(Qsa(a)|0)!=0:0)d=-1;else if((Rc[k[a+32>>2]&63](a,c,1)|0)==1)d=l[c>>0]|0;else d=-1;r=b;return d|0}function Tsa(a){a=a|0;var b=0,c=0,d=0,e=0;b=(k[a>>2]&1|0)!=0;if(!b){lc(42252);c=k[a+52>>2]|0;d=a+56|0;if(c)k[c+56>>2]=k[d>>2];e=k[d>>2]|0;if(e)k[e+52>>2]=c;if((k[10562]|0)==(a|0))k[10562]=e;dc(42252)}e=Usa(a)|0;c=Hc[k[a+12>>2]&511](a)|0|e;e=k[a+92>>2]|0;if(e)mua(e);if(!b)mua(a);return c|0}function Usa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;do if(a){if((k[a+76>>2]|0)<=-1){b=Xta(a)|0;break}c=(Hsa(a)|0)==0;d=Xta(a)|0;if(c)b=d;else{Isa(a);b=d}}else{if(!(k[10621]|0))e=0;else e=Usa(k[10621]|0)|0;lc(42252);d=k[10562]|0;if(!d)f=e;else{c=d;d=e;while(1){if((k[c+76>>2]|0)>-1)g=Hsa(c)|0;else g=0;if((k[c+20>>2]|0)>>>0>(k[c+28>>2]|0)>>>0)h=Xta(c)|0|d;else h=d;if(g)Isa(c);c=k[c+56>>2]|0;if(!c){f=h;break}else d=h}}dc(42252);b=f}while(0);return b|0}function Vsa(a,b){a=a|0;b=b|0;var c=0,d=0;c=gta(a)|0;if((c|0)<0)d=-1;else{k[b>>2]=c;d=0}return d|0}function Wsa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;if((k[c+76>>2]|0)>-1)d=Hsa(c)|0;else d=0;e=b+-1|0;if((b|0)<2){b=c+74|0;f=i[b>>0]|0;i[b>>0]=f+255|f;if(d)Isa(c);if(!e){i[a>>0]=0;g=a}else g=0}else{a:do if(e){f=c+4|0;b=c+8|0;h=e;j=a;while(1){m=k[f>>2]|0;n=m;o=(k[b>>2]|0)-n|0;p=Dta(m,10,o)|0;q=(p|0)==0;r=q?o:1-n+p|0;p=r>>>0<h>>>0;n=p?r:h;TEa(j|0,m|0,n|0)|0;m=(k[f>>2]|0)+n|0;k[f>>2]=m;r=j+n|0;o=h-n|0;if(!(q&p)){s=r;t=17;break a}if(m>>>0>=(k[b>>2]|0)>>>0){p=Ssa(c)|0;if((p|0)<0){u=r;break}else v=p}else{k[f>>2]=m+1;v=l[m>>0]|0}h=o+-1|0;o=r+1|0;i[r>>0]=v;if(!((h|0)!=0&(v&255|0)!=10)){s=o;t=17;break a}else j=o}if((u|0)!=(a|0)?(k[c>>2]&16|0)!=0:0){s=u;t=17}else w=0}else{s=a;t=17}while(0);if((t|0)==17)if(!a)w=0;else{i[s>>0]=0;w=a}if(!d)g=w;else{Isa(c);g=w}}return g|0}function Xsa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;d=(Gta(c,43)|0)==0;do if((b|0)!=0?(e=i[c>>0]|0,f=e<<24>>24,(Dta(154469,f,4)|0)!=0):0){if((a|0)==0&b>>>0>4294966151){g=Sra()|0;k[g>>2]=12;h=0;break}g=(a|0)!=0;j=nua(g?1164:b+1164|0,1)|0;if(!j)h=0;else{l=j+112|0;k[j+84>>2]=l;k[j+60>>2]=-1;i[j+75>>0]=-1;k[j+44>>2]=j+140;k[j+48>>2]=1024;m=g?a:j+1164|0;k[j+124>>2]=m;k[j+120>>2]=b;k[j+128>>2]=f;if(d)k[j>>2]=e<<24>>24==114?8:4;switch(e<<24>>24){case 114:{k[j+116>>2]=b;break}case 97:{e=Nta(m,b)|0;k[l>>2]=e;k[j+116>>2]=e;break}default:{}}k[j+32>>2]=46;k[j+36>>2]=47;k[j+40>>2]=48;k[j+12>>2]=440;if(!(k[10557]|0))k[j+76>>2]=-1;lc(42252);e=k[10562]|0;k[j+56>>2]=e;if(e)k[e+52>>2]=j;k[10562]=j;dc(42252);h=j}}else n=3;while(0);if((n|0)==3){n=Sra()|0;k[n>>2]=22;h=0}return h|0}function Ysa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=r;r=r+32|0;d=c+16|0;e=c;if(Dta(154469,i[b>>0]|0,4)|0){f=Gsa(b)|0|32768;k[e>>2]=a;k[e+4>>2]=f;k[e+8>>2]=438;f=Yra(nc(5,e|0)|0)|0;if((f|0)>=0){e=Fsa(f,b)|0;if(!e){k[d>>2]=f;sb(6,d|0)|0;g=0}else g=e}else g=0}else{e=Sra()|0;k[e>>2]=22;g=0}r=c;return g|0}function Zsa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=r;r=r+16|0;e=d;k[e>>2]=c;c=uta(a,b,e)|0;r=d;return c|0}function _sa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;if((k[b+76>>2]|0)>=0?(Hsa(b)|0)!=0:0){if((i[b+75>>0]|0)!=(a|0)?(c=b+20|0,d=k[c>>2]|0,d>>>0<(k[b+16>>2]|0)>>>0):0){k[c>>2]=d+1;i[d>>0]=a;e=a&255}else e=Jsa(b,a)|0;Isa(b);f=e}else g=3;do if((g|0)==3){if((i[b+75>>0]|0)!=(a|0)?(e=b+20|0,d=k[e>>2]|0,d>>>0<(k[b+16>>2]|0)>>>0):0){k[e>>2]=d+1;i[d>>0]=a;f=a&255;break}f=Jsa(b,a)|0}while(0);return f|0}function $sa(a,b){a=a|0;b=b|0;return (jta(a,Lta(a)|0,1,b)|0)+-1|0}function ata(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;e=ma(c,b)|0;if((k[d+76>>2]|0)>-1)f=Hsa(d)|0;else f=0;g=d+74|0;h=i[g>>0]|0;i[g>>0]=h+255|h;h=d+4|0;g=k[h>>2]|0;j=(k[d+8>>2]|0)-g|0;l=g;if((j|0)>0){g=j>>>0<e>>>0?j:e;TEa(a|0,l|0,g|0)|0;k[h>>2]=l+g;m=a+g|0;n=e-g|0}else{m=a;n=e}a:do if(!n)o=13;else{a=d+32|0;g=m;l=n;while(1){if(Qsa(d)|0){p=l;break}h=Rc[k[a>>2]&63](d,g,l)|0;if((h+1|0)>>>0<2){p=l;break}if((l|0)==(h|0)){o=13;break a}else{g=g+h|0;l=l-h|0}}if(f)Isa(d);q=((e-p|0)>>>0)/(b>>>0)|0}while(0);if((o|0)==13)if(!f)q=c;else{Isa(d);q=c}return q|0}function bta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if((c|0)==1)d=b-(k[a+8>>2]|0)+(k[a+4>>2]|0)|0;else d=b;b=a+20|0;e=a+28|0;if((k[b>>2]|0)>>>0>(k[e>>2]|0)>>>0?(Rc[k[a+36>>2]&63](a,0,0)|0,(k[b>>2]|0)==0):0)f=-1;else{k[a+16>>2]=0;k[e>>2]=0;k[b>>2]=0;if((Rc[k[a+40>>2]&63](a,d,c)|0)<0)f=-1;else{k[a+8>>2]=0;k[a+4>>2]=0;k[a>>2]=k[a>>2]&-17;f=0}}return f|0}function cta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if((k[a+76>>2]|0)>-1){d=(Hsa(a)|0)==0;e=bta(a,b,c)|0;if(d)f=e;else{Isa(a);f=e}}else f=bta(a,b,c)|0;return f|0}function dta(a,b,c){a=a|0;b=b|0;c=c|0;return cta(a,b,c)|0}function eta(a,b){a=a|0;b=b|0;return cta(a,k[b>>2]|0,0)|0}function fta(a){a=a|0;var b=0,c=0,d=0;if(!(k[a>>2]&128))b=1;else b=(k[a+20>>2]|0)>>>0>(k[a+28>>2]|0)>>>0?2:1;c=Rc[k[a+40>>2]&63](a,0,b)|0;if((c|0)<0)d=c;else d=c-(k[a+8>>2]|0)+(k[a+4>>2]|0)+(k[a+20>>2]|0)-(k[a+28>>2]|0)|0;return d|0}function gta(a){a=a|0;var b=0,c=0,d=0;if((k[a+76>>2]|0)>-1){b=(Hsa(a)|0)==0;c=fta(a)|0;if(b)d=c;else d=c}else d=fta(a)|0;return d|0}function hta(a){a=a|0;return gta(a)|0}function ita(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;d=c+16|0;e=k[d>>2]|0;if(!e)if(!(Rsa(c)|0)){f=k[d>>2]|0;g=5}else h=0;else{f=e;g=5}a:do if((g|0)==5){e=c+20|0;d=k[e>>2]|0;j=d;if((f-d|0)>>>0<b>>>0){h=Rc[k[c+36>>2]&63](c,a,b)|0;break}b:do if((i[c+75>>0]|0)>-1){d=b;while(1){if(!d){l=b;m=a;n=j;o=0;break b}p=d+-1|0;if((i[a+p>>0]|0)==10){q=d;break}else d=p}if((Rc[k[c+36>>2]&63](c,a,q)|0)>>>0<q>>>0){h=q;break a}l=b-q|0;m=a+q|0;n=k[e>>2]|0;o=q}else{l=b;m=a;n=j;o=0}while(0);TEa(n|0,m|0,l|0)|0;k[e>>2]=(k[e>>2]|0)+l;h=o+l|0}while(0);return h|0}function jta(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=ma(c,b)|0;if((k[d+76>>2]|0)>-1){f=(Hsa(d)|0)==0;g=ita(a,e,d)|0;if(f)h=g;else{Isa(d);h=g}}else h=ita(a,e,d)|0;if((h|0)==(e|0))i=c;else i=(h>>>0)/(b>>>0)|0;return i|0}function kta(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;if((k[a+76>>2]|0)>=0?(Hsa(a)|0)!=0:0){b=a+4|0;c=k[b>>2]|0;if(c>>>0<(k[a+8>>2]|0)>>>0){k[b>>2]=c+1;d=l[c>>0]|0}else d=Ssa(a)|0;e=d}else f=3;do if((f|0)==3){d=a+4|0;c=k[d>>2]|0;if(c>>>0<(k[a+8>>2]|0)>>>0){k[d>>2]=c+1;e=l[c>>0]|0;break}else{e=Ssa(a)|0;break}}while(0);return e|0}function lta(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=lua(1160)|0;if(!c)d=0;else{e=c;f=e+120|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(f|0));e=c+112|0;k[c+84>>2]=e;k[e>>2]=a;k[c+116>>2]=b;b=c+120|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[c>>2]=4;k[c+60>>2]=-1;k[c+44>>2]=c+136;k[c+48>>2]=1024;i[c+75>>0]=-1;k[c+36>>2]=49;k[c+40>>2]=50;k[c+12>>2]=441;if(!(k[10557]|0))k[c+76>>2]=-1;lc(42252);b=k[10562]|0;k[c+56>>2]=b;if(b)k[b+52>>2]=c;k[10562]=c;dc(42252);d=c}return d|0}function mta(a,b){a=a|0;b=b|0;var c=0,d=0;c=r;r=r+16|0;d=c;k[d>>2]=b;b=uta(k[10620]|0,a,d)|0;r=c;return b|0}function nta(a){a=a|0;return _sa(a,k[10620]|0)|0}function ota(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=k[10620]|0;if((k[b+76>>2]|0)>-1)c=Hsa(b)|0;else c=0;do if(($sa(a,b)|0)<0)d=1;else{if((i[b+75>>0]|0)!=10?(e=b+20|0,f=k[e>>2]|0,f>>>0<(k[b+16>>2]|0)>>>0):0){k[e>>2]=f+1;i[f>>0]=10;d=0;break}d=(Jsa(b,10)|0)<0}while(0);if(c)Isa(b);return d<<31>>31|0}function pta(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=r;r=r+16|0;f=e;k[f>>2]=d;d=wta(a,b,c,f)|0;r=e;return d|0}function qta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=r;r=r+16|0;e=d;k[e>>2]=c;c=xta(a,b,e)|0;r=d;return c|0}function rta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=r;r=r+16|0;e=d;k[e>>2]=c;c=yta(a,b,e)|0;r=d;return c|0}function sta(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;do if((a|0)!=-1){if((k[b+76>>2]|0)>-1)c=Hsa(b)|0;else c=0;if(!((k[b+8>>2]|0)==0?(Qsa(b)|0)!=0:0))d=6;if((d|0)==6?(e=b+4|0,f=k[e>>2]|0,f>>>0>((k[b+44>>2]|0)+-8|0)>>>0):0){g=f+-1|0;k[e>>2]=g;i[g>>0]=a;k[b>>2]=k[b>>2]&-17;if(!c){h=a;break}Isa(b);h=a;break}if(c){Isa(b);h=-1}else h=-1}else h=-1;while(0);return h|0}function tta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=r;r=r+16|0;e=d;f=lua(240)|0;do if(f){k[e>>2]=k[c>>2];g=wta(f,240,b,e)|0;if(g>>>0<240){h=oua(f,g+1|0)|0;k[a>>2]=(h|0)!=0?h:f;i=g;break}mua(f);if((g|0)>=0?(h=g+1|0,g=lua(h)|0,k[a>>2]=g,(g|0)!=0):0)i=wta(g,h,b,c)|0;else i=-1}else i=-1;while(0);r=d;return i|0}function uta(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;d=r;r=r+224|0;e=d+120|0;f=d+80|0;g=d;h=d+136|0;j=f;l=j+40|0;do{k[j>>2]=0;j=j+4|0}while((j|0)<(l|0));k[e>>2]=k[c>>2];if((dua(0,b,e,g,f)|0)<0)m=-1;else{if((k[a+76>>2]|0)>-1)n=Hsa(a)|0;else n=0;c=k[a>>2]|0;j=c&32;if((i[a+74>>0]|0)<1)k[a>>2]=c&-33;c=a+48|0;if(!(k[c>>2]|0)){l=a+44|0;o=k[l>>2]|0;k[l>>2]=h;p=a+28|0;k[p>>2]=h;q=a+20|0;k[q>>2]=h;k[c>>2]=80;s=a+16|0;k[s>>2]=h+80;h=dua(a,b,e,g,f)|0;if(!o)t=h;else{Rc[k[a+36>>2]&63](a,0,0)|0;u=(k[q>>2]|0)==0?-1:h;k[l>>2]=o;k[c>>2]=0;k[s>>2]=0;k[p>>2]=0;k[q>>2]=0;t=u}}else t=dua(a,b,e,g,f)|0;f=k[a>>2]|0;k[a>>2]=f|j;if(n)Isa(a);m=(f&32|0)==0?t:-1}r=d;return m|0}
+function qN(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,80946,87);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,60,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function rN(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;a=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,144350,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,80946,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,144370,27);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,68,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(E|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function sN(a,b,c){a=a|0;b=+b;c=c|0;return}function tN(a,b,c){a=a|0;b=b|0;c=c|0;return}function uN(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,118532,20)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,80946,87);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,118553,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,52,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function vN(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,80946,87);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144327,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,53,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function wN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function xN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function yN(a,b,c){a=a|0;b=+b;c=c|0;return}function zN(a,b,c){a=a|0;b=b|0;c=c|0;return}function AN(a,b,c){a=a|0;b=b|0;c=c|0;uN(a+-4|0,b,c)}function BN(a,b,c){a=a|0;b=b|0;c=c|0;vN(a+-4|0,b,c)}function CN(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;if(b){DN(a,b);r=c;return}c=e+56|0;b=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;i=Q;j=a;vva(c);Qb(j|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){l=Rb()|0;m=Q;n=l}else{k[b>>2]=27560;l=e+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(b);m=p;n=o;break}Yua(d);B=0;o=Ia(40,e|0,81034,38)|0;p=B;B=0;if(!(p&1)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,f|0,81073,79);p=B;B=0;do if(!(p&1)){B=0;eb(502,g|0,81153,13);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(f);t=s;u=q;break}B=0;wa(510,h|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;v=Q;w=q;x=1}else{B=0;ua(163,o|0,f|0,g|0,45,h|0);q=B;B=0;if(q&1)y=1;else{B=0;eb(503,o|0,1240,229);B=0;y=0}q=Rb()|0;s=Q;Yua(h);v=s;w=q;x=y}Yua(g);Yua(f);if(x){t=v;u=w}else{z=v;A=w;k[e>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(c);Qb(A|0)}}else{q=Rb()|0;t=Q;u=q}while(0);zb(o|0);z=t;A=u;k[e>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(c);Qb(A|0)}p=Rb()|0;z=Q;A=p;k[e>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(c);Qb(A|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function DN(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;c=k[b>>2]|0;k[a>>2]=c;d=k[b+4>>2]|0;k[a+4>>2]=d;i[a+8>>0]=i[b+8>>0]|0;e=ma(c,d)|0;d=Rqa(e>>>0>536870911?-1:e<<3)|0;k[a+12>>2]=d;f=k[b+12>>2]|0;if(!f)yb(142353,81465,137,142345);if(e){g=0;do{p[d+(g<<3)>>3]=+p[f+(g<<3)>>3];g=g+1|0}while((g|0)!=(e|0))}e=Rqa(c>>>0>1073741823?-1:c<<2)|0;k[a+16>>2]=e;g=k[b+16>>2]|0;if(!g)yb(142353,81465,137,142345);if(c){f=0;do{k[e+(f<<2)>>2]=k[g+(f<<2)>>2];f=f+1|0}while((f|0)!=(c|0))}c=k[b+20>>2]|0;k[a+20>>2]=c;if(c){f=c>>>0>1073741823?-1:c<<2;g=Rqa(f)|0;k[a+24>>2]=g;e=k[b+24>>2]|0;if(!e)yb(142353,81465,137,142345);else h=0;do{k[g+(h<<2)>>2]=k[e+(h<<2)>>2];h=h+1|0}while((h|0)!=(c|0));h=Rqa(f)|0;k[a+28>>2]=h;f=k[b+28>>2]|0;if(!f)yb(142353,81465,137,142345);else{e=0;do{k[h+(e<<2)>>2]=k[f+(e<<2)>>2];e=e+1|0}while((e|0)!=(c|0))}}else{k[a+24>>2]=0;k[a+28>>2]=0}c=k[b+32>>2]|0;k[a+32>>2]=c;if(c){e=c>>>0>1073741823?-1:c<<2;f=Rqa(e)|0;k[a+36>>2]=f;h=k[b+36>>2]|0;if(!h)yb(142353,81465,137,142345);else j=0;do{k[f+(j<<2)>>2]=k[h+(j<<2)>>2];j=j+1|0}while((j|0)!=(c|0));j=Rqa(e)|0;k[a+40>>2]=j;e=k[b+40>>2]|0;if(!e)yb(142353,81465,137,142345);else{h=0;do{k[j+(h<<2)>>2]=k[e+(h<<2)>>2];h=h+1|0}while((h|0)!=(c|0))}}else{k[a+36>>2]=0;k[a+40>>2]=0}c=k[b+44>>2]|0;k[a+44>>2]=c;if(c){h=c>>>0>1073741823?-1:c<<2;e=Rqa(h)|0;k[a+48>>2]=e;j=k[b+48>>2]|0;if(!j)yb(142353,81465,137,142345);else l=0;do{k[e+(l<<2)>>2]=k[j+(l<<2)>>2];l=l+1|0}while((l|0)!=(c|0));l=Rqa(h)|0;k[a+52>>2]=l;h=k[b+52>>2]|0;if(!h)yb(142353,81465,137,142345);else{j=0;do{k[l+(j<<2)>>2]=k[h+(j<<2)>>2];j=j+1|0}while((j|0)!=(c|0))}}else{k[a+48>>2]=0;k[a+52>>2]=0}c=k[b+56>>2]|0;k[a+56>>2]=c;if(!c){k[a+60>>2]=0;k[a+64>>2]=0;return}j=c>>>0>1073741823?-1:c<<2;h=Rqa(j)|0;k[a+60>>2]=h;l=k[b+60>>2]|0;if(!l)yb(142353,81465,137,142345);else m=0;do{k[h+(m<<2)>>2]=k[l+(m<<2)>>2];m=m+1|0}while((m|0)!=(c|0));m=Rqa(j)|0;k[a+64>>2]=m;a=k[b+64>>2]|0;if(!a)yb(142353,81465,137,142345);else n=0;do{k[m+(n<<2)>>2]=k[a+(n<<2)>>2];n=n+1|0}while((n|0)!=(c|0));return}function EN(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0;d=r;r=r+368|0;e=d+344|0;f=d+208|0;g=d+196|0;h=d+184|0;j=d+36|0;l=d+48|0;m=d+24|0;n=d+12|0;o=d;q=(b|0)!=0;s=(c|0)!=0;if(!(q|s)){t=f+56|0;u=f+4|0;k[f>>2]=27524;k[t>>2]=27544;B=0;wa(508,f+56|0,u|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;x=v;vva(t);Qb(x|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[t>>2]=27488;B=0;va(448,u|0);v=B;B=0;do if(v&1){y=Rb()|0;z=Q;A=y}else{k[u>>2]=27560;y=f+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,u|0,e|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(e);Yua(y);Ava(u);z=D;A=C;break}Yua(e);B=0;C=Ia(40,f|0,81335,35)|0;D=B;B=0;a:do if(!(D&1)?(B=0,Xa(239,C|0,0)|0,E=B,B=0,!(E&1)):0){E=Ab(20)|0;B=0;eb(502,g|0,81073,79);F=B;B=0;do if(!(F&1)){B=0;eb(502,h|0,81153,13);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(g);I=G;J=H;break}B=0;wa(510,j|0,u|0);H=B;B=0;if(H&1){H=Rb()|0;K=H;L=Q;M=1}else{B=0;ua(163,E|0,g|0,h|0,60,j|0);H=B;B=0;if(H&1)N=1;else{B=0;eb(503,E|0,1240,229);B=0;N=0}H=Rb()|0;G=Q;Yua(j);K=H;L=G;M=N}Yua(h);Yua(g);if(M){I=K;J=L}else{O=K;P=L;break a}}else{G=Rb()|0;I=G;J=Q}while(0);zb(E|0);O=I;P=J}else R=17;while(0);if((R|0)==17){C=Rb()|0;O=C;P=Q}k[f>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(t);S=P;T=O;Qb(T|0)}while(0);w=z;x=A;vva(t);Qb(x|0)}if(!q){DN(a,c);r=d;return}if(!s){DN(a,b);r=d;return}if((i[b+8>>0]|0)!=0?(i[c+8>>0]|0)!=0:0){s=k[c>>2]|0;q=Rqa(s>>>0>1073741823?-1:s<<2)|0;x=k[b>>2]|0;if((s|0)>0){t=c+16|0;A=b+16|0;z=(x|0)>0;w=x;O=0;while(1){b:do if(z){P=k[(k[t>>2]|0)+(O<<2)>>2]|0;u=k[A>>2]|0;f=0;while(1){if((P|0)==(k[u+(f<<2)>>2]|0)){U=f;break}f=f+1|0;if((f|0)>=(x|0)){R=61;break b}}k[q+(O<<2)>>2]=U;V=w}else R=61;while(0);if((R|0)==61){R=0;k[q+(O<<2)>>2]=w;V=w+1|0}O=O+1|0;if((O|0)>=(s|0)){W=V;break}else w=V}}else W=x;k[a>>2]=W;x=a+4|0;k[x>>2]=W;i[a+8>>0]=1;V=Rqa(W>>>0>1073741823?-1:W<<2)|0;k[a+16>>2]=V;w=ma(W,W)|0;W=Rqa(w>>>0>536870911?-1:w<<3)|0;if(w)WEa(W|0,0,w<<3|0)|0;k[a+12>>2]=W;if((k[b>>2]|0)>0){w=b+4|0;s=k[b+16>>2]|0;O=b+12|0;U=0;do{A=k[w>>2]|0;if((A|0)>0){t=k[O>>2]|0;z=ma(k[x>>2]|0,U)|0;y=ma(A,U)|0;f=0;do{u=W+(z+f<<3)|0;p[u>>3]=+p[t+(y+f<<3)>>3]+ +p[u>>3];f=f+1|0}while((f|0)<(A|0))}k[V+(U<<2)>>2]=k[s+(U<<2)>>2];U=U+1|0}while((U|0)<(k[b>>2]|0))}if((k[c>>2]|0)>0){U=c+4|0;s=k[c+16>>2]|0;O=c+12|0;w=0;do{A=k[U>>2]|0;if((A|0)>0){f=k[O>>2]|0;y=k[q+(w<<2)>>2]|0;t=ma(k[x>>2]|0,y)|0;z=ma(A,w)|0;u=0;do{P=W+(t+(k[q+(u<<2)>>2]|0)<<3)|0;p[P>>3]=+p[f+(z+u<<3)>>3]+ +p[P>>3];u=u+1|0}while((u|0)<(A|0));X=y}else X=k[q+(w<<2)>>2]|0;k[V+(X<<2)>>2]=k[s+(w<<2)>>2];w=w+1|0}while((w|0)<(k[c>>2]|0))}w=b+20|0;s=k[w>>2]|0;X=c+20|0;V=k[X>>2]|0;if((V|0)>0){W=k[c+24>>2]|0;x=k[b>>2]|0;O=s;U=0;while(1){y=((k[q+(k[W+(U<<2)>>2]<<2)>>2]|0)>=(x|0)&1)+O|0;U=U+1|0;if((U|0)>=(V|0)){Y=y;break}else O=y}}else Y=s;k[a+20>>2]=Y;if(Y){s=Y>>>0>1073741823?-1:Y<<2;Y=Rqa(s)|0;k[a+24>>2]=Y;O=Rqa(s)|0;k[a+28>>2]=O;s=k[w>>2]|0;if((s|0)>0){V=k[b+24>>2]|0;U=k[b+28>>2]|0;x=0;do{k[Y+(x<<2)>>2]=k[V+(x<<2)>>2];k[O+(x<<2)>>2]=k[U+(x<<2)>>2];x=x+1|0;W=k[w>>2]|0}while((x|0)<(W|0));Z=W}else Z=s;s=k[X>>2]|0;if((s|0)>0){x=k[c+24>>2]|0;w=c+28|0;U=s;s=Z;Z=0;while(1){V=k[q+(k[x+(Z<<2)>>2]<<2)>>2]|0;if((V|0)<(k[b>>2]|0)){_=U;$=s}else{k[Y+(s<<2)>>2]=V;k[O+(s<<2)>>2]=k[(k[w>>2]|0)+(Z<<2)>>2];_=k[X>>2]|0;$=s+1|0}Z=Z+1|0;if((Z|0)>=(_|0))break;else{U=_;s=$}}}}else{k[a+24>>2]=0;k[a+28>>2]=0}$=b+32|0;s=k[$>>2]|0;_=c+32|0;U=k[_>>2]|0;if((U|0)>0){Z=k[c+36>>2]|0;X=k[b>>2]|0;w=0;O=s;while(1){Y=((k[q+(k[Z+(w<<2)>>2]<<2)>>2]|0)>=(X|0)&1)+O|0;w=w+1|0;if((w|0)>=(U|0)){aa=Y;break}else O=Y}}else aa=s;k[a+32>>2]=aa;if(aa){s=aa>>>0>1073741823?-1:aa<<2;aa=Rqa(s)|0;k[a+36>>2]=aa;O=Rqa(s)|0;k[a+40>>2]=O;s=k[$>>2]|0;if((s|0)>0){U=k[b+36>>2]|0;w=k[b+40>>2]|0;X=0;do{k[aa+(X<<2)>>2]=k[U+(X<<2)>>2];k[O+(X<<2)>>2]=k[w+(X<<2)>>2];X=X+1|0;Z=k[$>>2]|0}while((X|0)<(Z|0));ba=Z}else ba=s;s=k[_>>2]|0;if((s|0)>0){X=k[c+36>>2]|0;$=c+40|0;c=s;s=ba;ba=0;while(1){w=k[q+(k[X+(ba<<2)>>2]<<2)>>2]|0;if((w|0)<(k[b>>2]|0)){ca=c;da=s}else{k[aa+(s<<2)>>2]=w;k[O+(s<<2)>>2]=k[(k[$>>2]|0)+(ba<<2)>>2];ca=k[_>>2]|0;da=s+1|0}ba=ba+1|0;if((ba|0)>=(ca|0))break;else{c=ca;s=da}}}}else{k[a+36>>2]=0;k[a+40>>2]=0}da=a+44|0;k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;k[da+12>>2]=0;k[da+16>>2]=0;k[da+20>>2]=0;Tqa(q);r=d;return}d=l+56|0;q=l+4|0;k[l>>2]=27524;k[d>>2]=27544;B=0;wa(508,l+56|0,q|0);da=B;B=0;if(da&1){da=Rb()|0;ea=Q;fa=da;vva(d);Qb(fa|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[d>>2]=27488;B=0;va(448,q|0);da=B;B=0;do if(da&1){a=Rb()|0;ga=Q;ha=a}else{k[q>>2]=27560;a=l+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[l+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,q|0,e|0);s=B;B=0;if(s&1){s=Rb()|0;ca=Q;Yua(e);Yua(a);Ava(q);ga=ca;ha=s;break}Yua(e);B=0;s=Ia(40,l|0,81167,57)|0;ca=B;B=0;c:do if(!(ca&1)?(B=0,Xa(239,s|0,0)|0,c=B,B=0,!(c&1)):0){c=Ab(20)|0;B=0;eb(502,m|0,81073,79);ba=B;B=0;do if(!(ba&1)){B=0;eb(502,n|0,81153,13);_=B;B=0;if(_&1){_=Rb()|0;$=Q;Yua(m);ia=_;ja=$;break}B=0;wa(510,o|0,q|0);$=B;B=0;if($&1){$=Rb()|0;ka=1;la=Q;na=$}else{B=0;ua(163,c|0,m|0,n|0,72,o|0);$=B;B=0;if($&1)oa=1;else{B=0;eb(503,c|0,1240,229);B=0;oa=0}$=Rb()|0;_=Q;Yua(o);ka=oa;la=_;na=$}Yua(n);Yua(m);if(ka){ia=na;ja=la}else{pa=la;qa=na;break c}}else{$=Rb()|0;ia=$;ja=Q}while(0);zb(c|0);pa=ja;qa=ia}else R=46;while(0);if((R|0)==46){s=Rb()|0;pa=Q;qa=s}k[l>>2]=27468;k[d>>2]=27488;k[q>>2]=27560;Yua(a);Ava(q);vva(d);S=pa;T=qa;Qb(T|0)}while(0);ea=ga;fa=ha;vva(d);Qb(fa|0)}function FN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=Qqa(68)|0;B=0;eb(515,e|0,b|0,c|0);c=B;B=0;if(c&1){c=Rb()|0;b=Q;Sqa(e);f=c;g=b;Qb(f|0)}b=Qqa(68)|0;B=0;eb(515,b|0,e|0,d|0);d=B;B=0;if(!(d&1)){DN(a,b);HN(e);Sqa(e);HN(b);Sqa(b);return}e=Rb()|0;a=Q;Sqa(b);f=e;g=a;Qb(f|0)}function GN(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;i[a+8>>0]=1;d=po(b,c,943,e)|0;k[a>>2]=d;k[a+4>>2]=d;f=ma(d,d)|0;d=Rqa(f>>>0>536870911?-1:f<<3)|0;if(f)WEa(d|0,0,f<<3|0)|0;k[a+12>>2]=d;d=oo(b,c,943,e)|0;k[a+16>>2]=d;d=po(b,c,937,e)|0;k[a+20>>2]=d;d=no(b,c,937,e)|0;k[a+24>>2]=d;d=oo(b,c,937,e)|0;k[a+28>>2]=d;d=po(b,c,966,e)|0;k[a+32>>2]=d;d=no(b,c,966,e)|0;k[a+36>>2]=d;d=oo(b,c,966,e)|0;k[a+40>>2]=d;d=a+44|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;return}function HN(a){a=a|0;var b=0,c=0;b=a+12|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+16|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+24|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+28|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+36|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+40|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+48|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+52|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+60|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+64|0;a=k[b>>2]|0;if(!a){k[b>>2]=0;return}Tqa(a);k[b>>2]=0;return}function IN(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;j=d;if(!c){JN(a,b);r=d;return}if(i[a+8>>0]|0){l=a+20|0;m=k[l>>2]|0;if(m){n=ma(m,m)|0;o=Rqa(n>>>0>536870911?-1:n<<3)|0;if((m|0)>0){n=k[a+4>>2]|0;q=k[a+24>>2]|0;s=k[a+12>>2]|0;t=0;do{u=ma(k[q+(t<<2)>>2]|0,n)|0;v=ma(m,t)|0;w=0;do{p[o+(v+w<<3)>>3]=+p[s+(u+(k[q+(w<<2)>>2]|0)<<3)>>3];w=w+1|0}while((w|0)<(m|0));t=t+1|0}while((t|0)!=(m|0))}t=k[a+28>>2]|0;if(k[b>>2]|0){q=k[k[b+4>>2]>>2]|0;ad[k[(k[q>>2]|0)+40>>2]&63](q,m,t,m,t,o,1)}Tqa(o)}o=k[a+32>>2]|0;if(!o){r=d;return}t=k[l>>2]|0;if(!t){r=d;return}l=ma(t,o)|0;m=Rqa(l>>>0>536870911?-1:l<<3)|0;if((t|0)>0&(o|0)>0){l=k[a+4>>2]|0;q=k[a+24>>2]|0;b=k[a+36>>2]|0;s=k[a+12>>2]|0;n=0;do{w=ma(k[q+(n<<2)>>2]|0,l)|0;u=ma(o,n)|0;v=0;do{p[m+(u+v<<3)>>3]=+p[s+((k[b+(v<<2)>>2]|0)+w<<3)>>3];v=v+1|0}while((v|0)<(o|0));n=n+1|0}while((n|0)<(t|0))}if(k[c>>2]|0){n=k[k[c+4>>2]>>2]|0;ad[k[(k[n>>2]|0)+40>>2]&63](n,t,k[a+28>>2]|0,o,k[a+40>>2]|0,m,1)}Tqa(m);r=d;return}d=f+56|0;m=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,m|0);a=B;B=0;if(a&1){a=Rb()|0;x=Q;y=a;vva(d);Qb(y|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,m|0);a=B;B=0;do if(a&1){o=Rb()|0;z=Q;A=o}else{k[m>>2]=27560;o=f+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,m|0,e|0);t=B;B=0;if(t&1){t=Rb()|0;n=Q;Yua(e);Yua(o);Ava(m);z=n;A=t;break}Yua(e);B=0;t=Ia(40,f|0,81225,62)|0;n=B;B=0;if(!(n&1)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,g|0,81073,79);n=B;B=0;do if(!(n&1)){B=0;eb(502,h|0,81288,11);c=B;B=0;if(c&1){c=Rb()|0;b=Q;Yua(g);C=b;D=c;break}B=0;wa(510,j|0,m|0);c=B;B=0;if(c&1){c=Rb()|0;E=Q;F=c;G=1}else{B=0;ua(163,t|0,g|0,h|0,290,j|0);c=B;B=0;if(c&1)H=1;else{B=0;eb(503,t|0,1240,229);B=0;H=0}c=Rb()|0;b=Q;Yua(j);E=b;F=c;G=H}Yua(h);Yua(g);if(G){C=E;D=F}else{I=E;J=F;k[f>>2]=27468;k[d>>2]=27488;k[m>>2]=27560;Yua(o);Ava(m);vva(d);Qb(J|0)}}else{c=Rb()|0;C=Q;D=c}while(0);zb(t|0);I=C;J=D;k[f>>2]=27468;k[d>>2]=27488;k[m>>2]=27560;Yua(o);Ava(m);vva(d);Qb(J|0)}n=Rb()|0;I=Q;J=n;k[f>>2]=27468;k[d>>2]=27488;k[m>>2]=27560;Yua(o);Ava(m);vva(d);Qb(J|0)}while(0);x=z;y=A;vva(d);Qb(y|0)}function JN(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;if(i[a+8>>0]|0){j=k[a+20>>2]|0;if(!j){r=c;return}l=ma(j,j)|0;m=Rqa(l>>>0>536870911?-1:l<<3)|0;if((j|0)>0){l=k[a+12>>2]|0;n=k[a+4>>2]|0;o=k[a+24>>2]|0;q=0;do{s=l+((ma(k[o+(q<<2)>>2]|0,n)|0)<<3)|0;t=m+((ma(j,q)|0)<<3)|0;u=0;do{p[t+(u<<3)>>3]=+p[s+(k[o+(u<<2)>>2]<<3)>>3];u=u+1|0}while((u|0)<(j|0));q=q+1|0}while((q|0)!=(j|0))}q=k[a+28>>2]|0;if(k[b>>2]|0){a=k[k[b+4>>2]>>2]|0;ad[k[(k[a>>2]|0)+40>>2]&63](a,j,q,j,q,m,1)}Tqa(m);r=c;return}c=e+56|0;m=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,m|0);q=B;B=0;if(q&1){q=Rb()|0;v=Q;w=q;vva(c);Qb(w|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,m|0);q=B;B=0;do if(q&1){j=Rb()|0;x=Q;y=j}else{k[m>>2]=27560;j=e+36|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,m|0,d|0);a=B;B=0;if(a&1){a=Rb()|0;b=Q;Yua(d);Yua(j);Ava(m);x=b;y=a;break}Yua(d);B=0;a=Ia(40,e|0,81225,62)|0;b=B;B=0;if(!(b&1)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,f|0,81073,79);b=B;B=0;do if(!(b&1)){B=0;eb(502,g|0,81288,11);o=B;B=0;if(o&1){o=Rb()|0;n=Q;Yua(f);z=n;A=o;break}B=0;wa(510,h|0,m|0);o=B;B=0;if(o&1){o=Rb()|0;C=Q;D=o;E=1}else{B=0;ua(163,a|0,f|0,g|0,326,h|0);o=B;B=0;if(o&1)F=1;else{B=0;eb(503,a|0,1240,229);B=0;F=0}o=Rb()|0;n=Q;Yua(h);C=n;D=o;E=F}Yua(g);Yua(f);if(E){z=C;A=D}else{G=C;H=D;k[e>>2]=27468;k[c>>2]=27488;k[m>>2]=27560;Yua(j);Ava(m);vva(c);Qb(H|0)}}else{o=Rb()|0;z=Q;A=o}while(0);zb(a|0);G=z;H=A;k[e>>2]=27468;k[c>>2]=27488;k[m>>2]=27560;Yua(j);Ava(m);vva(c);Qb(H|0)}b=Rb()|0;G=Q;H=b;k[e>>2]=27468;k[c>>2]=27488;k[m>>2]=27560;Yua(j);Ava(m);vva(c);Qb(H|0)}while(0);v=x;w=y;vva(c);Qb(w|0)}function KN(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;if(i[a+8>>0]|0){j=k[a+20>>2]|0;if(!j){r=c;return}l=Rqa(j>>>0>536870911?-1:j<<3)|0;if((j|0)>0){m=k[a+4>>2]|0;n=k[a+24>>2]|0;o=k[a+12>>2]|0;q=0;do{s=k[n+(q<<2)>>2]|0;t=o+((ma(s,m)|0)+s<<3)|0;p[l+(q<<3)>>3]=+p[t>>3];q=q+1|0}while((q|0)<(j|0))}if(k[b>>2]|0){q=k[k[b+4>>2]>>2]|0;Dc[k[(k[q>>2]|0)+16>>2]&255](q,j,k[a+28>>2]|0,l,1)}Tqa(l);r=c;return}c=e+56|0;l=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,l|0);a=B;B=0;if(a&1){a=Rb()|0;u=Q;v=a;vva(c);Qb(v|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,l|0);a=B;B=0;do if(a&1){j=Rb()|0;w=Q;x=j}else{k[l>>2]=27560;j=e+36|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,l|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;b=Q;Yua(d);Yua(j);Ava(l);w=b;x=q;break}Yua(d);B=0;q=Ia(40,e|0,81225,62)|0;b=B;B=0;if(!(b&1)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,f|0,81073,79);b=B;B=0;do if(!(b&1)){B=0;eb(502,g|0,81300,19);m=B;B=0;if(m&1){m=Rb()|0;o=Q;Yua(f);y=o;z=m;break}B=0;wa(510,h|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;A=Q;C=m;D=1}else{B=0;ua(163,q|0,f|0,g|0,359,h|0);m=B;B=0;if(m&1)E=1;else{B=0;eb(503,q|0,1240,229);B=0;E=0}m=Rb()|0;o=Q;Yua(h);A=o;C=m;D=E}Yua(g);Yua(f);if(D){y=A;z=C}else{F=A;G=C;k[e>>2]=27468;k[c>>2]=27488;k[l>>2]=27560;Yua(j);Ava(l);vva(c);Qb(G|0)}}else{m=Rb()|0;y=Q;z=m}while(0);zb(q|0);F=y;G=z;k[e>>2]=27468;k[c>>2]=27488;k[l>>2]=27560;Yua(j);Ava(l);vva(c);Qb(G|0)}b=Rb()|0;F=Q;G=b;k[e>>2]=27468;k[c>>2]=27488;k[l>>2]=27560;Yua(j);Ava(l);vva(c);Qb(G|0)}while(0);u=w;v=x;vva(c);Qb(v|0)}function LN(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;if(i[a+8>>0]|0){h=k[a>>2]|0;if((h|0)<=0){r=b;return}j=k[a+4>>2]|0;l=a+12|0;if((j|0)>0)m=0;else{r=b;return}do{a=ma(j,m)|0;n=a+m|0;o=0;do{if((m|0)!=(o|0)){q=k[l>>2]|0;s=q+(a+o<<3)|0;t=q+(n<<3)|0;p[t>>3]=+p[s>>3]+ +p[t>>3];p[s>>3]=0.0}o=o+1|0}while((o|0)<(j|0));m=m+1|0}while((m|0)<(h|0));r=b;return}b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);m=B;B=0;if(m&1){m=Rb()|0;u=Q;v=m;vva(b);Qb(v|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);m=B;B=0;do if(m&1){j=Rb()|0;w=Q;x=j}else{k[h>>2]=27560;j=d+36|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);l=B;B=0;if(l&1){l=Rb()|0;o=Q;Yua(c);Yua(j);Ava(h);w=o;x=l;break}Yua(c);B=0;l=Ia(40,d|0,134695,17)|0;o=B;B=0;if(!(o&1)?(B=0,Xa(239,l|0,0)|0,l=B,B=0,!(l&1)):0){l=Ab(20)|0;B=0;eb(502,e|0,81073,79);o=B;B=0;do if(!(o&1)){B=0;eb(502,f|0,81320,4);n=B;B=0;if(n&1){n=Rb()|0;a=Q;Yua(e);y=a;z=n;break}B=0;wa(510,g|0,h|0);n=B;B=0;if(n&1){n=Rb()|0;A=Q;C=n;D=1}else{B=0;ua(163,l|0,e|0,f|0,379,g|0);n=B;B=0;if(n&1)E=1;else{B=0;eb(503,l|0,1240,229);B=0;E=0}n=Rb()|0;a=Q;Yua(g);A=a;C=n;D=E}Yua(f);Yua(e);if(D){y=A;z=C}else{F=A;G=C;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(j);Ava(h);vva(b);Qb(G|0)}}else{n=Rb()|0;y=Q;z=n}while(0);zb(l|0);F=y;G=z;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(j);Ava(h);vva(b);Qb(G|0)}o=Rb()|0;F=Q;G=o;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(j);Ava(h);vva(b);Qb(G|0)}while(0);u=w;v=x;vva(b);Qb(v|0)}function MN(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;h=Qqa(68)|0;B=0;wa(520,h|0,a|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;Sqa(h);m=l;n=j;Qb(n|0)}j=h+4|0;l=k[j>>2]|0;k[a>>2]=l;o=k[h>>2]|0;k[a+4>>2]=o;a:do if((l|0)>0&(o|0)>0){q=k[h+12>>2]|0;s=k[a+12>>2]|0;t=l;u=0;while(1){v=ma(o,u)|0;w=0;do{x=q+((ma(t,w)|0)+u<<3)|0;p[s+(v+w<<3)>>3]=+p[x>>3];w=w+1|0}while((w|0)<(o|0));w=u+1|0;if((w|0)>=(l|0))break a;t=k[j>>2]|0;u=w}}while(0);if(i[a+8>>0]|0){HN(h);Sqa(h);r=b;return}b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);a=B;B=0;if(a&1){a=Rb()|0;y=Q;z=a;vva(b);Qb(z|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);a=B;B=0;do if(a&1){j=Rb()|0;A=Q;C=j}else{k[h>>2]=27560;j=d+36|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);l=B;B=0;if(l&1){l=Rb()|0;o=Q;Yua(c);Yua(j);Ava(h);A=o;C=l;break}Yua(c);B=0;l=Ia(40,d|0,134695,17)|0;o=B;B=0;b:do if(!(o&1)?(B=0,Xa(239,l|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,e|0,81073,79);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,81325,9);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(e);D=q;E=s;break}B=0;wa(510,g|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;F=Q;G=s;H=1}else{B=0;ua(163,u|0,e|0,f|0,407,g|0);s=B;B=0;if(s&1)I=1;else{B=0;eb(503,u|0,1240,229);B=0;I=0}s=Rb()|0;q=Q;Yua(g);F=q;G=s;H=I}Yua(f);Yua(e);if(H){D=F;E=G}else{J=F;K=G;break b}}else{s=Rb()|0;D=Q;E=s}while(0);zb(u|0);J=D;K=E}else L=25;while(0);if((L|0)==25){l=Rb()|0;J=Q;K=l}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(j);Ava(h);vva(b);m=J;n=K;Qb(n|0)}while(0);y=A;z=C;vva(b);Qb(z|0)}function NN(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;d=k[a>>2]|0;e=d-b|0;f=Rqa(e>>>0>1073741823?-1:e<<2)|0;a:do if((d|0)>0){if((b|0)>0){g=0;h=0}else{i=0;while(1){k[f+(i<<2)>>2]=i;i=i+1|0;if((i|0)>=(d|0))break a}}while(1){i=0;while(1){if((h|0)==(k[c+(i<<2)>>2]|0)){j=g;break}i=i+1|0;if((i|0)>=(b|0)){l=7;break}}if((l|0)==7){l=0;k[f+(g<<2)>>2]=h;j=g+1|0}h=h+1|0;if((h|0)>=(d|0))break;else g=j}}while(0);j=ma(e,e)|0;g=j>>>0>536870911?-1:j<<3;d=Rqa(g)|0;h=ma(e,b)|0;i=h>>>0>536870911?-1:h<<3;h=Rqa(i)|0;m=Rqa(i)|0;i=ma(b,b)|0;n=i>>>0>536870911?-1:i<<3;i=Rqa(n)|0;o=(e|0)>0;if(o){q=k[a+4>>2]|0;r=k[a+12>>2]|0;s=0;do{t=ma(q,k[f+(s<<2)>>2]|0)|0;u=ma(s,e)|0;v=0;do{p[d+(v+u<<3)>>3]=+p[r+(t+(k[f+(v<<2)>>2]|0)<<3)>>3];v=v+1|0}while((v|0)!=(e|0));s=s+1|0}while((s|0)!=(e|0));if(o){if((b|0)>0){s=k[a+4>>2]|0;r=k[a+12>>2]|0;q=0;do{v=ma(s,k[f+(q<<2)>>2]|0)|0;t=ma(q,b)|0;u=0;do{p[h+(u+t<<3)>>3]=+p[r+(v+(k[c+(u<<2)>>2]|0)<<3)>>3];u=u+1|0}while((u|0)!=(b|0));q=q+1|0}while((q|0)!=(e|0));l=20}}else l=20}else l=20;do if((l|0)==20?(q=(b|0)>0,q):0){if(o){r=k[a+4>>2]|0;s=k[a+12>>2]|0;u=0;do{v=ma(r,k[c+(u<<2)>>2]|0)|0;t=ma(u,e)|0;w=0;do{p[m+(w+t<<3)>>3]=+p[s+(v+(k[f+(w<<2)>>2]|0)<<3)>>3];w=w+1|0}while((w|0)!=(e|0));u=u+1|0}while((u|0)!=(b|0));if(!q)break}u=k[a+4>>2]|0;s=k[a+12>>2]|0;r=0;do{w=ma(u,k[c+(r<<2)>>2]|0)|0;v=ma(r,b)|0;t=0;do{p[i+(t+v<<3)>>3]=+p[s+(w+(k[c+(t<<2)>>2]|0)<<3)>>3];t=t+1|0}while((t|0)!=(b|0));r=r+1|0}while((r|0)!=(b|0))}while(0);c=Rqa(n)|0;switch(b|0){case 1:{p[c>>3]=1.0/+p[i>>3];break}case 2:{bY(c,i);break}case 3:{eY(c,i);break}default:$X(c,b,b,0,0,0)|0}n=Rqa(g)|0;ZX(h,e,b,0,c,b,b,0,m,b,e,0,n,0)|0;if(j){b=0;do{g=n+(b<<3)|0;p[g>>3]=+p[d+(b<<3)>>3]-+p[g>>3];b=b+1|0}while((b|0)<(j|0))}j=a+4|0;b=ma(k[j>>2]|0,k[a>>2]|0)|0;if((b|0)>0)WEa(k[a+12>>2]|0,0,((b|0)>1?b:1)<<3|0)|0;if(!o){Tqa(d);Tqa(h);Tqa(m);Tqa(i);Tqa(c);Tqa(n);Tqa(f);return}o=k[j>>2]|0;j=k[a+12>>2]|0;a=0;do{b=ma(a,e)|0;g=ma(o,k[f+(a<<2)>>2]|0)|0;l=0;do{p[j+(g+(k[f+(l<<2)>>2]|0)<<3)>>3]=+p[n+(l+b<<3)>>3];l=l+1|0}while((l|0)!=(e|0));a=a+1|0}while((a|0)!=(e|0));Tqa(d);Tqa(h);Tqa(m);Tqa(i);Tqa(c);Tqa(n);Tqa(f);return}function ON(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=(b|0)!=0;l=(c|0)!=0;if(!(j|l)){m=f+56|0;n=f+4|0;k[f>>2]=27524;k[m>>2]=27544;B=0;wa(508,f+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;q=Q;s=o;vva(m);Qb(s|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){t=Rb()|0;u=Q;v=t}else{k[n>>2]=27560;t=f+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,n|0,e|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(e);Yua(t);Ava(n);u=x;v=w;break}Yua(e);B=0;w=Ia(40,f|0,81335,35)|0;x=B;B=0;if(!(x&1)?(B=0,Xa(239,w|0,0)|0,w=B,B=0,!(w&1)):0){w=Ab(20)|0;B=0;eb(502,g|0,81371,79);x=B;B=0;do if(!(x&1)){B=0;eb(502,h|0,81451,13);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(g);A=z;C=y;break}B=0;wa(510,i|0,n|0);y=B;B=0;if(y&1){y=Rb()|0;D=Q;E=y;F=1}else{B=0;ua(163,w|0,g|0,h|0,40,i|0);y=B;B=0;if(y&1)G=1;else{B=0;eb(503,w|0,1240,229);B=0;G=0}y=Rb()|0;z=Q;Yua(i);D=z;E=y;F=G}Yua(h);Yua(g);if(F){A=D;C=E}else{H=D;I=E;k[f>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);Qb(I|0)}}else{y=Rb()|0;A=Q;C=y}while(0);zb(w|0);H=A;I=C;k[f>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);Qb(I|0)}x=Rb()|0;H=Q;I=x;k[f>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);Qb(I|0)}while(0);q=u;s=v;vva(m);Qb(s|0)}if(!j){PN(a,c);r=d;return}if(!l){PN(a,b);r=d;return}l=k[c>>2]|0;j=Rqa(l>>>0>1073741823?-1:l<<2)|0;s=k[b>>2]|0;if((l|0)>0){m=c+8|0;v=b+8|0;u=(s|0)>0;q=s;I=0;while(1){a:do if(u){n=k[(k[m>>2]|0)+(I<<2)>>2]|0;f=k[v>>2]|0;H=0;while(1){if((n|0)==(k[f+(H<<2)>>2]|0)){J=H;break}H=H+1|0;if((H|0)>=(s|0)){K=36;break a}}k[j+(I<<2)>>2]=J;L=q}else K=36;while(0);if((K|0)==36){K=0;k[j+(I<<2)>>2]=q;L=q+1|0}I=I+1|0;if((I|0)>=(l|0)){M=L;break}else q=L}}else M=s;k[a>>2]=M;s=Rqa(M>>>0>1073741823?-1:M<<2)|0;k[a+8>>2]=s;L=Rqa(M>>>0>536870911?-1:M<<3)|0;if(M)WEa(L|0,0,M<<3|0)|0;k[a+4>>2]=L;if((k[b>>2]|0)>0){M=k[b+4>>2]|0;q=k[b+8>>2]|0;l=0;do{I=L+(l<<3)|0;p[I>>3]=+p[M+(l<<3)>>3]+ +p[I>>3];k[s+(l<<2)>>2]=k[q+(l<<2)>>2];l=l+1|0}while((l|0)<(k[b>>2]|0))}if((k[c>>2]|0)>0){l=k[c+4>>2]|0;q=k[c+8>>2]|0;M=0;do{I=k[j+(M<<2)>>2]|0;K=L+(I<<3)|0;p[K>>3]=+p[l+(M<<3)>>3]+ +p[K>>3];k[s+(I<<2)>>2]=k[q+(M<<2)>>2];M=M+1|0}while((M|0)<(k[c>>2]|0))}M=b+12|0;q=k[M>>2]|0;s=c+12|0;l=k[s>>2]|0;if((l|0)>0){L=k[c+16>>2]|0;I=k[b>>2]|0;K=q;J=0;while(1){v=((k[j+(k[L+(J<<2)>>2]<<2)>>2]|0)>=(I|0)&1)+K|0;J=J+1|0;if((J|0)>=(l|0)){N=v;break}else K=v}}else N=q;k[a+12>>2]=N;if(N){q=N>>>0>1073741823?-1:N<<2;N=Rqa(q)|0;k[a+16>>2]=N;K=Rqa(q)|0;k[a+20>>2]=K;q=k[M>>2]|0;if((q|0)>0){l=k[b+16>>2]|0;J=k[b+20>>2]|0;I=0;do{k[N+(I<<2)>>2]=k[l+(I<<2)>>2];k[K+(I<<2)>>2]=k[J+(I<<2)>>2];I=I+1|0;L=k[M>>2]|0}while((I|0)<(L|0));O=L}else O=q;q=k[s>>2]|0;if((q|0)>0){I=k[c+16>>2]|0;M=c+20|0;c=q;q=O;O=0;while(1){J=k[j+(k[I+(O<<2)>>2]<<2)>>2]|0;if((J|0)<(k[b>>2]|0)){P=c;R=q}else{k[N+(q<<2)>>2]=J;k[K+(q<<2)>>2]=k[(k[M>>2]|0)+(O<<2)>>2];P=k[s>>2]|0;R=q+1|0}O=O+1|0;if((O|0)>=(P|0))break;else{c=P;q=R}}}}else{k[a+16>>2]=0;k[a+20>>2]=0}Tqa(j);r=d;return}function PN(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=k[b>>2]|0;k[a>>2]=c;d=Rqa(c>>>0>536870911?-1:c<<3)|0;k[a+4>>2]=d;e=k[b+4>>2]|0;if(!e)yb(142353,81465,137,142345);f=(c|0)==0;if(!f){g=0;do{p[d+(g<<3)>>3]=+p[e+(g<<3)>>3];g=g+1|0}while((g|0)!=(c|0))}g=Rqa(c>>>0>1073741823?-1:c<<2)|0;k[a+8>>2]=g;e=k[b+8>>2]|0;if(!e)yb(142353,81465,137,142345);if(!f){f=0;do{k[g+(f<<2)>>2]=k[e+(f<<2)>>2];f=f+1|0}while((f|0)!=(c|0))}c=k[b+12>>2]|0;k[a+12>>2]=c;if(!c){k[a+16>>2]=0;k[a+20>>2]=0;return}f=c>>>0>1073741823?-1:c<<2;e=Rqa(f)|0;k[a+16>>2]=e;g=k[b+16>>2]|0;if(!g)yb(142353,81465,137,142345);else h=0;do{k[e+(h<<2)>>2]=k[g+(h<<2)>>2];h=h+1|0}while((h|0)!=(c|0));h=Rqa(f)|0;k[a+20>>2]=h;a=k[b+20>>2]|0;if(!a)yb(142353,81465,137,142345);else i=0;do{k[h+(i<<2)>>2]=k[a+(i<<2)>>2];i=i+1|0}while((i|0)!=(c|0));return}function QN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=Qqa(24)|0;B=0;eb(516,e|0,b|0,c|0);c=B;B=0;if(c&1){c=Rb()|0;b=Q;Sqa(e);f=c;g=b;Qb(f|0)}b=Qqa(24)|0;B=0;eb(516,b|0,e|0,d|0);d=B;B=0;if(d&1){d=Rb()|0;c=Q;Sqa(b);f=d;g=c;Qb(f|0)}PN(a,b);a=e+4|0;f=k[a>>2]|0;if(f)Tqa(f);k[a>>2]=0;a=e+8|0;f=k[a>>2]|0;if(f)Tqa(f);k[a>>2]=0;a=e+16|0;f=k[a>>2]|0;if(f)Tqa(f);k[a>>2]=0;a=k[e+20>>2]|0;if(a)Tqa(a);Sqa(e);e=b+4|0;a=k[e>>2]|0;if(a)Tqa(a);k[e>>2]=0;e=b+8|0;a=k[e>>2]|0;if(a)Tqa(a);k[e>>2]=0;e=b+16|0;a=k[e>>2]|0;if(a)Tqa(a);k[e>>2]=0;e=k[b+20>>2]|0;if(!e){Sqa(b);return}Tqa(e);Sqa(b);return}function RN(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;d=po(b,c,943,e)|0;k[a>>2]=d;f=Rqa(d>>>0>536870911?-1:d<<3)|0;if(d)WEa(f|0,0,d<<3|0)|0;k[a+4>>2]=f;f=oo(b,c,943,e)|0;k[a+8>>2]=f;f=po(b,c,937,e)|0;k[a+12>>2]=f;f=no(b,c,937,e)|0;k[a+16>>2]=f;f=oo(b,c,937,e)|0;k[a+20>>2]=f;return}function SN(a){a=a|0;var b=0,c=0;b=a+4|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+8|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+16|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+20|0;a=k[b>>2]|0;if(!a){k[b>>2]=0;return}Tqa(a);k[b>>2]=0;return}function TN(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=k[a+12>>2]|0;if(!c)return;d=Rqa(c>>>0>536870911?-1:c<<3)|0;if((c|0)>0){e=k[a+16>>2]|0;f=k[a+4>>2]|0;g=0;do{p[d+(g<<3)>>3]=+p[f+(k[e+(g<<2)>>2]<<3)>>3];g=g+1|0}while((g|0)<(c|0))}if(k[b>>2]|0){g=k[k[b+4>>2]>>2]|0;Dc[k[(k[g>>2]|0)+16>>2]&255](g,c,k[a+20>>2]|0,d,1)}Tqa(d);return}function UN(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=k[a+12>>2]|0;if(!c)return;d=Rqa(c>>>0>536870911?-1:c<<3)|0;if((c|0)>0){e=k[a+16>>2]|0;f=k[a+4>>2]|0;g=0;do{p[d+(g<<3)>>3]=+p[f+(k[e+(g<<2)>>2]<<3)>>3];g=g+1|0}while((g|0)<(c|0))}if(k[b>>2]|0){g=k[k[b+4>>2]>>2]|0;Dc[k[(k[g>>2]|0)+16>>2]&255](g,c,k[a+20>>2]|0,d,0)}Tqa(d);return}function VN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0;e=k[a>>2]|0;f=e-c|0;g=Rqa(f>>>0>1073741823?-1:f<<2)|0;a:do if((e|0)>0){if((c|0)>0){h=0;i=0}else{j=0;while(1){k[g+(j<<2)>>2]=j;j=j+1|0;if((j|0)>=(e|0))break a}}while(1){j=0;while(1){if((i|0)==(k[d+(j<<2)>>2]|0)){l=h;break}j=j+1|0;if((j|0)>=(c|0)){m=7;break}}if((m|0)==7){m=0;k[g+(h<<2)>>2]=i;l=h+1|0}i=i+1|0;if((i|0)>=(e|0))break;else h=l}}while(0);l=ma(f,c)|0;h=Rqa(l>>>0>536870911?-1:l<<3)|0;l=ma(c,c)|0;e=l>>>0>536870911?-1:l<<3;l=Rqa(e)|0;i=Rqa(c>>>0>536870911?-1:c<<3)|0;j=f>>>0>536870911?-1:f<<3;n=Rqa(j)|0;o=(f|0)>0;if(o)if((c|0)>0){q=k[b+4>>2]|0;r=k[b+12>>2]|0;s=0;do{t=ma(q,k[g+(s<<2)>>2]|0)|0;u=ma(s,c)|0;v=0;do{p[h+(v+u<<3)>>3]=+p[r+(t+(k[d+(v<<2)>>2]|0)<<3)>>3];v=v+1|0}while((v|0)!=(c|0));s=s+1|0}while((s|0)!=(f|0));m=15}else m=23;else m=15;if((m|0)==15){s=(c|0)>0;if(s){r=k[b+4>>2]|0;q=k[b+12>>2]|0;b=0;do{v=ma(r,k[d+(b<<2)>>2]|0)|0;t=ma(b,c)|0;u=0;do{p[l+(u+t<<3)>>3]=+p[q+(v+(k[d+(u<<2)>>2]|0)<<3)>>3];u=u+1|0}while((u|0)!=(c|0));b=b+1|0}while((b|0)!=(c|0));if(s){s=k[a+4>>2]|0;b=0;do{p[i+(b<<3)>>3]=+p[s+(k[d+(b<<2)>>2]<<3)>>3];b=b+1|0}while((b|0)!=(c|0))}}if(o)m=23}if((m|0)==23){m=k[a+4>>2]|0;b=0;do{p[n+(b<<3)>>3]=+p[m+(k[g+(b<<2)>>2]<<3)>>3];b=b+1|0}while((b|0)!=(f|0))}b=Rqa(e)|0;switch(c|0){case 1:{p[b>>3]=1.0/+p[l>>3];break}case 2:{bY(b,l);break}case 3:{eY(b,l);break}default:$X(b,c,c,0,0,0)|0}e=Rqa(j)|0;ZX(h,f,c,0,b,c,c,0,i,c,1,0,e,0)|0;if(o){c=0;do{j=e+(c<<3)|0;p[j>>3]=+p[n+(c<<3)>>3]-+p[j>>3];c=c+1|0}while((c|0)!=(f|0))}c=k[a>>2]|0;if((c|0)>0)WEa(k[a+4>>2]|0,0,((c|0)>1?c:1)<<3|0)|0;if(!o){Tqa(h);Tqa(l);Tqa(b);Tqa(i);Tqa(n);Tqa(e);Tqa(g);return}o=k[a+4>>2]|0;a=0;do{p[o+(k[g+(a<<2)>>2]<<3)>>3]=+p[e+(a<<3)>>3];a=a+1|0}while((a|0)!=(f|0));Tqa(h);Tqa(l);Tqa(b);Tqa(i);Tqa(n);Tqa(e);Tqa(g);return}function WN(a){a=a|0;WEa(a|0,0,4064)|0;return}function XN(a){a=a|0;var b=0,c=0;b=0;do{c=k[a+(b<<2)>>2]|0;if(c)Ec[k[(k[c>>2]|0)+4>>2]&1023](c);b=b+1|0}while((b|0)!=1016);return}function YN(a,b){a=a|0;b=b|0;var c=0;c=a+((Hc[k[(k[b>>2]|0)+24>>2]&511](b)|0)+-1<<2)|0;a=k[c>>2]|0;if(!a){k[c>>2]=b;return}Ec[k[(k[a>>2]|0)+4>>2]&1023](a);k[c>>2]=0;k[c>>2]=b;return}function ZN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0;e=r;r=r+368|0;f=e+344|0;g=e+208|0;h=e+196|0;j=e+184|0;m=e+36|0;n=e+48|0;o=e+24|0;p=e+12|0;q=e;s=(d|0)==0;a:do if(s){t=k[b>>2]|0;i[t>>0]=39;i[t+1>>0]=2;i[t+2>>0]=0;i[t+3>>0]=0;k[b>>2]=(k[b>>2]|0)+4;u=0;v=0}else switch(d|0){case 2:{k[c>>2]=(k[c>>2]|0)+4;u=0;v=0;break a;break}case 1:{t=k[b>>2]|0;w=t+4|0;k[b>>2]=w;x=l[w>>0]|l[w+1>>0]<<8|l[w+2>>0]<<16|l[w+3>>0]<<24;k[b>>2]=t+8;if((x|0)>0)y=0;else{r=e;return}b:while(1){t=k[b>>2]|0;w=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;k[b>>2]=t+4;do switch(w|0){case 566:{t=Qqa(16)|0;B=0;va(494,t|0);z=B;B=0;if(z&1){A=t;C=72;break b}rd[k[(k[t>>2]|0)+20>>2]&511](t,b,c,1);z=a+((Hc[k[(k[t>>2]|0)+24>>2]&511](t)|0)+-1<<2)|0;D=k[z>>2]|0;if(D){Ec[k[(k[D>>2]|0)+4>>2]&1023](D);k[z>>2]=0}k[z>>2]=t;break}case 580:{t=Qqa(12)|0;B=0;va(495,t|0);z=B;B=0;if(z&1){E=t;C=77;break b}rd[k[(k[t>>2]|0)+20>>2]&511](t,b,c,1);z=a+((Hc[k[(k[t>>2]|0)+24>>2]&511](t)|0)+-1<<2)|0;D=k[z>>2]|0;if(D){Ec[k[(k[D>>2]|0)+4>>2]&1023](D);k[z>>2]=0}k[z>>2]=t;break}case 693:{t=Qqa(20)|0;B=0;va(496,t|0);z=B;B=0;if(z&1){F=t;C=82;break b}rd[k[(k[t>>2]|0)+20>>2]&511](t,b,c,1);z=a+((Hc[k[(k[t>>2]|0)+24>>2]&511](t)|0)+-1<<2)|0;D=k[z>>2]|0;if(D){Ec[k[(k[D>>2]|0)+4>>2]&1023](D);k[z>>2]=0}k[z>>2]=t;break}case 581:{t=Qqa(16)|0;B=0;va(497,t|0);z=B;B=0;if(z&1){G=t;C=87;break b}rd[k[(k[t>>2]|0)+20>>2]&511](t,b,c,1);z=a+((Hc[k[(k[t>>2]|0)+24>>2]&511](t)|0)+-1<<2)|0;D=k[z>>2]|0;if(D){Ec[k[(k[D>>2]|0)+4>>2]&1023](D);k[z>>2]=0}k[z>>2]=t;break}case 557:{t=Qqa(12)|0;B=0;va(498,t|0);z=B;B=0;if(z&1){H=t;C=92;break b}rd[k[(k[t>>2]|0)+20>>2]&511](t,b,c,1);z=a+((Hc[k[(k[t>>2]|0)+24>>2]&511](t)|0)+-1<<2)|0;D=k[z>>2]|0;if(D){Ec[k[(k[D>>2]|0)+4>>2]&1023](D);k[z>>2]=0}k[z>>2]=t;break}case 563:{t=Qqa(12)|0;B=0;va(499,t|0);z=B;B=0;if(z&1){I=t;C=97;break b}rd[k[(k[t>>2]|0)+20>>2]&511](t,b,c,1);z=a+((Hc[k[(k[t>>2]|0)+24>>2]&511](t)|0)+-1<<2)|0;D=k[z>>2]|0;if(D){Ec[k[(k[D>>2]|0)+4>>2]&1023](D);k[z>>2]=0}k[z>>2]=t;break}case 564:{t=Qqa(24)|0;B=0;va(500,t|0);z=B;B=0;if(z&1){J=t;C=102;break b}rd[k[(k[t>>2]|0)+20>>2]&511](t,b,c,1);z=a+((Hc[k[(k[t>>2]|0)+24>>2]&511](t)|0)+-1<<2)|0;D=k[z>>2]|0;if(D){Ec[k[(k[D>>2]|0)+4>>2]&1023](D);k[z>>2]=0}k[z>>2]=t;break}case 565:{t=Qqa(20)|0;B=0;va(501,t|0);z=B;B=0;if(z&1){K=t;C=107;break b}rd[k[(k[t>>2]|0)+20>>2]&511](t,b,c,1);z=a+((Hc[k[(k[t>>2]|0)+24>>2]&511](t)|0)+-1<<2)|0;D=k[z>>2]|0;if(D){Ec[k[(k[D>>2]|0)+4>>2]&1023](D);k[z>>2]=0}k[z>>2]=t;break}case 567:{t=Qqa(16)|0;B=0;va(502,t|0);z=B;B=0;if(z&1){L=t;C=112;break b}rd[k[(k[t>>2]|0)+20>>2]&511](t,b,c,1);z=a+((Hc[k[(k[t>>2]|0)+24>>2]&511](t)|0)+-1<<2)|0;D=k[z>>2]|0;if(D){Ec[k[(k[D>>2]|0)+4>>2]&1023](D);k[z>>2]=0}k[z>>2]=t;break}case 572:{t=Qqa(12)|0;B=0;va(503,t|0);z=B;B=0;if(z&1){M=t;C=115;break b}rd[k[(k[t>>2]|0)+20>>2]&511](t,b,c,1);Ec[k[(k[t>>2]|0)+4>>2]&1023](t);break}case 618:{t=Qqa(12)|0;B=0;va(504,t|0);z=B;B=0;if(z&1){N=t;C=120;break b}rd[k[(k[t>>2]|0)+20>>2]&511](t,b,c,1);z=a+((Hc[k[(k[t>>2]|0)+24>>2]&511](t)|0)+-1<<2)|0;D=k[z>>2]|0;if(D){Ec[k[(k[D>>2]|0)+4>>2]&1023](D);k[z>>2]=0}k[z>>2]=t;break}case 617:{t=Qqa(16)|0;B=0;va(505,t|0);z=B;B=0;if(z&1){O=t;C=125;break b}rd[k[(k[t>>2]|0)+20>>2]&511](t,b,c,1);z=a+((Hc[k[(k[t>>2]|0)+24>>2]&511](t)|0)+-1<<2)|0;D=k[z>>2]|0;if(D){Ec[k[(k[D>>2]|0)+4>>2]&1023](D);k[z>>2]=0}k[z>>2]=t;break}case 582:{t=Qqa(24)|0;B=0;va(506,t|0);z=B;B=0;if(z&1){P=t;C=130;break b}rd[k[(k[t>>2]|0)+20>>2]&511](t,b,c,1);z=a+((Hc[k[(k[t>>2]|0)+24>>2]&511](t)|0)+-1<<2)|0;D=k[z>>2]|0;if(D){Ec[k[(k[D>>2]|0)+4>>2]&1023](D);k[z>>2]=0}k[z>>2]=t;break}default:{}}while(0);y=y+1|0;if((y|0)>=(x|0)){C=132;break}}switch(C|0){case 72:{x=Rb()|0;w=Q;Sqa(A);R=w;S=x;Qb(S|0);break}case 77:{x=Rb()|0;w=Q;Sqa(E);R=w;S=x;Qb(S|0);break}case 82:{x=Rb()|0;w=Q;Sqa(F);R=w;S=x;Qb(S|0);break}case 87:{x=Rb()|0;w=Q;Sqa(G);R=w;S=x;Qb(S|0);break}case 92:{x=Rb()|0;w=Q;Sqa(H);R=w;S=x;Qb(S|0);break}case 97:{x=Rb()|0;w=Q;Sqa(I);R=w;S=x;Qb(S|0);break}case 102:{x=Rb()|0;w=Q;Sqa(J);R=w;S=x;Qb(S|0);break}case 107:{x=Rb()|0;w=Q;Sqa(K);R=w;S=x;Qb(S|0);break}case 112:{x=Rb()|0;w=Q;Sqa(L);R=w;S=x;Qb(S|0);break}case 115:{x=Rb()|0;w=Q;Sqa(M);R=w;S=x;Qb(S|0);break}case 120:{x=Rb()|0;w=Q;Sqa(N);R=w;S=x;Qb(S|0);break}case 125:{x=Rb()|0;w=Q;Sqa(O);R=w;S=x;Qb(S|0);break}case 130:{x=Rb()|0;w=Q;Sqa(P);R=w;S=x;Qb(S|0);break}case 132:{r=e;return}}break}default:{x=g+56|0;w=g+4|0;k[g>>2]=27524;k[x>>2]=27544;B=0;wa(508,g+56|0,w|0);t=B;B=0;if(t&1){t=Rb()|0;T=Q;U=t;vva(x);Qb(U|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[x>>2]=27488;B=0;va(448,w|0);t=B;B=0;do if(t&1){z=Rb()|0;V=Q;W=z}else{k[w>>2]=27560;z=g+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,w|0,f|0);D=B;B=0;if(D&1){D=Rb()|0;X=Q;Yua(f);Yua(z);Ava(w);V=X;W=D;break}Yua(f);B=0;D=Ia(40,g|0,143951,43)|0;X=B;B=0;c:do if(!(X&1)?(B=0,Xa(239,D|0,0)|0,Y=B,B=0,!(Y&1)):0){Y=Ab(20)|0;B=0;eb(502,h|0,81558,76);Z=B;B=0;do if(!(Z&1)){B=0;eb(502,j|0,149525,8);_=B;B=0;if(_&1){_=Rb()|0;$=Q;Yua(h);aa=$;ba=_;break}B=0;wa(510,m|0,w|0);_=B;B=0;if(_&1){_=Rb()|0;ca=Q;da=_;ea=1}else{B=0;ua(163,Y|0,h|0,j|0,96,m|0);_=B;B=0;if(_&1)fa=1;else{B=0;eb(503,Y|0,1240,229);B=0;fa=0}_=Rb()|0;$=Q;Yua(m);ca=$;da=_;ea=fa}Yua(j);Yua(h);if(ea){aa=ca;ba=da}else{ga=ca;ha=da;break c}}else{_=Rb()|0;aa=Q;ba=_}while(0);zb(Y|0);ga=aa;ha=ba}else C=20;while(0);if((C|0)==20){D=Rb()|0;ga=Q;ha=D}k[g>>2]=27468;k[x>>2]=27488;k[w>>2]=27560;Yua(z);Ava(w);vva(x);R=ga;S=ha;Qb(S|0)}while(0);T=V;U=W;vva(x);Qb(U|0)}}while(0);while(1){U=((k[a+(u<<2)>>2]|0)!=0&1)+v|0;u=u+1|0;if((u|0)==1016){ia=U;break}else v=U}if(s){s=k[b>>2]|0;i[s>>0]=ia;i[s+1>>0]=ia>>8;i[s+2>>0]=ia>>16;i[s+3>>0]=ia>>24;k[b>>2]=(k[b>>2]|0)+4;ia=0;do{s=a+(ia<<2)|0;v=k[s>>2]|0;if(v){u=Hc[k[(k[v>>2]|0)+12>>2]&511](v)|0;v=k[b>>2]|0;i[v>>0]=u;i[v+1>>0]=u>>8;i[v+2>>0]=u>>16;i[v+3>>0]=u>>24;k[b>>2]=(k[b>>2]|0)+4;u=k[s>>2]|0;rd[k[(k[u>>2]|0)+20>>2]&511](u,b,c,0)}ia=ia+1|0}while((ia|0)!=1016);r=e;return}switch(d|0){case 2:{k[c>>2]=(k[c>>2]|0)+4;d=0;do{ia=a+(d<<2)|0;u=k[ia>>2]|0;if(u){Hc[k[(k[u>>2]|0)+12>>2]&511](u)|0;k[c>>2]=(k[c>>2]|0)+4;u=k[ia>>2]|0;rd[k[(k[u>>2]|0)+20>>2]&511](u,b,c,2)}d=d+1|0}while((d|0)!=1016);r=e;return}case 1:{k[b>>2]=(k[b>>2]|0)+4;d=0;do{u=a+(d<<2)|0;ia=k[u>>2]|0;if(ia){Hc[k[(k[ia>>2]|0)+12>>2]&511](ia)|0;k[b>>2]=(k[b>>2]|0)+4;ia=k[u>>2]|0;rd[k[(k[ia>>2]|0)+20>>2]&511](ia,b,c,1)}d=d+1|0}while((d|0)<1016);r=e;return}default:{e=n+56|0;d=n+4|0;k[n>>2]=27524;k[e>>2]=27544;B=0;wa(508,n+56|0,d|0);c=B;B=0;if(c&1){c=Rb()|0;ja=Q;ka=c;vva(e);Qb(ka|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[e>>2]=27488;B=0;va(448,d|0);c=B;B=0;do if(c&1){b=Rb()|0;la=Q;ma=b}else{k[d>>2]=27560;b=n+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,d|0,f|0);a=B;B=0;if(a&1){a=Rb()|0;ia=Q;Yua(f);Yua(b);Ava(d);la=ia;ma=a;break}Yua(f);B=0;a=Ia(40,n|0,143951,43)|0;ia=B;B=0;d:do if(!(ia&1)?(B=0,Xa(239,a|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,o|0,81558,76);s=B;B=0;do if(!(s&1)){B=0;eb(502,p|0,149525,8);v=B;B=0;if(v&1){v=Rb()|0;U=Q;Yua(o);na=U;oa=v;break}B=0;wa(510,q|0,d|0);v=B;B=0;if(v&1){v=Rb()|0;pa=1;qa=Q;ra=v}else{B=0;ua(163,u|0,o|0,p|0,104,q|0);v=B;B=0;if(v&1)sa=1;else{B=0;eb(503,u|0,1240,229);B=0;sa=0}v=Rb()|0;U=Q;Yua(q);pa=sa;qa=U;ra=v}Yua(p);Yua(o);if(pa){na=qa;oa=ra}else{ta=qa;xa=ra;break d}}else{v=Rb()|0;na=Q;oa=v}while(0);zb(u|0);ta=na;xa=oa}else C=55;while(0);if((C|0)==55){a=Rb()|0;ta=Q;xa=a}k[n>>2]=27468;k[e>>2]=27488;k[d>>2]=27560;Yua(b);Ava(d);vva(e);R=ta;S=xa;Qb(S|0)}while(0);ja=la;ka=ma;vva(e);Qb(ka|0)}}}function _N(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,81558,76);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,149562,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,214,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function $N(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,81558,76);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,149553,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,218,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function aO(a,b){a=a|0;b=b|0;return (k[a+(b+-1<<2)>>2]|0)!=0|0}function bO(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=k[a+(c+-1<<2)>>2]|0;if(j){Fc[k[(k[j>>2]|0)+28>>2]&1023](j,b);r=d;return}d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(d);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);j=B;B=0;do if(j&1){a=Rb()|0;n=Q;o=a}else{k[b>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(e);Yua(a);Ava(b);n=q;o=p;break}Yua(e);B=0;p=Ia(40,f|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,c|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,81635,8)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,81558,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,81644,9);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,240,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}while(0);l=n;m=o;vva(d);Qb(m|0)}function cO(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=k[a+(c+-1<<2)>>2]|0;if(j){Fc[k[(k[j>>2]|0)+32>>2]&1023](j,b);r=d;return}d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(d);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);j=B;B=0;do if(j&1){a=Rb()|0;n=Q;o=a}else{k[b>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(e);Yua(a);Ava(b);n=q;o=p;break}Yua(e);B=0;p=Ia(40,f|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,c|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,81635,8)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,81558,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,81644,9);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,250,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}while(0);l=n;m=o;vva(d);Qb(m|0)}function dO(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=k[a+(c+-1<<2)>>2]|0;if(j){Fc[k[(k[j>>2]|0)+44>>2]&1023](j,b);r=d;return}d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(d);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);j=B;B=0;do if(j&1){a=Rb()|0;n=Q;o=a}else{k[b>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(e);Yua(a);Ava(b);n=q;o=p;break}Yua(e);B=0;p=Ia(40,f|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,c|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,81635,8)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,81558,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,81644,9);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,260,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}while(0);l=n;m=o;vva(d);Qb(m|0)}function eO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;i=e+12|0;j=e;l=k[a+(c+-1<<2)>>2]|0;if(l){Xc[k[(k[l>>2]|0)+48>>2]&63](l,b,d);r=e;return}e=g+56|0;b=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,b|0);l=B;B=0;if(l&1){l=Rb()|0;m=Q;n=l;vva(e);Qb(n|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,b|0);l=B;B=0;do if(l&1){a=Rb()|0;o=Q;p=a}else{k[b>>2]=27560;a=g+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(f);Yua(a);Ava(b);o=s;p=q;break}Yua(f);B=0;q=Ia(40,g|0,85329,10)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,c|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,81635,8)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,h|0,81558,76);u=B;B=0;do if(!(u&1)){B=0;eb(502,i|0,81644,9);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(h);v=q;w=s;break}B=0;wa(510,j|0,b|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,h|0,i|0,270,j|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(j);x=q;y=s;z=A}Yua(i);Yua(h);if(z){v=x;w=y}else{C=x;D=y;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(e);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(e);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(e);Qb(D|0)}while(0);m=o;n=p;vva(e);Qb(n|0)}function fO(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=k[a+(c+-1<<2)>>2]|0;if(j){Fc[k[(k[j>>2]|0)+52>>2]&1023](j,b);r=d;return}d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(d);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);j=B;B=0;do if(j&1){a=Rb()|0;n=Q;o=a}else{k[b>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(e);Yua(a);Ava(b);n=q;o=p;break}Yua(e);B=0;p=Ia(40,f|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,c|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,81635,8)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,81558,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,81644,9);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,280,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}while(0);l=n;m=o;vva(d);Qb(m|0)}function gO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;i=e+12|0;j=e;l=k[a+(d+-1<<2)>>2]|0;if(l){nd[k[(k[l>>2]|0)+56>>2]&1023](l,b,c);r=e;return}e=g+56|0;c=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;m=Q;n=b;vva(e);Qb(n|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,c|0);b=B;B=0;do if(b&1){l=Rb()|0;o=Q;p=l}else{k[c>>2]=27560;l=g+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,c|0,f|0);a=B;B=0;if(a&1){a=Rb()|0;q=Q;Yua(f);Yua(l);Ava(c);o=q;p=a;break}Yua(f);B=0;a=Ia(40,g|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,d|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,a|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,81635,8)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,h|0,81558,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,i|0,81644,9);q=B;B=0;if(q&1){q=Rb()|0;a=Q;Yua(h);u=a;v=q;break}B=0;wa(510,j|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,h|0,i|0,291,j|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;a=Q;Yua(j);w=a;x=q;y=z}Yua(i);Yua(h);if(y){u=w;v=x}else{A=w;C=x;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(e);Qb(C|0)}while(0);m=o;n=p;vva(e);Qb(n|0)}function hO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;i=e+12|0;j=e;l=k[a+(d+-1<<2)>>2]|0;if(l){nd[k[(k[l>>2]|0)+36>>2]&1023](l,b,c);r=e;return}e=g+56|0;c=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;m=Q;n=b;vva(e);Qb(n|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,c|0);b=B;B=0;do if(b&1){l=Rb()|0;o=Q;p=l}else{k[c>>2]=27560;l=g+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,c|0,f|0);a=B;B=0;if(a&1){a=Rb()|0;q=Q;Yua(f);Yua(l);Ava(c);o=q;p=a;break}Yua(f);B=0;a=Ia(40,g|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,d|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,a|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,81635,8)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,h|0,81558,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,i|0,81644,9);q=B;B=0;if(q&1){q=Rb()|0;a=Q;Yua(h);u=a;v=q;break}B=0;wa(510,j|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,h|0,i|0,301,j|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;a=Q;Yua(j);w=a;x=q;y=z}Yua(i);Yua(h);if(y){u=w;v=x}else{A=w;C=x;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(e);Qb(C|0)}while(0);m=o;n=p;vva(e);Qb(n|0)}function iO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;i=e+12|0;j=e;l=k[a+(d+-1<<2)>>2]|0;if(l){nd[k[(k[l>>2]|0)+60>>2]&1023](l,b,c);r=e;return}e=g+56|0;c=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;m=Q;n=b;vva(e);Qb(n|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,c|0);b=B;B=0;do if(b&1){l=Rb()|0;o=Q;p=l}else{k[c>>2]=27560;l=g+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,c|0,f|0);a=B;B=0;if(a&1){a=Rb()|0;q=Q;Yua(f);Yua(l);Ava(c);o=q;p=a;break}Yua(f);B=0;a=Ia(40,g|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,d|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,a|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,81635,8)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,h|0,81558,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,i|0,81644,9);q=B;B=0;if(q&1){q=Rb()|0;a=Q;Yua(h);u=a;v=q;break}B=0;wa(510,j|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,h|0,i|0,323,j|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;a=Q;Yua(j);w=a;x=q;y=z}Yua(i);Yua(h);if(y){u=w;v=x}else{A=w;C=x;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(e);Qb(C|0)}while(0);m=o;n=p;vva(e);Qb(n|0)}function jO(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;f=r;r=r+192|0;g=f+176|0;h=f+40|0;i=f+24|0;j=f+12|0;l=f;m=k[a+(e+-1<<2)>>2]|0;if(m){rd[k[(k[m>>2]|0)+64>>2]&511](m,b,c,d);r=f;return}f=h+56|0;d=h+4|0;k[h>>2]=27524;k[f>>2]=27544;B=0;wa(508,h+56|0,d|0);c=B;B=0;if(c&1){c=Rb()|0;n=Q;o=c;vva(f);Qb(o|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[f>>2]=27488;B=0;va(448,d|0);c=B;B=0;do if(c&1){b=Rb()|0;p=Q;q=b}else{k[d>>2]=27560;b=h+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[h+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,d|0,g|0);m=B;B=0;if(m&1){m=Rb()|0;a=Q;Yua(g);Yua(b);Ava(d);p=a;q=m;break}Yua(g);B=0;m=Ia(40,h|0,85329,10)|0;a=B;B=0;if((((!(a&1)?(B=0,a=ya(427,e|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(a)|0,B=0,t=Ia(40,m|0,a|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,81635,8)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,i|0,81558,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,j|0,81644,9);a=B;B=0;if(a&1){a=Rb()|0;m=Q;Yua(i);u=m;v=a;break}B=0;wa(510,l|0,d|0);a=B;B=0;if(a&1){a=Rb()|0;w=Q;x=a;y=1}else{B=0;ua(163,s|0,i|0,j|0,333,l|0);a=B;B=0;if(a&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}a=Rb()|0;m=Q;Yua(l);w=m;x=a;y=z}Yua(j);Yua(i);if(y){u=w;v=x}else{A=w;C=x;k[h>>2]=27468;k[f>>2]=27488;k[d>>2]=27560;Yua(b);Ava(d);vva(f);Qb(C|0)}}else{a=Rb()|0;u=Q;v=a}while(0);zb(s|0);A=u;C=v;k[h>>2]=27468;k[f>>2]=27488;k[d>>2]=27560;Yua(b);Ava(d);vva(f);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[h>>2]=27468;k[f>>2]=27488;k[d>>2]=27560;Yua(b);Ava(d);vva(f);Qb(C|0)}while(0);n=p;o=q;vva(f);Qb(o|0)}function kO(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;g=r;r=r+192|0;h=g+176|0;i=g+40|0;j=g+24|0;l=g+12|0;m=g;n=k[a+(f+-1<<2)>>2]|0;if(n){Dc[k[(k[n>>2]|0)+68>>2]&255](n,b,c,d,e);r=g;return}g=i+56|0;e=i+4|0;k[i>>2]=27524;k[g>>2]=27544;B=0;wa(508,i+56|0,e|0);d=B;B=0;if(d&1){d=Rb()|0;o=Q;p=d;vva(g);Qb(p|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[g>>2]=27488;B=0;va(448,e|0);d=B;B=0;do if(d&1){c=Rb()|0;q=Q;s=c}else{k[e>>2]=27560;c=i+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[i+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,e|0,h|0);b=B;B=0;if(b&1){b=Rb()|0;n=Q;Yua(h);Yua(c);Ava(e);q=n;s=b;break}Yua(h);B=0;b=Ia(40,i|0,85329,10)|0;n=B;B=0;if((((!(n&1)?(B=0,n=ya(427,f|0)|0,a=B,B=0,!(a&1)):0)?(a=Lta(n)|0,B=0,t=Ia(40,b|0,n|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,a=Ia(40,t|0,81635,8)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,j|0,81558,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,l|0,81644,9);n=B;B=0;if(n&1){n=Rb()|0;b=Q;Yua(j);u=b;v=n;break}B=0;wa(510,m|0,e|0);n=B;B=0;if(n&1){n=Rb()|0;w=Q;x=n;y=1}else{B=0;ua(163,a|0,j|0,l|0,343,m|0);n=B;B=0;if(n&1)z=1;else{B=0;eb(503,a|0,1240,229);B=0;z=0}n=Rb()|0;b=Q;Yua(m);w=b;x=n;y=z}Yua(l);Yua(j);if(y){u=w;v=x}else{A=w;C=x;k[i>>2]=27468;k[g>>2]=27488;k[e>>2]=27560;Yua(c);Ava(e);vva(g);Qb(C|0)}}else{n=Rb()|0;u=Q;v=n}while(0);zb(a|0);A=u;C=v;k[i>>2]=27468;k[g>>2]=27488;k[e>>2]=27560;Yua(c);Ava(e);vva(g);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[i>>2]=27468;k[g>>2]=27488;k[e>>2]=27560;Yua(c);Ava(e);vva(g);Qb(C|0)}while(0);o=q;p=s;vva(g);Qb(p|0)}function lO(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=k[a+(c+-1<<2)>>2]|0;if(j){Fc[k[(k[j>>2]|0)+80>>2]&1023](j,b);r=d;return}d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(d);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);j=B;B=0;do if(j&1){a=Rb()|0;n=Q;o=a}else{k[b>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(e);Yua(a);Ava(b);n=q;o=p;break}Yua(e);B=0;p=Ia(40,f|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,c|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,81635,8)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,81558,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,81644,9);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,373,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}while(0);l=n;m=o;vva(d);Qb(m|0)}function mO(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=k[a+(c+-1<<2)>>2]|0;if(d){Fc[k[(k[d>>2]|0)+88>>2]&1023](d,b);return}d=Qqa(12)|0;B=0;eb(517,d|0,c|0,b|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(d);Qb(b|0)}b=a+((Hc[k[(k[d>>2]|0)+24>>2]&511](d)|0)+-1<<2)|0;a=k[b>>2]|0;if(a){Ec[k[(k[a>>2]|0)+4>>2]&1023](a);k[b>>2]=0}k[b>>2]=d;return}function nO(a,b){a=a|0;b=b|0;return k[a+(b+-1<<2)>>2]|0}function oO(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=k[a+(c+-1<<2)>>2]|0;if(d){Fc[k[(k[d>>2]|0)+92>>2]&1023](d,b);return}d=Qqa(12)|0;B=0;eb(518,d|0,c|0,b|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(d);Qb(b|0)}b=a+((Hc[k[(k[d>>2]|0)+24>>2]&511](d)|0)+-1<<2)|0;a=k[b>>2]|0;if(a){Ec[k[(k[a>>2]|0)+4>>2]&1023](a);k[b>>2]=0}k[b>>2]=d;return}function pO(a,b,c){a=a|0;b=+b;c=c|0;var d=0;d=k[a+(c+-1<<2)>>2]|0;if(d){Cc[k[(k[d>>2]|0)+96>>2]&63](d,b);return}d=Qqa(16)|0;B=0;Oa(59,d|0,c|0,+b);c=B;B=0;if(c&1){c=Rb()|0;Sqa(d);Qb(c|0)}c=a+((Hc[k[(k[d>>2]|0)+24>>2]&511](d)|0)+-1<<2)|0;a=k[c>>2]|0;if(a){Ec[k[(k[a>>2]|0)+4>>2]&1023](a);k[c>>2]=0}k[c>>2]=d;return}function qO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=k[a+(d+-1<<2)>>2]|0;if(e){nd[k[(k[e>>2]|0)+116>>2]&1023](e,b,c);return}e=Qqa(16)|0;B=0;ib(293,e|0,d|0,b|0,c|0);c=B;B=0;if(c&1){c=Rb()|0;Sqa(e);Qb(c|0)}c=a+((Hc[k[(k[e>>2]|0)+24>>2]&511](e)|0)+-1<<2)|0;a=k[c>>2]|0;if(a){Ec[k[(k[a>>2]|0)+4>>2]&1023](a);k[c>>2]=0}k[c>>2]=e;return}function rO(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=k[a+(c+-1<<2)>>2]|0;if(d){Fc[k[(k[d>>2]|0)+132>>2]&1023](d,b);return}d=Qqa(12)|0;B=0;eb(519,d|0,c|0,b|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(d);Qb(b|0)}b=a+((Hc[k[(k[d>>2]|0)+24>>2]&511](d)|0)+-1<<2)|0;a=k[b>>2]|0;if(a){Ec[k[(k[a>>2]|0)+4>>2]&1023](a);k[b>>2]=0}k[b>>2]=d;return}function sO(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0;c=r;r=r+208|0;d=c+192|0;e=c+184|0;f=c+180|0;g=c+176|0;h=c+40|0;i=c+24|0;j=c+12|0;l=c;k[e>>2]=0;k[f>>2]=0;k[g>>2]=0;gO(a,f,g,959);iO(a,e,c+188|0,958);a=k[g>>2]|0;if(!a){m=0;r=c;return m|0}n=(a|0)>0;a:do if(n){o=k[e>>2]|0;q=+(b|0);s=0;while(1){if(+p[o+(s<<3)>>3]==q){t=s;u=6;break}s=s+1|0;if((s|0)>=(a|0)){u=7;break}}if((u|0)==6)if((t|0)==-1)u=7;else v=t;if((u|0)==7){if(!n)break;s=k[e>>2]|0;o=0;while(1){if(+p[s+(o<<3)>>3]==483.0){w=o;break}o=o+1|0;if((o|0)>=(a|0))break a}if((w|0)==-1)break;else v=w}o=(k[f>>2]|0)+(v<<2)|0;s=Rqa((Lta(k[o>>2]|0)|0)+1|0)|0;Jta(s,k[o>>2]|0)|0;o=k[e>>2]|0;if(o)Tqa(o);k[e>>2]=0;o=k[g>>2]|0;x=k[f>>2]|0;if((o|0)>0){y=x;z=o;o=0;while(1){A=k[y+(o<<2)>>2]|0;if(!A){C=z;D=y}else{Tqa(A);C=k[g>>2]|0;D=k[f>>2]|0}o=o+1|0;if((o|0)>=(C|0)){E=D;break}else{y=D;z=C}}}else E=x;if(E)Tqa(E);k[f>>2]=0;m=s;r=c;return m|0}while(0);m=h+56|0;c=h+4|0;k[h>>2]=27524;k[m>>2]=27544;B=0;wa(508,h+56|0,c|0);f=B;B=0;if(f&1){f=Rb()|0;F=Q;G=f;vva(m);Qb(G|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[m>>2]=27488;B=0;va(448,c|0);f=B;B=0;do if(f&1){E=Rb()|0;H=Q;I=E}else{k[c>>2]=27560;E=h+36|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[h+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,c|0,d|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(d);Yua(E);Ava(c);H=D;I=C;break}Yua(d);B=0;C=Ia(40,h|0,81654,51)|0;D=B;B=0;if(((!(D&1)?(B=0,D=ya(427,b|0)|0,g=B,B=0,!(g&1)):0)?(g=Lta(D)|0,B=0,e=Ia(40,C|0,D|0,g|0)|0,g=B,B=0,!(g&1)):0)?(B=0,Xa(239,e|0,0)|0,e=B,B=0,!(e&1)):0){e=Ab(20)|0;B=0;eb(502,i|0,81558,76);g=B;B=0;do if(!(g&1)){B=0;eb(502,j|0,81706,19);D=B;B=0;if(D&1){D=Rb()|0;C=Q;Yua(i);J=C;K=D;break}B=0;wa(510,l|0,c|0);D=B;B=0;if(D&1){D=Rb()|0;L=Q;M=D;N=1}else{B=0;ua(163,e|0,i|0,j|0,584,l|0);D=B;B=0;if(D&1)O=1;else{B=0;eb(503,e|0,1240,229);B=0;O=0}D=Rb()|0;C=Q;Yua(l);L=C;M=D;N=O}Yua(j);Yua(i);if(N){J=L;K=M}else{P=L;R=M;k[h>>2]=27468;k[m>>2]=27488;k[c>>2]=27560;Yua(E);Ava(c);vva(m);Qb(R|0)}}else{D=Rb()|0;J=Q;K=D}while(0);zb(e|0);P=J;R=K;k[h>>2]=27468;k[m>>2]=27488;k[c>>2]=27560;Yua(E);Ava(c);vva(m);Qb(R|0)}g=Rb()|0;P=Q;R=g;k[h>>2]=27468;k[m>>2]=27488;k[c>>2]=27560;Yua(E);Ava(c);vva(m);Qb(R|0)}while(0);F=H;G=I;vva(m);Qb(G|0);return 0}function tO(a,b){a=a|0;b=b|0;var c=0;c=sO(a,b)|0;pZ(c);if(!c)return;Tqa(c);return}function uO(a){a=a|0;k[a>>2]=34448;return}function vO(a,b,c){a=a|0;b=b|0;c=c|0;k[a>>2]=34448;k[a+4>>2]=b;i[a+8>>0]=c&1;return}function wO(a){a=a|0;k[a>>2]=34448;return}function xO(a){a=a|0;Sqa(a);return}function yO(a){a=a|0;zO(a);return}function zO(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;b=r;r=r+176|0;c=b+152|0;d=b+16|0;e=b;f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;j=Q;l=h;vva(f);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){m=Rb()|0;n=Q;o=m}else{k[g>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(g);n=q;o=p;break}Yua(c);k[d+(k[(k[d>>2]|0)+-12>>2]|0)+12>>2]=22;B=0;p=Ia(40,d|0,81737,13)|0;q=B;B=0;if((((((!(q&1)?(k[p+(k[(k[p>>2]|0)+-12>>2]|0)+12>>2]=35,q=p+(k[(k[p>>2]|0)+-12>>2]|0)+4|0,k[q>>2]=k[q>>2]&-177|32,B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,149175,1)|0,t=B,B=0,!(t&1)):0)?(t=(i[a+8>>0]|0)!=0,B=0,q=Ia(40,s|0,(t?159247:159252)|0,(t?4:5)|0)|0,t=B,B=0,!(t&1)):0)?(B=0,Ia(40,q|0,149177,1)|0,q=B,B=0,!(q&1)):0)?(B=0,wa(510,e|0,g|0),q=B,B=0,!(q&1)):0){B=0;ya(424,e|0)|0;q=B;B=0;if(!(q&1)){Yua(e);k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(m);Ava(g);vva(f);r=b;return}q=Rb()|0;t=Q;Yua(e);u=t;v=q;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(m);Ava(g);vva(f);Qb(v|0)}q=Rb()|0;u=Q;v=q;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(m);Ava(g);vva(f);Qb(v|0)}while(0);j=n;l=o;vva(f);Qb(l|0)}function AO(a){a=a|0;return 557}function BO(a){a=a|0;var b=0,c=0,d=0;b=Qqa(12)|0;c=k[a+4>>2]|0;d=i[a+8>>0]|0;k[b>>2]=34448;k[b+4>>2]=c;i[b+8>>0]=d;return b|0}function CO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=45;i[d+1>>0]=2;i[d+2>>0]=0;i[d+3>>0]=0;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;i[o>>0]=i[a+8>>0]|0;k[b>>2]=(k[b>>2]|0)+1;r=e;return}case 2:{k[c>>2]=(k[c>>2]|0)+9;r=e;return}case 1:{c=(k[b>>2]|0)+4|0;k[b>>2]=c;o=a+4|0;d=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[o>>0]=d;i[o+1>>0]=d>>8;i[o+2>>0]=d>>16;i[o+3>>0]=d>>24;d=(k[b>>2]|0)+4|0;k[b>>2]=d;i[a+8>>0]=i[d>>0]|0;k[b>>2]=(k[b>>2]|0)+1;r=e;return}default:{e=g+56|0;b=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,b|0);d=B;B=0;if(d&1){d=Rb()|0;p=Q;q=d;vva(e);Qb(q|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,b|0);d=B;B=0;do if(d&1){a=Rb()|0;s=Q;t=a}else{k[b>>2]=27560;a=g+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;c=Q;Yua(f);Yua(a);Ava(b);s=c;t=o;break}Yua(f);B=0;o=Ia(40,g|0,143951,43)|0;c=B;B=0;if(!(c&1)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,h|0,81751,75);c=B;B=0;do if(!(c&1)){B=0;eb(502,j|0,149525,8);n=B;B=0;if(n&1){n=Rb()|0;u=Q;Yua(h);v=u;w=n;break}B=0;wa(510,m|0,b|0);n=B;B=0;if(n&1){n=Rb()|0;x=n;y=Q;z=1}else{B=0;ua(163,o|0,h|0,j|0,58,m|0);n=B;B=0;if(n&1)A=1;else{B=0;eb(503,o|0,1240,229);B=0;A=0}n=Rb()|0;u=Q;Yua(m);x=n;y=u;z=A}Yua(j);Yua(h);if(z){v=y;w=x}else{C=y;D=x;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(e);Qb(D|0)}}else{u=Rb()|0;v=Q;w=u}while(0);zb(o|0);C=v;D=w;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(e);Qb(D|0)}c=Rb()|0;C=Q;D=c;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(e);Qb(D|0)}while(0);p=s;q=t;vva(e);Qb(q|0)}}}function DO(a){a=a|0;return k[a+4>>2]|0}function EO(a,b){a=a|0;b=b|0;i[b>>0]=i[a+8>>0]|0;return}function FO(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85796,25)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,43,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function GO(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85760,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,44,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function HO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85760,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,45,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function IO(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,46,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function JO(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;b=r;r=r+192|0;d=b+176|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;b=e+56|0;i=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(b);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,86504,44)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,81827,85);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,47,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}while(0);l=o;m=p;vva(b);Qb(m|0)}function KO(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86480,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,48,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function LO(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86450,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,49,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function MO(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,50,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function NO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,51,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function OO(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85695,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,52,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function PO(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86364,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,53,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function QO(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86343,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,54,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function RO(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85673,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,55,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function SO(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85648,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,56,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function TO(a,b){a=a|0;b=b|0;i[a+8>>0]=b&1;return}function UO(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,81941,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,59,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function VO(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;c=e+56|0;i=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(c);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,81913,27)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,81827,85);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86106,8);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,60,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}while(0);l=o;m=p;vva(c);Qb(m|0)}function WO(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86273,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,61,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function XO(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86245,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,62,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function YO(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,63,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function ZO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,64,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function _O(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86188,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,65,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function $O(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86188,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,66,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function aP(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86169,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,67,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function bP(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86150,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,68,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function cP(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85465,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,69,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function dP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85340,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,81827,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,70,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function eP(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function fP(a){a=a|0;k[a>>2]=34600;return}function gP(a,b,c){a=a|0;b=b|0;c=c|0;k[a>>2]=34600;k[a+4>>2]=b;k[a+8>>2]=c;return}function hP(a){a=a|0;k[a>>2]=34600;return}function iP(a){a=a|0;Sqa(a);return}function jP(a){a=a|0;kP(a);return}function kP(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;b=r;r=r+176|0;c=b+152|0;d=b+16|0;e=b;f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);k[d+(k[(k[d>>2]|0)+-12>>2]|0)+12>>2]=22;B=0;o=Ia(40,d|0,81971,12)|0;p=B;B=0;if((((((!(p&1)?(k[o+(k[(k[o>>2]|0)+-12>>2]|0)+12>>2]=35,p=o+(k[(k[o>>2]|0)+-12>>2]|0)+4|0,k[p>>2]=k[p>>2]&-177|32,B=0,p=ya(427,k[a+4>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(p)|0,B=0,s=Ia(40,o|0,p|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,s|0,149175,1)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Xa(242,q|0,k[a+8>>2]|0)|0,q=B,B=0,!(q&1)):0)?(B=0,Ia(40,s|0,149177,1)|0,s=B,B=0,!(s&1)):0)?(B=0,wa(510,e|0,g|0),s=B,B=0,!(s&1)):0){B=0;ya(424,e|0)|0;s=B;B=0;if(!(s&1)){Yua(e);k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);r=b;return}s=Rb()|0;q=Q;Yua(e);t=q;u=s;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(u|0)}s=Rb()|0;t=Q;u=s;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(u|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function lP(a){a=a|0;return 580}function mP(a){a=a|0;var b=0,c=0,d=0;b=Qqa(12)|0;c=k[a+4>>2]|0;d=k[a+8>>2]|0;k[b>>2]=34600;k[b+4>>2]=c;k[b+8>>2]=d;return b|0}function nP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=68;i[d+1>>0]=2;i[d+2>>0]=0;i[d+3>>0]=0;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;d=a+8|0;n=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;k[b>>2]=(k[b>>2]|0)+4;r=e;return}case 2:{k[c>>2]=(k[c>>2]|0)+12;r=e;return}case 1:{c=(k[b>>2]|0)+4|0;k[b>>2]=c;n=a+4|0;o=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[n>>0]=o;i[n+1>>0]=o>>8;i[n+2>>0]=o>>16;i[n+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;n=a+8|0;a=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[n>>0]=a;i[n+1>>0]=a>>8;i[n+2>>0]=a>>16;i[n+3>>0]=a>>24;k[b>>2]=(k[b>>2]|0)+4;r=e;return}default:{e=g+56|0;b=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;p=Q;q=a;vva(e);Qb(q|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){n=Rb()|0;s=Q;t=n}else{k[b>>2]=27560;n=g+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;c=Q;Yua(f);Yua(n);Ava(b);s=c;t=o;break}Yua(f);B=0;o=Ia(40,g|0,143951,43)|0;c=B;B=0;if(!(c&1)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,h|0,81984,74);c=B;B=0;do if(!(c&1)){B=0;eb(502,j|0,149525,8);d=B;B=0;if(d&1){d=Rb()|0;u=Q;Yua(h);v=u;w=d;break}B=0;wa(510,m|0,b|0);d=B;B=0;if(d&1){d=Rb()|0;x=d;y=Q;z=1}else{B=0;ua(163,o|0,h|0,j|0,59,m|0);d=B;B=0;if(d&1)A=1;else{B=0;eb(503,o|0,1240,229);B=0;A=0}d=Rb()|0;u=Q;Yua(m);x=d;y=u;z=A}Yua(j);Yua(h);if(z){v=y;w=x}else{C=y;D=x;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(n);Ava(b);vva(e);Qb(D|0)}}else{u=Rb()|0;v=Q;w=u}while(0);zb(o|0);C=v;D=w;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(n);Ava(b);vva(e);Qb(D|0)}c=Rb()|0;C=Q;D=c;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(n);Ava(b);vva(e);Qb(D|0)}while(0);p=s;q=t;vva(e);Qb(q|0)}}}function oP(a){a=a|0;return k[a+4>>2]|0}function pP(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86577,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,43,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function qP(a,b){a=a|0;b=b|0;k[b>>2]=k[a+8>>2];return}function rP(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85760,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,45,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function sP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85760,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,46,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function tP(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,47,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function uP(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;b=r;r=r+192|0;d=b+176|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;b=e+56|0;i=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(b);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,86504,44)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,82059,84);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,48,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}while(0);l=o;m=p;vva(b);Qb(m|0)}function vP(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86480,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,49,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function wP(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86450,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,50,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function xP(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,51,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function yP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,52,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function zP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85695,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,53,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function AP(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86364,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,54,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function BP(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86343,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,55,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function CP(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85673,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,56,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function DP(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85648,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,57,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function EP(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,82197,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,59,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function FP(a,b){a=a|0;b=b|0;k[a+8>>2]=b;return}function GP(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;c=e+56|0;i=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(c);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,82170,26)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,82059,84);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86106,8);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,63,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}while(0);l=o;m=p;vva(c);Qb(m|0)}function HP(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86273,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,64,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function IP(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86245,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,65,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function JP(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,66,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function KP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,67,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function LP(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,82144,25)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,61,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function MP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,82144,25)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,62,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function NP(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86169,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,68,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function OP(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86150,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,69,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function PP(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85465,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,70,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function QP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85340,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,82059,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,71,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function RP(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function SP(a){a=a|0;k[a>>2]=34752;return}function TP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;k[a>>2]=34752;k[a+4>>2]=b;k[a+12>>2]=d;if(!d){k[a+8>>2]=0;return}b=Rqa(d>>>0>1073741823?-1:d<<2)|0;k[a+8>>2]=b;if(!c)yb(142353,85118,137,142345);TEa(b|0,c|0,d<<2|0)|0;return}function UP(a){a=a|0;var b=0;k[a>>2]=34752;b=a+8|0;a=k[b>>2]|0;if(a)Tqa(a);k[b>>2]=0;return}function VP(a){a=a|0;var b=0;k[a>>2]=34752;b=k[a+8>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function WP(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=d+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(p);Ava(l);q=u;s=t;break}Yua(c);B=0;Ia(40,d|0,82231,13)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,e|0,l|0),u=B,B=0,!(u&1)):0){B=0;ya(424,e|0)|0;u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);u=f+56|0;v=f+4|0;k[f>>2]=27524;k[u>>2]=27544;B=0;wa(508,f+56|0,v|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(u);Qb(A|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[v>>2]=27560;C=f+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(c);Yua(C);Ava(v);D=G;E=F;break}Yua(c);B=0;F=Ia(40,f|0,85228,9)|0;G=B;B=0;do if((((((!(G&1)?(H=a+4|0,B=0,I=Xa(242,F|0,k[H>>2]|0)|0,J=B,B=0,!(J&1)):0)?(B=0,J=Ia(40,I|0,144166,2)|0,I=B,B=0,!(I&1)):0)?(B=0,I=ya(427,k[H>>2]|0)|0,H=B,B=0,!(H&1)):0)?(H=Lta(I)|0,B=0,K=Ia(40,J|0,I|0,H|0)|0,H=B,B=0,!(H&1)):0)?(B=0,Ia(40,K|0,145593,2)|0,K=B,B=0,!(K&1)):0)?(B=0,wa(510,g|0,v|0),K=B,B=0,!(K&1)):0){B=0;ya(424,g|0)|0;K=B;B=0;if(K&1){K=Rb()|0;H=Q;Yua(g);L=H;M=K;break}Yua(g);k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);K=h+56|0;H=h+4|0;k[h>>2]=27524;k[K>>2]=27544;B=0;wa(508,h+56|0,H|0);I=B;B=0;if(I&1){I=Rb()|0;N=Q;O=I;vva(K);Qb(O|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[K>>2]=27488;B=0;va(448,H|0);I=B;B=0;do if(I&1){J=Rb()|0;P=Q;R=J}else{k[H>>2]=27560;J=h+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,H|0,c|0);S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(c);Yua(J);Ava(H);P=T;R=S;break}Yua(c);B=0;S=Ia(40,h|0,82245,16)|0;T=B;B=0;do if(!(T&1)){B=0;U=Xa(242,S|0,k[a+12>>2]|0)|0;V=B;B=0;if(V&1){W=48;break}B=0;Ia(40,U|0,149177,1)|0;U=B;B=0;if(U&1){W=48;break}B=0;wa(510,i|0,H|0);U=B;B=0;if(U&1){W=48;break}B=0;ya(424,i|0)|0;U=B;B=0;if(U&1){U=Rb()|0;V=Q;Yua(i);X=V;Y=U;break}else{Yua(i);k[h>>2]=27468;k[K>>2]=27488;k[H>>2]=27560;Yua(J);Ava(H);vva(K);r=b;return}}else W=48;while(0);if((W|0)==48){S=Rb()|0;X=Q;Y=S}k[h>>2]=27468;k[K>>2]=27488;k[H>>2]=27560;Yua(J);Ava(H);vva(K);Z=X;_=Y;Qb(_|0)}while(0);N=P;O=R;vva(K);Qb(O|0)}else W=45;while(0);if((W|0)==45){F=Rb()|0;L=Q;M=F}k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);Z=L;_=M;Qb(_|0)}while(0);z=D;A=E;vva(u);Qb(A|0)}else W=42;while(0);if((W|0)==42){t=Rb()|0;w=Q;x=t}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Z=w;_=x;Qb(_|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}function XP(a){a=a|0;return 581}function YP(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Qqa(16)|0;c=k[a+4>>2]|0;d=k[a+8>>2]|0;e=k[a+12>>2]|0;k[b>>2]=34752;k[b+4>>2]=c;k[b+12>>2]=e;if(!e){k[b+8>>2]=0;return b|0}B=0;c=ya(422,(e>>>0>1073741823?-1:e<<2)|0)|0;a=B;B=0;if(a&1){f=Rb()|0;g=Q;Sqa(b);Qb(f|0)}k[b+8>>2]=c;if(!d){B=0;ib(283,142353,85118,137,142345);B=0;f=Rb()|0;g=Q;Sqa(b);Qb(f|0)}else{TEa(c|0,d|0,e<<2|0)|0;return b|0}return 0}function ZP(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;e=r;r=r+368|0;f=e+344|0;g=e+208|0;h=e+196|0;j=e+184|0;m=e+36|0;n=e+48|0;o=e+24|0;p=e+12|0;q=e;s=(d|0)==0;a:do if(s){t=k[b>>2]|0;i[t>>0]=69;i[t+1>>0]=2;i[t+2>>0]=0;i[t+3>>0]=0;t=(k[b>>2]|0)+4|0;k[b>>2]=t;u=a+4|0;v=l[u>>0]|l[u+1>>0]<<8|l[u+2>>0]<<16|l[u+3>>0]<<24;i[t>>0]=v;i[t+1>>0]=v>>8;i[t+2>>0]=v>>16;i[t+3>>0]=v>>24;v=(k[b>>2]|0)+4|0;k[b>>2]=v;t=a+12|0;u=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[v>>0]=u;i[v+1>>0]=u>>8;i[v+2>>0]=u>>16;i[v+3>>0]=u>>24;k[b>>2]=(k[b>>2]|0)+4;w=t}else switch(d|0){case 2:{k[c>>2]=(k[c>>2]|0)+12;w=a+12|0;break a;break}case 1:{t=(k[b>>2]|0)+4|0;k[b>>2]=t;u=a+4|0;v=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[u>>0]=v;i[u+1>>0]=v>>8;i[u+2>>0]=v>>16;i[u+3>>0]=v>>24;v=(k[b>>2]|0)+4|0;k[b>>2]=v;u=a+12|0;t=l[v>>0]|l[v+1>>0]<<8|l[v+2>>0]<<16|l[v+3>>0]<<24;i[u>>0]=t;i[u+1>>0]=t>>8;i[u+2>>0]=t>>16;i[u+3>>0]=t>>24;k[b>>2]=(k[b>>2]|0)+4;w=u;break a;break}default:{u=g+56|0;t=g+4|0;k[g>>2]=27524;k[u>>2]=27544;B=0;wa(508,g+56|0,t|0);v=B;B=0;if(v&1){v=Rb()|0;x=Q;y=v;vva(u);Qb(y|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[u>>2]=27488;B=0;va(448,t|0);v=B;B=0;do if(v&1){z=Rb()|0;A=Q;C=z}else{k[t>>2]=27560;z=g+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,t|0,f|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(f);Yua(z);Ava(t);A=E;C=D;break}Yua(f);B=0;D=Ia(40,g|0,143951,43)|0;E=B;B=0;b:do if(!(E&1)?(B=0,Xa(239,D|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,h|0,82262,77);G=B;B=0;do if(!(G&1)){B=0;eb(502,j|0,149525,8);H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(h);J=I;K=H;break}B=0;wa(510,m|0,t|0);H=B;B=0;if(H&1){H=Rb()|0;L=Q;M=H;N=1}else{B=0;ua(163,F|0,h|0,j|0,89,m|0);H=B;B=0;if(H&1)O=1;else{B=0;eb(503,F|0,1240,229);B=0;O=0}H=Rb()|0;I=Q;Yua(m);L=I;M=H;N=O}Yua(j);Yua(h);if(N){J=L;K=M}else{P=L;R=M;break b}}else{H=Rb()|0;J=Q;K=H}while(0);zb(F|0);P=J;R=K}else S=18;while(0);if((S|0)==18){D=Rb()|0;P=Q;R=D}k[g>>2]=27468;k[u>>2]=27488;k[t>>2]=27560;Yua(z);Ava(t);vva(u);T=P;U=R;Qb(U|0)}while(0);x=A;y=C;vva(u);Qb(y|0)}}while(0);y=k[w>>2]|0;C=a+8|0;if(!y){k[C>>2]=0;r=e;return}a=(k[C>>2]|0)==0;if(s){i[k[b>>2]>>0]=a&1;s=(k[b>>2]|0)+1|0;k[b>>2]=s;if(a){r=e;return}TEa(s|0,k[C>>2]|0,k[w>>2]<<2|0)|0;k[b>>2]=(k[b>>2]|0)+(k[w>>2]<<2);r=e;return}switch(d|0){case 2:{d=(k[c>>2]|0)+1|0;k[c>>2]=d;if(a){r=e;return}k[c>>2]=d+(k[w>>2]<<2);r=e;return}case 1:{w=k[b>>2]|0;d=i[w>>0]|0;k[b>>2]=w+1;if(d&1){r=e;return}d=Rqa(y>>>0>1073741823?-1:y<<2)|0;k[C>>2]=d;C=k[b>>2]|0;w=y<<2;TEa(d|0,C|0,w|0)|0;k[b>>2]=C+w;r=e;return}default:{e=n+56|0;w=n+4|0;k[n>>2]=27524;k[e>>2]=27544;B=0;wa(508,n+56|0,w|0);C=B;B=0;if(C&1){C=Rb()|0;V=Q;W=C;vva(e);Qb(W|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[e>>2]=27488;B=0;va(448,w|0);C=B;B=0;do if(C&1){b=Rb()|0;X=Q;Y=b}else{k[w>>2]=27560;b=n+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,w|0,f|0);d=B;B=0;if(d&1){d=Rb()|0;y=Q;Yua(f);Yua(b);Ava(w);X=y;Y=d;break}Yua(f);B=0;d=Ia(40,n|0,143951,43)|0;y=B;B=0;c:do if(!(y&1)?(B=0,Xa(239,d|0,0)|0,c=B,B=0,!(c&1)):0){c=Ab(20)|0;B=0;eb(502,o|0,82262,77);a=B;B=0;do if(!(a&1)){B=0;eb(502,p|0,149525,8);s=B;B=0;if(s&1){s=Rb()|0;A=Q;Yua(o);Z=A;_=s;break}B=0;wa(510,q|0,w|0);s=B;B=0;if(s&1){s=Rb()|0;$=1;aa=Q;ba=s}else{B=0;ua(163,c|0,o|0,p|0,94,q|0);s=B;B=0;if(s&1)ca=1;else{B=0;eb(503,c|0,1240,229);B=0;ca=0}s=Rb()|0;A=Q;Yua(q);$=ca;aa=A;ba=s}Yua(p);Yua(o);if($){Z=aa;_=ba}else{da=aa;ea=ba;break c}}else{s=Rb()|0;Z=Q;_=s}while(0);zb(c|0);da=Z;ea=_}else S=49;while(0);if((S|0)==49){d=Rb()|0;da=Q;ea=d}k[n>>2]=27468;k[e>>2]=27488;k[w>>2]=27560;Yua(b);Ava(w);vva(e);T=da;U=ea;Qb(U|0)}while(0);V=X;W=Y;vva(e);Qb(W|0)}}}function _P(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=k[a+12>>2]|0;if(d){e=Rqa(d>>>0>1073741823?-1:d<<2)|0;f=k[a+8>>2]|0;if(!f)yb(142353,85118,137,142345);else{a=0;do{k[e+(a<<2)>>2]=k[f+(a<<2)>>2];a=a+1|0}while((a|0)!=(d|0));g=e}}else g=0;if(!c){k[b>>2]=g;return}k[c>>2]=d;k[b>>2]=g;return}function $P(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=a+8|0;e=k[d>>2]|0;if(e)Tqa(e);k[d>>2]=0;if(!c){k[d>>2]=0;f=a+12|0;k[f>>2]=c;return}e=Rqa(c>>>0>1073741823?-1:c<<2)|0;k[d>>2]=e;if(!b)yb(142353,85118,137,142345);TEa(e|0,b|0,c<<2|0)|0;f=a+12|0;k[f>>2]=c;return}function aQ(a){a=a|0;return k[a+4>>2]|0}function bQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86577,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,44,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function cQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85796,25)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,45,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function dQ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,82481,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,47,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function eQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,48,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function fQ(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;b=r;r=r+192|0;d=b+176|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;b=e+56|0;i=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(b);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,86504,44)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,82340,87);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,49,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}while(0);l=o;m=p;vva(b);Qb(m|0)}function gQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86480,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,50,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function hQ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86450,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,51,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function iQ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,82428,52)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,52,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function jQ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,53,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function kQ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85695,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,54,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function lQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86364,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,55,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function mQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86343,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,56,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function nQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85673,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,57,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function oQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85648,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,58,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function pQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85625,22)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,60,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function qQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85601,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,61,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function rQ(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;c=e+56|0;i=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(c);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,85579,21)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,82340,87);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86106,8);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,62,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}while(0);l=o;m=p;vva(c);Qb(m|0)}function sQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86273,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,63,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function tQ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86245,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,64,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function uQ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84826,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,65,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function vQ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84826,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,66,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function wQ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85485,28)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,68,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function xQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86169,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,69,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function yQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86150,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,70,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function zQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85465,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,71,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function AQ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85340,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,82340,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,72,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function BQ(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function CQ(a){a=a|0;k[a>>2]=34904;return}function DQ(a){a=a|0;var b=0;k[a>>2]=34904;b=a+8|0;a=k[b>>2]|0;if(a)Tqa(a);k[b>>2]=0;return}function EQ(a){a=a|0;var b=0;k[a>>2]=34904;b=k[a+8>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function FQ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=d+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(p);Ava(l);q=u;s=t;break}Yua(c);B=0;Ia(40,d|0,82519,13)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,e|0,l|0),u=B,B=0,!(u&1)):0){B=0;ya(424,e|0)|0;u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);u=f+56|0;v=f+4|0;k[f>>2]=27524;k[u>>2]=27544;B=0;wa(508,f+56|0,v|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(u);Qb(A|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[v>>2]=27560;C=f+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(c);Yua(C);Ava(v);D=G;E=F;break}Yua(c);B=0;F=Ia(40,f|0,85228,9)|0;G=B;B=0;do if((((((!(G&1)?(H=a+4|0,B=0,I=Xa(242,F|0,k[H>>2]|0)|0,J=B,B=0,!(J&1)):0)?(B=0,J=Ia(40,I|0,144166,2)|0,I=B,B=0,!(I&1)):0)?(B=0,I=ya(427,k[H>>2]|0)|0,H=B,B=0,!(H&1)):0)?(H=Lta(I)|0,B=0,K=Ia(40,J|0,I|0,H|0)|0,H=B,B=0,!(H&1)):0)?(B=0,Ia(40,K|0,145593,2)|0,K=B,B=0,!(K&1)):0)?(B=0,wa(510,g|0,v|0),K=B,B=0,!(K&1)):0){B=0;ya(424,g|0)|0;K=B;B=0;if(K&1){K=Rb()|0;H=Q;Yua(g);L=H;M=K;break}Yua(g);k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);K=h+56|0;H=h+4|0;k[h>>2]=27524;k[K>>2]=27544;B=0;wa(508,h+56|0,H|0);I=B;B=0;if(I&1){I=Rb()|0;N=Q;O=I;vva(K);Qb(O|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[K>>2]=27488;B=0;va(448,H|0);I=B;B=0;do if(I&1){J=Rb()|0;P=Q;R=J}else{k[H>>2]=27560;J=h+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,H|0,c|0);S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(c);Yua(J);Ava(H);P=T;R=S;break}Yua(c);B=0;S=Ia(40,h|0,83531,16)|0;T=B;B=0;do if(!(T&1)){B=0;U=Xa(242,S|0,k[a+12>>2]|0)|0;V=B;B=0;if(V&1){W=50;break}B=0;V=Ia(40,U|0,83548,1)|0;U=B;B=0;if(U&1){W=50;break}B=0;U=Xa(242,V|0,k[a+16>>2]|0)|0;V=B;B=0;if(V&1){W=50;break}B=0;Ia(40,U|0,149177,1)|0;U=B;B=0;if(U&1){W=50;break}B=0;wa(510,i|0,H|0);U=B;B=0;if(U&1){W=50;break}B=0;ya(424,i|0)|0;U=B;B=0;if(U&1){U=Rb()|0;V=Q;Yua(i);X=V;Y=U;break}else{Yua(i);k[h>>2]=27468;k[K>>2]=27488;k[H>>2]=27560;Yua(J);Ava(H);vva(K);r=b;return}}else W=50;while(0);if((W|0)==50){S=Rb()|0;X=Q;Y=S}k[h>>2]=27468;k[K>>2]=27488;k[H>>2]=27560;Yua(J);Ava(H);vva(K);Z=X;_=Y;Qb(_|0)}while(0);N=P;O=R;vva(K);Qb(O|0)}else W=47;while(0);if((W|0)==47){F=Rb()|0;L=Q;M=F}k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);Z=L;_=M;Qb(_|0)}while(0);z=D;A=E;vva(u);Qb(A|0)}else W=44;while(0);if((W|0)==44){t=Rb()|0;w=Q;x=t}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Z=w;_=x;Qb(_|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}function GQ(a){a=a|0;return 693}function HQ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Qqa(20)|0;c=k[a+4>>2]|0;d=k[a+8>>2]|0;e=k[a+12>>2]|0;f=k[a+16>>2]|0;k[b>>2]=34904;k[b+4>>2]=c;k[b+12>>2]=e;k[b+16>>2]=f;c=ma(f,e)|0;B=0;e=ya(422,(c>>>0>1073741823?-1:c<<2)|0)|0;f=B;B=0;if(f&1){g=Rb()|0;h=Q;Sqa(b);Qb(g|0)}k[b+8>>2]=e;if(!d){B=0;ib(283,142353,85118,137,142345);B=0;g=Rb()|0;h=Q;Sqa(b);Qb(g|0)}if(!c)return b|0;TEa(e|0,d|0,c<<2|0)|0;return b|0}function IQ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=181;i[d+1>>0]=2;i[d+2>>0]=0;i[d+3>>0]=0;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;d=a+12|0;n=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+16|0;p=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[n>>0]=p;i[n+1>>0]=p>>8;i[n+2>>0]=p>>16;i[n+3>>0]=p>>24;p=(k[b>>2]|0)+4|0;k[b>>2]=p;n=a+8|0;q=(k[n>>2]|0)==0;i[p>>0]=q&1;p=(k[b>>2]|0)+1|0;k[b>>2]=p;if(q){r=e;return}TEa(p|0,k[n>>2]|0,ma(k[d>>2]<<2,k[o>>2]|0)|0)|0;n=ma(k[d>>2]<<2,k[o>>2]|0)|0;k[b>>2]=(k[b>>2]|0)+n;r=e;return}case 2:{n=(k[a+8>>2]|0)==0;o=(k[c>>2]|0)+17|0;k[c>>2]=o;if(n){r=e;return}n=(ma(k[a+12>>2]<<2,k[a+16>>2]|0)|0)+o|0;k[c>>2]=n;r=e;return}case 1:{n=(k[b>>2]|0)+4|0;k[b>>2]=n;c=a+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[c>>0]=o;i[c+1>>0]=o>>8;i[c+2>>0]=o>>16;i[c+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;c=a+12|0;n=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[c>>0]=n;i[c+1>>0]=n>>8;i[c+2>>0]=n>>16;i[c+3>>0]=n>>24;c=(k[b>>2]|0)+4|0;k[b>>2]=c;o=a+16|0;d=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[o>>0]=d;i[o+1>>0]=d>>8;i[o+2>>0]=d>>16;i[o+3>>0]=d>>24;o=k[b>>2]|0;c=o+4|0;k[b>>2]=c;p=i[c>>0]|0;k[b>>2]=o+5;if(p&1){r=e;return}p=ma(d,n)|0;o=Rqa(p>>>0>1073741823?-1:p<<2)|0;k[a+8>>2]=o;a=k[b>>2]|0;p=ma(n<<2,d)|0;TEa(o|0,a|0,p|0)|0;k[b>>2]=a+p;r=e;return}default:{e=g+56|0;p=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,p|0);a=B;B=0;if(a&1){a=Rb()|0;s=Q;t=a;vva(e);Qb(t|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,p|0);a=B;B=0;do if(a&1){b=Rb()|0;u=Q;v=b}else{k[p>>2]=27560;b=g+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,p|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;d=Q;Yua(f);Yua(b);Ava(p);u=d;v=o;break}Yua(f);B=0;o=Ia(40,g|0,143951,43)|0;d=B;B=0;if(!(d&1)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,h|0,82533,77);d=B;B=0;do if(!(d&1)){B=0;eb(502,j|0,149525,8);n=B;B=0;if(n&1){n=Rb()|0;c=Q;Yua(h);w=c;x=n;break}B=0;wa(510,m|0,p|0);n=B;B=0;if(n&1){n=Rb()|0;y=Q;z=n;A=1}else{B=0;ua(163,o|0,h|0,j|0,77,m|0);n=B;B=0;if(n&1)C=1;else{B=0;eb(503,o|0,1240,229);B=0;C=0}n=Rb()|0;c=Q;Yua(m);y=c;z=n;A=C}Yua(j);Yua(h);if(A){w=y;x=z}else{D=y;E=z;k[g>>2]=27468;k[e>>2]=27488;k[p>>2]=27560;Yua(b);Ava(p);vva(e);Qb(E|0)}}else{n=Rb()|0;w=Q;x=n}while(0);zb(o|0);D=w;E=x;k[g>>2]=27468;k[e>>2]=27488;k[p>>2]=27560;Yua(b);Ava(p);vva(e);Qb(E|0)}d=Rb()|0;D=Q;E=d;k[g>>2]=27468;k[e>>2]=27488;k[p>>2]=27560;Yua(b);Ava(p);vva(e);Qb(E|0)}while(0);s=u;t=v;vva(e);Qb(t|0)}}}function JQ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=k[a+12>>2]|0;f=a+16|0;g=ma(k[f>>2]|0,e)|0;h=Rqa(g>>>0>1073741823?-1:g<<2)|0;i=k[a+8>>2]|0;if(!i)yb(142353,85118,137,142345);if(g){a=0;do{k[h+(a<<2)>>2]=k[i+(a<<2)>>2];a=a+1|0}while((a|0)!=(g|0))}if(c)k[c>>2]=e;if(!d){k[b>>2]=h;return}k[d>>2]=k[f>>2];k[b>>2]=h;return}function KQ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=a+8|0;f=k[e>>2]|0;if(f)Tqa(f);f=ma(d,c)|0;g=Rqa(f>>>0>1073741823?-1:f<<2)|0;k[e>>2]=g;if(!b)yb(142353,85118,137,142345);if(f)TEa(g|0,b|0,f<<2|0)|0;k[a+12>>2]=c;k[a+16>>2]=d;return}function LQ(a){a=a|0;return k[a+4>>2]|0}function MQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86577,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,44,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function NQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85796,25)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,45,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function OQ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85760,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,46,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function PQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,48,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function QQ(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;b=r;r=r+192|0;d=b+176|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;b=e+56|0;i=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(b);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,86504,44)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,82611,87);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,49,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}while(0);l=o;m=p;vva(b);Qb(m|0)}function RQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86480,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,50,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function SQ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86450,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,51,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function TQ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,52,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function UQ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85695,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,53,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function VQ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85695,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,54,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function WQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86364,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,55,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function XQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86343,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,56,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function YQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85673,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,57,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function ZQ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85648,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,58,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function _Q(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85625,22)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,60,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function $Q(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85601,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,61,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function aR(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;c=e+56|0;i=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(c);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,85579,21)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,82611,87);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86106,8);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,62,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}while(0);l=o;m=p;vva(c);Qb(m|0)}function bR(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86273,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,63,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function cR(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86245,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,64,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function dR(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85543,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,65,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function eR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85543,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,66,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function fR(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85514,28)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,67,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function gR(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86169,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,69,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function hR(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86150,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,70,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function iR(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85465,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,71,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function jR(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85340,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,82611,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,72,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function kR(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function lR(a){a=a|0;k[a>>2]=35056;return}function mR(a,b,c){a=a|0;b=b|0;c=+c;k[a>>2]=35056;k[a+4>>2]=b;p[a+8>>3]=c;return}function nR(a){a=a|0;k[a>>2]=35056;return}function oR(a){a=a|0;Sqa(a);return}function pR(a){a=a|0;qR(a);return}function qR(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0;b=r;r=r+176|0;c=b+152|0;d=b+16|0;e=b;f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;q=Q;Yua(c);Yua(l);Ava(g);m=q;n=o;break}Yua(c);k[d+(k[(k[d>>2]|0)+-12>>2]|0)+12>>2]=22;B=0;o=Ia(40,d|0,82713,15)|0;q=B;B=0;if((((((!(q&1)?(k[o+(k[(k[o>>2]|0)+-12>>2]|0)+12>>2]=35,q=o+(k[(k[o>>2]|0)+-12>>2]|0)+4|0,k[q>>2]=k[q>>2]&-177|32,B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,o|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,149175,1)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Sa(1,s|0,+(+p[a+8>>3]))|0,s=B,B=0,!(s&1)):0)?(B=0,Ia(40,t|0,149177,1)|0,t=B,B=0,!(t&1)):0)?(B=0,wa(510,e|0,g|0),t=B,B=0,!(t&1)):0){B=0;ya(424,e|0)|0;t=B;B=0;if(!(t&1)){Yua(e);k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);r=b;return}t=Rb()|0;s=Q;Yua(e);u=s;v=t;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(v|0)}t=Rb()|0;u=Q;v=t;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(v|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function rR(a){a=a|0;return 566}function sR(a){a=a|0;var b=0,c=0,d=0.0;b=Qqa(16)|0;c=k[a+4>>2]|0;d=+p[a+8>>3];k[b>>2]=35056;k[b+4>>2]=c;p[b+8>>3]=d;return b|0}function tR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=54;i[d+1>>0]=2;i[d+2>>0]=0;i[d+3>>0]=0;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;d=a+8|0;n=d;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d+4|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o;o=n;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=n+4|0;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;k[b>>2]=(k[b>>2]|0)+8;r=e;return}case 2:{k[c>>2]=(k[c>>2]|0)+16;r=e;return}case 1:{c=(k[b>>2]|0)+4|0;k[b>>2]=c;d=a+4|0;q=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[d>>0]=q;i[d+1>>0]=q>>8;i[d+2>>0]=q>>16;i[d+3>>0]=q>>24;q=(k[b>>2]|0)+4|0;k[b>>2]=q;d=a+8|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];k[b>>2]=(k[b>>2]|0)+8;r=e;return}default:{e=g+56|0;b=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,b|0);d=B;B=0;if(d&1){d=Rb()|0;s=Q;u=d;vva(e);Qb(u|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,b|0);d=B;B=0;do if(d&1){q=Rb()|0;v=Q;w=q}else{k[b>>2]=27560;q=g+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);a=B;B=0;if(a&1){a=Rb()|0;c=Q;Yua(f);Yua(q);Ava(b);v=c;w=a;break}Yua(f);B=0;a=Ia(40,g|0,143951,43)|0;c=B;B=0;if(!(c&1)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,h|0,82729,77);c=B;B=0;do if(!(c&1)){B=0;eb(502,j|0,149525,8);n=B;B=0;if(n&1){n=Rb()|0;o=Q;Yua(h);x=o;y=n;break}B=0;wa(510,m|0,b|0);n=B;B=0;if(n&1){n=Rb()|0;z=n;A=Q;C=1}else{B=0;ua(163,a|0,h|0,j|0,56,m|0);n=B;B=0;if(n&1)D=1;else{B=0;eb(503,a|0,1240,229);B=0;D=0}n=Rb()|0;o=Q;Yua(m);z=n;A=o;C=D}Yua(j);Yua(h);if(C){x=A;y=z}else{E=A;F=z;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(q);Ava(b);vva(e);Qb(F|0)}}else{o=Rb()|0;x=Q;y=o}while(0);zb(a|0);E=x;F=y;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(q);Ava(b);vva(e);Qb(F|0)}c=Rb()|0;E=Q;F=c;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(q);Ava(b);vva(e);Qb(F|0)}while(0);s=v;u=w;vva(e);Qb(u|0)}}}function uR(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,82807,21)|0;q=B;B=0;if((((((!(q&1)?(q=a+4|0,B=0,s=Xa(242,p|0,k[q>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,s|0,144166,2)|0,s=B,B=0,!(s&1)):0)?(B=0,s=ya(427,k[q>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(s)|0,B=0,t=Ia(40,p|0,s|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,t|0,82829,26)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,e|0,82729,77);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;p=Q;Yua(e);u=p;v=s;break}B=0;wa(510,g|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,q|0,e|0,f|0,66,g|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,q|0,1240,229);B=0;z=0}s=Rb()|0;p=Q;Yua(g);w=p;x=s;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(q|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function vR(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,82807,21)|0;q=B;B=0;if((((((!(q&1)?(q=a+4|0,B=0,s=Xa(242,p|0,k[q>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,s|0,144166,2)|0,s=B,B=0,!(s&1)):0)?(B=0,s=ya(427,k[q>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(s)|0,B=0,t=Ia(40,p|0,s|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,t|0,82856,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,e|0,82729,77);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;p=Q;Yua(e);u=p;v=s;break}B=0;wa(510,g|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,q|0,e|0,f|0,70,g|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,q|0,1240,229);B=0;z=0}s=Rb()|0;p=Q;Yua(g);w=p;x=s;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(q|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function wR(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,82807,21)|0;q=B;B=0;if((((((!(q&1)?(q=a+4|0,B=0,s=Xa(242,p|0,k[q>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,s|0,144166,2)|0,s=B,B=0,!(s&1)):0)?(B=0,s=ya(427,k[q>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(s)|0,B=0,t=Ia(40,p|0,s|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,t|0,82880,36)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,e|0,82729,77);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;p=Q;Yua(e);u=p;v=s;break}B=0;wa(510,g|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,q|0,e|0,f|0,74,g|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,q|0,1240,229);B=0;z=0}s=Rb()|0;p=Q;Yua(g);w=p;x=s;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(q|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function xR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,82807,21)|0;q=B;B=0;if((((((!(q&1)?(q=a+4|0,B=0,s=Xa(242,p|0,k[q>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,s|0,144166,2)|0,s=B,B=0,!(s&1)):0)?(B=0,s=ya(427,k[q>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(s)|0,B=0,t=Ia(40,p|0,s|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,t|0,82880,36)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,e|0,82729,77);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;p=Q;Yua(e);u=p;v=s;break}B=0;wa(510,g|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,q|0,e|0,f|0,78,g|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,q|0,1240,229);B=0;z=0}s=Rb()|0;p=Q;Yua(g);w=p;x=s;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(q|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function yR(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,82807,21)|0;q=B;B=0;if((((((!(q&1)?(q=a+4|0,B=0,s=Xa(242,p|0,k[q>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,s|0,144166,2)|0,s=B,B=0,!(s&1)):0)?(B=0,s=ya(427,k[q>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(s)|0,B=0,t=Ia(40,p|0,s|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,t|0,82917,38)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,e|0,82729,77);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;p=Q;Yua(e);u=p;v=s;break}B=0;wa(510,g|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,q|0,e|0,f|0,82,g|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,q|0,1240,229);B=0;z=0}s=Rb()|0;p=Q;Yua(g);w=p;x=s;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(q|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function zR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,82807,21)|0;q=B;B=0;if((((((!(q&1)?(q=a+4|0,B=0,s=Xa(242,p|0,k[q>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,s|0,144166,2)|0,s=B,B=0,!(s&1)):0)?(B=0,s=ya(427,k[q>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(s)|0,B=0,t=Ia(40,p|0,s|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,t|0,82917,38)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,e|0,82729,77);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;p=Q;Yua(e);u=p;v=s;break}B=0;wa(510,g|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,q|0,e|0,f|0,86,g|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,q|0,1240,229);B=0;z=0}s=Rb()|0;p=Q;Yua(g);w=p;x=s;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(q|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function AR(a){a=a|0;return k[a+4>>2]|0}function BR(a,b){a=a|0;b=b|0;p[b>>3]=+p[a+8>>3];return}
+function m5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;b=r;r=r+512|0;c=b+492|0;d=b+344|0;e=b+480|0;f=b+332|0;g=b+320|0;h=b+184|0;i=b+36|0;j=b+48|0;l=b+24|0;m=b+12|0;n=b;o=k[a>>2]|0;p=k[o+8>>2]|0;if(!p){q=d+56|0;s=d+4|0;k[d>>2]=27524;k[q>>2]=27544;B=0;wa(508,d+56|0,s|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;v=t;vva(q);Qb(v|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[q>>2]=27488;B=0;va(448,s|0);t=B;B=0;do if(t&1){w=Rb()|0;x=Q;y=w}else{k[s>>2]=27560;w=d+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,s|0,c|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(c);Yua(w);Ava(s);x=A;y=z;break}Yua(c);B=0;z=Ia(40,d|0,123992,7)|0;A=B;B=0;a:do if(!(A&1)?(B=0,Xa(239,z|0,0)|0,C=B,B=0,!(C&1)):0){C=Ab(20)|0;B=0;eb(502,e|0,121503,60);D=B;B=0;do if(!(D&1)){B=0;eb(502,f|0,124e3,18);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(e);G=E;H=F;break}B=0;wa(510,g|0,s|0);F=B;B=0;if(F&1){F=Rb()|0;I=F;J=Q;K=1}else{B=0;ua(163,C|0,e|0,f|0,2963,g|0);F=B;B=0;if(F&1)L=1;else{B=0;eb(503,C|0,1240,229);B=0;L=0}F=Rb()|0;E=Q;Yua(g);I=F;J=E;K=L}Yua(f);Yua(e);if(K){G=I;H=J}else{M=I;N=J;break a}}else{E=Rb()|0;G=E;H=Q}while(0);zb(C|0);M=G;N=H}else O=17;while(0);if((O|0)==17){z=Rb()|0;M=z;N=Q}k[d>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);P=M;R=N;Qb(P|0)}while(0);u=x;v=y;vva(q);Qb(v|0)}v=Rqa(p>>>0>1073741823?-1:p<<2)|0;if((p|0)>0)WEa(v|0,0,((p|0)>1?p:1)<<2|0)|0;p=a+52|0;if((k[p>>2]|0)>0){q=a+16|0;y=k[q>>2]|0;x=v+((Epa(o,k[y+12>>2]|0)|0)<<2)|0;k[x>>2]=y;y=k[p>>2]|0;if((y|0)>1){x=1;do{o=k[q>>2]|0;u=v+((Epa(k[a>>2]|0,k[o+(x*24|0)+12>>2]|0)|0)<<2)|0;k[u>>2]=o+(x*24|0);x=x+1|0;o=k[p>>2]|0}while((x|0)<(o|0));S=o}else S=y;if((S|0)>0){S=a+16|0;y=0;do{x=k[S>>2]|0;q=x+(y*24|0)|0;o=k[x+(y*24|0)+12>>2]|0;b:do if(!(ypa(k[o>>2]|0)|0)){x=o;u=0;do{N=k[x+56+(u<<2)>>2]|0;x=k[x+48+(u<<2)>>2]|0;M=v+((Epa(k[a>>2]|0,x)|0)<<2)|0;if(k[M>>2]|0)break b;u=1-N|0;N=v+((Epa(k[a>>2]|0,x)|0)<<2)|0;k[N>>2]=q}while((ypa(k[x+(u<<2)>>2]|0)|0)==0)}while(0);q=k[S>>2]|0;o=q+(y*24|0)|0;w=k[q+(y*24|0)+12>>2]|0;c:do if(!(ypa(k[w+4>>2]|0)|0)){q=w;u=1;do{x=k[q+56+(u<<2)>>2]|0;q=k[q+48+(u<<2)>>2]|0;C=v+((Epa(k[a>>2]|0,q)|0)<<2)|0;if(k[C>>2]|0)break c;u=1-x|0;x=v+((Epa(k[a>>2]|0,q)|0)<<2)|0;k[x>>2]=o}while((ypa(k[q+(u<<2)>>2]|0)|0)==0)}while(0);y=y+1|0}while((y|0)<(k[p>>2]|0))}}p=k[a>>2]|0;if((k[p+8>>2]|0)<=0){r=b;return v|0}y=h+56|0;S=h+4|0;o=h+56|0;w=h+128|0;u=h+132|0;q=h+36|0;x=h+52|0;C=p;p=0;N=0;while(1){if(!(k[v+(p<<2)>>2]|0)){M=N+1|0;if((M|0)<10){k[h>>2]=27524;k[y>>2]=27544;B=0;wa(508,o|0,S|0);s=B;B=0;if(s&1){O=44;break}k[w>>2]=0;k[u>>2]=-1;k[h>>2]=27468;k[y>>2]=27488;B=0;va(448,S|0);s=B;B=0;if(s&1){O=45;break}k[S>>2]=27560;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[x>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,S|0,c|0);s=B;B=0;if(s&1){O=43;break}Yua(c);B=0;s=Ia(40,h|0,124019,26)|0;d=B;B=0;if(d&1){O=54;break}B=0;d=Xa(253,s|0,p|0)|0;s=B;B=0;if(s&1){O=54;break}B=0;Ia(40,d|0,124046,21)|0;d=B;B=0;if(d&1){O=54;break}B=0;wa(510,i|0,S|0);d=B;B=0;if(d&1){O=54;break}B=0;ya(424,i|0)|0;d=B;B=0;if(d&1){O=55;break}Yua(i);k[h>>2]=27468;k[y>>2]=27488;k[S>>2]=27560;Yua(q);Ava(S);vva(y);T=k[a>>2]|0;U=M}else{T=C;U=M}}else{T=C;U=N}p=p+1|0;if((p|0)>=(k[T+8>>2]|0)){V=U;O=58;break}else{C=T;N=U}}if((O|0)==43){U=Rb()|0;N=Q;Yua(c);Yua(q);Ava(S);W=N;X=U;O=46}else if((O|0)==44){U=Rb()|0;Y=Q;Z=U;vva(y);Qb(Z|0)}else if((O|0)==45){U=Rb()|0;W=Q;X=U;O=46}else if((O|0)==54){U=Rb()|0;_=U;$=Q;O=56}else if((O|0)==55){U=Rb()|0;N=Q;Yua(i);_=U;$=N;O=56}else if((O|0)==58){if(!V){r=b;return v|0}v=j+56|0;b=j+4|0;k[j>>2]=27524;k[v>>2]=27544;B=0;wa(508,j+56|0,b|0);V=B;B=0;if(V&1){V=Rb()|0;aa=Q;ba=V;vva(v);Qb(ba|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[v>>2]=27488;B=0;va(448,b|0);V=B;B=0;do if(V&1){N=Rb()|0;ca=Q;da=N}else{k[b>>2]=27560;N=j+36|0;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);U=B;B=0;if(U&1){U=Rb()|0;i=Q;Yua(c);Yua(N);Ava(b);ca=i;da=U;break}Yua(c);B=0;U=Ia(40,j|0,124068,9)|0;i=B;B=0;d:do if(!(i&1)?(B=0,Xa(239,U|0,0)|0,T=B,B=0,!(T&1)):0){T=Ab(20)|0;B=0;eb(502,l|0,121503,60);C=B;B=0;do if(!(C&1)){B=0;eb(502,m|0,124e3,18);p=B;B=0;if(p&1){p=Rb()|0;a=Q;Yua(l);ea=a;fa=p;break}B=0;wa(510,n|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;ga=1;ha=p;ia=Q}else{B=0;ua(163,T|0,l|0,m|0,2996,n|0);p=B;B=0;if(p&1)ja=1;else{B=0;eb(503,T|0,1240,229);B=0;ja=0}p=Rb()|0;a=Q;Yua(n);ga=ja;ha=p;ia=a}Yua(m);Yua(l);if(ga){ea=ia;fa=ha}else{ka=ha;la=ia;break d}}else{a=Rb()|0;ea=Q;fa=a}while(0);zb(T|0);ka=fa;la=ea}else O=74;while(0);if((O|0)==74){U=Rb()|0;ka=U;la=Q}k[j>>2]=27468;k[v>>2]=27488;k[b>>2]=27560;Yua(N);Ava(b);vva(v);P=ka;R=la;Qb(P|0)}while(0);aa=ca;ba=da;vva(v);Qb(ba|0)}if((O|0)==46){Y=W;Z=X;vva(y);Qb(Z|0)}else if((O|0)==56){k[h>>2]=27468;k[y>>2]=27488;k[S>>2]=27560;Yua(q);Ava(S);vva(y);P=_;R=$;Qb(P|0)}return 0}function n5(a,b){a=a|0;b=b|0;return (b-(k[a+12>>2]|0)|0)/48|0|0}function o5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0;e=r;r=r+720|0;f=e+700|0;g=e+8|0;h=e+688|0;i=e+676|0;l=e+664|0;m=e+528|0;n=e+512|0;o=e+228|0;p=e+216|0;q=e+376|0;s=e+204|0;t=e+192|0;u=e+180|0;v=e+240|0;w=e+168|0;x=e+156|0;y=e+144|0;z=e;if(!d){A=k[a+20>>2]|0;if(!A){C=g+56|0;D=g+4|0;k[g>>2]=27524;k[C>>2]=27544;B=0;wa(508,g+56|0,D|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;G=E;vva(C);Qb(G|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[C>>2]=27488;B=0;va(448,D|0);E=B;B=0;do if(E&1){H=Rb()|0;I=Q;J=H}else{k[D>>2]=27560;H=g+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,D|0,f|0);K=B;B=0;if(K&1){K=Rb()|0;L=Q;Yua(f);Yua(H);Ava(D);I=L;J=K;break}Yua(f);B=0;K=Ia(40,g|0,124078,55)|0;L=B;B=0;a:do if(!(L&1)?(B=0,Xa(239,K|0,0)|0,M=B,B=0,!(M&1)):0){M=Ab(20)|0;B=0;eb(502,h|0,121503,60);N=B;B=0;do if(!(N&1)){B=0;eb(502,i|0,124134,21);O=B;B=0;if(O&1){O=Rb()|0;P=Q;Yua(h);R=P;S=O;break}B=0;wa(510,l|0,D|0);O=B;B=0;if(O&1){O=Rb()|0;T=Q;U=O;V=1}else{B=0;ua(163,M|0,h|0,i|0,4042,l|0);O=B;B=0;if(O&1)W=1;else{B=0;eb(503,M|0,1240,229);B=0;W=0}O=Rb()|0;P=Q;Yua(l);T=P;U=O;V=W}Yua(i);Yua(h);if(V){R=T;S=U}else{X=T;Y=U;break a}}else{O=Rb()|0;R=Q;S=O}while(0);zb(M|0);X=R;Y=S}else Z=19;while(0);if((Z|0)==19){K=Rb()|0;X=Q;Y=K}k[g>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(H);Ava(D);vva(C);_=X;$=Y;Qb($|0)}while(0);F=I;G=J;vva(C);Qb(G|0)}G=Ppa(A,k[b>>2]|0,k[b+4>>2]|0)|0;if(!G){A=m+56|0;C=m+4|0;k[m>>2]=27524;k[A>>2]=27544;B=0;wa(508,m+56|0,C|0);J=B;B=0;if(J&1){J=Rb()|0;aa=Q;ba=J;vva(A);Qb(ba|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[A>>2]=27488;B=0;va(448,C|0);J=B;B=0;do if(J&1){I=Rb()|0;ca=Q;da=I}else{k[C>>2]=27560;I=m+36|0;k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[I+12>>2]=0;k[m+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,C|0,f|0);F=B;B=0;if(F&1){F=Rb()|0;Y=Q;Yua(f);Yua(I);Ava(C);ca=Y;da=F;break}Yua(f);B=0;F=Ia(40,m|0,124156,79)|0;Y=B;B=0;b:do if(!(Y&1)?(B=0,Xa(239,F|0,0)|0,X=B,B=0,!(X&1)):0){X=Ab(20)|0;B=0;eb(502,n|0,121503,60);D=B;B=0;do if(!(D&1)){B=0;eb(502,o|0,124134,21);S=B;B=0;if(S&1){S=Rb()|0;R=Q;Yua(n);ea=S;fa=R;break}B=0;wa(510,p|0,C|0);R=B;B=0;if(R&1){R=Rb()|0;ga=1;ha=Q;ia=R}else{B=0;ua(163,X|0,n|0,o|0,4048,p|0);R=B;B=0;if(R&1)ja=1;else{B=0;eb(503,X|0,1240,229);B=0;ja=0}R=Rb()|0;S=Q;Yua(p);ga=ja;ha=S;ia=R}Yua(o);Yua(n);if(ga){ea=ia;fa=ha}else{ka=ha;la=ia;break b}}else{R=Rb()|0;ea=R;fa=Q}while(0);zb(X|0);ka=fa;la=ea}else Z=43;while(0);if((Z|0)==43){F=Rb()|0;ka=Q;la=F}k[m>>2]=27468;k[A>>2]=27488;k[C>>2]=27560;Yua(I);Ava(C);vva(A);_=ka;$=la;Qb($|0)}while(0);aa=ca;ba=da;vva(A);Qb(ba|0)}ba=k[G+64>>2]|0;if(!ba){A=q+56|0;da=q+4|0;k[q>>2]=27524;k[A>>2]=27544;B=0;wa(508,q+56|0,da|0);ca=B;B=0;if(ca&1){ca=Rb()|0;ma=Q;na=ca;vva(A);Qb(na|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[A>>2]=27488;B=0;va(448,da|0);ca=B;B=0;do if(ca&1){aa=Rb()|0;oa=Q;pa=aa}else{k[da>>2]=27560;aa=q+36|0;k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;k[aa+12>>2]=0;k[q+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,da|0,f|0);la=B;B=0;if(la&1){la=Rb()|0;ka=Q;Yua(f);Yua(aa);Ava(da);oa=ka;pa=la;break}Yua(f);B=0;la=Ia(40,q|0,124236,43)|0;ka=B;B=0;c:do if(((!(ka&1)?(B=0,C=Xa(253,la|0,((G-(k[a+8>>2]|0)|0)/72|0)+1|0)|0,m=B,B=0,!(m&1)):0)?(B=0,m=Ia(40,C|0,124280,10)|0,C=B,B=0,!(C&1)):0)?(B=0,Xa(239,m|0,0)|0,m=B,B=0,!(m&1)):0){m=Ab(20)|0;B=0;eb(502,s|0,121503,60);C=B;B=0;do if(!(C&1)){B=0;eb(502,t|0,124134,21);ea=B;B=0;if(ea&1){ea=Rb()|0;fa=Q;Yua(s);qa=fa;ra=ea;break}B=0;wa(510,u|0,da|0);ea=B;B=0;if(ea&1){ea=Rb()|0;sa=1;ta=Q;xa=ea}else{B=0;ua(163,m|0,s|0,t|0,4049,u|0);ea=B;B=0;if(ea&1)ya=1;else{B=0;eb(503,m|0,1240,229);B=0;ya=0}ea=Rb()|0;fa=Q;Yua(u);sa=ya;ta=fa;xa=ea}Yua(t);Yua(s);if(sa){qa=ta;ra=xa}else{za=ta;Aa=xa;break c}}else{ea=Rb()|0;qa=Q;ra=ea}while(0);zb(m|0);za=qa;Aa=ra}else Z=69;while(0);if((Z|0)==69){la=Rb()|0;za=Q;Aa=la}k[q>>2]=27468;k[A>>2]=27488;k[da>>2]=27560;Yua(aa);Ava(da);vva(A);_=za;$=Aa;Qb($|0)}while(0);ma=oa;na=pa;vva(A);Qb(na|0)}else Ba=ba}else Ba=d;d=Ba+32|0;ba=k[d>>2]|0;na=k[d+4>>2]|0;d=b+4|0;d:do if((na|0)<0){A=0;pa=Ba;while(1){if(k[pa>>2]|0)if(!(k[pa+4>>2]|0))Ca=1;else Ca=(k[pa+8>>2]|0)!=0?-1:2;else Ca=0;oa=j[52950+(Ca<<1)>>1]|0;ma=j[52956+(Ca<<1)>>1]|0;Aa=k[pa+(oa<<2)>>2]|0;za=k[pa+(ma<<2)>>2]|0;da=k[b>>2]|0;q=(k[Aa>>2]|0)-da|0;ra=k[d>>2]|0;qa=(k[Aa+4>>2]|0)-ra|0;Aa=(k[za>>2]|0)-da|0;da=(k[za+4>>2]|0)-ra|0;ra=bFa(da|0,((da|0)<0)<<31>>31|0,q|0,((q|0)<0)<<31>>31|0)|0;q=Q;da=bFa(qa|0,((qa|0)<0)<<31>>31|0,Aa|0,((Aa|0)<0)<<31>>31|0)|0;Aa=REa(ra|0,q|0,da|0,Q|0)|0;da=c+(Ca<<3)|0;q=da;k[q>>2]=Aa;k[q+4>>2]=Q;q=c+(ma<<3)|0;k[q>>2]=-1;k[q+4>>2]=-1;q=c+(oa<<3)|0;k[q>>2]=-1;k[q+4>>2]=-1;q=da;da=k[q+4>>2]|0;if((da|0)>0|(da|0)==0&(k[q>>2]|0)>>>0>0){Da=pa;break}q=Z4(pa,j[52944+(Ca<<1)>>1]|0)|0;da=A+1|0;oa=q+32|0;ma=k[oa+4>>2]|0;if((ma|0)<0){A=da;pa=q}else{Ea=ma;Fa=k[oa>>2]|0;Ga=da;Ha=q;break d}}r=e;return Da|0}else{Ea=na;Fa=ba;Ga=0;Ha=Ba}while(0);Ba=k[Ha+4>>2]|0;ba=k[Ba>>2]|0;na=k[Ba+4>>2]|0;Ba=k[Ha+8>>2]|0;Ca=k[Ba+4>>2]|0;if(!((Ea|0)>0|(Ea|0)==0&Fa>>>0>0)){Da=Ha;r=e;return Da|0}Fa=(k[d>>2]|0)-na|0;Ea=(k[Ba>>2]|0)-ba|0;Ba=bFa(Fa|0,((Fa|0)<0)<<31>>31|0,Ea|0,((Ea|0)<0)<<31>>31|0)|0;Ea=Q;Fa=Ca-na|0;na=(k[b>>2]|0)-ba|0;ba=bFa(Fa|0,((Fa|0)<0)<<31>>31|0,na|0,((na|0)<0)<<31>>31|0)|0;na=REa(Ba|0,Ea|0,ba|0,Q|0)|0;ba=c+8|0;Ea=c+16|0;Ba=f+4|0;Fa=g+4|0;Ca=na;na=Q;pa=Ha+32|0;A=Ga;Ga=0;aa=Ha;while(1){Ha=A;A=A+1|0;if((Ha|0)>9998){Ja=A;Z=85;break}Ha=j[52944+(Ga<<1)>>1]|0;q=c+(Ha<<3)|0;da=q;k[da>>2]=Ca;k[da+4>>2]=na;da=j[52950+(Ha<<1)>>1]|0;oa=j[52956+(Ha<<1)>>1]|0;ma=k[aa+(Ha<<2)>>2]|0;Ha=k[ma>>2]|0;Aa=k[ma+4>>2]|0;ma=k[aa+(da<<2)>>2]|0;ra=(k[ma>>2]|0)-Ha|0;qa=(k[ma+4>>2]|0)-Aa|0;ma=(k[b>>2]|0)-Ha|0;Ha=(k[d>>2]|0)-Aa|0;Aa=bFa(Ha|0,((Ha|0)<0)<<31>>31|0,ra|0,((ra|0)<0)<<31>>31|0)|0;ra=Q;Ha=bFa(qa|0,((qa|0)<0)<<31>>31|0,ma|0,((ma|0)<0)<<31>>31|0)|0;ma=REa(Aa|0,ra|0,Ha|0,Q|0)|0;Ha=Q;ra=c+(oa<<3)|0;k[ra>>2]=ma;k[ra+4>>2]=Ha;ra=pa;oa=q;q=REa(k[ra>>2]|0,k[ra+4>>2]|0,k[oa>>2]|0,k[oa+4>>2]|0)|0;oa=REa(q|0,Q|0,ma|0,Ha|0)|0;Ha=c+(da<<3)|0;k[Ha>>2]=oa;k[Ha+4>>2]=Q;if((k[c+4>>2]|0)<0){k[f>>2]=0;Ka=1}else Ka=0;if((k[ba+4>>2]|0)<0){k[f+(Ka<<2)>>2]=1;La=Ka+1|0}else La=Ka;if((k[Ea+4>>2]|0)>=0)if(!La){Ma=Ca;Na=na;Oa=Ga;Pa=aa;Z=124;break}else Qa=La;else{k[f+(La<<2)>>2]=2;Qa=La+1|0}Ha=(Qa|0)==2;if(Ha?(Esa()|0)<1073741823:0){oa=k[f>>2]|0;k[f>>2]=k[Ba>>2];k[Ba>>2]=oa}oa=k[f>>2]|0;M4(g,aa,oa);da=H4(g)|0;if(Ha&(k[da+4>>2]|0)<0){da=k[Ba>>2]|0;M4(z,aa,da);Ha=z;ma=k[Ha>>2]|0;q=k[Ha+4>>2]|0;Ha=g;k[Ha>>2]=ma;k[Ha+4>>2]=q;Ra=ma;Sa=q;Ta=da}else{Ra=k[g>>2]|0;Sa=k[Fa>>2]|0;Ta=oa}oa=c+(j[52944+(Ta<<1)>>1]<<3)|0;da=REa(0,0,k[oa>>2]|0,k[oa+4>>2]|0)|0;oa=Q;pa=Ra+32|0;q=pa;ma=k[q>>2]|0;Ha=k[q+4>>2]|0;if(!((Ha|0)>0|(Ha|0)==0&ma>>>0>0)){Ua=Ha;Va=da;Wa=oa;Ya=ma;Za=Sa;_a=Ra;break}else{Ca=da;na=oa;Ga=Sa;aa=Ra}}if((Z|0)==85){Ra=v+56|0;aa=v+4|0;k[v>>2]=27524;k[Ra>>2]=27544;B=0;wa(508,v+56|0,aa|0);Sa=B;B=0;if(Sa&1){Sa=Rb()|0;$a=Q;ab=Sa;vva(Ra);Qb(ab|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[Ra>>2]=27488;B=0;va(448,aa|0);Sa=B;B=0;do if(Sa&1){Ga=Rb()|0;bb=Q;cb=Ga}else{k[aa>>2]=27560;Ga=v+36|0;k[Ga>>2]=0;k[Ga+4>>2]=0;k[Ga+8>>2]=0;k[Ga+12>>2]=0;k[v+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,aa|0,f|0);na=B;B=0;if(na&1){na=Rb()|0;Ca=Q;Yua(f);Yua(Ga);Ava(aa);bb=Ca;cb=na;break}Yua(f);B=0;na=Ia(40,v|0,124291,49)|0;Ca=B;B=0;e:do if(((!(Ca&1)?(B=0,pa=Xa(242,na|0,Ja|0)|0,Ta=B,B=0,!(Ta&1)):0)?(B=0,Ta=Ia(40,pa|0,124341,2)|0,pa=B,B=0,!(pa&1)):0)?(B=0,Xa(239,Ta|0,0)|0,Ta=B,B=0,!(Ta&1)):0){Ta=Ab(20)|0;B=0;eb(502,w|0,121503,60);pa=B;B=0;do if(!(pa&1)){B=0;eb(502,x|0,124134,21);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;g=Q;Yua(w);db=g;fb=Fa;break}B=0;wa(510,y|0,aa|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;gb=1;hb=Q;ib=Fa}else{B=0;ua(163,Ta|0,w|0,x|0,4084,y|0);Fa=B;B=0;if(Fa&1)jb=1;else{B=0;eb(503,Ta|0,1240,229);B=0;jb=0}Fa=Rb()|0;g=Q;Yua(y);gb=jb;hb=g;ib=Fa}Yua(x);Yua(w);if(gb){db=hb;fb=ib}else{kb=hb;lb=ib;break e}}else{Fa=Rb()|0;db=Q;fb=Fa}while(0);zb(Ta|0);kb=db;lb=fb}else Z=102;while(0);if((Z|0)==102){na=Rb()|0;kb=Q;lb=na}k[v>>2]=27468;k[Ra>>2]=27488;k[aa>>2]=27560;Yua(Ga);Ava(aa);vva(Ra);_=kb;$=lb;Qb($|0)}while(0);$a=bb;ab=cb;vva(Ra);Qb(ab|0)}else if((Z|0)==124){Z=Pa+32|0;Ua=k[Z+4>>2]|0;Va=Ma;Wa=Na;Ya=k[Z>>2]|0;Za=Oa;_a=Pa}if((Ua|0)>=0){Da=_a;r=e;return Da|0}k[c>>2]=-1;k[c+4>>2]=-1;k[c+8>>2]=-1;k[c+12>>2]=-1;k[c+16>>2]=-1;k[c+20>>2]=-1;Ua=c+(j[52944+(Za<<1)>>1]<<3)|0;k[Ua>>2]=Va;k[Ua+4>>2]=Wa;Da=_a;r=e;return Da|0}function p5(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0;d=+p[b+104>>3];e=~~(d*(+p[c+8>>3]-+p[b+80>>3]));k[a>>2]=~~(d*(+p[c>>3]-+p[b+72>>3]));k[a+4>>2]=e;return}function q5(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0.0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0;f=r;r=r+576|0;g=f+560|0;h=f+400|0;i=f+548|0;j=f+536|0;l=f+248|0;n=f+264|0;o=f+100|0;q=f+88|0;s=f+76|0;t=f+72|0;u=f+68|0;v=f+112|0;w=f+56|0;x=f+44|0;y=f+32|0;z=f+24|0;A=f+16|0;C=f+8|0;D=f;if(k[c>>2]|0)if(k[c+4>>2]|0)if(!(k[c+8>>2]|0))E=2;else{F=h+56|0;G=h+4|0;k[h>>2]=27524;k[F>>2]=27544;B=0;wa(508,h+56|0,G|0);H=B;B=0;if(H&1){H=Rb()|0;I=Q;J=H;vva(F);Qb(J|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[F>>2]=27488;B=0;va(448,G|0);H=B;B=0;do if(H&1){K=Rb()|0;L=Q;M=K}else{k[G>>2]=27560;K=h+36|0;k[K>>2]=0;k[K+4>>2]=0;k[K+8>>2]=0;k[K+12>>2]=0;k[h+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,G|0,g|0);N=B;B=0;if(N&1){N=Rb()|0;O=Q;Yua(g);Yua(K);Ava(G);L=O;M=N;break}Yua(g);B=0;N=Ia(40,h|0,124344,3)|0;O=B;B=0;a:do if(!(O&1)?(B=0,Xa(239,N|0,0)|0,P=B,B=0,!(P&1)):0){P=Ab(20)|0;B=0;eb(502,i|0,121503,60);R=B;B=0;do if(!(R&1)){B=0;eb(502,j|0,124348,17);S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(i);U=S;V=T;break}B=0;wa(510,l|0,G|0);T=B;B=0;if(T&1){T=Rb()|0;W=T;X=Q;Y=1}else{B=0;ua(163,P|0,i|0,j|0,4842,l|0);T=B;B=0;if(T&1)Z=1;else{B=0;eb(503,P|0,1240,229);B=0;Z=0}T=Rb()|0;S=Q;Yua(l);W=T;X=S;Y=Z}Yua(j);Yua(i);if(Y){U=W;V=X}else{_=W;$=X;break a}}else{S=Rb()|0;U=S;V=Q}while(0);zb(P|0);_=U;$=V}else aa=19;while(0);if((aa|0)==19){N=Rb()|0;_=N;$=Q}k[h>>2]=27468;k[F>>2]=27488;k[G>>2]=27560;Yua(K);Ava(G);vva(F);ba=_;ca=$;Qb(ba|0)}while(0);I=L;J=M;vva(F);Qb(J|0)}else E=1;else E=0;J=m[52944+(E<<1)>>1]|0;k[a>>2]=c;c=a+4|0;k[c>>2]=J&3;J=k[b>>2]|0;E=k[b+4>>2]|0;b=D+4|0;F=C+4|0;M=A+4|0;L=z+4|0;I=1;$=0;while(1){k[t>>2]=0;_=G4(a,t)|0;k[u>>2]=1;G=G4(a,u)|0;h=_;_=k[h>>2]|0;V=k[h+4>>2]|0;h=G;G=k[h>>2]|0;U=k[h+4>>2]|0;h=G-_|0;X=U-V|0;W=J-_|0;_=E-V|0;V=((h|0)<0)<<31>>31;Y=bFa(W|0,((W|0)<0)<<31>>31|0,h|0,V|0)|0;W=Q;i=((X|0)<0)<<31>>31;j=bFa(_|0,((_|0)<0)<<31>>31|0,X|0,i|0)|0;_=QEa(j|0,Q|0,Y|0,W|0)|0;W=Q;if((W|0)<0){if(($|0)>0){aa=53;break}Y=m[52956+(k[c>>2]<<1)>>1]|0;k[D>>2]=k[a>>2];k[b>>2]=Y&3;F4(C,D);da=52956+(k[F>>2]<<1)|0;ea=C;fa=-1}else{Y=G-J|0;G=U-E|0;U=bFa(Y|0,((Y|0)<0)<<31>>31|0,h|0,V|0)|0;V=Q;h=bFa(G|0,((G|0)<0)<<31>>31|0,X|0,i|0)|0;i=QEa(h|0,Q|0,U|0,V|0)|0;V=Q;if((V|0)>=0){ga=_;ha=W;ia=i;ja=V;aa=57;break}if(($|0)<0){aa=56;break}V=m[52950+(k[c>>2]<<1)>>1]|0;k[A>>2]=k[a>>2];k[M>>2]=V&3;F4(z,A);da=52950+(k[L>>2]<<1)|0;ea=z;fa=1}V=(m[da>>1]|0)&3;i=a;k[i>>2]=k[ea>>2];k[i+4>>2]=V;if((I|0)>998){aa=28;break}else{I=I+1|0;$=fa}}if((aa|0)==28){fa=n+56|0;$=n+4|0;k[n>>2]=27524;k[fa>>2]=27544;B=0;wa(508,n+56|0,$|0);I=B;B=0;if(I&1){I=Rb()|0;ka=Q;la=I;vva(fa);Qb(la|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[fa>>2]=27488;B=0;va(448,$|0);I=B;B=0;do if(I&1){ea=Rb()|0;ma=Q;na=ea}else{k[$>>2]=27560;ea=n+36|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[n+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,$|0,g|0);a=B;B=0;if(a&1){a=Rb()|0;da=Q;Yua(g);Yua(ea);Ava($);ma=da;na=a;break}Yua(g);B=0;a=Ia(40,n|0,124366,9)|0;da=B;B=0;b:do if(!(da&1)?(B=0,Xa(239,a|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,o|0,121503,60);L=B;B=0;do if(!(L&1)){B=0;eb(502,q|0,124348,17);A=B;B=0;if(A&1){A=Rb()|0;M=Q;Yua(o);oa=M;pa=A;break}B=0;wa(510,s|0,$|0);A=B;B=0;if(A&1){A=Rb()|0;qa=1;ra=A;sa=Q}else{B=0;ua(163,z|0,o|0,q|0,4850,s|0);A=B;B=0;if(A&1)ta=1;else{B=0;eb(503,z|0,1240,229);B=0;ta=0}A=Rb()|0;M=Q;Yua(s);qa=ta;ra=A;sa=M}Yua(q);Yua(o);if(qa){oa=sa;pa=ra}else{xa=ra;ya=sa;break b}}else{M=Rb()|0;oa=Q;pa=M}while(0);zb(z|0);xa=pa;ya=oa}else aa=43;while(0);if((aa|0)==43){a=Rb()|0;xa=a;ya=Q}k[n>>2]=27468;k[fa>>2]=27488;k[$>>2]=27560;Yua(ea);Ava($);vva(fa);ba=xa;ca=ya;Qb(ba|0)}while(0);ka=ma;la=na;vva(fa);Qb(la|0)}else if((aa|0)==53){p[d>>3]=1.0;p[e>>3]=0.0;r=f;return}else if((aa|0)==56){p[d>>3]=0.0;p[e>>3]=1.0;r=f;return}else if((aa|0)==57){la=QEa(ga|0,ha|0,ia|0,ja|0)|0;fa=Q;za=+(la>>>0)+4294967296.0*+(fa|0);if(!((la|0)==0&(fa|0)==0)){p[d>>3]=(+(ia>>>0)+4294967296.0*+(ja|0))/za;p[e>>3]=(+(ga>>>0)+4294967296.0*+(ha|0))/za;r=f;return}f=v+56|0;ha=v+4|0;k[v>>2]=27524;k[f>>2]=27544;B=0;wa(508,v+56|0,ha|0);ga=B;B=0;if(ga&1){ga=Rb()|0;Aa=Q;Ba=ga;vva(f);Qb(Ba|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[f>>2]=27488;B=0;va(448,ha|0);ga=B;B=0;do if(ga&1){e=Rb()|0;Ca=Q;Da=e}else{k[ha>>2]=27560;e=v+36|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[v+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,ha|0,g|0);ja=B;B=0;if(ja&1){ja=Rb()|0;ia=Q;Yua(g);Yua(e);Ava(ha);Ca=ia;Da=ja;break}Yua(g);B=0;ja=Ia(40,v|0,124376,6)|0;ia=B;B=0;c:do if(!(ia&1)?(B=0,Xa(239,ja|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,w|0,121503,60);fa=B;B=0;do if(!(fa&1)){B=0;eb(502,x|0,124348,17);la=B;B=0;if(la&1){la=Rb()|0;na=Q;Yua(w);Ea=na;Fa=la;break}B=0;wa(510,y|0,ha|0);la=B;B=0;if(la&1){la=Rb()|0;Ga=1;Ha=la;Ja=Q}else{B=0;ua(163,d|0,w|0,x|0,4867,y|0);la=B;B=0;if(la&1)Ka=1;else{B=0;eb(503,d|0,1240,229);B=0;Ka=0}la=Rb()|0;na=Q;Yua(y);Ga=Ka;Ha=la;Ja=na}Yua(x);Yua(w);if(Ga){Ea=Ja;Fa=Ha}else{La=Ha;Ma=Ja;break c}}else{na=Rb()|0;Ea=Q;Fa=na}while(0);zb(d|0);La=Fa;Ma=Ea}else aa=73;while(0);if((aa|0)==73){ja=Rb()|0;La=ja;Ma=Q}k[v>>2]=27468;k[f>>2]=27488;k[ha>>2]=27560;Yua(e);Ava(ha);vva(f);ba=La;ca=Ma;Qb(ba|0)}while(0);Aa=Ca;Ba=Da;vva(f);Qb(Ba|0)}}function r5(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0;h=r;r=r+544|0;i=h+524|0;l=h;n=h+376|0;o=h+512|0;p=h+364|0;q=h+352|0;s=h+216|0;t=h+68|0;u=h+56|0;v=h+44|0;w=h+80|0;x=h+32|0;y=h+20|0;z=h+8|0;if(C4(c)|0){A=0;r=h;return A|0}F4(l,c);C=k[c>>2]|0;D=k[l>>2]|0;E=k[c+4>>2]|0;F=E&65535;G=l+4|0;H=k[G>>2]|0;I=H&65535;J=E<<16;E=J>>16;if(J>>>0>131072){J=n+56|0;K=n+4|0;k[n>>2]=27524;k[J>>2]=27544;B=0;wa(508,n+56|0,K|0);L=B;B=0;if(L&1){L=Rb()|0;M=Q;N=L;vva(J);Qb(N|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[J>>2]=27488;B=0;va(448,K|0);L=B;B=0;do if(L&1){O=Rb()|0;P=Q;R=O}else{k[K>>2]=27560;O=n+36|0;k[O>>2]=0;k[O+4>>2]=0;k[O+8>>2]=0;k[O+12>>2]=0;k[n+52>>2]=16;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;B=0;wa(509,K|0,i|0);S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(i);Yua(O);Ava(K);P=T;R=S;break}Yua(i);B=0;S=Ia(40,n|0,124383,13)|0;T=B;B=0;a:do if(!(T&1)?(B=0,Xa(239,S|0,0)|0,U=B,B=0,!(U&1)):0){U=Ab(20)|0;B=0;eb(502,o|0,121503,60);V=B;B=0;do if(!(V&1)){B=0;eb(502,p|0,124397,18);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Yua(o);Y=X;Z=W;break}B=0;wa(510,q|0,K|0);W=B;B=0;if(W&1){W=Rb()|0;_=Q;$=W;aa=1}else{B=0;ua(163,U|0,o|0,p|0,5008,q|0);W=B;B=0;if(W&1)ba=1;else{B=0;eb(503,U|0,1240,229);B=0;ba=0}W=Rb()|0;X=Q;Yua(q);_=X;$=W;aa=ba}Yua(p);Yua(o);if(aa){Y=_;Z=$}else{ca=$;da=_;break a}}else{W=Rb()|0;Y=Q;Z=W}while(0);zb(U|0);ca=Z;da=Y}else ea=18;while(0);if((ea|0)==18){S=Rb()|0;ca=S;da=Q}k[n>>2]=27468;k[J>>2]=27488;k[K>>2]=27560;Yua(O);Ava(K);vva(J);fa=ca;ga=da;Qb(fa|0)}while(0);M=P;N=R;vva(J);Qb(N|0)}N=k[C+(j[52932+(E<<2)>>1]<<2)>>2]|0;J=k[C+(j[52944+(E<<1)>>1]<<2)>>2]|0;E=k[D+(j[52944+(H<<16>>16<<1)>>1]<<2)>>2]|0;H=k[a>>2]|0;R=k[H>>2]|0;P=k[H+4>>2]|0;H=k[b>>2]|0;M=E;da=k[M>>2]|0;ca=k[M+4>>2]|0;M=(k[H>>2]|0)-R|0;K=(k[H+4>>2]|0)-P|0;H=da-R|0;R=ca-P|0;P=bFa(R|0,((R|0)<0)<<31>>31|0,M|0,((M|0)<0)<<31>>31|0)|0;M=Q;R=bFa(H|0,((H|0)<0)<<31>>31|0,K|0,((K|0)<0)<<31>>31|0)|0;K=REa(P|0,M|0,R|0,Q|0)|0;R=Q;M=C+32|0;P=k[M>>2]|0;H=k[M+4>>2]|0;M=D+32|0;n=k[M>>2]|0;Y=k[M+4>>2]|0;M=QEa(n|0,Y|0,P|0,H|0)|0;Z=Q;if((H|0)<0|(H|0)==0&P>>>0<1|((Y|0)<0|(Y|0)==0&n>>>0<1)){n=s+56|0;Y=s+4|0;k[s>>2]=27524;k[n>>2]=27544;B=0;wa(508,s+56|0,Y|0);P=B;B=0;if(P&1){P=Rb()|0;ha=Q;ia=P;vva(n);Qb(ia|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[n>>2]=27488;B=0;va(448,Y|0);P=B;B=0;do if(P&1){H=Rb()|0;ja=Q;ka=H}else{k[Y>>2]=27560;H=s+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[s+52>>2]=16;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;B=0;wa(509,Y|0,i|0);_=B;B=0;if(_&1){_=Rb()|0;$=Q;Yua(i);Yua(H);Ava(Y);ja=$;ka=_;break}Yua(i);B=0;_=Ia(40,s|0,124416,23)|0;$=B;B=0;b:do if(!($&1)?(B=0,Xa(239,_|0,0)|0,aa=B,B=0,!(aa&1)):0){aa=Ab(20)|0;B=0;eb(502,t|0,121503,60);o=B;B=0;do if(!(o&1)){B=0;eb(502,u|0,124397,18);p=B;B=0;if(p&1){p=Rb()|0;ba=Q;Yua(t);la=ba;ma=p;break}B=0;wa(510,v|0,Y|0);p=B;B=0;if(p&1){p=Rb()|0;na=1;oa=p;pa=Q}else{B=0;ua(163,aa|0,t|0,u|0,5019,v|0);p=B;B=0;if(p&1)qa=1;else{B=0;eb(503,aa|0,1240,229);B=0;qa=0}p=Rb()|0;ba=Q;Yua(v);na=qa;oa=p;pa=ba}Yua(u);Yua(t);if(na){la=pa;ma=oa}else{ra=oa;sa=pa;break b}}else{ba=Rb()|0;la=Q;ma=ba}while(0);zb(aa|0);ra=ma;sa=la}else ea=42;while(0);if((ea|0)==42){_=Rb()|0;ra=_;sa=Q}k[s>>2]=27468;k[n>>2]=27488;k[Y>>2]=27560;Yua(H);Ava(Y);vva(n);fa=ra;ga=sa;Qb(fa|0)}while(0);ha=ja;ia=ka;vva(n);Qb(ia|0)}ia=e;n=k[ia+4>>2]|0;ka=f;ja=k[ka>>2]|0;ha=k[ka+4>>2]|0;if(!((n|0)>-1|(n|0)==-1&(k[ia>>2]|0)>>>0>4294967295|((ha|0)<0|(ha|0)==0&ja>>>0<1))){ia=J;n=k[ia>>2]|0;ka=k[ia+4>>2]|0;ia=N;N=(k[ia>>2]|0)-n|0;sa=(k[ia+4>>2]|0)-ka|0;ia=da-n|0;n=ca-ka|0;ka=bFa(n|0,((n|0)<0)<<31>>31|0,N|0,((N|0)<0)<<31>>31|0)|0;N=Q;n=bFa(sa|0,((sa|0)<0)<<31>>31|0,ia|0,((ia|0)<0)<<31>>31|0)|0;ia=REa(ka|0,N|0,n|0,Q|0)|0;n=Q;N=REa(M|0,Z|0,ia|0,n|0)|0;Z=Q;do if(((n|0)>0|(n|0)==0&ia>>>0>0)&((Z|0)>0|(Z|0)==0&N>>>0>0)){M=d;ka=k[M+4>>2]|0;sa=ha|R;if(!((sa|0)>-1|(sa|0)==-1&(ja|K)>>>0>4294967295|((R|0)<0|(R|0)==0&K>>>0<1)&((ka|0)<0|(ka|0)==0&(k[M>>2]|0)>>>0<1))?(Esa()|0)>=1073741823:0){ta=0;break}k[g>>2]=(k[g>>2]|0)+1;s5(C,F,D,I,J,E,ia,n,N,Z);ta=1}else ta=0;while(0);do if((R|0)>=0){if((R|0)>0|(R|0)==0&K>>>0>0){Z=ta?d:f;N=k[Z+4>>2]|0;n=d;k[n>>2]=k[Z>>2];k[n+4>>2]=N;N=f;k[N>>2]=K;k[N+4>>2]=R;if(ta){xa=1;break}N=m[52950+(k[G>>2]<<1)>>1]&3;n=c;k[n>>2]=k[l>>2];k[n+4>>2]=N;xa=1;break}N=k[a>>2]|0;k[a>>2]=k[b>>2];k[b>>2]=N;N=e;n=k[N>>2]|0;Z=k[N+4>>2]|0;N=f;ia=k[N+4>>2]|0;E=e;k[E>>2]=k[N>>2];k[E+4>>2]=ia;ia=f;k[ia>>2]=n;k[ia+4>>2]=Z;Z=d;ia=k[Z>>2]|0;n=k[Z+4>>2]|0;Z=d;k[Z>>2]=K;k[Z+4>>2]=R;Z=c;E=k[Z>>2]|0;N=k[Z+4>>2]|0;Z=l;J=k[Z+4>>2]|0;I=c;k[I>>2]=k[Z>>2];k[I+4>>2]=J;J=l;k[J>>2]=E;k[J+4>>2]=N;J=d;I=REa(0,0,k[J>>2]|0,k[J+4>>2]|0)|0;J=d;k[J>>2]=I;k[J+4>>2]=Q;J=REa(0,0,ia|0,n|0)|0;I=Q;Z=e;D=REa(0,0,k[Z>>2]|0,k[Z+4>>2]|0)|0;Z=e;k[Z>>2]=D;k[Z+4>>2]=Q;Z=f;D=REa(0,0,k[Z>>2]|0,k[Z+4>>2]|0)|0;Z=f;k[Z>>2]=D;k[Z+4>>2]=Q;if(ta){if((n|0)>0|(n|0)==0&ia>>>0>0){ia=e;k[ia>>2]=J;k[ia+4>>2]=I;ia=m[52956+(N<<1)>>1]&3;Z=c;k[Z>>2]=E;k[Z+4>>2]=ia;xa=-1;break}if((n|0)<0){n=f;k[n>>2]=J;k[n+4>>2]=I;xa=-1;break}else{I=m[52950+(N<<1)>>1]&3;N=c;k[N>>2]=E;k[N+4>>2]=I;xa=0;break}}else xa=-1}else{I=ta?d:e;N=k[I+4>>2]|0;E=d;k[E>>2]=k[I>>2];k[E+4>>2]=N;N=e;k[N>>2]=K;k[N+4>>2]=R;N=m[52956+(k[G>>2]<<1)>>1]&3;E=c;k[E>>2]=k[l>>2];k[E+4>>2]=N;xa=1}while(0);A=xa;r=h;return A|0}A=w+56|0;h=w+4|0;k[w>>2]=27524;k[A>>2]=27544;B=0;wa(508,w+56|0,h|0);xa=B;B=0;if(xa&1){xa=Rb()|0;ya=Q;za=xa;vva(A);Qb(za|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[A>>2]=27488;B=0;va(448,h|0);xa=B;B=0;do if(xa&1){l=Rb()|0;Aa=Q;Ba=l}else{k[h>>2]=27560;l=w+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[w+52>>2]=16;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;B=0;wa(509,h|0,i|0);c=B;B=0;if(c&1){c=Rb()|0;G=Q;Yua(i);Yua(l);Ava(h);Aa=G;Ba=c;break}Yua(i);B=0;c=Ia(40,w|0,124440,24)|0;G=B;B=0;c:do if(!(G&1)?(B=0,Xa(239,c|0,0)|0,R=B,B=0,!(R&1)):0){R=Ab(20)|0;B=0;eb(502,x|0,121503,60);K=B;B=0;do if(!(K&1)){B=0;eb(502,y|0,124397,18);e=B;B=0;if(e&1){e=Rb()|0;d=Q;Yua(x);Ca=d;Da=e;break}B=0;wa(510,z|0,h|0);e=B;B=0;if(e&1){e=Rb()|0;Ea=1;Fa=e;Ga=Q}else{B=0;ua(163,R|0,x|0,y|0,5022,z|0);e=B;B=0;if(e&1)Ha=1;else{B=0;eb(503,R|0,1240,229);B=0;Ha=0}e=Rb()|0;d=Q;Yua(z);Ea=Ha;Fa=e;Ga=d}Yua(y);Yua(x);if(Ea){Ca=Ga;Da=Fa}else{Ja=Fa;Ka=Ga;break c}}else{d=Rb()|0;Ca=Q;Da=d}while(0);zb(R|0);Ja=Da;Ka=Ca}else ea=66;while(0);if((ea|0)==66){c=Rb()|0;Ja=c;Ka=Q}k[w>>2]=27468;k[A>>2]=27488;k[h>>2]=27560;Yua(l);Ava(h);vva(A);fa=Ja;ga=Ka;Qb(fa|0)}while(0);ya=Aa;za=Ba;vva(A);Qb(za|0);return 0}function s5(a,b,c,d,e,f,g,h,i,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0;m=r;r=r+48|0;n=m+40|0;o=m+32|0;p=m+24|0;q=m+16|0;s=m+8|0;t=m;u=b<<16>>16;b=j[52950+(u<<1)>>1]|0;v=d<<16>>16;d=j[52950+(v<<1)>>1]|0;w=j[52956+(u<<1)>>1]|0;x=j[52956+(v<<1)>>1]|0;k[a+(j[52932+(u<<2)+2>>1]<<2)>>2]=f;k[c+(j[52932+(v<<2)+2>>1]<<2)>>2]=e;M4(n,a,b);M4(o,c,d);k[p>>2]=a;k[p+4>>2]=b&3;k[q>>2]=c;k[q+4>>2]=d&3;k[s>>2]=a;k[s+4>>2]=u&3;k[t>>2]=c;k[t+4>>2]=v&3;I4(n,t,D4(n)|0);I4(o,s,D4(o)|0);Y4(a,w);Y4(c,x);I4(p,q,0);q=a+32|0;k[q>>2]=g;k[q+4>>2]=h;h=c+32|0;k[h>>2]=i;k[h+4>>2]=l;X4(a);X4(c);r=m;return}function t5(){ppa(38e3);return}function u5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;e=r;r=r+144|0;f=e+104|0;g=e+84|0;h=e+64|0;i=e+40|0;j=e+20|0;l=e;m=ma(d,d)|0;n=Rqa(m>>>0>536870911?-1:m<<3)|0;if(!b)yb(142353,124465,137,142345);if(m)TEa(n|0,b|0,m<<3|0)|0;Cqa(i,n,d,d);k[f>>2]=k[i>>2];k[f+4>>2]=k[i+4>>2];k[f+8>>2]=k[i+8>>2];k[f+12>>2]=k[i+12>>2];k[f+16>>2]=k[i+16>>2];k[f+20>>2]=k[i+20>>2];Jqa(j,c,d);k[g>>2]=k[j>>2];k[g+4>>2]=k[j+4>>2];k[g+8>>2]=k[j+8>>2];k[g+12>>2]=k[j+12>>2];k[g+16>>2]=k[j+16>>2];Jqa(l,a,d);k[h>>2]=k[l>>2];k[h+4>>2]=k[l+4>>2];k[h+8>>2]=k[l+8>>2];k[h+12>>2]=k[l+12>>2];k[h+16>>2]=k[l+16>>2];l=Dqa(d)|0;yqa(f,l,e+128|0)|0;zqa(f,l,g,h)|0;Tqa(n);Fqa(l);r=e;return}function v5(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;g=r;r=r+368|0;h=g+344|0;i=g+208|0;j=g+196|0;l=g+184|0;m=g+36|0;n=g+48|0;o=g+24|0;p=g+12|0;q=g;if((d|0)==(f|0)){if((c|0)==(d|0)){s=Rqa(d>>>0>536870911?-1:d<<3)|0;u5(s,b,e,d);k[a>>2]=s;r=g;return}g=n+56|0;s=n+4|0;k[n>>2]=27524;k[g>>2]=27544;B=0;wa(508,n+56|0,s|0);a=B;B=0;if(a&1){a=Rb()|0;t=Q;u=a;vva(g);Qb(u|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[g>>2]=27488;B=0;va(448,s|0);a=B;B=0;do if(a&1){e=Rb()|0;v=Q;w=e}else{k[s>>2]=27560;e=n+36|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[n+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,s|0,h|0);b=B;B=0;if(b&1){b=Rb()|0;x=Q;Yua(h);Yua(e);Ava(s);v=x;w=b;break}Yua(h);B=0;b=Ia(40,n|0,124711,34)|0;x=B;B=0;a:do if(!(x&1)?(B=0,Xa(239,b|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,o|0,124619,77);z=B;B=0;do if(!(z&1)){B=0;eb(502,p|0,124697,13);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(o);D=C;E=A;break}B=0;wa(510,q|0,s|0);A=B;B=0;if(A&1){A=Rb()|0;F=1;G=A;H=Q}else{B=0;ua(163,y|0,o|0,p|0,39,q|0);A=B;B=0;if(A&1)I=1;else{B=0;eb(503,y|0,1240,229);B=0;I=0}A=Rb()|0;C=Q;Yua(q);F=I;G=A;H=C}Yua(p);Yua(o);if(F){D=H;E=G}else{J=G;K=H;break a}}else{C=Rb()|0;D=Q;E=C}while(0);zb(y|0);J=E;K=D}else L=47;while(0);if((L|0)==47){b=Rb()|0;J=b;K=Q}k[n>>2]=27468;k[g>>2]=27488;k[s>>2]=27560;Yua(e);Ava(s);vva(g);M=J;N=K;Qb(M|0)}while(0);t=v;u=w;vva(g);Qb(u|0)}u=i+56|0;g=i+4|0;k[i>>2]=27524;k[u>>2]=27544;B=0;wa(508,i+56|0,g|0);w=B;B=0;if(w&1){w=Rb()|0;O=Q;P=w;vva(u);Qb(P|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[u>>2]=27488;B=0;va(448,g|0);w=B;B=0;do if(w&1){v=Rb()|0;R=Q;S=v}else{k[g>>2]=27560;v=i+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[i+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,g|0,h|0);t=B;B=0;if(t&1){t=Rb()|0;K=Q;Yua(h);Yua(v);Ava(g);R=K;S=t;break}Yua(h);B=0;t=Ia(40,i|0,124556,31)|0;K=B;B=0;b:do if(((((((!(K&1)?(B=0,J=Xa(242,t|0,f|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,J|0,124588,25)|0,J=B,B=0,!(J&1)):0)?(B=0,J=Xa(242,s|0,c|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,J|0,124614,1)|0,J=B,B=0,!(J&1)):0)?(B=0,J=Xa(242,s|0,d|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,J|0,124616,2)|0,J=B,B=0,!(J&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,j|0,124619,77);J=B;B=0;do if(!(J&1)){B=0;eb(502,l|0,124697,13);n=B;B=0;if(n&1){n=Rb()|0;D=Q;Yua(j);T=D;U=n;break}B=0;wa(510,m|0,g|0);n=B;B=0;if(n&1){n=Rb()|0;V=n;W=Q;X=1}else{B=0;ua(163,s|0,j|0,l|0,38,m|0);n=B;B=0;if(n&1)Y=1;else{B=0;eb(503,s|0,1240,229);B=0;Y=0}n=Rb()|0;D=Q;Yua(m);V=n;W=D;X=Y}Yua(l);Yua(j);if(X){T=W;U=V}else{Z=V;_=W;break b}}else{D=Rb()|0;T=Q;U=D}while(0);zb(s|0);Z=U;_=T}else L=23;while(0);if((L|0)==23){t=Rb()|0;Z=t;_=Q}k[i>>2]=27468;k[u>>2]=27488;k[g>>2]=27560;Yua(v);Ava(g);vva(u);M=Z;N=_;Qb(M|0)}while(0);O=R;P=S;vva(u);Qb(P|0)}function w5(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,124780,91);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,135838,17);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,9,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function x5(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,124780,91);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,135856,11);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,12,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function y5(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,124780,91);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,145111,11);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,15,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function z5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function A5(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,124780,91);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,136133,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,21,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function B5(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,124780,91);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,136199,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,24,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function C5(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,124780,91);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,29,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function D5(a,b){a=a|0;b=b|0;return 0}function E5(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,124780,91);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,36,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function F5(a,b){a=a|0;b=b|0;var c=0;a=Qqa(4)|0;k[a>>2]=38240;c=ed[k[38284>>2]&511](a,b)|0;Ec[k[(k[a>>2]|0)+4>>2]&1023](a);MN(c);return c|0}function G5(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,ba=0.0,ca=0.0,da=0.0,ea=0.0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0;a=r;r=r+448|0;c=a+432|0;d=a+428|0;e=a+280|0;f=a+416|0;g=a+264|0;h=a+248|0;i=a+260|0;j=a+48|0;l=a+40|0;m=a+32|0;n=a+24|0;o=a+16|0;q=a+8|0;s=a;t=a+244|0;u=a+240|0;v=a+104|0;w=a+88|0;x=a+76|0;y=a+64|0;cp(b,d,298);a:do switch(k[d>>2]|0){case 300:{z=b;break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){z=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{A=0;r=a;return A|0}break}default:{C=e+56|0;D=e+4|0;k[e>>2]=27524;k[C>>2]=27544;B=0;wa(508,e+56|0,D|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;G=E;vva(C);Qb(G|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[C>>2]=27488;B=0;va(448,D|0);E=B;B=0;do if(E&1){H=Rb()|0;I=Q;J=H}else{k[D>>2]=27560;H=e+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,D|0,c|0);K=B;B=0;if(K&1){K=Rb()|0;L=Q;Yua(c);Yua(H);Ava(D);I=L;J=K;break}Yua(c);B=0;K=Ia(40,e|0,144639,5)|0;L=B;B=0;b:do if((((!(L&1)?(B=0,M=ya(427,k[d>>2]|0)|0,N=B,B=0,!(N&1)):0)?(N=Lta(M)|0,B=0,O=Ia(40,K|0,M|0,N|0)|0,N=B,B=0,!(N&1)):0)?(B=0,N=Ia(40,O|0,146481,18)|0,O=B,B=0,!(O&1)):0)?(B=0,Xa(239,N|0,0)|0,N=B,B=0,!(N&1)):0){N=Ab(20)|0;B=0;eb(502,f|0,124780,91);O=B;B=0;do if(!(O&1)){B=0;eb(502,g|0,144203,13);M=B;B=0;if(M&1){M=Rb()|0;P=Q;Yua(f);R=M;S=P;break}B=0;wa(510,h|0,D|0);P=B;B=0;if(P&1){P=Rb()|0;T=P;U=Q;V=1}else{B=0;ua(163,N|0,f|0,g|0,64,h|0);P=B;B=0;if(P&1)W=1;else{B=0;eb(503,N|0,1240,229);B=0;W=0}P=Rb()|0;M=Q;Yua(h);T=P;U=M;V=W}Yua(g);Yua(f);if(V){R=T;S=U}else{X=T;Y=U;break b}}else{M=Rb()|0;R=M;S=Q}while(0);zb(N|0);X=R;Y=S}else Z=22;while(0);if((Z|0)==22){K=Rb()|0;X=K;Y=Q}k[e>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(H);Ava(D);vva(C);_=X;$=Y;Qb(_|0)}while(0);F=I;G=J;vva(C);Qb(G|0)}}while(0);k[t>>2]=0;k[u>>2]=0;G=Hc[k[(k[z>>2]|0)+164>>2]&511](z)|0;J=iq(z,536)|0;I=Rqa(G>>>0>536870911?-1:G<<3)|0;F=G<<1;Y=Rqa(F>>>0>536870911?-1:F<<3)|0;Uo(z,u);cp(z,i,199);qp(z,t,0,180);F=Wo(z,353)|0;X=Wo(z,201)|0;e=Wo(z,179)|0;S=Wo(z,674)|0;R=Wo(z,677)|0;U=ed[k[(k[z>>2]|0)+308>>2]&511](z,2)|0;T=Hc[k[(k[U>>2]|0)+8>>2]&511](U)|0;c:do if((T|0)<(Hc[k[(k[U>>2]|0)+12>>2]&511](U)|0)){V=(G|0)>0;f=j+8|0;g=U+8|0;W=J+4|0;h=(G|0)<1;b=T;d:while(1){Fc[k[(k[U>>2]|0)+24>>2]&1023](U,b);rd[k[(k[z>>2]|0)+260>>2]&511](z,n,k[u>>2]|0,U);nd[k[(k[z>>2]|0)+336>>2]&1023](z,I,U);rd[k[(k[z>>2]|0)+340>>2]&511](z,Y,k[u>>2]|0,U);nd[k[(k[F>>2]|0)+48>>2]&1023](F,o,U);rd[k[(k[F>>2]|0)+60>>2]&511](F,j,k[u>>2]|0,U);nd[k[(k[X>>2]|0)+48>>2]&1023](X,q,U);e:do if((k[i>>2]|0)>0){D=0;while(1){rd[k[(k[e>>2]|0)+56>>2]&511](e,s,U,k[(k[t>>2]|0)+(D<<2)>>2]|0);f:do switch(k[(k[t>>2]|0)+(D<<2)>>2]|0){case 669:{if(V){E=k[W>>2]|0;K=0;do{L=E+(K<<3)|0;p[L>>3]=(+p[q>>3]-+p[o>>3])*+p[s>>3]*+p[n>>3]*+p[g>>3]*+p[I+(K<<3)>>3]+ +p[L>>3];K=K+1|0}while((K|0)!=(G|0))}break}case 689:{if(V){K=k[W>>2]|0;E=0;do{L=K+(E<<3)|0;p[L>>3]=+p[L>>3]-+p[s>>3]*+p[j>>3]*+p[Y+(E<<3)>>3]*+p[n>>3]*+p[g>>3];E=E+1|0}while((E|0)!=(G|0));if(V){E=k[W>>2]|0;K=0;do{L=E+(K<<3)|0;p[L>>3]=+p[L>>3]-+p[s>>3]*+p[f>>3]*+p[Y+(K+G<<3)>>3]*+p[n>>3]*+p[g>>3];K=K+1|0}while((K|0)!=(G|0))}}break}case 690:{nd[k[(k[S>>2]|0)+48>>2]&1023](S,l,U);nd[k[(k[R>>2]|0)+48>>2]&1023](R,m,U);ba=+p[l>>3];ca=+p[m>>3];da=+aa(+(ba*ba+ca*ca))+1.0e-09;ea=ba/da;p[l>>3]=ea;ba=ca/da;p[m>>3]=ba;if(V){K=k[W>>2]|0;da=ea;ea=ba;E=0;while(1){L=K+(E<<3)|0;p[L>>3]=+p[L>>3]-+p[g>>3]*(+p[n>>3]*(+p[s>>3]*(+p[j>>3]*da+ +p[f>>3]*ea)*(da*+p[Y+(E<<3)>>3]+ea*+p[Y+(E+G<<3)>>3])));L=E+1|0;if((L|0)==(G|0))break f;da=+p[l>>3];ea=+p[m>>3];E=L}}break}case 691:{nd[k[(k[S>>2]|0)+48>>2]&1023](S,l,U);nd[k[(k[R>>2]|0)+48>>2]&1023](R,m,U);ea=+p[l>>3];da=+p[m>>3];ba=+aa(+(ea*ea+da*da))+1.0e-09;ca=ea/ba;p[l>>3]=ca;ea=da/ba;p[m>>3]=ea;if(V){E=k[W>>2]|0;ba=ea;ea=ca;K=0;while(1){ca=-ba;L=E+(K<<3)|0;p[L>>3]=+p[L>>3]-+p[g>>3]*(+p[n>>3]*(+p[s>>3]*(+p[j>>3]*ca+ +p[f>>3]*ea)*(+p[Y+(K<<3)>>3]*ca+ea*+p[Y+(K+G<<3)>>3])));L=K+1|0;if((L|0)==(G|0))break f;ba=+p[m>>3];ea=+p[l>>3];K=L}}break}case 692:{ea=+p[o>>3];if(!(!(ea<0.0)|h)){K=k[W>>2]|0;ba=ea;E=0;while(1){L=K+(E<<3)|0;p[L>>3]=+p[s>>3]*-2.0*ba*+p[n>>3]*+p[g>>3]*+p[I+(E<<3)>>3]+ +p[L>>3];L=E+1|0;if((L|0)==(G|0))break f;ba=+p[o>>3];E=L}}break}default:{fa=D;break d}}while(0);D=D+1|0;if((D|0)>=(k[i>>2]|0))break e}}while(0);b=b+1|0;if((b|0)>=(Hc[k[(k[U>>2]|0)+12>>2]&511](U)|0))break c}b=v+56|0;g=v+4|0;k[v>>2]=27524;k[b>>2]=27544;B=0;wa(508,v+56|0,g|0);W=B;B=0;if(W&1){W=Rb()|0;ga=Q;ha=W;vva(b);Qb(ha|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);W=B;B=0;do if(W&1){h=Rb()|0;ia=Q;ja=h}else{k[g>>2]=27560;h=v+36|0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[v+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);f=B;B=0;if(f&1){f=Rb()|0;V=Q;Yua(c);Yua(h);Ava(g);ia=V;ja=f;break}Yua(c);B=0;f=Ia(40,v|0,125591,9)|0;V=B;B=0;g:do if((((!(V&1)?(B=0,C=ya(427,k[(k[t>>2]|0)+(fa<<2)>>2]|0)|0,H=B,B=0,!(H&1)):0)?(H=Lta(C)|0,B=0,D=Ia(40,f|0,C|0,H|0)|0,H=B,B=0,!(H&1)):0)?(B=0,H=Ia(40,D|0,146481,18)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,H|0,0)|0,H=B,B=0,!(H&1)):0){H=Ab(20)|0;B=0;eb(502,w|0,124780,91);D=B;B=0;do if(!(D&1)){B=0;eb(502,x|0,144203,13);C=B;B=0;if(C&1){C=Rb()|0;N=Q;Yua(w);ka=N;la=C;break}B=0;wa(510,y|0,g|0);C=B;B=0;if(C&1){C=Rb()|0;ma=1;na=C;oa=Q}else{B=0;ua(163,H|0,w|0,x|0,140,y|0);C=B;B=0;if(C&1)pa=1;else{B=0;eb(503,H|0,1240,229);B=0;pa=0}C=Rb()|0;N=Q;Yua(y);ma=pa;na=C;oa=N}Yua(x);Yua(w);if(ma){ka=oa;la=na}else{qa=na;ra=oa;break g}}else{N=Rb()|0;ka=Q;la=N}while(0);zb(H|0);qa=la;ra=ka}else Z=79;while(0);if((Z|0)==79){f=Rb()|0;qa=f;ra=Q}k[v>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(h);Ava(g);vva(b);_=qa;$=ra;Qb(_|0)}while(0);ga=ia;ha=ja;vva(b);Qb(ha|0)}while(0);ha=k[t>>2]|0;if(ha)Tqa(ha);k[t>>2]=0;t=k[u>>2]|0;if(t)Tqa(t);k[u>>2]=0;Tqa(I);Tqa(Y);if((k[d>>2]|0)!=300?(ap(z),(z|0)!=0):0)Ec[k[(k[z>>2]|0)+4>>2]&1023](z);if(U)Ec[k[(k[U>>2]|0)+4>>2]&1023](U);A=J;r=a;return A|0}function H5(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,124780,91);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,155,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function I5(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0;a=r;r=r+544|0;f=a+524|0;g=a+520|0;h=a+516|0;i=a+368|0;j=a+504|0;l=a+356|0;m=a+344|0;n=a+208|0;o=a+60|0;p=a+48|0;q=a+36|0;s=a+72|0;t=a+24|0;u=a+12|0;v=a;if(!($p(c)|0)){r=a;return}k[g>>2]=0;cp(c,h,199);qp(c,g,0,180);switch(d|0){case 36:case 674:case 677:break;default:{w=i+56|0;x=i+4|0;k[i>>2]=27524;k[w>>2]=27544;B=0;wa(508,i+56|0,x|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(w);Qb(A|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[w>>2]=27488;B=0;va(448,x|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[x>>2]=27560;C=i+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[i+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,x|0,f|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(f);Yua(C);Ava(x);D=G;E=F;break}Yua(f);B=0;F=Ia(40,i|0,125582,8)|0;G=B;B=0;a:do if((((!(G&1)?(B=0,H=ya(427,d|0)|0,I=B,B=0,!(I&1)):0)?(I=Lta(H)|0,B=0,J=Ia(40,F|0,H|0,I|0)|0,I=B,B=0,!(I&1)):0)?(B=0,I=Ia(40,J|0,144645,14)|0,J=B,B=0,!(J&1)):0)?(B=0,Xa(239,I|0,0)|0,I=B,B=0,!(I&1)):0){I=Ab(20)|0;B=0;eb(502,j|0,124780,91);J=B;B=0;do if(!(J&1)){B=0;eb(502,l|0,138252,9);H=B;B=0;if(H&1){H=Rb()|0;K=Q;Yua(j);L=K;M=H;break}B=0;wa(510,m|0,x|0);H=B;B=0;if(H&1){H=Rb()|0;N=Q;O=H;P=1}else{B=0;ua(163,I|0,j|0,l|0,179,m|0);H=B;B=0;if(H&1)R=1;else{B=0;eb(503,I|0,1240,229);B=0;R=0}H=Rb()|0;K=Q;Yua(m);N=K;O=H;P=R}Yua(l);Yua(j);if(P){L=N;M=O}else{S=N;T=O;break a}}else{H=Rb()|0;L=Q;M=H}while(0);zb(I|0);S=L;T=M}else U=23;while(0);if((U|0)==23){F=Rb()|0;S=Q;T=F}k[i>>2]=27468;k[w>>2]=27488;k[x>>2]=27560;Yua(C);Ava(x);vva(w);V=S;W=T;Qb(W|0)}while(0);z=D;A=E;vva(w);Qb(A|0)}}A=k[h>>2]|0;b:do if((A|0)>0){h=k[g>>2]|0;w=0;c:while(1){switch(k[h+(w<<2)>>2]|0){case 692:case 691:case 690:case 689:case 669:break;default:{X=w;break c}}w=w+1|0;if((w|0)>=(A|0))break b}w=n+56|0;h=n+4|0;k[n>>2]=27524;k[w>>2]=27544;B=0;wa(508,n+56|0,h|0);C=B;B=0;if(C&1){C=Rb()|0;Y=Q;Z=C;vva(w);Qb(Z|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[w>>2]=27488;B=0;va(448,h|0);C=B;B=0;do if(C&1){E=Rb()|0;_=Q;$=E}else{k[h>>2]=27560;E=n+36|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,h|0,f|0);D=B;B=0;if(D&1){D=Rb()|0;z=Q;Yua(f);Yua(E);Ava(h);_=z;$=D;break}Yua(f);B=0;D=Ia(40,n|0,125591,9)|0;z=B;B=0;d:do if((((!(z&1)?(B=0,T=ya(427,k[(k[g>>2]|0)+(X<<2)>>2]|0)|0,S=B,B=0,!(S&1)):0)?(S=Lta(T)|0,B=0,x=Ia(40,D|0,T|0,S|0)|0,S=B,B=0,!(S&1)):0)?(B=0,S=Ia(40,x|0,146481,18)|0,x=B,B=0,!(x&1)):0)?(B=0,Xa(239,S|0,0)|0,S=B,B=0,!(S&1)):0){S=Ab(20)|0;B=0;eb(502,o|0,124780,91);x=B;B=0;do if(!(x&1)){B=0;eb(502,p|0,138252,9);T=B;B=0;if(T&1){T=Rb()|0;i=Q;Yua(o);aa=T;ba=i;break}B=0;wa(510,q|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;ca=1;da=Q;ea=i}else{B=0;ua(163,S|0,o|0,p|0,189,q|0);i=B;B=0;if(i&1)fa=1;else{B=0;eb(503,S|0,1240,229);B=0;fa=0}i=Rb()|0;T=Q;Yua(q);ca=fa;da=T;ea=i}Yua(p);Yua(o);if(ca){aa=ea;ba=da}else{ga=da;ha=ea;break d}}else{i=Rb()|0;aa=i;ba=Q}while(0);zb(S|0);ga=ba;ha=aa}else U=50;while(0);if((U|0)==50){D=Rb()|0;ga=Q;ha=D}k[n>>2]=27468;k[w>>2]=27488;k[h>>2]=27560;Yua(E);Ava(h);vva(w);V=ga;W=ha;Qb(W|0)}while(0);Y=_;Z=$;vva(w);Qb(Z|0)}while(0);switch(d|0){case 36:{J5(0,c,b,e);break}case 674:{K5(0,c,b,e);break}case 677:{L5(0,c,b,e);break}default:{e=s+56|0;b=s+4|0;k[s>>2]=27524;k[e>>2]=27544;B=0;wa(508,s+56|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;ia=Q;ja=c;vva(e);Qb(ja|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[e>>2]=27488;B=0;va(448,b|0);c=B;B=0;do if(c&1){Z=Rb()|0;ka=Q;la=Z}else{k[b>>2]=27560;Z=s+36|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[s+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);$=B;B=0;if($&1){$=Rb()|0;_=Q;Yua(f);Yua(Z);Ava(b);ka=_;la=$;break}Yua(f);B=0;$=Ia(40,s|0,125227,32)|0;_=B;B=0;e:do if(((!(_&1)?(B=0,Y=ya(427,d|0)|0,ha=B,B=0,!(ha&1)):0)?(ha=Lta(Y)|0,B=0,ga=Ia(40,$|0,Y|0,ha|0)|0,ha=B,B=0,!(ha&1)):0)?(B=0,Xa(239,ga|0,0)|0,ga=B,B=0,!(ga&1)):0){ga=Ab(20)|0;B=0;eb(502,t|0,124780,91);ha=B;B=0;do if(!(ha&1)){B=0;eb(502,u|0,138252,9);Y=B;B=0;if(Y&1){Y=Rb()|0;n=Q;Yua(t);ma=Y;na=n;break}B=0;wa(510,v|0,b|0);n=B;B=0;if(n&1){n=Rb()|0;oa=1;pa=Q;qa=n}else{B=0;ua(163,ga|0,t|0,u|0,197,v|0);n=B;B=0;if(n&1)ra=1;else{B=0;eb(503,ga|0,1240,229);B=0;ra=0}n=Rb()|0;Y=Q;Yua(v);oa=ra;pa=Y;qa=n}Yua(u);Yua(t);if(oa){ma=qa;na=pa}else{sa=pa;ta=qa;break e}}else{n=Rb()|0;ma=n;na=Q}while(0);zb(ga|0);sa=na;ta=ma}else U=80;while(0);if((U|0)==80){$=Rb()|0;sa=Q;ta=$}k[s>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(Z);Ava(b);vva(e);V=sa;W=ta;Qb(W|0)}while(0);ia=ka;ja=la;vva(e);Qb(ja|0)}}ja=k[g>>2]|0;if(ja)Tqa(ja);r=a;return}function J5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;a=Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;e=a>>>0>536870911?-1:a<<3;f=Rqa(e)|0;if(a)WEa(f|0,0,a<<3|0)|0;g=Rqa(e)|0;e=Rqa(a>>>0>1073741823?-1:a<<2)|0;Mp(b,e,d,0);xp(b,g,934);if((a|0)>0){b=0;do{p[f+(b<<3)>>3]=-+p[g+(b<<3)>>3];b=b+1|0}while((b|0)!=(a|0))}if(!(k[c>>2]|0)){Tqa(f);Tqa(g);Tqa(e);return}b=k[k[c+4>>2]>>2]|0;Dc[k[(k[b>>2]|0)+16>>2]&255](b,a,e,f,0);Tqa(f);Tqa(g);Tqa(e);return}function K5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0.0,x=0;a=r;r=r+80|0;e=a+56|0;f=a+48|0;g=a+24|0;h=a;i=a+64|0;k[i>>2]=0;j=Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;l=j>>>0>536870911?-1:j<<3;m=Rqa(l)|0;n=Rqa(l)|0;if(j)WEa(n|0,0,j<<3|0)|0;l=Rqa(j>>>0>1073741823?-1:j<<2)|0;Uo(b,i);Mp(b,l,d,0);d=Wo(b,353)|0;o=Wo(b,934)|0;q=ed[k[(k[b>>2]|0)+308>>2]&511](b,4)|0;s=Hc[k[(k[q>>2]|0)+8>>2]&511](q)|0;a:do if((s|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0)){t=q+8|0;if((j|0)>0)u=s;else{v=s;while(1){Fc[k[(k[q>>2]|0)+24>>2]&1023](q,v);rd[k[(k[o>>2]|0)+60>>2]&511](o,g,k[i>>2]|0,q);nd[k[(k[d>>2]|0)+48>>2]&1023](d,e,q);rd[k[(k[d>>2]|0)+60>>2]&511](d,h,k[i>>2]|0,q);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[i>>2]|0,q);nd[k[(k[b>>2]|0)+356>>2]&1023](b,m,q);v=v+1|0;if((v|0)>=(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0))break a}}do{Fc[k[(k[q>>2]|0)+24>>2]&1023](q,u);rd[k[(k[o>>2]|0)+60>>2]&511](o,g,k[i>>2]|0,q);nd[k[(k[d>>2]|0)+48>>2]&1023](d,e,q);rd[k[(k[d>>2]|0)+60>>2]&511](d,h,k[i>>2]|0,q);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[i>>2]|0,q);nd[k[(k[b>>2]|0)+356>>2]&1023](b,m,q);w=+p[e>>3]*+p[g>>3]*+p[f>>3];v=0;do{x=n+(v<<3)|0;p[x>>3]=+p[x>>3]+w*+p[t>>3]*+p[m+(v<<3)>>3];v=v+1|0}while((v|0)!=(j|0));u=u+1|0}while((u|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0))}while(0);if(k[c>>2]|0){u=k[k[c+4>>2]>>2]|0;Dc[k[(k[u>>2]|0)+16>>2]&255](u,j,l,n,1)}j=k[i>>2]|0;if(j)Tqa(j);k[i>>2]=0;Tqa(m);Tqa(n);Tqa(l);if(!q){r=a;return}Ec[k[(k[q>>2]|0)+4>>2]&1023](q);r=a;return}function L5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0;a=r;r=r+80|0;e=a+56|0;f=a+48|0;g=a+24|0;h=a;i=a+64|0;k[i>>2]=0;j=Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;l=j>>>0>536870911?-1:j<<3;m=Rqa(l)|0;n=Rqa(l)|0;if(j)WEa(n|0,0,j<<3|0)|0;l=Rqa(j>>>0>1073741823?-1:j<<2)|0;Uo(b,i);Mp(b,l,d,0);d=Wo(b,353)|0;o=Wo(b,934)|0;q=ed[k[(k[b>>2]|0)+308>>2]&511](b,4)|0;s=Hc[k[(k[q>>2]|0)+8>>2]&511](q)|0;a:do if((s|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0)){t=g+8|0;u=q+8|0;if((j|0)>0)v=s;else{w=s;while(1){Fc[k[(k[q>>2]|0)+24>>2]&1023](q,w);rd[k[(k[o>>2]|0)+60>>2]&511](o,g,k[i>>2]|0,q);nd[k[(k[d>>2]|0)+48>>2]&1023](d,e,q);rd[k[(k[d>>2]|0)+60>>2]&511](d,h,k[i>>2]|0,q);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[i>>2]|0,q);nd[k[(k[b>>2]|0)+356>>2]&1023](b,m,q);w=w+1|0;if((w|0)>=(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0))break a}}do{Fc[k[(k[q>>2]|0)+24>>2]&1023](q,v);rd[k[(k[o>>2]|0)+60>>2]&511](o,g,k[i>>2]|0,q);nd[k[(k[d>>2]|0)+48>>2]&1023](d,e,q);rd[k[(k[d>>2]|0)+60>>2]&511](d,h,k[i>>2]|0,q);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[i>>2]|0,q);nd[k[(k[b>>2]|0)+356>>2]&1023](b,m,q);x=+p[e>>3]*+p[t>>3]*+p[f>>3];w=0;do{y=n+(w<<3)|0;p[y>>3]=+p[y>>3]+x*+p[u>>3]*+p[m+(w<<3)>>3];w=w+1|0}while((w|0)!=(j|0));v=v+1|0}while((v|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0))}while(0);if(k[c>>2]|0){v=k[k[c+4>>2]>>2]|0;Dc[k[(k[v>>2]|0)+16>>2]&255](v,j,l,n,1)}j=k[i>>2]|0;if(j)Tqa(j);k[i>>2]=0;Tqa(m);Tqa(n);Tqa(l);if(!q){r=a;return}Ec[k[(k[q>>2]|0)+4>>2]&1023](q);r=a;return}function M5(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;d=a+180|0;e=a+176|0;f=a+40|0;g=a+24|0;h=a+12|0;i=a;cp(c,e,298);switch(k[e>>2]|0){case 300:{nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,934);r=a;return}case 302:{nd[k[(k[c>>2]|0)+228>>2]&1023](c,b,934);r=a;return}default:{a=f+56|0;b=f+4|0;k[f>>2]=27524;k[a>>2]=27544;B=0;wa(508,f+56|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;j=Q;l=c;vva(a);Qb(l|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[a>>2]=27488;B=0;va(448,b|0);c=B;B=0;do if(c&1){m=Rb()|0;n=Q;o=m}else{k[b>>2]=27560;m=f+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(b);n=q;o=p;break}Yua(d);B=0;p=Ia(40,f|0,144639,5)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[e>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,124780,91);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,137199,23);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,333,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(a);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(a);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(a);Qb(C|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}}}function N5(a,b){a=a|0;b=b|0;return}function O5(a){a=a|0;return}function P5(a){a=a|0;Sqa(a);return}function Q5(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,124917,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,135838,17);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,9,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function R5(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,124917,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,135856,11);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,12,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function S5(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,124917,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,145111,11);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,15,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function T5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function U5(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,124917,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,136133,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,21,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function V5(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,124917,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,136199,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,24,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function W5(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,124917,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,29,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function X5(a,b){a=a|0;b=b|0;return 0}function Y5(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,124917,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,36,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Z5(a,b){a=a|0;b=b|0;var c=0;a=Qqa(4)|0;k[a>>2]=38316;c=ed[k[38360>>2]&511](a,b)|0;Ec[k[(k[a>>2]|0)+4>>2]&1023](a);return c|0}function _5(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;a=r;r=r+240|0;c=a+220|0;d=a+216|0;e=a+24|0;f=a+16|0;g=a+8|0;h=a;i=a+212|0;j=a+208|0;l=a+72|0;m=a+56|0;n=a+44|0;o=a+32|0;k[i>>2]=0;k[j>>2]=0;q=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;s=iq(b,536)|0;t=Rqa(q>>>0>536870911?-1:q<<3)|0;u=q<<1;v=Rqa(u>>>0>536870911?-1:u<<3)|0;Uo(b,j);cp(b,d,199);qp(b,i,0,180);u=Wo(b,339)|0;w=Wo(b,202)|0;x=Wo(b,179)|0;Wo(b,674)|0;Wo(b,677)|0;y=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;z=Hc[k[(k[y>>2]|0)+8>>2]&511](y)|0;a:do if((z|0)<(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0)){A=(q|0)>0;C=y+8|0;D=s+4|0;E=z;b:while(1){Fc[k[(k[y>>2]|0)+24>>2]&1023](y,E);rd[k[(k[b>>2]|0)+260>>2]&511](b,e,k[j>>2]|0,y);nd[k[(k[b>>2]|0)+336>>2]&1023](b,t,y);rd[k[(k[b>>2]|0)+340>>2]&511](b,v,k[j>>2]|0,y);nd[k[(k[u>>2]|0)+48>>2]&1023](u,f,y);nd[k[(k[w>>2]|0)+48>>2]&1023](w,g,y);c:do if((k[d>>2]|0)>0){F=k[i>>2]|0;if(A){G=F;H=0}else{I=F;F=0;while(1){rd[k[(k[x>>2]|0)+56>>2]&511](x,h,y,k[I+(F<<2)>>2]|0);I=k[i>>2]|0;if((k[I+(F<<2)>>2]|0)!=670){J=F;break b}F=F+1|0;if((F|0)>=(k[d>>2]|0))break c}}do{rd[k[(k[x>>2]|0)+56>>2]&511](x,h,y,k[G+(H<<2)>>2]|0);G=k[i>>2]|0;if((k[G+(H<<2)>>2]|0)!=670){J=H;break b}F=k[D>>2]|0;I=0;do{K=F+(I<<3)|0;p[K>>3]=(+p[g>>3]-+p[f>>3])*+p[h>>3]*+p[e>>3]*+p[C>>3]*+p[t+(I<<3)>>3]+ +p[K>>3];I=I+1|0}while((I|0)!=(q|0));H=H+1|0}while((H|0)<(k[d>>2]|0))}while(0);E=E+1|0;if((E|0)>=(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0))break a}E=l+56|0;C=l+4|0;k[l>>2]=27524;k[E>>2]=27544;B=0;wa(508,l+56|0,C|0);D=B;B=0;if(D&1){D=Rb()|0;L=Q;M=D;vva(E);Qb(M|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[E>>2]=27488;B=0;va(448,C|0);D=B;B=0;do if(D&1){A=Rb()|0;N=Q;O=A}else{k[C>>2]=27560;A=l+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,C|0,c|0);I=B;B=0;if(I&1){I=Rb()|0;F=Q;Yua(c);Yua(A);Ava(C);N=F;O=I;break}Yua(c);B=0;I=Ia(40,l|0,125591,9)|0;F=B;B=0;if((((!(F&1)?(B=0,F=ya(427,k[(k[i>>2]|0)+(J<<2)>>2]|0)|0,K=B,B=0,!(K&1)):0)?(K=Lta(F)|0,B=0,P=Ia(40,I|0,F|0,K|0)|0,K=B,B=0,!(K&1)):0)?(B=0,K=Ia(40,P|0,146481,18)|0,P=B,B=0,!(P&1)):0)?(B=0,Xa(239,K|0,0)|0,K=B,B=0,!(K&1)):0){K=Ab(20)|0;B=0;eb(502,m|0,124917,92);P=B;B=0;do if(!(P&1)){B=0;eb(502,n|0,144203,13);F=B;B=0;if(F&1){F=Rb()|0;I=Q;Yua(m);R=I;S=F;break}B=0;wa(510,o|0,C|0);F=B;B=0;if(F&1){F=Rb()|0;T=Q;U=F;V=1}else{B=0;ua(163,K|0,m|0,n|0,94,o|0);F=B;B=0;if(F&1)W=1;else{B=0;eb(503,K|0,1240,229);B=0;W=0}F=Rb()|0;I=Q;Yua(o);T=I;U=F;V=W}Yua(n);Yua(m);if(V){R=T;S=U}else{X=T;Y=U;k[l>>2]=27468;k[E>>2]=27488;k[C>>2]=27560;Yua(A);Ava(C);vva(E);Qb(Y|0)}}else{F=Rb()|0;R=Q;S=F}while(0);zb(K|0);X=R;Y=S;k[l>>2]=27468;k[E>>2]=27488;k[C>>2]=27560;Yua(A);Ava(C);vva(E);Qb(Y|0)}P=Rb()|0;X=Q;Y=P;k[l>>2]=27468;k[E>>2]=27488;k[C>>2]=27560;Yua(A);Ava(C);vva(E);Qb(Y|0)}while(0);L=N;M=O;vva(E);Qb(M|0)}while(0);M=k[i>>2]|0;if(M)Tqa(M);k[i>>2]=0;i=k[j>>2]|0;if(i)Tqa(i);k[j>>2]=0;Tqa(t);Tqa(v);if(!y){r=a;return s|0}Ec[k[(k[y>>2]|0)+4>>2]&1023](y);r=a;return s|0}function $5(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,124917,92);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,109,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function a6(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0;a=r;r=r+384|0;f=a+360|0;g=a+356|0;h=a+352|0;i=a+216|0;j=a+200|0;l=a+48|0;m=a+36|0;n=a+64|0;o=a+24|0;p=a+12|0;q=a;if(!($p(c)|0)){r=a;return}k[g>>2]=0;cp(c,h,199);qp(c,g,0,180);s=k[h>>2]|0;a:do if((s|0)>0){h=k[g>>2]|0;t=0;while(1){if((k[h+(t<<2)>>2]|0)!=670){u=t;break}t=t+1|0;if((t|0)>=(s|0))break a}t=i+56|0;h=i+4|0;k[i>>2]=27524;k[t>>2]=27544;B=0;wa(508,i+56|0,h|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;x=v;vva(t);Qb(x|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[t>>2]=27488;B=0;va(448,h|0);v=B;B=0;do if(v&1){y=Rb()|0;z=Q;A=y}else{k[h>>2]=27560;y=i+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[i+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,h|0,f|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(f);Yua(y);Ava(h);z=D;A=C;break}Yua(f);B=0;C=Ia(40,i|0,125591,9)|0;D=B;B=0;b:do if((((!(D&1)?(B=0,E=ya(427,k[(k[g>>2]|0)+(u<<2)>>2]|0)|0,F=B,B=0,!(F&1)):0)?(F=Lta(E)|0,B=0,G=Ia(40,C|0,E|0,F|0)|0,F=B,B=0,!(F&1)):0)?(B=0,F=Ia(40,G|0,146481,18)|0,G=B,B=0,!(G&1)):0)?(B=0,Xa(239,F|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,j|0,124917,92);G=B;B=0;do if(!(G&1)){B=0;eb(502,l|0,138252,9);E=B;B=0;if(E&1){E=Rb()|0;H=Q;Yua(j);I=E;J=H;break}B=0;wa(510,m|0,h|0);H=B;B=0;if(H&1){H=Rb()|0;K=Q;L=H;M=1}else{B=0;ua(163,F|0,j|0,l|0,134,m|0);H=B;B=0;if(H&1)N=1;else{B=0;eb(503,F|0,1240,229);B=0;N=0}H=Rb()|0;E=Q;Yua(m);K=E;L=H;M=N}Yua(l);Yua(j);if(M){I=L;J=K}else{O=L;P=K;break b}}else{H=Rb()|0;I=H;J=Q}while(0);zb(F|0);O=I;P=J}else R=23;while(0);if((R|0)==23){C=Rb()|0;O=C;P=Q}k[i>>2]=27468;k[t>>2]=27488;k[h>>2]=27560;Yua(y);Ava(h);vva(t);S=P;T=O;Qb(T|0)}while(0);w=z;x=A;vva(t);Qb(x|0)}while(0);switch(d|0){case 379:{b6(0,c,b,e);break}case 36:{c6(0,c,b,e);break}default:{e=n+56|0;b=n+4|0;k[n>>2]=27524;k[e>>2]=27544;B=0;wa(508,n+56|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;U=Q;V=c;vva(e);Qb(V|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[e>>2]=27488;B=0;va(448,b|0);c=B;B=0;do if(c&1){x=Rb()|0;W=Q;X=x}else{k[b>>2]=27560;x=n+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);A=B;B=0;if(A&1){A=Rb()|0;z=Q;Yua(f);Yua(x);Ava(b);W=z;X=A;break}Yua(f);B=0;A=Ia(40,n|0,125227,32)|0;z=B;B=0;c:do if(((!(z&1)?(B=0,w=ya(427,d|0)|0,O=B,B=0,!(O&1)):0)?(O=Lta(w)|0,B=0,P=Ia(40,A|0,w|0,O|0)|0,O=B,B=0,!(O&1)):0)?(B=0,Xa(239,P|0,0)|0,P=B,B=0,!(P&1)):0){P=Ab(20)|0;B=0;eb(502,o|0,124917,92);O=B;B=0;do if(!(O&1)){B=0;eb(502,p|0,138252,9);w=B;B=0;if(w&1){w=Rb()|0;i=Q;Yua(o);Y=w;Z=i;break}B=0;wa(510,q|0,b|0);i=B;B=0;if(i&1){i=Rb()|0;_=1;$=Q;aa=i}else{B=0;ua(163,P|0,o|0,p|0,141,q|0);i=B;B=0;if(i&1)ba=1;else{B=0;eb(503,P|0,1240,229);B=0;ba=0}i=Rb()|0;w=Q;Yua(q);_=ba;$=w;aa=i}Yua(p);Yua(o);if(_){Y=aa;Z=$}else{ca=$;da=aa;break c}}else{i=Rb()|0;Y=i;Z=Q}while(0);zb(P|0);ca=Z;da=Y}else R=52;while(0);if((R|0)==52){A=Rb()|0;ca=Q;da=A}k[n>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(x);Ava(b);vva(e);S=ca;T=da;Qb(T|0)}while(0);U=W;V=X;vva(e);Qb(V|0)}}V=k[g>>2]|0;if(V)Tqa(V);r=a;return}function b6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0,E=0.0,F=0;a=r;r=r+64|0;e=a+40|0;f=a+24|0;g=a+16|0;h=a+8|0;i=a;j=a+56|0;k[j>>2]=0;l=Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;m=l>>>0>536870911?-1:l<<3;n=Rqa(m)|0;o=Rqa(m)|0;if(l)WEa(o|0,0,l<<3|0)|0;m=Rqa(l>>>0>1073741823?-1:l<<2)|0;Uo(b,j);Mp(b,m,d,0);d=Wo(b,934)|0;q=Wo(b,339)|0;s=Wo(b,380)|0;t=Wo(b,379)|0;u=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;v=Hc[k[(k[u>>2]|0)+8>>2]&511](u)|0;a:do if((v|0)<(Hc[k[(k[u>>2]|0)+12>>2]&511](u)|0)){w=u+8|0;x=f+8|0;y=e+8|0;if((l|0)>0)z=v;else{A=v;while(1){Fc[k[(k[u>>2]|0)+24>>2]&1023](u,A);rd[k[(k[b>>2]|0)+260>>2]&511](b,i,k[j>>2]|0,u);nd[k[(k[b>>2]|0)+356>>2]&1023](b,n,u);nd[k[(k[s>>2]|0)+48>>2]&1023](s,g,u);nd[k[(k[t>>2]|0)+48>>2]&1023](t,h,u);rd[k[(k[d>>2]|0)+60>>2]&511](d,e,k[j>>2]|0,u);rd[k[(k[q>>2]|0)+60>>2]&511](q,f,k[j>>2]|0,u);A=A+1|0;if((A|0)>=(Hc[k[(k[u>>2]|0)+12>>2]&511](u)|0))break a}}do{Fc[k[(k[u>>2]|0)+24>>2]&1023](u,z);rd[k[(k[b>>2]|0)+260>>2]&511](b,i,k[j>>2]|0,u);nd[k[(k[b>>2]|0)+356>>2]&1023](b,n,u);nd[k[(k[s>>2]|0)+48>>2]&1023](s,g,u);nd[k[(k[t>>2]|0)+48>>2]&1023](t,h,u);rd[k[(k[d>>2]|0)+60>>2]&511](d,e,k[j>>2]|0,u);rd[k[(k[q>>2]|0)+60>>2]&511](q,f,k[j>>2]|0,u);B=+p[i>>3];C=+p[g>>3];D=+ja(+(+p[h>>3]));E=+p[f>>3]*+p[e>>3]+ +p[x>>3]*+p[y>>3];A=0;do{F=o+(A<<3)|0;p[F>>3]=+p[F>>3]-B*+p[w>>3]*+p[n+(A<<3)>>3]*D*C*E;A=A+1|0}while((A|0)!=(l|0));z=z+1|0}while((z|0)<(Hc[k[(k[u>>2]|0)+12>>2]&511](u)|0))}while(0);if(k[c>>2]|0){z=k[k[c+4>>2]>>2]|0;Dc[k[(k[z>>2]|0)+16>>2]&255](z,l,m,o,1)}Tqa(o);o=k[j>>2]|0;if(o)Tqa(o);k[j>>2]=0;Tqa(n);Tqa(m);if(!u){r=a;return}Ec[k[(k[u>>2]|0)+4>>2]&1023](u);r=a;return}function c6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0.0,u=0.0,v=0;a=r;r=r+32|0;e=a+8|0;f=a;g=a+16|0;k[g>>2]=0;h=Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;i=h>>>0>536870911?-1:h<<3;j=Rqa(i)|0;l=Rqa(i)|0;if(h)WEa(l|0,0,h<<3|0)|0;i=Rqa(h>>>0>1073741823?-1:h<<2)|0;Uo(b,g);Mp(b,i,d,0);d=Wo(b,934)|0;m=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;n=Hc[k[(k[m>>2]|0)+8>>2]&511](m)|0;a:do if((n|0)<(Hc[k[(k[m>>2]|0)+12>>2]&511](m)|0)){o=m+8|0;if((h|0)>0)q=n;else{s=n;while(1){Fc[k[(k[m>>2]|0)+24>>2]&1023](m,s);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[g>>2]|0,m);nd[k[(k[b>>2]|0)+356>>2]&1023](b,j,m);nd[k[(k[d>>2]|0)+48>>2]&1023](d,e,m);s=s+1|0;if((s|0)>=(Hc[k[(k[m>>2]|0)+12>>2]&511](m)|0))break a}}do{Fc[k[(k[m>>2]|0)+24>>2]&1023](m,q);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[g>>2]|0,m);nd[k[(k[b>>2]|0)+356>>2]&1023](b,j,m);nd[k[(k[d>>2]|0)+48>>2]&1023](d,e,m);t=+p[f>>3];u=+p[e>>3];s=0;do{v=l+(s<<3)|0;p[v>>3]=+p[v>>3]-t*+p[o>>3]*+p[j+(s<<3)>>3]*u;s=s+1|0}while((s|0)!=(h|0));q=q+1|0}while((q|0)<(Hc[k[(k[m>>2]|0)+12>>2]&511](m)|0))}while(0);if(k[c>>2]|0){q=k[k[c+4>>2]>>2]|0;Dc[k[(k[q>>2]|0)+16>>2]&255](q,h,i,l,1)}Tqa(l);l=k[g>>2]|0;if(l)Tqa(l);k[g>>2]=0;Tqa(j);Tqa(i);if(!m){r=a;return}Ec[k[(k[m>>2]|0)+4>>2]&1023](m);r=a;return}function d6(a,b,c){a=a|0;b=b|0;c=c|0;nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,934);return}function e6(a,b){a=a|0;b=b|0;return}function f6(a){a=a|0;Sqa(a);return}function g6(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125033,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,135838,17);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,9,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function h6(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125033,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,135856,11);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,12,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function i6(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125033,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,145111,11);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,15,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function j6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,125033,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,135868,11);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,18,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0);return 0}function k6(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,125033,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,136133,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,21,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function l6(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,125033,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,136199,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,24,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function m6(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125033,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,29,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function n6(a,b){a=a|0;b=b|0;return 0}function o6(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125033,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,36,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function p6(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;c=a+180|0;d=a+176|0;e=a+40|0;f=a+24|0;g=a+12|0;h=a;Ap(b,d,533);switch(k[d>>2]|0){case 536:{i=q6(0,b)|0;r=a;return i|0}case 539:{i=r6(0,b)|0;r=a;return i|0}case 540:{i=s6(0,b)|0;r=a;return i|0}case 542:{i=t6(0,b)|0;r=a;return i|0}case 534:{i=0;r=a;return i|0}default:{i=e+56|0;a=e+4|0;k[e>>2]=27524;k[i>>2]=27544;B=0;wa(508,e+56|0,a|0);b=B;B=0;if(b&1){b=Rb()|0;j=Q;l=b;vva(i);Qb(l|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[i>>2]=27488;B=0;va(448,a|0);b=B;B=0;do if(b&1){m=Rb()|0;n=Q;o=m}else{k[a>>2]=27560;m=e+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(a);n=q;o=p;break}Yua(c);B=0;p=Ia(40,e|0,127478,14)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[d>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,144645,14)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,f|0,125033,80);t=B;B=0;do if(!(t&1)){B=0;eb(502,g|0,144189,13);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(f);u=p;v=q;break}B=0;wa(510,h|0,a|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,f|0,g|0,53,h|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(h);w=p;x=q;y=z}Yua(g);Yua(f);if(y){u=w;v=x}else{A=w;C=x;k[e>>2]=27468;k[i>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(i);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[e>>2]=27468;k[i>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(i);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[e>>2]=27468;k[i>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(i);Qb(C|0)}while(0);j=n;l=o;vva(i);Qb(l|0)}}return 0}function q6(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0,Z=0,_=0;a=r;r=r+240|0;c=a+220|0;d=a+216|0;e=a+40|0;f=a+204|0;g=a+192|0;h=a+180|0;j=a+32|0;l=a+24|0;m=a;n=a+176|0;cp(b,d,298);a:do switch(k[d>>2]|0){case 300:{o=b;break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){o=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{q=0;r=a;return q|0}break}default:{s=e+56|0;t=e+4|0;k[e>>2]=27524;k[s>>2]=27544;B=0;wa(508,e+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=e+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,t|0,c|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(c);Yua(x);Ava(t);y=C;z=A;break}Yua(c);B=0;A=Ia(40,e|0,144639,5)|0;C=B;B=0;if((((!(C&1)?(B=0,C=ya(427,k[d>>2]|0)|0,D=B,B=0,!(D&1)):0)?(D=Lta(C)|0,B=0,E=Ia(40,A|0,C|0,D|0)|0,D=B,B=0,!(D&1)):0)?(B=0,D=Ia(40,E|0,146481,18)|0,E=B,B=0,!(E&1)):0)?(B=0,Xa(239,D|0,0)|0,D=B,B=0,!(D&1)):0){D=Ab(20)|0;B=0;eb(502,f|0,125033,80);E=B;B=0;do if(!(E&1)){B=0;eb(502,g|0,128218,16);C=B;B=0;if(C&1){C=Rb()|0;A=Q;Yua(f);F=C;G=A;break}B=0;wa(510,h|0,t|0);A=B;B=0;if(A&1){A=Rb()|0;H=A;I=Q;J=1}else{B=0;ua(163,D|0,f|0,g|0,243,h|0);A=B;B=0;if(A&1)K=1;else{B=0;eb(503,D|0,1240,229);B=0;K=0}A=Rb()|0;C=Q;Yua(h);H=A;I=C;J=K}Yua(g);Yua(f);if(J){F=H;G=I}else{L=H;M=I;k[e>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);Qb(L|0)}}else{C=Rb()|0;F=C;G=Q}while(0);zb(D|0);L=F;M=G;k[e>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);Qb(L|0)}E=Rb()|0;L=E;M=Q;k[e>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);Qb(L|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}}while(0);k[n>>2]=0;w=Hc[k[(k[o>>2]|0)+164>>2]&511](o)|0;op(o,c,184);z=Qqa(4)|0;k[z>>2]=38696;y=ed[k[38740>>2]&511](z,b)|0;Ec[k[(k[z>>2]|0)+4>>2]&1023](z);if(!(i[c>>0]|0)){Uo(o,n);c=Wo(o,674)|0;z=Wo(o,677)|0;b=Wo(o,353)|0;v=w<<1;L=Rqa(v>>>0>536870911?-1:v<<3)|0;M=ed[k[(k[o>>2]|0)+308>>2]&511](o,2)|0;G=Hc[k[(k[M>>2]|0)+8>>2]&511](M)|0;if((G|0)<(Hc[k[(k[M>>2]|0)+12>>2]&511](M)|0)){F=o+28|0;I=m+8|0;H=m+16|0;J=(w|0)>0;f=M+8|0;g=y+12|0;K=G;do{Fc[k[(k[M>>2]|0)+24>>2]&1023](M,K);rd[k[(k[o>>2]|0)+260>>2]&511](o,e,k[n>>2]|0,M);rd[k[(k[o>>2]|0)+340>>2]&511](o,L,k[n>>2]|0,M);nd[k[(k[b>>2]|0)+48>>2]&1023](b,j,M);Xo(o,m,k[n>>2]|0,M,c,z);G=k[F>>2]|0;nd[k[(k[G>>2]|0)+132>>2]&1023](G,l,m);N=+p[m>>3];O=+p[I>>3];P=N*2.0+O;R=+p[H>>3];S=N+O*2.0;if(J){G=k[g>>2]|0;h=0;do{t=L+(h<<3)|0;u=L+(h+w<<3)|0;E=h<<1;C=ma(E,v)|0;A=ma(E|1,v)|0;E=0;do{O=+p[t>>3];N=+p[u>>3];T=P*O+R*N;U=+p[L+(E<<3)>>3];V=+p[L+(E+w<<3)>>3];W=P*U+R*V;X=R*O+S*N;N=R*U+S*V;Y=E<<1;Z=Y+C|0;_=G+(Z<<3)|0;p[_>>3]=+p[_>>3]+T*(W*(+p[j>>3]*(+p[l>>3]*(+p[f>>3]*+p[e>>3]*2.0))));_=G+((Z|1)<<3)|0;p[_>>3]=+p[_>>3]+T*(N*(+p[j>>3]*(+p[l>>3]*(+p[f>>3]*+p[e>>3]*2.0))));_=Y+A|0;Y=G+(_<<3)|0;p[Y>>3]=+p[Y>>3]+X*(W*(+p[j>>3]*(+p[l>>3]*(+p[f>>3]*+p[e>>3]*2.0))));Y=G+((_|1)<<3)|0;p[Y>>3]=+p[Y>>3]+X*(N*(+p[j>>3]*(+p[l>>3]*(+p[f>>3]*+p[e>>3]*2.0))));E=E+1|0}while((E|0)!=(w|0));h=h+1|0}while((h|0)!=(w|0))}K=K+1|0}while((K|0)<(Hc[k[(k[M>>2]|0)+12>>2]&511](M)|0))}Fq(o,y,971);Ec[k[(k[M>>2]|0)+4>>2]&1023](M);Tqa(L);L=k[n>>2]|0;if(L)Tqa(L);k[n>>2]=0;if((k[d>>2]|0)!=300?(ap(o),(o|0)!=0):0)Ec[k[(k[o>>2]|0)+4>>2]&1023](o)}else if((k[d>>2]|0)!=300?(ap(o),(o|0)!=0):0)Ec[k[(k[o>>2]|0)+4>>2]&1023](o);q=y;r=a;return q|0}function r6(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;c=a+176|0;d=a+188|0;e=a+40|0;f=a+24|0;g=a+12|0;h=a;j=Qqa(4)|0;k[j>>2]=38696;l=ed[k[38740>>2]&511](j,b)|0;Ec[k[(k[j>>2]|0)+4>>2]&1023](j);op(b,d,184);if(i[d>>0]|0){r=a;return l|0}l=e+56|0;a=e+4|0;k[e>>2]=27524;k[l>>2]=27544;B=0;wa(508,e+56|0,a|0);d=B;B=0;if(d&1){d=Rb()|0;m=Q;n=d;vva(l);Qb(n|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[l>>2]=27488;B=0;va(448,a|0);d=B;B=0;do if(d&1){b=Rb()|0;o=Q;p=b}else{k[a>>2]=27560;b=e+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);j=B;B=0;if(j&1){j=Rb()|0;q=Q;Yua(c);Yua(b);Ava(a);o=q;p=j;break}Yua(c);B=0;j=Ia(40,e|0,125114,46)|0;q=B;B=0;if(!(q&1)?(B=0,Xa(239,j|0,0)|0,j=B,B=0,!(j&1)):0){j=Ab(20)|0;B=0;eb(502,f|0,125033,80);q=B;B=0;do if(!(q&1)){B=0;eb(502,g|0,125161,17);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(f);u=t;v=s;break}B=0;wa(510,h|0,a|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,j|0,f|0,g|0,223,h|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,j|0,1240,229);B=0;z=0}s=Rb()|0;t=Q;Yua(h);w=t;x=s;y=z}Yua(g);Yua(f);if(y){u=w;v=x}else{A=w;C=x;k[e>>2]=27468;k[l>>2]=27488;k[a>>2]=27560;Yua(b);Ava(a);vva(l);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(j|0);A=u;C=v;k[e>>2]=27468;k[l>>2]=27488;k[a>>2]=27560;Yua(b);Ava(a);vva(l);Qb(C|0)}q=Rb()|0;A=Q;C=q;k[e>>2]=27468;k[l>>2]=27488;k[a>>2]=27560;Yua(b);Ava(a);vva(l);Qb(C|0)}while(0);m=o;n=p;vva(l);Qb(n|0);return 0}function s6(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0,X=0,Y=0;a=r;r=r+64|0;c=a+60|0;d=a+48|0;e=a+40|0;f=a;g=a+56|0;k[g>>2]=0;h=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;op(b,c,184);j=Qqa(4)|0;k[j>>2]=38696;l=ed[k[38740>>2]&511](j,b)|0;Ec[k[(k[j>>2]|0)+4>>2]&1023](j);if(i[c>>0]|0){r=a;return l|0}Uo(b,g);c=Wo(b,674)|0;j=Wo(b,677)|0;m=h*3|0;n=Rqa(m>>>0>536870911?-1:m<<3)|0;m=ed[k[(k[b>>2]|0)+308>>2]&511](b,5)|0;o=Hc[k[(k[m>>2]|0)+8>>2]&511](m)|0;if((o|0)<(Hc[k[(k[m>>2]|0)+12>>2]&511](m)|0)){q=b+28|0;s=f+8|0;t=f+16|0;u=f+24|0;v=f+32|0;w=(h|0)>0;x=h<<1;y=m+8|0;z=l+12|0;A=o;do{Fc[k[(k[m>>2]|0)+24>>2]&1023](m,A);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[g>>2]|0,m);rd[k[(k[b>>2]|0)+340>>2]&511](b,n,k[g>>2]|0,m);ep(b,f,k[g>>2]|0,m,c,j);o=k[q>>2]|0;nd[k[(k[o>>2]|0)+120>>2]&1023](o,e,f);B=+p[f>>3];C=+p[s>>3];D=B*2.0+C;E=+p[t>>3];F=B+C*2.0;C=+p[u>>3];B=+p[v>>3];if(w){o=k[z>>2]|0;G=0;do{H=n+(G<<3)|0;I=n+(G+h<<3)|0;J=n+(G+x<<3)|0;K=G<<1;L=ma(K,x)|0;M=ma(K|1,x)|0;K=0;do{N=+p[H>>3];O=+p[I>>3];P=+p[J>>3];Q=D*N+E*O+C*P;R=+p[n+(K<<3)>>3];S=+p[n+(K+h<<3)>>3];T=+p[n+(K+x<<3)>>3];U=D*R+E*S+C*T;V=E*N+F*O+B*P;P=E*R+F*S+B*T;W=K<<1;X=W+L|0;Y=o+(X<<3)|0;p[Y>>3]=+p[Y>>3]+Q*(U*(+p[e>>3]*(+p[y>>3]*+p[d>>3]*2.0)));Y=o+((X|1)<<3)|0;p[Y>>3]=+p[Y>>3]+Q*(P*(+p[e>>3]*(+p[y>>3]*+p[d>>3]*2.0)));Y=W+M|0;W=o+(Y<<3)|0;p[W>>3]=+p[W>>3]+V*(U*(+p[e>>3]*(+p[y>>3]*+p[d>>3]*2.0)));W=o+((Y|1)<<3)|0;p[W>>3]=+p[W>>3]+V*(P*(+p[e>>3]*(+p[y>>3]*+p[d>>3]*2.0)));K=K+1|0}while((K|0)!=(h|0));G=G+1|0}while((G|0)!=(h|0))}A=A+1|0}while((A|0)<(Hc[k[(k[m>>2]|0)+12>>2]&511](m)|0))}Fq(b,l,971);Ec[k[(k[m>>2]|0)+4>>2]&1023](m);Tqa(n);n=k[g>>2]|0;if(n)Tqa(n);k[g>>2]=0;r=a;return l|0}function t6(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ba=0.0,ca=0.0,da=0.0,ea=0.0,fa=0.0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0;a=r;r=r+256|0;c=a+240|0;d=a+252|0;e=a+236|0;f=a+48|0;g=a+40|0;h=a;j=a+232|0;l=a+96|0;m=a+80|0;n=a+68|0;o=a+56|0;k[j>>2]=0;cp(b,e,299);q=Hc[k[(k[b>>2]|0)+396>>2]&511](b)|0;s=Hc[k[(k[b>>2]|0)+392>>2]&511](b)|0;t=(ma(k[e>>2]|0,q)|0)+s|0;op(b,d,184);s=Qqa(4)|0;k[s>>2]=38696;u=ed[k[38740>>2]&511](s,b)|0;Ec[k[(k[s>>2]|0)+4>>2]&1023](s);if(i[d>>0]|0){r=a;return u|0}Uo(b,j);d=Wo(b,674)|0;s=Wo(b,677)|0;if((k[e>>2]|0)==3){Wo(b,679)|0;v=ma(k[e>>2]|0,q)|0;e=Rqa(v>>>0>536870911?-1:v<<3)|0;v=ed[k[(k[b>>2]|0)+308>>2]&511](b,5)|0;w=Hc[k[(k[v>>2]|0)+8>>2]&511](v)|0;if((w|0)<(Hc[k[(k[v>>2]|0)+12>>2]&511](v)|0)){x=b+28|0;y=h+16|0;z=h+24|0;A=h+8|0;C=h+32|0;D=(q|0)>0;E=q<<1;F=v+8|0;G=u+12|0;H=w;do{Fc[k[(k[v>>2]|0)+24>>2]&1023](v,H);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[j>>2]|0,v);rd[k[(k[b>>2]|0)+340>>2]&511](b,e,k[j>>2]|0,v);ep(b,h,k[j>>2]|0,v,d,s);w=k[x>>2]|0;nd[k[(k[w>>2]|0)+112>>2]&1023](w,g,h);I=+p[h>>3];J=+p[y>>3];K=+p[z>>3];L=+p[A>>3];M=+p[C>>3];N=-I-L;if(D){w=k[G>>2]|0;O=0;do{P=e+(O<<3)|0;R=e+(O+q<<3)|0;S=e+(O+E<<3)|0;T=O<<2;U=ma(T,t)|0;V=ma(T|1,t)|0;W=ma(T|2,t)|0;T=0;do{X=+p[P>>3];Y=+p[R>>3];Z=+p[S>>3];_=I*X+J*Y+K*Z;$=+p[e+(T<<3)>>3];aa=+p[e+(T+q<<3)>>3];ba=+p[e+(T+E<<3)>>3];ca=I*$+J*aa+K*ba;da=J*X+L*Y+M*Z;ea=J*$+L*aa+M*ba;fa=K*X+M*Y+N*Z;Z=K*$+M*aa+N*ba;ga=T<<2;ha=ga+U|0;ia=w+(ha<<3)|0;p[ia>>3]=+p[ia>>3]+_*(ca*(+p[g>>3]*(+p[F>>3]*+p[f>>3]*2.0)));ia=w+((ha|1)<<3)|0;p[ia>>3]=+p[ia>>3]+_*(ea*(+p[g>>3]*(+p[F>>3]*+p[f>>3]*2.0)));ia=w+((ha|2)<<3)|0;p[ia>>3]=+p[ia>>3]+_*(Z*(+p[g>>3]*(+p[F>>3]*+p[f>>3]*2.0)));ia=ga+V|0;ha=w+(ia<<3)|0;p[ha>>3]=+p[ha>>3]+da*(ca*(+p[g>>3]*(+p[F>>3]*+p[f>>3]*2.0)));ha=w+(ia+1<<3)|0;p[ha>>3]=+p[ha>>3]+da*(ea*(+p[g>>3]*(+p[F>>3]*+p[f>>3]*2.0)));ha=w+(ia+2<<3)|0;p[ha>>3]=+p[ha>>3]+da*(Z*(+p[g>>3]*(+p[F>>3]*+p[f>>3]*2.0)));ha=ga+W|0;ga=w+(ha<<3)|0;p[ga>>3]=+p[ga>>3]+fa*(ca*(+p[g>>3]*(+p[F>>3]*+p[f>>3]*2.0)));ga=w+((ha|1)<<3)|0;p[ga>>3]=+p[ga>>3]+fa*(ea*(+p[g>>3]*(+p[F>>3]*+p[f>>3]*2.0)));ga=w+(ha+2<<3)|0;p[ga>>3]=+p[ga>>3]+fa*(Z*(+p[g>>3]*(+p[F>>3]*+p[f>>3]*2.0)));T=T+1|0}while((T|0)!=(q|0));O=O+1|0}while((O|0)!=(q|0))}H=H+1|0}while((H|0)<(Hc[k[(k[v>>2]|0)+12>>2]&511](v)|0))}Fq(b,u,972);Ec[k[(k[v>>2]|0)+4>>2]&1023](v);Tqa(e);e=k[j>>2]|0;if(e)Tqa(e);k[j>>2]=0;r=a;return u|0}u=l+56|0;a=l+4|0;k[l>>2]=27524;k[u>>2]=27544;B=0;wa(508,l+56|0,a|0);j=B;B=0;if(j&1){j=Rb()|0;ja=Q;ka=j;vva(u);Qb(ka|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[u>>2]=27488;B=0;va(448,a|0);j=B;B=0;do if(j&1){e=Rb()|0;la=Q;na=e}else{k[a>>2]=27560;e=l+36|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);v=B;B=0;if(v&1){v=Rb()|0;b=Q;Yua(c);Yua(e);Ava(a);la=b;na=v;break}Yua(c);B=0;v=Ia(40,l|0,144350,19)|0;b=B;B=0;if(!(b&1)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,m|0,125033,80);b=B;B=0;do if(!(b&1)){B=0;eb(502,n|0,125179,15);H=B;B=0;if(H&1){H=Rb()|0;q=Q;Yua(m);oa=q;pa=H;break}B=0;wa(510,o|0,a|0);H=B;B=0;if(H&1){H=Rb()|0;qa=Q;ra=H;sa=1}else{B=0;ua(163,v|0,m|0,n|0,92,o|0);H=B;B=0;if(H&1)ta=1;else{B=0;eb(503,v|0,1240,229);B=0;ta=0}H=Rb()|0;q=Q;Yua(o);qa=q;ra=H;sa=ta}Yua(n);Yua(m);if(sa){oa=qa;pa=ra}else{xa=qa;ya=ra;k[l>>2]=27468;k[u>>2]=27488;k[a>>2]=27560;Yua(e);Ava(a);vva(u);Qb(ya|0)}}else{H=Rb()|0;oa=Q;pa=H}while(0);zb(v|0);xa=oa;ya=pa;k[l>>2]=27468;k[u>>2]=27488;k[a>>2]=27560;Yua(e);Ava(a);vva(u);Qb(ya|0)}b=Rb()|0;xa=Q;ya=b;k[l>>2]=27468;k[u>>2]=27488;k[a>>2]=27560;Yua(e);Ava(a);vva(u);Qb(ya|0)}while(0);ja=la;ka=na;vva(u);Qb(ka|0);return 0}function u6(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;c=a+180|0;d=a+176|0;e=a+40|0;f=a+24|0;g=a+12|0;h=a;Ap(b,d,533);switch(k[d>>2]|0){case 536:{i=v6(0,b)|0;r=a;return i|0}case 539:{i=v6(0,b)|0;r=a;return i|0}case 540:{i=w6(0,b)|0;r=a;return i|0}case 542:{i=x6(0,b)|0;r=a;return i|0}case 534:{i=0;r=a;return i|0}default:{i=e+56|0;a=e+4|0;k[e>>2]=27524;k[i>>2]=27544;B=0;wa(508,e+56|0,a|0);b=B;B=0;if(b&1){b=Rb()|0;j=Q;l=b;vva(i);Qb(l|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[i>>2]=27488;B=0;va(448,a|0);b=B;B=0;do if(b&1){m=Rb()|0;n=Q;o=m}else{k[a>>2]=27560;m=e+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(a);n=q;o=p;break}Yua(c);B=0;p=Ia(40,e|0,127478,14)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[d>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,144645,14)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,f|0,125033,80);t=B;B=0;do if(!(t&1)){B=0;eb(502,g|0,144203,13);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(f);u=p;v=q;break}B=0;wa(510,h|0,a|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,f|0,g|0,330,h|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(h);w=p;x=q;y=z}Yua(g);Yua(f);if(y){u=w;v=x}else{A=w;C=x;k[e>>2]=27468;k[i>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(i);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[e>>2]=27468;k[i>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(i);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[e>>2]=27468;k[i>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(i);Qb(C|0)}while(0);j=n;l=o;vva(i);Qb(l|0)}}return 0}function v6(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ba=0,ca=0,da=0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0.0,ja=0.0,la=0.0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0;a=r;r=r+448|0;c=a+424|0;d=a+420|0;e=a+272|0;f=a+408|0;g=a+256|0;h=a+240|0;i=a+252|0;j=a+48|0;l=a+40|0;m=a+32|0;n=a+24|0;o=a+16|0;q=a+8|0;s=a;t=a+236|0;u=a+232|0;v=a+96|0;w=a+80|0;x=a+68|0;y=a+56|0;cp(b,d,298);a:do switch(k[d>>2]|0){case 300:{z=b;break}case 301:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){z=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{A=0;r=a;return A|0}break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){z=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{A=0;r=a;return A|0}break}default:{C=e+56|0;D=e+4|0;k[e>>2]=27524;k[C>>2]=27544;B=0;wa(508,e+56|0,D|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;G=E;vva(C);Qb(G|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[C>>2]=27488;B=0;va(448,D|0);E=B;B=0;do if(E&1){H=Rb()|0;I=Q;J=H}else{k[D>>2]=27560;H=e+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,D|0,c|0);K=B;B=0;if(K&1){K=Rb()|0;L=Q;Yua(c);Yua(H);Ava(D);I=L;J=K;break}Yua(c);B=0;K=Ia(40,e|0,144639,5)|0;L=B;B=0;b:do if((((!(L&1)?(B=0,M=ya(427,k[d>>2]|0)|0,N=B,B=0,!(N&1)):0)?(N=Lta(M)|0,B=0,O=Ia(40,K|0,M|0,N|0)|0,N=B,B=0,!(N&1)):0)?(B=0,N=Ia(40,O|0,146481,18)|0,O=B,B=0,!(O&1)):0)?(B=0,Xa(239,N|0,0)|0,N=B,B=0,!(N&1)):0){N=Ab(20)|0;B=0;eb(502,f|0,125033,80);O=B;B=0;do if(!(O&1)){B=0;eb(502,g|0,128235,16);M=B;B=0;if(M&1){M=Rb()|0;P=Q;Yua(f);R=M;S=P;break}B=0;wa(510,h|0,D|0);P=B;B=0;if(P&1){P=Rb()|0;T=P;U=Q;V=1}else{B=0;ua(163,N|0,f|0,g|0,824,h|0);P=B;B=0;if(P&1)W=1;else{B=0;eb(503,N|0,1240,229);B=0;W=0}P=Rb()|0;M=Q;Yua(h);T=P;U=M;V=W}Yua(g);Yua(f);if(V){R=T;S=U}else{X=T;Y=U;break b}}else{M=Rb()|0;R=M;S=Q}while(0);zb(N|0);X=R;Y=S}else Z=24;while(0);if((Z|0)==24){K=Rb()|0;X=K;Y=Q}k[e>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(H);Ava(D);vva(C);_=X;ba=Y;Qb(_|0)}while(0);F=I;G=J;vva(C);Qb(G|0)}}while(0);k[t>>2]=0;k[u>>2]=0;G=Hc[k[(k[z>>2]|0)+164>>2]&511](z)|0;J=iq(z,536)|0;I=Rqa(G>>>0>536870911?-1:G<<3)|0;Uo(z,u);cp(z,i,199);qp(z,t,0,180);F=Wo(z,179)|0;Y=Wo(z,674)|0;X=Wo(z,203)|0;if((k[d>>2]|0)==301){ca=0;da=0}else{e=Wo(z,677)|0;ca=e;da=Wo(z,204)|0}e=k[i>>2]|0;c:do if((e|0)>0){S=k[t>>2]|0;R=0;while(1){if((k[S+(R<<2)>>2]|0)==660)break;R=R+1|0;if((R|0)>=(e|0))break c}Bp(z,s,659)}while(0);e=ed[k[(k[z>>2]|0)+308>>2]&511](z,4)|0;R=Hc[k[(k[e>>2]|0)+8>>2]&511](e)|0;d:do if((R|0)<(Hc[k[(k[e>>2]|0)+12>>2]&511](e)|0)){S=(G|0)>0;C=e+8|0;U=J+4|0;T=R;e:while(1){Fc[k[(k[e>>2]|0)+24>>2]&1023](e,T);rd[k[(k[z>>2]|0)+260>>2]&511](z,j,k[u>>2]|0,e);nd[k[(k[z>>2]|0)+336>>2]&1023](z,I,e);nd[k[(k[Y>>2]|0)+48>>2]&1023](Y,l,e);nd[k[(k[X>>2]|0)+48>>2]&1023](X,n,e);if((k[d>>2]|0)!=301){nd[k[(k[ca>>2]|0)+48>>2]&1023](ca,m,e);nd[k[(k[da>>2]|0)+48>>2]&1023](da,o,e)}f:do if((k[i>>2]|0)>0){V=k[t>>2]|0;f=0;while(1){rd[k[(k[F>>2]|0)+56>>2]&511](F,q,e,k[V+(f<<2)>>2]|0);V=k[t>>2]|0;switch(k[V+(f<<2)>>2]|0){case 658:{if(S){g=k[U>>2]|0;if((k[d>>2]|0)==301){W=0;do{h=g+(W<<3)|0;p[h>>3]=(+p[n>>3]-+p[l>>3])*+p[q>>3]*+p[j>>3]*+p[C>>3]*+p[I+(W<<3)>>3]+ +p[h>>3];W=W+1|0}while((W|0)!=(G|0))}else{W=0;do{ea=+p[o>>3]-+p[m>>3];h=I+(W<<3)|0;b=W<<1;D=g+(b<<3)|0;p[D>>3]=(+p[n>>3]-+p[l>>3])*+p[q>>3]*+p[j>>3]*+p[C>>3]*+p[h>>3]+ +p[D>>3];D=g+((b|1)<<3)|0;p[D>>3]=ea*+p[q>>3]*+p[j>>3]*+p[C>>3]*+p[h>>3]+ +p[D>>3];W=W+1|0}while((W|0)!=(G|0))}}break}case 663:{if(S){W=k[U>>2]|0;if((k[d>>2]|0)==301){g=0;do{ea=+p[n>>3];fa=3.170979198376458e-05/(ea+2.220446049250313e-16);D=W+(g<<3)|0;p[D>>3]=+p[D>>3]+ +p[I+(g<<3)>>3]*(+p[C>>3]*(+p[j>>3]*(+p[q>>3]*((ea==0.0?0.0:fa*fa)*(ea-+p[l>>3])))));g=g+1|0}while((g|0)!=(G|0))}else{g=0;do{ea=+p[n>>3];fa=3.170979198376458e-05/(ea+2.220446049250313e-16);ga=+p[o>>3];ha=3.170979198376458e-05/(ga+2.220446049250313e-16);ia=(ga-+p[m>>3])*(ga==0.0?0.0:ha*ha);D=I+(g<<3)|0;h=g<<1;b=W+(h<<3)|0;p[b>>3]=(ea==0.0?0.0:fa*fa)*(ea-+p[l>>3])*+p[q>>3]*+p[j>>3]*+p[C>>3]*+p[D>>3]+ +p[b>>3];b=W+((h|1)<<3)|0;p[b>>3]=ia*+p[q>>3]*+p[j>>3]*+p[C>>3]*+p[D>>3]+ +p[b>>3];g=g+1|0}while((g|0)!=(G|0))}}break}case 661:{if(S){g=k[U>>2]|0;if((k[d>>2]|0)==301){W=0;do{ia=+p[l>>3];ea=+$(+ia)+2.220446049250313e-16;fa=ia*(-8.044087261228962e-09/(ea*ea)*+ka(+(ea/(+$(+(+p[n>>3]))+2.220446049250313e-16))));b=g+(W<<3)|0;p[b>>3]=+p[b>>3]+ +p[I+(W<<3)>>3]*(+p[C>>3]*(+p[j>>3]*(+p[q>>3]*fa)));W=W+1|0}while((W|0)!=(G|0))}else{W=0;do{fa=+p[l>>3];ea=+p[m>>3];ia=+aa(+(fa*fa+ea*ea))+2.220446049250313e-16;ha=+p[n>>3];ga=+p[o>>3];ja=-8.044087261228962e-09/(ia*ia)*+ka(+(ia/(+aa(+(ha*ha+ga*ga))+2.220446049250313e-16)));b=I+(W<<3)|0;D=W<<1;h=g+(D<<3)|0;p[h>>3]=+p[h>>3]+ +p[b>>3]*(+p[C>>3]*(+p[j>>3]*(+p[q>>3]*(fa*ja))));h=g+((D|1)<<3)|0;p[h>>3]=ea*ja*+p[q>>3]*+p[j>>3]*+p[C>>3]*+p[b>>3]+ +p[h>>3];W=W+1|0}while((W|0)!=(G|0))}}break}case 660:{if(S){W=k[U>>2]|0;if((k[d>>2]|0)==301){g=0;do{ja=+p[l>>3];ea=+p[n>>3];fa=(ea-ja)*(1.0/(+p[s>>3]*2.0*+$(+(ja-ea))+2.220446049250313e-16));h=W+(g<<3)|0;p[h>>3]=+p[h>>3]+ +p[I+(g<<3)>>3]*(+p[C>>3]*(+p[j>>3]*(+p[q>>3]*fa)));g=g+1|0}while((g|0)!=(G|0))}else{g=0;do{fa=+p[l>>3];ea=+p[n>>3];ja=fa-ea;ga=+p[m>>3];ha=+p[o>>3];ia=ga-ha;la=1.0/(+p[s>>3]*2.0*+aa(+(ja*ja+ia*ia))+2.220446049250313e-16);h=I+(g<<3)|0;b=g<<1;D=W+(b<<3)|0;p[D>>3]=+p[D>>3]+ +p[h>>3]*(+p[C>>3]*(+p[j>>3]*(+p[q>>3]*((ea-fa)*la))));D=W+((b|1)<<3)|0;p[D>>3]=(ha-ga)*la*+p[q>>3]*+p[j>>3]*+p[C>>3]*+p[h>>3]+ +p[D>>3];g=g+1|0}while((g|0)!=(G|0))}}break}case 662:{if(S){g=k[U>>2]|0;if((k[d>>2]|0)==301){W=0;do{la=+p[l>>3];ga=+$(+la)+2.220446049250313e-16;ha=+ka(+(ga/(+$(+(+p[n>>3]))+2.220446049250313e-16)))*-1.0055109076536202e-09/(la+2.220446049250313e-16);D=g+(W<<3)|0;p[D>>3]=ha*+p[q>>3]*+p[j>>3]*+p[C>>3]*+p[I+(W<<3)>>3]+ +p[D>>3];W=W+1|0}while((W|0)!=(G|0))}else{W=0;do{ha=+p[l>>3];la=+$(+ha)+2.220446049250313e-16;ga=+ka(+(la/(+$(+(+p[n>>3]))+2.220446049250313e-16)))*-1.0055109076536202e-09/(ha+2.220446049250313e-16);ha=+p[m>>3];la=+$(+ha)+2.220446049250313e-16;fa=+ka(+(la/(+$(+(+p[o>>3]))+2.220446049250313e-16)))*-1.0055109076536202e-09/(ha+2.220446049250313e-16);D=I+(W<<3)|0;h=W<<1;b=g+(h<<3)|0;p[b>>3]=ga*+p[q>>3]*+p[j>>3]*+p[C>>3]*+p[D>>3]+ +p[b>>3];b=g+((h|1)<<3)|0;p[b>>3]=fa*+p[q>>3]*+p[j>>3]*+p[C>>3]*+p[D>>3]+ +p[b>>3];W=W+1|0}while((W|0)!=(G|0))}}break}case 695:case 694:case 691:case 690:case 689:case 696:break;default:{ma=f;break e}}f=f+1|0;if((f|0)>=(k[i>>2]|0))break f}}while(0);T=T+1|0;if((T|0)>=(Hc[k[(k[e>>2]|0)+12>>2]&511](e)|0))break d}T=v+56|0;C=v+4|0;k[v>>2]=27524;k[T>>2]=27544;B=0;wa(508,v+56|0,C|0);U=B;B=0;if(U&1){U=Rb()|0;na=Q;oa=U;vva(T);Qb(oa|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[T>>2]=27488;B=0;va(448,C|0);U=B;B=0;do if(U&1){S=Rb()|0;pa=Q;qa=S}else{k[C>>2]=27560;S=v+36|0;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;k[v+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,C|0,c|0);H=B;B=0;if(H&1){H=Rb()|0;f=Q;Yua(c);Yua(S);Ava(C);pa=f;qa=H;break}Yua(c);B=0;H=Ia(40,v|0,125591,9)|0;f=B;B=0;g:do if((((!(f&1)?(B=0,V=ya(427,k[(k[t>>2]|0)+(ma<<2)>>2]|0)|0,N=B,B=0,!(N&1)):0)?(N=Lta(V)|0,B=0,W=Ia(40,H|0,V|0,N|0)|0,N=B,B=0,!(N&1)):0)?(B=0,N=Ia(40,W|0,146481,18)|0,W=B,B=0,!(W&1)):0)?(B=0,Xa(239,N|0,0)|0,N=B,B=0,!(N&1)):0){N=Ab(20)|0;B=0;eb(502,w|0,125033,80);W=B;B=0;do if(!(W&1)){B=0;eb(502,x|0,128235,16);V=B;B=0;if(V&1){V=Rb()|0;g=Q;Yua(w);ra=g;sa=V;break}B=0;wa(510,y|0,C|0);V=B;B=0;if(V&1){V=Rb()|0;ta=1;xa=V;za=Q}else{B=0;ua(163,N|0,w|0,x|0,1033,y|0);V=B;B=0;if(V&1)Aa=1;else{B=0;eb(503,N|0,1240,229);B=0;Aa=0}V=Rb()|0;g=Q;Yua(y);ta=Aa;xa=V;za=g}Yua(x);Yua(w);if(ta){ra=za;sa=xa}else{Ba=xa;Ca=za;break g}}else{g=Rb()|0;ra=Q;sa=g}while(0);zb(N|0);Ba=sa;Ca=ra}else Z=86;while(0);if((Z|0)==86){H=Rb()|0;Ba=H;Ca=Q}k[v>>2]=27468;k[T>>2]=27488;k[C>>2]=27560;Yua(S);Ava(C);vva(T);_=Ba;ba=Ca;Qb(_|0)}while(0);na=pa;oa=qa;vva(T);Qb(oa|0)}while(0);if((k[d>>2]|0)!=301)xq(z,J,971);oa=k[t>>2]|0;if(oa)Tqa(oa);k[t>>2]=0;t=k[u>>2]|0;if(t)Tqa(t);k[u>>2]=0;Tqa(I);if((k[d>>2]|0)!=300?(ap(z),(z|0)!=0):0)Ec[k[(k[z>>2]|0)+4>>2]&1023](z);if(e)Ec[k[(k[e>>2]|0)+4>>2]&1023](e);A=J;r=a;return A|0}function w6(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0.0,S=0,T=0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,la=0,ma=0,na=0;a=r;r=r+272|0;c=a+248|0;d=a+244|0;e=a+240|0;f=a+48|0;g=a+40|0;h=a+32|0;i=a+24|0;j=a+16|0;l=a+8|0;m=a;n=a+236|0;o=a+232|0;q=a+96|0;s=a+80|0;t=a+68|0;u=a+56|0;if(!(Hc[k[(k[b>>2]|0)+252>>2]&511](b)|0)){v=0;r=a;return v|0}k[n>>2]=0;k[o>>2]=0;cp(b,e,298);w=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;x=iq(b,540)|0;y=Rqa(w>>>0>536870911?-1:w<<3)|0;Fc[k[(k[b>>2]|0)+192>>2]&1023](b,o);cp(b,d,199);qp(b,n,0,180);z=Wo(b,179)|0;A=Wo(b,674)|0;C=Wo(b,203)|0;if((k[e>>2]|0)==301){D=0;E=0}else{F=Wo(b,677)|0;D=F;E=Wo(b,204)|0}F=k[d>>2]|0;a:do if((F|0)>0){G=k[n>>2]|0;H=0;while(1){if((k[G+(H<<2)>>2]|0)==660)break;H=H+1|0;if((H|0)>=(F|0))break a}Bp(b,m,659)}while(0);F=ed[k[(k[b>>2]|0)+332>>2]&511](b,4)|0;H=Hc[k[(k[F>>2]|0)+8>>2]&511](F)|0;b:do if((H|0)<(Hc[k[(k[F>>2]|0)+12>>2]&511](F)|0)){G=(w|0)>0;I=F+8|0;J=x+4|0;K=H;c:while(1){Fc[k[(k[F>>2]|0)+24>>2]&1023](F,K);rd[k[(k[b>>2]|0)+276>>2]&511](b,f,k[o>>2]|0,F);nd[k[(k[b>>2]|0)+336>>2]&1023](b,y,F);nd[k[(k[A>>2]|0)+48>>2]&1023](A,g,F);nd[k[(k[C>>2]|0)+48>>2]&1023](C,i,F);if((k[e>>2]|0)!=301){nd[k[(k[D>>2]|0)+48>>2]&1023](D,h,F);nd[k[(k[E>>2]|0)+48>>2]&1023](E,j,F)}d:do if((k[d>>2]|0)>0){L=k[n>>2]|0;M=0;while(1){rd[k[(k[z>>2]|0)+56>>2]&511](z,l,F,k[L+(M<<2)>>2]|0);L=k[n>>2]|0;switch(k[L+(M<<2)>>2]|0){case 658:{if(G){N=k[J>>2]|0;if((k[e>>2]|0)==301){O=0;do{P=N+(O<<3)|0;p[P>>3]=(+p[i>>3]-+p[g>>3])*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[y+(O<<3)>>3]+ +p[P>>3];O=O+1|0}while((O|0)!=(w|0))}else{O=0;do{R=+p[j>>3]-+p[h>>3];P=y+(O<<3)|0;S=O<<1;T=N+(S<<3)|0;p[T>>3]=(+p[i>>3]-+p[g>>3])*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[P>>3]+ +p[T>>3];T=N+((S|1)<<3)|0;p[T>>3]=R*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[P>>3]+ +p[T>>3];O=O+1|0}while((O|0)!=(w|0))}}break}case 663:{if(G){O=k[J>>2]|0;if((k[e>>2]|0)==301){N=0;do{R=+p[i>>3];U=3.170979198376458e-05/(R+2.220446049250313e-16);T=O+(N<<3)|0;p[T>>3]=+p[T>>3]+ +p[y+(N<<3)>>3]*(+p[I>>3]*(+p[f>>3]*(+p[l>>3]*((R==0.0?0.0:U*U)*(R-+p[g>>3])))));N=N+1|0}while((N|0)!=(w|0))}else{N=0;do{R=+p[i>>3];U=3.170979198376458e-05/(R+2.220446049250313e-16);V=+p[j>>3];W=3.170979198376458e-05/(V+2.220446049250313e-16);X=(V-+p[h>>3])*(V==0.0?0.0:W*W);T=y+(N<<3)|0;P=N<<1;S=O+(P<<3)|0;p[S>>3]=(R==0.0?0.0:U*U)*(R-+p[g>>3])*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[T>>3]+ +p[S>>3];S=O+((P|1)<<3)|0;p[S>>3]=X*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[T>>3]+ +p[S>>3];N=N+1|0}while((N|0)!=(w|0))}}break}case 661:{if(G){N=k[J>>2]|0;if((k[e>>2]|0)==301){O=0;do{X=+p[g>>3];R=+$(+X)+2.220446049250313e-16;U=X*(-8.044087261228962e-09/(R*R)*+ka(+(R/(+$(+(+p[i>>3]))+2.220446049250313e-16))));S=N+(O<<3)|0;p[S>>3]=+p[S>>3]+ +p[y+(O<<3)>>3]*(+p[I>>3]*(+p[f>>3]*(+p[l>>3]*U)));O=O+1|0}while((O|0)!=(w|0))}else{O=0;do{U=+p[g>>3];R=+p[h>>3];X=+aa(+(U*U+R*R))+2.220446049250313e-16;W=+p[i>>3];V=+p[j>>3];Y=-8.044087261228962e-09/(X*X)*+ka(+(X/(+aa(+(W*W+V*V))+2.220446049250313e-16)));S=y+(O<<3)|0;T=O<<1;P=N+(T<<3)|0;p[P>>3]=+p[P>>3]+ +p[S>>3]*(+p[I>>3]*(+p[f>>3]*(+p[l>>3]*(U*Y))));P=N+((T|1)<<3)|0;p[P>>3]=R*Y*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[S>>3]+ +p[P>>3];O=O+1|0}while((O|0)!=(w|0))}}break}case 660:{if(G){O=k[J>>2]|0;if((k[e>>2]|0)==301){N=0;do{Y=+p[g>>3];R=+p[i>>3];U=(R-Y)*(1.0/(+p[m>>3]*2.0*+$(+(Y-R))+2.220446049250313e-16));P=O+(N<<3)|0;p[P>>3]=+p[P>>3]+ +p[y+(N<<3)>>3]*(+p[I>>3]*(+p[f>>3]*(+p[l>>3]*U)));N=N+1|0}while((N|0)!=(w|0))}else{N=0;do{U=+p[g>>3];R=+p[i>>3];Y=U-R;V=+p[h>>3];W=+p[j>>3];X=V-W;Z=1.0/(+p[m>>3]*2.0*+aa(+(Y*Y+X*X))+2.220446049250313e-16);P=y+(N<<3)|0;S=N<<1;T=O+(S<<3)|0;p[T>>3]=+p[T>>3]+ +p[P>>3]*(+p[I>>3]*(+p[f>>3]*(+p[l>>3]*((R-U)*Z))));T=O+((S|1)<<3)|0;p[T>>3]=(W-V)*Z*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[P>>3]+ +p[T>>3];N=N+1|0}while((N|0)!=(w|0))}}break}case 662:{if(G){N=k[J>>2]|0;if((k[e>>2]|0)==301){O=0;do{Z=+p[g>>3];V=+$(+Z)+2.220446049250313e-16;W=+ka(+(V/(+$(+(+p[i>>3]))+2.220446049250313e-16)))*-1.0055109076536202e-09/(Z+2.220446049250313e-16);T=N+(O<<3)|0;p[T>>3]=W*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[y+(O<<3)>>3]+ +p[T>>3];O=O+1|0}while((O|0)!=(w|0))}else{O=0;do{W=+p[g>>3];Z=+$(+W)+2.220446049250313e-16;V=+ka(+(Z/(+$(+(+p[i>>3]))+2.220446049250313e-16)))*-1.0055109076536202e-09/(W+2.220446049250313e-16);W=+p[h>>3];Z=+$(+W)+2.220446049250313e-16;U=+ka(+(Z/(+$(+(+p[j>>3]))+2.220446049250313e-16)))*-1.0055109076536202e-09/(W+2.220446049250313e-16);T=y+(O<<3)|0;P=O<<1;S=N+(P<<3)|0;p[S>>3]=V*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[T>>3]+ +p[S>>3];S=N+((P|1)<<3)|0;p[S>>3]=U*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[T>>3]+ +p[S>>3];O=O+1|0}while((O|0)!=(w|0))}}break}case 695:case 694:case 691:case 690:case 689:case 696:break;default:{_=M;break c}}M=M+1|0;if((M|0)>=(k[d>>2]|0))break d}}while(0);K=K+1|0;if((K|0)>=(Hc[k[(k[F>>2]|0)+12>>2]&511](F)|0))break b}K=q+56|0;I=q+4|0;k[q>>2]=27524;k[K>>2]=27544;B=0;wa(508,q+56|0,I|0);J=B;B=0;if(J&1){J=Rb()|0;ba=Q;ca=J;vva(K);Qb(ca|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[K>>2]=27488;B=0;va(448,I|0);J=B;B=0;do if(J&1){G=Rb()|0;da=Q;ea=G}else{k[I>>2]=27560;G=q+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,I|0,c|0);M=B;B=0;if(M&1){M=Rb()|0;L=Q;Yua(c);Yua(G);Ava(I);da=L;ea=M;break}Yua(c);B=0;M=Ia(40,q|0,125591,9)|0;L=B;B=0;if((((!(L&1)?(B=0,L=ya(427,k[(k[n>>2]|0)+(_<<2)>>2]|0)|0,O=B,B=0,!(O&1)):0)?(O=Lta(L)|0,B=0,N=Ia(40,M|0,L|0,O|0)|0,O=B,B=0,!(O&1)):0)?(B=0,O=Ia(40,N|0,146481,18)|0,N=B,B=0,!(N&1)):0)?(B=0,Xa(239,O|0,0)|0,O=B,B=0,!(O&1)):0){O=Ab(20)|0;B=0;eb(502,s|0,125033,80);N=B;B=0;do if(!(N&1)){B=0;eb(502,t|0,125195,15);L=B;B=0;if(L&1){L=Rb()|0;M=Q;Yua(s);fa=M;ga=L;break}B=0;wa(510,u|0,I|0);L=B;B=0;if(L&1){L=Rb()|0;ha=Q;ia=L;ja=1}else{B=0;ua(163,O|0,s|0,t|0,788,u|0);L=B;B=0;if(L&1)la=1;else{B=0;eb(503,O|0,1240,229);B=0;la=0}L=Rb()|0;M=Q;Yua(u);ha=M;ia=L;ja=la}Yua(t);Yua(s);if(ja){fa=ha;ga=ia}else{ma=ha;na=ia;k[q>>2]=27468;k[K>>2]=27488;k[I>>2]=27560;Yua(G);Ava(I);vva(K);Qb(na|0)}}else{L=Rb()|0;fa=Q;ga=L}while(0);zb(O|0);ma=fa;na=ga;k[q>>2]=27468;k[K>>2]=27488;k[I>>2]=27560;Yua(G);Ava(I);vva(K);Qb(na|0)}N=Rb()|0;ma=Q;na=N;k[q>>2]=27468;k[K>>2]=27488;k[I>>2]=27560;Yua(G);Ava(I);vva(K);Qb(na|0)}while(0);ba=da;ca=ea;vva(K);Qb(ca|0)}while(0);if((k[e>>2]|0)!=301)xq(b,x,971);b=k[n>>2]|0;if(b)Tqa(b);k[n>>2]=0;n=k[o>>2]|0;if(n)Tqa(n);k[o>>2]=0;Tqa(y);if(F)Ec[k[(k[F>>2]|0)+4>>2]&1023](F);v=x;r=a;return v|0}function x6(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0,N=0,O=0.0,P=0,R=0,S=0,T=0,U=0.0,V=0,W=0,X=0.0,Y=0.0,Z=0.0,_=0.0,ba=0.0,ca=0.0,da=0.0,ea=0,fa=0.0,ga=0,ha=0,ia=0,ja=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0;a=r;r=r+272|0;c=a+248|0;d=a+244|0;e=a+240|0;f=a+48|0;g=a+40|0;h=a+32|0;i=a+24|0;j=a+16|0;l=a+8|0;m=a;n=a+236|0;o=a+232|0;q=a+96|0;s=a+80|0;t=a+68|0;u=a+56|0;if(!(Hc[k[(k[b>>2]|0)+252>>2]&511](b)|0)){v=0;r=a;return v|0}k[n>>2]=0;k[o>>2]=0;cp(b,e,298);w=Hc[k[(k[b>>2]|0)+396>>2]&511](b)|0;x=Hc[k[(k[b>>2]|0)+392>>2]&511](b)|0;y=x+w|0;z=Rqa(y>>>0>1073741823?-1:y<<2)|0;y=(w|0)>0;if((k[e>>2]|0)==301){if(y){A=0;do{k[z+(A<<2)>>2]=971;A=A+1|0}while((A|0)!=(w|0))}}else if(y){A=0;do{k[z+(A<<2)>>2]=972;A=A+1|0}while((A|0)!=(w|0))}if((x|0)>0){A=0;do{k[z+(A+w<<2)>>2]=653;A=A+1|0}while((A|0)!=(x|0))}x=iq(b,542)|0;A=Rqa(w>>>0>536870911?-1:w<<3)|0;Fc[k[(k[b>>2]|0)+192>>2]&1023](b,o);cp(b,d,199);qp(b,n,0,180);C=Wo(b,179)|0;D=Wo(b,674)|0;E=Wo(b,203)|0;if((k[e>>2]|0)==301){F=0;G=0}else{H=Wo(b,677)|0;F=H;G=Wo(b,204)|0}H=k[d>>2]|0;a:do if((H|0)>0){I=k[n>>2]|0;J=0;while(1){if((k[I+(J<<2)>>2]|0)==660)break;J=J+1|0;if((J|0)>=(H|0))break a}Bp(b,m,659)}while(0);H=ed[k[(k[b>>2]|0)+332>>2]&511](b,4)|0;J=Hc[k[(k[H>>2]|0)+8>>2]&511](H)|0;b:do if((J|0)<(Hc[k[(k[H>>2]|0)+12>>2]&511](H)|0)){I=H+8|0;K=x+4|0;L=0.0;M=J;c:while(1){Fc[k[(k[H>>2]|0)+24>>2]&1023](H,M);rd[k[(k[b>>2]|0)+276>>2]&511](b,f,k[o>>2]|0,H);nd[k[(k[b>>2]|0)+368>>2]&1023](b,A,H);nd[k[(k[D>>2]|0)+48>>2]&1023](D,g,H);nd[k[(k[E>>2]|0)+48>>2]&1023](E,i,H);if((k[e>>2]|0)!=301){nd[k[(k[F>>2]|0)+48>>2]&1023](F,h,H);nd[k[(k[G>>2]|0)+48>>2]&1023](G,j,H)}d:do if((k[d>>2]|0)>0){N=k[n>>2]|0;O=L;P=0;while(1){rd[k[(k[C>>2]|0)+56>>2]&511](C,l,H,k[N+(P<<2)>>2]|0);N=k[n>>2]|0;switch(k[N+(P<<2)>>2]|0){case 658:{if(y){R=k[K>>2]|0;if((k[e>>2]|0)==301){S=0;do{T=R+(S<<1<<3)|0;p[T>>3]=(+p[i>>3]-+p[g>>3])*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[A+(S<<3)>>3]+ +p[T>>3];S=S+1|0}while((S|0)!=(w|0));U=O}else{S=0;do{T=A+(S<<3)|0;V=S*3|0;W=R+(V<<3)|0;p[W>>3]=(+p[i>>3]-+p[g>>3])*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[T>>3]+ +p[W>>3];X=+p[j>>3]-+p[h>>3];W=R+(V+1<<3)|0;p[W>>3]=X*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[T>>3]+ +p[W>>3];S=S+1|0}while((S|0)!=(w|0));U=X}}else U=O;break}case 663:{if(y){S=k[K>>2]|0;if((k[e>>2]|0)==301){R=0;do{X=+p[i>>3];Y=3.170979198376458e-05/(X+2.220446049250313e-16);W=A+(R<<3)|0;T=R<<1;V=S+(T<<3)|0;p[V>>3]=+p[V>>3]+ +p[W>>3]*(+p[I>>3]*(+p[f>>3]*(+p[l>>3]*((X==0.0?0.0:Y*Y)*(X-+p[g>>3])))));V=S+((T|1)<<3)|0;p[V>>3]=O*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[W>>3]+ +p[V>>3];R=R+1|0}while((R|0)!=(w|0));U=O}else{R=0;do{X=+p[i>>3];Y=3.170979198376458e-05/(X+2.220446049250313e-16);Z=+p[j>>3];_=3.170979198376458e-05/(Z+2.220446049250313e-16);ba=(Z-+p[h>>3])*(Z==0.0?0.0:_*_);V=A+(R<<3)|0;W=R*3|0;T=S+(W<<3)|0;p[T>>3]=(X==0.0?0.0:Y*Y)*(X-+p[g>>3])*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[V>>3]+ +p[T>>3];T=S+(W+1<<3)|0;p[T>>3]=ba*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[V>>3]+ +p[T>>3];R=R+1|0}while((R|0)!=(w|0));U=ba}}else U=O;break}case 661:{if(y){R=k[K>>2]|0;if((k[e>>2]|0)==301){S=0;do{ba=+p[g>>3];X=+$(+ba)+2.220446049250313e-16;Y=ba*(-8.044087261228962e-09/(X*X)*+ka(+(X/(+$(+(+p[i>>3]))+2.220446049250313e-16))));T=R+(S<<1<<3)|0;p[T>>3]=+p[T>>3]+ +p[A+(S<<3)>>3]*(+p[I>>3]*(+p[f>>3]*(+p[l>>3]*Y)));S=S+1|0}while((S|0)!=(w|0));U=O}else{S=0;do{Y=+p[g>>3];X=+p[h>>3];ba=+aa(+(Y*Y+X*X))+2.220446049250313e-16;_=+p[i>>3];Z=+p[j>>3];ca=-8.044087261228962e-09/(ba*ba)*+ka(+(ba/(+aa(+(_*_+Z*Z))+2.220446049250313e-16)));Z=X*ca;T=A+(S<<3)|0;V=S*3|0;W=R+(V<<3)|0;p[W>>3]=+p[W>>3]+ +p[T>>3]*(+p[I>>3]*(+p[f>>3]*(+p[l>>3]*(Y*ca))));W=R+(V+1<<3)|0;p[W>>3]=Z*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[T>>3]+ +p[W>>3];S=S+1|0}while((S|0)!=(w|0));U=Z}}else U=O;break}case 660:{if(y){S=k[K>>2]|0;if((k[e>>2]|0)==301){R=0;do{Z=+p[g>>3];ca=+p[i>>3];Y=(ca-Z)*(1.0/(+p[m>>3]*2.0*+$(+(Z-ca))+2.220446049250313e-16));W=S+(R<<1<<3)|0;p[W>>3]=+p[W>>3]+ +p[A+(R<<3)>>3]*(+p[I>>3]*(+p[f>>3]*(+p[l>>3]*Y)));R=R+1|0}while((R|0)!=(w|0));U=O}else{R=0;do{Y=+p[g>>3];ca=+p[i>>3];Z=Y-ca;X=+p[h>>3];_=+p[j>>3];ba=X-_;da=1.0/(+p[m>>3]*2.0*+aa(+(Z*Z+ba*ba))+2.220446049250313e-16);ba=(_-X)*da;W=A+(R<<3)|0;T=R*3|0;V=S+(T<<3)|0;p[V>>3]=+p[V>>3]+ +p[W>>3]*(+p[I>>3]*(+p[f>>3]*(+p[l>>3]*((ca-Y)*da))));V=S+(T+1<<3)|0;p[V>>3]=ba*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[W>>3]+ +p[V>>3];R=R+1|0}while((R|0)!=(w|0));U=ba}}else U=O;break}case 662:{if(y){R=k[K>>2]|0;if((k[e>>2]|0)==301){S=0;do{ba=+p[g>>3];da=+$(+ba)+2.220446049250313e-16;Y=+ka(+(da/(+$(+(+p[i>>3]))+2.220446049250313e-16)))*-1.0055109076536202e-09/(ba+2.220446049250313e-16);V=R+(S<<1<<3)|0;p[V>>3]=Y*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[A+(S<<3)>>3]+ +p[V>>3];S=S+1|0}while((S|0)!=(w|0));U=O}else{S=0;do{Y=+p[g>>3];ba=+$(+Y)+2.220446049250313e-16;da=+ka(+(ba/(+$(+(+p[i>>3]))+2.220446049250313e-16)))*-1.0055109076536202e-09/(Y+2.220446049250313e-16);Y=+p[h>>3];ba=+$(+Y)+2.220446049250313e-16;ca=+ka(+(ba/(+$(+(+p[j>>3]))+2.220446049250313e-16)))*-1.0055109076536202e-09/(Y+2.220446049250313e-16);V=A+(S<<3)|0;W=S*3|0;T=R+(W<<3)|0;p[T>>3]=da*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[V>>3]+ +p[T>>3];T=R+(W+1<<3)|0;p[T>>3]=ca*+p[l>>3]*+p[f>>3]*+p[I>>3]*+p[V>>3]+ +p[T>>3];S=S+1|0}while((S|0)!=(w|0));U=ca}}else U=O;break}case 694:case 691:case 690:case 689:case 696:{U=O;break}default:{ea=P;break c}}P=P+1|0;if((P|0)>=(k[d>>2]|0)){fa=U;break d}else O=U}}else fa=L;while(0);M=M+1|0;if((M|0)>=(Hc[k[(k[H>>2]|0)+12>>2]&511](H)|0))break b;else L=fa}M=q+56|0;I=q+4|0;k[q>>2]=27524;k[M>>2]=27544;B=0;wa(508,q+56|0,I|0);K=B;B=0;if(K&1){K=Rb()|0;ga=Q;ha=K;vva(M);Qb(ha|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[M>>2]=27488;B=0;va(448,I|0);K=B;B=0;do if(K&1){P=Rb()|0;ia=Q;ja=P}else{k[I>>2]=27560;P=q+36|0;k[P>>2]=0;k[P+4>>2]=0;k[P+8>>2]=0;k[P+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,I|0,c|0);N=B;B=0;if(N&1){N=Rb()|0;S=Q;Yua(c);Yua(P);Ava(I);ia=S;ja=N;break}Yua(c);B=0;N=Ia(40,q|0,125591,9)|0;S=B;B=0;if((((!(S&1)?(B=0,S=ya(427,k[(k[n>>2]|0)+(ea<<2)>>2]|0)|0,R=B,B=0,!(R&1)):0)?(R=Lta(S)|0,B=0,T=Ia(40,N|0,S|0,R|0)|0,R=B,B=0,!(R&1)):0)?(B=0,R=Ia(40,T|0,146481,18)|0,T=B,B=0,!(T&1)):0)?(B=0,Xa(239,R|0,0)|0,R=B,B=0,!(R&1)):0){R=Ab(20)|0;B=0;eb(502,s|0,125033,80);T=B;B=0;do if(T&1){S=Rb()|0;la=Q;ma=S}else{B=0;eb(502,t|0,125211,15);S=B;B=0;if(S&1){S=Rb()|0;N=Q;Yua(s);la=N;ma=S;break}B=0;wa(510,u|0,I|0);S=B;B=0;if(S&1){S=Rb()|0;na=Q;oa=S;pa=1}else{B=0;ua(163,R|0,s|0,t|0,553,u|0);S=B;B=0;if(S&1)qa=1;else{B=0;eb(503,R|0,1240,229);B=0;qa=0}S=Rb()|0;N=Q;Yua(u);na=N;oa=S;pa=qa}Yua(t);Yua(s);if(pa){la=na;ma=oa;break}else{ra=na;sa=oa}k[q>>2]=27468;k[M>>2]=27488;k[I>>2]=27560;Yua(P);Ava(I);vva(M);Qb(sa|0)}while(0);zb(R|0);ra=la;sa=ma;k[q>>2]=27468;k[M>>2]=27488;k[I>>2]=27560;Yua(P);Ava(I);vva(M);Qb(sa|0)}T=Rb()|0;ra=Q;sa=T;k[q>>2]=27468;k[M>>2]=27488;k[I>>2]=27560;Yua(P);Ava(I);vva(M);Qb(sa|0)}while(0);ga=ia;ha=ja;vva(M);Qb(ha|0)}while(0);zq(b,x,z);Tqa(z);z=k[n>>2]|0;if(z)Tqa(z);k[n>>2]=0;n=k[o>>2]|0;if(n)Tqa(n);k[o>>2]=0;Tqa(A);if(H)Ec[k[(k[H>>2]|0)+4>>2]&1023](H);v=x;r=a;return v|0}function y6(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125033,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,1050,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function z6(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0;a=r;r=r+1408|0;f=a+1396|0;g=a+1356|0;h=a+1340|0;i=a+1324|0;j=a+1176|0;l=a+1384|0;m=a+1372|0;n=a+1360|0;o=a+1040|0;p=a+1344|0;q=a+1328|0;s=a+1312|0;t=a+904|0;u=a+888|0;v=a+740|0;w=a+728|0;x=a+752|0;y=a+304|0;z=a+156|0;A=a+144|0;C=a+592|0;D=a+132|0;E=a+120|0;F=a+108|0;G=a+456|0;H=a+96|0;I=a+84|0;J=a+72|0;K=a+320|0;L=a+60|0;M=a+48|0;N=a+36|0;O=a+168|0;P=a+24|0;R=a+12|0;S=a;if(!($p(c)|0)){r=a;return}Ap(c,g,533);k[h>>2]=0;cp(c,i,199);qp(c,h,0,180);switch(d|0){case 104:case 105:case 214:case 215:case 227:break;default:{T=j+56|0;U=j+4|0;k[j>>2]=27524;k[T>>2]=27544;B=0;wa(508,j+56|0,U|0);V=B;B=0;if(V&1){V=Rb()|0;W=Q;X=V;vva(T);Qb(X|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[T>>2]=27488;B=0;va(448,U|0);V=B;B=0;do if(V&1){Y=Rb()|0;Z=Q;_=Y}else{k[U>>2]=27560;Y=j+36|0;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;k[j+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,U|0,f|0);$=B;B=0;if($&1){$=Rb()|0;aa=Q;Yua(f);Yua(Y);Ava(U);Z=aa;_=$;break}Yua(f);B=0;$=Ia(40,j|0,125582,8)|0;aa=B;B=0;a:do if((((!(aa&1)?(B=0,ba=ya(427,d|0)|0,ca=B,B=0,!(ca&1)):0)?(ca=Lta(ba)|0,B=0,da=Ia(40,$|0,ba|0,ca|0)|0,ca=B,B=0,!(ca&1)):0)?(B=0,ca=Ia(40,da|0,144645,14)|0,da=B,B=0,!(da&1)):0)?(B=0,Xa(239,ca|0,0)|0,ca=B,B=0,!(ca&1)):0){ca=Ab(20)|0;B=0;eb(502,l|0,125033,80);da=B;B=0;do if(!(da&1)){B=0;eb(502,m|0,138252,9);ba=B;B=0;if(ba&1){ba=Rb()|0;ea=Q;Yua(l);fa=ea;ga=ba;break}B=0;wa(510,n|0,U|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ha=Q;ia=ba;ja=1}else{B=0;ua(163,ca|0,l|0,m|0,1080,n|0);ba=B;B=0;if(ba&1)ka=1;else{B=0;eb(503,ca|0,1240,229);B=0;ka=0}ba=Rb()|0;ea=Q;Yua(n);ha=ea;ia=ba;ja=ka}Yua(m);Yua(l);if(ja){fa=ha;ga=ia}else{la=ha;ma=ia;break a}}else{ba=Rb()|0;fa=Q;ga=ba}while(0);zb(ca|0);la=fa;ma=ga}else na=22;while(0);if((na|0)==22){$=Rb()|0;la=Q;ma=$}k[j>>2]=27468;k[T>>2]=27488;k[U>>2]=27560;Yua(Y);Ava(U);vva(T);oa=la;pa=ma;Qb(pa|0)}while(0);W=Z;X=_;vva(T);Qb(X|0)}}b:do if((k[i>>2]|0)>0){X=0;c:while(1){switch(k[(k[h>>2]|0)+(X<<2)>>2]|0){case 660:case 662:case 661:case 663:case 658:break;case 696:{A6(0,c,b,e);break}case 694:{B6(0,c,b,e);break}case 695:{C6(0,c,b,e);break}default:{qa=X;break c}}X=X+1|0;if((X|0)>=(k[i>>2]|0))break b}X=o+56|0;Y=o+4|0;k[o>>2]=27524;k[X>>2]=27544;B=0;wa(508,o+56|0,Y|0);T=B;B=0;if(T&1){T=Rb()|0;ra=Q;sa=T;vva(X);Qb(sa|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[X>>2]=27488;B=0;va(448,Y|0);T=B;B=0;do if(T&1){_=Rb()|0;ta=Q;xa=_}else{k[Y>>2]=27560;_=o+36|0;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0;k[o+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,Y|0,f|0);Z=B;B=0;if(Z&1){Z=Rb()|0;W=Q;Yua(f);Yua(_);Ava(Y);ta=W;xa=Z;break}Yua(f);B=0;Z=Ia(40,o|0,125591,9)|0;W=B;B=0;d:do if((((!(W&1)?(B=0,ma=ya(427,k[(k[h>>2]|0)+(qa<<2)>>2]|0)|0,la=B,B=0,!(la&1)):0)?(la=Lta(ma)|0,B=0,U=Ia(40,Z|0,ma|0,la|0)|0,la=B,B=0,!(la&1)):0)?(B=0,la=Ia(40,U|0,146481,18)|0,U=B,B=0,!(U&1)):0)?(B=0,Xa(239,la|0,0)|0,la=B,B=0,!(la&1)):0){la=Ab(20)|0;B=0;eb(502,p|0,125033,80);U=B;B=0;do if(!(U&1)){B=0;eb(502,q|0,138252,9);ma=B;B=0;if(ma&1){ma=Rb()|0;j=Q;Yua(p);za=j;Aa=ma;break}B=0;wa(510,s|0,Y|0);ma=B;B=0;if(ma&1){ma=Rb()|0;Ba=1;Ca=Q;Da=ma}else{B=0;ua(163,la|0,p|0,q|0,1093,s|0);ma=B;B=0;if(ma&1)Ea=1;else{B=0;eb(503,la|0,1240,229);B=0;Ea=0}ma=Rb()|0;j=Q;Yua(s);Ba=Ea;Ca=j;Da=ma}Yua(q);Yua(p);if(Ba){za=Ca;Aa=Da}else{Fa=Ca;Ga=Da;break d}}else{ma=Rb()|0;za=Q;Aa=ma}while(0);zb(la|0);Fa=za;Ga=Aa}else na=52;while(0);if((na|0)==52){Z=Rb()|0;Fa=Q;Ga=Z}k[o>>2]=27468;k[X>>2]=27488;k[Y>>2]=27560;Yua(_);Ava(Y);vva(X);oa=Fa;pa=Ga;Qb(pa|0)}while(0);ra=ta;sa=xa;vva(X);Qb(sa|0)}while(0);e:do switch(d|0){case 105:{switch(k[g>>2]|0){case 534:{break e;break}case 536:{D6(0,c,b,e);break e;break}case 539:{D6(0,c,b,e);break e;break}case 540:{E6(0,c,b,e);break e;break}case 542:{F6(0,c,b,e);break e;break}default:{sa=t+56|0;xa=t+4|0;k[t>>2]=27524;k[sa>>2]=27544;B=0;wa(508,t+56|0,xa|0);ta=B;B=0;if(ta&1){ta=Rb()|0;Ha=Q;Ja=ta;vva(sa);Qb(Ja|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[sa>>2]=27488;B=0;va(448,xa|0);ta=B;B=0;do if(ta&1){ra=Rb()|0;Ka=Q;La=ra}else{k[xa>>2]=27560;ra=t+36|0;k[ra>>2]=0;k[ra+4>>2]=0;k[ra+8>>2]=0;k[ra+12>>2]=0;k[t+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,xa|0,f|0);Ga=B;B=0;if(Ga&1){Ga=Rb()|0;Fa=Q;Yua(f);Yua(ra);Ava(xa);Ka=Fa;La=Ga;break}Yua(f);B=0;Ga=Ia(40,t|0,128699,14)|0;Fa=B;B=0;f:do if((((!(Fa&1)?(B=0,o=ya(427,k[g>>2]|0)|0,Aa=B,B=0,!(Aa&1)):0)?(Aa=Lta(o)|0,B=0,za=Ia(40,Ga|0,o|0,Aa|0)|0,Aa=B,B=0,!(Aa&1)):0)?(B=0,Aa=Ia(40,za|0,146481,18)|0,za=B,B=0,!(za&1)):0)?(B=0,Xa(239,Aa|0,0)|0,Aa=B,B=0,!(Aa&1)):0){Aa=Ab(20)|0;B=0;eb(502,u|0,125033,80);za=B;B=0;do if(!(za&1)){B=0;eb(502,v|0,138252,9);o=B;B=0;if(o&1){o=Rb()|0;Da=Q;Yua(u);Ma=Da;Na=o;break}B=0;wa(510,w|0,xa|0);o=B;B=0;if(o&1){o=Rb()|0;Oa=1;Pa=Q;Qa=o}else{B=0;ua(163,Aa|0,u|0,v|0,1105,w|0);o=B;B=0;if(o&1)Ra=1;else{B=0;eb(503,Aa|0,1240,229);B=0;Ra=0}o=Rb()|0;Da=Q;Yua(w);Oa=Ra;Pa=Da;Qa=o}Yua(v);Yua(u);if(Oa){Ma=Pa;Na=Qa}else{Sa=Pa;Ta=Qa;break f}}else{o=Rb()|0;Ma=Q;Na=o}while(0);zb(Aa|0);Sa=Ma;Ta=Na}else na=85;while(0);if((na|0)==85){Ga=Rb()|0;Sa=Q;Ta=Ga}k[t>>2]=27468;k[sa>>2]=27488;k[xa>>2]=27560;Yua(ra);Ava(xa);vva(sa);oa=Sa;pa=Ta;Qb(pa|0)}while(0);Ha=Ka;Ja=La;vva(sa);Qb(Ja|0)}}break}case 104:{switch(k[g>>2]|0){case 534:{break e;break}case 536:{G6(0,c,b,e);break e;break}case 539:{D6(0,c,b,e);break e;break}case 540:{H6(0,c,b,e);break e;break}case 542:{I6(0,c,b,e);break e;break}default:{xa=x+56|0;ta=x+4|0;k[x>>2]=27524;k[xa>>2]=27544;B=0;wa(508,x+56|0,ta|0);X=B;B=0;if(X&1){X=Rb()|0;Ua=Q;Va=X;vva(xa);Qb(Va|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[xa>>2]=27488;B=0;va(448,ta|0);X=B;B=0;do if(X&1){Ga=Rb()|0;Wa=Q;Ya=Ga}else{k[ta>>2]=27560;Ga=x+36|0;k[Ga>>2]=0;k[Ga+4>>2]=0;k[Ga+8>>2]=0;k[Ga+12>>2]=0;k[x+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,ta|0,f|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;_=Q;Yua(f);Yua(Ga);Ava(ta);Wa=_;Ya=Fa;break}Yua(f);B=0;Fa=Ia(40,x|0,128699,14)|0;_=B;B=0;g:do if((((!(_&1)?(B=0,za=ya(427,k[g>>2]|0)|0,la=B,B=0,!(la&1)):0)?(la=Lta(za)|0,B=0,o=Ia(40,Fa|0,za|0,la|0)|0,la=B,B=0,!(la&1)):0)?(B=0,la=Ia(40,o|0,146481,18)|0,o=B,B=0,!(o&1)):0)?(B=0,Xa(239,la|0,0)|0,la=B,B=0,!(la&1)):0){la=Ab(20)|0;B=0;eb(502,y|0,125033,80);o=B;B=0;do if(!(o&1)){B=0;eb(502,z|0,138252,9);za=B;B=0;if(za&1){za=Rb()|0;Da=Q;Yua(y);Za=Da;_a=za;break}B=0;wa(510,A|0,ta|0);za=B;B=0;if(za&1){za=Rb()|0;$a=Q;ab=1;bb=za}else{B=0;ua(163,la|0,y|0,z|0,1115,A|0);za=B;B=0;if(za&1)cb=1;else{B=0;eb(503,la|0,1240,229);B=0;cb=0}za=Rb()|0;Da=Q;Yua(A);$a=Da;ab=cb;bb=za}Yua(z);Yua(y);if(ab){Za=$a;_a=bb}else{db=$a;fb=bb;break g}}else{za=Rb()|0;Za=Q;_a=za}while(0);zb(la|0);db=Za;fb=_a}else na=116;while(0);if((na|0)==116){Fa=Rb()|0;db=Q;fb=Fa}k[x>>2]=27468;k[xa>>2]=27488;k[ta>>2]=27560;Yua(Ga);Ava(ta);vva(xa);oa=db;pa=fb;Qb(pa|0)}while(0);Ua=Wa;Va=Ya;vva(xa);Qb(Va|0)}}break}case 215:{switch(k[g>>2]|0){case 534:{break e;break}case 536:{J6(0,c,b,e);break e;break}case 539:{J6(0,c,b,e);break e;break}case 540:{J6(0,c,b,e);break e;break}case 542:{J6(0,c,b,e);break e;break}default:{ta=C+56|0;X=C+4|0;k[C>>2]=27524;k[ta>>2]=27544;B=0;wa(508,C+56|0,X|0);sa=B;B=0;if(sa&1){sa=Rb()|0;gb=Q;hb=sa;vva(ta);Qb(hb|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[ta>>2]=27488;B=0;va(448,X|0);sa=B;B=0;do if(sa&1){Fa=Rb()|0;ib=Q;jb=Fa}else{k[X>>2]=27560;Fa=C+36|0;k[Fa>>2]=0;k[Fa+4>>2]=0;k[Fa+8>>2]=0;k[Fa+12>>2]=0;k[C+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,X|0,f|0);_=B;B=0;if(_&1){_=Rb()|0;ra=Q;Yua(f);Yua(Fa);Ava(X);ib=ra;jb=_;break}Yua(f);B=0;_=Ia(40,C|0,128699,14)|0;ra=B;B=0;h:do if((((!(ra&1)?(B=0,o=ya(427,k[g>>2]|0)|0,Aa=B,B=0,!(Aa&1)):0)?(Aa=Lta(o)|0,B=0,za=Ia(40,_|0,o|0,Aa|0)|0,Aa=B,B=0,!(Aa&1)):0)?(B=0,Aa=Ia(40,za|0,146481,18)|0,za=B,B=0,!(za&1)):0)?(B=0,Xa(239,Aa|0,0)|0,Aa=B,B=0,!(Aa&1)):0){Aa=Ab(20)|0;B=0;eb(502,D|0,125033,80);za=B;B=0;do if(!(za&1)){B=0;eb(502,E|0,138252,9);o=B;B=0;if(o&1){o=Rb()|0;Da=Q;Yua(D);kb=Da;lb=o;break}B=0;wa(510,F|0,X|0);o=B;B=0;if(o&1){o=Rb()|0;mb=1;nb=Q;ob=o}else{B=0;ua(163,Aa|0,D|0,E|0,1125,F|0);o=B;B=0;if(o&1)pb=1;else{B=0;eb(503,Aa|0,1240,229);B=0;pb=0}o=Rb()|0;Da=Q;Yua(F);mb=pb;nb=Da;ob=o}Yua(E);Yua(D);if(mb){kb=nb;lb=ob}else{qb=nb;rb=ob;break h}}else{o=Rb()|0;kb=Q;lb=o}while(0);zb(Aa|0);qb=kb;rb=lb}else na=147;while(0);if((na|0)==147){_=Rb()|0;qb=Q;rb=_}k[C>>2]=27468;k[ta>>2]=27488;k[X>>2]=27560;Yua(Fa);Ava(X);vva(ta);oa=qb;pa=rb;Qb(pa|0)}while(0);gb=ib;hb=jb;vva(ta);Qb(hb|0)}}break}case 214:{switch(k[g>>2]|0){case 534:{break e;break}case 536:{K6(0,c,b,e);break e;break}case 540:{L6(0,c,b,e);break e;break}case 542:{L6(0,c,b,e);break e;break}default:{X=G+56|0;sa=G+4|0;k[G>>2]=27524;k[X>>2]=27544;B=0;wa(508,G+56|0,sa|0);xa=B;B=0;if(xa&1){xa=Rb()|0;sb=Q;tb=xa;vva(X);Qb(tb|0)}k[G+128>>2]=0;k[G+132>>2]=-1;k[G>>2]=27468;k[X>>2]=27488;B=0;va(448,sa|0);xa=B;B=0;do if(xa&1){_=Rb()|0;ub=Q;vb=_}else{k[sa>>2]=27560;_=G+36|0;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0;k[G+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,sa|0,f|0);ra=B;B=0;if(ra&1){ra=Rb()|0;Ga=Q;Yua(f);Yua(_);Ava(sa);ub=Ga;vb=ra;break}Yua(f);B=0;ra=Ia(40,G|0,128699,14)|0;Ga=B;B=0;i:do if((((!(Ga&1)?(B=0,za=ya(427,k[g>>2]|0)|0,la=B,B=0,!(la&1)):0)?(la=Lta(za)|0,B=0,o=Ia(40,ra|0,za|0,la|0)|0,la=B,B=0,!(la&1)):0)?(B=0,la=Ia(40,o|0,146481,18)|0,o=B,B=0,!(o&1)):0)?(B=0,Xa(239,la|0,0)|0,la=B,B=0,!(la&1)):0){la=Ab(20)|0;B=0;eb(502,H|0,125033,80);o=B;B=0;do if(!(o&1)){B=0;eb(502,I|0,138252,9);za=B;B=0;if(za&1){za=Rb()|0;Da=Q;Yua(H);wb=Da;xb=za;break}B=0;wa(510,J|0,sa|0);za=B;B=0;if(za&1){za=Rb()|0;yb=1;Bb=Q;Cb=za}else{B=0;ua(163,la|0,H|0,I|0,1134,J|0);za=B;B=0;if(za&1)Db=1;else{B=0;eb(503,la|0,1240,229);B=0;Db=0}za=Rb()|0;Da=Q;Yua(J);yb=Db;Bb=Da;Cb=za}Yua(I);Yua(H);if(yb){wb=Bb;xb=Cb}else{Eb=Bb;Fb=Cb;break i}}else{za=Rb()|0;wb=Q;xb=za}while(0);zb(la|0);Eb=wb;Fb=xb}else na=177;while(0);if((na|0)==177){ra=Rb()|0;Eb=Q;Fb=ra}k[G>>2]=27468;k[X>>2]=27488;k[sa>>2]=27560;Yua(_);Ava(sa);vva(X);oa=Eb;pa=Fb;Qb(pa|0)}while(0);sb=ub;tb=vb;vva(X);Qb(tb|0)}}break}case 227:{switch(k[g>>2]|0){case 534:{break e;break}case 536:{M6(0,c,b,e);break e;break}default:{}}sa=K+56|0;xa=K+4|0;k[K>>2]=27524;k[sa>>2]=27544;B=0;wa(508,K+56|0,xa|0);ta=B;B=0;if(ta&1){ta=Rb()|0;Gb=Q;Hb=ta;vva(sa);Qb(Hb|0)}k[K+128>>2]=0;k[K+132>>2]=-1;k[K>>2]=27468;k[sa>>2]=27488;B=0;va(448,xa|0);ta=B;B=0;do if(ta&1){ra=Rb()|0;Ib=Q;Jb=ra}else{k[xa>>2]=27560;ra=K+36|0;k[ra>>2]=0;k[ra+4>>2]=0;k[ra+8>>2]=0;k[ra+12>>2]=0;k[K+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,xa|0,f|0);Ga=B;B=0;if(Ga&1){Ga=Rb()|0;Fa=Q;Yua(f);Yua(ra);Ava(xa);Ib=Fa;Jb=Ga;break}Yua(f);B=0;Ga=Ia(40,K|0,128699,14)|0;Fa=B;B=0;j:do if((((!(Fa&1)?(B=0,o=ya(427,k[g>>2]|0)|0,Aa=B,B=0,!(Aa&1)):0)?(Aa=Lta(o)|0,B=0,za=Ia(40,Ga|0,o|0,Aa|0)|0,Aa=B,B=0,!(Aa&1)):0)?(B=0,Aa=Ia(40,za|0,146481,18)|0,za=B,B=0,!(za&1)):0)?(B=0,Xa(239,Aa|0,0)|0,Aa=B,B=0,!(Aa&1)):0){Aa=Ab(20)|0;B=0;eb(502,L|0,125033,80);za=B;B=0;do if(!(za&1)){B=0;eb(502,M|0,138252,9);o=B;B=0;if(o&1){o=Rb()|0;Da=Q;Yua(L);Kb=Da;Lb=o;break}B=0;wa(510,N|0,xa|0);o=B;B=0;if(o&1){o=Rb()|0;Mb=1;Nb=Q;Ob=o}else{B=0;ua(163,Aa|0,L|0,M|0,1141,N|0);o=B;B=0;if(o&1)Pb=1;else{B=0;eb(503,Aa|0,1240,229);B=0;Pb=0}o=Rb()|0;Da=Q;Yua(N);Mb=Pb;Nb=Da;Ob=o}Yua(M);Yua(L);if(Mb){Kb=Nb;Lb=Ob}else{Sb=Nb;Tb=Ob;break j}}else{o=Rb()|0;Kb=Q;Lb=o}while(0);zb(Aa|0);Sb=Kb;Tb=Lb}else na=205;while(0);if((na|0)==205){Ga=Rb()|0;Sb=Q;Tb=Ga}k[K>>2]=27468;k[sa>>2]=27488;k[xa>>2]=27560;Yua(ra);Ava(xa);vva(sa);oa=Sb;pa=Tb;Qb(pa|0)}while(0);Gb=Ib;Hb=Jb;vva(sa);Qb(Hb|0);break}default:{xa=O+56|0;ta=O+4|0;k[O>>2]=27524;k[xa>>2]=27544;B=0;wa(508,O+56|0,ta|0);X=B;B=0;if(X&1){X=Rb()|0;Ub=Q;Vb=X;vva(xa);Qb(Vb|0)}k[O+128>>2]=0;k[O+132>>2]=-1;k[O>>2]=27468;k[xa>>2]=27488;B=0;va(448,ta|0);X=B;B=0;do if(X&1){Ga=Rb()|0;Wb=Q;Xb=Ga}else{k[ta>>2]=27560;Ga=O+36|0;k[Ga>>2]=0;k[Ga+4>>2]=0;k[Ga+8>>2]=0;k[Ga+12>>2]=0;k[O+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,ta|0,f|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;_=Q;Yua(f);Yua(Ga);Ava(ta);Wb=_;Xb=Fa;break}Yua(f);B=0;Fa=Ia(40,O|0,125227,32)|0;_=B;B=0;k:do if(((!(_&1)?(B=0,za=ya(427,d|0)|0,la=B,B=0,!(la&1)):0)?(la=Lta(za)|0,B=0,o=Ia(40,Fa|0,za|0,la|0)|0,la=B,B=0,!(la&1)):0)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,P|0,125033,80);la=B;B=0;do if(!(la&1)){B=0;eb(502,R|0,138252,9);za=B;B=0;if(za&1){za=Rb()|0;Da=Q;Yua(P);Yb=Da;Zb=za;break}B=0;wa(510,S|0,ta|0);za=B;B=0;if(za&1){za=Rb()|0;_b=1;$b=Q;ac=za}else{B=0;ua(163,o|0,P|0,R|0,1144,S|0);za=B;B=0;if(za&1)bc=1;else{B=0;eb(503,o|0,1240,229);B=0;bc=0}za=Rb()|0;Da=Q;Yua(S);_b=bc;$b=Da;ac=za}Yua(R);Yua(P);if(_b){Yb=$b;Zb=ac}else{cc=$b;dc=ac;break k}}else{za=Rb()|0;Yb=Q;Zb=za}while(0);zb(o|0);cc=Yb;dc=Zb}else na=230;while(0);if((na|0)==230){Fa=Rb()|0;cc=Q;dc=Fa}k[O>>2]=27468;k[xa>>2]=27488;k[ta>>2]=27560;Yua(Ga);Ava(ta);vva(xa);oa=cc;pa=dc;Qb(pa|0)}while(0);Ub=Wb;Vb=Xb;vva(xa);Qb(Vb|0)}}while(0);Vb=k[h>>2]|0;if(Vb)Tqa(Vb);r=a;return}function A6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0;a=r;r=r+224|0;e=a+160|0;f=a+212|0;g=a+24|0;h=a+200|0;i=a+188|0;j=a+176|0;l=a;m=a+172|0;if(_p(b)|0){r=a;return}cp(b,f,298);switch(k[f>>2]|0){case 300:{n=b;o=2;q=33;break}case 301:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){n=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;o=1;q=33}break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){n=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;o=2;q=33}break}default:{b=g+56|0;s=g+4|0;k[g>>2]=27524;k[b>>2]=27544;B=0;wa(508,g+56|0,s|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;v=t;vva(b);Qb(v|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[b>>2]=27488;B=0;va(448,s|0);t=B;B=0;do if(t&1){w=Rb()|0;x=Q;y=w}else{k[s>>2]=27560;w=g+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,s|0,e|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(e);Yua(w);Ava(s);x=A;y=z;break}Yua(e);B=0;z=Ia(40,g|0,144639,5)|0;A=B;B=0;if((((!(A&1)?(B=0,A=ya(427,k[f>>2]|0)|0,C=B,B=0,!(C&1)):0)?(C=Lta(A)|0,B=0,D=Ia(40,z|0,A|0,C|0)|0,C=B,B=0,!(C&1)):0)?(B=0,C=Ia(40,D|0,146481,18)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,C|0,0)|0,C=B,B=0,!(C&1)):0){C=Ab(20)|0;B=0;eb(502,h|0,125033,80);D=B;B=0;do if(!(D&1)){B=0;eb(502,i|0,125260,21);A=B;B=0;if(A&1){A=Rb()|0;z=Q;Yua(h);E=A;F=z;break}B=0;wa(510,j|0,s|0);z=B;B=0;if(z&1){z=Rb()|0;G=z;H=Q;I=1}else{B=0;ua(163,C|0,h|0,i|0,1580,j|0);z=B;B=0;if(z&1)J=1;else{B=0;eb(503,C|0,1240,229);B=0;J=0}z=Rb()|0;A=Q;Yua(j);G=z;H=A;I=J}Yua(i);Yua(h);if(I){E=G;F=H}else{K=G;L=H;k[g>>2]=27468;k[b>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(b);Qb(K|0)}}else{A=Rb()|0;E=A;F=Q}while(0);zb(C|0);K=E;L=F;k[g>>2]=27468;k[b>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(b);Qb(K|0)}D=Rb()|0;K=D;L=Q;k[g>>2]=27468;k[b>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(b);Qb(K|0)}while(0);u=x;v=y;vva(b);Qb(v|0)}}if((q|0)==33){k[m>>2]=0;q=Hc[k[(k[n>>2]|0)+172>>2]&511](n)|0;v=q<<1;b=Rqa(v>>>0>536870911?-1:v<<3)|0;v=Rqa(q>>>0>536870911?-1:q<<3)|0;if(q)WEa(v|0,0,q<<3|0)|0;y=Rqa(q>>>0>1073741823?-1:q<<2)|0;Uo(n,m);Mp(n,y,d,0);d=Wo(n,105)|0;x=Wo(n,179)|0;u=ed[k[(k[n>>2]|0)+308>>2]&511](n,2)|0;K=Hc[k[(k[u>>2]|0)+8>>2]&511](u)|0;if((K|0)<(Hc[k[(k[u>>2]|0)+12>>2]&511](u)|0)){s=(q|0)>0;L=(o|0)==2;o=u+8|0;F=l+8|0;E=K;do{Fc[k[(k[u>>2]|0)+24>>2]&1023](u,E);rd[k[(k[n>>2]|0)+260>>2]&511](n,e,k[m>>2]|0,u);rd[k[(k[n>>2]|0)+360>>2]&511](n,b,k[m>>2]|0,u);rd[k[(k[x>>2]|0)+56>>2]&511](x,g,u,696);rd[k[(k[d>>2]|0)+60>>2]&511](d,l,k[m>>2]|0,u);if(s){M=+p[g>>3];N=+p[e>>3];O=+p[l>>3];if(L){P=+p[F>>3];R=M*N;K=0;do{H=v+(K<<3)|0;p[H>>3]=+p[H>>3]-R*+p[o>>3]*(+p[b+(K<<3)>>3]*O+ +p[b+(K+q<<3)>>3]*P);K=K+1|0}while((K|0)!=(q|0))}else{P=M*N;K=0;do{w=v+(K<<3)|0;p[w>>3]=+p[w>>3]-P*+p[o>>3]*+p[b+(K<<3)>>3]*O;K=K+1|0}while((K|0)!=(q|0))}}E=E+1|0}while((E|0)<(Hc[k[(k[u>>2]|0)+12>>2]&511](u)|0))}if(k[c>>2]|0){E=k[k[c+4>>2]>>2]|0;Dc[k[(k[E>>2]|0)+16>>2]&255](E,q,y,v,1)}q=k[m>>2]|0;if(q)Tqa(q);k[m>>2]=0;Tqa(b);Tqa(v);Tqa(y);if(u)Ec[k[(k[u>>2]|0)+4>>2]&1023](u);if((k[f>>2]|0)!=300?(ap(n),(n|0)!=0):0)Ec[k[(k[n>>2]|0)+4>>2]&1023](n)}r=a;return}function B6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0;a=r;r=r+224|0;e=a+160|0;f=a+212|0;g=a+24|0;h=a+200|0;i=a+188|0;j=a+176|0;l=a;m=a+172|0;cp(b,f,298);a:do switch(k[f>>2]|0){case 300:{n=b;break}case 301:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){n=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{r=a;return}break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){n=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{r=a;return}break}default:{o=g+56|0;q=g+4|0;k[g>>2]=27524;k[o>>2]=27544;B=0;wa(508,g+56|0,q|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;u=s;vva(o);Qb(u|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[o>>2]=27488;B=0;va(448,q|0);s=B;B=0;do if(s&1){v=Rb()|0;w=Q;x=v}else{k[q>>2]=27560;v=g+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,q|0,e|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(e);Yua(v);Ava(q);w=z;x=y;break}Yua(e);B=0;y=Ia(40,g|0,144639,5)|0;z=B;B=0;if((((!(z&1)?(B=0,z=ya(427,k[f>>2]|0)|0,A=B,B=0,!(A&1)):0)?(A=Lta(z)|0,B=0,C=Ia(40,y|0,z|0,A|0)|0,A=B,B=0,!(A&1)):0)?(B=0,A=Ia(40,C|0,146481,18)|0,C=B,B=0,!(C&1)):0)?(B=0,Xa(239,A|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,h|0,125033,80);C=B;B=0;do if(!(C&1)){B=0;eb(502,i|0,125282,21);z=B;B=0;if(z&1){z=Rb()|0;y=Q;Yua(h);D=z;E=y;break}B=0;wa(510,j|0,q|0);y=B;B=0;if(y&1){y=Rb()|0;F=y;G=Q;H=1}else{B=0;ua(163,A|0,h|0,i|0,1175,j|0);y=B;B=0;if(y&1)I=1;else{B=0;eb(503,A|0,1240,229);B=0;I=0}y=Rb()|0;z=Q;Yua(j);F=y;G=z;H=I}Yua(i);Yua(h);if(H){D=F;E=G}else{J=F;K=G;k[g>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(o);Qb(J|0)}}else{z=Rb()|0;D=z;E=Q}while(0);zb(A|0);J=D;K=E;k[g>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(o);Qb(J|0)}C=Rb()|0;J=C;K=Q;k[g>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(o);Qb(J|0)}while(0);t=w;u=x;vva(o);Qb(u|0)}}while(0);k[m>>2]=0;u=Hc[k[(k[n>>2]|0)+172>>2]&511](n)|0;x=u<<1;w=Rqa(x>>>0>536870911?-1:x<<3)|0;x=Rqa(u>>>0>536870911?-1:u<<3)|0;if(u)WEa(x|0,0,u<<3|0)|0;t=Rqa(u>>>0>1073741823?-1:u<<2)|0;Uo(n,m);Mp(n,t,d,0);d=Wo(n,215)|0;J=Wo(n,179)|0;K=ed[k[(k[n>>2]|0)+308>>2]&511](n,2)|0;E=Hc[k[(k[K>>2]|0)+8>>2]&511](K)|0;if((E|0)<(Hc[k[(k[K>>2]|0)+12>>2]&511](K)|0)){D=(u|0)>0;G=K+8|0;F=l+8|0;H=E;do{Fc[k[(k[K>>2]|0)+24>>2]&1023](K,H);rd[k[(k[n>>2]|0)+260>>2]&511](n,e,k[m>>2]|0,K);rd[k[(k[n>>2]|0)+360>>2]&511](n,w,k[m>>2]|0,K);rd[k[(k[J>>2]|0)+56>>2]&511](J,g,K,694);rd[k[(k[d>>2]|0)+60>>2]&511](d,l,k[m>>2]|0,K);if(D){L=+p[g>>3];M=+p[e>>3];N=+p[l>>3];if((k[f>>2]|0)==301){O=L*M;E=0;do{h=x+(E<<3)|0;p[h>>3]=+p[h>>3]-O*+p[G>>3]*+p[w+(E<<3)>>3]*N;E=E+1|0}while((E|0)!=(u|0))}else{O=+p[F>>3];P=L*M;E=0;do{o=x+(E<<3)|0;p[o>>3]=+p[o>>3]-P*+p[G>>3]*(+p[w+(E<<3)>>3]*N+ +p[w+(E+u<<3)>>3]*O);E=E+1|0}while((E|0)!=(u|0))}}H=H+1|0}while((H|0)<(Hc[k[(k[K>>2]|0)+12>>2]&511](K)|0))}if(k[c>>2]|0){H=k[k[c+4>>2]>>2]|0;Dc[k[(k[H>>2]|0)+16>>2]&255](H,u,t,x,1)}u=k[m>>2]|0;if(u)Tqa(u);k[m>>2]=0;Tqa(w);Tqa(x);Tqa(t);if(K)Ec[k[(k[K>>2]|0)+4>>2]&1023](K);if((k[f>>2]|0)!=300?(ap(n),(n|0)!=0):0)Ec[k[(k[n>>2]|0)+4>>2]&1023](n);r=a;return}function C6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0;a=r;r=r+224|0;e=a+160|0;f=a+212|0;g=a+24|0;h=a+200|0;i=a+188|0;j=a+176|0;l=a;m=a+172|0;cp(b,f,298);if(((k[f>>2]|0)+-300|0)>>>0<3){k[m>>2]=0;n=Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;o=n*3|0;q=Rqa(o>>>0>536870911?-1:o<<3)|0;o=Rqa(n>>>0>536870911?-1:n<<3)|0;if(n)WEa(o|0,0,n<<3|0)|0;s=Rqa(n>>>0>1073741823?-1:n<<2)|0;Uo(b,m);Mp(b,s,d,0);d=Wo(b,214)|0;t=Wo(b,179)|0;u=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;v=Hc[k[(k[u>>2]|0)+8>>2]&511](u)|0;if((v|0)<(Hc[k[(k[u>>2]|0)+12>>2]&511](u)|0)){w=(n|0)>0;x=u+8|0;y=l+8|0;z=n<<1;A=l+16|0;C=v;do{Fc[k[(k[u>>2]|0)+24>>2]&1023](u,C);rd[k[(k[b>>2]|0)+260>>2]&511](b,e,k[m>>2]|0,u);rd[k[(k[b>>2]|0)+360>>2]&511](b,q,k[m>>2]|0,u);rd[k[(k[t>>2]|0)+56>>2]&511](t,g,u,695);rd[k[(k[d>>2]|0)+60>>2]&511](d,l,k[m>>2]|0,u);if(w){D=+p[g>>3];E=+p[e>>3];F=+p[l>>3];G=+p[y>>3];if((k[f>>2]|0)==301){H=+p[A>>3];I=D*E;v=0;do{J=o+(v<<3)|0;p[J>>3]=+p[J>>3]-I*+p[x>>3]*(+p[q+(v<<3)>>3]*F+ +p[q+(v+n<<3)>>3]*G+ +p[q+(v+z<<3)>>3]*H);v=v+1|0}while((v|0)!=(n|0))}else{H=D*E;v=0;do{J=o+(v<<3)|0;p[J>>3]=+p[J>>3]-H*+p[x>>3]*(+p[q+(v<<3)>>3]*F+ +p[q+(v+n<<3)>>3]*G);v=v+1|0}while((v|0)!=(n|0))}}C=C+1|0}while((C|0)<(Hc[k[(k[u>>2]|0)+12>>2]&511](u)|0))}if(k[c>>2]|0){C=k[k[c+4>>2]>>2]|0;Dc[k[(k[C>>2]|0)+16>>2]&255](C,n,s,o,1)}n=k[m>>2]|0;if(n)Tqa(n);k[m>>2]=0;Tqa(q);Tqa(o);Tqa(s);if(!u){r=a;return}Ec[k[(k[u>>2]|0)+4>>2]&1023](u);r=a;return}a=g+56|0;u=g+4|0;k[g>>2]=27524;k[a>>2]=27544;B=0;wa(508,g+56|0,u|0);s=B;B=0;if(s&1){s=Rb()|0;K=Q;L=s;vva(a);Qb(L|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[a>>2]=27488;B=0;va(448,u|0);s=B;B=0;do if(s&1){o=Rb()|0;M=Q;N=o}else{k[u>>2]=27560;o=g+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,u|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;m=Q;Yua(e);Yua(o);Ava(u);M=m;N=q;break}Yua(e);B=0;q=Ia(40,g|0,144639,5)|0;m=B;B=0;if((((!(m&1)?(B=0,m=ya(427,k[f>>2]|0)|0,n=B,B=0,!(n&1)):0)?(n=Lta(m)|0,B=0,C=Ia(40,q|0,m|0,n|0)|0,n=B,B=0,!(n&1)):0)?(B=0,n=Ia(40,C|0,146481,18)|0,C=B,B=0,!(C&1)):0)?(B=0,Xa(239,n|0,0)|0,n=B,B=0,!(n&1)):0){n=Ab(20)|0;B=0;eb(502,h|0,125033,80);C=B;B=0;do if(!(C&1)){B=0;eb(502,i|0,125304,18);m=B;B=0;if(m&1){m=Rb()|0;q=Q;Yua(h);O=m;P=q;break}B=0;wa(510,j|0,u|0);q=B;B=0;if(q&1){q=Rb()|0;R=q;S=Q;T=1}else{B=0;ua(163,n|0,h|0,i|0,1342,j|0);q=B;B=0;if(q&1)U=1;else{B=0;eb(503,n|0,1240,229);B=0;U=0}q=Rb()|0;m=Q;Yua(j);R=q;S=m;T=U}Yua(i);Yua(h);if(T){O=R;P=S}else{V=R;W=S;k[g>>2]=27468;k[a>>2]=27488;k[u>>2]=27560;Yua(o);Ava(u);vva(a);Qb(V|0)}}else{m=Rb()|0;O=m;P=Q}while(0);zb(n|0);V=O;W=P;k[g>>2]=27468;k[a>>2]=27488;k[u>>2]=27560;Yua(o);Ava(u);vva(a);Qb(V|0)}C=Rb()|0;V=C;W=Q;k[g>>2]=27468;k[a>>2]=27488;k[u>>2]=27560;Yua(o);Ava(u);vva(a);Qb(V|0)}while(0);K=M;L=N;vva(a);Qb(L|0)}function D6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0.0;a=r;r=r+256|0;e=a+48|0;f=a+240|0;g=a+104|0;h=a+88|0;i=a+76|0;j=a+64|0;l=a+40|0;m=a+32|0;n=a+24|0;o=a+16|0;q=a+8|0;s=a;t=a+60|0;if(_p(b)|0){r=a;return}cp(b,f,298);switch(k[f>>2]|0){case 300:{u=b;v=2;w=33;break}case 301:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){u=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;v=1;w=33}break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){u=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;v=2;w=33}break}default:{b=g+56|0;x=g+4|0;k[g>>2]=27524;k[b>>2]=27544;B=0;wa(508,g+56|0,x|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(b);Qb(A|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[b>>2]=27488;B=0;va(448,x|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[x>>2]=27560;C=g+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,x|0,e|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(e);Yua(C);Ava(x);D=G;E=F;break}Yua(e);B=0;F=Ia(40,g|0,144639,5)|0;G=B;B=0;a:do if((((!(G&1)?(B=0,H=ya(427,k[f>>2]|0)|0,I=B,B=0,!(I&1)):0)?(I=Lta(H)|0,B=0,J=Ia(40,F|0,H|0,I|0)|0,I=B,B=0,!(I&1)):0)?(B=0,I=Ia(40,J|0,146481,18)|0,J=B,B=0,!(J&1)):0)?(B=0,Xa(239,I|0,0)|0,I=B,B=0,!(I&1)):0){I=Ab(20)|0;B=0;eb(502,h|0,125033,80);J=B;B=0;do if(!(J&1)){B=0;eb(502,i|0,125323,16);H=B;B=0;if(H&1){H=Rb()|0;K=Q;Yua(h);L=H;M=K;break}B=0;wa(510,j|0,x|0);K=B;B=0;if(K&1){K=Rb()|0;N=K;O=Q;P=1}else{B=0;ua(163,I|0,h|0,i|0,1837,j|0);K=B;B=0;if(K&1)R=1;else{B=0;eb(503,I|0,1240,229);B=0;R=0}K=Rb()|0;H=Q;Yua(j);N=K;O=H;P=R}Yua(i);Yua(h);if(P){L=N;M=O}else{S=N;T=O;break a}}else{H=Rb()|0;L=H;M=Q}while(0);zb(I|0);S=L;T=M}else w=25;while(0);if((w|0)==25){F=Rb()|0;S=F;T=Q}k[g>>2]=27468;k[b>>2]=27488;k[x>>2]=27560;Yua(C);Ava(x);vva(b);U=S;V=T;Qb(U|0)}while(0);z=D;A=E;vva(b);Qb(A|0)}}if((w|0)==33){k[t>>2]=0;w=Hc[k[(k[u>>2]|0)+172>>2]&511](u)|0;A=w>>>0>536870911?-1:w<<3;b=Rqa(A)|0;E=Rqa(A)|0;if(w)WEa(E|0,0,w<<3|0)|0;A=Rqa(w>>>0>1073741823?-1:w<<2)|0;D=Qqa(16)|0;B=0;eb(524,D|0,u|0,v|0);v=B;B=0;if(v&1){v=Rb()|0;z=Q;Sqa(D);U=v;V=z;Qb(U|0)}Uo(u,t);Mp(u,A,d,0);d=Wo(u,674)|0;U=Wo(u,677)|0;z=Wo(u,638)|0;V=Wo(u,639)|0;v=Wo(u,105)|0;T=ed[k[(k[u>>2]|0)+308>>2]&511](u,4)|0;S=Hc[k[(k[T>>2]|0)+8>>2]&511](T)|0;b:do if((S|0)<(Hc[k[(k[T>>2]|0)+12>>2]&511](T)|0)){x=T+8|0;if((w|0)>0)W=S;else{g=S;while(1){Fc[k[(k[T>>2]|0)+24>>2]&1023](T,g);nd[k[(k[z>>2]|0)+48>>2]&1023](z,q,T);nd[k[(k[V>>2]|0)+48>>2]&1023](V,s,T);nd[k[(k[d>>2]|0)+48>>2]&1023](d,n,T);nd[k[(k[U>>2]|0)+48>>2]&1023](U,o,T);nd[k[(k[v>>2]|0)+48>>2]&1023](v,l,T);cla(D,m,T);rd[k[(k[u>>2]|0)+260>>2]&511](u,e,k[t>>2]|0,T);nd[k[(k[u>>2]|0)+356>>2]&1023](u,b,T);g=g+1|0;if((g|0)>=(Hc[k[(k[T>>2]|0)+12>>2]&511](T)|0))break b}}do{Fc[k[(k[T>>2]|0)+24>>2]&1023](T,W);nd[k[(k[z>>2]|0)+48>>2]&1023](z,q,T);nd[k[(k[V>>2]|0)+48>>2]&1023](V,s,T);nd[k[(k[d>>2]|0)+48>>2]&1023](d,n,T);nd[k[(k[U>>2]|0)+48>>2]&1023](U,o,T);nd[k[(k[v>>2]|0)+48>>2]&1023](v,l,T);cla(D,m,T);rd[k[(k[u>>2]|0)+260>>2]&511](u,e,k[t>>2]|0,T);nd[k[(k[u>>2]|0)+356>>2]&1023](u,b,T);X=+p[e>>3]*(+p[l>>3]*-2.0*+p[m>>3]*(+p[q>>3]*+p[n>>3]+ +p[s>>3]*+p[o>>3]));g=0;do{C=E+(g<<3)|0;p[C>>3]=+p[C>>3]+ +p[b+(g<<3)>>3]*(+p[x>>3]*X);g=g+1|0}while((g|0)!=(w|0));W=W+1|0}while((W|0)<(Hc[k[(k[T>>2]|0)+12>>2]&511](T)|0))}while(0);if(k[c>>2]|0){W=k[k[c+4>>2]>>2]|0;Dc[k[(k[W>>2]|0)+16>>2]&255](W,w,A,E,1)}w=k[t>>2]|0;if(w)Tqa(w);k[t>>2]=0;Tqa(b);Tqa(E);Tqa(A);if(T)Ec[k[(k[T>>2]|0)+4>>2]&1023](T);bla(D);Sqa(D);if((k[f>>2]|0)!=300?(ap(u),(u|0)!=0):0)Ec[k[(k[u>>2]|0)+4>>2]&1023](u)}r=a;return}function E6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0;a=r;r=r+64|0;e=a+48|0;f=a+40|0;g=a+32|0;h=a+24|0;i=a+16|0;j=a+8|0;l=a;m=a+60|0;n=a+56|0;if(_p(b)|0){r=a;return}if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){r=a;return}k[m>>2]=0;cp(b,n,298);o=Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;q=o>>>0>536870911?-1:o<<3;s=Rqa(q)|0;t=Rqa(q)|0;if(o)WEa(t|0,0,o<<3|0)|0;q=Rqa(o>>>0>1073741823?-1:o<<2)|0;u=(k[n>>2]|0)==301?2:3;v=Qqa(16)|0;B=0;eb(524,v|0,b|0,u|0);u=B;B=0;if(u&1){u=Rb()|0;Sqa(v);Qb(u|0)}Fc[k[(k[b>>2]|0)+188>>2]&1023](b,m);Mp(b,q,d,0);d=Wo(b,674)|0;u=Wo(b,638)|0;w=Wo(b,105)|0;if((k[n>>2]|0)==301){x=0;y=0}else{z=Wo(b,677)|0;x=Wo(b,639)|0;y=z}z=ed[k[(k[b>>2]|0)+324>>2]&511](b,4)|0;A=Hc[k[(k[z>>2]|0)+8>>2]&511](z)|0;if((A|0)<(Hc[k[(k[z>>2]|0)+12>>2]&511](z)|0)){C=(o|0)>0;D=z+8|0;E=A;do{Fc[k[(k[z>>2]|0)+24>>2]&1023](z,E);nd[k[(k[u>>2]|0)+48>>2]&1023](u,j,z);nd[k[(k[d>>2]|0)+48>>2]&1023](d,h,z);if((k[n>>2]|0)!=301){nd[k[(k[x>>2]|0)+48>>2]&1023](x,l,z);nd[k[(k[y>>2]|0)+48>>2]&1023](y,i,z)}nd[k[(k[w>>2]|0)+48>>2]&1023](w,f,z);cla(v,g,z);rd[k[(k[b>>2]|0)+264>>2]&511](b,e,k[m>>2]|0,z);nd[k[(k[b>>2]|0)+356>>2]&1023](b,s,z);if(C){F=+p[f>>3];G=+p[g>>3];H=+p[j>>3];I=+p[h>>3];if((k[n>>2]|0)==301){J=F*-2.0*G*(H*I)*+p[e>>3];A=0;do{K=t+(A<<3)|0;p[K>>3]=+p[K>>3]+J*+p[D>>3]*+p[s+(A<<3)>>3];A=A+1|0}while((A|0)!=(o|0))}else{J=+p[e>>3]*(F*-2.0*G*(H*I+ +p[l>>3]*+p[i>>3]));A=0;do{K=t+(A<<3)|0;p[K>>3]=+p[K>>3]+ +p[s+(A<<3)>>3]*(+p[D>>3]*J);A=A+1|0}while((A|0)!=(o|0))}}E=E+1|0}while((E|0)<(Hc[k[(k[z>>2]|0)+12>>2]&511](z)|0))}if(k[c>>2]|0){E=k[k[c+4>>2]>>2]|0;Dc[k[(k[E>>2]|0)+16>>2]&255](E,o,q,t,1)}o=k[m>>2]|0;if(o)Tqa(o);k[m>>2]=0;Tqa(s);Tqa(t);Tqa(q);if(z)Ec[k[(k[z>>2]|0)+4>>2]&1023](z);bla(v);Sqa(v);r=a;return}function F6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0;a=r;r=r+112|0;e=a+100|0;f=a+88|0;g=a+80|0;h=a+72|0;i=a+48|0;j=a+40|0;l=a+32|0;m=a+24|0;n=a+16|0;o=a+8|0;q=a;s=a+96|0;if(_p(b)|0){r=a;return}if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){r=a;return}k[s>>2]=0;t=Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;u=t>>>0>536870911?-1:t<<3;v=Rqa(u)|0;w=Rqa(u)|0;if(t)WEa(w|0,0,t<<3|0)|0;u=Rqa(t>>>0>1073741823?-1:t<<2)|0;cp(b,e,298);x=(k[e>>2]|0)==301?2:3;y=Qqa(16)|0;B=0;eb(524,y|0,b|0,x|0);x=B;B=0;if(x&1){x=Rb()|0;Sqa(y);Qb(x|0)}Fc[k[(k[b>>2]|0)+188>>2]&1023](b,s);Mp(b,u,d,0);d=Wo(b,674)|0;x=Wo(b,677)|0;z=Wo(b,638)|0;A=Wo(b,639)|0;if((k[e>>2]|0)==301){C=0;D=0}else{E=Wo(b,679)|0;C=Wo(b,640)|0;D=E}E=Wo(b,105)|0;F=ed[k[(k[b>>2]|0)+324>>2]&511](b,4)|0;G=Hc[k[(k[F>>2]|0)+8>>2]&511](F)|0;if((G|0)<(Hc[k[(k[F>>2]|0)+12>>2]&511](F)|0)){H=(t|0)>0;I=F+8|0;J=i+16|0;K=i+8|0;L=G;do{Fc[k[(k[F>>2]|0)+24>>2]&1023](F,L);nd[k[(k[z>>2]|0)+48>>2]&1023](z,n,F);nd[k[(k[A>>2]|0)+48>>2]&1023](A,o,F);nd[k[(k[d>>2]|0)+48>>2]&1023](d,j,F);nd[k[(k[x>>2]|0)+48>>2]&1023](x,l,F);if((k[e>>2]|0)!=301){nd[k[(k[C>>2]|0)+48>>2]&1023](C,q,F);nd[k[(k[D>>2]|0)+48>>2]&1023](D,m,F)}nd[k[(k[E>>2]|0)+48>>2]&1023](E,g,F);cla(y,h,F);nd[k[(k[b>>2]|0)+380>>2]&1023](b,i,k[s>>2]|0);rd[k[(k[b>>2]|0)+264>>2]&511](b,f,k[s>>2]|0,F);nd[k[(k[b>>2]|0)+356>>2]&1023](b,v,F);if((k[e>>2]|0)==301){if(H){M=+p[g>>3];N=+p[h>>3];O=+p[f>>3]*(+p[n>>3]*-2.0*M*N*+p[j>>3]-+p[l>>3]*(N*(M*(+p[o>>3]*2.0))));G=0;do{P=w+(G<<3)|0;p[P>>3]=+p[P>>3]+ +p[v+(G<<3)>>3]*(+p[I>>3]*O);G=G+1|0}while((G|0)!=(t|0))}}else if(H){O=+p[j>>3];M=+p[m>>3];N=+p[i>>3];Q=+p[J>>3];R=+p[l>>3];S=+p[K>>3];T=+p[g>>3]*2.0*+p[h>>3];U=+p[f>>3]*(-(+p[n>>3]*(T*(O-M*N*Q)))-+p[o>>3]*(T*(R-Q*(M*S)))-+p[q>>3]*(T*(-(O*N*Q)-Q*(R*S))));G=0;do{P=w+(G<<3)|0;p[P>>3]=+p[P>>3]+ +p[v+(G<<3)>>3]*(+p[I>>3]*U);G=G+1|0}while((G|0)!=(t|0))}L=L+1|0}while((L|0)<(Hc[k[(k[F>>2]|0)+12>>2]&511](F)|0))}if(k[c>>2]|0){L=k[k[c+4>>2]>>2]|0;Dc[k[(k[L>>2]|0)+16>>2]&255](L,t,u,w,1)}t=k[s>>2]|0;if(t)Tqa(t);k[s>>2]=0;Tqa(v);Tqa(w);Tqa(u);if(F)Ec[k[(k[F>>2]|0)+4>>2]&1023](F);bla(y);Sqa(y);r=a;return}function G6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0.0;a=r;r=r+272|0;e=a+208|0;f=a+260|0;g=a+72|0;h=a+248|0;i=a+236|0;j=a+224|0;l=a+64|0;m=a+56|0;n=a+48|0;o=a+40|0;q=a+32|0;s=a+220|0;t=a+24|0;u=a+16|0;v=a+8|0;w=a;if(_p(b)|0){r=a;return}cp(b,f,298);switch(k[f>>2]|0){case 300:{x=b;y=2;z=33;break}case 301:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){x=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;y=1;z=33}break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){x=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;y=2;z=33}break}default:{b=g+56|0;A=g+4|0;k[g>>2]=27524;k[b>>2]=27544;B=0;wa(508,g+56|0,A|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;E=C;vva(b);Qb(E|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[b>>2]=27488;B=0;va(448,A|0);C=B;B=0;do if(C&1){F=Rb()|0;G=Q;H=F}else{k[A>>2]=27560;F=g+36|0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,A|0,e|0);I=B;B=0;if(I&1){I=Rb()|0;J=Q;Yua(e);Yua(F);Ava(A);G=J;H=I;break}Yua(e);B=0;I=Ia(40,g|0,144639,5)|0;J=B;B=0;a:do if((((!(J&1)?(B=0,K=ya(427,k[f>>2]|0)|0,L=B,B=0,!(L&1)):0)?(L=Lta(K)|0,B=0,M=Ia(40,I|0,K|0,L|0)|0,L=B,B=0,!(L&1)):0)?(B=0,L=Ia(40,M|0,146481,18)|0,M=B,B=0,!(M&1)):0)?(B=0,Xa(239,L|0,0)|0,L=B,B=0,!(L&1)):0){L=Ab(20)|0;B=0;eb(502,h|0,125033,80);M=B;B=0;do if(!(M&1)){B=0;eb(502,i|0,125340,21);K=B;B=0;if(K&1){K=Rb()|0;N=Q;Yua(h);O=K;P=N;break}B=0;wa(510,j|0,A|0);N=B;B=0;if(N&1){N=Rb()|0;R=N;S=Q;T=1}else{B=0;ua(163,L|0,h|0,i|0,2099,j|0);N=B;B=0;if(N&1)U=1;else{B=0;eb(503,L|0,1240,229);B=0;U=0}N=Rb()|0;K=Q;Yua(j);R=N;S=K;T=U}Yua(i);Yua(h);if(T){O=R;P=S}else{V=R;W=S;break a}}else{K=Rb()|0;O=K;P=Q}while(0);zb(L|0);V=O;W=P}else z=25;while(0);if((z|0)==25){I=Rb()|0;V=I;W=Q}k[g>>2]=27468;k[b>>2]=27488;k[A>>2]=27560;Yua(F);Ava(A);vva(b);X=V;Y=W;Qb(X|0)}while(0);D=G;E=H;vva(b);Qb(E|0)}}if((z|0)==33){k[s>>2]=0;z=Hc[k[(k[x>>2]|0)+172>>2]&511](x)|0;E=z>>>0>536870911?-1:z<<3;b=Rqa(E)|0;H=Rqa(E)|0;if(z)WEa(H|0,0,z<<3|0)|0;E=Rqa(z>>>0>1073741823?-1:z<<2)|0;G=Qqa(16)|0;B=0;eb(524,G|0,x|0,y|0);y=B;B=0;if(y&1){y=Rb()|0;D=Q;Sqa(G);X=y;Y=D;Qb(X|0)}Uo(x,s);Mp(x,E,d,0);d=Wo(x,674)|0;X=Wo(x,677)|0;D=Wo(x,638)|0;Y=Wo(x,639)|0;y=Wo(x,108)|0;W=Wo(x,110)|0;V=Wo(x,104)|0;A=Wo(x,217)|0;P=Wo(x,115)|0;O=ed[k[(k[x>>2]|0)+308>>2]&511](x,4)|0;S=Hc[k[(k[O>>2]|0)+8>>2]&511](O)|0;if((S|0)<(Hc[k[(k[O>>2]|0)+12>>2]&511](O)|0)){R=(z|0)>0;T=O+8|0;h=S;do{Fc[k[(k[O>>2]|0)+24>>2]&1023](O,h);nd[k[(k[D>>2]|0)+48>>2]&1023](D,o,O);nd[k[(k[Y>>2]|0)+48>>2]&1023](Y,q,O);nd[k[(k[d>>2]|0)+48>>2]&1023](d,m,O);nd[k[(k[X>>2]|0)+48>>2]&1023](X,n,O);cla(G,l,O);rd[k[(k[x>>2]|0)+260>>2]&511](x,e,k[s>>2]|0,O);nd[k[(k[x>>2]|0)+356>>2]&1023](x,b,O);nd[k[(k[y>>2]|0)+48>>2]&1023](y,g,O);nd[k[(k[W>>2]|0)+48>>2]&1023](W,t,O);nd[k[(k[V>>2]|0)+48>>2]&1023](V,u,O);nd[k[(k[P>>2]|0)+48>>2]&1023](P,v,O);nd[k[(k[A>>2]|0)+48>>2]&1023](A,w,O);if(R){Z=+p[e>>3]*(+p[l>>3]*(+p[o>>3]*+p[m>>3]+ +p[q>>3]*+p[n>>3]));S=0;do{i=H+(S<<3)|0;p[i>>3]=+p[i>>3]-+p[b+(S<<3)>>3]*(+p[T>>3]*Z);S=S+1|0}while((S|0)!=(z|0))}h=h+1|0}while((h|0)<(Hc[k[(k[O>>2]|0)+12>>2]&511](O)|0))}if(k[c>>2]|0){h=k[k[c+4>>2]>>2]|0;Dc[k[(k[h>>2]|0)+16>>2]&255](h,z,E,H,1)}z=k[s>>2]|0;if(z)Tqa(z);k[s>>2]=0;Tqa(b);Tqa(H);Tqa(E);if(O)Ec[k[(k[O>>2]|0)+4>>2]&1023](O);bla(G);Sqa(G);if((k[f>>2]|0)!=300?(ap(x),(x|0)!=0):0)Ec[k[(k[x>>2]|0)+4>>2]&1023](x)}r=a;return}function H6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0.0,E=0.0,F=0.0,G=0.0,H=0;a=r;r=r+64|0;e=a+40|0;f=a+32|0;g=a+24|0;h=a+16|0;i=a+8|0;j=a;l=a+52|0;m=a+48|0;if(_p(b)|0){r=a;return}if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){r=a;return}k[l>>2]=0;cp(b,m,298);n=Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;o=n>>>0>536870911?-1:n<<3;q=Rqa(o)|0;s=Rqa(o)|0;if(n)WEa(s|0,0,n<<3|0)|0;o=Rqa(n>>>0>1073741823?-1:n<<2)|0;t=(k[m>>2]|0)==301?2:3;u=Qqa(16)|0;B=0;eb(524,u|0,b|0,t|0);t=B;B=0;if(t&1){t=Rb()|0;Sqa(u);Qb(t|0)}Fc[k[(k[b>>2]|0)+188>>2]&1023](b,l);Mp(b,o,d,0);d=Wo(b,674)|0;t=Wo(b,638)|0;if((k[m>>2]|0)==301){v=0;w=0}else{x=Wo(b,677)|0;v=Wo(b,639)|0;w=x}x=ed[k[(k[b>>2]|0)+324>>2]&511](b,4)|0;y=Hc[k[(k[x>>2]|0)+8>>2]&511](x)|0;if((y|0)<(Hc[k[(k[x>>2]|0)+12>>2]&511](x)|0)){z=(n|0)>0;A=x+8|0;C=y;do{Fc[k[(k[x>>2]|0)+24>>2]&1023](x,C);nd[k[(k[t>>2]|0)+48>>2]&1023](t,i,x);nd[k[(k[d>>2]|0)+48>>2]&1023](d,g,x);if((k[m>>2]|0)!=301){nd[k[(k[v>>2]|0)+48>>2]&1023](v,j,x);nd[k[(k[w>>2]|0)+48>>2]&1023](w,h,x)}cla(u,f,x);rd[k[(k[b>>2]|0)+264>>2]&511](b,e,k[l>>2]|0,x);nd[k[(k[b>>2]|0)+356>>2]&1023](b,q,x);if(z){D=+p[f>>3];E=+p[i>>3];F=+p[g>>3];if((k[m>>2]|0)==301){G=D*(E*F)*+p[e>>3];y=0;do{H=s+(y<<3)|0;p[H>>3]=+p[H>>3]-G*+p[A>>3]*+p[q+(y<<3)>>3];y=y+1|0}while((y|0)!=(n|0))}else{G=D*(E*F+ +p[j>>3]*+p[h>>3])*+p[e>>3];y=0;do{H=s+(y<<3)|0;p[H>>3]=+p[H>>3]-G*+p[A>>3]*+p[q+(y<<3)>>3];y=y+1|0}while((y|0)!=(n|0))}}C=C+1|0}while((C|0)<(Hc[k[(k[x>>2]|0)+12>>2]&511](x)|0))}if(k[c>>2]|0){C=k[k[c+4>>2]>>2]|0;Dc[k[(k[C>>2]|0)+16>>2]&255](C,n,o,s,1)}n=k[l>>2]|0;if(n)Tqa(n);k[l>>2]=0;Tqa(q);Tqa(s);Tqa(o);if(x)Ec[k[(k[x>>2]|0)+4>>2]&1023](x);bla(u);Sqa(u);r=a;return}function I6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0.0,M=0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0;a=r;r=r+96|0;e=a+92|0;f=a+80|0;g=a+72|0;h=a+48|0;i=a+40|0;j=a+32|0;l=a+24|0;m=a+16|0;n=a+8|0;o=a;q=a+88|0;if(_p(b)|0){r=a;return}if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){r=a;return}k[q>>2]=0;s=Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;t=s>>>0>536870911?-1:s<<3;u=Rqa(t)|0;v=Rqa(t)|0;if(s)WEa(v|0,0,s<<3|0)|0;t=Rqa(s>>>0>1073741823?-1:s<<2)|0;cp(b,e,298);w=(k[e>>2]|0)==301?2:3;x=Qqa(16)|0;B=0;eb(524,x|0,b|0,w|0);w=B;B=0;if(w&1){w=Rb()|0;Sqa(x);Qb(w|0)}Fc[k[(k[b>>2]|0)+188>>2]&1023](b,q);Mp(b,t,d,0);d=Wo(b,674)|0;w=Wo(b,677)|0;y=Wo(b,638)|0;z=Wo(b,639)|0;if((k[e>>2]|0)==301){A=0;C=0}else{D=Wo(b,679)|0;A=Wo(b,640)|0;C=D}D=ed[k[(k[b>>2]|0)+324>>2]&511](b,4)|0;E=Hc[k[(k[D>>2]|0)+8>>2]&511](D)|0;if((E|0)<(Hc[k[(k[D>>2]|0)+12>>2]&511](D)|0)){F=(s|0)>0;G=D+8|0;H=h+16|0;I=h+8|0;J=E;do{Fc[k[(k[D>>2]|0)+24>>2]&1023](D,J);nd[k[(k[y>>2]|0)+48>>2]&1023](y,m,D);nd[k[(k[z>>2]|0)+48>>2]&1023](z,n,D);nd[k[(k[d>>2]|0)+48>>2]&1023](d,i,D);nd[k[(k[w>>2]|0)+48>>2]&1023](w,j,D);if((k[e>>2]|0)!=301){nd[k[(k[A>>2]|0)+48>>2]&1023](A,o,D);nd[k[(k[C>>2]|0)+48>>2]&1023](C,l,D)}cla(x,g,D);nd[k[(k[b>>2]|0)+380>>2]&1023](b,h,k[q>>2]|0);rd[k[(k[b>>2]|0)+264>>2]&511](b,f,k[q>>2]|0,D);nd[k[(k[b>>2]|0)+356>>2]&1023](b,u,D);if((k[e>>2]|0)==301){if(F){K=+p[g>>3];L=+p[f>>3]*(-(+p[m>>3]*K*+p[i>>3])-K*+p[n>>3]*+p[j>>3]);E=0;do{M=v+(E<<3)|0;p[M>>3]=+p[M>>3]+ +p[u+(E<<3)>>3]*(+p[G>>3]*L);E=E+1|0}while((E|0)!=(s|0))}}else if(F){L=+p[g>>3];K=+p[i>>3];N=+p[l>>3];O=+p[h>>3];P=+p[H>>3];Q=+p[j>>3];R=+p[I>>3];S=+p[f>>3]*(-(+p[m>>3]*(L*(K-N*O*P)))-+p[n>>3]*(L*(Q-P*(N*R)))-+p[o>>3]*(L*(-(K*O*P)-P*(Q*R))));E=0;do{M=v+(E<<3)|0;p[M>>3]=+p[M>>3]+ +p[u+(E<<3)>>3]*(+p[G>>3]*S);E=E+1|0}while((E|0)!=(s|0))}J=J+1|0}while((J|0)<(Hc[k[(k[D>>2]|0)+12>>2]&511](D)|0))}if(k[c>>2]|0){J=k[k[c+4>>2]>>2]|0;Dc[k[(k[J>>2]|0)+16>>2]&255](J,s,t,v,1)}s=k[q>>2]|0;if(s)Tqa(s);k[q>>2]=0;Tqa(u);Tqa(v);Tqa(t);if(D)Ec[k[(k[D>>2]|0)+4>>2]&1023](D);bla(x);Sqa(x);r=a;return}function J6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0.0,S=0.0,T=0.0;a=r;r=r+304|0;e=a+240|0;f=a+292|0;g=a+104|0;h=a+280|0;i=a+268|0;j=a+256|0;l=a+96|0;m=a+72|0;n=a+48|0;o=a+24|0;q=a;s=a+252|0;cp(b,f,298);a:do switch(k[f>>2]|0){case 300:{t=b;u=2;break}case 301:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){t=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;u=1;break a}else{r=a;return}break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){t=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;u=2;break a}else{r=a;return}break}default:{v=g+56|0;w=g+4|0;k[g>>2]=27524;k[v>>2]=27544;B=0;wa(508,g+56|0,w|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;z=x;vva(v);Qb(z|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[v>>2]=27488;B=0;va(448,w|0);x=B;B=0;do if(x&1){A=Rb()|0;C=Q;D=A}else{k[w>>2]=27560;A=g+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,w|0,e|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(e);Yua(A);Ava(w);C=F;D=E;break}Yua(e);B=0;E=Ia(40,g|0,144639,5)|0;F=B;B=0;if((((!(F&1)?(B=0,F=ya(427,k[f>>2]|0)|0,G=B,B=0,!(G&1)):0)?(G=Lta(F)|0,B=0,H=Ia(40,E|0,F|0,G|0)|0,G=B,B=0,!(G&1)):0)?(B=0,G=Ia(40,H|0,146481,18)|0,H=B,B=0,!(H&1)):0)?(B=0,Xa(239,G|0,0)|0,G=B,B=0,!(G&1)):0){G=Ab(20)|0;B=0;eb(502,h|0,125033,80);H=B;B=0;do if(!(H&1)){B=0;eb(502,i|0,125362,16);F=B;B=0;if(F&1){F=Rb()|0;E=Q;Yua(h);I=F;J=E;break}B=0;wa(510,j|0,w|0);E=B;B=0;if(E&1){E=Rb()|0;K=E;L=Q;M=1}else{B=0;ua(163,G|0,h|0,i|0,1263,j|0);E=B;B=0;if(E&1)N=1;else{B=0;eb(503,G|0,1240,229);B=0;N=0}E=Rb()|0;F=Q;Yua(j);K=E;L=F;M=N}Yua(i);Yua(h);if(M){I=K;J=L}else{O=K;P=L;k[g>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}}else{F=Rb()|0;I=F;J=Q}while(0);zb(G|0);O=I;P=J;k[g>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}H=Rb()|0;O=H;P=Q;k[g>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}while(0);y=C;z=D;vva(v);Qb(z|0)}}while(0);k[s>>2]=0;z=Hc[k[(k[t>>2]|0)+172>>2]&511](t)|0;D=z>>>0>536870911?-1:z<<3;C=Rqa(D)|0;y=Rqa(D)|0;if(z)WEa(y|0,0,z<<3|0)|0;D=Rqa(z>>>0>1073741823?-1:z<<2)|0;Uo(t,s);Mp(t,D,d,0);d=Wo(t,353)|0;O=Wo(t,674)|0;P=Wo(t,677)|0;J=Wo(t,638)|0;I=Wo(t,639)|0;Wo(t,215)|0;L=ed[k[(k[t>>2]|0)+308>>2]&511](t,4)|0;K=Hc[k[(k[L>>2]|0)+8>>2]&511](L)|0;if((K|0)<(Hc[k[(k[L>>2]|0)+12>>2]&511](L)|0)){M=(z|0)>0;h=n+8|0;i=m+8|0;N=o+8|0;j=q+8|0;b=L+8|0;w=K;do{Fc[k[(k[L>>2]|0)+24>>2]&1023](L,w);nd[k[(k[d>>2]|0)+48>>2]&1023](d,g,L);rd[k[(k[O>>2]|0)+60>>2]&511](O,m,k[s>>2]|0,L);rd[k[(k[P>>2]|0)+60>>2]&511](P,n,k[s>>2]|0,L);rd[k[(k[J>>2]|0)+60>>2]&511](J,o,k[s>>2]|0,L);rd[k[(k[I>>2]|0)+60>>2]&511](I,q,k[s>>2]|0,L);gp(t,l,u,k[s>>2]|0,L,O,P);rd[k[(k[t>>2]|0)+260>>2]&511](t,e,k[s>>2]|0,L);nd[k[(k[t>>2]|0)+356>>2]&1023](t,C,L);if(M){R=+p[m>>3];S=+p[h>>3];T=+p[e>>3]*(+p[l>>3]*+p[g>>3]*((R+S*2.0)*2.0*+p[j>>3]+(+p[o>>3]*((R*2.0+S)*2.0)+(+p[i>>3]+ +p[n>>3])*(+p[N>>3]+ +p[q>>3]))));K=0;do{x=y+(K<<3)|0;p[x>>3]=+p[x>>3]-+p[C+(K<<3)>>3]*(+p[b>>3]*T);K=K+1|0}while((K|0)!=(z|0))}w=w+1|0}while((w|0)<(Hc[k[(k[L>>2]|0)+12>>2]&511](L)|0))}if(k[c>>2]|0){w=k[k[c+4>>2]>>2]|0;Dc[k[(k[w>>2]|0)+16>>2]&255](w,z,D,y,1)}z=k[s>>2]|0;if(z)Tqa(z);k[s>>2]=0;Tqa(C);Tqa(y);Tqa(D);if(L)Ec[k[(k[L>>2]|0)+4>>2]&1023](L);if((k[f>>2]|0)!=300?(ap(t),(t|0)!=0):0)Ec[k[(k[t>>2]|0)+4>>2]&1023](t);r=a;return}function K6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0.0,S=0.0,T=0.0;a=r;r=r+304|0;e=a+240|0;f=a+292|0;g=a+104|0;h=a+280|0;i=a+268|0;j=a+256|0;l=a+96|0;m=a+72|0;n=a+48|0;o=a+24|0;q=a;s=a+252|0;cp(b,f,298);a:do switch(k[f>>2]|0){case 300:{t=b;u=2;break}case 301:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){t=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;u=1;break a}else{r=a;return}break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){t=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;u=2;break a}else{r=a;return}break}default:{v=g+56|0;w=g+4|0;k[g>>2]=27524;k[v>>2]=27544;B=0;wa(508,g+56|0,w|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;z=x;vva(v);Qb(z|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[v>>2]=27488;B=0;va(448,w|0);x=B;B=0;do if(x&1){A=Rb()|0;C=Q;D=A}else{k[w>>2]=27560;A=g+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,w|0,e|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(e);Yua(A);Ava(w);C=F;D=E;break}Yua(e);B=0;E=Ia(40,g|0,144639,5)|0;F=B;B=0;if((((!(F&1)?(B=0,F=ya(427,k[f>>2]|0)|0,G=B,B=0,!(G&1)):0)?(G=Lta(F)|0,B=0,H=Ia(40,E|0,F|0,G|0)|0,G=B,B=0,!(G&1)):0)?(B=0,G=Ia(40,H|0,146481,18)|0,H=B,B=0,!(H&1)):0)?(B=0,Xa(239,G|0,0)|0,G=B,B=0,!(G&1)):0){G=Ab(20)|0;B=0;eb(502,h|0,125033,80);H=B;B=0;do if(!(H&1)){B=0;eb(502,i|0,125379,13);F=B;B=0;if(F&1){F=Rb()|0;E=Q;Yua(h);I=F;J=E;break}B=0;wa(510,j|0,w|0);E=B;B=0;if(E&1){E=Rb()|0;K=E;L=Q;M=1}else{B=0;ua(163,G|0,h|0,i|0,1493,j|0);E=B;B=0;if(E&1)N=1;else{B=0;eb(503,G|0,1240,229);B=0;N=0}E=Rb()|0;F=Q;Yua(j);K=E;L=F;M=N}Yua(i);Yua(h);if(M){I=K;J=L}else{O=K;P=L;k[g>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}}else{F=Rb()|0;I=F;J=Q}while(0);zb(G|0);O=I;P=J;k[g>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}H=Rb()|0;O=H;P=Q;k[g>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}while(0);y=C;z=D;vva(v);Qb(z|0)}}while(0);k[s>>2]=0;z=Hc[k[(k[t>>2]|0)+172>>2]&511](t)|0;D=z>>>0>536870911?-1:z<<3;C=Rqa(D)|0;y=Rqa(D)|0;if(z)WEa(y|0,0,z<<3|0)|0;D=Rqa(z>>>0>1073741823?-1:z<<2)|0;Uo(t,s);Mp(t,D,d,0);d=Wo(t,353)|0;O=Wo(t,674)|0;P=Wo(t,677)|0;J=Wo(t,638)|0;I=Wo(t,639)|0;Wo(t,214)|0;L=ed[k[(k[t>>2]|0)+308>>2]&511](t,4)|0;K=Hc[k[(k[L>>2]|0)+8>>2]&511](L)|0;if((K|0)<(Hc[k[(k[L>>2]|0)+12>>2]&511](L)|0)){M=(z|0)>0;h=n+8|0;i=m+8|0;N=o+8|0;j=q+8|0;b=L+8|0;w=K;do{Fc[k[(k[L>>2]|0)+24>>2]&1023](L,w);nd[k[(k[d>>2]|0)+48>>2]&1023](d,g,L);rd[k[(k[O>>2]|0)+60>>2]&511](O,m,k[s>>2]|0,L);rd[k[(k[P>>2]|0)+60>>2]&511](P,n,k[s>>2]|0,L);rd[k[(k[J>>2]|0)+60>>2]&511](J,o,k[s>>2]|0,L);rd[k[(k[I>>2]|0)+60>>2]&511](I,q,k[s>>2]|0,L);gp(t,l,u,k[s>>2]|0,L,O,P);rd[k[(k[t>>2]|0)+260>>2]&511](t,e,k[s>>2]|0,L);nd[k[(k[t>>2]|0)+356>>2]&1023](t,C,L);if(M){R=+p[m>>3];S=+p[h>>3];T=+p[e>>3]*(+p[l>>3]*+p[g>>3]*((R+S*2.0)*2.0*+p[j>>3]+(+p[o>>3]*((R*2.0+S)*2.0)+(+p[i>>3]+ +p[n>>3])*(+p[N>>3]+ +p[q>>3]))));K=0;do{x=y+(K<<3)|0;p[x>>3]=+p[x>>3]-+p[C+(K<<3)>>3]*(+p[b>>3]*T);K=K+1|0}while((K|0)!=(z|0))}w=w+1|0}while((w|0)<(Hc[k[(k[L>>2]|0)+12>>2]&511](L)|0))}if(k[c>>2]|0){w=k[k[c+4>>2]>>2]|0;Dc[k[(k[w>>2]|0)+16>>2]&255](w,z,D,y,1)}z=k[s>>2]|0;if(z)Tqa(z);k[s>>2]=0;Tqa(C);Tqa(y);Tqa(D);if(L)Ec[k[(k[L>>2]|0)+4>>2]&1023](L);if((k[f>>2]|0)!=300?(ap(t),(t|0)!=0):0)Ec[k[(k[t>>2]|0)+4>>2]&1023](t);r=a;return}function L6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0.0,M=0,N=0.0;a=r;r=r+128|0;e=a+124|0;f=a+112|0;g=a+104|0;h=a+96|0;i=a+72|0;j=a+48|0;l=a+24|0;m=a;n=a+120|0;cp(b,e,298);k[n>>2]=0;o=Hc[k[(k[b>>2]|0)+172>>2]&511](b)|0;q=o>>>0>536870911?-1:o<<3;s=Rqa(q)|0;t=Rqa(q)|0;if(o)WEa(t|0,0,o<<3|0)|0;q=Rqa(o>>>0>1073741823?-1:o<<2)|0;Uo(b,n);Mp(b,q,d,0);d=Wo(b,353)|0;u=Wo(b,674)|0;v=Wo(b,638)|0;Wo(b,214)|0;if((k[e>>2]|0)==301){w=0;x=0}else{y=Wo(b,677)|0;w=Wo(b,639)|0;x=y}y=ed[k[(k[b>>2]|0)+308>>2]&511](b,4)|0;z=Hc[k[(k[y>>2]|0)+8>>2]&511](y)|0;if((z|0)<(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0)){A=(o|0)>0;B=y+8|0;C=j+8|0;D=i+8|0;E=l+8|0;F=m+8|0;G=z;do{Fc[k[(k[y>>2]|0)+24>>2]&1023](y,G);nd[k[(k[d>>2]|0)+48>>2]&1023](d,g,y);rd[k[(k[u>>2]|0)+60>>2]&511](u,i,k[n>>2]|0,y);rd[k[(k[v>>2]|0)+60>>2]&511](v,l,k[n>>2]|0,y);if((k[e>>2]|0)==301)H=2;else{rd[k[(k[w>>2]|0)+60>>2]&511](w,m,k[n>>2]|0,y);rd[k[(k[x>>2]|0)+60>>2]&511](x,j,k[n>>2]|0,y);H=3}dp(b,h,H,k[n>>2]|0,y,u,x);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[n>>2]|0,y);nd[k[(k[b>>2]|0)+356>>2]&1023](b,s,y);if(A){I=+p[h>>3];J=+p[g>>3];K=+p[i>>3];if((k[e>>2]|0)==301){L=I*J*-4.0*K*+p[l>>3]*+p[f>>3];z=0;do{M=t+(z<<3)|0;p[M>>3]=+p[M>>3]+L*+p[B>>3]*+p[s+(z<<3)>>3];z=z+1|0}while((z|0)!=(o|0))}else{L=+p[C>>3];N=+p[f>>3]*(I*J*((K+L*2.0)*2.0*+p[F>>3]+(+p[l>>3]*((K*2.0+L)*2.0)+(+p[D>>3]+ +p[j>>3])*(+p[E>>3]+ +p[m>>3]))));z=0;do{M=t+(z<<3)|0;p[M>>3]=+p[M>>3]-+p[s+(z<<3)>>3]*(+p[B>>3]*N);z=z+1|0}while((z|0)!=(o|0))}}G=G+1|0}while((G|0)<(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0))}if(k[c>>2]|0){G=k[k[c+4>>2]>>2]|0;Dc[k[(k[G>>2]|0)+16>>2]&255](G,o,q,t,1)}o=k[n>>2]|0;if(o)Tqa(o);k[n>>2]=0;Tqa(s);Tqa(t);Tqa(q);if(!y){r=a;return}Ec[k[(k[y>>2]|0)+4>>2]&1023](y);r=a;return}function M6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0.0,S=0.0,T=0.0;a=r;r=r+304|0;e=a+240|0;f=a+292|0;g=a+104|0;h=a+280|0;i=a+268|0;j=a+256|0;l=a+96|0;m=a+72|0;n=a+48|0;o=a+24|0;q=a;s=a+252|0;cp(b,f,298);a:do switch(k[f>>2]|0){case 300:{t=b;u=2;break}case 301:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){t=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;u=1;break a}else{r=a;return}break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){t=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;u=2;break a}else{r=a;return}break}default:{v=g+56|0;w=g+4|0;k[g>>2]=27524;k[v>>2]=27544;B=0;wa(508,g+56|0,w|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;z=x;vva(v);Qb(z|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[v>>2]=27488;B=0;va(448,w|0);x=B;B=0;do if(x&1){A=Rb()|0;C=Q;D=A}else{k[w>>2]=27560;A=g+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,w|0,e|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(e);Yua(A);Ava(w);C=F;D=E;break}Yua(e);B=0;E=Ia(40,g|0,144639,5)|0;F=B;B=0;if((((!(F&1)?(B=0,F=ya(427,k[f>>2]|0)|0,G=B,B=0,!(G&1)):0)?(G=Lta(F)|0,B=0,H=Ia(40,E|0,F|0,G|0)|0,G=B,B=0,!(G&1)):0)?(B=0,G=Ia(40,H|0,146481,18)|0,H=B,B=0,!(H&1)):0)?(B=0,Xa(239,G|0,0)|0,G=B,B=0,!(G&1)):0){G=Ab(20)|0;B=0;eb(502,h|0,125033,80);H=B;B=0;do if(!(H&1)){B=0;eb(502,i|0,125393,13);F=B;B=0;if(F&1){F=Rb()|0;E=Q;Yua(h);I=F;J=E;break}B=0;wa(510,j|0,w|0);E=B;B=0;if(E&1){E=Rb()|0;K=E;L=Q;M=1}else{B=0;ua(163,G|0,h|0,i|0,2222,j|0);E=B;B=0;if(E&1)N=1;else{B=0;eb(503,G|0,1240,229);B=0;N=0}E=Rb()|0;F=Q;Yua(j);K=E;L=F;M=N}Yua(i);Yua(h);if(M){I=K;J=L}else{O=K;P=L;k[g>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}}else{F=Rb()|0;I=F;J=Q}while(0);zb(G|0);O=I;P=J;k[g>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}H=Rb()|0;O=H;P=Q;k[g>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}while(0);y=C;z=D;vva(v);Qb(z|0)}}while(0);k[s>>2]=0;z=Hc[k[(k[t>>2]|0)+172>>2]&511](t)|0;D=z>>>0>536870911?-1:z<<3;C=Rqa(D)|0;y=Rqa(D)|0;if(z)WEa(y|0,0,z<<3|0)|0;D=Rqa(z>>>0>1073741823?-1:z<<2)|0;Uo(t,s);Mp(t,D,d,0);d=Wo(t,353)|0;O=Wo(t,674)|0;P=Wo(t,677)|0;J=Wo(t,638)|0;I=Wo(t,639)|0;Wo(t,215)|0;L=ed[k[(k[t>>2]|0)+308>>2]&511](t,4)|0;K=Hc[k[(k[L>>2]|0)+8>>2]&511](L)|0;if((K|0)<(Hc[k[(k[L>>2]|0)+12>>2]&511](L)|0)){M=(z|0)>0;h=n+8|0;i=m+8|0;N=o+8|0;j=q+8|0;b=L+8|0;w=K;do{Fc[k[(k[L>>2]|0)+24>>2]&1023](L,w);nd[k[(k[d>>2]|0)+48>>2]&1023](d,g,L);rd[k[(k[O>>2]|0)+60>>2]&511](O,m,k[s>>2]|0,L);rd[k[(k[P>>2]|0)+60>>2]&511](P,n,k[s>>2]|0,L);rd[k[(k[J>>2]|0)+60>>2]&511](J,o,k[s>>2]|0,L);rd[k[(k[I>>2]|0)+60>>2]&511](I,q,k[s>>2]|0,L);ip(t,l,u,k[s>>2]|0,L,O,P);rd[k[(k[t>>2]|0)+260>>2]&511](t,e,k[s>>2]|0,L);nd[k[(k[t>>2]|0)+356>>2]&1023](t,C,L);if(M){R=+p[m>>3];S=+p[h>>3];T=+p[e>>3]*(+p[l>>3]*+p[g>>3]*((R+S*2.0)*2.0*+p[j>>3]+(+p[o>>3]*((R*2.0+S)*2.0)+(+p[i>>3]+ +p[n>>3])*(+p[N>>3]+ +p[q>>3]))));K=0;do{x=y+(K<<3)|0;p[x>>3]=+p[x>>3]-+p[C+(K<<3)>>3]*(+p[b>>3]*T);K=K+1|0}while((K|0)!=(z|0))}w=w+1|0}while((w|0)<(Hc[k[(k[L>>2]|0)+12>>2]&511](L)|0))}if(k[c>>2]|0){w=k[k[c+4>>2]>>2]|0;Dc[k[(k[w>>2]|0)+16>>2]&255](w,z,D,y,1)}z=k[s>>2]|0;if(z)Tqa(z);k[s>>2]=0;Tqa(C);Tqa(y);Tqa(D);if(L)Ec[k[(k[L>>2]|0)+4>>2]&1023](L);if((k[f>>2]|0)!=300?(ap(t),(t|0)!=0):0)Ec[k[(k[t>>2]|0)+4>>2]&1023](t);r=a;return}function N6(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=r;r=r+16|0;d=a;Ap(c,d,533);if((k[d>>2]&-9|0)==534){O6(0,b,c);r=a;return}else{P6(0,b,c);r=a;return}}function O6(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0.0,Ea=0.0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0;a=r;r=r+1616|0;d=a+1600|0;e=a+1572|0;f=a+1556|0;g=a+1552|0;h=a;i=a+1524|0;j=a+1376|0;l=a+1588|0;m=a+1576|0;n=a+1560|0;o=a+1224|0;q=a+1540|0;s=a+1528|0;u=a+1512|0;v=a+1072|0;w=a+1360|0;x=a+1208|0;y=a+1056|0;z=a+920|0;A=a+768|0;C=a+616|0;D=a+328|0;E=a+784|0;F=a+176|0;G=a+164|0;H=a+152|0;I=a+632|0;J=a+140|0;K=a+128|0;L=a+116|0;M=a+480|0;N=a+104|0;O=a+92|0;P=a+80|0;R=a+344|0;S=a+68|0;T=a+56|0;U=a+44|0;V=a+192|0;W=a+32|0;X=a+20|0;Y=a+8|0;k[f>>2]=0;k[g>>2]=0;cp(c,i,298);switch(k[i>>2]|0){case 302:case 300:{Z=3;break}case 301:{Z=2;break}default:{_=j+56|0;aa=j+4|0;k[j>>2]=27524;k[_>>2]=27544;B=0;wa(508,j+56|0,aa|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;da=ba;vva(_);Qb(da|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[_>>2]=27488;B=0;va(448,aa|0);ba=B;B=0;do if(ba&1){ea=Rb()|0;fa=Q;ga=ea}else{k[aa>>2]=27560;ea=j+36|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[j+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,aa|0,d|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(d);Yua(ea);Ava(aa);fa=ia;ga=ha;break}Yua(d);B=0;ha=Ia(40,j|0,144639,5)|0;ia=B;B=0;a:do if((((!(ia&1)?(B=0,ja=ya(427,k[i>>2]|0)|0,ka=B,B=0,!(ka&1)):0)?(ka=Lta(ja)|0,B=0,la=Ia(40,ha|0,ja|0,ka|0)|0,ka=B,B=0,!(ka&1)):0)?(B=0,ka=Ia(40,la|0,146481,18)|0,la=B,B=0,!(la&1)):0)?(B=0,Xa(239,ka|0,0)|0,ka=B,B=0,!(ka&1)):0){ka=Ab(20)|0;B=0;eb(502,l|0,125033,80);la=B;B=0;do if(!(la&1)){B=0;eb(502,m|0,128297,25);ja=B;B=0;if(ja&1){ja=Rb()|0;na=Q;Yua(l);oa=ja;pa=na;break}B=0;wa(510,n|0,aa|0);na=B;B=0;if(na&1){na=Rb()|0;qa=na;ra=Q;sa=1}else{B=0;ua(163,ka|0,l|0,m|0,2310,n|0);na=B;B=0;if(na&1)ta=1;else{B=0;eb(503,ka|0,1240,229);B=0;ta=0}na=Rb()|0;ja=Q;Yua(n);qa=na;ra=ja;sa=ta}Yua(m);Yua(l);if(sa){oa=qa;pa=ra}else{xa=qa;za=ra;break a}}else{ja=Rb()|0;oa=ja;pa=Q}while(0);zb(ka|0);xa=oa;za=pa}else Aa=21;while(0);if((Aa|0)==21){ha=Rb()|0;xa=ha;za=Q}k[j>>2]=27468;k[_>>2]=27488;k[aa>>2]=27560;Yua(ea);Ava(aa);vva(_);Ba=xa;Ca=za;Qb(Ba|0)}while(0);ca=fa;da=ga;vva(_);Qb(da|0)}}da=Hc[k[(k[c>>2]|0)+396>>2]&511](c)|0;_=Hc[k[(k[c>>2]|0)+392>>2]&511](c)|0;ga=ma(da,Z)|0;fa=_+ga|0;ca=Rqa(fa>>>0>536870911?-1:fa<<3)|0;fa=da>>>0>536870911?-1:da<<3;za=Rqa(fa)|0;xa=Rqa(fa)|0;aa=Rqa(fa)|0;fa=Rqa(_>>>0>536870911?-1:_<<3)|0;j=_+da|0;pa=Rqa(j>>>0>1073741823?-1:j<<2)|0;j=(da|0)>0;if((Z|0)==2){if(j){oa=0;do{k[pa+(oa<<2)>>2]=971;oa=oa+1|0}while((oa|0)!=(da|0))}}else if(j){oa=0;do{k[pa+(oa<<2)>>2]=972;oa=oa+1|0}while((oa|0)!=(da|0))}oa=(_|0)>0;if(oa){ra=0;do{k[pa+(ra+da<<2)>>2]=653;ra=ra+1|0}while((ra|0)!=(_|0))}tp(c,f,943);sp(c,g,943);if((ga|0)>0){ra=k[f>>2]|0;qa=0;do{p[ca+(qa<<3)>>3]=+p[b+(k[ra+(qa<<2)>>2]<<3)>>3];qa=qa+1|0}while((qa|0)!=(ga|0))}if(oa){qa=k[g>>2]|0;ra=0;do{p[ca+(ra+ga<<3)>>3]=+p[b+(k[qa+(ra<<2)>>2]<<3)>>3];ra=ra+1|0}while((ra|0)!=(_|0))}Cq(c,ca,pa);b:do if(j){c:do if((Z|0)==3){ra=0;while(1){qa=ra*3|0;Da=+p[ca+(qa<<3)>>3];p[za+(ra<<3)>>3]=Da;Ea=+$(+Da);p[t>>3]=Ea;b=k[t>>2]|0;sa=k[t+4>>2]|0;if(sa>>>0>2146435072|(sa|0)==2146435072&b>>>0>0){Aa=54;break c}if((b|0)==0&(sa|0)==2146435072){Aa=78;break c}Ea=+p[ca+(qa+1<<3)>>3];p[xa+(ra<<3)>>3]=Ea;Da=+$(+Ea);p[t>>3]=Da;sa=k[t>>2]|0;b=k[t+4>>2]|0;if(b>>>0>2146435072|(b|0)==2146435072&sa>>>0>0){Aa=102;break c}if((sa|0)==0&(b|0)==2146435072){Aa=126;break c}Da=+p[ca+(qa+2<<3)>>3];p[aa+(ra<<3)>>3]=Da;Ea=+$(+Da);p[t>>3]=Ea;qa=k[t>>2]|0;b=k[t+4>>2]|0;if(b>>>0>2146435072|(b|0)==2146435072&qa>>>0>0){Aa=149;break}if((qa|0)==0&(b|0)==2146435072){Aa=172;break}ra=ra+1|0;if((ra|0)>=(da|0))break b}if((Aa|0)==149){ra=I+56|0;ka=I+4|0;k[I>>2]=27524;k[ra>>2]=27544;B=0;wa(508,I+56|0,ka|0);b=B;B=0;if(b&1){b=Rb()|0;Fa=Q;Ga=b;vva(ra);Qb(Ga|0)}k[I+128>>2]=0;k[I+132>>2]=-1;k[I>>2]=27468;k[ra>>2]=27488;B=0;va(448,ka|0);b=B;B=0;do if(b&1){qa=Rb()|0;Ha=Q;Ja=qa}else{k[ka>>2]=27560;qa=I+36|0;k[qa>>2]=0;k[qa+4>>2]=0;k[qa+8>>2]=0;k[qa+12>>2]=0;k[I+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ka|0,d|0);sa=B;B=0;if(sa&1){sa=Rb()|0;l=Q;Yua(d);Yua(qa);Ava(ka);Ha=l;Ja=sa;break}Yua(d);B=0;sa=Ia(40,I|0,135564,28)|0;l=B;B=0;d:do if(!(l&1)?(B=0,Xa(239,sa|0,0)|0,m=B,B=0,!(m&1)):0){m=Ab(20)|0;B=0;eb(502,J|0,125033,80);ta=B;B=0;do if(!(ta&1)){B=0;eb(502,K|0,128297,25);n=B;B=0;if(n&1){n=Rb()|0;ba=Q;Yua(J);Ka=n;La=ba;break}B=0;wa(510,L|0,ka|0);ba=B;B=0;if(ba&1){ba=Rb()|0;Ma=1;Na=ba;Oa=Q}else{B=0;ua(163,m|0,J|0,K|0,2353,L|0);ba=B;B=0;if(ba&1)Pa=1;else{B=0;eb(503,m|0,1240,229);B=0;Pa=0}ba=Rb()|0;n=Q;Yua(L);Ma=Pa;Na=ba;Oa=n}Yua(K);Yua(J);if(Ma){Ka=Na;La=Oa}else{Qa=Na;Ra=Oa;break d}}else{n=Rb()|0;Ka=n;La=Q}while(0);zb(m|0);Qa=Ka;Ra=La}else Aa=164;while(0);if((Aa|0)==164){sa=Rb()|0;Qa=sa;Ra=Q}k[I>>2]=27468;k[ra>>2]=27488;k[ka>>2]=27560;Yua(qa);Ava(ka);vva(ra);Ba=Qa;Ca=Ra;Qb(Ba|0)}while(0);Fa=Ha;Ga=Ja;vva(ra);Qb(Ga|0)}else if((Aa|0)==172){ka=M+56|0;b=M+4|0;k[M>>2]=27524;k[ka>>2]=27544;B=0;wa(508,M+56|0,b|0);sa=B;B=0;if(sa&1){sa=Rb()|0;Sa=Q;Ta=sa;vva(ka);Qb(Ta|0)}k[M+128>>2]=0;k[M+132>>2]=-1;k[M>>2]=27468;k[ka>>2]=27488;B=0;va(448,b|0);sa=B;B=0;do if(sa&1){l=Rb()|0;Ua=Q;Va=l}else{k[b>>2]=27560;l=M+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[M+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);ta=B;B=0;if(ta&1){ta=Rb()|0;n=Q;Yua(d);Yua(l);Ava(b);Ua=n;Va=ta;break}Yua(d);B=0;ta=Ia(40,M|0,135593,28)|0;n=B;B=0;e:do if(!(n&1)?(B=0,Xa(239,ta|0,0)|0,ba=B,B=0,!(ba&1)):0){ba=Ab(20)|0;B=0;eb(502,N|0,125033,80);ha=B;B=0;do if(!(ha&1)){B=0;eb(502,O|0,128297,25);ia=B;B=0;if(ia&1){ia=Rb()|0;la=Q;Yua(N);Wa=ia;Ya=la;break}B=0;wa(510,P|0,b|0);la=B;B=0;if(la&1){la=Rb()|0;Za=1;_a=la;$a=Q}else{B=0;ua(163,ba|0,N|0,O|0,2354,P|0);la=B;B=0;if(la&1)ab=1;else{B=0;eb(503,ba|0,1240,229);B=0;ab=0}la=Rb()|0;ia=Q;Yua(P);Za=ab;_a=la;$a=ia}Yua(O);Yua(N);if(Za){Wa=_a;Ya=$a}else{bb=_a;cb=$a;break e}}else{ia=Rb()|0;Wa=ia;Ya=Q}while(0);zb(ba|0);bb=Wa;cb=Ya}else Aa=187;while(0);if((Aa|0)==187){ta=Rb()|0;bb=ta;cb=Q}k[M>>2]=27468;k[ka>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(ka);Ba=bb;Ca=cb;Qb(Ba|0)}while(0);Sa=Ua;Ta=Va;vva(ka);Qb(Ta|0)}}else{b=0;while(1){sa=ma(b,Z)|0;Ea=+p[ca+(sa<<3)>>3];p[za+(b<<3)>>3]=Ea;Da=+$(+Ea);p[t>>3]=Da;ra=k[t>>2]|0;ta=k[t+4>>2]|0;if(ta>>>0>2146435072|(ta|0)==2146435072&ra>>>0>0){Aa=54;break c}if((ra|0)==0&(ta|0)==2146435072){Aa=78;break c}Da=+p[ca+(sa+1<<3)>>3];p[xa+(b<<3)>>3]=Da;Ea=+$(+Da);p[t>>3]=Ea;sa=k[t>>2]|0;ta=k[t+4>>2]|0;if(ta>>>0>2146435072|(ta|0)==2146435072&sa>>>0>0){Aa=102;break c}if((sa|0)==0&(ta|0)==2146435072){Aa=126;break c}b=b+1|0;if((b|0)>=(da|0))break b}}while(0);if((Aa|0)==54){ea=o+56|0;b=o+4|0;k[o>>2]=27524;k[ea>>2]=27544;B=0;wa(508,o+56|0,b|0);ka=B;B=0;if(ka&1){ka=Rb()|0;db=Q;fb=ka;vva(ea);Qb(fb|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[ea>>2]=27488;B=0;va(448,b|0);ka=B;B=0;do if(ka&1){ta=Rb()|0;gb=Q;hb=ta}else{k[b>>2]=27560;ta=o+36|0;k[ta>>2]=0;k[ta+4>>2]=0;k[ta+8>>2]=0;k[ta+12>>2]=0;k[o+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);sa=B;B=0;if(sa&1){sa=Rb()|0;ra=Q;Yua(d);Yua(ta);Ava(b);gb=ra;hb=sa;break}Yua(d);B=0;sa=Ia(40,o|0,135564,28)|0;ra=B;B=0;f:do if(!(ra&1)?(B=0,Xa(239,sa|0,0)|0,n=B,B=0,!(n&1)):0){n=Ab(20)|0;B=0;eb(502,q|0,125033,80);qa=B;B=0;do if(!(qa&1)){B=0;eb(502,s|0,128297,25);ha=B;B=0;if(ha&1){ha=Rb()|0;m=Q;Yua(q);ib=ha;jb=m;break}B=0;wa(510,u|0,b|0);m=B;B=0;if(m&1){m=Rb()|0;kb=1;lb=m;mb=Q}else{B=0;ua(163,n|0,q|0,s|0,2346,u|0);m=B;B=0;if(m&1)nb=1;else{B=0;eb(503,n|0,1240,229);B=0;nb=0}m=Rb()|0;ha=Q;Yua(u);kb=nb;lb=m;mb=ha}Yua(s);Yua(q);if(kb){ib=lb;jb=mb}else{ob=lb;pb=mb;break f}}else{ha=Rb()|0;ib=ha;jb=Q}while(0);zb(n|0);ob=ib;pb=jb}else Aa=69;while(0);if((Aa|0)==69){sa=Rb()|0;ob=sa;pb=Q}k[o>>2]=27468;k[ea>>2]=27488;k[b>>2]=27560;Yua(ta);Ava(b);vva(ea);Ba=ob;Ca=pb;Qb(Ba|0)}while(0);db=gb;fb=hb;vva(ea);Qb(fb|0)}else if((Aa|0)==78){b=v+56|0;ka=v+4|0;k[v>>2]=27524;k[b>>2]=27544;B=0;wa(508,v+56|0,ka|0);sa=B;B=0;if(sa&1){sa=Rb()|0;qb=Q;rb=sa;vva(b);Qb(rb|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[b>>2]=27488;B=0;va(448,ka|0);sa=B;B=0;do if(sa&1){ra=Rb()|0;sb=Q;tb=ra}else{k[ka>>2]=27560;ra=v+36|0;k[ra>>2]=0;k[ra+4>>2]=0;k[ra+8>>2]=0;k[ra+12>>2]=0;k[v+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ka|0,d|0);qa=B;B=0;if(qa&1){qa=Rb()|0;l=Q;Yua(d);Yua(ra);Ava(ka);sb=l;tb=qa;break}Yua(d);B=0;qa=Ia(40,v|0,135593,28)|0;l=B;B=0;g:do if(!(l&1)?(B=0,Xa(239,qa|0,0)|0,ha=B,B=0,!(ha&1)):0){ha=Ab(20)|0;B=0;eb(502,w|0,125033,80);m=B;B=0;do if(!(m&1)){B=0;eb(502,x|0,128297,25);ia=B;B=0;if(ia&1){ia=Rb()|0;la=Q;Yua(w);ub=ia;vb=la;break}B=0;wa(510,y|0,ka|0);la=B;B=0;if(la&1){la=Rb()|0;wb=1;xb=la;yb=Q}else{B=0;ua(163,ha|0,w|0,x|0,2347,y|0);la=B;B=0;if(la&1)Bb=1;else{B=0;eb(503,ha|0,1240,229);B=0;Bb=0}la=Rb()|0;ia=Q;Yua(y);wb=Bb;xb=la;yb=ia}Yua(x);Yua(w);if(wb){ub=xb;vb=yb}else{Cb=xb;Db=yb;break g}}else{ia=Rb()|0;ub=ia;vb=Q}while(0);zb(ha|0);Cb=ub;Db=vb}else Aa=93;while(0);if((Aa|0)==93){qa=Rb()|0;Cb=qa;Db=Q}k[v>>2]=27468;k[b>>2]=27488;k[ka>>2]=27560;Yua(ra);Ava(ka);vva(b);Ba=Cb;Ca=Db;Qb(Ba|0)}while(0);qb=sb;rb=tb;vva(b);Qb(rb|0)}else if((Aa|0)==102){ka=z+56|0;sa=z+4|0;k[z>>2]=27524;k[ka>>2]=27544;B=0;wa(508,z+56|0,sa|0);ea=B;B=0;if(ea&1){ea=Rb()|0;Eb=Q;Fb=ea;vva(ka);Qb(Fb|0)}k[z+128>>2]=0;k[z+132>>2]=-1;k[z>>2]=27468;k[ka>>2]=27488;B=0;va(448,sa|0);ea=B;B=0;do if(ea&1){qa=Rb()|0;Gb=Q;Hb=qa}else{k[sa>>2]=27560;qa=z+36|0;k[qa>>2]=0;k[qa+4>>2]=0;k[qa+8>>2]=0;k[qa+12>>2]=0;k[z+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,sa|0,d|0);l=B;B=0;if(l&1){l=Rb()|0;ta=Q;Yua(d);Yua(qa);Ava(sa);Gb=ta;Hb=l;break}Yua(d);B=0;l=Ia(40,z|0,135564,28)|0;ta=B;B=0;h:do if(!(ta&1)?(B=0,Xa(239,l|0,0)|0,m=B,B=0,!(m&1)):0){m=Ab(20)|0;B=0;eb(502,A|0,125033,80);n=B;B=0;do if(!(n&1)){B=0;eb(502,C|0,128297,25);ia=B;B=0;if(ia&1){ia=Rb()|0;la=Q;Yua(A);Ib=ia;Jb=la;break}B=0;wa(510,D|0,sa|0);la=B;B=0;if(la&1){la=Rb()|0;Kb=1;Lb=la;Mb=Q}else{B=0;ua(163,m|0,A|0,C|0,2349,D|0);la=B;B=0;if(la&1)Nb=1;else{B=0;eb(503,m|0,1240,229);B=0;Nb=0}la=Rb()|0;ia=Q;Yua(D);Kb=Nb;Lb=la;Mb=ia}Yua(C);Yua(A);if(Kb){Ib=Lb;Jb=Mb}else{Ob=Lb;Pb=Mb;break h}}else{ia=Rb()|0;Ib=ia;Jb=Q}while(0);zb(m|0);Ob=Ib;Pb=Jb}else Aa=117;while(0);if((Aa|0)==117){l=Rb()|0;Ob=l;Pb=Q}k[z>>2]=27468;k[ka>>2]=27488;k[sa>>2]=27560;Yua(qa);Ava(sa);vva(ka);Ba=Ob;Ca=Pb;Qb(Ba|0)}while(0);Eb=Gb;Fb=Hb;vva(ka);Qb(Fb|0)}else if((Aa|0)==126){sa=E+56|0;ea=E+4|0;k[E>>2]=27524;k[sa>>2]=27544;B=0;wa(508,E+56|0,ea|0);b=B;B=0;if(b&1){b=Rb()|0;Sb=Q;Tb=b;vva(sa);Qb(Tb|0)}k[E+128>>2]=0;k[E+132>>2]=-1;k[E>>2]=27468;k[sa>>2]=27488;B=0;va(448,ea|0);b=B;B=0;do if(b&1){l=Rb()|0;Ub=Q;Vb=l}else{k[ea>>2]=27560;l=E+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[E+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ea|0,d|0);ta=B;B=0;if(ta&1){ta=Rb()|0;ra=Q;Yua(d);Yua(l);Ava(ea);Ub=ra;Vb=ta;break}Yua(d);B=0;ta=Ia(40,E|0,135593,28)|0;ra=B;B=0;i:do if(!(ra&1)?(B=0,Xa(239,ta|0,0)|0,n=B,B=0,!(n&1)):0){n=Ab(20)|0;B=0;eb(502,F|0,125033,80);ha=B;B=0;do if(!(ha&1)){B=0;eb(502,G|0,128297,25);ia=B;B=0;if(ia&1){ia=Rb()|0;la=Q;Yua(F);Wb=ia;Xb=la;break}B=0;wa(510,H|0,ea|0);la=B;B=0;if(la&1){la=Rb()|0;Yb=1;Zb=la;_b=Q}else{B=0;ua(163,n|0,F|0,G|0,2350,H|0);la=B;B=0;if(la&1)$b=1;else{B=0;eb(503,n|0,1240,229);B=0;$b=0}la=Rb()|0;ia=Q;Yua(H);Yb=$b;Zb=la;_b=ia}Yua(G);Yua(F);if(Yb){Wb=Zb;Xb=_b}else{ac=Zb;bc=_b;break i}}else{ia=Rb()|0;Wb=ia;Xb=Q}while(0);zb(n|0);ac=Wb;bc=Xb}else Aa=141;while(0);if((Aa|0)==141){ta=Rb()|0;ac=ta;bc=Q}k[E>>2]=27468;k[sa>>2]=27488;k[ea>>2]=27560;Yua(l);Ava(ea);vva(sa);Ba=ac;Ca=bc;Qb(Ba|0)}while(0);Sb=Ub;Tb=Vb;vva(sa);Qb(Tb|0)}}while(0);do if(oa){Tb=0;while(1){Ea=+p[ca+(Tb+ga<<3)>>3];p[fa+(Tb<<3)>>3]=Ea;Da=+$(+Ea);p[t>>3]=Da;Vb=k[t>>2]|0;Ub=k[t+4>>2]|0;if(Ub>>>0>2146435072|(Ub|0)==2146435072&Vb>>>0>0){Aa=198;break}Tb=Tb+1|0;if((Vb|0)==0&(Ub|0)==2146435072){Aa=222;break}if((Tb|0)>=(_|0)){Aa=245;break}}if((Aa|0)==198){Tb=R+56|0;sa=R+4|0;k[R>>2]=27524;k[Tb>>2]=27544;B=0;wa(508,R+56|0,sa|0);Ub=B;B=0;if(Ub&1){Ub=Rb()|0;cc=Q;dc=Ub;vva(Tb);Qb(dc|0)}k[R+128>>2]=0;k[R+132>>2]=-1;k[R>>2]=27468;k[Tb>>2]=27488;B=0;va(448,sa|0);Ub=B;B=0;do if(Ub&1){Vb=Rb()|0;ec=Q;fc=Vb}else{k[sa>>2]=27560;Vb=R+36|0;k[Vb>>2]=0;k[Vb+4>>2]=0;k[Vb+8>>2]=0;k[Vb+12>>2]=0;k[R+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,sa|0,d|0);Sb=B;B=0;if(Sb&1){Sb=Rb()|0;bc=Q;Yua(d);Yua(Vb);Ava(sa);ec=bc;fc=Sb;break}Yua(d);B=0;Sb=Ia(40,R|0,135564,28)|0;bc=B;B=0;j:do if(!(bc&1)?(B=0,Xa(239,Sb|0,0)|0,ac=B,B=0,!(ac&1)):0){ac=Ab(20)|0;B=0;eb(502,S|0,125033,80);E=B;B=0;do if(!(E&1)){B=0;eb(502,T|0,128297,25);Xb=B;B=0;if(Xb&1){Xb=Rb()|0;Wb=Q;Yua(S);gc=Xb;hc=Wb;break}B=0;wa(510,U|0,sa|0);Wb=B;B=0;if(Wb&1){Wb=Rb()|0;ic=1;jc=Wb;kc=Q}else{B=0;ua(163,ac|0,S|0,T|0,2359,U|0);Wb=B;B=0;if(Wb&1)lc=1;else{B=0;eb(503,ac|0,1240,229);B=0;lc=0}Wb=Rb()|0;Xb=Q;Yua(U);ic=lc;jc=Wb;kc=Xb}Yua(T);Yua(S);if(ic){gc=jc;hc=kc}else{mc=jc;nc=kc;break j}}else{Xb=Rb()|0;gc=Xb;hc=Q}while(0);zb(ac|0);mc=gc;nc=hc}else Aa=213;while(0);if((Aa|0)==213){Sb=Rb()|0;mc=Sb;nc=Q}k[R>>2]=27468;k[Tb>>2]=27488;k[sa>>2]=27560;Yua(Vb);Ava(sa);vva(Tb);Ba=mc;Ca=nc;Qb(Ba|0)}while(0);cc=ec;dc=fc;vva(Tb);Qb(dc|0)}else if((Aa|0)==222){sa=V+56|0;Ub=V+4|0;k[V>>2]=27524;k[sa>>2]=27544;B=0;wa(508,V+56|0,Ub|0);Sb=B;B=0;if(Sb&1){Sb=Rb()|0;oc=Q;pc=Sb;vva(sa);Qb(pc|0)}k[V+128>>2]=0;k[V+132>>2]=-1;k[V>>2]=27468;k[sa>>2]=27488;B=0;va(448,Ub|0);Sb=B;B=0;do if(Sb&1){bc=Rb()|0;qc=Q;rc=bc}else{k[Ub>>2]=27560;bc=V+36|0;k[bc>>2]=0;k[bc+4>>2]=0;k[bc+8>>2]=0;k[bc+12>>2]=0;k[V+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Ub|0,d|0);l=B;B=0;if(l&1){l=Rb()|0;E=Q;Yua(d);Yua(bc);Ava(Ub);qc=E;rc=l;break}Yua(d);B=0;l=Ia(40,V|0,135593,28)|0;E=B;B=0;k:do if(!(E&1)?(B=0,Xa(239,l|0,0)|0,n=B,B=0,!(n&1)):0){n=Ab(20)|0;B=0;eb(502,W|0,125033,80);Xb=B;B=0;do if(!(Xb&1)){B=0;eb(502,X|0,128297,25);Wb=B;B=0;if(Wb&1){Wb=Rb()|0;_b=Q;Yua(W);sc=Wb;tc=_b;break}B=0;wa(510,Y|0,Ub|0);_b=B;B=0;if(_b&1){_b=Rb()|0;uc=1;vc=_b;wc=Q}else{B=0;ua(163,n|0,W|0,X|0,2360,Y|0);_b=B;B=0;if(_b&1)xc=1;else{B=0;eb(503,n|0,1240,229);B=0;xc=0}_b=Rb()|0;Wb=Q;Yua(Y);uc=xc;vc=_b;wc=Wb}Yua(X);Yua(W);if(uc){sc=vc;tc=wc}else{yc=vc;zc=wc;break k}}else{Wb=Rb()|0;sc=Wb;tc=Q}while(0);zb(n|0);yc=sc;zc=tc}else Aa=237;while(0);if((Aa|0)==237){l=Rb()|0;yc=l;zc=Q}k[V>>2]=27468;k[sa>>2]=27488;k[Ub>>2]=27560;Yua(bc);Ava(Ub);vva(sa);Ba=yc;Ca=zc;Qb(Ba|0)}while(0);oc=qc;pc=rc;vva(sa);Qb(pc|0)}else if((Aa|0)==245){pp(c,h,85);if(!oa)break;Da=+p[h>>3];Ub=0;do{Sb=fa+(Ub<<3)|0;p[Sb>>3]=+p[Sb>>3]*Da;Ub=Ub+1|0}while((Ub|0)!=(_|0))}}else pp(c,h,85);while(0);h=k[c>>2]|0;_=k[h+48>>2]|0;oa=Hc[k[h+504>>2]&511](c)|0;rd[_&511](c,638,za,oa);oa=k[c>>2]|0;_=k[oa+48>>2]|0;h=Hc[k[oa+504>>2]&511](c)|0;rd[_&511](c,639,xa,h);if((k[i>>2]|0)!=301){i=k[c>>2]|0;h=k[i+48>>2]|0;_=Hc[k[i+504>>2]&511](c)|0;rd[h&511](c,640,aa,_)}cp(c,e,102);switch(k[e>>2]|0){case 754:case 758:break;default:{e=k[c>>2]|0;_=k[e+48>>2]|0;h=Hc[k[e+404>>2]&511](c)|0;rd[_&511](c,637,fa,h)}}h=k[f>>2]|0;if(h)Tqa(h);k[f>>2]=0;f=k[g>>2]|0;if(!f){k[g>>2]=0;Tqa(pa);Tqa(fa);Tqa(aa);Tqa(xa);Tqa(za);Tqa(ca);r=a;return}Tqa(f);k[g>>2]=0;Tqa(pa);Tqa(fa);Tqa(aa);Tqa(xa);Tqa(za);Tqa(ca);r=a;return}function P6(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0;a=r;r=r+720|0;d=a+704|0;e=a+700|0;f=a+684|0;g=a+536|0;h=a+688|0;i=a+672|0;j=a+520|0;l=a+384|0;m=a+232|0;n=a+84|0;o=a+72|0;q=a+248|0;s=a+60|0;u=a+48|0;v=a+36|0;w=a+96|0;x=a+24|0;y=a+12|0;z=a;k[e>>2]=0;cp(c,f,298);A=Hc[k[(k[c>>2]|0)+164>>2]&511](c)|0;C=A<<((k[f>>2]|0)!=301&1);rp(c,e,534,943);D=Rqa(C>>>0>536870911?-1:C<<3)|0;E=A>>>0>536870911?-1:A<<3;F=Rqa(E)|0;G=Rqa(E)|0;if((C|0)>0){E=k[e>>2]|0;H=0;do{p[D+(H<<3)>>3]=+p[b+(k[E+(H<<2)>>2]<<3)>>3];H=H+1|0}while((H|0)!=(C|0))}if((k[f>>2]|0)!=301)Aq(c,D,971);a:do if((A|0)>0){b:do if((k[f>>2]|0)!=301){C=0;while(1){H=C<<1;I=+p[D+(H<<3)>>3];p[F+(C<<3)>>3]=I;J=+p[D+((H|1)<<3)>>3];p[G+(C<<3)>>3]=J;K=+$(+I);p[t>>3]=K;H=k[t>>2]|0;E=k[t+4>>2]|0;if(E>>>0>2146435072|(E|0)==2146435072&H>>>0>0){L=12;break b}if((H|0)==0&(E|0)==2146435072){L=36;break b}K=+$(+J);p[t>>3]=K;E=k[t>>2]|0;H=k[t+4>>2]|0;if(H>>>0>2146435072|(H|0)==2146435072&E>>>0>0){L=60;break}if((E|0)==0&(H|0)==2146435072){L=84;break}C=C+1|0;if((C|0)>=(A|0))break a}if((L|0)==60){C=q+56|0;H=q+4|0;k[q>>2]=27524;k[C>>2]=27544;B=0;wa(508,q+56|0,H|0);E=B;B=0;if(E&1){E=Rb()|0;M=Q;N=E;vva(C);Qb(N|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[C>>2]=27488;B=0;va(448,H|0);E=B;B=0;do if(E&1){b=Rb()|0;O=Q;P=b}else{k[H>>2]=27560;b=q+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[q+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,H|0,d|0);R=B;B=0;if(R&1){R=Rb()|0;S=Q;Yua(d);Yua(b);Ava(H);O=S;P=R;break}Yua(d);B=0;R=Ia(40,q|0,135564,28)|0;S=B;B=0;c:do if(!(S&1)?(B=0,Xa(239,R|0,0)|0,T=B,B=0,!(T&1)):0){T=Ab(20)|0;B=0;eb(502,s|0,125033,80);U=B;B=0;do if(!(U&1)){B=0;eb(502,u|0,125407,28);V=B;B=0;if(V&1){V=Rb()|0;W=Q;Yua(s);X=V;Y=W;break}B=0;wa(510,v|0,H|0);W=B;B=0;if(W&1){W=Rb()|0;Z=1;_=Q;aa=W}else{B=0;ua(163,T|0,s|0,u|0,2420,v|0);W=B;B=0;if(W&1)ba=1;else{B=0;eb(503,T|0,1240,229);B=0;ba=0}W=Rb()|0;V=Q;Yua(v);Z=ba;_=V;aa=W}Yua(u);Yua(s);if(Z){X=aa;Y=_}else{ca=_;da=aa;break c}}else{W=Rb()|0;X=W;Y=Q}while(0);zb(T|0);ca=Y;da=X}else L=75;while(0);if((L|0)==75){R=Rb()|0;ca=Q;da=R}k[q>>2]=27468;k[C>>2]=27488;k[H>>2]=27560;Yua(b);Ava(H);vva(C);ea=ca;fa=da;Qb(fa|0)}while(0);M=O;N=P;vva(C);Qb(N|0)}else if((L|0)==84){H=w+56|0;E=w+4|0;k[w>>2]=27524;k[H>>2]=27544;B=0;wa(508,w+56|0,E|0);R=B;B=0;if(R&1){R=Rb()|0;ga=Q;ha=R;vva(H);Qb(ha|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[H>>2]=27488;B=0;va(448,E|0);R=B;B=0;do if(R&1){S=Rb()|0;ia=Q;ja=S}else{k[E>>2]=27560;S=w+36|0;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;k[w+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,E|0,d|0);U=B;B=0;if(U&1){U=Rb()|0;W=Q;Yua(d);Yua(S);Ava(E);ia=W;ja=U;break}Yua(d);B=0;U=Ia(40,w|0,135593,28)|0;W=B;B=0;d:do if(!(W&1)?(B=0,Xa(239,U|0,0)|0,V=B,B=0,!(V&1)):0){V=Ab(20)|0;B=0;eb(502,x|0,125033,80);ka=B;B=0;do if(!(ka&1)){B=0;eb(502,y|0,125407,28);la=B;B=0;if(la&1){la=Rb()|0;ma=Q;Yua(x);na=la;oa=ma;break}B=0;wa(510,z|0,E|0);ma=B;B=0;if(ma&1){ma=Rb()|0;pa=1;qa=Q;ra=ma}else{B=0;ua(163,V|0,x|0,y|0,2421,z|0);ma=B;B=0;if(ma&1)sa=1;else{B=0;eb(503,V|0,1240,229);B=0;sa=0}ma=Rb()|0;la=Q;Yua(z);pa=sa;qa=la;ra=ma}Yua(y);Yua(x);if(pa){na=ra;oa=qa}else{ta=qa;xa=ra;break d}}else{ma=Rb()|0;na=ma;oa=Q}while(0);zb(V|0);ta=oa;xa=na}else L=99;while(0);if((L|0)==99){U=Rb()|0;ta=Q;xa=U}k[w>>2]=27468;k[H>>2]=27488;k[E>>2]=27560;Yua(S);Ava(E);vva(H);ea=ta;fa=xa;Qb(fa|0)}while(0);ga=ia;ha=ja;vva(H);Qb(ha|0)}}else{E=0;while(1){K=+p[D+(E<<3)>>3];p[F+(E<<3)>>3]=K;p[G+(E<<3)>>3]=0.0;J=+$(+K);p[t>>3]=J;R=k[t>>2]|0;C=k[t+4>>2]|0;if(C>>>0>2146435072|(C|0)==2146435072&R>>>0>0){L=12;break b}if((R|0)==0&(C|0)==2146435072){L=36;break b}E=E+1|0;if((E|0)>=(A|0))break a}}while(0);if((L|0)==12){E=g+56|0;H=g+4|0;k[g>>2]=27524;k[E>>2]=27544;B=0;wa(508,g+56|0,H|0);C=B;B=0;if(C&1){C=Rb()|0;ya=Q;za=C;vva(E);Qb(za|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[E>>2]=27488;B=0;va(448,H|0);C=B;B=0;do if(C&1){R=Rb()|0;Aa=Q;Ba=R}else{k[H>>2]=27560;R=g+36|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[g+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,H|0,d|0);U=B;B=0;if(U&1){U=Rb()|0;W=Q;Yua(d);Yua(R);Ava(H);Aa=W;Ba=U;break}Yua(d);B=0;U=Ia(40,g|0,135564,28)|0;W=B;B=0;e:do if(!(W&1)?(B=0,Xa(239,U|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,h|0,125033,80);ka=B;B=0;do if(!(ka&1)){B=0;eb(502,i|0,125407,28);T=B;B=0;if(T&1){T=Rb()|0;ma=Q;Yua(h);Ca=ma;Da=T;break}B=0;wa(510,j|0,H|0);T=B;B=0;if(T&1){T=Rb()|0;Ea=Q;Fa=T;Ga=1}else{B=0;ua(163,b|0,h|0,i|0,2418,j|0);T=B;B=0;if(T&1)Ha=1;else{B=0;eb(503,b|0,1240,229);B=0;Ha=0}T=Rb()|0;ma=Q;Yua(j);Ea=ma;Fa=T;Ga=Ha}Yua(i);Yua(h);if(Ga){Ca=Ea;Da=Fa}else{Ja=Ea;Ka=Fa;break e}}else{T=Rb()|0;Ca=Q;Da=T}while(0);zb(b|0);Ja=Ca;Ka=Da}else L=27;while(0);if((L|0)==27){U=Rb()|0;Ja=Q;Ka=U}k[g>>2]=27468;k[E>>2]=27488;k[H>>2]=27560;Yua(R);Ava(H);vva(E);ea=Ja;fa=Ka;Qb(fa|0)}while(0);ya=Aa;za=Ba;vva(E);Qb(za|0)}else if((L|0)==36){H=l+56|0;C=l+4|0;k[l>>2]=27524;k[H>>2]=27544;B=0;wa(508,l+56|0,C|0);U=B;B=0;if(U&1){U=Rb()|0;La=Q;Ma=U;vva(H);Qb(Ma|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[H>>2]=27488;B=0;va(448,C|0);U=B;B=0;do if(U&1){W=Rb()|0;Na=Q;Oa=W}else{k[C>>2]=27560;W=l+36|0;k[W>>2]=0;k[W+4>>2]=0;k[W+8>>2]=0;k[W+12>>2]=0;k[l+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,C|0,d|0);ka=B;B=0;if(ka&1){ka=Rb()|0;S=Q;Yua(d);Yua(W);Ava(C);Na=S;Oa=ka;break}Yua(d);B=0;ka=Ia(40,l|0,135593,28)|0;S=B;B=0;f:do if(!(S&1)?(B=0,Xa(239,ka|0,0)|0,T=B,B=0,!(T&1)):0){T=Ab(20)|0;B=0;eb(502,m|0,125033,80);ma=B;B=0;do if(!(ma&1)){B=0;eb(502,n|0,125407,28);la=B;B=0;if(la&1){la=Rb()|0;Pa=Q;Yua(m);Qa=la;Ra=Pa;break}B=0;wa(510,o|0,C|0);Pa=B;B=0;if(Pa&1){Pa=Rb()|0;Sa=1;Ta=Q;Ua=Pa}else{B=0;ua(163,T|0,m|0,n|0,2419,o|0);Pa=B;B=0;if(Pa&1)Va=1;else{B=0;eb(503,T|0,1240,229);B=0;Va=0}Pa=Rb()|0;la=Q;Yua(o);Sa=Va;Ta=la;Ua=Pa}Yua(n);Yua(m);if(Sa){Qa=Ua;Ra=Ta}else{Wa=Ta;Ya=Ua;break f}}else{Pa=Rb()|0;Qa=Pa;Ra=Q}while(0);zb(T|0);Wa=Ra;Ya=Qa}else L=51;while(0);if((L|0)==51){ka=Rb()|0;Wa=Q;Ya=ka}k[l>>2]=27468;k[H>>2]=27488;k[C>>2]=27560;Yua(W);Ava(C);vva(H);ea=Wa;fa=Ya;Qb(fa|0)}while(0);La=Na;Ma=Oa;vva(H);Qb(Ma|0)}}while(0);Ma=k[c>>2]|0;Oa=k[Ma+48>>2]|0;Na=Hc[k[Ma+128>>2]&511](c)|0;rd[Oa&511](c,638,F,Na);Na=k[c>>2]|0;Oa=k[Na+48>>2]|0;Ma=Hc[k[Na+128>>2]&511](c)|0;rd[Oa&511](c,639,G,Ma);Tqa(D);Tqa(F);Tqa(G);G=k[e>>2]|0;if(!G){r=a;return}Tqa(G);r=a;return}function Q6(a,b){a=a|0;b=b|0;return}function R6(a){a=a|0;Sqa(a);return}function S6(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a=r;r=r+16|0;d=a;Fka(c,d,125463);if((k[d>>2]|0)==3){r=a;return}qoa(b,c,125629,484,738,0);r=a;return}function T6(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0;a=r;r=r+16|0;d=a+8|0;e=a;f=a+12|0;Fka(c,f,125463);if((k[f>>2]|0)!=3){r=a;return}doa(c);k[e>>2]=137052;Ska(c,1,e);e=c+60|0;f=k[e>>2]|0;a:do if((f|0)>0){g=c+76|0;h=c+32|0;j=c+104|0;l=f;m=0;while(1){if(!(i[(k[h>>2]|0)+((k[(k[g>>2]|0)+((m<<2|2)<<2)>>2]|0)+-1)>>0]|0)){n=m+1|0;o=l}else{p=Qqa(48)|0;q=m+1|0;B=0;La(36,p|0,q+(k[j>>2]|0)|0,m|0,m|0,c|0,484);s=B;B=0;if(s&1){t=p;break}ih(b,p)|0;n=q;o=k[e>>2]|0}if((n|0)<(o|0)){l=o;m=n}else break a}m=Rb()|0;Sqa(t);Qb(m|0)}while(0);k[d>>2]=137052;Lka(c,1,d);r=a;return}function U6(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;a=r;r=r+208|0;d=a+8|0;e=a;f=a+196|0;g=a+192|0;h=a+56|0;i=a+40|0;j=a+28|0;l=a+16|0;Fka(c,g,125463);m=(k[c+40>>2]|0)==302;do if((k[g>>2]|0)==3){if(m){n=h+56|0;o=h+4|0;k[h>>2]=27524;k[n>>2]=27544;B=0;wa(508,h+56|0,o|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;s=p;vva(n);Qb(s|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[n>>2]=27488;B=0;va(448,o|0);p=B;B=0;do if(p&1){t=Rb()|0;u=Q;v=t}else{k[o>>2]=27560;t=h+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,o|0,f|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(f);Yua(t);Ava(o);u=x;v=w;break}Yua(f);B=0;w=Ia(40,h|0,132101,25)|0;x=B;B=0;if(!(x&1)?(B=0,Xa(239,w|0,0)|0,w=B,B=0,!(w&1)):0){w=Ab(20)|0;B=0;eb(502,i|0,125497,84);x=B;B=0;do if(!(x&1)){B=0;eb(502,j|0,145111,11);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(i);A=z;C=y;break}B=0;wa(510,l|0,o|0);y=B;B=0;if(y&1){y=Rb()|0;D=Q;E=y;F=1}else{B=0;ua(163,w|0,i|0,j|0,59,l|0);y=B;B=0;if(y&1)G=1;else{B=0;eb(503,w|0,1240,229);B=0;G=0}y=Rb()|0;z=Q;Yua(l);D=z;E=y;F=G}Yua(j);Yua(i);if(F){A=D;C=E}else{H=D;I=E;k[h>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);Qb(I|0)}}else{y=Rb()|0;A=Q;C=y}while(0);zb(w|0);H=A;I=C;k[h>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);Qb(I|0)}x=Rb()|0;H=Q;I=x;k[h>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);Qb(I|0)}while(0);q=u;s=v;vva(n);Qb(s|0)}}else{if(m?(k[e>>2]=136615,k[e+4>>2]=136636,Ska(c,2,e),(k[g>>2]|0)==3):0)break;hoa(b,c,484,738,534);k[d>>2]=136615;J=d+4|0;k[J>>2]=136636;Lka(c,2,d);r=a;return}while(0);hoa(b,c,484,739,534);k[d>>2]=136615;J=d+4|0;k[J>>2]=136636;Lka(c,2,d);r=a;return}function V6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function W6(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;a=r;r=r+16|0;f=a;Fka(c,f,125463);g=(k[f>>2]|0)==3?739:738;f=c+56|0;h=k[f>>2]|0;if((h|0)>0){j=c+32|0;l=h;h=0;m=0;while(1){if(!(i[(k[j>>2]|0)+m>>0]|0)){n=l;o=h}else{p=qh(b,h)|0;Uc[k[(k[p>>2]|0)+480>>2]&63](p,m,c,d,e,g);n=k[f>>2]|0;o=h+1|0}m=m+1|0;if((m|0)>=(n|0))break;else{l=n;h=o}}}Zka(c,b,137052,353);Zka(c,b,134925,339);Zka(c,b,134945,64);Yka(c,b,137955,999,0.0);Zka(c,b,137867,206);Zka(c,b,135923,674);Zka(c,b,135944,677);Zka(c,b,134027,39);Zka(c,b,134252,388);Zka(c,b,126035,36);if((k[c+40>>2]|0)==300){r=a;return}Zka(c,b,136615,287);Zka(c,b,136636,288);r=a;return}function X6(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;YN(b,Ika(c,125463,35)|0);return}function Y6(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125497,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,119,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Z6(a,b){a=a|0;b=b|0;return 0}function _6(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125497,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,126,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function $6(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){i=0;r=c;return i|0}j=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;switch(Hc[k[(k[b>>2]|0)+112>>2]&511](b)|0){case 742:case 738:{l=a7(a,j)|0;break}case 739:{l=b7(a,j)|0;break}default:{a=e+56|0;m=e+4|0;k[e>>2]=27524;k[a>>2]=27544;B=0;wa(508,e+56|0,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(a);Qb(p|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[a>>2]=27488;B=0;va(448,m|0);n=B;B=0;do if(n&1){q=Rb()|0;s=Q;t=q}else{k[m>>2]=27560;q=e+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,m|0,d|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(d);Yua(q);Ava(m);s=v;t=u;break}Yua(d);B=0;u=Ia(40,e|0,132447,13)|0;v=B;B=0;if(((((!(v&1)?(B=0,v=ya(k[(k[b>>2]|0)+112>>2]|0,b|0)|0,w=B,B=0,!(w&1)):0)?(B=0,w=ya(427,v|0)|0,v=B,B=0,!(v&1)):0)?(v=Lta(w)|0,B=0,x=Ia(40,u|0,w|0,v|0)|0,v=B,B=0,!(v&1)):0)?(B=0,v=Ia(40,x|0,146481,18)|0,x=B,B=0,!(x&1)):0)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,f|0,125497,84);x=B;B=0;do if(!(x&1)){B=0;eb(502,g|0,144189,13);w=B;B=0;if(w&1){w=Rb()|0;u=Q;Yua(f);y=u;z=w;break}B=0;wa(510,h|0,m|0);w=B;B=0;if(w&1){w=Rb()|0;A=Q;C=w;D=1}else{B=0;ua(163,v|0,f|0,g|0,142,h|0);w=B;B=0;if(w&1)E=1;else{B=0;eb(503,v|0,1240,229);B=0;E=0}w=Rb()|0;u=Q;Yua(h);A=u;C=w;D=E}Yua(g);Yua(f);if(D){y=A;z=C}else{F=A;G=C;k[e>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(a);Qb(G|0)}}else{w=Rb()|0;y=Q;z=w}while(0);zb(v|0);F=y;G=z;k[e>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(a);Qb(G|0)}x=Rb()|0;F=Q;G=x;k[e>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(a);Qb(G|0)}while(0);o=s;p=t;vva(a);Qb(p|0)}}cp(b,d,298);if((k[d>>2]|0)!=300?(ap(j),(j|0)!=0):0)Ec[k[(k[j>>2]|0)+4>>2]&1023](j);i=l;r=c;return i|0}function a7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0,E=0,F=0,G=0,H=0.0,I=0,J=0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0,Q=0,R=0,S=0,T=0;a=r;r=r+112|0;c=a+96|0;d=a+92|0;e=a+80|0;f=a+72|0;g=a+64|0;h=a+48|0;i=a+32|0;j=a+88|0;l=a;k[j>>2]=0;m=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;n=gq(b,534)|0;o=m<<1;q=o>>>0>536870911?-1:o<<3;o=Rqa(q)|0;s=Rqa(q)|0;Uo(b,j);cp(b,d,298);cp(b,c,35);if((k[d>>2]|0)==300){d=Wo(b,674)|0;t=d;u=Wo(b,677)|0}else{d=Wo(b,673)|0;t=d;u=Wo(b,676)|0}v=+Zc[k[(k[b>>2]|0)+72>>2]&255](b);d=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;q=Hc[k[(k[d>>2]|0)+8>>2]&511](d)|0;a:do if((q|0)<(Hc[k[(k[d>>2]|0)+12>>2]&511](d)|0)){w=i+8|0;x=d+8|0;y=l+8|0;z=l+16|0;A=l+24|0;B=n+12|0;C=v*.5;D=q;while(1){Fc[k[(k[d>>2]|0)+24>>2]&1023](d,D);rd[k[(k[b>>2]|0)+260>>2]&511](b,e,k[j>>2]|0,d);E=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;F=Rqa(E>>>0>536870911?-1:E<<3)|0;nd[k[(k[b>>2]|0)+336>>2]&1023](b,F,d);if((E|0)>0){G=0;do{H=+p[F+(G<<3)>>3];p[o+(G<<3)>>3]=H;p[o+(G+E<<3)>>3]=H;G=G+1|0}while((G|0)!=(E|0))}Tqa(F);E=k[j>>2]|0;G=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;I=G<<1;J=Rqa(I>>>0>536870911?-1:I<<3)|0;rd[k[(k[b>>2]|0)+340>>2]&511](b,J,E,d);if((G|0)>0){E=0;do{p[s+(E<<3)>>3]=+p[J+(E<<3)>>3];I=E+G|0;p[s+(I<<3)>>3]=+p[J+(I<<3)>>3];E=E+1|0}while((E|0)!=(G|0))}Tqa(J);nd[k[(k[t>>2]|0)+48>>2]&1023](t,f,d);nd[k[(k[u>>2]|0)+48>>2]&1023](u,g,d);rd[k[(k[t>>2]|0)+60>>2]&511](t,h,k[j>>2]|0,d);rd[k[(k[u>>2]|0)+60>>2]&511](u,i,k[j>>2]|0,d);H=+p[w>>3];K=+p[x>>3]*+p[e>>3];p[l>>3]=+p[h>>3]*K;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;p[A>>3]=H*K;ZX(o,2,m,1,l,2,2,0,o,2,m,0,k[B>>2]|0,1)|0;p[l>>3]=K*+p[f>>3];p[A>>3]=K*+p[g>>3];ZX(o,2,m,1,l,2,2,0,s,2,m,0,k[B>>2]|0,1)|0;G=k[c>>2]|0;switch(G|0){case 1:{H=+p[f>>3];L=+p[g>>3];M=v/(+aa(+(H*H+L*L))*2.0);N=H*M;p[l>>3]=H*N;O=M*L;p[z>>3]=O*H;p[y>>3]=L*N;p[A>>3]=L*O;P=16;break}case 2:{Fc[k[(k[t>>2]|0)+64>>2]&1023](t,f);Fc[k[(k[u>>2]|0)+64>>2]&1023](u,g);O=C*+$(+(+p[f>>3]));p[l>>3]=O;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;O=C*+$(+(+p[g>>3]));p[A>>3]=O;Q=k[c>>2]|0;P=15;break}default:{Q=G;P=15}}if((P|0)==15?(P=0,(Q+-1|0)>>>0<2):0)P=16;if((P|0)==16){P=0;p[l>>3]=K*+p[l>>3];p[z>>3]=K*+p[z>>3];p[y>>3]=K*+p[y>>3];p[A>>3]=K*+p[A>>3];ZX(s,2,m,1,l,2,2,0,s,2,m,0,k[B>>2]|0,1)|0}D=D+1|0;if((D|0)>=(Hc[k[(k[d>>2]|0)+12>>2]&511](d)|0))break a}}while(0);m=k[j>>2]|0;if(!m){k[j>>2]=0;Tqa(o);Tqa(s);R=k[d>>2]|0;S=R+4|0;T=k[S>>2]|0;Ec[T&1023](d);r=a;return n|0}Tqa(m);k[j>>2]=0;Tqa(o);Tqa(s);R=k[d>>2]|0;S=R+4|0;T=k[S>>2]|0;Ec[T&1023](d);r=a;return n|0}function b7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0,D=0,E=0,F=0,G=0;a=r;r=r+96|0;c=a+92|0;d=a+80|0;e=a+72|0;f=a+64|0;g=a+48|0;h=a+32|0;i=a+88|0;j=a;k[i>>2]=0;l=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;m=gq(b,534)|0;n=l<<1;o=n>>>0>536870911?-1:n<<3;n=Rqa(o)|0;q=Rqa(o)|0;Uo(b,i);cp(b,c,298);if((k[c>>2]|0)==300){c=Wo(b,674)|0;s=c;t=Wo(b,677)|0}else{c=Wo(b,673)|0;s=c;t=Wo(b,676)|0}c=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;o=Hc[k[(k[c>>2]|0)+8>>2]&511](c)|0;if((o|0)<(Hc[k[(k[c>>2]|0)+12>>2]&511](c)|0)){u=c+8|0;v=j+8|0;w=j+24|0;x=m+12|0;y=o;do{Fc[k[(k[c>>2]|0)+24>>2]&1023](c,y);rd[k[(k[b>>2]|0)+260>>2]&511](b,d,k[i>>2]|0,c);nd[k[(k[s>>2]|0)+48>>2]&1023](s,e,c);nd[k[(k[t>>2]|0)+48>>2]&1023](t,f,c);rd[k[(k[s>>2]|0)+60>>2]&511](s,g,k[i>>2]|0,c);rd[k[(k[t>>2]|0)+60>>2]&511](t,h,k[i>>2]|0,c);o=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;z=Rqa(o>>>0>536870911?-1:o<<3)|0;nd[k[(k[b>>2]|0)+336>>2]&1023](b,z,c);if((o|0)>0){A=0;do{B=+p[z+(A<<3)>>3];p[q+(A<<3)>>3]=B;p[q+(A+o<<3)>>3]=B;A=A+1|0}while((A|0)!=(o|0))}Tqa(z);o=k[i>>2]|0;A=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;C=A<<1;D=Rqa(C>>>0>536870911?-1:C<<3)|0;rd[k[(k[b>>2]|0)+340>>2]&511](b,D,o,c);if((A|0)>0){o=0;do{p[n+(o<<3)>>3]=+p[D+(o<<3)>>3];C=o+A|0;p[n+(C<<3)>>3]=+p[D+(C<<3)>>3];o=o+1|0}while((o|0)!=(A|0))}Tqa(D);B=-(+p[u>>3]*+p[d>>3]);p[j>>3]=+p[e>>3]*B;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;p[w>>3]=+p[f>>3]*B;ZX(n,2,l,1,j,2,2,0,q,2,l,0,k[x>>2]|0,1)|0;y=y+1|0}while((y|0)<(Hc[k[(k[c>>2]|0)+12>>2]&511](c)|0))}y=k[i>>2]|0;if(!y){k[i>>2]=0;Tqa(n);Tqa(q);E=k[c>>2]|0;F=E+4|0;G=k[F>>2]|0;Ec[G&1023](c);r=a;return m|0}Tqa(y);k[i>>2]=0;Tqa(n);Tqa(q);E=k[c>>2]|0;F=E+4|0;G=k[F>>2]|0;Ec[G&1023](c);r=a;return m|0}function c7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;if(!(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0)){h=0;r=a;return h|0}i=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;switch(Hc[k[(k[b>>2]|0)+112>>2]&511](b)|0){case 742:case 738:{j=d7(0,i)|0;break}case 739:{j=e7(0,i)|0;break}default:{l=d+56|0;m=d+4|0;k[d>>2]=27524;k[l>>2]=27544;B=0;wa(508,d+56|0,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(l);Qb(p|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[l>>2]=27488;B=0;va(448,m|0);n=B;B=0;do if(n&1){q=Rb()|0;s=Q;t=q}else{k[m>>2]=27560;q=d+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,m|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(c);Yua(q);Ava(m);s=v;t=u;break}Yua(c);B=0;u=Ia(40,d|0,132447,13)|0;v=B;B=0;if(((((!(v&1)?(B=0,v=ya(k[(k[b>>2]|0)+112>>2]|0,b|0)|0,w=B,B=0,!(w&1)):0)?(B=0,w=ya(427,v|0)|0,v=B,B=0,!(v&1)):0)?(v=Lta(w)|0,B=0,x=Ia(40,u|0,w|0,v|0)|0,v=B,B=0,!(v&1)):0)?(B=0,v=Ia(40,x|0,146481,18)|0,x=B,B=0,!(x&1)):0)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,e|0,125497,84);x=B;B=0;do if(!(x&1)){B=0;eb(502,f|0,144203,13);w=B;B=0;if(w&1){w=Rb()|0;u=Q;Yua(e);y=u;z=w;break}B=0;wa(510,g|0,m|0);w=B;B=0;if(w&1){w=Rb()|0;A=Q;C=w;D=1}else{B=0;ua(163,v|0,e|0,f|0,334,g|0);w=B;B=0;if(w&1)E=1;else{B=0;eb(503,v|0,1240,229);B=0;E=0}w=Rb()|0;u=Q;Yua(g);A=u;C=w;D=E}Yua(f);Yua(e);if(D){y=A;z=C}else{F=A;G=C;k[d>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);Qb(G|0)}}else{w=Rb()|0;y=Q;z=w}while(0);zb(v|0);F=y;G=z;k[d>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);Qb(G|0)}x=Rb()|0;F=Q;G=x;k[d>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);Qb(G|0)}while(0);o=s;p=t;vva(l);Qb(p|0)}}cp(b,c,298);if((k[c>>2]|0)!=300?(ap(i),(i|0)!=0):0)Ec[k[(k[i>>2]|0)+4>>2]&1023](i);h=j;r=a;return h|0}function d7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;a=r;r=r+48|0;c=a+24|0;d=a+16|0;e=a+8|0;f=a;g=a+32|0;k[g>>2]=0;h=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;i=iq(b,534)|0;j=Rqa(h>>>0>536870911?-1:h<<3)|0;Uo(b,g);l=Wo(b,39)|0;m=Wo(b,388)|0;n=Wo(b,36)|0;o=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;q=Hc[k[(k[o>>2]|0)+8>>2]&511](o)|0;a:do if((q|0)<(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0)){s=o+8|0;t=i+4|0;if((h|0)>0)u=q;else{v=q;while(1){Fc[k[(k[o>>2]|0)+24>>2]&1023](o,v);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[g>>2]|0,o);nd[k[(k[b>>2]|0)+336>>2]&1023](b,j,o);nd[k[(k[m>>2]|0)+48>>2]&1023](m,e,o);nd[k[(k[l>>2]|0)+48>>2]&1023](l,d,o);nd[k[(k[n>>2]|0)+48>>2]&1023](n,c,o);v=v+1|0;if((v|0)>=(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0))break a}}do{Fc[k[(k[o>>2]|0)+24>>2]&1023](o,u);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[g>>2]|0,o);nd[k[(k[b>>2]|0)+336>>2]&1023](b,j,o);nd[k[(k[m>>2]|0)+48>>2]&1023](m,e,o);nd[k[(k[l>>2]|0)+48>>2]&1023](l,d,o);nd[k[(k[n>>2]|0)+48>>2]&1023](n,c,o);v=k[t>>2]|0;w=0;do{x=v+(w<<3)|0;p[x>>3]=+p[x>>3]+ +p[j+(w<<3)>>3]*(+p[f>>3]*+p[s>>3]*(+p[e>>3]-+p[d>>3]-+p[c>>3]));w=w+1|0}while((w|0)!=(h|0));u=u+1|0}while((u|0)<(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0))}while(0);u=k[g>>2]|0;if(!u){k[g>>2]=0;Tqa(j);y=k[o>>2]|0;z=y+4|0;A=k[z>>2]|0;Ec[A&1023](o);r=a;return i|0}Tqa(u);k[g>>2]=0;Tqa(j);y=k[o>>2]|0;z=y+4|0;A=k[z>>2]|0;Ec[A&1023](o);r=a;return i|0}function e7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;a=r;r=r+48|0;c=a+24|0;d=a+16|0;e=a+8|0;f=a;g=a+32|0;k[g>>2]=0;h=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;i=iq(b,534)|0;j=Rqa(h>>>0>536870911?-1:h<<3)|0;Uo(b,g);l=Wo(b,39)|0;m=Wo(b,388)|0;n=Wo(b,36)|0;o=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;q=Hc[k[(k[o>>2]|0)+8>>2]&511](o)|0;a:do if((q|0)<(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0)){s=o+8|0;t=i+4|0;if((h|0)>0)u=q;else{v=q;while(1){Fc[k[(k[o>>2]|0)+24>>2]&1023](o,v);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[g>>2]|0,o);nd[k[(k[b>>2]|0)+336>>2]&1023](b,j,o);nd[k[(k[m>>2]|0)+48>>2]&1023](m,e,o);nd[k[(k[l>>2]|0)+48>>2]&1023](l,d,o);nd[k[(k[n>>2]|0)+48>>2]&1023](n,c,o);v=v+1|0;if((v|0)>=(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0))break a}}do{Fc[k[(k[o>>2]|0)+24>>2]&1023](o,u);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[g>>2]|0,o);nd[k[(k[b>>2]|0)+336>>2]&1023](b,j,o);nd[k[(k[m>>2]|0)+48>>2]&1023](m,e,o);nd[k[(k[l>>2]|0)+48>>2]&1023](l,d,o);nd[k[(k[n>>2]|0)+48>>2]&1023](n,c,o);v=k[t>>2]|0;w=0;do{x=v+(w<<3)|0;p[x>>3]=+p[x>>3]+ +p[j+(w<<3)>>3]*(+p[f>>3]*+p[s>>3]*(+p[e>>3]-+p[d>>3]-+p[c>>3]));w=w+1|0}while((w|0)!=(h|0));u=u+1|0}while((u|0)<(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0))}while(0);u=k[g>>2]|0;if(!u){k[g>>2]=0;Tqa(j);y=k[o>>2]|0;z=y+4|0;A=k[z>>2]|0;Ec[A&1023](o);r=a;return i|0}Tqa(u);k[g>>2]=0;Tqa(j);y=k[o>>2]|0;z=y+4|0;A=k[z>>2]|0;Ec[A&1023](o);r=a;return i|0}function f7(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125497,84);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,480,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function g7(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0.0,Ba=0.0,Ca=0.0,Da=0.0,Ea=0.0,Fa=0.0,Ga=0.0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0;a=r;r=r+688|0;f=a+668|0;g=a+120|0;h=a+112|0;i=a+104|0;j=a+96|0;l=a+72|0;m=a+64|0;n=a+56|0;o=a+40|0;q=a+24|0;s=a+16|0;t=a+8|0;u=a;v=a+664|0;w=a+660|0;x=a+656|0;y=a+640|0;z=a+504|0;A=a+644|0;C=a+488|0;D=a+336|0;E=a+352|0;F=a+188|0;G=a+176|0;H=a+164|0;I=a+200|0;J=a+152|0;K=a+140|0;L=a+128|0;if(!($p(c)|0)){r=a;return}k[v>>2]=0;k[w>>2]=0;cp(c,x,199);qp(c,w,0,180);cp(c,y,476);if((k[y>>2]|0)!=489){y=z+56|0;M=z+4|0;k[z>>2]=27524;k[y>>2]=27544;B=0;wa(508,z+56|0,M|0);N=B;B=0;if(N&1){N=Rb()|0;O=Q;P=N;vva(y);Qb(P|0)}k[z+128>>2]=0;k[z+132>>2]=-1;k[z>>2]=27468;k[y>>2]=27488;B=0;va(448,M|0);N=B;B=0;do if(N&1){R=Rb()|0;S=Q;T=R}else{k[M>>2]=27560;R=z+36|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[z+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,M|0,f|0);U=B;B=0;if(U&1){U=Rb()|0;V=Q;Yua(f);Yua(R);Ava(M);S=V;T=U;break}Yua(f);B=0;U=Ia(40,z|0,149721,19)|0;V=B;B=0;a:do if(!(V&1)?(B=0,Xa(239,U|0,0)|0,W=B,B=0,!(W&1)):0){W=Ab(20)|0;B=0;eb(502,A|0,125497,84);X=B;B=0;do if(!(X&1)){B=0;eb(502,C|0,138252,9);Y=B;B=0;if(Y&1){Y=Rb()|0;Z=Q;Yua(A);_=Y;$=Z;break}B=0;wa(510,D|0,M|0);Z=B;B=0;if(Z&1){Z=Rb()|0;ba=Z;ca=Q;da=1}else{B=0;ua(163,W|0,A|0,C|0,500,D|0);Z=B;B=0;if(Z&1)ea=1;else{B=0;eb(503,W|0,1240,229);B=0;ea=0}Z=Rb()|0;Y=Q;Yua(D);ba=Z;ca=Y;da=ea}Yua(C);Yua(A);if(da){_=ba;$=ca}else{fa=ba;ga=ca;break a}}else{Y=Rb()|0;_=Y;$=Q}while(0);zb(W|0);fa=_;ga=$}else ha=18;while(0);if((ha|0)==18){U=Rb()|0;fa=U;ga=Q}k[z>>2]=27468;k[y>>2]=27488;k[M>>2]=27560;Yua(R);Ava(M);vva(y);ia=ga;ja=fa;Qb(ja|0)}while(0);O=S;P=T;vva(y);Qb(P|0)}if((d|0)!=353){P=E+56|0;y=E+4|0;k[E>>2]=27524;k[P>>2]=27544;B=0;wa(508,E+56|0,y|0);T=B;B=0;if(T&1){T=Rb()|0;ka=Q;la=T;vva(P);Qb(la|0)}k[E+128>>2]=0;k[E+132>>2]=-1;k[E>>2]=27468;k[P>>2]=27488;B=0;va(448,y|0);T=B;B=0;do if(T&1){S=Rb()|0;ma=Q;na=S}else{k[y>>2]=27560;S=E+36|0;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;k[E+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,y|0,f|0);O=B;B=0;if(O&1){O=Rb()|0;fa=Q;Yua(f);Yua(S);Ava(y);ma=fa;na=O;break}Yua(f);B=0;O=Ia(40,E|0,125582,8)|0;fa=B;B=0;b:do if((((!(fa&1)?(B=0,ga=ya(427,d|0)|0,M=B,B=0,!(M&1)):0)?(M=Lta(ga)|0,B=0,z=Ia(40,O|0,ga|0,M|0)|0,M=B,B=0,!(M&1)):0)?(B=0,M=Ia(40,z|0,144645,14)|0,z=B,B=0,!(z&1)):0)?(B=0,Xa(239,M|0,0)|0,M=B,B=0,!(M&1)):0){M=Ab(20)|0;B=0;eb(502,F|0,125497,84);z=B;B=0;do if(!(z&1)){B=0;eb(502,G|0,138252,9);ga=B;B=0;if(ga&1){ga=Rb()|0;$=Q;Yua(F);oa=$;pa=ga;break}B=0;wa(510,H|0,y|0);ga=B;B=0;if(ga&1){ga=Rb()|0;qa=1;ra=ga;sa=Q}else{B=0;ua(163,M|0,F|0,G|0,501,H|0);ga=B;B=0;if(ga&1)ta=1;else{B=0;eb(503,M|0,1240,229);B=0;ta=0}ga=Rb()|0;$=Q;Yua(H);qa=ta;ra=ga;sa=$}Yua(G);Yua(F);if(qa){oa=sa;pa=ra}else{xa=ra;za=sa;break b}}else{$=Rb()|0;oa=Q;pa=$}while(0);zb(M|0);xa=pa;za=oa}else ha=45;while(0);if((ha|0)==45){O=Rb()|0;xa=O;za=Q}k[E>>2]=27468;k[P>>2]=27488;k[y>>2]=27560;Yua(S);Ava(y);vva(P);ia=za;ja=xa;Qb(ja|0)}while(0);ka=ma;la=na;vva(P);Qb(la|0)}la=Hc[k[(k[c>>2]|0)+172>>2]&511](c)|0;P=la>>>0>536870911?-1:la<<3;na=Rqa(P)|0;ma=la<<1;ka=Rqa(ma>>>0>536870911?-1:ma<<3)|0;ma=Rqa(P)|0;if(la)WEa(ma|0,0,la<<3|0)|0;P=Rqa(la>>>0>1073741823?-1:la<<2)|0;Uo(c,v);Mp(c,P,e,0);e=Wo(c,353)|0;xa=Wo(c,201)|0;za=Wo(c,179)|0;y=Wo(c,674)|0;E=Wo(c,677)|0;oa=Wo(c,388)|0;pa=Wo(c,39)|0;sa=Wo(c,36)|0;ra=ed[k[(k[c>>2]|0)+308>>2]&511](c,4)|0;qa=Hc[k[(k[ra>>2]|0)+8>>2]&511](ra)|0;c:do if((qa|0)<(Hc[k[(k[ra>>2]|0)+12>>2]&511](ra)|0)){F=(la|0)>0;G=l+8|0;ta=ra+8|0;H=q+8|0;d=qa;d:while(1){Fc[k[(k[ra>>2]|0)+24>>2]&1023](ra,d);nd[k[(k[e>>2]|0)+48>>2]&1023](e,i,ra);rd[k[(k[e>>2]|0)+60>>2]&511](e,l,k[v>>2]|0,ra);nd[k[(k[xa>>2]|0)+48>>2]&1023](xa,j,ra);rd[k[(k[c>>2]|0)+260>>2]&511](c,g,k[v>>2]|0,ra);nd[k[(k[c>>2]|0)+356>>2]&1023](c,na,ra);rd[k[(k[c>>2]|0)+360>>2]&511](c,ka,k[v>>2]|0,ra);e:do if((k[x>>2]|0)>0){T=0;while(1){rd[k[(k[za>>2]|0)+56>>2]&511](za,h,ra,k[(k[w>>2]|0)+(T<<2)>>2]|0);switch(k[(k[w>>2]|0)+(T<<2)>>2]|0){case 669:{if(F){Aa=(+p[j>>3]-+p[i>>3])*+p[h>>3]*+p[g>>3];O=0;do{fa=ma+(O<<3)|0;p[fa>>3]=+p[fa>>3]+Aa*+p[ta>>3]*+p[na+(O<<3)>>3];O=O+1|0}while((O|0)!=(la|0))}break}case 689:{if(F){Aa=+p[g>>3];Ba=+p[h>>3]*+p[l>>3];O=0;do{fa=ma+(O<<3)|0;p[fa>>3]=+p[fa>>3]-Ba*+p[ka+(O<<3)>>3]*Aa*+p[ta>>3];O=O+1|0}while((O|0)!=(la|0));if(F){Aa=+p[g>>3];Ba=+p[h>>3]*+p[G>>3];O=0;do{fa=ma+(O<<3)|0;p[fa>>3]=+p[fa>>3]-Ba*+p[ka+(O+la<<3)>>3]*Aa*+p[ta>>3];O=O+1|0}while((O|0)!=(la|0))}}break}case 690:{nd[k[(k[y>>2]|0)+48>>2]&1023](y,m,ra);nd[k[(k[E>>2]|0)+48>>2]&1023](E,n,ra);Aa=+p[m>>3];Ba=+p[n>>3];Ca=+aa(+(Aa*Aa+Ba*Ba))+1.0e-09;Da=Aa/Ca;p[m>>3]=Da;Aa=Ba/Ca;p[n>>3]=Aa;if(F){Ca=+p[g>>3];Ba=+p[h>>3]*(+p[l>>3]*Da+ +p[G>>3]*Aa);O=0;do{fa=ma+(O<<3)|0;p[fa>>3]=+p[fa>>3]-+p[ta>>3]*(Ca*(Ba*(Da*+p[ka+(O<<3)>>3]+Aa*+p[ka+(O+la<<3)>>3])));O=O+1|0}while((O|0)!=(la|0))}break}case 691:{nd[k[(k[y>>2]|0)+48>>2]&1023](y,m,ra);nd[k[(k[E>>2]|0)+48>>2]&1023](E,n,ra);Aa=+p[m>>3];Da=+p[n>>3];Ba=+aa(+(Aa*Aa+Da*Da))+1.0e-09;Ca=Aa/Ba;p[m>>3]=Ca;Aa=Da/Ba;p[n>>3]=Aa;if(F){Ba=+p[g>>3];Da=-Aa;Aa=+p[h>>3]*(+p[l>>3]*Da+ +p[G>>3]*Ca);O=0;do{fa=ma+(O<<3)|0;p[fa>>3]=+p[fa>>3]-+p[ta>>3]*(Ba*(Aa*(+p[ka+(O<<3)>>3]*Da+Ca*+p[ka+(O+la<<3)>>3])));O=O+1|0}while((O|0)!=(la|0))}break}case 641:{nd[k[(k[oa>>2]|0)+48>>2]&1023](oa,u,ra);nd[k[(k[pa>>2]|0)+48>>2]&1023](pa,t,ra);nd[k[(k[sa>>2]|0)+48>>2]&1023](sa,s,ra);nd[k[(k[y>>2]|0)+48>>2]&1023](y,m,ra);rd[k[(k[y>>2]|0)+60>>2]&511](y,o,k[v>>2]|0,ra);nd[k[(k[E>>2]|0)+48>>2]&1023](E,n,ra);rd[k[(k[E>>2]|0)+60>>2]&511](E,q,k[v>>2]|0,ra);if(F){Ca=+p[m>>3];Da=+p[n>>3];Aa=+p[h>>3]*+p[g>>3];Ba=+p[o>>3]+ +p[H>>3];Ea=Ca*+p[l>>3]+Da*+p[G>>3]+ +p[i>>3]*Ba;Fa=+p[u>>3]-+p[t>>3]-+p[s>>3];O=0;do{Ga=Ca*+p[ka+(O<<3)>>3]+Da*+p[ka+(O+la<<3)>>3]+Ba*+p[na+(O<<3)>>3];fa=ma+(O<<3)|0;p[fa>>3]=+p[fa>>3]-Aa*+p[ta>>3]*(Ea*Ga-Ga*Fa);O=O+1|0}while((O|0)!=(la|0))}break}default:{Ha=T;break d}}T=T+1|0;if((T|0)>=(k[x>>2]|0))break e}}while(0);d=d+1|0;if((d|0)>=(Hc[k[(k[ra>>2]|0)+12>>2]&511](ra)|0))break c}d=I+56|0;ta=I+4|0;k[I>>2]=27524;k[d>>2]=27544;B=0;wa(508,I+56|0,ta|0);G=B;B=0;if(G&1){G=Rb()|0;Ja=Q;Ka=G;vva(d);Qb(Ka|0)}k[I+128>>2]=0;k[I+132>>2]=-1;k[I>>2]=27468;k[d>>2]=27488;B=0;va(448,ta|0);G=B;B=0;do if(G&1){H=Rb()|0;La=Q;Ma=H}else{k[ta>>2]=27560;H=I+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[I+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,ta|0,f|0);F=B;B=0;if(F&1){F=Rb()|0;S=Q;Yua(f);Yua(H);Ava(ta);La=S;Ma=F;break}Yua(f);B=0;F=Ia(40,I|0,125591,9)|0;S=B;B=0;f:do if((((!(S&1)?(B=0,M=ya(427,k[(k[w>>2]|0)+(Ha<<2)>>2]|0)|0,T=B,B=0,!(T&1)):0)?(T=Lta(M)|0,B=0,O=Ia(40,F|0,M|0,T|0)|0,T=B,B=0,!(T&1)):0)?(B=0,T=Ia(40,O|0,146481,18)|0,O=B,B=0,!(O&1)):0)?(B=0,Xa(239,T|0,0)|0,T=B,B=0,!(T&1)):0){T=Ab(20)|0;B=0;eb(502,J|0,125497,84);O=B;B=0;do if(!(O&1)){B=0;eb(502,K|0,138252,9);M=B;B=0;if(M&1){M=Rb()|0;fa=Q;Yua(J);Na=fa;Oa=M;break}B=0;wa(510,L|0,ta|0);M=B;B=0;if(M&1){M=Rb()|0;Pa=1;Qa=M;Ra=Q}else{B=0;ua(163,T|0,J|0,K|0,582,L|0);M=B;B=0;if(M&1)Sa=1;else{B=0;eb(503,T|0,1240,229);B=0;Sa=0}M=Rb()|0;fa=Q;Yua(L);Pa=Sa;Qa=M;Ra=fa}Yua(K);Yua(J);if(Pa){Na=Ra;Oa=Qa}else{Ta=Qa;Ua=Ra;break f}}else{fa=Rb()|0;Na=Q;Oa=fa}while(0);zb(T|0);Ta=Oa;Ua=Na}else ha=102;while(0);if((ha|0)==102){F=Rb()|0;Ta=F;Ua=Q}k[I>>2]=27468;k[d>>2]=27488;k[ta>>2]=27560;Yua(H);Ava(ta);vva(d);ia=Ua;ja=Ta;Qb(ja|0)}while(0);Ja=La;Ka=Ma;vva(d);Qb(Ka|0)}while(0);if(k[b>>2]|0){Ka=k[k[b+4>>2]>>2]|0;Dc[k[(k[Ka>>2]|0)+16>>2]&255](Ka,la,P,ma,1)}la=k[v>>2]|0;if(la)Tqa(la);k[v>>2]=0;Tqa(na);Tqa(ma);Tqa(P);P=k[w>>2]|0;if(P)Tqa(P);k[w>>2]=0;if(ra)Ec[k[(k[ra>>2]|0)+4>>2]&1023](ra);r=a;return}function h7(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;d=a+180|0;e=a+176|0;f=a+40|0;g=a+24|0;h=a+12|0;i=a;cp(c,e,298);switch(k[e>>2]|0){case 300:{nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,353);r=a;return}case 302:{nd[k[(k[c>>2]|0)+228>>2]&1023](c,b,353);r=a;return}default:{a=f+56|0;b=f+4|0;k[f>>2]=27524;k[a>>2]=27544;B=0;wa(508,f+56|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;j=Q;l=c;vva(a);Qb(l|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[a>>2]=27488;B=0;va(448,b|0);c=B;B=0;do if(c&1){m=Rb()|0;n=Q;o=m}else{k[b>>2]=27560;m=f+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(b);n=q;o=p;break}Yua(d);B=0;p=Ia(40,f|0,144639,5)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[e>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,125497,84);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,137199,23);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,609,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(a);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(a);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[a>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(a);Qb(C|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}}}function i7(a,b){a=a|0;b=b|0;return}function j7(a){a=a|0;Sqa(a);return}function k7(a,b,c){a=a|0;b=b|0;c=c|0;qoa(b,c,125629,486,738,0);return}function l7(a,b,c){a=a|0;b=b|0;c=c|0;return}function m7(a,b,c){a=a|0;b=b|0;c=c|0;hoa(b,c,486,738,534);return}function n7(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function o7(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0;Zka(c,b,137052,353);Zka(c,b,134925,339);Zka(c,b,134945,64);Yka(c,b,137955,999,0.0);Zka(c,b,137867,206);Zka(c,b,134027,39);Zka(c,b,134252,388);Zka(c,b,126035,36);Zka(c,b,125662,379);a=c+56|0;f=k[a>>2]|0;if((f|0)<=0)return;g=c+32|0;h=f;f=0;j=0;while(1){if(!(i[(k[g>>2]|0)+j>>0]|0)){l=h;m=f}else{n=qh(b,f)|0;Uc[k[(k[n>>2]|0)+480>>2]&63](n,j,c,d,e,738);l=k[a>>2]|0;m=f+1|0}j=j+1|0;if((j|0)>=(l|0))break;else{h=l;f=m}}return}function p7(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function q7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125688,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,59,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function r7(a,b){a=a|0;b=b|0;return 0}function s7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;a=r;r=r+224|0;c=a+204|0;d=a+8|0;e=a;f=a+200|0;g=a+64|0;h=a+48|0;i=a+36|0;j=a+24|0;k[f>>2]=0;l=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;m=Rqa(l>>>0>536870911?-1:l<<3)|0;Uo(b,f);n=Wo(b,664)|0;o=Wo(b,665)|0;q=Wo(b,339)|0;s=Wo(b,214)|0;t=+Dp(b,265);u=t*+Dp(b,65);v=Hc[k[(k[b>>2]|0)+304>>2]&511](b)|0;a:do if((l|0)>0){w=d+8|0;b:do if((n|0)!=0&(o|0)!=0){x=0;while(1){y=k[(k[v>>2]|0)+32>>2]|0;z=Hc[k[(k[b>>2]|0)+128>>2]&511](b)|0;nd[y&1023](v,z,x);nd[k[(k[s>>2]|0)+48>>2]&1023](s,e,v);nd[k[(k[n>>2]|0)+48>>2]&1023](n,d,v);nd[k[(k[o>>2]|0)+48>>2]&1023](o,w,v);t=+p[d>>3];A=+p[w>>3];C=+aa(+(t*t+A*A));if(C==0.0)break b;if(C<1.0e-05){D=t/C*1.0e5;p[d>>3]=D;E=A/C*1.0e5;p[w>>3]=E;F=D;G=E}else{F=t;G=A}A=+ba(+u,3.0)*3.90625e+21*1.0000000000000001e-24/+ba(+(+p[e>>3]*.3968502629920499),3.0)*(F*F+G*G)/5.0;p[m+(x<<3)>>3]=A;x=x+1|0;if((x|0)>=(l|0))break a}}else{x=0;while(1){z=k[(k[v>>2]|0)+32>>2]|0;y=Hc[k[(k[b>>2]|0)+128>>2]&511](b)|0;nd[z&1023](v,y,x);nd[k[(k[s>>2]|0)+48>>2]&1023](s,e,v);rd[k[(k[q>>2]|0)+60>>2]&511](q,d,k[f>>2]|0,v);A=+p[d>>3];t=+p[w>>3];E=+aa(+(A*A+t*t));if(E==0.0)break b;if(E<1.0e-05){D=A/E*1.0e5;p[d>>3]=D;C=t/E*1.0e5;p[w>>3]=C;H=D;I=C}else{H=A;I=t}t=+ba(+u,3.0)*3.90625e+21*1.0000000000000001e-24/+ba(+(+p[e>>3]*.3968502629920499),3.0)*(H*H+I*I)/5.0;p[m+(x<<3)>>3]=t;x=x+1|0;if((x|0)>=(l|0))break a}}while(0);w=g+56|0;x=g+4|0;k[g>>2]=27524;k[w>>2]=27544;B=0;wa(508,g+56|0,x|0);y=B;B=0;if(y&1){y=Rb()|0;J=Q;K=y;vva(w);Qb(K|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[w>>2]=27488;B=0;va(448,x|0);y=B;B=0;do if(y&1){z=Rb()|0;L=Q;M=z}else{k[x>>2]=27560;z=g+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[g+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,x|0,c|0);N=B;B=0;if(N&1){N=Rb()|0;O=Q;Yua(c);Yua(z);Ava(x);L=O;M=N;break}Yua(c);B=0;N=Ia(40,g|0,125774,21)|0;O=B;B=0;if(!(O&1)?(B=0,Xa(239,N|0,0)|0,N=B,B=0,!(N&1)):0){N=Ab(20)|0;B=0;eb(502,h|0,125688,85);O=B;B=0;do if(!(O&1)){B=0;eb(502,i|0,125796,8);P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(h);S=R;T=P;break}B=0;wa(510,j|0,x|0);P=B;B=0;if(P&1){P=Rb()|0;U=Q;V=P;W=1}else{B=0;ua(163,N|0,h|0,i|0,103,j|0);P=B;B=0;if(P&1)X=1;else{B=0;eb(503,N|0,1240,229);B=0;X=0}P=Rb()|0;R=Q;Yua(j);U=R;V=P;W=X}Yua(i);Yua(h);if(W){S=U;T=V}else{Y=U;Z=V;k[g>>2]=27468;k[w>>2]=27488;k[x>>2]=27560;Yua(z);Ava(x);vva(w);Qb(Z|0)}}else{P=Rb()|0;S=Q;T=P}while(0);zb(N|0);Y=S;Z=T;k[g>>2]=27468;k[w>>2]=27488;k[x>>2]=27560;Yua(z);Ava(x);vva(w);Qb(Z|0)}O=Rb()|0;Y=Q;Z=O;k[g>>2]=27468;k[w>>2]=27488;k[x>>2]=27560;Yua(z);Ava(x);vva(w);Qb(Z|0)}while(0);J=L;K=M;vva(w);Qb(K|0)}while(0);K=k[b>>2]|0;M=k[K+48>>2]|0;L=Hc[k[K+128>>2]&511](b)|0;rd[M&511](b,380,m,L);Tqa(m);m=k[f>>2]|0;if(m)Tqa(m);k[f>>2]=0;if(!v){r=a;return}Ec[k[(k[v>>2]|0)+4>>2]&1023](v);r=a;return}function t7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125688,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,130,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function u7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0,D=0;a=r;r=r+32|0;c=a+16|0;d=a+8|0;e=a;f=a+24|0;k[f>>2]=0;g=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;h=gq(b,534)|0;i=g<<1;j=Rqa(i>>>0>536870911?-1:i<<3)|0;Uo(b,f);i=Wo(b,379)|0;l=Wo(b,380)|0;if(!l){s7(0,b);m=Wo(b,380)|0}else m=l;l=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;n=Hc[k[(k[l>>2]|0)+8>>2]&511](l)|0;if((n|0)<(Hc[k[(k[l>>2]|0)+12>>2]&511](l)|0)){o=(g|0)>0;q=l+8|0;s=h+12|0;t=n;do{Fc[k[(k[l>>2]|0)+24>>2]&1023](l,t);rd[k[(k[b>>2]|0)+340>>2]&511](b,j,k[f>>2]|0,l);rd[k[(k[b>>2]|0)+260>>2]&511](b,c,k[f>>2]|0,l);nd[k[(k[m>>2]|0)+48>>2]&1023](m,d,l);nd[k[(k[i>>2]|0)+48>>2]&1023](i,e,l);if(o){n=k[s>>2]|0;u=0;do{v=j+(u<<3)|0;w=j+(u+g<<3)|0;x=ma(u,g)|0;y=0;do{z=+p[d>>3]*+ja(+(+p[e>>3]));A=n+(y+x<<3)|0;p[A>>3]=+p[A>>3]+z*+p[q>>3]*+p[c>>3]*(+p[v>>3]*+p[j+(y<<3)>>3]+ +p[w>>3]*+p[j+(y+g<<3)>>3]);y=y+1|0}while((y|0)!=(g|0));u=u+1|0}while((u|0)!=(g|0))}t=t+1|0}while((t|0)<(Hc[k[(k[l>>2]|0)+12>>2]&511](l)|0))}t=k[f>>2]|0;if(!t){k[f>>2]=0;Tqa(j);B=k[l>>2]|0;C=B+4|0;D=k[C>>2]|0;Ec[D&1023](l);r=a;return h|0}Tqa(t);k[f>>2]=0;Tqa(j);B=k[l>>2]|0;C=B+4|0;D=k[C>>2]|0;Ec[D&1023](l);r=a;return h|0}function v7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;a=r;r=r+48|0;c=a+24|0;d=a+16|0;e=a+8|0;f=a;g=a+32|0;k[g>>2]=0;h=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;i=iq(b,534)|0;j=Rqa(h>>>0>536870911?-1:h<<3)|0;Uo(b,g);l=Wo(b,388)|0;m=Wo(b,39)|0;n=Wo(b,36)|0;o=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;q=Hc[k[(k[o>>2]|0)+8>>2]&511](o)|0;a:do if((q|0)<(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0)){s=o+8|0;t=i+4|0;if((h|0)>0)u=q;else{v=q;while(1){Fc[k[(k[o>>2]|0)+24>>2]&1023](o,v);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[g>>2]|0,o);nd[k[(k[b>>2]|0)+336>>2]&1023](b,j,o);nd[k[(k[l>>2]|0)+48>>2]&1023](l,e,o);nd[k[(k[m>>2]|0)+48>>2]&1023](m,d,o);nd[k[(k[n>>2]|0)+48>>2]&1023](n,c,o);v=v+1|0;if((v|0)>=(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0))break a}}do{Fc[k[(k[o>>2]|0)+24>>2]&1023](o,u);rd[k[(k[b>>2]|0)+260>>2]&511](b,f,k[g>>2]|0,o);nd[k[(k[b>>2]|0)+336>>2]&1023](b,j,o);nd[k[(k[l>>2]|0)+48>>2]&1023](l,e,o);nd[k[(k[m>>2]|0)+48>>2]&1023](m,d,o);nd[k[(k[n>>2]|0)+48>>2]&1023](n,c,o);v=k[t>>2]|0;w=0;do{x=v+(w<<3)|0;p[x>>3]=+p[x>>3]+ +p[f>>3]*+p[s>>3]*((+p[e>>3]-+p[d>>3]-+p[c>>3])*+p[j+(w<<3)>>3]);w=w+1|0}while((w|0)!=(h|0));u=u+1|0}while((u|0)<(Hc[k[(k[o>>2]|0)+12>>2]&511](o)|0))}while(0);u=k[g>>2]|0;if(!u){k[g>>2]=0;Tqa(j);y=k[o>>2]|0;z=y+4|0;A=k[z>>2]|0;Ec[A&1023](o);r=a;return i|0}Tqa(u);k[g>>2]=0;Tqa(j);y=k[o>>2]|0;z=y+4|0;A=k[z>>2]|0;Ec[A&1023](o);r=a;return i|0}function w7(a,b,c){a=a|0;b=b|0;c=c|0;nd[k[(k[c>>2]|0)+176>>2]&1023](c,b,339);return}function x7(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,125688,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,222,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function y7(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0.0,v=0.0,w=0.0;a=r;r=r+48|0;d=a+24|0;e=a+16|0;f=a+8|0;g=a;h=a+40|0;k[h>>2]=0;nd[k[(k[c>>2]|0)+232>>2]&1023](c,b,339);b=Hc[k[(k[c>>2]|0)+172>>2]&511](c)|0;i=b>>>0>536870911?-1:b<<3;j=Rqa(i)|0;l=Rqa(i)|0;m=Rqa(i)|0;Uo(c,h);i=Wo(c,377)|0;Wo(c,353)|0;n=Wo(c,339)|0;o=Wo(c,64)|0;q=Hc[k[(k[c>>2]|0)+304>>2]&511](c)|0;if((b|0)>0){s=d+8|0;if(!i){t=0;do{Fc[k[(k[q>>2]|0)+28>>2]&1023](q,t);p[g>>3]=0.0;nd[k[(k[o>>2]|0)+48>>2]&1023](o,f,q);nd[k[(k[n>>2]|0)+48>>2]&1023](n,e,q);rd[k[(k[n>>2]|0)+60>>2]&511](n,d,k[h>>2]|0,q);u=+p[g>>3]*(-1.0/(+p[e>>3]-+p[f>>3]));v=+p[d>>3]*u;p[l+(t<<3)>>3]=v;w=+p[s>>3]*u;p[m+(t<<3)>>3]=w;u=+aa(+(v*v+w*w));p[j+(t<<3)>>3]=u;t=t+1|0}while((t|0)!=(b|0))}else{t=0;do{Fc[k[(k[q>>2]|0)+28>>2]&1023](q,t);nd[k[(k[i>>2]|0)+48>>2]&1023](i,g,q);nd[k[(k[o>>2]|0)+48>>2]&1023](o,f,q);nd[k[(k[n>>2]|0)+48>>2]&1023](n,e,q);rd[k[(k[n>>2]|0)+60>>2]&511](n,d,k[h>>2]|0,q);u=+p[g>>3]*(-1.0/(+p[e>>3]-+p[f>>3]));w=+p[d>>3]*u;p[l+(t<<3)>>3]=w;v=+p[s>>3]*u;p[m+(t<<3)>>3]=v;u=+aa(+(w*w+v*v));p[j+(t<<3)>>3]=u;t=t+1|0}while((t|0)!=(b|0))}}rd[k[(k[c>>2]|0)+48>>2]&511](c,674,l,738);rd[k[(k[c>>2]|0)+48>>2]&511](c,677,m,738);rd[k[(k[c>>2]|0)+48>>2]&511](c,671,j,738);if(q)Ec[k[(k[q>>2]|0)+4>>2]&1023](q);Tqa(m);Tqa(l);Tqa(j);j=k[h>>2]|0;if(!j){r=a;return}Tqa(j);r=a;return}function z7(a,b){a=a|0;b=b|0;return}function A7(a){a=a|0;Sqa(a);return}function B7(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,125836,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,135868,11);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,9,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0);return 0}function C7(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,125836,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,136199,16);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,12,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function D7(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,125836,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,136133,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,15,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function E7(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125836,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,145111,11);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,18,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function F7(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125836,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,135838,17);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,21,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function G7(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125836,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,135856,11);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,24,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function H7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125836,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,29,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function I7(a,b){a=a|0;b=b|0;return 0}function J7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125836,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,36,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function K7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125836,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144189,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,39,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function L7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125836,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144203,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,42,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function M7(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125836,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,45,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function N7(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,125836,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,48,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function O7(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125836,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,137199,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,51,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function P7(a,b){a=a|0;b=b|0;return}function Q7(a){a=a|0;Sqa(a);return}function R7(a,b,c){a=a|0;b=b|0;c=c|0;return}function S7(a,b,c){a=a|0;b=b|0;c=c|0;return}function T7(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;a=r;r=r+192|0;d=a+176|0;e=a+40|0;f=a+24|0;g=a+12|0;h=a;if((k[c+40>>2]|0)!=302){hoa(b,c,490,738,534);r=a;return}a=e+56|0;c=e+4|0;k[e>>2]=27524;k[a>>2]=27544;B=0;wa(508,e+56|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;i=Q;j=b;vva(a);Qb(j|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[a>>2]=27488;B=0;va(448,c|0);b=B;B=0;do if(b&1){l=Rb()|0;m=Q;n=l}else{k[c>>2]=27560;l=e+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,c|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(c);m=p;n=o;break}Yua(d);B=0;o=Ia(40,e|0,132101,25)|0;p=B;B=0;if(!(p&1)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,f|0,125951,83);p=B;B=0;do if(!(p&1)){B=0;eb(502,g|0,145111,11);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(f);t=s;u=q;break}B=0;wa(510,h|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;v=Q;w=q;x=1}else{B=0;ua(163,o|0,f|0,g|0,20,h|0);q=B;B=0;if(q&1)y=1;else{B=0;eb(503,o|0,1240,229);B=0;y=0}q=Rb()|0;s=Q;Yua(h);v=s;w=q;x=y}Yua(g);Yua(f);if(x){t=v;u=w}else{z=v;A=w;k[e>>2]=27468;k[a>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(a);Qb(A|0)}}else{q=Rb()|0;t=Q;u=q}while(0);zb(o|0);z=t;A=u;k[e>>2]=27468;k[a>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(a);Qb(A|0)}p=Rb()|0;z=Q;A=p;k[e>>2]=27468;k[a>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(a);Qb(A|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function U7(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function V7(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0;a=c+56|0;f=k[a>>2]|0;if((f|0)>0){g=c+32|0;h=f;f=0;j=0;while(1){if(!(i[(k[g>>2]|0)+j>>0]|0)){l=h;m=f}else{n=qh(b,f)|0;Uc[k[(k[n>>2]|0)+480>>2]&63](n,j,c,d,e,738);l=k[a>>2]|0;m=f+1|0}j=j+1|0;if((j|0)>=(l|0))break;else{h=l;f=m}}}Zka(c,b,137052,353);Zka(c,b,134925,339);Zka(c,b,134945,64);Yka(c,b,137955,999,0.0);Zka(c,b,137867,206);Zka(c,b,135923,674);Zka(c,b,135944,677);Zka(c,b,134027,39);Zka(c,b,134252,388);Zka(c,b,126035,36);if((k[c+40>>2]|0)==300)return;Zka(c,b,136615,287);Zka(c,b,136636,288);return}function W7(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function X7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125951,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,61,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Y7(a,b){a=a|0;b=b|0;return 0}function Z7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125951,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,68,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function _7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0,Q=0,R=0,S=0;a=r;r=r+80|0;c=a+56|0;d=a+48|0;e=a+40|0;f=a+32|0;g=a+16|0;h=a;i=a+64|0;k[i>>2]=0;j=Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0;l=gq(b,534)|0;m=j<<1;n=j>>>0>536870911?-1:j<<3;o=Rqa(n)|0;q=Rqa(m>>>0>536870911?-1:m<<3)|0;m=Rqa(n)|0;s=Rqa(n)|0;t=Rqa(n)|0;u=Rqa(n)|0;v=Rqa(n)|0;Uo(b,i);n=Wo(b,353)|0;w=+Zc[k[(k[b>>2]|0)+72>>2]&255](b);vp(b,u,704);vp(b,v,705);vp(b,t,353);x=(j|0)>0;if(x){y=0;do{z=+p[u+(y<<3)>>3];A=+p[v+(y<<3)>>3];B=+aa(+(z*z+A*A+1.0e-10));C=+p[t+(y<<3)>>3];p[m+(y<<3)>>3]=-(z*C)/B;p[s+(y<<3)>>3]=-(C*A)/B;y=y+1|0}while((y|0)!=(j|0))}y=ed[k[(k[b>>2]|0)+308>>2]&511](b,2)|0;D=Hc[k[(k[y>>2]|0)+8>>2]&511](y)|0;if((D|0)<(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0)){E=y+8|0;F=h+8|0;G=l+12|0;H=D;do{Fc[k[(k[y>>2]|0)+24>>2]&1023](y,H);nd[k[(k[n>>2]|0)+48>>2]&1023](n,d,y);if(+p[d>>3]<50.0)p[d>>3]=50.0;Dc[k[(k[b>>2]|0)+496>>2]&255](b,g,m,k[i>>2]|0,y);Dc[k[(k[b>>2]|0)+496>>2]&255](b,h,s,k[i>>2]|0,y);rd[k[(k[b>>2]|0)+500>>2]&511](b,e,m,y);rd[k[(k[b>>2]|0)+500>>2]&511](b,f,s,y);B=w/(+p[d>>3]*2.0+1.0e-10);rd[k[(k[b>>2]|0)+260>>2]&511](b,c,k[i>>2]|0,y);nd[k[(k[b>>2]|0)+336>>2]&1023](b,o,y);rd[k[(k[b>>2]|0)+340>>2]&511](b,q,k[i>>2]|0,y);if(x){D=k[G>>2]|0;I=0;do{J=o+(I<<3)|0;K=q+(I<<3)|0;L=q+(I+j<<3)|0;M=ma(I,j)|0;N=0;do{A=+p[J>>3];C=+p[g>>3]+ +p[F>>3];z=+p[e>>3];O=+p[f>>3];P=D+(N+M<<3)|0;p[P>>3]=+p[P>>3]+ +p[E>>3]*+p[c>>3]*((A+B*(A*C+ +p[K>>3]*z+ +p[L>>3]*O))*(C*+p[o+(N<<3)>>3]+z*+p[q+(N<<3)>>3]+O*+p[q+(N+j<<3)>>3]));N=N+1|0}while((N|0)!=(j|0));I=I+1|0}while((I|0)!=(j|0))}H=H+1|0}while((H|0)<(Hc[k[(k[y>>2]|0)+12>>2]&511](y)|0))}H=k[i>>2]|0;if(!H){k[i>>2]=0;Tqa(o);Tqa(q);Tqa(t);Tqa(u);Tqa(v);Tqa(m);Tqa(s);Q=k[y>>2]|0;R=Q+4|0;S=k[R>>2]|0;Ec[S&1023](y);r=a;return l|0}Tqa(H);k[i>>2]=0;Tqa(o);Tqa(q);Tqa(t);Tqa(u);Tqa(v);Tqa(m);Tqa(s);Q=k[y>>2]|0;R=Q+4|0;S=k[R>>2]|0;Ec[S&1023](y);r=a;return l|0}function $7(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0;a=r;r=r+272|0;c=a+208|0;d=a+260|0;e=a+72|0;f=a+248|0;g=a+236|0;h=a+224|0;i=a+64|0;j=a+56|0;l=a+48|0;m=a+40|0;n=a+32|0;o=a+16|0;q=a;s=a+220|0;cp(b,d,298);a:do switch(k[d>>2]|0){case 300:{t=b;break}case 302:{if(Hc[k[(k[b>>2]|0)+248>>2]&511](b)|0){t=Hc[k[(k[b>>2]|0)+432>>2]&511](b)|0;break a}else{u=0;r=a;return u|0}break}default:{v=e+56|0;w=e+4|0;k[e>>2]=27524;k[v>>2]=27544;B=0;wa(508,e+56|0,w|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;z=x;vva(v);Qb(z|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[v>>2]=27488;B=0;va(448,w|0);x=B;B=0;do if(x&1){A=Rb()|0;C=Q;D=A}else{k[w>>2]=27560;A=e+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,w|0,c|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(c);Yua(A);Ava(w);C=F;D=E;break}Yua(c);B=0;E=Ia(40,e|0,144639,5)|0;F=B;B=0;if((((!(F&1)?(B=0,F=ya(427,k[d>>2]|0)|0,G=B,B=0,!(G&1)):0)?(G=Lta(F)|0,B=0,H=Ia(40,E|0,F|0,G|0)|0,G=B,B=0,!(G&1)):0)?(B=0,G=Ia(40,H|0,146481,18)|0,H=B,B=0,!(H&1)):0)?(B=0,Xa(239,G|0,0)|0,G=B,B=0,!(G&1)):0){G=Ab(20)|0;B=0;eb(502,f|0,125951,83);H=B;B=0;do if(!(H&1)){B=0;eb(502,g|0,144203,13);F=B;B=0;if(F&1){F=Rb()|0;E=Q;Yua(f);I=F;J=E;break}B=0;wa(510,h|0,w|0);E=B;B=0;if(E&1){E=Rb()|0;K=E;L=Q;M=1}else{B=0;ua(163,G|0,f|0,g|0,164,h|0);E=B;B=0;if(E&1)N=1;else{B=0;eb(503,G|0,1240,229);B=0;N=0}E=Rb()|0;F=Q;Yua(h);K=E;L=F;M=N}Yua(g);Yua(f);if(M){I=K;J=L}else{O=K;P=L;k[e>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}}else{F=Rb()|0;I=F;J=Q}while(0);zb(G|0);O=I;P=J;k[e>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}H=Rb()|0;O=H;P=Q;k[e>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Qb(O|0)}while(0);y=C;z=D;vva(v);Qb(z|0)}}while(0);k[s>>2]=0;z=Hc[k[(k[t>>2]|0)+164>>2]&511](t)|0;D=iq(t,534)|0;C=z>>>0>536870911?-1:z<<3;y=Rqa(C)|0;O=z<<1;P=Rqa(O>>>0>536870911?-1:O<<3)|0;O=Rqa(C)|0;J=Rqa(C)|0;I=Rqa(C)|0;Uo(t,s);C=Wo(t,388)|0;L=Wo(t,39)|0;K=Wo(t,36)|0;M=Wo(t,353)|0;R=+Zc[k[(k[t>>2]|0)+72>>2]&255](t);vp(t,J,704);vp(t,I,705);vp(t,O,353);f=(z|0)>0;if(f){g=0;do{N=J+(g<<3)|0;S=+p[N>>3];h=I+(g<<3)|0;T=+p[h>>3];U=+aa(+(S*S+T*T+1.0e-10));V=+p[O+(g<<3)>>3];p[N>>3]=-(S*V)/U;p[h>>3]=-(V*T)/U;g=g+1|0}while((g|0)!=(z|0))}g=ed[k[(k[t>>2]|0)+308>>2]&511](t,2)|0;h=Hc[k[(k[g>>2]|0)+8>>2]&511](g)|0;if((h|0)<(Hc[k[(k[g>>2]|0)+12>>2]&511](g)|0)){N=g+8|0;w=q+8|0;x=D+4|0;H=h;do{Fc[k[(k[g>>2]|0)+24>>2]&1023](g,H);rd[k[(k[t>>2]|0)+260>>2]&511](t,j,k[s>>2]|0,g);nd[k[(k[t>>2]|0)+336>>2]&1023](t,y,g);rd[k[(k[t>>2]|0)+340>>2]&511](t,P,k[s>>2]|0,g);Dc[k[(k[b>>2]|0)+496>>2]&255](b,o,J,k[s>>2]|0,g);Dc[k[(k[b>>2]|0)+496>>2]&255](b,q,I,k[s>>2]|0,g);rd[k[(k[b>>2]|0)+500>>2]&511](b,m,J,g);rd[k[(k[b>>2]|0)+500>>2]&511](b,n,I,g);nd[k[(k[C>>2]|0)+48>>2]&1023](C,i,g);nd[k[(k[L>>2]|0)+48>>2]&1023](L,e,g);nd[k[(k[K>>2]|0)+48>>2]&1023](K,c,g);nd[k[(k[M>>2]|0)+48>>2]&1023](M,l,g);U=+p[l>>3];if(U<50.0){p[l>>3]=50.0;W=50.0}else W=U;U=R/(W*2.0+1.0e-10);if(f){h=k[x>>2]|0;F=0;do{T=+p[y+(F<<3)>>3];E=h+(F<<3)|0;p[E>>3]=+p[E>>3]+ +p[j>>3]*+p[N>>3]*(+p[i>>3]-+p[e>>3]-+p[c>>3])*(T+U*(T*(+p[o>>3]+ +p[w>>3])+ +p[m>>3]*+p[P+(F<<3)>>3]+ +p[n>>3]*+p[P+(F+z<<3)>>3]));F=F+1|0}while((F|0)!=(z|0))}H=H+1|0}while((H|0)<(Hc[k[(k[g>>2]|0)+12>>2]&511](g)|0))}H=k[s>>2]|0;if(H)Tqa(H);k[s>>2]=0;Tqa(y);Tqa(P);Tqa(O);Tqa(J);Tqa(I);Ec[k[(k[g>>2]|0)+4>>2]&1023](g);if((k[d>>2]|0)!=300?(ap(t),(t|0)!=0):0)Ec[k[(k[t>>2]|0)+4>>2]&1023](t);u=D;r=a;return u|0}function a8(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,125951,83);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,242,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}
+function CR(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;b=r;r=r+192|0;d=b+176|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;b=e+56|0;i=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(b);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,86504,44)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,82956,87);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,49,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}while(0);l=o;m=p;vva(b);Qb(m|0)}function DR(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86480,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82956,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,48,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function ER(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86450,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82956,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,50,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function FR(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85695,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,82956,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,53,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function GR(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86364,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82956,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,54,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function HR(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86343,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82956,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,55,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function IR(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85673,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82956,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,56,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function JR(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85648,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82956,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,57,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function KR(a,b){a=a|0;b=b|0;p[a+8>>3]=+(b&1);return}function LR(a,b){a=a|0;b=b|0;p[a+8>>3]=+(b|0);return}function MR(a,b){a=a|0;b=+b;p[a+8>>3]=b;return}function NR(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86273,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82956,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,62,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function OR(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86245,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82956,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,63,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function PR(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82956,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,64,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function QR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82956,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,65,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function RR(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86188,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82956,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,66,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function SR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86188,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82956,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,67,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function TR(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86169,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82956,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,68,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function UR(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86150,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82956,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,69,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function VR(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85465,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,82956,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,70,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function WR(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85340,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,82956,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,71,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function XR(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function YR(a){a=a|0;k[a>>2]=35208;return}function ZR(a,b,c){a=a|0;b=b|0;c=c|0;k[a>>2]=35208;k[a+4>>2]=b;k[a+8>>2]=c;return}function _R(a){a=a|0;k[a>>2]=35208;return}function $R(a){a=a|0;Sqa(a);return}function aS(a){a=a|0;bS(a);return}function bS(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;b=r;r=r+176|0;c=b+152|0;d=b+16|0;e=b;f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);k[d+(k[(k[d>>2]|0)+-12>>2]|0)+12>>2]=22;B=0;o=Ia(40,d|0,83055,13)|0;p=B;B=0;if((((((!(p&1)?(k[o+(k[(k[o>>2]|0)+-12>>2]|0)+12>>2]=35,p=o+(k[(k[o>>2]|0)+-12>>2]|0)+4|0,k[p>>2]=k[p>>2]&-177|32,B=0,p=ya(427,k[a+4>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(p)|0,B=0,s=Ia(40,o|0,p|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,s|0,149175,1)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Xa(245,q|0,k[a+8>>2]|0)|0,q=B,B=0,!(q&1)):0)?(B=0,Ia(40,s|0,149177,1)|0,s=B,B=0,!(s&1)):0)?(B=0,wa(510,e|0,g|0),s=B,B=0,!(s&1)):0){B=0;ya(424,e|0)|0;s=B;B=0;if(!(s&1)){Yua(e);k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);r=b;return}s=Rb()|0;q=Q;Yua(e);t=q;u=s;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(u|0)}s=Rb()|0;t=Q;u=s;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(u|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function cS(a){a=a|0;return 572}function dS(a){a=a|0;var b=0,c=0,d=0;b=Qqa(12)|0;c=k[a+4>>2]|0;d=k[a+8>>2]|0;k[b>>2]=35208;k[b+4>>2]=c;k[b+8>>2]=d;return b|0}function eS(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=60;i[d+1>>0]=2;i[d+2>>0]=0;i[d+3>>0]=0;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;d=a+8|0;n=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;k[b>>2]=(k[b>>2]|0)+4;r=e;return}case 2:{k[c>>2]=(k[c>>2]|0)+12;r=e;return}case 1:{c=(k[b>>2]|0)+4|0;k[b>>2]=c;n=a+4|0;o=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[n>>0]=o;i[n+1>>0]=o>>8;i[n+2>>0]=o>>16;i[n+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;n=a+8|0;a=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[n>>0]=a;i[n+1>>0]=a>>8;i[n+2>>0]=a>>16;i[n+3>>0]=a>>24;k[b>>2]=(k[b>>2]|0)+4;k[n>>2]=0;r=e;return}default:{e=g+56|0;n=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,n|0);b=B;B=0;if(b&1){b=Rb()|0;p=Q;q=b;vva(e);Qb(q|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,n|0);b=B;B=0;do if(b&1){a=Rb()|0;s=Q;t=a}else{k[n>>2]=27560;a=g+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,n|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;c=Q;Yua(f);Yua(a);Ava(n);s=c;t=o;break}Yua(f);B=0;o=Ia(40,g|0,143951,43)|0;c=B;B=0;if(!(c&1)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,h|0,83069,75);c=B;B=0;do if(!(c&1)){B=0;eb(502,j|0,149525,8);d=B;B=0;if(d&1){d=Rb()|0;u=Q;Yua(h);v=u;w=d;break}B=0;wa(510,m|0,n|0);d=B;B=0;if(d&1){d=Rb()|0;x=d;y=Q;z=1}else{B=0;ua(163,o|0,h|0,j|0,59,m|0);d=B;B=0;if(d&1)A=1;else{B=0;eb(503,o|0,1240,229);B=0;A=0}d=Rb()|0;u=Q;Yua(m);x=d;y=u;z=A}Yua(j);Yua(h);if(z){v=y;w=x}else{C=y;D=x;k[g>>2]=27468;k[e>>2]=27488;k[n>>2]=27560;Yua(a);Ava(n);vva(e);Qb(D|0)}}else{u=Rb()|0;v=Q;w=u}while(0);zb(o|0);C=v;D=w;k[g>>2]=27468;k[e>>2]=27488;k[n>>2]=27560;Yua(a);Ava(n);vva(e);Qb(D|0)}c=Rb()|0;C=Q;D=c;k[g>>2]=27468;k[e>>2]=27488;k[n>>2]=27560;Yua(a);Ava(n);vva(e);Qb(D|0)}while(0);p=s;q=t;vva(e);Qb(q|0)}}}function fS(a){a=a|0;return k[a+4>>2]|0}function gS(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86577,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,42,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function hS(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,43,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function iS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,44,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function jS(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,45,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function kS(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,46,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function lS(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;b=r;r=r+192|0;d=b+176|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;b=e+56|0;i=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(b);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,86504,44)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,83165,85);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,47,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}while(0);l=o;m=p;vva(b);Qb(m|0)}function mS(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86480,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,48,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function nS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86450,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,49,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function oS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,50,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function pS(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,51,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function qS(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,83145,19)|0;q=B;B=0;if((((((!(q&1)?(q=a+4|0,B=0,s=Xa(242,p|0,k[q>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,s|0,144166,2)|0,s=B,B=0,!(s&1)):0)?(B=0,s=ya(427,k[q>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(s)|0,B=0,t=Ia(40,p|0,s|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,t|0,86385,30)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;p=Q;Yua(b);u=p;v=s;break}B=0;wa(510,g|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,q|0,b|0,f|0,52,g|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,q|0,1240,229);B=0;z=0}s=Rb()|0;p=Q;Yua(g);w=p;x=s;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(q|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function rS(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86364,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,53,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function sS(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86343,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,54,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function tS(a,b){a=a|0;b=b|0;k[b>>2]=k[a+8>>2];return}function uS(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85648,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,56,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function vS(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86273,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,58,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function wS(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86273,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,59,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function xS(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;c=e+56|0;i=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(c);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,86273,21)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,83165,85);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86106,8);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,60,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}while(0);l=o;m=p;vva(c);Qb(m|0)}function yS(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86273,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,61,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function zS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86245,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,62,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function AS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,63,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function BS(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,64,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function CS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86188,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,65,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function DS(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86188,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,66,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function ES(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86169,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,67,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function FS(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86150,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,68,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function GS(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,83145,19)|0;q=B;B=0;if((((((!(q&1)?(q=a+4|0,B=0,s=Xa(242,p|0,k[q>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,s|0,144166,2)|0,s=B,B=0,!(s&1)):0)?(B=0,s=ya(427,k[q>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(s)|0,B=0,t=Ia(40,p|0,s|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,t|0,83906,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,e|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);s=B;B=0;if(s&1){s=Rb()|0;p=Q;Yua(e);u=p;v=s;break}B=0;wa(510,g|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,q|0,e|0,f|0,69,g|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,q|0,1240,229);B=0;z=0}s=Rb()|0;p=Q;Yua(g);w=p;x=s;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(q|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function HS(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,83145,19)|0;q=B;B=0;if((((((!(q&1)?(q=a+4|0,B=0,s=Xa(242,p|0,k[q>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,s|0,144166,2)|0,s=B,B=0,!(s&1)):0)?(B=0,s=ya(427,k[q>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(s)|0,B=0,t=Ia(40,p|0,s|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,t|0,85982,34)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,83165,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);s=B;B=0;if(s&1){s=Rb()|0;p=Q;Yua(b);u=p;v=s;break}B=0;wa(510,g|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,q|0,b|0,f|0,70,g|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,q|0,1240,229);B=0;z=0}s=Rb()|0;p=Q;Yua(g);w=p;x=s;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(q|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function IS(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function JS(a){a=a|0;k[a>>2]=35360;return}function KS(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;k[a>>2]=35360;k[a+4>>2]=b;k[a+12>>2]=d;if(!d){k[a+8>>2]=0;return}b=Rqa(d>>>0>1073741823?-1:d<<2)|0;e=a+8|0;k[e>>2]=b;if((d|0)>0)f=0;else return;while(1){b=k[c+(f<<2)>>2]|0;a=(Lta(b)|0)+1|0;g=Rqa(a)|0;if(!b){h=5;break}if(a){j=0;do{i[g+j>>0]=i[b+j>>0]|0;j=j+1|0}while((j|0)!=(a|0))}k[(k[e>>2]|0)+(f<<2)>>2]=g;f=f+1|0;if((f|0)>=(d|0)){h=9;break}}if((h|0)==5)yb(142353,85118,137,142345);else if((h|0)==9)return}function LS(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;k[a>>2]=35360;b=a+12|0;c=k[b>>2]|0;d=a+8|0;a=k[d>>2]|0;if((c|0)>0){e=c;c=a;f=0;while(1){g=k[c+(f<<2)>>2]|0;if(!g){h=e;i=c}else{Tqa(g);h=k[b>>2]|0;i=k[d>>2]|0}f=f+1|0;if((f|0)>=(h|0)){j=i;break}else{e=h;c=i}}}else j=a;if(!j){k[d>>2]=0;return}Tqa(j);k[d>>2]=0;return}function MS(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;k[a>>2]=35360;b=a+12|0;c=k[b>>2]|0;d=a+8|0;e=k[d>>2]|0;if((c|0)>0){f=c;c=e;g=0;while(1){h=k[c+(g<<2)>>2]|0;if(!h){i=f;j=c}else{Tqa(h);i=k[b>>2]|0;j=k[d>>2]|0}g=g+1|0;if((g|0)>=(i|0)){l=j;break}else{f=i;c=j}}}else l=e;if(!l){Sqa(a);return}Tqa(l);Sqa(a);return}function NS(a){a=a|0;OS(a);return}function OS(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=d+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(p);Ava(l);q=u;s=t;break}Yua(c);k[d+(k[(k[d>>2]|0)+-12>>2]|0)+12>>2]=22;B=0;t=Ia(40,d|0,83270,20)|0;u=B;B=0;do if((((!(u&1)?(k[t+(k[(k[t>>2]|0)+-12>>2]|0)+12>>2]=35,v=t+(k[(k[t>>2]|0)+-12>>2]|0)+4|0,k[v>>2]=k[v>>2]&-177|32,B=0,v=ya(427,k[a+4>>2]|0)|0,w=B,B=0,!(w&1)):0)?(w=Lta(v)|0,B=0,x=Ia(40,t|0,v|0,w|0)|0,w=B,B=0,!(w&1)):0)?(B=0,Ia(40,x|0,83291,2)|0,x=B,B=0,!(x&1)):0)?(B=0,wa(510,e|0,l|0),x=B,B=0,!(x&1)):0){B=0;ya(424,e|0)|0;x=B;B=0;if(x&1){x=Rb()|0;w=Q;Yua(e);y=w;z=x;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);x=a+12|0;a:do if((k[x>>2]|0)>0){w=f+56|0;v=f+4|0;A=f+56|0;C=f+128|0;D=f+132|0;E=f+36|0;F=f+52|0;G=a+8|0;H=0;while(1){k[f>>2]=27524;k[w>>2]=27544;B=0;wa(508,A|0,v|0);I=B;B=0;if(I&1){J=33;break}k[C>>2]=0;k[D>>2]=-1;k[f>>2]=27468;k[w>>2]=27488;B=0;va(448,v|0);I=B;B=0;if(I&1){J=34;break}k[v>>2]=27560;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[F>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);I=B;B=0;if(I&1){J=32;break}Yua(c);B=0;I=Ia(40,f|0,83297,2)|0;K=B;B=0;if(K&1){J=43;break}K=k[(k[G>>2]|0)+(H<<2)>>2]|0;L=Lta(K)|0;B=0;M=Ia(40,I|0,K|0,L|0)|0;L=B;B=0;if(L&1){J=43;break}B=0;Ia(40,M|0,83300,1)|0;M=B;B=0;if(M&1){J=43;break}B=0;wa(510,g|0,v|0);M=B;B=0;if(M&1){J=43;break}B=0;ya(424,g|0)|0;M=B;B=0;if(M&1){J=44;break}Yua(g);k[f>>2]=27468;k[w>>2]=27488;k[v>>2]=27560;Yua(E);Ava(v);vva(w);H=H+1|0;if((H|0)>=(k[x>>2]|0))break a}if((J|0)==32){H=Rb()|0;G=Q;Yua(c);Yua(E);Ava(v);N=G;O=H;J=35}else if((J|0)==33){H=Rb()|0;P=Q;R=H;vva(w);Qb(R|0)}else if((J|0)==34){H=Rb()|0;N=Q;O=H;J=35}else if((J|0)==43){H=Rb()|0;S=Q;T=H;J=45}else if((J|0)==44){H=Rb()|0;G=Q;Yua(g);S=G;T=H;J=45}if((J|0)==35){P=N;R=O;vva(w);Qb(R|0)}else if((J|0)==45){k[f>>2]=27468;k[w>>2]=27488;k[v>>2]=27560;Yua(E);Ava(v);vva(w);U=S;V=T;Qb(V|0)}}while(0);x=h+56|0;H=h+4|0;k[h>>2]=27524;k[x>>2]=27544;B=0;wa(508,h+56|0,H|0);G=B;B=0;if(G&1){G=Rb()|0;W=Q;X=G;vva(x);Qb(X|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[x>>2]=27488;B=0;va(448,H|0);G=B;B=0;do if(G&1){F=Rb()|0;Y=Q;Z=F}else{k[H>>2]=27560;F=h+36|0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,H|0,c|0);D=B;B=0;if(D&1){D=Rb()|0;C=Q;Yua(c);Yua(F);Ava(H);Y=C;Z=D;break}Yua(c);B=0;Ia(40,h|0,83294,2)|0;D=B;B=0;do if(!(D&1)?(B=0,wa(510,i|0,H|0),C=B,B=0,!(C&1)):0){B=0;ya(424,i|0)|0;C=B;B=0;if(C&1){C=Rb()|0;A=Q;Yua(i);_=A;$=C;break}else{Yua(i);k[h>>2]=27468;k[x>>2]=27488;k[H>>2]=27560;Yua(F);Ava(H);vva(x);r=b;return}}else J=49;while(0);if((J|0)==49){D=Rb()|0;_=Q;$=D}k[h>>2]=27468;k[x>>2]=27488;k[H>>2]=27560;Yua(F);Ava(H);vva(x);U=_;V=$;Qb(V|0)}while(0);W=Y;X=Z;vva(x);Qb(X|0)}else J=26;while(0);if((J|0)==26){t=Rb()|0;y=Q;z=t}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);U=y;V=z;Qb(V|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}function PS(a){a=a|0;return 617}function QS(a){a=a|0;var b=0;b=Qqa(16)|0;B=0;ib(294,b|0,k[a+4>>2]|0,k[a+8>>2]|0,k[a+12>>2]|0);a=B;B=0;if(a&1){a=Rb()|0;Sqa(b);Qb(a|0)}else return b|0;return 0}function RS(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;e=r;r=r+368|0;f=e+344|0;g=e+208|0;h=e+196|0;j=e+184|0;m=e+36|0;n=e+48|0;o=e+24|0;p=e+12|0;q=e;s=(d|0)==0;t=(d|0)==2;if((d&-3|0)==0?(u=k[a+12>>2]|0,(u|0)!=0):0){v=Rqa(u>>>0>1073741823?-1:u<<2)|0;if((u|0)>0){w=k[a+8>>2]|0;x=0;do{y=(Lta(k[w+(x<<2)>>2]|0)|0)+1|0;k[v+(x<<2)>>2]=y;x=x+1|0}while((x|0)<(u|0));z=v}else z=v}else z=0;do if(s){v=k[b>>2]|0;i[v>>0]=105;i[v+1>>0]=2;i[v+2>>0]=0;i[v+3>>0]=0;v=(k[b>>2]|0)+4|0;k[b>>2]=v;u=a+4|0;x=l[u>>0]|l[u+1>>0]<<8|l[u+2>>0]<<16|l[u+3>>0]<<24;i[v>>0]=x;i[v+1>>0]=x>>8;i[v+2>>0]=x>>16;i[v+3>>0]=x>>24;x=(k[b>>2]|0)+4|0;k[b>>2]=x;v=a+12|0;u=l[v>>0]|l[v+1>>0]<<8|l[v+2>>0]<<16|l[v+3>>0]<<24;i[x>>0]=u;i[x+1>>0]=u>>8;i[x+2>>0]=u>>16;i[x+3>>0]=u>>24;k[b>>2]=(k[b>>2]|0)+4;A=v}else{if(t){k[c>>2]=(k[c>>2]|0)+12;A=a+12|0;break}if((d|0)==1){v=(k[b>>2]|0)+4|0;k[b>>2]=v;u=a+4|0;x=l[v>>0]|l[v+1>>0]<<8|l[v+2>>0]<<16|l[v+3>>0]<<24;i[u>>0]=x;i[u+1>>0]=x>>8;i[u+2>>0]=x>>16;i[u+3>>0]=x>>24;x=(k[b>>2]|0)+4|0;k[b>>2]=x;u=a+12|0;v=l[x>>0]|l[x+1>>0]<<8|l[x+2>>0]<<16|l[x+3>>0]<<24;i[u>>0]=v;i[u+1>>0]=v>>8;i[u+2>>0]=v>>16;i[u+3>>0]=v>>24;k[b>>2]=(k[b>>2]|0)+4;A=u;break}u=g+56|0;v=g+4|0;k[g>>2]=27524;k[u>>2]=27544;B=0;wa(508,g+56|0,v|0);x=B;B=0;if(x&1){x=Rb()|0;C=Q;D=x;vva(u);Qb(D|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);x=B;B=0;do if(x&1){w=Rb()|0;E=Q;F=w}else{k[v>>2]=27560;w=g+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,v|0,f|0);y=B;B=0;if(y&1){y=Rb()|0;G=Q;Yua(f);Yua(w);Ava(v);E=G;F=y;break}Yua(f);B=0;y=Ia(40,g|0,143951,43)|0;G=B;B=0;a:do if(!(G&1)?(B=0,Xa(239,y|0,0)|0,H=B,B=0,!(H&1)):0){H=Ab(20)|0;B=0;eb(502,h|0,83302,82);I=B;B=0;do if(!(I&1)){B=0;eb(502,j|0,149525,8);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(h);L=K;M=J;break}B=0;wa(510,m|0,v|0);J=B;B=0;if(J&1){J=Rb()|0;N=Q;O=J;P=1}else{B=0;ua(163,H|0,h|0,j|0,92,m|0);J=B;B=0;if(J&1)R=1;else{B=0;eb(503,H|0,1240,229);B=0;R=0}J=Rb()|0;K=Q;Yua(m);N=K;O=J;P=R}Yua(j);Yua(h);if(P){L=N;M=O}else{S=N;T=O;break a}}else{J=Rb()|0;L=Q;M=J}while(0);zb(H|0);S=L;T=M}else U=24;while(0);if((U|0)==24){y=Rb()|0;S=Q;T=y}k[g>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(w);Ava(v);vva(u);V=S;W=T;Qb(W|0)}while(0);C=E;D=F;vva(u);Qb(D|0)}while(0);D=k[A>>2]|0;b:do if(D){F=(z|0)==0;do if(s){i[k[b>>2]>>0]=F&1;E=(k[b>>2]|0)+1|0;k[b>>2]=E;if(F){X=0;Y=0}else{TEa(E|0,z|0,k[A>>2]<<2|0)|0;k[b>>2]=(k[b>>2]|0)+(k[A>>2]<<2);X=0;Y=z}}else{if(t){E=(k[c>>2]|0)+1|0;k[c>>2]=E;if(F){X=0;Y=0;break}k[c>>2]=E+(k[A>>2]<<2);X=0;Y=z;break}E=k[b>>2]|0;C=i[E>>0]|0;T=E+1|0;k[b>>2]=T;E=D>>>0>1073741823?-1:D<<2;if(!(C&1)){C=Rqa(E)|0;S=D<<2;TEa(C|0,T|0,S|0)|0;k[b>>2]=T+S;Z=C}else Z=z;C=Rqa(E)|0;k[a+8>>2]=C;X=1;Y=Z}while(0);if((k[A>>2]|0)>0){F=a+8|0;if(s){u=k[b>>2]|0;C=0;while(1){E=(k[(k[F>>2]|0)+(C<<2)>>2]|0)==0;i[u>>0]=E&1;S=(k[b>>2]|0)+1|0;k[b>>2]=S;if(E)_=S;else{E=Y+(C<<2)|0;TEa(S|0,k[(k[F>>2]|0)+(C<<2)>>2]|0,k[E>>2]|0)|0;S=(k[b>>2]|0)+(k[E>>2]|0)|0;k[b>>2]=S;_=S}C=C+1|0;if((C|0)>=(k[A>>2]|0)){$=Y;break b}else u=_}}else aa=0;while(1){if(t){u=(k[(k[F>>2]|0)+(aa<<2)>>2]|0)==0;C=(k[c>>2]|0)+1|0;k[c>>2]=C;if(!u)k[c>>2]=C+(k[Y+(aa<<2)>>2]|0)}else{if(!X)break;C=k[b>>2]|0;u=i[C>>0]|0;k[b>>2]=C+1;if(!(u&1)){u=Y+(aa<<2)|0;C=Rqa(k[u>>2]|0)|0;k[(k[F>>2]|0)+(aa<<2)>>2]=C;TEa(k[(k[F>>2]|0)+(aa<<2)>>2]|0,k[b>>2]|0,k[u>>2]|0)|0;k[b>>2]=(k[b>>2]|0)+(k[u>>2]|0)}}aa=aa+1|0;if((aa|0)>=(k[A>>2]|0)){$=Y;break b}}F=n+56|0;u=n+4|0;k[n>>2]=27524;k[F>>2]=27544;B=0;wa(508,n+56|0,u|0);C=B;B=0;if(C&1){C=Rb()|0;ba=Q;ca=C;vva(F);Qb(ca|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[F>>2]=27488;B=0;va(448,u|0);C=B;B=0;do if(C&1){S=Rb()|0;da=Q;ea=S}else{k[u>>2]=27560;S=n+36|0;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,u|0,f|0);E=B;B=0;if(E&1){E=Rb()|0;T=Q;Yua(f);Yua(S);Ava(u);da=T;ea=E;break}Yua(f);B=0;E=Ia(40,n|0,143951,43)|0;T=B;B=0;c:do if(!(T&1)?(B=0,Xa(239,E|0,0)|0,g=B,B=0,!(g&1)):0){g=Ab(20)|0;B=0;eb(502,o|0,83302,82);M=B;B=0;do if(!(M&1)){B=0;eb(502,p|0,149525,8);L=B;B=0;if(L&1){L=Rb()|0;O=Q;Yua(o);fa=O;ga=L;break}B=0;wa(510,q|0,u|0);L=B;B=0;if(L&1){L=Rb()|0;ha=1;ia=Q;ja=L}else{B=0;ua(163,g|0,o|0,p|0,100,q|0);L=B;B=0;if(L&1)ka=1;else{B=0;eb(503,g|0,1240,229);B=0;ka=0}L=Rb()|0;O=Q;Yua(q);ha=ka;ia=O;ja=L}Yua(p);Yua(o);if(ha){fa=ia;ga=ja}else{la=ia;ma=ja;break c}}else{L=Rb()|0;fa=Q;ga=L}while(0);zb(g|0);la=fa;ma=ga}else U=69;while(0);if((U|0)==69){E=Rb()|0;la=Q;ma=E}k[n>>2]=27468;k[F>>2]=27488;k[u>>2]=27560;Yua(S);Ava(u);vva(F);V=la;W=ma;Qb(W|0)}while(0);ba=da;ca=ea;vva(F);Qb(ca|0)}else $=Y}else{k[a+8>>2]=0;$=z}while(0);if(!$){r=e;return}Tqa($);r=e;return}function SS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;d=k[a+12>>2]|0;a:do if(d){e=Rqa(d>>>0>1073741823?-1:d<<2)|0;if((d|0)>0){f=k[a+8>>2]|0;g=0;while(1){h=k[f+(g<<2)>>2]|0;j=(Lta(h)|0)+1|0;l=Rqa(j)|0;if(!h)break;if(j){m=0;do{i[l+m>>0]=i[h+m>>0]|0;m=m+1|0}while((m|0)!=(j|0))}k[e+(g<<2)>>2]=l;g=g+1|0;if((g|0)>=(d|0)){n=e;break a}}yb(142353,85118,137,142345)}else n=e}else n=0;while(0);if(!c){k[b>>2]=n;return}k[c>>2]=d;k[b>>2]=n;return}function TS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;d=a+12|0;e=k[d>>2]|0;f=a+8|0;a=k[f>>2]|0;if((e|0)>0){g=e;e=a;h=0;while(1){j=k[e+(h<<2)>>2]|0;if(!j){l=g;m=e}else{Tqa(j);l=k[d>>2]|0;m=k[f>>2]|0}h=h+1|0;if((h|0)>=(l|0)){n=m;break}else{g=l;e=m}}}else n=a;if(n)Tqa(n);k[d>>2]=c;d=Rqa(c>>>0>1073741823?-1:c<<2)|0;k[f>>2]=d;if((c|0)>0)o=0;else return;while(1){d=k[b+(o<<2)>>2]|0;n=(Lta(d)|0)+1|0;a=Rqa(n)|0;if(!d){p=10;break}if(n){m=0;do{i[a+m>>0]=i[d+m>>0]|0;m=m+1|0}while((m|0)!=(n|0))}k[(k[f>>2]|0)+(o<<2)>>2]=a;o=o+1|0;if((o|0)>=(c|0)){p=13;break}}if((p|0)==10)yb(142353,85118,137,142345);else if((p|0)==13)return}function US(a){a=a|0;return k[a+4>>2]|0}function VS(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86577,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,43,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function WS(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85796,25)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,44,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function XS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85760,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,45,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function YS(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85760,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,46,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function ZS(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,47,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function _S(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;b=r;r=r+192|0;d=b+176|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;b=e+56|0;i=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(b);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,86504,44)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,83385,92);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,48,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}while(0);l=o;m=p;vva(b);Qb(m|0)}function $S(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86480,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,49,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function aT(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,51,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function bT(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,52,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function cT(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,83478,18)|0;q=B;B=0;if((((((!(q&1)?(q=a+4|0,B=0,s=Xa(242,p|0,k[q>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,s|0,144166,2)|0,s=B,B=0,!(s&1)):0)?(B=0,s=ya(427,k[q>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(s)|0,B=0,t=Ia(40,p|0,s|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,t|0,86385,30)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;p=Q;Yua(b);u=p;v=s;break}B=0;wa(510,g|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,q|0,b|0,f|0,53,g|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,q|0,1240,229);B=0;z=0}s=Rb()|0;p=Q;Yua(g);w=p;x=s;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(q|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function dT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86364,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,54,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function eT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86343,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,55,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function fT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85673,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,56,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function gT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85648,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,57,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function hT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85625,22)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,59,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function iT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85601,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,60,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function jT(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;c=e+56|0;i=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(c);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,85579,21)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,83385,92);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86106,8);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,61,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}while(0);l=o;m=p;vva(c);Qb(m|0)}function kT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86273,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,62,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function lT(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,64,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function mT(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,65,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function nT(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86188,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,66,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function oT(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86188,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,67,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function pT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86169,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,68,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function qT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86150,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,69,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function rT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85465,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,70,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function sT(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85340,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,83385,92);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,71,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function tT(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function uT(a){a=a|0;k[a>>2]=35512;return}function vT(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;k[a>>2]=35512;k[a+4>>2]=b;k[a+12>>2]=d;k[a+16>>2]=e;b=ma(e,d)|0;d=Rqa(b>>>0>536870911?-1:b<<3)|0;k[a+8>>2]=d;if(!c)yb(142353,85118,137,142345);if(!b)return;TEa(d|0,c|0,b<<3|0)|0;return}function wT(a){a=a|0;var b=0;k[a>>2]=35512;b=a+8|0;a=k[b>>2]|0;if(a)Tqa(a);k[b>>2]=0;return}function xT(a){a=a|0;var b=0;k[a>>2]=35512;b=k[a+8>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function yT(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=d+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(p);Ava(l);q=u;s=t;break}Yua(c);B=0;Ia(40,d|0,83514,16)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,e|0,l|0),u=B,B=0,!(u&1)):0){B=0;ya(424,e|0)|0;u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);u=f+56|0;v=f+4|0;k[f>>2]=27524;k[u>>2]=27544;B=0;wa(508,f+56|0,v|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(u);Qb(A|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[v>>2]=27560;C=f+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(c);Yua(C);Ava(v);D=G;E=F;break}Yua(c);B=0;F=Ia(40,f|0,85228,9)|0;G=B;B=0;do if((((((!(G&1)?(H=a+4|0,B=0,I=Xa(242,F|0,k[H>>2]|0)|0,J=B,B=0,!(J&1)):0)?(B=0,J=Ia(40,I|0,144166,2)|0,I=B,B=0,!(I&1)):0)?(B=0,I=ya(427,k[H>>2]|0)|0,H=B,B=0,!(H&1)):0)?(H=Lta(I)|0,B=0,K=Ia(40,J|0,I|0,H|0)|0,H=B,B=0,!(H&1)):0)?(B=0,Ia(40,K|0,145593,2)|0,K=B,B=0,!(K&1)):0)?(B=0,wa(510,g|0,v|0),K=B,B=0,!(K&1)):0){B=0;ya(424,g|0)|0;K=B;B=0;if(K&1){K=Rb()|0;H=Q;Yua(g);L=H;M=K;break}Yua(g);k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);K=h+56|0;H=h+4|0;k[h>>2]=27524;k[K>>2]=27544;B=0;wa(508,h+56|0,H|0);I=B;B=0;if(I&1){I=Rb()|0;N=Q;O=I;vva(K);Qb(O|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[K>>2]=27488;B=0;va(448,H|0);I=B;B=0;do if(I&1){J=Rb()|0;P=Q;R=J}else{k[H>>2]=27560;J=h+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,H|0,c|0);S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(c);Yua(J);Ava(H);P=T;R=S;break}Yua(c);B=0;S=Ia(40,h|0,83531,16)|0;T=B;B=0;do if(!(T&1)){B=0;U=Xa(242,S|0,k[a+12>>2]|0)|0;V=B;B=0;if(V&1){W=50;break}B=0;V=Ia(40,U|0,83548,1)|0;U=B;B=0;if(U&1){W=50;break}B=0;U=Xa(242,V|0,k[a+16>>2]|0)|0;V=B;B=0;if(V&1){W=50;break}B=0;Ia(40,U|0,149177,1)|0;U=B;B=0;if(U&1){W=50;break}B=0;wa(510,i|0,H|0);U=B;B=0;if(U&1){W=50;break}B=0;ya(424,i|0)|0;U=B;B=0;if(U&1){U=Rb()|0;V=Q;Yua(i);X=V;Y=U;break}else{Yua(i);k[h>>2]=27468;k[K>>2]=27488;k[H>>2]=27560;Yua(J);Ava(H);vva(K);r=b;return}}else W=50;while(0);if((W|0)==50){S=Rb()|0;X=Q;Y=S}k[h>>2]=27468;k[K>>2]=27488;k[H>>2]=27560;Yua(J);Ava(H);vva(K);Z=X;_=Y;Qb(_|0)}while(0);N=P;O=R;vva(K);Qb(O|0)}else W=47;while(0);if((W|0)==47){F=Rb()|0;L=Q;M=F}k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);Z=L;_=M;Qb(_|0)}while(0);z=D;A=E;vva(u);Qb(A|0)}else W=44;while(0);if((W|0)==44){t=Rb()|0;w=Q;x=t}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Z=w;_=x;Qb(_|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}function zT(a){a=a|0;return 565}function AT(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Qqa(20)|0;c=k[a+4>>2]|0;d=k[a+8>>2]|0;e=k[a+12>>2]|0;f=k[a+16>>2]|0;k[b>>2]=35512;k[b+4>>2]=c;k[b+12>>2]=e;k[b+16>>2]=f;c=ma(f,e)|0;B=0;e=ya(422,(c>>>0>536870911?-1:c<<3)|0)|0;f=B;B=0;if(f&1){g=Rb()|0;h=Q;Sqa(b);Qb(g|0)}k[b+8>>2]=e;if(!d){B=0;ib(283,142353,85118,137,142345);B=0;g=Rb()|0;h=Q;Sqa(b);Qb(g|0)}if(!c)return b|0;TEa(e|0,d|0,c<<3|0)|0;return b|0}function BT(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=53;i[d+1>>0]=2;i[d+2>>0]=0;i[d+3>>0]=0;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;d=a+12|0;n=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+16|0;p=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[n>>0]=p;i[n+1>>0]=p>>8;i[n+2>>0]=p>>16;i[n+3>>0]=p>>24;p=(k[b>>2]|0)+4|0;k[b>>2]=p;n=a+8|0;q=(k[n>>2]|0)==0;i[p>>0]=q&1;p=(k[b>>2]|0)+1|0;k[b>>2]=p;if(q){r=e;return}TEa(p|0,k[n>>2]|0,ma(k[d>>2]<<3,k[o>>2]|0)|0)|0;n=ma(k[d>>2]<<3,k[o>>2]|0)|0;k[b>>2]=(k[b>>2]|0)+n;r=e;return}case 2:{n=(k[a+8>>2]|0)==0;o=(k[c>>2]|0)+17|0;k[c>>2]=o;if(n){r=e;return}n=(ma(k[a+12>>2]<<3,k[a+16>>2]|0)|0)+o|0;k[c>>2]=n;r=e;return}case 1:{n=(k[b>>2]|0)+4|0;k[b>>2]=n;c=a+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[c>>0]=o;i[c+1>>0]=o>>8;i[c+2>>0]=o>>16;i[c+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;c=a+12|0;n=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[c>>0]=n;i[c+1>>0]=n>>8;i[c+2>>0]=n>>16;i[c+3>>0]=n>>24;c=(k[b>>2]|0)+4|0;k[b>>2]=c;o=a+16|0;d=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[o>>0]=d;i[o+1>>0]=d>>8;i[o+2>>0]=d>>16;i[o+3>>0]=d>>24;o=k[b>>2]|0;c=o+4|0;k[b>>2]=c;p=i[c>>0]|0;k[b>>2]=o+5;if(p&1){r=e;return}p=ma(d,n)|0;o=Rqa(p>>>0>536870911?-1:p<<3)|0;k[a+8>>2]=o;a=k[b>>2]|0;p=ma(n<<3,d)|0;TEa(o|0,a|0,p|0)|0;k[b>>2]=a+p;r=e;return}default:{e=g+56|0;p=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,p|0);a=B;B=0;if(a&1){a=Rb()|0;s=Q;t=a;vva(e);Qb(t|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,p|0);a=B;B=0;do if(a&1){b=Rb()|0;u=Q;v=b}else{k[p>>2]=27560;b=g+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,p|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;d=Q;Yua(f);Yua(b);Ava(p);u=d;v=o;break}Yua(f);B=0;o=Ia(40,g|0,143951,43)|0;d=B;B=0;if(!(d&1)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,h|0,83550,80);d=B;B=0;do if(!(d&1)){B=0;eb(502,j|0,149525,8);n=B;B=0;if(n&1){n=Rb()|0;c=Q;Yua(h);w=c;x=n;break}B=0;wa(510,m|0,p|0);n=B;B=0;if(n&1){n=Rb()|0;y=Q;z=n;A=1}else{B=0;ua(163,o|0,h|0,j|0,77,m|0);n=B;B=0;if(n&1)C=1;else{B=0;eb(503,o|0,1240,229);B=0;C=0}n=Rb()|0;c=Q;Yua(m);y=c;z=n;A=C}Yua(j);Yua(h);if(A){w=y;x=z}else{D=y;E=z;k[g>>2]=27468;k[e>>2]=27488;k[p>>2]=27560;Yua(b);Ava(p);vva(e);Qb(E|0)}}else{n=Rb()|0;w=Q;x=n}while(0);zb(o|0);D=w;E=x;k[g>>2]=27468;k[e>>2]=27488;k[p>>2]=27560;Yua(b);Ava(p);vva(e);Qb(E|0)}d=Rb()|0;D=Q;E=d;k[g>>2]=27468;k[e>>2]=27488;k[p>>2]=27560;Yua(b);Ava(p);vva(e);Qb(E|0)}while(0);s=u;t=v;vva(e);Qb(t|0)}}}function CT(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=k[a+12>>2]|0;f=a+16|0;g=ma(k[f>>2]|0,e)|0;h=Rqa(g>>>0>536870911?-1:g<<3)|0;i=k[a+8>>2]|0;if(!i)yb(142353,85118,137,142345);if(g){a=0;do{p[h+(a<<3)>>3]=+p[i+(a<<3)>>3];a=a+1|0}while((a|0)!=(g|0))}if(c)k[c>>2]=e;if(!d){k[b>>2]=h;return}k[d>>2]=k[f>>2];k[b>>2]=h;return}function DT(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,83631,18)|0;q=B;B=0;if((((((!(q&1)?(q=a+4|0,B=0,s=Xa(242,p|0,k[q>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,s|0,144166,2)|0,s=B,B=0,!(s&1)):0)?(B=0,s=ya(427,k[q>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(s)|0,B=0,t=Ia(40,p|0,s|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,t|0,84703,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,e|0,83550,80);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;p=Q;Yua(e);u=p;v=s;break}B=0;wa(510,g|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,q|0,e|0,f|0,100,g|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,q|0,1240,229);B=0;z=0}s=Rb()|0;p=Q;Yua(g);w=p;x=s;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(q|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function ET(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=a+8|0;f=k[e>>2]|0;if(f)Tqa(f);f=ma(d,c)|0;g=Rqa(f>>>0>536870911?-1:f<<3)|0;k[e>>2]=g;if(!b)yb(142353,85118,137,142345);if(f)TEa(g|0,b|0,f<<3|0)|0;k[a+12>>2]=c;k[a+16>>2]=d;return}function FT(a){a=a|0;return k[a+4>>2]|0}function GT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86577,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,44,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function HT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85796,25)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,45,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function IT(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85760,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,46,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function JT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,48,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function KT(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;b=r;r=r+192|0;d=b+176|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;b=e+56|0;i=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(b);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,86504,44)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,83650,90);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,49,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}while(0);l=o;m=p;vva(b);Qb(m|0)}function LT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86480,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,50,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function MT(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86450,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,51,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function NT(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,52,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function OT(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85695,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,54,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function PT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86364,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,55,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function QT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86343,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,56,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function RT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85673,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,57,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function ST(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85648,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,58,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function TT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85625,22)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,60,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function UT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85601,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,61,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function VT(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;c=e+56|0;i=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(c);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,85579,21)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,83650,90);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86106,8);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,62,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}while(0);l=o;m=p;vva(c);Qb(m|0)}function WT(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86273,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,63,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function XT(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86245,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,64,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function YT(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85543,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,65,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function ZT(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85514,28)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,67,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function _T(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85485,28)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,68,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function $T(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86169,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,69,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function aU(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86150,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,70,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function bU(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85465,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,71,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function cU(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85340,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,83650,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,72,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function dU(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function eU(a){a=a|0;k[a>>2]=35664;return}function fU(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0;k[a>>2]=35664;k[a+4>>2]=b;b=a+12|0;k[b>>2]=d;if(!d){k[a+8>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;return}g=d>>>0>1073741823?-1:d<<2;h=Rqa(g)|0;i=a+8|0;k[i>>2]=h;h=Rqa(g)|0;j=a+16|0;k[j>>2]=h;l=Rqa(g)|0;g=a+20|0;k[g>>2]=l;if((d|0)<=0)return;d=h;h=l;l=0;while(1){a=k[e+(l<<2)>>2]|0;m=k[f+(l<<2)>>2]|0;k[d+(l<<2)>>2]=a;k[h+(l<<2)>>2]=m;n=ma(m,a)|0;if(!n)o=0;else{a=Rqa(n>>>0>536870911?-1:n<<3)|0;m=k[c+(l<<2)>>2]|0;if(!m){q=6;break}else r=0;do{p[a+(r<<3)>>3]=+p[m+(r<<3)>>3];r=r+1|0}while((r|0)!=(n|0));o=a}k[(k[i>>2]|0)+(l<<2)>>2]=o;a=l+1|0;if((a|0)>=(k[b>>2]|0)){q=11;break}d=k[j>>2]|0;h=k[g>>2]|0;l=a}if((q|0)==6)yb(142353,85118,137,142345);else if((q|0)==11)return}function gU(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;k[a>>2]=35664;b=a+16|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+20|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+12|0;c=k[b>>2]|0;d=a+8|0;a=k[d>>2]|0;if((c|0)>0){e=a;f=c;c=0;while(1){g=k[e+(c<<2)>>2]|0;if(!g){h=f;i=e}else{Tqa(g);h=k[b>>2]|0;i=k[d>>2]|0}c=c+1|0;if((c|0)>=(h|0)){j=i;break}else{e=i;f=h}}}else j=a;if(!j){k[d>>2]=0;return}Tqa(j);k[d>>2]=0;return}function hU(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;k[a>>2]=35664;b=a+16|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+20|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+12|0;c=k[b>>2]|0;d=a+8|0;e=k[d>>2]|0;if((c|0)>0){f=e;g=c;c=0;while(1){h=k[f+(c<<2)>>2]|0;if(!h){i=g;j=f}else{Tqa(h);i=k[b>>2]|0;j=k[d>>2]|0}c=c+1|0;if((c|0)>=(i|0)){l=j;break}else{f=j;g=i}}}else l=e;if(!l){Sqa(a);return}Tqa(l);Sqa(a);return}function iU(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;b=r;r=r+624|0;c=b+604|0;d=b+456|0;e=b+592|0;f=b+304|0;g=b+440|0;h=b+152|0;i=b+288|0;j=b+16|0;l=b;m=d+56|0;n=d+4|0;k[d>>2]=27524;k[m>>2]=27544;B=0;wa(508,d+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;q=o;vva(m);Qb(q|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){s=Rb()|0;t=Q;u=s}else{k[n>>2]=27560;s=d+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,n|0,c|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);Yua(s);Ava(n);t=w;u=v;break}Yua(c);B=0;Ia(40,d|0,83763,21)|0;v=B;B=0;do if(!(v&1)?(B=0,wa(510,e|0,n|0),w=B,B=0,!(w&1)):0){B=0;ya(424,e|0)|0;w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(e);y=x;z=w;break}Yua(e);k[d>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);w=f+56|0;x=f+4|0;k[f>>2]=27524;k[w>>2]=27544;B=0;wa(508,f+56|0,x|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;D=A;vva(w);Qb(D|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[w>>2]=27488;B=0;va(448,x|0);A=B;B=0;do if(A&1){E=Rb()|0;F=Q;G=E}else{k[x>>2]=27560;E=f+36|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,x|0,c|0);H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(c);Yua(E);Ava(x);F=I;G=H;break}Yua(c);B=0;H=Ia(40,f|0,85228,9)|0;I=B;B=0;do if((((((!(I&1)?(J=a+4|0,B=0,K=Xa(242,H|0,k[J>>2]|0)|0,L=B,B=0,!(L&1)):0)?(B=0,L=Ia(40,K|0,144166,2)|0,K=B,B=0,!(K&1)):0)?(B=0,K=ya(427,k[J>>2]|0)|0,J=B,B=0,!(J&1)):0)?(J=Lta(K)|0,B=0,M=Ia(40,L|0,K|0,J|0)|0,J=B,B=0,!(J&1)):0)?(B=0,Ia(40,M|0,145593,2)|0,M=B,B=0,!(M&1)):0)?(B=0,wa(510,g|0,x|0),M=B,B=0,!(M&1)):0){B=0;ya(424,g|0)|0;M=B;B=0;if(M&1){M=Rb()|0;J=Q;Yua(g);N=J;O=M;break}Yua(g);k[f>>2]=27468;k[w>>2]=27488;k[x>>2]=27560;Yua(E);Ava(x);vva(w);M=h+56|0;J=h+4|0;k[h>>2]=27524;k[M>>2]=27544;B=0;wa(508,h+56|0,J|0);K=B;B=0;if(K&1){K=Rb()|0;P=Q;R=K;vva(M);Qb(R|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[M>>2]=27488;B=0;va(448,J|0);K=B;B=0;do if(K&1){L=Rb()|0;S=Q;T=L}else{k[J>>2]=27560;L=h+36|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,J|0,c|0);U=B;B=0;if(U&1){U=Rb()|0;V=Q;Yua(c);Yua(L);Ava(J);S=V;T=U;break}Yua(c);B=0;U=Ia(40,h|0,83785,15)|0;V=B;B=0;do if(V&1)W=61;else{B=0;X=Xa(242,U|0,k[a+12>>2]|0)|0;Y=B;B=0;if(Y&1){W=61;break}B=0;Ia(40,X|0,149177,1)|0;X=B;B=0;if(X&1){W=61;break}B=0;wa(510,i|0,J|0);X=B;B=0;if(X&1){W=61;break}B=0;ya(424,i|0)|0;X=B;B=0;if(X&1){X=Rb()|0;Y=Q;Yua(i);Z=Y;_=X;break}Yua(i);k[h>>2]=27468;k[M>>2]=27488;k[J>>2]=27560;Yua(L);Ava(J);vva(M);X=j+56|0;Y=j+4|0;k[j>>2]=27524;k[X>>2]=27544;B=0;wa(508,j+56|0,Y|0);$=B;B=0;if($&1){$=Rb()|0;aa=Q;ba=$;vva(X);Qb(ba|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[X>>2]=27488;B=0;va(448,Y|0);$=B;B=0;do if($&1){ca=Rb()|0;da=Q;ea=ca}else{k[Y>>2]=27560;ca=j+36|0;k[ca>>2]=0;k[ca+4>>2]=0;k[ca+8>>2]=0;k[ca+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Y|0,c|0);fa=B;B=0;if(fa&1){fa=Rb()|0;ga=Q;Yua(c);Yua(ca);Ava(Y);da=ga;ea=fa;break}Yua(c);B=0;fa=Ia(40,j|0,83801,18)|0;ga=B;B=0;do if(!(ga&1)){B=0;ha=Xa(245,fa|0,k[a+8>>2]|0)|0;ia=B;B=0;if(ia&1){W=64;break}B=0;Ia(40,ha|0,149177,1)|0;ha=B;B=0;if(ha&1){W=64;break}B=0;wa(510,l|0,Y|0);ha=B;B=0;if(ha&1){W=64;break}B=0;ya(424,l|0)|0;ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(l);ja=ia;ka=ha;break}else{Yua(l);k[j>>2]=27468;k[X>>2]=27488;k[Y>>2]=27560;Yua(ca);Ava(Y);vva(X);r=b;return}}else W=64;while(0);if((W|0)==64){fa=Rb()|0;ja=Q;ka=fa}k[j>>2]=27468;k[X>>2]=27488;k[Y>>2]=27560;Yua(ca);Ava(Y);vva(X);la=ja;ma=ka;Qb(ma|0)}while(0);aa=da;ba=ea;vva(X);Qb(ba|0)}while(0);if((W|0)==61){U=Rb()|0;Z=Q;_=U}k[h>>2]=27468;k[M>>2]=27488;k[J>>2]=27560;Yua(L);Ava(J);vva(M);la=Z;ma=_;Qb(ma|0)}while(0);P=S;R=T;vva(M);Qb(R|0)}else W=58;while(0);if((W|0)==58){H=Rb()|0;N=Q;O=H}k[f>>2]=27468;k[w>>2]=27488;k[x>>2]=27560;Yua(E);Ava(x);vva(w);la=N;ma=O;Qb(ma|0)}while(0);C=F;D=G;vva(w);Qb(D|0)}else W=55;while(0);if((W|0)==55){v=Rb()|0;y=Q;z=v}k[d>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);la=y;ma=z;Qb(ma|0)}while(0);p=t;q=u;vva(m);Qb(q|0)}function jU(a){a=a|0;return 564}function kU(a){a=a|0;var b=0;b=Qqa(24)|0;B=0;La(31,b|0,k[a+4>>2]|0,k[a+8>>2]|0,k[a+12>>2]|0,k[a+16>>2]|0,k[a+20>>2]|0);a=B;B=0;if(a&1){a=Rb()|0;Sqa(b);Qb(a|0)}else return b|0;return 0}function lU(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0;e=r;r=r+528|0;f=e+516|0;g=e+368|0;h=e+504|0;j=e+356|0;m=e+344|0;n=e+208|0;o=e+60|0;p=e+48|0;q=e+36|0;s=e+72|0;t=e+24|0;u=e+12|0;v=e;w=(d|0)==0;a:do if(w){x=k[b>>2]|0;i[x>>0]=52;i[x+1>>0]=2;i[x+2>>0]=0;i[x+3>>0]=0;x=(k[b>>2]|0)+4|0;k[b>>2]=x;y=a+4|0;z=l[y>>0]|l[y+1>>0]<<8|l[y+2>>0]<<16|l[y+3>>0]<<24;i[x>>0]=z;i[x+1>>0]=z>>8;i[x+2>>0]=z>>16;i[x+3>>0]=z>>24;z=(k[b>>2]|0)+4|0;k[b>>2]=z;x=a+12|0;y=l[x>>0]|l[x+1>>0]<<8|l[x+2>>0]<<16|l[x+3>>0]<<24;i[z>>0]=y;i[z+1>>0]=y>>8;i[z+2>>0]=y>>16;i[z+3>>0]=y>>24;k[b>>2]=(k[b>>2]|0)+4;A=x}else switch(d|0){case 2:{k[c>>2]=(k[c>>2]|0)+12;A=a+12|0;break a;break}case 1:{x=(k[b>>2]|0)+4|0;k[b>>2]=x;y=a+4|0;z=l[x>>0]|l[x+1>>0]<<8|l[x+2>>0]<<16|l[x+3>>0]<<24;i[y>>0]=z;i[y+1>>0]=z>>8;i[y+2>>0]=z>>16;i[y+3>>0]=z>>24;z=(k[b>>2]|0)+4|0;k[b>>2]=z;y=a+12|0;x=l[z>>0]|l[z+1>>0]<<8|l[z+2>>0]<<16|l[z+3>>0]<<24;i[y>>0]=x;i[y+1>>0]=x>>8;i[y+2>>0]=x>>16;i[y+3>>0]=x>>24;k[b>>2]=(k[b>>2]|0)+4;A=y;break a;break}default:{y=g+56|0;x=g+4|0;k[g>>2]=27524;k[y>>2]=27544;B=0;wa(508,g+56|0,x|0);z=B;B=0;if(z&1){z=Rb()|0;C=Q;D=z;vva(y);Qb(D|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[y>>2]=27488;B=0;va(448,x|0);z=B;B=0;do if(z&1){E=Rb()|0;F=Q;G=E}else{k[x>>2]=27560;E=g+36|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,x|0,f|0);H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(f);Yua(E);Ava(x);F=I;G=H;break}Yua(f);B=0;H=Ia(40,g|0,143951,43)|0;I=B;B=0;b:do if(!(I&1)?(B=0,Xa(239,H|0,0)|0,J=B,B=0,!(J&1)):0){J=Ab(20)|0;B=0;eb(502,h|0,83820,85);K=B;B=0;do if(!(K&1)){B=0;eb(502,j|0,149525,8);L=B;B=0;if(L&1){L=Rb()|0;M=Q;Yua(h);N=M;O=L;break}B=0;wa(510,m|0,x|0);L=B;B=0;if(L&1){L=Rb()|0;P=Q;R=L;S=1}else{B=0;ua(163,J|0,h|0,j|0,126,m|0);L=B;B=0;if(L&1)T=1;else{B=0;eb(503,J|0,1240,229);B=0;T=0}L=Rb()|0;M=Q;Yua(m);P=M;R=L;S=T}Yua(j);Yua(h);if(S){N=P;O=R}else{U=P;V=R;break b}}else{L=Rb()|0;N=Q;O=L}while(0);zb(J|0);U=N;V=O}else W=18;while(0);if((W|0)==18){H=Rb()|0;U=Q;V=H}k[g>>2]=27468;k[y>>2]=27488;k[x>>2]=27560;Yua(E);Ava(x);vva(y);X=U;Y=V;Qb(Y|0)}while(0);C=F;D=G;vva(y);Qb(D|0)}}while(0);D=k[A>>2]|0;if(!D){k[a+8>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;r=e;return}G=a+16|0;F=(k[G>>2]|0)==0;c:do if(w){i[k[b>>2]>>0]=F&1;C=(k[b>>2]|0)+1|0;k[b>>2]=C;if(F)Z=C;else{TEa(C|0,k[G>>2]|0,k[A>>2]<<2|0)|0;C=(k[b>>2]|0)+(k[A>>2]<<2)|0;k[b>>2]=C;Z=C}C=a+20|0;V=(k[C>>2]|0)==0;i[Z>>0]=V&1;U=(k[b>>2]|0)+1|0;k[b>>2]=U;if(V){_=0;$=C}else{TEa(U|0,k[C>>2]|0,k[A>>2]<<2|0)|0;k[b>>2]=(k[b>>2]|0)+(k[A>>2]<<2);_=0;$=C}}else switch(d|0){case 2:{C=(k[c>>2]|0)+1|0;k[c>>2]=C;if(F)aa=C;else{U=C+(k[A>>2]<<2)|0;k[c>>2]=U;aa=U}U=a+20|0;C=(k[U>>2]|0)==0;V=aa+1|0;k[c>>2]=V;if(C){_=0;$=U;break c}k[c>>2]=V+(k[A>>2]<<2);_=0;$=U;break c;break}case 1:{U=k[b>>2]|0;V=i[U>>0]|0;C=U+1|0;k[b>>2]=C;if(!(V&1)){V=Rqa(D>>>0>1073741823?-1:D<<2)|0;k[G>>2]=V;U=k[b>>2]|0;g=D<<2;TEa(V|0,U|0,g|0)|0;V=U+g|0;k[b>>2]=V;ba=V}else ba=C;C=a+20|0;V=i[ba>>0]|0;k[b>>2]=ba+1;if(!(V&1)){V=Rqa(D>>>0>1073741823?-1:D<<2)|0;k[C>>2]=V;g=k[b>>2]|0;U=D<<2;TEa(V|0,g|0,U|0)|0;k[b>>2]=g+U}U=Rqa(D>>>0>1073741823?-1:D<<2)|0;k[a+8>>2]=U;_=1;$=C;break c;break}default:{C=n+56|0;U=n+4|0;k[n>>2]=27524;k[C>>2]=27544;B=0;wa(508,n+56|0,U|0);g=B;B=0;if(g&1){g=Rb()|0;ca=Q;da=g;vva(C);Qb(da|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[C>>2]=27488;B=0;va(448,U|0);g=B;B=0;do if(g&1){V=Rb()|0;ea=Q;fa=V}else{k[U>>2]=27560;V=n+36|0;k[V>>2]=0;k[V+4>>2]=0;k[V+8>>2]=0;k[V+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,U|0,f|0);O=B;B=0;if(O&1){O=Rb()|0;N=Q;Yua(f);Yua(V);Ava(U);ea=N;fa=O;break}Yua(f);B=0;O=Ia(40,n|0,143951,43)|0;N=B;B=0;d:do if(!(N&1)?(B=0,Xa(239,O|0,0)|0,R=B,B=0,!(R&1)):0){R=Ab(20)|0;B=0;eb(502,o|0,83820,85);P=B;B=0;do if(!(P&1)){B=0;eb(502,p|0,149525,8);S=B;B=0;if(S&1){S=Rb()|0;h=Q;Yua(o);ga=h;ha=S;break}B=0;wa(510,q|0,U|0);S=B;B=0;if(S&1){S=Rb()|0;ia=Q;ja=1;ka=S}else{B=0;ua(163,R|0,o|0,p|0,131,q|0);S=B;B=0;if(S&1)la=1;else{B=0;eb(503,R|0,1240,229);B=0;la=0}S=Rb()|0;h=Q;Yua(q);ia=h;ja=la;ka=S}Yua(p);Yua(o);if(ja){ga=ia;ha=ka}else{na=ia;oa=ka;break d}}else{S=Rb()|0;ga=Q;ha=S}while(0);zb(R|0);na=ga;oa=ha}else W=49;while(0);if((W|0)==49){O=Rb()|0;na=Q;oa=O}k[n>>2]=27468;k[C>>2]=27488;k[U>>2]=27560;Yua(V);Ava(U);vva(C);X=na;Y=oa;Qb(Y|0)}while(0);ca=ea;da=fa;vva(C);Qb(da|0)}}while(0);if((k[A>>2]|0)<=0){r=e;return}da=a+8|0;a=(d|0)==2;d=0;e:while(1){fa=(k[(k[da>>2]|0)+(d<<2)>>2]|0)==0;do if(w){i[k[b>>2]>>0]=fa&1;ea=(k[b>>2]|0)+1|0;k[b>>2]=ea;if(!fa){TEa(ea|0,k[(k[da>>2]|0)+(d<<2)>>2]|0,ma(k[(k[G>>2]|0)+(d<<2)>>2]<<3,k[(k[$>>2]|0)+(d<<2)>>2]|0)|0)|0;ea=ma(k[(k[G>>2]|0)+(d<<2)>>2]<<3,k[(k[$>>2]|0)+(d<<2)>>2]|0)|0;k[b>>2]=(k[b>>2]|0)+ea}}else{if(a){ea=(k[c>>2]|0)+1|0;k[c>>2]=ea;if(fa)break;ca=(ma(k[(k[G>>2]|0)+(d<<2)>>2]<<3,k[(k[$>>2]|0)+(d<<2)>>2]|0)|0)+ea|0;k[c>>2]=ca;break}if(!_)break e;ca=k[b>>2]|0;ea=i[ca>>0]|0;k[b>>2]=ca+1;if(!(ea&1)){ea=ma(k[(k[$>>2]|0)+(d<<2)>>2]|0,k[(k[G>>2]|0)+(d<<2)>>2]|0)|0;ca=Rqa(ea>>>0>536870911?-1:ea<<3)|0;k[(k[da>>2]|0)+(d<<2)>>2]=ca;TEa(k[(k[da>>2]|0)+(d<<2)>>2]|0,k[b>>2]|0,ma(k[(k[G>>2]|0)+(d<<2)>>2]<<3,k[(k[$>>2]|0)+(d<<2)>>2]|0)|0)|0;ca=ma(k[(k[G>>2]|0)+(d<<2)>>2]<<3,k[(k[$>>2]|0)+(d<<2)>>2]|0)|0;k[b>>2]=(k[b>>2]|0)+ca}}while(0);d=d+1|0;if((d|0)>=(k[A>>2]|0)){W=104;break}}if((W|0)==104){r=e;return}e=s+56|0;A=s+4|0;k[s>>2]=27524;k[e>>2]=27544;B=0;wa(508,s+56|0,A|0);d=B;B=0;if(d&1){d=Rb()|0;pa=Q;qa=d;vva(e);Qb(qa|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[e>>2]=27488;B=0;va(448,A|0);d=B;B=0;do if(d&1){b=Rb()|0;ra=Q;sa=b}else{k[A>>2]=27560;b=s+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[s+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,A|0,f|0);$=B;B=0;if($&1){$=Rb()|0;G=Q;Yua(f);Yua(b);Ava(A);ra=G;sa=$;break}Yua(f);B=0;$=Ia(40,s|0,143951,43)|0;G=B;B=0;f:do if(!(G&1)?(B=0,Xa(239,$|0,0)|0,da=B,B=0,!(da&1)):0){da=Ab(20)|0;B=0;eb(502,t|0,83820,85);_=B;B=0;do if(!(_&1)){B=0;eb(502,u|0,149525,8);c=B;B=0;if(c&1){c=Rb()|0;a=Q;Yua(t);ta=a;xa=c;break}B=0;wa(510,v|0,A|0);c=B;B=0;if(c&1){c=Rb()|0;ya=1;za=Q;Aa=c}else{B=0;ua(163,da|0,t|0,u|0,135,v|0);c=B;B=0;if(c&1)Ba=1;else{B=0;eb(503,da|0,1240,229);B=0;Ba=0}c=Rb()|0;a=Q;Yua(v);ya=Ba;za=a;Aa=c}Yua(u);Yua(t);if(ya){ta=za;xa=Aa}else{Ca=za;Da=Aa;break f}}else{c=Rb()|0;ta=Q;xa=c}while(0);zb(da|0);Ca=ta;Da=xa}else W=90;while(0);if((W|0)==90){$=Rb()|0;Ca=Q;Da=$}k[s>>2]=27468;k[e>>2]=27488;k[A>>2]=27560;Yua(b);Ava(A);vva(e);X=Ca;Y=Da;Qb(Y|0)}while(0);pa=ra;qa=sa;vva(e);Qb(qa|0)}function mU(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;f=k[a+12>>2]|0;a:do if(f){g=f>>>0>1073741823?-1:f<<2;h=Rqa(g)|0;i=Rqa(g)|0;j=Rqa(g)|0;g=k[a+16>>2]|0;if(!g)yb(142353,85118,137,142345);else l=0;do{k[i+(l<<2)>>2]=k[g+(l<<2)>>2];l=l+1|0}while((l|0)!=(f|0));m=k[a+20>>2]|0;if(!m)yb(142353,85118,137,142345);else n=0;do{k[j+(n<<2)>>2]=k[m+(n<<2)>>2];n=n+1|0}while((n|0)!=(f|0));if((f|0)>0){o=a+8|0;q=0;while(1){r=ma(k[m+(q<<2)>>2]|0,k[g+(q<<2)>>2]|0)|0;if(!r)s=0;else{t=k[(k[o>>2]|0)+(q<<2)>>2]|0;u=Rqa(r>>>0>536870911?-1:r<<3)|0;if(!t)break;else v=0;do{p[u+(v<<3)>>3]=+p[t+(v<<3)>>3];v=v+1|0}while((v|0)!=(r|0));s=u}k[h+(q<<2)>>2]=s;q=q+1|0;if((q|0)>=(f|0)){w=h;x=i;y=j;break a}}yb(142353,85118,137,142345)}else{w=h;x=i;y=j}}else{w=0;x=0;y=0}while(0);if(c)k[c>>2]=f;if(d)k[d>>2]=x;if(!e){k[b>>2]=w;return}k[e>>2]=y;k[b>>2]=w;return}function nU(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0;f=a+16|0;g=k[f>>2]|0;if(g)Tqa(g);k[f>>2]=0;g=a+20|0;h=k[g>>2]|0;if(h)Tqa(h);k[g>>2]=0;h=a+12|0;i=k[h>>2]|0;j=a+8|0;a=k[j>>2]|0;if((i|0)>0){l=a;m=i;i=0;while(1){n=k[l+(i<<2)>>2]|0;if(!n){o=m;q=l}else{Tqa(n);o=k[h>>2]|0;q=k[j>>2]|0}i=i+1|0;if((i|0)>=(o|0)){r=q;break}else{l=q;m=o}}}else r=a;if(r)Tqa(r);k[h>>2]=c;r=c>>>0>1073741823?-1:c<<2;a=Rqa(r)|0;k[j>>2]=a;a=Rqa(r)|0;k[f>>2]=a;f=Rqa(r)|0;k[g>>2]=f;if(!d)yb(142353,85118,137,142345);g=(c|0)==0;if(!g){r=0;do{k[a+(r<<2)>>2]=k[d+(r<<2)>>2];r=r+1|0}while((r|0)!=(c|0))}if(!e)yb(142353,85118,137,142345);if(g)return;else s=0;do{k[f+(s<<2)>>2]=k[e+(s<<2)>>2];s=s+1|0}while((s|0)!=(c|0));c=k[h>>2]|0;if((c|0)>0)t=0;else return;while(1){h=k[b+(t<<2)>>2]|0;s=ma(k[e+(t<<2)>>2]|0,k[d+(t<<2)>>2]|0)|0;f=Rqa(s>>>0>536870911?-1:s<<3)|0;g=f;if(!h){u=22;break}if(s){r=0;do{p[f+(r<<3)>>3]=+p[h+(r<<3)>>3];r=r+1|0}while((r|0)!=(s|0))}k[(k[j>>2]|0)+(t<<2)>>2]=g;t=t+1|0;if((t|0)>=(c|0)){u=25;break}}if((u|0)==22)yb(142353,85118,137,142345);else if((u|0)==25)return}function oU(a){a=a|0;return k[a+4>>2]|0}function pU(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84532,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,45,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function qU(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84507,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,46,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function rU(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84472,34)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,47,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function sU(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84472,34)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,48,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function tU(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84445,26)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,49,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function uU(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;b=r;r=r+192|0;d=b+176|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;b=e+56|0;i=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(b);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,86504,44)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,83927,95);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,50,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}while(0);l=o;m=p;vva(b);Qb(m|0)}function vU(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84422,22)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,51,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function wU(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84393,28)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,52,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function xU(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84360,32)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,53,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function yU(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84360,32)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,54,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function zU(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84340,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,56,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function AU(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84320,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,57,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function BU(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84299,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,58,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function CU(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85648,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,59,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function DU(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84277,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,61,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function EU(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84254,22)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,62,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function FU(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;c=e+56|0;i=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(c);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,84233,20)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,83927,95);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86106,8);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,63,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}while(0);l=o;m=p;vva(c);Qb(m|0)}function GU(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84212,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,64,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function HU(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84185,26)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,65,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function IU(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84150,34)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,66,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function JU(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84115,34)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,67,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function KU(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84087,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,68,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function LU(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84059,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,69,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function MU(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84041,17)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,70,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function NU(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84023,17)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,71,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function OU(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,85058,19)|0;q=B;B=0;if((((((!(q&1)?(q=a+4|0,B=0,s=Xa(242,p|0,k[q>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,s|0,144166,2)|0,s=B,B=0,!(s&1)):0)?(B=0,s=ya(427,k[q>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(s)|0,B=0,t=Ia(40,p|0,s|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,t|0,83906,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,e|0,83927,95);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);s=B;B=0;if(s&1){s=Rb()|0;p=Q;Yua(e);u=p;v=s;break}B=0;wa(510,g|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,q|0,e|0,f|0,72,g|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,q|0,1240,229);B=0;z=0}s=Rb()|0;p=Q;Yua(g);w=p;x=s;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(q|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function PU(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function QU(a){a=a|0;k[a>>2]=35816;return}function RU(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;k[a>>2]=35816;k[a+4>>2]=b;k[a+12>>2]=d;if(!d){k[a+8>>2]=0;return}b=Rqa(d>>>0>536870911?-1:d<<3)|0;k[a+8>>2]=b;if(!c)yb(142353,85118,137,142345);TEa(b|0,c|0,d<<3|0)|0;return}function SU(a){a=a|0;var b=0;k[a>>2]=35816;b=a+8|0;a=k[b>>2]|0;if(a)Tqa(a);k[b>>2]=0;return}function TU(a){a=a|0;var b=0;k[a>>2]=35816;b=k[a+8>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function UU(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;b=r;r=r+176|0;c=b+152|0;d=b+16|0;e=b;f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);k[d+(k[(k[d>>2]|0)+-12>>2]|0)+12>>2]=22;B=0;o=Ia(40,d|0,84570,18)|0;p=B;B=0;if((((((!(p&1)?(k[o+(k[(k[o>>2]|0)+-12>>2]|0)+12>>2]=35,p=o+(k[(k[o>>2]|0)+-12>>2]|0)+4|0,k[p>>2]=k[p>>2]&-177|32,B=0,p=ya(427,k[a+4>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(p)|0,B=0,s=Ia(40,o|0,p|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,s|0,84589,7)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Xa(242,q|0,k[a+12>>2]|0)|0,q=B,B=0,!(q&1)):0)?(B=0,Ia(40,s|0,149177,1)|0,s=B,B=0,!(s&1)):0)?(B=0,wa(510,e|0,g|0),s=B,B=0,!(s&1)):0){B=0;ya(424,e|0)|0;s=B;B=0;if(!(s&1)){Yua(e);k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);r=b;return}s=Rb()|0;q=Q;Yua(e);t=q;u=s;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(u|0)}s=Rb()|0;t=Q;u=s;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(u|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function VU(a){a=a|0;return 567}function WU(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Qqa(16)|0;c=k[a+4>>2]|0;d=k[a+8>>2]|0;e=k[a+12>>2]|0;k[b>>2]=35816;k[b+4>>2]=c;k[b+12>>2]=e;if(!e){k[b+8>>2]=0;return b|0}B=0;c=ya(422,(e>>>0>536870911?-1:e<<3)|0)|0;a=B;B=0;if(a&1){f=Rb()|0;g=Q;Sqa(b);Qb(f|0)}k[b+8>>2]=c;if(!d){B=0;ib(283,142353,85118,137,142345);B=0;f=Rb()|0;g=Q;Sqa(b);Qb(f|0)}else{TEa(c|0,d|0,e<<3|0)|0;return b|0}return 0}function XU(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=55;i[d+1>>0]=2;i[d+2>>0]=0;i[d+3>>0]=0;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;d=a+12|0;n=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+8|0;p=(k[o>>2]|0)==0;i[n>>0]=p&1;n=(k[b>>2]|0)+1|0;k[b>>2]=n;if(p){r=e;return}TEa(n|0,k[o>>2]|0,k[d>>2]<<3|0)|0;k[b>>2]=(k[b>>2]|0)+(k[d>>2]<<3);r=e;return}case 2:{d=(k[a+8>>2]|0)==0;o=(k[c>>2]|0)+13|0;k[c>>2]=o;if(d){r=e;return}k[c>>2]=o+(k[a+12>>2]<<3);r=e;return}case 1:{o=(k[b>>2]|0)+4|0;k[b>>2]=o;c=a+4|0;d=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[c>>0]=d;i[c+1>>0]=d>>8;i[c+2>>0]=d>>16;i[c+3>>0]=d>>24;d=(k[b>>2]|0)+4|0;k[b>>2]=d;c=a+12|0;o=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[c>>0]=o;i[c+1>>0]=o>>8;i[c+2>>0]=o>>16;i[c+3>>0]=o>>24;c=k[b>>2]|0;d=c+4|0;k[b>>2]=d;n=i[d>>0]|0;k[b>>2]=c+5;if(n&1){r=e;return}n=Rqa(o>>>0>536870911?-1:o<<3)|0;k[a+8>>2]=n;a=k[b>>2]|0;c=o<<3;TEa(n|0,a|0,c|0)|0;k[b>>2]=a+c;r=e;return}default:{e=g+56|0;c=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,c|0);a=B;B=0;if(a&1){a=Rb()|0;q=Q;s=a;vva(e);Qb(s|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,c|0);a=B;B=0;do if(a&1){b=Rb()|0;t=Q;u=b}else{k[c>>2]=27560;b=g+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,c|0,f|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;Yua(f);Yua(b);Ava(c);t=o;u=n;break}Yua(f);B=0;n=Ia(40,g|0,143951,43)|0;o=B;B=0;if(!(o&1)?(B=0,Xa(239,n|0,0)|0,n=B,B=0,!(n&1)):0){n=Ab(20)|0;B=0;eb(502,h|0,84597,80);o=B;B=0;do if(!(o&1)){B=0;eb(502,j|0,149525,8);d=B;B=0;if(d&1){d=Rb()|0;p=Q;Yua(h);v=p;w=d;break}B=0;wa(510,m|0,c|0);d=B;B=0;if(d&1){d=Rb()|0;x=Q;y=d;z=1}else{B=0;ua(163,n|0,h|0,j|0,69,m|0);d=B;B=0;if(d&1)A=1;else{B=0;eb(503,n|0,1240,229);B=0;A=0}d=Rb()|0;p=Q;Yua(m);x=p;y=d;z=A}Yua(j);Yua(h);if(z){v=x;w=y}else{C=x;D=y;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(b);Ava(c);vva(e);Qb(D|0)}}else{d=Rb()|0;v=Q;w=d}while(0);zb(n|0);C=v;D=w;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(b);Ava(c);vva(e);Qb(D|0)}o=Rb()|0;C=Q;D=o;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(b);Ava(c);vva(e);Qb(D|0)}while(0);q=t;s=u;vva(e);Qb(s|0)}}}function YU(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=k[a+12>>2]|0;e=Rqa(d>>>0>536870911?-1:d<<3)|0;f=k[a+8>>2]|0;if(!f)yb(142353,85118,137,142345);if(d){a=0;do{p[e+(a<<3)>>3]=+p[f+(a<<3)>>3];a=a+1|0}while((a|0)!=(d|0))}if(!c){k[b>>2]=e;return}k[c>>2]=d;k[b>>2]=e;return}function ZU(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=k[a+12>>2]|0;f=Rqa(e>>>0>536870911?-1:e<<3)|0;g=k[a+8>>2]|0;if(!g)yb(142353,85118,137,142345);if(e){a=0;do{p[f+(a<<3)>>3]=+p[g+(a<<3)>>3];a=a+1|0}while((a|0)!=(e|0))}if(c)k[c>>2]=e;if(!d){k[b>>2]=f;return}k[d>>2]=1;k[b>>2]=f;return}function _U(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,84678,24)|0;q=B;B=0;if((((((!(q&1)?(q=a+4|0,B=0,s=Xa(242,p|0,k[q>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,s|0,144166,2)|0,s=B,B=0,!(s&1)):0)?(B=0,s=ya(427,k[q>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(s)|0,B=0,t=Ia(40,p|0,s|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,t|0,84703,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,e|0,84597,80);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;p=Q;Yua(e);u=p;v=s;break}B=0;wa(510,g|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,q|0,e|0,f|0,109,g|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,q|0,1240,229);B=0;z=0}s=Rb()|0;p=Q;Yua(g);w=p;x=s;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(q|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function $U(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=a+8|0;e=k[d>>2]|0;if(e)Tqa(e);e=Rqa(c>>>0>536870911?-1:c<<3)|0;k[d>>2]=e;if(!b)yb(142353,85118,137,142345);if(!c){f=a+12|0;k[f>>2]=c;return}TEa(e|0,b|0,c<<3|0)|0;f=a+12|0;k[f>>2]=c;return}function aV(a,b,c){a=a|0;b=b|0;c=c|0;if(c)k[c>>2]=k[a+12>>2];k[b>>2]=k[a+8>>2];return}function bV(a){a=a|0;return k[a+4>>2]|0}function cV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86577,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,43,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function dV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85796,25)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,44,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function eV(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85760,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,46,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function fV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,47,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function gV(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;b=r;r=r+192|0;d=b+176|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;b=e+56|0;i=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(b);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,86504,44)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,84735,90);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,48,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}while(0);l=o;m=p;vva(b);Qb(m|0)}function hV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86480,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,49,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function iV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86450,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,50,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function jV(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85695,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,53,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function kV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86364,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,54,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function lV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86343,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,55,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function mV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85673,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,56,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function nV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85648,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,57,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function oV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85625,22)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,59,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function pV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85601,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,60,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function qV(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;c=e+56|0;i=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(c);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,85579,21)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,84735,90);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86106,8);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,61,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}while(0);l=o;m=p;vva(c);Qb(m|0)}function rV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86273,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,62,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function sV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86245,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,63,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function tV(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,84826,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,65,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}
+function uV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85485,28)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,66,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function vV(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85485,28)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,67,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function wV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86169,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,68,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function xV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86150,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,69,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function yV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85465,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,70,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function zV(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85340,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,84735,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,71,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function AV(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function BV(a){a=a|0;k[a>>2]=35968;return}function CV(a,b,c){a=a|0;b=b|0;c=c|0;k[a>>2]=35968;k[a+4>>2]=b;b=Rqa((Lta(c)|0)+1|0)|0;k[a+8>>2]=b;a=(Lta(c)|0)+1|0;if(!c)yb(142353,85118,137,142345);if(!a)return;TEa(b|0,c|0,a|0)|0;return}function DV(a){a=a|0;var b=0;k[a>>2]=35968;b=a+8|0;a=k[b>>2]|0;if(a)Tqa(a);k[b>>2]=0;return}function EV(a){a=a|0;var b=0;k[a>>2]=35968;b=k[a+8>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function FV(a){a=a|0;GV(a);return}function GV(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;b=r;r=r+176|0;c=b+152|0;d=b+16|0;e=b;f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);k[d+(k[(k[d>>2]|0)+-12>>2]|0)+12>>2]=22;B=0;o=Ia(40,d|0,84876,15)|0;p=B;B=0;if((((((!(p&1)?(k[o+(k[(k[o>>2]|0)+-12>>2]|0)+12>>2]=35,p=o+(k[(k[o>>2]|0)+-12>>2]|0)+4|0,k[p>>2]=k[p>>2]&-177|32,B=0,p=ya(427,k[a+4>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(p)|0,B=0,s=Ia(40,o|0,p|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,s|0,149175,1)|0,s=B,B=0,!(s&1)):0)?(s=k[a+8>>2]|0,p=Lta(s)|0,B=0,o=Ia(40,q|0,s|0,p|0)|0,p=B,B=0,!(p&1)):0)?(B=0,Ia(40,o|0,149177,1)|0,o=B,B=0,!(o&1)):0)?(B=0,wa(510,e|0,g|0),o=B,B=0,!(o&1)):0){B=0;ya(424,e|0)|0;o=B;B=0;if(!(o&1)){Yua(e);k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);r=b;return}o=Rb()|0;p=Q;Yua(e);t=p;u=o;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(u|0)}o=Rb()|0;t=Q;u=o;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(u|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function HV(a){a=a|0;return 618}function IV(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Qqa(12)|0;c=k[a+4>>2]|0;d=k[a+8>>2]|0;k[b>>2]=35968;k[b+4>>2]=c;c=(Lta(d)|0)+1|0;B=0;a=ya(422,c|0)|0;c=B;B=0;if(c&1){e=Rb()|0;f=Q;Sqa(b);Qb(e|0)}k[b+8>>2]=a;c=(Lta(d)|0)+1|0;if(!d){B=0;ib(283,142353,85118,137,142345);B=0;e=Rb()|0;f=Q;Sqa(b);Qb(e|0)}if(!c)return b|0;TEa(a|0,d|0,c|0)|0;return b|0}function JV(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;if(!(d&-3))n=(Lta(k[a+8>>2]|0)|0)+1|0;else n=0;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=106;i[d+1>>0]=2;i[d+2>>0]=0;i[d+3>>0]=0;d=(k[b>>2]|0)+4|0;k[b>>2]=d;o=a+4|0;p=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[d>>0]=p;i[d+1>>0]=p>>8;i[d+2>>0]=p>>16;i[d+3>>0]=p>>24;p=(k[b>>2]|0)+4|0;k[b>>2]=p;i[p>>0]=n;i[p+1>>0]=n>>8;i[p+2>>0]=n>>16;i[p+3>>0]=n>>24;p=(k[b>>2]|0)+4|0;k[b>>2]=p;d=a+8|0;o=(k[d>>2]|0)==0;i[p>>0]=o&1;p=(k[b>>2]|0)+1|0;k[b>>2]=p;if(o){r=e;return}TEa(p|0,k[d>>2]|0,n|0)|0;k[b>>2]=(k[b>>2]|0)+n;r=e;return}case 2:{d=(k[a+8>>2]|0)==0;p=(k[c>>2]|0)+13|0;k[c>>2]=p;if(d){r=e;return}k[c>>2]=p+n;r=e;return}case 1:{n=(k[b>>2]|0)+4|0;k[b>>2]=n;p=a+4|0;c=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[p>>0]=c;i[p+1>>0]=c>>8;i[p+2>>0]=c>>16;i[p+3>>0]=c>>24;c=k[b>>2]|0;p=c+4|0;k[b>>2]=p;n=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;p=c+8|0;k[b>>2]=p;d=i[p>>0]|0;k[b>>2]=c+9;if(d&1){r=e;return}d=Rqa(n)|0;k[a+8>>2]=d;a=k[b>>2]|0;TEa(d|0,a|0,n|0)|0;k[b>>2]=a+n;r=e;return}default:{e=g+56|0;n=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,n|0);a=B;B=0;if(a&1){a=Rb()|0;q=Q;s=a;vva(e);Qb(s|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,n|0);a=B;B=0;do if(a&1){b=Rb()|0;t=Q;u=b}else{k[n>>2]=27560;b=g+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,n|0,f|0);d=B;B=0;if(d&1){d=Rb()|0;c=Q;Yua(f);Yua(b);Ava(n);t=c;u=d;break}Yua(f);B=0;d=Ia(40,g|0,143951,43)|0;c=B;B=0;if(!(c&1)?(B=0,Xa(239,d|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,h|0,84892,77);c=B;B=0;do if(!(c&1)){B=0;eb(502,j|0,149525,8);p=B;B=0;if(p&1){p=Rb()|0;o=Q;Yua(h);v=o;w=p;break}B=0;wa(510,m|0,n|0);p=B;B=0;if(p&1){p=Rb()|0;x=Q;y=p;z=1}else{B=0;ua(163,d|0,h|0,j|0,64,m|0);p=B;B=0;if(p&1)A=1;else{B=0;eb(503,d|0,1240,229);B=0;A=0}p=Rb()|0;o=Q;Yua(m);x=o;y=p;z=A}Yua(j);Yua(h);if(z){v=x;w=y}else{C=x;D=y;k[g>>2]=27468;k[e>>2]=27488;k[n>>2]=27560;Yua(b);Ava(n);vva(e);Qb(D|0)}}else{p=Rb()|0;v=Q;w=p}while(0);zb(d|0);C=v;D=w;k[g>>2]=27468;k[e>>2]=27488;k[n>>2]=27560;Yua(b);Ava(n);vva(e);Qb(D|0)}c=Rb()|0;C=Q;D=c;k[g>>2]=27468;k[e>>2]=27488;k[n>>2]=27560;Yua(b);Ava(n);vva(e);Qb(D|0)}while(0);q=t;s=u;vva(e);Qb(s|0)}}}function KV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=k[a+8>>2]|0;a=(Lta(c)|0)+1|0;d=Rqa(a)|0;if(!c)yb(142353,85118,137,142345);if(!a){k[b>>2]=d;return}else e=0;do{i[d+e>>0]=i[c+e>>0]|0;e=e+1|0}while((e|0)!=(a|0));k[b>>2]=d;return}function LV(a,b){a=a|0;b=b|0;var c=0,d=0;c=a+8|0;a=k[c>>2]|0;if(a)Tqa(a);k[c>>2]=0;a=(Lta(b)|0)+1|0;d=Rqa(a)|0;k[c>>2]=d;if(!b)yb(142353,85118,137,142345);if(!a)return;TEa(d|0,b|0,a|0)|0;return}function MV(a){a=a|0;return k[a+4>>2]|0}function NV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86577,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,43,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function OV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85796,25)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,44,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function PV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85760,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,45,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function QV(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85760,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,46,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function RV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,47,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function SV(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;b=r;r=r+192|0;d=b+176|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;b=e+56|0;i=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(b);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,86504,44)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,84970,87);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,48,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}while(0);l=o;m=p;vva(b);Qb(m|0)}function TV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86450,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,50,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function UV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,51,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function VV(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,52,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function WV(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85695,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,53,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function XV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86364,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,54,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function YV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86343,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,55,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function ZV(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,85058,19)|0;q=B;B=0;if((((((!(q&1)?(q=a+4|0,B=0,s=Xa(242,p|0,k[q>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,s|0,144166,2)|0,s=B,B=0,!(s&1)):0)?(B=0,s=ya(427,k[q>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(s)|0,B=0,t=Ia(40,p|0,s|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,t|0,85078,22)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;p=Q;Yua(e);u=p;v=s;break}B=0;wa(510,g|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,q|0,e|0,f|0,56,g|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,q|0,1240,229);B=0;z=0}s=Rb()|0;p=Q;Yua(g);w=p;x=s;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(q|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function _V(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85648,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,57,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function $V(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85625,22)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,59,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function aW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85601,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,60,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function bW(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;c=e+56|0;i=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(c);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,85579,21)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,84970,87);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86106,8);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,61,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}while(0);l=o;m=p;vva(c);Qb(m|0)}function cW(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86245,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,63,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function dW(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,64,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function eW(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,65,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function fW(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86188,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,66,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function gW(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86188,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,67,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function hW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86169,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,68,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function iW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86150,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,69,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function jW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85465,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,70,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function kW(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85340,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,84970,87);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,71,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function lW(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function mW(a){a=a|0;k[a>>2]=36120;return}function nW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;k[a>>2]=36120;k[a+4>>2]=b;k[a+8>>2]=f;i[a+12>>0]=e&1;e=f>>>0>536870911?-1:f<<3;b=Rqa(e)|0;k[a+16>>2]=b;if(!c)yb(142353,85118,137,142345);g=(f|0)==0;if(!g)TEa(b|0,c|0,f<<3|0)|0;c=Rqa(e)|0;k[a+20>>2]=c;if(!d)yb(142353,85118,137,142345);if(g)return;TEa(c|0,d|0,f<<3|0)|0;return}function oW(a){a=a|0;var b=0,c=0;k[a>>2]=36120;b=a+16|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+20|0;a=k[b>>2]|0;if(!a){k[b>>2]=0;return}Tqa(a);k[b>>2]=0;return}function pW(a){a=a|0;var b=0,c=0;k[a>>2]=36120;b=a+16|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=k[a+20>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function qW(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=d+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(p);Ava(l);q=u;s=t;break}Yua(c);B=0;Ia(40,d|0,85211,16)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,e|0,l|0),u=B,B=0,!(u&1)):0){B=0;ya(424,e|0)|0;u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);u=f+56|0;v=f+4|0;k[f>>2]=27524;k[u>>2]=27544;B=0;wa(508,f+56|0,v|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(u);Qb(A|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[v>>2]=27560;C=f+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(c);Yua(C);Ava(v);D=G;E=F;break}Yua(c);B=0;F=Ia(40,f|0,85228,9)|0;G=B;B=0;do if((((((!(G&1)?(H=a+4|0,B=0,I=Xa(242,F|0,k[H>>2]|0)|0,J=B,B=0,!(J&1)):0)?(B=0,J=Ia(40,I|0,144166,2)|0,I=B,B=0,!(I&1)):0)?(B=0,I=ya(427,k[H>>2]|0)|0,H=B,B=0,!(H&1)):0)?(H=Lta(I)|0,B=0,K=Ia(40,J|0,I|0,H|0)|0,H=B,B=0,!(H&1)):0)?(B=0,Ia(40,K|0,145593,2)|0,K=B,B=0,!(K&1)):0)?(B=0,wa(510,g|0,v|0),K=B,B=0,!(K&1)):0){B=0;ya(424,g|0)|0;K=B;B=0;if(K&1){K=Rb()|0;H=Q;Yua(g);L=H;M=K;break}Yua(g);k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);K=h+56|0;H=h+4|0;k[h>>2]=27524;k[K>>2]=27544;B=0;wa(508,h+56|0,H|0);I=B;B=0;if(I&1){I=Rb()|0;N=Q;O=I;vva(K);Qb(O|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[K>>2]=27488;B=0;va(448,H|0);I=B;B=0;do if(I&1){J=Rb()|0;P=Q;R=J}else{k[H>>2]=27560;J=h+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,H|0,c|0);S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(c);Yua(J);Ava(H);P=T;R=S;break}Yua(c);B=0;S=Ia(40,h|0,85238,9)|0;T=B;B=0;do if(!(T&1)){B=0;U=Xa(242,S|0,k[a+8>>2]|0)|0;V=B;B=0;if(V&1){W=48;break}B=0;Ia(40,U|0,149177,1)|0;U=B;B=0;if(U&1){W=48;break}B=0;wa(510,i|0,H|0);U=B;B=0;if(U&1){W=48;break}B=0;ya(424,i|0)|0;U=B;B=0;if(U&1){U=Rb()|0;V=Q;Yua(i);X=V;Y=U;break}else{Yua(i);k[h>>2]=27468;k[K>>2]=27488;k[H>>2]=27560;Yua(J);Ava(H);vva(K);r=b;return}}else W=48;while(0);if((W|0)==48){S=Rb()|0;X=Q;Y=S}k[h>>2]=27468;k[K>>2]=27488;k[H>>2]=27560;Yua(J);Ava(H);vva(K);Z=X;_=Y;Qb(_|0)}while(0);N=P;O=R;vva(K);Qb(O|0)}else W=45;while(0);if((W|0)==45){F=Rb()|0;L=Q;M=F}k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);Z=L;_=M;Qb(_|0)}while(0);z=D;A=E;vva(u);Qb(A|0)}else W=42;while(0);if((W|0)==42){t=Rb()|0;w=Q;x=t}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Z=w;_=x;Qb(_|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}function rW(a){a=a|0;return 582}function sW(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;b=Qqa(24)|0;c=k[a+4>>2]|0;d=k[a+16>>2]|0;e=k[a+20>>2]|0;f=i[a+12>>0]|0;g=k[a+8>>2]|0;k[b>>2]=36120;k[b+4>>2]=c;k[b+8>>2]=g;i[b+12>>0]=f;f=g>>>0>536870911?-1:g<<3;B=0;c=ya(422,f|0)|0;a=B;B=0;do if(!(a&1)){k[b+16>>2]=c;if(!d){B=0;ib(283,142353,85118,137,142345);B=0;break}h=(g|0)==0;if(!h)TEa(c|0,d|0,g<<3|0)|0;B=0;j=ya(422,f|0)|0;l=B;B=0;if(!(l&1)){k[b+20>>2]=j;if(!e){B=0;ib(283,142353,85118,137,142345);B=0;break}if(h)return b|0;TEa(j|0,e|0,g<<3|0)|0;return b|0}}while(0);g=Rb()|0;Sqa(b);Qb(g|0);return 0}function tW(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=70;i[d+1>>0]=2;i[d+2>>0]=0;i[d+3>>0]=0;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;i[o>>0]=i[a+12>>0]|0;o=(k[b>>2]|0)+1|0;k[b>>2]=o;d=a+8|0;n=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;TEa(n|0,k[a+16>>2]|0,k[d>>2]<<3|0)|0;n=k[d>>2]<<3;o=(k[b>>2]|0)+n|0;k[b>>2]=o;TEa(o|0,k[a+20>>2]|0,n|0)|0;k[b>>2]=(k[b>>2]|0)+(k[d>>2]<<3);r=e;return}case 2:{d=(k[c>>2]|0)+13|0;k[c>>2]=d;n=a+8|0;o=(k[n>>2]<<3)+d|0;k[c>>2]=o;k[c>>2]=(k[n>>2]<<3)+o;r=e;return}case 1:{o=(k[b>>2]|0)+4|0;k[b>>2]=o;n=a+4|0;c=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[n>>0]=c;i[n+1>>0]=c>>8;i[n+2>>0]=c>>16;i[n+3>>0]=c>>24;c=(k[b>>2]|0)+4|0;k[b>>2]=c;i[a+12>>0]=i[c>>0]|0;c=(k[b>>2]|0)+1|0;k[b>>2]=c;n=a+8|0;o=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[n>>0]=o;i[n+1>>0]=o>>8;i[n+2>>0]=o>>16;i[n+3>>0]=o>>24;k[b>>2]=(k[b>>2]|0)+4;c=o>>>0>536870911?-1:o<<3;d=Rqa(c)|0;k[a+16>>2]=d;p=Rqa(c)|0;c=a+20|0;k[c>>2]=p;p=k[b>>2]|0;a=o<<3;TEa(d|0,p|0,a|0)|0;d=p+a|0;k[b>>2]=d;TEa(k[c>>2]|0,d|0,a|0)|0;k[b>>2]=(k[b>>2]|0)+(k[n>>2]<<3);r=e;return}default:{e=g+56|0;n=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,n|0);b=B;B=0;if(b&1){b=Rb()|0;q=Q;s=b;vva(e);Qb(s|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,n|0);b=B;B=0;do if(b&1){a=Rb()|0;t=Q;u=a}else{k[n>>2]=27560;a=g+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,n|0,f|0);d=B;B=0;if(d&1){d=Rb()|0;c=Q;Yua(f);Yua(a);Ava(n);t=c;u=d;break}Yua(f);B=0;d=Ia(40,g|0,143951,43)|0;c=B;B=0;if(!(c&1)?(B=0,Xa(239,d|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,h|0,85248,80);c=B;B=0;do if(!(c&1)){B=0;eb(502,j|0,149525,8);p=B;B=0;if(p&1){p=Rb()|0;o=Q;Yua(h);v=o;w=p;break}B=0;wa(510,m|0,n|0);p=B;B=0;if(p&1){p=Rb()|0;x=Q;y=p;z=1}else{B=0;ua(163,d|0,h|0,j|0,78,m|0);p=B;B=0;if(p&1)A=1;else{B=0;eb(503,d|0,1240,229);B=0;A=0}p=Rb()|0;o=Q;Yua(m);x=o;y=p;z=A}Yua(j);Yua(h);if(z){v=x;w=y}else{C=x;D=y;k[g>>2]=27468;k[e>>2]=27488;k[n>>2]=27560;Yua(a);Ava(n);vva(e);Qb(D|0)}}else{p=Rb()|0;v=Q;w=p}while(0);zb(d|0);C=v;D=w;k[g>>2]=27468;k[e>>2]=27488;k[n>>2]=27560;Yua(a);Ava(n);vva(e);Qb(D|0)}c=Rb()|0;C=Q;D=c;k[g>>2]=27468;k[e>>2]=27488;k[n>>2]=27560;Yua(a);Ava(n);vva(e);Qb(D|0)}while(0);q=t;s=u;vva(e);Qb(s|0)}}}function uW(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0.0,f=0.0,g=0,h=0,j=0,l=0.0,m=0,n=0,o=0.0,q=0.0,r=0,s=0.0,t=0,u=0;d=k[a+20>>2]|0;e=+p[d>>3];if(e>c){f=+p[k[a+16>>2]>>3];p[b>>3]=f;return}g=k[a+8>>2]|0;h=g+-1|0;if(!(+p[d+(h<<3)>>3]<c)?(i[a+12>>0]|0)!=0:0){if((g|0)<=0){f=0.0;p[b>>3]=f;return}a:do if(e==c)j=0;else{l=e;m=0;while(1){n=m+1|0;if(l<c?(o=+p[d+(n<<3)>>3],o>c):0){q=l;r=n;s=o;t=m;break}if((n|0)>=(g|0)){f=0.0;u=14;break}l=+p[d+(n<<3)>>3];if(l==c){j=n;break a}else m=n}if((u|0)==14){p[b>>3]=f;return}l=(c-q)/(s-q);m=k[a+16>>2]|0;f=(1.0-l)*+p[m+(t<<3)>>3]+l*+p[m+(r<<3)>>3];p[b>>3]=f;return}while(0);f=+p[(k[a+16>>2]|0)+(j<<3)>>3];p[b>>3]=f;return}f=+p[(k[a+16>>2]|0)+(h<<3)>>3];p[b>>3]=f;return}function vW(a){a=a|0;return k[a+4>>2]|0}function wW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86577,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,45,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function xW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85796,25)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,46,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function yW(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85760,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,47,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function zW(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85725,34)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,48,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function AW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,49,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function BW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86480,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,51,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function CW(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86450,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,52,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function DW(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,53,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function EW(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,54,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function FW(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85695,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,55,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function GW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86364,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,56,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function HW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86343,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,57,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function IW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85673,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,58,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function JW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85648,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,59,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function KW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85625,22)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,61,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function LW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85601,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,62,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function MW(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;c=e+56|0;i=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(c);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,85329,10)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,85579,21)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,85374,90);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86106,8);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,63,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}while(0);l=o;m=p;vva(c);Qb(m|0)}function NW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86273,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,64,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function OW(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86245,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,65,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function PW(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85543,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,66,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function QW(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,67,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function RW(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85514,28)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,68,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function SW(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85485,28)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,69,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function TW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86169,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,70,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function UW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86150,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,71,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function VW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85465,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,72,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function WW(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,85329,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85340,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,85374,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,73,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function XW(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function YW(a){a=a|0;k[a>>2]=36272;k[a+8>>2]=0;return}function ZW(a,b,c){a=a|0;b=b|0;c=c|0;k[a>>2]=36272;k[a+4>>2]=b;b=hh(c)|0;k[a+8>>2]=b;return}function _W(a){a=a|0;var b=0;k[a>>2]=36272;b=k[a+8>>2]|0;if(!b)return;jh(b);Sqa(b);return}function $W(a){a=a|0;var b=0;k[a>>2]=36272;b=k[a+8>>2]|0;if(!b){Sqa(a);return}jh(b);Sqa(b);Sqa(a);return}function aX(a){a=a|0;bX(a);return}function bX(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;b=r;r=r+320|0;c=b+300|0;d=b+152|0;e=b+288|0;f=b+16|0;g=b;h=d+56|0;i=d+4|0;k[d>>2]=27524;k[h>>2]=27544;B=0;wa(508,d+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(h);Qb(m|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[h>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=d+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,i|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(c);Yua(n);Ava(i);o=s;p=q;break}Yua(c);k[d+(k[(k[d>>2]|0)+-12>>2]|0)+12>>2]=22;B=0;q=Ia(40,d|0,85837,16)|0;s=B;B=0;do if((((!(s&1)?(k[q+(k[(k[q>>2]|0)+-12>>2]|0)+12>>2]=35,t=q+(k[(k[q>>2]|0)+-12>>2]|0)+4|0,k[t>>2]=k[t>>2]&-177|32,t=a+4|0,B=0,u=ya(427,k[t>>2]|0)|0,v=B,B=0,!(v&1)):0)?(v=Lta(u)|0,B=0,w=Ia(40,q|0,u|0,v|0)|0,v=B,B=0,!(v&1)):0)?(B=0,Ia(40,w|0,85854,13)|0,w=B,B=0,!(w&1)):0)?(B=0,wa(510,e|0,i|0),w=B,B=0,!(w&1)):0){B=0;ya(424,e|0)|0;w=B;B=0;if(w&1){w=Rb()|0;v=Q;Yua(e);x=v;y=w;break}Yua(e);k[d>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);oh(k[a+8>>2]|0);w=f+56|0;v=f+4|0;k[f>>2]=27524;k[w>>2]=27544;B=0;wa(508,f+56|0,v|0);u=B;B=0;if(u&1){u=Rb()|0;z=Q;A=u;vva(w);Qb(A|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[w>>2]=27488;B=0;va(448,v|0);u=B;B=0;do if(u&1){C=Rb()|0;D=Q;E=C}else{k[v>>2]=27560;C=f+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(c);Yua(C);Ava(v);D=G;E=F;break}Yua(c);k[f+(k[(k[f>>2]|0)+-12>>2]|0)+12>>2]=22;B=0;F=Ia(40,f|0,85837,16)|0;G=B;B=0;do if(((!(G&1)?(k[F+(k[(k[F>>2]|0)+-12>>2]|0)+12>>2]=35,H=F+(k[(k[F>>2]|0)+-12>>2]|0)+4|0,k[H>>2]=k[H>>2]&-177|32,B=0,H=ya(427,k[t>>2]|0)|0,I=B,B=0,!(I&1)):0)?(I=Lta(H)|0,B=0,J=Ia(40,F|0,H|0,I|0)|0,I=B,B=0,!(I&1)):0)?(B=0,Ia(40,J|0,85868,11)|0,J=B,B=0,!(J&1)):0){B=0;wa(510,g|0,v|0);J=B;B=0;if(J&1){K=33;break}B=0;ya(424,g|0)|0;J=B;B=0;if(J&1){J=Rb()|0;I=Q;Yua(g);L=I;M=J;break}else{Yua(g);k[f>>2]=27468;k[w>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(w);r=b;return}}else K=33;while(0);if((K|0)==33){F=Rb()|0;L=Q;M=F}k[f>>2]=27468;k[w>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(w);N=L;O=M;Qb(O|0)}while(0);z=D;A=E;vva(w);Qb(A|0)}else K=30;while(0);if((K|0)==30){q=Rb()|0;x=Q;y=q}k[d>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);N=x;O=y;Qb(O|0)}while(0);l=o;m=p;vva(h);Qb(m|0)}function cX(a){a=a|0;return 563}function dX(a){a=a|0;var b=0,c=0,d=0;b=Qqa(12)|0;c=k[a+4>>2]|0;d=k[a+8>>2]|0;k[b>>2]=36272;k[b+4>>2]=c;B=0;c=ya(432,d|0)|0;d=B;B=0;if(d&1){d=Rb()|0;Sqa(b);Qb(d|0)}else{k[b+8>>2]=c;return b|0}return 0}function eX(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 1:{n=Qqa(36)|0;B=0;va(480,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Sqa(n);q=o;s=p;Qb(q|0)}else{k[a+8>>2]=n;n=(k[b>>2]|0)+4|0;k[b>>2]=n;p=a+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[p>>0]=o;i[p+1>>0]=o>>8;i[p+2>>0]=o>>16;i[p+3>>0]=o>>24;k[b>>2]=(k[b>>2]|0)+4;t=a+8|0;u=k[t>>2]|0;lh(u,b,c,d);r=e;return}break}case 0:{o=k[b>>2]|0;i[o>>0]=51;i[o+1>>0]=2;i[o+2>>0]=0;i[o+3>>0]=0;o=(k[b>>2]|0)+4|0;k[b>>2]=o;p=a+4|0;n=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;k[b>>2]=(k[b>>2]|0)+4;t=a+8|0;u=k[t>>2]|0;lh(u,b,c,d);r=e;return}case 2:{k[c>>2]=(k[c>>2]|0)+8;t=a+8|0;u=k[t>>2]|0;lh(u,b,c,d);r=e;return}default:{e=g+56|0;d=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,d|0);c=B;B=0;if(c&1){c=Rb()|0;v=Q;w=c;vva(e);Qb(w|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,d|0);c=B;B=0;do if(c&1){b=Rb()|0;x=Q;y=b}else{k[d>>2]=27560;b=g+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,d|0,f|0);u=B;B=0;if(u&1){u=Rb()|0;t=Q;Yua(f);Yua(b);Ava(d);x=t;y=u;break}Yua(f);B=0;u=Ia(40,g|0,143951,43)|0;t=B;B=0;a:do if(!(t&1)?(B=0,Xa(239,u|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,h|0,85880,78);n=B;B=0;do if(!(n&1)){B=0;eb(502,j|0,149525,8);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(h);z=p;A=o;break}B=0;wa(510,m|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;C=o;D=Q;E=1}else{B=0;ua(163,a|0,h|0,j|0,64,m|0);o=B;B=0;if(o&1)F=1;else{B=0;eb(503,a|0,1240,229);B=0;F=0}o=Rb()|0;p=Q;Yua(m);C=o;D=p;E=F}Yua(j);Yua(h);if(E){z=D;A=C}else{G=D;H=C;break a}}else{p=Rb()|0;z=Q;A=p}while(0);zb(a|0);G=z;H=A}else I=19;while(0);if((I|0)==19){u=Rb()|0;G=Q;H=u}k[g>>2]=27468;k[e>>2]=27488;k[d>>2]=27560;Yua(b);Ava(d);vva(e);q=H;s=G;Qb(q|0)}while(0);v=x;w=y;vva(e);Qb(w|0)}}}function fX(a,b){a=a|0;b=b|0;var c=0;c=hh(k[a+8>>2]|0)|0;k[b>>2]=c;return}function gX(a){a=a|0;return k[a+4>>2]|0}function hX(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86577,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,43,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function iX(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,44,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function jX(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,45,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function kX(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,46,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function lX(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,47,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function mX(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;b=r;r=r+192|0;d=b+176|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;b=e+56|0;i=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(b);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,86504,44)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,86017,88);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,48,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}while(0);l=o;m=p;vva(b);Qb(m|0)}function nX(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86480,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,50,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function oX(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86450,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,51,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function pX(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,52,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function qX(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,53,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function rX(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,85959,22)|0;q=B;B=0;if((((((!(q&1)?(q=a+4|0,B=0,s=Xa(242,p|0,k[q>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,s|0,144166,2)|0,s=B,B=0,!(s&1)):0)?(B=0,s=ya(427,k[q>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(s)|0,B=0,t=Ia(40,p|0,s|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,t|0,86385,30)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;p=Q;Yua(b);u=p;v=s;break}B=0;wa(510,g|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,q|0,b|0,f|0,54,g|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,q|0,1240,229);B=0;z=0}s=Rb()|0;p=Q;Yua(g);w=p;x=s;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(q|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function sX(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86364,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,55,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function tX(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86343,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,56,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function uX(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86295,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,49,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function vX(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86273,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,59,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function wX(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86273,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,60,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function xX(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;c=e+56|0;i=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(c);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+4>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,86273,21)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,86017,88);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86106,8);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,61,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}while(0);l=o;m=p;vva(c);Qb(m|0)}function yX(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86273,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,62,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function zX(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86245,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,64,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function AX(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,65,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function BX(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,66,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function CX(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86188,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,67,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function DX(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86188,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,68,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function EX(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86169,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,69,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function FX(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86150,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,70,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function GX(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+4>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86122,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,63,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function HX(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,85959,22)|0;q=B;B=0;if((((((!(q&1)?(q=a+4|0,B=0,s=Xa(242,p|0,k[q>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,s|0,144166,2)|0,s=B,B=0,!(s&1)):0)?(B=0,s=ya(427,k[q>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(s)|0,B=0,t=Ia(40,p|0,s|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,t|0,85982,34)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,86017,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);s=B;B=0;if(s&1){s=Rb()|0;p=Q;Yua(b);u=p;v=s;break}B=0;wa(510,g|0,h|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,q|0,b|0,f|0,72,g|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,q|0,1240,229);B=0;z=0}s=Rb()|0;p=Q;Yua(g);w=p;x=s;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(q|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function IX(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function JX(a){a=a|0;k[a>>2]=36424;p[a+8>>3]=F;p[a+72>>3]=F;p[a+136>>3]=F;p[a+16>>3]=F;p[a+80>>3]=F;p[a+144>>3]=F;p[a+24>>3]=F;p[a+88>>3]=F;p[a+152>>3]=F;p[a+32>>3]=F;p[a+96>>3]=F;p[a+160>>3]=F;p[a+40>>3]=F;p[a+104>>3]=F;p[a+168>>3]=F;p[a+48>>3]=F;p[a+112>>3]=F;p[a+176>>3]=F;p[a+56>>3]=F;p[a+120>>3]=F;p[a+184>>3]=F;p[a+64>>3]=F;p[a+128>>3]=F;p[a+192>>3]=F;return}function KX(a){a=a|0;return}function LX(a){a=a|0;Sqa(a);return}function MX(a){a=a|0;var b=0;b=Qqa(200)|0;k[b>>2]=36424;p[b+48>>3]=F;p[b+112>>3]=F;p[b+176>>3]=F;p[b+56>>3]=F;p[b+120>>3]=F;p[b+184>>3]=F;p[b+64>>3]=F;p[b+128>>3]=F;p[b+192>>3]=F;p[b+8>>3]=+p[a+8>>3];p[b+72>>3]=+p[a+72>>3];p[b+136>>3]=+p[a+136>>3];p[b+16>>3]=+p[a+16>>3];p[b+80>>3]=+p[a+80>>3];p[b+144>>3]=+p[a+144>>3];p[b+24>>3]=+p[a+24>>3];p[b+88>>3]=+p[a+88>>3];p[b+152>>3]=+p[a+152>>3];p[b+32>>3]=+p[a+32>>3];p[b+96>>3]=+p[a+96>>3];p[b+160>>3]=+p[a+160>>3];p[b+40>>3]=+p[a+40>>3];p[b+104>>3]=+p[a+104>>3];p[b+168>>3]=+p[a+168>>3];p[b+48>>3]=+p[a+48>>3];p[b+112>>3]=+p[a+112>>3];p[b+176>>3]=+p[a+176>>3];p[b+56>>3]=+p[a+56>>3];p[b+120>>3]=+p[a+120>>3];p[b+184>>3]=+p[a+184>>3];p[b+64>>3]=+p[a+64>>3];p[b+128>>3]=+p[a+128>>3];p[b+192>>3]=+p[a+192>>3];return b|0}function NX(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;a=r;r=r+496|0;b=a+476|0;c=a+328|0;d=a+464|0;e=a+192|0;f=a+176|0;g=a+40|0;h=a+24|0;i=a+12|0;j=a;a=c+56|0;l=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(a);Qb(o|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=c+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,l|0,b|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);Yua(p);Ava(l);q=u;s=t;break}Yua(b);B=0;Ia(40,c|0,86609,10)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,d|0,l|0),u=B,B=0,!(u&1)):0){B=0;ya(424,d|0)|0;u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(d);w=v;x=u;break}Yua(d);k[c>>2]=27468;k[a>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(a);u=e+56|0;v=e+4|0;k[e>>2]=27524;k[u>>2]=27544;B=0;wa(508,e+56|0,v|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(u);Qb(A|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[v>>2]=27560;C=e+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[e+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,v|0,b|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(b);Yua(C);Ava(v);D=G;E=F;break}Yua(b);B=0;Ia(40,e|0,86620,15)|0;F=B;B=0;do if(!(F&1)?(B=0,wa(510,f|0,v|0),G=B,B=0,!(G&1)):0){B=0;ya(424,f|0)|0;G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(f);I=H;J=G;break}Yua(f);k[e>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);G=g+56|0;H=g+4|0;k[g>>2]=27524;k[G>>2]=27544;B=0;wa(508,g+56|0,H|0);K=B;B=0;if(K&1){K=Rb()|0;L=Q;M=K;vva(G);Qb(M|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[G>>2]=27488;B=0;va(448,H|0);K=B;B=0;do if(K&1){N=Rb()|0;O=Q;P=N}else{k[H>>2]=27560;N=g+36|0;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;k[g+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,H|0,b|0);R=B;B=0;if(R&1){R=Rb()|0;S=Q;Yua(b);Yua(N);Ava(H);O=S;P=R;break}Yua(b);B=0;R=Ia(40,g|0,149721,19)|0;S=B;B=0;a:do if(S&1)T=44;else{B=0;Xa(239,R|0,0)|0;U=B;B=0;if(U&1){T=44;break}U=Ab(20)|0;B=0;eb(502,h|0,86636,67);V=B;B=0;do if(!(V&1)){B=0;eb(502,i|0,149562,4);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Yua(h);Y=X;Z=W;break}B=0;wa(510,j|0,H|0);W=B;B=0;if(W&1){W=Rb()|0;_=1;$=Q;aa=W}else{B=0;ua(163,U|0,h|0,i|0,47,j|0);W=B;B=0;if(W&1)ba=1;else{B=0;eb(503,U|0,1240,229);B=0;ba=0}W=Rb()|0;X=Q;Yua(j);_=ba;$=X;aa=W}Yua(i);Yua(h);if(_){Y=$;Z=aa}else{ca=$;da=aa;break a}}else{W=Rb()|0;Y=Q;Z=W}while(0);zb(U|0);ca=Y;da=Z}while(0);if((T|0)==44){R=Rb()|0;ca=Q;da=R}k[g>>2]=27468;k[G>>2]=27488;k[H>>2]=27560;Yua(N);Ava(H);vva(G);ea=ca;fa=da;Qb(fa|0)}while(0);L=O;M=P;vva(G);Qb(M|0)}else T=41;while(0);if((T|0)==41){F=Rb()|0;I=Q;J=F}k[e>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);ea=I;fa=J;Qb(fa|0)}while(0);z=D;A=E;vva(u);Qb(A|0)}else T=38;while(0);if((T|0)==38){t=Rb()|0;w=Q;x=t}k[c>>2]=27468;k[a>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(a);ea=w;fa=x;Qb(fa|0)}while(0);n=q;o=s;vva(a);Qb(o|0)}function OX(a){a=a|0;Ec[k[(k[a>>2]|0)+8>>2]&1023](a);return}function PX(a){a=a|0;return -1}function QX(a){a=a|0;return 595}function RX(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;l=e;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=83;i[d+1>>0]=2;i[d+2>>0]=0;i[d+3>>0]=0;d=(k[b>>2]|0)+4|0;k[b>>2]=d;i[d>>0]=0;d=(k[b>>2]|0)+1|0;k[b>>2]=d;m=d;d=a+8|0;n=m+64|0;do{i[m>>0]=i[d>>0]|0;m=m+1|0;d=d+1|0}while((m|0)<(n|0));o=(k[b>>2]|0)+64|0;k[b>>2]=o;i[o>>0]=0;o=(k[b>>2]|0)+1|0;k[b>>2]=o;m=o;d=a+72|0;n=m+64|0;do{i[m>>0]=i[d>>0]|0;m=m+1|0;d=d+1|0}while((m|0)<(n|0));o=(k[b>>2]|0)+64|0;k[b>>2]=o;i[o>>0]=0;o=(k[b>>2]|0)+1|0;k[b>>2]=o;m=o;d=a+136|0;n=m+64|0;do{i[m>>0]=i[d>>0]|0;m=m+1|0;d=d+1|0}while((m|0)<(n|0));k[b>>2]=(k[b>>2]|0)+64;r=e;return}case 2:{k[c>>2]=(k[c>>2]|0)+199;r=e;return}case 1:{c=k[b>>2]|0;d=c+4|0;k[b>>2]=d;m=c+5|0;n=(i[d>>0]&1)==0;d=c+69|0;c=n?d:m;k[b>>2]=n?d:m;m=(i[c>>0]&1)==0?c+65|0:c+1|0;k[b>>2]=m;c=i[m>>0]|0;k[b>>2]=m+1;if(c&1){r=e;return}k[b>>2]=m+65;r=e;return}default:{e=g+56|0;m=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,m|0);b=B;B=0;if(b&1){b=Rb()|0;p=Q;q=b;vva(e);Qb(q|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,m|0);b=B;B=0;do if(b&1){c=Rb()|0;s=Q;t=c}else{k[m>>2]=27560;c=g+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,m|0,f|0);d=B;B=0;if(d&1){d=Rb()|0;n=Q;Yua(f);Yua(c);Ava(m);s=n;t=d;break}Yua(f);B=0;d=Ia(40,g|0,143951,43)|0;n=B;B=0;if(!(n&1)?(B=0,Xa(239,d|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,h|0,86636,67);n=B;B=0;do if(!(n&1)){B=0;eb(502,j|0,149525,8);a=B;B=0;if(a&1){a=Rb()|0;o=Q;Yua(h);u=o;v=a;break}B=0;wa(510,l|0,m|0);a=B;B=0;if(a&1){a=Rb()|0;w=Q;x=a;y=1}else{B=0;ua(163,d|0,h|0,j|0,69,l|0);a=B;B=0;if(a&1)z=1;else{B=0;eb(503,d|0,1240,229);B=0;z=0}a=Rb()|0;o=Q;Yua(l);w=o;x=a;y=z}Yua(j);Yua(h);if(y){u=w;v=x}else{A=w;C=x;k[g>>2]=27468;k[e>>2]=27488;k[m>>2]=27560;Yua(c);Ava(m);vva(e);Qb(C|0)}}else{a=Rb()|0;u=Q;v=a}while(0);zb(d|0);A=u;C=v;k[g>>2]=27468;k[e>>2]=27488;k[m>>2]=27560;Yua(c);Ava(m);vva(e);Qb(C|0)}n=Rb()|0;A=Q;C=n;k[g>>2]=27468;k[e>>2]=27488;k[m>>2]=27560;Yua(c);Ava(m);vva(e);Qb(C|0)}while(0);p=s;q=t;vva(e);Qb(q|0)}}}function SX(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0.0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0;d=r;r=r+528|0;e=d+516|0;f=d+368|0;g=d+504|0;h=d+356|0;i=d+344|0;j=d+208|0;l=d+60|0;m=d+48|0;n=d+36|0;o=d+72|0;q=d+24|0;s=d+12|0;u=d;if(!c)uY()|0;c=Ub()|0;v=a+8+(b<<3)|0;w=+$(+(+p[v>>3]));p[t>>3]=w;x=k[t+4>>2]|0;if(!(x>>>0>2146435072|(x|0)==2146435072&(k[t>>2]|0)>>>0>0)){x=f+56|0;y=f+4|0;k[f>>2]=27524;k[x>>2]=27544;B=0;wa(508,f+56|0,y|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;C=z;vva(x);Qb(C|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[x>>2]=27488;B=0;va(448,y|0);z=B;B=0;do if(z&1){D=Rb()|0;E=Q;F=D}else{k[y>>2]=27560;D=f+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,y|0,e|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(e);Yua(D);Ava(y);E=H;F=G;break}Yua(e);B=0;G=Ia(40,f|0,86704,18)|0;H=B;B=0;a:do if(!(H&1)?(B=0,Xa(239,G|0,0)|0,I=B,B=0,!(I&1)):0){I=Ab(20)|0;B=0;eb(502,g|0,86636,67);J=B;B=0;do if(!(J&1)){B=0;eb(502,h|0,86723,3);K=B;B=0;if(K&1){K=Rb()|0;L=Q;Yua(g);M=L;N=K;break}B=0;wa(510,i|0,y|0);K=B;B=0;if(K&1){K=Rb()|0;O=K;P=Q;R=1}else{B=0;ua(163,I|0,g|0,h|0,110,i|0);K=B;B=0;if(K&1)S=1;else{B=0;eb(503,I|0,1240,229);B=0;S=0}K=Rb()|0;L=Q;Yua(i);O=K;P=L;R=S}Yua(h);Yua(g);if(R){M=P;N=O}else{T=P;U=O;break a}}else{L=Rb()|0;M=Q;N=L}while(0);zb(I|0);T=M;U=N}else V=19;while(0);if((V|0)==19){G=Rb()|0;T=Q;U=G}k[f>>2]=27468;k[x>>2]=27488;k[y>>2]=27560;Yua(D);Ava(y);vva(x);W=T;X=U;Qb(X|0)}while(0);A=E;C=F;vva(x);Qb(C|0)}p[v>>3]=+(c|0);w=+$(+(+p[a+72+(b<<3)>>3]));p[t>>3]=w;c=k[t+4>>2]|0;if(!(c>>>0>2146435072|(c|0)==2146435072&(k[t>>2]|0)>>>0>0)){c=j+56|0;v=j+4|0;k[j>>2]=27524;k[c>>2]=27544;B=0;wa(508,j+56|0,v|0);C=B;B=0;if(C&1){C=Rb()|0;Y=Q;Z=C;vva(c);Qb(Z|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[c>>2]=27488;B=0;va(448,v|0);C=B;B=0;do if(C&1){x=Rb()|0;_=Q;aa=x}else{k[v>>2]=27560;x=j+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[j+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,v|0,e|0);F=B;B=0;if(F&1){F=Rb()|0;E=Q;Yua(e);Yua(x);Ava(v);_=E;aa=F;break}Yua(e);B=0;F=Ia(40,j|0,86704,18)|0;E=B;B=0;b:do if(!(E&1)?(B=0,Xa(239,F|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,l|0,86636,67);U=B;B=0;do if(!(U&1)){B=0;eb(502,m|0,86723,3);T=B;B=0;if(T&1){T=Rb()|0;y=Q;Yua(l);ba=T;ca=y;break}B=0;wa(510,n|0,v|0);y=B;B=0;if(y&1){y=Rb()|0;da=1;ea=Q;fa=y}else{B=0;ua(163,A|0,l|0,m|0,112,n|0);y=B;B=0;if(y&1)ga=1;else{B=0;eb(503,A|0,1240,229);B=0;ga=0}y=Rb()|0;T=Q;Yua(n);da=ga;ea=T;fa=y}Yua(m);Yua(l);if(da){ba=fa;ca=ea}else{ha=ea;ia=fa;break b}}else{y=Rb()|0;ba=y;ca=Q}while(0);zb(A|0);ha=ca;ia=ba}else V=43;while(0);if((V|0)==43){F=Rb()|0;ha=Q;ia=F}k[j>>2]=27468;k[c>>2]=27488;k[v>>2]=27560;Yua(x);Ava(v);vva(c);W=ha;X=ia;Qb(X|0)}while(0);Y=_;Z=aa;vva(c);Qb(Z|0)}w=+$(+(+p[a+136+(b<<3)>>3]));p[t>>3]=w;b=k[t+4>>2]|0;if(b>>>0>2146435072|(b|0)==2146435072&(k[t>>2]|0)>>>0>0){r=d;return}d=o+56|0;b=o+4|0;k[o>>2]=27524;k[d>>2]=27544;B=0;wa(508,o+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;ja=Q;ka=a;vva(d);Qb(ka|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){Z=Rb()|0;la=Q;ma=Z}else{k[b>>2]=27560;Z=o+36|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[o+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);c=B;B=0;if(c&1){c=Rb()|0;aa=Q;Yua(e);Yua(Z);Ava(b);la=aa;ma=c;break}Yua(e);B=0;c=Ia(40,o|0,86704,18)|0;aa=B;B=0;c:do if(!(aa&1)?(B=0,Xa(239,c|0,0)|0,_=B,B=0,!(_&1)):0){_=Ab(20)|0;B=0;eb(502,q|0,86636,67);Y=B;B=0;do if(!(Y&1)){B=0;eb(502,s|0,86723,3);ia=B;B=0;if(ia&1){ia=Rb()|0;ha=Q;Yua(q);na=ia;oa=ha;break}B=0;wa(510,u|0,b|0);ha=B;B=0;if(ha&1){ha=Rb()|0;pa=1;qa=Q;ra=ha}else{B=0;ua(163,_|0,q|0,s|0,114,u|0);ha=B;B=0;if(ha&1)sa=1;else{B=0;eb(503,_|0,1240,229);B=0;sa=0}ha=Rb()|0;ia=Q;Yua(u);pa=sa;qa=ia;ra=ha}Yua(s);Yua(q);if(pa){na=ra;oa=qa}else{ta=qa;xa=ra;break c}}else{ha=Rb()|0;na=ha;oa=Q}while(0);zb(_|0);ta=oa;xa=na}else V=67;while(0);if((V|0)==67){c=Rb()|0;ta=Q;xa=c}k[o>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(Z);Ava(b);vva(d);W=ta;X=xa;Qb(X|0)}while(0);ja=la;ka=ma;vva(d);Qb(ka|0)}function TX(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0.0,q=0.0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0.0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0;d=r;r=r+368|0;e=d+344|0;f=d+208|0;g=d+196|0;h=d+184|0;i=d+36|0;j=d+48|0;l=d+24|0;m=d+12|0;n=d;o=+p[a+8+(b<<3)>>3];q=+$(+o);p[t>>3]=q;b=k[t+4>>2]|0;if(b>>>0>2146435072|(b|0)==2146435072&(k[t>>2]|0)>>>0>0){b=f+56|0;s=f+4|0;k[f>>2]=27524;k[b>>2]=27544;B=0;wa(508,f+56|0,s|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(b);Qb(w|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[b>>2]=27488;B=0;va(448,s|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[s>>2]=27560;x=f+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,s|0,e|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(e);Yua(x);Ava(s);y=C;z=A;break}Yua(e);B=0;A=Ia(40,f|0,86727,11)|0;C=B;B=0;a:do if(!(C&1)?(B=0,Xa(239,A|0,0)|0,D=B,B=0,!(D&1)):0){D=Ab(20)|0;B=0;eb(502,g|0,86636,67);E=B;B=0;do if(!(E&1)){B=0;eb(502,h|0,86739,9);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(g);H=F;I=G;break}B=0;wa(510,i|0,s|0);G=B;B=0;if(G&1){G=Rb()|0;J=G;K=Q;L=1}else{B=0;ua(163,D|0,g|0,h|0,124,i|0);G=B;B=0;if(G&1)M=1;else{B=0;eb(503,D|0,1240,229);B=0;M=0}G=Rb()|0;F=Q;Yua(i);J=G;K=F;L=M}Yua(h);Yua(g);if(L){H=J;I=K}else{N=J;O=K;break a}}else{F=Rb()|0;H=F;I=Q}while(0);zb(D|0);N=H;O=I}else P=17;while(0);if((P|0)==17){A=Rb()|0;N=A;O=Q}k[f>>2]=27468;k[b>>2]=27488;k[s>>2]=27560;Yua(x);Ava(s);vva(b);R=N;S=O;Qb(R|0)}while(0);v=y;w=z;vva(b);Qb(w|0)}q=+p[a+8+(c<<3)>>3];T=+$(+q);p[t>>3]=T;c=k[t+4>>2]|0;if(!(c>>>0>2146435072|(c|0)==2146435072&(k[t>>2]|0)>>>0>0)){r=d;return +((q-o)/1.0e6)}d=j+56|0;c=j+4|0;k[j>>2]=27524;k[d>>2]=27544;B=0;wa(508,j+56|0,c|0);a=B;B=0;if(a&1){a=Rb()|0;U=Q;V=a;vva(d);Qb(V|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[d>>2]=27488;B=0;va(448,c|0);a=B;B=0;do if(a&1){w=Rb()|0;W=Q;X=w}else{k[c>>2]=27560;w=j+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[j+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,c|0,e|0);b=B;B=0;if(b&1){b=Rb()|0;z=Q;Yua(e);Yua(w);Ava(c);W=z;X=b;break}Yua(e);B=0;b=Ia(40,j|0,86727,11)|0;z=B;B=0;b:do if(!(z&1)?(B=0,Xa(239,b|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,l|0,86636,67);v=B;B=0;do if(!(v&1)){B=0;eb(502,m|0,86739,9);O=B;B=0;if(O&1){O=Rb()|0;N=Q;Yua(l);Y=N;Z=O;break}B=0;wa(510,n|0,c|0);O=B;B=0;if(O&1){O=Rb()|0;_=1;aa=O;ba=Q}else{B=0;ua(163,y|0,l|0,m|0,130,n|0);O=B;B=0;if(O&1)ca=1;else{B=0;eb(503,y|0,1240,229);B=0;ca=0}O=Rb()|0;N=Q;Yua(n);_=ca;aa=O;ba=N}Yua(m);Yua(l);if(_){Y=ba;Z=aa}else{da=aa;ea=ba;break b}}else{N=Rb()|0;Y=Q;Z=N}while(0);zb(y|0);da=Z;ea=Y}else P=41;while(0);if((P|0)==41){b=Rb()|0;da=b;ea=Q}k[j>>2]=27468;k[d>>2]=27488;k[c>>2]=27560;Yua(w);Ava(c);vva(d);R=da;S=ea;Qb(R|0)}while(0);U=W;V=X;vva(d);Qb(V|0);return +(0.0)}function UX(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0.0,q=0.0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0.0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0;d=r;r=r+368|0;e=d+344|0;f=d+208|0;g=d+196|0;h=d+184|0;i=d+36|0;j=d+48|0;l=d+24|0;m=d+12|0;n=d;o=+p[a+72+(b<<3)>>3];q=+$(+o);p[t>>3]=q;b=k[t+4>>2]|0;if(b>>>0>2146435072|(b|0)==2146435072&(k[t>>2]|0)>>>0>0){b=f+56|0;s=f+4|0;k[f>>2]=27524;k[b>>2]=27544;B=0;wa(508,f+56|0,s|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(b);Qb(w|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[b>>2]=27488;B=0;va(448,s|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[s>>2]=27560;x=f+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,s|0,e|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(e);Yua(x);Ava(s);y=C;z=A;break}Yua(e);B=0;A=Ia(40,f|0,86727,11)|0;C=B;B=0;a:do if(!(C&1)?(B=0,Xa(239,A|0,0)|0,D=B,B=0,!(D&1)):0){D=Ab(20)|0;B=0;eb(502,g|0,86636,67);E=B;B=0;do if(!(E&1)){B=0;eb(502,h|0,86749,10);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(g);H=F;I=G;break}B=0;wa(510,i|0,s|0);G=B;B=0;if(G&1){G=Rb()|0;J=G;K=Q;L=1}else{B=0;ua(163,D|0,g|0,h|0,145,i|0);G=B;B=0;if(G&1)M=1;else{B=0;eb(503,D|0,1240,229);B=0;M=0}G=Rb()|0;F=Q;Yua(i);J=G;K=F;L=M}Yua(h);Yua(g);if(L){H=J;I=K}else{N=J;O=K;break a}}else{F=Rb()|0;H=F;I=Q}while(0);zb(D|0);N=H;O=I}else P=17;while(0);if((P|0)==17){A=Rb()|0;N=A;O=Q}k[f>>2]=27468;k[b>>2]=27488;k[s>>2]=27560;Yua(x);Ava(s);vva(b);R=N;S=O;Qb(R|0)}while(0);v=y;w=z;vva(b);Qb(w|0)}q=+p[a+72+(c<<3)>>3];T=+$(+q);p[t>>3]=T;c=k[t+4>>2]|0;if(!(c>>>0>2146435072|(c|0)==2146435072&(k[t>>2]|0)>>>0>0)){r=d;return +(q-o)}d=j+56|0;c=j+4|0;k[j>>2]=27524;k[d>>2]=27544;B=0;wa(508,j+56|0,c|0);a=B;B=0;if(a&1){a=Rb()|0;U=Q;V=a;vva(d);Qb(V|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[d>>2]=27488;B=0;va(448,c|0);a=B;B=0;do if(a&1){w=Rb()|0;W=Q;X=w}else{k[c>>2]=27560;w=j+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[j+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,c|0,e|0);b=B;B=0;if(b&1){b=Rb()|0;z=Q;Yua(e);Yua(w);Ava(c);W=z;X=b;break}Yua(e);B=0;b=Ia(40,j|0,86727,11)|0;z=B;B=0;b:do if(!(z&1)?(B=0,Xa(239,b|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,l|0,86636,67);v=B;B=0;do if(!(v&1)){B=0;eb(502,m|0,86749,10);O=B;B=0;if(O&1){O=Rb()|0;N=Q;Yua(l);Y=N;Z=O;break}B=0;wa(510,n|0,c|0);O=B;B=0;if(O&1){O=Rb()|0;_=1;aa=O;ba=Q}else{B=0;ua(163,y|0,l|0,m|0,151,n|0);O=B;B=0;if(O&1)ca=1;else{B=0;eb(503,y|0,1240,229);B=0;ca=0}O=Rb()|0;N=Q;Yua(n);_=ca;aa=O;ba=N}Yua(m);Yua(l);if(_){Y=ba;Z=aa}else{da=aa;ea=ba;break b}}else{N=Rb()|0;Y=Q;Z=N}while(0);zb(y|0);da=Z;ea=Y}else P=41;while(0);if((P|0)==41){b=Rb()|0;da=b;ea=Q}k[j>>2]=27468;k[d>>2]=27488;k[c>>2]=27560;Yua(w);Ava(c);vva(d);R=da;S=ea;Qb(R|0)}while(0);U=W;V=X;vva(d);Qb(V|0);return +(0.0)}function VX(a,b,c){a=a|0;b=b|0;c=c|0;return (~~+TX(a,b,c)|0)/3600|0|0}function WX(a,b,c){a=a|0;b=b|0;c=c|0;return ((~~+TX(a,b,c)|0)%3600|0|0)/60|0|0}function XX(a,b,c){a=a|0;b=b|0;c=c|0;return (~~+TX(a,b,c)|0)%60|0|0}function YX(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0.0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;i=+$(+(+p[a+72+(b<<3)>>3]));p[t>>3]=i;j=k[t+4>>2]|0;if(!(j>>>0>2146435072|(j|0)==2146435072&(k[t>>2]|0)>>>0>0)){r=c;return +(+p[a+136+(b<<3)>>3])}b=e+56|0;a=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,a|0);c=B;B=0;if(c&1){c=Rb()|0;l=Q;m=c;vva(b);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,a|0);c=B;B=0;do if(c&1){j=Rb()|0;n=Q;o=j}else{k[a>>2]=27560;j=e+36|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,a|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(j);Ava(a);n=s;o=q;break}Yua(d);B=0;q=Ia(40,e|0,86727,11)|0;s=B;B=0;if(!(s&1)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,f|0,86636,67);s=B;B=0;do if(!(s&1)){B=0;eb(502,g|0,86760,6);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(f);w=v;x=u;break}B=0;wa(510,h|0,a|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,q|0,f|0,g|0,181,h|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,q|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(h);y=v;z=u;A=C}Yua(g);Yua(f);if(A){w=y;x=z}else{D=y;E=z;k[e>>2]=27468;k[b>>2]=27488;k[a>>2]=27560;Yua(j);Ava(a);vva(b);Qb(E|0)}}else{u=Rb()|0;w=Q;x=u}while(0);zb(q|0);D=w;E=x;k[e>>2]=27468;k[b>>2]=27488;k[a>>2]=27560;Yua(j);Ava(a);vva(b);Qb(E|0)}s=Rb()|0;D=Q;E=s;k[e>>2]=27468;k[b>>2]=27488;k[a>>2]=27560;Yua(j);Ava(a);vva(b);Qb(E|0)}while(0);l=n;m=o;vva(b);Qb(m|0);return +(0.0)}function ZX(a,b,c,d,e,f,g,h,i,j,l,m,n,o){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0;p=r;r=r+5504|0;q=p+5492|0;s=p;t=p+5320|0;u=p+5480|0;v=p+5468|0;w=p+5456|0;x=p+5184|0;y=p+5168|0;z=p+4884|0;A=p+4872|0;C=p+5032|0;D=p+4860|0;E=p+4848|0;F=p+4836|0;G=p+4896|0;H=p+4824|0;I=p+4812|0;J=p+4800|0;K=(d|0)==0;L=K?b:c;M=K?c:b;if(!h)if((M|0)==(f|0))N=g;else{K=t+56|0;O=t+4|0;k[t>>2]=27524;k[K>>2]=27544;B=0;wa(508,t+56|0,O|0);P=B;B=0;if(P&1){P=Rb()|0;R=Q;S=P;vva(K);Qb(S|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[K>>2]=27488;B=0;va(448,O|0);P=B;B=0;do if(P&1){T=Rb()|0;U=Q;V=T}else{k[O>>2]=27560;T=t+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[t+52>>2]=16;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;B=0;wa(509,O|0,q|0);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Yua(q);Yua(T);Ava(O);U=X;V=W;break}Yua(q);B=0;W=Ia(40,t|0,86767,44)|0;X=B;B=0;a:do if(!(X&1)?(B=0,Xa(239,W|0,0)|0,Y=B,B=0,!(Y&1)):0){Y=Ab(20)|0;B=0;eb(502,u|0,86812,76);Z=B;B=0;do if(!(Z&1)){B=0;eb(502,v|0,86889,14);_=B;B=0;if(_&1){_=Rb()|0;$=Q;Yua(u);aa=$;ba=_;break}B=0;wa(510,w|0,O|0);_=B;B=0;if(_&1){_=Rb()|0;ca=Q;da=_;ea=1}else{B=0;ua(163,Y|0,u|0,v|0,40,w|0);_=B;B=0;if(_&1)fa=1;else{B=0;eb(503,Y|0,1240,229);B=0;fa=0}_=Rb()|0;$=Q;Yua(w);ca=$;da=_;ea=fa}Yua(v);Yua(u);if(ea){aa=ca;ba=da}else{ga=ca;ha=da;break a}}else{_=Rb()|0;aa=Q;ba=_}while(0);zb(Y|0);ga=aa;ha=ba}else ia=18;while(0);if((ia|0)==18){W=Rb()|0;ga=Q;ha=W}k[t>>2]=27468;k[K>>2]=27488;k[O>>2]=27560;Yua(T);Ava(O);vva(K);ja=ga;ka=ha;Qb(ka|0)}while(0);R=U;S=V;vva(K);Qb(S|0)}else if((M|0)==(g|0))N=f;else{S=x+56|0;K=x+4|0;k[x>>2]=27524;k[S>>2]=27544;B=0;wa(508,x+56|0,K|0);V=B;B=0;if(V&1){V=Rb()|0;la=Q;na=V;vva(S);Qb(na|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[S>>2]=27488;B=0;va(448,K|0);V=B;B=0;do if(V&1){U=Rb()|0;oa=Q;pa=U}else{k[K>>2]=27560;U=x+36|0;k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;k[U+12>>2]=0;k[x+52>>2]=16;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;B=0;wa(509,K|0,q|0);R=B;B=0;if(R&1){R=Rb()|0;ha=Q;Yua(q);Yua(U);Ava(K);oa=ha;pa=R;break}Yua(q);B=0;R=Ia(40,x|0,86767,44)|0;ha=B;B=0;b:do if(!(ha&1)?(B=0,Xa(239,R|0,0)|0,ga=B,B=0,!(ga&1)):0){ga=Ab(20)|0;B=0;eb(502,y|0,86812,76);O=B;B=0;do if(!(O&1)){B=0;eb(502,z|0,86889,14);t=B;B=0;if(t&1){t=Rb()|0;ba=Q;Yua(y);qa=t;ra=ba;break}B=0;wa(510,A|0,K|0);ba=B;B=0;if(ba&1){ba=Rb()|0;sa=1;ta=Q;xa=ba}else{B=0;ua(163,ga|0,y|0,z|0,44,A|0);ba=B;B=0;if(ba&1)ya=1;else{B=0;eb(503,ga|0,1240,229);B=0;ya=0}ba=Rb()|0;t=Q;Yua(A);sa=ya;ta=t;xa=ba}Yua(z);Yua(y);if(sa){qa=xa;ra=ta}else{za=ta;Aa=xa;break b}}else{ba=Rb()|0;qa=ba;ra=Q}while(0);zb(ga|0);za=ra;Aa=qa}else ia=42;while(0);if((ia|0)==42){R=Rb()|0;za=Q;Aa=R}k[x>>2]=27468;k[S>>2]=27488;k[K>>2]=27560;Yua(U);Ava(K);vva(S);ja=za;ka=Aa;Qb(ka|0)}while(0);la=oa;na=pa;vva(S);Qb(na|0)}if(!m)if((N|0)==(j|0))Ba=l;else{na=C+56|0;S=C+4|0;k[C>>2]=27524;k[na>>2]=27544;B=0;wa(508,C+56|0,S|0);pa=B;B=0;if(pa&1){pa=Rb()|0;Ca=Q;Da=pa;vva(na);Qb(Da|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[na>>2]=27488;B=0;va(448,S|0);pa=B;B=0;do if(pa&1){oa=Rb()|0;Ea=Q;Fa=oa}else{k[S>>2]=27560;oa=C+36|0;k[oa>>2]=0;k[oa+4>>2]=0;k[oa+8>>2]=0;k[oa+12>>2]=0;k[C+52>>2]=16;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;B=0;wa(509,S|0,q|0);la=B;B=0;if(la&1){la=Rb()|0;Aa=Q;Yua(q);Yua(oa);Ava(S);Ea=Aa;Fa=la;break}Yua(q);B=0;la=Ia(40,C|0,86904,44)|0;Aa=B;B=0;c:do if(!(Aa&1)?(B=0,Xa(239,la|0,0)|0,za=B,B=0,!(za&1)):0){za=Ab(20)|0;B=0;eb(502,D|0,86812,76);K=B;B=0;do if(!(K&1)){B=0;eb(502,E|0,86889,14);x=B;B=0;if(x&1){x=Rb()|0;qa=Q;Yua(D);Ga=x;Ha=qa;break}B=0;wa(510,F|0,S|0);qa=B;B=0;if(qa&1){qa=Rb()|0;Ja=1;Ka=Q;La=qa}else{B=0;ua(163,za|0,D|0,E|0,49,F|0);qa=B;B=0;if(qa&1)Ma=1;else{B=0;eb(503,za|0,1240,229);B=0;Ma=0}qa=Rb()|0;x=Q;Yua(F);Ja=Ma;Ka=x;La=qa}Yua(E);Yua(D);if(Ja){Ga=La;Ha=Ka}else{Na=Ka;Oa=La;break c}}else{qa=Rb()|0;Ga=qa;Ha=Q}while(0);zb(za|0);Na=Ha;Oa=Ga}else ia=67;while(0);if((ia|0)==67){la=Rb()|0;Na=Q;Oa=la}k[C>>2]=27468;k[na>>2]=27488;k[S>>2]=27560;Yua(oa);Ava(S);vva(na);ja=Na;ka=Oa;Qb(ka|0)}while(0);Ca=Ea;Da=Fa;vva(na);Qb(Da|0)}else if((N|0)==(l|0))Ba=j;else{Da=G+56|0;na=G+4|0;k[G>>2]=27524;k[Da>>2]=27544;B=0;wa(508,G+56|0,na|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Pa=Q;Qa=Fa;vva(Da);Qb(Qa|0)}k[G+128>>2]=0;k[G+132>>2]=-1;k[G>>2]=27468;k[Da>>2]=27488;B=0;va(448,na|0);Fa=B;B=0;do if(Fa&1){Ea=Rb()|0;Ra=Q;Sa=Ea}else{k[na>>2]=27560;Ea=G+36|0;k[Ea>>2]=0;k[Ea+4>>2]=0;k[Ea+8>>2]=0;k[Ea+12>>2]=0;k[G+52>>2]=16;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;B=0;wa(509,na|0,q|0);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Oa=Q;Yua(q);Yua(Ea);Ava(na);Ra=Oa;Sa=Ca;break}Yua(q);B=0;Ca=Ia(40,G|0,86904,44)|0;Oa=B;B=0;d:do if(!(Oa&1)?(B=0,Xa(239,Ca|0,0)|0,Na=B,B=0,!(Na&1)):0){Na=Ab(20)|0;B=0;eb(502,H|0,86812,76);S=B;B=0;do if(!(S&1)){B=0;eb(502,I|0,86889,14);C=B;B=0;if(C&1){C=Rb()|0;Ga=Q;Yua(H);Ta=C;Ua=Ga;break}B=0;wa(510,J|0,na|0);Ga=B;B=0;if(Ga&1){Ga=Rb()|0;Va=1;Wa=Q;Ya=Ga}else{B=0;ua(163,Na|0,H|0,I|0,53,J|0);Ga=B;B=0;if(Ga&1)Za=1;else{B=0;eb(503,Na|0,1240,229);B=0;Za=0}Ga=Rb()|0;C=Q;Yua(J);Va=Za;Wa=C;Ya=Ga}Yua(I);Yua(H);if(Va){Ta=Ya;Ua=Wa}else{_a=Wa;$a=Ya;break d}}else{Ga=Rb()|0;Ta=Ga;Ua=Q}while(0);zb(Na|0);_a=Ua;$a=Ta}else ia=91;while(0);if((ia|0)==91){Ca=Rb()|0;_a=Q;$a=Ca}k[G>>2]=27468;k[Da>>2]=27488;k[na>>2]=27560;Yua(Ea);Ava(na);vva(Da);ja=_a;ka=$a;Qb(ka|0)}while(0);Pa=Ra;Qa=Sa;vva(Da);Qb(Qa|0)}Qa=ma(N,L)|0;if((Qa|0)>600){Da=Rqa(Qa>>>0>536870911?-1:Qa<<3)|0;ab=Da;bb=Da}else{ab=s;bb=0}if((ma(Ba+M|0,Qa)|0)>(ma(ma(N+L|0,M)|0,Ba)|0)){_X(e,f,g,h,i,j,l,m,ab,0)|0;_X(a,b,c,d,ab,M,Ba,0,n,o)|0}else{_X(a,b,c,d,e,f,g,h,ab,0)|0;_X(ab,L,N,0,i,j,l,m,n,o)|0}if(!bb){r=p;return 1}Tqa(bb);r=p;return 1}function _X(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0;l=r;r=r+192|0;m=l+176|0;n=l+40|0;o=l+24|0;q=l+12|0;s=l;t=(d|0)==0;d=t?b:c;u=t?c:1;v=t?1:c;w=t?c:b;b=(h|0)==0;h=b?g:f;c=b?g:1;t=b?1:g;if((w|0)==((b?f:g)|0)){if((j|0)==0?(j=ma(h,d)|0,(j|0)>0):0)WEa(i|0,0,j<<3|0)|0;if((d|0)<=0){r=l;return 1}j=(w|0)>0;if((h|0)>0){x=0;y=0}else{r=l;return 1}while(1){g=ma(x,u)|0;if(j){f=y;b=0;while(1){z=ma(b,t)|0;A=i+(f<<3)|0;C=+p[A>>3];D=g;E=z;z=0;while(1){C=C+ +p[a+(D<<3)>>3]*+p[e+(E<<3)>>3];p[A>>3]=C;z=z+1|0;if((z|0)==(w|0))break;else{D=D+v|0;E=E+c|0}}b=b+1|0;if((b|0)==(h|0))break;else f=f+1|0}}x=x+1|0;if((x|0)==(d|0))break;else y=h+y|0}r=l;return 1}l=n+56|0;y=n+4|0;k[n>>2]=27524;k[l>>2]=27544;B=0;wa(508,n+56|0,y|0);h=B;B=0;if(h&1){h=Rb()|0;F=Q;G=h;vva(l);Qb(G|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[l>>2]=27488;B=0;va(448,y|0);h=B;B=0;do if(h&1){d=Rb()|0;H=Q;I=d}else{k[y>>2]=27560;d=n+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[n+52>>2]=16;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;B=0;wa(509,y|0,m|0);x=B;B=0;if(x&1){x=Rb()|0;c=Q;Yua(m);Yua(d);Ava(y);H=c;I=x;break}Yua(m);B=0;x=Ia(40,n|0,86949,43)|0;c=B;B=0;if(!(c&1)?(B=0,Xa(239,x|0,0)|0,x=B,B=0,!(x&1)):0){x=Ab(20)|0;B=0;eb(502,o|0,86812,76);c=B;B=0;do if(!(c&1)){B=0;eb(502,q|0,86993,14);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(o);J=w;K=v;break}B=0;wa(510,s|0,y|0);v=B;B=0;if(v&1){v=Rb()|0;L=Q;M=v;N=1}else{B=0;ua(163,x|0,o|0,q|0,124,s|0);v=B;B=0;if(v&1)O=1;else{B=0;eb(503,x|0,1240,229);B=0;O=0}v=Rb()|0;w=Q;Yua(s);L=w;M=v;N=O}Yua(q);Yua(o);if(N){J=L;K=M}else{P=L;R=M;k[n>>2]=27468;k[l>>2]=27488;k[y>>2]=27560;Yua(d);Ava(y);vva(l);Qb(R|0)}}else{v=Rb()|0;J=Q;K=v}while(0);zb(x|0);P=J;R=K;k[n>>2]=27468;k[l>>2]=27488;k[y>>2]=27560;Yua(d);Ava(y);vva(l);Qb(R|0)}c=Rb()|0;P=Q;R=c;k[n>>2]=27468;k[l>>2]=27488;k[y>>2]=27560;Yua(d);Ava(y);vva(l);Qb(R|0)}while(0);F=H;G=I;vva(l);Qb(G|0);return 0}function $X(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0,Z=0,_=0.0,aa=0,ba=0,ca=0.0,da=0,ea=0,fa=0.0,ga=0.0,ha=0,ia=0.0,ja=0,ka=0.0,la=0.0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0;g=r;r=r+368|0;h=g+344|0;i=g+208|0;j=g+196|0;l=g+184|0;m=g+36|0;n=g+48|0;o=g+24|0;q=g+12|0;s=g;if((d|0)==0&(e|0)!=0){t=i+56|0;u=i+4|0;k[i>>2]=27524;k[t>>2]=27544;B=0;wa(508,i+56|0,u|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;x=v;vva(t);Qb(x|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[t>>2]=27488;B=0;va(448,u|0);v=B;B=0;do if(v&1){y=Rb()|0;z=Q;A=y}else{k[u>>2]=27560;y=i+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[i+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,u|0,h|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(h);Yua(y);Ava(u);z=D;A=C;break}Yua(h);B=0;C=Ia(40,i|0,87008,28)|0;D=B;B=0;a:do if(((!(D&1)?(B=0,E=Xa(242,C|0,e|0)|0,F=B,B=0,!(F&1)):0)?(B=0,F=Ia(40,E|0,157077,1)|0,E=B,B=0,!(E&1)):0)?(B=0,Xa(239,F|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,j|0,86812,76);E=B;B=0;do if(!(E&1)){B=0;eb(502,l|0,87037,13);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(j);I=G;J=H;break}B=0;wa(510,m|0,u|0);H=B;B=0;if(H&1){H=Rb()|0;K=H;L=Q;M=1}else{B=0;ua(163,F|0,j|0,l|0,166,m|0);H=B;B=0;if(H&1)N=1;else{B=0;eb(503,F|0,1240,229);B=0;N=0}H=Rb()|0;G=Q;Yua(m);K=H;L=G;M=N}Yua(l);Yua(j);if(M){I=K;J=L}else{O=K;P=L;break a}}else{G=Rb()|0;I=G;J=Q}while(0);zb(F|0);O=I;P=J}else R=19;while(0);if((R|0)==19){C=Rb()|0;O=C;P=Q}k[i>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(t);S=P;T=O;Qb(T|0)}while(0);w=z;x=A;vva(t);Qb(x|0)}x=c>>>0>1073741823?-1:c<<2;t=Rqa(x)|0;A=Rqa(x)|0;z=Rqa(x)|0;x=(c|0)>0;b:do if(x){w=(e|0)>0;U=1.0;O=0;P=0;u=0;while(1){i=P;J=u;I=0;V=0.0;while(1){if(!(k[z+(I<<2)>>2]|0)){L=ma(I,b)|0;K=i;M=J;j=0;W=V;while(1){if((k[z+(j<<2)>>2]|0)==0?(X=+p[a+(j+L<<3)>>3],+$(+X)>+$(+W)):0){Y=j;Z=I;_=X}else{Y=K;Z=M;_=W}j=j+1|0;if((j|0)==(c|0)){aa=Y;ba=Z;ca=_;break}else{K=Y;M=Z;W=_}}}else{aa=i;ba=J;ca=V}I=I+1|0;if((I|0)==(c|0)){da=aa;ea=ba;fa=ca;break}else{i=aa;J=ba;V=ca}}if(+$(+fa)<2.220446049250313e-16){ga=fa;break}k[t+(O<<2)>>2]=ea;k[A+(O<<2)>>2]=da;J=z+(da<<2)|0;k[J>>2]=(k[J>>2]|0)+1;if((ea|0)==(da|0)){ha=ma(da,b)|0;ia=U}else{J=ma(ea,b)|0;i=ma(da,b)|0;I=0;do{F=a+(I+J<<3)|0;V=+p[F>>3];M=a+(I+i<<3)|0;p[F>>3]=+p[M>>3];p[M>>3]=V;I=I+1|0}while((I|0)!=(c|0));I=ma(ea,e)|0;J=ma(da,e)|0;if(w){M=0;do{F=d+(M+I<<3)|0;V=+p[F>>3];K=d+(M+J<<3)|0;p[F>>3]=+p[K>>3];p[K>>3]=V;M=M+1|0}while((M|0)!=(e|0))}ha=i;ia=-U}p[a+(ha+da<<3)>>3]=1.0;M=0;do{J=a+(M+ha<<3)|0;p[J>>3]=+p[J>>3]/fa;M=M+1|0}while((M|0)!=(c|0));M=ma(da,e)|0;if(w){i=0;do{J=d+(i+M<<3)|0;p[J>>3]=+p[J>>3]/fa;i=i+1|0}while((i|0)!=(e|0));if(w){i=0;do{if((i|0)!=(da|0)?(J=ma(i,b)|0,I=a+(J+da<<3)|0,V=+p[I>>3],p[I>>3]=0.0,+$(+V)>2.220446049250313e-16):0){I=0;do{K=a+(I+J<<3)|0;p[K>>3]=+p[K>>3]-V*+p[a+(I+ha<<3)>>3];I=I+1|0}while((I|0)!=(c|0));I=ma(i,e)|0;J=0;do{K=d+(J+I<<3)|0;p[K>>3]=+p[K>>3]-V*+p[d+(J+M<<3)>>3];J=J+1|0}while((J|0)!=(e|0))}i=i+1|0}while((i|0)!=(c|0))}else{ja=0;R=86}}else{ja=0;R=86}if((R|0)==86)while(1){R=0;if((ja|0)!=(da|0)?(i=ma(ja,b)|0,M=a+(i+da<<3)|0,V=+p[M>>3],p[M>>3]=0.0,+$(+V)>2.220446049250313e-16):0){M=0;do{J=a+(M+i<<3)|0;p[J>>3]=+p[J>>3]-V*+p[a+(M+ha<<3)>>3];M=M+1|0}while((M|0)!=(c|0))}ja=ja+1|0;if((ja|0)==(c|0))break;else R=86}V=fa*ia;M=O+1|0;if((M|0)<(c|0)){U=V;O=M;P=da;u=ea}else{ka=V;R=37;break}}if((R|0)==37){if(!x){la=ka;break}u=c+-1|0;P=0;while(1){O=u-P|0;w=k[t+(O<<2)>>2]|0;y=k[A+(O<<2)>>2]|0;if((w|0)!=(y|0)){O=0;M=0;while(1){i=a+(O+w<<3)|0;U=+p[i>>3];J=a+(O+y<<3)|0;p[i>>3]=+p[J>>3];p[J>>3]=U;M=M+1|0;if((M|0)==(c|0))break;else O=O+b|0}}P=P+1|0;if((P|0)==(c|0)){la=ka;break b}}}Tqa(t);Tqa(A);Tqa(z);P=n+56|0;u=n+4|0;k[n>>2]=27524;k[P>>2]=27544;B=0;wa(508,n+56|0,u|0);O=B;B=0;if(O&1){O=Rb()|0;na=Q;oa=O;vva(P);Qb(oa|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[P>>2]=27488;B=0;va(448,u|0);O=B;B=0;do if(O&1){M=Rb()|0;pa=Q;qa=M}else{k[u>>2]=27560;M=n+36|0;k[M>>2]=0;k[M+4>>2]=0;k[M+8>>2]=0;k[M+12>>2]=0;k[n+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,u|0,h|0);y=B;B=0;if(y&1){y=Rb()|0;w=Q;Yua(h);Yua(M);Ava(u);pa=w;qa=y;break}Yua(h);B=0;y=Ia(40,n|0,87051,6)|0;w=B;B=0;c:do if(((!(w&1)?(B=0,J=Sa(1,y|0,+ga)|0,i=B,B=0,!(i&1)):0)?(B=0,i=Ia(40,J|0,87058,26)|0,J=B,B=0,!(J&1)):0)?(B=0,Xa(239,i|0,0)|0,i=B,B=0,!(i&1)):0){i=Ab(20)|0;B=0;eb(502,o|0,86812,76);J=B;B=0;do if(!(J&1)){B=0;eb(502,q|0,87037,13);I=B;B=0;if(I&1){I=Rb()|0;K=Q;Yua(o);ra=I;sa=K;break}B=0;wa(510,s|0,u|0);K=B;B=0;if(K&1){K=Rb()|0;ta=1;xa=Q;ya=K}else{B=0;ua(163,i|0,o|0,q|0,205,s|0);K=B;B=0;if(K&1)za=1;else{B=0;eb(503,i|0,1240,229);B=0;za=0}K=Rb()|0;I=Q;Yua(s);ta=za;xa=I;ya=K}Yua(q);Yua(o);if(ta){ra=ya;sa=xa}else{Aa=xa;Ba=ya;break c}}else{K=Rb()|0;ra=K;sa=Q}while(0);zb(i|0);Aa=sa;Ba=ra}else R=60;while(0);if((R|0)==60){y=Rb()|0;Aa=Q;Ba=y}k[n>>2]=27468;k[P>>2]=27488;k[u>>2]=27560;Yua(M);Ava(u);vva(P);S=Aa;T=Ba;Qb(T|0)}while(0);na=pa;oa=qa;vva(P);Qb(oa|0)}else la=1.0;while(0);if(!f){Tqa(t);Tqa(A);Tqa(z);r=g;return 1}p[f>>3]=la;Tqa(t);Tqa(A);Tqa(z);r=g;return 1}function aY(a,b){a=a|0;b=b|0;p[a>>3]=+p[b>>3]*+p[b+24>>3]-+p[b+16>>3]*+p[b+8>>3];return}function bY(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0.0,j=0,l=0,m=0.0,n=0.0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;i=+p[b+24>>3];j=b+16|0;l=b+8|0;m=+p[b>>3]*i-+p[j>>3]*+p[l>>3];if(!(+$(+m)<2.220446049250313e-16)){n=1.0/m;p[a>>3]=i*n;p[a+8>>3]=-(n*+p[l>>3]);p[a+16>>3]=-(n*+p[j>>3]);p[a+24>>3]=n*+p[b>>3];r=c;return}c=e+56|0;b=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;o=Q;q=a;vva(c);Qb(q|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){j=Rb()|0;s=Q;t=j}else{k[b>>2]=27560;j=e+36|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);l=B;B=0;if(l&1){l=Rb()|0;u=Q;Yua(d);Yua(j);Ava(b);s=u;t=l;break}Yua(d);B=0;l=Ia(40,e|0,87085,40)|0;u=B;B=0;if(!(u&1)?(B=0,Xa(239,l|0,0)|0,l=B,B=0,!(l&1)):0){l=Ab(20)|0;B=0;eb(502,f|0,86812,76);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,87126,15);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(f);x=w;y=v;break}B=0;wa(510,h|0,b|0);v=B;B=0;if(v&1){v=Rb()|0;z=Q;A=v;C=1}else{B=0;ua(163,l|0,f|0,g|0,336,h|0);v=B;B=0;if(v&1)D=1;else{B=0;eb(503,l|0,1240,229);B=0;D=0}v=Rb()|0;w=Q;Yua(h);z=w;A=v;C=D}Yua(g);Yua(f);if(C){x=z;y=A}else{E=z;F=A;k[e>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(j);Ava(b);vva(c);Qb(F|0)}}else{v=Rb()|0;x=Q;y=v}while(0);zb(l|0);E=x;F=y;k[e>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(j);Ava(b);vva(c);Qb(F|0)}u=Rb()|0;E=Q;F=u;k[e>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(j);Ava(b);vva(c);Qb(F|0)}while(0);o=s;q=t;vva(c);Qb(q|0)}function cY(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;var h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0;h=-e-g;i=f*f;j=h*h-(e*g-i)*4.0;k=i+(e*e+g*g);do if(!(k<1.0e-30)){if(j<k*1.0e-05){l=h*-.5;m=l;n=l;o=1.0;q=0.0;break}l=+aa(+j);r=(-h-l)*.5;s=(l-h)*.5;l=e-r;t=i+l*l;u=g-r;v=i+u*u;if(v<t){w=+aa(+t);m=r;n=s;o=-f/w;q=l/w;break}else{w=+aa(+v);m=r;n=s;o=-u/w;q=f/w;break}}else{m=0.0;n=0.0;o=1.0;q=0.0}while(0);p[a>>3]=m;p[b>>3]=n;p[c>>3]=o;p[d>>3]=q;return}function dY(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0;c=+p[b>>3];d=+p[b+32>>3];e=+p[b+64>>3];f=+p[b+40>>3];g=+p[b+56>>3];h=+p[b+24>>3];i=+p[b+8>>3];j=+p[b+16>>3];k=+p[b+48>>3];p[a>>3]=c*d*e-c*f*g-e*(h*i)+g*(h*j)+f*(i*k)-d*(j*k);return}function eY(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0.0,j=0,l=0.0,m=0,n=0.0,o=0,q=0.0,s=0,t=0.0,u=0,v=0.0,w=0,x=0.0,y=0,z=0.0,A=0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;i=+p[b>>3];j=b+32|0;l=+p[j>>3];m=b+64|0;n=+p[m>>3];o=b+40|0;q=+p[o>>3];s=b+56|0;t=+p[s>>3];u=b+24|0;v=+p[u>>3];w=b+8|0;x=+p[w>>3];y=b+16|0;z=+p[y>>3];A=b+48|0;C=+p[A>>3];D=i*l*n-i*q*t-n*(v*x)+t*(v*z)+q*(x*C)-l*(z*C);if(!(+$(+D)<2.220446049250313e-16)){C=1.0/D;p[a>>3]=(l*n-q*t)*C;p[a+8>>3]=C*(+p[y>>3]*+p[s>>3]-+p[w>>3]*+p[m>>3]);p[a+16>>3]=C*(+p[w>>3]*+p[o>>3]-+p[y>>3]*+p[j>>3]);p[a+24>>3]=C*(+p[o>>3]*+p[A>>3]-+p[u>>3]*+p[m>>3]);p[a+32>>3]=C*(+p[b>>3]*+p[m>>3]-+p[y>>3]*+p[A>>3]);p[a+40>>3]=C*(+p[y>>3]*+p[u>>3]-+p[b>>3]*+p[o>>3]);p[a+48>>3]=C*(+p[u>>3]*+p[s>>3]-+p[j>>3]*+p[A>>3]);p[a+56>>3]=C*(+p[w>>3]*+p[A>>3]-+p[b>>3]*+p[s>>3]);p[a+64>>3]=C*(+p[b>>3]*+p[j>>3]-+p[w>>3]*+p[u>>3]);r=c;return}c=e+56|0;u=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,u|0);w=B;B=0;if(w&1){w=Rb()|0;E=Q;F=w;vva(c);Qb(F|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,u|0);w=B;B=0;do if(w&1){j=Rb()|0;G=Q;H=j}else{k[u>>2]=27560;j=e+36|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,u|0,d|0);b=B;B=0;if(b&1){b=Rb()|0;a=Q;Yua(d);Yua(j);Ava(u);G=a;H=b;break}Yua(d);B=0;b=Ia(40,e|0,87085,40)|0;a=B;B=0;if(!(a&1)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,f|0,86812,76);a=B;B=0;do if(!(a&1)){B=0;eb(502,g|0,87142,15);s=B;B=0;if(s&1){s=Rb()|0;A=Q;Yua(f);I=A;J=s;break}B=0;wa(510,h|0,u|0);s=B;B=0;if(s&1){s=Rb()|0;K=Q;L=s;M=1}else{B=0;ua(163,b|0,f|0,g|0,456,h|0);s=B;B=0;if(s&1)N=1;else{B=0;eb(503,b|0,1240,229);B=0;N=0}s=Rb()|0;A=Q;Yua(h);K=A;L=s;M=N}Yua(g);Yua(f);if(M){I=K;J=L}else{O=K;P=L;k[e>>2]=27468;k[c>>2]=27488;k[u>>2]=27560;Yua(j);Ava(u);vva(c);Qb(P|0)}}else{s=Rb()|0;I=Q;J=s}while(0);zb(b|0);O=I;P=J;k[e>>2]=27468;k[c>>2]=27488;k[u>>2]=27560;Yua(j);Ava(u);vva(c);Qb(P|0)}a=Rb()|0;O=Q;P=a;k[e>>2]=27468;k[c>>2]=27488;k[u>>2]=27560;Yua(j);Ava(u);vva(c);Qb(P|0)}while(0);E=G;F=H;vva(c);Qb(F|0)}function fY(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=r;r=r+80|0;e=d;eY(e,b);b=c+8|0;f=c+16|0;p[a>>3]=+p[e>>3]*+p[c>>3]+ +p[e+8>>3]*+p[b>>3]+ +p[e+16>>3]*+p[f>>3];p[a+8>>3]=+p[e+24>>3]*+p[c>>3]+ +p[e+32>>3]*+p[b>>3]+ +p[e+40>>3]*+p[f>>3];p[a+16>>3]=+p[e+48>>3]*+p[c>>3]+ +p[e+56>>3]*+p[b>>3]+ +p[e+64>>3]*+p[f>>3];r=d;return}function gY(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0;c=+p[b>>3];d=+p[b+8>>3];e=+p[b+16>>3];f=+p[b+24>>3];g=+p[b+32>>3];h=+p[b+40>>3];i=+p[b+48>>3];j=+p[b+56>>3];k=+p[b+64>>3];l=+p[b+72>>3];m=+p[b+80>>3];n=+p[b+88>>3];o=+p[b+96>>3];q=+p[b+104>>3];r=+p[b+112>>3];s=+p[b+120>>3];p[a>>3]=j*l*r+(n*(i*q)+(h*m*s-n*(h*r)-i*l*s))-m*(j*q);t=i*k;u=i*o;v=j*k;w=j*o;p[a+32>>3]=-(v*r+(n*u+(g*m*s-n*(g*r)-t*s))-m*w);x=g*l;y=g*q;z=h*k;A=h*o;p[a+64>>3]=v*q+(n*A+(x*s-n*y-z*s))-l*w;p[a+96>>3]=-(t*q+(m*A+(x*r-m*y-z*r))-l*u);u=d*m;z=d*r;y=e*l;x=e*q;A=f*l;t=f*q;p[a+8>>3]=-(A*r+(n*x+(u*s-n*z-y*s))-m*t);w=c*m;v=c*r;B=e*k;C=e*o;D=f*k;E=f*o;p[a+40>>3]=D*r+(n*C+(w*s-n*v-B*s))-m*E;F=c*l;G=c*q;H=d*k;k=d*o;p[a+72>>3]=-(D*q+(n*k+(F*s-n*G-H*s))-l*E);p[a+104>>3]=B*q+(m*k+(F*r-m*G-H*r))-l*C;o=d*i;I=e*h;J=f*h;p[a+16>>3]=J*r+(j*x+(o*s-j*z-I*s))-i*t;t=c*i;z=e*g;e=f*g;p[a+48>>3]=-(e*r+(j*C+(t*s-j*v-z*s))-i*E);v=c*h;c=d*g;p[a+80>>3]=e*q+(j*k+(v*s-j*G-c*s))-h*E;p[a+112>>3]=-(z*q+(i*k+(v*r-i*G-c*r))-h*C);p[a+24>>3]=-(J*m+(j*y+(o*n-j*u-I*n))-i*A);p[a+56>>3]=e*m+(j*B+(t*n-j*w-z*n))-i*D;p[a+88>>3]=-(e*l+(j*H+(v*n-j*F-c*n))-h*D);p[a+120>>3]=z*l+(i*H+(v*m-i*F-c*m))-h*B;return}function hY(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0.0,j=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,C=0.0,D=0.0,E=0.0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;i=+p[b+32>>3];j=+p[b+40>>3];l=+p[b+48>>3];m=+p[b+56>>3];n=+p[b+64>>3];o=+p[b+72>>3];q=+p[b+80>>3];s=+p[b+88>>3];t=+p[b+96>>3];u=+p[b+104>>3];v=+p[b+112>>3];w=+p[b+120>>3];x=l*n;y=l*t;z=m*n;A=m*t;C=i*o;D=i*u;E=j*n;n=j*t;t=+p[b+16>>3]*(z*u+(s*n+(C*w-s*D-E*w))-o*A)+(+p[b>>3]*(m*o*v+(s*(l*u)+(j*q*w-s*(j*v)-l*o*w))-q*(m*u))-+p[b+8>>3]*(z*v+(s*y+(i*q*w-s*(i*v)-x*w))-q*A))-+p[b+24>>3]*(x*u+(q*n+(C*v-q*D-E*v))-o*y);if(!(+$(+t)<2.220446049250313e-16)){y=1.0/t;gY(a,b);p[a>>3]=y*+p[a>>3];b=a+8|0;p[b>>3]=y*+p[b>>3];b=a+16|0;p[b>>3]=y*+p[b>>3];b=a+24|0;p[b>>3]=y*+p[b>>3];b=a+32|0;p[b>>3]=y*+p[b>>3];b=a+40|0;p[b>>3]=y*+p[b>>3];b=a+48|0;p[b>>3]=y*+p[b>>3];b=a+56|0;p[b>>3]=y*+p[b>>3];b=a+64|0;p[b>>3]=y*+p[b>>3];b=a+72|0;p[b>>3]=y*+p[b>>3];b=a+80|0;p[b>>3]=y*+p[b>>3];b=a+88|0;p[b>>3]=y*+p[b>>3];b=a+96|0;p[b>>3]=y*+p[b>>3];b=a+104|0;p[b>>3]=y*+p[b>>3];b=a+112|0;p[b>>3]=y*+p[b>>3];b=a+120|0;p[b>>3]=y*+p[b>>3];r=c;return}c=e+56|0;b=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;F=Q;G=a;vva(c);Qb(G|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){H=Rb()|0;I=Q;J=H}else{k[b>>2]=27560;H=e+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);K=B;B=0;if(K&1){K=Rb()|0;L=Q;Yua(d);Yua(H);Ava(b);I=L;J=K;break}Yua(d);B=0;K=Ia(40,e|0,87085,40)|0;L=B;B=0;if(!(L&1)?(B=0,Xa(239,K|0,0)|0,K=B,B=0,!(K&1)):0){K=Ab(20)|0;B=0;eb(502,f|0,86812,76);L=B;B=0;do if(!(L&1)){B=0;eb(502,g|0,87158,15);M=B;B=0;if(M&1){M=Rb()|0;N=Q;Yua(f);O=N;P=M;break}B=0;wa(510,h|0,b|0);M=B;B=0;if(M&1){M=Rb()|0;R=Q;S=M;T=1}else{B=0;ua(163,K|0,f|0,g|0,560,h|0);M=B;B=0;if(M&1)U=1;else{B=0;eb(503,K|0,1240,229);B=0;U=0}M=Rb()|0;N=Q;Yua(h);R=N;S=M;T=U}Yua(g);Yua(f);if(T){O=R;P=S}else{V=R;W=S;k[e>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(H);Ava(b);vva(c);Qb(W|0)}}else{M=Rb()|0;O=Q;P=M}while(0);zb(K|0);V=O;W=P;k[e>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(H);Ava(b);vva(c);Qb(W|0)}L=Rb()|0;V=Q;W=L;k[e>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(H);Ava(b);vva(c);Qb(W|0)}while(0);F=I;G=J;vva(c);Qb(G|0)}function iY(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=r;r=r+128|0;e=d;hY(e,b);b=c+8|0;f=c+16|0;g=c+24|0;p[a>>3]=+p[e>>3]*+p[c>>3]+ +p[e+8>>3]*+p[b>>3]+ +p[e+16>>3]*+p[f>>3]+ +p[e+24>>3]*+p[g>>3];p[a+8>>3]=+p[e+32>>3]*+p[c>>3]+ +p[e+40>>3]*+p[b>>3]+ +p[e+48>>3]*+p[f>>3]+ +p[e+56>>3]*+p[g>>3];p[a+16>>3]=+p[e+64>>3]*+p[c>>3]+ +p[e+72>>3]*+p[b>>3]+ +p[e+80>>3]*+p[f>>3]+ +p[e+88>>3]*+p[g>>3];p[a+24>>3]=+p[e+96>>3]*+p[c>>3]+ +p[e+104>>3]*+p[b>>3]+ +p[e+112>>3]*+p[f>>3]+ +p[e+120>>3]*+p[g>>3];r=d;return}function jY(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=k[a>>2]|0;f=d+1|0;g=Rqa(f>>>0>536870911?-1:f<<3)|0;if((d|0)>0){f=e;h=0;do{i=h;h=h+1|0;p[g+(h<<3)>>3]=+p[f+(i<<3)>>3]}while((h|0)!=(d|0))}if(c)p[g>>3]=b;else p[g+(d<<3)>>3]=b;if(!e){k[a>>2]=g;return}Tqa(e);k[a>>2]=g;return}function kY(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0.0;if((b|0)>0){c=0;d=0.0}else{e=0.0;return +e}while(1){f=d+ +p[a+(c<<3)>>3];c=c+1|0;if((c|0)==(b|0)){e=f;break}else d=f}return +e}function lY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;b=k[a>>2]|0;e=Rqa(d>>>0>536870911?-1:d<<3)|0;if((d|0)>0){f=b;g=0;do{p[e+(g<<3)>>3]=+p[f+(k[c+(g<<2)>>2]<<3)>>3];g=g+1|0}while((g|0)!=(d|0))}if(!b){k[a>>2]=e;return}Tqa(b);k[a>>2]=e;return}function mY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0,h=0;e=k[a>>2]|0;f=b+1|0;g=Rqa(f>>>0>536870911?-1:f<<3)|0;if((c|0)>0){f=0;do{p[g+(f<<3)>>3]=+p[e+(f<<3)>>3];f=f+1|0}while((f|0)!=(c|0))}f=e+(c<<3)|0;p[g+(c<<3)>>3]=+p[f>>3]*d;p[g+(c+1<<3)>>3]=+p[f>>3]*d;f=c+2|0;if((f|0)>(b|0)){Tqa(e);k[a>>2]=g;return}else h=f;while(1){p[g+(h<<3)>>3]=+p[e+(h+-1<<3)>>3];if((h|0)<(b|0))h=h+1|0;else break}Tqa(e);k[a>>2]=g;return}function nY(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;c=r;r=r+368|0;d=c+344|0;e=c+208|0;f=c+196|0;g=c+184|0;h=c+36|0;i=c+48|0;j=c+24|0;l=c+12|0;m=c;if(vY()|0){n=e+56|0;o=e+4|0;k[e>>2]=27524;k[n>>2]=27544;B=0;wa(508,e+56|0,o|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;s=p;vva(n);Qb(s|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[n>>2]=27488;B=0;va(448,o|0);p=B;B=0;do if(p&1){t=Rb()|0;u=Q;v=t}else{k[o>>2]=27560;t=e+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,o|0,d|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(d);Yua(t);Ava(o);u=x;v=w;break}Yua(d);B=0;w=Ia(40,e|0,87174,44)|0;x=B;B=0;a:do if(!(x&1)?(B=0,Xa(239,w|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,f|0,87219,72);z=B;B=0;do if(!(z&1)){B=0;eb(502,g|0,87292,7);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(f);D=A;E=C;break}B=0;wa(510,h|0,o|0);C=B;B=0;if(C&1){C=Rb()|0;F=Q;G=C;H=1}else{B=0;ua(163,y|0,f|0,g|0,22,h|0);C=B;B=0;if(C&1)I=1;else{B=0;eb(503,y|0,1240,229);B=0;I=0}C=Rb()|0;A=Q;Yua(h);F=A;G=C;H=I}Yua(g);Yua(f);if(H){D=G;E=F}else{J=G;K=F;break a}}else{C=Rb()|0;D=C;E=Q}while(0);zb(y|0);J=D;K=E}else L=17;while(0);if((L|0)==17){w=Rb()|0;J=w;K=Q}k[e>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);M=K;N=J;Qb(N|0)}while(0);q=u;s=v;vva(n);Qb(s|0)}s=Ysa(a,b)|0;if(s){r=c;return s|0}s=i+56|0;c=i+4|0;k[i>>2]=27524;k[s>>2]=27544;B=0;wa(508,i+56|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;O=Q;P=b;vva(s);Qb(P|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[s>>2]=27488;B=0;va(448,c|0);b=B;B=0;do if(b&1){n=Rb()|0;R=Q;S=n}else{k[c>>2]=27560;n=i+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,c|0,d|0);v=B;B=0;if(v&1){v=Rb()|0;u=Q;Yua(d);Yua(n);Ava(c);R=u;S=v;break}Yua(d);B=0;v=Ia(40,i|0,87300,20)|0;u=B;B=0;b:do if(((!(u&1)?(q=Lta(a)|0,B=0,J=Ia(40,v|0,a|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,J|0,87321,30)|0,J=B,B=0,!(J&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,j|0,87219,72);J=B;B=0;do if(!(J&1)){B=0;eb(502,l|0,87292,7);K=B;B=0;if(K&1){K=Rb()|0;o=Q;Yua(j);T=K;U=o;break}B=0;wa(510,m|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;V=1;W=Q;X=o}else{B=0;ua(163,q|0,j|0,l|0,26,m|0);o=B;B=0;if(o&1)Y=1;else{B=0;eb(503,q|0,1240,229);B=0;Y=0}o=Rb()|0;K=Q;Yua(m);V=Y;W=K;X=o}Yua(l);Yua(j);if(V){T=X;U=W}else{Z=W;_=X;break b}}else{o=Rb()|0;T=o;U=Q}while(0);zb(q|0);Z=U;_=T}else L=43;while(0);if((L|0)==43){v=Rb()|0;Z=Q;_=v}k[i>>2]=27468;k[s>>2]=27488;k[c>>2]=27560;Yua(n);Ava(c);vva(s);M=Z;N=_;Qb(N|0)}while(0);O=R;P=S;vva(s);Qb(P|0);return 0}function oY(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=vY()|0;l=wY()|0;if((l|0)>0){m=0;n=0;while(1){if((j|0)==(n|0))o=Ysa(a,b)|0;else o=m;uY()|0;n=n+1|0;if((n|0)==(l|0)){p=o;break}else m=o}}else p=0;if(!((p|0)==0&c)){r=d;return p|0}p=f+56|0;d=f+4|0;k[f>>2]=27524;k[p>>2]=27544;B=0;wa(508,f+56|0,d|0);c=B;B=0;if(c&1){c=Rb()|0;q=Q;s=c;vva(p);Qb(s|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[p>>2]=27488;B=0;va(448,d|0);c=B;B=0;do if(c&1){o=Rb()|0;t=Q;u=o}else{k[d>>2]=27560;o=f+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,d|0,e|0);m=B;B=0;if(m&1){m=Rb()|0;l=Q;Yua(e);Yua(o);Ava(d);t=l;u=m;break}Yua(e);B=0;m=Ia(40,f|0,87300,20)|0;l=B;B=0;if(((!(l&1)?(l=Lta(a)|0,B=0,n=Ia(40,m|0,a|0,l|0)|0,l=B,B=0,!(l&1)):0)?(B=0,l=Ia(40,n|0,87321,30)|0,n=B,B=0,!(n&1)):0)?(B=0,Xa(239,l|0,0)|0,l=B,B=0,!(l&1)):0){l=Ab(20)|0;B=0;eb(502,g|0,87219,72);n=B;B=0;do if(!(n&1)){B=0;eb(502,h|0,87352,6);m=B;B=0;if(m&1){m=Rb()|0;b=Q;Yua(g);v=b;w=m;break}B=0;wa(510,i|0,d|0);m=B;B=0;if(m&1){m=Rb()|0;x=Q;y=m;z=1}else{B=0;ua(163,l|0,g|0,h|0,43,i|0);m=B;B=0;if(m&1)A=1;else{B=0;eb(503,l|0,1240,229);B=0;A=0}m=Rb()|0;b=Q;Yua(i);x=b;y=m;z=A}Yua(h);Yua(g);if(z){v=x;w=y}else{C=x;D=y;k[f>>2]=27468;k[p>>2]=27488;k[d>>2]=27560;Yua(o);Ava(d);vva(p);Qb(D|0)}}else{m=Rb()|0;v=Q;w=m}while(0);zb(l|0);C=v;D=w;k[f>>2]=27468;k[p>>2]=27488;k[d>>2]=27560;Yua(o);Ava(d);vva(p);Qb(D|0)}n=Rb()|0;C=Q;D=n;k[f>>2]=27468;k[p>>2]=27488;k[d>>2]=27560;Yua(o);Ava(d);vva(p);Qb(D|0)}while(0);q=t;s=u;vva(p);Qb(s|0);return 0}function pY(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;if(!(Tsa(a)|0)){r=c;return}c=e+56|0;a=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,a|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,a|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[a>>2]=27560;m=e+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,a|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(a);n=q;o=p;break}Yua(d);B=0;p=Ia(40,e|0,87359,21)|0;q=B;B=0;if((!(q&1)?(q=Lta(b)|0,B=0,s=Ia(40,p|0,b|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,f|0,87381,73);q=B;B=0;do if(!(q&1)){B=0;eb(502,g|0,87455,7);p=B;B=0;if(p&1){p=Rb()|0;t=Q;Yua(f);u=t;v=p;break}B=0;wa(510,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;w=Q;x=p;y=1}else{B=0;ua(163,s|0,f|0,g|0,18,h|0);p=B;B=0;if(p&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}p=Rb()|0;t=Q;Yua(h);w=t;x=p;y=z}Yua(g);Yua(f);if(y){u=w;v=x}else{A=w;C=x;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(c);Qb(C|0)}}else{p=Rb()|0;u=Q;v=p}while(0);zb(s|0);A=u;C=v;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(c);Qb(C|0)}q=Rb()|0;A=Q;C=q;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function qY(a){a=a|0;if(vY()|0)return 1;uqa((i[a>>0]&1)==0?a+1|0:k[a+8>>2]|0);return 1}function rY(a){a=a|0;uqa((i[a>>0]&1)==0?a+1|0:k[a+8>>2]|0);return 1}function sY(a){a=a|0;i[53730]=1;k[6862]=a;return}function tY(){i[53730]=0;return}function uY(){var a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;if(i[53730]|0){r=a;return k[6862]|0}a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;j=Q;l=h;vva(a);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){m=Rb()|0;n=Q;o=m}else{k[g>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(g);n=q;o=p;break}Yua(b);B=0;p=Ia(40,c|0,87463,33)|0;q=B;B=0;if(!(q&1)?(B=0,Xa(239,p|0,0)|0,p=B,B=0,!(p&1)):0){p=Ab(20)|0;B=0;eb(502,d|0,87497,74);q=B;B=0;do if(!(q&1)){B=0;eb(502,e|0,87572,7);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(d);u=t;v=s;break}B=0;wa(510,f|0,g|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,p|0,d|0,e|0,31,f|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,p|0,1240,229);B=0;z=0}s=Rb()|0;t=Q;Yua(f);w=t;x=s;y=z}Yua(e);Yua(d);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(m);Ava(g);vva(a);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(p|0);A=u;C=v;k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(m);Ava(g);vva(a);Qb(C|0)}q=Rb()|0;A=Q;C=q;k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(m);Ava(g);vva(a);Qb(C|0)}while(0);j=n;l=o;vva(a);Qb(l|0);return 0}function vY(){var a=0,b=0,c=0;a=r;r=r+16|0;b=a;k[b>>2]=0;if(!(i[53730]|0)){c=0;r=a;return c|0}iZ(k[6862]|0,b)|0;c=k[b>>2]|0;r=a;return c|0}function wY(){var a=0,b=0,c=0;a=r;r=r+16|0;b=a;k[b>>2]=1;if(!(i[53730]|0)){c=1;r=a;return c|0}jZ(k[6862]|0,b)|0;c=k[b>>2]|0;r=a;return c|0}function xY(a){a=a|0;var b=0;do switch(a|0){case 0:{b=87588;break}case 1:{b=87604;break}case 2:{b=87613;break}case 3:{b=87626;break}case 4:{b=87636;break}case 5:{b=87654;break}case 6:{b=87664;break}case 7:{b=87672;break}case 8:{b=87680;break}case 9:{b=87699;break}case 10:{b=87721;break}case 11:{b=87749;break}case 12:{b=87778;break}case 13:{b=87807;break}case 14:{b=87838;break}case 15:{b=87863;break}case 16:{b=87887;break}case 17:{b=87917;break}case 18:{b=87948;break}case 19:{b=87979;break}case 20:{b=88006;break}case 21:{b=88023;break}case 22:{b=88034;break}case 23:{b=88049;break}case 24:{b=88073;break}case 25:{b=88099;break}case 26:{b=88123;break}case 27:{b=88155;break}case 28:{b=88168;break}case 29:{b=88185;break}case 30:{b=88202;break}case 31:{b=88219;break}case 32:{b=88236;break}case 33:{b=88259;break}case 34:{b=88284;break}case 35:{b=88313;break}case 36:{b=88343;break}case 37:{b=88374;break}case 38:{b=88388;break}case 39:{b=88416;break}case 40:{b=88452;break}case 41:{b=88488;break}case 42:{b=88522;break}case 43:{b=88554;break}case 44:{b=88587;break}case 45:{b=88615;break}case 46:{b=88647;break}case 47:{b=88675;break}case 48:{b=88707;break}case 49:{b=88728;break}case 50:{b=88746;break}case 51:{b=88771;break}case 52:{b=88798;break}case 53:{b=88828;break}case 54:{b=88848;break}case 55:{b=88868;break}case 56:{b=88896;break}case 57:{b=88929;break}case 58:{b=88957;break}case 59:{b=88985;break}case 60:{b=89002;break}case 61:{b=89025;break}case 62:{b=89048;break}case 63:{b=89074;break}case 64:{b=89078;break}case 65:{b=89083;break}case 66:{b=89094;break}case 67:{b=89124;break}case 68:{b=89137;break}case 69:{b=89153;break}case 70:{b=89173;break}case 71:{b=89206;break}case 72:{b=89228;break}case 73:{b=89249;break}case 74:{b=89276;break}case 75:{b=89301;break}case 76:{b=89321;break}case 77:{b=89354;break}case 78:{b=89384;break}case 79:{b=89404;break}case 80:{b=89433;break}case 81:{b=89467;break}case 82:{b=89495;break}case 83:{b=89514;break}case 84:{b=89533;break}case 85:{b=89552;break}case 86:{b=89582;break}case 87:{b=89609;break}case 88:{b=89641;break}case 89:{b=89655;break}case 90:{b=89669;break}case 91:{b=89683;break}case 92:{b=89705;break}case 93:{b=89726;break}case 94:{b=89747;break}case 95:{b=89775;break}case 96:{b=89793;break}case 97:{b=89811;break}case 98:{b=89830;break}case 99:{b=89847;break}case 100:{b=89864;break}case 101:{b=89882;break}case 102:{b=89899;break}case 103:{b=89916;break}case 104:{b=89943;break}case 105:{b=89954;break}case 106:{b=89974;break}case 107:{b=90001;break}case 108:{b=90011;break}case 109:{b=90021;break}case 110:{b=90031;break}case 111:{b=90041;break}case 112:{b=90053;break}case 113:{b=90067;break}case 114:{b=90077;break}case 115:{b=90096;break}case 116:{b=90122;break}case 117:{b=90139;break}case 118:{b=90164;break}case 119:{b=90179;break}case 120:{b=90195;break}case 121:{b=90225;break}case 122:{b=90254;break}case 123:{b=90266;break}case 124:{b=90279;break}case 125:{b=90295;break}case 126:{b=90316;break}case 127:{b=90334;break}case 128:{b=90342;break}case 129:{b=90353;break}case 130:{b=90367;break}case 131:{b=90381;break}case 132:{b=90398;break}case 133:{b=90417;break}case 134:{b=90435;break}case 135:{b=90462;break}case 136:{b=90497;break}case 137:{b=90525;break}case 138:{b=90554;break}case 139:{b=90587;break}case 140:{b=90619;break}case 141:{b=90641;break}case 142:{b=90670;break}case 143:{b=90698;break}case 144:{b=90728;break}case 145:{b=90751;break}case 146:{b=90782;break}case 147:{b=90813;break}case 148:{b=90840;break}case 149:{b=90864;break}case 150:{b=90891;break}case 151:{b=90915;break}case 152:{b=90942;break}case 153:{b=90970;break}case 154:{b=90999;break}case 155:{b=91024;break}case 156:{b=91048;break}case 157:{b=91073;break}case 158:{b=91098;break}case 159:{b=91121;break}case 160:{b=91144;break}case 161:{b=91172;break}case 162:{b=91187;break}case 163:{b=91205;break}case 164:{b=91224;break}case 165:{b=91246;break}case 166:{b=91263;break}case 167:{b=91277;break}case 168:{b=91296;break}case 169:{b=91317;break}case 170:{b=91337;break}case 171:{b=91361;break}case 172:{b=91382;break}case 173:{b=91400;break}case 174:{b=91421;break}case 175:{b=91438;break}case 176:{b=91460;break}case 177:{b=91487;break}case 178:{b=91518;break}case 179:{b=91549;break}case 180:{b=91584;break}case 181:{b=91607;break}case 182:{b=91632;break}case 183:{b=91651;break}case 184:{b=91665;break}case 185:{b=91692;break}case 186:{b=91715;break}case 187:{b=91739;break}case 188:{b=91756;break}case 189:{b=91774;break}case 190:{b=91789;break}case 191:{b=91804;break}case 192:{b=91819;break}case 193:{b=91834;break}case 194:{b=91849;break}case 195:{b=91868;break}case 196:{b=91891;break}case 197:{b=91907;break}case 198:{b=91922;break}case 199:{b=91952;break}case 200:{b=91978;break}case 201:{b=92001;break}case 202:{b=92023;break}case 203:{b=92043;break}case 204:{b=92058;break}case 205:{b=92073;break}case 206:{b=92088;break}case 207:{b=92104;break}case 208:{b=92122;break}case 209:{b=92139;break}case 210:{b=92153;break}case 211:{b=92175;break}case 212:{b=92195;break}case 213:{b=92217;break}case 214:{b=92245;break}case 215:{b=92264;break}case 216:{b=92286;break}case 217:{b=92307;break}case 218:{b=92326;break}case 219:{b=92346;break}case 220:{b=92369;break}case 221:{b=92389;break}case 222:{b=92412;break}case 223:{b=92432;break}case 224:{b=92455;break}case 225:{b=92470;break}case 226:{b=92478;break}case 227:{b=92486;break}case 228:{b=92497;break}case 229:{b=92507;break}case 230:{b=92516;break}case 231:{b=92525;break}case 232:{b=92534;break}case 233:{b=92543;break}case 234:{b=92563;break}case 235:{b=92577;break}case 236:{b=92599;break}case 237:{b=92611;break}case 238:{b=92631;break}case 239:{b=92645;break}case 240:{b=92661;break}case 241:{b=92677;break}case 242:{b=92695;break}case 243:{b=92730;break}case 244:{b=92762;break}case 245:{b=92769;break}case 246:{b=92779;break}case 247:{b=92801;break}case 248:{b=92812;break}case 249:{b=92831;break}case 250:{b=92850;break}case 251:{b=92867;break}case 252:{b=92878;break}case 253:{b=92898;break}case 254:{b=92913;break}case 255:{b=92937;break}case 256:{b=92959;break}case 257:{b=92987;break}case 258:{b=93003;break}case 259:{b=93016;break}case 260:{b=93029;break}case 261:{b=93049;break}case 262:{b=93069;break}case 263:{b=93088;break}case 264:{b=93112;break}case 265:{b=93132;break}case 266:{b=93148;break}case 267:{b=93169;break}case 268:{b=93192;break}case 269:{b=93209;break}case 270:{b=93242;break}case 271:{b=93271;break}case 272:{b=93305;break}case 273:{b=93338;break}case 274:{b=93366;break}case 275:{b=93394;break}case 276:{b=93417;break}case 277:{b=93439;break}case 278:{b=93469;break}case 279:{b=93484;break}case 280:{b=93497;break}case 281:{b=93515;break}case 282:{b=93538;break}case 283:{b=93559;break}case 284:{b=93578;break}case 285:{b=93601;break}case 286:{b=93622;break}case 287:{b=93640;break}case 288:{b=93657;break}case 289:{b=93677;break}case 290:{b=93698;break}case 291:{b=93704;break}case 292:{b=93710;break}case 293:{b=93716;break}case 294:{b=93724;break}case 295:{b=93733;break}case 296:{b=93739;break}case 297:{b=93755;break}case 298:{b=93768;break}case 299:{b=93779;break}case 300:{b=93795;break}case 301:{b=93814;break}case 302:{b=93831;break}case 303:{b=93840;break}case 304:{b=93856;break}case 305:{b=93874;break}case 306:{b=93909;break}case 307:{b=93936;break}case 308:{b=93962;break}case 309:{b=93989;break}case 310:{b=94015;break}case 311:{b=94042;break}case 312:{b=94069;break}case 313:{b=94102;break}case 314:{b=94132;break}case 315:{b=94144;break}case 316:{b=94161;break}case 317:{b=94185;break}case 318:{b=94212;break}case 319:{b=94234;break}case 320:{b=94255;break}case 321:{b=94268;break}case 322:{b=94291;break}case 323:{b=94314;break}case 324:{b=94328;break}case 325:{b=94344;break}case 326:{b=94367;break}case 327:{b=94384;break}case 328:{b=94399;break}case 329:{b=94423;break}case 330:{b=94450;break}case 331:{b=94469;break}case 332:{b=94484;break}case 333:{b=94504;break}case 334:{b=94526;break}case 335:{b=94548;break}case 336:{b=94567;break}case 337:{b=94598;break}case 338:{b=94616;break}case 339:{b=94644;break}case 340:{b=94652;break}case 341:{b=94670;break}case 342:{b=94695;break}case 343:{b=94709;break}case 344:{b=94724;break}case 345:{b=94745;break}case 346:{b=94764;break}case 347:{b=94788;break}case 348:{b=94810;break}case 349:{b=94831;break}case 350:{b=94858;break}case 351:{b=94882;break}case 352:{b=94901;break}case 353:{b=94925;break}case 354:{b=94935;break}case 355:{b=94957;break}case 356:{b=94979;break}case 357:{b=95006;break}case 358:{b=95028;break}case 359:{b=95049;break}case 360:{b=95076;break}case 361:{b=95091;break}case 362:{b=95110;break}case 363:{b=95135;break}case 364:{b=95160;break}case 365:{b=95185;break}case 366:{b=95204;break}case 367:{b=95219;break}case 368:{b=95246;break}case 369:{b=95267;break}case 370:{b=95290;break}case 371:{b=95305;break}case 372:{b=95334;break}case 373:{b=95360;break}case 374:{b=95370;break}case 375:{b=95399;break}case 376:{b=95435;break}case 377:{b=95459;break}case 378:{b=95496;break}case 379:{b=95516;break}case 380:{b=95538;break}case 381:{b=95557;break}case 382:{b=95561;break}case 383:{b=95573;break}case 384:{b=95585;break}case 385:{b=95608;break}case 386:{b=95628;break}case 387:{b=95645;break}case 388:{b=95656;break}case 389:{b=95671;break}case 390:{b=95679;break}case 391:{b=95701;break}case 392:{b=95707;break}case 393:{b=95712;break}case 394:{b=95721;break}case 395:{b=95730;break}case 396:{b=95735;break}case 397:{b=95742;break}case 398:{b=95750;break}case 399:{b=95758;break}case 400:{b=95767;break}case 401:{b=95772;break}case 402:{b=95778;break}case 403:{b=95784;break}case 404:{b=95790;break}case 405:{b=95796;break}case 406:{b=95804;break}case 407:{b=95813;break}case 408:{b=95823;break}case 409:{b=95831;break}case 410:{b=95840;break}case 411:{b=95849;break}case 412:{b=95855;break}case 413:{b=95863;break}case 414:{b=95871;break}case 415:{b=95885;break}case 416:{b=95894;break}case 417:{b=95902;break}case 418:{b=95913;break}case 419:{b=95922;break}case 420:{b=95931;break}case 421:{b=95936;break}case 422:{b=95941;break}case 423:{b=95947;break}case 424:{b=95954;break}case 425:{b=95961;break}case 426:{b=95967;break}case 427:{b=95983;break}case 428:{b=95988;break}case 429:{b=95993;break}case 430:{b=95998;break}case 431:{b=96015;break}case 432:{b=96027;break}case 433:{b=96042;break}case 434:{b=96055;break}case 435:{b=96073;break}case 436:{b=96083;break}case 437:{b=96102;break}case 438:{b=96121;break}case 439:{b=96128;break}case 440:{b=96140;break}case 441:{b=96159;break}case 442:{b=96173;break}case 443:{b=96185;break}case 444:{b=96197;break}case 445:{b=96225;break}case 446:{b=96246;break}case 447:{b=96272;break}case 448:{b=96291;break}case 449:{b=96308;break}case 450:{b=96318;break}case 451:{b=96325;break}case 452:{b=96332;break}case 453:{b=96341;break}case 454:{b=96353;break}case 455:{b=96361;break}case 456:{b=96370;break}case 457:{b=96380;break}case 458:{b=96391;break}case 459:{b=96402;break}case 460:{b=96415;break}case 461:{b=96438;break}case 462:{b=96446;break}case 463:{b=96456;break}case 464:{b=96464;break}case 465:{b=96472;break}case 466:{b=96483;break}case 467:{b=96497;break}case 468:{b=96513;break}case 469:{b=96528;break}case 470:{b=96538;break}case 471:{b=96556;break}case 472:{b=96564;break}case 473:{b=96576;break}case 474:{b=96583;break}case 475:{b=96592;break}case 476:{b=96610;break}case 477:{b=96623;break}case 478:{b=96636;break}case 479:{b=96654;break}case 480:{b=96686;break}case 481:{b=96719;break}case 482:{b=96740;break}case 483:{b=96756;break}case 484:{b=96772;break}case 485:{b=96797;break}case 486:{b=96822;break}case 487:{b=96848;break}case 488:{b=96874;break}case 489:{b=96903;break}case 490:{b=96932;break}case 491:{b=96956;break}case 492:{b=96980;break}case 493:{b=97004;break}case 494:{b=97029;break}case 495:{b=97046;break}case 496:{b=97070;break}case 497:{b=97094;break}case 498:{b=97116;break}case 499:{b=97141;break}case 500:{b=97163;break}case 501:{b=97193;break}case 502:{b=97210;break}case 503:{b=97224;break}case 504:{b=97238;break}case 505:{b=97262;break}case 506:{b=97293;break}case 507:{b=97322;break}case 508:{b=97347;break}case 509:{b=97365;break}case 510:{b=97381;break}case 511:{b=97403;break}case 512:{b=97425;break}case 513:{b=97449;break}case 514:{b=97472;break}case 515:{b=97494;break}case 516:{b=97518;break}case 517:{b=97541;break}case 518:{b=97562;break}case 519:{b=97582;break}case 520:{b=97603;break}case 521:{b=97618;break}case 522:{b=97634;break}case 523:{b=97650;break}case 524:{b=97668;break}case 525:{b=97690;break}case 526:{b=97702;break}case 527:{b=97714;break}case 528:{b=97738;break}case 529:{b=97762;break}case 530:{b=97779;break}case 531:{b=97801;break}case 532:{b=97823;break}case 533:{b=97851;break}case 534:{b=97865;break}case 535:{b=97883;break}case 536:{b=97900;break}case 537:{b=97917;break}case 538:{b=97936;break}case 539:{b=97955;break}case 540:{b=97973;break}case 541:{b=97989;break}case 542:{b=98007;break}case 543:{b=98023;break}case 544:{b=98034;break}case 545:{b=98045;break}case 546:{b=98053;break}case 547:{b=98065;break}case 548:{b=98071;break}case 549:{b=98081;break}case 550:{b=98087;break}case 551:{b=98096;break}case 552:{b=98107;break}case 553:{b=98116;break}case 554:{b=98124;break}case 555:{b=98137;break}case 556:{b=98148;break}case 557:{b=98158;break}case 558:{b=98168;break}case 559:{b=114756;break}case 560:{b=98176;break}case 561:{b=98189;break}case 562:{b=98201;break}case 563:{b=98218;break}case 564:{b=98231;break}case 565:{b=98251;break}case 566:{b=98266;break}case 567:{b=98278;break}case 568:{b=98293;break}case 569:{b=98301;break}case 570:{b=98313;break}case 571:{b=98318;break}case 572:{b=98333;break}case 573:{b=98343;break}case 574:{b=98349;break}case 575:{b=98358;break}case 576:{b=98373;break}case 577:{b=98390;break}case 578:{b=98410;break}case 579:{b=98424;break}case 580:{b=98450;break}case 581:{b=98459;break}case 582:{b=98471;break}case 583:{b=98486;break}case 584:{b=98493;break}case 585:{b=98506;break}case 586:{b=98515;break}case 587:{b=98522;break}case 588:{b=98527;break}case 589:{b=98541;break}case 590:{b=98559;break}case 591:{b=98571;break}case 592:{b=98577;break}case 593:{b=98584;break}case 594:{b=98592;break}case 595:{b=98600;break}case 596:{b=98609;break}case 597:{b=98621;break}case 598:{b=98629;break}case 599:{b=98641;break}case 600:{b=98663;break}case 601:{b=98679;break}case 602:{b=98692;break}case 603:{b=98709;break}case 604:{b=98736;break}case 605:{b=98754;break}case 606:{b=98772;break}case 607:{b=98790;break}case 608:{b=98807;break}case 609:{b=98815;break}case 610:{b=98827;break}case 611:{b=98837;break}case 612:{b=98851;break}case 613:{b=98859;break}case 614:{b=98876;break}case 615:{b=98887;break}case 616:{b=98897;break}case 617:{b=98910;break}case 618:{b=98927;break}case 619:{b=98939;break}case 620:{b=98943;break}case 621:{b=98952;break}case 622:{b=98957;break}case 623:{b=98967;break}case 624:{b=98973;break}case 625:{b=98984;break}case 626:{b=98990;break}case 627:{b=99001;break}case 628:{b=99008;break}case 629:{b=99018;break}case 630:{b=99028;break}case 631:{b=99032;break}case 632:{b=99036;break}case 633:{b=99044;break}case 634:{b=99050;break}case 635:{b=99057;break}case 636:{b=99062;break}case 637:{b=99067;break}case 638:{b=99076;break}case 639:{b=99085;break}case 640:{b=99094;break}case 641:{b=99103;break}case 642:{b=99126;break}case 643:{b=99136;break}case 644:{b=99146;break}case 645:{b=99155;break}case 646:{b=99165;break}case 647:{b=99170;break}case 648:{b=99188;break}case 649:{b=99197;break}case 650:{b=99206;break}case 651:{b=99215;break}case 652:{b=99229;break}case 653:{b=99236;break}case 654:{b=99245;break}case 655:{b=99260;break}case 656:{b=99287;break}case 657:{b=99302;break}case 658:{b=113694;break}case 659:{b=99320;break}case 660:{b=114189;break}case 661:{b=113936;break}case 662:{b=114059;break}case 663:{b=113815;break}case 664:{b=99332;break}case 665:{b=99346;break}case 666:{b=99360;break}case 667:{b=99372;break}case 668:{b=99390;break}case 669:{b=99405;break}case 670:{b=99424;break}case 671:{b=99441;break}case 672:{b=99445;break}case 673:{b=99454;break}case 674:{b=99464;break}case 675:{b=99467;break}case 676:{b=99476;break}case 677:{b=99486;break}case 678:{b=99489;break}case 679:{b=99498;break}case 680:{b=99501;break}case 681:{b=99507;break}case 682:{b=99512;break}case 683:{b=99521;break}case 684:{b=99526;break}case 685:{b=99533;break}case 686:{b=99540;break}case 687:{b=99547;break}case 688:{b=99556;break}case 689:{b=99571;break}case 690:{b=99592;break}case 691:{b=99615;break}case 692:{b=99639;break}case 693:{b=99657;break}case 694:{b=114464;break}case 695:{b=114591;break}case 696:{b=114328;break}case 697:{b=99669;break}case 698:{b=99684;break}case 699:{b=99698;break}case 700:{b=99710;break}case 701:{b=99724;break}case 702:{b=99739;break}case 703:{b=99756;break}case 704:{b=99773;break}case 705:{b=99788;break}case 706:{b=99803;break}case 707:{b=99811;break}case 708:{b=99824;break}case 709:{b=99839;break}case 710:{b=99854;break}case 711:{b=99869;break}case 712:{b=99884;break}case 713:{b=99899;break}case 714:{b=99914;break}case 715:{b=99933;break}case 716:{b=99950;break}case 717:{b=99969;break}case 718:{b=99988;break}case 719:{b=100007;break}case 720:{b=100026;break}case 721:{b=100045;break}case 722:{b=100064;break}case 723:{b=100090;break}case 724:{b=100098;break}case 725:{b=100109;break}case 726:{b=100122;break}case 727:{b=100135;break}case 728:{b=100148;break}case 729:{b=100161;break}case 730:{b=100174;break}case 731:{b=100187;break}case 732:{b=100198;break}case 733:{b=100212;break}case 734:{b=100233;break}case 735:{b=100241;break}case 736:{b=100246;break}case 737:{b=100249;break}case 738:{b=100257;break}case 739:{b=100260;break}case 740:{b=100265;break}case 741:{b=100274;break}case 742:{b=100292;break}case 743:{b=100295;break}case 744:{b=100304;break}case 745:{b=100322;break}case 746:{b=100328;break}case 747:{b=100334;break}case 748:{b=100340;break}case 749:{b=100346;break}case 750:{b=100351;break}case 751:{b=100359;break}case 752:{b=100364;break}case 753:{b=100378;break}case 754:{b=100389;break}case 755:{b=100402;break}case 756:{b=100414;break}case 757:{b=100426;break}case 758:{b=100442;break}case 759:{b=100460;break}case 760:{b=100472;break}case 761:{b=100491;break}case 762:{b=100512;break}case 763:{b=100536;break}case 764:{b=100554;break}case 765:{b=100556;break}case 766:{b=100577;break}case 767:{b=100582;break}case 768:{b=100587;break}case 769:{b=100602;break}case 770:{b=100619;break}case 771:{b=100637;break}case 772:{b=100655;break}case 773:{b=100673;break}case 774:{b=100691;break}case 775:{b=100709;break}case 776:{b=100727;break}case 777:{b=100745;break}case 778:{b=100763;break}case 779:{b=100781;break}case 780:{b=100800;break}case 781:{b=100819;break}case 782:{b=100838;break}case 783:{b=100857;break}case 784:{b=100876;break}case 785:{b=100895;break}case 786:{b=100914;break}case 787:{b=100933;break}case 788:{b=100952;break}case 789:{b=100971;break}case 790:{b=100990;break}case 791:{b=101009;break}case 792:{b=101028;break}case 793:{b=101047;break}case 794:{b=101066;break}case 795:{b=101085;break}case 796:{b=101104;break}case 797:{b=101123;break}case 798:{b=101142;break}case 799:{b=101161;break}case 800:{b=101180;break}case 801:{b=101199;break}case 802:{b=101218;break}case 803:{b=101237;break}case 804:{b=101256;break}case 805:{b=101275;break}case 806:{b=101294;break}case 807:{b=101313;break}case 808:{b=101332;break}case 809:{b=101351;break}case 810:{b=101370;break}case 811:{b=101389;break}case 812:{b=101408;break}case 813:{b=101427;break}case 814:{b=101446;break}case 815:{b=101465;break}case 816:{b=101484;break}case 817:{b=101503;break}case 818:{b=101522;break}case 819:{b=101541;break}case 820:{b=101560;break}case 821:{b=101579;break}case 822:{b=101598;break}case 823:{b=101617;break}case 824:{b=101636;break}case 825:{b=101655;break}case 826:{b=101674;break}case 827:{b=101693;break}case 828:{b=101712;break}case 829:{b=101731;break}case 830:{b=101750;break}case 831:{b=101769;break}case 832:{b=101788;break}case 833:{b=101807;break}case 834:{b=101826;break}case 835:{b=101845;break}case 836:{b=101864;break}case 837:{b=101883;break}case 838:{b=101902;break}case 839:{b=101921;break}case 840:{b=101940;break}case 841:{b=101959;break}case 842:{b=101978;break}case 843:{b=101997;break}case 844:{b=102016;break}case 845:{b=102035;break}case 846:{b=102054;break}case 847:{b=102073;break}case 848:{b=102092;break}case 849:{b=102111;break}case 850:{b=102130;break}case 851:{b=102149;break}case 852:{b=102168;break}case 853:{b=102187;break}case 854:{b=102206;break}case 855:{b=102225;break}case 856:{b=102244;break}case 857:{b=102263;break}case 858:{b=102282;break}case 859:{b=102301;break}case 860:{b=102320;break}case 861:{b=102339;break}case 862:{b=102358;break}case 863:{b=102377;break}case 864:{b=102396;break}case 865:{b=102415;break}case 866:{b=102434;break}case 867:{b=102453;break}case 868:{b=102472;break}case 869:{b=102491;break}case 870:{b=102511;break}case 871:{b=102532;break}case 872:{b=102547;break}case 873:{b=102566;break}case 874:{b=102595;break}case 875:{b=102618;break}case 876:{b=102629;break}case 877:{b=102644;break}case 878:{b=102669;break}case 879:{b=102689;break}case 880:{b=102704;break}case 881:{b=102715;break}case 882:{b=102736;break}case 883:{b=102752;break}case 884:{b=102770;break}case 885:{b=102792;break}case 886:{b=102804;break}case 887:{b=102828;break}case 888:{b=102842;break}case 889:{b=102860;break}case 890:{b=102879;break}case 891:{b=102905;break}case 892:{b=102911;break}case 893:{b=102924;break}case 894:{b=102930;break}case 895:{b=102943;break}case 896:{b=102950;break}case 897:{b=102957;break}case 898:{b=102963;break}case 899:{b=102969;break}case 900:{b=102978;break}case 901:{b=102984;break}case 902:{b=102990;break}case 903:{b=102999;break}case 904:{b=103005;break}case 905:{b=103011;break}case 906:{b=103020;break}case 907:{b=103033;break}case 908:{b=103046;break}case 909:{b=103054;break}case 910:{b=103064;break}case 911:{b=103089;break}case 912:{b=103106;break}case 913:{b=103123;break}case 914:{b=103132;break}case 915:{b=103141;break}case 916:{b=103153;break}case 917:{b=103174;break}case 918:{b=103198;break}case 919:{b=103225;break}case 920:{b=103254;break}case 921:{b=103279;break}case 922:{b=103284;break}case 923:{b=103304;break}case 924:{b=103318;break}case 925:{b=103338;break}case 926:{b=103359;break}case 927:{b=103367;break}case 928:{b=103381;break}case 929:{b=103405;break}case 930:{b=138571;break}case 931:{b=138932;break}case 932:{b=139212;break}case 933:{b=103414;break}case 934:{b=103423;break}case 935:{b=103431;break}case 936:{b=103440;break}case 937:{b=103454;break}case 938:{b=103459;break}case 939:{b=103469;break}case 940:{b=103479;break}case 941:{b=103489;break}case 942:{b=103498;break}case 943:{b=103521;break}case 944:{b=103526;break}case 945:{b=103532;break}case 946:{b=103540;break}case 947:{b=103550;break}case 948:{b=103556;break}case 949:{b=103568;break}case 950:{b=103588;break}case 951:{b=103612;break}case 952:{b=103630;break}case 953:{b=103647;break}case 954:{b=103656;break}case 955:{b=103671;break}case 956:{b=103685;break}case 957:{b=103698;break}case 958:{b=103714;break}case 959:{b=103738;break}case 960:{b=103761;break}case 961:{b=103772;break}case 962:{b=103782;break}case 963:{b=103793;break}case 964:{b=103801;break}case 965:{b=103808;break}case 966:{b=103817;break}case 967:{b=103822;break}case 968:{b=103830;break}case 969:{b=103845;break}case 970:{b=103860;break}case 971:{b=103874;break}case 972:{b=103877;break}case 973:{b=103881;break}case 974:{b=103887;break}case 975:{b=103896;break}case 976:{b=103906;break}case 977:{b=103910;break}case 978:{b=103914;break}case 979:{b=103920;break}case 980:{b=103924;break}case 981:{b=103931;break}case 982:{b=103945;break}case 983:{b=103956;break}case 984:{b=103969;break}case 985:{b=103976;break}case 986:{b=103986;break}case 987:{b=104002;break}case 988:{b=104011;break}case 989:{b=104021;break}case 990:{b=104036;break}case 991:{b=104048;break}case 992:{b=104070;break}case 993:{b=104092;break}case 994:{b=104115;break}case 995:{b=104138;break}case 996:{b=104161;break}case 997:{b=104185;break}case 998:{b=104206;break}case 999:{b=104227;break}case 1e3:{b=104236;break}case 1001:{b=104253;break}case 1002:{b=104280;break}case 1003:{b=104300;break}case 1004:{b=104319;break}case 1005:{b=104338;break}case 1006:{b=104356;break}case 1007:{b=104374;break}case 1008:{b=104396;break}case 1009:{b=104418;break}case 1010:{b=104436;break}case 1011:{b=104456;break}case 1012:{b=104477;break}case 1013:{b=104498;break}case 1014:{b=104517;break}case 1015:{b=104541;break}case 1016:{b=104570;break}case 1017:{b=104602;break}case 1018:{b=104616;break}default:b=87580}while(0);return b|0}function yY(a,b){a=a|0;b=b|0;var c=0,d=0;c=xY(b)|0;b=(Lta(c)|0)+1|0;d=Rqa(b)|0;TEa(d|0,c|0,b|0)|0;k[a>>2]=d;return}function zY(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;do if(Ita(a,87588)|0)if(Ita(a,87604)|0)if(Ita(a,87613)|0)if(Ita(a,87626)|0)if(Ita(a,87636)|0)if(Ita(a,87654)|0)if(Ita(a,87664)|0)if(Ita(a,87672)|0)if(Ita(a,87680)|0)if(Ita(a,87699)|0)if(Ita(a,87721)|0)if(Ita(a,87749)|0)if(Ita(a,87778)|0)if(Ita(a,87807)|0)if(Ita(a,87838)|0)if(Ita(a,87863)|0)if(Ita(a,87887)|0)if(Ita(a,87917)|0)if(!(Ita(a,87948)|0))i=18;else{if(!(Ita(a,87979)|0)){i=19;break}if(!(Ita(a,88006)|0)){i=20;break}if(!(Ita(a,88023)|0)){i=21;break}if(!(Ita(a,88034)|0)){i=22;break}if(!(Ita(a,88049)|0)){i=23;break}if(!(Ita(a,88073)|0)){i=24;break}if(!(Ita(a,88099)|0)){i=25;break}if(!(Ita(a,88123)|0)){i=26;break}if(!(Ita(a,88155)|0)){i=27;break}if(!(Ita(a,88168)|0)){i=28;break}if(!(Ita(a,88185)|0)){i=29;break}if(!(Ita(a,88202)|0)){i=30;break}if(!(Ita(a,88219)|0)){i=31;break}if(!(Ita(a,88236)|0)){i=32;break}if(!(Ita(a,88259)|0)){i=33;break}if(!(Ita(a,88284)|0)){i=34;break}if(!(Ita(a,88313)|0)){i=35;break}if(!(Ita(a,88343)|0)){i=36;break}if(!(Ita(a,88374)|0)){i=37;break}if(!(Ita(a,88388)|0)){i=38;break}if(!(Ita(a,88416)|0)){i=39;break}if(!(Ita(a,88452)|0)){i=40;break}if(!(Ita(a,88488)|0)){i=41;break}if(!(Ita(a,88522)|0)){i=42;break}if(!(Ita(a,88554)|0)){i=43;break}if(!(Ita(a,88587)|0)){i=44;break}if(!(Ita(a,88615)|0)){i=45;break}if(!(Ita(a,88647)|0)){i=46;break}if(!(Ita(a,88675)|0)){i=47;break}if(!(Ita(a,88707)|0)){i=48;break}if(!(Ita(a,88728)|0)){i=49;break}if(!(Ita(a,88746)|0)){i=50;break}if(!(Ita(a,88771)|0)){i=51;break}if(!(Ita(a,88798)|0)){i=52;break}if(!(Ita(a,88828)|0)){i=53;break}if(!(Ita(a,88848)|0)){i=54;break}if(!(Ita(a,88868)|0)){i=55;break}if(!(Ita(a,88896)|0)){i=56;break}if(!(Ita(a,88929)|0)){i=57;break}if(!(Ita(a,88957)|0)){i=58;break}if(!(Ita(a,88985)|0)){i=59;break}if(!(Ita(a,89002)|0)){i=60;break}if(!(Ita(a,89025)|0)){i=61;break}if(!(Ita(a,89048)|0)){i=62;break}if(!(Ita(a,89074)|0)){i=63;break}if(!(Ita(a,89078)|0)){i=64;break}if(!(Ita(a,89083)|0)){i=65;break}if(!(Ita(a,89094)|0)){i=66;break}if(!(Ita(a,89124)|0)){i=67;break}if(!(Ita(a,89137)|0)){i=68;break}if(!(Ita(a,89153)|0)){i=69;break}if(!(Ita(a,89173)|0)){i=70;break}if(!(Ita(a,89206)|0)){i=71;break}if(!(Ita(a,89228)|0)){i=72;break}if(!(Ita(a,89249)|0)){i=73;break}if(!(Ita(a,89276)|0)){i=74;break}if(!(Ita(a,89301)|0)){i=75;break}if(!(Ita(a,89321)|0)){i=76;break}if(!(Ita(a,89354)|0)){i=77;break}if(!(Ita(a,89384)|0)){i=78;break}if(!(Ita(a,89404)|0)){i=79;break}if(!(Ita(a,89433)|0)){i=80;break}if(!(Ita(a,89467)|0)){i=81;break}if(!(Ita(a,89495)|0)){i=82;break}if(!(Ita(a,89514)|0)){i=83;break}if(!(Ita(a,89533)|0)){i=84;break}if(!(Ita(a,89552)|0)){i=85;break}if(!(Ita(a,89582)|0)){i=86;break}if(!(Ita(a,89609)|0)){i=87;break}if(!(Ita(a,89641)|0)){i=88;break}if(!(Ita(a,89655)|0)){i=89;break}if(!(Ita(a,89669)|0)){i=90;break}if(!(Ita(a,89683)|0)){i=91;break}if(!(Ita(a,89705)|0)){i=92;break}if(!(Ita(a,89726)|0)){i=93;break}if(!(Ita(a,89747)|0)){i=94;break}if(!(Ita(a,89775)|0)){i=95;break}if(!(Ita(a,89793)|0)){i=96;break}if(!(Ita(a,89811)|0)){i=97;break}if(!(Ita(a,89830)|0)){i=98;break}if(!(Ita(a,89847)|0)){i=99;break}if(!(Ita(a,89864)|0)){i=100;break}if(!(Ita(a,89882)|0)){i=101;break}if(!(Ita(a,89899)|0)){i=102;break}if(!(Ita(a,89916)|0)){i=103;break}if(!(Ita(a,89943)|0)){i=104;break}if(!(Ita(a,89954)|0)){i=105;break}if(!(Ita(a,89974)|0)){i=106;break}if(!(Ita(a,90001)|0)){i=107;break}if(!(Ita(a,90011)|0)){i=108;break}if(!(Ita(a,90021)|0)){i=109;break}if(!(Ita(a,90031)|0)){i=110;break}if(!(Ita(a,90041)|0)){i=111;break}if(!(Ita(a,90053)|0)){i=112;break}if(!(Ita(a,90067)|0)){i=113;break}if(!(Ita(a,90077)|0)){i=114;break}if(!(Ita(a,90096)|0)){i=115;break}if(!(Ita(a,90122)|0)){i=116;break}if(!(Ita(a,90139)|0)){i=117;break}if(!(Ita(a,90164)|0)){i=118;break}if(!(Ita(a,90179)|0)){i=119;break}if(!(Ita(a,90195)|0)){i=120;break}if(!(Ita(a,90225)|0)){i=121;break}if(!(Ita(a,90254)|0)){i=122;break}if(!(Ita(a,90266)|0)){i=123;break}if(!(Ita(a,90279)|0)){i=124;break}if(!(Ita(a,90295)|0)){i=125;break}if(!(Ita(a,90316)|0)){i=126;break}if(!(Ita(a,90334)|0)){i=127;break}if(!(Ita(a,90342)|0)){i=128;break}if(!(Ita(a,90353)|0)){i=129;break}if(!(Ita(a,90367)|0)){i=130;break}if(!(Ita(a,90381)|0)){i=131;break}if(!(Ita(a,90398)|0)){i=132;break}if(!(Ita(a,90417)|0)){i=133;break}if(!(Ita(a,90435)|0)){i=134;break}if(!(Ita(a,90462)|0)){i=135;break}if(!(Ita(a,90497)|0)){i=136;break}if(!(Ita(a,90525)|0)){i=137;break}if(!(Ita(a,90554)|0)){i=138;break}if(!(Ita(a,90587)|0)){i=139;break}if(!(Ita(a,90619)|0)){i=140;break}if(!(Ita(a,90641)|0)){i=141;break}if(!(Ita(a,90670)|0)){i=142;break}if(!(Ita(a,90698)|0)){i=143;break}if(!(Ita(a,90728)|0)){i=144;break}if(!(Ita(a,90751)|0)){i=145;break}if(!(Ita(a,90782)|0)){i=146;break}if(!(Ita(a,90813)|0)){i=147;break}if(!(Ita(a,90840)|0)){i=148;break}if(!(Ita(a,90864)|0)){i=149;break}if(!(Ita(a,90891)|0)){i=150;break}if(!(Ita(a,90915)|0)){i=151;break}if(!(Ita(a,90942)|0)){i=152;break}if(!(Ita(a,90970)|0)){i=153;break}if(!(Ita(a,90999)|0)){i=154;break}if(!(Ita(a,91024)|0)){i=155;break}if(!(Ita(a,91048)|0)){i=156;break}if(!(Ita(a,91073)|0)){i=157;break}if(!(Ita(a,91098)|0)){i=158;break}if(!(Ita(a,91121)|0)){i=159;break}if(!(Ita(a,91144)|0)){i=160;break}if(!(Ita(a,91172)|0)){i=161;break}if(!(Ita(a,91187)|0)){i=162;break}if(!(Ita(a,91205)|0)){i=163;break}if(!(Ita(a,91224)|0)){i=164;break}if(!(Ita(a,91246)|0)){i=165;break}if(!(Ita(a,91263)|0)){i=166;break}if(!(Ita(a,91277)|0)){i=167;break}if(!(Ita(a,91296)|0)){i=168;break}if(!(Ita(a,91317)|0)){i=169;break}if(!(Ita(a,91337)|0)){i=170;break}if(!(Ita(a,91361)|0)){i=171;break}if(!(Ita(a,91382)|0)){i=172;break}if(!(Ita(a,91400)|0)){i=173;break}if(!(Ita(a,91421)|0)){i=174;break}if(!(Ita(a,91438)|0)){i=175;break}if(!(Ita(a,91460)|0)){i=176;break}if(!(Ita(a,91487)|0)){i=177;break}if(!(Ita(a,91518)|0)){i=178;break}if(!(Ita(a,91549)|0)){i=179;break}if(!(Ita(a,91584)|0)){i=180;break}if(!(Ita(a,91607)|0)){i=181;break}if(!(Ita(a,91632)|0)){i=182;break}if(!(Ita(a,91651)|0)){i=183;break}if(!(Ita(a,91665)|0)){i=184;break}if(!(Ita(a,91692)|0)){i=185;break}if(!(Ita(a,91715)|0)){i=186;break}if(!(Ita(a,91739)|0)){i=187;break}if(!(Ita(a,91756)|0)){i=188;break}if(!(Ita(a,91774)|0)){i=189;break}if(!(Ita(a,91789)|0)){i=190;break}if(!(Ita(a,91804)|0)){i=191;break}if(!(Ita(a,91819)|0)){i=192;break}if(!(Ita(a,91834)|0)){i=193;break}if(!(Ita(a,91849)|0)){i=194;break}if(!(Ita(a,91868)|0)){i=195;break}if(!(Ita(a,91891)|0)){i=196;break}if(!(Ita(a,91907)|0)){i=197;break}if(!(Ita(a,91922)|0)){i=198;break}if(!(Ita(a,91952)|0)){i=199;break}if(!(Ita(a,91978)|0)){i=200;break}if(!(Ita(a,92001)|0)){i=201;break}if(!(Ita(a,92023)|0)){i=202;break}if(!(Ita(a,92043)|0)){i=203;break}if(!(Ita(a,92058)|0)){i=204;break}if(!(Ita(a,92073)|0)){i=205;break}if(!(Ita(a,92088)|0)){i=206;break}if(!(Ita(a,92104)|0)){i=207;break}if(!(Ita(a,92122)|0)){i=208;break}if(!(Ita(a,92139)|0)){i=209;break}if(!(Ita(a,92153)|0)){i=210;break}if(!(Ita(a,92175)|0)){i=211;break}if(!(Ita(a,92195)|0)){i=212;break}if(!(Ita(a,92217)|0)){i=213;break}if(!(Ita(a,92245)|0)){i=214;break}if(!(Ita(a,92264)|0)){i=215;break}if(!(Ita(a,92286)|0)){i=216;break}if(!(Ita(a,92307)|0)){i=217;break}if(!(Ita(a,92326)|0)){i=218;break}if(!(Ita(a,92346)|0)){i=219;break}if(!(Ita(a,92369)|0)){i=220;break}if(!(Ita(a,92389)|0)){i=221;break}if(!(Ita(a,92412)|0)){i=222;break}if(!(Ita(a,92432)|0)){i=223;break}if(!(Ita(a,92455)|0)){i=224;break}if(!(Ita(a,92470)|0)){i=225;break}if(!(Ita(a,92478)|0)){i=226;break}if(!(Ita(a,92486)|0)){i=227;break}if(!(Ita(a,92497)|0)){i=228;break}if(!(Ita(a,92507)|0)){i=229;break}if(!(Ita(a,92516)|0)){i=230;break}if(!(Ita(a,92525)|0)){i=231;break}if(!(Ita(a,92534)|0)){i=232;break}if(!(Ita(a,92543)|0)){i=233;break}if(!(Ita(a,92563)|0)){i=234;break}if(!(Ita(a,92577)|0)){i=235;break}if(!(Ita(a,92599)|0)){i=236;break}if(!(Ita(a,92611)|0)){i=237;break}if(!(Ita(a,92631)|0)){i=238;break}if(!(Ita(a,92645)|0)){i=239;break}if(!(Ita(a,92661)|0)){i=240;break}if(!(Ita(a,92677)|0)){i=241;break}if(!(Ita(a,92695)|0)){i=242;break}if(!(Ita(a,92730)|0)){i=243;break}if(!(Ita(a,92762)|0)){i=244;break}if(!(Ita(a,92769)|0)){i=245;break}if(!(Ita(a,92779)|0)){i=246;break}if(!(Ita(a,92801)|0)){i=247;break}if(!(Ita(a,92812)|0)){i=248;break}if(!(Ita(a,92831)|0)){i=249;break}if(!(Ita(a,92850)|0)){i=250;break}if(!(Ita(a,92867)|0)){i=251;break}if(!(Ita(a,92878)|0)){i=252;break}if(!(Ita(a,92898)|0)){i=253;break}if(!(Ita(a,92913)|0)){i=254;break}if(!(Ita(a,92937)|0)){i=255;break}if(!(Ita(a,92959)|0)){i=256;break}if(!(Ita(a,92987)|0)){i=257;break}if(!(Ita(a,93003)|0)){i=258;break}if(!(Ita(a,93016)|0)){i=259;break}if(!(Ita(a,93029)|0)){i=260;break}if(!(Ita(a,93049)|0)){i=261;break}if(!(Ita(a,93069)|0)){i=262;break}if(!(Ita(a,93088)|0)){i=263;break}if(!(Ita(a,93112)|0)){i=264;break}if(!(Ita(a,93132)|0)){i=265;break}if(!(Ita(a,93148)|0)){i=266;break}if(!(Ita(a,93169)|0)){i=267;break}if(!(Ita(a,93192)|0)){i=268;break}if(!(Ita(a,93209)|0)){i=269;break}if(!(Ita(a,93242)|0)){i=270;break}if(!(Ita(a,93271)|0)){i=271;break}if(!(Ita(a,93305)|0)){i=272;break}if(!(Ita(a,93338)|0)){i=273;break}if(!(Ita(a,93366)|0)){i=274;break}if(!(Ita(a,93394)|0)){i=275;break}if(!(Ita(a,93417)|0)){i=276;break}if(!(Ita(a,93439)|0)){i=277;break}if(!(Ita(a,93469)|0)){i=278;break}if(!(Ita(a,93484)|0)){i=279;break}if(!(Ita(a,93497)|0)){i=280;break}if(!(Ita(a,93515)|0)){i=281;break}if(!(Ita(a,93538)|0)){i=282;break}if(!(Ita(a,93559)|0)){i=283;break}if(!(Ita(a,93578)|0)){i=284;break}if(!(Ita(a,93601)|0)){i=285;break}if(!(Ita(a,93622)|0)){i=286;break}if(!(Ita(a,93640)|0)){i=287;break}if(!(Ita(a,93657)|0)){i=288;break}if(!(Ita(a,93677)|0)){i=289;break}if(!(Ita(a,93698)|0)){i=290;break}if(!(Ita(a,93704)|0)){i=291;break}if(!(Ita(a,93710)|0)){i=292;break}if(!(Ita(a,93716)|0)){i=293;break}if(!(Ita(a,93724)|0)){i=294;break}if(!(Ita(a,93733)|0)){i=295;break}if(!(Ita(a,93739)|0)){i=296;break}if(!(Ita(a,93755)|0)){i=297;break}if(!(Ita(a,93768)|0)){i=298;break}if(!(Ita(a,93779)|0)){i=299;break}if(!(Ita(a,93795)|0)){i=300;break}if(!(Ita(a,93814)|0)){i=301;break}if(!(Ita(a,93831)|0)){i=302;break}if(!(Ita(a,93840)|0)){i=303;break}if(!(Ita(a,93856)|0)){i=304;break}if(!(Ita(a,93874)|0)){i=305;break}if(!(Ita(a,93909)|0)){i=306;break}if(!(Ita(a,93936)|0)){i=307;break}if(!(Ita(a,93962)|0)){i=308;break}if(!(Ita(a,93989)|0)){i=309;break}if(!(Ita(a,94015)|0)){i=310;break}if(!(Ita(a,94042)|0)){i=311;break}if(!(Ita(a,94069)|0)){i=312;break}if(!(Ita(a,94102)|0)){i=313;break}if(!(Ita(a,94132)|0)){i=314;break}if(!(Ita(a,94144)|0)){i=315;break}if(!(Ita(a,94161)|0)){i=316;break}if(!(Ita(a,94185)|0)){i=317;break}if(!(Ita(a,94212)|0)){i=318;break}if(!(Ita(a,94234)|0)){i=319;break}if(!(Ita(a,94255)|0)){i=320;break}if(!(Ita(a,94268)|0)){i=321;break}if(!(Ita(a,94291)|0)){i=322;break}if(!(Ita(a,94314)|0)){i=323;break}if(!(Ita(a,94328)|0)){i=324;break}if(!(Ita(a,94344)|0)){i=325;break}if(!(Ita(a,94367)|0)){i=326;break}if(!(Ita(a,94384)|0)){i=327;break}if(!(Ita(a,94399)|0)){i=328;break}if(!(Ita(a,94423)|0)){i=329;break}if(!(Ita(a,94450)|0)){i=330;break}if(!(Ita(a,94469)|0)){i=331;break}if(!(Ita(a,94484)|0)){i=332;break}if(!(Ita(a,94504)|0)){i=333;break}if(!(Ita(a,94526)|0)){i=334;break}if(!(Ita(a,94548)|0)){i=335;break}if(!(Ita(a,94567)|0)){i=336;break}if(!(Ita(a,94598)|0)){i=337;break}if(!(Ita(a,94616)|0)){i=338;break}if(!(Ita(a,94644)|0)){i=339;break}if(!(Ita(a,94652)|0)){i=340;break}if(!(Ita(a,94670)|0)){i=341;break}if(!(Ita(a,94695)|0)){i=342;break}if(!(Ita(a,94709)|0)){i=343;break}if(!(Ita(a,94724)|0)){i=344;break}if(!(Ita(a,94745)|0)){i=345;break}if(!(Ita(a,94764)|0)){i=346;break}if(!(Ita(a,94788)|0)){i=347;break}if(!(Ita(a,94810)|0)){i=348;break}if(!(Ita(a,94831)|0)){i=349;break}if(!(Ita(a,94858)|0)){i=350;break}if(!(Ita(a,94882)|0)){i=351;break}if(!(Ita(a,94901)|0)){i=352;break}if(!(Ita(a,94925)|0)){i=353;break}if(!(Ita(a,94935)|0)){i=354;break}if(!(Ita(a,94957)|0)){i=355;break}if(!(Ita(a,94979)|0)){i=356;break}if(!(Ita(a,95006)|0)){i=357;break}if(!(Ita(a,95028)|0)){i=358;break}if(!(Ita(a,95049)|0)){i=359;break}if(!(Ita(a,95076)|0)){i=360;break}if(!(Ita(a,95091)|0)){i=361;break}if(!(Ita(a,95110)|0)){i=362;break}if(!(Ita(a,95135)|0)){i=363;break}if(!(Ita(a,95160)|0)){i=364;break}if(!(Ita(a,95185)|0)){i=365;break}if(!(Ita(a,95204)|0)){i=366;break}if(!(Ita(a,95219)|0)){i=367;break}if(!(Ita(a,95246)|0)){i=368;break}if(!(Ita(a,95267)|0)){i=369;break}if(!(Ita(a,95290)|0)){i=370;break}if(!(Ita(a,95305)|0)){i=371;break}if(!(Ita(a,95334)|0)){i=372;break}if(!(Ita(a,95360)|0)){i=373;break}if(!(Ita(a,95370)|0)){i=374;break}if(!(Ita(a,95399)|0)){i=375;break}if(!(Ita(a,95435)|0)){i=376;break}if(!(Ita(a,95459)|0)){i=377;break}if(!(Ita(a,95496)|0)){i=378;break}if(!(Ita(a,95516)|0)){i=379;break}if(!(Ita(a,95538)|0)){i=380;break}if(!(Ita(a,95557)|0)){i=381;break}if(!(Ita(a,95561)|0)){i=382;break}if(!(Ita(a,95573)|0)){i=383;break}if(!(Ita(a,95585)|0)){i=384;break}if(!(Ita(a,95608)|0)){i=385;break}if(!(Ita(a,95628)|0)){i=386;break}if(!(Ita(a,95645)|0)){i=387;break}if(!(Ita(a,95656)|0)){i=388;break}if(!(Ita(a,95671)|0)){i=389;break}if(!(Ita(a,95679)|0)){i=390;break}if(!(Ita(a,95701)|0)){i=391;break}if(!(Ita(a,95707)|0)){i=392;break}if(!(Ita(a,95712)|0)){i=393;break}if(!(Ita(a,95721)|0)){i=394;break}if(!(Ita(a,95730)|0)){i=395;break}if(!(Ita(a,95735)|0)){i=396;break}if(!(Ita(a,95742)|0)){i=397;break}if(!(Ita(a,95750)|0)){i=398;break}if(!(Ita(a,95758)|0)){i=399;break}if(!(Ita(a,95767)|0)){i=400;break}if(!(Ita(a,95772)|0)){i=401;break}if(!(Ita(a,95778)|0)){i=402;break}if(!(Ita(a,95784)|0)){i=403;break}if(!(Ita(a,95790)|0)){i=404;break}if(!(Ita(a,95796)|0)){i=405;break}if(!(Ita(a,95804)|0)){i=406;break}if(!(Ita(a,95813)|0)){i=407;break}if(!(Ita(a,95823)|0)){i=408;break}if(!(Ita(a,95831)|0)){i=409;break}if(!(Ita(a,95840)|0)){i=410;break}if(!(Ita(a,95849)|0)){i=411;break}if(!(Ita(a,95855)|0)){i=412;break}if(!(Ita(a,95863)|0)){i=413;break}if(!(Ita(a,95871)|0)){i=414;break}if(!(Ita(a,95885)|0)){i=415;break}if(!(Ita(a,95894)|0)){i=416;break}if(!(Ita(a,95902)|0)){i=417;break}if(!(Ita(a,95913)|0)){i=418;break}if(!(Ita(a,95922)|0)){i=419;break}if(!(Ita(a,95931)|0)){i=420;break}if(!(Ita(a,95936)|0)){i=421;break}if(!(Ita(a,95941)|0)){i=422;break}if(!(Ita(a,95947)|0)){i=423;break}if(!(Ita(a,95954)|0)){i=424;break}if(!(Ita(a,95961)|0)){i=425;break}if(!(Ita(a,95967)|0)){i=426;break}if(!(Ita(a,95983)|0)){i=427;break}if(!(Ita(a,95988)|0)){i=428;break}if(!(Ita(a,95993)|0)){i=429;break}if(!(Ita(a,95998)|0)){i=430;break}if(!(Ita(a,96015)|0)){i=431;break}if(!(Ita(a,96027)|0)){i=432;break}if(!(Ita(a,96042)|0)){i=433;break}if(!(Ita(a,96055)|0)){i=434;break}if(!(Ita(a,96073)|0)){i=435;break}if(!(Ita(a,96083)|0)){i=436;break}if(!(Ita(a,96102)|0)){i=437;break}if(!(Ita(a,96121)|0)){i=438;break}if(!(Ita(a,96128)|0)){i=439;break}if(!(Ita(a,96140)|0)){i=440;break}if(!(Ita(a,96159)|0)){i=441;break}if(!(Ita(a,96173)|0)){i=442;break}if(!(Ita(a,96185)|0)){i=443;break}if(!(Ita(a,96197)|0)){i=444;break}if(!(Ita(a,96225)|0)){i=445;break}if(!(Ita(a,96246)|0)){i=446;break}if(!(Ita(a,96272)|0)){i=447;break}if(!(Ita(a,96291)|0)){i=448;break}if(!(Ita(a,96308)|0)){i=449;break}if(!(Ita(a,96318)|0)){i=450;break}if(!(Ita(a,96325)|0)){i=451;break}if(!(Ita(a,96332)|0)){i=452;break}if(!(Ita(a,96341)|0)){i=453;break}if(!(Ita(a,96353)|0)){i=454;break}if(!(Ita(a,96361)|0)){i=455;break}if(!(Ita(a,96370)|0)){i=456;break}if(!(Ita(a,96380)|0)){i=457;break}if(!(Ita(a,96391)|0)){i=458;break}if(!(Ita(a,96402)|0)){i=459;break}if(!(Ita(a,96415)|0)){i=460;break}if(!(Ita(a,96438)|0)){i=461;break}if(!(Ita(a,96446)|0)){i=462;break}if(!(Ita(a,96456)|0)){i=463;break}if(!(Ita(a,96464)|0)){i=464;break}if(!(Ita(a,96472)|0)){i=465;break}if(!(Ita(a,96483)|0)){i=466;break}if(!(Ita(a,96497)|0)){i=467;break}if(!(Ita(a,96513)|0)){i=468;break}if(!(Ita(a,96528)|0)){i=469;break}if(!(Ita(a,96538)|0)){i=470;break}if(!(Ita(a,96556)|0)){i=471;break}if(!(Ita(a,96564)|0)){i=472;break}if(!(Ita(a,96576)|0)){i=473;break}if(!(Ita(a,96583)|0)){i=474;break}if(!(Ita(a,96592)|0)){i=475;break}if(!(Ita(a,96610)|0)){i=476;break}if(!(Ita(a,96623)|0)){i=477;break}if(!(Ita(a,96636)|0)){i=478;break}if(!(Ita(a,96654)|0)){i=479;break}if(!(Ita(a,96686)|0)){i=480;break}if(!(Ita(a,96719)|0)){i=481;break}if(!(Ita(a,96740)|0)){i=482;break}if(!(Ita(a,96756)|0)){i=483;break}if(!(Ita(a,96772)|0)){i=484;break}if(!(Ita(a,96797)|0)){i=485;break}if(!(Ita(a,96822)|0)){i=486;break}if(!(Ita(a,96848)|0)){i=487;break}if(!(Ita(a,96874)|0)){i=488;break}if(!(Ita(a,96903)|0)){i=489;break}if(!(Ita(a,96932)|0)){i=490;break}if(!(Ita(a,96956)|0)){i=491;break}if(!(Ita(a,96980)|0)){i=492;break}if(!(Ita(a,97004)|0)){i=493;break}if(!(Ita(a,97029)|0)){i=494;break}if(!(Ita(a,97046)|0)){i=495;break}if(!(Ita(a,97070)|0)){i=496;break}if(!(Ita(a,97094)|0)){i=497;break}if(!(Ita(a,97116)|0)){i=498;break}if(!(Ita(a,97141)|0)){i=499;break}if(!(Ita(a,97163)|0)){i=500;break}if(!(Ita(a,97193)|0)){i=501;break}if(!(Ita(a,97210)|0)){i=502;break}if(!(Ita(a,97224)|0)){i=503;break}if(!(Ita(a,97238)|0)){i=504;break}if(!(Ita(a,97262)|0)){i=505;break}if(!(Ita(a,97293)|0)){i=506;break}if(!(Ita(a,97322)|0)){i=507;break}if(!(Ita(a,97347)|0)){i=508;break}if(!(Ita(a,97365)|0)){i=509;break}if(!(Ita(a,97381)|0)){i=510;break}if(!(Ita(a,97403)|0)){i=511;break}if(!(Ita(a,97425)|0)){i=512;break}if(!(Ita(a,97449)|0)){i=513;break}if(!(Ita(a,97472)|0)){i=514;break}if(!(Ita(a,97494)|0)){i=515;break}if(!(Ita(a,97518)|0)){i=516;break}if(!(Ita(a,97541)|0)){i=517;break}if(!(Ita(a,97562)|0)){i=518;break}if(!(Ita(a,97582)|0)){i=519;break}if(!(Ita(a,97603)|0)){i=520;break}if(!(Ita(a,97618)|0)){i=521;break}if(!(Ita(a,97634)|0)){i=522;break}if(!(Ita(a,97650)|0)){i=523;break}if(!(Ita(a,97668)|0)){i=524;break}if(!(Ita(a,97690)|0)){i=525;break}if(!(Ita(a,97702)|0)){i=526;break}if(!(Ita(a,97714)|0)){i=527;break}if(!(Ita(a,97738)|0)){i=528;break}if(!(Ita(a,97762)|0)){i=529;break}if(!(Ita(a,97779)|0)){i=530;break}if(!(Ita(a,97801)|0)){i=531;break}if(!(Ita(a,97823)|0)){i=532;break}if(!(Ita(a,97851)|0)){i=533;break}if(!(Ita(a,97865)|0)){i=534;break}if(!(Ita(a,97883)|0)){i=535;break}if(!(Ita(a,97900)|0)){i=536;break}if(!(Ita(a,97917)|0)){i=537;break}if(!(Ita(a,97936)|0)){i=538;break}if(!(Ita(a,97955)|0)){i=539;break}if(!(Ita(a,97973)|0)){i=540;break}if(!(Ita(a,97989)|0)){i=541;break}if(!(Ita(a,98007)|0)){i=542;break}if(!(Ita(a,98023)|0)){i=543;break}if(!(Ita(a,98034)|0)){i=544;break}if(!(Ita(a,98045)|0)){i=545;break}if(!(Ita(a,98053)|0)){i=546;break}if(!(Ita(a,98065)|0)){i=547;break}if(!(Ita(a,98071)|0)){i=548;break}if(!(Ita(a,98081)|0)){i=549;break}if(!(Ita(a,98087)|0)){i=550;break}if(!(Ita(a,98096)|0)){i=551;break}if(!(Ita(a,98107)|0)){i=552;break}if(!(Ita(a,98116)|0)){i=553;break}if(!(Ita(a,98124)|0)){i=554;break}if(!(Ita(a,98137)|0)){i=555;break}if(!(Ita(a,98148)|0)){i=556;break}if(!(Ita(a,98158)|0)){i=557;break}if(!(Ita(a,98168)|0)){i=558;break}if(!(Ita(a,114756)|0)){i=559;break}if(!(Ita(a,98176)|0)){i=560;break}if(!(Ita(a,98189)|0)){i=561;break}if(!(Ita(a,98201)|0)){i=562;break}if(!(Ita(a,98218)|0)){i=563;break}if(!(Ita(a,98231)|0)){i=564;break}if(!(Ita(a,98251)|0)){i=565;break}if(!(Ita(a,98266)|0)){i=566;break}if(!(Ita(a,98278)|0)){i=567;break}if(!(Ita(a,98293)|0)){i=568;break}if(!(Ita(a,98301)|0)){i=569;break}if(!(Ita(a,98313)|0)){i=570;break}if(!(Ita(a,98318)|0)){i=571;break}if(!(Ita(a,98333)|0)){i=572;break}if(!(Ita(a,98343)|0)){i=573;break}if(!(Ita(a,98349)|0)){i=574;break}if(!(Ita(a,98358)|0)){i=575;break}if(!(Ita(a,98373)|0)){i=576;break}if(!(Ita(a,98390)|0)){i=577;break}if(!(Ita(a,98410)|0)){i=578;break}if(!(Ita(a,98424)|0)){i=579;break}if(!(Ita(a,98450)|0)){i=580;break}if(!(Ita(a,98459)|0)){i=581;break}if(!(Ita(a,98471)|0)){i=582;break}if(!(Ita(a,98486)|0)){i=583;break}if(!(Ita(a,98493)|0)){i=584;break}if(!(Ita(a,98506)|0)){i=585;break}if(!(Ita(a,98515)|0)){i=586;break}if(!(Ita(a,98522)|0)){i=587;break}if(!(Ita(a,98527)|0)){i=588;break}if(!(Ita(a,98541)|0)){i=589;break}if(!(Ita(a,98559)|0)){i=590;break}if(!(Ita(a,98571)|0)){i=591;break}if(!(Ita(a,98577)|0)){i=592;break}if(!(Ita(a,98584)|0)){i=593;break}if(!(Ita(a,98592)|0)){i=594;break}if(!(Ita(a,98600)|0)){i=595;break}if(!(Ita(a,98609)|0)){i=596;break}if(!(Ita(a,98621)|0)){i=597;break}if(!(Ita(a,98629)|0)){i=598;break}if(!(Ita(a,98641)|0)){i=599;break}if(!(Ita(a,98663)|0)){i=600;break}if(!(Ita(a,98679)|0)){i=601;break}if(!(Ita(a,98692)|0)){i=602;break}if(!(Ita(a,98709)|0)){i=603;break}if(!(Ita(a,98736)|0)){i=604;break}if(!(Ita(a,98754)|0)){i=605;break}if(!(Ita(a,98772)|0)){i=606;break}if(!(Ita(a,98790)|0)){i=607;break}if(!(Ita(a,98807)|0)){i=608;break}if(!(Ita(a,98815)|0)){i=609;break}if(!(Ita(a,98827)|0)){i=610;break}if(!(Ita(a,98837)|0)){i=611;break}if(!(Ita(a,98851)|0)){i=612;break}if(!(Ita(a,98859)|0)){i=613;break}if(!(Ita(a,98876)|0)){i=614;break}if(!(Ita(a,98887)|0)){i=615;break}if(!(Ita(a,98897)|0)){i=616;break}if(!(Ita(a,98910)|0)){i=617;break}if(!(Ita(a,98927)|0)){i=618;break}if(!(Ita(a,98939)|0)){i=619;break}if(!(Ita(a,98943)|0)){i=620;break}if(!(Ita(a,98952)|0)){i=621;break}if(!(Ita(a,98957)|0)){i=622;break}if(!(Ita(a,98967)|0)){i=623;break}if(!(Ita(a,98973)|0)){i=624;break}if(!(Ita(a,98984)|0)){i=625;break}if(!(Ita(a,98990)|0)){i=626;break}if(!(Ita(a,99001)|0)){i=627;break}if(!(Ita(a,99008)|0)){i=628;break}if(!(Ita(a,99018)|0)){i=629;break}if(!(Ita(a,99028)|0)){i=630;break}if(!(Ita(a,99032)|0)){i=631;break}if(!(Ita(a,99036)|0)){i=632;break}if(!(Ita(a,99044)|0)){i=633;break}if(!(Ita(a,99050)|0)){i=634;break}if(!(Ita(a,99057)|0)){i=635;break}if(!(Ita(a,99062)|0)){i=636;break}if(!(Ita(a,99067)|0)){i=637;break}if(!(Ita(a,99076)|0)){i=638;break}if(!(Ita(a,99085)|0)){i=639;break}if(!(Ita(a,99094)|0)){i=640;break}if(!(Ita(a,99103)|0)){i=641;break}if(!(Ita(a,99126)|0)){i=642;break}if(!(Ita(a,99136)|0)){i=643;break}if(!(Ita(a,99146)|0)){i=644;break}if(!(Ita(a,99155)|0)){i=645;break}if(!(Ita(a,99165)|0)){i=646;break}if(!(Ita(a,99170)|0)){i=647;break}if(!(Ita(a,99188)|0)){i=648;break}if(!(Ita(a,99197)|0)){i=649;break}if(!(Ita(a,99206)|0)){i=650;break}if(!(Ita(a,99215)|0)){i=651;break}if(!(Ita(a,99229)|0)){i=652;break}if(!(Ita(a,99236)|0)){i=653;break}if(!(Ita(a,99245)|0)){i=654;break}if(!(Ita(a,99260)|0)){i=655;break}if(!(Ita(a,99287)|0)){i=656;break}if(!(Ita(a,99302)|0)){i=657;break}if(!(Ita(a,113694)|0)){i=658;break}if(!(Ita(a,99320)|0)){i=659;break}if(!(Ita(a,114189)|0)){i=660;break}if(!(Ita(a,113936)|0)){i=661;break}if(!(Ita(a,114059)|0)){i=662;break}if(!(Ita(a,113815)|0)){i=663;break}if(!(Ita(a,99332)|0)){i=664;break}if(!(Ita(a,99346)|0)){i=665;break}if(!(Ita(a,99360)|0)){i=666;break}if(!(Ita(a,99372)|0)){i=667;break}if(!(Ita(a,99390)|0)){i=668;break}if(!(Ita(a,99405)|0)){i=669;break}if(!(Ita(a,99424)|0)){i=670;break}if(!(Ita(a,99441)|0)){i=671;break}if(!(Ita(a,99445)|0)){i=672;break}if(!(Ita(a,99454)|0)){i=673;break}if(!(Ita(a,99464)|0)){i=674;break}if(!(Ita(a,99467)|0)){i=675;break}if(!(Ita(a,99476)|0)){i=676;break}if(!(Ita(a,99486)|0)){i=677;break}if(!(Ita(a,99489)|0)){i=678;break}if(!(Ita(a,99498)|0)){i=679;break}if(!(Ita(a,99501)|0)){i=680;break}if(!(Ita(a,99507)|0)){i=681;break}if(!(Ita(a,99512)|0)){i=682;break}if(!(Ita(a,99521)|0)){i=683;break}if(!(Ita(a,99526)|0)){i=684;break}if(!(Ita(a,99533)|0)){i=685;break}if(!(Ita(a,99540)|0)){i=686;break}if(!(Ita(a,99547)|0)){i=687;break}if(!(Ita(a,99556)|0)){i=688;break}if(!(Ita(a,99571)|0)){i=689;break}if(!(Ita(a,99592)|0)){i=690;break}if(!(Ita(a,99615)|0)){i=691;break}if(!(Ita(a,99639)|0)){i=692;break}if(!(Ita(a,99657)|0)){i=693;break}if(!(Ita(a,114464)|0)){i=694;break}if(!(Ita(a,114591)|0)){i=695;break}if(!(Ita(a,114328)|0)){i=696;break}if(!(Ita(a,99669)|0)){i=697;break}if(!(Ita(a,99684)|0)){i=698;break}if(!(Ita(a,99698)|0)){i=699;break}if(!(Ita(a,99710)|0)){i=700;break}if(!(Ita(a,99724)|0)){i=701;break}if(!(Ita(a,99739)|0)){i=702;break}if(!(Ita(a,99756)|0)){i=703;break}if(!(Ita(a,99773)|0)){i=704;break}if(!(Ita(a,99788)|0)){i=705;break}if(!(Ita(a,99803)|0)){i=706;break}if(!(Ita(a,99811)|0)){i=707;break}if(!(Ita(a,99824)|0)){i=708;break}if(!(Ita(a,99839)|0)){i=709;break}if(!(Ita(a,99854)|0)){i=710;break}if(!(Ita(a,99869)|0)){i=711;break}if(!(Ita(a,99884)|0)){i=712;break}if(!(Ita(a,99899)|0)){i=713;break}if(!(Ita(a,99914)|0)){i=714;break}if(!(Ita(a,99933)|0)){i=715;break}if(!(Ita(a,99950)|0)){i=716;break}if(!(Ita(a,99969)|0)){i=717;break}if(!(Ita(a,99988)|0)){i=718;break}if(!(Ita(a,100007)|0)){i=719;break}if(!(Ita(a,100026)|0)){i=720;break}if(!(Ita(a,100045)|0)){i=721;break}if(!(Ita(a,100064)|0)){i=722;break}if(!(Ita(a,100090)|0)){i=723;break}if(!(Ita(a,100098)|0)){i=724;break}if(!(Ita(a,100109)|0)){i=725;break}if(!(Ita(a,100122)|0)){i=726;break}if(!(Ita(a,100135)|0)){i=727;break}if(!(Ita(a,100148)|0)){i=728;break}if(!(Ita(a,100161)|0)){i=729;break}if(!(Ita(a,100174)|0)){i=730;break}if(!(Ita(a,100187)|0)){i=731;break}if(!(Ita(a,100198)|0)){i=732;break}if(!(Ita(a,100212)|0)){i=733;break}if(!(Ita(a,100233)|0)){i=734;break}if(!(Ita(a,100241)|0)){i=735;break}if(!(Ita(a,100246)|0)){i=736;break}if(!(Ita(a,100249)|0)){i=737;break}if(!(Ita(a,100257)|0)){i=738;break}if(!(Ita(a,100260)|0)){i=739;break}if(!(Ita(a,100265)|0)){i=740;break}if(!(Ita(a,100274)|0)){i=741;break}if(!(Ita(a,100292)|0)){i=742;break}if(!(Ita(a,100295)|0)){i=743;break}if(!(Ita(a,100304)|0)){i=744;break}if(!(Ita(a,100322)|0)){i=745;break}if(!(Ita(a,100328)|0)){i=746;break}if(!(Ita(a,100334)|0)){i=747;break}if(!(Ita(a,100340)|0)){i=748;break}if(!(Ita(a,100346)|0)){i=749;break}if(!(Ita(a,100351)|0)){i=750;break}if(!(Ita(a,100359)|0)){i=751;break}if(!(Ita(a,100364)|0)){i=752;break}if(!(Ita(a,100378)|0)){i=753;break}if(!(Ita(a,100389)|0)){i=754;break}if(!(Ita(a,100402)|0)){i=755;break}if(!(Ita(a,100414)|0)){i=756;break}if(!(Ita(a,100426)|0)){i=757;break}if(!(Ita(a,100442)|0)){i=758;break}if(!(Ita(a,100460)|0)){i=759;break}if(!(Ita(a,100472)|0)){i=760;break}if(!(Ita(a,100491)|0)){i=761;break}if(!(Ita(a,100512)|0)){i=762;break}if(!(Ita(a,100536)|0)){i=763;break}if(!(Ita(a,100554)|0)){i=764;break}if(!(Ita(a,100556)|0)){i=765;break}if(!(Ita(a,100577)|0)){i=766;break}if(!(Ita(a,100582)|0)){i=767;break}if(!(Ita(a,100587)|0)){i=768;break}if(!(Ita(a,100602)|0)){i=769;break}if(!(Ita(a,100619)|0)){i=770;break}if(!(Ita(a,100637)|0)){i=771;break}if(!(Ita(a,100655)|0)){i=772;break}if(!(Ita(a,100673)|0)){i=773;break}if(!(Ita(a,100691)|0)){i=774;break}if(!(Ita(a,100709)|0)){i=775;break}if(!(Ita(a,100727)|0)){i=776;break}if(!(Ita(a,100745)|0)){i=777;break}if(!(Ita(a,100763)|0)){i=778;break}if(!(Ita(a,100781)|0)){i=779;break}if(!(Ita(a,100800)|0)){i=780;break}if(!(Ita(a,100819)|0)){i=781;break}if(!(Ita(a,100838)|0)){i=782;break}if(!(Ita(a,100857)|0)){i=783;break}if(!(Ita(a,100876)|0)){i=784;break}if(!(Ita(a,100895)|0)){i=785;break}if(!(Ita(a,100914)|0)){i=786;break}if(!(Ita(a,100933)|0)){i=787;break}if(!(Ita(a,100952)|0)){i=788;break}if(!(Ita(a,100971)|0)){i=789;break}if(!(Ita(a,100990)|0)){i=790;break}if(!(Ita(a,101009)|0)){i=791;break}if(!(Ita(a,101028)|0)){i=792;break}if(!(Ita(a,101047)|0)){i=793;break}if(!(Ita(a,101066)|0)){i=794;break}if(!(Ita(a,101085)|0)){i=795;break}if(!(Ita(a,101104)|0)){i=796;break}if(!(Ita(a,101123)|0)){i=797;break}if(!(Ita(a,101142)|0)){i=798;break}if(!(Ita(a,101161)|0)){i=799;break}if(!(Ita(a,101180)|0)){i=800;break}if(!(Ita(a,101199)|0)){i=801;break}if(!(Ita(a,101218)|0)){i=802;break}if(!(Ita(a,101237)|0)){i=803;break}if(!(Ita(a,101256)|0)){i=804;break}if(!(Ita(a,101275)|0)){i=805;break}if(!(Ita(a,101294)|0)){i=806;break}if(!(Ita(a,101313)|0)){i=807;break}if(!(Ita(a,101332)|0)){i=808;break}if(!(Ita(a,101351)|0)){i=809;break}if(!(Ita(a,101370)|0)){i=810;break}if(!(Ita(a,101389)|0)){i=811;break}if(!(Ita(a,101408)|0)){i=812;break}if(!(Ita(a,101427)|0)){i=813;break}if(!(Ita(a,101446)|0)){i=814;break}if(!(Ita(a,101465)|0)){i=815;break}if(!(Ita(a,101484)|0)){i=816;break}if(!(Ita(a,101503)|0)){i=817;break}if(!(Ita(a,101522)|0)){i=818;break}if(!(Ita(a,101541)|0)){i=819;break}if(!(Ita(a,101560)|0)){i=820;break}if(!(Ita(a,101579)|0)){i=821;break}if(!(Ita(a,101598)|0)){i=822;break}if(!(Ita(a,101617)|0)){i=823;break}if(!(Ita(a,101636)|0)){i=824;break}if(!(Ita(a,101655)|0)){i=825;break}if(!(Ita(a,101674)|0)){i=826;break}if(!(Ita(a,101693)|0)){i=827;break}if(!(Ita(a,101712)|0)){i=828;break}if(!(Ita(a,101731)|0)){i=829;break}if(!(Ita(a,101750)|0)){i=830;break}if(!(Ita(a,101769)|0)){i=831;break}if(!(Ita(a,101788)|0)){i=832;break}if(!(Ita(a,101807)|0)){i=833;break}if(!(Ita(a,101826)|0)){i=834;break}if(!(Ita(a,101845)|0)){i=835;break}if(!(Ita(a,101864)|0)){i=836;break}if(!(Ita(a,101883)|0)){i=837;break}if(!(Ita(a,101902)|0)){i=838;break}if(!(Ita(a,101921)|0)){i=839;break}if(!(Ita(a,101940)|0)){i=840;break}if(!(Ita(a,101959)|0)){i=841;break}if(!(Ita(a,101978)|0)){i=842;break}if(!(Ita(a,101997)|0)){i=843;break}if(!(Ita(a,102016)|0)){i=844;break}if(!(Ita(a,102035)|0)){i=845;break}if(!(Ita(a,102054)|0)){i=846;break}if(!(Ita(a,102073)|0)){i=847;break}if(!(Ita(a,102092)|0)){i=848;break}if(!(Ita(a,102111)|0)){i=849;break}if(!(Ita(a,102130)|0)){i=850;break}if(!(Ita(a,102149)|0)){i=851;break}if(!(Ita(a,102168)|0)){i=852;break}if(!(Ita(a,102187)|0)){i=853;break}if(!(Ita(a,102206)|0)){i=854;break}if(!(Ita(a,102225)|0)){i=855;break}if(!(Ita(a,102244)|0)){i=856;break}if(!(Ita(a,102263)|0)){i=857;break}if(!(Ita(a,102282)|0)){i=858;break}if(!(Ita(a,102301)|0)){i=859;break}if(!(Ita(a,102320)|0)){i=860;break}if(!(Ita(a,102339)|0)){i=861;break}if(!(Ita(a,102358)|0)){i=862;break}if(!(Ita(a,102377)|0)){i=863;break}if(!(Ita(a,102396)|0)){i=864;break}if(!(Ita(a,102415)|0)){i=865;break}if(!(Ita(a,102434)|0)){i=866;break}if(!(Ita(a,102453)|0)){i=867;break}if(!(Ita(a,102472)|0)){i=868;break}if(!(Ita(a,102491)|0)){i=869;break}if(!(Ita(a,102511)|0)){i=870;break}if(!(Ita(a,102532)|0)){i=871;break}if(!(Ita(a,102547)|0)){i=872;break}if(!(Ita(a,102566)|0)){i=873;break}if(!(Ita(a,102595)|0)){i=874;break}if(!(Ita(a,102618)|0)){i=875;break}if(!(Ita(a,102629)|0)){i=876;break}if(!(Ita(a,102644)|0)){i=877;break}if(!(Ita(a,102669)|0)){i=878;break}if(!(Ita(a,102689)|0)){i=879;break}if(!(Ita(a,102704)|0)){i=880;break}if(!(Ita(a,102715)|0)){i=881;break}if(!(Ita(a,102736)|0)){i=882;break}if(!(Ita(a,102752)|0)){i=883;break}if(!(Ita(a,102770)|0)){i=884;break}if(!(Ita(a,102792)|0)){i=885;break}if(!(Ita(a,102804)|0)){i=886;break}if(!(Ita(a,102828)|0)){i=887;break}if(!(Ita(a,102842)|0)){i=888;break}if(!(Ita(a,102860)|0)){i=889;break}if(!(Ita(a,102879)|0)){i=890;break}if(!(Ita(a,102905)|0)){i=891;break}if(!(Ita(a,102911)|0)){i=892;break}if(!(Ita(a,102924)|0)){i=893;break}if(!(Ita(a,102930)|0)){i=894;break}if(!(Ita(a,102943)|0)){i=895;break}if(!(Ita(a,102950)|0)){i=896;break}if(!(Ita(a,102957)|0)){i=897;break}if(!(Ita(a,102963)|0)){i=898;break}if(!(Ita(a,102969)|0)){i=899;break}if(!(Ita(a,102978)|0)){i=900;break}if(!(Ita(a,102984)|0)){i=901;break}if(!(Ita(a,102990)|0)){i=902;break}if(!(Ita(a,102999)|0)){i=903;break}if(!(Ita(a,103005)|0)){i=904;break}if(!(Ita(a,103011)|0)){i=905;break}if(!(Ita(a,103020)|0)){i=906;break}if(!(Ita(a,103033)|0)){i=907;break}if(!(Ita(a,103046)|0)){i=908;break}if(!(Ita(a,103054)|0)){i=909;break}if(!(Ita(a,103064)|0)){i=910;break}if(!(Ita(a,103089)|0)){i=911;break}if(!(Ita(a,103106)|0)){i=912;break}if(!(Ita(a,103123)|0)){i=913;break}if(!(Ita(a,103132)|0)){i=914;break}if(!(Ita(a,103141)|0)){i=915;break}if(!(Ita(a,103153)|0)){i=916;break}if(!(Ita(a,103174)|0)){i=917;break}if(!(Ita(a,103198)|0)){i=918;break}if(!(Ita(a,103225)|0)){i=919;break}if(!(Ita(a,103254)|0)){i=920;break}if(!(Ita(a,103279)|0)){i=921;break}if(!(Ita(a,103284)|0)){i=922;break}if(!(Ita(a,103304)|0)){i=923;break}if(!(Ita(a,103318)|0)){i=924;break}if(!(Ita(a,103338)|0)){i=925;break}if(!(Ita(a,103359)|0)){i=926;break}if(!(Ita(a,103367)|0)){i=927;break}if(!(Ita(a,103381)|0)){i=928;break}if(!(Ita(a,103405)|0)){i=929;break}if(!(Ita(a,138571)|0)){i=930;break}if(!(Ita(a,138932)|0)){i=931;break}if(!(Ita(a,139212)|0)){i=932;break}if(!(Ita(a,103414)|0)){i=933;break}if(!(Ita(a,103423)|0)){i=934;break}if(!(Ita(a,103431)|0)){i=935;break}if(!(Ita(a,103440)|0)){i=936;break}if(!(Ita(a,103454)|0)){i=937;break}if(!(Ita(a,103459)|0)){i=938;break}if(!(Ita(a,103469)|0)){i=939;break}if(!(Ita(a,103479)|0)){i=940;break}if(!(Ita(a,103489)|0)){i=941;break}if(!(Ita(a,103498)|0)){i=942;break}if(!(Ita(a,103521)|0)){i=943;break}if(!(Ita(a,103526)|0)){i=944;break}if(!(Ita(a,103532)|0)){i=945;break}if(!(Ita(a,103540)|0)){i=946;break}if(!(Ita(a,103550)|0)){i=947;break}if(!(Ita(a,103556)|0)){i=948;break}if(!(Ita(a,103568)|0)){i=949;break}if(!(Ita(a,103588)|0)){i=950;break}if(!(Ita(a,103612)|0)){i=951;break}if(!(Ita(a,103630)|0)){i=952;break}if(!(Ita(a,103647)|0)){i=953;break}if(!(Ita(a,103656)|0)){i=954;break}if(!(Ita(a,103671)|0)){i=955;break}if(!(Ita(a,103685)|0)){i=956;break}if(!(Ita(a,103698)|0)){i=957;break}if(!(Ita(a,103714)|0)){i=958;break}if(!(Ita(a,103738)|0)){i=959;break}if(!(Ita(a,103761)|0)){i=960;break}if(!(Ita(a,103772)|0)){i=961;break}if(!(Ita(a,103782)|0)){i=962;break}if(!(Ita(a,103793)|0)){i=963;break}if(!(Ita(a,103801)|0)){i=964;break}if(!(Ita(a,103808)|0)){i=965;break}if(!(Ita(a,103817)|0)){i=966;break}if(!(Ita(a,103822)|0)){i=967;break}if(!(Ita(a,103830)|0)){i=968;break}if(!(Ita(a,103845)|0)){i=969;break}if(!(Ita(a,103860)|0)){i=970;break}if(!(Ita(a,103874)|0)){i=971;break}if(!(Ita(a,103877)|0)){i=972;break}if(!(Ita(a,103881)|0)){i=973;break}if(!(Ita(a,103887)|0)){i=974;break}if(!(Ita(a,103896)|0)){i=975;break}if(!(Ita(a,103906)|0)){i=976;break}if(!(Ita(a,103910)|0)){i=977;break}if(!(Ita(a,103914)|0)){i=978;break}if(!(Ita(a,103920)|0)){i=979;break}if(!(Ita(a,103924)|0)){i=980;break}if(!(Ita(a,103931)|0)){i=981;break}if(!(Ita(a,103945)|0)){i=982;break}if(!(Ita(a,103956)|0)){i=983;break}if(!(Ita(a,103969)|0)){i=984;break}if(!(Ita(a,103976)|0)){i=985;break}if(!(Ita(a,103986)|0)){i=986;break}if(!(Ita(a,104002)|0)){i=987;break}if(!(Ita(a,104011)|0)){i=988;break}if(!(Ita(a,104021)|0)){i=989;break}if(!(Ita(a,104036)|0)){i=990;break}if(!(Ita(a,104048)|0)){i=991;break}if(!(Ita(a,104070)|0)){i=992;break}if(!(Ita(a,104092)|0)){i=993;break}if(!(Ita(a,104115)|0)){i=994;break}if(!(Ita(a,104138)|0)){i=995;break}if(!(Ita(a,104161)|0)){i=996;break}if(!(Ita(a,104185)|0)){i=997;break}if(!(Ita(a,104206)|0)){i=998;break}if(!(Ita(a,104227)|0)){i=999;break}if(!(Ita(a,104236)|0)){i=1e3;break}if(!(Ita(a,104253)|0)){i=1001;break}if(!(Ita(a,104280)|0)){i=1002;break}if(!(Ita(a,104300)|0)){i=1003;break}if(!(Ita(a,104319)|0)){i=1004;break}if(!(Ita(a,104338)|0)){i=1005;break}if(!(Ita(a,104356)|0)){i=1006;break}if(!(Ita(a,104374)|0)){i=1007;break}if(!(Ita(a,104396)|0)){i=1008;break}if(!(Ita(a,104418)|0)){i=1009;break}if(!(Ita(a,104436)|0)){i=1010;break}if(!(Ita(a,104456)|0)){i=1011;break}if(!(Ita(a,104477)|0)){i=1012;break}if(!(Ita(a,104498)|0)){i=1013;break}if(!(Ita(a,104517)|0)){i=1014;break}if(!(Ita(a,104541)|0)){i=1015;break}if(!(Ita(a,104570)|0)){i=1016;break}if(!(Ita(a,104602)|0)){i=1017;break}j=(Ita(a,104616)|0)==0;if(j|b^1){i=j?1018:-1;break}j=e+56|0;l=e+4|0;k[e>>2]=27524;k[j>>2]=27544;B=0;wa(508,e+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=e+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,l|0,d|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);Yua(p);Ava(l);q=u;s=t;break}Yua(d);B=0;t=Ia(40,e|0,104643,5)|0;u=B;B=0;do if(!(u&1)){v=Lta(a)|0;B=0;w=Ia(40,t|0,a|0,v|0)|0;v=B;B=0;if(v&1)break;B=0;v=Ia(40,w|0,114879,10)|0;w=B;B=0;if(w&1)break;B=0;Xa(239,v|0,0)|0;v=B;B=0;if(v&1)break;v=Ab(20)|0;B=0;eb(502,f|0,104649,76);w=B;B=0;do if(w&1){x=Rb()|0;y=Q;z=x}else{B=0;eb(502,g|0,104726,13);x=B;B=0;if(x&1){x=Rb()|0;A=Q;Yua(f);y=A;z=x;break}B=0;wa(510,h|0,l|0);x=B;B=0;if(x&1){x=Rb()|0;C=Q;D=x;E=1}else{B=0;ua(163,v|0,f|0,g|0,1066,h|0);x=B;B=0;if(x&1)F=1;else{B=0;eb(503,v|0,1240,229);B=0;F=0}x=Rb()|0;A=Q;Yua(h);C=A;D=x;E=F}Yua(g);Yua(f);if(E){y=C;z=D;break}else{G=C;H=D}k[e>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Qb(H|0)}while(0);zb(v|0);G=y;H=z;k[e>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Qb(H|0)}while(0);t=Rb()|0;G=Q;H=t;k[e>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Qb(H|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}else i=17;else i=16;else i=15;else i=14;else i=13;else i=12;else i=11;else i=10;else i=9;else i=8;else i=7;else i=6;else i=5;else i=4;else i=3;else i=2;else i=1;else i=0;while(0);r=c;return i|0}function AY(){return (k[9114]&1|0)!=0|0}function BY(){return (k[9114]&2|0)!=0|0}function CY(){return (k[9114]&4|0)!=0|0}function DY(){return (k[9114]&8|0)!=0|0}function EY(){return (k[9114]&16|0)!=0|0}function FY(){return (k[9114]&32|0)!=0|0}function GY(){return (k[9114]&256|0)!=0|0}
+function Ala(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0;b=r;r=r+1968|0;c=b+1952|0;d=b+1744|0;e=b+1940|0;f=b+1592|0;g=b+1928|0;h=b+1456|0;i=b+1916|0;j=b+1304|0;l=b+1904|0;m=b+1168|0;n=b+1892|0;o=b+1016|0;p=b+1880|0;q=b+880|0;s=b+1728|0;t=b+744|0;u=b+1440|0;v=b+592|0;w=b+1152|0;x=b+456|0;y=b+728|0;z=b+304|0;A=b+440|0;C=b+168|0;D=b+152|0;E=b+16|0;F=b;if(!(k[a>>2]|0)){G=E+56|0;H=E+4|0;k[E>>2]=27524;k[G>>2]=27544;B=0;wa(508,E+56|0,H|0);I=B;B=0;if(I&1){I=Rb()|0;J=Q;K=I;vva(G);Qb(K|0)}k[E+128>>2]=0;k[E+132>>2]=-1;k[E>>2]=27468;k[G>>2]=27488;B=0;va(448,H|0);I=B;B=0;do if(I&1){L=Rb()|0;M=Q;N=L}else{k[H>>2]=27560;L=E+36|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;k[E+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,H|0,c|0);O=B;B=0;if(O&1){O=Rb()|0;P=Q;Yua(c);Yua(L);Ava(H);M=P;N=O;break}Yua(c);B=0;Ia(40,E|0,142729,16)|0;O=B;B=0;do if(!(O&1)?(B=0,wa(510,F|0,H|0),P=B,B=0,!(P&1)):0){B=0;ya(424,F|0)|0;P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(F);S=R;T=P;break}Yua(F);k[E>>2]=27468;k[G>>2]=27488;k[H>>2]=27560;Yua(L);Ava(H);vva(G);r=b;return}else U=202;while(0);if((U|0)==202){O=Rb()|0;S=Q;T=O}k[E>>2]=27468;k[G>>2]=27488;k[H>>2]=27560;Yua(L);Ava(H);vva(G);V=S;W=T;Qb(W|0)}while(0);J=M;K=N;vva(G);Qb(K|0)}K=d+56|0;G=d+4|0;k[d>>2]=27524;k[K>>2]=27544;B=0;wa(508,d+56|0,G|0);N=B;B=0;if(N&1){N=Rb()|0;X=Q;Y=N;vva(K);Qb(Y|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[K>>2]=27488;B=0;va(448,G|0);N=B;B=0;do if(N&1){M=Rb()|0;Z=Q;_=M}else{k[G>>2]=27560;M=d+36|0;k[M>>2]=0;k[M+4>>2]=0;k[M+8>>2]=0;k[M+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,G|0,c|0);J=B;B=0;if(J&1){J=Rb()|0;T=Q;Yua(c);Yua(M);Ava(G);Z=T;_=J;break}Yua(c);B=0;Ia(40,d|0,142679,10)|0;J=B;B=0;do if(!(J&1)?(B=0,wa(510,e|0,G|0),T=B,B=0,!(T&1)):0){B=0;ya(424,e|0)|0;T=B;B=0;if(T&1){T=Rb()|0;S=Q;Yua(e);$=S;aa=T;break}Yua(e);k[d>>2]=27468;k[K>>2]=27488;k[G>>2]=27560;Yua(M);Ava(G);vva(K);T=f+56|0;S=f+4|0;k[f>>2]=27524;k[T>>2]=27544;B=0;wa(508,f+56|0,S|0);H=B;B=0;if(H&1){H=Rb()|0;ba=Q;ca=H;vva(T);Qb(ca|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[T>>2]=27488;B=0;va(448,S|0);H=B;B=0;do if(H&1){E=Rb()|0;da=Q;ea=E}else{k[S>>2]=27560;E=f+36|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,S|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;I=Q;Yua(c);Yua(E);Ava(S);da=I;ea=F;break}Yua(c);B=0;F=Ia(40,f|0,142690,10)|0;I=B;B=0;do if(((!(I&1)?(B=0,O=Xa(242,F|0,k[a>>2]|0)|0,P=B,B=0,!(P&1)):0)?(B=0,Ia(40,O|0,149177,1)|0,O=B,B=0,!(O&1)):0)?(B=0,wa(510,g|0,S|0),O=B,B=0,!(O&1)):0){B=0;ya(424,g|0)|0;O=B;B=0;if(O&1){O=Rb()|0;P=Q;Yua(g);fa=P;ga=O;break}Yua(g);k[f>>2]=27468;k[T>>2]=27488;k[S>>2]=27560;Yua(E);Ava(S);vva(T);O=h+56|0;P=h+4|0;k[h>>2]=27524;k[O>>2]=27544;B=0;wa(508,h+56|0,P|0);R=B;B=0;if(R&1){R=Rb()|0;ha=Q;ia=R;vva(O);Qb(ia|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[O>>2]=27488;B=0;va(448,P|0);R=B;B=0;do if(R&1){ja=Rb()|0;ka=Q;la=ja}else{k[P>>2]=27560;ja=h+36|0;k[ja>>2]=0;k[ja+4>>2]=0;k[ja+8>>2]=0;k[ja+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,P|0,c|0);ma=B;B=0;if(ma&1){ma=Rb()|0;na=Q;Yua(c);Yua(ja);Ava(P);ka=na;la=ma;break}Yua(c);B=0;Ia(40,h|0,142701,11)|0;ma=B;B=0;do if(ma&1)U=58;else{B=0;wa(510,i|0,P|0);na=B;B=0;if(na&1){U=58;break}B=0;ya(424,i|0)|0;na=B;B=0;if(na&1){na=Rb()|0;oa=Q;Yua(i);pa=oa;qa=na;break}Yua(i);k[h>>2]=27468;k[O>>2]=27488;k[P>>2]=27560;Yua(ja);Ava(P);vva(O);a:do if((k[a>>2]|0)>0){na=j+56|0;oa=j+4|0;ra=j+56|0;sa=j+128|0;ta=j+132|0;ua=j+36|0;xa=j+52|0;za=a+8|0;Aa=0;while(1){k[j>>2]=27524;k[na>>2]=27544;B=0;wa(508,ra|0,oa|0);Ba=B;B=0;if(Ba&1){U=43;break}k[sa>>2]=0;k[ta>>2]=-1;k[j>>2]=27468;k[na>>2]=27488;B=0;va(448,oa|0);Ba=B;B=0;if(Ba&1){U=44;break}k[oa>>2]=27560;k[ua>>2]=0;k[ua+4>>2]=0;k[ua+8>>2]=0;k[ua+12>>2]=0;k[xa>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,oa|0,c|0);Ba=B;B=0;if(Ba&1){U=42;break}Yua(c);B=0;Ba=Xa(242,j|0,k[(k[za>>2]|0)+(Aa<<2)>>2]|0)|0;Ca=B;B=0;if(Ca&1){U=61;break}B=0;Ia(40,Ba|0,149175,1)|0;Ba=B;B=0;if(Ba&1){U=61;break}B=0;wa(510,l|0,oa|0);Ba=B;B=0;if(Ba&1){U=61;break}B=0;ya(424,l|0)|0;Ba=B;B=0;if(Ba&1){U=62;break}Yua(l);k[j>>2]=27468;k[na>>2]=27488;k[oa>>2]=27560;Yua(ua);Ava(oa);vva(na);Aa=Aa+1|0;if((Aa|0)>=(k[a>>2]|0))break a}if((U|0)==42){Aa=Rb()|0;za=Q;Yua(c);Yua(ua);Ava(oa);Da=za;Ea=Aa;U=45}else if((U|0)==43){Aa=Rb()|0;Fa=Q;Ga=Aa;vva(na);Qb(Ga|0)}else if((U|0)==44){Aa=Rb()|0;Da=Q;Ea=Aa;U=45}else if((U|0)==61){Aa=Rb()|0;Ha=Q;Ja=Aa;U=63}else if((U|0)==62){Aa=Rb()|0;za=Q;Yua(l);Ha=za;Ja=Aa;U=63}if((U|0)==45){Fa=Da;Ga=Ea;vva(na);Qb(Ga|0)}else if((U|0)==63){k[j>>2]=27468;k[na>>2]=27488;k[oa>>2]=27560;Yua(ua);Ava(oa);vva(na);V=Ha;W=Ja;Qb(W|0)}}while(0);Aa=m+56|0;za=m+4|0;k[m>>2]=27524;k[Aa>>2]=27544;B=0;wa(508,m+56|0,za|0);xa=B;B=0;if(xa&1){xa=Rb()|0;Ka=Q;La=xa;vva(Aa);Qb(La|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[Aa>>2]=27488;B=0;va(448,za|0);xa=B;B=0;do if(xa&1){ta=Rb()|0;Ma=Q;Na=ta}else{k[za>>2]=27560;ta=m+36|0;k[ta>>2]=0;k[ta+4>>2]=0;k[ta+8>>2]=0;k[ta+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,za|0,c|0);sa=B;B=0;if(sa&1){sa=Rb()|0;ra=Q;Yua(c);Yua(ta);Ava(za);Ma=ra;Na=sa;break}Yua(c);B=0;Ia(40,m|0,149177,1)|0;sa=B;B=0;do if(sa&1)U=101;else{B=0;wa(510,n|0,za|0);ra=B;B=0;if(ra&1){U=101;break}B=0;ya(424,n|0)|0;ra=B;B=0;if(ra&1){ra=Rb()|0;Ba=Q;Yua(n);Oa=Ba;Pa=ra;break}Yua(n);k[m>>2]=27468;k[Aa>>2]=27488;k[za>>2]=27560;Yua(ta);Ava(za);vva(Aa);ra=o+56|0;Ba=o+4|0;k[o>>2]=27524;k[ra>>2]=27544;B=0;wa(508,o+56|0,Ba|0);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Qa=Q;Ra=Ca;vva(ra);Qb(Ra|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[ra>>2]=27488;B=0;va(448,Ba|0);Ca=B;B=0;do if(Ca&1){Sa=Rb()|0;Ta=Q;Ua=Sa}else{k[Ba>>2]=27560;Sa=o+36|0;k[Sa>>2]=0;k[Sa+4>>2]=0;k[Sa+8>>2]=0;k[Sa+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ba|0,c|0);Va=B;B=0;if(Va&1){Va=Rb()|0;Wa=Q;Yua(c);Yua(Sa);Ava(Ba);Ta=Wa;Ua=Va;break}Yua(c);B=0;Ia(40,o|0,142713,15)|0;Va=B;B=0;do if(Va&1)U=104;else{B=0;wa(510,p|0,Ba|0);Wa=B;B=0;if(Wa&1){U=104;break}B=0;ya(424,p|0)|0;Wa=B;B=0;if(Wa&1){Wa=Rb()|0;Ya=Q;Yua(p);Za=Ya;_a=Wa;break}Yua(p);k[o>>2]=27468;k[ra>>2]=27488;k[Ba>>2]=27560;Yua(Sa);Ava(Ba);vva(ra);b:do if((k[a>>2]|0)>0){Wa=q+56|0;Ya=q+4|0;$a=q+56|0;ab=q+128|0;bb=q+132|0;cb=q+36|0;db=q+52|0;eb=a+12|0;fb=0;while(1){k[q>>2]=27524;k[Wa>>2]=27544;B=0;wa(508,$a|0,Ya|0);gb=B;B=0;if(gb&1){U=92;break}k[ab>>2]=0;k[bb>>2]=-1;k[q>>2]=27468;k[Wa>>2]=27488;B=0;va(448,Ya|0);gb=B;B=0;if(gb&1){U=93;break}k[Ya>>2]=27560;k[cb>>2]=0;k[cb+4>>2]=0;k[cb+8>>2]=0;k[cb+12>>2]=0;k[db>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ya|0,c|0);gb=B;B=0;if(gb&1){U=91;break}Yua(c);B=0;gb=Xa(242,q|0,k[(k[eb>>2]|0)+(fb<<2)>>2]|0)|0;hb=B;B=0;if(hb&1){U=107;break}B=0;Ia(40,gb|0,149175,1)|0;gb=B;B=0;if(gb&1){U=107;break}B=0;wa(510,s|0,Ya|0);gb=B;B=0;if(gb&1){U=107;break}B=0;ya(424,s|0)|0;gb=B;B=0;if(gb&1){U=108;break}Yua(s);k[q>>2]=27468;k[Wa>>2]=27488;k[Ya>>2]=27560;Yua(cb);Ava(Ya);vva(Wa);fb=fb+1|0;if((fb|0)>=(k[a>>2]|0))break b}if((U|0)==91){fb=Rb()|0;eb=Q;Yua(c);Yua(cb);Ava(Ya);ib=eb;jb=fb;U=94}else if((U|0)==92){fb=Rb()|0;kb=Q;lb=fb;vva(Wa);Qb(lb|0)}else if((U|0)==93){fb=Rb()|0;ib=Q;jb=fb;U=94}else if((U|0)==107){fb=Rb()|0;mb=Q;nb=fb;U=109}else if((U|0)==108){fb=Rb()|0;eb=Q;Yua(s);mb=eb;nb=fb;U=109}if((U|0)==94){kb=ib;lb=jb;vva(Wa);Qb(lb|0)}else if((U|0)==109){k[q>>2]=27468;k[Wa>>2]=27488;k[Ya>>2]=27560;Yua(cb);Ava(Ya);vva(Wa);V=mb;W=nb;Qb(W|0)}}while(0);fb=t+56|0;eb=t+4|0;k[t>>2]=27524;k[fb>>2]=27544;B=0;wa(508,t+56|0,eb|0);db=B;B=0;if(db&1){db=Rb()|0;ob=Q;pb=db;vva(fb);Qb(pb|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[fb>>2]=27488;B=0;va(448,eb|0);db=B;B=0;do if(db&1){bb=Rb()|0;qb=Q;rb=bb}else{k[eb>>2]=27560;bb=t+36|0;k[bb>>2]=0;k[bb+4>>2]=0;k[bb+8>>2]=0;k[bb+12>>2]=0;k[t+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,eb|0,c|0);ab=B;B=0;if(ab&1){ab=Rb()|0;$a=Q;Yua(c);Yua(bb);Ava(eb);qb=$a;rb=ab;break}Yua(c);B=0;Ia(40,t|0,149177,1)|0;ab=B;B=0;do if(ab&1)U=134;else{B=0;wa(510,u|0,eb|0);$a=B;B=0;if($a&1){U=134;break}B=0;ya(424,u|0)|0;$a=B;B=0;if($a&1){$a=Rb()|0;gb=Q;Yua(u);sb=gb;tb=$a;break}Yua(u);k[t>>2]=27468;k[fb>>2]=27488;k[eb>>2]=27560;Yua(bb);Ava(eb);vva(fb);$a=a+4|0;if(!(k[$a>>2]|0)){gb=v+56|0;hb=v+4|0;k[v>>2]=27524;k[gb>>2]=27544;B=0;wa(508,v+56|0,hb|0);ub=B;B=0;if(ub&1){ub=Rb()|0;vb=Q;wb=ub;vva(gb);Qb(wb|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[gb>>2]=27488;B=0;va(448,hb|0);ub=B;B=0;do if(ub&1){xb=Rb()|0;yb=Q;zb=xb}else{k[hb>>2]=27560;xb=v+36|0;k[xb>>2]=0;k[xb+4>>2]=0;k[xb+8>>2]=0;k[xb+12>>2]=0;k[v+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,hb|0,c|0);Ab=B;B=0;if(Ab&1){Ab=Rb()|0;Bb=Q;Yua(c);Yua(xb);Ava(hb);yb=Bb;zb=Ab;break}Yua(c);B=0;Ia(40,v|0,142746,37)|0;Ab=B;B=0;do if(Ab&1)U=137;else{B=0;wa(510,w|0,hb|0);Bb=B;B=0;if(Bb&1){U=137;break}B=0;ya(424,w|0)|0;Bb=B;B=0;if(Bb&1){Bb=Rb()|0;Cb=Q;Yua(w);Db=Cb;Eb=Bb;break}Yua(w);k[v>>2]=27468;k[gb>>2]=27488;k[hb>>2]=27560;Yua(xb);Ava(hb);vva(gb);r=b;return}while(0);if((U|0)==137){Ab=Rb()|0;Db=Q;Eb=Ab}k[v>>2]=27468;k[gb>>2]=27488;k[hb>>2]=27560;Yua(xb);Ava(hb);vva(gb);V=Db;W=Eb;Qb(W|0)}while(0);vb=yb;wb=zb;vva(gb);Qb(wb|0)}hb=x+56|0;ub=x+4|0;k[x>>2]=27524;k[hb>>2]=27544;B=0;wa(508,x+56|0,ub|0);Ab=B;B=0;if(Ab&1){Ab=Rb()|0;Fb=Q;Gb=Ab;vva(hb);Qb(Gb|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[hb>>2]=27488;B=0;va(448,ub|0);Ab=B;B=0;do if(Ab&1){Bb=Rb()|0;Hb=Q;Ib=Bb}else{k[ub>>2]=27560;Bb=x+36|0;k[Bb>>2]=0;k[Bb+4>>2]=0;k[Bb+8>>2]=0;k[Bb+12>>2]=0;k[x+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ub|0,c|0);Cb=B;B=0;if(Cb&1){Cb=Rb()|0;Jb=Q;Yua(c);Yua(Bb);Ava(ub);Hb=Jb;Ib=Cb;break}Yua(c);B=0;Ia(40,x|0,142784,18)|0;Cb=B;B=0;do if(!(Cb&1)){B=0;wa(510,y|0,ub|0);Jb=B;B=0;if(Jb&1){U=168;break}B=0;ya(424,y|0)|0;Jb=B;B=0;if(Jb&1){Jb=Rb()|0;Kb=Q;Yua(y);Lb=Kb;Mb=Jb;break}Yua(y);k[x>>2]=27468;k[hb>>2]=27488;k[ub>>2]=27560;Yua(Bb);Ava(ub);vva(hb);if((k[a>>2]|0)<=0){r=b;return}Jb=z+56|0;Kb=z+4|0;Nb=z+56|0;Ob=z+128|0;Pb=z+132|0;Sb=z+36|0;Tb=z+52|0;Ub=C+56|0;Vb=C+4|0;Wb=C+56|0;Xb=C+128|0;Yb=C+132|0;Zb=C+36|0;_b=C+52|0;$b=0;while(1){k[z>>2]=27524;k[Jb>>2]=27544;B=0;wa(508,Nb|0,Kb|0);ac=B;B=0;if(ac&1){U=157;break}k[Ob>>2]=0;k[Pb>>2]=-1;k[z>>2]=27468;k[Jb>>2]=27488;B=0;va(448,Kb|0);ac=B;B=0;if(ac&1){U=158;break}k[Kb>>2]=27560;k[Sb>>2]=0;k[Sb+4>>2]=0;k[Sb+8>>2]=0;k[Sb+12>>2]=0;k[Tb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Kb|0,c|0);ac=B;B=0;if(ac&1){U=156;break}Yua(c);B=0;ac=Ia(40,z|0,142803,16)|0;bc=B;B=0;if(bc&1){U=171;break}B=0;bc=Xa(242,ac|0,$b|0)|0;ac=B;B=0;if(ac&1){U=171;break}B=0;Ia(40,bc|0,149177,1)|0;bc=B;B=0;if(bc&1){U=171;break}B=0;wa(510,A|0,Kb|0);bc=B;B=0;if(bc&1){U=171;break}B=0;ya(424,A|0)|0;bc=B;B=0;if(bc&1){U=172;break}Yua(A);k[z>>2]=27468;k[Jb>>2]=27488;k[Kb>>2]=27560;Yua(Sb);Ava(Kb);vva(Jb);bc=k[(k[$a>>2]|0)+($b<<2)>>2]|0;if(!bc){k[C>>2]=27524;k[Ub>>2]=27544;B=0;wa(508,Wb|0,Vb|0);ac=B;B=0;if(ac&1){U=178;break}k[Xb>>2]=0;k[Yb>>2]=-1;k[C>>2]=27468;k[Ub>>2]=27488;B=0;va(448,Vb|0);ac=B;B=0;if(ac&1){U=179;break}k[Vb>>2]=27560;k[Zb>>2]=0;k[Zb+4>>2]=0;k[Zb+8>>2]=0;k[Zb+12>>2]=0;k[_b>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Vb|0,c|0);ac=B;B=0;if(ac&1){U=177;break}Yua(c);B=0;Ia(40,C|0,142820,50)|0;ac=B;B=0;if(ac&1){U=186;break}B=0;wa(510,D|0,Vb|0);ac=B;B=0;if(ac&1){U=186;break}B=0;ya(424,D|0)|0;ac=B;B=0;if(ac&1){U=187;break}Yua(D);k[C>>2]=27468;k[Ub>>2]=27488;k[Vb>>2]=27560;Yua(Zb);Ava(Vb);vva(Ub)}else Ec[k[(k[bc>>2]|0)+12>>2]&1023](bc);$b=$b+1|0;if(($b|0)>=(k[a>>2]|0)){U=205;break}}switch(U|0){case 156:{$b=Rb()|0;_b=Q;Yua(c);Yua(Sb);Ava(Kb);cc=_b;dc=$b;U=159;break}case 157:{$b=Rb()|0;ec=Q;fc=$b;vva(Jb);Qb(fc|0);break}case 158:{$b=Rb()|0;cc=Q;dc=$b;U=159;break}case 171:{$b=Rb()|0;gc=Q;hc=$b;U=173;break}case 172:{$b=Rb()|0;_b=Q;Yua(A);gc=_b;hc=$b;U=173;break}case 177:{$b=Rb()|0;_b=Q;Yua(c);Yua(Zb);Ava(Vb);ic=_b;jc=$b;U=180;break}case 178:{$b=Rb()|0;kc=Q;lc=$b;vva(Ub);Qb(lc|0);break}case 179:{$b=Rb()|0;ic=Q;jc=$b;U=180;break}case 186:{$b=Rb()|0;mc=Q;nc=$b;U=188;break}case 187:{$b=Rb()|0;_b=Q;Yua(D);mc=_b;nc=$b;U=188;break}case 205:{r=b;return}}if((U|0)==159){ec=cc;fc=dc;vva(Jb);Qb(fc|0)}else if((U|0)==173){k[z>>2]=27468;k[Jb>>2]=27488;k[Kb>>2]=27560;Yua(Sb);Ava(Kb);vva(Jb);V=gc;W=hc;Qb(W|0)}else if((U|0)==180){kc=ic;lc=jc;vva(Ub);Qb(lc|0)}else if((U|0)==188){k[C>>2]=27468;k[Ub>>2]=27488;k[Vb>>2]=27560;Yua(Zb);Ava(Vb);vva(Ub);V=mc;W=nc;Qb(W|0)}}else U=168;while(0);if((U|0)==168){Cb=Rb()|0;Lb=Q;Mb=Cb}k[x>>2]=27468;k[hb>>2]=27488;k[ub>>2]=27560;Yua(Bb);Ava(ub);vva(hb);V=Lb;W=Mb;Qb(W|0)}while(0);Fb=Hb;Gb=Ib;vva(hb);Qb(Gb|0)}while(0);if((U|0)==134){ab=Rb()|0;sb=Q;tb=ab}k[t>>2]=27468;k[fb>>2]=27488;k[eb>>2]=27560;Yua(bb);Ava(eb);vva(fb);V=sb;W=tb;Qb(W|0)}while(0);ob=qb;pb=rb;vva(fb);Qb(pb|0)}while(0);if((U|0)==104){Va=Rb()|0;Za=Q;_a=Va}k[o>>2]=27468;k[ra>>2]=27488;k[Ba>>2]=27560;Yua(Sa);Ava(Ba);vva(ra);V=Za;W=_a;Qb(W|0)}while(0);Qa=Ta;Ra=Ua;vva(ra);Qb(Ra|0)}while(0);if((U|0)==101){sa=Rb()|0;Oa=Q;Pa=sa}k[m>>2]=27468;k[Aa>>2]=27488;k[za>>2]=27560;Yua(ta);Ava(za);vva(Aa);V=Oa;W=Pa;Qb(W|0)}while(0);Ka=Ma;La=Na;vva(Aa);Qb(La|0)}while(0);if((U|0)==58){ma=Rb()|0;pa=Q;qa=ma}k[h>>2]=27468;k[O>>2]=27488;k[P>>2]=27560;Yua(ja);Ava(P);vva(O);V=pa;W=qa;Qb(W|0)}while(0);ha=ka;ia=la;vva(O);Qb(ia|0)}else U=55;while(0);if((U|0)==55){F=Rb()|0;fa=Q;ga=F}k[f>>2]=27468;k[T>>2]=27488;k[S>>2]=27560;Yua(E);Ava(S);vva(T);V=fa;W=ga;Qb(W|0)}while(0);ba=da;ca=ea;vva(T);Qb(ca|0)}else U=52;while(0);if((U|0)==52){J=Rb()|0;$=Q;aa=J}k[d>>2]=27468;k[K>>2]=27488;k[G>>2]=27560;Yua(M);Ava(G);vva(K);V=$;W=aa;Qb(W|0)}while(0);X=Z;Y=_;vva(K);Qb(Y|0)}function Bla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;b=Qqa(16)|0;c=k[a+8>>2]|0;d=k[a>>2]|0;k[b>>2]=d;if((d|0)<1){k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;return b|0}e=d>>>0>1073741823?-1:d<<2;B=0;f=ya(422,e|0)|0;g=B;B=0;if(g&1){h=Rb()|0;i=Q;Sqa(b);Qb(h|0)}g=b+4|0;k[g>>2]=f;B=0;j=ya(422,e|0)|0;l=B;B=0;if(l&1){h=Rb()|0;i=Q;Sqa(b);Qb(h|0)}l=b+8|0;k[l>>2]=j;B=0;m=ya(422,e|0)|0;e=B;B=0;if(e&1){h=Rb()|0;i=Q;Sqa(b);Qb(h|0)}h=b+12|0;k[h>>2]=m;k[j>>2]=k[c>>2];k[f>>2]=0;k[m>>2]=0;if((d|0)>1){k[j+4>>2]=k[c+4>>2];k[f+4>>2]=0;k[(k[h>>2]|0)+4>>2]=0;f=k[b>>2]|0;if((f|0)>2){j=2;do{d=k[g>>2]|0;k[(k[l>>2]|0)+(j<<2)>>2]=k[c+(j<<2)>>2];k[d+(j<<2)>>2]=0;k[(k[h>>2]|0)+(j<<2)>>2]=0;j=j+1|0;d=k[b>>2]|0}while((j|0)<(d|0));n=d}else n=f;if((n|0)<=0)return b|0}n=a+4|0;f=b+4|0;j=a+12|0;a=b+12|0;h=0;do{k[(k[f>>2]|0)+(h<<2)>>2]=k[(k[n>>2]|0)+(h<<2)>>2];k[(k[a>>2]|0)+(h<<2)>>2]=k[(k[j>>2]|0)+(h<<2)>>2];h=h+1|0}while((h|0)<(k[b>>2]|0));return b|0}function Cla(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;e=r;r=r+368|0;f=e+344|0;g=e+208|0;h=e+196|0;j=e+184|0;m=e+36|0;n=e+48|0;o=e+24|0;p=e+12|0;q=e;s=(d|0)==1;if(s){t=k[a>>2]|0;if((t|0)>0){u=a+4|0;v=0;do{k[(k[u>>2]|0)+(v<<2)>>2]=0;v=v+1|0}while((v|0)!=(t|0));w=5}else{x=a;w=33}}else w=5;a:do if((w|0)==5)switch(d|0){case 0:{t=k[b>>2]|0;i[t>>0]=58;i[t+1>>0]=2;i[t+2>>0]=0;i[t+3>>0]=0;t=(k[b>>2]|0)+4|0;k[b>>2]=t;v=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;i[t>>0]=v;i[t+1>>0]=v>>8;i[t+2>>0]=v>>16;i[t+3>>0]=v>>24;k[b>>2]=(k[b>>2]|0)+4;y=a;z=1;break a;break}case 2:{k[c>>2]=(k[c>>2]|0)+8;y=a;z=0;break a;break}default:{if(s){x=a;w=33;break a}v=g+56|0;t=g+4|0;k[g>>2]=27524;k[v>>2]=27544;B=0;wa(508,g+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;A=Q;C=u;vva(v);Qb(C|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[v>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){D=Rb()|0;E=Q;F=D}else{k[t>>2]=27560;D=g+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,t|0,f|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(f);Yua(D);Ava(t);E=H;F=G;break}Yua(f);B=0;G=Ia(40,g|0,143951,43)|0;H=B;B=0;b:do if(!(H&1)?(B=0,Xa(239,G|0,0)|0,I=B,B=0,!(I&1)):0){I=Ab(20)|0;B=0;eb(502,h|0,142871,63);J=B;B=0;do if(!(J&1)){B=0;eb(502,j|0,149525,8);K=B;B=0;if(K&1){K=Rb()|0;L=Q;Yua(h);M=L;N=K;break}B=0;wa(510,m|0,t|0);K=B;B=0;if(K&1){K=Rb()|0;O=Q;P=K;R=1}else{B=0;ua(163,I|0,h|0,j|0,126,m|0);K=B;B=0;if(K&1)S=1;else{B=0;eb(503,I|0,1240,229);B=0;S=0}K=Rb()|0;L=Q;Yua(m);O=L;P=K;R=S}Yua(j);Yua(h);if(R){M=O;N=P}else{T=O;U=P;break b}}else{K=Rb()|0;M=Q;N=K}while(0);zb(I|0);T=M;U=N}else w=23;while(0);if((w|0)==23){G=Rb()|0;T=Q;U=G}k[g>>2]=27468;k[v>>2]=27488;k[t>>2]=27560;Yua(D);Ava(t);vva(v);V=T;W=U;Qb(W|0)}while(0);A=E;C=F;vva(v);Qb(C|0)}}while(0);if((w|0)==33){C=(k[b>>2]|0)+4|0;k[b>>2]=C;F=l[C>>0]|l[C+1>>0]<<8|l[C+2>>0]<<16|l[C+3>>0]<<24;i[x>>0]=F;i[x+1>>0]=F>>8;i[x+2>>0]=F>>16;i[x+3>>0]=F>>24;k[b>>2]=(k[b>>2]|0)+4;y=x;z=0}x=k[y>>2]|0;F=a+8|0;if((x|0)<1){k[F>>2]=0;k[a+4>>2]=0;k[a+12>>2]=0;k[y>>2]=0;r=e;return}C=(k[F>>2]|0)==0;if(z){i[k[b>>2]>>0]=C&1;z=(k[b>>2]|0)+1|0;k[b>>2]=z;if(C)X=z;else{TEa(z|0,k[F>>2]|0,k[y>>2]<<2|0)|0;z=(k[b>>2]|0)+(k[y>>2]<<2)|0;k[b>>2]=z;X=z}z=a+12|0;E=(k[z>>2]|0)==0;i[X>>0]=E&1;X=(k[b>>2]|0)+1|0;k[b>>2]=X;if(E)Y=X;else{TEa(X|0,k[z>>2]|0,k[y>>2]<<2|0)|0;z=(k[b>>2]|0)+(k[y>>2]<<2)|0;k[b>>2]=z;Y=z}z=a+4|0;X=(k[z>>2]|0)==0;i[Y>>0]=X&1;Y=(k[b>>2]|0)+1|0;k[b>>2]=Y;if(X){r=e;return}TEa(Y|0,k[z>>2]|0,k[y>>2]<<2|0)|0;k[b>>2]=(k[b>>2]|0)+(k[y>>2]<<2);r=e;return}if((d|0)==2){d=(k[c>>2]|0)+1|0;k[c>>2]=d;if(C)Z=d;else{C=d+(k[y>>2]<<2)|0;k[c>>2]=C;Z=C}C=(k[a+12>>2]|0)==0;d=Z+1|0;k[c>>2]=d;if(C)_=d;else{C=d+(k[y>>2]<<2)|0;k[c>>2]=C;_=C}C=(k[a+4>>2]|0)==0;d=_+1|0;k[c>>2]=d;if(C){r=e;return}k[c>>2]=d+(k[y>>2]<<2);r=e;return}if(s){s=k[b>>2]|0;y=i[s>>0]|0;d=s+1|0;k[b>>2]=d;if(!(y&1)){y=Rqa(x>>>0>1073741823?-1:x<<2)|0;k[F>>2]=y;F=k[b>>2]|0;s=x<<2;TEa(y|0,F|0,s|0)|0;y=F+s|0;k[b>>2]=y;$=y}else $=d;d=i[$>>0]|0;y=$+1|0;k[b>>2]=y;if(!(d&1)){d=Rqa(x>>>0>1073741823?-1:x<<2)|0;k[a+12>>2]=d;$=k[b>>2]|0;s=x<<2;TEa(d|0,$|0,s|0)|0;d=$+s|0;k[b>>2]=d;aa=d}else aa=y;y=i[aa>>0]|0;k[b>>2]=aa+1;if(y&1){r=e;return}y=Rqa(x>>>0>1073741823?-1:x<<2)|0;k[a+4>>2]=y;a=k[b>>2]|0;aa=x<<2;TEa(y|0,a|0,aa|0)|0;k[b>>2]=a+aa;r=e;return}e=n+56|0;aa=n+4|0;k[n>>2]=27524;k[e>>2]=27544;B=0;wa(508,n+56|0,aa|0);a=B;B=0;if(a&1){a=Rb()|0;ba=Q;ca=a;vva(e);Qb(ca|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[e>>2]=27488;B=0;va(448,aa|0);a=B;B=0;do if(a&1){b=Rb()|0;da=Q;ea=b}else{k[aa>>2]=27560;b=n+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,aa|0,f|0);y=B;B=0;if(y&1){y=Rb()|0;x=Q;Yua(f);Yua(b);Ava(aa);da=x;ea=y;break}Yua(f);B=0;y=Ia(40,n|0,143951,43)|0;x=B;B=0;c:do if(!(x&1)?(B=0,Xa(239,y|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,o|0,142871,63);s=B;B=0;do if(!(s&1)){B=0;eb(502,p|0,149525,8);$=B;B=0;if($&1){$=Rb()|0;F=Q;Yua(o);fa=F;ga=$;break}B=0;wa(510,q|0,aa|0);$=B;B=0;if($&1){$=Rb()|0;ha=1;ia=Q;ja=$}else{B=0;ua(163,d|0,o|0,p|0,136,q|0);$=B;B=0;if($&1)ka=1;else{B=0;eb(503,d|0,1240,229);B=0;ka=0}$=Rb()|0;F=Q;Yua(q);ha=ka;ia=F;ja=$}Yua(p);Yua(o);if(ha){fa=ia;ga=ja}else{la=ia;ma=ja;break c}}else{$=Rb()|0;fa=Q;ga=$}while(0);zb(d|0);la=fa;ma=ga}else w=56;while(0);if((w|0)==56){y=Rb()|0;la=Q;ma=y}k[n>>2]=27468;k[e>>2]=27488;k[aa>>2]=27560;Yua(b);Ava(aa);vva(e);V=la;W=ma;Qb(W|0)}while(0);ba=da;ca=ea;vva(e);Qb(ca|0)}function Dla(a){a=a|0;var b=0,c=0;b=k[a>>2]|0;if((b|0)<=0)return;c=a+4|0;a=0;do{k[(k[c>>2]|0)+(a<<2)>>2]=0;a=a+1|0}while((a|0)<(b|0));return}function Ela(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;if((k[a>>2]|0)<=0){r=c;return}i=a+8|0;j=a+4|0;l=a+12|0;m=0;a:while(1){b:do if((k[(k[i>>2]|0)+(m<<2)>>2]|0)!=-1){n=k[(k[j>>2]|0)+(m<<2)>>2]|0;if(n){o=Hc[k[(k[n>>2]|0)+16>>2]&511](n)|0;if((o|0)==(k[(k[i>>2]|0)+(m<<2)>>2]|0))break;k[(k[j>>2]|0)+(m<<2)>>2]=0}o=k[l>>2]|0;n=o+(m<<2)|0;p=k[n>>2]|0;do if((p|0)!=-9999){q=qh(b,p)|0;s=Hc[k[(k[q>>2]|0)+16>>2]&511](q)|0;if((s|0)==(k[(k[i>>2]|0)+(m<<2)>>2]|0)){k[(k[j>>2]|0)+(m<<2)>>2]=q;break b}else{q=k[l>>2]|0;k[q+(m<<2)>>2]=-9999;t=q;break}}else{k[n>>2]=-9999;t=o}while(0);if((k[(k[j>>2]|0)+(m<<2)>>2]|0)==0?(o=rh(b,t+(m<<2)|0,k[(k[i>>2]|0)+(m<<2)>>2]|0)|0,k[(k[j>>2]|0)+(m<<2)>>2]=o,o=k[(k[j>>2]|0)+(m<<2)>>2]|0,n=Hc[k[(k[o>>2]|0)+16>>2]&511](o)|0,(n|0)!=(k[(k[i>>2]|0)+(m<<2)>>2]|0)):0){u=m;break a}}while(0);m=m+1|0;if((m|0)>=(k[a>>2]|0)){v=43;break}}if((v|0)==43){r=c;return}c=e+56|0;v=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,v|0);a=B;B=0;if(a&1){a=Rb()|0;w=Q;x=a;vva(c);Qb(x|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,v|0);a=B;B=0;do if(a&1){m=Rb()|0;y=Q;z=m}else{k[v>>2]=27560;m=e+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,v|0,d|0);t=B;B=0;if(t&1){t=Rb()|0;b=Q;Yua(d);Yua(m);Ava(v);y=b;z=t;break}Yua(d);B=0;t=Ia(40,e|0,142935,10)|0;b=B;B=0;if((((((!(b&1)?(b=k[(k[j>>2]|0)+(u<<2)>>2]|0,B=0,l=ya(k[(k[b>>2]|0)+16>>2]|0,b|0)|0,b=B,B=0,!(b&1)):0)?(B=0,b=Xa(242,t|0,l|0)|0,l=B,B=0,!(l&1)):0)?(B=0,l=Ia(40,b|0,142946,4)|0,b=B,B=0,!(b&1)):0)?(B=0,b=Xa(242,l|0,k[(k[i>>2]|0)+(u<<2)>>2]|0)|0,l=B,B=0,!(l&1)):0)?(B=0,l=Ia(40,b|0,142951,22)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(239,l|0,0)|0,l=B,B=0,!(l&1)):0){l=Ab(20)|0;B=0;eb(502,f|0,142871,63);b=B;B=0;do if(!(b&1)){B=0;eb(502,g|0,142974,9);t=B;B=0;if(t&1){t=Rb()|0;n=Q;Yua(f);A=n;C=t;break}B=0;wa(510,h|0,v|0);t=B;B=0;if(t&1){t=Rb()|0;D=Q;E=t;F=1}else{B=0;ua(163,l|0,f|0,g|0,193,h|0);t=B;B=0;if(t&1)G=1;else{B=0;eb(503,l|0,1240,229);B=0;G=0}t=Rb()|0;n=Q;Yua(h);D=n;E=t;F=G}Yua(g);Yua(f);if(F){A=D;C=E}else{H=D;I=E;k[e>>2]=27468;k[c>>2]=27488;k[v>>2]=27560;Yua(m);Ava(v);vva(c);Qb(I|0)}}else{t=Rb()|0;A=Q;C=t}while(0);zb(l|0);H=A;I=C;k[e>>2]=27468;k[c>>2]=27488;k[v>>2]=27560;Yua(m);Ava(v);vva(c);Qb(I|0)}b=Rb()|0;H=Q;I=b;k[e>>2]=27468;k[c>>2]=27488;k[v>>2]=27560;Yua(m);Ava(v);vva(c);Qb(I|0)}while(0);w=y;x=z;vva(c);Qb(x|0)}function Fla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;b=r;r=r+368|0;c=b+344|0;d=b+208|0;e=b+196|0;f=b+184|0;g=b+36|0;h=b+48|0;i=b+24|0;j=b+12|0;l=b;if((k[a>>2]|0)==1){m=k[a+4>>2]|0;if(m){r=b;return k[m>>2]|0}m=h+56|0;b=h+4|0;k[h>>2]=27524;k[m>>2]=27544;B=0;wa(508,h+56|0,b|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(m);Qb(p|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[m>>2]=27488;B=0;va(448,b|0);n=B;B=0;do if(n&1){q=Rb()|0;s=Q;t=q}else{k[b>>2]=27560;q=h+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(c);Yua(q);Ava(b);s=v;t=u;break}Yua(c);B=0;u=Ia(40,h|0,143058,59)|0;v=B;B=0;a:do if(!(v&1)?(B=0,Xa(239,u|0,0)|0,w=B,B=0,!(w&1)):0){w=Ab(20)|0;B=0;eb(502,i|0,142871,63);x=B;B=0;do if(!(x&1)){B=0;eb(502,j|0,143049,8);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(i);A=y;C=z;break}B=0;wa(510,l|0,b|0);z=B;B=0;if(z&1){z=Rb()|0;D=1;E=Q;F=z}else{B=0;ua(163,w|0,i|0,j|0,204,l|0);z=B;B=0;if(z&1)G=1;else{B=0;eb(503,w|0,1240,229);B=0;G=0}z=Rb()|0;y=Q;Yua(l);D=G;E=y;F=z}Yua(j);Yua(i);if(D){A=F;C=E}else{H=E;I=F;break a}}else{z=Rb()|0;A=z;C=Q}while(0);zb(w|0);H=C;I=A}else J=44;while(0);if((J|0)==44){u=Rb()|0;H=Q;I=u}k[h>>2]=27468;k[m>>2]=27488;k[b>>2]=27560;Yua(q);Ava(b);vva(m);K=H;L=I;Qb(L|0)}while(0);o=s;p=t;vva(m);Qb(p|0)}p=d+56|0;m=d+4|0;k[d>>2]=27524;k[p>>2]=27544;B=0;wa(508,d+56|0,m|0);t=B;B=0;if(t&1){t=Rb()|0;M=Q;N=t;vva(p);Qb(N|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[p>>2]=27488;B=0;va(448,m|0);t=B;B=0;do if(t&1){s=Rb()|0;O=Q;P=s}else{k[m>>2]=27560;s=d+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,m|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;I=Q;Yua(c);Yua(s);Ava(m);O=I;P=o;break}Yua(c);B=0;o=Ia(40,d|0,142984,55)|0;I=B;B=0;b:do if((((!(I&1)?(B=0,H=Xa(242,o|0,k[a>>2]|0)|0,b=B,B=0,!(b&1)):0)?(B=0,b=Ia(40,H|0,143040,8)|0,H=B,B=0,!(H&1)):0)?(B=0,H=Ia(40,b|0,149177,1)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(239,H|0,0)|0,H=B,B=0,!(H&1)):0){H=Ab(20)|0;B=0;eb(502,e|0,142871,63);b=B;B=0;do if(!(b&1)){B=0;eb(502,f|0,143049,8);h=B;B=0;if(h&1){h=Rb()|0;A=Q;Yua(e);R=h;S=A;break}B=0;wa(510,g|0,m|0);A=B;B=0;if(A&1){A=Rb()|0;T=Q;U=A;V=1}else{B=0;ua(163,H|0,e|0,f|0,201,g|0);A=B;B=0;if(A&1)W=1;else{B=0;eb(503,H|0,1240,229);B=0;W=0}A=Rb()|0;h=Q;Yua(g);T=h;U=A;V=W}Yua(f);Yua(e);if(V){R=U;S=T}else{X=U;Y=T;break b}}else{A=Rb()|0;R=A;S=Q}while(0);zb(H|0);X=R;Y=S}else J=20;while(0);if((J|0)==20){o=Rb()|0;X=o;Y=Q}k[d>>2]=27468;k[p>>2]=27488;k[m>>2]=27560;Yua(s);Ava(m);vva(p);K=Y;L=X;Qb(L|0)}while(0);M=O;N=P;vva(p);Qb(N|0);return 0}function Gla(a){a=a|0;return k[a+4>>2]|0}function Hla(a){a=a|0;return k[a>>2]|0}function Ila(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;d=r;r=r+368|0;e=d+344|0;f=d+208|0;g=d+196|0;h=d+184|0;i=d+36|0;j=d+48|0;l=d+24|0;m=d+12|0;n=d;o=Qqa(16)|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;p=k[a>>2]|0;if(!p){k[o>>2]=0;r=d;return o|0}if((p|0)<(c|0)){p=f+56|0;q=f+4|0;k[f>>2]=27524;k[p>>2]=27544;B=0;wa(508,f+56|0,q|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;u=s;vva(p);Qb(u|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[p>>2]=27488;B=0;va(448,q|0);s=B;B=0;do if(s&1){v=Rb()|0;w=Q;x=v}else{k[q>>2]=27560;v=f+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,q|0,e|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(e);Yua(v);Ava(q);w=z;x=y;break}Yua(e);B=0;y=Ia(40,f|0,143118,23)|0;z=B;B=0;a:do if(((((!(z&1)?(B=0,A=Xa(242,y|0,c|0)|0,C=B,B=0,!(C&1)):0)?(B=0,C=Ia(40,A|0,143142,24)|0,A=B,B=0,!(A&1)):0)?(B=0,A=Xa(242,C|0,k[a>>2]|0)|0,C=B,B=0,!(C&1)):0)?(B=0,C=Ia(40,A|0,143040,8)|0,A=B,B=0,!(A&1)):0)?(B=0,Xa(239,C|0,0)|0,C=B,B=0,!(C&1)):0){C=Ab(20)|0;B=0;eb(502,g|0,142871,63);A=B;B=0;do if(!(A&1)){B=0;eb(502,h|0,143167,5);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(g);F=D;G=E;break}B=0;wa(510,i|0,q|0);E=B;B=0;if(E&1){E=Rb()|0;H=Q;I=E;J=1}else{B=0;ua(163,C|0,g|0,h|0,237,i|0);E=B;B=0;if(E&1)K=1;else{B=0;eb(503,C|0,1240,229);B=0;K=0}E=Rb()|0;D=Q;Yua(i);H=D;I=E;J=K}Yua(h);Yua(g);if(J){F=I;G=H}else{L=I;M=H;break a}}else{E=Rb()|0;F=E;G=Q}while(0);zb(C|0);L=F;M=G}else N=23;while(0);if((N|0)==23){y=Rb()|0;L=y;M=Q}k[f>>2]=27468;k[p>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(p);O=M;P=L;Qb(P|0)}while(0);t=w;u=x;vva(p);Qb(u|0)}else{k[o>>2]=c;if((c|0)>=1){u=c>>>0>1073741823?-1:c<<2;p=Rqa(u)|0;k[o+4>>2]=p;x=Rqa(u)|0;k[o+8>>2]=x;w=Rqa(u)|0;k[o+12>>2]=w;u=a+4|0;t=a+8|0;L=a+12|0;a=0;do{M=b+(a<<2)|0;q=k[M>>2]|0;k[p+(a<<2)>>2]=k[(k[u>>2]|0)+(q<<2)>>2];k[x+(a<<2)>>2]=k[(k[t>>2]|0)+(q<<2)>>2];k[w+(a<<2)>>2]=k[(k[L>>2]|0)+(k[M>>2]<<2)>>2];a=a+1|0}while((a|0)<(c|0));r=d;return o|0}o=j+56|0;d=j+4|0;k[j>>2]=27524;k[o>>2]=27544;B=0;wa(508,j+56|0,d|0);c=B;B=0;if(c&1){c=Rb()|0;R=Q;S=c;vva(o);Qb(S|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[o>>2]=27488;B=0;va(448,d|0);c=B;B=0;do if(c&1){a=Rb()|0;T=Q;U=a}else{k[d>>2]=27560;a=j+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[j+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,d|0,e|0);L=B;B=0;if(L&1){L=Rb()|0;w=Q;Yua(e);Yua(a);Ava(d);T=w;U=L;break}Yua(e);B=0;L=Ia(40,j|0,143173,43)|0;w=B;B=0;b:do if(!(w&1)?(B=0,Xa(239,L|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,l|0,142871,63);x=B;B=0;do if(!(x&1)){B=0;eb(502,m|0,143167,5);u=B;B=0;if(u&1){u=Rb()|0;p=Q;Yua(l);V=u;W=p;break}B=0;wa(510,n|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;X=1;Y=Q;Z=p}else{B=0;ua(163,t|0,l|0,m|0,241,n|0);p=B;B=0;if(p&1)_=1;else{B=0;eb(503,t|0,1240,229);B=0;_=0}p=Rb()|0;u=Q;Yua(n);X=_;Y=u;Z=p}Yua(m);Yua(l);if(X){V=Z;W=Y}else{$=Y;aa=Z;break b}}else{p=Rb()|0;V=p;W=Q}while(0);zb(t|0);$=W;aa=V}else N=47;while(0);if((N|0)==47){L=Rb()|0;$=Q;aa=L}k[j>>2]=27468;k[o>>2]=27488;k[d>>2]=27560;Yua(a);Ava(d);vva(o);O=$;P=aa;Qb(P|0)}while(0);R=T;S=U;vva(o);Qb(S|0)}return 0}function Jla(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;d=r;r=r+16|0;e=d;k[a>>2]=40876;k[a+4>>2]=41040;k[a+8>>2]=b;k[e>>2]=c+1;B=0;c=ya(423,16)|0;b=B;B=0;if(b&1){b=Rb()|0;f=Q;g=b;Qb(g|0)}B=0;eb(509,c|0,e|0,1);e=B;B=0;if(!(e&1)){k[a+12>>2]=c;k[a+16>>2]=0;r=d;return}d=Rb()|0;a=Q;Sqa(c);f=a;g=d;Qb(g|0)}function Kla(a){a=a|0;var b=0;k[a>>2]=40876;k[a+4>>2]=41040;b=k[a+12>>2]|0;if(!b)return;yla(b);Sqa(b);return}function Lla(a){a=a|0;var b=0;k[a>>2]=40876;k[a+4>>2]=41040;b=k[a+12>>2]|0;if(!b){Sqa(a);return}yla(b);Sqa(b);Sqa(a);return}function Mla(a){a=a|0;var b=0,c=0;b=Qqa(20)|0;k[b>>2]=40876;k[b+4>>2]=41040;k[b+8>>2]=k[a+8>>2];c=a+12|0;a=Bla(k[c>>2]|0)|0;k[b+12>>2]=a;a=Fla(k[c>>2]|0)|0;k[b+16>>2]=a;return b|0}function Nla(a,b){a=a|0;b=b|0;var c=0,d=0;c=Qqa(20)|0;k[c>>2]=40876;k[c+4>>2]=41040;k[c+8>>2]=k[a+8>>2];d=Bla(k[a+12>>2]|0)|0;k[c+12>>2]=d;k[c+16>>2]=b;return c|0}function Ola(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=d+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(p);Ava(l);q=u;s=t;break}Yua(c);B=0;Ia(40,d|0,143227,10)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,e|0,l|0),u=B,B=0,!(u&1)):0){B=0;ya(424,e|0)|0;u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);u=f+56|0;v=f+4|0;k[f>>2]=27524;k[u>>2]=27544;B=0;wa(508,f+56|0,v|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(u);Qb(A|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[v>>2]=27560;C=f+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(c);Yua(C);Ava(v);D=G;E=F;break}Yua(c);B=0;F=Ia(40,f|0,143238,8)|0;G=B;B=0;do if(((!(G&1)?(B=0,H=Xa(242,F|0,k[a+8>>2]|0)|0,I=B,B=0,!(I&1)):0)?(B=0,Ia(40,H|0,149177,1)|0,H=B,B=0,!(H&1)):0)?(B=0,wa(510,g|0,v|0),H=B,B=0,!(H&1)):0){B=0;ya(424,g|0)|0;H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(g);J=I;K=H;break}Yua(g);k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);H=h+56|0;I=h+4|0;k[h>>2]=27524;k[H>>2]=27544;B=0;wa(508,h+56|0,I|0);L=B;B=0;if(L&1){L=Rb()|0;M=Q;N=L;vva(H);Qb(N|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[H>>2]=27488;B=0;va(448,I|0);L=B;B=0;do if(L&1){O=Rb()|0;P=Q;R=O}else{k[I>>2]=27560;O=h+36|0;k[O>>2]=0;k[O+4>>2]=0;k[O+8>>2]=0;k[O+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,I|0,c|0);S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(c);Yua(O);Ava(I);P=T;R=S;break}Yua(c);B=0;Ia(40,h|0,143247,12)|0;S=B;B=0;do if(!(S&1)){B=0;wa(510,i|0,I|0);T=B;B=0;if(T&1){U=43;break}B=0;ya(424,i|0)|0;T=B;B=0;if(T&1){T=Rb()|0;V=Q;Yua(i);W=V;X=T;break}else{Yua(i);k[h>>2]=27468;k[H>>2]=27488;k[I>>2]=27560;Yua(O);Ava(I);vva(H);zla(k[a+12>>2]|0);r=b;return}}else U=43;while(0);if((U|0)==43){S=Rb()|0;W=Q;X=S}k[h>>2]=27468;k[H>>2]=27488;k[I>>2]=27560;Yua(O);Ava(I);vva(H);Y=W;Z=X;Qb(Z|0)}while(0);M=P;N=R;vva(H);Qb(N|0)}else U=40;while(0);if((U|0)==40){F=Rb()|0;J=Q;K=F}k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);Y=J;Z=K;Qb(Z|0)}while(0);z=D;A=E;vva(u);Qb(A|0)}else U=37;while(0);if((U|0)==37){t=Rb()|0;w=Q;x=t}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Y=w;Z=x;Qb(Z|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}function Pla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=d+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(p);Ava(l);q=u;s=t;break}Yua(c);B=0;Ia(40,d|0,143227,10)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,e|0,l|0),u=B,B=0,!(u&1)):0){B=0;ya(424,e|0)|0;u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);u=f+56|0;v=f+4|0;k[f>>2]=27524;k[u>>2]=27544;B=0;wa(508,f+56|0,v|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(u);Qb(A|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[v>>2]=27560;C=f+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(c);Yua(C);Ava(v);D=G;E=F;break}Yua(c);B=0;F=Ia(40,f|0,143238,8)|0;G=B;B=0;do if(((!(G&1)?(B=0,H=Xa(242,F|0,k[a+8>>2]|0)|0,I=B,B=0,!(I&1)):0)?(B=0,Ia(40,H|0,149177,1)|0,H=B,B=0,!(H&1)):0)?(B=0,wa(510,g|0,v|0),H=B,B=0,!(H&1)):0){B=0;ya(424,g|0)|0;H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(g);J=I;K=H;break}Yua(g);k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);H=h+56|0;I=h+4|0;k[h>>2]=27524;k[H>>2]=27544;B=0;wa(508,h+56|0,I|0);L=B;B=0;if(L&1){L=Rb()|0;M=Q;N=L;vva(H);Qb(N|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[H>>2]=27488;B=0;va(448,I|0);L=B;B=0;do if(L&1){O=Rb()|0;P=Q;R=O}else{k[I>>2]=27560;O=h+36|0;k[O>>2]=0;k[O+4>>2]=0;k[O+8>>2]=0;k[O+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,I|0,c|0);S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(c);Yua(O);Ava(I);P=T;R=S;break}Yua(c);B=0;Ia(40,h|0,143247,12)|0;S=B;B=0;do if(!(S&1)){B=0;wa(510,i|0,I|0);T=B;B=0;if(T&1){U=43;break}B=0;ya(424,i|0)|0;T=B;B=0;if(T&1){T=Rb()|0;V=Q;Yua(i);W=V;X=T;break}else{Yua(i);k[h>>2]=27468;k[H>>2]=27488;k[I>>2]=27560;Yua(O);Ava(I);vva(H);zla(k[a+12>>2]|0);r=b;return}}else U=43;while(0);if((U|0)==43){S=Rb()|0;W=Q;X=S}k[h>>2]=27468;k[H>>2]=27488;k[I>>2]=27560;Yua(O);Ava(I);vva(H);Y=W;Z=X;Qb(Z|0)}while(0);M=P;N=R;vva(H);Qb(N|0)}else U=40;while(0);if((U|0)==40){F=Rb()|0;J=Q;K=F}k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);Y=J;Z=K;Qb(Z|0)}while(0);z=D;A=E;vva(u);Qb(A|0)}else U=37;while(0);if((U|0)==37){t=Rb()|0;w=Q;x=t}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Y=w;Z=x;Qb(Z|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}function Qla(a){a=a|0;return k[a+8>>2]|0}function Rla(a){a=a|0;return 585}function Sla(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 1:{n=Qqa(16)|0;B=0;va(489,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Sqa(n);q=o;s=p;Qb(q|0)}else{k[a+12>>2]=n;n=(k[b>>2]|0)+4|0;k[b>>2]=n;p=a+8|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[p>>0]=o;i[p+1>>0]=o>>8;i[p+2>>0]=o>>16;i[p+3>>0]=o>>24;k[b>>2]=(k[b>>2]|0)+4;t=a+12|0;u=k[t>>2]|0;Cla(u,b,c,d);v=k[t>>2]|0;w=Fla(v)|0;x=a+16|0;k[x>>2]=w;r=e;return}break}case 0:{o=k[b>>2]|0;i[o>>0]=73;i[o+1>>0]=2;i[o+2>>0]=0;i[o+3>>0]=0;o=(k[b>>2]|0)+4|0;k[b>>2]=o;p=a+8|0;n=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;k[b>>2]=(k[b>>2]|0)+4;t=a+12|0;u=k[t>>2]|0;Cla(u,b,c,d);v=k[t>>2]|0;w=Fla(v)|0;x=a+16|0;k[x>>2]=w;r=e;return}case 2:{k[c>>2]=(k[c>>2]|0)+8;t=a+12|0;u=k[t>>2]|0;Cla(u,b,c,d);v=k[t>>2]|0;w=Fla(v)|0;x=a+16|0;k[x>>2]=w;r=e;return}default:{e=g+56|0;w=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,w|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;z=x;vva(e);Qb(z|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,w|0);x=B;B=0;do if(x&1){a=Rb()|0;A=Q;C=a}else{k[w>>2]=27560;a=g+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,w|0,f|0);v=B;B=0;if(v&1){v=Rb()|0;t=Q;Yua(f);Yua(a);Ava(w);A=t;C=v;break}Yua(f);B=0;v=Ia(40,g|0,143951,43)|0;t=B;B=0;a:do if(!(t&1)?(B=0,Xa(239,v|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,h|0,143260,77);c=B;B=0;do if(!(c&1)){B=0;eb(502,j|0,149525,8);b=B;B=0;if(b&1){b=Rb()|0;u=Q;Yua(h);D=u;E=b;break}B=0;wa(510,m|0,w|0);b=B;B=0;if(b&1){b=Rb()|0;F=b;G=Q;H=1}else{B=0;ua(163,d|0,h|0,j|0,118,m|0);b=B;B=0;if(b&1)I=1;else{B=0;eb(503,d|0,1240,229);B=0;I=0}b=Rb()|0;u=Q;Yua(m);F=b;G=u;H=I}Yua(j);Yua(h);if(H){D=G;E=F}else{J=G;K=F;break a}}else{u=Rb()|0;D=Q;E=u}while(0);zb(d|0);J=D;K=E}else L=19;while(0);if((L|0)==19){v=Rb()|0;J=Q;K=v}k[g>>2]=27468;k[e>>2]=27488;k[w>>2]=27560;Yua(a);Ava(w);vva(e);q=K;s=J;Qb(q|0)}while(0);y=A;z=C;vva(e);Qb(z|0)}}}function Tla(a,b){a=a|0;b=b|0;var c=0;c=a+12|0;Ela(k[c>>2]|0,b);b=Fla(k[c>>2]|0)|0;k[a+16>>2]=b;return}function Ula(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,143260,77);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143338,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,140,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function Vla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,143260,77);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143343,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,144,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function Wla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,143260,77);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143351,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,148,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function Xla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,143260,77);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143356,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,153,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function Yla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,143260,77);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143364,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,157,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function Zla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,143260,77);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143369,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,161,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function _la(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,143260,77);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143374,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,166,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function $la(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,143260,77);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143382,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,171,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function ama(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;a=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,143260,77);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,143391,12);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,175,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(E|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function bma(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;a=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,143260,77);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,143404,14);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,224,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(E|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function cma(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;a=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,143260,77);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,143419,14);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,228,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(E|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function dma(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;a=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,143260,77);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,143434,15);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,232,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(E|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function ema(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,143260,77);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143450,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,236,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function fma(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,143260,77);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143473,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,240,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function gma(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,143260,77);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143497,31);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,244,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function hma(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,143260,77);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143529,33);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,248,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function ima(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function jma(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function kma(a,b,c){a=a|0;b=+b;c=c|0;return}function lma(a,b,c){a=a|0;b=+b;c=c|0;return}function mma(a,b,c){a=a|0;b=b|0;c=c|0;return}function nma(a,b,c){a=a|0;b=b|0;c=c|0;return}function oma(a,b,c){a=a|0;b=b|0;c=c|0;return}function pma(a,b,c){a=a|0;b=b|0;c=c|0;return}function qma(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0.0;i=r;r=r+128|0;j=i+112|0;l=i+104|0;m=i+96|0;n=i+72|0;o=i+48|0;q=i+24|0;s=i+16|0;t=i+8|0;u=i;nd[k[(k[f>>2]|0)+48>>2]&1023](f,j,e);rd[k[(k[f>>2]|0)+60>>2]&511](f,n,d,e);nd[k[(k[g>>2]|0)+48>>2]&1023](g,l,e);rd[k[(k[g>>2]|0)+60>>2]&511](g,o,d,e);if((c|0)==3){nd[k[(k[h>>2]|0)+48>>2]&1023](h,m,e);rd[k[(k[h>>2]|0)+60>>2]&511](h,q,d,e);v=q}else{p[m>>3]=0.0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[q+16>>2]=0;k[q+20>>2]=0;v=q}q=a+16|0;a=oC(k[(k[q>>2]|0)+16>>2]|0,220)|0;d=oC(k[(k[q>>2]|0)+16>>2]|0,222)|0;h=oC(k[(k[q>>2]|0)+16>>2]|0,218)|0;nd[k[(k[a>>2]|0)+48>>2]&1023](a,t,e);nd[k[(k[d>>2]|0)+48>>2]&1023](d,u,e);nd[k[(k[h>>2]|0)+48>>2]&1023](h,s,e);w=+rma(0,+p[s>>3],+p[t>>3],+p[u>>3],+p[j>>3],+p[l>>3],+p[m>>3],n,o,v);p[b>>3]=w;r=i;return}function rma(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0.0,o=0.0,q=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0;a=r;r=r+48|0;k=a+32|0;l=a+24|0;m=a;n=+aa(+(e*e+f*f+g*g));if(n<1.0e-12){o=0.0;q=0.0;s=0.0}else{t=1.0/(+aa(+n)*2.0);u=e*2.0;v=f*2.0;w=g*2.0;o=t*(u*+p[h+16>>3]+v*+p[i+16>>3]+w*+p[j+16>>3]);q=t*(u*+p[h+8>>3]+v*+p[i+8>>3]+w*+p[j+8>>3]);s=t*(u*+p[h>>3]+v*+p[i>>3]+w*+p[j>>3])}p[m>>3]=s;p[m+8>>3]=q;p[m+16>>3]=o;_Y(k,l,e,f,g,n,h,i,j,m);n=+aZ(+p[k>>3],+p[l>>3]);g=+p[k>>3];f=1.0/(+ba(+(g*(g*((n*((d-c)*n)+c)*b))),.3333333333333333)*2.0);r=a;return +f}function sma(a,b,c){a=a|0;b=b|0;c=c|0;nd[k[(k[a>>2]|0)+84>>2]&1023](a,b,c);return}function tma(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0.0;h=r;r=r+112|0;i=h+104|0;j=h+96|0;l=h+72|0;m=h+48|0;n=h+24|0;o=h+16|0;q=h+8|0;s=h;nd[k[(k[f>>2]|0)+48>>2]&1023](f,i,e);rd[k[(k[f>>2]|0)+60>>2]&511](f,l,d,e);if((c|0)==3){nd[k[(k[g>>2]|0)+48>>2]&1023](g,j,e);rd[k[(k[g>>2]|0)+60>>2]&511](g,m,d,e);t=m;u=+p[m+8>>3]}else{p[l+16>>3]=0.0;p[j>>3]=0.0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[m+16>>2]=0;k[m+20>>2]=0;t=m;u=0.0};k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;p[n+16>>3]=-+p[l>>3]-u;m=a+16|0;a=oC(k[(k[m>>2]|0)+16>>2]|0,220)|0;d=oC(k[(k[m>>2]|0)+16>>2]|0,222)|0;g=oC(k[(k[m>>2]|0)+16>>2]|0,218)|0;nd[k[(k[a>>2]|0)+48>>2]&1023](a,q,e);nd[k[(k[d>>2]|0)+48>>2]&1023](d,s,e);nd[k[(k[g>>2]|0)+48>>2]&1023](g,o,e);u=+rma(0,+p[o>>3],+p[q>>3],+p[s>>3],+p[i>>3],+p[j>>3],0.0,l,t,n);p[b>>3]=u;r=h;return}function uma(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,143260,77);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143563,30);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,352,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function vma(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;g=r;r=r+192|0;f=g+176|0;e=g+40|0;d=g+24|0;c=g+12|0;b=g;g=e+56|0;a=e+4|0;k[e>>2]=27524;k[g>>2]=27544;B=0;wa(508,e+56|0,a|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(g);Qb(j|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[g>>2]=27488;B=0;va(448,a|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[a>>2]=27560;l=e+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[e+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,a|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(f);Yua(l);Ava(a);m=p;n=o;break}Yua(f);B=0;o=Ia(40,e|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,143260,77);s=B;B=0;do if(!(s&1)){B=0;eb(502,c|0,143594,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,b|0,a|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,c|0,355,b|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(b);x=u;y=t;z=A}Yua(c);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[e>>2]=27468;k[g>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(g);Qb(D|0)}while(0);i=m;j=n;vva(g);Qb(j|0)}function wma(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0.0;h=r;r=r+112|0;i=h+104|0;j=h+96|0;l=h+72|0;m=h+48|0;n=h+24|0;o=h+16|0;q=h+8|0;s=h;nd[k[(k[f>>2]|0)+48>>2]&1023](f,i,e);rd[k[(k[f>>2]|0)+60>>2]&511](f,l,d,e);if((c|0)==2){nd[k[(k[g>>2]|0)+48>>2]&1023](g,j,e);rd[k[(k[g>>2]|0)+60>>2]&511](g,m,d,e);t=m;u=+p[m+8>>3]}else{d=l+8|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;p[j>>3]=0.0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[m+16>>2]=0;k[m+20>>2]=0;t=m;u=0.0};k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;p[n+16>>3]=-+p[l>>3]-u;m=a+16|0;a=oC(k[(k[m>>2]|0)+16>>2]|0,221)|0;d=oC(k[(k[m>>2]|0)+16>>2]|0,223)|0;g=oC(k[(k[m>>2]|0)+16>>2]|0,219)|0;nd[k[(k[a>>2]|0)+48>>2]&1023](a,q,e);nd[k[(k[d>>2]|0)+48>>2]&1023](d,s,e);nd[k[(k[g>>2]|0)+48>>2]&1023](g,o,e);u=+rma(0,+p[o>>3],+p[q>>3],+p[s>>3],+p[i>>3],+p[j>>3],0.0,l,t,n);p[b>>3]=u;r=h;return}function xma(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,143260,77);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143608,31);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,394,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function yma(a){a=a|0;k[a+16>>2]=0;Dla(k[a+12>>2]|0);return}function zma(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,143656,77);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144327,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,52,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Ama(a,b,c){a=a|0;b=b|0;c=c|0;zma(a+-4|0,b,c)}function Bma(a,b){a=a|0;b=b|0;var c=0,d=0;if((th(a)|0)>0)c=0;else return;do{d=qh(a,c)|0;if(ed[k[(k[d>>2]|0)+40>>2]&511](d,b)|0)Ec[k[(k[d>>2]|0)+32>>2]&1023](d);c=c+1|0}while((c|0)<(th(a)|0));return}function Cma(a){a=a|0;var b=0,c=0,d=0,e=0;b=r;r=r+16|0;c=b+4|0;d=b;e=th(a)|0;k[c>>2]=e;nZ(c,d,1,4,4,0,uY()|0)|0;uY()|0;r=b;return k[d>>2]|0}function Dma(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0;f=r;r=r+16|0;g=f+8|0;h=f+4|0;i=f;k[a>>2]=41068;k[a+4>>2]=41188;k[a+8>>2]=b;k[a+12>>2]=e;k[g>>2]=c+1+(k[d+100>>2]|0);k[i>>2]=k[(k[d+92>>2]|0)+(c<<2)>>2];k[h>>2]=(k[d+56>>2]|0)+1;B=0;d=ya(423,16)|0;c=B;B=0;if(!(c&1)){B=0;eb(509,d|0,g|0,1);g=B;B=0;if(g&1){g=Rb()|0;c=Q;Sqa(d);j=c;l=g;Qb(l|0)}k[a+16>>2]=d;B=0;d=ya(423,16)|0;g=B;B=0;if(!(g&1)){B=0;eb(509,d|0,i|0,1);i=B;B=0;if(i&1){i=Rb()|0;g=Q;Sqa(d);j=g;l=i;Qb(l|0)}k[a+20>>2]=d;B=0;d=ya(423,16)|0;i=B;B=0;if(!(i&1)){B=0;eb(509,d|0,h|0,1);h=B;B=0;if(!(h&1)){k[a+24>>2]=d;h=a+28|0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;r=f;return}f=Rb()|0;h=Q;Sqa(d);j=h;l=f;Qb(l|0)}}}f=Rb()|0;j=Q;l=f;Qb(l|0)}function Ema(a){a=a|0;var b=0;k[a>>2]=41068;k[a+4>>2]=41188;b=k[a+16>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+20>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+24>>2]|0;if(!b)return;yla(b);Sqa(b);return}function Fma(a){a=a|0;var b=0;k[a>>2]=41068;k[a+4>>2]=41188;b=k[a+16>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+20>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+24>>2]|0;if(!b){Sqa(a);return}yla(b);Sqa(b);Sqa(a);return}function Gma(a){a=a|0;var b=0,c=0,d=0,e=0;b=Qqa(44)|0;k[b>>2]=41068;k[b+4>>2]=41188;c=b+16|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2];k[b+40>>2]=k[a+40>>2];d=Bla(k[a+16>>2]|0)|0;k[c>>2]=d;c=Bla(k[a+24>>2]|0)|0;k[b+24>>2]=c;e=Bla(k[a+20>>2]|0)|0;k[b+20>>2]=e;a=Fla(d)|0;k[b+28>>2]=a;a=Fla(c)|0;k[b+36>>2]=a;a=Fla(e)|0;k[b+32>>2]=a;return b|0}function Hma(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;a:do switch(d|0){case 0:{n=k[b>>2]|0;i[n>>0]=80;i[n+1>>0]=2;i[n+2>>0]=0;i[n+3>>0]=0;n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+8|0;p=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[n>>0]=p;i[n+1>>0]=p>>8;i[n+2>>0]=p>>16;i[n+3>>0]=p>>24;p=(k[b>>2]|0)+4|0;k[b>>2]=p;n=a+12|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[p>>0]=o;i[p+1>>0]=o>>8;i[p+2>>0]=o>>16;i[p+3>>0]=o>>24;k[b>>2]=(k[b>>2]|0)+4;break}case 2:{k[c>>2]=(k[c>>2]|0)+12;break}case 1:{o=(k[b>>2]|0)+4|0;k[b>>2]=o;p=a+8|0;n=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[p>>0]=n;i[p+1>>0]=n>>8;i[p+2>>0]=n>>16;i[p+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;p=a+12|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[p>>0]=o;i[p+1>>0]=o>>8;i[p+2>>0]=o>>16;i[p+3>>0]=o>>24;k[b>>2]=(k[b>>2]|0)+4;o=Qqa(16)|0;B=0;va(489,o|0);p=B;B=0;if(p&1){p=Rb()|0;n=Q;Sqa(o);q=n;s=p;Qb(s|0)}k[a+16>>2]=o;o=Qqa(16)|0;B=0;va(489,o|0);p=B;B=0;if(p&1){p=Rb()|0;n=Q;Sqa(o);q=n;s=p;Qb(s|0)}k[a+20>>2]=o;o=Qqa(16)|0;B=0;va(489,o|0);p=B;B=0;if(!(p&1)){k[a+24>>2]=o;break a}p=Rb()|0;n=Q;Sqa(o);q=n;s=p;Qb(s|0);break}default:{p=g+56|0;n=g+4|0;k[g>>2]=27524;k[p>>2]=27544;B=0;wa(508,g+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;t=Q;u=o;vva(p);Qb(u|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[p>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){v=Rb()|0;w=Q;x=v}else{k[n>>2]=27560;v=g+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,n|0,f|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(f);Yua(v);Ava(n);w=z;x=y;break}Yua(f);B=0;y=Ia(40,g|0,143951,43)|0;z=B;B=0;b:do if(!(z&1)?(B=0,Xa(239,y|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,h|0,143742,71);C=B;B=0;do if(!(C&1)){B=0;eb(502,j|0,149525,8);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(h);F=E;G=D;break}B=0;wa(510,m|0,n|0);D=B;B=0;if(D&1){D=Rb()|0;H=D;I=Q;J=1}else{B=0;ua(163,A|0,h|0,j|0,104,m|0);D=B;B=0;if(D&1)K=1;else{B=0;eb(503,A|0,1240,229);B=0;K=0}D=Rb()|0;E=Q;Yua(m);H=D;I=E;J=K}Yua(j);Yua(h);if(J){F=I;G=H}else{L=I;M=H;break b}}else{E=Rb()|0;F=Q;G=E}while(0);zb(A|0);L=F;M=G}else N=17;while(0);if((N|0)==17){y=Rb()|0;L=Q;M=y}k[g>>2]=27468;k[p>>2]=27488;k[n>>2]=27560;Yua(v);Ava(n);vva(p);q=L;s=M;Qb(s|0)}while(0);t=w;u=x;vva(p);Qb(u|0)}}while(0);u=a+16|0;Cla(k[u>>2]|0,b,c,d);x=a+20|0;Cla(k[x>>2]|0,b,c,d);w=a+24|0;Cla(k[w>>2]|0,b,c,d);d=Fla(k[u>>2]|0)|0;k[a+28>>2]=d;d=Fla(k[w>>2]|0)|0;k[a+36>>2]=d;d=Fla(k[x>>2]|0)|0;k[a+32>>2]=d;r=e;return}function Ima(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;b=r;r=r+624|0;c=b+604|0;d=b+456|0;e=b+592|0;f=b+304|0;g=b+440|0;h=b+152|0;i=b+288|0;j=b+16|0;l=b;b=d+56|0;m=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(b);Qb(p|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,m|0);n=B;B=0;do if(n&1){q=Rb()|0;s=Q;t=q}else{k[m>>2]=27560;q=d+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,m|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(c);Yua(q);Ava(m);s=v;t=u;break}Yua(c);B=0;Ia(40,d|0,143814,8)|0;u=B;B=0;do if(!(u&1)?(B=0,wa(510,e|0,m|0),v=B,B=0,!(v&1)):0){B=0;ya(424,e|0)|0;v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(e);x=w;y=v;break}Yua(e);k[d>>2]=27468;k[b>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(b);v=f+56|0;w=f+4|0;k[f>>2]=27524;k[v>>2]=27544;B=0;wa(508,f+56|0,w|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;C=z;vva(v);Qb(C|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[v>>2]=27488;B=0;va(448,w|0);z=B;B=0;do if(z&1){D=Rb()|0;E=Q;F=D}else{k[w>>2]=27560;D=f+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,w|0,c|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(c);Yua(D);Ava(w);E=H;F=G;break}Yua(c);B=0;G=Ia(40,f|0,144086,7)|0;H=B;B=0;do if(((!(H&1)?(B=0,I=Xa(242,G|0,k[a+8>>2]|0)|0,J=B,B=0,!(J&1)):0)?(B=0,Ia(40,I|0,149177,1)|0,I=B,B=0,!(I&1)):0)?(B=0,wa(510,g|0,w|0),I=B,B=0,!(I&1)):0){B=0;ya(424,g|0)|0;I=B;B=0;if(I&1){I=Rb()|0;J=Q;Yua(g);K=J;L=I;break}Yua(g);k[f>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(D);Ava(w);vva(v);I=h+56|0;J=h+4|0;k[h>>2]=27524;k[I>>2]=27544;B=0;wa(508,h+56|0,J|0);M=B;B=0;if(M&1){M=Rb()|0;N=Q;O=M;vva(I);Qb(O|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[I>>2]=27488;B=0;va(448,J|0);M=B;B=0;do if(M&1){P=Rb()|0;R=Q;S=P}else{k[J>>2]=27560;P=h+36|0;k[P>>2]=0;k[P+4>>2]=0;k[P+8>>2]=0;k[P+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,J|0,c|0);T=B;B=0;if(T&1){T=Rb()|0;U=Q;Yua(c);Yua(P);Ava(J);R=U;S=T;break}Yua(c);B=0;T=Ia(40,h|0,144094,18)|0;U=B;B=0;do if(U&1)V=57;else{B=0;W=ya(427,k[a+12>>2]|0)|0;X=B;B=0;if(X&1){V=57;break}X=Lta(W)|0;B=0;Y=Ia(40,T|0,W|0,X|0)|0;X=B;B=0;if(X&1){V=57;break}B=0;Ia(40,Y|0,149177,1)|0;Y=B;B=0;if(Y&1){V=57;break}B=0;wa(510,i|0,J|0);Y=B;B=0;if(Y&1){V=57;break}B=0;ya(424,i|0)|0;Y=B;B=0;if(Y&1){Y=Rb()|0;X=Q;Yua(i);Z=X;_=Y;break}Yua(i);k[h>>2]=27468;k[I>>2]=27488;k[J>>2]=27560;Yua(P);Ava(J);vva(I);Ala(k[a+16>>2]|0);Ala(k[a+20>>2]|0);Ala(k[a+24>>2]|0);Y=j+56|0;X=j+4|0;k[j>>2]=27524;k[Y>>2]=27544;B=0;wa(508,j+56|0,X|0);W=B;B=0;if(W&1){W=Rb()|0;$=Q;aa=W;vva(Y);Qb(aa|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[Y>>2]=27488;B=0;va(448,X|0);W=B;B=0;do if(W&1){ba=Rb()|0;ca=Q;da=ba}else{k[X>>2]=27560;ba=j+36|0;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,X|0,c|0);ea=B;B=0;if(ea&1){ea=Rb()|0;fa=Q;Yua(c);Yua(ba);Ava(X);ca=fa;da=ea;break}Yua(c);B=0;Ia(40,j|0,144113,14)|0;ea=B;B=0;do if(!(ea&1)){B=0;wa(510,l|0,X|0);fa=B;B=0;if(fa&1){V=60;break}B=0;ya(424,l|0)|0;fa=B;B=0;if(fa&1){fa=Rb()|0;ga=Q;Yua(l);ha=ga;ia=fa;break}else{Yua(l);k[j>>2]=27468;k[Y>>2]=27488;k[X>>2]=27560;Yua(ba);Ava(X);vva(Y);$N(k[a+40>>2]|0)}}else V=60;while(0);if((V|0)==60){ea=Rb()|0;ha=Q;ia=ea}k[j>>2]=27468;k[Y>>2]=27488;k[X>>2]=27560;Yua(ba);Ava(X);vva(Y);ja=ha;ka=ia;Qb(ka|0)}while(0);$=ca;aa=da;vva(Y);Qb(aa|0)}while(0);if((V|0)==57){T=Rb()|0;Z=Q;_=T}k[h>>2]=27468;k[I>>2]=27488;k[J>>2]=27560;Yua(P);Ava(J);vva(I);ja=Z;ka=_;Qb(ka|0)}while(0);N=R;O=S;vva(I);Qb(O|0)}else V=54;while(0);if((V|0)==54){G=Rb()|0;K=Q;L=G}k[f>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(D);Ava(w);vva(v);ja=K;ka=L;Qb(ka|0)}while(0);A=E;C=F;vva(v);Qb(C|0)}else V=51;while(0);if((V|0)==51){u=Rb()|0;x=Q;y=u}k[d>>2]=27468;k[b>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(b);ja=x;ka=y;Qb(ka|0)}while(0);o=s;p=t;vva(b);Qb(p|0)}function Jma(a){a=a|0;Ec[k[(k[a>>2]|0)+12>>2]&1023](a);return}function Kma(a){a=a|0;return k[a+8>>2]|0}function Lma(a){a=a|0;return 592}function Mma(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;e=a+16|0;Ela(k[e>>2]|0,d);d=a+20|0;Ela(k[d>>2]|0,b);b=a+24|0;Ela(k[b>>2]|0,f);f=Fla(k[e>>2]|0)|0;k[a+28>>2]=f;f=Fla(k[d>>2]|0)|0;k[a+32>>2]=f;f=Fla(k[b>>2]|0)|0;k[a+36>>2]=f;k[a+40>>2]=g;return}function Nma(a,b,c){a=a|0;b=b|0;c=c|0;return}function Oma(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;d=c;e=c+188|0;f=c+40|0;g=c+176|0;h=c+24|0;i=c+12|0;j=a+40|0;cO(k[j>>2]|0,e,477);if((k[e>>2]|0)==507){e=a+28|0;if(fo(k[e>>2]|0)|0){r=c;return}l=Qqa(24)|0;B=0;ua(166,l|0,e|0,1,k[j>>2]|0,534);j=B;B=0;if(j&1){j=Rb()|0;Sqa(l);Qb(j|0)}j=k[a+32>>2]|0;rd[k[(k[j>>2]|0)+144>>2]&511](j,d,k[e>>2]|0,171);p[k[l+4>>2]>>3]=+p[d>>3];TN(l,b);SN(l);Sqa(l);r=c;return}c=f+56|0;l=f+4|0;k[f>>2]=27524;k[c>>2]=27544;B=0;wa(508,f+56|0,l|0);b=B;B=0;if(b&1){b=Rb()|0;m=Q;n=b;vva(c);Qb(n|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[c>>2]=27488;B=0;va(448,l|0);b=B;B=0;do if(b&1){e=Rb()|0;o=Q;q=e}else{k[l>>2]=27560;e=f+36|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,l|0,d|0);j=B;B=0;if(j&1){j=Rb()|0;a=Q;Yua(d);Yua(e);Ava(l);o=a;q=j;break}Yua(d);B=0;j=Ia(40,f|0,143823,32)|0;a=B;B=0;if(!(a&1)?(B=0,Xa(239,j|0,0)|0,j=B,B=0,!(j&1)):0){j=Ab(20)|0;B=0;eb(502,g|0,143742,71);a=B;B=0;do if(!(a&1)){B=0;eb(502,h|0,144203,13);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(g);u=t;v=s;break}B=0;wa(510,i|0,l|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,j|0,g|0,h|0,185,i|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,j|0,1240,229);B=0;z=0}s=Rb()|0;t=Q;Yua(i);w=t;x=s;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[c>>2]=27488;k[l>>2]=27560;Yua(e);Ava(l);vva(c);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(j|0);A=u;C=v;k[f>>2]=27468;k[c>>2]=27488;k[l>>2]=27560;Yua(e);Ava(l);vva(c);Qb(C|0)}a=Rb()|0;A=Q;C=a;k[f>>2]=27468;k[c>>2]=27488;k[l>>2]=27560;Yua(e);Ava(l);vva(c);Qb(C|0)}while(0);m=o;n=q;vva(c);Qb(n|0)}function Pma(a,b){a=a|0;b=b|0;var c=0;c=Rn(k[a+28>>2]|0)|0;k[b>>2]=c;return}function Qma(a,b){a=a|0;b=b|0;var c=0;c=Qn(k[a+28>>2]|0)|0;k[b>>2]=c;return}function Rma(a){a=a|0;return 1}function Sma(a,b){a=a|0;b=b|0;return (k[a+12>>2]|0)==(b|0)|0}function Tma(a){a=a|0;return 1}function Uma(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return}function Vma(a,b,c){a=a|0;b=b|0;c=+c;return}function Wma(a){a=a|0;var b=0;b=a+28|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;Dla(k[a+16>>2]|0);Dla(k[a+20>>2]|0);Dla(k[a+24>>2]|0);return}function Xma(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return}function Yma(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;g=r;r=r+192|0;j=g+176|0;l=g+40|0;m=g+24|0;n=g+12|0;o=g;p=a+28|0;a=e+(Rn(k[p>>2]|0)|0)|0;if(i[a>>0]|0){q=0;s=0;t=q&1;k[b>>2]=t;k[c>>2]=s;r=g;return}a=e+(Rn(k[p>>2]|0)|0)|0;i[a>>0]=1;a=0;while(1){e=f+(a<<2)|0;if((k[e>>2]|0)>-1)a=a+1|0;else{u=e;break}}a=Rn(k[p>>2]|0)|0;k[u>>2]=a;switch(h|0){case 937:{if(!(k[d+28>>2]|0)){q=0;s=0;t=q&1;k[b>>2]=t;k[c>>2]=s;r=g;return}h=(fo(k[p>>2]|0)|0)==0;q=h;s=h&1^1;t=q&1;k[b>>2]=t;k[c>>2]=s;r=g;return}case 943:{if(!(k[d+24>>2]|0)){q=0;s=0;t=q&1;k[b>>2]=t;k[c>>2]=s;r=g;return}h=(fo(k[p>>2]|0)|0)==0;q=h;s=h&1^1;t=q&1;k[b>>2]=t;k[c>>2]=s;r=g;return}case 966:{if(!(k[d+32>>2]|0)){q=0;s=0;t=q&1;k[b>>2]=t;k[c>>2]=s;r=g;return}d=(fo(k[p>>2]|0)|0)==0;q=d;s=d&1^1;t=q&1;k[b>>2]=t;k[c>>2]=s;r=g;return}default:{g=l+56|0;s=l+4|0;k[l>>2]=27524;k[g>>2]=27544;B=0;wa(508,l+56|0,s|0);c=B;B=0;if(c&1){c=Rb()|0;v=Q;w=c;vva(g);Qb(w|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[g>>2]=27488;B=0;va(448,s|0);c=B;B=0;do if(c&1){t=Rb()|0;x=Q;y=t}else{k[s>>2]=27560;t=l+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[l+52>>2]=16;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;B=0;wa(509,s|0,j|0);b=B;B=0;if(b&1){b=Rb()|0;q=Q;Yua(j);Yua(t);Ava(s);x=q;y=b;break}Yua(j);B=0;b=Ia(40,l|0,145010,13)|0;q=B;B=0;if(!(q&1)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,m|0,143742,71);q=B;B=0;do if(!(q&1)){B=0;eb(502,n|0,144217,23);d=B;B=0;if(d&1){d=Rb()|0;p=Q;Yua(m);z=p;A=d;break}B=0;wa(510,o|0,s|0);d=B;B=0;if(d&1){d=Rb()|0;C=Q;D=d;E=1}else{B=0;ua(163,b|0,m|0,n|0,296,o|0);d=B;B=0;if(d&1)F=1;else{B=0;eb(503,b|0,1240,229);B=0;F=0}d=Rb()|0;p=Q;Yua(o);C=p;D=d;E=F}Yua(n);Yua(m);if(E){z=C;A=D}else{G=C;H=D;k[l>>2]=27468;k[g>>2]=27488;k[s>>2]=27560;Yua(t);Ava(s);vva(g);Qb(H|0)}}else{d=Rb()|0;z=Q;A=d}while(0);zb(b|0);G=z;H=A;k[l>>2]=27468;k[g>>2]=27488;k[s>>2]=27560;Yua(t);Ava(s);vva(g);Qb(H|0)}q=Rb()|0;G=Q;H=q;k[l>>2]=27468;k[g>>2]=27488;k[s>>2]=27560;Yua(t);Ava(s);vva(g);Qb(H|0)}while(0);v=x;w=y;vva(g);Qb(w|0)}}}function Zma(a,b,c){a=a|0;b=+b;c=c|0;return}function _ma(a,b,c){a=a|0;b=+b;c=c|0;return}function $ma(a,b,c){a=a|0;b=b|0;c=c|0;return}function ana(a,b,c){a=a|0;b=b|0;c=c|0;return}function bna(a,b,c){a=a|0;b=b|0;c=c|0;return}function cna(a,b,c){a=a|0;b=b|0;c=c|0;return}function dna(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function ena(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function fna(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,143856,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,70,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function gna(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;a=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,144350,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,143856,80);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,144370,27);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,75,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(E|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function hna(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,143856,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144327,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,62,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function ina(a,b,c){a=a|0;b=b|0;c=c|0;hna(a+-4|0,b,c)}function jna(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;g=r;r=r+32|0;h=g+16|0;i=g+8|0;j=g;k[a>>2]=41216;k[a+4>>2]=41336;l=c*3|0;c=k[e+(l<<2)>>2]|0;k[i>>2]=c;m=k[e+(l+1<<2)>>2]|0;k[i+4>>2]=m;n=k[d+100>>2]|0;k[j>>2]=c+n;k[j+4>>2]=m+n;k[h>>2]=k[e+(l+2<<2)>>2];k[a+8>>2]=b;k[a+12>>2]=f;B=0;f=ya(423,16)|0;b=B;B=0;if(!(b&1)){B=0;eb(509,f|0,j|0,2);j=B;B=0;if(j&1){j=Rb()|0;b=Q;Sqa(f);o=b;p=j;Qb(p|0)}k[a+20>>2]=f;B=0;f=ya(423,16)|0;j=B;B=0;if(!(j&1)){B=0;eb(509,f|0,i|0,2);i=B;B=0;if(i&1){i=Rb()|0;j=Q;Sqa(f);o=j;p=i;Qb(p|0)}k[a+24>>2]=f;B=0;f=ya(423,16)|0;i=B;B=0;if(!(i&1)){B=0;eb(509,f|0,h|0,1);h=B;B=0;if(!(h&1)){k[a+16>>2]=f;k[a+40>>2]=0;k[a+28>>2]=0;k[a+36>>2]=0;r=g;return}g=Rb()|0;a=Q;Sqa(f);o=a;p=g;Qb(p|0)}}}g=Rb()|0;o=Q;p=g;Qb(p|0)}function kna(a){a=a|0;var b=0;k[a>>2]=41216;k[a+4>>2]=41336;k[a+40>>2]=0;b=k[a+16>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+20>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+24>>2]|0;if(!b)return;yla(b);Sqa(b);return}function lna(a){a=a|0;var b=0;k[a>>2]=41216;k[a+4>>2]=41336;k[a+40>>2]=0;b=k[a+16>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+20>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+24>>2]|0;if(!b){Sqa(a);return}yla(b);Sqa(b);Sqa(a);return}function mna(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Qqa(44)|0;k[b>>2]=41216;k[b+4>>2]=41336;c=b+16|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2];k[b+40>>2]=k[a+40>>2];d=Bla(k[a+20>>2]|0)|0;k[b+20>>2]=d;e=Bla(k[a+24>>2]|0)|0;k[b+24>>2]=e;f=Bla(k[a+16>>2]|0)|0;k[c>>2]=f;c=Gla(d)|0;k[b+36>>2]=c;c=Gla(e)|0;k[b+32>>2]=c;c=Fla(f)|0;k[b+28>>2]=c;return b|0}function nna(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;a:do switch(d|0){case 0:{n=k[b>>2]|0;i[n>>0]=78;i[n+1>>0]=2;i[n+2>>0]=0;i[n+3>>0]=0;n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+8|0;p=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[n>>0]=p;i[n+1>>0]=p>>8;i[n+2>>0]=p>>16;i[n+3>>0]=p>>24;p=(k[b>>2]|0)+4|0;k[b>>2]=p;n=a+12|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[p>>0]=o;i[p+1>>0]=o>>8;i[p+2>>0]=o>>16;i[p+3>>0]=o>>24;k[b>>2]=(k[b>>2]|0)+4;break}case 2:{k[c>>2]=(k[c>>2]|0)+12;break}case 1:{o=(k[b>>2]|0)+4|0;k[b>>2]=o;p=a+8|0;n=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[p>>0]=n;i[p+1>>0]=n>>8;i[p+2>>0]=n>>16;i[p+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;p=a+12|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[p>>0]=o;i[p+1>>0]=o>>8;i[p+2>>0]=o>>16;i[p+3>>0]=o>>24;k[b>>2]=(k[b>>2]|0)+4;o=Qqa(16)|0;B=0;va(489,o|0);p=B;B=0;if(p&1){p=Rb()|0;n=Q;Sqa(o);q=n;s=p;Qb(s|0)}k[a+20>>2]=o;o=Qqa(16)|0;B=0;va(489,o|0);p=B;B=0;if(p&1){p=Rb()|0;n=Q;Sqa(o);q=n;s=p;Qb(s|0)}k[a+24>>2]=o;o=Qqa(16)|0;B=0;va(489,o|0);p=B;B=0;if(!(p&1)){k[a+16>>2]=o;break a}p=Rb()|0;n=Q;Sqa(o);q=n;s=p;Qb(s|0);break}default:{p=g+56|0;n=g+4|0;k[g>>2]=27524;k[p>>2]=27544;B=0;wa(508,g+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;t=Q;u=o;vva(p);Qb(u|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[p>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){v=Rb()|0;w=Q;x=v}else{k[n>>2]=27560;v=g+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,n|0,f|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(f);Yua(v);Ava(n);w=z;x=y;break}Yua(f);B=0;y=Ia(40,g|0,143951,43)|0;z=B;B=0;b:do if(!(z&1)?(B=0,Xa(239,y|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,h|0,143995,76);C=B;B=0;do if(!(C&1)){B=0;eb(502,j|0,149525,8);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(h);F=E;G=D;break}B=0;wa(510,m|0,n|0);D=B;B=0;if(D&1){D=Rb()|0;H=D;I=Q;J=1}else{B=0;ua(163,A|0,h|0,j|0,108,m|0);D=B;B=0;if(D&1)K=1;else{B=0;eb(503,A|0,1240,229);B=0;K=0}D=Rb()|0;E=Q;Yua(m);H=D;I=E;J=K}Yua(j);Yua(h);if(J){F=I;G=H}else{L=I;M=H;break b}}else{E=Rb()|0;F=Q;G=E}while(0);zb(A|0);L=F;M=G}else N=17;while(0);if((N|0)==17){y=Rb()|0;L=Q;M=y}k[g>>2]=27468;k[p>>2]=27488;k[n>>2]=27560;Yua(v);Ava(n);vva(p);q=L;s=M;Qb(s|0)}while(0);t=w;u=x;vva(p);Qb(u|0)}}while(0);u=a+20|0;Cla(k[u>>2]|0,b,c,d);x=a+16|0;Cla(k[x>>2]|0,b,c,d);w=a+24|0;Cla(k[w>>2]|0,b,c,d);d=Gla(k[u>>2]|0)|0;k[a+36>>2]=d;d=Gla(k[w>>2]|0)|0;k[a+32>>2]=d;d=Fla(k[x>>2]|0)|0;k[a+28>>2]=d;r=e;return}function ona(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0;b=r;r=r+768|0;c=b+752|0;d=b+592|0;e=b+740|0;f=b+456|0;g=b+728|0;h=b+304|0;i=b+440|0;j=b+152|0;l=b+288|0;m=b+16|0;n=b;o=d+56|0;p=d+4|0;k[d>>2]=27524;k[o>>2]=27544;B=0;wa(508,d+56|0,p|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;t=q;vva(o);Qb(t|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[o>>2]=27488;B=0;va(448,p|0);q=B;B=0;do if(q&1){u=Rb()|0;v=Q;w=u}else{k[p>>2]=27560;u=d+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,p|0,c|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(c);Yua(u);Ava(p);v=y;w=x;break}Yua(c);B=0;Ia(40,d|0,144072,13)|0;x=B;B=0;do if(!(x&1)?(B=0,wa(510,e|0,p|0),y=B,B=0,!(y&1)):0){B=0;ya(424,e|0)|0;y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(e);A=z;C=y;break}Yua(e);k[d>>2]=27468;k[o>>2]=27488;k[p>>2]=27560;Yua(u);Ava(p);vva(o);y=f+56|0;z=f+4|0;k[f>>2]=27524;k[y>>2]=27544;B=0;wa(508,f+56|0,z|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;F=D;vva(y);Qb(F|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[y>>2]=27488;B=0;va(448,z|0);D=B;B=0;do if(D&1){G=Rb()|0;H=Q;I=G}else{k[z>>2]=27560;G=f+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,z|0,c|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(c);Yua(G);Ava(z);H=K;I=J;break}Yua(c);B=0;J=Ia(40,f|0,144086,7)|0;K=B;B=0;do if(((!(K&1)?(B=0,L=Xa(242,J|0,k[a+8>>2]|0)|0,M=B,B=0,!(M&1)):0)?(B=0,Ia(40,L|0,149177,1)|0,L=B,B=0,!(L&1)):0)?(B=0,wa(510,g|0,z|0),L=B,B=0,!(L&1)):0){B=0;ya(424,g|0)|0;L=B;B=0;if(L&1){L=Rb()|0;M=Q;Yua(g);N=M;O=L;break}Yua(g);k[f>>2]=27468;k[y>>2]=27488;k[z>>2]=27560;Yua(G);Ava(z);vva(y);L=h+56|0;M=h+4|0;k[h>>2]=27524;k[L>>2]=27544;B=0;wa(508,h+56|0,M|0);P=B;B=0;if(P&1){P=Rb()|0;R=Q;S=P;vva(L);Qb(S|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[L>>2]=27488;B=0;va(448,M|0);P=B;B=0;do if(P&1){T=Rb()|0;U=Q;V=T}else{k[M>>2]=27560;T=h+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,M|0,c|0);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Yua(c);Yua(T);Ava(M);U=X;V=W;break}Yua(c);B=0;W=Ia(40,h|0,144094,18)|0;X=B;B=0;do if(X&1)Y=58;else{B=0;Z=ya(427,k[a+12>>2]|0)|0;_=B;B=0;if(_&1){Y=58;break}_=Lta(Z)|0;B=0;$=Ia(40,W|0,Z|0,_|0)|0;_=B;B=0;if(_&1){Y=58;break}B=0;Ia(40,$|0,149177,1)|0;$=B;B=0;if($&1){Y=58;break}B=0;wa(510,i|0,M|0);$=B;B=0;if($&1){Y=58;break}B=0;ya(424,i|0)|0;$=B;B=0;if($&1){$=Rb()|0;_=Q;Yua(i);aa=_;ba=$;break}Yua(i);k[h>>2]=27468;k[L>>2]=27488;k[M>>2]=27560;Yua(T);Ava(M);vva(L);Ala(k[a+20>>2]|0);Ala(k[a+24>>2]|0);Ala(k[a+16>>2]|0);$=j+56|0;_=j+4|0;k[j>>2]=27524;k[$>>2]=27544;B=0;wa(508,j+56|0,_|0);Z=B;B=0;if(Z&1){Z=Rb()|0;ca=Q;da=Z;vva($);Qb(da|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[$>>2]=27488;B=0;va(448,_|0);Z=B;B=0;do if(Z&1){ea=Rb()|0;fa=Q;ga=ea}else{k[_>>2]=27560;ea=j+36|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,_|0,c|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(c);Yua(ea);Ava(_);fa=ia;ga=ha;break}Yua(c);B=0;Ia(40,j|0,144113,14)|0;ha=B;B=0;do if(ha&1)Y=61;else{B=0;wa(510,l|0,_|0);ia=B;B=0;if(ia&1){Y=61;break}B=0;ya(424,l|0)|0;ia=B;B=0;if(ia&1){ia=Rb()|0;ja=Q;Yua(l);ka=ja;la=ia;break}Yua(l);k[j>>2]=27468;k[$>>2]=27488;k[_>>2]=27560;Yua(ea);Ava(_);vva($);ia=k[a+40>>2]|0;if(ia)$N(ia);ia=m+56|0;ja=m+4|0;k[m>>2]=27524;k[ia>>2]=27544;B=0;wa(508,m+56|0,ja|0);ma=B;B=0;if(ma&1){ma=Rb()|0;na=Q;oa=ma;vva(ia);Qb(oa|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[ia>>2]=27488;B=0;va(448,ja|0);ma=B;B=0;do if(ma&1){pa=Rb()|0;qa=Q;ra=pa}else{k[ja>>2]=27560;pa=m+36|0;k[pa>>2]=0;k[pa+4>>2]=0;k[pa+8>>2]=0;k[pa+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ja|0,c|0);sa=B;B=0;if(sa&1){sa=Rb()|0;ta=Q;Yua(c);Yua(pa);Ava(ja);qa=ta;ra=sa;break}Yua(c);B=0;Ia(40,m|0,144128,11)|0;sa=B;B=0;do if(!(sa&1)){B=0;wa(510,n|0,ja|0);ta=B;B=0;if(ta&1){Y=76;break}B=0;ya(424,n|0)|0;ta=B;B=0;if(ta&1){ta=Rb()|0;ua=Q;Yua(n);xa=ua;za=ta;break}else{Yua(n);k[m>>2]=27468;k[ia>>2]=27488;k[ja>>2]=27560;Yua(pa);Ava(ja);vva(ia);r=b;return}}else Y=76;while(0);if((Y|0)==76){sa=Rb()|0;xa=Q;za=sa}k[m>>2]=27468;k[ia>>2]=27488;k[ja>>2]=27560;Yua(pa);Ava(ja);vva(ia);Aa=xa;Ba=za;Qb(Ba|0)}while(0);na=qa;oa=ra;vva(ia);Qb(oa|0)}while(0);if((Y|0)==61){ha=Rb()|0;ka=Q;la=ha}k[j>>2]=27468;k[$>>2]=27488;k[_>>2]=27560;Yua(ea);Ava(_);vva($);Aa=ka;Ba=la;Qb(Ba|0)}while(0);ca=fa;da=ga;vva($);Qb(da|0)}while(0);if((Y|0)==58){W=Rb()|0;aa=Q;ba=W}k[h>>2]=27468;k[L>>2]=27488;k[M>>2]=27560;Yua(T);Ava(M);vva(L);Aa=aa;Ba=ba;Qb(Ba|0)}while(0);R=U;S=V;vva(L);Qb(S|0)}else Y=55;while(0);if((Y|0)==55){J=Rb()|0;N=Q;O=J}k[f>>2]=27468;k[y>>2]=27488;k[z>>2]=27560;Yua(G);Ava(z);vva(y);Aa=N;Ba=O;Qb(Ba|0)}while(0);E=H;F=I;vva(y);Qb(F|0)}else Y=52;while(0);if((Y|0)==52){x=Rb()|0;A=Q;C=x}k[d>>2]=27468;k[o>>2]=27488;k[p>>2]=27560;Yua(u);Ava(p);vva(o);Aa=A;Ba=C;Qb(Ba|0)}while(0);s=v;t=w;vva(o);Qb(t|0)}function pna(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;b=r;r=r+624|0;c=b+604|0;d=b+456|0;e=b+592|0;f=b+304|0;g=b+440|0;h=b+152|0;i=b+288|0;j=b+16|0;l=b;m=d+56|0;n=d+4|0;k[d>>2]=27524;k[m>>2]=27544;B=0;wa(508,d+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;q=o;vva(m);Qb(q|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){s=Rb()|0;t=Q;u=s}else{k[n>>2]=27560;s=d+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,n|0,c|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);Yua(s);Ava(n);t=w;u=v;break}Yua(c);B=0;Ia(40,d|0,144072,13)|0;v=B;B=0;do if(!(v&1)?(B=0,wa(510,e|0,n|0),w=B,B=0,!(w&1)):0){B=0;ya(424,e|0)|0;w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(e);y=x;z=w;break}Yua(e);k[d>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);w=f+56|0;x=f+4|0;k[f>>2]=27524;k[w>>2]=27544;B=0;wa(508,f+56|0,x|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;D=A;vva(w);Qb(D|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[w>>2]=27488;B=0;va(448,x|0);A=B;B=0;do if(A&1){E=Rb()|0;F=Q;G=E}else{k[x>>2]=27560;E=f+36|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,x|0,c|0);H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(c);Yua(E);Ava(x);F=I;G=H;break}Yua(c);B=0;H=Ia(40,f|0,144086,7)|0;I=B;B=0;do if(((!(I&1)?(B=0,J=Xa(242,H|0,k[a+8>>2]|0)|0,K=B,B=0,!(K&1)):0)?(B=0,Ia(40,J|0,149177,1)|0,J=B,B=0,!(J&1)):0)?(B=0,wa(510,g|0,x|0),J=B,B=0,!(J&1)):0){B=0;ya(424,g|0)|0;J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(g);L=K;M=J;break}Yua(g);k[f>>2]=27468;k[w>>2]=27488;k[x>>2]=27560;Yua(E);Ava(x);vva(w);J=h+56|0;K=h+4|0;k[h>>2]=27524;k[J>>2]=27544;B=0;wa(508,h+56|0,K|0);N=B;B=0;if(N&1){N=Rb()|0;O=Q;P=N;vva(J);Qb(P|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[J>>2]=27488;B=0;va(448,K|0);N=B;B=0;do if(N&1){R=Rb()|0;S=Q;T=R}else{k[K>>2]=27560;R=h+36|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,K|0,c|0);U=B;B=0;if(U&1){U=Rb()|0;V=Q;Yua(c);Yua(R);Ava(K);S=V;T=U;break}Yua(c);B=0;U=Ia(40,h|0,144094,18)|0;V=B;B=0;do if(V&1)W=59;else{B=0;X=ya(427,k[a+12>>2]|0)|0;Y=B;B=0;if(Y&1){W=59;break}Y=Lta(X)|0;B=0;Z=Ia(40,U|0,X|0,Y|0)|0;Y=B;B=0;if(Y&1){W=59;break}B=0;Ia(40,Z|0,149177,1)|0;Z=B;B=0;if(Z&1){W=59;break}B=0;wa(510,i|0,K|0);Z=B;B=0;if(Z&1){W=59;break}B=0;ya(424,i|0)|0;Z=B;B=0;if(Z&1){Z=Rb()|0;Y=Q;Yua(i);_=Y;$=Z;break}Yua(i);k[h>>2]=27468;k[J>>2]=27488;k[K>>2]=27560;Yua(R);Ava(K);vva(J);zla(k[a+20>>2]|0);zla(k[a+24>>2]|0);zla(k[a+16>>2]|0);Z=j+56|0;Y=j+4|0;k[j>>2]=27524;k[Z>>2]=27544;B=0;wa(508,j+56|0,Y|0);X=B;B=0;if(X&1){X=Rb()|0;aa=Q;ba=X;vva(Z);Qb(ba|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[Z>>2]=27488;B=0;va(448,Y|0);X=B;B=0;do if(X&1){ca=Rb()|0;da=Q;ea=ca}else{k[Y>>2]=27560;ca=j+36|0;k[ca>>2]=0;k[ca+4>>2]=0;k[ca+8>>2]=0;k[ca+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Y|0,c|0);fa=B;B=0;if(fa&1){fa=Rb()|0;ga=Q;Yua(c);Yua(ca);Ava(Y);da=ga;ea=fa;break}Yua(c);B=0;fa=Ia(40,j|0,144140,15)|0;ga=B;B=0;do if(!(ga&1)){B=0;ha=Xa(245,fa|0,k[a+40>>2]|0)|0;ia=B;B=0;if(ia&1){W=62;break}B=0;Ia(40,ha|0,149177,1)|0;ha=B;B=0;if(ha&1){W=62;break}B=0;wa(510,l|0,Y|0);ha=B;B=0;if(ha&1){W=62;break}B=0;ya(424,l|0)|0;ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(l);ja=ia;ka=ha;break}else{Yua(l);k[j>>2]=27468;k[Z>>2]=27488;k[Y>>2]=27560;Yua(ca);Ava(Y);vva(Z);r=b;return}}else W=62;while(0);if((W|0)==62){fa=Rb()|0;ja=Q;ka=fa}k[j>>2]=27468;k[Z>>2]=27488;k[Y>>2]=27560;Yua(ca);Ava(Y);vva(Z);la=ja;ma=ka;Qb(ma|0)}while(0);aa=da;ba=ea;vva(Z);Qb(ba|0)}while(0);if((W|0)==59){U=Rb()|0;_=Q;$=U}k[h>>2]=27468;k[J>>2]=27488;k[K>>2]=27560;Yua(R);Ava(K);vva(J);la=_;ma=$;Qb(ma|0)}while(0);O=S;P=T;vva(J);Qb(P|0)}else W=56;while(0);if((W|0)==56){H=Rb()|0;L=Q;M=H}k[f>>2]=27468;k[w>>2]=27488;k[x>>2]=27560;Yua(E);Ava(x);vva(w);la=L;ma=M;Qb(ma|0)}while(0);C=F;D=G;vva(w);Qb(D|0)}else W=53;while(0);if((W|0)==53){v=Rb()|0;y=Q;z=v}k[d>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);la=y;ma=z;Qb(ma|0)}while(0);p=t;q=u;vva(m);Qb(q|0)}function qna(a){a=a|0;return k[a+8>>2]|0}function rna(a){a=a|0;return 590}function sna(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;f=a+20|0;Ela(k[f>>2]|0,d);d=a+24|0;Ela(k[d>>2]|0,e);e=a+16|0;Ela(k[e>>2]|0,b);b=Gla(k[f>>2]|0)|0;k[a+36>>2]=b;b=Gla(k[d>>2]|0)|0;k[a+32>>2]=b;b=Fla(k[e>>2]|0)|0;k[a+28>>2]=b;k[a+40>>2]=g;return}function tna(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+180|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;cO(k[a+40>>2]|0,d,477);if((k[d>>2]|0)==507){r=c;return}c=e+56|0;a=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,a|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,a|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[a>>2]=27560;m=e+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[e+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,a|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(a);n=q;o=p;break}Yua(b);B=0;p=Ia(40,e|0,144156,9)|0;q=B;B=0;if((((((!(q&1)?(B=0,q=Xa(242,p|0,k[d>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,q|0,144166,2)|0,q=B,B=0,!(q&1)):0)?(B=0,q=ya(427,k[d>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,144169,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,f|0,143995,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,g|0,144189,13);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(f);u=p;v=q;break}B=0;wa(510,h|0,a|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,f|0,g|0,196,h|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(h);w=p;x=q;y=z}Yua(g);Yua(f);if(y){u=w;v=x}else{A=w;C=x;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(m);Ava(a);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function una(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;d=c+180|0;e=c+176|0;f=c+40|0;g=c+24|0;h=c+12|0;i=c;cO(k[a+40>>2]|0,e,477);if((k[e>>2]|0)==507){j=vna(a)|0;if(!j){r=c;return}TN(j,b);SN(j);Sqa(j);r=c;return}c=f+56|0;j=f+4|0;k[f>>2]=27524;k[c>>2]=27544;B=0;wa(508,f+56|0,j|0);b=B;B=0;if(b&1){b=Rb()|0;l=Q;m=b;vva(c);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[c>>2]=27488;B=0;va(448,j|0);b=B;B=0;do if(b&1){a=Rb()|0;n=Q;o=a}else{k[j>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,j|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(a);Ava(j);n=q;o=p;break}Yua(d);B=0;p=Ia(40,f|0,144156,9)|0;q=B;B=0;if((((((!(q&1)?(B=0,q=Xa(242,p|0,k[e>>2]|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,q|0,144166,2)|0,q=B,B=0,!(q&1)):0)?(B=0,q=ya(427,k[e>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,144169,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,143995,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,144203,13);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,j|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,219,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[c>>2]=27488;k[j>>2]=27560;Yua(a);Ava(j);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[c>>2]=27488;k[j>>2]=27560;Yua(a);Ava(j);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[c>>2]=27488;k[j>>2]=27560;Yua(a);Ava(j);vva(c);Qb(C|0)}while(0);l=n;m=o;vva(c);Qb(m|0)}function vna(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0;b=r;r=r+80|0;c=b+72|0;d=b+64|0;e=b+16|0;f=b;g=k[a+28>>2]|0;if(!($p(g)|0)){h=0;r=b;return h|0}if(_p(g)|0){h=0;r=b;return h|0}i=Qqa(24)|0;j=a+36|0;B=0;ua(166,i|0,k[j>>2]|0,2,k[a+40>>2]|0,534);l=B;B=0;if(l&1){l=Rb()|0;m=Q;Sqa(i);n=l;o=m;Qb(n|0)}Ko(e,k[a+32>>2]|0,2,0);a=oC(k[g+16>>2]|0,173)|0;m=ed[k[(k[g>>2]|0)+160>>2]&511](g,k[k[j>>2]>>2]|0)|0;l=ed[k[(k[g>>2]|0)+160>>2]&511](g,k[(k[j>>2]|0)+4>>2]|0)|0;j=Qqa(64)|0;B=0;ib(289,j|0,m|0,l|0,2);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Sqa(j);n=q;o=s;Qb(n|0)}n=Hc[k[(k[j>>2]|0)+8>>2]&511](j)|0;if((n|0)<(Hc[k[(k[j>>2]|0)+12>>2]&511](j)|0)){s=j+8|0;o=i+4|0;q=f+8|0;t=n;do{Fc[k[(k[j>>2]|0)+24>>2]&1023](j,t);yw(g,c,e,j);zw(g,f,j,m,l,Hc[k[(k[g>>2]|0)+112>>2]&511](g)|0);nd[k[(k[a>>2]|0)+48>>2]&1023](a,d,j);n=k[o>>2]|0;p[n>>3]=+p[s>>3]*+p[c>>3]*+p[d>>3]*+p[f>>3]+ +p[n>>3];u=n+8|0;p[u>>3]=+p[s>>3]*+p[c>>3]*+p[d>>3]*+p[q>>3]+ +p[u>>3];t=t+1|0}while((t|0)<(Hc[k[(k[j>>2]|0)+12>>2]&511](j)|0))}Ec[k[(k[j>>2]|0)+4>>2]&1023](j);h=i;r=b;return h|0}function wna(a,b){a=a|0;b=b|0;var c=0;c=a+36|0;a=Rn(k[k[c>>2]>>2]|0)|0;k[b>>2]=a;a=Rn(k[(k[c>>2]|0)+4>>2]|0)|0;k[b+4>>2]=a;return}function xna(a,b){a=a|0;b=b|0;var c=0;c=a+36|0;a=Qn(k[k[c>>2]>>2]|0)|0;k[b>>2]=a;a=Qn(k[(k[c>>2]|0)+4>>2]|0)|0;k[b+4>>2]=a;return}function yna(a){a=a|0;return 2}function zna(a,b){a=a|0;b=b|0;return (k[a+12>>2]|0)==(b|0)|0}function Ana(a){a=a|0;return 0}function Bna(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return}function Cna(a,b,c){a=a|0;b=b|0;c=+c;return}function Dna(a){a=a|0;var b=0;b=a+28|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;Dla(k[a+20>>2]|0);Dla(k[a+24>>2]|0);Dla(k[a+16>>2]|0);return}function Ena(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return}function Fna(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0;g=r;r=r+192|0;d=g+176|0;j=g+40|0;l=g+24|0;m=g+12|0;n=g;if((Hc[k[(k[a>>2]|0)+56>>2]&511](a)|0)<=0){o=0;p=0;k[b>>2]=o;k[c>>2]=p;r=g;return}q=a+36|0;if((h|0)==937){s=0;t=0;u=0;while(1){v=e+(Rn(k[(k[q>>2]|0)+(t<<2)>>2]|0)|0)|0;do if(!(i[v>>0]|0)){w=e+(Rn(k[(k[q>>2]|0)+(t<<2)>>2]|0)|0)|0;i[w>>0]=1;w=0;while(1){x=f+(w<<2)|0;if((k[x>>2]|0)>-1)w=w+1|0;else{y=x;break}}w=Rn(k[(k[q>>2]|0)+(t<<2)>>2]|0)|0;k[y>>2]=w;w=k[(k[q>>2]|0)+(t<<2)>>2]|0;if(k[w+28>>2]|0)if(!(fo(w)|0)){z=s+1|0;A=u;break}else{z=s;A=u+1|0;break}else{z=s;A=u}}else{z=s;A=u}while(0);t=t+1|0;if((t|0)>=(Hc[k[(k[a>>2]|0)+56>>2]&511](a)|0)){o=z;p=A;break}else{s=z;u=A}}k[b>>2]=o;k[c>>2]=p;r=g;return}else{C=0;D=0;E=0}a:while(1){A=e+(Rn(k[(k[q>>2]|0)+(D<<2)>>2]|0)|0)|0;b:do if(!(i[A>>0]|0)){u=e+(Rn(k[(k[q>>2]|0)+(D<<2)>>2]|0)|0)|0;i[u>>0]=1;u=0;while(1){z=f+(u<<2)|0;if((k[z>>2]|0)>-1)u=u+1|0;else{F=z;break}}u=Rn(k[(k[q>>2]|0)+(D<<2)>>2]|0)|0;k[F>>2]=u;switch(h|0){case 966:{u=k[(k[q>>2]|0)+(D<<2)>>2]|0;if(!(k[u+32>>2]|0)){G=C;H=E;break b}if(!(fo(u)|0)){G=C+1|0;H=E;break b}else{G=C;H=E+1|0;break b}break}case 943:{u=k[(k[q>>2]|0)+(D<<2)>>2]|0;if(!(k[u+24>>2]|0)){G=C;H=E;break b}if(!(fo(u)|0)){G=C+1|0;H=E;break b}else{G=C;H=E+1|0;break b}break}default:break a}}else{G=C;H=E}while(0);D=D+1|0;if((D|0)>=(Hc[k[(k[a>>2]|0)+56>>2]&511](a)|0)){o=G;p=H;I=11;break}else{C=G;E=H}}if((I|0)==11){k[b>>2]=o;k[c>>2]=p;r=g;return}g=j+56|0;p=j+4|0;k[j>>2]=27524;k[g>>2]=27544;B=0;wa(508,j+56|0,p|0);c=B;B=0;if(c&1){c=Rb()|0;J=Q;K=c;vva(g);Qb(K|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[g>>2]=27488;B=0;va(448,p|0);c=B;B=0;do if(c&1){o=Rb()|0;L=Q;M=o}else{k[p>>2]=27560;o=j+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[j+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,p|0,d|0);b=B;B=0;if(b&1){b=Rb()|0;I=Q;Yua(d);Yua(o);Ava(p);L=I;M=b;break}Yua(d);B=0;b=Ia(40,j|0,145010,13)|0;I=B;B=0;if(!(I&1)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,l|0,143995,76);I=B;B=0;do if(!(I&1)){B=0;eb(502,m|0,144217,23);H=B;B=0;if(H&1){H=Rb()|0;E=Q;Yua(l);N=E;O=H;break}B=0;wa(510,n|0,p|0);H=B;B=0;if(H&1){H=Rb()|0;P=Q;R=H;S=1}else{B=0;ua(163,b|0,l|0,m|0,336,n|0);H=B;B=0;if(H&1)T=1;else{B=0;eb(503,b|0,1240,229);B=0;T=0}H=Rb()|0;E=Q;Yua(n);P=E;R=H;S=T}Yua(m);Yua(l);if(S){N=P;O=R}else{U=P;V=R;k[j>>2]=27468;k[g>>2]=27488;k[p>>2]=27560;Yua(o);Ava(p);vva(g);Qb(V|0)}}else{H=Rb()|0;N=Q;O=H}while(0);zb(b|0);U=N;V=O;k[j>>2]=27468;k[g>>2]=27488;k[p>>2]=27560;Yua(o);Ava(p);vva(g);Qb(V|0)}I=Rb()|0;U=Q;V=I;k[j>>2]=27468;k[g>>2]=27488;k[p>>2]=27560;Yua(o);Ava(p);vva(g);Qb(V|0)}while(0);J=L;K=M;vva(g);Qb(K|0)}function Gna(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,144241,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,59,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Hna(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;a=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,144350,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,144241,85);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,144370,27);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,67,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(E|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Ina(a,b,c){a=a|0;b=+b;c=c|0;return}function Jna(a,b,c){a=a|0;b=b|0;c=c|0;return}function Kna(a,b,c){a=a|0;b=b|0;c=c|0;return}function Lna(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,144241,85);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144327,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,52,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function Mna(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function Nna(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function Ona(a,b,c){a=a|0;b=+b;c=c|0;return}function Pna(a,b,c){a=a|0;b=b|0;c=c|0;return}function Qna(a,b,c){a=a|0;b=b|0;c=c|0;return}function Rna(a,b,c){a=a|0;b=b|0;c=c|0;Lna(a+-4|0,b,c)}function Sna(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0.0;d=c>>>0>536870911?-1:c<<3;e=Rqa(d)|0;k[a>>2]=e;e=Rqa(d)|0;k[b>>2]=e;if((c|0)>=8){b=Rqa(d)|0;f=Rqa(d)|0;p[b>>3]=0.0;p[f>>3]=2.0;WEa(b+8|0,0,(c<<3)+-8|0)|0;d=1;do{g=1.0/(4.0-1.0/+(ma(d,d)|0));p[f+(d<<3)>>3]=g;d=d+1|0}while((d|0)!=(c|0));Tna(k[a>>2]|0,e,c,b,f);Tqa(f);Tqa(b);return}if((c|0)<=0)return;b=c+-1|0;f=k[41356+(b<<2)>>2]|0;d=k[a>>2]|0;a=k[41384+(b<<2)>>2]|0;b=0;do{p[d+(b<<3)>>3]=+p[f+(b<<3)>>3];p[e+(b<<3)>>3]=+p[a+(b<<3)>>3];b=b+1|0}while((b|0)!=(c|0));return}function Tna(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0,D=0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,P=0.0,R=0,S=0.0,T=0.0,U=0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;f=r;r=r+192|0;g=f+176|0;h=f+40|0;i=f+24|0;j=f+12|0;l=f;if((c|0)==1){p[a>>3]=+p[d>>3];p[b>>3]=+p[e>>3];r=f;return}m=Rqa(c>>>0>536870911?-1:c<<3)|0;p[a>>3]=+p[d>>3];p[b>>3]=1.0;n=c+-1|0;p[m+(n<<3)>>3]=0.0;o=(c|0)>1;if(o){q=1;do{p[a+(q<<3)>>3]=+p[d+(q<<3)>>3];s=+aa(+(+p[e+(q<<3)>>3]));p[m+(q+-1<<3)>>3]=s;p[b+(q<<3)>>3]=0.0;q=q+1|0}while((q|0)!=(c|0));q=(c|0)>0;a:do if(q){d=1;t=0;b:while(1){u=a+(t<<3)|0;v=t;t=t+1|0;w=a+(t<<3)|0;x=m+(v<<3)|0;y=0;while(1){z=v;while(1){if((z|0)>=(c|0)|(z|0)==(n|0)){A=z;break}s=+$(+(+p[m+(z<<3)>>3]));C=+$(+(+p[a+(z<<3)>>3]));D=z+1|0;if(!(s<=(C+ +$(+(+p[a+(D<<3)>>3])))*2.220446049250313e-16))z=D;else{A=z;break}}C=+p[u>>3];if((A|0)==(v|0)){E=y;break}y=y+1|0;s=+p[x>>3];F=(+p[w>>3]-C)/(s*2.0);G=+aa(+(F*F+1.0));H=+$(+G);G=+p[a+(A<<3)>>3]-C+s/(F+(F>=0.0?H:-H));if((A|0)>(v|0)){z=d+A|0;H=1.0;F=G;D=1;s=0.0;I=1.0;while(1){J=A-D|0;K=+p[m+(J<<3)>>3];L=I*K;M=H*K;if(!(+$(+L)>=+$(+F))){K=L/F;N=+aa(+(K*K+1.0));O=J+1|0;p[m+(O<<3)>>3]=F*N;P=1.0/N;R=O;S=P;T=K*P}else{P=F/L;K=+aa(+(P*P+1.0));O=J+1|0;p[m+(O<<3)>>3]=L*K;L=1.0/K;R=O;S=P*L;T=L}O=a+(R<<3)|0;L=+p[O>>3]-s;P=M*(S*2.0)+T*(+p[a+(J<<3)>>3]-L);K=T*P;p[O>>3]=L+K;L=S*P-M;O=b+(R<<3)|0;M=+p[O>>3];U=b+(J<<3)|0;P=+p[U>>3];p[O>>3]=S*M+T*P;p[U>>3]=S*P-T*M;D=D+1|0;if((D|0)==(z|0)){V=K;W=L;break}else{H=S;F=L;s=K;I=T}}X=+p[u>>3];Y=W;Z=V}else{X=C;Y=G;Z=0.0}p[u>>3]=X-Z;p[x>>3]=Y;p[m+(A<<3)>>3]=0.0;if((y|0)>=30)break b}if((E|0)>29)break;if((t|0)>=(c|0)){_=q;break a}else d=d+-1|0}Tqa(m);d=h+56|0;t=h+4|0;k[h>>2]=27524;k[d>>2]=27544;B=0;wa(508,h+56|0,t|0);y=B;B=0;if(y&1){y=Rb()|0;ba=Q;ca=y;vva(d);Qb(ca|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[d>>2]=27488;B=0;va(448,t|0);y=B;B=0;do if(y&1){x=Rb()|0;da=Q;ea=x}else{k[t>>2]=27560;x=h+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[h+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,t|0,g|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(g);Yua(x);Ava(t);da=v;ea=u;break}Yua(g);B=0;u=Ia(40,h|0,144419,30)|0;v=B;B=0;if((!(v&1)?(B=0,v=Xa(242,u|0,30)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,i|0,144450,78);u=B;B=0;do if(!(u&1)){B=0;eb(502,j|0,144529,10);w=B;B=0;if(w&1){w=Rb()|0;z=Q;Yua(i);fa=z;ga=w;break}B=0;wa(510,l|0,t|0);w=B;B=0;if(w&1){w=Rb()|0;ha=Q;ia=w;ja=1}else{B=0;ua(163,v|0,i|0,j|0,1662,l|0);w=B;B=0;if(w&1)ka=1;else{B=0;eb(503,v|0,1240,229);B=0;ka=0}w=Rb()|0;z=Q;Yua(l);ha=z;ia=w;ja=ka}Yua(j);Yua(i);if(ja){fa=ha;ga=ia}else{la=ha;ma=ia;k[h>>2]=27468;k[d>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(d);Qb(ma|0)}}else{w=Rb()|0;fa=Q;ga=w}while(0);zb(v|0);la=fa;ma=ga;k[h>>2]=27468;k[d>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(d);Qb(ma|0)}u=Rb()|0;la=Q;ma=u;k[h>>2]=27468;k[d>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(d);Qb(ma|0)}while(0);ba=da;ca=ea;vva(d);Qb(ca|0)}else _=0;while(0);if(o){o=0;do{ca=a+(o<<3)|0;Y=+p[ca>>3];ea=o;o=o+1|0;if((o|0)<(c|0)){da=o;ba=ea;Z=Y;while(1){X=+p[a+(da<<3)>>3];ma=X<Z;h=ma?da:ba;da=da+1|0;if((da|0)==(c|0)){na=h;break}else{ba=h;Z=ma?X:Z}}if((na|0)>(ea|0)){ba=a+(na<<3)|0;p[ca>>3]=+p[ba>>3];p[ba>>3]=Y;ba=b+(ea<<3)|0;Z=+p[ba>>3];da=b+(na<<3)|0;p[ba>>3]=+p[da>>3];p[da>>3]=Z}}}while((o|0)!=(n|0))}if(_){_=0;do{n=b+(_<<3)|0;Z=+p[n>>3];p[n>>3]=Z*(+p[e>>3]*Z);_=_+1|0}while((_|0)!=(c|0))}}Tqa(m);r=f;return}function Una(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0;g=r;r=r+16|0;h=g+4|0;i=g;k[h>>2]=0;k[i>>2]=0;if((f|0)<21){j=f+-1|0;l=k[41412+(j<<2)>>2]|0;k[a>>2]=l;m=l>>>0>536870911?-1:l<<3;n=Rqa(m)|0;k[b>>2]=n;n=Rqa(m)|0;k[c>>2]=n;n=Rqa(m)|0;k[d>>2]=n;n=Rqa(m)|0;k[e>>2]=n;m=k[41492+(j<<2)>>2]|0;o=k[b>>2]|0;q=k[41572+(j<<2)>>2]|0;s=k[c>>2]|0;t=k[41652+(j<<2)>>2]|0;u=k[d>>2]|0;v=k[41732+(j<<2)>>2]|0;j=0;do{p[o+(j<<3)>>3]=+p[m+(j<<3)>>3];p[s+(j<<3)>>3]=+p[q+(j<<3)>>3];p[u+(j<<3)>>3]=+p[t+(j<<3)>>3];p[n+(j<<3)>>3]=+p[v+(j<<3)>>3];j=j+1|0}while((j|0)<(l|0));r=g;return}l=(f|0)/2|0;f=l+1|0;j=ma(f,f)|0;k[a>>2]=j;a=j>>>0>536870911?-1:j<<3;j=Rqa(a)|0;k[b>>2]=j;j=Rqa(a)|0;k[c>>2]=j;j=Rqa(a)|0;k[d>>2]=j;j=Rqa(a)|0;k[e>>2]=j;Sna(h,i,f);f=k[h>>2]|0;j=k[i>>2]|0;a=k[e>>2]|0;e=k[b>>2]|0;b=k[c>>2]|0;c=k[d>>2]|0;d=0;v=0;while(1){n=f+(v<<3)|0;t=j+(v<<3)|0;u=0;q=d;while(1){w=+p[n>>3];x=1.0-w;y=x*.5*+p[f+(u<<3)>>3];p[a+(q<<3)>>3]=x*.4330127018922193*(+p[j+(u<<3)>>3]*+p[t>>3]);x=(w+1.0)*.8660254037844386/1.7320508075688772;p[e+(q<<3)>>3]=(1.0-y-x)*.5;p[b+(q<<3)>>3]=(y+1.0-x)*.5;p[c+(q<<3)>>3]=x;s=q+1|0;if((u|0)<(l|0)){u=u+1|0;q=s}else{z=s;break}}if((v|0)<(l|0)){d=z;v=v+1|0}else break}Tqa(j);k[i>>2]=0;Tqa(f);k[h>>2]=0;r=g;return}function Vna(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0,G=0;h=r;r=r+16|0;i=h+4|0;j=h;k[i>>2]=0;k[j>>2]=0;if((g|0)<7){l=g+-1|0;m=k[41812+(l<<2)>>2]|0;k[a>>2]=m;n=m>>>0>536870911?-1:m<<3;o=Rqa(n)|0;k[b>>2]=o;o=Rqa(n)|0;k[c>>2]=o;o=Rqa(n)|0;k[d>>2]=o;o=Rqa(n)|0;k[e>>2]=o;o=Rqa(n)|0;k[f>>2]=o;n=k[41836+(l<<2)>>2]|0;q=k[b>>2]|0;s=k[41860+(l<<2)>>2]|0;t=k[c>>2]|0;u=k[41884+(l<<2)>>2]|0;v=k[d>>2]|0;w=k[41908+(l<<2)>>2]|0;x=k[e>>2]|0;y=k[41932+(l<<2)>>2]|0;l=0;do{p[q+(l<<3)>>3]=+p[n+(l<<3)>>3];p[t+(l<<3)>>3]=+p[s+(l<<3)>>3];p[v+(l<<3)>>3]=+p[u+(l<<3)>>3];p[x+(l<<3)>>3]=+p[w+(l<<3)>>3];p[o+(l<<3)>>3]=+p[y+(l<<3)>>3];l=l+1|0}while((l|0)<(m|0));r=h;return}m=(g|0)/2|0;g=m+1|0;l=ma(ma(g,g)|0,g)|0;k[a>>2]=l;a=l>>>0>536870911?-1:l<<3;l=Rqa(a)|0;k[b>>2]=l;l=Rqa(a)|0;k[c>>2]=l;l=Rqa(a)|0;k[d>>2]=l;l=Rqa(a)|0;k[e>>2]=l;l=Rqa(a)|0;k[f>>2]=l;Sna(i,j,g);g=k[i>>2]|0;l=k[j>>2]|0;a=k[f>>2]|0;f=k[b>>2]|0;b=k[c>>2]|0;c=k[d>>2]|0;d=k[e>>2]|0;e=0;y=0;while(1){o=g+(y<<3)|0;w=l+(y<<3)|0;x=e;u=0;while(1){v=g+(u<<3)|0;s=l+(u<<3)|0;t=0;n=x;while(1){z=+p[v>>3];A=1.0-z;B=+p[o>>3];C=1.0-B;D=A*.25*C*+p[g+(t<<3)>>3];E=z*3.0;z=(E+5.0-B-E*B)*.14433756729740646;E=(B+1.0)*.816496580927726;p[a+(n<<3)>>3]=A*.08838834764831845*(C*C)*(+p[l+(t<<3)>>3]*+p[s>>3]*+p[w>>3]);C=z/1.7320508075688772;A=E/2.449489742783178;p[f+(n<<3)>>3]=(1.0-D-C-A)*.5;p[b+(n<<3)>>3]=(D+1.0-C-A)*.5;A=E/2.8284271247461903;p[c+(n<<3)>>3]=(z-A)/1.7320508075688772;p[d+(n<<3)>>3]=A*1.7320508075688772;q=n+1|0;if((t|0)<(m|0)){t=t+1|0;n=q}else{F=q;break}}if((u|0)<(m|0)){x=F;u=u+1|0}else{G=F;break}}if((y|0)<(m|0)){e=G;y=y+1|0}else break}Tqa(l);k[j>>2]=0;Tqa(g);k[i>>2]=0;r=h;return}function Wna(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0.0,h=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0.0,n=0.0;if(d==0.0){g=0.0;p[a>>3]=g;return 0}h=(e+1.0)/e+-1.0;e=h*b*2.302585092994046;i=c*2.302585092994046;j=0;k=+psa(f);while(1){f=+ba(10.0,+k);l=+ba(+f,+h);m=k-(f*c+l*b-d)/(i*f+e*l);if(+$(+(m-k))/+$(+m)<1.0e-12){n=m;break}if((j|0)>49){n=m;break}else{j=j+1|0;k=m}}g=+ba(10.0,+(n>50.0?50.0:n));p[a>>3]=g;return 0}function Xna(a){a=+a;var b=0.0,c=0.0;b=a+-273.15;do if(!(b<=-45.0)){if(b>=-45.0&b<=-40.0){a=b+45.0;c=a*a*.007395902726819-+ba(+a,3.0)*.000396645116301-a*.253161292268336+5.772078366321591;break}if(b>=-40.0&b<=-35.0){a=b+40.0;c=a*a*.001446225982305+ +ba(+a,3.0)*.000408322072669-a*.208950648722716+4.641588833612773;break}if(b>=-35.0&b<=-30.0){a=b+35.0;c=a*a*.007571057072334-+ba(+a,3.0)*.000423888728124-a*.163864233449525+3.684031498640382;break}if(b>=-30.0&b<=-25.0){a=b+30.0;c=a*a*.001212726150476+ +ba(+a,3.0)*.000147154327025-a*.119945317335478+3.001000667185614;break}if(b>=-25.0&b<=-20.0){a=b+25.0;c=a*a*.003420041055847-+ba(+a,3.0)*.000193435838672-a*.096781481303861+2.44998652514822;break}if(b>=-20.0&b<=-15.0){a=b+20.0;c=a*a*.000518503475772+ +ba(+a,3.0)*.000219771255067-a*.077088758645767+2.027400665191131;break}if(b>=-15.0&b<=-10.0){a=b+15.0;c=a*a*.003815072301777-+ba(+a,3.0)*.000653438900191-a*.055420879758021+1.682390865739973;break}if(b>=-10.0&b<=-5.0){a=b+10.0;c=+ba(+a,3.0)*.000692439419762-a*a*.005986511201093-a*.066278074254598+1.418983411970382;break}if(b>=-5.0&b<=-2.0){a=b+5.0;c=a*a*.004400080095332-+ba(+a,3.0)*.00013228200411-a*.074210229783403+1.024485188140279;break}else{a=b+2.0;c=a*a*.003209542058346-+ba(+a,3.0)*.00013228200411-a*.051381363322371+.837883605537096;break}}else{a=b+50.0;c=a*a*.013345579471334-+ba(+a,3.0)*.000396645116301-a*.356868703259105+7.272363035371383}while(0);b=c*1.0e8;return +(b<0.0?1.0e6:b)}function Yna(a,b,c){a=+a;b=+b;c=+c;var d=0.0;d=+Xna(a);return +(d*+ba(+(+LY(0.0,+KY(.01,b))*181.25+1.0),+(-1.0/c)))}function Zna(a){a=+a;var b=0.0,c=0.0;b=a+-273.15;do if(!(b<=-45.0)){if(b>=-45.0&b<=-40.0){a=b+45.0;c=a*a*.007279645014004-+ba(+a,3.0)*.000292866376675-a*.230243014094813+5.154964909039554;break}if(b>=-40.0&b<=-35.0){a=b+40.0;c=a*a*.002886649363879+ +ba(+a,3.0)*.000072737147457-a*.179411542205399+4.149132666831214;break}if(b>=-35.0&b<=-30.0){a=b+35.0;c=a*a*.003977706575736-+ba(+a,3.0)*.000086144770023-a*.145089762507325+3.333333333333331;break}if(b>=-30.0&b<=-25.0){a=b+30.0;c=a*a*.002685535025386-+ba(+a,3.0)*.000043984685769-a*.111773554501713+2.696559088937191;break}if(b>=-25.0&b<=-20.0){a=b+25.0;c=a*a*.002025764738854-+ba(+a,3.0)*.000029799523463-a*.088217055680511+2.199331606342181;break}if(b>=-20.0&b<=-15.0){a=b+20.0;c=a*a*.00157877188691+ +ba(+a,3.0)*.000136920904777-a*.07019437255169+1.805165505978111;break}if(b>=-15.0&b<=-10.0){a=b+15.0;c=a*a*.003632585458564-+ba(+a,3.0)*.000899763781026-a*.044137585824322+1.510778053489523;break}if(b>=-10.0&b<=-5.0){a=b+10.0;c=+ba(+a,3.0)*.00167696432507-a*a*.009863871256831-a*.075294014815659+1.268434288203714;break}if(b>=-5.0&b<=-2.0){a=b+5.0;c=a*a*.015290593619213-+ba(+a,3.0)*.003748937622487-a*.048160403003748+.854987973338348;break}else{a=b+2.0;c=+ba(+a,3.0)*-.003748937622488-a*a*.018449844983174-a*.057638157095631+.74690079109286;break}}else{a=b+50.0;c=a*a*.01167264066413-+ba(+a,3.0)*.000292866376675-a*.325004442485481+6.524779401948101}while(0);b=c*1.0e8;return +(b<0.0?1.0e6:b)}function _na(a,b,c){a=+a;b=+b;c=+c;var d=0.0,e=0.0;d=a-b*.000866;b=d*8.314;if(d<263.15)e=+ja(+(-6.0e4/b))*3.61e-13;else e=+ja(+(-139.0e3/b))*1730.0;return +(+ba(+e,+(-1.0/c)))}function $na(a,b,c,d,e,f,g){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;var h=0.0,i=0.0,j=0.0,k=0,l=0.0,m=0.0;h=b*d;d=(273.15-h-e)*f;if(d>a){b=h+(a/f+e);e=b*8.314;if(!(b<=263.15)){i=e;j=0.0;k=6}else{l=+ja(+(-6.0e4/e))*3.61e-13;m=0.0}}else{e=(a-d)/g;if(e>.01){i=2270.9691;j=.01;k=6}else{i=2270.9691;j=e;k=6}}if((k|0)==6){l=+ja(+(-139.0e3/i))*1730.0;m=j}return +(+ba(+(l*(m*181.25+1.0)),+(-1.0/c)))}function aoa(a,b){a=+a;b=+b;var c=0.0,d=0,e=0.0,f=0.0;do if(!(a<=.01)){if(!(!(a>.01)|!(a<=.02))){c=(a+-.01)*1.5854895991882293e-08+0.0;break}if(!(a>.02)|!(a<=.03))c=1.5854895991882295e-09;else c=(a+-.02)*1.4269406392694067e-07+1.5854895991882293e-10}else c=0.0;while(0);d=a>.01;if(b==0.0){e=c*31536.0e3;return +(d&a-e<.01?a+-.01:e)}if(!d){f=c;return +f}if(!(a-c*b<.01)){f=c;return +f}f=(a+-.01)/b;return +f}function boa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;c=r;r=r+16|0;d=c+4|0;e=c;iZ(b,e)|0;jZ(b,d)|0;b=k[d>>2]|0;d=Rqa(b>>>0>1073741823?-1:b<<2)|0;f=~~+_(+(+(a|0)/+(b|0)));if((b|0)>0){g=0;do{k[d+(g<<2)>>2]=f;g=g+1|0}while((g|0)<(b|0))}g=a-(ma(f,b)|0)|0;if((g|0)>0)h=0;else{i=k[e>>2]|0;j=d+(i<<2)|0;l=k[j>>2]|0;Tqa(d);r=c;return l|0}do{b=d+(h<<2)|0;k[b>>2]=(k[b>>2]|0)+1;h=h+1|0}while((h|0)!=(g|0));i=k[e>>2]|0;j=d+(i<<2)|0;l=k[j>>2]|0;Tqa(d);r=c;return l|0}function coa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;e=r;r=r+16|0;f=e+4|0;g=e+8|0;h=e;k[f>>2]=c;jZ(d,h)|0;iZ(d,g)|0;c=k[h>>2]|0;h=Rqa(c>>>0>1073741823?-1:c<<2)|0;dZ(f,1,4,h,1,4,d)|0;d=k[h>>2]|0;f=k[g>>2]|0;if((f|0)<1){i=0;j=d;k[a>>2]=i;k[b>>2]=j;Tqa(h);r=e;return}else{l=d;m=1;n=0;o=d}while(1){d=l+n|0;l=k[h+(m<<2)>>2]|0;g=l+o|0;if((m|0)>=(f|0)){i=d;j=g;break}else{m=m+1|0;n=d;o=g}}k[a>>2]=i;k[b>>2]=j;Tqa(h);r=e;return}function doa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;b=r;r=r+368|0;c=b+344|0;d=b+208|0;e=b+196|0;f=b+184|0;g=b+36|0;h=b+48|0;j=b+24|0;l=b+12|0;m=b;n=a+76|0;if(k[n>>2]|0){r=b;return}o=k[a+52>>2]|0;if((o|0)<3){p=d+56|0;q=d+4|0;k[d>>2]=27524;k[p>>2]=27544;B=0;wa(508,d+56|0,q|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;u=s;vva(p);Qb(u|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[p>>2]=27488;B=0;va(448,q|0);s=B;B=0;do if(s&1){v=Rb()|0;w=Q;x=v}else{k[q>>2]=27560;v=d+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,q|0,c|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(c);Yua(v);Ava(q);w=z;x=y;break}Yua(c);B=0;y=Ia(40,d|0,150121,27)|0;z=B;B=0;a:do if(!(z&1)?(B=0,Xa(239,y|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,e|0,144540,86);C=B;B=0;do if(!(C&1)){B=0;eb(502,f|0,144627,11);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(e);F=E;G=D;break}B=0;wa(510,g|0,q|0);D=B;B=0;if(D&1){D=Rb()|0;H=D;I=Q;J=1}else{B=0;ua(163,A|0,e|0,f|0,15,g|0);D=B;B=0;if(D&1)K=1;else{B=0;eb(503,A|0,1240,229);B=0;K=0}D=Rb()|0;E=Q;Yua(g);H=D;I=E;J=K}Yua(f);Yua(e);if(J){F=I;G=H}else{L=H;M=I;break a}}else{E=Rb()|0;F=Q;G=E}while(0);zb(A|0);L=G;M=F}else N=18;while(0);if((N|0)==18){y=Rb()|0;L=y;M=Q}k[d>>2]=27468;k[p>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(p);O=L;P=M;Qb(O|0)}while(0);t=w;u=x;vva(p);Qb(u|0)}switch(k[a+40>>2]|0){case 301:case 300:{u=k[a+56>>2]|0;p=u*3|0;x=u*12|0;w=Rqa(x>>>0>1073741823?-1:x<<2)|0;x=Rqa(p)|0;if((u|0)!=0?(WEa(x|0,0,p|0)|0,t=(u|0)>0,t):0){M=0;do{k[w+((M<<2|3)<<2)>>2]=-1;M=M+1|0}while((M|0)<(p|0));R=t}else R=0;t=Rqa(o>>>0>1073741823?-1:o<<2)|0;M=Rqa(p>>>0>1073741823?-1:p<<2)|0;if((o|0)>0)WEa(t|0,-1,((o|0)>1?o:1)<<2|0)|0;if(R){R=k[a+72>>2]|0;o=0;p=0;while(1){L=o*3|0;o=o+1|0;q=0;d=p;while(1){F=q+L|0;G=R+(F<<2)|0;I=k[G>>2]|0;H=k[R+(((q|0)==2?L:F+1|0)<<2)>>2]|0;F=(H|0)<(I|0);J=F?H:I;e=F?I:H;H=t+(J<<2)|0;I=k[H>>2]|0;b:do if((I|0)==-1)N=63;else{F=I;while(1){f=F<<2;if((k[w+((f|1)<<2)>>2]|0)==(e|0)){S=f;break}F=k[M+(F<<2)>>2]|0;if((F|0)==-1){N=63;break b}}k[w+((S|3)<<2)>>2]=o;T=d}while(0);if((N|0)==63){N=0;A=d<<2;k[w+(A<<2)>>2]=J;k[w+((A|1)<<2)>>2]=e;k[w+((A|2)<<2)>>2]=o;if((J|0)!=(k[G>>2]|0))i[x+d>>0]=1;k[M+(d<<2)>>2]=I;k[H>>2]=d;T=d+1|0}q=q+1|0;if((q|0)==3){U=T;break}else d=T}if((o|0)>=(u|0)){V=U;break}else p=U}}else V=0;Tqa(t);Tqa(M);M=V<<2;t=Rqa(M>>>0>1073741823?-1:M<<2)|0;if((V|0)>0){M=0;do{U=M<<2;p=k[w+(U<<2)>>2]|0;if(!(i[x+M>>0]|0)){k[t+(U<<2)>>2]=p;u=U|1;k[t+(u<<2)>>2]=k[w+(u<<2)>>2]}else{u=U|1;k[t+(U<<2)>>2]=k[w+(u<<2)>>2];k[t+(u<<2)>>2]=p}p=U|2;k[t+(p<<2)>>2]=k[w+(p<<2)>>2];p=U|3;k[t+(p<<2)>>2]=k[w+(p<<2)>>2];M=M+1|0}while((M|0)!=(V|0))}Tqa(w);Tqa(x);k[n>>2]=t;k[a+60>>2]=V;r=b;return}case 302:{eoa(a);r=b;return}default:{b=h+56|0;a=h+4|0;k[h>>2]=27524;k[b>>2]=27544;B=0;wa(508,h+56|0,a|0);V=B;B=0;if(V&1){V=Rb()|0;W=Q;X=V;vva(b);Qb(X|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[b>>2]=27488;B=0;va(448,a|0);V=B;B=0;do if(V&1){t=Rb()|0;Y=Q;Z=t}else{k[a>>2]=27560;t=h+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);n=B;B=0;if(n&1){n=Rb()|0;x=Q;Yua(c);Yua(t);Ava(a);Y=x;Z=n;break}Yua(c);B=0;n=Ia(40,h|0,150248,32)|0;x=B;B=0;c:do if(!(x&1)?(B=0,Xa(239,n|0,0)|0,w=B,B=0,!(w&1)):0){w=Ab(20)|0;B=0;eb(502,j|0,144540,86);M=B;B=0;do if(!(M&1)){B=0;eb(502,l|0,144627,11);p=B;B=0;if(p&1){p=Rb()|0;U=Q;Yua(j);_=p;$=U;break}B=0;wa(510,m|0,a|0);U=B;B=0;if(U&1){U=Rb()|0;aa=1;ba=U;ca=Q}else{B=0;ua(163,w|0,j|0,l|0,27,m|0);U=B;B=0;if(U&1)da=1;else{B=0;eb(503,w|0,1240,229);B=0;da=0}U=Rb()|0;p=Q;Yua(m);aa=da;ba=U;ca=p}Yua(l);Yua(j);if(aa){_=ba;$=ca}else{ea=ba;fa=ca;break c}}else{p=Rb()|0;_=p;$=Q}while(0);zb(w|0);ea=_;fa=$}else N=43;while(0);if((N|0)==43){n=Rb()|0;ea=n;fa=Q}k[h>>2]=27468;k[b>>2]=27488;k[a>>2]=27560;Yua(t);Ava(a);vva(b);O=ea;P=fa;Qb(O|0)}while(0);W=Y;X=Z;vva(b);Qb(X|0)}}}function eoa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;h=a+48|0;switch(k[h>>2]|0){case 625:{i=Rqa(100)|0;j=Rqa(20)|0;k[j>>2]=1;k[j+4>>2]=1;k[i>>2]=3;k[i+4>>2]=0;k[i+8>>2]=1;k[i+12>>2]=2;k[i+20>>2]=3;k[i+24>>2]=3;k[i+28>>2]=4;k[i+32>>2]=5;k[j+8>>2]=2;k[j+12>>2]=2;k[j+16>>2]=2;k[i+40>>2]=4;k[i+44>>2]=1;k[i+48>>2]=2;k[i+52>>2]=5;k[i+56>>2]=4;k[i+60>>2]=4;k[i+64>>2]=2;k[i+68>>2]=0;k[i+72>>2]=3;k[i+76>>2]=5;k[i+80>>2]=4;k[i+84>>2]=0;k[i+88>>2]=1;k[i+92>>2]=4;k[i+96>>2]=3;l=5;m=i;n=j;o=6;p=4;break}case 623:{j=Rqa(64)|0;i=Rqa(16)|0;k[i>>2]=1;k[i+4>>2]=1;k[i+8>>2]=1;k[i+12>>2]=1;k[j>>2]=3;k[j+4>>2]=0;k[j+8>>2]=1;k[j+12>>2]=2;k[j+16>>2]=3;k[j+20>>2]=0;k[j+24>>2]=3;k[j+28>>2]=1;k[j+32>>2]=3;k[j+36>>2]=1;k[j+40>>2]=3;k[j+44>>2]=2;k[j+48>>2]=3;k[j+52>>2]=0;k[j+56>>2]=2;k[j+60>>2]=3;l=4;m=j;n=i;o=4;p=3;break}default:{i=d+56|0;j=d+4|0;k[d>>2]=27524;k[i>>2]=27544;B=0;wa(508,d+56|0,j|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;t=q;vva(i);Qb(t|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[i>>2]=27488;B=0;va(448,j|0);q=B;B=0;do if(q&1){u=Rb()|0;v=Q;w=u}else{k[j>>2]=27560;u=d+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,j|0,c|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(c);Yua(u);Ava(j);v=y;w=x;break}Yua(c);B=0;x=Ia(40,d|0,144639,5)|0;y=B;B=0;if((((!(y&1)?(B=0,y=ya(427,k[h>>2]|0)|0,z=B,B=0,!(z&1)):0)?(z=Lta(y)|0,B=0,A=Ia(40,x|0,y|0,z|0)|0,z=B,B=0,!(z&1)):0)?(B=0,z=Ia(40,A|0,144645,14)|0,A=B,B=0,!(A&1)):0)?(B=0,Xa(239,z|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,e|0,144540,86);A=B;B=0;do if(!(A&1)){B=0;eb(502,f|0,144660,13);y=B;B=0;if(y&1){y=Rb()|0;x=Q;Yua(e);C=x;D=y;break}B=0;wa(510,g|0,j|0);y=B;B=0;if(y&1){y=Rb()|0;E=Q;F=y;G=1}else{B=0;ua(163,z|0,e|0,f|0,173,g|0);y=B;B=0;if(y&1)H=1;else{B=0;eb(503,z|0,1240,229);B=0;H=0}y=Rb()|0;x=Q;Yua(g);E=x;F=y;G=H}Yua(f);Yua(e);if(G){C=E;D=F}else{I=E;J=F;k[d>>2]=27468;k[i>>2]=27488;k[j>>2]=27560;Yua(u);Ava(j);vva(i);Qb(J|0)}}else{y=Rb()|0;C=Q;D=y}while(0);zb(z|0);I=C;J=D;k[d>>2]=27468;k[i>>2]=27488;k[j>>2]=27560;Yua(u);Ava(j);vva(i);Qb(J|0)}A=Rb()|0;I=Q;J=A;k[d>>2]=27468;k[i>>2]=27488;k[j>>2]=27560;Yua(u);Ava(j);vva(i);Qb(J|0)}while(0);s=v;t=w;vva(i);Qb(t|0)}}t=k[a+56>>2]|0;i=ma(t,l)|0;w=i>>>0>1073741823?-1:i<<2;v=Rqa(w)|0;s=p+4|0;J=ma(i,s)|0;j=Rqa(J>>>0>1073741823?-1:J<<2)|0;if((i|0)>0){J=0;do{d=j+((ma(J,s)|0)+1<<2)|0;k[d>>2]=-1;J=J+1|0}while((J|0)!=(i|0))}i=k[a+52>>2]|0;J=Rqa(i>>>0>1073741823?-1:i<<2)|0;d=Rqa(w)|0;if((i|0)>0)WEa(J|0,-1,((i|0)>1?i:1)<<2|0)|0;i=Rqa(p<<2)|0;if((t|0)>0){p=i+4|0;w=i+8|0;I=i+-4|0;D=a+72|0;C=0;F=0;while(1){E=ma(C,l)|0;G=ma(C,o)|0;C=C+1|0;e=0;f=F;while(1){H=ma(e,l)|0;g=k[m+(H<<2)>>2]|0;h=(g|0)>0;if(h){c=H+1|0;H=k[D>>2]|0;q=0;do{k[i+(q<<2)>>2]=(k[H+((k[m+(c+q<<2)>>2]|0)+G<<2)>>2]|0)+-1;q=q+1|0}while((q|0)!=(g|0));if((g|0)>=2){q=((g|0)/2|0)+1|0;c=g;a:while(1){if((q|0)<2){H=I+(c<<2)|0;A=k[H>>2]|0;y=c+-1|0;k[H>>2]=k[i>>2];if((y|0)==1){K=A;break}else{L=A;M=q;N=y}}else{y=q+-1|0;L=k[I+(y<<2)>>2]|0;M=y;N=c}y=M<<1;b:do if((y|0)>(N|0))O=M;else{A=y;H=M;while(1){if((A|0)<(N|0)){x=A|1;P=(k[I+(A<<2)>>2]|0)<(k[I+(x<<2)>>2]|0)?x:A}else P=A;x=k[I+(P<<2)>>2]|0;R=I+(H<<2)|0;if((L|0)>=(x|0)){S=R;break}k[R>>2]=x;A=P<<1;if((A|0)>(N|0)){O=P;break b}else H=P}k[S>>2]=L;q=M;c=N;continue a}while(0);k[I+(O<<2)>>2]=L;q=M;c=N}k[i>>2]=K;T=K}else U=41}else U=41;if((U|0)==41){U=0;T=k[i>>2]|0}c=J+(T<<2)|0;q=k[c>>2]|0;c:do if((q|0)==-1)U=60;else{y=(k[p>>2]|0)+1|0;H=q;while(1){A=ma(H,s)|0;if((k[j+(A+5<<2)>>2]|0)==(y|0)?(k[j+(A+6<<2)>>2]|0)==((k[w>>2]|0)+1|0):0){V=A;W=H;break}H=k[d+(H<<2)>>2]|0;if((H|0)==-1){U=60;break c}}k[j+(V+1<<2)>>2]=C;k[v+(e+E<<2)>>2]=W;X=f}while(0);if((U|0)==60){U=0;H=ma(f,s)|0;k[j+(H<<2)>>2]=C;k[j+(H+2<<2)>>2]=k[n+(e<<2)>>2];k[j+(H+3<<2)>>2]=g;if(h?(y=H+4|0,k[j+(H+4<<2)>>2]=T+1,(g|0)!=1):0){H=1;do{k[j+(y+H<<2)>>2]=(k[i+(H<<2)>>2]|0)+1;H=H+1|0}while((H|0)!=(g|0))}k[v+(e+E<<2)>>2]=f;k[d+(f<<2)>>2]=q;k[c>>2]=f;X=f+1|0}e=e+1|0;if((e|0)>=(l|0)){Y=X;break}else f=X}if((C|0)>=(t|0)){Z=Y;break}else F=Y}}else Z=0;Tqa(J);Tqa(d);Tqa(i);Tqa(m);Tqa(n);n=ma(Z,s)|0;m=Rqa(n>>>0>1073741823?-1:n<<2)|0;if(!n){Tqa(j);_=a+76|0;k[_>>2]=m;$=a+60|0;k[$>>2]=Z;aa=a+68|0;k[aa>>2]=s;ba=a+88|0;k[ba>>2]=v;r=b;return}TEa(m|0,j|0,n<<2|0)|0;Tqa(j);_=a+76|0;k[_>>2]=m;$=a+60|0;k[$>>2]=Z;aa=a+68|0;k[aa>>2]=s;ba=a+88|0;k[ba>>2]=v;r=b;return}function foa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;h=a+92|0;if(k[h>>2]|0){r=b;return}j=k[a+52>>2]|0;l=Rqa(j>>>0>1073741823?-1:j<<2)|0;if(j)WEa(l|0,0,j<<2|0)|0;switch(k[a+48>>2]|0){case 621:{m=3;break}case 625:{m=6;break}case 623:{m=4;break}default:{j=d+56|0;n=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;q=o;vva(j);Qb(q|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){s=Rb()|0;t=Q;u=s}else{k[n>>2]=27560;s=d+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,n|0,c|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);Yua(s);Ava(n);t=w;u=v;break}Yua(c);B=0;v=Ia(40,d|0,144674,10)|0;w=B;B=0;if((((!(w&1)?(B=0,w=ya(427,k[a+40>>2]|0)|0,x=B,B=0,!(x&1)):0)?(x=Lta(w)|0,B=0,y=Ia(40,v|0,w|0,x|0)|0,x=B,B=0,!(x&1)):0)?(B=0,x=Ia(40,y|0,146481,18)|0,y=B,B=0,!(y&1)):0)?(B=0,Xa(239,x|0,0)|0,x=B,B=0,!(x&1)):0){x=Ab(20)|0;B=0;eb(502,e|0,144685,112);y=B;B=0;do if(!(y&1)){B=0;eb(502,f|0,144798,37);w=B;B=0;if(w&1){w=Rb()|0;v=Q;Yua(e);z=v;A=w;break}B=0;wa(510,g|0,n|0);w=B;B=0;if(w&1){w=Rb()|0;C=Q;D=w;E=1}else{B=0;ua(163,x|0,e|0,f|0,36,g|0);w=B;B=0;if(w&1)F=1;else{B=0;eb(503,x|0,1240,229);B=0;F=0}w=Rb()|0;v=Q;Yua(g);C=v;D=w;E=F}Yua(f);Yua(e);if(E){z=C;A=D}else{G=C;H=D;k[d>>2]=27468;k[j>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(j);Qb(H|0)}}else{w=Rb()|0;z=Q;A=w}while(0);zb(x|0);G=z;H=A;k[d>>2]=27468;k[j>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(j);Qb(H|0)}y=Rb()|0;G=Q;H=y;k[d>>2]=27468;k[j>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(j);Qb(H|0)}while(0);p=t;q=u;vva(j);Qb(q|0)}}q=k[a+56>>2]|0;if((q|0)>0){j=k[a+32>>2]|0;u=a+72|0;a=0;while(1){if(!(i[j+a>>0]|0))I=a+1|0;else{t=ma(a,m)|0;p=k[u>>2]|0;H=a+1|0;n=0;do{k[l+((k[p+(n+t<<2)>>2]|0)+-1<<2)>>2]=H;n=n+1|0}while((n|0)<(m|0));I=H}if((I|0)<(q|0))a=I;else break}}k[h>>2]=l;r=b;return}function goa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;h=a+96|0;if(k[h>>2]|0){r=b;return}i=k[a+52>>2]|0;j=Rqa(i>>>0>1073741823?-1:i<<2)|0;if(i)WEa(j|0,0,i<<2|0)|0;switch(k[a+48>>2]|0){case 621:{l=3;break}case 623:{l=4;break}case 625:{l=6;break}default:{i=d+56|0;m=d+4|0;k[d>>2]=27524;k[i>>2]=27544;B=0;wa(508,d+56|0,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(i);Qb(p|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[i>>2]=27488;B=0;va(448,m|0);n=B;B=0;do if(n&1){q=Rb()|0;s=Q;t=q}else{k[m>>2]=27560;q=d+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,m|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(c);Yua(q);Ava(m);s=v;t=u;break}Yua(c);B=0;u=Ia(40,d|0,144836,22)|0;v=B;B=0;if(!(v&1)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,e|0,144859,112);v=B;B=0;do if(!(v&1)){B=0;eb(502,f|0,144972,37);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(e);y=x;z=w;break}B=0;wa(510,g|0,m|0);w=B;B=0;if(w&1){w=Rb()|0;A=Q;C=w;D=1}else{B=0;ua(163,u|0,e|0,f|0,42,g|0);w=B;B=0;if(w&1)E=1;else{B=0;eb(503,u|0,1240,229);B=0;E=0}w=Rb()|0;x=Q;Yua(g);A=x;C=w;D=E}Yua(f);Yua(e);if(D){y=A;z=C}else{F=A;G=C;k[d>>2]=27468;k[i>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(i);Qb(G|0)}}else{w=Rb()|0;y=Q;z=w}while(0);zb(u|0);F=y;G=z;k[d>>2]=27468;k[i>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(i);Qb(G|0)}v=Rb()|0;F=Q;G=v;k[d>>2]=27468;k[i>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(i);Qb(G|0)}while(0);o=s;p=t;vva(i);Qb(p|0)}}p=k[a+56>>2]|0;if((p|0)>0){i=k[a+72>>2]|0;a=0;do{t=ma(a,l)|0;s=0;do{o=j+((k[i+(s+t<<2)>>2]|0)+-1<<2)|0;k[o>>2]=(k[o>>2]|0)+1;s=s+1|0}while((s|0)<(l|0));a=a+1|0}while((a|0)<(p|0))}k[h>>2]=j;r=b;return}function hoa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Pe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,Ve=0,We=0,Xe=0,Ye=0,Ze=0,_e=0,$e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,mf=0,nf=0,of=0,pf=0,qf=0,rf=0,sf=0,tf=0,uf=0,vf=0,wf=0,xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0,Df=0,Ef=0,Ff=0,Gf=0,Hf=0,If=0,Jf=0,Kf=0,Lf=0,Mf=0,Nf=0,Of=0,Pf=0,Qf=0,Rf=0,Sf=0,Tf=0,Uf=0,Vf=0,Wf=0,Xf=0,Yf=0,Zf=0,_f=0,$f=0,ag=0,bg=0,cg=0,dg=0,eg=0,fg=0,gg=0,hg=0,ig=0,jg=0,kg=0,lg=0,mg=0,ng=0,og=0,pg=0,qg=0,rg=0,sg=0,tg=0,ug=0,vg=0,wg=0,xg=0,yg=0,zg=0,Ag=0,Bg=0,Cg=0,Dg=0,Eg=0,Fg=0,Gg=0,Hg=0,Ig=0,Jg=0,Kg=0,Lg=0,Mg=0,Ng=0,Og=0,Pg=0,Qg=0,Rg=0,Sg=0,Tg=0,Ug=0,Vg=0,Wg=0,Xg=0,Yg=0,Zg=0,_g=0,$g=0,ah=0,bh=0,ch=0,dh=0,eh=0,fh=0,gh=0,hh=0,jh=0,kh=0,lh=0,mh=0,nh=0,oh=0,ph=0,qh=0,rh=0,sh=0,th=0,uh=0,vh=0,wh=0,xh=0,yh=0,zh=0,Ah=0,Bh=0,Ch=0,Dh=0,Eh=0,Fh=0,Gh=0,Hh=0,Ih=0,Jh=0,Kh=0,Lh=0,Mh=0,Nh=0,Oh=0,Ph=0,Qh=0,Rh=0,Sh=0,Th=0,Uh=0,Vh=0,Wh=0,Xh=0,Yh=0,Zh=0,_h=0,$h=0,ai=0,bi=0,ci=0,di=0,ei=0,fi=0,gi=0,hi=0,ii=0,ji=0,ki=0,li=0,mi=0,ni=0,oi=0,pi=0,qi=0,ri=0,si=0,ti=0,ui=0,vi=0,wi=0,xi=0,yi=0,zi=0,Ai=0,Bi=0,Ci=0,Di=0,Ei=0,Fi=0,Gi=0,Hi=0,Ii=0,Ji=0,Ki=0,Li=0,Mi=0,Ni=0,Oi=0,Pi=0,Qi=0,Ri=0,Si=0;f=r;r=r+2112|0;g=f+2100|0;h=f+2024|0;j=f+2020|0;l=f+1992|0;m=f+1856|0;n=f+2088|0;o=f+2076|0;p=f+2064|0;q=f+1704|0;s=f+2052|0;t=f+2040|0;u=f+2028|0;v=f+1552|0;w=f+2008|0;x=f+1996|0;y=f+1840|0;z=f+1416|0;A=f+1688|0;C=f+1404|0;D=f+1392|0;E=f+1256|0;F=f+1104|0;G=f+952|0;H=f+800|0;I=f+1120|0;J=f+512|0;K=f+228|0;L=f+216|0;M=f+968|0;N=f+204|0;O=f+192|0;P=f+180|0;R=f+816|0;S=f+168|0;T=f+156|0;U=f+144|0;V=f+664|0;W=f+132|0;X=f+120|0;Y=f+108|0;Z=f+528|0;_=f+96|0;$=f+84|0;aa=f+72|0;ba=f+376|0;ca=f+60|0;da=f+48|0;ea=f+36|0;fa=f+240|0;ga=f+24|0;ha=f+12|0;ia=f;ja=b+100|0;ka=k[ja>>2]|0;k[h>>2]=0;k[j>>2]=0;k[l>>2]=0;a:do switch(d|0){case 738:{la=b+52|0;na=k[la>>2]|0;if((na|0)>0){oa=b+36|0;pa=ka+1|0;qa=na;na=0;ra=0;while(1){if(!(k[(k[oa>>2]|0)+(na<<2)>>2]|0)){sa=qa;ta=ra}else{xa=Qqa(144)|0;B=0;Ka(13,xa|0,pa+na|0,na|0,ra|0,na|0,b|0,c|0,e|0);za=B;B=0;if(za&1){Aa=xa;break}ih(a,xa)|0;sa=k[la>>2]|0;ta=ra+1|0}na=na+1|0;if((na|0)>=(sa|0))break a;else{qa=sa;ra=ta}}ra=Rb()|0;qa=Q;Sqa(Aa);Ba=qa;Ca=ra;Qb(Ca|0)}break}case 739:{jqa(l,k[b+32>>2]|0,k[b+36>>2]|0,b,0);ra=b+56|0;if((k[ra>>2]|0)>0){qa=b+72|0;na=0;la=0;while(1){pa=na*3|0;oa=pa+ka|0;xa=k[l>>2]|0;if(!(i[xa+pa>>0]|0)){Da=xa;Ea=la}else{xa=Qqa(144)|0;B=0;Ka(13,xa|0,oa+1|0,oa|0,la|0,(k[(k[qa>>2]|0)+(pa<<2)>>2]|0)+-1|0,b|0,c|0,e|0);za=B;B=0;if(za&1){Fa=xa;break}ih(a,xa)|0;Da=k[l>>2]|0;Ea=la+1|0}xa=pa+1|0;if(!(i[Da+xa>>0]|0)){Ga=Da;Ha=Ea}else{za=Qqa(144)|0;B=0;Ka(13,za|0,oa+2|0,oa+1|0,Ea|0,(k[(k[qa>>2]|0)+(xa<<2)>>2]|0)+-1|0,b|0,c|0,e|0);xa=B;B=0;if(xa&1){Fa=za;break}ih(a,za)|0;Ga=k[l>>2]|0;Ha=Ea+1|0}za=pa+2|0;if(!(i[Ga+za>>0]|0))Ja=Ha;else{pa=Qqa(144)|0;B=0;Ka(13,pa|0,oa+3|0,oa+2|0,Ha|0,(k[(k[qa>>2]|0)+(za<<2)>>2]|0)+-1|0,b|0,c|0,e|0);za=B;B=0;if(za&1){Fa=pa;break}ih(a,pa)|0;Ja=Ha+1|0}na=na+1|0;if((na|0)>=(k[ra>>2]|0))break a;else la=Ja}la=Rb()|0;ra=Q;Sqa(Fa);Ba=ra;Ca=la;Qb(Ca|0)}break}case 740:{la=b+52|0;ra=k[la>>2]|0;b:do if((ra|0)>0){na=b+36|0;qa=ka+1|0;pa=ra;za=0;oa=0;while(1){if(!(k[(k[na>>2]|0)+(za<<2)>>2]|0)){La=pa;Ma=oa}else{xa=Qqa(144)|0;B=0;Ka(13,xa|0,qa+za|0,za|0,oa|0,za|0,b|0,c|0,e|0);Na=B;B=0;if(Na&1){Oa=xa;break}ih(a,xa)|0;La=k[la>>2]|0;Ma=oa+1|0}za=za+1|0;if((za|0)>=(La|0)){Pa=Ma;break b}else{pa=La;oa=Ma}}oa=Rb()|0;pa=Q;Sqa(Oa);Ba=pa;Ca=oa;Qb(Ca|0)}else Pa=0;while(0);ra=b+56|0;oa=k[ra>>2]|0;if((oa|0)>0){pa=b+32|0;za=ka+1|0;qa=oa;oa=0;na=Pa;while(1){if(!(i[(k[pa>>2]|0)+oa>>0]|0)){Qa=qa;Ra=na}else{xa=Qqa(144)|0;Na=k[la>>2]|0;B=0;Ka(13,xa|0,za+oa+Na|0,Na+oa|0,na|0,0,b|0,c|0,e|0);Na=B;B=0;if(Na&1){Sa=xa;break}ih(a,xa)|0;Qa=k[ra>>2]|0;Ra=na+1|0}oa=oa+1|0;if((oa|0)>=(Qa|0))break a;else{qa=Qa;na=Ra}}na=Rb()|0;qa=Q;Sqa(Sa);Ba=qa;Ca=na;Qb(Ca|0)}break}case 741:{na=b+52|0;qa=k[na>>2]|0;c:do if((qa|0)>0){oa=b+36|0;ra=ka+1|0;za=qa;la=0;pa=0;while(1){if(!(k[(k[oa>>2]|0)+(la<<2)>>2]|0)){Ta=za;Ua=pa}else{xa=Qqa(144)|0;B=0;Ka(13,xa|0,ra+la|0,la|0,pa|0,la|0,b|0,c|0,e|0);Na=B;B=0;if(Na&1){Va=xa;break}ih(a,xa)|0;Ta=k[na>>2]|0;Ua=pa+1|0}la=la+1|0;if((la|0)>=(Ta|0)){Wa=Ua;break c}else{za=Ta;pa=Ua}}pa=Rb()|0;za=Q;Sqa(Va);Ba=za;Ca=pa;Qb(Ca|0)}else Wa=0;while(0);qa=b+56|0;pa=k[qa>>2]|0;if((pa|0)>0){za=b+32|0;la=ka+1|0;ra=pa;pa=0;oa=Wa;while(1){if(!(i[(k[za>>2]|0)+pa>>0]|0)){Ya=ra;Za=oa}else{xa=Qqa(144)|0;Na=k[na>>2]|0;B=0;Ka(13,xa|0,la+pa+Na|0,Na+pa|0,oa|0,0,b|0,c|0,e|0);Na=B;B=0;if(Na&1){_a=xa;break}En(xa);ih(a,xa)|0;Ya=k[qa>>2]|0;Za=oa+1|0}pa=pa+1|0;if((pa|0)>=(Ya|0))break a;else{ra=Ya;oa=Za}}oa=Rb()|0;ra=Q;Sqa(_a);Ba=ra;Ca=oa;Qb(Ca|0)}break}case 746:{lqa(j,b);oa=b+52|0;ra=k[oa>>2]|0;d:do if((ra|0)>0){pa=b+36|0;qa=ka+1|0;la=ra;na=0;za=0;while(1){if(!(k[(k[pa>>2]|0)+(na<<2)>>2]|0)){$a=la;ab=za}else{xa=Qqa(144)|0;B=0;Ka(13,xa|0,qa+na|0,na|0,za|0,na|0,b|0,c|0,e|0);Na=B;B=0;if(Na&1){bb=xa;break}ih(a,xa)|0;$a=k[oa>>2]|0;ab=za+1|0}na=na+1|0;if((na|0)>=($a|0)){cb=$a;db=ab;break d}else{la=$a;za=ab}}za=Rb()|0;la=Q;Sqa(bb);Ba=la;Ca=za;Qb(Ca|0)}else{cb=ra;db=0}while(0);ra=b+64|0;za=k[ra>>2]|0;if((za|0)>0){la=b+80|0;na=ka+1|0;qa=za;za=cb;pa=0;xa=db;e:while(1){do if((k[(k[la>>2]|0)+((pa*3|0)+2<<2)>>2]|0)==2){if(!(i[(k[j>>2]|0)+pa>>0]|0)){fb=qa;gb=za+1|0;hb=xa;break}Na=Qqa(144)|0;ib=za+1|0;B=0;Ka(13,Na|0,na+pa+(k[oa>>2]|0)|0,ib|0,xa|0,0,b|0,c|0,e|0);jb=B;B=0;if(jb&1){kb=Na;break e}ih(a,Na)|0;fb=k[ra>>2]|0;gb=ib;hb=xa+1|0}else{fb=qa;gb=za;hb=xa}while(0);pa=pa+1|0;if((pa|0)>=(fb|0))break a;else{qa=fb;za=gb;xa=hb}}xa=Rb()|0;za=Q;Sqa(kb);Ba=za;Ca=xa;Qb(Ca|0)}break}case 747:{lqa(j,b);xa=b+52|0;za=k[xa>>2]|0;f:do if((za|0)>0){qa=b+36|0;pa=ka+1|0;ra=za;oa=0;na=0;while(1){if(!(k[(k[qa>>2]|0)+(oa<<2)>>2]|0)){lb=ra;mb=na}else{la=Qqa(144)|0;B=0;Ka(13,la|0,pa+oa|0,oa|0,na|0,oa|0,b|0,c|0,e|0);ib=B;B=0;if(ib&1){nb=la;break}ih(a,la)|0;lb=k[xa>>2]|0;mb=na+1|0}oa=oa+1|0;if((oa|0)>=(lb|0)){ob=lb;pb=mb;break f}else{ra=lb;na=mb}}na=Rb()|0;ra=Q;Sqa(nb);Ba=ra;Ca=na;Qb(Ca|0)}else{ob=za;pb=0}while(0);za=b+64|0;na=k[za>>2]|0;if((na|0)>0){ra=b+80|0;oa=ka+1|0;pa=ka+2|0;qa=na;na=ob;la=0;ib=pb;g:while(1){do if((k[(k[ra>>2]|0)+((la*3|0)+2<<2)>>2]|0)==2){if(!(i[(k[j>>2]|0)+la>>0]|0)){qb=qa;rb=na+2|0;sb=ib;break}Na=Qqa(144)|0;jb=la<<1;B=0;Ka(13,Na|0,oa+jb+(k[xa>>2]|0)|0,na+1|0,ib|0,0,b|0,c|0,e|0);tb=B;B=0;if(tb&1){ub=Na;vb=83;break g}ih(a,Na)|0;Na=Qqa(144)|0;tb=na+2|0;B=0;Ka(13,Na|0,pa+jb+(k[xa>>2]|0)|0,tb|0,ib+1|0,0,b|0,c|0,e|0);jb=B;B=0;if(jb&1){wb=Na;vb=84;break g}ih(a,Na)|0;qb=k[za>>2]|0;rb=tb;sb=ib+2|0}else{qb=qa;rb=na;sb=ib}while(0);la=la+1|0;if((la|0)>=(qb|0))break a;else{qa=qb;na=rb;ib=sb}}if((vb|0)==83){ib=Rb()|0;na=Q;Sqa(ub);Ba=na;Ca=ib;Qb(Ca|0)}else if((vb|0)==84){ib=Rb()|0;na=Q;Sqa(wb);Ba=na;Ca=ib;Qb(Ca|0)}}break}case 745:{lqa(j,b);ib=b+52|0;na=k[ib>>2]|0;h:do if((na|0)>0){qa=b+36|0;la=ka+1|0;za=na;xa=0;pa=0;while(1){if(!(k[(k[qa>>2]|0)+(xa<<2)>>2]|0)){xb=za;yb=pa}else{oa=Qqa(144)|0;B=0;Ka(13,oa|0,la+xa|0,xa|0,pa|0,xa|0,b|0,c|0,e|0);ra=B;B=0;if(ra&1){Bb=oa;break}ih(a,oa)|0;xb=k[ib>>2]|0;yb=pa+1|0}xa=xa+1|0;if((xa|0)>=(xb|0)){Cb=xb;Db=yb;break h}else{za=xb;pa=yb}}pa=Rb()|0;za=Q;Sqa(Bb);Ba=za;Ca=pa;Qb(Ca|0)}else{Cb=na;Db=0}while(0);na=b+64|0;pa=k[na>>2]|0;if((pa|0)>0){za=b+80|0;xa=ka+1|0;la=pa;pa=Cb;qa=0;oa=Db;i:while(1){do if((k[(k[za>>2]|0)+((qa*3|0)+2<<2)>>2]|0)==2){Eb=la;Fb=pa;Gb=oa}else{if(!(i[(k[j>>2]|0)+qa>>0]|0)){Eb=la;Fb=pa+1|0;Gb=oa;break}ra=Qqa(144)|0;tb=pa+1|0;B=0;Ka(13,ra|0,xa+qa+(k[ib>>2]|0)|0,tb|0,oa|0,0,b|0,c|0,e|0);Na=B;B=0;if(Na&1){Hb=ra;break i}ih(a,ra)|0;Eb=k[na>>2]|0;Fb=tb;Gb=oa+1|0}while(0);qa=qa+1|0;if((qa|0)>=(Eb|0))break a;else{la=Eb;pa=Fb;oa=Gb}}oa=Rb()|0;pa=Q;Sqa(Hb);Ba=pa;Ca=oa;Qb(Ca|0)}break}case 742:{lqa(j,b);oa=b+52|0;pa=k[oa>>2]|0;j:do if((pa|0)>0){la=b+36|0;qa=ka+1|0;na=pa;ib=0;xa=0;while(1){if(!(k[(k[la>>2]|0)+(ib<<2)>>2]|0)){Ib=na;Jb=xa}else{za=Qqa(144)|0;B=0;Ka(13,za|0,qa+ib|0,ib|0,xa|0,ib|0,b|0,c|0,e|0);tb=B;B=0;if(tb&1){Kb=za;break}ih(a,za)|0;Ib=k[oa>>2]|0;Jb=xa+1|0}ib=ib+1|0;if((ib|0)>=(Ib|0)){Lb=Ib;Mb=Jb;break j}else{na=Ib;xa=Jb}}xa=Rb()|0;na=Q;Sqa(Kb);Ba=na;Ca=xa;Qb(Ca|0)}else{Lb=pa;Mb=0}while(0);pa=b+64|0;xa=k[pa>>2]|0;do if((xa|0)>0){na=ka+1|0;ib=xa;qa=0;la=Mb;while(1){if(!(i[(k[j>>2]|0)+qa>>0]|0)){Nb=ib;Ob=la}else{za=Qqa(144)|0;tb=k[oa>>2]|0;B=0;Ka(13,za|0,na+qa+tb|0,tb+qa|0,la|0,0,b|0,c|0,e|0);tb=B;B=0;if(tb&1){Pb=za;break}ih(a,za)|0;Nb=k[pa>>2]|0;Ob=la+1|0}qa=qa+1|0;if((qa|0)>=(Nb|0)){Sb=Nb;Tb=Ob;vb=116;break}else{ib=Nb;la=Ob}}if((vb|0)==116){Ub=Sb;Vb=k[oa>>2]|0;Wb=Tb;break}la=Rb()|0;ib=Q;Sqa(Pb);Ba=ib;Ca=la;Qb(Ca|0)}else{Ub=xa;Vb=Lb;Wb=Mb}while(0);if((k[b+48>>2]|0)==625?(mqa(h,b),xa=b+60|0,la=k[xa>>2]|0,(la|0)>0):0){ib=b+68|0;qa=b+76|0;na=ka+1+Ub+Vb|0;za=la;la=0;tb=Wb;k:while(1){ra=(ma(k[ib>>2]|0,la)|0)+2|0;switch(k[(k[qa>>2]|0)+(ra<<2)>>2]|0){case 2:{if(!(i[(k[h>>2]|0)+la>>0]|0)){Xb=za;Yb=tb}else{ra=Qqa(144)|0;B=0;Ka(13,ra|0,na+la|0,(k[oa>>2]|0)+la+(k[pa>>2]|0)|0,tb|0,0,b|0,c|0,e|0);Na=B;B=0;if(Na&1){Zb=ra;vb=124;break k}ih(a,ra)|0;Xb=k[xa>>2]|0;Yb=tb+1|0}break}case 1:{Xb=za;Yb=tb;break}default:break k}la=la+1|0;if((la|0)>=(Xb|0))break a;else{za=Xb;tb=Yb}}if((vb|0)==124){tb=Rb()|0;za=Q;Sqa(Zb);Ba=za;Ca=tb;Qb(Ca|0)}tb=m+56|0;za=m+4|0;k[m>>2]=27524;k[tb>>2]=27544;B=0;wa(508,m+56|0,za|0);la=B;B=0;if(la&1){la=Rb()|0;_b=Q;$b=la;vva(tb);Qb($b|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[tb>>2]=27488;B=0;va(448,za|0);la=B;B=0;do if(la&1){xa=Rb()|0;ac=Q;bc=xa}else{k[za>>2]=27560;xa=m+36|0;k[xa>>2]=0;k[xa+4>>2]=0;k[xa+8>>2]=0;k[xa+12>>2]=0;k[m+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,za|0,g|0);pa=B;B=0;if(pa&1){pa=Rb()|0;oa=Q;Yua(g);Yua(xa);Ava(za);ac=oa;bc=pa;break}Yua(g);B=0;pa=Ia(40,m|0,145010,13)|0;oa=B;B=0;l:do if(!(oa&1)?(B=0,Xa(239,pa|0,0)|0,na=B,B=0,!(na&1)):0){na=Ab(20)|0;B=0;eb(502,n|0,145024,86);qa=B;B=0;do if(!(qa&1)){B=0;eb(502,o|0,145111,11);ib=B;B=0;if(ib&1){ib=Rb()|0;ra=Q;Yua(n);cc=ra;dc=ib;break}B=0;wa(510,p|0,za|0);ib=B;B=0;if(ib&1){ib=Rb()|0;ec=Q;fc=ib;gc=1}else{B=0;ua(163,na|0,n|0,o|0,159,p|0);ib=B;B=0;if(ib&1)hc=1;else{B=0;eb(503,na|0,1240,229);B=0;hc=0}ib=Rb()|0;ra=Q;Yua(p);ec=ra;fc=ib;gc=hc}Yua(o);Yua(n);if(gc){cc=ec;dc=fc}else{ic=ec;jc=fc;break l}}else{ib=Rb()|0;cc=Q;dc=ib}while(0);zb(na|0);ic=cc;jc=dc}else vb=140;while(0);if((vb|0)==140){pa=Rb()|0;ic=Q;jc=pa}k[m>>2]=27468;k[tb>>2]=27488;k[za>>2]=27560;Yua(xa);Ava(za);vva(tb);Ba=ic;Ca=jc;Qb(Ca|0)}while(0);_b=ac;$b=bc;vva(tb);Qb($b|0)}break}case 743:{lqa(j,b);za=b+52|0;la=k[za>>2]|0;m:do if((la|0)>0){pa=b+36|0;oa=ka+1|0;qa=la;ib=0;ra=0;while(1){if(!(k[(k[pa>>2]|0)+(ib<<2)>>2]|0)){kc=qa;lc=ra}else{Na=Qqa(144)|0;B=0;Ka(13,Na|0,oa+ib|0,ib|0,ra|0,ib|0,b|0,c|0,e|0);jb=B;B=0;if(jb&1){mc=Na;break}ih(a,Na)|0;kc=k[za>>2]|0;lc=ra+1|0}ib=ib+1|0;if((ib|0)>=(kc|0)){nc=kc;oc=lc;break m}else{qa=kc;ra=lc}}ra=Rb()|0;qa=Q;Sqa(mc);Ba=qa;Ca=ra;Qb(Ca|0)}else{nc=la;oc=0}while(0);la=b+64|0;tb=k[la>>2]|0;do if((tb|0)>0){ra=ka+1|0;qa=tb;ib=0;oa=oc;while(1){if(!(i[(k[j>>2]|0)+ib>>0]|0)){pc=qa;qc=oa}else{pa=Qqa(144)|0;xa=k[za>>2]|0;B=0;Ka(13,pa|0,ra+ib+xa|0,xa+ib|0,oa|0,0,b|0,c|0,e|0);xa=B;B=0;if(xa&1){rc=pa;break}ih(a,pa)|0;pc=k[la>>2]|0;qc=oa+1|0}ib=ib+1|0;if((ib|0)>=(pc|0)){sc=pc;tc=qc;vb=163;break}else{qa=pc;oa=qc}}if((vb|0)==163){uc=sc;vc=k[za>>2]|0;wc=tc;break}oa=Rb()|0;qa=Q;Sqa(rc);Ba=qa;Ca=oa;Qb(Ca|0)}else{uc=tb;vc=nc;wc=oc}while(0);tb=uc+ka+vc|0;if((k[b+48>>2]|0)==625){mqa(h,b);oa=b+60|0;qa=k[oa>>2]|0;n:do if((qa|0)>0){ib=b+68|0;ra=b+76|0;pa=tb+1|0;xa=qa;Na=0;jb=wc;o:while(1){xc=(ma(k[ib>>2]|0,Na)|0)+2|0;switch(k[(k[ra>>2]|0)+(xc<<2)>>2]|0){case 2:{if(!(i[(k[h>>2]|0)+Na>>0]|0)){yc=xa;zc=jb}else{xc=Qqa(144)|0;B=0;Ka(13,xc|0,pa+Na|0,(k[za>>2]|0)+Na+(k[la>>2]|0)|0,jb|0,0,b|0,c|0,e|0);Ac=B;B=0;if(Ac&1){Bc=xc;vb=171;break o}ih(a,xc)|0;yc=k[oa>>2]|0;zc=jb+1|0}break}case 1:{yc=xa;zc=jb;break}default:break o}Na=Na+1|0;if((Na|0)>=(yc|0)){Cc=yc;Dc=zc;break n}else{xa=yc;jb=zc}}if((vb|0)==171){jb=Rb()|0;xa=Q;Sqa(Bc);Ba=xa;Ca=jb;Qb(Ca|0)}jb=q+56|0;xa=q+4|0;k[q>>2]=27524;k[jb>>2]=27544;B=0;wa(508,q+56|0,xa|0);Na=B;B=0;if(Na&1){Na=Rb()|0;Ec=Q;Fc=Na;vva(jb);Qb(Fc|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[jb>>2]=27488;B=0;va(448,xa|0);Na=B;B=0;do if(Na&1){pa=Rb()|0;Gc=Q;Hc=pa}else{k[xa>>2]=27560;pa=q+36|0;k[pa>>2]=0;k[pa+4>>2]=0;k[pa+8>>2]=0;k[pa+12>>2]=0;k[q+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,xa|0,g|0);ra=B;B=0;if(ra&1){ra=Rb()|0;ib=Q;Yua(g);Yua(pa);Ava(xa);Gc=ib;Hc=ra;break}Yua(g);B=0;ra=Ia(40,q|0,145010,13)|0;ib=B;B=0;p:do if(!(ib&1)?(B=0,Xa(239,ra|0,0)|0,xc=B,B=0,!(xc&1)):0){xc=Ab(20)|0;B=0;eb(502,s|0,145024,86);Ac=B;B=0;do if(!(Ac&1)){B=0;eb(502,t|0,145111,11);Ic=B;B=0;if(Ic&1){Ic=Rb()|0;Jc=Q;Yua(s);Kc=Jc;Lc=Ic;break}B=0;wa(510,u|0,xa|0);Ic=B;B=0;if(Ic&1){Ic=Rb()|0;Mc=1;Nc=Q;Oc=Ic}else{B=0;ua(163,xc|0,s|0,t|0,190,u|0);Ic=B;B=0;if(Ic&1)Pc=1;else{B=0;eb(503,xc|0,1240,229);B=0;Pc=0}Ic=Rb()|0;Jc=Q;Yua(u);Mc=Pc;Nc=Jc;Oc=Ic}Yua(t);Yua(s);if(Mc){Kc=Nc;Lc=Oc}else{Qc=Nc;Rc=Oc;break p}}else{Ic=Rb()|0;Kc=Q;Lc=Ic}while(0);zb(xc|0);Qc=Kc;Rc=Lc}else vb=187;while(0);if((vb|0)==187){ra=Rb()|0;Qc=Q;Rc=ra}k[q>>2]=27468;k[jb>>2]=27488;k[xa>>2]=27560;Yua(pa);Ava(xa);vva(jb);Ba=Qc;Ca=Rc;Qb(Ca|0)}while(0);Ec=Gc;Fc=Hc;vva(jb);Qb(Fc|0)}else{Cc=qa;Dc=wc}while(0);Sc=Cc+tb|0;Tc=Dc}else{Sc=tb;Tc=wc}qa=b+56|0;oa=k[qa>>2]|0;if((oa|0)>0){la=b+32|0;za=Sc+1|0;xa=oa;oa=0;Na=Tc;while(1){if(!(i[(k[la>>2]|0)+oa>>0]|0)){Uc=xa;Vc=Na}else{ra=Qqa(144)|0;B=0;Ka(13,ra|0,za+oa|0,oa+Sc-(k[ja>>2]|0)|0,Na|0,0,b|0,c|0,e|0);ib=B;B=0;if(ib&1){Wc=ra;break}ih(a,ra)|0;Uc=k[qa>>2]|0;Vc=Na+1|0}oa=oa+1|0;if((oa|0)>=(Uc|0))break a;else{xa=Uc;Na=Vc}}Na=Rb()|0;xa=Q;Sqa(Wc);Ba=xa;Ca=Na;Qb(Ca|0)}break}case 748:{lqa(j,b);mqa(h,b);Na=b+52|0;xa=k[Na>>2]|0;q:do if((xa|0)>0){oa=b+36|0;qa=ka+1|0;za=xa;la=0;tb=0;while(1){if(!(k[(k[oa>>2]|0)+(la<<2)>>2]|0)){Xc=za;Yc=tb}else{ra=Qqa(144)|0;B=0;Ka(13,ra|0,qa+la|0,la|0,tb|0,la|0,b|0,c|0,e|0);ib=B;B=0;if(ib&1){Zc=ra;break}ih(a,ra)|0;Xc=k[Na>>2]|0;Yc=tb+1|0}la=la+1|0;if((la|0)>=(Xc|0)){_c=Xc;$c=Yc;break q}else{za=Xc;tb=Yc}}tb=Rb()|0;za=Q;Sqa(Zc);Ba=za;Ca=tb;Qb(Ca|0)}else{_c=xa;$c=0}while(0);xa=b+64|0;tb=k[xa>>2]|0;r:do if((tb|0)>0){za=b+80|0;la=ka+1|0;qa=ka+2|0;oa=ka+3|0;jb=_c;ra=0;ib=$c;s:while(1){na=ra*3|0;t:do switch(k[(k[za>>2]|0)+(na+2<<2)>>2]|0){case 2:{if(!(i[(k[j>>2]|0)+ra>>0]|0)){ad=jb+3|0;bd=ib;break t}Ac=Qqa(144)|0;B=0;Ka(13,Ac|0,la+na+(k[Na>>2]|0)|0,jb+1|0,ib|0,0,b|0,c|0,e|0);Ic=B;B=0;if(Ic&1){cd=Ac;vb=220;break s}ih(a,Ac)|0;Ac=Qqa(144)|0;B=0;Ka(13,Ac|0,qa+na+(k[Na>>2]|0)|0,jb+2|0,ib+1|0,0,b|0,c|0,e|0);Ic=B;B=0;if(Ic&1){dd=Ac;vb=221;break s}ih(a,Ac)|0;Ac=Qqa(144)|0;Ic=jb+3|0;B=0;Ka(13,Ac|0,oa+na+(k[Na>>2]|0)|0,Ic|0,ib+2|0,0,b|0,c|0,e|0);Jc=B;B=0;if(Jc&1){ed=Ac;vb=222;break s}ih(a,Ac)|0;ad=Ic;bd=ib+3|0;break}case 1:{if(!(i[(k[j>>2]|0)+ra>>0]|0)){ad=jb+1|0;bd=ib;break t}Ic=Qqa(144)|0;Ac=jb+1|0;B=0;Ka(13,Ic|0,la+na+(k[Na>>2]|0)|0,Ac|0,ib|0,0,b|0,c|0,e|0);Jc=B;B=0;if(Jc&1){fd=Ic;vb=227;break s}ih(a,Ic)|0;ad=Ac;bd=ib+1|0;break}default:{vb=228;break s}}while(0);ra=ra+1|0;na=k[xa>>2]|0;if((ra|0)>=(na|0)){gd=na;hd=ad;id=bd;break r}else{jb=ad;ib=bd}}if((vb|0)==220){ib=Rb()|0;jb=Q;Sqa(cd);Ba=jb;Ca=ib;Qb(Ca|0)}else if((vb|0)==221){ib=Rb()|0;jb=Q;Sqa(dd);Ba=jb;Ca=ib;Qb(Ca|0)}else if((vb|0)==222){ib=Rb()|0;jb=Q;Sqa(ed);Ba=jb;Ca=ib;Qb(Ca|0)}else if((vb|0)==227){ib=Rb()|0;jb=Q;Sqa(fd);Ba=jb;Ca=ib;Qb(Ca|0)}else if((vb|0)==228){ib=v+56|0;jb=v+4|0;k[v>>2]=27524;k[ib>>2]=27544;B=0;wa(508,v+56|0,jb|0);ra=B;B=0;if(ra&1){ra=Rb()|0;jd=Q;kd=ra;vva(ib);Qb(kd|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[ib>>2]=27488;B=0;va(448,jb|0);ra=B;B=0;do if(ra&1){la=Rb()|0;ld=Q;md=la}else{k[jb>>2]=27560;la=v+36|0;k[la>>2]=0;k[la+4>>2]=0;k[la+8>>2]=0;k[la+12>>2]=0;k[v+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,jb|0,g|0);oa=B;B=0;if(oa&1){oa=Rb()|0;qa=Q;Yua(g);Yua(la);Ava(jb);ld=qa;md=oa;break}Yua(g);B=0;oa=Ia(40,v|0,145010,13)|0;qa=B;B=0;u:do if(!(qa&1)?(B=0,Xa(239,oa|0,0)|0,za=B,B=0,!(za&1)):0){za=Ab(20)|0;B=0;eb(502,w|0,145024,86);na=B;B=0;do if(!(na&1)){B=0;eb(502,x|0,145111,11);pa=B;B=0;if(pa&1){pa=Rb()|0;Ac=Q;Yua(w);nd=Ac;od=pa;break}B=0;wa(510,y|0,jb|0);pa=B;B=0;if(pa&1){pa=Rb()|0;pd=1;qd=Q;rd=pa}else{B=0;ua(163,za|0,w|0,x|0,230,y|0);pa=B;B=0;if(pa&1)sd=1;else{B=0;eb(503,za|0,1240,229);B=0;sd=0}pa=Rb()|0;Ac=Q;Yua(y);pd=sd;qd=Ac;rd=pa}Yua(x);Yua(w);if(pd){nd=qd;od=rd}else{td=qd;ud=rd;break u}}else{pa=Rb()|0;nd=Q;od=pa}while(0);zb(za|0);td=nd;ud=od}else vb=243;while(0);if((vb|0)==243){oa=Rb()|0;td=Q;ud=oa}k[v>>2]=27468;k[ib>>2]=27488;k[jb>>2]=27560;Yua(la);Ava(jb);vva(ib);Ba=td;Ca=ud;Qb(Ca|0)}while(0);jd=ld;kd=md;vva(ib);Qb(kd|0)}}else{gd=tb;hd=_c;id=$c}while(0);tb=b+60|0;xa=k[tb>>2]|0;if((xa|0)>0){jb=b+68|0;ra=b+76|0;oa=(k[Na>>2]|0)+ka|0;qa=xa;xa=hd;na=0;xc=id;v:while(1){pa=(ma(k[jb>>2]|0,na)|0)+2|0;w:do switch(k[(k[ra>>2]|0)+(pa<<2)>>2]|0){case 2:{if(!(i[(k[h>>2]|0)+na>>0]|0)){vd=qa;wd=xa+3|0;xd=xc;break w}Ac=Qqa(144)|0;Ic=oa+((na+gd|0)*3|0)|0;B=0;Ka(13,Ac|0,Ic+1|0,xa+1|0,xc|0,0,b|0,c|0,e|0);Jc=B;B=0;if(Jc&1){yd=Ac;vb=261;break v}ih(a,Ac)|0;Ac=Qqa(144)|0;B=0;Ka(13,Ac|0,Ic+2|0,xa+2|0,xc+1|0,0,b|0,c|0,e|0);Jc=B;B=0;if(Jc&1){zd=Ac;vb=262;break v}ih(a,Ac)|0;Ac=Qqa(144)|0;Jc=xa+3|0;B=0;Ka(13,Ac|0,Ic+3|0,Jc|0,xc+2|0,0,b|0,c|0,e|0);Ic=B;B=0;if(Ic&1){Ad=Ac;vb=263;break v}ih(a,Ac)|0;vd=k[tb>>2]|0;wd=Jc;xd=xc+3|0;break}case 1:{vd=qa;wd=xa;xd=xc;break}default:{vb=264;break v}}while(0);na=na+1|0;if((na|0)>=(vd|0))break a;else{qa=vd;xa=wd;xc=xd}}if((vb|0)==261){xc=Rb()|0;xa=Q;Sqa(yd);Ba=xa;Ca=xc;Qb(Ca|0)}else if((vb|0)==262){xc=Rb()|0;xa=Q;Sqa(zd);Ba=xa;Ca=xc;Qb(Ca|0)}else if((vb|0)==263){xc=Rb()|0;xa=Q;Sqa(Ad);Ba=xa;Ca=xc;Qb(Ca|0)}else if((vb|0)==264){xc=z+56|0;xa=z+4|0;k[z>>2]=27524;k[xc>>2]=27544;B=0;wa(508,z+56|0,xa|0);qa=B;B=0;if(qa&1){qa=Rb()|0;Bd=Q;Cd=qa;vva(xc);Qb(Cd|0)}k[z+128>>2]=0;k[z+132>>2]=-1;k[z>>2]=27468;k[xc>>2]=27488;B=0;va(448,xa|0);qa=B;B=0;do if(qa&1){na=Rb()|0;Dd=Q;Ed=na}else{k[xa>>2]=27560;na=z+36|0;k[na>>2]=0;k[na+4>>2]=0;k[na+8>>2]=0;k[na+12>>2]=0;k[z+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,xa|0,g|0);tb=B;B=0;if(tb&1){tb=Rb()|0;oa=Q;Yua(g);Yua(na);Ava(xa);Dd=oa;Ed=tb;break}Yua(g);B=0;tb=Ia(40,z|0,145010,13)|0;oa=B;B=0;x:do if(!(oa&1)?(B=0,Xa(239,tb|0,0)|0,ra=B,B=0,!(ra&1)):0){ra=Ab(20)|0;B=0;eb(502,A|0,145024,86);jb=B;B=0;do if(!(jb&1)){B=0;eb(502,C|0,145111,11);Na=B;B=0;if(Na&1){Na=Rb()|0;pa=Q;Yua(A);Fd=pa;Gd=Na;break}B=0;wa(510,D|0,xa|0);Na=B;B=0;if(Na&1){Na=Rb()|0;Hd=Q;Id=Na;Jd=1}else{B=0;ua(163,ra|0,A|0,C|0,250,D|0);Na=B;B=0;if(Na&1)Kd=1;else{B=0;eb(503,ra|0,1240,229);B=0;Kd=0}Na=Rb()|0;pa=Q;Yua(D);Hd=pa;Id=Na;Jd=Kd}Yua(C);Yua(A);if(Jd){Fd=Hd;Gd=Id}else{Ld=Hd;Md=Id;break x}}else{Na=Rb()|0;Fd=Q;Gd=Na}while(0);zb(ra|0);Ld=Fd;Md=Gd}else vb=279;while(0);if((vb|0)==279){tb=Rb()|0;Ld=Q;Md=tb}k[z>>2]=27468;k[xc>>2]=27488;k[xa>>2]=27560;Yua(na);Ava(xa);vva(xc);Ba=Ld;Ca=Md;Qb(Ca|0)}while(0);Bd=Dd;Cd=Ed;vva(xc);Qb(Cd|0)}}break}case 749:{xa=b+52|0;qa=k[xa>>2]|0;if((qa|0)>0){tb=b+36|0;oa=ka+1|0;jb=qa;qa=0;la=0;while(1){if(!(k[(k[tb>>2]|0)+(qa<<2)>>2]|0)){Nd=jb;Od=la}else{Na=Qqa(144)|0;B=0;Ka(13,Na|0,oa+qa|0,qa|0,la|0,qa|0,b|0,c|0,543);pa=B;B=0;if(pa&1){Pd=Na;vb=291;break}ih(a,Na)|0;Nd=k[xa>>2]|0;Od=la+1|0}qa=qa+1|0;if((qa|0)>=(Nd|0)){Qd=Nd;Rd=Od;break}else{jb=Nd;la=Od}}if((vb|0)==291){la=Rb()|0;jb=Q;Sqa(Pd);Ba=jb;Ca=la;Qb(Ca|0)}if((Qd|0)>0){la=b+36|0;jb=ka+1+Qd|0;qa=Qd;oa=0;tb=Rd;while(1){if(!(k[(k[la>>2]|0)+(oa<<2)>>2]|0)){Sd=qa;Td=tb}else{xc=Qqa(144)|0;B=0;Ka(13,xc|0,jb+oa|0,qa+oa|0,tb|0,oa|0,b|0,c|0,544);Na=B;B=0;if(Na&1){Ud=xc;break}ih(a,xc)|0;Sd=k[xa>>2]|0;Td=tb+1|0}oa=oa+1|0;if((oa|0)>=(Sd|0))break a;else{qa=Sd;tb=Td}}tb=Rb()|0;qa=Q;Sqa(Ud);Ba=qa;Ca=tb;Qb(Ca|0)}}break}case 750:{tb=b+52|0;qa=k[tb>>2]|0;if((qa|0)>0){oa=b+36|0;xa=ka+1|0;jb=qa;qa=0;la=0;while(1){if(!(k[(k[oa>>2]|0)+(qa<<2)>>2]|0)){Vd=jb;Wd=la}else{xc=Qqa(144)|0;B=0;Ka(13,xc|0,xa+qa|0,qa|0,la|0,qa|0,b|0,c|0,543);Na=B;B=0;if(Na&1){Xd=xc;vb=303;break}ih(a,xc)|0;Vd=k[tb>>2]|0;Wd=la+1|0}qa=qa+1|0;if((qa|0)>=(Vd|0)){Yd=Vd;Zd=Wd;break}else{jb=Vd;la=Wd}}if((vb|0)==303){la=Rb()|0;jb=Q;Sqa(Xd);Ba=jb;Ca=la;Qb(Ca|0)}if((Yd|0)>0){la=b+36|0;jb=ka+1+Yd|0;qa=Yd;xa=0;oa=Zd;while(1){if(!(k[(k[la>>2]|0)+(xa<<2)>>2]|0)){_d=qa;$d=oa}else{xc=Qqa(144)|0;B=0;Ka(13,xc|0,jb+xa|0,qa+xa|0,oa|0,xa|0,b|0,c|0,544);Na=B;B=0;if(Na&1){ae=xc;break}ih(a,xc)|0;_d=k[tb>>2]|0;$d=oa+1|0}xa=xa+1|0;if((xa|0)>=(_d|0))break a;else{qa=_d;oa=$d}}oa=Rb()|0;qa=Q;Sqa(ae);Ba=qa;Ca=oa;Qb(Ca|0)}}break}case 752:{oa=b+52|0;qa=k[oa>>2]|0;y:do if((qa|0)>0){xa=b+36|0;tb=ka+1|0;jb=qa;la=0;xc=0;while(1){if(!(k[(k[xa>>2]|0)+(la<<2)>>2]|0)){be=jb;ce=xc}else{Na=Qqa(144)|0;B=0;Ka(13,Na|0,tb+la|0,la|0,xc|0,la|0,b|0,c|0,543);pa=B;B=0;if(pa&1){de=Na;break}ih(a,Na)|0;be=k[oa>>2]|0;ce=xc+1|0}la=la+1|0;if((la|0)>=(be|0)){ee=be;fe=ce;break y}else{jb=be;xc=ce}}xc=Rb()|0;jb=Q;Sqa(de);Ba=jb;Ca=xc;Qb(Ca|0)}else{ee=qa;fe=0}while(0);qa=b+56|0;xc=k[qa>>2]|0;do if((xc|0)>0){jb=b+32|0;la=ka+1|0;tb=xc;xa=0;na=fe;while(1){if(!(i[(k[jb>>2]|0)+xa>>0]|0)){ge=tb;he=na}else{Na=Qqa(144)|0;pa=k[oa>>2]|0;B=0;Ka(13,Na|0,la+xa+pa|0,pa+xa|0,na|0,0,b|0,c|0,543);pa=B;B=0;if(pa&1){ie=Na;break}En(Na);ih(a,Na)|0;ge=k[qa>>2]|0;he=na+1|0}xa=xa+1|0;if((xa|0)>=(ge|0)){je=ge;ke=he;vb=324;break}else{tb=ge;na=he}}if((vb|0)==324){le=je;me=k[oa>>2]|0;ne=ke;break}na=Rb()|0;tb=Q;Sqa(ie);Ba=tb;Ca=na;Qb(Ca|0)}else{le=xc;me=ee;ne=fe}while(0);if((me|0)>0){xc=b+36|0;na=ka+1+le+me|0;tb=me;xa=0;la=ne;while(1){if(!(k[(k[xc>>2]|0)+(xa<<2)>>2]|0)){oe=tb;pe=la}else{jb=Qqa(144)|0;B=0;Ka(13,jb|0,na+xa|0,tb+xa+(k[qa>>2]|0)|0,la|0,xa|0,b|0,c|0,544);Na=B;B=0;if(Na&1){qe=jb;break}ih(a,jb)|0;oe=k[oa>>2]|0;pe=la+1|0}xa=xa+1|0;if((xa|0)>=(oe|0))break a;else{tb=oe;la=pe}}la=Rb()|0;tb=Q;Sqa(qe);Ba=tb;Ca=la;Qb(Ca|0)}break}case 751:{la=b+52|0;tb=k[la>>2]|0;z:do if((tb|0)>0){xa=b+36|0;oa=ka+1|0;qa=tb;na=0;xc=0;while(1){if(!(k[(k[xa>>2]|0)+(na<<2)>>2]|0)){re=qa;se=xc}else{jb=Qqa(144)|0;B=0;Ka(13,jb|0,oa+na|0,na|0,xc|0,na|0,b|0,c|0,543);Na=B;B=0;if(Na&1){te=jb;break}ih(a,jb)|0;re=k[la>>2]|0;se=xc+1|0}na=na+1|0;if((na|0)>=(re|0)){ue=re;ve=se;break z}else{qa=re;xc=se}}xc=Rb()|0;qa=Q;Sqa(te);Ba=qa;Ca=xc;Qb(Ca|0)}else{ue=tb;ve=0}while(0);tb=b+56|0;xc=k[tb>>2]|0;do if((xc|0)>0){qa=b+32|0;na=ka+1|0;oa=xc;xa=0;jb=ve;while(1){if(!(i[(k[qa>>2]|0)+xa>>0]|0)){we=oa;xe=jb}else{Na=Qqa(144)|0;pa=k[la>>2]|0;B=0;Ka(13,Na|0,na+xa+pa|0,pa+xa|0,jb|0,0,b|0,c|0,543);pa=B;B=0;if(pa&1){ye=Na;break}ih(a,Na)|0;we=k[tb>>2]|0;xe=jb+1|0}xa=xa+1|0;if((xa|0)>=(we|0)){ze=we;Ae=xe;vb=344;break}else{oa=we;jb=xe}}if((vb|0)==344){Be=ze;Ce=k[la>>2]|0;De=Ae;break}jb=Rb()|0;oa=Q;Sqa(ye);Ba=oa;Ca=jb;Qb(Ca|0)}else{Be=xc;Ce=ue;De=ve}while(0);if((Ce|0)>0){xc=b+36|0;jb=ka+1+Be+Ce|0;oa=Ce;xa=0;na=De;while(1){if(!(k[(k[xc>>2]|0)+(xa<<2)>>2]|0)){Ee=oa;Fe=na}else{qa=Qqa(144)|0;B=0;Ka(13,qa|0,jb+xa|0,oa+xa+(k[tb>>2]|0)|0,na|0,xa|0,b|0,c|0,544);Na=B;B=0;if(Na&1){Ge=qa;break}ih(a,qa)|0;Ee=k[la>>2]|0;Fe=na+1|0}xa=xa+1|0;if((xa|0)>=(Ee|0))break a;else{oa=Ee;na=Fe}}na=Rb()|0;oa=Q;Sqa(Ge);Ba=oa;Ca=na;Qb(Ca|0)}break}case 755:case 753:{lqa(j,b);na=b+52|0;oa=k[na>>2]|0;A:do if((oa|0)>0){xa=b+36|0;la=ka+1|0;tb=oa;jb=0;xc=0;while(1){if(!(k[(k[xa>>2]|0)+(jb<<2)>>2]|0)){He=tb;Ie=xc}else{qa=Qqa(144)|0;B=0;Ka(13,qa|0,la+jb|0,jb|0,xc|0,jb|0,b|0,c|0,543);Na=B;B=0;if(Na&1){Je=qa;break}ih(a,qa)|0;He=k[na>>2]|0;Ie=xc+1|0}jb=jb+1|0;if((jb|0)>=(He|0)){Ke=He;Le=Ie;break A}else{tb=He;xc=Ie}}xc=Rb()|0;tb=Q;Sqa(Je);Ba=tb;Ca=xc;Qb(Ca|0)}else{Ke=oa;Le=0}while(0);oa=b+64|0;xc=k[oa>>2]|0;do if((xc|0)>0){tb=ka+1|0;jb=xc;la=0;xa=Le;while(1){if(!(i[(k[j>>2]|0)+la>>0]|0)){Me=jb;Ne=xa}else{qa=Qqa(144)|0;Na=k[na>>2]|0;B=0;Ka(13,qa|0,tb+la+Na|0,Na+la|0,xa|0,0,b|0,c|0,543);Na=B;B=0;if(Na&1){Oe=qa;break}ih(a,qa)|0;Me=k[oa>>2]|0;Ne=xa+1|0}la=la+1|0;if((la|0)>=(Me|0)){Pe=Me;Qe=Ne;vb=366;break}else{jb=Me;xa=Ne}}if((vb|0)==366){Re=Pe;Se=k[na>>2]|0;Te=Qe;break}xa=Rb()|0;jb=Q;Sqa(Oe);Ba=jb;Ca=xa;Qb(Ca|0)}else{Re=xc;Se=Ke;Te=Le}while(0);xc=Re+ka+Se|0;xa=b+48|0;if((k[xa>>2]|0)==625){mqa(h,b);jb=b+60|0;la=k[jb>>2]|0;B:do if((la|0)>0){tb=b+68|0;qa=b+76|0;Na=xc+1|0;pa=la;ib=0;Jc=Te;C:while(1){Ac=(ma(k[tb>>2]|0,ib)|0)+2|0;switch(k[(k[qa>>2]|0)+(Ac<<2)>>2]|0){case 2:{if(!(i[(k[h>>2]|0)+ib>>0]|0)){Ue=pa;Ve=Jc}else{Ac=Qqa(144)|0;B=0;Ka(13,Ac|0,Na+ib|0,(k[na>>2]|0)+ib+(k[oa>>2]|0)|0,Jc|0,0,b|0,c|0,543);Ic=B;B=0;if(Ic&1){We=Ac;vb=374;break C}ih(a,Ac)|0;Ue=k[jb>>2]|0;Ve=Jc+1|0}break}case 1:{Ue=pa;Ve=Jc;break}default:break C}ib=ib+1|0;if((ib|0)>=(Ue|0)){Xe=Ue;Ye=Ve;break B}else{pa=Ue;Jc=Ve}}if((vb|0)==374){Jc=Rb()|0;pa=Q;Sqa(We);Ba=pa;Ca=Jc;Qb(Ca|0)}Jc=E+56|0;pa=E+4|0;k[E>>2]=27524;k[Jc>>2]=27544;B=0;wa(508,E+56|0,pa|0);ib=B;B=0;if(ib&1){ib=Rb()|0;Ze=Q;_e=ib;vva(Jc);Qb(_e|0)}k[E+128>>2]=0;k[E+132>>2]=-1;k[E>>2]=27468;k[Jc>>2]=27488;B=0;va(448,pa|0);ib=B;B=0;do if(ib&1){Na=Rb()|0;$e=Q;af=Na}else{k[pa>>2]=27560;Na=E+36|0;k[Na>>2]=0;k[Na+4>>2]=0;k[Na+8>>2]=0;k[Na+12>>2]=0;k[E+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,pa|0,g|0);qa=B;B=0;if(qa&1){qa=Rb()|0;tb=Q;Yua(g);Yua(Na);Ava(pa);$e=tb;af=qa;break}Yua(g);B=0;qa=Ia(40,E|0,145010,13)|0;tb=B;B=0;D:do if(!(tb&1)?(B=0,Xa(239,qa|0,0)|0,Ac=B,B=0,!(Ac&1)):0){Ac=Ab(20)|0;B=0;eb(502,F|0,145024,86);Ic=B;B=0;do if(!(Ic&1)){B=0;eb(502,G|0,145111,11);bf=B;B=0;if(bf&1){bf=Rb()|0;cf=Q;Yua(F);df=cf;ef=bf;break}B=0;wa(510,H|0,pa|0);bf=B;B=0;if(bf&1){bf=Rb()|0;ff=1;gf=Q;hf=bf}else{B=0;ua(163,Ac|0,F|0,G|0,361,H|0);bf=B;B=0;if(bf&1)jf=1;else{B=0;eb(503,Ac|0,1240,229);B=0;jf=0}bf=Rb()|0;cf=Q;Yua(H);ff=jf;gf=cf;hf=bf}Yua(G);Yua(F);if(ff){df=gf;ef=hf}else{kf=gf;lf=hf;break D}}else{bf=Rb()|0;df=Q;ef=bf}while(0);zb(Ac|0);kf=df;lf=ef}else vb=390;while(0);if((vb|0)==390){qa=Rb()|0;kf=Q;lf=qa}k[E>>2]=27468;k[Jc>>2]=27488;k[pa>>2]=27560;Yua(Na);Ava(pa);vva(Jc);Ba=kf;Ca=lf;Qb(Ca|0)}while(0);Ze=$e;_e=af;vva(Jc);Qb(_e|0)}else{Xe=la;Ye=Te}while(0);mf=Ye;nf=(k[xa>>2]|0)==625?Xe:0}else{mf=Te;nf=0}la=k[na>>2]|0;if((la|0)>0){jb=b+36|0;pa=xc+1+nf|0;ib=la;la=0;qa=mf;while(1){if(!(k[(k[jb>>2]|0)+(la<<2)>>2]|0)){of=ib;pf=qa}else{tb=Qqa(144)|0;B=0;Ka(13,tb|0,pa+la|0,la+nf+ib+(k[oa>>2]|0)|0,qa|0,la|0,b|0,c|0,544);ra=B;B=0;if(ra&1){qf=tb;break}ih(a,tb)|0;of=k[na>>2]|0;pf=qa+1|0}la=la+1|0;if((la|0)>=(of|0))break a;else{ib=of;qa=pf}}qa=Rb()|0;ib=Q;Sqa(qf);Ba=ib;Ca=qa;Qb(Ca|0)}break}case 754:{lqa(j,b);qa=b+52|0;ib=k[qa>>2]|0;E:do if((ib|0)>0){la=b+36|0;na=ka+1|0;oa=ib;pa=0;jb=0;while(1){if(!(k[(k[la>>2]|0)+(pa<<2)>>2]|0)){rf=oa;sf=jb}else{xc=Qqa(144)|0;B=0;Ka(13,xc|0,na+pa|0,pa|0,jb|0,pa|0,b|0,c|0,543);xa=B;B=0;if(xa&1){tf=xc;break}ih(a,xc)|0;rf=k[qa>>2]|0;sf=jb+1|0}pa=pa+1|0;if((pa|0)>=(rf|0)){uf=rf;vf=sf;break E}else{oa=rf;jb=sf}}jb=Rb()|0;oa=Q;Sqa(tf);Ba=oa;Ca=jb;Qb(Ca|0)}else{uf=ib;vf=0}while(0);ib=b+64|0;jb=k[ib>>2]|0;do if((jb|0)>0){oa=ka+1|0;pa=jb;na=0;la=vf;while(1){if(!(i[(k[j>>2]|0)+na>>0]|0)){wf=pa;xf=la}else{Jc=Qqa(144)|0;xc=k[qa>>2]|0;B=0;Ka(13,Jc|0,oa+na+xc|0,xc+na|0,la|0,0,b|0,c|0,543);xc=B;B=0;if(xc&1){yf=Jc;break}ih(a,Jc)|0;wf=k[ib>>2]|0;xf=la+1|0}na=na+1|0;if((na|0)>=(wf|0)){zf=wf;Af=xf;vb=421;break}else{pa=wf;la=xf}}if((vb|0)==421){Bf=zf;Cf=k[qa>>2]|0;Df=Af;break}la=Rb()|0;pa=Q;Sqa(yf);Ba=pa;Ca=la;Qb(Ca|0)}else{Bf=jb;Cf=uf;Df=vf}while(0);if((k[b+48>>2]|0)==625?(mqa(h,b),jb=b+60|0,la=k[jb>>2]|0,(la|0)>0):0){pa=b+68|0;na=b+76|0;oa=ka+1+Bf+Cf|0;Jc=la;la=0;xc=Df;F:while(1){xa=(ma(k[pa>>2]|0,la)|0)+2|0;switch(k[(k[na>>2]|0)+(xa<<2)>>2]|0){case 2:{if(!(i[(k[h>>2]|0)+la>>0]|0)){Ef=Jc;Ff=xc}else{xa=Qqa(144)|0;B=0;Ka(13,xa|0,oa+la|0,(k[qa>>2]|0)+la+(k[ib>>2]|0)|0,xc|0,0,b|0,c|0,543);tb=B;B=0;if(tb&1){Gf=xa;vb=429;break F}ih(a,xa)|0;Ef=k[jb>>2]|0;Ff=xc+1|0}break}case 1:{Ef=Jc;Ff=xc;break}default:break F}la=la+1|0;if((la|0)>=(Ef|0))break a;else{Jc=Ef;xc=Ff}}if((vb|0)==429){xc=Rb()|0;Jc=Q;Sqa(Gf);Ba=Jc;Ca=xc;Qb(Ca|0)}xc=I+56|0;Jc=I+4|0;k[I>>2]=27524;k[xc>>2]=27544;B=0;wa(508,I+56|0,Jc|0);la=B;B=0;if(la&1){la=Rb()|0;Hf=Q;If=la;vva(xc);Qb(If|0)}k[I+128>>2]=0;k[I+132>>2]=-1;k[I>>2]=27468;k[xc>>2]=27488;B=0;va(448,Jc|0);la=B;B=0;do if(la&1){jb=Rb()|0;Jf=Q;Kf=jb}else{k[Jc>>2]=27560;jb=I+36|0;k[jb>>2]=0;k[jb+4>>2]=0;k[jb+8>>2]=0;k[jb+12>>2]=0;k[I+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,Jc|0,g|0);ib=B;B=0;if(ib&1){ib=Rb()|0;qa=Q;Yua(g);Yua(jb);Ava(Jc);Jf=qa;Kf=ib;break}Yua(g);B=0;ib=Ia(40,I|0,145010,13)|0;qa=B;B=0;G:do if(!(qa&1)?(B=0,Xa(239,ib|0,0)|0,oa=B,B=0,!(oa&1)):0){oa=Ab(20)|0;B=0;eb(502,J|0,145024,86);na=B;B=0;do if(!(na&1)){B=0;eb(502,K|0,145111,11);pa=B;B=0;if(pa&1){pa=Rb()|0;xa=Q;Yua(J);Lf=xa;Mf=pa;break}B=0;wa(510,L|0,Jc|0);pa=B;B=0;if(pa&1){pa=Rb()|0;Nf=1;Of=Q;Pf=pa}else{B=0;ua(163,oa|0,J|0,K|0,408,L|0);pa=B;B=0;if(pa&1)Qf=1;else{B=0;eb(503,oa|0,1240,229);B=0;Qf=0}pa=Rb()|0;xa=Q;Yua(L);Nf=Qf;Of=xa;Pf=pa}Yua(K);Yua(J);if(Nf){Lf=Of;Mf=Pf}else{Rf=Of;Sf=Pf;break G}}else{pa=Rb()|0;Lf=Q;Mf=pa}while(0);zb(oa|0);Rf=Lf;Sf=Mf}else vb=445;while(0);if((vb|0)==445){ib=Rb()|0;Rf=Q;Sf=ib}k[I>>2]=27468;k[xc>>2]=27488;k[Jc>>2]=27560;Yua(jb);Ava(Jc);vva(xc);Ba=Rf;Ca=Sf;Qb(Ca|0)}while(0);Hf=Jf;If=Kf;vva(xc);Qb(If|0)}break}case 756:{lqa(j,b);mqa(h,b);Jc=b+52|0;la=k[Jc>>2]|0;H:do if((la|0)>0){ib=b+36|0;qa=ka+1|0;na=la;Na=0;pa=0;while(1){if(!(k[(k[ib>>2]|0)+(Na<<2)>>2]|0)){Tf=na;Uf=pa}else{xa=Qqa(144)|0;B=0;Ka(13,xa|0,qa+Na|0,Na|0,pa|0,Na|0,b|0,c|0,543);tb=B;B=0;if(tb&1){Vf=xa;break}ih(a,xa)|0;Tf=k[Jc>>2]|0;Uf=pa+1|0}Na=Na+1|0;if((Na|0)>=(Tf|0)){Wf=Tf;Xf=Uf;break H}else{na=Tf;pa=Uf}}pa=Rb()|0;na=Q;Sqa(Vf);Ba=na;Ca=pa;Qb(Ca|0)}else{Wf=la;Xf=0}while(0);la=b+64|0;xc=k[la>>2]|0;do if((xc|0)>0){pa=b+80|0;na=ka+1|0;Na=ka+2|0;qa=ka+3|0;ib=Wf;jb=0;xa=Xf;I:while(1){tb=jb*3|0;J:do switch(k[(k[pa>>2]|0)+(tb+2<<2)>>2]|0){case 2:{if(!(i[(k[j>>2]|0)+jb>>0]|0)){Yf=ib+3|0;Zf=xa;break J}ra=Qqa(144)|0;B=0;Ka(13,ra|0,na+tb+(k[Jc>>2]|0)|0,ib+1|0,xa|0,0,b|0,c|0,543);Ic=B;B=0;if(Ic&1){_f=ra;vb=470;break I}ih(a,ra)|0;ra=Qqa(144)|0;B=0;Ka(13,ra|0,Na+tb+(k[Jc>>2]|0)|0,ib+2|0,xa+1|0,0,b|0,c|0,543);Ic=B;B=0;if(Ic&1){$f=ra;vb=471;break I}ih(a,ra)|0;ra=Qqa(144)|0;Ic=ib+3|0;B=0;Ka(13,ra|0,qa+tb+(k[Jc>>2]|0)|0,Ic|0,xa+2|0,0,b|0,c|0,543);za=B;B=0;if(za&1){ag=ra;vb=472;break I}ih(a,ra)|0;Yf=Ic;Zf=xa+3|0;break}case 1:{if(!(i[(k[j>>2]|0)+jb>>0]|0)){Yf=ib+1|0;Zf=xa;break J}Ic=Qqa(144)|0;ra=ib+1|0;B=0;Ka(13,Ic|0,na+tb+(k[Jc>>2]|0)|0,ra|0,xa|0,0,b|0,c|0,543);za=B;B=0;if(za&1){bg=Ic;vb=477;break I}ih(a,Ic)|0;Yf=ra;Zf=xa+1|0;break}default:{vb=478;break I}}while(0);jb=jb+1|0;tb=k[la>>2]|0;if((jb|0)>=(tb|0)){cg=tb;dg=Yf;eg=Zf;vb=502;break}else{ib=Yf;xa=Zf}}if((vb|0)==470){xa=Rb()|0;ib=Q;Sqa(_f);Ba=ib;Ca=xa;Qb(Ca|0)}else if((vb|0)==471){xa=Rb()|0;ib=Q;Sqa($f);Ba=ib;Ca=xa;Qb(Ca|0)}else if((vb|0)==472){xa=Rb()|0;ib=Q;Sqa(ag);Ba=ib;Ca=xa;Qb(Ca|0)}else if((vb|0)==477){xa=Rb()|0;ib=Q;Sqa(bg);Ba=ib;Ca=xa;Qb(Ca|0)}else if((vb|0)==478){xa=M+56|0;ib=M+4|0;k[M>>2]=27524;k[xa>>2]=27544;B=0;wa(508,M+56|0,ib|0);jb=B;B=0;if(jb&1){jb=Rb()|0;fg=Q;gg=jb;vva(xa);Qb(gg|0)}k[M+128>>2]=0;k[M+132>>2]=-1;k[M>>2]=27468;k[xa>>2]=27488;B=0;va(448,ib|0);jb=B;B=0;do if(jb&1){na=Rb()|0;hg=Q;ig=na}else{k[ib>>2]=27560;na=M+36|0;k[na>>2]=0;k[na+4>>2]=0;k[na+8>>2]=0;k[na+12>>2]=0;k[M+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,ib|0,g|0);qa=B;B=0;if(qa&1){qa=Rb()|0;Na=Q;Yua(g);Yua(na);Ava(ib);hg=Na;ig=qa;break}Yua(g);B=0;qa=Ia(40,M|0,145010,13)|0;Na=B;B=0;K:do if(!(Na&1)?(B=0,Xa(239,qa|0,0)|0,pa=B,B=0,!(pa&1)):0){pa=Ab(20)|0;B=0;eb(502,N|0,145024,86);tb=B;B=0;do if(!(tb&1)){B=0;eb(502,O|0,145111,11);oa=B;B=0;if(oa&1){oa=Rb()|0;ra=Q;Yua(N);jg=ra;kg=oa;break}B=0;wa(510,P|0,ib|0);oa=B;B=0;if(oa&1){oa=Rb()|0;lg=1;mg=Q;ng=oa}else{B=0;ua(163,pa|0,N|0,O|0,446,P|0);oa=B;B=0;if(oa&1)og=1;else{B=0;eb(503,pa|0,1240,229);B=0;og=0}oa=Rb()|0;ra=Q;Yua(P);lg=og;mg=ra;ng=oa}Yua(O);Yua(N);if(lg){jg=mg;kg=ng}else{pg=mg;qg=ng;break K}}else{oa=Rb()|0;jg=Q;kg=oa}while(0);zb(pa|0);pg=jg;qg=kg}else vb=493;while(0);if((vb|0)==493){qa=Rb()|0;pg=Q;qg=qa}k[M>>2]=27468;k[xa>>2]=27488;k[ib>>2]=27560;Yua(na);Ava(ib);vva(xa);Ba=pg;Ca=qg;Qb(Ca|0)}while(0);fg=hg;gg=ig;vva(xa);Qb(gg|0)}else if((vb|0)==502){rg=cg;sg=k[Jc>>2]|0;tg=dg;ug=eg;break}}else{rg=xc;sg=Wf;tg=Wf;ug=Xf}while(0);xc=(rg*3|0)+ka+sg|0;la=b+60|0;ib=k[la>>2]|0;do if((ib|0)>0){jb=b+68|0;qa=b+76|0;Na=ib;tb=tg;Ac=0;oa=ug;L:while(1){ra=(ma(k[jb>>2]|0,Ac)|0)+2|0;M:do switch(k[(k[qa>>2]|0)+(ra<<2)>>2]|0){case 2:{if(!(i[(k[h>>2]|0)+Ac>>0]|0)){vg=Na;wg=tb+3|0;xg=oa;break M}Ic=Qqa(144)|0;za=(Ac*3|0)+xc|0;B=0;Ka(13,Ic|0,za+1|0,tb+1|0,oa|0,0,b|0,c|0,543);bf=B;B=0;if(bf&1){yg=Ic;vb=512;break L}ih(a,Ic)|0;Ic=Qqa(144)|0;B=0;Ka(13,Ic|0,za+2|0,tb+2|0,oa+1|0,0,b|0,c|0,543);bf=B;B=0;if(bf&1){zg=Ic;vb=513;break L}ih(a,Ic)|0;Ic=Qqa(144)|0;bf=tb+3|0;B=0;Ka(13,Ic|0,za+3|0,bf|0,oa+2|0,0,b|0,c|0,543);za=B;B=0;if(za&1){Ag=Ic;vb=514;break L}ih(a,Ic)|0;vg=k[la>>2]|0;wg=bf;xg=oa+3|0;break}case 1:{vg=Na;wg=tb;xg=oa;break}default:{vb=515;break L}}while(0);Ac=Ac+1|0;if((Ac|0)>=(vg|0)){Bg=vg;Cg=wg;Dg=xg;vb=539;break}else{Na=vg;tb=wg;oa=xg}}if((vb|0)==512){oa=Rb()|0;tb=Q;Sqa(yg);Ba=tb;Ca=oa;Qb(Ca|0)}else if((vb|0)==513){oa=Rb()|0;tb=Q;Sqa(zg);Ba=tb;Ca=oa;Qb(Ca|0)}else if((vb|0)==514){oa=Rb()|0;tb=Q;Sqa(Ag);Ba=tb;Ca=oa;Qb(Ca|0)}else if((vb|0)==515){oa=R+56|0;tb=R+4|0;k[R>>2]=27524;k[oa>>2]=27544;B=0;wa(508,R+56|0,tb|0);Na=B;B=0;if(Na&1){Na=Rb()|0;Eg=Q;Fg=Na;vva(oa);Qb(Fg|0)}k[R+128>>2]=0;k[R+132>>2]=-1;k[R>>2]=27468;k[oa>>2]=27488;B=0;va(448,tb|0);Na=B;B=0;do if(Na&1){Ac=Rb()|0;Gg=Q;Hg=Ac}else{k[tb>>2]=27560;Ac=R+36|0;k[Ac>>2]=0;k[Ac+4>>2]=0;k[Ac+8>>2]=0;k[Ac+12>>2]=0;k[R+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,tb|0,g|0);qa=B;B=0;if(qa&1){qa=Rb()|0;jb=Q;Yua(g);Yua(Ac);Ava(tb);Gg=jb;Hg=qa;break}Yua(g);B=0;qa=Ia(40,R|0,145010,13)|0;jb=B;B=0;N:do if(!(jb&1)?(B=0,Xa(239,qa|0,0)|0,xa=B,B=0,!(xa&1)):0){xa=Ab(20)|0;B=0;eb(502,S|0,145024,86);ra=B;B=0;do if(!(ra&1)){B=0;eb(502,T|0,145111,11);na=B;B=0;if(na&1){na=Rb()|0;bf=Q;Yua(S);Ig=bf;Jg=na;break}B=0;wa(510,U|0,tb|0);na=B;B=0;if(na&1){na=Rb()|0;Kg=1;Lg=Q;Mg=na}else{B=0;ua(163,xa|0,S|0,T|0,466,U|0);na=B;B=0;if(na&1)Ng=1;else{B=0;eb(503,xa|0,1240,229);B=0;Ng=0}na=Rb()|0;bf=Q;Yua(U);Kg=Ng;Lg=bf;Mg=na}Yua(T);Yua(S);if(Kg){Ig=Lg;Jg=Mg}else{Og=Lg;Pg=Mg;break N}}else{na=Rb()|0;Ig=Q;Jg=na}while(0);zb(xa|0);Og=Ig;Pg=Jg}else vb=530;while(0);if((vb|0)==530){qa=Rb()|0;Og=Q;Pg=qa}k[R>>2]=27468;k[oa>>2]=27488;k[tb>>2]=27560;Yua(Ac);Ava(tb);vva(oa);Ba=Og;Ca=Pg;Qb(Ca|0)}while(0);Eg=Gg;Fg=Hg;vva(oa);Qb(Fg|0)}else if((vb|0)==539){Qg=Bg;Rg=k[Jc>>2]|0;Sg=Cg;Tg=Dg;break}}else{Qg=ib;Rg=sg;Sg=tg;Tg=ug}while(0);if((Rg|0)>0){ib=b+36|0;la=xc+1+(Qg*3|0)|0;tb=Rg;Na=Sg;qa=0;jb=Tg;while(1){if(!(k[(k[ib>>2]|0)+(qa<<2)>>2]|0)){Ug=Na+1|0;Vg=tb;Wg=jb}else{ra=Qqa(144)|0;pa=Na+1|0;B=0;Ka(13,ra|0,la+qa|0,pa|0,jb|0,qa|0,b|0,c|0,544);na=B;B=0;if(na&1){Xg=ra;break}ih(a,ra)|0;Ug=pa;Vg=k[Jc>>2]|0;Wg=jb+1|0}qa=qa+1|0;if((qa|0)>=(Vg|0))break a;else{tb=Vg;Na=Ug;jb=Wg}}jb=Rb()|0;Na=Q;Sqa(Xg);Ba=Na;Ca=jb;Qb(Ca|0)}break}case 757:{lqa(j,b);jb=b+52|0;Na=k[jb>>2]|0;O:do if((Na|0)>0){tb=b+36|0;qa=ka+1|0;Jc=Na;la=0;ib=0;while(1){if(!(k[(k[tb>>2]|0)+(la<<2)>>2]|0)){Yg=Jc;Zg=ib}else{xc=Qqa(144)|0;B=0;Ka(13,xc|0,qa+la|0,la|0,ib|0,la|0,b|0,c|0,543);pa=B;B=0;if(pa&1){_g=xc;break}ih(a,xc)|0;Yg=k[jb>>2]|0;Zg=ib+1|0}la=la+1|0;if((la|0)>=(Yg|0)){$g=Yg;ah=Zg;break O}else{Jc=Yg;ib=Zg}}ib=Rb()|0;Jc=Q;Sqa(_g);Ba=Jc;Ca=ib;Qb(Ca|0)}else{$g=Na;ah=0}while(0);Na=b+64|0;ib=k[Na>>2]|0;do if((ib|0)>0){Jc=ka+1|0;la=ib;qa=0;tb=ah;while(1){if(!(i[(k[j>>2]|0)+qa>>0]|0)){bh=la;ch=tb}else{oa=Qqa(144)|0;xc=k[jb>>2]|0;B=0;Ka(13,oa|0,Jc+qa+xc|0,xc+qa|0,tb|0,0,b|0,c|0,543);xc=B;B=0;if(xc&1){dh=oa;break}ih(a,oa)|0;bh=k[Na>>2]|0;ch=tb+1|0}qa=qa+1|0;if((qa|0)>=(bh|0)){eh=bh;fh=ch;vb=562;break}else{la=bh;tb=ch}}if((vb|0)==562){gh=eh;hh=k[jb>>2]|0;jh=fh;break}tb=Rb()|0;la=Q;Sqa(dh);Ba=la;Ca=tb;Qb(Ca|0)}else{gh=ib;hh=$g;jh=ah}while(0);ib=gh+ka+hh|0;tb=b+48|0;if((k[tb>>2]|0)==625){mqa(h,b);la=b+60|0;qa=k[la>>2]|0;P:do if((qa|0)>0){Jc=b+68|0;oa=b+76|0;xc=ib+1|0;pa=qa;ra=0;na=jh;Q:while(1){bf=(ma(k[Jc>>2]|0,ra)|0)+2|0;switch(k[(k[oa>>2]|0)+(bf<<2)>>2]|0){case 2:{if(!(i[(k[h>>2]|0)+ra>>0]|0)){kh=pa;lh=na}else{bf=Qqa(144)|0;B=0;Ka(13,bf|0,xc+ra|0,(k[jb>>2]|0)+ra+(k[Na>>2]|0)|0,na|0,0,b|0,c|0,543);Ic=B;B=0;if(Ic&1){mh=bf;vb=570;break Q}ih(a,bf)|0;kh=k[la>>2]|0;lh=na+1|0}break}case 1:{kh=pa;lh=na;break}default:break Q}ra=ra+1|0;if((ra|0)>=(kh|0)){nh=kh;oh=lh;break P}else{pa=kh;na=lh}}if((vb|0)==570){na=Rb()|0;pa=Q;Sqa(mh);Ba=pa;Ca=na;Qb(Ca|0)}na=V+56|0;pa=V+4|0;k[V>>2]=27524;k[na>>2]=27544;B=0;wa(508,V+56|0,pa|0);ra=B;B=0;if(ra&1){ra=Rb()|0;ph=Q;qh=ra;vva(na);Qb(qh|0)}k[V+128>>2]=0;k[V+132>>2]=-1;k[V>>2]=27468;k[na>>2]=27488;B=0;va(448,pa|0);ra=B;B=0;do if(ra&1){xc=Rb()|0;rh=Q;sh=xc}else{k[pa>>2]=27560;xc=V+36|0;k[xc>>2]=0;k[xc+4>>2]=0;k[xc+8>>2]=0;k[xc+12>>2]=0;k[V+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,pa|0,g|0);oa=B;B=0;if(oa&1){oa=Rb()|0;Jc=Q;Yua(g);Yua(xc);Ava(pa);rh=Jc;sh=oa;break}Yua(g);B=0;oa=Ia(40,V|0,145010,13)|0;Jc=B;B=0;R:do if(!(Jc&1)?(B=0,Xa(239,oa|0,0)|0,bf=B,B=0,!(bf&1)):0){bf=Ab(20)|0;B=0;eb(502,W|0,145024,86);Ic=B;B=0;do if(!(Ic&1)){B=0;eb(502,X|0,145111,11);za=B;B=0;if(za&1){za=Rb()|0;cf=Q;Yua(W);th=cf;uh=za;break}B=0;wa(510,Y|0,pa|0);za=B;B=0;if(za&1){za=Rb()|0;vh=1;wh=Q;xh=za}else{B=0;ua(163,bf|0,W|0,X|0,507,Y|0);za=B;B=0;if(za&1)yh=1;else{B=0;eb(503,bf|0,1240,229);B=0;yh=0}za=Rb()|0;cf=Q;Yua(Y);vh=yh;wh=cf;xh=za}Yua(X);Yua(W);if(vh){th=wh;uh=xh}else{zh=wh;Ah=xh;break R}}else{za=Rb()|0;th=Q;uh=za}while(0);zb(bf|0);zh=th;Ah=uh}else vb=586;while(0);if((vb|0)==586){oa=Rb()|0;zh=Q;Ah=oa}k[V>>2]=27468;k[na>>2]=27488;k[pa>>2]=27560;Yua(xc);Ava(pa);vva(na);Ba=zh;Ca=Ah;Qb(Ca|0)}while(0);ph=rh;qh=sh;vva(na);Qb(qh|0)}else{nh=qa;oh=jh}while(0);Bh=nh+ib|0;Ch=oh}else{Bh=ib;Ch=jh}qa=b+56|0;la=k[qa>>2]|0;S:do if((la|0)>0){Na=b+32|0;jb=Bh+1|0;pa=la;ra=0;oa=Ch;while(1){if(!(i[(k[Na>>2]|0)+ra>>0]|0)){Dh=pa;Eh=oa}else{Jc=Qqa(144)|0;B=0;Ka(13,Jc|0,jb+ra|0,ra+Bh-(k[ja>>2]|0)|0,oa|0,0,b|0,c|0,543);Ac=B;B=0;if(Ac&1){Fh=Jc;break}ih(a,Jc)|0;Dh=k[qa>>2]|0;Eh=oa+1|0}ra=ra+1|0;if((ra|0)>=(Dh|0)){Gh=Dh;Hh=Eh;break S}else{pa=Dh;oa=Eh}}oa=Rb()|0;pa=Q;Sqa(Fh);Ba=pa;Ca=oa;Qb(Ca|0)}else{Gh=la;Hh=Ch}while(0);la=Gh+Bh|0;switch(k[tb>>2]|0){case 621:{Ih=3;break}case 623:{Ih=4;break}case 625:{Ih=6;break}default:{ib=Z+56|0;oa=Z+4|0;k[Z>>2]=27524;k[ib>>2]=27544;B=0;wa(508,Z+56|0,oa|0);pa=B;B=0;if(pa&1){pa=Rb()|0;Jh=Q;Kh=pa;vva(ib);Qb(Kh|0)}k[Z+128>>2]=0;k[Z+132>>2]=-1;k[Z>>2]=27468;k[ib>>2]=27488;B=0;va(448,oa|0);pa=B;B=0;do if(pa&1){ra=Rb()|0;Lh=Q;Mh=ra}else{k[oa>>2]=27560;ra=Z+36|0;k[ra>>2]=0;k[ra+4>>2]=0;k[ra+8>>2]=0;k[ra+12>>2]=0;k[Z+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,oa|0,g|0);jb=B;B=0;if(jb&1){jb=Rb()|0;Na=Q;Yua(g);Yua(ra);Ava(oa);Lh=Na;Mh=jb;break}Yua(g);B=0;jb=Ia(40,Z|0,150248,32)|0;Na=B;B=0;T:do if(!(Na&1)?(B=0,Xa(239,jb|0,0)|0,na=B,B=0,!(na&1)):0){na=Ab(20)|0;B=0;eb(502,_|0,145024,86);Jc=B;B=0;do if(!(Jc&1)){B=0;eb(502,$|0,145111,11);Ac=B;B=0;if(Ac&1){Ac=Rb()|0;Ic=Q;Yua(_);Nh=Ic;Oh=Ac;break}B=0;wa(510,aa|0,oa|0);Ac=B;B=0;if(Ac&1){Ac=Rb()|0;Ph=1;Qh=Q;Rh=Ac}else{B=0;ua(163,na|0,_|0,$|0,524,aa|0);Ac=B;B=0;if(Ac&1)Sh=1;else{B=0;eb(503,na|0,1240,229);B=0;Sh=0}Ac=Rb()|0;Ic=Q;Yua(aa);Ph=Sh;Qh=Ic;Rh=Ac}Yua($);Yua(_);if(Ph){Nh=Qh;Oh=Rh}else{Th=Qh;Uh=Rh;break T}}else{Ac=Rb()|0;Nh=Q;Oh=Ac}while(0);zb(na|0);Th=Nh;Uh=Oh}else vb=621;while(0);if((vb|0)==621){jb=Rb()|0;Th=Q;Uh=jb}k[Z>>2]=27468;k[ib>>2]=27488;k[oa>>2]=27560;Yua(ra);Ava(oa);vva(ib);Ba=Th;Ca=Uh;Qb(Ca|0)}while(0);Jh=Lh;Kh=Mh;vva(ib);Qb(Kh|0)}}if((Gh|0)>0){oa=b+32|0;pa=la+1|0;tb=b+72|0;jb=Gh;Na=0;Jc=Hh;U:while(1){if(!(i[(k[oa>>2]|0)+Na>>0]|0)){Vh=jb;Wh=Jc}else{xc=ma(Na,Ih)|0;Ac=pa+xc|0;Ic=xc+la|0;xa=0;za=Jc;while(1){cf=Qqa(144)|0;B=0;Ka(13,cf|0,Ac+xa|0,Ic+xa-(k[ja>>2]|0)|0,za|0,(k[(k[tb>>2]|0)+(xa+xc<<2)>>2]|0)+-1|0,b|0,c|0,544);Xh=B;B=0;if(Xh&1){Yh=cf;break U}Xh=za+1|0;ih(a,cf)|0;xa=xa+1|0;if((xa|0)>=(Ih|0)){Zh=Xh;break}else za=Xh}Vh=k[qa>>2]|0;Wh=Zh}Na=Na+1|0;if((Na|0)>=(Vh|0))break a;else{jb=Vh;Jc=Wh}}Jc=Rb()|0;jb=Q;Sqa(Yh);Ba=jb;Ca=Jc;Qb(Ca|0)}break}case 758:{lqa(j,b);Jc=b+52|0;jb=k[Jc>>2]|0;V:do if((jb|0)>0){Na=b+36|0;qa=ka+1|0;tb=jb;la=0;pa=0;while(1){if(!(k[(k[Na>>2]|0)+(la<<2)>>2]|0)){_h=tb;$h=pa}else{oa=Qqa(144)|0;B=0;Ka(13,oa|0,qa+la|0,la|0,pa|0,la|0,b|0,c|0,543);ib=B;B=0;if(ib&1){ai=oa;break}ih(a,oa)|0;_h=k[Jc>>2]|0;$h=pa+1|0}la=la+1|0;if((la|0)>=(_h|0)){bi=_h;ci=$h;break V}else{tb=_h;pa=$h}}pa=Rb()|0;tb=Q;Sqa(ai);Ba=tb;Ca=pa;Qb(Ca|0)}else{bi=jb;ci=0}while(0);jb=b+64|0;pa=k[jb>>2]|0;do if((pa|0)>0){tb=ka+1|0;la=pa;qa=0;Na=ci;while(1){if(!(i[(k[j>>2]|0)+qa>>0]|0)){di=la;ei=Na}else{oa=Qqa(144)|0;ib=k[Jc>>2]|0;B=0;Ka(13,oa|0,tb+qa+ib|0,ib+qa|0,Na|0,0,b|0,c|0,543);ib=B;B=0;if(ib&1){fi=oa;break}ih(a,oa)|0;di=k[jb>>2]|0;ei=Na+1|0}qa=qa+1|0;if((qa|0)>=(di|0)){gi=di;hi=ei;vb=652;break}else{la=di;Na=ei}}if((vb|0)==652){ii=gi;ji=k[Jc>>2]|0;ki=hi;break}Na=Rb()|0;la=Q;Sqa(fi);Ba=la;Ca=Na;Qb(Ca|0)}else{ii=pa;ji=bi;ki=ci}while(0);pa=ii+ka+ji|0;if((k[b+48>>2]|0)==625){mqa(h,b);Na=b+60|0;la=k[Na>>2]|0;W:do if((la|0)>0){qa=b+68|0;tb=b+76|0;oa=pa+1|0;ib=la;za=0;xa=ki;X:while(1){xc=(ma(k[qa>>2]|0,za)|0)+2|0;switch(k[(k[tb>>2]|0)+(xc<<2)>>2]|0){case 2:{if(!(i[(k[h>>2]|0)+za>>0]|0)){li=ib;mi=xa}else{xc=Qqa(144)|0;B=0;Ka(13,xc|0,oa+za|0,(k[Jc>>2]|0)+za+(k[jb>>2]|0)|0,xa|0,0,b|0,c|0,543);Ic=B;B=0;if(Ic&1){ni=xc;vb=660;break X}ih(a,xc)|0;li=k[Na>>2]|0;mi=xa+1|0}break}case 1:{li=ib;mi=xa;break}default:break X}za=za+1|0;if((za|0)>=(li|0)){oi=li;pi=mi;break W}else{ib=li;xa=mi}}if((vb|0)==660){xa=Rb()|0;ib=Q;Sqa(ni);Ba=ib;Ca=xa;Qb(Ca|0)}xa=ba+56|0;ib=ba+4|0;k[ba>>2]=27524;k[xa>>2]=27544;B=0;wa(508,ba+56|0,ib|0);za=B;B=0;if(za&1){za=Rb()|0;qi=Q;ri=za;vva(xa);Qb(ri|0)}k[ba+128>>2]=0;k[ba+132>>2]=-1;k[ba>>2]=27468;k[xa>>2]=27488;B=0;va(448,ib|0);za=B;B=0;do if(za&1){oa=Rb()|0;si=Q;ti=oa}else{k[ib>>2]=27560;oa=ba+36|0;k[oa>>2]=0;k[oa+4>>2]=0;k[oa+8>>2]=0;k[oa+12>>2]=0;k[ba+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,ib|0,g|0);tb=B;B=0;if(tb&1){tb=Rb()|0;qa=Q;Yua(g);Yua(oa);Ava(ib);si=qa;ti=tb;break}Yua(g);B=0;tb=Ia(40,ba|0,145010,13)|0;qa=B;B=0;Y:do if(!(qa&1)?(B=0,Xa(239,tb|0,0)|0,xc=B,B=0,!(xc&1)):0){xc=Ab(20)|0;B=0;eb(502,ca|0,145024,86);Ic=B;B=0;do if(!(Ic&1)){B=0;eb(502,da|0,145111,11);Ac=B;B=0;if(Ac&1){Ac=Rb()|0;ra=Q;Yua(ca);ui=ra;vi=Ac;break}B=0;wa(510,ea|0,ib|0);Ac=B;B=0;if(Ac&1){Ac=Rb()|0;wi=1;xi=Q;yi=Ac}else{B=0;ua(163,xc|0,ca|0,da|0,563,ea|0);Ac=B;B=0;if(Ac&1)zi=1;else{B=0;eb(503,xc|0,1240,229);B=0;zi=0}Ac=Rb()|0;ra=Q;Yua(ea);wi=zi;xi=ra;yi=Ac}Yua(da);Yua(ca);if(wi){ui=xi;vi=yi}else{Ai=xi;Bi=yi;break Y}}else{Ac=Rb()|0;ui=Q;vi=Ac}while(0);zb(xc|0);Ai=ui;Bi=vi}else vb=676;while(0);if((vb|0)==676){tb=Rb()|0;Ai=Q;Bi=tb}k[ba>>2]=27468;k[xa>>2]=27488;k[ib>>2]=27560;Yua(oa);Ava(ib);vva(xa);Ba=Ai;Ca=Bi;Qb(Ca|0)}while(0);qi=si;ri=ti;vva(xa);Qb(ri|0)}else{oi=la;pi=ki}while(0);Ci=oi+pa|0;Di=pi}else{Ci=pa;Di=ki}la=b+56|0;Na=k[la>>2]|0;if((Na|0)>0){jb=b+32|0;Jc=Ci+1|0;ib=Na;Na=0;za=Di;while(1){if(!(i[(k[jb>>2]|0)+Na>>0]|0)){Ei=ib;Fi=za}else{tb=Qqa(144)|0;B=0;Ka(13,tb|0,Jc+Na|0,Na+Ci-(k[ja>>2]|0)|0,za|0,0,b|0,c|0,543);qa=B;B=0;if(qa&1){Gi=tb;break}ih(a,tb)|0;Ei=k[la>>2]|0;Fi=za+1|0}Na=Na+1|0;if((Na|0)>=(Ei|0))break a;else{ib=Ei;za=Fi}}za=Rb()|0;ib=Q;Sqa(Gi);Ba=ib;Ca=za;Qb(Ca|0)}break}default:{za=fa+56|0;ib=fa+4|0;k[fa>>2]=27524;k[za>>2]=27544;B=0;wa(508,fa+56|0,ib|0);Na=B;B=0;if(Na&1){Na=Rb()|0;Hi=Q;Ii=Na;vva(za);Qb(Ii|0)}k[fa+128>>2]=0;k[fa+132>>2]=-1;k[fa>>2]=27468;k[za>>2]=27488;B=0;va(448,ib|0);Na=B;B=0;do if(Na&1){la=Rb()|0;Ji=Q;Ki=la}else{k[ib>>2]=27560;la=fa+36|0;k[la>>2]=0;k[la+4>>2]=0;k[la+8>>2]=0;k[la+12>>2]=0;k[fa+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,ib|0,g|0);Jc=B;B=0;if(Jc&1){Jc=Rb()|0;jb=Q;Yua(g);Yua(la);Ava(ib);Ji=jb;Ki=Jc;break}Yua(g);B=0;Jc=Ia(40,fa|0,145867,15)|0;jb=B;B=0;Z:do if((((!(jb&1)?(B=0,pa=ya(427,d|0)|0,tb=B,B=0,!(tb&1)):0)?(tb=Lta(pa)|0,B=0,qa=Ia(40,Jc|0,pa|0,tb|0)|0,tb=B,B=0,!(tb&1)):0)?(B=0,tb=Ia(40,qa|0,146481,18)|0,qa=B,B=0,!(qa&1)):0)?(B=0,Xa(239,tb|0,0)|0,tb=B,B=0,!(tb&1)):0){tb=Ab(20)|0;B=0;eb(502,ga|0,145024,86);qa=B;B=0;do if(!(qa&1)){B=0;eb(502,ha|0,145111,11);pa=B;B=0;if(pa&1){pa=Rb()|0;na=Q;Yua(ga);Li=pa;Mi=na;break}B=0;wa(510,ia|0,ib|0);na=B;B=0;if(na&1){na=Rb()|0;Ni=1;Oi=Q;Pi=na}else{B=0;ua(163,tb|0,ga|0,ha|0,578,ia|0);na=B;B=0;if(na&1)Qi=1;else{B=0;eb(503,tb|0,1240,229);B=0;Qi=0}na=Rb()|0;pa=Q;Yua(ia);Ni=Qi;Oi=pa;Pi=na}Yua(ha);Yua(ga);if(Ni){Li=Pi;Mi=Oi}else{Ri=Oi;Si=Pi;break Z}}else{na=Rb()|0;Li=na;Mi=Q}while(0);zb(tb|0);Ri=Mi;Si=Li}else vb=711;while(0);if((vb|0)==711){Jc=Rb()|0;Ri=Q;Si=Jc}k[fa>>2]=27468;k[za>>2]=27488;k[ib>>2]=27560;Yua(la);Ava(ib);vva(za);Ba=Ri;Ca=Si;Qb(Ca|0)}while(0);Hi=Ji;Ii=Ki;vva(za);Qb(Ii|0)}}while(0);Ii=k[h>>2]|0;if(Ii)Tqa(Ii);k[h>>2]=0;h=k[j>>2]|0;if(h)Tqa(h);k[j>>2]=0;j=k[l>>2]|0;if(!j){r=f;return}Tqa(j);r=f;return}function ioa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;f=nn(d)|0;g=Qqa(8)|0;B=0;va(485,g|0);h=B;B=0;a:do if(h&1)i=21;else{do if(k[g>>2]|0){B=0;j=ya(423,4)|0;l=B;B=0;if(l&1){i=21;break a}B=0;eb(505,j|0,f|0,0);l=B;B=0;if(l&1){l=Rb()|0;m=Q;Sqa(j);n=m;o=l;break a}else{k[g+4>>2]=j;break}}while(0);j=Qqa(8)|0;B=0;va(485,j|0);l=B;B=0;b:do if(l&1)i=23;else{do if(k[j>>2]|0){B=0;m=ya(423,4)|0;p=B;B=0;if(p&1){i=23;break b}B=0;eb(505,m|0,f|0,0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Sqa(m);r=q;s=p;break b}else{k[j+4>>2]=m;break}}while(0);m=Qqa(8)|0;B=0;va(485,m|0);p=B;B=0;c:do if(p&1)i=25;else{do if(k[m>>2]|0){B=0;q=ya(423,4)|0;t=B;B=0;if(t&1){i=25;break c}B=0;eb(505,q|0,f|0,0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Sqa(q);v=u;w=t;break c}else{k[m+4>>2]=q;break}}while(0);if((th(d)|0)>0){q=0;do{Jo(qh(d,q)|0,g,j,m,e);q=q+1|0}while((q|0)<(th(d)|0))}if(k[g>>2]|0){q=k[k[g+4>>2]>>2]|0;Ec[k[(k[q>>2]|0)+12>>2]&1023](q)}if(k[j>>2]|0){q=k[k[j+4>>2]>>2]|0;Ec[k[(k[q>>2]|0)+12>>2]&1023](q)}if(k[m>>2]|0){q=k[k[m+4>>2]>>2]|0;Ec[k[(k[q>>2]|0)+12>>2]&1023](q)}if(!(k[g>>2]|0))x=0;else{q=k[k[g+4>>2]>>2]|0;x=Hc[k[(k[q>>2]|0)+52>>2]&511](q)|0}q=x;if(!(k[j>>2]|0))y=0;else{t=k[k[j+4>>2]>>2]|0;y=Hc[k[(k[t>>2]|0)+52>>2]&511](t)|0}if(!(k[m>>2]|0))z=0;else{t=k[k[m+4>>2]>>2]|0;z=Hc[k[(k[t>>2]|0)+52>>2]&511](t)|0}if((k[g>>2]|0)!=0?(t=k[g+4>>2]|0,(t|0)!=0):0){u=k[t>>2]|0;if(u)Ec[k[(k[u>>2]|0)+4>>2]&1023](u);Sqa(t)}Sqa(g);if((k[j>>2]|0)!=0?(t=k[j+4>>2]|0,(t|0)!=0):0){u=k[t>>2]|0;if(u)Ec[k[(k[u>>2]|0)+4>>2]&1023](u);Sqa(t)}Sqa(j);do if(k[m>>2]|0){t=k[m+4>>2]|0;if(!t)break;u=k[t>>2]|0;if(u)Ec[k[(k[u>>2]|0)+4>>2]&1023](u);Sqa(t)}while(0);Sqa(m);do if(!a){if(!x)break;Tqa(x)}else k[a>>2]=q;while(0);do if(!b){if(!y)break;Tqa(y)}else k[b>>2]=y;while(0);if(c){k[c>>2]=z;return}if(!z)return;Tqa(z);return}while(0);if((i|0)==25){p=Rb()|0;v=Q;w=p}Sqa(m);A=v;C=w;Qb(C|0)}while(0);if((i|0)==23){l=Rb()|0;r=Q;s=l}Sqa(j);A=r;C=s;Qb(C|0)}while(0);if((i|0)==21){i=Rb()|0;n=Q;o=i}Sqa(g);A=n;C=o;Qb(C|0)}function joa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=a+20|0;if((th(k[d>>2]|0)|0)>0)e=0;else return;do{Sp(qh(k[d>>2]|0,e)|0,b,c);e=e+1|0}while((e|0)<(th(k[d>>2]|0)|0));return}function koa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=a+20|0;if((th(k[d>>2]|0)|0)>0)e=0;else return;do{a=qh(k[d>>2]|0,e)|0;nd[k[(k[a>>2]|0)+220>>2]&1023](a,b,c);e=e+1|0}while((e|0)<(th(k[d>>2]|0)|0));return}function loa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0;f=r;r=r+16|0;g=f+8|0;h=f+4|0;i=f;k[h>>2]=0;k[i>>2]=0;j=e+44|0;cO(k[j>>2]|0,g,478);cO(k[j>>2]|0,f+12|0,277);j=e+24|0;l=en(k[j>>2]|0,k[g>>2]|0,937)|0;m=en(k[j>>2]|0,k[g>>2]|0,966)|0;n=fn(k[j>>2]|0,k[g>>2]|0,937)|0;o=fn(k[j>>2]|0,k[g>>2]|0,966)|0;an(k[j>>2]|0,k[g>>2]|0,943)|0;g=qZ()|0;j=(a|0)!=0;a:do if(j){if(!(Ita(g,145123)|0)){p=Qqa(8)|0;B=0;va(539,p|0);q=B;B=0;do if(!(q&1)){if(!(k[p>>2]|0)){s=p;break a}B=0;t=ya(423,4)|0;u=B;B=0;if(!(u&1)){B=0;Ta(32,t|0,n|0,n|0,l|0,l|0,0,0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Sqa(t);w=v;x=u;break}else{k[p+4>>2]=t;s=p;break a}}else y=9}else y=9;while(0);if((y|0)==9){q=Rb()|0;w=Q;x=q}Sqa(p);z=w;A=x;Qb(A|0)}moa(h,i,e,937,937);q=Qqa(8)|0;t=k[h>>2]|0;u=k[i>>2]|0;B=0;va(539,q|0);v=B;B=0;b:do if(v&1)y=22;else{do if(k[q>>2]|0){B=0;C=ya(423,4)|0;D=B;B=0;if(D&1){y=22;break b}B=0;Ta(32,C|0,n|0,n|0,l|0,l|0,t|0,u|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Sqa(C);F=E;G=D;break b}else{k[q+4>>2]=C;break}}while(0);if(t)Tqa(t);k[h>>2]=0;if(u)Tqa(u);k[i>>2]=0;s=q;break a}while(0);if((y|0)==22){u=Rb()|0;F=Q;G=u}Sqa(q);z=F;A=G;Qb(A|0)}else s=0;while(0);G=(b|0)==0;c:do if(G)H=0;else{if(!(Ita(g,145123)|0)){F=Qqa(8)|0;B=0;va(539,F|0);x=B;B=0;do if(!(x&1)){if(!(k[F>>2]|0)){H=F;break c}B=0;w=ya(423,4)|0;u=B;B=0;if(!(u&1)){B=0;Ta(32,w|0,n|0,o|0,l|0,m|0,0,0);u=B;B=0;if(u&1){u=Rb()|0;t=Q;Sqa(w);I=t;J=u;break}else{k[F+4>>2]=w;H=F;break c}}else y=32}else y=32;while(0);if((y|0)==32){x=Rb()|0;I=Q;J=x}Sqa(F);z=I;A=J;Qb(A|0)}moa(h,i,e,937,966);x=Qqa(8)|0;q=k[h>>2]|0;w=k[i>>2]|0;B=0;va(539,x|0);u=B;B=0;d:do if(u&1)y=45;else{do if(k[x>>2]|0){B=0;t=ya(423,4)|0;v=B;B=0;if(v&1){y=45;break d}B=0;Ta(32,t|0,n|0,o|0,l|0,m|0,q|0,w|0);v=B;B=0;if(v&1){v=Rb()|0;p=Q;Sqa(t);K=p;L=v;break d}else{k[x+4>>2]=t;break}}while(0);if(q)Tqa(q);k[h>>2]=0;if(w)Tqa(w);k[i>>2]=0;H=x;break c}while(0);if((y|0)==45){w=Rb()|0;K=Q;L=w}Sqa(x);z=K;A=L;Qb(A|0)}while(0);L=(c|0)==0;e:do if(L)M=0;else{K=Qqa(8)|0;B=0;va(485,K|0);i=B;B=0;do if(!(i&1)){if(!(k[K>>2]|0)){M=K;break e}B=0;h=ya(423,4)|0;m=B;B=0;if(!(m&1)){B=0;eb(525,h|0,n|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;o=Q;Sqa(h);N=o;O=m;break}else{k[K+4>>2]=h;M=K;break e}}else y=54}else y=54;while(0);if((y|0)==54){i=Rb()|0;N=Q;O=i}Sqa(K);z=N;A=O;Qb(A|0)}while(0);O=(d|0)==0;f:do if(O)P=0;else{N=Qqa(8)|0;B=0;va(485,N|0);i=B;B=0;do if(!(i&1)){if(!(k[N>>2]|0)){P=N;break f}B=0;x=ya(423,4)|0;h=B;B=0;if(!(h&1)){B=0;eb(525,x|0,n|0,l|0);h=B;B=0;if(h&1){h=Rb()|0;m=Q;Sqa(x);R=m;S=h;break}else{k[N+4>>2]=x;P=N;break f}}else y=63}else y=63;while(0);if((y|0)==63){i=Rb()|0;R=Q;S=i}Sqa(N);z=R;A=S;Qb(A|0)}while(0);if(g)Tqa(g);if(j)k[a>>2]=s;if(!G)k[b>>2]=H;if(!L)k[c>>2]=M;if(O){r=f;return}k[d>>2]=P;r=f;return}function moa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;f=r;r=r+208|0;g=f+188|0;h=f+184|0;j=f+180|0;l=f+176|0;m=f+40|0;n=f+24|0;o=f+12|0;p=f;cO(k[c+44>>2]|0,h,478);q=c+24|0;s=bn(k[q>>2]|0,k[h>>2]|0)|0;t=th(k[q>>2]|0)|0;u=an(k[q>>2]|0,k[h>>2]|0,943)|0;en(k[q>>2]|0,k[h>>2]|0,d)|0;v=en(k[q>>2]|0,k[h>>2]|0,e)|0;w=fn(k[q>>2]|0,k[h>>2]|0,d)|0;x=fn(k[q>>2]|0,k[h>>2]|0,e)|0;y=c+20|0;z=Pq(k[y>>2]|0)|0;A=c+36|0;c=cL(k[A>>2]|0,k[h>>2]|0)|0;C=t>>>0>1073741823?-1:t<<2;D=Rqa(C)|0;E=(t|0)>0;if(E)WEa(D|0,-1,t<<2|0)|0;F=ma(th(k[y>>2]|0)|0,z)|0;G=Rqa(F>>>0>1073741823?-1:F<<2)|0;F=ma(th(k[y>>2]|0)|0,z)|0;H=Rqa(F>>>0>1073741823?-1:F<<2)|0;if((th(k[y>>2]|0)|0)>0){F=0;I=0;while(1){J=qh(k[y>>2]|0,F)|0;K=Hc[k[(k[J>>2]|0)+164>>2]&511](J)|0;L=Rqa(K>>>0>1073741823?-1:K<<2)|0;Ep(J,L);if((Hc[k[(k[J>>2]|0)+164>>2]&511](J)|0)>0){K=0;M=I;while(1){N=k[L+(K<<2)>>2]|0;k[H+(M<<2)>>2]=F;O=D+(N<<2)|0;k[G+(M<<2)>>2]=k[O>>2];N=M+1|0;k[O>>2]=M;K=K+1|0;if((K|0)>=(Hc[k[(k[J>>2]|0)+164>>2]&511](J)|0)){P=N;break}else M=N}}else P=I;if((z|0)>(Hc[k[(k[J>>2]|0)+164>>2]&511](J)|0)){M=0;K=P;while(1){N=K+1|0;M=M+1|0;if((M|0)>=(z-(Hc[k[(k[J>>2]|0)+164>>2]&511](J)|0)|0)){R=N;break}else K=N}}else R=P;Tqa(L);F=F+1|0;if((F|0)>=(th(k[y>>2]|0)|0))break;else I=R}}R=Rqa(C)|0;if(E)WEa(R|0,-1,t<<2|0)|0;I=ma(gL(k[A>>2]|0,k[h>>2]|0)|0,c)|0;F=Rqa(I>>>0>1073741823?-1:I<<2)|0;I=ma(gL(k[A>>2]|0,k[h>>2]|0)|0,c)|0;P=Rqa(I>>>0>1073741823?-1:I<<2)|0;if((bL(k[A>>2]|0)|0)>0){I=0;z=0;while(1){K=qh(k[A>>2]|0,I)|0;if(ed[k[(k[K>>2]|0)+60>>2]&511](K,k[h>>2]|0)|0){J=Hc[k[(k[K>>2]|0)+56>>2]&511](K)|0;M=Rqa(J>>>0>1073741823?-1:J<<2)|0;Fc[k[(k[K>>2]|0)+48>>2]&1023](K,M);if((Hc[k[(k[K>>2]|0)+56>>2]&511](K)|0)>0){J=0;N=z;while(1){O=k[M+(J<<2)>>2]|0;k[P+(N<<2)>>2]=I;S=R+(O<<2)|0;k[F+(N<<2)>>2]=k[S>>2];O=N+1|0;k[S>>2]=N;J=J+1|0;if((J|0)>=(Hc[k[(k[K>>2]|0)+56>>2]&511](K)|0)){T=O;break}else N=O}}else T=z;if((c|0)>(Hc[k[(k[K>>2]|0)+56>>2]&511](K)|0)){N=0;J=T;while(1){L=J+1|0;N=N+1|0;if((N|0)>=(c-(Hc[k[(k[K>>2]|0)+56>>2]&511](K)|0)|0)){U=L;break}else J=L}}else U=T;Tqa(M);V=U}else V=z;I=I+1|0;if((I|0)>=(bL(k[A>>2]|0)|0))break;else z=V}}V=Rqa(t)|0;z=Rqa(C)|0;C=s>>>0>1073741823?-1:s<<2;I=Rqa(C)|0;if(!s){U=Rqa(C)|0;T=Rqa(C)|0;W=Rqa(C)|0;X=U;Y=T}else{T=s<<2;WEa(I|0,0,T|0)|0;U=Rqa(C)|0;WEa(U|0,0,T|0)|0;c=Rqa(C)|0;WEa(c|0,0,T|0)|0;J=Rqa(C)|0;WEa(J|0,0,T|0)|0;W=J;X=U;Y=c}if(E){WEa(V|0,0,t|0)|0;WEa(z|0,-1,t<<2|0)|0}if((th(k[q>>2]|0)|0)>0){t=0;do{E=qh(k[q>>2]|0,t)|0;if(Tn(E,k[h>>2]|0)|0){c=k[z>>2]|0;if((c|0)>-1){U=c;c=z;J=0;do{i[V+U>>0]=0;k[c>>2]=-1;J=J+1|0;c=z+(J<<2)|0;U=k[c>>2]|0}while((U|0)>-1)}U=D+((Rn(E)|0)<<2)|0;c=k[U>>2]|0;if((c|0)!=-1){U=c;do{rq(qh(k[y>>2]|0,k[H+(U<<2)>>2]|0)|0,j,l,E,V,z,d,e);c=(fo(E)|0)==0;J=k[j>>2]|0;if(c){c=I+((Qn(E)|0)<<2)|0;k[c>>2]=(k[c>>2]|0)+J;c=k[l>>2]|0;M=X+((Qn(E)|0)<<2)|0;k[M>>2]=(k[M>>2]|0)+c}else{c=(k[l>>2]|0)+J|0;J=Y+((Qn(E)|0)<<2)|0;k[J>>2]=c+(k[J>>2]|0)}U=k[G+(U<<2)>>2]|0}while((U|0)!=-1)}U=R+((Rn(E)|0)<<2)|0;J=k[U>>2]|0;if((J|0)!=-1){U=J;do{J=qh(k[A>>2]|0,k[P+(U<<2)>>2]|0)|0;Tc[k[(k[J>>2]|0)+88>>2]&15](J,j,l,E,V,z,d,e);J=(fo(E)|0)==0;c=k[j>>2]|0;if(J){J=I+((Qn(E)|0)<<2)|0;k[J>>2]=(k[J>>2]|0)+c;J=k[l>>2]|0;M=X+((Qn(E)|0)<<2)|0;k[M>>2]=(k[M>>2]|0)+J}else{J=(k[l>>2]|0)+c|0;c=Y+((Qn(E)|0)<<2)|0;k[c>>2]=J+(k[c>>2]|0)}U=k[F+(U<<2)>>2]|0}while((U|0)!=-1)}}t=t+1|0}while((t|0)<(th(k[q>>2]|0)|0))}Tqa(V);Tqa(z);Tqa(H);Tqa(D);Tqa(G);Tqa(P);Tqa(R);Tqa(F);fZ(Y,W,s,4,4,uY()|0)|0;Tqa(Y);if((d|0)==937){d=w>>>0>1073741823?-1:w<<2;w=Rqa(d)|0;Y=Rqa(d)|0;if((th(k[q>>2]|0)|0)<=0){Tqa(I);Tqa(X);Tqa(W);k[a>>2]=w;k[b>>2]=Y;r=f;return}d=v-x|0;v=0;s=0;while(1){F=qh(k[q>>2]|0,s)|0;if((Tn(F,k[h>>2]|0)|0?(fo(F)|0)==0:0)?(R=F+28|0,(k[R>>2]|0)>0):0){P=v;G=0;while(1){D=I+((Qn(F)|0)<<2)|0;H=k[D>>2]|0;D=W+((Qn(F)|0)<<2)|0;z=ma((k[D>>2]|0)+H|0,u)|0;H=w+(P<<2)|0;k[H>>2]=z;z=X+((Qn(F)|0)<<2)|0;D=k[z>>2]|0;z=W+((Qn(F)|0)<<2)|0;V=ma((k[z>>2]|0)+D|0,u)|0;D=Y+(P<<2)|0;k[D>>2]=V;if((k[H>>2]|0)>(x|0))k[H>>2]=x;if((V|0)>(d|0))k[D>>2]=d;D=P+1|0;G=G+1|0;if((G|0)>=(k[R>>2]|0)){Z=D;break}else P=D}}else Z=v;s=s+1|0;if((s|0)>=(th(k[q>>2]|0)|0))break;else v=Z}Tqa(I);Tqa(X);Tqa(W);k[a>>2]=w;k[b>>2]=Y;r=f;return}f=m+56|0;Y=m+4|0;k[m>>2]=27524;k[f>>2]=27544;B=0;wa(508,m+56|0,Y|0);b=B;B=0;if(b&1){b=Rb()|0;_=Q;$=b;vva(f);Qb($|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[f>>2]=27488;B=0;va(448,Y|0);b=B;B=0;do if(b&1){w=Rb()|0;aa=Q;ba=w}else{k[Y>>2]=27560;w=m+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[m+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,Y|0,g|0);a=B;B=0;if(a&1){a=Rb()|0;W=Q;Yua(g);Yua(w);Ava(Y);aa=W;ba=a;break}Yua(g);B=0;a=Ia(40,m|0,145128,20)|0;W=B;B=0;if(!(W&1)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,n|0,145149,106);W=B;B=0;do if(!(W&1)){B=0;eb(502,o|0,145256,14);X=B;B=0;if(X&1){X=Rb()|0;I=Q;Yua(n);ca=I;da=X;break}B=0;wa(510,p|0,Y|0);X=B;B=0;if(X&1){X=Rb()|0;ea=Q;fa=X;ga=1}else{B=0;ua(163,a|0,n|0,o|0,273,p|0);X=B;B=0;if(X&1)ha=1;else{B=0;eb(503,a|0,1240,229);B=0;ha=0}X=Rb()|0;I=Q;Yua(p);ea=I;fa=X;ga=ha}Yua(o);Yua(n);if(ga){ca=ea;da=fa}else{ia=ea;ja=fa;k[m>>2]=27468;k[f>>2]=27488;k[Y>>2]=27560;Yua(w);Ava(Y);vva(f);Qb(ja|0)}}else{X=Rb()|0;ca=Q;da=X}while(0);zb(a|0);ia=ca;ja=da;k[m>>2]=27468;k[f>>2]=27488;k[Y>>2]=27560;Yua(w);Ava(Y);vva(f);Qb(ja|0)}W=Rb()|0;ia=Q;ja=W;k[m>>2]=27468;k[f>>2]=27488;k[Y>>2]=27560;Yua(w);Ava(Y);vva(f);Qb(ja|0)}while(0);_=aa;$=ba;vva(f);Qb($|0)}function noa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;g=r;r=r+528|0;f=g+516|0;c=g+368|0;b=g+504|0;h=g+356|0;i=g+344|0;j=g+208|0;l=g+60|0;m=g+48|0;n=g+36|0;o=g+72|0;p=g+24|0;q=g+12|0;s=g;switch(bZ()|0){case 973:{t=Qqa(16)|0;k[t>>2]=28724;k[t+4>>2]=d;k[t+8>>2]=e;u=t+12|0;k[u>>2]=0;v=ma(e,d)|0;if(!v){k[a>>2]=t;r=g;return}B=0;d=ya(422,(v>>>0>536870911?-1:v<<3)|0)|0;e=B;B=0;if(e&1){e=Rb()|0;w=Q;Sqa(t);x=w;y=e;Qb(y|0)}else{WEa(d|0,0,v<<3|0)|0;k[u>>2]=d;k[a>>2]=t;r=g;return}break}case 974:{g=c+56|0;t=c+4|0;k[c>>2]=27524;k[g>>2]=27544;B=0;wa(508,c+56|0,t|0);a=B;B=0;if(a&1){a=Rb()|0;z=Q;A=a;vva(g);Qb(A|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[g>>2]=27488;B=0;va(448,t|0);a=B;B=0;do if(a&1){d=Rb()|0;C=Q;D=d}else{k[t>>2]=27560;d=c+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[c+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,t|0,f|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(f);Yua(d);Ava(t);C=v;D=u;break}Yua(f);B=0;u=Ia(40,c|0,145271,44)|0;v=B;B=0;a:do if(!(v&1)?(B=0,Xa(239,u|0,0)|0,e=B,B=0,!(e&1)):0){e=Ab(20)|0;B=0;eb(502,b|0,145316,134);w=B;B=0;do if(!(w&1)){B=0;eb(502,h|0,145451,7);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(b);G=F;H=E;break}B=0;wa(510,i|0,t|0);E=B;B=0;if(E&1){E=Rb()|0;I=E;J=Q;K=1}else{B=0;ua(163,e|0,b|0,h|0,131,i|0);E=B;B=0;if(E&1)L=1;else{B=0;eb(503,e|0,1240,229);B=0;L=0}E=Rb()|0;F=Q;Yua(i);I=E;J=F;K=L}Yua(h);Yua(b);if(K){G=J;H=I}else{M=J;N=I;break a}}else{F=Rb()|0;G=Q;H=F}while(0);zb(e|0);M=G;N=H}else O=22;while(0);if((O|0)==22){u=Rb()|0;M=Q;N=u}k[c>>2]=27468;k[g>>2]=27488;k[t>>2]=27560;Yua(d);Ava(t);vva(g);x=M;y=N;Qb(y|0)}while(0);z=C;A=D;vva(g);Qb(A|0);break}case 975:{A=j+56|0;g=j+4|0;k[j>>2]=27524;k[A>>2]=27544;B=0;wa(508,j+56|0,g|0);D=B;B=0;if(D&1){D=Rb()|0;P=Q;R=D;vva(A);Qb(R|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[A>>2]=27488;B=0;va(448,g|0);D=B;B=0;do if(D&1){C=Rb()|0;S=Q;T=C}else{k[g>>2]=27560;C=j+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[j+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,g|0,f|0);z=B;B=0;if(z&1){z=Rb()|0;N=Q;Yua(f);Yua(C);Ava(g);S=N;T=z;break}Yua(f);B=0;z=Ia(40,j|0,145459,45)|0;N=B;B=0;b:do if(!(N&1)?(B=0,Xa(239,z|0,0)|0,M=B,B=0,!(M&1)):0){M=Ab(20)|0;B=0;eb(502,l|0,145316,134);t=B;B=0;do if(!(t&1)){B=0;eb(502,m|0,145451,7);c=B;B=0;if(c&1){c=Rb()|0;H=Q;Yua(l);U=c;V=H;break}B=0;wa(510,n|0,g|0);H=B;B=0;if(H&1){H=Rb()|0;W=1;X=Q;Y=H}else{B=0;ua(163,M|0,l|0,m|0,138,n|0);H=B;B=0;if(H&1)Z=1;else{B=0;eb(503,M|0,1240,229);B=0;Z=0}H=Rb()|0;c=Q;Yua(n);W=Z;X=c;Y=H}Yua(m);Yua(l);if(W){U=Y;V=X}else{_=X;$=Y;break b}}else{H=Rb()|0;U=H;V=Q}while(0);zb(M|0);_=V;$=U}else O=45;while(0);if((O|0)==45){z=Rb()|0;_=Q;$=z}k[j>>2]=27468;k[A>>2]=27488;k[g>>2]=27560;Yua(C);Ava(g);vva(A);x=_;y=$;Qb(y|0)}while(0);P=S;R=T;vva(A);Qb(R|0);break}default:{R=o+56|0;A=o+4|0;k[o>>2]=27524;k[R>>2]=27544;B=0;wa(508,o+56|0,A|0);T=B;B=0;if(T&1){T=Rb()|0;aa=Q;ba=T;vva(R);Qb(ba|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[R>>2]=27488;B=0;va(448,A|0);T=B;B=0;do if(T&1){S=Rb()|0;ca=Q;da=S}else{k[A>>2]=27560;S=o+36|0;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;k[o+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,A|0,f|0);P=B;B=0;if(P&1){P=Rb()|0;$=Q;Yua(f);Yua(S);Ava(A);ca=$;da=P;break}Yua(f);B=0;P=Ia(40,o|0,145505,30)|0;$=B;B=0;c:do if(!($&1)?(B=0,Xa(239,P|0,0)|0,_=B,B=0,!(_&1)):0){_=Ab(20)|0;B=0;eb(502,p|0,145316,134);g=B;B=0;do if(!(g&1)){B=0;eb(502,q|0,145451,7);j=B;B=0;if(j&1){j=Rb()|0;U=Q;Yua(p);ea=j;fa=U;break}B=0;wa(510,s|0,A|0);U=B;B=0;if(U&1){U=Rb()|0;ga=1;ha=Q;ia=U}else{B=0;ua(163,_|0,p|0,q|0,142,s|0);U=B;B=0;if(U&1)ja=1;else{B=0;eb(503,_|0,1240,229);B=0;ja=0}U=Rb()|0;j=Q;Yua(s);ga=ja;ha=j;ia=U}Yua(q);Yua(p);if(ga){ea=ia;fa=ha}else{ka=ha;la=ia;break c}}else{U=Rb()|0;ea=U;fa=Q}while(0);zb(_|0);ka=fa;la=ea}else O=68;while(0);if((O|0)==68){P=Rb()|0;ka=Q;la=P}k[o>>2]=27468;k[R>>2]=27488;k[A>>2]=27560;Yua(S);Ava(A);vva(R);x=ka;y=la;Qb(y|0)}while(0);aa=ca;ba=da;vva(R);Qb(ba|0)}}}function ooa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0,R=0.0,S=0.0,T=0,U=0,V=0,W=0,X=0,Y=0;g=r;r=r+352|0;h=g+336|0;i=g+332|0;j=g+328|0;l=g+324|0;m=g+320|0;n=g+316|0;o=g+312|0;q=g+308|0;s=g+304|0;t=g+168|0;u=g+152|0;v=g+16|0;w=g;k[n>>2]=0;k[o>>2]=0;k[q>>2]=0;k[s>>2]=0;a:do if(BY()|0){x=t+56|0;y=t+4|0;k[t>>2]=27524;k[x>>2]=27544;B=0;wa(508,t+56|0,y|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;C=z;vva(x);Qb(C|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[x>>2]=27488;B=0;va(448,y|0);z=B;B=0;do if(z&1){D=Rb()|0;E=Q;F=D}else{k[y>>2]=27560;D=t+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[t+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,y|0,h|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(h);Yua(D);Ava(y);E=H;F=G;break}Yua(h);B=0;Ia(40,t|0,145536,22)|0;G=B;B=0;do if(!(G&1)?(B=0,wa(510,u|0,y|0),H=B,B=0,!(H&1)):0){B=0;ya(425,u|0)|0;H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(u);J=H;K=I;break}else{Yua(u);k[t>>2]=27468;k[x>>2]=27488;k[y>>2]=27560;Yua(D);Ava(y);vva(x);break a}}else L=14;while(0);if((L|0)==14){G=Rb()|0;J=G;K=Q}k[t>>2]=27468;k[x>>2]=27488;k[y>>2]=27560;Yua(D);Ava(y);vva(x);M=J;N=K;Qb(M|0)}while(0);A=E;C=F;vva(x);Qb(C|0)}while(0);C=f+44|0;cO(k[C>>2]|0,l,478);cO(k[C>>2]|0,m,477);C=n_(k[m>>2]|0)|0;m=f+36|0;F=aL(k[m>>2]|0,k[l>>2]|0)|0;if(F){k[h>>2]=0;loa(h,0,0,0,f);E=f+20|0;if((th(k[E>>2]|0)|0)>0){A=0;do{K=qh(k[E>>2]|0,A)|0;J=ed[k[(k[C>>2]|0)+44>>2]&511](C,K)|0;t=ed[k[(k[C>>2]|0)+48>>2]&511](C,K)|0;nd[k[(k[K>>2]|0)+408>>2]&1023](K,J,t);if(J){IN(J,k[h>>2]|0,0);HN(J);Sqa(J)}if(t){SN(t);Sqa(t)}A=A+1|0}while((A|0)<(th(k[E>>2]|0)|0))}if((bL(k[m>>2]|0)|0)>0){E=0;do{A=qh(k[m>>2]|0,E)|0;if(ed[k[(k[A>>2]|0)+60>>2]&511](A,k[l>>2]|0)|0)nd[k[(k[A>>2]|0)+40>>2]&1023](A,k[h>>2]|0,0);E=E+1|0}while((E|0)<(bL(k[m>>2]|0)|0))}E=k[h>>2]|0;if(k[E>>2]|0){A=k[k[E+4>>2]>>2]|0;Ec[k[(k[A>>2]|0)+12>>2]&1023](A);A=k[h>>2]|0;if(!(k[A>>2]|0)){O=A;P=0.0}else{t=k[k[A+4>>2]>>2]|0;R=+id[k[(k[t>>2]|0)+16>>2]&63](t,0);O=k[h>>2]|0;P=R}}else{O=E;P=0.0}if(O){if((k[O>>2]|0)!=0?(E=k[O+4>>2]|0,(E|0)!=0):0){t=k[E>>2]|0;if(t)Ec[k[(k[t>>2]|0)+4>>2]&1023](t);Sqa(E)}Sqa(O)}S=P}else S=0.0;loa(n,o,s,q,f);b:do if(BY()|0){O=k[n>>2]|0;if(k[O>>2]|0){E=k[k[O+4>>2]>>2]|0;nd[k[(k[E>>2]|0)+20>>2]&1023](E,i,j)}E=v+56|0;O=v+4|0;k[v>>2]=27524;k[E>>2]=27544;B=0;wa(508,v+56|0,O|0);t=B;B=0;if(t&1){t=Rb()|0;T=Q;U=t;vva(E);Qb(U|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[E>>2]=27488;B=0;va(448,O|0);t=B;B=0;do if(t&1){A=Rb()|0;V=Q;W=A}else{k[O>>2]=27560;A=v+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[v+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,O|0,h|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(h);Yua(A);Ava(O);V=K;W=J;break}Yua(h);B=0;J=Ia(40,v|0,145559,29)|0;K=B;B=0;do if(((((!(K&1)?(B=0,u=Xa(242,J|0,k[i>>2]|0)|0,y=B,B=0,!(y&1)):0)?(B=0,y=Ia(40,u|0,145589,3)|0,u=B,B=0,!(u&1)):0)?(B=0,u=Xa(242,y|0,k[j>>2]|0)|0,y=B,B=0,!(y&1)):0)?(B=0,Ia(40,u|0,145593,2)|0,u=B,B=0,!(u&1)):0)?(B=0,wa(510,w|0,O|0),u=B,B=0,!(u&1)):0){B=0;ya(425,w|0)|0;u=B;B=0;if(u&1){u=Rb()|0;y=Q;Yua(w);X=u;Y=y;break}else{Yua(w);k[v>>2]=27468;k[E>>2]=27488;k[O>>2]=27560;Yua(A);Ava(O);vva(E);break b}}else L=62;while(0);if((L|0)==62){J=Rb()|0;X=J;Y=Q}k[v>>2]=27468;k[E>>2]=27488;k[O>>2]=27560;Yua(A);Ava(O);vva(E);M=X;N=Y;Qb(M|0)}while(0);T=V;U=W;vva(E);Qb(U|0)}while(0);U=f+20|0;if((th(k[U>>2]|0)|0)>0){f=0;do{W=qh(k[U>>2]|0,f)|0;V=ed[k[(k[C>>2]|0)+44>>2]&511](C,W)|0;T=ed[k[(k[C>>2]|0)+48>>2]&511](C,W)|0;nd[k[(k[W>>2]|0)+408>>2]&1023](W,V,T);W=(V|0)==0;if(!W)IN(V,k[n>>2]|0,k[o>>2]|0);M=(T|0)==0;if(!M)TN(T,k[q>>2]|0);if(!W){HN(V);Sqa(V)}if(!M){SN(T);Sqa(T)}f=f+1|0}while((f|0)<(th(k[U>>2]|0)|0))}if((bL(k[m>>2]|0)|0)>0){f=0;do{T=qh(k[m>>2]|0,f)|0;if(ed[k[(k[T>>2]|0)+60>>2]&511](T,k[l>>2]|0)|0){nd[k[(k[T>>2]|0)+40>>2]&1023](T,k[n>>2]|0,k[o>>2]|0);Fc[k[(k[T>>2]|0)+44>>2]&1023](T,k[q>>2]|0)}f=f+1|0}while((f|0)<(bL(k[m>>2]|0)|0))}if(F?(bL(k[m>>2]|0)|0)>0:0){F=0;do{f=qh(k[m>>2]|0,F)|0;if(ed[k[(k[f>>2]|0)+60>>2]&511](f,k[l>>2]|0)|0){md[k[(k[f>>2]|0)+72>>2]&31](f,k[n>>2]|0,k[o>>2]|0,S);Xc[k[(k[f>>2]|0)+76>>2]&63](f,k[q>>2]|0,S)}F=F+1|0}while((F|0)<(bL(k[m>>2]|0)|0))}m=(d|0)!=0;if(m?(th(k[U>>2]|0)|0)>0:0){F=0;do{l=qh(k[U>>2]|0,F)|0;f=ed[k[(k[C>>2]|0)+36>>2]&511](C,l)|0;if(f){UN(f,k[s>>2]|0);SN(f);Sqa(f)}F=F+1|0}while((F|0)<(th(k[U>>2]|0)|0))}U=k[n>>2]|0;if(k[U>>2]|0){F=k[k[U+4>>2]>>2]|0;Ec[k[(k[F>>2]|0)+12>>2]&1023](F)}F=k[o>>2]|0;if(k[F>>2]|0){U=k[k[F+4>>2]>>2]|0;Ec[k[(k[U>>2]|0)+12>>2]&1023](U)}U=k[q>>2]|0;if(k[U>>2]|0){F=k[k[U+4>>2]>>2]|0;Ec[k[(k[F>>2]|0)+12>>2]&1023](F)}F=k[s>>2]|0;if(k[F>>2]|0){U=k[k[F+4>>2]>>2]|0;Ec[k[(k[U>>2]|0)+12>>2]&1023](U)}if(C)Ec[k[(k[C>>2]|0)+4>>2]&1023](C);C=k[n>>2]|0;if(!a){if(C){if((k[C>>2]|0)!=0?(n=k[C+4>>2]|0,(n|0)!=0):0){U=k[n>>2]|0;if(U)Ec[k[(k[U>>2]|0)+4>>2]&1023](U);Sqa(n)}Sqa(C)}}else k[a>>2]=C;C=k[o>>2]|0;if(!b){if(C){if((k[C>>2]|0)!=0?(o=k[C+4>>2]|0,(o|0)!=0):0){a=k[o>>2]|0;if(a)Ec[k[(k[a>>2]|0)+4>>2]&1023](a);Sqa(o)}Sqa(C)}}else k[b>>2]=C;C=k[q>>2]|0;if(!c){if(C){if((k[C>>2]|0)!=0?(q=k[C+4>>2]|0,(q|0)!=0):0){b=k[q>>2]|0;if(b)Ec[k[(k[b>>2]|0)+4>>2]&1023](b);Sqa(q)}Sqa(C)}}else k[c>>2]=C;C=k[s>>2]|0;if(!m){if(C){do if(k[C>>2]|0){m=k[C+4>>2]|0;if(!m)break;s=k[m>>2]|0;if(s)Ec[k[(k[s>>2]|0)+4>>2]&1023](s);Sqa(m)}while(0);Sqa(C)}}else k[d>>2]=C;if(!e){r=g;return}p[e>>3]=S;r=g;return}function poa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;d=r;r=r+176|0;e=d+152|0;f=d+16|0;g=d;a:do if(BY()|0){h=f+56|0;i=f+4|0;k[f>>2]=27524;k[h>>2]=27544;B=0;wa(508,f+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(h);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[h>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=f+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,i|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);Yua(n);Ava(i);o=s;p=q;break}Yua(e);B=0;Ia(40,f|0,145596,28)|0;q=B;B=0;do if(!(q&1)?(B=0,wa(510,g|0,i|0),s=B,B=0,!(s&1)):0){B=0;ya(425,g|0)|0;s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(g);u=t;v=s;break}else{Yua(g);k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);break a}}else w=14;while(0);if((w|0)==14){q=Rb()|0;u=Q;v=q}k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);x=u;y=v;Qb(y|0)}while(0);l=o;m=p;vva(h);Qb(m|0)}while(0);m=en(b,c,966)|0;p=fn(b,c,966)|0;o=Qqa(8)|0;B=0;va(485,o|0);l=B;B=0;b:do if(l&1)w=24;else{do if(k[o>>2]|0){B=0;v=ya(423,4)|0;u=B;B=0;if(u&1){w=24;break b}B=0;eb(525,v|0,p|0,m|0);u=B;B=0;if(u&1){u=Rb()|0;f=Q;Sqa(v);z=f;A=u;break b}else{k[o+4>>2]=v;break}}while(0);if((th(b)|0)>0){h=0;do{v=qh(b,h)|0;if(Tn(v,c)|0)_n(v,o);h=h+1|0}while((h|0)<(th(b)|0))}if(!(k[o>>2]|0)){k[a>>2]=o;r=d;return}h=k[k[o+4>>2]>>2]|0;Ec[k[(k[h>>2]|0)+12>>2]&1023](h);k[a>>2]=o;r=d;return}while(0);if((w|0)==24){w=Rb()|0;z=Q;A=w}Sqa(o);x=z;y=A;Qb(y|0)}function qoa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;g=r;r=r+384|0;h=g+372|0;i=g+368|0;j=g+364|0;l=g+360|0;m=g+356|0;n=g+352|0;o=g+216|0;p=g+200|0;q=g+48|0;s=g+36|0;t=g+64|0;u=g+24|0;v=g+12|0;w=g;k[l>>2]=0;Oka(b,i,j,c)|0;if((k[i>>2]|0)!=7){i=o+56|0;x=o+4|0;k[o>>2]=27524;k[i>>2]=27544;B=0;wa(508,o+56|0,x|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(i);Qb(A|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[i>>2]=27488;B=0;va(448,x|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[x>>2]=27560;C=o+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[o+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,x|0,h|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(h);Yua(C);Ava(x);D=G;E=F;break}Yua(h);B=0;F=Ia(40,o|0,145625,46)|0;G=B;B=0;a:do if((!(G&1)?(H=Lta(c)|0,B=0,I=Ia(40,F|0,c|0,H|0)|0,H=B,B=0,!(H&1)):0)?(B=0,Xa(239,I|0,0)|0,I=B,B=0,!(I&1)):0){I=Ab(20)|0;B=0;eb(502,p|0,145672,102);H=B;B=0;do if(!(H&1)){B=0;eb(502,q|0,145775,21);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(p);L=J;M=K;break}B=0;wa(510,s|0,x|0);K=B;B=0;if(K&1){K=Rb()|0;N=Q;O=K;P=1}else{B=0;ua(163,I|0,p|0,q|0,19,s|0);K=B;B=0;if(K&1)R=1;else{B=0;eb(503,I|0,1240,229);B=0;R=0}K=Rb()|0;J=Q;Yua(s);N=J;O=K;P=R}Yua(q);Yua(p);if(P){L=O;M=N}else{S=O;T=N;break a}}else{K=Rb()|0;L=K;M=Q}while(0);zb(I|0);S=L;T=M}else U=18;while(0);if((U|0)==18){F=Rb()|0;S=F;T=Q}k[o>>2]=27468;k[i>>2]=27488;k[x>>2]=27560;Yua(C);Ava(x);vva(i);V=T;W=S;Qb(W|0)}while(0);z=D;A=E;vva(i);Qb(A|0)}if((k[j>>2]|0)==1){Qka(b,l,m,n,c);roa(a,b,k[l>>2]|0,k[m>>2]|0,k[n>>2]|0,d,e,f);f=k[l>>2]|0;if(!f){r=g;return}Tqa(f);r=g;return}g=t+56|0;f=t+4|0;k[t>>2]=27524;k[g>>2]=27544;B=0;wa(508,t+56|0,f|0);l=B;B=0;if(l&1){l=Rb()|0;X=Q;Y=l;vva(g);Qb(Y|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[g>>2]=27488;B=0;va(448,f|0);l=B;B=0;do if(l&1){e=Rb()|0;Z=Q;_=e}else{k[f>>2]=27560;e=t+36|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[t+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,f|0,h|0);d=B;B=0;if(d&1){d=Rb()|0;n=Q;Yua(h);Yua(e);Ava(f);Z=n;_=d;break}Yua(h);B=0;d=Ia(40,t|0,145797,41)|0;n=B;B=0;b:do if((!(n&1)?(m=Lta(c)|0,B=0,b=Ia(40,d|0,c|0,m|0)|0,m=B,B=0,!(m&1)):0)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,u|0,145672,102);m=B;B=0;do if(!(m&1)){B=0;eb(502,v|0,145775,21);a=B;B=0;if(a&1){a=Rb()|0;j=Q;Yua(u);$=a;aa=j;break}B=0;wa(510,w|0,f|0);j=B;B=0;if(j&1){j=Rb()|0;ba=1;ca=Q;da=j}else{B=0;ua(163,b|0,u|0,v|0,20,w|0);j=B;B=0;if(j&1)ea=1;else{B=0;eb(503,b|0,1240,229);B=0;ea=0}j=Rb()|0;a=Q;Yua(w);ba=ea;ca=a;da=j}Yua(v);Yua(u);if(ba){$=da;aa=ca}else{fa=ca;ga=da;break b}}else{j=Rb()|0;$=j;aa=Q}while(0);zb(b|0);fa=aa;ga=$}else U=43;while(0);if((U|0)==43){d=Rb()|0;fa=Q;ga=d}k[t>>2]=27468;k[g>>2]=27488;k[f>>2]=27560;Yua(e);Ava(f);vva(g);V=fa;W=ga;Qb(W|0)}while(0);X=Z;Y=_;vva(g);Qb(Y|0)}function roa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,La=0,Ma=0,Na=0,Oa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0.0,ab=0.0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0.0,kb=0,lb=0,mb=0,nb=0,ob=0.0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0.0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0.0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0.0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0.0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0;j=r;r=r+1088|0;l=j+1064|0;m=j+1036|0;n=j+1020|0;o=j+1016|0;q=j+880|0;s=j+1052|0;u=j+1040|0;v=j+1024|0;w=j+728|0;x=j+864|0;y=j+712|0;z=j+560|0;A=j+576|0;C=j+272|0;D=j+120|0;E=j+108|0;F=j+424|0;G=j+96|0;H=j+84|0;I=j+72|0;J=j+288|0;K=j+60|0;L=j+48|0;M=j+36|0;N=j+136|0;O=j+24|0;P=j+12|0;R=j;k[m>>2]=0;k[n>>2]=0;k[o>>2]=0;a:do switch(g|0){case 741:case 738:{S=0;break}case 740:{switch(k[b+48>>2]|0){case 621:{S=3;break a;break}case 623:{S=4;break a;break}case 625:{S=6;break a;break}default:{T=q+56|0;U=q+4|0;k[q>>2]=27524;k[T>>2]=27544;B=0;wa(508,q+56|0,U|0);V=B;B=0;if(V&1){V=Rb()|0;W=Q;X=V;vva(T);Qb(X|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[T>>2]=27488;B=0;va(448,U|0);V=B;B=0;do if(V&1){Y=Rb()|0;Z=Q;_=Y}else{k[U>>2]=27560;Y=q+36|0;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;k[q+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,U|0,l|0);aa=B;B=0;if(aa&1){aa=Rb()|0;ba=Q;Yua(l);Yua(Y);Ava(U);Z=ba;_=aa;break}Yua(l);B=0;aa=Ia(40,q|0,145839,27)|0;ba=B;B=0;b:do if(!(ba&1)?(B=0,Xa(239,aa|0,0)|0,ca=B,B=0,!(ca&1)):0){ca=Ab(20)|0;B=0;eb(502,s|0,145672,102);da=B;B=0;do if(!(da&1)){B=0;eb(502,u|0,145775,21);ea=B;B=0;if(ea&1){ea=Rb()|0;fa=Q;Yua(s);ga=fa;ha=ea;break}B=0;wa(510,v|0,U|0);ea=B;B=0;if(ea&1){ea=Rb()|0;ia=Q;ja=ea;ka=1}else{B=0;ua(163,ca|0,s|0,u|0,77,v|0);ea=B;B=0;if(ea&1)la=1;else{B=0;eb(503,ca|0,1240,229);B=0;la=0}ea=Rb()|0;fa=Q;Yua(v);ia=fa;ja=ea;ka=la}Yua(u);Yua(s);if(ka){ga=ia;ha=ja}else{na=ia;oa=ja;break b}}else{ea=Rb()|0;ga=Q;ha=ea}while(0);zb(ca|0);na=ga;oa=ha}else pa=20;while(0);if((pa|0)==20){aa=Rb()|0;na=Q;oa=aa}k[q>>2]=27468;k[T>>2]=27488;k[U>>2]=27560;Yua(Y);Ava(U);vva(T);qa=na;ra=oa;Qb(ra|0)}while(0);W=Z;X=_;vva(T);Qb(X|0)}}break}case 746:{lqa(m,b);S=0;break}case 747:{lqa(m,b);S=0;break}case 745:{lqa(m,b);S=0;break}case 742:{lqa(m,b);if((k[b+48>>2]|0)==625)mqa(n,b);oqa(o,b);S=0;break}case 743:{lqa(m,b);U=b+48|0;if((k[U>>2]|0)==625)mqa(n,b);oqa(o,b);switch(k[U>>2]|0){case 621:{S=3;break a;break}case 623:{S=4;break a;break}case 625:{S=6;break a;break}default:{U=w+56|0;V=w+4|0;k[w>>2]=27524;k[U>>2]=27544;B=0;wa(508,w+56|0,V|0);aa=B;B=0;if(aa&1){aa=Rb()|0;sa=Q;ta=aa;vva(U);Qb(ta|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[U>>2]=27488;B=0;va(448,V|0);aa=B;B=0;do if(aa&1){ba=Rb()|0;xa=Q;za=ba}else{k[V>>2]=27560;ba=w+36|0;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;k[w+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,V|0,l|0);da=B;B=0;if(da&1){da=Rb()|0;ea=Q;Yua(l);Yua(ba);Ava(V);xa=ea;za=da;break}Yua(l);B=0;da=Ia(40,w|0,145839,27)|0;ea=B;B=0;c:do if(!(ea&1)?(B=0,Xa(239,da|0,0)|0,fa=B,B=0,!(fa&1)):0){fa=Ab(20)|0;B=0;eb(502,x|0,145672,102);Aa=B;B=0;do if(!(Aa&1)){B=0;eb(502,y|0,145775,21);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;Ca=Q;Yua(x);Da=Ca;Ea=Ba;break}B=0;wa(510,z|0,V|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;Fa=1;Ga=Q;Ha=Ba}else{B=0;ua(163,fa|0,x|0,y|0,109,z|0);Ba=B;B=0;if(Ba&1)Ja=1;else{B=0;eb(503,fa|0,1240,229);B=0;Ja=0}Ba=Rb()|0;Ca=Q;Yua(z);Fa=Ja;Ga=Ca;Ha=Ba}Yua(y);Yua(x);if(Fa){Da=Ga;Ea=Ha}else{La=Ga;Ma=Ha;break c}}else{Ba=Rb()|0;Da=Q;Ea=Ba}while(0);zb(fa|0);La=Da;Ma=Ea}else pa=54;while(0);if((pa|0)==54){da=Rb()|0;La=Q;Ma=da}k[w>>2]=27468;k[U>>2]=27488;k[V>>2]=27560;Yua(ba);Ava(V);vva(U);qa=La;ra=Ma;Qb(ra|0)}while(0);sa=xa;ta=za;vva(U);Qb(ta|0)}}break}case 748:{lqa(m,b);mqa(n,b);S=0;break}default:{V=A+56|0;aa=A+4|0;k[A>>2]=27524;k[V>>2]=27544;B=0;wa(508,A+56|0,aa|0);T=B;B=0;if(T&1){T=Rb()|0;Na=Q;Oa=T;vva(V);Qb(Oa|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[V>>2]=27488;B=0;va(448,aa|0);T=B;B=0;do if(T&1){da=Rb()|0;Qa=Q;Ra=da}else{k[aa>>2]=27560;da=A+36|0;k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;k[da+12>>2]=0;k[A+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,aa|0,l|0);ea=B;B=0;if(ea&1){ea=Rb()|0;Y=Q;Yua(l);Yua(da);Ava(aa);Qa=Y;Ra=ea;break}Yua(l);B=0;ea=Ia(40,A|0,145867,15)|0;Y=B;B=0;d:do if((((!(Y&1)?(B=0,Aa=ya(427,g|0)|0,ca=B,B=0,!(ca&1)):0)?(ca=Lta(Aa)|0,B=0,Ba=Ia(40,ea|0,Aa|0,ca|0)|0,ca=B,B=0,!(ca&1)):0)?(B=0,ca=Ia(40,Ba|0,146481,18)|0,Ba=B,B=0,!(Ba&1)):0)?(B=0,Xa(239,ca|0,0)|0,ca=B,B=0,!(ca&1)):0){ca=Ab(20)|0;B=0;eb(502,C|0,145672,102);Ba=B;B=0;do if(!(Ba&1)){B=0;eb(502,D|0,145775,21);Aa=B;B=0;if(Aa&1){Aa=Rb()|0;Ca=Q;Yua(C);Sa=Ca;Ta=Aa;break}B=0;wa(510,E|0,aa|0);Aa=B;B=0;if(Aa&1){Aa=Rb()|0;Ua=1;Va=Q;Wa=Aa}else{B=0;ua(163,ca|0,C|0,D|0,117,E|0);Aa=B;B=0;if(Aa&1)Ya=1;else{B=0;eb(503,ca|0,1240,229);B=0;Ya=0}Aa=Rb()|0;Ca=Q;Yua(E);Ua=Ya;Va=Ca;Wa=Aa}Yua(D);Yua(C);if(Ua){Sa=Va;Ta=Wa}else{Za=Va;_a=Wa;break d}}else{Aa=Rb()|0;Sa=Q;Ta=Aa}while(0);zb(ca|0);Za=Sa;_a=Ta}else pa=81;while(0);if((pa|0)==81){ea=Rb()|0;Za=Q;_a=ea}k[A>>2]=27468;k[V>>2]=27488;k[aa>>2]=27560;Yua(da);Ava(aa);vva(V);qa=Za;ra=_a;Qb(ra|0)}while(0);Na=Qa;Oa=Ra;vva(V);Qb(Oa|0)}}while(0);Oa=b+52|0;Ra=k[Oa>>2]|0;e:do if((Ra|0)==(d|0))do switch(g|0){case 738:{if((d|0)<=0)break e;Qa=b+36|0;Na=b+108|0;_a=b+100|0;Za=d;A=0;Ta=0;while(1){if((k[(k[Qa>>2]|0)+(Ta<<2)>>2]|0)!=0?($a=+p[c+(Ta<<3)>>3],ab=+$(+$a),p[t>>3]=ab,Sa=k[t+4>>2]|0,!(Sa>>>0>2146435072|(Sa|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){Sa=Qqa(32)|0;Wa=A+1|0;B=0;Pa(1,Sa|0,Wa+(k[Na>>2]|0)|0,Ta+1+(k[_a>>2]|0)|0,h|0,+$a,f|0);Va=B;B=0;if(Va&1){bb=Sa;break}ih(a,Sa)|0;cb=k[Oa>>2]|0;db=Wa}else{cb=Za;db=A}Ta=Ta+1|0;if((Ta|0)>=(cb|0))break e;else{Za=cb;A=db}}A=Rb()|0;Za=Q;Sqa(bb);qa=Za;ra=A;Qb(ra|0);break}case 742:{f:do if((d|0)>0){A=b+36|0;Za=b+108|0;Ta=b+100|0;_a=d;Na=0;Qa=0;while(1){if((k[(k[A>>2]|0)+(Qa<<2)>>2]|0)!=0?($a=+p[c+(Qa<<3)>>3],ab=+$(+$a),p[t>>3]=ab,da=k[t+4>>2]|0,!(da>>>0>2146435072|(da|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){da=Qqa(32)|0;Wa=Na+1|0;B=0;Pa(1,da|0,Wa+(k[Za>>2]|0)|0,Qa+1+(k[Ta>>2]|0)|0,h|0,+$a,f|0);Sa=B;B=0;if(Sa&1){fb=da;break}ih(a,da)|0;gb=k[Oa>>2]|0;hb=Wa}else{gb=_a;hb=Na}Qa=Qa+1|0;if((Qa|0)>=(gb|0)){ib=hb;break f}else{_a=gb;Na=hb}}Na=Rb()|0;_a=Q;Sqa(fb);qa=_a;ra=Na;Qb(ra|0)}else ib=0;while(0);Na=b+64|0;_a=k[Na>>2]|0;g:do if((_a|0)>0){Qa=b+80|0;Ta=b+108|0;Za=b+100|0;A=_a;ca=ib;Wa=0;while(1){if((((i[(k[m>>2]|0)+Wa>>0]|0)!=0?(i[(k[o>>2]|0)+Wa>>0]|0)!=0:0)?(da=Wa*3|0,Sa=k[Qa>>2]|0,$a=+p[c+((k[Sa+(da<<2)>>2]|0)+-1<<3)>>3],ab=+$(+$a),p[t>>3]=ab,Va=k[t+4>>2]|0,!(Va>>>0>2146435072|(Va|0)==2146435072&(k[t>>2]|0)>>>0>0)):0)?(ab=+p[c+((k[Sa+(da+1<<2)>>2]|0)+-1<<3)>>3],jb=+$(+ab),p[t>>3]=jb,da=k[t+4>>2]|0,!(da>>>0>2146435072|(da|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){da=Qqa(32)|0;Sa=ca+1|0;B=0;Pa(1,da|0,Sa+(k[Ta>>2]|0)|0,Wa+1+(k[Za>>2]|0)+(k[Oa>>2]|0)|0,h|0,+(($a+ab)*.5),f|0);Va=B;B=0;if(Va&1){kb=da;break}ih(a,da)|0;lb=k[Na>>2]|0;mb=Sa}else{lb=A;mb=ca}Wa=Wa+1|0;if((Wa|0)>=(lb|0)){nb=mb;break g}else{A=lb;ca=mb}}ca=Rb()|0;A=Q;Sqa(kb);qa=A;ra=ca;Qb(ra|0)}else nb=ib;while(0);if((k[b+48>>2]|0)!=625)break e;_a=b+60|0;ca=k[_a>>2]|0;if((ca|0)<=0)break e;A=b+68|0;Wa=b+76|0;Za=b+108|0;Ta=b+100|0;Qa=ca;ca=nb;Sa=0;while(1){da=ma(k[A>>2]|0,Sa)|0;Va=k[Wa>>2]|0;if((k[Va+(da+2<<2)>>2]|0)==2?(i[(k[n>>2]|0)+Sa>>0]|0)!=0:0){Ua=k[Va+(da+3<<2)>>2]|0;if((Ua|0)>0){C=0;ab=0.0;while(1){$a=ab+ +p[c+((k[Va+(C+4+da<<2)>>2]|0)+-1<<3)>>3];C=C+1|0;if((C|0)==(Ua|0)){ob=$a;break}else ab=$a}}else ob=0.0;ab=ob/+(Ua|0);$a=+$(+ab);p[t>>3]=$a;C=k[t+4>>2]|0;if(!(C>>>0>2146435072|(C|0)==2146435072&(k[t>>2]|0)>>>0>0)){C=Qqa(32)|0;da=ca+1|0;B=0;Pa(1,C|0,da+(k[Za>>2]|0)|0,Sa+1+(k[Ta>>2]|0)+(k[Oa>>2]|0)+(k[Na>>2]|0)|0,h|0,+ab,f|0);Va=B;B=0;if(Va&1){pb=C;break}ih(a,C)|0;qb=k[_a>>2]|0;rb=da}else{qb=Qa;rb=ca}}else{qb=Qa;rb=ca}Sa=Sa+1|0;if((Sa|0)>=(qb|0))break e;else{Qa=qb;ca=rb}}ca=Rb()|0;Qa=Q;Sqa(pb);qa=Qa;ra=ca;Qb(ra|0);break}case 743:{h:do if((d|0)>0){ca=b+36|0;Qa=b+108|0;Sa=b+100|0;_a=d;Na=0;Ta=0;while(1){if((k[(k[ca>>2]|0)+(Ta<<2)>>2]|0)!=0?(ab=+p[c+(Ta<<3)>>3],$a=+$(+ab),p[t>>3]=$a,Za=k[t+4>>2]|0,!(Za>>>0>2146435072|(Za|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){Za=Qqa(32)|0;Wa=Na+1|0;B=0;Pa(1,Za|0,Wa+(k[Qa>>2]|0)|0,Ta+1+(k[Sa>>2]|0)|0,h|0,+ab,f|0);A=B;B=0;if(A&1){sb=Za;break}ih(a,Za)|0;tb=k[Oa>>2]|0;ub=Wa}else{tb=_a;ub=Na}Ta=Ta+1|0;if((Ta|0)>=(tb|0)){vb=ub;break h}else{_a=tb;Na=ub}}Na=Rb()|0;_a=Q;Sqa(sb);qa=_a;ra=Na;Qb(ra|0)}else vb=0;while(0);Na=b+64|0;_a=k[Na>>2]|0;i:do if((_a|0)>0){Ta=b+80|0;Sa=b+108|0;Qa=b+100|0;ca=_a;Ua=vb;Wa=0;while(1){if((((i[(k[m>>2]|0)+Wa>>0]|0)!=0?(i[(k[o>>2]|0)+Wa>>0]|0)!=0:0)?(Za=Wa*3|0,A=k[Ta>>2]|0,ab=+p[c+((k[A+(Za<<2)>>2]|0)+-1<<3)>>3],$a=+$(+ab),p[t>>3]=$a,da=k[t+4>>2]|0,!(da>>>0>2146435072|(da|0)==2146435072&(k[t>>2]|0)>>>0>0)):0)?($a=+p[c+((k[A+(Za+1<<2)>>2]|0)+-1<<3)>>3],jb=+$(+$a),p[t>>3]=jb,Za=k[t+4>>2]|0,!(Za>>>0>2146435072|(Za|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){Za=Qqa(32)|0;A=Ua+1|0;B=0;Pa(1,Za|0,A+(k[Sa>>2]|0)|0,Wa+1+(k[Qa>>2]|0)+(k[Oa>>2]|0)|0,h|0,+((ab+$a)*.5),f|0);da=B;B=0;if(da&1){wb=Za;break}ih(a,Za)|0;xb=k[Na>>2]|0;yb=A}else{xb=ca;yb=Ua}Wa=Wa+1|0;if((Wa|0)>=(xb|0)){Bb=yb;break i}else{ca=xb;Ua=yb}}Ua=Rb()|0;ca=Q;Sqa(wb);qa=ca;ra=Ua;Qb(ra|0)}else Bb=vb;while(0);_a=b+48|0;j:do if((k[_a>>2]|0)==625?(Ua=b+60|0,ca=k[Ua>>2]|0,(ca|0)>0):0){Wa=b+68|0;Qa=b+76|0;Sa=b+108|0;Ta=b+100|0;A=ca;ca=Bb;Za=0;while(1){da=ma(k[Wa>>2]|0,Za)|0;C=k[Qa>>2]|0;if((k[C+(da+2<<2)>>2]|0)==2?(i[(k[n>>2]|0)+Za>>0]|0)!=0:0){Va=k[C+(da+3<<2)>>2]|0;if((Va|0)>0){D=0;$a=0.0;while(1){ab=$a+ +p[c+((k[C+(D+4+da<<2)>>2]|0)+-1<<3)>>3];D=D+1|0;if((D|0)==(Va|0)){Cb=ab;break}else $a=ab}}else Cb=0.0;$a=Cb/+(Va|0);ab=+$(+$a);p[t>>3]=ab;D=k[t+4>>2]|0;if(!(D>>>0>2146435072|(D|0)==2146435072&(k[t>>2]|0)>>>0>0)){D=Qqa(32)|0;da=ca+1|0;B=0;Pa(1,D|0,da+(k[Sa>>2]|0)|0,Za+1+(k[Ta>>2]|0)+(k[Oa>>2]|0)+(k[Na>>2]|0)|0,h|0,+$a,f|0);C=B;B=0;if(C&1){Db=D;break}ih(a,D)|0;Eb=k[Ua>>2]|0;Fb=da}else{Eb=A;Fb=ca}}else{Eb=A;Fb=ca}Za=Za+1|0;if((Za|0)>=(Eb|0)){Gb=Fb;break j}else{A=Eb;ca=Fb}}ca=Rb()|0;A=Q;Sqa(Db);qa=A;ra=ca;Qb(ra|0)}else Gb=Bb;while(0);ca=b+56|0;A=k[ca>>2]|0;if((A|0)<=0)break e;Za=b+32|0;Ua=b+72|0;$a=+(S|0);Ta=b+100|0;Sa=b+60|0;Qa=b+108|0;if((S|0)>1){Wa=A;da=Gb;D=0;while(1){if(i[(k[Za>>2]|0)+D>>0]|0){C=ma(D,S)|0;Ya=k[Ua>>2]|0;E=1;ab=+p[c+((k[Ya+(C<<2)>>2]|0)+-1<<3)>>3];while(1){jb=ab+ +p[c+((k[Ya+(E+C<<2)>>2]|0)+-1<<3)>>3];E=E+1|0;if((E|0)==(S|0)){Hb=jb;break}else ab=jb}ab=Hb/$a;jb=+$(+ab);p[t>>3]=jb;E=k[t+4>>2]|0;if(!(E>>>0>2146435072|(E|0)==2146435072&(k[t>>2]|0)>>>0>0)){E=D+1+(k[Ta>>2]|0)+(k[Oa>>2]|0)+(k[Na>>2]|0)|0;if((k[_a>>2]|0)==625)Ib=(k[Sa>>2]|0)+E|0;else Ib=E;E=Qqa(32)|0;C=da+1|0;B=0;Pa(1,E|0,C+(k[Qa>>2]|0)|0,Ib|0,h|0,+ab,f|0);Ya=B;B=0;if(Ya&1){Jb=E;break}ih(a,E)|0;Kb=k[ca>>2]|0;Lb=C}else{Kb=Wa;Lb=da}}else{Kb=Wa;Lb=da}D=D+1|0;if((D|0)>=(Kb|0))break e;else{Wa=Kb;da=Lb}}da=Rb()|0;Mb=da;Nb=Q;Ob=Jb}else{da=A;Wa=Gb;D=0;while(1){if((i[(k[Za>>2]|0)+D>>0]|0)!=0?(C=ma(D,S)|0,ab=+p[c+((k[(k[Ua>>2]|0)+(C<<2)>>2]|0)+-1<<3)>>3]/$a,jb=+$(+ab),p[t>>3]=jb,C=k[t+4>>2]|0,!(C>>>0>2146435072|(C|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){C=D+1+(k[Ta>>2]|0)+(k[Oa>>2]|0)+(k[Na>>2]|0)|0;if((k[_a>>2]|0)==625)Pb=(k[Sa>>2]|0)+C|0;else Pb=C;C=Qqa(32)|0;E=Wa+1|0;B=0;Pa(1,C|0,E+(k[Qa>>2]|0)|0,Pb|0,h|0,+ab,f|0);Ya=B;B=0;if(Ya&1){Sb=C;break}ih(a,C)|0;Tb=k[ca>>2]|0;Ub=E}else{Tb=da;Ub=Wa}D=D+1|0;if((D|0)>=(Tb|0))break e;else{da=Tb;Wa=Ub}}Wa=Rb()|0;Mb=Wa;Nb=Q;Ob=Sb}Sqa(Ob);qa=Nb;ra=Mb;Qb(ra|0);break}case 748:{k:do if((d|0)>0){Wa=b+36|0;da=b+108|0;D=b+100|0;ca=d;Qa=0;Sa=0;while(1){if((k[(k[Wa>>2]|0)+(Sa<<2)>>2]|0)!=0?($a=+p[c+(Sa<<3)>>3],ab=+$(+$a),p[t>>3]=ab,_a=k[t+4>>2]|0,!(_a>>>0>2146435072|(_a|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){_a=Qqa(32)|0;Na=Qa+1|0;B=0;Pa(1,_a|0,Na+(k[da>>2]|0)|0,Sa+1+(k[D>>2]|0)|0,h|0,+$a,f|0);Ta=B;B=0;if(Ta&1){Vb=_a;break}ih(a,_a)|0;Wb=k[Oa>>2]|0;Xb=Na}else{Wb=ca;Xb=Qa}Sa=Sa+1|0;if((Sa|0)>=(Wb|0)){Yb=Xb;break k}else{ca=Wb;Qa=Xb}}Qa=Rb()|0;ca=Q;Sqa(Vb);qa=ca;ra=Qa;Qb(ra|0)}else Yb=0;while(0);Qa=b+64|0;l:do if((k[Qa>>2]|0)>0){ca=b+80|0;Sa=b+108|0;D=b+100|0;da=Yb;Wa=0;while(1){Na=Wa*3|0;_a=Na+2|0;Ta=k[ca>>2]|0;Ua=k[Ta+(_a<<2)>>2]|0;if((Ua|0)==2)if(((i[(k[m>>2]|0)+Wa>>0]|0)!=0?(Za=c+((k[Ta+(Na<<2)>>2]|0)+-1<<3)|0,$a=+p[Za>>3],ab=+$(+$a),p[t>>3]=ab,A=k[t+4>>2]|0,!(A>>>0>2146435072|(A|0)==2146435072&(k[t>>2]|0)>>>0>0)):0)?(A=Na+1|0,E=c+((k[Ta+(A<<2)>>2]|0)+-1<<3)|0,ab=+p[E>>3],jb=+$(+ab),p[t>>3]=jb,C=k[t+4>>2]|0,!(C>>>0>2146435072|(C|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){C=Qqa(32)|0;B=0;Pa(1,C|0,da+1+(k[Sa>>2]|0)|0,A+(k[D>>2]|0)+(k[Oa>>2]|0)|0,h|0,+($a*.5+ab*.5),f|0);A=B;B=0;if(A&1){Zb=C;pa=210;break}ih(a,C)|0;C=Qqa(32)|0;B=0;Pa(1,C|0,da+2+(k[Sa>>2]|0)|0,_a+(k[D>>2]|0)+(k[Oa>>2]|0)|0,h|0,+(+p[Za>>3]*.5+ +p[E>>3]*.5),f|0);A=B;B=0;if(A&1){_b=C;pa=211;break}ih(a,C)|0;C=Qqa(32)|0;A=da+3|0;B=0;Pa(1,C|0,A+(k[Sa>>2]|0)|0,Na+3+(k[D>>2]|0)+(k[Oa>>2]|0)|0,h|0,+(+p[Za>>3]*.5+ +p[E>>3]*.5),f|0);E=B;B=0;if(E&1){$b=C;pa=212;break}ih(a,C)|0;C=k[ca>>2]|0;ac=k[C+(_a<<2)>>2]|0;bc=C;cc=A;pa=213}else dc=da;else{ac=Ua;bc=Ta;cc=da;pa=213}if((pa|0)==213){pa=0;if((((ac|0)==1?(i[(k[m>>2]|0)+Wa>>0]|0)!=0:0)?(ab=+p[c+((k[bc+(Na<<2)>>2]|0)+-1<<3)>>3],$a=+$(+ab),p[t>>3]=$a,Ta=k[t+4>>2]|0,!(Ta>>>0>2146435072|(Ta|0)==2146435072&(k[t>>2]|0)>>>0>0)):0)?(Ta=Na+1|0,$a=+p[c+((k[bc+(Ta<<2)>>2]|0)+-1<<3)>>3],jb=+$(+$a),p[t>>3]=jb,Na=k[t+4>>2]|0,!(Na>>>0>2146435072|(Na|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){Na=Qqa(32)|0;Ua=cc+1|0;B=0;Pa(1,Na|0,Ua+(k[Sa>>2]|0)|0,Ta+(k[D>>2]|0)+(k[Oa>>2]|0)|0,h|0,+(ab*.5+$a*.5),f|0);Ta=B;B=0;if(Ta&1){ec=Na;pa=219;break}ih(a,Na)|0;dc=Ua}else dc=cc}Wa=Wa+1|0;if((Wa|0)>=(k[Qa>>2]|0)){fc=dc;break l}else da=dc}if((pa|0)==210){da=Rb()|0;Wa=Q;Sqa(Zb);qa=Wa;ra=da;Qb(ra|0)}else if((pa|0)==211){da=Rb()|0;Wa=Q;Sqa(_b);qa=Wa;ra=da;Qb(ra|0)}else if((pa|0)==212){da=Rb()|0;Wa=Q;Sqa($b);qa=Wa;ra=da;Qb(ra|0)}else if((pa|0)==219){da=Rb()|0;Wa=Q;Sqa(ec);qa=Wa;ra=da;Qb(ra|0)}}else fc=Yb;while(0);da=b+60|0;Wa=k[da>>2]|0;if((Wa|0)<=0)break e;D=b+68|0;Sa=b+76|0;ca=b+108|0;Ua=b+100|0;Na=Wa;Wa=fc;Ta=0;while(1){A=ma(k[D>>2]|0,Ta)|0;C=k[Sa>>2]|0;if((k[C+(A+2<<2)>>2]|0)==2?(i[(k[n>>2]|0)+Ta>>0]|0)!=0:0){_a=k[C+(A+3<<2)>>2]|0;if((_a|0)>0){E=0;$a=0.0;while(1){ab=$a+ +p[c+((k[C+(E+4+A<<2)>>2]|0)+-1<<3)>>3];E=E+1|0;if((E|0)==(_a|0)){gc=ab;break}else $a=ab}}else gc=0.0;$a=gc/+(_a|0);ab=+$(+$a);p[t>>3]=ab;E=k[t+4>>2]|0;if(!(E>>>0>2146435072|(E|0)==2146435072&(k[t>>2]|0)>>>0>0)){E=Qqa(32)|0;A=Ta*3|0;B=0;Pa(1,E|0,Wa+1+(k[ca>>2]|0)|0,A+1+(k[Ua>>2]|0)+(k[Oa>>2]|0)+((k[Qa>>2]|0)*3|0)|0,h|0,+$a,f|0);C=B;B=0;if(C&1){hc=E;pa=230;break}ih(a,E)|0;E=Qqa(32)|0;B=0;Pa(1,E|0,Wa+2+(k[ca>>2]|0)|0,A+2+(k[Ua>>2]|0)+(k[Oa>>2]|0)+((k[Qa>>2]|0)*3|0)|0,h|0,+$a,f|0);C=B;B=0;if(C&1){ic=E;pa=231;break}ih(a,E)|0;E=Qqa(32)|0;C=Wa+3|0;B=0;Pa(1,E|0,C+(k[ca>>2]|0)|0,A+3+(k[Ua>>2]|0)+(k[Oa>>2]|0)+((k[Qa>>2]|0)*3|0)|0,h|0,+$a,f|0);A=B;B=0;if(A&1){jc=E;pa=232;break}ih(a,E)|0;kc=k[da>>2]|0;lc=C}else{kc=Na;lc=Wa}}else{kc=Na;lc=Wa}Ta=Ta+1|0;if((Ta|0)>=(kc|0))break e;else{Na=kc;Wa=lc}}if((pa|0)==230){Wa=Rb()|0;Na=Q;Sqa(hc);qa=Na;ra=Wa;Qb(ra|0)}else if((pa|0)==231){Wa=Rb()|0;Na=Q;Sqa(ic);qa=Na;ra=Wa;Qb(ra|0)}else if((pa|0)==232){Wa=Rb()|0;Na=Q;Sqa(jc);qa=Na;ra=Wa;Qb(ra|0)}break}case 740:{m:do if((d|0)>0){Wa=b+36|0;Na=b+108|0;Ta=b+100|0;da=d;Qa=0;Ua=0;while(1){if((k[(k[Wa>>2]|0)+(Ua<<2)>>2]|0)!=0?($a=+p[c+(Ua<<3)>>3],ab=+$(+$a),p[t>>3]=ab,ca=k[t+4>>2]|0,!(ca>>>0>2146435072|(ca|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){ca=Qqa(32)|0;Sa=Qa+1|0;B=0;Pa(1,ca|0,Sa+(k[Na>>2]|0)|0,Ua+1+(k[Ta>>2]|0)|0,h|0,+$a,f|0);D=B;B=0;if(D&1){mc=ca;break}ih(a,ca)|0;nc=k[Oa>>2]|0;oc=Sa}else{nc=da;oc=Qa}Ua=Ua+1|0;if((Ua|0)>=(nc|0)){pc=oc;break m}else{da=nc;Qa=oc}}Qa=Rb()|0;da=Q;Sqa(mc);qa=da;ra=Qa;Qb(ra|0)}else pc=0;while(0);Qa=b+56|0;da=k[Qa>>2]|0;if((da|0)<=0)break e;Ua=b+32|0;Ta=b+72|0;$a=+(S|0);Na=b+108|0;Wa=b+100|0;if((S|0)>1){_a=da;Sa=pc;ca=0;while(1){if(i[(k[Ua>>2]|0)+ca>>0]|0){D=ma(ca,S)|0;C=k[Ta>>2]|0;E=1;ab=+p[c+((k[C+(D<<2)>>2]|0)+-1<<3)>>3];while(1){jb=ab+ +p[c+((k[C+(E+D<<2)>>2]|0)+-1<<3)>>3];E=E+1|0;if((E|0)==(S|0)){qc=jb;break}else ab=jb}ab=qc/$a;jb=+$(+ab);p[t>>3]=jb;E=k[t+4>>2]|0;if(!(E>>>0>2146435072|(E|0)==2146435072&(k[t>>2]|0)>>>0>0)){E=Qqa(32)|0;D=Sa+1|0;B=0;Pa(1,E|0,D+(k[Na>>2]|0)|0,ca+1+(k[Wa>>2]|0)+(k[Oa>>2]|0)|0,h|0,+ab,f|0);C=B;B=0;if(C&1){rc=E;break}ih(a,E)|0;sc=k[Qa>>2]|0;tc=D}else{sc=_a;tc=Sa}}else{sc=_a;tc=Sa}ca=ca+1|0;if((ca|0)>=(sc|0))break e;else{_a=sc;Sa=tc}}Sa=Rb()|0;uc=Sa;vc=Q;wc=rc}else{Sa=da;_a=pc;ca=0;while(1){if((i[(k[Ua>>2]|0)+ca>>0]|0)!=0?(D=ma(ca,S)|0,ab=+p[c+((k[(k[Ta>>2]|0)+(D<<2)>>2]|0)+-1<<3)>>3]/$a,jb=+$(+ab),p[t>>3]=jb,D=k[t+4>>2]|0,!(D>>>0>2146435072|(D|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){D=Qqa(32)|0;E=_a+1|0;B=0;Pa(1,D|0,E+(k[Na>>2]|0)|0,ca+1+(k[Wa>>2]|0)+(k[Oa>>2]|0)|0,h|0,+ab,f|0);C=B;B=0;if(C&1){xc=D;break}ih(a,D)|0;yc=k[Qa>>2]|0;zc=E}else{yc=Sa;zc=_a}ca=ca+1|0;if((ca|0)>=(yc|0))break e;else{Sa=yc;_a=zc}}_a=Rb()|0;uc=_a;vc=Q;wc=xc}Sqa(wc);qa=vc;ra=uc;Qb(ra|0);break}case 741:{if((d|0)<=0)break e;_a=b+36|0;Sa=b+108|0;ca=b+100|0;Qa=d;Wa=0;Na=0;while(1){if((k[(k[_a>>2]|0)+(Na<<2)>>2]|0)!=0?($a=+p[c+(Na<<3)>>3],ab=+$(+$a),p[t>>3]=ab,Ta=k[t+4>>2]|0,!(Ta>>>0>2146435072|(Ta|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){Ta=Qqa(32)|0;Ua=Wa+1|0;B=0;Pa(1,Ta|0,Ua+(k[Sa>>2]|0)|0,Na+1+(k[ca>>2]|0)|0,h|0,+$a,f|0);da=B;B=0;if(da&1){Ac=Ta;break}ih(a,Ta)|0;Bc=k[Oa>>2]|0;Cc=Ua}else{Bc=Qa;Cc=Wa}Na=Na+1|0;if((Na|0)>=(Bc|0))break e;else{Qa=Bc;Wa=Cc}}Wa=Rb()|0;Qa=Q;Sqa(Ac);qa=Qa;ra=Wa;Qb(ra|0);break}case 746:{n:do if((d|0)>0){Wa=b+36|0;Qa=b+108|0;Na=b+100|0;ca=d;Sa=0;_a=0;while(1){if((k[(k[Wa>>2]|0)+(_a<<2)>>2]|0)!=0?($a=+p[c+(_a<<3)>>3],ab=+$(+$a),p[t>>3]=ab,Ua=k[t+4>>2]|0,!(Ua>>>0>2146435072|(Ua|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){Ua=Qqa(32)|0;Ta=Sa+1|0;B=0;Pa(1,Ua|0,Ta+(k[Qa>>2]|0)|0,_a+1+(k[Na>>2]|0)|0,h|0,+$a,f|0);da=B;B=0;if(da&1){Dc=Ua;break}ih(a,Ua)|0;Ec=k[Oa>>2]|0;Fc=Ta}else{Ec=ca;Fc=Sa}_a=_a+1|0;if((_a|0)>=(Ec|0)){Gc=Fc;break n}else{ca=Ec;Sa=Fc}}Sa=Rb()|0;ca=Q;Sqa(Dc);qa=ca;ra=Sa;Qb(ra|0)}else Gc=0;while(0);Sa=b+64|0;ca=k[Sa>>2]|0;if((ca|0)<=0)break e;_a=b+80|0;Na=b+108|0;Qa=b+100|0;Wa=ca;ca=Gc;Ta=0;while(1){Ua=Ta*3|0;da=k[_a>>2]|0;if((((k[da+(Ua+2<<2)>>2]|0)==2?(i[(k[m>>2]|0)+Ta>>0]|0)!=0:0)?($a=+p[c+((k[da+(Ua<<2)>>2]|0)+-1<<3)>>3],ab=+$(+$a),p[t>>3]=ab,E=k[t+4>>2]|0,!(E>>>0>2146435072|(E|0)==2146435072&(k[t>>2]|0)>>>0>0)):0)?(ab=+p[c+((k[da+(Ua+1<<2)>>2]|0)+-1<<3)>>3],jb=+$(+ab),p[t>>3]=jb,Ua=k[t+4>>2]|0,!(Ua>>>0>2146435072|(Ua|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){Ua=Qqa(32)|0;da=ca+1|0;B=0;Pa(1,Ua|0,da+(k[Na>>2]|0)|0,Ta+1+(k[Qa>>2]|0)+(k[Oa>>2]|0)|0,h|0,+(($a+ab)*.5),f|0);E=B;B=0;if(E&1){Hc=Ua;break}ih(a,Ua)|0;Ic=k[Sa>>2]|0;Jc=da}else{Ic=Wa;Jc=ca}Ta=Ta+1|0;if((Ta|0)>=(Ic|0))break e;else{Wa=Ic;ca=Jc}}ca=Rb()|0;Wa=Q;Sqa(Hc);qa=Wa;ra=ca;Qb(ra|0);break}case 747:{o:do if((d|0)>0){ca=b+36|0;Wa=b+108|0;Ta=b+100|0;Sa=d;Qa=0;Na=0;while(1){if((k[(k[ca>>2]|0)+(Na<<2)>>2]|0)!=0?(ab=+p[c+(Na<<3)>>3],$a=+$(+ab),p[t>>3]=$a,_a=k[t+4>>2]|0,!(_a>>>0>2146435072|(_a|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){_a=Qqa(32)|0;da=Qa+1|0;B=0;Pa(1,_a|0,da+(k[Wa>>2]|0)|0,Na+1+(k[Ta>>2]|0)|0,h|0,+ab,f|0);Ua=B;B=0;if(Ua&1){Kc=_a;break}ih(a,_a)|0;Lc=k[Oa>>2]|0;Mc=da}else{Lc=Sa;Mc=Qa}Na=Na+1|0;if((Na|0)>=(Lc|0)){Nc=Mc;break o}else{Sa=Lc;Qa=Mc}}Qa=Rb()|0;Sa=Q;Sqa(Kc);qa=Sa;ra=Qa;Qb(ra|0)}else Nc=0;while(0);Qa=b+64|0;Sa=k[Qa>>2]|0;if((Sa|0)<=0)break e;Na=b+80|0;Ta=b+108|0;Wa=b+100|0;ca=Sa;Sa=Nc;da=0;while(1){_a=da*3|0;Ua=k[Na>>2]|0;if((((k[Ua+(_a+2<<2)>>2]|0)==2?(i[(k[m>>2]|0)+da>>0]|0)!=0:0)?(E=c+((k[Ua+(_a<<2)>>2]|0)+-1<<3)|0,ab=+p[E>>3],$a=+$(+ab),p[t>>3]=$a,D=k[t+4>>2]|0,!(D>>>0>2146435072|(D|0)==2146435072&(k[t>>2]|0)>>>0>0)):0)?(D=c+((k[Ua+(_a+1<<2)>>2]|0)+-1<<3)|0,$a=+p[D>>3],jb=+$(+$a),p[t>>3]=jb,_a=k[t+4>>2]|0,!(_a>>>0>2146435072|(_a|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){_a=Qqa(32)|0;Ua=da<<1;B=0;Pa(1,_a|0,Sa+1+(k[Ta>>2]|0)|0,(Ua|1)+(k[Wa>>2]|0)+(k[Oa>>2]|0)|0,h|0,+(ab*.6666666666666666+$a*.3333333333333333),f|0);C=B;B=0;if(C&1){Oc=_a;pa=294;break}ih(a,_a)|0;_a=Qqa(32)|0;C=Sa+2|0;B=0;Pa(1,_a|0,C+(k[Ta>>2]|0)|0,Ua+2+(k[Wa>>2]|0)+(k[Oa>>2]|0)|0,h|0,+(+p[E>>3]*.3333333333333333+ +p[D>>3]*.6666666666666666),f|0);D=B;B=0;if(D&1){Pc=_a;pa=295;break}ih(a,_a)|0;Qc=k[Qa>>2]|0;Rc=C}else{Qc=ca;Rc=Sa}da=da+1|0;if((da|0)>=(Qc|0))break e;else{ca=Qc;Sa=Rc}}if((pa|0)==294){Sa=Rb()|0;ca=Q;Sqa(Oc);qa=ca;ra=Sa;Qb(ra|0)}else if((pa|0)==295){Sa=Rb()|0;ca=Q;Sqa(Pc);qa=ca;ra=Sa;Qb(ra|0)}break}case 745:{p:do if((d|0)>0){Sa=b+36|0;ca=b+108|0;da=b+100|0;Qa=d;Wa=0;Ta=0;while(1){if((k[(k[Sa>>2]|0)+(Ta<<2)>>2]|0)!=0?($a=+p[c+(Ta<<3)>>3],ab=+$(+$a),p[t>>3]=ab,Na=k[t+4>>2]|0,!(Na>>>0>2146435072|(Na|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){Na=Qqa(32)|0;C=Wa+1|0;B=0;Pa(1,Na|0,C+(k[ca>>2]|0)|0,Ta+1+(k[da>>2]|0)|0,h|0,+$a,f|0);_a=B;B=0;if(_a&1){Sc=Na;break}ih(a,Na)|0;Tc=k[Oa>>2]|0;Uc=C}else{Tc=Qa;Uc=Wa}Ta=Ta+1|0;if((Ta|0)>=(Tc|0)){Vc=Uc;break p}else{Qa=Tc;Wa=Uc}}Wa=Rb()|0;Qa=Q;Sqa(Sc);qa=Qa;ra=Wa;Qb(ra|0)}else Vc=0;while(0);Wa=b+64|0;Qa=k[Wa>>2]|0;if((Qa|0)<=0)break e;Ta=b+80|0;da=b+108|0;ca=b+100|0;Sa=Qa;Qa=Vc;C=0;while(1){Na=C*3|0;_a=k[Ta>>2]|0;if((((k[_a+(Na+2<<2)>>2]|0)!=2?(i[(k[m>>2]|0)+C>>0]|0)!=0:0)?($a=+p[c+((k[_a+(Na<<2)>>2]|0)+-1<<3)>>3],ab=+$(+$a),p[t>>3]=ab,D=k[t+4>>2]|0,!(D>>>0>2146435072|(D|0)==2146435072&(k[t>>2]|0)>>>0>0)):0)?(ab=+p[c+((k[_a+(Na+1<<2)>>2]|0)+-1<<3)>>3],jb=+$(+ab),p[t>>3]=jb,Na=k[t+4>>2]|0,!(Na>>>0>2146435072|(Na|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){Na=Qqa(32)|0;_a=Qa+1|0;B=0;Pa(1,Na|0,_a+(k[da>>2]|0)|0,C+1+(k[ca>>2]|0)+(k[Oa>>2]|0)|0,h|0,+(($a+ab)*.5),f|0);D=B;B=0;if(D&1){Wc=Na;break}ih(a,Na)|0;Xc=k[Wa>>2]|0;Yc=_a}else{Xc=Sa;Yc=Qa}C=C+1|0;if((C|0)>=(Xc|0))break e;else{Sa=Xc;Qa=Yc}}Qa=Rb()|0;Sa=Q;Sqa(Wc);qa=Sa;ra=Qa;Qb(ra|0);break}default:{Qa=F+56|0;Sa=F+4|0;k[F>>2]=27524;k[Qa>>2]=27544;B=0;wa(508,F+56|0,Sa|0);C=B;B=0;if(C&1){C=Rb()|0;Zc=Q;_c=C;vva(Qa);Qb(_c|0)}k[F+128>>2]=0;k[F+132>>2]=-1;k[F>>2]=27468;k[Qa>>2]=27488;B=0;va(448,Sa|0);C=B;B=0;do if(C&1){Wa=Rb()|0;$c=Q;ad=Wa}else{k[Sa>>2]=27560;Wa=F+36|0;k[Wa>>2]=0;k[Wa+4>>2]=0;k[Wa+8>>2]=0;k[Wa+12>>2]=0;k[F+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,Sa|0,l|0);ca=B;B=0;if(ca&1){ca=Rb()|0;da=Q;Yua(l);Yua(Wa);Ava(Sa);$c=da;ad=ca;break}Yua(l);B=0;ca=Ia(40,F|0,145867,15)|0;da=B;B=0;q:do if((((!(da&1)?(B=0,Ta=ya(427,g|0)|0,_a=B,B=0,!(_a&1)):0)?(_a=Lta(Ta)|0,B=0,Na=Ia(40,ca|0,Ta|0,_a|0)|0,_a=B,B=0,!(_a&1)):0)?(B=0,_a=Ia(40,Na|0,146481,18)|0,Na=B,B=0,!(Na&1)):0)?(B=0,Xa(239,_a|0,0)|0,_a=B,B=0,!(_a&1)):0){_a=Ab(20)|0;B=0;eb(502,G|0,145672,102);Na=B;B=0;do if(!(Na&1)){B=0;eb(502,H|0,145775,21);Ta=B;B=0;if(Ta&1){Ta=Rb()|0;D=Q;Yua(G);bd=D;cd=Ta;break}B=0;wa(510,I|0,Sa|0);Ta=B;B=0;if(Ta&1){Ta=Rb()|0;dd=Q;ed=Ta;fd=1}else{B=0;ua(163,_a|0,G|0,H|0,396,I|0);Ta=B;B=0;if(Ta&1)gd=1;else{B=0;eb(503,_a|0,1240,229);B=0;gd=0}Ta=Rb()|0;D=Q;Yua(I);dd=D;ed=Ta;fd=gd}Yua(H);Yua(G);if(fd){bd=dd;cd=ed}else{hd=dd;id=ed;break q}}else{Ta=Rb()|0;bd=Q;cd=Ta}while(0);zb(_a|0);hd=bd;id=cd}else pa=331;while(0);if((pa|0)==331){ca=Rb()|0;hd=Q;id=ca}k[F>>2]=27468;k[Qa>>2]=27488;k[Sa>>2]=27560;Yua(Wa);Ava(Sa);vva(Qa);qa=hd;ra=id;Qb(ra|0)}while(0);Zc=$c;_c=ad;vva(Qa);Qb(_c|0)}}while(0);else{if((Ra+1|0)!=(d|0)){V=N+56|0;Sa=N+4|0;k[N>>2]=27524;k[V>>2]=27544;B=0;wa(508,N+56|0,Sa|0);C=B;B=0;if(C&1){C=Rb()|0;jd=Q;kd=C;vva(V);Qb(kd|0)}k[N+128>>2]=0;k[N+132>>2]=-1;k[N>>2]=27468;k[V>>2]=27488;B=0;va(448,Sa|0);C=B;B=0;do if(C&1){ca=Rb()|0;ld=Q;md=ca}else{k[Sa>>2]=27560;ca=N+36|0;k[ca>>2]=0;k[ca+4>>2]=0;k[ca+8>>2]=0;k[ca+12>>2]=0;k[N+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,Sa|0,l|0);da=B;B=0;if(da&1){da=Rb()|0;Na=Q;Yua(l);Yua(ca);Ava(Sa);ld=Na;md=da;break}Yua(l);B=0;da=Ia(40,N|0,145883,31)|0;Na=B;B=0;r:do if(!(Na&1)?(B=0,Xa(239,da|0,0)|0,Va=B,B=0,!(Va&1)):0){Va=Ab(20)|0;B=0;eb(502,O|0,145672,102);Ta=B;B=0;do if(!(Ta&1)){B=0;eb(502,P|0,145775,21);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(O);nd=E;od=D;break}B=0;wa(510,R|0,Sa|0);D=B;B=0;if(D&1){D=Rb()|0;pd=1;qd=Q;rd=D}else{B=0;ua(163,Va|0,O|0,P|0,551,R|0);D=B;B=0;if(D&1)sd=1;else{B=0;eb(503,Va|0,1240,229);B=0;sd=0}D=Rb()|0;E=Q;Yua(R);pd=sd;qd=E;rd=D}Yua(P);Yua(O);if(pd){nd=qd;od=rd}else{td=qd;ud=rd;break r}}else{D=Rb()|0;nd=Q;od=D}while(0);zb(Va|0);td=nd;ud=od}else pa=474;while(0);if((pa|0)==474){da=Rb()|0;td=Q;ud=da}k[N>>2]=27468;k[V>>2]=27488;k[Sa>>2]=27560;Yua(ca);Ava(Sa);vva(V);qa=td;ra=ud;Qb(ra|0)}while(0);jd=ld;kd=md;vva(V);Qb(kd|0)}Sa=e>>>0>536870911?-1:e<<3;C=Rqa(Sa)|0;da=(e|0)>0;if(da)TEa(C|0,c+((ma(d+-1|0,e)|0)<<3)|0,e<<3|0)|0;s:do switch(g|0){case 738:{if((Ra|0)>0){Na=b+36|0;Qa=b+108|0;Ta=b+100|0;if(!da){Wa=0;while(1){Wa=Wa+1|0;if((Wa|0)>=(Ra|0))break s}}Wa=e<<3;ca=Ra;D=0;E=0;while(1){Ua=ma(E,e)|0;if(!(k[(k[Na>>2]|0)+(E<<2)>>2]|0)){vd=ca;wd=D}else{A=Rqa(Sa)|0;TEa(A|0,c+(Ua<<3)|0,Wa|0)|0;Za=0;Ya=0;do{ab=+$(+(+p[c+(Za+Ua<<3)>>3]));p[t>>3]=ab;ta=k[t+4>>2]|0;Ya=Ya|(ta>>>0<2146435072|(ta|0)==2146435072&(k[t>>2]|0)>>>0<1);Za=Za+1|0}while((Za|0)!=(e|0));if(Ya){Za=Qqa(36)|0;Ua=D+1|0;B=0;Ka(11,Za|0,Ua+(k[Qa>>2]|0)|0,E+1+(k[Ta>>2]|0)|0,h|0,e|0,C|0,A|0,f|0);Va=B;B=0;if(Va&1){xd=Za;break}ih(a,Za)|0;yd=Ua}else yd=D;Tqa(A);vd=k[Oa>>2]|0;wd=yd}E=E+1|0;if((E|0)>=(vd|0))break s;else{ca=vd;D=wd}}D=Rb()|0;ca=Q;Sqa(xd);qa=ca;ra=D;Qb(ra|0)}break}case 742:{t:do if((Ra|0)>0){D=b+36|0;ca=b+108|0;E=b+100|0;if(!da){Ta=0;while(1){Ta=Ta+1|0;if((Ta|0)>=(Ra|0)){zd=0;break t}}}Ta=e<<3;A=Ra;Ya=0;Qa=0;while(1){Wa=ma(Qa,e)|0;if(!(k[(k[D>>2]|0)+(Qa<<2)>>2]|0)){Ad=A;Bd=Ya}else{Na=Rqa(Sa)|0;TEa(Na|0,c+(Wa<<3)|0,Ta|0)|0;Ua=0;Za=0;do{ab=+$(+(+p[c+(Ua+Wa<<3)>>3]));p[t>>3]=ab;Va=k[t+4>>2]|0;Za=Za|(Va>>>0<2146435072|(Va|0)==2146435072&(k[t>>2]|0)>>>0<1);Ua=Ua+1|0}while((Ua|0)!=(e|0));if(Za){Ua=Qqa(36)|0;Wa=Ya+1|0;B=0;Ka(11,Ua|0,Wa+(k[ca>>2]|0)|0,Qa+1+(k[E>>2]|0)|0,h|0,e|0,C|0,Na|0,f|0);_a=B;B=0;if(_a&1){Cd=Ua;break}ih(a,Ua)|0;Dd=Wa}else Dd=Ya;Tqa(Na);Ad=k[Oa>>2]|0;Bd=Dd}Qa=Qa+1|0;if((Qa|0)>=(Ad|0)){zd=Bd;break t}else{A=Ad;Ya=Bd}}Ya=Rb()|0;A=Q;Sqa(Cd);qa=A;ra=Ya;Qb(ra|0)}else zd=0;while(0);Ya=b+64|0;A=k[Ya>>2]|0;if((A|0)>0){Qa=b+80|0;E=b+108|0;ca=b+100|0;if(da){Ed=A;Fd=zd;Gd=0}else{Ta=0;while(1){Ta=Ta+1|0;if((Ta|0)>=(A|0))break s}}while(1){if(!(i[(k[m>>2]|0)+Gd>>0]|0)){Hd=Ed;Id=Fd}else{A=Gd*3|0;Ta=k[Qa>>2]|0;D=(k[Ta+(A<<2)>>2]|0)+-1|0;Wa=(k[Ta+(A+1<<2)>>2]|0)+-1|0;A=Rqa(Sa)|0;Ta=ma(D,e)|0;D=ma(Wa,e)|0;Wa=0;Ua=0;do{ab=(+p[c+(Wa+Ta<<3)>>3]+ +p[c+(Wa+D<<3)>>3])*.5;p[A+(Wa<<3)>>3]=ab;$a=+$(+ab);p[t>>3]=$a;_a=k[t+4>>2]|0;Ua=Ua|(_a>>>0<2146435072|(_a|0)==2146435072&(k[t>>2]|0)>>>0<1);Wa=Wa+1|0}while((Wa|0)!=(e|0));if(Ua){Wa=Qqa(36)|0;D=Fd+1|0;B=0;Ka(11,Wa|0,D+(k[E>>2]|0)|0,Gd+1+(k[ca>>2]|0)+(k[Oa>>2]|0)|0,h|0,e|0,C|0,A|0,f|0);Ta=B;B=0;if(Ta&1){Jd=Wa;break}ih(a,Wa)|0;Kd=D}else Kd=Fd;Tqa(A);Hd=k[Ya>>2]|0;Id=Kd}Gd=Gd+1|0;if((Gd|0)>=(Hd|0))break s;else{Ed=Hd;Fd=Id}}Ya=Rb()|0;ca=Q;Sqa(Jd);qa=ca;ra=Ya;Qb(ra|0)}break}case 746:{u:do if((Ra|0)>0){Ya=b+36|0;ca=b+108|0;E=b+100|0;if(!da){Qa=0;while(1){Qa=Qa+1|0;if((Qa|0)>=(Ra|0)){Ld=0;break u}}}Qa=e<<3;A=Ra;Ua=0;D=0;while(1){Wa=ma(D,e)|0;if(!(k[(k[Ya>>2]|0)+(D<<2)>>2]|0)){Md=A;Nd=Ua}else{Ta=Rqa(Sa)|0;TEa(Ta|0,c+(Wa<<3)|0,Qa|0)|0;_a=0;Va=0;do{$a=+$(+(+p[c+(_a+Wa<<3)>>3]));p[t>>3]=$a;ta=k[t+4>>2]|0;Va=Va|(ta>>>0<2146435072|(ta|0)==2146435072&(k[t>>2]|0)>>>0<1);_a=_a+1|0}while((_a|0)!=(e|0));if(Va){_a=Qqa(36)|0;Wa=Ua+1|0;B=0;Ka(11,_a|0,Wa+(k[ca>>2]|0)|0,D+1+(k[E>>2]|0)|0,h|0,e|0,C|0,Ta|0,f|0);Na=B;B=0;if(Na&1){Od=_a;break}ih(a,_a)|0;Pd=Wa}else Pd=Ua;Tqa(Ta);Md=k[Oa>>2]|0;Nd=Pd}D=D+1|0;if((D|0)>=(Md|0)){Ld=Nd;break u}else{A=Md;Ua=Nd}}Ua=Rb()|0;A=Q;Sqa(Od);qa=A;ra=Ua;Qb(ra|0)}else Ld=0;while(0);Ua=b+64|0;A=k[Ua>>2]|0;if((A|0)>0){D=b+80|0;E=b+108|0;ca=b+100|0;if(da){Qd=A;Rd=Ld;Sd=0}else{Qa=0;while(1){Qa=Qa+1|0;if((Qa|0)>=(A|0))break s}}while(1){A=Sd*3|0;Qa=k[D>>2]|0;if((k[Qa+(A+2<<2)>>2]|0)==2?(i[(k[m>>2]|0)+Sd>>0]|0)!=0:0){Ya=(k[Qa+(A<<2)>>2]|0)+-1|0;Wa=(k[Qa+(A+1<<2)>>2]|0)+-1|0;A=Rqa(Sa)|0;Qa=ma(Ya,e)|0;Ya=ma(Wa,e)|0;Wa=0;_a=0;do{$a=(+p[c+(Wa+Qa<<3)>>3]+ +p[c+(Wa+Ya<<3)>>3])*.5;p[A+(Wa<<3)>>3]=$a;ab=+$(+$a);p[t>>3]=ab;Na=k[t+4>>2]|0;_a=_a|(Na>>>0<2146435072|(Na|0)==2146435072&(k[t>>2]|0)>>>0<1);Wa=Wa+1|0}while((Wa|0)!=(e|0));if(_a){Wa=Qqa(36)|0;Ya=Rd+1|0;B=0;Ka(11,Wa|0,Ya+(k[E>>2]|0)|0,Sd+1+(k[ca>>2]|0)+(k[Oa>>2]|0)|0,h|0,e|0,C|0,A|0,f|0);Qa=B;B=0;if(Qa&1){Td=Wa;break}ih(a,Wa)|0;Ud=Ya}else Ud=Rd;Tqa(A);Vd=k[Ua>>2]|0;Wd=Ud}else{Vd=Qd;Wd=Rd}Sd=Sd+1|0;if((Sd|0)>=(Vd|0))break s;else{Qd=Vd;Rd=Wd}}Ua=Rb()|0;ca=Q;Sqa(Td);qa=ca;ra=Ua;Qb(ra|0)}break}case 745:{v:do if((Ra|0)>0){Ua=b+36|0;ca=b+108|0;E=b+100|0;if(!da){D=0;while(1){D=D+1|0;if((D|0)>=(Ra|0)){Xd=0;break v}}}D=e<<3;A=Ra;_a=0;Ya=0;while(1){Wa=ma(Ya,e)|0;if(!(k[(k[Ua>>2]|0)+(Ya<<2)>>2]|0)){Yd=A;Zd=_a}else{Qa=Rqa(Sa)|0;TEa(Qa|0,c+(Wa<<3)|0,D|0)|0;Na=0;Za=0;do{ab=+$(+(+p[c+(Na+Wa<<3)>>3]));p[t>>3]=ab;ta=k[t+4>>2]|0;Za=Za|(ta>>>0<2146435072|(ta|0)==2146435072&(k[t>>2]|0)>>>0<1);Na=Na+1|0}while((Na|0)!=(e|0));if(Za){Na=Qqa(36)|0;Wa=_a+1|0;B=0;Ka(11,Na|0,Wa+(k[ca>>2]|0)|0,Ya+1+(k[E>>2]|0)|0,h|0,e|0,C|0,Qa|0,f|0);Ta=B;B=0;if(Ta&1){_d=Na;break}ih(a,Na)|0;$d=Wa}else $d=_a;Tqa(Qa);Yd=k[Oa>>2]|0;Zd=$d}Ya=Ya+1|0;if((Ya|0)>=(Yd|0)){Xd=Zd;break v}else{A=Yd;_a=Zd}}_a=Rb()|0;A=Q;Sqa(_d);qa=A;ra=_a;Qb(ra|0)}else Xd=0;while(0);_a=b+64|0;A=k[_a>>2]|0;if((A|0)>0){Ya=b+80|0;E=b+108|0;ca=b+100|0;if(da){ae=A;be=Xd;ce=0}else{D=0;while(1){D=D+1|0;if((D|0)>=(A|0))break s}}while(1){A=ce*3|0;D=k[Ya>>2]|0;if((k[D+(A+2<<2)>>2]|0)!=2?(i[(k[m>>2]|0)+ce>>0]|0)!=0:0){Ua=(k[D+(A<<2)>>2]|0)+-1|0;Wa=(k[D+(A+1<<2)>>2]|0)+-1|0;A=Rqa(Sa)|0;D=ma(Ua,e)|0;Ua=ma(Wa,e)|0;Wa=0;Na=0;do{ab=(+p[c+(Wa+D<<3)>>3]+ +p[c+(Wa+Ua<<3)>>3])*.5;p[A+(Wa<<3)>>3]=ab;$a=+$(+ab);p[t>>3]=$a;Ta=k[t+4>>2]|0;Na=Na|(Ta>>>0<2146435072|(Ta|0)==2146435072&(k[t>>2]|0)>>>0<1);Wa=Wa+1|0}while((Wa|0)!=(e|0));if(Na){Wa=Qqa(36)|0;Ua=be+1|0;B=0;Ka(11,Wa|0,Ua+(k[E>>2]|0)|0,ce+1+(k[ca>>2]|0)+(k[Oa>>2]|0)|0,h|0,e|0,C|0,A|0,f|0);D=B;B=0;if(D&1){de=Wa;break}ih(a,Wa)|0;ee=Ua}else ee=be;Tqa(A);fe=k[_a>>2]|0;ge=ee}else{fe=ae;ge=be}ce=ce+1|0;if((ce|0)>=(fe|0))break s;else{ae=fe;be=ge}}_a=Rb()|0;ca=Q;Sqa(de);qa=ca;ra=_a;Qb(ra|0)}break}default:{_a=J+56|0;ca=J+4|0;k[J>>2]=27524;k[_a>>2]=27544;B=0;wa(508,J+56|0,ca|0);E=B;B=0;if(E&1){E=Rb()|0;he=Q;ie=E;vva(_a);Qb(ie|0)}k[J+128>>2]=0;k[J+132>>2]=-1;k[J>>2]=27468;k[_a>>2]=27488;B=0;va(448,ca|0);E=B;B=0;do if(E&1){Ya=Rb()|0;je=Q;ke=Ya}else{k[ca>>2]=27560;Ya=J+36|0;k[Ya>>2]=0;k[Ya+4>>2]=0;k[Ya+8>>2]=0;k[Ya+12>>2]=0;k[J+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,ca|0,l|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;Wa=Q;Yua(l);Yua(Ya);Ava(ca);je=Wa;ke=Ua;break}Yua(l);B=0;Ua=Ia(40,J|0,145867,15)|0;Wa=B;B=0;w:do if((((!(Wa&1)?(B=0,D=ya(427,g|0)|0,Ta=B,B=0,!(Ta&1)):0)?(Ta=Lta(D)|0,B=0,Va=Ia(40,Ua|0,D|0,Ta|0)|0,Ta=B,B=0,!(Ta&1)):0)?(B=0,Ta=Ia(40,Va|0,146481,18)|0,Va=B,B=0,!(Va&1)):0)?(B=0,Xa(239,Ta|0,0)|0,Ta=B,B=0,!(Ta&1)):0){Ta=Ab(20)|0;B=0;eb(502,K|0,145672,102);Va=B;B=0;do if(!(Va&1)){B=0;eb(502,L|0,145775,21);D=B;B=0;if(D&1){D=Rb()|0;ta=Q;Yua(K);le=ta;me=D;break}B=0;wa(510,M|0,ca|0);D=B;B=0;if(D&1){D=Rb()|0;ne=1;oe=Q;pe=D}else{B=0;ua(163,Ta|0,K|0,L|0,547,M|0);D=B;B=0;if(D&1)qe=1;else{B=0;eb(503,Ta|0,1240,229);B=0;qe=0}D=Rb()|0;ta=Q;Yua(M);ne=qe;oe=ta;pe=D}Yua(L);Yua(K);if(ne){le=oe;me=pe}else{re=oe;se=pe;break w}}else{D=Rb()|0;le=Q;me=D}while(0);zb(Ta|0);re=le;se=me}else pa=451;while(0);if((pa|0)==451){Ua=Rb()|0;re=Q;se=Ua}k[J>>2]=27468;k[_a>>2]=27488;k[ca>>2]=27560;Yua(Ya);Ava(ca);vva(_a);qa=re;ra=se;Qb(ra|0)}while(0);he=je;ie=ke;vva(_a);Qb(ie|0)}}while(0);Tqa(C)}while(0);ie=k[m>>2]|0;if(ie)Tqa(ie);k[m>>2]=0;m=k[n>>2]|0;if(m)Tqa(m);k[n>>2]=0;n=k[o>>2]|0;if(!n){r=j;return}Tqa(n);r=j;return}function soa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;g=r;r=r+384|0;h=g+372|0;i=g+368|0;j=g+364|0;l=g+360|0;m=g+356|0;n=g+352|0;o=g+216|0;p=g+200|0;q=g+48|0;s=g+36|0;t=g+64|0;u=g+24|0;v=g+12|0;w=g;k[l>>2]=0;Oka(b,i,j,c)|0;if((k[i>>2]|0)!=7){i=o+56|0;x=o+4|0;k[o>>2]=27524;k[i>>2]=27544;B=0;wa(508,o+56|0,x|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(i);Qb(A|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[i>>2]=27488;B=0;va(448,x|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[x>>2]=27560;C=o+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[o+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,x|0,h|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(h);Yua(C);Ava(x);D=G;E=F;break}Yua(h);B=0;F=Ia(40,o|0,145625,46)|0;G=B;B=0;a:do if((!(G&1)?(H=Lta(c)|0,B=0,I=Ia(40,F|0,c|0,H|0)|0,H=B,B=0,!(H&1)):0)?(B=0,Xa(239,I|0,0)|0,I=B,B=0,!(I&1)):0){I=Ab(20)|0;B=0;eb(502,p|0,145672,102);H=B;B=0;do if(!(H&1)){B=0;eb(502,q|0,145915,28);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(p);L=J;M=K;break}B=0;wa(510,s|0,x|0);K=B;B=0;if(K&1){K=Rb()|0;N=Q;O=K;P=1}else{B=0;ua(163,I|0,p|0,q|0,40,s|0);K=B;B=0;if(K&1)R=1;else{B=0;eb(503,I|0,1240,229);B=0;R=0}K=Rb()|0;J=Q;Yua(s);N=J;O=K;P=R}Yua(q);Yua(p);if(P){L=O;M=N}else{S=O;T=N;break a}}else{K=Rb()|0;L=K;M=Q}while(0);zb(I|0);S=L;T=M}else U=18;while(0);if((U|0)==18){F=Rb()|0;S=F;T=Q}k[o>>2]=27468;k[i>>2]=27488;k[x>>2]=27560;Yua(C);Ava(x);vva(i);V=T;W=S;Qb(W|0)}while(0);z=D;A=E;vva(i);Qb(A|0)}if((k[j>>2]|0)==1){Qka(b,l,m,n,c);toa(a,b,k[l>>2]|0,k[m>>2]|0,0,d,e,f);f=k[l>>2]|0;if(!f){r=g;return}Tqa(f);r=g;return}g=t+56|0;f=t+4|0;k[t>>2]=27524;k[g>>2]=27544;B=0;wa(508,t+56|0,f|0);l=B;B=0;if(l&1){l=Rb()|0;X=Q;Y=l;vva(g);Qb(Y|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[g>>2]=27488;B=0;va(448,f|0);l=B;B=0;do if(l&1){e=Rb()|0;Z=Q;_=e}else{k[f>>2]=27560;e=t+36|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[t+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,f|0,h|0);d=B;B=0;if(d&1){d=Rb()|0;m=Q;Yua(h);Yua(e);Ava(f);Z=m;_=d;break}Yua(h);B=0;d=Ia(40,t|0,145797,41)|0;m=B;B=0;b:do if((!(m&1)?(b=Lta(c)|0,B=0,a=Ia(40,d|0,c|0,b|0)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,u|0,145672,102);b=B;B=0;do if(!(b&1)){B=0;eb(502,v|0,145915,28);n=B;B=0;if(n&1){n=Rb()|0;j=Q;Yua(u);$=n;aa=j;break}B=0;wa(510,w|0,f|0);j=B;B=0;if(j&1){j=Rb()|0;ba=1;ca=Q;da=j}else{B=0;ua(163,a|0,u|0,v|0,41,w|0);j=B;B=0;if(j&1)ea=1;else{B=0;eb(503,a|0,1240,229);B=0;ea=0}j=Rb()|0;n=Q;Yua(w);ba=ea;ca=n;da=j}Yua(v);Yua(u);if(ba){$=da;aa=ca}else{fa=ca;ga=da;break b}}else{j=Rb()|0;$=j;aa=Q}while(0);zb(a|0);fa=aa;ga=$}else U=43;while(0);if((U|0)==43){d=Rb()|0;fa=Q;ga=d}k[t>>2]=27468;k[g>>2]=27488;k[f>>2]=27560;Yua(e);Ava(f);vva(g);V=fa;W=ga;Qb(W|0)}while(0);X=Z;Y=_;vva(g);Qb(Y|0)}function toa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0.0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;e=r;r=r+368|0;i=e+344|0;j=e+208|0;l=e+196|0;m=e+184|0;n=e+36|0;o=e+48|0;q=e+24|0;s=e+12|0;u=e;if((g|0)!=738){v=j+56|0;w=j+4|0;k[j>>2]=27524;k[v>>2]=27544;B=0;wa(508,j+56|0,w|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;z=x;vva(v);Qb(z|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[v>>2]=27488;B=0;va(448,w|0);x=B;B=0;do if(x&1){A=Rb()|0;C=Q;D=A}else{k[w>>2]=27560;A=j+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[j+52>>2]=16;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;B=0;wa(509,w|0,i|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(i);Yua(A);Ava(w);C=F;D=E;break}Yua(i);B=0;E=Ia(40,j|0,145867,15)|0;F=B;B=0;a:do if((((!(F&1)?(B=0,G=ya(427,g|0)|0,H=B,B=0,!(H&1)):0)?(H=Lta(G)|0,B=0,I=Ia(40,E|0,G|0,H|0)|0,H=B,B=0,!(H&1)):0)?(B=0,H=Ia(40,I|0,146481,18)|0,I=B,B=0,!(I&1)):0)?(B=0,Xa(239,H|0,0)|0,H=B,B=0,!(H&1)):0){H=Ab(20)|0;B=0;eb(502,l|0,145672,102);I=B;B=0;do if(!(I&1)){B=0;eb(502,m|0,145915,28);G=B;B=0;if(G&1){G=Rb()|0;J=Q;Yua(l);K=J;L=G;break}B=0;wa(510,n|0,w|0);G=B;B=0;if(G&1){G=Rb()|0;M=Q;N=G;O=1}else{B=0;ua(163,H|0,l|0,m|0,571,n|0);G=B;B=0;if(G&1)P=1;else{B=0;eb(503,H|0,1240,229);B=0;P=0}G=Rb()|0;J=Q;Yua(n);M=J;N=G;O=P}Yua(m);Yua(l);if(O){K=M;L=N}else{R=M;S=N;break a}}else{G=Rb()|0;K=Q;L=G}while(0);zb(H|0);R=K;S=L}else T=20;while(0);if((T|0)==20){E=Rb()|0;R=Q;S=E}k[j>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);U=R;V=S;Qb(V|0)}while(0);y=C;z=D;vva(v);Qb(z|0)}z=b+52|0;if((k[z>>2]|0)==(d|0)){if((d|0)<=0){r=e;return}v=b+36|0;D=b+108|0;C=b+100|0;b=d;d=0;y=0;while(1){if((k[(k[v>>2]|0)+(y<<2)>>2]|0)!=0?(W=+$(+(+p[c+(y<<3)>>3])),p[t>>3]=W,S=k[t+4>>2]|0,!(S>>>0>2146435072|(S|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){S=Qqa(40)|0;R=d+1|0;B=0;ua(174,S|0,R+(k[D>>2]|0)|0,y+1+(k[C>>2]|0)|0,h|0,f|0);w=B;B=0;if(w&1){X=S;break}ih(a,S)|0;Y=k[z>>2]|0;Z=R}else{Y=b;Z=d}y=y+1|0;if((y|0)>=(Y|0)){T=60;break}else{b=Y;d=Z}}if((T|0)==60){r=e;return}e=Rb()|0;Z=Q;Sqa(X);U=Z;V=e;Qb(V|0)}e=o+56|0;Z=o+4|0;k[o>>2]=27524;k[e>>2]=27544;B=0;wa(508,o+56|0,Z|0);X=B;B=0;if(X&1){X=Rb()|0;_=Q;aa=X;vva(e);Qb(aa|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[e>>2]=27488;B=0;va(448,Z|0);X=B;B=0;do if(X&1){d=Rb()|0;ba=Q;ca=d}else{k[Z>>2]=27560;d=o+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[o+52>>2]=16;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;B=0;wa(509,Z|0,i|0);Y=B;B=0;if(Y&1){Y=Rb()|0;b=Q;Yua(i);Yua(d);Ava(Z);ba=b;ca=Y;break}Yua(i);B=0;Y=Ia(40,o|0,145883,31)|0;b=B;B=0;b:do if(!(b&1)?(B=0,Xa(239,Y|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,q|0,145672,102);z=B;B=0;do if(!(z&1)){B=0;eb(502,s|0,145915,28);a=B;B=0;if(a&1){a=Rb()|0;f=Q;Yua(q);da=a;ea=f;break}B=0;wa(510,u|0,Z|0);f=B;B=0;if(f&1){f=Rb()|0;fa=1;ga=Q;ha=f}else{B=0;ua(163,y|0,q|0,s|0,592,u|0);f=B;B=0;if(f&1)ia=1;else{B=0;eb(503,y|0,1240,229);B=0;ia=0}f=Rb()|0;a=Q;Yua(u);fa=ia;ga=a;ha=f}Yua(s);Yua(q);if(fa){da=ha;ea=ga}else{ja=ga;ka=ha;break b}}else{f=Rb()|0;da=f;ea=Q}while(0);zb(y|0);ja=ea;ka=da}else T=52;while(0);if((T|0)==52){Y=Rb()|0;ja=Q;ka=Y}k[o>>2]=27468;k[e>>2]=27488;k[Z>>2]=27560;Yua(d);Ava(Z);vva(e);U=ja;V=ka;Qb(V|0)}while(0);_=ba;aa=ca;vva(e);Qb(aa|0)}function uoa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;d=r;r=r+176|0;e=d+152|0;f=d+16|0;g=d;a:do if(BY()|0){h=f+56|0;i=f+4|0;k[f>>2]=27524;k[h>>2]=27544;B=0;wa(508,f+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(h);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[h>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=f+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,i|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);Yua(n);Ava(i);o=s;p=q;break}Yua(e);B=0;Ia(40,f|0,145944,31)|0;q=B;B=0;if(!(q&1)?(B=0,wa(510,g|0,i|0),q=B,B=0,!(q&1)):0){B=0;ya(425,g|0)|0;q=B;B=0;if(!(q&1)){Yua(g);k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);break a}q=Rb()|0;s=Q;Yua(g);t=q;u=s;k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);Qb(t|0)}s=Rb()|0;t=s;u=Q;k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);Qb(t|0)}while(0);l=o;m=p;vva(h);Qb(m|0)}while(0);m=a+20|0;if((th(k[m>>2]|0)|0)>0){p=0;do{o=qh(k[m>>2]|0,p)|0;nd[k[(k[o>>2]|0)+40>>2]&1023](o,b,c);p=p+1|0}while((p|0)<(th(k[m>>2]|0)|0))}m=a+36|0;if((bL(k[m>>2]|0)|0)>0){p=0;do{o=(qh(k[m>>2]|0,p)|0)+4|0;nd[k[(k[o>>2]|0)+12>>2]&1023](o,b,c);p=p+1|0}while((p|0)<(bL(k[m>>2]|0)|0))}m=a+40|0;if((th(k[m>>2]|0)|0)>0)v=0;else{r=d;return}do{a=(qh(k[m>>2]|0,v)|0)+4|0;nd[k[(k[a>>2]|0)+12>>2]&1023](a,b,c);v=v+1|0}while((v|0)<(th(k[m>>2]|0)|0));r=d;return}function voa(a,b,c){a=a|0;b=+b;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;d=r;r=r+176|0;e=d+152|0;f=d+16|0;g=d;a:do if(BY()|0){h=f+56|0;i=f+4|0;k[f>>2]=27524;k[h>>2]=27544;B=0;wa(508,f+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(h);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[h>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=f+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,i|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);Yua(n);Ava(i);o=s;p=q;break}Yua(e);B=0;Ia(40,f|0,145944,31)|0;q=B;B=0;if(!(q&1)?(B=0,wa(510,g|0,i|0),q=B,B=0,!(q&1)):0){B=0;ya(425,g|0)|0;q=B;B=0;if(!(q&1)){Yua(g);k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);break a}q=Rb()|0;s=Q;Yua(g);t=q;u=s;k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);Qb(t|0)}s=Rb()|0;t=s;u=Q;k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);Qb(t|0)}while(0);l=o;m=p;vva(h);Qb(m|0)}while(0);m=a+20|0;if((th(k[m>>2]|0)|0)>0){p=0;do{o=qh(k[m>>2]|0,p)|0;Nc[k[(k[o>>2]|0)+32>>2]&31](o,b,c);p=p+1|0}while((p|0)<(th(k[m>>2]|0)|0))}m=a+36|0;if((bL(k[m>>2]|0)|0)>0){p=0;do{o=(qh(k[m>>2]|0,p)|0)+4|0;Nc[k[(k[o>>2]|0)+4>>2]&31](o,b,c);p=p+1|0}while((p|0)<(bL(k[m>>2]|0)|0))}m=a+40|0;if((th(k[m>>2]|0)|0)>0)v=0;else{r=d;return}do{a=(qh(k[m>>2]|0,v)|0)+4|0;Nc[k[(k[a>>2]|0)+4>>2]&31](a,b,c);v=v+1|0}while((v|0)<(th(k[m>>2]|0)|0));r=d;return}function woa(a,b,c){a=a|0;b=+b;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;d=r;r=r+176|0;e=d+152|0;f=d+16|0;g=d;a:do if(BY()|0){h=f+56|0;i=f+4|0;k[f>>2]=27524;k[h>>2]=27544;B=0;wa(508,f+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(h);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[h>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=f+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,i|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);Yua(n);Ava(i);o=s;p=q;break}Yua(e);B=0;Ia(40,f|0,145944,31)|0;q=B;B=0;if(!(q&1)?(B=0,wa(510,g|0,i|0),q=B,B=0,!(q&1)):0){B=0;ya(425,g|0)|0;q=B;B=0;if(!(q&1)){Yua(g);k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);break a}q=Rb()|0;s=Q;Yua(g);t=s;u=q;k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);Qb(u|0)}q=Rb()|0;t=Q;u=q;k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);Qb(u|0)}while(0);l=o;m=p;vva(h);Qb(m|0)}while(0);if((th(a)|0)>0)v=0;else{r=d;return}do{m=qh(a,v)|0;Nc[k[(k[m>>2]|0)+32>>2]&31](m,b,c);v=v+1|0}while((v|0)<(th(a)|0));r=d;return}function xoa(a,b){a=a|0;b=b|0;var c=0;if(!(k[b>>2]|0)){yoa(a,0);return}c=k[k[b+4>>2]>>2]|0;b=Hc[k[(k[c>>2]|0)+52>>2]&511](c)|0;yoa(a,b);if(!b)return;Tqa(b);return}function yoa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;c=r;r=r+176|0;d=c+156|0;e=c+152|0;f=c+16|0;g=c;cO(k[a+44>>2]|0,e,477);a:do if(BY()|0){h=f+56|0;i=f+4|0;k[f>>2]=27524;k[h>>2]=27544;B=0;wa(508,f+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(h);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[h>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=f+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;Ia(40,f|0,145976,33)|0;q=B;B=0;if(!(q&1)?(B=0,wa(510,g|0,i|0),q=B,B=0,!(q&1)):0){B=0;ya(425,g|0)|0;q=B;B=0;if(!(q&1)){Yua(g);k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);break a}q=Rb()|0;s=Q;Yua(g);t=q;u=s;k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);Qb(t|0)}s=Rb()|0;t=s;u=Q;k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);Qb(t|0)}while(0);l=o;m=p;vva(h);Qb(m|0)}while(0);m=n_(k[e>>2]|0)|0;e=a+20|0;if((th(k[e>>2]|0)|0)<=0){if(!m){r=c;return}}else{a=0;do{p=qh(k[e>>2]|0,a)|0;nd[k[(k[m>>2]|0)+60>>2]&1023](m,b,p);a=a+1|0}while((a|0)<(th(k[e>>2]|0)|0))}Ec[k[(k[m>>2]|0)+4>>2]&1023](m);r=c;return}function zoa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;b=r;r=r+352|0;c=b+332|0;d=b+328|0;e=b+192|0;f=b+176|0;g=b+40|0;h=b+24|0;i=b+12|0;j=b;cO(k[a+44>>2]|0,d,37);switch(k[d>>2]|0){case 62:{a:do if(CY()|0){l=e+56|0;m=e+4|0;k[e>>2]=27524;k[l>>2]=27544;B=0;wa(508,e+56|0,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(l);Qb(p|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[l>>2]=27488;B=0;va(448,m|0);n=B;B=0;do if(n&1){q=Rb()|0;s=Q;t=q}else{k[m>>2]=27560;q=e+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,m|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(c);Yua(q);Ava(m);s=v;t=u;break}Yua(c);B=0;Ia(40,e|0,146010,42)|0;u=B;B=0;do if(!(u&1)?(B=0,wa(510,f|0,m|0),v=B,B=0,!(v&1)):0){B=0;ya(425,f|0)|0;v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(f);x=w;y=v;break}else{Yua(f);k[e>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);break a}}else z=15;while(0);if((z|0)==15){u=Rb()|0;x=Q;y=u}k[e>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(l);A=x;C=y;Qb(C|0)}while(0);o=s;p=t;vva(l);Qb(p|0)}while(0);p=a+20|0;if((th(k[p>>2]|0)|0)>0)D=0;else{r=b;return}do{cq(qh(k[p>>2]|0,D)|0);D=D+1|0}while((D|0)<(th(k[p>>2]|0)|0));r=b;return}case 60:case 61:case 59:{r=b;return}default:{b=g+56|0;p=g+4|0;k[g>>2]=27524;k[b>>2]=27544;B=0;wa(508,g+56|0,p|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;F=D;vva(b);Qb(F|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[b>>2]=27488;B=0;va(448,p|0);D=B;B=0;do if(D&1){a=Rb()|0;G=Q;H=a}else{k[p>>2]=27560;a=g+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[g+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,p|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;s=Q;Yua(c);Yua(a);Ava(p);G=s;H=t;break}Yua(c);B=0;t=Ia(40,g|0,146460,20)|0;s=B;B=0;b:do if((((!(s&1)?(B=0,o=ya(427,k[d>>2]|0)|0,y=B,B=0,!(y&1)):0)?(y=Lta(o)|0,B=0,x=Ia(40,t|0,o|0,y|0)|0,y=B,B=0,!(y&1)):0)?(B=0,y=Ia(40,x|0,146481,18)|0,x=B,B=0,!(x&1)):0)?(B=0,Xa(239,y|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,h|0,146053,90);x=B;B=0;do if(!(x&1)){B=0;eb(502,i|0,146144,15);o=B;B=0;if(o&1){o=Rb()|0;e=Q;Yua(h);I=e;J=o;break}B=0;wa(510,j|0,p|0);o=B;B=0;if(o&1){o=Rb()|0;K=1;L=Q;M=o}else{B=0;ua(163,y|0,h|0,i|0,29,j|0);o=B;B=0;if(o&1)N=1;else{B=0;eb(503,y|0,1240,229);B=0;N=0}o=Rb()|0;e=Q;Yua(j);K=N;L=e;M=o}Yua(i);Yua(h);if(K){I=L;J=M}else{O=L;P=M;break b}}else{o=Rb()|0;I=Q;J=o}while(0);zb(y|0);O=I;P=J}else z=38;while(0);if((z|0)==38){t=Rb()|0;O=Q;P=t}k[g>>2]=27468;k[b>>2]=27488;k[p>>2]=27560;Yua(a);Ava(p);vva(b);A=O;C=P;Qb(C|0)}while(0);E=G;F=H;vva(b);Qb(F|0)}}}function Aoa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0;c=r;r=r+352|0;d=c+336|0;e=c+332|0;f=c+328|0;g=c+192|0;h=c+176|0;i=c+40|0;j=c+24|0;l=c+12|0;m=c;a:do if(BY()|0){n=g+56|0;o=g+4|0;k[g>>2]=27524;k[n>>2]=27544;B=0;wa(508,g+56|0,o|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;s=p;vva(n);Qb(s|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[n>>2]=27488;B=0;va(448,o|0);p=B;B=0;do if(p&1){t=Rb()|0;u=Q;v=t}else{k[o>>2]=27560;t=g+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[g+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,o|0,d|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(d);Yua(t);Ava(o);u=x;v=w;break}Yua(d);B=0;Ia(40,g|0,146160,28)|0;w=B;B=0;do if(!(w&1)?(B=0,wa(510,h|0,o|0),x=B,B=0,!(x&1)):0){B=0;ya(425,h|0)|0;x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(h);z=x;A=y;break}else{Yua(h);k[g>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);break a}}else C=14;while(0);if((C|0)==14){w=Rb()|0;z=w;A=Q}k[g>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);D=z;E=A;Qb(D|0)}while(0);q=u;s=v;vva(n);Qb(s|0)}while(0);s=b+44|0;cO(k[s>>2]|0,e,478);cO(k[s>>2]|0,f,477);s=en(k[b+24>>2]|0,k[e>>2]|0,943)|0;if(s){v=Qqa(8)|0;B=0;va(485,v|0);u=B;B=0;b:do if(u&1)C=52;else{do if(k[v>>2]|0){B=0;q=ya(423,4)|0;A=B;B=0;if(A&1){C=52;break b}B=0;eb(505,q|0,s|0,0);A=B;B=0;if(A&1){A=Rb()|0;z=Q;Sqa(q);F=z;G=A;break b}else{k[v+4>>2]=q;break}}while(0);n=n_(k[f>>2]|0)|0;q=b+20|0;if((th(k[q>>2]|0)|0)<=0){if(n)C=55}else{A=0;do{z=qh(k[q>>2]|0,A)|0;nd[k[(k[n>>2]|0)+52>>2]&1023](n,v,z);A=A+1|0}while((A|0)<(th(k[q>>2]|0)|0));C=55}if((C|0)==55)Ec[k[(k[n>>2]|0)+4>>2]&1023](n);if(!(k[v>>2]|0)){k[a>>2]=v;r=c;return}q=k[k[v+4>>2]>>2]|0;Ec[k[(k[q>>2]|0)+12>>2]&1023](q);k[a>>2]=v;r=c;return}while(0);if((C|0)==52){c=Rb()|0;F=Q;G=c}Sqa(v);D=G;E=F;Qb(D|0)}F=i+56|0;G=i+4|0;k[i>>2]=27524;k[F>>2]=27544;B=0;wa(508,i+56|0,G|0);v=B;B=0;if(v&1){v=Rb()|0;H=Q;I=v;vva(F);Qb(I|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[F>>2]=27488;B=0;va(448,G|0);v=B;B=0;do if(v&1){c=Rb()|0;J=Q;K=c}else{k[G>>2]=27560;c=i+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,G|0,d|0);a=B;B=0;if(a&1){a=Rb()|0;b=Q;Yua(d);Yua(c);Ava(G);J=b;K=a;break}Yua(d);B=0;a=Ia(40,i|0,146189,56)|0;b=B;B=0;c:do if(((!(b&1)?(B=0,f=ya(427,k[e>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(f)|0,B=0,u=Ia(40,a|0,f|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,j|0,146246,104);s=B;B=0;do if(!(s&1)){B=0;eb(502,l|0,146351,22);f=B;B=0;if(f&1){f=Rb()|0;q=Q;Yua(j);L=f;M=q;break}B=0;wa(510,m|0,G|0);q=B;B=0;if(q&1){q=Rb()|0;N=q;O=1;P=Q}else{B=0;ua(163,u|0,j|0,l|0,26,m|0);q=B;B=0;if(q&1)R=1;else{B=0;eb(503,u|0,1240,229);B=0;R=0}q=Rb()|0;f=Q;Yua(m);N=q;O=R;P=f}Yua(l);Yua(j);if(O){L=N;M=P}else{S=N;T=P;break c}}else{f=Rb()|0;L=f;M=Q}while(0);zb(u|0);S=L;T=M}else C=35;while(0);if((C|0)==35){a=Rb()|0;S=a;T=Q}k[i>>2]=27468;k[F>>2]=27488;k[G>>2]=27560;Yua(c);Ava(G);vva(F);D=S;E=T;Qb(D|0)}while(0);H=J;I=K;vva(F);Qb(I|0)}function Boa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;b=r;r=r+496|0;c=b+480|0;d=b+476|0;e=b+328|0;f=b+464|0;g=b+192|0;h=b+176|0;i=b+40|0;j=b+24|0;l=b+12|0;m=b;cO(k[a+44>>2]|0,d,37);switch(k[d>>2]|0){case 60:{a:do if(CY()|0){n=e+56|0;o=e+4|0;k[e>>2]=27524;k[n>>2]=27544;B=0;wa(508,e+56|0,o|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;s=p;vva(n);Qb(s|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[n>>2]=27488;B=0;va(448,o|0);p=B;B=0;do if(p&1){t=Rb()|0;u=Q;v=t}else{k[o>>2]=27560;t=e+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,o|0,c|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(c);Yua(t);Ava(o);u=x;v=w;break}Yua(c);B=0;Ia(40,e|0,146374,42)|0;w=B;B=0;do if(!(w&1)?(B=0,wa(510,f|0,o|0),x=B,B=0,!(x&1)):0){B=0;ya(425,f|0)|0;x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(f);z=y;A=x;break}else{Yua(f);k[e>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);break a}}else C=15;while(0);if((C|0)==15){w=Rb()|0;z=Q;A=w}k[e>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);D=z;E=A;Qb(E|0)}while(0);q=u;s=v;vva(n);Qb(s|0)}while(0);s=a+20|0;if((th(k[s>>2]|0)|0)>0)F=0;else{r=b;return}do{bq(qh(k[s>>2]|0,F)|0);F=F+1|0}while((F|0)<(th(k[s>>2]|0)|0));r=b;return}case 61:{b:do if(CY()|0){s=g+56|0;F=g+4|0;k[g>>2]=27524;k[s>>2]=27544;B=0;wa(508,g+56|0,F|0);v=B;B=0;if(v&1){v=Rb()|0;G=Q;H=v;vva(s);Qb(H|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[s>>2]=27488;B=0;va(448,F|0);v=B;B=0;do if(v&1){u=Rb()|0;I=Q;J=u}else{k[F>>2]=27560;u=g+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[g+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,F|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;A=Q;Yua(c);Yua(u);Ava(F);I=A;J=q;break}Yua(c);B=0;Ia(40,g|0,146417,42)|0;q=B;B=0;do if(!(q&1)?(B=0,wa(510,h|0,F|0),A=B,B=0,!(A&1)):0){B=0;ya(425,h|0)|0;A=B;B=0;if(A&1){A=Rb()|0;z=Q;Yua(h);K=z;L=A;break}else{Yua(h);k[g>>2]=27468;k[s>>2]=27488;k[F>>2]=27560;Yua(u);Ava(F);vva(s);break b}}else C=33;while(0);if((C|0)==33){q=Rb()|0;K=Q;L=q}k[g>>2]=27468;k[s>>2]=27488;k[F>>2]=27560;Yua(u);Ava(F);vva(s);D=K;E=L;Qb(E|0)}while(0);G=I;H=J;vva(s);Qb(H|0)}while(0);H=a+20|0;if((th(k[H>>2]|0)|0)>0)M=0;else{r=b;return}do{fq(qh(k[H>>2]|0,M)|0);M=M+1|0}while((M|0)<(th(k[H>>2]|0)|0));r=b;return}case 62:case 59:{r=b;return}default:{b=i+56|0;H=i+4|0;k[i>>2]=27524;k[b>>2]=27544;B=0;wa(508,i+56|0,H|0);M=B;B=0;if(M&1){M=Rb()|0;N=Q;O=M;vva(b);Qb(O|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[b>>2]=27488;B=0;va(448,H|0);M=B;B=0;do if(M&1){a=Rb()|0;P=Q;R=a}else{k[H>>2]=27560;a=i+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[i+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,H|0,c|0);J=B;B=0;if(J&1){J=Rb()|0;I=Q;Yua(c);Yua(a);Ava(H);P=I;R=J;break}Yua(c);B=0;J=Ia(40,i|0,146460,20)|0;I=B;B=0;c:do if((((!(I&1)?(B=0,G=ya(427,k[d>>2]|0)|0,L=B,B=0,!(L&1)):0)?(L=Lta(G)|0,B=0,K=Ia(40,J|0,G|0,L|0)|0,L=B,B=0,!(L&1)):0)?(B=0,L=Ia(40,K|0,146481,18)|0,K=B,B=0,!(K&1)):0)?(B=0,Xa(239,L|0,0)|0,L=B,B=0,!(L&1)):0){L=Ab(20)|0;B=0;eb(502,j|0,146500,106);K=B;B=0;do if(!(K&1)){B=0;eb(502,l|0,146607,23);G=B;B=0;if(G&1){G=Rb()|0;g=Q;Yua(j);S=g;T=G;break}B=0;wa(510,m|0,H|0);G=B;B=0;if(G&1){G=Rb()|0;U=1;V=Q;W=G}else{B=0;ua(163,L|0,j|0,l|0,32,m|0);G=B;B=0;if(G&1)X=1;else{B=0;eb(503,L|0,1240,229);B=0;X=0}G=Rb()|0;g=Q;Yua(m);U=X;V=g;W=G}Yua(l);Yua(j);if(U){S=V;T=W}else{Y=V;Z=W;break c}}else{G=Rb()|0;S=Q;T=G}while(0);zb(L|0);Y=S;Z=T}else C=56;while(0);if((C|0)==56){J=Rb()|0;Y=Q;Z=J}k[i>>2]=27468;k[b>>2]=27488;k[H>>2]=27560;Yua(a);Ava(H);vva(b);D=Y;E=Z;Qb(E|0)}while(0);N=P;O=R;vva(b);Qb(O|0)}}}function Coa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0.0,n=0.0,o=0.0,q=0.0,r=0.0,s=0.0;b=a+20|0;if((th(k[b>>2]|0)|0)>0)c=0;else return;do{a=qh(k[b>>2]|0,c)|0;d=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;e=d>>>0>536870911?-1:d<<3;f=Rqa(e)|0;g=Rqa(e)|0;h=Rqa(e)|0;i=Rqa(e)|0;j=Rqa(e)|0;l=Rqa(e)|0;xp(a,f,461);xp(a,g,462);xp(a,h,463);xp(a,i,464);xp(a,j,339);e=a+32|0;m=+WJ(k[e>>2]|0,265);n=+WJ(k[e>>2]|0,267);if((d|0)>0){e=0;do{o=+p[g+(e<<3)>>3];q=+p[j+(e<<3)>>3];r=+p[f+(e<<3)>>3];if(o>0.0)s=+p[h+(e<<3)>>3]*(q-r);else s=+p[i+(e<<3)>>3]*(q-r);p[l+(e<<3)>>3]=n*((o+s)/1.0e3)/m;e=e+1|0}while((e|0)!=(d|0))}rd[k[(k[a>>2]|0)+48>>2]&511](a,388,l,738);Tqa(f);Tqa(g);Tqa(h);Tqa(i);Tqa(j);Tqa(l);c=c+1|0}while((c|0)<(th(k[b>>2]|0)|0));return}function Doa(a){a=a|0;var b=0,c=0;b=a+20|0;if((th(k[b>>2]|0)|0)>0)c=0;else return;do{jp(qh(k[b>>2]|0,c)|0);c=c+1|0}while((c|0)<(th(k[b>>2]|0)|0));return}function Eoa(a){a=a|0;var b=0,c=0;b=a+20|0;if((th(k[b>>2]|0)|0)>0)c=0;else return;do{kp(qh(k[b>>2]|0,c)|0);c=c+1|0}while((c|0)<(th(k[b>>2]|0)|0));return}function Foa(a){a=a|0;var b=0,c=0;b=a+20|0;if((th(k[b>>2]|0)|0)>0)c=0;else return;do{lp(qh(k[b>>2]|0,c)|0);c=c+1|0}while((c|0)<(th(k[b>>2]|0)|0));return}
+function p1(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0;b=r;r=r+768|0;c=b+752|0;d=b+592|0;e=b+740|0;f=b+456|0;g=b+728|0;h=b+304|0;i=b+440|0;j=b+152|0;l=b+288|0;m=b+16|0;n=b;o=d+56|0;q=d+4|0;k[d>>2]=27524;k[o>>2]=27544;B=0;wa(508,d+56|0,q|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;u=s;vva(o);Qb(u|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[o>>2]=27488;B=0;va(448,q|0);s=B;B=0;do if(s&1){v=Rb()|0;w=Q;x=v}else{k[q>>2]=27560;v=d+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,q|0,c|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(c);Yua(v);Ava(q);w=z;x=y;break}Yua(c);B=0;y=Ia(40,d|0,119576,15)|0;z=B;B=0;do if(((((!(z&1)?(A=k[a+12>>2]|0,C=Lta(A)|0,B=0,D=Ia(40,y|0,A|0,C|0)|0,C=B,B=0,!(C&1)):0)?(B=0,C=Ia(40,D|0,149175,1)|0,D=B,B=0,!(D&1)):0)?(B=0,D=Xa(242,C|0,k[a+8>>2]|0)|0,C=B,B=0,!(C&1)):0)?(B=0,Ia(40,D|0,149177,1)|0,D=B,B=0,!(D&1)):0)?(B=0,wa(510,e|0,q|0),D=B,B=0,!(D&1)):0){B=0;ya(424,e|0)|0;D=B;B=0;if(D&1){D=Rb()|0;C=Q;Yua(e);E=C;F=D;break}Yua(e);k[d>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(o);D=f+56|0;C=f+4|0;k[f>>2]=27524;k[D>>2]=27544;B=0;wa(508,f+56|0,C|0);A=B;B=0;if(A&1){A=Rb()|0;G=Q;H=A;vva(D);Qb(H|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[D>>2]=27488;B=0;va(448,C|0);A=B;B=0;do if(A&1){I=Rb()|0;J=Q;K=I}else{k[C>>2]=27560;I=f+36|0;k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[I+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,C|0,c|0);L=B;B=0;if(L&1){L=Rb()|0;M=Q;Yua(c);Yua(I);Ava(C);J=M;K=L;break}Yua(c);B=0;L=Ia(40,f|0,119592,11)|0;M=B;B=0;do if((!(M&1)?(N=k[a+16>>2]|0,O=Lta(N)|0,B=0,P=Ia(40,L|0,N|0,O|0)|0,O=B,B=0,!(O&1)):0)?(B=0,Ia(40,P|0,149177,1)|0,P=B,B=0,!(P&1)):0){B=0;wa(510,g|0,C|0);P=B;B=0;if(P&1){R=72;break}B=0;ya(424,g|0)|0;P=B;B=0;if(P&1){P=Rb()|0;O=Q;Yua(g);S=O;T=P;break}Yua(g);k[f>>2]=27468;k[D>>2]=27488;k[C>>2]=27560;Yua(I);Ava(C);vva(D);P=h+56|0;O=h+4|0;k[h>>2]=27524;k[P>>2]=27544;B=0;wa(508,h+56|0,O|0);N=B;B=0;if(N&1){N=Rb()|0;U=Q;V=N;vva(P);Qb(V|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[P>>2]=27488;B=0;va(448,O|0);N=B;B=0;do if(N&1){W=Rb()|0;X=Q;Y=W}else{k[O>>2]=27560;W=h+36|0;k[W>>2]=0;k[W+4>>2]=0;k[W+8>>2]=0;k[W+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,O|0,c|0);Z=B;B=0;if(Z&1){Z=Rb()|0;_=Q;Yua(c);Yua(W);Ava(O);X=_;Y=Z;break}Yua(c);B=0;Z=Ia(40,h|0,119604,11)|0;_=B;B=0;do if(_&1)R=75;else{$=k[a+20>>2]|0;aa=Lta($)|0;B=0;ba=Ia(40,Z|0,$|0,aa|0)|0;aa=B;B=0;if(aa&1){R=75;break}B=0;Ia(40,ba|0,149177,1)|0;ba=B;B=0;if(ba&1){R=75;break}B=0;wa(510,i|0,O|0);ba=B;B=0;if(ba&1){R=75;break}B=0;ya(424,i|0)|0;ba=B;B=0;if(ba&1){ba=Rb()|0;aa=Q;Yua(i);ca=aa;da=ba;break}Yua(i);k[h>>2]=27468;k[P>>2]=27488;k[O>>2]=27560;Yua(W);Ava(O);vva(P);ba=j+56|0;aa=j+4|0;k[j>>2]=27524;k[ba>>2]=27544;B=0;wa(508,j+56|0,aa|0);$=B;B=0;if($&1){$=Rb()|0;ea=Q;fa=$;vva(ba);Qb(fa|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[ba>>2]=27488;B=0;va(448,aa|0);$=B;B=0;do if($&1){ga=Rb()|0;ha=Q;ia=ga}else{k[aa>>2]=27560;ga=j+36|0;k[ga>>2]=0;k[ga+4>>2]=0;k[ga+8>>2]=0;k[ga+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,aa|0,c|0);ja=B;B=0;if(ja&1){ja=Rb()|0;ka=Q;Yua(c);Yua(ga);Ava(aa);ha=ka;ia=ja;break}Yua(c);B=0;ja=Ia(40,j|0,119616,11)|0;ka=B;B=0;do if(ka&1)R=78;else{B=0;la=Sa(1,ja|0,+(+p[a+24>>3]))|0;ma=B;B=0;if(ma&1){R=78;break}B=0;Ia(40,la|0,149177,1)|0;la=B;B=0;if(la&1){R=78;break}B=0;wa(510,l|0,aa|0);la=B;B=0;if(la&1){R=78;break}B=0;ya(424,l|0)|0;la=B;B=0;if(la&1){la=Rb()|0;ma=Q;Yua(l);na=ma;oa=la;break}Yua(l);k[j>>2]=27468;k[ba>>2]=27488;k[aa>>2]=27560;Yua(ga);Ava(aa);vva(ba);la=m+56|0;ma=m+4|0;k[m>>2]=27524;k[la>>2]=27544;B=0;wa(508,m+56|0,ma|0);pa=B;B=0;if(pa&1){pa=Rb()|0;qa=Q;ra=pa;vva(la);Qb(ra|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[la>>2]=27488;B=0;va(448,ma|0);pa=B;B=0;do if(pa&1){sa=Rb()|0;ta=Q;ua=sa}else{k[ma>>2]=27560;sa=m+36|0;k[sa>>2]=0;k[sa+4>>2]=0;k[sa+8>>2]=0;k[sa+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ma|0,c|0);xa=B;B=0;if(xa&1){xa=Rb()|0;za=Q;Yua(c);Yua(sa);Ava(ma);ta=za;ua=xa;break}Yua(c);B=0;xa=Ia(40,m|0,119628,10)|0;za=B;B=0;do if(!(za&1)){B=0;Aa=Sa(1,xa|0,+(+p[a+32>>3]))|0;Ba=B;B=0;if(Ba&1){R=81;break}B=0;Ia(40,Aa|0,149177,1)|0;Aa=B;B=0;if(Aa&1){R=81;break}B=0;wa(510,n|0,ma|0);Aa=B;B=0;if(Aa&1){R=81;break}B=0;ya(424,n|0)|0;Aa=B;B=0;if(Aa&1){Aa=Rb()|0;Ba=Q;Yua(n);Ca=Ba;Da=Aa;break}else{Yua(n);k[m>>2]=27468;k[la>>2]=27488;k[ma>>2]=27560;Yua(sa);Ava(ma);vva(la);r=b;return}}else R=81;while(0);if((R|0)==81){xa=Rb()|0;Ca=Q;Da=xa}k[m>>2]=27468;k[la>>2]=27488;k[ma>>2]=27560;Yua(sa);Ava(ma);vva(la);Ea=Ca;Fa=Da;Qb(Fa|0)}while(0);qa=ta;ra=ua;vva(la);Qb(ra|0)}while(0);if((R|0)==78){ja=Rb()|0;na=Q;oa=ja}k[j>>2]=27468;k[ba>>2]=27488;k[aa>>2]=27560;Yua(ga);Ava(aa);vva(ba);Ea=na;Fa=oa;Qb(Fa|0)}while(0);ea=ha;fa=ia;vva(ba);Qb(fa|0)}while(0);if((R|0)==75){Z=Rb()|0;ca=Q;da=Z}k[h>>2]=27468;k[P>>2]=27488;k[O>>2]=27560;Yua(W);Ava(O);vva(P);Ea=ca;Fa=da;Qb(Fa|0)}while(0);U=X;V=Y;vva(P);Qb(V|0)}else R=72;while(0);if((R|0)==72){L=Rb()|0;S=Q;T=L}k[f>>2]=27468;k[D>>2]=27488;k[C>>2]=27560;Yua(I);Ava(C);vva(D);Ea=S;Fa=T;Qb(Fa|0)}while(0);G=J;H=K;vva(D);Qb(H|0)}else R=69;while(0);if((R|0)==69){y=Rb()|0;E=Q;F=y}k[d>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(o);Ea=E;Fa=F;Qb(Fa|0)}while(0);t=w;u=x;vva(o);Qb(u|0)}function q1(a){a=a|0;Ec[k[(k[a>>2]|0)+8>>2]&1023](a);return}function r1(a){a=a|0;return -1}function s1(a){a=a|0;return 601}function t1(a){a=a|0;var b=0;b=Qqa(40)|0;B=0;Na(1,b|0,k[a+12>>2]|0,k[a+8>>2]|0,k[a+16>>2]|0,k[a+20>>2]|0,+(+p[a+24>>3]),+(+p[a+32>>3]));a=B;B=0;if(a&1){a=Rb()|0;Sqa(b);Qb(a|0)}else return b|0;return 0}function u1(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149435,20)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,119474,101);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,149525,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,91,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function v1(a){a=a|0;var b=0,c=0;b=k[a+12>>2]|0;a=Rqa((Lta(b)|0)+1|0)|0;c=(Lta(b)|0)+1|0;if(!b)yb(142353,118972,137,142345);if(!c)return a|0;TEa(a|0,b|0,c|0)|0;return a|0}function w1(a){a=a|0;return k[a+8>>2]|0}function x1(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+O2(b,k[a+16>>2]|0);d=+O2(b,k[a+20>>2]|0);return +(c*+p[a+24>>3]+d*+p[a+32>>3])}function y1(a){a=a|0;var b=0,c=0;k[a+-4>>2]=37304;k[a>>2]=37356;b=a+8|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=a+12|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=a+16|0;a=k[b>>2]|0;if(!a)return;Tqa(a);k[b>>2]=0;return}function z1(a){a=a|0;var b=0,c=0,d=0;b=a+-4|0;k[b>>2]=37304;k[a>>2]=37356;c=a+8|0;d=k[c>>2]|0;if(d){Tqa(d);k[c>>2]=0}c=a+12|0;d=k[c>>2]|0;if(d){Tqa(d);k[c>>2]=0}c=k[a+16>>2]|0;if(!c){Sqa(b);return}Tqa(c);Sqa(b);return}function A1(a){a=a|0;var b=0,c=0;b=k[a+8>>2]|0;a=Rqa((Lta(b)|0)+1|0)|0;c=(Lta(b)|0)+1|0;if(!b)yb(142353,118972,137,142345);if(!c)return a|0;TEa(a|0,b|0,c|0)|0;return a|0}function B1(a){a=a|0;return k[a+4>>2]|0}function C1(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+O2(b,k[a+12>>2]|0);d=+O2(b,k[a+16>>2]|0);return +(c*+p[a+20>>3]+d*+p[a+28>>3])}function D1(a){a=a|0;var b=0,c=0;k[a>>2]=37384;k[a+4>>2]=37436;b=a+12|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=a+16|0;a=k[b>>2]|0;if(!a)return;Tqa(a);k[b>>2]=0;return}function E1(a){a=a|0;var b=0,c=0;k[a>>2]=37384;k[a+4>>2]=37436;b=a+12|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=k[a+16>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function F1(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=d+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(p);Ava(l);q=u;s=t;break}Yua(c);B=0;t=Ia(40,d|0,119764,10)|0;u=B;B=0;do if(((((!(u&1)?(v=k[a+12>>2]|0,w=Lta(v)|0,B=0,x=Ia(40,t|0,v|0,w|0)|0,w=B,B=0,!(w&1)):0)?(B=0,w=Ia(40,x|0,149175,1)|0,x=B,B=0,!(x&1)):0)?(B=0,x=Xa(242,w|0,k[a+8>>2]|0)|0,w=B,B=0,!(w&1)):0)?(B=0,Ia(40,x|0,149177,1)|0,x=B,B=0,!(x&1)):0)?(B=0,wa(510,e|0,l|0),x=B,B=0,!(x&1)):0){B=0;ya(424,e|0)|0;x=B;B=0;if(x&1){x=Rb()|0;w=Q;Yua(e);y=w;z=x;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);x=f+56|0;w=f+4|0;k[f>>2]=27524;k[x>>2]=27544;B=0;wa(508,f+56|0,w|0);v=B;B=0;if(v&1){v=Rb()|0;A=Q;C=v;vva(x);Qb(C|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[x>>2]=27488;B=0;va(448,w|0);v=B;B=0;do if(v&1){D=Rb()|0;E=Q;F=D}else{k[w>>2]=27560;D=f+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,w|0,c|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(c);Yua(D);Ava(w);E=H;F=G;break}Yua(c);B=0;G=Ia(40,f|0,119775,14)|0;H=B;B=0;do if((!(H&1)?(B=0,I=Xa(245,G|0,k[a+16>>2]|0)|0,J=B,B=0,!(J&1)):0)?(B=0,Ia(40,I|0,149177,1)|0,I=B,B=0,!(I&1)):0){B=0;wa(510,g|0,w|0);I=B;B=0;if(I&1){K=46;break}B=0;ya(424,g|0)|0;I=B;B=0;if(I&1){I=Rb()|0;J=Q;Yua(g);L=J;M=I;break}Yua(g);k[f>>2]=27468;k[x>>2]=27488;k[w>>2]=27560;Yua(D);Ava(w);vva(x);I=h+56|0;J=h+4|0;k[h>>2]=27524;k[I>>2]=27544;B=0;wa(508,h+56|0,J|0);N=B;B=0;if(N&1){N=Rb()|0;O=Q;P=N;vva(I);Qb(P|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[I>>2]=27488;B=0;va(448,J|0);N=B;B=0;do if(N&1){R=Rb()|0;S=Q;T=R}else{k[J>>2]=27560;R=h+36|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,J|0,c|0);U=B;B=0;if(U&1){U=Rb()|0;V=Q;Yua(c);Yua(R);Ava(J);S=V;T=U;break}Yua(c);B=0;U=Ia(40,h|0,119790,7)|0;V=B;B=0;do if(!(V&1)){B=0;W=Xa(242,U|0,k[a+20>>2]|0)|0;X=B;B=0;if(X&1){K=49;break}B=0;Ia(40,W|0,149177,1)|0;W=B;B=0;if(W&1){K=49;break}B=0;wa(510,i|0,J|0);W=B;B=0;if(W&1){K=49;break}B=0;ya(424,i|0)|0;W=B;B=0;if(W&1){W=Rb()|0;X=Q;Yua(i);Y=X;Z=W;break}else{Yua(i);k[h>>2]=27468;k[I>>2]=27488;k[J>>2]=27560;Yua(R);Ava(J);vva(I);r=b;return}}else K=49;while(0);if((K|0)==49){U=Rb()|0;Y=Q;Z=U}k[h>>2]=27468;k[I>>2]=27488;k[J>>2]=27560;Yua(R);Ava(J);vva(I);_=Y;$=Z;Qb($|0)}while(0);O=S;P=T;vva(I);Qb(P|0)}else K=46;while(0);if((K|0)==46){G=Rb()|0;L=Q;M=G}k[f>>2]=27468;k[x>>2]=27488;k[w>>2]=27560;Yua(D);Ava(w);vva(x);_=L;$=M;Qb($|0)}while(0);A=E;C=F;vva(x);Qb(C|0)}else K=43;while(0);if((K|0)==43){t=Rb()|0;y=Q;z=t}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);_=y;$=z;Qb($|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}function G1(a){a=a|0;Ec[k[(k[a>>2]|0)+8>>2]&1023](a);return}function H1(a){a=a|0;return -1}function I1(a){a=a|0;return 597}function J1(a){a=a|0;var b=0;b=Qqa(24)|0;B=0;ua(173,b|0,k[a+12>>2]|0,k[a+8>>2]|0,k[a+16>>2]|0,k[a+20>>2]|0);a=B;B=0;if(a&1){a=Rb()|0;Sqa(b);Qb(a|0)}else return b|0;return 0}function K1(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149435,20)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,119667,96);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,149525,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,80,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function L1(a){a=a|0;var b=0,c=0;b=k[a+12>>2]|0;a=Rqa((Lta(b)|0)+1|0)|0;c=(Lta(b)|0)+1|0;if(!b)yb(142353,118972,137,142345);if(!c)return a|0;TEa(a|0,b|0,c|0)|0;return a|0}function M1(a){a=a|0;return k[a+8>>2]|0}function N1(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=0.0;p[e>>3]=0.0;f=b+20|0;if((th(k[f>>2]|0)|0)>0){b=a+16|0;g=0.0;a=0;do{h=qh(k[f>>2]|0,a)|0;g=+id[k[(k[h>>2]|0)+280>>2]&63](h,k[b>>2]|0)+g;p[d>>3]=g;a=a+1|0}while((a|0)<(th(k[f>>2]|0)|0))}fZ(d,e,1,2,4,uY()|0)|0;r=c;return +(+p[e>>3])}function O1(a){a=a|0;var b=0,c=0;b=a+-4|0;k[b>>2]=37384;k[b+4>>2]=37436;a=b+12|0;c=k[a>>2]|0;if(c){Tqa(c);k[a>>2]=0}a=b+16|0;b=k[a>>2]|0;if(!b)return;Tqa(b);k[a>>2]=0;return}function P1(a){a=a|0;var b=0,c=0;b=a+-4|0;k[b>>2]=37384;k[b+4>>2]=37436;a=b+12|0;c=k[a>>2]|0;if(c){Tqa(c);k[a>>2]=0}a=k[b+16>>2]|0;if(!a){Sqa(b);return}Tqa(a);Sqa(b);return}function Q1(a){a=a|0;var b=0,c=0;b=k[a+-4+12>>2]|0;a=Rqa((Lta(b)|0)+1|0)|0;c=(Lta(b)|0)+1|0;if(!b)yb(142353,118972,137,142345);if(!c)return a|0;TEa(a|0,b|0,c|0)|0;return a|0}function R1(a){a=a|0;return k[a+-4+8>>2]|0}function S1(a,b){a=a|0;b=b|0;return +(+N1(a+-4|0,b))}function T1(a){a=a|0;var b=0;k[a>>2]=37224;k[a+4>>2]=37276;b=a+12|0;a=k[b>>2]|0;if(!a)return;Tqa(a);k[b>>2]=0;return}function U1(a){a=a|0;var b=0;k[a>>2]=37224;k[a+4>>2]=37276;b=k[a+12>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function V1(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=d+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(p);Ava(l);q=u;s=t;break}Yua(c);B=0;t=Ia(40,d|0,119907,13)|0;u=B;B=0;do if(((((!(u&1)?(v=k[a+12>>2]|0,w=Lta(v)|0,B=0,x=Ia(40,t|0,v|0,w|0)|0,w=B,B=0,!(w&1)):0)?(B=0,w=Ia(40,x|0,149175,1)|0,x=B,B=0,!(x&1)):0)?(B=0,x=Xa(242,w|0,k[a+8>>2]|0)|0,w=B,B=0,!(w&1)):0)?(B=0,Ia(40,x|0,149177,1)|0,x=B,B=0,!(x&1)):0)?(B=0,wa(510,e|0,l|0),x=B,B=0,!(x&1)):0){B=0;ya(424,e|0)|0;x=B;B=0;if(x&1){x=Rb()|0;w=Q;Yua(e);y=w;z=x;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);x=f+56|0;w=f+4|0;k[f>>2]=27524;k[x>>2]=27544;B=0;wa(508,f+56|0,w|0);v=B;B=0;if(v&1){v=Rb()|0;A=Q;C=v;vva(x);Qb(C|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[x>>2]=27488;B=0;va(448,w|0);v=B;B=0;do if(v&1){D=Rb()|0;E=Q;F=D}else{k[w>>2]=27560;D=f+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,w|0,c|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(c);Yua(D);Ava(w);E=H;F=G;break}Yua(c);B=0;G=Ia(40,f|0,119921,16)|0;H=B;B=0;do if((!(H&1)?(I=a+16|0,B=0,J=Xa(242,G|0,k[I>>2]|0)|0,K=B,B=0,!(K&1)):0)?(B=0,K=Ia(40,J|0,149175,1)|0,J=B,B=0,!(J&1)):0){B=0;J=ya(427,k[I>>2]|0)|0;I=B;B=0;if(I&1){L=49;break}I=Lta(J)|0;B=0;M=Ia(40,K|0,J|0,I|0)|0;I=B;B=0;if(I&1){L=49;break}B=0;Ia(40,M|0,149177,1)|0;M=B;B=0;if(M&1){L=49;break}B=0;wa(510,g|0,w|0);M=B;B=0;if(M&1){L=49;break}B=0;ya(424,g|0)|0;M=B;B=0;if(M&1){M=Rb()|0;I=Q;Yua(g);N=I;O=M;break}Yua(g);k[f>>2]=27468;k[x>>2]=27488;k[w>>2]=27560;Yua(D);Ava(w);vva(x);M=h+56|0;I=h+4|0;k[h>>2]=27524;k[M>>2]=27544;B=0;wa(508,h+56|0,I|0);J=B;B=0;if(J&1){J=Rb()|0;P=Q;R=J;vva(M);Qb(R|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[M>>2]=27488;B=0;va(448,I|0);J=B;B=0;do if(J&1){K=Rb()|0;S=Q;T=K}else{k[I>>2]=27560;K=h+36|0;k[K>>2]=0;k[K+4>>2]=0;k[K+8>>2]=0;k[K+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,I|0,c|0);U=B;B=0;if(U&1){U=Rb()|0;V=Q;Yua(c);Yua(K);Ava(I);S=V;T=U;break}Yua(c);B=0;U=Ia(40,h|0,119938,10)|0;V=B;B=0;do if(!(V&1)){B=0;W=Xa(242,U|0,k[a+20>>2]|0)|0;X=B;B=0;if(X&1){L=52;break}B=0;Ia(40,W|0,149177,1)|0;W=B;B=0;if(W&1){L=52;break}B=0;wa(510,i|0,I|0);W=B;B=0;if(W&1){L=52;break}B=0;ya(424,i|0)|0;W=B;B=0;if(W&1){W=Rb()|0;X=Q;Yua(i);Y=X;Z=W;break}else{Yua(i);k[h>>2]=27468;k[M>>2]=27488;k[I>>2]=27560;Yua(K);Ava(I);vva(M);r=b;return}}else L=52;while(0);if((L|0)==52){U=Rb()|0;Y=Q;Z=U}k[h>>2]=27468;k[M>>2]=27488;k[I>>2]=27560;Yua(K);Ava(I);vva(M);_=Y;$=Z;Qb($|0)}while(0);P=S;R=T;vva(M);Qb(R|0)}else L=49;while(0);if((L|0)==49){G=Rb()|0;N=Q;O=G}k[f>>2]=27468;k[x>>2]=27488;k[w>>2]=27560;Yua(D);Ava(w);vva(x);_=N;$=O;Qb($|0)}while(0);A=E;C=F;vva(x);Qb(C|0)}else L=46;while(0);if((L|0)==46){t=Rb()|0;y=Q;z=t}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);_=y;$=z;Qb($|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}function W1(a){a=a|0;Ec[k[(k[a>>2]|0)+8>>2]&1023](a);return}function X1(a){a=a|0;return -1}function Y1(a){a=a|0;return 875}function Z1(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=Qqa(24)|0;c=k[a+12>>2]|0;d=k[a+8>>2]|0;e=k[a+16>>2]|0;f=k[a+20>>2]|0;k[b>>2]=37224;k[b+4>>2]=37276;k[b+8>>2]=d;d=(Lta(c)|0)+1|0;B=0;a=ya(422,d|0)|0;d=B;B=0;if(d&1){g=Rb()|0;h=Q;Sqa(b);Qb(g|0)}k[b+12>>2]=a;d=(Lta(c)|0)+1|0;if(!c){B=0;ib(283,142353,118972,137,142345);B=0;g=Rb()|0;h=Q;Sqa(b);Qb(g|0)}if(!d){i=b+16|0;k[i>>2]=e;j=b+20|0;k[j>>2]=f;return b|0}TEa(a|0,c|0,d|0)|0;i=b+16|0;k[i>>2]=e;j=b+20|0;k[j>>2]=f;return b|0}function _1(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149435,20)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,119807,99);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,149525,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,82,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function $1(a){a=a|0;var b=0,c=0;b=k[a+12>>2]|0;a=Rqa((Lta(b)|0)+1|0)|0;c=(Lta(b)|0)+1|0;if(!b)yb(142353,118972,137,142345);if(!c)return a|0;TEa(a|0,b|0,c|0)|0;return a|0}function a2(a){a=a|0;return k[a+8>>2]|0}function b2(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;d=c;e=b+44|0;oO(k[e>>2]|0,k[a+20>>2]|0,944);AZ(d,k[a+16>>2]|0,k[b+20>>2]|0,k[b+24>>2]|0,k[b+28>>2]|0,k[b+36>>2]|0,k[b+40>>2]|0,k[e>>2]|0);r=c;return +(+p[d>>3])}function c2(a){a=a|0;var b=0;b=a+-4|0;k[b>>2]=37224;k[b+4>>2]=37276;a=b+12|0;b=k[a>>2]|0;if(!b)return;Tqa(b);k[a>>2]=0;return}function d2(a){a=a|0;var b=0;b=a+-4|0;k[b>>2]=37224;k[b+4>>2]=37276;a=k[b+12>>2]|0;if(!a){Sqa(b);return}Tqa(a);Sqa(b);return}function e2(a){a=a|0;var b=0,c=0;b=k[a+-4+12>>2]|0;a=Rqa((Lta(b)|0)+1|0)|0;c=(Lta(b)|0)+1|0;if(!b)yb(142353,118972,137,142345);if(!c)return a|0;TEa(a|0,b|0,c|0)|0;return a|0}function f2(a){a=a|0;return k[a+-4+8>>2]|0}function g2(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;d=c;e=a+-4|0;a=b+44|0;oO(k[a>>2]|0,k[e+20>>2]|0,944);AZ(d,k[e+16>>2]|0,k[b+20>>2]|0,k[b+24>>2]|0,k[b+28>>2]|0,k[b+36>>2]|0,k[b+40>>2]|0,k[a>>2]|0);r=c;return +(+p[d>>3])}function h2(a){a=a|0;var b=0,c=0;k[a>>2]=37464;k[a+4>>2]=37516;b=a+12|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=a+28|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}p[a+40>>3]=0.0;k[a+48>>2]=0;return}function i2(a){a=a|0;var b=0,c=0;k[a>>2]=37464;k[a+4>>2]=37516;b=a+12|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=k[a+28>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function j2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0;b=r;r=r+928|0;c=b+904|0;d=b+744|0;e=b+892|0;f=b+592|0;g=b+880|0;h=b+440|0;j=b+728|0;l=b+304|0;m=b+576|0;n=b+152|0;o=b+288|0;p=b+16|0;q=b;s=d+56|0;t=d+4|0;k[d>>2]=27524;k[s>>2]=27544;B=0;wa(508,d+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=d+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,t|0,c|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(c);Yua(x);Ava(t);y=C;z=A;break}Yua(c);B=0;A=Ia(40,d|0,120058,9)|0;C=B;B=0;do if(((((!(C&1)?(D=k[a+12>>2]|0,E=Lta(D)|0,B=0,F=Ia(40,A|0,D|0,E|0)|0,E=B,B=0,!(E&1)):0)?(B=0,E=Ia(40,F|0,149175,1)|0,F=B,B=0,!(F&1)):0)?(B=0,F=Xa(242,E|0,k[a+8>>2]|0)|0,E=B,B=0,!(E&1)):0)?(B=0,Ia(40,F|0,149177,1)|0,F=B,B=0,!(F&1)):0)?(B=0,wa(510,e|0,t|0),F=B,B=0,!(F&1)):0){B=0;ya(424,e|0)|0;F=B;B=0;if(F&1){F=Rb()|0;E=Q;Yua(e);G=E;H=F;break}Yua(e);k[d>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);F=f+56|0;E=f+4|0;k[f>>2]=27524;k[F>>2]=27544;B=0;wa(508,f+56|0,E|0);D=B;B=0;if(D&1){D=Rb()|0;I=Q;J=D;vva(F);Qb(J|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[F>>2]=27488;B=0;va(448,E|0);D=B;B=0;do if(D&1){K=Rb()|0;L=Q;M=K}else{k[E>>2]=27560;K=f+36|0;k[K>>2]=0;k[K+4>>2]=0;k[K+8>>2]=0;k[K+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,E|0,c|0);N=B;B=0;if(N&1){N=Rb()|0;O=Q;Yua(c);Yua(K);Ava(E);L=O;M=N;break}Yua(c);B=0;N=Ia(40,f|0,119921,16)|0;O=B;B=0;do if((!(O&1)?(P=a+16|0,B=0,R=Xa(242,N|0,k[P>>2]|0)|0,S=B,B=0,!(S&1)):0)?(B=0,S=Ia(40,R|0,149175,1)|0,R=B,B=0,!(R&1)):0){B=0;R=ya(427,k[P>>2]|0)|0;P=B;B=0;if(P&1){T=94;break}P=Lta(R)|0;B=0;U=Ia(40,S|0,R|0,P|0)|0;P=B;B=0;if(P&1){T=94;break}B=0;Ia(40,U|0,149177,1)|0;U=B;B=0;if(U&1){T=94;break}B=0;wa(510,g|0,E|0);U=B;B=0;if(U&1){T=94;break}B=0;ya(424,g|0)|0;U=B;B=0;if(U&1){U=Rb()|0;P=Q;Yua(g);V=P;W=U;break}Yua(g);k[f>>2]=27468;k[F>>2]=27488;k[E>>2]=27560;Yua(K);Ava(E);vva(F);U=h+56|0;P=h+4|0;k[h>>2]=27524;k[U>>2]=27544;B=0;wa(508,h+56|0,P|0);R=B;B=0;if(R&1){R=Rb()|0;X=Q;Y=R;vva(U);Qb(Y|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[U>>2]=27488;B=0;va(448,P|0);R=B;B=0;do if(R&1){S=Rb()|0;Z=Q;_=S}else{k[P>>2]=27560;S=h+36|0;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,P|0,c|0);$=B;B=0;if($&1){$=Rb()|0;aa=Q;Yua(c);Yua(S);Ava(P);Z=aa;_=$;break}Yua(c);B=0;$=Ia(40,h|0,120068,22)|0;aa=B;B=0;do if(aa&1)T=97;else{ba=a+20|0;B=0;ca=Xa(242,$|0,k[ba>>2]|0)|0;da=B;B=0;if(da&1){T=97;break}B=0;da=Ia(40,ca|0,149175,1)|0;ca=B;B=0;if(ca&1){T=97;break}B=0;ca=ya(427,k[ba>>2]|0)|0;ba=B;B=0;if(ba&1){T=97;break}ba=Lta(ca)|0;B=0;ea=Ia(40,da|0,ca|0,ba|0)|0;ba=B;B=0;if(ba&1){T=97;break}B=0;Ia(40,ea|0,149177,1)|0;ea=B;B=0;if(ea&1){T=97;break}B=0;wa(510,j|0,P|0);ea=B;B=0;if(ea&1){T=97;break}B=0;ya(424,j|0)|0;ea=B;B=0;if(ea&1){ea=Rb()|0;ba=Q;Yua(j);fa=ba;ga=ea;break}Yua(j);k[h>>2]=27468;k[U>>2]=27488;k[P>>2]=27560;Yua(S);Ava(P);vva(U);ea=l+56|0;ba=l+4|0;k[l>>2]=27524;k[ea>>2]=27544;B=0;wa(508,l+56|0,ba|0);ca=B;B=0;if(ca&1){ca=Rb()|0;ha=Q;ia=ca;vva(ea);Qb(ia|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[ea>>2]=27488;B=0;va(448,ba|0);ca=B;B=0;do if(ca&1){da=Rb()|0;ja=Q;ka=da}else{k[ba>>2]=27560;da=l+36|0;k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;k[da+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ba|0,c|0);la=B;B=0;if(la&1){la=Rb()|0;ma=Q;Yua(c);Yua(da);Ava(ba);ja=ma;ka=la;break}Yua(c);B=0;la=Ia(40,l|0,120091,18)|0;ma=B;B=0;do if(ma&1)T=100;else{na=a+24|0;B=0;oa=Xa(242,la|0,k[na>>2]|0)|0;pa=B;B=0;if(pa&1){T=100;break}B=0;pa=Ia(40,oa|0,149175,1)|0;oa=B;B=0;if(oa&1){T=100;break}B=0;oa=ya(427,k[na>>2]|0)|0;na=B;B=0;if(na&1){T=100;break}na=Lta(oa)|0;B=0;qa=Ia(40,pa|0,oa|0,na|0)|0;na=B;B=0;if(na&1){T=100;break}B=0;Ia(40,qa|0,149177,1)|0;qa=B;B=0;if(qa&1){T=100;break}B=0;wa(510,m|0,ba|0);qa=B;B=0;if(qa&1){T=100;break}B=0;ya(424,m|0)|0;qa=B;B=0;if(qa&1){qa=Rb()|0;na=Q;Yua(m);ra=na;sa=qa;break}Yua(m);k[l>>2]=27468;k[ea>>2]=27488;k[ba>>2]=27560;Yua(da);Ava(ba);vva(ea);qa=n+56|0;na=n+4|0;k[n>>2]=27524;k[qa>>2]=27544;B=0;wa(508,n+56|0,na|0);oa=B;B=0;if(oa&1){oa=Rb()|0;ta=Q;ua=oa;vva(qa);Qb(ua|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[qa>>2]=27488;B=0;va(448,na|0);oa=B;B=0;do if(oa&1){pa=Rb()|0;xa=Q;za=pa}else{k[na>>2]=27560;pa=n+36|0;k[pa>>2]=0;k[pa+4>>2]=0;k[pa+8>>2]=0;k[pa+12>>2]=0;k[n+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,na|0,c|0);Aa=B;B=0;if(Aa&1){Aa=Rb()|0;Ba=Q;Yua(c);Yua(pa);Ava(na);xa=Ba;za=Aa;break}Yua(c);B=0;Aa=Ia(40,n|0,120110,23)|0;Ba=B;B=0;do if(Ba&1)T=103;else{Ca=k[a+28>>2]|0;Da=Lta(Ca)|0;B=0;Ea=Ia(40,Aa|0,Ca|0,Da|0)|0;Da=B;B=0;if(Da&1){T=103;break}B=0;Ia(40,Ea|0,149177,1)|0;Ea=B;B=0;if(Ea&1){T=103;break}B=0;wa(510,o|0,na|0);Ea=B;B=0;if(Ea&1){T=103;break}B=0;ya(424,o|0)|0;Ea=B;B=0;if(Ea&1){Ea=Rb()|0;Da=Q;Yua(o);Fa=Da;Ga=Ea;break}Yua(o);k[n>>2]=27468;k[qa>>2]=27488;k[na>>2]=27560;Yua(pa);Ava(na);vva(qa);Ea=p+56|0;Da=p+4|0;k[p>>2]=27524;k[Ea>>2]=27544;B=0;wa(508,p+56|0,Da|0);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Ha=Q;Ja=Ca;vva(Ea);Qb(Ja|0)}k[p+128>>2]=0;k[p+132>>2]=-1;k[p>>2]=27468;k[Ea>>2]=27488;B=0;va(448,Da|0);Ca=B;B=0;do if(Ca&1){Ka=Rb()|0;La=Q;Ma=Ka}else{k[Da>>2]=27560;Ka=p+36|0;k[Ka>>2]=0;k[Ka+4>>2]=0;k[Ka+8>>2]=0;k[Ka+12>>2]=0;k[p+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Da|0,c|0);Na=B;B=0;if(Na&1){Na=Rb()|0;Oa=Q;Yua(c);Yua(Ka);Ava(Da);La=Oa;Ma=Na;break}Yua(c);B=0;Na=Ia(40,p|0,120134,11)|0;Oa=B;B=0;do if(!(Oa&1)){B=0;Pa=Xa(247,Na|0,(i[a+32>>0]|0)!=0|0)|0;Qa=B;B=0;if(Qa&1){T=106;break}B=0;Ia(40,Pa|0,149177,1)|0;Pa=B;B=0;if(Pa&1){T=106;break}B=0;wa(510,q|0,Da|0);Pa=B;B=0;if(Pa&1){T=106;break}B=0;ya(424,q|0)|0;Pa=B;B=0;if(Pa&1){Pa=Rb()|0;Qa=Q;Yua(q);Ra=Qa;Sa=Pa;break}else{Yua(q);k[p>>2]=27468;k[Ea>>2]=27488;k[Da>>2]=27560;Yua(Ka);Ava(Da);vva(Ea);r=b;return}}else T=106;while(0);if((T|0)==106){Na=Rb()|0;Ra=Q;Sa=Na}k[p>>2]=27468;k[Ea>>2]=27488;k[Da>>2]=27560;Yua(Ka);Ava(Da);vva(Ea);Ta=Ra;Ua=Sa;Qb(Ua|0)}while(0);Ha=La;Ja=Ma;vva(Ea);Qb(Ja|0)}while(0);if((T|0)==103){Aa=Rb()|0;Fa=Q;Ga=Aa}k[n>>2]=27468;k[qa>>2]=27488;k[na>>2]=27560;Yua(pa);Ava(na);vva(qa);Ta=Fa;Ua=Ga;Qb(Ua|0)}while(0);ta=xa;ua=za;vva(qa);Qb(ua|0)}while(0);if((T|0)==100){la=Rb()|0;ra=Q;sa=la}k[l>>2]=27468;k[ea>>2]=27488;k[ba>>2]=27560;Yua(da);Ava(ba);vva(ea);Ta=ra;Ua=sa;Qb(Ua|0)}while(0);ha=ja;ia=ka;vva(ea);Qb(ia|0)}while(0);if((T|0)==97){$=Rb()|0;fa=Q;ga=$}k[h>>2]=27468;k[U>>2]=27488;k[P>>2]=27560;Yua(S);Ava(P);vva(U);Ta=fa;Ua=ga;Qb(Ua|0)}while(0);X=Z;Y=_;vva(U);Qb(Y|0)}else T=94;while(0);if((T|0)==94){N=Rb()|0;V=Q;W=N}k[f>>2]=27468;k[F>>2]=27488;k[E>>2]=27560;Yua(K);Ava(E);vva(F);Ta=V;Ua=W;Qb(Ua|0)}while(0);I=L;J=M;vva(F);Qb(J|0)}else T=91;while(0);if((T|0)==91){A=Rb()|0;G=Q;H=A}k[d>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);Ta=G;Ua=H;Qb(Ua|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}function k2(a){a=a|0;Ec[k[(k[a>>2]|0)+8>>2]&1023](a);return}function l2(a){a=a|0;return -1}function m2(a){a=a|0;return 652}function n2(a){a=a|0;var b=0,c=0;b=Qqa(56)|0;B=0;Ka(12,b|0,k[a+12>>2]|0,k[a+8>>2]|0,k[a+16>>2]|0,k[a+20>>2]|0,k[a+28>>2]|0,(i[a+32>>0]|0)!=0|0,k[a+24>>2]|0);c=B;B=0;if(c&1){c=Rb()|0;Sqa(b);Qb(c|0)}else{p[b+40>>3]=+p[a+40>>3];k[b+48>>2]=k[a+48>>2];return b|0}return 0}function o2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149435,20)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,119962,95);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,149525,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,107,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function p2(a){a=a|0;var b=0,c=0;b=k[a+12>>2]|0;a=Rqa((Lta(b)|0)+1|0)|0;c=(Lta(b)|0)+1|0;if(!b)yb(142353,118972,137,142345);if(!c)return a|0;TEa(a|0,b|0,c|0)|0;return a|0}function q2(a){a=a|0;return k[a+8>>2]|0}function r2(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0.0,q=0,s=0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0.0,A=0.0;c=r;r=r+64|0;d=c+56|0;e=c+48|0;f=c+40|0;g=c+32|0;h=c+24|0;j=c+16|0;l=c+8|0;m=c;n=b+44|0;dO(k[n>>2]|0,e,354);dO(k[n>>2]|0,f,355);dO(k[n>>2]|0,d,767);dO(k[n>>2]|0,g,358);if(!(i[a+32>>0]|0)){n=a+48|0;if(!(k[n>>2]|0)){o=+P2(b,k[a+16>>2]|0);q=qh(k[b+20>>2]|0,0)|0;s=Wo(q,k[a+20>>2]|0)|0;Fc[k[(k[s>>2]|0)+64>>2]&1023](s,h);s=a+40|0;t=+p[s>>3]+ +p[g>>3]*(o-+p[h>>3]);p[s>>3]=t;o=+p[d>>3];if(o==+p[f>>3])k[n>>2]=1;u=t/(o-+p[e>>3])}else u=+p[a+40>>3]/(+p[d>>3]-+p[e>>3]);v=u;r=c;return +v}p[h>>3]=0.0;p[j>>3]=0.0;p[l>>3]=0.0;n=a+48|0;if(!(k[n>>2]|0)){s=b+20|0;if((th(k[s>>2]|0)|0)>0){b=a+16|0;q=a+20|0;w=a+24|0;x=0;do{y=qh(k[s>>2]|0,x)|0;u=+Vc[k[(k[y>>2]|0)+296>>2]&7](y,k[b>>2]|0,k[q>>2]|0,k[w>>2]|0);p[h>>3]=u+ +p[h>>3];u=+id[k[(k[y>>2]|0)+300>>2]&63](y,k[w>>2]|0);p[l>>3]=u+ +p[l>>3];x=x+1|0}while((x|0)<(th(k[s>>2]|0)|0))}fZ(h,j,1,2,4,uY()|0)|0;fZ(l,m,1,2,4,uY()|0)|0;u=+p[m>>3];p[l>>3]=u;o=+p[j>>3];if(u!=0.0)z=o/u;else z=o;p[h>>3]=z;h=a+40|0;o=+p[h>>3]+z*+p[g>>3];p[h>>3]=o;z=+p[d>>3];if(z==+p[f>>3])k[n>>2]=1;A=o/(z-+p[e>>3])}else A=+p[a+40>>3]/(+p[d>>3]-+p[e>>3]);v=A;r=c;return +v}function s2(a){a=a|0;var b=0,c=0;k[a+-4>>2]=37464;k[a>>2]=37516;b=a+8|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=a+24|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}p[a+36>>3]=0.0;k[a+44>>2]=0;return}function t2(a){a=a|0;var b=0,c=0,d=0;b=a+-4|0;k[b>>2]=37464;k[a>>2]=37516;c=a+8|0;d=k[c>>2]|0;if(d){Tqa(d);k[c>>2]=0}c=k[a+24>>2]|0;if(!c){Sqa(b);return}Tqa(c);Sqa(b);return}function u2(a){a=a|0;var b=0,c=0;b=k[a+8>>2]|0;a=Rqa((Lta(b)|0)+1|0)|0;c=(Lta(b)|0)+1|0;if(!b)yb(142353,118972,137,142345);if(!c)return a|0;TEa(a|0,b|0,c|0)|0;return a|0}function v2(a){a=a|0;return k[a+4>>2]|0}function w2(a,b){a=a|0;b=b|0;return +(+r2(a+-4|0,b))}function x2(a){a=a|0;var b=0,c=0;k[a>>2]=37544;k[a+4>>2]=37596;b=a+20|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+24|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+28|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+32|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+36|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+12|0;a=k[b>>2]|0;if(!a){k[b>>2]=0;return}Tqa(a);k[b>>2]=0;return}function y2(a){a=a|0;x2(a);Sqa(a);return}function z2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0;b=r;r=r+624|0;c=b+604|0;d=b+456|0;e=b+592|0;f=b+304|0;g=b+440|0;h=b+152|0;i=b+288|0;j=b+16|0;l=b;m=d+56|0;n=d+4|0;k[d>>2]=27524;k[m>>2]=27544;B=0;wa(508,d+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;q=Q;s=o;vva(m);Qb(s|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){t=Rb()|0;u=Q;v=t}else{k[n>>2]=27560;t=d+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,n|0,c|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(c);Yua(t);Ava(n);u=x;v=w;break}Yua(c);B=0;w=Ia(40,d|0,120258,17)|0;x=B;B=0;do if(((((!(x&1)?(y=k[a+12>>2]|0,z=Lta(y)|0,B=0,A=Ia(40,w|0,y|0,z|0)|0,z=B,B=0,!(z&1)):0)?(B=0,z=Ia(40,A|0,149175,1)|0,A=B,B=0,!(A&1)):0)?(B=0,A=Xa(242,z|0,k[a+8>>2]|0)|0,z=B,B=0,!(z&1)):0)?(B=0,Ia(40,A|0,149177,1)|0,A=B,B=0,!(A&1)):0)?(B=0,wa(510,e|0,n|0),A=B,B=0,!(A&1)):0){B=0;ya(424,e|0)|0;A=B;B=0;if(A&1){A=Rb()|0;z=Q;Yua(e);C=z;D=A;break}Yua(e);k[d>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);A=f+56|0;z=f+4|0;k[f>>2]=27524;k[A>>2]=27544;B=0;wa(508,f+56|0,z|0);y=B;B=0;if(y&1){y=Rb()|0;E=Q;F=y;vva(A);Qb(F|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[A>>2]=27488;B=0;va(448,z|0);y=B;B=0;do if(y&1){G=Rb()|0;H=Q;I=G}else{k[z>>2]=27560;G=f+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,z|0,c|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(c);Yua(G);Ava(z);H=K;I=J;break}Yua(c);B=0;J=Ia(40,f|0,120276,17)|0;K=B;B=0;do if((!(K&1)?(L=a+16|0,B=0,M=Xa(242,J|0,k[L>>2]|0)|0,N=B,B=0,!(N&1)):0)?(B=0,Ia(40,M|0,149177,1)|0,M=B,B=0,!(M&1)):0){B=0;wa(510,g|0,z|0);M=B;B=0;if(M&1){O=46;break}B=0;ya(424,g|0)|0;M=B;B=0;if(M&1){M=Rb()|0;N=Q;Yua(g);P=N;R=M;break}Yua(g);k[f>>2]=27468;k[A>>2]=27488;k[z>>2]=27560;Yua(G);Ava(z);vva(A);if(!(k[L>>2]|0)){r=b;return}M=h+56|0;N=h+4|0;k[h>>2]=27524;k[M>>2]=27544;B=0;wa(508,h+56|0,N|0);S=B;B=0;if(S&1){S=Rb()|0;T=Q;U=S;vva(M);Qb(U|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[M>>2]=27488;B=0;va(448,N|0);S=B;B=0;do if(S&1){V=Rb()|0;W=Q;X=V}else{k[N>>2]=27560;V=h+36|0;k[V>>2]=0;k[V+4>>2]=0;k[V+8>>2]=0;k[V+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,N|0,c|0);Y=B;B=0;if(Y&1){Y=Rb()|0;Z=Q;Yua(c);Yua(V);Ava(N);W=Z;X=Y;break}Yua(c);B=0;Ia(40,h|0,120294,28)|0;Y=B;B=0;do if(!(Y&1)){B=0;wa(510,i|0,N|0);Z=B;B=0;if(Z&1){O=49;break}B=0;ya(424,i|0)|0;Z=B;B=0;if(Z&1){Z=Rb()|0;_=Q;Yua(i);$=_;aa=Z;break}Yua(i);k[h>>2]=27468;k[M>>2]=27488;k[N>>2]=27560;Yua(V);Ava(N);vva(M);if((k[L>>2]|0)<=0){r=b;return}Z=j+56|0;_=j+4|0;ba=j+56|0;ca=j+128|0;da=j+132|0;ea=j+36|0;fa=j+52|0;ga=a+36|0;ha=a+20|0;ia=a+24|0;ja=a+28|0;ka=a+32|0;la=0;while(1){k[j>>2]=27524;k[Z>>2]=27544;B=0;wa(508,ba|0,_|0);ma=B;B=0;if(ma&1){O=56;break}k[ca>>2]=0;k[da>>2]=-1;k[j>>2]=27468;k[Z>>2]=27488;B=0;va(448,_|0);ma=B;B=0;if(ma&1){O=57;break}k[_>>2]=27560;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[fa>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,_|0,c|0);ma=B;B=0;if(ma&1){O=55;break}Yua(c);B=0;ma=Xa(242,j|0,k[(k[ga>>2]|0)+(la<<2)>>2]|0)|0;na=B;B=0;if(na&1){O=73;break}B=0;na=Ia(40,ma|0,149175,1)|0;ma=B;B=0;if(ma&1){O=73;break}B=0;ma=Sa(1,na|0,+(+p[(k[ha>>2]|0)+(la<<3)>>3]))|0;na=B;B=0;if(na&1){O=73;break}B=0;na=Ia(40,ma|0,149175,1)|0;ma=B;B=0;if(ma&1){O=73;break}B=0;ma=Sa(1,na|0,+(+p[(k[ia>>2]|0)+(la<<3)>>3]))|0;na=B;B=0;if(na&1){O=73;break}B=0;na=Ia(40,ma|0,149175,1)|0;ma=B;B=0;if(ma&1){O=73;break}B=0;ma=Sa(1,na|0,+(+p[(k[ja>>2]|0)+(la<<3)>>3]))|0;na=B;B=0;if(na&1){O=73;break}B=0;na=Ia(40,ma|0,149175,1)|0;ma=B;B=0;if(ma&1){O=73;break}B=0;ma=Sa(1,na|0,+(+p[(k[ka>>2]|0)+(la<<3)>>3]))|0;na=B;B=0;if(na&1){O=73;break}B=0;Ia(40,ma|0,149177,1)|0;ma=B;B=0;if(ma&1){O=73;break}B=0;wa(510,l|0,_|0);ma=B;B=0;if(ma&1){O=73;break}B=0;ya(424,l|0)|0;ma=B;B=0;if(ma&1){O=74;break}Yua(l);k[j>>2]=27468;k[Z>>2]=27488;k[_>>2]=27560;Yua(ea);Ava(_);vva(Z);la=la+1|0;if((la|0)>=(k[L>>2]|0)){O=76;break}}if((O|0)==55){la=Rb()|0;ka=Q;Yua(c);Yua(ea);Ava(_);oa=ka;pa=la;O=58}else if((O|0)==56){la=Rb()|0;qa=Q;ra=la;vva(Z);Qb(ra|0)}else if((O|0)==57){la=Rb()|0;oa=Q;pa=la;O=58}else if((O|0)==73){la=Rb()|0;sa=Q;ta=la;O=75}else if((O|0)==74){la=Rb()|0;ka=Q;Yua(l);sa=ka;ta=la;O=75}else if((O|0)==76){r=b;return}if((O|0)==58){qa=oa;ra=pa;vva(Z);Qb(ra|0)}else if((O|0)==75){k[j>>2]=27468;k[Z>>2]=27488;k[_>>2]=27560;Yua(ea);Ava(_);vva(Z);ua=sa;xa=ta;Qb(xa|0)}}else O=49;while(0);if((O|0)==49){Y=Rb()|0;$=Q;aa=Y}k[h>>2]=27468;k[M>>2]=27488;k[N>>2]=27560;Yua(V);Ava(N);vva(M);ua=$;xa=aa;Qb(xa|0)}while(0);T=W;U=X;vva(M);Qb(U|0)}else O=46;while(0);if((O|0)==46){J=Rb()|0;P=Q;R=J}k[f>>2]=27468;k[A>>2]=27488;k[z>>2]=27560;Yua(G);Ava(z);vva(A);ua=P;xa=R;Qb(xa|0)}while(0);E=H;F=I;vva(A);Qb(F|0)}else O=43;while(0);if((O|0)==43){w=Rb()|0;C=Q;D=w}k[d>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);ua=C;xa=D;Qb(xa|0)}while(0);q=u;s=v;vva(m);Qb(s|0)}function A2(a){a=a|0;Ec[k[(k[a>>2]|0)+8>>2]&1023](a);return}function B2(a){a=a|0;return -1}function C2(a){a=a|0;return 871}function D2(a){a=a|0;var b=0;b=Qqa(40)|0;B=0;Va(1,b|0,k[a+12>>2]|0,k[a+8>>2]|0,k[a+16>>2]|0,k[a+20>>2]|0,k[a+24>>2]|0,k[a+28>>2]|0,k[a+32>>2]|0,k[a+36>>2]|0);a=B;B=0;if(a&1){a=Rb()|0;Sqa(b);Qb(a|0)}else return b|0;return 0}function E2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149435,20)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,120154,103);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,149525,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,124,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function F2(a){a=a|0;var b=0,c=0;b=k[a+12>>2]|0;a=Rqa((Lta(b)|0)+1|0)|0;c=(Lta(b)|0)+1|0;if(!b)yb(142353,118972,137,142345);if(!c)return a|0;TEa(a|0,b|0,c|0)|0;return a|0}function G2(a){a=a|0;return k[a+8>>2]|0}function H2(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0.0,i=0,j=0,l=0,m=0,n=0,o=0.0,q=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=0.0;p[e>>3]=0.0;f=a+16|0;if((k[f>>2]|0)<=0){g=uY()|0;fZ(d,e,1,2,4,g)|0;h=+p[e>>3];r=c;return +h}i=b+20|0;b=a+36|0;j=a+20|0;l=a+24|0;m=a+28|0;n=a+32|0;o=0.0;a=0;while(1){a:do if((th(k[i>>2]|0)|0)>0){q=0;while(1){s=qh(k[i>>2]|0,q)|0;t=Hc[k[(k[s>>2]|0)+16>>2]&511](s)|0;q=q+1|0;if((t|0)==(k[(k[b>>2]|0)+(a<<2)>>2]|0)){u=s;v=s;w=t;break}if((q|0)>=(th(k[i>>2]|0)|0)){x=o;break a}}y=+Mc[k[(k[u>>2]|0)+288>>2]&7](v,+p[(k[j>>2]|0)+(a<<3)>>3],+p[(k[l>>2]|0)+(a<<3)>>3],+p[(k[m>>2]|0)+(a<<3)>>3],+p[(k[n>>2]|0)+(a<<3)>>3],w)+o;p[d>>3]=y;x=y}else x=o;while(0);a=a+1|0;if((a|0)>=(k[f>>2]|0))break;else o=x}g=uY()|0;fZ(d,e,1,2,4,g)|0;h=+p[e>>3];r=c;return +h}function I2(a){a=a|0;x2(a+-4|0);return}function J2(a){a=a|0;var b=0;b=a+-4|0;x2(b);Sqa(b);return}function K2(a){a=a|0;var b=0,c=0;b=k[a+-4+12>>2]|0;a=Rqa((Lta(b)|0)+1|0)|0;c=(Lta(b)|0)+1|0;if(!b)yb(142353,118972,137,142345);if(!c)return a|0;TEa(a|0,b|0,c|0)|0;return a|0}function L2(a){a=a|0;return k[a+-4+8>>2]|0}function M2(a,b){a=a|0;b=b|0;return +(+H2(a+-4|0,b))}function N2(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0;k[a>>2]=37544;k[a+4>>2]=37596;k[a+8>>2]=c;c=Rqa((Lta(b)|0)+1|0)|0;k[a+12>>2]=c;j=(Lta(b)|0)+1|0;if(!b)yb(142353,118972,137,142345);if(j)TEa(c|0,b|0,j|0)|0;k[a+16>>2]=d;if(!d)return;j=d>>>0>536870911?-1:d<<3;b=Rqa(j)|0;k[a+20>>2]=b;if(!e)yb(142353,118972,137,142345);TEa(b|0,e|0,d<<3|0)|0;e=Rqa(j)|0;k[a+24>>2]=e;if(!f)yb(142353,118972,137,142345);TEa(e|0,f|0,d<<3|0)|0;f=Rqa(j)|0;k[a+28>>2]=f;if(!g)yb(142353,118972,137,142345);TEa(f|0,g|0,d<<3|0)|0;g=Rqa(j)|0;k[a+32>>2]=g;if(!h)yb(142353,118972,137,142345);TEa(g|0,h|0,d<<3|0)|0;h=Rqa(d>>>0>1073741823?-1:d<<2)|0;k[a+36>>2]=h;if(!i)yb(142353,118972,137,142345);TEa(h|0,i|0,d<<2|0)|0;return}function O2(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0.0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;i=(nO(k[a+44>>2]|0,769)|0)+8|0;j=k[i>>2]|0;a:do if((th(j)|0)>0){i=0;while(1){l=qh(j,i)|0;if(!l)m=0;else m=ura(l,168,1336,-2)|0;l=Hc[k[(k[m>>2]|0)+8>>2]&511](m)|0;if(!(Ita(l,b)|0)){n=m;o=l;break}if(l)Tqa(l);i=i+1|0;if((i|0)>=(th(j)|0))break a}p=+id[k[(k[n>>2]|0)+16>>2]&63](n,a);if(!o){r=c;return +p}Tqa(o);r=c;return +p}while(0);c=e+56|0;o=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,o|0);a=B;B=0;if(a&1){a=Rb()|0;q=Q;s=a;vva(c);Qb(s|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,o|0);a=B;B=0;do if(a&1){n=Rb()|0;t=Q;u=n}else{k[o>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,o|0,d|0);j=B;B=0;if(j&1){j=Rb()|0;m=Q;Yua(d);Yua(n);Ava(o);t=m;u=j;break}Yua(d);B=0;j=Ia(40,e|0,120343,50)|0;m=B;B=0;if(((!(m&1)?(m=Lta(b)|0,B=0,i=Ia(40,j|0,b|0,m|0)|0,m=B,B=0,!(m&1)):0)?(B=0,m=Ia(40,i|0,120394,46)|0,i=B,B=0,!(i&1)):0)?(B=0,Xa(239,m|0,0)|0,m=B,B=0,!(m&1)):0){m=Ab(20)|0;B=0;eb(502,f|0,120441,112);i=B;B=0;do if(!(i&1)){B=0;eb(502,g|0,120554,26);j=B;B=0;if(j&1){j=Rb()|0;l=Q;Yua(f);v=l;w=j;break}B=0;wa(510,h|0,o|0);j=B;B=0;if(j&1){j=Rb()|0;x=Q;y=j;z=1}else{B=0;ua(163,m|0,f|0,g|0,37,h|0);j=B;B=0;if(j&1)A=1;else{B=0;eb(503,m|0,1240,229);B=0;A=0}j=Rb()|0;l=Q;Yua(h);x=l;y=j;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[o>>2]=27560;Yua(n);Ava(o);vva(c);Qb(D|0)}}else{j=Rb()|0;v=Q;w=j}while(0);zb(m|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[o>>2]=27560;Yua(n);Ava(o);vva(c);Qb(D|0)}i=Rb()|0;C=Q;D=i;k[e>>2]=27468;k[c>>2]=27488;k[o>>2]=27560;Yua(n);Ava(o);vva(c);Qb(D|0)}while(0);q=t;s=u;vva(c);Qb(s|0);return +(0.0)}function P2(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0.0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;i=(nO(k[a+44>>2]|0,769)|0)+8|0;j=k[i>>2]|0;a:do if((th(j)|0)>0){i=0;while(1){l=qh(j,i)|0;if(!l)m=0;else m=ura(l,168,1336,-2)|0;i=i+1|0;if((Hc[k[(k[m>>2]|0)+12>>2]&511](m)|0)==(b|0)){n=m;break}if((i|0)>=(th(j)|0))break a}o=+id[k[(k[n>>2]|0)+16>>2]&63](n,a);r=c;return +o}while(0);c=e+56|0;a=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,a|0);n=B;B=0;if(n&1){n=Rb()|0;p=Q;q=n;vva(c);Qb(q|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,a|0);n=B;B=0;do if(n&1){j=Rb()|0;s=Q;t=j}else{k[a>>2]=27560;j=e+36|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,a|0,d|0);m=B;B=0;if(m&1){m=Rb()|0;i=Q;Yua(d);Yua(j);Ava(a);s=i;t=m;break}Yua(d);B=0;m=Ia(40,e|0,120343,50)|0;i=B;B=0;if(((!(i&1)?(B=0,i=Xa(242,m|0,b|0)|0,m=B,B=0,!(m&1)):0)?(B=0,m=Ia(40,i|0,120394,46)|0,i=B,B=0,!(i&1)):0)?(B=0,Xa(239,m|0,0)|0,m=B,B=0,!(m&1)):0){m=Ab(20)|0;B=0;eb(502,f|0,120441,112);i=B;B=0;do if(!(i&1)){B=0;eb(502,g|0,120554,26);l=B;B=0;if(l&1){l=Rb()|0;u=Q;Yua(f);v=u;w=l;break}B=0;wa(510,h|0,a|0);l=B;B=0;if(l&1){l=Rb()|0;x=Q;y=l;z=1}else{B=0;ua(163,m|0,f|0,g|0,64,h|0);l=B;B=0;if(l&1)A=1;else{B=0;eb(503,m|0,1240,229);B=0;A=0}l=Rb()|0;u=Q;Yua(h);x=u;y=l;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(j);Ava(a);vva(c);Qb(D|0)}}else{l=Rb()|0;v=Q;w=l}while(0);zb(m|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(j);Ava(a);vva(c);Qb(D|0)}i=Rb()|0;C=Q;D=i;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(j);Ava(a);vva(c);Qb(D|0)}while(0);p=s;q=t;vva(c);Qb(q|0);return +(0.0)}function Q2(a){a=a|0;k[a>>2]=32164;k[a>>2]=37624;k[a+12>>2]=0;return}function R2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;k[a>>2]=32164;B=0;e=B;B=0;if(e&1){e=Rb()|0;f=e;g=Q;Qb(f|0)}k[a>>2]=37624;k[a+4>>2]=b;k[a+8>>2]=d;B=0;b=Xa(251,a|0,d|0)|0;d=B;B=0;if(!(d&1)){if((b|0)<=0){k[a+12>>2]=0;return}B=0;d=ya(422,(b>>>0>536870911?-1:b<<3)|0)|0;e=B;B=0;if(!(e&1)){k[a+12>>2]=d;a=0;do{p[d+(a<<3)>>3]=+p[c+(a<<3)>>3];a=a+1|0}while((a|0)!=(b|0));return}}b=Rb()|0;f=b;g=Q;Qb(f|0)}function S2(a){a=a|0;var b=0;k[a>>2]=37624;b=a+12|0;a=k[b>>2]|0;if(!a){k[b>>2]=0;return}Tqa(a);k[b>>2]=0;return}function T2(a){a=a|0;var b=0,c=0;k[a>>2]=37624;b=a+12|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;Sqa(a);return}function U2(a){a=a|0;Ec[k[(k[a>>2]|0)+12>>2]&1023](a);return}function V2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){q=Rb()|0;s=Q;t=q}else{k[l>>2]=27560;q=d+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(c);Yua(q);Ava(l);s=v;t=u;break}Yua(c);k[d+(k[(k[d>>2]|0)+-12>>2]|0)+12>>2]=15;B=0;u=Ia(40,d|0,120594,14)|0;v=B;B=0;do if((((!(v&1)?(k[u+(k[(k[u>>2]|0)+-12>>2]|0)+12>>2]=25,w=u+(k[(k[u>>2]|0)+-12>>2]|0)+4|0,k[w>>2]=k[w>>2]&-177|32,B=0,w=ya(427,k[a+4>>2]|0)|0,x=B,B=0,!(x&1)):0)?(x=Lta(w)|0,B=0,y=Ia(40,u|0,w|0,x|0)|0,x=B,B=0,!(x&1)):0)?(B=0,Ia(40,y|0,120962,2)|0,y=B,B=0,!(y&1)):0)?(B=0,wa(510,e|0,l|0),y=B,B=0,!(y&1)):0){B=0;ya(424,e|0)|0;y=B;B=0;if(y&1){y=Rb()|0;x=Q;Yua(e);z=x;A=y;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(q);Ava(l);vva(j);y=a+8|0;a:do if((XB(a,k[y>>2]|0)|0)>0){x=f+56|0;w=f+4|0;C=f+56|0;D=f+128|0;E=f+132|0;F=f+36|0;G=f+52|0;H=a+12|0;I=0;while(1){k[f>>2]=27524;k[x>>2]=27544;B=0;wa(508,C|0,w|0);J=B;B=0;if(J&1){K=33;break}k[D>>2]=0;k[E>>2]=-1;k[f>>2]=27468;k[x>>2]=27488;B=0;va(448,w|0);J=B;B=0;if(J&1){K=34;break}k[w>>2]=27560;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;k[G>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,w|0,c|0);J=B;B=0;if(J&1){K=32;break}Yua(c);B=0;J=Ia(40,f|0,149175,1)|0;L=B;B=0;if(L&1){K=42;break}B=0;Sa(1,J|0,+(+p[(k[H>>2]|0)+(I<<3)>>3]))|0;J=B;B=0;if(J&1){K=42;break}B=0;wa(510,g|0,w|0);J=B;B=0;if(J&1){K=42;break}B=0;ya(424,g|0)|0;J=B;B=0;if(J&1){K=43;break}Yua(g);k[f>>2]=27468;k[x>>2]=27488;k[w>>2]=27560;Yua(F);Ava(w);vva(x);I=I+1|0;if((I|0)>=(XB(a,k[y>>2]|0)|0))break a}if((K|0)==32){I=Rb()|0;H=Q;Yua(c);Yua(F);Ava(w);M=H;N=I;K=35}else if((K|0)==33){I=Rb()|0;O=Q;P=I;vva(x);Qb(P|0)}else if((K|0)==34){I=Rb()|0;M=Q;N=I;K=35}else if((K|0)==42){I=Rb()|0;R=Q;S=I;K=44}else if((K|0)==43){I=Rb()|0;H=Q;Yua(g);R=H;S=I;K=44}if((K|0)==35){O=M;P=N;vva(x);Qb(P|0)}else if((K|0)==44){k[f>>2]=27468;k[x>>2]=27488;k[w>>2]=27560;Yua(F);Ava(w);vva(x);T=R;U=S;Qb(U|0)}}while(0);y=h+56|0;I=h+4|0;k[h>>2]=27524;k[y>>2]=27544;B=0;wa(508,h+56|0,I|0);H=B;B=0;if(H&1){H=Rb()|0;V=Q;W=H;vva(y);Qb(W|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[y>>2]=27488;B=0;va(448,I|0);H=B;B=0;do if(H&1){G=Rb()|0;X=Q;Y=G}else{k[I>>2]=27560;G=h+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,I|0,c|0);E=B;B=0;if(E&1){E=Rb()|0;D=Q;Yua(c);Yua(G);Ava(I);X=D;Y=E;break}Yua(c);B=0;Ia(40,h|0,149198,2)|0;E=B;B=0;do if(!(E&1)?(B=0,wa(510,i|0,I|0),D=B,B=0,!(D&1)):0){B=0;ya(424,i|0)|0;D=B;B=0;if(D&1){D=Rb()|0;C=Q;Yua(i);Z=C;_=D;break}else{Yua(i);k[h>>2]=27468;k[y>>2]=27488;k[I>>2]=27560;Yua(G);Ava(I);vva(y);r=b;return}}else K=48;while(0);if((K|0)==48){E=Rb()|0;Z=Q;_=E}k[h>>2]=27468;k[y>>2]=27488;k[I>>2]=27560;Yua(G);Ava(I);vva(y);T=Z;U=_;Qb(U|0)}while(0);V=X;W=Y;vva(y);Qb(W|0)}else K=26;while(0);if((K|0)==26){u=Rb()|0;z=Q;A=u}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(q);Ava(l);vva(j);T=z;U=A;Qb(U|0)}while(0);n=s;o=t;vva(j);Qb(o|0)}function W2(a){a=a|0;return -1}function X2(a){a=a|0;return 626}function Y2(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Qqa(16)|0;c=k[a+4>>2]|0;d=k[a+12>>2]|0;e=k[a+8>>2]|0;k[b>>2]=32164;B=0;a=B;B=0;if(a&1){a=Rb()|0;f=a;g=Q;Sqa(b);Qb(f|0)}k[b>>2]=37624;k[b+4>>2]=c;k[b+8>>2]=e;B=0;c=Xa(251,b|0,e|0)|0;e=B;B=0;if(!(e&1)){if((c|0)<=0){k[b+12>>2]=0;return b|0}B=0;e=ya(422,(c>>>0>536870911?-1:c<<3)|0)|0;a=B;B=0;if(!(a&1)){k[b+12>>2]=e;a=0;do{p[e+(a<<3)>>3]=+p[d+(a<<3)>>3];a=a+1|0}while((a|0)!=(c|0));return b|0}}c=Rb()|0;f=c;g=Q;Sqa(b);Qb(f|0);return 0}function Z2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;e=r;r=r+368|0;f=e+344|0;g=e+208|0;h=e+196|0;j=e+184|0;m=e+36|0;n=e+48|0;o=e+24|0;p=e+12|0;q=e;s=(d|0)==0;a:do if(s){t=k[b>>2]|0;i[t>>0]=114;i[t+1>>0]=2;i[t+2>>0]=0;i[t+3>>0]=0;t=(k[b>>2]|0)+4|0;k[b>>2]=t;u=a+4|0;v=l[u>>0]|l[u+1>>0]<<8|l[u+2>>0]<<16|l[u+3>>0]<<24;i[t>>0]=v;i[t+1>>0]=v>>8;i[t+2>>0]=v>>16;i[t+3>>0]=v>>24;v=(k[b>>2]|0)+4|0;k[b>>2]=v;t=a+8|0;u=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[v>>0]=u;i[v+1>>0]=u>>8;i[v+2>>0]=u>>16;i[v+3>>0]=u>>24;k[b>>2]=(k[b>>2]|0)+4;w=t}else switch(d|0){case 2:{k[c>>2]=(k[c>>2]|0)+12;w=a+8|0;break a;break}case 1:{t=(k[b>>2]|0)+4|0;k[b>>2]=t;u=a+4|0;v=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[u>>0]=v;i[u+1>>0]=v>>8;i[u+2>>0]=v>>16;i[u+3>>0]=v>>24;v=(k[b>>2]|0)+4|0;k[b>>2]=v;u=a+8|0;t=l[v>>0]|l[v+1>>0]<<8|l[v+2>>0]<<16|l[v+3>>0]<<24;i[u>>0]=t;i[u+1>>0]=t>>8;i[u+2>>0]=t>>16;i[u+3>>0]=t>>24;k[b>>2]=(k[b>>2]|0)+4;w=u;break a;break}default:{u=g+56|0;t=g+4|0;k[g>>2]=27524;k[u>>2]=27544;B=0;wa(508,g+56|0,t|0);v=B;B=0;if(v&1){v=Rb()|0;x=Q;y=v;vva(u);Qb(y|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[u>>2]=27488;B=0;va(448,t|0);v=B;B=0;do if(v&1){z=Rb()|0;A=Q;C=z}else{k[t>>2]=27560;z=g+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,t|0,f|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(f);Yua(z);Ava(t);A=E;C=D;break}Yua(f);B=0;D=Ia(40,g|0,143951,43)|0;E=B;B=0;b:do if(!(E&1)?(B=0,Xa(239,D|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,h|0,120609,76);G=B;B=0;do if(!(G&1)){B=0;eb(502,j|0,149525,8);H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(h);J=I;K=H;break}B=0;wa(510,m|0,t|0);H=B;B=0;if(H&1){H=Rb()|0;L=Q;M=H;N=1}else{B=0;ua(163,F|0,h|0,j|0,71,m|0);H=B;B=0;if(H&1)O=1;else{B=0;eb(503,F|0,1240,229);B=0;O=0}H=Rb()|0;I=Q;Yua(m);L=I;M=H;N=O}Yua(j);Yua(h);if(N){J=L;K=M}else{P=L;R=M;break b}}else{H=Rb()|0;J=Q;K=H}while(0);zb(F|0);P=J;R=K}else S=18;while(0);if((S|0)==18){D=Rb()|0;P=Q;R=D}k[g>>2]=27468;k[u>>2]=27488;k[t>>2]=27560;Yua(z);Ava(t);vva(u);T=R;U=P;Qb(T|0)}while(0);x=A;y=C;vva(u);Qb(y|0)}}while(0);y=XB(a,k[w>>2]|0)|0;w=a+12|0;if((y|0)<=0){k[w>>2]=0;r=e;return}a=(k[w>>2]|0)==0;if(s){i[k[b>>2]>>0]=a&1;s=(k[b>>2]|0)+1|0;k[b>>2]=s;if(a){r=e;return}C=y<<3;TEa(s|0,k[w>>2]|0,C|0)|0;k[b>>2]=(k[b>>2]|0)+C;r=e;return}switch(d|0){case 2:{d=(k[c>>2]|0)+1|0;k[c>>2]=d;if(a){r=e;return}k[c>>2]=d+(y<<3);r=e;return}case 1:{d=k[b>>2]|0;c=i[d>>0]|0;k[b>>2]=d+1;if(c&1){r=e;return}c=Rqa(y>>>0>536870911?-1:y<<3)|0;k[w>>2]=c;w=k[b>>2]|0;d=y<<3;TEa(c|0,w|0,d|0)|0;k[b>>2]=w+d;r=e;return}default:{e=n+56|0;d=n+4|0;k[n>>2]=27524;k[e>>2]=27544;B=0;wa(508,n+56|0,d|0);w=B;B=0;if(w&1){w=Rb()|0;V=Q;W=w;vva(e);Qb(W|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[e>>2]=27488;B=0;va(448,d|0);w=B;B=0;do if(w&1){b=Rb()|0;X=Q;Y=b}else{k[d>>2]=27560;b=n+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,d|0,f|0);c=B;B=0;if(c&1){c=Rb()|0;y=Q;Yua(f);Yua(b);Ava(d);X=y;Y=c;break}Yua(f);B=0;c=Ia(40,n|0,143951,43)|0;y=B;B=0;c:do if(!(y&1)?(B=0,Xa(239,c|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,o|0,120609,76);C=B;B=0;do if(!(C&1)){B=0;eb(502,p|0,149525,8);s=B;B=0;if(s&1){s=Rb()|0;A=Q;Yua(o);Z=s;_=A;break}B=0;wa(510,q|0,d|0);A=B;B=0;if(A&1){A=Rb()|0;$=1;aa=Q;ba=A}else{B=0;ua(163,a|0,o|0,p|0,78,q|0);A=B;B=0;if(A&1)ca=1;else{B=0;eb(503,a|0,1240,229);B=0;ca=0}A=Rb()|0;s=Q;Yua(q);$=ca;aa=s;ba=A}Yua(p);Yua(o);if($){Z=ba;_=aa}else{da=ba;ea=aa;break c}}else{A=Rb()|0;Z=A;_=Q}while(0);zb(a|0);da=Z;ea=_}else S=49;while(0);if((S|0)==49){c=Rb()|0;da=c;ea=Q}k[n>>2]=27468;k[e>>2]=27488;k[d>>2]=27560;Yua(b);Ava(d);vva(e);T=da;U=ea;Qb(T|0)}while(0);V=X;W=Y;vva(e);Qb(W|0)}}}function _2(a){a=a|0;return k[a+4>>2]|0}function $2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;e=r;r=r+32|0;f=e;if((k[a+8>>2]|0)==736){g=Qqa(16)|0;B=0;ib(284,g|0,k[a+4>>2]|0,k[a+12>>2]|0,736);h=B;B=0;if(!(h&1)){i=g;r=e;return i|0}h=Rb()|0;j=Q;Sqa(g);l=j;m=h;Qb(m|0)}h=k[a+12>>2]|0;p[f>>3]=+p[h+(b<<3)>>3];p[f+8>>3]=+p[h+(c<<3)>>3];p[f+16>>3]=+p[h+(d<<3)>>3];d=Qqa(16)|0;B=0;ib(284,d|0,k[a+4>>2]|0,f|0,738);f=B;B=0;if(f&1){f=Rb()|0;a=Q;Sqa(d);l=a;m=f;Qb(m|0)}else{i=d;r=e;return i|0}return 0}function a3(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,120609,76);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121282,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,123,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0);return 0}function b3(a){a=a|0;return ((k[a+8>>2]|0)==736?736:738)|0}function c3(a){a=a|0;return XB(a,k[a+8>>2]|0)|0}function d3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;c=XB(a,k[a+8>>2]|0)|0;if((c|0)<=0)return;e=k[a+12>>2]|0;a=ma(c,d)|0;d=0;do{p[b+(d+a<<3)>>3]=+p[e+(d<<3)>>3];d=d+1|0}while((d|0)!=(c|0));return}function e3(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;if((k[a+8>>2]|0)==736){r=b;return}b=d+56|0;a=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,a|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,a|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[a>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(a);m=p;n=o;break}Yua(c);B=0;o=Ia(40,d|0,149721,19)|0;p=B;B=0;if(!(p&1)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,e|0,120609,76);p=B;B=0;do if(!(p&1)){B=0;eb(502,f|0,121355,13);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);t=s;u=q;break}B=0;wa(510,g|0,a|0);q=B;B=0;if(q&1){q=Rb()|0;v=Q;w=q;x=1}else{B=0;ua(163,o|0,e|0,f|0,160,g|0);q=B;B=0;if(q&1)y=1;else{B=0;eb(503,o|0,1240,229);B=0;y=0}q=Rb()|0;s=Q;Yua(g);v=s;w=q;x=y}Yua(f);Yua(e);if(x){t=v;u=w}else{z=v;A=w;k[d>>2]=27468;k[b>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(b);Qb(A|0)}}else{q=Rb()|0;t=Q;u=q}while(0);zb(o|0);z=t;A=u;k[d>>2]=27468;k[b>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(b);Qb(A|0)}p=Rb()|0;z=Q;A=p;k[d>>2]=27468;k[b>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(b);Qb(A|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function f3(a,b,c){a=a|0;b=b|0;c=c|0;ZB(a,b,k[a+12>>2]|0,c,k[a+8>>2]|0);return}function g3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;WB(a,b,k[a+12>>2]|0,c,d,k[a+8>>2]|0);return}function h3(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function i3(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0.0,g=0,h=0.0,i=0.0;c=XB(a,k[a+8>>2]|0)|0;d=+(c|0);if((c|0)<=0){e=0.0;f=e/d;p[b>>3]=f;return}g=k[a+12>>2]|0;a=0;h=0.0;while(1){i=h+ +p[g+(a<<3)>>3];a=a+1|0;if((a|0)==(c|0)){e=i;break}else h=i}f=e/d;p[b>>3]=f;return}function j3(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0.0,g=0,h=0.0,i=0.0;c=XB(a,k[a+8>>2]|0)|0;d=k[a+12>>2]|0;e=+p[d>>3];f=e*e;if((c|0)>1){g=1;h=f}else{i=f;p[b>>3]=i;return}while(1){f=+p[d+(g<<3)>>3];e=f*f;f=e<h?e:h;g=g+1|0;if((g|0)==(c|0)){i=f;break}else h=f}p[b>>3]=i;return}function k3(a,b){a=a|0;b=+b;var c=0,d=0,e=0;c=XB(a,k[a+8>>2]|0)|0;if((c|0)<=0)return;d=k[a+12>>2]|0;a=0;do{e=d+(a<<3)|0;if(+p[e>>3]<b)p[e>>3]=b;a=a+1|0}while((a|0)!=(c|0));return}function l3(a){a=a|0;var b=0,c=0.0,d=0,e=0.0,f=0.0,g=0.0;b=XB(a,k[a+8>>2]|0)|0;if((b|0)<=0){c=0.0;return +c}d=k[a+12>>2]|0;a=0;e=0.0;while(1){f=+$(+(+p[d+(a<<3)>>3]));g=f>e?f:e;a=a+1|0;if((a|0)==(b|0)){c=g;break}else e=g}return +c}function m3(a){a=a|0;var b=0,c=0,d=0.0,e=0,f=0.0,g=0.0,h=0.0;b=XB(a,k[a+8>>2]|0)|0;c=k[a+12>>2]|0;d=+p[c>>3];if((b|0)>1){e=1;f=d}else{g=d;return +g}while(1){d=+p[c+(e<<3)>>3];h=d>f?d:f;e=e+1|0;if((e|0)==(b|0)){g=h;break}else f=h}return +g}function n3(a){a=a|0;var b=0,c=0,d=0.0,e=0,f=0.0,g=0.0,h=0.0;b=XB(a,k[a+8>>2]|0)|0;c=k[a+12>>2]|0;d=+$(+(+p[c>>3]));if((b|0)>1){e=1;f=d}else{g=d;return +g}while(1){d=+$(+(+p[c+(e<<3)>>3]));h=d>f?d:f;e=e+1|0;if((e|0)==(b|0)){g=h;break}else f=h}return +g}function o3(a){a=a|0;var b=0,c=0,d=0.0,e=0,f=0.0,g=0.0,h=0.0;b=XB(a,k[a+8>>2]|0)|0;c=k[a+12>>2]|0;d=+p[c>>3];if((b|0)>1){e=1;f=d}else{g=d;return +g}while(1){d=+p[c+(e<<3)>>3];h=d<f?d:f;e=e+1|0;if((e|0)==(b|0)){g=h;break}else f=h}return +g}function p3(a){a=a|0;var b=0,c=0,d=0.0,e=0,f=0.0,g=0.0,h=0.0;b=XB(a,k[a+8>>2]|0)|0;c=k[a+12>>2]|0;d=+$(+(+p[c>>3]));if((b|0)>1){e=1;f=d}else{g=d;return +g}while(1){d=+$(+(+p[c+(e<<3)>>3]));h=d<f?d:f;e=e+1|0;if((e|0)==(b|0)){g=h;break}else f=h}return +g}function q3(a,b){a=a|0;b=+b;var c=0,d=0,e=0;c=XB(a,k[a+8>>2]|0)|0;if((c|0)<=0)return;d=k[a+12>>2]|0;a=0;do{e=d+(a<<3)|0;p[e>>3]=+p[e>>3]*b;a=a+1|0}while((a|0)!=(c|0));return}function r3(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;d=r;r=r+368|0;e=d+344|0;f=d+208|0;g=d+196|0;h=d+184|0;i=d+36|0;j=d+48|0;l=d+24|0;m=d+12|0;n=d;o=a+8|0;q=XB(a,k[o>>2]|0)|0;if((Hc[k[(k[b>>2]|0)+20>>2]&511](b)|0)==559)s=k[b+12>>2]|0;else s=b;if((Hc[k[(k[s>>2]|0)+20>>2]&511](s)|0)!=626){b=f+56|0;t=f+4|0;k[f>>2]=27524;k[b>>2]=27544;B=0;wa(508,f+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(b);Qb(w|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[b>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=f+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,t|0,e|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(e);Yua(x);Ava(t);y=C;z=A;break}Yua(e);B=0;A=Ia(40,f|0,121046,50)|0;C=B;B=0;a:do if((((!(C&1)?(B=0,D=ya(k[(k[s>>2]|0)+20>>2]|0,s|0)|0,E=B,B=0,!(E&1)):0)?(B=0,E=ya(427,D|0)|0,D=B,B=0,!(D&1)):0)?(D=Lta(E)|0,B=0,F=Ia(40,A|0,E|0,D|0)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,F|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,g|0,120609,76);D=B;B=0;do if(!(D&1)){B=0;eb(502,h|0,121097,4);E=B;B=0;if(E&1){E=Rb()|0;G=Q;Yua(g);H=E;I=G;break}B=0;wa(510,i|0,t|0);G=B;B=0;if(G&1){G=Rb()|0;J=Q;K=G;L=1}else{B=0;ua(163,F|0,g|0,h|0,288,i|0);G=B;B=0;if(G&1)M=1;else{B=0;eb(503,F|0,1240,229);B=0;M=0}G=Rb()|0;E=Q;Yua(i);J=E;K=G;L=M}Yua(h);Yua(g);if(L){H=K;I=J}else{N=K;O=J;break a}}else{G=Rb()|0;H=G;I=Q}while(0);zb(F|0);N=H;O=I}else P=22;while(0);if((P|0)==22){A=Rb()|0;N=A;O=Q}k[f>>2]=27468;k[b>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(b);R=O;S=N;Qb(S|0)}while(0);v=y;w=z;vva(b);Qb(w|0)}w=s+8|0;if((k[w>>2]|0)==(k[o>>2]|0)){if((q|0)<=0){r=d;return}o=k[a+12>>2]|0;a=k[s+12>>2]|0;s=0;do{b=o+(s<<3)|0;p[b>>3]=+p[b>>3]+ +p[a+(s<<3)>>3]*c;s=s+1|0}while((s|0)!=(q|0));r=d;return}d=j+56|0;q=j+4|0;k[j>>2]=27524;k[d>>2]=27544;B=0;wa(508,j+56|0,q|0);s=B;B=0;if(s&1){s=Rb()|0;T=Q;U=s;vva(d);Qb(U|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[d>>2]=27488;B=0;va(448,q|0);s=B;B=0;do if(s&1){a=Rb()|0;V=Q;W=a}else{k[q>>2]=27560;a=j+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[j+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,q|0,e|0);o=B;B=0;if(o&1){o=Rb()|0;b=Q;Yua(e);Yua(a);Ava(q);V=b;W=o;break}Yua(e);B=0;o=Ia(40,j|0,121046,50)|0;b=B;B=0;b:do if(((!(b&1)?(B=0,z=ya(427,k[w>>2]|0)|0,y=B,B=0,!(y&1)):0)?(y=Lta(z)|0,B=0,v=Ia(40,o|0,z|0,y|0)|0,y=B,B=0,!(y&1)):0)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,l|0,120609,76);y=B;B=0;do if(!(y&1)){B=0;eb(502,m|0,121097,4);z=B;B=0;if(z&1){z=Rb()|0;N=Q;Yua(l);X=z;Y=N;break}B=0;wa(510,n|0,q|0);N=B;B=0;if(N&1){N=Rb()|0;Z=1;_=Q;$=N}else{B=0;ua(163,v|0,l|0,m|0,290,n|0);N=B;B=0;if(N&1)aa=1;else{B=0;eb(503,v|0,1240,229);B=0;aa=0}N=Rb()|0;z=Q;Yua(n);Z=aa;_=z;$=N}Yua(m);Yua(l);if(Z){X=$;Y=_}else{ba=_;ca=$;break b}}else{N=Rb()|0;X=N;Y=Q}while(0);zb(v|0);ba=Y;ca=X}else P=50;while(0);if((P|0)==50){o=Rb()|0;ba=Q;ca=o}k[j>>2]=27468;k[d>>2]=27488;k[q>>2]=27560;Yua(a);Ava(q);vva(d);R=ba;S=ca;Qb(S|0)}while(0);T=V;U=W;vva(d);Qb(U|0)}function s3(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0.0,f=0,g=0,h=0,i=0;d=XB(a,k[a+8>>2]|0)|0;e=+$(+b);p[t>>3]=e;f=k[t+4>>2]|0;g=(d|0)>0;if((f>>>0<2146435072|(f|0)==2146435072&(k[t>>2]|0)>>>0<1)&g){f=k[a+12>>2]|0;h=0;do{i=f+(h<<3)|0;if(+p[i>>3]<b)p[i>>3]=b;h=h+1|0}while((h|0)!=(d|0))}b=+$(+c);p[t>>3]=b;h=k[t+4>>2]|0;if(!((h>>>0<2146435072|(h|0)==2146435072&(k[t>>2]|0)>>>0<1)&g))return;g=k[a+12>>2]|0;a=0;do{h=g+(a<<3)|0;if(+p[h>>3]>c)p[h>>3]=c;a=a+1|0}while((a|0)!=(d|0));return}function t3(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;i=a+8|0;if((k[i>>2]|0)==738){j=k[a+12>>2]|0;if((b|0)==-1){p[j+24>>3]=+p[j>>3];p[j+32>>3]=+p[j+8>>3];p[j+40>>3]=+p[j+16>>3];r=c;return}else{p[j>>3]=+p[j+24>>3];p[j+8>>3]=+p[j+32>>3];p[j+16>>3]=+p[j+40>>3];r=c;return}}c=e+56|0;j=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,j|0);b=B;B=0;if(b&1){b=Rb()|0;l=Q;m=b;vva(c);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,j|0);b=B;B=0;do if(b&1){a=Rb()|0;n=Q;o=a}else{k[j>>2]=27560;a=e+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,j|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(a);Ava(j);n=s;o=q;break}Yua(d);B=0;q=Ia(40,e|0,120686,27)|0;s=B;B=0;if(((!(s&1)?(B=0,s=ya(427,k[i>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,f|0,120609,76);t=B;B=0;do if(!(t&1)){B=0;eb(502,g|0,121296,7);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,j|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,u|0,f|0,g|0,319,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,u|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[j>>2]=27560;Yua(a);Ava(j);vva(c);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(u|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[j>>2]=27560;Yua(a);Ava(j);vva(c);Qb(D|0)}t=Rb()|0;C=Q;D=t;k[e>>2]=27468;k[c>>2]=27488;k[j>>2]=27560;Yua(a);Ava(j);vva(c);Qb(D|0)}while(0);l=n;m=o;vva(c);Qb(m|0)}function u3(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0.0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0;c=r;r=r+368|0;d=c+352|0;e=c;f=c+216|0;g=c+204|0;h=c+192|0;i=c+44|0;j=c+56|0;l=c+32|0;m=c+20|0;n=c+8|0;if((Hc[k[(k[b>>2]|0)+32>>2]&511](b)|0)!=353){o=f+56|0;q=f+4|0;k[f>>2]=27524;k[o>>2]=27544;B=0;wa(508,f+56|0,q|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;u=s;vva(o);Qb(u|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[o>>2]=27488;B=0;va(448,q|0);s=B;B=0;do if(s&1){v=Rb()|0;w=Q;x=v}else{k[q>>2]=27560;v=f+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,q|0,d|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(d);Yua(v);Ava(q);w=z;x=y;break}Yua(d);B=0;y=Ia(40,f|0,120714,48)|0;z=B;B=0;a:do if(((((!(z&1)?(B=0,A=ya(k[(k[b>>2]|0)+32>>2]|0,b|0)|0,C=B,B=0,!(C&1)):0)?(B=0,C=ya(427,A|0)|0,A=B,B=0,!(A&1)):0)?(A=Lta(C)|0,B=0,D=Ia(40,y|0,C|0,A|0)|0,A=B,B=0,!(A&1)):0)?(B=0,A=Ia(40,D|0,141170,1)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,A|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,g|0,120609,76);D=B;B=0;do if(!(D&1)){B=0;eb(502,h|0,121304,19);C=B;B=0;if(C&1){C=Rb()|0;E=Q;Yua(g);F=C;G=E;break}B=0;wa(510,i|0,q|0);E=B;B=0;if(E&1){E=Rb()|0;H=E;I=Q;J=1}else{B=0;ua(163,A|0,g|0,h|0,329,i|0);E=B;B=0;if(E&1)K=1;else{B=0;eb(503,A|0,1240,229);B=0;K=0}E=Rb()|0;C=Q;Yua(i);H=E;I=C;J=K}Yua(h);Yua(g);if(J){F=H;G=I}else{L=H;M=I;break a}}else{C=Rb()|0;F=C;G=Q}while(0);zb(A|0);L=F;M=G}else N=21;while(0);if((N|0)==21){y=Rb()|0;L=y;M=Q}k[f>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(o);O=L;P=M;Qb(O|0)}while(0);t=w;u=x;vva(o);Qb(u|0)}u=a+8|0;switch(k[u>>2]|0){case 742:case 740:case 738:{k[u>>2]=738;o=Qqa(72)|0;B=0;va(493,o|0);x=B;B=0;if(!(x&1)){x=a+12|0;Fc[k[(k[o>>2]|0)+28>>2]&1023](o,0);nd[k[(k[b>>2]|0)+48>>2]&1023](b,e,o);a=k[x>>2]|0;w=a+24|0;R=+p[e>>3]*((+p[a>>3]+ +p[w>>3])*.5);p[a>>3]=R;p[w>>3]=R;Fc[k[(k[o>>2]|0)+28>>2]&1023](o,1);nd[k[(k[b>>2]|0)+48>>2]&1023](b,e,o);w=k[x>>2]|0;a=w+8|0;t=w+32|0;R=+p[e>>3]*((+p[a>>3]+ +p[t>>3])*.5);p[a>>3]=R;p[t>>3]=R;Fc[k[(k[o>>2]|0)+28>>2]&1023](o,2);nd[k[(k[b>>2]|0)+48>>2]&1023](b,e,o);b=k[x>>2]|0;x=b+16|0;t=b+40|0;R=+p[e>>3]*((+p[x>>3]+ +p[t>>3])*.5);p[x>>3]=R;p[t>>3]=R;Ec[k[(k[o>>2]|0)+4>>2]&1023](o);r=c;return}c=Rb()|0;t=Q;Sqa(o);O=c;P=t;Qb(O|0);break}default:{}}t=j+56|0;c=j+4|0;k[j>>2]=27524;k[t>>2]=27544;B=0;wa(508,j+56|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;S=Q;T=o;vva(t);Qb(T|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[t>>2]=27488;B=0;va(448,c|0);o=B;B=0;do if(o&1){x=Rb()|0;U=Q;V=x}else{k[c>>2]=27560;x=j+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[j+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,c|0,d|0);e=B;B=0;if(e&1){e=Rb()|0;b=Q;Yua(d);Yua(x);Ava(c);U=b;V=e;break}Yua(d);B=0;e=Ia(40,j|0,120686,27)|0;b=B;B=0;b:do if(((!(b&1)?(B=0,a=ya(427,k[u>>2]|0)|0,w=B,B=0,!(w&1)):0)?(w=Lta(a)|0,B=0,M=Ia(40,e|0,a|0,w|0)|0,w=B,B=0,!(w&1)):0)?(B=0,Xa(239,M|0,0)|0,M=B,B=0,!(M&1)):0){M=Ab(20)|0;B=0;eb(502,l|0,120609,76);w=B;B=0;do if(!(w&1)){B=0;eb(502,m|0,121304,19);a=B;B=0;if(a&1){a=Rb()|0;L=Q;Yua(l);W=L;X=a;break}B=0;wa(510,n|0,c|0);a=B;B=0;if(a&1){a=Rb()|0;Y=1;Z=a;_=Q}else{B=0;ua(163,M|0,l|0,m|0,349,n|0);a=B;B=0;if(a&1)$=1;else{B=0;eb(503,M|0,1240,229);B=0;$=0}a=Rb()|0;L=Q;Yua(n);Y=$;Z=a;_=L}Yua(m);Yua(l);if(Y){W=_;X=Z}else{aa=Z;ba=_;break b}}else{L=Rb()|0;W=Q;X=L}while(0);zb(M|0);aa=X;ba=W}else N=50;while(0);if((N|0)==50){e=Rb()|0;aa=e;ba=Q}k[j>>2]=27468;k[t>>2]=27488;k[c>>2]=27560;Yua(x);Ava(c);vva(t);O=aa;P=ba;Qb(O|0)}while(0);S=U;T=V;vva(t);Qb(T|0)}function v3(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0;c=r;r=r+368|0;d=c+344|0;e=c+208|0;f=c+196|0;g=c+184|0;h=c+36|0;i=c+48|0;j=c+24|0;l=c+12|0;m=c;n=a+8|0;o=XB(a,k[n>>2]|0)|0;if((Hc[k[(k[b>>2]|0)+20>>2]&511](b)|0)!=626){q=e+56|0;s=e+4|0;k[e>>2]=27524;k[q>>2]=27544;B=0;wa(508,e+56|0,s|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;v=t;vva(q);Qb(v|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[q>>2]=27488;B=0;va(448,s|0);t=B;B=0;do if(t&1){w=Rb()|0;x=Q;y=w}else{k[s>>2]=27560;w=e+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,s|0,d|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(d);Yua(w);Ava(s);x=A;y=z;break}Yua(d);B=0;z=Ia(40,e|0,121102,50)|0;A=B;B=0;a:do if((((!(A&1)?(B=0,C=ya(k[(k[b>>2]|0)+20>>2]|0,b|0)|0,D=B,B=0,!(D&1)):0)?(B=0,D=ya(427,C|0)|0,C=B,B=0,!(C&1)):0)?(C=Lta(D)|0,B=0,E=Ia(40,z|0,D|0,C|0)|0,C=B,B=0,!(C&1)):0)?(B=0,Xa(239,E|0,0)|0,E=B,B=0,!(E&1)):0){E=Ab(20)|0;B=0;eb(502,f|0,120609,76);C=B;B=0;do if(!(C&1)){B=0;eb(502,g|0,121179,15);D=B;B=0;if(D&1){D=Rb()|0;F=Q;Yua(f);G=D;H=F;break}B=0;wa(510,h|0,s|0);F=B;B=0;if(F&1){F=Rb()|0;I=Q;J=F;K=1}else{B=0;ua(163,E|0,f|0,g|0,363,h|0);F=B;B=0;if(F&1)L=1;else{B=0;eb(503,E|0,1240,229);B=0;L=0}F=Rb()|0;D=Q;Yua(h);I=D;J=F;K=L}Yua(g);Yua(f);if(K){G=J;H=I}else{M=J;N=I;break a}}else{F=Rb()|0;G=F;H=Q}while(0);zb(E|0);M=G;N=H}else O=20;while(0);if((O|0)==20){z=Rb()|0;M=z;N=Q}k[e>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);P=N;R=M;Qb(R|0)}while(0);u=x;v=y;vva(q);Qb(v|0)}v=b+8|0;q=k[v>>2]|0;if((q|0)==(k[n>>2]|0)){n=Rqa(o>>>0>536870911?-1:o<<3)|0;if((o|0)>0){y=k[a+12>>2]|0;x=k[b+12>>2]|0;b=0;do{p[n+(b<<3)>>3]=+p[y+(b<<3)>>3]/+p[x+(b<<3)>>3];b=b+1|0}while((b|0)!=(o|0))}o=Qqa(16)|0;b=k[a+4>>2]|0;k[o>>2]=32164;B=0;a=B;B=0;if(a&1){a=Rb()|0;S=a;T=Q}else{k[o>>2]=37624;k[o+4>>2]=b;k[o+8>>2]=q;B=0;b=Xa(251,o|0,q|0)|0;q=B;B=0;if(!(q&1)){if((b|0)<=0){k[o+12>>2]=0;Tqa(n);r=c;return o|0}B=0;q=ya(422,(b>>>0>536870911?-1:b<<3)|0)|0;a=B;B=0;if(!(a&1)){k[o+12>>2]=q;TEa(q|0,n|0,b<<3|0)|0;Tqa(n);r=c;return o|0}}c=Rb()|0;S=c;T=Q}Sqa(o);P=T;R=S;Qb(R|0)}S=i+56|0;T=i+4|0;k[i>>2]=27524;k[S>>2]=27544;B=0;wa(508,i+56|0,T|0);o=B;B=0;if(o&1){o=Rb()|0;U=Q;V=o;vva(S);Qb(V|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[S>>2]=27488;B=0;va(448,T|0);o=B;B=0;do if(o&1){c=Rb()|0;W=Q;X=c}else{k[T>>2]=27560;c=i+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,T|0,d|0);n=B;B=0;if(n&1){n=Rb()|0;b=Q;Yua(d);Yua(c);Ava(T);W=b;X=n;break}Yua(d);B=0;n=Ia(40,i|0,121102,50)|0;b=B;B=0;b:do if(((!(b&1)?(B=0,q=ya(427,k[v>>2]|0)|0,a=B,B=0,!(a&1)):0)?(a=Lta(q)|0,B=0,x=Ia(40,n|0,q|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(239,x|0,0)|0,x=B,B=0,!(x&1)):0){x=Ab(20)|0;B=0;eb(502,j|0,120609,76);a=B;B=0;do if(!(a&1)){B=0;eb(502,l|0,121179,15);q=B;B=0;if(q&1){q=Rb()|0;y=Q;Yua(j);Y=q;Z=y;break}B=0;wa(510,m|0,T|0);y=B;B=0;if(y&1){y=Rb()|0;_=1;$=Q;aa=y}else{B=0;ua(163,x|0,j|0,l|0,365,m|0);y=B;B=0;if(y&1)ba=1;else{B=0;eb(503,x|0,1240,229);B=0;ba=0}y=Rb()|0;q=Q;Yua(m);_=ba;$=q;aa=y}Yua(l);Yua(j);if(_){Y=aa;Z=$}else{ca=$;da=aa;break b}}else{y=Rb()|0;Y=y;Z=Q}while(0);zb(x|0);ca=Z;da=Y}else O=46;while(0);if((O|0)==46){n=Rb()|0;ca=Q;da=n}k[i>>2]=27468;k[S>>2]=27488;k[T>>2]=27560;Yua(c);Ava(T);vva(S);P=ca;R=da;Qb(R|0)}while(0);U=W;V=X;vva(S);Qb(V|0);return 0}function w3(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0.0,U=0.0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;c=r;r=r+368|0;d=c+344|0;e=c+208|0;f=c+196|0;g=c+184|0;h=c+36|0;i=c+48|0;j=c+24|0;l=c+12|0;m=c;n=a+8|0;o=XB(a,k[n>>2]|0)|0;q=Rqa(o>>>0>536870911?-1:o<<3)|0;if((Hc[k[(k[b>>2]|0)+20>>2]&511](b)|0)!=626){s=e+56|0;t=e+4|0;k[e>>2]=27524;k[s>>2]=27544;B=0;wa(508,e+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=e+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,t|0,d|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(d);Yua(x);Ava(t);y=C;z=A;break}Yua(d);B=0;A=Ia(40,e|0,121102,50)|0;C=B;B=0;a:do if((((!(C&1)?(B=0,D=ya(k[(k[b>>2]|0)+20>>2]|0,b|0)|0,E=B,B=0,!(E&1)):0)?(B=0,E=ya(427,D|0)|0,D=B,B=0,!(D&1)):0)?(D=Lta(E)|0,B=0,F=Ia(40,A|0,E|0,D|0)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,F|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,f|0,120609,76);D=B;B=0;do if(!(D&1)){B=0;eb(502,g|0,121153,12);E=B;B=0;if(E&1){E=Rb()|0;G=Q;Yua(f);H=E;I=G;break}B=0;wa(510,h|0,t|0);G=B;B=0;if(G&1){G=Rb()|0;J=Q;K=G;L=1}else{B=0;ua(163,F|0,f|0,g|0,397,h|0);G=B;B=0;if(G&1)M=1;else{B=0;eb(503,F|0,1240,229);B=0;M=0}G=Rb()|0;E=Q;Yua(h);J=E;K=G;L=M}Yua(g);Yua(f);if(L){H=K;I=J}else{N=K;O=J;break a}}else{G=Rb()|0;H=G;I=Q}while(0);zb(F|0);N=H;O=I}else P=20;while(0);if((P|0)==20){A=Rb()|0;N=A;O=Q}k[e>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);R=O;S=N;Qb(S|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}w=b+8|0;s=k[w>>2]|0;if((s|0)==(k[n>>2]|0)){if((o|0)>0){n=k[a+12>>2]|0;z=k[b+12>>2]|0;b=0;do{T=+p[n+(b<<3)>>3];U=+p[z+(b<<3)>>3];p[q+(b<<3)>>3]=T>U?U:T;b=b+1|0}while((b|0)!=(o|0))}o=Qqa(16)|0;b=k[a+4>>2]|0;k[o>>2]=32164;B=0;a=B;B=0;if(a&1){a=Rb()|0;V=a;W=Q}else{k[o>>2]=37624;k[o+4>>2]=b;k[o+8>>2]=s;B=0;b=Xa(251,o|0,s|0)|0;s=B;B=0;if(!(s&1)){if((b|0)<=0){k[o+12>>2]=0;Tqa(q);r=c;return o|0}B=0;s=ya(422,(b>>>0>536870911?-1:b<<3)|0)|0;a=B;B=0;if(!(a&1)){k[o+12>>2]=s;TEa(s|0,q|0,b<<3|0)|0;Tqa(q);r=c;return o|0}}c=Rb()|0;V=c;W=Q}Sqa(o);R=W;S=V;Qb(S|0)}V=i+56|0;W=i+4|0;k[i>>2]=27524;k[V>>2]=27544;B=0;wa(508,i+56|0,W|0);o=B;B=0;if(o&1){o=Rb()|0;X=Q;Y=o;vva(V);Qb(Y|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[V>>2]=27488;B=0;va(448,W|0);o=B;B=0;do if(o&1){c=Rb()|0;Z=Q;_=c}else{k[W>>2]=27560;c=i+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,W|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;b=Q;Yua(d);Yua(c);Ava(W);Z=b;_=q;break}Yua(d);B=0;q=Ia(40,i|0,121102,50)|0;b=B;B=0;b:do if(((!(b&1)?(B=0,s=ya(427,k[w>>2]|0)|0,a=B,B=0,!(a&1)):0)?(a=Lta(s)|0,B=0,z=Ia(40,q|0,s|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(239,z|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,j|0,120609,76);a=B;B=0;do if(!(a&1)){B=0;eb(502,l|0,121153,12);s=B;B=0;if(s&1){s=Rb()|0;n=Q;Yua(j);$=s;aa=n;break}B=0;wa(510,m|0,W|0);n=B;B=0;if(n&1){n=Rb()|0;ba=1;ca=Q;da=n}else{B=0;ua(163,z|0,j|0,l|0,399,m|0);n=B;B=0;if(n&1)ea=1;else{B=0;eb(503,z|0,1240,229);B=0;ea=0}n=Rb()|0;s=Q;Yua(m);ba=ea;ca=s;da=n}Yua(l);Yua(j);if(ba){$=da;aa=ca}else{fa=ca;ga=da;break b}}else{n=Rb()|0;$=n;aa=Q}while(0);zb(z|0);fa=aa;ga=$}else P=48;while(0);if((P|0)==48){q=Rb()|0;fa=Q;ga=q}k[i>>2]=27468;k[V>>2]=27488;k[W>>2]=27560;Yua(c);Ava(W);vva(V);R=fa;S=ga;Qb(S|0)}while(0);X=Z;Y=_;vva(V);Qb(Y|0);return 0}function x3(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0.0,U=0.0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;c=r;r=r+368|0;d=c+344|0;e=c+208|0;f=c+196|0;g=c+184|0;h=c+36|0;i=c+48|0;j=c+24|0;l=c+12|0;m=c;n=a+8|0;o=XB(a,k[n>>2]|0)|0;q=Rqa(o>>>0>536870911?-1:o<<3)|0;if((Hc[k[(k[b>>2]|0)+20>>2]&511](b)|0)!=626){s=e+56|0;t=e+4|0;k[e>>2]=27524;k[s>>2]=27544;B=0;wa(508,e+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=e+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,t|0,d|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(d);Yua(x);Ava(t);y=C;z=A;break}Yua(d);B=0;A=Ia(40,e|0,121102,50)|0;C=B;B=0;a:do if((((!(C&1)?(B=0,D=ya(k[(k[b>>2]|0)+20>>2]|0,b|0)|0,E=B,B=0,!(E&1)):0)?(B=0,E=ya(427,D|0)|0,D=B,B=0,!(D&1)):0)?(D=Lta(E)|0,B=0,F=Ia(40,A|0,E|0,D|0)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,F|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,f|0,120609,76);D=B;B=0;do if(!(D&1)){B=0;eb(502,g|0,121166,12);E=B;B=0;if(E&1){E=Rb()|0;G=Q;Yua(f);H=E;I=G;break}B=0;wa(510,h|0,t|0);G=B;B=0;if(G&1){G=Rb()|0;J=Q;K=G;L=1}else{B=0;ua(163,F|0,f|0,g|0,427,h|0);G=B;B=0;if(G&1)M=1;else{B=0;eb(503,F|0,1240,229);B=0;M=0}G=Rb()|0;E=Q;Yua(h);J=E;K=G;L=M}Yua(g);Yua(f);if(L){H=K;I=J}else{N=K;O=J;break a}}else{G=Rb()|0;H=G;I=Q}while(0);zb(F|0);N=H;O=I}else P=20;while(0);if((P|0)==20){A=Rb()|0;N=A;O=Q}k[e>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);R=O;S=N;Qb(S|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}w=b+8|0;s=k[w>>2]|0;if((s|0)==(k[n>>2]|0)){if((o|0)>0){n=k[a+12>>2]|0;z=k[b+12>>2]|0;b=0;do{T=+p[n+(b<<3)>>3];U=+p[z+(b<<3)>>3];p[q+(b<<3)>>3]=T<U?U:T;b=b+1|0}while((b|0)!=(o|0))}o=Qqa(16)|0;b=k[a+4>>2]|0;k[o>>2]=32164;B=0;a=B;B=0;if(a&1){a=Rb()|0;V=a;W=Q}else{k[o>>2]=37624;k[o+4>>2]=b;k[o+8>>2]=s;B=0;b=Xa(251,o|0,s|0)|0;s=B;B=0;if(!(s&1)){if((b|0)<=0){k[o+12>>2]=0;Tqa(q);r=c;return o|0}B=0;s=ya(422,(b>>>0>536870911?-1:b<<3)|0)|0;a=B;B=0;if(!(a&1)){k[o+12>>2]=s;TEa(s|0,q|0,b<<3|0)|0;Tqa(q);r=c;return o|0}}c=Rb()|0;V=c;W=Q}Sqa(o);R=W;S=V;Qb(S|0)}V=i+56|0;W=i+4|0;k[i>>2]=27524;k[V>>2]=27544;B=0;wa(508,i+56|0,W|0);o=B;B=0;if(o&1){o=Rb()|0;X=Q;Y=o;vva(V);Qb(Y|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[V>>2]=27488;B=0;va(448,W|0);o=B;B=0;do if(o&1){c=Rb()|0;Z=Q;_=c}else{k[W>>2]=27560;c=i+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,W|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;b=Q;Yua(d);Yua(c);Ava(W);Z=b;_=q;break}Yua(d);B=0;q=Ia(40,i|0,121102,50)|0;b=B;B=0;b:do if(((!(b&1)?(B=0,s=ya(427,k[w>>2]|0)|0,a=B,B=0,!(a&1)):0)?(a=Lta(s)|0,B=0,z=Ia(40,q|0,s|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(239,z|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,j|0,120609,76);a=B;B=0;do if(!(a&1)){B=0;eb(502,l|0,121166,12);s=B;B=0;if(s&1){s=Rb()|0;n=Q;Yua(j);$=s;aa=n;break}B=0;wa(510,m|0,W|0);n=B;B=0;if(n&1){n=Rb()|0;ba=1;ca=Q;da=n}else{B=0;ua(163,z|0,j|0,l|0,429,m|0);n=B;B=0;if(n&1)ea=1;else{B=0;eb(503,z|0,1240,229);B=0;ea=0}n=Rb()|0;s=Q;Yua(m);ba=ea;ca=s;da=n}Yua(l);Yua(j);if(ba){$=da;aa=ca}else{fa=ca;ga=da;break b}}else{n=Rb()|0;$=n;aa=Q}while(0);zb(z|0);fa=aa;ga=$}else P=48;while(0);if((P|0)==48){q=Rb()|0;fa=Q;ga=q}k[i>>2]=27468;k[V>>2]=27488;k[W>>2]=27560;Yua(c);Ava(W);vva(V);R=fa;S=ga;Qb(S|0)}while(0);X=Z;Y=_;vva(V);Qb(Y|0);return 0}function y3(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!(k[b>>2]|0))return;d=k[k[b+4>>2]>>2]|0;Dc[k[(k[d>>2]|0)+16>>2]&255](d,6,c,k[a+12>>2]|0,0);return}function z3(a,b){a=a|0;b=b|0;return}function A3(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,120787,86);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,50,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function B3(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,120787,86);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,51,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function C3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;e=c+24|0;f=c+12|0;g=c;c=a+56|0;h=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=a+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,a|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,120787,86);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,121355,13);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,54,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[a>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(E|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function D3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,120787,86);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,55,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function E3(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,120787,86);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121324,30);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,58,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function F3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,120787,86);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,120910,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,59,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function G3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,a|0,120787,86);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,120878,31);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(a);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,a|0,f|0,60,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(a);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(E|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function H3(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,120763,23)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,120787,86);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,120874,3);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,64,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function I3(a){a=a|0;return 1}function J3(a){a=a|0;k[a>>2]=32164;k[a>>2]=37816;k[a+12>>2]=0;return}function K3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;k[a>>2]=32164;B=0;e=B;B=0;if(e&1){e=Rb()|0;f=e;g=Q;Qb(f|0)}k[a>>2]=37816;k[a+4>>2]=b;k[a+8>>2]=d;B=0;b=Xa(252,a|0,d|0)|0;d=B;B=0;if(!(d&1)){if((b|0)<=0){k[a+12>>2]=0;return}B=0;d=ya(422,(b>>>0>536870911?-1:b<<3)|0)|0;e=B;B=0;if(!(e&1)){k[a+12>>2]=d;a=0;do{p[d+(a<<3)>>3]=+p[c+(a<<3)>>3];a=a+1|0}while((a|0)!=(b|0));return}}b=Rb()|0;f=b;g=Q;Qb(f|0)}function L3(a){a=a|0;var b=0;k[a>>2]=37816;b=a+12|0;a=k[b>>2]|0;if(!a){k[b>>2]=0;return}Tqa(a);k[b>>2]=0;return}function M3(a){a=a|0;var b=0,c=0;k[a>>2]=37816;b=a+12|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;Sqa(a);return}function N3(a){a=a|0;Ec[k[(k[a>>2]|0)+12>>2]&1023](a);return}function O3(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){q=Rb()|0;s=Q;t=q}else{k[l>>2]=27560;q=d+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(c);Yua(q);Ava(l);s=v;t=u;break}Yua(c);k[d+(k[(k[d>>2]|0)+-12>>2]|0)+12>>2]=15;B=0;u=Ia(40,d|0,120947,14)|0;v=B;B=0;do if((((!(v&1)?(k[u+(k[(k[u>>2]|0)+-12>>2]|0)+12>>2]=25,w=u+(k[(k[u>>2]|0)+-12>>2]|0)+4|0,k[w>>2]=k[w>>2]&-177|32,B=0,w=ya(427,k[a+4>>2]|0)|0,x=B,B=0,!(x&1)):0)?(x=Lta(w)|0,B=0,y=Ia(40,u|0,w|0,x|0)|0,x=B,B=0,!(x&1)):0)?(B=0,Ia(40,y|0,120962,2)|0,y=B,B=0,!(y&1)):0)?(B=0,wa(510,e|0,l|0),y=B,B=0,!(y&1)):0){B=0;ya(424,e|0)|0;y=B;B=0;if(y&1){y=Rb()|0;x=Q;Yua(e);z=x;A=y;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(q);Ava(l);vva(j);y=a+8|0;a:do if((iz(a,k[y>>2]|0)|0)>0){x=f+56|0;w=f+4|0;C=f+56|0;D=f+128|0;E=f+132|0;F=f+36|0;G=f+52|0;H=a+12|0;I=0;while(1){k[f>>2]=27524;k[x>>2]=27544;B=0;wa(508,C|0,w|0);J=B;B=0;if(J&1){K=33;break}k[D>>2]=0;k[E>>2]=-1;k[f>>2]=27468;k[x>>2]=27488;B=0;va(448,w|0);J=B;B=0;if(J&1){K=34;break}k[w>>2]=27560;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;k[G>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,w|0,c|0);J=B;B=0;if(J&1){K=32;break}Yua(c);B=0;J=Ia(40,f|0,149175,1)|0;L=B;B=0;if(L&1){K=42;break}B=0;Sa(1,J|0,+(+p[(k[H>>2]|0)+(I<<3)>>3]))|0;J=B;B=0;if(J&1){K=42;break}B=0;wa(510,g|0,w|0);J=B;B=0;if(J&1){K=42;break}B=0;ya(424,g|0)|0;J=B;B=0;if(J&1){K=43;break}Yua(g);k[f>>2]=27468;k[x>>2]=27488;k[w>>2]=27560;Yua(F);Ava(w);vva(x);I=I+1|0;if((I|0)>=(iz(a,k[y>>2]|0)|0))break a}if((K|0)==32){I=Rb()|0;H=Q;Yua(c);Yua(F);Ava(w);M=H;N=I;K=35}else if((K|0)==33){I=Rb()|0;O=Q;P=I;vva(x);Qb(P|0)}else if((K|0)==34){I=Rb()|0;M=Q;N=I;K=35}else if((K|0)==42){I=Rb()|0;R=Q;S=I;K=44}else if((K|0)==43){I=Rb()|0;H=Q;Yua(g);R=H;S=I;K=44}if((K|0)==35){O=M;P=N;vva(x);Qb(P|0)}else if((K|0)==44){k[f>>2]=27468;k[x>>2]=27488;k[w>>2]=27560;Yua(F);Ava(w);vva(x);T=R;U=S;Qb(U|0)}}while(0);I=h+56|0;H=h+4|0;k[h>>2]=27524;k[I>>2]=27544;B=0;wa(508,h+56|0,H|0);G=B;B=0;if(G&1){G=Rb()|0;V=Q;W=G;vva(I);Qb(W|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[I>>2]=27488;B=0;va(448,H|0);G=B;B=0;do if(G&1){E=Rb()|0;X=Q;Y=E}else{k[H>>2]=27560;E=h+36|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,H|0,c|0);D=B;B=0;if(D&1){D=Rb()|0;C=Q;Yua(c);Yua(E);Ava(H);X=C;Y=D;break}Yua(c);B=0;D=Ia(40,h|0,120965,3)|0;C=B;B=0;do if((!(C&1)?(B=0,J=ya(427,k[y>>2]|0)|0,L=B,B=0,!(L&1)):0)?(L=Lta(J)|0,B=0,Z=Ia(40,D|0,J|0,L|0)|0,L=B,B=0,!(L&1)):0){B=0;Ia(40,Z|0,145593,2)|0;Z=B;B=0;if(Z&1){K=51;break}B=0;wa(510,i|0,H|0);Z=B;B=0;if(Z&1){K=51;break}B=0;ya(424,i|0)|0;Z=B;B=0;if(Z&1){Z=Rb()|0;L=Q;Yua(i);_=L;$=Z;break}else{Yua(i);k[h>>2]=27468;k[I>>2]=27488;k[H>>2]=27560;Yua(E);Ava(H);vva(I);r=b;return}}else K=51;while(0);if((K|0)==51){D=Rb()|0;_=Q;$=D}k[h>>2]=27468;k[I>>2]=27488;k[H>>2]=27560;Yua(E);Ava(H);vva(I);T=_;U=$;Qb(U|0)}while(0);V=X;W=Y;vva(I);Qb(W|0)}else K=26;while(0);if((K|0)==26){u=Rb()|0;z=Q;A=u}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(q);Ava(l);vva(j);T=z;U=A;Qb(U|0)}while(0);n=s;o=t;vva(j);Qb(o|0)}function P3(a){a=a|0;return -1}function Q3(a){a=a|0;return 624}function R3(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=Qqa(16)|0;c=k[a+4>>2]|0;d=k[a+12>>2]|0;e=k[a+8>>2]|0;k[b>>2]=32164;B=0;a=B;B=0;if(a&1){a=Rb()|0;f=a;g=Q;Sqa(b);Qb(f|0)}k[b>>2]=37816;k[b+4>>2]=c;k[b+8>>2]=e;B=0;c=Xa(252,b|0,e|0)|0;e=B;B=0;if(!(e&1)){if((c|0)<=0){k[b+12>>2]=0;return b|0}B=0;e=ya(422,(c>>>0>536870911?-1:c<<3)|0)|0;a=B;B=0;if(!(a&1)){k[b+12>>2]=e;a=0;do{p[e+(a<<3)>>3]=+p[d+(a<<3)>>3];a=a+1|0}while((a|0)!=(c|0));return b|0}}c=Rb()|0;f=c;g=Q;Sqa(b);Qb(f|0);return 0}function S3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;e=r;r=r+368|0;f=e+344|0;g=e+208|0;h=e+196|0;j=e+184|0;m=e+36|0;n=e+48|0;o=e+24|0;p=e+12|0;q=e;s=(d|0)==0;a:do if(s){t=k[b>>2]|0;i[t>>0]=112;i[t+1>>0]=2;i[t+2>>0]=0;i[t+3>>0]=0;t=(k[b>>2]|0)+4|0;k[b>>2]=t;u=a+4|0;v=l[u>>0]|l[u+1>>0]<<8|l[u+2>>0]<<16|l[u+3>>0]<<24;i[t>>0]=v;i[t+1>>0]=v>>8;i[t+2>>0]=v>>16;i[t+3>>0]=v>>24;v=(k[b>>2]|0)+4|0;k[b>>2]=v;t=a+8|0;u=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[v>>0]=u;i[v+1>>0]=u>>8;i[v+2>>0]=u>>16;i[v+3>>0]=u>>24;k[b>>2]=(k[b>>2]|0)+4;w=t}else switch(d|0){case 2:{k[c>>2]=(k[c>>2]|0)+12;w=a+8|0;break a;break}case 1:{t=(k[b>>2]|0)+4|0;k[b>>2]=t;u=a+4|0;v=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[u>>0]=v;i[u+1>>0]=v>>8;i[u+2>>0]=v>>16;i[u+3>>0]=v>>24;v=(k[b>>2]|0)+4|0;k[b>>2]=v;u=a+8|0;t=l[v>>0]|l[v+1>>0]<<8|l[v+2>>0]<<16|l[v+3>>0]<<24;i[u>>0]=t;i[u+1>>0]=t>>8;i[u+2>>0]=t>>16;i[u+3>>0]=t>>24;k[b>>2]=(k[b>>2]|0)+4;w=u;break a;break}default:{u=g+56|0;t=g+4|0;k[g>>2]=27524;k[u>>2]=27544;B=0;wa(508,g+56|0,t|0);v=B;B=0;if(v&1){v=Rb()|0;x=Q;y=v;vva(u);Qb(y|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[u>>2]=27488;B=0;va(448,t|0);v=B;B=0;do if(v&1){z=Rb()|0;A=Q;C=z}else{k[t>>2]=27560;z=g+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,t|0,f|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(f);Yua(z);Ava(t);A=E;C=D;break}Yua(f);B=0;D=Ia(40,g|0,143951,43)|0;E=B;B=0;b:do if(!(E&1)?(B=0,Xa(239,D|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,h|0,120969,76);G=B;B=0;do if(!(G&1)){B=0;eb(502,j|0,149525,8);H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(h);J=I;K=H;break}B=0;wa(510,m|0,t|0);H=B;B=0;if(H&1){H=Rb()|0;L=Q;M=H;N=1}else{B=0;ua(163,F|0,h|0,j|0,71,m|0);H=B;B=0;if(H&1)O=1;else{B=0;eb(503,F|0,1240,229);B=0;O=0}H=Rb()|0;I=Q;Yua(m);L=I;M=H;N=O}Yua(j);Yua(h);if(N){J=L;K=M}else{P=L;R=M;break b}}else{H=Rb()|0;J=Q;K=H}while(0);zb(F|0);P=J;R=K}else S=18;while(0);if((S|0)==18){D=Rb()|0;P=Q;R=D}k[g>>2]=27468;k[u>>2]=27488;k[t>>2]=27560;Yua(z);Ava(t);vva(u);T=R;U=P;Qb(T|0)}while(0);x=A;y=C;vva(u);Qb(y|0)}}while(0);y=iz(a,k[w>>2]|0)|0;w=a+12|0;if((y|0)<=0){k[w>>2]=0;r=e;return}a=(k[w>>2]|0)==0;if(s){i[k[b>>2]>>0]=a&1;s=(k[b>>2]|0)+1|0;k[b>>2]=s;if(a){r=e;return}C=y<<3;TEa(s|0,k[w>>2]|0,C|0)|0;k[b>>2]=(k[b>>2]|0)+C;r=e;return}switch(d|0){case 2:{d=(k[c>>2]|0)+1|0;k[c>>2]=d;if(a){r=e;return}k[c>>2]=d+(y<<3);r=e;return}case 1:{d=k[b>>2]|0;c=i[d>>0]|0;k[b>>2]=d+1;if(c&1){r=e;return}c=Rqa(y>>>0>536870911?-1:y<<3)|0;k[w>>2]=c;w=k[b>>2]|0;d=y<<3;TEa(c|0,w|0,d|0)|0;k[b>>2]=w+d;r=e;return}default:{e=n+56|0;d=n+4|0;k[n>>2]=27524;k[e>>2]=27544;B=0;wa(508,n+56|0,d|0);w=B;B=0;if(w&1){w=Rb()|0;V=Q;W=w;vva(e);Qb(W|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[e>>2]=27488;B=0;va(448,d|0);w=B;B=0;do if(w&1){b=Rb()|0;X=Q;Y=b}else{k[d>>2]=27560;b=n+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,d|0,f|0);c=B;B=0;if(c&1){c=Rb()|0;y=Q;Yua(f);Yua(b);Ava(d);X=y;Y=c;break}Yua(f);B=0;c=Ia(40,n|0,143951,43)|0;y=B;B=0;c:do if(!(y&1)?(B=0,Xa(239,c|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,o|0,120969,76);C=B;B=0;do if(!(C&1)){B=0;eb(502,p|0,149525,8);s=B;B=0;if(s&1){s=Rb()|0;A=Q;Yua(o);Z=s;_=A;break}B=0;wa(510,q|0,d|0);A=B;B=0;if(A&1){A=Rb()|0;$=1;aa=Q;ba=A}else{B=0;ua(163,a|0,o|0,p|0,78,q|0);A=B;B=0;if(A&1)ca=1;else{B=0;eb(503,a|0,1240,229);B=0;ca=0}A=Rb()|0;s=Q;Yua(q);$=ca;aa=s;ba=A}Yua(p);Yua(o);if($){Z=ba;_=aa}else{da=ba;ea=aa;break c}}else{A=Rb()|0;Z=A;_=Q}while(0);zb(a|0);da=Z;ea=_}else S=49;while(0);if((S|0)==49){c=Rb()|0;da=c;ea=Q}k[n>>2]=27468;k[e>>2]=27488;k[d>>2]=27560;Yua(b);Ava(d);vva(e);T=da;U=ea;Qb(T|0)}while(0);V=X;W=Y;vva(e);Qb(W|0)}}}function T3(a){a=a|0;return k[a+4>>2]|0}function U3(a){a=a|0;return ((k[a+8>>2]|0)==736?736:738)|0}function V3(a){a=a|0;return iz(a,k[a+8>>2]|0)|0}function W3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;c=iz(a,k[a+8>>2]|0)|0;if((c|0)<=0)return;e=k[a+12>>2]|0;a=ma(c,d)|0;d=0;do{p[b+(d+a<<3)>>3]=+p[e+(d<<3)>>3];d=d+1|0}while((d|0)!=(c|0));return}function X3(a,b,c){a=a|0;b=b|0;c=c|0;kz(a,b,k[a+12>>2]|0,c,k[a+8>>2]|0);return}function Y3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;hz(a,b,k[a+12>>2]|0,c,d,k[a+8>>2]|0);return}function Z3(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function _3(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0.0,g=0,h=0.0,i=0.0;c=iz(a,k[a+8>>2]|0)|0;d=+(c|0);if((c|0)<=0){e=0.0;f=e/d;p[b>>3]=f;return}g=k[a+12>>2]|0;a=0;h=0.0;while(1){i=h+ +p[g+(a<<3)>>3];a=a+1|0;if((a|0)==(c|0)){e=i;break}else h=i}f=e/d;p[b>>3]=f;return}function $3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=Rqa(8)|0;f=Rqa(8)|0;Fc[k[(k[a>>2]|0)+64>>2]&1023](a,e);p[f>>3]=0.0;k[b>>2]=e;k[c>>2]=f;k[d>>2]=1;return}function a4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0;f=Rqa(8)|0;g=Rqa(8)|0;Fc[k[(k[a>>2]|0)+64>>2]&1023](a,f);p[g>>3]=e;k[b>>2]=f;k[c>>2]=g;k[d>>2]=1;return}function b4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;e=r;r=r+32|0;f=e;if((k[a+8>>2]|0)==736){g=Qqa(16)|0;B=0;ib(284,g|0,k[a+4>>2]|0,k[a+12>>2]|0,736);h=B;B=0;if(!(h&1)){i=g;r=e;return i|0}h=Rb()|0;j=Q;Sqa(g);l=j;m=h;Qb(m|0)}h=k[a+12>>2]|0;p[f>>3]=+p[h+(b<<3)>>3];p[f+8>>3]=+p[h+(c<<3)>>3];p[f+16>>3]=+p[h+(d<<3)>>3];d=Qqa(16)|0;B=0;ib(284,d|0,k[a+4>>2]|0,f|0,738);f=B;B=0;if(f&1){f=Rb()|0;a=Q;Sqa(d);l=a;m=f;Qb(m|0)}else{i=d;r=e;return i|0}return 0}function c4(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0.0,g=0,h=0.0,i=0.0;c=iz(a,k[a+8>>2]|0)|0;d=k[a+12>>2]|0;e=+p[d>>3];f=e*e;if((c|0)>1){g=1;h=f}else{i=f;p[b>>3]=i;return}while(1){f=+p[d+(g<<3)>>3];e=f*f;f=e<h?e:h;g=g+1|0;if((g|0)==(c|0)){i=f;break}else h=f}p[b>>3]=i;return}function d4(a,b){a=a|0;b=+b;var c=0,d=0,e=0;c=iz(a,k[a+8>>2]|0)|0;if((c|0)<=0)return;d=k[a+12>>2]|0;a=0;do{e=d+(a<<3)|0;if(+p[e>>3]<b)p[e>>3]=b;a=a+1|0}while((a|0)!=(c|0));return}function e4(a){a=a|0;var b=0,c=0.0,d=0,e=0.0,f=0.0,g=0.0;b=iz(a,k[a+8>>2]|0)|0;if((b|0)<=0){c=0.0;return +c}d=k[a+12>>2]|0;a=0;e=0.0;while(1){f=+$(+(+p[d+(a<<3)>>3]));g=f>e?f:e;a=a+1|0;if((a|0)==(b|0)){c=g;break}else e=g}return +c}function f4(a){a=a|0;var b=0,c=0,d=0.0,e=0,f=0.0,g=0.0,h=0.0;b=iz(a,k[a+8>>2]|0)|0;c=k[a+12>>2]|0;d=+p[c>>3];if((b|0)>1){e=1;f=d}else{g=d;return +g}while(1){d=+p[c+(e<<3)>>3];h=d>f?d:f;e=e+1|0;if((e|0)==(b|0)){g=h;break}else f=h}return +g}function g4(a){a=a|0;var b=0,c=0,d=0.0,e=0,f=0.0,g=0.0,h=0.0;b=iz(a,k[a+8>>2]|0)|0;c=k[a+12>>2]|0;d=+$(+(+p[c>>3]));if((b|0)>1){e=1;f=d}else{g=d;return +g}while(1){d=+$(+(+p[c+(e<<3)>>3]));h=d>f?d:f;e=e+1|0;if((e|0)==(b|0)){g=h;break}else f=h}return +g}function h4(a){a=a|0;var b=0,c=0,d=0.0,e=0,f=0.0,g=0.0,h=0.0;b=iz(a,k[a+8>>2]|0)|0;c=k[a+12>>2]|0;d=+p[c>>3];if((b|0)>1){e=1;f=d}else{g=d;return +g}while(1){d=+p[c+(e<<3)>>3];h=d<f?d:f;e=e+1|0;if((e|0)==(b|0)){g=h;break}else f=h}return +g}function i4(a){a=a|0;var b=0,c=0,d=0.0,e=0,f=0.0,g=0.0,h=0.0;b=iz(a,k[a+8>>2]|0)|0;c=k[a+12>>2]|0;d=+$(+(+p[c>>3]));if((b|0)>1){e=1;f=d}else{g=d;return +g}while(1){d=+$(+(+p[c+(e<<3)>>3]));h=d<f?d:f;e=e+1|0;if((e|0)==(b|0)){g=h;break}else f=h}return +g}function j4(a,b){a=a|0;b=+b;var c=0,d=0,e=0;c=iz(a,k[a+8>>2]|0)|0;if((c|0)<=0)return;d=k[a+12>>2]|0;a=0;do{e=d+(a<<3)|0;p[e>>3]=+p[e>>3]*b;a=a+1|0}while((a|0)!=(c|0));return}function k4(a,b){a=a|0;b=+b;var c=0,d=0;c=iz(a,k[a+8>>2]|0)|0;if((c|0)<=0)return;d=k[a+12>>2]|0;a=0;do{p[d+(a<<3)>>3]=b;a=a+1|0}while((a|0)!=(c|0));return}function l4(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;d=r;r=r+368|0;e=d+344|0;f=d+208|0;g=d+196|0;h=d+184|0;i=d+36|0;j=d+48|0;l=d+24|0;m=d+12|0;n=d;o=a+8|0;q=iz(a,k[o>>2]|0)|0;if((Hc[k[(k[b>>2]|0)+20>>2]&511](b)|0)!=624){s=f+56|0;t=f+4|0;k[f>>2]=27524;k[s>>2]=27544;B=0;wa(508,f+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=f+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,t|0,e|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(e);Yua(x);Ava(t);y=C;z=A;break}Yua(e);B=0;A=Ia(40,f|0,121046,50)|0;C=B;B=0;a:do if((((!(C&1)?(B=0,D=ya(k[(k[b>>2]|0)+20>>2]|0,b|0)|0,E=B,B=0,!(E&1)):0)?(B=0,E=ya(427,D|0)|0,D=B,B=0,!(D&1)):0)?(D=Lta(E)|0,B=0,F=Ia(40,A|0,E|0,D|0)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,F|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,g|0,120969,76);D=B;B=0;do if(!(D&1)){B=0;eb(502,h|0,121097,4);E=B;B=0;if(E&1){E=Rb()|0;G=Q;Yua(g);H=E;I=G;break}B=0;wa(510,i|0,t|0);G=B;B=0;if(G&1){G=Rb()|0;J=Q;K=G;L=1}else{B=0;ua(163,F|0,g|0,h|0,313,i|0);G=B;B=0;if(G&1)M=1;else{B=0;eb(503,F|0,1240,229);B=0;M=0}G=Rb()|0;E=Q;Yua(i);J=E;K=G;L=M}Yua(h);Yua(g);if(L){H=K;I=J}else{N=K;O=J;break a}}else{G=Rb()|0;H=G;I=Q}while(0);zb(F|0);N=H;O=I}else P=20;while(0);if((P|0)==20){A=Rb()|0;N=A;O=Q}k[f>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);R=O;S=N;Qb(S|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}if((k[b+8>>2]|0)==(k[o>>2]|0)){if((q|0)<=0){r=d;return}o=k[a+12>>2]|0;a=k[b+12>>2]|0;w=0;do{s=o+(w<<3)|0;p[s>>3]=+p[s>>3]+ +p[a+(w<<3)>>3]*c;w=w+1|0}while((w|0)!=(q|0));r=d;return}d=j+56|0;q=j+4|0;k[j>>2]=27524;k[d>>2]=27544;B=0;wa(508,j+56|0,q|0);w=B;B=0;if(w&1){w=Rb()|0;T=Q;U=w;vva(d);Qb(U|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[d>>2]=27488;B=0;va(448,q|0);w=B;B=0;do if(w&1){a=Rb()|0;V=Q;W=a}else{k[q>>2]=27560;a=j+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[j+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,q|0,e|0);o=B;B=0;if(o&1){o=Rb()|0;s=Q;Yua(e);Yua(a);Ava(q);V=s;W=o;break}Yua(e);B=0;o=Ia(40,j|0,121046,50)|0;s=B;B=0;b:do if((((!(s&1)?(B=0,z=ya(k[(k[b>>2]|0)+20>>2]|0,b|0)|0,y=B,B=0,!(y&1)):0)?(B=0,y=ya(427,z|0)|0,z=B,B=0,!(z&1)):0)?(z=Lta(y)|0,B=0,v=Ia(40,o|0,y|0,z|0)|0,z=B,B=0,!(z&1)):0)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,l|0,120969,76);z=B;B=0;do if(!(z&1)){B=0;eb(502,m|0,121097,4);y=B;B=0;if(y&1){y=Rb()|0;N=Q;Yua(l);X=y;Y=N;break}B=0;wa(510,n|0,q|0);N=B;B=0;if(N&1){N=Rb()|0;Z=1;_=Q;$=N}else{B=0;ua(163,v|0,l|0,m|0,315,n|0);N=B;B=0;if(N&1)aa=1;else{B=0;eb(503,v|0,1240,229);B=0;aa=0}N=Rb()|0;y=Q;Yua(n);Z=aa;_=y;$=N}Yua(m);Yua(l);if(Z){X=$;Y=_}else{ba=_;ca=$;break b}}else{N=Rb()|0;X=N;Y=Q}while(0);zb(v|0);ba=Y;ca=X}else P=49;while(0);if((P|0)==49){o=Rb()|0;ba=Q;ca=o}k[j>>2]=27468;k[d>>2]=27488;k[q>>2]=27560;Yua(a);Ava(q);vva(d);R=ba;S=ca;Qb(S|0)}while(0);T=V;U=W;vva(d);Qb(U|0)}function m4(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0.0,f=0,g=0,h=0,i=0;d=iz(a,k[a+8>>2]|0)|0;e=+$(+b);p[t>>3]=e;f=k[t+4>>2]|0;g=(d|0)>0;if((f>>>0<2146435072|(f|0)==2146435072&(k[t>>2]|0)>>>0<1)&g){f=k[a+12>>2]|0;h=0;do{i=f+(h<<3)|0;if(+p[i>>3]<b)p[i>>3]=b;h=h+1|0}while((h|0)!=(d|0))}b=+$(+c);p[t>>3]=b;h=k[t+4>>2]|0;if(!((h>>>0<2146435072|(h|0)==2146435072&(k[t>>2]|0)>>>0<1)&g))return;g=k[a+12>>2]|0;a=0;do{h=g+(a<<3)|0;if(+p[h>>3]>c)p[h>>3]=c;a=a+1|0}while((a|0)!=(d|0));return}function n4(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!(k[b>>2]|0))return;d=k[k[b+4>>2]>>2]|0;Dc[k[(k[d>>2]|0)+16>>2]&255](d,4,c,k[a+12>>2]|0,0);return}function o4(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0.0,U=0.0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;c=r;r=r+368|0;d=c+344|0;e=c+208|0;f=c+196|0;g=c+184|0;h=c+36|0;i=c+48|0;j=c+24|0;l=c+12|0;m=c;n=a+8|0;o=iz(a,k[n>>2]|0)|0;q=Rqa(o>>>0>536870911?-1:o<<3)|0;if((Hc[k[(k[b>>2]|0)+20>>2]&511](b)|0)!=624){s=e+56|0;t=e+4|0;k[e>>2]=27524;k[s>>2]=27544;B=0;wa(508,e+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=e+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,t|0,d|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(d);Yua(x);Ava(t);y=C;z=A;break}Yua(d);B=0;A=Ia(40,e|0,121102,50)|0;C=B;B=0;a:do if((((!(C&1)?(B=0,D=ya(k[(k[b>>2]|0)+20>>2]|0,b|0)|0,E=B,B=0,!(E&1)):0)?(B=0,E=ya(427,D|0)|0,D=B,B=0,!(D&1)):0)?(D=Lta(E)|0,B=0,F=Ia(40,A|0,E|0,D|0)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,F|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,f|0,120969,76);D=B;B=0;do if(!(D&1)){B=0;eb(502,g|0,121153,12);E=B;B=0;if(E&1){E=Rb()|0;G=Q;Yua(f);H=E;I=G;break}B=0;wa(510,h|0,t|0);G=B;B=0;if(G&1){G=Rb()|0;J=Q;K=G;L=1}else{B=0;ua(163,F|0,f|0,g|0,348,h|0);G=B;B=0;if(G&1)M=1;else{B=0;eb(503,F|0,1240,229);B=0;M=0}G=Rb()|0;E=Q;Yua(h);J=E;K=G;L=M}Yua(g);Yua(f);if(L){H=K;I=J}else{N=K;O=J;break a}}else{G=Rb()|0;H=G;I=Q}while(0);zb(F|0);N=H;O=I}else P=20;while(0);if((P|0)==20){A=Rb()|0;N=A;O=Q}k[e>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);R=O;S=N;Qb(S|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}w=b+8|0;s=k[w>>2]|0;if((s|0)==(k[n>>2]|0)){if((o|0)>0){n=k[a+12>>2]|0;z=k[b+12>>2]|0;b=0;do{T=+p[n+(b<<3)>>3];U=+p[z+(b<<3)>>3];p[q+(b<<3)>>3]=T>U?U:T;b=b+1|0}while((b|0)!=(o|0))}o=Qqa(16)|0;b=k[a+4>>2]|0;k[o>>2]=32164;B=0;a=B;B=0;if(a&1){a=Rb()|0;V=a;W=Q}else{k[o>>2]=37816;k[o+4>>2]=b;k[o+8>>2]=s;B=0;b=Xa(252,o|0,s|0)|0;s=B;B=0;if(!(s&1)){if((b|0)<=0){k[o+12>>2]=0;Tqa(q);r=c;return o|0}B=0;s=ya(422,(b>>>0>536870911?-1:b<<3)|0)|0;a=B;B=0;if(!(a&1)){k[o+12>>2]=s;TEa(s|0,q|0,b<<3|0)|0;Tqa(q);r=c;return o|0}}c=Rb()|0;V=c;W=Q}Sqa(o);R=W;S=V;Qb(S|0)}V=i+56|0;W=i+4|0;k[i>>2]=27524;k[V>>2]=27544;B=0;wa(508,i+56|0,W|0);o=B;B=0;if(o&1){o=Rb()|0;X=Q;Y=o;vva(V);Qb(Y|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[V>>2]=27488;B=0;va(448,W|0);o=B;B=0;do if(o&1){c=Rb()|0;Z=Q;_=c}else{k[W>>2]=27560;c=i+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,W|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;b=Q;Yua(d);Yua(c);Ava(W);Z=b;_=q;break}Yua(d);B=0;q=Ia(40,i|0,121102,50)|0;b=B;B=0;b:do if(((!(b&1)?(B=0,s=ya(427,k[w>>2]|0)|0,a=B,B=0,!(a&1)):0)?(a=Lta(s)|0,B=0,z=Ia(40,q|0,s|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(239,z|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,j|0,120969,76);a=B;B=0;do if(!(a&1)){B=0;eb(502,l|0,121153,12);s=B;B=0;if(s&1){s=Rb()|0;n=Q;Yua(j);$=s;aa=n;break}B=0;wa(510,m|0,W|0);n=B;B=0;if(n&1){n=Rb()|0;ba=1;ca=Q;da=n}else{B=0;ua(163,z|0,j|0,l|0,350,m|0);n=B;B=0;if(n&1)ea=1;else{B=0;eb(503,z|0,1240,229);B=0;ea=0}n=Rb()|0;s=Q;Yua(m);ba=ea;ca=s;da=n}Yua(l);Yua(j);if(ba){$=da;aa=ca}else{fa=ca;ga=da;break b}}else{n=Rb()|0;$=n;aa=Q}while(0);zb(z|0);fa=aa;ga=$}else P=48;while(0);if((P|0)==48){q=Rb()|0;fa=Q;ga=q}k[i>>2]=27468;k[V>>2]=27488;k[W>>2]=27560;Yua(c);Ava(W);vva(V);R=fa;S=ga;Qb(S|0)}while(0);X=Z;Y=_;vva(V);Qb(Y|0);return 0}function p4(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0.0,U=0.0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;c=r;r=r+368|0;d=c+344|0;e=c+208|0;f=c+196|0;g=c+184|0;h=c+36|0;i=c+48|0;j=c+24|0;l=c+12|0;m=c;n=a+8|0;o=iz(a,k[n>>2]|0)|0;q=Rqa(o>>>0>536870911?-1:o<<3)|0;if((Hc[k[(k[b>>2]|0)+20>>2]&511](b)|0)!=624){s=e+56|0;t=e+4|0;k[e>>2]=27524;k[s>>2]=27544;B=0;wa(508,e+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=e+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,t|0,d|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(d);Yua(x);Ava(t);y=C;z=A;break}Yua(d);B=0;A=Ia(40,e|0,121102,50)|0;C=B;B=0;a:do if((((!(C&1)?(B=0,D=ya(k[(k[b>>2]|0)+20>>2]|0,b|0)|0,E=B,B=0,!(E&1)):0)?(B=0,E=ya(427,D|0)|0,D=B,B=0,!(D&1)):0)?(D=Lta(E)|0,B=0,F=Ia(40,A|0,E|0,D|0)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,F|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,f|0,120969,76);D=B;B=0;do if(!(D&1)){B=0;eb(502,g|0,121166,12);E=B;B=0;if(E&1){E=Rb()|0;G=Q;Yua(f);H=E;I=G;break}B=0;wa(510,h|0,t|0);G=B;B=0;if(G&1){G=Rb()|0;J=Q;K=G;L=1}else{B=0;ua(163,F|0,f|0,g|0,379,h|0);G=B;B=0;if(G&1)M=1;else{B=0;eb(503,F|0,1240,229);B=0;M=0}G=Rb()|0;E=Q;Yua(h);J=E;K=G;L=M}Yua(g);Yua(f);if(L){H=K;I=J}else{N=K;O=J;break a}}else{G=Rb()|0;H=G;I=Q}while(0);zb(F|0);N=H;O=I}else P=20;while(0);if((P|0)==20){A=Rb()|0;N=A;O=Q}k[e>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);R=O;S=N;Qb(S|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}w=b+8|0;s=k[w>>2]|0;if((s|0)==(k[n>>2]|0)){if((o|0)>0){n=k[a+12>>2]|0;z=k[b+12>>2]|0;b=0;do{T=+p[n+(b<<3)>>3];U=+p[z+(b<<3)>>3];p[q+(b<<3)>>3]=T<U?U:T;b=b+1|0}while((b|0)!=(o|0))}o=Qqa(16)|0;b=k[a+4>>2]|0;k[o>>2]=32164;B=0;a=B;B=0;if(a&1){a=Rb()|0;V=a;W=Q}else{k[o>>2]=37816;k[o+4>>2]=b;k[o+8>>2]=s;B=0;b=Xa(252,o|0,s|0)|0;s=B;B=0;if(!(s&1)){if((b|0)<=0){k[o+12>>2]=0;Tqa(q);r=c;return o|0}B=0;s=ya(422,(b>>>0>536870911?-1:b<<3)|0)|0;a=B;B=0;if(!(a&1)){k[o+12>>2]=s;TEa(s|0,q|0,b<<3|0)|0;Tqa(q);r=c;return o|0}}c=Rb()|0;V=c;W=Q}Sqa(o);R=W;S=V;Qb(S|0)}V=i+56|0;W=i+4|0;k[i>>2]=27524;k[V>>2]=27544;B=0;wa(508,i+56|0,W|0);o=B;B=0;if(o&1){o=Rb()|0;X=Q;Y=o;vva(V);Qb(Y|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[V>>2]=27488;B=0;va(448,W|0);o=B;B=0;do if(o&1){c=Rb()|0;Z=Q;_=c}else{k[W>>2]=27560;c=i+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,W|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;b=Q;Yua(d);Yua(c);Ava(W);Z=b;_=q;break}Yua(d);B=0;q=Ia(40,i|0,121102,50)|0;b=B;B=0;b:do if(((!(b&1)?(B=0,s=ya(427,k[w>>2]|0)|0,a=B,B=0,!(a&1)):0)?(a=Lta(s)|0,B=0,z=Ia(40,q|0,s|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(239,z|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,j|0,120969,76);a=B;B=0;do if(!(a&1)){B=0;eb(502,l|0,121166,12);s=B;B=0;if(s&1){s=Rb()|0;n=Q;Yua(j);$=s;aa=n;break}B=0;wa(510,m|0,W|0);n=B;B=0;if(n&1){n=Rb()|0;ba=1;ca=Q;da=n}else{B=0;ua(163,z|0,j|0,l|0,381,m|0);n=B;B=0;if(n&1)ea=1;else{B=0;eb(503,z|0,1240,229);B=0;ea=0}n=Rb()|0;s=Q;Yua(m);ba=ea;ca=s;da=n}Yua(l);Yua(j);if(ba){$=da;aa=ca}else{fa=ca;ga=da;break b}}else{n=Rb()|0;$=n;aa=Q}while(0);zb(z|0);fa=aa;ga=$}else P=48;while(0);if((P|0)==48){q=Rb()|0;fa=Q;ga=q}k[i>>2]=27468;k[V>>2]=27488;k[W>>2]=27560;Yua(c);Ava(W);vva(V);R=fa;S=ga;Qb(S|0)}while(0);X=Z;Y=_;vva(V);Qb(Y|0);return 0}function q4(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0;c=r;r=r+368|0;d=c+344|0;e=c+208|0;f=c+196|0;g=c+184|0;h=c+36|0;i=c+48|0;j=c+24|0;l=c+12|0;m=c;n=a+8|0;o=iz(a,k[n>>2]|0)|0;if((Hc[k[(k[b>>2]|0)+20>>2]&511](b)|0)!=624){q=e+56|0;s=e+4|0;k[e>>2]=27524;k[q>>2]=27544;B=0;wa(508,e+56|0,s|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;v=t;vva(q);Qb(v|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[q>>2]=27488;B=0;va(448,s|0);t=B;B=0;do if(t&1){w=Rb()|0;x=Q;y=w}else{k[s>>2]=27560;w=e+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,s|0,d|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(d);Yua(w);Ava(s);x=A;y=z;break}Yua(d);B=0;z=Ia(40,e|0,121102,50)|0;A=B;B=0;a:do if((((!(A&1)?(B=0,C=ya(k[(k[b>>2]|0)+20>>2]|0,b|0)|0,D=B,B=0,!(D&1)):0)?(B=0,D=ya(427,C|0)|0,C=B,B=0,!(C&1)):0)?(C=Lta(D)|0,B=0,E=Ia(40,z|0,D|0,C|0)|0,C=B,B=0,!(C&1)):0)?(B=0,Xa(239,E|0,0)|0,E=B,B=0,!(E&1)):0){E=Ab(20)|0;B=0;eb(502,f|0,120969,76);C=B;B=0;do if(!(C&1)){B=0;eb(502,g|0,121179,15);D=B;B=0;if(D&1){D=Rb()|0;F=Q;Yua(f);G=D;H=F;break}B=0;wa(510,h|0,s|0);F=B;B=0;if(F&1){F=Rb()|0;I=Q;J=F;K=1}else{B=0;ua(163,E|0,f|0,g|0,408,h|0);F=B;B=0;if(F&1)L=1;else{B=0;eb(503,E|0,1240,229);B=0;L=0}F=Rb()|0;D=Q;Yua(h);I=D;J=F;K=L}Yua(g);Yua(f);if(K){G=J;H=I}else{M=J;N=I;break a}}else{F=Rb()|0;G=F;H=Q}while(0);zb(E|0);M=G;N=H}else O=20;while(0);if((O|0)==20){z=Rb()|0;M=z;N=Q}k[e>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);P=N;R=M;Qb(R|0)}while(0);u=x;v=y;vva(q);Qb(v|0)}v=b+8|0;q=k[v>>2]|0;if((q|0)==(k[n>>2]|0)){n=Rqa(o>>>0>536870911?-1:o<<3)|0;if((o|0)>0){y=k[a+12>>2]|0;x=k[b+12>>2]|0;b=0;do{p[n+(b<<3)>>3]=+p[y+(b<<3)>>3]/+p[x+(b<<3)>>3];b=b+1|0}while((b|0)!=(o|0))}o=Qqa(16)|0;b=k[a+4>>2]|0;k[o>>2]=32164;B=0;a=B;B=0;if(a&1){a=Rb()|0;S=a;T=Q}else{k[o>>2]=37816;k[o+4>>2]=b;k[o+8>>2]=q;B=0;b=Xa(252,o|0,q|0)|0;q=B;B=0;if(!(q&1)){if((b|0)<=0){k[o+12>>2]=0;Tqa(n);r=c;return o|0}B=0;q=ya(422,(b>>>0>536870911?-1:b<<3)|0)|0;a=B;B=0;if(!(a&1)){k[o+12>>2]=q;TEa(q|0,n|0,b<<3|0)|0;Tqa(n);r=c;return o|0}}c=Rb()|0;S=c;T=Q}Sqa(o);P=T;R=S;Qb(R|0)}S=i+56|0;T=i+4|0;k[i>>2]=27524;k[S>>2]=27544;B=0;wa(508,i+56|0,T|0);o=B;B=0;if(o&1){o=Rb()|0;U=Q;V=o;vva(S);Qb(V|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[S>>2]=27488;B=0;va(448,T|0);o=B;B=0;do if(o&1){c=Rb()|0;W=Q;X=c}else{k[T>>2]=27560;c=i+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,T|0,d|0);n=B;B=0;if(n&1){n=Rb()|0;b=Q;Yua(d);Yua(c);Ava(T);W=b;X=n;break}Yua(d);B=0;n=Ia(40,i|0,121102,50)|0;b=B;B=0;b:do if(((!(b&1)?(B=0,q=ya(427,k[v>>2]|0)|0,a=B,B=0,!(a&1)):0)?(a=Lta(q)|0,B=0,x=Ia(40,n|0,q|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(239,x|0,0)|0,x=B,B=0,!(x&1)):0){x=Ab(20)|0;B=0;eb(502,j|0,120969,76);a=B;B=0;do if(!(a&1)){B=0;eb(502,l|0,121179,15);q=B;B=0;if(q&1){q=Rb()|0;y=Q;Yua(j);Y=q;Z=y;break}B=0;wa(510,m|0,T|0);y=B;B=0;if(y&1){y=Rb()|0;_=1;$=Q;aa=y}else{B=0;ua(163,x|0,j|0,l|0,410,m|0);y=B;B=0;if(y&1)ba=1;else{B=0;eb(503,x|0,1240,229);B=0;ba=0}y=Rb()|0;q=Q;Yua(m);_=ba;$=q;aa=y}Yua(l);Yua(j);if(_){Y=aa;Z=$}else{ca=$;da=aa;break b}}else{y=Rb()|0;Y=y;Z=Q}while(0);zb(x|0);ca=Z;da=Y}else O=46;while(0);if((O|0)==46){n=Rb()|0;ca=Q;da=n}k[i>>2]=27468;k[S>>2]=27488;k[T>>2]=27560;Yua(c);Ava(T);vva(S);P=ca;R=da;Qb(R|0)}while(0);U=W;V=X;vva(S);Qb(V|0);return 0}function r4(a,b){a=a|0;b=b|0;return}function s4(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,121195,86);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,51,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function t4(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,121195,86);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,52,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function u4(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,121195,86);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,53,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function v4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;e=c+24|0;f=c+12|0;g=c;c=a+56|0;h=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=a+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,a|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,121195,86);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,121355,13);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,55,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[a>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(E|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function w4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,121195,86);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,56,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function x4(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,121195,86);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121324,30);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,59,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function y4(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,121195,86);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121304,19);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,75,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function z4(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,121195,86);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121296,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,74,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function A4(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,121195,86);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121282,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,39,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0);return 0}function B4(a){a=a|0;return 1}function C4(a){a=a|0;return (m[(k[a>>2]|0)+24+(k[a+4>>2]<<1)>>1]|0)&4|0}function D4(a){a=a|0;return (m[(k[a>>2]|0)+24+(k[a+4>>2]<<1)>>1]|0)&1012|0}function E4(a){a=a|0;W4(k[a>>2]|0,k[a+4>>2]|0);return}function F4(a,b){a=a|0;b=b|0;M4(a,k[b>>2]|0,k[b+4>>2]|0);return}function G4(a,b){a=a|0;b=b|0;return k[(k[a>>2]|0)+(j[52932+(k[a+4>>2]<<2)+(k[b>>2]<<1)>>1]<<2)>>2]|0}function H4(a){a=a|0;return (k[a>>2]|0)+32|0}function I4(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=k[a>>2]|0;if(!d)e=0;else{f=k[a+4>>2]|0;k[d+12+(f<<2)>>2]=k[b>>2];d=k[a>>2]|0;j[d+24+(f<<1)>>1]=k[b+4>>2]|c;e=d}d=k[b>>2]|0;if(!d)return;f=k[b+4>>2]|0;k[d+12+(f<<2)>>2]=e;j[(k[b>>2]|0)+24+(f<<1)>>1]=k[a+4>>2]|c;return}function J4(a){a=a|0;return}function K4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0;f=r;r=r+368|0;g=f+344|0;h=f+208|0;i=f+196|0;l=f+184|0;m=f+36|0;n=f+48|0;o=f+24|0;p=f+12|0;q=f;s=k[b+8>>2]|0;t=k[b+44>>2]|0;if((d|c|e|0)<0){b=h+56|0;u=h+4|0;k[h>>2]=27524;k[b>>2]=27544;B=0;wa(508,h+56|0,u|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;x=v;vva(b);Qb(x|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[b>>2]=27488;B=0;va(448,u|0);v=B;B=0;do if(v&1){y=Rb()|0;z=Q;A=y}else{k[u>>2]=27560;y=h+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[h+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,u|0,g|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(g);Yua(y);Ava(u);z=D;A=C;break}Yua(g);B=0;C=Ia(40,h|0,121369,17)|0;D=B;B=0;a:do if(!(D&1)?(B=0,Xa(239,C|0,0)|0,E=B,B=0,!(E&1)):0){E=Ab(20)|0;B=0;eb(502,i|0,121387,64);F=B;B=0;do if(!(F&1)){B=0;eb(502,l|0,121452,8);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(i);I=H;J=G;break}B=0;wa(510,m|0,u|0);G=B;B=0;if(G&1){G=Rb()|0;K=G;L=Q;M=1}else{B=0;ua(163,E|0,i|0,l|0,21,m|0);G=B;B=0;if(G&1)N=1;else{B=0;eb(503,E|0,1240,229);B=0;N=0}G=Rb()|0;H=Q;Yua(m);K=G;L=H;M=N}Yua(l);Yua(i);if(M){I=L;J=K}else{O=L;P=K;break a}}else{H=Rb()|0;I=Q;J=H}while(0);zb(E|0);O=I;P=J}else R=17;while(0);if((R|0)==17){C=Rb()|0;O=Q;P=C}k[h>>2]=27468;k[b>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(b);S=O;T=P;Qb(T|0)}while(0);w=z;x=A;vva(b);Qb(x|0)}if((t|0)>(e|0)&((t|0)>(c|0)&(t|0)>(d|0))){k[a>>2]=s+(c*72|0);k[a+4>>2]=s+(d*72|0);k[a+8>>2]=s+(e*72|0);e=a+12|0;s=a+32|0;k[s>>2]=0;k[s+4>>2]=0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;j[e+16>>1]=0;r=f;return}f=n+56|0;e=n+4|0;k[n>>2]=27524;k[f>>2]=27544;B=0;wa(508,n+56|0,e|0);s=B;B=0;if(s&1){s=Rb()|0;U=Q;V=s;vva(f);Qb(V|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[f>>2]=27488;B=0;va(448,e|0);s=B;B=0;do if(s&1){a=Rb()|0;W=Q;X=a}else{k[e>>2]=27560;a=n+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[n+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,e|0,g|0);d=B;B=0;if(d&1){d=Rb()|0;c=Q;Yua(g);Yua(a);Ava(e);W=c;X=d;break}Yua(g);B=0;d=Ia(40,n|0,121461,26)|0;c=B;B=0;b:do if(!(c&1)?(B=0,Xa(239,d|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,o|0,121387,64);x=B;B=0;do if(!(x&1)){B=0;eb(502,p|0,121452,8);b=B;B=0;if(b&1){b=Rb()|0;A=Q;Yua(o);Y=b;Z=A;break}B=0;wa(510,q|0,e|0);A=B;B=0;if(A&1){A=Rb()|0;_=1;$=Q;aa=A}else{B=0;ua(163,t|0,o|0,p|0,24,q|0);A=B;B=0;if(A&1)ba=1;else{B=0;eb(503,t|0,1240,229);B=0;ba=0}A=Rb()|0;b=Q;Yua(q);_=ba;$=b;aa=A}Yua(p);Yua(o);if(_){Y=aa;Z=$}else{ca=$;da=aa;break b}}else{A=Rb()|0;Y=A;Z=Q}while(0);zb(t|0);ca=Z;da=Y}else R=41;while(0);if((R|0)==41){d=Rb()|0;ca=Q;da=d}k[n>>2]=27468;k[f>>2]=27488;k[e>>2]=27560;Yua(a);Ava(e);vva(f);S=ca;T=da;Qb(T|0)}while(0);U=W;V=X;vva(f);Qb(V|0)}function L4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;k[a>>2]=b;k[a+4>>2]=c;k[a+8>>2]=d;d=a+12|0;c=a+32|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;j[d+16>>1]=0;if(!b){b=c;k[b>>2]=-1;k[b+4>>2]=-1;k[a+40>>2]=0;return}else{a=c;k[a>>2]=0;k[a+4>>2]=0;return}}function M4(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=(m[b+24+(c<<1)>>1]|0)&3;k[a>>2]=k[b+12+(c<<2)>>2];k[a+4>>2]=d;return}function N4(a,b){a=a|0;b=b|0;return (m[a+24+(b<<1)>>1]|0)&1020|0}function O4(a,b){a=a|0;b=b|0;return (m[a+24+(b<<1)>>1]|0)&16|0}function P4(a,b){a=a|0;b=b|0;return (m[a+24+(b<<1)>>1]|0)&4|0}function Q4(a,b){a=a|0;b=b|0;return (m[a+24+((b&3)<<1)>>1]|0)&3|0}function R4(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;l=j[52944+(b<<16>>16<<1)>>1]|0;b=j[52956+(l<<1)>>1]|0;n=0;o=l;l=m[a+24+(b<<1)>>1]&3;p=a;q=k[a+12+(b<<2)>>2]|0;a:while(1){b=o;s=l;t=p;u=q;while(1){if(S4(t,b&65535,c)|0){v=s;w=u;break}x=j[52950+(b<<1)>>1]|0;y=k[t+12+(x<<2)>>2]|0;if((y|0)==(a|0)){z=n;A=30;break a}else{C=t;b=j[52950+((m[t+24+(x<<1)>>1]&3)<<1)>>1]|0;s=x;t=y;u=C}}if((n|0)>19999)break;n=n+1|0;o=j[52950+((m[w+24+(v<<1)>>1]&3)<<1)>>1]|0;l=v;p=k[w+12+(v<<2)>>2]|0;q=w}if((A|0)==30){r=d;return z|0}z=f+56|0;d=f+4|0;k[f>>2]=27524;k[z>>2]=27544;B=0;wa(508,f+56|0,d|0);A=B;B=0;if(A&1){A=Rb()|0;D=Q;E=A;vva(z);Qb(E|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[z>>2]=27488;B=0;va(448,d|0);A=B;B=0;do if(A&1){w=Rb()|0;F=Q;G=w}else{k[d>>2]=27560;w=f+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,d|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;v=Q;Yua(e);Yua(w);Ava(d);F=v;G=q;break}Yua(e);B=0;q=Ia(40,f|0,121488,8)|0;v=B;B=0;if(!(v&1)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,g|0,121387,64);v=B;B=0;do if(!(v&1)){B=0;eb(502,h|0,121497,5);p=B;B=0;if(p&1){p=Rb()|0;l=Q;Yua(g);H=l;I=p;break}B=0;wa(510,i|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;J=Q;K=p;L=1}else{B=0;ua(163,q|0,g|0,h|0,130,i|0);p=B;B=0;if(p&1)M=1;else{B=0;eb(503,q|0,1240,229);B=0;M=0}p=Rb()|0;l=Q;Yua(i);J=l;K=p;L=M}Yua(h);Yua(g);if(L){H=J;I=K}else{N=J;O=K;k[f>>2]=27468;k[z>>2]=27488;k[d>>2]=27560;Yua(w);Ava(d);vva(z);Qb(O|0)}}else{p=Rb()|0;H=Q;I=p}while(0);zb(q|0);N=H;O=I;k[f>>2]=27468;k[z>>2]=27488;k[d>>2]=27560;Yua(w);Ava(d);vva(z);Qb(O|0)}v=Rb()|0;N=Q;O=v;k[f>>2]=27468;k[z>>2]=27488;k[d>>2]=27560;Yua(w);Ava(d);vva(z);Qb(O|0)}while(0);D=F;E=G;vva(z);Qb(E|0);return 0}function S4(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0.0,$=0.0,ba=0.0,ca=0.0,da=0.0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0.0,ja=0.0,ka=0.0,la=0.0,ma=0.0,na=0.0,oa=0.0,pa=0.0,qa=0.0,ra=0.0,sa=0.0,ta=0.0,ua=0.0,va=0.0,wa=0.0,xa=0.0,ya=0,za=0,Aa=0;d=b<<16>>16;if((d+3|0)>>>0>6){e=0;return e|0}f=k[a+12+(d<<2)>>2]|0;g=a+24+(d<<1)|0;h=j[g>>1]|0;i=h<<16>>16;if((i+3|0)>>>0>6){e=0;return e|0}l=k[a+(j[52932+(d<<2)>>1]<<2)>>2]|0;n=k[a+(j[52932+(d<<2)+2>>1]<<2)>>2]|0;o=k[a+(j[52944+(d<<1)>>1]<<2)>>2]|0;d=k[f+(j[52944+(i<<1)>>1]<<2)>>2]|0;i=a+32|0;q=k[i>>2]|0;r=k[i+4>>2]|0;i=f+32|0;s=k[i>>2]|0;t=k[i+4>>2]|0;i=QEa(s|0,t|0,q|0,r|0)|0;u=Q;v=(r|0)<0;w=REa(0,0,q|0,r|0)|0;x=v?Q:r;y=(t|0)<0;z=REa(0,0,s|0,t|0)|0;A=QEa((y?z:s)|0,(y?Q:t)|0,(v?w:q)|0,x|0)|0;x=Q;w=(r|0)<(t|0)|(r|0)==(t|0)&q>>>0<s>>>0;v=w?q:s;y=w?r:t;do if(l){if(!n){w=k[o>>2]|0;z=(k[l>>2]|0)-w|0;B=k[o+4>>2]|0;C=(k[l+4>>2]|0)-B|0;D=(k[d>>2]|0)-w|0;w=(k[d+4>>2]|0)-B|0;B=bFa(w|0,((w|0)<0)<<31>>31|0,z|0,((z|0)<0)<<31>>31|0)|0;z=Q;w=bFa(D|0,((D|0)<0)<<31>>31|0,C|0,((C|0)<0)<<31>>31|0)|0;C=REa(B|0,z|0,w|0,Q|0)|0;w=Q;E=C;F=w;G=s;H=t;I=((w|0)>0|(w|0)==0&C>>>0>0)&1;J=16;break}if((o|0)!=0&(d|0)!=0){C=k[l>>2]|0;w=k[o>>2]|0;z=C-w|0;B=k[l+4>>2]|0;D=k[o+4>>2]|0;K=B-D|0;L=k[d>>2]|0;M=L-w|0;N=k[d+4>>2]|0;O=N-D|0;P=((O|0)<0)<<31>>31;R=bFa(O|0,P|0,z|0,((z|0)<0)<<31>>31|0)|0;z=Q;S=bFa(M|0,((M|0)<0)<<31>>31|0,K|0,((K|0)<0)<<31>>31|0)|0;K=REa(R|0,z|0,S|0,Q|0)|0;S=Q;z=REa(0,0,K|0,S|0)|0;R=Q;M=REa(i|0,u|0,K|0,S|0)|0;T=Q;U=(S|0)<0;V=(T|0)<0;W=REa(0,0,M|0,T|0)|0;X=QEa((V?W:M)|0,(V?Q:T)|0,(U?z:K)|0,(U?R:S)|0)|0;R=Q;U=(R|0)<(x|0)|(R|0)==(x|0)&X>>>0<A>>>0;X=U&1;R=(S|0)<(T|0)|(S|0)==(T|0)&K>>>0<M>>>0;z=R?S:T;if(((z|0)>0|(z|0)==0&(R?K:M)>>>0>0)&(U^1)){U=(v|0)==0&(y|0)==0;if(U){E=K;F=S;G=M;H=T;I=U&1;J=16}else{if(!c){U=n;R=k[U>>2]|0;z=k[U+4>>2]|0;U=l;V=k[U>>2]|0;W=k[U+4>>2]|0;U=o;Y=k[U>>2]|0;Z=k[U+4>>2]|0;_=+p[o+24>>3];$=+p[o+32>>3];ba=+p[o+40>>3];ca=+(R-V|0);da=+(z-W|0);ea=-(ca*$+da*ba);fa=ca*_+da*$;ga=+(Y-V|0);ha=+(Z-W|0);ia=-(ga*$+ha*ba);ja=ga*_+ha*$;ka=ja*ea;la=fa*ia;ma=(ka-la)*2.0;if((ma<0.0?-ma:ma)>((ka<0.0?-ka:ka)+(la<0.0?-la:la))*.001?(la=+p[d+24>>3],ka=+p[d+32>>3],na=+p[d+40>>3],oa=-(ca*ka+da*na),pa=ca*la+da*ka,da=-(ga*ka+ha*na),ca=ga*la+ha*ka,ha=ca*oa,ga=pa*da,qa=(ha-ga)*2.0,(qa<0.0?-qa:qa)>((ha<0.0?-ha:ha)+(ga<0.0?-ga:ga))*.001):0){ga=+(V+R|0)*.5;ha=+(W+z|0)*.5;ra=+(L|0);sa=+(N|0);ta=+(Y|0);ua=+(D|0);va=+(Y-R|0);wa=+(Z-z|0);xa=(va*ja-wa*ia)/ma;ma=ga+xa*ea;ea=ha+fa*xa;xa=ma-ra;fa=ea-sa;ia=ma-ta;ma=ea-ua;ea=(va*ca-wa*da)/qa;qa=ga+ea*oa;oa=ha+pa*ea;ea=qa-ra;ra=oa-sa;sa=qa-ta;ta=oa-ua;E=K;F=S;G=M;H=T;I=+aa(+(ba*(fa*fa)+(_*(xa*xa)+$*(fa*(xa*2.0)))))/+aa(+(ba*(ma*ma)+(_*(ia*ia)+$*(ma*(ia*2.0)))))+ +aa(+(na*(ra*ra)+(la*(ea*ea)+ka*(ra*(ea*2.0)))))/+aa(+(na*(ta*ta)+(la*(sa*sa)+ka*(ta*(sa*2.0)))))<2.0&1;J=16;break}else{ya=R;za=Y;Aa=V}}else{ya=k[n>>2]|0;za=w;Aa=C}C=ya-za|0;w=L-za|0;V=k[n+4>>2]|0;Y=V-D|0;D=ya-Aa|0;R=L-Aa|0;L=V-B|0;V=N-B|0;B=bFa(w|0,((w|0)<0)<<31>>31|0,C|0,((C|0)<0)<<31>>31|0)|0;C=Q;w=bFa(O|0,P|0,Y|0,((Y|0)<0)<<31>>31|0)|0;Y=QEa(w|0,Q|0,B|0,C|0)|0;sa=+(Y>>>0)+4294967296.0*+(Q|0);Y=bFa(D|0,((D|0)<0)<<31>>31|0,R|0,((R|0)<0)<<31>>31|0)|0;R=Q;D=bFa(L|0,((L|0)<0)<<31>>31|0,V|0,((V|0)<0)<<31>>31|0)|0;V=QEa(D|0,Q|0,Y|0,R|0)|0;E=K;F=S;G=M;H=T;I=(+(s>>>0)+4294967296.0*+(t|0))*sa<(+(M>>>0)+4294967296.0*+(T|0))*(+(V>>>0)+4294967296.0*+(Q|0))&1;J=16}}else{E=K;F=S;G=M;H=T;I=X;J=16}}}else{X=k[d>>2]|0;T=(k[n>>2]|0)-X|0;M=k[d+4>>2]|0;S=(k[n+4>>2]|0)-M|0;K=(k[o>>2]|0)-X|0;X=(k[o+4>>2]|0)-M|0;M=bFa(X|0,((X|0)<0)<<31>>31|0,T|0,((T|0)<0)<<31>>31|0)|0;T=Q;X=bFa(K|0,((K|0)<0)<<31>>31|0,S|0,((S|0)<0)<<31>>31|0)|0;S=REa(M|0,T|0,X|0,Q|0)|0;X=Q;E=q;F=r;G=S;H=X;I=((X|0)>0|(X|0)==0&S>>>0>0)&1;J=16}while(0);if((J|0)==16?(I|0)!=0:0){s5(a,b,f,h,o,d,E,F,G,H);e=I;return e|0}I=f+24+((h&3)<<1)|0;j[I>>1]=m[I>>1]|8;j[g>>1]=m[g>>1]|8;e=0;return e|0}function T4(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=b&3;b=k[a+12+(c<<2)>>2]|0;d=a+24+(c<<1)|0;e=m[d>>1]|0;j[d>>1]=e&55;if(!b)return;d=e&3;k[b+12+(d<<2)>>2]=a;j[b+24+(d<<1)>>1]=e&52|c;return}function U4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=b<<16>>16;k[a+12+(e<<2)>>2]=c;j[a+24+(e<<1)>>1]=d;if(!c)return;e=d<<16>>16;k[c+12+(e<<2)>>2]=a;j[c+24+(e<<1)>>1]=b;return}function V4(a,b){a=a|0;b=b|0;var c=0,d=0;c=k[a+12+(b<<2)>>2]|0;d=a+24+(b<<1)|0;if(c){b=c+24+(((m[d>>1]|0)&3)<<1)|0;j[b>>1]=m[b>>1]|0|16}j[d>>1]=m[d>>1]|0|16;return}function W4(a,b){a=a|0;b=b|0;var c=0,d=0;c=a+24+(b<<1)|0;d=(k[a+12+(b<<2)>>2]|0)+24+(((m[c>>1]|0)&3)<<1)|0;j[d>>1]=m[d>>1]|0|4;j[c>>1]=m[c>>1]|0|4;return}function X4(a){a=a|0;var b=0,c=0;b=k[a>>2]|0;if(b){k[b+64>>2]=a;j[(k[a>>2]|0)+60>>1]=0}b=a+4|0;c=k[b>>2]|0;if(c){k[c+64>>2]=a;j[(k[b>>2]|0)+60>>1]=1}b=a+8|0;c=k[b>>2]|0;if(!c)return;k[c+64>>2]=a;j[(k[b>>2]|0)+60>>1]=2;return}function Y4(a,b){a=a|0;b=b|0;var c=0,d=0;c=a+24+(b<<1)|0;d=(k[a+12+(b<<2)>>2]|0)+24+(((m[c>>1]|0)&3)<<1)|0;j[d>>1]=(m[d>>1]|0)&55;j[c>>1]=(m[c>>1]|0)&55;return}function Z4(a,b){a=a|0;b=b|0;return k[a+12+((b&3)<<2)>>2]|0}function _4(a){a=a|0;var b=0,c=0,d=0;b=a+56|0;c=a;d=c+48|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));ppa(b);k[a+52>>2]=0;return}function $4(a){a=a|0;return k[a+48>>2]|0}function a5(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=a+64|0;e=k[d>>2]|0;if((e|0)!=0?(f=a+60|0,a=j[f>>1]|0,(a&65535)<3):0){g=R4(e,a,c)|0;if(!b){k[d>>2]=0;j[f>>1]=0;h=g}else h=g}else h=0;return h|0}function b5(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0.0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0.0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Pe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,Ve=0,We=0,Xe=0,Ye=0,Ze=0,_e=0,$e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,mf=0,nf=0.0,of=0.0,pf=0,qf=0,rf=0,sf=0,tf=0,uf=0,vf=0,wf=0,xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0.0,Df=0,Ef=0,Ff=0,Gf=0,Hf=0,If=0,Jf=0,Kf=0,Lf=0,Mf=0,Nf=0,Of=0,Pf=0,Qf=0,Rf=0,Sf=0,Tf=0,Uf=0,Vf=0,Wf=0,Xf=0,Yf=0,Zf=0,_f=0;c=r;r=r+4080|0;d=c+4064|0;e=c+3736|0;f=c+4052|0;g=c+3584|0;h=c+4040|0;i=c+4028|0;l=c+4016|0;m=c+3448|0;n=c+4004|0;o=c+3992|0;q=c+3980|0;s=c+3296|0;t=c+3968|0;u=c+3956|0;v=c+3944|0;w=c+3160|0;x=c+3932|0;y=c+3008|0;z=c+3920|0;A=c+2872|0;C=c+3908|0;D=c+2720|0;E=c+3896|0;F=c+2584|0;H=c+3884|0;I=c+3872|0;J=c+3720|0;K=c+2432|0;L=c+3432|0;M=c+2296|0;N=c+3144|0;O=c+2144|0;P=c+2856|0;R=c+2008|0;S=c+2568|0;T=c+1872|0;U=c+2280|0;V=c+1720|0;W=c+1856|0;X=c+1584|0;Y=c+1568|0;Z=c+1432|0;_=c+1280|0;$=c+1296|0;ba=c+1128|0;ca=c+844|0;da=c+832|0;ea=c+1144|0;fa=c+544|0;ga=c+392|0;ha=c+240|0;ia=c+992|0;ja=c+228|0;ka=c+216|0;la=c+204|0;ma=c+856|0;na=c+192|0;oa=c+696|0;pa=c+180|0;qa=c+168|0;ra=c+156|0;sa=c+560|0;ta=c+144|0;xa=c+48|0;za=c+408|0;Aa=c+132|0;Ba=c+120|0;Ca=c+108|0;Da=c+256|0;Ea=c+96|0;Fa=c+84|0;Ga=c+72|0;Ha=c+24|0;Ja=c;a:do if(b){Ka=k[b+108>>2]|0;La=+p[b+48>>3]*3.141592653589793/180.0;if((Ka|0)>1){Ma=e+56|0;Na=e+4|0;k[e>>2]=27524;k[Ma>>2]=27544;B=0;wa(508,e+56|0,Na|0);Oa=B;B=0;if(Oa&1){Oa=Rb()|0;Pa=Q;Qa=Oa;vva(Ma);Qb(Qa|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[Ma>>2]=27488;B=0;va(448,Na|0);Oa=B;B=0;do if(Oa&1){Ra=Rb()|0;Sa=Q;Ta=Ra}else{k[Na>>2]=27560;Ra=e+36|0;k[Ra>>2]=0;k[Ra+4>>2]=0;k[Ra+8>>2]=0;k[Ra+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Na|0,d|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;Va=Q;Yua(d);Yua(Ra);Ava(Na);Sa=Va;Ta=Ua;break}Yua(d);B=0;Ia(40,e|0,121577,49)|0;Ua=B;B=0;do if(!(Ua&1)?(B=0,wa(510,f|0,Na|0),Va=B,B=0,!(Va&1)):0){B=0;ya(424,f|0)|0;Va=B;B=0;if(Va&1){Va=Rb()|0;Wa=Q;Yua(f);Ya=Wa;Za=Va;break}else{Yua(f);k[e>>2]=27468;k[Ma>>2]=27488;k[Na>>2]=27560;Yua(Ra);Ava(Na);vva(Ma);_a=La;$a=Ka;break a}}else ab=15;while(0);if((ab|0)==15){Ua=Rb()|0;Ya=Q;Za=Ua}k[e>>2]=27468;k[Ma>>2]=27488;k[Na>>2]=27560;Yua(Ra);Ava(Na);vva(Ma);bb=Za;cb=Ya;Qb(bb|0)}while(0);Pa=Sa;Qa=Ta;vva(Ma);Qb(Qa|0)}else{_a=La;$a=Ka}}else{_a=.17453292519943295;$a=0}while(0);Qa=a+48|0;Ta=k[Qa>>2]|0;if((Ta|0)>=1?(Sa=a+44|0,Pa=k[Sa>>2]|0,(Pa|0)>=1):0){if(_a>=0.0)p[(k[a>>2]|0)+80>>3]=_a;Ya=Qqa(20)|0;B=0;eb(522,Ya|0,Ta*3|0,Pa|0);Pa=B;B=0;if(Pa&1){Pa=Rb()|0;Ta=Q;Sqa(Ya);bb=Pa;cb=Ta;Qb(bb|0)}Ta=k[Qa>>2]|0;Pa=Ta*3|0;Za=Rqa(Pa>>>0>1073741823?-1:Pa<<2)|0;if((Ta|0)>0)WEa(Za|0,-1,((Pa|0)>1?Pa:1)<<2|0)|0;Pa=a+52|0;Ta=k[Pa>>2]|0;if((Ta|0)>0){e=a+16|0;f=a+8|0;b=0;do{Na=k[e>>2]|0;Oa=k[f>>2]|0;aqa(Ya,((k[Na+(b*24|0)>>2]|0)-Oa|0)/72|0,((k[Na+(b*24|0)+4>>2]|0)-Oa|0)/72|0)|0;b=b+1|0;Oa=k[Pa>>2]|0}while((b|0)<(Oa|0));db=Oa}else db=Ta;if((db|0)!=($pa(Ya)|0)){Tqa(Za);db=m+56|0;Ta=m+4|0;k[m>>2]=27524;k[db>>2]=27544;B=0;wa(508,m+56|0,Ta|0);b=B;B=0;if(b&1){b=Rb()|0;fb=Q;gb=b;vva(db);Qb(gb|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[db>>2]=27488;B=0;va(448,Ta|0);b=B;B=0;do if(b&1){f=Rb()|0;hb=Q;ib=f}else{k[Ta>>2]=27560;f=m+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[m+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Ta|0,d|0);e=B;B=0;if(e&1){e=Rb()|0;Oa=Q;Yua(d);Yua(f);Ava(Ta);hb=Oa;ib=e;break}Yua(d);B=0;e=Ia(40,m|0,121686,44)|0;Oa=B;B=0;b:do if((((!(Oa&1)?(B=0,Na=Xa(253,e|0,k[Pa>>2]|0)|0,Ua=B,B=0,!(Ua&1)):0)?(B=0,Ua=Ia(40,Na|0,121731,7)|0,Na=B,B=0,!(Na&1)):0)?(B=0,Na=ya(435,Ya|0)|0,Va=B,B=0,!(Va&1)):0)?(B=0,Va=Xa(253,Ua|0,Na|0)|0,Na=B,B=0,!(Na&1)):0){B=0;Xa(239,Va|0,0)|0;Va=B;B=0;if(Va&1){ab=72;break}Va=Ab(20)|0;B=0;eb(502,n|0,121503,60);Na=B;B=0;do if(!(Na&1)){B=0;eb(502,o|0,121664,21);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;Wa=Q;Yua(n);jb=Wa;kb=Ua;break}B=0;wa(510,q|0,Ta|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;lb=1;mb=Ua;nb=Q}else{B=0;ua(163,Va|0,n|0,o|0,1316,q|0);Ua=B;B=0;if(Ua&1)ob=1;else{B=0;eb(503,Va|0,1240,229);B=0;ob=0}Ua=Rb()|0;Wa=Q;Yua(q);lb=ob;mb=Ua;nb=Wa}Yua(o);Yua(n);if(lb){jb=nb;kb=mb}else{pb=mb;qb=nb;break b}}else{Wa=Rb()|0;jb=Q;kb=Wa}while(0);zb(Va|0);pb=kb;qb=jb}else ab=72;while(0);if((ab|0)==72){e=Rb()|0;pb=e;qb=Q}k[m>>2]=27468;k[db>>2]=27488;k[Ta>>2]=27560;Yua(f);Ava(Ta);vva(db);bb=pb;cb=qb;Qb(bb|0)}while(0);fb=hb;gb=ib;vva(db);Qb(gb|0)}gb=k[Pa>>2]|0;c:do if((k[Qa>>2]|0)>0){db=a+12|0;ib=a+8|0;hb=0;d:while(1){fb=hb*3|0;qb=0;do{pb=k[db>>2]|0;Ta=j[52932+(qb<<2)>>1]|0;m=k[ib>>2]|0;jb=j[52932+(qb<<2)+2>>1]|0;kb=aqa(Ya,((k[pb+(hb*48|0)+(Ta<<2)>>2]|0)-m|0)/72|0,((k[pb+(hb*48|0)+(jb<<2)>>2]|0)-m|0)/72|0)|0;m=O4((k[db>>2]|0)+(hb*48|0)|0,qb)|0;pb=Za+(kb<<2)|0;nb=k[pb>>2]|0;if((nb|0)==-1)rb=qb+fb|0;else{if((nb|0)<=-1){sb=Ta;tb=jb;ub=kb;vb=pb;wb=hb;xb=qb;break d}if(Z4((k[db>>2]|0)+(hb*48|0)|0,qb)|0){ab=88;break d}jb=k[pb>>2]|0;if(Z4((k[db>>2]|0)+(((jb|0)/3|0)*48|0)|0,(jb|0)%3|0)|0){ab=88;break d}jb=k[db>>2]|0;Ta=k[pb>>2]|0;U4(jb+(hb*48|0)|0,qb&65535,jb+(((Ta|0)/3|0)*48|0)|0,((Ta|0)%3|0)&65535);if(m)V4((k[db>>2]|0)+(hb*48|0)|0,qb);if((kb|0)<(k[Pa>>2]|0))W4((k[db>>2]|0)+(hb*48|0)|0,qb);rb=-2-(k[pb>>2]|0)|0}k[pb>>2]=rb;qb=qb+1|0}while((qb|0)<3);hb=hb+1|0;if((hb|0)>=(k[Qa>>2]|0))break c}if((ab|0)==88){hb=s+56|0;f=s+4|0;k[s>>2]=27524;k[hb>>2]=27544;B=0;wa(508,s+56|0,f|0);qb=B;B=0;if(qb&1){qb=Rb()|0;yb=Q;Bb=qb;vva(hb);Qb(Bb|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[hb>>2]=27488;B=0;va(448,f|0);qb=B;B=0;do if(qb&1){fb=Rb()|0;Cb=Q;Db=fb}else{k[f>>2]=27560;fb=s+36|0;k[fb>>2]=0;k[fb+4>>2]=0;k[fb+8>>2]=0;k[fb+12>>2]=0;k[s+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,f|0,d|0);Va=B;B=0;if(Va&1){Va=Rb()|0;pb=Q;Yua(d);Yua(fb);Ava(f);Cb=pb;Db=Va;break}Yua(d);B=0;Va=Ia(40,s|0,121739,87)|0;pb=B;B=0;e:do if(!(pb&1)?(B=0,Xa(239,Va|0,0)|0,kb=B,B=0,!(kb&1)):0){kb=Ab(20)|0;B=0;eb(502,t|0,121503,60);m=B;B=0;do if(!(m&1)){B=0;eb(502,u|0,121664,21);Ta=B;B=0;if(Ta&1){Ta=Rb()|0;jb=Q;Yua(t);Eb=jb;Fb=Ta;break}B=0;wa(510,v|0,f|0);Ta=B;B=0;if(Ta&1){Ta=Rb()|0;Gb=1;Hb=Ta;Ib=Q}else{B=0;ua(163,kb|0,t|0,u|0,1336,v|0);Ta=B;B=0;if(Ta&1)Jb=1;else{B=0;eb(503,kb|0,1240,229);B=0;Jb=0}Ta=Rb()|0;jb=Q;Yua(v);Gb=Jb;Hb=Ta;Ib=jb}Yua(u);Yua(t);if(Gb){Eb=Ib;Fb=Hb}else{Kb=Hb;Lb=Ib;break e}}else{jb=Rb()|0;Eb=Q;Fb=jb}while(0);zb(kb|0);Kb=Fb;Lb=Eb}else ab=103;while(0);if((ab|0)==103){Va=Rb()|0;Kb=Va;Lb=Q}k[s>>2]=27468;k[hb>>2]=27488;k[f>>2]=27560;Yua(fb);Ava(f);vva(hb);bb=Kb;cb=Lb;Qb(bb|0)}while(0);yb=Cb;Bb=Db;vva(hb);Qb(Bb|0)}f=w+56|0;qb=w+4|0;k[w>>2]=27524;k[f>>2]=27544;B=0;wa(508,w+56|0,qb|0);Va=B;B=0;if(Va&1){Va=Rb()|0;Mb=Q;Nb=Va;vva(f);Qb(Nb|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[f>>2]=27488;B=0;va(448,qb|0);Va=B;B=0;do if(Va&1){pb=Rb()|0;Ob=Q;Pb=pb}else{k[qb>>2]=27560;pb=w+36|0;k[pb>>2]=0;k[pb+4>>2]=0;k[pb+8>>2]=0;k[pb+12>>2]=0;k[w+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,qb|0,d|0);m=B;B=0;if(m&1){m=Rb()|0;jb=Q;Yua(d);Yua(pb);Ava(qb);Ob=jb;Pb=m;break}Yua(d);B=0;m=Ia(40,w|0,121827,10)|0;jb=B;B=0;do if(((!(jb&1)?(B=0,Ta=Xa(253,m|0,((k[(k[db>>2]|0)+(wb*48|0)+(sb<<2)>>2]|0)-(k[ib>>2]|0)|0)/72|0|0)|0,nb=B,B=0,!(nb&1)):0)?(B=0,nb=Ia(40,Ta|0,121838,1)|0,Ta=B,B=0,!(Ta&1)):0)?(B=0,Ta=Xa(253,nb|0,((k[(k[db>>2]|0)+(wb*48|0)+(tb<<2)>>2]|0)-(k[ib>>2]|0)|0)/72|0|0)|0,nb=B,B=0,!(nb&1)):0){B=0;nb=Ia(40,Ta|0,121840,36)|0;Ta=B;B=0;if(Ta&1){ab=195;break}B=0;Ta=Xa(253,nb|0,ub|0)|0;nb=B;B=0;if(nb&1){ab=195;break}B=0;Ia(40,Ta|0,145593,2)|0;Ta=B;B=0;if(Ta&1){ab=195;break}B=0;wa(510,x|0,qb|0);Ta=B;B=0;if(Ta&1){ab=195;break}B=0;ya(424,x|0)|0;Ta=B;B=0;if(Ta&1){Ta=Rb()|0;nb=Q;Yua(x);Sb=nb;Tb=Ta;break}Yua(x);k[w>>2]=27468;k[f>>2]=27488;k[qb>>2]=27560;Yua(pb);Ava(qb);vva(f);Ta=y+56|0;nb=y+4|0;k[y>>2]=27524;k[Ta>>2]=27544;B=0;wa(508,y+56|0,nb|0);mb=B;B=0;if(mb&1){mb=Rb()|0;Ub=Q;Vb=mb;vva(Ta);Qb(Vb|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[Ta>>2]=27488;B=0;va(448,nb|0);mb=B;B=0;do if(mb&1){lb=Rb()|0;Wb=Q;Xb=lb}else{k[nb>>2]=27560;lb=y+36|0;k[lb>>2]=0;k[lb+4>>2]=0;k[lb+8>>2]=0;k[lb+12>>2]=0;k[y+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,nb|0,d|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;Yua(d);Yua(lb);Ava(nb);Wb=o;Xb=n;break}Yua(d);B=0;n=Ia(40,y|0,121877,5)|0;o=B;B=0;do if(o&1)ab=198;else{B=0;ob=Xa(242,n|0,xb|0)|0;q=B;B=0;if(q&1){ab=198;break}B=0;q=Ia(40,ob|0,121883,13)|0;ob=B;B=0;if(ob&1){ab=198;break}B=0;ob=Xa(242,q|0,wb|0)|0;q=B;B=0;if(q&1){ab=198;break}B=0;Ia(40,ob|0,149177,1)|0;ob=B;B=0;if(ob&1){ab=198;break}B=0;wa(510,z|0,nb|0);ob=B;B=0;if(ob&1){ab=198;break}B=0;ya(424,z|0)|0;ob=B;B=0;if(ob&1){ob=Rb()|0;q=Q;Yua(z);Yb=ob;Zb=q;break}Yua(z);k[y>>2]=27468;k[Ta>>2]=27488;k[nb>>2]=27560;Yua(lb);Ava(nb);vva(Ta);q=A+56|0;ob=A+4|0;k[A>>2]=27524;k[q>>2]=27544;B=0;wa(508,A+56|0,ob|0);b=B;B=0;if(b&1){b=Rb()|0;_b=Q;$b=b;vva(q);Qb($b|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[q>>2]=27488;B=0;va(448,ob|0);b=B;B=0;do if(b&1){e=Rb()|0;ac=Q;bc=e}else{k[ob>>2]=27560;e=A+36|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[A+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ob|0,d|0);Oa=B;B=0;if(Oa&1){Oa=Rb()|0;Ka=Q;Yua(d);Yua(e);Ava(ob);ac=Ka;bc=Oa;break}Yua(d);B=0;Oa=Ia(40,A|0,121877,5)|0;Ka=B;B=0;do if(Ka&1)ab=201;else{B=0;Ma=Xa(253,Oa|0,(2-(k[vb>>2]|0)|0)%3|0|0)|0;Na=B;B=0;if(Na&1){ab=201;break}B=0;Na=Ia(40,Ma|0,121883,13)|0;Ma=B;B=0;if(Ma&1){ab=201;break}B=0;Ma=Xa(253,Na|0,(2-(k[vb>>2]|0)|0)/3|0|0)|0;Na=B;B=0;if(Na&1){ab=201;break}B=0;Ia(40,Ma|0,149177,1)|0;Ma=B;B=0;if(Ma&1){ab=201;break}B=0;wa(510,C|0,ob|0);Ma=B;B=0;if(Ma&1){ab=201;break}B=0;ya(424,C|0)|0;Ma=B;B=0;if(Ma&1){Ma=Rb()|0;Na=Q;Yua(C);cc=Ma;dc=Na;break}Yua(C);k[A>>2]=27468;k[q>>2]=27488;k[ob>>2]=27560;Yua(e);Ava(ob);vva(q);Na=D+56|0;Ma=D+4|0;k[D>>2]=27524;k[Na>>2]=27544;B=0;wa(508,D+56|0,Ma|0);Ra=B;B=0;if(Ra&1){Ra=Rb()|0;ec=Q;fc=Ra;vva(Na);Qb(fc|0)}k[D+128>>2]=0;k[D+132>>2]=-1;k[D>>2]=27468;k[Na>>2]=27488;B=0;va(448,Ma|0);Ra=B;B=0;do if(Ra&1){Wa=Rb()|0;gc=Q;hc=Wa}else{k[Ma>>2]=27560;Wa=D+36|0;k[Wa>>2]=0;k[Wa+4>>2]=0;k[Wa+8>>2]=0;k[Wa+12>>2]=0;k[D+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Ma|0,d|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;ic=Q;Yua(d);Yua(Wa);Ava(Ma);gc=ic;hc=Ua;break}Yua(d);B=0;Ua=Ia(40,D|0,121877,5)|0;ic=B;B=0;do if(ic&1)ab=204;else{jc=2-(k[vb>>2]|0)|0;B=0;kc=Xa(254,(k[db>>2]|0)+(((jc|0)/3|0)*48|0)|0,(jc|0)%3|0|0)|0;jc=B;B=0;if(jc&1){ab=204;break}B=0;jc=Xa(255,Ua|0,kc|0)|0;kc=B;B=0;if(kc&1){ab=204;break}B=0;kc=Ia(40,jc|0,121883,13)|0;jc=B;B=0;if(jc&1){ab=204;break}jc=2-(k[vb>>2]|0)|0;B=0;lc=Xa(256,(k[db>>2]|0)+(((jc|0)/3|0)*48|0)|0,(jc|0)%3|0|0)|0;jc=B;B=0;if(jc&1){ab=204;break}B=0;jc=Xa(253,kc|0,(lc-(k[db>>2]|0)|0)/48|0|0)|0;lc=B;B=0;if(lc&1){ab=204;break}B=0;Ia(40,jc|0,149177,1)|0;jc=B;B=0;if(jc&1){ab=204;break}B=0;wa(510,E|0,Ma|0);jc=B;B=0;if(jc&1){ab=204;break}B=0;ya(424,E|0)|0;jc=B;B=0;if(jc&1){jc=Rb()|0;lc=Q;Yua(E);mc=jc;nc=lc;break}Yua(E);k[D>>2]=27468;k[Na>>2]=27488;k[Ma>>2]=27560;Yua(Wa);Ava(Ma);vva(Na);lc=F+56|0;jc=F+4|0;k[F>>2]=27524;k[lc>>2]=27544;B=0;wa(508,F+56|0,jc|0);kc=B;B=0;if(kc&1){kc=Rb()|0;oc=Q;pc=kc;vva(lc);Qb(pc|0)}k[F+128>>2]=0;k[F+132>>2]=-1;k[F>>2]=27468;k[lc>>2]=27488;B=0;va(448,jc|0);kc=B;B=0;do if(kc&1){qc=Rb()|0;rc=Q;sc=qc}else{k[jc>>2]=27560;qc=F+36|0;k[qc>>2]=0;k[qc+4>>2]=0;k[qc+8>>2]=0;k[qc+12>>2]=0;k[F+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,jc|0,d|0);tc=B;B=0;if(tc&1){tc=Rb()|0;uc=Q;Yua(d);Yua(qc);Ava(jc);rc=uc;sc=tc;break}Yua(d);B=0;tc=Ia(40,F|0,121897,40)|0;uc=B;B=0;f:do if(uc&1)ab=207;else{B=0;Xa(239,tc|0,0)|0;vc=B;B=0;if(vc&1){ab=207;break}vc=Ab(20)|0;B=0;eb(502,H|0,121503,60);wc=B;B=0;do if(!(wc&1)){B=0;eb(502,I|0,121664,21);xc=B;B=0;if(xc&1){xc=Rb()|0;yc=Q;Yua(H);zc=yc;Ac=xc;break}B=0;wa(510,J|0,jc|0);xc=B;B=0;if(xc&1){xc=Rb()|0;Bc=xc;Cc=Q;Dc=1}else{B=0;ua(163,vc|0,H|0,I|0,1354,J|0);xc=B;B=0;if(xc&1)Ec=1;else{B=0;eb(503,vc|0,1240,229);B=0;Ec=0}xc=Rb()|0;yc=Q;Yua(J);Bc=xc;Cc=yc;Dc=Ec}Yua(I);Yua(H);if(Dc){zc=Cc;Ac=Bc}else{Fc=Bc;Gc=Cc;break f}}else{yc=Rb()|0;zc=Q;Ac=yc}while(0);zb(vc|0);Fc=Ac;Gc=zc}while(0);if((ab|0)==207){tc=Rb()|0;Fc=tc;Gc=Q}k[F>>2]=27468;k[lc>>2]=27488;k[jc>>2]=27560;Yua(qc);Ava(jc);vva(lc);bb=Fc;cb=Gc;Qb(bb|0)}while(0);oc=rc;pc=sc;vva(lc);Qb(pc|0)}while(0);if((ab|0)==204){Ua=Rb()|0;mc=Ua;nc=Q}k[D>>2]=27468;k[Na>>2]=27488;k[Ma>>2]=27560;Yua(Wa);Ava(Ma);vva(Na);bb=mc;cb=nc;Qb(bb|0)}while(0);ec=gc;fc=hc;vva(Na);Qb(fc|0)}while(0);if((ab|0)==201){Oa=Rb()|0;cc=Oa;dc=Q}k[A>>2]=27468;k[q>>2]=27488;k[ob>>2]=27560;Yua(e);Ava(ob);vva(q);bb=cc;cb=dc;Qb(bb|0)}while(0);_b=ac;$b=bc;vva(q);Qb($b|0)}while(0);if((ab|0)==198){n=Rb()|0;Yb=n;Zb=Q}k[y>>2]=27468;k[Ta>>2]=27488;k[nb>>2]=27560;Yua(lb);Ava(nb);vva(Ta);bb=Yb;cb=Zb;Qb(bb|0)}while(0);Ub=Wb;Vb=Xb;vva(Ta);Qb(Vb|0)}else ab=195;while(0);if((ab|0)==195){m=Rb()|0;Sb=Q;Tb=m}k[w>>2]=27468;k[f>>2]=27488;k[qb>>2]=27560;Yua(pb);Ava(qb);vva(f);bb=Tb;cb=Sb;Qb(bb|0)}while(0);Mb=Ob;Nb=Pb;vva(f);Qb(Nb|0)}while(0);Nb=$pa(Ya)|0;Pb=k[Ya+12>>2]|0;if(Pb)Tqa(Pb);Pb=k[Ya+16>>2]|0;if(Pb)Tqa(Pb);Sqa(Ya);g:do if(($a|0)>5){Ya=K+56|0;Pb=K+4|0;k[K>>2]=27524;k[Ya>>2]=27544;B=0;wa(508,K+56|0,Pb|0);Ob=B;B=0;if(Ob&1){Ob=Rb()|0;Hc=Q;Ic=Ob;vva(Ya);Qb(Ic|0)}k[K+128>>2]=0;k[K+132>>2]=-1;k[K>>2]=27468;k[Ya>>2]=27488;B=0;va(448,Pb|0);Ob=B;B=0;do if(Ob&1){Mb=Rb()|0;Jc=Q;Kc=Mb}else{k[Pb>>2]=27560;Mb=K+36|0;k[Mb>>2]=0;k[Mb+4>>2]=0;k[Mb+8>>2]=0;k[Mb+12>>2]=0;k[K+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Pb|0,d|0);Sb=B;B=0;if(Sb&1){Sb=Rb()|0;Tb=Q;Yua(d);Yua(Mb);Ava(Pb);Jc=Tb;Kc=Sb;break}Yua(d);B=0;Ia(40,K|0,121938,23)|0;Sb=B;B=0;do if(Sb&1)ab=301;else{B=0;wa(510,L|0,Pb|0);Tb=B;B=0;if(Tb&1){ab=301;break}B=0;ya(424,L|0)|0;Tb=B;B=0;if(Tb&1){Tb=Rb()|0;w=Q;Yua(L);Lc=Tb;Mc=w;break}Yua(L);k[K>>2]=27468;k[Ya>>2]=27488;k[Pb>>2]=27560;Yua(Mb);Ava(Pb);vva(Ya);w=M+56|0;Tb=M+4|0;k[M>>2]=27524;k[w>>2]=27544;B=0;wa(508,M+56|0,Tb|0);Vb=B;B=0;if(Vb&1){Vb=Rb()|0;Nc=Q;Oc=Vb;vva(w);Qb(Oc|0)}k[M+128>>2]=0;k[M+132>>2]=-1;k[M>>2]=27468;k[w>>2]=27488;B=0;va(448,Tb|0);Vb=B;B=0;do if(Vb&1){Xb=Rb()|0;Pc=Q;Qc=Xb}else{k[Tb>>2]=27560;Xb=M+36|0;k[Xb>>2]=0;k[Xb+4>>2]=0;k[Xb+8>>2]=0;k[Xb+12>>2]=0;k[M+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Tb|0,d|0);Wb=B;B=0;if(Wb&1){Wb=Rb()|0;Ub=Q;Yua(d);Yua(Xb);Ava(Tb);Pc=Ub;Qc=Wb;break}Yua(d);B=0;Wb=Ia(40,M|0,121962,38)|0;Ub=B;B=0;do if(Ub&1)ab=304;else{B=0;Zb=Xa(253,Wb|0,k[Sa>>2]|0)|0;Yb=B;B=0;if(Yb&1){ab=304;break}B=0;Ia(40,Zb|0,149177,1)|0;Zb=B;B=0;if(Zb&1){ab=304;break}B=0;wa(510,N|0,Tb|0);Zb=B;B=0;if(Zb&1){ab=304;break}B=0;ya(424,N|0)|0;Zb=B;B=0;if(Zb&1){Zb=Rb()|0;Yb=Q;Yua(N);Rc=Zb;Sc=Yb;break}Yua(N);k[M>>2]=27468;k[w>>2]=27488;k[Tb>>2]=27560;Yua(Xb);Ava(Tb);vva(w);Yb=O+56|0;Zb=O+4|0;k[O>>2]=27524;k[Yb>>2]=27544;B=0;wa(508,O+56|0,Zb|0);y=B;B=0;if(y&1){y=Rb()|0;Tc=Q;Uc=y;vva(Yb);Qb(Uc|0)}k[O+128>>2]=0;k[O+132>>2]=-1;k[O>>2]=27468;k[Yb>>2]=27488;B=0;va(448,Zb|0);y=B;B=0;do if(y&1){$b=Rb()|0;Vc=Q;Wc=$b}else{k[Zb>>2]=27560;$b=O+36|0;k[$b>>2]=0;k[$b+4>>2]=0;k[$b+8>>2]=0;k[$b+12>>2]=0;k[O+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Zb|0,d|0);bc=B;B=0;if(bc&1){bc=Rb()|0;ac=Q;Yua(d);Yua($b);Ava(Zb);Vc=ac;Wc=bc;break}Yua(d);B=0;bc=Ia(40,O|0,122001,38)|0;ac=B;B=0;do if(ac&1)ab=307;else{B=0;_b=Xa(253,bc|0,k[Qa>>2]|0)|0;dc=B;B=0;if(dc&1){ab=307;break}B=0;Ia(40,_b|0,149177,1)|0;_b=B;B=0;if(_b&1){ab=307;break}B=0;wa(510,P|0,Zb|0);_b=B;B=0;if(_b&1){ab=307;break}B=0;ya(424,P|0)|0;_b=B;B=0;if(_b&1){_b=Rb()|0;dc=Q;Yua(P);Xc=_b;Yc=dc;break}Yua(P);k[O>>2]=27468;k[Yb>>2]=27488;k[Zb>>2]=27560;Yua($b);Ava(Zb);vva(Yb);dc=R+56|0;_b=R+4|0;k[R>>2]=27524;k[dc>>2]=27544;B=0;wa(508,R+56|0,_b|0);cc=B;B=0;if(cc&1){cc=Rb()|0;Zc=Q;_c=cc;vva(dc);Qb(_c|0)}k[R+128>>2]=0;k[R+132>>2]=-1;k[R>>2]=27468;k[dc>>2]=27488;B=0;va(448,_b|0);cc=B;B=0;do if(cc&1){A=Rb()|0;$c=Q;ad=A}else{k[_b>>2]=27560;A=R+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[R+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,_b|0,d|0);fc=B;B=0;if(fc&1){fc=Rb()|0;hc=Q;Yua(d);Yua(A);Ava(_b);$c=hc;ad=fc;break}Yua(d);B=0;fc=Ia(40,R|0,122040,38)|0;hc=B;B=0;do if(hc&1)ab=310;else{B=0;gc=Xa(253,fc|0,k[Pa>>2]|0)|0;ec=B;B=0;if(ec&1){ab=310;break}B=0;Ia(40,gc|0,149177,1)|0;gc=B;B=0;if(gc&1){ab=310;break}B=0;wa(510,S|0,_b|0);gc=B;B=0;if(gc&1){ab=310;break}B=0;ya(424,S|0)|0;gc=B;B=0;if(gc&1){gc=Rb()|0;ec=Q;Yua(S);bd=ec;cd=gc;break}Yua(S);k[R>>2]=27468;k[dc>>2]=27488;k[_b>>2]=27560;Yua(A);Ava(_b);vva(dc);gc=T+56|0;ec=T+4|0;k[T>>2]=27524;k[gc>>2]=27544;B=0;wa(508,T+56|0,ec|0);nc=B;B=0;if(nc&1){nc=Rb()|0;dd=Q;ed=nc;vva(gc);Qb(ed|0)}k[T+128>>2]=0;k[T+132>>2]=-1;k[T>>2]=27468;k[gc>>2]=27488;B=0;va(448,ec|0);nc=B;B=0;do if(nc&1){mc=Rb()|0;fd=Q;gd=mc}else{k[ec>>2]=27560;mc=T+36|0;k[mc>>2]=0;k[mc+4>>2]=0;k[mc+8>>2]=0;k[mc+12>>2]=0;k[T+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ec|0,d|0);D=B;B=0;if(D&1){D=Rb()|0;pc=Q;Yua(d);Yua(mc);Ava(ec);fd=pc;gd=D;break}Yua(d);B=0;D=Ia(40,T|0,122079,38)|0;pc=B;B=0;do if(pc&1)ab=313;else{B=0;sc=Xa(253,D|0,Nb|0)|0;rc=B;B=0;if(rc&1){ab=313;break}B=0;Ia(40,sc|0,149177,1)|0;sc=B;B=0;if(sc&1){ab=313;break}B=0;wa(510,U|0,ec|0);sc=B;B=0;if(sc&1){ab=313;break}B=0;ya(424,U|0)|0;sc=B;B=0;if(sc&1){sc=Rb()|0;rc=Q;Yua(U);hd=sc;id=rc;break}Yua(U);k[T>>2]=27468;k[gc>>2]=27488;k[ec>>2]=27560;Yua(mc);Ava(ec);vva(gc);rc=V+56|0;sc=V+4|0;k[V>>2]=27524;k[rc>>2]=27544;B=0;wa(508,V+56|0,sc|0);oc=B;B=0;if(oc&1){oc=Rb()|0;jd=Q;kd=oc;vva(rc);Qb(kd|0)}k[V+128>>2]=0;k[V+132>>2]=-1;k[V>>2]=27468;k[rc>>2]=27488;B=0;va(448,sc|0);oc=B;B=0;do if(oc&1){Gc=Rb()|0;ld=Q;md=Gc}else{k[sc>>2]=27560;Gc=V+36|0;k[Gc>>2]=0;k[Gc+4>>2]=0;k[Gc+8>>2]=0;k[Gc+12>>2]=0;k[V+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,sc|0,d|0);Fc=B;B=0;if(Fc&1){Fc=Rb()|0;F=Q;Yua(d);Yua(Gc);Ava(sc);ld=F;md=Fc;break}Yua(d);B=0;Fc=Ia(40,V|0,122118,45)|0;F=B;B=0;do if(!(F&1)){B=0;zc=Xa(253,Fc|0,(k[Qa>>2]|0)-Nb+(k[Sa>>2]|0)|0)|0;Ac=B;B=0;if(Ac&1){ab=316;break}B=0;Ia(40,zc|0,149177,1)|0;zc=B;B=0;if(zc&1){ab=316;break}B=0;wa(510,W|0,sc|0);zc=B;B=0;if(zc&1){ab=316;break}B=0;ya(424,W|0)|0;zc=B;B=0;if(zc&1){zc=Rb()|0;Ac=Q;Yua(W);nd=zc;od=Ac;break}else{Yua(W);k[V>>2]=27468;k[rc>>2]=27488;k[sc>>2]=27560;Yua(Gc);Ava(sc);vva(rc);break g}}else ab=316;while(0);if((ab|0)==316){Fc=Rb()|0;nd=Fc;od=Q}k[V>>2]=27468;k[rc>>2]=27488;k[sc>>2]=27560;Yua(Gc);Ava(sc);vva(rc);bb=nd;cb=od;Qb(bb|0)}while(0);jd=ld;kd=md;vva(rc);Qb(kd|0)}while(0);if((ab|0)==313){D=Rb()|0;hd=D;id=Q}k[T>>2]=27468;k[gc>>2]=27488;k[ec>>2]=27560;Yua(mc);Ava(ec);vva(gc);bb=hd;cb=id;Qb(bb|0)}while(0);dd=fd;ed=gd;vva(gc);Qb(ed|0)}while(0);if((ab|0)==310){fc=Rb()|0;bd=Q;cd=fc}k[R>>2]=27468;k[dc>>2]=27488;k[_b>>2]=27560;Yua(A);Ava(_b);vva(dc);bb=cd;cb=bd;Qb(bb|0)}while(0);Zc=$c;_c=ad;vva(dc);Qb(_c|0)}while(0);if((ab|0)==307){bc=Rb()|0;Xc=bc;Yc=Q}k[O>>2]=27468;k[Yb>>2]=27488;k[Zb>>2]=27560;Yua($b);Ava(Zb);vva(Yb);bb=Xc;cb=Yc;Qb(bb|0)}while(0);Tc=Vc;Uc=Wc;vva(Yb);Qb(Uc|0)}while(0);if((ab|0)==304){Wb=Rb()|0;Rc=Wb;Sc=Q}k[M>>2]=27468;k[w>>2]=27488;k[Tb>>2]=27560;Yua(Xb);Ava(Tb);vva(w);bb=Rc;cb=Sc;Qb(bb|0)}while(0);Nc=Pc;Oc=Qc;vva(w);Qb(Oc|0)}while(0);if((ab|0)==301){Sb=Rb()|0;Lc=Sb;Mc=Q}k[K>>2]=27468;k[Ya>>2]=27488;k[Pb>>2]=27560;Yua(Mb);Ava(Pb);vva(Ya);bb=Lc;cb=Mc;Qb(bb|0)}while(0);Hc=Jc;Ic=Kc;vva(Ya);Qb(Ic|0)}while(0);Ic=(Nb|0)>0;if(Ic){Kc=a+12|0;Jc=0;Hc=0;Mc=0;while(1){Lc=k[Za+(Jc<<2)>>2]|0;if((Lc|0)<-1){K=-2-Lc|0;Oc=(K|0)/3|0;Qc=Z4((k[Kc>>2]|0)+(Oc*48|0)|0,(K|0)%3|0)|0;pd=(((Jc|0)<(gb|0)?1:(k[(k[Kc>>2]|0)+(Oc*48|0)+40>>2]|0)!=(k[Qc+40>>2]|0))&1)+Hc|0;qd=Mc}else{pd=Hc;qd=(Lc>>>31^1)+Mc|0}Jc=Jc+1|0;if((Jc|0)==(Nb|0)){rd=pd;sd=qd;break}else{Hc=pd;Mc=qd}}}else{rd=0;sd=0}qd=rd+sd|0;do if(qd){k[Pa>>2]=qd;sd=a+16|0;rd=k[sd>>2]|0;Mc=Rqa(qd>>>0>178956970?-1:qd*24|0)|0;k[sd>>2]=Mc;h:do if(($a|0)>4){Mc=X+56|0;pd=X+4|0;k[X>>2]=27524;k[Mc>>2]=27544;B=0;wa(508,X+56|0,pd|0);Hc=B;B=0;if(Hc&1){Hc=Rb()|0;td=Q;ud=Hc;vva(Mc);Qb(ud|0)}k[X+128>>2]=0;k[X+132>>2]=-1;k[X>>2]=27468;k[Mc>>2]=27488;B=0;va(448,pd|0);Hc=B;B=0;do if(Hc&1){Jc=Rb()|0;vd=Q;wd=Jc}else{k[pd>>2]=27560;Jc=X+36|0;k[Jc>>2]=0;k[Jc+4>>2]=0;k[Jc+8>>2]=0;k[Jc+12>>2]=0;k[X+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,pd|0,d|0);Kc=B;B=0;if(Kc&1){Kc=Rb()|0;Lc=Q;Yua(d);Yua(Jc);Ava(pd);vd=Lc;wd=Kc;break}Yua(d);B=0;Kc=Ia(40,X|0,122164,29)|0;Lc=B;B=0;do if(!(Lc&1)){B=0;Qc=Xa(253,Kc|0,k[Pa>>2]|0)|0;Oc=B;B=0;if(Oc&1){ab=341;break}B=0;Ia(40,Qc|0,149177,1)|0;Qc=B;B=0;if(Qc&1){ab=341;break}B=0;wa(510,Y|0,pd|0);Qc=B;B=0;if(Qc&1){ab=341;break}B=0;ya(424,Y|0)|0;Qc=B;B=0;if(Qc&1){Qc=Rb()|0;Oc=Q;Yua(Y);xd=Qc;yd=Oc;break}else{Yua(Y);k[X>>2]=27468;k[Mc>>2]=27488;k[pd>>2]=27560;Yua(Jc);Ava(pd);vva(Mc);break h}}else ab=341;while(0);if((ab|0)==341){Kc=Rb()|0;xd=Kc;yd=Q}k[X>>2]=27468;k[Mc>>2]=27488;k[pd>>2]=27560;Yua(Jc);Ava(pd);vva(Mc);bb=xd;cb=yd;Qb(bb|0)}while(0);td=vd;ud=wd;vva(Mc);Qb(ud|0)}while(0);i:do if(Ic){Ya=a+12|0;pd=Z+56|0;Hc=Z+4|0;Mb=Z+56|0;Kc=Z+128|0;Lc=Z+132|0;w=Z+36|0;Oc=Z+52|0;Qc=0;K=0;j:while(1){Pc=k[Za+(Qc<<2)>>2]|0;do if((Pc|0)<-1){Nc=-2-Pc|0;Sc=(Nc|0)/3|0;Rc=(Nc|0)%3|0;Nc=Z4((k[Ya>>2]|0)+(Sc*48|0)|0,Rc)|0;if((Qc|0)<(gb|0)?1:(k[(k[Ya>>2]|0)+(Sc*48|0)+40>>2]|0)!=(k[Nc+40>>2]|0)){zd=Sc;Ad=Rc;ab=348}else Bd=K}else{if((Pc|0)<=-1){Bd=K;break}zd=(Pc|0)/3|0;Ad=(Pc|0)%3|0;ab=348}while(0);do if((ab|0)==348){ab=0;Pc=K+1|0;if((K|0)<=-1){Bd=Pc;break}if((K|0)>=(k[Pa>>2]|0)){Bd=Pc;break}k[(k[sd>>2]|0)+(K*24|0)>>2]=k[(k[Ya>>2]|0)+(zd*48|0)+(j[52932+(Ad<<2)>>1]<<2)>>2];k[(k[sd>>2]|0)+(K*24|0)+4>>2]=k[(k[Ya>>2]|0)+(zd*48|0)+(j[52932+(Ad<<2)+2>>1]<<2)>>2];Jc=k[sd>>2]|0;Rc=Jc+(K*24|0)+12|0;k[Rc>>2]=0;if((Qc|0)>=(gb|0)){Sc=$4(k[Jc+(K*24|0)>>2]|0)|0;Nc=$4(k[(k[sd>>2]|0)+(K*24|0)+4>>2]|0)|0;k[(k[sd>>2]|0)+(K*24|0)+8>>2]=(Sc|0)<(Nc|0)?Sc:Nc;Bd=Pc;break}k[Jc+(K*24|0)+8>>2]=k[rd+(Qc*24|0)+8>>2];k[Rc>>2]=k[rd+(Qc*24|0)+12>>2];k[Z>>2]=27524;k[pd>>2]=27544;B=0;wa(508,Mb|0,Hc|0);Rc=B;B=0;if(Rc&1){ab=355;break j}k[Kc>>2]=0;k[Lc>>2]=-1;k[Z>>2]=27468;k[pd>>2]=27488;B=0;va(448,Hc|0);Rc=B;B=0;if(Rc&1){ab=356;break j}k[Hc>>2]=27560;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[Oc>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Hc|0,d|0);Rc=B;B=0;if(Rc&1){ab=354;break j}Yua(d);B=0;Ia(40,Z|0,122194,9)|0;Rc=B;B=0;if(Rc&1){ab=363;break j}B=0;wa(510,_|0,Hc|0);Rc=B;B=0;if(Rc&1){ab=363;break j}B=0;ya(424,_|0)|0;Rc=B;B=0;if(Rc&1){ab=364;break j}Yua(_);k[Z>>2]=27468;k[pd>>2]=27488;k[Hc>>2]=27560;Yua(w);Ava(Hc);vva(pd);Bd=Pc}while(0);Qc=Qc+1|0;if((Qc|0)>=(Nb|0)){Cd=Bd;break i}else K=Bd}if((ab|0)==354){K=Rb()|0;Qc=Q;Yua(d);Yua(w);Ava(Hc);Dd=Qc;Ed=K;ab=357}else if((ab|0)==355){K=Rb()|0;Fd=Q;Gd=K;vva(pd);Qb(Gd|0)}else if((ab|0)==356){K=Rb()|0;Dd=Q;Ed=K;ab=357}else if((ab|0)==363){K=Rb()|0;Hd=K;Id=Q;ab=365}else if((ab|0)==364){K=Rb()|0;Qc=Q;Yua(_);Hd=K;Id=Qc;ab=365}if((ab|0)==357){Fd=Dd;Gd=Ed;vva(pd);Qb(Gd|0)}else if((ab|0)==365){k[Z>>2]=27468;k[pd>>2]=27488;k[Hc>>2]=27560;Yua(w);Ava(Hc);vva(pd);bb=Hd;cb=Id;Qb(bb|0)}}else Cd=0;while(0);if((Cd|0)==(k[Pa>>2]|0)){if(!rd)break;Tqa(rd);break}sd=$+56|0;Qc=$+4|0;k[$>>2]=27524;k[sd>>2]=27544;B=0;wa(508,$+56|0,Qc|0);K=B;B=0;if(K&1){K=Rb()|0;Jd=Q;Kd=K;vva(sd);Qb(Kd|0)}k[$+128>>2]=0;k[$+132>>2]=-1;k[$>>2]=27468;k[sd>>2]=27488;B=0;va(448,Qc|0);K=B;B=0;do if(K&1){Oc=Rb()|0;Ld=Q;Md=Oc}else{k[Qc>>2]=27560;Oc=$+36|0;k[Oc>>2]=0;k[Oc+4>>2]=0;k[Oc+8>>2]=0;k[Oc+12>>2]=0;k[$+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Qc|0,d|0);Lc=B;B=0;if(Lc&1){Lc=Rb()|0;Kc=Q;Yua(d);Yua(Oc);Ava(Qc);Ld=Kc;Md=Lc;break}Yua(d);B=0;Lc=Ia(40,$|0,122204,64)|0;Kc=B;B=0;k:do if(Kc&1)ab=384;else{B=0;Xa(239,Lc|0,0)|0;Mb=B;B=0;if(Mb&1){ab=384;break}Mb=Ab(20)|0;B=0;eb(502,ba|0,121503,60);Ya=B;B=0;do if(!(Ya&1)){B=0;eb(502,ca|0,121664,21);Mc=B;B=0;if(Mc&1){Mc=Rb()|0;Pc=Q;Yua(ba);Nd=Mc;Od=Pc;break}B=0;wa(510,da|0,Qc|0);Pc=B;B=0;if(Pc&1){Pc=Rb()|0;Pd=1;Qd=Pc;Rd=Q}else{B=0;ua(163,Mb|0,ba|0,ca|0,1436,da|0);Pc=B;B=0;if(Pc&1)Sd=1;else{B=0;eb(503,Mb|0,1240,229);B=0;Sd=0}Pc=Rb()|0;Mc=Q;Yua(da);Pd=Sd;Qd=Pc;Rd=Mc}Yua(ca);Yua(ba);if(Pd){Nd=Qd;Od=Rd}else{Td=Qd;Ud=Rd;break k}}else{Mc=Rb()|0;Nd=Mc;Od=Q}while(0);zb(Mb|0);Td=Nd;Ud=Od}while(0);if((ab|0)==384){Lc=Rb()|0;Td=Lc;Ud=Q}k[$>>2]=27468;k[sd>>2]=27488;k[Qc>>2]=27560;Yua(Oc);Ava(Qc);vva(sd);bb=Td;cb=Ud;Qb(bb|0)}while(0);Jd=Ld;Kd=Md;vva(sd);Qb(Kd|0)}while(0);Kd=k[Sa>>2]|0;if((Kd|0)>0){Md=k[a+8>>2]|0;Ld=0;do{k[Md+(Ld*72|0)+64>>2]=0;Ld=Ld+1|0;Jd=k[Sa>>2]|0}while((Ld|0)<(Jd|0));Vd=Jd}else Vd=Kd;Kd=k[Pa>>2]|0;if((Kd|0)>0){Ld=k[a+16>>2]|0;Md=0;do{Jd=(k[Ld+(Md*24|0)>>2]|0)+64|0;k[Jd>>2]=(k[Jd>>2]|0)+1;Jd=(k[Ld+(Md*24|0)+4>>2]|0)+64|0;k[Jd>>2]=(k[Jd>>2]|0)+1;Md=Md+1|0;Jd=k[Pa>>2]|0}while((Md|0)<(Jd|0));Wd=Jd;Xd=k[Sa>>2]|0;Yd=Wd}else{Xd=Vd;Yd=Kd}if((Xd|0)>0){Xd=k[a+8>>2]|0;Kd=0;do{Vd=Xd+(Kd*72|0)+64|0;k[Vd>>2]=(k[Vd>>2]|0)==2?-1:-2;Kd=Kd+1|0}while((Kd|0)<(k[Sa>>2]|0));Zd=k[Pa>>2]|0}else Zd=Yd;l:do if((Zd|0)>0){Yd=a+16|0;Kd=0;m:while(1){Xd=Kd<<1;Vd=k[Yd>>2]|0;Wd=k[Vd+(Kd*24|0)>>2]|0;Md=Wd+64|0;Ld=k[Md>>2]|0;do if((Ld|0)<0){k[Vd+(Kd*24|0)+16>>2]=0;if((Ld|0)!=-1)break;k[Md>>2]=Xd}else{Jd=(Ld|0)%2|0;Ud=(Ld|0)/2|0;if((Wd|0)!=(k[Vd+(Ud*24|0)+(Jd<<2)>>2]|0))break m;k[Vd+(Kd*24|0)+16>>2]=Vd+(Ud*24|0);Td=k[Yd>>2]|0;k[Td+(Ud*24|0)+16+(Jd<<2)>>2]=Td+(Kd*24|0);k[Md>>2]=-3}while(0);Md=k[Yd>>2]|0;Vd=k[Md+(Kd*24|0)+4>>2]|0;Wd=Vd+64|0;Ld=k[Wd>>2]|0;do if((Ld|0)<0){k[Md+(Kd*24|0)+20>>2]=0;if((Ld|0)!=-1)break;k[Wd>>2]=Xd|1}else{Oc=(Ld|0)%2|0;Td=(Ld|0)/2|0;if((Vd|0)!=(k[Md+(Td*24|0)+(Oc<<2)>>2]|0))break m;k[Md+(Kd*24|0)+20>>2]=Md+(Td*24|0);Jd=k[Yd>>2]|0;k[Jd+(Td*24|0)+16+(Oc<<2)>>2]=Jd+(Kd*24|0);k[Wd>>2]=-3}while(0);Kd=Kd+1|0;if((Kd|0)>=(k[Pa>>2]|0))break l}Kd=ea+56|0;Yd=ea+4|0;k[ea>>2]=27524;k[Kd>>2]=27544;B=0;wa(508,ea+56|0,Yd|0);sd=B;B=0;if(sd&1){sd=Rb()|0;_d=Q;$d=sd;vva(Kd);Qb($d|0)}k[ea+128>>2]=0;k[ea+132>>2]=-1;k[ea>>2]=27468;k[Kd>>2]=27488;B=0;va(448,Yd|0);sd=B;B=0;do if(sd&1){Wd=Rb()|0;ae=Q;be=Wd}else{k[Yd>>2]=27560;Wd=ea+36|0;k[Wd>>2]=0;k[Wd+4>>2]=0;k[Wd+8>>2]=0;k[Wd+12>>2]=0;k[ea+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Yd|0,d|0);Md=B;B=0;if(Md&1){Md=Rb()|0;Vd=Q;Yua(d);Yua(Wd);Ava(Yd);ae=Vd;be=Md;break}Yua(d);B=0;Md=Ia(40,ea|0,122269,78)|0;Vd=B;B=0;n:do if(Vd&1)ab=426;else{B=0;Xa(239,Md|0,0)|0;Ld=B;B=0;if(Ld&1){ab=426;break}Ld=Ab(20)|0;B=0;eb(502,fa|0,121503,60);Xd=B;B=0;do if(!(Xd&1)){B=0;eb(502,ga|0,121664,21);Jd=B;B=0;if(Jd&1){Jd=Rb()|0;Oc=Q;Yua(fa);ce=Oc;de=Jd;break}B=0;wa(510,ha|0,Yd|0);Jd=B;B=0;if(Jd&1){Jd=Rb()|0;ee=1;fe=Jd;ge=Q}else{B=0;ua(163,Ld|0,fa|0,ga|0,1481,ha|0);Jd=B;B=0;if(Jd&1)he=1;else{B=0;eb(503,Ld|0,1240,229);B=0;he=0}Jd=Rb()|0;Oc=Q;Yua(ha);ee=he;fe=Jd;ge=Oc}Yua(ga);Yua(fa);if(ee){ce=ge;de=fe}else{ie=fe;je=ge;break n}}else{Oc=Rb()|0;ce=Q;de=Oc}while(0);zb(Ld|0);ie=de;je=ce}while(0);if((ab|0)==426){Md=Rb()|0;ie=Md;je=Q}k[ea>>2]=27468;k[Kd>>2]=27488;k[Yd>>2]=27560;Yua(Wd);Ava(Yd);vva(Kd);bb=ie;cb=je;Qb(bb|0)}while(0);_d=ae;$d=be;vva(Kd);Qb($d|0)}while(0);$d=a+60|0;if(k[$d>>2]|0){be=ia+56|0;ae=ia+4|0;k[ia>>2]=27524;k[be>>2]=27544;B=0;wa(508,ia+56|0,ae|0);_d=B;B=0;if(_d&1){_d=Rb()|0;ke=Q;le=_d;vva(be);Qb(le|0)}k[ia+128>>2]=0;k[ia+132>>2]=-1;k[ia>>2]=27468;k[be>>2]=27488;B=0;va(448,ae|0);_d=B;B=0;do if(_d&1){je=Rb()|0;me=Q;ne=je}else{k[ae>>2]=27560;je=ia+36|0;k[je>>2]=0;k[je+4>>2]=0;k[je+8>>2]=0;k[je+12>>2]=0;k[ia+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ae|0,d|0);ie=B;B=0;if(ie&1){ie=Rb()|0;ea=Q;Yua(d);Yua(je);Ava(ae);me=ea;ne=ie;break}Yua(d);B=0;ie=Ia(40,ia|0,122348,24)|0;ea=B;B=0;o:do if(ea&1)ab=452;else{B=0;Xa(239,ie|0,0)|0;ce=B;B=0;if(ce&1){ab=452;break}ce=Ab(20)|0;B=0;eb(502,ja|0,121503,60);de=B;B=0;do if(!(de&1)){B=0;eb(502,ka|0,121664,21);ge=B;B=0;if(ge&1){ge=Rb()|0;fe=Q;Yua(ja);oe=ge;pe=fe;break}B=0;wa(510,la|0,ae|0);fe=B;B=0;if(fe&1){fe=Rb()|0;qe=1;re=fe;se=Q}else{B=0;ua(163,ce|0,ja|0,ka|0,1498,la|0);fe=B;B=0;if(fe&1)te=1;else{B=0;eb(503,ce|0,1240,229);B=0;te=0}fe=Rb()|0;ge=Q;Yua(la);qe=te;re=fe;se=ge}Yua(ka);Yua(ja);if(qe){oe=re;pe=se}else{ue=re;ve=se;break o}}else{ge=Rb()|0;oe=ge;pe=Q}while(0);zb(ce|0);ue=oe;ve=pe}while(0);if((ab|0)==452){ie=Rb()|0;ue=ie;ve=Q}k[ia>>2]=27468;k[be>>2]=27488;k[ae>>2]=27560;Yua(je);Ava(ae);vva(be);bb=ue;cb=ve;Qb(bb|0)}while(0);ke=me;le=ne;vva(be);Qb(le|0)}k[$d>>2]=0;le=k[Qa>>2]|0;be=Rqa(le>>>0>1073741823?-1:le<<2)|0;if((le|0)>0){WEa(be|0,-1,((le|0)>1?le:1)<<2|0)|0;ne=a+12|0;me=Za+4|0;ke=0;ve=le;le=0;while(1){ue=be+(le<<2)|0;if((k[ue>>2]|0)<0){k[ue>>2]=ke;ue=k[(k[ne>>2]|0)+(le*48|0)+40>>2]|0;k[Za>>2]=le;k[me>>2]=0;ae=1;p:while(1){ia=Za+(ae<<2)|0;pe=Za+(ae+-1<<2)|0;oe=k[ia>>2]|0;k[ia>>2]=oe+1;q:do if((oe|0)<3){se=oe;r:while(1){re=(k[ne>>2]|0)+((k[pe>>2]|0)*48|0)|0;qe=Z4(re,se)|0;do if((qe|0)!=0&(P4(re,se)|0)==0){ja=(qe-(k[ne>>2]|0)|0)/48|0;ka=be+(ja<<2)|0;if((k[ka>>2]|0)!=-1)break;if((k[qe+40>>2]|0)==(ue|0)){we=ja;xe=ka;break r}}while(0);se=k[ia>>2]|0;k[ia>>2]=se+1;if((se|0)>=3)break q}se=k[$d>>2]|0;k[xe>>2]=se;k[Za+(ae+1<<2)>>2]=we;Ld=ae+2|0;k[Za+(Ld<<2)>>2]=0;if((ae|0)>-2){ae=Ld;continue p}else{ye=se;break p}}while(0);if((ae|0)>2)ae=ae+-2|0;else{ab=471;break}}if((ab|0)==471){ab=0;ye=k[$d>>2]|0}ae=ye+1|0;k[$d>>2]=ae;ze=k[Qa>>2]|0;Ae=ae}else{ze=ve;Ae=ke}le=le+1|0;if((le|0)>=(ze|0)){Be=Ae;break}else{ke=Ae;ve=ze}}}else Be=0;ze=($a|0)>3;s:do if(ze){$a=ma+56|0;ve=ma+4|0;k[ma>>2]=27524;k[$a>>2]=27544;B=0;wa(508,ma+56|0,ve|0);Ae=B;B=0;if(Ae&1){Ae=Rb()|0;Ce=Q;De=Ae;vva($a);Qb(De|0)}k[ma+128>>2]=0;k[ma+132>>2]=-1;k[ma>>2]=27468;k[$a>>2]=27488;B=0;va(448,ve|0);Ae=B;B=0;do if(Ae&1){ke=Rb()|0;Ee=Q;Fe=ke}else{k[ve>>2]=27560;ke=ma+36|0;k[ke>>2]=0;k[ke+4>>2]=0;k[ke+8>>2]=0;k[ke+12>>2]=0;k[ma+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ve|0,d|0);le=B;B=0;if(le&1){le=Rb()|0;ye=Q;Yua(d);Yua(ke);Ava(ve);Ee=ye;Fe=le;break}Yua(d);B=0;le=Ia(40,ma|0,122373,33)|0;ye=B;B=0;do if(!(ye&1)){B=0;we=Xa(253,le|0,k[$d>>2]|0)|0;xe=B;B=0;if(xe&1){ab=489;break}B=0;Ia(40,we|0,149177,1)|0;we=B;B=0;if(we&1){ab=489;break}B=0;wa(510,na|0,ve|0);we=B;B=0;if(we&1){ab=489;break}B=0;ya(424,na|0)|0;we=B;B=0;if(we&1){we=Rb()|0;xe=Q;Yua(na);Ge=we;He=xe;break}else{Yua(na);k[ma>>2]=27468;k[$a>>2]=27488;k[ve>>2]=27560;Yua(ke);Ava(ve);vva($a);Ie=k[$d>>2]|0;break s}}else ab=489;while(0);if((ab|0)==489){le=Rb()|0;Ge=le;He=Q}k[ma>>2]=27468;k[$a>>2]=27488;k[ve>>2]=27560;Yua(ke);Ava(ve);vva($a);bb=Ge;cb=He;Qb(bb|0)}while(0);Ce=Ee;De=Fe;vva($a);Qb(De|0)}else Ie=Be;while(0);Be=Rqa(Ie>>>0>268435455?-1:Ie<<4)|0;De=a+28|0;k[De>>2]=Be;if((Ie|0)>0){Fe=0;do{k[Be+(Fe<<4)>>2]=0;Fe=Fe+1|0}while((Fe|0)<(Ie|0))}if((k[Qa>>2]|0)>0){Fe=a+12|0;Be=0;Ee=0;while(1){Ce=be+(Be<<2)|0;He=Z4((k[Fe>>2]|0)+(Be*48|0)|0,0)|0;if((He|0)!=0?(Ge=k[Fe>>2]|0,(k[He+40>>2]|0)==(k[Ge+(Be*48|0)+40>>2]|0)):0){Je=Ge;Ke=Ee}else ab=498;do if((ab|0)==498){ab=0;Ge=k[Ce>>2]|0;He=k[De>>2]|0;ma=He+(Ge<<4)|0;na=k[Fe>>2]|0;if(k[ma>>2]|0){Je=na;Ke=Ee;break}k[ma>>2]=na+(Be*48|0);k[He+(Ge<<4)+4>>2]=k[na+(Be*48|0)+40>>2];k[He+(Ge<<4)+8>>2]=0;k[He+(Ge<<4)+12>>2]=0;Je=na;Ke=Ee+1|0}while(0);$a=Z4(Je+(Be*48|0)|0,1)|0;if(($a|0)!=0?(na=k[Fe>>2]|0,(k[$a+40>>2]|0)==(k[na+(Be*48|0)+40>>2]|0)):0){Le=na;Me=Ke}else ab=652;do if((ab|0)==652){ab=0;na=k[Ce>>2]|0;$a=k[De>>2]|0;Ge=$a+(na<<4)|0;He=k[Fe>>2]|0;if(k[Ge>>2]|0){Le=He;Me=Ke;break}k[Ge>>2]=He+(Be*48|0);k[$a+(na<<4)+4>>2]=k[He+(Be*48|0)+40>>2];k[$a+(na<<4)+8>>2]=1;k[$a+(na<<4)+12>>2]=0;Le=He;Me=Ke+1|0}while(0);He=Z4(Le+(Be*48|0)|0,2)|0;if((He|0)!=0?(k[He+40>>2]|0)==(k[(k[Fe>>2]|0)+(Be*48|0)+40>>2]|0):0)Ne=Me;else ab=656;do if((ab|0)==656){ab=0;He=k[Ce>>2]|0;na=k[De>>2]|0;$a=na+(He<<4)|0;if(k[$a>>2]|0){Ne=Me;break}Ge=k[Fe>>2]|0;k[$a>>2]=Ge+(Be*48|0);k[na+(He<<4)+4>>2]=k[Ge+(Be*48|0)+40>>2];k[na+(He<<4)+8>>2]=2;k[na+(He<<4)+12>>2]=0;Ne=Me+1|0}while(0);Be=Be+1|0;if((Be|0)>=(k[Qa>>2]|0)){Oe=Ne;break}else Ee=Ne}Pe=k[$d>>2]|0;Qe=Oe}else{Pe=Ie;Qe=0}Tqa(be);if((Qe|0)!=(Pe|0)){Pe=oa+56|0;Qe=oa+4|0;k[oa>>2]=27524;k[Pe>>2]=27544;B=0;wa(508,oa+56|0,Qe|0);be=B;B=0;if(be&1){be=Rb()|0;Re=Q;Se=be;vva(Pe);Qb(Se|0)}k[oa+128>>2]=0;k[oa+132>>2]=-1;k[oa>>2]=27468;k[Pe>>2]=27488;B=0;va(448,Qe|0);be=B;B=0;do if(be&1){Ie=Rb()|0;Te=Q;Ue=Ie}else{k[Qe>>2]=27560;Ie=oa+36|0;k[Ie>>2]=0;k[Ie+4>>2]=0;k[Ie+8>>2]=0;k[Ie+12>>2]=0;k[oa+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Qe|0,d|0);Oe=B;B=0;if(Oe&1){Oe=Rb()|0;Ne=Q;Yua(d);Yua(Ie);Ava(Qe);Te=Ne;Ue=Oe;break}Yua(d);B=0;Oe=Ia(40,oa|0,122407,16)|0;Ne=B;B=0;t:do if(Ne&1)ab=518;else{B=0;Xa(239,Oe|0,0)|0;Ee=B;B=0;if(Ee&1){ab=518;break}Ee=Ab(20)|0;B=0;eb(502,pa|0,121503,60);Be=B;B=0;do if(!(Be&1)){B=0;eb(502,qa|0,121664,21);Me=B;B=0;if(Me&1){Me=Rb()|0;Fe=Q;Yua(pa);Ve=Me;We=Fe;break}B=0;wa(510,ra|0,Qe|0);Fe=B;B=0;if(Fe&1){Fe=Rb()|0;Xe=1;Ye=Fe;Ze=Q}else{B=0;ua(163,Ee|0,pa|0,qa|0,1567,ra|0);Fe=B;B=0;if(Fe&1)_e=1;else{B=0;eb(503,Ee|0,1240,229);B=0;_e=0}Fe=Rb()|0;Me=Q;Yua(ra);Xe=_e;Ye=Fe;Ze=Me}Yua(qa);Yua(pa);if(Xe){Ve=Ye;We=Ze}else{$e=Ye;af=Ze;break t}}else{Me=Rb()|0;Ve=Me;We=Q}while(0);zb(Ee|0);$e=Ve;af=We}while(0);if((ab|0)==518){Oe=Rb()|0;$e=Oe;af=Q}k[oa>>2]=27468;k[Pe>>2]=27488;k[Qe>>2]=27560;Yua(Ie);Ava(Qe);vva(Pe);bb=$e;cb=af;Qb(bb|0)}while(0);Re=Te;Se=Ue;vva(Pe);Qb(Se|0)}Tqa(Za);Za=k[Sa>>2]|0;Se=Rqa(Za>>>0>1073741823?-1:Za<<2)|0;Pe=(Za|0)>0;if(Pe)WEa(Se|0,-1,((Za|0)>1?Za:1)<<2|0)|0;Ue=k[Pa>>2]|0;if((Ue|0)>0){Te=k[a+16>>2]|0;Re=k[a+8>>2]|0;af=0;do{k[Se+((((k[Te+(af*24|0)>>2]|0)-Re|0)/72|0)<<2)>>2]=0;k[Se+((((k[Te+(af*24|0)+4>>2]|0)-Re|0)/72|0)<<2)>>2]=0;af=af+1|0}while((af|0)<(Ue|0))}if(Pe){Pe=0;af=0;while(1){Re=Se+(Pe<<2)|0;if(!(k[Re>>2]|0)){k[Re>>2]=af;bf=af+1|0}else bf=af;Pe=Pe+1|0;if((Pe|0)>=(Za|0)){cf=bf;break}else af=bf}}else cf=0;k[(k[a>>2]|0)+4>>2]=cf;k[(k[a>>2]|0)+8>>2]=Ue;bf=Rqa(cf>>>0>59652323?-1:cf*72|0)|0;do if(!cf)df=Ue;else{af=bf+(cf*72|0)|0;Za=bf;while(1){B=0;va(530,Za|0);Pe=B;B=0;if(Pe&1)break;k[Za+68>>2]=0;Za=Za+72|0;if((Za|0)==(af|0)){ab=539;break}}if((ab|0)==539){df=k[Pa>>2]|0;break}af=Rb()|0;Za=Q;Tqa(bf);bb=af;cb=Za;Qb(bb|0)}while(0);k[(k[a>>2]|0)+20>>2]=bf;bf=Rqa(df>>>0>59652323?-1:df*72|0)|0;if(df){cf=bf+(df*72|0)|0;df=bf;do{Ue=df+16|0;df=df+72|0;k[Ue>>2]=0;k[Ue+4>>2]=0;k[Ue+8>>2]=0;k[Ue+12>>2]=0;k[Ue+16>>2]=0;k[Ue+20>>2]=0;k[Ue+24>>2]=0;k[Ue+28>>2]=0}while((df|0)!=(cf|0))}k[(k[a>>2]|0)+24>>2]=bf;bf=k[$d>>2]|0;k[(k[a>>2]|0)+12>>2]=bf;cf=Rqa(bf>>>0>357913941?-1:bf*12|0)|0;k[(k[a>>2]|0)+32>>2]=cf;u:do if(ze){cf=sa+56|0;bf=sa+4|0;k[sa>>2]=27524;k[cf>>2]=27544;B=0;wa(508,sa+56|0,bf|0);df=B;B=0;if(df&1){df=Rb()|0;ef=Q;ff=df;vva(cf);Qb(ff|0)}k[sa+128>>2]=0;k[sa+132>>2]=-1;k[sa>>2]=27468;k[cf>>2]=27488;B=0;va(448,bf|0);df=B;B=0;do if(df&1){Ue=Rb()|0;gf=Q;hf=Ue}else{k[bf>>2]=27560;Ue=sa+36|0;k[Ue>>2]=0;k[Ue+4>>2]=0;k[Ue+8>>2]=0;k[Ue+12>>2]=0;k[sa+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,bf|0,d|0);Za=B;B=0;if(Za&1){Za=Rb()|0;af=Q;Yua(d);Yua(Ue);Ava(bf);gf=af;hf=Za;break}Yua(d);B=0;Za=Ia(40,sa|0,122424,24)|0;af=B;B=0;do if(!(af&1)){B=0;Ie=Xa(253,Za|0,k[(k[a>>2]|0)+4>>2]|0)|0;Pe=B;B=0;if(Pe&1){ab=561;break}B=0;Pe=Ia(40,Ie|0,122449,22)|0;Ie=B;B=0;if(Ie&1){ab=561;break}B=0;Ie=Xa(253,Pe|0,k[(k[a>>2]|0)+8>>2]|0)|0;Pe=B;B=0;if(Pe&1){ab=561;break}B=0;Ia(40,Ie|0,149177,1)|0;Ie=B;B=0;if(Ie&1){ab=561;break}B=0;wa(510,ta|0,bf|0);Ie=B;B=0;if(Ie&1){ab=561;break}B=0;ya(424,ta|0)|0;Ie=B;B=0;if(Ie&1){Ie=Rb()|0;Pe=Q;Yua(ta);jf=Ie;kf=Pe;break}else{Yua(ta);k[sa>>2]=27468;k[cf>>2]=27488;k[bf>>2]=27560;Yua(Ue);Ava(bf);vva(cf);break u}}else ab=561;while(0);if((ab|0)==561){Za=Rb()|0;jf=Za;kf=Q}k[sa>>2]=27468;k[cf>>2]=27488;k[bf>>2]=27560;Yua(Ue);Ava(bf);vva(cf);bb=jf;cb=kf;Qb(bb|0)}while(0);ef=gf;ff=hf;vva(cf);Qb(ff|0)}while(0);ff=k[(k[a>>2]|0)+4>>2]|0;k[a+152>>2]=ff;hf=Rqa(ff>>>0>178956970?-1:ff*24|0)|0;v:do if(ff){gf=hf+(ff*24|0)|0;ef=hf;while(1){B=0;va(531,ef|0);kf=B;B=0;if(kf&1)break;ef=ef+24|0;if((ef|0)==(gf|0))break v}gf=Rb()|0;ef=Q;Tqa(hf);bb=gf;cb=ef;Qb(bb|0)}while(0);ff=a+156|0;k[ff>>2]=hf;k[a+160>>2]=0;k[a+164>>2]=0;hf=k[Sa>>2]|0;if((hf|0)>0){ef=a+8|0;gf=hf;hf=0;while(1){cf=k[Se+(hf<<2)>>2]|0;if((cf|0)>-1){kf=k[(k[a>>2]|0)+20>>2]|0;jf=kf+(cf*72|0)|0;sa=(k[ef>>2]|0)+(hf*72|0)|0;ta=jf+68|0;do{k[jf>>2]=k[sa>>2];jf=jf+4|0;sa=sa+4|0}while((jf|0)<(ta|0));k[kf+(cf*72|0)+64>>2]=0;sa=(k[ff>>2]|0)+(cf*24|0)|0;dqa(xa,(k[ef>>2]|0)+(hf*72|0)|0,(k[(k[a>>2]|0)+20>>2]|0)+(cf*72|0)|0);k[sa>>2]=k[xa>>2];k[sa+4>>2]=k[xa+4>>2];k[sa+8>>2]=k[xa+8>>2];k[sa+12>>2]=k[xa+12>>2];k[sa+16>>2]=k[xa+16>>2];lf=k[Sa>>2]|0}else lf=gf;hf=hf+1|0;if((hf|0)>=(lf|0))break;else gf=lf}}lf=k[a>>2]|0;gf=lf+40|0;hf=(k[lf+20>>2]|0)+8|0;k[gf>>2]=k[hf>>2];k[gf+4>>2]=k[hf+4>>2];k[gf+8>>2]=k[hf+8>>2];k[gf+12>>2]=k[hf+12>>2];hf=k[a>>2]|0;gf=hf+56|0;lf=(k[hf+20>>2]|0)+8|0;k[gf>>2]=k[lf>>2];k[gf+4>>2]=k[lf+4>>2];k[gf+8>>2]=k[lf+8>>2];k[gf+12>>2]=k[lf+12>>2];lf=k[a>>2]|0;if((k[lf+4>>2]|0)>0){gf=lf;hf=0;while(1){xa=gf+40|0;La=+p[xa>>3];_a=+p[(k[gf+20>>2]|0)+(hf*72|0)+8>>3];p[xa>>3]=La<_a?La:_a;xa=k[a>>2]|0;ef=xa+48|0;_a=+p[ef>>3];La=+p[(k[xa+20>>2]|0)+(hf*72|0)+16>>3];p[ef>>3]=_a<La?_a:La;ef=k[a>>2]|0;xa=ef+56|0;La=+p[xa>>3];_a=+p[(k[ef+20>>2]|0)+(hf*72|0)+8>>3];p[xa>>3]=La>_a?La:_a;xa=k[a>>2]|0;ef=xa+64|0;_a=+p[ef>>3];La=+p[(k[xa+20>>2]|0)+(hf*72|0)+16>>3];p[ef>>3]=_a>La?_a:La;hf=hf+1|0;ef=k[a>>2]|0;if((hf|0)>=(k[ef+4>>2]|0)){mf=ef;break}else gf=ef}}else mf=lf;lf=mf+40|0;La=+p[lf>>3];gf=mf+48|0;_a=+p[gf>>3];nf=(+p[mf+56>>3]-La)*.05;of=(+p[mf+64>>3]-_a)*.05;p[lf>>3]=La-nf;p[gf>>3]=_a-of;gf=k[a>>2]|0;lf=gf+56|0;p[lf>>3]=nf+ +p[lf>>3];lf=gf+64|0;p[lf>>3]=of+ +p[lf>>3];lf=k[a>>2]|0;of=+p[lf+56>>3]-+p[lf+40>>3];nf=+p[lf+64>>3]-+p[lf+48>>3];p[lf+72>>3]=1073741823.0/(of>nf?of:nf);lf=k[a>>2]|0;if(+p[lf+72>>3]<=0.0){Tqa(Se);gf=za+56|0;mf=za+4|0;k[za>>2]=27524;k[gf>>2]=27544;B=0;wa(508,za+56|0,mf|0);hf=B;B=0;if(hf&1){hf=Rb()|0;pf=Q;qf=hf;vva(gf);Qb(qf|0)}k[za+128>>2]=0;k[za+132>>2]=-1;k[za>>2]=27468;k[gf>>2]=27488;B=0;va(448,mf|0);hf=B;B=0;do if(hf&1){ef=Rb()|0;rf=Q;sf=ef}else{k[mf>>2]=27560;ef=za+36|0;k[ef>>2]=0;k[ef+4>>2]=0;k[ef+8>>2]=0;k[ef+12>>2]=0;k[za+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,mf|0,d|0);xa=B;B=0;if(xa&1){xa=Rb()|0;ff=Q;Yua(d);Yua(ef);Ava(mf);rf=ff;sf=xa;break}Yua(d);B=0;xa=Ia(40,za|0,122472,60)|0;ff=B;B=0;w:do if(ff&1)ab=592;else{B=0;Xa(239,xa|0,0)|0;sa=B;B=0;if(sa&1){ab=592;break}sa=Ab(20)|0;B=0;eb(502,Aa|0,121503,60);jf=B;B=0;do if(!(jf&1)){B=0;eb(502,Ba|0,121664,21);ta=B;B=0;if(ta&1){ta=Rb()|0;ze=Q;Yua(Aa);tf=ta;uf=ze;break}B=0;wa(510,Ca|0,mf|0);ze=B;B=0;if(ze&1){ze=Rb()|0;vf=1;wf=ze;xf=Q}else{B=0;ua(163,sa|0,Aa|0,Ba|0,1628,Ca|0);ze=B;B=0;if(ze&1)yf=1;else{B=0;eb(503,sa|0,1240,229);B=0;yf=0}ze=Rb()|0;ta=Q;Yua(Ca);vf=yf;wf=ze;xf=ta}Yua(Ba);Yua(Aa);if(vf){tf=wf;uf=xf}else{zf=wf;Af=xf;break w}}else{ta=Rb()|0;tf=ta;uf=Q}while(0);zb(sa|0);zf=tf;Af=uf}while(0);if((ab|0)==592){xa=Rb()|0;zf=xa;Af=Q}k[za>>2]=27468;k[gf>>2]=27488;k[mf>>2]=27560;Yua(ef);Ava(mf);vva(gf);bb=zf;cb=Af;Qb(bb|0)}while(0);pf=rf;qf=sf;vva(gf);Qb(qf|0)}qf=lf+4|0;lf=k[qf>>2]|0;gf=Rqa(lf>>>0>536870911?-1:lf<<3)|0;lf=k[qf>>2]|0;if((lf|0)>0)WEa(gf|0,0,((lf|0)>1?lf:1)<<3|0)|0;lf=Qqa(20)|0;B=0;eb(522,lf|0,k[Pa>>2]|0,k[Sa>>2]|0);Sa=B;B=0;if(Sa&1){Sa=Rb()|0;qf=Q;Sqa(lf);bb=Sa;cb=qf;Qb(bb|0)}x:do if((k[Pa>>2]|0)>0){qf=a+16|0;Sa=a+8|0;nf=G;sf=0;while(1){rf=k[qf>>2]|0;pf=k[Sa>>2]|0;Af=((k[rf+(sf*24|0)>>2]|0)-pf|0)/72|0;zf=((k[rf+(sf*24|0)+4>>2]|0)-pf|0)/72|0;pf=k[Se+(Af<<2)>>2]|0;rf=k[Se+(zf<<2)>>2]|0;mf=k[a>>2]|0;k[(k[mf+24>>2]|0)+(sf*72|0)>>2]=(k[mf+20>>2]|0)+(pf*72|0);mf=k[a>>2]|0;k[(k[mf+24>>2]|0)+(sf*72|0)+4>>2]=(k[mf+20>>2]|0)+(rf*72|0);k[(k[(k[a>>2]|0)+24>>2]|0)+(sf*72|0)+64>>2]=0;mf=(k[(k[a>>2]|0)+24>>2]|0)+(sf*72|0)+16|0;k[mf>>2]=0;k[mf+4>>2]=0;k[mf+8>>2]=0;k[mf+12>>2]=0;mf=(k[(k[a>>2]|0)+24>>2]|0)+(sf*72|0)+32|0;k[mf>>2]=0;k[mf+4>>2]=0;k[mf+8>>2]=0;k[mf+12>>2]=0;mf=k[qf>>2]|0;za=mf+(sf*24|0)+12|0;uf=(k[za>>2]|0)==0;k[za>>2]=(k[(k[a>>2]|0)+24>>2]|0)+(sf*72|0);if(uf)Bf=mf;else{Apa(k[(k[(k[a>>2]|0)+24>>2]|0)+(sf*72|0)>>2]|0);Apa(k[(k[(k[a>>2]|0)+24>>2]|0)+(sf*72|0)+4>>2]|0);wpa((k[(k[a>>2]|0)+24>>2]|0)+(sf*72|0)|0);Bf=k[qf>>2]|0}mf=k[(k[a>>2]|0)+20>>2]|0;of=+p[mf+(pf*72|0)+8>>3]-+p[mf+(rf*72|0)+8>>3];_a=+p[mf+(pf*72|0)+16>>3]-+p[mf+(rf*72|0)+16>>3];La=+aa(+(of*of+_a*_a));uf=mf+(rf*72|0)+64|0;k[uf>>2]=(k[uf>>2]|0)+1;uf=(k[(k[a>>2]|0)+20>>2]|0)+(pf*72|0)+64|0;k[uf>>2]=(k[uf>>2]|0)+1;uf=gf+(pf<<3)|0;p[uf>>3]=La+ +p[uf>>3];uf=gf+(rf<<3)|0;p[uf>>3]=La+ +p[uf>>3];k[(k[(k[a>>2]|0)+24>>2]|0)+(sf*72|0)+8>>2]=k[Bf+(sf*24|0)+8>>2];if((aqa(lf,Af,zf)|0)!=(sf|0))break;_a=nf<La?nf:La;sf=sf+1|0;if((sf|0)>=(k[Pa>>2]|0)){Cf=_a;break x}else nf=_a}Tqa(gf);Tqa(Se);sf=Da+56|0;qf=Da+4|0;k[Da>>2]=27524;k[sf>>2]=27544;B=0;wa(508,Da+56|0,qf|0);Sa=B;B=0;if(Sa&1){Sa=Rb()|0;Df=Q;Ef=Sa;vva(sf);Qb(Ef|0)}k[Da+128>>2]=0;k[Da+132>>2]=-1;k[Da>>2]=27468;k[sf>>2]=27488;B=0;va(448,qf|0);Sa=B;B=0;do if(Sa&1){ef=Rb()|0;Ff=Q;Gf=ef}else{k[qf>>2]=27560;ef=Da+36|0;k[ef>>2]=0;k[ef+4>>2]=0;k[ef+8>>2]=0;k[ef+12>>2]=0;k[Da+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,qf|0,d|0);zf=B;B=0;if(zf&1){zf=Rb()|0;Af=Q;Yua(d);Yua(ef);Ava(qf);Ff=Af;Gf=zf;break}Yua(d);B=0;zf=Ia(40,Da|0,122533,37)|0;Af=B;B=0;y:do if(Af&1)ab=626;else{B=0;Xa(239,zf|0,0)|0;uf=B;B=0;if(uf&1){ab=626;break}uf=Ab(20)|0;B=0;eb(502,Ea|0,121503,60);rf=B;B=0;do if(!(rf&1)){B=0;eb(502,Fa|0,121664,21);pf=B;B=0;if(pf&1){pf=Rb()|0;mf=Q;Yua(Ea);Hf=pf;If=mf;break}B=0;wa(510,Ga|0,qf|0);mf=B;B=0;if(mf&1){mf=Rb()|0;Jf=1;Kf=mf;Lf=Q}else{B=0;ua(163,uf|0,Ea|0,Fa|0,1681,Ga|0);mf=B;B=0;if(mf&1)Mf=1;else{B=0;eb(503,uf|0,1240,229);B=0;Mf=0}mf=Rb()|0;pf=Q;Yua(Ga);Jf=Mf;Kf=mf;Lf=pf}Yua(Fa);Yua(Ea);if(Jf){Hf=Kf;If=Lf}else{Nf=Kf;Of=Lf;break y}}else{pf=Rb()|0;Hf=pf;If=Q}while(0);zb(uf|0);Nf=Hf;Of=If}while(0);if((ab|0)==626){zf=Rb()|0;Nf=zf;Of=Q}k[Da>>2]=27468;k[sf>>2]=27488;k[qf>>2]=27560;Yua(ef);Ava(qf);vva(sf);bb=Nf;cb=Of;Qb(bb|0)}while(0);Df=Ff;Ef=Gf;vva(sf);Qb(Ef|0)}else Cf=G;while(0);Ef=k[a>>2]|0;if((k[Ef+4>>2]|0)>0){Gf=Ef;Ef=0;do{Ff=k[Gf+20>>2]|0;Df=k[Ff+(Ef*72|0)+64>>2]|0;Of=Ff+(Ef*72|0)+24|0;if((Df|0)>0){Kpa(Ha,+p[gf+(Ef<<3)>>3]/+(Df|0));k[Of>>2]=k[Ha>>2];k[Of+4>>2]=k[Ha+4>>2];k[Of+8>>2]=k[Ha+8>>2];k[Of+12>>2]=k[Ha+12>>2];k[Of+16>>2]=k[Ha+16>>2];k[Of+20>>2]=k[Ha+20>>2]}else{Kpa(Ja,Cf);k[Of>>2]=k[Ja>>2];k[Of+4>>2]=k[Ja+4>>2];k[Of+8>>2]=k[Ja+8>>2];k[Of+12>>2]=k[Ja+12>>2];k[Of+16>>2]=k[Ja+16>>2];k[Of+20>>2]=k[Ja+20>>2]}Ef=Ef+1|0;Gf=k[a>>2]|0}while((Ef|0)<(k[Gf+4>>2]|0))}Tqa(gf);if((k[$d>>2]|0)>0){gf=a+12|0;Gf=a+8|0;Ef=a+16|0;Ja=k[De>>2]|0;Ha=k[Gf>>2]|0;Of=0;do{Df=k[gf>>2]|0;Ff=((k[Ja+(Of<<4)>>2]|0)-Df|0)/48|0;Nf=k[Ja+(Of<<4)+8>>2]|0;Da=Df;Df=((k[Da+(Ff*48|0)+(j[52932+(Nf<<2)>>1]<<2)>>2]|0)-Ha|0)/72|0;If=bqa(lf,Df,((k[Da+(Ff*48|0)+(j[52932+(Nf<<2)+2>>1]<<2)>>2]|0)-Ha|0)/72|0)|0;Ha=k[Gf>>2]|0;Nf=k[Ef>>2]|0;Ff=(Ha+(Df*72|0)|0)==(k[Nf+(If*24|0)>>2]|0)?1:-1;Ja=k[De>>2]|0;k[Ja+(Of<<4)+8>>2]=Ff;k[Ja+(Of<<4)+12>>2]=Nf+(If*24|0);Nf=k[a>>2]|0;k[(k[Nf+32>>2]|0)+(Of*12|0)>>2]=(k[Nf+24>>2]|0)+(If*72|0);k[(k[(k[a>>2]|0)+32>>2]|0)+(Of*12|0)+4>>2]=Ff;k[(k[(k[a>>2]|0)+32>>2]|0)+(Of*12|0)+8>>2]=k[Ja+(Of<<4)+4>>2];Of=Of+1|0}while((Of|0)<(k[$d>>2]|0))}$d=k[lf+12>>2]|0;if($d)Tqa($d);$d=k[lf+16>>2]|0;if($d)Tqa($d);Sqa(lf);Tqa(Se);if((k[Qa>>2]|0)<=0){r=c;return}Se=a+12|0;a=0;do{lf=(k[Se>>2]|0)+(a*48|0)|0;U4(lf,0,0,(N4(lf,0)|0)&65535);lf=(k[Se>>2]|0)+(a*48|0)|0;U4(lf,1,0,(N4(lf,1)|0)&65535);lf=(k[Se>>2]|0)+(a*48|0)|0;U4(lf,2,0,(N4(lf,2)|0)&65535);a=a+1|0}while((a|0)<(k[Qa>>2]|0));r=c;return}c=g+56|0;Qa=g+4|0;k[g>>2]=27524;k[c>>2]=27544;B=0;wa(508,g+56|0,Qa|0);a=B;B=0;if(a&1){a=Rb()|0;Pf=Q;Qf=a;vva(c);Qb(Qf|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[c>>2]=27488;B=0;va(448,Qa|0);a=B;B=0;do if(a&1){Se=Rb()|0;Rf=Q;Sf=Se}else{k[Qa>>2]=27560;Se=g+36|0;k[Se>>2]=0;k[Se+4>>2]=0;k[Se+8>>2]=0;k[Se+12>>2]=0;k[g+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Qa|0,d|0);lf=B;B=0;if(lf&1){lf=Rb()|0;$d=Q;Yua(d);Yua(Se);Ava(Qa);Rf=$d;Sf=lf;break}Yua(d);B=0;lf=Ia(40,g|0,121627,36)|0;$d=B;B=0;z:do if(!($d&1)?(B=0,Xa(239,lf|0,0)|0,Of=B,B=0,!(Of&1)):0){Of=Ab(20)|0;B=0;eb(502,h|0,121503,60);Ja=B;B=0;do if(!(Ja&1)){B=0;eb(502,i|0,121664,21);De=B;B=0;if(De&1){De=Rb()|0;Ha=Q;Yua(h);Tf=Ha;Uf=De;break}B=0;wa(510,l|0,Qa|0);De=B;B=0;if(De&1){De=Rb()|0;Vf=Q;Wf=De;Xf=1}else{B=0;ua(163,Of|0,h|0,i|0,1294,l|0);De=B;B=0;if(De&1)Yf=1;else{B=0;eb(503,Of|0,1240,229);B=0;Yf=0}De=Rb()|0;Ha=Q;Yua(l);Vf=Ha;Wf=De;Xf=Yf}Yua(i);Yua(h);if(Xf){Tf=Vf;Uf=Wf}else{Zf=Wf;_f=Vf;break z}}else{De=Rb()|0;Tf=Q;Uf=De}while(0);zb(Of|0);Zf=Uf;_f=Tf}else ab=35;while(0);if((ab|0)==35){lf=Rb()|0;Zf=lf;_f=Q}k[g>>2]=27468;k[c>>2]=27488;k[Qa>>2]=27560;Yua(Se);Ava(Qa);vva(c);bb=Zf;cb=_f;Qb(bb|0)}while(0);Pf=Rf;Qf=Sf;vva(c);Qb(Qf|0)}function c5(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,C=0.0,D=0.0,E=0,F=0,G=0.0,H=0.0,I=0,J=0.0,K=0.0,L=0.0,M=0,N=0,O=0.0,P=0.0,R=0.0,S=0.0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0;b=r;r=r+512|0;c=b+492|0;d=b+344|0;e=b+480|0;f=b+332|0;g=b+320|0;h=b+184|0;i=b+36|0;j=b+48|0;l=b+24|0;m=b+12|0;n=b;o=a+72|0;q=a+8|0;s=k[q>>2]|0;t=s+8|0;k[o>>2]=k[t>>2];k[o+4>>2]=k[t+4>>2];k[o+8>>2]=k[t+8>>2];k[o+12>>2]=k[t+12>>2];u=a+88|0;k[u>>2]=k[t>>2];k[u+4>>2]=k[t+4>>2];k[u+8>>2]=k[t+8>>2];k[u+12>>2]=k[t+12>>2];t=a+44|0;v=k[t>>2]|0;w=(v|0)>0;if(w){x=a+80|0;y=a+96|0;z=+p[o>>3];A=+p[x>>3];C=+p[u>>3];D=+p[y>>3];E=0;while(1){F=s+(E*72|0)+8|0;G=+p[F>>3];H=z<G?z:G;p[o>>3]=H;I=s+(E*72|0)+16|0;G=+p[I>>3];J=A<G?A:G;p[x>>3]=J;G=+p[F>>3];K=C>G?C:G;p[u>>3]=K;G=+p[I>>3];L=D>G?D:G;p[y>>3]=L;E=E+1|0;if((E|0)>=(v|0)){M=y;N=x;O=K;P=H;R=L;S=J;break}else{z=H;A=J;C=K;D=L}}}else{x=a+96|0;y=a+80|0;M=x;N=y;O=+p[u>>3];P=+p[o>>3];R=+p[x>>3];S=+p[y>>3]}D=(O-P)*.05;C=(R-S)*.05;A=P-D;P=S-C;y=a+72|0;p[y>>3]=A;p[N>>3]=P;S=D+O;O=C+R;p[a+88>>3]=S;p[M>>3]=O;R=S-A;S=O-P;O=1073741823.0/(R>S?R:S);M=a+104|0;p[M>>3]=O;if(O<=0.0){x=d+56|0;o=d+4|0;k[d>>2]=27524;k[x>>2]=27544;B=0;wa(508,d+56|0,o|0);u=B;B=0;if(u&1){u=Rb()|0;T=Q;U=u;vva(x);Qb(U|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[x>>2]=27488;B=0;va(448,o|0);u=B;B=0;do if(u&1){v=Rb()|0;V=Q;W=v}else{k[o>>2]=27560;v=d+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,o|0,c|0);E=B;B=0;if(E&1){E=Rb()|0;I=Q;Yua(c);Yua(v);Ava(o);V=I;W=E;break}Yua(c);B=0;E=Ia(40,d|0,122571,65)|0;I=B;B=0;a:do if(!(I&1)?(B=0,Xa(239,E|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,e|0,121503,60);X=B;B=0;do if(!(X&1)){B=0;eb(502,f|0,122637,10);Y=B;B=0;if(Y&1){Y=Rb()|0;Z=Q;Yua(e);_=Z;$=Y;break}B=0;wa(510,g|0,o|0);Y=B;B=0;if(Y&1){Y=Rb()|0;aa=Y;ba=Q;ca=1}else{B=0;ua(163,F|0,e|0,f|0,3790,g|0);Y=B;B=0;if(Y&1)da=1;else{B=0;eb(503,F|0,1240,229);B=0;da=0}Y=Rb()|0;Z=Q;Yua(g);aa=Y;ba=Z;ca=da}Yua(f);Yua(e);if(ca){_=ba;$=aa}else{ea=ba;fa=aa;break a}}else{Z=Rb()|0;_=Q;$=Z}while(0);zb(F|0);ea=_;fa=$}else ga=22;while(0);if((ga|0)==22){E=Rb()|0;ea=Q;fa=E}k[d>>2]=27468;k[x>>2]=27488;k[o>>2]=27560;Yua(v);Ava(o);vva(x);ha=fa;ia=ea;Qb(ha|0)}while(0);T=V;U=W;vva(x);Qb(U|0)}b:do if(w){U=s;S=A;R=O;C=P;x=0;while(1){W=~~(R*(+p[U+(x*72|0)+16>>3]-C));V=U+(x*72|0)|0;k[V>>2]=~~(R*(+p[U+(x*72|0)+8>>3]-S));k[V+4>>2]=W;W=x+1|0;if((W|0)>=(k[t>>2]|0))break b;U=k[q>>2]|0;S=+p[y>>3];R=+p[M>>3];C=+p[N>>3];x=W}}while(0);N=a+48|0;M=k[N>>2]|0;if((M|0)<=0){r=b;return}y=a+12|0;a=h+56|0;q=h+4|0;t=h+56|0;s=h+128|0;w=h+132|0;x=h+36|0;U=h+52|0;v=M;M=0;W=0;while(1){V=k[y>>2]|0;T=k[V+(M*48|0)>>2]|0;ea=k[V+(M*48|0)+4>>2]|0;fa=k[V+(M*48|0)+8>>2]|0;if((T|0)!=0&(ea|0)!=0&(fa|0)!=0){o=T;T=k[o>>2]|0;d=k[o+4>>2]|0;o=ea;ea=fa;fa=(k[o>>2]|0)-T|0;$=(k[o+4>>2]|0)-d|0;o=(k[ea>>2]|0)-T|0;T=(k[ea+4>>2]|0)-d|0;d=bFa(T|0,((T|0)<0)<<31>>31|0,fa|0,((fa|0)<0)<<31>>31|0)|0;fa=Q;T=bFa(o|0,((o|0)<0)<<31>>31|0,$|0,(($|0)<0)<<31>>31|0)|0;$=REa(d|0,fa|0,T|0,Q|0)|0;T=Q;fa=V+(M*48|0)+32|0;k[fa>>2]=$;k[fa+4>>2]=T;if((T|0)<0|(T|0)==0&$>>>0<1){$=W+1|0;if(($|0)<20){k[h>>2]=27524;k[a>>2]=27544;B=0;wa(508,t|0,q|0);T=B;B=0;if(T&1){ga=41;break}k[s>>2]=0;k[w>>2]=-1;k[h>>2]=27468;k[a>>2]=27488;B=0;va(448,q|0);T=B;B=0;if(T&1){ga=42;break}k[q>>2]=27560;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[U>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,q|0,c|0);T=B;B=0;if(T&1){ga=40;break}Yua(c);B=0;T=Ia(40,h|0,122648,17)|0;fa=B;B=0;if(fa&1){ga=53;break}B=0;fa=Xa(253,T|0,M+1|0)|0;T=B;B=0;if(T&1){ga=53;break}B=0;T=Ia(40,fa|0,122666,10)|0;fa=B;B=0;if(fa&1){ga=53;break}fa=(k[y>>2]|0)+(M*48|0)+32|0;B=0;d=Ia(44,T|0,k[fa>>2]|0,k[fa+4>>2]|0)|0;fa=B;B=0;if(fa&1){ga=53;break}B=0;Ia(40,d|0,145593,2)|0;d=B;B=0;if(d&1){ga=53;break}B=0;wa(510,i|0,q|0);d=B;B=0;if(d&1){ga=53;break}B=0;ya(424,i|0)|0;d=B;B=0;if(d&1){ga=54;break}Yua(i);k[h>>2]=27468;k[a>>2]=27488;k[q>>2]=27560;Yua(x);Ava(q);vva(a);ja=k[N>>2]|0;ka=$}else{ja=v;ka=$}}else{ja=v;ka=W}}else{$=V+(M*48|0)+32|0;k[$>>2]=-1;k[$+4>>2]=-1;ja=v;ka=W}M=M+1|0;if((M|0)>=(ja|0)){la=ka;ga=58;break}else{v=ja;W=ka}}if((ga|0)==40){ka=Rb()|0;W=Q;Yua(c);Yua(x);Ava(q);ma=W;na=ka;ga=43}else if((ga|0)==41){ka=Rb()|0;oa=Q;pa=ka;vva(a);Qb(pa|0)}else if((ga|0)==42){ka=Rb()|0;ma=Q;na=ka;ga=43}else if((ga|0)==53){ka=Rb()|0;qa=ka;ra=Q;ga=55}else if((ga|0)==54){ka=Rb()|0;W=Q;Yua(i);qa=ka;ra=W;ga=55}else if((ga|0)==58){if(!la){r=b;return}b=j+56|0;la=j+4|0;k[j>>2]=27524;k[b>>2]=27544;B=0;wa(508,j+56|0,la|0);W=B;B=0;if(W&1){W=Rb()|0;sa=Q;ta=W;vva(b);Qb(ta|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[b>>2]=27488;B=0;va(448,la|0);W=B;B=0;do if(W&1){ka=Rb()|0;xa=Q;za=ka}else{k[la>>2]=27560;ka=j+36|0;k[ka>>2]=0;k[ka+4>>2]=0;k[ka+8>>2]=0;k[ka+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,la|0,c|0);i=B;B=0;if(i&1){i=Rb()|0;ja=Q;Yua(c);Yua(ka);Ava(la);xa=ja;za=i;break}Yua(c);B=0;i=Ia(40,j|0,122677,58)|0;ja=B;B=0;c:do if(!(ja&1)?(B=0,Xa(239,i|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,l|0,121503,60);M=B;B=0;do if(!(M&1)){B=0;eb(502,m|0,122637,10);N=B;B=0;if(N&1){N=Rb()|0;y=Q;Yua(l);Aa=y;Ba=N;break}B=0;wa(510,n|0,la|0);N=B;B=0;if(N&1){N=Rb()|0;Ca=1;Da=N;Ea=Q}else{B=0;ua(163,v|0,l|0,m|0,3826,n|0);N=B;B=0;if(N&1)Fa=1;else{B=0;eb(503,v|0,1240,229);B=0;Fa=0}N=Rb()|0;y=Q;Yua(n);Ca=Fa;Da=N;Ea=y}Yua(m);Yua(l);if(Ca){Aa=Ea;Ba=Da}else{Ga=Da;Ha=Ea;break c}}else{y=Rb()|0;Aa=Q;Ba=y}while(0);zb(v|0);Ga=Ba;Ha=Aa}else ga=74;while(0);if((ga|0)==74){i=Rb()|0;Ga=i;Ha=Q}k[j>>2]=27468;k[b>>2]=27488;k[la>>2]=27560;Yua(ka);Ava(la);vva(b);ha=Ga;ia=Ha;Qb(ha|0)}while(0);sa=xa;ta=za;vva(b);Qb(ta|0)}if((ga|0)==43){oa=ma;pa=na;vva(a);Qb(pa|0)}else if((ga|0)==55){k[h>>2]=27468;k[a>>2]=27488;k[q>>2]=27560;Yua(x);Ava(q);vva(a);ha=qa;ia=ra;Qb(ha|0)}}function d5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0;b=r;r=r+2512|0;c=b+48|0;d=b+2256|0;e=b+2500|0;f=b+2488|0;g=b+2476|0;h=b+2120|0;i=b+2464|0;l=b+2452|0;m=b+2440|0;n=b+1968|0;o=b+2428|0;p=b+1816|0;q=b+2416|0;s=b+1664|0;t=b+2404|0;u=b+2392|0;v=b+2104|0;w=b+1528|0;x=b+1952|0;y=b+1800|0;z=b+1512|0;A=b+1504|0;C=b+1368|0;D=b+1352|0;E=b+1340|0;F=b+1328|0;G=b+1184|0;H=b+1040|0;I=b;J=b+1192|0;K=b+616|0;L=b+464|0;M=b+180|0;N=b+1048|0;O=b+168|0;P=b+904|0;R=b+156|0;S=b+768|0;T=b+144|0;U=b+632|0;V=b+132|0;W=b+480|0;X=b+120|0;Y=b+328|0;Z=b+108|0;_=b+192|0;$=b+96|0;aa=b+84|0;ba=b+72|0;ca=a+44|0;da=k[ca>>2]|0;if((da|0)>0){ea=a+24|0;fa=0;do{k[(k[ea>>2]|0)+(fa<<2)>>2]=0;fa=fa+1|0}while((fa|0)<(da|0))}k[a+60>>2]=0;fa=Qqa(20)|0;ea=a+48|0;B=0;eb(522,fa|0,(k[ea>>2]|0)*3|0,da|0);da=B;B=0;if(da&1){da=Rb()|0;ga=Q;Sqa(fa);ha=da;ia=ga;Qb(ha|0)}ga=a+52|0;da=k[ga>>2]|0;if((da|0)>0){ja=a+16|0;ka=a+8|0;la=0;ma=0;while(1){na=k[ja>>2]|0;oa=k[ka>>2]|0;pa=((la|0)==(aqa(fa,((k[na+(la*24|0)>>2]|0)-oa|0)/72|0,((k[na+(la*24|0)+4>>2]|0)-oa|0)/72|0)|0)&1)+ma|0;la=la+1|0;oa=k[ga>>2]|0;if((la|0)>=(oa|0)){qa=oa;ra=pa;break}else ma=pa}}else{qa=da;ra=0}if((ra|0)!=(qa|0)){qa=d+56|0;da=d+4|0;k[d>>2]=27524;k[qa>>2]=27544;B=0;wa(508,d+56|0,da|0);ma=B;B=0;if(ma&1){ma=Rb()|0;sa=Q;ta=ma;vva(qa);Qb(ta|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[qa>>2]=27488;B=0;va(448,da|0);ma=B;B=0;do if(ma&1){la=Rb()|0;xa=Q;za=la}else{k[da>>2]=27560;la=d+36|0;k[la>>2]=0;k[la+4>>2]=0;k[la+8>>2]=0;k[la+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,da|0,c|0);ka=B;B=0;if(ka&1){ka=Rb()|0;ja=Q;Yua(c);Yua(la);Ava(da);xa=ja;za=ka;break}Yua(c);B=0;ka=Ia(40,d|0,122736,10)|0;ja=B;B=0;a:do if(((!(ja&1)?(B=0,pa=Xa(253,ka|0,ra-(k[ga>>2]|0)|0)|0,oa=B,B=0,!(oa&1)):0)?(B=0,oa=Ia(40,pa|0,122747,25)|0,pa=B,B=0,!(pa&1)):0)?(B=0,Xa(239,oa|0,0)|0,oa=B,B=0,!(oa&1)):0){oa=Ab(20)|0;B=0;eb(502,e|0,121503,60);pa=B;B=0;do if(!(pa&1)){B=0;eb(502,f|0,122773,23);na=B;B=0;if(na&1){na=Rb()|0;Aa=Q;Yua(e);Ba=Aa;Ca=na;break}B=0;wa(510,g|0,da|0);na=B;B=0;if(na&1){na=Rb()|0;Da=Q;Ea=na;Fa=1}else{B=0;ua(163,oa|0,e|0,f|0,3431,g|0);na=B;B=0;if(na&1)Ga=1;else{B=0;eb(503,oa|0,1240,229);B=0;Ga=0}na=Rb()|0;Aa=Q;Yua(g);Da=Aa;Ea=na;Fa=Ga}Yua(f);Yua(e);if(Fa){Ba=Da;Ca=Ea}else{Ha=Ea;Ja=Da;break a}}else{na=Rb()|0;Ba=Q;Ca=na}while(0);zb(oa|0);Ha=Ca;Ja=Ba}else Ka=27;while(0);if((Ka|0)==27){ka=Rb()|0;Ha=ka;Ja=Q}k[d>>2]=27468;k[qa>>2]=27488;k[da>>2]=27560;Yua(la);Ava(da);vva(qa);ha=Ha;ia=Ja;Qb(ha|0)}while(0);sa=xa;ta=za;vva(qa);Qb(ta|0)}ta=k[ea>>2]|0;qa=ta*3|0;za=Rqa(qa>>>0>1073741823?-1:qa<<2)|0;b:do if((ta|0)>0){WEa(za|0,-1,((qa|0)>1?qa:1)<<2|0)|0;xa=a+12|0;sa=a+8|0;Ja=0;c:while(1){Ha=Ja*3|0;da=0;do{d=k[xa>>2]|0;Ba=j[52932+(da<<2)>>1]|0;Ca=k[sa>>2]|0;Da=j[52932+(da<<2)+2>>1]|0;Ea=aqa(fa,((k[d+(Ja*48|0)+(Ba<<2)>>2]|0)-Ca|0)/72|0,((k[d+(Ja*48|0)+(Da<<2)>>2]|0)-Ca|0)/72|0)|0;Ca=O4((k[xa>>2]|0)+(Ja*48|0)|0,da)|0;d=za+(Ea<<2)|0;Fa=k[d>>2]|0;if((Fa|0)==-1)La=da+Ha|0;else{if((Fa|0)<=-1){Ma=Ba;Na=Da;Oa=Ja;break c}Da=k[xa>>2]|0;U4(Da+(Ja*48|0)|0,da&65535,Da+(((Fa|0)/3|0)*48|0)|0,((Fa|0)%3|0)&65535);if(Ca)V4((k[xa>>2]|0)+(Ja*48|0)|0,da);if((Ea|0)<(k[ga>>2]|0))W4((k[xa>>2]|0)+(Ja*48|0)|0,da);La=-2-(k[d>>2]|0)|0}k[d>>2]=La;da=da+1|0}while((da|0)<3);Ja=Ja+1|0;if((Ja|0)>=(k[ea>>2]|0))break b}Ja=h+56|0;la=h+4|0;k[h>>2]=27524;k[Ja>>2]=27544;B=0;wa(508,h+56|0,la|0);da=B;B=0;if(da&1){da=Rb()|0;Pa=Q;Qa=da;vva(Ja);Qb(Qa|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[Ja>>2]=27488;B=0;va(448,la|0);da=B;B=0;do if(da&1){Ha=Rb()|0;Ra=Q;Sa=Ha}else{k[la>>2]=27560;Ha=h+36|0;k[Ha>>2]=0;k[Ha+4>>2]=0;k[Ha+8>>2]=0;k[Ha+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,la|0,c|0);oa=B;B=0;if(oa&1){oa=Rb()|0;d=Q;Yua(c);Yua(Ha);Ava(la);Ra=d;Sa=oa;break}Yua(c);B=0;oa=Ia(40,h|0,121827,10)|0;d=B;B=0;d:do if(((((!(d&1)?(B=0,Ea=Xa(253,oa|0,((k[(k[xa>>2]|0)+(Oa*48|0)+(Ma<<2)>>2]|0)-(k[sa>>2]|0)|0)/72|0|0)|0,Ca=B,B=0,!(Ca&1)):0)?(B=0,Ca=Ia(40,Ea|0,122797,3)|0,Ea=B,B=0,!(Ea&1)):0)?(B=0,Ea=Xa(253,Ca|0,((k[(k[xa>>2]|0)+(Oa*48|0)+(Na<<2)>>2]|0)-(k[sa>>2]|0)|0)/72|0|0)|0,Ca=B,B=0,!(Ca&1)):0)?(B=0,Ca=Ia(40,Ea|0,122801,34)|0,Ea=B,B=0,!(Ea&1)):0)?(B=0,Xa(239,Ca|0,0)|0,Ca=B,B=0,!(Ca&1)):0){Ca=Ab(20)|0;B=0;eb(502,i|0,121503,60);Ea=B;B=0;do if(!(Ea&1)){B=0;eb(502,l|0,122773,23);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Da=Q;Yua(i);Ta=Da;Ua=Fa;break}B=0;wa(510,m|0,la|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Va=1;Wa=Fa;Ya=Q}else{B=0;ua(163,Ca|0,i|0,l|0,3463,m|0);Fa=B;B=0;if(Fa&1)Za=1;else{B=0;eb(503,Ca|0,1240,229);B=0;Za=0}Fa=Rb()|0;Da=Q;Yua(m);Va=Za;Wa=Fa;Ya=Da}Yua(l);Yua(i);if(Va){Ta=Ya;Ua=Wa}else{_a=Wa;$a=Ya;break d}}else{Da=Rb()|0;Ta=Q;Ua=Da}while(0);zb(Ca|0);_a=Ua;$a=Ta}else Ka=68;while(0);if((Ka|0)==68){oa=Rb()|0;_a=oa;$a=Q}k[h>>2]=27468;k[Ja>>2]=27488;k[la>>2]=27560;Yua(Ha);Ava(la);vva(Ja);ha=_a;ia=$a;Qb(ha|0)}while(0);Pa=Ra;Qa=Sa;vva(Ja);Qb(Qa|0)}while(0);e:do if(($pa(fa)|0)>0){Qa=a+8|0;Sa=a+24|0;Ra=n+56|0;Pa=n+4|0;$a=n+56|0;_a=n+128|0;h=n+132|0;Ta=n+36|0;Ua=n+52|0;Ya=p+56|0;Wa=p+4|0;Va=p+56|0;i=p+128|0;l=p+132|0;Za=p+36|0;m=p+52|0;Na=0;Oa=0;f:while(1){do if((k[za+(Na<<2)>>2]|0)>-1){if((Na|0)<(k[ga>>2]|0)){Ma=Zpa(fa,Na)|0;k[(k[Sa>>2]|0)+(Ma<<2)>>2]=(k[Qa>>2]|0)+(Ma*72|0);Ma=_pa(fa,Na)|0;k[(k[Sa>>2]|0)+(Ma<<2)>>2]=(k[Qa>>2]|0)+(Ma*72|0);ab=Oa;break}Ma=Oa+1|0;if((Ma|0)>=10){if((Ma|0)!=10){ab=Ma;break}k[p>>2]=27524;k[Ya>>2]=27544;B=0;wa(508,Va|0,Wa|0);La=B;B=0;if(La&1){Ka=109;break f}k[i>>2]=0;k[l>>2]=-1;k[p>>2]=27468;k[Ya>>2]=27488;B=0;va(448,Wa|0);La=B;B=0;if(La&1){Ka=110;break f}k[Wa>>2]=27560;k[Za>>2]=0;k[Za+4>>2]=0;k[Za+8>>2]=0;k[Za+12>>2]=0;k[m>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Wa|0,c|0);La=B;B=0;if(La&1){Ka=108;break f}Yua(c);B=0;Ia(40,p|0,122861,39)|0;La=B;B=0;if(La&1){Ka=117;break f}B=0;wa(510,q|0,Wa|0);La=B;B=0;if(La&1){Ka=117;break f}B=0;ya(424,q|0)|0;La=B;B=0;if(La&1){Ka=118;break f}Yua(q);k[p>>2]=27468;k[Ya>>2]=27488;k[Wa>>2]=27560;Yua(Za);Ava(Wa);vva(Ya);ab=10;break}k[n>>2]=27524;k[Ra>>2]=27544;B=0;wa(508,$a|0,Pa|0);La=B;B=0;if(La&1){Ka=85;break f}k[_a>>2]=0;k[h>>2]=-1;k[n>>2]=27468;k[Ra>>2]=27488;B=0;va(448,Pa|0);La=B;B=0;if(La&1){Ka=86;break f}k[Pa>>2]=27560;k[Ta>>2]=0;k[Ta+4>>2]=0;k[Ta+8>>2]=0;k[Ta+12>>2]=0;k[Ua>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Pa|0,c|0);La=B;B=0;if(La&1){Ka=84;break f}Yua(c);B=0;La=Ia(40,n|0,122836,20)|0;qa=B;B=0;if(qa&1){Ka=101;break f}B=0;qa=Xa(253,La|0,Na|0)|0;La=B;B=0;if(La&1){Ka=101;break f}B=0;La=Ia(40,qa|0,122857,3)|0;qa=B;B=0;if(qa&1){Ka=101;break f}B=0;qa=Xa(257,fa|0,Na|0)|0;ta=B;B=0;if(ta&1){Ka=101;break f}B=0;ta=Xa(253,La|0,qa|0)|0;qa=B;B=0;if(qa&1){Ka=101;break f}B=0;qa=Ia(40,ta|0,149175,1)|0;ta=B;B=0;if(ta&1){Ka=101;break f}B=0;ta=Xa(258,fa|0,Na|0)|0;La=B;B=0;if(La&1){Ka=101;break f}B=0;La=Xa(253,qa|0,ta|0)|0;ta=B;B=0;if(ta&1){Ka=101;break f}B=0;Ia(40,La|0,149177,1)|0;La=B;B=0;if(La&1){Ka=101;break f}B=0;wa(510,o|0,Pa|0);La=B;B=0;if(La&1){Ka=101;break f}B=0;ya(424,o|0)|0;La=B;B=0;if(La&1){Ka=102;break f}Yua(o);k[n>>2]=27468;k[Ra>>2]=27488;k[Pa>>2]=27560;Yua(Ta);Ava(Pa);vva(Ra);ab=Ma}else ab=Oa;while(0);Na=Na+1|0;if((Na|0)>=($pa(fa)|0)){bb=ab;Ka=121;break}else Oa=ab}switch(Ka|0){case 84:{Oa=Rb()|0;Na=Q;Yua(c);Yua(Ta);Ava(Pa);cb=Na;db=Oa;Ka=87;break}case 85:{Oa=Rb()|0;fb=Q;gb=Oa;vva(Ra);Qb(gb|0);break}case 86:{Oa=Rb()|0;cb=Q;db=Oa;Ka=87;break}case 101:{hb=Rb()|0;ib=Q;Ka=103;break}case 102:{Oa=Rb()|0;Na=Q;Yua(o);hb=Oa;ib=Na;Ka=103;break}case 108:{Na=Rb()|0;Oa=Q;Yua(c);Yua(Za);Ava(Wa);jb=Oa;kb=Na;Ka=111;break}case 109:{Na=Rb()|0;lb=Q;mb=Na;vva(Ya);Qb(mb|0);break}case 110:{Na=Rb()|0;jb=Q;kb=Na;Ka=111;break}case 117:{nb=Rb()|0;ob=Q;Ka=119;break}case 118:{Na=Rb()|0;Oa=Q;Yua(q);nb=Na;ob=Oa;Ka=119;break}case 121:{if(!bb)break e;Oa=s+56|0;Na=s+4|0;k[s>>2]=27524;k[Oa>>2]=27544;B=0;wa(508,s+56|0,Na|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;pb=Q;qb=Ua;vva(Oa);Qb(qb|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[Oa>>2]=27488;B=0;va(448,Na|0);Ua=B;B=0;do if(Ua&1){h=Rb()|0;rb=Q;sb=h}else{k[Na>>2]=27560;h=s+36|0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[s+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Na|0,c|0);_a=B;B=0;if(_a&1){_a=Rb()|0;$a=Q;Yua(c);Yua(h);Ava(Na);rb=$a;sb=_a;break}Yua(c);B=0;_a=Xa(253,s|0,bb|0)|0;$a=B;B=0;g:do if((!($a&1)?(B=0,m=Ia(40,_a|0,122901,65)|0,l=B,B=0,!(l&1)):0)?(B=0,Xa(239,m|0,0)|0,m=B,B=0,!(m&1)):0){m=Ab(20)|0;B=0;eb(502,t|0,121503,60);l=B;B=0;do if(!(l&1)){B=0;eb(502,u|0,122773,23);i=B;B=0;if(i&1){i=Rb()|0;Va=Q;Yua(t);tb=i;ub=Va;break}B=0;wa(510,v|0,Na|0);Va=B;B=0;if(Va&1){Va=Rb()|0;vb=1;wb=Va;xb=Q}else{B=0;ua(163,m|0,t|0,u|0,3501,v|0);Va=B;B=0;if(Va&1)yb=1;else{B=0;eb(503,m|0,1240,229);B=0;yb=0}Va=Rb()|0;i=Q;Yua(v);vb=yb;wb=Va;xb=i}Yua(u);Yua(t);if(vb){tb=wb;ub=xb}else{Bb=wb;Cb=xb;break g}}else{i=Rb()|0;tb=i;ub=Q}while(0);zb(m|0);Bb=tb;Cb=ub}else Ka=140;while(0);if((Ka|0)==140){_a=Rb()|0;Bb=_a;Cb=Q}k[s>>2]=27468;k[Oa>>2]=27488;k[Na>>2]=27560;Yua(h);Ava(Na);vva(Oa);ha=Bb;ia=Cb;Qb(ha|0)}while(0);pb=rb;qb=sb;vva(Oa);Qb(qb|0);break}}if((Ka|0)==87){fb=cb;gb=db;vva(Ra);Qb(gb|0)}else if((Ka|0)==103){k[n>>2]=27468;k[Ra>>2]=27488;k[Pa>>2]=27560;Yua(Ta);Ava(Pa);vva(Ra);ha=hb;ia=ib;Qb(ha|0)}else if((Ka|0)==111){lb=jb;mb=kb;vva(Ya);Qb(mb|0)}else if((Ka|0)==119){k[p>>2]=27468;k[Ya>>2]=27488;k[Wa>>2]=27560;Yua(Za);Ava(Wa);vva(Ya);ha=nb;ia=ob;Qb(ha|0)}}while(0);ob=k[ca>>2]|0;if((ob|0)>0){nb=a+8|0;p=a+24|0;mb=0;kb=0;while(1){k[(k[nb>>2]|0)+(mb*72|0)+64>>2]=0;j[(k[nb>>2]|0)+(mb*72|0)+60>>1]=0;jb=k[p>>2]|0;lb=k[jb+(mb<<2)>>2]|0;if(!lb)Db=kb;else{k[jb+(kb<<2)>>2]=lb;Db=kb+1|0}mb=mb+1|0;if((mb|0)>=(ob|0)){Eb=Db;break}else kb=Db}}else Eb=0;Db=a+12|0;kb=k[Db>>2]|0;ob=k[ea>>2]|0;mb=a+40|0;p=k[mb>>2]|0;nb=a+28|0;lb=k[nb>>2]|0;k[nb>>2]=0;jb=Eb<<1;ib=Rqa(jb>>>0>89478485?-1:jb*48|0)|0;h:do if(Eb){hb=ib+(jb*48|0)|0;n=ib;while(1){B=0;va(532,n|0);gb=B;B=0;if(gb&1)break;n=n+48|0;if((n|0)==(hb|0))break h}hb=Rb()|0;n=Q;Tqa(ib);ha=hb;ia=n;Qb(ha|0)}while(0);k[Db>>2]=ib;k[ea>>2]=2;k[mb>>2]=jb;jb=a+24|0;ib=k[jb>>2]|0;n=k[ib>>2]|0;hb=k[ib+4>>2]|0;Ya=k[n>>2]|0;Wa=(k[hb>>2]|0)-Ya|0;Za=((Wa|0)<0)<<31>>31;Ra=k[n+4>>2]|0;n=(k[hb+4>>2]|0)-Ra|0;hb=((n|0)<0)<<31>>31;Pa=2;while(1){Ta=ib+(Pa<<2)|0;Oa=k[Ta>>2]|0;gb=(k[Oa>>2]|0)-Ya|0;db=(k[Oa+4>>2]|0)-Ra|0;cb=bFa(db|0,((db|0)<0)<<31>>31|0,Wa|0,Za|0)|0;db=Q;fb=bFa(gb|0,((gb|0)<0)<<31>>31|0,n|0,hb|0)|0;if(!((cb|0)==(fb|0)&(db|0)==(Q|0))){Fb=Ta;Gb=Oa;break}Pa=Pa+1|0;if((Pa|0)>=(Eb|0)){Ka=158;break}}if((Ka|0)==158){Pa=w+56|0;hb=w+4|0;k[w>>2]=27524;k[Pa>>2]=27544;B=0;wa(508,w+56|0,hb|0);n=B;B=0;if(n&1){n=Rb()|0;Hb=Q;Ib=n;vva(Pa);Qb(Ib|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[Pa>>2]=27488;B=0;va(448,hb|0);n=B;B=0;do if(n&1){Za=Rb()|0;Jb=Q;Kb=Za}else{k[hb>>2]=27560;Za=w+36|0;k[Za>>2]=0;k[Za+4>>2]=0;k[Za+8>>2]=0;k[Za+12>>2]=0;k[w+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,hb|0,c|0);Wa=B;B=0;if(Wa&1){Wa=Rb()|0;Ra=Q;Yua(c);Yua(Za);Ava(hb);Jb=Ra;Kb=Wa;break}Yua(c);B=0;Wa=Ia(40,w|0,122967,53)|0;Ra=B;B=0;i:do if(!(Ra&1)?(B=0,Xa(239,Wa|0,0)|0,Ya=B,B=0,!(Ya&1)):0){Ya=Ab(20)|0;B=0;eb(502,x|0,121503,60);Oa=B;B=0;do if(!(Oa&1)){B=0;eb(502,y|0,122773,23);Ta=B;B=0;if(Ta&1){Ta=Rb()|0;db=Q;Yua(x);Lb=Ta;Mb=db;break}B=0;wa(510,z|0,hb|0);db=B;B=0;if(db&1){db=Rb()|0;Nb=1;Ob=db;Pb=Q}else{B=0;ua(163,Ya|0,x|0,y|0,3528,z|0);db=B;B=0;if(db&1)Sb=1;else{B=0;eb(503,Ya|0,1240,229);B=0;Sb=0}db=Rb()|0;Ta=Q;Yua(z);Nb=Sb;Ob=db;Pb=Ta}Yua(y);Yua(x);if(Nb){Lb=Ob;Mb=Pb}else{Tb=Ob;Ub=Pb;break i}}else{Ta=Rb()|0;Lb=Ta;Mb=Q}while(0);zb(Ya|0);Tb=Lb;Ub=Mb}else Ka=174;while(0);if((Ka|0)==174){Wa=Rb()|0;Tb=Wa;Ub=Q}k[w>>2]=27468;k[Pa>>2]=27488;k[hb>>2]=27560;Yua(Za);Ava(hb);vva(Pa);ha=Tb;ia=Ub;Qb(ha|0)}while(0);Hb=Jb;Ib=Kb;vva(Pa);Qb(Ib|0)}Ib=ib+8|0;ib=k[Ib>>2]|0;k[Ib>>2]=Gb;k[Fb>>2]=ib;ib=k[jb>>2]|0;Fb=k[ib>>2]|0;Gb=k[ib+4>>2]|0;k[k[Db>>2]>>2]=0;k[(k[Db>>2]|0)+4>>2]=Fb;k[(k[Db>>2]|0)+8>>2]=Gb;k[(k[Db>>2]|0)+48>>2]=0;k[(k[Db>>2]|0)+56>>2]=Fb;k[(k[Db>>2]|0)+52>>2]=Gb;ib=k[Db>>2]|0;U4(ib,0,ib+48|0,0);ib=k[Db>>2]|0;U4(ib,1,ib+48|0,2);ib=k[Db>>2]|0;U4(ib,2,ib+48|0,1);ib=k[Db>>2]|0;Ib=ib+32|0;k[Ib>>2]=-1;k[Ib+4>>2]=-1;Ib=ib+80|0;k[Ib>>2]=-1;k[Ib+4>>2]=-1;X4(ib);X4((k[Db>>2]|0)+48|0);ib=k[Db>>2]|0;k[ib+40>>2]=ib+48;ib=k[Db>>2]|0;k[ib+88>>2]=ib;ib=a+20|0;Ib=Qqa(16)|0;B=0;eb(523,Ib|0,a|0,0);Pa=B;B=0;if(Pa&1){Pa=Rb()|0;Kb=Q;Sqa(Ib);ha=Pa;ia=Kb;Qb(ha|0)}k[ib>>2]=Ib;Npa(Ib,Fb);Npa(k[ib>>2]|0,Gb);if((Eb|0)>2){Gb=2;do{Fb=k[(k[jb>>2]|0)+(Gb<<2)>>2]|0;Ib=o5(a,Fb,c,0)|0;Npa(k[ib>>2]|0,Fb);j5(a,Fb,Ib,c);a5(Fb,1,1)|0;Gb=Gb+1|0}while((Gb|0)!=(Eb|0))}k[A>>2]=0;k[A+4>>2]=0;Eb=k[ga>>2]|0;if((Eb|0)>0){Gb=a+16|0;jb=Eb;Eb=0;Fb=0;Ib=0;while(1){if(((k[za+(Eb<<2)>>2]|0)>-1?(Kb=k[Gb>>2]|0,Pa=k[Kb+(Eb*24|0)>>2]|0,Jb=k[Kb+(Eb*24|0)+4>>2]|0,(k[Pa+64>>2]|0)!=0):0)?(k[Jb+64>>2]|0)!=0:0){Kb=((k5(Pa,Jb,A)|0)>>>31)+Ib|0;Vb=k[ga>>2]|0;Wb=Fb+1|0;Xb=Kb}else{Vb=jb;Wb=Fb;Xb=Ib}Eb=Eb+1|0;if((Eb|0)>=(Vb|0)){Yb=Wb;Zb=Xb;break}else{jb=Vb;Fb=Wb;Ib=Xb}}if(Zb){Xb=C+56|0;Ib=C+4|0;k[C>>2]=27524;k[Xb>>2]=27544;B=0;wa(508,C+56|0,Ib|0);Wb=B;B=0;if(Wb&1){Wb=Rb()|0;_b=Q;$b=Wb;vva(Xb);Qb($b|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[Xb>>2]=27488;B=0;va(448,Ib|0);Wb=B;B=0;do if(Wb&1){Fb=Rb()|0;ac=Q;bc=Fb}else{k[Ib>>2]=27560;Fb=C+36|0;k[Fb>>2]=0;k[Fb+4>>2]=0;k[Fb+8>>2]=0;k[Fb+12>>2]=0;k[C+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ib|0,c|0);Vb=B;B=0;if(Vb&1){Vb=Rb()|0;jb=Q;Yua(c);Yua(Fb);Ava(Ib);ac=jb;bc=Vb;break}Yua(c);B=0;Vb=Ia(40,C|0,123021,8)|0;jb=B;B=0;j:do if(!(jb&1)?(B=0,Eb=Xa(253,Vb|0,Zb|0)|0,A=B,B=0,!(A&1)):0){B=0;A=Ia(40,Eb|0,123030,22)|0;Eb=B;B=0;if(Eb&1){Ka=213;break}B=0;Eb=Xa(253,A|0,Yb|0)|0;A=B;B=0;if(A&1){Ka=213;break}B=0;Xa(239,Eb|0,0)|0;Eb=B;B=0;if(Eb&1){Ka=213;break}Eb=Ab(20)|0;B=0;eb(502,D|0,121503,60);A=B;B=0;do if(!(A&1)){B=0;eb(502,E|0,122773,23);Gb=B;B=0;if(Gb&1){Gb=Rb()|0;Kb=Q;Yua(D);cc=Gb;dc=Kb;break}B=0;wa(510,F|0,Ib|0);Kb=B;B=0;if(Kb&1){Kb=Rb()|0;ec=1;fc=Kb;gc=Q}else{B=0;ua(163,Eb|0,D|0,E|0,3588,F|0);Kb=B;B=0;if(Kb&1)hc=1;else{B=0;eb(503,Eb|0,1240,229);B=0;hc=0}Kb=Rb()|0;Gb=Q;Yua(F);ec=hc;fc=Kb;gc=Gb}Yua(E);Yua(D);if(ec){cc=fc;dc=gc}else{ic=fc;jc=gc;break j}}else{Gb=Rb()|0;cc=Gb;dc=Q}while(0);zb(Eb|0);ic=cc;jc=dc}else Ka=213;while(0);if((Ka|0)==213){Vb=Rb()|0;ic=Vb;jc=Q}k[C>>2]=27468;k[Xb>>2]=27488;k[Ib>>2]=27560;Yua(Fb);Ava(Ib);vva(Xb);ha=ic;ia=jc;Qb(ha|0)}while(0);_b=ac;$b=bc;vva(Xb);Qb($b|0)}}l5(a,1);$b=k[ea>>2]|0;if(($b|0)>0){Xb=c+4|0;bc=a+8|0;ac=$b;_b=0;while(1){jc=k[Db>>2]|0;if(!(k[jc+(_b*48|0)+40>>2]|0))kc=ac;else{ic=jc;jc=0;while(1){M4(c,ic+(_b*48|0)|0,jc);Ib=k[c>>2]|0;if(!(k[Ib+40>>2]|0)){C=k[Xb>>2]|0;k[G>>2]=0;dc=G4(c,G)|0;k[H>>2]=1;cc=G4(c,H)|0;if(!dc)lc=k[ca>>2]|0;else lc=(dc-(k[bc>>2]|0)|0)/72|0;if(!cc)mc=k[ca>>2]|0;else mc=(cc-(k[bc>>2]|0)|0)/72|0;cc=za+((aqa(fa,lc,mc)|0)<<2)|0;dc=k[cc>>2]|0;U4(Ib,C&65535,kb+(((dc|0)/3|0)*48|0)|0,((dc|0)%3|0)&65535);E4(c);k[cc>>2]=-2-(k[cc>>2]|0)}cc=jc+1|0;if((cc|0)==3)break;ic=k[Db>>2]|0;jc=cc}kc=k[ea>>2]|0}_b=_b+1|0;if((_b|0)>=(kc|0)){nc=kc;break}else ac=kc}if((nc|0)>0){kc=k[Db>>2]|0;ac=0;_b=0;while(1){mc=kc+(_b*48|0)+40|0;if(!(k[mc>>2]|0)){k[mc>>2]=ac+ob;oc=kc;pc=ac+1|0}else{L4(I,0,0,0);qc=kc+(_b*48|0)|0;rc=I;sc=qc+44|0;do{k[qc>>2]=k[rc>>2];qc=qc+4|0;rc=rc+4|0}while((qc|0)<(sc|0));mc=k[Db>>2]|0;k[mc+(_b*48|0)+40>>2]=-1;oc=mc;pc=ac}_b=_b+1|0;mc=k[ea>>2]|0;if((_b|0)>=(mc|0)){tc=oc;uc=mc;break}else{kc=oc;ac=pc}}if((uc|0)>0){pc=uc;ac=tc;oc=0;kc=ob;while(1){if((k[ac+(oc*48|0)+40>>2]|0)>-1){qc=kb+(kc*48|0)|0;rc=ac+(oc*48|0)|0;sc=qc+44|0;do{k[qc>>2]=k[rc>>2];qc=qc+4|0;rc=rc+4|0}while((qc|0)<(sc|0));k[kb+(kc*48|0)+40>>2]=0;vc=k[Db>>2]|0;wc=k[ea>>2]|0;xc=kc+1|0}else{vc=ac;wc=pc;xc=kc}oc=oc+1|0;if((oc|0)>=(wc|0)){yc=wc;zc=vc;Ac=xc;break}else{pc=wc;ac=vc;kc=xc}}}else{yc=uc;zc=tc;Ac=ob}}else{Bc=nc;Ka=224}}else{Bc=$b;Ka=224}if((Ka|0)==224){yc=Bc;zc=k[Db>>2]|0;Ac=ob}ob=zc+(yc*48|0)|0;if((Ac|0)>0){yc=0;Bc=0;while(1){$b=kb+(yc*48|0)|0;nc=Z4($b,0)|0;tc=Q4($b,0)|0;uc=P4($b,0)|0;if(nc)if((nc>>>0<ob>>>0?nc>>>0>=(k[Db>>2]|0)>>>0:0)?(U4($b,0,kb+((k[nc+40>>2]|0)*48|0)|0,tc),(uc|0)!=0):0){W4($b,0);Cc=Bc}else Cc=Bc;else Cc=Bc+1|0;uc=Z4($b,1)|0;tc=Q4($b,1)|0;nc=P4($b,1)|0;if(uc)if((uc>>>0<ob>>>0?uc>>>0>=(k[Db>>2]|0)>>>0:0)?(U4($b,1,kb+((k[uc+40>>2]|0)*48|0)|0,tc),(nc|0)!=0):0){W4($b,1);Dc=Cc}else Dc=Cc;else Dc=Cc+1|0;nc=Z4($b,2)|0;tc=Q4($b,2)|0;uc=P4($b,2)|0;do if(nc)if(nc>>>0<ob>>>0?nc>>>0>=(k[Db>>2]|0)>>>0:0){U4($b,2,kb+((k[nc+40>>2]|0)*48|0)|0,tc);if(!uc){Ec=Dc;break}W4($b,2);Ec=Dc}else Ec=Dc;else Ec=Dc+1|0;while(0);yc=yc+1|0;if((yc|0)==(Ac|0)){Fc=Ec;break}else Bc=Ec}Gc=k[Db>>2]|0;Hc=Fc}else{Gc=zc;Hc=0}k[ea>>2]=Ac;k[mb>>2]=p;if(Gc)Tqa(Gc);Gc=k[nb>>2]|0;if(Gc)Tqa(Gc);k[Db>>2]=kb;k[nb>>2]=lb;if(Hc){lb=J+56|0;nb=J+4|0;k[J>>2]=27524;k[lb>>2]=27544;B=0;wa(508,J+56|0,nb|0);kb=B;B=0;if(kb&1){kb=Rb()|0;Ic=Q;Jc=kb;vva(lb);Qb(Jc|0)}k[J+128>>2]=0;k[J+132>>2]=-1;k[J>>2]=27468;k[lb>>2]=27488;B=0;va(448,nb|0);kb=B;B=0;do if(kb&1){Db=Rb()|0;Kc=Q;Lc=Db}else{k[nb>>2]=27560;Db=J+36|0;k[Db>>2]=0;k[Db+4>>2]=0;k[Db+8>>2]=0;k[Db+12>>2]=0;k[J+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,nb|0,c|0);Gc=B;B=0;if(Gc&1){Gc=Rb()|0;p=Q;Yua(c);Yua(Db);Ava(nb);Kc=p;Lc=Gc;break}Yua(c);B=0;Gc=Ia(40,J|0,123053,34)|0;p=B;B=0;k:do if(p&1)Ka=276;else{B=0;mb=Xa(253,Gc|0,Hc|0)|0;Ac=B;B=0;if(Ac&1){Ka=276;break}B=0;Xa(239,mb|0,0)|0;mb=B;B=0;if(mb&1){Ka=276;break}mb=Ab(20)|0;B=0;eb(502,K|0,121503,60);Ac=B;B=0;do if(!(Ac&1)){B=0;eb(502,L|0,122773,23);ea=B;B=0;if(ea&1){ea=Rb()|0;zc=Q;Yua(K);Mc=ea;Nc=zc;break}B=0;wa(510,M|0,nb|0);zc=B;B=0;if(zc&1){zc=Rb()|0;Oc=1;Pc=zc;Qc=Q}else{B=0;ua(163,mb|0,K|0,L|0,3663,M|0);zc=B;B=0;if(zc&1)Rc=1;else{B=0;eb(503,mb|0,1240,229);B=0;Rc=0}zc=Rb()|0;ea=Q;Yua(M);Oc=Rc;Pc=zc;Qc=ea}Yua(L);Yua(K);if(Oc){Mc=Pc;Nc=Qc}else{Sc=Pc;Tc=Qc;break k}}else{ea=Rb()|0;Mc=ea;Nc=Q}while(0);zb(mb|0);Sc=Mc;Tc=Nc}while(0);if((Ka|0)==276){Gc=Rb()|0;Sc=Gc;Tc=Q}k[J>>2]=27468;k[lb>>2]=27488;k[nb>>2]=27560;Yua(Db);Ava(nb);vva(lb);ha=Sc;ia=Tc;Qb(ha|0)}while(0);Ic=Kc;Jc=Lc;vva(lb);Qb(Jc|0)}l5(a,0);Jc=k[fa+12>>2]|0;if(Jc)Tqa(Jc);Jc=k[fa+16>>2]|0;if(Jc)Tqa(Jc);Sqa(fa);Tqa(za);do if((k[ca>>2]|0)>0){za=a+8|0;fa=0;do{Npa(k[ib>>2]|0,(k[za>>2]|0)+(fa*72|0)|0);fa=fa+1|0;Jc=k[ca>>2]|0}while((fa|0)<(Jc|0));Uc=Jc;if((Uc|0)<=0)break;fa=a+8|0;za=0;do{k[(k[fa>>2]|0)+(za*72|0)+64>>2]=0;za=za+1|0}while((za|0)!=(Uc|0))}while(0);Uc=a+152|0;if((k[Uc>>2]|0)>0){ca=a+156|0;ib=0;do{hqa((k[ca>>2]|0)+(ib*24|0)|0);ib=ib+1|0}while((ib|0)<(k[Uc>>2]|0))}Uc=a+160|0;if((k[Uc>>2]|0)>0){ib=a+164|0;ca=0;do{hqa((k[ib>>2]|0)+(ca*24|0)|0);ca=ca+1|0}while((ca|0)<(k[Uc>>2]|0))}Uc=k[ga>>2]|0;if((Uc|0)<=0){r=b;return}ca=a+16|0;ib=Uc;Uc=0;while(1){za=k[ca>>2]|0;if(!(k[za+(Uc*24|0)+12>>2]|0))Vc=ib;else{if(!(k[za+(Uc*24|0)+16>>2]|0)){if(!(gqa(k[(k[za+(Uc*24|0)>>2]|0)+64>>2]|0)|0)){Wc=Uc;Xc=0;break}Yc=k[ca>>2]|0}else Yc=za;if((k[Yc+(Uc*24|0)+20>>2]|0)==0?(gqa(k[(k[Yc+(Uc*24|0)+4>>2]|0)+64>>2]|0)|0)==0:0){Wc=Uc;Xc=1;break}Vc=k[ga>>2]|0}Uc=Uc+1|0;if((Uc|0)>=(Vc|0)){Ka=441;break}else ib=Vc}if((Ka|0)==441){r=b;return}b=N+56|0;Vc=N+4|0;k[N>>2]=27524;k[b>>2]=27544;B=0;wa(508,N+56|0,Vc|0);ib=B;B=0;if(ib&1){ib=Rb()|0;Zc=Q;_c=ib;vva(b);Qb(_c|0)}k[N+128>>2]=0;k[N+132>>2]=-1;k[N>>2]=27468;k[b>>2]=27488;B=0;va(448,Vc|0);ib=B;B=0;do if(ib&1){Uc=Rb()|0;$c=Q;ad=Uc}else{k[Vc>>2]=27560;Uc=N+36|0;k[Uc>>2]=0;k[Uc+4>>2]=0;k[Uc+8>>2]=0;k[Uc+12>>2]=0;k[N+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Vc|0,c|0);ga=B;B=0;if(ga&1){ga=Rb()|0;Yc=Q;Yua(c);Yua(Uc);Ava(Vc);$c=Yc;ad=ga;break}Yua(c);B=0;ga=Ia(40,N|0,123088,68)|0;Yc=B;B=0;do if(Yc&1)Ka=355;else{B=0;za=Xa(253,ga|0,Wc+1|0)|0;fa=B;B=0;if(fa&1){Ka=355;break}B=0;fa=Ia(40,za|0,121573,3)|0;za=B;B=0;if(za&1){Ka=355;break}za=a+8|0;B=0;Db=Xa(253,fa|0,(((k[(k[ca>>2]|0)+(Wc*24|0)>>2]|0)-(k[za>>2]|0)|0)/72|0)+1|0)|0;fa=B;B=0;if(fa&1){Ka=355;break}B=0;fa=Ia(40,Db|0,149175,1)|0;Db=B;B=0;if(Db&1){Ka=355;break}B=0;Db=Xa(253,fa|0,(((k[(k[ca>>2]|0)+(Wc*24|0)+4>>2]|0)-(k[za>>2]|0)|0)/72|0)+1|0)|0;fa=B;B=0;if(fa&1){Ka=355;break}B=0;Ia(40,Db|0,149198,2)|0;Db=B;B=0;if(Db&1){Ka=355;break}B=0;wa(510,O|0,Vc|0);Db=B;B=0;if(Db&1){Ka=355;break}B=0;ya(424,O|0)|0;Db=B;B=0;if(Db&1){Db=Rb()|0;fa=Q;Yua(O);bd=Db;cd=fa;break}Yua(O);k[N>>2]=27468;k[b>>2]=27488;k[Vc>>2]=27560;Yua(Uc);Ava(Vc);vva(b);fa=P+56|0;Db=P+4|0;k[P>>2]=27524;k[fa>>2]=27544;B=0;wa(508,P+56|0,Db|0);Jc=B;B=0;if(Jc&1){Jc=Rb()|0;dd=Q;ed=Jc;vva(fa);Qb(ed|0)}k[P+128>>2]=0;k[P+132>>2]=-1;k[P>>2]=27468;k[fa>>2]=27488;B=0;va(448,Db|0);Jc=B;B=0;do if(Jc&1){lb=Rb()|0;fd=Q;gd=lb}else{k[Db>>2]=27560;lb=P+36|0;k[lb>>2]=0;k[lb+4>>2]=0;k[lb+8>>2]=0;k[lb+12>>2]=0;k[P+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Db|0,c|0);Lc=B;B=0;if(Lc&1){Lc=Rb()|0;Kc=Q;Yua(c);Yua(lb);Ava(Db);fd=Kc;gd=Lc;break}Yua(c);B=0;Lc=Ia(40,P|0,123157,40)|0;Kc=B;B=0;do if(Kc&1)Ka=358;else{B=0;Ic=Xa(259,k[a>>2]|0,k[(k[ca>>2]|0)+(Wc*24|0)+12>>2]|0)|0;Tc=B;B=0;if(Tc&1){Ka=358;break}B=0;Tc=Xa(253,Lc|0,Ic+1|0)|0;Ic=B;B=0;if(Ic&1){Ka=358;break}B=0;Ia(40,Tc|0,149177,1)|0;Tc=B;B=0;if(Tc&1){Ka=358;break}B=0;wa(510,R|0,Db|0);Tc=B;B=0;if(Tc&1){Ka=358;break}B=0;ya(424,R|0)|0;Tc=B;B=0;if(Tc&1){Tc=Rb()|0;Ic=Q;Yua(R);hd=Tc;id=Ic;break}Yua(R);k[P>>2]=27468;k[fa>>2]=27488;k[Db>>2]=27560;Yua(lb);Ava(Db);vva(fa);l:do if(!(eqa(k[(k[(k[ca>>2]|0)+(Wc*24|0)+(Xc<<2)>>2]|0)+64>>2]|0)|0)){if(!(fqa(k[(k[(k[ca>>2]|0)+(Wc*24|0)+(Xc<<2)>>2]|0)+64>>2]|0)|0)){Ic=W+56|0;Tc=W+4|0;k[W>>2]=27524;k[Ic>>2]=27544;B=0;wa(508,W+56|0,Tc|0);Sc=B;B=0;if(Sc&1){Sc=Rb()|0;jd=Q;kd=Sc;vva(Ic);Qb(kd|0)}k[W+128>>2]=0;k[W+132>>2]=-1;k[W>>2]=27468;k[Ic>>2]=27488;B=0;va(448,Tc|0);Sc=B;B=0;do if(Sc&1){nb=Rb()|0;ld=Q;md=nb}else{k[Tc>>2]=27560;nb=W+36|0;k[nb>>2]=0;k[nb+4>>2]=0;k[nb+8>>2]=0;k[nb+12>>2]=0;k[W+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Tc|0,c|0);J=B;B=0;if(J&1){J=Rb()|0;Nc=Q;Yua(c);Yua(nb);Ava(Tc);ld=Nc;md=J;break}Yua(c);B=0;J=Ia(40,W|0,123307,15)|0;Nc=B;B=0;do if(!(Nc&1)){B=0;Mc=Xa(245,J|0,k[(k[(k[ca>>2]|0)+(Wc*24|0)+(Xc<<2)>>2]|0)+64>>2]|0)|0;Qc=B;B=0;if(Qc&1){Ka=399;break}B=0;Ia(40,Mc|0,149177,1)|0;Mc=B;B=0;if(Mc&1){Ka=399;break}B=0;wa(510,X|0,Tc|0);Mc=B;B=0;if(Mc&1){Ka=399;break}B=0;ya(424,X|0)|0;Mc=B;B=0;if(Mc&1){Mc=Rb()|0;Qc=Q;Yua(X);nd=Mc;od=Qc;break}else{Yua(X);k[W>>2]=27468;k[Ic>>2]=27488;k[Tc>>2]=27560;Yua(nb);Ava(Tc);vva(Ic);break l}}else Ka=399;while(0);if((Ka|0)==399){J=Rb()|0;nd=J;od=Q}k[W>>2]=27468;k[Ic>>2]=27488;k[Tc>>2]=27560;Yua(nb);Ava(Tc);vva(Ic);ha=nd;ia=od;Qb(ha|0)}while(0);jd=ld;kd=md;vva(Ic);Qb(kd|0)}Tc=U+56|0;Sc=U+4|0;k[U>>2]=27524;k[Tc>>2]=27544;B=0;wa(508,U+56|0,Sc|0);J=B;B=0;if(J&1){J=Rb()|0;pd=Q;qd=J;vva(Tc);Qb(qd|0)}k[U+128>>2]=0;k[U+132>>2]=-1;k[U>>2]=27468;k[Tc>>2]=27488;B=0;va(448,Sc|0);J=B;B=0;do if(J&1){Nc=Rb()|0;rd=Q;sd=Nc}else{k[Sc>>2]=27560;Nc=U+36|0;k[Nc>>2]=0;k[Nc+4>>2]=0;k[Nc+8>>2]=0;k[Nc+12>>2]=0;k[U+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Sc|0,c|0);Qc=B;B=0;if(Qc&1){Qc=Rb()|0;Mc=Q;Yua(c);Yua(Nc);Ava(Sc);rd=Mc;sd=Qc;break}Yua(c);B=0;Qc=Ia(40,U|0,123198,18)|0;Mc=B;B=0;do if(!(Mc&1)){B=0;Pc=Xa(253,Qc|0,(((k[(k[ca>>2]|0)+(Wc*24|0)+(Xc<<2)>>2]|0)-(k[za>>2]|0)|0)/72|0)+1|0)|0;Oc=B;B=0;if(Oc&1){Ka=382;break}B=0;Oc=Ia(40,Pc|0,123265,41)|0;Pc=B;B=0;if(Pc&1){Ka=382;break}B=0;Pc=Xa(259,k[a>>2]|0,k[(k[(k[(k[ca>>2]|0)+(Wc*24|0)+(Xc<<2)>>2]|0)+64>>2]|0)+16>>2]|0)|0;K=B;B=0;if(K&1){Ka=382;break}B=0;K=Xa(253,Oc|0,Pc+1|0)|0;Pc=B;B=0;if(Pc&1){Ka=382;break}B=0;Ia(40,K|0,149177,1)|0;K=B;B=0;if(K&1){Ka=382;break}B=0;wa(510,V|0,Sc|0);K=B;B=0;if(K&1){Ka=382;break}B=0;ya(424,V|0)|0;K=B;B=0;if(K&1){K=Rb()|0;Pc=Q;Yua(V);td=K;ud=Pc;break}else{Yua(V);k[U>>2]=27468;k[Tc>>2]=27488;k[Sc>>2]=27560;Yua(Nc);Ava(Sc);vva(Tc);break l}}else Ka=382;while(0);if((Ka|0)==382){Qc=Rb()|0;td=Qc;ud=Q}k[U>>2]=27468;k[Tc>>2]=27488;k[Sc>>2]=27560;Yua(Nc);Ava(Sc);vva(Tc);ha=td;ia=ud;Qb(ha|0)}while(0);pd=rd;qd=sd;vva(Tc);Qb(qd|0)}else{Sc=S+56|0;J=S+4|0;k[S>>2]=27524;k[Sc>>2]=27544;B=0;wa(508,S+56|0,J|0);Ic=B;B=0;if(Ic&1){Ic=Rb()|0;vd=Q;wd=Ic;vva(Sc);Qb(wd|0)}k[S+128>>2]=0;k[S+132>>2]=-1;k[S>>2]=27468;k[Sc>>2]=27488;B=0;va(448,J|0);Ic=B;B=0;do if(Ic&1){Qc=Rb()|0;xd=Q;yd=Qc}else{k[J>>2]=27560;Qc=S+36|0;k[Qc>>2]=0;k[Qc+4>>2]=0;k[Qc+8>>2]=0;k[Qc+12>>2]=0;k[S+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,J|0,c|0);Mc=B;B=0;if(Mc&1){Mc=Rb()|0;nb=Q;Yua(c);Yua(Qc);Ava(J);xd=nb;yd=Mc;break}Yua(c);B=0;Mc=Ia(40,S|0,123198,18)|0;nb=B;B=0;do if(!(nb&1)){B=0;Pc=Xa(253,Mc|0,(((k[(k[ca>>2]|0)+(Wc*24|0)+(Xc<<2)>>2]|0)-(k[za>>2]|0)|0)/72|0)+1|0)|0;K=B;B=0;if(K&1){Ka=361;break}B=0;K=Ia(40,Pc|0,123217,47)|0;Pc=B;B=0;if(Pc&1){Ka=361;break}B=0;Pc=Xa(260,k[a>>2]|0,k[(k[(k[(k[ca>>2]|0)+(Wc*24|0)+(Xc<<2)>>2]|0)+64>>2]|0)+16>>2]|0)|0;Oc=B;B=0;if(Oc&1){Ka=361;break}B=0;Oc=Xa(253,K|0,Pc+1|0)|0;Pc=B;B=0;if(Pc&1){Ka=361;break}B=0;Ia(40,Oc|0,149177,1)|0;Oc=B;B=0;if(Oc&1){Ka=361;break}B=0;wa(510,T|0,J|0);Oc=B;B=0;if(Oc&1){Ka=361;break}B=0;ya(424,T|0)|0;Oc=B;B=0;if(Oc&1){Oc=Rb()|0;Pc=Q;Yua(T);zd=Oc;Ad=Pc;break}else{Yua(T);k[S>>2]=27468;k[Sc>>2]=27488;k[J>>2]=27560;Yua(Qc);Ava(J);vva(Sc);break l}}else Ka=361;while(0);if((Ka|0)==361){Mc=Rb()|0;zd=Mc;Ad=Q}k[S>>2]=27468;k[Sc>>2]=27488;k[J>>2]=27560;Yua(Qc);Ava(J);vva(Sc);ha=zd;ia=Ad;Qb(ha|0)}while(0);vd=xd;wd=yd;vva(Sc);Qb(wd|0)}while(0);J=Y+56|0;Ic=Y+4|0;k[Y>>2]=27524;k[J>>2]=27544;B=0;wa(508,Y+56|0,Ic|0);Tc=B;B=0;if(Tc&1){Tc=Rb()|0;Bd=Q;Cd=Tc;vva(J);Qb(Cd|0)}k[Y+128>>2]=0;k[Y+132>>2]=-1;k[Y>>2]=27468;k[J>>2]=27488;B=0;va(448,Ic|0);Tc=B;B=0;do if(Tc&1){Mc=Rb()|0;Dd=Q;Ed=Mc}else{k[Ic>>2]=27560;Mc=Y+36|0;k[Mc>>2]=0;k[Mc+4>>2]=0;k[Mc+8>>2]=0;k[Mc+12>>2]=0;k[Y+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ic|0,c|0);nb=B;B=0;if(nb&1){nb=Rb()|0;Nc=Q;Yua(c);Yua(Mc);Ava(Ic);Dd=Nc;Ed=nb;break}Yua(c);B=0;Ia(40,Y|0,123323,98)|0;nb=B;B=0;do if(nb&1)Ka=428;else{B=0;wa(510,Z|0,Ic|0);Nc=B;B=0;if(Nc&1){Ka=428;break}B=0;ya(424,Z|0)|0;Nc=B;B=0;if(Nc&1){Nc=Rb()|0;Pc=Q;Yua(Z);Fd=Nc;Gd=Pc;break}Yua(Z);k[Y>>2]=27468;k[J>>2]=27488;k[Ic>>2]=27560;Yua(Mc);Ava(Ic);vva(J);Pc=_+56|0;Nc=_+4|0;k[_>>2]=27524;k[Pc>>2]=27544;B=0;wa(508,_+56|0,Nc|0);Oc=B;B=0;if(Oc&1){Oc=Rb()|0;Hd=Q;Id=Oc;vva(Pc);Qb(Id|0)}k[_+128>>2]=0;k[_+132>>2]=-1;k[_>>2]=27468;k[Pc>>2]=27488;B=0;va(448,Nc|0);Oc=B;B=0;do if(Oc&1){K=Rb()|0;Jd=Q;Kd=K}else{k[Nc>>2]=27560;K=_+36|0;k[K>>2]=0;k[K+4>>2]=0;k[K+8>>2]=0;k[K+12>>2]=0;k[_+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Nc|0,c|0);L=B;B=0;if(L&1){L=Rb()|0;Rc=Q;Yua(c);Yua(K);Ava(Nc);Jd=Rc;Kd=L;break}Yua(c);B=0;L=Ia(40,_|0,123422,31)|0;Rc=B;B=0;m:do if(Rc&1)Ka=431;else{B=0;Xa(239,L|0,0)|0;M=B;B=0;if(M&1){Ka=431;break}M=Ab(20)|0;B=0;eb(502,$|0,121503,60);Hc=B;B=0;do if(!(Hc&1)){B=0;eb(502,aa|0,122773,23);kb=B;B=0;if(kb&1){kb=Rb()|0;Gc=Q;Yua($);Ld=kb;Md=Gc;break}B=0;wa(510,ba|0,Nc|0);Gc=B;B=0;if(Gc&1){Gc=Rb()|0;Nd=1;Od=Gc;Pd=Q}else{B=0;ua(163,M|0,$|0,aa|0,3693,ba|0);Gc=B;B=0;if(Gc&1)Qd=1;else{B=0;eb(503,M|0,1240,229);B=0;Qd=0}Gc=Rb()|0;kb=Q;Yua(ba);Nd=Qd;Od=Gc;Pd=kb}Yua(aa);Yua($);if(Nd){Ld=Od;Md=Pd}else{Rd=Od;Sd=Pd;break m}}else{kb=Rb()|0;Ld=kb;Md=Q}while(0);zb(M|0);Rd=Ld;Sd=Md}while(0);if((Ka|0)==431){L=Rb()|0;Rd=L;Sd=Q}k[_>>2]=27468;k[Pc>>2]=27488;k[Nc>>2]=27560;Yua(K);Ava(Nc);vva(Pc);ha=Rd;ia=Sd;Qb(ha|0)}while(0);Hd=Jd;Id=Kd;vva(Pc);Qb(Id|0)}while(0);if((Ka|0)==428){nb=Rb()|0;Fd=nb;Gd=Q}k[Y>>2]=27468;k[J>>2]=27488;k[Ic>>2]=27560;Yua(Mc);Ava(Ic);vva(J);ha=Fd;ia=Gd;Qb(ha|0)}while(0);Bd=Dd;Cd=Ed;vva(J);Qb(Cd|0)}while(0);if((Ka|0)==358){Lc=Rb()|0;hd=Lc;id=Q}k[P>>2]=27468;k[fa>>2]=27488;k[Db>>2]=27560;Yua(lb);Ava(Db);vva(fa);ha=hd;ia=id;Qb(ha|0)}while(0);dd=fd;ed=gd;vva(fa);Qb(ed|0)}while(0);if((Ka|0)==355){ga=Rb()|0;bd=ga;cd=Q}k[N>>2]=27468;k[b>>2]=27488;k[Vc>>2]=27560;Yua(Uc);Ava(Vc);vva(b);ha=bd;ia=cd;Qb(ha|0)}while(0);Zc=$c;_c=ad;vva(b);Qb(_c|0)}function e5(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0;g=Qqa(88)|0;B=0;va(533,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;Sqa(g);j=i;l=h;Qb(l|0)}k[a>>2]=g;k[a+4>>2]=a;g=a+72|0;h=a+112|0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[g+16>>2]=0;k[g+20>>2]=0;k[g+24>>2]=0;k[g+28>>2]=0;Ipa(h,256,16);B=0;va(534,19999999);g=B;B=0;if(!(g&1)){k[a+32>>2]=0;k[a+20>>2]=0;g=a+44|0;k[a+16>>2]=0;k[a+28>>2]=0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[g+16>>2]=0;k[a+36>>2]=0;g=a+40|0;i=a+152|0;m=i+48|0;do{k[i>>2]=0;i=i+4|0}while((i|0)<(m|0));k[a+8>>2]=0;k[a+24>>2]=0;k[a+12>>2]=0;k[g>>2]=0;B=0;La(35,a|0,b|0,c|0,d|0,e|0,f|0);f=B;B=0;if((!(f&1)?(B=0,wa(521,a|0,0),f=B,B=0,!(f&1)):0)?(B=0,va(535,a|0),a=B,B=0,!(a&1)):0)return}a=Rb()|0;f=Q;Jpa(h);j=f;l=a;Qb(l|0)}function f5(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0;g=r;r=r+416|0;h=g+392|0;j=g;l=g+24|0;m=g+256|0;n=g+108|0;o=g+120|0;q=g+96|0;s=g+84|0;t=g+72|0;Kpa(j,1.0);u=a+44|0;k[u>>2]=e;v=a+36|0;k[v>>2]=e;w=a+48|0;k[w>>2]=f;f=Rqa(e>>>0>59652323?-1:e*72|0)|0;do if(e){x=f+(e*72|0)|0;y=f;while(1){B=0;va(530,y|0);z=B;B=0;if(z&1){A=5;break}y=y+72|0;if((y|0)==(x|0)){A=6;break}}if((A|0)==5){x=Rb()|0;Tqa(f);Qb(x|0)}else if((A|0)==6){C=k[u>>2]|0;break}}else C=0;while(0);e=a+8|0;k[e>>2]=f;x=Rqa(C>>>0>1073741823?-1:C<<2)|0;k[a+24>>2]=x;if((C|0)>0){x=f;f=0;do{p[x+(f*72|0)+8>>3]=+p[c+(f<<3)>>3];p[x+(f*72|0)+16>>3]=+p[d+(f<<3)>>3];k[x+(f*72|0)+48>>2]=1;k[x+(f*72|0)+56>>2]=k[9500];y=x+(f*72|0)+24|0;k[y>>2]=k[j>>2];k[y+4>>2]=k[j+4>>2];k[y+8>>2]=k[j+8>>2];k[y+12>>2]=k[j+12>>2];k[y+16>>2]=k[j+16>>2];k[y+20>>2]=k[j+20>>2];x=k[e>>2]|0;k[x+(f*72|0)+64>>2]=0;f=f+1|0;y=k[u>>2]|0}while((f|0)<(y|0));D=y}else D=C;C=(k[v>>2]<<1)+-2|0;k[a+40>>2]=C;v=Rqa(C>>>0>89478485?-1:C*48|0)|0;do if(!C)E=D;else{f=v+(C*48|0)|0;x=v;while(1){B=0;va(532,x|0);e=B;B=0;if(e&1)break;x=x+48|0;if((x|0)==(f|0)){A=14;break}}if((A|0)==14){E=k[u>>2]|0;break}f=Rb()|0;x=Q;Tqa(v);F=x;G=f;Qb(G|0)}while(0);C=a+12|0;k[C>>2]=v;D=Rqa(E)|0;if((E|0)>0)WEa(D|0,0,((E|0)>1?E:1)|0)|0;a:do if((k[w>>2]|0)>0){E=v;f=0;while(1){x=f*3|0;e=(k[b+(x<<2)>>2]|0)+-1|0;j=(k[b+(x+1<<2)>>2]|0)+-1|0;d=(k[b+(x+2<<2)>>2]|0)+-1|0;K4(l,a,e,j,d);x=E+(f*48|0)|0;c=l;y=x+44|0;do{k[x>>2]=k[c>>2];x=x+4|0;c=c+4|0}while((x|0)<(y|0));k[E+(f*48|0)+40>>2]=1;i[D+d>>0]=1;i[D+j>>0]=1;i[D+e>>0]=1;c=f+1|0;if((c|0)>=(k[w>>2]|0))break a;E=k[C>>2]|0;f=c}}while(0);b5(a,0);Cpa(k[a>>2]|0);a=k[u>>2]|0;if((a|0)<=0){Tqa(D);r=g;return}C=m+56|0;w=m+4|0;l=m+56|0;b=m+128|0;v=m+132|0;f=m+36|0;E=m+52|0;c=a;a=0;x=0;while(1){if(!(i[D+a>>0]|0)){k[m>>2]=27524;k[C>>2]=27544;B=0;wa(508,l|0,w|0);y=B;B=0;if(y&1){A=30;break}k[b>>2]=0;k[v>>2]=-1;k[m>>2]=27468;k[C>>2]=27488;B=0;va(448,w|0);y=B;B=0;if(y&1){A=31;break}k[w>>2]=27560;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[E>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,w|0,h|0);y=B;B=0;if(y&1){A=29;break}Yua(h);B=0;y=Ia(40,m|0,123454,7)|0;z=B;B=0;if(z&1){A=40;break}z=a+1|0;B=0;H=Xa(253,y|0,z|0)|0;y=B;B=0;if(y&1){A=40;break}B=0;Ia(40,H|0,123462,32)|0;H=B;B=0;if(H&1){A=40;break}B=0;wa(510,n|0,w|0);H=B;B=0;if(H&1){A=40;break}B=0;ya(424,n|0)|0;H=B;B=0;if(H&1){A=41;break}Yua(n);k[m>>2]=27468;k[C>>2]=27488;k[w>>2]=27560;Yua(f);Ava(w);vva(C);I=z;J=k[u>>2]|0;K=1}else{I=a+1|0;J=c;K=x}if((I|0)<(J|0)){c=J;a=I;x=K}else{A=44;break}}if((A|0)==29){x=Rb()|0;I=Q;Yua(h);Yua(f);Ava(w);L=I;M=x;A=32}else if((A|0)==30){x=Rb()|0;N=Q;O=x;vva(C);Qb(O|0)}else if((A|0)==31){x=Rb()|0;L=Q;M=x;A=32}else if((A|0)==40){x=Rb()|0;P=Q;R=x;A=42}else if((A|0)==41){x=Rb()|0;I=Q;Yua(n);P=I;R=x;A=42}else if((A|0)==44){if(!K){Tqa(D);r=g;return}g=o+56|0;D=o+4|0;k[o>>2]=27524;k[g>>2]=27544;B=0;wa(508,o+56|0,D|0);K=B;B=0;if(K&1){K=Rb()|0;S=Q;T=K;vva(g);Qb(T|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[g>>2]=27488;B=0;va(448,D|0);K=B;B=0;do if(K&1){x=Rb()|0;U=Q;V=x}else{k[D>>2]=27560;x=o+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[o+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,D|0,h|0);I=B;B=0;if(I&1){I=Rb()|0;n=Q;Yua(h);Yua(x);Ava(D);U=n;V=I;break}Yua(h);B=0;I=Ia(40,o|0,123495,35)|0;n=B;B=0;b:do if(!(n&1)?(B=0,Xa(239,I|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,q|0,121503,60);J=B;B=0;do if(!(J&1)){B=0;eb(502,s|0,121564,8);c=B;B=0;if(c&1){c=Rb()|0;u=Q;Yua(q);W=c;X=u;break}B=0;wa(510,t|0,D|0);u=B;B=0;if(u&1){u=Rb()|0;Y=1;Z=Q;_=u}else{B=0;ua(163,a|0,q|0,s|0,307,t|0);u=B;B=0;if(u&1)$=1;else{B=0;eb(503,a|0,1240,229);B=0;$=0}u=Rb()|0;c=Q;Yua(t);Y=$;Z=c;_=u}Yua(s);Yua(q);if(Y){W=_;X=Z}else{aa=Z;ba=_;break b}}else{u=Rb()|0;W=u;X=Q}while(0);zb(a|0);aa=X;ba=W}else A=60;while(0);if((A|0)==60){I=Rb()|0;aa=Q;ba=I}k[o>>2]=27468;k[g>>2]=27488;k[D>>2]=27560;Yua(x);Ava(D);vva(g);F=aa;G=ba;Qb(G|0)}while(0);S=U;T=V;vva(g);Qb(T|0)}if((A|0)==32){N=L;O=M;vva(C);Qb(O|0)}else if((A|0)==42){k[m>>2]=27468;k[C>>2]=27488;k[w>>2]=27560;Yua(f);Ava(w);vva(C);F=P;G=R;Qb(G|0)}}function g5(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;i=a+48|0;if((k[i>>2]|0)>0){j=0;do{k[b+(j<<2)>>2]=-1;j=j+1|0}while((j|0)<(k[i>>2]|0))}i=a+60|0;if((k[i>>2]|0)<=0){l=0;r=c;return l|0}j=k[a+28>>2]|0;m=a+12|0;a=0;n=0;while(1){o=k[j+(a<<4)>>2]|0;if(!o)break;p=k[m>>2]|0;q=n;s=o;while(1){t=q+1|0;k[b+(((s-p|0)/48|0)<<2)>>2]=a;s=k[s+40>>2]|0;if((o|0)==(s|0)){u=t;break}else q=t}a=a+1|0;if((a|0)>=(k[i>>2]|0)){l=u;v=5;break}else n=u}if((v|0)==5){r=c;return l|0}l=e+56|0;c=e+4|0;k[e>>2]=27524;k[l>>2]=27544;B=0;wa(508,e+56|0,c|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;x=v;vva(l);Qb(x|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[l>>2]=27488;B=0;va(448,c|0);v=B;B=0;do if(v&1){u=Rb()|0;y=Q;z=u}else{k[c>>2]=27560;u=e+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,c|0,d|0);n=B;B=0;if(n&1){n=Rb()|0;i=Q;Yua(d);Yua(u);Ava(c);y=i;z=n;break}Yua(d);B=0;n=Ia(40,e|0,123531,31)|0;i=B;B=0;if(!(i&1)?(B=0,Xa(239,n|0,0)|0,n=B,B=0,!(n&1)):0){n=Ab(20)|0;B=0;eb(502,f|0,121503,60);i=B;B=0;do if(!(i&1)){B=0;eb(502,g|0,123563,21);a=B;B=0;if(a&1){a=Rb()|0;b=Q;Yua(f);A=b;C=a;break}B=0;wa(510,h|0,c|0);a=B;B=0;if(a&1){a=Rb()|0;D=Q;E=a;F=1}else{B=0;ua(163,n|0,f|0,g|0,4145,h|0);a=B;B=0;if(a&1)G=1;else{B=0;eb(503,n|0,1240,229);B=0;G=0}a=Rb()|0;b=Q;Yua(h);D=b;E=a;F=G}Yua(g);Yua(f);if(F){A=D;C=E}else{H=D;I=E;k[e>>2]=27468;k[l>>2]=27488;k[c>>2]=27560;Yua(u);Ava(c);vva(l);Qb(I|0)}}else{a=Rb()|0;A=Q;C=a}while(0);zb(n|0);H=A;I=C;k[e>>2]=27468;k[l>>2]=27488;k[c>>2]=27560;Yua(u);Ava(c);vva(l);Qb(I|0)}i=Rb()|0;H=Q;I=i;k[e>>2]=27468;k[l>>2]=27488;k[c>>2]=27560;Yua(u);Ava(c);vva(l);Qb(I|0)}while(0);w=y;x=z;vva(l);Qb(x|0);return 0}function h5(a,b){a=a|0;b=b|0;return (b-(k[a+8>>2]|0)|0)/72|0|0}function i5(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=a+8|0;c=k[b>>2]|0;if(c)Tqa(c);c=a+16|0;d=k[c>>2]|0;if(d)Tqa(d);d=a+12|0;e=k[d>>2]|0;if(e)Tqa(e);e=a+20|0;f=k[e>>2]|0;if(f){Opa(f);Sqa(f)}f=a+24|0;g=k[f>>2]|0;if(g)Tqa(g);g=a+28|0;h=k[g>>2]|0;if(h)Tqa(h);h=k[a+164>>2]|0;if(h)Tqa(h);h=k[a+156>>2]|0;if(h)Tqa(h);h=k[a+172>>2]|0;if(h)Tqa(h);h=k[a+180>>2]|0;if(h)Tqa(h);h=k[a>>2]|0;i=k[h>>2]|0;if((i|0)<=0){if(!((h|0)==0|(i|0)!=0)){Dpa(h);Sqa(h)}}else k[h>>2]=i+-1;i=k[a+4>>2]|0;do if((i|0)!=(a|0)){h=i+32|0;j=k[h>>2]|0;if((j|0)>0){k[h>>2]=j+-1;break}if(!j){i5(i);Sqa(i)}}while(0);B=0;va(534,19999999);i=B;B=0;if(i&1){i=Rb(0)|0;Jpa(a+112|0);Dd(i)}else{k[a+32>>2]=0;k[e>>2]=0;e=a+44|0;k[c>>2]=0;k[g>>2]=0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[a+36>>2]=0;e=a+40|0;g=a+152|0;c=g+48|0;do{k[g>>2]=0;g=g+4|0}while((g|0)<(c|0));k[b>>2]=0;k[f>>2]=0;k[d>>2]=0;k[e>>2]=0;Jpa(a+112|0);return}}function j5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0;e=r;r=r+752|0;f=e+728|0;g=e+704|0;h=e;i=e+544|0;l=e+716|0;m=e+692|0;n=e+680|0;o=e+408|0;p=e+392|0;q=e+244|0;s=e+232|0;t=e+256|0;u=e+84|0;v=e+72|0;w=e+60|0;x=e+96|0;y=e+48|0;z=e+36|0;A=e+24|0;C=k[c>>2]|0;D=k[c+4>>2]|0;E=k[c+8>>2]|0;F=c+32|0;G=F;H=k[G>>2]|0;I=k[G+4>>2]|0;G=(C|0)!=0;if(G)if(D){J=(E|0)!=0;if(!(J&(I|0)<0)){K=J?-1:2;L=J;M=4}}else{K=1;L=0;M=4}else{K=0;L=0;M=4}if((M|0)==4?!(((I|0)>0|(I|0)==0&H>>>0>0)&(K|0)>-1):0){do if(!d){if(L){K=b;H=k[K>>2]|0;I=k[K+4>>2]|0;K=D;J=k[K>>2]|0;N=k[K+4>>2]|0;K=E;O=k[K>>2]|0;P=k[K+4>>2]|0;K=J-H|0;R=N-I|0;S=O-H|0;T=P-I|0;U=bFa(T|0,((T|0)<0)<<31>>31|0,K|0,((K|0)<0)<<31>>31|0)|0;K=Q;T=bFa(S|0,((S|0)<0)<<31>>31|0,R|0,((R|0)<0)<<31>>31|0)|0;R=REa(U|0,K|0,T|0,Q|0)|0;T=Q;K=h;k[K>>2]=R;k[K+4>>2]=T;K=C;U=k[K>>2]|0;S=k[K+4>>2]|0;K=H-U|0;H=((K|0)<0)<<31>>31;V=I-S|0;I=((V|0)<0)<<31>>31;W=O-U|0;O=P-S|0;P=bFa(O|0,((O|0)<0)<<31>>31|0,K|0,H|0)|0;O=Q;X=bFa(W|0,((W|0)<0)<<31>>31|0,V|0,I|0)|0;W=REa(P|0,O|0,X|0,Q|0)|0;X=h+8|0;k[X>>2]=W;k[X+4>>2]=Q;X=J-U|0;U=N-S|0;S=bFa(V|0,I|0,X|0,((X|0)<0)<<31>>31|0)|0;X=Q;I=bFa(K|0,H|0,U|0,((U|0)<0)<<31>>31|0)|0;U=REa(S|0,X|0,I|0,Q|0)|0;I=h+16|0;k[I>>2]=U;k[I+4>>2]=Q;Y=h;Z=R;_=T;break}do if(G){T=h;k[T>>2]=-1;k[T+4>>2]=-1;if(!D){T=C;R=k[T>>2]|0;I=k[T+4>>2]|0;T=b;U=E;X=(k[T>>2]|0)-R|0;S=(k[T+4>>2]|0)-I|0;T=(k[U>>2]|0)-R|0;R=(k[U+4>>2]|0)-I|0;I=bFa(R|0,((R|0)<0)<<31>>31|0,X|0,((X|0)<0)<<31>>31|0)|0;X=Q;R=bFa(T|0,((T|0)<0)<<31>>31|0,S|0,((S|0)<0)<<31>>31|0)|0;S=REa(I|0,X|0,R|0,Q|0)|0;$=S;aa=Q;ba=-1;ca=-1;M=36;break}S=h+8|0;k[S>>2]=-1;k[S+4>>2]=-1;if(!E){S=C;R=k[S>>2]|0;X=k[S+4>>2]|0;S=D;I=b;T=(k[S>>2]|0)-R|0;U=(k[S+4>>2]|0)-X|0;S=(k[I>>2]|0)-R|0;R=(k[I+4>>2]|0)-X|0;X=bFa(R|0,((R|0)<0)<<31>>31|0,T|0,((T|0)<0)<<31>>31|0)|0;T=Q;R=bFa(S|0,((S|0)<0)<<31>>31|0,U|0,((U|0)<0)<<31>>31|0)|0;U=REa(X|0,T|0,R|0,Q|0)|0;da=U;ea=Q;fa=-1;ga=-1}else{da=-1;ea=-1;fa=-1;ga=-1}}else{U=b;R=k[U>>2]|0;T=k[U+4>>2]|0;U=D;X=E;S=(k[U>>2]|0)-R|0;I=(k[U+4>>2]|0)-T|0;U=(k[X>>2]|0)-R|0;R=(k[X+4>>2]|0)-T|0;T=bFa(R|0,((R|0)<0)<<31>>31|0,S|0,((S|0)<0)<<31>>31|0)|0;S=Q;R=bFa(U|0,((U|0)<0)<<31>>31|0,I|0,((I|0)<0)<<31>>31|0)|0;I=REa(T|0,S|0,R|0,Q|0)|0;R=Q;S=h;k[S>>2]=I;k[S+4>>2]=R;$=-1;aa=-1;ba=I;ca=R;M=36}while(0);if((M|0)==36){R=h+8|0;k[R>>2]=$;k[R+4>>2]=aa;da=-1;ea=-1;fa=ba;ga=ca}R=h+16|0;k[R>>2]=da;k[R+4>>2]=ea;Y=h;Z=fa;_=ga}else{R=d;Y=d;Z=k[R>>2]|0;_=k[R+4>>2]|0}while(0);d=(Z|0)==0&(_|0)==0;_=Y+8|0;Z=_;ga=(k[Z>>2]|0)==0&(k[Z+4>>2]|0)==0;Z=Y+16|0;fa=Z;h=(k[fa>>2]|0)==0&(k[fa+4>>2]|0)==0;fa=h?2:ga?1:(d^1)<<31>>31;switch((h&1)+(ga?(d?2:1):d&1)|0){case 0:{ha=0;break}case 1:{d=j[52944+(fa<<1)>>1]|0;M4(f,c,d<<16>>16);ga=F;h=k[ga+4>>2]|0;if((h|0)>-1|(h|0)==-1&(k[ga>>2]|0)>>>0>4294967295?(ga=k[f>>2]|0,(k[ga+32+4>>2]|0)<0):0){j5(a,b,ga,0);r=e;return}ha=d;break}default:{d=o+56|0;ga=o+4|0;k[o>>2]=27524;k[d>>2]=27544;B=0;wa(508,o+56|0,ga|0);h=B;B=0;if(h&1){h=Rb()|0;ia=Q;ja=h;vva(d);Qb(ja|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[d>>2]=27488;B=0;va(448,ga|0);h=B;B=0;do if(h&1){ea=Rb()|0;ka=Q;la=ea}else{k[ga>>2]=27560;ea=o+36|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[o+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,ga|0,f|0);da=B;B=0;if(da&1){da=Rb()|0;ca=Q;Yua(f);Yua(ea);Ava(ga);ka=ca;la=da;break}Yua(f);B=0;da=Ia(40,o|0,123648,52)|0;ca=B;B=0;a:do if(!(ca&1)?(B=0,Xa(239,da|0,0)|0,ba=B,B=0,!(ba&1)):0){ba=Ab(20)|0;B=0;eb(502,p|0,121503,60);aa=B;B=0;do if(!(aa&1)){B=0;eb(502,q|0,123638,9);$=B;B=0;if($&1){$=Rb()|0;E=Q;Yua(p);ma=E;na=$;break}B=0;wa(510,s|0,ga|0);$=B;B=0;if($&1){$=Rb()|0;oa=1;pa=Q;qa=$}else{B=0;ua(163,ba|0,p|0,q|0,1180,s|0);$=B;B=0;if($&1)ra=1;else{B=0;eb(503,ba|0,1240,229);B=0;ra=0}$=Rb()|0;E=Q;Yua(s);oa=ra;pa=E;qa=$}Yua(q);Yua(p);if(oa){ma=pa;na=qa}else{sa=pa;ta=qa;break a}}else{$=Rb()|0;ma=Q;na=$}while(0);zb(ba|0);sa=ma;ta=na}else M=60;while(0);if((M|0)==60){da=Rb()|0;sa=Q;ta=da}k[o>>2]=27468;k[d>>2]=27488;k[ga>>2]=27560;Yua(ea);Ava(ga);vva(d);xa=sa;ya=ta;Qb(ya|0)}while(0);ia=ka;ja=la;vva(d);Qb(ja|0)}}Y4(c,0);Y4(c,1);Y4(c,2);k[g>>2]=c;ja=a+48|0;d=k[ja>>2]|0;la=d+1|0;ka=k[a+12>>2]|0;ia=ka+(d*48|0)|0;k[g+4>>2]=ia;ta=d+2|0;k[ja>>2]=ta;ja=ka+(la*48|0)|0;k[g+8>>2]=ja;if((ta|0)>(k[a+40>>2]|0)){a=t+56|0;ta=t+4|0;k[t>>2]=27524;k[a>>2]=27544;B=0;wa(508,t+56|0,ta|0);sa=B;B=0;if(sa&1){sa=Rb()|0;za=Q;Aa=sa;vva(a);Qb(Aa|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[a>>2]=27488;B=0;va(448,ta|0);sa=B;B=0;do if(sa&1){ga=Rb()|0;Ba=Q;Ca=ga}else{k[ta>>2]=27560;ga=t+36|0;k[ga>>2]=0;k[ga+4>>2]=0;k[ga+8>>2]=0;k[ga+12>>2]=0;k[t+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,ta|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;na=Q;Yua(f);Yua(ga);Ava(ta);Ba=na;Ca=o;break}Yua(f);B=0;o=Ia(40,t|0,123701,20)|0;na=B;B=0;b:do if(!(na&1)?(B=0,Xa(239,o|0,0)|0,ma=B,B=0,!(ma&1)):0){ma=Ab(20)|0;B=0;eb(502,u|0,121503,60);qa=B;B=0;do if(!(qa&1)){B=0;eb(502,v|0,123638,9);pa=B;B=0;if(pa&1){pa=Rb()|0;oa=Q;Yua(u);Da=oa;Ea=pa;break}B=0;wa(510,w|0,ta|0);pa=B;B=0;if(pa&1){pa=Rb()|0;Fa=1;Ga=Q;Ha=pa}else{B=0;ua(163,ma|0,u|0,v|0,1193,w|0);pa=B;B=0;if(pa&1)Ja=1;else{B=0;eb(503,ma|0,1240,229);B=0;Ja=0}pa=Rb()|0;oa=Q;Yua(w);Fa=Ja;Ga=oa;Ha=pa}Yua(v);Yua(u);if(Fa){Da=Ga;Ea=Ha}else{Ka=Ga;La=Ha;break b}}else{pa=Rb()|0;Da=Q;Ea=pa}while(0);zb(ma|0);Ka=Da;La=Ea}else M=84;while(0);if((M|0)==84){o=Rb()|0;Ka=Q;La=o}k[t>>2]=27468;k[a>>2]=27488;k[ta>>2]=27560;Yua(ga);Ava(ta);vva(a);xa=Ka;ya=La;Qb(ya|0)}while(0);za=Ba;Aa=Ca;vva(a);Qb(Aa|0)}Aa=ja;a=ja;Ca=c;Ba=a+44|0;do{k[a>>2]=k[Ca>>2];a=a+4|0;Ca=Ca+4|0}while((a|0)<(Ba|0));UEa(ia|0,c|0,44)|0;k[c+40>>2]=ia;k[ka+(d*48|0)+40>>2]=Aa;k[c>>2]=b;k[ka+(d*48|0)+4>>2]=b;k[ka+(la*48|0)+8>>2]=b;b=Y;Y=k[b+4>>2]|0;Aa=F;k[Aa>>2]=k[b>>2];k[Aa+4>>2]=Y;Y=_;_=k[Y+4>>2]|0;Aa=ka+(d*48|0)+32|0;k[Aa>>2]=k[Y>>2];k[Aa+4>>2]=_;_=Z;Z=k[_+4>>2]|0;Aa=ka+(la*48|0)+32|0;k[Aa>>2]=k[_>>2];k[Aa+4>>2]=Z;T4(c,0);T4(ia,1);T4(ja,2);U4(c,2,ja,0);U4(ia,0,c,1);U4(ja,1,ia,2);X4(c);X4(ia);X4(ja);if((fa|0)<=-1){r=e;return}if(S4(k[g+(fa<<2)>>2]|0,ha,0)|0){r=e;return}e=x+56|0;ha=x+4|0;k[x>>2]=27524;k[e>>2]=27544;B=0;wa(508,x+56|0,ha|0);fa=B;B=0;if(fa&1){fa=Rb()|0;Ma=Q;Na=fa;vva(e);Qb(Na|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[e>>2]=27488;B=0;va(448,ha|0);fa=B;B=0;do if(fa&1){g=Rb()|0;Oa=Q;Pa=g}else{k[ha>>2]=27560;g=x+36|0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[x+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,ha|0,f|0);ja=B;B=0;if(ja&1){ja=Rb()|0;ia=Q;Yua(f);Yua(g);Ava(ha);Oa=ia;Pa=ja;break}Yua(f);B=0;ja=Ia(40,x|0,123722,29)|0;ia=B;B=0;c:do if(!(ia&1)?(B=0,Xa(239,ja|0,0)|0,c=B,B=0,!(c&1)):0){c=Ab(20)|0;B=0;eb(502,y|0,121503,60);Z=B;B=0;do if(!(Z&1)){B=0;eb(502,z|0,123638,9);Aa=B;B=0;if(Aa&1){Aa=Rb()|0;_=Q;Yua(y);Qa=_;Ra=Aa;break}B=0;wa(510,A|0,ha|0);Aa=B;B=0;if(Aa&1){Aa=Rb()|0;Sa=1;Ta=Q;Ua=Aa}else{B=0;ua(163,c|0,y|0,z|0,1229,A|0);Aa=B;B=0;if(Aa&1)Va=1;else{B=0;eb(503,c|0,1240,229);B=0;Va=0}Aa=Rb()|0;_=Q;Yua(A);Sa=Va;Ta=_;Ua=Aa}Yua(z);Yua(y);if(Sa){Qa=Ta;Ra=Ua}else{Wa=Ta;Ya=Ua;break c}}else{Aa=Rb()|0;Qa=Q;Ra=Aa}while(0);zb(c|0);Wa=Qa;Ya=Ra}else M=109;while(0);if((M|0)==109){ja=Rb()|0;Wa=Q;Ya=ja}k[x>>2]=27468;k[e>>2]=27488;k[ha>>2]=27560;Yua(g);Ava(ha);vva(e);xa=Wa;ya=Ya;Qb(ya|0)}while(0);Ma=Oa;Na=Pa;vva(e);Qb(Na|0)}Na=i+56|0;e=i+4|0;k[i>>2]=27524;k[Na>>2]=27544;B=0;wa(508,i+56|0,e|0);Pa=B;B=0;if(Pa&1){Pa=Rb()|0;Za=Q;_a=Pa;vva(Na);Qb(_a|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[Na>>2]=27488;B=0;va(448,e|0);Pa=B;B=0;do if(Pa&1){Oa=Rb()|0;$a=Q;ab=Oa}else{k[e>>2]=27560;Oa=i+36|0;k[Oa>>2]=0;k[Oa+4>>2]=0;k[Oa+8>>2]=0;k[Oa+12>>2]=0;k[i+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,e|0,f|0);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;Ya=Q;Yua(f);Yua(Oa);Ava(e);$a=Ya;ab=Ma;break}Yua(f);B=0;Ma=Ia(40,i|0,123585,52)|0;Ya=B;B=0;d:do if(!(Ya&1)?(B=0,Xa(239,Ma|0,0)|0,Wa=B,B=0,!(Wa&1)):0){Wa=Ab(20)|0;B=0;eb(502,l|0,121503,60);ha=B;B=0;do if(!(ha&1)){B=0;eb(502,m|0,123638,9);x=B;B=0;if(x&1){x=Rb()|0;Ra=Q;Yua(l);bb=Ra;cb=x;break}B=0;wa(510,n|0,e|0);x=B;B=0;if(x&1){x=Rb()|0;db=Q;fb=x;gb=1}else{B=0;ua(163,Wa|0,l|0,m|0,1138,n|0);x=B;B=0;if(x&1)hb=1;else{B=0;eb(503,Wa|0,1240,229);B=0;hb=0}x=Rb()|0;Ra=Q;Yua(n);db=Ra;fb=x;gb=hb}Yua(m);Yua(l);if(gb){bb=db;cb=fb}else{ib=db;jb=fb;break d}}else{x=Rb()|0;bb=Q;cb=x}while(0);zb(Wa|0);ib=bb;jb=cb}else M=20;while(0);if((M|0)==20){Ma=Rb()|0;ib=Q;jb=Ma}k[i>>2]=27468;k[Na>>2]=27488;k[e>>2]=27560;Yua(Oa);Ava(e);vva(Na);xa=ib;ya=jb;Qb(ya|0)}while(0);Za=$a;_a=ab;vva(Na);Qb(_a|0)}function k5(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0;d=r;r=r+976|0;e=d+952|0;f=d+912|0;g=d+776|0;h=d+940|0;i=d+928|0;l=d+916|0;n=d+32|0;o=d+768|0;p=d+24|0;q=d+16|0;s=d+624|0;t=d+620|0;u=d+632|0;v=d+600|0;w=d+452|0;x=d+440|0;y=d+8|0;z=d+160|0;A=d+156|0;C=d+616|0;D=d+612|0;E=d+464|0;F=d+144|0;G=d+132|0;H=d+120|0;I=d;J=d+304|0;K=d+108|0;L=d+96|0;M=d+84|0;N=d+80|0;O=d+76|0;P=d+168|0;R=d+64|0;S=d+52|0;T=d+40|0;k[f>>2]=0;U=a+64|0;if((k[U>>2]|0)!=0?(k[b+64>>2]|0)!=0:0){k[c>>2]=0;k[c+4>>2]=0;V=m[52932+(j[a+60>>1]<<2)>>1]|0;k[n>>2]=k[U>>2];k[n+4>>2]=V&3;k[o>>2]=0;V=G4(n,o)|0;do if(!V){o=p;k[o>>2]=-1;k[o+4>>2]=-1;F4(s,n);o=m[52956+(k[s+4>>2]<<1)>>1]&3;U=n;k[U>>2]=k[s>>2];k[U+4>>2]=o;k[t>>2]=0;o=G4(n,t)|0;if(o){U=o;W=k[U>>2]|0;X=k[U+4>>2]|0;U=a;Y=b;Z=(k[U>>2]|0)-W|0;_=(k[U+4>>2]|0)-X|0;U=(k[Y>>2]|0)-W|0;W=(k[Y+4>>2]|0)-X|0;X=bFa(W|0,((W|0)<0)<<31>>31|0,Z|0,((Z|0)<0)<<31>>31|0)|0;Z=Q;W=bFa(U|0,((U|0)<0)<<31>>31|0,_|0,((_|0)<0)<<31>>31|0)|0;_=REa(X|0,Z|0,W|0,Q|0)|0;$=q;aa=b;ba=a;ca=_;da=Q;ea=o;break}o=u+56|0;_=u+4|0;k[u>>2]=27524;k[o>>2]=27544;B=0;wa(508,u+56|0,_|0);W=B;B=0;if(W&1){W=Rb()|0;fa=Q;ga=W;vva(o);Qb(ga|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[o>>2]=27488;B=0;va(448,_|0);W=B;B=0;do if(W&1){Z=Rb()|0;ha=Q;ia=Z}else{k[_>>2]=27560;Z=u+36|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[u+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,_|0,e|0);X=B;B=0;if(X&1){X=Rb()|0;U=Q;Yua(e);Yua(Z);Ava(_);ha=U;ia=X;break}Yua(e);B=0;X=Ia(40,u|0,123775,3)|0;U=B;B=0;a:do if(!(U&1)?(B=0,Xa(239,X|0,0)|0,Y=B,B=0,!(Y&1)):0){Y=Ab(20)|0;B=0;eb(502,v|0,121503,60);ja=B;B=0;do if(!(ja&1)){B=0;eb(502,w|0,123765,9);ka=B;B=0;if(ka&1){ka=Rb()|0;la=Q;Yua(v);ma=ka;na=la;break}B=0;wa(510,x|0,_|0);la=B;B=0;if(la&1){la=Rb()|0;oa=1;pa=la;qa=Q}else{B=0;ua(163,Y|0,v|0,w|0,4897,x|0);la=B;B=0;if(la&1)ra=1;else{B=0;eb(503,Y|0,1240,229);B=0;ra=0}la=Rb()|0;ka=Q;Yua(x);oa=ra;pa=la;qa=ka}Yua(w);Yua(v);if(oa){ma=pa;na=qa}else{sa=pa;ta=qa;break a}}else{ka=Rb()|0;ma=ka;na=Q}while(0);zb(Y|0);sa=ma;ta=na}else xa=44;while(0);if((xa|0)==44){X=Rb()|0;sa=X;ta=Q}k[u>>2]=27468;k[o>>2]=27488;k[_>>2]=27560;Yua(Z);Ava(_);vva(o);ya=sa;za=ta;Qb(ya|0)}while(0);fa=ha;ga=ia;vva(o);Qb(ga|0)}else{_=V;W=k[_>>2]|0;X=k[_+4>>2]|0;_=a;U=b;ja=(k[_>>2]|0)-W|0;ka=(k[_+4>>2]|0)-X|0;_=(k[U>>2]|0)-W|0;W=(k[U+4>>2]|0)-X|0;X=bFa(W|0,((W|0)<0)<<31>>31|0,ja|0,((ja|0)<0)<<31>>31|0)|0;ja=Q;W=bFa(_|0,((_|0)<0)<<31>>31|0,ka|0,((ka|0)<0)<<31>>31|0)|0;ka=REa(X|0,ja|0,W|0,Q|0)|0;W=Q;ja=p;k[ja>>2]=ka;k[ja+4>>2]=W;$=q;aa=b;ba=a;ca=ka;da=W;ea=V}while(0);V=p;k[V>>2]=ca;k[V+4>>2]=da;V=z+4|0;$=y+4|0;ga=ca;ca=da;da=0;ia=ea;while(1){if((ia|0)==(b|0)){xa=142;break}F4(z,n);ha=m[52956+(k[V>>2]<<1)>>1]|0;k[y>>2]=k[z>>2];k[$>>2]=ha&3;k[A>>2]=0;ha=ia;ia=G4(y,A)|0;fa=q;k[fa>>2]=ga;k[fa+4>>2]=ca;fa=(ia|0)!=0;if(fa){ta=ia;sa=k[ta>>2]|0;u=k[ta+4>>2]|0;ta=ba;na=aa;ma=(k[ta>>2]|0)-sa|0;qa=(k[ta+4>>2]|0)-u|0;ta=(k[na>>2]|0)-sa|0;sa=(k[na+4>>2]|0)-u|0;u=bFa(sa|0,((sa|0)<0)<<31>>31|0,ma|0,((ma|0)<0)<<31>>31|0)|0;ma=Q;sa=bFa(ta|0,((ta|0)<0)<<31>>31|0,qa|0,((qa|0)<0)<<31>>31|0)|0;qa=REa(u|0,ma|0,sa|0,Q|0)|0;Aa=qa;Ba=Q}else{Aa=ga;Ba=ca}qa=p;k[qa>>2]=Aa;k[qa+4>>2]=Ba;if(((Ba|0)>0|(Ba|0)==0&Aa>>>0>0)&(ca|0)<0){Ca=fa;Da=ha;xa=58;break}ha=y;fa=k[ha+4>>2]|0;qa=n;k[qa>>2]=k[ha>>2];k[qa+4>>2]=fa;if((da|0)>1998){xa=118;break}if((ea|0)==(ia|0)){Ea=-1;xa=143;break}else{ga=Aa;ca=Ba;da=da+1|0}}if((xa|0)==58){k[C>>2]=a;k[D>>2]=b;da=m[52956+(k[$>>2]<<1)>>1]&3;$=y;k[$>>2]=k[y>>2];k[$+4>>2]=da;if(!((Da|0)!=0&Ca)){Ca=E+56|0;Da=E+4|0;k[E>>2]=27524;k[Ca>>2]=27544;B=0;wa(508,E+56|0,Da|0);da=B;B=0;if(da&1){da=Rb()|0;Fa=Q;Ga=da;vva(Ca);Qb(Ga|0)}k[E+128>>2]=0;k[E+132>>2]=-1;k[E>>2]=27468;k[Ca>>2]=27488;B=0;va(448,Da|0);da=B;B=0;do if(da&1){$=Rb()|0;Ha=Q;Ja=$}else{k[Da>>2]=27560;$=E+36|0;k[$>>2]=0;k[$+4>>2]=0;k[$+8>>2]=0;k[$+12>>2]=0;k[E+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,Da|0,e|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;ca=Q;Yua(e);Yua($);Ava(Da);Ha=ca;Ja=Ba;break}Yua(e);B=0;Ba=Ia(40,E|0,123779,10)|0;ca=B;B=0;b:do if(!(ca&1)?(B=0,Xa(239,Ba|0,0)|0,Aa=B,B=0,!(Aa&1)):0){Aa=Ab(20)|0;B=0;eb(502,F|0,121503,60);ga=B;B=0;do if(!(ga&1)){B=0;eb(502,G|0,123765,9);ia=B;B=0;if(ia&1){ia=Rb()|0;ea=Q;Yua(F);Ka=ia;La=ea;break}B=0;wa(510,H|0,Da|0);ea=B;B=0;if(ea&1){ea=Rb()|0;Ma=1;Na=ea;Oa=Q}else{B=0;ua(163,Aa|0,F|0,G|0,4914,H|0);ea=B;B=0;if(ea&1)Pa=1;else{B=0;eb(503,Aa|0,1240,229);B=0;Pa=0}ea=Rb()|0;ia=Q;Yua(H);Ma=Pa;Na=ea;Oa=ia}Yua(G);Yua(F);if(Ma){Ka=Na;La=Oa}else{Qa=Na;Ra=Oa;break b}}else{ia=Rb()|0;Ka=ia;La=Q}while(0);zb(Aa|0);Qa=Ka;Ra=La}else xa=74;while(0);if((xa|0)==74){Ba=Rb()|0;Qa=Ba;Ra=Q}k[E>>2]=27468;k[Ca>>2]=27488;k[Da>>2]=27560;Yua($);Ava(Da);vva(Ca);ya=Qa;za=Ra;Qb(ya|0)}while(0);Fa=Ha;Ga=Ja;vva(Ca);Qb(Ga|0)}Ga=I;k[Ga>>2]=0;k[Ga+4>>2]=0;Ga=0;Ca=0;while(1){if(!(r5(C,D,y,I,q,p,f)|0)){xa=112;break}Ja=QEa(Ga|0,Ca|0,1,0)|0;Ha=Q;if((Ca|0)>0|(Ca|0)==0&Ga>>>0>1e7){Sa=Ja;Ta=Ha;break}else{Ga=Ja;Ca=Ha}}if((xa|0)==112){k[N>>2]=0;Ca=G4(y,N)|0;k[O>>2]=1;N=G4(y,O)|0;if(!((Ca|0)==(a|0)&(N|0)==(b|0))?!((Ca|0)==(b|0)&(N|0)==(a|0)):0){N=y;Ca=k[N+4>>2]|0;O=c;k[O>>2]=k[N>>2];k[O+4>>2]=Ca;Ua=-2}else{E4(y);a5(a,1,0)|0;a5(b,1,0)|0;Ca=y;y=k[Ca+4>>2]|0;O=c;k[O>>2]=k[Ca>>2];k[O+4>>2]=y;Ua=k[f>>2]|0}Ea=Ua;r=d;return Ea|0}Ua=J+56|0;y=J+4|0;k[J>>2]=27524;k[Ua>>2]=27544;B=0;wa(508,J+56|0,y|0);O=B;B=0;if(O&1){O=Rb()|0;Va=Q;Wa=O;vva(Ua);Qb(Wa|0)}k[J+128>>2]=0;k[J+132>>2]=-1;k[J>>2]=27468;k[Ua>>2]=27488;B=0;va(448,y|0);O=B;B=0;do if(O&1){Ca=Rb()|0;Ya=Q;Za=Ca}else{k[y>>2]=27560;Ca=J+36|0;k[Ca>>2]=0;k[Ca+4>>2]=0;k[Ca+8>>2]=0;k[Ca+12>>2]=0;k[J+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,y|0,e|0);N=B;B=0;if(N&1){N=Rb()|0;Ga=Q;Yua(e);Yua(Ca);Ava(y);Ya=Ga;Za=N;break}Yua(e);B=0;N=Ia(40,J|0,123790,33)|0;Ga=B;B=0;c:do if(((((!(Ga&1)?(B=0,p=Xa(242,N|0,k[f>>2]|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,p|0,123824,18)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(44,q|0,Sa|0,Ta|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,p|0,123843,9)|0,p=B,B=0,!(p&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,K|0,121503,60);p=B;B=0;do if(!(p&1)){B=0;eb(502,L|0,123765,9);I=B;B=0;if(I&1){I=Rb()|0;D=Q;Yua(K);_a=I;$a=D;break}B=0;wa(510,M|0,y|0);D=B;B=0;if(D&1){D=Rb()|0;ab=1;bb=D;cb=Q}else{B=0;ua(163,q|0,K|0,L|0,4919,M|0);D=B;B=0;if(D&1)db=1;else{B=0;eb(503,q|0,1240,229);B=0;db=0}D=Rb()|0;I=Q;Yua(M);ab=db;bb=D;cb=I}Yua(L);Yua(K);if(ab){_a=bb;$a=cb}else{fb=bb;gb=cb;break c}}else{I=Rb()|0;_a=I;$a=Q}while(0);zb(q|0);fb=_a;gb=$a}else xa=104;while(0);if((xa|0)==104){N=Rb()|0;fb=N;gb=Q}k[J>>2]=27468;k[Ua>>2]=27488;k[y>>2]=27560;Yua(Ca);Ava(y);vva(Ua);ya=fb;za=gb;Qb(ya|0)}while(0);Va=Ya;Wa=Za;vva(Ua);Qb(Wa|0)}else if((xa|0)==118){Wa=P+56|0;Ua=P+4|0;k[P>>2]=27524;k[Wa>>2]=27544;B=0;wa(508,P+56|0,Ua|0);Za=B;B=0;if(Za&1){Za=Rb()|0;hb=Q;ib=Za;vva(Wa);Qb(ib|0)}k[P+128>>2]=0;k[P+132>>2]=-1;k[P>>2]=27468;k[Wa>>2]=27488;B=0;va(448,Ua|0);Za=B;B=0;do if(Za&1){Ya=Rb()|0;jb=Q;kb=Ya}else{k[Ua>>2]=27560;Ya=P+36|0;k[Ya>>2]=0;k[Ya+4>>2]=0;k[Ya+8>>2]=0;k[Ya+12>>2]=0;k[P+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,Ua|0,e|0);Va=B;B=0;if(Va&1){Va=Rb()|0;gb=Q;Yua(e);Yua(Ya);Ava(Ua);jb=gb;kb=Va;break}Yua(e);B=0;Va=Ia(40,P|0,123853,7)|0;gb=B;B=0;d:do if(!(gb&1)?(B=0,Xa(239,Va|0,0)|0,fb=B,B=0,!(fb&1)):0){fb=Ab(20)|0;B=0;eb(502,R|0,121503,60);y=B;B=0;do if(!(y&1)){B=0;eb(502,S|0,123765,9);J=B;B=0;if(J&1){J=Rb()|0;$a=Q;Yua(R);lb=J;mb=$a;break}B=0;wa(510,T|0,Ua|0);$a=B;B=0;if($a&1){$a=Rb()|0;nb=1;ob=$a;pb=Q}else{B=0;ua(163,fb|0,R|0,S|0,4938,T|0);$a=B;B=0;if($a&1)qb=1;else{B=0;eb(503,fb|0,1240,229);B=0;qb=0}$a=Rb()|0;J=Q;Yua(T);nb=qb;ob=$a;pb=J}Yua(S);Yua(R);if(nb){lb=ob;mb=pb}else{rb=ob;sb=pb;break d}}else{J=Rb()|0;lb=J;mb=Q}while(0);zb(fb|0);rb=lb;sb=mb}else xa=133;while(0);if((xa|0)==133){Va=Rb()|0;rb=Va;sb=Q}k[P>>2]=27468;k[Wa>>2]=27488;k[Ua>>2]=27560;Yua(Ya);Ava(Ua);vva(Wa);ya=rb;za=sb;Qb(ya|0)}while(0);hb=jb;ib=kb;vva(Wa);Qb(ib|0)}else if((xa|0)==142){E4(n);ib=n;n=k[ib+4>>2]|0;Wa=c;k[Wa>>2]=k[ib>>2];k[Wa+4>>2]=n;a5(a,1,0)|0;a5(b,1,0)|0;Ea=0;r=d;return Ea|0}else if((xa|0)==143){r=d;return Ea|0}}Ea=g+56|0;d=g+4|0;k[g>>2]=27524;k[Ea>>2]=27544;B=0;wa(508,g+56|0,d|0);b=B;B=0;if(b&1){b=Rb()|0;tb=Q;ub=b;vva(Ea);Qb(ub|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[Ea>>2]=27488;B=0;va(448,d|0);b=B;B=0;do if(b&1){a=Rb()|0;vb=Q;wb=a}else{k[d>>2]=27560;a=g+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,d|0,e|0);n=B;B=0;if(n&1){n=Rb()|0;Wa=Q;Yua(e);Yua(a);Ava(d);vb=Wa;wb=n;break}Yua(e);B=0;n=Ia(40,g|0,123752,12)|0;Wa=B;B=0;e:do if(!(Wa&1)?(B=0,Xa(239,n|0,0)|0,ib=B,B=0,!(ib&1)):0){ib=Ab(20)|0;B=0;eb(502,h|0,121503,60);c=B;B=0;do if(!(c&1)){B=0;eb(502,i|0,123765,9);kb=B;B=0;if(kb&1){kb=Rb()|0;jb=Q;Yua(h);xb=kb;yb=jb;break}B=0;wa(510,l|0,d|0);jb=B;B=0;if(jb&1){jb=Rb()|0;Bb=jb;Cb=Q;Db=1}else{B=0;ua(163,ib|0,h|0,i|0,4880,l|0);jb=B;B=0;if(jb&1)Eb=1;else{B=0;eb(503,ib|0,1240,229);B=0;Eb=0}jb=Rb()|0;kb=Q;Yua(l);Bb=jb;Cb=kb;Db=Eb}Yua(i);Yua(h);if(Db){xb=Bb;yb=Cb}else{Fb=Bb;Gb=Cb;break e}}else{kb=Rb()|0;xb=kb;yb=Q}while(0);zb(ib|0);Fb=xb;Gb=yb}else xa=18;while(0);if((xa|0)==18){n=Rb()|0;Fb=n;Gb=Q}k[g>>2]=27468;k[Ea>>2]=27488;k[d>>2]=27560;Yua(a);Ava(d);vva(Ea);ya=Fb;za=Gb;Qb(ya|0)}while(0);tb=vb;ub=wb;vva(Ea);Qb(ub|0);return 0}function l5(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0;c=r;r=r+912|0;d=c+896|0;e=c+696|0;f=c+880|0;g=c+868|0;h=c+856|0;i=c+560|0;l=c+844|0;n=c+832|0;o=c+548|0;q=c;s=c+544|0;t=c+264|0;u=c+408|0;v=c+116|0;w=c+104|0;x=c+92|0;y=c+272|0;z=c+80|0;A=c+68|0;C=c+56|0;D=c+48|0;E=c+128|0;F=c+32|0;G=c+20|0;H=c+8|0;I=a+48|0;J=k[I>>2]|0;K=Rqa(J>>>0>2147483647?-1:J<<1)|0;L=Rqa(J>>>0>1073741823?-1:J<<2)|0;M=(J|0)>0;if(M){N=a+12|0;O=0;do{k[(k[N>>2]|0)+(O*48|0)+40>>2]=0;O=O+1|0}while((O|0)<(J|0));if(M){M=a+12|0;O=J;N=0;P=0;while(1){R=k[M>>2]|0;S=R+(P*48|0)|0;T=R+(P*48|0)+40|0;if(!(k[T>>2]|0)){k[T>>2]=S;k[L>>2]=S;j[K>>1]=3;S=3;R=0;while(1){U=K+(R<<1)|0;V=S+-1<<16>>16;j[U>>1]=V;a:do if(!(S<<16>>16))W=R;else{X=U;Y=V;Z=R;while(1){_=L+(Z<<2)|0;$=Y;while(1){aa=$<<16>>16;ba=k[_>>2]|0;if((P4(ba,aa)|0)==0?(ca=Z4(ba,aa)|0,aa=ca+40|0,(k[aa>>2]|0)==0):0){da=ca;ea=aa;break}aa=j[X>>1]|0;$=aa+-1<<16>>16;j[X>>1]=$;if(!(aa<<16>>16)){W=Z;break a}}$=Z+1|0;k[ea>>2]=k[T>>2];k[T>>2]=da;_=K+($<<1)|0;k[L+($<<2)>>2]=da;j[_>>1]=2;X=_;Y=2;Z=$}}while(0);V=W+-1|0;if((W|0)<=0)break;S=j[K+(V<<1)>>1]|0;R=V}fa=k[I>>2]|0;ga=N+1|0}else{fa=O;ga=N}P=P+1|0;if((P|0)>=(fa|0)){ha=fa;ia=ga;break}else{O=fa;N=ga}}ga=a+64|0;k[ga>>2]=0;if((ha|0)>0){N=a+12|0;fa=0;O=ia;P=0;while(1){W=k[N>>2]|0;do if(k[W+(P*48|0)+40>>2]|0){if(((k[W+(P*48|0)>>2]|0)!=0?(k[W+(P*48|0)+4>>2]|0)!=0:0)?(k[W+(P*48|0)+8>>2]|0)!=0:0){ja=fa;ka=O;break}da=O+-1|0;ea=W+(P*48|0)|0;M=fa+-1|0;k[ga>>2]=M;if(!ea){ja=M;ka=da}else{R=M;M=ea;while(1){ea=R+1|0;S=M+40|0;M=k[S>>2]|0;k[S>>2]=0;if(!M){la=ea;break}else R=ea}k[ga>>2]=la;ja=la;ka=da}}else{ja=fa;ka=O}while(0);P=P+1|0;if((P|0)>=(ha|0)){ma=ga;na=ha;oa=ja;pa=ka;break}else{fa=ja;O=ka}}}else{ma=ga;na=ha;oa=0;pa=ia}}else qa=18}else qa=18;if((qa|0)==18){ia=a+64|0;k[ia>>2]=0;ma=ia;na=J;oa=0;pa=0}Tqa(K);if(!((pa|0)!=0&(na|0)!=(oa|0))){oa=e+56|0;na=e+4|0;k[e>>2]=27524;k[oa>>2]=27544;B=0;wa(508,e+56|0,na|0);K=B;B=0;if(K&1){K=Rb()|0;ra=Q;sa=K;vva(oa);Qb(sa|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[oa>>2]=27488;B=0;va(448,na|0);K=B;B=0;do if(K&1){J=Rb()|0;ta=Q;xa=J}else{k[na>>2]=27560;J=e+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,na|0,d|0);ia=B;B=0;if(ia&1){ia=Rb()|0;ha=Q;Yua(d);Yua(J);Ava(na);ta=ha;xa=ia;break}Yua(d);B=0;ia=Ia(40,e|0,123861,52)|0;ha=B;B=0;b:do if(!(ha&1)?(B=0,Xa(239,ia|0,0)|0,ga=B,B=0,!(ga&1)):0){ga=Ab(20)|0;B=0;eb(502,f|0,121503,60);ka=B;B=0;do if(!(ka&1)){B=0;eb(502,g|0,123914,13);O=B;B=0;if(O&1){O=Rb()|0;ja=Q;Yua(f);ya=O;za=ja;break}B=0;wa(510,h|0,na|0);ja=B;B=0;if(ja&1){ja=Rb()|0;Aa=1;Ba=ja;Ca=Q}else{B=0;ua(163,ga|0,f|0,g|0,2503,h|0);ja=B;B=0;if(ja&1)Da=1;else{B=0;eb(503,ga|0,1240,229);B=0;Da=0}ja=Rb()|0;O=Q;Yua(h);Aa=Da;Ba=ja;Ca=O}Yua(g);Yua(f);if(Aa){ya=Ba;za=Ca}else{Ea=Ba;Fa=Ca;break b}}else{O=Rb()|0;ya=O;za=Q}while(0);zb(ga|0);Ea=ya;Fa=za}else qa=45;while(0);if((qa|0)==45){ia=Rb()|0;Ea=ia;Fa=Q}k[e>>2]=27468;k[oa>>2]=27488;k[na>>2]=27560;Yua(J);Ava(na);vva(oa);Ga=Ea;Ha=Fa;Qb(Ga|0)}while(0);ra=ta;sa=xa;vva(oa);Qb(sa|0)}Tqa(L);L=(b|0)!=0;if((!L?(b=k[a>>2]|0,(k[b+32>>2]|0)!=0):0)?(sa=k[b+12>>2]|0,(sa|0)!=0):0){b=a+60|0;oa=a+28|0;xa=k[oa>>2]|0;ta=(xa|0)==0;if((sa|0)==(k[b>>2]|0))if(ta)qa=137;else Ja=k[a>>2]|0;else if(ta)qa=137;else{Tqa(xa);k[oa>>2]=0;qa=137}if((qa|0)==137){xa=k[a>>2]|0;ta=k[xa+12>>2]|0;sa=Rqa(ta>>>0>268435455?-1:ta<<4)|0;k[oa>>2]=sa;Ja=xa}k[b>>2]=k[Ja+12>>2];Ja=k[a+44>>2]|0;if((Ja|0)>0){xa=a+8|0;sa=0;do{ta=k[xa>>2]|0;j[ta+(sa*72|0)+60>>1]=0;k[ta+(sa*72|0)+64>>2]=0;sa=sa+1|0}while((sa|0)!=(Ja|0))}Ja=k[I>>2]|0;if((Ja|0)>0){sa=a+12|0;xa=0;do{X4((k[sa>>2]|0)+(xa*48|0)|0);xa=xa+1|0;ta=k[I>>2]|0}while((xa|0)<(ta|0));Ka=ta}else Ka=Ja;Ja=Rqa(Ka>>>0>1073741823?-1:Ka<<2)|0;Ka=m5(a)|0;xa=k[I>>2]|0;if((xa|0)>0){sa=k[a+12>>2]|0;ta=0;do{k[Ja+(ta<<2)>>2]=(k[sa+(ta*48|0)+40>>2]|0)!=0?-1:-2;ta=ta+1|0}while((ta|0)<(xa|0))}xa=k[b>>2]|0;c:do if((xa|0)>0){ta=q+4|0;sa=D+4|0;ra=a+12|0;Fa=0;Ea=0;d:while(1){na=k[(k[a>>2]|0)+32>>2]|0;e=k[na+(Fa*12|0)>>2]|0;k[(k[oa>>2]|0)+(Fa<<4)+4>>2]=k[na+(Fa*12|0)+8>>2];na=Ka+((Gpa(k[a>>2]|0,e)|0)<<2)|0;za=k[na>>2]|0;na=k[za>>2]|0;ya=k[za+4>>2]|0;Ca=k[na+64>>2]|0;Ba=k[(k[(k[a>>2]|0)+32>>2]|0)+(Fa*12|0)+4>>2]|0;Aa=k[e>>2]|0;f=k[e+4>>2]|0;e=(+p[Aa+8>>3]-+p[f+8>>3])*(+p[na+8>>3]-+p[ya+8>>3])+(+p[Aa+16>>3]-+p[f+16>>3])*(+p[na+16>>3]-+p[ya+16>>3])<0.0?0-Ba|0:Ba;Ba=k[oa>>2]|0;k[Ba+(Fa<<4)+8>>2]=e;k[Ba+(Fa<<4)+12>>2]=za;za=m[52932+(j[na+60>>1]<<2)>>1]|0;k[q>>2]=Ca;k[ta>>2]=za&3;while(1){k[s>>2]=0;if((G4(q,s)|0)==(ya|0))break;F4(D,q);za=k[D>>2]|0;na=m[52956+(k[sa>>2]<<1)>>1]&3;Ba=q;k[Ba>>2]=za;k[Ba+4>>2]=na;if((Ca|0)==(za|0)){La=Fa;qa=214;break d}}if((e|0)>0){F4(t,q);Ca=k[t>>2]|0;ya=k[oa>>2]|0;k[ya+(Fa<<4)>>2]=Ca;Ma=ya;Na=Ca}else{Ca=k[q>>2]|0;ya=k[oa>>2]|0;k[ya+(Fa<<4)>>2]=Ca;Ma=ya;Na=Ca}Ca=k[ra>>2]|0;ya=Ca;if(Na>>>0<Ca>>>0){Oa=Fa;qa=159;break}if(Na>>>0>=(Ca+((k[I>>2]|0)*48|0)|0)>>>0){Oa=Fa;qa=159;break}if((k[Na+32+4>>2]|0)<0){Oa=Fa;qa=159;break}if(!(k[Na+40>>2]|0)){Oa=Fa;qa=159;break}if((k[Ja+(((Na-ya|0)/48|0)<<2)>>2]|0)>-1)Pa=Ea;else{if((Fa|0)==(Ea|0))Qa=ya;else{ya=Ma+(Fa<<4)|0;Ca=Ma+(Ea<<4)|0;k[d>>2]=k[ya>>2];k[d+4>>2]=k[ya+4>>2];k[d+8>>2]=k[ya+8>>2];k[d+12>>2]=k[ya+12>>2];k[ya>>2]=k[Ca>>2];k[ya+4>>2]=k[Ca+4>>2];k[ya+8>>2]=k[Ca+8>>2];k[ya+12>>2]=k[Ca+12>>2];k[Ca>>2]=k[d>>2];k[Ca+4>>2]=k[d+4>>2];k[Ca+8>>2]=k[d+8>>2];k[Ca+12>>2]=k[d+12>>2];Qa=k[ra>>2]|0}Ca=Ea+1|0;ya=Na;while(1){ga=Ja+(((ya-Qa|0)/48|0)<<2)|0;if((k[ga>>2]|0)>-1){qa=188;break d}k[ga>>2]=Fa;ya=k[ya+40>>2]|0;if((ya|0)==(Na|0)){Pa=Ca;break}}}Fa=Fa+1|0;Ca=k[b>>2]|0;if((Fa|0)>=(Ca|0)){Ra=Ca;Sa=Pa;break c}else Ea=Pa}if((qa|0)==159){Ea=u+56|0;Fa=u+4|0;k[u>>2]=27524;k[Ea>>2]=27544;B=0;wa(508,u+56|0,Fa|0);ra=B;B=0;if(ra&1){ra=Rb()|0;Ta=Q;Ua=ra;vva(Ea);Qb(Ua|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[Ea>>2]=27488;B=0;va(448,Fa|0);ra=B;B=0;do if(ra&1){sa=Rb()|0;Va=Q;Wa=sa}else{k[Fa>>2]=27560;sa=u+36|0;k[sa>>2]=0;k[sa+4>>2]=0;k[sa+8>>2]=0;k[sa+12>>2]=0;k[u+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Fa|0,d|0);ta=B;B=0;if(ta&1){ta=Rb()|0;J=Q;Yua(d);Yua(sa);Ava(Fa);Va=J;Wa=ta;break}Yua(d);B=0;ta=Ia(40,u|0,123944,28)|0;J=B;B=0;e:do if(!(J&1)?(B=0,Ca=Xa(242,ta|0,Oa|0)|0,ya=B,B=0,!(ya&1)):0){B=0;Xa(239,Ca|0,0)|0;Ca=B;B=0;if(Ca&1){qa=175;break}Ca=Ab(20)|0;B=0;eb(502,v|0,121503,60);ya=B;B=0;do if(!(ya&1)){B=0;eb(502,w|0,123914,13);e=B;B=0;if(e&1){e=Rb()|0;ga=Q;Yua(v);Ya=e;Za=ga;break}B=0;wa(510,x|0,Fa|0);ga=B;B=0;if(ga&1){ga=Rb()|0;_a=ga;$a=Q;ab=1}else{B=0;ua(163,Ca|0,v|0,w|0,2627,x|0);ga=B;B=0;if(ga&1)bb=1;else{B=0;eb(503,Ca|0,1240,229);B=0;bb=0}ga=Rb()|0;e=Q;Yua(x);_a=ga;$a=e;ab=bb}Yua(w);Yua(v);if(ab){Ya=_a;Za=$a}else{cb=_a;db=$a;break e}}else{e=Rb()|0;Ya=e;Za=Q}while(0);zb(Ca|0);cb=Ya;db=Za}else qa=175;while(0);if((qa|0)==175){ta=Rb()|0;cb=ta;db=Q}k[u>>2]=27468;k[Ea>>2]=27488;k[Fa>>2]=27560;Yua(sa);Ava(Fa);vva(Ea);Ga=cb;Ha=db;Qb(Ga|0)}while(0);Ta=Va;Ua=Wa;vva(Ea);Qb(Ua|0)}else if((qa|0)==188){Fa=y+56|0;ra=y+4|0;k[y>>2]=27524;k[Fa>>2]=27544;B=0;wa(508,y+56|0,ra|0);ta=B;B=0;if(ta&1){ta=Rb()|0;fb=Q;gb=ta;vva(Fa);Qb(gb|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[Fa>>2]=27488;B=0;va(448,ra|0);ta=B;B=0;do if(ta&1){J=Rb()|0;hb=Q;ib=J}else{k[ra>>2]=27560;J=y+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[y+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ra|0,d|0);ya=B;B=0;if(ya&1){ya=Rb()|0;e=Q;Yua(d);Yua(J);Ava(ra);hb=e;ib=ya;break}Yua(d);B=0;ya=Ia(40,y|0,123973,18)|0;e=B;B=0;f:do if(!(e&1)?(B=0,Xa(239,ya|0,0)|0,ga=B,B=0,!(ga&1)):0){ga=Ab(20)|0;B=0;eb(502,z|0,121503,60);za=B;B=0;do if(!(za&1)){B=0;eb(502,A|0,123914,13);na=B;B=0;if(na&1){na=Rb()|0;Ba=Q;Yua(z);jb=na;kb=Ba;break}B=0;wa(510,C|0,ra|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;lb=1;mb=Ba;nb=Q}else{B=0;ua(163,ga|0,z|0,A|0,2642,C|0);Ba=B;B=0;if(Ba&1)ob=1;else{B=0;eb(503,ga|0,1240,229);B=0;ob=0}Ba=Rb()|0;na=Q;Yua(C);lb=ob;mb=Ba;nb=na}Yua(A);Yua(z);if(lb){jb=mb;kb=nb}else{pb=mb;qb=nb;break f}}else{na=Rb()|0;jb=na;kb=Q}while(0);zb(ga|0);pb=jb;qb=kb}else qa=203;while(0);if((qa|0)==203){ya=Rb()|0;pb=ya;qb=Q}k[y>>2]=27468;k[Fa>>2]=27488;k[ra>>2]=27560;Yua(J);Ava(ra);vva(Fa);Ga=pb;Ha=qb;Qb(Ga|0)}while(0);fb=hb;gb=ib;vva(Fa);Qb(gb|0)}else if((qa|0)==214){ra=E+56|0;ta=E+4|0;k[E>>2]=27524;k[ra>>2]=27544;B=0;wa(508,E+56|0,ta|0);Ea=B;B=0;if(Ea&1){Ea=Rb()|0;rb=Q;sb=Ea;vva(ra);Qb(sb|0)}k[E+128>>2]=0;k[E+132>>2]=-1;k[E>>2]=27468;k[ra>>2]=27488;B=0;va(448,ta|0);Ea=B;B=0;do if(Ea&1){ya=Rb()|0;tb=Q;ub=ya}else{k[ta>>2]=27560;ya=E+36|0;k[ya>>2]=0;k[ya+4>>2]=0;k[ya+8>>2]=0;k[ya+12>>2]=0;k[E+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ta|0,d|0);e=B;B=0;if(e&1){e=Rb()|0;sa=Q;Yua(d);Yua(ya);Ava(ta);tb=sa;ub=e;break}Yua(d);B=0;e=Ia(40,E|0,123944,28)|0;sa=B;B=0;g:do if(!(sa&1)?(B=0,za=Xa(242,e|0,La|0)|0,Ca=B,B=0,!(Ca&1)):0){B=0;Xa(239,za|0,0)|0;za=B;B=0;if(za&1){qa=230;break}za=Ab(20)|0;B=0;eb(502,F|0,121503,60);Ca=B;B=0;do if(!(Ca&1)){B=0;eb(502,G|0,123914,13);na=B;B=0;if(na&1){na=Rb()|0;Ba=Q;Yua(F);vb=na;wb=Ba;break}B=0;wa(510,H|0,ta|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;xb=1;yb=Ba;Bb=Q}else{B=0;ua(163,za|0,F|0,G|0,2651,H|0);Ba=B;B=0;if(Ba&1)Cb=1;else{B=0;eb(503,za|0,1240,229);B=0;Cb=0}Ba=Rb()|0;na=Q;Yua(H);xb=Cb;yb=Ba;Bb=na}Yua(G);Yua(F);if(xb){vb=yb;wb=Bb}else{Db=yb;Eb=Bb;break g}}else{na=Rb()|0;vb=na;wb=Q}while(0);zb(za|0);Db=vb;Eb=wb}else qa=230;while(0);if((qa|0)==230){e=Rb()|0;Db=e;Eb=Q}k[E>>2]=27468;k[ra>>2]=27488;k[ta>>2]=27560;Yua(ya);Ava(ta);vva(ra);Ga=Db;Ha=Eb;Qb(Ga|0)}while(0);rb=tb;sb=ub;vva(ra);Qb(sb|0)}}else{Ra=xa;Sa=0}while(0);if((Sa|0)<(Ra|0))k[b>>2]=Sa;Sa=k[I>>2]|0;if((Sa|0)>0){b=a+12|0;Ra=0;do{if((k[Ja+(Ra<<2)>>2]|0)==-1){k[ma>>2]=(k[ma>>2]|0)+1;k[(k[b>>2]|0)+(Ra*48|0)+40>>2]=0}Ra=Ra+1|0}while((Ra|0)<(Sa|0))}Tqa(Ka);Tqa(Ja)}else{Ja=a+28|0;Ka=k[Ja>>2]|0;if(Ka)Tqa(Ka);Ka=Rqa(pa>>>0>268435455?-1:pa<<4)|0;k[Ja>>2]=Ka;Sa=a+60|0;k[Sa>>2]=pa;if((pa|0)>0){Ra=0;do{k[Ka+(Ra<<4)>>2]=0;b=Ra;Ra=Ra+1|0;k[Ka+(b<<4)+4>>2]=Ra}while((Ra|0)<(pa|0))}Ra=k[I>>2]|0;b=Rqa(Ra>>>0>1073741823?-1:Ra<<2)|0;xa=(Ra|0)>0;if(xa){sb=k[a+12>>2]|0;ub=0;do{k[b+(ub<<2)>>2]=(k[sb+(ub*48|0)+40>>2]|0)!=0?-1:-2;ub=ub+1|0}while((ub|0)<(Ra|0));if(xa){xa=a+12|0;ub=0;sb=0;while(1){tb=b+(ub<<2)|0;if((k[tb>>2]|0)==-1){rb=k[xa>>2]|0;Eb=rb+(ub*48|0)|0;Db=k[rb+(ub*48|0)+40>>2]|0;k[tb>>2]=sb;k[Ka+(sb<<4)>>2]=Eb;E=rb;rb=Db;do{k[b+(((rb-E|0)/48|0)<<2)>>2]=sb;rb=k[rb+40>>2]|0}while((rb|0)!=(Eb|0));k[tb>>2]=sb;Fb=sb+1|0}else Fb=sb;ub=ub+1|0;if((ub|0)>=(Ra|0)){Gb=Fb;break}else sb=Fb}}else Gb=0}else Gb=0;if((Gb|0)!=(pa|0)){Tqa(b);Gb=i+56|0;Fb=i+4|0;k[i>>2]=27524;k[Gb>>2]=27544;B=0;wa(508,i+56|0,Fb|0);sb=B;B=0;if(sb&1){sb=Rb()|0;Hb=Q;Ib=sb;vva(Gb);Qb(Ib|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[Gb>>2]=27488;B=0;va(448,Fb|0);sb=B;B=0;do if(sb&1){ub=Rb()|0;Jb=Q;Kb=ub}else{k[Fb>>2]=27560;ub=i+36|0;k[ub>>2]=0;k[ub+4>>2]=0;k[ub+8>>2]=0;k[ub+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Fb|0,d|0);Ka=B;B=0;if(Ka&1){Ka=Rb()|0;xa=Q;Yua(d);Yua(ub);Ava(Fb);Jb=xa;Kb=Ka;break}Yua(d);B=0;Ka=Ia(40,i|0,123928,15)|0;xa=B;B=0;h:do if(!(xa&1)?(B=0,Xa(239,Ka|0,0)|0,Eb=B,B=0,!(Eb&1)):0){Eb=Ab(20)|0;B=0;eb(502,l|0,121503,60);rb=B;B=0;do if(!(rb&1)){B=0;eb(502,n|0,123914,13);E=B;B=0;if(E&1){E=Rb()|0;ra=Q;Yua(l);Lb=E;Mb=ra;break}B=0;wa(510,o|0,Fb|0);ra=B;B=0;if(ra&1){ra=Rb()|0;Nb=1;Ob=ra;Pb=Q}else{B=0;ua(163,Eb|0,l|0,n|0,2540,o|0);ra=B;B=0;if(ra&1)Sb=1;else{B=0;eb(503,Eb|0,1240,229);B=0;Sb=0}ra=Rb()|0;E=Q;Yua(o);Nb=Sb;Ob=ra;Pb=E}Yua(n);Yua(l);if(Nb){Lb=Ob;Mb=Pb}else{Tb=Ob;Ub=Pb;break h}}else{E=Rb()|0;Lb=E;Mb=Q}while(0);zb(Eb|0);Tb=Lb;Ub=Mb}else qa=86;while(0);if((qa|0)==86){Ka=Rb()|0;Tb=Ka;Ub=Q}k[i>>2]=27468;k[Gb>>2]=27488;k[Fb>>2]=27560;Yua(ub);Ava(Fb);vva(Gb);Ga=Tb;Ha=Ub;Qb(Ga|0)}while(0);Hb=Jb;Ib=Kb;vva(Gb);Qb(Ib|0)}if(L){L=a+12|0;Ib=Ra;Ra=pa;i:while(1){if((Ra|0)!=0&(Ib|0)>0){pa=0;Gb=Ra;while(1){if(!Gb)break i;Kb=b+(pa<<2)|0;Jb=0;Hb=Gb;while(1){Ga=Z4((k[L>>2]|0)+(pa*48|0)|0,Jb)|0;if(!Ga)Vb=-2;else Vb=k[b+(((Ga-(k[L>>2]|0)|0)/48|0)<<2)>>2]|0;Ga=k[Kb>>2]|0;do if((Ga|0)==(Vb|0))Wb=Hb;else{Ub=(Vb|0)>-1;do if(Ub){Ha=k[Ja>>2]|0;Tb=k[Ha+(Vb<<4)+4>>2]|0;if(!((Ga|0)>-1&(Tb|0)<0)){Xb=Hb;break}Fb=Ha+(Ga<<4)+4|0;if((k[Fb>>2]|0)<=-1){Xb=Hb;break}k[Fb>>2]=Tb+-1;Xb=Hb+-1|0}else Xb=Hb;while(0);if((Ga|0)<=-1){if(!Ub){Wb=Xb;break}Tb=(k[Ja>>2]|0)+(Vb<<4)+4|0;if((k[Tb>>2]|0)<=-1){Wb=Xb;break}k[Tb>>2]=-1;Wb=Xb+-1|0;break}Tb=k[Ja>>2]|0;Fb=Tb+(Ga<<4)+4|0;Ha=k[Fb>>2]|0;do if(Ub&(Ha|0)<0){i=Tb+(Vb<<4)+4|0;if((k[i>>2]|0)<=-1){Yb=Xb;break}k[i>>2]=Ha+-1;Yb=Xb+-1|0}else Yb=Xb;while(0);if((Vb|0)>=0){Wb=Yb;break}if((k[Fb>>2]|0)<=-1){Wb=Yb;break}k[Fb>>2]=-1;Wb=Yb+-1|0}while(0);Jb=Jb+1|0;if(!((Wb|0)!=0&(Jb|0)<3)){Zb=Wb;break}else Hb=Wb}Hb=k[I>>2]|0;pa=pa+1|0;if(!((Zb|0)!=0&(pa|0)<(Hb|0))){_b=Hb;$b=Zb;break}else Gb=Zb}}else{_b=Ib;$b=Ra}if(!$b)break;else{Ib=_b;Ra=$b}}$b=k[Sa>>2]|0;if(($b|0)>0){Ra=$b;$b=0;_b=0;while(1){Ib=k[Ja>>2]|0;Zb=Ib+($b<<4)|0;if(!(k[Ib+($b<<4)+4>>2]&1)){Wb=k[Zb>>2]|0;if(!Wb){ac=Ra;bc=_b}else{Yb=k[ma>>2]|0;Vb=Wb;while(1){Wb=Yb+1|0;Xb=Vb+40|0;Vb=k[Xb>>2]|0;k[Xb>>2]=0;if(!Vb){cc=Wb;break}else Yb=Wb}k[ma>>2]=cc;ac=Ra;bc=_b}}else{if(($b|0)==(_b|0))dc=Ra;else{Yb=Ib+(_b<<4)|0;k[d>>2]=k[Zb>>2];k[d+4>>2]=k[Zb+4>>2];k[d+8>>2]=k[Zb+8>>2];k[d+12>>2]=k[Zb+12>>2];k[Zb>>2]=k[Yb>>2];k[Zb+4>>2]=k[Yb+4>>2];k[Zb+8>>2]=k[Yb+8>>2];k[Zb+12>>2]=k[Yb+12>>2];k[Yb>>2]=k[d>>2];k[Yb+4>>2]=k[d+4>>2];k[Yb+8>>2]=k[d+8>>2];k[Yb+12>>2]=k[d+12>>2];dc=k[Sa>>2]|0}ac=dc;bc=_b+1|0}$b=$b+1|0;if(($b|0)>=(ac|0)){ec=bc;break}else{Ra=ac;_b=bc}}}else ec=0;k[Sa>>2]=ec}Tqa(b)}k[ma>>2]=0;b=k[I>>2]|0;if((b|0)<=0){r=c;return}I=k[a+12>>2]|0;a=0;ec=0;while(1){if(!(k[I+(ec*48|0)+40>>2]|0)){Sa=a+1|0;k[ma>>2]=Sa;fc=Sa}else fc=a;ec=ec+1|0;if((ec|0)>=(b|0))break;else a=fc}r=c;return}
+function lf(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0;h=r;r=r+160|0;i=h+64|0;j=h+56|0;l=h+48|0;m=h+40|0;n=h+32|0;o=h+24|0;q=h+16|0;s=h+8|0;t=h+152|0;u=h+148|0;v=h+144|0;w=h+140|0;x=h+136|0;y=h+132|0;z=h+128|0;A=h+120|0;B=h+112|0;C=h+104|0;D=h+96|0;E=h+88|0;F=h+80|0;G=h;H=h+72|0;k[t>>2]=a;k[u>>2]=b;k[v>>2]=c;k[w>>2]=d;k[x>>2]=e;k[y>>2]=f;k[z>>2]=g;if((k[(k[u>>2]|0)+116>>2]|0)>2){k[s>>2]=k[w>>2];mta(58246,s)|0}if((k[w>>2]|0)==2){Be(k[t>>2]|0,k[u>>2]|0,k[y>>2]|0);k[(k[k[y>>2]>>2]|0)+((k[27620+(k[(k[y>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[k[v>>2]>>2];k[(k[k[y>>2]>>2]|0)+((k[27632+(k[(k[y>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[(k[v>>2]|0)+4>>2];Be(k[t>>2]|0,k[u>>2]|0,k[z>>2]|0);k[(k[k[z>>2]>>2]|0)+((k[27620+(k[(k[z>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[(k[v>>2]|0)+4>>2];k[(k[k[z>>2]>>2]|0)+((k[27632+(k[(k[z>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[k[v>>2]>>2];k[(k[k[y>>2]>>2]|0)+(k[(k[y>>2]|0)+4>>2]<<2)>>2]=k[k[z>>2]>>2]|k[(k[z>>2]|0)+4>>2];k[(k[k[z>>2]>>2]|0)+(k[(k[z>>2]|0)+4>>2]<<2)>>2]=k[k[y>>2]>>2]|k[(k[y>>2]|0)+4>>2];k[(k[y>>2]|0)+4>>2]=k[27632+(k[(k[y>>2]|0)+4>>2]<<2)>>2];k[(k[z>>2]|0)+4>>2]=k[27620+(k[(k[z>>2]|0)+4>>2]<<2)>>2];k[(k[k[y>>2]>>2]|0)+(k[(k[y>>2]|0)+4>>2]<<2)>>2]=k[k[z>>2]>>2]|k[(k[z>>2]|0)+4>>2];k[(k[k[z>>2]>>2]|0)+(k[(k[z>>2]|0)+4>>2]<<2)>>2]=k[k[y>>2]>>2]|k[(k[y>>2]|0)+4>>2];k[(k[y>>2]|0)+4>>2]=k[27632+(k[(k[y>>2]|0)+4>>2]<<2)>>2];k[(k[z>>2]|0)+4>>2]=k[27620+(k[(k[z>>2]|0)+4>>2]<<2)>>2];k[(k[k[y>>2]>>2]|0)+(k[(k[y>>2]|0)+4>>2]<<2)>>2]=k[k[z>>2]>>2]|k[(k[z>>2]|0)+4>>2];k[(k[k[z>>2]>>2]|0)+(k[(k[z>>2]|0)+4>>2]<<2)>>2]=k[k[y>>2]>>2]|k[(k[y>>2]|0)+4>>2];if((k[(k[u>>2]|0)+116>>2]|0)>2){mta(58276,q)|0;ee(k[t>>2]|0,k[u>>2]|0,k[y>>2]|0);mta(58276,o)|0;ee(k[t>>2]|0,k[u>>2]|0,k[z>>2]|0)}k[k[y>>2]>>2]=k[k[z>>2]>>2];k[(k[y>>2]|0)+4>>2]=k[27632+(k[(k[z>>2]|0)+4>>2]<<2)>>2];r=h;return}if((k[w>>2]|0)!=3){k[H>>2]=k[w>>2]>>1;lf(k[t>>2]|0,k[u>>2]|0,k[v>>2]|0,k[H>>2]|0,1-(k[x>>2]|0)|0,k[y>>2]|0,E);lf(k[t>>2]|0,k[u>>2]|0,(k[v>>2]|0)+(k[H>>2]<<2)|0,(k[w>>2]|0)-(k[H>>2]|0)|0,1-(k[x>>2]|0)|0,F,k[z>>2]|0);if((k[(k[u>>2]|0)+116>>2]|0)>1){o=(k[w>>2]|0)-(k[H>>2]|0)|0;k[i>>2]=k[H>>2];k[i+4>>2]=o;mta(58288,i)|0}kf(k[t>>2]|0,k[u>>2]|0,k[y>>2]|0,E,F,k[z>>2]|0,k[x>>2]|0);r=h;return}Be(k[t>>2]|0,k[u>>2]|0,A);Be(k[t>>2]|0,k[u>>2]|0,B);Be(k[t>>2]|0,k[u>>2]|0,C);Be(k[t>>2]|0,k[u>>2]|0,D);I=+Ie(k[t>>2]|0,k[u>>2]|0,k[k[v>>2]>>2]|0,k[(k[v>>2]|0)+4>>2]|0,k[(k[v>>2]|0)+8>>2]|0);p[G>>3]=I;x=+p[G>>3]==0.0;k[(k[A>>2]|0)+((k[27620+(k[A+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[k[v>>2]>>2];F=k[v>>2]|0;do if(!x){k[(k[B>>2]|0)+((k[27632+(k[B+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[F>>2];k[(k[D>>2]|0)+((k[27620+(k[D+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[k[v>>2]>>2];E=k[v>>2]|0;if(+p[G>>3]>0.0){k[(k[A>>2]|0)+((k[27632+(k[A+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[E+4>>2];k[(k[B>>2]|0)+((k[27620+(k[B+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[(k[v>>2]|0)+4>>2];k[(k[C>>2]|0)+((k[27632+(k[C+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[(k[v>>2]|0)+4>>2];k[(k[A>>2]|0)+((k[A+4>>2]|0)+3<<2)>>2]=k[(k[v>>2]|0)+8>>2];k[(k[C>>2]|0)+((k[27620+(k[C+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[(k[v>>2]|0)+8>>2];k[(k[D>>2]|0)+((k[27632+(k[D+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[(k[v>>2]|0)+8>>2]}else{k[(k[A>>2]|0)+((k[27632+(k[A+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[E+8>>2];k[(k[B>>2]|0)+((k[27620+(k[B+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[(k[v>>2]|0)+8>>2];k[(k[C>>2]|0)+((k[27632+(k[C+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[(k[v>>2]|0)+8>>2];k[(k[A>>2]|0)+((k[A+4>>2]|0)+3<<2)>>2]=k[(k[v>>2]|0)+4>>2];k[(k[C>>2]|0)+((k[27620+(k[C+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[(k[v>>2]|0)+4>>2];k[(k[D>>2]|0)+((k[27632+(k[D+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[(k[v>>2]|0)+4>>2]}k[(k[A>>2]|0)+(k[A+4>>2]<<2)>>2]=k[B>>2]|k[B+4>>2];k[(k[B>>2]|0)+(k[B+4>>2]<<2)>>2]=k[A>>2]|k[A+4>>2];k[A+4>>2]=k[27620+(k[A+4>>2]<<2)>>2];k[(k[A>>2]|0)+(k[A+4>>2]<<2)>>2]=k[C>>2]|k[C+4>>2];k[(k[C>>2]|0)+(k[C+4>>2]<<2)>>2]=k[A>>2]|k[A+4>>2];k[A+4>>2]=k[27620+(k[A+4>>2]<<2)>>2];k[(k[A>>2]|0)+(k[A+4>>2]<<2)>>2]=k[D>>2]|k[D+4>>2];k[(k[D>>2]|0)+(k[D+4>>2]<<2)>>2]=k[A>>2]|k[A+4>>2];k[B+4>>2]=k[27632+(k[B+4>>2]<<2)>>2];k[C+4>>2]=k[27620+(k[C+4>>2]<<2)>>2];k[(k[B>>2]|0)+(k[B+4>>2]<<2)>>2]=k[C>>2]|k[C+4>>2];k[(k[C>>2]|0)+(k[C+4>>2]<<2)>>2]=k[B>>2]|k[B+4>>2];k[B+4>>2]=k[27632+(k[B+4>>2]<<2)>>2];k[D+4>>2]=k[27632+(k[D+4>>2]<<2)>>2];k[(k[B>>2]|0)+(k[B+4>>2]<<2)>>2]=k[D>>2]|k[D+4>>2];k[(k[D>>2]|0)+(k[D+4>>2]<<2)>>2]=k[B>>2]|k[B+4>>2];k[C+4>>2]=k[27620+(k[C+4>>2]<<2)>>2];k[D+4>>2]=k[27632+(k[D+4>>2]<<2)>>2];k[(k[C>>2]|0)+(k[C+4>>2]<<2)>>2]=k[D>>2]|k[D+4>>2];k[(k[D>>2]|0)+(k[D+4>>2]<<2)>>2]=k[C>>2]|k[C+4>>2];k[k[y>>2]>>2]=k[B>>2];k[(k[y>>2]|0)+4>>2]=k[B+4>>2];if(+p[G>>3]>0.0){k[k[z>>2]>>2]=k[C>>2];k[(k[z>>2]|0)+4>>2]=k[C+4>>2];break}else{k[k[z>>2]>>2]=k[k[y>>2]>>2];k[(k[z>>2]|0)+4>>2]=k[27620+(k[(k[y>>2]|0)+4>>2]<<2)>>2];break}}else{k[(k[A>>2]|0)+((k[27632+(k[A+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[F+4>>2];k[(k[B>>2]|0)+((k[27620+(k[B+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[(k[v>>2]|0)+4>>2];k[(k[B>>2]|0)+((k[27632+(k[B+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[k[v>>2]>>2];k[(k[C>>2]|0)+((k[27620+(k[C+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[(k[v>>2]|0)+8>>2];k[(k[C>>2]|0)+((k[27632+(k[C+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[(k[v>>2]|0)+4>>2];k[(k[D>>2]|0)+((k[27620+(k[D+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[(k[v>>2]|0)+4>>2];k[(k[D>>2]|0)+((k[27632+(k[D+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[(k[v>>2]|0)+8>>2];k[(k[A>>2]|0)+(k[A+4>>2]<<2)>>2]=k[B>>2]|k[B+4>>2];k[(k[B>>2]|0)+(k[B+4>>2]<<2)>>2]=k[A>>2]|k[A+4>>2];k[(k[C>>2]|0)+(k[C+4>>2]<<2)>>2]=k[D>>2]|k[D+4>>2];k[(k[D>>2]|0)+(k[D+4>>2]<<2)>>2]=k[C>>2]|k[C+4>>2];k[A+4>>2]=k[27620+(k[A+4>>2]<<2)>>2];k[B+4>>2]=k[27632+(k[B+4>>2]<<2)>>2];k[C+4>>2]=k[27620+(k[C+4>>2]<<2)>>2];k[D+4>>2]=k[27632+(k[D+4>>2]<<2)>>2];k[(k[A>>2]|0)+(k[A+4>>2]<<2)>>2]=k[D>>2]|k[D+4>>2];k[(k[D>>2]|0)+(k[D+4>>2]<<2)>>2]=k[A>>2]|k[A+4>>2];k[(k[B>>2]|0)+(k[B+4>>2]<<2)>>2]=k[C>>2]|k[C+4>>2];k[(k[C>>2]|0)+(k[C+4>>2]<<2)>>2]=k[B>>2]|k[B+4>>2];k[A+4>>2]=k[27620+(k[A+4>>2]<<2)>>2];k[B+4>>2]=k[27632+(k[B+4>>2]<<2)>>2];k[C+4>>2]=k[27620+(k[C+4>>2]<<2)>>2];k[D+4>>2]=k[27632+(k[D+4>>2]<<2)>>2];k[(k[A>>2]|0)+(k[A+4>>2]<<2)>>2]=k[B>>2]|k[B+4>>2];k[(k[B>>2]|0)+(k[B+4>>2]<<2)>>2]=k[A>>2]|k[A+4>>2];k[(k[C>>2]|0)+(k[C+4>>2]<<2)>>2]=k[D>>2]|k[D+4>>2];k[(k[D>>2]|0)+(k[D+4>>2]<<2)>>2]=k[C>>2]|k[C+4>>2];k[k[y>>2]>>2]=k[B>>2];k[(k[y>>2]|0)+4>>2]=k[B+4>>2];k[k[z>>2]>>2]=k[C>>2];k[(k[z>>2]|0)+4>>2]=k[C+4>>2]}while(0);if((k[(k[u>>2]|0)+116>>2]|0)<=2){r=h;return}mta(58276,n)|0;ee(k[t>>2]|0,k[u>>2]|0,A);mta(58276,m)|0;ee(k[t>>2]|0,k[u>>2]|0,B);mta(58276,l)|0;ee(k[t>>2]|0,k[u>>2]|0,C);mta(58276,j)|0;ee(k[t>>2]|0,k[u>>2]|0,D);r=h;return}function mf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;d=r;r=r+64|0;e=d+48|0;f=d+44|0;g=d+40|0;h=d+32|0;i=d+24|0;j=d+16|0;l=d+12|0;m=d+8|0;n=d+4|0;k[e>>2]=a;k[f>>2]=b;k[g>>2]=c;if(k[(k[f>>2]|0)+116>>2]|0)mta(58339,d)|0;k[h>>2]=k[k[g>>2]>>2];k[h+4>>2]=k[27632+(k[(k[g>>2]|0)+4>>2]<<2)>>2];k[n>>2]=k[(k[h>>2]|0)+(k[h+4>>2]<<2)>>2];k[h+4>>2]=k[n>>2]&3;k[h>>2]=k[n>>2]^k[h+4>>2];k[k[(k[e>>2]|0)+49768>>2]>>2]=k[h>>2]|k[h+4>>2];k[i>>2]=k[k[g>>2]>>2];k[i+4>>2]=k[(k[g>>2]|0)+4>>2];k[m>>2]=0;do{k[m>>2]=(k[m>>2]|0)+1;k[j>>2]=k[i>>2];k[j+4>>2]=k[27620+(k[i+4>>2]<<2)>>2];k[i+4>>2]=k[27632+(k[i+4>>2]<<2)>>2];k[n>>2]=k[(k[i>>2]|0)+(k[i+4>>2]<<2)>>2];k[i+4>>2]=k[n>>2]&3;k[i>>2]=k[n>>2]^k[i+4>>2];if(((k[k[f>>2]>>2]|0)==0?(k[i>>2]|0)!=(k[(k[e>>2]|0)+49768>>2]|0):0)?(k[l>>2]=k[(k[i>>2]|0)+((k[27620+(k[i+4>>2]<<2)>>2]|0)+3<<2)>>2],(k[(k[l>>2]|0)+(k[(k[e>>2]|0)+49696>>2]<<2)>>2]|0)==0):0)k[(k[l>>2]|0)+(k[(k[e>>2]|0)+49696>>2]<<2)>>2]=1;k[(k[i>>2]|0)+(k[i+4>>2]<<2)>>2]=k[(k[e>>2]|0)+49768>>2];k[n>>2]=k[(k[j>>2]|0)+(k[j+4>>2]<<2)>>2];k[i+4>>2]=k[n>>2]&3;k[i>>2]=k[n>>2]^k[i+4>>2];re(k[e>>2]|0,k[j>>2]|0);if((k[i>>2]|0)==(k[k[g>>2]>>2]|0))o=(k[i+4>>2]|0)==(k[(k[g>>2]|0)+4>>2]|0);else o=0}while(o^1);r=d;return k[m>>2]|0}function nf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;c=r;r=r+80|0;d=c+24|0;e=c+8|0;f=c+64|0;g=c+60|0;h=c+56|0;i=c+48|0;j=c+40|0;l=c+36|0;m=c+32|0;n=c+28|0;k[f>>2]=a;k[g>>2]=b;if(k[(k[g>>2]|0)+116>>2]|0)mta(58368,c)|0;b=ae(k[(k[f>>2]|0)+49648>>2]<<2)|0;k[h>>2]=b;me((k[f>>2]|0)+112|0);k[m>>2]=0;while(1){if((k[m>>2]|0)>=(k[(k[f>>2]|0)+49648>>2]|0))break;b=we(k[f>>2]|0)|0;k[(k[h>>2]|0)+(k[m>>2]<<2)>>2]=b;k[m>>2]=(k[m>>2]|0)+1}gf(k[h>>2]|0,k[(k[f>>2]|0)+49648>>2]|0);k[m>>2]=0;k[n>>2]=1;while(1){o=k[m>>2]|0;if((k[n>>2]|0)>=(k[(k[f>>2]|0)+49648>>2]|0))break;if(+p[k[(k[h>>2]|0)+(o<<2)>>2]>>3]==+p[k[(k[h>>2]|0)+(k[n>>2]<<2)>>2]>>3]?+p[(k[(k[h>>2]|0)+(k[m>>2]<<2)>>2]|0)+8>>3]==+p[(k[(k[h>>2]|0)+(k[n>>2]<<2)>>2]|0)+8>>3]:0){if(!(k[(k[g>>2]|0)+112>>2]|0)){q=+p[(k[(k[h>>2]|0)+(k[n>>2]<<2)>>2]|0)+8>>3];p[e>>3]=+p[k[(k[h>>2]|0)+(k[n>>2]<<2)>>2]>>3];p[e+8>>3]=q;mta(58389,e)|0}k[(k[(k[h>>2]|0)+(k[n>>2]<<2)>>2]|0)+((k[(k[f>>2]|0)+49696>>2]|0)+1<<2)>>2]=-32767;b=(k[f>>2]|0)+49668|0;k[b>>2]=(k[b>>2]|0)+1}else{k[m>>2]=(k[m>>2]|0)+1;k[(k[h>>2]|0)+(k[m>>2]<<2)>>2]=k[(k[h>>2]|0)+(k[n>>2]<<2)>>2]}k[n>>2]=(k[n>>2]|0)+1}k[m>>2]=o+1;if((k[(k[g>>2]|0)+100>>2]|0)!=0?(k[l>>2]=k[m>>2]>>1,((k[m>>2]|0)-(k[l>>2]|0)|0)>=2):0){if((k[l>>2]|0)>=2)jf(k[h>>2]|0,k[l>>2]|0,1);jf((k[h>>2]|0)+(k[l>>2]<<2)|0,(k[m>>2]|0)-(k[l>>2]|0)|0,1)}if(!(k[(k[g>>2]|0)+116>>2]|0)){s=k[f>>2]|0;t=k[g>>2]|0;u=k[h>>2]|0;v=k[m>>2]|0;lf(s,t,u,v,0,i,j);w=k[h>>2]|0;be(w);x=k[f>>2]|0;y=k[g>>2]|0;z=mf(x,y,i)|0;r=c;return z|0}mta(58463,d)|0;s=k[f>>2]|0;t=k[g>>2]|0;u=k[h>>2]|0;v=k[m>>2]|0;lf(s,t,u,v,0,i,j);w=k[h>>2]|0;be(w);x=k[f>>2]|0;y=k[g>>2]|0;z=mf(x,y,i)|0;r=c;return z|0}function of(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=r;r=r+48|0;d=c+36|0;e=c+32|0;f=c+24|0;g=c;k[d>>2]=a;k[e>>2]=b;if(k[(k[e>>2]|0)+116>>2]|0)mta(58489,c+8|0)|0;p[g>>3]=+p[(k[d>>2]|0)+49616>>3]-+p[(k[d>>2]|0)+49608>>3];if(+p[(k[d>>2]|0)+49632>>3]-+p[(k[d>>2]|0)+49624>>3]>+p[g>>3])p[g>>3]=+p[(k[d>>2]|0)+49632>>3]-+p[(k[d>>2]|0)+49624>>3];if(+p[g>>3]==0.0)p[g>>3]=1.0;b=ae(k[(k[d>>2]|0)+112+28>>2]|0)|0;k[(k[d>>2]|0)+49756>>2]=b;b=ae(k[(k[d>>2]|0)+112+28>>2]|0)|0;k[(k[d>>2]|0)+49760>>2]=b;b=ae(k[(k[d>>2]|0)+112+28>>2]|0)|0;k[(k[d>>2]|0)+49764>>2]=b;p[k[(k[d>>2]|0)+49756>>2]>>3]=+p[(k[d>>2]|0)+49608>>3]-+p[g>>3]*50.0;p[(k[(k[d>>2]|0)+49756>>2]|0)+8>>3]=+p[(k[d>>2]|0)+49624>>3]-+p[g>>3]*40.0;p[k[(k[d>>2]|0)+49760>>2]>>3]=+p[(k[d>>2]|0)+49616>>3]+ +p[g>>3]*50.0;p[(k[(k[d>>2]|0)+49760>>2]|0)+8>>3]=+p[(k[d>>2]|0)+49624>>3]-+p[g>>3]*40.0;p[k[(k[d>>2]|0)+49764>>2]>>3]=(+p[(k[d>>2]|0)+49608>>3]+ +p[(k[d>>2]|0)+49616>>3])*.5;p[(k[(k[d>>2]|0)+49764>>2]|0)+8>>3]=+p[(k[d>>2]|0)+49632>>3]+ +p[g>>3]*60.0;Be(k[d>>2]|0,k[e>>2]|0,f);k[(k[f>>2]|0)+((k[27620+(k[f+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[(k[d>>2]|0)+49756>>2];k[(k[f>>2]|0)+((k[27632+(k[f+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[(k[d>>2]|0)+49760>>2];k[(k[f>>2]|0)+((k[f+4>>2]|0)+3<<2)>>2]=k[(k[d>>2]|0)+49764>>2];k[k[(k[d>>2]|0)+49768>>2]>>2]=k[f>>2];if((k[(k[e>>2]|0)+116>>2]|0)<=2){r=c;return}mta(58276,c+16|0)|0;ee(k[d>>2]|0,k[e>>2]|0,f);r=c;return}function pf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;c=r;r=r+80|0;d=c+68|0;e=c+64|0;f=c+56|0;g=c+48|0;h=c+40|0;i=c+32|0;j=c+24|0;l=c+16|0;m=c+12|0;n=c+8|0;o=c+4|0;k[d>>2]=a;k[e>>2]=b;if(k[(k[e>>2]|0)+116>>2]|0)mta(58526,c)|0;k[i>>2]=k[(k[d>>2]|0)+49768>>2];k[i+4>>2]=0;k[o>>2]=k[(k[i>>2]|0)+(k[i+4>>2]<<2)>>2];k[i+4>>2]=k[o>>2]&3;k[i>>2]=k[o>>2]^k[i+4>>2];k[j>>2]=k[i>>2];k[j+4>>2]=k[27632+(k[i+4>>2]<<2)>>2];k[i+4>>2]=k[27620+(k[i+4>>2]<<2)>>2];k[o>>2]=k[(k[i>>2]|0)+(k[i+4>>2]<<2)>>2];k[i+4>>2]=k[o>>2]&3;k[i>>2]=k[o>>2]^k[i+4>>2];k[g>>2]=k[i>>2];k[g+4>>2]=k[27632+(k[i+4>>2]<<2)>>2];k[o>>2]=k[(k[g>>2]|0)+(k[g+4>>2]<<2)>>2];k[g+4>>2]=k[o>>2]&3;k[g>>2]=k[o>>2]^k[g+4>>2];k[h>>2]=k[i>>2];k[h+4>>2]=k[27620+(k[i+4>>2]<<2)>>2];k[o>>2]=k[(k[h>>2]|0)+(k[h+4>>2]<<2)>>2];k[h+4>>2]=k[o>>2]&3;k[h>>2]=k[o>>2]^k[h+4>>2];if((k[h>>2]|0)==(k[(k[d>>2]|0)+49768>>2]|0)){k[g+4>>2]=k[27632+(k[g+4>>2]<<2)>>2];k[o>>2]=k[(k[g>>2]|0)+(k[g+4>>2]<<2)>>2];k[g+4>>2]=k[o>>2]&3;k[g>>2]=k[o>>2]^k[g+4>>2]}k[k[(k[d>>2]|0)+49768>>2]>>2]=k[g>>2]|k[g+4>>2];k[n>>2]=-2;while(1){if((k[i>>2]|0)==(k[j>>2]|0))p=(k[i+4>>2]|0)==(k[j+4>>2]|0);else p=0;if(!(p^1))break;k[n>>2]=(k[n>>2]|0)+1;k[l>>2]=k[i>>2];k[l+4>>2]=k[27632+(k[i+4>>2]<<2)>>2];k[o>>2]=k[(k[l>>2]|0)+(k[l+4>>2]<<2)>>2];k[l+4>>2]=k[o>>2]&3;k[l>>2]=k[o>>2]^k[l+4>>2];if(((k[k[e>>2]>>2]|0)==0?(k[l>>2]|0)!=(k[(k[d>>2]|0)+49768>>2]|0):0)?(k[m>>2]=k[(k[l>>2]|0)+((k[27620+(k[l+4>>2]<<2)>>2]|0)+3<<2)>>2],(k[(k[m>>2]|0)+(k[(k[d>>2]|0)+49696>>2]<<2)>>2]|0)==0):0)k[(k[m>>2]|0)+(k[(k[d>>2]|0)+49696>>2]<<2)>>2]=1;k[(k[l>>2]|0)+(k[l+4>>2]<<2)>>2]=k[(k[d>>2]|0)+49768>>2];k[f>>2]=k[i>>2];k[f+4>>2]=k[27620+(k[i+4>>2]<<2)>>2];k[o>>2]=k[(k[f>>2]|0)+(k[f+4>>2]<<2)>>2];k[i+4>>2]=k[o>>2]&3;k[i>>2]=k[o>>2]^k[i+4>>2];re(k[d>>2]|0,k[f>>2]|0);if((k[i>>2]|0)!=(k[(k[d>>2]|0)+49768>>2]|0))continue;k[i>>2]=k[l>>2];k[i+4>>2]=k[l+4>>2]}re(k[d>>2]|0,k[j>>2]|0);be(k[(k[d>>2]|0)+49756>>2]|0);be(k[(k[d>>2]|0)+49760>>2]|0);be(k[(k[d>>2]|0)+49764>>2]|0);r=c;return k[n>>2]|0}function qf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0.0;c=r;r=r+48|0;d=c+8|0;e=c+44|0;f=c+40|0;g=c+32|0;h=c+24|0;k[e>>2]=a;k[f>>2]=b;of(k[e>>2]|0,k[f>>2]|0);if(k[(k[f>>2]|0)+116>>2]|0)mta(58563,c)|0;me((k[e>>2]|0)+112|0);b=we(k[e>>2]|0)|0;k[h>>2]=b;while(1){i=k[e>>2]|0;if(!(k[h>>2]|0))break;k[g>>2]=k[i+49768>>2];if((cf(k[e>>2]|0,k[f>>2]|0,k[h>>2]|0,g,0,0,0)|0)==3){if(!(k[(k[f>>2]|0)+112>>2]|0)){j=+p[(k[h>>2]|0)+8>>3];p[d>>3]=+p[k[h>>2]>>3];p[d+8>>3]=j;mta(58389,d)|0}k[(k[h>>2]|0)+((k[(k[e>>2]|0)+49696>>2]|0)+1<<2)>>2]=-32767;b=(k[e>>2]|0)+49668|0;k[b>>2]=(k[b>>2]|0)+1}b=we(k[e>>2]|0)|0;k[h>>2]=b}h=pf(i,k[f>>2]|0)|0;r=c;return h|0}function rf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;d=r;r=r+48|0;e=d+36|0;f=d+32|0;g=d+28|0;h=d+8|0;i=d;j=d+24|0;l=d+20|0;m=d+16|0;k[e>>2]=a;k[f>>2]=b;k[g>>2]=c;p[h>>3]=+p[k[g>>2]>>3];p[i>>3]=+p[(k[g>>2]|0)+8>>3];k[j>>2]=k[f>>2];k[m>>2]=(k[j>>2]|0)>0&1;a:while(1){if(!(k[m>>2]|0))break;k[l>>2]=(k[j>>2]|0)-1>>1;do if(!(+p[(k[(k[e>>2]|0)+(k[l>>2]<<2)>>2]|0)+8>>3]<+p[i>>3])){if(+p[(k[(k[e>>2]|0)+(k[l>>2]<<2)>>2]|0)+8>>3]==+p[i>>3]?+p[k[(k[e>>2]|0)+(k[l>>2]<<2)>>2]>>3]<=+p[h>>3]:0)break;k[(k[e>>2]|0)+(k[j>>2]<<2)>>2]=k[(k[e>>2]|0)+(k[l>>2]<<2)>>2];k[(k[(k[e>>2]|0)+(k[j>>2]<<2)>>2]|0)+20>>2]=k[j>>2];k[j>>2]=k[l>>2];k[m>>2]=(k[j>>2]|0)>0&1;continue a}while(0);k[m>>2]=0}k[(k[e>>2]|0)+(k[j>>2]<<2)>>2]=k[g>>2];k[(k[g>>2]|0)+20>>2]=k[j>>2];r=d;return}function sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0;d=r;r=r+48|0;e=d+44|0;f=d+40|0;g=d+36|0;h=d+32|0;i=d+8|0;j=d;l=d+28|0;m=d+24|0;n=d+20|0;o=d+16|0;k[e>>2]=a;k[f>>2]=b;k[g>>2]=c;k[h>>2]=k[(k[e>>2]|0)+(k[g>>2]<<2)>>2];p[i>>3]=+p[k[h>>2]>>3];p[j>>3]=+p[(k[h>>2]|0)+8>>3];k[l>>2]=(k[g>>2]<<1)+1;k[o>>2]=(k[l>>2]|0)<(k[f>>2]|0)&1;while(1){if(!(k[o>>2]|0))break;do if(+p[(k[(k[e>>2]|0)+(k[l>>2]<<2)>>2]|0)+8>>3]<+p[j>>3])q=6;else{if(+p[(k[(k[e>>2]|0)+(k[l>>2]<<2)>>2]|0)+8>>3]==+p[j>>3]?+p[k[(k[e>>2]|0)+(k[l>>2]<<2)>>2]>>3]<+p[i>>3]:0){q=6;break}k[n>>2]=k[g>>2]}while(0);if((q|0)==6){q=0;k[n>>2]=k[l>>2]}k[m>>2]=(k[l>>2]|0)+1;do if((k[m>>2]|0)<(k[f>>2]|0)){if(!(+p[(k[(k[e>>2]|0)+(k[m>>2]<<2)>>2]|0)+8>>3]<+p[(k[(k[e>>2]|0)+(k[n>>2]<<2)>>2]|0)+8>>3])){if(!(+p[(k[(k[e>>2]|0)+(k[m>>2]<<2)>>2]|0)+8>>3]==+p[(k[(k[e>>2]|0)+(k[n>>2]<<2)>>2]|0)+8>>3]))break;if(!(+p[k[(k[e>>2]|0)+(k[m>>2]<<2)>>2]>>3]<+p[k[(k[e>>2]|0)+(k[n>>2]<<2)>>2]>>3]))break}k[n>>2]=k[m>>2]}while(0);if((k[n>>2]|0)==(k[g>>2]|0)){k[o>>2]=0;continue}else{k[(k[e>>2]|0)+(k[g>>2]<<2)>>2]=k[(k[e>>2]|0)+(k[n>>2]<<2)>>2];k[(k[(k[e>>2]|0)+(k[g>>2]<<2)>>2]|0)+20>>2]=k[g>>2];k[(k[e>>2]|0)+(k[n>>2]<<2)>>2]=k[h>>2];k[(k[h>>2]|0)+20>>2]=k[n>>2];k[g>>2]=k[n>>2];k[l>>2]=(k[g>>2]<<1)+1;k[o>>2]=(k[l>>2]|0)<(k[f>>2]|0)&1;continue}}r=d;return}function tf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;d=r;r=r+48|0;e=d+36|0;f=d+32|0;g=d+28|0;h=d+24|0;i=d+8|0;j=d;l=d+20|0;m=d+16|0;k[e>>2]=a;k[f>>2]=b;k[g>>2]=c;k[h>>2]=k[(k[e>>2]|0)+((k[f>>2]|0)-1<<2)>>2];if((k[g>>2]|0)<=0){n=k[h>>2]|0;o=k[g>>2]|0;q=k[e>>2]|0;s=q+(o<<2)|0;k[s>>2]=n;t=k[g>>2]|0;u=k[h>>2]|0;v=u+20|0;k[v>>2]=t;w=k[e>>2]|0;x=k[f>>2]|0;y=x-1|0;z=k[g>>2]|0;sf(w,y,z);r=d;return}p[i>>3]=+p[k[h>>2]>>3];p[j>>3]=+p[(k[h>>2]|0)+8>>3];do{k[l>>2]=(k[g>>2]|0)-1>>1;do if(+p[(k[(k[e>>2]|0)+(k[l>>2]<<2)>>2]|0)+8>>3]<+p[j>>3])A=6;else{if(+p[(k[(k[e>>2]|0)+(k[l>>2]<<2)>>2]|0)+8>>3]==+p[j>>3]?+p[k[(k[e>>2]|0)+(k[l>>2]<<2)>>2]>>3]<=+p[i>>3]:0){A=6;break}k[(k[e>>2]|0)+(k[g>>2]<<2)>>2]=k[(k[e>>2]|0)+(k[l>>2]<<2)>>2];k[(k[(k[e>>2]|0)+(k[g>>2]<<2)>>2]|0)+20>>2]=k[g>>2];k[g>>2]=k[l>>2];k[m>>2]=(k[g>>2]|0)>0&1}while(0);if((A|0)==6){A=0;k[m>>2]=0}}while((k[m>>2]|0)!=0);n=k[h>>2]|0;o=k[g>>2]|0;q=k[e>>2]|0;s=q+(o<<2)|0;k[s>>2]=n;t=k[g>>2]|0;u=k[h>>2]|0;v=u+20|0;k[v>>2]=t;w=k[e>>2]|0;x=k[f>>2]|0;y=x-1|0;z=k[g>>2]|0;sf(w,y,z);r=d;return}function uf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;e=r;r=r+32|0;f=e+24|0;g=e+20|0;h=e+16|0;i=e+12|0;j=e+8|0;l=e+4|0;m=e;k[f>>2]=a;k[g>>2]=b;k[h>>2]=c;k[i>>2]=d;k[l>>2]=((k[(k[f>>2]|0)+49648>>2]|0)*3|0)/2|0;d=ae(k[l>>2]<<2)|0;k[k[g>>2]>>2]=d;d=ae((k[l>>2]|0)*24|0)|0;k[k[h>>2]>>2]=d;me((k[f>>2]|0)+112|0);k[m>>2]=0;while(1){if((k[m>>2]|0)>=(k[(k[f>>2]|0)+49648>>2]|0))break;d=we(k[f>>2]|0)|0;k[j>>2]=d;k[(k[k[h>>2]>>2]|0)+((k[m>>2]|0)*24|0)+16>>2]=k[j>>2];p[(k[k[h>>2]>>2]|0)+((k[m>>2]|0)*24|0)>>3]=+p[k[j>>2]>>3];p[(k[k[h>>2]>>2]|0)+((k[m>>2]|0)*24|0)+8>>3]=+p[(k[j>>2]|0)+8>>3];rf(k[k[g>>2]>>2]|0,k[m>>2]|0,(k[k[h>>2]>>2]|0)+((k[m>>2]|0)*24|0)|0);k[m>>2]=(k[m>>2]|0)+1}k[k[i>>2]>>2]=0;k[m>>2]=(k[l>>2]|0)-1;while(1){if((k[m>>2]|0)<(k[(k[f>>2]|0)+49648>>2]|0))break;k[(k[k[h>>2]>>2]|0)+((k[m>>2]|0)*24|0)+16>>2]=k[k[i>>2]>>2];k[k[i>>2]>>2]=(k[k[h>>2]>>2]|0)+((k[m>>2]|0)*24|0);k[m>>2]=(k[m>>2]|0)+-1}r=e;return}function vf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0;d=r;r=r+64|0;e=d+52|0;f=d+48|0;g=d+44|0;h=d+40|0;i=d+36|0;j=d+32|0;l=d+24|0;m=d+16|0;n=d+8|0;o=d;k[f>>2]=a;k[g>>2]=b;k[h>>2]=c;c=(k[f>>2]|0)+49744|0;k[c>>2]=(k[c>>2]|0)+1;k[i>>2]=k[(k[k[g>>2]>>2]|0)+((k[27632+(k[(k[g>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[j>>2]=k[(k[k[g>>2]>>2]|0)+((k[(k[g>>2]|0)+4>>2]|0)+3<<2)>>2];do if(!(+p[(k[i>>2]|0)+8>>3]<+p[(k[j>>2]|0)+8>>3])){if(+p[(k[i>>2]|0)+8>>3]==+p[(k[j>>2]|0)+8>>3]?+p[k[i>>2]>>3]<+p[k[j>>2]>>3]:0){q=4;break}if(+p[k[h>>2]>>3]<=+p[k[i>>2]>>3]){k[e>>2]=0;s=k[e>>2]|0;r=d;return s|0}}else q=4;while(0);if((q|0)==4?+p[k[h>>2]>>3]>=+p[k[j>>2]>>3]:0){k[e>>2]=1;s=k[e>>2]|0;r=d;return s|0}p[l>>3]=+p[k[i>>2]>>3]-+p[k[h>>2]>>3];p[m>>3]=+p[(k[i>>2]|0)+8>>3]-+p[(k[h>>2]|0)+8>>3];p[n>>3]=+p[k[j>>2]>>3]-+p[k[h>>2]>>3];p[o>>3]=+p[(k[j>>2]|0)+8>>3]-+p[(k[h>>2]|0)+8>>3];k[e>>2]=+p[m>>3]*(+p[n>>3]*+p[n>>3]+ +p[o>>3]*+p[o>>3])>+p[o>>3]*(+p[l>>3]*+p[l>>3]+ +p[m>>3]*+p[m>>3])&1;s=k[e>>2]|0;r=d;return s|0}function wf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0;f=r;r=r+96|0;g=f+92|0;h=f+88|0;i=f+84|0;j=f+80|0;l=f+72|0;m=f+64|0;n=f+56|0;o=f+48|0;q=f+40|0;s=f+32|0;t=f+24|0;u=f+16|0;v=f+8|0;w=f;k[g>>2]=a;k[h>>2]=b;k[i>>2]=c;k[j>>2]=d;p[l>>3]=e;d=(k[g>>2]|0)+49752|0;k[d>>2]=(k[d>>2]|0)+1;p[m>>3]=+p[k[h>>2]>>3]-+p[k[j>>2]>>3];p[n>>3]=+p[(k[h>>2]|0)+8>>3]-+p[(k[j>>2]|0)+8>>3];p[o>>3]=+p[k[i>>2]>>3]-+p[k[j>>2]>>3];p[q>>3]=+p[(k[i>>2]|0)+8>>3]-+p[(k[j>>2]|0)+8>>3];p[s>>3]=+p[k[h>>2]>>3]-+p[k[i>>2]>>3];p[t>>3]=+p[(k[h>>2]|0)+8>>3]-+p[(k[i>>2]|0)+8>>3];p[u>>3]=+p[m>>3]*+p[m>>3]+ +p[n>>3]*+p[n>>3];p[v>>3]=+p[o>>3]*+p[o>>3]+ +p[q>>3]*+p[q>>3];p[w>>3]=+p[s>>3]*+p[s>>3]+ +p[t>>3]*+p[t>>3];e=+p[m>>3]*+p[v>>3]-+p[o>>3]*+p[u>>3]+ +aa(+(+p[u>>3]*+p[v>>3]*+p[w>>3]));r=f;return +(+p[(k[j>>2]|0)+8>>3]+e/(+p[l>>3]*2.0))}function xf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;e=r;r=r+32|0;f=e+24|0;g=e+20|0;h=e+16|0;i=e+12|0;j=e+8|0;l=e+4|0;m=e;k[f>>2]=a;k[g>>2]=b;k[h>>2]=c;k[i>>2]=d;k[l>>2]=k[(k[k[f>>2]>>2]|0)+((k[27620+(k[(k[f>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];if(!(k[l>>2]|0)){r=e;return}k[j>>2]=k[l>>2];k[m>>2]=k[(k[j>>2]|0)+20>>2];k[(k[j>>2]|0)+16>>2]=k[k[g>>2]>>2];k[k[g>>2]>>2]=k[j>>2];tf(k[h>>2]|0,k[k[i>>2]>>2]|0,k[m>>2]|0);m=k[i>>2]|0;k[m>>2]=(k[m>>2]|0)+-1;k[(k[k[f>>2]>>2]|0)+((k[27620+(k[(k[f>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2]=0;r=e;return}function yf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;e=r;r=r+64|0;f=e+48|0;g=e+44|0;h=e+40|0;i=e+36|0;j=e+32|0;l=e+28|0;m=e+24|0;n=e+20|0;o=e+16|0;p=e+12|0;q=e+8|0;s=e+4|0;t=e;k[g>>2]=a;k[h>>2]=b;k[i>>2]=c;k[j>>2]=d;if(!(k[h>>2]|0)){k[f>>2]=0;u=k[f>>2]|0;r=e;return u|0}k[q>>2]=k[(k[k[h>>2]>>2]|0)+((k[27632+(k[(k[h>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];d=k[g>>2]|0;c=k[h>>2]|0;if((k[q>>2]|0)!=(k[(k[h>>2]|0)+8>>2]|0)){b=yf(d,k[c+12>>2]|0,k[i>>2]|0,k[j>>2]|0)|0;k[n>>2]=b;b=yf(k[g>>2]|0,k[(k[h>>2]|0)+16>>2]|0,k[i>>2]|0,k[j>>2]|0)|0;k[o>>2]=b;le((k[g>>2]|0)+392|0,k[h>>2]|0);b=k[o>>2]|0;if(!(k[n>>2]|0)){k[f>>2]=b;u=k[f>>2]|0;r=e;return u|0}a=k[n>>2]|0;if(!b){k[f>>2]=a;u=k[f>>2]|0;r=e;return u|0}b=k[(k[o>>2]|0)+12>>2]|0;if(!(k[a+16>>2]|0)){k[(k[n>>2]|0)+16>>2]=b;k[(k[o>>2]|0)+12>>2]=k[n>>2];k[f>>2]=k[o>>2];u=k[f>>2]|0;r=e;return u|0}a=k[(k[n>>2]|0)+16>>2]|0;if(!b){k[(k[o>>2]|0)+12>>2]=a;k[(k[n>>2]|0)+16>>2]=k[o>>2];k[f>>2]=k[n>>2];u=k[f>>2]|0;r=e;return u|0}k[p>>2]=a;while(1){if(!(k[(k[p>>2]|0)+16>>2]|0))break;k[p>>2]=k[(k[p>>2]|0)+16>>2]}k[(k[p>>2]|0)+16>>2]=k[o>>2];k[f>>2]=k[n>>2];u=k[f>>2]|0;r=e;return u|0}n=vf(d,c,k[i>>2]|0)|0;k[s>>2]=n;n=k[h>>2]|0;if(k[s>>2]|0){k[k[j>>2]>>2]=k[n>>2];k[(k[j>>2]|0)+4>>2]=k[(k[h>>2]|0)+4>>2];k[l>>2]=k[(k[h>>2]|0)+16>>2]}else k[l>>2]=k[n+12>>2];if(!(k[l>>2]|0)){k[f>>2]=k[h>>2];u=k[f>>2]|0;r=e;return u|0}k[q>>2]=k[(k[k[l>>2]>>2]|0)+((k[27632+(k[(k[l>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];if((k[q>>2]|0)!=(k[(k[l>>2]|0)+8>>2]|0)?(q=yf(k[g>>2]|0,k[l>>2]|0,k[i>>2]|0,k[j>>2]|0)|0,k[l>>2]=q,(k[l>>2]|0)==0):0){q=k[h>>2]|0;if(k[s>>2]|0)k[q+16>>2]=0;else k[q+12>>2]=0;k[f>>2]=k[h>>2];u=k[f>>2]|0;r=e;return u|0}q=vf(k[g>>2]|0,k[l>>2]|0,k[i>>2]|0)|0;k[t>>2]=q;if(k[t>>2]|0){k[k[j>>2]>>2]=k[k[l>>2]>>2];k[(k[j>>2]|0)+4>>2]=k[(k[l>>2]|0)+4>>2];q=yf(k[g>>2]|0,k[(k[l>>2]|0)+16>>2]|0,k[i>>2]|0,k[j>>2]|0)|0;k[m>>2]=q;k[(k[l>>2]|0)+16>>2]=k[m>>2]}else{q=yf(k[g>>2]|0,k[(k[l>>2]|0)+12>>2]|0,k[i>>2]|0,k[j>>2]|0)|0;k[m>>2]=q;k[(k[l>>2]|0)+12>>2]=k[m>>2]}if(!(k[m>>2]|0)){q=k[l>>2]|0;if(k[s>>2]|0){k[(k[h>>2]|0)+16>>2]=k[q+12>>2];k[(k[l>>2]|0)+12>>2]=k[h>>2]}else{k[(k[h>>2]|0)+12>>2]=k[q+16>>2];k[(k[l>>2]|0)+16>>2]=k[h>>2]}k[f>>2]=k[l>>2];u=k[f>>2]|0;r=e;return u|0}q=(k[s>>2]|0)!=0;if(k[t>>2]|0){if(q){k[(k[h>>2]|0)+16>>2]=k[(k[l>>2]|0)+12>>2];k[(k[l>>2]|0)+12>>2]=k[h>>2]}else{k[(k[h>>2]|0)+12>>2]=k[(k[m>>2]|0)+16>>2];k[(k[m>>2]|0)+16>>2]=k[h>>2]}k[(k[l>>2]|0)+16>>2]=k[(k[m>>2]|0)+12>>2];k[(k[m>>2]|0)+12>>2]=k[l>>2]}else{if(q){k[(k[h>>2]|0)+16>>2]=k[(k[m>>2]|0)+12>>2];k[(k[m>>2]|0)+12>>2]=k[h>>2]}else{k[(k[h>>2]|0)+12>>2]=k[(k[l>>2]|0)+16>>2];k[(k[l>>2]|0)+16>>2]=k[h>>2]}k[(k[l>>2]|0)+12>>2]=k[(k[m>>2]|0)+16>>2];k[(k[m>>2]|0)+16>>2]=k[l>>2]}k[f>>2]=k[m>>2];u=k[f>>2]|0;r=e;return u|0}function zf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0;e=r;r=r+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;k[f>>2]=a;k[g>>2]=b;k[h>>2]=c;k[i>>2]=d;d=ke((k[f>>2]|0)+392|0)|0;k[j>>2]=d;k[k[j>>2]>>2]=k[k[h>>2]>>2];k[(k[j>>2]|0)+4>>2]=k[(k[h>>2]|0)+4>>2];k[(k[j>>2]|0)+8>>2]=k[(k[k[h>>2]>>2]|0)+((k[27632+(k[(k[h>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];if(!(k[g>>2]|0)){k[(k[j>>2]|0)+12>>2]=0;k[(k[j>>2]|0)+16>>2]=0;l=k[j>>2]|0;r=e;return l|0}h=(vf(k[f>>2]|0,k[g>>2]|0,k[i>>2]|0)|0)!=0;i=k[g>>2]|0;if(h){k[(k[j>>2]|0)+12>>2]=i;k[(k[j>>2]|0)+16>>2]=k[(k[g>>2]|0)+16>>2];k[(k[g>>2]|0)+16>>2]=0;l=k[j>>2]|0;r=e;return l|0}else{k[(k[j>>2]|0)+12>>2]=k[i+12>>2];k[(k[j>>2]|0)+16>>2]=k[g>>2];k[(k[g>>2]|0)+12>>2]=0;l=k[j>>2]|0;r=e;return l|0}return 0}function Af(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;var i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;i=r;r=r+128|0;j=i+112|0;l=i+108|0;m=i+104|0;n=i+100|0;o=i+96|0;q=i+92|0;s=i+88|0;t=i+72|0;u=i+64|0;v=i+56|0;w=i+48|0;x=i+40|0;y=i+32|0;z=i+24|0;A=i+16|0;B=i;k[j>>2]=a;k[l>>2]=b;k[m>>2]=c;k[n>>2]=d;k[o>>2]=e;k[q>>2]=f;k[s>>2]=g;p[t>>3]=h;h=+Ie(k[j>>2]|0,k[l>>2]|0,k[o>>2]|0,k[q>>2]|0,k[s>>2]|0);p[u>>3]=h;p[v>>3]=+p[k[o>>2]>>3]-+p[k[s>>2]>>3];p[w>>3]=+p[(k[o>>2]|0)+8>>3]-+p[(k[s>>2]|0)+8>>3];p[x>>3]=+p[k[q>>2]>>3]-+p[k[s>>2]>>3];p[y>>3]=+p[(k[q>>2]|0)+8>>3]-+p[(k[s>>2]|0)+8>>3];p[z>>3]=+p[v>>3]*+p[v>>3]+ +p[w>>3]*+p[w>>3];p[A>>3]=+p[x>>3]*+p[x>>3]+ +p[y>>3]*+p[y>>3];p[B>>3]=+p[k[s>>2]>>3]-(+p[w>>3]*+p[A>>3]-+p[y>>3]*+p[z>>3])/(+p[u>>3]*2.0);p[B+8>>3]=+p[t>>3];t=k[j>>2]|0;u=yf(k[j>>2]|0,k[m>>2]|0,B,i+80|0)|0;m=zf(t,u,k[n>>2]|0,B)|0;r=i;return m|0}function Bf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;g=r;r=r+32|0;h=g+28|0;i=g+24|0;j=g+20|0;l=g+16|0;m=g+12|0;n=g+8|0;o=g+4|0;p=g;k[h>>2]=a;k[i>>2]=b;k[j>>2]=c;k[l>>2]=d;k[m>>2]=e;k[n>>2]=f;k[k[m>>2]>>2]=k[k[j>>2]>>2];k[(k[m>>2]|0)+4>>2]=k[(k[j>>2]|0)+4>>2];f=yf(k[h>>2]|0,k[i>>2]|0,k[l>>2]|0,k[m>>2]|0)|0;k[i>>2]=f;k[o>>2]=0;while(1){if(k[o>>2]|0){q=7;break}if(!(vf(k[h>>2]|0,k[m>>2]|0,k[l>>2]|0)|0)){q=7;break}k[(k[m>>2]|0)+4>>2]=k[27632+(k[(k[m>>2]|0)+4>>2]<<2)>>2];k[p>>2]=k[(k[k[m>>2]>>2]|0)+(k[(k[m>>2]|0)+4>>2]<<2)>>2];k[(k[m>>2]|0)+4>>2]=k[p>>2]&3;k[k[m>>2]>>2]=k[p>>2]^k[(k[m>>2]|0)+4>>2];if((k[k[m>>2]>>2]|0)==(k[k[j>>2]>>2]|0))s=(k[(k[m>>2]|0)+4>>2]|0)==(k[(k[j>>2]|0)+4>>2]|0);else s=0;k[o>>2]=s&1}if((q|0)==7){k[k[n>>2]>>2]=k[o>>2];r=g;return k[i>>2]|0}return 0}function Cf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0;c=r;r=r+224|0;d=c+56|0;e=c+40|0;f=c+32|0;g=c+212|0;h=c+208|0;i=c+204|0;j=c+196|0;l=c+192|0;m=c+188|0;n=c+184|0;o=c+176|0;q=c+168|0;s=c+160|0;t=c+152|0;u=c+144|0;v=c+136|0;w=c+128|0;x=c+120|0;y=c+116|0;z=c+112|0;A=c+108|0;B=c+104|0;C=c+100|0;D=c+96|0;E=c+92|0;F=c+88|0;G=c+8|0;H=c;I=c+84|0;J=c+80|0;K=c+76|0;L=c+72|0;k[g>>2]=a;k[h>>2]=b;ie((k[g>>2]|0)+392|0,20,508,508,0);k[n>>2]=0;if(k[(k[h>>2]|0)+116>>2]|0)mta(58600,c+16|0)|0;uf(k[g>>2]|0,i,c+200|0,j);k[I>>2]=k[(k[g>>2]|0)+49648>>2];if(k[(k[h>>2]|0)+116>>2]|0)mta(58463,c+24|0)|0;Be(k[g>>2]|0,k[h>>2]|0,t);Be(k[g>>2]|0,k[h>>2]|0,u);k[(k[t>>2]|0)+(k[t+4>>2]<<2)>>2]=k[u>>2]|k[u+4>>2];k[(k[u>>2]|0)+(k[u+4>>2]<<2)>>2]=k[t>>2]|k[t+4>>2];k[t+4>>2]=k[27620+(k[t+4>>2]<<2)>>2];k[u+4>>2]=k[27632+(k[u+4>>2]<<2)>>2];k[(k[t>>2]|0)+(k[t+4>>2]<<2)>>2]=k[u>>2]|k[u+4>>2];k[(k[u>>2]|0)+(k[u+4>>2]<<2)>>2]=k[t>>2]|k[t+4>>2];k[t+4>>2]=k[27620+(k[t+4>>2]<<2)>>2];k[u+4>>2]=k[27632+(k[u+4>>2]<<2)>>2];k[(k[t>>2]|0)+(k[t+4>>2]<<2)>>2]=k[u>>2]|k[u+4>>2];k[(k[u>>2]|0)+(k[u+4>>2]<<2)>>2]=k[t>>2]|k[t+4>>2];k[y>>2]=k[(k[k[i>>2]>>2]|0)+16>>2];k[(k[k[i>>2]>>2]|0)+16>>2]=k[j>>2];k[j>>2]=k[k[i>>2]>>2];tf(k[i>>2]|0,k[I>>2]|0,0);k[I>>2]=(k[I>>2]|0)+-1;do{if(!(k[I>>2]|0)){mta(58635,f)|0;$d(1)}k[z>>2]=k[(k[k[i>>2]>>2]|0)+16>>2];k[(k[k[i>>2]>>2]|0)+16>>2]=k[j>>2];k[j>>2]=k[k[i>>2]>>2];tf(k[i>>2]|0,k[I>>2]|0,0);k[I>>2]=(k[I>>2]|0)+-1;if(+p[k[y>>2]>>3]==+p[k[z>>2]>>3]?+p[(k[y>>2]|0)+8>>3]==+p[(k[z>>2]|0)+8>>3]:0){if(!(k[(k[h>>2]|0)+112>>2]|0)){M=+p[(k[z>>2]|0)+8>>3];p[e>>3]=+p[k[z>>2]>>3];p[e+8>>3]=M;mta(58389,e)|0}k[(k[z>>2]|0)+((k[(k[g>>2]|0)+49696>>2]|0)+1<<2)>>2]=-32767;b=(k[g>>2]|0)+49668|0;k[b>>2]=(k[b>>2]|0)+1}if(!(+p[k[y>>2]>>3]==+p[k[z>>2]>>3]))break}while(+p[(k[y>>2]|0)+8>>3]==+p[(k[z>>2]|0)+8>>3]);k[(k[t>>2]|0)+((k[27620+(k[t+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[y>>2];k[(k[t>>2]|0)+((k[27632+(k[t+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[z>>2];k[(k[u>>2]|0)+((k[27620+(k[u+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[z>>2];k[(k[u>>2]|0)+((k[27632+(k[u+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[y>>2];k[o>>2]=k[t>>2];k[o+4>>2]=k[27632+(k[t+4>>2]<<2)>>2];k[B>>2]=k[z>>2];while(1){if((k[I>>2]|0)<=0)break;k[l>>2]=k[k[i>>2]>>2];tf(k[i>>2]|0,k[I>>2]|0,0);k[I>>2]=(k[I>>2]|0)+-1;k[J>>2]=1;z=k[(k[l>>2]|0)+16>>2]|0;do if(+p[k[l>>2]>>3]<+p[(k[g>>2]|0)+49608>>3]){k[s+4>>2]=z&3;k[s>>2]=k[(k[l>>2]|0)+16>>2]^k[s+4>>2];k[L>>2]=k[(k[s>>2]|0)+(k[s+4>>2]<<2)>>2];k[v+4>>2]=k[L>>2]&3;k[v>>2]=k[L>>2]^k[v+4>>2];k[v+4>>2]=k[27620+(k[v+4>>2]<<2)>>2];xf(v,j,k[i>>2]|0,I);k[w>>2]=k[s>>2];k[w+4>>2]=k[27632+(k[s+4>>2]<<2)>>2];k[L>>2]=k[(k[w>>2]|0)+(k[w+4>>2]<<2)>>2];k[w+4>>2]=k[L>>2]&3;k[w>>2]=k[L>>2]^k[w+4>>2];xf(w,j,k[i>>2]|0,I);if((k[v>>2]|0)==(k[o>>2]|0)?(k[v+4>>2]|0)==(k[o+4>>2]|0):0){k[o>>2]=k[s>>2];k[o+4>>2]=k[27632+(k[s+4>>2]<<2)>>2]}af(k[g>>2]|0,k[h>>2]|0,s);k[(k[s>>2]|0)+((k[s+4>>2]|0)+3<<2)>>2]=0;k[t>>2]=k[s>>2];k[t+4>>2]=k[27632+(k[s+4>>2]<<2)>>2];k[u>>2]=k[s>>2];k[u+4>>2]=k[27620+(k[s+4>>2]<<2)>>2];k[L>>2]=k[(k[t>>2]|0)+(k[t+4>>2]<<2)>>2];k[v+4>>2]=k[L>>2]&3;k[v>>2]=k[L>>2]^k[v+4>>2];if(!(Qe(10)|0)){k[L>>2]=k[(k[s>>2]|0)+(k[s+4>>2]<<2)>>2];k[s+4>>2]=k[L>>2]&3;k[s>>2]=k[L>>2]^k[s+4>>2];k[D>>2]=k[(k[s>>2]|0)+((k[27632+(k[s+4>>2]<<2)>>2]|0)+3<<2)>>2];k[E>>2]=k[(k[s>>2]|0)+((k[s+4>>2]|0)+3<<2)>>2];k[F>>2]=k[(k[s>>2]|0)+((k[27620+(k[s+4>>2]<<2)>>2]|0)+3<<2)>>2];y=Af(k[g>>2]|0,k[h>>2]|0,k[n>>2]|0,t,k[D>>2]|0,k[E>>2]|0,k[F>>2]|0,+p[(k[l>>2]|0)+8>>3])|0;k[n>>2]=y}}else{k[A>>2]=z;if(+p[k[A>>2]>>3]==+p[k[B>>2]>>3]?+p[(k[A>>2]|0)+8>>3]==+p[(k[B>>2]|0)+8>>3]:0){if(!(k[(k[h>>2]|0)+112>>2]|0)){M=+p[(k[A>>2]|0)+8>>3];p[d>>3]=+p[k[A>>2]>>3];p[d+8>>3]=M;mta(58389,d)|0}k[(k[A>>2]|0)+((k[(k[g>>2]|0)+49696>>2]|0)+1<<2)>>2]=-32767;y=(k[g>>2]|0)+49668|0;k[y>>2]=(k[y>>2]|0)+1;k[J>>2]=0;break}k[B>>2]=k[A>>2];y=Bf(k[g>>2]|0,k[n>>2]|0,o,k[A>>2]|0,q,K)|0;k[n>>2]=y;xf(q,j,k[i>>2]|0,I);k[w>>2]=k[q>>2];k[w+4>>2]=k[q+4>>2];k[L>>2]=k[(k[q>>2]|0)+(k[q+4>>2]<<2)>>2];k[v+4>>2]=k[L>>2]&3;k[v>>2]=k[L>>2]^k[v+4>>2];Be(k[g>>2]|0,k[h>>2]|0,t);Be(k[g>>2]|0,k[h>>2]|0,u);k[C>>2]=k[(k[w>>2]|0)+((k[27632+(k[w+4>>2]<<2)>>2]|0)+3<<2)>>2];k[(k[t>>2]|0)+((k[27620+(k[t+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[C>>2];k[(k[t>>2]|0)+((k[27632+(k[t+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[A>>2];k[(k[u>>2]|0)+((k[27620+(k[u+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[A>>2];k[(k[u>>2]|0)+((k[27632+(k[u+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[C>>2];k[(k[t>>2]|0)+(k[t+4>>2]<<2)>>2]=k[u>>2]|k[u+4>>2];k[(k[u>>2]|0)+(k[u+4>>2]<<2)>>2]=k[t>>2]|k[t+4>>2];k[t+4>>2]=k[27620+(k[t+4>>2]<<2)>>2];k[u+4>>2]=k[27632+(k[u+4>>2]<<2)>>2];k[(k[t>>2]|0)+(k[t+4>>2]<<2)>>2]=k[u>>2]|k[u+4>>2];k[(k[u>>2]|0)+(k[u+4>>2]<<2)>>2]=k[t>>2]|k[t+4>>2];k[t+4>>2]=k[27620+(k[t+4>>2]<<2)>>2];k[u+4>>2]=k[27632+(k[u+4>>2]<<2)>>2];k[(k[t>>2]|0)+(k[t+4>>2]<<2)>>2]=k[v>>2]|k[v+4>>2];k[(k[v>>2]|0)+(k[v+4>>2]<<2)>>2]=k[t>>2]|k[t+4>>2];k[(k[u>>2]|0)+(k[u+4>>2]<<2)>>2]=k[w>>2]|k[w+4>>2];k[(k[w>>2]|0)+(k[w+4>>2]<<2)>>2]=k[u>>2]|k[u+4>>2];if(((k[K>>2]|0)==0?(k[w>>2]|0)==(k[o>>2]|0):0)?(k[w+4>>2]|0)==(k[o+4>>2]|0):0){k[o>>2]=k[t>>2];k[o+4>>2]=k[t+4>>2]}if(!(Qe(10)|0)){y=zf(k[g>>2]|0,k[n>>2]|0,t,k[A>>2]|0)|0;k[n>>2]=y;break}if(!(Qe(10)|0)){k[x>>2]=k[u>>2];k[x+4>>2]=k[27620+(k[u+4>>2]<<2)>>2];y=zf(k[g>>2]|0,k[n>>2]|0,x,k[A>>2]|0)|0;k[n>>2]=y}}while(0);k[(k[l>>2]|0)+16>>2]=k[j>>2];k[j>>2]=k[l>>2];if(!(k[J>>2]|0))continue;k[D>>2]=k[(k[v>>2]|0)+((k[v+4>>2]|0)+3<<2)>>2];k[E>>2]=k[(k[t>>2]|0)+((k[27632+(k[t+4>>2]<<2)>>2]|0)+3<<2)>>2];k[F>>2]=k[(k[t>>2]|0)+((k[t+4>>2]|0)+3<<2)>>2];M=+Ie(k[g>>2]|0,k[h>>2]|0,k[D>>2]|0,k[E>>2]|0,k[F>>2]|0);p[G>>3]=M;if(+p[G>>3]>0.0){k[m>>2]=k[j>>2];k[j>>2]=k[(k[j>>2]|0)+16>>2];p[k[m>>2]>>3]=+p[(k[g>>2]|0)+49640>>3];M=+wf(k[g>>2]|0,k[D>>2]|0,k[E>>2]|0,k[F>>2]|0,+p[G>>3]);p[(k[m>>2]|0)+8>>3]=M;k[(k[m>>2]|0)+16>>2]=k[t>>2]|k[t+4>>2];rf(k[i>>2]|0,k[I>>2]|0,k[m>>2]|0);k[I>>2]=(k[I>>2]|0)+1;k[(k[t>>2]|0)+((k[27620+(k[t+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[m>>2]}k[D>>2]=k[(k[u>>2]|0)+((k[u+4>>2]|0)+3<<2)>>2];k[E>>2]=k[(k[u>>2]|0)+((k[27620+(k[u+4>>2]<<2)>>2]|0)+3<<2)>>2];k[F>>2]=k[(k[w>>2]|0)+((k[w+4>>2]|0)+3<<2)>>2];M=+Ie(k[g>>2]|0,k[h>>2]|0,k[D>>2]|0,k[E>>2]|0,k[F>>2]|0);p[H>>3]=M;if(!(+p[H>>3]>0.0))continue;k[m>>2]=k[j>>2];k[j>>2]=k[(k[j>>2]|0)+16>>2];p[k[m>>2]>>3]=+p[(k[g>>2]|0)+49640>>3];M=+wf(k[g>>2]|0,k[D>>2]|0,k[E>>2]|0,k[F>>2]|0,+p[H>>3]);p[(k[m>>2]|0)+8>>3]=M;k[(k[m>>2]|0)+16>>2]=k[w>>2]|k[w+4>>2];rf(k[i>>2]|0,k[I>>2]|0,k[m>>2]|0);k[I>>2]=(k[I>>2]|0)+1;k[(k[w>>2]|0)+((k[27620+(k[w+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[m>>2]}je((k[g>>2]|0)+392|0);k[o+4>>2]=k[27632+(k[o+4>>2]<<2)>>2];m=mf(k[g>>2]|0,k[h>>2]|0,o)|0;r=c;return m|0}function Df(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;c=r;r=r+48|0;d=c+24|0;e=c+16|0;f=c+8|0;g=c+40|0;h=c+36|0;i=c+32|0;j=c+28|0;k[h>>2]=a;k[i>>2]=b;k[(k[h>>2]|0)+49684>>2]=0;qe(k[h>>2]|0,k[i>>2]|0);do if(!(k[(k[i>>2]|0)+112>>2]|0)){mta(58678,c)|0;if(k[(k[i>>2]|0)+92>>2]|0){mta(58715,f)|0;break}if(k[(k[i>>2]|0)+96>>2]|0){mta(58739,e)|0;break}else{mta(58761,d)|0;break}}while(0);do if(!(k[(k[i>>2]|0)+92>>2]|0)){d=k[h>>2]|0;e=k[i>>2]|0;if(k[(k[i>>2]|0)+96>>2]|0){f=Cf(d,e)|0;k[j>>2]=f;break}else{f=nf(d,e)|0;k[j>>2]=f;break}}else{f=qf(k[h>>2]|0,k[i>>2]|0)|0;k[j>>2]=f}while(0);if(!(k[(k[h>>2]|0)+40>>2]|0)){k[g>>2]=0;l=k[g>>2]|0;r=c;return l|0}else{k[g>>2]=k[j>>2];l=k[g>>2]|0;r=c;return l|0}return 0}function Ef(a,b,c,d,e,f,g,h,i,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;l=l|0;var m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;m=r;r=r+272|0;n=m+48|0;o=m+40|0;q=m+32|0;s=m+24|0;t=m+16|0;u=m+264|0;v=m+260|0;w=m+256|0;x=m+252|0;y=m+248|0;z=m+244|0;A=m+240|0;B=m+236|0;C=m+232|0;D=m+228|0;E=m+224|0;F=m+220|0;G=m+216|0;H=m+208|0;I=m+200|0;J=m+192|0;K=m+184|0;L=m+176|0;M=m+168|0;N=m+164|0;O=m+160|0;P=m+156|0;Q=m+152|0;R=m+148|0;S=m+144|0;T=m+140|0;U=m+136|0;V=m+132|0;W=m+128|0;X=m+124|0;Y=m;Z=m+112|0;_=m+104|0;$=m+96|0;aa=m+92|0;ba=m+88|0;ca=m+84|0;da=m+80|0;ea=m+76|0;fa=m+72|0;ga=m+68|0;ha=m+64|0;ia=m+60|0;ja=m+56|0;ka=m+52|0;k[u>>2]=a;k[v>>2]=b;k[w>>2]=c;k[x>>2]=d;k[y>>2]=e;k[z>>2]=f;k[A>>2]=g;k[B>>2]=h;k[C>>2]=i;k[D>>2]=j;k[E>>2]=l;k[(k[u>>2]|0)+49652>>2]=k[z>>2];k[aa>>2]=k[A>>2];if((k[aa>>2]|0)<3){mta(58792,m+8|0)|0;$d(1)}k[(k[u>>2]|0)+49684>>2]=k[B>>2];qe(k[u>>2]|0,k[v>>2]|0);k[ga>>2]=1;while(1){if((k[ga>>2]|0)>(k[(k[u>>2]|0)+49652>>2]|0))break;Be(k[u>>2]|0,k[v>>2]|0,H);k[(k[H>>2]|0)+12>>2]=k[H>>2];k[ga>>2]=(k[ga>>2]|0)+1}k[ba>>2]=0;a:do if(k[k[v>>2]>>2]|0){k[(k[u>>2]|0)+49656>>2]=k[E>>2];k[ba>>2]=(k[D>>2]|0)!=0&1;k[ha>>2]=1;while(1){if((k[ha>>2]|0)>(k[(k[u>>2]|0)+49656>>2]|0))break a;Ce(k[u>>2]|0,M);k[(k[M>>2]|0)+8>>2]=k[M>>2];k[ha>>2]=(k[ha>>2]|0)+1}}while(0);k[F>>2]=0;k[G>>2]=0;if(!(k[(k[v>>2]|0)+112>>2]|0))mta(58842,t)|0;t=ae(k[(k[u>>2]|0)+112+40>>2]<<2)|0;k[N>>2]=t;k[ia>>2]=0;while(1){if((k[ia>>2]|0)>=(k[(k[u>>2]|0)+112+40>>2]|0))break;k[(k[N>>2]|0)+(k[ia>>2]<<2)>>2]=k[(k[u>>2]|0)+49768>>2];k[ia>>2]=(k[ia>>2]|0)+1}if(k[(k[v>>2]|0)+116>>2]|0)mta(58864,s)|0;me(k[u>>2]|0);s=se(k[u>>2]|0)|0;k[H>>2]=s;k[ga>>2]=k[(k[v>>2]|0)+40>>2];while(1){if(!(k[H>>2]|0))break;k[ja>>2]=0;while(1){if((k[ja>>2]|0)>=3)break;s=k[F>>2]|0;k[F>>2]=s+1;k[Z+(k[ja>>2]<<2)>>2]=k[(k[w>>2]|0)+(s<<2)>>2];if(!((k[Z+(k[ja>>2]<<2)>>2]|0)>=(k[(k[v>>2]|0)+40>>2]|0)?(k[Z+(k[ja>>2]<<2)>>2]|0)<((k[(k[v>>2]|0)+40>>2]|0)+(k[(k[u>>2]|0)+49648>>2]|0)|0):0)){k[q>>2]=k[ga>>2];mta(58889,q)|0;$d(1)}k[ja>>2]=(k[ja>>2]|0)+1}k[ja>>2]=3;while(1){if((k[ja>>2]|0)>=(k[aa>>2]|0))break;s=k[F>>2]|0;k[F>>2]=s+1;k[$>>2]=k[(k[w>>2]|0)+(s<<2)>>2];if(((k[$>>2]|0)>=(k[(k[v>>2]|0)+40>>2]|0)?(k[$>>2]|0)<((k[(k[v>>2]|0)+40>>2]|0)+(k[(k[u>>2]|0)+49648>>2]|0)|0):0)?(s=ze(k[u>>2]|0,k[v>>2]|0,k[$>>2]|0)|0,k[V>>2]=s,(k[(k[V>>2]|0)+((k[(k[u>>2]|0)+49696>>2]|0)+1<<2)>>2]|0)!=-32768):0)ve(k[u>>2]|0,k[V>>2]|0);k[ja>>2]=(k[ja>>2]|0)+1}k[ja>>2]=0;while(1){if((k[ja>>2]|0)>=(k[(k[u>>2]|0)+49684>>2]|0))break;s=k[G>>2]|0;k[G>>2]=s+1;p[(k[H>>2]|0)+((k[(k[u>>2]|0)+49708>>2]|0)+(k[ja>>2]|0)<<3)>>3]=+p[(k[x>>2]|0)+(s<<3)>>3];k[ja>>2]=(k[ja>>2]|0)+1}if(k[(k[v>>2]|0)+12>>2]|0){p[Y>>3]=+p[(k[y>>2]|0)+((k[ga>>2]|0)-(k[(k[v>>2]|0)+40>>2]|0)<<3)>>3];p[(k[H>>2]|0)+(k[(k[u>>2]|0)+49712>>2]<<3)>>3]=+p[Y>>3]}k[H+4>>2]=0;s=ze(k[u>>2]|0,k[v>>2]|0,k[Z>>2]|0)|0;k[(k[H>>2]|0)+((k[27620+(k[H+4>>2]<<2)>>2]|0)+3<<2)>>2]=s;s=ze(k[u>>2]|0,k[v>>2]|0,k[Z+4>>2]|0)|0;k[(k[H>>2]|0)+((k[27632+(k[H+4>>2]<<2)>>2]|0)+3<<2)>>2]=s;s=ze(k[u>>2]|0,k[v>>2]|0,k[Z+8>>2]|0)|0;k[(k[H>>2]|0)+((k[H+4>>2]|0)+3<<2)>>2]=s;k[H+4>>2]=0;while(1){if((k[H+4>>2]|0)>=3)break;k[da>>2]=k[Z+(k[H+4>>2]<<2)>>2];k[P>>2]=k[(k[N>>2]|0)+((k[da>>2]|0)-(k[(k[v>>2]|0)+40>>2]|0)<<2)>>2];k[(k[H>>2]|0)+(6+(k[H+4>>2]|0)<<2)>>2]=k[P>>2];k[(k[N>>2]|0)+((k[da>>2]|0)-(k[(k[v>>2]|0)+40>>2]|0)<<2)>>2]=k[H>>2]|k[H+4>>2];k[J+4>>2]=k[P>>2]&3;k[J>>2]=k[P>>2]^k[J+4>>2];if((k[J>>2]|0)!=(k[(k[u>>2]|0)+49768>>2]|0)){k[Q>>2]=k[(k[H>>2]|0)+((k[27632+(k[H+4>>2]<<2)>>2]|0)+3<<2)>>2];k[R>>2]=k[(k[H>>2]|0)+((k[H+4>>2]|0)+3<<2)>>2];do{k[S>>2]=k[(k[J>>2]|0)+((k[27632+(k[J+4>>2]<<2)>>2]|0)+3<<2)>>2];k[T>>2]=k[(k[J>>2]|0)+((k[J+4>>2]|0)+3<<2)>>2];if((k[R>>2]|0)==(k[S>>2]|0)){k[I>>2]=k[H>>2];k[I+4>>2]=k[27632+(k[H+4>>2]<<2)>>2];k[(k[I>>2]|0)+(k[I+4>>2]<<2)>>2]=k[J>>2]|k[J+4>>2];k[(k[J>>2]|0)+(k[J+4>>2]<<2)>>2]=k[I>>2]|k[I+4>>2]}if((k[Q>>2]|0)==(k[T>>2]|0)){k[K>>2]=k[J>>2];k[K+4>>2]=k[27632+(k[J+4>>2]<<2)>>2];k[(k[H>>2]|0)+(k[H+4>>2]<<2)>>2]=k[K>>2]|k[K+4>>2];k[(k[K>>2]|0)+(k[K+4>>2]<<2)>>2]=k[H>>2]|k[H+4>>2]}k[P>>2]=k[(k[J>>2]|0)+(6+(k[J+4>>2]|0)<<2)>>2];k[J+4>>2]=k[P>>2]&3;k[J>>2]=k[P>>2]^k[J+4>>2]}while((k[J>>2]|0)!=(k[(k[u>>2]|0)+49768>>2]|0))}s=H+4|0;k[s>>2]=(k[s>>2]|0)+1}s=se(k[u>>2]|0)|0;k[H>>2]=s;k[ga>>2]=(k[ga>>2]|0)+1}k[F>>2]=0;k[ea>>2]=0;b:do if(k[k[v>>2]>>2]|0){if(k[(k[v>>2]|0)+116>>2]|0)mta(58940,o)|0;k[ca>>2]=0;me((k[u>>2]|0)+56|0);ga=ue(k[u>>2]|0)|0;k[M>>2]=ga;k[ha>>2]=k[(k[v>>2]|0)+40>>2];while(1){if(!(k[M>>2]|0))break b;ga=k[F>>2]|0;k[F>>2]=ga+1;k[_>>2]=k[(k[C>>2]|0)+(ga<<2)>>2];ga=k[F>>2]|0;k[F>>2]=ga+1;k[_+4>>2]=k[(k[C>>2]|0)+(ga<<2)>>2];if(k[ba>>2]|0)k[ca>>2]=k[(k[D>>2]|0)+((k[ha>>2]|0)-(k[(k[v>>2]|0)+40>>2]|0)<<2)>>2];k[ja>>2]=0;while(1){if((k[ja>>2]|0)>=2)break;if(!((k[_+(k[ja>>2]<<2)>>2]|0)>=(k[(k[v>>2]|0)+40>>2]|0)?(k[_+(k[ja>>2]<<2)>>2]|0)<((k[(k[v>>2]|0)+40>>2]|0)+(k[(k[u>>2]|0)+49648>>2]|0)|0):0)){k[n>>2]=k[ha>>2];mta(58978,n)|0;$d(1)}k[ja>>2]=(k[ja>>2]|0)+1}k[M+4>>2]=0;ga=ze(k[u>>2]|0,k[v>>2]|0,k[_>>2]|0)|0;k[W>>2]=ga;ga=ze(k[u>>2]|0,k[v>>2]|0,k[_+4>>2]|0)|0;k[X>>2]=ga;k[(k[M>>2]|0)+(2+(k[M+4>>2]|0)<<2)>>2]=k[W>>2];k[(k[M>>2]|0)+(3-(k[M+4>>2]|0)<<2)>>2]=k[X>>2];k[(k[M>>2]|0)+(4+(k[M+4>>2]|0)<<2)>>2]=k[W>>2];k[(k[M>>2]|0)+(5-(k[M+4>>2]|0)<<2)>>2]=k[X>>2];k[(k[M>>2]|0)+32>>2]=k[ca>>2];k[M+4>>2]=0;while(1){if((k[M+4>>2]|0)>=2)break;k[da>>2]=k[_+(1-(k[M+4>>2]|0)<<2)>>2];k[O>>2]=(k[N>>2]|0)+((k[da>>2]|0)-(k[(k[v>>2]|0)+40>>2]|0)<<2);k[P>>2]=k[(k[N>>2]|0)+((k[da>>2]|0)-(k[(k[v>>2]|0)+40>>2]|0)<<2)>>2];k[J+4>>2]=k[P>>2]&3;k[J>>2]=k[P>>2]^k[J+4>>2];k[U>>2]=k[(k[M>>2]|0)+(2+(k[M+4>>2]|0)<<2)>>2];k[fa>>2]=1;while(1){if(!(k[fa>>2]|0))break;if((k[J>>2]|0)==(k[(k[u>>2]|0)+49768>>2]|0))break;k[S>>2]=k[(k[J>>2]|0)+((k[27632+(k[J+4>>2]<<2)>>2]|0)+3<<2)>>2];if((k[U>>2]|0)==(k[S>>2]|0)){k[k[O>>2]>>2]=k[(k[J>>2]|0)+(6+(k[J+4>>2]|0)<<2)>>2];k[(k[J>>2]|0)+(6+(k[J+4>>2]|0)<<2)>>2]=k[M>>2]|k[M+4>>2];k[(k[M>>2]|0)+(6+(k[M+4>>2]|0)<<2)>>2]=k[J>>2]|k[J+4>>2];k[ka>>2]=k[(k[J>>2]|0)+(k[J+4>>2]<<2)>>2];k[L+4>>2]=k[ka>>2]&3;k[L>>2]=k[ka>>2]^k[L+4>>2];if((k[L>>2]|0)==(k[(k[u>>2]|0)+49768>>2]|0)){$e(k[u>>2]|0,k[v>>2]|0,J,1);k[ea>>2]=(k[ea>>2]|0)+1}k[fa>>2]=0}k[O>>2]=(k[J>>2]|0)+(6+(k[J+4>>2]|0)<<2);k[P>>2]=k[(k[J>>2]|0)+(6+(k[J+4>>2]|0)<<2)>>2];k[J+4>>2]=k[P>>2]&3;k[J>>2]=k[P>>2]^k[J+4>>2]}ga=M+4|0;k[ga>>2]=(k[ga>>2]|0)+1}ga=ue(k[u>>2]|0)|0;k[M>>2]=ga;k[ha>>2]=(k[ha>>2]|0)+1}}while(0);k[ia>>2]=0;while(1){if((k[ia>>2]|0)>=(k[(k[u>>2]|0)+112+40>>2]|0))break;k[P>>2]=k[(k[N>>2]|0)+(k[ia>>2]<<2)>>2];k[J+4>>2]=k[P>>2]&3;k[J>>2]=k[P>>2]^k[J+4>>2];while(1){if((k[J>>2]|0)==(k[(k[u>>2]|0)+49768>>2]|0))break;k[P>>2]=k[(k[J>>2]|0)+(6+(k[J+4>>2]|0)<<2)>>2];k[(k[J>>2]|0)+(6+(k[J+4>>2]|0)<<2)>>2]=k[(k[u>>2]|0)+49776>>2];k[ka>>2]=k[(k[J>>2]|0)+(k[J+4>>2]<<2)>>2];k[L+4>>2]=k[ka>>2]&3;k[L>>2]=k[ka>>2]^k[L+4>>2];if((k[L>>2]|0)==(k[(k[u>>2]|0)+49768>>2]|0)){$e(k[u>>2]|0,k[v>>2]|0,J,1);k[ea>>2]=(k[ea>>2]|0)+1}k[J+4>>2]=k[P>>2]&3;k[J>>2]=k[P>>2]^k[J+4>>2]}k[ia>>2]=(k[ia>>2]|0)+1}be(k[N>>2]|0);r=m;return k[ea>>2]|0}function Ff(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0;e=r;r=r+160|0;f=e+80|0;g=e+64|0;h=e+56|0;i=e+40|0;j=e+24|0;l=e+16|0;m=e+144|0;n=e+140|0;o=e+136|0;q=e+132|0;s=e+128|0;t=e+120|0;u=e+116|0;v=e+112|0;w=e+108|0;x=e+8|0;y=e;z=e+104|0;A=e+100|0;B=e+96|0;k[n>>2]=a;k[o>>2]=b;k[q>>2]=c;k[s>>2]=d;k[u>>2]=k[(k[k[q>>2]>>2]|0)+((k[27620+(k[(k[q>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[w>>2]=k[(k[k[q>>2]>>2]|0)+((k[27632+(k[(k[q>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[v>>2]=k[(k[k[q>>2]>>2]|0)+((k[(k[q>>2]|0)+4>>2]|0)+3<<2)>>2];C=+Ie(k[n>>2]|0,k[o>>2]|0,k[s>>2]|0,k[u>>2]|0,k[v>>2]|0);p[x>>3]=C;k[z>>2]=+p[x>>3]>0.0&1;C=+Ie(k[n>>2]|0,k[o>>2]|0,k[u>>2]|0,k[s>>2]|0,k[w>>2]|0);p[y>>3]=C;k[A>>2]=+p[y>>3]>0.0&1;do if((k[z>>2]|0)!=0&(k[A>>2]|0)!=0){k[t>>2]=k[k[q>>2]>>2];k[t+4>>2]=k[27632+(k[(k[q>>2]|0)+4>>2]<<2)>>2];k[B>>2]=k[(k[t>>2]|0)+(k[t+4>>2]<<2)>>2];k[t+4>>2]=k[B>>2]&3;k[t>>2]=k[B>>2]^k[t+4>>2];if((k[t>>2]|0)==(k[(k[n>>2]|0)+49768>>2]|0)){k[z>>2]=0;break}else{k[A>>2]=0;break}}while(0);while(1){if(!(k[z>>2]|0))break;k[(k[q>>2]|0)+4>>2]=k[27632+(k[(k[q>>2]|0)+4>>2]<<2)>>2];k[B>>2]=k[(k[k[q>>2]>>2]|0)+(k[(k[q>>2]|0)+4>>2]<<2)>>2];k[(k[q>>2]|0)+4>>2]=k[B>>2]&3;k[k[q>>2]>>2]=k[B>>2]^k[(k[q>>2]|0)+4>>2];if((k[k[q>>2]>>2]|0)==(k[(k[n>>2]|0)+49768>>2]|0)){mta(59028,l)|0;C=+p[(k[u>>2]|0)+8>>3];p[j>>3]=+p[k[u>>2]>>3];p[j+8>>3]=C;mta(59082,j)|0;C=+p[(k[s>>2]|0)+8>>3];p[i>>3]=+p[k[s>>2]>>3];p[i+8>>3]=C;mta(59124,i)|0;ce()}k[v>>2]=k[(k[k[q>>2]>>2]|0)+((k[(k[q>>2]|0)+4>>2]|0)+3<<2)>>2];p[y>>3]=+p[x>>3];C=+Ie(k[n>>2]|0,k[o>>2]|0,k[s>>2]|0,k[u>>2]|0,k[v>>2]|0);p[x>>3]=C;k[z>>2]=+p[x>>3]>0.0&1}while(1){if(!(k[A>>2]|0))break;k[B>>2]=k[(k[k[q>>2]>>2]|0)+(k[(k[q>>2]|0)+4>>2]<<2)>>2];k[(k[q>>2]|0)+4>>2]=k[B>>2]&3;k[k[q>>2]>>2]=k[B>>2]^k[(k[q>>2]|0)+4>>2];k[(k[q>>2]|0)+4>>2]=k[27620+(k[(k[q>>2]|0)+4>>2]<<2)>>2];if((k[k[q>>2]>>2]|0)==(k[(k[n>>2]|0)+49768>>2]|0)){mta(59028,h)|0;C=+p[(k[u>>2]|0)+8>>3];p[g>>3]=+p[k[u>>2]>>3];p[g+8>>3]=C;mta(59082,g)|0;C=+p[(k[s>>2]|0)+8>>3];p[f>>3]=+p[k[s>>2]>>3];p[f+8>>3]=C;mta(59124,f)|0;ce()}k[w>>2]=k[(k[k[q>>2]>>2]|0)+((k[27632+(k[(k[q>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];p[x>>3]=+p[y>>3];C=+Ie(k[n>>2]|0,k[o>>2]|0,k[u>>2]|0,k[s>>2]|0,k[w>>2]|0);p[y>>3]=C;k[A>>2]=+p[y>>3]>0.0&1}if(+p[x>>3]==0.0){k[m>>2]=1;D=k[m>>2]|0;r=e;return D|0}if(+p[y>>3]==0.0){k[m>>2]=2;D=k[m>>2]|0;r=e;return D|0}else{k[m>>2]=0;D=k[m>>2]|0;r=e;return D|0}return 0}function Gf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0;f=r;r=r+240|0;g=f+152|0;h=f+144|0;i=f+136|0;j=f+128|0;l=f+80|0;m=f+224|0;n=f+220|0;o=f+216|0;q=f+212|0;s=f+208|0;t=f+200|0;u=f+196|0;v=f+192|0;w=f+188|0;x=f+184|0;y=f+180|0;z=f+176|0;A=f+172|0;B=f+168|0;C=f+56|0;D=f+48|0;E=f+40|0;F=f+32|0;G=f+24|0;H=f+16|0;I=f+8|0;J=f;K=f+164|0;L=f+160|0;M=f+156|0;k[m>>2]=a;k[n>>2]=b;k[o>>2]=c;k[q>>2]=d;k[s>>2]=e;k[u>>2]=k[(k[k[o>>2]>>2]|0)+((k[(k[o>>2]|0)+4>>2]|0)+3<<2)>>2];k[v>>2]=k[(k[k[o>>2]>>2]|0)+((k[27620+(k[(k[o>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[w>>2]=k[(k[k[o>>2]>>2]|0)+((k[27632+(k[(k[o>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];p[E>>3]=+p[k[w>>2]>>3]-+p[k[v>>2]>>3];p[F>>3]=+p[(k[w>>2]|0)+8>>3]-+p[(k[v>>2]|0)+8>>3];p[C>>3]=+p[k[s>>2]>>3]-+p[k[u>>2]>>3];p[D>>3]=+p[(k[s>>2]|0)+8>>3]-+p[(k[u>>2]|0)+8>>3];p[G>>3]=+p[k[v>>2]>>3]-+p[k[s>>2]>>3];p[H>>3]=+p[(k[v>>2]|0)+8>>3]-+p[(k[s>>2]|0)+8>>3];p[J>>3]=+p[F>>3]*+p[C>>3]-+p[E>>3]*+p[D>>3];if(+p[J>>3]==0.0){mta(59143,f+64|0)|0;mta(59184,f+72|0)|0;ce()}p[I>>3]=(+p[D>>3]*+p[G>>3]-+p[C>>3]*+p[H>>3])/+p[J>>3];J=ke((k[m>>2]|0)+112|0)|0;k[z>>2]=J;k[K>>2]=0;while(1){if((k[K>>2]|0)>=(2+(k[(k[m>>2]|0)+49680>>2]|0)|0))break;p[(k[z>>2]|0)+(k[K>>2]<<3)>>3]=+p[(k[v>>2]|0)+(k[K>>2]<<3)>>3]+ +p[I>>3]*(+p[(k[w>>2]|0)+(k[K>>2]<<3)>>3]-+p[(k[v>>2]|0)+(k[K>>2]<<3)>>3]);k[K>>2]=(k[K>>2]|0)+1}k[(k[z>>2]|0)+(k[(k[m>>2]|0)+49696>>2]<<2)>>2]=k[(k[k[q>>2]>>2]|0)+32>>2];k[(k[z>>2]|0)+((k[(k[m>>2]|0)+49696>>2]|0)+1<<2)>>2]=0;if((k[(k[n>>2]|0)+116>>2]|0)>1){N=+p[(k[v>>2]|0)+8>>3];O=+p[k[w>>2]>>3];P=+p[(k[w>>2]|0)+8>>3];Q=+p[k[z>>2]>>3];R=+p[(k[z>>2]|0)+8>>3];p[l>>3]=+p[k[v>>2]>>3];p[l+8>>3]=N;p[l+16>>3]=O;p[l+24>>3]=P;p[l+32>>3]=Q;p[l+40>>3]=R;mta(59238,l)|0}l=cf(k[m>>2]|0,k[n>>2]|0,k[z>>2]|0,k[o>>2]|0,k[q>>2]|0,0,0)|0;k[A>>2]=l;if(k[A>>2]|0){mta(59311,j)|0;mta(59353,i)|0;ce()}k[(k[z>>2]|0)+(k[(k[m>>2]|0)+49700>>2]<<2)>>2]=k[k[o>>2]>>2]|k[(k[o>>2]|0)+4>>2];if((k[(k[m>>2]|0)+49692>>2]|0)>0){i=(k[m>>2]|0)+49692|0;k[i>>2]=(k[i>>2]|0)+-1}k[(k[q>>2]|0)+4>>2]=1-(k[(k[q>>2]|0)+4>>2]|0);k[M>>2]=k[(k[k[q>>2]>>2]|0)+(k[(k[q>>2]|0)+4>>2]<<2)>>2];k[t+4>>2]=k[M>>2]&1;k[t>>2]=k[M>>2]&-4;k[(k[k[q>>2]>>2]|0)+(k[(k[q>>2]|0)+4>>2]<<2)>>2]=k[(k[m>>2]|0)+49776>>2];k[(k[t>>2]|0)+(k[t+4>>2]<<2)>>2]=k[(k[m>>2]|0)+49776>>2];do{k[(k[k[q>>2]>>2]|0)+(4+(k[(k[q>>2]|0)+4>>2]|0)<<2)>>2]=k[z>>2];k[M>>2]=k[(k[k[q>>2]>>2]|0)+(1-(k[(k[q>>2]|0)+4>>2]|0)<<2)>>2];k[(k[q>>2]|0)+4>>2]=k[M>>2]&1;k[k[q>>2]>>2]=k[M>>2]&-4}while((k[k[q>>2]>>2]|0)!=(k[(k[m>>2]|0)+49776>>2]|0));do{k[(k[t>>2]|0)+(4+(k[t+4>>2]|0)<<2)>>2]=k[z>>2];k[M>>2]=k[(k[t>>2]|0)+(1-(k[t+4>>2]|0)<<2)>>2];k[t+4>>2]=k[M>>2]&1;k[t>>2]=k[M>>2]&-4}while((k[t>>2]|0)!=(k[(k[m>>2]|0)+49776>>2]|0));t=Ff(k[m>>2]|0,k[n>>2]|0,k[o>>2]|0,k[u>>2]|0)|0;k[B>>2]=t;k[y>>2]=k[(k[k[o>>2]>>2]|0)+((k[27632+(k[(k[o>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[x>>2]=k[(k[k[o>>2]>>2]|0)+((k[(k[o>>2]|0)+4>>2]|0)+3<<2)>>2];if(+p[k[x>>2]>>3]==+p[k[u>>2]>>3]?+p[(k[x>>2]|0)+8>>3]==+p[(k[u>>2]|0)+8>>3]:0){k[(k[o>>2]|0)+4>>2]=k[27632+(k[(k[o>>2]|0)+4>>2]<<2)>>2];k[L>>2]=k[(k[k[o>>2]>>2]|0)+(k[(k[o>>2]|0)+4>>2]<<2)>>2];k[(k[o>>2]|0)+4>>2]=k[L>>2]&3;k[k[o>>2]>>2]=k[L>>2]^k[(k[o>>2]|0)+4>>2];r=f;return}if(!(+p[k[y>>2]>>3]!=+p[k[u>>2]>>3])?!(+p[(k[y>>2]|0)+8>>3]!=+p[(k[u>>2]|0)+8>>3]):0){r=f;return}mta(59311,h)|0;mta(59384,g)|0;ce();r=f;return}function Hf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0;f=r;r=r+64|0;g=f+52|0;h=f+48|0;i=f+44|0;j=f+40|0;l=f+36|0;m=f+32|0;n=f+24|0;o=f+16|0;q=f+12|0;s=f+8|0;t=f+4|0;u=f;k[h>>2]=a;k[i>>2]=b;k[j>>2]=c;k[l>>2]=d;k[m>>2]=e;e=Ff(k[h>>2]|0,k[i>>2]|0,k[j>>2]|0,k[l>>2]|0)|0;k[t>>2]=e;k[s>>2]=k[(k[k[j>>2]>>2]|0)+((k[27632+(k[(k[j>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[q>>2]=k[(k[k[j>>2]>>2]|0)+((k[(k[j>>2]|0)+4>>2]|0)+3<<2)>>2];if(!(+p[k[q>>2]>>3]==+p[k[l>>2]>>3]?+p[(k[q>>2]|0)+8>>3]==+p[(k[l>>2]|0)+8>>3]:0))v=3;do if((v|0)==3){if(+p[k[s>>2]>>3]==+p[k[l>>2]>>3]?+p[(k[s>>2]|0)+8>>3]==+p[(k[l>>2]|0)+8>>3]:0)break;if((k[t>>2]|0)==1){k[(k[j>>2]|0)+4>>2]=k[27632+(k[(k[j>>2]|0)+4>>2]<<2)>>2];$e(k[h>>2]|0,k[i>>2]|0,k[j>>2]|0,k[m>>2]|0);e=Hf(k[h>>2]|0,k[i>>2]|0,k[j>>2]|0,k[l>>2]|0,k[m>>2]|0)|0;k[g>>2]=e;w=k[g>>2]|0;r=f;return w|0}if((k[t>>2]|0)==2){$e(k[h>>2]|0,k[i>>2]|0,k[j>>2]|0,k[m>>2]|0);k[(k[j>>2]|0)+4>>2]=k[27620+(k[(k[j>>2]|0)+4>>2]<<2)>>2];e=Hf(k[h>>2]|0,k[i>>2]|0,k[j>>2]|0,k[l>>2]|0,k[m>>2]|0)|0;k[g>>2]=e;w=k[g>>2]|0;r=f;return w|0}k[n>>2]=k[k[j>>2]>>2];k[n+4>>2]=k[27620+(k[(k[j>>2]|0)+4>>2]<<2)>>2];k[u>>2]=k[(k[n>>2]|0)+(6+(k[n+4>>2]|0)<<2)>>2];k[o+4>>2]=k[u>>2]&1;k[o>>2]=k[u>>2]&-4;if((k[o>>2]|0)==(k[(k[h>>2]|0)+49776>>2]|0)){k[g>>2]=0;w=k[g>>2]|0;r=f;return w|0}else{Gf(k[h>>2]|0,k[i>>2]|0,n,o,k[l>>2]|0);k[k[j>>2]>>2]=k[n>>2];k[(k[j>>2]|0)+4>>2]=k[n+4>>2];$e(k[h>>2]|0,k[i>>2]|0,k[j>>2]|0,k[m>>2]|0);e=Hf(k[h>>2]|0,k[i>>2]|0,k[j>>2]|0,k[l>>2]|0,k[m>>2]|0)|0;k[g>>2]=e;w=k[g>>2]|0;r=f;return w|0}}while(0);if(+p[k[q>>2]>>3]==+p[k[l>>2]>>3]?+p[(k[q>>2]|0)+8>>3]==+p[(k[l>>2]|0)+8>>3]:0)k[(k[j>>2]|0)+4>>2]=k[27632+(k[(k[j>>2]|0)+4>>2]<<2)>>2];$e(k[h>>2]|0,k[i>>2]|0,k[j>>2]|0,k[m>>2]|0);k[g>>2]=1;w=k[g>>2]|0;r=f;return w|0}function If(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0;f=r;r=r+160|0;g=f+80|0;h=f+72|0;i=f+56|0;j=f+40|0;l=f+8|0;m=f+152|0;n=f+148|0;o=f+144|0;q=f+140|0;s=f+136|0;t=f+128|0;u=f+120|0;v=f+112|0;w=f+104|0;x=f+100|0;y=f+96|0;z=f+92|0;A=f+88|0;B=f+84|0;k[m>>2]=a;k[n>>2]=b;k[o>>2]=c;k[q>>2]=d;k[s>>2]=e;if((k[(k[n>>2]|0)+116>>2]|0)>2){mta(59440,f)|0;C=+p[(k[o>>2]|0)+8>>3];D=+p[k[q>>2]>>3];E=+p[(k[q>>2]|0)+8>>3];p[l>>3]=+p[k[o>>2]>>3];p[l+8>>3]=C;p[l+16>>3]=D;p[l+24>>3]=E;mta(59500,l)|0}l=ke((k[m>>2]|0)+112|0)|0;k[w>>2]=l;k[A>>2]=0;while(1){if((k[A>>2]|0)>=(2+(k[(k[m>>2]|0)+49680>>2]|0)|0))break;p[(k[w>>2]|0)+(k[A>>2]<<3)>>3]=(+p[(k[o>>2]|0)+(k[A>>2]<<3)>>3]+ +p[(k[q>>2]|0)+(k[A>>2]<<3)>>3])*.5;k[A>>2]=(k[A>>2]|0)+1}k[(k[w>>2]|0)+(k[(k[m>>2]|0)+49696>>2]<<2)>>2]=k[s>>2];k[(k[w>>2]|0)+((k[(k[m>>2]|0)+49696>>2]|0)+1<<2)>>2]=1;k[t>>2]=k[(k[m>>2]|0)+49768>>2];A=cf(k[m>>2]|0,k[n>>2]|0,k[w>>2]|0,t,0,0,0)|0;k[z>>2]=A;if((k[z>>2]|0)!=3){if((k[z>>2]|0)==2){if((k[(k[n>>2]|0)+116>>2]|0)>2){E=+p[(k[w>>2]|0)+8>>3];p[i>>3]=+p[k[w>>2]>>3];p[i+8>>3]=E;mta(59587,i)|0}k[B>>2]=k[(k[t>>2]|0)+(6+(k[t+4>>2]|0)<<2)>>2];k[v+4>>2]=k[B>>2]&1;k[v>>2]=k[B>>2]&-4;B=cf(k[m>>2]|0,k[n>>2]|0,k[w>>2]|0,t,v,0,0)|0;k[z>>2]=B;if(k[z>>2]|0){mta(59632,h)|0;mta(59353,g)|0;ce()}}if((k[(k[m>>2]|0)+49692>>2]|0)>0){g=(k[m>>2]|0)+49692|0;k[g>>2]=(k[g>>2]|0)+-1}}else{if((k[(k[n>>2]|0)+116>>2]|0)>2){E=+p[(k[w>>2]|0)+8>>3];p[j>>3]=+p[k[w>>2]>>3];p[j+8>>3]=E;mta(59533,j)|0}ve(k[m>>2]|0,k[w>>2]|0);k[w>>2]=k[(k[t>>2]|0)+((k[27620+(k[t+4>>2]<<2)>>2]|0)+3<<2)>>2]}k[u>>2]=k[t>>2];k[u+4>>2]=k[t+4>>2];Ff(k[m>>2]|0,k[n>>2]|0,u,k[q>>2]|0)|0;if(!(Hf(k[m>>2]|0,k[n>>2]|0,t,k[o>>2]|0,k[s>>2]|0)|0)){k[x>>2]=k[(k[t>>2]|0)+((k[27620+(k[t+4>>2]<<2)>>2]|0)+3<<2)>>2];If(k[m>>2]|0,k[n>>2]|0,k[x>>2]|0,k[o>>2]|0,k[s>>2]|0)}if(Hf(k[m>>2]|0,k[n>>2]|0,u,k[q>>2]|0,k[s>>2]|0)|0){r=f;return}k[y>>2]=k[(k[u>>2]|0)+((k[27620+(k[u+4>>2]<<2)>>2]|0)+3<<2)>>2];If(k[m>>2]|0,k[n>>2]|0,k[y>>2]|0,k[q>>2]|0,k[s>>2]|0);r=f;return}function Jf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0;e=r;r=r+64|0;f=e+60|0;g=e+56|0;h=e+52|0;i=e+48|0;j=e+40|0;l=e+32|0;m=e+24|0;n=e+20|0;o=e+16|0;p=e+12|0;q=e+8|0;s=e+4|0;t=e;k[f>>2]=a;k[g>>2]=b;k[h>>2]=c;k[i>>2]=d;k[j>>2]=k[k[h>>2]>>2];k[j+4>>2]=k[27620+(k[(k[h>>2]|0)+4>>2]<<2)>>2];k[s>>2]=k[(k[j>>2]|0)+(k[j+4>>2]<<2)>>2];k[l+4>>2]=k[s>>2]&3;k[l>>2]=k[s>>2]^k[l+4>>2];if((k[l>>2]|0)==(k[(k[f>>2]|0)+49768>>2]|0)){r=e;return}k[t>>2]=k[(k[j>>2]|0)+(6+(k[j+4>>2]|0)<<2)>>2];k[m+4>>2]=k[t>>2]&1;k[m>>2]=k[t>>2]&-4;if((k[m>>2]|0)!=(k[(k[f>>2]|0)+49776>>2]|0)){r=e;return}k[n>>2]=k[(k[j>>2]|0)+((k[j+4>>2]|0)+3<<2)>>2];k[o>>2]=k[(k[j>>2]|0)+((k[27620+(k[j+4>>2]<<2)>>2]|0)+3<<2)>>2];k[p>>2]=k[(k[j>>2]|0)+((k[27632+(k[j+4>>2]<<2)>>2]|0)+3<<2)>>2];k[q>>2]=k[(k[l>>2]|0)+((k[l+4>>2]|0)+3<<2)>>2];m=k[f>>2]|0;t=k[g>>2]|0;if(k[i>>2]|0){if(+Ie(m,t,k[n>>2]|0,k[o>>2]|0,k[q>>2]|0)<=0.0){r=e;return}}else if(+Ie(m,t,k[q>>2]|0,k[p>>2]|0,k[n>>2]|0)<=0.0){r=e;return}if(+Ie(k[f>>2]|0,k[g>>2]|0,k[p>>2]|0,k[o>>2]|0,k[q>>2]|0)>0.0?+Ke(k[f>>2]|0,k[g>>2]|0,k[o>>2]|0,k[q>>2]|0,k[p>>2]|0,k[n>>2]|0)<=0.0:0){r=e;return}af(k[f>>2]|0,k[g>>2]|0,j);k[(k[h>>2]|0)+4>>2]=k[27632+(k[(k[h>>2]|0)+4>>2]<<2)>>2];Jf(k[f>>2]|0,k[g>>2]|0,k[h>>2]|0,k[i>>2]|0);Jf(k[f>>2]|0,k[g>>2]|0,l,k[i>>2]|0);r=e;return}function Kf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;f=r;r=r+80|0;g=f+72|0;h=f+68|0;i=f+64|0;j=f+60|0;l=f+56|0;m=f+48|0;n=f+40|0;o=f+32|0;q=f+28|0;s=f+24|0;t=f;u=f+20|0;v=f+16|0;w=f+12|0;x=f+8|0;k[g>>2]=a;k[h>>2]=b;k[i>>2]=c;k[j>>2]=d;k[l>>2]=e;k[q>>2]=k[(k[k[i>>2]>>2]|0)+((k[27620+(k[(k[i>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[m>>2]=k[k[i>>2]>>2];k[m+4>>2]=k[27620+(k[(k[i>>2]|0)+4>>2]<<2)>>2];af(k[g>>2]|0,k[h>>2]|0,m);k[u>>2]=0;k[v>>2]=0;do{k[s>>2]=k[(k[m>>2]|0)+((k[27620+(k[m+4>>2]<<2)>>2]|0)+3<<2)>>2];if(+p[k[s>>2]>>3]==+p[k[j>>2]>>3]?+p[(k[s>>2]|0)+8>>3]==+p[(k[j>>2]|0)+8>>3]:0){k[w>>2]=k[(k[m>>2]|0)+(k[m+4>>2]<<2)>>2];k[n+4>>2]=k[w>>2]&3;k[n>>2]=k[w>>2]^k[n+4>>2];k[n+4>>2]=k[27620+(k[n+4>>2]<<2)>>2];Jf(k[g>>2]|0,k[h>>2]|0,m,0);Jf(k[g>>2]|0,k[h>>2]|0,n,1);k[v>>2]=1}else y=5;do if((y|0)==5){y=0;z=+Ie(k[g>>2]|0,k[h>>2]|0,k[q>>2]|0,k[j>>2]|0,k[s>>2]|0);p[t>>3]=z;if(+p[t>>3]==0.0){k[u>>2]=1;k[w>>2]=k[(k[m>>2]|0)+(k[m+4>>2]<<2)>>2];k[n+4>>2]=k[w>>2]&3;k[n>>2]=k[w>>2]^k[n+4>>2];k[n+4>>2]=k[27620+(k[n+4>>2]<<2)>>2];Jf(k[g>>2]|0,k[h>>2]|0,m,0);Jf(k[g>>2]|0,k[h>>2]|0,n,1);k[v>>2]=1;break}if(+p[t>>3]>0.0){k[w>>2]=k[(k[m>>2]|0)+(k[m+4>>2]<<2)>>2];k[n+4>>2]=k[w>>2]&3;k[n>>2]=k[w>>2]^k[n+4>>2];k[n+4>>2]=k[27620+(k[n+4>>2]<<2)>>2];Jf(k[g>>2]|0,k[h>>2]|0,n,1);k[m+4>>2]=k[27632+(k[m+4>>2]<<2)>>2]}else{Jf(k[g>>2]|0,k[h>>2]|0,m,0);k[w>>2]=k[(k[m>>2]|0)+(k[m+4>>2]<<2)>>2];k[m+4>>2]=k[w>>2]&3;k[m>>2]=k[w>>2]^k[m+4>>2];k[m+4>>2]=k[27620+(k[m+4>>2]<<2)>>2]}k[x>>2]=k[(k[m>>2]|0)+(6+(k[m+4>>2]|0)<<2)>>2];k[o+4>>2]=k[x>>2]&1;k[o>>2]=k[x>>2]&-4;if((k[o>>2]|0)==(k[(k[g>>2]|0)+49776>>2]|0)){af(k[g>>2]|0,k[h>>2]|0,m);break}else{k[u>>2]=1;Gf(k[g>>2]|0,k[h>>2]|0,m,o,k[j>>2]|0);k[v>>2]=1;break}}while(0)}while((k[v>>2]|0)!=0^1);$e(k[g>>2]|0,k[h>>2]|0,m,k[l>>2]|0);if(!(k[u>>2]|0)){r=f;return}if(Hf(k[g>>2]|0,k[h>>2]|0,m,k[j>>2]|0,k[l>>2]|0)|0){r=f;return}Kf(k[g>>2]|0,k[h>>2]|0,m,k[j>>2]|0,k[l>>2]|0);r=f;return}function Lf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0;f=r;r=r+144|0;g=f+64|0;h=f+56|0;i=f+40|0;j=f+32|0;l=f;m=f+128|0;n=f+124|0;o=f+120|0;q=f+116|0;s=f+112|0;t=f+104|0;u=f+96|0;v=f+88|0;w=f+84|0;x=f+80|0;k[m>>2]=a;k[n>>2]=b;k[o>>2]=c;k[q>>2]=d;k[s>>2]=e;if((k[(k[n>>2]|0)+116>>2]|0)>1){y=+p[(k[o>>2]|0)+8>>3];z=+p[k[q>>2]>>3];A=+p[(k[q>>2]|0)+8>>3];p[l>>3]=+p[k[o>>2]>>3];p[l+8>>3]=y;p[l+16>>3]=z;p[l+24>>3]=A;mta(59669,l)|0}k[w>>2]=0;k[v>>2]=k[(k[o>>2]|0)+(k[(k[m>>2]|0)+49700>>2]<<2)>>2];if(k[v>>2]|0){k[t+4>>2]=k[v>>2]&3;k[t>>2]=k[v>>2]^k[t+4>>2];k[w>>2]=k[(k[t>>2]|0)+((k[27620+(k[t+4>>2]<<2)>>2]|0)+3<<2)>>2]}if((k[w>>2]|0)!=(k[o>>2]|0)?(k[t>>2]=k[(k[m>>2]|0)+49768>>2],k[t+4>>2]=0,k[x>>2]=k[(k[t>>2]|0)+(k[t+4>>2]<<2)>>2],k[t+4>>2]=k[x>>2]&3,k[t>>2]=k[x>>2]^k[t+4>>2],(_e(k[m>>2]|0,k[n>>2]|0,k[o>>2]|0,t)|0)!=2):0){mta(59717,j)|0;A=+p[(k[o>>2]|0)+8>>3];p[i>>3]=+p[k[o>>2]>>3];p[i+8>>3]=A;mta(59783,i)|0;ce()}k[(k[m>>2]|0)+49784>>2]=k[t>>2];k[(k[m>>2]|0)+49784+4>>2]=k[t+4>>2];if(Hf(k[m>>2]|0,k[n>>2]|0,t,k[q>>2]|0,k[s>>2]|0)|0){r=f;return}k[o>>2]=k[(k[t>>2]|0)+((k[27620+(k[t+4>>2]<<2)>>2]|0)+3<<2)>>2];k[w>>2]=0;k[v>>2]=k[(k[q>>2]|0)+(k[(k[m>>2]|0)+49700>>2]<<2)>>2];if(k[v>>2]|0){k[u+4>>2]=k[v>>2]&3;k[u>>2]=k[v>>2]^k[u+4>>2];k[w>>2]=k[(k[u>>2]|0)+((k[27620+(k[u+4>>2]<<2)>>2]|0)+3<<2)>>2]}if((k[w>>2]|0)!=(k[q>>2]|0)?(k[u>>2]=k[(k[m>>2]|0)+49768>>2],k[u+4>>2]=0,k[x>>2]=k[(k[u>>2]|0)+(k[u+4>>2]<<2)>>2],k[u+4>>2]=k[x>>2]&3,k[u>>2]=k[x>>2]^k[u+4>>2],(_e(k[m>>2]|0,k[n>>2]|0,k[q>>2]|0,u)|0)!=2):0){mta(59717,h)|0;A=+p[(k[q>>2]|0)+8>>3];p[g>>3]=+p[k[q>>2]>>3];p[g+8>>3]=A;mta(59783,g)|0;ce()}k[(k[m>>2]|0)+49784>>2]=k[u>>2];k[(k[m>>2]|0)+49784+4>>2]=k[u+4>>2];if(Hf(k[m>>2]|0,k[n>>2]|0,u,k[o>>2]|0,k[s>>2]|0)|0){r=f;return}k[q>>2]=k[(k[u>>2]|0)+((k[27620+(k[u+4>>2]<<2)>>2]|0)+3<<2)>>2];u=k[m>>2]|0;m=k[n>>2]|0;if(k[(k[n>>2]|0)+104>>2]|0){If(u,m,k[o>>2]|0,k[q>>2]|0,k[s>>2]|0);r=f;return}else{Kf(u,m,t,k[q>>2]|0,k[s>>2]|0);r=f;return}}function Mf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=r;r=r+48|0;d=c+36|0;e=c+32|0;f=c+24|0;g=c+16|0;h=c+8|0;i=c;k[d>>2]=a;k[e>>2]=b;k[f>>2]=k[(k[d>>2]|0)+49768>>2];k[f+4>>2]=0;k[i>>2]=k[(k[f>>2]|0)+(k[f+4>>2]<<2)>>2];k[f+4>>2]=k[i>>2]&3;k[f>>2]=k[i>>2]^k[f+4>>2];k[h>>2]=k[f>>2];k[h+4>>2]=k[f+4>>2];do{$e(k[d>>2]|0,k[e>>2]|0,f,1);k[f+4>>2]=k[27620+(k[f+4>>2]<<2)>>2];k[i>>2]=k[(k[f>>2]|0)+(k[f+4>>2]<<2)>>2];k[g+4>>2]=k[i>>2]&3;k[g>>2]=k[i>>2]^k[g+4>>2];k[g+4>>2]=k[27620+(k[g+4>>2]<<2)>>2];while(1){if((k[g>>2]|0)==(k[(k[d>>2]|0)+49768>>2]|0))break;k[f>>2]=k[g>>2];k[f+4>>2]=k[g+4>>2];k[i>>2]=k[(k[f>>2]|0)+(k[f+4>>2]<<2)>>2];k[g+4>>2]=k[i>>2]&3;k[g>>2]=k[i>>2]^k[g+4>>2];k[g+4>>2]=k[27620+(k[g+4>>2]<<2)>>2]}if((k[f>>2]|0)==(k[h>>2]|0))j=(k[f+4>>2]|0)==(k[h+4>>2]|0);else j=0}while(j^1);r=c;return}function Nf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;f=r;r=r+112|0;g=f+40|0;h=f+32|0;i=f+24|0;j=f+16|0;l=f+8|0;m=f;n=f+92|0;o=f+88|0;q=f+84|0;s=f+80|0;t=f+76|0;u=f+96|0;v=f+72|0;w=f+68|0;x=f+64|0;y=f+60|0;z=f+56|0;A=f+52|0;B=f+48|0;C=f+44|0;k[n>>2]=a;k[o>>2]=b;k[q>>2]=c;k[s>>2]=d;k[t>>2]=e;a:do if(k[k[o>>2]>>2]|0){if(!(k[(k[o>>2]|0)+112>>2]|0))mta(59819,m)|0;Jta(u,59867)|0;k[(k[n>>2]|0)+49656>>2]=k[t>>2];k[y>>2]=(k[s>>2]|0)!=0&1;k[v>>2]=0;if(!(k[(k[n>>2]|0)+40>>2]|0)){r=f;return}if((k[(k[n>>2]|0)+49656>>2]|0)>0?(Ye(k[n>>2]|0,k[o>>2]|0),(k[(k[o>>2]|0)+116>>2]|0)!=0):0)mta(59873,l)|0;k[B>>2]=0;k[C>>2]=0;while(1){if((k[C>>2]|0)>=(k[(k[n>>2]|0)+49656>>2]|0))break a;e=k[v>>2]|0;k[v>>2]=e+1;k[z>>2]=k[(k[q>>2]|0)+(e<<2)>>2];e=k[v>>2]|0;k[v>>2]=e+1;k[A>>2]=k[(k[q>>2]|0)+(e<<2)>>2];if(k[y>>2]|0)k[B>>2]=k[(k[s>>2]|0)+(k[C>>2]<<2)>>2];do if((k[z>>2]|0)>=(k[(k[o>>2]|0)+40>>2]|0)?(k[z>>2]|0)<((k[(k[o>>2]|0)+40>>2]|0)+(k[(k[n>>2]|0)+49648>>2]|0)|0):0){if((k[A>>2]|0)>=(k[(k[o>>2]|0)+40>>2]|0)?(k[A>>2]|0)<((k[(k[o>>2]|0)+40>>2]|0)+(k[(k[n>>2]|0)+49648>>2]|0)|0):0){e=ze(k[n>>2]|0,k[o>>2]|0,k[z>>2]|0)|0;k[w>>2]=e;e=ze(k[n>>2]|0,k[o>>2]|0,k[A>>2]|0)|0;k[x>>2]=e;if(+p[k[w>>2]>>3]==+p[k[x>>2]>>3]?+p[(k[w>>2]|0)+8>>3]==+p[(k[x>>2]|0)+8>>3]:0){if(k[(k[o>>2]|0)+112>>2]|0)break;k[h>>2]=(k[(k[o>>2]|0)+40>>2]|0)+(k[C>>2]|0);k[h+4>>2]=u;mta(60013,h)|0;break}Lf(k[n>>2]|0,k[o>>2]|0,k[w>>2]|0,k[x>>2]|0,k[B>>2]|0);break}if(!(k[(k[o>>2]|0)+112>>2]|0)){k[i>>2]=(k[(k[o>>2]|0)+40>>2]|0)+(k[C>>2]|0);k[i+4>>2]=u;mta(59957,i)|0}}else D=14;while(0);if((D|0)==14?(D=0,(k[(k[o>>2]|0)+112>>2]|0)==0):0){k[j>>2]=(k[(k[o>>2]|0)+40>>2]|0)+(k[C>>2]|0);k[j+4>>2]=u;mta(59902,j)|0}k[C>>2]=(k[C>>2]|0)+1}}else k[(k[n>>2]|0)+49656>>2]=0;while(0);if((k[(k[o>>2]|0)+28>>2]|0)==0?(k[k[o>>2]>>2]|0)!=0:0){r=f;return}if(k[(k[o>>2]|0)+116>>2]|0)mta(60070,g)|0;Mf(k[n>>2]|0,k[o>>2]|0);r=f;return}function Of(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;c=r;r=r+64|0;d=c+60|0;e=c+56|0;f=c+48|0;g=c+40|0;h=c+32|0;i=c+24|0;j=c+20|0;l=c+16|0;m=c+12|0;n=c+8|0;o=c+4|0;k[d>>2]=a;k[e>>2]=b;if(k[(k[e>>2]|0)+116>>2]|0)mta(60110,c)|0;k[f>>2]=k[(k[d>>2]|0)+49768>>2];k[f+4>>2]=0;k[n>>2]=k[(k[f>>2]|0)+(k[f+4>>2]<<2)>>2];k[f+4>>2]=k[n>>2]&3;k[f>>2]=k[n>>2]^k[f+4>>2];k[h>>2]=k[f>>2];k[h+4>>2]=k[f+4>>2];do{do if(!(k[(k[f>>2]|0)+24>>2]&2)){k[o>>2]=k[(k[f>>2]|0)+(6+(k[f+4>>2]|0)<<2)>>2];k[i+4>>2]=k[o>>2]&1;k[i>>2]=k[o>>2]&-4;if((k[i>>2]|0)==(k[(k[d>>2]|0)+49776>>2]|0)){if(k[(k[f>>2]|0)+24>>2]&2)break;k[(k[f>>2]|0)+24>>2]=k[(k[f>>2]|0)+24>>2]|2;e=ke((k[d>>2]|0)+168|0)|0;k[j>>2]=e;k[k[j>>2]>>2]=k[f>>2];break}if(!(k[(k[i>>2]|0)+32>>2]|0)){k[(k[i>>2]|0)+32>>2]=1;k[l>>2]=k[(k[f>>2]|0)+((k[27620+(k[f+4>>2]<<2)>>2]|0)+3<<2)>>2];k[m>>2]=k[(k[f>>2]|0)+((k[27632+(k[f+4>>2]<<2)>>2]|0)+3<<2)>>2];if(!(k[(k[l>>2]|0)+(k[(k[d>>2]|0)+49696>>2]<<2)>>2]|0))k[(k[l>>2]|0)+(k[(k[d>>2]|0)+49696>>2]<<2)>>2]=1;if(!(k[(k[m>>2]|0)+(k[(k[d>>2]|0)+49696>>2]<<2)>>2]|0))k[(k[m>>2]|0)+(k[(k[d>>2]|0)+49696>>2]<<2)>>2]=1}}while(0);k[f+4>>2]=k[27620+(k[f+4>>2]<<2)>>2];k[n>>2]=k[(k[f>>2]|0)+(k[f+4>>2]<<2)>>2];k[g+4>>2]=k[n>>2]&3;k[g>>2]=k[n>>2]^k[g+4>>2];k[g+4>>2]=k[27620+(k[g+4>>2]<<2)>>2];while(1){if((k[g>>2]|0)==(k[(k[d>>2]|0)+49768>>2]|0))break;k[f>>2]=k[g>>2];k[f+4>>2]=k[g+4>>2];k[n>>2]=k[(k[f>>2]|0)+(k[f+4>>2]<<2)>>2];k[g+4>>2]=k[n>>2]&3;k[g>>2]=k[n>>2]^k[g+4>>2];k[g+4>>2]=k[27620+(k[g+4>>2]<<2)>>2]}if((k[f>>2]|0)==(k[h>>2]|0))p=(k[f+4>>2]|0)==(k[h+4>>2]|0);else p=0}while(p^1);r=c;return}function Pf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0,G=0,H=0,I=0,J=0;c=r;r=r+208|0;d=c+112|0;e=c+104|0;f=c+56|0;g=c+8|0;h=c+204|0;i=c+200|0;j=c+192|0;l=c+184|0;m=c+180|0;n=c+176|0;o=c+168|0;q=c+160|0;s=c+156|0;t=c+152|0;u=c+148|0;v=c+144|0;w=c+140|0;x=c+136|0;y=c+132|0;z=c+128|0;k[h>>2]=a;k[i>>2]=b;if(k[(k[i>>2]|0)+116>>2]|0)mta(60171,c)|0;me((k[h>>2]|0)+168|0);b=ne((k[h>>2]|0)+168|0)|0;k[m>>2]=b;while(1){if(!(k[m>>2]|0))break;k[j>>2]=k[k[m>>2]>>2];k[(k[j>>2]|0)+24>>2]=k[(k[j>>2]|0)+24>>2]&-3;if((k[(k[i>>2]|0)+116>>2]|0)>2){k[j+4>>2]=0;k[u>>2]=k[(k[j>>2]|0)+((k[27620+(k[j+4>>2]<<2)>>2]|0)+3<<2)>>2];k[v>>2]=k[(k[j>>2]|0)+((k[27632+(k[j+4>>2]<<2)>>2]|0)+3<<2)>>2];k[w>>2]=k[(k[j>>2]|0)+((k[j+4>>2]|0)+3<<2)>>2];A=+p[(k[u>>2]|0)+8>>3];B=+p[k[v>>2]>>3];C=+p[(k[v>>2]|0)+8>>3];D=+p[k[w>>2]>>3];E=+p[(k[w>>2]|0)+8>>3];p[g>>3]=+p[k[u>>2]>>3];p[g+8>>3]=A;p[g+16>>3]=B;p[g+24>>3]=C;p[g+32>>3]=D;p[g+40>>3]=E;mta(60213,g)|0}k[j+4>>2]=0;while(1){if((k[j+4>>2]|0)>=3)break;k[y>>2]=k[(k[j>>2]|0)+(k[j+4>>2]<<2)>>2];k[l+4>>2]=k[y>>2]&3;k[l>>2]=k[y>>2]^k[l+4>>2];k[z>>2]=k[(k[j>>2]|0)+(6+(k[j+4>>2]|0)<<2)>>2];k[o+4>>2]=k[z>>2]&1;k[o>>2]=k[z>>2]&-4;do if((k[l>>2]|0)!=(k[(k[h>>2]|0)+49768>>2]|0)?(k[(k[l>>2]|0)+24>>2]&2|0)==0:0){if((k[o>>2]|0)==(k[(k[h>>2]|0)+49776>>2]|0)){if((k[(k[i>>2]|0)+116>>2]|0)>2){k[u>>2]=k[(k[l>>2]|0)+((k[27620+(k[l+4>>2]<<2)>>2]|0)+3<<2)>>2];k[v>>2]=k[(k[l>>2]|0)+((k[27632+(k[l+4>>2]<<2)>>2]|0)+3<<2)>>2];k[w>>2]=k[(k[l>>2]|0)+((k[l+4>>2]|0)+3<<2)>>2];E=+p[(k[u>>2]|0)+8>>3];D=+p[k[v>>2]>>3];C=+p[(k[v>>2]|0)+8>>3];B=+p[k[w>>2]>>3];A=+p[(k[w>>2]|0)+8>>3];p[f>>3]=+p[k[u>>2]>>3];p[f+8>>3]=E;p[f+16>>3]=D;p[f+24>>3]=C;p[f+32>>3]=B;p[f+40>>3]=A;mta(60272,f)|0}k[(k[l>>2]|0)+24>>2]=k[(k[l>>2]|0)+24>>2]|2;b=ke((k[h>>2]|0)+168|0)|0;k[n>>2]=b;k[k[n>>2]>>2]=k[l>>2];break}k[(k[o>>2]|0)+(6+(k[o+4>>2]|0)<<2)>>2]=k[(k[h>>2]|0)+49768>>2];if(!(k[(k[o>>2]|0)+32>>2]|0))k[(k[o>>2]|0)+32>>2]=1;k[s>>2]=k[(k[l>>2]|0)+((k[27620+(k[l+4>>2]<<2)>>2]|0)+3<<2)>>2];k[t>>2]=k[(k[l>>2]|0)+((k[27632+(k[l+4>>2]<<2)>>2]|0)+3<<2)>>2];if(!(k[(k[s>>2]|0)+(k[(k[h>>2]|0)+49696>>2]<<2)>>2]|0))k[(k[s>>2]|0)+(k[(k[h>>2]|0)+49696>>2]<<2)>>2]=1;if(!(k[(k[t>>2]|0)+(k[(k[h>>2]|0)+49696>>2]<<2)>>2]|0))k[(k[t>>2]|0)+(k[(k[h>>2]|0)+49696>>2]<<2)>>2]=1}else F=11;while(0);if(((F|0)==11?(F=0,(k[o>>2]|0)!=(k[(k[h>>2]|0)+49776>>2]|0)):0)?(te(k[h>>2]|0,k[o>>2]|0),(k[l>>2]|0)!=(k[(k[h>>2]|0)+49768>>2]|0)):0){k[(k[l>>2]|0)+24>>2]=k[(k[l>>2]|0)+24>>2]&-3;k[(k[l>>2]|0)+(6+(k[l+4>>2]|0)<<2)>>2]=k[(k[h>>2]|0)+49776>>2];k[(k[l>>2]|0)+24>>2]=k[(k[l>>2]|0)+24>>2]|2}b=j+4|0;k[b>>2]=(k[b>>2]|0)+1}k[(k[j>>2]|0)+24>>2]=k[(k[j>>2]|0)+24>>2]|2;b=ne((k[h>>2]|0)+168|0)|0;k[m>>2]=b}if(k[(k[i>>2]|0)+116>>2]|0)mta(60330,e)|0;me((k[h>>2]|0)+168|0);e=ne((k[h>>2]|0)+168|0)|0;k[m>>2]=e;while(1){if(!(k[m>>2]|0))break;k[j>>2]=k[k[m>>2]>>2];k[j+4>>2]=0;while(1){G=j+4|0;if((k[j+4>>2]|0)>=3)break;k[q>>2]=k[(k[j>>2]|0)+((k[27620+(k[G>>2]<<2)>>2]|0)+3<<2)>>2];if(k[q>>2]|0){k[x>>2]=1;k[(k[j>>2]|0)+((k[27620+(k[j+4>>2]<<2)>>2]|0)+3<<2)>>2]=0;k[l>>2]=k[j>>2];k[l+4>>2]=k[27632+(k[j+4>>2]<<2)>>2];k[y>>2]=k[(k[l>>2]|0)+(k[l+4>>2]<<2)>>2];k[l+4>>2]=k[y>>2]&3;k[l>>2]=k[y>>2]^k[l+4>>2];while(1){if((k[l>>2]|0)!=(k[(k[h>>2]|0)+49768>>2]|0)){if((k[l>>2]|0)==(k[j>>2]|0))H=(k[l+4>>2]|0)==(k[j+4>>2]|0);else H=0;I=H^1}else I=0;J=k[l>>2]|0;if(!I)break;if(k[J+24>>2]&2)k[(k[l>>2]|0)+((k[27620+(k[l+4>>2]<<2)>>2]|0)+3<<2)>>2]=0;else k[x>>2]=0;k[l+4>>2]=k[27632+(k[l+4>>2]<<2)>>2];k[y>>2]=k[(k[l>>2]|0)+(k[l+4>>2]<<2)>>2];k[l+4>>2]=k[y>>2]&3;k[l>>2]=k[y>>2]^k[l+4>>2]}a:do if((J|0)==(k[(k[h>>2]|0)+49768>>2]|0)){k[y>>2]=k[(k[j>>2]|0)+(k[j+4>>2]<<2)>>2];k[l+4>>2]=k[y>>2]&3;k[l>>2]=k[y>>2]^k[l+4>>2];k[l+4>>2]=k[27620+(k[l+4>>2]<<2)>>2];while(1){if((k[l>>2]|0)==(k[(k[h>>2]|0)+49768>>2]|0))break a;if(k[(k[l>>2]|0)+24>>2]&2)k[(k[l>>2]|0)+((k[27620+(k[l+4>>2]<<2)>>2]|0)+3<<2)>>2]=0;else k[x>>2]=0;k[y>>2]=k[(k[l>>2]|0)+(k[l+4>>2]<<2)>>2];k[l+4>>2]=k[y>>2]&3;k[l>>2]=k[y>>2]^k[l+4>>2];k[l+4>>2]=k[27620+(k[l+4>>2]<<2)>>2]}}while(0);if(k[x>>2]|0){if((k[(k[i>>2]|0)+116>>2]|0)>1){A=+p[(k[q>>2]|0)+8>>3];p[d>>3]=+p[k[q>>2]>>3];p[d+8>>3]=A;mta(60360,d)|0}k[(k[q>>2]|0)+((k[(k[h>>2]|0)+49696>>2]|0)+1<<2)>>2]=-32767;e=(k[h>>2]|0)+49668|0;k[e>>2]=(k[e>>2]|0)+1}}e=j+4|0;k[e>>2]=(k[e>>2]|0)+1}k[G>>2]=0;while(1){if((k[j+4>>2]|0)>=3)break;k[y>>2]=k[(k[j>>2]|0)+(k[j+4>>2]<<2)>>2];k[l+4>>2]=k[y>>2]&3;k[l>>2]=k[y>>2]^k[l+4>>2];e=k[h>>2]|0;if((k[l>>2]|0)==(k[(k[h>>2]|0)+49768>>2]|0)){o=e+49688|0;k[o>>2]=(k[o>>2]|0)+-1}else{k[(k[l>>2]|0)+(k[l+4>>2]<<2)>>2]=k[e+49768>>2];e=(k[h>>2]|0)+49688|0;k[e>>2]=(k[e>>2]|0)+1}e=j+4|0;k[e>>2]=(k[e>>2]|0)+1}re(k[h>>2]|0,k[j>>2]|0);e=ne((k[h>>2]|0)+168|0)|0;k[m>>2]=e}he((k[h>>2]|0)+168|0);r=c;return}function Qf(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0;e=r;r=r+192|0;f=e+120|0;g=e+72|0;h=e+24|0;i=e+180|0;j=e+176|0;l=e+8|0;m=e;n=e+168|0;o=e+160|0;q=e+156|0;s=e+152|0;t=e+144|0;u=e+140|0;v=e+136|0;w=e+132|0;x=e+128|0;y=e+124|0;k[i>>2]=a;k[j>>2]=b;p[l>>3]=c;p[m>>3]=d;if((k[(k[j>>2]|0)+116>>2]|0)>1)mta(60171,e+16|0)|0;me((k[i>>2]|0)+168|0);b=ne((k[i>>2]|0)+168|0)|0;k[q>>2]=b;while(1){if(!(k[q>>2]|0))break;k[n>>2]=k[k[q>>2]>>2];k[(k[n>>2]|0)+24>>2]=k[(k[n>>2]|0)+24>>2]&-3;if(k[(k[j>>2]|0)+24>>2]|0)p[(k[n>>2]|0)+((k[(k[i>>2]|0)+49708>>2]|0)+(k[(k[i>>2]|0)+49684>>2]|0)<<3)>>3]=+p[l>>3];if(k[(k[j>>2]|0)+12>>2]|0)p[(k[n>>2]|0)+(k[(k[i>>2]|0)+49712>>2]<<3)>>3]=+p[m>>3];if((k[(k[j>>2]|0)+116>>2]|0)>2){k[n+4>>2]=0;k[u>>2]=k[(k[n>>2]|0)+((k[27620+(k[n+4>>2]<<2)>>2]|0)+3<<2)>>2];k[v>>2]=k[(k[n>>2]|0)+((k[27632+(k[n+4>>2]<<2)>>2]|0)+3<<2)>>2];k[w>>2]=k[(k[n>>2]|0)+((k[n+4>>2]|0)+3<<2)>>2];d=+p[(k[u>>2]|0)+8>>3];c=+p[k[v>>2]>>3];z=+p[(k[v>>2]|0)+8>>3];A=+p[k[w>>2]>>3];B=+p[(k[w>>2]|0)+8>>3];p[h>>3]=+p[k[u>>2]>>3];p[h+8>>3]=d;p[h+16>>3]=c;p[h+24>>3]=z;p[h+32>>3]=A;p[h+40>>3]=B;mta(60213,h)|0}k[n+4>>2]=0;while(1){if((k[n+4>>2]|0)>=3)break;k[x>>2]=k[(k[n>>2]|0)+(k[n+4>>2]<<2)>>2];k[o+4>>2]=k[x>>2]&3;k[o>>2]=k[x>>2]^k[o+4>>2];k[y>>2]=k[(k[n>>2]|0)+(6+(k[n+4>>2]|0)<<2)>>2];k[t+4>>2]=k[y>>2]&1;k[t>>2]=k[y>>2]&-4;if(((k[o>>2]|0)!=(k[(k[i>>2]|0)+49768>>2]|0)?(k[(k[o>>2]|0)+24>>2]&2|0)==0:0)?(k[t>>2]|0)==(k[(k[i>>2]|0)+49776>>2]|0):0){if((k[(k[j>>2]|0)+116>>2]|0)>2){k[u>>2]=k[(k[o>>2]|0)+((k[27620+(k[o+4>>2]<<2)>>2]|0)+3<<2)>>2];k[v>>2]=k[(k[o>>2]|0)+((k[27632+(k[o+4>>2]<<2)>>2]|0)+3<<2)>>2];k[w>>2]=k[(k[o>>2]|0)+((k[o+4>>2]|0)+3<<2)>>2];B=+p[(k[u>>2]|0)+8>>3];A=+p[k[v>>2]>>3];z=+p[(k[v>>2]|0)+8>>3];c=+p[k[w>>2]>>3];d=+p[(k[w>>2]|0)+8>>3];p[g>>3]=+p[k[u>>2]>>3];p[g+8>>3]=B;p[g+16>>3]=A;p[g+24>>3]=z;p[g+32>>3]=c;p[g+40>>3]=d;mta(60272,g)|0}k[(k[o>>2]|0)+24>>2]=k[(k[o>>2]|0)+24>>2]|2;b=ke((k[i>>2]|0)+168|0)|0;k[s>>2]=b;k[k[s>>2]>>2]=k[o>>2]}b=n+4|0;k[b>>2]=(k[b>>2]|0)+1}k[(k[n>>2]|0)+24>>2]=k[(k[n>>2]|0)+24>>2]|2;b=ne((k[i>>2]|0)+168|0)|0;k[q>>2]=b}if((k[(k[j>>2]|0)+116>>2]|0)>1)mta(60396,f)|0;me((k[i>>2]|0)+168|0);f=ne((k[i>>2]|0)+168|0)|0;k[q>>2]=f;while(1){if(!(k[q>>2]|0))break;k[n>>2]=k[k[q>>2]>>2];k[(k[n>>2]|0)+24>>2]=k[(k[n>>2]|0)+24>>2]&-3;f=ne((k[i>>2]|0)+168|0)|0;k[q>>2]=f}he((k[i>>2]|0)+168|0);r=e;return}function Rf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;g=r;r=r+112|0;h=g+32|0;i=g+24|0;j=g+16|0;l=g+8|0;m=g;n=g+108|0;o=g+104|0;q=g+100|0;s=g+96|0;t=g+92|0;u=g+88|0;v=g+80|0;w=g+72|0;x=g+64|0;y=g+60|0;z=g+56|0;A=g+52|0;B=g+48|0;C=g+44|0;D=g+40|0;E=g+36|0;k[n>>2]=a;k[o>>2]=b;k[q>>2]=c;k[s>>2]=d;k[t>>2]=e;k[u>>2]=f;do if(!(k[(k[o>>2]|0)+112>>2]|0)){if((k[(k[o>>2]|0)+80>>2]|0)!=0?(k[(k[o>>2]|0)+28>>2]|0)!=0:0)break;mta(60427,m)|0;if((k[s>>2]|0)>0?(k[(k[o>>2]|0)+116>>2]|0)!=0:0)mta(60457,l)|0}while(0);if((k[u>>2]|0)>0){l=ae(k[u>>2]<<3)|0;k[x>>2]=l}else k[x>>2]=0;if((k[s>>2]|0)>0?(k[(k[o>>2]|0)+80>>2]|0)==0:0)F=12;else F=11;if((F|0)==11?((k[u>>2]|0)>0?1:(k[(k[o>>2]|0)+28>>2]|0)==0):0)F=12;if((F|0)==12)ie((k[n>>2]|0)+168|0,4,1020,1020,0);if(!(k[(k[o>>2]|0)+28>>2]|0))Of(k[n>>2]|0,k[o>>2]|0);a:do if((k[s>>2]|0)>0?(k[(k[o>>2]|0)+80>>2]|0)==0:0){k[D>>2]=0;while(1){if((k[D>>2]|0)>=(k[s>>2]<<1|0))break a;if((((((+p[(k[q>>2]|0)+(k[D>>2]<<3)>>3]>=+p[(k[n>>2]|0)+49608>>3]?+p[(k[q>>2]|0)+(k[D>>2]<<3)>>3]<=+p[(k[n>>2]|0)+49616>>3]:0)?+p[(k[q>>2]|0)+((k[D>>2]|0)+1<<3)>>3]>=+p[(k[n>>2]|0)+49624>>3]:0)?+p[(k[q>>2]|0)+((k[D>>2]|0)+1<<3)>>3]<=+p[(k[n>>2]|0)+49632>>3]:0)?(k[v>>2]=k[(k[n>>2]|0)+49768>>2],k[v+4>>2]=0,k[E>>2]=k[(k[v>>2]|0)+(k[v+4>>2]<<2)>>2],k[v+4>>2]=k[E>>2]&3,k[v>>2]=k[E>>2]^k[v+4>>2],k[A>>2]=k[(k[v>>2]|0)+((k[27620+(k[v+4>>2]<<2)>>2]|0)+3<<2)>>2],k[B>>2]=k[(k[v>>2]|0)+((k[27632+(k[v+4>>2]<<2)>>2]|0)+3<<2)>>2],+Ie(k[n>>2]|0,k[o>>2]|0,k[A>>2]|0,k[B>>2]|0,(k[q>>2]|0)+(k[D>>2]<<3)|0)>0.0):0)?(l=_e(k[n>>2]|0,k[o>>2]|0,(k[q>>2]|0)+(k[D>>2]<<3)|0,v)|0,k[C>>2]=l,(k[C>>2]|0)!=3):0)?(k[(k[v>>2]|0)+24>>2]&2|0)==0:0){k[(k[v>>2]|0)+24>>2]=k[(k[v>>2]|0)+24>>2]|2;l=ke((k[n>>2]|0)+168|0)|0;k[y>>2]=l;k[k[y>>2]>>2]=k[v>>2]}k[D>>2]=(k[D>>2]|0)+2}}while(0);b:do if((k[u>>2]|0)>0){k[D>>2]=0;while(1){if((k[D>>2]|0)>=(k[u>>2]|0))break b;k[(k[x>>2]|0)+(k[D>>2]<<3)>>2]=k[(k[n>>2]|0)+49768>>2];if((((((+p[(k[t>>2]|0)+(k[D>>2]<<2<<3)>>3]>=+p[(k[n>>2]|0)+49608>>3]?+p[(k[t>>2]|0)+(k[D>>2]<<2<<3)>>3]<=+p[(k[n>>2]|0)+49616>>3]:0)?+p[(k[t>>2]|0)+((k[D>>2]<<2)+1<<3)>>3]>=+p[(k[n>>2]|0)+49624>>3]:0)?+p[(k[t>>2]|0)+((k[D>>2]<<2)+1<<3)>>3]<=+p[(k[n>>2]|0)+49632>>3]:0)?(k[v>>2]=k[(k[n>>2]|0)+49768>>2],k[v+4>>2]=0,k[E>>2]=k[(k[v>>2]|0)+(k[v+4>>2]<<2)>>2],k[v+4>>2]=k[E>>2]&3,k[v>>2]=k[E>>2]^k[v+4>>2],k[A>>2]=k[(k[v>>2]|0)+((k[27620+(k[v+4>>2]<<2)>>2]|0)+3<<2)>>2],k[B>>2]=k[(k[v>>2]|0)+((k[27632+(k[v+4>>2]<<2)>>2]|0)+3<<2)>>2],+Ie(k[n>>2]|0,k[o>>2]|0,k[A>>2]|0,k[B>>2]|0,(k[t>>2]|0)+(k[D>>2]<<2<<3)|0)>0.0):0)?(y=_e(k[n>>2]|0,k[o>>2]|0,(k[t>>2]|0)+(k[D>>2]<<2<<3)|0,v)|0,k[C>>2]=y,(k[C>>2]|0)!=3):0)?(k[(k[v>>2]|0)+24>>2]&2|0)==0:0){k[(k[x>>2]|0)+(k[D>>2]<<3)>>2]=k[v>>2];k[(k[x>>2]|0)+(k[D>>2]<<3)+4>>2]=k[v+4>>2]}k[D>>2]=(k[D>>2]|0)+1}}while(0);if((k[(k[n>>2]|0)+168+40>>2]|0)>0)Pf(k[n>>2]|0,k[o>>2]|0);if((k[u>>2]|0)>0){do if(!(k[(k[o>>2]|0)+112>>2]|0)){if(!(k[(k[o>>2]|0)+24>>2]|0)){mta(60576,h)|0;break}if(k[(k[o>>2]|0)+12>>2]|0){mta(60491,j)|0;break}else{mta(60544,i)|0;break}}while(0);c:do if((k[(k[o>>2]|0)+24>>2]|0)!=0?(k[(k[o>>2]|0)+4>>2]|0)==0:0){me(k[n>>2]|0);k[w+4>>2]=0;i=se(k[n>>2]|0)|0;k[w>>2]=i;while(1){if(!(k[w>>2]|0))break c;p[(k[w>>2]|0)+((k[(k[n>>2]|0)+49708>>2]|0)+(k[(k[n>>2]|0)+49684>>2]|0)<<3)>>3]=0.0;i=se(k[n>>2]|0)|0;k[w>>2]=i}}while(0);k[D>>2]=0;while(1){if((k[D>>2]|0)>=(k[u>>2]|0))break;if((k[(k[x>>2]|0)+(k[D>>2]<<3)>>2]|0)!=(k[(k[n>>2]|0)+49768>>2]|0)?(k[(k[(k[x>>2]|0)+(k[D>>2]<<3)>>2]|0)+4>>2]|0)!=0:0){k[(k[(k[x>>2]|0)+(k[D>>2]<<3)>>2]|0)+24>>2]=k[(k[(k[x>>2]|0)+(k[D>>2]<<3)>>2]|0)+24>>2]|2;w=ke((k[n>>2]|0)+168|0)|0;k[z>>2]=w;k[k[z>>2]>>2]=k[(k[x>>2]|0)+(k[D>>2]<<3)>>2];Qf(k[n>>2]|0,k[o>>2]|0,+p[(k[t>>2]|0)+((k[D>>2]<<2)+2<<3)>>3],+p[(k[t>>2]|0)+((k[D>>2]<<2)+3<<3)>>3])}k[D>>2]=(k[D>>2]|0)+1}if((k[(k[o>>2]|0)+24>>2]|0)!=0?(k[(k[o>>2]|0)+4>>2]|0)==0:0){D=(k[n>>2]|0)+49684|0;k[D>>2]=(k[D>>2]|0)+1}}if((k[s>>2]|0)>0?(k[(k[o>>2]|0)+80>>2]|0)==0:0)F=66;else F=65;if((F|0)==65?((k[u>>2]|0)>0?1:(k[(k[o>>2]|0)+28>>2]|0)==0):0)F=66;if((F|0)==66)je((k[n>>2]|0)+168|0);if((k[u>>2]|0)<=0){r=g;return}be(k[x>>2]|0);r=g;return}function Sf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=r;r=r+32|0;d=c+20|0;e=c+16|0;f=c+8|0;g=c;k[d>>2]=a;k[e>>2]=b;me((k[d>>2]|0)+56|0);k[f+4>>2]=0;b=ue(k[d>>2]|0)|0;k[f>>2]=b;while(1){if(!(k[f>>2]|0))break;b=We(k[d>>2]|0,k[e>>2]|0,f)|0;k[g>>2]=b;b=ue(k[d>>2]|0)|0;k[f>>2]=b}r=c;return}function Tf(){var a=0;a=r;r=r+16|0;mta(60614,a)|0;mta(60677,a+8|0)|0;r=a;return}function Uf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0;d=r;r=r+256|0;e=d+136|0;f=d+128|0;g=d+120|0;h=d+112|0;i=d+104|0;j=d+88|0;l=d+40|0;m=d+240|0;n=d+236|0;o=d+232|0;q=d+224|0;s=d+216|0;t=d+208|0;u=d+200|0;v=d+192|0;w=d+188|0;x=d+184|0;y=d+180|0;z=d+176|0;A=d+172|0;B=d+32|0;C=d+24|0;D=d+16|0;E=d+8|0;F=d;G=d+168|0;H=d+164|0;I=d+160|0;J=d+156|0;K=d+152|0;L=d+148|0;M=d+144|0;N=d+140|0;k[m>>2]=a;k[n>>2]=b;k[o>>2]=c;a:while(1){if((k[(k[m>>2]|0)+224+40>>2]|0)<=0){O=50;break}if(!(k[(k[m>>2]|0)+49692>>2]|0)){O=50;break}me((k[m>>2]|0)+224|0);c=ye(k[m>>2]|0)|0;k[v>>2]=c;while(1){if(!(k[v>>2]|0))continue a;if(!(k[(k[m>>2]|0)+49692>>2]|0))continue a;k[u+4>>2]=k[k[v>>2]>>2]&1;k[u>>2]=k[k[v>>2]>>2]&-4;k[w>>2]=k[(k[u>>2]|0)+(2+(k[u+4>>2]|0)<<2)>>2];k[x>>2]=k[(k[u>>2]|0)+(3-(k[u+4>>2]|0)<<2)>>2];if(((k[(k[u>>2]|0)+4>>2]|0)!=0?(k[w>>2]|0)==(k[(k[v>>2]|0)+4>>2]|0):0)?(k[x>>2]|0)==(k[(k[v>>2]|0)+8>>2]|0):0){k[M>>2]=k[(k[u>>2]|0)+(6+(k[u+4>>2]|0)<<2)>>2];k[q+4>>2]=k[M>>2]&3;k[q>>2]=k[M>>2]^k[q+4>>2];k[s>>2]=k[q>>2];k[s+4>>2]=k[27620+(k[q+4>>2]<<2)>>2];k[N>>2]=k[(k[s>>2]|0)+(6+(k[s+4>>2]|0)<<2)>>2];k[t+4>>2]=k[N>>2]&1;k[t>>2]=k[N>>2]&-4;k[G>>2]=(k[t>>2]|0)!=(k[(k[m>>2]|0)+49776>>2]|0)&1;k[s+4>>2]=k[27620+(k[s+4>>2]<<2)>>2];k[N>>2]=k[(k[s>>2]|0)+(6+(k[s+4>>2]|0)<<2)>>2];k[t+4>>2]=k[N>>2]&1;k[t>>2]=k[N>>2]&-4;k[I>>2]=(k[t>>2]|0)!=(k[(k[m>>2]|0)+49776>>2]|0)&1;b:do if(!(((k[G>>2]|0)!=0?1:(k[(k[n>>2]|0)+88>>2]|0)!=0)|(k[I>>2]|0)!=0)){k[y>>2]=k[(k[q>>2]|0)+((k[q+4>>2]|0)+3<<2)>>2];while(1){if((k[(k[y>>2]|0)+((k[(k[m>>2]|0)+49696>>2]|0)+1<<2)>>2]|0)!=2)break b;if(!((+p[k[w>>2]>>3]-+p[k[y>>2]>>3])*(+p[k[x>>2]>>3]-+p[k[y>>2]>>3])+(+p[(k[w>>2]|0)+8>>3]-+p[(k[y>>2]|0)+8>>3])*(+p[(k[x>>2]|0)+8>>3]-+p[(k[y>>2]|0)+8>>3])<0.0))break b;ef(k[m>>2]|0,k[n>>2]|0,s);k[M>>2]=k[(k[u>>2]|0)+(6+(k[u+4>>2]|0)<<2)>>2];k[q+4>>2]=k[M>>2]&3;k[q>>2]=k[M>>2]^k[q+4>>2];k[y>>2]=k[(k[q>>2]|0)+((k[q+4>>2]|0)+3<<2)>>2];k[s>>2]=k[q>>2];k[s+4>>2]=k[27632+(k[q+4>>2]<<2)>>2]}}while(0);k[M>>2]=k[(k[q>>2]|0)+(k[q+4>>2]<<2)>>2];k[s+4>>2]=k[M>>2]&3;k[s>>2]=k[M>>2]^k[s+4>>2];c:do if((k[s>>2]|0)!=(k[(k[m>>2]|0)+49768>>2]|0)?(k[s+4>>2]=k[27620+(k[s+4>>2]<<2)>>2],k[N>>2]=k[(k[s>>2]|0)+(6+(k[s+4>>2]|0)<<2)>>2],k[t+4>>2]=k[N>>2]&1,k[t>>2]=k[N>>2]&-4,k[J>>2]=(k[t>>2]|0)!=(k[(k[m>>2]|0)+49776>>2]|0)&1,k[I>>2]=((k[I>>2]|0)!=0?1:(k[J>>2]|0)!=0)&1,k[s+4>>2]=k[27620+(k[s+4>>2]<<2)>>2],k[N>>2]=k[(k[s>>2]|0)+(6+(k[s+4>>2]|0)<<2)>>2],k[t+4>>2]=k[N>>2]&1,k[t>>2]=k[N>>2]&-4,k[H>>2]=(k[t>>2]|0)!=(k[(k[m>>2]|0)+49776>>2]|0)&1,k[G>>2]=((k[G>>2]|0)!=0?1:(k[H>>2]|0)!=0)&1,!(((k[H>>2]|0)!=0?1:(k[(k[n>>2]|0)+88>>2]|0)!=0)|(k[J>>2]|0)!=0)):0){k[y>>2]=k[(k[s>>2]|0)+((k[27620+(k[s+4>>2]<<2)>>2]|0)+3<<2)>>2];while(1){if((k[(k[y>>2]|0)+((k[(k[m>>2]|0)+49696>>2]|0)+1<<2)>>2]|0)!=2)break c;if(!((+p[k[w>>2]>>3]-+p[k[y>>2]>>3])*(+p[k[x>>2]>>3]-+p[k[y>>2]>>3])+(+p[(k[w>>2]|0)+8>>3]-+p[(k[y>>2]|0)+8>>3])*(+p[(k[x>>2]|0)+8>>3]-+p[(k[y>>2]|0)+8>>3])<0.0))break c;ef(k[m>>2]|0,k[n>>2]|0,s);k[M>>2]=k[(k[q>>2]|0)+(k[q+4>>2]<<2)>>2];k[s+4>>2]=k[M>>2]&3;k[s>>2]=k[M>>2]^k[s+4>>2];k[y>>2]=k[(k[s>>2]|0)+((k[s+4>>2]|0)+3<<2)>>2];k[s+4>>2]=k[27632+(k[s+4>>2]<<2)>>2]}}while(0);if((k[G>>2]|0)!=0|(k[I>>2]|0)!=0){P=+aa(+((+p[k[x>>2]>>3]-+p[k[w>>2]>>3])*(+p[k[x>>2]>>3]-+p[k[w>>2]>>3])+(+p[(k[x>>2]|0)+8>>3]-+p[(k[w>>2]|0)+8>>3])*(+p[(k[x>>2]|0)+8>>3]-+p[(k[w>>2]|0)+8>>3])));p[B>>3]=P;p[C>>3]=1.0;while(1){if(!(+p[B>>3]>+p[C>>3]*3.0))break;p[C>>3]=+p[C>>3]*2.0}while(1){Q=+p[C>>3];if(!(+p[B>>3]<+p[C>>3]*1.5))break;p[C>>3]=Q*.5}p[D>>3]=Q/+p[B>>3];if(k[I>>2]|0)p[D>>3]=1.0-+p[D>>3]}else p[D>>3]=.5;c=ke((k[m>>2]|0)+112|0)|0;k[z>>2]=c;k[L>>2]=0;while(1){if((k[L>>2]|0)>=(2+(k[(k[m>>2]|0)+49680>>2]|0)|0))break;p[(k[z>>2]|0)+(k[L>>2]<<3)>>3]=+p[(k[w>>2]|0)+(k[L>>2]<<3)>>3]+ +p[D>>3]*(+p[(k[x>>2]|0)+(k[L>>2]<<3)>>3]-+p[(k[w>>2]|0)+(k[L>>2]<<3)>>3]);k[L>>2]=(k[L>>2]|0)+1}if(((k[(k[n>>2]|0)+84>>2]|0)==0?(P=+Ie(k[m>>2]|0,k[n>>2]|0,k[w>>2]|0,k[x>>2]|0,k[z>>2]|0),p[E>>3]=P,p[F>>3]=(+p[k[w>>2]>>3]-+p[k[x>>2]>>3])*(+p[k[w>>2]>>3]-+p[k[x>>2]>>3])+(+p[(k[w>>2]|0)+8>>3]-+p[(k[x>>2]|0)+8>>3])*(+p[(k[w>>2]|0)+8>>3]-+p[(k[x>>2]|0)+8>>3]),+p[E>>3]!=0.0&+p[F>>3]!=0.0):0)?(p[E>>3]=+p[E>>3]/+p[F>>3],+p[E>>3]==+p[E>>3]):0){c=k[z>>2]|0;p[c>>3]=+p[c>>3]+ +p[E>>3]*(+p[(k[x>>2]|0)+8>>3]-+p[(k[w>>2]|0)+8>>3]);c=(k[z>>2]|0)+8|0;p[c>>3]=+p[c>>3]+ +p[E>>3]*(+p[k[w>>2]>>3]-+p[k[x>>2]>>3])}k[(k[z>>2]|0)+(k[(k[m>>2]|0)+49696>>2]<<2)>>2]=k[(k[u>>2]|0)+32>>2];k[(k[z>>2]|0)+((k[(k[m>>2]|0)+49696>>2]|0)+1<<2)>>2]=1;if((k[(k[n>>2]|0)+116>>2]|0)>1){P=+p[(k[w>>2]|0)+8>>3];R=+p[k[x>>2]>>3];S=+p[(k[x>>2]|0)+8>>3];T=+p[k[z>>2]>>3];U=+p[(k[z>>2]|0)+8>>3];p[l>>3]=+p[k[w>>2]>>3];p[l+8>>3]=P;p[l+16>>3]=R;p[l+24>>3]=S;p[l+32>>3]=T;p[l+40>>3]=U;mta(59238,l)|0}if(+p[k[z>>2]>>3]==+p[k[w>>2]>>3]?+p[(k[z>>2]|0)+8>>3]==+p[(k[w>>2]|0)+8>>3]:0)O=43;else O=41;if(((O|0)==41?(O=0,+p[k[z>>2]>>3]==+p[k[x>>2]>>3]):0)?+p[(k[z>>2]|0)+8>>3]==+p[(k[x>>2]|0)+8>>3]:0)O=43;if((O|0)==43){O=0;U=+p[(k[z>>2]|0)+8>>3];p[j>>3]=+p[k[z>>2]>>3];p[j+8>>3]=U;mta(60736,j)|0;mta(60785,i)|0;mta(60840,h)|0;mta(60890,g)|0;Tf();$d(1)}c=cf(k[m>>2]|0,k[n>>2]|0,k[z>>2]|0,q,u,1,k[o>>2]|0)|0;k[A>>2]=c;if((k[A>>2]|0)!=0&(k[A>>2]|0)!=1){mta(60920,f)|0;mta(59353,e)|0;ce()}if((k[(k[m>>2]|0)+49692>>2]|0)>0){c=(k[m>>2]|0)+49692|0;k[c>>2]=(k[c>>2]|0)+-1}c=We(k[m>>2]|0,k[n>>2]|0,u)|0;k[K>>2]=c;k[N>>2]=k[(k[u>>2]|0)+(1-(k[u+4>>2]|0)<<2)>>2];k[u+4>>2]=k[N>>2]&1;k[u>>2]=k[N>>2]&-4;c=We(k[m>>2]|0,k[n>>2]|0,u)|0;k[K>>2]=c}xe(k[m>>2]|0,k[v>>2]|0);c=ye(k[m>>2]|0)|0;k[v>>2]=c}}if((O|0)==50){r=d;return}}function Vf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=r;r=r+32|0;d=c+20|0;e=c+16|0;f=c+8|0;k[d>>2]=a;k[e>>2]=b;if(k[(k[e>>2]|0)+116>>2]|0)mta(60955,c)|0;me(k[d>>2]|0);k[f+4>>2]=0;b=se(k[d>>2]|0)|0;k[f>>2]=b;while(1){if(!(k[f>>2]|0))break;Xe(k[d>>2]|0,k[e>>2]|0,f);b=se(k[d>>2]|0)|0;k[f>>2]=b}r=c;return}function Wf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0;d=r;r=r+256|0;e=d+200|0;f=d+192|0;g=d+184|0;h=d+176|0;i=d+128|0;j=d+120|0;l=d+104|0;m=d+88|0;n=d+72|0;o=d+24|0;q=d+248|0;s=d+244|0;t=d+240|0;u=d+232|0;v=d+228|0;w=d+224|0;x=d+220|0;y=d+216|0;z=d+8|0;A=d;B=d+212|0;C=d+208|0;D=d+204|0;k[q>>2]=a;k[s>>2]=b;k[t>>2]=c;k[u+4>>2]=k[k[t>>2]>>2]&3;k[u>>2]=k[k[t>>2]>>2]^k[u+4>>2];k[v>>2]=k[(k[u>>2]|0)+((k[27620+(k[u+4>>2]<<2)>>2]|0)+3<<2)>>2];k[w>>2]=k[(k[u>>2]|0)+((k[27632+(k[u+4>>2]<<2)>>2]|0)+3<<2)>>2];k[x>>2]=k[(k[u>>2]|0)+((k[u+4>>2]|0)+3<<2)>>2];if(!(k[(k[u>>2]|0)+4>>2]|0)){r=d;return}if((k[v>>2]|0)!=(k[(k[t>>2]|0)+16>>2]|0)){r=d;return}if((k[w>>2]|0)!=(k[(k[t>>2]|0)+20>>2]|0)){r=d;return}if((k[x>>2]|0)!=(k[(k[t>>2]|0)+24>>2]|0)){r=d;return}if((k[(k[s>>2]|0)+116>>2]|0)>1){mta(60990,d+16|0)|0;E=+p[(k[v>>2]|0)+8>>3];F=+p[k[w>>2]>>3];G=+p[(k[w>>2]|0)+8>>3];H=+p[k[x>>2]>>3];I=+p[(k[x>>2]|0)+8>>3];p[o>>3]=+p[k[v>>2]>>3];p[o+8>>3]=E;p[o+16>>3]=F;p[o+24>>3]=G;p[o+32>>3]=H;p[o+40>>3]=I;mta(57292,o)|0}k[C>>2]=0;o=ke((k[q>>2]|0)+112|0)|0;k[y>>2]=o;Oe(k[q>>2]|0,k[s>>2]|0,k[v>>2]|0,k[w>>2]|0,k[x>>2]|0,k[y>>2]|0,z,A,1);if(+p[k[y>>2]>>3]==+p[k[v>>2]>>3]?+p[(k[y>>2]|0)+8>>3]==+p[(k[v>>2]|0)+8>>3]:0)J=13;else J=9;do if((J|0)==9){if(+p[k[y>>2]>>3]==+p[k[w>>2]>>3]?+p[(k[y>>2]|0)+8>>3]==+p[(k[w>>2]|0)+8>>3]:0){J=13;break}if(+p[k[y>>2]>>3]==+p[k[x>>2]>>3]?+p[(k[y>>2]|0)+8>>3]==+p[(k[x>>2]|0)+8>>3]:0){J=13;break}k[D>>2]=2;while(1){if((k[D>>2]|0)>=(2+(k[(k[q>>2]|0)+49680>>2]|0)|0))break;p[(k[y>>2]|0)+(k[D>>2]<<3)>>3]=+p[(k[v>>2]|0)+(k[D>>2]<<3)>>3]+ +p[z>>3]*(+p[(k[w>>2]|0)+(k[D>>2]<<3)>>3]-+p[(k[v>>2]|0)+(k[D>>2]<<3)>>3])+ +p[A>>3]*(+p[(k[x>>2]|0)+(k[D>>2]<<3)>>3]-+p[(k[v>>2]|0)+(k[D>>2]<<3)>>3]);k[D>>2]=(k[D>>2]|0)+1}k[(k[y>>2]|0)+(k[(k[q>>2]|0)+49696>>2]<<2)>>2]=0;k[(k[y>>2]|0)+((k[(k[q>>2]|0)+49696>>2]|0)+1<<2)>>2]=2;if(+p[A>>3]<+p[z>>3])k[u+4>>2]=k[27632+(k[u+4>>2]<<2)>>2];o=cf(k[q>>2]|0,k[s>>2]|0,k[y>>2]|0,u,0,1,1)|0;k[B>>2]=o;if(!(k[B>>2]|0)){if((k[(k[q>>2]|0)+49692>>2]|0)<=0)break;o=(k[q>>2]|0)+49692|0;k[o>>2]=(k[o>>2]|0)+-1;break}if((k[B>>2]|0)==1){ff(k[q>>2]|0,k[s>>2]|0);if((k[(k[s>>2]|0)+116>>2]|0)>1){I=+p[(k[y>>2]|0)+8>>3];p[m>>3]=+p[k[y>>2]>>3];p[m+8>>3]=I;mta(61101,m)|0}ve(k[q>>2]|0,k[y>>2]|0);break}if((k[B>>2]|0)==2){ve(k[q>>2]|0,k[y>>2]|0);break}if(!(k[(k[s>>2]|0)+112>>2]|0)){I=+p[(k[y>>2]|0)+8>>3];p[l>>3]=+p[k[y>>2]>>3];p[l+8>>3]=I;mta(61038,l)|0;k[C>>2]=1}ve(k[q>>2]|0,k[y>>2]|0)}while(0);if((J|0)==13){if(!(k[(k[s>>2]|0)+112>>2]|0)){I=+p[(k[y>>2]|0)+8>>3];p[n>>3]=+p[k[y>>2]>>3];p[n+8>>3]=I;mta(61038,n)|0;k[C>>2]=1}ve(k[q>>2]|0,k[y>>2]|0)}if(!(k[C>>2]|0)){r=d;return}if(k[(k[s>>2]|0)+116>>2]|0){mta(61130,j)|0;I=+p[(k[v>>2]|0)+8>>3];H=+p[k[w>>2]>>3];G=+p[(k[w>>2]|0)+8>>3];F=+p[k[x>>2]>>3];E=+p[(k[x>>2]|0)+8>>3];p[i>>3]=+p[k[v>>2]>>3];p[i+8>>3]=I;p[i+16>>3]=H;p[i+24>>3]=G;p[i+32>>3]=F;p[i+40>>3]=E;mta(57292,i)|0}mta(61183,h)|0;mta(61241,g)|0;mta(61301,f)|0;mta(61357,e)|0;Tf();r=d;return}function Xf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0;c=r;r=r+96|0;d=c+72|0;e=c+64|0;f=c+56|0;g=c+48|0;h=c+40|0;i=c+32|0;j=c+24|0;l=c+16|0;m=c+88|0;n=c+84|0;o=c+80|0;q=c+76|0;k[m>>2]=a;k[n>>2]=b;if(!(k[(k[n>>2]|0)+112>>2]|0))mta(61398,c)|0;ie((k[m>>2]|0)+224|0,12,252,252,0);if(k[(k[n>>2]|0)+116>>2]|0)mta(61441,c+8|0)|0;Sf(k[m>>2]|0,k[n>>2]|0);if((k[(k[n>>2]|0)+116>>2]|0)!=0?(k[(k[m>>2]|0)+224+40>>2]|0)>0:0)mta(61480,l)|0;Uf(k[m>>2]|0,k[n>>2]|0,0);if(!(((!(+p[(k[n>>2]|0)+136>>3]>0.0)?(k[(k[n>>2]|0)+12>>2]|0)==0:0)?(k[(k[n>>2]|0)+16>>2]|0)==0:0)?(k[(k[n>>2]|0)+20>>2]|0)==0:0))s=12;a:do if((s|0)==12){ie((k[m>>2]|0)+280|0,32,4092,4092,0);k[q>>2]=0;while(1){if((k[q>>2]|0)>=4096)break;k[(k[m>>2]|0)+448+(k[q>>2]<<2)>>2]=0;k[q>>2]=(k[q>>2]|0)+1}k[(k[m>>2]|0)+49600>>2]=-1;Vf(k[m>>2]|0,k[n>>2]|0);ie((k[m>>2]|0)+336|0,8,252,252,0);k[(k[m>>2]|0)+49720>>2]=1;if(k[(k[n>>2]|0)+116>>2]|0)mta(61517,j)|0;while(1){if((k[(k[m>>2]|0)+280+40>>2]|0)<=0)break a;if(!(k[(k[m>>2]|0)+49692>>2]|0))break a;l=Ve(k[m>>2]|0)|0;k[o>>2]=l;Wf(k[m>>2]|0,k[n>>2]|0,k[o>>2]|0);l=k[m>>2]|0;if((k[(k[m>>2]|0)+224+40>>2]|0)>0){Te(l,k[n>>2]|0,k[o>>2]|0);Uf(k[m>>2]|0,k[n>>2]|0,1);continue}else{le(l+280|0,k[o>>2]|0);continue}}}while(0);if(k[(k[n>>2]|0)+112>>2]|0){r=c;return}if(!(k[(k[n>>2]|0)+88>>2]|0)){r=c;return}if((k[(k[m>>2]|0)+224+40>>2]|0)<=0){r=c;return}if(k[(k[m>>2]|0)+49692>>2]|0){r=c;return}mta(61545,i)|0;if((k[(k[m>>2]|0)+224+40>>2]|0)==1)mta(61603,h)|0;else{k[g>>2]=k[(k[m>>2]|0)+224+40>>2];mta(61666,g)|0}mta(61730,f)|0;mta(61790,e)|0;mta(61852,d)|0;r=c;return}function Yf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0.0;c=r;r=r+80|0;d=c+8|0;e=c+76|0;f=c+72|0;g=c+64|0;h=c+56|0;i=c+48|0;j=c+44|0;l=c+40|0;m=c+36|0;n=c+32|0;o=c+28|0;q=c+24|0;k[e>>2]=a;k[f>>2]=b;if(!(k[(k[f>>2]|0)+112>>2]|0))mta(61895,c)|0;k[(k[e>>2]|0)+112+12>>2]=0;me(k[e>>2]|0);b=se(k[e>>2]|0)|0;k[g>>2]=b;while(1){if(!(k[g>>2]|0))break;k[g+4>>2]=0;while(1){if((k[g+4>>2]|0)>=3)break;k[o>>2]=k[(k[g>>2]|0)+(k[g+4>>2]<<2)>>2];k[h+4>>2]=k[o>>2]&3;k[h>>2]=k[o>>2]^k[h+4>>2];if(!((k[g>>2]|0)>>>0>=(k[h>>2]|0)>>>0?(k[h>>2]|0)!=(k[(k[e>>2]|0)+49768>>2]|0):0)){k[l>>2]=k[(k[g>>2]|0)+((k[27620+(k[g+4>>2]<<2)>>2]|0)+3<<2)>>2];k[m>>2]=k[(k[g>>2]|0)+((k[27632+(k[g+4>>2]<<2)>>2]|0)+3<<2)>>2];b=ke((k[e>>2]|0)+112|0)|0;k[j>>2]=b;k[n>>2]=0;while(1){if((k[n>>2]|0)>=(2+(k[(k[e>>2]|0)+49680>>2]|0)|0))break;p[(k[j>>2]|0)+(k[n>>2]<<3)>>3]=(+p[(k[l>>2]|0)+(k[n>>2]<<3)>>3]+ +p[(k[m>>2]|0)+(k[n>>2]<<3)>>3])*.5;k[n>>2]=(k[n>>2]|0)+1}k[(k[j>>2]|0)+(k[(k[e>>2]|0)+49696>>2]<<2)>>2]=(k[h>>2]|0)==(k[(k[e>>2]|0)+49768>>2]|0)&1;k[(k[j>>2]|0)+((k[(k[e>>2]|0)+49696>>2]|0)+1<<2)>>2]=(k[h>>2]|0)==(k[(k[e>>2]|0)+49768>>2]|0)?2:1;if((k[(k[f>>2]|0)+120>>2]|0)!=0?(k[q>>2]=k[(k[g>>2]|0)+(6+(k[g+4>>2]|0)<<2)>>2],k[i+4>>2]=k[q>>2]&1,k[i>>2]=k[q>>2]&-4,(k[i>>2]|0)!=(k[(k[e>>2]|0)+49776>>2]|0)):0){k[(k[j>>2]|0)+(k[(k[e>>2]|0)+49696>>2]<<2)>>2]=k[(k[i>>2]|0)+32>>2];k[(k[j>>2]|0)+((k[(k[e>>2]|0)+49696>>2]|0)+1<<2)>>2]=1}if((k[(k[f>>2]|0)+116>>2]|0)>1){s=+p[(k[j>>2]|0)+8>>3];p[d>>3]=+p[k[j>>2]>>3];p[d+8>>3]=s;mta(61940,d)|0}k[(k[g>>2]|0)+((k[(k[e>>2]|0)+49704>>2]|0)+(k[g+4>>2]|0)<<2)>>2]=k[j>>2];if((k[h>>2]|0)!=(k[(k[e>>2]|0)+49768>>2]|0))k[(k[h>>2]|0)+((k[(k[e>>2]|0)+49704>>2]|0)+(k[h+4>>2]|0)<<2)>>2]=k[j>>2]}b=g+4|0;k[b>>2]=(k[b>>2]|0)+1}b=se(k[e>>2]|0)|0;k[g>>2]=b}r=c;return}function Zf(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0;h=r;r=r+80|0;i=h+64|0;j=h+60|0;l=h+56|0;m=h+52|0;n=h+48|0;o=h+44|0;q=h+40|0;s=h+36|0;t=h+8|0;u=h;v=h+32|0;w=h+28|0;x=h+24|0;y=h+20|0;k[i>>2]=a;k[j>>2]=b;k[l>>2]=c;k[m>>2]=d;k[n>>2]=e;k[o>>2]=f;k[q>>2]=g;k[(k[i>>2]|0)+49648>>2]=k[o>>2];k[(k[i>>2]|0)+49676>>2]=2;k[(k[i>>2]|0)+49680>>2]=k[q>>2];k[(k[i>>2]|0)+49724>>2]=0;if((k[(k[i>>2]|0)+49648>>2]|0)<3){mta(61968,h+16|0)|0;$d(1)}if(!(k[(k[i>>2]|0)+49680>>2]|0))k[(k[j>>2]|0)+32>>2]=0;pe(k[i>>2]|0,k[j>>2]|0);k[x>>2]=0;k[y>>2]=0;k[v>>2]=0;while(1){z=k[i>>2]|0;if((k[v>>2]|0)>=(k[(k[i>>2]|0)+49648>>2]|0))break;j=ke(z+112|0)|0;k[s>>2]=j;j=k[x>>2]|0;k[x>>2]=j+1;A=+p[(k[l>>2]|0)+(j<<3)>>3];p[k[s>>2]>>3]=A;p[t>>3]=A;j=k[x>>2]|0;k[x>>2]=j+1;A=+p[(k[l>>2]|0)+(j<<3)>>3];p[(k[s>>2]|0)+8>>3]=A;p[u>>3]=A;k[w>>2]=0;while(1){if((k[w>>2]|0)>=(k[q>>2]|0))break;j=k[y>>2]|0;k[y>>2]=j+1;p[(k[s>>2]|0)+(2+(k[w>>2]|0)<<3)>>3]=+p[(k[m>>2]|0)+(j<<3)>>3];k[w>>2]=(k[w>>2]|0)+1}if(k[n>>2]|0)k[(k[s>>2]|0)+(k[(k[i>>2]|0)+49696>>2]<<2)>>2]=k[(k[n>>2]|0)+(k[v>>2]<<2)>>2];else k[(k[s>>2]|0)+(k[(k[i>>2]|0)+49696>>2]<<2)>>2]=0;k[(k[s>>2]|0)+((k[(k[i>>2]|0)+49696>>2]|0)+1<<2)>>2]=0;A=+p[t>>3];j=k[i>>2]|0;if(!(k[v>>2]|0)){p[j+49616>>3]=A;p[(k[i>>2]|0)+49608>>3]=A;B=+p[u>>3];p[(k[i>>2]|0)+49632>>3]=B;p[(k[i>>2]|0)+49624>>3]=B}else{if(A<+p[j+49608>>3])C=+p[t>>3];else C=+p[(k[i>>2]|0)+49608>>3];p[(k[i>>2]|0)+49608>>3]=C;if(+p[t>>3]>+p[(k[i>>2]|0)+49616>>3])D=+p[t>>3];else D=+p[(k[i>>2]|0)+49616>>3];p[(k[i>>2]|0)+49616>>3]=D;if(+p[u>>3]<+p[(k[i>>2]|0)+49624>>3])E=+p[u>>3];else E=+p[(k[i>>2]|0)+49624>>3];p[(k[i>>2]|0)+49624>>3]=E;if(+p[u>>3]>+p[(k[i>>2]|0)+49632>>3])F=+p[u>>3];else F=+p[(k[i>>2]|0)+49632>>3];p[(k[i>>2]|0)+49632>>3]=F}k[v>>2]=(k[v>>2]|0)+1}p[(k[i>>2]|0)+49640>>3]=+p[z+49608>>3]*10.0-+p[(k[i>>2]|0)+49616>>3]*9.0;r=h;return}function _f(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0.0;f=r;r=r+64|0;g=f+56|0;h=f+52|0;i=f+48|0;j=f+44|0;l=f+40|0;m=f+36|0;n=f+32|0;o=f+28|0;q=f+24|0;s=f+20|0;t=f+16|0;u=f+12|0;v=f+8|0;w=f+4|0;k[g>>2]=a;k[h>>2]=b;k[i>>2]=c;k[j>>2]=d;k[l>>2]=e;e=k[(k[g>>2]|0)+112+40>>2]|0;if(k[(k[h>>2]|0)+36>>2]|0)k[u>>2]=e-(k[(k[g>>2]|0)+49668>>2]|0);else k[u>>2]=e;if(!(k[(k[h>>2]|0)+112>>2]|0))mta(62024,f)|0;if(!(k[k[i>>2]>>2]|0)){e=ae(k[u>>2]<<1<<3)|0;k[k[i>>2]>>2]=e}if((k[(k[g>>2]|0)+49680>>2]|0)>0?(k[k[j>>2]>>2]|0)==0:0){e=ae((ma(k[u>>2]|0,k[(k[g>>2]|0)+49680>>2]|0)|0)<<3)|0;k[k[j>>2]>>2]=e}if((k[(k[h>>2]|0)+60>>2]|0)==0?(k[k[l>>2]>>2]|0)==0:0){e=ae(k[u>>2]<<2)|0;k[k[l>>2]>>2]=e}k[m>>2]=k[k[i>>2]>>2];k[n>>2]=k[k[j>>2]>>2];k[o>>2]=k[k[l>>2]>>2];k[q>>2]=0;k[s>>2]=0;me((k[g>>2]|0)+112|0);k[v>>2]=k[(k[h>>2]|0)+40>>2];l=we(k[g>>2]|0)|0;k[t>>2]=l;while(1){if(!(k[t>>2]|0))break;if(!((k[(k[h>>2]|0)+36>>2]|0)!=0?(k[(k[t>>2]|0)+((k[(k[g>>2]|0)+49696>>2]|0)+1<<2)>>2]|0)==-32767:0)){x=+p[k[t>>2]>>3];l=k[q>>2]|0;k[q>>2]=l+1;p[(k[m>>2]|0)+(l<<3)>>3]=x;x=+p[(k[t>>2]|0)+8>>3];l=k[q>>2]|0;k[q>>2]=l+1;p[(k[m>>2]|0)+(l<<3)>>3]=x;k[w>>2]=0;while(1){if((k[w>>2]|0)>=(k[(k[g>>2]|0)+49680>>2]|0))break;x=+p[(k[t>>2]|0)+(2+(k[w>>2]|0)<<3)>>3];l=k[s>>2]|0;k[s>>2]=l+1;p[(k[n>>2]|0)+(l<<3)>>3]=x;k[w>>2]=(k[w>>2]|0)+1}if(!(k[(k[h>>2]|0)+60>>2]|0))k[(k[o>>2]|0)+((k[v>>2]|0)-(k[(k[h>>2]|0)+40>>2]|0)<<2)>>2]=k[(k[t>>2]|0)+(k[(k[g>>2]|0)+49696>>2]<<2)>>2];k[(k[t>>2]|0)+(k[(k[g>>2]|0)+49696>>2]<<2)>>2]=k[v>>2];k[v>>2]=(k[v>>2]|0)+1}l=we(k[g>>2]|0)|0;k[t>>2]=l}r=f;return}function $f(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=r;r=r+16|0;d=c+12|0;e=c+8|0;f=c+4|0;g=c;k[d>>2]=a;k[e>>2]=b;me((k[d>>2]|0)+112|0);k[g>>2]=k[(k[e>>2]|0)+40>>2];b=we(k[d>>2]|0)|0;k[f>>2]=b;while(1){if(!(k[f>>2]|0))break;k[(k[f>>2]|0)+(k[(k[d>>2]|0)+49696>>2]<<2)>>2]=k[g>>2];if(!((k[(k[e>>2]|0)+36>>2]|0)!=0?(k[(k[f>>2]|0)+((k[(k[d>>2]|0)+49696>>2]|0)+1<<2)>>2]|0)==-32767:0))k[g>>2]=(k[g>>2]|0)+1;b=we(k[d>>2]|0)|0;k[f>>2]=b}r=c;return}function ag(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;e=r;r=r+80|0;f=e+76|0;g=e+72|0;h=e+68|0;i=e+64|0;j=e+60|0;l=e+56|0;m=e+52|0;n=e+48|0;o=e+40|0;q=e+32|0;s=e+28|0;t=e+24|0;u=e+20|0;v=e+16|0;w=e+12|0;x=e+8|0;y=e+4|0;k[f>>2]=a;k[g>>2]=b;k[h>>2]=c;k[i>>2]=d;if(!(k[(k[g>>2]|0)+112>>2]|0))mta(62043,e)|0;if(!(k[k[h>>2]>>2]|0)){d=ae((ma(k[(k[f>>2]|0)+40>>2]|0,(ma((k[(k[g>>2]|0)+124>>2]|0)+1|0,(k[(k[g>>2]|0)+124>>2]|0)+2|0)|0)/2|0)|0)<<2)|0;k[k[h>>2]>>2]=d}if((k[(k[f>>2]|0)+49684>>2]|0)>0?(k[k[i>>2]>>2]|0)==0:0){d=ae((ma(k[(k[f>>2]|0)+40>>2]|0,k[(k[f>>2]|0)+49684>>2]|0)|0)<<3)|0;k[k[i>>2]>>2]=d}k[j>>2]=k[k[h>>2]>>2];k[l>>2]=k[k[i>>2]>>2];k[m>>2]=0;k[n>>2]=0;me(k[f>>2]|0);i=se(k[f>>2]|0)|0;k[o>>2]=i;k[o+4>>2]=0;k[x>>2]=k[(k[g>>2]|0)+40>>2];while(1){if(!(k[o>>2]|0))break;k[q>>2]=k[(k[o>>2]|0)+((k[27620+(k[o+4>>2]<<2)>>2]|0)+3<<2)>>2];k[s>>2]=k[(k[o>>2]|0)+((k[27632+(k[o+4>>2]<<2)>>2]|0)+3<<2)>>2];k[t>>2]=k[(k[o>>2]|0)+((k[o+4>>2]|0)+3<<2)>>2];i=k[f>>2]|0;if((k[(k[g>>2]|0)+124>>2]|0)==1){h=k[(k[q>>2]|0)+(k[i+49696>>2]<<2)>>2]|0;d=k[m>>2]|0;k[m>>2]=d+1;k[(k[j>>2]|0)+(d<<2)>>2]=h;h=k[(k[s>>2]|0)+(k[(k[f>>2]|0)+49696>>2]<<2)>>2]|0;d=k[m>>2]|0;k[m>>2]=d+1;k[(k[j>>2]|0)+(d<<2)>>2]=h;h=k[(k[t>>2]|0)+(k[(k[f>>2]|0)+49696>>2]<<2)>>2]|0;d=k[m>>2]|0;k[m>>2]=d+1;k[(k[j>>2]|0)+(d<<2)>>2]=h}else{k[u>>2]=k[(k[o>>2]|0)+((k[i+49704>>2]|0)+1<<2)>>2];k[v>>2]=k[(k[o>>2]|0)+((k[(k[f>>2]|0)+49704>>2]|0)+2<<2)>>2];k[w>>2]=k[(k[o>>2]|0)+(k[(k[f>>2]|0)+49704>>2]<<2)>>2];i=k[(k[q>>2]|0)+(k[(k[f>>2]|0)+49696>>2]<<2)>>2]|0;h=k[m>>2]|0;k[m>>2]=h+1;k[(k[j>>2]|0)+(h<<2)>>2]=i;i=k[(k[s>>2]|0)+(k[(k[f>>2]|0)+49696>>2]<<2)>>2]|0;h=k[m>>2]|0;k[m>>2]=h+1;k[(k[j>>2]|0)+(h<<2)>>2]=i;i=k[(k[t>>2]|0)+(k[(k[f>>2]|0)+49696>>2]<<2)>>2]|0;h=k[m>>2]|0;k[m>>2]=h+1;k[(k[j>>2]|0)+(h<<2)>>2]=i;i=k[(k[u>>2]|0)+(k[(k[f>>2]|0)+49696>>2]<<2)>>2]|0;h=k[m>>2]|0;k[m>>2]=h+1;k[(k[j>>2]|0)+(h<<2)>>2]=i;i=k[(k[v>>2]|0)+(k[(k[f>>2]|0)+49696>>2]<<2)>>2]|0;h=k[m>>2]|0;k[m>>2]=h+1;k[(k[j>>2]|0)+(h<<2)>>2]=i;i=k[(k[w>>2]|0)+(k[(k[f>>2]|0)+49696>>2]<<2)>>2]|0;h=k[m>>2]|0;k[m>>2]=h+1;k[(k[j>>2]|0)+(h<<2)>>2]=i}k[y>>2]=0;while(1){z=k[f>>2]|0;if((k[y>>2]|0)>=(k[(k[f>>2]|0)+49684>>2]|0))break;A=+p[(k[o>>2]|0)+((k[z+49708>>2]|0)+(k[y>>2]|0)<<3)>>3];i=k[n>>2]|0;k[n>>2]=i+1;p[(k[l>>2]|0)+(i<<3)>>3]=A;k[y>>2]=(k[y>>2]|0)+1}i=se(z)|0;k[o>>2]=i;k[x>>2]=(k[x>>2]|0)+1}r=e;return}function bg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;e=r;r=r+64|0;f=e+48|0;g=e+44|0;h=e+40|0;i=e+36|0;j=e+32|0;l=e+28|0;m=e+24|0;n=e+16|0;o=e+12|0;p=e+8|0;q=e+4|0;k[f>>2]=a;k[g>>2]=b;k[h>>2]=c;k[i>>2]=d;if(!(k[(k[g>>2]|0)+112>>2]|0))mta(62063,e)|0;if(!(k[k[h>>2]>>2]|0)){d=ae(k[(k[f>>2]|0)+56+40>>2]<<1<<2)|0;k[k[h>>2]>>2]=d}if((k[(k[g>>2]|0)+60>>2]|0)==0?(k[k[i>>2]>>2]|0)==0:0){d=ae(k[(k[f>>2]|0)+56+40>>2]<<2)|0;k[k[i>>2]>>2]=d}k[j>>2]=k[k[h>>2]>>2];k[l>>2]=k[k[i>>2]>>2];k[m>>2]=0;me((k[f>>2]|0)+56|0);i=ue(k[f>>2]|0)|0;k[n>>2]=i;k[n+4>>2]=0;k[q>>2]=k[(k[g>>2]|0)+40>>2];while(1){if(!(k[n>>2]|0))break;k[o>>2]=k[(k[n>>2]|0)+(2+(k[n+4>>2]|0)<<2)>>2];k[p>>2]=k[(k[n>>2]|0)+(3-(k[n+4>>2]|0)<<2)>>2];i=k[(k[o>>2]|0)+(k[(k[f>>2]|0)+49696>>2]<<2)>>2]|0;h=k[m>>2]|0;k[m>>2]=h+1;k[(k[j>>2]|0)+(h<<2)>>2]=i;i=k[(k[p>>2]|0)+(k[(k[f>>2]|0)+49696>>2]<<2)>>2]|0;h=k[m>>2]|0;k[m>>2]=h+1;k[(k[j>>2]|0)+(h<<2)>>2]=i;if(!(k[(k[g>>2]|0)+60>>2]|0))k[(k[l>>2]|0)+((k[q>>2]|0)-(k[(k[g>>2]|0)+40>>2]|0)<<2)>>2]=k[(k[n>>2]|0)+32>>2];i=ue(k[f>>2]|0)|0;k[n>>2]=i;k[q>>2]=(k[q>>2]|0)+1}r=e;return}function cg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;e=r;r=r+80|0;f=e+72|0;g=e+68|0;h=e+64|0;i=e+60|0;j=e+56|0;l=e+52|0;m=e+48|0;n=e+40|0;o=e+32|0;p=e+24|0;q=e+20|0;s=e+16|0;t=e+12|0;u=e+8|0;v=e+4|0;k[f>>2]=a;k[g>>2]=b;k[h>>2]=c;k[i>>2]=d;if(!(k[(k[g>>2]|0)+112>>2]|0))mta(62082,e)|0;if(!(k[k[h>>2]>>2]|0)){d=ae(k[(k[f>>2]|0)+49672>>2]<<1<<2)|0;k[k[h>>2]>>2]=d}if((k[(k[g>>2]|0)+60>>2]|0)==0?(k[k[i>>2]>>2]|0)==0:0){d=ae(k[(k[f>>2]|0)+49672>>2]<<2)|0;k[k[i>>2]>>2]=d}k[j>>2]=k[k[h>>2]>>2];k[l>>2]=k[k[i>>2]>>2];k[m>>2]=0;me(k[f>>2]|0);i=se(k[f>>2]|0)|0;k[n>>2]=i;k[t>>2]=k[(k[g>>2]|0)+40>>2];while(1){if(!(k[n>>2]|0))break;k[n+4>>2]=0;while(1){if((k[n+4>>2]|0)>=3)break;k[u>>2]=k[(k[n>>2]|0)+(k[n+4>>2]<<2)>>2];k[o+4>>2]=k[u>>2]&3;k[o>>2]=k[u>>2]^k[o+4>>2];if(!((k[n>>2]|0)>>>0>=(k[o>>2]|0)>>>0?(k[o>>2]|0)!=(k[(k[f>>2]|0)+49768>>2]|0):0)){k[q>>2]=k[(k[n>>2]|0)+((k[27620+(k[n+4>>2]<<2)>>2]|0)+3<<2)>>2];k[s>>2]=k[(k[n>>2]|0)+((k[27632+(k[n+4>>2]<<2)>>2]|0)+3<<2)>>2];i=k[(k[q>>2]|0)+(k[(k[f>>2]|0)+49696>>2]<<2)>>2]|0;h=k[m>>2]|0;k[m>>2]=h+1;k[(k[j>>2]|0)+(h<<2)>>2]=i;i=k[(k[s>>2]|0)+(k[(k[f>>2]|0)+49696>>2]<<2)>>2]|0;h=k[m>>2]|0;k[m>>2]=h+1;k[(k[j>>2]|0)+(h<<2)>>2]=i;do if(!(k[(k[g>>2]|0)+60>>2]|0)){if(!(k[(k[g>>2]|0)+120>>2]|0)){k[(k[l>>2]|0)+((k[t>>2]|0)-(k[(k[g>>2]|0)+40>>2]|0)<<2)>>2]=(k[o>>2]|0)==(k[(k[f>>2]|0)+49768>>2]|0)&1;break}k[v>>2]=k[(k[n>>2]|0)+(6+(k[n+4>>2]|0)<<2)>>2];k[p+4>>2]=k[v>>2]&1;k[p>>2]=k[v>>2]&-4;if((k[p>>2]|0)==(k[(k[f>>2]|0)+49776>>2]|0)){k[(k[l>>2]|0)+((k[t>>2]|0)-(k[(k[g>>2]|0)+40>>2]|0)<<2)>>2]=0;break}else{k[(k[l>>2]|0)+((k[t>>2]|0)-(k[(k[g>>2]|0)+40>>2]|0)<<2)>>2]=k[(k[p>>2]|0)+32>>2];break}}while(0);k[t>>2]=(k[t>>2]|0)+1}i=n+4|0;k[i>>2]=(k[i>>2]|0)+1}i=se(k[f>>2]|0)|0;k[n>>2]=i}r=e;return}function dg(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0;i=r;r=r+160|0;j=i+40|0;l=i+148|0;m=i+144|0;n=i+140|0;o=i+136|0;q=i+132|0;s=i+128|0;t=i+124|0;u=i+120|0;v=i+116|0;w=i+112|0;x=i+108|0;y=i+104|0;z=i+100|0;A=i+96|0;B=i+88|0;C=i+80|0;D=i+76|0;E=i+72|0;F=i+68|0;G=i+16|0;H=i+8|0;I=i;J=i+64|0;K=i+60|0;L=i+56|0;M=i+52|0;N=i+48|0;O=i+44|0;k[l>>2]=a;k[m>>2]=b;k[n>>2]=c;k[o>>2]=d;k[q>>2]=e;k[s>>2]=f;k[t>>2]=g;k[u>>2]=h;if(!(k[(k[m>>2]|0)+112>>2]|0))mta(62098,i+32|0)|0;if(!(k[k[n>>2]>>2]|0)){h=ae(k[(k[l>>2]|0)+40>>2]<<1<<3)|0;k[k[n>>2]>>2]=h}if(!(k[k[o>>2]>>2]|0)){h=ae((ma(k[(k[l>>2]|0)+40>>2]|0,k[(k[l>>2]|0)+49680>>2]|0)|0)<<3)|0;k[k[o>>2]>>2]=h}k[k[q>>2]>>2]=0;k[v>>2]=k[k[n>>2]>>2];k[w>>2]=k[k[o>>2]>>2];k[z>>2]=0;k[A>>2]=0;me(k[l>>2]|0);o=se(k[l>>2]|0)|0;k[B>>2]=o;k[B+4>>2]=0;k[J>>2]=k[(k[m>>2]|0)+40>>2];while(1){if(!(k[B>>2]|0))break;k[D>>2]=k[(k[B>>2]|0)+((k[27620+(k[B+4>>2]<<2)>>2]|0)+3<<2)>>2];k[E>>2]=k[(k[B>>2]|0)+((k[27632+(k[B+4>>2]<<2)>>2]|0)+3<<2)>>2];k[F>>2]=k[(k[B>>2]|0)+((k[B+4>>2]|0)+3<<2)>>2];Oe(k[l>>2]|0,k[m>>2]|0,k[D>>2]|0,k[E>>2]|0,k[F>>2]|0,G,H,I,0);P=+p[G>>3];o=k[z>>2]|0;k[z>>2]=o+1;p[(k[v>>2]|0)+(o<<3)>>3]=P;P=+p[G+8>>3];o=k[z>>2]|0;k[z>>2]=o+1;p[(k[v>>2]|0)+(o<<3)>>3]=P;k[N>>2]=2;while(1){if((k[N>>2]|0)>=(2+(k[(k[l>>2]|0)+49680>>2]|0)|0))break;P=+p[(k[D>>2]|0)+(k[N>>2]<<3)>>3]+ +p[H>>3]*(+p[(k[E>>2]|0)+(k[N>>2]<<3)>>3]-+p[(k[D>>2]|0)+(k[N>>2]<<3)>>3])+ +p[I>>3]*(+p[(k[F>>2]|0)+(k[N>>2]<<3)>>3]-+p[(k[D>>2]|0)+(k[N>>2]<<3)>>3]);o=k[A>>2]|0;k[A>>2]=o+1;p[(k[w>>2]|0)+(o<<3)>>3]=P;k[N>>2]=(k[N>>2]|0)+1}k[(k[B>>2]|0)+24>>2]=k[J>>2];o=se(k[l>>2]|0)|0;k[B>>2]=o;k[J>>2]=(k[J>>2]|0)+1}if(!(k[(k[m>>2]|0)+112>>2]|0))mta(62125,j)|0;if(!(k[k[s>>2]>>2]|0)){j=ae(k[(k[l>>2]|0)+49672>>2]<<1<<2)|0;k[k[s>>2]>>2]=j}k[k[t>>2]>>2]=0;if(!(k[k[u>>2]>>2]|0)){t=ae(k[(k[l>>2]|0)+49672>>2]<<1<<3)|0;k[k[u>>2]>>2]=t}k[x>>2]=k[k[s>>2]>>2];k[y>>2]=k[k[u>>2]>>2];k[z>>2]=0;me(k[l>>2]|0);u=se(k[l>>2]|0)|0;k[B>>2]=u;k[K>>2]=k[(k[m>>2]|0)+40>>2];while(1){if(!(k[B>>2]|0))break;k[B+4>>2]=0;while(1){if((k[B+4>>2]|0)>=3)break;k[O>>2]=k[(k[B>>2]|0)+(k[B+4>>2]<<2)>>2];k[C+4>>2]=k[O>>2]&3;k[C>>2]=k[O>>2]^k[C+4>>2];if(!((k[B>>2]|0)>>>0>=(k[C>>2]|0)>>>0?(k[C>>2]|0)!=(k[(k[l>>2]|0)+49768>>2]|0):0)){k[L>>2]=k[(k[B>>2]|0)+24>>2];if((k[C>>2]|0)==(k[(k[l>>2]|0)+49768>>2]|0)){k[D>>2]=k[(k[B>>2]|0)+((k[27620+(k[B+4>>2]<<2)>>2]|0)+3<<2)>>2];k[E>>2]=k[(k[B>>2]|0)+((k[27632+(k[B+4>>2]<<2)>>2]|0)+3<<2)>>2];k[(k[x>>2]|0)+(k[z>>2]<<2)>>2]=k[L>>2];P=+p[(k[E>>2]|0)+8>>3]-+p[(k[D>>2]|0)+8>>3];m=k[z>>2]|0;k[z>>2]=m+1;p[(k[y>>2]|0)+(m<<3)>>3]=P;k[(k[x>>2]|0)+(k[z>>2]<<2)>>2]=-1;P=+p[k[D>>2]>>3]-+p[k[E>>2]>>3];m=k[z>>2]|0;k[z>>2]=m+1;p[(k[y>>2]|0)+(m<<3)>>3]=P}else{k[M>>2]=k[(k[C>>2]|0)+24>>2];k[(k[x>>2]|0)+(k[z>>2]<<2)>>2]=k[L>>2];m=k[z>>2]|0;k[z>>2]=m+1;p[(k[y>>2]|0)+(m<<3)>>3]=0.0;k[(k[x>>2]|0)+(k[z>>2]<<2)>>2]=k[M>>2];m=k[z>>2]|0;k[z>>2]=m+1;p[(k[y>>2]|0)+(m<<3)>>3]=0.0}k[K>>2]=(k[K>>2]|0)+1}m=B+4|0;k[m>>2]=(k[m>>2]|0)+1}m=se(k[l>>2]|0)|0;k[B>>2]=m}r=i;return}function eg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;d=r;r=r+64|0;e=d+56|0;f=d+52|0;g=d+48|0;h=d+44|0;i=d+40|0;j=d+32|0;l=d+24|0;m=d+20|0;n=d+16|0;o=d+12|0;p=d+8|0;q=d+4|0;k[e>>2]=a;k[f>>2]=b;k[g>>2]=c;if(!(k[(k[f>>2]|0)+112>>2]|0))mta(62149,d)|0;if(!(k[k[g>>2]>>2]|0)){c=ae((k[(k[e>>2]|0)+40>>2]|0)*3<<2)|0;k[k[g>>2]>>2]=c}k[h>>2]=k[k[g>>2]>>2];k[i>>2]=0;me(k[e>>2]|0);g=se(k[e>>2]|0)|0;k[j>>2]=g;k[j+4>>2]=0;k[m>>2]=k[(k[f>>2]|0)+40>>2];while(1){if(!(k[j>>2]|0))break;k[(k[j>>2]|0)+24>>2]=k[m>>2];g=se(k[e>>2]|0)|0;k[j>>2]=g;k[m>>2]=(k[m>>2]|0)+1}k[(k[(k[e>>2]|0)+49768>>2]|0)+24>>2]=-1;me(k[e>>2]|0);g=se(k[e>>2]|0)|0;k[j>>2]=g;k[m>>2]=k[(k[f>>2]|0)+40>>2];while(1){if(!(k[j>>2]|0))break;k[j+4>>2]=1;k[q>>2]=k[(k[j>>2]|0)+(k[j+4>>2]<<2)>>2];k[l+4>>2]=k[q>>2]&3;k[l>>2]=k[q>>2]^k[l+4>>2];k[n>>2]=k[(k[l>>2]|0)+24>>2];k[j+4>>2]=2;k[q>>2]=k[(k[j>>2]|0)+(k[j+4>>2]<<2)>>2];k[l+4>>2]=k[q>>2]&3;k[l>>2]=k[q>>2]^k[l+4>>2];k[o>>2]=k[(k[l>>2]|0)+24>>2];k[j+4>>2]=0;k[q>>2]=k[(k[j>>2]|0)+(k[j+4>>2]<<2)>>2];k[l+4>>2]=k[q>>2]&3;k[l>>2]=k[q>>2]^k[l+4>>2];k[p>>2]=k[(k[l>>2]|0)+24>>2];f=k[n>>2]|0;g=k[i>>2]|0;k[i>>2]=g+1;k[(k[h>>2]|0)+(g<<2)>>2]=f;f=k[o>>2]|0;g=k[i>>2]|0;k[i>>2]=g+1;k[(k[h>>2]|0)+(g<<2)>>2]=f;f=k[p>>2]|0;g=k[i>>2]|0;k[i>>2]=g+1;k[(k[h>>2]|0)+(g<<2)>>2]=f;f=se(k[e>>2]|0)|0;k[j>>2]=f;k[m>>2]=(k[m>>2]|0)+1}r=d;return}function fg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0.0,$=0,ba=0.0,da=0.0;c=r;r=r+848|0;d=c+640|0;e=c+616|0;f=c+608|0;g=c+592|0;h=c+584|0;i=c+544|0;j=c+496|0;l=c+456|0;m=c+448|0;n=c+432|0;o=c+416|0;q=c+400|0;s=c+836|0;t=c+832|0;u=c+824|0;v=c+808|0;w=c+328|0;x=c+200|0;y=c+176|0;z=c+152|0;A=c+128|0;B=c+120|0;C=c+112|0;D=c+104|0;E=c+96|0;F=c+88|0;G=c+80|0;H=c+72|0;I=c+64|0;J=c+56|0;K=c+48|0;L=c+40|0;M=c+32|0;N=c+24|0;O=c+16|0;P=c+8|0;Q=c;R=c+736|0;S=c+672|0;T=c+668|0;U=c+664|0;V=c+660|0;W=c+656|0;X=c+652|0;Y=c+648|0;Z=c+644|0;k[s>>2]=a;k[t>>2]=b;mta(62169,c+392|0)|0;p[P>>3]=.17453292519943295;p[Q>>3]=57.29577951308232;k[W>>2]=0;while(1){if((k[W>>2]|0)>=8)break;_=+ca(+(+p[P>>3]*+((k[W>>2]|0)+1|0)));p[w+(k[W>>2]<<3)>>3]=_;p[w+(k[W>>2]<<3)>>3]=+p[w+(k[W>>2]<<3)>>3]*+p[w+(k[W>>2]<<3)>>3];k[W>>2]=(k[W>>2]|0)+1}k[W>>2]=0;while(1){if((k[W>>2]|0)>=18)break;k[R+(k[W>>2]<<2)>>2]=0;k[W>>2]=(k[W>>2]|0)+1}p[x>>3]=1.5;p[x+8>>3]=2.0;p[x+16>>3]=2.5;p[x+24>>3]=3.0;p[x+32>>3]=4.0;p[x+40>>3]=6.0;p[x+48>>3]=10.0;p[x+56>>3]=15.0;p[x+64>>3]=25.0;p[x+72>>3]=50.0;p[x+80>>3]=100.0;p[x+88>>3]=300.0;p[x+96>>3]=1.0e3;p[x+104>>3]=1.0e4;p[x+112>>3]=1.0e5;p[x+120>>3]=0.0;k[W>>2]=0;while(1){if((k[W>>2]|0)>=16)break;k[S+(k[W>>2]<<2)>>2]=0;k[W>>2]=(k[W>>2]|0)+1}p[M>>3]=0.0;p[K>>3]=+p[(k[s>>2]|0)+49616>>3]-+p[(k[s>>2]|0)+49608>>3]+ +p[(k[s>>2]|0)+49632>>3]-+p[(k[s>>2]|0)+49624>>3];p[K>>3]=+p[K>>3]*+p[K>>3];p[E>>3]=+p[K>>3];p[F>>3]=0.0;p[H>>3]=+p[K>>3];p[I>>3]=0.0;p[M>>3]=0.0;p[N>>3]=0.0;p[O>>3]=2.0;k[V>>2]=1;me(k[s>>2]|0);P=se(k[s>>2]|0)|0;k[u>>2]=P;k[u+4>>2]=0;while(1){if(!(k[u>>2]|0))break;k[v>>2]=k[(k[u>>2]|0)+((k[27620+(k[u+4>>2]<<2)>>2]|0)+3<<2)>>2];k[v+4>>2]=k[(k[u>>2]|0)+((k[27632+(k[u+4>>2]<<2)>>2]|0)+3<<2)>>2];k[v+8>>2]=k[(k[u>>2]|0)+((k[u+4>>2]|0)+3<<2)>>2];p[G>>3]=0.0;k[W>>2]=0;while(1){if((k[W>>2]|0)>=3)break;k[Y>>2]=k[27620+(k[W>>2]<<2)>>2];k[Z>>2]=k[27632+(k[W>>2]<<2)>>2];p[y+(k[W>>2]<<3)>>3]=+p[k[v+(k[Y>>2]<<2)>>2]>>3]-+p[k[v+(k[Z>>2]<<2)>>2]>>3];p[z+(k[W>>2]<<3)>>3]=+p[(k[v+(k[Y>>2]<<2)>>2]|0)+8>>3]-+p[(k[v+(k[Z>>2]<<2)>>2]|0)+8>>3];p[A+(k[W>>2]<<3)>>3]=+p[y+(k[W>>2]<<3)>>3]*+p[y+(k[W>>2]<<3)>>3]+ +p[z+(k[W>>2]<<3)>>3]*+p[z+(k[W>>2]<<3)>>3];if(+p[A+(k[W>>2]<<3)>>3]>+p[G>>3])p[G>>3]=+p[A+(k[W>>2]<<3)>>3];if(+p[A+(k[W>>2]<<3)>>3]>+p[F>>3])p[F>>3]=+p[A+(k[W>>2]<<3)>>3];if(+p[A+(k[W>>2]<<3)>>3]<+p[E>>3])p[E>>3]=+p[A+(k[W>>2]<<3)>>3];k[W>>2]=(k[W>>2]|0)+1}_=+Ie(k[s>>2]|0,k[t>>2]|0,k[v>>2]|0,k[v+4>>2]|0,k[v+8>>2]|0);p[D>>3]=_;if(+p[D>>3]<+p[H>>3])p[H>>3]=+p[D>>3];if(+p[D>>3]>+p[I>>3])p[I>>3]=+p[D>>3];p[J>>3]=+p[D>>3]*+p[D>>3]/+p[G>>3];if(+p[J>>3]<+p[K>>3])p[K>>3]=+p[J>>3];p[L>>3]=+p[G>>3]/+p[J>>3];if(+p[L>>3]>+p[M>>3])p[M>>3]=+p[L>>3];k[T>>2]=0;while(1){$=k[T>>2]|0;if(!(+p[L>>3]>+p[x+(k[T>>2]<<3)>>3]*+p[x+(k[T>>2]<<3)>>3]?(k[T>>2]|0)<15:0))break;k[T>>2]=$+1}P=S+($<<2)|0;k[P>>2]=(k[P>>2]|0)+1;k[W>>2]=0;while(1){if((k[W>>2]|0)>=3)break;k[Y>>2]=k[27620+(k[W>>2]<<2)>>2];k[Z>>2]=k[27632+(k[W>>2]<<2)>>2];p[B>>3]=+p[y+(k[Y>>2]<<3)>>3]*+p[y+(k[Z>>2]<<3)>>3]+ +p[z+(k[Y>>2]<<3)>>3]*+p[z+(k[Z>>2]<<3)>>3];p[C>>3]=+p[B>>3]*+p[B>>3]/(+p[A+(k[Y>>2]<<3)>>3]*+p[A+(k[Z>>2]<<3)>>3]);k[U>>2]=8;k[X>>2]=7;while(1){if((k[X>>2]|0)<0)break;if(+p[C>>3]>+p[w+(k[X>>2]<<3)>>3])k[U>>2]=k[X>>2];k[X>>2]=(k[X>>2]|0)+-1}P=k[U>>2]|0;do if(+p[B>>3]<=0.0){b=R+(P<<2)|0;k[b>>2]=(k[b>>2]|0)+1;if(+p[C>>3]>+p[N>>3])p[N>>3]=+p[C>>3];if((k[V>>2]|0)!=0?+p[C>>3]<+p[O>>3]:0)p[O>>3]=+p[C>>3]}else{b=R+(17-P<<2)|0;k[b>>2]=(k[b>>2]|0)+1;if((k[V>>2]|0)==0?!(+p[C>>3]>+p[O>>3]):0)break;p[O>>3]=+p[C>>3];k[V>>2]=0}while(0);k[W>>2]=(k[W>>2]|0)+1}P=se(k[s>>2]|0)|0;k[u>>2]=P}_=+aa(+(+p[E>>3]));p[E>>3]=_;_=+aa(+(+p[F>>3]));p[F>>3]=_;_=+aa(+(+p[K>>3]));p[K>>3]=_;_=+aa(+(+p[M>>3]));p[M>>3]=_;p[H>>3]=+p[H>>3]*.5;p[I>>3]=+p[I>>3]*.5;if(+p[N>>3]>=1.0)p[N>>3]=0.0;else{_=+p[Q>>3]*+fa(+(+aa(+(+p[N>>3]))));p[N>>3]=_}do if(!(+p[O>>3]>=1.0)){_=+p[Q>>3]*+fa(+(+aa(+(+p[O>>3]))));if(k[V>>2]|0){p[O>>3]=_;break}else{p[O>>3]=180.0-_;break}}else p[O>>3]=180.0;while(0);_=+p[I>>3];p[q>>3]=+p[H>>3];p[q+8>>3]=_;mta(62196,q)|0;_=+p[F>>3];p[o>>3]=+p[E>>3];p[o+8>>3]=_;mta(62247,o)|0;_=+p[M>>3];p[n>>3]=+p[K>>3];p[n+8>>3]=_;mta(62298,n)|0;mta(62361,m)|0;m=k[S>>2]|0;_=+p[x+56>>3];ba=+p[x+64>>3];n=k[S+32>>2]|0;p[l>>3]=+p[x>>3];k[l+8>>2]=m;p[l+16>>3]=_;p[l+24>>3]=ba;k[l+32>>2]=n;mta(62397,l)|0;k[W>>2]=1;while(1){if((k[W>>2]|0)>=7)break;ba=+p[x+(k[W>>2]<<3)>>3];l=k[S+(k[W>>2]<<2)>>2]|0;_=+p[x+((k[W>>2]|0)+7<<3)>>3];da=+p[x+((k[W>>2]|0)+8<<3)>>3];n=k[S+((k[W>>2]|0)+8<<2)>>2]|0;p[j>>3]=+p[x+((k[W>>2]|0)-1<<3)>>3];p[j+8>>3]=ba;k[j+16>>2]=l;p[j+24>>3]=_;p[j+32>>3]=da;k[j+40>>2]=n;mta(62457,j)|0;k[W>>2]=(k[W>>2]|0)+1}da=+p[x+56>>3];j=k[S+28>>2]|0;_=+p[x+112>>3];n=k[S+60>>2]|0;p[i>>3]=+p[x+48>>3];p[i+8>>3]=da;k[i+16>>2]=j;p[i+24>>3]=_;k[i+32>>2]=n;mta(62516,i)|0;mta(62575,h)|0;_=+p[O>>3];p[g>>3]=+p[N>>3];p[g+8>>3]=_;mta(62639,g)|0;mta(62693,f)|0;k[W>>2]=0;while(1){if((k[W>>2]|0)>=9)break;f=((k[W>>2]|0)*10|0)+10|0;g=k[R+(k[W>>2]<<2)>>2]|0;N=((k[W>>2]|0)*10|0)+90|0;O=((k[W>>2]|0)*10|0)+100|0;h=k[R+((k[W>>2]|0)+9<<2)>>2]|0;k[e>>2]=(k[W>>2]|0)*10;k[e+4>>2]=f;k[e+8>>2]=g;k[e+12>>2]=N;k[e+16>>2]=O;k[e+20>>2]=h;mta(62713,e)|0;k[W>>2]=(k[W>>2]|0)+1}mta(149177,d)|0;r=c;return}function gg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;c=r;r=r+256|0;d=c+232|0;e=c+224|0;f=c+216|0;g=c+208|0;h=c+200|0;i=c+192|0;j=c+184|0;l=c+176|0;m=c+168|0;n=c+160|0;o=c+152|0;p=c+144|0;q=c+136|0;s=c+128|0;t=c+120|0;u=c+112|0;v=c+104|0;w=c+96|0;x=c+88|0;y=c+80|0;z=c+72|0;A=c+64|0;B=c+56|0;C=c+48|0;D=c+40|0;E=c+32|0;F=c+24|0;G=c+16|0;H=c+8|0;I=c+240|0;J=c+236|0;k[I>>2]=a;k[J>>2]=b;mta(62774,c)|0;k[H>>2]=k[(k[I>>2]|0)+49648>>2];mta(62789,H)|0;if(k[(k[J>>2]|0)+4>>2]|0){k[G>>2]=k[(k[I>>2]|0)+49652>>2];mta(62811,G)|0}if((k[k[J>>2]>>2]|0)!=0?(k[F>>2]=k[(k[I>>2]|0)+49656>>2],mta(62834,F)|0,(k[(k[J>>2]|0)+4>>2]|0)==0):0){k[E>>2]=k[(k[I>>2]|0)+49660>>2];mta(62856,E)|0}k[D>>2]=(k[(k[I>>2]|0)+112+40>>2]|0)-(k[(k[I>>2]|0)+49668>>2]|0);mta(62875,D)|0;k[C>>2]=k[(k[I>>2]|0)+40>>2];mta(62898,C)|0;k[B>>2]=k[(k[I>>2]|0)+49672>>2];mta(62921,B)|0;k[A>>2]=k[(k[I>>2]|0)+49688>>2];mta(62940,A)|0;if(!((k[k[J>>2]>>2]|0)==0?(k[(k[J>>2]|0)+4>>2]|0)==0:0)){k[z>>2]=(k[(k[I>>2]|0)+56+40>>2]|0)-(k[(k[I>>2]|0)+49688>>2]|0);mta(62977,z)|0;k[y>>2]=k[(k[I>>2]|0)+56+40>>2];mta(63014,y)|0}mta(149177,x)|0;if(!(k[(k[J>>2]|0)+116>>2]|0)){r=c;return}fg(k[I>>2]|0,k[J>>2]|0);mta(63059,w)|0;k[v>>2]=k[(k[I>>2]|0)+112+44>>2];mta(63091,v)|0;k[u>>2]=k[(k[I>>2]|0)+44>>2];mta(63126,u)|0;if((k[(k[I>>2]|0)+56+44>>2]|0)>0){k[t>>2]=k[(k[I>>2]|0)+56+44>>2];mta(63162,t)|0}if((k[(k[I>>2]|0)+168+44>>2]|0)>0){k[s>>2]=k[(k[I>>2]|0)+168+44>>2];mta(63200,s)|0}if((k[(k[I>>2]|0)+224+44>>2]|0)>0){k[q>>2]=k[(k[I>>2]|0)+224+44>>2];mta(63231,q)|0}if((k[(k[I>>2]|0)+280+44>>2]|0)>0){k[p>>2]=k[(k[I>>2]|0)+280+44>>2];mta(63280,p)|0}if((k[(k[I>>2]|0)+336+44>>2]|0)>0){k[o>>2]=k[(k[I>>2]|0)+336+44>>2];mta(63320,o)|0}if((k[(k[I>>2]|0)+392+44>>2]|0)>0){k[n>>2]=k[(k[I>>2]|0)+392+44>>2];mta(63369,n)|0}n=ma(k[(k[I>>2]|0)+112+44>>2]|0,k[(k[I>>2]|0)+112+28>>2]|0)|0;o=n+(ma(k[(k[I>>2]|0)+44>>2]|0,k[(k[I>>2]|0)+28>>2]|0)|0)|0;n=o+(ma(k[(k[I>>2]|0)+56+44>>2]|0,k[(k[I>>2]|0)+56+28>>2]|0)|0)|0;o=n+(ma(k[(k[I>>2]|0)+168+44>>2]|0,k[(k[I>>2]|0)+168+28>>2]|0)|0)|0;n=o+(ma(k[(k[I>>2]|0)+224+44>>2]|0,k[(k[I>>2]|0)+224+28>>2]|0)|0)|0;o=n+(ma(k[(k[I>>2]|0)+280+44>>2]|0,k[(k[I>>2]|0)+280+28>>2]|0)|0)|0;n=o+(ma(k[(k[I>>2]|0)+336+44>>2]|0,k[(k[I>>2]|0)+336+28>>2]|0)|0)|0;o=n+(ma(k[(k[I>>2]|0)+392+44>>2]|0,k[(k[I>>2]|0)+392+28>>2]|0)|0)|0;k[m>>2]=o;mta(63412,m)|0;mta(63457,l)|0;l=k[I>>2]|0;if(k[(k[J>>2]|0)+32>>2]|0){k[i>>2]=k[l+49740>>2];mta(63516,i)|0}else{k[j>>2]=k[l+49732>>2];mta(63483,j)|0}k[h>>2]=k[(k[I>>2]|0)+49736>>2];mta(63555,h)|0;if((k[(k[I>>2]|0)+49744>>2]|0)>0){k[g>>2]=k[(k[I>>2]|0)+49744>>2];mta(63594,g)|0}if((k[(k[I>>2]|0)+49752>>2]|0)>0){k[f>>2]=k[(k[I>>2]|0)+49752>>2];mta(63637,f)|0}if((k[(k[I>>2]|0)+49748>>2]|0)>0){k[e>>2]=k[(k[I>>2]|0)+49748>>2];mta(63679,e)|0}mta(149177,d)|0;r=c;return}function hg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0;e=r;r=r+50016|0;f=e+49984|0;g=e+49976|0;h=e+49968|0;i=e+49960|0;j=e+50008|0;l=e+50004|0;m=e+5e4|0;n=e+49996|0;o=e+168|0;p=e;q=e+49992|0;s=e+49988|0;k[j>>2]=a;k[l>>2]=b;k[m>>2]=c;k[n>>2]=d;Pe(o);de(1,j,p);k[o+49692>>2]=k[p+132>>2];Zf(o,p,k[k[l>>2]>>2]|0,k[(k[l>>2]|0)+4>>2]|0,k[(k[l>>2]|0)+8>>2]|0,k[(k[l>>2]|0)+12>>2]|0,k[(k[l>>2]|0)+16>>2]|0);if(k[p+4>>2]|0){j=Ef(o,p,k[(k[l>>2]|0)+20>>2]|0,k[(k[l>>2]|0)+24>>2]|0,k[(k[l>>2]|0)+28>>2]|0,k[(k[l>>2]|0)+36>>2]|0,k[(k[l>>2]|0)+40>>2]|0,k[(k[l>>2]|0)+44>>2]|0,k[(k[l>>2]|0)+48>>2]|0,k[(k[l>>2]|0)+52>>2]|0,k[(k[l>>2]|0)+56>>2]|0)|0;k[o+49688>>2]=j}else{j=Df(o,p)|0;k[o+49688>>2]=j}k[o+49756>>2]=0;k[o+49760>>2]=0;k[o+49764>>2]=0;if((k[p+120>>2]|0)!=0?(k[o+49716>>2]=1,(k[p+4>>2]|0)==0):0)Nf(o,p,k[(k[l>>2]|0)+48>>2]|0,k[(k[l>>2]|0)+52>>2]|0,k[(k[l>>2]|0)+56>>2]|0);if((k[p>>2]|0)!=0?(k[o+40>>2]|0)>0:0){k[q>>2]=k[(k[l>>2]|0)+60>>2];k[o+49660>>2]=k[(k[l>>2]|0)+64>>2];k[s>>2]=k[(k[l>>2]|0)+68>>2];k[o+49664>>2]=k[(k[l>>2]|0)+72>>2];if(!(k[p+4>>2]|0))Rf(o,p,k[q>>2]|0,k[o+49660>>2]|0,k[s>>2]|0,k[o+49664>>2]|0)}else{k[o+49660>>2]=0;k[o+49664>>2]=0}if((k[p+8>>2]|0)!=0?(k[o+40>>2]|0)>0:0)Xf(o,p);k[o+49672>>2]=(((k[o+40>>2]|0)*3|0)+(k[o+49688>>2]|0)|0)/2|0;if((k[p+124>>2]|0)>1)Yf(o,p);if(!(k[p+112>>2]|0))mta(149177,i)|0;i=k[o+112+40>>2]|0;if(k[p+36>>2]|0)k[(k[m>>2]|0)+12>>2]=i-(k[o+49668>>2]|0);else k[(k[m>>2]|0)+12>>2]=i;k[(k[m>>2]|0)+16>>2]=k[o+49680>>2];k[(k[m>>2]|0)+36>>2]=k[o+40>>2];i=(ma((k[p+124>>2]|0)+1|0,(k[p+124>>2]|0)+2|0)|0)/2|0;k[(k[m>>2]|0)+40>>2]=i;k[(k[m>>2]|0)+44>>2]=k[o+49684>>2];k[(k[m>>2]|0)+88>>2]=k[o+49672>>2];if(k[p+120>>2]|0)k[(k[m>>2]|0)+56>>2]=k[o+56+40>>2];else k[(k[m>>2]|0)+56>>2]=k[o+49688>>2];if(k[n>>2]|0){k[(k[n>>2]|0)+12>>2]=k[o+40>>2];k[(k[n>>2]|0)+16>>2]=k[o+49680>>2];k[(k[n>>2]|0)+88>>2]=k[o+49672>>2]}do if(k[p+68>>2]|0)t=30;else{if((k[p+76>>2]|0)!=0?(k[o+49724>>2]|0)!=0:0){t=30;break}_f(o,p,k[m>>2]|0,(k[m>>2]|0)+4|0,(k[m>>2]|0)+8|0)}while(0);if((t|0)==30){if(!(k[p+112>>2]|0))mta(63732,h)|0;$f(o,p)}if(k[p+72>>2]|0){if(!(k[p+112>>2]|0))mta(63755,g)|0}else ag(o,p,(k[m>>2]|0)+20|0,(k[m>>2]|0)+24|0);if(!((k[p>>2]|0)==0?(k[p+28>>2]|0)==0:0))t=40;do if((t|0)==40){if((k[p+64>>2]|0)==0?(k[p+76>>2]|0)==0:0){bg(o,p,(k[m>>2]|0)+48|0,(k[m>>2]|0)+52|0);k[(k[m>>2]|0)+64>>2]=k[o+49660>>2];k[(k[m>>2]|0)+72>>2]=k[o+49664>>2];if(k[p>>2]|0){k[(k[m>>2]|0)+60>>2]=k[(k[l>>2]|0)+60>>2];k[(k[m>>2]|0)+68>>2]=k[(k[l>>2]|0)+68>>2];break}else{k[(k[m>>2]|0)+60>>2]=0;k[(k[m>>2]|0)+68>>2]=0;break}}if(!(k[p+112>>2]|0))mta(63779,f)|0}while(0);if(k[p+44>>2]|0)cg(o,p,(k[m>>2]|0)+76|0,(k[m>>2]|0)+80|0);if(k[p+48>>2]|0)dg(o,p,k[n>>2]|0,(k[n>>2]|0)+4|0,(k[n>>2]|0)+8|0,(k[n>>2]|0)+76|0,(k[n>>2]|0)+80|0,(k[n>>2]|0)+84|0);if(k[p+52>>2]|0)eg(o,p,(k[m>>2]|0)+32|0);if(!(k[p+112>>2]|0))gg(o,p);if(!(k[p+108>>2]|0)){Ae(o,p);r=e;return}Re(o,p);Se(o,p);Ae(o,p);r=e;return}function ig(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;if(!((a|0)!=0&(c|0)!=0))return;f=ma(e,d)|0;e=Rqa(f>>>0>536870911?-1:f<<3)|0;if((f|0)>0){g=0;do{p[e+(g<<3)>>3]=+(k[c+(g<<2)>>2]|0);g=g+1|0}while((g|0)!=(f|0))}k[a>>2]=e;k[b>>2]=d;return}function jg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;if(!((a|0)!=0&(d|0)!=0))return;g=ma(f,e)|0;h=Rqa(g>>>0>536870911?-1:g<<3)|0;if((g|0)>0){i=0;do{p[h+(i<<3)>>3]=+(k[d+(i<<2)>>2]|0);i=i+1|0}while((i|0)!=(g|0))}k[a>>2]=h;k[b>>2]=e;k[c>>2]=f;return}function kg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;if(!((a|0)!=0&(d|0)!=0))return;g=ma(f,e)|0;h=Rqa(g>>>0>536870911?-1:g<<3)|0;if((g|0)>0)TEa(h|0,d|0,g<<3|0)|0;k[a>>2]=h;if(b)k[b>>2]=e;if(!c)return;k[c>>2]=f;return}function lg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if(!((a|0)!=0&(c|0)!=0))return;e=Rqa(d>>>0>536870911?-1:d<<3)|0;if((d|0)>0)TEa(e|0,c|0,d<<3|0)|0;k[a>>2]=e;k[b>>2]=d;return}function mg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;if(!((a|0)!=0&(c|0)!=0))return;e=Rqa(d>>>0>536870911?-1:d<<3)|0;if((d|0)>0){f=0;do{p[e+(f<<3)>>3]=+(k[c+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(d|0))}k[a>>2]=e;k[b>>2]=d;return}function ng(a,b){a=a|0;b=+b;p[a>>3]=b;return}function og(a,b){a=a|0;b=b|0;return}function pg(a,b){a=a|0;b=b|0;var c=0,d=0;c=Rqa((Lta(b)|0)+1|0)|0;d=(Lta(b)|0)+1|0;if(!b)yb(142353,63802,137,142345);if(!d){k[a>>2]=c;return}TEa(c|0,b|0,d|0)|0;k[a>>2]=c;return}function qg(a,b){a=a|0;b=b|0;var c=0,d=0;c=Rqa((Lta(b)|0)+1|0)|0;d=(Lta(b)|0)+1|0;if(!b)yb(142353,63802,137,142345);if(!d){k[a>>2]=c;return}TEa(c|0,b|0,d|0)|0;k[a>>2]=c;return}function rg(a,b){a=a|0;b=b|0;k[a>>2]=b;return}function sg(a,b){a=a|0;b=+b;p[a>>3]=b;return}function tg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=Rqa(d>>>0>536870911?-1:d<<3)|0;if(!c)yb(142353,63802,137,142345);if(!d){k[a>>2]=e;k[b>>2]=d;return}TEa(e|0,c|0,d<<3|0)|0;k[a>>2]=e;k[b>>2]=d;return}function ug(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;if(!((a|0)!=0&(d|0)!=0))return;g=ma(f,e)|0;h=Rqa(g>>>0>536870911?-1:g<<3)|0;if((g|0)>0)TEa(h|0,d|0,g<<3|0)|0;if(b)k[b>>2]=e;if(c)k[c>>2]=f;k[a>>2]=h;return}function vg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;if(!((a|0)!=0&(d|0)!=0))return;g=ma(f,e)|0;h=Rqa(g>>>0>1073741823?-1:g<<2)|0;if(g)TEa(h|0,d|0,g<<2|0)|0;if(b)k[b>>2]=e;if(c)k[c>>2]=f;k[a>>2]=h;return}function wg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=Qqa(36)|0;B=0;va(452,e|0);f=B;B=0;if(f&1){f=Rb()|0;Sqa(e);Qb(f|0)}if(!d){k[a>>2]=e;return}f=Qqa(24)|0;k[f>>2]=27652;g=f+4|0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;i[g+16>>0]=0;k[f+8>>2]=d;g=d>>>0>536870911?-1:d<<3;h=Rqa(g)|0;k[f+12>>2]=h;if(!b)yb(142353,63802,137,142345);j=d<<3;TEa(h|0,b|0,j|0)|0;b=Rqa(g)|0;k[f+16>>2]=b;if(!c)yb(142353,63802,137,142345);TEa(b|0,c|0,j|0)|0;ih(e,f)|0;k[a>>2]=e;return}function xg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0;c=Qqa(36)|0;B=0;va(453,c|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(c);Qb(b|0)}else{b=Qqa(32)|0;k[b>>2]=27692;f=b+4|0;k[f>>2]=0;g=b+16|0;k[g>>2]=0;h=b+20|0;k[h>>2]=0;i=b+24|0;k[i>>2]=0;j=Rqa((Lta(d)|0)+1|0)|0;k[f>>2]=j;TEa(j|0,d|0,(Lta(d)|0)+1|0)|0;p[b+8>>3]=e;k[g>>2]=1;k[h>>2]=1;k[i>>2]=0;q_(c,b)|0;k[a>>2]=c;return}}function yg(a){a=a|0;var b=0,c=0;k[a>>2]=27692;b=a+4|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=a+24|0;a=k[b>>2]|0;if(!a)return;Tqa(a);k[b>>2]=0;return}function zg(a){a=a|0;var b=0,c=0;k[a>>2]=27692;b=a+4|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=k[a+24>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function Ag(a){a=a|0;Ec[k[(k[a>>2]|0)+12>>2]&1023](a);return}function Bg(a){a=a|0;var b=0,c=0,d=0,e=0;b=r;r=r+96|0;c=b;d=c;e=d+81|0;do{i[d>>0]=0;d=d+1|0}while((d|0)<(e|0));Fc[k[(k[a>>2]|0)+32>>2]&1023](a,c);r=b;return}function Cg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,64133,114);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,149550,2);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,77,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function Dg(a){a=a|0;return 981}function Eg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,64133,114);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,149534,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,83,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function Fg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149435,20)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,64027,105);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,149525,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,28,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function Gg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0;c=r;r=r+1008|0;d=c+904|0;e=c+916|0;f=c+744|0;g=c+892|0;h=c+592|0;i=c+880|0;j=c+440|0;l=c+728|0;m=c+304|0;n=c+576|0;o=c+168|0;q=c+152|0;s=c+16|0;t=c;u=f+56|0;v=f+4|0;k[f>>2]=27524;k[u>>2]=27544;B=0;wa(508,f+56|0,v|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;y=w;vva(u);Qb(y|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);w=B;B=0;do if(w&1){z=Rb()|0;A=Q;C=z}else{k[v>>2]=27560;z=f+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,v|0,d|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(d);Yua(z);Ava(v);A=E;C=D;break}Yua(d);D=Lta(b)|0;B=0;E=Ia(40,f|0,b|0,D|0)|0;D=B;B=0;do if((((!(D&1)?(B=0,F=Ia(40,E|0,63914,16)|0,G=B,B=0,!(G&1)):0)?(G=k[a+4>>2]|0,H=Lta(G)|0,B=0,I=Ia(40,F|0,G|0,H|0)|0,H=B,B=0,!(H&1)):0)?(B=0,Ia(40,I|0,63931,2)|0,I=B,B=0,!(I&1)):0)?(B=0,wa(510,g|0,v|0),I=B,B=0,!(I&1)):0){B=0;ya(425,g|0)|0;I=B;B=0;if(I&1){I=Rb()|0;H=Q;Yua(g);J=H;K=I;break}Yua(g);k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);I=h+56|0;H=h+4|0;k[h>>2]=27524;k[I>>2]=27544;B=0;wa(508,h+56|0,H|0);G=B;B=0;if(G&1){G=Rb()|0;L=Q;M=G;vva(I);Qb(M|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[I>>2]=27488;B=0;va(448,H|0);G=B;B=0;do if(G&1){F=Rb()|0;N=Q;O=F}else{k[H>>2]=27560;F=h+36|0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;k[h+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,H|0,d|0);P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(d);Yua(F);Ava(H);N=R;O=P;break}Yua(d);P=Lta(b)|0;B=0;R=Ia(40,h|0,b|0,P|0)|0;P=B;B=0;do if(((!(P&1)?(B=0,S=Ia(40,R|0,63934,16)|0,T=B,B=0,!(T&1)):0)?(B=0,T=Xa(242,S|0,k[a+16>>2]|0)|0,S=B,B=0,!(S&1)):0)?(B=0,Ia(40,T|0,149177,1)|0,T=B,B=0,!(T&1)):0){B=0;wa(510,i|0,H|0);T=B;B=0;if(T&1){U=41;break}B=0;ya(425,i|0)|0;T=B;B=0;if(T&1){T=Rb()|0;S=Q;Yua(i);V=S;W=T;break}Yua(i);k[h>>2]=27468;k[I>>2]=27488;k[H>>2]=27560;Yua(F);Ava(H);vva(I);T=j+56|0;S=j+4|0;k[j>>2]=27524;k[T>>2]=27544;B=0;wa(508,j+56|0,S|0);X=B;B=0;if(X&1){X=Rb()|0;Y=Q;Z=X;vva(T);Qb(Z|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[T>>2]=27488;B=0;va(448,S|0);X=B;B=0;do if(X&1){_=Rb()|0;$=Q;aa=_}else{k[S>>2]=27560;_=j+36|0;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0;k[j+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,S|0,d|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;Yua(d);Yua(_);Ava(S);$=ca;aa=ba;break}Yua(d);ba=Lta(b)|0;B=0;ca=Ia(40,j|0,b|0,ba|0)|0;ba=B;B=0;do if(ba&1)U=50;else{B=0;da=Ia(40,ca|0,63951,16)|0;ea=B;B=0;if(ea&1){U=50;break}ea=a+20|0;B=0;fa=Xa(242,da|0,k[ea>>2]|0)|0;da=B;B=0;if(da&1){U=50;break}B=0;Ia(40,fa|0,149177,1)|0;fa=B;B=0;if(fa&1){U=50;break}B=0;wa(510,l|0,S|0);fa=B;B=0;if(fa&1){U=50;break}B=0;ya(425,l|0)|0;fa=B;B=0;if(fa&1){fa=Rb()|0;da=Q;Yua(l);ga=da;ha=fa;break}Yua(l);k[j>>2]=27468;k[T>>2]=27488;k[S>>2]=27560;Yua(_);Ava(S);vva(T);fa=k[a+24>>2]|0;a:do if(!fa){da=o+56|0;ia=o+4|0;k[o>>2]=27524;k[da>>2]=27544;B=0;wa(508,o+56|0,ia|0);ja=B;B=0;if(ja&1){ja=Rb()|0;ka=Q;la=ja;vva(da);Qb(la|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[da>>2]=27488;B=0;va(448,ia|0);ja=B;B=0;do if(ja&1){ma=Rb()|0;na=Q;oa=ma}else{k[ia>>2]=27560;ma=o+36|0;k[ma>>2]=0;k[ma+4>>2]=0;k[ma+8>>2]=0;k[ma+12>>2]=0;k[o+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ia|0,d|0);pa=B;B=0;if(pa&1){pa=Rb()|0;qa=Q;Yua(d);Yua(ma);Ava(ia);na=qa;oa=pa;break}Yua(d);pa=Lta(b)|0;B=0;qa=Ia(40,o|0,b|0,pa|0)|0;pa=B;B=0;do if(!(pa&1)){B=0;Ia(40,qa|0,63985,24)|0;ra=B;B=0;if(ra&1){U=84;break}B=0;wa(510,q|0,ia|0);ra=B;B=0;if(ra&1){U=84;break}B=0;ya(425,q|0)|0;ra=B;B=0;if(ra&1){ra=Rb()|0;sa=Q;Yua(q);ta=sa;ua=ra;break}else{Yua(q);k[o>>2]=27468;k[da>>2]=27488;k[ia>>2]=27560;Yua(ma);Ava(ia);vva(da);break a}}else U=84;while(0);if((U|0)==84){qa=Rb()|0;ta=Q;ua=qa}k[o>>2]=27468;k[da>>2]=27488;k[ia>>2]=27560;Yua(ma);Ava(ia);vva(da);xa=ta;za=ua;Qb(za|0)}while(0);ka=na;la=oa;vva(da);Qb(la|0)}else{s_(e,fa,k[ea>>2]|0)|0;ia=m+56|0;ja=m+4|0;k[m>>2]=27524;k[ia>>2]=27544;B=0;wa(508,m+56|0,ja|0);qa=B;B=0;if(qa&1){qa=Rb()|0;Aa=Q;Ba=qa;vva(ia);Qb(Ba|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[ia>>2]=27488;B=0;va(448,ja|0);qa=B;B=0;do if(qa&1){pa=Rb()|0;Ca=Q;Da=pa}else{k[ja>>2]=27560;pa=m+36|0;k[pa>>2]=0;k[pa+4>>2]=0;k[pa+8>>2]=0;k[pa+12>>2]=0;k[m+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,ja|0,d|0);ra=B;B=0;if(ra&1){ra=Rb()|0;sa=Q;Yua(d);Yua(pa);Ava(ja);Ca=sa;Da=ra;break}Yua(d);ra=Lta(b)|0;B=0;sa=Ia(40,m|0,b|0,ra|0)|0;ra=B;B=0;do if(!(ra&1)){B=0;Ea=Ia(40,sa|0,63968,16)|0;Fa=B;B=0;if(Fa&1){U=68;break}Fa=Lta(e)|0;B=0;Ga=Ia(40,Ea|0,e|0,Fa|0)|0;Fa=B;B=0;if(Fa&1){U=68;break}B=0;Ia(40,Ga|0,149177,1)|0;Ga=B;B=0;if(Ga&1){U=68;break}B=0;wa(510,n|0,ja|0);Ga=B;B=0;if(Ga&1){U=68;break}B=0;ya(425,n|0)|0;Ga=B;B=0;if(Ga&1){Ga=Rb()|0;Fa=Q;Yua(n);Ha=Fa;Ja=Ga;break}else{Yua(n);k[m>>2]=27468;k[ia>>2]=27488;k[ja>>2]=27560;Yua(pa);Ava(ja);vva(ia);break a}}else U=68;while(0);if((U|0)==68){sa=Rb()|0;Ha=Q;Ja=sa}k[m>>2]=27468;k[ia>>2]=27488;k[ja>>2]=27560;Yua(pa);Ava(ja);vva(ia);xa=Ha;za=Ja;Qb(za|0)}while(0);Aa=Ca;Ba=Da;vva(ia);Qb(Ba|0)}while(0);ea=s+56|0;fa=s+4|0;k[s>>2]=27524;k[ea>>2]=27544;B=0;wa(508,s+56|0,fa|0);ja=B;B=0;if(ja&1){ja=Rb()|0;Ka=Q;La=ja;vva(ea);Qb(La|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[ea>>2]=27488;B=0;va(448,fa|0);ja=B;B=0;do if(ja&1){qa=Rb()|0;Ma=Q;Na=qa}else{k[fa>>2]=27560;qa=s+36|0;k[qa>>2]=0;k[qa+4>>2]=0;k[qa+8>>2]=0;k[qa+12>>2]=0;k[s+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,fa|0,d|0);da=B;B=0;if(da&1){da=Rb()|0;sa=Q;Yua(d);Yua(qa);Ava(fa);Ma=sa;Na=da;break}Yua(d);da=Lta(b)|0;B=0;sa=Ia(40,s|0,b|0,da|0)|0;da=B;B=0;do if(!(da&1)){B=0;ra=Ia(40,sa|0,64010,16)|0;ma=B;B=0;if(ma&1){U=102;break}B=0;ma=Sa(1,ra|0,+(+p[a+8>>3]))|0;ra=B;B=0;if(ra&1){U=102;break}B=0;Ia(40,ma|0,149177,1)|0;ma=B;B=0;if(ma&1){U=102;break}B=0;wa(510,t|0,fa|0);ma=B;B=0;if(ma&1){U=102;break}B=0;ya(424,t|0)|0;ma=B;B=0;if(ma&1){ma=Rb()|0;ra=Q;Yua(t);Oa=ra;Pa=ma;break}else{Yua(t);k[s>>2]=27468;k[ea>>2]=27488;k[fa>>2]=27560;Yua(qa);Ava(fa);vva(ea);r=c;return}}else U=102;while(0);if((U|0)==102){sa=Rb()|0;Oa=Q;Pa=sa}k[s>>2]=27468;k[ea>>2]=27488;k[fa>>2]=27560;Yua(qa);Ava(fa);vva(ea);xa=Oa;za=Pa;Qb(za|0)}while(0);Ka=Ma;La=Na;vva(ea);Qb(La|0)}while(0);if((U|0)==50){ca=Rb()|0;ga=Q;ha=ca}k[j>>2]=27468;k[T>>2]=27488;k[S>>2]=27560;Yua(_);Ava(S);vva(T);xa=ga;za=ha;Qb(za|0)}while(0);Y=$;Z=aa;vva(T);Qb(Z|0)}else U=41;while(0);if((U|0)==41){R=Rb()|0;V=Q;W=R}k[h>>2]=27468;k[I>>2]=27488;k[H>>2]=27560;Yua(F);Ava(H);vva(I);xa=V;za=W;Qb(za|0)}while(0);L=N;M=O;vva(I);Qb(M|0)}else U=24;while(0);if((U|0)==24){E=Rb()|0;J=Q;K=E}k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);xa=J;za=K;Qb(za|0)}while(0);x=A;y=C;vva(u);Qb(y|0)}function Hg(a){a=a|0;return k[a+4>>2]|0}function Ig(a){a=a|0;return k[a+16>>2]|0}function Jg(a){a=a|0;return k[a+20>>2]|0}function Kg(a){a=a|0;return k[a+24>>2]|0}function Lg(a){a=a|0;var b=0,c=0;k[a>>2]=27652;b=a+12|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+16|0;a=k[b>>2]|0;if(!a){k[b>>2]=0;return}Tqa(a);k[b>>2]=0;return}function Mg(a){a=a|0;var b=0,c=0;k[a>>2]=27652;b=a+12|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=k[a+16>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function Ng(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0;b=r;r=r+768|0;c=b+752|0;d=b+592|0;e=b+740|0;f=b+456|0;g=b+728|0;h=b+304|0;j=b+440|0;l=b+152|0;m=b+288|0;n=b+16|0;o=b;q=d+56|0;s=d+4|0;k[d>>2]=27524;k[q>>2]=27544;B=0;wa(508,d+56|0,s|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;v=t;vva(q);Qb(v|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[q>>2]=27488;B=0;va(448,s|0);t=B;B=0;do if(t&1){w=Rb()|0;x=Q;y=w}else{k[s>>2]=27560;w=d+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,s|0,c|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(c);Yua(w);Ava(s);x=A;y=z;break}Yua(c);B=0;z=Ia(40,d|0,64382,10)|0;A=B;B=0;do if(((!(A&1)?(B=0,C=Xa(242,z|0,k[a+4>>2]|0)|0,D=B,B=0,!(D&1)):0)?(B=0,Ia(40,C|0,149177,1)|0,C=B,B=0,!(C&1)):0)?(B=0,wa(510,e|0,s|0),C=B,B=0,!(C&1)):0){B=0;ya(424,e|0)|0;C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(e);E=D;F=C;break}Yua(e);k[d>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);C=f+56|0;D=f+4|0;k[f>>2]=27524;k[C>>2]=27544;B=0;wa(508,f+56|0,D|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;I=G;vva(C);Qb(I|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[C>>2]=27488;B=0;va(448,D|0);G=B;B=0;do if(G&1){J=Rb()|0;K=Q;L=J}else{k[D>>2]=27560;J=f+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,D|0,c|0);M=B;B=0;if(M&1){M=Rb()|0;N=Q;Yua(c);Yua(J);Ava(D);K=N;L=M;break}Yua(c);B=0;M=Ia(40,f|0,64393,10)|0;N=B;B=0;do if(((!(N&1)?(O=a+8|0,B=0,P=Xa(242,M|0,k[O>>2]|0)|0,R=B,B=0,!(R&1)):0)?(B=0,Ia(40,P|0,149177,1)|0,P=B,B=0,!(P&1)):0)?(B=0,wa(510,g|0,D|0),P=B,B=0,!(P&1)):0){B=0;ya(424,g|0)|0;P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(g);S=R;T=P;break}Yua(g);k[f>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(J);Ava(D);vva(C);P=h+56|0;R=h+4|0;k[h>>2]=27524;k[P>>2]=27544;B=0;wa(508,h+56|0,R|0);U=B;B=0;if(U&1){U=Rb()|0;V=Q;W=U;vva(P);Qb(W|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[P>>2]=27488;B=0;va(448,R|0);U=B;B=0;do if(U&1){X=Rb()|0;Y=Q;Z=X}else{k[R>>2]=27560;X=h+36|0;k[X>>2]=0;k[X+4>>2]=0;k[X+8>>2]=0;k[X+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,R|0,c|0);_=B;B=0;if(_&1){_=Rb()|0;$=Q;Yua(c);Yua(X);Ava(R);Y=$;Z=_;break}Yua(c);B=0;_=Ia(40,h|0,64404,10)|0;$=B;B=0;do if($&1)aa=60;else{ba=(i[a+20>>0]|0)!=0;B=0;ca=Ia(40,_|0,(ba?159247:159252)|0,(ba?4:5)|0)|0;ba=B;B=0;if(ba&1){aa=60;break}B=0;Ia(40,ca|0,149177,1)|0;ca=B;B=0;if(ca&1){aa=60;break}B=0;wa(510,j|0,R|0);ca=B;B=0;if(ca&1){aa=60;break}B=0;ya(424,j|0)|0;ca=B;B=0;if(ca&1){ca=Rb()|0;ba=Q;Yua(j);da=ba;ea=ca;break}Yua(j);k[h>>2]=27468;k[P>>2]=27488;k[R>>2]=27560;Yua(X);Ava(R);vva(P);if(!(k[O>>2]|0)){r=b;return}ca=l+56|0;ba=l+4|0;k[l>>2]=27524;k[ca>>2]=27544;B=0;wa(508,l+56|0,ba|0);fa=B;B=0;if(fa&1){fa=Rb()|0;ga=Q;ha=fa;vva(ca);Qb(ha|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[ca>>2]=27488;B=0;va(448,ba|0);fa=B;B=0;do if(fa&1){ia=Rb()|0;ja=Q;ka=ia}else{k[ba>>2]=27560;ia=l+36|0;k[ia>>2]=0;k[ia+4>>2]=0;k[ia+8>>2]=0;k[ia+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ba|0,c|0);la=B;B=0;if(la&1){la=Rb()|0;ma=Q;Yua(c);Yua(ia);Ava(ba);ja=ma;ka=la;break}Yua(c);B=0;Ia(40,l|0,64415,10)|0;la=B;B=0;do if(!(la&1)){B=0;wa(510,m|0,ba|0);ma=B;B=0;if(ma&1){aa=63;break}B=0;ya(424,m|0)|0;ma=B;B=0;if(ma&1){ma=Rb()|0;na=Q;Yua(m);oa=na;pa=ma;break}Yua(m);k[l>>2]=27468;k[ca>>2]=27488;k[ba>>2]=27560;Yua(ia);Ava(ba);vva(ca);if((k[O>>2]|0)<=0){r=b;return}ma=n+56|0;na=n+4|0;qa=n+56|0;ra=n+128|0;sa=n+132|0;ta=n+36|0;ua=n+52|0;xa=a+12|0;za=a+16|0;Aa=0;while(1){k[n>>2]=27524;k[ma>>2]=27544;B=0;wa(508,qa|0,na|0);Ba=B;B=0;if(Ba&1){aa=70;break}k[ra>>2]=0;k[sa>>2]=-1;k[n>>2]=27468;k[ma>>2]=27488;B=0;va(448,na|0);Ba=B;B=0;if(Ba&1){aa=71;break}k[na>>2]=27560;k[ta>>2]=0;k[ta+4>>2]=0;k[ta+8>>2]=0;k[ta+12>>2]=0;k[ua>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,na|0,c|0);Ba=B;B=0;if(Ba&1){aa=69;break}Yua(c);B=0;Ba=Xa(242,n|0,Aa|0)|0;Ca=B;B=0;if(Ca&1){aa=83;break}B=0;Ca=Ia(40,Ba|0,160061,2)|0;Ba=B;B=0;if(Ba&1){aa=83;break}B=0;Ba=Sa(1,Ca|0,+(+p[(k[xa>>2]|0)+(Aa<<3)>>3]))|0;Ca=B;B=0;if(Ca&1){aa=83;break}B=0;Ca=Ia(40,Ba|0,148718,3)|0;Ba=B;B=0;if(Ba&1){aa=83;break}B=0;Ba=Sa(1,Ca|0,+(+p[(k[za>>2]|0)+(Aa<<3)>>3]))|0;Ca=B;B=0;if(Ca&1){aa=83;break}B=0;Ia(40,Ba|0,149177,1)|0;Ba=B;B=0;if(Ba&1){aa=83;break}B=0;wa(510,o|0,na|0);Ba=B;B=0;if(Ba&1){aa=83;break}B=0;ya(424,o|0)|0;Ba=B;B=0;if(Ba&1){aa=84;break}Yua(o);k[n>>2]=27468;k[ma>>2]=27488;k[na>>2]=27560;Yua(ta);Ava(na);vva(ma);Aa=Aa+1|0;if((Aa|0)>=(k[O>>2]|0)){aa=86;break}}if((aa|0)==69){Aa=Rb()|0;za=Q;Yua(c);Yua(ta);Ava(na);Da=za;Ea=Aa;aa=72}else if((aa|0)==70){Aa=Rb()|0;Fa=Q;Ga=Aa;vva(ma);Qb(Ga|0)}else if((aa|0)==71){Aa=Rb()|0;Da=Q;Ea=Aa;aa=72}else if((aa|0)==83){Aa=Rb()|0;Ha=Q;Ja=Aa;aa=85}else if((aa|0)==84){Aa=Rb()|0;za=Q;Yua(o);Ha=za;Ja=Aa;aa=85}else if((aa|0)==86){r=b;return}if((aa|0)==72){Fa=Da;Ga=Ea;vva(ma);Qb(Ga|0)}else if((aa|0)==85){k[n>>2]=27468;k[ma>>2]=27488;k[na>>2]=27560;Yua(ta);Ava(na);vva(ma);Ka=Ha;La=Ja;Qb(La|0)}}else aa=63;while(0);if((aa|0)==63){la=Rb()|0;oa=Q;pa=la}k[l>>2]=27468;k[ca>>2]=27488;k[ba>>2]=27560;Yua(ia);Ava(ba);vva(ca);Ka=oa;La=pa;Qb(La|0)}while(0);ga=ja;ha=ka;vva(ca);Qb(ha|0)}while(0);if((aa|0)==60){_=Rb()|0;da=Q;ea=_}k[h>>2]=27468;k[P>>2]=27488;k[R>>2]=27560;Yua(X);Ava(R);vva(P);Ka=da;La=ea;Qb(La|0)}while(0);V=Y;W=Z;vva(P);Qb(W|0)}else aa=57;while(0);if((aa|0)==57){M=Rb()|0;S=Q;T=M}k[f>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(J);Ava(D);vva(C);Ka=S;La=T;Qb(La|0)}while(0);H=K;I=L;vva(C);Qb(I|0)}else aa=54;while(0);if((aa|0)==54){z=Rb()|0;E=Q;F=z}k[d>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);Ka=E;La=F;Qb(La|0)}while(0);u=x;v=y;vva(q);Qb(v|0)}function Og(a){a=a|0;Ec[k[(k[a>>2]|0)+8>>2]&1023](a);return}function Pg(a){a=a|0;return k[a+4>>2]|0}function Qg(a){a=a|0;return 558}function Rg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;b=Qqa(24)|0;c=k[a+4>>2]|0;d=k[a+8>>2]|0;e=k[a+12>>2]|0;f=k[a+16>>2]|0;g=i[a+20>>0]|0;k[b>>2]=27652;k[b+4>>2]=c;k[b+8>>2]=d;i[b+20>>0]=g;if(!d)return b|0;g=d>>>0>536870911?-1:d<<3;B=0;c=ya(422,g|0)|0;a=B;B=0;do if(!(a&1)){k[b+12>>2]=c;if(!e){B=0;ib(283,142353,63802,137,142345);B=0;break}h=d<<3;TEa(c|0,e|0,h|0)|0;B=0;j=ya(422,g|0)|0;l=B;B=0;if(!(l&1)){k[b+16>>2]=j;if(!f){B=0;ib(283,142353,63802,137,142345);B=0;break}TEa(j|0,f|0,h|0)|0;return b|0}}while(0);f=Rb()|0;Sqa(b);Qb(f|0);return 0}function Sg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149435,20)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,64283,98);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,149525,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,86,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function Tg(a,b,c,d,e,f,g,h,i,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;l=+l;var m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;m=r;r=r+464|0;n=m;o=m+200|0;q=m+108|0;s=m+16|0;t=m+208|0;k[o>>2]=0;u=q+12|0;k[u>>2]=0;if((th(i)|0)>0){v=0;w=0;while(1){x=(qh(i,w)|0)+8|0;y=(k[x>>2]|0)+-1+v|0;k[u>>2]=y;w=w+1|0;if((w|0)>=(th(i)|0)){z=y;break}else v=y}}else z=0;if((th(j)|0)>0){v=z;w=0;while(1){y=(qh(j,w)|0)+8|0;x=v+(k[y>>2]|0)|0;k[u>>2]=x;w=w+1|0;if((w|0)>=(th(j)|0)){A=x;break}else v=x}}else A=z;k[q+16>>2]=1;z=A<<1;v=Rqa(z>>>0>536870911?-1:z<<3)|0;k[q>>2]=v;if((th(i)|0)>0){z=0;w=0;while(1){x=qh(i,w)|0;y=k[x+8>>2]|0;if((y|0)>1){B=k[x+12>>2]|0;C=k[x+16>>2]|0;x=y+-1|0;y=z;D=0;while(1){E=y<<1;p[v+(E<<3)>>3]=+p[B+(D<<3)>>3];p[v+((E|1)<<3)>>3]=+p[C+(D<<3)>>3];E=y+1|0;D=D+1|0;if((D|0)>=(x|0)){F=E;break}else y=E}}else F=z;w=w+1|0;if((w|0)>=(th(i)|0)){G=F;break}else z=F}}else G=0;if((th(j)|0)>0){F=G;G=0;while(1){z=qh(j,G)|0;w=k[z+8>>2]|0;if((w|0)>0){y=k[z+12>>2]|0;x=k[z+16>>2]|0;z=F;D=0;while(1){C=z<<1;p[v+(C<<3)>>3]=+p[y+(D<<3)>>3];p[v+((C|1)<<3)>>3]=+p[x+(D<<3)>>3];C=z+1|0;D=D+1|0;if((D|0)>=(w|0)){H=C;break}else z=C}}else H=F;G=G+1|0;if((G|0)>=(th(j)|0))break;else F=H}}H=Rqa(A>>>0>536870911?-1:A<<3)|0;k[q+4>>2]=H;if((A|0)>0){WEa(H|0,0,((A|0)>1?A:1)<<3|0)|0;I=k[u>>2]|0}else I=A;H=Rqa(A>>>0>1073741823?-1:A<<2)|0;k[q+8>>2]=H;if((I|0)>0){I=k[u>>2]|0;u=0;do{k[H+(u<<2)>>2]=0;u=u+1|0}while((u|0)<(I|0))}I=q+56|0;k[I>>2]=0;if((th(i)|0)>0){u=0;H=0;while(1){A=(qh(i,H)|0)+8|0;F=(k[A>>2]|0)+-1+u|0;k[I>>2]=F;H=H+1|0;if((H|0)>=(th(i)|0)){J=F;break}else u=F}}else J=0;if((th(j)|0)>0){u=J;H=0;while(1){F=(qh(j,H)|0)+8|0;A=(k[F>>2]|0)+-1+u|0;k[I>>2]=A;H=H+1|0;if((H|0)>=(th(j)|0)){K=A;break}else u=A}}else K=J;J=K<<1;u=Rqa(J>>>0>1073741823?-1:J<<2)|0;k[q+48>>2]=u;J=Rqa(K>>>0>1073741823?-1:K<<2)|0;if(K)WEa(J|0,0,K<<2|0)|0;k[q+52>>2]=J;if((th(i)|0)>0){K=0;H=0;while(1){I=(qh(i,H)|0)+8|0;A=(k[I>>2]|0)>2;F=K<<1;k[u+(F<<2)>>2]=K;if(A){A=F;G=K;v=0;while(1){z=G+1|0;k[u+((A|1)<<2)>>2]=z;k[J+(G<<2)>>2]=0;v=v+1|0;w=(v|0)<((k[I>>2]|0)+-2|0);D=z<<1;k[u+(D<<2)>>2]=z;if(!w){L=D;M=z;break}else{A=D;G=z}}}else{L=F;M=K}k[u+((L|1)<<2)>>2]=K;k[J+(M<<2)>>2]=0;G=M+1|0;H=H+1|0;if((H|0)>=(th(i)|0)){N=G;break}else K=G}}else N=0;if((th(j)|0)>0){K=N;H=N;N=0;while(1){M=(qh(j,N)|0)+8|0;if((k[M>>2]|0)>1){L=N+2|0;G=K;A=H;I=0;while(1){v=A<<1;k[u+(v<<2)>>2]=G;z=G+1|0;k[u+((v|1)<<2)>>2]=z;k[J+(A<<2)>>2]=L;v=A+1|0;I=I+1|0;if((I|0)>=((k[M>>2]|0)+-1|0)){O=z;P=v;break}else{G=z;A=v}}}else{O=K;P=H}N=N+1|0;if((N|0)>=(th(j)|0))break;else{K=O+1|0;H=P}}}k[q+72>>2]=0;P=(th(i)|0)+-1|0;k[q+64>>2]=P;if((P|0)!=0?(H=P<<1,P=Rqa(H>>>0>536870911?-1:H<<3)|0,k[q+60>>2]=P,(th(i)|0)>1):0){H=0;do{O=H;H=H+1|0;K=qh(i,H)|0;j=O<<1;dh(P+(j<<3)|0,P+((j|1)<<3)|0,(k[K+8>>2]|0)+-1|0,k[K+12>>2]|0,k[K+16>>2]|0)|0}while((H|0)<((th(i)|0)+-1|0))}k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;i=s+20|0;k[i>>2]=0;k[s+24>>2]=0;k[s+32>>2]=0;H=s+48|0;k[H>>2]=0;P=s+52|0;k[P>>2]=0;k[s+76>>2]=0;k[s+80>>2]=0;k[n>>2]=64444;p[n+8>>3]=l;qta(t,64438,n)|0;hg(t,q,s,0);q=s+36|0;t=k[q>>2]|0;n=t*3|0;K=Rqa(n>>>0>1073741823?-1:n<<2)|0;n=s+12|0;j=k[n>>2]|0;O=j>>>0>536870911?-1:j<<3;N=Rqa(O)|0;J=Rqa(O)|0;O=s+56|0;u=k[O>>2]|0;A=u*3|0;G=Rqa(A>>>0>1073741823?-1:A<<2)|0;k[o>>2]=G;A=Rqa(u>>>0>1073741823?-1:u<<2)|0;if((t|0)>0){M=k[i>>2]|0;i=k[s+40>>2]|0;I=(i|0)>0;L=0;do{if(I){F=L*3|0;v=ma(i,L)|0;z=0;do{k[K+(z+F<<2)>>2]=(k[M+(v+z<<2)>>2]|0)+1;z=z+1|0}while((z|0)<(i|0))}L=L+1|0}while((L|0)<(t|0))}if((j|0)>0){L=k[s>>2]|0;s=0;do{i=s<<1;p[N+(s<<3)>>3]=+p[L+(i<<3)>>3];p[J+(s<<3)>>3]=+p[L+((i|1)<<3)>>3];s=s+1|0}while((s|0)<(j|0))}if((u|0)<=0){Q=u;R=t;ch(o,Q,K,R)|0;S=k[O>>2]|0;T=k[q>>2]|0;eh(o,S,K,T)|0;k[a>>2]=K;k[b>>2]=N;k[c>>2]=J;U=k[o>>2]|0;k[d>>2]=U;k[e>>2]=A;V=k[q>>2]|0;k[f>>2]=V;W=k[n>>2]|0;k[g>>2]=W;X=k[O>>2]|0;k[h>>2]=X;r=m;return}t=k[H>>2]|0;H=k[P>>2]|0;P=0;do{u=P<<1;j=P*3|0;k[G+(j<<2)>>2]=(k[t+(u<<2)>>2]|0)+1;k[G+(j+1<<2)>>2]=(k[t+((u|1)<<2)>>2]|0)+1;k[A+(P<<2)>>2]=k[H+(P<<2)>>2];P=P+1|0;u=k[O>>2]|0}while((P|0)<(u|0));Y=u;Q=Y;R=k[q>>2]|0;ch(o,Q,K,R)|0;S=k[O>>2]|0;T=k[q>>2]|0;eh(o,S,K,T)|0;k[a>>2]=K;k[b>>2]=N;k[c>>2]=J;U=k[o>>2]|0;k[d>>2]=U;k[e>>2]=A;V=k[q>>2]|0;k[f>>2]=V;W=k[n>>2]|0;k[g>>2]=W;X=k[O>>2]|0;k[h>>2]=X;r=m;return}function Ug(a,b,c,d,e,f,g,h,i,l,m,n,o){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;l=l|0;m=m|0;n=n|0;o=o|0;var q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0.0,oa=0.0,pa=0.0,qa=0.0,ra=0.0,sa=0.0,ta=0.0,xa=0.0,ya=0.0,za=0.0,Aa=0.0,Ba=0.0,Ca=0.0,Da=0.0,Ea=0.0,Fa=0,Ga=0.0,Ha=0,Ja=0,Ka=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0;q=r;r=r+480|0;s=q+460|0;t=q+96|0;u=q+80|0;v=q+56|0;w=q+48|0;x=q+40|0;y=q+16|0;z=q+312|0;A=q+448|0;C=q+300|0;D=q+288|0;E=q+8|0;G=q;H=q+144|0;I=q+152|0;J=q+128|0;K=q+116|0;L=q+104|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;M=(h|0)==(e|0);if(!(M|(h|0)==(f|0))){N=z+56|0;O=z+4|0;k[z>>2]=27524;k[N>>2]=27544;B=0;wa(508,z+56|0,O|0);P=B;B=0;if(P&1){P=Rb()|0;R=Q;S=P;vva(N);Qb(S|0)}k[z+128>>2]=0;k[z+132>>2]=-1;k[z>>2]=27468;k[N>>2]=27488;B=0;va(448,O|0);P=B;B=0;do if(P&1){T=Rb()|0;U=Q;V=T}else{k[O>>2]=27560;T=z+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[z+52>>2]=16;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;B=0;wa(509,O|0,s|0);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Yua(s);Yua(T);Ava(O);U=X;V=W;break}Yua(s);B=0;W=Ia(40,z|0,64454,33)|0;X=B;B=0;a:do if(((((((!(X&1)?(B=0,Y=Xa(242,W|0,e|0)|0,Z=B,B=0,!(Z&1)):0)?(B=0,Z=Ia(40,Y|0,64488,4)|0,Y=B,B=0,!(Y&1)):0)?(B=0,Y=Xa(242,Z|0,f|0)|0,Z=B,B=0,!(Z&1)):0)?(B=0,Z=Ia(40,Y|0,64493,12)|0,Y=B,B=0,!(Y&1)):0)?(B=0,Y=Xa(242,Z|0,h|0)|0,Z=B,B=0,!(Z&1)):0)?(B=0,Z=Ia(40,Y|0,141170,1)|0,Y=B,B=0,!(Y&1)):0)?(B=0,Xa(239,Z|0,0)|0,Z=B,B=0,!(Z&1)):0){Z=Ab(20)|0;B=0;eb(502,A|0,64506,106);Y=B;B=0;do if(!(Y&1)){B=0;eb(502,C|0,64613,23);_=B;B=0;if(_&1){_=Rb()|0;$=Q;Yua(A);aa=_;ba=$;break}B=0;wa(510,D|0,O|0);$=B;B=0;if($&1){$=Rb()|0;ca=Q;da=$;ea=1}else{B=0;ua(163,Z|0,A|0,C|0,35,D|0);$=B;B=0;if($&1)fa=1;else{B=0;eb(503,Z|0,1240,229);B=0;fa=0}$=Rb()|0;_=Q;Yua(D);ca=_;da=$;ea=fa}Yua(C);Yua(A);if(ea){aa=da;ba=ca}else{ga=da;ha=ca;break a}}else{$=Rb()|0;aa=$;ba=Q}while(0);zb(Z|0);ga=aa;ha=ba}else ia=23;while(0);if((ia|0)==23){W=Rb()|0;ga=W;ha=Q}k[z>>2]=27468;k[N>>2]=27488;k[O>>2]=27560;Yua(T);Ava(O);vva(N);ja=ha;ka=ga;Qb(ka|0)}while(0);R=U;S=V;vva(N);Qb(S|0)}if(!(r_(o,64637)|0))la=0;else{Vg(o,t,64637);la=1}o=ma(n,i)|0;S=Rqa(o>>>0>536870911?-1:o<<3)|0;o=Qqa(200)|0;B=0;La(30,o|0,b|0,c|0,d|0,e|0,f|0);b=B;B=0;if(b&1){b=Rb()|0;N=Q;Sqa(o);ja=N;ka=b;Qb(ka|0)}b=o+48|0;N=k[b>>2]|0;V=Rqa(N>>>0>1073741823?-1:N<<2)|0;g5(o,V)|0;N=k[o+44>>2]|0;if((N|0)>0){U=o+8|0;R=0;do{ga=k[U>>2]|0;j[ga+(R*72|0)+60>>1]=0;k[ga+(R*72|0)+64>>2]=0;R=R+1|0}while((R|0)!=(N|0))}if((k[b>>2]|0)>0){N=o+12|0;R=0;do{X4((k[N>>2]|0)+(R*48|0)|0);R=R+1|0}while((R|0)<(k[b>>2]|0))}na=+p[c>>3];oa=+p[d>>3];if((e|0)>1){b=1;pa=na;qa=na;ra=oa;sa=oa;while(1){ta=+p[c+(b<<3)>>3];xa=ta<qa?ta:qa;ya=ta>pa?ta:pa;ta=+p[d+(b<<3)>>3];za=ta<sa?ta:sa;Aa=ta>ra?ta:ra;b=b+1|0;if((b|0)==(e|0)){Ba=ya;Ca=xa;Da=Aa;Ea=za;break}else{pa=ya;qa=xa;ra=Aa;sa=za}}}else{Ba=na;Ca=na;Da=oa;Ea=oa}if((n|0)<=0){i5(o);Sqa(o);Tqa(V);k[a>>2]=S;r=q;return 1}e=(i|0)>0;oa=+p[t>>3];t=u+8|0;b=y+8|0;d=v+8|0;c=y+16|0;R=v+16|0;N=z+4|0;U=i<<3;ga=0;b:while(1){ha=S+(ma(U,ga)|0)|0;O=l+(ga<<3)|0;na=+p[O>>3];do if(la){if(!(na<Ca|na>Ba)?(ba=m+(ga<<3)|0,sa=+p[ba>>3],!(sa<Ea|sa>Da)):0){Fa=ba;Ga=sa;ia=52;break}if(e){ba=ma(ga,i)|0;aa=0;do{p[S+(aa+ba<<3)>>3]=oa;aa=aa+1|0}while((aa|0)!=(i|0))}}else{aa=m+(ga<<3)|0;Fa=aa;Ga=+p[aa>>3];ia=52}while(0);if((ia|0)==52){ia=0;p[u>>3]=na;p[t>>3]=Ga;p5(E,o,u);T=o5(o,E,y,0)|0;aa=T+32|0;ba=aa;Z=k[ba>>2]|0;ca=k[ba+4>>2]|0;do if((ca|0)>0|(ca|0)==0&Z>>>0>0){ba=y;sa=+(Z>>>0)+4294967296.0*+(ca|0);p[v>>3]=(+((k[ba>>2]|0)>>>0)+4294967296.0*+(k[ba+4>>2]|0))/sa;ba=b;p[d>>3]=(+((k[ba>>2]|0)>>>0)+4294967296.0*+(k[ba+4>>2]|0))/sa;ba=c;p[R>>3]=(+((k[ba>>2]|0)>>>0)+4294967296.0*+(k[ba+4>>2]|0))/sa;ba=h5(o,k[T>>2]|0)|0;da=h5(o,k[T+4>>2]|0)|0;ea=h5(o,k[T+8>>2]|0)|0;A=n5(o,T)|0;if((k[V+(A<<2)>>2]|0)<0?la:0){if(e){C=ma(ga,i)|0;fa=0;do{p[S+(fa+C<<3)>>3]=oa;fa=fa+1|0}while((fa|0)!=(i|0))}}else{Ha=ba;Ja=da;Ka=ea;Ma=A;ia=63}}else{if(!la){fa=E;C=k[fa+4>>2]|0;D=G;k[D>>2]=k[fa>>2];k[D+4>>2]=C;k[s>>2]=k[G>>2];k[s+4>>2]=k[G+4>>2];q5(H,s,T,w,x);F4(z,H);C=k[N>>2]|0;D=k[z>>2]|0;sa=+p[w>>3];p[v+(j[52932+(C<<2)+2>>1]<<3)>>3]=sa;ra=+p[x>>3];p[v+(j[52932+(C<<2)>>1]<<3)>>3]=ra;p[v+(j[52944+(C<<1)>>1]<<3)>>3]=1.0-sa-ra;C=h5(o,k[D>>2]|0)|0;fa=h5(o,k[D+4>>2]|0)|0;h=h5(o,k[D+8>>2]|0)|0;Ha=C;Ja=fa;Ka=h;Ma=n5(o,D)|0;ia=63;break}if(e){D=ma(ga,i)|0;h=0;do{p[S+(h+D<<3)>>3]=oa;h=h+1|0}while((h|0)!=(i|0))}}while(0);c:do if((ia|0)==63){ia=0;if(M){if(!e)break;na=+p[v>>3];T=ma(Ha,i)|0;ra=+p[d>>3];ca=ma(Ja,i)|0;sa=+p[R>>3];Z=ma(Ka,i)|0;h=ma(ga,i)|0;D=0;while(1){p[S+(D+h<<3)>>3]=na*+p[g+(D+T<<3)>>3]+ra*+p[g+(D+ca<<3)>>3]+sa*+p[g+(D+Z<<3)>>3];D=D+1|0;if((D|0)==(i|0))break c}}if((k[aa+4>>2]|0)>=0?(k[V+(Ma<<2)>>2]|0)>=0:0){if(!((Ma|0)>-1&(Ma|0)<(f|0))){Na=O;Oa=Fa;Pa=Ma;break b}if(!e)break;TEa(ha|0,g+((ma(Ma,i)|0)<<3)|0,U|0)|0;break}if(e){D=ma(ga,i)|0;Z=0;do{p[S+(Z+D<<3)>>3]=F;Z=Z+1|0}while((Z|0)!=(i|0))}}while(0)}ga=ga+1|0;if((ga|0)>=(n|0)){ia=108;break}}if((ia|0)==108){i5(o);Sqa(o);Tqa(V);k[a>>2]=S;r=q;return 1}q=I+56|0;S=I+4|0;k[I>>2]=27524;k[q>>2]=27544;B=0;wa(508,I+56|0,S|0);a=B;B=0;if(a&1){a=Rb()|0;Qa=Q;Ra=a;vva(q);Qb(Ra|0)}k[I+128>>2]=0;k[I+132>>2]=-1;k[I>>2]=27468;k[q>>2]=27488;B=0;va(448,S|0);a=B;B=0;do if(a&1){V=Rb()|0;Ta=Q;Ua=V}else{k[S>>2]=27560;V=I+36|0;k[V>>2]=0;k[V+4>>2]=0;k[V+8>>2]=0;k[V+12>>2]=0;k[I+52>>2]=16;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;B=0;wa(509,S|0,s|0);o=B;B=0;if(o&1){o=Rb()|0;n=Q;Yua(s);Yua(V);Ava(S);Ta=n;Ua=o;break}Yua(s);B=0;o=Ia(40,I|0,64645,16)|0;n=B;B=0;d:do if(((((((!(n&1)?(B=0,ga=Xa(242,o|0,Pa|0)|0,i=B,B=0,!(i&1)):0)?(B=0,i=Ia(40,ga|0,64662,11)|0,ga=B,B=0,!(ga&1)):0)?(B=0,ga=Xa(242,i|0,f|0)|0,i=B,B=0,!(i&1)):0)?(B=0,i=Ia(40,ga|0,64674,50)|0,ga=B,B=0,!(ga&1)):0)?(B=0,ga=Sa(1,i|0,+(+p[Na>>3]))|0,i=B,B=0,!(i&1)):0)?(B=0,i=Ia(40,ga|0,149175,1)|0,ga=B,B=0,!(ga&1)):0)?(B=0,ga=Sa(1,i|0,+(+p[Oa>>3]))|0,i=B,B=0,!(i&1)):0){B=0;i=Ia(40,ga|0,141170,1)|0;ga=B;B=0;if(ga&1){ia=98;break}B=0;Xa(239,i|0,0)|0;i=B;B=0;if(i&1){ia=98;break}i=Ab(20)|0;B=0;eb(502,J|0,64506,106);ga=B;B=0;do if(!(ga&1)){B=0;eb(502,K|0,64613,23);e=B;B=0;if(e&1){e=Rb()|0;U=Q;Yua(J);Va=e;Wa=U;break}B=0;wa(510,L|0,S|0);U=B;B=0;if(U&1){U=Rb()|0;Ya=1;Za=Q;_a=U}else{B=0;ua(163,i|0,J|0,K|0,146,L|0);U=B;B=0;if(U&1)$a=1;else{B=0;eb(503,i|0,1240,229);B=0;$a=0}U=Rb()|0;e=Q;Yua(L);Ya=$a;Za=e;_a=U}Yua(K);Yua(J);if(Ya){Va=_a;Wa=Za}else{ab=Za;bb=_a;break d}}else{U=Rb()|0;Va=U;Wa=Q}while(0);zb(i|0);ab=Wa;bb=Va}else ia=98;while(0);if((ia|0)==98){o=Rb()|0;ab=Q;bb=o}k[I>>2]=27468;k[q>>2]=27488;k[S>>2]=27560;Yua(V);Ava(S);vva(q);ja=ab;ka=bb;Qb(ka|0)}while(0);Qa=Ta;Ra=Ua;vva(q);Qb(Ra|0);return 0}function Vg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=r_(a,c)|0;if(j){p[b>>3]=+p[j+8>>3];r=d;return}d=f+56|0;j=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,j|0);b=B;B=0;if(b&1){b=Rb()|0;l=Q;m=b;vva(d);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,j|0);b=B;B=0;do if(b&1){a=Rb()|0;n=Q;o=a}else{k[j>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,j|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);Yua(a);Ava(j);n=s;o=q;break}Yua(e);B=0;q=Ia(40,f|0,64725,16)|0;s=B;B=0;if(((!(s&1)?(s=Lta(c)|0,B=0,t=Ia(40,q|0,c|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,64742,51)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,64794,112);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,64907,3);q=B;B=0;if(q&1){q=Rb()|0;u=Q;Yua(g);v=u;w=q;break}B=0;wa(510,i|0,j|0);q=B;B=0;if(q&1){q=Rb()|0;x=Q;y=q;z=1}else{B=0;ua(163,s|0,g|0,h|0,36,i|0);q=B;B=0;if(q&1)A=1;else{B=0;eb(503,s|0,1240,229);B=0;A=0}q=Rb()|0;u=Q;Yua(i);x=u;y=q;z=A}Yua(h);Yua(g);if(z){v=x;w=y}else{C=x;D=y;k[f>>2]=27468;k[d>>2]=27488;k[j>>2]=27560;Yua(a);Ava(j);vva(d);Qb(D|0)}}else{q=Rb()|0;v=Q;w=q}while(0);zb(s|0);C=v;D=w;k[f>>2]=27468;k[d>>2]=27488;k[j>>2]=27560;Yua(a);Ava(j);vva(d);Qb(D|0)}t=Rb()|0;C=Q;D=t;k[f>>2]=27468;k[d>>2]=27488;k[j>>2]=27560;Yua(a);Ava(j);vva(d);Qb(D|0)}while(0);l=n;m=o;vva(d);Qb(m|0)}function Wg(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var l=0,m=0,n=0,o=0,q=0;l=r;r=r+32|0;m=l;n=Rqa(i>>>0>536870911?-1:i<<3)|0;if(i)WEa(n|0,0,i<<3|0)|0;o=Rqa(h>>>0>536870911?-1:h<<3)|0;if(h)WEa(o|0,0,h<<3|0)|0;k[m>>2]=f;k[m+4>>2]=i;k[m+8>>2]=j;k[m+12>>2]=n;k[m+16>>2]=d;k[m+20>>2]=e;_g(426,m,1);if(!(Ita(g,64911)|0))if((h|0)>0)q=0;else{k[a>>2]=n;k[b>>2]=o;r=l;return 1}else if((Ita(g,64919)|0)==0&(h|0)>0)q=0;else{k[a>>2]=n;k[b>>2]=o;r=l;return 1}do{g=c+(q*3<<3)|0;if((+p[n+(~~+p[g>>3]+-1<<3)>>3]==1.0?+p[n+(~~+p[g+8>>3]+-1<<3)>>3]==1.0:0)?+p[n+(~~+p[g+16>>3]+-1<<3)>>3]==1.0:0)p[o+(q<<3)>>3]=1.0;q=q+1|0}while((q|0)<(h|0));k[a>>2]=n;k[b>>2]=o;r=l;return 1}function Xg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0.0,s=0.0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0,I=0.0;b=r;r=r+16|0;c=b+4|0;d=b;e=k[a>>2]|0;f=k[e>>2]|0;g=k[e+8>>2]|0;h=k[e+12>>2]|0;i=k[e+16>>2]|0;j=k[e+20>>2]|0;$g(d,c,k[e+4>>2]|0,k[a+8>>2]|0,k[a+4>>2]|0);if((th(f)|0)>0)l=0;else{r=b;return 0}do{a=qh(f,l)|0;e=k[a+12>>2]|0;m=k[a+16>>2]|0;n=k[a+8>>2]|0;a=k[d>>2]|0;o=k[c>>2]|0;q=+p[e>>3];s=+p[m>>3];if((n|0)>1){t=1;u=q;v=q;w=s;x=s;while(1){y=+p[e+(t<<3)>>3];z=y<v?y:v;A=y>u?y:u;y=+p[m+(t<<3)>>3];B=y<x?y:x;C=y>w?y:w;t=t+1|0;if((t|0)==(n|0)){D=A;E=z;F=C;G=B;break}else{u=A;v=z;w=C;x=B}}}else{D=q;E=q;F=s;G=s}if((a|0)<(o|0)){t=a;do{H=h+(t<<3)|0;if(!(+p[H>>3]!=0.0)){x=+p[i+(t<<3)>>3];w=+p[j+(t<<3)>>3];if(w>F|(x<E|x>D|w<G))I=0.0;else I=+(bh(n,e,m,x,w,g)|0);p[H>>3]=I}t=t+1|0}while((t|0)!=(o|0))}l=l+1|0}while((l|0)<(th(f)|0));r=b;return 0}function Yg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0;f=r;r=r+192|0;g=f+176|0;h=f+40|0;i=f+24|0;j=f+12|0;l=f;m=e*51|0;n=Rqa(m>>>0>1073741823?-1:m<<2)|0;if(e)WEa(n|0,0,e*204|0)|0;if((d|0)>0){m=0;do{o=m*3|0;m=m+1|0;p=(k[c+(o<<2)>>2]|0)*51|0;q=p+-51|0;s=n+(p+-1<<2)|0;p=k[s>>2]|0;a:do if((p|0)>0){t=n+(q<<2)|0;u=0;while(1){if((m|0)==(k[t+(u<<2)>>2]|0))break a;u=u+1|0;if((u|0)>=(p|0)){v=10;break}}}else v=10;while(0);b:do if((v|0)==10){v=0;k[n+(q+p<<2)>>2]=m;k[s>>2]=p+1;u=(k[c+(o+1<<2)>>2]|0)*51|0;t=u+-51|0;w=n+(u+-1<<2)|0;u=k[w>>2]|0;if((u|0)>0){x=n+(t<<2)|0;y=0;do{if((m|0)==(k[x+(y<<2)>>2]|0))break b;y=y+1|0}while((y|0)<(u|0))}k[n+(t+u<<2)>>2]=m;k[w>>2]=u+1;y=(k[c+(o+2<<2)>>2]|0)*51|0;x=y+-51|0;z=n+(y+-1<<2)|0;y=k[z>>2]|0;if((y|0)>0){A=n+(x<<2)|0;C=0;do{if((m|0)==(k[A+(C<<2)>>2]|0))break b;C=C+1|0}while((C|0)<(y|0))}k[n+(x+y<<2)>>2]=m;k[z>>2]=y+1}while(0)}while((m|0)!=(d|0))}if((e|0)>0)D=0;else{k[a>>2]=n;k[b>>2]=51;r=f;return}while(1){d=n+(D*51<<2)+200|0;D=D+1|0;if((k[d>>2]|0)>50){E=d;break}if((D|0)>=(e|0)){v=38;break}}if((v|0)==38){k[a>>2]=n;k[b>>2]=51;r=f;return}f=h+56|0;b=h+4|0;k[h>>2]=27524;k[f>>2]=27544;B=0;wa(508,h+56|0,b|0);n=B;B=0;if(n&1){n=Rb()|0;F=Q;G=n;vva(f);Qb(G|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[f>>2]=27488;B=0;va(448,b|0);n=B;B=0;do if(n&1){a=Rb()|0;H=Q;I=a}else{k[b>>2]=27560;a=h+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[h+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,b|0,g|0);v=B;B=0;if(v&1){v=Rb()|0;e=Q;Yua(g);Yua(a);Ava(b);H=e;I=v;break}Yua(g);B=0;v=Ia(40,h|0,64936,32)|0;e=B;B=0;if(((!(e&1)?(B=0,e=Xa(242,v|0,k[E>>2]|0)|0,v=B,B=0,!(v&1)):0)?(B=0,v=Ia(40,e|0,64969,39)|0,e=B,B=0,!(e&1)):0)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,i|0,65009,94);e=B;B=0;do if(!(e&1)){B=0;eb(502,j|0,65104,17);D=B;B=0;if(D&1){D=Rb()|0;d=Q;Yua(i);J=d;K=D;break}B=0;wa(510,l|0,b|0);D=B;B=0;if(D&1){D=Rb()|0;L=Q;M=D;N=1}else{B=0;ua(163,v|0,i|0,j|0,67,l|0);D=B;B=0;if(D&1)O=1;else{B=0;eb(503,v|0,1240,229);B=0;O=0}D=Rb()|0;d=Q;Yua(l);L=d;M=D;N=O}Yua(j);Yua(i);if(N){J=L;K=M}else{P=L;R=M;k[h>>2]=27468;k[f>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(f);Qb(R|0)}}else{D=Rb()|0;J=Q;K=D}while(0);zb(v|0);P=J;R=K;k[h>>2]=27468;k[f>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(f);Qb(R|0)}e=Rb()|0;P=Q;R=e;k[h>>2]=27468;k[f>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(f);Qb(R|0)}while(0);F=H;G=I;vva(f);Qb(G|0)}function Zg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;e=f+-1|0;g=c*3|0;h=Rqa(g>>>0>1073741823?-1:g<<2)|0;if(!c){k[a>>2]=h;return}WEa(h|0,0,c*12|0)|0;if((c|0)>0)i=0;else{k[a>>2]=h;return}do{g=i*3|0;j=b+(g<<2)|0;l=j+4|0;m=j+8|0;n=h+(g<<2)|0;o=h+(g+1<<2)|0;p=h+(g+2<<2)|0;q=0;do{r=ma((k[b+(q+g<<2)>>2]|0)+-1|0,f)|0;s=k[d+(e+r<<2)>>2]|0;if((s|0)>0){t=k[j>>2]|0;u=k[l>>2]|0;v=k[m>>2]|0;w=0;do{x=k[d+(w+r<<2)>>2]|0;y=b+((x*3|0)+-3<<2)|0;z=k[y>>2]|0;A=k[y+4>>2]|0;B=k[y+8>>2]|0;do if((((t|0)==(A|0)&1)+((t|0)==(z|0)&1)+((t|0)==(B|0)&1)+((u|0)==(z|0)&1)+((u|0)==(A|0)&1)+((u|0)==(B|0)&1)+((v|0)==(z|0)&1)+((v|0)==(A|0)&1)+((v|0)==(B|0)&1)|0)==2){y=k[n>>2]|0;if(y){if((x|0)==(y|0))break;y=k[o>>2]|0;if(y){if((x|0)==(y|0))break;if(!(k[p>>2]|0))C=p;else break}else C=o}else C=n;k[C>>2]=x}while(0);w=w+1|0}while((w|0)!=(s|0))}q=q+1|0}while((q|0)!=3);i=i+1|0}while((i|0)!=(c|0));k[a>>2]=h;return}function _g(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;c=r;r=r+16|0;d=c;k[d>>2]=b;k[d+4>>2]=0;k[d+8>>2]=1;Hc[a&511](d)|0;r=c;return}function $g(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=~~+_(+(+(c|0)/+(d|0)));if((e|0)<0){g=-1;h=-1}else{i=ma(f,e)|0;g=i;h=(d+-1|0)==(e|0)?c:i+f|0}k[a>>2]=g;k[b>>2]=h;return}function ah(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;if((g|0)>0)i=0;else return 1;do{j=a+(i<<3)|0;do if(!(+p[j>>3]!=0.0))if(!(bh(d,b,c,+p[e+(i<<3)>>3],+p[f+(i<<3)>>3],h)|0)){p[j>>3]=0.0;break}else{p[j>>3]=1.0;break}while(0);i=i+1|0}while((i|0)!=(g|0));return 1}function bh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;var g=0,h=0,i=0.0,j=0.0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0.0,y=0,z=0;g=a+-1|0;a:do if((f|0)!=2){if((a|0)<=0){h=0;return h|0}i=+p[b+(g<<3)>>3];j=+p[c+(g<<3)>>3];k=0;while(1){l=j;j=+p[c+(k<<3)>>3];m=j-l;n=i;i=+p[b+(k<<3)>>3];o=i-n;q=m*m+o*o;r=e-l;l=d-n;n=r*r+l*l;s=q*n;t=+$(+(+aa(+s)));k=k+1|0;if(!(n<=q?m*r+o*l!=(s==-G?G:t):1)){h=f;break}if((k|0)>=(a|0))break a}return h|0}while(0);if((a|0)>0){u=0;v=0;w=g}else{h=0;return h|0}while(1){g=c+(v<<3)|0;i=+p[g>>3];j=+p[c+(w<<3)>>3];if(!(i<=e&j>e))if(j<=e?(t=+p[g>>3],t>e):0){x=t;y=10}else z=u;else{x=i;y=10}if((y|0)==10){y=0;i=+p[b+(v<<3)>>3];if(i+(+p[b+(w<<3)>>3]-i)*(e-x)/(j-x)>d)z=(u|0)==0&1;else z=u}g=v+1|0;if((g|0)==(a|0)){h=z;break}else{f=v;u=z;v=g;w=f}}return h|0}function ch(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=k[a>>2]|0;if((b|0)>0)f=0;else{k[a>>2]=e;return 1}do{g=f*3|0;h=(fh(k[e+(g<<2)>>2]|0,k[e+(g+1<<2)>>2]|0,c,d)|0)+1|0;k[e+(g+2<<2)>>2]=h;f=f+1|0}while((f|0)!=(b|0));k[a>>2]=e;return 1}function dh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,q=0.0;f=r;r=r+32|0;g=f+16|0;h=f+8|0;i=f;p[g>>3]=0.0;j=+p[d>>3];k=+p[e>>3];l=c+-1|0;m=(j+ +p[d+(l<<3)>>3])*.5;n=(k+ +p[e+(l<<3)>>3])*.5;o=(n-k)*.17632698070846498;p[h>>3]=m+o;k=(j-m)*.17632698070846498;p[i>>3]=n+k;ah(g,h,i,1,d,e,c,2)|0;if(+p[g>>3]!=0.0){p[a>>3]=m-o;q=n-k;p[b>>3]=q;r=f;return 1}else{p[a>>3]=+p[h>>3];q=+p[i>>3];p[b>>3]=q;r=f;return 1}return 0}function eh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0;d=k[a>>2]|0;if((b|0)>0)e=0;else return 1;do{a=e*3|0;f=d+(a<<2)|0;g=k[f>>2]|0;h=d+(a+1<<2)|0;i=k[h>>2]|0;j=(k[d+(a+2<<2)>>2]|0)*3|0;a=k[c+(j+-3<<2)>>2]|0;do if((a|0)==(g|0)){if((k[c+(j+-1<<2)>>2]|0)==(i|0)){k[f>>2]=i;k[h>>2]=g}}else{l=k[c+(j+-2<<2)>>2]|0;if((l|0)==(g|0)){if((a|0)!=(i|0))break;k[f>>2]=i;k[h>>2]=g;break}else{if((l|0)!=(i|0))break;k[f>>2]=i;k[h>>2]=g;break}}while(0);e=e+1|0}while((e|0)!=(b|0));return 1}function fh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if((d|0)>0)e=0;else{f=-1;return f|0}while(1){g=e*3|0;h=k[c+(g<<2)>>2]|0;if(!(((h|0)!=(a|0)?(k[c+(g+1<<2)>>2]|0)!=(a|0):0)?(k[c+(g+2<<2)>>2]|0)!=(a|0):0)){if((h|0)==(b|0)){f=e;i=9;break}if((k[c+(g+1<<2)>>2]|0)==(b|0)){f=e;i=9;break}if((k[c+(g+2<<2)>>2]|0)==(b|0)){f=e;i=9;break}}e=e+1|0;if((e|0)>=(d|0)){f=-1;i=9;break}}if((i|0)==9)return f|0;return 0}function gh(a){a=a|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+16>>2]=0;k[a+24>>2]=0;k[a+20>>2]=0;k[a+12>>2]=-1;k[a+28>>2]=0;k[a+32>>2]=0;return}function hh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0;b=r;r=r+16|0;c=b;d=Qqa(36)|0;e=k[a+12>>2]|0;k[d>>2]=0;f=d+4|0;k[f>>2]=0;g=d+8|0;k[g>>2]=0;k[d+12>>2]=e;e=d+16|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;h=a+16|0;i=k[h>>2]|0;k[e>>2]=i;e=a+24|0;j=k[e>>2]|0;k[d+24>>2]=j;k[d+20>>2]=k[a+20>>2];l=k[a>>2]|0;m=a+4|0;if(l>>>0<(k[m>>2]|0)>>>0){n=l;do{l=k[n>>2]|0;o=Hc[k[(k[l>>2]|0)+24>>2]&511](l)|0;k[c>>2]=o;l=k[f>>2]|0;if((l|0)==(k[g>>2]|0))uh(d,c);else{k[l>>2]=o;k[f>>2]=(k[f>>2]|0)+4}n=n+4|0}while(n>>>0<(k[m>>2]|0)>>>0);p=k[h>>2]|0;q=k[e>>2]|0}else{p=i;q=j}j=(q|0)>0&(p|0)!=0;if(j?(p=k[a+32>>2]|0,(p|0)!=0):0){i=Rqa(q>>>0>1073741823?-1:q<<2)|0;k[d+32>>2]=i;if(!q)s=14;else{e=0;do{k[i+(e<<2)>>2]=k[p+(e<<2)>>2];e=e+1|0}while((e|0)!=(q|0));s=13}}else{k[d+32>>2]=0;s=13}if((s|0)==13?j:0)s=14;if((s|0)==14?(s=k[a+28>>2]|0,(s|0)!=0):0){a=Rqa(q>>>0>1073741823?-1:q<<2)|0;k[d+28>>2]=a;if(!q){r=b;return d|0}else t=0;do{k[a+(t<<2)>>2]=k[s+(t<<2)>>2];t=t+1|0}while((t|0)!=(q|0));r=b;return d|0}k[d+28>>2]=0;r=b;return d|0}function ih(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=r;r=r+16|0;d=c;k[d>>2]=b;e=a+4|0;f=k[e>>2]|0;if((f|0)==(k[a+8>>2]|0)){uh(a,d);r=c;return 1}else{k[f>>2]=b;k[e>>2]=(k[e>>2]|0)+4;r=c;return 1}return 0}function jh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;b=a+4|0;c=k[b>>2]|0;d=k[a>>2]|0;if(d>>>0<c>>>0){e=d;f=c;while(1){f=f+-4|0;g=k[f>>2]|0;if(!g)h=e;else{Ec[k[(k[g>>2]|0)+4>>2]&1023](g);h=k[a>>2]|0}if(h>>>0>=f>>>0){i=h;break}else e=h}j=k[b>>2]|0;l=i}else{j=c;l=d}if((j|0)!=(l|0))k[b>>2]=j+(~((j+-4-l|0)>>>2)<<2);l=a+28|0;j=k[l>>2]|0;if(j)Tqa(j);k[l>>2]=0;l=a+32|0;j=k[l>>2]|0;if(j)Tqa(j);k[l>>2]=0;l=k[a>>2]|0;if(!l)return;a=k[b>>2]|0;if((a|0)!=(l|0))k[b>>2]=a+(~((a+-4-l|0)>>>2)<<2);Sqa(l);return}function kh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;b=a+4|0;c=k[b>>2]|0;d=k[a>>2]|0;if(d>>>0<c>>>0){e=d;f=c;while(1){f=f+-4|0;g=k[f>>2]|0;if(!g)h=e;else{Ec[k[(k[g>>2]|0)+4>>2]&1023](g);h=k[a>>2]|0}if(h>>>0>=f>>>0){i=h;break}else e=h}j=k[b>>2]|0;l=i}else{j=c;l=d}if((j|0)==(l|0))return;k[b>>2]=j+(~((j+-4-l|0)>>>2)<<2);return}function lh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0;e=r;r=r+528|0;f=e+516|0;g=e+272|0;h=e+504|0;j=e+492|0;m=e+480|0;n=e+136|0;o=e+468|0;p=e+456|0;q=e+444|0;s=e;t=e+432|0;u=e+420|0;v=e+408|0;w=(d|0)==0;x=(d|0)==2;y=(d&-3|0)==0;z=a+4|0;if(!y){A=k[z>>2]|0;C=k[a>>2]|0;if(C>>>0<A>>>0){D=A;E=C;while(1){D=D+-4|0;F=k[D>>2]|0;if(!F)G=E;else{Ec[k[(k[F>>2]|0)+4>>2]&1023](F);G=k[a>>2]|0}if(G>>>0>=D>>>0){H=G;break}else E=G}I=k[z>>2]|0;J=H}else{I=A;J=C}if((I|0)==(J|0))K=0;else{k[z>>2]=I+(~((I+-4-J|0)>>>2)<<2);K=0}}else K=(k[z>>2]|0)-(k[a>>2]|0)>>2;do if(w){J=k[b>>2]|0;i[J>>0]=33;i[J+1>>0]=2;i[J+2>>0]=0;i[J+3>>0]=0;J=(k[b>>2]|0)+4|0;k[b>>2]=J;I=a+12|0;C=l[I>>0]|l[I+1>>0]<<8|l[I+2>>0]<<16|l[I+3>>0]<<24;i[J>>0]=C;i[J+1>>0]=C>>8;i[J+2>>0]=C>>16;i[J+3>>0]=C>>24;C=(k[b>>2]|0)+4|0;k[b>>2]=C;J=a+16|0;I=l[J>>0]|l[J+1>>0]<<8|l[J+2>>0]<<16|l[J+3>>0]<<24;i[C>>0]=I;i[C+1>>0]=I>>8;i[C+2>>0]=I>>16;i[C+3>>0]=I>>24;I=(k[b>>2]|0)+4|0;k[b>>2]=I;C=a+20|0;J=l[C>>0]|l[C+1>>0]<<8|l[C+2>>0]<<16|l[C+3>>0]<<24;i[I>>0]=J;i[I+1>>0]=J>>8;i[I+2>>0]=J>>16;i[I+3>>0]=J>>24;J=(k[b>>2]|0)+4|0;k[b>>2]=J;I=a+24|0;C=l[I>>0]|l[I+1>>0]<<8|l[I+2>>0]<<16|l[I+3>>0]<<24;i[J>>0]=C;i[J+1>>0]=C>>8;i[J+2>>0]=C>>16;i[J+3>>0]=C>>24;k[b>>2]=(k[b>>2]|0)+4}else{if(x){k[c>>2]=(k[c>>2]|0)+20;break}if((d|0)==1){C=(k[b>>2]|0)+4|0;k[b>>2]=C;J=a+12|0;I=l[C>>0]|l[C+1>>0]<<8|l[C+2>>0]<<16|l[C+3>>0]<<24;i[J>>0]=I;i[J+1>>0]=I>>8;i[J+2>>0]=I>>16;i[J+3>>0]=I>>24;I=(k[b>>2]|0)+4|0;k[b>>2]=I;J=a+16|0;C=l[I>>0]|l[I+1>>0]<<8|l[I+2>>0]<<16|l[I+3>>0]<<24;i[J>>0]=C;i[J+1>>0]=C>>8;i[J+2>>0]=C>>16;i[J+3>>0]=C>>24;C=(k[b>>2]|0)+4|0;k[b>>2]=C;J=a+20|0;I=l[C>>0]|l[C+1>>0]<<8|l[C+2>>0]<<16|l[C+3>>0]<<24;i[J>>0]=I;i[J+1>>0]=I>>8;i[J+2>>0]=I>>16;i[J+3>>0]=I>>24;I=(k[b>>2]|0)+4|0;k[b>>2]=I;J=a+24|0;C=l[I>>0]|l[I+1>>0]<<8|l[I+2>>0]<<16|l[I+3>>0]<<24;i[J>>0]=C;i[J+1>>0]=C>>8;i[J+2>>0]=C>>16;i[J+3>>0]=C>>24;k[b>>2]=(k[b>>2]|0)+4;break}C=g+56|0;J=g+4|0;k[g>>2]=27524;k[C>>2]=27544;B=0;wa(508,g+56|0,J|0);I=B;B=0;if(I&1){I=Rb()|0;L=Q;M=I;vva(C);Qb(M|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[C>>2]=27488;B=0;va(448,J|0);I=B;B=0;do if(I&1){A=Rb()|0;N=Q;O=A}else{k[J>>2]=27560;A=g+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,J|0,f|0);H=B;B=0;if(H&1){H=Rb()|0;G=Q;Yua(f);Yua(A);Ava(J);N=G;O=H;break}Yua(f);B=0;H=Ia(40,g|0,143951,43)|0;G=B;B=0;a:do if(!(G&1)?(B=0,Xa(239,H|0,0)|0,E=B,B=0,!(E&1)):0){E=Ab(20)|0;B=0;eb(502,h|0,65122,73);D=B;B=0;do if(!(D&1)){B=0;eb(502,j|0,149525,8);F=B;B=0;if(F&1){F=Rb()|0;P=Q;Yua(h);R=P;S=F;break}B=0;wa(510,m|0,J|0);F=B;B=0;if(F&1){F=Rb()|0;T=Q;U=F;V=1}else{B=0;ua(163,E|0,h|0,j|0,107,m|0);F=B;B=0;if(F&1)W=1;else{B=0;eb(503,E|0,1240,229);B=0;W=0}F=Rb()|0;P=Q;Yua(m);T=P;U=F;V=W}Yua(j);Yua(h);if(V){R=T;S=U}else{X=T;Y=U;break a}}else{F=Rb()|0;R=Q;S=F}while(0);zb(E|0);X=R;Y=S}else Z=28;while(0);if((Z|0)==28){H=Rb()|0;X=Q;Y=H}k[g>>2]=27468;k[C>>2]=27488;k[J>>2]=27560;Yua(A);Ava(J);vva(C);_=X;$=Y;Qb($|0)}while(0);L=N;M=O;vva(C);Qb(M|0)}while(0);if(y){if(((k[a+16>>2]|0)!=0?(k[a+24>>2]|0)>0:0)?(y=k[a+32>>2]|0,(y|0)!=0):0){M=a+28|0;aa=M;ba=(k[M>>2]|0)==0;ca=y}else{y=a+28|0;k[y>>2]=0;k[a+32>>2]=0;aa=y;ba=1;ca=0}do if(!w)if(x){y=(k[c>>2]|0)+1|0;k[c>>2]=y;if(ba)da=y;else{M=y+(k[a+24>>2]<<2)|0;k[c>>2]=M;da=M}M=da+1|0;k[c>>2]=M;if(!ca)ea=M;else{y=M+(k[a+24>>2]<<2)|0;k[c>>2]=y;ea=y}k[c>>2]=ea+4;break}else{y=k[b>>2]|0;M=i[y>>0]|0;O=y+1|0;k[b>>2]=O;if(!(M&1)){M=k[a+24>>2]|0;y=Rqa(M>>>0>1073741823?-1:M<<2)|0;k[aa>>2]=y;N=k[b>>2]|0;L=M<<2;TEa(y|0,N|0,L|0)|0;y=N+L|0;k[b>>2]=y;fa=y}else fa=O;O=i[fa>>0]|0;y=fa+1|0;k[b>>2]=y;if(!(O&1)){O=k[a+24>>2]|0;L=Rqa(O>>>0>1073741823?-1:O<<2)|0;k[a+32>>2]=L;N=k[b>>2]|0;M=O<<2;TEa(L|0,N|0,M|0)|0;L=N+M|0;k[b>>2]=L;ga=L}else ga=y;k[b>>2]=ga+4;break}else{i[k[b>>2]>>0]=ba&1;y=(k[b>>2]|0)+1|0;k[b>>2]=y;if(ba)ha=y;else{L=a+24|0;TEa(y|0,k[aa>>2]|0,k[L>>2]<<2|0)|0;y=(k[b>>2]|0)+(k[L>>2]<<2)|0;k[b>>2]=y;ha=y}y=a+32|0;L=(k[y>>2]|0)==0;i[ha>>0]=L&1;M=(k[b>>2]|0)+1|0;k[b>>2]=M;if(L)ia=M;else{L=a+24|0;TEa(M|0,k[y>>2]|0,k[L>>2]<<2|0)|0;y=(k[b>>2]|0)+(k[L>>2]<<2)|0;k[b>>2]=y;ia=y}i[ia>>0]=K;i[ia+1>>0]=K>>8;i[ia+2>>0]=K>>16;i[ia+3>>0]=K>>24;k[b>>2]=(k[b>>2]|0)+4}while(0);ia=k[a>>2]|0;if(ia>>>0>=(k[z>>2]|0)>>>0){r=e;return}if(w){ha=ia;do{aa=k[ha>>2]|0;ba=Hc[k[(k[aa>>2]|0)+20>>2]&511](aa)|0;aa=k[b>>2]|0;i[aa>>0]=ba;i[aa+1>>0]=ba>>8;i[aa+2>>0]=ba>>16;i[aa+3>>0]=ba>>24;k[b>>2]=(k[b>>2]|0)+4;ba=k[ha>>2]|0;rd[k[(k[ba>>2]|0)+28>>2]&511](ba,b,c,0);ha=ha+4|0}while(ha>>>0<(k[z>>2]|0)>>>0);r=e;return}if(x){ha=ia;do{ba=k[ha>>2]|0;Hc[k[(k[ba>>2]|0)+20>>2]&511](ba)|0;k[c>>2]=(k[c>>2]|0)+4;ba=k[ha>>2]|0;rd[k[(k[ba>>2]|0)+28>>2]&511](ba,b,c,2);ha=ha+4|0}while(ha>>>0<(k[z>>2]|0)>>>0);r=e;return}else{ha=ia;do{ia=k[ha>>2]|0;Hc[k[(k[ia>>2]|0)+20>>2]&511](ia)|0;k[b>>2]=(k[b>>2]|0)+4;ia=k[ha>>2]|0;rd[k[(k[ia>>2]|0)+28>>2]&511](ia,b,c,d);ha=ha+4|0}while(ha>>>0<(k[z>>2]|0)>>>0);r=e;return}}ha=a+28|0;ia=(k[ha>>2]|0)==0;do if(w){i[k[b>>2]>>0]=ia&1;ba=(k[b>>2]|0)+1|0;k[b>>2]=ba;if(ia)ja=ba;else{aa=a+24|0;TEa(ba|0,k[ha>>2]|0,k[aa>>2]<<2|0)|0;ba=(k[b>>2]|0)+(k[aa>>2]<<2)|0;k[b>>2]=ba;ja=ba}ba=a+32|0;aa=(k[ba>>2]|0)==0;i[ja>>0]=aa&1;ga=(k[b>>2]|0)+1|0;k[b>>2]=ga;if(aa)ka=ba;else{aa=a+24|0;TEa(ga|0,k[ba>>2]|0,k[aa>>2]<<2|0)|0;k[b>>2]=(k[b>>2]|0)+(k[aa>>2]<<2);ka=ba}}else if(x){ba=(k[c>>2]|0)+1|0;k[c>>2]=ba;if(ia)la=ba;else{aa=ba+(k[a+24>>2]<<2)|0;k[c>>2]=aa;la=aa}aa=a+32|0;ba=(k[aa>>2]|0)==0;ga=la+1|0;k[c>>2]=ga;if(ba){ka=aa;break}k[c>>2]=ga+(k[a+24>>2]<<2);ka=aa;break}else{aa=k[b>>2]|0;ga=i[aa>>0]|0;ba=aa+1|0;k[b>>2]=ba;if(!(ga&1)){ga=k[a+24>>2]|0;aa=Rqa(ga>>>0>1073741823?-1:ga<<2)|0;k[ha>>2]=aa;fa=k[b>>2]|0;ea=ga<<2;TEa(aa|0,fa|0,ea|0)|0;aa=fa+ea|0;k[b>>2]=aa;ma=aa}else ma=ba;ba=a+32|0;aa=i[ma>>0]|0;k[b>>2]=ma+1;if(aa&1){ka=ba;break}aa=k[a+24>>2]|0;ea=Rqa(aa>>>0>1073741823?-1:aa<<2)|0;k[ba>>2]=ea;fa=k[b>>2]|0;ga=aa<<2;TEa(ea|0,fa|0,ga|0)|0;k[b>>2]=fa+ga;ka=ba;break}while(0);if(!((k[a+16>>2]|0)!=0?(k[a+24>>2]|0)>0:0)){k[ha>>2]=0;k[ka>>2]=0}do if(w){ka=k[b>>2]|0;i[ka>>0]=K;i[ka+1>>0]=K>>8;i[ka+2>>0]=K>>16;i[ka+3>>0]=K>>24;k[b>>2]=(k[b>>2]|0)+4;na=K}else{if(x){k[c>>2]=(k[c>>2]|0)+4;na=K;break}if((d|0)==1){ka=k[b>>2]|0;ha=l[ka>>0]|l[ka+1>>0]<<8|l[ka+2>>0]<<16|l[ka+3>>0]<<24;k[b>>2]=ka+4;na=ha;break}ha=n+56|0;ka=n+4|0;k[n>>2]=27524;k[ha>>2]=27544;B=0;wa(508,n+56|0,ka|0);ma=B;B=0;if(ma&1){ma=Rb()|0;oa=Q;pa=ma;vva(ha);Qb(pa|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[ha>>2]=27488;B=0;va(448,ka|0);ma=B;B=0;do if(ma&1){la=Rb()|0;qa=Q;ra=la}else{k[ka>>2]=27560;la=n+36|0;k[la>>2]=0;k[la+4>>2]=0;k[la+8>>2]=0;k[la+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,ka|0,f|0);ia=B;B=0;if(ia&1){ia=Rb()|0;ja=Q;Yua(f);Yua(la);Ava(ka);qa=ja;ra=ia;break}Yua(f);B=0;ia=Ia(40,n|0,143951,43)|0;ja=B;B=0;b:do if(!(ja&1)?(B=0,Xa(239,ia|0,0)|0,ba=B,B=0,!(ba&1)):0){ba=Ab(20)|0;B=0;eb(502,o|0,65122,73);ga=B;B=0;do if(!(ga&1)){B=0;eb(502,p|0,149525,8);fa=B;B=0;if(fa&1){fa=Rb()|0;ea=Q;Yua(o);sa=fa;ta=ea;break}B=0;wa(510,q|0,ka|0);ea=B;B=0;if(ea&1){ea=Rb()|0;xa=1;za=Q;Aa=ea}else{B=0;ua(163,ba|0,o|0,p|0,138,q|0);ea=B;B=0;if(ea&1)Ba=1;else{B=0;eb(503,ba|0,1240,229);B=0;Ba=0}ea=Rb()|0;fa=Q;Yua(q);xa=Ba;za=fa;Aa=ea}Yua(p);Yua(o);if(xa){sa=Aa;ta=za}else{Ca=za;Da=Aa;break b}}else{ea=Rb()|0;sa=ea;ta=Q}while(0);zb(ba|0);Ca=ta;Da=sa}else Z=106;while(0);if((Z|0)==106){ia=Rb()|0;Ca=Q;Da=ia}k[n>>2]=27468;k[ha>>2]=27488;k[ka>>2]=27560;Yua(la);Ava(ka);vva(ha);_=Ca;$=Da;Qb($|0)}while(0);oa=qa;pa=ra;vva(ha);Qb(pa|0)}while(0);if((na|0)<=0){r=e;return}pa=a+8|0;ra=k[7517]|0;qa=k[7834]|0;oa=k[7671]|0;Da=k[7369]|0;Ca=0;n=0;c:while(1){do if(!w)if(x){k[c>>2]=(k[c>>2]|0)+4;Ea=n;break}else{sa=k[b>>2]|0;ta=l[sa>>0]|l[sa+1>>0]<<8|l[sa+2>>0]<<16|l[sa+3>>0]<<24;k[b>>2]=sa+4;Ea=ta;break}else{ta=k[b>>2]|0;i[ta>>0]=n;i[ta+1>>0]=n>>8;i[ta+2>>0]=n>>16;i[ta+3>>0]=n>>24;k[b>>2]=(k[b>>2]|0)+4;Ea=n}while(0);do switch(Ea|0){case 587:{ha=Qqa(144)|0;B=0;va(454,ha|0);ta=B;B=0;if(ta&1){Fa=ha;Z=127;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 627:{ha=Qqa(88)|0;B=0;va(455,ha|0);ta=B;B=0;if(ta&1){Ga=ha;Z=133;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 583:{ha=Qqa(24)|0;B=0;va(456,ha|0);ta=B;B=0;if(ta&1){Ha=ha;Z=139;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 586:{ha=Qqa(376)|0;B=0;va(457,ha|0);ta=B;B=0;if(ta&1){Ja=ha;Z=145;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 615:{ha=Qqa(32)|0;B=0;va(458,ha|0);ta=B;B=0;if(ta&1){Ka=ha;Z=151;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 614:{ha=Qqa(40)|0;B=0;va(459,ha|0);ta=B;B=0;if(ta&1){La=ha;Z=157;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 616:{ha=Qqa(36)|0;B=0;va(460,ha|0);ta=B;B=0;if(ta&1){Ma=ha;Z=163;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 621:{ha=Qqa(72)|0;B=0;va(461,ha|0);ta=B;B=0;if(ta&1){Na=ha;Z=174;break c}ta=ha+48|0;B=0;va(462,ta|0);sa=B;B=0;if(sa&1){Oa=ha;Pa=ha;Z=167;break c}B=0;sa=B;B=0;if(sa&1){Qa=ha;Ra=ha;Sa=ta;Z=168;break c}k[ha>>2]=30040;k[ha+4>>2]=30604;rd[ra&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 625:{ha=Qqa(76)|0;B=0;va(461,ha|0);ta=B;B=0;if(ta&1){Ta=ha;Z=186;break c}ta=ha+48|0;B=0;va(462,ta|0);sa=B;B=0;if(sa&1){Ua=ha;Va=ha;Z=179;break c}B=0;sa=B;B=0;if(sa&1){Wa=ha;Ya=ha;Za=ta;Z=180;break c}k[ha>>2]=31308;k[ha+4>>2]=31872;rd[qa&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 623:{ha=Qqa(72)|0;B=0;va(461,ha|0);ta=B;B=0;if(ta&1){_a=ha;Z=198;break c}ta=ha+48|0;B=0;va(462,ta|0);sa=B;B=0;if(sa&1){$a=ha;ab=ha;Z=191;break c}B=0;sa=B;B=0;if(sa&1){bb=ha;cb=ha;db=ta;Z=192;break c}k[ha>>2]=30656;k[ha+4>>2]=31220;rd[oa&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 619:{ha=Qqa(72)|0;B=0;va(461,ha|0);ta=B;B=0;if(ta&1){fb=ha;Z=210;break c}ta=ha+48|0;B=0;va(462,ta|0);sa=B;B=0;if(sa&1){gb=ha;hb=ha;Z=203;break c}B=0;sa=B;B=0;if(sa&1){ib=ha;jb=ha;kb=ta;Z=204;break c}k[ha>>2]=29448;k[ha+4>>2]=30012;rd[Da&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 556:{ha=Qqa(12)|0;B=0;va(463,ha|0);ta=B;B=0;if(ta&1){lb=ha;Z=217;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 561:{ha=Qqa(16)|0;B=0;va(464,ha|0);ta=B;B=0;if(ta&1){mb=ha;Z=223;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 574:{ha=Qqa(12)|0;B=0;va(465,ha|0);ta=B;B=0;if(ta&1){nb=ha;Z=229;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 559:{ha=Qqa(32)|0;B=0;va(466,ha|0);ta=B;B=0;if(ta&1){ob=ha;Z=235;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 697:{ha=Qqa(24)|0;B=0;va(467,ha|0);ta=B;B=0;if(ta&1){pb=ha;Z=241;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 622:{ha=Qqa(16)|0;B=0;va(468,ha|0);ta=B;B=0;if(ta&1){qb=ha;Z=247;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 626:{ha=Qqa(16)|0;B=0;va(469,ha|0);ta=B;B=0;if(ta&1){rb=ha;Z=253;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 624:{ha=Qqa(16)|0;B=0;va(470,ha|0);ta=B;B=0;if(ta&1){sb=ha;Z=259;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 620:{ha=Qqa(16)|0;B=0;va(471,ha|0);ta=B;B=0;if(ta&1){tb=ha;Z=265;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 610:{ha=Qqa(128)|0;B=0;va(472,ha|0);ta=B;B=0;if(ta&1){ub=ha;Z=271;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 588:{ha=Qqa(48)|0;B=0;va(473,ha|0);ta=B;B=0;if(ta&1){vb=ha;Z=277;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 593:{ha=Qqa(52)|0;B=0;va(474,ha|0);ta=B;B=0;if(ta&1){wb=ha;Z=283;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}case 594:{ha=Qqa(28)|0;B=0;va(475,ha|0);ta=B;B=0;if(ta&1){xb=ha;Z=289;break c}rd[k[(k[ha>>2]|0)+28>>2]&511](ha,b,c,d);k[f>>2]=ha;ta=k[z>>2]|0;if((ta|0)==(k[pa>>2]|0))uh(a,f);else{k[ta>>2]=ha;k[z>>2]=(k[z>>2]|0)+4}break}default:{yb=Ea;Z=290;break c}}while(0);Ca=Ca+1|0;if((Ca|0)>=(na|0)){Z=318;break}else n=Ea}switch(Z|0){case 127:{Ea=Rb()|0;n=Q;Sqa(Fa);_=n;$=Ea;Qb($|0);break}case 133:{Ea=Rb()|0;n=Q;Sqa(Ga);_=n;$=Ea;Qb($|0);break}case 139:{Ea=Rb()|0;n=Q;Sqa(Ha);_=n;$=Ea;Qb($|0);break}case 145:{Ea=Rb()|0;n=Q;Sqa(Ja);_=n;$=Ea;Qb($|0);break}case 151:{Ea=Rb()|0;n=Q;Sqa(Ka);_=n;$=Ea;Qb($|0);break}case 157:{Ea=Rb()|0;n=Q;Sqa(La);_=n;$=Ea;Qb($|0);break}case 163:{Ea=Rb()|0;n=Q;Sqa(Ma);_=n;$=Ea;Qb($|0);break}case 167:{Ea=Rb()|0;Bb=Q;Cb=Ea;Db=Pa;Eb=Oa;Z=169;break}case 168:{Oa=Rb()|0;Pa=Q;Tq(Sa);Bb=Pa;Cb=Oa;Db=Ra;Eb=Qa;Z=169;break}case 174:{Qa=Rb()|0;Fb=Na;Gb=Q;Hb=Qa;Z=175;break}case 179:{Qa=Rb()|0;Ib=Q;Jb=Qa;Kb=Va;Lb=Ua;Z=181;break}case 180:{Ua=Rb()|0;Va=Q;Tq(Za);Ib=Va;Jb=Ua;Kb=Ya;Lb=Wa;Z=181;break}case 186:{Wa=Rb()|0;Mb=Ta;Nb=Q;Ob=Wa;Z=187;break}case 191:{Wa=Rb()|0;Pb=Q;Sb=Wa;Tb=ab;Ub=$a;Z=193;break}case 192:{$a=Rb()|0;ab=Q;Tq(db);Pb=ab;Sb=$a;Tb=cb;Ub=bb;Z=193;break}case 198:{bb=Rb()|0;Vb=_a;Wb=Q;Xb=bb;Z=199;break}case 203:{bb=Rb()|0;Yb=Q;Zb=bb;_b=hb;$b=gb;Z=205;break}case 204:{gb=Rb()|0;hb=Q;Tq(kb);Yb=hb;Zb=gb;_b=jb;$b=ib;Z=205;break}case 210:{ib=Rb()|0;ac=fb;bc=Q;cc=ib;Z=211;break}case 217:{ib=Rb()|0;fb=Q;Sqa(lb);_=fb;$=ib;Qb($|0);break}case 223:{ib=Rb()|0;fb=Q;Sqa(mb);_=fb;$=ib;Qb($|0);break}case 229:{ib=Rb()|0;fb=Q;Sqa(nb);_=fb;$=ib;Qb($|0);break}case 235:{ib=Rb()|0;fb=Q;Sqa(ob);_=fb;$=ib;Qb($|0);break}case 241:{ib=Rb()|0;fb=Q;Sqa(pb);_=fb;$=ib;Qb($|0);break}case 247:{ib=Rb()|0;fb=Q;Sqa(qb);_=fb;$=ib;Qb($|0);break}case 253:{ib=Rb()|0;fb=Q;Sqa(rb);_=fb;$=ib;Qb($|0);break}case 259:{ib=Rb()|0;fb=Q;Sqa(sb);_=fb;$=ib;Qb($|0);break}case 265:{ib=Rb()|0;fb=Q;Sqa(tb);_=fb;$=ib;Qb($|0);break}case 271:{ib=Rb()|0;fb=Q;Sqa(ub);_=fb;$=ib;Qb($|0);break}case 277:{ib=Rb()|0;fb=Q;Sqa(vb);_=fb;$=ib;Qb($|0);break}case 283:{ib=Rb()|0;fb=Q;Sqa(wb);_=fb;$=ib;Qb($|0);break}case 289:{ib=Rb()|0;fb=Q;Sqa(xb);_=fb;$=ib;Qb($|0);break}case 290:{ib=s+56|0;fb=s+4|0;k[s>>2]=27524;k[ib>>2]=27544;B=0;wa(508,s+56|0,fb|0);xb=B;B=0;if(xb&1){xb=Rb()|0;dc=Q;ec=xb;vva(ib);Qb(ec|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[ib>>2]=27488;B=0;va(448,fb|0);xb=B;B=0;do if(xb&1){wb=Rb()|0;fc=Q;gc=wb}else{k[fb>>2]=27560;wb=s+36|0;k[wb>>2]=0;k[wb+4>>2]=0;k[wb+8>>2]=0;k[wb+12>>2]=0;k[s+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,fb|0,f|0);vb=B;B=0;if(vb&1){vb=Rb()|0;ub=Q;Yua(f);Yua(wb);Ava(fb);fc=ub;gc=vb;break}Yua(f);B=0;vb=Ia(40,s|0,65196,31)|0;ub=B;B=0;d:do if(((((!(ub&1)?(B=0,tb=Xa(242,vb|0,yb|0)|0,sb=B,B=0,!(sb&1)):0)?(B=0,sb=Ia(40,tb|0,160061,2)|0,tb=B,B=0,!(tb&1)):0)?(B=0,tb=ya(427,yb|0)|0,rb=B,B=0,!(rb&1)):0)?(rb=Lta(tb)|0,B=0,qb=Ia(40,sb|0,tb|0,rb|0)|0,rb=B,B=0,!(rb&1)):0)?(B=0,Xa(239,qb|0,0)|0,qb=B,B=0,!(qb&1)):0){qb=Ab(20)|0;B=0;eb(502,t|0,65122,73);rb=B;B=0;do if(!(rb&1)){B=0;eb(502,u|0,149525,8);tb=B;B=0;if(tb&1){tb=Rb()|0;sb=Q;Yua(t);hc=tb;ic=sb;break}B=0;wa(510,v|0,fb|0);sb=B;B=0;if(sb&1){sb=Rb()|0;jc=1;kc=Q;lc=sb}else{B=0;ua(163,qb|0,t|0,u|0,295,v|0);sb=B;B=0;if(sb&1)mc=1;else{B=0;eb(503,qb|0,1240,229);B=0;mc=0}sb=Rb()|0;tb=Q;Yua(v);jc=mc;kc=tb;lc=sb}Yua(u);Yua(t);if(jc){hc=lc;ic=kc}else{nc=kc;oc=lc;break d}}else{sb=Rb()|0;hc=sb;ic=Q}while(0);zb(qb|0);nc=ic;oc=hc}else Z=309;while(0);if((Z|0)==309){vb=Rb()|0;nc=Q;oc=vb}k[s>>2]=27468;k[ib>>2]=27488;k[fb>>2]=27560;Yua(wb);Ava(fb);vva(ib);_=nc;$=oc;Qb($|0)}while(0);dc=fc;ec=gc;vva(ib);Qb(ec|0);break}case 318:{r=e;return}}if((Z|0)==169){Qo(Db);Fb=Eb;Gb=Bb;Hb=Cb;Z=175}else if((Z|0)==181){Qo(Kb);Mb=Lb;Nb=Ib;Ob=Jb;Z=187}else if((Z|0)==193){Qo(Tb);Vb=Ub;Wb=Pb;Xb=Sb;Z=199}else if((Z|0)==205){Qo(_b);ac=$b;bc=Yb;cc=Zb;Z=211}if((Z|0)==175){Sqa(Fb);_=Gb;$=Hb;Qb($|0)}else if((Z|0)==187){Sqa(Mb);_=Nb;$=Ob;Qb($|0)}else if((Z|0)==199){Sqa(Vb);_=Wb;$=Xb;Qb($|0)}else if((Z|0)==211){Sqa(ac);_=bc;$=cc;Qb($|0)}}function mh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;if(!b)return 1;c=k[a>>2]|0;d=a+4|0;a=k[d>>2]|0;e=a;a:do if((c|0)==(a|0))f=c;else{g=c;while(1){if((k[g>>2]|0)==(b|0)){f=g;break a}g=g+4|0;if((g|0)==(a|0)){f=a;break}}}while(0);a=k[f>>2]|0;if(!a)h=e;else{Ec[k[(k[a>>2]|0)+4>>2]&1023](a);h=k[d>>2]|0}a=f+4|0;e=h-a|0;UEa(f|0,a|0,e|0)|0;a=f+(e>>2<<2)|0;e=k[d>>2]|0;if((e|0)==(a|0))return 1;k[d>>2]=e+(~((e+-4-a|0)>>>2)<<2);return 1}function nh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;b=r;r=r+176|0;c=b+152|0;d=b+16|0;e=b;f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,d|0,65228,14)|0;p=B;B=0;if(((!(p&1)?(p=a+4|0,B=0,q=Xa(243,o|0,(k[p>>2]|0)-(k[a>>2]|0)>>2|0)|0,o=B,B=0,!(o&1)):0)?(B=0,Ia(40,q|0,65243,9)|0,q=B,B=0,!(q&1)):0)?(B=0,wa(510,e|0,g|0),q=B,B=0,!(q&1)):0){B=0;ya(425,e|0)|0;q=B;B=0;if(q&1){q=Rb()|0;o=Q;Yua(e);s=q;t=o;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(s|0)}Yua(e);k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);o=k[a>>2]|0;if(o>>>0<(k[p>>2]|0)>>>0)u=o;else{r=b;return}do{o=k[u>>2]|0;Ec[k[(k[o>>2]|0)+12>>2]&1023](o);u=u+4|0}while(u>>>0<(k[p>>2]|0)>>>0);r=b;return}p=Rb()|0;s=p;t=Q;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(s|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function oh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;b=r;r=r+176|0;c=b+152|0;d=b+16|0;e=b;f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,d|0,65228,14)|0;p=B;B=0;if(((!(p&1)?(p=a+4|0,B=0,q=Xa(243,o|0,(k[p>>2]|0)-(k[a>>2]|0)>>2|0)|0,o=B,B=0,!(o&1)):0)?(B=0,Ia(40,q|0,65243,9)|0,q=B,B=0,!(q&1)):0)?(B=0,wa(510,e|0,g|0),q=B,B=0,!(q&1)):0){B=0;ya(425,e|0)|0;q=B;B=0;if(q&1){q=Rb()|0;o=Q;Yua(e);s=q;t=o;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(s|0)}Yua(e);k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);o=k[a>>2]|0;if(o>>>0<(k[p>>2]|0)>>>0)u=o;else{r=b;return}do{o=k[u>>2]|0;Ec[k[(k[o>>2]|0)+8>>2]&1023](o);u=u+4|0}while(u>>>0<(k[p>>2]|0)>>>0);r=b;return}p=Rb()|0;s=p;t=Q;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(s|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function ph(a,b){a=a|0;b=b|0;var c=0;c=k[(k[a>>2]|0)+(b<<2)>>2]|0;return Hc[k[(k[c>>2]|0)+20>>2]&511](c)|0}function qh(a,b){a=a|0;b=b|0;return k[(k[a>>2]|0)+(b<<2)>>2]|0}function rh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;d=r;r=r+368|0;e=d+356|0;f=d+352|0;g=d+216|0;h=d+200|0;i=d+48|0;j=d+36|0;l=d+64|0;m=d+24|0;n=d+12|0;o=d;if((k[a+16>>2]|0)!=0?(p=(k[a+4>>2]|0)-(k[a>>2]|0)>>2,p>>>0<=(k[a+24>>2]|0)>>>0):0){if(UY(f,c,k[a+28>>2]|0,p)|0){p=k[(k[a+32>>2]|0)+(k[f>>2]<<2)>>2]|0;if(!b){q=k[a>>2]|0;s=q+(p<<2)|0;t=k[s>>2]|0;r=d;return t|0}k[b>>2]=p;q=k[a>>2]|0;s=q+(p<<2)|0;t=k[s>>2]|0;r=d;return t|0}t=l+56|0;d=l+4|0;k[l>>2]=27524;k[t>>2]=27544;B=0;wa(508,l+56|0,d|0);s=B;B=0;if(s&1){s=Rb()|0;u=Q;v=s;vva(t);Qb(v|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[t>>2]=27488;B=0;va(448,d|0);s=B;B=0;do if(s&1){p=Rb()|0;w=Q;x=p}else{k[d>>2]=27560;p=l+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[l+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,d|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;b=Q;Yua(e);Yua(p);Ava(d);w=b;x=q;break}Yua(e);B=0;q=Ia(40,l|0,65316,30)|0;b=B;B=0;a:do if(((((!(b&1)?(B=0,f=Xa(242,q|0,c|0)|0,y=B,B=0,!(y&1)):0)?(B=0,y=Ia(40,f|0,65347,12)|0,f=B,B=0,!(f&1)):0)?(B=0,f=ya(427,k[a+12>>2]|0)|0,z=B,B=0,!(z&1)):0)?(z=Lta(f)|0,B=0,A=Ia(40,y|0,f|0,z|0)|0,z=B,B=0,!(z&1)):0)?(B=0,Xa(239,A|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,m|0,65122,73);z=B;B=0;do if(!(z&1)){B=0;eb(502,n|0,65302,13);f=B;B=0;if(f&1){f=Rb()|0;y=Q;Yua(m);C=f;D=y;break}B=0;wa(510,o|0,d|0);y=B;B=0;if(y&1){y=Rb()|0;E=1;F=Q;G=y}else{B=0;ua(163,A|0,m|0,n|0,403,o|0);y=B;B=0;if(y&1)H=1;else{B=0;eb(503,A|0,1240,229);B=0;H=0}y=Rb()|0;f=Q;Yua(o);E=H;F=f;G=y}Yua(n);Yua(m);if(E){C=G;D=F}else{I=F;J=G;break a}}else{y=Rb()|0;C=y;D=Q}while(0);zb(A|0);I=D;J=C}else K=46;while(0);if((K|0)==46){q=Rb()|0;I=Q;J=q}k[l>>2]=27468;k[t>>2]=27488;k[d>>2]=27560;Yua(p);Ava(d);vva(t);L=I;M=J;Qb(M|0)}while(0);u=w;v=x;vva(t);Qb(v|0)}v=g+56|0;t=g+4|0;k[g>>2]=27524;k[v>>2]=27544;B=0;wa(508,g+56|0,t|0);x=B;B=0;if(x&1){x=Rb()|0;N=Q;O=x;vva(v);Qb(O|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[v>>2]=27488;B=0;va(448,t|0);x=B;B=0;do if(x&1){w=Rb()|0;P=Q;R=w}else{k[t>>2]=27560;w=g+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,t|0,e|0);u=B;B=0;if(u&1){u=Rb()|0;J=Q;Yua(e);Yua(w);Ava(t);P=J;R=u;break}Yua(e);B=0;u=Ia(40,g|0,65253,48)|0;J=B;B=0;b:do if(!(J&1)?(B=0,Xa(239,u|0,0)|0,I=B,B=0,!(I&1)):0){I=Ab(20)|0;B=0;eb(502,h|0,65122,73);d=B;B=0;do if(!(d&1)){B=0;eb(502,i|0,65302,13);l=B;B=0;if(l&1){l=Rb()|0;C=Q;Yua(h);S=l;T=C;break}B=0;wa(510,j|0,t|0);C=B;B=0;if(C&1){C=Rb()|0;U=Q;V=C;W=1}else{B=0;ua(163,I|0,h|0,i|0,399,j|0);C=B;B=0;if(C&1)X=1;else{B=0;eb(503,I|0,1240,229);B=0;X=0}C=Rb()|0;l=Q;Yua(j);U=l;V=C;W=X}Yua(i);Yua(h);if(W){S=V;T=U}else{Y=V;Z=U;break b}}else{C=Rb()|0;S=C;T=Q}while(0);zb(I|0);Y=S;Z=T}else K=18;while(0);if((K|0)==18){u=Rb()|0;Y=u;Z=Q}k[g>>2]=27468;k[v>>2]=27488;k[t>>2]=27560;Yua(w);Ava(t);vva(v);L=Z;M=Y;Qb(M|0)}while(0);N=P;O=R;vva(v);Qb(O|0);return 0}function sh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;b=a+4|0;c=k[b>>2]|0;a:do if((c|0)!=(k[a>>2]|0)){d=a+28|0;e=k[d>>2]|0;if(e){Tqa(e);k[d>>2]=0}e=a+32|0;f=k[e>>2]|0;if(f){Tqa(f);k[e>>2]=0}f=k[b>>2]|0;g=k[a>>2]|0;h=f-g>>2;i=h>>>0>1073741823?-1:h<<2;h=Rqa(i)|0;k[d>>2]=h;h=Rqa(i)|0;k[e>>2]=h;if((f|0)==(g|0)){j=f;l=f}else{f=g;g=h;h=0;while(1){k[g+(h<<2)>>2]=h;i=k[f+(h<<2)>>2]|0;m=Hc[k[(k[i>>2]|0)+16>>2]&511](i)|0;k[(k[d>>2]|0)+(h<<2)>>2]=m;m=h+1|0;i=k[b>>2]|0;n=k[a>>2]|0;if(m>>>0>=i-n>>2>>>0){j=i;l=n;break a}f=n;g=k[e>>2]|0;h=m}}}else{j=c;l=c}while(0);k[a+24>>2]=j-l>>2;k[a+16>>2]=1;return}function th(a){a=a|0;return (k[a+4>>2]|0)-(k[a>>2]|0)>>2|0}function uh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;c=a+4|0;d=k[a>>2]|0;e=((k[c>>2]|0)-d>>2)+1|0;if(e>>>0>1073741823){Oqa(a);f=k[a>>2]|0}else f=d;d=a+8|0;g=(k[d>>2]|0)-f|0;if(g>>2>>>0<536870911){h=g>>1;g=h>>>0<e>>>0?e:h;h=k[c>>2]|0;e=h-f>>2;if(!g){i=0;j=0;l=e;m=h}else{n=g;o=h;p=e;q=6}}else{e=k[c>>2]|0;n=1073741823;o=e;p=e-f>>2;q=6}if((q|0)==6){i=n;j=Qqa(n<<2)|0;l=p;m=o}o=j+(l<<2)|0;k[o>>2]=k[b>>2];b=m-f|0;m=o+(0-(b>>2)<<2)|0;TEa(m|0,f|0,b|0)|0;k[a>>2]=m;k[c>>2]=o+4;k[d>>2]=j+(i<<2);if(!f)return;Sqa(f);return}function vh(a){a=a|0;var b=0,c=0;b=a+8|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=k[a+20>>2]|0;if(b){Mq(b);Sqa(b)}b=k[a+24>>2]|0;if(b){_m(b);Sqa(b)}b=k[a+28>>2]|0;if(b){kn(b);Sqa(b)}b=k[a+32>>2]|0;if(b){jh(b);Sqa(b)}b=k[a+36>>2]|0;if(b){$K(b);Sqa(b)}b=k[a+40>>2]|0;if(b){GI(b);Sqa(b)}b=k[a+44>>2]|0;if(b){XN(b);Sqa(b)}b=k[a+48>>2]|0;if(b){Mo(b);Sqa(b)}b=k[a+16>>2]|0;if(!b)return;Ec[k[(k[b>>2]|0)+4>>2]&1023](b);return}function wh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;a=r;r=r+336|0;f=a+304|0;g=a+184|0;h=a+48|0;j=a+40|0;l=a+325|0;m=a+324|0;n=a+323|0;o=a+322|0;p=a+321|0;q=a+320|0;s=a+319|0;t=a+318|0;u=a+317|0;v=a+316|0;w=a;x=a+28|0;y=a+16|0;z=a+4|0;do switch(e|0){case 499:{Fka(d,j,128764);zka(d,f,129324);zka(d,h,132257);k[g>>2]=497;k[g+4>>2]=500;if(!(i[f>>0]|0))A=2;else{k[g+8>>2]=498;A=3}k[g+(A<<2)>>2]=493;k[g+(A+1<<2)>>2]=515;C=A+3|0;k[g+(A+2<<2)>>2]=517;if((k[j>>2]&-5|0)==754){k[g+(C<<2)>>2]=524;D=A|4}else D=C;E=D;break}case 518:{zka(d,f,129324);zka(d,h,135466);k[g>>2]=497;k[g+4>>2]=500;if(!(i[f>>0]|0))F=2;else{k[g+8>>2]=498;F=3}C=F+1|0;G=g+(F<<2)|0;if(!(i[h>>0]|0)){k[G>>2]=521;k[g+(C<<2)>>2]=509;H=F+2|0}else{k[G>>2]=501;H=C}k[g+(H<<2)>>2]=493;E=H+1|0;break}case 522:{zka(d,f,135466);if(!(i[f>>0]|0)){k[g>>2]=521;k[g+4>>2]=509;I=2}else{k[g>>2]=501;I=1}E=I;break}case 508:{k[g>>2]=504;k[g+4>>2]=505;k[g+8>>2]=506;k[g+12>>2]=493;k[g+16>>2]=492;E=5;break}case 511:{k[g>>2]=510;k[g+4>>2]=382;E=2;break}case 485:{k[g>>2]=484;E=1;break}case 487:{k[g>>2]=493;k[g+4>>2]=520;k[g+8>>2]=486;E=3;break}case 489:{k[g>>2]=484;E=1;break}case 491:{k[g>>2]=490;k[g+4>>2]=520;E=2;break}case 519:{k[g>>2]=493;E=1;break}case 494:{k[g>>2]=493;E=1;break}case 525:{k[g>>2]=526;E=1;break}case 997:{k[g>>2]=998;E=1;break}case 383:{k[g>>2]=382;E=1;break}case 495:{k[g>>2]=496;E=1;break}case 523:{zka(d,f,129324);zka(d,h,132257);zka(d,j,106786);zka(d,l,135466);zka(d,p,134882);zka(d,m,106757);zka(d,o,106728);zka(d,n,132209);zka(d,s,106828);zka(d,q,106859);zka(d,t,132238);zka(d,u,106884);zka(d,v,106809);if(!(i[o>>0]|0))J=0;else{Fka(d,w,128764);k[g>>2]=497;k[g+4>>2]=500;if(!(i[f>>0]|0))K=2;else{k[g+8>>2]=498;K=3}C=K+1|0;k[g+(K<<2)>>2]=517;if((k[w>>2]&-5|0)==754){k[g+(C<<2)>>2]=524;L=K+2|0}else L=C;J=L}do if((i[j>>0]|0)!=0?(k[d+40>>2]|0)==302:0){C=J+1|0;G=g+(J<<2)|0;if(!(i[l>>0]|0)){k[G>>2]=521;k[g+(C<<2)>>2]=509;M=J+2|0;break}else{k[G>>2]=501;M=C;break}}else M=J;while(0);if(!((i[n>>0]|i[m>>0])<<24>>24))N=M;else{k[g+(M<<2)>>2]=510;N=M+1|0}if(!(i[t>>0]|0))O=N;else{k[g+(N<<2)>>2]=382;O=N+1|0}if(!(i[p>>0]|0))P=O;else{k[g+(O<<2)>>2]=529;k[g+(O+1<<2)>>2]=531;k[g+(O+2<<2)>>2]=532;P=O+3|0}if(!(i[q>>0]|0))R=P;else{k[g+(P<<2)>>2]=504;k[g+(P+1<<2)>>2]=507;k[g+(P+2<<2)>>2]=505;k[g+(P+3<<2)>>2]=506;k[g+(P+4<<2)>>2]=492;R=P+5|0}if(!(i[s>>0]|0))S=R;else{k[g+(R<<2)>>2]=496;S=R+1|0}if(!(i[u>>0]|0))T=S;else{k[g+(S<<2)>>2]=998;T=S+1|0}if(!(i[v>>0]|0))U=T;else{k[g+(T<<2)>>2]=526;U=T+1|0}if(((k[d+40>>2]|0)+-301|0)>>>0<2){k[g+(U<<2)>>2]=515;k[g+(U+1<<2)>>2]=516;k[g+(U+2<<2)>>2]=512;k[g+(U+3<<2)>>2]=513;V=U+4|0}else V=U;k[g+(V<<2)>>2]=493;E=V+1|0;break}default:{C=h+56|0;G=h+4|0;k[h>>2]=27524;k[C>>2]=27544;B=0;wa(508,h+56|0,G|0);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Y=W;vva(C);Qb(Y|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[C>>2]=27488;B=0;va(448,G|0);W=B;B=0;do if(W&1){Z=Rb()|0;_=Q;$=Z}else{k[G>>2]=27560;Z=h+36|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,G|0,f|0);aa=B;B=0;if(aa&1){aa=Rb()|0;ba=Q;Yua(f);Yua(Z);Ava(G);_=ba;$=aa;break}Yua(f);B=0;aa=Ia(40,h|0,110535,15)|0;ba=B;B=0;if((((!(ba&1)?(B=0,ba=ya(427,e|0)|0,ca=B,B=0,!(ca&1)):0)?(ca=Lta(ba)|0,B=0,da=Ia(40,aa|0,ba|0,ca|0)|0,ca=B,B=0,!(ca&1)):0)?(B=0,ca=Ia(40,da|0,146956,19)|0,da=B,B=0,!(da&1)):0)?(B=0,Xa(239,ca|0,0)|0,ca=B,B=0,!(ca&1)):0){ca=Ab(20)|0;B=0;eb(502,x|0,65553,67);da=B;B=0;do if(!(da&1)){B=0;eb(502,y|0,65621,20);ba=B;B=0;if(ba&1){ba=Rb()|0;aa=Q;Yua(x);ea=ba;fa=aa;break}B=0;wa(510,z|0,G|0);aa=B;B=0;if(aa&1){aa=Rb()|0;ga=Q;ha=aa;ia=1}else{B=0;ua(163,ca|0,x|0,y|0,622,z|0);aa=B;B=0;if(aa&1)ja=1;else{B=0;eb(503,ca|0,1240,229);B=0;ja=0}aa=Rb()|0;ba=Q;Yua(z);ga=ba;ha=aa;ia=ja}Yua(y);Yua(x);if(ia){ea=ha;fa=ga}else{ka=ha;la=ga;k[h>>2]=27468;k[C>>2]=27488;k[G>>2]=27560;Yua(Z);Ava(G);vva(C);Qb(ka|0)}}else{aa=Rb()|0;ea=aa;fa=Q}while(0);zb(ca|0);ka=ea;la=fa;k[h>>2]=27468;k[C>>2]=27488;k[G>>2]=27560;Yua(Z);Ava(G);vva(C);Qb(ka|0)}da=Rb()|0;ka=da;la=Q;k[h>>2]=27468;k[C>>2]=27488;k[G>>2]=27560;Yua(Z);Ava(G);vva(C);Qb(ka|0)}while(0);X=_;Y=$;vva(C);Qb(Y|0)}}while(0);Y=Rqa(E>>>0>1073741823?-1:E<<2)|0;if((E|0)>0)TEa(Y|0,g|0,E<<2|0)|0;if(c)k[c>>2]=E;if(!b){Tqa(Y);r=a;return}else{k[b>>2]=Y;r=a;return}}function xh(a,b){a=a|0;b=b|0;yh(a,b,b);return}function yh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0;d=r;r=r+352|0;e=d+328|0;f=d+192|0;g=d+176|0;h=d+24|0;i=d+12|0;j=d+40|0;l=d;m=k[a>>2]|0;a:do if((m|0)>0){n=k[a+8>>2]|0;o=0;while(1){if((k[n+(o<<2)>>2]|0)==(b|0)){p=o;break}o=o+1|0;if((o|0)>=(m|0))break a}if((p|0)!=-1){k[a+12>>2]=p;o=a+44|0;oO(k[o>>2]|0,p,482);oO(k[o>>2]|0,c,477);oO(k[o>>2]|0,b,478);n=a+20|0;q=k[n>>2]|0;s=a+36|0;t=a+24|0;u=a+28|0;v=a+40|0;Nq(q,q,k[s>>2]|0,k[t>>2]|0,k[u>>2]|0,k[v>>2]|0,k[o>>2]|0);q=k[s>>2]|0;fL(q,k[n>>2]|0,q,k[t>>2]|0,k[u>>2]|0,k[v>>2]|0,k[o>>2]|0);if(!(aO(k[o>>2]|0,959)|0)){r=d;return}tO(k[o>>2]|0,c);if(!(DY()|0)){r=d;return}o=j+56|0;v=j+4|0;k[j>>2]=27524;k[o>>2]=27544;B=0;wa(508,j+56|0,v|0);u=B;B=0;if(u&1){u=Rb()|0;w=Q;x=u;vva(o);Qb(x|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[o>>2]=27488;B=0;va(448,v|0);u=B;B=0;do if(u&1){t=Rb()|0;y=Q;z=t}else{k[v>>2]=27560;t=j+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[j+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,v|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;n=Q;Yua(e);Yua(t);Ava(v);y=n;z=q;break}Yua(e);B=0;q=Ia(40,j|0,65823,46)|0;n=B;B=0;do if((((!(n&1)?(B=0,s=ya(427,c|0)|0,A=B,B=0,!(A&1)):0)?(A=Lta(s)|0,B=0,C=Ia(40,q|0,s|0,A|0)|0,A=B,B=0,!(A&1)):0)?(B=0,Ia(40,C|0,149177,1)|0,C=B,B=0,!(C&1)):0)?(B=0,wa(510,l|0,v|0),C=B,B=0,!(C&1)):0){B=0;ya(425,l|0)|0;C=B;B=0;if(C&1){C=Rb()|0;A=Q;Yua(l);D=A;E=C;break}Yua(l);k[j>>2]=27468;k[o>>2]=27488;k[v>>2]=27560;Yua(t);Ava(v);vva(o);r=d;return}else F=49;while(0);if((F|0)==49){q=Rb()|0;D=Q;E=q}k[j>>2]=27468;k[o>>2]=27488;k[v>>2]=27560;Yua(t);Ava(v);vva(o);G=D;H=E;Qb(H|0)}while(0);w=y;x=z;vva(o);Qb(x|0)}}while(0);x=f+56|0;z=f+4|0;k[f>>2]=27524;k[x>>2]=27544;B=0;wa(508,f+56|0,z|0);y=B;B=0;if(y&1){y=Rb()|0;I=Q;J=y;vva(x);Qb(J|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[x>>2]=27488;B=0;va(448,z|0);y=B;B=0;do if(y&1){w=Rb()|0;K=Q;L=w}else{k[z>>2]=27560;w=f+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,z|0,e|0);E=B;B=0;if(E&1){E=Rb()|0;D=Q;Yua(e);Yua(w);Ava(z);K=D;L=E;break}Yua(e);B=0;E=Ia(40,f|0,65753,39)|0;D=B;B=0;b:do if((((!(D&1)?(B=0,j=ya(427,b|0)|0,d=B,B=0,!(d&1)):0)?(d=Lta(j)|0,B=0,l=Ia(40,E|0,j|0,d|0)|0,d=B,B=0,!(d&1)):0)?(B=0,d=Ia(40,l|0,65793,29)|0,l=B,B=0,!(l&1)):0)?(B=0,Xa(239,d|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,g|0,65553,67);l=B;B=0;do if(!(l&1)){B=0;eb(502,h|0,71356,23);j=B;B=0;if(j&1){j=Rb()|0;c=Q;Yua(g);M=c;N=j;break}B=0;wa(510,i|0,z|0);j=B;B=0;if(j&1){j=Rb()|0;O=Q;P=j;R=1}else{B=0;ua(163,d|0,g|0,h|0,292,i|0);j=B;B=0;if(j&1)S=1;else{B=0;eb(503,d|0,1240,229);B=0;S=0}j=Rb()|0;c=Q;Yua(i);O=c;P=j;R=S}Yua(h);Yua(g);if(R){M=O;N=P}else{T=O;U=P;break b}}else{j=Rb()|0;M=Q;N=j}while(0);zb(d|0);T=M;U=N}else F=25;while(0);if((F|0)==25){E=Rb()|0;T=Q;U=E}k[f>>2]=27468;k[x>>2]=27488;k[z>>2]=27560;Yua(w);Ava(z);vva(x);G=T;H=U;Qb(H|0)}while(0);I=K;J=L;vva(x);Qb(J|0)}function zh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0;b=r;r=r+624|0;c=b+608|0;d=b+620|0;e=b+604|0;f=b+588|0;g=b+440|0;h=b+592|0;j=b+304|0;l=b+576|0;m=b+152|0;n=b+288|0;o=b+16|0;q=b;i[d>>0]=0;k[f>>2]=0;s=g+56|0;t=g+4|0;k[g>>2]=27524;k[s>>2]=27544;B=0;wa(508,g+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=g+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[g+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,t|0,c|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(c);Yua(x);Ava(t);y=C;z=A;break}Yua(c);B=0;Ia(40,g|0,136216,25)|0;A=B;B=0;do if(!(A&1)?(B=0,wa(510,h|0,t|0),C=B,B=0,!(C&1)):0){B=0;ya(425,h|0)|0;C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(h);E=D;F=C;break}Yua(h);k[g>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);C=a+44|0;cO(k[C>>2]|0,e,476);i_(f,k[C>>2]|0,k[e>>2]|0,0);D=a+16|0;SX(k[D>>2]|0,3,0);Ec[k[f>>2]&1023](a);SX(k[D>>2]|0,4,0);SX(k[D>>2]|0,5,0);k_(a);SX(k[D>>2]|0,6,0);bO(k[C>>2]|0,d,331);if(!(i[d>>0]|0)){r=b;return}G=+TX(k[D>>2]|0,3,4);H=+UX(k[D>>2]|0,3,4);I=+YX(k[D>>2]|0,4);D=j+56|0;C=j+4|0;k[j>>2]=27524;k[D>>2]=27544;B=0;wa(508,j+56|0,C|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;L=J;vva(D);Qb(L|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[D>>2]=27488;B=0;va(448,C|0);J=B;B=0;do if(J&1){M=Rb()|0;N=Q;O=M}else{k[C>>2]=27560;M=j+36|0;k[M>>2]=0;k[M+4>>2]=0;k[M+8>>2]=0;k[M+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,C|0,c|0);P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(c);Yua(M);Ava(C);N=R;O=P;break}Yua(c);B=0;P=Ia(40,j|0,65870,32)|0;R=B;B=0;do if(((!(R&1)?(B=0,S=Sa(1,P|0,+G)|0,T=B,B=0,!(T&1)):0)?(B=0,Ia(40,S|0,65903,9)|0,S=B,B=0,!(S&1)):0)?(B=0,wa(510,l|0,C|0),S=B,B=0,!(S&1)):0){B=0;ya(425,l|0)|0;S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(l);U=T;V=S;break}Yua(l);k[j>>2]=27468;k[D>>2]=27488;k[C>>2]=27560;Yua(M);Ava(C);vva(D);S=m+56|0;T=m+4|0;k[m>>2]=27524;k[S>>2]=27544;B=0;wa(508,m+56|0,T|0);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Y=W;vva(S);Qb(Y|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[S>>2]=27488;B=0;va(448,T|0);W=B;B=0;do if(W&1){Z=Rb()|0;_=Q;$=Z}else{k[T>>2]=27560;Z=m+36|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,T|0,c|0);aa=B;B=0;if(aa&1){aa=Rb()|0;ba=Q;Yua(c);Yua(Z);Ava(T);_=ba;$=aa;break}Yua(c);B=0;aa=Ia(40,m|0,65913,32)|0;ba=B;B=0;do if(ba&1)ca=65;else{B=0;da=Sa(1,aa|0,+H)|0;ea=B;B=0;if(ea&1){ca=65;break}B=0;Ia(40,da|0,65946,7)|0;da=B;B=0;if(da&1){ca=65;break}B=0;wa(510,n|0,T|0);da=B;B=0;if(da&1){ca=65;break}B=0;ya(425,n|0)|0;da=B;B=0;if(da&1){da=Rb()|0;ea=Q;Yua(n);fa=ea;ga=da;break}Yua(n);k[m>>2]=27468;k[S>>2]=27488;k[T>>2]=27560;Yua(Z);Ava(T);vva(S);da=o+56|0;ea=o+4|0;k[o>>2]=27524;k[da>>2]=27544;B=0;wa(508,o+56|0,ea|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;ja=ha;vva(da);Qb(ja|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[da>>2]=27488;B=0;va(448,ea|0);ha=B;B=0;do if(ha&1){ka=Rb()|0;la=Q;ma=ka}else{k[ea>>2]=27560;ka=o+36|0;k[ka>>2]=0;k[ka+4>>2]=0;k[ka+8>>2]=0;k[ka+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ea|0,c|0);na=B;B=0;if(na&1){na=Rb()|0;oa=Q;Yua(c);Yua(ka);Ava(ea);la=oa;ma=na;break}Yua(c);B=0;na=Ia(40,o|0,65954,32)|0;oa=B;B=0;do if(oa&1)ca=68;else{B=0;pa=Sa(1,na|0,+I)|0;qa=B;B=0;if(qa&1){ca=68;break}B=0;Ia(40,pa|0,65987,7)|0;pa=B;B=0;if(pa&1){ca=68;break}B=0;wa(510,q|0,ea|0);pa=B;B=0;if(pa&1){ca=68;break}B=0;ya(425,q|0)|0;pa=B;B=0;if(pa&1){pa=Rb()|0;qa=Q;Yua(q);ra=qa;sa=pa;break}Yua(q);k[o>>2]=27468;k[da>>2]=27488;k[ea>>2]=27560;Yua(ka);Ava(ea);vva(da);pa=a+48|0;qa=k[pa>>2]|0;ta=Qqa(48)|0;B=0;ua=ya(428,qa|0)|0;xa=B;B=0;do if(!(xa&1)){k[ta>>2]=27904;k[ta+4>>2]=ua+1;p[ta+16>>3]=G;k[ta+32>>2]=0;p[ta+40>>3]=0.0;k[ta+24>>2]=1;k[ta+28>>2]=1;B=0;wa(512,ta+8|0,334);za=B;B=0;if(za&1)break;ih(qa,ta)|0;za=k[pa>>2]|0;Aa=Qqa(48)|0;B=0;Ba=ya(428,za|0)|0;Ca=B;B=0;do if(!(Ca&1)){k[Aa>>2]=27904;k[Aa+4>>2]=Ba+1;p[Aa+16>>3]=I;k[Aa+32>>2]=0;p[Aa+40>>3]=0.0;k[Aa+24>>2]=1;k[Aa+28>>2]=1;B=0;wa(512,Aa+8|0,332);Da=B;B=0;if(Da&1)break;ih(za,Aa)|0;Da=k[pa>>2]|0;Ea=Qqa(48)|0;B=0;Fa=ya(428,Da|0)|0;Ga=B;B=0;do if(!(Ga&1)){k[Ea>>2]=27904;k[Ea+4>>2]=Fa+1;p[Ea+16>>3]=H;k[Ea+32>>2]=0;p[Ea+40>>3]=0.0;k[Ea+24>>2]=1;k[Ea+28>>2]=1;B=0;wa(512,Ea+8|0,333);Ha=B;B=0;if(Ha&1)break;ih(Da,Ea)|0;r=b;return}while(0);Da=Rb()|0;Fa=Q;Sqa(Ea);Ja=Fa;Ka=Da;Qb(Ka|0)}while(0);za=Rb()|0;Ba=Q;Sqa(Aa);Ja=Ba;Ka=za;Qb(Ka|0)}while(0);pa=Rb()|0;qa=Q;Sqa(ta);Ja=qa;Ka=pa;Qb(Ka|0)}while(0);if((ca|0)==68){na=Rb()|0;ra=Q;sa=na}k[o>>2]=27468;k[da>>2]=27488;k[ea>>2]=27560;Yua(ka);Ava(ea);vva(da);Ja=ra;Ka=sa;Qb(Ka|0)}while(0);ia=la;ja=ma;vva(da);Qb(ja|0)}while(0);if((ca|0)==65){aa=Rb()|0;fa=Q;ga=aa}k[m>>2]=27468;k[S>>2]=27488;k[T>>2]=27560;Yua(Z);Ava(T);vva(S);Ja=fa;Ka=ga;Qb(Ka|0)}while(0);X=_;Y=$;vva(S);Qb(Y|0)}else ca=62;while(0);if((ca|0)==62){P=Rb()|0;U=Q;V=P}k[j>>2]=27468;k[D>>2]=27488;k[C>>2]=27560;Yua(M);Ava(C);vva(D);Ja=U;Ka=V;Qb(Ka|0)}while(0);K=N;L=O;vva(D);Qb(L|0)}else ca=59;while(0);if((ca|0)==59){A=Rb()|0;E=Q;F=A}k[g>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);Ja=E;Ka=F;Qb(Ka|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}function Ah(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=r;r=r+16|0;c=b+8|0;d=b+4|0;e=b;k[c>>2]=0;fO(k[a+44>>2]|0,c,957);f=oY(k[c>>2]|0,108824,1)|0;k[d>>2]=0;Bh(a,0,d,2);g=Rqa(k[d>>2]|0)|0;k[e>>2]=g;Bh(a,e,0,0);k[e>>2]=g;jta(g,k[d>>2]|0,1,f)|0;pY(f,k[c>>2]|0);f=k[e>>2]|0;if(f)Tqa(f);k[e>>2]=0;e=k[c>>2]|0;if(!e){r=b;return}Tqa(e);r=b;return}function Bh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;n=(d|0)==1;do if(n){o=a+16|0;p=k[o>>2]|0;if(p)Ec[k[(k[p>>2]|0)+4>>2]&1023](p);p=a+36|0;q=k[p>>2]|0;if(q){$K(q);Sqa(q)}q=a+40|0;s=k[q>>2]|0;if(s){GI(s);Sqa(s)}s=a+44|0;t=k[s>>2]|0;if(t){XN(t);Sqa(t)}t=a+32|0;u=k[t>>2]|0;if(u){jh(u);Sqa(u)}u=a+48|0;v=k[u>>2]|0;if(v){Mo(v);Sqa(v)}v=a+24|0;w=k[v>>2]|0;if(w){_m(w);Sqa(w)}w=a+28|0;x=k[w>>2]|0;if(x){kn(x);Sqa(x)}x=a+20|0;y=k[x>>2]|0;if(y){Mq(y);Sqa(y)}y=a+8|0;z=k[y>>2]|0;if(z)Tqa(z);k[y>>2]=0;y=Qqa(200)|0;B=0;va(476,y|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Sqa(y);C=A;D=z;Qb(D|0)}k[o>>2]=y;y=Qqa(36)|0;B=0;va(477,y|0);o=B;B=0;if(o&1){o=Rb()|0;z=Q;Sqa(y);C=z;D=o;Qb(D|0)}k[p>>2]=y;y=Qqa(36)|0;B=0;va(478,y|0);p=B;B=0;if(p&1){p=Rb()|0;o=Q;Sqa(y);C=o;D=p;Qb(D|0)}k[q>>2]=y;y=Qqa(4064)|0;B=0;va(479,y|0);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Sqa(y);C=p;D=q;Qb(D|0)}k[s>>2]=y;y=Qqa(36)|0;B=0;va(480,y|0);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Sqa(y);C=q;D=s;Qb(D|0)}k[y+12>>2]=546;k[t>>2]=y;y=Qqa(36)|0;B=0;va(481,y|0);t=B;B=0;if(t&1){t=Rb()|0;s=Q;Sqa(y);C=s;D=t;Qb(D|0)}k[u>>2]=y;y=Qqa(36)|0;B=0;va(482,y|0);u=B;B=0;if(u&1){u=Rb()|0;t=Q;Sqa(y);C=t;D=u;Qb(D|0)}k[v>>2]=y;y=Qqa(36)|0;B=0;va(483,y|0);v=B;B=0;if(v&1){v=Rb()|0;u=Q;Sqa(y);C=u;D=v;Qb(D|0)}k[w>>2]=y;y=Qqa(36)|0;B=0;va(484,y|0);w=B;B=0;if(!(w&1)){k[x>>2]=y;break}x=Rb()|0;w=Q;Sqa(y);C=w;D=x;Qb(D|0)}while(0);a:do switch(d|0){case 0:{x=k[b>>2]|0;i[x>>0]=1;i[x+1>>0]=0;i[x+2>>0]=0;i[x+3>>0]=0;x=(k[b>>2]|0)+4|0;k[b>>2]=x;w=a+4|0;y=l[w>>0]|l[w+1>>0]<<8|l[w+2>>0]<<16|l[w+3>>0]<<24;i[x>>0]=y;i[x+1>>0]=y>>8;i[x+2>>0]=y>>16;i[x+3>>0]=y>>24;y=(k[b>>2]|0)+4|0;k[b>>2]=y;x=a+12|0;w=l[x>>0]|l[x+1>>0]<<8|l[x+2>>0]<<16|l[x+3>>0]<<24;i[y>>0]=w;i[y+1>>0]=w>>8;i[y+2>>0]=w>>16;i[y+3>>0]=w>>24;w=(k[b>>2]|0)+4|0;k[b>>2]=w;y=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;i[w>>0]=y;i[w+1>>0]=y>>8;i[w+2>>0]=y>>16;i[w+3>>0]=y>>24;y=(k[b>>2]|0)+4|0;k[b>>2]=y;w=a+8|0;x=(k[w>>2]|0)==0;i[y>>0]=x&1;y=(k[b>>2]|0)+1|0;k[b>>2]=y;if(x)E=w;else{TEa(y|0,k[w>>2]|0,k[a>>2]<<2|0)|0;k[b>>2]=(k[b>>2]|0)+(k[a>>2]<<2);E=w}break}case 2:{w=a+8|0;y=(k[w>>2]|0)==0;x=(k[c>>2]|0)+17|0;k[c>>2]=x;if(y)E=w;else{k[c>>2]=x+(k[a>>2]<<2);E=w}break}default:{if(n){w=(k[b>>2]|0)+4|0;k[b>>2]=w;x=a+4|0;y=l[w>>0]|l[w+1>>0]<<8|l[w+2>>0]<<16|l[w+3>>0]<<24;i[x>>0]=y;i[x+1>>0]=y>>8;i[x+2>>0]=y>>16;i[x+3>>0]=y>>24;y=(k[b>>2]|0)+4|0;k[b>>2]=y;x=a+12|0;w=l[y>>0]|l[y+1>>0]<<8|l[y+2>>0]<<16|l[y+3>>0]<<24;i[x>>0]=w;i[x+1>>0]=w>>8;i[x+2>>0]=w>>16;i[x+3>>0]=w>>24;w=(k[b>>2]|0)+4|0;k[b>>2]=w;x=l[w>>0]|l[w+1>>0]<<8|l[w+2>>0]<<16|l[w+3>>0]<<24;i[a>>0]=x;i[a+1>>0]=x>>8;i[a+2>>0]=x>>16;i[a+3>>0]=x>>24;w=k[b>>2]|0;y=w+4|0;k[b>>2]=y;v=a+8|0;u=i[y>>0]|0;k[b>>2]=w+5;if(u&1){E=v;break a}u=Rqa(x>>>0>1073741823?-1:x<<2)|0;k[v>>2]=u;w=k[b>>2]|0;y=x<<2;TEa(u|0,w|0,y|0)|0;k[b>>2]=w+y;E=v;break a}v=g+56|0;y=g+4|0;k[g>>2]=27524;k[v>>2]=27544;B=0;wa(508,g+56|0,y|0);w=B;B=0;if(w&1){w=Rb()|0;F=Q;G=w;vva(v);Qb(G|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[v>>2]=27488;B=0;va(448,y|0);w=B;B=0;do if(w&1){u=Rb()|0;H=Q;I=u}else{k[y>>2]=27560;u=g+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,y|0,f|0);x=B;B=0;if(x&1){x=Rb()|0;t=Q;Yua(f);Yua(u);Ava(y);H=t;I=x;break}Yua(f);B=0;x=Ia(40,g|0,143951,43)|0;t=B;B=0;b:do if(!(t&1)?(B=0,Xa(239,x|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,h|0,65553,67);q=B;B=0;do if(!(q&1)){B=0;eb(502,j|0,149525,8);p=B;B=0;if(p&1){p=Rb()|0;o=Q;Yua(h);J=o;K=p;break}B=0;wa(510,m|0,y|0);p=B;B=0;if(p&1){p=Rb()|0;L=Q;M=p;N=1}else{B=0;ua(163,s|0,h|0,j|0,757,m|0);p=B;B=0;if(p&1)O=1;else{B=0;eb(503,s|0,1240,229);B=0;O=0}p=Rb()|0;o=Q;Yua(m);L=o;M=p;N=O}Yua(j);Yua(h);if(N){J=L;K=M}else{P=L;R=M;break b}}else{p=Rb()|0;J=Q;K=p}while(0);zb(s|0);P=J;R=K}else S=58;while(0);if((S|0)==58){x=Rb()|0;P=Q;R=x}k[g>>2]=27468;k[v>>2]=27488;k[y>>2]=27560;Yua(u);Ava(y);vva(v);C=P;D=R;Qb(D|0)}while(0);F=H;G=I;vva(v);Qb(G|0)}}while(0);G=k[a+16>>2]|0;rd[k[(k[G>>2]|0)+28>>2]&511](G,b,c,d);G=a+36|0;lh(k[G>>2]|0,b,c,d);I=a+40|0;lh(k[I>>2]|0,b,c,d);H=a+44|0;ZN(k[H>>2]|0,b,c,d);F=a+32|0;lh(k[F>>2]|0,b,c,d);lh(k[a+48>>2]|0,b,c,d);D=a+24|0;lh(k[D>>2]|0,b,c,d);R=a+28|0;lh(k[R>>2]|0,b,c,d);P=a+20|0;lh(k[P>>2]|0,b,c,d);if(!n){r=e;return}Oq(k[P>>2]|0);eL(k[G>>2]|0);HI(k[I>>2]|0);if((k[a>>2]|0)>0){n=0;do{d=k[(k[E>>2]|0)+(n<<2)>>2]|0;yh(a,d,d);if(!n)BZ(k[R>>2]|0,k[H>>2]|0);YZ(k[D>>2]|0,k[F>>2]|0,k[H>>2]|0,d);zZ(k[D>>2]|0,k[H>>2]|0,d);XZ(k[P>>2]|0,k[G>>2]|0,k[D>>2]|0,k[R>>2]|0,k[I>>2]|0,k[H>>2]|0)|0;n=n+1|0}while((n|0)<(k[a>>2]|0))}n=k[(k[E>>2]|0)+(k[a+12>>2]<<2)>>2]|0;yh(a,n,n);r=e;return}function Ch(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+208|0;c=b+188|0;d=b+184|0;e=b+180|0;f=b+176|0;g=b+40|0;h=b+24|0;i=b+12|0;j=b;k[d>>2]=0;k[e>>2]=0;k[f>>2]=0;l=a+44|0;fO(k[l>>2]|0,e,957);m=oY(k[e>>2]|0,65363,0)|0;if(!m){n=k[e>>2]|0;if(n)Tqa(n);k[e>>2]=0;r=b;return}dta(m,0,2)|0;n=hta(m)|0;dta(m,0,0)|0;o=Rqa(n)|0;k[f>>2]=o;if((ata(o,n,1,m)|0)==1){n=k[f>>2]|0;lO(k[l>>2]|0,d,951);Bh(a,f,0,1);rO(k[l>>2]|0,k[d>>2]|0,951);k[f>>2]=n;pY(m,k[e>>2]|0);m=k[e>>2]|0;if(m)Tqa(m);k[e>>2]=0;e=k[f>>2]|0;if(e)Tqa(e);k[f>>2]=0;r=b;return}b=g+56|0;f=g+4|0;k[g>>2]=27524;k[b>>2]=27544;B=0;wa(508,g+56|0,f|0);e=B;B=0;if(e&1){e=Rb()|0;p=Q;q=e;vva(b);Qb(q|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[b>>2]=27488;B=0;va(448,f|0);e=B;B=0;do if(e&1){m=Rb()|0;s=Q;t=m}else{k[f>>2]=27560;m=g+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[g+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,f|0,c|0);n=B;B=0;if(n&1){n=Rb()|0;d=Q;Yua(c);Yua(m);Ava(f);s=d;t=n;break}Yua(c);B=0;n=Ia(40,g|0,65995,46)|0;d=B;B=0;if(!(d&1)?(B=0,Xa(239,n|0,0)|0,n=B,B=0,!(n&1)):0){n=Ab(20)|0;B=0;eb(502,h|0,65553,67);d=B;B=0;do if(!(d&1)){B=0;eb(502,i|0,66042,7);l=B;B=0;if(l&1){l=Rb()|0;a=Q;Yua(h);u=a;v=l;break}B=0;wa(510,j|0,f|0);l=B;B=0;if(l&1){l=Rb()|0;w=Q;x=l;y=1}else{B=0;ua(163,n|0,h|0,i|0,707,j|0);l=B;B=0;if(l&1)z=1;else{B=0;eb(503,n|0,1240,229);B=0;z=0}l=Rb()|0;a=Q;Yua(j);w=a;x=l;y=z}Yua(i);Yua(h);if(y){u=w;v=x}else{A=w;C=x;k[g>>2]=27468;k[b>>2]=27488;k[f>>2]=27560;Yua(m);Ava(f);vva(b);Qb(C|0)}}else{l=Rb()|0;u=Q;v=l}while(0);zb(n|0);A=u;C=v;k[g>>2]=27468;k[b>>2]=27488;k[f>>2]=27560;Yua(m);Ava(f);vva(b);Qb(C|0)}d=Rb()|0;A=Q;C=d;k[g>>2]=27468;k[b>>2]=27488;k[f>>2]=27560;Yua(m);Ava(f);vva(b);Qb(C|0)}while(0);p=s;q=t;vva(b);Qb(q|0)}function Dh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+176|0;c=b+160|0;d=b+156|0;e=b+152|0;f=b+16|0;g=b;k[d>>2]=0;k[e>>2]=0;a:do if(CY()|0){h=f+56|0;i=f+4|0;k[f>>2]=27524;k[h>>2]=27544;B=0;wa(508,f+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(h);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[h>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=f+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,i|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(c);Yua(n);Ava(i);o=s;p=q;break}Yua(c);B=0;Ia(40,f|0,66050,31)|0;q=B;B=0;do if(!(q&1)?(B=0,wa(510,g|0,i|0),s=B,B=0,!(s&1)):0){B=0;ya(425,g|0)|0;s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(g);u=s;v=t;break}else{Yua(g);k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);break a}}else w=14;while(0);if((w|0)==14){q=Rb()|0;u=q;v=Q}k[f>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);x=u;y=v;Qb(x|0)}while(0);l=o;m=p;vva(h);Qb(m|0)}while(0);UZ(d,a,339,628);UZ(e,a,64,628);m=Qqa(8)|0;p=a+28|0;B=0;o=ya(429,k[p>>2]|0)|0;l=B;B=0;b:do if(!(l&1)?(B=0,va(485,m|0),v=B,B=0,!(v&1)):0){do if(k[m>>2]|0){B=0;v=ya(423,4)|0;u=B;B=0;if(u&1){w=66;break b}B=0;eb(505,v|0,o|0,0);u=B;B=0;if(u&1){u=Rb()|0;f=Q;Sqa(v);z=f;A=u;break b}else{k[m+4>>2]=v;break}}while(0);h=Qqa(8)|0;B=0;v=ya(429,k[p>>2]|0)|0;u=B;B=0;c:do if(!(u&1)?(B=0,va(485,h|0),f=B,B=0,!(f&1)):0){do if(k[h>>2]|0){B=0;f=ya(423,4)|0;g=B;B=0;if(g&1){w=68;break c}B=0;eb(505,f|0,v|0,0);g=B;B=0;if(g&1){g=Rb()|0;c=Q;Sqa(f);C=c;D=g;break c}else{k[h+4>>2]=f;break}}while(0);n=Qqa(8)|0;B=0;f=ya(429,k[p>>2]|0)|0;g=B;B=0;d:do if(!(g&1)?(B=0,va(485,n|0),c=B,B=0,!(c&1)):0){do if(k[n>>2]|0){B=0;c=ya(423,4)|0;i=B;B=0;if(i&1){w=70;break d}B=0;eb(505,c|0,f|0,0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;Sqa(c);E=j;F=i;break d}else{k[n+4>>2]=c;break}}while(0);if((th(k[p>>2]|0)|0)>0){c=a+44|0;i=0;do{j=qh(k[p>>2]|0,i)|0;Do(j,m,h,n,k[c>>2]|0,k[d>>2]|0,k[e>>2]|0);i=i+1|0}while((i|0)<(th(k[p>>2]|0)|0))}if(k[m>>2]|0){i=k[k[m+4>>2]>>2]|0;Ec[k[(k[i>>2]|0)+12>>2]&1023](i)}if(k[h>>2]|0){i=k[k[h+4>>2]>>2]|0;Ec[k[(k[i>>2]|0)+12>>2]&1023](i)}if(k[n>>2]|0){i=k[k[n+4>>2]>>2]|0;Ec[k[(k[i>>2]|0)+12>>2]&1023](i)}VZ(a,m,684,628);VZ(a,h,685,628);VZ(a,n,686,628);if((k[m>>2]|0)!=0?(i=k[m+4>>2]|0,(i|0)!=0):0){c=k[i>>2]|0;if(c)Ec[k[(k[c>>2]|0)+4>>2]&1023](c);Sqa(i)}Sqa(m);do if(k[h>>2]|0){i=k[h+4>>2]|0;if(!i)break;c=k[i>>2]|0;if(c)Ec[k[(k[c>>2]|0)+4>>2]&1023](c);Sqa(i)}while(0);Sqa(h);do if(k[n>>2]|0){i=k[n+4>>2]|0;if(!i)break;c=k[i>>2]|0;if(c)Ec[k[(k[c>>2]|0)+4>>2]&1023](c);Sqa(i)}while(0);Sqa(n);i=k[e>>2]|0;if(i)Tqa(i);k[e>>2]=0;i=k[d>>2]|0;if(!i){r=b;return 1}Tqa(i);r=b;return 1}else w=70;while(0);if((w|0)==70){f=Rb()|0;E=Q;F=f}Sqa(n);x=F;y=E;Qb(x|0)}else w=68;while(0);if((w|0)==68){v=Rb()|0;C=Q;D=v}Sqa(h);x=D;y=C;Qb(x|0)}else w=66;while(0);if((w|0)==66){w=Rb()|0;z=Q;A=w}Sqa(m);x=A;y=z;Qb(x|0);return 0}function Eh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;b=r;r=r+176|0;c=b+164|0;d=b;e=b+160|0;f=b+24|0;g=b+8|0;h=a+44|0;cO(k[h>>2]|0,e,477);dO(k[h>>2]|0,d,767);a:do if(BY()|0){i=f+56|0;j=f+4|0;k[f>>2]=27524;k[i>>2]=27544;B=0;wa(508,f+56|0,j|0);l=B;B=0;if(l&1){l=Rb()|0;m=Q;n=l;vva(i);Qb(n|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[i>>2]=27488;B=0;va(448,j|0);l=B;B=0;do if(l&1){o=Rb()|0;q=Q;s=o}else{k[j>>2]=27560;o=f+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,j|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(o);Ava(j);q=u;s=t;break}Yua(c);B=0;t=Ia(40,f|0,66082,54)|0;u=B;B=0;if((((((!(u&1)?(B=0,u=ya(427,k[e>>2]|0)|0,v=B,B=0,!(v&1)):0)?(v=Lta(u)|0,B=0,w=Ia(40,t|0,u|0,v|0)|0,v=B,B=0,!(v&1)):0)?(B=0,v=Ia(40,w|0,66137,11)|0,w=B,B=0,!(w&1)):0)?(B=0,w=Sa(1,v|0,+(+p[d>>3]))|0,v=B,B=0,!(v&1)):0)?(B=0,Ia(40,w|0,149177,1)|0,w=B,B=0,!(w&1)):0)?(B=0,wa(510,g|0,j|0),w=B,B=0,!(w&1)):0){B=0;ya(425,g|0)|0;w=B;B=0;if(!(w&1)){Yua(g);k[f>>2]=27468;k[i>>2]=27488;k[j>>2]=27560;Yua(o);Ava(j);vva(i);break a}w=Rb()|0;v=Q;Yua(g);x=w;y=v;k[f>>2]=27468;k[i>>2]=27488;k[j>>2]=27560;Yua(o);Ava(j);vva(i);Qb(x|0)}v=Rb()|0;x=v;y=Q;k[f>>2]=27468;k[i>>2]=27488;k[j>>2]=27560;Yua(o);Ava(j);vva(i);Qb(x|0)}while(0);m=q;n=s;vva(i);Qb(n|0)}while(0);n=n_(k[e>>2]|0)|0;Fc[k[(k[n>>2]|0)+64>>2]&1023](n,a);if(!n){z=a+24|0;A=k[z>>2]|0;C=a+32|0;D=k[C>>2]|0;E=k[h>>2]|0;F=k[e>>2]|0;YZ(A,D,E,F);G=k[z>>2]|0;H=k[h>>2]|0;I=k[e>>2]|0;zZ(G,H,I);r=b;return}Ec[k[(k[n>>2]|0)+4>>2]&1023](n);z=a+24|0;A=k[z>>2]|0;C=a+32|0;D=k[C>>2]|0;E=k[h>>2]|0;F=k[e>>2]|0;YZ(A,D,E,F);G=k[z>>2]|0;H=k[h>>2]|0;I=k[e>>2]|0;zZ(G,H,I);r=b;return}function Fh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=k[b>>2]|0;d=k[b+4>>2]|0;b=a+20|0;if((th(k[b>>2]|0)|0)<=0)return;a=d>>1;e=c;if(!(d&1))f=0;else{d=0;do{g=(ura(qh(k[b>>2]|0,d)|0,168,456,0)|0)+a|0;Ec[k[(k[g>>2]|0)+c>>2]&1023](g);d=d+1|0}while((d|0)<(th(k[b>>2]|0)|0));return}do{d=qh(k[b>>2]|0,f)|0;if(!d)h=0;else h=ura(d,168,456,0)|0;Ec[e&1023](h+a|0);f=f+1|0}while((f|0)<(th(k[b>>2]|0)|0));return}function Gh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=0.0;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=0.0;a=0;do{g=+bp(qh(k[f>>2]|0,a)|0)+g;p[d>>3]=g;a=a+1|0}while((a|0)<(th(k[f>>2]|0)|0))}nZ(d,e,1,2,4,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function Hh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0.0,i=0.0;c=r;r=r+16|0;d=c+8|0;e=c;p[e>>3]=-G;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=-G;a=0;while(1){h=+$(+(+bp(qh(k[f>>2]|0,a)|0)));if(h>g){p[e>>3]=h;i=h}else i=g;a=a+1|0;if((a|0)>=(th(k[f>>2]|0)|0))break;else g=i}}nZ(e,d,1,2,1,0,uY()|0)|0;uY()|0;p[b>>3]=+p[d>>3];r=c;return}function Ih(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=0.0;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=0.0;a=0;do{h=qh(k[f>>2]|0,a)|0;g=+Zc[k[(k[h>>2]|0)+200>>2]&255](h)+g;p[d>>3]=g;a=a+1|0}while((a|0)<(th(k[f>>2]|0)|0))}nZ(d,e,1,2,4,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function Jh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=0.0;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=0.0;a=0;do{h=qh(k[f>>2]|0,a)|0;g=+Zc[k[(k[h>>2]|0)+204>>2]&255](h)+g;p[d>>3]=g;a=a+1|0}while((a|0)<(th(k[f>>2]|0)|0))}nZ(d,e,1,2,4,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function Kh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=0.0;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=0.0;a=0;do{h=qh(k[f>>2]|0,a)|0;g=+Zc[k[(k[h>>2]|0)+208>>2]&255](h)+g;p[d>>3]=g;a=a+1|0}while((a|0)<(th(k[f>>2]|0)|0))}nZ(d,e,1,2,4,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function Lh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=0.0;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=0.0;a=0;do{h=qh(k[f>>2]|0,a)|0;g=+Zc[k[(k[h>>2]|0)+196>>2]&255](h)+g;p[d>>3]=g;a=a+1|0}while((a|0)<(th(k[f>>2]|0)|0))}nZ(d,e,1,2,4,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function Mh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=0.0;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=0.0;a=0;do{h=qh(k[f>>2]|0,a)|0;g=+Zc[k[(k[h>>2]|0)+116>>2]&255](h)+g;p[d>>3]=g;a=a+1|0}while((a|0)<(th(k[f>>2]|0)|0))}nZ(d,e,1,2,4,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function Nh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,i=0.0,j=0.0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=G;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=G;a=0;while(1){h=(qh(k[f>>2]|0,a)|0)+16|0;i=+rC(k[h>>2]|0,671);if(i<g){p[d>>3]=i;j=i}else j=g;a=a+1|0;if((a|0)>=(th(k[f>>2]|0)|0))break;else g=j}}nZ(d,e,1,2,1,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function Oh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,i=0.0,j=0.0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=-G;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=-G;a=0;while(1){h=(qh(k[f>>2]|0,a)|0)+16|0;i=+pC(k[h>>2]|0,671);if(i>g){p[d>>3]=i;j=i}else j=g;a=a+1|0;if((a|0)>=(th(k[f>>2]|0)|0))break;else g=j}}nZ(d,e,1,2,1,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function Ph(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,i=0.0,j=0.0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=G;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=G;a=0;while(1){h=(qh(k[f>>2]|0,a)|0)+16|0;i=+rC(k[h>>2]|0,674);if(i<g){p[d>>3]=i;j=i}else j=g;a=a+1|0;if((a|0)>=(th(k[f>>2]|0)|0))break;else g=j}}nZ(d,e,1,2,1,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function Qh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,i=0.0,j=0.0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=-G;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=-G;a=0;while(1){h=(qh(k[f>>2]|0,a)|0)+16|0;i=+pC(k[h>>2]|0,674);if(i>g){p[d>>3]=i;j=i}else j=g;a=a+1|0;if((a|0)>=(th(k[f>>2]|0)|0))break;else g=j}}nZ(d,e,1,2,1,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function Rh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,i=0.0,j=0.0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=-G;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=-G;a=0;while(1){h=(qh(k[f>>2]|0,a)|0)+16|0;i=+qC(k[h>>2]|0,674);if(i>g){p[d>>3]=i;j=i}else j=g;a=a+1|0;if((a|0)>=(th(k[f>>2]|0)|0))break;else g=j}}nZ(d,e,1,2,1,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function Sh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,i=0.0,j=0.0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=G;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=G;a=0;while(1){h=(qh(k[f>>2]|0,a)|0)+16|0;i=+rC(k[h>>2]|0,677);if(i<g){p[d>>3]=i;j=i}else j=g;a=a+1|0;if((a|0)>=(th(k[f>>2]|0)|0))break;else g=j}}nZ(d,e,1,2,1,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function Th(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,i=0.0,j=0.0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=-G;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=-G;a=0;while(1){h=(qh(k[f>>2]|0,a)|0)+16|0;i=+pC(k[h>>2]|0,677);if(i>g){p[d>>3]=i;j=i}else j=g;a=a+1|0;if((a|0)>=(th(k[f>>2]|0)|0))break;else g=j}}nZ(d,e,1,2,1,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function Uh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,i=0.0,j=0.0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=-G;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=-G;a=0;while(1){h=(qh(k[f>>2]|0,a)|0)+16|0;i=+qC(k[h>>2]|0,677);if(i>g){p[d>>3]=i;j=i}else j=g;a=a+1|0;if((a|0)>=(th(k[f>>2]|0)|0))break;else g=j}}nZ(d,e,1,2,1,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function Vh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,i=0.0,j=0.0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=G;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=G;a=0;while(1){h=(qh(k[f>>2]|0,a)|0)+16|0;i=+rC(k[h>>2]|0,679);if(i<g){p[d>>3]=i;j=i}else j=g;a=a+1|0;if((a|0)>=(th(k[f>>2]|0)|0))break;else g=j}}nZ(d,e,1,2,1,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function Wh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,i=0.0,j=0.0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=-G;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=-G;a=0;while(1){h=(qh(k[f>>2]|0,a)|0)+16|0;i=+pC(k[h>>2]|0,679);if(i>g){p[d>>3]=i;j=i}else j=g;a=a+1|0;if((a|0)>=(th(k[f>>2]|0)|0))break;else g=j}}nZ(d,e,1,2,1,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function Xh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0,i=0.0,j=0.0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=-G;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=-G;a=0;while(1){h=(qh(k[f>>2]|0,a)|0)+16|0;i=+qC(k[h>>2]|0,679);if(i>g){p[d>>3]=i;j=i}else j=g;a=a+1|0;if((a|0)>=(th(k[f>>2]|0)|0))break;else g=j}}nZ(d,e,1,2,1,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function Yh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0,D=0,E=0.0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0;c=r;r=r+240|0;d=c+212|0;e=c+224|0;f=c+8|0;g=c;h=c+208|0;j=c+204|0;l=c+200|0;m=c+196|0;n=c+192|0;o=c+56|0;q=c+40|0;s=c+28|0;t=c+16|0;i[e>>0]=0;p[f>>3]=0.0;p[g>>3]=0.0;k[j>>2]=0;k[m>>2]=0;k[n>>2]=0;u=a+44|0;bO(k[u>>2]|0,e,316);if(i[e>>0]|0){kO(k[u>>2]|0,j,l,m,n,315);cO(k[u>>2]|0,h,944);u=(k[h>>2]|0)+-1|0;h=k[(k[j>>2]|0)+(u<<2)>>2]|0;e=k[(k[m>>2]|0)+(u<<2)>>2]|0;if((e|0)>0){u=a+20|0;a=0;do{v=h+(a*5<<3)|0;w=~~+p[v+32>>3];a:do if((th(k[u>>2]|0)|0)>0){x=0;while(1){y=qh(k[u>>2]|0,x)|0;x=x+1|0;if((Hc[k[(k[y>>2]|0)+16>>2]&511](y)|0)==(w|0)){z=y;A=y;break}if((x|0)>=(th(k[u>>2]|0)|0))break a}C=+id[k[(k[z>>2]|0)+284>>2]&63](A,v);p[f>>3]=C+ +p[f>>3]}while(0);a=a+1|0}while((a|0)!=(e|0))}fZ(f,g,1,2,4,uY()|0)|0;p[f>>3]=+p[g>>3];g=k[l>>2]|0;if((g|0)>0){e=g;g=0;while(1){a=k[(k[j>>2]|0)+(g<<2)>>2]|0;if(!a)D=e;else{Tqa(a);D=k[l>>2]|0}g=g+1|0;if((g|0)>=(D|0))break;else e=D}}D=k[m>>2]|0;if(D)Tqa(D);k[m>>2]=0;m=k[n>>2]|0;if(m)Tqa(m);k[n>>2]=0;n=k[j>>2]|0;if(!n){E=+p[f>>3];p[b>>3]=E;r=c;return}Tqa(n);E=+p[f>>3];p[b>>3]=E;r=c;return}c=o+56|0;b=o+4|0;k[o>>2]=27524;k[c>>2]=27544;B=0;wa(508,o+56|0,b|0);f=B;B=0;if(f&1){f=Rb()|0;F=Q;G=f;vva(c);Qb(G|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[c>>2]=27488;B=0;va(448,b|0);f=B;B=0;do if(f&1){n=Rb()|0;H=Q;I=n}else{k[b>>2]=27560;n=o+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[o+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);j=B;B=0;if(j&1){j=Rb()|0;m=Q;Yua(d);Yua(n);Ava(b);H=m;I=j;break}Yua(d);B=0;j=Ia(40,o|0,66149,32)|0;m=B;B=0;if(!(m&1)?(B=0,Xa(239,j|0,0)|0,j=B,B=0,!(j&1)):0){j=Ab(20)|0;B=0;eb(502,q|0,65553,67);m=B;B=0;do if(!(m&1)){B=0;eb(502,s|0,66182,9);D=B;B=0;if(D&1){D=Rb()|0;e=Q;Yua(q);J=e;K=D;break}B=0;wa(510,t|0,b|0);D=B;B=0;if(D&1){D=Rb()|0;L=Q;M=D;N=1}else{B=0;ua(163,j|0,q|0,s|0,1284,t|0);D=B;B=0;if(D&1)O=1;else{B=0;eb(503,j|0,1240,229);B=0;O=0}D=Rb()|0;e=Q;Yua(t);L=e;M=D;N=O}Yua(s);Yua(q);if(N){J=L;K=M}else{P=L;R=M;k[o>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(n);Ava(b);vva(c);Qb(R|0)}}else{D=Rb()|0;J=Q;K=D}while(0);zb(j|0);P=J;R=K;k[o>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(n);Ava(b);vva(c);Qb(R|0)}m=Rb()|0;P=Q;R=m;k[o>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(n);Ava(b);vva(c);Qb(R|0)}while(0);F=H;G=I;vva(c);Qb(G|0)}function Zh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0.0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0;c=r;r=r+64|0;d=c+48|0;e=c+40|0;f=c+32|0;g=c+24|0;h=c+56|0;i=c;p[d>>3]=0.0;k[h>>2]=0;j=a+20|0;if((th(k[j>>2]|0)|0)<=0){l=uY()|0;nZ(d,e,1,2,4,0,l)|0;uY()|0;m=+p[e>>3];p[b>>3]=m;r=c;return}a=i+8|0;n=0;do{o=qh(k[j>>2]|0,n)|0;if($p(o)|0){Uo(o,h);q=Wo(o,179)|0;s=Wo(o,353)|0;t=ed[k[(k[o>>2]|0)+308>>2]&511](o,2)|0;u=Hc[k[(k[t>>2]|0)+8>>2]&511](t)|0;if((u|0)<(Hc[k[(k[t>>2]|0)+12>>2]&511](t)|0)){v=t+8|0;w=u;do{Fc[k[(k[t>>2]|0)+24>>2]&1023](t,w);rd[k[(k[o>>2]|0)+260>>2]&511](o,g,k[h>>2]|0,t);rd[k[(k[q>>2]|0)+56>>2]&511](q,f,t,689);rd[k[(k[s>>2]|0)+60>>2]&511](s,i,k[h>>2]|0,t);x=+p[i>>3];y=+p[a>>3];p[d>>3]=+p[d>>3]+ +p[v>>3]*(+p[g>>3]*(+p[f>>3]*.5*(x*x+y*y)));w=w+1|0}while((w|0)<(Hc[k[(k[t>>2]|0)+12>>2]&511](t)|0))}w=k[h>>2]|0;if(w)Tqa(w);k[h>>2]=0;Ec[k[(k[t>>2]|0)+4>>2]&1023](t)}n=n+1|0}while((n|0)<(th(k[j>>2]|0)|0));l=uY()|0;nZ(d,e,1,2,4,0,l)|0;uY()|0;m=+p[e>>3];p[b>>3]=m;r=c;return}function _h(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0;c=r;r=r+144|0;d=c+120|0;e=c+112|0;f=c+104|0;g=c+96|0;h=c+88|0;i=c+80|0;j=c+64|0;l=c+48|0;m=c+32|0;n=c+24|0;o=c+16|0;q=c+8|0;s=c;t=c+128|0;p[d>>3]=0.0;k[t>>2]=0;u=a+20|0;if((th(k[u>>2]|0)|0)<=0){v=uY()|0;nZ(d,e,1,2,4,0,v)|0;uY()|0;w=+p[e>>3];p[b>>3]=w;r=c;return}a=m+8|0;x=l+8|0;y=0;do{z=qh(k[u>>2]|0,y)|0;if($p(z)|0){Uo(z,t);A=Wo(z,179)|0;B=Wo(z,353)|0;C=Wo(z,674)|0;D=Wo(z,677)|0;E=Wo(z,388)|0;F=Wo(z,39)|0;G=Wo(z,36)|0;H=ed[k[(k[z>>2]|0)+308>>2]&511](z,2)|0;I=Hc[k[(k[H>>2]|0)+8>>2]&511](H)|0;if((I|0)<(Hc[k[(k[H>>2]|0)+12>>2]&511](H)|0)){J=H+8|0;K=I;do{Fc[k[(k[H>>2]|0)+24>>2]&1023](H,K);rd[k[(k[z>>2]|0)+260>>2]&511](z,n,k[t>>2]|0,H);rd[k[(k[A>>2]|0)+56>>2]&511](A,f,H,641);nd[k[(k[B>>2]|0)+48>>2]&1023](B,i,H);rd[k[(k[B>>2]|0)+60>>2]&511](B,m,k[t>>2]|0,H);nd[k[(k[E>>2]|0)+48>>2]&1023](E,s,H);nd[k[(k[F>>2]|0)+48>>2]&1023](F,q,H);nd[k[(k[G>>2]|0)+48>>2]&1023](G,o,H);nd[k[(k[C>>2]|0)+48>>2]&1023](C,g,H);rd[k[(k[C>>2]|0)+60>>2]&511](C,j,k[t>>2]|0,H);nd[k[(k[D>>2]|0)+48>>2]&1023](D,h,H);rd[k[(k[D>>2]|0)+60>>2]&511](D,l,k[t>>2]|0,H);L=+p[g>>3]*+p[m>>3]+ +p[h>>3]*+p[a>>3]+ +p[i>>3]*(+p[j>>3]+ +p[x>>3])-(+p[s>>3]-+p[q>>3]-+p[o>>3]);p[d>>3]=+p[d>>3]+ +p[J>>3]*(+p[n>>3]*(L*(+p[f>>3]*.5*L)));K=K+1|0}while((K|0)<(Hc[k[(k[H>>2]|0)+12>>2]&511](H)|0))}K=k[t>>2]|0;if(K)Tqa(K);k[t>>2]=0;Ec[k[(k[H>>2]|0)+4>>2]&1023](H)}y=y+1|0}while((y|0)<(th(k[u>>2]|0)|0));v=uY()|0;nZ(d,e,1,2,4,0,v)|0;uY()|0;w=+p[e>>3];p[b>>3]=w;r=c;return}function $h(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=0.0;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=0.0;a=0;do{h=qh(k[f>>2]|0,a)|0;g=+Zc[k[(k[h>>2]|0)+468>>2]&255](h)+g;p[d>>3]=g;a=a+1|0}while((a|0)<(th(k[f>>2]|0)|0))}nZ(d,e,1,2,4,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function ai(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=0.0;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=0.0;a=0;do{h=qh(k[f>>2]|0,a)|0;g=+Zc[k[(k[h>>2]|0)+472>>2]&255](h)+g;p[d>>3]=g;a=a+1|0}while((a|0)<(th(k[f>>2]|0)|0))}nZ(d,e,1,2,4,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function bi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=0.0;f=a+20|0;if((th(k[f>>2]|0)|0)>0){g=0.0;a=0;do{h=qh(k[f>>2]|0,a)|0;g=+Zc[k[(k[h>>2]|0)+476>>2]&255](h)+g;p[d>>3]=g;a=a+1|0}while((a|0)<(th(k[f>>2]|0)|0))}nZ(d,e,1,2,4,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function ci(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0,O=0,P=0,R=0,S=0,T=0.0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0;f=r;r=r+240|0;g=f+220|0;h=f+232|0;j=f+216|0;l=f+8|0;m=f;n=f+212|0;o=f+208|0;q=f+204|0;s=f+200|0;t=f+196|0;u=f+192|0;v=f+56|0;w=f+40|0;x=f+28|0;y=f+16|0;z=k[b>>2]|0;if(!z){A=Qqa(36)|0;B=0;va(481,A|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Sqa(A);E=C;F=D;Qb(E|0)}else G=A}else G=z;z=a+44|0;cO(k[z>>2]|0,j,766);dO(k[z>>2]|0,l,767);bO(k[z>>2]|0,h,325);if((d|0)<=0){k[b>>2]=G;r=f;return}A=a+20|0;D=a+28|0;C=a+24|0;H=a+36|0;I=a+40|0;J=0;a:while(1){K=k[c+(J<<2)>>2]|0;L=zY(K,0)|0;b:do if((L|0)<0){M=+O2(a,K);p[m>>3]=M;if(e){N=Qqa(48)|0;B=0;O=ya(428,G|0)|0;P=B;B=0;if(P&1){R=N;S=16;break a}M=+p[m>>3];P=k[j>>2]|0;T=+p[l>>3];k[N>>2]=27904;k[N+4>>2]=O+1;p[N+16>>3]=M;k[N+32>>2]=P;p[N+40>>3]=T;k[N+24>>2]=1;k[N+28>>2]=1;P=(Lta(K)|0)+1|0;B=0;O=ya(422,P|0)|0;P=B;B=0;if(P&1){R=N;S=16;break a}k[N+8>>2]=O;P=(Lta(K)|0)+1|0;if(!K){U=N;S=14;break a}if(P)TEa(O|0,K|0,P|0)|0;Oo(G,N)|0}}else{if((L+-770|0)>>>0<10){T=+P2(a,L);p[m>>3]=T;if(!e)break;N=Qqa(48)|0;B=0;P=ya(428,G|0)|0;O=B;B=0;if(O&1){V=N;S=27;break a}T=+p[m>>3];O=k[j>>2]|0;M=+p[l>>3];k[N>>2]=27904;k[N+4>>2]=P+1;p[N+16>>3]=T;k[N+32>>2]=O;p[N+40>>3]=M;k[N+24>>2]=1;k[N+28>>2]=1;O=(Lta(K)|0)+1|0;B=0;P=ya(422,O|0)|0;O=B;B=0;if(O&1){V=N;S=27;break a}k[N+8>>2]=P;O=(Lta(K)|0)+1|0;if(!K){W=N;S=25;break a}if(O)TEa(P|0,K|0,O|0)|0;Oo(G,N)|0;break}do switch(L|0){case 731:{Gh(a,m);break}case 732:{Hh(a,m);break}case 908:{Ih(a,m);break}case 909:{Jh(a,m);break}case 910:{Kh(a,m);break}case 907:{Lh(a,m);break}case 906:{Mh(a,m);break}case 895:{Nh(a,m);break}case 896:{Oh(a,m);break}case 897:{Ph(a,m);break}case 898:{Qh(a,m);break}case 899:{Rh(a,m);break}case 900:{Sh(a,m);break}case 901:{Th(a,m);break}case 902:{Uh(a,m);break}case 903:{Vh(a,m);break}case 904:{Wh(a,m);break}case 905:{Xh(a,m);break}case 650:{Yh(a,m);break}case 911:{$h(a,m);break}case 912:{ai(a,m);break}case 913:{bi(a,m);break}case 658:{F_(m,k[A>>2]|0,k[C>>2]|0,k[D>>2]|0,k[H>>2]|0,k[I>>2]|0,k[z>>2]|0);break}case 663:{H_(m,k[A>>2]|0,k[C>>2]|0,k[D>>2]|0,k[H>>2]|0,k[I>>2]|0,k[z>>2]|0);break}case 661:{J_(m,k[A>>2]|0,k[C>>2]|0,k[D>>2]|0,k[H>>2]|0,k[I>>2]|0,k[z>>2]|0);break}case 662:{L_(m,k[A>>2]|0,k[C>>2]|0,k[D>>2]|0,k[H>>2]|0,k[I>>2]|0,k[z>>2]|0);break}case 660:{N_(m,a);break}case 669:{P_(m,k[A>>2]|0,k[C>>2]|0,k[D>>2]|0,k[H>>2]|0,k[I>>2]|0,k[z>>2]|0);break}case 689:{Zh(a,m);break}case 690:{T_(m,k[A>>2]|0,k[C>>2]|0,k[D>>2]|0,k[H>>2]|0,k[I>>2]|0,k[z>>2]|0);break}case 691:{V_(m,k[A>>2]|0,k[C>>2]|0,k[D>>2]|0,k[H>>2]|0,k[I>>2]|0,k[z>>2]|0);break}case 692:{di(a,m);break}case 694:{X_(m,k[A>>2]|0,k[C>>2]|0,k[D>>2]|0,k[H>>2]|0,k[I>>2]|0,k[z>>2]|0);break}case 695:{Z_(m,k[A>>2]|0,k[C>>2]|0,k[D>>2]|0,k[H>>2]|0,k[I>>2]|0,k[z>>2]|0);break}case 696:{R_(m,k[A>>2]|0,k[C>>2]|0,k[D>>2]|0,k[H>>2]|0,k[I>>2]|0,k[z>>2]|0);break}case 641:{_h(a,m);break}case 670:{ei(a,m);break}default:{k[s>>2]=-1;k[t>>2]=-1;k[u>>2]=-1;if((th(k[A>>2]|0)|0)>0){N=0;O=0;while(1){lq(qh(k[A>>2]|0,N)|0,s,t,u,L);P=k[u>>2]|0;X=(P|0)>(O|0)?P:O;N=N+1|0;if((N|0)>=(th(k[A>>2]|0)|0)){Y=X;break}else O=X}}else Y=0;k[u>>2]=Y;nZ(s,n,1,4,1,0,uY()|0)|0;nZ(t,o,1,4,1,0,uY()|0)|0;nZ(u,q,1,4,1,0,uY()|0)|0;uY()|0;uY()|0;uY()|0;c:do if(!(i[h>>0]|0)){switch(k[n>>2]|0){case 736:{Z=Qq(k[A>>2]|0)|0;break}case 738:{Z=nn(k[D>>2]|0)|0;break}case 737:{O=Qq(k[A>>2]|0)|0;N=k[q>>2]|0;X=ma(N,O)|0;P=X>>>0>536870911?-1:X<<3;_=Rqa(P)|0;if(X)WEa(_|0,0,X<<3|0)|0;$=Rqa(P)|0;if((th(k[A>>2]|0)|0)>0){P=0;do{pq(qh(k[A>>2]|0,P)|0,_,N,L);P=P+1|0}while((P|0)<(th(k[A>>2]|0)|0))}fZ(_,$,X,3,4,uY()|0)|0;Tqa(_);if(e){P=Qqa(40)|0;B=0;aa=ya(428,G|0)|0;ba=B;B=0;if(ba&1){ca=P;S=142;break a}ba=k[j>>2]|0;M=+p[l>>3];k[P>>2]=27964;k[P+4>>2]=aa+1;aa=P+16|0;k[aa>>2]=O;da=P+20|0;k[da>>2]=N;B=0;wa(512,P+8|0,L|0);ea=B;B=0;if(ea&1){ca=P;S=142;break a}k[P+24>>2]=ba;p[P+32>>3]=M;ba=ma(k[da>>2]|0,k[aa>>2]|0)|0;if(!ba)k[P+12>>2]=0;else{B=0;aa=ya(422,(ba>>>0>536870911?-1:ba<<3)|0)|0;da=B;B=0;if(da&1){ca=P;S=142;break a}k[P+12>>2]=aa;TEa(aa|0,$|0,ba<<3|0)|0}Oo(G,P)|0}Tqa($);break c;break}default:{S=87;break a}}P=Qqa(8)|0;B=0;va(485,P|0);ba=B;B=0;if(ba&1){fa=P;S=123;break a}if(k[P>>2]|0){B=0;ba=ya(423,4)|0;aa=B;B=0;if(aa&1){fa=P;S=123;break a}B=0;eb(505,ba|0,Z|0,0);aa=B;B=0;if(aa&1){ga=P;ha=ba;S=119;break a}k[P+4>>2]=ba}if((th(k[A>>2]|0)|0)>0){ba=0;do{qq(qh(k[A>>2]|0,ba)|0,P,L);ba=ba+1|0}while((ba|0)<(th(k[A>>2]|0)|0))}if(k[P>>2]|0){ba=k[k[P+4>>2]>>2]|0;Ec[k[(k[ba>>2]|0)+12>>2]&1023](ba)}if(e){ba=Qqa(40)|0;B=0;$=ya(428,G|0)|0;N=B;B=0;if(N&1){ia=ba;S=129;break a}N=k[j>>2]|0;M=+p[l>>3];k[ba>>2]=28024;k[ba+4>>2]=$+1;k[ba+16>>2]=0;k[ba+20>>2]=0;B=0;wa(512,ba+8|0,L|0);$=B;B=0;if($&1){ia=ba;S=129;break a}k[ba+24>>2]=N;p[ba+32>>3]=M;k[ba+12>>2]=P;Oo(G,ba)|0}}else{ba=Qq(k[A>>2]|0)|0;N=ma(k[o>>2]|0,ba)|0;$=N>>>0>536870911?-1:N<<3;O=Rqa($)|0;if(N)WEa(O|0,0,N<<3|0)|0;N=Rqa($)|0;if((th(k[A>>2]|0)|0)>0){$=0;do{_=qh(k[A>>2]|0,$)|0;oq(_,O,k[o>>2]|0,L);$=$+1|0}while(($|0)<(th(k[A>>2]|0)|0))}$=ma(k[o>>2]|0,ba)|0;fZ(O,N,$,3,4,uY()|0)|0;Tqa(O);if(e){$=Qqa(40)|0;B=0;P=ya(428,G|0)|0;_=B;B=0;if(_&1){ja=$;S=82;break a}_=k[o>>2]|0;X=k[j>>2]|0;M=+p[l>>3];k[$>>2]=27964;k[$+4>>2]=P+1;P=$+16|0;k[P>>2]=ba;aa=$+20|0;k[aa>>2]=_;B=0;wa(512,$+8|0,L|0);_=B;B=0;if(_&1){ja=$;S=82;break a}k[$+24>>2]=X;p[$+32>>3]=M;X=ma(k[aa>>2]|0,k[P>>2]|0)|0;if(!X)k[$+12>>2]=0;else{B=0;P=ya(422,(X>>>0>536870911?-1:X<<3)|0)|0;aa=B;B=0;if(aa&1){ja=$;S=82;break a}k[$+12>>2]=P;TEa(P|0,N|0,X<<3|0)|0}Oo(G,$)|0}Tqa(N)}while(0);break b}}while(0);if(e){$=Qqa(48)|0;B=0;X=ya(428,G|0)|0;P=B;B=0;if(P&1){ka=$;S=153;break a}M=+p[m>>3];P=k[j>>2]|0;T=+p[l>>3];k[$>>2]=27904;k[$+4>>2]=X+1;p[$+16>>3]=M;k[$+32>>2]=P;p[$+40>>3]=T;k[$+24>>2]=1;k[$+28>>2]=1;P=(Lta(K)|0)+1|0;B=0;X=ya(422,P|0)|0;P=B;B=0;if(P&1){ka=$;S=153;break a}k[$+8>>2]=X;P=(Lta(K)|0)+1|0;if(!K){la=$;S=151;break a}if(P)TEa(X|0,K|0,P|0)|0;Oo(G,$)|0}}while(0);J=J+1|0;if((J|0)>=(d|0)){S=6;break}}switch(S|0){case 6:{k[b>>2]=G;r=f;return}case 14:{B=0;ib(283,142353,68290,137,142345);B=0;na=U;oa=Rb()|0;pa=Q;S=17;break}case 16:{na=R;oa=Rb()|0;pa=Q;S=17;break}case 25:{B=0;ib(283,142353,68290,137,142345);B=0;qa=W;ra=Rb()|0;sa=Q;S=28;break}case 27:{qa=V;ra=Rb()|0;sa=Q;S=28;break}case 82:{V=Rb()|0;W=Q;Sqa(ja);E=V;F=W;Qb(E|0);break}case 87:{W=v+56|0;V=v+4|0;k[v>>2]=27524;k[W>>2]=27544;B=0;wa(508,v+56|0,V|0);ja=B;B=0;if(ja&1){ja=Rb()|0;ta=Q;xa=ja;vva(W);Qb(xa|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[W>>2]=27488;B=0;va(448,V|0);ja=B;B=0;do if(ja&1){R=Rb()|0;za=Q;Aa=R}else{k[V>>2]=27560;R=v+36|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[v+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,V|0,g|0);U=B;B=0;if(U&1){U=Rb()|0;f=Q;Yua(g);Yua(R);Ava(V);za=f;Aa=U;break}Yua(g);B=0;U=Ia(40,v|0,66192,14)|0;f=B;B=0;d:do if((((!(f&1)?(B=0,G=ya(427,k[n>>2]|0)|0,b=B,B=0,!(b&1)):0)?(b=Lta(G)|0,B=0,d=Ia(40,U|0,G|0,b|0)|0,b=B,B=0,!(b&1)):0)?(B=0,b=Ia(40,d|0,146481,18)|0,d=B,B=0,!(d&1)):0)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,w|0,65553,67);d=B;B=0;do if(!(d&1)){B=0;eb(502,x|0,66207,17);G=B;B=0;if(G&1){G=Rb()|0;J=Q;Yua(w);Ba=G;Ca=J;break}B=0;wa(510,y|0,V|0);J=B;B=0;if(J&1){J=Rb()|0;Da=J;Ea=Q;Fa=1}else{B=0;ua(163,b|0,w|0,x|0,1115,y|0);J=B;B=0;if(J&1)Ga=1;else{B=0;eb(503,b|0,1240,229);B=0;Ga=0}J=Rb()|0;G=Q;Yua(y);Da=J;Ea=G;Fa=Ga}Yua(x);Yua(w);if(Fa){Ba=Da;Ca=Ea}else{Ha=Da;Ja=Ea;break d}}else{G=Rb()|0;Ba=G;Ca=Q}while(0);zb(b|0);Ha=Ba;Ja=Ca}else S=105;while(0);if((S|0)==105){U=Rb()|0;Ha=U;Ja=Q}k[v>>2]=27468;k[W>>2]=27488;k[V>>2]=27560;Yua(R);Ava(V);vva(W);E=Ha;F=Ja;Qb(E|0)}while(0);ta=za;xa=Aa;vva(W);Qb(xa|0);break}case 119:{xa=Rb()|0;W=Q;Sqa(ha);Ka=ga;La=W;Ma=xa;S=124;break}case 123:{xa=Rb()|0;Ka=fa;La=Q;Ma=xa;S=124;break}case 129:{xa=Rb()|0;fa=Q;Sqa(ia);E=xa;F=fa;Qb(E|0);break}case 142:{fa=Rb()|0;xa=Q;Sqa(ca);E=fa;F=xa;Qb(E|0);break}case 151:{B=0;ib(283,142353,68290,137,142345);B=0;Na=la;Oa=Rb()|0;Pa=Q;S=154;break}case 153:{Na=ka;Oa=Rb()|0;Pa=Q;S=154;break}}if((S|0)==17){Sqa(na);E=oa;F=pa;Qb(E|0)}else if((S|0)==28){Sqa(qa);E=ra;F=sa;Qb(E|0)}else if((S|0)==124){Sqa(Ka);E=Ma;F=La;Qb(E|0)}else if((S|0)==154){Sqa(Na);E=Oa;F=Pa;Qb(E|0)}}function di(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0.0,o=0,q=0,s=0,t=0,u=0,v=0,w=0.0;c=r;r=r+48|0;d=c+32|0;e=c+24|0;f=c+16|0;g=c+8|0;h=c+40|0;i=c;p[d>>3]=0.0;k[h>>2]=0;j=a+20|0;if((th(k[j>>2]|0)|0)>0)l=0;else{m=uY()|0;nZ(d,e,1,2,4,0,m)|0;uY()|0;n=+p[e>>3];p[b>>3]=n;r=c;return}do{a=qh(k[j>>2]|0,l)|0;if($p(a)|0){Uo(a,h);o=Wo(a,179)|0;q=Wo(a,353)|0;s=ed[k[(k[a>>2]|0)+308>>2]&511](a,2)|0;t=Hc[k[(k[s>>2]|0)+8>>2]&511](s)|0;if((t|0)<(Hc[k[(k[s>>2]|0)+12>>2]&511](s)|0)){u=s+8|0;v=t;do{Fc[k[(k[s>>2]|0)+24>>2]&1023](s,v);rd[k[(k[a>>2]|0)+260>>2]&511](a,g,k[h>>2]|0,s);rd[k[(k[o>>2]|0)+56>>2]&511](o,f,s,692);nd[k[(k[q>>2]|0)+48>>2]&1023](q,i,s);w=+p[i>>3];if(w<=0.0)p[d>>3]=+p[d>>3]+ +p[u>>3]*(+p[g>>3]*(w*(w*+p[f>>3])));v=v+1|0}while((v|0)<(Hc[k[(k[s>>2]|0)+12>>2]&511](s)|0))}v=k[h>>2]|0;if(v)Tqa(v);k[h>>2]=0;Ec[k[(k[s>>2]|0)+4>>2]&1023](s)}l=l+1|0}while((l|0)<(th(k[j>>2]|0)|0));m=uY()|0;nZ(d,e,1,2,4,0,m)|0;uY()|0;n=+p[e>>3];p[b>>3]=n;r=c;return}function ei(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0.0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;c=r;r=r+64|0;d=c+40|0;e=c+32|0;f=c+24|0;g=c+16|0;h=c+8|0;i=c;j=c+48|0;p[d>>3]=0.0;k[j>>2]=0;l=a+20|0;if((th(k[l>>2]|0)|0)>0)m=0;else{n=uY()|0;nZ(d,e,1,2,4,0,n)|0;uY()|0;o=+p[e>>3];p[b>>3]=o;r=c;return}do{a=qh(k[l>>2]|0,m)|0;if($p(a)|0){Uo(a,j);q=Wo(a,179)|0;s=Wo(a,339)|0;t=Wo(a,202)|0;u=ed[k[(k[a>>2]|0)+308>>2]&511](a,2)|0;v=Hc[k[(k[u>>2]|0)+8>>2]&511](u)|0;if((v|0)<(Hc[k[(k[u>>2]|0)+12>>2]&511](u)|0)){w=u+8|0;x=v;do{Fc[k[(k[u>>2]|0)+24>>2]&1023](u,x);rd[k[(k[a>>2]|0)+260>>2]&511](a,i,k[j>>2]|0,u);rd[k[(k[q>>2]|0)+56>>2]&511](q,h,u,670);nd[k[(k[s>>2]|0)+48>>2]&1023](s,f,u);nd[k[(k[t>>2]|0)+48>>2]&1023](t,g,u);y=+p[f>>3]-+p[g>>3];p[d>>3]=+p[d>>3]+ +p[w>>3]*(+p[i>>3]*(+p[h>>3]*(y*(y*.5))));x=x+1|0}while((x|0)<(Hc[k[(k[u>>2]|0)+12>>2]&511](u)|0))}Ec[k[(k[u>>2]|0)+4>>2]&1023](u);x=k[j>>2]|0;if(x)Tqa(x);k[j>>2]=0}m=m+1|0}while((m|0)<(th(k[l>>2]|0)|0));n=uY()|0;nZ(d,e,1,2,4,0,n)|0;uY()|0;o=+p[e>>3];p[b>>3]=o;r=c;return}function fi(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=Rqa(d>>>0>1073741823?-1:d<<2)|0;g=(d|0)>0;if(g)h=0;else{ci(a,b,f,d,e);Tqa(f);return}do{yY(f+(h<<2)|0,k[c+(h<<2)>>2]|0);h=h+1|0}while((h|0)!=(d|0));ci(a,b,f,d,e);if(g)i=0;else{Tqa(f);return}do{g=f+(i<<2)|0;e=k[g>>2]|0;if(e)Tqa(e);k[g>>2]=0;i=i+1|0}while((i|0)!=(d|0));Tqa(f);return}function gi(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+188|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;i[d>>0]=0;vY()|0;bO(k[a+44>>2]|0,d,8);if(!(i[d>>0]|0)){r=b;return}b=e+56|0;d=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,d|0);a=B;B=0;if(a&1){a=Rb()|0;j=Q;l=a;vva(b);Qb(l|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,d|0);a=B;B=0;do if(a&1){m=Rb()|0;n=Q;o=m}else{k[d>>2]=27560;m=e+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,d|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(d);n=q;o=p;break}Yua(c);B=0;p=Ia(40,e|0,66225,72)|0;q=B;B=0;if(!(q&1)?(B=0,Xa(239,p|0,0)|0,p=B,B=0,!(p&1)):0){p=Ab(20)|0;B=0;eb(502,f|0,65553,67);q=B;B=0;do if(!(q&1)){B=0;eb(502,g|0,66298,20);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(f);u=t;v=s;break}B=0;wa(510,h|0,d|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,p|0,f|0,g|0,1213,h|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,p|0,1240,229);B=0;z=0}s=Rb()|0;t=Q;Yua(h);w=t;x=s;y=z}Yua(g);Yua(f);if(y){u=w;v=x}else{A=w;C=x;k[e>>2]=27468;k[b>>2]=27488;k[d>>2]=27560;Yua(m);Ava(d);vva(b);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(p|0);A=u;C=v;k[e>>2]=27468;k[b>>2]=27488;k[d>>2]=27560;Yua(m);Ava(d);vva(b);Qb(C|0)}q=Rb()|0;A=Q;C=q;k[e>>2]=27468;k[b>>2]=27488;k[d>>2]=27560;Yua(m);Ava(d);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function hi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0.0,i=0,j=0.0;c=r;r=r+16|0;d=c+8|0;e=c;p[d>>3]=0.0;p[e>>3]=0.0;f=a+20|0;a=qh(k[f>>2]|0,0)|0;g=+Zc[k[(k[a>>2]|0)+464>>2]&255](a);p[d>>3]=g;if((th(k[f>>2]|0)|0)>1){h=g;a=1;while(1){i=qh(k[f>>2]|0,a)|0;g=+Zc[k[(k[i>>2]|0)+464>>2]&255](i);if(g<h){p[d>>3]=g;j=g}else j=h;a=a+1|0;if((a|0)>=(th(k[f>>2]|0)|0))break;else h=j}}nZ(d,e,1,2,2,0,uY()|0)|0;uY()|0;p[b>>3]=+p[e>>3];r=c;return}function ii(a){a=a|0;var b=0,c=0;b=a+20|0;if((th(k[b>>2]|0)|0)>0)c=0;else return;do{a=qh(k[b>>2]|0,c)|0;Ec[k[(k[a>>2]|0)+484>>2]&1023](a);c=c+1|0}while((c|0)<(th(k[b>>2]|0)|0));return}function ji(a){a=a|0;var b=0,c=0;b=a+20|0;if((th(k[b>>2]|0)|0)>0)c=0;else return;do{a=qh(k[b>>2]|0,c)|0;Ec[k[(k[a>>2]|0)+488>>2]&1023](a);c=c+1|0}while((c|0)<(th(k[b>>2]|0)|0));return}function ki(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0.0,m=0,n=0,o=0.0,q=0.0,s=0,t=0.0;e=r;r=r+16|0;f=e+8|0;g=e+4|0;h=e;k[g>>2]=0;k[h>>2]=0;i=a+44|0;cO(k[i>>2]|0,f,199);hO(k[i>>2]|0,g,0,180);fi(a,h,k[g>>2]|0,k[f>>2]|0,1);a=k[f>>2]|0;i=Rqa(a>>>0>536870911?-1:a<<3)|0;j=i;if((a|0)>0){a=k[h>>2]|0;l=0.0;m=0;while(1){n=qh(a,m)|0;o=+Zc[k[(k[n>>2]|0)+44>>2]&255](n);p[i+(m<<3)>>3]=o;q=l+o;m=m+1|0;if((m|0)>=(k[f>>2]|0)){s=a;t=q;break}else l=q}}else{s=k[h>>2]|0;t=0.0}if(s){Mo(s);Sqa(s)}s=k[g>>2]|0;if(s)Tqa(s);k[g>>2]=0;if(b)p[b>>3]=t;if(!c)Tqa(i);else k[c>>2]=j;if(!d){r=e;return}k[d>>2]=k[f>>2];r=e;return}function li(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0;c=r;r=r+208|0;d=c+196|0;e=c+192|0;f=c+188|0;g=c;h=c+184|0;i=c+48|0;j=c+32|0;l=c+20|0;m=c+8|0;k[h>>2]=0;n=k[b>>2]|0;if(!n){b=Qqa(36)|0;B=0;va(481,b|0);o=B;B=0;if(o&1){o=Rb()|0;q=Q;Sqa(b);s=o;t=q;Qb(s|0)}else u=b}else u=n;n=a+44|0;cO(k[n>>2]|0,e,198);hO(k[n>>2]|0,h,0,176);cO(k[n>>2]|0,f,766);dO(k[n>>2]|0,g,767);n=k[h>>2]|0;a:do if((k[e>>2]|0)>0){b=a+28|0;q=a+20|0;o=n;v=0;b:while(1){w=k[o+(v<<2)>>2]|0;switch(v|0){case 0:{x=938;break}case 1:{x=939;break}case 2:{x=940;break}default:{y=12;break b}}z=Qqa(8)|0;B=0;A=ya(429,k[b>>2]|0)|0;C=B;B=0;if(C&1){D=z;y=55;break}B=0;va(485,z|0);C=B;B=0;if(C&1){D=z;y=55;break}if(k[z>>2]|0){B=0;C=ya(423,4)|0;E=B;B=0;if(E&1){D=z;y=55;break}B=0;eb(505,C|0,A|0,0);A=B;B=0;if(A&1){F=z;G=C;y=41;break}k[z+4>>2]=C}C=Qqa(8)|0;B=0;A=ya(429,k[b>>2]|0)|0;E=B;B=0;if(E&1){H=C;y=57;break}B=0;va(485,C|0);E=B;B=0;if(E&1){H=C;y=57;break}if(k[C>>2]|0){B=0;E=ya(423,4)|0;I=B;B=0;if(I&1){H=C;y=57;break}B=0;eb(505,E|0,A|0,0);A=B;B=0;if(A&1){J=C;K=E;y=49;break}k[C+4>>2]=E}if((th(k[q>>2]|0)|0)>0){E=0;do{A=qh(k[q>>2]|0,E)|0;rd[k[(k[A>>2]|0)+100>>2]&511](A,z,C,w);E=E+1|0}while((E|0)<(th(k[q>>2]|0)|0))}if(k[z>>2]|0){E=k[k[z+4>>2]>>2]|0;Ec[k[(k[E>>2]|0)+12>>2]&1023](E)}if(k[C>>2]|0){E=k[k[C+4>>2]>>2]|0;Ec[k[(k[E>>2]|0)+12>>2]&1023](E)}E=Qqa(40)|0;B=0;A=ya(428,u|0)|0;I=B;B=0;if(I&1){L=E;y=64;break}I=k[f>>2]|0;M=+p[g>>3];k[E>>2]=28024;k[E+4>>2]=A+1;k[E+16>>2]=0;k[E+20>>2]=0;B=0;wa(512,E+8|0,w|0);A=B;B=0;if(A&1){L=E;y=64;break}k[E+24>>2]=I;p[E+32>>3]=M;k[E+12>>2]=z;Oo(u,E)|0;E=Qqa(40)|0;B=0;I=ya(428,u|0)|0;A=B;B=0;if(A&1){N=E;y=65;break}A=k[f>>2]|0;M=+p[g>>3];k[E>>2]=28024;k[E+4>>2]=I+1;k[E+16>>2]=0;k[E+20>>2]=0;B=0;wa(512,E+8|0,x|0);I=B;B=0;if(I&1){N=E;y=65;break}k[E+24>>2]=A;p[E+32>>3]=M;k[E+12>>2]=C;Oo(u,E)|0;v=v+1|0;E=k[h>>2]|0;if((v|0)>=(k[e>>2]|0)){O=E;break a}else o=E}if((y|0)==12){o=i+56|0;v=i+4|0;k[i>>2]=27524;k[o>>2]=27544;B=0;wa(508,i+56|0,v|0);q=B;B=0;if(q&1){q=Rb()|0;P=Q;R=q;vva(o);Qb(R|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[o>>2]=27488;B=0;va(448,v|0);q=B;B=0;do if(q&1){b=Rb()|0;S=Q;T=b}else{k[v>>2]=27560;b=i+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,v|0,d|0);E=B;B=0;if(E&1){E=Rb()|0;A=Q;Yua(d);Yua(b);Ava(v);S=A;T=E;break}Yua(d);B=0;E=Ia(40,i|0,66319,40)|0;A=B;B=0;c:do if(!(A&1)?(B=0,Xa(239,E|0,0)|0,I=B,B=0,!(I&1)):0){I=Ab(20)|0;B=0;eb(502,j|0,65553,67);U=B;B=0;do if(!(U&1)){B=0;eb(502,l|0,66360,15);V=B;B=0;if(V&1){V=Rb()|0;W=Q;Yua(j);X=V;Y=W;break}B=0;wa(510,m|0,v|0);W=B;B=0;if(W&1){W=Rb()|0;Z=W;_=Q;$=1}else{B=0;ua(163,I|0,j|0,l|0,2120,m|0);W=B;B=0;if(W&1)aa=1;else{B=0;eb(503,I|0,1240,229);B=0;aa=0}W=Rb()|0;V=Q;Yua(m);Z=W;_=V;$=aa}Yua(l);Yua(j);if($){X=Z;Y=_}else{ba=Z;ca=_;break c}}else{V=Rb()|0;X=V;Y=Q}while(0);zb(I|0);ba=X;ca=Y}else y=27;while(0);if((y|0)==27){E=Rb()|0;ba=E;ca=Q}k[i>>2]=27468;k[o>>2]=27488;k[v>>2]=27560;Yua(b);Ava(v);vva(o);s=ba;t=ca;Qb(s|0)}while(0);P=S;R=T;vva(o);Qb(R|0)}else if((y|0)==41){v=Rb()|0;q=Q;Sqa(G);da=F;ea=q;fa=v;y=56}else if((y|0)==49){v=Rb()|0;q=Q;Sqa(K);ga=J;ha=q;ia=v;y=58}else if((y|0)==55){v=Rb()|0;da=D;ea=Q;fa=v;y=56}else if((y|0)==57){v=Rb()|0;ga=H;ha=Q;ia=v;y=58}else if((y|0)==64){v=Rb()|0;q=Q;Sqa(L);s=v;t=q;Qb(s|0)}else if((y|0)==65){q=Rb()|0;v=Q;Sqa(N);s=q;t=v;Qb(s|0)}if((y|0)==56){Sqa(da);s=fa;t=ea;Qb(s|0)}else if((y|0)==58){Sqa(ga);s=ia;t=ha;Qb(s|0)}}else O=n;while(0);if(!O){r=c;return}Tqa(O);r=c;return}function mi(a){a=a|0;var b=0,c=0,d=0;b=a+20|0;if((th(k[b>>2]|0)|0)>0)c=0;else return;do{a=qh(k[b>>2]|0,c)|0;if(!a)d=0;else d=ura(a,168,456,0)|0;Ec[k[(k[d>>2]|0)+56>>2]&1023](d);c=c+1|0}while((c|0)<(th(k[b>>2]|0)|0));return}function ni(a){a=a|0;var b=0,c=0,d=0;b=a+20|0;if((th(k[b>>2]|0)|0)>0)c=0;else return;do{a=qh(k[b>>2]|0,c)|0;if(!a)d=0;else d=ura(a,168,456,0)|0;Ec[k[(k[d>>2]|0)+60>>2]&1023](d);c=c+1|0}while((c|0)<(th(k[b>>2]|0)|0));return}function oi(a){a=a|0;var b=0,c=0,d=0;b=a+20|0;if((th(k[b>>2]|0)|0)>0)c=0;else return;do{a=qh(k[b>>2]|0,c)|0;if(!a)d=0;else d=ura(a,168,456,0)|0;Ec[k[(k[d>>2]|0)+444>>2]&1023](d);c=c+1|0}while((c|0)<(th(k[b>>2]|0)|0));return}function pi(a){a=a|0;var b=0,c=0,d=0;b=a+20|0;if((th(k[b>>2]|0)|0)>0)c=0;else return;do{a=qh(k[b>>2]|0,c)|0;if(!a)d=0;else d=ura(a,168,456,0)|0;Ec[k[(k[d>>2]|0)+448>>2]&1023](d);c=c+1|0}while((c|0)<(th(k[b>>2]|0)|0));return}function qi(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=a+20|0;if((th(k[f>>2]|0)|0)>0)g=0;else return;do{a=qh(k[f>>2]|0,g)|0;Dc[k[(k[a>>2]|0)+524>>2]&255](a,b,c,d,e);g=g+1|0}while((g|0)<(th(k[f>>2]|0)|0));return}function ri(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0.0;g=r;r=r+384|0;h=g+364|0;i=g+48|0;j=g+40|0;l=g+32|0;m=g+24|0;n=g+16|0;o=g+8|0;q=g;s=g+360|0;t=g+356|0;u=g+208|0;v=g+344|0;w=g+72|0;x=g+56|0;p[i>>3]=0.0;p[j>>3]=0.0;p[l>>3]=0.0;p[m>>3]=0.0;p[n>>3]=0.0;p[o>>3]=0.0;p[q>>3]=0.0;y=a+20|0;a=th(k[y>>2]|0)|0;k[s>>2]=a;if((a|0)>0){z=0.0;A=0.0;C=0;do{D=qh(k[y>>2]|0,C)|0;z=+Zc[k[(k[D>>2]|0)+540>>2]&255](D)+z;p[n>>3]=z;A=+Zc[k[(k[D>>2]|0)+544>>2]&255](D)+A;p[q>>3]=A;C=C+1|0}while((C|0)<(a|0))}nZ(n,m,1,2,4,0,uY()|0)|0;uY()|0;nZ(q,o,1,2,4,0,uY()|0)|0;uY()|0;nZ(s,t,1,4,1,0,uY()|0)|0;uY()|0;a:do if((k[t>>2]|0)>0){q=u+56|0;n=u+4|0;a=u+56|0;C=u+128|0;D=u+132|0;E=u+36|0;F=u+52|0;G=b+4|0;H=0;while(1){if((H|0)<(k[s>>2]|0)){I=(H|0)%100|0;if((I|0)==0&(EY()|0)){k[u>>2]=27524;k[q>>2]=27544;B=0;wa(508,a|0,n|0);J=B;B=0;if(J&1){K=13;break}k[C>>2]=0;k[D>>2]=-1;k[u>>2]=27468;k[q>>2]=27488;B=0;va(448,n|0);J=B;B=0;if(J&1){K=14;break}k[n>>2]=27560;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[F>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,n|0,h|0);J=B;B=0;if(J&1){K=12;break}Yua(h);B=0;J=Ia(40,u|0,66376,1)|0;L=B;B=0;if(L&1){K=24;break}B=0;L=Ia(40,J|0,66378,28)|0;J=B;B=0;if(J&1){K=24;break}B=0;J=Sa(1,L|0,+(+(H|0)/+(k[s>>2]|0)*100.0))|0;L=B;B=0;if(L&1){K=24;break}B=0;Ia(40,J|0,66407,3)|0;J=B;B=0;if(J&1){K=24;break}B=0;wa(510,v|0,n|0);J=B;B=0;if(J&1){K=24;break}B=0;ya(425,v|0)|0;J=B;B=0;if(J&1){K=25;break}Yua(v);k[u>>2]=27468;k[q>>2]=27488;k[n>>2]=27560;Yua(E);Ava(n);vva(q)}J=qh(k[y>>2]|0,H)|0;Lc[k[(k[J>>2]|0)+528>>2]&15](J,b,l,d,e,f,+p[m>>3],+p[o>>3]);p[j>>3]=+p[l>>3]+ +p[j>>3];M=I}else M=(H|0)%100|0;if((M|0)==0?(k[b>>2]|0)!=0:0){I=k[k[G>>2]>>2]|0;Ec[k[(k[I>>2]|0)+12>>2]&1023](I)}H=H+1|0;if((H|0)>=(k[t>>2]|0))break a}if((K|0)==12){H=Rb()|0;G=Q;Yua(h);Yua(E);Ava(n);N=G;O=H;K=15}else if((K|0)==13){H=Rb()|0;P=Q;R=H;vva(q);Qb(R|0)}else if((K|0)==14){H=Rb()|0;N=Q;O=H;K=15}else if((K|0)==24){H=Rb()|0;S=Q;T=H;K=26}else if((K|0)==25){H=Rb()|0;G=Q;Yua(v);S=G;T=H;K=26}if((K|0)==15){P=N;R=O;vva(q);Qb(R|0)}else if((K|0)==26){k[u>>2]=27468;k[q>>2]=27488;k[n>>2]=27560;Yua(E);Ava(n);vva(q);U=S;V=T;Qb(V|0)}}while(0);b:do if(EY()|0){T=w+56|0;S=w+4|0;k[w>>2]=27524;k[T>>2]=27544;B=0;wa(508,w+56|0,S|0);u=B;B=0;if(u&1){u=Rb()|0;W=Q;X=u;vva(T);Qb(X|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[T>>2]=27488;B=0;va(448,S|0);u=B;B=0;do if(u&1){R=Rb()|0;Y=Q;Z=R}else{k[S>>2]=27560;R=w+36|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[w+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,S|0,h|0);O=B;B=0;if(O&1){O=Rb()|0;N=Q;Yua(h);Yua(R);Ava(S);Y=N;Z=O;break}Yua(h);B=0;Ia(40,w|0,149177,1)|0;O=B;B=0;do if(!(O&1)?(B=0,wa(510,x|0,S|0),N=B,B=0,!(N&1)):0){B=0;ya(425,x|0)|0;N=B;B=0;if(N&1){N=Rb()|0;P=Q;Yua(x);_=P;$=N;break}else{Yua(x);k[w>>2]=27468;k[T>>2]=27488;k[S>>2]=27560;Yua(R);Ava(S);vva(T);break b}}else K=44;while(0);if((K|0)==44){O=Rb()|0;_=Q;$=O}k[w>>2]=27468;k[T>>2]=27488;k[S>>2]=27560;Yua(R);Ava(S);vva(T);U=_;V=$;Qb(V|0)}while(0);W=Y;X=Z;vva(T);Qb(X|0)}while(0);if(!(k[b>>2]|0)){aa=uY()|0;nZ(j,i,1,2,4,0,aa)|0;uY()|0;ba=+p[i>>3];p[c>>3]=ba;r=g;return}X=k[k[b+4>>2]>>2]|0;Ec[k[(k[X>>2]|0)+12>>2]&1023](X);aa=uY()|0;nZ(j,i,1,2,4,0,aa)|0;uY()|0;ba=+p[i>>3];p[c>>3]=ba;r=g;return}function si(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;h=r;r=r+352|0;i=h+340|0;j=h+24|0;l=h+16|0;m=h+8|0;n=h;o=h+336|0;q=h+332|0;s=h+184|0;t=h+320|0;u=h+48|0;v=h+32|0;p[j>>3]=0.0;p[l>>3]=0.0;p[m>>3]=0.0;p[n>>3]=0.0;if(!(k[c>>2]|0))w=0;else{x=k[k[c+4>>2]>>2]|0;w=Hc[k[(k[x>>2]|0)+52>>2]&511](x)|0}x=a+20|0;a=th(k[x>>2]|0)|0;k[o>>2]=a;if((a|0)>0){y=0.0;z=0.0;c=0;do{A=qh(k[x>>2]|0,c)|0;y=+Zc[k[(k[A>>2]|0)+540>>2]&255](A)+y;p[l>>3]=y;z=+Zc[k[(k[A>>2]|0)+544>>2]&255](A)+z;p[n>>3]=z;c=c+1|0}while((c|0)<(a|0))}nZ(l,j,1,2,4,0,uY()|0)|0;uY()|0;nZ(n,m,1,2,4,0,uY()|0)|0;uY()|0;nZ(o,q,1,4,1,0,uY()|0)|0;uY()|0;a:do if((k[q>>2]|0)>0){n=s+56|0;l=s+4|0;a=s+56|0;c=s+128|0;A=s+132|0;C=s+36|0;D=s+52|0;E=b+4|0;F=0;while(1){if((F|0)<(k[o>>2]|0)){if(g?((F|0)%100|0|0)==0&(EY()|0):0){k[s>>2]=27524;k[n>>2]=27544;B=0;wa(508,a|0,l|0);G=B;B=0;if(G&1){H=15;break}k[c>>2]=0;k[A>>2]=-1;k[s>>2]=27468;k[n>>2]=27488;B=0;va(448,l|0);G=B;B=0;if(G&1){H=16;break}k[l>>2]=27560;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[D>>2]=16;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;B=0;wa(509,l|0,i|0);G=B;B=0;if(G&1){H=14;break}Yua(i);B=0;G=Ia(40,s|0,66376,1)|0;I=B;B=0;if(I&1){H=26;break}B=0;I=Ia(40,G|0,66378,28)|0;G=B;B=0;if(G&1){H=26;break}B=0;G=Sa(1,I|0,+(+(F|0)/+(k[o>>2]|0)*100.0))|0;I=B;B=0;if(I&1){H=26;break}B=0;Ia(40,G|0,66411,4)|0;G=B;B=0;if(G&1){H=26;break}B=0;wa(510,t|0,l|0);G=B;B=0;if(G&1){H=26;break}B=0;ya(424,t|0)|0;G=B;B=0;if(G&1){H=27;break}Yua(t);k[s>>2]=27468;k[n>>2]=27488;k[l>>2]=27560;Yua(C);Ava(l);vva(n)}G=qh(k[x>>2]|0,F)|0;Lc[k[(k[G>>2]|0)+532>>2]&15](G,b,w,d,e,f,+p[j>>3],+p[m>>3])}if(((F|0)%100|0|0)==0?(k[b>>2]|0)!=0:0){G=k[k[E>>2]>>2]|0;Ec[k[(k[G>>2]|0)+12>>2]&1023](G)}F=F+1|0;if((F|0)>=(k[q>>2]|0))break a}if((H|0)==14){F=Rb()|0;E=Q;Yua(i);Yua(C);Ava(l);J=E;K=F;H=17}else if((H|0)==15){F=Rb()|0;L=Q;M=F;vva(n);Qb(M|0)}else if((H|0)==16){F=Rb()|0;J=Q;K=F;H=17}else if((H|0)==26){F=Rb()|0;N=Q;O=F;H=28}else if((H|0)==27){F=Rb()|0;E=Q;Yua(t);N=E;O=F;H=28}if((H|0)==17){L=J;M=K;vva(n);Qb(M|0)}else if((H|0)==28){k[s>>2]=27468;k[n>>2]=27488;k[l>>2]=27560;Yua(C);Ava(l);vva(n);P=N;R=O;Qb(R|0)}}while(0);b:do if(g?EY()|0:0){O=u+56|0;N=u+4|0;k[u>>2]=27524;k[O>>2]=27544;B=0;wa(508,u+56|0,N|0);s=B;B=0;if(s&1){s=Rb()|0;S=Q;T=s;vva(O);Qb(T|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[O>>2]=27488;B=0;va(448,N|0);s=B;B=0;do if(s&1){M=Rb()|0;U=Q;V=M}else{k[N>>2]=27560;M=u+36|0;k[M>>2]=0;k[M+4>>2]=0;k[M+8>>2]=0;k[M+12>>2]=0;k[u+52>>2]=16;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;B=0;wa(509,N|0,i|0);K=B;B=0;if(K&1){K=Rb()|0;J=Q;Yua(i);Yua(M);Ava(N);U=J;V=K;break}Yua(i);B=0;Ia(40,u|0,149177,1)|0;K=B;B=0;do if(!(K&1)?(B=0,wa(510,v|0,N|0),J=B,B=0,!(J&1)):0){B=0;ya(424,v|0)|0;J=B;B=0;if(J&1){J=Rb()|0;L=Q;Yua(v);W=L;X=J;break}else{Yua(v);k[u>>2]=27468;k[O>>2]=27488;k[N>>2]=27560;Yua(M);Ava(N);vva(O);break b}}else H=47;while(0);if((H|0)==47){K=Rb()|0;W=Q;X=K}k[u>>2]=27468;k[O>>2]=27488;k[N>>2]=27560;Yua(M);Ava(N);vva(O);P=W;R=X;Qb(R|0)}while(0);S=U;T=V;vva(O);Qb(T|0)}while(0);if(!w){r=h;return}Tqa(w);r=h;return}function ti(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0.0,l=0.0,m=0.0,n=0.0,o=0.0;c=r;r=r+32|0;d=c+24|0;e=c+16|0;f=c+8|0;g=c;if(!(k[b>>2]|0))h=0;else{i=k[k[b+4>>2]>>2]|0;h=Hc[k[(k[i>>2]|0)+52>>2]&511](i)|0}p[e>>3]=0.0;p[g>>3]=0.0;i=a+20|0;if((th(k[i>>2]|0)|0)>0){j=0.0;l=0.0;a=0;do{b=qh(k[i>>2]|0,a)|0;j=+Zc[k[(k[b>>2]|0)+540>>2]&255](b)+j;p[g>>3]=j;l=+id[k[(k[b>>2]|0)+536>>2]&63](b,h)+l;p[e>>3]=l;a=a+1|0}while((a|0)<(th(k[i>>2]|0)|0))}nZ(g,f,1,2,4,0,uY()|0)|0;uY()|0;nZ(e,d,1,2,4,0,uY()|0)|0;uY()|0;if(!h){m=+p[d>>3];n=+p[f>>3];o=m/n;r=c;return +o}Tqa(h);m=+p[d>>3];n=+p[f>>3];o=m/n;r=c;return +o}function ui(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0;c=r;r=r+192|0;d=c+172|0;e=c+168|0;f=c+164|0;g=c+160|0;h=c+156|0;i=c+152|0;j=c+16|0;l=c;k[e>>2]=0;k[f>>2]=0;m=Qqa(4)|0;k[m>>2]=39316;n=Qqa(4)|0;k[n>>2]=39240;o=Qqa(8)|0;q=a+24|0;B=0;s=Xa(244,k[q>>2]|0,506)|0;t=B;B=0;a:do if(!(t&1)?(B=0,va(485,o|0),u=B,B=0,!(u&1)):0){do if(k[o>>2]|0){B=0;u=ya(423,4)|0;v=B;B=0;if(v&1){w=21;break a}B=0;eb(505,u|0,s|0,0);v=B;B=0;if(v&1){v=Rb()|0;x=Q;Sqa(u);y=x;z=v;break a}else{k[o+4>>2]=u;break}}while(0);u=Qqa(8)|0;B=0;v=Xa(244,k[q>>2]|0,506)|0;x=B;B=0;b:do if(!(x&1)?(B=0,va(485,u|0),A=B,B=0,!(A&1)):0){do if(k[u>>2]|0){B=0;A=ya(423,4)|0;C=B;B=0;if(C&1){w=23;break b}B=0;eb(505,A|0,v|0,0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Sqa(A);E=D;F=C;break b}else{k[u+4>>2]=A;break}}while(0);A=a+44|0;hO(k[A>>2]|0,f,0,131);cO(k[A>>2]|0,g,159);UZ(e,a,141,608);C=a+20|0;if((th(k[C>>2]|0)|0)>0){D=0;do{G=qh(k[C>>2]|0,D)|0;Kda(m,o,u,k[f>>2]|0,G);D=D+1|0}while((D|0)<(th(k[C>>2]|0)|0))}if((k[u>>2]|0)!=0?(D=u+4|0,G=k[k[D>>2]>>2]|0,Ec[k[(k[G>>2]|0)+12>>2]&1023](G),(k[u>>2]|0)!=0):0){G=k[k[D>>2]>>2]|0;H=Hc[k[(k[G>>2]|0)+52>>2]&511](G)|0}else H=0;if((th(k[q>>2]|0)|0)>0){G=o+4|0;D=0;do{I=qh(k[q>>2]|0,D)|0;J=H+((Qn(I)|0)<<3)|0;if(+p[J>>3]==1.0){J=Rn(I)|0;K=(k[f>>2]|0)+(J<<2)|0;k[K>>2]=(k[K>>2]|0)+1}K=Rn(I)|0;J=k[g>>2]|0;if(((J|0)!=0?(k[(k[f>>2]|0)+(K<<2)>>2]|0)>(J|0):0)?(J=Qn(I)|0,K=Qn(I)|0,(k[o>>2]|0)!=0):0){I=k[k[G>>2]>>2]|0;Jc[k[(k[I>>2]|0)+20>>2]&1](I,J,+p[(k[e>>2]|0)+(K<<3)>>3],0)}D=D+1|0}while((D|0)<(th(k[q>>2]|0)|0))}D=k[A>>2]|0;G=k[f>>2]|0;qO(D,G,th(k[q>>2]|0)|0,131);if((k[o>>2]|0)!=0?(G=o+4|0,D=k[k[G>>2]>>2]|0,Ec[k[(k[D>>2]|0)+12>>2]&1023](D),(k[o>>2]|0)!=0):0){D=k[k[G>>2]>>2]|0;L=Hc[k[(k[D>>2]|0)+52>>2]&511](D)|0}else L=0;D=k[f>>2]|0;if(D)Tqa(D);k[f>>2]=0;if(H)Tqa(H);D=k[e>>2]|0;if(D)Tqa(D);k[e>>2]=0;if((k[o>>2]|0)!=0?(D=k[o+4>>2]|0,(D|0)!=0):0){G=k[D>>2]|0;if(G)Ec[k[(k[G>>2]|0)+4>>2]&1023](G);Sqa(D)}Sqa(o);if((k[u>>2]|0)!=0?(D=k[u+4>>2]|0,(D|0)!=0):0){G=k[D>>2]|0;if(G)Ec[k[(k[G>>2]|0)+4>>2]&1023](G);Sqa(D)}Sqa(u);WZ(a,L,141,608);if(L)Tqa(L);oda(n,a);D=Qqa(8)|0;B=0;G=Xa(244,k[q>>2]|0,506)|0;K=B;B=0;c:do if(K&1)w=69;else{B=0;va(485,D|0);J=B;B=0;if(J&1){w=69;break}do if(k[D>>2]|0){B=0;J=ya(423,4)|0;I=B;B=0;if(I&1){w=69;break c}B=0;eb(505,J|0,G|0,0);I=B;B=0;if(I&1){I=Rb()|0;M=Q;Sqa(J);N=M;O=I;break c}else{k[D+4>>2]=J;break}}while(0);if((th(k[C>>2]|0)|0)>0){J=0;do{Mda(m,D,qh(k[C>>2]|0,J)|0);J=J+1|0}while((J|0)<(th(k[C>>2]|0)|0))}do if(!(k[D>>2]|0))P=0;else{J=D+4|0;I=k[k[J>>2]>>2]|0;Ec[k[(k[I>>2]|0)+12>>2]&1023](I);if(!(k[D>>2]|0)){P=0;break}I=k[k[J>>2]>>2]|0;M=Hc[k[(k[I>>2]|0)+52>>2]&511](I)|0;if(!(k[D>>2]|0)){P=M;break}I=k[J>>2]|0;if(!I){P=M;break}J=k[I>>2]|0;if(J)Ec[k[(k[J>>2]|0)+4>>2]&1023](J);Sqa(I);P=M}while(0);Sqa(D);k[h>>2]=0;if((th(k[q>>2]|0)|0)>0){M=0;do{I=qh(k[q>>2]|0,M)|0;do if(Tn(I,506)|0){J=P+((Qn(I)|0)<<3)|0;if(!(+p[J>>3]==1.0)){$n(I);break}bo(I);if(fo(I)|0)break;k[h>>2]=(k[h>>2]|0)+1}while(0);M=M+1|0}while((M|0)<(th(k[q>>2]|0)|0))}if(P)Tqa(P);Ec[k[(k[m>>2]|0)+4>>2]&1023](m);Ec[k[(k[n>>2]|0)+4>>2]&1023](n);nZ(h,i,1,4,4,0,uY()|0)|0;uY()|0;M=k[i>>2]|0;k[h>>2]=M;p[b>>3]=+(M|0);if(!(CY()|0)){Eh(a);r=c;return}M=j+56|0;I=j+4|0;k[j>>2]=27524;k[M>>2]=27544;B=0;wa(508,j+56|0,I|0);J=B;B=0;if(J&1){J=Rb()|0;R=Q;S=J;vva(M);Qb(S|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[M>>2]=27488;B=0;va(448,I|0);J=B;B=0;do if(J&1){T=Rb()|0;U=Q;V=T}else{k[I>>2]=27560;T=j+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[j+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,I|0,d|0);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Yua(d);Yua(T);Ava(I);U=X;V=W;break}Yua(d);B=0;W=Ia(40,j|0,66416,40)|0;X=B;B=0;do if(X&1)w=95;else{B=0;Y=Xa(242,W|0,k[h>>2]|0)|0;Z=B;B=0;if(Z&1){w=95;break}B=0;Ia(40,Y|0,149177,1)|0;Y=B;B=0;if(Y&1){w=95;break}B=0;wa(510,l|0,I|0);Y=B;B=0;if(Y&1){w=95;break}B=0;ya(425,l|0)|0;Y=B;B=0;if(Y&1){Y=Rb()|0;Z=Q;Yua(l);_=Y;$=Z;break}Yua(l);k[j>>2]=27468;k[M>>2]=27488;k[I>>2]=27560;Yua(T);Ava(I);vva(M);Eh(a);r=c;return}while(0);if((w|0)==95){W=Rb()|0;_=W;$=Q}k[j>>2]=27468;k[M>>2]=27488;k[I>>2]=27560;Yua(T);Ava(I);vva(M);aa=_;ba=$;Qb(aa|0)}while(0);R=U;S=V;vva(M);Qb(S|0)}while(0);if((w|0)==69){C=Rb()|0;N=Q;O=C}Sqa(D);aa=O;ba=N;Qb(aa|0)}else w=23;while(0);if((w|0)==23){v=Rb()|0;E=Q;F=v}Sqa(u);aa=F;ba=E;Qb(aa|0)}else w=21;while(0);if((w|0)==21){w=Rb()|0;y=Q;z=w}Sqa(o);aa=z;ba=y;Qb(aa|0)}function vi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;c=r;r=r+176|0;d=c+160|0;e=c+156|0;f=c+152|0;g=c+16|0;h=c;i=Qqa(4)|0;k[i>>2]=39316;j=Qqa(8)|0;l=a+24|0;B=0;m=Xa(244,k[l>>2]|0,506)|0;n=B;B=0;a:do if(!(n&1)?(B=0,va(485,j|0),o=B,B=0,!(o&1)):0){do if(k[j>>2]|0){B=0;o=ya(423,4)|0;q=B;B=0;if(q&1){s=17;break a}B=0;eb(505,o|0,m|0,0);q=B;B=0;if(q&1){q=Rb()|0;t=Q;Sqa(o);u=t;v=q;break a}else{k[j+4>>2]=o;break}}while(0);o=a+20|0;if((th(k[o>>2]|0)|0)>0){q=0;do{Mda(i,j,qh(k[o>>2]|0,q)|0);q=q+1|0}while((q|0)<(th(k[o>>2]|0)|0))}if((k[j>>2]|0)!=0?(o=j+4|0,q=k[k[o>>2]>>2]|0,Ec[k[(k[q>>2]|0)+12>>2]&1023](q),(k[j>>2]|0)!=0):0){q=k[k[o>>2]>>2]|0;t=Hc[k[(k[q>>2]|0)+52>>2]&511](q)|0;if((k[j>>2]|0)!=0?(q=k[o>>2]|0,(q|0)!=0):0){o=k[q>>2]|0;if(o)Ec[k[(k[o>>2]|0)+4>>2]&1023](o);Sqa(q);w=t}else w=t}else w=0;Sqa(j);Ec[k[(k[i>>2]|0)+4>>2]&1023](i);k[e>>2]=0;if((th(k[l>>2]|0)|0)>0){t=0;q=0;while(1){o=qh(k[l>>2]|0,q)|0;do if(Tn(o,492)|0){x=w+((Qn(o)|0)<<3)|0;if(!(+p[x>>3]==1.0)){$n(o);y=t;break}bo(o);if(!(fo(o)|0)){x=t+1|0;k[e>>2]=x;y=x}else y=t}else y=t;while(0);q=q+1|0;if((q|0)>=(th(k[l>>2]|0)|0))break;else t=y}}if(w)Tqa(w);nZ(e,f,1,4,4,0,uY()|0)|0;uY()|0;t=k[f>>2]|0;k[e>>2]=t;p[b>>3]=+(t|0);if(!(CY()|0)){r=c;return}t=g+56|0;q=g+4|0;k[g>>2]=27524;k[t>>2]=27544;B=0;wa(508,g+56|0,q|0);o=B;B=0;if(o&1){o=Rb()|0;z=Q;A=o;vva(t);Qb(A|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[t>>2]=27488;B=0;va(448,q|0);o=B;B=0;do if(o&1){x=Rb()|0;C=Q;D=x}else{k[q>>2]=27560;x=g+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[g+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,q|0,d|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(d);Yua(x);Ava(q);C=F;D=E;break}Yua(d);B=0;E=Ia(40,g|0,66457,41)|0;F=B;B=0;do if(((!(F&1)?(B=0,G=Xa(242,E|0,k[e>>2]|0)|0,H=B,B=0,!(H&1)):0)?(B=0,Ia(40,G|0,149177,1)|0,G=B,B=0,!(G&1)):0)?(B=0,wa(510,h|0,q|0),G=B,B=0,!(G&1)):0){B=0;ya(425,h|0)|0;G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(h);I=G;J=H;break}Yua(h);k[g>>2]=27468;k[t>>2]=27488;k[q>>2]=27560;Yua(x);Ava(q);vva(t);r=c;return}else s=43;while(0);if((s|0)==43){E=Rb()|0;I=E;J=Q}k[g>>2]=27468;k[t>>2]=27488;k[q>>2]=27560;Yua(x);Ava(q);vva(t);K=I;L=J;Qb(K|0)}while(0);z=C;A=D;vva(t);Qb(A|0)}else s=17;while(0);if((s|0)==17){s=Rb()|0;u=Q;v=s}Sqa(j);K=v;L=u;Qb(K|0)}function wi(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;sY(g);f=Qqa(200)|0;B=0;va(476,f|0);i=B;B=0;if(i&1){i=Rb()|0;Sqa(f);Qb(i|0)}else{i=a+16|0;k[i>>2]=f;SX(f,0,0);f=zY(e,1)|0;SX(k[i>>2]|0,1,0);xi(a,b,c,d,f,h,0);SX(k[i>>2]|0,2,0);i=k[a+44>>2]|0;a=Qqa(12)|0;k[a>>2]=27752;k[a+4>>2]=g;k[a+8>>2]=2;YN(i,a);return}}function xi(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0;h=r;r=r+960|0;i=h+936|0;j=h+920|0;l=h+904|0;m=h+768|0;n=h+924|0;o=h+616|0;p=h+908|0;q=h+480|0;s=h+752|0;t=h+328|0;u=h+464|0;v=h+192|0;w=h+176|0;x=h+40|0;y=h+24|0;z=h+12|0;A=h;C=vY()|0;D=a+4|0;k[D>>2]=e;k[a+12>>2]=(k[a>>2]|0)+-1;E=Qqa(36)|0;B=0;va(481,E|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Sqa(E);H=G;I=F;Qb(I|0)}k[a+48>>2]=E;E=(C|0)==0;if(E)J=Xsa(b,c,65360)|0;else J=0;c=Qqa(112)|0;B=0;ua(164,c|0,J|0,e|0,f|0,g|0);g=B;B=0;if(g&1){g=Rb()|0;f=Q;Sqa(c);H=f;I=g;Qb(I|0)}g=a+8|0;wh(0,g,a,c,k[D>>2]|0);f=Xsa(d,(Lta(d)|0)+1|0,65363)|0;d=a+20|0;e=a+24|0;b=a+28|0;C=a+40|0;F=a+32|0;G=a+36|0;K=a+44|0;tZ(d,e,b,C,F,G,K,c,f,159121,k[D>>2]|0,k[a>>2]|0,k[g>>2]|0);a:do if((k[a>>2]|0)>0){D=m+56|0;L=m+4|0;M=m+56|0;N=m+128|0;O=m+132|0;P=m+36|0;R=m+52|0;S=o+56|0;T=o+4|0;U=o+56|0;V=o+128|0;W=o+132|0;X=o+36|0;Y=o+52|0;Z=q+56|0;_=q+4|0;$=q+56|0;aa=q+128|0;ba=q+132|0;ca=q+36|0;da=q+52|0;ea=t+56|0;fa=t+4|0;ga=t+56|0;ha=t+128|0;ia=t+132|0;ja=t+36|0;ka=t+52|0;la=v+56|0;ma=v+4|0;na=v+56|0;oa=v+128|0;pa=v+132|0;qa=v+36|0;ra=v+52|0;sa=0;while(1){if(AY()|0){k[m>>2]=27524;k[D>>2]=27544;B=0;wa(508,M|0,L|0);ta=B;B=0;if(ta&1){xa=13;break}k[N>>2]=0;k[O>>2]=-1;k[m>>2]=27468;k[D>>2]=27488;B=0;va(448,L|0);ta=B;B=0;if(ta&1){xa=14;break}k[L>>2]=27560;k[P>>2]=0;k[P+4>>2]=0;k[P+8>>2]=0;k[P+12>>2]=0;k[R>>2]=16;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;B=0;wa(509,L|0,i|0);ta=B;B=0;if(ta&1){xa=12;break}Yua(i);B=0;ta=Ia(40,m|0,65365,47)|0;za=B;B=0;if(za&1){xa=25;break}B=0;za=ya(427,k[(k[g>>2]|0)+(sa<<2)>>2]|0)|0;Aa=B;B=0;if(Aa&1){xa=25;break}Aa=Lta(za)|0;B=0;Ba=Ia(40,ta|0,za|0,Aa|0)|0;Aa=B;B=0;if(Aa&1){xa=25;break}B=0;Ia(40,Ba|0,136770,2)|0;Ba=B;B=0;if(Ba&1){xa=25;break}B=0;wa(510,n|0,L|0);Ba=B;B=0;if(Ba&1){xa=25;break}B=0;ya(425,n|0)|0;Ba=B;B=0;if(Ba&1){xa=26;break}Yua(n);k[m>>2]=27468;k[D>>2]=27488;k[L>>2]=27560;Yua(P);Ava(L);vva(D)}Ba=k[(k[g>>2]|0)+(sa<<2)>>2]|0;yh(a,Ba,Ba);if(!sa){if(AY()|0){k[o>>2]=27524;k[S>>2]=27544;B=0;wa(508,U|0,T|0);Aa=B;B=0;if(Aa&1){xa=34;break}k[V>>2]=0;k[W>>2]=-1;k[o>>2]=27468;k[S>>2]=27488;B=0;va(448,T|0);Aa=B;B=0;if(Aa&1){xa=35;break}k[T>>2]=27560;k[X>>2]=0;k[X+4>>2]=0;k[X+8>>2]=0;k[X+12>>2]=0;k[Y>>2]=16;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;B=0;wa(509,T|0,i|0);Aa=B;B=0;if(Aa&1){xa=33;break}Yua(i);B=0;Ia(40,o|0,65450,27)|0;Aa=B;B=0;if(Aa&1){xa=42;break}B=0;wa(510,p|0,T|0);Aa=B;B=0;if(Aa&1){xa=42;break}B=0;ya(425,p|0)|0;Aa=B;B=0;if(Aa&1){xa=43;break}Yua(p);k[o>>2]=27468;k[S>>2]=27488;k[T>>2]=27560;Yua(X);Ava(T);vva(S)}BZ(k[b>>2]|0,k[K>>2]|0)}if(AY()|0){k[q>>2]=27524;k[Z>>2]=27544;B=0;wa(508,$|0,_|0);Aa=B;B=0;if(Aa&1){xa=51;break}k[aa>>2]=0;k[ba>>2]=-1;k[q>>2]=27468;k[Z>>2]=27488;B=0;va(448,_|0);Aa=B;B=0;if(Aa&1){xa=52;break}k[_>>2]=27560;k[ca>>2]=0;k[ca+4>>2]=0;k[ca+8>>2]=0;k[ca+12>>2]=0;k[da>>2]=16;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;B=0;wa(509,_|0,i|0);Aa=B;B=0;if(Aa&1){xa=50;break}Yua(i);B=0;Ia(40,q|0,65478,33)|0;Aa=B;B=0;if(Aa&1){xa=59;break}B=0;wa(510,s|0,_|0);Aa=B;B=0;if(Aa&1){xa=59;break}B=0;ya(425,s|0)|0;Aa=B;B=0;if(Aa&1){xa=60;break}Yua(s);k[q>>2]=27468;k[Z>>2]=27488;k[_>>2]=27560;Yua(ca);Ava(_);vva(Z)}YZ(k[e>>2]|0,k[F>>2]|0,k[K>>2]|0,Ba);if(AY()|0){k[t>>2]=27524;k[ea>>2]=27544;B=0;wa(508,ga|0,fa|0);Aa=B;B=0;if(Aa&1){xa=67;break}k[ha>>2]=0;k[ia>>2]=-1;k[t>>2]=27468;k[ea>>2]=27488;B=0;va(448,fa|0);Aa=B;B=0;if(Aa&1){xa=68;break}k[fa>>2]=27560;k[ja>>2]=0;k[ja+4>>2]=0;k[ja+8>>2]=0;k[ja+12>>2]=0;k[ka>>2]=16;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;B=0;wa(509,fa|0,i|0);Aa=B;B=0;if(Aa&1){xa=66;break}Yua(i);B=0;Ia(40,t|0,65512,40)|0;Aa=B;B=0;if(Aa&1){xa=75;break}B=0;wa(510,u|0,fa|0);Aa=B;B=0;if(Aa&1){xa=75;break}B=0;ya(425,u|0)|0;Aa=B;B=0;if(Aa&1){xa=76;break}Yua(u);k[t>>2]=27468;k[ea>>2]=27488;k[fa>>2]=27560;Yua(ja);Ava(fa);vva(ea)}zZ(k[e>>2]|0,k[K>>2]|0,Ba);if(AY()|0){k[v>>2]=27524;k[la>>2]=27544;B=0;wa(508,na|0,ma|0);Ba=B;B=0;if(Ba&1){xa=83;break}k[oa>>2]=0;k[pa>>2]=-1;k[v>>2]=27468;k[la>>2]=27488;B=0;va(448,ma|0);Ba=B;B=0;if(Ba&1){xa=84;break}k[ma>>2]=27560;k[qa>>2]=0;k[qa+4>>2]=0;k[qa+8>>2]=0;k[qa+12>>2]=0;k[ra>>2]=16;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;B=0;wa(509,ma|0,i|0);Ba=B;B=0;if(Ba&1){xa=82;break}Yua(i);B=0;Ia(40,v|0,65413,36)|0;Ba=B;B=0;if(Ba&1){xa=91;break}B=0;wa(510,w|0,ma|0);Ba=B;B=0;if(Ba&1){xa=91;break}B=0;ya(425,w|0)|0;Ba=B;B=0;if(Ba&1){xa=92;break}Yua(w);k[v>>2]=27468;k[la>>2]=27488;k[ma>>2]=27560;Yua(qa);Ava(ma);vva(la)}XZ(k[d>>2]|0,k[G>>2]|0,k[e>>2]|0,k[b>>2]|0,k[C>>2]|0,k[K>>2]|0)|0;sa=sa+1|0;if((sa|0)>=(k[a>>2]|0))break a}switch(xa|0){case 12:{sa=Rb()|0;ra=Q;Yua(i);Yua(P);Ava(L);Ca=ra;Da=sa;xa=15;break}case 13:{sa=Rb()|0;Ea=Q;Fa=sa;vva(D);Qb(Fa|0);break}case 14:{sa=Rb()|0;Ca=Q;Da=sa;xa=15;break}case 25:{sa=Rb()|0;Ga=Q;Ha=sa;xa=27;break}case 26:{sa=Rb()|0;ra=Q;Yua(n);Ga=ra;Ha=sa;xa=27;break}case 33:{sa=Rb()|0;ra=Q;Yua(i);Yua(X);Ava(T);Ja=ra;Ka=sa;xa=36;break}case 34:{sa=Rb()|0;La=Q;Ma=sa;vva(S);Qb(Ma|0);break}case 35:{sa=Rb()|0;Ja=Q;Ka=sa;xa=36;break}case 42:{sa=Rb()|0;Na=Q;Oa=sa;xa=44;break}case 43:{sa=Rb()|0;ra=Q;Yua(p);Na=ra;Oa=sa;xa=44;break}case 50:{sa=Rb()|0;ra=Q;Yua(i);Yua(ca);Ava(_);Pa=ra;Qa=sa;xa=53;break}case 51:{sa=Rb()|0;Ra=Q;Sa=sa;vva(Z);Qb(Sa|0);break}case 52:{sa=Rb()|0;Pa=Q;Qa=sa;xa=53;break}case 59:{sa=Rb()|0;Ta=Q;Ua=sa;xa=61;break}case 60:{sa=Rb()|0;ra=Q;Yua(s);Ta=ra;Ua=sa;xa=61;break}case 66:{sa=Rb()|0;ra=Q;Yua(i);Yua(ja);Ava(fa);Va=ra;Wa=sa;xa=69;break}case 67:{sa=Rb()|0;Ya=Q;Za=sa;vva(ea);Qb(Za|0);break}case 68:{sa=Rb()|0;Va=Q;Wa=sa;xa=69;break}case 75:{sa=Rb()|0;_a=Q;$a=sa;xa=77;break}case 76:{sa=Rb()|0;ra=Q;Yua(u);_a=ra;$a=sa;xa=77;break}case 82:{sa=Rb()|0;ra=Q;Yua(i);Yua(qa);Ava(ma);ab=ra;bb=sa;xa=85;break}case 83:{sa=Rb()|0;cb=Q;db=sa;vva(la);Qb(db|0);break}case 84:{sa=Rb()|0;ab=Q;bb=sa;xa=85;break}case 91:{sa=Rb()|0;fb=Q;gb=sa;xa=93;break}case 92:{sa=Rb()|0;ra=Q;Yua(w);fb=ra;gb=sa;xa=93;break}}switch(xa|0){case 15:{Ea=Ca;Fa=Da;vva(D);Qb(Fa|0);break}case 27:{k[m>>2]=27468;k[D>>2]=27488;k[L>>2]=27560;Yua(P);Ava(L);vva(D);H=Ga;I=Ha;Qb(I|0);break}case 36:{La=Ja;Ma=Ka;vva(S);Qb(Ma|0);break}case 44:{k[o>>2]=27468;k[S>>2]=27488;k[T>>2]=27560;Yua(X);Ava(T);vva(S);H=Na;I=Oa;Qb(I|0);break}case 53:{Ra=Pa;Sa=Qa;vva(Z);Qb(Sa|0);break}case 61:{k[q>>2]=27468;k[Z>>2]=27488;k[_>>2]=27560;Yua(ca);Ava(_);vva(Z);H=Ta;I=Ua;Qb(I|0);break}case 69:{Ya=Va;Za=Wa;vva(ea);Qb(Za|0);break}case 77:{k[t>>2]=27468;k[ea>>2]=27488;k[fa>>2]=27560;Yua(ja);Ava(fa);vva(ea);H=_a;I=$a;Qb(I|0);break}case 85:{cb=ab;db=bb;vva(la);Qb(db|0);break}case 93:{k[v>>2]=27468;k[la>>2]=27488;k[ma>>2]=27560;Yua(qa);Ava(ma);vva(la);H=fb;I=gb;Qb(I|0);break}}}while(0);if(E)Tsa(J)|0;Tsa(f)|0;f=lta(l,j)|0;if(f){rO(k[K>>2]|0,f,951);f=k[K>>2]|0;J=Qqa(12)|0;k[J>>2]=28084;k[J+4>>2]=l;k[J+8>>2]=949;YN(f,J);J=k[K>>2]|0;K=Qqa(12)|0;k[K>>2]=28236;k[K+4>>2]=j;k[K+8>>2]=950;YN(J,K);Dka(c);Sqa(c);r=h;return}h=x+56|0;c=x+4|0;k[x>>2]=27524;k[h>>2]=27544;B=0;wa(508,x+56|0,c|0);K=B;B=0;if(K&1){K=Rb()|0;hb=Q;ib=K;vva(h);Qb(ib|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[h>>2]=27488;B=0;va(448,c|0);K=B;B=0;do if(K&1){J=Rb()|0;jb=Q;kb=J}else{k[c>>2]=27560;J=x+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[x+52>>2]=16;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;B=0;wa(509,c|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;f=Q;Yua(i);Yua(J);Ava(c);jb=f;kb=j;break}Yua(i);B=0;j=Ia(40,x|0,66499,34)|0;f=B;B=0;b:do if(!(f&1)?(B=0,Xa(239,j|0,0)|0,l=B,B=0,!(l&1)):0){l=Ab(20)|0;B=0;eb(502,y|0,65553,67);E=B;B=0;do if(!(E&1)){B=0;eb(502,z|0,66534,15);gb=B;B=0;if(gb&1){gb=Rb()|0;fb=Q;Yua(y);lb=gb;mb=fb;break}B=0;wa(510,A|0,c|0);fb=B;B=0;if(fb&1){fb=Rb()|0;nb=1;ob=Q;pb=fb}else{B=0;ua(163,l|0,y|0,z|0,2672,A|0);fb=B;B=0;if(fb&1)qb=1;else{B=0;eb(503,l|0,1240,229);B=0;qb=0}fb=Rb()|0;gb=Q;Yua(A);nb=qb;ob=gb;pb=fb}Yua(z);Yua(y);if(nb){lb=pb;mb=ob}else{rb=ob;sb=pb;break b}}else{fb=Rb()|0;lb=fb;mb=Q}while(0);zb(l|0);rb=mb;sb=lb}else xa=113;while(0);if((xa|0)==113){j=Rb()|0;rb=Q;sb=j}k[x>>2]=27468;k[h>>2]=27488;k[c>>2]=27560;Yua(J);Ava(c);vva(h);H=rb;I=sb;Qb(I|0)}while(0);hb=jb;ib=kb;vva(h);Qb(ib|0)}
+function Pm(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0;b=r;r=r+1216|0;c=b+1204|0;d=b+1032|0;e=b+1192|0;f=b+880|0;g=b+1180|0;h=b+744|0;i=b+1168|0;j=b+592|0;l=b+1016|0;m=b+440|0;n=b+728|0;o=b+304|0;q=b+576|0;s=b+152|0;t=b+288|0;u=b+16|0;v=b;w=d+56|0;x=d+4|0;k[d>>2]=27524;k[w>>2]=27544;B=0;wa(508,d+56|0,x|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(w);Qb(A|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[w>>2]=27488;B=0;va(448,x|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[x>>2]=27560;C=d+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,x|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(c);Yua(C);Ava(x);D=G;E=F;break}Yua(c);B=0;Ia(40,d|0,68031,14)|0;F=B;B=0;do if(!(F&1)?(B=0,wa(510,e|0,x|0),G=B,B=0,!(G&1)):0){B=0;ya(424,e|0)|0;G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(e);I=H;J=G;break}Yua(e);k[d>>2]=27468;k[w>>2]=27488;k[x>>2]=27560;Yua(C);Ava(x);vva(w);G=f+56|0;H=f+4|0;k[f>>2]=27524;k[G>>2]=27544;B=0;wa(508,f+56|0,H|0);K=B;B=0;if(K&1){K=Rb()|0;L=Q;M=K;vva(G);Qb(M|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[G>>2]=27488;B=0;va(448,H|0);K=B;B=0;do if(K&1){N=Rb()|0;O=Q;P=N}else{k[H>>2]=27560;N=f+36|0;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,H|0,c|0);R=B;B=0;if(R&1){R=Rb()|0;S=Q;Yua(c);Yua(N);Ava(H);O=S;P=R;break}Yua(c);B=0;R=Ia(40,f|0,79833,8)|0;S=B;B=0;do if(((!(S&1)?(B=0,T=Xa(242,R|0,k[a+4>>2]|0)|0,U=B,B=0,!(U&1)):0)?(B=0,Ia(40,T|0,149177,1)|0,T=B,B=0,!(T&1)):0)?(B=0,wa(510,g|0,H|0),T=B,B=0,!(T&1)):0){B=0;ya(424,g|0)|0;T=B;B=0;if(T&1){T=Rb()|0;U=Q;Yua(g);V=U;W=T;break}Yua(g);k[f>>2]=27468;k[G>>2]=27488;k[H>>2]=27560;Yua(N);Ava(H);vva(G);T=h+56|0;U=h+4|0;k[h>>2]=27524;k[T>>2]=27544;B=0;wa(508,h+56|0,U|0);X=B;B=0;if(X&1){X=Rb()|0;Y=Q;Z=X;vva(T);Qb(Z|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[T>>2]=27488;B=0;va(448,U|0);X=B;B=0;do if(X&1){_=Rb()|0;$=Q;aa=_}else{k[U>>2]=27560;_=h+36|0;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,U|0,c|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;Yua(c);Yua(_);Ava(U);$=ca;aa=ba;break}Yua(c);B=0;ba=Ia(40,h|0,79842,11)|0;ca=B;B=0;do if(ca&1)da=114;else{B=0;ea=Xa(242,ba|0,k[a+8>>2]|0)|0;fa=B;B=0;if(fa&1){da=114;break}B=0;Ia(40,ea|0,149177,1)|0;ea=B;B=0;if(ea&1){da=114;break}B=0;wa(510,i|0,U|0);ea=B;B=0;if(ea&1){da=114;break}B=0;ya(424,i|0)|0;ea=B;B=0;if(ea&1){ea=Rb()|0;fa=Q;Yua(i);ga=fa;ha=ea;break}Yua(i);k[h>>2]=27468;k[T>>2]=27488;k[U>>2]=27560;Yua(_);Ava(U);vva(T);ea=j+56|0;fa=j+4|0;k[j>>2]=27524;k[ea>>2]=27544;B=0;wa(508,j+56|0,fa|0);ia=B;B=0;if(ia&1){ia=Rb()|0;ja=Q;ka=ia;vva(ea);Qb(ka|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[ea>>2]=27488;B=0;va(448,fa|0);ia=B;B=0;do if(ia&1){la=Rb()|0;ma=Q;na=la}else{k[fa>>2]=27560;la=j+36|0;k[la>>2]=0;k[la+4>>2]=0;k[la+8>>2]=0;k[la+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,fa|0,c|0);oa=B;B=0;if(oa&1){oa=Rb()|0;pa=Q;Yua(c);Yua(la);Ava(fa);ma=pa;na=oa;break}Yua(c);B=0;oa=Ia(40,j|0,79854,8)|0;pa=B;B=0;do if(pa&1)da=117;else{B=0;qa=Xa(242,oa|0,k[a+12>>2]|0)|0;ra=B;B=0;if(ra&1){da=117;break}B=0;Ia(40,qa|0,149177,1)|0;qa=B;B=0;if(qa&1){da=117;break}B=0;wa(510,l|0,fa|0);qa=B;B=0;if(qa&1){da=117;break}B=0;ya(424,l|0)|0;qa=B;B=0;if(qa&1){qa=Rb()|0;ra=Q;Yua(l);sa=ra;ta=qa;break}Yua(l);k[j>>2]=27468;k[ea>>2]=27488;k[fa>>2]=27560;Yua(la);Ava(fa);vva(ea);qa=m+56|0;ra=m+4|0;k[m>>2]=27524;k[qa>>2]=27544;B=0;wa(508,m+56|0,ra|0);ua=B;B=0;if(ua&1){ua=Rb()|0;xa=Q;za=ua;vva(qa);Qb(za|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[qa>>2]=27488;B=0;va(448,ra|0);ua=B;B=0;do if(ua&1){Aa=Rb()|0;Ba=Q;Ca=Aa}else{k[ra>>2]=27560;Aa=m+36|0;k[Aa>>2]=0;k[Aa+4>>2]=0;k[Aa+8>>2]=0;k[Aa+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ra|0,c|0);Da=B;B=0;if(Da&1){Da=Rb()|0;Ea=Q;Yua(c);Yua(Aa);Ava(ra);Ba=Ea;Ca=Da;break}Yua(c);B=0;Da=Ia(40,m|0,68046,11)|0;Ea=B;B=0;do if(Ea&1)da=120;else{Fa=a+24|0;B=0;Ga=Xa(242,Da|0,k[Fa>>2]|0)|0;Ha=B;B=0;if(Ha&1){da=120;break}B=0;Ia(40,Ga|0,149177,1)|0;Ga=B;B=0;if(Ga&1){da=120;break}B=0;wa(510,n|0,ra|0);Ga=B;B=0;if(Ga&1){da=120;break}B=0;ya(424,n|0)|0;Ga=B;B=0;if(Ga&1){Ga=Rb()|0;Ha=Q;Yua(n);Ja=Ha;Ka=Ga;break}Yua(n);k[m>>2]=27468;k[qa>>2]=27488;k[ra>>2]=27560;Yua(Aa);Ava(ra);vva(qa);Ga=o+56|0;Ha=o+4|0;k[o>>2]=27524;k[Ga>>2]=27544;B=0;wa(508,o+56|0,Ha|0);La=B;B=0;if(La&1){La=Rb()|0;Ma=Q;Na=La;vva(Ga);Qb(Na|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[Ga>>2]=27488;B=0;va(448,Ha|0);La=B;B=0;do if(La&1){Oa=Rb()|0;Pa=Q;Qa=Oa}else{k[Ha>>2]=27560;Oa=o+36|0;k[Oa>>2]=0;k[Oa+4>>2]=0;k[Oa+8>>2]=0;k[Oa+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ha|0,c|0);Ra=B;B=0;if(Ra&1){Ra=Rb()|0;Ta=Q;Yua(c);Yua(Oa);Ava(Ha);Pa=Ta;Qa=Ra;break}Yua(c);B=0;Ra=Ia(40,o|0,144094,18)|0;Ta=B;B=0;do if(Ta&1)da=123;else{B=0;Ua=ya(427,k[a+28>>2]|0)|0;Va=B;B=0;if(Va&1){da=123;break}Va=Lta(Ua)|0;B=0;Wa=Ia(40,Ra|0,Ua|0,Va|0)|0;Va=B;B=0;if(Va&1){da=123;break}B=0;Ia(40,Wa|0,149177,1)|0;Wa=B;B=0;if(Wa&1){da=123;break}B=0;wa(510,q|0,Ha|0);Wa=B;B=0;if(Wa&1){da=123;break}B=0;ya(424,q|0)|0;Wa=B;B=0;if(Wa&1){Wa=Rb()|0;Va=Q;Yua(q);Ya=Va;Za=Wa;break}Yua(q);k[o>>2]=27468;k[Ga>>2]=27488;k[Ha>>2]=27560;Yua(Oa);Ava(Ha);vva(Ga);Wa=s+56|0;Va=s+4|0;k[s>>2]=27524;k[Wa>>2]=27544;B=0;wa(508,s+56|0,Va|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;_a=Q;$a=Ua;vva(Wa);Qb($a|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[Wa>>2]=27488;B=0;va(448,Va|0);Ua=B;B=0;do if(Ua&1){ab=Rb()|0;bb=Q;cb=ab}else{k[Va>>2]=27560;ab=s+36|0;k[ab>>2]=0;k[ab+4>>2]=0;k[ab+8>>2]=0;k[ab+12>>2]=0;k[s+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Va|0,c|0);db=B;B=0;if(db&1){db=Rb()|0;eb=Q;Yua(c);Yua(ab);Ava(Va);bb=eb;cb=db;break}Yua(c);B=0;Ia(40,s|0,68058,22)|0;db=B;B=0;do if(!(db&1)){B=0;wa(510,t|0,Va|0);eb=B;B=0;if(eb&1){da=126;break}B=0;ya(424,t|0)|0;eb=B;B=0;if(eb&1){eb=Rb()|0;fb=Q;Yua(t);gb=fb;hb=eb;break}Yua(t);k[s>>2]=27468;k[Wa>>2]=27488;k[Va>>2]=27560;Yua(ab);Ava(Va);vva(Wa);if((k[Fa>>2]|0)<=0){r=b;return}eb=u+56|0;fb=u+4|0;ib=u+56|0;jb=u+128|0;kb=u+132|0;lb=u+36|0;mb=u+52|0;nb=a+20|0;ob=a+16|0;pb=0;while(1){k[u>>2]=27524;k[eb>>2]=27544;B=0;wa(508,ib|0,fb|0);qb=B;B=0;if(qb&1){da=95;break}k[jb>>2]=0;k[kb>>2]=-1;k[u>>2]=27468;k[eb>>2]=27488;B=0;va(448,fb|0);qb=B;B=0;if(qb&1){da=96;break}k[fb>>2]=27560;k[lb>>2]=0;k[lb+4>>2]=0;k[lb+8>>2]=0;k[lb+12>>2]=0;k[mb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,fb|0,c|0);qb=B;B=0;if(qb&1){da=94;break}Yua(c);B=0;qb=Xa(242,u|0,pb|0)|0;rb=B;B=0;if(rb&1){da=129;break}B=0;rb=Ia(40,qb|0,124614,1)|0;qb=B;B=0;if(qb&1){da=129;break}B=0;qb=Sa(1,rb|0,+(+p[(k[nb>>2]|0)+(pb<<3)>>3]))|0;rb=B;B=0;if(rb&1){da=129;break}B=0;rb=Ia(40,qb|0,104947,1)|0;qb=B;B=0;if(qb&1){da=129;break}B=0;qb=Sa(1,rb|0,+(+p[(k[ob>>2]|0)+(pb<<3)>>3]))|0;rb=B;B=0;if(rb&1){da=129;break}B=0;Ia(40,qb|0,149177,1)|0;qb=B;B=0;if(qb&1){da=129;break}B=0;wa(510,v|0,fb|0);qb=B;B=0;if(qb&1){da=129;break}B=0;ya(424,v|0)|0;qb=B;B=0;if(qb&1){da=130;break}Yua(v);k[u>>2]=27468;k[eb>>2]=27488;k[fb>>2]=27560;Yua(lb);Ava(fb);vva(eb);pb=pb+1|0;if((pb|0)>=(k[Fa>>2]|0)){da=132;break}}if((da|0)==94){pb=Rb()|0;ob=Q;Yua(c);Yua(lb);Ava(fb);sb=ob;tb=pb;da=97}else if((da|0)==95){pb=Rb()|0;ub=Q;vb=pb;vva(eb);Qb(vb|0)}else if((da|0)==96){pb=Rb()|0;sb=Q;tb=pb;da=97}else if((da|0)==129){pb=Rb()|0;wb=Q;xb=pb;da=131}else if((da|0)==130){pb=Rb()|0;ob=Q;Yua(v);wb=ob;xb=pb;da=131}else if((da|0)==132){r=b;return}if((da|0)==97){ub=sb;vb=tb;vva(eb);Qb(vb|0)}else if((da|0)==131){k[u>>2]=27468;k[eb>>2]=27488;k[fb>>2]=27560;Yua(lb);Ava(fb);vva(eb);yb=wb;zb=xb;Qb(zb|0)}}else da=126;while(0);if((da|0)==126){db=Rb()|0;gb=Q;hb=db}k[s>>2]=27468;k[Wa>>2]=27488;k[Va>>2]=27560;Yua(ab);Ava(Va);vva(Wa);yb=gb;zb=hb;Qb(zb|0)}while(0);_a=bb;$a=cb;vva(Wa);Qb($a|0)}while(0);if((da|0)==123){Ra=Rb()|0;Ya=Q;Za=Ra}k[o>>2]=27468;k[Ga>>2]=27488;k[Ha>>2]=27560;Yua(Oa);Ava(Ha);vva(Ga);yb=Ya;zb=Za;Qb(zb|0)}while(0);Ma=Pa;Na=Qa;vva(Ga);Qb(Na|0)}while(0);if((da|0)==120){Da=Rb()|0;Ja=Q;Ka=Da}k[m>>2]=27468;k[qa>>2]=27488;k[ra>>2]=27560;Yua(Aa);Ava(ra);vva(qa);yb=Ja;zb=Ka;Qb(zb|0)}while(0);xa=Ba;za=Ca;vva(qa);Qb(za|0)}while(0);if((da|0)==117){oa=Rb()|0;sa=Q;ta=oa}k[j>>2]=27468;k[ea>>2]=27488;k[fa>>2]=27560;Yua(la);Ava(fa);vva(ea);yb=sa;zb=ta;Qb(zb|0)}while(0);ja=ma;ka=na;vva(ea);Qb(ka|0)}while(0);if((da|0)==114){ba=Rb()|0;ga=Q;ha=ba}k[h>>2]=27468;k[T>>2]=27488;k[U>>2]=27560;Yua(_);Ava(U);vva(T);yb=ga;zb=ha;Qb(zb|0)}while(0);Y=$;Z=aa;vva(T);Qb(Z|0)}else da=111;while(0);if((da|0)==111){R=Rb()|0;V=Q;W=R}k[f>>2]=27468;k[G>>2]=27488;k[H>>2]=27560;Yua(N);Ava(H);vva(G);yb=V;zb=W;Qb(zb|0)}while(0);L=O;M=P;vva(G);Qb(M|0)}else da=108;while(0);if((da|0)==108){F=Rb()|0;I=Q;J=F}k[d>>2]=27468;k[w>>2]=27488;k[x>>2]=27560;Yua(C);Ava(x);vva(w);yb=I;zb=J;Qb(zb|0)}while(0);z=D;A=E;vva(w);Qb(A|0)}function Qm(a){a=a|0;return k[a+4>>2]|0}function Rm(a){a=a|0;return 616}function Sm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;e=r;r=r+368|0;f=e+344|0;g=e+208|0;h=e+196|0;j=e+184|0;m=e+36|0;n=e+48|0;o=e+24|0;p=e+12|0;q=e;s=(d|0)==0;a:do if(s){t=k[b>>2]|0;i[t>>0]=104;i[t+1>>0]=2;i[t+2>>0]=0;i[t+3>>0]=0;t=(k[b>>2]|0)+4|0;k[b>>2]=t;u=a+4|0;v=l[u>>0]|l[u+1>>0]<<8|l[u+2>>0]<<16|l[u+3>>0]<<24;i[t>>0]=v;i[t+1>>0]=v>>8;i[t+2>>0]=v>>16;i[t+3>>0]=v>>24;v=(k[b>>2]|0)+4|0;k[b>>2]=v;t=a+8|0;u=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[v>>0]=u;i[v+1>>0]=u>>8;i[v+2>>0]=u>>16;i[v+3>>0]=u>>24;u=(k[b>>2]|0)+4|0;k[b>>2]=u;v=a+12|0;t=l[v>>0]|l[v+1>>0]<<8|l[v+2>>0]<<16|l[v+3>>0]<<24;i[u>>0]=t;i[u+1>>0]=t>>8;i[u+2>>0]=t>>16;i[u+3>>0]=t>>24;t=(k[b>>2]|0)+4|0;k[b>>2]=t;u=a+28|0;v=l[u>>0]|l[u+1>>0]<<8|l[u+2>>0]<<16|l[u+3>>0]<<24;i[t>>0]=v;i[t+1>>0]=v>>8;i[t+2>>0]=v>>16;i[t+3>>0]=v>>24;v=(k[b>>2]|0)+4|0;k[b>>2]=v;i[v>>0]=i[a+32>>0]|0;v=(k[b>>2]|0)+1|0;k[b>>2]=v;t=a+24|0;u=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[v>>0]=u;i[v+1>>0]=u>>8;i[v+2>>0]=u>>16;i[v+3>>0]=u>>24;k[b>>2]=(k[b>>2]|0)+4;w=t}else switch(d|0){case 2:{k[c>>2]=(k[c>>2]|0)+25;w=a+24|0;break a;break}case 1:{t=(k[b>>2]|0)+4|0;k[b>>2]=t;u=a+4|0;v=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[u>>0]=v;i[u+1>>0]=v>>8;i[u+2>>0]=v>>16;i[u+3>>0]=v>>24;v=(k[b>>2]|0)+4|0;k[b>>2]=v;u=a+8|0;t=l[v>>0]|l[v+1>>0]<<8|l[v+2>>0]<<16|l[v+3>>0]<<24;i[u>>0]=t;i[u+1>>0]=t>>8;i[u+2>>0]=t>>16;i[u+3>>0]=t>>24;t=(k[b>>2]|0)+4|0;k[b>>2]=t;u=a+12|0;v=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[u>>0]=v;i[u+1>>0]=v>>8;i[u+2>>0]=v>>16;i[u+3>>0]=v>>24;v=(k[b>>2]|0)+4|0;k[b>>2]=v;u=a+28|0;t=l[v>>0]|l[v+1>>0]<<8|l[v+2>>0]<<16|l[v+3>>0]<<24;i[u>>0]=t;i[u+1>>0]=t>>8;i[u+2>>0]=t>>16;i[u+3>>0]=t>>24;t=(k[b>>2]|0)+4|0;k[b>>2]=t;i[a+32>>0]=i[t>>0]|0;t=(k[b>>2]|0)+1|0;k[b>>2]=t;u=a+24|0;v=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[u>>0]=v;i[u+1>>0]=v>>8;i[u+2>>0]=v>>16;i[u+3>>0]=v>>24;k[b>>2]=(k[b>>2]|0)+4;w=u;break a;break}default:{u=g+56|0;v=g+4|0;k[g>>2]=27524;k[u>>2]=27544;B=0;wa(508,g+56|0,v|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;vva(u);Qb(y|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);t=B;B=0;do if(t&1){z=Rb()|0;A=Q;C=z}else{k[v>>2]=27560;z=g+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,v|0,f|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(f);Yua(z);Ava(v);A=E;C=D;break}Yua(f);B=0;D=Ia(40,g|0,143951,43)|0;E=B;B=0;b:do if(!(E&1)?(B=0,Xa(239,D|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,h|0,68081,83);G=B;B=0;do if(!(G&1)){B=0;eb(502,j|0,149525,8);H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(h);J=I;K=H;break}B=0;wa(510,m|0,v|0);H=B;B=0;if(H&1){H=Rb()|0;L=Q;M=H;N=1}else{B=0;ua(163,F|0,h|0,j|0,89,m|0);H=B;B=0;if(H&1)O=1;else{B=0;eb(503,F|0,1240,229);B=0;O=0}H=Rb()|0;I=Q;Yua(m);L=I;M=H;N=O}Yua(j);Yua(h);if(N){J=L;K=M}else{P=L;R=M;break b}}else{H=Rb()|0;J=Q;K=H}while(0);zb(F|0);P=J;R=K}else S=18;while(0);if((S|0)==18){D=Rb()|0;P=Q;R=D}k[g>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);T=P;U=R;Qb(U|0)}while(0);x=A;y=C;vva(u);Qb(y|0)}}while(0);y=k[w>>2]|0;C=a+16|0;if(!y){k[C>>2]=0;k[a+20>>2]=0;r=e;return}A=(k[C>>2]|0)==0;if(s){i[k[b>>2]>>0]=A&1;s=(k[b>>2]|0)+1|0;k[b>>2]=s;if(A)V=s;else{TEa(s|0,k[C>>2]|0,k[w>>2]<<3|0)|0;s=(k[b>>2]|0)+(k[w>>2]<<3)|0;k[b>>2]=s;V=s}s=a+20|0;x=(k[s>>2]|0)==0;i[V>>0]=x&1;V=(k[b>>2]|0)+1|0;k[b>>2]=V;if(x){r=e;return}TEa(V|0,k[s>>2]|0,k[w>>2]<<3|0)|0;k[b>>2]=(k[b>>2]|0)+(k[w>>2]<<3);r=e;return}switch(d|0){case 2:{d=(k[c>>2]|0)+1|0;k[c>>2]=d;if(A)W=d;else{A=d+(k[w>>2]<<3)|0;k[c>>2]=A;W=A}A=(k[a+20>>2]|0)==0;d=W+1|0;k[c>>2]=d;if(A){r=e;return}k[c>>2]=d+(k[w>>2]<<3);r=e;return}case 1:{w=k[b>>2]|0;d=i[w>>0]|0;c=w+1|0;k[b>>2]=c;if(!(d&1)){d=Rqa(y>>>0>536870911?-1:y<<3)|0;k[C>>2]=d;C=k[b>>2]|0;w=y<<3;TEa(d|0,C|0,w|0)|0;d=C+w|0;k[b>>2]=d;X=d}else X=c;c=i[X>>0]|0;k[b>>2]=X+1;if(c&1){r=e;return}c=Rqa(y>>>0>536870911?-1:y<<3)|0;k[a+20>>2]=c;a=k[b>>2]|0;X=y<<3;TEa(c|0,a|0,X|0)|0;k[b>>2]=a+X;r=e;return}default:{e=n+56|0;X=n+4|0;k[n>>2]=27524;k[e>>2]=27544;B=0;wa(508,n+56|0,X|0);a=B;B=0;if(a&1){a=Rb()|0;Y=Q;Z=a;vva(e);Qb(Z|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[e>>2]=27488;B=0;va(448,X|0);a=B;B=0;do if(a&1){b=Rb()|0;_=Q;$=b}else{k[X>>2]=27560;b=n+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,X|0,f|0);c=B;B=0;if(c&1){c=Rb()|0;y=Q;Yua(f);Yua(b);Ava(X);_=y;$=c;break}Yua(f);B=0;c=Ia(40,n|0,143951,43)|0;y=B;B=0;c:do if(!(y&1)?(B=0,Xa(239,c|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,o|0,68081,83);w=B;B=0;do if(!(w&1)){B=0;eb(502,p|0,149525,8);C=B;B=0;if(C&1){C=Rb()|0;A=Q;Yua(o);aa=A;ba=C;break}B=0;wa(510,q|0,X|0);C=B;B=0;if(C&1){C=Rb()|0;ca=1;da=Q;ea=C}else{B=0;ua(163,d|0,o|0,p|0,98,q|0);C=B;B=0;if(C&1)fa=1;else{B=0;eb(503,d|0,1240,229);B=0;fa=0}C=Rb()|0;A=Q;Yua(q);ca=fa;da=A;ea=C}Yua(p);Yua(o);if(ca){aa=da;ba=ea}else{ga=da;ha=ea;break c}}else{C=Rb()|0;aa=Q;ba=C}while(0);zb(d|0);ga=aa;ha=ba}else S=49;while(0);if((S|0)==49){c=Rb()|0;ga=Q;ha=c}k[n>>2]=27468;k[e>>2]=27488;k[X>>2]=27560;Yua(b);Ava(X);vva(e);T=ga;U=ha;Qb(U|0)}while(0);Y=_;Z=$;vva(e);Qb(Z|0)}}}function Tm(a){a=a|0;i[a+32>>0]=1;return}function Um(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0.0,o=0.0,q=0.0,s=0.0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0;d=r;r=r+208|0;e=d+184|0;f=d;g=d+48|0;h=d+32|0;j=d+20|0;l=d+8|0;p[f>>3]=0.0;m=rh(b,0,k[a+8>>2]|0)|0;if(!((m|0)!=0&(i[a+32>>0]|0)==0)){r=d;return}dO(c,f,767);n=+p[f>>3];f=k[a+20>>2]|0;o=+p[f>>3];a:do if(!(n<=o)){c=k[a+24>>2]|0;b=c+-1|0;if(n>=+p[f+(b<<3)>>3]){q=+p[(k[a+16>>2]|0)+(b<<3)>>3];break}b:do if((c|0)>1){s=o;u=0;while(1){v=u+1|0;if(s<=n?(w=+p[f+(v<<3)>>3],n<w):0){x=s;y=w;z=v;A=u;break}if((v|0)>=(b|0))break b;s=+p[f+(v<<3)>>3];u=v}s=(n-x)/(y-x);u=k[a+16>>2]|0;q=(1.0-s)*+p[u+(A<<3)>>3]+s*+p[u+(z<<3)>>3];break a}while(0);b=g+56|0;c=g+4|0;k[g>>2]=27524;k[b>>2]=27544;B=0;wa(508,g+56|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;C=Q;D=u;vva(b);Qb(D|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[b>>2]=27488;B=0;va(448,c|0);u=B;B=0;do if(u&1){v=Rb()|0;E=Q;F=v}else{k[c>>2]=27560;v=g+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,c|0,e|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(e);Yua(v);Ava(c);E=H;F=G;break}Yua(e);B=0;G=Ia(40,g|0,68165,42)|0;H=B;B=0;if(!(H&1)?(B=0,Xa(239,G|0,0)|0,G=B,B=0,!(G&1)):0){G=Ab(20)|0;B=0;eb(502,h|0,68081,83);H=B;B=0;do if(!(H&1)){B=0;eb(502,j|0,68208,13);I=B;B=0;if(I&1){I=Rb()|0;J=Q;Yua(h);K=J;L=I;break}B=0;wa(510,l|0,c|0);I=B;B=0;if(I&1){I=Rb()|0;M=Q;N=I;O=1}else{B=0;ua(163,G|0,h|0,j|0,151,l|0);I=B;B=0;if(I&1)P=1;else{B=0;eb(503,G|0,1240,229);B=0;P=0}I=Rb()|0;J=Q;Yua(l);M=J;N=I;O=P}Yua(j);Yua(h);if(O){K=M;L=N}else{R=M;S=N;k[g>>2]=27468;k[b>>2]=27488;k[c>>2]=27560;Yua(v);Ava(c);vva(b);Qb(S|0)}}else{I=Rb()|0;K=Q;L=I}while(0);zb(G|0);R=K;S=L;k[g>>2]=27468;k[b>>2]=27488;k[c>>2]=27560;Yua(v);Ava(c);vva(b);Qb(S|0)}H=Rb()|0;R=Q;S=H;k[g>>2]=27468;k[b>>2]=27488;k[c>>2]=27560;Yua(v);Ava(c);vva(b);Qb(S|0)}while(0);C=E;D=F;vva(b);Qb(D|0)}else q=+p[k[a+16>>2]>>3];while(0);x=+$(+q);p[t>>3]=x;D=k[t+4>>2]|0;F=k[a+12>>2]|0;if(D>>>0>2146435072|(D|0)==2146435072&(k[t>>2]|0)>>>0>0){Yn(m,F);r=d;return}else{Un(m,F,q);r=d;return}}function Vm(a,b){a=a|0;b=b|0;return (k[a+28>>2]|0)==(b|0)|0}function Wm(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0.0,Z=0.0,_=0.0,aa=0.0,ba=0.0,ca=0.0,da=0.0,ea=0.0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0;f=r;r=r+368|0;g=f+352|0;h=f+216|0;j=f+204|0;l=f+192|0;m=f+44|0;n=f;o=f+56|0;q=f+32|0;s=f+20|0;u=f+8|0;if(!(i[a+32>>0]|0)){v=h+56|0;w=h+4|0;k[h>>2]=27524;k[v>>2]=27544;B=0;wa(508,h+56|0,w|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;z=x;vva(v);Qb(z|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[v>>2]=27488;B=0;va(448,w|0);x=B;B=0;do if(x&1){A=Rb()|0;C=Q;D=A}else{k[w>>2]=27560;A=h+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[h+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,w|0,g|0);E=B;B=0;if(E&1){E=Rb()|0;G=Q;Yua(g);Yua(A);Ava(w);C=G;D=E;break}Yua(g);B=0;E=Ia(40,h|0,68222,54)|0;G=B;B=0;a:do if(!(G&1)?(B=0,Xa(239,E|0,0)|0,H=B,B=0,!(H&1)):0){H=Ab(20)|0;B=0;eb(502,j|0,68081,83);I=B;B=0;do if(!(I&1)){B=0;eb(502,l|0,80053,18);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(j);L=J;M=K;break}B=0;wa(510,m|0,w|0);K=B;B=0;if(K&1){K=Rb()|0;N=Q;O=K;P=1}else{B=0;ua(163,H|0,j|0,l|0,169,m|0);K=B;B=0;if(K&1)R=1;else{B=0;eb(503,H|0,1240,229);B=0;R=0}K=Rb()|0;J=Q;Yua(m);N=J;O=K;P=R}Yua(l);Yua(j);if(P){L=O;M=N}else{S=O;T=N;break a}}else{K=Rb()|0;L=K;M=Q}while(0);zb(H|0);S=L;T=M}else U=17;while(0);if((U|0)==17){E=Rb()|0;S=E;T=Q}k[h>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);V=T;W=S;Qb(W|0)}while(0);y=C;z=D;vva(v);Qb(z|0)}p[n>>3]=0.0;z=rh(d,0,k[a+8>>2]|0)|0;if(!z){X=-1;Y=F;k[b>>2]=X;p[c>>3]=Y;r=f;return}dO(e,n,767);Z=+p[n>>3];n=k[a+20>>2]|0;_=+p[n>>3];b:do if(!(Z<=_)){e=k[a+24>>2]|0;d=e+-1|0;if(Z>=+p[n+(d<<3)>>3]){aa=+p[(k[a+16>>2]|0)+(d<<3)>>3];break}c:do if((e|0)>1){ba=_;v=0;while(1){D=v+1|0;if(ba<=Z?(ca=+p[n+(D<<3)>>3],Z<ca):0){da=ba;ea=ca;fa=D;ga=v;break}if((D|0)>=(d|0))break c;ba=+p[n+(D<<3)>>3];v=D}ba=(Z-da)/(ea-da);v=k[a+16>>2]|0;aa=(1.0-ba)*+p[v+(ga<<3)>>3]+ba*+p[v+(fa<<3)>>3];break b}while(0);d=o+56|0;e=o+4|0;k[o>>2]=27524;k[d>>2]=27544;B=0;wa(508,o+56|0,e|0);A=B;B=0;if(A&1){A=Rb()|0;ha=Q;ia=A;vva(d);Qb(ia|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[d>>2]=27488;B=0;va(448,e|0);A=B;B=0;do if(A&1){v=Rb()|0;ja=Q;ka=v}else{k[e>>2]=27560;v=o+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[o+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,e|0,g|0);H=B;B=0;if(H&1){H=Rb()|0;D=Q;Yua(g);Yua(v);Ava(e);ja=D;ka=H;break}Yua(g);B=0;H=Ia(40,o|0,68165,42)|0;D=B;B=0;d:do if(!(D&1)?(B=0,Xa(239,H|0,0)|0,C=B,B=0,!(C&1)):0){C=Ab(20)|0;B=0;eb(502,q|0,68081,83);y=B;B=0;do if(!(y&1)){B=0;eb(502,s|0,80053,18);S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(q);la=S;ma=T;break}B=0;wa(510,u|0,e|0);T=B;B=0;if(T&1){T=Rb()|0;na=1;oa=Q;pa=T}else{B=0;ua(163,C|0,q|0,s|0,205,u|0);T=B;B=0;if(T&1)qa=1;else{B=0;eb(503,C|0,1240,229);B=0;qa=0}T=Rb()|0;S=Q;Yua(u);na=qa;oa=S;pa=T}Yua(s);Yua(q);if(na){la=pa;ma=oa}else{ra=oa;sa=pa;break d}}else{T=Rb()|0;la=T;ma=Q}while(0);zb(C|0);ra=ma;sa=la}else U=51;while(0);if((U|0)==51){H=Rb()|0;ra=Q;sa=H}k[o>>2]=27468;k[d>>2]=27488;k[e>>2]=27560;Yua(v);Ava(e);vva(d);V=ra;W=sa;Qb(W|0)}while(0);ha=ja;ia=ka;vva(d);Qb(ia|0)}else aa=+p[k[a+16>>2]>>3];while(0);ia=Nn(z,k[a+12>>2]|0,943)|0;da=+$(+aa);p[t>>3]=da;a=k[t+4>>2]|0;X=a>>>0>2146435072|(a|0)==2146435072&(k[t>>2]|0)>>>0>0?-1:ia;Y=aa;k[b>>2]=X;p[c>>3]=Y;r=f;return}function Xm(a){a=a|0;gh(a);k[a+12>>2]=550;return}function Ym(a){a=a|0;jh(a);return}function Zm(a){a=a|0;gh(a);k[a+12>>2]=549;return}function _m(a){a=a|0;jh(a);return}function $m(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;d=r;r=r+16|0;e=d;k[e>>2]=0;f=vY()|0;g=wY()|0;if((th(a)|0)>0){h=0;do{i=qh(a,h)|0;if(Tn(i,b)|0)io(i,e,c);h=h+1|0}while((h|0)<(th(a)|0))}h=Rqa(g>>>0>1073741823?-1:g<<2)|0;lZ(e,1,4,h,1,4,0,uY()|0)|0;uY()|0;k[e>>2]=0;if((f|0)>0){g=0;i=0;while(1){j=g+(k[h+(i<<2)>>2]|0)|0;i=i+1|0;if((i|0)==(f|0)){l=j;break}else g=j}k[e>>2]=l}if((th(a)|0)>0){l=0;do{g=qh(a,l)|0;if(Tn(g,b)|0)jo(g,k[e>>2]|0,c);l=l+1|0}while((l|0)<(th(a)|0))}l=an(a,b,c)|0;e=ma(bn(a,b)|0,l)|0;if(!e){m=0;n=0}else{g=e>>>0>1073741823?-1:e<<2;f=Rqa(g)|0;i=e<<2;WEa(f|0,0,i|0)|0;j=Rqa(g)|0;WEa(j|0,0,i|0)|0;m=j;n=f}if((th(a)|0)>0){f=0;do{j=qh(a,f)|0;if(Tn(j,b)|0)ko(j,n,l,c);f=f+1|0}while((f|0)<(th(a)|0))}fZ(n,m,e,4,1,uY()|0)|0;if((th(a)|0)>0){e=0;do{f=qh(a,e)|0;if(Tn(f,b)|0)lo(f,m,l,c);e=e+1|0}while((e|0)<(th(a)|0))}if((th(a)|0)>0){e=0;do{c=qh(a,e)|0;if(Tn(c,b)|0)Xn(c);e=e+1|0}while((e|0)<(th(a)|0))}Tqa(h);if(n)Tqa(n);if(!m){r=d;return}Tqa(m);r=d;return}function an(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;d=r;r=r+16|0;e=d+4|0;f=d;k[e>>2]=0;if((th(a)|0)>0){g=0;h=0;while(1){i=qh(a,h)|0;if(Tn(i,b)|0?(j=eo(i,534,c)|0,(j|0)>(g|0)):0){k[e>>2]=j;l=j}else l=g;h=h+1|0;if((h|0)>=(th(a)|0))break;else g=l}}fZ(e,f,1,4,1,uY()|0)|0;r=d;return k[f>>2]|0}function bn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=r;r=r+16|0;d=c+4|0;e=c;k[d>>2]=-1;if((th(a)|0)>0){f=-1;g=0;while(1){h=qh(a,g)|0;if(Tn(h,b)|0?(i=Qn(h)|0,(i|0)>(f|0)):0){k[d>>2]=i;j=i}else j=f;g=g+1|0;if((g|0)>=(th(a)|0))break;else f=j}}nZ(d,e,1,4,1,0,uY()|0)|0;uY()|0;r=c;return (k[e>>2]|0)+1|0}function cn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=wY()|0;d=bn(a,b)|0;e=d>>>0>1073741823?-1:d<<2;f=Rqa(e)|0;g=Rqa(e)|0;if((d|0)>0){e=0;do{k[f+(e<<2)>>2]=c;e=e+1|0}while((e|0)!=(d|0))}e=vY()|0;if((th(a)|0)>0){c=0;do{h=qh(a,c)|0;if(Tn(h,b)|0){i=f+((Qn(h)|0)<<2)|0;k[i>>2]=e}c=c+1|0}while((c|0)<(th(a)|0))}fZ(f,g,d,4,2,uY()|0)|0;if((th(a)|0)>0)j=0;else{Tqa(f);Tqa(g);return}do{d=qh(a,j)|0;if(Tn(d,b)|0)mo(d,g);j=j+1|0}while((j|0)<(th(a)|0));Tqa(f);Tqa(g);return}function dn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;b=r;r=r+16|0;c=b+4|0;d=b;k[c>>2]=-1;e=(k[a+16>>2]|0)==0;f=th(a)|0;do if(e){if((f|0)>0){g=-1;h=0;while(1){i=qh(a,h)|0;j=Hc[k[(k[i>>2]|0)+16>>2]&511](i)|0;if((j|0)>(g|0)){k[c>>2]=j;l=j}else l=g;h=h+1|0;if((h|0)>=(th(a)|0))break;else g=l}}}else if(!f){k[c>>2]=0;break}else{g=qh(a,(th(a)|0)+-1|0)|0;h=Hc[k[(k[g>>2]|0)+16>>2]&511](g)|0;k[c>>2]=h;break}while(0);fZ(c,d,1,4,1,uY()|0)|0;r=b;return k[d>>2]|0}function en(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;d=r;r=r+16|0;e=d+4|0;f=d;if((th(a)|0)>0){g=0;h=0;while(1){i=qh(a,g)|0;if(Tn(i,b)|0?(fo(i)|0)==0:0)j=(eo(i,534,c)|0)+h|0;else j=h;g=g+1|0;if((g|0)>=(th(a)|0)){l=j;break}else h=j}}else l=0;k[f>>2]=l;fZ(f,e,1,4,4,uY()|0)|0;r=d;return k[e>>2]|0}function fn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;if((th(a)|0)>0){d=0;e=0}else{f=0;return f|0}while(1){g=qh(a,d)|0;if(Tn(g,b)|0?(fo(g)|0)==0:0)h=(eo(g,534,c)|0)+e|0;else h=e;d=d+1|0;if((d|0)>=(th(a)|0)){f=h;break}else e=h}return f|0}function gn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=r;r=r+16|0;c=b+4|0;d=b;k[c>>2]=0;k[d>>2]=0;if((th(a)|0)>0){e=0;f=0;while(1){if(!(fo(qh(a,f)|0)|0)){g=e+1|0;k[c>>2]=g;h=g}else h=e;f=f+1|0;if((f|0)>=(th(a)|0))break;else e=h}}fZ(c,d,1,4,4,uY()|0)|0;r=b;return k[d>>2]|0}function hn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=r;r=r+16|0;d=c+4|0;e=c;k[d>>2]=0;a:do if((th(a)|0)>0){f=0;while(1){g=qh(a,f)|0;if(Tn(g,b)|0?Wn(g)|0:0)break;f=f+1|0;if((f|0)>=(th(a)|0))break a}k[d>>2]=1}while(0);fZ(d,e,1,4,1,uY()|0)|0;r=c;return (k[e>>2]|0)!=0|0}function jn(a){a=a|0;gh(a);k[a+12>>2]=552;return}function kn(a){a=a|0;jh(a);return}function ln(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;c=r;r=r+16|0;d=c;k[d>>2]=0;e=vY()|0;f=wY()|0;if((th(a)|0)>0){g=0;do{Eo(qh(a,g)|0,d);g=g+1|0}while((g|0)<(th(a)|0))}g=Rqa(f>>>0>1073741823?-1:f<<2)|0;lZ(d,1,4,g,1,4,0,uY()|0)|0;uY()|0;k[d>>2]=0;if((e|0)>0){f=0;h=0;while(1){i=f+(k[g+(h<<2)>>2]|0)|0;h=h+1|0;if((h|0)==(e|0)){j=i;break}else f=i}k[d>>2]=j}if((th(a)|0)>0){j=0;do{f=qh(a,j)|0;Fo(f,k[d>>2]|0);j=j+1|0}while((j|0)<(th(a)|0))}j=b>>>0>1073741823?-1:b<<2;d=Rqa(j)|0;if(!b)l=Rqa(j)|0;else{f=b<<2;WEa(d|0,0,f|0)|0;e=Rqa(j)|0;WEa(e|0,0,f|0)|0;l=e}if((th(a)|0)>0){e=0;do{Go(qh(a,e)|0,d);e=e+1|0}while((e|0)<(th(a)|0))}fZ(d,l,b,4,1,uY()|0)|0;if((th(a)|0)>0)m=0;else{Tqa(g);Tqa(d);Tqa(l);r=c;return}do{Ho(qh(a,m)|0,l);m=m+1|0}while((m|0)<(th(a)|0));Tqa(g);Tqa(d);Tqa(l);r=c;return}function mn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=wY()|0;d=b>>>0>1073741823?-1:b<<2;e=Rqa(d)|0;f=Rqa(d)|0;if((b|0)>0){d=0;do{k[e+(d<<2)>>2]=c;d=d+1|0}while((d|0)!=(b|0))}d=vY()|0;if((th(a)|0)>0){c=0;do{g=e+((Bo(qh(a,c)|0)|0)<<2)|0;k[g>>2]=d;c=c+1|0}while((c|0)<(th(a)|0))}fZ(e,f,b,4,2,uY()|0)|0;if((th(a)|0)>0)h=0;else{Tqa(e);Tqa(f);return}do{Io(qh(a,h)|0,f);h=h+1|0}while((h|0)<(th(a)|0));Tqa(e);Tqa(f);return}function nn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=r;r=r+16|0;c=b+4|0;d=b;k[c>>2]=0;if((th(a)|0)>0){e=0;f=0;while(1){g=Bo(qh(a,f)|0)|0;if((g|0)>(e|0)){k[c>>2]=g;h=g}else h=e;f=f+1|0;if((f|0)>=(th(a)|0))break;else e=h}}nZ(c,d,1,4,1,0,uY()|0)|0;uY()|0;r=b;return (k[d>>2]|0)+1|0}function on(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;b=r;r=r+368|0;c=b+344|0;d=b+208|0;e=b+196|0;f=b+184|0;g=b+36|0;h=b+48|0;i=b+24|0;j=b+12|0;l=b;k[a+4>>2]=0;m=qZ()|0;if(!(Ita(m,68695)|0)){n=d+56|0;o=d+4|0;k[d>>2]=27524;k[n>>2]=27544;B=0;wa(508,d+56|0,o|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;s=p;vva(n);Qb(s|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[n>>2]=27488;B=0;va(448,o|0);p=B;B=0;do if(p&1){t=Rb()|0;u=Q;v=t}else{k[o>>2]=27560;t=d+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,o|0,c|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(c);Yua(t);Ava(o);u=x;v=w;break}Yua(c);B=0;w=Ia(40,d|0,68701,50)|0;x=B;B=0;a:do if(!(x&1)?(B=0,Xa(239,w|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,e|0,68752,101);z=B;B=0;do if(!(z&1)){B=0;eb(502,f|0,68854,19);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(e);D=A;E=C;break}B=0;wa(510,g|0,o|0);C=B;B=0;if(C&1){C=Rb()|0;F=Q;G=C;H=1}else{B=0;ua(163,y|0,e|0,f|0,144,g|0);C=B;B=0;if(C&1)I=1;else{B=0;eb(503,y|0,1240,229);B=0;I=0}C=Rb()|0;A=Q;Yua(g);F=A;G=C;H=I}Yua(f);Yua(e);if(H){D=G;E=F}else{J=G;K=F;break a}}else{C=Rb()|0;D=C;E=Q}while(0);zb(y|0);J=D;K=E}else L=17;while(0);if((L|0)==17){w=Rb()|0;J=w;K=Q}k[d>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);M=K;N=J;Qb(N|0)}while(0);q=u;s=v;vva(n);Qb(s|0)}if(!(Ita(m,145123)|0)){k[a>>2]=1;if(!m){r=b;return}Tqa(m);r=b;return}b=h+56|0;m=h+4|0;k[h>>2]=27524;k[b>>2]=27544;B=0;wa(508,h+56|0,m|0);a=B;B=0;if(a&1){a=Rb()|0;O=Q;P=a;vva(b);Qb(P|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[b>>2]=27488;B=0;va(448,m|0);a=B;B=0;do if(a&1){s=Rb()|0;R=Q;S=s}else{k[m>>2]=27560;s=h+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,m|0,c|0);n=B;B=0;if(n&1){n=Rb()|0;v=Q;Yua(c);Yua(s);Ava(m);R=v;S=n;break}Yua(c);B=0;n=Ia(40,h|0,68874,20)|0;v=B;B=0;b:do if(!(v&1)?(B=0,Xa(239,n|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,i|0,68752,101);q=B;B=0;do if(!(q&1)){B=0;eb(502,j|0,68854,19);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(i);T=J;U=K;break}B=0;wa(510,l|0,m|0);K=B;B=0;if(K&1){K=Rb()|0;V=1;W=Q;X=K}else{B=0;ua(163,u|0,i|0,j|0,151,l|0);K=B;B=0;if(K&1)Y=1;else{B=0;eb(503,u|0,1240,229);B=0;Y=0}K=Rb()|0;J=Q;Yua(l);V=Y;W=J;X=K}Yua(j);Yua(i);if(V){T=X;U=W}else{Z=W;_=X;break b}}else{K=Rb()|0;T=K;U=Q}while(0);zb(u|0);Z=U;_=T}else L=44;while(0);if((L|0)==44){n=Rb()|0;Z=Q;_=n}k[h>>2]=27468;k[b>>2]=27488;k[m>>2]=27560;Yua(s);Ava(m);vva(b);M=Z;N=_;Qb(N|0)}while(0);O=R;P=S;vva(b);Qb(P|0)}function pn(a){a=a|0;var b=0,c=0;k[a>>2]=28724;b=a+12|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}function qn(a){a=a|0;var b=0;k[a>>2]=28724;b=k[a+12>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function rn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){q=Rb()|0;s=Q;t=q}else{k[l>>2]=27560;q=d+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(c);Yua(q);Ava(l);s=v;t=u;break}Yua(c);B=0;u=Ia(40,d|0,68642,18)|0;v=B;B=0;do if(((((!(v&1)?(w=a+4|0,B=0,x=Xa(242,u|0,k[w>>2]|0)|0,y=B,B=0,!(y&1)):0)?(B=0,y=Ia(40,x|0,124614,1)|0,x=B,B=0,!(x&1)):0)?(x=a+8|0,B=0,z=Xa(242,y|0,k[x>>2]|0)|0,y=B,B=0,!(y&1)):0)?(B=0,Ia(40,z|0,149177,1)|0,z=B,B=0,!(z&1)):0)?(B=0,wa(510,e|0,l|0),z=B,B=0,!(z&1)):0){B=0;ya(424,e|0)|0;z=B;B=0;if(z&1){z=Rb()|0;y=Q;Yua(e);A=y;C=z;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(q);Ava(l);vva(j);if((k[w>>2]|0)<=0){r=b;return}z=h+56|0;y=h+4|0;D=h+56|0;E=h+128|0;F=h+132|0;G=h+36|0;H=h+52|0;I=f+56|0;J=f+4|0;K=f+56|0;L=f+128|0;M=f+132|0;N=f+36|0;O=f+52|0;P=a+12|0;R=0;a:while(1){if((k[x>>2]|0)>0){S=0;do{k[f>>2]=27524;k[I>>2]=27544;B=0;wa(508,K|0,J|0);T=B;B=0;if(T&1){U=23;break a}k[L>>2]=0;k[M>>2]=-1;k[f>>2]=27468;k[I>>2]=27488;B=0;va(448,J|0);T=B;B=0;if(T&1){U=24;break a}k[J>>2]=27560;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;k[O>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,J|0,c|0);T=B;B=0;if(T&1){U=22;break a}Yua(c);T=(ma(k[x>>2]|0,R)|0)+S|0;B=0;V=Sa(1,f|0,+(+p[(k[P>>2]|0)+(T<<3)>>3]))|0;T=B;B=0;if(T&1){U=35;break a}B=0;Ia(40,V|0,149175,1)|0;V=B;B=0;if(V&1){U=35;break a}B=0;wa(510,g|0,J|0);V=B;B=0;if(V&1){U=35;break a}B=0;ya(424,g|0)|0;V=B;B=0;if(V&1){U=36;break a}Yua(g);k[f>>2]=27468;k[I>>2]=27488;k[J>>2]=27560;Yua(N);Ava(J);vva(I);S=S+1|0}while((S|0)<(k[x>>2]|0))}k[h>>2]=27524;k[z>>2]=27544;B=0;wa(508,D|0,y|0);S=B;B=0;if(S&1){U=42;break}k[E>>2]=0;k[F>>2]=-1;k[h>>2]=27468;k[z>>2]=27488;B=0;va(448,y|0);S=B;B=0;if(S&1){U=43;break}k[y>>2]=27560;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[H>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,y|0,c|0);S=B;B=0;if(S&1){U=41;break}Yua(c);B=0;Ia(40,h|0,149177,1)|0;S=B;B=0;if(S&1){U=50;break}B=0;wa(510,i|0,y|0);S=B;B=0;if(S&1){U=50;break}B=0;ya(424,i|0)|0;S=B;B=0;if(S&1){U=51;break}Yua(i);k[h>>2]=27468;k[z>>2]=27488;k[y>>2]=27560;Yua(G);Ava(y);vva(z);R=R+1|0;if((R|0)>=(k[w>>2]|0)){U=53;break}}switch(U|0){case 22:{w=Rb()|0;R=Q;Yua(c);Yua(N);Ava(J);W=R;X=w;U=25;break}case 23:{w=Rb()|0;Y=Q;Z=w;vva(I);Qb(Z|0);break}case 24:{w=Rb()|0;W=Q;X=w;U=25;break}case 35:{w=Rb()|0;_=Q;$=w;U=37;break}case 36:{w=Rb()|0;R=Q;Yua(g);_=R;$=w;U=37;break}case 41:{w=Rb()|0;R=Q;Yua(c);Yua(G);Ava(y);aa=R;ba=w;U=44;break}case 42:{w=Rb()|0;ca=Q;da=w;vva(z);Qb(da|0);break}case 43:{w=Rb()|0;aa=Q;ba=w;U=44;break}case 50:{w=Rb()|0;ea=Q;fa=w;U=52;break}case 51:{w=Rb()|0;R=Q;Yua(i);ea=R;fa=w;U=52;break}case 53:{r=b;return}}if((U|0)==25){Y=W;Z=X;vva(I);Qb(Z|0)}else if((U|0)==37){k[f>>2]=27468;k[I>>2]=27488;k[J>>2]=27560;Yua(N);Ava(J);vva(I);ga=_;ha=$;Qb(ha|0)}else if((U|0)==44){ca=aa;da=ba;vva(z);Qb(da|0)}else if((U|0)==52){k[h>>2]=27468;k[z>>2]=27488;k[y>>2]=27560;Yua(G);Ava(y);vva(z);ga=ea;ha=fa;Qb(ha|0)}}else U=32;while(0);if((U|0)==32){u=Rb()|0;A=Q;C=u}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(q);Ava(l);vva(j);ga=A;ha=C;Qb(ha|0)}while(0);n=s;o=t;vva(j);Qb(o|0)}function sn(a){a=a|0;return}function tn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0.0,j=0,l=0,m=0,n=0.0,o=0,q=0,s=0,t=0.0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;switch(b|0){case 0:{b=a+4|0;if((k[b>>2]|0)<=0){i=0.0;r=c;return +i}j=a+8|0;l=a+12|0;m=0;n=0.0;while(1){o=k[j>>2]|0;if((o|0)>0){q=k[l>>2]|0;s=ma(o,m)|0;t=0.0;u=0;while(1){v=t+ +$(+(+p[q+(s+u<<3)>>3]));u=u+1|0;if((u|0)>=(o|0)){w=v;break}else t=v}}else w=0.0;t=+LY(n,w);m=m+1|0;if((m|0)>=(k[b>>2]|0)){i=t;break}else n=t}r=c;return +i}case 2:{b=k[a+4>>2]|0;if((b|0)>0?(m=k[a+8>>2]|0,(m|0)>0):0){l=k[a+12>>2]|0;a=0;n=0.0;while(1){j=ma(m,a)|0;o=0;w=n;while(1){t=+p[l+(j+o<<3)>>3];v=w+t*t;o=o+1|0;if((o|0)>=(m|0)){x=v;break}else w=v}a=a+1|0;if((a|0)>=(b|0)){y=x;break}else n=x}}else y=0.0;i=+aa(+y);r=c;return +i}default:{c=e+56|0;b=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;z=Q;A=a;vva(c);Qb(A|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){m=Rb()|0;C=Q;D=m}else{k[b>>2]=27560;m=e+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);l=B;B=0;if(l&1){l=Rb()|0;o=Q;Yua(d);Yua(m);Ava(b);C=o;D=l;break}Yua(d);B=0;l=Ia(40,e|0,68622,14)|0;o=B;B=0;if(!(o&1)?(B=0,Xa(239,l|0,0)|0,l=B,B=0,!(l&1)):0){l=Ab(20)|0;B=0;eb(502,f|0,68394,115);o=B;B=0;do if(!(o&1)){B=0;eb(502,g|0,68637,4);j=B;B=0;if(j&1){j=Rb()|0;u=Q;Yua(f);E=u;F=j;break}B=0;wa(510,h|0,b|0);j=B;B=0;if(j&1){j=Rb()|0;G=Q;H=j;I=1}else{B=0;ua(163,l|0,f|0,g|0,163,h|0);j=B;B=0;if(j&1)J=1;else{B=0;eb(503,l|0,1240,229);B=0;J=0}j=Rb()|0;u=Q;Yua(h);G=u;H=j;I=J}Yua(g);Yua(f);if(I){E=G;F=H}else{K=G;L=H;k[e>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(c);Qb(L|0)}}else{j=Rb()|0;E=Q;F=j}while(0);zb(l|0);K=E;L=F;k[e>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(c);Qb(L|0)}o=Rb()|0;K=Q;L=o;k[e>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(c);Qb(L|0)}while(0);z=C;A=D;vva(c);Qb(A|0)}}return +(0.0)}function un(a,b,c){a=a|0;b=b|0;c=c|0;k[b>>2]=k[a+4>>2];k[c>>2]=k[a+8>>2];return}function vn(a,b,c){a=a|0;b=b|0;c=c|0;k[b>>2]=k[a+4>>2];k[c>>2]=k[a+8>>2];return}function wn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0.0,U=0.0,V=0.0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;d=r;r=r+384|0;e=d+360|0;f=d+356|0;g=d+352|0;h=d+216|0;i=d+200|0;j=d+48|0;l=d+36|0;m=d+64|0;n=d+24|0;o=d+12|0;q=d;Fc[k[(k[b>>2]|0)+28>>2]&1023](b,f);Fc[k[(k[c>>2]|0)+28>>2]&1023](c,g);s=k[a+4>>2]|0;if((s|0)!=(k[g>>2]|0)){g=h+56|0;t=h+4|0;k[h>>2]=27524;k[g>>2]=27544;B=0;wa(508,h+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(g);Qb(w|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[g>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=h+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[h+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,t|0,e|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(e);Yua(x);Ava(t);y=C;z=A;break}Yua(e);B=0;A=Ia(40,h|0,68520,45)|0;C=B;B=0;a:do if(!(C&1)?(B=0,Xa(239,A|0,0)|0,D=B,B=0,!(D&1)):0){D=Ab(20)|0;B=0;eb(502,i|0,68394,115);E=B;B=0;do if(!(E&1)){B=0;eb(502,j|0,68566,7);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(i);H=F;I=G;break}B=0;wa(510,l|0,t|0);G=B;B=0;if(G&1){G=Rb()|0;J=Q;K=G;L=1}else{B=0;ua(163,D|0,i|0,j|0,202,l|0);G=B;B=0;if(G&1)M=1;else{B=0;eb(503,D|0,1240,229);B=0;M=0}G=Rb()|0;F=Q;Yua(l);J=F;K=G;L=M}Yua(j);Yua(i);if(L){H=K;I=J}else{N=K;O=J;break a}}else{G=Rb()|0;H=G;I=Q}while(0);zb(D|0);N=H;O=I}else P=17;while(0);if((P|0)==17){A=Rb()|0;N=A;O=Q}k[h>>2]=27468;k[g>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(g);R=O;S=N;Qb(S|0)}while(0);v=y;w=z;vva(g);Qb(w|0)}w=k[a+8>>2]|0;if((w|0)==(k[f>>2]|0)){if((s|0)<=0){r=d;return}f=k[c+4>>2]|0;if((w|0)<=0){WEa(f|0,0,((s|0)>1?s:1)<<3|0)|0;r=d;return}c=k[a+12>>2]|0;a=k[b+4>>2]|0;b=0;do{g=ma(w,b)|0;T=0.0;z=0;while(1){U=T+ +p[c+(g+z<<3)>>3]*+p[a+(z<<3)>>3];z=z+1|0;if((z|0)>=(w|0)){V=U;break}else T=U}p[f+(b<<3)>>3]=V;b=b+1|0}while((b|0)<(s|0));r=d;return}d=m+56|0;s=m+4|0;k[m>>2]=27524;k[d>>2]=27544;B=0;wa(508,m+56|0,s|0);b=B;B=0;if(b&1){b=Rb()|0;W=Q;X=b;vva(d);Qb(X|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[d>>2]=27488;B=0;va(448,s|0);b=B;B=0;do if(b&1){f=Rb()|0;Y=Q;Z=f}else{k[s>>2]=27560;f=m+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[m+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,s|0,e|0);w=B;B=0;if(w&1){w=Rb()|0;a=Q;Yua(e);Yua(f);Ava(s);Y=a;Z=w;break}Yua(e);B=0;w=Ia(40,m|0,68574,47)|0;a=B;B=0;b:do if(!(a&1)?(B=0,Xa(239,w|0,0)|0,c=B,B=0,!(c&1)):0){c=Ab(20)|0;B=0;eb(502,n|0,68394,115);z=B;B=0;do if(!(z&1)){B=0;eb(502,o|0,68566,7);g=B;B=0;if(g&1){g=Rb()|0;x=Q;Yua(n);_=g;$=x;break}B=0;wa(510,q|0,s|0);x=B;B=0;if(x&1){x=Rb()|0;aa=1;ba=Q;ca=x}else{B=0;ua(163,c|0,n|0,o|0,203,q|0);x=B;B=0;if(x&1)da=1;else{B=0;eb(503,c|0,1240,229);B=0;da=0}x=Rb()|0;g=Q;Yua(q);aa=da;ba=g;ca=x}Yua(o);Yua(n);if(aa){_=ca;$=ba}else{ea=ba;fa=ca;break b}}else{x=Rb()|0;_=x;$=Q}while(0);zb(c|0);ea=$;fa=_}else P=48;while(0);if((P|0)==48){w=Rb()|0;ea=Q;fa=w}k[m>>2]=27468;k[d>>2]=27488;k[s>>2]=27560;Yua(f);Ava(s);vva(d);R=ea;S=fa;Qb(S|0)}while(0);W=Y;X=Z;vva(d);Qb(X|0)}function xn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Qqa(16)|0;c=k[a+12>>2]|0;d=k[a+4>>2]|0;e=k[a+8>>2]|0;k[b>>2]=28724;k[b+4>>2]=d;k[b+8>>2]=e;a=b+12|0;k[a>>2]=0;f=ma(e,d)|0;if(!f)return b|0;B=0;d=ya(422,(f>>>0>536870911?-1:f<<3)|0)|0;e=B;B=0;if(e&1){g=Rb()|0;h=Q;Sqa(b);Qb(g|0)}e=f<<3;WEa(d|0,0,e|0)|0;k[a>>2]=d;if(!c){B=0;ib(283,142353,68290,137,142345);B=0;g=Rb()|0;h=Q;Sqa(b);Qb(g|0)}else{TEa(d|0,c|0,e|0)|0;return b|0}return 0}function yn(a){a=a|0;var b=0,c=0,d=0,e=0;b=ma(k[a+8>>2]|0,k[a+4>>2]|0)|0;if(!b){c=0;return c|0}d=Rqa(b>>>0>536870911?-1:b<<3)|0;e=k[a+12>>2]|0;if(!e)yb(142353,68290,137,142345);TEa(d|0,e|0,b<<3|0)|0;c=d;return c|0}function zn(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;h=r;r=r+192|0;i=h+176|0;j=h+40|0;l=h+24|0;m=h+12|0;n=h;switch(g|0){case 1:{if(!((b|0)>0&(d|0)>0)){r=h;return}g=k[a+8>>2]|0;o=k[a+12>>2]|0;q=0;do{s=ma(q,d)|0;t=ma(k[c+(q<<2)>>2]|0,g)|0;u=0;do{v=o+(t+(k[e+(u<<2)>>2]|0)<<3)|0;p[v>>3]=+p[f+(u+s<<3)>>3]+ +p[v>>3];u=u+1|0}while((u|0)!=(d|0));q=q+1|0}while((q|0)!=(b|0));r=h;return}case 0:{if(!((b|0)>0&(d|0)>0)){r=h;return}q=k[a+8>>2]|0;o=k[a+12>>2]|0;a=0;do{g=ma(a,d)|0;u=ma(k[c+(a<<2)>>2]|0,q)|0;s=0;do{p[o+(u+(k[e+(s<<2)>>2]|0)<<3)>>3]=+p[f+(s+g<<3)>>3];s=s+1|0}while((s|0)!=(d|0));a=a+1|0}while((a|0)!=(b|0));r=h;return}default:{h=j+56|0;b=j+4|0;k[j>>2]=27524;k[h>>2]=27544;B=0;wa(508,j+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;w=Q;x=a;vva(h);Qb(x|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[h>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){d=Rb()|0;y=Q;z=d}else{k[b>>2]=27560;d=j+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[j+52>>2]=16;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;B=0;wa(509,b|0,i|0);f=B;B=0;if(f&1){f=Rb()|0;e=Q;Yua(i);Yua(d);Ava(b);y=e;z=f;break}Yua(i);B=0;f=Ia(40,j|0,68373,20)|0;e=B;B=0;if(!(e&1)?(B=0,Xa(239,f|0,0)|0,f=B,B=0,!(f&1)):0){f=Ab(20)|0;B=0;eb(502,l|0,68394,115);e=B;B=0;do if(!(e&1)){B=0;eb(502,m|0,68510,9);o=B;B=0;if(o&1){o=Rb()|0;q=Q;Yua(l);A=q;C=o;break}B=0;wa(510,n|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;D=Q;E=o;F=1}else{B=0;ua(163,f|0,l|0,m|0,249,n|0);o=B;B=0;if(o&1)G=1;else{B=0;eb(503,f|0,1240,229);B=0;G=0}o=Rb()|0;q=Q;Yua(n);D=q;E=o;F=G}Yua(m);Yua(l);if(F){A=D;C=E}else{H=D;I=E;k[j>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(d);Ava(b);vva(h);Qb(I|0)}}else{o=Rb()|0;A=Q;C=o}while(0);zb(f|0);H=A;I=C;k[j>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(d);Ava(b);vva(h);Qb(I|0)}e=Rb()|0;H=Q;I=e;k[j>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(d);Ava(b);vva(h);Qb(I|0)}while(0);w=y;x=z;vva(h);Qb(x|0)}}}function An(a,b){a=a|0;b=b|0;return}function Bn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=r;r=r+16|0;e=d;k[e>>2]=0;f=a+8|0;v5(e,k[a+12>>2]|0,k[a+4>>2]|0,k[f>>2]|0,k[b+4>>2]|0,k[b+8>>2]|0,c);c=Qqa(12)|0;b=k[e>>2]|0;e=k[f>>2]|0;k[c>>2]=28388;k[c+8>>2]=e;f=c+4|0;k[f>>2]=0;do if(!e){if(!b){r=d;return c|0}}else{B=0;a=ya(422,(e>>>0>536870911?-1:e<<3)|0)|0;g=B;B=0;if(g&1){h=Rb()|0;i=Q;Sqa(c);Qb(h|0)}k[f>>2]=a;if(b){TEa(a|0,b|0,e<<3|0)|0;break}B=0;ib(283,142353,68290,137,142345);B=0;h=Rb()|0;i=Q;Sqa(c);Qb(h|0)}while(0);Tqa(b);r=d;return c|0}function Cn(a){a=a|0;k[a>>2]=28784;mla(a+24|0);k[a+4>>2]=0;return}function Dn(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;j=r;r=r+16|0;l=j;k[a>>2]=28784;m=a+24|0;B=0;va(487,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=n;q=Q;Qb(o|0)}k[l>>2]=0;k[a+8>>2]=b;k[a+12>>2]=c;k[a+16>>2]=d;k[a+68>>2]=g;d=a+72|0;c=d;b=c+64|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(b|0));p[d>>3]=1.0;p[a+104>>3]=1.0;p[a+136>>3]=1.0;c=a+20|0;i[c>>0]=1;B=0;b=ya(430,g|0)|0;n=B;B=0;a:do if((!(n&1)?(s=f+40|0,B=0,t=cb(k[(k[b>>2]|0)+20>>2]|0,b|0,l|0,k[s>>2]|0,h|0)|0,u=B,B=0,!(u&1)):0)?(B=0,eb(506,m|0,t|0,k[l>>2]|0),t=B,B=0,!(t&1)):0){t=k[l>>2]|0;if(t)Tqa(t);k[l>>2]=0;Ec[k[(k[b>>2]|0)+4>>2]&1023](b);t=a+4|0;do if((g|0)==497){k[t>>2]=h;B=0;u=Xa(246,f|0,129116)|0;v=B;B=0;if(v&1)break a;B=0;wa(513,d|0,u+(e*6<<3)|0);u=B;B=0;if(u&1)break a;b:do switch(k[s>>2]|0){case 300:case 303:{w=36;break}default:switch(h|0){case 535:{break b;break}case 536:{B=0;u=Xa(246,f|0,136615)|0;v=B;B=0;if(v&1)break a;if(~~+p[u+(e<<3)>>3]){r=j;return}B=0;va(488,m|0);u=B;B=0;if(u&1)break a;i[a+38>>0]=1;r=j;return}case 539:{B=0;u=Xa(246,f|0,136615)|0;v=B;B=0;if(v&1)break a;if(~~+p[u+(e<<3)>>3]){r=j;return}B=0;va(488,m|0);u=B;B=0;if(u&1)break a;i[a+38>>0]=1;r=j;return}case 537:{B=0;u=Xa(246,f|0,129090)|0;v=B;B=0;if(v&1)break a;if(!~~+p[u+(e<<3)>>3]){r=j;return}B=0;u=Xa(246,f|0,136615)|0;v=B;B=0;if(v&1)break a;if(~~+p[u+(e<<3)>>3]){r=j;return}B=0;va(488,m|0);u=B;B=0;if(u&1)break a;i[a+38>>0]=1;r=j;return}case 538:{B=0;u=Xa(246,f|0,129090)|0;v=B;B=0;if(v&1)break a;if(!~~+p[u+(e<<3)>>3]){r=j;return}B=0;u=Xa(246,f|0,136615)|0;v=B;B=0;if(v&1)break a;if(~~+p[u+(e<<3)>>3]){r=j;return}u=k[a+40>>2]|0;v=a+38|0;x=a+44|0;if(i[u>>0]|0){i[c>>0]=1;i[u>>0]=0;i[k[x>>2]>>0]=1}i[v>>0]=1;y=u+1|0;if(i[y>>0]|0){i[c>>0]=1;i[y>>0]=0;i[(k[x>>2]|0)+1>>0]=1}i[v>>0]=1;w=36;break b;break}default:{r=j;return}}}while(0);if((w|0)==36?(h|0)!=535:0)break;B=0;va(488,m|0);v=B;B=0;if(v&1)break a;i[a+38>>0]=1}else k[t>>2]=0;while(0);switch(g|0){case 484:case 493:case 505:case 506:case 509:case 510:case 512:case 529:{w=40;break}case 513:break;default:{r=j;return}}if((w|0)==40){switch(k[s>>2]|0){case 300:case 303:break;default:{B=0;t=Xa(246,f|0,136615)|0;v=B;B=0;if(v&1)break a;if(!(+p[t+(e<<3)>>3]!=0.0)){B=0;va(488,m|0);t=B;B=0;if(t&1)break a;i[a+38>>0]=1}}}if((g|0)!=513){r=j;return}}if((k[s>>2]|0)==300){r=j;return}B=0;t=Xa(246,f|0,136636)|0;v=B;B=0;if(!(v&1)){if(+p[t+(e<<3)>>3]!=0.0){r=j;return}B=0;va(488,m|0);t=B;B=0;if(!(t&1)){i[a+38>>0]=1;r=j;return}}}while(0);j=Rb()|0;a=Q;ola(m);o=j;q=a;Qb(o|0)}function En(a){a=a|0;tla(a+24|0);i[a+38>>0]=1;return}function Fn(a){a=a|0;k[a>>2]=28784;ola(a+24|0);return}function Gn(a){a=a|0;k[a>>2]=28784;ola(a+24|0);Sqa(a);return}function Hn(a){a=a|0;var b=0,c=0,d=0,e=0;b=Qqa(144)|0;k[b>>2]=28784;c=b+24|0;B=0;va(487,c|0);d=B;B=0;if(d&1){d=Rb()|0;Sqa(b);Qb(d|0)}else{k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2];k[b+16>>2]=k[a+16>>2];k[b+68>>2]=k[a+68>>2];k[b+4>>2]=k[a+4>>2];d=b+72|0;e=a+72|0;k[d>>2]=k[e>>2];k[d+4>>2]=k[e+4>>2];k[d+8>>2]=k[e+8>>2];k[d+12>>2]=k[e+12>>2];k[d+16>>2]=k[e+16>>2];k[d+20>>2]=k[e+20>>2];e=b+96|0;d=a+96|0;k[e>>2]=k[d>>2];k[e+4>>2]=k[d+4>>2];k[e+8>>2]=k[d+8>>2];k[e+12>>2]=k[d+12>>2];k[e+16>>2]=k[d+16>>2];k[e+20>>2]=k[d+20>>2];d=b+120|0;e=a+120|0;k[d>>2]=k[e>>2];k[d+4>>2]=k[e+4>>2];k[d+8>>2]=k[e+8>>2];k[d+12>>2]=k[e+12>>2];k[d+16>>2]=k[e+16>>2];k[d+20>>2]=k[e+20>>2];i[b+20>>0]=i[a+20>>0]|0;pla(c,a+24|0);return b|0}return 0}function In(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=75;i[d+1>>0]=2;i[d+2>>0]=0;i[d+3>>0]=0;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+8|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;d=a+12|0;n=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+16|0;d=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[n>>0]=d;i[n+1>>0]=d>>8;i[n+2>>0]=d>>16;i[n+3>>0]=d>>24;d=(k[b>>2]|0)+4|0;k[b>>2]=d;i[d>>0]=i[a+20>>0]|0;k[b>>2]=(k[b>>2]|0)+1;vla(a+24|0,b,c,0);d=k[b>>2]|0;n=a+68|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;p=o;q=a+72|0;s=p+72|0;do{i[p>>0]=i[q>>0]|0;p=p+1|0;q=q+1|0}while((p|0)<(s|0));k[b>>2]=(k[b>>2]|0)+72;r=e;return}case 2:{k[c>>2]=(k[c>>2]|0)+17;vla(a+24|0,b,c,2);k[c>>2]=(k[c>>2]|0)+76;r=e;return}case 1:{o=(k[b>>2]|0)+4|0;k[b>>2]=o;d=a+8|0;n=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[d>>0]=n;i[d+1>>0]=n>>8;i[d+2>>0]=n>>16;i[d+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;d=a+12|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;d=a+16|0;n=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[d>>0]=n;i[d+1>>0]=n>>8;i[d+2>>0]=n>>16;i[d+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;i[a+20>>0]=i[n>>0]|0;k[b>>2]=(k[b>>2]|0)+1;vla(a+24|0,b,c,1);c=a+68|0;n=k[b>>2]|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[c>>0]=d;i[c+1>>0]=d>>8;i[c+2>>0]=d>>16;i[c+3>>0]=d>>24;d=(k[b>>2]|0)+4|0;k[b>>2]=d;p=a+72|0;q=d;s=p+72|0;do{i[p>>0]=i[q>>0]|0;p=p+1|0;q=q+1|0}while((p|0)<(s|0));k[b>>2]=(k[b>>2]|0)+72;r=e;return}default:{e=g+56|0;b=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;t=Q;u=q;vva(e);Qb(u|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,b|0);q=B;B=0;do if(q&1){p=Rb()|0;v=Q;w=p}else{k[b>>2]=27560;p=g+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);s=B;B=0;if(s&1){s=Rb()|0;d=Q;Yua(f);Yua(p);Ava(b);v=d;w=s;break}Yua(f);B=0;s=Ia(40,g|0,143951,43)|0;d=B;B=0;if(!(d&1)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,h|0,68901,63);d=B;B=0;do if(!(d&1)){B=0;eb(502,j|0,149525,8);a=B;B=0;if(a&1){a=Rb()|0;c=Q;Yua(h);x=c;y=a;break}B=0;wa(510,m|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;z=Q;A=a;C=1}else{B=0;ua(163,s|0,h|0,j|0,154,m|0);a=B;B=0;if(a&1)D=1;else{B=0;eb(503,s|0,1240,229);B=0;D=0}a=Rb()|0;c=Q;Yua(m);z=c;A=a;C=D}Yua(j);Yua(h);if(C){x=z;y=A}else{E=z;F=A;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(p);Ava(b);vva(e);Qb(F|0)}}else{a=Rb()|0;x=Q;y=a}while(0);zb(s|0);E=x;F=y;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(p);Ava(b);vva(e);Qb(F|0)}d=Rb()|0;E=Q;F=d;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(p);Ava(b);vva(e);Qb(F|0)}while(0);t=v;u=w;vva(e);Qb(u|0)}}}function Jn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0;b=r;r=r+928|0;c=b+904|0;d=b+744|0;e=b+892|0;f=b+592|0;g=b+880|0;h=b+440|0;j=b+728|0;l=b+304|0;m=b+576|0;n=b+152|0;o=b+288|0;p=b+16|0;q=b;s=d+56|0;t=d+4|0;k[d>>2]=27524;k[s>>2]=27544;B=0;wa(508,d+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=d+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,t|0,c|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(c);Yua(x);Ava(t);y=C;z=A;break}Yua(c);B=0;Ia(40,d|0,68965,6)|0;A=B;B=0;do if(!(A&1)?(B=0,wa(510,e|0,t|0),C=B,B=0,!(C&1)):0){B=0;ya(424,e|0)|0;C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(e);E=D;F=C;break}Yua(e);k[d>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);C=f+56|0;D=f+4|0;k[f>>2]=27524;k[C>>2]=27544;B=0;wa(508,f+56|0,D|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;I=G;vva(C);Qb(I|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[C>>2]=27488;B=0;va(448,D|0);G=B;B=0;do if(G&1){J=Rb()|0;K=Q;L=J}else{k[D>>2]=27560;J=f+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,D|0,c|0);M=B;B=0;if(M&1){M=Rb()|0;N=Q;Yua(c);Yua(J);Ava(D);K=N;L=M;break}Yua(c);B=0;M=Ia(40,f|0,69728,8)|0;N=B;B=0;do if(((!(N&1)?(B=0,O=Xa(242,M|0,k[a+8>>2]|0)|0,P=B,B=0,!(P&1)):0)?(B=0,Ia(40,O|0,149177,1)|0,O=B,B=0,!(O&1)):0)?(B=0,wa(510,g|0,D|0),O=B,B=0,!(O&1)):0){B=0;ya(424,g|0)|0;O=B;B=0;if(O&1){O=Rb()|0;P=Q;Yua(g);R=P;S=O;break}Yua(g);k[f>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(J);Ava(D);vva(C);O=h+56|0;P=h+4|0;k[h>>2]=27524;k[O>>2]=27544;B=0;wa(508,h+56|0,P|0);T=B;B=0;if(T&1){T=Rb()|0;U=Q;V=T;vva(O);Qb(V|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[O>>2]=27488;B=0;va(448,P|0);T=B;B=0;do if(T&1){W=Rb()|0;X=Q;Y=W}else{k[P>>2]=27560;W=h+36|0;k[W>>2]=0;k[W+4>>2]=0;k[W+8>>2]=0;k[W+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,P|0,c|0);Z=B;B=0;if(Z&1){Z=Rb()|0;_=Q;Yua(c);Yua(W);Ava(P);X=_;Y=Z;break}Yua(c);B=0;Z=Ia(40,h|0,79833,8)|0;_=B;B=0;do if(_&1)$=86;else{B=0;aa=Xa(242,Z|0,k[a+12>>2]|0)|0;ba=B;B=0;if(ba&1){$=86;break}B=0;Ia(40,aa|0,149177,1)|0;aa=B;B=0;if(aa&1){$=86;break}B=0;wa(510,j|0,P|0);aa=B;B=0;if(aa&1){$=86;break}B=0;ya(424,j|0)|0;aa=B;B=0;if(aa&1){aa=Rb()|0;ba=Q;Yua(j);ca=ba;da=aa;break}Yua(j);k[h>>2]=27468;k[O>>2]=27488;k[P>>2]=27560;Yua(W);Ava(P);vva(O);aa=l+56|0;ba=l+4|0;k[l>>2]=27524;k[aa>>2]=27544;B=0;wa(508,l+56|0,ba|0);ea=B;B=0;if(ea&1){ea=Rb()|0;fa=Q;ga=ea;vva(aa);Qb(ga|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[aa>>2]=27488;B=0;va(448,ba|0);ea=B;B=0;do if(ea&1){ha=Rb()|0;ia=Q;ja=ha}else{k[ba>>2]=27560;ha=l+36|0;k[ha>>2]=0;k[ha+4>>2]=0;k[ha+8>>2]=0;k[ha+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ba|0,c|0);ka=B;B=0;if(ka&1){ka=Rb()|0;la=Q;Yua(c);Yua(ha);Ava(ba);ia=la;ja=ka;break}Yua(c);B=0;ka=Ia(40,l|0,68972,18)|0;la=B;B=0;do if(la&1)$=89;else{B=0;ma=ya(427,k[a+68>>2]|0)|0;na=B;B=0;if(na&1){$=89;break}na=Lta(ma)|0;B=0;oa=Ia(40,ka|0,ma|0,na|0)|0;na=B;B=0;if(na&1){$=89;break}B=0;Ia(40,oa|0,149177,1)|0;oa=B;B=0;if(oa&1){$=89;break}B=0;wa(510,m|0,ba|0);oa=B;B=0;if(oa&1){$=89;break}B=0;ya(424,m|0)|0;oa=B;B=0;if(oa&1){oa=Rb()|0;na=Q;Yua(m);pa=na;qa=oa;break}Yua(m);k[l>>2]=27468;k[aa>>2]=27488;k[ba>>2]=27560;Yua(ha);Ava(ba);vva(aa);oa=n+56|0;na=n+4|0;k[n>>2]=27524;k[oa>>2]=27544;B=0;wa(508,n+56|0,na|0);ma=B;B=0;if(ma&1){ma=Rb()|0;ra=Q;sa=ma;vva(oa);Qb(sa|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[oa>>2]=27488;B=0;va(448,na|0);ma=B;B=0;do if(ma&1){ta=Rb()|0;ua=Q;xa=ta}else{k[na>>2]=27560;ta=n+36|0;k[ta>>2]=0;k[ta+4>>2]=0;k[ta+8>>2]=0;k[ta+12>>2]=0;k[n+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,na|0,c|0);za=B;B=0;if(za&1){za=Rb()|0;Aa=Q;Yua(c);Yua(ta);Ava(na);ua=Aa;xa=za;break}Yua(c);B=0;za=Ia(40,n|0,68991,18)|0;Aa=B;B=0;do if(Aa&1)$=92;else{B=0;Ba=ya(427,k[a+4>>2]|0)|0;Ca=B;B=0;if(Ca&1){$=92;break}Ca=Lta(Ba)|0;B=0;Da=Ia(40,za|0,Ba|0,Ca|0)|0;Ca=B;B=0;if(Ca&1){$=92;break}B=0;Ia(40,Da|0,149177,1)|0;Da=B;B=0;if(Da&1){$=92;break}B=0;wa(510,o|0,na|0);Da=B;B=0;if(Da&1){$=92;break}B=0;ya(424,o|0)|0;Da=B;B=0;if(Da&1){Da=Rb()|0;Ca=Q;Yua(o);Ea=Ca;Fa=Da;break}Yua(o);k[n>>2]=27468;k[oa>>2]=27488;k[na>>2]=27560;Yua(ta);Ava(na);vva(oa);Da=p+56|0;Ca=p+4|0;k[p>>2]=27524;k[Da>>2]=27544;B=0;wa(508,p+56|0,Ca|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;Ga=Q;Ha=Ba;vva(Da);Qb(Ha|0)}k[p+128>>2]=0;k[p+132>>2]=-1;k[p>>2]=27468;k[Da>>2]=27488;B=0;va(448,Ca|0);Ba=B;B=0;do if(Ba&1){Ja=Rb()|0;Ka=Q;La=Ja}else{k[Ca>>2]=27560;Ja=p+36|0;k[Ja>>2]=0;k[Ja+4>>2]=0;k[Ja+8>>2]=0;k[Ja+12>>2]=0;k[p+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ca|0,c|0);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;Na=Q;Yua(c);Yua(Ja);Ava(Ca);Ka=Na;La=Ma;break}Yua(c);B=0;Ma=Ia(40,p|0,69010,19)|0;Na=B;B=0;do if(!(Na&1)){B=0;Oa=Xa(247,Ma|0,(i[a+20>>0]|0)!=0|0)|0;Pa=B;B=0;if(Pa&1){$=95;break}B=0;Ia(40,Oa|0,149177,1)|0;Oa=B;B=0;if(Oa&1){$=95;break}B=0;wa(510,q|0,Ca|0);Oa=B;B=0;if(Oa&1){$=95;break}B=0;ya(424,q|0)|0;Oa=B;B=0;if(Oa&1){Oa=Rb()|0;Pa=Q;Yua(q);Qa=Pa;Ra=Oa;break}else{Yua(q);k[p>>2]=27468;k[Da>>2]=27488;k[Ca>>2]=27560;Yua(Ja);Ava(Ca);vva(Da);rla(a+24|0);r=b;return}}else $=95;while(0);if(($|0)==95){Ma=Rb()|0;Qa=Q;Ra=Ma}k[p>>2]=27468;k[Da>>2]=27488;k[Ca>>2]=27560;Yua(Ja);Ava(Ca);vva(Da);Sa=Qa;Ta=Ra;Qb(Ta|0)}while(0);Ga=Ka;Ha=La;vva(Da);Qb(Ha|0)}while(0);if(($|0)==92){za=Rb()|0;Ea=Q;Fa=za}k[n>>2]=27468;k[oa>>2]=27488;k[na>>2]=27560;Yua(ta);Ava(na);vva(oa);Sa=Ea;Ta=Fa;Qb(Ta|0)}while(0);ra=ua;sa=xa;vva(oa);Qb(sa|0)}while(0);if(($|0)==89){ka=Rb()|0;pa=Q;qa=ka}k[l>>2]=27468;k[aa>>2]=27488;k[ba>>2]=27560;Yua(ha);Ava(ba);vva(aa);Sa=pa;Ta=qa;Qb(Ta|0)}while(0);fa=ia;ga=ja;vva(aa);Qb(ga|0)}while(0);if(($|0)==86){Z=Rb()|0;ca=Q;da=Z}k[h>>2]=27468;k[O>>2]=27488;k[P>>2]=27560;Yua(W);Ava(P);vva(O);Sa=ca;Ta=da;Qb(Ta|0)}while(0);U=X;V=Y;vva(O);Qb(V|0)}else $=83;while(0);if(($|0)==83){M=Rb()|0;R=Q;S=M}k[f>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(J);Ava(D);vva(C);Sa=R;Ta=S;Qb(Ta|0)}while(0);H=K;I=L;vva(C);Qb(I|0)}else $=80;while(0);if(($|0)==80){A=Rb()|0;E=Q;F=A}k[d>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);Sa=E;Ta=F;Qb(Ta|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}function Kn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0;b=r;r=r+928|0;c=b+904|0;d=b+744|0;e=b+892|0;f=b+592|0;g=b+880|0;h=b+440|0;j=b+728|0;l=b+304|0;m=b+576|0;n=b+152|0;o=b+288|0;p=b+16|0;q=b;s=d+56|0;t=d+4|0;k[d>>2]=27524;k[s>>2]=27544;B=0;wa(508,d+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=d+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,t|0,c|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(c);Yua(x);Ava(t);y=C;z=A;break}Yua(c);B=0;Ia(40,d|0,68965,6)|0;A=B;B=0;do if(!(A&1)?(B=0,wa(510,e|0,t|0),C=B,B=0,!(C&1)):0){B=0;ya(424,e|0)|0;C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(e);E=D;F=C;break}Yua(e);k[d>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);C=f+56|0;D=f+4|0;k[f>>2]=27524;k[C>>2]=27544;B=0;wa(508,f+56|0,D|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;I=G;vva(C);Qb(I|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[C>>2]=27488;B=0;va(448,D|0);G=B;B=0;do if(G&1){J=Rb()|0;K=Q;L=J}else{k[D>>2]=27560;J=f+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,D|0,c|0);M=B;B=0;if(M&1){M=Rb()|0;N=Q;Yua(c);Yua(J);Ava(D);K=N;L=M;break}Yua(c);B=0;M=Ia(40,f|0,144086,7)|0;N=B;B=0;do if(((!(N&1)?(B=0,O=Xa(242,M|0,k[a+8>>2]|0)|0,P=B,B=0,!(P&1)):0)?(B=0,Ia(40,O|0,149177,1)|0,O=B,B=0,!(O&1)):0)?(B=0,wa(510,g|0,D|0),O=B,B=0,!(O&1)):0){B=0;ya(424,g|0)|0;O=B;B=0;if(O&1){O=Rb()|0;P=Q;Yua(g);R=P;S=O;break}Yua(g);k[f>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(J);Ava(D);vva(C);O=h+56|0;P=h+4|0;k[h>>2]=27524;k[O>>2]=27544;B=0;wa(508,h+56|0,P|0);T=B;B=0;if(T&1){T=Rb()|0;U=Q;V=T;vva(O);Qb(V|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[O>>2]=27488;B=0;va(448,P|0);T=B;B=0;do if(T&1){W=Rb()|0;X=Q;Y=W}else{k[P>>2]=27560;W=h+36|0;k[W>>2]=0;k[W+4>>2]=0;k[W+8>>2]=0;k[W+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,P|0,c|0);Z=B;B=0;if(Z&1){Z=Rb()|0;_=Q;Yua(c);Yua(W);Ava(P);X=_;Y=Z;break}Yua(c);B=0;Z=Ia(40,h|0,79833,8)|0;_=B;B=0;do if(_&1)$=86;else{B=0;aa=Xa(242,Z|0,k[a+12>>2]|0)|0;ba=B;B=0;if(ba&1){$=86;break}B=0;Ia(40,aa|0,149177,1)|0;aa=B;B=0;if(aa&1){$=86;break}B=0;wa(510,j|0,P|0);aa=B;B=0;if(aa&1){$=86;break}B=0;ya(424,j|0)|0;aa=B;B=0;if(aa&1){aa=Rb()|0;ba=Q;Yua(j);ca=ba;da=aa;break}Yua(j);k[h>>2]=27468;k[O>>2]=27488;k[P>>2]=27560;Yua(W);Ava(P);vva(O);aa=l+56|0;ba=l+4|0;k[l>>2]=27524;k[aa>>2]=27544;B=0;wa(508,l+56|0,ba|0);ea=B;B=0;if(ea&1){ea=Rb()|0;fa=Q;ga=ea;vva(aa);Qb(ga|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[aa>>2]=27488;B=0;va(448,ba|0);ea=B;B=0;do if(ea&1){ha=Rb()|0;ia=Q;ja=ha}else{k[ba>>2]=27560;ha=l+36|0;k[ha>>2]=0;k[ha+4>>2]=0;k[ha+8>>2]=0;k[ha+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ba|0,c|0);ka=B;B=0;if(ka&1){ka=Rb()|0;la=Q;Yua(c);Yua(ha);Ava(ba);ia=la;ja=ka;break}Yua(c);B=0;ka=Ia(40,l|0,68972,18)|0;la=B;B=0;do if(la&1)$=89;else{B=0;ma=ya(427,k[a+68>>2]|0)|0;na=B;B=0;if(na&1){$=89;break}na=Lta(ma)|0;B=0;oa=Ia(40,ka|0,ma|0,na|0)|0;na=B;B=0;if(na&1){$=89;break}B=0;Ia(40,oa|0,149177,1)|0;oa=B;B=0;if(oa&1){$=89;break}B=0;wa(510,m|0,ba|0);oa=B;B=0;if(oa&1){$=89;break}B=0;ya(424,m|0)|0;oa=B;B=0;if(oa&1){oa=Rb()|0;na=Q;Yua(m);pa=na;qa=oa;break}Yua(m);k[l>>2]=27468;k[aa>>2]=27488;k[ba>>2]=27560;Yua(ha);Ava(ba);vva(aa);oa=n+56|0;na=n+4|0;k[n>>2]=27524;k[oa>>2]=27544;B=0;wa(508,n+56|0,na|0);ma=B;B=0;if(ma&1){ma=Rb()|0;ra=Q;sa=ma;vva(oa);Qb(sa|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[oa>>2]=27488;B=0;va(448,na|0);ma=B;B=0;do if(ma&1){ta=Rb()|0;ua=Q;xa=ta}else{k[na>>2]=27560;ta=n+36|0;k[ta>>2]=0;k[ta+4>>2]=0;k[ta+8>>2]=0;k[ta+12>>2]=0;k[n+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,na|0,c|0);za=B;B=0;if(za&1){za=Rb()|0;Aa=Q;Yua(c);Yua(ta);Ava(na);ua=Aa;xa=za;break}Yua(c);B=0;za=Ia(40,n|0,68991,18)|0;Aa=B;B=0;do if(Aa&1)$=92;else{B=0;Ba=ya(427,k[a+4>>2]|0)|0;Ca=B;B=0;if(Ca&1){$=92;break}Ca=Lta(Ba)|0;B=0;Da=Ia(40,za|0,Ba|0,Ca|0)|0;Ca=B;B=0;if(Ca&1){$=92;break}B=0;Ia(40,Da|0,149177,1)|0;Da=B;B=0;if(Da&1){$=92;break}B=0;wa(510,o|0,na|0);Da=B;B=0;if(Da&1){$=92;break}B=0;ya(424,o|0)|0;Da=B;B=0;if(Da&1){Da=Rb()|0;Ca=Q;Yua(o);Ea=Ca;Fa=Da;break}Yua(o);k[n>>2]=27468;k[oa>>2]=27488;k[na>>2]=27560;Yua(ta);Ava(na);vva(oa);Da=p+56|0;Ca=p+4|0;k[p>>2]=27524;k[Da>>2]=27544;B=0;wa(508,p+56|0,Ca|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;Ga=Q;Ha=Ba;vva(Da);Qb(Ha|0)}k[p+128>>2]=0;k[p+132>>2]=-1;k[p>>2]=27468;k[Da>>2]=27488;B=0;va(448,Ca|0);Ba=B;B=0;do if(Ba&1){Ja=Rb()|0;Ka=Q;La=Ja}else{k[Ca>>2]=27560;Ja=p+36|0;k[Ja>>2]=0;k[Ja+4>>2]=0;k[Ja+8>>2]=0;k[Ja+12>>2]=0;k[p+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ca|0,c|0);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;Na=Q;Yua(c);Yua(Ja);Ava(Ca);Ka=Na;La=Ma;break}Yua(c);B=0;Ma=Ia(40,p|0,69010,19)|0;Na=B;B=0;do if(!(Na&1)){B=0;Oa=Xa(247,Ma|0,(i[a+20>>0]|0)!=0|0)|0;Pa=B;B=0;if(Pa&1){$=95;break}B=0;Ia(40,Oa|0,149177,1)|0;Oa=B;B=0;if(Oa&1){$=95;break}B=0;wa(510,q|0,Ca|0);Oa=B;B=0;if(Oa&1){$=95;break}B=0;ya(424,q|0)|0;Oa=B;B=0;if(Oa&1){Oa=Rb()|0;Pa=Q;Yua(q);Qa=Pa;Ra=Oa;break}else{Yua(q);k[p>>2]=27468;k[Da>>2]=27488;k[Ca>>2]=27560;Yua(Ja);Ava(Ca);vva(Da);sla(a+24|0);r=b;return}}else $=95;while(0);if(($|0)==95){Ma=Rb()|0;Qa=Q;Ra=Ma}k[p>>2]=27468;k[Da>>2]=27488;k[Ca>>2]=27560;Yua(Ja);Ava(Ca);vva(Da);Sa=Qa;Ta=Ra;Qb(Ta|0)}while(0);Ga=Ka;Ha=La;vva(Da);Qb(Ha|0)}while(0);if(($|0)==92){za=Rb()|0;Ea=Q;Fa=za}k[n>>2]=27468;k[oa>>2]=27488;k[na>>2]=27560;Yua(ta);Ava(na);vva(oa);Sa=Ea;Ta=Fa;Qb(Ta|0)}while(0);ra=ua;sa=xa;vva(oa);Qb(sa|0)}while(0);if(($|0)==89){ka=Rb()|0;pa=Q;qa=ka}k[l>>2]=27468;k[aa>>2]=27488;k[ba>>2]=27560;Yua(ha);Ava(ba);vva(aa);Sa=pa;Ta=qa;Qb(Ta|0)}while(0);fa=ia;ga=ja;vva(aa);Qb(ga|0)}while(0);if(($|0)==86){Z=Rb()|0;ca=Q;da=Z}k[h>>2]=27468;k[O>>2]=27488;k[P>>2]=27560;Yua(W);Ava(P);vva(O);Sa=ca;Ta=da;Qb(Ta|0)}while(0);U=X;V=Y;vva(O);Qb(V|0)}else $=83;while(0);if(($|0)==83){M=Rb()|0;R=Q;S=M}k[f>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(J);Ava(D);vva(C);Sa=R;Ta=S;Qb(Ta|0)}while(0);H=K;I=L;vva(C);Qb(I|0)}else $=80;while(0);if(($|0)==80){A=Rb()|0;E=Q;F=A}k[d>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);Sa=E;Ta=F;Qb(Ta|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}function Ln(a){a=a|0;return k[a+8>>2]|0}function Mn(a){a=a|0;return 587}function Nn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;switch(c|0){case 943:{j=(k[a+56>>2]|0)+(b<<2)|0;l=k[j>>2]|0;r=d;return l|0}case 937:{j=(k[a+60>>2]|0)+(b<<2)|0;l=k[j>>2]|0;r=d;return l|0}case 966:{j=(k[a+64>>2]|0)+(b<<2)|0;l=k[j>>2]|0;r=d;return l|0}default:{l=f+56|0;d=f+4|0;k[f>>2]=27524;k[l>>2]=27544;B=0;wa(508,f+56|0,d|0);j=B;B=0;if(j&1){j=Rb()|0;m=Q;n=j;vva(l);Qb(n|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[l>>2]=27488;B=0;va(448,d|0);j=B;B=0;do if(j&1){b=Rb()|0;o=Q;p=b}else{k[d>>2]=27560;b=f+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,d|0,e|0);a=B;B=0;if(a&1){a=Rb()|0;q=Q;Yua(e);Yua(b);Ava(d);o=q;p=a;break}Yua(e);B=0;a=Ia(40,f|0,142357,17)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,c|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,a|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146956,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,68901,63);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,69030,6);q=B;B=0;if(q&1){q=Rb()|0;a=Q;Yua(g);u=a;v=q;break}B=0;wa(510,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,216,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;a=Q;Yua(i);w=a;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[l>>2]=27488;k[d>>2]=27560;Yua(b);Ava(d);vva(l);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[l>>2]=27488;k[d>>2]=27560;Yua(b);Ava(d);vva(l);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[l>>2]=27488;k[d>>2]=27560;Yua(b);Ava(d);vva(l);Qb(C|0)}while(0);m=o;n=p;vva(l);Qb(n|0)}}return 0}function On(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;l=e;m=(d|0)==943;if((c|0)==534){if(m){n=a+24|0;if((k[n>>2]|0)<=0){r=e;return}o=k[a+56>>2]|0;p=0;do{k[b+(p<<2)>>2]=k[o+(p<<2)>>2];p=p+1|0}while((p|0)<(k[n>>2]|0))}switch(d|0){case 937:{n=a+28|0;if((k[n>>2]|0)<=0){r=e;return}p=k[a+60>>2]|0;o=0;do{k[b+(o<<2)>>2]=k[p+(o<<2)>>2];o=o+1|0}while((o|0)<(k[n>>2]|0));r=e;return}case 966:{n=a+32|0;if((k[n>>2]|0)<=0){r=e;return}o=k[a+64>>2]|0;p=0;do{k[b+(p<<2)>>2]=k[o+(p<<2)>>2];p=p+1|0}while((p|0)<(k[n>>2]|0));r=e;return}default:{r=e;return}}}if(m){m=k[a+52>>2]|0;n=a+24|0;p=k[n>>2]|0;o=(p|0)>0;if(!m){if(!o){r=e;return}q=k[a+56>>2]|0;s=0;do{k[b+(s<<2)>>2]=k[q+(s<<2)>>2];s=s+1|0}while((s|0)<(k[n>>2]|0));r=e;return}if(!o){r=e;return}o=a+56|0;s=p;p=0;q=0;while(1){if((k[m+(q<<2)>>2]|0)==(c|0)){k[b+(p<<2)>>2]=k[(k[o>>2]|0)+(q<<2)>>2];t=k[n>>2]|0;u=p+1|0}else{t=s;u=p}q=q+1|0;if((q|0)>=(t|0))break;else{s=t;p=u}}r=e;return}switch(d|0){case 937:{u=k[a+52>>2]|0;if(!u){p=a+28|0;if((k[p>>2]|0)<=0){r=e;return}t=k[a+60>>2]|0;s=0;do{k[b+(s<<2)>>2]=k[t+(s<<2)>>2];s=s+1|0}while((s|0)<(k[p>>2]|0));r=e;return}p=a+24|0;s=k[p>>2]|0;if((s|0)<=0){r=e;return}t=k[a+40>>2]|0;q=a+60|0;n=s;s=0;o=0;m=0;while(1){if(!(i[t+m>>0]|0)){v=n;w=s;x=o}else{if((k[u+(m<<2)>>2]|0)==(c|0)){k[b+(s<<2)>>2]=k[(k[q>>2]|0)+(o<<2)>>2];y=k[p>>2]|0;z=s+1|0}else{y=n;z=s}v=y;w=z;x=o+1|0}m=m+1|0;if((m|0)>=(v|0))break;else{n=v;s=w;o=x}}r=e;return}case 966:{x=k[a+52>>2]|0;if(!x){o=a+32|0;if((k[o>>2]|0)<=0){r=e;return}w=k[a+64>>2]|0;s=0;do{k[b+(s<<2)>>2]=k[w+(s<<2)>>2];s=s+1|0}while((s|0)<(k[o>>2]|0));r=e;return}o=a+24|0;s=k[o>>2]|0;if((s|0)<=0){r=e;return}w=k[a+44>>2]|0;v=a+64|0;a=s;s=0;n=0;m=0;while(1){if(!(i[w+m>>0]|0)){A=a;C=s;D=n}else{if((k[x+(m<<2)>>2]|0)==(c|0)){k[b+(s<<2)>>2]=k[(k[v>>2]|0)+(n<<2)>>2];E=k[o>>2]|0;F=s+1|0}else{E=a;F=s}A=E;C=F;D=n+1|0}m=m+1|0;if((m|0)>=(A|0))break;else{a=A;s=C;n=D}}r=e;return}default:{e=g+56|0;D=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,D|0);n=B;B=0;if(n&1){n=Rb()|0;G=Q;H=n;vva(e);Qb(H|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,D|0);n=B;B=0;do if(n&1){C=Rb()|0;I=Q;J=C}else{k[D>>2]=27560;C=g+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,D|0,f|0);s=B;B=0;if(s&1){s=Rb()|0;A=Q;Yua(f);Yua(C);Ava(D);I=A;J=s;break}Yua(f);B=0;s=Ia(40,g|0,142357,17)|0;A=B;B=0;if((((!(A&1)?(B=0,A=ya(427,d|0)|0,a=B,B=0,!(a&1)):0)?(a=Lta(A)|0,B=0,m=Ia(40,s|0,A|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,a=Ia(40,m|0,146956,19)|0,m=B,B=0,!(m&1)):0)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,h|0,68901,63);m=B;B=0;do if(!(m&1)){B=0;eb(502,j|0,69037,10);A=B;B=0;if(A&1){A=Rb()|0;s=Q;Yua(h);K=s;L=A;break}B=0;wa(510,l|0,D|0);A=B;B=0;if(A&1){A=Rb()|0;M=Q;N=A;O=1}else{B=0;ua(163,a|0,h|0,j|0,278,l|0);A=B;B=0;if(A&1)P=1;else{B=0;eb(503,a|0,1240,229);B=0;P=0}A=Rb()|0;s=Q;Yua(l);M=s;N=A;O=P}Yua(j);Yua(h);if(O){K=M;L=N}else{R=M;S=N;k[g>>2]=27468;k[e>>2]=27488;k[D>>2]=27560;Yua(C);Ava(D);vva(e);Qb(S|0)}}else{A=Rb()|0;K=Q;L=A}while(0);zb(a|0);R=K;S=L;k[g>>2]=27468;k[e>>2]=27488;k[D>>2]=27560;Yua(C);Ava(D);vva(e);Qb(S|0)}m=Rb()|0;R=Q;S=m;k[g>>2]=27468;k[e>>2]=27488;k[D>>2]=27560;Yua(C);Ava(D);vva(e);Qb(S|0)}while(0);G=I;H=J;vva(e);Qb(H|0)}}}function Pn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0;e=r;r=r+368|0;f=e+344|0;g=e+208|0;h=e+196|0;j=e+184|0;l=e+36|0;m=e+48|0;n=e+24|0;o=e+12|0;p=e;q=(d|0)==943;if((c|0)==534){if(q){s=a+24|0;if((k[s>>2]|0)>0)t=0;else{r=e;return}do{k[b+(t<<2)>>2]=t;t=t+1|0}while((t|0)<(k[s>>2]|0));r=e;return}switch(d|0){case 937:{s=a+24|0;t=k[s>>2]|0;if((t|0)<=0){r=e;return}u=k[a+40>>2]|0;v=t;t=0;w=0;while(1){if(!(i[u+w>>0]|0)){x=v;y=t}else{k[b+(t<<2)>>2]=w;x=k[s>>2]|0;y=t+1|0}w=w+1|0;if((w|0)>=(x|0))break;else{v=x;t=y}}r=e;return}case 966:{y=a+24|0;t=k[y>>2]|0;if((t|0)<=0){r=e;return}x=k[a+44>>2]|0;v=t;t=0;w=0;while(1){if(!(i[x+w>>0]|0)){z=v;A=t}else{k[b+(t<<2)>>2]=w;z=k[y>>2]|0;A=t+1|0}w=w+1|0;if((w|0)>=(z|0))break;else{v=z;t=A}}r=e;return}default:{A=g+56|0;t=g+4|0;k[g>>2]=27524;k[A>>2]=27544;B=0;wa(508,g+56|0,t|0);z=B;B=0;if(z&1){z=Rb()|0;C=Q;D=z;vva(A);Qb(D|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[A>>2]=27488;B=0;va(448,t|0);z=B;B=0;do if(z&1){v=Rb()|0;E=Q;F=v}else{k[t>>2]=27560;v=g+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,t|0,f|0);w=B;B=0;if(w&1){w=Rb()|0;y=Q;Yua(f);Yua(v);Ava(t);E=y;F=w;break}Yua(f);B=0;w=Ia(40,g|0,142357,17)|0;y=B;B=0;a:do if((((!(y&1)?(B=0,x=ya(427,d|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(x)|0,B=0,u=Ia(40,w|0,x|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,u|0,146956,19)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,h|0,68901,63);u=B;B=0;do if(!(u&1)){B=0;eb(502,j|0,69048,15);x=B;B=0;if(x&1){x=Rb()|0;G=Q;Yua(h);H=x;I=G;break}B=0;wa(510,l|0,t|0);G=B;B=0;if(G&1){G=Rb()|0;J=Q;K=G;L=1}else{B=0;ua(163,s|0,h|0,j|0,309,l|0);G=B;B=0;if(G&1)M=1;else{B=0;eb(503,s|0,1240,229);B=0;M=0}G=Rb()|0;x=Q;Yua(l);J=x;K=G;L=M}Yua(j);Yua(h);if(L){H=K;I=J}else{N=K;O=J;break a}}else{G=Rb()|0;H=G;I=Q}while(0);zb(s|0);N=H;O=I}else P=34;while(0);if((P|0)==34){w=Rb()|0;N=w;O=Q}k[g>>2]=27468;k[A>>2]=27488;k[t>>2]=27560;Yua(v);Ava(t);vva(A);R=O;S=N;Qb(S|0)}while(0);C=E;D=F;vva(A);Qb(D|0)}}}if(q){q=k[a+52>>2]|0;D=a+24|0;A=k[D>>2]|0;F=(A|0)>0;if(!q){if(F)T=0;else{r=e;return}do{k[b+(T<<2)>>2]=T;T=T+1|0}while((T|0)<(k[D>>2]|0));r=e;return}if(F){U=A;V=0;W=0}else{r=e;return}while(1){if((k[q+(W<<2)>>2]|0)==(c|0)){k[b+(V<<2)>>2]=V;X=k[D>>2]|0;Y=V+1|0}else{X=U;Y=V}W=W+1|0;if((W|0)>=(X|0))break;else{U=X;V=Y}}r=e;return}switch(d|0){case 937:{Y=k[a+52>>2]|0;V=a+24|0;X=k[V>>2]|0;U=(X|0)>0;if(!Y){if(!U){r=e;return}W=k[a+40>>2]|0;D=X;q=0;A=0;while(1){if(!(i[W+A>>0]|0)){Z=D;_=q}else{k[b+(q<<2)>>2]=A;Z=k[V>>2]|0;_=q+1|0}A=A+1|0;if((A|0)>=(Z|0))break;else{D=Z;q=_}}r=e;return}if(!U){r=e;return}U=a+40|0;_=X;X=0;q=0;Z=0;while(1){if((k[Y+(Z<<2)>>2]|0)==(c|0)){if(!(i[(k[U>>2]|0)+Z>>0]|0)){$=_;aa=X}else{k[b+(X<<2)>>2]=q;$=k[V>>2]|0;aa=X+1|0}ba=$;ca=aa;da=q+1|0}else{ba=_;ca=X;da=q}Z=Z+1|0;if((Z|0)>=(ba|0))break;else{_=ba;X=ca;q=da}}r=e;return}case 966:{da=k[a+52>>2]|0;q=a+24|0;ca=k[q>>2]|0;X=(ca|0)>0;if(!da){if(!X){r=e;return}ba=k[a+44>>2]|0;_=ca;Z=0;aa=0;while(1){if(!(i[ba+aa>>0]|0)){ea=_;fa=Z}else{k[b+(Z<<2)>>2]=aa;ea=k[q>>2]|0;fa=Z+1|0}aa=aa+1|0;if((aa|0)>=(ea|0))break;else{_=ea;Z=fa}}r=e;return}if(!X){r=e;return}X=a+44|0;a=ca;ca=0;fa=0;Z=0;while(1){if((k[da+(Z<<2)>>2]|0)==(c|0)){if(!(i[(k[X>>2]|0)+Z>>0]|0)){ga=a;ha=ca}else{k[b+(ca<<2)>>2]=fa;ga=k[q>>2]|0;ha=ca+1|0}ia=ga;ja=ha;ka=fa+1|0}else{ia=a;ja=ca;ka=fa}Z=Z+1|0;if((Z|0)>=(ia|0))break;else{a=ia;ca=ja;fa=ka}}r=e;return}default:{e=m+56|0;ka=m+4|0;k[m>>2]=27524;k[e>>2]=27544;B=0;wa(508,m+56|0,ka|0);fa=B;B=0;if(fa&1){fa=Rb()|0;la=Q;ma=fa;vva(e);Qb(ma|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[e>>2]=27488;B=0;va(448,ka|0);fa=B;B=0;do if(fa&1){ja=Rb()|0;na=Q;oa=ja}else{k[ka>>2]=27560;ja=m+36|0;k[ja>>2]=0;k[ja+4>>2]=0;k[ja+8>>2]=0;k[ja+12>>2]=0;k[m+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,ka|0,f|0);ca=B;B=0;if(ca&1){ca=Rb()|0;ia=Q;Yua(f);Yua(ja);Ava(ka);na=ia;oa=ca;break}Yua(f);B=0;ca=Ia(40,m|0,142357,17)|0;ia=B;B=0;b:do if((((!(ia&1)?(B=0,a=ya(427,d|0)|0,Z=B,B=0,!(Z&1)):0)?(Z=Lta(a)|0,B=0,ha=Ia(40,ca|0,a|0,Z|0)|0,Z=B,B=0,!(Z&1)):0)?(B=0,Z=Ia(40,ha|0,146956,19)|0,ha=B,B=0,!(ha&1)):0)?(B=0,Xa(239,Z|0,0)|0,Z=B,B=0,!(Z&1)):0){Z=Ab(20)|0;B=0;eb(502,n|0,68901,63);ha=B;B=0;do if(!(ha&1)){B=0;eb(502,o|0,69048,15);a=B;B=0;if(a&1){a=Rb()|0;ga=Q;Yua(n);pa=a;qa=ga;break}B=0;wa(510,p|0,ka|0);ga=B;B=0;if(ga&1){ga=Rb()|0;ra=1;sa=Q;ta=ga}else{B=0;ua(163,Z|0,n|0,o|0,378,p|0);ga=B;B=0;if(ga&1)xa=1;else{B=0;eb(503,Z|0,1240,229);B=0;xa=0}ga=Rb()|0;a=Q;Yua(p);ra=xa;sa=a;ta=ga}Yua(o);Yua(n);if(ra){pa=ta;qa=sa}else{za=sa;Aa=ta;break b}}else{ga=Rb()|0;pa=ga;qa=Q}while(0);zb(Z|0);za=qa;Aa=pa}else P=95;while(0);if((P|0)==95){ca=Rb()|0;za=Q;Aa=ca}k[m>>2]=27468;k[e>>2]=27488;k[ka>>2]=27560;Yua(ja);Ava(ka);vva(e);R=za;S=Aa;Qb(S|0)}while(0);la=na;ma=oa;vva(e);Qb(ma|0)}}}function Qn(a){a=a|0;return k[a+12>>2]|0}function Rn(a){a=a|0;return k[a+16>>2]|0}function Sn(a,b){a=a|0;b=b|0;p[b>>3]=+p[a+72>>3];p[b+8>>3]=+p[a+80>>3];p[b+16>>3]=+p[a+88>>3];p[b+24>>3]=+p[a+96>>3];p[b+32>>3]=+p[a+104>>3];p[b+40>>3]=+p[a+112>>3];p[b+48>>3]=+p[a+120>>3];p[b+56>>3]=+p[a+128>>3];p[b+64>>3]=+p[a+136>>3];return}function Tn(a,b){a=a|0;b=b|0;return (k[a+68>>2]|0)==(b|0)|0}function Un(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=(k[a+40>>2]|0)+b|0;if(i[d>>0]|0){i[a+20>>0]=1;i[d>>0]=0;i[(k[a+44>>2]|0)+b>>0]=1}p[(k[a+48>>2]|0)+(b<<3)>>3]=c;return}function Vn(a,b){a=a|0;b=b|0;var c=0;c=(k[a+40>>2]|0)+b|0;if(!(i[c>>0]|0))return;i[a+20>>0]=1;i[c>>0]=0;i[(k[a+44>>2]|0)+b>>0]=1;return}function Wn(a){a=a|0;return (i[a+20>>0]|0)!=0|0}function Xn(a){a=a|0;i[a+20>>0]=0;return}function Yn(a,b){a=a|0;b=b|0;Zn(a,b);p[(k[a+48>>2]|0)+(b<<3)>>3]=0.0;return}function Zn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;j=(k[a+40>>2]|0)+b|0;if(i[j>>0]|0){r=c;return}if(!(i[a+38>>0]|0)){i[a+20>>0]=1;i[j>>0]=1;i[(k[a+44>>2]|0)+b>>0]=0;r=c;return}c=e+56|0;b=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;l=Q;m=a;vva(c);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){j=Rb()|0;n=Q;o=j}else{k[b>>2]=27560;j=e+36|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(j);Ava(b);n=q;o=p;break}Yua(d);B=0;p=Ia(40,e|0,69064,32)|0;q=B;B=0;if(!(q&1)?(B=0,Xa(239,p|0,0)|0,p=B,B=0,!(p&1)):0){p=Ab(20)|0;B=0;eb(502,f|0,68901,63);q=B;B=0;do if(!(q&1)){B=0;eb(502,g|0,69097,9);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(f);u=t;v=s;break}B=0;wa(510,h|0,b|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,p|0,f|0,g|0,479,h|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,p|0,1240,229);B=0;z=0}s=Rb()|0;t=Q;Yua(h);w=t;x=s;y=z}Yua(g);Yua(f);if(y){u=w;v=x}else{A=w;C=x;k[e>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(j);Ava(b);vva(c);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(p|0);A=u;C=v;k[e>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(j);Ava(b);vva(c);Qb(C|0)}q=Rb()|0;A=Q;C=q;k[e>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(j);Ava(b);vva(c);Qb(C|0)}while(0);l=n;m=o;vva(c);Qb(m|0)}function _n(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;c=k[a+32>>2]|0;if(!c)return;d=Rqa(c>>>0>536870911?-1:c<<3)|0;e=k[a+24>>2]|0;if((e|0)>0){f=k[a+44>>2]|0;g=a+48|0;h=0;j=0;while(1){if(!(i[f+j>>0]|0))l=h;else{p[d+(h<<3)>>3]=+p[(k[g>>2]|0)+(j<<3)>>3];l=h+1|0}j=j+1|0;if((j|0)>=(e|0))break;else h=l}}if(k[b>>2]|0){l=k[k[b+4>>2]>>2]|0;Dc[k[(k[l>>2]|0)+16>>2]&255](l,c,k[a+64>>2]|0,d,0)}Tqa(d);return}function $n(a){a=a|0;if(!(i[a+37>>0]|0))return;if(i[a+38>>0]|0)return;i[a+20>>0]=1;tla(a+24|0);return}function ao(a){a=a|0;return (i[a+37>>0]|0)!=0|0}function bo(a){a=a|0;if(i[a+37>>0]|0)return;if(i[a+38>>0]|0)return;i[a+20>>0]=1;ula(a+24|0);return}function co(a){a=a|0;return k[a+4>>2]|0}function eo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;d=r;r=r+368|0;e=d+344|0;f=d+208|0;g=d+196|0;h=d+184|0;i=d+36|0;j=d+48|0;m=d+24|0;n=d+12|0;o=d;p=(c|0)==943;if((b|0)==534){if(p){q=k[a+24>>2]|0;r=d;return q|0}switch(c|0){case 937:{q=k[a+28>>2]|0;r=d;return q|0}case 966:{q=k[a+32>>2]|0;r=d;return q|0}default:{s=f+56|0;t=f+4|0;k[f>>2]=27524;k[s>>2]=27544;B=0;wa(508,f+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=f+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,t|0,e|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(e);Yua(x);Ava(t);y=C;z=A;break}Yua(e);B=0;A=Ia(40,f|0,142357,17)|0;C=B;B=0;a:do if((((!(C&1)?(B=0,D=ya(427,c|0)|0,E=B,B=0,!(E&1)):0)?(E=Lta(D)|0,B=0,F=Ia(40,A|0,D|0,E|0)|0,E=B,B=0,!(E&1)):0)?(B=0,E=Ia(40,F|0,146956,19)|0,F=B,B=0,!(F&1)):0)?(B=0,Xa(239,E|0,0)|0,E=B,B=0,!(E&1)):0){E=Ab(20)|0;B=0;eb(502,g|0,68901,63);F=B;B=0;do if(!(F&1)){B=0;eb(502,h|0,69107,15);D=B;B=0;if(D&1){D=Rb()|0;G=Q;Yua(g);H=D;I=G;break}B=0;wa(510,i|0,t|0);G=B;B=0;if(G&1){G=Rb()|0;J=Q;K=G;L=1}else{B=0;ua(163,E|0,g|0,h|0,542,i|0);G=B;B=0;if(G&1)M=1;else{B=0;eb(503,E|0,1240,229);B=0;M=0}G=Rb()|0;D=Q;Yua(i);J=D;K=G;L=M}Yua(h);Yua(g);if(L){H=K;I=J}else{N=K;O=J;break a}}else{G=Rb()|0;H=G;I=Q}while(0);zb(E|0);N=H;O=I}else P=25;while(0);if((P|0)==25){A=Rb()|0;N=A;O=Q}k[f>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);R=O;S=N;Qb(S|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}}}if(p){p=k[a+52>>2]|0;w=k[a+24>>2]|0;if(!p){q=w;r=d;return q|0}if((w|0)>0){T=0;U=0}else{q=0;r=d;return q|0}while(1){s=((k[p+(T<<2)>>2]|0)==(b|0)&1)+U|0;T=T+1|0;if((T|0)>=(w|0)){q=s;break}else U=s}r=d;return q|0}switch(c|0){case 937:{U=k[a+52>>2]|0;if(!U){q=k[a+28>>2]|0;r=d;return q|0}w=k[a+24>>2]|0;if((w|0)<=0){q=0;r=d;return q|0}T=a+40|0;p=0;s=0;while(1){if((k[U+(p<<2)>>2]|0)==(b|0))V=(l[(k[T>>2]|0)+p>>0]|0)+s|0;else V=s;p=p+1|0;if((p|0)>=(w|0)){q=V;break}else s=V}r=d;return q|0}case 966:{V=k[a+52>>2]|0;if(!V){q=k[a+32>>2]|0;r=d;return q|0}s=k[a+24>>2]|0;if((s|0)<=0){q=0;r=d;return q|0}w=a+44|0;a=0;p=0;while(1){if((k[V+(a<<2)>>2]|0)==(b|0))W=(l[(k[w>>2]|0)+a>>0]|0)+p|0;else W=p;a=a+1|0;if((a|0)>=(s|0)){q=W;break}else p=W}r=d;return q|0}default:{q=j+56|0;d=j+4|0;k[j>>2]=27524;k[q>>2]=27544;B=0;wa(508,j+56|0,d|0);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Y=W;vva(q);Qb(Y|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[q>>2]=27488;B=0;va(448,d|0);W=B;B=0;do if(W&1){p=Rb()|0;Z=Q;_=p}else{k[d>>2]=27560;p=j+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[j+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,d|0,e|0);s=B;B=0;if(s&1){s=Rb()|0;a=Q;Yua(e);Yua(p);Ava(d);Z=a;_=s;break}Yua(e);B=0;s=Ia(40,j|0,142357,17)|0;a=B;B=0;b:do if((((!(a&1)?(B=0,w=ya(427,c|0)|0,b=B,B=0,!(b&1)):0)?(b=Lta(w)|0,B=0,V=Ia(40,s|0,w|0,b|0)|0,b=B,B=0,!(b&1)):0)?(B=0,b=Ia(40,V|0,146956,19)|0,V=B,B=0,!(V&1)):0)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,m|0,68901,63);V=B;B=0;do if(!(V&1)){B=0;eb(502,n|0,69107,15);w=B;B=0;if(w&1){w=Rb()|0;T=Q;Yua(m);$=w;aa=T;break}B=0;wa(510,o|0,d|0);T=B;B=0;if(T&1){T=Rb()|0;ba=1;ca=Q;da=T}else{B=0;ua(163,b|0,m|0,n|0,572,o|0);T=B;B=0;if(T&1)ea=1;else{B=0;eb(503,b|0,1240,229);B=0;ea=0}T=Rb()|0;w=Q;Yua(o);ba=ea;ca=w;da=T}Yua(n);Yua(m);if(ba){$=da;aa=ca}else{fa=ca;ga=da;break b}}else{T=Rb()|0;$=T;aa=Q}while(0);zb(b|0);fa=aa;ga=$}else P=70;while(0);if((P|0)==70){s=Rb()|0;fa=Q;ga=s}k[j>>2]=27468;k[q>>2]=27488;k[d>>2]=27560;Yua(p);Ava(d);vva(q);R=fa;S=ga;Qb(S|0)}while(0);X=Z;Y=_;vva(q);Qb(Y|0)}}return 0}function fo(a){a=a|0;return l[a+36>>0]|0|0}function go(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;l=e;switch(d|0){case 937:{d=k[a+28>>2]|0;if(!d){r=e;return}m=Rqa(d>>>0>1073741823?-1:d<<2)|0;n=Rqa(d>>>0>536870911?-1:d<<3)|0;o=k[a+24>>2]|0;if((o|0)>0){q=k[a+40>>2]|0;s=a+60|0;t=a+56|0;u=0;v=0;while(1){if(!(i[q+v>>0]|0))w=u;else{p[n+(u<<3)>>3]=+p[c+(k[(k[s>>2]|0)+(u<<2)>>2]<<3)>>3];k[m+(u<<2)>>2]=k[(k[t>>2]|0)+(v<<2)>>2];w=u+1|0}v=v+1|0;if((v|0)>=(o|0))break;else u=w}}if(!(k[b>>2]|0)){x=m;y=n}else{w=k[k[b+4>>2]>>2]|0;Dc[k[(k[w>>2]|0)+16>>2]&255](w,d,m,n,0);x=m;y=n}break}case 966:{n=k[a+32>>2]|0;if(!n){r=e;return}m=Rqa(n>>>0>1073741823?-1:n<<2)|0;d=Rqa(n>>>0>536870911?-1:n<<3)|0;w=k[a+24>>2]|0;if((w|0)>0){u=k[a+44>>2]|0;o=a+64|0;v=a+56|0;a=0;t=0;while(1){if(!(i[u+t>>0]|0))z=a;else{p[d+(a<<3)>>3]=+p[c+(k[(k[o>>2]|0)+(a<<2)>>2]<<3)>>3];k[m+(a<<2)>>2]=k[(k[v>>2]|0)+(t<<2)>>2];z=a+1|0}t=t+1|0;if((t|0)>=(w|0))break;else a=z}}if(!(k[b>>2]|0)){x=m;y=d}else{z=k[k[b+4>>2]>>2]|0;Dc[k[(k[z>>2]|0)+16>>2]&255](z,n,m,d,0);x=m;y=d}break}default:{d=g+56|0;m=g+4|0;k[g>>2]=27524;k[d>>2]=27544;B=0;wa(508,g+56|0,m|0);n=B;B=0;if(n&1){n=Rb()|0;A=Q;C=n;vva(d);Qb(C|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[d>>2]=27488;B=0;va(448,m|0);n=B;B=0;do if(n&1){z=Rb()|0;D=Q;E=z}else{k[m>>2]=27560;z=g+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,m|0,f|0);b=B;B=0;if(b&1){b=Rb()|0;a=Q;Yua(f);Yua(z);Ava(m);D=a;E=b;break}Yua(f);B=0;b=Ia(40,g|0,69123,59)|0;a=B;B=0;if(!(a&1)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,h|0,68901,63);a=B;B=0;do if(!(a&1)){B=0;eb(502,j|0,69183,8);w=B;B=0;if(w&1){w=Rb()|0;t=Q;Yua(h);F=t;G=w;break}B=0;wa(510,l|0,m|0);w=B;B=0;if(w&1){w=Rb()|0;H=Q;I=w;J=1}else{B=0;ua(163,b|0,h|0,j|0,626,l|0);w=B;B=0;if(w&1)K=1;else{B=0;eb(503,b|0,1240,229);B=0;K=0}w=Rb()|0;t=Q;Yua(l);H=t;I=w;J=K}Yua(j);Yua(h);if(J){F=H;G=I}else{L=H;M=I;k[g>>2]=27468;k[d>>2]=27488;k[m>>2]=27560;Yua(z);Ava(m);vva(d);Qb(M|0)}}else{w=Rb()|0;F=Q;G=w}while(0);zb(b|0);L=F;M=G;k[g>>2]=27468;k[d>>2]=27488;k[m>>2]=27560;Yua(z);Ava(m);vva(d);Qb(M|0)}a=Rb()|0;L=Q;M=a;k[g>>2]=27468;k[d>>2]=27488;k[m>>2]=27560;Yua(z);Ava(m);vva(d);Qb(M|0)}while(0);A=D;C=E;vva(d);Qb(C|0)}}Tqa(y);Tqa(x);r=e;return}function ho(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;l=e;switch(d|0){case 937:{d=k[a+28>>2]|0;if(!d){r=e;return}m=Rqa(d>>>0>536870911?-1:d<<3)|0;n=k[a+24>>2]|0;if((n|0)>0){o=k[a+40>>2]|0;q=a+56|0;s=0;t=0;while(1){if(!(i[o+t>>0]|0))u=s;else{p[m+(s<<3)>>3]=+p[c+(k[(k[q>>2]|0)+(t<<2)>>2]<<3)>>3];u=s+1|0}t=t+1|0;if((t|0)>=(n|0))break;else s=u}}if(!(k[b>>2]|0))v=m;else{u=k[k[b+4>>2]>>2]|0;Dc[k[(k[u>>2]|0)+16>>2]&255](u,d,k[a+60>>2]|0,m,0);v=m}break}case 966:{m=k[a+32>>2]|0;if(!m){r=e;return}d=Rqa(m>>>0>536870911?-1:m<<3)|0;u=k[a+24>>2]|0;if((u|0)>0){s=k[a+44>>2]|0;n=a+56|0;t=0;q=0;while(1){if(!(i[s+q>>0]|0))w=t;else{p[d+(t<<3)>>3]=+p[c+(k[(k[n>>2]|0)+(q<<2)>>2]<<3)>>3];w=t+1|0}q=q+1|0;if((q|0)>=(u|0))break;else t=w}}if(!(k[b>>2]|0))v=d;else{w=k[k[b+4>>2]>>2]|0;Dc[k[(k[w>>2]|0)+16>>2]&255](w,m,k[a+64>>2]|0,d,0);v=d}break}default:{d=g+56|0;a=g+4|0;k[g>>2]=27524;k[d>>2]=27544;B=0;wa(508,g+56|0,a|0);m=B;B=0;if(m&1){m=Rb()|0;x=Q;y=m;vva(d);Qb(y|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[d>>2]=27488;B=0;va(448,a|0);m=B;B=0;do if(m&1){w=Rb()|0;z=Q;A=w}else{k[a>>2]=27560;w=g+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,a|0,f|0);b=B;B=0;if(b&1){b=Rb()|0;t=Q;Yua(f);Yua(w);Ava(a);z=t;A=b;break}Yua(f);B=0;b=Ia(40,g|0,69192,60)|0;t=B;B=0;if(!(t&1)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,h|0,68901,63);t=B;B=0;do if(!(t&1)){B=0;eb(502,j|0,69253,9);u=B;B=0;if(u&1){u=Rb()|0;q=Q;Yua(h);C=q;D=u;break}B=0;wa(510,l|0,a|0);u=B;B=0;if(u&1){u=Rb()|0;E=Q;F=u;G=1}else{B=0;ua(163,b|0,h|0,j|0,671,l|0);u=B;B=0;if(u&1)H=1;else{B=0;eb(503,b|0,1240,229);B=0;H=0}u=Rb()|0;q=Q;Yua(l);E=q;F=u;G=H}Yua(j);Yua(h);if(G){C=E;D=F}else{I=E;J=F;k[g>>2]=27468;k[d>>2]=27488;k[a>>2]=27560;Yua(w);Ava(a);vva(d);Qb(J|0)}}else{u=Rb()|0;C=Q;D=u}while(0);zb(b|0);I=C;J=D;k[g>>2]=27468;k[d>>2]=27488;k[a>>2]=27560;Yua(w);Ava(a);vva(d);Qb(J|0)}t=Rb()|0;I=Q;J=t;k[g>>2]=27468;k[d>>2]=27488;k[a>>2]=27560;Yua(w);Ava(a);vva(d);Qb(J|0)}while(0);x=z;y=A;vva(d);Qb(y|0)}}Tqa(v);r=e;return}function io(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;j=d;l=k[b>>2]|0;m=(c|0)==937;if(!m)if((c|0)==966){qla(a+24|0,966);n=1}else n=0;else{qla(a+24|0,937);n=0}if(i[a+36>>0]|0){r=d;return}a:do if((c|0)==943){o=a+24|0;p=k[o>>2]|0;if((p|0)>0){q=k[a+56>>2]|0;s=0;do{k[q+(s<<2)>>2]=s+l;s=s+1|0;t=k[o>>2]|0}while((s|0)<(t|0));u=t}else u=p}else{if(m){s=a+28|0;o=k[s>>2]|0;if((o|0)<=0){u=o;break}o=k[a+60>>2]|0;q=0;while(1){k[o+(q<<2)>>2]=q+l;q=q+1|0;t=k[s>>2]|0;if((q|0)>=(t|0)){u=t;break a}}}if(n){q=a+32|0;s=k[q>>2]|0;if((s|0)<=0){u=s;break}s=k[a+64>>2]|0;o=0;while(1){k[s+(o<<2)>>2]=o+l;o=o+1|0;p=k[q>>2]|0;if((o|0)>=(p|0)){u=p;break a}}}o=f+56|0;q=f+4|0;k[f>>2]=27524;k[o>>2]=27544;B=0;wa(508,f+56|0,q|0);s=B;B=0;if(s&1){s=Rb()|0;v=Q;w=s;vva(o);Qb(w|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[o>>2]=27488;B=0;va(448,q|0);s=B;B=0;do if(s&1){p=Rb()|0;x=Q;y=p}else{k[q>>2]=27560;p=f+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,q|0,e|0);t=B;B=0;if(t&1){t=Rb()|0;z=Q;Yua(e);Yua(p);Ava(q);x=z;y=t;break}Yua(e);B=0;t=Ia(40,f|0,142357,17)|0;z=B;B=0;if((((!(z&1)?(B=0,z=ya(427,c|0)|0,A=B,B=0,!(A&1)):0)?(A=Lta(z)|0,B=0,C=Ia(40,t|0,z|0,A|0)|0,A=B,B=0,!(A&1)):0)?(B=0,A=Ia(40,C|0,146956,19)|0,C=B,B=0,!(C&1)):0)?(B=0,Xa(239,A|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,g|0,68901,63);C=B;B=0;do if(C&1){z=Rb()|0;D=Q;E=z}else{B=0;eb(502,h|0,69263,14);z=B;B=0;if(z&1){z=Rb()|0;t=Q;Yua(g);D=t;E=z;break}B=0;wa(510,j|0,q|0);z=B;B=0;if(z&1){z=Rb()|0;F=Q;G=z;H=1}else{B=0;ua(163,A|0,g|0,h|0,714,j|0);z=B;B=0;if(z&1)I=1;else{B=0;eb(503,A|0,1240,229);B=0;I=0}z=Rb()|0;t=Q;Yua(j);F=t;G=z;H=I}Yua(h);Yua(g);if(H){D=F;E=G;break}else{J=F;K=G}k[f>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(p);Ava(q);vva(o);Qb(K|0)}while(0);zb(A|0);J=D;K=E;k[f>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(p);Ava(q);vva(o);Qb(K|0)}C=Rb()|0;J=Q;K=C;k[f>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(p);Ava(q);vva(o);Qb(K|0)}while(0);v=x;w=y;vva(o);Qb(w|0)}while(0);k[b>>2]=u+l;r=d;return}function jo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;j=d;if(i[a+36>>0]|0){r=d;return}switch(c|0){case 943:{l=a+24|0;if((k[l>>2]|0)<=0){r=d;return}m=k[a+56>>2]|0;n=0;do{o=m+(n<<2)|0;k[o>>2]=(k[o>>2]|0)+b;n=n+1|0}while((n|0)<(k[l>>2]|0));r=d;return}case 937:{l=a+28|0;if((k[l>>2]|0)<=0){r=d;return}n=k[a+60>>2]|0;m=0;do{o=n+(m<<2)|0;k[o>>2]=(k[o>>2]|0)+b;m=m+1|0}while((m|0)<(k[l>>2]|0));r=d;return}case 966:{l=a+32|0;if((k[l>>2]|0)<=0){r=d;return}m=k[a+64>>2]|0;a=0;do{n=m+(a<<2)|0;k[n>>2]=(k[n>>2]|0)+b;a=a+1|0}while((a|0)<(k[l>>2]|0));r=d;return}default:{d=f+56|0;l=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,l|0);a=B;B=0;if(a&1){a=Rb()|0;p=Q;q=a;vva(d);Qb(q|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,l|0);a=B;B=0;do if(a&1){b=Rb()|0;s=Q;t=b}else{k[l>>2]=27560;b=f+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,l|0,e|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;Yua(e);Yua(b);Ava(l);s=n;t=m;break}Yua(e);B=0;m=Ia(40,f|0,142357,17)|0;n=B;B=0;if((((!(n&1)?(B=0,n=ya(427,c|0)|0,o=B,B=0,!(o&1)):0)?(o=Lta(n)|0,B=0,u=Ia(40,m|0,n|0,o|0)|0,o=B,B=0,!(o&1)):0)?(B=0,o=Ia(40,u|0,146956,19)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,g|0,68901,63);u=B;B=0;do if(!(u&1)){B=0;eb(502,h|0,69278,10);n=B;B=0;if(n&1){n=Rb()|0;m=Q;Yua(g);v=m;w=n;break}B=0;wa(510,j|0,l|0);n=B;B=0;if(n&1){n=Rb()|0;x=Q;y=n;z=1}else{B=0;ua(163,o|0,g|0,h|0,739,j|0);n=B;B=0;if(n&1)A=1;else{B=0;eb(503,o|0,1240,229);B=0;A=0}n=Rb()|0;m=Q;Yua(j);x=m;y=n;z=A}Yua(h);Yua(g);if(z){v=x;w=y}else{C=x;D=y;k[f>>2]=27468;k[d>>2]=27488;k[l>>2]=27560;Yua(b);Ava(l);vva(d);Qb(D|0)}}else{n=Rb()|0;v=Q;w=n}while(0);zb(o|0);C=v;D=w;k[f>>2]=27468;k[d>>2]=27488;k[l>>2]=27560;Yua(b);Ava(l);vva(d);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[f>>2]=27468;k[d>>2]=27488;k[l>>2]=27560;Yua(b);Ava(l);vva(d);Qb(D|0)}while(0);p=s;q=t;vva(d);Qb(q|0)}}}function ko(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;l=e;if(i[a+36>>0]|0){r=e;return}switch(d|0){case 943:{m=a+24|0;if((k[m>>2]|0)<=0){r=e;return}n=k[a+56>>2]|0;o=a+12|0;p=0;do{q=b+((ma(k[o>>2]|0,c)|0)+p<<2)|0;k[q>>2]=k[n+(p<<2)>>2];p=p+1|0}while((p|0)<(k[m>>2]|0));r=e;return}case 937:{m=a+28|0;if((k[m>>2]|0)<=0){r=e;return}p=k[a+60>>2]|0;n=a+12|0;o=0;do{q=b+((ma(k[n>>2]|0,c)|0)+o<<2)|0;k[q>>2]=k[p+(o<<2)>>2];o=o+1|0}while((o|0)<(k[m>>2]|0));r=e;return}case 966:{m=a+32|0;if((k[m>>2]|0)<=0){r=e;return}o=k[a+64>>2]|0;p=a+12|0;a=0;do{n=b+((ma(k[p>>2]|0,c)|0)+a<<2)|0;k[n>>2]=k[o+(a<<2)>>2];a=a+1|0}while((a|0)<(k[m>>2]|0));r=e;return}default:{e=g+56|0;m=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,m|0);a=B;B=0;if(a&1){a=Rb()|0;s=Q;t=a;vva(e);Qb(t|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,m|0);a=B;B=0;do if(a&1){o=Rb()|0;u=Q;v=o}else{k[m>>2]=27560;o=g+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,m|0,f|0);c=B;B=0;if(c&1){c=Rb()|0;p=Q;Yua(f);Yua(o);Ava(m);u=p;v=c;break}Yua(f);B=0;c=Ia(40,g|0,142357,17)|0;p=B;B=0;if((((!(p&1)?(B=0,p=ya(427,d|0)|0,b=B,B=0,!(b&1)):0)?(b=Lta(p)|0,B=0,n=Ia(40,c|0,p|0,b|0)|0,b=B,B=0,!(b&1)):0)?(B=0,b=Ia(40,n|0,146956,19)|0,n=B,B=0,!(n&1)):0)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,h|0,68901,63);n=B;B=0;do if(!(n&1)){B=0;eb(502,j|0,69289,12);p=B;B=0;if(p&1){p=Rb()|0;c=Q;Yua(h);w=c;x=p;break}B=0;wa(510,l|0,m|0);p=B;B=0;if(p&1){p=Rb()|0;y=Q;z=p;A=1}else{B=0;ua(163,b|0,h|0,j|0,761,l|0);p=B;B=0;if(p&1)C=1;else{B=0;eb(503,b|0,1240,229);B=0;C=0}p=Rb()|0;c=Q;Yua(l);y=c;z=p;A=C}Yua(j);Yua(h);if(A){w=y;x=z}else{D=y;E=z;k[g>>2]=27468;k[e>>2]=27488;k[m>>2]=27560;Yua(o);Ava(m);vva(e);Qb(E|0)}}else{p=Rb()|0;w=Q;x=p}while(0);zb(b|0);D=w;E=x;k[g>>2]=27468;k[e>>2]=27488;k[m>>2]=27560;Yua(o);Ava(m);vva(e);Qb(E|0)}n=Rb()|0;D=Q;E=n;k[g>>2]=27468;k[e>>2]=27488;k[m>>2]=27560;Yua(o);Ava(m);vva(e);Qb(E|0)}while(0);s=u;t=v;vva(e);Qb(t|0)}}}function lo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;l=e;if(!(i[a+36>>0]|0)){r=e;return}switch(d|0){case 943:{m=a+24|0;if((k[m>>2]|0)<=0){r=e;return}n=a+12|0;o=k[a+56>>2]|0;p=0;do{q=b+((ma(k[n>>2]|0,c)|0)+p<<2)|0;k[o+(p<<2)>>2]=k[q>>2];p=p+1|0}while((p|0)<(k[m>>2]|0));r=e;return}case 937:{m=a+28|0;if((k[m>>2]|0)<=0){r=e;return}p=a+12|0;o=k[a+60>>2]|0;n=0;do{q=b+((ma(k[p>>2]|0,c)|0)+n<<2)|0;k[o+(n<<2)>>2]=k[q>>2];n=n+1|0}while((n|0)<(k[m>>2]|0));r=e;return}case 966:{m=a+32|0;if((k[m>>2]|0)<=0){r=e;return}n=a+12|0;o=k[a+64>>2]|0;a=0;do{p=b+((ma(k[n>>2]|0,c)|0)+a<<2)|0;k[o+(a<<2)>>2]=k[p>>2];a=a+1|0}while((a|0)<(k[m>>2]|0));r=e;return}default:{e=g+56|0;m=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,m|0);a=B;B=0;if(a&1){a=Rb()|0;s=Q;t=a;vva(e);Qb(t|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,m|0);a=B;B=0;do if(a&1){o=Rb()|0;u=Q;v=o}else{k[m>>2]=27560;o=g+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,m|0,f|0);c=B;B=0;if(c&1){c=Rb()|0;n=Q;Yua(f);Yua(o);Ava(m);u=n;v=c;break}Yua(f);B=0;c=Ia(40,g|0,142357,17)|0;n=B;B=0;if((((!(n&1)?(B=0,n=ya(427,d|0)|0,b=B,B=0,!(b&1)):0)?(b=Lta(n)|0,B=0,p=Ia(40,c|0,n|0,b|0)|0,b=B,B=0,!(b&1)):0)?(B=0,b=Ia(40,p|0,146956,19)|0,p=B,B=0,!(p&1)):0)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,h|0,68901,63);p=B;B=0;do if(!(p&1)){B=0;eb(502,j|0,69302,15);n=B;B=0;if(n&1){n=Rb()|0;c=Q;Yua(h);w=c;x=n;break}B=0;wa(510,l|0,m|0);n=B;B=0;if(n&1){n=Rb()|0;y=Q;z=n;A=1}else{B=0;ua(163,b|0,h|0,j|0,786,l|0);n=B;B=0;if(n&1)C=1;else{B=0;eb(503,b|0,1240,229);B=0;C=0}n=Rb()|0;c=Q;Yua(l);y=c;z=n;A=C}Yua(j);Yua(h);if(A){w=y;x=z}else{D=y;E=z;k[g>>2]=27468;k[e>>2]=27488;k[m>>2]=27560;Yua(o);Ava(m);vva(e);Qb(E|0)}}else{n=Rb()|0;w=Q;x=n}while(0);zb(b|0);D=w;E=x;k[g>>2]=27468;k[e>>2]=27488;k[m>>2]=27560;Yua(o);Ava(m);vva(e);Qb(E|0)}p=Rb()|0;D=Q;E=p;k[g>>2]=27468;k[e>>2]=27488;k[m>>2]=27560;Yua(o);Ava(m);vva(e);Qb(E|0)}while(0);s=u;t=v;vva(e);Qb(t|0)}}}function mo(a,b){a=a|0;b=b|0;var c=0;c=vY()|0;i[a+36>>0]=(k[b+(k[a+12>>2]<<2)>>2]|0)!=(c|0)&1;return}function no(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;if(!b){e=0;return e|0}f=b>>>0>1073741823?-1:b<<2;g=Rqa(f)|0;h=Rqa(f)|0;f=(b|0)>0;if(f){if((d|0)==534){i=0;j=0;l=0;while(1){k[h+(i<<2)>>2]=l;m=a+(i<<2)|0;n=eo(k[m>>2]|0,534,c)|0;k[g+(i<<2)>>2]=n;o=n+j|0;i=i+1|0;if((i|0)==(b|0)){p=o;break}else{j=o;l=(k[(k[m>>2]|0)+24>>2]|0)+l|0}}}else{l=0;j=0;i=0;while(1){k[h+(l<<2)>>2]=i;m=a+(l<<2)|0;o=eo(k[m>>2]|0,d,c)|0;k[g+(l<<2)>>2]=o;n=k[m>>2]|0;m=k[n+52>>2]|0;q=k[n+24>>2]|0;if(m)if((q|0)>0){n=0;r=0;while(1){s=((k[m+(n<<2)>>2]|0)==(d|0)&1)+r|0;n=n+1|0;if((n|0)==(q|0)){t=s;break}else r=s}}else t=0;else t=q;r=o+j|0;l=l+1|0;if((l|0)==(b|0)){p=r;break}else{j=r;i=t+i|0}}}if(p){i=Rqa(p>>>0>1073741823?-1:p<<2)|0;if(f){p=0;t=0;while(1){Pn(k[a+(t<<2)>>2]|0,i+(p<<2)|0,d,c);j=t+1|0;if((j|0)==(b|0))break;else{p=(k[g+(t<<2)>>2]|0)+p|0;t=j}}if(f){f=0;t=0;while(1){p=k[g+(t<<2)>>2]|0;if((p|0)>0){c=k[h+(t<<2)>>2]|0;d=0;do{a=i+(d+f<<2)|0;k[a>>2]=(k[a>>2]|0)+c;d=d+1|0}while((d|0)<(p|0))}t=t+1|0;if((t|0)==(b|0)){u=i;break}else f=p+f|0}}else u=i}else u=i}else u=0}else u=0;Tqa(g);Tqa(h);e=u;return e|0}function oo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;if(!b){e=0;return e|0}f=Rqa(b>>>0>1073741823?-1:b<<2)|0;g=(b|0)>0;if(g){h=0;i=0;while(1){j=eo(k[a+(h<<2)>>2]|0,d,c)|0;k[f+(h<<2)>>2]=j;l=j+i|0;h=h+1|0;if((h|0)==(b|0)){m=l;break}else i=l}if(m){i=Rqa(m>>>0>1073741823?-1:m<<2)|0;if(g){g=0;m=0;while(1){On(k[a+(m<<2)>>2]|0,i+(g<<2)|0,d,c);h=m+1|0;if((h|0)==(b|0)){n=i;break}else{g=(k[f+(m<<2)>>2]|0)+g|0;m=h}}}else n=i}else n=0}else n=0;Tqa(f);e=n;return e|0}function po(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;if((b|0)>0){e=0;f=0}else{g=0;return g|0}while(1){h=(eo(k[a+(e<<2)>>2]|0,d,c)|0)+f|0;e=e+1|0;if((e|0)==(b|0)){g=h;break}else f=h}return g|0}function qo(a){a=a|0;k[a>>2]=28824;return}function ro(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0.0,g=0.0;k[a>>2]=28824;k[a+12>>2]=b;k[a+16>>2]=c;k[a+20>>2]=-9999;c=(Jka(e,108266)|0)+(d<<3)|0;p[a+24>>3]=+p[c>>3];c=(Jka(e,108276)|0)+(d<<3)|0;p[a+32>>3]=+p[c>>3];c=(Jka(e,127183)|0)+(d<<3)|0;p[a+40>>3]=+p[c>>3];c=k[e+40>>2]|0;k[a+8>>2]=c;switch(c|0){case 302:{c=(Jka(e,127183)|0)+(d<<3)|0;f=+p[c>>3];c=(Jka(e,134945)|0)+(d<<3)|0;g=+p[c>>3];c=(Jka(e,137052)|0)+(d<<3)|0;p[a+72>>3]=(f-g)/+p[c>>3];break}case 303:{c=(Jka(e,108286)|0)+(d<<3)|0;p[a+48>>3]=+p[c>>3];c=(Jka(e,108298)|0)+(d<<3)|0;p[a+56>>3]=+p[c>>3];c=(Jka(e,108311)|0)+(d<<3)|0;p[a+64>>3]=+p[c>>3];break}case 300:{p[a+72>>3]=0.0;break}case 301:{c=(Jka(e,108276)|0)+(d<<3)|0;g=+p[c>>3];c=(Jka(e,134945)|0)+(d<<3)|0;f=+p[c>>3];c=(Jka(e,137052)|0)+(d<<3)|0;p[a+72>>3]=(g-f)/+p[c>>3];break}default:{}}k[a+80>>2]=k[(k[e+96>>2]|0)+(d<<2)>>2];return}function so(a){a=a|0;k[a>>2]=28824;return}function to(a){a=a|0;Sqa(a);return}function uo(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0;b=r;r=r+1520|0;c=b+1504|0;d=b+1320|0;e=b+1492|0;f=b+1168|0;g=b+1480|0;h=b+1016|0;j=b+1468|0;l=b+880|0;m=b+1456|0;n=b+744|0;o=b+1304|0;q=b+592|0;s=b+1152|0;t=b+456|0;u=b+728|0;v=b+304|0;w=b+440|0;x=b+152|0;y=b+288|0;z=b+16|0;A=b;C=d+56|0;D=d+4|0;k[d>>2]=27524;k[C>>2]=27544;B=0;wa(508,d+56|0,D|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;G=E;vva(C);Qb(G|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[C>>2]=27488;B=0;va(448,D|0);E=B;B=0;do if(E&1){H=Rb()|0;I=Q;J=H}else{k[D>>2]=27560;H=d+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,D|0,c|0);K=B;B=0;if(K&1){K=Rb()|0;L=Q;Yua(c);Yua(H);Ava(D);I=L;J=K;break}Yua(c);B=0;Ia(40,d|0,69326,8)|0;K=B;B=0;do if(!(K&1)?(B=0,wa(510,e|0,D|0),L=B,B=0,!(L&1)):0){B=0;ya(424,e|0)|0;L=B;B=0;if(L&1){L=Rb()|0;M=Q;Yua(e);N=M;O=L;break}Yua(e);k[d>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(H);Ava(D);vva(C);L=f+56|0;M=f+4|0;k[f>>2]=27524;k[L>>2]=27544;B=0;wa(508,f+56|0,M|0);P=B;B=0;if(P&1){P=Rb()|0;R=Q;S=P;vva(L);Qb(S|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[L>>2]=27488;B=0;va(448,M|0);P=B;B=0;do if(P&1){T=Rb()|0;U=Q;V=T}else{k[M>>2]=27560;T=f+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,M|0,c|0);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Yua(c);Yua(T);Ava(M);U=X;V=W;break}Yua(c);B=0;W=Ia(40,f|0,144086,7)|0;X=B;B=0;do if(((!(X&1)?(B=0,Y=Xa(242,W|0,k[a+12>>2]|0)|0,Z=B,B=0,!(Z&1)):0)?(B=0,Ia(40,Y|0,149177,1)|0,Y=B,B=0,!(Y&1)):0)?(B=0,wa(510,g|0,M|0),Y=B,B=0,!(Y&1)):0){B=0;ya(424,g|0)|0;Y=B;B=0;if(Y&1){Y=Rb()|0;Z=Q;Yua(g);_=Z;$=Y;break}Yua(g);k[f>>2]=27468;k[L>>2]=27488;k[M>>2]=27560;Yua(T);Ava(M);vva(L);Y=h+56|0;Z=h+4|0;k[h>>2]=27524;k[Y>>2]=27544;B=0;wa(508,h+56|0,Z|0);aa=B;B=0;if(aa&1){aa=Rb()|0;ba=Q;ca=aa;vva(Y);Qb(ca|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[Y>>2]=27488;B=0;va(448,Z|0);aa=B;B=0;do if(aa&1){da=Rb()|0;ea=Q;fa=da}else{k[Z>>2]=27560;da=h+36|0;k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;k[da+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Z|0,c|0);ga=B;B=0;if(ga&1){ga=Rb()|0;ha=Q;Yua(c);Yua(da);Ava(Z);ea=ha;fa=ga;break}Yua(c);B=0;ga=Ia(40,h|0,79833,8)|0;ha=B;B=0;do if(ha&1)ia=136;else{B=0;ja=Xa(242,ga|0,k[a+16>>2]|0)|0;ka=B;B=0;if(ka&1){ia=136;break}B=0;Ia(40,ja|0,149177,1)|0;ja=B;B=0;if(ja&1){ia=136;break}B=0;wa(510,j|0,Z|0);ja=B;B=0;if(ja&1){ia=136;break}B=0;ya(424,j|0)|0;ja=B;B=0;if(ja&1){ja=Rb()|0;ka=Q;Yua(j);la=ka;ma=ja;break}Yua(j);k[h>>2]=27468;k[Y>>2]=27488;k[Z>>2]=27560;Yua(da);Ava(Z);vva(Y);ja=l+56|0;ka=l+4|0;k[l>>2]=27524;k[ja>>2]=27544;B=0;wa(508,l+56|0,ka|0);na=B;B=0;if(na&1){na=Rb()|0;oa=Q;pa=na;vva(ja);Qb(pa|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[ja>>2]=27488;B=0;va(448,ka|0);na=B;B=0;do if(na&1){qa=Rb()|0;ra=Q;sa=qa}else{k[ka>>2]=27560;qa=l+36|0;k[qa>>2]=0;k[qa+4>>2]=0;k[qa+8>>2]=0;k[qa+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ka|0,c|0);ta=B;B=0;if(ta&1){ta=Rb()|0;ua=Q;Yua(c);Yua(qa);Ava(ka);ra=ua;sa=ta;break}Yua(c);B=0;ta=Ia(40,l|0,69335,8)|0;ua=B;B=0;do if(ua&1)ia=139;else{B=0;xa=Xa(242,ta|0,k[a+20>>2]|0)|0;za=B;B=0;if(za&1){ia=139;break}B=0;Ia(40,xa|0,149177,1)|0;xa=B;B=0;if(xa&1){ia=139;break}B=0;wa(510,m|0,ka|0);xa=B;B=0;if(xa&1){ia=139;break}B=0;ya(424,m|0)|0;xa=B;B=0;if(xa&1){xa=Rb()|0;za=Q;Yua(m);Aa=za;Ba=xa;break}Yua(m);k[l>>2]=27468;k[ja>>2]=27488;k[ka>>2]=27560;Yua(qa);Ava(ka);vva(ja);xa=n+56|0;za=n+4|0;k[n>>2]=27524;k[xa>>2]=27544;B=0;wa(508,n+56|0,za|0);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Da=Q;Ea=Ca;vva(xa);Qb(Ea|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[xa>>2]=27488;B=0;va(448,za|0);Ca=B;B=0;do if(Ca&1){Fa=Rb()|0;Ga=Q;Ha=Fa}else{k[za>>2]=27560;Fa=n+36|0;k[Fa>>2]=0;k[Fa+4>>2]=0;k[Fa+8>>2]=0;k[Fa+12>>2]=0;k[n+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,za|0,c|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;Ka=Q;Yua(c);Yua(Fa);Ava(za);Ga=Ka;Ha=Ja;break}Yua(c);B=0;Ja=Ia(40,n|0,69344,6)|0;Ka=B;B=0;do if(Ka&1)ia=142;else{B=0;La=Sa(1,Ja|0,+(+p[a+24>>3]))|0;Ma=B;B=0;if(Ma&1){ia=142;break}B=0;Ia(40,La|0,149177,1)|0;La=B;B=0;if(La&1){ia=142;break}B=0;wa(510,o|0,za|0);La=B;B=0;if(La&1){ia=142;break}B=0;ya(424,o|0)|0;La=B;B=0;if(La&1){La=Rb()|0;Ma=Q;Yua(o);Na=Ma;Oa=La;break}Yua(o);k[n>>2]=27468;k[xa>>2]=27488;k[za>>2]=27560;Yua(Fa);Ava(za);vva(xa);La=q+56|0;Ma=q+4|0;k[q>>2]=27524;k[La>>2]=27544;B=0;wa(508,q+56|0,Ma|0);Pa=B;B=0;if(Pa&1){Pa=Rb()|0;Qa=Q;Ra=Pa;vva(La);Qb(Ra|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[La>>2]=27488;B=0;va(448,Ma|0);Pa=B;B=0;do if(Pa&1){Ta=Rb()|0;Ua=Q;Va=Ta}else{k[Ma>>2]=27560;Ta=q+36|0;k[Ta>>2]=0;k[Ta+4>>2]=0;k[Ta+8>>2]=0;k[Ta+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ma|0,c|0);Wa=B;B=0;if(Wa&1){Wa=Rb()|0;Ya=Q;Yua(c);Yua(Ta);Ava(Ma);Ua=Ya;Va=Wa;break}Yua(c);B=0;Wa=Ia(40,q|0,69351,6)|0;Ya=B;B=0;do if(Ya&1)ia=145;else{B=0;Za=Sa(1,Wa|0,+(+p[a+32>>3]))|0;_a=B;B=0;if(_a&1){ia=145;break}B=0;Ia(40,Za|0,149177,1)|0;Za=B;B=0;if(Za&1){ia=145;break}B=0;wa(510,s|0,Ma|0);Za=B;B=0;if(Za&1){ia=145;break}B=0;ya(424,s|0)|0;Za=B;B=0;if(Za&1){Za=Rb()|0;_a=Q;Yua(s);$a=_a;ab=Za;break}Yua(s);k[q>>2]=27468;k[La>>2]=27488;k[Ma>>2]=27560;Yua(Ta);Ava(Ma);vva(La);Za=t+56|0;_a=t+4|0;k[t>>2]=27524;k[Za>>2]=27544;B=0;wa(508,t+56|0,_a|0);bb=B;B=0;if(bb&1){bb=Rb()|0;cb=Q;db=bb;vva(Za);Qb(db|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[Za>>2]=27488;B=0;va(448,_a|0);bb=B;B=0;do if(bb&1){eb=Rb()|0;fb=Q;gb=eb}else{k[_a>>2]=27560;eb=t+36|0;k[eb>>2]=0;k[eb+4>>2]=0;k[eb+8>>2]=0;k[eb+12>>2]=0;k[t+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,_a|0,c|0);hb=B;B=0;if(hb&1){hb=Rb()|0;ib=Q;Yua(c);Yua(eb);Ava(_a);fb=ib;gb=hb;break}Yua(c);B=0;hb=Ia(40,t|0,69358,6)|0;ib=B;B=0;do if(ib&1)ia=148;else{B=0;jb=Sa(1,hb|0,+(+p[a+40>>3]))|0;kb=B;B=0;if(kb&1){ia=148;break}B=0;Ia(40,jb|0,149177,1)|0;jb=B;B=0;if(jb&1){ia=148;break}B=0;wa(510,u|0,_a|0);jb=B;B=0;if(jb&1){ia=148;break}B=0;ya(424,u|0)|0;jb=B;B=0;if(jb&1){jb=Rb()|0;kb=Q;Yua(u);lb=kb;mb=jb;break}Yua(u);k[t>>2]=27468;k[Za>>2]=27488;k[_a>>2]=27560;Yua(eb);Ava(_a);vva(Za);jb=v+56|0;kb=v+4|0;k[v>>2]=27524;k[jb>>2]=27544;B=0;wa(508,v+56|0,kb|0);nb=B;B=0;if(nb&1){nb=Rb()|0;ob=Q;pb=nb;vva(jb);Qb(pb|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[jb>>2]=27488;B=0;va(448,kb|0);nb=B;B=0;do if(nb&1){qb=Rb()|0;rb=Q;sb=qb}else{k[kb>>2]=27560;qb=v+36|0;k[qb>>2]=0;k[qb+4>>2]=0;k[qb+8>>2]=0;k[qb+12>>2]=0;k[v+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,kb|0,c|0);tb=B;B=0;if(tb&1){tb=Rb()|0;ub=Q;Yua(c);Yua(qb);Ava(kb);rb=ub;sb=tb;break}Yua(c);B=0;tb=Ia(40,v|0,69365,10)|0;ub=B;B=0;do if(ub&1)ia=151;else{B=0;vb=Sa(1,tb|0,+(+p[a+72>>3]))|0;wb=B;B=0;if(wb&1){ia=151;break}B=0;Ia(40,vb|0,149177,1)|0;vb=B;B=0;if(vb&1){ia=151;break}B=0;wa(510,w|0,kb|0);vb=B;B=0;if(vb&1){ia=151;break}B=0;ya(424,w|0)|0;vb=B;B=0;if(vb&1){vb=Rb()|0;wb=Q;Yua(w);xb=wb;yb=vb;break}Yua(w);k[v>>2]=27468;k[jb>>2]=27488;k[kb>>2]=27560;Yua(qb);Ava(kb);vva(jb);vb=x+56|0;wb=x+4|0;k[x>>2]=27524;k[vb>>2]=27544;B=0;wa(508,x+56|0,wb|0);zb=B;B=0;if(zb&1){zb=Rb()|0;Ab=Q;Bb=zb;vva(vb);Qb(Bb|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[vb>>2]=27488;B=0;va(448,wb|0);zb=B;B=0;do if(zb&1){Cb=Rb()|0;Db=Q;Eb=Cb}else{k[wb>>2]=27560;Cb=x+36|0;k[Cb>>2]=0;k[Cb+4>>2]=0;k[Cb+8>>2]=0;k[Cb+12>>2]=0;k[x+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,wb|0,c|0);Fb=B;B=0;if(Fb&1){Fb=Rb()|0;Gb=Q;Yua(c);Yua(Cb);Ava(wb);Db=Gb;Eb=Fb;break}Yua(c);B=0;Fb=Ia(40,x|0,69376,17)|0;Gb=B;B=0;do if(Gb&1)ia=154;else{B=0;Hb=Xa(242,Fb|0,k[a+80>>2]|0)|0;Ib=B;B=0;if(Ib&1){ia=154;break}B=0;Ia(40,Hb|0,149177,1)|0;Hb=B;B=0;if(Hb&1){ia=154;break}B=0;wa(510,y|0,wb|0);Hb=B;B=0;if(Hb&1){ia=154;break}B=0;ya(424,y|0)|0;Hb=B;B=0;if(Hb&1){Hb=Rb()|0;Ib=Q;Yua(y);Jb=Ib;Kb=Hb;break}Yua(y);k[x>>2]=27468;k[vb>>2]=27488;k[wb>>2]=27560;Yua(Cb);Ava(wb);vva(vb);Hb=z+56|0;Ib=z+4|0;k[z>>2]=27524;k[Hb>>2]=27544;B=0;wa(508,z+56|0,Ib|0);Lb=B;B=0;if(Lb&1){Lb=Rb()|0;Mb=Q;Nb=Lb;vva(Hb);Qb(Nb|0)}k[z+128>>2]=0;k[z+132>>2]=-1;k[z>>2]=27468;k[Hb>>2]=27488;B=0;va(448,Ib|0);Lb=B;B=0;do if(Lb&1){Ob=Rb()|0;Pb=Q;Sb=Ob}else{k[Ib>>2]=27560;Ob=z+36|0;k[Ob>>2]=0;k[Ob+4>>2]=0;k[Ob+8>>2]=0;k[Ob+12>>2]=0;k[z+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ib|0,c|0);Tb=B;B=0;if(Tb&1){Tb=Rb()|0;Ub=Q;Yua(c);Yua(Ob);Ava(Ib);Pb=Ub;Sb=Tb;break}Yua(c);B=0;Tb=Ia(40,z|0,69394,10)|0;Ub=B;B=0;do if(!(Ub&1)){B=0;Vb=Xa(247,Tb|0,(i[a+4>>0]|0)!=0|0)|0;Wb=B;B=0;if(Wb&1){ia=157;break}B=0;Ia(40,Vb|0,149177,1)|0;Vb=B;B=0;if(Vb&1){ia=157;break}B=0;wa(510,A|0,Ib|0);Vb=B;B=0;if(Vb&1){ia=157;break}B=0;ya(424,A|0)|0;Vb=B;B=0;if(Vb&1){Vb=Rb()|0;Wb=Q;Yua(A);Xb=Wb;Yb=Vb;break}else{Yua(A);k[z>>2]=27468;k[Hb>>2]=27488;k[Ib>>2]=27560;Yua(Ob);Ava(Ib);vva(Hb);r=b;return}}else ia=157;while(0);if((ia|0)==157){Tb=Rb()|0;Xb=Q;Yb=Tb}k[z>>2]=27468;k[Hb>>2]=27488;k[Ib>>2]=27560;Yua(Ob);Ava(Ib);vva(Hb);Zb=Xb;_b=Yb;Qb(_b|0)}while(0);Mb=Pb;Nb=Sb;vva(Hb);Qb(Nb|0)}while(0);if((ia|0)==154){Fb=Rb()|0;Jb=Q;Kb=Fb}k[x>>2]=27468;k[vb>>2]=27488;k[wb>>2]=27560;Yua(Cb);Ava(wb);vva(vb);Zb=Jb;_b=Kb;Qb(_b|0)}while(0);Ab=Db;Bb=Eb;vva(vb);Qb(Bb|0)}while(0);if((ia|0)==151){tb=Rb()|0;xb=Q;yb=tb}k[v>>2]=27468;k[jb>>2]=27488;k[kb>>2]=27560;Yua(qb);Ava(kb);vva(jb);Zb=xb;_b=yb;Qb(_b|0)}while(0);ob=rb;pb=sb;vva(jb);Qb(pb|0)}while(0);if((ia|0)==148){hb=Rb()|0;lb=Q;mb=hb}k[t>>2]=27468;k[Za>>2]=27488;k[_a>>2]=27560;Yua(eb);Ava(_a);vva(Za);Zb=lb;_b=mb;Qb(_b|0)}while(0);cb=fb;db=gb;vva(Za);Qb(db|0)}while(0);if((ia|0)==145){Wa=Rb()|0;$a=Q;ab=Wa}k[q>>2]=27468;k[La>>2]=27488;k[Ma>>2]=27560;Yua(Ta);Ava(Ma);vva(La);Zb=$a;_b=ab;Qb(_b|0)}while(0);Qa=Ua;Ra=Va;vva(La);Qb(Ra|0)}while(0);if((ia|0)==142){Ja=Rb()|0;Na=Q;Oa=Ja}k[n>>2]=27468;k[xa>>2]=27488;k[za>>2]=27560;Yua(Fa);Ava(za);vva(xa);Zb=Na;_b=Oa;Qb(_b|0)}while(0);Da=Ga;Ea=Ha;vva(xa);Qb(Ea|0)}while(0);if((ia|0)==139){ta=Rb()|0;Aa=Q;Ba=ta}k[l>>2]=27468;k[ja>>2]=27488;k[ka>>2]=27560;Yua(qa);Ava(ka);vva(ja);Zb=Aa;_b=Ba;Qb(_b|0)}while(0);oa=ra;pa=sa;vva(ja);Qb(pa|0)}while(0);if((ia|0)==136){ga=Rb()|0;la=Q;ma=ga}k[h>>2]=27468;k[Y>>2]=27488;k[Z>>2]=27560;Yua(da);Ava(Z);vva(Y);Zb=la;_b=ma;Qb(_b|0)}while(0);ba=ea;ca=fa;vva(Y);Qb(ca|0)}else ia=133;while(0);if((ia|0)==133){W=Rb()|0;_=Q;$=W}k[f>>2]=27468;k[L>>2]=27488;k[M>>2]=27560;Yua(T);Ava(M);vva(L);Zb=_;_b=$;Qb(_b|0)}while(0);R=U;S=V;vva(L);Qb(S|0)}else ia=130;while(0);if((ia|0)==130){K=Rb()|0;N=Q;O=K}k[d>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(H);Ava(D);vva(C);Zb=N;_b=O;Qb(_b|0)}while(0);F=I;G=J;vva(C);Qb(G|0)}function vo(a){a=a|0;Ec[k[(k[a>>2]|0)+8>>2]&1023](a);return}function wo(a){a=a|0;return k[a+12>>2]|0}function xo(a){a=a|0;return 627}function yo(a){a=a|0;var b=0,c=0,d=0;b=Qqa(88)|0;k[b>>2]=28824;c=b+4|0;d=a+4|0;a=c+80|0;do{k[c>>2]=k[d>>2];c=c+4|0;d=d+4|0}while((c|0)<(a|0));return b|0}function zo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=115;i[d+1>>0]=2;i[d+2>>0]=0;i[d+3>>0]=0;d=(k[b>>2]|0)+4|0;k[b>>2]=d;i[d>>0]=i[a+4>>0]|0;d=(k[b>>2]|0)+1|0;k[b>>2]=d;n=a+8|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;d=a+12|0;n=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+16|0;d=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[n>>0]=d;i[n+1>>0]=d>>8;i[n+2>>0]=d>>16;i[n+3>>0]=d>>24;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+20|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;d=a+24|0;n=d;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d+4|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o;o=n;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=n+4|0;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+32|0;n=q;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q+4|0;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d;d=n;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=n+4|0;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=(k[b>>2]|0)+8|0;k[b>>2]=q;o=a+40|0;n=o;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q;q=n;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=n+4|0;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+8|0;k[b>>2]=o;d=a+72|0;n=d;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d+4|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o;o=n;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=n+4|0;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+80|0;n=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24;i[d>>0]=n;i[d+1>>0]=n>>8;i[d+2>>0]=n>>16;i[d+3>>0]=n>>24;k[b>>2]=(k[b>>2]|0)+4;r=e;return}case 2:{k[c>>2]=(k[c>>2]|0)+57;r=e;return}case 1:{c=(k[b>>2]|0)+4|0;k[b>>2]=c;i[a+4>>0]=i[c>>0]|0;c=(k[b>>2]|0)+1|0;k[b>>2]=c;n=a+8|0;d=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[n>>0]=d;i[n+1>>0]=d>>8;i[n+2>>0]=d>>16;i[n+3>>0]=d>>24;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+12|0;c=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[n>>0]=c;i[n+1>>0]=c>>8;i[n+2>>0]=c>>16;i[n+3>>0]=c>>24;c=(k[b>>2]|0)+4|0;k[b>>2]=c;n=a+16|0;d=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[n>>0]=d;i[n+1>>0]=d>>8;i[n+2>>0]=d>>16;i[n+3>>0]=d>>24;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+20|0;c=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[n>>0]=c;i[n+1>>0]=c>>8;i[n+2>>0]=c>>16;i[n+3>>0]=c>>24;c=(k[b>>2]|0)+4|0;k[b>>2]=c;n=a+24|0;i[t>>0]=i[c>>0];i[t+1>>0]=i[c+1>>0];i[t+2>>0]=i[c+2>>0];i[t+3>>0]=i[c+3>>0];i[t+4>>0]=i[c+4>>0];i[t+5>>0]=i[c+5>>0];i[t+6>>0]=i[c+6>>0];i[t+7>>0]=i[c+7>>0];p[t>>3]=+p[t>>3];i[n>>0]=i[t>>0];i[n+1>>0]=i[t+1>>0];i[n+2>>0]=i[t+2>>0];i[n+3>>0]=i[t+3>>0];i[n+4>>0]=i[t+4>>0];i[n+5>>0]=i[t+5>>0];i[n+6>>0]=i[t+6>>0];i[n+7>>0]=i[t+7>>0];n=(k[b>>2]|0)+8|0;k[b>>2]=n;c=a+32|0;i[t>>0]=i[n>>0];i[t+1>>0]=i[n+1>>0];i[t+2>>0]=i[n+2>>0];i[t+3>>0]=i[n+3>>0];i[t+4>>0]=i[n+4>>0];i[t+5>>0]=i[n+5>>0];i[t+6>>0]=i[n+6>>0];i[t+7>>0]=i[n+7>>0];p[t>>3]=+p[t>>3];i[c>>0]=i[t>>0];i[c+1>>0]=i[t+1>>0];i[c+2>>0]=i[t+2>>0];i[c+3>>0]=i[t+3>>0];i[c+4>>0]=i[t+4>>0];i[c+5>>0]=i[t+5>>0];i[c+6>>0]=i[t+6>>0];i[c+7>>0]=i[t+7>>0];c=(k[b>>2]|0)+8|0;k[b>>2]=c;n=a+40|0;i[t>>0]=i[c>>0];i[t+1>>0]=i[c+1>>0];i[t+2>>0]=i[c+2>>0];i[t+3>>0]=i[c+3>>0];i[t+4>>0]=i[c+4>>0];i[t+5>>0]=i[c+5>>0];i[t+6>>0]=i[c+6>>0];i[t+7>>0]=i[c+7>>0];p[t>>3]=+p[t>>3];i[n>>0]=i[t>>0];i[n+1>>0]=i[t+1>>0];i[n+2>>0]=i[t+2>>0];i[n+3>>0]=i[t+3>>0];i[n+4>>0]=i[t+4>>0];i[n+5>>0]=i[t+5>>0];i[n+6>>0]=i[t+6>>0];i[n+7>>0]=i[t+7>>0];n=(k[b>>2]|0)+8|0;k[b>>2]=n;c=a+72|0;i[t>>0]=i[n>>0];i[t+1>>0]=i[n+1>>0];i[t+2>>0]=i[n+2>>0];i[t+3>>0]=i[n+3>>0];i[t+4>>0]=i[n+4>>0];i[t+5>>0]=i[n+5>>0];i[t+6>>0]=i[n+6>>0];i[t+7>>0]=i[n+7>>0];p[t>>3]=+p[t>>3];i[c>>0]=i[t>>0];i[c+1>>0]=i[t+1>>0];i[c+2>>0]=i[t+2>>0];i[c+3>>0]=i[t+3>>0];i[c+4>>0]=i[t+4>>0];i[c+5>>0]=i[t+5>>0];i[c+6>>0]=i[t+6>>0];i[c+7>>0]=i[t+7>>0];c=(k[b>>2]|0)+8|0;k[b>>2]=c;n=a+80|0;a=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[n>>0]=a;i[n+1>>0]=a>>8;i[n+2>>0]=a>>16;i[n+3>>0]=a>>24;k[b>>2]=(k[b>>2]|0)+4;r=e;return}default:{e=g+56|0;b=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;s=Q;u=a;vva(e);Qb(u|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){n=Rb()|0;v=Q;w=n}else{k[b>>2]=27560;n=g+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);c=B;B=0;if(c&1){c=Rb()|0;d=Q;Yua(f);Yua(n);Ava(b);v=d;w=c;break}Yua(f);B=0;c=Ia(40,g|0,143951,43)|0;d=B;B=0;if(!(d&1)?(B=0,Xa(239,c|0,0)|0,c=B,B=0,!(c&1)):0){c=Ab(20)|0;B=0;eb(502,h|0,69405,65);d=B;B=0;do if(!(d&1)){B=0;eb(502,j|0,149525,8);q=B;B=0;if(q&1){q=Rb()|0;o=Q;Yua(h);x=o;y=q;break}B=0;wa(510,m|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;z=Q;A=q;C=1}else{B=0;ua(163,c|0,h|0,j|0,100,m|0);q=B;B=0;if(q&1)D=1;else{B=0;eb(503,c|0,1240,229);B=0;D=0}q=Rb()|0;o=Q;Yua(m);z=o;A=q;C=D}Yua(j);Yua(h);if(C){x=z;y=A}else{E=z;F=A;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(n);Ava(b);vva(e);Qb(F|0)}}else{q=Rb()|0;x=Q;y=q}while(0);zb(c|0);E=x;F=y;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(n);Ava(b);vva(e);Qb(F|0)}d=Rb()|0;E=Q;F=d;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(n);Ava(b);vva(e);Qb(F|0)}while(0);s=v;u=w;vva(e);Qb(u|0)}}}function Ao(a){a=a|0;return k[a+80>>2]|0}function Bo(a){a=a|0;return k[a+16>>2]|0}function Co(a){a=a|0;return k[a+20>>2]|0}function Do(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0.0,q=0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;b=r;r=r+208|0;h=b+184|0;i=b;j=b+48|0;l=b+32|0;m=b+20|0;n=b+8|0;dO(e,i,358);switch(k[a+8>>2]|0){case 301:{e=a+32|0;o=+p[e>>3];q=k[a+20>>2]|0;s=+p[g+(q<<3)>>3];t=s+ +p[a+72>>3]*(+p[f+(q<<3)>>3]-s);s=+p[i>>3];p[e>>3]=t;if(!(k[c>>2]|0)){r=b;return}e=k[k[c+4>>2]>>2]|0;Jc[k[(k[e>>2]|0)+20>>2]&1](e,q,(t-o)/s,0);r=b;return}case 302:{q=a+40|0;s=+p[q>>3];e=k[a+20>>2]|0;o=+p[g+(e<<3)>>3];t=o+ +p[a+72>>3]*(+p[f+(e<<3)>>3]-o);o=+p[i>>3];p[q>>3]=t;if(!(k[d>>2]|0)){r=b;return}q=k[k[d+4>>2]>>2]|0;Jc[k[(k[q>>2]|0)+20>>2]&1](q,e,(t-s)/o,0);r=b;return}case 300:{r=b;return}default:{b=j+56|0;e=j+4|0;k[j>>2]=27524;k[b>>2]=27544;B=0;wa(508,j+56|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;u=Q;v=q;vva(b);Qb(v|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[b>>2]=27488;B=0;va(448,e|0);q=B;B=0;do if(q&1){d=Rb()|0;w=Q;x=d}else{k[e>>2]=27560;d=j+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[j+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,e|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;f=Q;Yua(h);Yua(d);Ava(e);w=f;x=i;break}Yua(h);B=0;i=Ia(40,j|0,143640,15)|0;f=B;B=0;if(!(f&1)?(B=0,Xa(239,i|0,0)|0,i=B,B=0,!(i&1)):0){i=Ab(20)|0;B=0;eb(502,l|0,69405,65);f=B;B=0;do if(!(f&1)){B=0;eb(502,m|0,69471,14);a=B;B=0;if(a&1){a=Rb()|0;g=Q;Yua(l);y=g;z=a;break}B=0;wa(510,n|0,e|0);a=B;B=0;if(a&1){a=Rb()|0;A=Q;C=a;D=1}else{B=0;ua(163,i|0,l|0,m|0,177,n|0);a=B;B=0;if(a&1)E=1;else{B=0;eb(503,i|0,1240,229);B=0;E=0}a=Rb()|0;g=Q;Yua(n);A=g;C=a;D=E}Yua(m);Yua(l);if(D){y=A;z=C}else{F=A;G=C;k[j>>2]=27468;k[b>>2]=27488;k[e>>2]=27560;Yua(d);Ava(e);vva(b);Qb(G|0)}}else{a=Rb()|0;y=Q;z=a}while(0);zb(i|0);F=y;G=z;k[j>>2]=27468;k[b>>2]=27488;k[e>>2]=27560;Yua(d);Ava(e);vva(b);Qb(G|0)}f=Rb()|0;F=Q;G=f;k[j>>2]=27468;k[b>>2]=27488;k[e>>2]=27560;Yua(d);Ava(e);vva(b);Qb(G|0)}while(0);u=w;v=x;vva(b);Qb(v|0)}}}function Eo(a,b){a=a|0;b=b|0;var c=0;c=k[b>>2]|0;if(i[a+4>>0]|0)return;k[a+20>>2]=c;k[b>>2]=c+1;return}function Fo(a,b){a=a|0;b=b|0;var c=0;if(i[a+4>>0]|0)return;c=a+20|0;k[c>>2]=(k[c>>2]|0)+b;return}function Go(a,b){a=a|0;b=b|0;if(i[a+4>>0]|0)return;k[b+(k[a+16>>2]<<2)>>2]=k[a+20>>2];return}function Ho(a,b){a=a|0;b=b|0;if(!(i[a+4>>0]|0))return;k[a+20>>2]=k[b+(k[a+16>>2]<<2)>>2];return}function Io(a,b){a=a|0;b=b|0;var c=0;c=vY()|0;i[a+4>>0]=(k[b+(k[a+16>>2]<<2)>>2]|0)!=(c|0)&1;return}function Jo(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(i[a+4>>0]|0)return;f=a+16|0;g=k[f>>2]|0;h=(k[b>>2]|0)==0;if(e){if(!h){e=k[k[b+4>>2]>>2]|0;Jc[k[(k[e>>2]|0)+20>>2]&1](e,g,+p[a+48>>3],0)}if(k[c>>2]|0){e=k[k[c+4>>2]>>2]|0;Jc[k[(k[e>>2]|0)+20>>2]&1](e,k[f>>2]|0,+p[a+56>>3],0)}if(!(k[d>>2]|0))return;e=k[k[d+4>>2]>>2]|0;Jc[k[(k[e>>2]|0)+20>>2]&1](e,k[f>>2]|0,+p[a+64>>3],0);return}else{if(!h){h=k[k[b+4>>2]>>2]|0;Jc[k[(k[h>>2]|0)+20>>2]&1](h,g,+p[a+24>>3],0)}if(k[c>>2]|0){g=k[k[c+4>>2]>>2]|0;Jc[k[(k[g>>2]|0)+20>>2]&1](g,k[f>>2]|0,+p[a+32>>3],0)}if(!(k[d>>2]|0))return;g=k[k[d+4>>2]>>2]|0;Jc[k[(k[g>>2]|0)+20>>2]&1](g,k[f>>2]|0,+p[a+40>>3],0);return}}function Ko(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=(c|0)>0;if(d){if(e)f=0;else return;do{d=k[b+(f<<2)>>2]|0;g=f*3|0;p[a+(g<<3)>>3]=+p[d+48>>3];p[a+(g+1<<3)>>3]=+p[d+56>>3];p[a+(g+2<<3)>>3]=+p[d+64>>3];f=f+1|0}while((f|0)!=(c|0));return}else{if(e)h=0;else return;do{e=k[b+(h<<2)>>2]|0;f=h*3|0;p[a+(f<<3)>>3]=+p[e+24>>3];p[a+(f+1<<3)>>3]=+p[e+32>>3];p[a+(f+2<<3)>>3]=+p[e+40>>3];h=h+1|0}while((h|0)!=(c|0));return}}function Lo(a){a=a|0;gh(a);k[a+12>>2]=553;return}function Mo(a){a=a|0;jh(a);return}function No(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=r;r=r+16|0;d=c;e=c+4|0;k[d>>2]=0;lO(b,d,951);bO(b,e,326);if((th(a)|0)>0)f=0;else{r=c;return}do{b=qh(a,f)|0;nd[k[(k[b>>2]|0)+32>>2]&1023](b,k[d>>2]|0,(i[e>>0]|0)!=0);f=f+1|0}while((f|0)<(th(a)|0));r=c;return}function Oo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if((th(a)|0)<=0){ih(a,b)|0;return 1}c=0;while(1){d=qh(a,c)|0;e=Hc[k[(k[d>>2]|0)+40>>2]&511](d)|0;if((e|0)==(Hc[k[(k[b>>2]|0)+40>>2]&511](b)|0)){e=Hc[k[(k[d>>2]|0)+36>>2]&511](d)|0;f=Hc[k[(k[b>>2]|0)+36>>2]&511](b)|0;if(!(Ita(f,e)|0)){g=d;h=e;i=f;break}if(e)Tqa(e);if(f)Tqa(f)}c=c+1|0;if((c|0)>=(th(a)|0)){j=14;break}}if((j|0)==14){ih(a,b)|0;return 1}mh(a,g)|0;if(h)Tqa(h);if(!i){ih(a,b)|0;return 1}Tqa(i);ih(a,b)|0;return 1}function Po(a){a=a|0;var b=0;k[a>>2]=28864;k[a+4>>2]=29420;k[a+8>>2]=-1;k[a+12>>2]=-1;b=a+16|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;return}function Qo(a){a=a|0;var b=0,c=0;k[a>>2]=28864;k[a+4>>2]=29420;b=a+40|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=k[a+16>>2]|0;if(!b)return;jC(b);Sqa(b);return}function Ro(a){a=a|0;var b=0,c=0;k[a>>2]=28864;k[a+4>>2]=29420;b=a+40|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=k[a+16>>2]|0;if(!b){Sqa(a);return}jC(b);Sqa(b);Sqa(a);return}function So(a,b){a=a|0;b=b|0;mC(k[a+16>>2]|0,b)|0;return}function To(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0;b=r;r=r+96|0;c=b+80|0;d=b+72|0;e=b+64|0;f=b+56|0;g=b+48|0;h=b+40|0;i=b+32|0;j=b+24|0;l=b+16|0;m=b+8|0;n=b;o=b+92|0;q=b+88|0;s=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;t=s*3|0;u=Rqa(t>>>0>536870911?-1:t<<3)|0;Ko(u,k[a+24>>2]|0,s,0);Vo(a);s=a+36|0;cO(k[s>>2]|0,o,299);dO(k[s>>2]|0,i,236);dO(k[s>>2]|0,j,235);t=a+16|0;v=oC(k[t>>2]|0,725)|0;w=oC(k[t>>2]|0,728)|0;x=oC(k[t>>2]|0,726)|0;if((k[o>>2]|0)==3){y=oC(k[t>>2]|0,727)|0;z=oC(k[t>>2]|0,729)|0;A=y;B=z;C=oC(k[t>>2]|0,730)|0}else{A=0;B=0;C=0}z=Hc[k[(k[a>>2]|0)+164>>2]&511](a)|0;y=Rqa(z>>>0>536870911?-1:z<<3)|0;D=oC(k[t>>2]|0,217)|0;cO(k[s>>2]|0,q,298);s=k[t>>2]|0;if((k[q>>2]|0)==300){E=oC(s,227)|0;F=oC(k[t>>2]|0,215)|0;G=E}else{E=oC(s,225)|0;F=oC(k[t>>2]|0,214)|0;G=E}E=Hc[k[(k[a>>2]|0)+304>>2]&511](a)|0;if((z|0)>0){t=0;do{s=k[(k[E>>2]|0)+32>>2]|0;H=Hc[k[(k[a>>2]|0)+128>>2]&511](a)|0;nd[s&1023](E,H,t);nd[k[(k[v>>2]|0)+48>>2]&1023](v,c,E);nd[k[(k[w>>2]|0)+48>>2]&1023](w,e,E);nd[k[(k[x>>2]|0)+48>>2]&1023](x,d,E);if((k[o>>2]|0)==3){nd[k[(k[A>>2]|0)+48>>2]&1023](A,f,E);nd[k[(k[B>>2]|0)+48>>2]&1023](B,g,E);nd[k[(k[C>>2]|0)+48>>2]&1023](C,h,E);I=+p[f>>3];J=+p[g>>3]}else{p[f>>3]=0.0;p[g>>3]=0.0;p[h>>3]=0.0;I=0.0;J=0.0}K=+p[c>>3];L=+p[e>>3];M=+p[d>>3];N=+aa(+(K*L+(K*K+L*L+M*M+I*I+J*J)+1.0e-54));nd[k[(k[F>>2]|0)+48>>2]&1023](F,l,E);nd[k[(k[D>>2]|0)+48>>2]&1023](D,n,E);nd[k[(k[G>>2]|0)+48>>2]&1023](G,m,E);M=+p[n>>3];L=+ba(+(+p[j>>3]/+p[l>>3]),+M);do if(N>L){K=+ba(+(L/N),+(1.0/M));O=1.0-K*+ja(+(-(N-L)/(L*(+p[i>>3]+-1.0))));K=+p[m>>3];H=y+(t<<3)|0;if(O>K){p[H>>3]=O;break}else{p[H>>3]=K;break}}else p[y+(t<<3)>>3]=+p[m>>3];while(0);t=t+1|0}while((t|0)!=(z|0))}z=k[a>>2]|0;t=k[z+48>>2]|0;m=Hc[k[z+128>>2]&511](a)|0;rd[t&511](a,245,y,m);m=(k[q>>2]|0)==300;q=k[a>>2]|0;t=k[q+48>>2]|0;z=Hc[k[q+128>>2]&511](a)|0;if(m)rd[t&511](a,227,y,z);else rd[t&511](a,225,y,z);Tqa(u);Tqa(y);if(!E){r=b;return}Ec[k[(k[E>>2]|0)+4>>2]&1023](E);r=b;return}function Uo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;d=c*3|0;e=Rqa(d>>>0>536870911?-1:d<<3)|0;Ko(e,k[a+24>>2]|0,c,0);k[b>>2]=e;return}function Vo(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0;b=r;r=r+64|0;c=b+48|0;d=b;e=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;f=e*3|0;g=Rqa(f>>>0>536870911?-1:f<<3)|0;Ko(g,k[a+24>>2]|0,e,0);cO(k[a+36>>2]|0,c,299);e=a+16|0;f=oC(k[e>>2]|0,674)|0;h=oC(k[e>>2]|0,677)|0;if((k[c>>2]|0)==3)i=oC(k[e>>2]|0,679)|0;else i=0;e=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;j=e>>>0>536870911?-1:e<<3;l=Rqa(j)|0;m=Rqa(j)|0;n=Rqa(j)|0;o=Rqa(j)|0;q=Rqa(j)|0;s=Rqa(j)|0;t=Rqa(j)|0;j=Hc[k[(k[a>>2]|0)+304>>2]&511](a)|0;if((e|0)>0){u=d+8|0;v=d+16|0;w=d+24|0;x=d+32|0;y=d+40|0;z=0;do{Fc[k[(k[j>>2]|0)+28>>2]&1023](j,z);if((k[c>>2]|0)==2)Xo(0,d,g,j,f,h);else Yo(0,d,g,j,f,h,i);A=(k[c>>2]|0)==2;B=+p[d>>3];p[l+(z<<3)>>3]=B;C=+p[u>>3];p[m+(z<<3)>>3]=C;D=+p[v>>3];if(A){E=+aa(+(B*B+C*C+D*(D*2.0)))*.7071067811865475;F=D}else{p[n+(z<<3)>>3]=D;D=+p[w>>3];G=+p[x>>3];p[q+(z<<3)>>3]=G;H=+p[y>>3];p[s+(z<<3)>>3]=H;E=+aa(+(B*C+(B*B+C*C+D*D+G*G+H*H)));F=D}p[o+(z<<3)>>3]=F;p[t+(z<<3)>>3]=E;z=z+1|0}while((z|0)!=(e|0))}rd[k[(k[a>>2]|0)+48>>2]&511](a,725,l,738);rd[k[(k[a>>2]|0)+48>>2]&511](a,726,o,738);rd[k[(k[a>>2]|0)+48>>2]&511](a,727,q,738);rd[k[(k[a>>2]|0)+48>>2]&511](a,728,m,738);rd[k[(k[a>>2]|0)+48>>2]&511](a,729,s,738);rd[k[(k[a>>2]|0)+48>>2]&511](a,730,n,738);rd[k[(k[a>>2]|0)+48>>2]&511](a,264,t,738);if(!j){Tqa(g);Tqa(l);Tqa(m);Tqa(n);Tqa(o);Tqa(q);Tqa(s);Tqa(t);r=b;return}Ec[k[(k[j>>2]|0)+4>>2]&1023](j);Tqa(g);Tqa(l);Tqa(m);Tqa(n);Tqa(o);Tqa(q);Tqa(s);Tqa(t);r=b;return}function Wo(a,b){a=a|0;b=b|0;return oC(k[a+16>>2]|0,b)|0}function Xo(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+240|0;g=a+224|0;h=a+24|0;i=a;j=a+88|0;l=a+72|0;m=a+60|0;n=a+48|0;if((e|0)!=0&(f|0)!=0){rd[k[(k[e>>2]|0)+60>>2]&511](e,h,c,d);rd[k[(k[f>>2]|0)+60>>2]&511](f,i,c,d);p[b>>3]=+p[h>>3];p[b+8>>3]=+p[i+8>>3];p[b+16>>3]=(+p[h+8>>3]+ +p[i>>3])*.5;r=a;return}a=j+56|0;i=j+4|0;k[j>>2]=27524;k[a>>2]=27544;B=0;wa(508,j+56|0,i|0);h=B;B=0;if(h&1){h=Rb()|0;o=Q;q=h;vva(a);Qb(q|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[a>>2]=27488;B=0;va(448,i|0);h=B;B=0;do if(h&1){b=Rb()|0;s=Q;t=b}else{k[i>>2]=27560;b=j+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[j+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,i|0,g|0);d=B;B=0;if(d&1){d=Rb()|0;c=Q;Yua(g);Yua(b);Ava(i);s=c;t=d;break}Yua(g);B=0;d=Ia(40,j|0,69495,59)|0;c=B;B=0;if(((((!(c&1)?(B=0,c=Xa(245,d|0,e|0)|0,d=B,B=0,!(d&1)):0)?(B=0,d=Ia(40,c|0,69555,6)|0,c=B,B=0,!(c&1)):0)?(B=0,c=Xa(245,d|0,f|0)|0,d=B,B=0,!(d&1)):0)?(B=0,d=Ia(40,c|0,149177,1)|0,c=B,B=0,!(c&1)):0)?(B=0,Xa(239,d|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,l|0,69562,75);c=B;B=0;do if(!(c&1)){B=0;eb(502,m|0,69638,13);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(l);w=v;x=u;break}B=0;wa(510,n|0,i|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,d|0,l|0,m|0,2634,n|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,d|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(n);y=v;z=u;A=C}Yua(m);Yua(l);if(A){w=y;x=z}else{D=y;E=z;k[j>>2]=27468;k[a>>2]=27488;k[i>>2]=27560;Yua(b);Ava(i);vva(a);Qb(E|0)}}else{u=Rb()|0;w=Q;x=u}while(0);zb(d|0);D=w;E=x;k[j>>2]=27468;k[a>>2]=27488;k[i>>2]=27560;Yua(b);Ava(i);vva(a);Qb(E|0)}c=Rb()|0;D=Q;E=c;k[j>>2]=27468;k[a>>2]=27488;k[i>>2]=27560;Yua(b);Ava(i);vva(a);Qb(E|0)}while(0);o=s;q=t;vva(a);Qb(q|0)}function Yo(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+272|0;h=a+248|0;i=a+48|0;j=a+24|0;l=a;m=a+112|0;n=a+96|0;o=a+84|0;q=a+72|0;if((e|0)!=0&(f|0)!=0&(g|0)!=0){rd[k[(k[e>>2]|0)+60>>2]&511](e,i,c,d);rd[k[(k[f>>2]|0)+60>>2]&511](f,j,c,d);rd[k[(k[g>>2]|0)+60>>2]&511](g,l,c,d);p[b>>3]=+p[i>>3];p[b+8>>3]=+p[j+8>>3];p[b+16>>3]=+p[l+16>>3];p[b+24>>3]=(+p[i+8>>3]+ +p[j>>3])*.5;p[b+32>>3]=(+p[i+16>>3]+ +p[l>>3])*.5;p[b+40>>3]=(+p[j+16>>3]+ +p[l+8>>3])*.5;r=a;return}a=m+56|0;l=m+4|0;k[m>>2]=27524;k[a>>2]=27544;B=0;wa(508,m+56|0,l|0);j=B;B=0;if(j&1){j=Rb()|0;s=Q;t=j;vva(a);Qb(t|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[a>>2]=27488;B=0;va(448,l|0);j=B;B=0;do if(j&1){b=Rb()|0;u=Q;v=b}else{k[l>>2]=27560;b=m+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[m+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,l|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;d=Q;Yua(h);Yua(b);Ava(l);u=d;v=i;break}Yua(h);B=0;i=Ia(40,m|0,69495,59)|0;d=B;B=0;if(((((((!(d&1)?(B=0,d=Xa(245,i|0,e|0)|0,i=B,B=0,!(i&1)):0)?(B=0,i=Ia(40,d|0,69555,6)|0,d=B,B=0,!(d&1)):0)?(B=0,d=Xa(245,i|0,f|0)|0,i=B,B=0,!(i&1)):0)?(B=0,i=Ia(40,d|0,69652,6)|0,d=B,B=0,!(d&1)):0)?(B=0,d=Xa(245,i|0,g|0)|0,i=B,B=0,!(i&1)):0)?(B=0,i=Ia(40,d|0,149177,1)|0,d=B,B=0,!(d&1)):0)?(B=0,Xa(239,i|0,0)|0,i=B,B=0,!(i&1)):0){i=Ab(20)|0;B=0;eb(502,n|0,69562,75);d=B;B=0;do if(!(d&1)){B=0;eb(502,o|0,69659,12);c=B;B=0;if(c&1){c=Rb()|0;w=Q;Yua(n);x=c;y=w;break}B=0;wa(510,q|0,l|0);w=B;B=0;if(w&1){w=Rb()|0;z=Q;A=w;C=1}else{B=0;ua(163,i|0,n|0,o|0,2557,q|0);w=B;B=0;if(w&1)D=1;else{B=0;eb(503,i|0,1240,229);B=0;D=0}w=Rb()|0;c=Q;Yua(q);z=c;A=w;C=D}Yua(o);Yua(n);if(C){x=A;y=z}else{E=A;F=z;k[m>>2]=27468;k[a>>2]=27488;k[l>>2]=27560;Yua(b);Ava(l);vva(a);Qb(E|0)}}else{w=Rb()|0;x=w;y=Q}while(0);zb(i|0);E=x;F=y;k[m>>2]=27468;k[a>>2]=27488;k[l>>2]=27560;Yua(b);Ava(l);vva(a);Qb(E|0)}d=Rb()|0;E=d;F=Q;k[m>>2]=27468;k[a>>2]=27488;k[l>>2]=27560;Yua(b);Ava(l);vva(a);Qb(E|0)}while(0);s=u;t=v;vva(a);Qb(t|0)}function Zo(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0;b=r;r=r+144|0;c=b+128|0;d=b+120|0;e=b+112|0;f=b+88|0;g=b+64|0;h=b+40|0;i=b+16|0;j=b+8|0;l=b;m=b+136|0;n=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;o=n*3|0;q=Rqa(o>>>0>536870911?-1:o<<3)|0;Ko(q,k[a+24>>2]|0,n,0);cO(k[a+36>>2]|0,m,299);n=a+16|0;o=oC(k[n>>2]|0,674)|0;s=oC(k[n>>2]|0,677)|0;if((k[m>>2]|0)==3)t=oC(k[n>>2]|0,679)|0;else t=0;n=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;u=n>>>0>536870911?-1:n<<3;v=Rqa(u)|0;w=Rqa(u)|0;x=Rqa(u)|0;y=Rqa(u)|0;z=Rqa(u)|0;A=Rqa(u)|0;B=Rqa(u)|0;u=Hc[k[(k[a>>2]|0)+304>>2]&511](a)|0;if((n|0)>0){C=i+8|0;D=i+16|0;E=h+8|0;F=g+16|0;G=f+16|0;H=f+8|0;I=g+8|0;J=h+16|0;K=0;do{Fc[k[(k[u>>2]|0)+28>>2]&1023](u,K);nd[k[(k[o>>2]|0)+48>>2]&1023](o,c,u);rd[k[(k[o>>2]|0)+60>>2]&511](o,f,q,u);nd[k[(k[s>>2]|0)+48>>2]&1023](s,d,u);rd[k[(k[s>>2]|0)+60>>2]&511](s,g,q,u);if((k[m>>2]|0)==3){nd[k[(k[t>>2]|0)+48>>2]&1023](t,e,u);rd[k[(k[t>>2]|0)+60>>2]&511](t,h,q,u);L=+p[e>>3]}else{p[e>>3]=0.0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[h+16>>2]=0;k[h+20>>2]=0;L=0.0}M=+p[c>>3];N=+p[d>>3];O=+aa(+(M*M+N*N+L*L));if(O<1.0e-12){k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;k[i+12>>2]=0;k[i+16>>2]=0;k[i+20>>2]=0;P=1.0e-12}else{Q=1.0/(+aa(+O)*2.0);R=M*2.0;S=N*2.0;T=L*2.0;p[i>>3]=Q*(R*+p[f>>3]+S*+p[g>>3]+T*+p[h>>3]);p[C>>3]=Q*(R*+p[H>>3]+S*+p[I>>3]+T*+p[E>>3]);p[D>>3]=Q*(R*+p[G>>3]+S*+p[F>>3]+T*+p[J>>3]);P=O}_Y(j,l,M,N,L,P,f,g,h,i);N=+aZ(+p[j>>3],+p[l>>3]);p[v+(K<<3)>>3]=N;N=+p[E>>3]-+p[F>>3];p[w+(K<<3)>>3]=N;M=+p[G>>3]-+p[h>>3];p[x+(K<<3)>>3]=M;O=+p[g>>3]-+p[H>>3];p[y+(K<<3)>>3]=O;T=+p[C>>3];S=+p[e>>3];R=+p[D>>3];Q=+p[d>>3];p[z+(K<<3)>>3]=(T*S-R*Q)*2.0/P-N;N=+p[c>>3];U=+p[i>>3];p[A+(K<<3)>>3]=(R*N-U*S)*2.0/P-M;p[B+(K<<3)>>3]=(U*Q-T*N)*2.0/P-O;K=K+1|0}while((K|0)!=(n|0))}rd[k[(k[a>>2]|0)+48>>2]&511](a,723,v,738);rd[k[(k[a>>2]|0)+48>>2]&511](a,790,w,738);rd[k[(k[a>>2]|0)+48>>2]&511](a,791,x,738);rd[k[(k[a>>2]|0)+48>>2]&511](a,792,y,738);rd[k[(k[a>>2]|0)+48>>2]&511](a,800,z,738);rd[k[(k[a>>2]|0)+48>>2]&511](a,801,A,738);rd[k[(k[a>>2]|0)+48>>2]&511](a,802,B,738);if(!u){Tqa(q);Tqa(v);r=b;return}Ec[k[(k[u>>2]|0)+4>>2]&1023](u);Tqa(q);Tqa(v);r=b;return}function _o(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0.0,Z=0.0,_=0.0,$=0.0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0;a=r;r=r+432|0;f=a+416|0;g=a;h=a+280|0;i=a+268|0;j=a+256|0;l=a+108|0;m=a+120|0;n=a+96|0;o=a+84|0;q=a+72|0;s=(d|0)>0;a:do if(s){t=0;u=0;b:while(1){v=e+(t<<2)|0;switch(k[v>>2]|0){case 653:{w=u+1|0;break}case 971:{w=u+2|0;break}case 972:{w=u+3|0;break}default:{x=v;break b}}t=t+1|0;if((t|0)>=(d|0)){y=w;break a}else u=w}u=h+56|0;t=h+4|0;k[h>>2]=27524;k[u>>2]=27544;B=0;wa(508,h+56|0,t|0);v=B;B=0;if(v&1){v=Rb()|0;z=Q;A=v;vva(u);Qb(A|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[u>>2]=27488;B=0;va(448,t|0);v=B;B=0;do if(v&1){C=Rb()|0;D=Q;E=C}else{k[t>>2]=27560;C=h+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,t|0,f|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(f);Yua(C);Ava(t);D=G;E=F;break}Yua(f);B=0;F=Ia(40,h|0,69672,18)|0;G=B;B=0;c:do if((((!(G&1)?(B=0,H=ya(427,k[x>>2]|0)|0,I=B,B=0,!(I&1)):0)?(I=Lta(H)|0,B=0,J=Ia(40,F|0,H|0,I|0)|0,I=B,B=0,!(I&1)):0)?(B=0,I=Ia(40,J|0,146481,18)|0,J=B,B=0,!(J&1)):0)?(B=0,Xa(239,I|0,0)|0,I=B,B=0,!(I&1)):0){I=Ab(20)|0;B=0;eb(502,i|0,69562,75);J=B;B=0;do if(!(J&1)){B=0;eb(502,j|0,69691,25);H=B;B=0;if(H&1){H=Rb()|0;K=Q;Yua(i);L=H;M=K;break}B=0;wa(510,l|0,t|0);K=B;B=0;if(K&1){K=Rb()|0;N=Q;O=K;P=1}else{B=0;ua(163,I|0,i|0,j|0,328,l|0);K=B;B=0;if(K&1)R=1;else{B=0;eb(503,I|0,1240,229);B=0;R=0}K=Rb()|0;H=Q;Yua(l);N=H;O=K;P=R}Yua(j);Yua(i);if(P){L=O;M=N}else{S=O;T=N;break c}}else{K=Rb()|0;L=K;M=Q}while(0);zb(I|0);S=L;T=M}else U=24;while(0);if((U|0)==24){F=Rb()|0;S=F;T=Q}k[h>>2]=27468;k[u>>2]=27488;k[t>>2]=27560;Yua(C);Ava(t);vva(u);V=T;W=S;Qb(W|0)}while(0);z=D;A=E;vva(u);Qb(A|0)}else y=0;while(0);A=ma(y,y)|0;E=Rqa(A>>>0>536870911?-1:A<<3)|0;if(A)WEa(E|0,0,((A|0)>1?A:1)<<3|0)|0;if(!s){k[b>>2]=E;r=a;return}s=g+24|0;A=g+8|0;D=g+16|0;z=g+32|0;S=g+40|0;T=g+48|0;h=g+56|0;M=g+64|0;L=0;N=0;d:while(1){Sn(k[c+(N<<2)>>2]|0,g);O=e+(N<<2)|0;switch(k[O>>2]|0){case 653:{P=E+((ma(L,y)|0)+L<<3)|0;p[P>>3]=1.0;X=L+1|0;break}case 971:{Y=+p[g>>3];Z=+p[s>>3];_=+aa(+(Y*Y+Z*Z));$=Y/_;P=(ma(L,y)|0)+L|0;p[E+(P<<3)>>3]=$;p[E+(P+1<<3)>>3]=-Z/_;P=(ma(L+1|0,y)|0)+L|0;p[E+(P<<3)>>3]=Z/_;p[E+(P+1<<3)>>3]=$;X=L+2|0;break}case 972:{P=(ma(L,y)|0)+L|0;p[E+(P<<3)>>3]=+p[g>>3];p[E+(P+1<<3)>>3]=+p[A>>3];p[E+(P+2<<3)>>3]=+p[D>>3];P=(ma(L+1|0,y)|0)+L|0;p[E+(P<<3)>>3]=+p[s>>3];p[E+(P+1<<3)>>3]=+p[z>>3];p[E+(P+2<<3)>>3]=+p[S>>3];P=(ma(L+2|0,y)|0)+L|0;p[E+(P<<3)>>3]=+p[T>>3];p[E+(P+1<<3)>>3]=+p[h>>3];p[E+(P+2<<3)>>3]=+p[M>>3];X=L+3|0;break}default:{ba=O;break d}}N=N+1|0;if((N|0)>=(d|0)){U=68;break}else L=X}if((U|0)==68){k[b>>2]=E;r=a;return}a=m+56|0;E=m+4|0;k[m>>2]=27524;k[a>>2]=27544;B=0;wa(508,m+56|0,E|0);b=B;B=0;if(b&1){b=Rb()|0;ca=Q;da=b;vva(a);Qb(da|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[a>>2]=27488;B=0;va(448,E|0);b=B;B=0;do if(b&1){X=Rb()|0;ea=Q;fa=X}else{k[E>>2]=27560;X=m+36|0;k[X>>2]=0;k[X+4>>2]=0;k[X+8>>2]=0;k[X+12>>2]=0;k[m+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,E|0,f|0);L=B;B=0;if(L&1){L=Rb()|0;d=Q;Yua(f);Yua(X);Ava(E);ea=d;fa=L;break}Yua(f);B=0;L=Ia(40,m|0,69672,18)|0;d=B;B=0;e:do if((((!(d&1)?(B=0,N=ya(427,k[ba>>2]|0)|0,M=B,B=0,!(M&1)):0)?(M=Lta(N)|0,B=0,h=Ia(40,L|0,N|0,M|0)|0,M=B,B=0,!(M&1)):0)?(B=0,M=Ia(40,h|0,146481,18)|0,h=B,B=0,!(h&1)):0)?(B=0,Xa(239,M|0,0)|0,M=B,B=0,!(M&1)):0){M=Ab(20)|0;B=0;eb(502,n|0,69562,75);h=B;B=0;do if(!(h&1)){B=0;eb(502,o|0,69691,25);N=B;B=0;if(N&1){N=Rb()|0;T=Q;Yua(n);ga=N;ha=T;break}B=0;wa(510,q|0,E|0);T=B;B=0;if(T&1){T=Rb()|0;ia=1;ja=Q;ka=T}else{B=0;ua(163,M|0,n|0,o|0,377,q|0);T=B;B=0;if(T&1)la=1;else{B=0;eb(503,M|0,1240,229);B=0;la=0}T=Rb()|0;N=Q;Yua(q);ia=la;ja=N;ka=T}Yua(o);Yua(n);if(ia){ga=ka;ha=ja}else{na=ja;oa=ka;break e}}else{T=Rb()|0;ga=T;ha=Q}while(0);zb(M|0);na=ha;oa=ga}else U=59;while(0);if((U|0)==59){L=Rb()|0;na=Q;oa=L}k[m>>2]=27468;k[a>>2]=27488;k[E>>2]=27560;Yua(X);Ava(E);vva(a);V=na;W=oa;Qb(W|0)}while(0);ca=ea;da=fa;vva(a);Qb(da|0)}function $o(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0;b=r;r=r+1664|0;c=b+1652|0;d=b+1456|0;e=b+1640|0;f=b+1320|0;g=b+1628|0;h=b+1168|0;i=b+1616|0;j=b+1032|0;l=b+1604|0;m=b+880|0;n=b+1592|0;o=b+728|0;p=b+1304|0;q=b+592|0;s=b+1016|0;t=b+440|0;u=b+864|0;v=b+304|0;w=b+576|0;x=b+168|0;y=b+152|0;z=b+16|0;A=b;C=d+56|0;D=d+4|0;k[d>>2]=27524;k[C>>2]=27544;B=0;wa(508,d+56|0,D|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;G=E;vva(C);Qb(G|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[C>>2]=27488;B=0;va(448,D|0);E=B;B=0;do if(E&1){H=Rb()|0;I=Q;J=H}else{k[D>>2]=27560;H=d+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,D|0,c|0);K=B;B=0;if(K&1){K=Rb()|0;L=Q;Yua(c);Yua(H);Ava(D);I=L;J=K;break}Yua(c);B=0;K=ya(k[(k[a>>2]|0)+20>>2]|0,a|0)|0;L=B;B=0;do if((((!(L&1)?(B=0,M=ya(427,K|0)|0,N=B,B=0,!(N&1)):0)?(N=Lta(M)|0,B=0,O=Ia(40,d|0,M|0,N|0)|0,N=B,B=0,!(N&1)):0)?(B=0,Ia(40,O|0,69717,10)|0,O=B,B=0,!(O&1)):0)?(B=0,wa(510,e|0,D|0),O=B,B=0,!(O&1)):0){B=0;ya(424,e|0)|0;O=B;B=0;if(O&1){O=Rb()|0;N=Q;Yua(e);P=O;R=N;break}Yua(e);k[d>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(H);Ava(D);vva(C);N=f+56|0;O=f+4|0;k[f>>2]=27524;k[N>>2]=27544;B=0;wa(508,f+56|0,O|0);M=B;B=0;if(M&1){M=Rb()|0;S=Q;T=M;vva(N);Qb(T|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[N>>2]=27488;B=0;va(448,O|0);M=B;B=0;do if(M&1){U=Rb()|0;V=Q;W=U}else{k[O>>2]=27560;U=f+36|0;k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;k[U+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,O|0,c|0);X=B;B=0;if(X&1){X=Rb()|0;Y=Q;Yua(c);Yua(U);Ava(O);V=Y;W=X;break}Yua(c);B=0;X=Ia(40,f|0,69728,8)|0;Y=B;B=0;do if(((!(Y&1)?(B=0,Z=Xa(242,X|0,k[a+8>>2]|0)|0,_=B,B=0,!(_&1)):0)?(B=0,Ia(40,Z|0,149177,1)|0,Z=B,B=0,!(Z&1)):0)?(B=0,wa(510,g|0,O|0),Z=B,B=0,!(Z&1)):0){B=0;ya(424,g|0)|0;Z=B;B=0;if(Z&1){Z=Rb()|0;_=Q;Yua(g);$=Z;aa=_;break}Yua(g);k[f>>2]=27468;k[N>>2]=27488;k[O>>2]=27560;Yua(U);Ava(O);vva(N);_=h+56|0;Z=h+4|0;k[h>>2]=27524;k[_>>2]=27544;B=0;wa(508,h+56|0,Z|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;da=ba;vva(_);Qb(da|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[_>>2]=27488;B=0;va(448,Z|0);ba=B;B=0;do if(ba&1){ea=Rb()|0;fa=Q;ga=ea}else{k[Z>>2]=27560;ea=h+36|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Z|0,c|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(c);Yua(ea);Ava(Z);fa=ia;ga=ha;break}Yua(c);B=0;ha=Ia(40,h|0,79833,8)|0;ia=B;B=0;do if(ia&1)ja=49;else{B=0;ka=Xa(242,ha|0,k[a+12>>2]|0)|0;la=B;B=0;if(la&1){ja=49;break}B=0;Ia(40,ka|0,149177,1)|0;ka=B;B=0;if(ka&1){ja=49;break}B=0;wa(510,i|0,Z|0);ka=B;B=0;if(ka&1){ja=49;break}B=0;ya(424,i|0)|0;ka=B;B=0;if(ka&1){ka=Rb()|0;la=Q;Yua(i);ma=ka;na=la;break}Yua(i);k[h>>2]=27468;k[_>>2]=27488;k[Z>>2]=27560;Yua(ea);Ava(Z);vva(_);la=a+24|0;a:do if(!(k[la>>2]|0)){ka=j+56|0;oa=j+4|0;k[j>>2]=27524;k[ka>>2]=27544;B=0;wa(508,j+56|0,oa|0);pa=B;B=0;if(pa&1){pa=Rb()|0;qa=Q;ra=pa;vva(ka);Qb(ra|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[ka>>2]=27488;B=0;va(448,oa|0);pa=B;B=0;do if(pa&1){sa=Rb()|0;ta=Q;ua=sa}else{k[oa>>2]=27560;sa=j+36|0;k[sa>>2]=0;k[sa+4>>2]=0;k[sa+8>>2]=0;k[sa+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,oa|0,c|0);xa=B;B=0;if(xa&1){xa=Rb()|0;za=Q;Yua(c);Yua(sa);Ava(oa);ta=za;ua=xa;break}Yua(c);B=0;Ia(40,j|0,69737,16)|0;xa=B;B=0;do if(!(xa&1)){B=0;wa(510,l|0,oa|0);za=B;B=0;if(za&1){ja=65;break}B=0;ya(424,l|0)|0;za=B;B=0;if(za&1){za=Rb()|0;Aa=Q;Yua(l);Ba=za;Ca=Aa;break}else{Yua(l);k[j>>2]=27468;k[ka>>2]=27488;k[oa>>2]=27560;Yua(sa);Ava(oa);vva(ka);break a}}else ja=65;while(0);if((ja|0)==65){xa=Rb()|0;Ba=xa;Ca=Q}k[j>>2]=27468;k[ka>>2]=27488;k[oa>>2]=27560;Yua(sa);Ava(oa);vva(ka);Da=Ba;Ea=Ca;Qb(Da|0)}while(0);qa=ta;ra=ua;vva(ka);Qb(ra|0)}else{oa=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;if((oa|0)>0)Fa=0;else break;do{pa=k[(k[la>>2]|0)+(Fa<<2)>>2]|0;Ec[k[(k[pa>>2]|0)+8>>2]&1023](pa);Fa=Fa+1|0}while((Fa|0)!=(oa|0))}while(0);la=a+20|0;b:do if(!(k[la>>2]|0)){oa=m+56|0;ka=m+4|0;k[m>>2]=27524;k[oa>>2]=27544;B=0;wa(508,m+56|0,ka|0);pa=B;B=0;if(pa&1){pa=Rb()|0;Ga=Q;Ha=pa;vva(oa);Qb(Ha|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[oa>>2]=27488;B=0;va(448,ka|0);pa=B;B=0;do if(pa&1){xa=Rb()|0;Ja=Q;Ka=xa}else{k[ka>>2]=27560;xa=m+36|0;k[xa>>2]=0;k[xa+4>>2]=0;k[xa+8>>2]=0;k[xa+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ka|0,c|0);Aa=B;B=0;if(Aa&1){Aa=Rb()|0;za=Q;Yua(c);Yua(xa);Ava(ka);Ja=za;Ka=Aa;break}Yua(c);B=0;Ia(40,m|0,69754,13)|0;Aa=B;B=0;do if(!(Aa&1)){B=0;wa(510,n|0,ka|0);za=B;B=0;if(za&1){ja=83;break}B=0;ya(424,n|0)|0;za=B;B=0;if(za&1){za=Rb()|0;La=Q;Yua(n);Ma=za;Na=La;break}else{Yua(n);k[m>>2]=27468;k[oa>>2]=27488;k[ka>>2]=27560;Yua(xa);Ava(ka);vva(oa);break b}}else ja=83;while(0);if((ja|0)==83){Aa=Rb()|0;Ma=Aa;Na=Q}k[m>>2]=27468;k[oa>>2]=27488;k[ka>>2]=27560;Yua(xa);Ava(ka);vva(oa);Da=Ma;Ea=Na;Qb(Da|0)}while(0);Ga=Ja;Ha=Ka;vva(oa);Qb(Ha|0)}else{ka=Hc[k[(k[a>>2]|0)+164>>2]&511](a)|0;if((ka|0)>0)Oa=0;else break;do{pa=k[(k[la>>2]|0)+(Oa<<2)>>2]|0;Ec[k[(k[pa>>2]|0)+12>>2]&1023](pa);Oa=Oa+1|0}while((Oa|0)!=(ka|0))}while(0);la=k[a+28>>2]|0;c:do if(!la){ka=o+56|0;oa=o+4|0;k[o>>2]=27524;k[ka>>2]=27544;B=0;wa(508,o+56|0,oa|0);pa=B;B=0;if(pa&1){pa=Rb()|0;Pa=Q;Qa=pa;vva(ka);Qb(Qa|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[ka>>2]=27488;B=0;va(448,oa|0);pa=B;B=0;do if(pa&1){Aa=Rb()|0;Ra=Q;Sa=Aa}else{k[oa>>2]=27560;Aa=o+36|0;k[Aa>>2]=0;k[Aa+4>>2]=0;k[Aa+8>>2]=0;k[Aa+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,oa|0,c|0);sa=B;B=0;if(sa&1){sa=Rb()|0;La=Q;Yua(c);Yua(Aa);Ava(oa);Ra=La;Sa=sa;break}Yua(c);B=0;Ia(40,o|0,69768,16)|0;sa=B;B=0;do if(!(sa&1)){B=0;wa(510,p|0,oa|0);La=B;B=0;if(La&1){ja=100;break}B=0;ya(424,p|0)|0;La=B;B=0;if(La&1){La=Rb()|0;za=Q;Yua(p);Ta=La;Ua=za;break}else{Yua(p);k[o>>2]=27468;k[ka>>2]=27488;k[oa>>2]=27560;Yua(Aa);Ava(oa);vva(ka);break c}}else ja=100;while(0);if((ja|0)==100){sa=Rb()|0;Ta=sa;Ua=Q}k[o>>2]=27468;k[ka>>2]=27488;k[oa>>2]=27560;Yua(Aa);Ava(oa);vva(ka);Da=Ta;Ea=Ua;Qb(Da|0)}while(0);Pa=Ra;Qa=Sa;vva(ka);Qb(Qa|0)}else Ec[k[(k[la>>2]|0)+12>>2]&1023](la);while(0);la=k[a+32>>2]|0;d:do if(!la){oa=q+56|0;pa=q+4|0;k[q>>2]=27524;k[oa>>2]=27544;B=0;wa(508,q+56|0,pa|0);sa=B;B=0;if(sa&1){sa=Rb()|0;Va=Q;Wa=sa;vva(oa);Qb(Wa|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[oa>>2]=27488;B=0;va(448,pa|0);sa=B;B=0;do if(sa&1){xa=Rb()|0;Ya=Q;Za=xa}else{k[pa>>2]=27560;xa=q+36|0;k[xa>>2]=0;k[xa+4>>2]=0;k[xa+8>>2]=0;k[xa+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,pa|0,c|0);za=B;B=0;if(za&1){za=Rb()|0;La=Q;Yua(c);Yua(xa);Ava(pa);Ya=La;Za=za;break}Yua(c);B=0;Ia(40,q|0,69785,14)|0;za=B;B=0;do if(!(za&1)){B=0;wa(510,s|0,pa|0);La=B;B=0;if(La&1){ja=117;break}B=0;ya(424,s|0)|0;La=B;B=0;if(La&1){La=Rb()|0;_a=Q;Yua(s);$a=La;ab=_a;break}else{Yua(s);k[q>>2]=27468;k[oa>>2]=27488;k[pa>>2]=27560;Yua(xa);Ava(pa);vva(oa);break d}}else ja=117;while(0);if((ja|0)==117){za=Rb()|0;$a=za;ab=Q}k[q>>2]=27468;k[oa>>2]=27488;k[pa>>2]=27560;Yua(xa);Ava(pa);vva(oa);Da=$a;Ea=ab;Qb(Da|0)}while(0);Va=Ya;Wa=Za;vva(oa);Qb(Wa|0)}else Ec[k[(k[la>>2]|0)+12>>2]&1023](la);while(0);la=t+56|0;pa=t+4|0;k[t>>2]=27524;k[la>>2]=27544;B=0;wa(508,t+56|0,pa|0);sa=B;B=0;if(sa&1){sa=Rb()|0;bb=Q;cb=sa;vva(la);Qb(cb|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[la>>2]=27488;B=0;va(448,pa|0);sa=B;B=0;do if(sa&1){ka=Rb()|0;db=Q;eb=ka}else{k[pa>>2]=27560;ka=t+36|0;k[ka>>2]=0;k[ka+4>>2]=0;k[ka+8>>2]=0;k[ka+12>>2]=0;k[t+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,pa|0,c|0);za=B;B=0;if(za&1){za=Rb()|0;Aa=Q;Yua(c);Yua(ka);Ava(pa);db=Aa;eb=za;break}Yua(c);B=0;Ia(40,t|0,144113,14)|0;za=B;B=0;do if(za&1)ja=133;else{B=0;wa(510,u|0,pa|0);Aa=B;B=0;if(Aa&1){ja=133;break}B=0;ya(424,u|0)|0;Aa=B;B=0;if(Aa&1){Aa=Rb()|0;_a=Q;Yua(u);fb=Aa;gb=_a;break}Yua(u);k[t>>2]=27468;k[la>>2]=27488;k[pa>>2]=27560;Yua(ka);Ava(pa);vva(la);_a=k[a+36>>2]|0;if(_a)$N(_a);_a=v+56|0;Aa=v+4|0;k[v>>2]=27524;k[_a>>2]=27544;B=0;wa(508,v+56|0,Aa|0);La=B;B=0;if(La&1){La=Rb()|0;hb=Q;ib=La;vva(_a);Qb(ib|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[_a>>2]=27488;B=0;va(448,Aa|0);La=B;B=0;do if(La&1){jb=Rb()|0;kb=Q;lb=jb}else{k[Aa>>2]=27560;jb=v+36|0;k[jb>>2]=0;k[jb+4>>2]=0;k[jb+8>>2]=0;k[jb+12>>2]=0;k[v+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Aa|0,c|0);mb=B;B=0;if(mb&1){mb=Rb()|0;nb=Q;Yua(c);Yua(jb);Ava(Aa);kb=nb;lb=mb;break}Yua(c);B=0;Ia(40,v|0,69800,18)|0;mb=B;B=0;do if(mb&1)ja=148;else{B=0;wa(510,w|0,Aa|0);nb=B;B=0;if(nb&1){ja=148;break}B=0;ya(424,w|0)|0;nb=B;B=0;if(nb&1){nb=Rb()|0;ob=Q;Yua(w);pb=nb;qb=ob;break}Yua(w);k[v>>2]=27468;k[_a>>2]=27488;k[Aa>>2]=27560;Yua(jb);Ava(Aa);vva(_a);ob=x+56|0;nb=x+4|0;k[x>>2]=27524;k[ob>>2]=27544;B=0;wa(508,x+56|0,nb|0);rb=B;B=0;if(rb&1){rb=Rb()|0;sb=Q;tb=rb;vva(ob);Qb(tb|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[ob>>2]=27488;B=0;va(448,nb|0);rb=B;B=0;do if(rb&1){ub=Rb()|0;vb=Q;wb=ub}else{k[nb>>2]=27560;ub=x+36|0;k[ub>>2]=0;k[ub+4>>2]=0;k[ub+8>>2]=0;k[ub+12>>2]=0;k[x+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,nb|0,c|0);xb=B;B=0;if(xb&1){xb=Rb()|0;yb=Q;Yua(c);Yua(ub);Ava(nb);vb=yb;wb=xb;break}Yua(c);B=0;Ia(40,x|0,69819,10)|0;xb=B;B=0;do if(xb&1)ja=163;else{B=0;wa(510,y|0,nb|0);yb=B;B=0;if(yb&1){ja=163;break}B=0;ya(424,y|0)|0;yb=B;B=0;if(yb&1){yb=Rb()|0;zb=Q;Yua(y);Ab=yb;Bb=zb;break}Yua(y);k[x>>2]=27468;k[ob>>2]=27488;k[nb>>2]=27560;Yua(ub);Ava(nb);vva(ob);zb=k[a+16>>2]|0;if(zb){nh(zb);r=b;return}zb=z+56|0;yb=z+4|0;k[z>>2]=27524;k[zb>>2]=27544;B=0;wa(508,z+56|0,yb|0);Cb=B;B=0;if(Cb&1){Cb=Rb()|0;Db=Q;Eb=Cb;vva(zb);Qb(Eb|0)}k[z+128>>2]=0;k[z+132>>2]=-1;k[z>>2]=27468;k[zb>>2]=27488;B=0;va(448,yb|0);Cb=B;B=0;do if(Cb&1){Fb=Rb()|0;Gb=Q;Hb=Fb}else{k[yb>>2]=27560;Fb=z+36|0;k[Fb>>2]=0;k[Fb+4>>2]=0;k[Fb+8>>2]=0;k[Fb+12>>2]=0;k[z+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,yb|0,c|0);Ib=B;B=0;if(Ib&1){Ib=Rb()|0;Jb=Q;Yua(c);Yua(Fb);Ava(yb);Gb=Jb;Hb=Ib;break}Yua(c);B=0;Ia(40,z|0,69830,12)|0;Ib=B;B=0;do if(Ib&1)ja=178;else{B=0;wa(510,A|0,yb|0);Jb=B;B=0;if(Jb&1){ja=178;break}B=0;ya(424,A|0)|0;Jb=B;B=0;if(Jb&1){Jb=Rb()|0;Kb=Q;Yua(A);Lb=Jb;Mb=Kb;break}Yua(A);k[z>>2]=27468;k[zb>>2]=27488;k[yb>>2]=27560;Yua(Fb);Ava(yb);vva(zb);r=b;return}while(0);if((ja|0)==178){Ib=Rb()|0;Lb=Ib;Mb=Q}k[z>>2]=27468;k[zb>>2]=27488;k[yb>>2]=27560;Yua(Fb);Ava(yb);vva(zb);Da=Lb;Ea=Mb;Qb(Da|0)}while(0);Db=Gb;Eb=Hb;vva(zb);Qb(Eb|0)}while(0);if((ja|0)==163){xb=Rb()|0;Ab=xb;Bb=Q}k[x>>2]=27468;k[ob>>2]=27488;k[nb>>2]=27560;Yua(ub);Ava(nb);vva(ob);Da=Ab;Ea=Bb;Qb(Da|0)}while(0);sb=vb;tb=wb;vva(ob);Qb(tb|0)}while(0);if((ja|0)==148){mb=Rb()|0;pb=mb;qb=Q}k[v>>2]=27468;k[_a>>2]=27488;k[Aa>>2]=27560;Yua(jb);Ava(Aa);vva(_a);Da=pb;Ea=qb;Qb(Da|0)}while(0);hb=kb;ib=lb;vva(_a);Qb(ib|0)}while(0);if((ja|0)==133){za=Rb()|0;fb=za;gb=Q}k[t>>2]=27468;k[la>>2]=27488;k[pa>>2]=27560;Yua(ka);Ava(pa);vva(la);Da=fb;Ea=gb;Qb(Da|0)}while(0);bb=db;cb=eb;vva(la);Qb(cb|0)}while(0);if((ja|0)==49){ha=Rb()|0;ma=ha;na=Q}k[h>>2]=27468;k[_>>2]=27488;k[Z>>2]=27560;Yua(ea);Ava(Z);vva(_);Da=ma;Ea=na;Qb(Da|0)}while(0);ca=fa;da=ga;vva(_);Qb(da|0)}else ja=46;while(0);if((ja|0)==46){X=Rb()|0;$=X;aa=Q}k[f>>2]=27468;k[N>>2]=27488;k[O>>2]=27560;Yua(U);Ava(O);vva(N);Da=$;Ea=aa;Qb(Da|0)}while(0);S=V;T=W;vva(N);Qb(T|0)}else ja=43;while(0);if((ja|0)==43){K=Rb()|0;P=K;R=Q}k[d>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(H);Ava(D);vva(C);Da=P;Ea=R;Qb(Da|0)}while(0);F=I;G=J;vva(C);Qb(G|0)}function ap(a){a=a|0;var b=0;b=k[a+28>>2]|0;if(!b)return;Ec[k[(k[b>>2]|0)+4>>2]&1023](b);return}function bp(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0.0,q=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0,z=0.0,A=0.0;b=r;r=r+96|0;c=b+80|0;d=b+72|0;e=b+48|0;f=b+24|0;g=b;cO(k[a+36>>2]|0,c,299);h=a+16|0;i=oC(k[h>>2]|0,674)|0;j=oC(k[h>>2]|0,677)|0;if((k[c>>2]|0)==3)l=oC(k[h>>2]|0,679)|0;else l=0;h=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;m=h*3|0;n=Rqa(m>>>0>536870911?-1:m<<3)|0;Ko(n,k[a+24>>2]|0,h,0);h=ed[k[(k[a>>2]|0)+308>>2]&511](a,5)|0;m=Hc[k[(k[h>>2]|0)+8>>2]&511](h)|0;if((m|0)>=(Hc[k[(k[h>>2]|0)+12>>2]&511](h)|0)){o=0.0;Tqa(n);q=k[h>>2]|0;s=q+4|0;t=k[s>>2]|0;Ec[t&1023](h);r=b;return +o}u=f+8|0;v=h+8|0;w=g+16|0;x=0.0;y=m;while(1){Fc[k[(k[h>>2]|0)+24>>2]&1023](h,y);rd[k[(k[a>>2]|0)+260>>2]&511](a,d,n,h);rd[k[(k[i>>2]|0)+60>>2]&511](i,e,n,h);rd[k[(k[j>>2]|0)+60>>2]&511](j,f,n,h);if((k[c>>2]|0)==2)z=(+p[e>>3]+ +p[u>>3])*+p[v>>3]*+p[d>>3];else{rd[k[(k[l>>2]|0)+60>>2]&511](l,g,n,h);z=(+p[e>>3]+ +p[u>>3]+ +p[w>>3])*+p[v>>3]*+p[d>>3]}A=x+z;y=y+1|0;if((y|0)>=(Hc[k[(k[h>>2]|0)+12>>2]&511](h)|0)){o=A;break}else x=A}Tqa(n);q=k[h>>2]|0;s=q+4|0;t=k[s>>2]|0;Ec[t&1023](h);r=b;return +o}function cp(a,b,c){a=a|0;b=b|0;c=c|0;cO(k[a+36>>2]|0,b,c);return}function dp(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0.0,n=0.0,o=0.0,q=0.0,s=0.0,t=0.0;h=r;r=r+64|0;i=h+56|0;j=h+16|0;l=h;if((c|0)==3){ep(0,j,d,e,f,g);m=+p[j>>3];n=+p[j+8>>3];o=+p[j+16>>3];q=+p[j+24>>3];s=+p[j+32>>3];t=+aa(+(m*n+(m*m+n*n+o*o+q*q+s*s)+1.0e-54))}else{fp(0,l,d,e,f,0);s=+p[l>>3];q=+p[l+8>>3];t=+aa(+(s*s+q*(q*2.0)+1.0e-54))*.7071067811865475}l=k[a+28>>2]|0;Xc[k[(k[l>>2]|0)+88>>2]&63](l,i,t);p[b>>3]=+p[i>>3];r=h;return}function ep(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+240|0;g=a+224|0;h=a+24|0;i=a;j=a+88|0;l=a+72|0;m=a+60|0;n=a+48|0;if((e|0)!=0&(f|0)!=0){rd[k[(k[e>>2]|0)+60>>2]&511](e,h,c,d);rd[k[(k[f>>2]|0)+60>>2]&511](f,i,c,d);p[b>>3]=+p[h>>3];p[b+8>>3]=+p[i+8>>3];p[b+16>>3]=(+p[h+8>>3]+ +p[i>>3])*.5;p[b+24>>3]=+p[h+16>>3]*.5;p[b+32>>3]=+p[i+16>>3]*.5;r=a;return}a=j+56|0;i=j+4|0;k[j>>2]=27524;k[a>>2]=27544;B=0;wa(508,j+56|0,i|0);b=B;B=0;if(b&1){b=Rb()|0;o=Q;q=b;vva(a);Qb(q|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[a>>2]=27488;B=0;va(448,i|0);b=B;B=0;do if(b&1){h=Rb()|0;s=Q;t=h}else{k[i>>2]=27560;h=j+36|0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[j+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,i|0,g|0);d=B;B=0;if(d&1){d=Rb()|0;c=Q;Yua(g);Yua(h);Ava(i);s=c;t=d;break}Yua(g);B=0;d=Ia(40,j|0,69495,59)|0;c=B;B=0;if(((((!(c&1)?(B=0,c=Xa(245,d|0,e|0)|0,d=B,B=0,!(d&1)):0)?(B=0,d=Ia(40,c|0,69555,6)|0,c=B,B=0,!(c&1)):0)?(B=0,c=Xa(245,d|0,f|0)|0,d=B,B=0,!(d&1)):0)?(B=0,d=Ia(40,c|0,149177,1)|0,c=B,B=0,!(c&1)):0)?(B=0,Xa(239,d|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,l|0,69562,75);c=B;B=0;do if(!(c&1)){B=0;eb(502,m|0,69843,12);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(l);w=v;x=u;break}B=0;wa(510,n|0,i|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,d|0,l|0,m|0,2589,n|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,d|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(n);y=v;z=u;A=C}Yua(m);Yua(l);if(A){w=y;x=z}else{D=y;E=z;k[j>>2]=27468;k[a>>2]=27488;k[i>>2]=27560;Yua(h);Ava(i);vva(a);Qb(E|0)}}else{u=Rb()|0;w=Q;x=u}while(0);zb(d|0);D=w;E=x;k[j>>2]=27468;k[a>>2]=27488;k[i>>2]=27560;Yua(h);Ava(i);vva(a);Qb(E|0)}c=Rb()|0;D=Q;E=c;k[j>>2]=27468;k[a>>2]=27488;k[i>>2]=27560;Yua(h);Ava(i);vva(a);Qb(E|0)}while(0);o=s;q=t;vva(a);Qb(q|0)}function fp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;f=r;r=r+224|0;a=f+200|0;g=f;h=f+64|0;i=f+48|0;j=f+36|0;l=f+24|0;if(e){rd[k[(k[e>>2]|0)+60>>2]&511](e,g,c,d);p[b>>3]=+p[g>>3];p[b+8>>3]=+p[g+8>>3]*.5;r=f;return}f=h+56|0;g=h+4|0;k[h>>2]=27524;k[f>>2]=27544;B=0;wa(508,h+56|0,g|0);b=B;B=0;if(b&1){b=Rb()|0;m=Q;n=b;vva(f);Qb(n|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);b=B;B=0;do if(b&1){d=Rb()|0;o=Q;q=d}else{k[g>>2]=27560;d=h+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[h+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);c=B;B=0;if(c&1){c=Rb()|0;e=Q;Yua(a);Yua(d);Ava(g);o=e;q=c;break}Yua(a);B=0;c=Ia(40,h|0,69495,59)|0;e=B;B=0;if(((!(e&1)?(B=0,e=Xa(245,c|0,0)|0,c=B,B=0,!(c&1)):0)?(B=0,c=Ia(40,e|0,149177,1)|0,e=B,B=0,!(e&1)):0)?(B=0,Xa(239,c|0,0)|0,c=B,B=0,!(c&1)):0){c=Ab(20)|0;B=0;eb(502,i|0,69562,75);e=B;B=0;do if(!(e&1)){B=0;eb(502,j|0,69856,22);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(i);u=t;v=s;break}B=0;wa(510,l|0,g|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,c|0,i|0,j|0,2617,l|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,c|0,1240,229);B=0;z=0}s=Rb()|0;t=Q;Yua(l);w=t;x=s;y=z}Yua(j);Yua(i);if(y){u=w;v=x}else{A=w;C=x;k[h>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(d);Ava(g);vva(f);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(c|0);A=u;C=v;k[h>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(d);Ava(g);vva(f);Qb(C|0)}e=Rb()|0;A=Q;C=e;k[h>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(d);Ava(g);vva(f);Qb(C|0)}while(0);m=o;n=q;vva(f);Qb(n|0)}function gp(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0.0,n=0.0,o=0.0,q=0.0;h=r;r=r+48|0;i=h+32|0;j=h+8|0;l=h;if((c|0)==2){Xo(0,j,d,e,f,g);m=+p[j>>3];n=+p[j+8>>3];o=+p[j+16>>3];q=m*n+(m*m+n*n+o*o)}else{hp(0,l,d,e,f);o=+p[l>>3];q=o*o*.5}o=+aa(+q);l=k[a+28>>2]|0;Xc[k[(k[l>>2]|0)+88>>2]&63](l,i,o);p[b>>3]=+p[i>>3];r=h;return}function hp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;a=r;r=r+224|0;f=a+200|0;g=a;h=a+64|0;i=a+48|0;j=a+36|0;l=a+24|0;if(e){rd[k[(k[e>>2]|0)+60>>2]&511](e,g,c,d);p[b>>3]=+p[g>>3];r=a;return}a=h+56|0;g=h+4|0;k[h>>2]=27524;k[a>>2]=27544;B=0;wa(508,h+56|0,g|0);b=B;B=0;if(b&1){b=Rb()|0;m=Q;n=b;vva(a);Qb(n|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);b=B;B=0;do if(b&1){d=Rb()|0;o=Q;q=d}else{k[g>>2]=27560;d=h+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,g|0,f|0);c=B;B=0;if(c&1){c=Rb()|0;e=Q;Yua(f);Yua(d);Ava(g);o=e;q=c;break}Yua(f);B=0;c=Ia(40,h|0,69495,59)|0;e=B;B=0;if(((!(e&1)?(B=0,e=Xa(245,c|0,0)|0,c=B,B=0,!(c&1)):0)?(B=0,c=Ia(40,e|0,149177,1)|0,e=B,B=0,!(e&1)):0)?(B=0,Xa(239,c|0,0)|0,c=B,B=0,!(c&1)):0){c=Ab(20)|0;B=0;eb(502,i|0,69562,75);e=B;B=0;do if(!(e&1)){B=0;eb(502,j|0,69879,15);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(i);u=t;v=s;break}B=0;wa(510,l|0,g|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,c|0,i|0,j|0,2652,l|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,c|0,1240,229);B=0;z=0}s=Rb()|0;t=Q;Yua(l);w=t;x=s;y=z}Yua(j);Yua(i);if(y){u=w;v=x}else{A=w;C=x;k[h>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(d);Ava(g);vva(a);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(c|0);A=u;C=v;k[h>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(d);Ava(g);vva(a);Qb(C|0)}e=Rb()|0;A=Q;C=e;k[h>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(d);Ava(g);vva(a);Qb(C|0)}while(0);m=o;n=q;vva(a);Qb(n|0)}function ip(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0.0,n=0.0,o=0.0,q=0.0;h=r;r=r+48|0;i=h+32|0;j=h+8|0;l=h;if((c|0)==2){Xo(0,j,d,e,f,g);m=+p[j>>3];n=+p[j+8>>3];o=+p[j+16>>3];q=m*n+(m*m+n*n+o*o)}else{hp(0,l,d,e,f);o=+p[l>>3];q=o*o*.5}o=+aa(+q);l=k[a+28>>2]|0;Xc[k[(k[l>>2]|0)+92>>2]&63](l,i,o);p[b>>3]=+p[i>>3];r=h;return}function jp(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0.0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0;b=r;r=r+608|0;c=b+592|0;d=b+64|0;e=b+56|0;f=b+48|0;g=b+40|0;h=b+32|0;i=b+24|0;j=b+16|0;l=b+8|0;m=b;n=b+432|0;o=b+580|0;q=b+568|0;s=b+280|0;t=b+296|0;u=b+132|0;v=b+120|0;w=b+108|0;x=b+144|0;y=b+96|0;z=b+84|0;A=b+72|0;if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){r=b;return}C=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;D=C*12|0;E=D>>>0>536870911?-1:D<<3;D=Rqa(E)|0;F=Rqa(E)|0;G=Rqa(E)|0;H=Rqa(E)|0;I=Rqa(E)|0;E=Rqa(C>>>0>536870911?-1:C<<3)|0;J=a+36|0;dO(k[J>>2]|0,j,767);dO(k[J>>2]|0,l,67);dO(k[J>>2]|0,m,355);K=+p[l>>3];L=K*+_(+(+p[j>>3]/K));M=a+16|0;N=oC(k[M>>2]|0,446)|0;O=oC(k[M>>2]|0,447)|0;P=oC(k[M>>2]|0,444)|0;R=Hc[k[(k[a>>2]|0)+304>>2]&511](a)|0;S=(C|0)>0;if(S){T=0;do{K=+(T|0)/12.0;U=0;do{Fc[k[(k[R>>2]|0)+28>>2]&1023](R,U);V=(U*12|0)+T|0;md[k[(k[N>>2]|0)+52>>2]&31](N,G+(V<<3)|0,R,K*+p[l>>3]);md[k[(k[O>>2]|0)+52>>2]&31](O,H+(V<<3)|0,R,K*+p[l>>3]);W=I+(V<<3)|0;md[k[(k[P>>2]|0)+52>>2]&31](P,W,R,K*+p[l>>3]);p[W>>3]=+p[W>>3]*+p[l>>3];U=U+1|0}while((U|0)!=(C|0));T=T+1|0}while((T|0)!=12)}eO(k[J>>2]|0,d,439,+p[m>>3]);eO(k[J>>2]|0,e,439,+p[m>>3]-+p[l>>3]*21.0e3);eO(k[J>>2]|0,f,439,+p[j>>3]);eO(k[J>>2]|0,g,440,+p[m>>3]);eO(k[J>>2]|0,h,440,+p[m>>3]-+p[l>>3]*21.0e3);eO(k[J>>2]|0,i,440,+p[j>>3]);if(S){j=0;do{m=j*12|0;XY(+p[g>>3],+p[h>>3],+p[i>>3],+p[d>>3],+p[e>>3],+p[f>>3],I+(m<<3)|0,H+(m<<3)|0,G+(m<<3)|0,D+(m<<3)|0,F+(m<<3)|0);j=j+1|0}while((j|0)!=(C|0))}j=Qqa(24)|0;B=0;wa(514,j|0,460);f=B;B=0;if(f&1){f=Rb()|0;e=Q;Sqa(j);X=e;Y=f;Qb(Y|0)}f=Qqa(24)|0;B=0;wa(514,f|0,448);e=B;B=0;if(e&1){e=Rb()|0;d=Q;Sqa(f);X=d;Y=e;Qb(Y|0)}e=0;a:while(1){if(S){d=0;do{p[E+(d<<3)>>3]=+p[D+((d*12|0)+e<<3)>>3];d=d+1|0}while((d|0)!=(C|0))}switch(Hc[k[(k[a>>2]|0)+20>>2]&511](a)|0){case 621:{d=Qqa(16)|0;B=0;ib(284,d|0,460,E|0,738);i=B;B=0;if(i&1){Z=d;$=21;break a}fm(j,d,L+ +(e|0)/12.0*+p[l>>3]);break}case 625:{d=Qqa(16)|0;B=0;ib(285,d|0,460,E|0,738);i=B;B=0;if(i&1){aa=d;$=24;break a}fm(j,d,L+ +(e|0)/12.0*+p[l>>3]);break}case 623:{d=Qqa(16)|0;B=0;ib(286,d|0,460,E|0,738);i=B;B=0;if(i&1){ba=d;$=27;break a}fm(j,d,L+ +(e|0)/12.0*+p[l>>3]);break}default:{$=28;break a}}if(S){K=+p[l>>3];d=0;do{p[E+(d<<3)>>3]=+p[F+((d*12|0)+e<<3)>>3]/K;d=d+1|0}while((d|0)!=(C|0))}switch(Hc[k[(k[a>>2]|0)+20>>2]&511](a)|0){case 621:{d=Qqa(16)|0;B=0;ib(284,d|0,448,E|0,738);i=B;B=0;if(i&1){ca=d;$=55;break a}fm(f,d,L+ +(e|0)/12.0*+p[l>>3]);break}case 625:{d=Qqa(16)|0;B=0;ib(285,d|0,448,E|0,738);i=B;B=0;if(i&1){da=d;$=58;break a}fm(f,d,L+ +(e|0)/12.0*+p[l>>3]);break}case 623:{d=Qqa(16)|0;B=0;ib(286,d|0,448,E|0,738);i=B;B=0;if(i&1){ea=d;$=61;break a}fm(f,d,L+ +(e|0)/12.0*+p[l>>3]);break}default:{$=62;break a}}e=e+1|0;if((e|0)>=12){$=12;break}}if(($|0)==12){Fc[k[(k[j>>2]|0)+84>>2]&1023](j,k[J>>2]|0);Fc[k[(k[f>>2]|0)+84>>2]&1023](f,k[J>>2]|0);mC(k[M>>2]|0,j)|0;mC(k[M>>2]|0,f)|0;switch(Hc[k[(k[a>>2]|0)+20>>2]&511](a)|0){case 621:break;case 623:case 625:{nd[k[(k[a>>2]|0)+220>>2]&1023](a,460,-1);nd[k[(k[a>>2]|0)+220>>2]&1023](a,448,-1);break}default:{a=x+56|0;f=x+4|0;k[x>>2]=27524;k[a>>2]=27544;B=0;wa(508,x+56|0,f|0);M=B;B=0;if(M&1){M=Rb()|0;fa=Q;ga=M;vva(a);Qb(ga|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[a>>2]=27488;B=0;va(448,f|0);M=B;B=0;do if(M&1){j=Rb()|0;ha=Q;ia=j}else{k[f>>2]=27560;j=x+36|0;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;k[j+12>>2]=0;k[x+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,f|0,c|0);J=B;B=0;if(J&1){J=Rb()|0;e=Q;Yua(c);Yua(j);Ava(f);ha=e;ia=J;break}Yua(c);B=0;J=Ia(40,x|0,144350,19)|0;e=B;B=0;b:do if(!(e&1)?(B=0,Xa(239,J|0,0)|0,l=B,B=0,!(l&1)):0){l=Ab(20)|0;B=0;eb(502,y|0,69562,75);C=B;B=0;do if(!(C&1)){B=0;eb(502,z|0,69895,24);S=B;B=0;if(S&1){S=Rb()|0;d=Q;Yua(y);ja=S;ka=d;break}B=0;wa(510,A|0,f|0);d=B;B=0;if(d&1){d=Rb()|0;la=1;ma=Q;na=d}else{B=0;ua(163,l|0,y|0,z|0,669,A|0);d=B;B=0;if(d&1)oa=1;else{B=0;eb(503,l|0,1240,229);B=0;oa=0}d=Rb()|0;S=Q;Yua(A);la=oa;ma=S;na=d}Yua(z);Yua(y);if(la){ja=na;ka=ma}else{pa=ma;qa=na;break b}}else{d=Rb()|0;ja=d;ka=Q}while(0);zb(l|0);pa=ka;qa=ja}else $=102;while(0);if(($|0)==102){J=Rb()|0;pa=Q;qa=J}k[x>>2]=27468;k[a>>2]=27488;k[f>>2]=27560;Yua(j);Ava(f);vva(a);X=pa;Y=qa;Qb(Y|0)}while(0);fa=ha;ga=ia;vva(a);Qb(ga|0)}}if(R)Ec[k[(k[R>>2]|0)+4>>2]&1023](R);Tqa(D);Tqa(F);Tqa(G);Tqa(H);Tqa(I);Tqa(E);r=b;return}else if(($|0)==21){b=Rb()|0;E=Q;Sqa(Z);X=E;Y=b;Qb(Y|0)}else if(($|0)==24){b=Rb()|0;E=Q;Sqa(aa);X=E;Y=b;Qb(Y|0)}else if(($|0)==27){b=Rb()|0;E=Q;Sqa(ba);X=E;Y=b;Qb(Y|0)}else if(($|0)==28){b=n+56|0;E=n+4|0;k[n>>2]=27524;k[b>>2]=27544;B=0;wa(508,n+56|0,E|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ra=Q;sa=ba;vva(b);Qb(sa|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[b>>2]=27488;B=0;va(448,E|0);ba=B;B=0;do if(ba&1){aa=Rb()|0;ta=Q;xa=aa}else{k[E>>2]=27560;aa=n+36|0;k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;k[aa+12>>2]=0;k[n+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,E|0,c|0);Z=B;B=0;if(Z&1){Z=Rb()|0;I=Q;Yua(c);Yua(aa);Ava(E);ta=I;xa=Z;break}Yua(c);B=0;Z=Ia(40,n|0,144350,19)|0;I=B;B=0;c:do if(!(I&1)?(B=0,Xa(239,Z|0,0)|0,H=B,B=0,!(H&1)):0){H=Ab(20)|0;B=0;eb(502,o|0,69562,75);G=B;B=0;do if(!(G&1)){B=0;eb(502,q|0,69895,24);F=B;B=0;if(F&1){F=Rb()|0;D=Q;Yua(o);ya=D;za=F;break}B=0;wa(510,s|0,E|0);F=B;B=0;if(F&1){F=Rb()|0;Aa=F;Ba=Q;Ca=1}else{B=0;ua(163,H|0,o|0,q|0,646,s|0);F=B;B=0;if(F&1)Da=1;else{B=0;eb(503,H|0,1240,229);B=0;Da=0}F=Rb()|0;D=Q;Yua(s);Aa=F;Ba=D;Ca=Da}Yua(q);Yua(o);if(Ca){ya=Ba;za=Aa}else{Ea=Ba;Fa=Aa;break c}}else{D=Rb()|0;ya=Q;za=D}while(0);zb(H|0);Ea=ya;Fa=za}else $=43;while(0);if(($|0)==43){Z=Rb()|0;Ea=Q;Fa=Z}k[n>>2]=27468;k[b>>2]=27488;k[E>>2]=27560;Yua(aa);Ava(E);vva(b);X=Ea;Y=Fa;Qb(Y|0)}while(0);ra=ta;sa=xa;vva(b);Qb(sa|0)}else if(($|0)==55){sa=Rb()|0;b=Q;Sqa(ca);X=b;Y=sa;Qb(Y|0)}else if(($|0)==58){sa=Rb()|0;b=Q;Sqa(da);X=b;Y=sa;Qb(Y|0)}else if(($|0)==61){sa=Rb()|0;b=Q;Sqa(ea);X=b;Y=sa;Qb(Y|0)}else if(($|0)==62){sa=t+56|0;b=t+4|0;k[t>>2]=27524;k[sa>>2]=27544;B=0;wa(508,t+56|0,b|0);ea=B;B=0;if(ea&1){ea=Rb()|0;Ga=Q;Ha=ea;vva(sa);Qb(Ha|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[sa>>2]=27488;B=0;va(448,b|0);ea=B;B=0;do if(ea&1){da=Rb()|0;Ja=Q;Ka=da}else{k[b>>2]=27560;da=t+36|0;k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;k[da+12>>2]=0;k[t+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);ca=B;B=0;if(ca&1){ca=Rb()|0;xa=Q;Yua(c);Yua(da);Ava(b);Ja=xa;Ka=ca;break}Yua(c);B=0;ca=Ia(40,t|0,144350,19)|0;xa=B;B=0;d:do if(!(xa&1)?(B=0,Xa(239,ca|0,0)|0,ta=B,B=0,!(ta&1)):0){ta=Ab(20)|0;B=0;eb(502,u|0,69562,75);ra=B;B=0;do if(!(ra&1)){B=0;eb(502,v|0,69895,24);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ea=Q;Yua(u);La=Fa;Ma=Ea;break}B=0;wa(510,w|0,b|0);Ea=B;B=0;if(Ea&1){Ea=Rb()|0;Na=1;Oa=Q;Pa=Ea}else{B=0;ua(163,ta|0,u|0,v|0,653,w|0);Ea=B;B=0;if(Ea&1)Qa=1;else{B=0;eb(503,ta|0,1240,229);B=0;Qa=0}Ea=Rb()|0;Fa=Q;Yua(w);Na=Qa;Oa=Fa;Pa=Ea}Yua(v);Yua(u);if(Na){La=Pa;Ma=Oa}else{Ra=Oa;Sa=Pa;break d}}else{Ea=Rb()|0;La=Ea;Ma=Q}while(0);zb(ta|0);Ra=Ma;Sa=La}else $=77;while(0);if(($|0)==77){ca=Rb()|0;Ra=Q;Sa=ca}k[t>>2]=27468;k[sa>>2]=27488;k[b>>2]=27560;Yua(da);Ava(b);vva(sa);X=Ra;Y=Sa;Qb(Y|0)}while(0);Ga=Ja;Ha=Ka;vva(sa);Qb(Ha|0)}}function kp(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0.0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0;b=r;r=r+576|0;c=b+556|0;d=b+24|0;e=b+16|0;f=b+8|0;g=b;h=b+408|0;i=b+544|0;j=b+392|0;l=b+240|0;m=b+256|0;n=b+92|0;o=b+80|0;q=b+68|0;s=b+104|0;t=b+56|0;u=b+44|0;v=b+32|0;if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){r=b;return}w=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;x=w*12|0;y=x>>>0>536870911?-1:x<<3;x=Rqa(y)|0;z=Rqa(y)|0;A=Rqa(y)|0;C=Rqa(y)|0;D=Rqa(y)|0;E=Rqa(y)|0;y=Rqa(w>>>0>536870911?-1:w<<3)|0;F=a+36|0;dO(k[F>>2]|0,f,767);dO(k[F>>2]|0,g,67);G=+p[g>>3];H=G*+_(+(+p[f>>3]/G));I=a+16|0;J=oC(k[I>>2]|0,446)|0;K=oC(k[I>>2]|0,447)|0;L=oC(k[I>>2]|0,444)|0;M=oC(k[I>>2]|0,445)|0;N=Hc[k[(k[a>>2]|0)+304>>2]&511](a)|0;O=(w|0)>0;if(O){P=0;do{G=+(P|0)/12.0;R=0;do{Fc[k[(k[N>>2]|0)+28>>2]&1023](N,R);S=(R*12|0)+P|0;md[k[(k[J>>2]|0)+52>>2]&31](J,A+(S<<3)|0,N,G*+p[g>>3]);md[k[(k[K>>2]|0)+52>>2]&31](K,C+(S<<3)|0,N,G*+p[g>>3]);T=D+(S<<3)|0;md[k[(k[L>>2]|0)+52>>2]&31](L,T,N,G*+p[g>>3]);U=E+(S<<3)|0;md[k[(k[M>>2]|0)+52>>2]&31](M,U,N,G*+p[g>>3]);V=+p[g>>3];p[T>>3]=+p[T>>3]*V;p[U>>3]=V*+p[U>>3];R=R+1|0}while((R|0)!=(w|0));P=P+1|0}while((P|0)!=12);eO(k[F>>2]|0,d,455,+p[f>>3]);eO(k[F>>2]|0,e,454,+p[f>>3]);if(O){P=0;do{M=P*12|0;YY(+p[d>>3],+p[e>>3],E+(M<<3)|0,D+(M<<3)|0,C+(M<<3)|0,A+(M<<3)|0,x+(M<<3)|0,z+(M<<3)|0);P=P+1|0}while((P|0)!=(w|0))}}else{eO(k[F>>2]|0,d,455,+p[f>>3]);eO(k[F>>2]|0,e,454,+p[f>>3])}f=Qqa(24)|0;B=0;wa(514,f|0,460);e=B;B=0;if(e&1){e=Rb()|0;d=Q;Sqa(f);W=d;X=e;Qb(X|0)}e=Qqa(24)|0;B=0;wa(514,e|0,448);d=B;B=0;if(d&1){d=Rb()|0;P=Q;Sqa(e);W=P;X=d;Qb(X|0)}d=0;a:while(1){if(O){P=0;do{p[y+(P<<3)>>3]=+p[x+((P*12|0)+d<<3)>>3];P=P+1|0}while((P|0)!=(w|0))}switch(Hc[k[(k[a>>2]|0)+20>>2]&511](a)|0){case 621:{P=Qqa(16)|0;B=0;ib(284,P|0,460,y|0,738);M=B;B=0;if(M&1){Y=P;Z=22;break a}fm(f,P,H+ +(d|0)/12.0*+p[g>>3]);break}case 625:{P=Qqa(16)|0;B=0;ib(285,P|0,460,y|0,738);M=B;B=0;if(M&1){$=P;Z=25;break a}fm(f,P,H+ +(d|0)/12.0*+p[g>>3]);break}case 623:{P=Qqa(16)|0;B=0;ib(286,P|0,460,y|0,738);M=B;B=0;if(M&1){aa=P;Z=28;break a}fm(f,P,H+ +(d|0)/12.0*+p[g>>3]);break}default:{Z=29;break a}}if(O){G=+p[g>>3];P=0;do{p[y+(P<<3)>>3]=+p[z+((P*12|0)+d<<3)>>3]/G;P=P+1|0}while((P|0)!=(w|0))}switch(Hc[k[(k[a>>2]|0)+20>>2]&511](a)|0){case 621:{P=Qqa(16)|0;B=0;ib(284,P|0,448,y|0,738);M=B;B=0;if(M&1){ba=P;Z=56;break a}fm(e,P,H+ +(d|0)/12.0*+p[g>>3]);break}case 625:{P=Qqa(16)|0;B=0;ib(285,P|0,448,y|0,738);M=B;B=0;if(M&1){ca=P;Z=59;break a}fm(e,P,H+ +(d|0)/12.0*+p[g>>3]);break}case 623:{P=Qqa(16)|0;B=0;ib(286,P|0,448,y|0,738);M=B;B=0;if(M&1){da=P;Z=62;break a}fm(e,P,H+ +(d|0)/12.0*+p[g>>3]);break}default:{Z=63;break a}}d=d+1|0;if((d|0)>=12){Z=13;break}}if((Z|0)==13){Fc[k[(k[f>>2]|0)+84>>2]&1023](f,k[F>>2]|0);Fc[k[(k[e>>2]|0)+84>>2]&1023](e,k[F>>2]|0);mC(k[I>>2]|0,f)|0;mC(k[I>>2]|0,e)|0;switch(Hc[k[(k[a>>2]|0)+20>>2]&511](a)|0){case 621:break;case 623:case 625:{nd[k[(k[a>>2]|0)+220>>2]&1023](a,460,-1);nd[k[(k[a>>2]|0)+220>>2]&1023](a,448,-1);break}default:{a=s+56|0;e=s+4|0;k[s>>2]=27524;k[a>>2]=27544;B=0;wa(508,s+56|0,e|0);I=B;B=0;if(I&1){I=Rb()|0;ea=Q;fa=I;vva(a);Qb(fa|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[a>>2]=27488;B=0;va(448,e|0);I=B;B=0;do if(I&1){f=Rb()|0;ga=Q;ha=f}else{k[e>>2]=27560;f=s+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[s+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,e|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;d=Q;Yua(c);Yua(f);Ava(e);ga=d;ha=F;break}Yua(c);B=0;F=Ia(40,s|0,144350,19)|0;d=B;B=0;b:do if(!(d&1)?(B=0,Xa(239,F|0,0)|0,g=B,B=0,!(g&1)):0){g=Ab(20)|0;B=0;eb(502,t|0,69562,75);w=B;B=0;do if(!(w&1)){B=0;eb(502,u|0,69920,24);O=B;B=0;if(O&1){O=Rb()|0;P=Q;Yua(t);ia=O;ja=P;break}B=0;wa(510,v|0,e|0);P=B;B=0;if(P&1){P=Rb()|0;ka=1;la=Q;ma=P}else{B=0;ua(163,g|0,t|0,u|0,767,v|0);P=B;B=0;if(P&1)na=1;else{B=0;eb(503,g|0,1240,229);B=0;na=0}P=Rb()|0;O=Q;Yua(v);ka=na;la=O;ma=P}Yua(u);Yua(t);if(ka){ia=ma;ja=la}else{oa=la;pa=ma;break b}}else{P=Rb()|0;ia=P;ja=Q}while(0);zb(g|0);oa=ja;pa=ia}else Z=103;while(0);if((Z|0)==103){F=Rb()|0;oa=Q;pa=F}k[s>>2]=27468;k[a>>2]=27488;k[e>>2]=27560;Yua(f);Ava(e);vva(a);W=oa;X=pa;Qb(X|0)}while(0);ea=ga;fa=ha;vva(a);Qb(fa|0)}}if(N)Ec[k[(k[N>>2]|0)+4>>2]&1023](N);Tqa(x);Tqa(z);Tqa(A);Tqa(C);Tqa(D);Tqa(E);Tqa(y);r=b;return}else if((Z|0)==22){b=Rb()|0;y=Q;Sqa(Y);W=y;X=b;Qb(X|0)}else if((Z|0)==25){b=Rb()|0;y=Q;Sqa($);W=y;X=b;Qb(X|0)}else if((Z|0)==28){b=Rb()|0;y=Q;Sqa(aa);W=y;X=b;Qb(X|0)}else if((Z|0)==29){b=h+56|0;y=h+4|0;k[h>>2]=27524;k[b>>2]=27544;B=0;wa(508,h+56|0,y|0);aa=B;B=0;if(aa&1){aa=Rb()|0;qa=Q;ra=aa;vva(b);Qb(ra|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[b>>2]=27488;B=0;va(448,y|0);aa=B;B=0;do if(aa&1){$=Rb()|0;sa=Q;ta=$}else{k[y>>2]=27560;$=h+36|0;k[$>>2]=0;k[$+4>>2]=0;k[$+8>>2]=0;k[$+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,y|0,c|0);Y=B;B=0;if(Y&1){Y=Rb()|0;E=Q;Yua(c);Yua($);Ava(y);sa=E;ta=Y;break}Yua(c);B=0;Y=Ia(40,h|0,144350,19)|0;E=B;B=0;c:do if(!(E&1)?(B=0,Xa(239,Y|0,0)|0,D=B,B=0,!(D&1)):0){D=Ab(20)|0;B=0;eb(502,i|0,69562,75);C=B;B=0;do if(!(C&1)){B=0;eb(502,j|0,69920,24);A=B;B=0;if(A&1){A=Rb()|0;z=Q;Yua(i);xa=z;ya=A;break}B=0;wa(510,l|0,y|0);A=B;B=0;if(A&1){A=Rb()|0;za=A;Aa=Q;Ba=1}else{B=0;ua(163,D|0,i|0,j|0,744,l|0);A=B;B=0;if(A&1)Ca=1;else{B=0;eb(503,D|0,1240,229);B=0;Ca=0}A=Rb()|0;z=Q;Yua(l);za=A;Aa=z;Ba=Ca}Yua(j);Yua(i);if(Ba){xa=Aa;ya=za}else{Da=Aa;Ea=za;break c}}else{z=Rb()|0;xa=Q;ya=z}while(0);zb(D|0);Da=xa;Ea=ya}else Z=44;while(0);if((Z|0)==44){Y=Rb()|0;Da=Q;Ea=Y}k[h>>2]=27468;k[b>>2]=27488;k[y>>2]=27560;Yua($);Ava(y);vva(b);W=Da;X=Ea;Qb(X|0)}while(0);qa=sa;ra=ta;vva(b);Qb(ra|0)}else if((Z|0)==56){ra=Rb()|0;b=Q;Sqa(ba);W=b;X=ra;Qb(X|0)}else if((Z|0)==59){ra=Rb()|0;b=Q;Sqa(ca);W=b;X=ra;Qb(X|0)}else if((Z|0)==62){ra=Rb()|0;b=Q;Sqa(da);W=b;X=ra;Qb(X|0)}else if((Z|0)==63){ra=m+56|0;b=m+4|0;k[m>>2]=27524;k[ra>>2]=27544;B=0;wa(508,m+56|0,b|0);da=B;B=0;if(da&1){da=Rb()|0;Fa=Q;Ga=da;vva(ra);Qb(Ga|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[ra>>2]=27488;B=0;va(448,b|0);da=B;B=0;do if(da&1){ca=Rb()|0;Ha=Q;Ja=ca}else{k[b>>2]=27560;ca=m+36|0;k[ca>>2]=0;k[ca+4>>2]=0;k[ca+8>>2]=0;k[ca+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ta=Q;Yua(c);Yua(ca);Ava(b);Ha=ta;Ja=ba;break}Yua(c);B=0;ba=Ia(40,m|0,144350,19)|0;ta=B;B=0;d:do if(!(ta&1)?(B=0,Xa(239,ba|0,0)|0,sa=B,B=0,!(sa&1)):0){sa=Ab(20)|0;B=0;eb(502,n|0,69562,75);qa=B;B=0;do if(!(qa&1)){B=0;eb(502,o|0,69920,24);Ea=B;B=0;if(Ea&1){Ea=Rb()|0;Da=Q;Yua(n);Ka=Ea;La=Da;break}B=0;wa(510,q|0,b|0);Da=B;B=0;if(Da&1){Da=Rb()|0;Ma=1;Na=Q;Oa=Da}else{B=0;ua(163,sa|0,n|0,o|0,751,q|0);Da=B;B=0;if(Da&1)Pa=1;else{B=0;eb(503,sa|0,1240,229);B=0;Pa=0}Da=Rb()|0;Ea=Q;Yua(q);Ma=Pa;Na=Ea;Oa=Da}Yua(o);Yua(n);if(Ma){Ka=Oa;La=Na}else{Qa=Na;Ra=Oa;break d}}else{Da=Rb()|0;Ka=Da;La=Q}while(0);zb(sa|0);Qa=La;Ra=Ka}else Z=78;while(0);if((Z|0)==78){ba=Rb()|0;Qa=Q;Ra=ba}k[m>>2]=27468;k[ra>>2]=27488;k[b>>2]=27560;Yua(ca);Ava(b);vva(ra);W=Qa;X=Ra;Qb(X|0)}while(0);Fa=Ha;Ga=Ja;vva(ra);Qb(Ga|0)}}function lp(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0.0,E=0.0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0;b=r;r=r+560|0;c=b+540|0;d=b+16|0;e=b+8|0;f=b;g=b+392|0;h=b+528|0;i=b+380|0;j=b+368|0;l=b+232|0;m=b+84|0;n=b+72|0;o=b+60|0;q=b+96|0;s=b+48|0;t=b+36|0;u=b+24|0;if(!(Hc[k[(k[a>>2]|0)+248>>2]&511](a)|0)){r=b;return}v=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;w=v*12|0;x=w>>>0>536870911?-1:w<<3;w=Rqa(x)|0;y=Rqa(x)|0;z=Rqa(x)|0;A=Rqa(x)|0;x=Rqa(v>>>0>536870911?-1:v<<3)|0;C=a+36|0;dO(k[C>>2]|0,e,767);dO(k[C>>2]|0,f,67);D=+p[f>>3];E=D*+_(+(+p[e>>3]/D));D=+WJ(k[a+32>>2]|0,458);F=a+16|0;G=oC(k[F>>2]|0,446)|0;H=oC(k[F>>2]|0,444)|0;I=Hc[k[(k[a>>2]|0)+304>>2]&511](a)|0;J=(v|0)>0;if(J){K=0;do{L=+(K|0)/12.0;M=0;do{Fc[k[(k[I>>2]|0)+28>>2]&1023](I,M);N=(M*12|0)+K|0;md[k[(k[G>>2]|0)+52>>2]&31](G,z+(N<<3)|0,I,L*+p[f>>3]);O=A+(N<<3)|0;md[k[(k[H>>2]|0)+52>>2]&31](H,O,I,L*+p[f>>3]);p[O>>3]=+p[O>>3]*+p[f>>3];M=M+1|0}while((M|0)!=(v|0));K=K+1|0}while((K|0)!=12);eO(k[C>>2]|0,d,439,+p[e>>3]);if(J){K=0;do{H=K*12|0;ZY(+p[d>>3],D,A+(H<<3)|0,z+(H<<3)|0,w+(H<<3)|0,y+(H<<3)|0);K=K+1|0}while((K|0)!=(v|0))}}else eO(k[C>>2]|0,d,439,+p[e>>3]);e=Qqa(24)|0;B=0;wa(514,e|0,460);d=B;B=0;if(d&1){d=Rb()|0;K=Q;Sqa(e);P=K;R=d;Qb(R|0)}d=Qqa(24)|0;B=0;wa(514,d|0,448);K=B;B=0;if(K&1){K=Rb()|0;H=Q;Sqa(d);P=H;R=K;Qb(R|0)}K=0;a:while(1){if(J){H=0;do{p[x+(H<<3)>>3]=+p[w+((H*12|0)+K<<3)>>3];H=H+1|0}while((H|0)!=(v|0))}switch(Hc[k[(k[a>>2]|0)+20>>2]&511](a)|0){case 621:{H=Qqa(16)|0;B=0;ib(284,H|0,460,x|0,738);G=B;B=0;if(G&1){S=H;T=22;break a}fm(e,H,E+ +(K|0)/12.0*+p[f>>3]);break}case 625:{H=Qqa(16)|0;B=0;ib(285,H|0,460,x|0,738);G=B;B=0;if(G&1){U=H;T=25;break a}fm(e,H,E+ +(K|0)/12.0*+p[f>>3]);break}case 623:{H=Qqa(16)|0;B=0;ib(286,H|0,460,x|0,738);G=B;B=0;if(G&1){V=H;T=28;break a}fm(e,H,E+ +(K|0)/12.0*+p[f>>3]);break}default:{T=29;break a}}if(J){D=+p[f>>3];H=0;do{p[x+(H<<3)>>3]=+p[y+((H*12|0)+K<<3)>>3]/D;H=H+1|0}while((H|0)!=(v|0))}switch(Hc[k[(k[a>>2]|0)+20>>2]&511](a)|0){case 621:{H=Qqa(16)|0;B=0;ib(284,H|0,448,x|0,738);G=B;B=0;if(G&1){W=H;T=56;break a}fm(d,H,E+ +(K|0)/12.0*+p[f>>3]);break}case 625:{H=Qqa(16)|0;B=0;ib(285,H|0,448,x|0,738);G=B;B=0;if(G&1){X=H;T=59;break a}fm(d,H,E+ +(K|0)/12.0*+p[f>>3]);break}case 623:{H=Qqa(16)|0;B=0;ib(286,H|0,448,x|0,738);G=B;B=0;if(G&1){Y=H;T=62;break a}fm(d,H,E+ +(K|0)/12.0*+p[f>>3]);break}default:{T=63;break a}}K=K+1|0;if((K|0)>=12){T=13;break}}if((T|0)==13){Fc[k[(k[e>>2]|0)+84>>2]&1023](e,k[C>>2]|0);Fc[k[(k[d>>2]|0)+84>>2]&1023](d,k[C>>2]|0);mC(k[F>>2]|0,e)|0;mC(k[F>>2]|0,d)|0;switch(Hc[k[(k[a>>2]|0)+20>>2]&511](a)|0){case 621:break;case 623:case 625:{nd[k[(k[a>>2]|0)+220>>2]&1023](a,460,-1);nd[k[(k[a>>2]|0)+220>>2]&1023](a,448,-1);break}default:{a=q+56|0;d=q+4|0;k[q>>2]=27524;k[a>>2]=27544;B=0;wa(508,q+56|0,d|0);F=B;B=0;if(F&1){F=Rb()|0;Z=Q;$=F;vva(a);Qb($|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[a>>2]=27488;B=0;va(448,d|0);F=B;B=0;do if(F&1){e=Rb()|0;aa=Q;ba=e}else{k[d>>2]=27560;e=q+36|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,d|0,c|0);C=B;B=0;if(C&1){C=Rb()|0;K=Q;Yua(c);Yua(e);Ava(d);aa=K;ba=C;break}Yua(c);B=0;C=Ia(40,q|0,144350,19)|0;K=B;B=0;b:do if(!(K&1)?(B=0,Xa(239,C|0,0)|0,f=B,B=0,!(f&1)):0){f=Ab(20)|0;B=0;eb(502,s|0,69562,75);v=B;B=0;do if(!(v&1)){B=0;eb(502,t|0,69945,26);J=B;B=0;if(J&1){J=Rb()|0;H=Q;Yua(s);ca=J;da=H;break}B=0;wa(510,u|0,d|0);H=B;B=0;if(H&1){H=Rb()|0;ea=1;fa=Q;ga=H}else{B=0;ua(163,f|0,s|0,t|0,861,u|0);H=B;B=0;if(H&1)ha=1;else{B=0;eb(503,f|0,1240,229);B=0;ha=0}H=Rb()|0;J=Q;Yua(u);ea=ha;fa=J;ga=H}Yua(t);Yua(s);if(ea){ca=ga;da=fa}else{ia=fa;ja=ga;break b}}else{H=Rb()|0;ca=H;da=Q}while(0);zb(f|0);ia=da;ja=ca}else T=103;while(0);if((T|0)==103){C=Rb()|0;ia=Q;ja=C}k[q>>2]=27468;k[a>>2]=27488;k[d>>2]=27560;Yua(e);Ava(d);vva(a);P=ia;R=ja;Qb(R|0)}while(0);Z=aa;$=ba;vva(a);Qb($|0)}}if(I)Ec[k[(k[I>>2]|0)+4>>2]&1023](I);Tqa(w);Tqa(y);Tqa(z);Tqa(A);Tqa(x);r=b;return}else if((T|0)==22){b=Rb()|0;x=Q;Sqa(S);P=x;R=b;Qb(R|0)}else if((T|0)==25){b=Rb()|0;x=Q;Sqa(U);P=x;R=b;Qb(R|0)}else if((T|0)==28){b=Rb()|0;x=Q;Sqa(V);P=x;R=b;Qb(R|0)}else if((T|0)==29){b=g+56|0;x=g+4|0;k[g>>2]=27524;k[b>>2]=27544;B=0;wa(508,g+56|0,x|0);V=B;B=0;if(V&1){V=Rb()|0;ka=Q;la=V;vva(b);Qb(la|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[b>>2]=27488;B=0;va(448,x|0);V=B;B=0;do if(V&1){U=Rb()|0;ma=Q;na=U}else{k[x>>2]=27560;U=g+36|0;k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;k[U+12>>2]=0;k[g+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,x|0,c|0);S=B;B=0;if(S&1){S=Rb()|0;A=Q;Yua(c);Yua(U);Ava(x);ma=A;na=S;break}Yua(c);B=0;S=Ia(40,g|0,144350,19)|0;A=B;B=0;c:do if(!(A&1)?(B=0,Xa(239,S|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,h|0,69562,75);y=B;B=0;do if(!(y&1)){B=0;eb(502,i|0,69945,26);w=B;B=0;if(w&1){w=Rb()|0;I=Q;Yua(h);oa=I;pa=w;break}B=0;wa(510,j|0,x|0);w=B;B=0;if(w&1){w=Rb()|0;qa=w;ra=Q;sa=1}else{B=0;ua(163,z|0,h|0,i|0,838,j|0);w=B;B=0;if(w&1)ta=1;else{B=0;eb(503,z|0,1240,229);B=0;ta=0}w=Rb()|0;I=Q;Yua(j);qa=w;ra=I;sa=ta}Yua(i);Yua(h);if(sa){oa=ra;pa=qa}else{xa=ra;ya=qa;break c}}else{I=Rb()|0;oa=Q;pa=I}while(0);zb(z|0);xa=oa;ya=pa}else T=44;while(0);if((T|0)==44){S=Rb()|0;xa=Q;ya=S}k[g>>2]=27468;k[b>>2]=27488;k[x>>2]=27560;Yua(U);Ava(x);vva(b);P=xa;R=ya;Qb(R|0)}while(0);ka=ma;la=na;vva(b);Qb(la|0)}else if((T|0)==56){la=Rb()|0;b=Q;Sqa(W);P=b;R=la;Qb(R|0)}else if((T|0)==59){la=Rb()|0;b=Q;Sqa(X);P=b;R=la;Qb(R|0)}else if((T|0)==62){la=Rb()|0;b=Q;Sqa(Y);P=b;R=la;Qb(R|0)}else if((T|0)==63){la=l+56|0;b=l+4|0;k[l>>2]=27524;k[la>>2]=27544;B=0;wa(508,l+56|0,b|0);Y=B;B=0;if(Y&1){Y=Rb()|0;za=Q;Aa=Y;vva(la);Qb(Aa|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[la>>2]=27488;B=0;va(448,b|0);Y=B;B=0;do if(Y&1){X=Rb()|0;Ba=Q;Ca=X}else{k[b>>2]=27560;X=l+36|0;k[X>>2]=0;k[X+4>>2]=0;k[X+8>>2]=0;k[X+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);W=B;B=0;if(W&1){W=Rb()|0;na=Q;Yua(c);Yua(X);Ava(b);Ba=na;Ca=W;break}Yua(c);B=0;W=Ia(40,l|0,144350,19)|0;na=B;B=0;d:do if(!(na&1)?(B=0,Xa(239,W|0,0)|0,ma=B,B=0,!(ma&1)):0){ma=Ab(20)|0;B=0;eb(502,m|0,69562,75);ka=B;B=0;do if(!(ka&1)){B=0;eb(502,n|0,69945,26);ya=B;B=0;if(ya&1){ya=Rb()|0;xa=Q;Yua(m);Da=ya;Ea=xa;break}B=0;wa(510,o|0,b|0);xa=B;B=0;if(xa&1){xa=Rb()|0;Fa=1;Ga=Q;Ha=xa}else{B=0;ua(163,ma|0,m|0,n|0,845,o|0);xa=B;B=0;if(xa&1)Ja=1;else{B=0;eb(503,ma|0,1240,229);B=0;Ja=0}xa=Rb()|0;ya=Q;Yua(o);Fa=Ja;Ga=ya;Ha=xa}Yua(n);Yua(m);if(Fa){Da=Ha;Ea=Ga}else{Ka=Ga;La=Ha;break d}}else{xa=Rb()|0;Da=xa;Ea=Q}while(0);zb(ma|0);Ka=Ea;La=Da}else T=78;while(0);if((T|0)==78){W=Rb()|0;Ka=Q;La=W}k[l>>2]=27468;k[la>>2]=27488;k[b>>2]=27560;Yua(X);Ava(b);vva(la);P=Ka;R=La;Qb(R|0)}while(0);za=Ba;Aa=Ca;vva(la);Qb(Aa|0)}}function mp(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0;b=r;r=r+1824|0;c=b+1804|0;d=b+1608|0;e=b+1792|0;f=b+1456|0;g=b+1780|0;h=b+1320|0;i=b+1768|0;j=b+1168|0;l=b+1756|0;m=b+1016|0;n=b+1744|0;o=b+880|0;p=b+1592|0;q=b+728|0;s=b+1304|0;t=b+592|0;u=b+1152|0;v=b+440|0;w=b+864|0;x=b+304|0;y=b+576|0;z=b+168|0;A=b+152|0;C=b+16|0;D=b;E=d+56|0;F=d+4|0;k[d>>2]=27524;k[E>>2]=27544;B=0;wa(508,d+56|0,F|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;I=G;vva(E);Qb(I|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[E>>2]=27488;B=0;va(448,F|0);G=B;B=0;do if(G&1){J=Rb()|0;K=Q;L=J}else{k[F>>2]=27560;J=d+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,F|0,c|0);M=B;B=0;if(M&1){M=Rb()|0;N=Q;Yua(c);Yua(J);Ava(F);K=N;L=M;break}Yua(c);B=0;M=ya(k[(k[a>>2]|0)+20>>2]|0,a|0)|0;N=B;B=0;do if((((!(N&1)?(B=0,O=ya(427,M|0)|0,P=B,B=0,!(P&1)):0)?(P=Lta(O)|0,B=0,R=Ia(40,d|0,O|0,P|0)|0,P=B,B=0,!(P&1)):0)?(B=0,Ia(40,R|0,69717,10)|0,R=B,B=0,!(R&1)):0)?(B=0,wa(510,e|0,F|0),R=B,B=0,!(R&1)):0){B=0;ya(424,e|0)|0;R=B;B=0;if(R&1){R=Rb()|0;P=Q;Yua(e);S=R;T=P;break}Yua(e);k[d>>2]=27468;k[E>>2]=27488;k[F>>2]=27560;Yua(J);Ava(F);vva(E);P=f+56|0;R=f+4|0;k[f>>2]=27524;k[P>>2]=27544;B=0;wa(508,f+56|0,R|0);O=B;B=0;if(O&1){O=Rb()|0;U=Q;V=O;vva(P);Qb(V|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[P>>2]=27488;B=0;va(448,R|0);O=B;B=0;do if(O&1){W=Rb()|0;X=Q;Y=W}else{k[R>>2]=27560;W=f+36|0;k[W>>2]=0;k[W+4>>2]=0;k[W+8>>2]=0;k[W+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,R|0,c|0);Z=B;B=0;if(Z&1){Z=Rb()|0;_=Q;Yua(c);Yua(W);Ava(R);X=_;Y=Z;break}Yua(c);B=0;Z=Ia(40,f|0,69728,8)|0;_=B;B=0;do if(((!(_&1)?(B=0,$=Xa(242,Z|0,k[a+8>>2]|0)|0,aa=B,B=0,!(aa&1)):0)?(B=0,Ia(40,$|0,149177,1)|0,$=B,B=0,!($&1)):0)?(B=0,wa(510,g|0,R|0),$=B,B=0,!($&1)):0){B=0;ya(424,g|0)|0;$=B;B=0;if($&1){$=Rb()|0;aa=Q;Yua(g);ba=$;ca=aa;break}Yua(g);k[f>>2]=27468;k[P>>2]=27488;k[R>>2]=27560;Yua(W);Ava(R);vva(P);aa=h+56|0;$=h+4|0;k[h>>2]=27524;k[aa>>2]=27544;B=0;wa(508,h+56|0,$|0);da=B;B=0;if(da&1){da=Rb()|0;ea=Q;fa=da;vva(aa);Qb(fa|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[aa>>2]=27488;B=0;va(448,$|0);da=B;B=0;do if(da&1){ga=Rb()|0;ha=Q;ia=ga}else{k[$>>2]=27560;ga=h+36|0;k[ga>>2]=0;k[ga+4>>2]=0;k[ga+8>>2]=0;k[ga+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,$|0,c|0);ja=B;B=0;if(ja&1){ja=Rb()|0;ka=Q;Yua(c);Yua(ga);Ava($);ha=ka;ia=ja;break}Yua(c);B=0;ja=Ia(40,h|0,79833,8)|0;ka=B;B=0;do if(ka&1)la=49;else{B=0;ma=Xa(242,ja|0,k[a+12>>2]|0)|0;na=B;B=0;if(na&1){la=49;break}B=0;Ia(40,ma|0,149177,1)|0;ma=B;B=0;if(ma&1){la=49;break}B=0;wa(510,i|0,$|0);ma=B;B=0;if(ma&1){la=49;break}B=0;ya(424,i|0)|0;ma=B;B=0;if(ma&1){ma=Rb()|0;na=Q;Yua(i);oa=ma;pa=na;break}Yua(i);k[h>>2]=27468;k[aa>>2]=27488;k[$>>2]=27560;Yua(ga);Ava($);vva(aa);na=a+24|0;a:do if(!(k[na>>2]|0)){ma=j+56|0;qa=j+4|0;k[j>>2]=27524;k[ma>>2]=27544;B=0;wa(508,j+56|0,qa|0);ra=B;B=0;if(ra&1){ra=Rb()|0;sa=Q;ta=ra;vva(ma);Qb(ta|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[ma>>2]=27488;B=0;va(448,qa|0);ra=B;B=0;do if(ra&1){ua=Rb()|0;xa=Q;za=ua}else{k[qa>>2]=27560;ua=j+36|0;k[ua>>2]=0;k[ua+4>>2]=0;k[ua+8>>2]=0;k[ua+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,qa|0,c|0);Aa=B;B=0;if(Aa&1){Aa=Rb()|0;Ba=Q;Yua(c);Yua(ua);Ava(qa);xa=Ba;za=Aa;break}Yua(c);B=0;Ia(40,j|0,69737,16)|0;Aa=B;B=0;do if(!(Aa&1)){B=0;wa(510,l|0,qa|0);Ba=B;B=0;if(Ba&1){la=65;break}B=0;ya(424,l|0)|0;Ba=B;B=0;if(Ba&1){Ba=Rb()|0;Ca=Q;Yua(l);Da=Ba;Ea=Ca;break}else{Yua(l);k[j>>2]=27468;k[ma>>2]=27488;k[qa>>2]=27560;Yua(ua);Ava(qa);vva(ma);break a}}else la=65;while(0);if((la|0)==65){Aa=Rb()|0;Da=Aa;Ea=Q}k[j>>2]=27468;k[ma>>2]=27488;k[qa>>2]=27560;Yua(ua);Ava(qa);vva(ma);Fa=Da;Ga=Ea;Qb(Fa|0)}while(0);sa=xa;ta=za;vva(ma);Qb(ta|0)}else{qa=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;if((qa|0)>0)Ha=0;else break;do{ra=k[(k[na>>2]|0)+(Ha<<2)>>2]|0;Ec[k[(k[ra>>2]|0)+8>>2]&1023](ra);Ha=Ha+1|0}while((Ha|0)!=(qa|0))}while(0);na=a+20|0;b:do if(k[na>>2]|0){qa=Hc[k[(k[a>>2]|0)+164>>2]&511](a)|0;if((qa|0)<=0)break;ma=m+56|0;ra=m+4|0;Aa=m+56|0;Ca=m+128|0;Ba=m+132|0;Ja=m+36|0;Ka=m+52|0;La=0;while(1){k[m>>2]=27524;k[ma>>2]=27544;B=0;wa(508,Aa|0,ra|0);Ma=B;B=0;if(Ma&1){la=75;break}k[Ca>>2]=0;k[Ba>>2]=-1;k[m>>2]=27468;k[ma>>2]=27488;B=0;va(448,ra|0);Ma=B;B=0;if(Ma&1){la=76;break}k[ra>>2]=27560;k[Ja>>2]=0;k[Ja+4>>2]=0;k[Ja+8>>2]=0;k[Ja+12>>2]=0;k[Ka>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ra|0,c|0);Ma=B;B=0;if(Ma&1){la=74;break}Yua(c);B=0;Ma=Ia(40,m|0,69972,6)|0;Na=B;B=0;if(Na&1){la=86;break}B=0;Na=Xa(242,Ma|0,La|0)|0;Ma=B;B=0;if(Ma&1){la=86;break}B=0;Ma=Ia(40,Na|0,69979,4)|0;Na=B;B=0;if(Na&1){la=86;break}B=0;Xa(245,Ma|0,k[(k[na>>2]|0)+(La<<2)>>2]|0)|0;Ma=B;B=0;if(Ma&1){la=86;break}B=0;wa(510,n|0,ra|0);Ma=B;B=0;if(Ma&1){la=86;break}B=0;ya(424,n|0)|0;Ma=B;B=0;if(Ma&1){la=87;break}Yua(n);k[m>>2]=27468;k[ma>>2]=27488;k[ra>>2]=27560;Yua(Ja);Ava(ra);vva(ma);Ma=k[(k[na>>2]|0)+(La<<2)>>2]|0;Ec[k[(k[Ma>>2]|0)+8>>2]&1023](Ma);La=La+1|0;if((La|0)>=(qa|0))break b}if((la|0)==74){qa=Rb()|0;La=Q;Yua(c);Yua(Ja);Ava(ra);Oa=La;Pa=qa;la=77}else if((la|0)==75){qa=Rb()|0;Qa=Q;Ra=qa;vva(ma);Qb(Ra|0)}else if((la|0)==76){qa=Rb()|0;Oa=Q;Pa=qa;la=77}else if((la|0)==86){qa=Rb()|0;Sa=qa;Ta=Q;la=88}else if((la|0)==87){qa=Rb()|0;La=Q;Yua(n);Sa=qa;Ta=La;la=88}if((la|0)==77){Qa=Oa;Ra=Pa;vva(ma);Qb(Ra|0)}else if((la|0)==88){k[m>>2]=27468;k[ma>>2]=27488;k[ra>>2]=27560;Yua(Ja);Ava(ra);vva(ma);Fa=Sa;Ga=Ta;Qb(Fa|0)}}else{La=o+56|0;qa=o+4|0;k[o>>2]=27524;k[La>>2]=27544;B=0;wa(508,o+56|0,qa|0);Ka=B;B=0;if(Ka&1){Ka=Rb()|0;Ua=Q;Va=Ka;vva(La);Qb(Va|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[La>>2]=27488;B=0;va(448,qa|0);Ka=B;B=0;do if(Ka&1){Ba=Rb()|0;Wa=Q;Ya=Ba}else{k[qa>>2]=27560;Ba=o+36|0;k[Ba>>2]=0;k[Ba+4>>2]=0;k[Ba+8>>2]=0;k[Ba+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,qa|0,c|0);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Aa=Q;Yua(c);Yua(Ba);Ava(qa);Wa=Aa;Ya=Ca;break}Yua(c);B=0;Ia(40,o|0,69754,13)|0;Ca=B;B=0;do if(!(Ca&1)){B=0;wa(510,p|0,qa|0);Aa=B;B=0;if(Aa&1){la=101;break}B=0;ya(424,p|0)|0;Aa=B;B=0;if(Aa&1){Aa=Rb()|0;Ma=Q;Yua(p);Za=Aa;_a=Ma;break}else{Yua(p);k[o>>2]=27468;k[La>>2]=27488;k[qa>>2]=27560;Yua(Ba);Ava(qa);vva(La);break b}}else la=101;while(0);if((la|0)==101){Ca=Rb()|0;Za=Ca;_a=Q}k[o>>2]=27468;k[La>>2]=27488;k[qa>>2]=27560;Yua(Ba);Ava(qa);vva(La);Fa=Za;Ga=_a;Qb(Fa|0)}while(0);Ua=Wa;Va=Ya;vva(La);Qb(Va|0)}while(0);na=k[a+28>>2]|0;c:do if(!na){qa=q+56|0;Ka=q+4|0;k[q>>2]=27524;k[qa>>2]=27544;B=0;wa(508,q+56|0,Ka|0);ma=B;B=0;if(ma&1){ma=Rb()|0;$a=Q;ab=ma;vva(qa);Qb(ab|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[qa>>2]=27488;B=0;va(448,Ka|0);ma=B;B=0;do if(ma&1){ra=Rb()|0;bb=Q;cb=ra}else{k[Ka>>2]=27560;ra=q+36|0;k[ra>>2]=0;k[ra+4>>2]=0;k[ra+8>>2]=0;k[ra+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ka|0,c|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;Ca=Q;Yua(c);Yua(ra);Ava(Ka);bb=Ca;cb=Ja;break}Yua(c);B=0;Ia(40,q|0,69768,16)|0;Ja=B;B=0;do if(!(Ja&1)){B=0;wa(510,s|0,Ka|0);Ca=B;B=0;if(Ca&1){la=118;break}B=0;ya(424,s|0)|0;Ca=B;B=0;if(Ca&1){Ca=Rb()|0;ua=Q;Yua(s);db=Ca;eb=ua;break}else{Yua(s);k[q>>2]=27468;k[qa>>2]=27488;k[Ka>>2]=27560;Yua(ra);Ava(Ka);vva(qa);break c}}else la=118;while(0);if((la|0)==118){Ja=Rb()|0;db=Ja;eb=Q}k[q>>2]=27468;k[qa>>2]=27488;k[Ka>>2]=27560;Yua(ra);Ava(Ka);vva(qa);Fa=db;Ga=eb;Qb(Fa|0)}while(0);$a=bb;ab=cb;vva(qa);Qb(ab|0)}else Ec[k[(k[na>>2]|0)+8>>2]&1023](na);while(0);na=k[a+32>>2]|0;d:do if(!na){Ka=t+56|0;ma=t+4|0;k[t>>2]=27524;k[Ka>>2]=27544;B=0;wa(508,t+56|0,ma|0);La=B;B=0;if(La&1){La=Rb()|0;fb=Q;gb=La;vva(Ka);Qb(gb|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[Ka>>2]=27488;B=0;va(448,ma|0);La=B;B=0;do if(La&1){Ja=Rb()|0;hb=Q;ib=Ja}else{k[ma>>2]=27560;Ja=t+36|0;k[Ja>>2]=0;k[Ja+4>>2]=0;k[Ja+8>>2]=0;k[Ja+12>>2]=0;k[t+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ma|0,c|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;ua=Q;Yua(c);Yua(Ja);Ava(ma);hb=ua;ib=Ba;break}Yua(c);B=0;Ia(40,t|0,69785,14)|0;Ba=B;B=0;do if(!(Ba&1)){B=0;wa(510,u|0,ma|0);ua=B;B=0;if(ua&1){la=135;break}B=0;ya(424,u|0)|0;ua=B;B=0;if(ua&1){ua=Rb()|0;Ca=Q;Yua(u);jb=ua;kb=Ca;break}else{Yua(u);k[t>>2]=27468;k[Ka>>2]=27488;k[ma>>2]=27560;Yua(Ja);Ava(ma);vva(Ka);break d}}else la=135;while(0);if((la|0)==135){Ba=Rb()|0;jb=Ba;kb=Q}k[t>>2]=27468;k[Ka>>2]=27488;k[ma>>2]=27560;Yua(Ja);Ava(ma);vva(Ka);Fa=jb;Ga=kb;Qb(Fa|0)}while(0);fb=hb;gb=ib;vva(Ka);Qb(gb|0)}else Ec[k[(k[na>>2]|0)+8>>2]&1023](na);while(0);na=v+56|0;ma=v+4|0;k[v>>2]=27524;k[na>>2]=27544;B=0;wa(508,v+56|0,ma|0);La=B;B=0;if(La&1){La=Rb()|0;lb=Q;mb=La;vva(na);Qb(mb|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[na>>2]=27488;B=0;va(448,ma|0);La=B;B=0;do if(La&1){qa=Rb()|0;nb=Q;ob=qa}else{k[ma>>2]=27560;qa=v+36|0;k[qa>>2]=0;k[qa+4>>2]=0;k[qa+8>>2]=0;k[qa+12>>2]=0;k[v+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ma|0,c|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;ra=Q;Yua(c);Yua(qa);Ava(ma);nb=ra;ob=Ba;break}Yua(c);B=0;Ia(40,v|0,144113,14)|0;Ba=B;B=0;do if(Ba&1)la=151;else{B=0;wa(510,w|0,ma|0);ra=B;B=0;if(ra&1){la=151;break}B=0;ya(424,w|0)|0;ra=B;B=0;if(ra&1){ra=Rb()|0;Ca=Q;Yua(w);pb=ra;qb=Ca;break}Yua(w);k[v>>2]=27468;k[na>>2]=27488;k[ma>>2]=27560;Yua(qa);Ava(ma);vva(na);Ca=k[a+36>>2]|0;if(Ca)_N(Ca);Ca=x+56|0;ra=x+4|0;k[x>>2]=27524;k[Ca>>2]=27544;B=0;wa(508,x+56|0,ra|0);ua=B;B=0;if(ua&1){ua=Rb()|0;rb=Q;sb=ua;vva(Ca);Qb(sb|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[Ca>>2]=27488;B=0;va(448,ra|0);ua=B;B=0;do if(ua&1){Ma=Rb()|0;tb=Q;ub=Ma}else{k[ra>>2]=27560;Ma=x+36|0;k[Ma>>2]=0;k[Ma+4>>2]=0;k[Ma+8>>2]=0;k[Ma+12>>2]=0;k[x+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ra|0,c|0);Aa=B;B=0;if(Aa&1){Aa=Rb()|0;Na=Q;Yua(c);Yua(Ma);Ava(ra);tb=Na;ub=Aa;break}Yua(c);B=0;Ia(40,x|0,69800,18)|0;Aa=B;B=0;do if(Aa&1)la=166;else{B=0;wa(510,y|0,ra|0);Na=B;B=0;if(Na&1){la=166;break}B=0;ya(424,y|0)|0;Na=B;B=0;if(Na&1){Na=Rb()|0;vb=Q;Yua(y);wb=Na;xb=vb;break}Yua(y);k[x>>2]=27468;k[Ca>>2]=27488;k[ra>>2]=27560;Yua(Ma);Ava(ra);vva(Ca);vb=z+56|0;Na=z+4|0;k[z>>2]=27524;k[vb>>2]=27544;B=0;wa(508,z+56|0,Na|0);yb=B;B=0;if(yb&1){yb=Rb()|0;zb=Q;Ab=yb;vva(vb);Qb(Ab|0)}k[z+128>>2]=0;k[z+132>>2]=-1;k[z>>2]=27468;k[vb>>2]=27488;B=0;va(448,Na|0);yb=B;B=0;do if(yb&1){Bb=Rb()|0;Cb=Q;Db=Bb}else{k[Na>>2]=27560;Bb=z+36|0;k[Bb>>2]=0;k[Bb+4>>2]=0;k[Bb+8>>2]=0;k[Bb+12>>2]=0;k[z+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Na|0,c|0);Eb=B;B=0;if(Eb&1){Eb=Rb()|0;Fb=Q;Yua(c);Yua(Bb);Ava(Na);Cb=Fb;Db=Eb;break}Yua(c);B=0;Ia(40,z|0,69819,10)|0;Eb=B;B=0;do if(Eb&1)la=181;else{B=0;wa(510,A|0,Na|0);Fb=B;B=0;if(Fb&1){la=181;break}B=0;ya(424,A|0)|0;Fb=B;B=0;if(Fb&1){Fb=Rb()|0;Gb=Q;Yua(A);Hb=Fb;Ib=Gb;break}Yua(A);k[z>>2]=27468;k[vb>>2]=27488;k[Na>>2]=27560;Yua(Bb);Ava(Na);vva(vb);Gb=k[a+16>>2]|0;if(Gb){oh(Gb);r=b;return}Gb=C+56|0;Fb=C+4|0;k[C>>2]=27524;k[Gb>>2]=27544;B=0;wa(508,C+56|0,Fb|0);Jb=B;B=0;if(Jb&1){Jb=Rb()|0;Kb=Q;Lb=Jb;vva(Gb);Qb(Lb|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[Gb>>2]=27488;B=0;va(448,Fb|0);Jb=B;B=0;do if(Jb&1){Mb=Rb()|0;Nb=Q;Ob=Mb}else{k[Fb>>2]=27560;Mb=C+36|0;k[Mb>>2]=0;k[Mb+4>>2]=0;k[Mb+8>>2]=0;k[Mb+12>>2]=0;k[C+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Fb|0,c|0);Pb=B;B=0;if(Pb&1){Pb=Rb()|0;Sb=Q;Yua(c);Yua(Mb);Ava(Fb);Nb=Sb;Ob=Pb;break}Yua(c);B=0;Ia(40,C|0,69830,12)|0;Pb=B;B=0;do if(Pb&1)la=196;else{B=0;wa(510,D|0,Fb|0);Sb=B;B=0;if(Sb&1){la=196;break}B=0;ya(424,D|0)|0;Sb=B;B=0;if(Sb&1){Sb=Rb()|0;Tb=Q;Yua(D);Ub=Sb;Vb=Tb;break}Yua(D);k[C>>2]=27468;k[Gb>>2]=27488;k[Fb>>2]=27560;Yua(Mb);Ava(Fb);vva(Gb);r=b;return}while(0);if((la|0)==196){Pb=Rb()|0;Ub=Pb;Vb=Q}k[C>>2]=27468;k[Gb>>2]=27488;k[Fb>>2]=27560;Yua(Mb);Ava(Fb);vva(Gb);Fa=Ub;Ga=Vb;Qb(Fa|0)}while(0);Kb=Nb;Lb=Ob;vva(Gb);Qb(Lb|0)}while(0);if((la|0)==181){Eb=Rb()|0;Hb=Eb;Ib=Q}k[z>>2]=27468;k[vb>>2]=27488;k[Na>>2]=27560;Yua(Bb);Ava(Na);vva(vb);Fa=Hb;Ga=Ib;Qb(Fa|0)}while(0);zb=Cb;Ab=Db;vva(vb);Qb(Ab|0)}while(0);if((la|0)==166){Aa=Rb()|0;wb=Aa;xb=Q}k[x>>2]=27468;k[Ca>>2]=27488;k[ra>>2]=27560;Yua(Ma);Ava(ra);vva(Ca);Fa=wb;Ga=xb;Qb(Fa|0)}while(0);rb=tb;sb=ub;vva(Ca);Qb(sb|0)}while(0);if((la|0)==151){Ba=Rb()|0;pb=Ba;qb=Q}k[v>>2]=27468;k[na>>2]=27488;k[ma>>2]=27560;Yua(qa);Ava(ma);vva(na);Fa=pb;Ga=qb;Qb(Fa|0)}while(0);lb=nb;mb=ob;vva(na);Qb(mb|0)}while(0);if((la|0)==49){ja=Rb()|0;oa=ja;pa=Q}k[h>>2]=27468;k[aa>>2]=27488;k[$>>2]=27560;Yua(ga);Ava($);vva(aa);Fa=oa;Ga=pa;Qb(Fa|0)}while(0);ea=ha;fa=ia;vva(aa);Qb(fa|0)}else la=46;while(0);if((la|0)==46){Z=Rb()|0;ba=Z;ca=Q}k[f>>2]=27468;k[P>>2]=27488;k[R>>2]=27560;Yua(W);Ava(R);vva(P);Fa=ba;Ga=ca;Qb(Fa|0)}while(0);U=X;V=Y;vva(P);Qb(V|0)}else la=43;while(0);if((la|0)==43){M=Rb()|0;S=M;T=Q}k[d>>2]=27468;k[E>>2]=27488;k[F>>2]=27560;Yua(J);Ava(F);vva(E);Fa=S;Ga=T;Qb(Fa|0)}while(0);H=K;I=L;vva(E);Qb(I|0)}function np(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;TJ(k[a+32>>2]|0,b,c,d,e);return}function op(a,b,c){a=a|0;b=b|0;c=c|0;bO(k[a+36>>2]|0,b,c);return}function pp(a,b,c){a=a|0;b=b|0;c=c|0;dO(k[a+36>>2]|0,b,c);return}function qp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;hO(k[a+36>>2]|0,b,c,d);return}function rp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0;e=Hc[k[(k[a>>2]|0)+164>>2]&511](a)|0;f=(e|0)>0;if(f){g=a+20|0;h=0;i=0;while(1){j=(eo(k[(k[g>>2]|0)+(h<<2)>>2]|0,c,d)|0)+i|0;h=h+1|0;if((h|0)==(e|0)){l=j;break}else i=j}}else l=0;i=Rqa(l>>>0>1073741823?-1:l<<2)|0;if(!f){k[b>>2]=i;return}f=a+20|0;a=0;l=0;do{On(k[(k[f>>2]|0)+(l<<2)>>2]|0,i+(a<<2)|0,c,d);a=(eo(k[(k[f>>2]|0)+(l<<2)>>2]|0,c,d)|0)+a|0;l=l+1|0}while((l|0)!=(e|0));k[b>>2]=i;return}function sp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;d=Hc[k[(k[a>>2]|0)+396>>2]&511](a)|0;e=Hc[k[(k[a>>2]|0)+392>>2]&511](a)|0;f=e+d|0;g=(e|0)>0;if(g){e=a+20|0;h=d;i=0;while(1){j=(eo(k[(k[e>>2]|0)+(h<<2)>>2]|0,542,c)|0)+i|0;h=h+1|0;if((h|0)>=(f|0)){l=j;break}else i=j}}else l=0;i=Rqa(l>>>0>1073741823?-1:l<<2)|0;if(!g){k[b>>2]=i;return}g=a+20|0;a=0;l=d;do{On(k[(k[g>>2]|0)+(l<<2)>>2]|0,i+(a<<2)|0,542,c);a=(eo(k[(k[g>>2]|0)+(l<<2)>>2]|0,542,c)|0)+a|0;l=l+1|0}while((l|0)<(f|0));k[b>>2]=i;return}function tp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=Hc[k[(k[a>>2]|0)+396>>2]&511](a)|0;e=(d|0)>0;if(e){f=a+20|0;g=0;h=0;while(1){i=(eo(k[(k[f>>2]|0)+(g<<2)>>2]|0,543,c)|0)+h|0;g=g+1|0;if((g|0)==(d|0)){j=i;break}else h=i}}else j=0;h=Rqa(j>>>0>1073741823?-1:j<<2)|0;if(!e){k[b>>2]=h;return}e=a+20|0;a=0;j=0;do{On(k[(k[e>>2]|0)+(j<<2)>>2]|0,h+(a<<2)|0,543,c);a=(eo(k[(k[e>>2]|0)+(j<<2)>>2]|0,543,c)|0)+a|0;j=j+1|0}while((j|0)!=(d|0));k[b>>2]=h;return}function up(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0,h=0,i=0;e=oC(k[a+16>>2]|0,c)|0;c=Hc[k[(k[a>>2]|0)+164>>2]&511](a)|0;if(!e){if((c|0)>0)f=0;else return;do{p[b+(f<<3)>>3]=d;f=f+1|0}while((f|0)!=(c|0));return}f=Hc[k[(k[a>>2]|0)+304>>2]&511](a)|0;if((c|0)<=0){if(!f)return}else{g=0;do{h=k[(k[f>>2]|0)+32>>2]|0;i=Hc[k[(k[a>>2]|0)+112>>2]&511](a)|0;nd[h&1023](f,i,g);nd[k[(k[e>>2]|0)+48>>2]&1023](e,b+(g<<3)|0,f);g=g+1|0}while((g|0)!=(c|0))}Ec[k[(k[f>>2]|0)+4>>2]&1023](f);return}function vp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=Hc[k[(k[a>>2]|0)+164>>2]&511](a)|0;l=oC(k[a+16>>2]|0,c)|0;if(l){m=Hc[k[(k[a>>2]|0)+304>>2]&511](a)|0;if((j|0)<=0){if(!m){r=d;return}}else{n=0;do{o=k[(k[m>>2]|0)+32>>2]|0;p=Hc[k[(k[a>>2]|0)+112>>2]&511](a)|0;nd[o&1023](m,p,n);nd[k[(k[l>>2]|0)+48>>2]&1023](l,b+(n<<3)|0,m);n=n+1|0}while((n|0)!=(j|0))}Ec[k[(k[m>>2]|0)+4>>2]&1023](m);r=d;return}d=f+56|0;m=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,m|0);j=B;B=0;if(j&1){j=Rb()|0;q=Q;s=j;vva(d);Qb(s|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,m|0);j=B;B=0;do if(j&1){n=Rb()|0;t=Q;u=n}else{k[m>>2]=27560;n=f+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,m|0,e|0);b=B;B=0;if(b&1){b=Rb()|0;l=Q;Yua(e);Yua(n);Ava(m);t=l;u=b;break}Yua(e);B=0;b=Ia(40,f|0,109148,6)|0;l=B;B=0;if((((!(l&1)?(B=0,l=ya(427,c|0)|0,a=B,B=0,!(a&1)):0)?(a=Lta(l)|0,B=0,p=Ia(40,b|0,l|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,a=Ia(40,p|0,109155,21)|0,p=B,B=0,!(p&1)):0)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,g|0,69562,75);p=B;B=0;do if(!(p&1)){B=0;eb(502,h|0,69984,19);l=B;B=0;if(l&1){l=Rb()|0;b=Q;Yua(g);v=l;w=b;break}B=0;wa(510,i|0,m|0);b=B;B=0;if(b&1){b=Rb()|0;x=b;y=Q;z=1}else{B=0;ua(163,a|0,g|0,h|0,1029,i|0);b=B;B=0;if(b&1)A=1;else{B=0;eb(503,a|0,1240,229);B=0;A=0}b=Rb()|0;l=Q;Yua(i);x=b;y=l;z=A}Yua(h);Yua(g);if(z){v=x;w=y}else{C=x;D=y;k[f>>2]=27468;k[d>>2]=27488;k[m>>2]=27560;Yua(n);Ava(m);vva(d);Qb(C|0)}}else{l=Rb()|0;v=l;w=Q}while(0);zb(a|0);C=v;D=w;k[f>>2]=27468;k[d>>2]=27488;k[m>>2]=27560;Yua(n);Ava(m);vva(d);Qb(C|0)}p=Rb()|0;C=p;D=Q;k[f>>2]=27468;k[d>>2]=27488;k[m>>2]=27560;Yua(n);Ava(m);vva(d);Qb(C|0)}while(0);q=t;s=u;vva(d);Qb(s|0)}function wp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=Hc[k[(k[a>>2]|0)+396>>2]&511](a)|0;l=oC(k[a+16>>2]|0,c)|0;if(l){m=Hc[k[(k[a>>2]|0)+304>>2]&511](a)|0;if((j|0)<=0){if(!m){r=d;return}}else{n=0;do{o=k[(k[m>>2]|0)+32>>2]|0;p=Hc[k[(k[a>>2]|0)+504>>2]&511](a)|0;nd[o&1023](m,p,n);nd[k[(k[l>>2]|0)+48>>2]&1023](l,b+(n<<3)|0,m);n=n+1|0}while((n|0)!=(j|0))}Ec[k[(k[m>>2]|0)+4>>2]&1023](m);r=d;return}d=f+56|0;m=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,m|0);j=B;B=0;if(j&1){j=Rb()|0;q=Q;s=j;vva(d);Qb(s|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,m|0);j=B;B=0;do if(j&1){n=Rb()|0;t=Q;u=n}else{k[m>>2]=27560;n=f+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,m|0,e|0);b=B;B=0;if(b&1){b=Rb()|0;l=Q;Yua(e);Yua(n);Ava(m);t=l;u=b;break}Yua(e);B=0;b=Ia(40,f|0,109148,6)|0;l=B;B=0;if((((!(l&1)?(B=0,l=ya(427,c|0)|0,a=B,B=0,!(a&1)):0)?(a=Lta(l)|0,B=0,p=Ia(40,b|0,l|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,a=Ia(40,p|0,109155,21)|0,p=B,B=0,!(p&1)):0)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,g|0,69562,75);p=B;B=0;do if(!(p&1)){B=0;eb(502,h|0,70004,27);l=B;B=0;if(l&1){l=Rb()|0;b=Q;Yua(g);v=l;w=b;break}B=0;wa(510,i|0,m|0);b=B;B=0;if(b&1){b=Rb()|0;x=b;y=Q;z=1}else{B=0;ua(163,a|0,g|0,h|0,1046,i|0);b=B;B=0;if(b&1)A=1;else{B=0;eb(503,a|0,1240,229);B=0;A=0}b=Rb()|0;l=Q;Yua(i);x=b;y=l;z=A}Yua(h);Yua(g);if(z){v=x;w=y}else{C=x;D=y;k[f>>2]=27468;k[d>>2]=27488;k[m>>2]=27560;Yua(n);Ava(m);vva(d);Qb(C|0)}}else{l=Rb()|0;v=l;w=Q}while(0);zb(a|0);C=v;D=w;k[f>>2]=27468;k[d>>2]=27488;k[m>>2]=27560;Yua(n);Ava(m);vva(d);Qb(C|0)}p=Rb()|0;C=p;D=Q;k[f>>2]=27468;k[d>>2]=27488;k[m>>2]=27560;Yua(n);Ava(m);vva(d);Qb(C|0)}while(0);q=t;s=u;vva(d);Qb(s|0)}function xp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=oC(k[a+16>>2]|0,c)|0;if(j){l=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;m=Hc[k[(k[a>>2]|0)+304>>2]&511](a)|0;if((l|0)<=0){if(!m){r=d;return}}else{a=0;do{Fc[k[(k[m>>2]|0)+28>>2]&1023](m,a);nd[k[(k[j>>2]|0)+48>>2]&1023](j,b+(a<<3)|0,m);a=a+1|0}while((a|0)!=(l|0))}Ec[k[(k[m>>2]|0)+4>>2]&1023](m);r=d;return}d=f+56|0;m=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,m|0);l=B;B=0;if(l&1){l=Rb()|0;n=Q;o=l;vva(d);Qb(o|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,m|0);l=B;B=0;do if(l&1){a=Rb()|0;p=Q;q=a}else{k[m>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,m|0,e|0);b=B;B=0;if(b&1){b=Rb()|0;j=Q;Yua(e);Yua(a);Ava(m);p=j;q=b;break}Yua(e);B=0;b=Ia(40,f|0,109148,6)|0;j=B;B=0;if((((!(j&1)?(B=0,j=ya(427,c|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(j)|0,B=0,t=Ia(40,b|0,j|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,109155,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,69562,75);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,70032,22);j=B;B=0;if(j&1){j=Rb()|0;b=Q;Yua(g);u=j;v=b;break}B=0;wa(510,i|0,m|0);b=B;B=0;if(b&1){b=Rb()|0;w=b;x=Q;y=1}else{B=0;ua(163,s|0,g|0,h|0,1061,i|0);b=B;B=0;if(b&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}b=Rb()|0;j=Q;Yua(i);w=b;x=j;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[d>>2]=27488;k[m>>2]=27560;Yua(a);Ava(m);vva(d);Qb(A|0)}}else{j=Rb()|0;u=j;v=Q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[d>>2]=27488;k[m>>2]=27560;Yua(a);Ava(m);vva(d);Qb(A|0)}t=Rb()|0;A=t;C=Q;k[f>>2]=27468;k[d>>2]=27488;k[m>>2]=27560;Yua(a);Ava(m);vva(d);Qb(A|0)}while(0);n=p;o=q;vva(d);Qb(o|0)}function yp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0;e=oC(k[a+16>>2]|0,c)|0;c=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;if(!e){if((c|0)>0)f=0;else return;do{p[b+(f<<3)>>3]=d;f=f+1|0}while((f|0)!=(c|0));return}f=Hc[k[(k[a>>2]|0)+304>>2]&511](a)|0;if((c|0)<=0){if(!f)return}else{a=0;do{Fc[k[(k[f>>2]|0)+28>>2]&1023](f,a);nd[k[(k[e>>2]|0)+48>>2]&1023](e,b+(a<<3)|0,f);a=a+1|0}while((a|0)!=(c|0))}Ec[k[(k[f>>2]|0)+4>>2]&1023](f);return}function zp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=oC(k[a+16>>2]|0,c)|0;if(j){Fc[k[(k[j>>2]|0)+36>>2]&1023](j,b);r=d;return}d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(d);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);j=B;B=0;do if(j&1){a=Rb()|0;n=Q;o=a}else{k[b>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(e);Yua(a);Ava(b);n=q;o=p;break}Yua(e);B=0;p=Ia(40,f|0,109148,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,c|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,109155,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,69562,75);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,121355,13);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,1135,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}while(0);l=n;m=o;vva(d);Qb(m|0)}function Ap(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=oC(k[a+16>>2]|0,c)|0;if(j){Fc[k[(k[j>>2]|0)+40>>2]&1023](j,b);r=d;return}d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(d);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);j=B;B=0;do if(j&1){a=Rb()|0;n=Q;o=a}else{k[b>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(e);Yua(a);Ava(b);n=q;o=p;break}Yua(e);B=0;p=Ia(40,f|0,109148,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,c|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,109155,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,69562,75);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,121355,13);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,1142,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}while(0);l=n;m=o;vva(d);Qb(m|0)}function Bp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=oC(k[a+16>>2]|0,c)|0;if(j){Fc[k[(k[j>>2]|0)+44>>2]&1023](j,b);r=d;return}d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(d);Qb(m|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);j=B;B=0;do if(j&1){a=Rb()|0;n=Q;o=a}else{k[b>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(e);Yua(a);Ava(b);n=q;o=p;break}Yua(e);B=0;p=Ia(40,f|0,109148,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,c|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,109155,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,69562,75);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,121355,13);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,1149,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);Qb(C|0)}while(0);l=n;m=o;vva(d);Qb(m|0)}function Cp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;i=e+12|0;j=e;l=oC(k[a+16>>2]|0,d)|0;if(l){nd[k[(k[l>>2]|0)+48>>2]&1023](l,b,c);r=e;return}e=g+56|0;c=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;m=Q;n=b;vva(e);Qb(n|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,c|0);b=B;B=0;do if(b&1){l=Rb()|0;o=Q;p=l}else{k[c>>2]=27560;l=g+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,c|0,f|0);a=B;B=0;if(a&1){a=Rb()|0;q=Q;Yua(f);Yua(l);Ava(c);o=q;p=a;break}Yua(f);B=0;a=Ia(40,g|0,109148,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,d|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,a|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,109155,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,h|0,69562,75);t=B;B=0;do if(!(t&1)){B=0;eb(502,i|0,121355,13);q=B;B=0;if(q&1){q=Rb()|0;a=Q;Yua(h);u=a;v=q;break}B=0;wa(510,j|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,h|0,i|0,1156,j|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;a=Q;Yua(j);w=a;x=q;y=z}Yua(i);Yua(h);if(y){u=w;v=x}else{A=w;C=x;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(e);Qb(C|0)}while(0);m=o;n=p;vva(e);Qb(n|0)}function Dp(a,b){a=a|0;b=b|0;var c=0,d=0.0;switch(b|0){case 217:{c=k[a+28>>2]|0;d=+Zc[k[(k[c>>2]|0)+64>>2]&255](c);return +d}case 214:{c=k[a+28>>2]|0;d=+Zc[k[(k[c>>2]|0)+48>>2]&255](c);return +d}case 215:{c=k[a+28>>2]|0;d=+Zc[k[(k[c>>2]|0)+52>>2]&255](c);return +d}default:{d=+WJ(k[a+32>>2]|0,b);return +d}}return +(0.0)}function Ep(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=Hc[k[(k[a>>2]|0)+164>>2]&511](a)|0;if((c|0)<=0)return;d=a+20|0;a=0;do{e=Rn(k[(k[d>>2]|0)+(a<<2)>>2]|0)|0;k[b+(a<<2)>>2]=e;a=a+1|0}while((a|0)!=(c|0));return}function Fp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0;e=+p[c>>3];f=+p[c+24>>3];g=+p[c+32>>3];h=+p[c+8>>3];i=+p[c+40>>3];j=+p[c+16>>3];k=f*f;f=g*g;g=i*i;i=+aa(+(j*j+(g+(f+(g+(h*h+(k+(e*e+k+f))))))))*.7071067811865475;p[b>>3]=i*(i*4.0)*d;return}function Gp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;e=r;r=r+192|0;f=e+180|0;g=e+176|0;h=e+40|0;i=e+24|0;j=e+12|0;l=e;m=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;n=Hc[k[(k[a>>2]|0)+164>>2]&511](a)|0;k[g>>2]=0;switch(d|0){case 628:{o=Rqa(m>>>0>1073741823?-1:m<<2)|0;k[g>>2]=o;p=Rqa(m>>>0>536870911?-1:m<<3)|0;q=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;if((q|0)>0){s=a+24|0;t=0;do{u=Co(k[(k[s>>2]|0)+(t<<2)>>2]|0)|0;k[o+(t<<2)>>2]=u;t=t+1|0}while((t|0)!=(q|0))}xp(a,p,c);if(!(k[b>>2]|0)){v=o;w=p}else{q=k[k[b+4>>2]>>2]|0;Dc[k[(k[q>>2]|0)+16>>2]&255](q,m,o,p,0);v=o;w=p}break}case 629:{p=Rqa(m>>>0>1073741823?-1:m<<2)|0;k[g>>2]=p;o=Rqa(m>>>0>536870911?-1:m<<3)|0;q=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;if((q|0)>0){t=a+24|0;s=0;do{u=Bo(k[(k[t>>2]|0)+(s<<2)>>2]|0)|0;k[p+(s<<2)>>2]=u;s=s+1|0}while((s|0)!=(q|0))}xp(a,o,c);if(!(k[b>>2]|0)){v=p;w=o}else{q=k[k[b+4>>2]>>2]|0;Dc[k[(k[q>>2]|0)+16>>2]&255](q,m,p,o,0);v=p;w=o}break}case 549:{o=Rqa(n>>>0>1073741823?-1:n<<2)|0;k[g>>2]=o;o=Rqa(n>>>0>536870911?-1:n<<3)|0;vp(a,o,c);rp(a,g,534,943);p=k[g>>2]|0;if(!(k[b>>2]|0)){v=p;w=o}else{m=k[k[b+4>>2]>>2]|0;Dc[k[(k[m>>2]|0)+16>>2]&255](m,n,p,o,0);v=p;w=o}break}case 608:{o=Rqa(n>>>0>1073741823?-1:n<<2)|0;k[g>>2]=o;g=Rqa(n>>>0>536870911?-1:n<<3)|0;p=Hc[k[(k[a>>2]|0)+164>>2]&511](a)|0;if((p|0)>0){m=a+20|0;q=0;do{s=Qn(k[(k[m>>2]|0)+(q<<2)>>2]|0)|0;k[o+(q<<2)>>2]=s;q=q+1|0}while((q|0)!=(p|0))}vp(a,g,c);if(!(k[b>>2]|0)){v=o;w=g}else{c=k[k[b+4>>2]>>2]|0;Dc[k[(k[c>>2]|0)+16>>2]&255](c,n,o,g,0);v=o;w=g}break}default:{g=h+56|0;o=h+4|0;k[h>>2]=27524;k[g>>2]=27544;B=0;wa(508,h+56|0,o|0);n=B;B=0;if(n&1){n=Rb()|0;x=Q;y=n;vva(g);Qb(y|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[g>>2]=27488;B=0;va(448,o|0);n=B;B=0;do if(n&1){c=Rb()|0;z=Q;A=c}else{k[o>>2]=27560;c=h+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,o|0,f|0);b=B;B=0;if(b&1){b=Rb()|0;a=Q;Yua(f);Yua(c);Ava(o);z=a;A=b;break}Yua(f);B=0;b=Ia(40,h|0,74808,5)|0;a=B;B=0;if((((((!(a&1)?(B=0,a=Xa(242,b|0,d|0)|0,b=B,B=0,!(b&1)):0)?(B=0,b=Ia(40,a|0,144166,2)|0,a=B,B=0,!(a&1)):0)?(B=0,a=ya(427,d|0)|0,p=B,B=0,!(p&1)):0)?(p=Lta(a)|0,B=0,q=Ia(40,b|0,a|0,p|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,q|0,74814,21)|0,q=B,B=0,!(q&1)):0)?(B=0,Xa(239,p|0,0)|0,p=B,B=0,!(p&1)):0){p=Ab(20)|0;B=0;eb(502,i|0,69562,75);q=B;B=0;do if(!(q&1)){B=0;eb(502,j|0,115046,19);a=B;B=0;if(a&1){a=Rb()|0;b=Q;Yua(i);C=b;D=a;break}B=0;wa(510,l|0,o|0);a=B;B=0;if(a&1){a=Rb()|0;E=Q;F=a;G=1}else{B=0;ua(163,p|0,i|0,j|0,1291,l|0);a=B;B=0;if(a&1)H=1;else{B=0;eb(503,p|0,1240,229);B=0;H=0}a=Rb()|0;b=Q;Yua(l);E=b;F=a;G=H}Yua(j);Yua(i);if(G){C=E;D=F}else{I=E;J=F;k[h>>2]=27468;k[g>>2]=27488;k[o>>2]=27560;Yua(c);Ava(o);vva(g);Qb(J|0)}}else{a=Rb()|0;C=Q;D=a}while(0);zb(p|0);I=C;J=D;k[h>>2]=27468;k[g>>2]=27488;k[o>>2]=27560;Yua(c);Ava(o);vva(g);Qb(J|0)}q=Rb()|0;I=Q;J=q;k[h>>2]=27468;k[g>>2]=27488;k[o>>2]=27560;Yua(c);Ava(o);vva(g);Qb(J|0)}while(0);x=z;y=A;vva(g);Qb(y|0)}}if(!v){Tqa(w);r=e;return}Tqa(v);Tqa(w);r=e;return}function Hp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;if((c|0)<=0)return;d=a+24|0;a=0;do{e=Co(k[(k[d>>2]|0)+(a<<2)>>2]|0)|0;k[b+(a<<2)>>2]=e;a=a+1|0}while((a|0)!=(c|0));return}function Ip(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;if((c|0)<=0)return;d=a+24|0;a=0;do{e=Bo(k[(k[d>>2]|0)+(a<<2)>>2]|0)|0;k[b+(a<<2)>>2]=e;a=a+1|0}while((a|0)!=(c|0));return}function Jp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;if((c|0)<=0)return;d=a+24|0;a=0;do{e=Ao(k[(k[d>>2]|0)+(a<<2)>>2]|0)|0;k[b+(a<<2)>>2]=e;a=a+1|0}while((a|0)!=(c|0));return}function Kp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=r;r=r+16|0;e=d;f=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;g=Rqa(f>>>0>536870911?-1:f<<3)|0;if((f|0)>0){h=0;do{p[g+(h<<3)>>3]=+p[b+((h*3|0)+1<<3)>>3];h=h+1|0}while((h|0)!=(f|0))}rd[k[(k[a>>2]|0)+500>>2]&511](a,e,g,c);Tqa(g);r=d;return +(+p[e>>3])}function Lp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=r;r=r+16|0;e=d;f=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;g=Rqa(f>>>0>536870911?-1:f<<3)|0;if((f|0)>0){h=0;do{p[g+(h<<3)>>3]=+p[b+((h*3|0)+2<<3)>>3];h=h+1|0}while((h|0)!=(f|0))}rd[k[(k[a>>2]|0)+500>>2]&511](a,e,g,c);Tqa(g);r=d;return +(+p[e>>3])}function Mp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0;e=r;r=r+16|0;f=e;cO(k[a+36>>2]|0,f,198);g=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;h=(g|0)>0;if(d){if(!h){r=e;return}d=a+24|0;i=0;do{j=k[f>>2]|0;l=(ma(Bo(k[(k[d>>2]|0)+(i<<2)>>2]|0)|0,j)|0)+c|0;k[b+(i<<2)>>2]=l;i=i+1|0}while((i|0)!=(g|0));r=e;return}else{if(!h){r=e;return}h=a+24|0;a=0;do{i=k[f>>2]|0;d=(ma(Co(k[(k[h>>2]|0)+(a<<2)>>2]|0)|0,i)|0)+c|0;k[b+(a<<2)>>2]=d;a=a+1|0}while((a|0)!=(g|0));r=e;return}}function Np(a){a=a|0;return +pC(k[a+16>>2]|0,287)>0.0|0}function Op(a){a=a|0;return k[a+8>>2]|0}function Pp(a,b,c){a=a|0;b=b|0;c=c|0;nC(k[a+16>>2]|0,b,c);return}function Qp(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0;i=r;r=r+1056|0;j=i+1040|0;l=i+856|0;m=i+1028|0;n=i+1016|0;o=i+1004|0;q=i+720|0;s=i+992|0;t=i+708|0;u=i+696|0;v=i;w=i+560|0;x=i+276|0;y=i+264|0;z=i+116|0;A=i+424|0;C=i+104|0;D=i+92|0;E=i+80|0;F=i+288|0;G=i+68|0;H=i+56|0;I=i+44|0;J=i+128|0;K=i+32|0;L=i+20|0;M=i+8|0;switch(f|0){case 1:{N=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;O=Rqa(N>>>0>1073741823?-1:N<<2)|0;P=Rqa(N>>>0>536870911?-1:N<<3)|0;R=(N|0)>0;if(R){S=k[c+72>>2]|0;T=ma(k[a+12>>2]|0,N)|0;U=0;do{k[O+(U<<2)>>2]=k[S+(T+U<<2)>>2];U=U+1|0}while((U|0)!=(N|0))}U=k[c+52>>2]|0;if((U|0)==(d|0)){if(R){T=0;do{p[P+(T<<3)>>3]=+p[b+((k[O+(T<<2)>>2]|0)+-1<<3)>>3];T=T+1|0}while((T|0)!=(N|0))}rd[k[(k[a>>2]|0)+48>>2]&511](a,g,P,738)}else{if((U+1|0)!=(d|0)){U=q+56|0;T=q+4|0;k[q>>2]=27524;k[U>>2]=27544;B=0;wa(508,q+56|0,T|0);S=B;B=0;if(S&1){S=Rb()|0;V=Q;W=S;vva(U);Qb(W|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[U>>2]=27488;B=0;va(448,T|0);S=B;B=0;do if(S&1){X=Rb()|0;Y=Q;Z=X}else{k[T>>2]=27560;X=q+36|0;k[X>>2]=0;k[X+4>>2]=0;k[X+8>>2]=0;k[X+12>>2]=0;k[q+52>>2]=16;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;B=0;wa(509,T|0,j|0);_=B;B=0;if(_&1){_=Rb()|0;$=Q;Yua(j);Yua(X);Ava(T);Y=$;Z=_;break}Yua(j);B=0;_=Ia(40,q|0,70067,84)|0;$=B;B=0;a:do if((((((!($&1)?(B=0,aa=ya(427,g|0)|0,ba=B,B=0,!(ba&1)):0)?(ba=Lta(aa)|0,B=0,ca=Ia(40,_|0,aa|0,ba|0)|0,ba=B,B=0,!(ba&1)):0)?(B=0,ba=Ia(40,ca|0,70152,5)|0,ca=B,B=0,!(ca&1)):0)?(B=0,ca=Xa(242,ba|0,d|0)|0,ba=B,B=0,!(ba&1)):0)?(B=0,ba=Ia(40,ca|0,70158,5)|0,ca=B,B=0,!(ca&1)):0)?(B=0,Xa(239,ba|0,0)|0,ba=B,B=0,!(ba&1)):0){ba=Ab(20)|0;B=0;eb(502,s|0,69562,75);ca=B;B=0;do if(!(ca&1)){B=0;eb(502,t|0,70055,11);aa=B;B=0;if(aa&1){aa=Rb()|0;da=Q;Yua(s);ea=da;fa=aa;break}B=0;wa(510,u|0,T|0);aa=B;B=0;if(aa&1){aa=Rb()|0;ga=1;ha=Q;ia=aa}else{B=0;ua(163,ba|0,s|0,t|0,1453,u|0);aa=B;B=0;if(aa&1)ja=1;else{B=0;eb(503,ba|0,1240,229);B=0;ja=0}aa=Rb()|0;da=Q;Yua(u);ga=ja;ha=da;ia=aa}Yua(t);Yua(s);if(ga){ea=ha;fa=ia}else{ka=ha;la=ia;break a}}else{aa=Rb()|0;ea=Q;fa=aa}while(0);zb(ba|0);ka=ea;la=fa}else na=87;while(0);if((na|0)==87){_=Rb()|0;ka=Q;la=_}k[q>>2]=27468;k[U>>2]=27488;k[T>>2]=27560;Yua(X);Ava(T);vva(U);oa=ka;pa=la;Qb(pa|0)}while(0);V=Y;W=Z;vva(U);Qb(W|0)}W=Rqa(e>>>0>536870911?-1:e<<3)|0;U=(e|0)>0;if(U)TEa(W|0,b+((ma(d+-1|0,e)|0)<<3)|0,e<<3|0)|0;Z=Qqa(24)|0;B=0;ib(287,Z|0,g|0,W|0,e|0);Y=B;B=0;if(Y&1){Y=Rb()|0;V=Q;Sqa(Z);oa=V;pa=Y;Qb(pa|0)}b:do if(U){c:do if(R){Y=0;d:while(1){V=0;do{la=b+((ma((k[O+(V<<2)>>2]|0)+-1|0,e)|0)+Y<<3)|0;p[P+(V<<3)>>3]=+p[la>>3];V=V+1|0}while((V|0)!=(N|0));switch(Hc[k[(k[a>>2]|0)+20>>2]&511](a)|0){case 621:{V=Qqa(16)|0;B=0;ib(284,V|0,g|0,P|0,738);la=B;B=0;if(la&1){qa=V;na=27;break d}gm(Z,V);break}case 625:{V=Qqa(16)|0;B=0;ib(285,V|0,g|0,P|0,738);la=B;B=0;if(la&1){ra=V;na=26;break d}gm(Z,V);break}case 623:{V=Qqa(16)|0;B=0;ib(286,V|0,g|0,P|0,738);la=B;B=0;if(la&1){sa=V;na=25;break d}gm(Z,V);break}default:{na=42;break c}}Y=Y+1|0;if((Y|0)>=(e|0))break b}if((na|0)==25){Y=Rb()|0;ta=Y;xa=Q;za=sa;na=41;break}else if((na|0)==26){Y=Rb()|0;Aa=Q;Ba=Y;Ca=ra;na=37;break}else if((na|0)==27){Y=Rb()|0;Da=Y;Ea=Q;Fa=qa;na=33;break}}else{Y=0;e:while(1){switch(Hc[k[(k[a>>2]|0)+20>>2]&511](a)|0){case 621:{ba=Qqa(16)|0;B=0;ib(284,ba|0,g|0,P|0,738);V=B;B=0;if(V&1){Ga=ba;na=32;break e}gm(Z,ba);break}case 625:{ba=Qqa(16)|0;B=0;ib(285,ba|0,g|0,P|0,738);V=B;B=0;if(V&1){Ha=ba;na=36;break e}gm(Z,ba);break}case 623:{ba=Qqa(16)|0;B=0;ib(286,ba|0,g|0,P|0,738);V=B;B=0;if(V&1){Ja=ba;na=40;break e}gm(Z,ba);break}default:{na=42;break c}}Y=Y+1|0;if((Y|0)>=(e|0))break b}if((na|0)==32){Y=Rb()|0;Da=Y;Ea=Q;Fa=Ga;na=33;break}else if((na|0)==36){Y=Rb()|0;Aa=Q;Ba=Y;Ca=Ha;na=37;break}else if((na|0)==40){Y=Rb()|0;ta=Y;xa=Q;za=Ja;na=41;break}}while(0);if((na|0)==33){Sqa(Fa);oa=Ea;pa=Da;Qb(pa|0)}else if((na|0)==37){Sqa(Ca);oa=Aa;pa=Ba;Qb(pa|0)}else if((na|0)==41){Sqa(za);oa=xa;pa=ta;Qb(pa|0)}else if((na|0)==42){X=l+56|0;Y=l+4|0;k[l>>2]=27524;k[X>>2]=27544;B=0;wa(508,l+56|0,Y|0);ba=B;B=0;if(ba&1){ba=Rb()|0;Ka=Q;La=ba;vva(X);Qb(La|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[X>>2]=27488;B=0;va(448,Y|0);ba=B;B=0;do if(ba&1){V=Rb()|0;Ma=Q;Na=V}else{k[Y>>2]=27560;V=l+36|0;k[V>>2]=0;k[V+4>>2]=0;k[V+8>>2]=0;k[V+12>>2]=0;k[l+52>>2]=16;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;B=0;wa(509,Y|0,j|0);la=B;B=0;if(la&1){la=Rb()|0;ka=Q;Yua(j);Yua(V);Ava(Y);Ma=ka;Na=la;break}Yua(j);B=0;la=Ia(40,l|0,144350,19)|0;ka=B;B=0;f:do if(!(ka&1)?(B=0,Xa(239,la|0,0)|0,T=B,B=0,!(T&1)):0){T=Ab(20)|0;B=0;eb(502,m|0,69562,75);q=B;B=0;do if(!(q&1)){B=0;eb(502,n|0,70055,11);fa=B;B=0;if(fa&1){fa=Rb()|0;ea=Q;Yua(m);Pa=ea;Qa=fa;break}B=0;wa(510,o|0,Y|0);fa=B;B=0;if(fa&1){fa=Rb()|0;Ra=Q;Sa=fa;Ta=1}else{B=0;ua(163,T|0,m|0,n|0,1447,o|0);fa=B;B=0;if(fa&1)Ua=1;else{B=0;eb(503,T|0,1240,229);B=0;Ua=0}fa=Rb()|0;ea=Q;Yua(o);Ra=ea;Sa=fa;Ta=Ua}Yua(n);Yua(m);if(Ta){Pa=Ra;Qa=Sa}else{Va=Ra;Wa=Sa;break f}}else{fa=Rb()|0;Pa=Q;Qa=fa}while(0);zb(T|0);Va=Pa;Wa=Qa}else na=57;while(0);if((na|0)==57){la=Rb()|0;Va=Q;Wa=la}k[l>>2]=27468;k[X>>2]=27488;k[Y>>2]=27560;Yua(V);Ava(Y);vva(X);oa=Va;pa=Wa;Qb(pa|0)}while(0);Ka=Ma;La=Na;vva(X);Qb(La|0)}}while(0);mC(k[a+16>>2]|0,Z)|0;Tqa(W)}Tqa(P);Tqa(O);r=i;return}case 2:{O=k[c+56>>2]|0;g:do if((O|0)==(d|0))switch(h|0){case 5:{c=k[a+16>>2]|0;P=Qqa(12)|0;B=0;eb(507,P|0,g|0,+p[b+(k[a+12>>2]<<3)>>3]!=0.0|0);W=B;B=0;if(!(W&1)){mC(c,P)|0;break g}c=Rb()|0;W=Q;Sqa(P);oa=W;pa=c;Qb(pa|0);break}case 6:{c=k[a+16>>2]|0;W=Qqa(12)|0;B=0;eb(508,W|0,g|0,~~+p[b+(k[a+12>>2]<<3)>>3]|0);P=B;B=0;if(!(P&1)){mC(c,W)|0;break g}c=Rb()|0;P=Q;Sqa(W);oa=P;pa=c;Qb(pa|0);break}case 7:{c=k[a+16>>2]|0;P=Qqa(16)|0;B=0;Oa(58,P|0,g|0,+(+p[b+(k[a+12>>2]<<3)>>3]));W=B;B=0;if(!(W&1)){mC(c,P)|0;break g}c=Rb()|0;W=Q;Sqa(P);oa=W;pa=c;Qb(pa|0);break}default:{c=w+56|0;W=w+4|0;k[w>>2]=27524;k[c>>2]=27544;B=0;wa(508,w+56|0,W|0);P=B;B=0;if(P&1){P=Rb()|0;Ya=Q;Za=P;vva(c);Qb(Za|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[c>>2]=27488;B=0;va(448,W|0);P=B;B=0;do if(P&1){Z=Rb()|0;_a=Q;$a=Z}else{k[W>>2]=27560;Z=w+36|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[w+52>>2]=16;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;B=0;wa(509,W|0,j|0);La=B;B=0;if(La&1){La=Rb()|0;Na=Q;Yua(j);Yua(Z);Ava(W);_a=Na;$a=La;break}Yua(j);B=0;La=Ia(40,w|0,70164,47)|0;Na=B;B=0;h:do if((!(Na&1)?(B=0,Ma=Xa(242,La|0,h|0)|0,Ka=B,B=0,!(Ka&1)):0)?(B=0,Xa(239,Ma|0,0)|0,Ma=B,B=0,!(Ma&1)):0){Ma=Ab(20)|0;B=0;eb(502,x|0,69562,75);Ka=B;B=0;do if(!(Ka&1)){B=0;eb(502,y|0,70055,11);Wa=B;B=0;if(Wa&1){Wa=Rb()|0;Va=Q;Yua(x);ab=Va;bb=Wa;break}B=0;wa(510,z|0,W|0);Wa=B;B=0;if(Wa&1){Wa=Rb()|0;cb=1;db=Q;fb=Wa}else{B=0;ua(163,Ma|0,x|0,y|0,1473,z|0);Wa=B;B=0;if(Wa&1)gb=1;else{B=0;eb(503,Ma|0,1240,229);B=0;gb=0}Wa=Rb()|0;Va=Q;Yua(z);cb=gb;db=Va;fb=Wa}Yua(y);Yua(x);if(cb){ab=db;bb=fb}else{hb=db;jb=fb;break h}}else{Wa=Rb()|0;ab=Q;bb=Wa}while(0);zb(Ma|0);hb=ab;jb=bb}else na=123;while(0);if((na|0)==123){La=Rb()|0;hb=Q;jb=La}k[w>>2]=27468;k[c>>2]=27488;k[W>>2]=27560;Yua(Z);Ava(W);vva(c);oa=hb;pa=jb;Qb(pa|0)}while(0);Ya=_a;Za=$a;vva(c);Qb(Za|0)}}else{if((O+1|0)!=(d|0)){W=F+56|0;P=F+4|0;k[F>>2]=27524;k[W>>2]=27544;B=0;wa(508,F+56|0,P|0);X=B;B=0;if(X&1){X=Rb()|0;kb=Q;lb=X;vva(W);Qb(lb|0)}k[F+128>>2]=0;k[F+132>>2]=-1;k[F>>2]=27468;k[W>>2]=27488;B=0;va(448,P|0);X=B;B=0;do if(X&1){La=Rb()|0;mb=Q;nb=La}else{k[P>>2]=27560;La=F+36|0;k[La>>2]=0;k[La+4>>2]=0;k[La+8>>2]=0;k[La+12>>2]=0;k[F+52>>2]=16;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;B=0;wa(509,P|0,j|0);Na=B;B=0;if(Na&1){Na=Rb()|0;V=Q;Yua(j);Yua(La);Ava(P);mb=V;nb=Na;break}Yua(j);B=0;Na=Ia(40,F|0,70212,86)|0;V=B;B=0;i:do if((((((!(V&1)?(B=0,Ka=ya(427,g|0)|0,T=B,B=0,!(T&1)):0)?(T=Lta(Ka)|0,B=0,Wa=Ia(40,Na|0,Ka|0,T|0)|0,T=B,B=0,!(T&1)):0)?(B=0,T=Ia(40,Wa|0,70152,5)|0,Wa=B,B=0,!(Wa&1)):0)?(B=0,Wa=Xa(242,T|0,d|0)|0,T=B,B=0,!(T&1)):0)?(B=0,T=Ia(40,Wa|0,70158,5)|0,Wa=B,B=0,!(Wa&1)):0)?(B=0,Xa(239,T|0,0)|0,T=B,B=0,!(T&1)):0){T=Ab(20)|0;B=0;eb(502,G|0,69562,75);Wa=B;B=0;do if(!(Wa&1)){B=0;eb(502,H|0,70055,11);Ka=B;B=0;if(Ka&1){Ka=Rb()|0;Va=Q;Yua(G);ob=Va;pb=Ka;break}B=0;wa(510,I|0,P|0);Ka=B;B=0;if(Ka&1){Ka=Rb()|0;qb=1;rb=Q;sb=Ka}else{B=0;ua(163,T|0,G|0,H|0,1493,I|0);Ka=B;B=0;if(Ka&1)tb=1;else{B=0;eb(503,T|0,1240,229);B=0;tb=0}Ka=Rb()|0;Va=Q;Yua(I);qb=tb;rb=Va;sb=Ka}Yua(H);Yua(G);if(qb){ob=rb;pb=sb}else{ub=rb;vb=sb;break i}}else{Ka=Rb()|0;ob=Q;pb=Ka}while(0);zb(T|0);ub=ob;vb=pb}else na=193;while(0);if((na|0)==193){Na=Rb()|0;ub=Q;vb=Na}k[F>>2]=27468;k[W>>2]=27488;k[P>>2]=27560;Yua(La);Ava(P);vva(W);oa=ub;pa=vb;Qb(pa|0)}while(0);kb=mb;lb=nb;vva(W);Qb(lb|0)}P=Rqa(e>>>0>536870911?-1:e<<3)|0;X=(e|0)>0;if(X)TEa(P|0,b+((ma(d+-1|0,e)|0)<<3)|0,e<<3|0)|0;c=Qqa(24)|0;B=0;ib(287,c|0,g|0,P|0,e|0);Na=B;B=0;if(Na&1){Na=Rb()|0;V=Q;Sqa(c);oa=V;pa=Na;Qb(pa|0)}j:do if(X){Na=a+12|0;V=0;k:while(1){Z=b+((ma(k[Na>>2]|0,e)|0)+V<<3)|0;p[v>>3]=+p[Z>>3];switch(Hc[k[(k[a>>2]|0)+20>>2]&511](a)|0){case 621:{Z=Qqa(16)|0;B=0;ib(284,Z|0,g|0,v|0,736);Wa=B;B=0;if(Wa&1){wb=Z;na=141;break k}gm(c,Z);break}case 625:{Z=Qqa(16)|0;B=0;ib(285,Z|0,g|0,v|0,736);Wa=B;B=0;if(Wa&1){xb=Z;na=144;break k}gm(c,Z);break}case 623:{Z=Qqa(16)|0;B=0;ib(286,Z|0,g|0,v|0,736);Wa=B;B=0;if(Wa&1){yb=Z;na=147;break k}gm(c,Z);break}default:{na=148;break k}}V=V+1|0;if((V|0)>=(e|0))break j}if((na|0)==141){V=Rb()|0;Na=Q;Sqa(wb);oa=Na;pa=V;Qb(pa|0)}else if((na|0)==144){V=Rb()|0;Na=Q;Sqa(xb);oa=Na;pa=V;Qb(pa|0)}else if((na|0)==147){V=Rb()|0;Na=Q;Sqa(yb);oa=Na;pa=V;Qb(pa|0)}else if((na|0)==148){V=A+56|0;Na=A+4|0;k[A>>2]=27524;k[V>>2]=27544;B=0;wa(508,A+56|0,Na|0);La=B;B=0;if(La&1){La=Rb()|0;Bb=Q;Cb=La;vva(V);Qb(Cb|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[V>>2]=27488;B=0;va(448,Na|0);La=B;B=0;do if(La&1){Z=Rb()|0;Db=Q;Eb=Z}else{k[Na>>2]=27560;Z=A+36|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[A+52>>2]=16;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;B=0;wa(509,Na|0,j|0);Wa=B;B=0;if(Wa&1){Wa=Rb()|0;Ma=Q;Yua(j);Yua(Z);Ava(Na);Db=Ma;Eb=Wa;break}Yua(j);B=0;Wa=Ia(40,A|0,144350,19)|0;Ma=B;B=0;l:do if(!(Ma&1)?(B=0,Xa(239,Wa|0,0)|0,Ka=B,B=0,!(Ka&1)):0){Ka=Ab(20)|0;B=0;eb(502,C|0,69562,75);Va=B;B=0;do if(!(Va&1)){B=0;eb(502,D|0,70055,11);l=B;B=0;if(l&1){l=Rb()|0;Qa=Q;Yua(C);Fb=Qa;Gb=l;break}B=0;wa(510,E|0,Na|0);l=B;B=0;if(l&1){l=Rb()|0;Hb=Q;Ib=l;Jb=1}else{B=0;ua(163,Ka|0,C|0,D|0,1487,E|0);l=B;B=0;if(l&1)Kb=1;else{B=0;eb(503,Ka|0,1240,229);B=0;Kb=0}l=Rb()|0;Qa=Q;Yua(E);Hb=Qa;Ib=l;Jb=Kb}Yua(D);Yua(C);if(Jb){Fb=Hb;Gb=Ib}else{Lb=Hb;Mb=Ib;break l}}else{l=Rb()|0;Fb=Q;Gb=l}while(0);zb(Ka|0);Lb=Fb;Mb=Gb}else na=163;while(0);if((na|0)==163){Wa=Rb()|0;Lb=Q;Mb=Wa}k[A>>2]=27468;k[V>>2]=27488;k[Na>>2]=27560;Yua(Z);Ava(Na);vva(V);oa=Lb;pa=Mb;Qb(pa|0)}while(0);Bb=Db;Cb=Eb;vva(V);Qb(Cb|0)}}while(0);mC(k[a+16>>2]|0,c)|0;Tqa(P)}while(0);r=i;return}default:{i=J+56|0;a=J+4|0;k[J>>2]=27524;k[i>>2]=27544;B=0;wa(508,J+56|0,a|0);Cb=B;B=0;if(Cb&1){Cb=Rb()|0;Nb=Q;Ob=Cb;vva(i);Qb(Ob|0)}k[J+128>>2]=0;k[J+132>>2]=-1;k[J>>2]=27468;k[i>>2]=27488;B=0;va(448,a|0);Cb=B;B=0;do if(Cb&1){Eb=Rb()|0;Pb=Q;Sb=Eb}else{k[a>>2]=27560;Eb=J+36|0;k[Eb>>2]=0;k[Eb+4>>2]=0;k[Eb+8>>2]=0;k[Eb+12>>2]=0;k[J+52>>2]=16;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;B=0;wa(509,a|0,j|0);Db=B;B=0;if(Db&1){Db=Rb()|0;Bb=Q;Yua(j);Yua(Eb);Ava(a);Pb=Bb;Sb=Db;break}Yua(j);B=0;Db=Ia(40,J|0,70299,33)|0;Bb=B;B=0;m:do if(((!(Bb&1)?(B=0,Mb=Xa(242,Db|0,f|0)|0,Lb=B,B=0,!(Lb&1)):0)?(B=0,Lb=Ia(40,Mb|0,70333,16)|0,Mb=B,B=0,!(Mb&1)):0)?(B=0,Xa(239,Lb|0,0)|0,Lb=B,B=0,!(Lb&1)):0){Lb=Ab(20)|0;B=0;eb(502,K|0,69562,75);Mb=B;B=0;do if(!(Mb&1)){B=0;eb(502,L|0,70055,11);A=B;B=0;if(A&1){A=Rb()|0;Gb=Q;Yua(K);Tb=Gb;Ub=A;break}B=0;wa(510,M|0,a|0);A=B;B=0;if(A&1){A=Rb()|0;Vb=1;Wb=Q;Xb=A}else{B=0;ua(163,Lb|0,K|0,L|0,1495,M|0);A=B;B=0;if(A&1)Yb=1;else{B=0;eb(503,Lb|0,1240,229);B=0;Yb=0}A=Rb()|0;Gb=Q;Yua(M);Vb=Yb;Wb=Gb;Xb=A}Yua(L);Yua(K);if(Vb){Tb=Wb;Ub=Xb}else{Zb=Wb;_b=Xb;break m}}else{A=Rb()|0;Tb=Q;Ub=A}while(0);zb(Lb|0);Zb=Tb;_b=Ub}else na=219;while(0);if((na|0)==219){Db=Rb()|0;Zb=Q;_b=Db}k[J>>2]=27468;k[i>>2]=27488;k[a>>2]=27560;Yua(Eb);Ava(a);vva(i);oa=Zb;pa=_b;Qb(pa|0)}while(0);Nb=Pb;Ob=Sb;vva(i);Qb(Ob|0)}}}function Rp(a){a=a|0;return k[a+12>>2]|0}function Sp(a,b,c){a=a|0;b=b|0;c=c|0;switch(b|0){case 36:case 38:case 39:case 40:case 63:case 64:case 70:case 104:case 105:case 115:case 123:case 124:case 127:case 128:case 141:case 145:case 148:case 149:case 203:case 204:case 205:case 206:case 214:case 215:case 217:case 218:case 219:case 220:case 221:case 222:case 223:case 225:case 227:case 246:case 262:case 263:case 287:case 339:case 353:case 379:case 388:case 467:case 468:case 469:case 471:case 472:case 645:case 653:case 659:case 664:case 665:case 666:case 668:case 674:case 677:case 679:case 684:case 685:case 686:case 687:case 688:case 698:case 699:case 706:case 734:case 735:case 928:case 941:case 948:case 992:case 993:case 994:case 995:case 999:case 1e3:case 1001:break;default:return}tC(k[a+16>>2]|0,b,c);return}function Tp(a,b){a=a|0;b=b|0;var c=0;switch(b|0){case 36:case 38:case 39:case 40:case 63:case 64:case 70:case 104:case 105:case 115:case 123:case 124:case 127:case 128:case 141:case 145:case 148:case 149:case 203:case 204:case 205:case 206:case 214:case 215:case 217:case 218:case 219:case 220:case 221:case 222:case 223:case 225:case 227:case 246:case 262:case 263:case 287:case 339:case 353:case 379:case 388:case 467:case 468:case 469:case 471:case 472:case 645:case 653:case 659:case 664:case 665:case 666:case 668:case 674:case 677:case 679:case 684:case 685:case 686:case 687:case 688:case 698:case 699:case 706:case 734:case 735:case 928:case 941:case 948:case 992:case 993:case 994:case 995:case 999:case 1e3:case 1001:{c=1;break}default:c=0}return c|0}function Up(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;switch(c|0){case 36:case 38:case 39:case 40:case 63:case 64:case 70:case 104:case 105:case 115:case 123:case 124:case 127:case 128:case 141:case 145:case 148:case 149:case 203:case 204:case 205:case 206:case 214:case 215:case 217:case 218:case 219:case 220:case 221:case 222:case 223:case 225:case 227:case 246:case 262:case 263:case 287:case 339:case 353:case 379:case 388:case 467:case 468:case 469:case 471:case 472:case 645:case 653:case 659:case 664:case 665:case 666:case 668:case 674:case 677:case 679:case 684:case 685:case 686:case 687:case 688:case 698:case 699:case 706:case 734:case 735:case 928:case 941:case 948:case 992:case 993:case 994:case 995:case 999:case 1e3:case 1001:break;default:return}d=k[a+16>>2]|0;a=Qqa(12)|0;B=0;eb(508,a|0,c|0,b|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(a);Qb(b|0)}mC(d,a)|0;return}function Vp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=a+-4|0;switch(c|0){case 36:case 38:case 39:case 40:case 63:case 64:case 70:case 104:case 105:case 115:case 123:case 124:case 127:case 128:case 141:case 145:case 148:case 149:case 203:case 204:case 205:case 206:case 214:case 215:case 217:case 218:case 219:case 220:case 221:case 222:case 223:case 225:case 227:case 246:case 262:case 263:case 287:case 339:case 353:case 379:case 388:case 467:case 468:case 469:case 471:case 472:case 645:case 653:case 659:case 664:case 665:case 666:case 668:case 674:case 677:case 679:case 684:case 685:case 686:case 687:case 688:case 698:case 699:case 706:case 734:case 735:case 928:case 941:case 948:case 992:case 993:case 994:case 995:case 999:case 1e3:case 1001:break;default:return}a=k[d+16>>2]|0;d=Qqa(12)|0;B=0;eb(508,d|0,c|0,b|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(d);Qb(b|0)}mC(a,d)|0;return}function Wp(a,b,c){a=a|0;b=+b;c=c|0;var d=0;switch(c|0){case 36:case 38:case 39:case 40:case 63:case 64:case 70:case 104:case 105:case 115:case 123:case 124:case 127:case 128:case 141:case 145:case 148:case 149:case 203:case 204:case 205:case 206:case 214:case 215:case 217:case 218:case 219:case 220:case 221:case 222:case 223:case 225:case 227:case 246:case 262:case 263:case 287:case 339:case 353:case 379:case 388:case 467:case 468:case 469:case 471:case 472:case 645:case 653:case 659:case 664:case 665:case 666:case 668:case 674:case 677:case 679:case 684:case 685:case 686:case 687:case 688:case 698:case 699:case 706:case 734:case 735:case 928:case 941:case 948:case 992:case 993:case 994:case 995:case 999:case 1e3:case 1001:break;default:return}d=k[a+16>>2]|0;a=Qqa(16)|0;B=0;Oa(58,a|0,c|0,+b);c=B;B=0;if(c&1){c=Rb()|0;Sqa(a);Qb(c|0)}mC(d,a)|0;return}function Xp(a,b,c){a=a|0;b=+b;c=c|0;var d=0;d=a+-4|0;switch(c|0){case 36:case 38:case 39:case 40:case 63:case 64:case 70:case 104:case 105:case 115:case 123:case 124:case 127:case 128:case 141:case 145:case 148:case 149:case 203:case 204:case 205:case 206:case 214:case 215:case 217:case 218:case 219:case 220:case 221:case 222:case 223:case 225:case 227:case 246:case 262:case 263:case 287:case 339:case 353:case 379:case 388:case 467:case 468:case 469:case 471:case 472:case 645:case 653:case 659:case 664:case 665:case 666:case 668:case 674:case 677:case 679:case 684:case 685:case 686:case 687:case 688:case 698:case 699:case 706:case 734:case 735:case 928:case 941:case 948:case 992:case 993:case 994:case 995:case 999:case 1e3:case 1001:break;default:return}a=k[d+16>>2]|0;d=Qqa(16)|0;B=0;Oa(58,d|0,c|0,+b);c=B;B=0;if(c&1){c=Rb()|0;Sqa(d);Qb(c|0)}mC(a,d)|0;return}function Yp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;switch(c|0){case 36:case 38:case 39:case 40:case 63:case 64:case 70:case 104:case 105:case 115:case 123:case 124:case 127:case 128:case 141:case 145:case 148:case 149:case 203:case 204:case 205:case 206:case 214:case 215:case 217:case 218:case 219:case 220:case 221:case 222:case 223:case 225:case 227:case 246:case 262:case 263:case 287:case 339:case 353:case 379:case 388:case 467:case 468:case 469:case 471:case 472:case 645:case 653:case 659:case 664:case 665:case 666:case 668:case 674:case 677:case 679:case 684:case 685:case 686:case 687:case 688:case 698:case 699:case 706:case 734:case 735:case 928:case 941:case 948:case 992:case 993:case 994:case 995:case 999:case 1e3:case 1001:break;default:return}d=k[a+16>>2]|0;a=Qqa(12)|0;B=0;eb(507,a|0,c|0,b|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(a);Qb(b|0)}mC(d,a)|0;return}function Zp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=a+-4|0;switch(c|0){case 36:case 38:case 39:case 40:case 63:case 64:case 70:case 104:case 105:case 115:case 123:case 124:case 127:case 128:case 141:case 145:case 148:case 149:case 203:case 204:case 205:case 206:case 214:case 215:case 217:case 218:case 219:case 220:case 221:case 222:case 223:case 225:case 227:case 246:case 262:case 263:case 287:case 339:case 353:case 379:case 388:case 467:case 468:case 469:case 471:case 472:case 645:case 653:case 659:case 664:case 665:case 666:case 668:case 674:case 677:case 679:case 684:case 685:case 686:case 687:case 688:case 698:case 699:case 706:case 734:case 735:case 928:case 941:case 948:case 992:case 993:case 994:case 995:case 999:case 1e3:case 1001:break;default:return}a=k[d+16>>2]|0;d=Qqa(12)|0;B=0;eb(507,d|0,c|0,b|0);b=B;B=0;if(b&1){b=Rb()|0;Sqa(d);Qb(b|0)}mC(a,d)|0;return}function _p(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;b=r;r=r+192|0;c=b+180|0;d=b+176|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;cO(k[a+36>>2]|0,d,942);i=k[d>>2]|0;if((i&-2|0)==924){j=+pC(k[a+16>>2]|0,928)<=0.0;r=b;return j|0}switch(i|0){case 926:{j=!(+pC(k[a+16>>2]|0,928)>0.0);r=b;return j|0}case 921:case 922:case 923:case 927:{j=!(+rC(k[a+16>>2]|0,928)>0.0);r=b;return j|0}default:{j=e+56|0;b=e+4|0;k[e>>2]=27524;k[j>>2]=27544;B=0;wa(508,e+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;l=Q;m=a;vva(j);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[j>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){i=Rb()|0;n=Q;o=i}else{k[b>>2]=27560;i=e+36|0;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;k[i+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);d=B;B=0;if(d&1){d=Rb()|0;p=Q;Yua(c);Yua(i);Ava(b);n=p;o=d;break}Yua(c);B=0;d=Ia(40,e|0,70350,35)|0;p=B;B=0;if(!(p&1)?(B=0,Xa(239,d|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,f|0,69562,75);p=B;B=0;do if(!(p&1)){B=0;eb(502,g|0,70386,10);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(f);t=s;u=q;break}B=0;wa(510,h|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;v=q;w=Q;x=1}else{B=0;ua(163,d|0,f|0,g|0,1550,h|0);q=B;B=0;if(q&1)y=1;else{B=0;eb(503,d|0,1240,229);B=0;y=0}q=Rb()|0;s=Q;Yua(h);v=q;w=s;x=y}Yua(g);Yua(f);if(x){t=w;u=v}else{z=w;A=v;k[e>>2]=27468;k[j>>2]=27488;k[b>>2]=27560;Yua(i);Ava(b);vva(j);Qb(A|0)}}else{s=Rb()|0;t=Q;u=s}while(0);zb(d|0);z=t;A=u;k[e>>2]=27468;k[j>>2]=27488;k[b>>2]=27560;Yua(i);Ava(b);vva(j);Qb(A|0)}p=Rb()|0;z=Q;A=p;k[e>>2]=27468;k[j>>2]=27488;k[b>>2]=27560;Yua(i);Ava(b);vva(j);Qb(A|0)}while(0);l=n;m=o;vva(j);Qb(m|0)}}return 0}function $p(a){a=a|0;return +rC(k[a+16>>2]|0,206)<0.0|0}function aq(a){a=a|0;return +pC(k[a+16>>2]|0,207)>0.0|0}function bq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0.0,o=0.0,q=0.0,s=0.0,t=0.0;b=r;r=r+32|0;c=b+16|0;d=b+8|0;e=b;f=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;g=f>>>0>536870911?-1:f<<3;h=Rqa(g)|0;i=Rqa(g)|0;g=a+36|0;dO(k[g>>2]|0,c,42);dO(k[g>>2]|0,d,43);dO(k[g>>2]|0,e,41);xp(a,h,64);if((f|0)<=0){j=k[a>>2]|0;l=j+48|0;m=k[l>>2]|0;rd[m&511](a,40,i,738);Tqa(h);Tqa(i);r=b;return}n=+p[d>>3];o=+p[c>>3];q=+p[e>>3];s=o-n;e=0;do{t=+p[h+(e<<3)>>3];do if(!(t>n))if(t<o){p[i+(e<<3)>>3]=q;break}else{p[i+(e<<3)>>3]=(t-n)*q/s;break}else p[i+(e<<3)>>3]=0.0;while(0);e=e+1|0}while((e|0)!=(f|0));j=k[a>>2]|0;l=j+48|0;m=k[l>>2]|0;rd[m&511](a,40,i,738);Tqa(h);Tqa(i);r=b;return}function cq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0,H=0,I=0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,ca=0.0,da=0.0,ea=0.0,fa=0.0,ga=0.0,ha=0.0,ia=0.0;b=r;r=r+96|0;c=b+88|0;d=b+80|0;e=b+72|0;f=b+64|0;g=b+56|0;h=b+48|0;i=b+40|0;j=b+32|0;l=b+24|0;m=b+16|0;n=b+8|0;o=b;q=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;s=Rqa(q>>>0>536870911?-1:q<<3)|0;t=a+36|0;dO(k[t>>2]|0,c,47);dO(k[t>>2]|0,d,48);dO(k[t>>2]|0,e,49);dO(k[t>>2]|0,f,50);dO(k[t>>2]|0,g,51);dO(k[t>>2]|0,h,52);dO(k[t>>2]|0,i,53);dO(k[t>>2]|0,j,54);dO(k[t>>2]|0,l,55);dO(k[t>>2]|0,m,56);dO(k[t>>2]|0,n,57);dO(k[t>>2]|0,o,58);t=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;u=t*3|0;v=Rqa(u>>>0>536870911?-1:u<<3)|0;Ko(v,k[a+24>>2]|0,t,0);w=+p[f>>3];x=+p[g>>3];y=(+p[h>>3]-x)*.5;z=y*y;A=w*w;B=z-A;C=+$(+(+aa(+B)));D=(B==-G?G:C)/y;C=D*D;E=1.0-C;if((q|0)<=0){F=k[a>>2]|0;H=F+48|0;I=k[H>>2]|0;rd[I&511](a,38,s,738);Tqa(v);Tqa(s);r=b;return}J=(+ka(+((D+1.0)/(1.0-D)))*.5-D)*(E/+ba(+D,3.0));K=+p[i>>3];L=+p[j>>3];M=+p[l>>3];N=y+x+M;x=-N;O=N*N;N=-z-A+O;P=A*O;Q=A*(y*-8.0)*x;R=A*2.0;S=R-z*2.0;T=+aa(+((y-w)*(w+y)));U=T*1.4142135623730951;V=B+O;W=+ba(+y,4.0);y=+ba(+w,4.0);w=+ba(+x,4.0);X=E/(D*C);C=+p[e>>3];D=+p[d>>3]+-1.0;E=D/(J*D+1.0);D=C*x;x=+p[c>>3];J=+p[m>>3];Y=+p[n>>3]*J+ +p[o>>3]*(M-J);o=0;do{n=o*3|0;J=+p[v+(n<<3)>>3]-K;M=+p[v+(n+1<<3)>>3]-L;Z=J*J;J=M*M;M=J+(Z+N);_=+aa(+((z*(Z-A+J)+P)*4.0+M*M));ca=_+(J+(Z+V));da=+aa(+ca);ea=Z+J;fa=J+(Z+O);ga=ea*O;ha=da-U;ia=Q*(S+U*da)*(z*(ea*(_+(ea*2.0-R))+(ga-w))+(fa*fa*(_+fa)+(ea*W+ea*y)+A*(w-ga-ea*(_+(Z*2.0+J*2.0)))))/((U+da)*(ha*ha*(_*T*+ba(+ca,3.5))));ca=B/(z+(_+M)*.5);M=+$(+(+aa(+ca)));_=ca==-G?G:M;M=Y+x*(C-E*(D*ia+C*(X*(+ka(+((_+1.0)/(1.0-_)))*.5-_))));p[s+(o<<3)>>3]=M;o=o+1|0}while((o|0)!=(q|0));F=k[a>>2]|0;H=F+48|0;I=k[H>>2]|0;rd[I&511](a,38,s,738);Tqa(v);Tqa(s);r=b;return}function dq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;f=r;r=r+192|0;g=f+176|0;h=f+40|0;j=f+24|0;m=f+12|0;n=f;switch(d|0){case 1:{o=Qqa(36)|0;B=0;va(486,o|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Sqa(o);s=p;t=q;Qb(s|0)}k[a+16>>2]=o;k[a+20>>2]=0;o=(k[b>>2]|0)+4|0;k[b>>2]=o;q=a+8|0;p=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[q>>0]=p;i[q+1>>0]=p>>8;i[q+2>>0]=p>>16;i[q+3>>0]=p>>24;p=(k[b>>2]|0)+4|0;k[b>>2]=p;q=a+12|0;o=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;i[q>>0]=o;i[q+1>>0]=o>>8;i[q+2>>0]=o>>16;i[q+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;q=a+44|0;p=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[q>>0]=p;i[q+1>>0]=p>>8;i[q+2>>0]=p>>16;i[q+3>>0]=p>>24;p=k[b>>2]|0;q=p+4|0;k[b>>2]=q;o=i[q>>0]|0;k[b>>2]=p+5;if(o&1){u=a+16|0;v=k[u>>2]|0;lh(v,b,c,d);r=f;return}o=Rqa(e>>>0>1073741823?-1:e<<2)|0;k[a+40>>2]=o;p=k[b>>2]|0;q=e<<2;TEa(o|0,p|0,q|0)|0;k[b>>2]=p+q;u=a+16|0;v=k[u>>2]|0;lh(v,b,c,d);r=f;return}case 0:{q=k[b>>2]|0;i[q>>0]=56;i[q+1>>0]=2;i[q+2>>0]=0;i[q+3>>0]=0;q=(k[b>>2]|0)+4|0;k[b>>2]=q;p=a+8|0;o=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;i[q>>0]=o;i[q+1>>0]=o>>8;i[q+2>>0]=o>>16;i[q+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;q=a+12|0;p=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24;i[o>>0]=p;i[o+1>>0]=p>>8;i[o+2>>0]=p>>16;i[o+3>>0]=p>>24;p=(k[b>>2]|0)+4|0;k[b>>2]=p;o=a+44|0;q=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[p>>0]=q;i[p+1>>0]=q>>8;i[p+2>>0]=q>>16;i[p+3>>0]=q>>24;q=(k[b>>2]|0)+4|0;k[b>>2]=q;p=a+40|0;o=(k[p>>2]|0)==0;i[q>>0]=o&1;q=(k[b>>2]|0)+1|0;k[b>>2]=q;if(o){u=a+16|0;v=k[u>>2]|0;lh(v,b,c,d);r=f;return}o=e<<2;TEa(q|0,k[p>>2]|0,o|0)|0;k[b>>2]=(k[b>>2]|0)+o;u=a+16|0;v=k[u>>2]|0;lh(v,b,c,d);r=f;return}case 2:{o=(k[a+40>>2]|0)==0;p=(k[c>>2]|0)+17|0;k[c>>2]=p;if(o){u=a+16|0;v=k[u>>2]|0;lh(v,b,c,d);r=f;return}k[c>>2]=p+(e<<2);u=a+16|0;v=k[u>>2]|0;lh(v,b,c,d);r=f;return}default:{f=h+56|0;d=h+4|0;k[h>>2]=27524;k[f>>2]=27544;B=0;wa(508,h+56|0,d|0);c=B;B=0;if(c&1){c=Rb()|0;w=Q;x=c;vva(f);Qb(x|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[f>>2]=27488;B=0;va(448,d|0);c=B;B=0;do if(c&1){b=Rb()|0;y=Q;z=b}else{k[d>>2]=27560;b=h+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[h+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,d|0,g|0);v=B;B=0;if(v&1){v=Rb()|0;u=Q;Yua(g);Yua(b);Ava(d);y=u;z=v;break}Yua(g);B=0;v=Ia(40,h|0,143951,43)|0;u=B;B=0;a:do if(!(u&1)?(B=0,Xa(239,v|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,j|0,69562,75);e=B;B=0;do if(!(e&1)){B=0;eb(502,m|0,70397,15);p=B;B=0;if(p&1){p=Rb()|0;o=Q;Yua(j);A=p;C=o;break}B=0;wa(510,n|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;D=o;E=Q;F=1}else{B=0;ua(163,a|0,j|0,m|0,1730,n|0);o=B;B=0;if(o&1)G=1;else{B=0;eb(503,a|0,1240,229);B=0;G=0}o=Rb()|0;p=Q;Yua(n);D=o;E=p;F=G}Yua(m);Yua(j);if(F){A=D;C=E}else{H=D;I=E;break a}}else{p=Rb()|0;A=p;C=Q}while(0);zb(a|0);H=A;I=C}else J=19;while(0);if((J|0)==19){v=Rb()|0;H=v;I=Q}k[h>>2]=27468;k[f>>2]=27488;k[d>>2]=27560;Yua(b);Ava(d);vva(f);s=H;t=I;Qb(s|0)}while(0);w=y;x=z;vva(f);Qb(x|0)}}}function eq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0.0,P=0.0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;c=r;r=r+208|0;d=c+188|0;e=c+184|0;f=c+48|0;g=c+32|0;h=c+20|0;i=c+8|0;j=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;l=j>>>0>536870911?-1:j<<3;m=Rqa(l)|0;n=Rqa(l)|0;o=Rqa(l)|0;q=Rqa(l)|0;s=Rqa(l)|0;t=Rqa(l)|0;l=a+36|0;cO(k[l>>2]|0,e,942);dO(k[l>>2]|0,c,67);xp(a,n,353);xp(a,o,339);xp(a,q,64);xp(a,s,63);xp(a,t,999);xp(a,m,928);l=a+32|0;u=+WJ(k[l>>2]|0,266);v=+WJ(k[l>>2]|0,265)/u;l=(j|0)>0;if(!l){w=k[a>>2]|0;x=w+48|0;y=k[x>>2]|0;rd[y&511](a,928,m,738);z=k[a>>2]|0;A=z+48|0;C=k[A>>2]|0;rd[C&511](a,339,o,738);D=k[a>>2]|0;E=D+48|0;F=k[E>>2]|0;rd[F&511](a,64,q,738);Tqa(m);Tqa(s);Tqa(q);Tqa(o);Tqa(t);Tqa(n);r=c;return}G=a+24|0;u=-v;H=1.0-v;I=0;a:while(1){J=k[e>>2]|0;do if((J|0)==926){K=b+((Co(k[(k[G>>2]|0)+(I<<2)>>2]|0)|0)<<3)|0;if(!(+p[K>>3]<10.0)){L=k[e>>2]|0;M=10;break}K=b+((Co(k[(k[G>>2]|0)+(I<<2)>>2]|0)|0)<<3)|0;N=+p[K>>3];p[m+(I<<3)>>3]=N;if(N>=0.0)p[q+(I<<3)>>3]=+p[s+(I<<3)>>3]}else{L=J;M=10}while(0);b:do if((M|0)==10){M=0;if((L|0)==927?(J=q+(I<<3)|0,N=+p[s+(I<<3)>>3],+p[J>>3]<N):0){p[J>>3]=N;break}if(+p[m+(I<<3)>>3]<=0.0){J=q+(I<<3)|0;N=+p[s+(I<<3)>>3];if(!(+p[J>>3]<=N))break;p[J>>3]=N;p[o+(I<<3)>>3]=N+ +p[n+(I<<3)>>3];break}J=n+(I<<3)|0;N=+p[J>>3];K=t+(I<<3)|0;O=+p[K>>3];P=N*u+O;if(P>+p[s+(I<<3)>>3]){switch(L|0){case 922:case 924:case 925:{p[o+(I<<3)>>3]=H*N+O;p[q+(I<<3)>>3]=P;break b;break}case 923:{M=19;break}default:R=L}do if((M|0)==19){M=0;S=b+((Co(k[(k[G>>2]|0)+(I<<2)>>2]|0)|0)<<3)|0;if(+p[S>>3]<0.0){P=+p[J>>3];O=+p[K>>3];p[o+(I<<3)>>3]=H*P+O;p[q+(I<<3)>>3]=P*u+O;break b}else{R=k[e>>2]|0;break}}while(0);switch(R|0){case 923:case 926:case 927:break;default:break a}}}while(0);I=I+1|0;if((I|0)>=(j|0)){M=3;break}}if((M|0)==3){if(!l){w=k[a>>2]|0;x=w+48|0;y=k[x>>2]|0;rd[y&511](a,928,m,738);z=k[a>>2]|0;A=z+48|0;C=k[A>>2]|0;rd[C&511](a,339,o,738);D=k[a>>2]|0;E=D+48|0;F=k[E>>2]|0;rd[F&511](a,64,q,738);Tqa(m);Tqa(s);Tqa(q);Tqa(o);Tqa(t);Tqa(n);r=c;return}l=a+24|0;M=0;do{c:do switch(k[e>>2]|0){case 923:{I=m+(M<<3)|0;R=n+(M<<3)|0;if(!(+p[I>>3]<0.0)){G=t+(M<<3)|0;L=s+(M<<3)|0;if(!(+p[G>>3]-v*+p[R>>3]<=+p[L>>3])?(K=b+((Co(k[(k[l>>2]|0)+(M<<2)>>2]|0)|0)<<3)|0,!(+p[K>>3]<0.0)):0)break c;else{T=L;U=G}}else{T=s+(M<<3)|0;U=t+(M<<3)|0}p[I>>3]=+p[R>>3]+(+p[T>>3]-+p[U>>3])/v;break}case 926:break;default:p[m+(M<<3)>>3]=+p[n+(M<<3)>>3]+(+p[s+(M<<3)>>3]-+p[t+(M<<3)>>3])/v}while(0);M=M+1|0}while((M|0)!=(j|0));w=k[a>>2]|0;x=w+48|0;y=k[x>>2]|0;rd[y&511](a,928,m,738);z=k[a>>2]|0;A=z+48|0;C=k[A>>2]|0;rd[C&511](a,339,o,738);D=k[a>>2]|0;E=D+48|0;F=k[E>>2]|0;rd[F&511](a,64,q,738);Tqa(m);Tqa(s);Tqa(q);Tqa(o);Tqa(t);Tqa(n);r=c;return}c=f+56|0;n=f+4|0;k[f>>2]=27524;k[c>>2]=27544;B=0;wa(508,f+56|0,n|0);t=B;B=0;if(t&1){t=Rb()|0;V=Q;W=t;vva(c);Qb(W|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[c>>2]=27488;B=0;va(448,n|0);t=B;B=0;do if(t&1){o=Rb()|0;X=Q;Y=o}else{k[n>>2]=27560;o=f+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,n|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(o);Ava(n);X=s;Y=q;break}Yua(d);B=0;q=Ia(40,f|0,70413,81)|0;s=B;B=0;if(!(s&1)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,g|0,69562,75);s=B;B=0;do if(!(s&1)){B=0;eb(502,h|0,70495,20);m=B;B=0;if(m&1){m=Rb()|0;a=Q;Yua(g);Z=a;_=m;break}B=0;wa(510,i|0,n|0);m=B;B=0;if(m&1){m=Rb()|0;$=m;aa=Q;ba=1}else{B=0;ua(163,q|0,g|0,h|0,1797,i|0);m=B;B=0;if(m&1)ca=1;else{B=0;eb(503,q|0,1240,229);B=0;ca=0}m=Rb()|0;a=Q;Yua(i);$=m;aa=a;ba=ca}Yua(h);Yua(g);if(ba){Z=aa;_=$}else{da=aa;ea=$;k[f>>2]=27468;k[c>>2]=27488;k[n>>2]=27560;Yua(o);Ava(n);vva(c);Qb(ea|0)}}else{a=Rb()|0;Z=Q;_=a}while(0);zb(q|0);da=Z;ea=_;k[f>>2]=27468;k[c>>2]=27488;k[n>>2]=27560;Yua(o);Ava(n);vva(c);Qb(ea|0)}s=Rb()|0;da=Q;ea=s;k[f>>2]=27468;k[c>>2]=27488;k[n>>2]=27560;Yua(o);Ava(n);vva(c);Qb(ea|0)}while(0);V=X;W=Y;vva(c);Qb(W|0)}function fq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0.0,q=0.0,s=0.0,t=0.0,u=0.0;b=r;r=r+32|0;c=b+16|0;d=b+8|0;e=b;f=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;g=f>>>0>536870911?-1:f<<3;h=Rqa(g)|0;i=Rqa(g)|0;j=Rqa(g)|0;g=a+36|0;dO(k[g>>2]|0,c,44);dO(k[g>>2]|0,d,45);dO(k[g>>2]|0,e,46);xp(a,h,64);xp(a,i,63);if((f|0)<=0){l=k[a>>2]|0;m=l+48|0;n=k[m>>2]|0;rd[n&511](a,40,j,738);Tqa(h);Tqa(i);Tqa(j);r=b;return}o=+p[e>>3];q=+p[c>>3];s=+p[d>>3];d=0;do{t=+p[h+(d<<3)>>3];if(t>o)u=0.0;else u=(o-t)*(q*+ssa((t-+p[i+(d<<3)>>3])/s));p[j+(d<<3)>>3]=u;d=d+1|0}while((d|0)!=(f|0));l=k[a>>2]|0;m=l+48|0;n=k[m>>2]|0;rd[n&511](a,40,j,738);Tqa(h);Tqa(i);Tqa(j);r=b;return}function gq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=Qqa(68)|0;d=k[a+20>>2]|0;B=0;e=ya(k[(k[a>>2]|0)+164>>2]|0,a|0)|0;f=B;B=0;if(!(f&1)?(B=0,ua(165,c|0,d|0,e|0,k[a+36>>2]|0,b|0),b=B,B=0,!(b&1)):0)return c|0;b=Rb()|0;Sqa(c);Qb(b|0);return 0}function hq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=Qqa(68)|0;B=0;ua(165,d|0,k[a+20>>2]|0,b|0,k[a+36>>2]|0,c|0);c=B;B=0;if(c&1){c=Rb()|0;Sqa(d);Qb(c|0)}else return d|0;return 0}function iq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=Qqa(24)|0;d=k[a+20>>2]|0;B=0;e=ya(k[(k[a>>2]|0)+164>>2]|0,a|0)|0;f=B;B=0;if(!(f&1)?(B=0,ua(166,c|0,d|0,e|0,k[a+36>>2]|0,b|0),b=B,B=0,!(b&1)):0)return c|0;b=Rb()|0;Sqa(c);Qb(b|0);return 0}function jq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0,M=0,N=0.0,O=0.0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;f=r;r=r+224|0;g=f+208|0;h=f+24|0;i=f+16|0;j=f+8|0;l=f;m=f+72|0;n=f+56|0;o=f+44|0;q=f+32|0;s=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;t=s>>>0>536870911?-1:s<<3;u=Rqa(t)|0;v=Rqa(t)|0;w=Rqa(t)|0;x=s*12|0;y=x>>>0>536870911?-1:x<<3;x=Rqa(y)|0;z=Rqa(y)|0;y=Rqa(t)|0;WEa(y|0,0,s<<3|0)|0;A=Rqa(t)|0;C=Rqa(t)|0;D=Rqa(t)|0;E=Rqa(t)|0;t=a+32|0;F=+WJ(k[t>>2]|0,266);G=+WJ(k[t>>2]|0,265);H=+WJ(k[t>>2]|0,449);I=+WJ(k[t>>2]|0,452);J=+WJ(k[t>>2]|0,453);t=a+16|0;K=oC(k[t>>2]|0,460)|0;L=oC(k[t>>2]|0,448)|0;M=a+36|0;dO(k[M>>2]|0,j,767);dO(k[M>>2]|0,l,67);N=+p[l>>3];O=N*+_(+(+p[j>>3]/N));P=Hc[k[(k[a>>2]|0)+304>>2]&511](a)|0;R=(s|0)>0;if(R){S=0;do{N=+(S|0)/12.0;T=0;do{Fc[k[(k[P>>2]|0)+28>>2]&1023](P,T);U=(T*12|0)+S|0;V=x+(U<<3)|0;md[k[(k[K>>2]|0)+52>>2]&31](K,V,P,O+N*+p[l>>3]);p[V>>3]=+p[V>>3]+-273.15;V=z+(U<<3)|0;md[k[(k[L>>2]|0)+52>>2]&31](L,V,P,O+N*+p[l>>3]);p[V>>3]=+p[V>>3]*+p[l>>3];T=T+1|0}while((T|0)!=(s|0));S=S+1|0}while((S|0)!=12)}if(e){eO(k[M>>2]|0,h,455,+p[j>>3]);eO(k[M>>2]|0,i,456,+p[j>>3])}else{p[h>>3]=0.0;p[i>>3]=0.0}xp(a,A,353);xp(a,C,339);xp(a,D,450);xp(a,E,451);if(R){R=0;do{j=R*12|0;M=x+(j<<3)|0;O=+WY(M,z+(j<<3)|0,b,c,v+(R<<3)|0,w+(R<<3)|0,d,+p[l>>3],+p[A+(R<<3)>>3],+p[C+(R<<3)>>3],H,+p[E+(R<<3)>>3],+p[D+(R<<3)>>3],I,J,+p[h>>3],+p[i>>3],F,G);p[u+(R<<3)>>3]=O;e=y+(R<<3)|0;p[e>>3]=+p[e>>3]+(+p[M>>3]+273.15)*.08333333333333333+(+p[x+((j|1)<<3)>>3]+273.15)*.08333333333333333+(+p[x+((j|2)<<3)>>3]+273.15)*.08333333333333333+(+p[x+((j|3)<<3)>>3]+273.15)*.08333333333333333+(+p[x+(j+4<<3)>>3]+273.15)*.08333333333333333+(+p[x+(j+5<<3)>>3]+273.15)*.08333333333333333+(+p[x+(j+6<<3)>>3]+273.15)*.08333333333333333+(+p[x+(j+7<<3)>>3]+273.15)*.08333333333333333+(+p[x+(j+8<<3)>>3]+273.15)*.08333333333333333+(+p[x+(j+9<<3)>>3]+273.15)*.08333333333333333+(+p[x+(j+10<<3)>>3]+273.15)*.08333333333333333+(+p[x+(j+11<<3)>>3]+273.15)*.08333333333333333;R=R+1|0}while((R|0)!=(s|0))}a:do switch(Hc[k[(k[a>>2]|0)+20>>2]&511](a)|0){case 621:{s=k[t>>2]|0;R=Qqa(16)|0;B=0;ib(284,R|0,668,y|0,738);i=B;B=0;if(i&1){i=Rb()|0;h=Q;Sqa(R);W=h;X=i;Qb(X|0)}mC(s,R)|0;R=k[t>>2]|0;s=Qqa(16)|0;B=0;ib(284,s|0,388,u|0,738);i=B;B=0;if(i&1){i=Rb()|0;h=Q;Sqa(s);W=h;X=i;Qb(X|0)}mC(R,s)|0;s=k[t>>2]|0;R=Qqa(16)|0;B=0;ib(284,R|0,467,w|0,738);i=B;B=0;if(i&1){i=Rb()|0;h=Q;Sqa(R);W=h;X=i;Qb(X|0)}mC(s,R)|0;R=k[t>>2]|0;s=Qqa(16)|0;B=0;ib(284,s|0,471,v|0,738);i=B;B=0;if(!(i&1)){mC(R,s)|0;break a}R=Rb()|0;i=Q;Sqa(s);W=i;X=R;Qb(X|0);break}case 625:{do if(Hc[k[(k[a>>2]|0)+252>>2]&511](a)|0){xp(a,C,666);p[y>>3]=+p[C>>3];p[y+8>>3]=+p[C+8>>3];p[y+16>>3]=+p[C+16>>3];R=k[t>>2]|0;i=Qqa(16)|0;B=0;ib(285,i|0,666,y|0,738);s=B;B=0;if(!(s&1)){mC(R,i)|0;break}R=Rb()|0;s=Q;Sqa(i);W=s;X=R;Qb(X|0)}while(0);R=k[t>>2]|0;s=Qqa(16)|0;B=0;ib(285,s|0,388,u|0,738);i=B;B=0;if(i&1){i=Rb()|0;h=Q;Sqa(s);W=h;X=i;Qb(X|0)}mC(R,s)|0;s=k[t>>2]|0;R=Qqa(16)|0;B=0;ib(285,R|0,668,y|0,738);i=B;B=0;if(!(i&1)){mC(s,R)|0;nd[k[(k[a>>2]|0)+220>>2]&1023](a,668,-1);nd[k[(k[a>>2]|0)+220>>2]&1023](a,388,-1);break a}s=Rb()|0;i=Q;Sqa(R);W=i;X=s;Qb(X|0);break}case 623:{do if(Hc[k[(k[a>>2]|0)+252>>2]&511](a)|0){xp(a,C,666);p[y>>3]=+p[C>>3];p[y+8>>3]=+p[C+8>>3];p[y+16>>3]=+p[C+16>>3];s=k[t>>2]|0;i=Qqa(16)|0;B=0;ib(286,i|0,666,y|0,738);R=B;B=0;if(!(R&1)){mC(s,i)|0;break}s=Rb()|0;R=Q;Sqa(i);W=R;X=s;Qb(X|0)}while(0);s=k[t>>2]|0;R=Qqa(16)|0;B=0;ib(286,R|0,388,u|0,738);i=B;B=0;if(i&1){i=Rb()|0;h=Q;Sqa(R);W=h;X=i;Qb(X|0)}mC(s,R)|0;R=k[t>>2]|0;s=Qqa(16)|0;B=0;ib(286,s|0,668,y|0,738);i=B;B=0;if(!(i&1)){mC(R,s)|0;nd[k[(k[a>>2]|0)+220>>2]&1023](a,668,-1);nd[k[(k[a>>2]|0)+220>>2]&1023](a,388,-1);break a}R=Rb()|0;i=Q;Sqa(s);W=i;X=R;Qb(X|0);break}default:{R=m+56|0;i=m+4|0;k[m>>2]=27524;k[R>>2]=27544;B=0;wa(508,m+56|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;Y=Q;Z=s;vva(R);Qb(Z|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[R>>2]=27488;B=0;va(448,i|0);s=B;B=0;do if(s&1){h=Rb()|0;$=Q;aa=h}else{k[i>>2]=27560;h=m+36|0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[m+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,i|0,g|0);l=B;B=0;if(l&1){l=Rb()|0;c=Q;Yua(g);Yua(h);Ava(i);$=c;aa=l;break}Yua(g);B=0;l=Ia(40,m|0,144350,19)|0;c=B;B=0;b:do if(!(c&1)?(B=0,Xa(239,l|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,n|0,69562,75);j=B;B=0;do if(!(j&1)){B=0;eb(502,o|0,70516,17);M=B;B=0;if(M&1){M=Rb()|0;e=Q;Yua(n);ba=e;ca=M;break}B=0;wa(510,q|0,i|0);M=B;B=0;if(M&1){M=Rb()|0;da=Q;ea=M;fa=1}else{B=0;ua(163,b|0,n|0,o|0,2003,q|0);M=B;B=0;if(M&1)ga=1;else{B=0;eb(503,b|0,1240,229);B=0;ga=0}M=Rb()|0;e=Q;Yua(q);da=e;ea=M;fa=ga}Yua(o);Yua(n);if(fa){ba=da;ca=ea}else{ha=da;ia=ea;break b}}else{M=Rb()|0;ba=Q;ca=M}while(0);zb(b|0);ha=ba;ia=ca}else ja=53;while(0);if((ja|0)==53){l=Rb()|0;ha=Q;ia=l}k[m>>2]=27468;k[R>>2]=27488;k[i>>2]=27560;Yua(h);Ava(i);vva(R);W=ha;X=ia;Qb(X|0)}while(0);Y=$;Z=aa;vva(R);Qb(Z|0)}}while(0);if(!P){Tqa(x);Tqa(z);Tqa(u);Tqa(v);Tqa(w);Tqa(y);Tqa(A);Tqa(C);Tqa(E);Tqa(D);r=f;return}Ec[k[(k[P>>2]|0)+4>>2]&1023](P);Tqa(x);Tqa(z);Tqa(u);Tqa(v);Tqa(w);Tqa(y);Tqa(A);Tqa(C);Tqa(E);Tqa(D);r=f;return}function kq(a,b){a=a|0;b=+b;return +(+UJ(k[a+32>>2]|0,b))}function lq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;f=r;r=r+368|0;g=f+356|0;h=f+352|0;i=f+216|0;j=f+200|0;l=f+48|0;m=f+36|0;n=f+64|0;o=f+24|0;p=f+12|0;q=f;a:do switch(e|0){case 701:{mq(a);break}case 714:{nq(a);break}case 713:case 712:case 711:case 710:case 709:case 708:{Ec[k[(k[a>>2]|0)+88>>2]&1023](a);break}case 264:case 730:case 729:case 728:case 727:case 726:case 725:{Vo(a);break}case 722:case 721:case 720:case 719:case 718:case 717:case 716:{Ec[k[(k[a>>2]|0)+80>>2]&1023](a);break}case 706:{Ec[k[(k[a>>2]|0)+84>>2]&1023](a);break}case 723:{Zo(a);break}case 245:{To(a);break}case 246:{Ec[k[(k[a>>2]|0)+452>>2]&1023](a);break}case 248:case 259:case 258:{Ec[k[(k[a>>2]|0)+444>>2]&1023](a);Ec[k[(k[a>>2]|0)+448>>2]&1023](a);cO(k[a+36>>2]|0,h,247);switch(k[h>>2]|0){case 252:case 253:{s=42;break a;break}case 250:{Ec[k[(k[a>>2]|0)+56>>2]&1023](a);s=42;break a;break}case 251:{Ec[k[(k[a>>2]|0)+60>>2]&1023](a);s=42;break a;break}default:{t=i+56|0;u=i+4|0;k[i>>2]=27524;k[t>>2]=27544;B=0;wa(508,i+56|0,u|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;x=v;vva(t);Qb(x|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[t>>2]=27488;B=0;va(448,u|0);v=B;B=0;do if(v&1){y=Rb()|0;z=Q;A=y}else{k[u>>2]=27560;y=i+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[i+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,u|0,g|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(g);Yua(y);Ava(u);z=D;A=C;break}Yua(g);B=0;C=Ia(40,i|0,136043,12)|0;D=B;B=0;b:do if((((!(D&1)?(B=0,E=ya(427,k[h>>2]|0)|0,F=B,B=0,!(F&1)):0)?(F=Lta(E)|0,B=0,G=Ia(40,C|0,E|0,F|0)|0,F=B,B=0,!(F&1)):0)?(B=0,F=Ia(40,G|0,146481,18)|0,G=B,B=0,!(G&1)):0)?(B=0,Xa(239,F|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,j|0,69562,75);G=B;B=0;do if(!(G&1)){B=0;eb(502,l|0,70534,19);E=B;B=0;if(E&1){E=Rb()|0;H=Q;Yua(j);I=H;J=E;break}B=0;wa(510,m|0,u|0);E=B;B=0;if(E&1){E=Rb()|0;K=E;L=Q;M=1}else{B=0;ua(163,F|0,j|0,l|0,2081,m|0);E=B;B=0;if(E&1)N=1;else{B=0;eb(503,F|0,1240,229);B=0;N=0}E=Rb()|0;H=Q;Yua(m);K=E;L=H;M=N}Yua(l);Yua(j);if(M){I=L;J=K}else{O=L;P=K;break b}}else{H=Rb()|0;I=Q;J=H}while(0);zb(F|0);O=I;P=J}else s=32;while(0);if((s|0)==32){C=Rb()|0;O=Q;P=C}k[i>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(t);R=P;S=O;Qb(R|0)}while(0);w=z;x=A;vva(t);Qb(x|0)}}break}case 262:{Ec[k[(k[a>>2]|0)+444>>2]&1023](a);s=42;break}case 263:{Ec[k[(k[a>>2]|0)+448>>2]&1023](a);s=42;break}default:{}}while(0);x=oC(k[a+16>>2]|0,e)|0;if(x){a=Hc[k[(k[x>>2]|0)+164>>2]&511](x)|0;k[b>>2]=a;a=Hc[k[(k[x>>2]|0)+168>>2]&511](x)|0;k[c>>2]=a;a=Hc[k[(k[x>>2]|0)+172>>2]&511](x)|0;k[d>>2]=a;r=f;return}f=n+56|0;a=n+4|0;k[n>>2]=27524;k[f>>2]=27544;B=0;wa(508,n+56|0,a|0);d=B;B=0;if(d&1){d=Rb()|0;T=Q;U=d;vva(f);Qb(U|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[f>>2]=27488;B=0;va(448,a|0);d=B;B=0;do if(d&1){x=Rb()|0;V=Q;W=x}else{k[a>>2]=27560;x=n+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[n+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,a|0,g|0);c=B;B=0;if(c&1){c=Rb()|0;b=Q;Yua(g);Yua(x);Ava(a);V=b;W=c;break}Yua(g);B=0;c=Ia(40,n|0,74566,6)|0;b=B;B=0;c:do if((((!(b&1)?(B=0,A=ya(427,e|0)|0,z=B,B=0,!(z&1)):0)?(z=Lta(A)|0,B=0,w=Ia(40,c|0,A|0,z|0)|0,z=B,B=0,!(z&1)):0)?(B=0,z=Ia(40,w|0,109155,21)|0,w=B,B=0,!(w&1)):0)?(B=0,Xa(239,z|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,o|0,69562,75);w=B;B=0;do if(!(w&1)){B=0;eb(502,p|0,70534,19);A=B;B=0;if(A&1){A=Rb()|0;O=Q;Yua(o);X=O;Y=A;break}B=0;wa(510,q|0,a|0);A=B;B=0;if(A&1){A=Rb()|0;Z=1;_=A;$=Q}else{B=0;ua(163,z|0,o|0,p|0,2092,q|0);A=B;B=0;if(A&1)aa=1;else{B=0;eb(503,z|0,1240,229);B=0;aa=0}A=Rb()|0;O=Q;Yua(q);Z=aa;_=A;$=O}Yua(p);Yua(o);if(Z){X=$;Y=_}else{ba=_;ca=$;break c}}else{O=Rb()|0;X=Q;Y=O}while(0);zb(z|0);ba=Y;ca=X}else s=62;while(0);if((s|0)==62){c=Rb()|0;ba=c;ca=Q}k[n>>2]=27468;k[f>>2]=27488;k[a>>2]=27560;Yua(x);Ava(a);vva(f);R=ba;S=ca;Qb(R|0)}while(0);T=V;U=W;vva(f);Qb(U|0)}function mq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0;b=r;r=r+80|0;c=b+56|0;d=b+8|0;e=b;f=b+64|0;k[f>>2]=0;g=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;h=Rqa(g>>>0>536870911?-1:g<<3)|0;Fc[k[(k[a>>2]|0)+188>>2]&1023](a,f);i=a+16|0;j=oC(k[i>>2]|0,674)|0;l=oC(k[i>>2]|0,677)|0;m=oC(k[i>>2]|0,679)|0;n=oC(k[i>>2]|0,353)|0;i=Hc[k[(k[a>>2]|0)+304>>2]&511](a)|0;if((g|0)>0){o=a+28|0;q=d+24|0;s=d+32|0;t=d+8|0;u=d+40|0;v=d+16|0;w=0;do{Fc[k[(k[i>>2]|0)+28>>2]&1023](i,w);nd[k[(k[n>>2]|0)+48>>2]&1023](n,e,i);Yo(0,d,k[f>>2]|0,i,j,l,m);x=k[o>>2]|0;Tc[k[(k[x>>2]|0)+108>>2]&15](x,c,3,k[f>>2]|0,i,j,l,m);y=+p[d>>3];z=+p[q>>3];A=+p[s>>3];B=+p[t>>3];C=+p[u>>3];D=+p[v>>3];E=z*z;z=A*A;A=C*C;C=+aa(+(D*D+(A+(z+(A+(B*B+(E+(y*y+E+z))))))))*.7071067811865475;p[h+(w<<3)>>3]=+p[e>>3]*(+p[c>>3]*(C*(C*4.0)));w=w+1|0}while((w|0)!=(g|0))}rd[k[(k[a>>2]|0)+48>>2]&511](a,701,h,738);Tqa(h);h=k[f>>2]|0;if(h)Tqa(h);k[f>>2]=0;if(!i){r=b;return}Ec[k[(k[i>>2]|0)+4>>2]&1023](i);r=b;return}function nq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0,T=0,U=0.0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;b=r;r=r+272|0;c=b+260|0;d=b+256|0;e=b+64|0;f=b+56|0;g=b+48|0;h=b+40|0;i=b+32|0;j=b+24|0;l=b;m=b+252|0;n=b+248|0;o=b+112|0;q=b+96|0;s=b+84|0;t=b+72|0;k[d>>2]=0;Ec[k[(k[a>>2]|0)+88>>2]&1023](a);cO(k[a+36>>2]|0,m,299);u=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;v=Rqa(u>>>0>536870911?-1:u<<3)|0;Fc[k[(k[a>>2]|0)+188>>2]&1023](a,d);w=a+16|0;x=oC(k[w>>2]|0,708)|0;y=oC(k[w>>2]|0,711)|0;z=oC(k[w>>2]|0,709)|0;if((k[m>>2]|0)==3){A=oC(k[w>>2]|0,710)|0;C=oC(k[w>>2]|0,712)|0;D=A;E=C;F=oC(k[w>>2]|0,713)|0}else{D=0;E=0;F=0}w=Hc[k[(k[a>>2]|0)+304>>2]&511](a)|0;a:do if((u|0)>0){C=0;while(1){Fc[k[(k[w>>2]|0)+28>>2]&1023](w,C);nd[k[(k[x>>2]|0)+48>>2]&1023](x,e,w);nd[k[(k[y>>2]|0)+48>>2]&1023](y,f,w);nd[k[(k[z>>2]|0)+48>>2]&1023](z,h,w);A=k[m>>2]|0;if((A|0)==3){nd[k[(k[D>>2]|0)+48>>2]&1023](D,i,w);nd[k[(k[E>>2]|0)+48>>2]&1023](E,j,w);nd[k[(k[F>>2]|0)+48>>2]&1023](F,g,w);G=k[m>>2]|0}else G=A;if((G|0)==2){H=+p[f>>3];I=+p[e>>3];J=+p[h>>3];K=0.0;L=1.0;M=-H-I;N=H*I-J*J}else{J=+p[e>>3];I=+p[f>>3];H=+p[g>>3];O=J*I;P=+p[h>>3];R=+p[i>>3];S=+p[j>>3];K=-1.0;L=J+I+H;M=S*S+(R*R+(P*P+(-O-J*H-I*H)));N=P*2.0*R*S+(O*H-S*(J*S)-R*(I*R)-P*(H*P))}JY(K,L,M,N,l,n)|0;A=k[n>>2]|0;if((A|0)<=0)break;P=+$(+(+p[l>>3]));if((A|0)>1){T=1;H=P;while(1){R=+$(+(+p[l+(T<<3)>>3]));I=R>H?R:H;T=T+1|0;if((T|0)>=(A|0)){U=I;break}else H=I}}else U=P;p[v+(C<<3)>>3]=U;C=C+1|0;if((C|0)>=(u|0))break a}C=o+56|0;A=o+4|0;k[o>>2]=27524;k[C>>2]=27544;B=0;wa(508,o+56|0,A|0);T=B;B=0;if(T&1){T=Rb()|0;V=Q;W=T;vva(C);Qb(W|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[C>>2]=27488;B=0;va(448,A|0);T=B;B=0;do if(T&1){X=Rb()|0;Y=Q;Z=X}else{k[A>>2]=27560;X=o+36|0;k[X>>2]=0;k[X+4>>2]=0;k[X+8>>2]=0;k[X+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,A|0,c|0);_=B;B=0;if(_&1){_=Rb()|0;aa=Q;Yua(c);Yua(X);Ava(A);Y=aa;Z=_;break}Yua(c);B=0;_=Ia(40,o|0,70554,20)|0;aa=B;B=0;if(!(aa&1)?(B=0,Xa(239,_|0,0)|0,_=B,B=0,!(_&1)):0){_=Ab(20)|0;B=0;eb(502,q|0,69562,75);aa=B;B=0;do if(!(aa&1)){B=0;eb(502,s|0,70575,29);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;Yua(q);da=ca;ea=ba;break}B=0;wa(510,t|0,A|0);ba=B;B=0;if(ba&1){ba=Rb()|0;fa=Q;ga=ba;ha=1}else{B=0;ua(163,_|0,q|0,s|0,2727,t|0);ba=B;B=0;if(ba&1)ia=1;else{B=0;eb(503,_|0,1240,229);B=0;ia=0}ba=Rb()|0;ca=Q;Yua(t);fa=ca;ga=ba;ha=ia}Yua(s);Yua(q);if(ha){da=fa;ea=ga}else{ja=fa;ka=ga;k[o>>2]=27468;k[C>>2]=27488;k[A>>2]=27560;Yua(X);Ava(A);vva(C);Qb(ka|0)}}else{ba=Rb()|0;da=Q;ea=ba}while(0);zb(_|0);ja=da;ka=ea;k[o>>2]=27468;k[C>>2]=27488;k[A>>2]=27560;Yua(X);Ava(A);vva(C);Qb(ka|0)}aa=Rb()|0;ja=Q;ka=aa;k[o>>2]=27468;k[C>>2]=27488;k[A>>2]=27560;Yua(X);Ava(A);vva(C);Qb(ka|0)}while(0);V=Y;W=Z;vva(C);Qb(W|0)}while(0);rd[k[(k[a>>2]|0)+48>>2]&511](a,714,v,738);Tqa(v);v=k[d>>2]|0;if(v)Tqa(v);k[d>>2]=0;if(!w){r=b;return}Ec[k[(k[w>>2]|0)+4>>2]&1023](w);r=b;return}function oq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;i=e+12|0;j=e;l=oC(k[a+16>>2]|0,d)|0;if(l){rd[k[(k[l>>2]|0)+176>>2]&511](l,b,c,k[a+12>>2]|0);r=e;return}e=g+56|0;a=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,a|0);c=B;B=0;if(c&1){c=Rb()|0;m=Q;n=c;vva(e);Qb(n|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,a|0);c=B;B=0;do if(c&1){b=Rb()|0;o=Q;p=b}else{k[a>>2]=27560;b=g+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,a|0,f|0);l=B;B=0;if(l&1){l=Rb()|0;q=Q;Yua(f);Yua(b);Ava(a);o=q;p=l;break}Yua(f);B=0;l=Ia(40,g|0,74566,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,d|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,l|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,109155,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,h|0,69562,75);t=B;B=0;do if(!(t&1)){B=0;eb(502,i|0,115180,13);q=B;B=0;if(q&1){q=Rb()|0;l=Q;Yua(h);u=l;v=q;break}B=0;wa(510,j|0,a|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,h|0,i|0,2102,j|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;l=Q;Yua(j);w=l;x=q;y=z}Yua(i);Yua(h);if(y){u=w;v=x}else{A=w;C=x;k[g>>2]=27468;k[e>>2]=27488;k[a>>2]=27560;Yua(b);Ava(a);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[g>>2]=27468;k[e>>2]=27488;k[a>>2]=27560;Yua(b);Ava(a);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[g>>2]=27468;k[e>>2]=27488;k[a>>2]=27560;Yua(b);Ava(a);vva(e);Qb(C|0)}while(0);m=o;n=p;vva(e);Qb(n|0)}function pq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;i=e+12|0;j=e;l=oC(k[a+16>>2]|0,d)|0;if(l){rd[k[(k[l>>2]|0)+180>>2]&511](l,b,c,k[a+12>>2]|0);r=e;return}e=g+56|0;a=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,a|0);c=B;B=0;if(c&1){c=Rb()|0;m=Q;n=c;vva(e);Qb(n|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,a|0);c=B;B=0;do if(c&1){b=Rb()|0;o=Q;p=b}else{k[a>>2]=27560;b=g+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,a|0,f|0);l=B;B=0;if(l&1){l=Rb()|0;q=Q;Yua(f);Yua(b);Ava(a);o=q;p=l;break}Yua(f);B=0;l=Ia(40,g|0,74566,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,d|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,l|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,109155,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,h|0,69562,75);t=B;B=0;do if(!(t&1)){B=0;eb(502,i|0,70605,14);q=B;B=0;if(q&1){q=Rb()|0;l=Q;Yua(h);u=l;v=q;break}B=0;wa(510,j|0,a|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,h|0,i|0,2110,j|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;l=Q;Yua(j);w=l;x=q;y=z}Yua(i);Yua(h);if(y){u=w;v=x}else{A=w;C=x;k[g>>2]=27468;k[e>>2]=27488;k[a>>2]=27560;Yua(b);Ava(a);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[g>>2]=27468;k[e>>2]=27488;k[a>>2]=27560;Yua(b);Ava(a);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[g>>2]=27468;k[e>>2]=27488;k[a>>2]=27560;Yua(b);Ava(a);vva(e);Qb(C|0)}while(0);m=o;n=p;vva(e);Qb(n|0)}function qq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0;d=r;r=r+368|0;e=d;f=d+224|0;g=d+208|0;h=d+196|0;j=d+184|0;l=d+48|0;m=d+36|0;n=d+24|0;o=d+12|0;q=a+16|0;s=oC(k[q>>2]|0,c)|0;if(!s){t=f+56|0;u=f+4|0;k[f>>2]=27524;k[t>>2]=27544;B=0;wa(508,f+56|0,u|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;x=v;vva(t);Qb(x|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[t>>2]=27488;B=0;va(448,u|0);v=B;B=0;do if(v&1){y=Rb()|0;z=Q;A=y}else{k[u>>2]=27560;y=f+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,u|0,e|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(e);Yua(y);Ava(u);z=D;A=C;break}Yua(e);B=0;C=Ia(40,f|0,74566,6)|0;D=B;B=0;a:do if((((!(D&1)?(B=0,E=ya(427,c|0)|0,F=B,B=0,!(F&1)):0)?(F=Lta(E)|0,B=0,G=Ia(40,C|0,E|0,F|0)|0,F=B,B=0,!(F&1)):0)?(B=0,F=Ia(40,G|0,109155,21)|0,G=B,B=0,!(G&1)):0)?(B=0,Xa(239,F|0,0)|0,F=B,B=0,!(F&1)):0){F=Ab(20)|0;B=0;eb(502,g|0,69562,75);G=B;B=0;do if(!(G&1)){B=0;eb(502,h|0,70620,14);E=B;B=0;if(E&1){E=Rb()|0;H=Q;Yua(g);I=E;J=H;break}B=0;wa(510,j|0,u|0);H=B;B=0;if(H&1){H=Rb()|0;K=H;L=Q;M=1}else{B=0;ua(163,F|0,g|0,h|0,2118,j|0);H=B;B=0;if(H&1)N=1;else{B=0;eb(503,F|0,1240,229);B=0;N=0}H=Rb()|0;E=Q;Yua(j);K=H;L=E;M=N}Yua(h);Yua(g);if(M){I=K;J=L}else{O=K;P=L;break a}}else{E=Rb()|0;I=E;J=Q}while(0);zb(F|0);O=I;P=J}else R=20;while(0);if((R|0)==20){C=Rb()|0;O=C;P=Q}k[f>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(t);S=O;T=P;Qb(S|0)}while(0);w=z;x=A;vva(t);Qb(x|0)}switch(Hc[k[(k[s>>2]|0)+164>>2]&511](s)|0){case 736:{x=oC(k[q>>2]|0,c)|0;switch(Hc[k[(k[x>>2]|0)+20>>2]&511](x)|0){case 561:{Fc[k[(k[x>>2]|0)+44>>2]&1023](x,e);break}case 556:{Fc[k[(k[x>>2]|0)+36>>2]&1023](x,f);p[e>>3]=+((i[f>>0]|0)!=0&1);break}default:{f=Hc[k[(k[a>>2]|0)+304>>2]&511](a)|0;nd[k[(k[x>>2]|0)+48>>2]&1023](x,e,f);if(f)Ec[k[(k[f>>2]|0)+4>>2]&1023](f)}}if(k[b>>2]|0){f=k[k[b+4>>2]>>2]|0;Jc[k[(k[f>>2]|0)+20>>2]&1](f,k[a+12>>2]|0,+p[e>>3],0)}r=d;return}case 738:{f=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;x=Rqa(f>>>0>536870911?-1:f<<3)|0;q=f>>>0>1073741823?-1:f<<2;t=Rqa(q)|0;A=Rqa(q)|0;q=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;if((q|0)>0){z=a+24|0;w=0;do{P=Bo(k[(k[z>>2]|0)+(w<<2)>>2]|0)|0;k[A+(w<<2)>>2]=P;w=w+1|0}while((w|0)!=(q|0))}q=Hc[k[(k[a>>2]|0)+172>>2]&511](a)|0;if((q|0)>0){w=a+24|0;z=0;do{P=Ao(k[(k[w>>2]|0)+(z<<2)>>2]|0)|0;k[t+(z<<2)>>2]=P;z=z+1|0}while((z|0)!=(q|0))}xp(a,x,c);if((f|0)>0){c=0;do{a=x+(c<<3)|0;p[a>>3]=+p[a>>3]/+(k[t+(c<<2)>>2]|0);c=c+1|0}while((c|0)!=(f|0))}if(k[b>>2]|0){c=k[k[b+4>>2]>>2]|0;Dc[k[(k[c>>2]|0)+16>>2]&255](c,f,A,x,1)}Tqa(x);Tqa(t);Tqa(A);r=d;return}default:{d=l+56|0;A=l+4|0;k[l>>2]=27524;k[d>>2]=27544;B=0;wa(508,l+56|0,A|0);t=B;B=0;if(t&1){t=Rb()|0;U=Q;V=t;vva(d);Qb(V|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[d>>2]=27488;B=0;va(448,A|0);t=B;B=0;do if(t&1){x=Rb()|0;W=Q;X=x}else{k[A>>2]=27560;x=l+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[l+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,A|0,e|0);f=B;B=0;if(f&1){f=Rb()|0;c=Q;Yua(e);Yua(x);Ava(A);W=c;X=f;break}Yua(e);B=0;f=Ia(40,l|0,70635,14)|0;c=B;B=0;b:do if(((((!(c&1)?(B=0,b=ya(k[(k[s>>2]|0)+164>>2]|0,s|0)|0,a=B,B=0,!(a&1)):0)?(B=0,a=ya(427,b|0)|0,b=B,B=0,!(b&1)):0)?(b=Lta(a)|0,B=0,q=Ia(40,f|0,a|0,b|0)|0,b=B,B=0,!(b&1)):0)?(B=0,b=Ia(40,q|0,146481,18)|0,q=B,B=0,!(q&1)):0)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,m|0,69562,75);q=B;B=0;do if(!(q&1)){B=0;eb(502,n|0,70620,14);a=B;B=0;if(a&1){a=Rb()|0;z=Q;Yua(m);Y=z;Z=a;break}B=0;wa(510,o|0,A|0);a=B;B=0;if(a&1){a=Rb()|0;_=1;$=a;aa=Q}else{B=0;ua(163,b|0,m|0,n|0,2160,o|0);a=B;B=0;if(a&1)ba=1;else{B=0;eb(503,b|0,1240,229);B=0;ba=0}a=Rb()|0;z=Q;Yua(o);_=ba;$=a;aa=z}Yua(n);Yua(m);if(_){Y=aa;Z=$}else{ca=$;da=aa;break b}}else{z=Rb()|0;Y=Q;Z=z}while(0);zb(b|0);ca=Z;da=Y}else R=67;while(0);if((R|0)==67){f=Rb()|0;ca=f;da=Q}k[l>>2]=27468;k[d>>2]=27488;k[A>>2]=27560;Yua(x);Ava(A);vva(d);S=ca;T=da;Qb(S|0)}while(0);U=W;V=X;vva(d);Qb(V|0)}}}
+function SI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 1:{n=Qqa(16)|0;B=0;va(489,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Sqa(n);q=o;s=p;Qb(q|0)}else{k[a+16>>2]=n;n=(k[b>>2]|0)+4|0;k[b>>2]=n;p=a+8|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[p>>0]=o;i[p+1>>0]=o>>8;i[p+2>>0]=o>>16;i[p+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;i[a+12>>0]=i[o>>0]|0;k[b>>2]=(k[b>>2]|0)+1;t=a+16|0;u=k[t>>2]|0;Cla(u,b,c,d);v=k[t>>2]|0;w=Fla(v)|0;x=a+20|0;k[x>>2]=w;r=e;return}break}case 0:{o=k[b>>2]|0;i[o>>0]=71;i[o+1>>0]=2;i[o+2>>0]=0;i[o+3>>0]=0;o=(k[b>>2]|0)+4|0;k[b>>2]=o;p=a+8|0;n=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;i[n>>0]=i[a+12>>0]|0;k[b>>2]=(k[b>>2]|0)+1;t=a+16|0;u=k[t>>2]|0;Cla(u,b,c,d);v=k[t>>2]|0;w=Fla(v)|0;x=a+20|0;k[x>>2]=w;r=e;return}case 2:{k[c>>2]=(k[c>>2]|0)+9;t=a+16|0;u=k[t>>2]|0;Cla(u,b,c,d);v=k[t>>2]|0;w=Fla(v)|0;x=a+20|0;k[x>>2]=w;r=e;return}default:{e=g+56|0;w=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,w|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;z=x;vva(e);Qb(z|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,w|0);x=B;B=0;do if(x&1){a=Rb()|0;A=Q;C=a}else{k[w>>2]=27560;a=g+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,w|0,f|0);v=B;B=0;if(v&1){v=Rb()|0;t=Q;Yua(f);Yua(a);Ava(w);A=t;C=v;break}Yua(f);B=0;v=Ia(40,g|0,143951,43)|0;t=B;B=0;a:do if(!(t&1)?(B=0,Xa(239,v|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,h|0,78025,75);c=B;B=0;do if(!(c&1)){B=0;eb(502,j|0,149525,8);b=B;B=0;if(b&1){b=Rb()|0;u=Q;Yua(h);D=b;E=u;break}B=0;wa(510,m|0,w|0);u=B;B=0;if(u&1){u=Rb()|0;F=Q;G=u;H=1}else{B=0;ua(163,d|0,h|0,j|0,129,m|0);u=B;B=0;if(u&1)I=1;else{B=0;eb(503,d|0,1240,229);B=0;I=0}u=Rb()|0;b=Q;Yua(m);F=b;G=u;H=I}Yua(j);Yua(h);if(H){D=G;E=F}else{J=G;K=F;break a}}else{u=Rb()|0;D=u;E=Q}while(0);zb(d|0);J=D;K=E}else L=19;while(0);if((L|0)==19){v=Rb()|0;J=v;K=Q}k[g>>2]=27468;k[e>>2]=27488;k[w>>2]=27560;Yua(a);Ava(w);vva(e);q=J;s=K;Qb(q|0)}while(0);y=A;z=C;vva(e);Qb(z|0)}}}function TI(a,b){a=a|0;b=b|0;var c=0;c=a+16|0;Ela(k[c>>2]|0,b);b=Fla(k[c>>2]|0)|0;k[a+20>>2]=b;return}function UI(a){a=a|0;var b=0,c=0,d=0.0,e=0.0;b=r;r=r+16|0;c=b;lC(k[(k[a+20>>2]|0)+16>>2]|0,c,214);d=+Zc[k[(k[a>>2]|0)+64>>2]&255](a);e=+ba(+(+p[c>>3]),+-d);r=b;return +e}function VI(a){a=a|0;var b=0,c=0,d=0.0,e=0.0;b=r;r=r+16|0;c=b;lC(k[(k[a+20>>2]|0)+16>>2]|0,c,215);d=+Zc[k[(k[a>>2]|0)+64>>2]&255](a);e=+ba(+(+p[c>>3]),+-d);r=b;return +e}function WI(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;lC(k[(k[a+20>>2]|0)+16>>2]|0,c,214);r=b;return +(+p[c>>3])}function XI(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;lC(k[(k[a+20>>2]|0)+16>>2]|0,c,215);r=b;return +(+p[c>>3])}function YI(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;lC(k[(k[a+20>>2]|0)+16>>2]|0,c,217);r=b;return +(+p[c>>3])}function ZI(a){a=a|0;var b=0,c=0,d=0.0;b=r;r=r+16|0;c=b;if(!(i[a+12>>0]|0)){d=0.0;r=b;return +d}lC(k[(k[a+20>>2]|0)+16>>2]|0,c,225);d=+p[c>>3];r=b;return +d}function _I(a){a=a|0;var b=0,c=0,d=0.0;b=r;r=r+16|0;c=b;if(!(i[a+12>>0]|0)){d=0.0;r=b;return +d}lC(k[(k[a+20>>2]|0)+16>>2]|0,c,227);d=+p[c>>3];r=b;return +d}function $I(a){a=a|0;return (i[a+12>>0]|0)!=0|0}function aJ(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,j=0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;j=d;l=+Zc[k[(k[a>>2]|0)+48>>2]&255](a);m=+Zc[k[(k[a>>2]|0)+64>>2]&255](a);if(!(i[a+12>>0]|0))n=0.0;else n=+Zc[k[(k[a>>2]|0)+56>>2]&255](a);do if(!(m==1.0))if(c==0.0){o=5.0e13;p[b>>3]=o;r=d;return}else{q=l*(1.0-n)/(+ba(+c,+((m+-1.0)/m))*2.0);break}else q=l*(1.0-n)*.5;while(0);if(!(q<=0.0)){o=q;p[b>>3]=o;r=d;return}d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;s=Q;t=a;vva(d);Qb(t|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){u=Rb()|0;v=Q;w=u}else{k[b>>2]=27560;u=f+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(e);Yua(u);Ava(b);v=y;w=x;break}Yua(e);B=0;x=Ia(40,f|0,78110,18)|0;y=B;B=0;if(!(y&1)?(B=0,Xa(239,x|0,0)|0,x=B,B=0,!(x&1)):0){x=Ab(20)|0;B=0;eb(502,g|0,78025,75);y=B;B=0;do if(!(y&1)){B=0;eb(502,h|0,143391,12);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(g);C=A;D=z;break}B=0;wa(510,j|0,b|0);z=B;B=0;if(z&1){z=Rb()|0;E=Q;F=z;G=1}else{B=0;ua(163,x|0,g|0,h|0,273,j|0);z=B;B=0;if(z&1)H=1;else{B=0;eb(503,x|0,1240,229);B=0;H=0}z=Rb()|0;A=Q;Yua(j);E=A;F=z;G=H}Yua(h);Yua(g);if(G){C=E;D=F}else{I=E;J=F;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(u);Ava(b);vva(d);Qb(J|0)}}else{z=Rb()|0;C=Q;D=z}while(0);zb(x|0);I=C;J=D;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(u);Ava(b);vva(d);Qb(J|0)}y=Rb()|0;I=Q;J=y;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(u);Ava(b);vva(d);Qb(J|0)}while(0);s=v;t=w;vva(d);Qb(t|0)}function bJ(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0.0,f=0.0;d=+Zc[k[(k[a>>2]|0)+64>>2]&255](a);if(!(i[a+12>>0]|0))e=0.0;else e=+Zc[k[(k[a>>2]|0)+56>>2]&255](a);if(d==1.0){f=(1.0-e)*.5;p[b>>3]=f;return}if(c==0.0){f=0.0;p[b>>3]=f;return}f=(1.0-e)/(+ba(+c,+((d+-1.0)/d))*2.0);p[b>>3]=f;return}function cJ(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0.0,f=0.0;d=+Zc[k[(k[a>>2]|0)+64>>2]&255](a);e=+Zc[k[(k[a>>2]|0)+52>>2]&255](a);if(d==1.0){f=e*-.5;p[b>>3]=f;return}if(c==0.0){f=0.0;p[b>>3]=f;return}f=-e/(+ba(+c,+((d+-1.0)/d))*2.0);p[b>>3]=f;return}function dJ(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,j=0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;j=d;l=+Zc[k[(k[a>>2]|0)+52>>2]&255](a);m=+Zc[k[(k[a>>2]|0)+64>>2]&255](a);if(!(i[a+12>>0]|0))n=0.0;else n=+Zc[k[(k[a>>2]|0)+60>>2]&255](a);do if(!(m==1.0))if(c==0.0){o=5.0e13;p[b>>3]=o;r=d;return}else{q=l*(1.0-n)/(+ba(+c,+((m+-1.0)/m))*2.0);break}else q=l*(1.0-n)*.5;while(0);if(!(q<=0.0)){o=q;p[b>>3]=o;r=d;return}d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;s=Q;t=a;vva(d);Qb(t|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){u=Rb()|0;v=Q;w=u}else{k[b>>2]=27560;u=f+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(e);Yua(u);Ava(b);v=y;w=x;break}Yua(e);B=0;x=Ia(40,f|0,78110,18)|0;y=B;B=0;if(!(y&1)?(B=0,Xa(239,x|0,0)|0,x=B,B=0,!(x&1)):0){x=Ab(20)|0;B=0;eb(502,g|0,78025,75);y=B;B=0;do if(!(y&1)){B=0;eb(502,h|0,143434,15);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(g);C=A;D=z;break}B=0;wa(510,j|0,b|0);z=B;B=0;if(z&1){z=Rb()|0;E=Q;F=z;G=1}else{B=0;ua(163,x|0,g|0,h|0,377,j|0);z=B;B=0;if(z&1)H=1;else{B=0;eb(503,x|0,1240,229);B=0;H=0}z=Rb()|0;A=Q;Yua(j);E=A;F=z;G=H}Yua(h);Yua(g);if(G){C=E;D=F}else{I=E;J=F;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(u);Ava(b);vva(d);Qb(J|0)}}else{z=Rb()|0;C=Q;D=z}while(0);zb(x|0);I=C;J=D;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(u);Ava(b);vva(d);Qb(J|0)}y=Rb()|0;I=Q;J=y;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(u);Ava(b);vva(d);Qb(J|0)}while(0);s=v;t=w;vva(d);Qb(t|0)}function eJ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,h=0.0,j=0.0,l=0.0;if(!(i[a+12>>0]|0))d=0.0;else d=+Zc[k[(k[a>>2]|0)+60>>2]&255](a);e=+Zc[k[(k[a>>2]|0)+64>>2]&255](a);if(!c){f=45.0e16;p[b>>3]=f;return}g=+p[c>>3];h=+p[c+8>>3];j=+p[c+16>>3];l=g*h+(g*g+h*h+j*j);if(l==0.0){f=225.0e15;p[b>>3]=f;return}f=(1.0-d)/(+ba(+l,+((e+-1.0)/(e*2.0)))*2.0);p[b>>3]=f;return}function fJ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0;d=+Zc[k[(k[a>>2]|0)+52>>2]&255](a);e=+Zc[k[(k[a>>2]|0)+64>>2]&255](a);if(!c){f=-45.0e16;p[b>>3]=f;return}g=+p[c>>3];h=+p[c+8>>3];i=+p[c+16>>3];j=g*h+(g*g+h*h+i*i);if(j==0.0){f=-225.0e15;p[b>>3]=f;return}f=-d/(+ba(+j,+((e+-1.0)/(e*2.0)))*2.0);p[b>>3]=f;return}function gJ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,l=0.0,m=0.0;d=r;r=r+16|0;e=d;f=+p[c>>3];g=+p[c+8>>3];if(((f==0.0&g==0.0?+p[c+16>>3]==0.0:0)?+p[c+24>>3]==0.0:0)?+p[c+32>>3]==0.0:0){h=5.0e13;p[b>>3]=h;r=d;return}i=+p[c+16>>3];j=+p[c+24>>3];l=+p[c+32>>3];m=l*l+(j*j+(i*i+(f*g+(f*f+g*g))));g=+aa(+m);Xc[k[(k[a>>2]|0)+68>>2]&63](a,e,g);g=+Zc[k[(k[a>>2]|0)+64>>2]&255](a);h=+p[e>>3]*((1.0-g)/(g*2.0))/m;p[b>>3]=h;r=d;return}function hJ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0;d=r;r=r+16|0;e=d;f=+p[c>>3];g=+p[c+8>>3];if(f==0.0&g==0.0?+p[c+16>>3]==0.0:0){h=5.0e13;p[b>>3]=h;r=d;return}i=+p[c+16>>3];j=i*i+(f*g+(f*f+g*g));g=+aa(+j);Xc[k[(k[a>>2]|0)+72>>2]&63](a,e,g);g=+Zc[k[(k[a>>2]|0)+64>>2]&255](a);h=+p[e>>3]*((1.0-g)/(g*2.0))/j;p[b>>3]=h;r=d;return}function iJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function jJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function kJ(a,b,c){a=a|0;b=+b;c=c|0;return}function lJ(a,b,c){a=a|0;b=+b;c=c|0;return}function mJ(a,b,c){a=a|0;b=b|0;c=c|0;return}function nJ(a,b,c){a=a|0;b=b|0;c=c|0;return}function oJ(a,b,c){a=a|0;b=b|0;c=c|0;return}function pJ(a,b,c){a=a|0;b=b|0;c=c|0;return}function qJ(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,l=0,m=0,n=0,o=0.0,q=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0.0;i=r;r=r+80|0;j=i+72|0;l=i+24|0;m=i;n=k[a+20>>2]|0;if((c|0)==3){Yo(n,l,d,e,f,g,h);o=+p[l>>3];q=+p[l+8>>3];s=+p[l+24>>3];t=+p[l+32>>3];u=+p[l+40>>3];v=+aa(+(o*q+(o*o+q*q+s*s+t*t+u*u)+1.0e-54));w=k[a>>2]|0;x=w+68|0;y=k[x>>2]|0;Xc[y&63](a,j,v);z=+p[j>>3];p[b>>3]=z;r=i;return}else{Xo(n,m,d,e,f,g);u=+p[m>>3];t=+p[m+8>>3];s=+p[m+16>>3];v=+aa(+(u*u+t*t+s*(s*2.0)))*.7071067811865475;w=k[a>>2]|0;x=w+68|0;y=k[x>>2]|0;Xc[y&63](a,j,v);z=+p[j>>3];p[b>>3]=z;r=i;return}}function rJ(a,b,c){a=a|0;b=b|0;c=c|0;nd[k[(k[a>>2]|0)+84>>2]&1023](a,b,c);return}function sJ(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0.0,o=0.0,q=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0.0;h=r;r=r+64|0;i=h+56|0;j=h+16|0;l=h;m=k[a+20>>2]|0;if((c|0)==3){ep(m,j,d,e,f,g);n=+p[j>>3];o=+p[j+8>>3];q=+p[j+16>>3];s=+p[j+24>>3];t=+p[j+32>>3];u=+aa(+(n*o+(n*n+o*o+q*q+s*s+t*t)));v=k[a>>2]|0;w=v+68|0;x=k[w>>2]|0;Xc[x&63](a,i,u);y=+p[i>>3];p[b>>3]=y;r=h;return}else{fp(m,l,d,e,f,g);t=+p[l>>3];s=+p[l+8>>3];u=+aa(+(t*t+s*(s*2.0)))*.7071067811865475;v=k[a>>2]|0;w=v+68|0;x=k[w>>2]|0;Xc[x&63](a,i,u);y=+p[i>>3];p[b>>3]=y;r=h;return}}function tJ(a,b,c){a=a|0;b=b|0;c=c|0;nd[k[(k[a>>2]|0)+84>>2]&1023](a,b,c);return}function uJ(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;h=r;r=r+272|0;i=h+248|0;j=h+64|0;l=h+24|0;m=h;n=h+112|0;o=h+96|0;q=h+84|0;s=h+72|0;if((e|0)!=0&(f|0)!=0&(g|0)!=0){nd[k[(k[g>>2]|0)+48>>2]&1023](g,j,d);rd[k[(k[g>>2]|0)+60>>2]&511](g,m,c,d);g=a+20|0;t=+Lp(k[g>>2]|0,c,d);u=+WJ(k[(k[g>>2]|0)+32>>2]|0,265);v=u*+WJ(k[(k[g>>2]|0)+32>>2]|0,65);u=v*+$(+(+p[j>>3]-t));t=+p[m>>3];v=+p[m+8>>3];w=u*+aa(+(t*t+v*v));ep(k[g>>2]|0,l,c,d,e,f);v=+p[l>>3];t=+p[l+8>>3];u=+p[l+16>>3];x=+aa(+(u*u+(v*t+(v*v+t*t))));if(x==0.0){y=25.0e16;p[b>>3]=y;r=h;return}t=+Zc[k[(k[a>>2]|0)+40>>2]&255](a);v=w*w;w=-x/t;x=+aa(+(v*(v*v)*4.0/27.0+w*w));u=+ba(+((x-w)*.5),.3333333333333333)-+ba(+((w+x)*.5),.3333333333333333);y=1.0/(t*2.0*(v+u*u));p[b>>3]=y;r=h;return}h=n+56|0;b=n+4|0;k[n>>2]=27524;k[h>>2]=27544;B=0;wa(508,n+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;z=Q;A=a;vva(h);Qb(A|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[h>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){l=Rb()|0;C=Q;D=l}else{k[b>>2]=27560;l=n+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[n+52>>2]=16;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;B=0;wa(509,b|0,i|0);f=B;B=0;if(f&1){f=Rb()|0;e=Q;Yua(i);Yua(l);Ava(b);C=e;D=f;break}Yua(i);B=0;f=Ia(40,n|0,78129,13)|0;e=B;B=0;if(!(e&1)?(B=0,Xa(239,f|0,0)|0,f=B,B=0,!(f&1)):0){f=Ab(20)|0;B=0;eb(502,o|0,78025,75);e=B;B=0;do if(!(e&1)){B=0;eb(502,q|0,143594,13);d=B;B=0;if(d&1){d=Rb()|0;c=Q;Yua(o);E=d;F=c;break}B=0;wa(510,s|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;G=Q;H=c;I=1}else{B=0;ua(163,f|0,o|0,q|0,676,s|0);c=B;B=0;if(c&1)J=1;else{B=0;eb(503,f|0,1240,229);B=0;J=0}c=Rb()|0;d=Q;Yua(s);G=d;H=c;I=J}Yua(q);Yua(o);if(I){E=H;F=G}else{K=H;L=G;k[n>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(h);Qb(K|0)}}else{c=Rb()|0;E=c;F=Q}while(0);zb(f|0);K=E;L=F;k[n>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(h);Qb(K|0)}e=Rb()|0;K=e;L=Q;k[n>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(h);Qb(K|0)}while(0);z=C;A=D;vva(h);Qb(A|0)}function vJ(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0.0,o=0.0,q=0.0,s=0.0;h=r;r=r+48|0;i=h+32|0;j=h+8|0;l=h;m=k[a+20>>2]|0;if((c|0)==2){Xo(m,j,d,e,f,g);n=+p[j>>3];o=+p[j+8>>3];q=+p[j+16>>3];s=n*o+(n*n+o*o+q*q)}else{hp(m,l,d,e,f);q=+p[l>>3];s=q*q*.5}q=+aa(+s);Xc[k[(k[a>>2]|0)+72>>2]&63](a,i,q);p[b>>3]=+p[i>>3];r=h;return}function wJ(a,b,c){a=a|0;b=b|0;c=c|0;nd[k[(k[a>>2]|0)+96>>2]&1023](a,b,c);return}function xJ(a){a=a|0;k[a+20>>2]=0;Dla(k[a+16>>2]|0);return}function yJ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,78153,75);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144327,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,53,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function zJ(a,b,c){a=a|0;b=b|0;c=c|0;yJ(a+-4|0,b,c)}function AJ(a){a=a|0;k[a>>2]=33700;k[a+4>>2]=33864;return}function BJ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0;d=r;r=r+576|0;e=d+556|0;f=d+544|0;g=d+532|0;h=d+568|0;j=d+528|0;l=d+524|0;m=d+520|0;n=d+384|0;o=d+232|0;p=d+84|0;q=d+72|0;s=d+248|0;t=d+60|0;u=d+48|0;v=d+36|0;w=d+96|0;x=d+24|0;y=d+12|0;z=d;k[a>>2]=33700;k[a+4>>2]=33864;A=a+16|0;C=a+24|0;D=a+32|0;E=a+40|0;F=a+48|0;G=a+56|0;H=a+64|0;I=a+72|0;J=a+80|0;K=a+88|0;L=a+96|0;M=a+104|0;N=a+112|0;O=a+120|0;P=a+136|0;R=a+144|0;S=a+152|0;T=a+160|0;U=a+176|0;V=a+168|0;W=a+184|0;X=a+192|0;Y=a+200|0;Z=a+208|0;_=a+216|0;$=a+224|0;aa=a+232|0;ba=a+240|0;ca=a+248|0;da=a+256|0;ea=a+264|0;fa=a+272|0;ga=a+280|0;ha=a+288|0;ia=a+296|0;WEa(A|0,0,360)|0;B=0;eb(512,c|0,j|0,131762);ja=B;B=0;a:do if((!(ja&1)?(B=0,eb(512,c|0,l|0,134789),ka=B,B=0,!(ka&1)):0)?(B=0,eb(512,c|0,m|0,127514),ka=B,B=0,!(ka&1)):0){k[a+8>>2]=b;if(((k[m>>2]|0)+-583|0)>>>0>=3){ka=w+56|0;la=w+4|0;k[w>>2]=27524;k[ka>>2]=27544;B=0;wa(508,w+56|0,la|0);ma=B;B=0;if(ma&1){ma=Rb()|0;na=Q;oa=ma}else{k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[ka>>2]=27488;B=0;va(448,la|0);ma=B;B=0;do if(ma&1){pa=Rb()|0;qa=Q;ra=pa}else{k[la>>2]=27560;pa=w+36|0;k[pa>>2]=0;k[pa+4>>2]=0;k[pa+8>>2]=0;k[pa+12>>2]=0;k[w+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,la|0,e|0);sa=B;B=0;if(sa&1){sa=Rb()|0;ta=Q;Yua(e);Yua(pa);Ava(la);qa=ta;ra=sa;break}Yua(e);B=0;sa=Ia(40,w|0,79085,9)|0;ta=B;B=0;b:do if((((!(ta&1)?(B=0,xa=ya(427,k[m>>2]|0)|0,za=B,B=0,!(za&1)):0)?(za=Lta(xa)|0,B=0,Aa=Ia(40,sa|0,xa|0,za|0)|0,za=B,B=0,!(za&1)):0)?(B=0,za=Ia(40,Aa|0,146481,18)|0,Aa=B,B=0,!(Aa&1)):0)?(B=0,Xa(239,za|0,0)|0,za=B,B=0,!(za&1)):0){za=Ab(20)|0;B=0;eb(502,x|0,78522,75);Aa=B;B=0;do if(!(Aa&1)){B=0;eb(502,y|0,98515,6);xa=B;B=0;if(xa&1){xa=Rb()|0;Ba=Q;Yua(x);Ca=xa;Da=Ba;break}B=0;wa(510,z|0,la|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;Ea=1;Fa=Q;Ga=Ba}else{B=0;ua(163,za|0,x|0,y|0,171,z|0);Ba=B;B=0;if(Ba&1)Ha=1;else{B=0;eb(503,za|0,1240,229);B=0;Ha=0}Ba=Rb()|0;xa=Q;Yua(z);Ea=Ha;Fa=xa;Ga=Ba}Yua(y);Yua(x);if(Ea){Ca=Ga;Da=Fa}else{Ja=Fa;Ka=Ga;break b}}else{Ba=Rb()|0;Ca=Ba;Da=Q}while(0);zb(za|0);Ja=Da;Ka=Ca}else La=119;while(0);if((La|0)==119){sa=Rb()|0;Ja=Q;Ka=sa}k[w>>2]=27468;k[ka>>2]=27488;k[la>>2]=27560;Yua(pa);Ava(la);vva(ka);Ma=Ja;Na=Ka;Qb(Na|0)}while(0);na=qa;oa=ra}vva(ka);Oa=na;Pa=oa;break}B=0;eb(513,c|0,A|0,126961);la=B;B=0;if(((((((((((((!(la&1)?(B=0,eb(513,c|0,C|0,78237),la=B,B=0,!(la&1)):0)?(B=0,eb(513,c|0,D|0,78260),la=B,B=0,!(la&1)):0)?(B=0,eb(513,c|0,E|0,78288),la=B,B=0,!(la&1)):0)?(B=0,eb(513,c|0,F|0,129827),la=B,B=0,!(la&1)):0)?(B=0,eb(513,c|0,G|0,78310),la=B,B=0,!(la&1)):0)?(B=0,eb(513,c|0,H|0,78343),la=B,B=0,!(la&1)):0)?(B=0,eb(513,c|0,I|0,78381),la=B,B=0,!(la&1)):0)?(B=0,eb(513,c|0,J|0,78405),la=B,B=0,!(la&1)):0)?(B=0,eb(513,c|0,K|0,78423),la=B,B=0,!(la&1)):0)?(B=0,eb(513,c|0,L|0,129853),la=B,B=0,!(la&1)):0)?(B=0,eb(513,c|0,M|0,78449),la=B,B=0,!(la&1)):0)?(B=0,eb(513,c|0,N|0,78483),la=B,B=0,!(la&1)):0)?(B=0,eb(513,c|0,O|0,126946),la=B,B=0,!(la&1)):0){switch(k[l>>2]|0){case 470:case 466:case 465:case 459:case 387:break;case 389:{B=0;eb(513,c|0,V|0,133341);la=B;B=0;if(la&1){La=5;break a}B=0;eb(513,c|0,U|0,133328);la=B;B=0;if(la&1){La=5;break a}break}case 438:{B=0;eb(513,c|0,P|0,133544);la=B;B=0;if(la&1){La=5;break a}B=0;eb(513,c|0,R|0,133558);la=B;B=0;if(la&1){La=5;break a}B=0;eb(513,c|0,S|0,133571);la=B;B=0;if(la&1){La=5;break a}break}case 457:{B=0;eb(513,c|0,P|0,133544);la=B;B=0;if(la&1){La=5;break a}B=0;eb(513,c|0,R|0,133558);la=B;B=0;if(la&1){La=5;break a}B=0;eb(513,c|0,S|0,133571);la=B;B=0;if(la&1){La=5;break a}B=0;eb(513,c|0,T|0,133666);la=B;B=0;if(la&1){La=5;break a}break}default:{la=n+56|0;ma=n+4|0;k[n>>2]=27524;k[la>>2]=27544;B=0;wa(508,n+56|0,ma|0);sa=B;B=0;if(sa&1){sa=Rb()|0;Qa=Q;Ra=sa}else{k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[la>>2]=27488;B=0;va(448,ma|0);sa=B;B=0;do if(sa&1){ta=Rb()|0;Sa=Q;Ta=ta}else{k[ma>>2]=27560;ta=n+36|0;k[ta>>2]=0;k[ta+4>>2]=0;k[ta+8>>2]=0;k[ta+12>>2]=0;k[n+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,ma|0,g|0);Aa=B;B=0;if(Aa&1){Aa=Rb()|0;Ba=Q;Yua(g);Yua(ta);Ava(ma);Sa=Ba;Ta=Aa;break}Yua(g);B=0;Aa=Ia(40,n|0,133089,27)|0;Ba=B;B=0;c:do if(Ba&1)La=49;else{B=0;xa=ya(427,k[l>>2]|0)|0;Ua=B;B=0;if(Ua&1){La=49;break}Ua=Lta(xa)|0;B=0;Va=Ia(40,Aa|0,xa|0,Ua|0)|0;Ua=B;B=0;if(Ua&1){La=49;break}B=0;Ua=Ia(40,Va|0,146481,18)|0;Va=B;B=0;if(Va&1){La=49;break}B=0;Xa(239,Ua|0,0)|0;Ua=B;B=0;if(Ua&1){La=49;break}Ua=Ab(20)|0;B=0;eb(502,o|0,78522,75);Va=B;B=0;do if(!(Va&1)){B=0;eb(502,p|0,98515,6);xa=B;B=0;if(xa&1){xa=Rb()|0;Wa=Q;Yua(o);Ya=Wa;Za=xa;break}B=0;wa(510,q|0,ma|0);xa=B;B=0;if(xa&1){xa=Rb()|0;_a=Q;$a=xa;ab=1}else{B=0;ua(163,Ua|0,o|0,p|0,132,q|0);xa=B;B=0;if(xa&1)bb=1;else{B=0;eb(503,Ua|0,1240,229);B=0;bb=0}xa=Rb()|0;Wa=Q;Yua(q);_a=Wa;$a=xa;ab=bb}Yua(p);Yua(o);if(ab){Ya=_a;Za=$a}else{cb=_a;db=$a;break c}}else{xa=Rb()|0;Ya=Q;Za=xa}while(0);zb(Ua|0);cb=Ya;db=Za}while(0);if((La|0)==49){Aa=Rb()|0;cb=Q;db=Aa}k[n>>2]=27468;k[la>>2]=27488;k[ma>>2]=27560;Yua(ta);Ava(ma);vva(la);Ma=cb;Na=db;Qb(Na|0)}while(0);Qa=Sa;Ra=Ta}vva(la);Oa=Qa;Pa=Ra;break a}}d:do switch(k[j>>2]|0){case 122:{B=0;eb(513,c|0,W|0,78598);ma=B;B=0;if(ma&1){La=5;break a}B=0;eb(513,c|0,X|0,78636);ma=B;B=0;if(ma&1){La=5;break a}B=0;eb(513,c|0,Y|0,78667);ma=B;B=0;if(ma&1){La=5;break a}B=0;eb(513,c|0,Z|0,78699);ma=B;B=0;if(ma&1){La=5;break a}B=0;eb(514,c|0,h|0,131781);ma=B;B=0;if(ma&1){La=5;break a}if(!(i[h>>0]|0))break d;B=0;eb(513,c|0,_|0,78734);ma=B;B=0;if(ma&1){La=5;break a}B=0;eb(513,c|0,$|0,78767);ma=B;B=0;if(ma&1){La=5;break a}B=0;eb(513,c|0,aa|0,78793);ma=B;B=0;if(ma&1){La=5;break a}B=0;eb(513,c|0,ba|0,78828);ma=B;B=0;if(ma&1){La=5;break a}B=0;eb(513,c|0,ca|0,78863);ma=B;B=0;if(ma&1){La=5;break a}B=0;eb(513,c|0,da|0,78894);ma=B;B=0;if(ma&1){La=5;break a}break}case 119:case 165:break;default:{ma=s+56|0;sa=s+4|0;k[s>>2]=27524;k[ma>>2]=27544;B=0;wa(508,s+56|0,sa|0);ka=B;B=0;if(ka&1){ka=Rb()|0;fb=Q;gb=ka}else{k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[ma>>2]=27488;B=0;va(448,sa|0);ka=B;B=0;do if(ka&1){Aa=Rb()|0;hb=Q;ib=Aa}else{k[sa>>2]=27560;Aa=s+36|0;k[Aa>>2]=0;k[Aa+4>>2]=0;k[Aa+8>>2]=0;k[Aa+12>>2]=0;k[s+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,sa|0,f|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;pa=Q;Yua(f);Yua(Aa);Ava(sa);hb=pa;ib=Ba;break}Yua(f);B=0;Ba=Ia(40,s|0,116424,16)|0;pa=B;B=0;e:do if(pa&1)La=88;else{B=0;Va=ya(427,k[j>>2]|0)|0;za=B;B=0;if(za&1){La=88;break}za=Lta(Va)|0;B=0;xa=Ia(40,Ba|0,Va|0,za|0)|0;za=B;B=0;if(za&1){La=88;break}B=0;za=Ia(40,xa|0,146481,18)|0;xa=B;B=0;if(xa&1){La=88;break}B=0;Xa(239,za|0,0)|0;za=B;B=0;if(za&1){La=88;break}za=Ab(20)|0;B=0;eb(502,t|0,78522,75);xa=B;B=0;do if(!(xa&1)){B=0;eb(502,u|0,98515,6);Va=B;B=0;if(Va&1){Va=Rb()|0;Wa=Q;Yua(t);jb=Va;kb=Wa;break}B=0;wa(510,v|0,sa|0);Wa=B;B=0;if(Wa&1){Wa=Rb()|0;lb=1;mb=Q;nb=Wa}else{B=0;ua(163,za|0,t|0,u|0,157,v|0);Wa=B;B=0;if(Wa&1)ob=1;else{B=0;eb(503,za|0,1240,229);B=0;ob=0}Wa=Rb()|0;Va=Q;Yua(v);lb=ob;mb=Va;nb=Wa}Yua(u);Yua(t);if(lb){jb=nb;kb=mb}else{pb=mb;qb=nb;break e}}else{Wa=Rb()|0;jb=Wa;kb=Q}while(0);zb(za|0);pb=kb;qb=jb}while(0);if((La|0)==88){Ba=Rb()|0;pb=Q;qb=Ba}k[s>>2]=27468;k[ma>>2]=27488;k[sa>>2]=27560;Yua(Aa);Ava(sa);vva(ma);Ma=pb;Na=qb;Qb(Na|0)}while(0);fb=hb;gb=ib}vva(ma);Oa=fb;Pa=gb;break a}}while(0);B=0;eb(513,c|0,ea|0,78924);la=B;B=0;if(!(la&1)){B=0;eb(513,c|0,fa|0,78963);la=B;B=0;if(la&1){La=5;break}B=0;eb(513,c|0,ga|0,78996);la=B;B=0;if(la&1){La=5;break}B=0;eb(513,c|0,ha|0,79030);la=B;B=0;if(la&1){La=5;break}B=0;eb(513,c|0,ia|0,79058);la=B;B=0;if(la&1){La=5;break}r=d;return}else La=5}else La=5}else La=5;while(0);if((La|0)==5){La=Rb()|0;Oa=Q;Pa=La}Ma=Oa;Na=Pa;Qb(Na|0)}function CJ(a){a=a|0;k[a>>2]=33700;k[a+4>>2]=33864;return}function DJ(a){a=a|0;Sqa(a);return}function EJ(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0;b=r;r=r+3024|0;c=b+3e3|0;d=b+2744|0;e=b+2988|0;f=b+2608|0;g=b+2976|0;h=b+2456|0;i=b+2964|0;j=b+2320|0;l=b+2952|0;m=b+2184|0;n=b+2940|0;o=b+2032|0;q=b+2928|0;s=b+1896|0;t=b+2916|0;u=b+1744|0;v=b+2904|0;w=b+1608|0;x=b+2892|0;y=b+1456|0;z=b+2880|0;A=b+1304|0;C=b+2592|0;D=b+1168|0;E=b+2168|0;F=b+1032|0;G=b+1880|0;H=b+880|0;I=b+1592|0;J=b+744|0;K=b+1440|0;L=b+592|0;M=b+1016|0;N=b+456|0;O=b+728|0;P=b+304|0;R=b+440|0;S=b+168|0;T=b+152|0;U=b+16|0;V=b;W=d+56|0;X=d+4|0;k[d>>2]=27524;k[W>>2]=27544;B=0;wa(508,d+56|0,X|0);Y=B;B=0;if(Y&1){Y=Rb()|0;Z=Q;_=Y;vva(W);Qb(_|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[W>>2]=27488;B=0;va(448,X|0);Y=B;B=0;do if(Y&1){$=Rb()|0;aa=Q;ba=$}else{k[X>>2]=27560;$=d+36|0;k[$>>2]=0;k[$+4>>2]=0;k[$+8>>2]=0;k[$+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,X|0,c|0);ca=B;B=0;if(ca&1){ca=Rb()|0;da=Q;Yua(c);Yua($);Ava(X);aa=da;ba=ca;break}Yua(c);B=0;Ia(40,d|0,79095,8)|0;ca=B;B=0;do if(!(ca&1)?(B=0,wa(510,e|0,X|0),da=B,B=0,!(da&1)):0){B=0;ya(424,e|0)|0;da=B;B=0;if(da&1){da=Rb()|0;ea=Q;Yua(e);fa=ea;ga=da;break}Yua(e);k[d>>2]=27468;k[W>>2]=27488;k[X>>2]=27560;Yua($);Ava(X);vva(W);da=f+56|0;ea=f+4|0;k[f>>2]=27524;k[da>>2]=27544;B=0;wa(508,f+56|0,ea|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;ja=ha;vva(da);Qb(ja|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[da>>2]=27488;B=0;va(448,ea|0);ha=B;B=0;do if(ha&1){ka=Rb()|0;la=Q;ma=ka}else{k[ea>>2]=27560;ka=f+36|0;k[ka>>2]=0;k[ka+4>>2]=0;k[ka+8>>2]=0;k[ka+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ea|0,c|0);na=B;B=0;if(na&1){na=Rb()|0;oa=Q;Yua(c);Yua(ka);Ava(ea);la=oa;ma=na;break}Yua(c);B=0;na=Ia(40,f|0,143238,8)|0;oa=B;B=0;do if(((!(oa&1)?(B=0,pa=Xa(242,na|0,k[a+8>>2]|0)|0,qa=B,B=0,!(qa&1)):0)?(B=0,Ia(40,pa|0,149177,1)|0,pa=B,B=0,!(pa&1)):0)?(B=0,wa(510,g|0,ea|0),pa=B,B=0,!(pa&1)):0){B=0;ya(424,g|0)|0;pa=B;B=0;if(pa&1){pa=Rb()|0;qa=Q;Yua(g);ra=qa;sa=pa;break}Yua(g);k[f>>2]=27468;k[da>>2]=27488;k[ea>>2]=27560;Yua(ka);Ava(ea);vva(da);pa=h+56|0;qa=h+4|0;k[h>>2]=27524;k[pa>>2]=27544;B=0;wa(508,h+56|0,qa|0);ta=B;B=0;if(ta&1){ta=Rb()|0;ua=Q;xa=ta;vva(pa);Qb(xa|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[pa>>2]=27488;B=0;va(448,qa|0);ta=B;B=0;do if(ta&1){za=Rb()|0;Aa=Q;Ba=za}else{k[qa>>2]=27560;za=h+36|0;k[za>>2]=0;k[za+4>>2]=0;k[za+8>>2]=0;k[za+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,qa|0,c|0);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Da=Q;Yua(c);Yua(za);Ava(qa);Aa=Da;Ba=Ca;break}Yua(c);B=0;Ca=Ia(40,h|0,79104,12)|0;Da=B;B=0;do if(Da&1)Ea=266;else{B=0;Fa=Sa(1,Ca|0,+(+p[a+16>>3]))|0;Ga=B;B=0;if(Ga&1){Ea=266;break}B=0;Ia(40,Fa|0,149177,1)|0;Fa=B;B=0;if(Fa&1){Ea=266;break}B=0;wa(510,i|0,qa|0);Fa=B;B=0;if(Fa&1){Ea=266;break}B=0;ya(424,i|0)|0;Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ga=Q;Yua(i);Ha=Ga;Ja=Fa;break}Yua(i);k[h>>2]=27468;k[pa>>2]=27488;k[qa>>2]=27560;Yua(za);Ava(qa);vva(pa);Fa=j+56|0;Ga=j+4|0;k[j>>2]=27524;k[Fa>>2]=27544;B=0;wa(508,j+56|0,Ga|0);Ka=B;B=0;if(Ka&1){Ka=Rb()|0;La=Q;Ma=Ka;vva(Fa);Qb(Ma|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[Fa>>2]=27488;B=0;va(448,Ga|0);Ka=B;B=0;do if(Ka&1){Na=Rb()|0;Oa=Q;Pa=Na}else{k[Ga>>2]=27560;Na=j+36|0;k[Na>>2]=0;k[Na+4>>2]=0;k[Na+8>>2]=0;k[Na+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ga|0,c|0);Qa=B;B=0;if(Qa&1){Qa=Rb()|0;Ra=Q;Yua(c);Yua(Na);Ava(Ga);Oa=Ra;Pa=Qa;break}Yua(c);B=0;Qa=Ia(40,j|0,79117,14)|0;Ra=B;B=0;do if(Ra&1)Ea=269;else{B=0;Ta=Sa(1,Qa|0,+(+p[a+24>>3]))|0;Ua=B;B=0;if(Ua&1){Ea=269;break}B=0;Ia(40,Ta|0,149177,1)|0;Ta=B;B=0;if(Ta&1){Ea=269;break}B=0;wa(510,l|0,Ga|0);Ta=B;B=0;if(Ta&1){Ea=269;break}B=0;ya(424,l|0)|0;Ta=B;B=0;if(Ta&1){Ta=Rb()|0;Ua=Q;Yua(l);Va=Ua;Wa=Ta;break}Yua(l);k[j>>2]=27468;k[Fa>>2]=27488;k[Ga>>2]=27560;Yua(Na);Ava(Ga);vva(Fa);Ta=m+56|0;Ua=m+4|0;k[m>>2]=27524;k[Ta>>2]=27544;B=0;wa(508,m+56|0,Ua|0);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;Za=Q;_a=Ya;vva(Ta);Qb(_a|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[Ta>>2]=27488;B=0;va(448,Ua|0);Ya=B;B=0;do if(Ya&1){$a=Rb()|0;ab=Q;bb=$a}else{k[Ua>>2]=27560;$a=m+36|0;k[$a>>2]=0;k[$a+4>>2]=0;k[$a+8>>2]=0;k[$a+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ua|0,c|0);cb=B;B=0;if(cb&1){cb=Rb()|0;db=Q;Yua(c);Yua($a);Ava(Ua);ab=db;bb=cb;break}Yua(c);B=0;cb=Ia(40,m|0,79132,19)|0;db=B;B=0;do if(db&1)Ea=272;else{B=0;eb=Sa(1,cb|0,+(+p[a+32>>3]))|0;fb=B;B=0;if(fb&1){Ea=272;break}B=0;Ia(40,eb|0,149177,1)|0;eb=B;B=0;if(eb&1){Ea=272;break}B=0;wa(510,n|0,Ua|0);eb=B;B=0;if(eb&1){Ea=272;break}B=0;ya(424,n|0)|0;eb=B;B=0;if(eb&1){eb=Rb()|0;fb=Q;Yua(n);gb=fb;hb=eb;break}Yua(n);k[m>>2]=27468;k[Ta>>2]=27488;k[Ua>>2]=27560;Yua($a);Ava(Ua);vva(Ta);eb=o+56|0;fb=o+4|0;k[o>>2]=27524;k[eb>>2]=27544;B=0;wa(508,o+56|0,fb|0);ib=B;B=0;if(ib&1){ib=Rb()|0;jb=Q;kb=ib;vva(eb);Qb(kb|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[eb>>2]=27488;B=0;va(448,fb|0);ib=B;B=0;do if(ib&1){lb=Rb()|0;mb=Q;nb=lb}else{k[fb>>2]=27560;lb=o+36|0;k[lb>>2]=0;k[lb+4>>2]=0;k[lb+8>>2]=0;k[lb+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,fb|0,c|0);ob=B;B=0;if(ob&1){ob=Rb()|0;pb=Q;Yua(c);Yua(lb);Ava(fb);mb=pb;nb=ob;break}Yua(c);B=0;ob=Ia(40,o|0,79152,13)|0;pb=B;B=0;do if(pb&1)Ea=275;else{B=0;qb=Sa(1,ob|0,+(+p[a+40>>3]))|0;rb=B;B=0;if(rb&1){Ea=275;break}B=0;Ia(40,qb|0,149177,1)|0;qb=B;B=0;if(qb&1){Ea=275;break}B=0;wa(510,q|0,fb|0);qb=B;B=0;if(qb&1){Ea=275;break}B=0;ya(424,q|0)|0;qb=B;B=0;if(qb&1){qb=Rb()|0;rb=Q;Yua(q);sb=rb;tb=qb;break}Yua(q);k[o>>2]=27468;k[eb>>2]=27488;k[fb>>2]=27560;Yua(lb);Ava(fb);vva(eb);qb=s+56|0;rb=s+4|0;k[s>>2]=27524;k[qb>>2]=27544;B=0;wa(508,s+56|0,rb|0);ub=B;B=0;if(ub&1){ub=Rb()|0;vb=Q;wb=ub;vva(qb);Qb(wb|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[qb>>2]=27488;B=0;va(448,rb|0);ub=B;B=0;do if(ub&1){xb=Rb()|0;yb=Q;zb=xb}else{k[rb>>2]=27560;xb=s+36|0;k[xb>>2]=0;k[xb+4>>2]=0;k[xb+8>>2]=0;k[xb+12>>2]=0;k[s+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,rb|0,c|0);Ab=B;B=0;if(Ab&1){Ab=Rb()|0;Bb=Q;Yua(c);Yua(xb);Ava(rb);yb=Bb;zb=Ab;break}Yua(c);B=0;Ab=Ia(40,s|0,79166,17)|0;Bb=B;B=0;do if(Bb&1)Ea=278;else{B=0;Cb=Sa(1,Ab|0,+(+p[a+48>>3]))|0;Db=B;B=0;if(Db&1){Ea=278;break}B=0;Ia(40,Cb|0,149177,1)|0;Cb=B;B=0;if(Cb&1){Ea=278;break}B=0;wa(510,t|0,rb|0);Cb=B;B=0;if(Cb&1){Ea=278;break}B=0;ya(424,t|0)|0;Cb=B;B=0;if(Cb&1){Cb=Rb()|0;Db=Q;Yua(t);Eb=Db;Fb=Cb;break}Yua(t);k[s>>2]=27468;k[qb>>2]=27488;k[rb>>2]=27560;Yua(xb);Ava(rb);vva(qb);Cb=u+56|0;Db=u+4|0;k[u>>2]=27524;k[Cb>>2]=27544;B=0;wa(508,u+56|0,Db|0);Gb=B;B=0;if(Gb&1){Gb=Rb()|0;Hb=Q;Ib=Gb;vva(Cb);Qb(Ib|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[Cb>>2]=27488;B=0;va(448,Db|0);Gb=B;B=0;do if(Gb&1){Jb=Rb()|0;Kb=Q;Lb=Jb}else{k[Db>>2]=27560;Jb=u+36|0;k[Jb>>2]=0;k[Jb+4>>2]=0;k[Jb+8>>2]=0;k[Jb+12>>2]=0;k[u+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Db|0,c|0);Mb=B;B=0;if(Mb&1){Mb=Rb()|0;Nb=Q;Yua(c);Yua(Jb);Ava(Db);Kb=Nb;Lb=Mb;break}Yua(c);B=0;Mb=Ia(40,u|0,79184,24)|0;Nb=B;B=0;do if(Nb&1)Ea=281;else{B=0;Ob=Sa(1,Mb|0,+(+p[a+56>>3]))|0;Pb=B;B=0;if(Pb&1){Ea=281;break}B=0;Ia(40,Ob|0,149177,1)|0;Ob=B;B=0;if(Ob&1){Ea=281;break}B=0;wa(510,v|0,Db|0);Ob=B;B=0;if(Ob&1){Ea=281;break}B=0;ya(424,v|0)|0;Ob=B;B=0;if(Ob&1){Ob=Rb()|0;Pb=Q;Yua(v);Sb=Pb;Tb=Ob;break}Yua(v);k[u>>2]=27468;k[Cb>>2]=27488;k[Db>>2]=27560;Yua(Jb);Ava(Db);vva(Cb);Ob=w+56|0;Pb=w+4|0;k[w>>2]=27524;k[Ob>>2]=27544;B=0;wa(508,w+56|0,Pb|0);Ub=B;B=0;if(Ub&1){Ub=Rb()|0;Vb=Q;Wb=Ub;vva(Ob);Qb(Wb|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[Ob>>2]=27488;B=0;va(448,Pb|0);Ub=B;B=0;do if(Ub&1){Xb=Rb()|0;Yb=Q;Zb=Xb}else{k[Pb>>2]=27560;Xb=w+36|0;k[Xb>>2]=0;k[Xb+4>>2]=0;k[Xb+8>>2]=0;k[Xb+12>>2]=0;k[w+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Pb|0,c|0);_b=B;B=0;if(_b&1){_b=Rb()|0;$b=Q;Yua(c);Yua(Xb);Ava(Pb);Yb=$b;Zb=_b;break}Yua(c);B=0;_b=Ia(40,w|0,79209,29)|0;$b=B;B=0;do if($b&1)Ea=284;else{B=0;ac=Sa(1,_b|0,+(+p[a+64>>3]))|0;bc=B;B=0;if(bc&1){Ea=284;break}B=0;Ia(40,ac|0,149177,1)|0;ac=B;B=0;if(ac&1){Ea=284;break}B=0;wa(510,x|0,Pb|0);ac=B;B=0;if(ac&1){Ea=284;break}B=0;ya(424,x|0)|0;ac=B;B=0;if(ac&1){ac=Rb()|0;bc=Q;Yua(x);cc=bc;dc=ac;break}Yua(x);k[w>>2]=27468;k[Ob>>2]=27488;k[Pb>>2]=27560;Yua(Xb);Ava(Pb);vva(Ob);ac=y+56|0;bc=y+4|0;k[y>>2]=27524;k[ac>>2]=27544;B=0;wa(508,y+56|0,bc|0);ec=B;B=0;if(ec&1){ec=Rb()|0;fc=Q;gc=ec;vva(ac);Qb(gc|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[ac>>2]=27488;B=0;va(448,bc|0);ec=B;B=0;do if(ec&1){hc=Rb()|0;ic=Q;jc=hc}else{k[bc>>2]=27560;hc=y+36|0;k[hc>>2]=0;k[hc+4>>2]=0;k[hc+8>>2]=0;k[hc+12>>2]=0;k[y+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,bc|0,c|0);kc=B;B=0;if(kc&1){kc=Rb()|0;lc=Q;Yua(c);Yua(hc);Ava(bc);ic=lc;jc=kc;break}Yua(c);B=0;kc=Ia(40,y|0,79239,15)|0;lc=B;B=0;do if(lc&1)Ea=287;else{B=0;mc=Sa(1,kc|0,+(+p[a+72>>3]))|0;nc=B;B=0;if(nc&1){Ea=287;break}B=0;Ia(40,mc|0,149177,1)|0;mc=B;B=0;if(mc&1){Ea=287;break}B=0;wa(510,z|0,bc|0);mc=B;B=0;if(mc&1){Ea=287;break}B=0;ya(424,z|0)|0;mc=B;B=0;if(mc&1){mc=Rb()|0;nc=Q;Yua(z);oc=nc;pc=mc;break}Yua(z);k[y>>2]=27468;k[ac>>2]=27488;k[bc>>2]=27560;Yua(hc);Ava(bc);vva(ac);mc=A+56|0;nc=A+4|0;k[A>>2]=27524;k[mc>>2]=27544;B=0;wa(508,A+56|0,nc|0);qc=B;B=0;if(qc&1){qc=Rb()|0;rc=Q;sc=qc;vva(mc);Qb(sc|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[mc>>2]=27488;B=0;va(448,nc|0);qc=B;B=0;do if(qc&1){tc=Rb()|0;uc=Q;vc=tc}else{k[nc>>2]=27560;tc=A+36|0;k[tc>>2]=0;k[tc+4>>2]=0;k[tc+8>>2]=0;k[tc+12>>2]=0;k[A+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,nc|0,c|0);wc=B;B=0;if(wc&1){wc=Rb()|0;xc=Q;Yua(c);Yua(tc);Ava(nc);uc=xc;vc=wc;break}Yua(c);B=0;wc=Ia(40,A|0,79255,9)|0;xc=B;B=0;do if(xc&1)Ea=290;else{B=0;yc=Sa(1,wc|0,+(+p[a+80>>3]))|0;zc=B;B=0;if(zc&1){Ea=290;break}B=0;Ia(40,yc|0,149177,1)|0;yc=B;B=0;if(yc&1){Ea=290;break}B=0;wa(510,C|0,nc|0);yc=B;B=0;if(yc&1){Ea=290;break}B=0;ya(424,C|0)|0;yc=B;B=0;if(yc&1){yc=Rb()|0;zc=Q;Yua(C);Ac=zc;Bc=yc;break}Yua(C);k[A>>2]=27468;k[mc>>2]=27488;k[nc>>2]=27560;Yua(tc);Ava(nc);vva(mc);yc=D+56|0;zc=D+4|0;k[D>>2]=27524;k[yc>>2]=27544;B=0;wa(508,D+56|0,zc|0);Cc=B;B=0;if(Cc&1){Cc=Rb()|0;Dc=Q;Ec=Cc;vva(yc);Qb(Ec|0)}k[D+128>>2]=0;k[D+132>>2]=-1;k[D>>2]=27468;k[yc>>2]=27488;B=0;va(448,zc|0);Cc=B;B=0;do if(Cc&1){Fc=Rb()|0;Gc=Q;Hc=Fc}else{k[zc>>2]=27560;Fc=D+36|0;k[Fc>>2]=0;k[Fc+4>>2]=0;k[Fc+8>>2]=0;k[Fc+12>>2]=0;k[D+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,zc|0,c|0);Ic=B;B=0;if(Ic&1){Ic=Rb()|0;Jc=Q;Yua(c);Yua(Fc);Ava(zc);Gc=Jc;Hc=Ic;break}Yua(c);B=0;Ic=Ia(40,D|0,79265,17)|0;Jc=B;B=0;do if(Jc&1)Ea=293;else{B=0;Kc=Sa(1,Ic|0,+(+p[a+88>>3]))|0;Lc=B;B=0;if(Lc&1){Ea=293;break}B=0;Ia(40,Kc|0,149177,1)|0;Kc=B;B=0;if(Kc&1){Ea=293;break}B=0;wa(510,E|0,zc|0);Kc=B;B=0;if(Kc&1){Ea=293;break}B=0;ya(424,E|0)|0;Kc=B;B=0;if(Kc&1){Kc=Rb()|0;Lc=Q;Yua(E);Mc=Lc;Nc=Kc;break}Yua(E);k[D>>2]=27468;k[yc>>2]=27488;k[zc>>2]=27560;Yua(Fc);Ava(zc);vva(yc);Kc=F+56|0;Lc=F+4|0;k[F>>2]=27524;k[Kc>>2]=27544;B=0;wa(508,F+56|0,Lc|0);Oc=B;B=0;if(Oc&1){Oc=Rb()|0;Pc=Q;Qc=Oc;vva(Kc);Qb(Qc|0)}k[F+128>>2]=0;k[F+132>>2]=-1;k[F>>2]=27468;k[Kc>>2]=27488;B=0;va(448,Lc|0);Oc=B;B=0;do if(Oc&1){Rc=Rb()|0;Sc=Q;Tc=Rc}else{k[Lc>>2]=27560;Rc=F+36|0;k[Rc>>2]=0;k[Rc+4>>2]=0;k[Rc+8>>2]=0;k[Rc+12>>2]=0;k[F+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Lc|0,c|0);Uc=B;B=0;if(Uc&1){Uc=Rb()|0;Vc=Q;Yua(c);Yua(Rc);Ava(Lc);Sc=Vc;Tc=Uc;break}Yua(c);B=0;Uc=Ia(40,F|0,79283,25)|0;Vc=B;B=0;do if(Vc&1)Ea=296;else{B=0;Wc=Sa(1,Uc|0,+(+p[a+96>>3]))|0;Xc=B;B=0;if(Xc&1){Ea=296;break}B=0;Ia(40,Wc|0,149177,1)|0;Wc=B;B=0;if(Wc&1){Ea=296;break}B=0;wa(510,G|0,Lc|0);Wc=B;B=0;if(Wc&1){Ea=296;break}B=0;ya(424,G|0)|0;Wc=B;B=0;if(Wc&1){Wc=Rb()|0;Xc=Q;Yua(G);Yc=Xc;Zc=Wc;break}Yua(G);k[F>>2]=27468;k[Kc>>2]=27488;k[Lc>>2]=27560;Yua(Rc);Ava(Lc);vva(Kc);Wc=H+56|0;Xc=H+4|0;k[H>>2]=27524;k[Wc>>2]=27544;B=0;wa(508,H+56|0,Xc|0);_c=B;B=0;if(_c&1){_c=Rb()|0;$c=Q;ad=_c;vva(Wc);Qb(ad|0)}k[H+128>>2]=0;k[H+132>>2]=-1;k[H>>2]=27468;k[Wc>>2]=27488;B=0;va(448,Xc|0);_c=B;B=0;do if(_c&1){bd=Rb()|0;cd=Q;dd=bd}else{k[Xc>>2]=27560;bd=H+36|0;k[bd>>2]=0;k[bd+4>>2]=0;k[bd+8>>2]=0;k[bd+12>>2]=0;k[H+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Xc|0,c|0);ed=B;B=0;if(ed&1){ed=Rb()|0;fd=Q;Yua(c);Yua(bd);Ava(Xc);cd=fd;dd=ed;break}Yua(c);B=0;ed=Ia(40,H|0,79309,25)|0;fd=B;B=0;do if(fd&1)Ea=299;else{B=0;gd=Sa(1,ed|0,+(+p[a+104>>3]))|0;hd=B;B=0;if(hd&1){Ea=299;break}B=0;Ia(40,gd|0,149177,1)|0;gd=B;B=0;if(gd&1){Ea=299;break}B=0;wa(510,I|0,Xc|0);gd=B;B=0;if(gd&1){Ea=299;break}B=0;ya(424,I|0)|0;gd=B;B=0;if(gd&1){gd=Rb()|0;hd=Q;Yua(I);id=hd;jd=gd;break}Yua(I);k[H>>2]=27468;k[Wc>>2]=27488;k[Xc>>2]=27560;Yua(bd);Ava(Xc);vva(Wc);gd=J+56|0;hd=J+4|0;k[J>>2]=27524;k[gd>>2]=27544;B=0;wa(508,J+56|0,hd|0);kd=B;B=0;if(kd&1){kd=Rb()|0;ld=Q;md=kd;vva(gd);Qb(md|0)}k[J+128>>2]=0;k[J+132>>2]=-1;k[J>>2]=27468;k[gd>>2]=27488;B=0;va(448,hd|0);kd=B;B=0;do if(kd&1){nd=Rb()|0;od=Q;pd=nd}else{k[hd>>2]=27560;nd=J+36|0;k[nd>>2]=0;k[nd+4>>2]=0;k[nd+8>>2]=0;k[nd+12>>2]=0;k[J+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,hd|0,c|0);qd=B;B=0;if(qd&1){qd=Rb()|0;rd=Q;Yua(c);Yua(nd);Ava(hd);od=rd;pd=qd;break}Yua(c);B=0;qd=Ia(40,J|0,79335,30)|0;rd=B;B=0;do if(rd&1)Ea=302;else{B=0;sd=Sa(1,qd|0,+(+p[a+112>>3]))|0;td=B;B=0;if(td&1){Ea=302;break}B=0;Ia(40,sd|0,149177,1)|0;sd=B;B=0;if(sd&1){Ea=302;break}B=0;wa(510,K|0,hd|0);sd=B;B=0;if(sd&1){Ea=302;break}B=0;ya(424,K|0)|0;sd=B;B=0;if(sd&1){sd=Rb()|0;td=Q;Yua(K);ud=td;vd=sd;break}Yua(K);k[J>>2]=27468;k[gd>>2]=27488;k[hd>>2]=27560;Yua(nd);Ava(hd);vva(gd);sd=L+56|0;td=L+4|0;k[L>>2]=27524;k[sd>>2]=27544;B=0;wa(508,L+56|0,td|0);wd=B;B=0;if(wd&1){wd=Rb()|0;xd=Q;yd=wd;vva(sd);Qb(yd|0)}k[L+128>>2]=0;k[L+132>>2]=-1;k[L>>2]=27468;k[sd>>2]=27488;B=0;va(448,td|0);wd=B;B=0;do if(wd&1){zd=Rb()|0;Ad=Q;Bd=zd}else{k[td>>2]=27560;zd=L+36|0;k[zd>>2]=0;k[zd+4>>2]=0;k[zd+8>>2]=0;k[zd+12>>2]=0;k[L+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,td|0,c|0);Cd=B;B=0;if(Cd&1){Cd=Rb()|0;Dd=Q;Yua(c);Yua(zd);Ava(td);Ad=Dd;Bd=Cd;break}Yua(c);B=0;Cd=Ia(40,L|0,79366,6)|0;Dd=B;B=0;do if(Dd&1)Ea=305;else{B=0;Ed=Sa(1,Cd|0,+(+p[a+120>>3]))|0;Fd=B;B=0;if(Fd&1){Ea=305;break}B=0;Ia(40,Ed|0,149177,1)|0;Ed=B;B=0;if(Ed&1){Ea=305;break}B=0;wa(510,M|0,td|0);Ed=B;B=0;if(Ed&1){Ea=305;break}B=0;ya(424,M|0)|0;Ed=B;B=0;if(Ed&1){Ed=Rb()|0;Fd=Q;Yua(M);Gd=Fd;Hd=Ed;break}Yua(M);k[L>>2]=27468;k[sd>>2]=27488;k[td>>2]=27560;Yua(zd);Ava(td);vva(sd);Ed=N+56|0;Fd=N+4|0;k[N>>2]=27524;k[Ed>>2]=27544;B=0;wa(508,N+56|0,Fd|0);Id=B;B=0;if(Id&1){Id=Rb()|0;Jd=Q;Kd=Id;vva(Ed);Qb(Kd|0)}k[N+128>>2]=0;k[N+132>>2]=-1;k[N>>2]=27468;k[Ed>>2]=27488;B=0;va(448,Fd|0);Id=B;B=0;do if(Id&1){Ld=Rb()|0;Md=Q;Nd=Ld}else{k[Fd>>2]=27560;Ld=N+36|0;k[Ld>>2]=0;k[Ld+4>>2]=0;k[Ld+8>>2]=0;k[Ld+12>>2]=0;k[N+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Fd|0,c|0);Od=B;B=0;if(Od&1){Od=Rb()|0;Pd=Q;Yua(c);Yua(Ld);Ava(Fd);Md=Pd;Nd=Od;break}Yua(c);B=0;Od=Ia(40,N|0,79373,11)|0;Pd=B;B=0;do if(Pd&1)Ea=308;else{B=0;Qd=Sa(1,Od|0,+(+p[a+136>>3]))|0;Rd=B;B=0;if(Rd&1){Ea=308;break}B=0;Ia(40,Qd|0,149177,1)|0;Qd=B;B=0;if(Qd&1){Ea=308;break}B=0;wa(510,O|0,Fd|0);Qd=B;B=0;if(Qd&1){Ea=308;break}B=0;ya(424,O|0)|0;Qd=B;B=0;if(Qd&1){Qd=Rb()|0;Rd=Q;Yua(O);Sd=Rd;Td=Qd;break}Yua(O);k[N>>2]=27468;k[Ed>>2]=27488;k[Fd>>2]=27560;Yua(Ld);Ava(Fd);vva(Ed);Qd=P+56|0;Rd=P+4|0;k[P>>2]=27524;k[Qd>>2]=27544;B=0;wa(508,P+56|0,Rd|0);Ud=B;B=0;if(Ud&1){Ud=Rb()|0;Vd=Q;Wd=Ud;vva(Qd);Qb(Wd|0)}k[P+128>>2]=0;k[P+132>>2]=-1;k[P>>2]=27468;k[Qd>>2]=27488;B=0;va(448,Rd|0);Ud=B;B=0;do if(Ud&1){Xd=Rb()|0;Yd=Q;Zd=Xd}else{k[Rd>>2]=27560;Xd=P+36|0;k[Xd>>2]=0;k[Xd+4>>2]=0;k[Xd+8>>2]=0;k[Xd+12>>2]=0;k[P+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Rd|0,c|0);_d=B;B=0;if(_d&1){_d=Rb()|0;$d=Q;Yua(c);Yua(Xd);Ava(Rd);Yd=$d;Zd=_d;break}Yua(c);B=0;_d=Ia(40,P|0,79385,10)|0;$d=B;B=0;do if($d&1)Ea=311;else{B=0;ae=Sa(1,_d|0,+(+p[a+144>>3]))|0;be=B;B=0;if(be&1){Ea=311;break}B=0;Ia(40,ae|0,149177,1)|0;ae=B;B=0;if(ae&1){Ea=311;break}B=0;wa(510,R|0,Rd|0);ae=B;B=0;if(ae&1){Ea=311;break}B=0;ya(424,R|0)|0;ae=B;B=0;if(ae&1){ae=Rb()|0;be=Q;Yua(R);ce=be;de=ae;break}Yua(R);k[P>>2]=27468;k[Qd>>2]=27488;k[Rd>>2]=27560;Yua(Xd);Ava(Rd);vva(Qd);ae=S+56|0;be=S+4|0;k[S>>2]=27524;k[ae>>2]=27544;B=0;wa(508,S+56|0,be|0);ee=B;B=0;if(ee&1){ee=Rb()|0;fe=Q;ge=ee;vva(ae);Qb(ge|0)}k[S+128>>2]=0;k[S+132>>2]=-1;k[S>>2]=27468;k[ae>>2]=27488;B=0;va(448,be|0);ee=B;B=0;do if(ee&1){he=Rb()|0;ie=Q;je=he}else{k[be>>2]=27560;he=S+36|0;k[he>>2]=0;k[he+4>>2]=0;k[he+8>>2]=0;k[he+12>>2]=0;k[S+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,be|0,c|0);ke=B;B=0;if(ke&1){ke=Rb()|0;le=Q;Yua(c);Yua(he);Ava(be);ie=le;je=ke;break}Yua(c);B=0;ke=Ia(40,S|0,79396,13)|0;le=B;B=0;do if(le&1)Ea=314;else{B=0;me=Sa(1,ke|0,+(+p[a+152>>3]))|0;ne=B;B=0;if(ne&1){Ea=314;break}B=0;Ia(40,me|0,149177,1)|0;me=B;B=0;if(me&1){Ea=314;break}B=0;wa(510,T|0,be|0);me=B;B=0;if(me&1){Ea=314;break}B=0;ya(424,T|0)|0;me=B;B=0;if(me&1){me=Rb()|0;ne=Q;Yua(T);oe=ne;pe=me;break}Yua(T);k[S>>2]=27468;k[ae>>2]=27488;k[be>>2]=27560;Yua(he);Ava(be);vva(ae);me=U+56|0;ne=U+4|0;k[U>>2]=27524;k[me>>2]=27544;B=0;wa(508,U+56|0,ne|0);qe=B;B=0;if(qe&1){qe=Rb()|0;re=Q;se=qe;vva(me);Qb(se|0)}k[U+128>>2]=0;k[U+132>>2]=-1;k[U>>2]=27468;k[me>>2]=27488;B=0;va(448,ne|0);qe=B;B=0;do if(qe&1){te=Rb()|0;ue=Q;ve=te}else{k[ne>>2]=27560;te=U+36|0;k[te>>2]=0;k[te+4>>2]=0;k[te+8>>2]=0;k[te+12>>2]=0;k[U+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ne|0,c|0);we=B;B=0;if(we&1){we=Rb()|0;xe=Q;Yua(c);Yua(te);Ava(ne);ue=xe;ve=we;break}Yua(c);B=0;we=Ia(40,U|0,79410,12)|0;xe=B;B=0;do if(!(xe&1)){B=0;ye=Sa(1,we|0,+(+p[a+160>>3]))|0;ze=B;B=0;if(ze&1){Ea=317;break}B=0;Ia(40,ye|0,149177,1)|0;ye=B;B=0;if(ye&1){Ea=317;break}B=0;wa(510,V|0,ne|0);ye=B;B=0;if(ye&1){Ea=317;break}B=0;ya(424,V|0)|0;ye=B;B=0;if(ye&1){ye=Rb()|0;ze=Q;Yua(V);Ae=ze;Be=ye;break}else{Yua(V);k[U>>2]=27468;k[me>>2]=27488;k[ne>>2]=27560;Yua(te);Ava(ne);vva(me);r=b;return}}else Ea=317;while(0);if((Ea|0)==317){we=Rb()|0;Ae=Q;Be=we}k[U>>2]=27468;k[me>>2]=27488;k[ne>>2]=27560;Yua(te);Ava(ne);vva(me);Ce=Ae;De=Be;Qb(De|0)}while(0);re=ue;se=ve;vva(me);Qb(se|0)}while(0);if((Ea|0)==314){ke=Rb()|0;oe=Q;pe=ke}k[S>>2]=27468;k[ae>>2]=27488;k[be>>2]=27560;Yua(he);Ava(be);vva(ae);Ce=oe;De=pe;Qb(De|0)}while(0);fe=ie;ge=je;vva(ae);Qb(ge|0)}while(0);if((Ea|0)==311){_d=Rb()|0;ce=Q;de=_d}k[P>>2]=27468;k[Qd>>2]=27488;k[Rd>>2]=27560;Yua(Xd);Ava(Rd);vva(Qd);Ce=ce;De=de;Qb(De|0)}while(0);Vd=Yd;Wd=Zd;vva(Qd);Qb(Wd|0)}while(0);if((Ea|0)==308){Od=Rb()|0;Sd=Q;Td=Od}k[N>>2]=27468;k[Ed>>2]=27488;k[Fd>>2]=27560;Yua(Ld);Ava(Fd);vva(Ed);Ce=Sd;De=Td;Qb(De|0)}while(0);Jd=Md;Kd=Nd;vva(Ed);Qb(Kd|0)}while(0);if((Ea|0)==305){Cd=Rb()|0;Gd=Q;Hd=Cd}k[L>>2]=27468;k[sd>>2]=27488;k[td>>2]=27560;Yua(zd);Ava(td);vva(sd);Ce=Gd;De=Hd;Qb(De|0)}while(0);xd=Ad;yd=Bd;vva(sd);Qb(yd|0)}while(0);if((Ea|0)==302){qd=Rb()|0;ud=Q;vd=qd}k[J>>2]=27468;k[gd>>2]=27488;k[hd>>2]=27560;Yua(nd);Ava(hd);vva(gd);Ce=ud;De=vd;Qb(De|0)}while(0);ld=od;md=pd;vva(gd);Qb(md|0)}while(0);if((Ea|0)==299){ed=Rb()|0;id=Q;jd=ed}k[H>>2]=27468;k[Wc>>2]=27488;k[Xc>>2]=27560;Yua(bd);Ava(Xc);vva(Wc);Ce=id;De=jd;Qb(De|0)}while(0);$c=cd;ad=dd;vva(Wc);Qb(ad|0)}while(0);if((Ea|0)==296){Uc=Rb()|0;Yc=Q;Zc=Uc}k[F>>2]=27468;k[Kc>>2]=27488;k[Lc>>2]=27560;Yua(Rc);Ava(Lc);vva(Kc);Ce=Yc;De=Zc;Qb(De|0)}while(0);Pc=Sc;Qc=Tc;vva(Kc);Qb(Qc|0)}while(0);if((Ea|0)==293){Ic=Rb()|0;Mc=Q;Nc=Ic}k[D>>2]=27468;k[yc>>2]=27488;k[zc>>2]=27560;Yua(Fc);Ava(zc);vva(yc);Ce=Mc;De=Nc;Qb(De|0)}while(0);Dc=Gc;Ec=Hc;vva(yc);Qb(Ec|0)}while(0);if((Ea|0)==290){wc=Rb()|0;Ac=Q;Bc=wc}k[A>>2]=27468;k[mc>>2]=27488;k[nc>>2]=27560;Yua(tc);Ava(nc);vva(mc);Ce=Ac;De=Bc;Qb(De|0)}while(0);rc=uc;sc=vc;vva(mc);Qb(sc|0)}while(0);if((Ea|0)==287){kc=Rb()|0;oc=Q;pc=kc}k[y>>2]=27468;k[ac>>2]=27488;k[bc>>2]=27560;Yua(hc);Ava(bc);vva(ac);Ce=oc;De=pc;Qb(De|0)}while(0);fc=ic;gc=jc;vva(ac);Qb(gc|0)}while(0);if((Ea|0)==284){_b=Rb()|0;cc=Q;dc=_b}k[w>>2]=27468;k[Ob>>2]=27488;k[Pb>>2]=27560;Yua(Xb);Ava(Pb);vva(Ob);Ce=cc;De=dc;Qb(De|0)}while(0);Vb=Yb;Wb=Zb;vva(Ob);Qb(Wb|0)}while(0);if((Ea|0)==281){Mb=Rb()|0;Sb=Q;Tb=Mb}k[u>>2]=27468;k[Cb>>2]=27488;k[Db>>2]=27560;Yua(Jb);Ava(Db);vva(Cb);Ce=Sb;De=Tb;Qb(De|0)}while(0);Hb=Kb;Ib=Lb;vva(Cb);Qb(Ib|0)}while(0);if((Ea|0)==278){Ab=Rb()|0;Eb=Q;Fb=Ab}k[s>>2]=27468;k[qb>>2]=27488;k[rb>>2]=27560;Yua(xb);Ava(rb);vva(qb);Ce=Eb;De=Fb;Qb(De|0)}while(0);vb=yb;wb=zb;vva(qb);Qb(wb|0)}while(0);if((Ea|0)==275){ob=Rb()|0;sb=Q;tb=ob}k[o>>2]=27468;k[eb>>2]=27488;k[fb>>2]=27560;Yua(lb);Ava(fb);vva(eb);Ce=sb;De=tb;Qb(De|0)}while(0);jb=mb;kb=nb;vva(eb);Qb(kb|0)}while(0);if((Ea|0)==272){cb=Rb()|0;gb=Q;hb=cb}k[m>>2]=27468;k[Ta>>2]=27488;k[Ua>>2]=27560;Yua($a);Ava(Ua);vva(Ta);Ce=gb;De=hb;Qb(De|0)}while(0);Za=ab;_a=bb;vva(Ta);Qb(_a|0)}while(0);if((Ea|0)==269){Qa=Rb()|0;Va=Q;Wa=Qa}k[j>>2]=27468;k[Fa>>2]=27488;k[Ga>>2]=27560;Yua(Na);Ava(Ga);vva(Fa);Ce=Va;De=Wa;Qb(De|0)}while(0);La=Oa;Ma=Pa;vva(Fa);Qb(Ma|0)}while(0);if((Ea|0)==266){Ca=Rb()|0;Ha=Q;Ja=Ca}k[h>>2]=27468;k[pa>>2]=27488;k[qa>>2]=27560;Yua(za);Ava(qa);vva(pa);Ce=Ha;De=Ja;Qb(De|0)}while(0);ua=Aa;xa=Ba;vva(pa);Qb(xa|0)}else Ea=263;while(0);if((Ea|0)==263){na=Rb()|0;ra=Q;sa=na}k[f>>2]=27468;k[da>>2]=27488;k[ea>>2]=27560;Yua(ka);Ava(ea);vva(da);Ce=ra;De=sa;Qb(De|0)}while(0);ia=la;ja=ma;vva(da);Qb(ja|0)}else Ea=260;while(0);if((Ea|0)==260){ca=Rb()|0;fa=Q;ga=ca}k[d>>2]=27468;k[W>>2]=27488;k[X>>2]=27560;Yua($);Ava(X);vva(W);Ce=fa;De=ga;Qb(De|0)}while(0);Z=aa;_=ba;vva(W);Qb(_|0)}function FJ(a){a=a|0;Ec[k[(k[a>>2]|0)+8>>2]&1023](a);return}function GJ(a){a=a|0;return k[a+8>>2]|0}function HJ(a){a=a|0;return 586}function IJ(a){a=a|0;var b=0,c=0,d=0;b=Qqa(376)|0;k[b>>2]=33700;k[b+4>>2]=33864;c=b+8|0;d=a+8|0;TEa(c|0,d|0,368)|0;k[c>>2]=k[d>>2];p[b+16>>3]=+p[a+16>>3];p[b+24>>3]=+p[a+24>>3];p[b+32>>3]=+p[a+32>>3];p[b+40>>3]=+p[a+40>>3];p[b+48>>3]=+p[a+48>>3];p[b+56>>3]=+p[a+56>>3];p[b+64>>3]=+p[a+64>>3];p[b+72>>3]=+p[a+72>>3];p[b+80>>3]=+p[a+80>>3];p[b+88>>3]=+p[a+88>>3];p[b+96>>3]=+p[a+96>>3];p[b+104>>3]=+p[a+104>>3];p[b+112>>3]=+p[a+112>>3];p[b+120>>3]=+p[a+120>>3];p[b+136>>3]=+p[a+136>>3];p[b+144>>3]=+p[a+144>>3];p[b+152>>3]=+p[a+152>>3];p[b+160>>3]=+p[a+160>>3];p[b+184>>3]=+p[a+184>>3];p[b+192>>3]=+p[a+192>>3];p[b+200>>3]=+p[a+200>>3];p[b+208>>3]=+p[a+208>>3];p[b+216>>3]=+p[a+216>>3];p[b+224>>3]=+p[a+224>>3];p[b+232>>3]=+p[a+232>>3];p[b+240>>3]=+p[a+240>>3];p[b+248>>3]=+p[a+248>>3];p[b+256>>3]=+p[a+256>>3];p[b+264>>3]=+p[a+264>>3];p[b+272>>3]=+p[a+272>>3];p[b+280>>3]=+p[a+280>>3];p[b+288>>3]=+p[a+288>>3];p[b+296>>3]=+p[a+296>>3];return b|0}function JJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=74;i[d+1>>0]=2;i[d+2>>0]=0;i[d+3>>0]=0;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+8|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;d=a+16|0;n=d;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d+4|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o;o=n;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=n+4|0;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+24|0;n=q;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q+4|0;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d;d=n;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=n+4|0;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=(k[b>>2]|0)+8|0;k[b>>2]=q;o=a+32|0;n=o;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q;q=n;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=n+4|0;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+8|0;k[b>>2]=o;d=a+40|0;n=d;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d+4|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o;o=n;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=n+4|0;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+48|0;n=q;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q+4|0;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d;d=n;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=n+4|0;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=(k[b>>2]|0)+8|0;k[b>>2]=q;o=a+56|0;n=o;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q;q=n;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=n+4|0;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+8|0;k[b>>2]=o;d=a+64|0;n=d;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d+4|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o;o=n;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=n+4|0;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+72|0;n=q;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q+4|0;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d;d=n;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=n+4|0;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=(k[b>>2]|0)+8|0;k[b>>2]=q;o=a+80|0;n=o;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q;q=n;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=n+4|0;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+8|0;k[b>>2]=o;d=a+88|0;n=d;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d+4|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o;o=n;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=n+4|0;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+96|0;n=q;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q+4|0;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d;d=n;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=n+4|0;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=(k[b>>2]|0)+8|0;k[b>>2]=q;o=a+104|0;n=o;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q;q=n;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=n+4|0;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+8|0;k[b>>2]=o;d=a+112|0;n=d;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d+4|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o;o=n;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=n+4|0;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+120|0;n=q;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q+4|0;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d;d=n;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=n+4|0;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=(k[b>>2]|0)+8|0;k[b>>2]=q;o=a+128|0;n=o;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q;q=n;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=n+4|0;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+8|0;k[b>>2]=o;d=a+136|0;n=d;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d+4|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o;o=n;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=n+4|0;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+144|0;n=q;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q+4|0;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d;d=n;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=n+4|0;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=(k[b>>2]|0)+8|0;k[b>>2]=q;o=a+152|0;n=o;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q;q=n;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=n+4|0;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+8|0;k[b>>2]=o;d=a+160|0;n=d;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d+4|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o;o=n;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=n+4|0;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+184|0;n=q;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q+4|0;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d;d=n;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=n+4|0;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=(k[b>>2]|0)+8|0;k[b>>2]=q;o=a+192|0;n=o;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q;q=n;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=n+4|0;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+8|0;k[b>>2]=o;d=a+200|0;n=d;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d+4|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o;o=n;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=n+4|0;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+208|0;n=q;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q+4|0;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d;d=n;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=n+4|0;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=(k[b>>2]|0)+8|0;k[b>>2]=q;o=a+216|0;n=o;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q;q=n;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=n+4|0;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+8|0;k[b>>2]=o;d=a+224|0;n=d;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d+4|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o;o=n;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=n+4|0;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+232|0;n=q;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q+4|0;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d;d=n;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=n+4|0;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=(k[b>>2]|0)+8|0;k[b>>2]=q;o=a+240|0;n=o;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q;q=n;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=n+4|0;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+8|0;k[b>>2]=o;d=a+248|0;n=d;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d+4|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o;o=n;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=n+4|0;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+256|0;n=q;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q+4|0;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d;d=n;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=n+4|0;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=(k[b>>2]|0)+8|0;k[b>>2]=q;o=a+264|0;n=o;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q;q=n;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=n+4|0;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+8|0;k[b>>2]=o;d=a+272|0;n=d;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d+4|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o;o=n;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=n+4|0;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+280|0;n=q;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q+4|0;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d;d=n;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=n+4|0;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=(k[b>>2]|0)+8|0;k[b>>2]=q;o=a+288|0;n=o;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q;q=n;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=n+4|0;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+8|0;k[b>>2]=o;d=a+296|0;n=d;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d+4|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o;o=n;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=n+4|0;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+304|0;n=q;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q+4|0;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d;d=n;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=n+4|0;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=(k[b>>2]|0)+8|0;k[b>>2]=q;o=a+312|0;n=o;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q;q=n;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=n+4|0;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+8|0;k[b>>2]=o;d=a+320|0;n=d;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d+4|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o;o=n;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=n+4|0;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+328|0;n=q;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q+4|0;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d;d=n;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=n+4|0;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=(k[b>>2]|0)+8|0;k[b>>2]=q;o=a+336|0;n=o;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q;q=n;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=n+4|0;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+8|0;k[b>>2]=o;d=a+344|0;n=d;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d+4|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o;o=n;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=n+4|0;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+352|0;n=q;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q+4|0;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d;d=n;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=n+4|0;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=(k[b>>2]|0)+8|0;k[b>>2]=q;o=a+360|0;n=o;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=q;q=n;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;d=n+4|0;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+8|0;k[b>>2]=o;d=a+368|0;n=d;q=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=d+4|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;n=o;o=n;i[o>>0]=q;i[o+1>>0]=q>>8;i[o+2>>0]=q>>16;i[o+3>>0]=q>>24;q=n+4|0;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;k[b>>2]=(k[b>>2]|0)+8;r=e;return}case 2:{k[c>>2]=(k[c>>2]|0)+352;r=e;return}case 1:{c=(k[b>>2]|0)+4|0;k[b>>2]=c;d=a+8|0;q=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[d>>0]=q;i[d+1>>0]=q>>8;i[d+2>>0]=q>>16;i[d+3>>0]=q>>24;q=(k[b>>2]|0)+4|0;k[b>>2]=q;d=a+16|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+24|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+32|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+40|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+48|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+56|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+64|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+72|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+80|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+88|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+96|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+104|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+112|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+120|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+128|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+136|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+144|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+152|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+160|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+184|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+192|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+200|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+208|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+216|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+224|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+232|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+240|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+248|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+256|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+264|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+272|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+280|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+288|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+296|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+304|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+312|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+320|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+328|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+336|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+344|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+352|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;q=a+360|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[q>>0]=i[t>>0];i[q+1>>0]=i[t+1>>0];i[q+2>>0]=i[t+2>>0];i[q+3>>0]=i[t+3>>0];i[q+4>>0]=i[t+4>>0];i[q+5>>0]=i[t+5>>0];i[q+6>>0]=i[t+6>>0];i[q+7>>0]=i[t+7>>0];q=(k[b>>2]|0)+8|0;k[b>>2]=q;d=a+368|0;i[t>>0]=i[q>>0];i[t+1>>0]=i[q+1>>0];i[t+2>>0]=i[q+2>>0];i[t+3>>0]=i[q+3>>0];i[t+4>>0]=i[q+4>>0];i[t+5>>0]=i[q+5>>0];i[t+6>>0]=i[q+6>>0];i[t+7>>0]=i[q+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];k[b>>2]=(k[b>>2]|0)+8;r=e;return}default:{e=g+56|0;b=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,b|0);d=B;B=0;if(d&1){d=Rb()|0;s=Q;u=d;vva(e);Qb(u|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,b|0);d=B;B=0;do if(d&1){q=Rb()|0;v=Q;w=q}else{k[b>>2]=27560;q=g+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);a=B;B=0;if(a&1){a=Rb()|0;c=Q;Yua(f);Yua(q);Ava(b);v=c;w=a;break}Yua(f);B=0;a=Ia(40,g|0,143951,43)|0;c=B;B=0;if(!(c&1)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,h|0,78522,75);c=B;B=0;do if(!(c&1)){B=0;eb(502,j|0,149525,8);n=B;B=0;if(n&1){n=Rb()|0;o=Q;Yua(h);x=o;y=n;break}B=0;wa(510,m|0,b|0);n=B;B=0;if(n&1){n=Rb()|0;z=Q;A=n;C=1}else{B=0;ua(163,a|0,h|0,j|0,272,m|0);n=B;B=0;if(n&1)D=1;else{B=0;eb(503,a|0,1240,229);B=0;D=0}n=Rb()|0;o=Q;Yua(m);z=o;A=n;C=D}Yua(j);Yua(h);if(C){x=z;y=A}else{E=z;F=A;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(q);Ava(b);vva(e);Qb(F|0)}}else{n=Rb()|0;x=Q;y=n}while(0);zb(a|0);E=x;F=y;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(q);Ava(b);vva(e);Qb(F|0)}c=Rb()|0;E=Q;F=c;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(q);Ava(b);vva(e);Qb(F|0)}while(0);s=v;u=w;vva(e);Qb(u|0)}}}function KJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function LJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function MJ(a,b,c){a=a|0;b=+b;c=c|0;do switch(c|0){case 265:{p[a+16>>3]=b;return}case 266:{p[a+24>>3]=b;return}case 267:{p[a+32>>3]=b;return}case 268:{p[a+40>>3]=b;return}case 210:{p[a+48>>3]=b;return}case 270:{p[a+56>>3]=b;return}case 271:{p[a+64>>3]=b;return}case 211:{p[a+72>>3]=b;return}case 209:{p[a+80>>3]=b;return}case 212:{p[a+88>>3]=b;return}case 66:{p[a+96>>3]=b;return}case 213:{p[a+104>>3]=b;return}case 269:{p[a+56>>3]=b;return}case 65:{p[a+120>>3]=b;return}case 449:{p[a+136>>3]=b;return}case 452:{p[a+144>>3]=b;return}case 453:{p[a+152>>3]=b;return}case 458:{p[a+160>>3]=b;return}default:return}while(0)}function NJ(a,b,c){a=a|0;b=+b;c=c|0;do switch(c|0){case 265:{p[a+12>>3]=b;return}case 266:{p[a+20>>3]=b;return}case 267:{p[a+28>>3]=b;return}case 268:{p[a+36>>3]=b;return}case 210:{p[a+44>>3]=b;return}case 270:{p[a+52>>3]=b;return}case 271:{p[a+60>>3]=b;return}case 211:{p[a+68>>3]=b;return}case 209:{p[a+76>>3]=b;return}case 212:{p[a+84>>3]=b;return}case 66:{p[a+92>>3]=b;return}case 213:{p[a+100>>3]=b;return}case 269:{p[a+52>>3]=b;return}case 65:{p[a+116>>3]=b;return}case 449:{p[a+132>>3]=b;return}case 452:{p[a+140>>3]=b;return}case 453:{p[a+148>>3]=b;return}case 458:{p[a+156>>3]=b;return}default:return}while(0)}function OJ(a,b,c){a=a|0;b=b|0;c=c|0;return}function PJ(a,b,c){a=a|0;b=b|0;c=c|0;return}function QJ(a,b,c){a=a|0;b=b|0;c=c|0;return}function RJ(a,b,c){a=a|0;b=b|0;c=c|0;return}function SJ(a,b){a=a|0;b=b|0;return}function TJ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;var f=0.0,g=0.0,h=0.0,i=0.0,j=0.0;f=+p[a+48>>3];g=+p[a+88>>3]-+p[a+80>>3]*e;e=+p[a+96>>3];h=f*(g-e);if(h>d){i=d/f+e;j=0.0;p[c>>3]=j;p[b>>3]=i;return}else{i=g;j=(d-h)/+p[a+72>>3];p[c>>3]=j;p[b>>3]=i;return}}function UJ(a,b){a=a|0;b=+b;return +(+p[a+48>>3]*(+p[a+88>>3]-+p[a+80>>3]*b-+p[a+96>>3]))}function VJ(a,b){a=a|0;b=+b;return +(+p[a+88>>3]-+p[a+80>>3]*b)}function WJ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;do switch(b|0){case 265:{i=a+16|0;break}case 266:{i=a+24|0;break}case 267:{i=a+32|0;break}case 268:{i=a+40|0;break}case 210:{i=a+48|0;break}case 270:{i=a+56|0;break}case 271:{i=a+64|0;break}case 211:{i=a+72|0;break}case 209:{i=a+80|0;break}case 212:{i=a+88|0;break}case 66:{i=a+96|0;break}case 213:{i=a+104|0;break}case 269:{i=a+112|0;break}case 136:{i=a+192|0;break}case 137:{i=a+200|0;break}case 135:{i=a+184|0;break}case 144:{i=a+224|0;break}case 143:{i=a+216|0;break}case 151:{i=a+256|0;break}case 145:{i=a+232|0;break}case 146:{i=a+240|0;break}case 147:{i=a+248|0;break}case 139:{i=a+208|0;break}case 65:{i=a+120|0;break}case 449:{i=a+136|0;break}case 452:{i=a+144|0;break}case 453:{i=a+152|0;break}case 458:{i=a+160|0;break}case 272:{i=a+264|0;break}case 273:{i=a+272|0;break}case 275:{i=a+288|0;break}case 274:{i=a+280|0;break}case 276:{i=a+296|0;break}default:{j=e+56|0;l=e+4|0;k[e>>2]=27524;k[j>>2]=27544;B=0;wa(508,e+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){q=Rb()|0;s=Q;t=q}else{k[l>>2]=27560;q=e+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,l|0,d|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(d);Yua(q);Ava(l);s=v;t=u;break}Yua(d);B=0;u=Ia(40,e|0,104643,5)|0;v=B;B=0;if((((!(v&1)?(B=0,v=ya(427,b|0)|0,w=B,B=0,!(w&1)):0)?(w=Lta(v)|0,B=0,x=Ia(40,u|0,v|0,w|0)|0,w=B,B=0,!(w&1)):0)?(B=0,w=Ia(40,x|0,146481,18)|0,x=B,B=0,!(x&1)):0)?(B=0,Xa(239,w|0,0)|0,w=B,B=0,!(w&1)):0){w=Ab(20)|0;B=0;eb(502,f|0,78522,75);x=B;B=0;do if(!(x&1)){B=0;eb(502,g|0,79423,20);v=B;B=0;if(v&1){v=Rb()|0;u=Q;Yua(f);y=u;z=v;break}B=0;wa(510,h|0,l|0);v=B;B=0;if(v&1){v=Rb()|0;A=Q;C=v;D=1}else{B=0;ua(163,w|0,f|0,g|0,531,h|0);v=B;B=0;if(v&1)E=1;else{B=0;eb(503,w|0,1240,229);B=0;E=0}v=Rb()|0;u=Q;Yua(h);A=u;C=v;D=E}Yua(g);Yua(f);if(D){y=A;z=C}else{F=A;G=C;k[e>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(q);Ava(l);vva(j);Qb(G|0)}}else{v=Rb()|0;y=Q;z=v}while(0);zb(w|0);F=y;G=z;k[e>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(q);Ava(l);vva(j);Qb(G|0)}x=Rb()|0;F=Q;G=x;k[e>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(q);Ava(l);vva(j);Qb(G|0)}while(0);n=s;o=t;vva(j);Qb(o|0)}}while(0);r=c;return +(+p[i>>3])}function XJ(a){a=a|0;return}function YJ(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=+e;var f=0.0,g=0.0,h=0.0;f=+p[a+88>>3]-+p[a+80>>3]*e;e=+p[a+48>>3];g=+p[a+96>>3];if(f>c){h=e*(c-g);p[b>>3]=h;return}else{h=e*(f-g)+ +p[a+72>>3]*d;p[b>>3]=h;return}}function ZJ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,79601,5);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,98,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function _J(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143338,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,108,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function $J(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143343,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,109,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function aK(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143351,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,110,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function bK(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143356,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,111,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function cK(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143369,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,113,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function dK(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143374,7);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,114,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function eK(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143364,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,112,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function fK(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;a=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,145010,13)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,79444,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,143391,12);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,100,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(E|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function gK(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;a=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,145010,13)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,79444,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,143434,15);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,103,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(E|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function hK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143450,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,104,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function iK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143473,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,105,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function jK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143497,31);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,106,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function kK(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;a=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,145010,13)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,79444,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,143404,14);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,101,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(E|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function lK(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;a=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,145010,13)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,79444,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,143419,14);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,102,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(E|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function mK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143529,33);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,107,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function nK(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143382,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,115,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return 0}function oK(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;h=r;r=r+192|0;g=h+176|0;f=h+40|0;e=h+24|0;d=h+12|0;c=h;h=f+56|0;b=f+4|0;k[f>>2]=27524;k[h>>2]=27544;B=0;wa(508,f+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;i=Q;j=a;vva(h);Qb(j|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[h>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){l=Rb()|0;m=Q;n=l}else{k[b>>2]=27560;l=f+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[f+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,b|0,g|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(g);Yua(l);Ava(b);m=p;n=o;break}Yua(g);B=0;o=Ia(40,f|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,e|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,d|0,79589,11);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(e);v=u;w=t;break}B=0;wa(510,c|0,b|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,e|0,d|0,118,c|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(c);x=u;y=t;z=A}Yua(d);Yua(e);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[f>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(h);Qb(D|0)}while(0);i=m;j=n;vva(h);Qb(j|0)}function pK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,79558,30);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,119,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function qK(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;g=r;r=r+192|0;f=g+176|0;e=g+40|0;d=g+24|0;c=g+12|0;b=g;g=e+56|0;a=e+4|0;k[e>>2]=27524;k[g>>2]=27544;B=0;wa(508,e+56|0,a|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(g);Qb(j|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[g>>2]=27488;B=0;va(448,a|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[a>>2]=27560;l=e+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[e+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,a|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(f);Yua(l);Ava(a);m=p;n=o;break}Yua(f);B=0;o=Ia(40,e|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,c|0,79546,11);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,b|0,a|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,c|0,120,b|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(b);x=u;y=t;z=A}Yua(c);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[e>>2]=27468;k[g>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(g);Qb(D|0)}while(0);i=m;j=n;vva(g);Qb(j|0)}function rK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143563,30);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,121,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function sK(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;g=r;r=r+192|0;f=g+176|0;e=g+40|0;d=g+24|0;c=g+12|0;b=g;g=e+56|0;a=e+4|0;k[e>>2]=27524;k[g>>2]=27544;B=0;wa(508,e+56|0,a|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(g);Qb(j|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[g>>2]=27488;B=0;va(448,a|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[a>>2]=27560;l=e+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[e+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,a|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(f);Yua(l);Ava(a);m=p;n=o;break}Yua(f);B=0;o=Ia(40,e|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,c|0,143594,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,b|0,a|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,c|0,122,b|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(b);x=u;y=t;z=A}Yua(c);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[e>>2]=27468;k[g>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(g);Qb(D|0)}while(0);i=m;j=n;vva(g);Qb(j|0)}function tK(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;g=r;r=r+192|0;f=g+176|0;e=g+40|0;d=g+24|0;c=g+12|0;b=g;g=e+56|0;a=e+4|0;k[e>>2]=27524;k[g>>2]=27544;B=0;wa(508,e+56|0,a|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(g);Qb(j|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[g>>2]=27488;B=0;va(448,a|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[a>>2]=27560;l=e+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[e+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,a|0,f|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(f);Yua(l);Ava(a);m=p;n=o;break}Yua(f);B=0;o=Ia(40,e|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,c|0,79533,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,b|0,a|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,c|0,123,b|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(b);x=u;y=t;z=A}Yua(c);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[e>>2]=27468;k[g>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(g);Qb(D|0)}while(0);i=m;j=n;vva(g);Qb(j|0)}function uK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,143608,31);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,124,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function vK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,79444,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144327,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,95,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function wK(a,b,c){a=a|0;b=b|0;c=c|0;vK(a+-4|0,b,c)}function xK(a){a=a|0;k[a>>2]=33892;return}function yK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;k[a>>2]=33892;k[a+4>>2]=b;k[a+8>>2]=c;k[a+12>>2]=d;p[a+16>>3]=e;k[a+24>>2]=f;i[a+28>>0]=0;return}function zK(a){a=a|0;k[a>>2]=33892;return}function AK(a){a=a|0;Sqa(a);return}function BK(a){a=a|0;var b=0,c=0,d=0;b=Qqa(32)|0;k[b>>2]=33892;c=b+4|0;d=a+4|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[c+16>>2]=k[d+16>>2];k[c+20>>2]=k[d+20>>2];i[c+24>>0]=i[d+24>>0]|0;k[c>>2]=k[d>>2];k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2];p[b+16>>3]=+p[a+16>>3];k[b+24>>2]=k[a+24>>2];return b|0}function CK(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0;b=r;r=r+928|0;c=b+904|0;d=b+744|0;e=b+892|0;f=b+592|0;g=b+880|0;h=b+440|0;i=b+728|0;j=b+304|0;l=b+576|0;m=b+152|0;n=b+288|0;o=b+16|0;q=b;s=d+56|0;t=d+4|0;k[d>>2]=27524;k[s>>2]=27544;B=0;wa(508,d+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=d+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,t|0,c|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(c);Yua(x);Ava(t);y=C;z=A;break}Yua(c);B=0;Ia(40,d|0,79618,11)|0;A=B;B=0;do if(!(A&1)?(B=0,wa(510,e|0,t|0),C=B,B=0,!(C&1)):0){B=0;ya(424,e|0)|0;C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(e);E=D;F=C;break}Yua(e);k[d>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);C=f+56|0;D=f+4|0;k[f>>2]=27524;k[C>>2]=27544;B=0;wa(508,f+56|0,D|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;I=G;vva(C);Qb(I|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[C>>2]=27488;B=0;va(448,D|0);G=B;B=0;do if(G&1){J=Rb()|0;K=Q;L=J}else{k[D>>2]=27560;J=f+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,D|0,c|0);M=B;B=0;if(M&1){M=Rb()|0;N=Q;Yua(c);Yua(J);Ava(D);K=N;L=M;break}Yua(c);B=0;M=Ia(40,f|0,79833,8)|0;N=B;B=0;do if(((!(N&1)?(B=0,O=Xa(242,M|0,k[a+4>>2]|0)|0,P=B,B=0,!(P&1)):0)?(B=0,Ia(40,O|0,149177,1)|0,O=B,B=0,!(O&1)):0)?(B=0,wa(510,g|0,D|0),O=B,B=0,!(O&1)):0){B=0;ya(424,g|0)|0;O=B;B=0;if(O&1){O=Rb()|0;P=Q;Yua(g);R=P;S=O;break}Yua(g);k[f>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(J);Ava(D);vva(C);O=h+56|0;P=h+4|0;k[h>>2]=27524;k[O>>2]=27544;B=0;wa(508,h+56|0,P|0);T=B;B=0;if(T&1){T=Rb()|0;U=Q;V=T;vva(O);Qb(V|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[O>>2]=27488;B=0;va(448,P|0);T=B;B=0;do if(T&1){W=Rb()|0;X=Q;Y=W}else{k[P>>2]=27560;W=h+36|0;k[W>>2]=0;k[W+4>>2]=0;k[W+8>>2]=0;k[W+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,P|0,c|0);Z=B;B=0;if(Z&1){Z=Rb()|0;_=Q;Yua(c);Yua(W);Ava(P);X=_;Y=Z;break}Yua(c);B=0;Z=Ia(40,h|0,79842,11)|0;_=B;B=0;do if(_&1)$=85;else{B=0;aa=Xa(242,Z|0,k[a+8>>2]|0)|0;ba=B;B=0;if(ba&1){$=85;break}B=0;Ia(40,aa|0,149177,1)|0;aa=B;B=0;if(aa&1){$=85;break}B=0;wa(510,i|0,P|0);aa=B;B=0;if(aa&1){$=85;break}B=0;ya(424,i|0)|0;aa=B;B=0;if(aa&1){aa=Rb()|0;ba=Q;Yua(i);ca=ba;da=aa;break}Yua(i);k[h>>2]=27468;k[O>>2]=27488;k[P>>2]=27560;Yua(W);Ava(P);vva(O);aa=j+56|0;ba=j+4|0;k[j>>2]=27524;k[aa>>2]=27544;B=0;wa(508,j+56|0,ba|0);ea=B;B=0;if(ea&1){ea=Rb()|0;fa=Q;ga=ea;vva(aa);Qb(ga|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[aa>>2]=27488;B=0;va(448,ba|0);ea=B;B=0;do if(ea&1){ha=Rb()|0;ia=Q;ja=ha}else{k[ba>>2]=27560;ha=j+36|0;k[ha>>2]=0;k[ha+4>>2]=0;k[ha+8>>2]=0;k[ha+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ba|0,c|0);ka=B;B=0;if(ka&1){ka=Rb()|0;la=Q;Yua(c);Yua(ha);Ava(ba);ia=la;ja=ka;break}Yua(c);B=0;ka=Ia(40,j|0,79854,8)|0;la=B;B=0;do if(la&1)$=88;else{B=0;ma=Xa(242,ka|0,k[a+12>>2]|0)|0;na=B;B=0;if(na&1){$=88;break}B=0;Ia(40,ma|0,149177,1)|0;ma=B;B=0;if(ma&1){$=88;break}B=0;wa(510,l|0,ba|0);ma=B;B=0;if(ma&1){$=88;break}B=0;ya(424,l|0)|0;ma=B;B=0;if(ma&1){ma=Rb()|0;na=Q;Yua(l);oa=na;pa=ma;break}Yua(l);k[j>>2]=27468;k[aa>>2]=27488;k[ba>>2]=27560;Yua(ha);Ava(ba);vva(aa);ma=m+56|0;na=m+4|0;k[m>>2]=27524;k[ma>>2]=27544;B=0;wa(508,m+56|0,na|0);qa=B;B=0;if(qa&1){qa=Rb()|0;ra=Q;sa=qa;vva(ma);Qb(sa|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[ma>>2]=27488;B=0;va(448,na|0);qa=B;B=0;do if(qa&1){ta=Rb()|0;ua=Q;xa=ta}else{k[na>>2]=27560;ta=m+36|0;k[ta>>2]=0;k[ta+4>>2]=0;k[ta+8>>2]=0;k[ta+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,na|0,c|0);za=B;B=0;if(za&1){za=Rb()|0;Aa=Q;Yua(c);Yua(ta);Ava(na);ua=Aa;xa=za;break}Yua(c);B=0;za=Ia(40,m|0,109037,10)|0;Aa=B;B=0;do if(Aa&1)$=91;else{B=0;Ba=Sa(1,za|0,+(+p[a+16>>3]))|0;Ca=B;B=0;if(Ca&1){$=91;break}B=0;Ia(40,Ba|0,149177,1)|0;Ba=B;B=0;if(Ba&1){$=91;break}B=0;wa(510,n|0,na|0);Ba=B;B=0;if(Ba&1){$=91;break}B=0;ya(424,n|0)|0;Ba=B;B=0;if(Ba&1){Ba=Rb()|0;Ca=Q;Yua(n);Da=Ca;Ea=Ba;break}Yua(n);k[m>>2]=27468;k[ma>>2]=27488;k[na>>2]=27560;Yua(ta);Ava(na);vva(ma);Ba=o+56|0;Ca=o+4|0;k[o>>2]=27524;k[Ba>>2]=27544;B=0;wa(508,o+56|0,Ca|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ga=Q;Ha=Fa;vva(Ba);Qb(Ha|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[Ba>>2]=27488;B=0;va(448,Ca|0);Fa=B;B=0;do if(Fa&1){Ja=Rb()|0;Ka=Q;La=Ja}else{k[Ca>>2]=27560;Ja=o+36|0;k[Ja>>2]=0;k[Ja+4>>2]=0;k[Ja+8>>2]=0;k[Ja+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ca|0,c|0);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;Na=Q;Yua(c);Yua(Ja);Ava(Ca);Ka=Na;La=Ma;break}Yua(c);B=0;Ma=Ia(40,o|0,144094,18)|0;Na=B;B=0;do if(!(Na&1)){B=0;Oa=ya(427,k[a+24>>2]|0)|0;Pa=B;B=0;if(Pa&1){$=94;break}Pa=Lta(Oa)|0;B=0;Qa=Ia(40,Ma|0,Oa|0,Pa|0)|0;Pa=B;B=0;if(Pa&1){$=94;break}B=0;Ia(40,Qa|0,149177,1)|0;Qa=B;B=0;if(Qa&1){$=94;break}B=0;wa(510,q|0,Ca|0);Qa=B;B=0;if(Qa&1){$=94;break}B=0;ya(424,q|0)|0;Qa=B;B=0;if(Qa&1){Qa=Rb()|0;Pa=Q;Yua(q);Ra=Pa;Ta=Qa;break}else{Yua(q);k[o>>2]=27468;k[Ba>>2]=27488;k[Ca>>2]=27560;Yua(Ja);Ava(Ca);vva(Ba);r=b;return}}else $=94;while(0);if(($|0)==94){Ma=Rb()|0;Ra=Q;Ta=Ma}k[o>>2]=27468;k[Ba>>2]=27488;k[Ca>>2]=27560;Yua(Ja);Ava(Ca);vva(Ba);Ua=Ra;Va=Ta;Qb(Va|0)}while(0);Ga=Ka;Ha=La;vva(Ba);Qb(Ha|0)}while(0);if(($|0)==91){za=Rb()|0;Da=Q;Ea=za}k[m>>2]=27468;k[ma>>2]=27488;k[na>>2]=27560;Yua(ta);Ava(na);vva(ma);Ua=Da;Va=Ea;Qb(Va|0)}while(0);ra=ua;sa=xa;vva(ma);Qb(sa|0)}while(0);if(($|0)==88){ka=Rb()|0;oa=Q;pa=ka}k[j>>2]=27468;k[aa>>2]=27488;k[ba>>2]=27560;Yua(ha);Ava(ba);vva(aa);Ua=oa;Va=pa;Qb(Va|0)}while(0);fa=ia;ga=ja;vva(aa);Qb(ga|0)}while(0);if(($|0)==85){Z=Rb()|0;ca=Q;da=Z}k[h>>2]=27468;k[O>>2]=27488;k[P>>2]=27560;Yua(W);Ava(P);vva(O);Ua=ca;Va=da;Qb(Va|0)}while(0);U=X;V=Y;vva(O);Qb(V|0)}else $=82;while(0);if(($|0)==82){M=Rb()|0;R=Q;S=M}k[f>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(J);Ava(D);vva(C);Ua=R;Va=S;Qb(Va|0)}while(0);H=K;I=L;vva(C);Qb(I|0)}else $=79;while(0);if(($|0)==79){A=Rb()|0;E=Q;F=A}k[d>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);Ua=E;Va=F;Qb(Va|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}function DK(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0;b=r;r=r+928|0;c=b+904|0;d=b+744|0;e=b+892|0;f=b+592|0;g=b+880|0;h=b+440|0;i=b+728|0;j=b+304|0;l=b+576|0;m=b+152|0;n=b+288|0;o=b+16|0;q=b;s=d+56|0;t=d+4|0;k[d>>2]=27524;k[s>>2]=27544;B=0;wa(508,d+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(s);Qb(w|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[t>>2]=27560;x=d+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,t|0,c|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(c);Yua(x);Ava(t);y=C;z=A;break}Yua(c);B=0;Ia(40,d|0,79618,11)|0;A=B;B=0;do if(!(A&1)?(B=0,wa(510,e|0,t|0),C=B,B=0,!(C&1)):0){B=0;ya(424,e|0)|0;C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(e);E=D;F=C;break}Yua(e);k[d>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);C=f+56|0;D=f+4|0;k[f>>2]=27524;k[C>>2]=27544;B=0;wa(508,f+56|0,D|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;I=G;vva(C);Qb(I|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[C>>2]=27488;B=0;va(448,D|0);G=B;B=0;do if(G&1){J=Rb()|0;K=Q;L=J}else{k[D>>2]=27560;J=f+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,D|0,c|0);M=B;B=0;if(M&1){M=Rb()|0;N=Q;Yua(c);Yua(J);Ava(D);K=N;L=M;break}Yua(c);B=0;M=Ia(40,f|0,79833,8)|0;N=B;B=0;do if(((!(N&1)?(B=0,O=Xa(242,M|0,k[a+4>>2]|0)|0,P=B,B=0,!(P&1)):0)?(B=0,Ia(40,O|0,149177,1)|0,O=B,B=0,!(O&1)):0)?(B=0,wa(510,g|0,D|0),O=B,B=0,!(O&1)):0){B=0;ya(424,g|0)|0;O=B;B=0;if(O&1){O=Rb()|0;P=Q;Yua(g);R=P;S=O;break}Yua(g);k[f>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(J);Ava(D);vva(C);O=h+56|0;P=h+4|0;k[h>>2]=27524;k[O>>2]=27544;B=0;wa(508,h+56|0,P|0);T=B;B=0;if(T&1){T=Rb()|0;U=Q;V=T;vva(O);Qb(V|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[O>>2]=27488;B=0;va(448,P|0);T=B;B=0;do if(T&1){W=Rb()|0;X=Q;Y=W}else{k[P>>2]=27560;W=h+36|0;k[W>>2]=0;k[W+4>>2]=0;k[W+8>>2]=0;k[W+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,P|0,c|0);Z=B;B=0;if(Z&1){Z=Rb()|0;_=Q;Yua(c);Yua(W);Ava(P);X=_;Y=Z;break}Yua(c);B=0;Z=Ia(40,h|0,79842,11)|0;_=B;B=0;do if(_&1)$=85;else{B=0;aa=Xa(242,Z|0,k[a+8>>2]|0)|0;ba=B;B=0;if(ba&1){$=85;break}B=0;Ia(40,aa|0,149177,1)|0;aa=B;B=0;if(aa&1){$=85;break}B=0;wa(510,i|0,P|0);aa=B;B=0;if(aa&1){$=85;break}B=0;ya(424,i|0)|0;aa=B;B=0;if(aa&1){aa=Rb()|0;ba=Q;Yua(i);ca=ba;da=aa;break}Yua(i);k[h>>2]=27468;k[O>>2]=27488;k[P>>2]=27560;Yua(W);Ava(P);vva(O);aa=j+56|0;ba=j+4|0;k[j>>2]=27524;k[aa>>2]=27544;B=0;wa(508,j+56|0,ba|0);ea=B;B=0;if(ea&1){ea=Rb()|0;fa=Q;ga=ea;vva(aa);Qb(ga|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[aa>>2]=27488;B=0;va(448,ba|0);ea=B;B=0;do if(ea&1){ha=Rb()|0;ia=Q;ja=ha}else{k[ba>>2]=27560;ha=j+36|0;k[ha>>2]=0;k[ha+4>>2]=0;k[ha+8>>2]=0;k[ha+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ba|0,c|0);ka=B;B=0;if(ka&1){ka=Rb()|0;la=Q;Yua(c);Yua(ha);Ava(ba);ia=la;ja=ka;break}Yua(c);B=0;ka=Ia(40,j|0,79854,8)|0;la=B;B=0;do if(la&1)$=88;else{B=0;ma=Xa(242,ka|0,k[a+12>>2]|0)|0;na=B;B=0;if(na&1){$=88;break}B=0;Ia(40,ma|0,149177,1)|0;ma=B;B=0;if(ma&1){$=88;break}B=0;wa(510,l|0,ba|0);ma=B;B=0;if(ma&1){$=88;break}B=0;ya(424,l|0)|0;ma=B;B=0;if(ma&1){ma=Rb()|0;na=Q;Yua(l);oa=na;pa=ma;break}Yua(l);k[j>>2]=27468;k[aa>>2]=27488;k[ba>>2]=27560;Yua(ha);Ava(ba);vva(aa);ma=m+56|0;na=m+4|0;k[m>>2]=27524;k[ma>>2]=27544;B=0;wa(508,m+56|0,na|0);qa=B;B=0;if(qa&1){qa=Rb()|0;ra=Q;sa=qa;vva(ma);Qb(sa|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[ma>>2]=27488;B=0;va(448,na|0);qa=B;B=0;do if(qa&1){ta=Rb()|0;ua=Q;xa=ta}else{k[na>>2]=27560;ta=m+36|0;k[ta>>2]=0;k[ta+4>>2]=0;k[ta+8>>2]=0;k[ta+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,na|0,c|0);za=B;B=0;if(za&1){za=Rb()|0;Aa=Q;Yua(c);Yua(ta);Ava(na);ua=Aa;xa=za;break}Yua(c);B=0;za=Ia(40,m|0,109037,10)|0;Aa=B;B=0;do if(Aa&1)$=91;else{B=0;Ba=Sa(1,za|0,+(+p[a+16>>3]))|0;Ca=B;B=0;if(Ca&1){$=91;break}B=0;Ia(40,Ba|0,149177,1)|0;Ba=B;B=0;if(Ba&1){$=91;break}B=0;wa(510,n|0,na|0);Ba=B;B=0;if(Ba&1){$=91;break}B=0;ya(424,n|0)|0;Ba=B;B=0;if(Ba&1){Ba=Rb()|0;Ca=Q;Yua(n);Da=Ca;Ea=Ba;break}Yua(n);k[m>>2]=27468;k[ma>>2]=27488;k[na>>2]=27560;Yua(ta);Ava(na);vva(ma);Ba=o+56|0;Ca=o+4|0;k[o>>2]=27524;k[Ba>>2]=27544;B=0;wa(508,o+56|0,Ca|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ga=Q;Ha=Fa;vva(Ba);Qb(Ha|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[Ba>>2]=27488;B=0;va(448,Ca|0);Fa=B;B=0;do if(Fa&1){Ja=Rb()|0;Ka=Q;La=Ja}else{k[Ca>>2]=27560;Ja=o+36|0;k[Ja>>2]=0;k[Ja+4>>2]=0;k[Ja+8>>2]=0;k[Ja+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ca|0,c|0);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;Na=Q;Yua(c);Yua(Ja);Ava(Ca);Ka=Na;La=Ma;break}Yua(c);B=0;Ma=Ia(40,o|0,144094,18)|0;Na=B;B=0;do if(!(Na&1)){B=0;Oa=ya(427,k[a+24>>2]|0)|0;Pa=B;B=0;if(Pa&1){$=94;break}Pa=Lta(Oa)|0;B=0;Qa=Ia(40,Ma|0,Oa|0,Pa|0)|0;Pa=B;B=0;if(Pa&1){$=94;break}B=0;Ia(40,Qa|0,149177,1)|0;Qa=B;B=0;if(Qa&1){$=94;break}B=0;wa(510,q|0,Ca|0);Qa=B;B=0;if(Qa&1){$=94;break}B=0;ya(424,q|0)|0;Qa=B;B=0;if(Qa&1){Qa=Rb()|0;Pa=Q;Yua(q);Ra=Pa;Ta=Qa;break}else{Yua(q);k[o>>2]=27468;k[Ba>>2]=27488;k[Ca>>2]=27560;Yua(Ja);Ava(Ca);vva(Ba);r=b;return}}else $=94;while(0);if(($|0)==94){Ma=Rb()|0;Ra=Q;Ta=Ma}k[o>>2]=27468;k[Ba>>2]=27488;k[Ca>>2]=27560;Yua(Ja);Ava(Ca);vva(Ba);Ua=Ra;Va=Ta;Qb(Va|0)}while(0);Ga=Ka;Ha=La;vva(Ba);Qb(Ha|0)}while(0);if(($|0)==91){za=Rb()|0;Da=Q;Ea=za}k[m>>2]=27468;k[ma>>2]=27488;k[na>>2]=27560;Yua(ta);Ava(na);vva(ma);Ua=Da;Va=Ea;Qb(Va|0)}while(0);ra=ua;sa=xa;vva(ma);Qb(sa|0)}while(0);if(($|0)==88){ka=Rb()|0;oa=Q;pa=ka}k[j>>2]=27468;k[aa>>2]=27488;k[ba>>2]=27560;Yua(ha);Ava(ba);vva(aa);Ua=oa;Va=pa;Qb(Va|0)}while(0);fa=ia;ga=ja;vva(aa);Qb(ga|0)}while(0);if(($|0)==85){Z=Rb()|0;ca=Q;da=Z}k[h>>2]=27468;k[O>>2]=27488;k[P>>2]=27560;Yua(W);Ava(P);vva(O);Ua=ca;Va=da;Qb(Va|0)}while(0);U=X;V=Y;vva(O);Qb(V|0)}else $=82;while(0);if(($|0)==82){M=Rb()|0;R=Q;S=M}k[f>>2]=27468;k[C>>2]=27488;k[D>>2]=27560;Yua(J);Ava(D);vva(C);Ua=R;Va=S;Qb(Va|0)}while(0);H=K;I=L;vva(C);Qb(I|0)}else $=79;while(0);if(($|0)==79){A=Rb()|0;E=Q;F=A}k[d>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(x);Ava(t);vva(s);Ua=E;Va=F;Qb(Va|0)}while(0);v=y;w=z;vva(s);Qb(w|0)}function EK(a){a=a|0;return k[a+4>>2]|0}function FK(a){a=a|0;return 615}function GK(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=103;i[d+1>>0]=2;i[d+2>>0]=0;i[d+3>>0]=0;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;d=a+8|0;n=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+12|0;d=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[n>>0]=d;i[n+1>>0]=d>>8;i[n+2>>0]=d>>16;i[n+3>>0]=d>>24;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+16|0;o=n;q=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;o=n+4|0;n=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;o=d;d=o;i[d>>0]=q;i[d+1>>0]=q>>8;i[d+2>>0]=q>>16;i[d+3>>0]=q>>24;q=o+4|0;i[q>>0]=n;i[q+1>>0]=n>>8;i[q+2>>0]=n>>16;i[q+3>>0]=n>>24;n=(k[b>>2]|0)+8|0;k[b>>2]=n;q=a+24|0;o=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24;i[n>>0]=o;i[n+1>>0]=o>>8;i[n+2>>0]=o>>16;i[n+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;i[o>>0]=i[a+28>>0]|0;k[b>>2]=(k[b>>2]|0)+1;r=e;return}case 2:{k[c>>2]=(k[c>>2]|0)+29;r=e;return}case 1:{c=(k[b>>2]|0)+4|0;k[b>>2]=c;o=a+4|0;n=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+8|0;c=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[o>>0]=c;i[o+1>>0]=c>>8;i[o+2>>0]=c>>16;i[o+3>>0]=c>>24;c=(k[b>>2]|0)+4|0;k[b>>2]=c;o=a+12|0;n=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+16|0;i[t>>0]=i[n>>0];i[t+1>>0]=i[n+1>>0];i[t+2>>0]=i[n+2>>0];i[t+3>>0]=i[n+3>>0];i[t+4>>0]=i[n+4>>0];i[t+5>>0]=i[n+5>>0];i[t+6>>0]=i[n+6>>0];i[t+7>>0]=i[n+7>>0];p[t>>3]=+p[t>>3];i[o>>0]=i[t>>0];i[o+1>>0]=i[t+1>>0];i[o+2>>0]=i[t+2>>0];i[o+3>>0]=i[t+3>>0];i[o+4>>0]=i[t+4>>0];i[o+5>>0]=i[t+5>>0];i[o+6>>0]=i[t+6>>0];i[o+7>>0]=i[t+7>>0];o=(k[b>>2]|0)+8|0;k[b>>2]=o;n=a+24|0;c=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[n>>0]=c;i[n+1>>0]=c>>8;i[n+2>>0]=c>>16;i[n+3>>0]=c>>24;c=(k[b>>2]|0)+4|0;k[b>>2]=c;i[a+28>>0]=i[c>>0]|0;k[b>>2]=(k[b>>2]|0)+1;r=e;return}default:{e=g+56|0;b=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;s=Q;u=c;vva(e);Qb(u|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,b|0);c=B;B=0;do if(c&1){a=Rb()|0;v=Q;w=a}else{k[b>>2]=27560;a=g+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;Yua(f);Yua(a);Ava(b);v=o;w=n;break}Yua(f);B=0;n=Ia(40,g|0,143951,43)|0;o=B;B=0;if(!(o&1)?(B=0,Xa(239,n|0,0)|0,n=B,B=0,!(n&1)):0){n=Ab(20)|0;B=0;eb(502,h|0,79630,80);o=B;B=0;do if(!(o&1)){B=0;eb(502,j|0,149525,8);q=B;B=0;if(q&1){q=Rb()|0;d=Q;Yua(h);x=d;y=q;break}B=0;wa(510,m|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;z=Q;A=q;C=1}else{B=0;ua(163,n|0,h|0,j|0,83,m|0);q=B;B=0;if(q&1)D=1;else{B=0;eb(503,n|0,1240,229);B=0;D=0}q=Rb()|0;d=Q;Yua(m);z=d;A=q;C=D}Yua(j);Yua(h);if(C){x=z;y=A}else{E=z;F=A;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(e);Qb(F|0)}}else{q=Rb()|0;x=Q;y=q}while(0);zb(n|0);E=x;F=y;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(e);Qb(F|0)}o=Rb()|0;E=Q;F=o;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(e);Qb(F|0)}while(0);s=v;u=w;vva(e);Qb(u|0)}}}function HK(a){a=a|0;i[a+28>>0]=1;return}function IK(a,b,c){a=a|0;b=b|0;c=c|0;c=rh(b,0,k[a+8>>2]|0)|0;if(!c)return;Un(c,k[a+12>>2]|0,+p[a+16>>3]);return}function JK(a,b){a=a|0;b=b|0;return (k[a+24>>2]|0)==(b|0)|0}function KK(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,79711,95);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,80053,18);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,42,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function LK(a){a=a|0;k[a>>2]=33948;return}function MK(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;k[a>>2]=33948;k[a+4>>2]=b;k[a+8>>2]=c;k[a+12>>2]=d;p[a+16>>3]=0.0;k[a+28>>2]=e;i[a+24>>0]=0;i[a+32>>0]=0;return}function NK(a){a=a|0;k[a>>2]=33948;return}function OK(a){a=a|0;Sqa(a);return}function PK(a){a=a|0;var b=0,c=0,d=0;b=Qqa(40)|0;k[b>>2]=33948;c=b+4|0;d=a+4|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[c+16>>2]=k[d+16>>2];k[c+20>>2]=k[d+20>>2];k[c+24>>2]=k[d+24>>2];i[c+28>>0]=i[d+28>>0]|0;k[c>>2]=k[d>>2];k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2];p[b+16>>3]=+p[a+16>>3];k[b+28>>2]=k[a+28>>2];i[b+24>>0]=i[a+24>>0]|0;return b|0}function QK(a){a=a|0;Ec[k[(k[a>>2]|0)+8>>2]&1023](a);return}function RK(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0;b=r;r=r+1072|0;c=b+1052|0;d=b+880|0;e=b+1040|0;f=b+728|0;g=b+1028|0;h=b+592|0;j=b+1016|0;l=b+440|0;m=b+864|0;n=b+304|0;o=b+576|0;q=b+168|0;s=b+152|0;t=b+16|0;u=b;v=d+56|0;w=d+4|0;k[d>>2]=27524;k[v>>2]=27544;B=0;wa(508,d+56|0,w|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;z=x;vva(v);Qb(z|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[v>>2]=27488;B=0;va(448,w|0);x=B;B=0;do if(x&1){A=Rb()|0;C=Q;D=A}else{k[w>>2]=27560;A=d+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,w|0,c|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(c);Yua(A);Ava(w);C=F;D=E;break}Yua(c);B=0;Ia(40,d|0,79820,12)|0;E=B;B=0;do if(!(E&1)?(B=0,wa(510,e|0,w|0),F=B,B=0,!(F&1)):0){B=0;ya(424,e|0)|0;F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(e);H=G;I=F;break}Yua(e);k[d>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);F=f+56|0;G=f+4|0;k[f>>2]=27524;k[F>>2]=27544;B=0;wa(508,f+56|0,G|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;L=J;vva(F);Qb(L|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[F>>2]=27488;B=0;va(448,G|0);J=B;B=0;do if(J&1){M=Rb()|0;N=Q;O=M}else{k[G>>2]=27560;M=f+36|0;k[M>>2]=0;k[M+4>>2]=0;k[M+8>>2]=0;k[M+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,G|0,c|0);P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(c);Yua(M);Ava(G);N=R;O=P;break}Yua(c);B=0;P=Ia(40,f|0,79833,8)|0;R=B;B=0;do if(((!(R&1)?(B=0,S=Xa(242,P|0,k[a+4>>2]|0)|0,T=B,B=0,!(T&1)):0)?(B=0,Ia(40,S|0,149177,1)|0,S=B,B=0,!(S&1)):0)?(B=0,wa(510,g|0,G|0),S=B,B=0,!(S&1)):0){B=0;ya(424,g|0)|0;S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(g);U=T;V=S;break}Yua(g);k[f>>2]=27468;k[F>>2]=27488;k[G>>2]=27560;Yua(M);Ava(G);vva(F);S=h+56|0;T=h+4|0;k[h>>2]=27524;k[S>>2]=27544;B=0;wa(508,h+56|0,T|0);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Y=W;vva(S);Qb(Y|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[S>>2]=27488;B=0;va(448,T|0);W=B;B=0;do if(W&1){Z=Rb()|0;_=Q;$=Z}else{k[T>>2]=27560;Z=h+36|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,T|0,c|0);aa=B;B=0;if(aa&1){aa=Rb()|0;ba=Q;Yua(c);Yua(Z);Ava(T);_=ba;$=aa;break}Yua(c);B=0;aa=Ia(40,h|0,79842,11)|0;ba=B;B=0;do if(ba&1)ca=98;else{B=0;da=Xa(242,aa|0,k[a+8>>2]|0)|0;ea=B;B=0;if(ea&1){ca=98;break}B=0;Ia(40,da|0,149177,1)|0;da=B;B=0;if(da&1){ca=98;break}B=0;wa(510,j|0,T|0);da=B;B=0;if(da&1){ca=98;break}B=0;ya(424,j|0)|0;da=B;B=0;if(da&1){da=Rb()|0;ea=Q;Yua(j);fa=ea;ga=da;break}Yua(j);k[h>>2]=27468;k[S>>2]=27488;k[T>>2]=27560;Yua(Z);Ava(T);vva(S);da=l+56|0;ea=l+4|0;k[l>>2]=27524;k[da>>2]=27544;B=0;wa(508,l+56|0,ea|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;ja=ha;vva(da);Qb(ja|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[da>>2]=27488;B=0;va(448,ea|0);ha=B;B=0;do if(ha&1){ka=Rb()|0;la=Q;ma=ka}else{k[ea>>2]=27560;ka=l+36|0;k[ka>>2]=0;k[ka+4>>2]=0;k[ka+8>>2]=0;k[ka+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ea|0,c|0);na=B;B=0;if(na&1){na=Rb()|0;oa=Q;Yua(c);Yua(ka);Ava(ea);la=oa;ma=na;break}Yua(c);B=0;na=Ia(40,l|0,79854,8)|0;oa=B;B=0;do if(oa&1)ca=101;else{B=0;pa=Xa(242,na|0,k[a+12>>2]|0)|0;qa=B;B=0;if(qa&1){ca=101;break}B=0;Ia(40,pa|0,149177,1)|0;pa=B;B=0;if(pa&1){ca=101;break}B=0;wa(510,m|0,ea|0);pa=B;B=0;if(pa&1){ca=101;break}B=0;ya(424,m|0)|0;pa=B;B=0;if(pa&1){pa=Rb()|0;qa=Q;Yua(m);ra=qa;sa=pa;break}Yua(m);k[l>>2]=27468;k[da>>2]=27488;k[ea>>2]=27560;Yua(ka);Ava(ea);vva(da);pa=n+56|0;qa=n+4|0;k[n>>2]=27524;k[pa>>2]=27544;B=0;wa(508,n+56|0,qa|0);ta=B;B=0;if(ta&1){ta=Rb()|0;ua=Q;xa=ta;vva(pa);Qb(xa|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[pa>>2]=27488;B=0;va(448,qa|0);ta=B;B=0;do if(ta&1){za=Rb()|0;Aa=Q;Ba=za}else{k[qa>>2]=27560;za=n+36|0;k[za>>2]=0;k[za+4>>2]=0;k[za+8>>2]=0;k[za+12>>2]=0;k[n+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,qa|0,c|0);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Da=Q;Yua(c);Yua(za);Ava(qa);Aa=Da;Ba=Ca;break}Yua(c);B=0;Ca=Ia(40,n|0,109037,10)|0;Da=B;B=0;do if(Da&1)ca=104;else{B=0;Ea=Sa(1,Ca|0,+(+p[a+16>>3]))|0;Fa=B;B=0;if(Fa&1){ca=104;break}B=0;Ia(40,Ea|0,149177,1)|0;Ea=B;B=0;if(Ea&1){ca=104;break}B=0;wa(510,o|0,qa|0);Ea=B;B=0;if(Ea&1){ca=104;break}B=0;ya(424,o|0)|0;Ea=B;B=0;if(Ea&1){Ea=Rb()|0;Fa=Q;Yua(o);Ga=Fa;Ha=Ea;break}Yua(o);k[n>>2]=27468;k[pa>>2]=27488;k[qa>>2]=27560;Yua(za);Ava(qa);vva(pa);Ea=q+56|0;Fa=q+4|0;k[q>>2]=27524;k[Ea>>2]=27544;B=0;wa(508,q+56|0,Fa|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;Ka=Q;La=Ja;vva(Ea);Qb(La|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[Ea>>2]=27488;B=0;va(448,Fa|0);Ja=B;B=0;do if(Ja&1){Ma=Rb()|0;Na=Q;Oa=Ma}else{k[Fa>>2]=27560;Ma=q+36|0;k[Ma>>2]=0;k[Ma+4>>2]=0;k[Ma+8>>2]=0;k[Ma+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Fa|0,c|0);Pa=B;B=0;if(Pa&1){Pa=Rb()|0;Qa=Q;Yua(c);Yua(Ma);Ava(Fa);Na=Qa;Oa=Pa;break}Yua(c);B=0;Pa=Ia(40,q|0,79863,10)|0;Qa=B;B=0;do if(Qa&1)ca=107;else{Ra=(i[a+24>>0]|0)!=0;B=0;Ta=Ia(40,Pa|0,(Ra?159247:159252)|0,(Ra?4:5)|0)|0;Ra=B;B=0;if(Ra&1){ca=107;break}B=0;Ia(40,Ta|0,149177,1)|0;Ta=B;B=0;if(Ta&1){ca=107;break}B=0;wa(510,s|0,Fa|0);Ta=B;B=0;if(Ta&1){ca=107;break}B=0;ya(424,s|0)|0;Ta=B;B=0;if(Ta&1){Ta=Rb()|0;Ra=Q;Yua(s);Ua=Ra;Va=Ta;break}Yua(s);k[q>>2]=27468;k[Ea>>2]=27488;k[Fa>>2]=27560;Yua(Ma);Ava(Fa);vva(Ea);Ta=t+56|0;Ra=t+4|0;k[t>>2]=27524;k[Ta>>2]=27544;B=0;wa(508,t+56|0,Ra|0);Wa=B;B=0;if(Wa&1){Wa=Rb()|0;Ya=Q;Za=Wa;vva(Ta);Qb(Za|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[Ta>>2]=27488;B=0;va(448,Ra|0);Wa=B;B=0;do if(Wa&1){_a=Rb()|0;$a=Q;ab=_a}else{k[Ra>>2]=27560;_a=t+36|0;k[_a>>2]=0;k[_a+4>>2]=0;k[_a+8>>2]=0;k[_a+12>>2]=0;k[t+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ra|0,c|0);bb=B;B=0;if(bb&1){bb=Rb()|0;cb=Q;Yua(c);Yua(_a);Ava(Ra);$a=cb;ab=bb;break}Yua(c);B=0;bb=Ia(40,t|0,144094,18)|0;cb=B;B=0;do if(!(cb&1)){B=0;db=ya(427,k[a+28>>2]|0)|0;eb=B;B=0;if(eb&1){ca=110;break}eb=Lta(db)|0;B=0;fb=Ia(40,bb|0,db|0,eb|0)|0;eb=B;B=0;if(eb&1){ca=110;break}B=0;Ia(40,fb|0,149177,1)|0;fb=B;B=0;if(fb&1){ca=110;break}B=0;wa(510,u|0,Ra|0);fb=B;B=0;if(fb&1){ca=110;break}B=0;ya(424,u|0)|0;fb=B;B=0;if(fb&1){fb=Rb()|0;eb=Q;Yua(u);gb=eb;hb=fb;break}else{Yua(u);k[t>>2]=27468;k[Ta>>2]=27488;k[Ra>>2]=27560;Yua(_a);Ava(Ra);vva(Ta);r=b;return}}else ca=110;while(0);if((ca|0)==110){bb=Rb()|0;gb=Q;hb=bb}k[t>>2]=27468;k[Ta>>2]=27488;k[Ra>>2]=27560;Yua(_a);Ava(Ra);vva(Ta);ib=gb;jb=hb;Qb(jb|0)}while(0);Ya=$a;Za=ab;vva(Ta);Qb(Za|0)}while(0);if((ca|0)==107){Pa=Rb()|0;Ua=Q;Va=Pa}k[q>>2]=27468;k[Ea>>2]=27488;k[Fa>>2]=27560;Yua(Ma);Ava(Fa);vva(Ea);ib=Ua;jb=Va;Qb(jb|0)}while(0);Ka=Na;La=Oa;vva(Ea);Qb(La|0)}while(0);if((ca|0)==104){Ca=Rb()|0;Ga=Q;Ha=Ca}k[n>>2]=27468;k[pa>>2]=27488;k[qa>>2]=27560;Yua(za);Ava(qa);vva(pa);ib=Ga;jb=Ha;Qb(jb|0)}while(0);ua=Aa;xa=Ba;vva(pa);Qb(xa|0)}while(0);if((ca|0)==101){na=Rb()|0;ra=Q;sa=na}k[l>>2]=27468;k[da>>2]=27488;k[ea>>2]=27560;Yua(ka);Ava(ea);vva(da);ib=ra;jb=sa;Qb(jb|0)}while(0);ia=la;ja=ma;vva(da);Qb(ja|0)}while(0);if((ca|0)==98){aa=Rb()|0;fa=Q;ga=aa}k[h>>2]=27468;k[S>>2]=27488;k[T>>2]=27560;Yua(Z);Ava(T);vva(S);ib=fa;jb=ga;Qb(jb|0)}while(0);X=_;Y=$;vva(S);Qb(Y|0)}else ca=95;while(0);if((ca|0)==95){P=Rb()|0;U=Q;V=P}k[f>>2]=27468;k[F>>2]=27488;k[G>>2]=27560;Yua(M);Ava(G);vva(F);ib=U;jb=V;Qb(jb|0)}while(0);K=N;L=O;vva(F);Qb(L|0)}else ca=92;while(0);if((ca|0)==92){E=Rb()|0;H=Q;I=E}k[d>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);ib=H;jb=I;Qb(jb|0)}while(0);y=C;z=D;vva(v);Qb(z|0)}function SK(a){a=a|0;return k[a+4>>2]|0}function TK(a){a=a|0;return 614}function UK(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=102;i[d+1>>0]=2;i[d+2>>0]=0;i[d+3>>0]=0;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;d=a+8|0;n=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+12|0;d=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[n>>0]=d;i[n+1>>0]=d>>8;i[n+2>>0]=d>>16;i[n+3>>0]=d>>24;d=(k[b>>2]|0)+4|0;k[b>>2]=d;n=a+16|0;o=n;q=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;o=n+4|0;n=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;o=d;d=o;i[d>>0]=q;i[d+1>>0]=q>>8;i[d+2>>0]=q>>16;i[d+3>>0]=q>>24;q=o+4|0;i[q>>0]=n;i[q+1>>0]=n>>8;i[q+2>>0]=n>>16;i[q+3>>0]=n>>24;n=(k[b>>2]|0)+8|0;k[b>>2]=n;q=a+28|0;o=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24;i[n>>0]=o;i[n+1>>0]=o>>8;i[n+2>>0]=o>>16;i[n+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;i[o>>0]=i[a+24>>0]|0;o=(k[b>>2]|0)+1|0;k[b>>2]=o;i[o>>0]=i[a+32>>0]|0;k[b>>2]=(k[b>>2]|0)+1;r=e;return}case 2:{k[c>>2]=(k[c>>2]|0)+30;r=e;return}case 1:{c=(k[b>>2]|0)+4|0;k[b>>2]=c;o=a+4|0;n=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+8|0;c=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[o>>0]=c;i[o+1>>0]=c>>8;i[o+2>>0]=c>>16;i[o+3>>0]=c>>24;c=(k[b>>2]|0)+4|0;k[b>>2]=c;o=a+12|0;n=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+16|0;i[t>>0]=i[n>>0];i[t+1>>0]=i[n+1>>0];i[t+2>>0]=i[n+2>>0];i[t+3>>0]=i[n+3>>0];i[t+4>>0]=i[n+4>>0];i[t+5>>0]=i[n+5>>0];i[t+6>>0]=i[n+6>>0];i[t+7>>0]=i[n+7>>0];p[t>>3]=+p[t>>3];i[o>>0]=i[t>>0];i[o+1>>0]=i[t+1>>0];i[o+2>>0]=i[t+2>>0];i[o+3>>0]=i[t+3>>0];i[o+4>>0]=i[t+4>>0];i[o+5>>0]=i[t+5>>0];i[o+6>>0]=i[t+6>>0];i[o+7>>0]=i[t+7>>0];o=(k[b>>2]|0)+8|0;k[b>>2]=o;n=a+28|0;c=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[n>>0]=c;i[n+1>>0]=c>>8;i[n+2>>0]=c>>16;i[n+3>>0]=c>>24;c=(k[b>>2]|0)+4|0;k[b>>2]=c;i[a+24>>0]=i[c>>0]|0;c=(k[b>>2]|0)+1|0;k[b>>2]=c;i[a+32>>0]=i[c>>0]|0;k[b>>2]=(k[b>>2]|0)+1;r=e;return}default:{e=g+56|0;b=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;s=Q;u=c;vva(e);Qb(u|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,b|0);c=B;B=0;do if(c&1){a=Rb()|0;v=Q;w=a}else{k[b>>2]=27560;a=g+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;Yua(f);Yua(a);Ava(b);v=o;w=n;break}Yua(f);B=0;n=Ia(40,g|0,143951,43)|0;o=B;B=0;if(!(o&1)?(B=0,Xa(239,n|0,0)|0,n=B,B=0,!(n&1)):0){n=Ab(20)|0;B=0;eb(502,h|0,79874,81);o=B;B=0;do if(!(o&1)){B=0;eb(502,j|0,149525,8);q=B;B=0;if(q&1){q=Rb()|0;d=Q;Yua(h);x=d;y=q;break}B=0;wa(510,m|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;z=Q;A=q;C=1}else{B=0;ua(163,n|0,h|0,j|0,81,m|0);q=B;B=0;if(q&1)D=1;else{B=0;eb(503,n|0,1240,229);B=0;D=0}q=Rb()|0;d=Q;Yua(m);z=d;A=q;C=D}Yua(j);Yua(h);if(C){x=z;y=A}else{E=z;F=A;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(e);Qb(F|0)}}else{q=Rb()|0;x=Q;y=q}while(0);zb(n|0);E=x;F=y;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(e);Qb(F|0)}o=Rb()|0;E=Q;F=o;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(e);Qb(F|0)}while(0);s=v;u=w;vva(e);Qb(u|0)}}}function VK(a){a=a|0;i[a+32>>0]=1;return}function WK(a,b,c){a=a|0;b=b|0;c=c|0;c=rh(b,0,k[a+8>>2]|0)|0;if(!c)return;Un(c,k[a+12>>2]|0,+p[a+16>>3]);return}function XK(a,b){a=a|0;b=b|0;return (k[a+28>>2]|0)==(b|0)|0}function YK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=rh(b,0,k[a+8>>2]|0)|0;b=c+((Nn(d,k[a+12>>2]|0,943)|0)<<3)|0;p[a+16>>3]=+p[b>>3];i[a+24>>0]=1;return}function ZK(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,79956,96);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,80053,18);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,43,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function _K(a){a=a|0;gh(a);k[a+12>>2]=547;return}function $K(a){a=a|0;jh(a);return}function aL(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=r;r=r+16|0;d=c+4|0;e=c;k[d>>2]=0;k[e>>2]=0;if((th(a)|0)>0){f=0;g=0;while(1){h=qh(a,g)|0;if(ed[k[(k[h>>2]|0)+60>>2]&511](h,b)|0?Hc[k[(k[h>>2]|0)+64>>2]&511](h)|0:0){h=f+1|0;k[d>>2]=h;i=h}else i=f;g=g+1|0;if((g|0)>=(th(a)|0))break;else f=i}}fZ(d,e,1,4,4,uY()|0)|0;r=c;return (k[e>>2]|0)!=0|0}function bL(a){a=a|0;return th(a)|0}function cL(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=r;r=r+16|0;d=c+4|0;e=c;k[d>>2]=0;if((th(a)|0)>0){f=0;g=0;while(1){h=qh(a,g)|0;if(ed[k[(k[h>>2]|0)+60>>2]&511](h,b)|0?(i=Hc[k[(k[h>>2]|0)+56>>2]&511](h)|0,(i|0)>(f|0)):0){k[d>>2]=i;j=i}else j=f;g=g+1|0;if((g|0)>=(th(a)|0))break;else f=j}}fZ(d,e,1,4,1,uY()|0)|0;r=c;return k[e>>2]|0}function dL(a){a=a|0;var b=0,c=0,d=0,e=0;b=r;r=r+16|0;c=b+4|0;d=b;e=th(a)|0;k[c>>2]=e;nZ(c,d,1,4,4,0,uY()|0)|0;uY()|0;r=b;return k[d>>2]|0}function eL(a){a=a|0;var b=0,c=0,d=0;b=k[a>>2]|0;c=a+4|0;if(b>>>0<(k[c>>2]|0)>>>0)d=b;else return;do{b=k[d>>2]|0;Ec[k[(k[b>>2]|0)+80>>2]&1023](b);d=d+4|0}while(d>>>0<(k[c>>2]|0)>>>0);return}function fL(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=k[a>>2]|0;i=a+4|0;if(h>>>0<(k[i>>2]|0)>>>0)j=h;else return;do{h=k[j>>2]|0;ad[k[(k[h>>2]|0)+84>>2]&63](h,b,c,d,e,f,g);j=j+4|0}while(j>>>0<(k[i>>2]|0)>>>0);return}function gL(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;if((th(a)|0)>0){c=0;d=0}else{e=0;return e|0}while(1){f=qh(a,c)|0;g=((ed[k[(k[f>>2]|0)+60>>2]&511](f,b)|0)&1)+d|0;c=c+1|0;if((c|0)>=(th(a)|0)){e=g;break}else d=g}return e|0}function hL(a){a=a|0;k[a>>2]=34004;k[a+4>>2]=34124;k[a+16>>2]=0;k[a+20>>2]=0;k[a+24>>2]=0;return}function iL(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;k[a>>2]=34004;k[a+4>>2]=34124;k[a+8>>2]=b;k[a+12>>2]=d;B=0;d=ya(423,16)|0;b=B;B=0;if(b&1){b=Rb()|0;e=Q;f=b;Qb(f|0)}B=0;eb(509,d|0,c|0,2);c=B;B=0;if(!(c&1)){k[a+16>>2]=d;k[a+24>>2]=0;k[a+20>>2]=0;return}a=Rb()|0;c=Q;Sqa(d);e=c;f=a;Qb(f|0)}function jL(a){a=a|0;var b=0;k[a>>2]=34004;k[a+4>>2]=34124;b=k[a+16>>2]|0;if(!b)return;yla(b);Sqa(b);return}function kL(a){a=a|0;var b=0;k[a>>2]=34004;k[a+4>>2]=34124;b=k[a+16>>2]|0;if(!b){Sqa(a);return}yla(b);Sqa(b);Sqa(a);return}function lL(a){a=a|0;var b=0,c=0,d=0;b=Qqa(28)|0;k[b>>2]=34004;k[b+4>>2]=34124;k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2];c=Bla(k[a+16>>2]|0)|0;k[b+16>>2]=c;d=Gla(c)|0;k[b+20>>2]=d;k[b+24>>2]=k[a+24>>2];return b|0}function mL(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{n=k[b>>2]|0;i[n>>0]=82;i[n+1>>0]=2;i[n+2>>0]=0;i[n+3>>0]=0;n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+8|0;p=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[n>>0]=p;i[n+1>>0]=p>>8;i[n+2>>0]=p>>16;i[n+3>>0]=p>>24;p=(k[b>>2]|0)+4|0;k[b>>2]=p;n=a+12|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[p>>0]=o;i[p+1>>0]=o>>8;i[p+2>>0]=o>>16;i[p+3>>0]=o>>24;k[b>>2]=(k[b>>2]|0)+4;q=a+16|0;s=k[q>>2]|0;Cla(s,b,c,d);t=k[q>>2]|0;u=Gla(t)|0;v=a+20|0;k[v>>2]=u;r=e;return}case 2:{k[c>>2]=(k[c>>2]|0)+12;q=a+16|0;s=k[q>>2]|0;Cla(s,b,c,d);t=k[q>>2]|0;u=Gla(t)|0;v=a+20|0;k[v>>2]=u;r=e;return}case 1:{o=(k[b>>2]|0)+4|0;k[b>>2]=o;p=a+8|0;n=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[p>>0]=n;i[p+1>>0]=n>>8;i[p+2>>0]=n>>16;i[p+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;p=a+12|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[p>>0]=o;i[p+1>>0]=o>>8;i[p+2>>0]=o>>16;i[p+3>>0]=o>>24;k[b>>2]=(k[b>>2]|0)+4;o=Qqa(16)|0;B=0;va(489,o|0);p=B;B=0;if(p&1){p=Rb()|0;n=Q;Sqa(o);w=n;x=p;Qb(x|0)}else{k[a+16>>2]=o;q=a+16|0;s=k[q>>2]|0;Cla(s,b,c,d);t=k[q>>2]|0;u=Gla(t)|0;v=a+20|0;k[v>>2]=u;r=e;return}break}default:{e=g+56|0;u=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,u|0);v=B;B=0;if(v&1){v=Rb()|0;y=Q;z=v;vva(e);Qb(z|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,u|0);v=B;B=0;do if(v&1){a=Rb()|0;A=Q;C=a}else{k[u>>2]=27560;a=g+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,u|0,f|0);t=B;B=0;if(t&1){t=Rb()|0;q=Q;Yua(f);Yua(a);Ava(u);A=q;C=t;break}Yua(f);B=0;t=Ia(40,g|0,143951,43)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,t|0,0)|0,d=B,B=0,!(d&1)):0){d=Ab(20)|0;B=0;eb(502,h|0,80081,72);c=B;B=0;do if(!(c&1)){B=0;eb(502,j|0,149525,8);b=B;B=0;if(b&1){b=Rb()|0;s=Q;Yua(h);D=s;E=b;break}B=0;wa(510,m|0,u|0);b=B;B=0;if(b&1){b=Rb()|0;F=b;G=Q;H=1}else{B=0;ua(163,d|0,h|0,j|0,73,m|0);b=B;B=0;if(b&1)I=1;else{B=0;eb(503,d|0,1240,229);B=0;I=0}b=Rb()|0;s=Q;Yua(m);F=b;G=s;H=I}Yua(j);Yua(h);if(H){D=G;E=F}else{J=G;K=F;break a}}else{s=Rb()|0;D=Q;E=s}while(0);zb(d|0);J=D;K=E}else L=17;while(0);if((L|0)==17){t=Rb()|0;J=Q;K=t}k[g>>2]=27468;k[e>>2]=27488;k[u>>2]=27560;Yua(a);Ava(u);vva(e);w=J;x=K;Qb(x|0)}while(0);y=A;z=C;vva(e);Qb(z|0)}}}function nL(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=d+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(p);Ava(l);q=u;s=t;break}Yua(c);B=0;Ia(40,d|0,80154,9)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,e|0,l|0),u=B,B=0,!(u&1)):0){B=0;ya(424,e|0)|0;u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);u=f+56|0;v=f+4|0;k[f>>2]=27524;k[u>>2]=27544;B=0;wa(508,f+56|0,v|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(u);Qb(A|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[v>>2]=27560;C=f+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(c);Yua(C);Ava(v);D=G;E=F;break}Yua(c);B=0;F=Ia(40,f|0,144086,7)|0;G=B;B=0;do if(((!(G&1)?(B=0,H=Xa(242,F|0,k[a+8>>2]|0)|0,I=B,B=0,!(I&1)):0)?(B=0,Ia(40,H|0,149177,1)|0,H=B,B=0,!(H&1)):0)?(B=0,wa(510,g|0,v|0),H=B,B=0,!(H&1)):0){B=0;ya(424,g|0)|0;H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(g);J=I;K=H;break}Yua(g);k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);H=h+56|0;I=h+4|0;k[h>>2]=27524;k[H>>2]=27544;B=0;wa(508,h+56|0,I|0);L=B;B=0;if(L&1){L=Rb()|0;M=Q;N=L;vva(H);Qb(N|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[H>>2]=27488;B=0;va(448,I|0);L=B;B=0;do if(L&1){O=Rb()|0;P=Q;R=O}else{k[I>>2]=27560;O=h+36|0;k[O>>2]=0;k[O+4>>2]=0;k[O+8>>2]=0;k[O+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,I|0,c|0);S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(c);Yua(O);Ava(I);P=T;R=S;break}Yua(c);B=0;S=Ia(40,h|0,144094,18)|0;T=B;B=0;do if(!(T&1)){B=0;U=ya(427,k[a+12>>2]|0)|0;V=B;B=0;if(V&1){W=46;break}V=Lta(U)|0;B=0;X=Ia(40,S|0,U|0,V|0)|0;V=B;B=0;if(V&1){W=46;break}B=0;Ia(40,X|0,149177,1)|0;X=B;B=0;if(X&1){W=46;break}B=0;wa(510,i|0,I|0);X=B;B=0;if(X&1){W=46;break}B=0;ya(424,i|0)|0;X=B;B=0;if(X&1){X=Rb()|0;V=Q;Yua(i);Y=V;Z=X;break}else{Yua(i);k[h>>2]=27468;k[H>>2]=27488;k[I>>2]=27560;Yua(O);Ava(I);vva(H);Ala(k[a+16>>2]|0);r=b;return}}else W=46;while(0);if((W|0)==46){S=Rb()|0;Y=Q;Z=S}k[h>>2]=27468;k[H>>2]=27488;k[I>>2]=27560;Yua(O);Ava(I);vva(H);_=Y;$=Z;Qb($|0)}while(0);M=P;N=R;vva(H);Qb(N|0)}else W=43;while(0);if((W|0)==43){F=Rb()|0;J=Q;K=F}k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);_=J;$=K;Qb($|0)}while(0);z=D;A=E;vva(u);Qb(A|0)}else W=40;while(0);if((W|0)==40){t=Rb()|0;w=Q;x=t}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);_=w;$=x;Qb($|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}function oL(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=d+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(p);Ava(l);q=u;s=t;break}Yua(c);B=0;Ia(40,d|0,80154,9)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,e|0,l|0),u=B,B=0,!(u&1)):0){B=0;ya(424,e|0)|0;u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);u=f+56|0;v=f+4|0;k[f>>2]=27524;k[u>>2]=27544;B=0;wa(508,f+56|0,v|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(u);Qb(A|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[v>>2]=27560;C=f+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(c);Yua(C);Ava(v);D=G;E=F;break}Yua(c);B=0;F=Ia(40,f|0,144086,7)|0;G=B;B=0;do if(((!(G&1)?(B=0,H=Xa(242,F|0,k[a+8>>2]|0)|0,I=B,B=0,!(I&1)):0)?(B=0,Ia(40,H|0,149177,1)|0,H=B,B=0,!(H&1)):0)?(B=0,wa(510,g|0,v|0),H=B,B=0,!(H&1)):0){B=0;ya(424,g|0)|0;H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(g);J=I;K=H;break}Yua(g);k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);H=h+56|0;I=h+4|0;k[h>>2]=27524;k[H>>2]=27544;B=0;wa(508,h+56|0,I|0);L=B;B=0;if(L&1){L=Rb()|0;M=Q;N=L;vva(H);Qb(N|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[H>>2]=27488;B=0;va(448,I|0);L=B;B=0;do if(L&1){O=Rb()|0;P=Q;R=O}else{k[I>>2]=27560;O=h+36|0;k[O>>2]=0;k[O+4>>2]=0;k[O+8>>2]=0;k[O+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,I|0,c|0);S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(c);Yua(O);Ava(I);P=T;R=S;break}Yua(c);B=0;S=Ia(40,h|0,144094,18)|0;T=B;B=0;do if(!(T&1)){B=0;U=ya(427,k[a+12>>2]|0)|0;V=B;B=0;if(V&1){W=46;break}V=Lta(U)|0;B=0;X=Ia(40,S|0,U|0,V|0)|0;V=B;B=0;if(V&1){W=46;break}B=0;Ia(40,X|0,149177,1)|0;X=B;B=0;if(X&1){W=46;break}B=0;wa(510,i|0,I|0);X=B;B=0;if(X&1){W=46;break}B=0;ya(424,i|0)|0;X=B;B=0;if(X&1){X=Rb()|0;V=Q;Yua(i);Y=V;Z=X;break}else{Yua(i);k[h>>2]=27468;k[H>>2]=27488;k[I>>2]=27560;Yua(O);Ava(I);vva(H);zla(k[a+16>>2]|0);r=b;return}}else W=46;while(0);if((W|0)==46){S=Rb()|0;Y=Q;Z=S}k[h>>2]=27468;k[H>>2]=27488;k[I>>2]=27560;Yua(O);Ava(I);vva(H);_=Y;$=Z;Qb($|0)}while(0);M=P;N=R;vva(H);Qb(N|0)}else W=43;while(0);if((W|0)==43){F=Rb()|0;J=Q;K=F}k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);_=J;$=K;Qb($|0)}while(0);z=D;A=E;vva(u);Qb(A|0)}else W=40;while(0);if((W|0)==40){t=Rb()|0;w=Q;x=t}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);_=w;$=x;Qb($|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}function pL(a){a=a|0;return k[a+8>>2]|0}function qL(a){a=a|0;return 594}function rL(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;f=a+16|0;Ela(k[f>>2]|0,d);d=Gla(k[f>>2]|0)|0;k[a+20>>2]=d;k[a+24>>2]=g;return}function sL(a,b){a=a|0;b=b|0;nd[k[(k[a>>2]|0)+40>>2]&1023](a,b,0);return}function tL(a,b,c){a=a|0;b=b|0;c=c|0;return}function uL(a,b){a=a|0;b=b|0;return}function vL(a,b){a=a|0;b=b|0;var c=0;c=a+20|0;a=Qn(k[k[c>>2]>>2]|0)|0;k[b>>2]=a;a=Qn(k[(k[c>>2]|0)+4>>2]|0)|0;k[b+4>>2]=a;return}function wL(a,b){a=a|0;b=b|0;var c=0;c=a+20|0;a=Rn(k[k[c>>2]>>2]|0)|0;k[b>>2]=a;a=Rn(k[(k[c>>2]|0)+4>>2]|0)|0;k[b+4>>2]=a;return}function xL(a){a=a|0;return 2}function yL(a,b){a=a|0;b=b|0;return (k[a+12>>2]|0)==(b|0)|0}function zL(a){a=a|0;return 1}function AL(a,b,c){a=a|0;b=b|0;c=+c;md[k[(k[a>>2]|0)+72>>2]&31](a,b,0,c);return}function BL(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;e=r;r=r+192|0;f=e+180|0;g=e+176|0;h=e+40|0;i=e+24|0;j=e+12|0;l=e;cO(k[a+24>>2]|0,g,477);switch(k[g>>2]|0){case 497:{m=CL(a,d)|0;IN(m,b,c);HN(m);Sqa(m);r=e;return}case 510:{m=DL(a,d)|0;IN(m,b,c);HN(m);Sqa(m);r=e;return}default:{e=h+56|0;m=h+4|0;k[h>>2]=27524;k[e>>2]=27544;B=0;wa(508,h+56|0,m|0);c=B;B=0;if(c&1){c=Rb()|0;n=Q;o=c;vva(e);Qb(o|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[e>>2]=27488;B=0;va(448,m|0);c=B;B=0;do if(c&1){b=Rb()|0;p=Q;q=b}else{k[m>>2]=27560;b=h+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,m|0,f|0);a=B;B=0;if(a&1){a=Rb()|0;s=Q;Yua(f);Yua(b);Ava(m);p=s;q=a;break}Yua(f);B=0;a=Ia(40,h|0,144156,9)|0;s=B;B=0;if((((((!(s&1)?(B=0,s=Xa(242,a|0,k[g>>2]|0)|0,a=B,B=0,!(a&1)):0)?(B=0,a=Ia(40,s|0,144166,2)|0,s=B,B=0,!(s&1)):0)?(B=0,s=ya(427,k[g>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,a|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,144169,19)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,i|0,80081,72);u=B;B=0;do if(!(u&1)){B=0;eb(502,j|0,118091,20);s=B;B=0;if(s&1){s=Rb()|0;a=Q;Yua(i);v=a;w=s;break}B=0;wa(510,l|0,m|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,i|0,j|0,197,l|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;a=Q;Yua(l);x=a;y=s;z=A}Yua(j);Yua(i);if(z){v=x;w=y}else{C=x;D=y;k[h>>2]=27468;k[e>>2]=27488;k[m>>2]=27560;Yua(b);Ava(m);vva(e);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[h>>2]=27468;k[e>>2]=27488;k[m>>2]=27560;Yua(b);Ava(m);vva(e);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[h>>2]=27468;k[e>>2]=27488;k[m>>2]=27560;Yua(b);Ava(m);vva(e);Qb(D|0)}while(0);n=p;o=q;vva(e);Qb(o|0)}}}function CL(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0;c=r;r=r+704|0;d=c+692|0;e=c+520|0;f=c+680|0;g=c+668|0;h=c+656|0;i=c+384|0;j=c+368|0;l=c+84|0;m=c+72|0;n=c+232|0;o=c+60|0;p=c+48|0;q=c+36|0;s=c+96|0;t=c+24|0;u=c+12|0;v=c;w=a+20|0;x=co(k[k[w>>2]>>2]|0)|0;y=co(k[(k[w>>2]|0)+4>>2]|0)|0;a:do switch(x|0){case 536:{switch(y|0){case 536:{z=RL(a,b)|0;r=c;return z|0}case 540:{z=RL(a,b)|0;r=c;return z|0}default:{w=e+56|0;A=e+4|0;k[e>>2]=27524;k[w>>2]=27544;B=0;wa(508,e+56|0,A|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;E=C;vva(w);Qb(E|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[w>>2]=27488;B=0;va(448,A|0);C=B;B=0;do if(C&1){F=Rb()|0;G=Q;H=F}else{k[A>>2]=27560;F=e+36|0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,A|0,d|0);I=B;B=0;if(I&1){I=Rb()|0;J=Q;Yua(d);Yua(F);Ava(A);G=J;H=I;break}Yua(d);B=0;I=Ia(40,e|0,127478,14)|0;J=B;B=0;b:do if((((!(J&1)?(B=0,K=ya(427,y|0)|0,L=B,B=0,!(L&1)):0)?(L=Lta(K)|0,B=0,M=Ia(40,I|0,K|0,L|0)|0,L=B,B=0,!(L&1)):0)?(B=0,L=Ia(40,M|0,146481,18)|0,M=B,B=0,!(M&1)):0)?(B=0,Xa(239,L|0,0)|0,L=B,B=0,!(L&1)):0){L=Ab(20)|0;B=0;eb(502,f|0,80081,72);M=B;B=0;do if(!(M&1)){B=0;eb(502,g|0,118158,38);K=B;B=0;if(K&1){K=Rb()|0;N=Q;Yua(f);O=N;P=K;break}B=0;wa(510,h|0,A|0);K=B;B=0;if(K&1){K=Rb()|0;R=Q;S=K;T=1}else{B=0;ua(163,L|0,f|0,g|0,359,h|0);K=B;B=0;if(K&1)U=1;else{B=0;eb(503,L|0,1240,229);B=0;U=0}K=Rb()|0;N=Q;Yua(h);R=N;S=K;T=U}Yua(g);Yua(f);if(T){O=R;P=S}else{V=R;W=S;break b}}else{K=Rb()|0;O=Q;P=K}while(0);zb(L|0);V=O;W=P}else X=23;while(0);if((X|0)==23){I=Rb()|0;V=Q;W=I}k[e>>2]=27468;k[w>>2]=27488;k[A>>2]=27560;Yua(F);Ava(A);vva(w);Y=V;Z=W;Qb(Z|0)}while(0);D=G;E=H;vva(w);Qb(E|0)}}break}case 540:{switch(y|0){case 536:{z=RL(a,b)|0;r=c;return z|0}case 540:{z=RL(a,b)|0;r=c;return z|0}default:{A=i+56|0;C=i+4|0;k[i>>2]=27524;k[A>>2]=27544;B=0;wa(508,i+56|0,C|0);I=B;B=0;if(I&1){I=Rb()|0;_=Q;$=I;vva(A);Qb($|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[A>>2]=27488;B=0;va(448,C|0);I=B;B=0;do if(I&1){J=Rb()|0;aa=Q;ba=J}else{k[C>>2]=27560;J=i+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,C|0,d|0);M=B;B=0;if(M&1){M=Rb()|0;K=Q;Yua(d);Yua(J);Ava(C);aa=K;ba=M;break}Yua(d);B=0;M=Ia(40,i|0,127478,14)|0;K=B;B=0;c:do if((((!(K&1)?(B=0,N=ya(427,y|0)|0,ca=B,B=0,!(ca&1)):0)?(ca=Lta(N)|0,B=0,da=Ia(40,M|0,N|0,ca|0)|0,ca=B,B=0,!(ca&1)):0)?(B=0,ca=Ia(40,da|0,146481,18)|0,da=B,B=0,!(da&1)):0)?(B=0,Xa(239,ca|0,0)|0,ca=B,B=0,!(ca&1)):0){ca=Ab(20)|0;B=0;eb(502,j|0,80081,72);da=B;B=0;do if(!(da&1)){B=0;eb(502,l|0,118158,38);N=B;B=0;if(N&1){N=Rb()|0;ea=Q;Yua(j);fa=N;ga=ea;break}B=0;wa(510,m|0,C|0);ea=B;B=0;if(ea&1){ea=Rb()|0;ha=1;ia=Q;ja=ea}else{B=0;ua(163,ca|0,j|0,l|0,365,m|0);ea=B;B=0;if(ea&1)ka=1;else{B=0;eb(503,ca|0,1240,229);B=0;ka=0}ea=Rb()|0;N=Q;Yua(m);ha=ka;ia=N;ja=ea}Yua(l);Yua(j);if(ha){fa=ja;ga=ia}else{la=ia;ma=ja;break c}}else{ea=Rb()|0;fa=ea;ga=Q}while(0);zb(ca|0);la=ga;ma=fa}else X=52;while(0);if((X|0)==52){M=Rb()|0;la=Q;ma=M}k[i>>2]=27468;k[A>>2]=27488;k[C>>2]=27560;Yua(J);Ava(C);vva(A);Y=la;Z=ma;Qb(Z|0)}while(0);_=aa;$=ba;vva(A);Qb($|0)}}break}case 543:{switch(y|0){case 543:{z=QL(a,b)|0;r=c;return z|0}case 534:{z=QL(a,b)|0;r=c;return z|0}default:{C=n+56|0;I=n+4|0;k[n>>2]=27524;k[C>>2]=27544;B=0;wa(508,n+56|0,I|0);w=B;B=0;if(w&1){w=Rb()|0;na=Q;oa=w;vva(C);Qb(oa|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[C>>2]=27488;B=0;va(448,I|0);w=B;B=0;do if(w&1){M=Rb()|0;pa=Q;qa=M}else{k[I>>2]=27560;M=n+36|0;k[M>>2]=0;k[M+4>>2]=0;k[M+8>>2]=0;k[M+12>>2]=0;k[n+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,I|0,d|0);K=B;B=0;if(K&1){K=Rb()|0;F=Q;Yua(d);Yua(M);Ava(I);pa=F;qa=K;break}Yua(d);B=0;K=Ia(40,n|0,127478,14)|0;F=B;B=0;d:do if((((!(F&1)?(B=0,da=ya(427,y|0)|0,L=B,B=0,!(L&1)):0)?(L=Lta(da)|0,B=0,ea=Ia(40,K|0,da|0,L|0)|0,L=B,B=0,!(L&1)):0)?(B=0,L=Ia(40,ea|0,146481,18)|0,ea=B,B=0,!(ea&1)):0)?(B=0,Xa(239,L|0,0)|0,L=B,B=0,!(L&1)):0){L=Ab(20)|0;B=0;eb(502,o|0,80081,72);ea=B;B=0;do if(!(ea&1)){B=0;eb(502,p|0,118158,38);da=B;B=0;if(da&1){da=Rb()|0;N=Q;Yua(o);ra=da;sa=N;break}B=0;wa(510,q|0,I|0);N=B;B=0;if(N&1){N=Rb()|0;ta=1;xa=Q;za=N}else{B=0;ua(163,L|0,o|0,p|0,371,q|0);N=B;B=0;if(N&1)Aa=1;else{B=0;eb(503,L|0,1240,229);B=0;Aa=0}N=Rb()|0;da=Q;Yua(q);ta=Aa;xa=da;za=N}Yua(p);Yua(o);if(ta){ra=za;sa=xa}else{Ba=xa;Ca=za;break d}}else{N=Rb()|0;ra=N;sa=Q}while(0);zb(L|0);Ba=sa;Ca=ra}else X=81;while(0);if((X|0)==81){K=Rb()|0;Ba=Q;Ca=K}k[n>>2]=27468;k[C>>2]=27488;k[I>>2]=27560;Yua(M);Ava(I);vva(C);Y=Ba;Z=Ca;Qb(Z|0)}while(0);na=pa;oa=qa;vva(C);Qb(oa|0)}}break}case 534:{switch(y|0){case 543:{z=QL(a,b)|0;r=c;return z|0}case 534:{z=QL(a,b)|0;r=c;return z|0}default:break a}break}default:{}}while(0);z=s+56|0;c=s+4|0;k[s>>2]=27524;k[z>>2]=27544;B=0;wa(508,s+56|0,c|0);a=B;B=0;if(a&1){a=Rb()|0;Da=Q;Ea=a;vva(z);Qb(Ea|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[z>>2]=27488;B=0;va(448,c|0);a=B;B=0;do if(a&1){y=Rb()|0;Fa=Q;Ga=y}else{k[c>>2]=27560;y=s+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[s+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,c|0,d|0);oa=B;B=0;if(oa&1){oa=Rb()|0;qa=Q;Yua(d);Yua(y);Ava(c);Fa=qa;Ga=oa;break}Yua(d);B=0;oa=Ia(40,s|0,127478,14)|0;qa=B;B=0;e:do if((((!(qa&1)?(B=0,pa=ya(427,x|0)|0,na=B,B=0,!(na&1)):0)?(na=Lta(pa)|0,B=0,Ca=Ia(40,oa|0,pa|0,na|0)|0,na=B,B=0,!(na&1)):0)?(B=0,na=Ia(40,Ca|0,146481,18)|0,Ca=B,B=0,!(Ca&1)):0)?(B=0,Xa(239,na|0,0)|0,na=B,B=0,!(na&1)):0){na=Ab(20)|0;B=0;eb(502,t|0,80081,72);Ca=B;B=0;do if(!(Ca&1)){B=0;eb(502,u|0,118158,38);pa=B;B=0;if(pa&1){pa=Rb()|0;Ba=Q;Yua(t);Ha=pa;Ja=Ba;break}B=0;wa(510,v|0,c|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;Ka=1;La=Q;Ma=Ba}else{B=0;ua(163,na|0,t|0,u|0,378,v|0);Ba=B;B=0;if(Ba&1)Na=1;else{B=0;eb(503,na|0,1240,229);B=0;Na=0}Ba=Rb()|0;pa=Q;Yua(v);Ka=Na;La=pa;Ma=Ba}Yua(u);Yua(t);if(Ka){Ha=Ma;Ja=La}else{Oa=La;Pa=Ma;break e}}else{Ba=Rb()|0;Ha=Ba;Ja=Q}while(0);zb(na|0);Oa=Ja;Pa=Ha}else X=110;while(0);if((X|0)==110){oa=Rb()|0;Oa=Q;Pa=oa}k[s>>2]=27468;k[z>>2]=27488;k[c>>2]=27560;Yua(y);Ava(c);vva(z);Y=Oa;Z=Pa;Qb(Z|0)}while(0);Da=Fa;Ea=Ga;vva(z);Qb(Ea|0);return 0}function DL(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0.0,h=0.0;c=r;r=r+16|0;d=c;e=Qqa(68)|0;f=a+24|0;B=0;ua(165,e|0,k[a+20>>2]|0,2,k[f>>2]|0,534);a=B;B=0;if(a&1){a=Rb()|0;Sqa(e);Qb(a|0)}else{dO(k[f>>2]|0,d,308);g=+ba(10.0,+(+p[d>>3]))*b;f=k[e+12>>2]|0;p[f>>3]=g;g=-b;h=+ba(10.0,+(+p[d>>3]))*g;p[f+8>>3]=h;h=+ba(10.0,+(+p[d>>3]))*g;p[f+16>>3]=h;h=+ba(10.0,+(+p[d>>3]))*b;p[f+24>>3]=h;r=c;return e|0}return 0}function EL(a,b,c){a=a|0;b=b|0;c=+c;return}function FL(a){a=a|0;k[a+20>>2]=0;k[a+24>>2]=0;Dla(k[a+16>>2]|0);return}function GL(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return}function HL(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;g=r;r=r+192|0;d=g+176|0;j=g+40|0;l=g+24|0;m=g+12|0;n=g;o=a+20|0;a=e+(Rn(k[k[o>>2]>>2]|0)|0)|0;p=(i[a>>0]|0)==0;if((h|0)==937){if(p){a=e+(Rn(k[k[o>>2]>>2]|0)|0)|0;i[a>>0]=1;a=0;while(1){q=f+(a<<2)|0;if((k[q>>2]|0)>-1)a=a+1|0;else{s=q;break}}a=Rn(k[k[o>>2]>>2]|0)|0;k[s>>2]=a;a=k[k[o>>2]>>2]|0;if(k[a+28>>2]|0){s=(fo(a)|0)==0;t=s&1;u=s&1^1}else{t=0;u=0}}else{t=0;u=0}s=e+(Rn(k[(k[o>>2]|0)+4>>2]|0)|0)|0;if(i[s>>0]|0){v=t;w=u;k[b>>2]=v;k[c>>2]=w;r=g;return}s=e+(Rn(k[(k[o>>2]|0)+4>>2]|0)|0)|0;i[s>>0]=1;s=0;while(1){a=f+(s<<2)|0;if((k[a>>2]|0)>-1)s=s+1|0;else{x=a;break}}s=Rn(k[(k[o>>2]|0)+4>>2]|0)|0;k[x>>2]=s;s=k[(k[o>>2]|0)+4>>2]|0;if(!(k[s+28>>2]|0)){v=t;w=u;k[b>>2]=v;k[c>>2]=w;r=g;return}if(!(fo(s)|0)){v=t+1|0;w=u;k[b>>2]=v;k[c>>2]=w;r=g;return}else{v=t;w=u+1|0;k[b>>2]=v;k[c>>2]=w;r=g;return}}a:do if(p){u=e+(Rn(k[k[o>>2]>>2]|0)|0)|0;i[u>>0]=1;u=0;while(1){t=f+(u<<2)|0;if((k[t>>2]|0)>-1)u=u+1|0;else{y=t;break}}u=Rn(k[k[o>>2]>>2]|0)|0;k[y>>2]=u;switch(h|0){case 966:{u=k[k[o>>2]>>2]|0;if(!(k[u+32>>2]|0)){z=0;A=0;C=40;break a}t=(fo(u)|0)==0;z=t;A=t&1^1;C=40;break a;break}case 943:{t=k[k[o>>2]>>2]|0;if(!(k[t+24>>2]|0)){z=0;A=0;C=40;break a}u=(fo(t)|0)==0;z=u;A=u&1^1;C=40;break a;break}default:break a}}else{z=0;A=0;C=40}while(0);b:do if((C|0)==40){y=z&1;p=e+(Rn(k[(k[o>>2]|0)+4>>2]|0)|0)|0;if(i[p>>0]|0){v=y;w=A;k[b>>2]=v;k[c>>2]=w;r=g;return}p=e+(Rn(k[(k[o>>2]|0)+4>>2]|0)|0)|0;i[p>>0]=1;p=0;while(1){u=f+(p<<2)|0;if((k[u>>2]|0)>-1)p=p+1|0;else{D=u;break}}p=Rn(k[(k[o>>2]|0)+4>>2]|0)|0;k[D>>2]=p;switch(h|0){case 966:{p=k[(k[o>>2]|0)+4>>2]|0;if(!(k[p+32>>2]|0)){v=y;w=A;k[b>>2]=v;k[c>>2]=w;r=g;return}if(!(fo(p)|0)){v=z?2:1;w=A;k[b>>2]=v;k[c>>2]=w;r=g;return}else{v=y;w=A+1|0;k[b>>2]=v;k[c>>2]=w;r=g;return}break}case 943:{p=k[(k[o>>2]|0)+4>>2]|0;if(!(k[p+24>>2]|0)){v=y;w=A;k[b>>2]=v;k[c>>2]=w;r=g;return}if(!(fo(p)|0)){v=z?2:1;w=A;k[b>>2]=v;k[c>>2]=w;r=g;return}else{v=y;w=A+1|0;k[b>>2]=v;k[c>>2]=w;r=g;return}break}default:break b}}while(0);g=j+56|0;w=j+4|0;k[j>>2]=27524;k[g>>2]=27544;B=0;wa(508,j+56|0,w|0);c=B;B=0;if(c&1){c=Rb()|0;E=Q;F=c;vva(g);Qb(F|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[g>>2]=27488;B=0;va(448,w|0);c=B;B=0;do if(c&1){v=Rb()|0;G=Q;H=v}else{k[w>>2]=27560;v=j+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[j+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,w|0,d|0);b=B;B=0;if(b&1){b=Rb()|0;A=Q;Yua(d);Yua(v);Ava(w);G=A;H=b;break}Yua(d);B=0;b=Ia(40,j|0,145010,13)|0;A=B;B=0;if(!(A&1)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,l|0,80081,72);A=B;B=0;do if(!(A&1)){B=0;eb(502,m|0,144217,23);z=B;B=0;if(z&1){z=Rb()|0;o=Q;Yua(l);I=o;J=z;break}B=0;wa(510,n|0,w|0);z=B;B=0;if(z&1){z=Rb()|0;K=Q;L=z;M=1}else{B=0;ua(163,b|0,l|0,m|0,270,n|0);z=B;B=0;if(z&1)N=1;else{B=0;eb(503,b|0,1240,229);B=0;N=0}z=Rb()|0;o=Q;Yua(n);K=o;L=z;M=N}Yua(m);Yua(l);if(M){I=K;J=L}else{O=K;P=L;k[j>>2]=27468;k[g>>2]=27488;k[w>>2]=27560;Yua(v);Ava(w);vva(g);Qb(P|0)}}else{z=Rb()|0;I=Q;J=z}while(0);zb(b|0);O=I;P=J;k[j>>2]=27468;k[g>>2]=27488;k[w>>2]=27560;Yua(v);Ava(w);vva(g);Qb(P|0)}A=Rb()|0;O=Q;P=A;k[j>>2]=27468;k[g>>2]=27488;k[w>>2]=27560;Yua(v);Ava(w);vva(g);Qb(P|0)}while(0);E=G;F=H;vva(g);Qb(F|0)}function IL(a,b,c){a=a|0;b=+b;c=c|0;return}function JL(a,b,c){a=a|0;b=+b;c=c|0;return}function KL(a,b,c){a=a|0;b=b|0;c=c|0;return}function LL(a,b,c){a=a|0;b=b|0;c=c|0;return}function ML(a,b,c){a=a|0;b=b|0;c=c|0;return}function NL(a,b,c){a=a|0;b=b|0;c=c|0;return}function OL(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function PL(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function QL(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0.0,i=0,j=0.0,l=0,m=0;c=r;r=r+16|0;d=c;e=Qqa(68)|0;f=a+20|0;g=a+24|0;B=0;ua(165,e|0,k[f>>2]|0,2,k[g>>2]|0,543);a=B;B=0;if(a&1){a=Rb()|0;Sqa(e);Qb(a|0)}dO(k[g>>2]|0,d,73);g=eo(k[k[f>>2]>>2]|0,542,943)|0;eo(k[(k[f>>2]|0)+4>>2]|0,542,943)|0;f=g<<1;if((g|0)<=0){r=c;return e|0}a=k[e+12>>2]|0;h=-b;i=0;do{j=+ba(10.0,+(+p[d>>3]))*b;l=ma(i,f)|0;p[a+(l+i<<3)>>3]=j;j=+ba(10.0,+(+p[d>>3]))*h;m=i+g|0;p[a+(m+l<<3)>>3]=j;j=+ba(10.0,+(+p[d>>3]))*h;l=ma(m,f)|0;p[a+(l+i<<3)>>3]=j;j=+ba(10.0,+(+p[d>>3]))*b;p[a+(m+l<<3)>>3]=j;i=i+1|0}while((i|0)!=(g|0));r=c;return e|0}function RL(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0.0,i=0,j=0.0,l=0,m=0;c=r;r=r+16|0;d=c;e=Qqa(68)|0;f=a+20|0;g=a+24|0;B=0;ua(165,e|0,k[f>>2]|0,2,k[g>>2]|0,534);a=B;B=0;if(a&1){a=Rb()|0;Sqa(e);Qb(a|0)}dO(k[g>>2]|0,d,73);g=eo(k[k[f>>2]>>2]|0,534,943)|0;eo(k[(k[f>>2]|0)+4>>2]|0,534,943)|0;f=g<<1;if((g|0)<=0){r=c;return e|0}a=k[e+12>>2]|0;h=-b;i=0;do{j=+ba(10.0,+(+p[d>>3]))*b;l=ma(i,f)|0;p[a+(l+i<<3)>>3]=j;j=+ba(10.0,+(+p[d>>3]))*h;m=i+g|0;p[a+(m+l<<3)>>3]=j;j=+ba(10.0,+(+p[d>>3]))*h;l=ma(m,f)|0;p[a+(l+i<<3)>>3]=j;j=+ba(10.0,+(+p[d>>3]))*b;p[a+(m+l<<3)>>3]=j;i=i+1|0}while((i|0)!=(g|0));r=c;return e|0}function SL(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,80170,81);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144327,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,44,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function TL(a,b,c){a=a|0;b=b|0;c=c|0;SL(a+-4|0,b,c)}function UL(a){a=a|0;var b=0;k[a>>2]=34152;k[a+4>>2]=34272;b=a+16|0;a=b+36|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(a|0));return}function VL(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0;f=r;r=r+16|0;g=f+8|0;h=f+4|0;i=f;k[a>>2]=34152;k[a+4>>2]=34272;k[a+8>>2]=b;k[a+12>>2]=e;k[g>>2]=c+1+(k[d+100>>2]|0);k[i>>2]=k[(k[d+92>>2]|0)+(c<<2)>>2];k[h>>2]=(k[d+56>>2]|0)+1;B=0;d=ya(423,16)|0;c=B;B=0;if(!(c&1)){B=0;eb(509,d|0,g|0,1);g=B;B=0;if(g&1){g=Rb()|0;c=Q;Sqa(d);j=c;l=g;Qb(l|0)}k[a+16>>2]=d;B=0;d=ya(423,16)|0;g=B;B=0;if(!(g&1)){B=0;eb(509,d|0,i|0,1);i=B;B=0;if(i&1){i=Rb()|0;g=Q;Sqa(d);j=g;l=i;Qb(l|0)}k[a+20>>2]=d;B=0;d=ya(423,16)|0;i=B;B=0;if(!(i&1)){B=0;eb(509,d|0,h|0,1);h=B;B=0;if(!(h&1)){k[a+24>>2]=d;h=a+28|0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[h+16>>2]=0;k[h+20>>2]=0;r=f;return}f=Rb()|0;h=Q;Sqa(d);j=h;l=f;Qb(l|0)}}}f=Rb()|0;j=Q;l=f;Qb(l|0)}function WL(a){a=a|0;var b=0;k[a>>2]=34152;k[a+4>>2]=34272;b=k[a+16>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+20>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+24>>2]|0;if(!b)return;yla(b);Sqa(b);return}function XL(a){a=a|0;var b=0;k[a>>2]=34152;k[a+4>>2]=34272;b=k[a+16>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+20>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+24>>2]|0;if(!b){Sqa(a);return}yla(b);Sqa(b);Sqa(a);return}function YL(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Qqa(52)|0;k[b>>2]=34152;k[b+4>>2]=34272;c=b+16|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=0;k[c+24>>2]=0;k[c+28>>2]=0;k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2];k[b+40>>2]=k[a+40>>2];d=Bla(k[a+16>>2]|0)|0;k[c>>2]=d;c=Bla(k[a+24>>2]|0)|0;k[b+24>>2]=c;e=Bla(k[a+20>>2]|0)|0;k[b+20>>2]=e;f=Fla(d)|0;k[b+28>>2]=f;f=Fla(c)|0;k[b+36>>2]=f;f=Fla(e)|0;k[b+32>>2]=f;k[a+44>>2]=0;k[b+44>>2]=0;k[a+48>>2]=0;k[b+48>>2]=0;return b|0}function ZL(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;e=r;r=r+368|0;f=e+344|0;g=e+208|0;h=e+196|0;j=e+184|0;m=e+36|0;n=e+48|0;o=e+24|0;p=e+12|0;q=e;s=(d|0)==0;a:do if(s){t=k[b>>2]|0;i[t>>0]=81;i[t+1>>0]=2;i[t+2>>0]=0;i[t+3>>0]=0;t=(k[b>>2]|0)+4|0;k[b>>2]=t;u=a+8|0;v=l[u>>0]|l[u+1>>0]<<8|l[u+2>>0]<<16|l[u+3>>0]<<24;i[t>>0]=v;i[t+1>>0]=v>>8;i[t+2>>0]=v>>16;i[t+3>>0]=v>>24;v=(k[b>>2]|0)+4|0;k[b>>2]=v;t=a+12|0;u=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[v>>0]=u;i[v+1>>0]=u>>8;i[v+2>>0]=u>>16;i[v+3>>0]=u>>24;k[b>>2]=(k[b>>2]|0)+4;w=0}else switch(d|0){case 2:{k[c>>2]=(k[c>>2]|0)+12;w=0;break a;break}case 1:{u=(k[b>>2]|0)+4|0;k[b>>2]=u;v=a+8|0;t=l[u>>0]|l[u+1>>0]<<8|l[u+2>>0]<<16|l[u+3>>0]<<24;i[v>>0]=t;i[v+1>>0]=t>>8;i[v+2>>0]=t>>16;i[v+3>>0]=t>>24;t=(k[b>>2]|0)+4|0;k[b>>2]=t;v=a+12|0;u=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[v>>0]=u;i[v+1>>0]=u>>8;i[v+2>>0]=u>>16;i[v+3>>0]=u>>24;k[b>>2]=(k[b>>2]|0)+4;u=Qqa(16)|0;B=0;va(489,u|0);v=B;B=0;if(v&1){v=Rb()|0;t=Q;Sqa(u);x=t;y=v;Qb(y|0)}k[a+16>>2]=u;u=Qqa(16)|0;B=0;va(489,u|0);v=B;B=0;if(v&1){v=Rb()|0;t=Q;Sqa(u);x=t;y=v;Qb(y|0)}k[a+20>>2]=u;u=Qqa(16)|0;B=0;va(489,u|0);v=B;B=0;if(!(v&1)){k[a+24>>2]=u;w=1;break a}v=Rb()|0;t=Q;Sqa(u);x=t;y=v;Qb(y|0);break}default:{v=g+56|0;t=g+4|0;k[g>>2]=27524;k[v>>2]=27544;B=0;wa(508,g+56|0,t|0);u=B;B=0;if(u&1){u=Rb()|0;z=Q;A=u;vva(v);Qb(A|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[v>>2]=27488;B=0;va(448,t|0);u=B;B=0;do if(u&1){C=Rb()|0;D=Q;E=C}else{k[t>>2]=27560;C=g+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,t|0,f|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(f);Yua(C);Ava(t);D=G;E=F;break}Yua(f);B=0;F=Ia(40,g|0,143951,43)|0;G=B;B=0;b:do if(!(G&1)?(B=0,Xa(239,F|0,0)|0,H=B,B=0,!(H&1)):0){H=Ab(20)|0;B=0;eb(502,h|0,80261,72);I=B;B=0;do if(!(I&1)){B=0;eb(502,j|0,149525,8);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(h);L=K;M=J;break}B=0;wa(510,m|0,t|0);J=B;B=0;if(J&1){J=Rb()|0;N=Q;O=J;P=1}else{B=0;ua(163,H|0,h|0,j|0,119,m|0);J=B;B=0;if(J&1)R=1;else{B=0;eb(503,H|0,1240,229);B=0;R=0}J=Rb()|0;K=Q;Yua(m);N=K;O=J;P=R}Yua(j);Yua(h);if(P){L=N;M=O}else{S=N;T=O;break b}}else{J=Rb()|0;L=Q;M=J}while(0);zb(H|0);S=L;T=M}else U=18;while(0);if((U|0)==18){F=Rb()|0;S=Q;T=F}k[g>>2]=27468;k[v>>2]=27488;k[t>>2]=27560;Yua(C);Ava(t);vva(v);x=S;y=T;Qb(y|0)}while(0);z=D;A=E;vva(v);Qb(A|0)}}while(0);A=a+16|0;Cla(k[A>>2]|0,b,c,d);E=a+20|0;Cla(k[E>>2]|0,b,c,d);D=a+24|0;Cla(k[D>>2]|0,b,c,d);z=Fla(k[A>>2]|0)|0;k[a+28>>2]=z;z=Fla(k[D>>2]|0)|0;k[a+36>>2]=z;z=Fla(k[E>>2]|0)|0;k[a+32>>2]=z;if(s){s=k[b>>2]|0;z=a+44|0;E=l[z>>0]|l[z+1>>0]<<8|l[z+2>>0]<<16|l[z+3>>0]<<24;i[s>>0]=E;i[s+1>>0]=E>>8;i[s+2>>0]=E>>16;i[s+3>>0]=E>>24;E=(k[b>>2]|0)+4|0;k[b>>2]=E;s=a+48|0;z=l[s>>0]|l[s+1>>0]<<8|l[s+2>>0]<<16|l[s+3>>0]<<24;i[E>>0]=z;i[E+1>>0]=z>>8;i[E+2>>0]=z>>16;i[E+3>>0]=z>>24;k[b>>2]=(k[b>>2]|0)+4;r=e;return}if((d|0)==2){k[c>>2]=(k[c>>2]|0)+8;r=e;return}if(w){w=a+44|0;c=k[b>>2]|0;d=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[w>>0]=d;i[w+1>>0]=d>>8;i[w+2>>0]=d>>16;i[w+3>>0]=d>>24;d=(k[b>>2]|0)+4|0;k[b>>2]=d;w=a+48|0;a=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[w>>0]=a;i[w+1>>0]=a>>8;i[w+2>>0]=a>>16;i[w+3>>0]=a>>24;k[b>>2]=(k[b>>2]|0)+4;r=e;return}e=n+56|0;b=n+4|0;k[n>>2]=27524;k[e>>2]=27544;B=0;wa(508,n+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;V=Q;W=a;vva(e);Qb(W|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[e>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){w=Rb()|0;X=Q;Y=w}else{k[b>>2]=27560;w=n+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);d=B;B=0;if(d&1){d=Rb()|0;c=Q;Yua(f);Yua(w);Ava(b);X=c;Y=d;break}Yua(f);B=0;d=Ia(40,n|0,143951,43)|0;c=B;B=0;c:do if(!(c&1)?(B=0,Xa(239,d|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,o|0,80261,72);E=B;B=0;do if(!(E&1)){B=0;eb(502,p|0,149525,8);s=B;B=0;if(s&1){s=Rb()|0;D=Q;Yua(o);Z=D;_=s;break}B=0;wa(510,q|0,b|0);s=B;B=0;if(s&1){s=Rb()|0;$=1;aa=Q;ba=s}else{B=0;ua(163,z|0,o|0,p|0,138,q|0);s=B;B=0;if(s&1)ca=1;else{B=0;eb(503,z|0,1240,229);B=0;ca=0}s=Rb()|0;D=Q;Yua(q);$=ca;aa=D;ba=s}Yua(p);Yua(o);if($){Z=aa;_=ba}else{da=aa;ea=ba;break c}}else{s=Rb()|0;Z=Q;_=s}while(0);zb(z|0);da=Z;ea=_}else U=53;while(0);if((U|0)==53){d=Rb()|0;da=Q;ea=d}k[n>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(w);Ava(b);vva(e);x=da;y=ea;Qb(y|0)}while(0);V=X;W=Y;vva(e);Qb(W|0)}function _L(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0;b=r;r=r+928|0;c=b+904|0;d=b+744|0;e=b+892|0;f=b+592|0;g=b+880|0;h=b+440|0;i=b+728|0;j=b+304|0;l=b+576|0;m=b+152|0;n=b+288|0;o=b+16|0;p=b;b=d+56|0;q=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,q|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;u=s;vva(b);Qb(u|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,q|0);s=B;B=0;do if(s&1){v=Rb()|0;w=Q;x=v}else{k[q>>2]=27560;v=d+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,q|0,c|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(c);Yua(v);Ava(q);w=z;x=y;break}Yua(c);B=0;Ia(40,d|0,80334,9)|0;y=B;B=0;do if(!(y&1)?(B=0,wa(510,e|0,q|0),z=B,B=0,!(z&1)):0){B=0;ya(424,e|0)|0;z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(e);C=A;D=z;break}Yua(e);k[d>>2]=27468;k[b>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(b);z=f+56|0;A=f+4|0;k[f>>2]=27524;k[z>>2]=27544;B=0;wa(508,f+56|0,A|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;G=E;vva(z);Qb(G|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[z>>2]=27488;B=0;va(448,A|0);E=B;B=0;do if(E&1){H=Rb()|0;I=Q;J=H}else{k[A>>2]=27560;H=f+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,A|0,c|0);K=B;B=0;if(K&1){K=Rb()|0;L=Q;Yua(c);Yua(H);Ava(A);I=L;J=K;break}Yua(c);B=0;K=Ia(40,f|0,144086,7)|0;L=B;B=0;do if(((!(L&1)?(B=0,M=Xa(242,K|0,k[a+8>>2]|0)|0,N=B,B=0,!(N&1)):0)?(B=0,Ia(40,M|0,149177,1)|0,M=B,B=0,!(M&1)):0)?(B=0,wa(510,g|0,A|0),M=B,B=0,!(M&1)):0){B=0;ya(424,g|0)|0;M=B;B=0;if(M&1){M=Rb()|0;N=Q;Yua(g);O=N;P=M;break}Yua(g);k[f>>2]=27468;k[z>>2]=27488;k[A>>2]=27560;Yua(H);Ava(A);vva(z);M=h+56|0;N=h+4|0;k[h>>2]=27524;k[M>>2]=27544;B=0;wa(508,h+56|0,N|0);R=B;B=0;if(R&1){R=Rb()|0;S=Q;T=R;vva(M);Qb(T|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[M>>2]=27488;B=0;va(448,N|0);R=B;B=0;do if(R&1){U=Rb()|0;V=Q;W=U}else{k[N>>2]=27560;U=h+36|0;k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;k[U+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,N|0,c|0);X=B;B=0;if(X&1){X=Rb()|0;Y=Q;Yua(c);Yua(U);Ava(N);V=Y;W=X;break}Yua(c);B=0;X=Ia(40,h|0,144094,18)|0;Y=B;B=0;do if(Y&1)Z=83;else{B=0;_=ya(427,k[a+12>>2]|0)|0;$=B;B=0;if($&1){Z=83;break}$=Lta(_)|0;B=0;aa=Ia(40,X|0,_|0,$|0)|0;$=B;B=0;if($&1){Z=83;break}B=0;Ia(40,aa|0,149177,1)|0;aa=B;B=0;if(aa&1){Z=83;break}B=0;wa(510,i|0,N|0);aa=B;B=0;if(aa&1){Z=83;break}B=0;ya(424,i|0)|0;aa=B;B=0;if(aa&1){aa=Rb()|0;$=Q;Yua(i);ba=$;ca=aa;break}Yua(i);k[h>>2]=27468;k[M>>2]=27488;k[N>>2]=27560;Yua(U);Ava(N);vva(M);Ala(k[a+16>>2]|0);Ala(k[a+20>>2]|0);Ala(k[a+24>>2]|0);aa=j+56|0;$=j+4|0;k[j>>2]=27524;k[aa>>2]=27544;B=0;wa(508,j+56|0,$|0);_=B;B=0;if(_&1){_=Rb()|0;da=Q;ea=_;vva(aa);Qb(ea|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[aa>>2]=27488;B=0;va(448,$|0);_=B;B=0;do if(_&1){fa=Rb()|0;ga=Q;ha=fa}else{k[$>>2]=27560;fa=j+36|0;k[fa>>2]=0;k[fa+4>>2]=0;k[fa+8>>2]=0;k[fa+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,$|0,c|0);ia=B;B=0;if(ia&1){ia=Rb()|0;ja=Q;Yua(c);Yua(fa);Ava($);ga=ja;ha=ia;break}Yua(c);B=0;ia=Ia(40,j|0,80344,10)|0;ja=B;B=0;do if(ja&1)Z=86;else{B=0;ka=Xa(242,ia|0,k[a+44>>2]|0)|0;la=B;B=0;if(la&1){Z=86;break}B=0;Ia(40,ka|0,149177,1)|0;ka=B;B=0;if(ka&1){Z=86;break}B=0;wa(510,l|0,$|0);ka=B;B=0;if(ka&1){Z=86;break}B=0;ya(424,l|0)|0;ka=B;B=0;if(ka&1){ka=Rb()|0;la=Q;Yua(l);ma=la;na=ka;break}Yua(l);k[j>>2]=27468;k[aa>>2]=27488;k[$>>2]=27560;Yua(fa);Ava($);vva(aa);ka=m+56|0;la=m+4|0;k[m>>2]=27524;k[ka>>2]=27544;B=0;wa(508,m+56|0,la|0);oa=B;B=0;if(oa&1){oa=Rb()|0;pa=Q;qa=oa;vva(ka);Qb(qa|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[ka>>2]=27488;B=0;va(448,la|0);oa=B;B=0;do if(oa&1){ra=Rb()|0;sa=Q;ta=ra}else{k[la>>2]=27560;ra=m+36|0;k[ra>>2]=0;k[ra+4>>2]=0;k[ra+8>>2]=0;k[ra+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,la|0,c|0);ua=B;B=0;if(ua&1){ua=Rb()|0;xa=Q;Yua(c);Yua(ra);Ava(la);sa=xa;ta=ua;break}Yua(c);B=0;ua=Ia(40,m|0,80355,18)|0;xa=B;B=0;do if(xa&1)Z=89;else{B=0;za=Xa(242,ua|0,k[a+48>>2]|0)|0;Aa=B;B=0;if(Aa&1){Z=89;break}B=0;Ia(40,za|0,149177,1)|0;za=B;B=0;if(za&1){Z=89;break}B=0;wa(510,n|0,la|0);za=B;B=0;if(za&1){Z=89;break}B=0;ya(424,n|0)|0;za=B;B=0;if(za&1){za=Rb()|0;Aa=Q;Yua(n);Ba=Aa;Ca=za;break}Yua(n);k[m>>2]=27468;k[ka>>2]=27488;k[la>>2]=27560;Yua(ra);Ava(la);vva(ka);za=o+56|0;Aa=o+4|0;k[o>>2]=27524;k[za>>2]=27544;B=0;wa(508,o+56|0,Aa|0);Da=B;B=0;if(Da&1){Da=Rb()|0;Ea=Q;Fa=Da;vva(za);Qb(Fa|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[za>>2]=27488;B=0;va(448,Aa|0);Da=B;B=0;do if(Da&1){Ga=Rb()|0;Ha=Q;Ja=Ga}else{k[Aa>>2]=27560;Ga=o+36|0;k[Ga>>2]=0;k[Ga+4>>2]=0;k[Ga+8>>2]=0;k[Ga+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Aa|0,c|0);Ka=B;B=0;if(Ka&1){Ka=Rb()|0;La=Q;Yua(c);Yua(Ga);Ava(Aa);Ha=La;Ja=Ka;break}Yua(c);B=0;Ia(40,o|0,144113,14)|0;Ka=B;B=0;do if(!(Ka&1)){B=0;wa(510,p|0,Aa|0);La=B;B=0;if(La&1){Z=92;break}B=0;ya(424,p|0)|0;La=B;B=0;if(La&1){La=Rb()|0;Ma=Q;Yua(p);Na=Ma;Oa=La;break}else{Yua(p);k[o>>2]=27468;k[za>>2]=27488;k[Aa>>2]=27560;Yua(Ga);Ava(Aa);vva(za);$N(k[a+40>>2]|0)}}else Z=92;while(0);if((Z|0)==92){Ka=Rb()|0;Na=Q;Oa=Ka}k[o>>2]=27468;k[za>>2]=27488;k[Aa>>2]=27560;Yua(Ga);Ava(Aa);vva(za);Pa=Na;Qa=Oa;Qb(Qa|0)}while(0);Ea=Ha;Fa=Ja;vva(za);Qb(Fa|0)}while(0);if((Z|0)==89){ua=Rb()|0;Ba=Q;Ca=ua}k[m>>2]=27468;k[ka>>2]=27488;k[la>>2]=27560;Yua(ra);Ava(la);vva(ka);Pa=Ba;Qa=Ca;Qb(Qa|0)}while(0);pa=sa;qa=ta;vva(ka);Qb(qa|0)}while(0);if((Z|0)==86){ia=Rb()|0;ma=Q;na=ia}k[j>>2]=27468;k[aa>>2]=27488;k[$>>2]=27560;Yua(fa);Ava($);vva(aa);Pa=ma;Qa=na;Qb(Qa|0)}while(0);da=ga;ea=ha;vva(aa);Qb(ea|0)}while(0);if((Z|0)==83){X=Rb()|0;ba=Q;ca=X}k[h>>2]=27468;k[M>>2]=27488;k[N>>2]=27560;Yua(U);Ava(N);vva(M);Pa=ba;Qa=ca;Qb(Qa|0)}while(0);S=V;T=W;vva(M);Qb(T|0)}else Z=80;while(0);if((Z|0)==80){K=Rb()|0;O=Q;P=K}k[f>>2]=27468;k[z>>2]=27488;k[A>>2]=27560;Yua(H);Ava(A);vva(z);Pa=O;Qa=P;Qb(Qa|0)}while(0);F=I;G=J;vva(z);Qb(G|0)}else Z=77;while(0);if((Z|0)==77){y=Rb()|0;C=Q;D=y}k[d>>2]=27468;k[b>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(b);Pa=C;Qa=D;Qb(Qa|0)}while(0);t=w;u=x;vva(b);Qb(u|0)}function $L(a){a=a|0;Ec[k[(k[a>>2]|0)+12>>2]&1023](a);return}function aM(a){a=a|0;return k[a+8>>2]|0}function bM(a){a=a|0;return 593}function cM(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;e=a+16|0;Ela(k[e>>2]|0,d);d=a+20|0;Ela(k[d>>2]|0,b);b=a+24|0;Ela(k[b>>2]|0,f);f=Fla(k[e>>2]|0)|0;k[a+28>>2]=f;f=Fla(k[d>>2]|0)|0;k[a+32>>2]=f;f=Fla(k[b>>2]|0)|0;k[a+36>>2]=f;k[a+40>>2]=g;return}function dM(a,b,c){a=a|0;b=b|0;c=c|0;return}function eM(a,b){a=a|0;b=b|0;var c=0,d=0;c=r;r=r+16|0;d=c;cO(k[a+40>>2]|0,d,477);if((k[d>>2]|0)!=505){r=c;return}d=fM(a)|0;TN(d,b);SN(d);Sqa(d);r=c;return}function fM(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0.0;b=r;r=r+16|0;c=b+8|0;d=b;e=Qqa(24)|0;f=a+28|0;g=a+40|0;B=0;ua(166,e|0,f|0,1,k[g>>2]|0,534);h=B;B=0;if(h&1){h=Rb()|0;Sqa(e);Qb(h|0)}h=k[a+32>>2]|0;rd[k[(k[h>>2]|0)+144>>2]&511](h,c,k[f>>2]|0,160);dO(k[g>>2]|0,d,358);i=+p[d>>3];if(!(i!=0.0)){r=b;return e|0}p[k[e+4>>2]>>3]=i*+p[c>>3];r=b;return e|0}function gM(a,b){a=a|0;b=b|0;var c=0;c=Rn(k[a+28>>2]|0)|0;k[b>>2]=c;return}function hM(a,b){a=a|0;b=b|0;var c=0;c=Qn(k[a+28>>2]|0)|0;k[b>>2]=c;return}function iM(a){a=a|0;return 1}function jM(a,b){a=a|0;b=b|0;return (k[a+12>>2]|0)==(b|0)|0}function kM(a){a=a|0;return 1}function lM(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;e=r;r=r+192|0;f=e;g=e+172|0;h=e+24|0;i=e+176|0;j=e+160|0;l=e+12|0;m=a+40|0;cO(k[m>>2]|0,g,477);switch(k[g>>2]|0){case 521:{do if(k[a+44>>2]|0){n=Qqa(68)|0;B=0;ua(165,n|0,a+28|0,1,k[m>>2]|0,534);o=B;B=0;if(o&1){o=Rb()|0;Sqa(n);Qb(o|0)}else{dO(k[m>>2]|0,f,344);q=+ba(10.0,+(+p[f>>3]))*d;p[k[n+12>>2]>>3]=q;s=n;break}}else s=0;while(0);t=s;break}case 509:{t=mM(a,d)|0;break}case 505:{dO(k[m>>2]|0,f,157);do if(k[a+44>>2]|0){s=Qqa(68)|0;B=0;ua(165,s|0,a+28|0,1,k[m>>2]|0,534);n=B;B=0;if(n&1){n=Rb()|0;Sqa(s);Qb(n|0)}else{q=+ba(10.0,+(+p[f>>3]))*d;p[k[s+12>>2]>>3]=q;u=s;break}}else u=0;while(0);t=u;break}default:{u=h+56|0;m=h+4|0;k[h>>2]=27524;k[u>>2]=27544;B=0;wa(508,h+56|0,m|0);a=B;B=0;if(a&1){a=Rb()|0;v=Q;w=a;vva(u);Qb(w|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[u>>2]=27488;B=0;va(448,m|0);a=B;B=0;do if(a&1){s=Rb()|0;x=Q;y=s}else{k[m>>2]=27560;s=h+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,m|0,f|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;Yua(f);Yua(s);Ava(m);x=o;y=n;break}Yua(f);B=0;n=Ia(40,h|0,144156,9)|0;o=B;B=0;if((((((!(o&1)?(B=0,o=Xa(242,n|0,k[g>>2]|0)|0,n=B,B=0,!(n&1)):0)?(B=0,n=Ia(40,o|0,144166,2)|0,o=B,B=0,!(o&1)):0)?(B=0,o=ya(427,k[g>>2]|0)|0,z=B,B=0,!(z&1)):0)?(z=Lta(o)|0,B=0,A=Ia(40,n|0,o|0,z|0)|0,z=B,B=0,!(z&1)):0)?(B=0,z=Ia(40,A|0,144169,19)|0,A=B,B=0,!(A&1)):0)?(B=0,Xa(239,z|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,i|0,80261,72);A=B;B=0;do if(!(A&1)){B=0;eb(502,j|0,118091,20);o=B;B=0;if(o&1){o=Rb()|0;n=Q;Yua(i);C=n;D=o;break}B=0;wa(510,l|0,m|0);o=B;B=0;if(o&1){o=Rb()|0;E=Q;F=o;G=1}else{B=0;ua(163,z|0,i|0,j|0,264,l|0);o=B;B=0;if(o&1)H=1;else{B=0;eb(503,z|0,1240,229);B=0;H=0}o=Rb()|0;n=Q;Yua(l);E=n;F=o;G=H}Yua(j);Yua(i);if(G){C=E;D=F}else{I=E;J=F;k[h>>2]=27468;k[u>>2]=27488;k[m>>2]=27560;Yua(s);Ava(m);vva(u);Qb(J|0)}}else{o=Rb()|0;C=Q;D=o}while(0);zb(z|0);I=C;J=D;k[h>>2]=27468;k[u>>2]=27488;k[m>>2]=27560;Yua(s);Ava(m);vva(u);Qb(J|0)}A=Rb()|0;I=Q;J=A;k[h>>2]=27468;k[u>>2]=27488;k[m>>2]=27560;Yua(s);Ava(m);vva(u);Qb(J|0)}while(0);v=x;w=y;vva(u);Qb(w|0)}}if(!t){r=e;return}IN(t,b,c);HN(t);Sqa(t);r=e;return}function mM(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0.0,o=0.0;c=r;r=r+32|0;d=c+16|0;e=c+8|0;f=c;g=k[a+32>>2]|0;h=a+28|0;if(fo(k[h>>2]|0)|0){i=0;r=c;return i|0}j=Qqa(68)|0;l=a+40|0;B=0;ua(165,j|0,h|0,1,k[l>>2]|0,534);m=B;B=0;if(m&1){m=Rb()|0;Sqa(j);Qb(m|0)}rd[k[(k[g>>2]|0)+144>>2]&511](g,d,k[h>>2]|0,653);rd[k[(k[g>>2]|0)+144>>2]&511](g,e,k[h>>2]|0,666);dO(k[l>>2]|0,f,344);l=a+36|0;n=+WJ(k[l>>2]|0,212);o=+WJ(k[l>>2]|0,209);if(!(+p[e>>3]<n-o*+p[d>>3])){i=j;r=c;return i|0}o=+ba(10.0,+(+p[f>>3]))*b;p[k[j+12>>2]>>3]=o;i=j;r=c;return i|0}function nM(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;d=r;r=r+192|0;e=d+180|0;f=d+176|0;g=d+40|0;h=d+24|0;i=d+12|0;j=d;cO(k[a+40>>2]|0,f,477);switch(k[f>>2]|0){case 521:{l=oM(a,c)|0;break}case 509:{l=pM(a,0.0)|0;break}case 505:{l=qM(a,c)|0;break}case 481:case 497:{r=d;return}default:{a=g+56|0;m=g+4|0;k[g>>2]=27524;k[a>>2]=27544;B=0;wa(508,g+56|0,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(a);Qb(p|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[a>>2]=27488;B=0;va(448,m|0);n=B;B=0;do if(n&1){q=Rb()|0;s=Q;t=q}else{k[m>>2]=27560;q=g+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,m|0,e|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);Yua(q);Ava(m);s=v;t=u;break}Yua(e);B=0;u=Ia(40,g|0,144156,9)|0;v=B;B=0;if((((((!(v&1)?(B=0,v=Xa(242,u|0,k[f>>2]|0)|0,u=B,B=0,!(u&1)):0)?(B=0,u=Ia(40,v|0,144166,2)|0,v=B,B=0,!(v&1)):0)?(B=0,v=ya(427,k[f>>2]|0)|0,w=B,B=0,!(w&1)):0)?(w=Lta(v)|0,B=0,x=Ia(40,u|0,v|0,w|0)|0,w=B,B=0,!(w&1)):0)?(B=0,w=Ia(40,x|0,144169,19)|0,x=B,B=0,!(x&1)):0)?(B=0,Xa(239,w|0,0)|0,w=B,B=0,!(w&1)):0){w=Ab(20)|0;B=0;eb(502,h|0,80261,72);x=B;B=0;do if(!(x&1)){B=0;eb(502,i|0,118249,20);v=B;B=0;if(v&1){v=Rb()|0;u=Q;Yua(h);y=u;z=v;break}B=0;wa(510,j|0,m|0);v=B;B=0;if(v&1){v=Rb()|0;A=Q;C=v;D=1}else{B=0;ua(163,w|0,h|0,i|0,294,j|0);v=B;B=0;if(v&1)E=1;else{B=0;eb(503,w|0,1240,229);B=0;E=0}v=Rb()|0;u=Q;Yua(j);A=u;C=v;D=E}Yua(i);Yua(h);if(D){y=A;z=C}else{F=A;G=C;k[g>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(a);Qb(G|0)}}else{v=Rb()|0;y=Q;z=v}while(0);zb(w|0);F=y;G=z;k[g>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(a);Qb(G|0)}x=Rb()|0;F=Q;G=x;k[g>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(a);Qb(G|0)}while(0);o=s;p=t;vva(a);Qb(p|0)}}if(!l){r=d;return}TN(l,b);SN(l);Sqa(l);r=d;return}function oM(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0.0,n=0.0,o=0.0;c=r;r=r+16|0;d=c+8|0;e=c;f=k[a+32>>2]|0;if(!(k[a+44>>2]|0)){g=0;r=c;return g|0}h=Qqa(24)|0;i=a+28|0;j=a+40|0;B=0;ua(166,h|0,i|0,1,k[j>>2]|0,534);l=B;B=0;if(l&1){l=Rb()|0;Sqa(h);Qb(l|0)}rd[k[(k[f>>2]|0)+144>>2]&511](f,d,k[i>>2]|0,653);dO(k[j>>2]|0,e,344);j=a+36|0;m=+WJ(k[j>>2]|0,212);n=+WJ(k[j>>2]|0,209);o=(m-n*+p[d>>3])*(+ba(10.0,+(+p[e>>3]))*b);p[k[h+4>>2]>>3]=o;g=h;r=c;return g|0}function pM(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0.0,s=0.0,t=0.0;c=r;r=r+48|0;d=c+32|0;e=c+24|0;f=c+16|0;g=c+8|0;h=c;i=k[a+32>>2]|0;j=a+28|0;if(fo(k[j>>2]|0)|0){l=0;r=c;return l|0}m=Qqa(24)|0;n=a+40|0;B=0;ua(166,m|0,j|0,1,k[n>>2]|0,534);o=B;B=0;if(o&1){o=Rb()|0;Sqa(m);Qb(o|0)}rd[k[(k[i>>2]|0)+144>>2]&511](i,d,k[j>>2]|0,653);rd[k[(k[i>>2]|0)+144>>2]&511](i,e,k[j>>2]|0,666);dO(k[n>>2]|0,f,651);dO(k[n>>2]|0,g,358);dO(k[n>>2]|0,h,344);n=a+36|0;b=+WJ(k[n>>2]|0,212);q=+WJ(k[n>>2]|0,209);s=b-q*+p[d>>3];q=+p[e>>3];if(q<s){p[k[m+4>>2]>>3]=0.0;l=m;r=c;return l|0}b=+p[g>>3];t=(q-s)*(+p[f>>3]*+ba(10.0,+(+p[h>>3])));if(b!=0.0){p[k[m+4>>2]>>3]=t/b;l=m;r=c;return l|0}else{p[k[m+4>>2]>>3]=t;l=m;r=c;return l|0}return 0}function qM(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0.0;c=r;r=r+16|0;d=c+8|0;e=c;if(!(k[a+44>>2]|0)){f=0;r=c;return f|0}g=Qqa(24)|0;h=a+28|0;i=a+40|0;B=0;ua(166,g|0,h|0,1,k[i>>2]|0,534);j=B;B=0;if(j&1){j=Rb()|0;Sqa(g);Qb(j|0)}j=Qqa(4)|0;k[j>>2]=39240;dO(k[i>>2]|0,e,157);lda(j,d,k[a+32>>2]|0,k[h>>2]|0);l=+ba(10.0,+(+p[e>>3]))*b;p[k[g+4>>2]>>3]=l*+p[d>>3];Ec[k[(k[j>>2]|0)+4>>2]&1023](j);f=g;r=c;return f|0}function rM(a){a=a|0;var b=0;b=a+28|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;Dla(k[a+16>>2]|0);Dla(k[a+20>>2]|0);Dla(k[a+24>>2]|0);return}function sM(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return}function tM(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;g=r;r=r+192|0;j=g+176|0;l=g+40|0;m=g+24|0;n=g+12|0;o=g;p=a+28|0;a=e+(Rn(k[p>>2]|0)|0)|0;if(i[a>>0]|0){q=0;s=0;t=q&1;k[b>>2]=t;k[c>>2]=s;r=g;return}a=e+(Rn(k[p>>2]|0)|0)|0;i[a>>0]=1;a=0;while(1){e=f+(a<<2)|0;if((k[e>>2]|0)>-1)a=a+1|0;else{u=e;break}}a=Rn(k[p>>2]|0)|0;k[u>>2]=a;switch(h|0){case 937:{if(!(k[d+28>>2]|0)){q=0;s=0;t=q&1;k[b>>2]=t;k[c>>2]=s;r=g;return}h=(fo(k[p>>2]|0)|0)==0;q=h;s=h&1^1;t=q&1;k[b>>2]=t;k[c>>2]=s;r=g;return}case 943:{if(!(k[d+24>>2]|0)){q=0;s=0;t=q&1;k[b>>2]=t;k[c>>2]=s;r=g;return}h=(fo(k[p>>2]|0)|0)==0;q=h;s=h&1^1;t=q&1;k[b>>2]=t;k[c>>2]=s;r=g;return}case 966:{if(!(k[d+32>>2]|0)){q=0;s=0;t=q&1;k[b>>2]=t;k[c>>2]=s;r=g;return}d=(fo(k[p>>2]|0)|0)==0;q=d;s=d&1^1;t=q&1;k[b>>2]=t;k[c>>2]=s;r=g;return}default:{g=l+56|0;s=l+4|0;k[l>>2]=27524;k[g>>2]=27544;B=0;wa(508,l+56|0,s|0);c=B;B=0;if(c&1){c=Rb()|0;v=Q;w=c;vva(g);Qb(w|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[g>>2]=27488;B=0;va(448,s|0);c=B;B=0;do if(c&1){t=Rb()|0;x=Q;y=t}else{k[s>>2]=27560;t=l+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[l+52>>2]=16;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;B=0;wa(509,s|0,j|0);b=B;B=0;if(b&1){b=Rb()|0;q=Q;Yua(j);Yua(t);Ava(s);x=q;y=b;break}Yua(j);B=0;b=Ia(40,l|0,145010,13)|0;q=B;B=0;if(!(q&1)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,m|0,80261,72);q=B;B=0;do if(!(q&1)){B=0;eb(502,n|0,144217,23);d=B;B=0;if(d&1){d=Rb()|0;p=Q;Yua(m);z=p;A=d;break}B=0;wa(510,o|0,s|0);d=B;B=0;if(d&1){d=Rb()|0;C=Q;D=d;E=1}else{B=0;ua(163,b|0,m|0,n|0,363,o|0);d=B;B=0;if(d&1)F=1;else{B=0;eb(503,b|0,1240,229);B=0;F=0}d=Rb()|0;p=Q;Yua(o);C=p;D=d;E=F}Yua(n);Yua(m);if(E){z=C;A=D}else{G=C;H=D;k[l>>2]=27468;k[g>>2]=27488;k[s>>2]=27560;Yua(t);Ava(s);vva(g);Qb(H|0)}}else{d=Rb()|0;z=Q;A=d}while(0);zb(b|0);G=z;H=A;k[l>>2]=27468;k[g>>2]=27488;k[s>>2]=27560;Yua(t);Ava(s);vva(g);Qb(H|0)}q=Rb()|0;G=Q;H=q;k[l>>2]=27468;k[g>>2]=27488;k[s>>2]=27560;Yua(t);Ava(s);vva(g);Qb(H|0)}while(0);v=x;w=y;vva(g);Qb(w|0)}}}function uM(a,b,c){a=a|0;b=+b;c=c|0;return}function vM(a,b,c){a=a|0;b=+b;c=c|0;return}function wM(a,b,c){a=a|0;b=b|0;c=c|0;return}function xM(a,b,c){a=a|0;b=b|0;c=c|0;return}function yM(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)!=656|b^1)return;k[a+48>>2]=0;return}function zM(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)!=656|b^1)return;k[a+-4+48>>2]=0;return}function AM(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function BM(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function CM(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;d=c+180|0;e=c+176|0;f=c+40|0;g=c+24|0;h=c+12|0;i=c;cO(k[a+40>>2]|0,e,477);switch(k[e>>2]|0){case 521:{DM(a,b);r=c;return}case 505:{EM(a,b);r=c;return}case 509:case 497:{r=c;return}default:{c=f+56|0;b=f+4|0;k[f>>2]=27524;k[c>>2]=27544;B=0;wa(508,f+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;j=Q;l=a;vva(c);Qb(l|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[c>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){m=Rb()|0;n=Q;o=m}else{k[b>>2]=27560;m=f+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(b);n=q;o=p;break}Yua(d);B=0;p=Ia(40,f|0,80374,10)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[e>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,g|0,80261,72);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,80385,18);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(g);u=p;v=q;break}B=0;wa(510,i|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,g|0,h|0,430,i|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(i);w=p;x=q;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[f>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[f>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}}}function DM(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0.0,l=0,m=0,n=0;c=r;r=r+32|0;d=c+8|0;e=c;f=c+16|0;g=k[a+32>>2]|0;h=a+28|0;if(fo(k[h>>2]|0)|0){i=0;k[b>>2]=i;r=c;return}rd[k[(k[g>>2]|0)+144>>2]&511](g,d,k[h>>2]|0,653);rd[k[(k[g>>2]|0)+144>>2]&511](g,e,k[h>>2]|0,667);cO(k[a+40>>2]|0,f,345);j=+VJ(k[a+36>>2]|0,+p[d>>3]);d=+p[e>>3]>j&1;e=a+44|0;h=k[f>>2]|0;f=(h|0)==0;if((k[e>>2]|0)==(d|0))if(f)l=0;else{m=0;n=6}else if(f)l=1;else{f=a+48|0;k[f>>2]=(k[f>>2]|0)+1;m=1;n=6}if((n|0)==6)if((k[a+48>>2]|0)>(h|0)){k[e>>2]=1;l=0}else l=m;k[e>>2]=d;i=l;k[b>>2]=i;r=c;return}function EM(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;c=r;r=r+32|0;d=c+16|0;e=c+8|0;f=c;g=a+28|0;if(fo(k[g>>2]|0)|0){k[b>>2]=0;r=c;return}h=a+32|0;i=k[h>>2]|0;if(!(Hc[k[(k[i>>2]|0)+248>>2]&511](i)|0)){k[a+44>>2]=0;k[b>>2]=0;r=c;return}i=Qqa(4)|0;k[i>>2]=39240;j=k[h>>2]|0;rd[k[(k[j>>2]|0)+144>>2]&511](j,e,k[g>>2]|0,123);lda(i,f,k[h>>2]|0,k[g>>2]|0);cO(k[a+40>>2]|0,d,158);g=+p[e>>3]>+p[f>>3]&1;f=a+44|0;e=k[d>>2]|0;d=(e|0)==0;if((k[f>>2]|0)==(g|0))if(d)l=0;else{m=0;n=9}else if(d)l=1;else{d=a+48|0;k[d>>2]=(k[d>>2]|0)+1;m=1;n=9}if((n|0)==9)if((k[a+48>>2]|0)>(e|0)){k[f>>2]=1;l=0}else l=m;k[f>>2]=g;Ec[k[(k[i>>2]|0)+4>>2]&1023](i);k[b>>2]=l;r=c;return}function FM(a){a=a|0;k[a+44>>2]=0;k[a+48>>2]=0;return}function GM(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,80404,81);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,74,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function HM(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;a=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,144350,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,80404,81);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,144370,27);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,79,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(E|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function IM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,80404,81);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144327,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,66,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function JM(a,b,c){a=a|0;b=b|0;c=c|0;IM(a+-4|0,b,c)}function KM(a){a=a|0;var b=0;k[a>>2]=34300;k[a+4>>2]=34420;k[a+44>>2]=0;b=a+20|0;k[a+40>>2]=0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;return}function LM(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;c=r;r=r+32|0;g=c+24|0;h=c+16|0;i=c;k[a>>2]=34300;k[a+4>>2]=34420;j=d<<2;d=k[e+76>>2]|0;l=k[d+(j<<2)>>2]|0;m=k[d+((j|1)<<2)>>2]|0;n=k[d+((j|2)<<2)>>2]|0;o=k[d+((j|3)<<2)>>2]|0;k[g>>2]=n;if((o|0)==-1){k[h>>2]=l;k[h+4>>2]=m;j=n*3|0;d=j+-3|0;p=k[e+72>>2]|0;q=k[p+(d<<2)>>2]|0;s=k[p+(j+-2<<2)>>2]|0;t=k[p+(j+-1<<2)>>2]|0;j=k[e+100>>2]|0;k[i>>2]=((t|0)==(l|0)?3:(s|0)==(l|0)?2:(q|0)==(l|0)?1:-9999)+d+j;k[i+4>>2]=((t|0)==(m|0)?3:(s|0)==(m|0)?2:(q|0)==(m|0)?1:-9999)+d+j;u=h;v=2;w=644}else{k[g+4>>2]=o;k[h>>2]=l;k[h+4>>2]=m;j=n*3|0;n=j+-3|0;d=k[e+72>>2]|0;q=o*3|0;o=q+-3|0;s=k[d+(n<<2)>>2]|0;t=k[d+(o<<2)>>2]|0;p=k[d+(j+-2<<2)>>2]|0;x=k[d+(q+-2<<2)>>2]|0;y=k[d+(j+-1<<2)>>2]|0;j=k[d+(q+-1<<2)>>2]|0;q=k[e+100>>2]|0;k[i>>2]=((y|0)==(l|0)?3:(p|0)==(l|0)?2:(s|0)==(l|0)?1:-9999)+n+q;k[i+4>>2]=((y|0)==(m|0)?3:(p|0)==(m|0)?2:(s|0)==(m|0)?1:-9999)+n+q;k[i+8>>2]=((j|0)==(l|0)?3:(x|0)==(l|0)?2:(t|0)==(l|0)?1:-9999)+o+q;k[i+12>>2]=((j|0)==(m|0)?3:(x|0)==(m|0)?2:(t|0)==(m|0)?1:-9999)+o+q;u=h;v=4;w=649}k[a+8>>2]=b;k[a+12>>2]=f;k[a+16>>2]=w;B=0;w=ya(423,16)|0;f=B;B=0;if(!(f&1)){B=0;eb(509,w|0,i|0,v|0);v=B;B=0;if(v&1){v=Rb()|0;i=Q;Sqa(w);z=i;A=v;Qb(A|0)}k[a+24>>2]=w;B=0;w=ya(423,16)|0;v=B;B=0;if(!(v&1)){B=0;eb(509,w|0,u|0,2);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Sqa(w);z=v;A=u;Qb(A|0)}k[a+28>>2]=w;B=0;w=ya(423,16)|0;u=B;B=0;if(!(u&1)){B=0;eb(509,w|0,g|0,1);g=B;B=0;if(!(g&1)){k[a+20>>2]=w;k[a+44>>2]=0;k[a+32>>2]=0;k[a+40>>2]=0;r=c;return}c=Rb()|0;a=Q;Sqa(w);z=a;A=c;Qb(A|0)}}}c=Rb()|0;z=Q;A=c;Qb(A|0)}function MM(a){a=a|0;var b=0;k[a>>2]=34300;k[a+4>>2]=34420;k[a+44>>2]=0;b=k[a+20>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+24>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+28>>2]|0;if(!b)return;yla(b);Sqa(b);return}function NM(a){a=a|0;var b=0;k[a>>2]=34300;k[a+4>>2]=34420;k[a+44>>2]=0;b=k[a+20>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+24>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+28>>2]|0;if(!b){Sqa(a);return}yla(b);Sqa(b);Sqa(a);return}function OM(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Qqa(48)|0;k[b>>2]=34300;k[b+4>>2]=34420;c=b+20|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2];k[b+16>>2]=k[a+16>>2];k[b+44>>2]=k[a+44>>2];d=Bla(k[a+24>>2]|0)|0;k[b+24>>2]=d;e=Bla(k[a+28>>2]|0)|0;k[b+28>>2]=e;f=Bla(k[a+20>>2]|0)|0;k[c>>2]=f;c=Gla(d)|0;k[b+40>>2]=c;c=Gla(e)|0;k[b+36>>2]=c;c=Fla(f)|0;k[b+32>>2]=c;return b|0}function PM(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;a:do switch(d|0){case 0:{n=k[b>>2]|0;i[n>>0]=76;i[n+1>>0]=2;i[n+2>>0]=0;i[n+3>>0]=0;n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+8|0;p=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[n>>0]=p;i[n+1>>0]=p>>8;i[n+2>>0]=p>>16;i[n+3>>0]=p>>24;p=(k[b>>2]|0)+4|0;k[b>>2]=p;n=a+12|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[p>>0]=o;i[p+1>>0]=o>>8;i[p+2>>0]=o>>16;i[p+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;p=a+16|0;n=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;k[b>>2]=(k[b>>2]|0)+4;break}case 2:{k[c>>2]=(k[c>>2]|0)+16;break}case 1:{n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+8|0;p=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[o>>0]=p;i[o+1>>0]=p>>8;i[o+2>>0]=p>>16;i[o+3>>0]=p>>24;p=(k[b>>2]|0)+4|0;k[b>>2]=p;o=a+12|0;n=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+16|0;p=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[o>>0]=p;i[o+1>>0]=p>>8;i[o+2>>0]=p>>16;i[o+3>>0]=p>>24;k[b>>2]=(k[b>>2]|0)+4;p=Qqa(16)|0;B=0;va(489,p|0);o=B;B=0;if(o&1){o=Rb()|0;n=Q;Sqa(p);q=n;s=o;Qb(s|0)}k[a+24>>2]=p;p=Qqa(16)|0;B=0;va(489,p|0);o=B;B=0;if(o&1){o=Rb()|0;n=Q;Sqa(p);q=n;s=o;Qb(s|0)}k[a+28>>2]=p;p=Qqa(16)|0;B=0;va(489,p|0);o=B;B=0;if(!(o&1)){k[a+20>>2]=p;break a}o=Rb()|0;n=Q;Sqa(p);q=n;s=o;Qb(s|0);break}default:{o=g+56|0;n=g+4|0;k[g>>2]=27524;k[o>>2]=27544;B=0;wa(508,g+56|0,n|0);p=B;B=0;if(p&1){p=Rb()|0;t=Q;u=p;vva(o);Qb(u|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[o>>2]=27488;B=0;va(448,n|0);p=B;B=0;do if(p&1){v=Rb()|0;w=Q;x=v}else{k[n>>2]=27560;v=g+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,n|0,f|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(f);Yua(v);Ava(n);w=z;x=y;break}Yua(f);B=0;y=Ia(40,g|0,143951,43)|0;z=B;B=0;b:do if(!(z&1)?(B=0,Xa(239,y|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,h|0,80502,78);C=B;B=0;do if(!(C&1)){B=0;eb(502,j|0,149525,8);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(h);F=E;G=D;break}B=0;wa(510,m|0,n|0);D=B;B=0;if(D&1){D=Rb()|0;H=Q;I=D;J=1}else{B=0;ua(163,A|0,h|0,j|0,165,m|0);D=B;B=0;if(D&1)K=1;else{B=0;eb(503,A|0,1240,229);B=0;K=0}D=Rb()|0;E=Q;Yua(m);H=E;I=D;J=K}Yua(j);Yua(h);if(J){F=H;G=I}else{L=H;M=I;break b}}else{D=Rb()|0;F=Q;G=D}while(0);zb(A|0);L=F;M=G}else N=17;while(0);if((N|0)==17){y=Rb()|0;L=Q;M=y}k[g>>2]=27468;k[o>>2]=27488;k[n>>2]=27560;Yua(v);Ava(n);vva(o);q=L;s=M;Qb(s|0)}while(0);t=w;u=x;vva(o);Qb(u|0)}}while(0);u=a+24|0;Cla(k[u>>2]|0,b,c,d);x=a+20|0;Cla(k[x>>2]|0,b,c,d);w=a+28|0;Cla(k[w>>2]|0,b,c,d);d=Gla(k[u>>2]|0)|0;k[a+40>>2]=d;d=Gla(k[w>>2]|0)|0;k[a+36>>2]=d;d=Fla(k[x>>2]|0)|0;k[a+32>>2]=d;r=e;return}function QM(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0;b=r;r=r+928|0;c=b+904|0;d=b+744|0;e=b+892|0;f=b+592|0;g=b+880|0;h=b+440|0;i=b+728|0;j=b+304|0;l=b+576|0;m=b+152|0;n=b+288|0;o=b+16|0;p=b;q=d+56|0;s=d+4|0;k[d>>2]=27524;k[q>>2]=27544;B=0;wa(508,d+56|0,s|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;v=t;vva(q);Qb(v|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[q>>2]=27488;B=0;va(448,s|0);t=B;B=0;do if(t&1){w=Rb()|0;x=Q;y=w}else{k[s>>2]=27560;w=d+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,s|0,c|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(c);Yua(w);Ava(s);x=A;y=z;break}Yua(c);B=0;Ia(40,d|0,80581,15)|0;z=B;B=0;do if(!(z&1)?(B=0,wa(510,e|0,s|0),A=B,B=0,!(A&1)):0){B=0;ya(424,e|0)|0;A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(e);D=C;E=A;break}Yua(e);k[d>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);A=f+56|0;C=f+4|0;k[f>>2]=27524;k[A>>2]=27544;B=0;wa(508,f+56|0,C|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;H=F;vva(A);Qb(H|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[A>>2]=27488;B=0;va(448,C|0);F=B;B=0;do if(F&1){I=Rb()|0;J=Q;K=I}else{k[C>>2]=27560;I=f+36|0;k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[I+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,C|0,c|0);L=B;B=0;if(L&1){L=Rb()|0;M=Q;Yua(c);Yua(I);Ava(C);J=M;K=L;break}Yua(c);B=0;L=Ia(40,f|0,144086,7)|0;M=B;B=0;do if(((!(M&1)?(B=0,N=Xa(242,L|0,k[a+8>>2]|0)|0,O=B,B=0,!(O&1)):0)?(B=0,Ia(40,N|0,149177,1)|0,N=B,B=0,!(N&1)):0)?(B=0,wa(510,g|0,C|0),N=B,B=0,!(N&1)):0){B=0;ya(424,g|0)|0;N=B;B=0;if(N&1){N=Rb()|0;O=Q;Yua(g);P=O;R=N;break}Yua(g);k[f>>2]=27468;k[A>>2]=27488;k[C>>2]=27560;Yua(I);Ava(C);vva(A);N=h+56|0;O=h+4|0;k[h>>2]=27524;k[N>>2]=27544;B=0;wa(508,h+56|0,O|0);S=B;B=0;if(S&1){S=Rb()|0;T=Q;U=S;vva(N);Qb(U|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[N>>2]=27488;B=0;va(448,O|0);S=B;B=0;do if(S&1){V=Rb()|0;W=Q;X=V}else{k[O>>2]=27560;V=h+36|0;k[V>>2]=0;k[V+4>>2]=0;k[V+8>>2]=0;k[V+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,O|0,c|0);Y=B;B=0;if(Y&1){Y=Rb()|0;Z=Q;Yua(c);Yua(V);Ava(O);W=Z;X=Y;break}Yua(c);B=0;Y=Ia(40,h|0,144094,18)|0;Z=B;B=0;do if(Z&1)_=71;else{B=0;$=ya(427,k[a+12>>2]|0)|0;aa=B;B=0;if(aa&1){_=71;break}aa=Lta($)|0;B=0;ba=Ia(40,Y|0,$|0,aa|0)|0;aa=B;B=0;if(aa&1){_=71;break}B=0;Ia(40,ba|0,149177,1)|0;ba=B;B=0;if(ba&1){_=71;break}B=0;wa(510,i|0,O|0);ba=B;B=0;if(ba&1){_=71;break}B=0;ya(424,i|0)|0;ba=B;B=0;if(ba&1){ba=Rb()|0;aa=Q;Yua(i);ca=aa;da=ba;break}Yua(i);k[h>>2]=27468;k[N>>2]=27488;k[O>>2]=27560;Yua(V);Ava(O);vva(N);ba=j+56|0;aa=j+4|0;k[j>>2]=27524;k[ba>>2]=27544;B=0;wa(508,j+56|0,aa|0);$=B;B=0;if($&1){$=Rb()|0;ea=Q;fa=$;vva(ba);Qb(fa|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[ba>>2]=27488;B=0;va(448,aa|0);$=B;B=0;do if($&1){ga=Rb()|0;ha=Q;ia=ga}else{k[aa>>2]=27560;ga=j+36|0;k[ga>>2]=0;k[ga+4>>2]=0;k[ga+8>>2]=0;k[ga+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,aa|0,c|0);ja=B;B=0;if(ja&1){ja=Rb()|0;ka=Q;Yua(c);Yua(ga);Ava(aa);ha=ka;ia=ja;break}Yua(c);B=0;ja=Ia(40,j|0,80597,14)|0;ka=B;B=0;do if(ka&1)_=74;else{B=0;la=Xa(242,ja|0,k[a+16>>2]|0)|0;ma=B;B=0;if(ma&1){_=74;break}B=0;Ia(40,la|0,149177,1)|0;la=B;B=0;if(la&1){_=74;break}B=0;wa(510,l|0,aa|0);la=B;B=0;if(la&1){_=74;break}B=0;ya(424,l|0)|0;la=B;B=0;if(la&1){la=Rb()|0;ma=Q;Yua(l);na=ma;oa=la;break}Yua(l);k[j>>2]=27468;k[ba>>2]=27488;k[aa>>2]=27560;Yua(ga);Ava(aa);vva(ba);Ala(k[a+24>>2]|0);Ala(k[a+28>>2]|0);Ala(k[a+20>>2]|0);la=m+56|0;ma=m+4|0;k[m>>2]=27524;k[la>>2]=27544;B=0;wa(508,m+56|0,ma|0);pa=B;B=0;if(pa&1){pa=Rb()|0;qa=Q;ra=pa;vva(la);Qb(ra|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[la>>2]=27488;B=0;va(448,ma|0);pa=B;B=0;do if(pa&1){sa=Rb()|0;ta=Q;ua=sa}else{k[ma>>2]=27560;sa=m+36|0;k[sa>>2]=0;k[sa+4>>2]=0;k[sa+8>>2]=0;k[sa+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ma|0,c|0);xa=B;B=0;if(xa&1){xa=Rb()|0;za=Q;Yua(c);Yua(sa);Ava(ma);ta=za;ua=xa;break}Yua(c);B=0;Ia(40,m|0,144113,14)|0;xa=B;B=0;do if(xa&1)_=77;else{B=0;wa(510,n|0,ma|0);za=B;B=0;if(za&1){_=77;break}B=0;ya(424,n|0)|0;za=B;B=0;if(za&1){za=Rb()|0;Aa=Q;Yua(n);Ba=Aa;Ca=za;break}Yua(n);k[m>>2]=27468;k[la>>2]=27488;k[ma>>2]=27560;Yua(sa);Ava(ma);vva(la);za=k[a+44>>2]|0;if(za)$N(za);za=o+56|0;Aa=o+4|0;k[o>>2]=27524;k[za>>2]=27544;B=0;wa(508,o+56|0,Aa|0);Da=B;B=0;if(Da&1){Da=Rb()|0;Ea=Q;Fa=Da;vva(za);Qb(Fa|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[za>>2]=27488;B=0;va(448,Aa|0);Da=B;B=0;do if(Da&1){Ga=Rb()|0;Ha=Q;Ja=Ga}else{k[Aa>>2]=27560;Ga=o+36|0;k[Ga>>2]=0;k[Ga+4>>2]=0;k[Ga+8>>2]=0;k[Ga+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Aa|0,c|0);Ka=B;B=0;if(Ka&1){Ka=Rb()|0;La=Q;Yua(c);Yua(Ga);Ava(Aa);Ha=La;Ja=Ka;break}Yua(c);B=0;Ia(40,o|0,144128,11)|0;Ka=B;B=0;do if(!(Ka&1)){B=0;wa(510,p|0,Aa|0);La=B;B=0;if(La&1){_=92;break}B=0;ya(424,p|0)|0;La=B;B=0;if(La&1){La=Rb()|0;Ma=Q;Yua(p);Na=Ma;Oa=La;break}else{Yua(p);k[o>>2]=27468;k[za>>2]=27488;k[Aa>>2]=27560;Yua(Ga);Ava(Aa);vva(za);r=b;return}}else _=92;while(0);if((_|0)==92){Ka=Rb()|0;Na=Q;Oa=Ka}k[o>>2]=27468;k[za>>2]=27488;k[Aa>>2]=27560;Yua(Ga);Ava(Aa);vva(za);Pa=Na;Qa=Oa;Qb(Qa|0)}while(0);Ea=Ha;Fa=Ja;vva(za);Qb(Fa|0)}while(0);if((_|0)==77){xa=Rb()|0;Ba=Q;Ca=xa}k[m>>2]=27468;k[la>>2]=27488;k[ma>>2]=27560;Yua(sa);Ava(ma);vva(la);Pa=Ba;Qa=Ca;Qb(Qa|0)}while(0);qa=ta;ra=ua;vva(la);Qb(ra|0)}while(0);if((_|0)==74){ja=Rb()|0;na=Q;oa=ja}k[j>>2]=27468;k[ba>>2]=27488;k[aa>>2]=27560;Yua(ga);Ava(aa);vva(ba);Pa=na;Qa=oa;Qb(Qa|0)}while(0);ea=ha;fa=ia;vva(ba);Qb(fa|0)}while(0);if((_|0)==71){Y=Rb()|0;ca=Q;da=Y}k[h>>2]=27468;k[N>>2]=27488;k[O>>2]=27560;Yua(V);Ava(O);vva(N);Pa=ca;Qa=da;Qb(Qa|0)}while(0);T=W;U=X;vva(N);Qb(U|0)}else _=68;while(0);if((_|0)==68){L=Rb()|0;P=Q;R=L}k[f>>2]=27468;k[A>>2]=27488;k[C>>2]=27560;Yua(I);Ava(C);vva(A);Pa=P;Qa=R;Qb(Qa|0)}while(0);G=J;H=K;vva(A);Qb(H|0)}else _=65;while(0);if((_|0)==65){z=Rb()|0;D=Q;E=z}k[d>>2]=27468;k[q>>2]=27488;k[s>>2]=27560;Yua(w);Ava(s);vva(q);Pa=D;Qa=E;Qb(Qa|0)}while(0);u=x;v=y;vva(q);Qb(v|0)}function RM(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0;b=r;r=r+768|0;c=b+752|0;d=b+592|0;e=b+740|0;f=b+456|0;g=b+728|0;h=b+304|0;i=b+440|0;j=b+152|0;l=b+288|0;m=b+16|0;n=b;o=d+56|0;p=d+4|0;k[d>>2]=27524;k[o>>2]=27544;B=0;wa(508,d+56|0,p|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;t=q;vva(o);Qb(t|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[o>>2]=27488;B=0;va(448,p|0);q=B;B=0;do if(q&1){u=Rb()|0;v=Q;w=u}else{k[p>>2]=27560;u=d+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,p|0,c|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(c);Yua(u);Ava(p);v=y;w=x;break}Yua(c);B=0;Ia(40,d|0,80581,15)|0;x=B;B=0;do if(!(x&1)?(B=0,wa(510,e|0,p|0),y=B,B=0,!(y&1)):0){B=0;ya(424,e|0)|0;y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(e);A=z;C=y;break}Yua(e);k[d>>2]=27468;k[o>>2]=27488;k[p>>2]=27560;Yua(u);Ava(p);vva(o);y=f+56|0;z=f+4|0;k[f>>2]=27524;k[y>>2]=27544;B=0;wa(508,f+56|0,z|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;F=D;vva(y);Qb(F|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[y>>2]=27488;B=0;va(448,z|0);D=B;B=0;do if(D&1){G=Rb()|0;H=Q;I=G}else{k[z>>2]=27560;G=f+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,z|0,c|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(c);Yua(G);Ava(z);H=K;I=J;break}Yua(c);B=0;J=Ia(40,f|0,144086,7)|0;K=B;B=0;do if(((!(K&1)?(B=0,L=Xa(242,J|0,k[a+8>>2]|0)|0,M=B,B=0,!(M&1)):0)?(B=0,Ia(40,L|0,149177,1)|0,L=B,B=0,!(L&1)):0)?(B=0,wa(510,g|0,z|0),L=B,B=0,!(L&1)):0){B=0;ya(424,g|0)|0;L=B;B=0;if(L&1){L=Rb()|0;M=Q;Yua(g);N=M;O=L;break}Yua(g);k[f>>2]=27468;k[y>>2]=27488;k[z>>2]=27560;Yua(G);Ava(z);vva(y);L=h+56|0;M=h+4|0;k[h>>2]=27524;k[L>>2]=27544;B=0;wa(508,h+56|0,M|0);P=B;B=0;if(P&1){P=Rb()|0;R=Q;S=P;vva(L);Qb(S|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[L>>2]=27488;B=0;va(448,M|0);P=B;B=0;do if(P&1){T=Rb()|0;U=Q;V=T}else{k[M>>2]=27560;T=h+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,M|0,c|0);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Yua(c);Yua(T);Ava(M);U=X;V=W;break}Yua(c);B=0;W=Ia(40,h|0,144094,18)|0;X=B;B=0;do if(X&1)Y=72;else{B=0;Z=ya(427,k[a+12>>2]|0)|0;_=B;B=0;if(_&1){Y=72;break}_=Lta(Z)|0;B=0;$=Ia(40,W|0,Z|0,_|0)|0;_=B;B=0;if(_&1){Y=72;break}B=0;Ia(40,$|0,149177,1)|0;$=B;B=0;if($&1){Y=72;break}B=0;wa(510,i|0,M|0);$=B;B=0;if($&1){Y=72;break}B=0;ya(424,i|0)|0;$=B;B=0;if($&1){$=Rb()|0;_=Q;Yua(i);aa=_;ba=$;break}Yua(i);k[h>>2]=27468;k[L>>2]=27488;k[M>>2]=27560;Yua(T);Ava(M);vva(L);$=j+56|0;_=j+4|0;k[j>>2]=27524;k[$>>2]=27544;B=0;wa(508,j+56|0,_|0);Z=B;B=0;if(Z&1){Z=Rb()|0;ca=Q;da=Z;vva($);Qb(da|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[$>>2]=27488;B=0;va(448,_|0);Z=B;B=0;do if(Z&1){ea=Rb()|0;fa=Q;ga=ea}else{k[_>>2]=27560;ea=j+36|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,_|0,c|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(c);Yua(ea);Ava(_);fa=ia;ga=ha;break}Yua(c);B=0;ha=Ia(40,j|0,80597,14)|0;ia=B;B=0;do if(ia&1)Y=75;else{B=0;ja=Xa(242,ha|0,k[a+16>>2]|0)|0;ka=B;B=0;if(ka&1){Y=75;break}B=0;Ia(40,ja|0,149177,1)|0;ja=B;B=0;if(ja&1){Y=75;break}B=0;wa(510,l|0,_|0);ja=B;B=0;if(ja&1){Y=75;break}B=0;ya(424,l|0)|0;ja=B;B=0;if(ja&1){ja=Rb()|0;ka=Q;Yua(l);la=ka;ma=ja;break}Yua(l);k[j>>2]=27468;k[$>>2]=27488;k[_>>2]=27560;Yua(ea);Ava(_);vva($);zla(k[a+24>>2]|0);zla(k[a+28>>2]|0);zla(k[a+20>>2]|0);ja=m+56|0;ka=m+4|0;k[m>>2]=27524;k[ja>>2]=27544;B=0;wa(508,m+56|0,ka|0);na=B;B=0;if(na&1){na=Rb()|0;oa=Q;pa=na;vva(ja);Qb(pa|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[ja>>2]=27488;B=0;va(448,ka|0);na=B;B=0;do if(na&1){qa=Rb()|0;ra=Q;sa=qa}else{k[ka>>2]=27560;qa=m+36|0;k[qa>>2]=0;k[qa+4>>2]=0;k[qa+8>>2]=0;k[qa+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ka|0,c|0);ta=B;B=0;if(ta&1){ta=Rb()|0;ua=Q;Yua(c);Yua(qa);Ava(ka);ra=ua;sa=ta;break}Yua(c);B=0;ta=Ia(40,m|0,144140,15)|0;ua=B;B=0;do if(!(ua&1)){B=0;xa=Xa(245,ta|0,k[a+44>>2]|0)|0;za=B;B=0;if(za&1){Y=78;break}B=0;Ia(40,xa|0,149177,1)|0;xa=B;B=0;if(xa&1){Y=78;break}B=0;wa(510,n|0,ka|0);xa=B;B=0;if(xa&1){Y=78;break}B=0;ya(424,n|0)|0;xa=B;B=0;if(xa&1){xa=Rb()|0;za=Q;Yua(n);Aa=za;Ba=xa;break}else{Yua(n);k[m>>2]=27468;k[ja>>2]=27488;k[ka>>2]=27560;Yua(qa);Ava(ka);vva(ja);r=b;return}}else Y=78;while(0);if((Y|0)==78){ta=Rb()|0;Aa=Q;Ba=ta}k[m>>2]=27468;k[ja>>2]=27488;k[ka>>2]=27560;Yua(qa);Ava(ka);vva(ja);Ca=Aa;Da=Ba;Qb(Da|0)}while(0);oa=ra;pa=sa;vva(ja);Qb(pa|0)}while(0);if((Y|0)==75){ha=Rb()|0;la=Q;ma=ha}k[j>>2]=27468;k[$>>2]=27488;k[_>>2]=27560;Yua(ea);Ava(_);vva($);Ca=la;Da=ma;Qb(Da|0)}while(0);ca=fa;da=ga;vva($);Qb(da|0)}while(0);if((Y|0)==72){W=Rb()|0;aa=Q;ba=W}k[h>>2]=27468;k[L>>2]=27488;k[M>>2]=27560;Yua(T);Ava(M);vva(L);Ca=aa;Da=ba;Qb(Da|0)}while(0);R=U;S=V;vva(L);Qb(S|0)}else Y=69;while(0);if((Y|0)==69){J=Rb()|0;N=Q;O=J}k[f>>2]=27468;k[y>>2]=27488;k[z>>2]=27560;Yua(G);Ava(z);vva(y);Ca=N;Da=O;Qb(Da|0)}while(0);E=H;F=I;vva(y);Qb(F|0)}else Y=66;while(0);if((Y|0)==66){x=Rb()|0;A=Q;C=x}k[d>>2]=27468;k[o>>2]=27488;k[p>>2]=27560;Yua(u);Ava(p);vva(o);Ca=A;Da=C;Qb(Da|0)}while(0);s=v;t=w;vva(o);Qb(t|0)}function SM(a){a=a|0;return k[a+8>>2]|0}function TM(a){a=a|0;return 588}function UM(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;f=a+24|0;Ela(k[f>>2]|0,d);d=a+28|0;Ela(k[d>>2]|0,e);e=a+20|0;Ela(k[e>>2]|0,b);b=Gla(k[f>>2]|0)|0;k[a+40>>2]=b;b=Gla(k[d>>2]|0)|0;k[a+36>>2]=b;b=Fla(k[e>>2]|0)|0;k[a+32>>2]=b;k[a+44>>2]=g;return}function VM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;d=r;r=r+192|0;e=d+180|0;f=d+176|0;g=d+40|0;h=d+24|0;i=d+12|0;j=d;cO(k[a+44>>2]|0,f,477);switch(k[f>>2]|0){case 510:{l=WM(a)|0;break}case 484:{l=XM(a)|0;break}case 479:{l=YM(a)|0;break}default:{a=g+56|0;m=g+4|0;k[g>>2]=27524;k[a>>2]=27544;B=0;wa(508,g+56|0,m|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(a);Qb(p|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[a>>2]=27488;B=0;va(448,m|0);n=B;B=0;do if(n&1){q=Rb()|0;s=Q;t=q}else{k[m>>2]=27560;q=g+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,m|0,e|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);Yua(q);Ava(m);s=v;t=u;break}Yua(e);B=0;u=Ia(40,g|0,144156,9)|0;v=B;B=0;if((((((!(v&1)?(B=0,v=Xa(242,u|0,k[f>>2]|0)|0,u=B,B=0,!(u&1)):0)?(B=0,u=Ia(40,v|0,144166,2)|0,v=B,B=0,!(v&1)):0)?(B=0,v=ya(427,k[f>>2]|0)|0,w=B,B=0,!(w&1)):0)?(w=Lta(v)|0,B=0,x=Ia(40,u|0,v|0,w|0)|0,w=B,B=0,!(w&1)):0)?(B=0,w=Ia(40,x|0,144169,19)|0,x=B,B=0,!(x&1)):0)?(B=0,Xa(239,w|0,0)|0,w=B,B=0,!(w&1)):0){w=Ab(20)|0;B=0;eb(502,h|0,80502,78);x=B;B=0;do if(!(x&1)){B=0;eb(502,i|0,144189,13);v=B;B=0;if(v&1){v=Rb()|0;u=Q;Yua(h);y=u;z=v;break}B=0;wa(510,j|0,m|0);v=B;B=0;if(v&1){v=Rb()|0;A=Q;C=v;D=1}else{B=0;ua(163,w|0,h|0,i|0,262,j|0);v=B;B=0;if(v&1)E=1;else{B=0;eb(503,w|0,1240,229);B=0;E=0}v=Rb()|0;u=Q;Yua(j);A=u;C=v;D=E}Yua(i);Yua(h);if(D){y=A;z=C}else{F=A;G=C;k[g>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(a);Qb(G|0)}}else{v=Rb()|0;y=Q;z=v}while(0);zb(w|0);F=y;G=z;k[g>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(a);Qb(G|0)}x=Rb()|0;F=Q;G=x;k[g>>2]=27468;k[a>>2]=27488;k[m>>2]=27560;Yua(q);Ava(m);vva(a);Qb(G|0)}while(0);o=s;p=t;vva(a);Qb(p|0)}}if(!l){r=d;return}IN(l,b,c);HN(l);Sqa(l);r=d;return}function WM(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;switch(k[a+16>>2]|0){case 649:{h=mN(a)|0;r=b;return h|0}case 644:{h=nN(a)|0;r=b;return h|0}default:{h=d+56|0;b=d+4|0;k[d>>2]=27524;k[h>>2]=27544;B=0;wa(508,d+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;i=Q;j=a;vva(h);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[h>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){l=Rb()|0;m=Q;n=l}else{k[b>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(b);m=p;n=o;break}Yua(c);B=0;o=Ia(40,d|0,80612,22)|0;p=B;B=0;if(!(p&1)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,e|0,80502,78);p=B;B=0;do if(!(p&1)){B=0;eb(502,f|0,80635,26);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);t=s;u=q;break}B=0;wa(510,g|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;v=Q;w=q;x=1}else{B=0;ua(163,o|0,e|0,f|0,625,g|0);q=B;B=0;if(q&1)y=1;else{B=0;eb(503,o|0,1240,229);B=0;y=0}q=Rb()|0;s=Q;Yua(g);v=s;w=q;x=y}Yua(f);Yua(e);if(x){t=v;u=w}else{z=v;A=w;k[d>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(h);Qb(A|0)}}else{q=Rb()|0;t=Q;u=q}while(0);zb(o|0);z=t;A=u;k[d>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(h);Qb(A|0)}p=Rb()|0;z=Q;A=p;k[d>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(h);Qb(A|0)}while(0);i=m;j=n;vva(h);Qb(j|0)}}return 0}function XM(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;switch(k[a+16>>2]|0){case 649:{h=lN(a)|0;r=b;return h|0}case 644:{h=kN(a)|0;r=b;return h|0}default:{h=d+56|0;b=d+4|0;k[d>>2]=27524;k[h>>2]=27544;B=0;wa(508,d+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;i=Q;j=a;vva(h);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[h>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){l=Rb()|0;m=Q;n=l}else{k[b>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(b);m=p;n=o;break}Yua(c);B=0;o=Ia(40,d|0,80612,22)|0;p=B;B=0;if(!(p&1)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,e|0,80502,78);p=B;B=0;do if(!(p&1)){B=0;eb(502,f|0,80662,29);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);t=s;u=q;break}B=0;wa(510,g|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;v=Q;w=q;x=1}else{B=0;ua(163,o|0,e|0,f|0,480,g|0);q=B;B=0;if(q&1)y=1;else{B=0;eb(503,o|0,1240,229);B=0;y=0}q=Rb()|0;s=Q;Yua(g);v=s;w=q;x=y}Yua(f);Yua(e);if(x){t=v;u=w}else{z=v;A=w;k[d>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(h);Qb(A|0)}}else{q=Rb()|0;t=Q;u=q}while(0);zb(o|0);z=t;A=u;k[d>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(h);Qb(A|0)}p=Rb()|0;z=Q;A=p;k[d>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(h);Qb(A|0)}while(0);i=m;j=n;vva(h);Qb(j|0)}}return 0}function YM(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;switch(k[a+16>>2]|0){case 649:{h=lN(a)|0;if(!h){i=0;r=b;return i|0}MN(h);i=h;r=b;return i|0}case 644:{h=kN(a)|0;if(!h){i=0;r=b;return i|0}MN(h);i=h;r=b;return i|0}default:{i=d+56|0;b=d+4|0;k[d>>2]=27524;k[i>>2]=27544;B=0;wa(508,d+56|0,b|0);h=B;B=0;if(h&1){h=Rb()|0;j=Q;l=h;vva(i);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[i>>2]=27488;B=0;va(448,b|0);h=B;B=0;do if(h&1){a=Rb()|0;m=Q;n=a}else{k[b>>2]=27560;a=d+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(a);Ava(b);m=p;n=o;break}Yua(c);B=0;o=Ia(40,d|0,80612,22)|0;p=B;B=0;if(!(p&1)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,e|0,80502,78);p=B;B=0;do if(!(p&1)){B=0;eb(502,f|0,80692,36);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);t=s;u=q;break}B=0;wa(510,g|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;v=Q;w=q;x=1}else{B=0;ua(163,o|0,e|0,f|0,454,g|0);q=B;B=0;if(q&1)y=1;else{B=0;eb(503,o|0,1240,229);B=0;y=0}q=Rb()|0;s=Q;Yua(g);v=s;w=q;x=y}Yua(f);Yua(e);if(x){t=v;u=w}else{z=v;A=w;k[d>>2]=27468;k[i>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(i);Qb(A|0)}}else{q=Rb()|0;t=Q;u=q}while(0);zb(o|0);z=t;A=u;k[d>>2]=27468;k[i>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(i);Qb(A|0)}p=Rb()|0;z=Q;A=p;k[d>>2]=27468;k[i>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(i);Qb(A|0)}while(0);j=m;l=n;vva(i);Qb(l|0)}}return 0}function ZM(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;c=r;r=r+192|0;d=c+180|0;e=c+176|0;f=c+40|0;g=c+24|0;h=c+12|0;i=c;cO(k[a+44>>2]|0,e,477);switch(k[e>>2]|0){case 510:{j=_M(a)|0;break}case 484:{j=$M(a)|0;break}case 479:{r=c;return}default:{a=f+56|0;l=f+4|0;k[f>>2]=27524;k[a>>2]=27544;B=0;wa(508,f+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(a);Qb(o|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[a>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=f+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[f+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,l|0,d|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);Yua(p);Ava(l);q=u;s=t;break}Yua(d);B=0;t=Ia(40,f|0,144156,9)|0;u=B;B=0;if((((((!(u&1)?(B=0,u=Xa(242,t|0,k[e>>2]|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,144166,2)|0,u=B,B=0,!(u&1)):0)?(B=0,u=ya(427,k[e>>2]|0)|0,v=B,B=0,!(v&1)):0)?(v=Lta(u)|0,B=0,w=Ia(40,t|0,u|0,v|0)|0,v=B,B=0,!(v&1)):0)?(B=0,v=Ia(40,w|0,144169,19)|0,w=B,B=0,!(w&1)):0)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,g|0,80502,78);w=B;B=0;do if(!(w&1)){B=0;eb(502,h|0,144203,13);u=B;B=0;if(u&1){u=Rb()|0;t=Q;Yua(g);x=t;y=u;break}B=0;wa(510,i|0,l|0);u=B;B=0;if(u&1){u=Rb()|0;z=Q;A=u;C=1}else{B=0;ua(163,v|0,g|0,h|0,291,i|0);u=B;B=0;if(u&1)D=1;else{B=0;eb(503,v|0,1240,229);B=0;D=0}u=Rb()|0;t=Q;Yua(i);z=t;A=u;C=D}Yua(h);Yua(g);if(C){x=z;y=A}else{E=z;F=A;k[f>>2]=27468;k[a>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(a);Qb(F|0)}}else{u=Rb()|0;x=Q;y=u}while(0);zb(v|0);E=x;F=y;k[f>>2]=27468;k[a>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(a);Qb(F|0)}w=Rb()|0;E=Q;F=w;k[f>>2]=27468;k[a>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(a);Qb(F|0)}while(0);n=q;o=s;vva(a);Qb(o|0)}}if(!j){r=c;return}TN(j,b);SN(j);Sqa(j);r=c;return}function _M(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;switch(k[a+16>>2]|0){case 644:{h=pN(a)|0;r=b;return h|0}case 649:{h=0;r=b;return h|0}default:{h=d+56|0;b=d+4|0;k[d>>2]=27524;k[h>>2]=27544;B=0;wa(508,d+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;i=Q;j=a;vva(h);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[h>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){l=Rb()|0;m=Q;n=l}else{k[b>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(b);m=p;n=o;break}Yua(c);B=0;o=Ia(40,d|0,80612,22)|0;p=B;B=0;if(!(p&1)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,e|0,80502,78);p=B;B=0;do if(!(p&1)){B=0;eb(502,f|0,80729,26);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);t=s;u=q;break}B=0;wa(510,g|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;v=Q;w=q;x=1}else{B=0;ua(163,o|0,e|0,f|0,863,g|0);q=B;B=0;if(q&1)y=1;else{B=0;eb(503,o|0,1240,229);B=0;y=0}q=Rb()|0;s=Q;Yua(g);v=s;w=q;x=y}Yua(f);Yua(e);if(x){t=v;u=w}else{z=v;A=w;k[d>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(h);Qb(A|0)}}else{q=Rb()|0;t=Q;u=q}while(0);zb(o|0);z=t;A=u;k[d>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(h);Qb(A|0)}p=Rb()|0;z=Q;A=p;k[d>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(h);Qb(A|0)}while(0);i=m;j=n;vva(h);Qb(j|0)}}return 0}function $M(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;switch(k[a+16>>2]|0){case 644:{h=oN(a)|0;r=b;return h|0}case 649:{h=0;r=b;return h|0}default:{h=d+56|0;b=d+4|0;k[d>>2]=27524;k[h>>2]=27544;B=0;wa(508,d+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;i=Q;j=a;vva(h);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[h>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){l=Rb()|0;m=Q;n=l}else{k[b>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(b);m=p;n=o;break}Yua(c);B=0;o=Ia(40,d|0,80612,22)|0;p=B;B=0;if(!(p&1)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,e|0,80502,78);p=B;B=0;do if(!(p&1)){B=0;eb(502,f|0,80756,29);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);t=s;u=q;break}B=0;wa(510,g|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;v=Q;w=q;x=1}else{B=0;ua(163,o|0,e|0,f|0,778,g|0);q=B;B=0;if(q&1)y=1;else{B=0;eb(503,o|0,1240,229);B=0;y=0}q=Rb()|0;s=Q;Yua(g);v=s;w=q;x=y}Yua(f);Yua(e);if(x){t=v;u=w}else{z=v;A=w;k[d>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(h);Qb(A|0)}}else{q=Rb()|0;t=Q;u=q}while(0);zb(o|0);z=t;A=u;k[d>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(h);Qb(A|0)}p=Rb()|0;z=Q;A=p;k[d>>2]=27468;k[h>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(h);Qb(A|0)}while(0);i=m;j=n;vva(h);Qb(j|0)}}return 0}function aN(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;i=a+16|0;switch(k[i>>2]|0){case 649:{j=a+40|0;l=Rn(k[k[j>>2]>>2]|0)|0;k[b>>2]=l;l=Rn(k[(k[j>>2]|0)+4>>2]|0)|0;k[b+4>>2]=l;l=Rn(k[(k[j>>2]|0)+8>>2]|0)|0;k[b+8>>2]=l;l=Rn(k[(k[j>>2]|0)+12>>2]|0)|0;k[b+12>>2]=l;r=c;return}case 644:{l=a+40|0;a=Rn(k[k[l>>2]>>2]|0)|0;k[b>>2]=a;a=Rn(k[(k[l>>2]|0)+4>>2]|0)|0;k[b+4>>2]=a;r=c;return}default:{c=e+56|0;a=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,a|0);b=B;B=0;if(b&1){b=Rb()|0;m=Q;n=b;vva(c);Qb(n|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,a|0);b=B;B=0;do if(b&1){l=Rb()|0;o=Q;p=l}else{k[a>>2]=27560;l=e+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,a|0,d|0);j=B;B=0;if(j&1){j=Rb()|0;q=Q;Yua(d);Yua(l);Ava(a);o=q;p=j;break}Yua(d);B=0;j=Ia(40,e|0,80786,19)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[i>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,j|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,f|0,80502,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,g|0,80806,15);q=B;B=0;if(q&1){q=Rb()|0;j=Q;Yua(f);u=j;v=q;break}B=0;wa(510,h|0,a|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,f|0,g|0,315,h|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;j=Q;Yua(h);w=j;x=q;y=z}Yua(g);Yua(f);if(y){u=w;v=x}else{A=w;C=x;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(c);Qb(C|0)}while(0);m=o;n=p;vva(c);Qb(n|0)}}}function bN(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;i=a+16|0;switch(k[i>>2]|0){case 649:{j=a+40|0;l=Qn(k[k[j>>2]>>2]|0)|0;k[b>>2]=l;l=Qn(k[(k[j>>2]|0)+4>>2]|0)|0;k[b+4>>2]=l;l=Qn(k[(k[j>>2]|0)+8>>2]|0)|0;k[b+8>>2]=l;l=Qn(k[(k[j>>2]|0)+12>>2]|0)|0;k[b+12>>2]=l;r=c;return}case 644:{l=a+40|0;a=Qn(k[k[l>>2]>>2]|0)|0;k[b>>2]=a;a=Qn(k[(k[l>>2]|0)+4>>2]|0)|0;k[b+4>>2]=a;r=c;return}default:{c=e+56|0;a=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,a|0);b=B;B=0;if(b&1){b=Rb()|0;m=Q;n=b;vva(c);Qb(n|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,a|0);b=B;B=0;do if(b&1){l=Rb()|0;o=Q;p=l}else{k[a>>2]=27560;l=e+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,a|0,d|0);j=B;B=0;if(j&1){j=Rb()|0;q=Q;Yua(d);Yua(l);Ava(a);o=q;p=j;break}Yua(d);B=0;j=Ia(40,e|0,80786,19)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[i>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,j|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,f|0,80502,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,g|0,80822,15);q=B;B=0;if(q&1){q=Rb()|0;j=Q;Yua(f);u=j;v=q;break}B=0;wa(510,h|0,a|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,f|0,g|0,332,h|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;j=Q;Yua(h);w=j;x=q;y=z}Yua(g);Yua(f);if(y){u=w;v=x}else{A=w;C=x;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(c);Qb(C|0)}while(0);m=o;n=p;vva(c);Qb(n|0)}}}function cN(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;h=a+16|0;switch(k[h>>2]|0){case 644:{i=2;r=b;return i|0}case 649:{i=4;r=b;return i|0}default:{i=d+56|0;b=d+4|0;k[d>>2]=27524;k[i>>2]=27544;B=0;wa(508,d+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;j=Q;l=a;vva(i);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[i>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){m=Rb()|0;n=Q;o=m}else{k[b>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(b);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,80786,19)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[h>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,146481,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,80502,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,80838,16);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,b|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,344,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[i>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(i);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[i>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(i);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[i>>2]=27488;k[b>>2]=27560;Yua(m);Ava(b);vva(i);Qb(C|0)}while(0);j=n;l=o;vva(i);Qb(l|0)}}return 0}function dN(a,b){a=a|0;b=b|0;return (k[a+12>>2]|0)==(b|0)|0}function eN(a){a=a|0;return 0}function fN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return}function gN(a,b,c){a=a|0;b=b|0;c=+c;return}function hN(a){a=a|0;var b=0;b=a+32|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;Dla(k[a+24>>2]|0);Dla(k[a+28>>2]|0);Dla(k[a+20>>2]|0);return}function iN(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return}function jN(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0;g=r;r=r+192|0;d=g+176|0;j=g+40|0;l=g+24|0;m=g+12|0;n=g;if((Hc[k[(k[a>>2]|0)+56>>2]&511](a)|0)<=0){o=0;p=0;k[b>>2]=o;k[c>>2]=p;r=g;return}q=a+40|0;if((h|0)==937){s=0;t=0;u=0;while(1){v=e+(Rn(k[(k[q>>2]|0)+(t<<2)>>2]|0)|0)|0;do if(!(i[v>>0]|0)){w=e+(Rn(k[(k[q>>2]|0)+(t<<2)>>2]|0)|0)|0;i[w>>0]=1;w=0;while(1){x=f+(w<<2)|0;if((k[x>>2]|0)>-1)w=w+1|0;else{y=x;break}}w=Rn(k[(k[q>>2]|0)+(t<<2)>>2]|0)|0;k[y>>2]=w;w=k[(k[q>>2]|0)+(t<<2)>>2]|0;if(k[w+28>>2]|0)if(!(fo(w)|0)){z=s+1|0;A=u;break}else{z=s;A=u+1|0;break}else{z=s;A=u}}else{z=s;A=u}while(0);t=t+1|0;if((t|0)>=(Hc[k[(k[a>>2]|0)+56>>2]&511](a)|0)){o=z;p=A;break}else{s=z;u=A}}k[b>>2]=o;k[c>>2]=p;r=g;return}else{C=0;D=0;E=0}a:while(1){A=e+(Rn(k[(k[q>>2]|0)+(D<<2)>>2]|0)|0)|0;b:do if(!(i[A>>0]|0)){u=e+(Rn(k[(k[q>>2]|0)+(D<<2)>>2]|0)|0)|0;i[u>>0]=1;u=0;while(1){z=f+(u<<2)|0;if((k[z>>2]|0)>-1)u=u+1|0;else{F=z;break}}u=Rn(k[(k[q>>2]|0)+(D<<2)>>2]|0)|0;k[F>>2]=u;switch(h|0){case 966:{u=k[(k[q>>2]|0)+(D<<2)>>2]|0;if(!(k[u+32>>2]|0)){G=C;H=E;break b}if(!(fo(u)|0)){G=C+1|0;H=E;break b}else{G=C;H=E+1|0;break b}break}case 943:{u=k[(k[q>>2]|0)+(D<<2)>>2]|0;if(!(k[u+24>>2]|0)){G=C;H=E;break b}if(!(fo(u)|0)){G=C+1|0;H=E;break b}else{G=C;H=E+1|0;break b}break}default:break a}}else{G=C;H=E}while(0);D=D+1|0;if((D|0)>=(Hc[k[(k[a>>2]|0)+56>>2]&511](a)|0)){o=G;p=H;I=11;break}else{C=G;E=H}}if((I|0)==11){k[b>>2]=o;k[c>>2]=p;r=g;return}g=j+56|0;p=j+4|0;k[j>>2]=27524;k[g>>2]=27544;B=0;wa(508,j+56|0,p|0);c=B;B=0;if(c&1){c=Rb()|0;J=Q;K=c;vva(g);Qb(K|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[g>>2]=27488;B=0;va(448,p|0);c=B;B=0;do if(c&1){o=Rb()|0;L=Q;M=o}else{k[p>>2]=27560;o=j+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[j+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,p|0,d|0);b=B;B=0;if(b&1){b=Rb()|0;I=Q;Yua(d);Yua(o);Ava(p);L=I;M=b;break}Yua(d);B=0;b=Ia(40,j|0,145010,13)|0;I=B;B=0;if(!(I&1)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,l|0,80502,78);I=B;B=0;do if(!(I&1)){B=0;eb(502,m|0,144217,23);H=B;B=0;if(H&1){H=Rb()|0;E=Q;Yua(l);N=E;O=H;break}B=0;wa(510,n|0,p|0);H=B;B=0;if(H&1){H=Rb()|0;P=Q;R=H;S=1}else{B=0;ua(163,b|0,l|0,m|0,434,n|0);H=B;B=0;if(H&1)T=1;else{B=0;eb(503,b|0,1240,229);B=0;T=0}H=Rb()|0;E=Q;Yua(n);P=E;R=H;S=T}Yua(m);Yua(l);if(S){N=P;O=R}else{U=P;V=R;k[j>>2]=27468;k[g>>2]=27488;k[p>>2]=27560;Yua(o);Ava(p);vva(g);Qb(V|0)}}else{H=Rb()|0;N=Q;O=H}while(0);zb(b|0);U=N;V=O;k[j>>2]=27468;k[g>>2]=27488;k[p>>2]=27560;Yua(o);Ava(p);vva(g);Qb(V|0)}I=Rb()|0;U=Q;V=I;k[j>>2]=27468;k[g>>2]=27488;k[p>>2]=27560;Yua(o);Ava(p);vva(g);Qb(V|0)}while(0);J=L;K=M;vva(g);Qb(K|0)}function kN(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+144|0;c=b+136|0;d=b+128|0;e=b+120|0;f=b+112|0;g=b+104|0;h=b+96|0;i=b+48|0;j=b+32|0;l=b;m=k[a+32>>2]|0;if(!($p(m)|0)){n=0;r=b;return n|0}Ko(i,k[a+36>>2]|0,2,0);o=m+16|0;q=oC(k[o>>2]|0,674)|0;s=oC(k[o>>2]|0,677)|0;t=+p[i+24>>3]-+p[i>>3];u=+p[i+32>>3]-+p[i+8>>3];v=+aa(+(t*t+u*u));w=u/v;u=-t/v;o=a+40|0;x=ed[k[(k[m>>2]|0)+160>>2]&511](m,k[k[o>>2]>>2]|0)|0;y=ed[k[(k[m>>2]|0)+160>>2]&511](m,k[(k[o>>2]|0)+4>>2]|0)|0;z=Qqa(64)|0;B=0;va(491,z|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Sqa(z);D=C;E=A;Qb(E|0)}Mja(z,x,y);nd[k[(k[q>>2]|0)+48>>2]&1023](q,g,z);nd[k[(k[s>>2]|0)+48>>2]&1023](s,h,z);Ec[k[(k[z>>2]|0)+4>>2]&1023](z);if(w*+p[g>>3]+u*+p[h>>3]<=0.0){n=0;r=b;return n|0}h=Qqa(68)|0;B=0;ua(165,h|0,k[o>>2]|0,2,k[a+44>>2]|0,534);a=B;B=0;if(a&1){a=Rb()|0;o=Q;Sqa(h);D=o;E=a;Qb(E|0)}a=Qqa(64)|0;B=0;ib(289,a|0,x|0,y|0,2);o=B;B=0;if(o&1){o=Rb()|0;g=Q;Sqa(a);D=g;E=o;Qb(E|0)}E=Hc[k[(k[a>>2]|0)+8>>2]&511](a)|0;if((E|0)<(Hc[k[(k[a>>2]|0)+12>>2]&511](a)|0)){o=a+8|0;g=h+12|0;D=l+16|0;z=l+8|0;A=l+24|0;C=E;do{Fc[k[(k[a>>2]|0)+24>>2]&1023](a,C);zw(m,j,a,x,y,Hc[k[(k[m>>2]|0)+112>>2]&511](m)|0);nd[k[(k[q>>2]|0)+48>>2]&1023](q,e,a);nd[k[(k[s>>2]|0)+48>>2]&1023](s,f,a);v=w*+p[e>>3]+u*+p[f>>3];yw(m,d,i,a);p[c>>3]=v*(+p[o>>3]*+p[d>>3]);ZX(j,1,2,1,c,1,1,0,j,1,2,0,l,0)|0;E=k[g>>2]|0;p[E>>3]=+p[l>>3]+ +p[E>>3];F=E+8|0;p[F>>3]=+p[z>>3]+ +p[F>>3];F=E+16|0;p[F>>3]=+p[D>>3]+ +p[F>>3];F=E+24|0;p[F>>3]=+p[A>>3]+ +p[F>>3];C=C+1|0}while((C|0)<(Hc[k[(k[a>>2]|0)+12>>2]&511](a)|0))}Ec[k[(k[a>>2]|0)+4>>2]&1023](a);n=h;r=b;return n|0}function lN(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0.0,la=0,ma=0,na=0,oa=0.0,pa=0,qa=0.0,ra=0,sa=0.0,ta=0,va=0.0,wa=0,xa=0.0,ya=0,za=0.0,Aa=0,Ba=0.0,Ca=0,Da=0.0,Ea=0,Fa=0.0,Ga=0,Ha=0.0,Ia=0,Ja=0.0,Ka=0,La=0.0,Ma=0,Na=0.0;b=r;r=r+416|0;c=b+400|0;d=b+392|0;e=b+384|0;f=b+376|0;g=b+368|0;h=b+320|0;i=b+288|0;j=b+256|0;l=b+128|0;m=b;n=k[a+32>>2]|0;if(!($p(n)|0)){o=0;r=b;return o|0}q=Qqa(68)|0;s=a+40|0;B=0;ua(165,q|0,k[s>>2]|0,4,k[a+44>>2]|0,534);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Sqa(q);v=u;w=t;Qb(w|0)}Ko(h,k[a+36>>2]|0,2,0);a=n+16|0;t=oC(k[a>>2]|0,674)|0;u=oC(k[a>>2]|0,677)|0;x=+p[h+24>>3]-+p[h>>3];y=+p[h+32>>3]-+p[h+8>>3];z=+aa(+(x*x+y*y));A=y/z;y=-x/z;a=ed[k[(k[n>>2]|0)+160>>2]&511](n,k[k[s>>2]>>2]|0)|0;C=ed[k[(k[n>>2]|0)+160>>2]&511](n,k[(k[s>>2]|0)+4>>2]|0)|0;s=Qqa(64)|0;B=0;ib(289,s|0,a|0,C|0,2);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Sqa(s);v=E;w=D;Qb(w|0)}w=Hc[k[(k[s>>2]|0)+8>>2]&511](s)|0;if((w|0)<(Hc[k[(k[s>>2]|0)+12>>2]&511](s)|0)){D=s+8|0;E=q+12|0;v=m+96|0;F=l+8|0;G=l+16|0;H=l+24|0;I=l+32|0;J=l+40|0;K=l+48|0;L=l+56|0;M=l+64|0;N=l+72|0;O=l+80|0;P=l+88|0;R=l+96|0;S=l+104|0;T=l+112|0;U=l+120|0;V=m+8|0;W=m+16|0;X=m+24|0;Y=m+32|0;Z=m+40|0;_=m+48|0;ba=m+56|0;ca=m+64|0;da=m+72|0;ea=m+80|0;fa=m+88|0;ga=m+104|0;ha=m+112|0;ia=m+120|0;ja=w;do{Fc[k[(k[s>>2]|0)+24>>2]&1023](s,ja);ww(n,i,s,a,C,Hc[k[(k[n>>2]|0)+112>>2]&511](n)|0);xw(n,j,s,a,C,Hc[k[(k[n>>2]|0)+112>>2]&511](n)|0);nd[k[(k[t>>2]|0)+48>>2]&1023](t,f,s);nd[k[(k[u>>2]|0)+48>>2]&1023](u,g,s);z=A*+p[f>>3]+y*+p[g>>3];yw(n,e,h,s);x=+p[D>>3]*+p[e>>3];p[c>>3]=z*x*.5;ka=x*+$(+z)*.5;p[d>>3]=ka;ZX(i,1,4,1,c,1,1,0,j,1,4,0,l,0)|0;ZX(i,1,4,1,d,1,1,0,i,1,4,0,m,0)|0;w=k[E>>2]|0;ka=+p[l>>3]+ +p[w>>3];p[w>>3]=ka;la=w+8|0;z=+p[F>>3]+ +p[la>>3];p[la>>3]=z;ma=w+16|0;x=+p[G>>3]+ +p[ma>>3];p[ma>>3]=x;na=w+24|0;oa=+p[H>>3]+ +p[na>>3];p[na>>3]=oa;pa=w+32|0;qa=+p[I>>3]+ +p[pa>>3];p[pa>>3]=qa;ra=w+40|0;sa=+p[J>>3]+ +p[ra>>3];p[ra>>3]=sa;ta=w+48|0;va=+p[K>>3]+ +p[ta>>3];p[ta>>3]=va;wa=w+56|0;xa=+p[L>>3]+ +p[wa>>3];p[wa>>3]=xa;ya=w+64|0;za=+p[M>>3]+ +p[ya>>3];p[ya>>3]=za;Aa=w+72|0;Ba=+p[N>>3]+ +p[Aa>>3];p[Aa>>3]=Ba;Ca=w+80|0;Da=+p[O>>3]+ +p[Ca>>3];p[Ca>>3]=Da;Ea=w+88|0;Fa=+p[P>>3]+ +p[Ea>>3];p[Ea>>3]=Fa;Ga=w+96|0;Ha=+p[R>>3]+ +p[Ga>>3];p[Ga>>3]=Ha;Ia=w+104|0;Ja=+p[S>>3]+ +p[Ia>>3];p[Ia>>3]=Ja;Ka=w+112|0;La=+p[T>>3]+ +p[Ka>>3];p[Ka>>3]=La;Ma=w+120|0;Na=+p[U>>3]+ +p[Ma>>3];p[Ma>>3]=Na;p[w>>3]=+p[m>>3]+ka;p[la>>3]=+p[V>>3]+z;p[ma>>3]=+p[W>>3]+x;p[na>>3]=+p[X>>3]+oa;p[pa>>3]=+p[Y>>3]+qa;p[ra>>3]=+p[Z>>3]+sa;p[ta>>3]=+p[_>>3]+va;p[wa>>3]=+p[ba>>3]+xa;p[ya>>3]=+p[ca>>3]+za;p[Aa>>3]=+p[da>>3]+Ba;p[Ca>>3]=+p[ea>>3]+Da;p[Ea>>3]=+p[fa>>3]+Fa;p[Ga>>3]=+p[v>>3]+Ha;p[Ia>>3]=+p[ga>>3]+Ja;p[Ka>>3]=+p[ha>>3]+La;p[Ma>>3]=+p[ia>>3]+Na;ja=ja+1|0}while((ja|0)<(Hc[k[(k[s>>2]|0)+12>>2]&511](s)|0))}Ec[k[(k[s>>2]|0)+4>>2]&1023](s);o=q;r=b;return o|0}function mN(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0.0,ma=0,na=0,oa=0,pa=0.0,qa=0,ra=0.0,sa=0,ta=0.0,va=0,wa=0.0,xa=0,ya=0.0,za=0,Aa=0.0,Ba=0,Ca=0.0,Da=0,Ea=0.0,Fa=0,Ga=0.0,Ha=0,Ia=0.0,Ja=0,Ka=0.0,La=0,Ma=0.0,Na=0,Oa=0.0;b=r;r=r+416|0;c=b+408|0;d=b+400|0;e=b+392|0;f=b+384|0;g=b+376|0;h=b+368|0;i=b+320|0;j=b+288|0;l=b+256|0;m=b+128|0;n=b;o=k[a+32>>2]|0;if(!($p(o)|0)){q=0;r=b;return q|0}s=Qqa(68)|0;t=a+40|0;u=a+44|0;B=0;ua(165,s|0,k[t>>2]|0,4,k[u>>2]|0,534);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Sqa(s);x=w;y=v;Qb(y|0)}Ko(i,k[a+36>>2]|0,2,0);dO(k[u>>2]|0,f,358);u=o+16|0;a=oC(k[u>>2]|0,674)|0;v=oC(k[u>>2]|0,677)|0;z=+p[i+24>>3]-+p[i>>3];A=+p[i+32>>3]-+p[i+8>>3];C=+aa(+(z*z+A*A));D=A/C;A=-z/C;u=ed[k[(k[o>>2]|0)+160>>2]&511](o,k[k[t>>2]>>2]|0)|0;w=ed[k[(k[o>>2]|0)+160>>2]&511](o,k[(k[t>>2]|0)+4>>2]|0)|0;t=Qqa(64)|0;B=0;ib(289,t|0,u|0,w|0,2);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Sqa(t);x=F;y=E;Qb(y|0)}y=Hc[k[(k[t>>2]|0)+8>>2]&511](t)|0;if((y|0)<(Hc[k[(k[t>>2]|0)+12>>2]&511](t)|0)){E=t+8|0;F=s+12|0;x=n+96|0;G=m+8|0;H=m+16|0;I=m+24|0;J=m+32|0;K=m+40|0;L=m+48|0;M=m+56|0;N=m+64|0;O=m+72|0;P=m+80|0;R=m+88|0;S=m+96|0;T=m+104|0;U=m+112|0;V=m+120|0;W=n+8|0;X=n+16|0;Y=n+24|0;Z=n+32|0;_=n+40|0;ba=n+48|0;ca=n+56|0;da=n+64|0;ea=n+72|0;fa=n+80|0;ga=n+88|0;ha=n+104|0;ia=n+112|0;ja=n+120|0;ka=y;do{Fc[k[(k[t>>2]|0)+24>>2]&1023](t,ka);ww(o,j,t,u,w,Hc[k[(k[o>>2]|0)+112>>2]&511](o)|0);xw(o,l,t,u,w,Hc[k[(k[o>>2]|0)+112>>2]&511](o)|0);nd[k[(k[a>>2]|0)+48>>2]&1023](a,g,t);nd[k[(k[v>>2]|0)+48>>2]&1023](v,h,t);C=D*+p[g>>3]+A*+p[h>>3];yw(o,e,i,t);z=+p[E>>3]*+p[e>>3]*+p[f>>3];p[c>>3]=C*z*.5;la=z*+$(+C)*.5;p[d>>3]=la;ZX(j,1,4,1,c,1,1,0,l,1,4,0,m,0)|0;ZX(j,1,4,1,d,1,1,0,j,1,4,0,n,0)|0;y=k[F>>2]|0;la=+p[m>>3]+ +p[y>>3];p[y>>3]=la;ma=y+8|0;C=+p[G>>3]+ +p[ma>>3];p[ma>>3]=C;na=y+16|0;z=+p[H>>3]+ +p[na>>3];p[na>>3]=z;oa=y+24|0;pa=+p[I>>3]+ +p[oa>>3];p[oa>>3]=pa;qa=y+32|0;ra=+p[J>>3]+ +p[qa>>3];p[qa>>3]=ra;sa=y+40|0;ta=+p[K>>3]+ +p[sa>>3];p[sa>>3]=ta;va=y+48|0;wa=+p[L>>3]+ +p[va>>3];p[va>>3]=wa;xa=y+56|0;ya=+p[M>>3]+ +p[xa>>3];p[xa>>3]=ya;za=y+64|0;Aa=+p[N>>3]+ +p[za>>3];p[za>>3]=Aa;Ba=y+72|0;Ca=+p[O>>3]+ +p[Ba>>3];p[Ba>>3]=Ca;Da=y+80|0;Ea=+p[P>>3]+ +p[Da>>3];p[Da>>3]=Ea;Fa=y+88|0;Ga=+p[R>>3]+ +p[Fa>>3];p[Fa>>3]=Ga;Ha=y+96|0;Ia=+p[S>>3]+ +p[Ha>>3];p[Ha>>3]=Ia;Ja=y+104|0;Ka=+p[T>>3]+ +p[Ja>>3];p[Ja>>3]=Ka;La=y+112|0;Ma=+p[U>>3]+ +p[La>>3];p[La>>3]=Ma;Na=y+120|0;Oa=+p[V>>3]+ +p[Na>>3];p[Na>>3]=Oa;p[y>>3]=+p[n>>3]+la;p[ma>>3]=+p[W>>3]+C;p[na>>3]=+p[X>>3]+z;p[oa>>3]=+p[Y>>3]+pa;p[qa>>3]=+p[Z>>3]+ra;p[sa>>3]=+p[_>>3]+ta;p[va>>3]=+p[ba>>3]+wa;p[xa>>3]=+p[ca>>3]+ya;p[za>>3]=+p[da>>3]+Aa;p[Ba>>3]=+p[ea>>3]+Ca;p[Da>>3]=+p[fa>>3]+Ea;p[Fa>>3]=+p[ga>>3]+Ga;p[Ha>>3]=+p[x>>3]+Ia;p[Ja>>3]=+p[ha>>3]+Ka;p[La>>3]=+p[ia>>3]+Ma;p[Na>>3]=+p[ja>>3]+Oa;ka=ka+1|0}while((ka|0)<(Hc[k[(k[t>>2]|0)+12>>2]&511](t)|0))}Ec[k[(k[t>>2]|0)+4>>2]&1023](t);q=s;r=b;return q|0}function nN(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;b=r;r=r+160|0;c=b+144|0;d=b+136|0;e=b+128|0;f=b+120|0;g=b+112|0;h=b+104|0;i=b+96|0;j=b+48|0;l=b+32|0;m=b;n=k[a+32>>2]|0;if(!($p(n)|0)){o=0;r=b;return o|0}Ko(j,k[a+36>>2]|0,2,0);q=a+44|0;dO(k[q>>2]|0,e,358);s=n+16|0;t=oC(k[s>>2]|0,674)|0;u=oC(k[s>>2]|0,677)|0;v=+p[j+24>>3]-+p[j>>3];w=+p[j+32>>3]-+p[j+8>>3];x=+aa(+(v*v+w*w));y=w/x;w=-v/x;s=a+40|0;a=ed[k[(k[n>>2]|0)+160>>2]&511](n,k[k[s>>2]>>2]|0)|0;z=ed[k[(k[n>>2]|0)+160>>2]&511](n,k[(k[s>>2]|0)+4>>2]|0)|0;A=Qqa(64)|0;B=0;va(491,A|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Sqa(A);E=D;F=C;Qb(F|0)}Mja(A,a,z);nd[k[(k[t>>2]|0)+48>>2]&1023](t,h,A);nd[k[(k[u>>2]|0)+48>>2]&1023](u,i,A);Ec[k[(k[A>>2]|0)+4>>2]&1023](A);if(y*+p[h>>3]+w*+p[i>>3]<=0.0){o=0;r=b;return o|0}i=Qqa(68)|0;B=0;ua(165,i|0,k[s>>2]|0,2,k[q>>2]|0,534);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Sqa(i);E=s;F=q;Qb(F|0)}q=Qqa(64)|0;B=0;ib(289,q|0,a|0,z|0,2);s=B;B=0;if(s&1){s=Rb()|0;h=Q;Sqa(q);E=h;F=s;Qb(F|0)}F=Hc[k[(k[q>>2]|0)+8>>2]&511](q)|0;if((F|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0)){s=q+8|0;h=i+12|0;E=m+16|0;A=m+8|0;C=m+24|0;D=F;do{Fc[k[(k[q>>2]|0)+24>>2]&1023](q,D);zw(n,l,q,a,z,Hc[k[(k[n>>2]|0)+112>>2]&511](n)|0);nd[k[(k[t>>2]|0)+48>>2]&1023](t,f,q);nd[k[(k[u>>2]|0)+48>>2]&1023](u,g,q);x=y*+p[f>>3]+w*+p[g>>3];yw(n,d,j,q);p[c>>3]=x*(+p[s>>3]*+p[d>>3]*+p[e>>3]);ZX(l,1,2,1,c,1,1,0,l,1,2,0,m,0)|0;F=k[h>>2]|0;p[F>>3]=+p[m>>3]+ +p[F>>3];G=F+8|0;p[G>>3]=+p[A>>3]+ +p[G>>3];G=F+16|0;p[G>>3]=+p[E>>3]+ +p[G>>3];G=F+24|0;p[G>>3]=+p[C>>3]+ +p[G>>3];D=D+1|0}while((D|0)<(Hc[k[(k[q>>2]|0)+12>>2]&511](q)|0))}Ec[k[(k[q>>2]|0)+4>>2]&1023](q);o=i;r=b;return o|0}function oN(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+112|0;c=b+104|0;d=b+96|0;e=b+88|0;f=b+80|0;g=b+72|0;h=b+64|0;i=b+16|0;j=b;l=k[a+32>>2]|0;if(!($p(l)|0)){m=0;r=b;return m|0}Ko(i,k[a+36>>2]|0,2,0);n=l+16|0;o=oC(k[n>>2]|0,674)|0;q=oC(k[n>>2]|0,677)|0;s=oC(k[n>>2]|0,353)|0;t=+p[i+24>>3]-+p[i>>3];u=+p[i+32>>3]-+p[i+8>>3];v=+aa(+(t*t+u*u));w=u/v;u=-t/v;n=a+40|0;x=ed[k[(k[l>>2]|0)+160>>2]&511](l,k[k[n>>2]>>2]|0)|0;y=ed[k[(k[l>>2]|0)+160>>2]&511](l,k[(k[n>>2]|0)+4>>2]|0)|0;z=Qqa(64)|0;B=0;va(491,z|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Sqa(z);D=C;E=A;Qb(E|0)}Mja(z,x,y);nd[k[(k[o>>2]|0)+48>>2]&1023](o,f,z);nd[k[(k[q>>2]|0)+48>>2]&1023](q,g,z);Ec[k[(k[z>>2]|0)+4>>2]&1023](z);if(w*+p[f>>3]+u*+p[g>>3]>0.0){m=0;r=b;return m|0}g=Qqa(24)|0;B=0;ua(166,g|0,k[n>>2]|0,2,k[a+44>>2]|0,534);a=B;B=0;if(a&1){a=Rb()|0;n=Q;Sqa(g);D=n;E=a;Qb(E|0)}a=Qqa(64)|0;B=0;ib(289,a|0,x|0,y|0,2);n=B;B=0;if(n&1){n=Rb()|0;f=Q;Sqa(a);D=f;E=n;Qb(E|0)}E=Hc[k[(k[a>>2]|0)+8>>2]&511](a)|0;if((E|0)<(Hc[k[(k[a>>2]|0)+12>>2]&511](a)|0)){n=a+8|0;f=g+4|0;D=j+8|0;z=E;do{Fc[k[(k[a>>2]|0)+24>>2]&1023](a,z);zw(l,j,a,x,y,Hc[k[(k[l>>2]|0)+112>>2]&511](l)|0);nd[k[(k[o>>2]|0)+48>>2]&1023](o,d,a);nd[k[(k[q>>2]|0)+48>>2]&1023](q,e,a);nd[k[(k[s>>2]|0)+48>>2]&1023](s,h,a);v=w*+p[d>>3]+u*+p[e>>3];yw(l,c,i,a);t=+p[h>>3]*(v*(+p[n>>3]*+p[c>>3]));E=k[f>>2]|0;p[E>>3]=+p[E>>3]-t*+p[j>>3];A=E+8|0;p[A>>3]=+p[A>>3]-t*+p[D>>3];z=z+1|0}while((z|0)<(Hc[k[(k[a>>2]|0)+12>>2]&511](a)|0))}Ec[k[(k[a>>2]|0)+4>>2]&1023](a);m=g;r=b;return m|0}function pN(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ba=0,ca=0,da=0,ea=0,fa=0;b=r;r=r+320|0;c=b+296|0;d=b+112|0;e=b+104|0;f=b+96|0;g=b+88|0;h=b+80|0;i=b+72|0;j=b+64|0;l=b+16|0;m=b;n=b+160|0;o=b+144|0;q=b+132|0;s=b+120|0;u=k[a+32>>2]|0;if(!($p(u)|0)){v=0;r=b;return v|0}Ko(l,k[a+36>>2]|0,2,0);w=a+44|0;dO(k[w>>2]|0,e,358);x=u+16|0;y=oC(k[x>>2]|0,674)|0;z=oC(k[x>>2]|0,677)|0;A=oC(k[x>>2]|0,309)|0;C=+p[l+24>>3]-+p[l>>3];D=+p[l+32>>3]-+p[l+8>>3];E=+aa(+(C*C+D*D));F=D/E;D=-C/E;x=a+40|0;a=ed[k[(k[u>>2]|0)+160>>2]&511](u,k[k[x>>2]>>2]|0)|0;G=ed[k[(k[u>>2]|0)+160>>2]&511](u,k[(k[x>>2]|0)+4>>2]|0)|0;H=Qqa(64)|0;B=0;va(491,H|0);I=B;B=0;if(I&1){I=Rb()|0;J=Q;Sqa(H);K=J;L=I;Qb(L|0)}Mja(H,a,G);nd[k[(k[y>>2]|0)+48>>2]&1023](y,h,H);nd[k[(k[z>>2]|0)+48>>2]&1023](z,i,H);Ec[k[(k[H>>2]|0)+4>>2]&1023](H);if(F*+p[h>>3]+D*+p[i>>3]>0.0){v=0;r=b;return v|0}i=Qqa(24)|0;B=0;ua(166,i|0,k[x>>2]|0,2,k[w>>2]|0,534);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Sqa(i);K=x;L=w;Qb(L|0)}w=Qqa(64)|0;B=0;ib(289,w|0,a|0,G|0,2);x=B;B=0;if(x&1){x=Rb()|0;h=Q;Sqa(w);K=h;L=x;Qb(L|0)}x=Hc[k[(k[w>>2]|0)+8>>2]&511](w)|0;a:do if((x|0)<(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0)){h=w+8|0;H=i+4|0;I=m+8|0;J=x;while(1){Fc[k[(k[w>>2]|0)+24>>2]&1023](w,J);zw(u,m,w,a,G,Hc[k[(k[u>>2]|0)+112>>2]&511](u)|0);nd[k[(k[y>>2]|0)+48>>2]&1023](y,f,w);nd[k[(k[z>>2]|0)+48>>2]&1023](z,g,w);nd[k[(k[A>>2]|0)+48>>2]&1023](A,j,w);E=+$(+(+p[j>>3]));p[t>>3]=E;M=k[t+4>>2]|0;if(M>>>0>2146435072|(M|0)==2146435072&(k[t>>2]|0)>>>0>0)break;E=F*+p[f>>3]+D*+p[g>>3];yw(u,d,l,w);C=+p[j>>3]*(E*(+p[h>>3]*+p[d>>3]*+p[e>>3]));M=k[H>>2]|0;p[M>>3]=+p[M>>3]-C*+p[m>>3];N=M+8|0;p[N>>3]=+p[N>>3]-C*+p[I>>3];J=J+1|0;if((J|0)>=(Hc[k[(k[w>>2]|0)+12>>2]&511](w)|0))break a}J=n+56|0;I=n+4|0;k[n>>2]=27524;k[J>>2]=27544;B=0;wa(508,n+56|0,I|0);H=B;B=0;if(H&1){H=Rb()|0;O=Q;P=H;vva(J);Qb(P|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[J>>2]=27488;B=0;va(448,I|0);H=B;B=0;do if(H&1){h=Rb()|0;R=Q;S=h}else{k[I>>2]=27560;h=n+36|0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[n+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,I|0,c|0);N=B;B=0;if(N&1){N=Rb()|0;M=Q;Yua(c);Yua(h);Ava(I);R=M;S=N;break}Yua(c);B=0;N=Ia(40,n|0,80855,55)|0;M=B;B=0;b:do if(!(M&1)?(B=0,Xa(239,N|0,0)|0,T=B,B=0,!(T&1)):0){T=Ab(20)|0;B=0;eb(502,o|0,80502,78);U=B;B=0;do if(!(U&1)){B=0;eb(502,q|0,80911,34);V=B;B=0;if(V&1){V=Rb()|0;W=Q;Yua(o);X=W;Y=V;break}B=0;wa(510,s|0,I|0);V=B;B=0;if(V&1){V=Rb()|0;Z=Q;_=V;ba=1}else{B=0;ua(163,T|0,o|0,q|0,922,s|0);V=B;B=0;if(V&1)ca=1;else{B=0;eb(503,T|0,1240,229);B=0;ca=0}V=Rb()|0;W=Q;Yua(s);Z=W;_=V;ba=ca}Yua(q);Yua(o);if(ba){X=Z;Y=_}else{da=Z;ea=_;break b}}else{V=Rb()|0;X=Q;Y=V}while(0);zb(T|0);da=X;ea=Y}else fa=27;while(0);if((fa|0)==27){N=Rb()|0;da=Q;ea=N}k[n>>2]=27468;k[J>>2]=27488;k[I>>2]=27560;Yua(h);Ava(I);vva(J);K=da;L=ea;Qb(L|0)}while(0);O=R;P=S;vva(J);Qb(P|0)}while(0);Ec[k[(k[w>>2]|0)+4>>2]&1023](w);v=i;r=b;return v|0}
+function yi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0.0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,_a=0;d=r;r=r+928|0;e=d+908|0;f=d+880|0;g=d+744|0;h=d+896|0;i=d+592|0;j=d+884|0;l=d+440|0;m=d+728|0;n=d+304|0;o=d+576|0;p=d+168|0;q=d+152|0;s=d+16|0;t=d;u=a+16|0;SX(k[u>>2]|0,7,0);v=g+56|0;w=g+4|0;k[g>>2]=27524;k[v>>2]=27544;B=0;wa(508,g+56|0,w|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;z=x;vva(v);Qb(z|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[v>>2]=27488;B=0;va(448,w|0);x=B;B=0;do if(x&1){A=Rb()|0;C=Q;D=A}else{k[w>>2]=27560;A=g+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,w|0,e|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(e);Yua(A);Ava(w);C=F;D=E;break}Yua(e);B=0;Ia(40,g|0,149177,1)|0;E=B;B=0;do if(!(E&1)?(B=0,wa(510,h|0,w|0),F=B,B=0,!(F&1)):0){B=0;ya(425,h|0)|0;F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(h);H=G;I=F;break}Yua(h);k[g>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);F=i+56|0;G=i+4|0;k[i>>2]=27524;k[F>>2]=27544;B=0;wa(508,i+56|0,G|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;L=J;vva(F);Qb(L|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[F>>2]=27488;B=0;va(448,G|0);J=B;B=0;do if(J&1){M=Rb()|0;N=Q;O=M}else{k[G>>2]=27560;M=i+36|0;k[M>>2]=0;k[M+4>>2]=0;k[M+8>>2]=0;k[M+12>>2]=0;k[i+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,G|0,e|0);P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(e);Yua(M);Ava(G);N=R;O=P;break}Yua(e);B=0;P=Ia(40,i|0,65642,3)|0;R=B;B=0;do if(((((!(R&1)?(k[P+(k[(k[P>>2]|0)+-12>>2]|0)+12>>2]=40,S=P+(k[(k[P>>2]|0)+-12>>2]|0)+4|0,k[S>>2]=k[S>>2]&-177|32,B=0,S=Ia(40,P|0,65646,37)|0,T=B,B=0,!(T&1)):0)?(B=0,U=+Za(1,k[u>>2]|0,1,2),T=B,B=0,!(T&1)):0)?(B=0,T=Sa(1,S|0,+U)|0,S=B,B=0,!(S&1)):0)?(B=0,Ia(40,T|0,149177,1)|0,T=B,B=0,!(T&1)):0)?(B=0,wa(510,j|0,G|0),T=B,B=0,!(T&1)):0){B=0;ya(425,j|0)|0;T=B;B=0;if(T&1){T=Rb()|0;S=Q;Yua(j);V=S;W=T;break}Yua(j);k[i>>2]=27468;k[F>>2]=27488;k[G>>2]=27560;Yua(M);Ava(G);vva(F);T=l+56|0;S=l+4|0;k[l>>2]=27524;k[T>>2]=27544;B=0;wa(508,l+56|0,S|0);X=B;B=0;if(X&1){X=Rb()|0;Y=Q;Z=X;vva(T);Qb(Z|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[T>>2]=27488;B=0;va(448,S|0);X=B;B=0;do if(X&1){_=Rb()|0;$=Q;aa=_}else{k[S>>2]=27560;_=l+36|0;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0;k[l+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,S|0,e|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;Yua(e);Yua(_);Ava(S);$=ca;aa=ba;break}Yua(e);B=0;ba=Ia(40,l|0,65642,3)|0;ca=B;B=0;do if(ca&1)da=91;else{k[ba+(k[(k[ba>>2]|0)+-12>>2]|0)+12>>2]=40;ea=ba+(k[(k[ba>>2]|0)+-12>>2]|0)+4|0;k[ea>>2]=k[ea>>2]&-177|32;B=0;ea=Ia(40,ba|0,65684,27)|0;fa=B;B=0;if(fa&1){da=91;break}B=0;U=+Za(1,k[u>>2]|0,3,4);fa=B;B=0;if(fa&1){da=91;break}B=0;fa=Sa(1,ea|0,+U)|0;ea=B;B=0;if(ea&1){da=91;break}B=0;Ia(40,fa|0,149177,1)|0;fa=B;B=0;if(fa&1){da=91;break}B=0;wa(510,m|0,S|0);fa=B;B=0;if(fa&1){da=91;break}B=0;ya(425,m|0)|0;fa=B;B=0;if(fa&1){fa=Rb()|0;ea=Q;Yua(m);ga=ea;ha=fa;break}Yua(m);k[l>>2]=27468;k[T>>2]=27488;k[S>>2]=27560;Yua(_);Ava(S);vva(T);fa=n+56|0;ea=n+4|0;k[n>>2]=27524;k[fa>>2]=27544;B=0;wa(508,n+56|0,ea|0);ia=B;B=0;if(ia&1){ia=Rb()|0;ja=Q;ka=ia;vva(fa);Qb(ka|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[fa>>2]=27488;B=0;va(448,ea|0);ia=B;B=0;do if(ia&1){la=Rb()|0;ma=Q;na=la}else{k[ea>>2]=27560;la=n+36|0;k[la>>2]=0;k[la+4>>2]=0;k[la+8>>2]=0;k[la+12>>2]=0;k[n+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,ea|0,e|0);oa=B;B=0;if(oa&1){oa=Rb()|0;pa=Q;Yua(e);Yua(la);Ava(ea);ma=pa;na=oa;break}Yua(e);B=0;Ia(40,n|0,149177,1)|0;oa=B;B=0;do if(oa&1)da=94;else{B=0;wa(510,o|0,ea|0);pa=B;B=0;if(pa&1){da=94;break}B=0;ya(425,o|0)|0;pa=B;B=0;if(pa&1){pa=Rb()|0;qa=Q;Yua(o);ra=qa;sa=pa;break}Yua(o);k[n>>2]=27468;k[fa>>2]=27488;k[ea>>2]=27560;Yua(la);Ava(ea);vva(fa);pa=p+56|0;qa=p+4|0;k[p>>2]=27524;k[pa>>2]=27544;B=0;wa(508,p+56|0,qa|0);ta=B;B=0;if(ta&1){ta=Rb()|0;ua=Q;xa=ta;vva(pa);Qb(xa|0)}k[p+128>>2]=0;k[p+132>>2]=-1;k[p>>2]=27468;k[pa>>2]=27488;B=0;va(448,qa|0);ta=B;B=0;do if(ta&1){za=Rb()|0;Aa=Q;Ba=za}else{k[qa>>2]=27560;za=p+36|0;k[za>>2]=0;k[za+4>>2]=0;k[za+8>>2]=0;k[za+12>>2]=0;k[p+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,qa|0,e|0);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Da=Q;Yua(e);Yua(za);Ava(qa);Aa=Da;Ba=Ca;break}Yua(e);B=0;Ca=Ia(40,p|0,65712,23)|0;Da=B;B=0;do if(Da&1)da=97;else{B=0;Ea=Ia(41,k[u>>2]|0,0,7)|0;Fa=B;B=0;if(Fa&1){da=97;break}B=0;Fa=Xa(242,Ca|0,Ea|0)|0;Ea=B;B=0;if(Ea&1){da=97;break}B=0;Ea=Ia(40,Fa|0,65736,5)|0;Fa=B;B=0;if(Fa&1){da=97;break}B=0;Fa=Ia(42,k[u>>2]|0,0,7)|0;Ga=B;B=0;if(Ga&1){da=97;break}B=0;Ga=Xa(242,Ea|0,Fa|0)|0;Fa=B;B=0;if(Fa&1){da=97;break}B=0;Fa=Ia(40,Ga|0,65742,5)|0;Ga=B;B=0;if(Ga&1){da=97;break}B=0;Ga=Ia(43,k[u>>2]|0,0,7)|0;Ea=B;B=0;if(Ea&1){da=97;break}B=0;Ea=Xa(242,Fa|0,Ga|0)|0;Ga=B;B=0;if(Ga&1){da=97;break}B=0;Ia(40,Ea|0,65748,4)|0;Ea=B;B=0;if(Ea&1){da=97;break}B=0;wa(510,q|0,qa|0);Ea=B;B=0;if(Ea&1){da=97;break}B=0;ya(425,q|0)|0;Ea=B;B=0;if(Ea&1){Ea=Rb()|0;Ga=Q;Yua(q);Ha=Ga;Ja=Ea;break}Yua(q);k[p>>2]=27468;k[pa>>2]=27488;k[qa>>2]=27560;Yua(za);Ava(qa);vva(pa);Ea=s+56|0;Ga=s+4|0;k[s>>2]=27524;k[Ea>>2]=27544;B=0;wa(508,s+56|0,Ga|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ka=Q;La=Fa;vva(Ea);Qb(La|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[Ea>>2]=27488;B=0;va(448,Ga|0);Fa=B;B=0;do if(Fa&1){Ma=Rb()|0;Na=Q;Oa=Ma}else{k[Ga>>2]=27560;Ma=s+36|0;k[Ma>>2]=0;k[Ma+4>>2]=0;k[Ma+8>>2]=0;k[Ma+12>>2]=0;k[s+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,Ga|0,e|0);Pa=B;B=0;if(Pa&1){Pa=Rb()|0;Qa=Q;Yua(e);Yua(Ma);Ava(Ga);Na=Qa;Oa=Pa;break}Yua(e);B=0;Ia(40,s|0,149177,1)|0;Pa=B;B=0;do if(!(Pa&1)){B=0;wa(510,t|0,Ga|0);Qa=B;B=0;if(Qa&1){da=100;break}B=0;ya(425,t|0)|0;Qa=B;B=0;if(Qa&1){Qa=Rb()|0;Ra=Q;Yua(t);Ta=Ra;Ua=Qa;break}else{Yua(t);k[s>>2]=27468;k[Ea>>2]=27488;k[Ga>>2]=27560;Yua(Ma);Ava(Ga);vva(Ea);Qa=a+44|0;Ra=(nO(k[Qa>>2]|0,949)|0)+4|0;Va=k[Ra>>2]|0;Ra=(nO(k[Qa>>2]|0,950)|0)+4|0;Wa=k[Ra>>2]|0;lO(k[Qa>>2]|0,f,951);Tsa(k[f>>2]|0)|0;k[b>>2]=k[Va>>2];k[c>>2]=k[Wa>>2];r=d;return}}else da=100;while(0);if((da|0)==100){Pa=Rb()|0;Ta=Q;Ua=Pa}k[s>>2]=27468;k[Ea>>2]=27488;k[Ga>>2]=27560;Yua(Ma);Ava(Ga);vva(Ea);Ya=Ta;_a=Ua;Qb(_a|0)}while(0);Ka=Na;La=Oa;vva(Ea);Qb(La|0)}while(0);if((da|0)==97){Ca=Rb()|0;Ha=Q;Ja=Ca}k[p>>2]=27468;k[pa>>2]=27488;k[qa>>2]=27560;Yua(za);Ava(qa);vva(pa);Ya=Ha;_a=Ja;Qb(_a|0)}while(0);ua=Aa;xa=Ba;vva(pa);Qb(xa|0)}while(0);if((da|0)==94){oa=Rb()|0;ra=Q;sa=oa}k[n>>2]=27468;k[fa>>2]=27488;k[ea>>2]=27560;Yua(la);Ava(ea);vva(fa);Ya=ra;_a=sa;Qb(_a|0)}while(0);ja=ma;ka=na;vva(fa);Qb(ka|0)}while(0);if((da|0)==91){ba=Rb()|0;ga=Q;ha=ba}k[l>>2]=27468;k[T>>2]=27488;k[S>>2]=27560;Yua(_);Ava(S);vva(T);Ya=ga;_a=ha;Qb(_a|0)}while(0);Y=$;Z=aa;vva(T);Qb(Z|0)}else da=88;while(0);if((da|0)==88){P=Rb()|0;V=Q;W=P}k[i>>2]=27468;k[F>>2]=27488;k[G>>2]=27560;Yua(M);Ava(G);vva(F);Ya=V;_a=W;Qb(_a|0)}while(0);K=N;L=O;vva(F);Qb(L|0)}else da=85;while(0);if((da|0)==85){E=Rb()|0;H=Q;I=E}k[g>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);Ya=H;_a=I;Qb(_a|0)}while(0);y=C;z=D;vva(v);Qb(z|0)}function zi(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;b=r;r=r+368|0;c=b+344|0;d=b+208|0;e=b+196|0;f=b+184|0;g=b+36|0;h=b+48|0;i=b+24|0;j=b+12|0;l=b;k[a+4>>2]=0;m=qZ()|0;if(!(Ita(m,68695)|0)){n=d+56|0;o=d+4|0;k[d>>2]=27524;k[n>>2]=27544;B=0;wa(508,d+56|0,o|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;s=p;vva(n);Qb(s|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[n>>2]=27488;B=0;va(448,o|0);p=B;B=0;do if(p&1){t=Rb()|0;u=Q;v=t}else{k[o>>2]=27560;t=d+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,o|0,c|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(c);Yua(t);Ava(o);u=x;v=w;break}Yua(c);B=0;w=Ia(40,d|0,67373,50)|0;x=B;B=0;a:do if(!(x&1)?(B=0,Xa(239,w|0,0)|0,y=B,B=0,!(y&1)):0){y=Ab(20)|0;B=0;eb(502,e|0,67424,87);z=B;B=0;do if(!(z&1)){B=0;eb(502,f|0,68854,19);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(e);D=A;E=C;break}B=0;wa(510,g|0,o|0);C=B;B=0;if(C&1){C=Rb()|0;F=Q;G=C;H=1}else{B=0;ua(163,y|0,e|0,f|0,115,g|0);C=B;B=0;if(C&1)I=1;else{B=0;eb(503,y|0,1240,229);B=0;I=0}C=Rb()|0;A=Q;Yua(g);F=A;G=C;H=I}Yua(f);Yua(e);if(H){D=G;E=F}else{J=G;K=F;break a}}else{C=Rb()|0;D=C;E=Q}while(0);zb(y|0);J=D;K=E}else L=17;while(0);if((L|0)==17){w=Rb()|0;J=w;K=Q}k[d>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);M=K;N=J;Qb(N|0)}while(0);q=u;s=v;vva(n);Qb(s|0)}if(!(Ita(m,145123)|0)){k[a>>2]=1;if(!m){r=b;return}Tqa(m);r=b;return}b=h+56|0;m=h+4|0;k[h>>2]=27524;k[b>>2]=27544;B=0;wa(508,h+56|0,m|0);a=B;B=0;if(a&1){a=Rb()|0;O=Q;P=a;vva(b);Qb(P|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[b>>2]=27488;B=0;va(448,m|0);a=B;B=0;do if(a&1){s=Rb()|0;R=Q;S=s}else{k[m>>2]=27560;s=h+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,m|0,c|0);n=B;B=0;if(n&1){n=Rb()|0;v=Q;Yua(c);Yua(s);Ava(m);R=v;S=n;break}Yua(c);B=0;n=Ia(40,h|0,68874,20)|0;v=B;B=0;b:do if(!(v&1)?(B=0,Xa(239,n|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,i|0,67424,87);q=B;B=0;do if(!(q&1)){B=0;eb(502,j|0,68854,19);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(i);T=J;U=K;break}B=0;wa(510,l|0,m|0);K=B;B=0;if(K&1){K=Rb()|0;V=1;W=Q;X=K}else{B=0;ua(163,u|0,i|0,j|0,122,l|0);K=B;B=0;if(K&1)Y=1;else{B=0;eb(503,u|0,1240,229);B=0;Y=0}K=Rb()|0;J=Q;Yua(l);V=Y;W=J;X=K}Yua(j);Yua(i);if(V){T=X;U=W}else{Z=W;_=X;break b}}else{K=Rb()|0;T=K;U=Q}while(0);zb(u|0);Z=U;_=T}else L=44;while(0);if((L|0)==44){n=Rb()|0;Z=Q;_=n}k[h>>2]=27468;k[b>>2]=27488;k[m>>2]=27560;Yua(s);Ava(m);vva(b);M=Z;N=_;Qb(N|0)}while(0);O=R;P=S;vva(b);Qb(P|0)}function Ai(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;c=r;r=r+368|0;d=c+344|0;e=c+208|0;f=c+196|0;g=c+184|0;h=c+36|0;i=c+48|0;j=c+24|0;l=c+12|0;m=c;switch(cZ()|0){case 976:{n=Qqa(12)|0;k[n>>2]=28388;k[n+8>>2]=b;o=n+4|0;k[o>>2]=0;if(!b){k[a>>2]=n;r=c;return}B=0;p=ya(422,(b>>>0>536870911?-1:b<<3)|0)|0;q=B;B=0;if(q&1){q=Rb()|0;s=Q;Sqa(n);t=s;u=q;Qb(u|0)}else{WEa(p|0,0,b<<3|0)|0;k[o>>2]=p;k[a>>2]=n;r=c;return}break}case 977:{c=e+56|0;n=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,n|0);a=B;B=0;if(a&1){a=Rb()|0;v=Q;w=a;vva(c);Qb(w|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,n|0);a=B;B=0;do if(a&1){p=Rb()|0;x=Q;y=p}else{k[n>>2]=27560;p=e+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,n|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;b=Q;Yua(d);Yua(p);Ava(n);x=b;y=o;break}Yua(d);B=0;o=Ia(40,e|0,126559,39)|0;b=B;B=0;a:do if(!(b&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,f|0,67124,96);s=B;B=0;do if(!(s&1)){B=0;eb(502,g|0,126695,7);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(f);C=z;D=A;break}B=0;wa(510,h|0,n|0);A=B;B=0;if(A&1){A=Rb()|0;E=Q;F=A;G=1}else{B=0;ua(163,q|0,f|0,g|0,94,h|0);A=B;B=0;if(A&1)H=1;else{B=0;eb(503,q|0,1240,229);B=0;H=0}A=Rb()|0;z=Q;Yua(h);E=z;F=A;G=H}Yua(g);Yua(f);if(G){C=F;D=E}else{I=F;J=E;break a}}else{A=Rb()|0;C=A;D=Q}while(0);zb(q|0);I=C;J=D}else K=22;while(0);if((K|0)==22){o=Rb()|0;I=o;J=Q}k[e>>2]=27468;k[c>>2]=27488;k[n>>2]=27560;Yua(p);Ava(n);vva(c);t=J;u=I;Qb(u|0)}while(0);v=x;w=y;vva(c);Qb(w|0);break}default:{w=i+56|0;c=i+4|0;k[i>>2]=27524;k[w>>2]=27544;B=0;wa(508,i+56|0,c|0);y=B;B=0;if(y&1){y=Rb()|0;L=Q;M=y;vva(w);Qb(M|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[w>>2]=27488;B=0;va(448,c|0);y=B;B=0;do if(y&1){x=Rb()|0;N=Q;O=x}else{k[c>>2]=27560;x=i+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,c|0,d|0);v=B;B=0;if(v&1){v=Rb()|0;I=Q;Yua(d);Yua(x);Ava(c);N=I;O=v;break}Yua(d);B=0;v=Ia(40,i|0,126703,30)|0;I=B;B=0;b:do if(!(I&1)?(B=0,Xa(239,v|0,0)|0,J=B,B=0,!(J&1)):0){J=Ab(20)|0;B=0;eb(502,j|0,67124,96);n=B;B=0;do if(!(n&1)){B=0;eb(502,l|0,126695,7);e=B;B=0;if(e&1){e=Rb()|0;D=Q;Yua(j);P=e;R=D;break}B=0;wa(510,m|0,c|0);D=B;B=0;if(D&1){D=Rb()|0;S=1;T=Q;U=D}else{B=0;ua(163,J|0,j|0,l|0,98,m|0);D=B;B=0;if(D&1)V=1;else{B=0;eb(503,J|0,1240,229);B=0;V=0}D=Rb()|0;e=Q;Yua(m);S=V;T=e;U=D}Yua(l);Yua(j);if(S){P=U;R=T}else{W=T;X=U;break b}}else{D=Rb()|0;P=D;R=Q}while(0);zb(J|0);W=R;X=P}else K=45;while(0);if((K|0)==45){v=Rb()|0;W=Q;X=v}k[i>>2]=27468;k[w>>2]=27488;k[c>>2]=27560;Yua(x);Ava(c);vva(w);t=W;u=X;Qb(u|0)}while(0);L=N;M=O;vva(w);Qb(M|0)}}}function Bi(a){a=a|0;return}function Ci(a){a=a|0;Sqa(a);return}function Di(a){a=a|0;jj(a);return}function Ei(a){a=a|0;return 554}function Fi(a){a=a|0;var b=0,c=0,d=0;b=Qqa(12)|0;k[b>>2]=28236;c=a+4|0;a=k[c+4>>2]|0;d=b+4|0;k[d>>2]=k[c>>2];k[d+4>>2]=a;return b|0}function Gi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;d=r;r=r+176|0;c=d+152|0;b=d+16|0;e=d;f=b+56|0;g=b+4|0;k[b>>2]=27524;k[f>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,66629,22)|0;p=B;B=0;if((((!(p&1)?(B=0,p=ya(427,k[a+8>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(p)|0,B=0,s=Ia(40,o|0,p|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,Ia(40,s|0,66652,44)|0,s=B,B=0,!(s&1)):0)?(B=0,wa(510,e|0,g|0),s=B,B=0,!(s&1)):0){B=0;ya(424,e|0)|0;s=B;B=0;if(!(s&1)){Yua(e);k[b>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);r=d;return}s=Rb()|0;q=Q;Yua(e);t=q;u=s;k[b>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(u|0)}s=Rb()|0;t=Q;u=s;k[b>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(u|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function Hi(a){a=a|0;return k[a+8>>2]|0}function Ii(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86577,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,67,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Ji(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85796,25)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,68,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Ki(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85760,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,69,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function Li(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85760,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,70,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function Mi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,71,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Ni(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;b=r;r=r+192|0;d=b+176|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;b=e+56|0;i=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(b);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+8>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,86504,44)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,66550,78);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,72,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}while(0);l=o;m=p;vva(b);Qb(m|0)}function Oi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86480,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,73,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Pi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86450,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,74,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function Qi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,75,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function Ri(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,76,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function Si(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85695,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,77,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function Ti(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86364,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,78,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Ui(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86343,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,79,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Vi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85673,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,80,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Wi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85648,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,81,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Xi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,82197,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,83,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Yi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85601,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,84,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Zi(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;c=e+56|0;i=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(c);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+8>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,82170,26)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,66550,78);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86106,8);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,87,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}while(0);l=o;m=p;vva(c);Qb(m|0)}function _i(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86273,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,88,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function $i(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86245,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,89,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function aj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,90,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function bj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,91,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function cj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,82144,25)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,85,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function dj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,82144,25)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,86,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function ej(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86169,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,92,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function fj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86150,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,93,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function gj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85465,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,94,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function hj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85340,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,95,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function ij(a,b){a=a|0;b=b|0;k[a+8>>2]=b;return}function jj(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=d+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(p);Ava(l);q=u;s=t;break}Yua(c);B=0;Ia(40,d|0,66697,14)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,e|0,l|0),u=B,B=0,!(u&1)):0){B=0;ya(424,e|0)|0;u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);u=f+56|0;v=f+4|0;k[f>>2]=27524;k[u>>2]=27544;B=0;wa(508,f+56|0,v|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(u);Qb(A|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[v>>2]=27560;C=f+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(c);Yua(C);Ava(v);D=G;E=F;break}Yua(c);B=0;F=Ia(40,f|0,66712,10)|0;G=B;B=0;do if((((((!(G&1)?(H=a+8|0,B=0,I=Xa(242,F|0,k[H>>2]|0)|0,J=B,B=0,!(J&1)):0)?(B=0,J=Ia(40,I|0,144166,2)|0,I=B,B=0,!(I&1)):0)?(B=0,I=ya(427,k[H>>2]|0)|0,H=B,B=0,!(H&1)):0)?(H=Lta(I)|0,B=0,K=Ia(40,J|0,I|0,H|0)|0,H=B,B=0,!(H&1)):0)?(B=0,Ia(40,K|0,145593,2)|0,K=B,B=0,!(K&1)):0)?(B=0,wa(510,g|0,v|0),K=B,B=0,!(K&1)):0){B=0;ya(424,g|0)|0;K=B;B=0;if(K&1){K=Rb()|0;H=Q;Yua(g);L=H;M=K;break}Yua(g);k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);K=h+56|0;H=h+4|0;k[h>>2]=27524;k[K>>2]=27544;B=0;wa(508,h+56|0,H|0);I=B;B=0;if(I&1){I=Rb()|0;N=Q;O=I;vva(K);Qb(O|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[K>>2]=27488;B=0;va(448,H|0);I=B;B=0;do if(I&1){J=Rb()|0;P=Q;R=J}else{k[H>>2]=27560;J=h+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,H|0,c|0);S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(c);Yua(J);Ava(H);P=T;R=S;break}Yua(c);B=0;S=Ia(40,h|0,109037,10)|0;T=B;B=0;do if(!(T&1)){B=0;U=Xa(245,S|0,k[a+4>>2]|0)|0;V=B;B=0;if(V&1){W=48;break}B=0;Ia(40,U|0,149177,1)|0;U=B;B=0;if(U&1){W=48;break}B=0;wa(510,i|0,H|0);U=B;B=0;if(U&1){W=48;break}B=0;ya(424,i|0)|0;U=B;B=0;if(U&1){U=Rb()|0;V=Q;Yua(i);X=V;Y=U;break}else{Yua(i);k[h>>2]=27468;k[K>>2]=27488;k[H>>2]=27560;Yua(J);Ava(H);vva(K);r=b;return}}else W=48;while(0);if((W|0)==48){S=Rb()|0;X=Q;Y=S}k[h>>2]=27468;k[K>>2]=27488;k[H>>2]=27560;Yua(J);Ava(H);vva(K);Z=X;_=Y;Qb(_|0)}while(0);N=P;O=R;vva(K);Qb(O|0)}else W=45;while(0);if((W|0)==45){F=Rb()|0;L=Q;M=F}k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);Z=L;_=M;Qb(_|0)}while(0);z=D;A=E;vva(u);Qb(A|0)}else W=42;while(0);if((W|0)==42){t=Rb()|0;w=Q;x=t}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Z=w;_=x;Qb(_|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}function kj(a){a=a|0;Sqa(a);return}function lj(a){a=a|0;Tj(a);return}function mj(a){a=a|0;return 554}function nj(a){a=a|0;var b=0,c=0,d=0;b=Qqa(12)|0;k[b>>2]=28084;c=a+4|0;a=k[c+4>>2]|0;d=b+4|0;k[d>>2]=k[c>>2];k[d+4>>2]=a;return b|0}function oj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;d=r;r=r+176|0;c=d+152|0;b=d+16|0;e=d;f=b+56|0;g=b+4|0;k[b>>2]=27524;k[f>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,66629,22)|0;p=B;B=0;if((((!(p&1)?(B=0,p=ya(427,k[a+8>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(p)|0,B=0,s=Ia(40,o|0,p|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,Ia(40,s|0,66652,44)|0,s=B,B=0,!(s&1)):0)?(B=0,wa(510,e|0,g|0),s=B,B=0,!(s&1)):0){B=0;ya(424,e|0)|0;s=B;B=0;if(!(s&1)){Yua(e);k[b>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);r=d;return}s=Rb()|0;q=Q;Yua(e);t=q;u=s;k[b>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(u|0)}s=Rb()|0;t=Q;u=s;k[b>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(u|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function pj(a){a=a|0;return k[a+8>>2]|0}function qj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86577,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,67,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function rj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85796,25)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,68,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function sj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85760,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,69,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function tj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85760,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,70,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function uj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,71,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function vj(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;b=r;r=r+192|0;d=b+176|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;b=e+56|0;i=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(b);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+8>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,86504,44)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,66550,78);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,72,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}while(0);l=o;m=p;vva(b);Qb(m|0)}function wj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86480,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,73,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function xj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86450,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,74,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function yj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,75,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function zj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,76,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function Aj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85695,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,77,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function Bj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86364,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,78,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Cj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86343,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,79,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Dj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85673,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,80,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Ej(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85648,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,81,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Fj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,82197,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,83,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Gj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85601,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,84,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Hj(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;c=e+56|0;i=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(c);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+8>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,82170,26)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,66550,78);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86106,8);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,87,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}while(0);l=o;m=p;vva(c);Qb(m|0)}function Ij(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86273,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,88,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Jj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86245,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,89,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function Kj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,90,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function Lj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,91,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function Mj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,82144,25)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,85,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function Nj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,82144,25)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,86,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function Oj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86169,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,92,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Pj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86150,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,93,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Qj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85465,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,94,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Rj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85340,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,95,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function Sj(a,b){a=a|0;b=b|0;k[a+8>>2]=b;return}function Tj(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=d+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(p);Ava(l);q=u;s=t;break}Yua(c);B=0;Ia(40,d|0,66697,14)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,e|0,l|0),u=B,B=0,!(u&1)):0){B=0;ya(424,e|0)|0;u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);u=f+56|0;v=f+4|0;k[f>>2]=27524;k[u>>2]=27544;B=0;wa(508,f+56|0,v|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(u);Qb(A|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[v>>2]=27560;C=f+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(c);Yua(C);Ava(v);D=G;E=F;break}Yua(c);B=0;F=Ia(40,f|0,66712,10)|0;G=B;B=0;do if((((((!(G&1)?(H=a+8|0,B=0,I=Xa(242,F|0,k[H>>2]|0)|0,J=B,B=0,!(J&1)):0)?(B=0,J=Ia(40,I|0,144166,2)|0,I=B,B=0,!(I&1)):0)?(B=0,I=ya(427,k[H>>2]|0)|0,H=B,B=0,!(H&1)):0)?(H=Lta(I)|0,B=0,K=Ia(40,J|0,I|0,H|0)|0,H=B,B=0,!(H&1)):0)?(B=0,Ia(40,K|0,145593,2)|0,K=B,B=0,!(K&1)):0)?(B=0,wa(510,g|0,v|0),K=B,B=0,!(K&1)):0){B=0;ya(424,g|0)|0;K=B;B=0;if(K&1){K=Rb()|0;H=Q;Yua(g);L=H;M=K;break}Yua(g);k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);K=h+56|0;H=h+4|0;k[h>>2]=27524;k[K>>2]=27544;B=0;wa(508,h+56|0,H|0);I=B;B=0;if(I&1){I=Rb()|0;N=Q;O=I;vva(K);Qb(O|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[K>>2]=27488;B=0;va(448,H|0);I=B;B=0;do if(I&1){J=Rb()|0;P=Q;R=J}else{k[H>>2]=27560;J=h+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,H|0,c|0);S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(c);Yua(J);Ava(H);P=T;R=S;break}Yua(c);B=0;S=Ia(40,h|0,109037,10)|0;T=B;B=0;do if(!(T&1)){B=0;U=Xa(245,S|0,k[a+4>>2]|0)|0;V=B;B=0;if(V&1){W=48;break}B=0;Ia(40,U|0,149177,1)|0;U=B;B=0;if(U&1){W=48;break}B=0;wa(510,i|0,H|0);U=B;B=0;if(U&1){W=48;break}B=0;ya(424,i|0)|0;U=B;B=0;if(U&1){U=Rb()|0;V=Q;Yua(i);X=V;Y=U;break}else{Yua(i);k[h>>2]=27468;k[K>>2]=27488;k[H>>2]=27560;Yua(J);Ava(H);vva(K);r=b;return}}else W=48;while(0);if((W|0)==48){S=Rb()|0;X=Q;Y=S}k[h>>2]=27468;k[K>>2]=27488;k[H>>2]=27560;Yua(J);Ava(H);vva(K);Z=X;_=Y;Qb(_|0)}while(0);N=P;O=R;vva(K);Qb(O|0)}else W=45;while(0);if((W|0)==45){F=Rb()|0;L=Q;M=F}k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);Z=L;_=M;Qb(_|0)}while(0);z=D;A=E;vva(u);Qb(A|0)}else W=42;while(0);if((W|0)==42){t=Rb()|0;w=Q;x=t}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Z=w;_=x;Qb(_|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}function Uj(a){a=a|0;var b=0,c=0;k[a>>2]=28024;b=a+8|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=k[a+12>>2]|0;if(!b)return;if((k[b>>2]|0)!=0?(a=k[b+4>>2]|0,(a|0)!=0):0){c=k[a>>2]|0;if(c)Ec[k[(k[c>>2]|0)+4>>2]&1023](c);Sqa(a)}Sqa(b);return}function Vj(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=28024;b=a+8|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=k[a+12>>2]|0;if(!b){Sqa(a);return}if((k[b>>2]|0)!=0?(c=k[b+4>>2]|0,(c|0)!=0):0){d=k[c>>2]|0;if(d)Ec[k[(k[d>>2]|0)+4>>2]&1023](d);Sqa(c)}Sqa(b);Sqa(a);return}function Wj(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;b=r;r=r+176|0;c=b+152|0;d=b+16|0;e=b;f=d+56|0;g=d+4|0;k[d>>2]=27524;k[f>>2]=27544;B=0;wa(508,d+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=d+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;Ia(40,d|0,66948,45)|0;o=B;B=0;if(!(o&1)?(B=0,wa(510,e|0,g|0),o=B,B=0,!(o&1)):0){B=0;ya(424,e|0)|0;o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(e);q=p;s=o;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(s|0)}Yua(e);k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);fk(a);o=k[a+12>>2]|0;if(!(k[o>>2]|0)){r=b;return}p=k[k[o+4>>2]>>2]|0;Ec[k[(k[p>>2]|0)+8>>2]&1023](p);r=b;return}p=Rb()|0;q=Q;s=p;k[d>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(s|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function Xj(a){a=a|0;Ec[k[(k[a>>2]|0)+8>>2]&1023](a);return}function Yj(a){a=a|0;return -1}function Zj(a){a=a|0;return 921}function _j(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0.0;b=Qqa(40)|0;c=k[a+4>>2]|0;B=0;d=Xa(240,k[a+8>>2]|0,1)|0;e=B;B=0;if(e&1){f=Rb()|0;g=Q;Sqa(b);Qb(f|0)}e=k[a+12>>2]|0;h=k[a+24>>2]|0;i=+p[a+32>>3];k[b>>2]=28024;k[b+4>>2]=c;k[b+16>>2]=0;k[b+20>>2]=0;B=0;wa(512,b+8|0,d|0);d=B;B=0;if(d&1){f=Rb()|0;g=Q;Sqa(b);Qb(f|0)}else{k[b+24>>2]=h;p[b+32>>3]=i;k[b+12>>2]=e;return b|0}return 0}function $j(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,66876,71)|0;q=B;B=0;if(((!(q&1)?(q=k[a+8>>2]|0,s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,127493,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66769,96);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,149525,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,625,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function ak(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;d=r;r=r+208|0;e=d;f=d+192|0;g=d+188|0;h=d+184|0;i=d+48|0;j=d+36|0;l=d+24|0;m=d+12|0;k[h>>2]=1;if(c){c=a+12|0;n=k[c>>2]|0;if(k[n>>2]|0){o=k[k[n+4>>2]>>2]|0;n=Hc[k[(k[o>>2]|0)+52>>2]&511](o)|0;o=k[c>>2]|0;if(!(k[o>>2]|0)){q=0;s=n}else{c=k[k[o+4>>2]>>2]|0;Fc[k[(k[c>>2]|0)+28>>2]&1023](c,g);q=k[g>>2]|0;s=n}}else{q=0;s=0}n=Rqa(q>>>0>536870911?-1:q<<3)|0;if((q|0)>0){c=0;do{p[n+(c<<3)>>3]=+p[s+(c<<3)>>3];c=c+1|0}while((c|0)<(q|0))}if(!(vY()|0)){q=a+8|0;c=(Lta(k[q>>2]|0)|0)+1|0;k[f>>2]=c;jta(f,4,1,b)|0;jta(k[q>>2]|0,k[f>>2]|0,1,b)|0;p[e>>3]=+p[a+32>>3];jta(e,8,1,b)|0;jta(a+24|0,4,1,b)|0;k[i>>2]=3;jta(i,4,1,b)|0;jta(g,4,1,b)|0;jta(h,4,1,b)|0;jta(n,ma(k[h>>2]<<3,k[g>>2]|0)|0,1,b)|0}Tqa(n);if(!s){r=d;return}Tqa(s);r=d;return}d=i+56|0;s=i+4|0;k[i>>2]=27524;k[d>>2]=27544;B=0;wa(508,i+56|0,s|0);n=B;B=0;if(n&1){n=Rb()|0;t=Q;u=n;vva(d);Qb(u|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[d>>2]=27488;B=0;va(448,s|0);n=B;B=0;do if(n&1){b=Rb()|0;v=Q;w=b}else{k[s>>2]=27560;b=i+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[i+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,s|0,e|0);g=B;B=0;if(g&1){g=Rb()|0;h=Q;Yua(e);Yua(b);Ava(s);v=h;w=g;break}Yua(e);B=0;g=Ia(40,i|0,134695,17)|0;h=B;B=0;if(!(h&1)?(B=0,Xa(239,g|0,0)|0,g=B,B=0,!(g&1)):0){g=Ab(20)|0;B=0;eb(502,j|0,66769,96);h=B;B=0;do if(!(h&1)){B=0;eb(502,l|0,66866,9);a=B;B=0;if(a&1){a=Rb()|0;f=Q;Yua(j);x=f;y=a;break}B=0;wa(510,m|0,s|0);a=B;B=0;if(a&1){a=Rb()|0;z=Q;A=a;C=1}else{B=0;ua(163,g|0,j|0,l|0,588,m|0);a=B;B=0;if(a&1)D=1;else{B=0;eb(503,g|0,1240,229);B=0;D=0}a=Rb()|0;f=Q;Yua(m);z=f;A=a;C=D}Yua(l);Yua(j);if(C){x=z;y=A}else{E=z;F=A;k[i>>2]=27468;k[d>>2]=27488;k[s>>2]=27560;Yua(b);Ava(s);vva(d);Qb(F|0)}}else{a=Rb()|0;x=Q;y=a}while(0);zb(g|0);E=x;F=y;k[i>>2]=27468;k[d>>2]=27488;k[s>>2]=27560;Yua(b);Ava(s);vva(d);Qb(F|0)}h=Rb()|0;E=Q;F=h;k[i>>2]=27468;k[d>>2]=27488;k[s>>2]=27560;Yua(b);Ava(s);vva(d);Qb(F|0)}while(0);t=v;u=w;vva(d);Qb(u|0)}function bk(a){a=a|0;var b=0,c=0;b=k[a+8>>2]|0;a=Rqa((Lta(b)|0)+1|0)|0;c=(Lta(b)|0)+1|0;if(!b)yb(142353,68290,137,142345);if(!c)return a|0;TEa(a|0,b|0,c|0)|0;return a|0}function ck(a){a=a|0;return k[a+24>>2]|0}function dk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,108833,37)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,66769,96);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,108997,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,197,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function ek(a){a=a|0;return zY(k[a+8>>2]|0,0)|0}function fk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0;b=r;r=r+624|0;c=b+604|0;d=b+456|0;e=b+592|0;f=b+304|0;g=b+440|0;h=b+152|0;i=b+288|0;j=b+16|0;l=b;m=d+56|0;n=d+4|0;k[d>>2]=27524;k[m>>2]=27544;B=0;wa(508,d+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;q=Q;s=o;vva(m);Qb(s|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){t=Rb()|0;u=Q;v=t}else{k[n>>2]=27560;t=d+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,n|0,c|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(c);Yua(t);Ava(n);u=x;v=w;break}Yua(c);B=0;w=Ia(40,d|0,109048,17)|0;x=B;B=0;do if(((!(x&1)?(B=0,y=Xa(242,w|0,k[a+4>>2]|0)|0,z=B,B=0,!(z&1)):0)?(B=0,Ia(40,y|0,149177,1)|0,y=B,B=0,!(y&1)):0)?(B=0,wa(510,e|0,n|0),y=B,B=0,!(y&1)):0){B=0;ya(424,e|0)|0;y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(e);A=z;C=y;break}Yua(e);k[d>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);y=f+56|0;z=f+4|0;k[f>>2]=27524;k[y>>2]=27544;B=0;wa(508,f+56|0,z|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;F=D;vva(y);Qb(F|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[y>>2]=27488;B=0;va(448,z|0);D=B;B=0;do if(D&1){G=Rb()|0;H=Q;I=G}else{k[z>>2]=27560;G=f+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,z|0,c|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(c);Yua(G);Ava(z);H=K;I=J;break}Yua(c);B=0;J=Ia(40,f|0,109066,17)|0;K=B;B=0;do if(((!(K&1)?(L=k[a+8>>2]|0,M=Lta(L)|0,B=0,N=Ia(40,J|0,L|0,M|0)|0,M=B,B=0,!(M&1)):0)?(B=0,Ia(40,N|0,149177,1)|0,N=B,B=0,!(N&1)):0)?(B=0,wa(510,g|0,z|0),N=B,B=0,!(N&1)):0){B=0;ya(424,g|0)|0;N=B;B=0;if(N&1){N=Rb()|0;M=Q;Yua(g);O=M;P=N;break}Yua(g);k[f>>2]=27468;k[y>>2]=27488;k[z>>2]=27560;Yua(G);Ava(z);vva(y);N=h+56|0;M=h+4|0;k[h>>2]=27524;k[N>>2]=27544;B=0;wa(508,h+56|0,M|0);L=B;B=0;if(L&1){L=Rb()|0;R=Q;S=L;vva(N);Qb(S|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[N>>2]=27488;B=0;va(448,M|0);L=B;B=0;do if(L&1){T=Rb()|0;U=Q;V=T}else{k[M>>2]=27560;T=h+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,M|0,c|0);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Yua(c);Yua(T);Ava(M);U=X;V=W;break}Yua(c);B=0;W=Ia(40,h|0,109084,17)|0;X=B;B=0;do if(X&1)Y=60;else{B=0;Z=Xa(242,W|0,k[a+24>>2]|0)|0;_=B;B=0;if(_&1){Y=60;break}B=0;Ia(40,Z|0,149177,1)|0;Z=B;B=0;if(Z&1){Y=60;break}B=0;wa(510,i|0,M|0);Z=B;B=0;if(Z&1){Y=60;break}B=0;ya(424,i|0)|0;Z=B;B=0;if(Z&1){Z=Rb()|0;_=Q;Yua(i);$=_;aa=Z;break}Yua(i);k[h>>2]=27468;k[N>>2]=27488;k[M>>2]=27560;Yua(T);Ava(M);vva(N);Z=j+56|0;_=j+4|0;k[j>>2]=27524;k[Z>>2]=27544;B=0;wa(508,j+56|0,_|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;da=ba;vva(Z);Qb(da|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[Z>>2]=27488;B=0;va(448,_|0);ba=B;B=0;do if(ba&1){ea=Rb()|0;fa=Q;ga=ea}else{k[_>>2]=27560;ea=j+36|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,_|0,c|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(c);Yua(ea);Ava(_);fa=ia;ga=ha;break}Yua(c);B=0;ha=Ia(40,j|0,109102,17)|0;ia=B;B=0;do if(!(ia&1)){B=0;ja=Sa(1,ha|0,+(+p[a+32>>3]))|0;ka=B;B=0;if(ka&1){Y=63;break}B=0;Ia(40,ja|0,149177,1)|0;ja=B;B=0;if(ja&1){Y=63;break}B=0;wa(510,l|0,_|0);ja=B;B=0;if(ja&1){Y=63;break}B=0;ya(424,l|0)|0;ja=B;B=0;if(ja&1){ja=Rb()|0;ka=Q;Yua(l);la=ka;ma=ja;break}else{Yua(l);k[j>>2]=27468;k[Z>>2]=27488;k[_>>2]=27560;Yua(ea);Ava(_);vva(Z);r=b;return}}else Y=63;while(0);if((Y|0)==63){ha=Rb()|0;la=Q;ma=ha}k[j>>2]=27468;k[Z>>2]=27488;k[_>>2]=27560;Yua(ea);Ava(_);vva(Z);na=la;oa=ma;Qb(oa|0)}while(0);ca=fa;da=ga;vva(Z);Qb(da|0)}while(0);if((Y|0)==60){W=Rb()|0;$=Q;aa=W}k[h>>2]=27468;k[N>>2]=27488;k[M>>2]=27560;Yua(T);Ava(M);vva(N);na=$;oa=aa;Qb(oa|0)}while(0);R=U;S=V;vva(N);Qb(S|0)}else Y=57;while(0);if((Y|0)==57){J=Rb()|0;O=Q;P=J}k[f>>2]=27468;k[y>>2]=27488;k[z>>2]=27560;Yua(G);Ava(z);vva(y);na=O;oa=P;Qb(oa|0)}while(0);E=H;F=I;vva(y);Qb(F|0)}else Y=54;while(0);if((Y|0)==54){w=Rb()|0;A=Q;C=w}k[d>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);na=A;oa=C;Qb(oa|0)}while(0);q=u;s=v;vva(m);Qb(s|0)}function gk(a){a=a|0;var b=0,c=0;k[a>>2]=27964;b=a+8|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+12|0;a=k[b>>2]|0;if(!a){k[b>>2]=0;return}Tqa(a);k[b>>2]=0;return}function hk(a){a=a|0;var b=0,c=0;k[a>>2]=27964;b=a+8|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=k[a+12>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function ik(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;b=r;r=r+320|0;c=b+300|0;d=b+152|0;e=b+288|0;f=b+16|0;g=b;h=d+56|0;i=d+4|0;k[d>>2]=27524;k[h>>2]=27544;B=0;wa(508,d+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(h);Qb(m|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[h>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=d+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,i|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(c);Yua(n);Ava(i);o=s;p=q;break}Yua(c);B=0;Ia(40,d|0,67048,37)|0;q=B;B=0;do if(!(q&1)?(B=0,wa(510,e|0,i|0),s=B,B=0,!(s&1)):0){B=0;ya(424,e|0)|0;s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(e);u=t;v=s;break}Yua(e);k[d>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);tk(a);s=f+56|0;t=f+4|0;k[f>>2]=27524;k[s>>2]=27544;B=0;wa(508,f+56|0,t|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;y=w;vva(s);Qb(y|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[s>>2]=27488;B=0;va(448,t|0);w=B;B=0;do if(w&1){z=Rb()|0;A=Q;C=z}else{k[t>>2]=27560;z=f+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,t|0,c|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(c);Yua(z);Ava(t);A=E;C=D;break}Yua(c);B=0;D=Ia(40,f|0,83531,16)|0;E=B;B=0;do if(((((!(E&1)?(B=0,F=Xa(242,D|0,k[a+16>>2]|0)|0,G=B,B=0,!(G&1)):0)?(B=0,G=Ia(40,F|0,124614,1)|0,F=B,B=0,!(F&1)):0)?(B=0,F=Xa(242,G|0,k[a+20>>2]|0)|0,G=B,B=0,!(G&1)):0)?(B=0,Ia(40,F|0,149177,1)|0,F=B,B=0,!(F&1)):0)?(B=0,wa(510,g|0,t|0),F=B,B=0,!(F&1)):0){B=0;ya(424,g|0)|0;F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(g);H=G;I=F;break}else{Yua(g);k[f>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(z);Ava(t);vva(s);r=b;return}}else J=31;while(0);if((J|0)==31){D=Rb()|0;H=Q;I=D}k[f>>2]=27468;k[s>>2]=27488;k[t>>2]=27560;Yua(z);Ava(t);vva(s);K=H;L=I;Qb(L|0)}while(0);x=A;y=C;vva(s);Qb(y|0)}else J=28;while(0);if((J|0)==28){q=Rb()|0;u=Q;v=q}k[d>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);K=u;L=v;Qb(L|0)}while(0);l=o;m=p;vva(h);Qb(m|0)}function jk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0;b=r;r=r+768|0;c=b+752|0;d=b+592|0;e=b+740|0;f=b+456|0;g=b+728|0;h=b+304|0;i=b+440|0;j=b+152|0;l=b+288|0;m=b+16|0;n=b;o=d+56|0;q=d+4|0;k[d>>2]=27524;k[o>>2]=27544;B=0;wa(508,d+56|0,q|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;u=s;vva(o);Qb(u|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[o>>2]=27488;B=0;va(448,q|0);s=B;B=0;do if(s&1){v=Rb()|0;w=Q;x=v}else{k[q>>2]=27560;v=d+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,q|0,c|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(c);Yua(v);Ava(q);w=z;x=y;break}Yua(c);B=0;Ia(40,d|0,67048,37)|0;y=B;B=0;do if(!(y&1)?(B=0,wa(510,e|0,q|0),z=B,B=0,!(z&1)):0){B=0;ya(424,e|0)|0;z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(e);C=A;D=z;break}Yua(e);k[d>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(o);tk(a);z=f+56|0;A=f+4|0;k[f>>2]=27524;k[z>>2]=27544;B=0;wa(508,f+56|0,A|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;G=E;vva(z);Qb(G|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[z>>2]=27488;B=0;va(448,A|0);E=B;B=0;do if(E&1){H=Rb()|0;I=Q;J=H}else{k[A>>2]=27560;H=f+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,A|0,c|0);K=B;B=0;if(K&1){K=Rb()|0;L=Q;Yua(c);Yua(H);Ava(A);I=L;J=K;break}Yua(c);B=0;K=Ia(40,f|0,83531,16)|0;L=B;B=0;do if(((((!(L&1)?(M=a+16|0,B=0,N=Xa(242,K|0,k[M>>2]|0)|0,O=B,B=0,!(O&1)):0)?(B=0,O=Ia(40,N|0,124614,1)|0,N=B,B=0,!(N&1)):0)?(N=a+20|0,B=0,P=Xa(242,O|0,k[N>>2]|0)|0,O=B,B=0,!(O&1)):0)?(B=0,Ia(40,P|0,149177,1)|0,P=B,B=0,!(P&1)):0)?(B=0,wa(510,g|0,A|0),P=B,B=0,!(P&1)):0){B=0;ya(424,g|0)|0;P=B;B=0;if(P&1){P=Rb()|0;O=Q;Yua(g);R=O;S=P;break}Yua(g);k[f>>2]=27468;k[z>>2]=27488;k[A>>2]=27560;Yua(H);Ava(A);vva(z);if((k[M>>2]|0)<=0){r=b;return}P=h+56|0;O=h+4|0;T=h+56|0;U=h+128|0;V=h+132|0;W=h+36|0;X=h+52|0;Y=m+56|0;Z=m+4|0;_=m+56|0;$=m+128|0;aa=m+132|0;ba=m+36|0;ca=m+52|0;da=j+56|0;ea=j+4|0;fa=j+56|0;ga=j+128|0;ha=j+132|0;ia=j+36|0;ja=j+52|0;ka=a+12|0;la=0;a:while(1){k[h>>2]=27524;k[P>>2]=27544;B=0;wa(508,T|0,O|0);na=B;B=0;if(na&1){oa=33;break}k[U>>2]=0;k[V>>2]=-1;k[h>>2]=27468;k[P>>2]=27488;B=0;va(448,O|0);na=B;B=0;if(na&1){oa=34;break}k[O>>2]=27560;k[W>>2]=0;k[W+4>>2]=0;k[W+8>>2]=0;k[W+12>>2]=0;k[X>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,O|0,c|0);na=B;B=0;if(na&1){oa=32;break}Yua(c);B=0;Ia(40,h|0,67086,5)|0;na=B;B=0;if(na&1){oa=60;break}B=0;wa(510,i|0,O|0);na=B;B=0;if(na&1){oa=60;break}B=0;ya(424,i|0)|0;na=B;B=0;if(na&1){oa=61;break}Yua(i);k[h>>2]=27468;k[P>>2]=27488;k[O>>2]=27560;Yua(W);Ava(O);vva(P);if((k[N>>2]|0)>0){na=0;do{k[j>>2]=27524;k[da>>2]=27544;B=0;wa(508,fa|0,ea|0);pa=B;B=0;if(pa&1){oa=45;break a}k[ga>>2]=0;k[ha>>2]=-1;k[j>>2]=27468;k[da>>2]=27488;B=0;va(448,ea|0);pa=B;B=0;if(pa&1){oa=46;break a}k[ea>>2]=27560;k[ia>>2]=0;k[ia+4>>2]=0;k[ia+8>>2]=0;k[ia+12>>2]=0;k[ja>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ea|0,c|0);pa=B;B=0;if(pa&1){oa=44;break a}Yua(c);B=0;pa=Ia(40,j|0,149175,1)|0;qa=B;B=0;if(qa&1){oa=63;break a}k[pa+(k[(k[pa>>2]|0)+-12>>2]|0)+12>>2]=11;k[pa+(k[(k[pa>>2]|0)+-12>>2]|0)+8>>2]=5;qa=(ma(k[N>>2]|0,la)|0)+na|0;B=0;Sa(1,pa|0,+(+p[(k[ka>>2]|0)+(qa<<3)>>3]))|0;qa=B;B=0;if(qa&1){oa=63;break a}B=0;wa(510,l|0,ea|0);qa=B;B=0;if(qa&1){oa=63;break a}B=0;ya(424,l|0)|0;qa=B;B=0;if(qa&1){oa=64;break a}Yua(l);k[j>>2]=27468;k[da>>2]=27488;k[ea>>2]=27560;Yua(ia);Ava(ea);vva(da);na=na+1|0}while((na|0)<(k[N>>2]|0))}k[m>>2]=27524;k[Y>>2]=27544;B=0;wa(508,_|0,Z|0);na=B;B=0;if(na&1){oa=70;break}k[$>>2]=0;k[aa>>2]=-1;k[m>>2]=27468;k[Y>>2]=27488;B=0;va(448,Z|0);na=B;B=0;if(na&1){oa=71;break}k[Z>>2]=27560;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;k[ca>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Z|0,c|0);na=B;B=0;if(na&1){oa=69;break}Yua(c);B=0;Ia(40,m|0,67092,3)|0;na=B;B=0;if(na&1){oa=78;break}B=0;wa(510,n|0,Z|0);na=B;B=0;if(na&1){oa=78;break}B=0;ya(424,n|0)|0;na=B;B=0;if(na&1){oa=79;break}Yua(n);k[m>>2]=27468;k[Y>>2]=27488;k[Z>>2]=27560;Yua(ba);Ava(Z);vva(Y);la=la+1|0;if((la|0)>=(k[M>>2]|0)){oa=81;break}}switch(oa|0){case 32:{M=Rb()|0;la=Q;Yua(c);Yua(W);Ava(O);ra=la;sa=M;oa=35;break}case 33:{M=Rb()|0;ta=Q;ua=M;vva(P);Qb(ua|0);break}case 34:{M=Rb()|0;ra=Q;sa=M;oa=35;break}case 44:{M=Rb()|0;la=Q;Yua(c);Yua(ia);Ava(ea);xa=la;za=M;oa=47;break}case 45:{M=Rb()|0;Aa=Q;Ba=M;vva(da);Qb(Ba|0);break}case 46:{M=Rb()|0;xa=Q;za=M;oa=47;break}case 60:{M=Rb()|0;Ca=Q;Da=M;oa=62;break}case 61:{M=Rb()|0;la=Q;Yua(i);Ca=la;Da=M;oa=62;break}case 63:{M=Rb()|0;Ea=Q;Fa=M;oa=65;break}case 64:{M=Rb()|0;la=Q;Yua(l);Ea=la;Fa=M;oa=65;break}case 69:{M=Rb()|0;la=Q;Yua(c);Yua(ba);Ava(Z);Ga=la;Ha=M;oa=72;break}case 70:{M=Rb()|0;Ja=Q;Ka=M;vva(Y);Qb(Ka|0);break}case 71:{M=Rb()|0;Ga=Q;Ha=M;oa=72;break}case 78:{M=Rb()|0;La=Q;Ma=M;oa=80;break}case 79:{M=Rb()|0;la=Q;Yua(n);La=la;Ma=M;oa=80;break}case 81:{r=b;return}}if((oa|0)==35){ta=ra;ua=sa;vva(P);Qb(ua|0)}else if((oa|0)==47){Aa=xa;Ba=za;vva(da);Qb(Ba|0)}else if((oa|0)==62){k[h>>2]=27468;k[P>>2]=27488;k[O>>2]=27560;Yua(W);Ava(O);vva(P);Na=Ca;Oa=Da;Qb(Oa|0)}else if((oa|0)==65){k[j>>2]=27468;k[da>>2]=27488;k[ea>>2]=27560;Yua(ia);Ava(ea);vva(da);Na=Ea;Oa=Fa;Qb(Oa|0)}else if((oa|0)==72){Ja=Ga;Ka=Ha;vva(Y);Qb(Ka|0)}else if((oa|0)==80){k[m>>2]=27468;k[Y>>2]=27488;k[Z>>2]=27560;Yua(ba);Ava(Z);vva(Y);Na=La;Oa=Ma;Qb(Oa|0)}}else oa=57;while(0);if((oa|0)==57){K=Rb()|0;R=Q;S=K}k[f>>2]=27468;k[z>>2]=27488;k[A>>2]=27560;Yua(H);Ava(A);vva(z);Na=R;Oa=S;Qb(Oa|0)}while(0);F=I;G=J;vva(z);Qb(G|0)}else oa=54;while(0);if((oa|0)==54){y=Rb()|0;C=Q;D=y}k[d>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(o);Na=C;Oa=D;Qb(Oa|0)}while(0);t=w;u=x;vva(o);Qb(u|0)}function kk(a){a=a|0;return -1}function lk(a){a=a|0;return 762}function mk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0.0,l=0;b=Qqa(40)|0;c=k[a+4>>2]|0;B=0;d=Xa(240,k[a+8>>2]|0,1)|0;e=B;B=0;do if(!(e&1)?(f=k[a+12>>2]|0,g=k[a+16>>2]|0,h=k[a+20>>2]|0,i=k[a+24>>2]|0,j=+p[a+32>>3],k[b>>2]=27964,k[b+4>>2]=c,l=b+16|0,k[l>>2]=g,g=b+20|0,k[g>>2]=h,B=0,wa(512,b+8|0,d|0),h=B,B=0,!(h&1)):0){k[b+24>>2]=i;p[b+32>>3]=j;i=ma(k[g>>2]|0,k[l>>2]|0)|0;if(!i){k[b+12>>2]=0;return b|0}B=0;l=ya(422,(i>>>0>536870911?-1:i<<3)|0)|0;g=B;B=0;if(!(g&1)){k[b+12>>2]=l;if(!f){B=0;ib(283,142353,68290,137,142345);B=0;break}TEa(l|0,f|0,i<<3|0)|0;return b|0}}while(0);d=Rb()|0;Sqa(b);Qb(d|0);return 0}function nk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;n=Hc[k[(k[a>>2]|0)+20>>2]&511](a)|0;switch(d|0){case 0:{d=k[b>>2]|0;i[d>>0]=n;i[d+1>>0]=n>>8;i[d+2>>0]=n>>16;i[d+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;d=a+4|0;o=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[n>>0]=o;i[n+1>>0]=o>>8;i[n+2>>0]=o>>16;i[n+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;n=a+8|0;d=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[o>>0]=d;i[o+1>>0]=d>>8;i[o+2>>0]=d>>16;i[o+3>>0]=d>>24;d=(k[b>>2]|0)+4|0;k[b>>2]=d;o=a+16|0;n=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[d>>0]=n;i[d+1>>0]=n>>8;i[d+2>>0]=n>>16;i[d+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;d=a+20|0;q=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[n>>0]=q;i[n+1>>0]=q>>8;i[n+2>>0]=q>>16;i[n+3>>0]=q>>24;q=(k[b>>2]|0)+4|0;k[b>>2]=q;n=a+12|0;s=(k[n>>2]|0)==0;i[q>>0]=s&1;q=(k[b>>2]|0)+1|0;k[b>>2]=q;if(s)u=q;else{TEa(q|0,k[n>>2]|0,ma(k[o>>2]<<3,k[d>>2]|0)|0)|0;n=ma(k[o>>2]<<3,k[d>>2]|0)|0;d=(k[b>>2]|0)+n|0;k[b>>2]=d;u=d}d=a+24|0;n=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[u>>0]=n;i[u+1>>0]=n>>8;i[u+2>>0]=n>>16;i[u+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;u=a+32|0;d=u;o=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;d=u+4|0;u=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;d=n;n=d;i[n>>0]=o;i[n+1>>0]=o>>8;i[n+2>>0]=o>>16;i[n+3>>0]=o>>24;o=d+4|0;i[o>>0]=u;i[o+1>>0]=u>>8;i[o+2>>0]=u>>16;i[o+3>>0]=u>>24;k[b>>2]=(k[b>>2]|0)+8;r=e;return}case 2:{u=(k[a+12>>2]|0)==0;o=(k[c>>2]|0)+21|0;k[c>>2]=o;if(u)v=o;else{u=(ma(k[a+16>>2]<<3,k[a+20>>2]|0)|0)+o|0;k[c>>2]=u;v=u}k[c>>2]=v+12;r=e;return}case 1:{v=(k[b>>2]|0)+4|0;k[b>>2]=v;c=a+4|0;u=l[v>>0]|l[v+1>>0]<<8|l[v+2>>0]<<16|l[v+3>>0]<<24;i[c>>0]=u;i[c+1>>0]=u>>8;i[c+2>>0]=u>>16;i[c+3>>0]=u>>24;u=(k[b>>2]|0)+4|0;k[b>>2]=u;c=a+8|0;v=l[u>>0]|l[u+1>>0]<<8|l[u+2>>0]<<16|l[u+3>>0]<<24;i[c>>0]=v;i[c+1>>0]=v>>8;i[c+2>>0]=v>>16;i[c+3>>0]=v>>24;v=(k[b>>2]|0)+4|0;k[b>>2]=v;c=a+16|0;u=l[v>>0]|l[v+1>>0]<<8|l[v+2>>0]<<16|l[v+3>>0]<<24;i[c>>0]=u;i[c+1>>0]=u>>8;i[c+2>>0]=u>>16;i[c+3>>0]=u>>24;c=(k[b>>2]|0)+4|0;k[b>>2]=c;v=a+20|0;o=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[v>>0]=o;i[v+1>>0]=o>>8;i[v+2>>0]=o>>16;i[v+3>>0]=o>>24;v=k[b>>2]|0;c=v+4|0;k[b>>2]=c;d=i[c>>0]|0;c=v+5|0;k[b>>2]=c;if(!(d&1)){d=ma(o,u)|0;v=Rqa(d>>>0>536870911?-1:d<<3)|0;k[a+12>>2]=v;d=k[b>>2]|0;n=ma(u<<3,o)|0;TEa(v|0,d|0,n|0)|0;v=d+n|0;k[b>>2]=v;w=v}else w=c;c=a+24|0;v=l[w>>0]|l[w+1>>0]<<8|l[w+2>>0]<<16|l[w+3>>0]<<24;i[c>>0]=v;i[c+1>>0]=v>>8;i[c+2>>0]=v>>16;i[c+3>>0]=v>>24;v=(k[b>>2]|0)+4|0;k[b>>2]=v;c=a+32|0;i[t>>0]=i[v>>0];i[t+1>>0]=i[v+1>>0];i[t+2>>0]=i[v+2>>0];i[t+3>>0]=i[v+3>>0];i[t+4>>0]=i[v+4>>0];i[t+5>>0]=i[v+5>>0];i[t+6>>0]=i[v+6>>0];i[t+7>>0]=i[v+7>>0];p[t>>3]=+p[t>>3];i[c>>0]=i[t>>0];i[c+1>>0]=i[t+1>>0];i[c+2>>0]=i[t+2>>0];i[c+3>>0]=i[t+3>>0];i[c+4>>0]=i[t+4>>0];i[c+5>>0]=i[t+5>>0];i[c+6>>0]=i[t+6>>0];i[c+7>>0]=i[t+7>>0];k[b>>2]=(k[b>>2]|0)+8;r=e;return}default:{e=g+56|0;b=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;x=Q;y=c;vva(e);Qb(y|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,b|0);c=B;B=0;do if(c&1){v=Rb()|0;z=Q;A=v}else{k[b>>2]=27560;v=g+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);a=B;B=0;if(a&1){a=Rb()|0;w=Q;Yua(f);Yua(v);Ava(b);z=w;A=a;break}Yua(f);B=0;a=Ia(40,g|0,143951,43)|0;w=B;B=0;if(!(w&1)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,h|0,66769,96);w=B;B=0;do if(!(w&1)){B=0;eb(502,j|0,149525,8);n=B;B=0;if(n&1){n=Rb()|0;d=Q;Yua(h);C=d;D=n;break}B=0;wa(510,m|0,b|0);n=B;B=0;if(n&1){n=Rb()|0;E=Q;F=n;G=1}else{B=0;ua(163,a|0,h|0,j|0,438,m|0);n=B;B=0;if(n&1)H=1;else{B=0;eb(503,a|0,1240,229);B=0;H=0}n=Rb()|0;d=Q;Yua(m);E=d;F=n;G=H}Yua(j);Yua(h);if(G){C=E;D=F}else{I=E;J=F;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(v);Ava(b);vva(e);Qb(J|0)}}else{n=Rb()|0;C=Q;D=n}while(0);zb(a|0);I=C;J=D;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(v);Ava(b);vva(e);Qb(J|0)}w=Rb()|0;I=Q;J=w;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(v);Ava(b);vva(e);Qb(J|0)}while(0);x=z;y=A;vva(e);Qb(y|0)}}}function ok(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=r;r=r+32|0;e=d+20|0;f=d+16|0;g=d+12|0;h=d;i=d+8|0;if((vY()|0)!=0&c){r=d;return}c=a+8|0;j=(Lta(k[c>>2]|0)|0)+1|0;k[i>>2]=j;jta(i,4,1,b)|0;jta(k[c>>2]|0,k[i>>2]|0,1,b)|0;p[h>>3]=+p[a+32>>3];jta(h,8,1,b)|0;jta(a+24|0,4,1,b)|0;k[e>>2]=3;jta(e,4,1,b)|0;k[f>>2]=k[a+16>>2];jta(f,4,1,b)|0;k[g>>2]=k[a+20>>2];jta(g,4,1,b)|0;jta(k[a+12>>2]|0,ma(k[g>>2]<<3,k[f>>2]|0)|0,1,b)|0;r=d;return}function pk(a){a=a|0;var b=0,c=0;b=k[a+8>>2]|0;a=Rqa((Lta(b)|0)+1|0)|0;c=(Lta(b)|0)+1|0;if(!b)yb(142353,68290,137,142345);if(!c)return a|0;TEa(a|0,b|0,c|0)|0;return a|0}function qk(a){a=a|0;return k[a+24>>2]|0}function rk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,108833,37)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,66769,96);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,108997,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,197,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function sk(a){a=a|0;return zY(k[a+8>>2]|0,0)|0}function tk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0;b=r;r=r+624|0;c=b+604|0;d=b+456|0;e=b+592|0;f=b+304|0;g=b+440|0;h=b+152|0;i=b+288|0;j=b+16|0;l=b;m=d+56|0;n=d+4|0;k[d>>2]=27524;k[m>>2]=27544;B=0;wa(508,d+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;q=Q;s=o;vva(m);Qb(s|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){t=Rb()|0;u=Q;v=t}else{k[n>>2]=27560;t=d+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,n|0,c|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(c);Yua(t);Ava(n);u=x;v=w;break}Yua(c);B=0;w=Ia(40,d|0,109048,17)|0;x=B;B=0;do if(((!(x&1)?(B=0,y=Xa(242,w|0,k[a+4>>2]|0)|0,z=B,B=0,!(z&1)):0)?(B=0,Ia(40,y|0,149177,1)|0,y=B,B=0,!(y&1)):0)?(B=0,wa(510,e|0,n|0),y=B,B=0,!(y&1)):0){B=0;ya(424,e|0)|0;y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(e);A=z;C=y;break}Yua(e);k[d>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);y=f+56|0;z=f+4|0;k[f>>2]=27524;k[y>>2]=27544;B=0;wa(508,f+56|0,z|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;F=D;vva(y);Qb(F|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[y>>2]=27488;B=0;va(448,z|0);D=B;B=0;do if(D&1){G=Rb()|0;H=Q;I=G}else{k[z>>2]=27560;G=f+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,z|0,c|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(c);Yua(G);Ava(z);H=K;I=J;break}Yua(c);B=0;J=Ia(40,f|0,109066,17)|0;K=B;B=0;do if(((!(K&1)?(L=k[a+8>>2]|0,M=Lta(L)|0,B=0,N=Ia(40,J|0,L|0,M|0)|0,M=B,B=0,!(M&1)):0)?(B=0,Ia(40,N|0,149177,1)|0,N=B,B=0,!(N&1)):0)?(B=0,wa(510,g|0,z|0),N=B,B=0,!(N&1)):0){B=0;ya(424,g|0)|0;N=B;B=0;if(N&1){N=Rb()|0;M=Q;Yua(g);O=M;P=N;break}Yua(g);k[f>>2]=27468;k[y>>2]=27488;k[z>>2]=27560;Yua(G);Ava(z);vva(y);N=h+56|0;M=h+4|0;k[h>>2]=27524;k[N>>2]=27544;B=0;wa(508,h+56|0,M|0);L=B;B=0;if(L&1){L=Rb()|0;R=Q;S=L;vva(N);Qb(S|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[N>>2]=27488;B=0;va(448,M|0);L=B;B=0;do if(L&1){T=Rb()|0;U=Q;V=T}else{k[M>>2]=27560;T=h+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,M|0,c|0);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Yua(c);Yua(T);Ava(M);U=X;V=W;break}Yua(c);B=0;W=Ia(40,h|0,109084,17)|0;X=B;B=0;do if(X&1)Y=60;else{B=0;Z=Xa(242,W|0,k[a+24>>2]|0)|0;_=B;B=0;if(_&1){Y=60;break}B=0;Ia(40,Z|0,149177,1)|0;Z=B;B=0;if(Z&1){Y=60;break}B=0;wa(510,i|0,M|0);Z=B;B=0;if(Z&1){Y=60;break}B=0;ya(424,i|0)|0;Z=B;B=0;if(Z&1){Z=Rb()|0;_=Q;Yua(i);$=_;aa=Z;break}Yua(i);k[h>>2]=27468;k[N>>2]=27488;k[M>>2]=27560;Yua(T);Ava(M);vva(N);Z=j+56|0;_=j+4|0;k[j>>2]=27524;k[Z>>2]=27544;B=0;wa(508,j+56|0,_|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;da=ba;vva(Z);Qb(da|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[Z>>2]=27488;B=0;va(448,_|0);ba=B;B=0;do if(ba&1){ea=Rb()|0;fa=Q;ga=ea}else{k[_>>2]=27560;ea=j+36|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,_|0,c|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(c);Yua(ea);Ava(_);fa=ia;ga=ha;break}Yua(c);B=0;ha=Ia(40,j|0,109102,17)|0;ia=B;B=0;do if(!(ia&1)){B=0;ja=Sa(1,ha|0,+(+p[a+32>>3]))|0;ka=B;B=0;if(ka&1){Y=63;break}B=0;Ia(40,ja|0,149177,1)|0;ja=B;B=0;if(ja&1){Y=63;break}B=0;wa(510,l|0,_|0);ja=B;B=0;if(ja&1){Y=63;break}B=0;ya(424,l|0)|0;ja=B;B=0;if(ja&1){ja=Rb()|0;ka=Q;Yua(l);la=ka;ma=ja;break}else{Yua(l);k[j>>2]=27468;k[Z>>2]=27488;k[_>>2]=27560;Yua(ea);Ava(_);vva(Z);r=b;return}}else Y=63;while(0);if((Y|0)==63){ha=Rb()|0;la=Q;ma=ha}k[j>>2]=27468;k[Z>>2]=27488;k[_>>2]=27560;Yua(ea);Ava(_);vva(Z);na=la;oa=ma;Qb(oa|0)}while(0);ca=fa;da=ga;vva(Z);Qb(da|0)}while(0);if((Y|0)==60){W=Rb()|0;$=Q;aa=W}k[h>>2]=27468;k[N>>2]=27488;k[M>>2]=27560;Yua(T);Ava(M);vva(N);na=$;oa=aa;Qb(oa|0)}while(0);R=U;S=V;vva(N);Qb(S|0)}else Y=57;while(0);if((Y|0)==57){J=Rb()|0;O=Q;P=J}k[f>>2]=27468;k[y>>2]=27488;k[z>>2]=27560;Yua(G);Ava(z);vva(y);na=O;oa=P;Qb(oa|0)}while(0);E=H;F=I;vva(y);Qb(F|0)}else Y=54;while(0);if((Y|0)==54){w=Rb()|0;A=Q;C=w}k[d>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);na=A;oa=C;Qb(oa|0)}while(0);q=u;s=v;vva(m);Qb(s|0)}function uk(a){a=a|0;var b=0,c=0;k[a>>2]=28388;b=a+8|0;if(!(k[b>>2]|0)){k[b>>2]=0;return}c=a+4|0;a=k[c>>2]|0;if(a)Tqa(a);k[c>>2]=0;k[b>>2]=0;return}function vk(a){a=a|0;var b=0;k[a>>2]=28388;if((k[a+8>>2]|0)!=0?(b=k[a+4>>2]|0,(b|0)!=0):0)Tqa(b);Sqa(a);return}function wk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0;b=r;r=r+320|0;c=b+300|0;d=b+152|0;e=b+288|0;f=b+16|0;g=b;h=d+56|0;i=d+4|0;k[d>>2]=27524;k[h>>2]=27544;B=0;wa(508,d+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(h);Qb(m|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[h>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;q=n}else{k[i>>2]=27560;n=d+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,i|0,c|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(c);Yua(n);Ava(i);o=t;q=s;break}Yua(c);B=0;s=Ia(40,d|0,67321,16)|0;t=B;B=0;do if(((!(t&1)?(u=a+8|0,B=0,v=Xa(242,s|0,k[u>>2]|0)|0,w=B,B=0,!(w&1)):0)?(B=0,Ia(40,v|0,149177,1)|0,v=B,B=0,!(v&1)):0)?(B=0,wa(510,e|0,i|0),v=B,B=0,!(v&1)):0){B=0;ya(424,e|0)|0;v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(e);x=w;y=v;break}Yua(e);k[d>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);if((k[u>>2]|0)<=0){r=b;return}v=f+56|0;w=f+4|0;z=f+56|0;A=f+128|0;C=f+132|0;D=f+36|0;E=f+52|0;F=a+4|0;G=0;while(1){k[f>>2]=27524;k[v>>2]=27544;B=0;wa(508,z|0,w|0);H=B;B=0;if(H&1){I=20;break}k[A>>2]=0;k[C>>2]=-1;k[f>>2]=27468;k[v>>2]=27488;B=0;va(448,w|0);H=B;B=0;if(H&1){I=21;break}k[w>>2]=27560;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[E>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,w|0,c|0);H=B;B=0;if(H&1){I=19;break}Yua(c);B=0;H=Sa(1,f|0,+(+p[(k[F>>2]|0)+(G<<3)>>3]))|0;J=B;B=0;if(J&1){I=32;break}B=0;Ia(40,H|0,67338,2)|0;H=B;B=0;if(H&1){I=32;break}B=0;wa(510,g|0,w|0);H=B;B=0;if(H&1){I=32;break}B=0;ya(424,g|0)|0;H=B;B=0;if(H&1){I=33;break}Yua(g);k[f>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(D);Ava(w);vva(v);G=G+1|0;if((G|0)>=(k[u>>2]|0)){I=35;break}}if((I|0)==19){u=Rb()|0;G=Q;Yua(c);Yua(D);Ava(w);K=G;L=u;I=22}else if((I|0)==20){u=Rb()|0;M=Q;N=u;vva(v);Qb(N|0)}else if((I|0)==21){u=Rb()|0;K=Q;L=u;I=22}else if((I|0)==32){u=Rb()|0;O=Q;P=u;I=34}else if((I|0)==33){u=Rb()|0;G=Q;Yua(g);O=G;P=u;I=34}else if((I|0)==35){r=b;return}if((I|0)==22){M=K;N=L;vva(v);Qb(N|0)}else if((I|0)==34){k[f>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(D);Ava(w);vva(v);R=O;S=P;Qb(S|0)}}else I=29;while(0);if((I|0)==29){s=Rb()|0;x=Q;y=s}k[d>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);R=x;S=y;Qb(S|0)}while(0);l=o;m=q;vva(h);Qb(m|0)}function xk(a){a=a|0;return}function yk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;f=r;r=r+192|0;g=f+176|0;h=f+40|0;i=f+24|0;j=f+12|0;l=f;switch(e|0){case 1:{if((b|0)<=0){r=f;return}e=k[a+4>>2]|0;m=0;do{n=e+(k[c+(m<<2)>>2]<<3)|0;p[n>>3]=+p[d+(m<<3)>>3]+ +p[n>>3];m=m+1|0}while((m|0)!=(b|0));r=f;return}case 0:{if((b|0)<=0){r=f;return}m=k[a+4>>2]|0;a=0;do{p[m+(k[c+(a<<2)>>2]<<3)>>3]=+p[d+(a<<3)>>3];a=a+1|0}while((a|0)!=(b|0));r=f;return}default:{f=h+56|0;b=h+4|0;k[h>>2]=27524;k[f>>2]=27544;B=0;wa(508,h+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;o=Q;q=a;vva(f);Qb(q|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[f>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){d=Rb()|0;s=Q;t=d}else{k[b>>2]=27560;d=h+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[h+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,b|0,g|0);c=B;B=0;if(c&1){c=Rb()|0;m=Q;Yua(g);Yua(d);Ava(b);s=m;t=c;break}Yua(g);B=0;c=Ia(40,h|0,68373,20)|0;m=B;B=0;if(!(m&1)?(B=0,Xa(239,c|0,0)|0,c=B,B=0,!(c&1)):0){c=Ab(20)|0;B=0;eb(502,i|0,67221,99);m=B;B=0;do if(!(m&1)){B=0;eb(502,j|0,68510,9);e=B;B=0;if(e&1){e=Rb()|0;n=Q;Yua(i);u=n;v=e;break}B=0;wa(510,l|0,b|0);e=B;B=0;if(e&1){e=Rb()|0;w=Q;x=e;y=1}else{B=0;ua(163,c|0,i|0,j|0,109,l|0);e=B;B=0;if(e&1)z=1;else{B=0;eb(503,c|0,1240,229);B=0;z=0}e=Rb()|0;n=Q;Yua(l);w=n;x=e;y=z}Yua(j);Yua(i);if(y){u=w;v=x}else{A=w;C=x;k[h>>2]=27468;k[f>>2]=27488;k[b>>2]=27560;Yua(d);Ava(b);vva(f);Qb(C|0)}}else{e=Rb()|0;u=Q;v=e}while(0);zb(c|0);A=u;C=v;k[h>>2]=27468;k[f>>2]=27488;k[b>>2]=27560;Yua(d);Ava(b);vva(f);Qb(C|0)}m=Rb()|0;A=Q;C=m;k[h>>2]=27468;k[f>>2]=27488;k[b>>2]=27560;Yua(d);Ava(b);vva(f);Qb(C|0)}while(0);o=s;q=t;vva(f);Qb(q|0)}}}function zk(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;i=e+12|0;j=e;switch(d|0){case 1:{d=(k[a+4>>2]|0)+(b<<3)|0;p[d>>3]=+p[d>>3]+c;r=e;return}case 0:{p[(k[a+4>>2]|0)+(b<<3)>>3]=c;r=e;return}default:{e=g+56|0;b=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;l=Q;m=a;vva(e);Qb(m|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){d=Rb()|0;n=Q;o=d}else{k[b>>2]=27560;d=g+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(f);Yua(d);Ava(b);n=s;o=q;break}Yua(f);B=0;q=Ia(40,g|0,68373,20)|0;s=B;B=0;if(!(s&1)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,h|0,67221,99);s=B;B=0;do if(!(s&1)){B=0;eb(502,i|0,86106,8);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(h);v=u;w=t;break}B=0;wa(510,j|0,b|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,h|0,i|0,125,j|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(j);x=u;y=t;z=A}Yua(i);Yua(h);if(z){v=x;w=y}else{C=x;D=y;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(d);Ava(b);vva(e);Qb(D|0)}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(d);Ava(b);vva(e);Qb(D|0)}s=Rb()|0;C=Q;D=s;k[g>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(d);Ava(b);vva(e);Qb(D|0)}while(0);l=n;m=o;vva(e);Qb(m|0)}}}function Ak(a,b,c){a=a|0;b=b|0;c=c|0;p[b>>3]=+p[(k[a+4>>2]|0)+(c<<3)>>3];return}function Bk(a,b){a=a|0;b=b|0;k[b>>2]=k[a+8>>2];return}function Ck(a,b){a=a|0;b=b|0;k[b>>2]=k[a+8>>2];return}function Dk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=Qqa(12)|0;c=k[a+4>>2]|0;d=k[a+8>>2]|0;k[b>>2]=28388;k[b+8>>2]=d;a=b+4|0;k[a>>2]=0;if(!d)return b|0;B=0;e=ya(422,(d>>>0>536870911?-1:d<<3)|0)|0;f=B;B=0;if(f&1){g=Rb()|0;h=Q;Sqa(b);Qb(g|0)}k[a>>2]=e;if(!c){B=0;ib(283,142353,68290,137,142345);B=0;g=Rb()|0;h=Q;Sqa(b);Qb(g|0)}else{TEa(e|0,c|0,d<<3|0)|0;return b|0}return 0}function Ek(a,b){a=a|0;b=+b;var c=0,d=0;c=k[a+8>>2]|0;if((c|0)<=0)return;d=k[a+4>>2]|0;a=0;do{p[d+(a<<3)>>3]=b;a=a+1|0}while((a|0)<(c|0));return}function Fk(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0;d=k[a+8>>2]|0;if((d|0)<=0)return;e=k[b+4>>2]|0;b=k[a+4>>2]|0;a=0;do{f=b+(a<<3)|0;p[f>>3]=+p[e+(a<<3)>>3]*c+ +p[f>>3];a=a+1|0}while((a|0)<(d|0));return}function Gk(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0;d=k[a+8>>2]|0;if((d|0)<=0)return;e=k[b+4>>2]|0;b=k[a+4>>2]|0;a=0;do{f=b+(a<<3)|0;p[f>>3]=+p[e+(a<<3)>>3]+ +p[f>>3]*c;a=a+1|0}while((a|0)<(d|0));return}function Hk(a){a=a|0;var b=0,c=0,d=0,e=0;b=k[a+8>>2]|0;if(!b){c=0;return c|0}d=Rqa(b>>>0>536870911?-1:b<<3)|0;e=k[a+4>>2]|0;if(!e)yb(142353,68290,137,142345);TEa(d|0,e|0,b<<3|0)|0;c=d;return c|0}function Ik(a,b){a=a|0;b=+b;var c=0,d=0,e=0;c=k[a+8>>2]|0;if((c|0)<=0)return;d=k[a+4>>2]|0;a=0;do{e=d+(a<<3)|0;p[e>>3]=+p[e>>3]+b;a=a+1|0}while((a|0)<(c|0));return}function Jk(a,b){a=a|0;b=b|0;var c=0,d=0;c=a+8|0;k[b+8>>2]=k[c>>2];d=k[c>>2]|0;if((d|0)<=0)return;c=k[a+4>>2]|0;a=k[b+4>>2]|0;b=0;do{p[a+(b<<3)>>3]=+p[c+(b<<3)>>3];b=b+1|0}while((b|0)<(d|0));return}function Kk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0.0,j=0,l=0,m=0.0,n=0.0,o=0.0,q=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;switch(b|0){case 0:{b=a+8|0;if((k[b>>2]|0)<=0){i=0.0;r=c;return +i}j=a+4|0;l=0;m=0.0;while(1){n=+LY(m,+p[(k[j>>2]|0)+(l<<3)>>3]);l=l+1|0;if((l|0)>=(k[b>>2]|0)){i=n;break}else m=n}r=c;return +i}case 1:{b=k[a+8>>2]|0;if((b|0)>0){l=k[a+4>>2]|0;a=0;m=0.0;while(1){n=+p[l+(a<<3)>>3];o=m+n*n;a=a+1|0;if((a|0)>=(b|0)){q=o;break}else m=o}}else q=0.0;i=+aa(+q);r=c;return +i}default:{c=e+56|0;b=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;s=Q;t=a;vva(c);Qb(t|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,b|0);a=B;B=0;do if(a&1){l=Rb()|0;u=Q;v=l}else{k[b>>2]=27560;l=e+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);j=B;B=0;if(j&1){j=Rb()|0;w=Q;Yua(d);Yua(l);Ava(b);u=w;v=j;break}Yua(d);B=0;j=Ia(40,e|0,68622,14)|0;w=B;B=0;if(!(w&1)?(B=0,Xa(239,j|0,0)|0,j=B,B=0,!(j&1)):0){j=Ab(20)|0;B=0;eb(502,f|0,67221,99);w=B;B=0;do if(!(w&1)){B=0;eb(502,g|0,68637,4);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(f);z=y;A=x;break}B=0;wa(510,h|0,b|0);x=B;B=0;if(x&1){x=Rb()|0;C=Q;D=x;E=1}else{B=0;ua(163,j|0,f|0,g|0,238,h|0);x=B;B=0;if(x&1)F=1;else{B=0;eb(503,j|0,1240,229);B=0;F=0}x=Rb()|0;y=Q;Yua(h);C=y;D=x;E=F}Yua(g);Yua(f);if(E){z=C;A=D}else{G=C;H=D;k[e>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(c);Qb(H|0)}}else{x=Rb()|0;z=Q;A=x}while(0);zb(j|0);G=z;H=A;k[e>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(c);Qb(H|0)}w=Rb()|0;G=Q;H=w;k[e>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(c);Qb(H|0)}while(0);s=u;t=v;vva(c);Qb(t|0)}}return +(0.0)}function Lk(a,b){a=a|0;b=+b;var c=0,d=0,e=0;c=k[a+8>>2]|0;if((c|0)<=0)return;d=k[a+4>>2]|0;a=0;do{e=d+(a<<3)|0;p[e>>3]=+p[e>>3]*b;a=a+1|0}while((a|0)<(c|0));return}function Mk(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0,f=0.0,g=0.0;c=k[a+8>>2]|0;if((c|0)<=0){d=0.0;return +d}e=k[a+4>>2]|0;a=k[b+4>>2]|0;f=0.0;b=0;while(1){g=f+ +p[e+(b<<3)>>3]*+p[a+(b<<3)>>3];b=b+1|0;if((b|0)>=(c|0)){d=g;break}else f=g}return +d}function Nk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=k[a+8>>2]|0;if((d|0)<=0)return;e=k[b+4>>2]|0;b=k[c+4>>2]|0;c=k[a+4>>2]|0;a=0;do{p[c+(a<<3)>>3]=+p[e+(a<<3)>>3]/+p[b+(a<<3)>>3];a=a+1|0}while((a|0)<(d|0));return}function Ok(a){a=a|0;var b=0;k[a>>2]=27904;b=a+8|0;a=k[b>>2]|0;if(a)Tqa(a);k[b>>2]=0;return}function Pk(a){a=a|0;var b=0;k[a>>2]=27904;b=k[a+8>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function Qk(a){a=a|0;Ec[k[(k[a>>2]|0)+12>>2]&1023](a);return}function Rk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;b=r;r=r+320|0;c=b+300|0;d=b+152|0;e=b+288|0;f=b+16|0;g=b;h=d+56|0;i=d+4|0;k[d>>2]=27524;k[h>>2]=27544;B=0;wa(508,d+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(h);Qb(m|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[h>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;q=n}else{k[i>>2]=27560;n=d+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,i|0,c|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(c);Yua(n);Ava(i);o=t;q=s;break}Yua(c);B=0;Ia(40,d|0,67528,31)|0;s=B;B=0;do if(!(s&1)?(B=0,wa(510,e|0,i|0),t=B,B=0,!(t&1)):0){B=0;ya(424,e|0)|0;t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(e);v=u;w=t;break}Yua(e);k[d>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);al(a);t=f+56|0;u=f+4|0;k[f>>2]=27524;k[t>>2]=27544;B=0;wa(508,f+56|0,u|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;z=x;vva(t);Qb(z|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[t>>2]=27488;B=0;va(448,u|0);x=B;B=0;do if(x&1){A=Rb()|0;C=Q;D=A}else{k[u>>2]=27560;A=f+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,u|0,c|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(c);Yua(A);Ava(u);C=F;D=E;break}Yua(c);B=0;E=Ia(40,f|0,109037,10)|0;F=B;B=0;do if(((!(F&1)?(B=0,G=Sa(1,E|0,+(+p[a+16>>3]))|0,H=B,B=0,!(H&1)):0)?(B=0,Ia(40,G|0,149177,1)|0,G=B,B=0,!(G&1)):0)?(B=0,wa(510,g|0,u|0),G=B,B=0,!(G&1)):0){B=0;ya(424,g|0)|0;G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(g);I=H;J=G;break}else{Yua(g);k[f>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(A);Ava(u);vva(t);r=b;return}}else K=29;while(0);if((K|0)==29){E=Rb()|0;I=Q;J=E}k[f>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(A);Ava(u);vva(t);L=I;M=J;Qb(M|0)}while(0);y=C;z=D;vva(t);Qb(z|0)}else K=26;while(0);if((K|0)==26){s=Rb()|0;v=Q;w=s}k[d>>2]=27468;k[h>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(h);L=v;M=w;Qb(M|0)}while(0);l=o;m=q;vva(h);Qb(m|0)}function Sk(a){a=a|0;return -1}function Tk(a){a=a|0;return 761}function Uk(a){a=a|0;var b=0,c=0,d=0,e=0.0,f=0,g=0.0,h=0,i=0;b=Qqa(48)|0;c=k[a+4>>2]|0;d=k[a+8>>2]|0;e=+p[a+16>>3];f=k[a+32>>2]|0;g=+p[a+40>>3];k[b>>2]=27904;k[b+4>>2]=c;p[b+16>>3]=e;k[b+32>>2]=f;p[b+40>>3]=g;k[b+24>>2]=1;k[b+28>>2]=1;f=(Lta(d)|0)+1|0;B=0;c=ya(422,f|0)|0;f=B;B=0;if(f&1){h=Rb()|0;i=Q;Sqa(b);Qb(h|0)}k[b+8>>2]=c;f=(Lta(d)|0)+1|0;if(!d){B=0;ib(283,142353,68290,137,142345);B=0;h=Rb()|0;i=Q;Sqa(b);Qb(h|0)}if(!f)return b|0;TEa(c|0,d|0,f|0)|0;return b|0}function Vk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;$k(a,b,c,d);return}function Wk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=r;r=r+32|0;d=c+8|0;e=c+24|0;f=c+20|0;g=c+16|0;h=c;if(vY()|0){r=c;return}i=a+8|0;j=(Lta(k[i>>2]|0)|0)+1|0;k[e>>2]=j;jta(e,4,1,b)|0;jta(k[i>>2]|0,k[e>>2]|0,1,b)|0;p[d>>3]=+p[a+40>>3];jta(d,8,1,b)|0;jta(a+32|0,4,1,b)|0;k[f>>2]=1;k[g>>2]=1;jta(f,4,1,b)|0;jta(g,4,1,b)|0;p[h>>3]=+p[a+16>>3];jta(h,k[g>>2]<<3,1,b)|0;r=c;return}function Xk(a){a=a|0;var b=0,c=0;b=k[a+8>>2]|0;a=Rqa((Lta(b)|0)+1|0)|0;c=(Lta(b)|0)+1|0;if(!b)yb(142353,68290,137,142345);if(!c)return a|0;TEa(a|0,b|0,c|0)|0;return a|0}function Yk(a){a=a|0;return k[a+32>>2]|0}function Zk(a){a=a|0;return +(+p[a+16>>3])}function _k(a){a=a|0;return zY(k[a+8>>2]|0,0)|0}function $k(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0;e=r;r=r+528|0;f=e+516|0;g=e+368|0;h=e+504|0;j=e+356|0;m=e+344|0;n=e+208|0;o=e+60|0;q=e+48|0;s=e+36|0;u=e+72|0;v=e+24|0;w=e+12|0;x=e;y=Hc[k[(k[a>>2]|0)+20>>2]&511](a)|0;z=(d|0)==0;a:do if(z){A=k[b>>2]|0;i[A>>0]=y;i[A+1>>0]=y>>8;i[A+2>>0]=y>>16;i[A+3>>0]=y>>24;A=(k[b>>2]|0)+4|0;k[b>>2]=A;C=+p[a+16>>3]==0.0&1;D=a+4|0;E=l[D>>0]|l[D+1>>0]<<8|l[D+2>>0]<<16|l[D+3>>0]<<24;i[A>>0]=E;i[A+1>>0]=E>>8;i[A+2>>0]=E>>16;i[A+3>>0]=E>>24;E=(k[b>>2]|0)+4|0;k[b>>2]=E;A=a+8|0;D=l[A>>0]|l[A+1>>0]<<8|l[A+2>>0]<<16|l[A+3>>0]<<24;i[E>>0]=D;i[E+1>>0]=D>>8;i[E+2>>0]=D>>16;i[E+3>>0]=D>>24;D=(k[b>>2]|0)+4|0;k[b>>2]=D;i[D>>0]=C;k[b>>2]=(k[b>>2]|0)+1;F=0;G=C}else switch(d|0){case 2:{C=k[c>>2]|0;k[c>>2]=C+4;D=+p[a+16>>3]==0.0&1;k[c>>2]=C+13;F=1;G=D;break a;break}case 1:{D=(k[b>>2]|0)+4|0;k[b>>2]=D;C=a+4|0;E=l[D>>0]|l[D+1>>0]<<8|l[D+2>>0]<<16|l[D+3>>0]<<24;i[C>>0]=E;i[C+1>>0]=E>>8;i[C+2>>0]=E>>16;i[C+3>>0]=E>>24;E=(k[b>>2]|0)+4|0;k[b>>2]=E;C=a+8|0;D=l[E>>0]|l[E+1>>0]<<8|l[E+2>>0]<<16|l[E+3>>0]<<24;i[C>>0]=D;i[C+1>>0]=D>>8;i[C+2>>0]=D>>16;i[C+3>>0]=D>>24;D=k[b>>2]|0;C=D+4|0;k[b>>2]=C;E=i[C>>0]|0;k[b>>2]=D+5;F=0;G=E&1;break a;break}default:{E=g+56|0;D=g+4|0;k[g>>2]=27524;k[E>>2]=27544;B=0;wa(508,g+56|0,D|0);C=B;B=0;if(C&1){C=Rb()|0;H=Q;I=C;vva(E);Qb(I|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[E>>2]=27488;B=0;va(448,D|0);C=B;B=0;do if(C&1){A=Rb()|0;J=Q;K=A}else{k[D>>2]=27560;A=g+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,D|0,f|0);L=B;B=0;if(L&1){L=Rb()|0;M=Q;Yua(f);Yua(A);Ava(D);J=M;K=L;break}Yua(f);B=0;L=Ia(40,g|0,143951,43)|0;M=B;B=0;b:do if(!(M&1)?(B=0,Xa(239,L|0,0)|0,N=B,B=0,!(N&1)):0){N=Ab(20)|0;B=0;eb(502,h|0,66769,96);O=B;B=0;do if(!(O&1)){B=0;eb(502,j|0,67512,15);P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(h);S=R;T=P;break}B=0;wa(510,m|0,D|0);P=B;B=0;if(P&1){P=Rb()|0;U=Q;V=P;W=1}else{B=0;ua(163,N|0,h|0,j|0,57,m|0);P=B;B=0;if(P&1)X=1;else{B=0;eb(503,N|0,1240,229);B=0;X=0}P=Rb()|0;R=Q;Yua(m);U=R;V=P;W=X}Yua(j);Yua(h);if(W){S=U;T=V}else{Y=U;Z=V;break b}}else{P=Rb()|0;S=Q;T=P}while(0);zb(N|0);Y=S;Z=T}else _=18;while(0);if((_|0)==18){L=Rb()|0;Y=Q;Z=L}k[g>>2]=27468;k[E>>2]=27488;k[D>>2]=27560;Yua(A);Ava(D);vva(E);$=Y;aa=Z;Qb(aa|0)}while(0);H=J;I=K;vva(E);Qb(I|0)}}while(0);do if(!(G<<24>>24)){if(z){I=a+16|0;K=I;J=l[K>>0]|l[K+1>>0]<<8|l[K+2>>0]<<16|l[K+3>>0]<<24;K=I+4|0;I=l[K>>0]|l[K+1>>0]<<8|l[K+2>>0]<<16|l[K+3>>0]<<24;K=k[b>>2]|0;H=K;i[H>>0]=J;i[H+1>>0]=J>>8;i[H+2>>0]=J>>16;i[H+3>>0]=J>>24;J=K+4|0;i[J>>0]=I;i[J+1>>0]=I>>8;i[J+2>>0]=I>>16;i[J+3>>0]=I>>24;I=(k[b>>2]|0)+8|0;k[b>>2]=I;ba=I;_=88;break}if(F){I=(k[c>>2]|0)+8|0;k[c>>2]=I;ca=I;_=89;break}if((d|0)==1){I=a+16|0;J=k[b>>2]|0;i[t>>0]=i[J>>0];i[t+1>>0]=i[J+1>>0];i[t+2>>0]=i[J+2>>0];i[t+3>>0]=i[J+3>>0];i[t+4>>0]=i[J+4>>0];i[t+5>>0]=i[J+5>>0];i[t+6>>0]=i[J+6>>0];i[t+7>>0]=i[J+7>>0];p[t>>3]=+p[t>>3];i[I>>0]=i[t>>0];i[I+1>>0]=i[t+1>>0];i[I+2>>0]=i[t+2>>0];i[I+3>>0]=i[t+3>>0];i[I+4>>0]=i[t+4>>0];i[I+5>>0]=i[t+5>>0];i[I+6>>0]=i[t+6>>0];i[I+7>>0]=i[t+7>>0];I=(k[b>>2]|0)+8|0;k[b>>2]=I;da=I;_=90;break}I=n+56|0;J=n+4|0;k[n>>2]=27524;k[I>>2]=27544;B=0;wa(508,n+56|0,J|0);K=B;B=0;if(K&1){K=Rb()|0;ea=Q;fa=K;vva(I);Qb(fa|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[I>>2]=27488;B=0;va(448,J|0);K=B;B=0;do if(K&1){H=Rb()|0;ga=Q;ha=H}else{k[J>>2]=27560;H=n+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,J|0,f|0);Z=B;B=0;if(Z&1){Z=Rb()|0;Y=Q;Yua(f);Yua(H);Ava(J);ga=Y;ha=Z;break}Yua(f);B=0;Z=Ia(40,n|0,143951,43)|0;Y=B;B=0;c:do if(!(Y&1)?(B=0,Xa(239,Z|0,0)|0,g=B,B=0,!(g&1)):0){g=Ab(20)|0;B=0;eb(502,o|0,66769,96);T=B;B=0;do if(!(T&1)){B=0;eb(502,q|0,67512,15);S=B;B=0;if(S&1){S=Rb()|0;V=Q;Yua(o);ia=V;ja=S;break}B=0;wa(510,s|0,J|0);S=B;B=0;if(S&1){S=Rb()|0;ka=Q;la=S;ma=1}else{B=0;ua(163,g|0,o|0,q|0,65,s|0);S=B;B=0;if(S&1)na=1;else{B=0;eb(503,g|0,1240,229);B=0;na=0}S=Rb()|0;V=Q;Yua(s);ka=V;la=S;ma=na}Yua(q);Yua(o);if(ma){ia=ka;ja=la}else{oa=ka;pa=la;break c}}else{S=Rb()|0;ia=Q;ja=S}while(0);zb(g|0);oa=ia;pa=ja}else _=51;while(0);if((_|0)==51){Z=Rb()|0;oa=Q;pa=Z}k[n>>2]=27468;k[I>>2]=27488;k[J>>2]=27560;Yua(H);Ava(J);vva(I);$=oa;aa=pa;Qb(aa|0)}while(0);ea=ga;fa=ha;vva(I);Qb(fa|0)}else{p[a+16>>3]=0.0;if(z){ba=k[b>>2]|0;_=88;break}if(F){ca=k[c>>2]|0;_=89;break}if((d|0)==1){da=k[b>>2]|0;_=90;break}J=u+56|0;K=u+4|0;k[u>>2]=27524;k[J>>2]=27544;B=0;wa(508,u+56|0,K|0);E=B;B=0;if(E&1){E=Rb()|0;qa=Q;ra=E;vva(J);Qb(ra|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[J>>2]=27488;B=0;va(448,K|0);E=B;B=0;do if(E&1){Z=Rb()|0;sa=Q;ta=Z}else{k[K>>2]=27560;Z=u+36|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[u+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,K|0,f|0);Y=B;B=0;if(Y&1){Y=Rb()|0;A=Q;Yua(f);Yua(Z);Ava(K);sa=A;ta=Y;break}Yua(f);B=0;Y=Ia(40,u|0,143951,43)|0;A=B;B=0;d:do if(!(A&1)?(B=0,Xa(239,Y|0,0)|0,T=B,B=0,!(T&1)):0){T=Ab(20)|0;B=0;eb(502,v|0,66769,96);N=B;B=0;do if(!(N&1)){B=0;eb(502,w|0,67512,15);S=B;B=0;if(S&1){S=Rb()|0;V=Q;Yua(v);xa=V;ya=S;break}B=0;wa(510,x|0,K|0);S=B;B=0;if(S&1){S=Rb()|0;za=1;Aa=Q;Ba=S}else{B=0;ua(163,T|0,v|0,w|0,66,x|0);S=B;B=0;if(S&1)Ca=1;else{B=0;eb(503,T|0,1240,229);B=0;Ca=0}S=Rb()|0;V=Q;Yua(x);za=Ca;Aa=V;Ba=S}Yua(w);Yua(v);if(za){xa=Aa;ya=Ba}else{Da=Aa;Ea=Ba;break d}}else{S=Rb()|0;xa=Q;ya=S}while(0);zb(T|0);Da=xa;Ea=ya}else _=80;while(0);if((_|0)==80){Y=Rb()|0;Da=Q;Ea=Y}k[u>>2]=27468;k[J>>2]=27488;k[K>>2]=27560;Yua(Z);Ava(K);vva(J);$=Da;aa=Ea;Qb(aa|0)}while(0);qa=sa;ra=ta;vva(J);Qb(ra|0)}while(0);if((_|0)==88){ra=a+32|0;ta=l[ra>>0]|l[ra+1>>0]<<8|l[ra+2>>0]<<16|l[ra+3>>0]<<24;i[ba>>0]=ta;i[ba+1>>0]=ta>>8;i[ba+2>>0]=ta>>16;i[ba+3>>0]=ta>>24;ta=(k[b>>2]|0)+4|0;k[b>>2]=ta;ba=a+40|0;ra=ba;sa=l[ra>>0]|l[ra+1>>0]<<8|l[ra+2>>0]<<16|l[ra+3>>0]<<24;ra=ba+4|0;ba=l[ra>>0]|l[ra+1>>0]<<8|l[ra+2>>0]<<16|l[ra+3>>0]<<24;ra=ta;ta=ra;i[ta>>0]=sa;i[ta+1>>0]=sa>>8;i[ta+2>>0]=sa>>16;i[ta+3>>0]=sa>>24;sa=ra+4|0;i[sa>>0]=ba;i[sa+1>>0]=ba>>8;i[sa+2>>0]=ba>>16;i[sa+3>>0]=ba>>24;k[b>>2]=(k[b>>2]|0)+8;r=e;return}else if((_|0)==89){k[c>>2]=ca+12;r=e;return}else if((_|0)==90){_=a+32|0;ca=l[da>>0]|l[da+1>>0]<<8|l[da+2>>0]<<16|l[da+3>>0]<<24;i[_>>0]=ca;i[_+1>>0]=ca>>8;i[_+2>>0]=ca>>16;i[_+3>>0]=ca>>24;ca=(k[b>>2]|0)+4|0;k[b>>2]=ca;_=a+40|0;i[t>>0]=i[ca>>0];i[t+1>>0]=i[ca+1>>0];i[t+2>>0]=i[ca+2>>0];i[t+3>>0]=i[ca+3>>0];i[t+4>>0]=i[ca+4>>0];i[t+5>>0]=i[ca+5>>0];i[t+6>>0]=i[ca+6>>0];i[t+7>>0]=i[ca+7>>0];p[t>>3]=+p[t>>3];i[_>>0]=i[t>>0];i[_+1>>0]=i[t+1>>0];i[_+2>>0]=i[t+2>>0];i[_+3>>0]=i[t+3>>0];i[_+4>>0]=i[t+4>>0];i[_+5>>0]=i[t+5>>0];i[_+6>>0]=i[t+6>>0];i[_+7>>0]=i[t+7>>0];k[b>>2]=(k[b>>2]|0)+8;r=e;return}}function al(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0;b=r;r=r+624|0;c=b+604|0;d=b+456|0;e=b+592|0;f=b+304|0;g=b+440|0;h=b+152|0;i=b+288|0;j=b+16|0;l=b;m=d+56|0;n=d+4|0;k[d>>2]=27524;k[m>>2]=27544;B=0;wa(508,d+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;q=Q;s=o;vva(m);Qb(s|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){t=Rb()|0;u=Q;v=t}else{k[n>>2]=27560;t=d+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,n|0,c|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(c);Yua(t);Ava(n);u=x;v=w;break}Yua(c);B=0;w=Ia(40,d|0,109048,17)|0;x=B;B=0;do if(((!(x&1)?(B=0,y=Xa(242,w|0,k[a+4>>2]|0)|0,z=B,B=0,!(z&1)):0)?(B=0,Ia(40,y|0,149177,1)|0,y=B,B=0,!(y&1)):0)?(B=0,wa(510,e|0,n|0),y=B,B=0,!(y&1)):0){B=0;ya(424,e|0)|0;y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(e);A=z;C=y;break}Yua(e);k[d>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);y=f+56|0;z=f+4|0;k[f>>2]=27524;k[y>>2]=27544;B=0;wa(508,f+56|0,z|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;F=D;vva(y);Qb(F|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[y>>2]=27488;B=0;va(448,z|0);D=B;B=0;do if(D&1){G=Rb()|0;H=Q;I=G}else{k[z>>2]=27560;G=f+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,z|0,c|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(c);Yua(G);Ava(z);H=K;I=J;break}Yua(c);B=0;J=Ia(40,f|0,109066,17)|0;K=B;B=0;do if(((!(K&1)?(L=k[a+8>>2]|0,M=Lta(L)|0,B=0,N=Ia(40,J|0,L|0,M|0)|0,M=B,B=0,!(M&1)):0)?(B=0,Ia(40,N|0,149177,1)|0,N=B,B=0,!(N&1)):0)?(B=0,wa(510,g|0,z|0),N=B,B=0,!(N&1)):0){B=0;ya(424,g|0)|0;N=B;B=0;if(N&1){N=Rb()|0;M=Q;Yua(g);O=M;P=N;break}Yua(g);k[f>>2]=27468;k[y>>2]=27488;k[z>>2]=27560;Yua(G);Ava(z);vva(y);N=h+56|0;M=h+4|0;k[h>>2]=27524;k[N>>2]=27544;B=0;wa(508,h+56|0,M|0);L=B;B=0;if(L&1){L=Rb()|0;R=Q;S=L;vva(N);Qb(S|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[N>>2]=27488;B=0;va(448,M|0);L=B;B=0;do if(L&1){T=Rb()|0;U=Q;V=T}else{k[M>>2]=27560;T=h+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,M|0,c|0);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Yua(c);Yua(T);Ava(M);U=X;V=W;break}Yua(c);B=0;W=Ia(40,h|0,109084,17)|0;X=B;B=0;do if(X&1)Y=60;else{B=0;Z=Xa(242,W|0,k[a+32>>2]|0)|0;_=B;B=0;if(_&1){Y=60;break}B=0;Ia(40,Z|0,149177,1)|0;Z=B;B=0;if(Z&1){Y=60;break}B=0;wa(510,i|0,M|0);Z=B;B=0;if(Z&1){Y=60;break}B=0;ya(424,i|0)|0;Z=B;B=0;if(Z&1){Z=Rb()|0;_=Q;Yua(i);$=_;aa=Z;break}Yua(i);k[h>>2]=27468;k[N>>2]=27488;k[M>>2]=27560;Yua(T);Ava(M);vva(N);Z=j+56|0;_=j+4|0;k[j>>2]=27524;k[Z>>2]=27544;B=0;wa(508,j+56|0,_|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;da=ba;vva(Z);Qb(da|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[Z>>2]=27488;B=0;va(448,_|0);ba=B;B=0;do if(ba&1){ea=Rb()|0;fa=Q;ga=ea}else{k[_>>2]=27560;ea=j+36|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,_|0,c|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(c);Yua(ea);Ava(_);fa=ia;ga=ha;break}Yua(c);B=0;ha=Ia(40,j|0,109102,17)|0;ia=B;B=0;do if(!(ia&1)){B=0;ja=Sa(1,ha|0,+(+p[a+40>>3]))|0;ka=B;B=0;if(ka&1){Y=63;break}B=0;Ia(40,ja|0,149177,1)|0;ja=B;B=0;if(ja&1){Y=63;break}B=0;wa(510,l|0,_|0);ja=B;B=0;if(ja&1){Y=63;break}B=0;ya(424,l|0)|0;ja=B;B=0;if(ja&1){ja=Rb()|0;ka=Q;Yua(l);la=ka;ma=ja;break}else{Yua(l);k[j>>2]=27468;k[Z>>2]=27488;k[_>>2]=27560;Yua(ea);Ava(_);vva(Z);r=b;return}}else Y=63;while(0);if((Y|0)==63){ha=Rb()|0;la=Q;ma=ha}k[j>>2]=27468;k[Z>>2]=27488;k[_>>2]=27560;Yua(ea);Ava(_);vva(Z);na=la;oa=ma;Qb(oa|0)}while(0);ca=fa;da=ga;vva(Z);Qb(da|0)}while(0);if((Y|0)==60){W=Rb()|0;$=Q;aa=W}k[h>>2]=27468;k[N>>2]=27488;k[M>>2]=27560;Yua(T);Ava(M);vva(N);na=$;oa=aa;Qb(oa|0)}while(0);R=U;S=V;vva(N);Qb(S|0)}else Y=57;while(0);if((Y|0)==57){J=Rb()|0;O=Q;P=J}k[f>>2]=27468;k[y>>2]=27488;k[z>>2]=27560;Yua(G);Ava(z);vva(y);na=O;oa=P;Qb(oa|0)}while(0);E=H;F=I;vva(y);Qb(F|0)}else Y=54;while(0);if((Y|0)==54){w=Rb()|0;A=Q;C=w}k[d>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(t);Ava(n);vva(m);na=A;oa=C;Qb(oa|0)}while(0);q=u;s=v;vva(m);Qb(s|0)}function bl(a){a=a|0;Sqa(a);return}function cl(a){a=a|0;Kl(a);return}function dl(a){a=a|0;return 554}function el(a){a=a|0;var b=0,c=0,d=0;b=Qqa(12)|0;k[b>>2]=27752;c=a+4|0;a=k[c+4>>2]|0;d=b+4|0;k[d>>2]=k[c>>2];k[d+4>>2]=a;return b|0}function fl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;d=r;r=r+176|0;c=d+152|0;b=d+16|0;e=d;f=b+56|0;g=b+4|0;k[b>>2]=27524;k[f>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(f);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[f>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,66629,22)|0;p=B;B=0;if((((!(p&1)?(B=0,p=ya(427,k[a+8>>2]|0)|0,q=B,B=0,!(q&1)):0)?(q=Lta(p)|0,B=0,s=Ia(40,o|0,p|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,Ia(40,s|0,66652,44)|0,s=B,B=0,!(s&1)):0)?(B=0,wa(510,e|0,g|0),s=B,B=0,!(s&1)):0){B=0;ya(424,e|0)|0;s=B;B=0;if(!(s&1)){Yua(e);k[b>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);r=d;return}s=Rb()|0;q=Q;Yua(e);t=q;u=s;k[b>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(u|0)}s=Rb()|0;t=Q;u=s;k[b>>2]=27468;k[f>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(f);Qb(u|0)}while(0);i=m;j=n;vva(f);Qb(j|0)}function gl(a){a=a|0;return k[a+8>>2]|0}function hl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86577,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,67,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function il(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85796,25)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,68,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function jl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85760,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,69,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function kl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85760,35)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,70,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function ll(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86549,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,71,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function ml(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;b=r;r=r+192|0;d=b+176|0;e=b+40|0;f=b+24|0;g=b+12|0;h=b;b=e+56|0;i=e+4|0;k[e>>2]=27524;k[b>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(b);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[b>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+8>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,86504,44)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,66550,78);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86325,17);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,72,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[b>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(b);Qb(D|0)}while(0);l=o;m=p;vva(b);Qb(m|0)}function nl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86480,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,73,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function ol(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86450,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,74,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function pl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,75,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function ql(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86416,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,76,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function rl(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85695,29)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,77,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function sl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86364,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,78,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function tl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86343,20)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,79,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function ul(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85673,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,80,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function vl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85648,24)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86325,17);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,81,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function wl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,82197,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,83,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function xl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85601,23)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,84,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function yl(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;c=e+56|0;i=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(c);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,86115,6)|0;s=B;B=0;if((((!(s&1)?(B=0,s=ya(427,k[a+8>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,82170,26)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,66550,78);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,86106,8);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(f);v=q;w=s;break}B=0;wa(510,h|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,f|0,g|0,87,h|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(h);x=q;y=s;z=A}Yua(g);Yua(f);if(z){v=x;w=y}else{C=x;D=y;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(c);Qb(D|0)}while(0);l=o;m=p;vva(c);Qb(m|0)}function zl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86273,21)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,88,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Al(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86245,27)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,89,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function Bl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,90,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function Cl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86213,31)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,91,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function Dl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;b=c+176|0;d=c+40|0;e=c+24|0;f=c+12|0;g=c;c=d+56|0;h=d+4|0;k[d>>2]=27524;k[c>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,82144,25)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,85,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function El(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;e=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,82144,25)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,86,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(C|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function Fl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86169,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,92,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Gl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,86150,18)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,93,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Hl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85465,19)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(e);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,e|0,f|0,94,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(e);if(y){u=w;v=x}else{A=w;C=x;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(C|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Il(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;f=e+12|0;g=e;e=c+56|0;h=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(e);Qb(l|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=c+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,h|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(h);n=q;o=p;break}Yua(d);B=0;p=Ia(40,c|0,86115,6)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,k[a+8>>2]|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,85340,33)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,b|0,66550,78);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,86106,8);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(b);u=p;v=q;break}B=0;wa(510,g|0,h|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,b|0,f|0,95,g|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(g);w=p;x=q;y=z}Yua(f);Yua(b);if(y){u=w;v=x}else{A=w;C=x;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[c>>2]=27468;k[e>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(e);Qb(C|0)}while(0);j=n;l=o;vva(e);Qb(l|0)}function Jl(a,b){a=a|0;b=b|0;k[a+8>>2]=b;return}function Kl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;b=r;r=r+464|0;c=b+452|0;d=b+304|0;e=b+440|0;f=b+152|0;g=b+288|0;h=b+16|0;i=b;j=d+56|0;l=d+4|0;k[d>>2]=27524;k[j>>2]=27544;B=0;wa(508,d+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=d+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(p);Ava(l);q=u;s=t;break}Yua(c);B=0;Ia(40,d|0,66697,14)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,e|0,l|0),u=B,B=0,!(u&1)):0){B=0;ya(424,e|0)|0;u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}Yua(e);k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);u=f+56|0;v=f+4|0;k[f>>2]=27524;k[u>>2]=27544;B=0;wa(508,f+56|0,v|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;A=y;vva(u);Qb(A|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);y=B;B=0;do if(y&1){C=Rb()|0;D=Q;E=C}else{k[v>>2]=27560;C=f+36|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(c);Yua(C);Ava(v);D=G;E=F;break}Yua(c);B=0;F=Ia(40,f|0,66712,10)|0;G=B;B=0;do if((((((!(G&1)?(H=a+8|0,B=0,I=Xa(242,F|0,k[H>>2]|0)|0,J=B,B=0,!(J&1)):0)?(B=0,J=Ia(40,I|0,144166,2)|0,I=B,B=0,!(I&1)):0)?(B=0,I=ya(427,k[H>>2]|0)|0,H=B,B=0,!(H&1)):0)?(H=Lta(I)|0,B=0,K=Ia(40,J|0,I|0,H|0)|0,H=B,B=0,!(H&1)):0)?(B=0,Ia(40,K|0,145593,2)|0,K=B,B=0,!(K&1)):0)?(B=0,wa(510,g|0,v|0),K=B,B=0,!(K&1)):0){B=0;ya(424,g|0)|0;K=B;B=0;if(K&1){K=Rb()|0;H=Q;Yua(g);L=H;M=K;break}Yua(g);k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);K=h+56|0;H=h+4|0;k[h>>2]=27524;k[K>>2]=27544;B=0;wa(508,h+56|0,H|0);I=B;B=0;if(I&1){I=Rb()|0;N=Q;O=I;vva(K);Qb(O|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[K>>2]=27488;B=0;va(448,H|0);I=B;B=0;do if(I&1){J=Rb()|0;P=Q;R=J}else{k[H>>2]=27560;J=h+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,H|0,c|0);S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(c);Yua(J);Ava(H);P=T;R=S;break}Yua(c);B=0;S=Ia(40,h|0,109037,10)|0;T=B;B=0;do if(!(T&1)){B=0;U=Xa(242,S|0,k[a+4>>2]|0)|0;V=B;B=0;if(V&1){W=48;break}B=0;Ia(40,U|0,149177,1)|0;U=B;B=0;if(U&1){W=48;break}B=0;wa(510,i|0,H|0);U=B;B=0;if(U&1){W=48;break}B=0;ya(424,i|0)|0;U=B;B=0;if(U&1){U=Rb()|0;V=Q;Yua(i);X=V;Y=U;break}else{Yua(i);k[h>>2]=27468;k[K>>2]=27488;k[H>>2]=27560;Yua(J);Ava(H);vva(K);r=b;return}}else W=48;while(0);if((W|0)==48){S=Rb()|0;X=Q;Y=S}k[h>>2]=27468;k[K>>2]=27488;k[H>>2]=27560;Yua(J);Ava(H);vva(K);Z=X;_=Y;Qb(_|0)}while(0);N=P;O=R;vva(K);Qb(O|0)}else W=45;while(0);if((W|0)==45){F=Rb()|0;L=Q;M=F}k[f>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(C);Ava(v);vva(u);Z=L;_=M;Qb(_|0)}while(0);z=D;A=E;vva(u);Qb(A|0)}else W=42;while(0);if((W|0)==42){t=Rb()|0;w=Q;x=t}k[d>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Z=w;_=x;Qb(_|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}function Ll(a){a=a|0;var b=0;k[a>>2]=28476;k[a+4>>2]=-9999;b=a+8|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;return}function Ml(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;k[a>>2]=28476;k[a+4>>2]=b;k[a+8>>2]=0;k[a+16>>2]=0;B=0;b=ya(423,36)|0;c=B;B=0;if(c&1){c=Rb()|0;d=Q;e=c;Qb(e|0)}B=0;va(486,b|0);c=B;B=0;if(!(c&1)){k[a+12>>2]=b;k[a+20>>2]=0;return}a=Rb()|0;c=Q;Sqa(b);d=c;e=a;Qb(e|0)}function Nl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;k[a>>2]=28476;k[a+4>>2]=b;k[a+8>>2]=d;B=0;b=ya(422,(d>>>0>536870911?-1:d<<3)|0)|0;e=B;B=0;do if(!(e&1)){k[a+16>>2]=b;if(!c){B=0;ib(283,142353,77590,137,142345);B=0;break}if(d)TEa(b|0,c|0,d<<3|0)|0;B=0;f=ya(423,36)|0;g=B;B=0;if(!(g&1)){B=0;va(486,f|0);g=B;B=0;if(!(g&1)){k[a+12>>2]=f;k[a+20>>2]=0;return}g=Rb()|0;h=Q;Sqa(f);i=h;j=g;Qb(j|0)}}while(0);a=Rb()|0;i=Q;j=a;Qb(j|0)}function Ol(a){a=a|0;var b=0,c=0;k[a>>2]=28476;b=a+16|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;k[a+8>>2]=0;k[a+20>>2]=0;b=k[a+12>>2]|0;if(!b)return;jC(b);Sqa(b);return}function Pl(a){a=a|0;var b=0,c=0;k[a>>2]=28476;b=a+16|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;k[a+8>>2]=0;k[a+20>>2]=0;b=k[a+12>>2]|0;if(!b){Sqa(a);return}jC(b);Sqa(b);Sqa(a);return}function Ql(a){a=a|0;Ec[k[(k[a>>2]|0)+12>>2]&1023](a);return}function Rl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0;b=r;r=r+768|0;c=b+752|0;d=b+592|0;e=b+740|0;f=b+456|0;g=b+728|0;h=b+304|0;i=b+440|0;j=b+152|0;l=b+288|0;m=b+16|0;n=b;o=d+56|0;q=d+4|0;k[d>>2]=27524;k[o>>2]=27544;B=0;wa(508,d+56|0,q|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;u=s;vva(o);Qb(u|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[o>>2]=27488;B=0;va(448,q|0);s=B;B=0;do if(s&1){v=Rb()|0;w=Q;x=v}else{k[q>>2]=27560;v=d+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,q|0,c|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(c);Yua(v);Ava(q);w=z;x=y;break}Yua(c);B=0;Ia(40,d|0,67622,16)|0;y=B;B=0;do if(!(y&1)?(B=0,wa(510,e|0,q|0),z=B,B=0,!(z&1)):0){B=0;ya(424,e|0)|0;z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(e);C=A;D=z;break}Yua(e);k[d>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(o);z=f+56|0;A=f+4|0;k[f>>2]=27524;k[z>>2]=27544;B=0;wa(508,f+56|0,A|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;G=E;vva(z);Qb(G|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[z>>2]=27488;B=0;va(448,A|0);E=B;B=0;do if(E&1){H=Rb()|0;I=Q;J=H}else{k[A>>2]=27560;H=f+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,A|0,c|0);K=B;B=0;if(K&1){K=Rb()|0;L=Q;Yua(c);Yua(H);Ava(A);I=L;J=K;break}Yua(c);B=0;K=Ia(40,f|0,85228,9)|0;L=B;B=0;do if((((((!(L&1)?(M=a+4|0,B=0,N=Xa(242,K|0,k[M>>2]|0)|0,O=B,B=0,!(O&1)):0)?(B=0,O=Ia(40,N|0,144166,2)|0,N=B,B=0,!(N&1)):0)?(B=0,N=ya(427,k[M>>2]|0)|0,M=B,B=0,!(M&1)):0)?(M=Lta(N)|0,B=0,P=Ia(40,O|0,N|0,M|0)|0,M=B,B=0,!(M&1)):0)?(B=0,Ia(40,P|0,145593,2)|0,P=B,B=0,!(P&1)):0)?(B=0,wa(510,g|0,A|0),P=B,B=0,!(P&1)):0){B=0;ya(424,g|0)|0;P=B;B=0;if(P&1){P=Rb()|0;M=Q;Yua(g);R=M;S=P;break}Yua(g);k[f>>2]=27468;k[z>>2]=27488;k[A>>2]=27560;Yua(H);Ava(A);vva(z);P=h+56|0;M=h+4|0;k[h>>2]=27524;k[P>>2]=27544;B=0;wa(508,h+56|0,M|0);N=B;B=0;if(N&1){N=Rb()|0;T=Q;U=N;vva(P);Qb(U|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[P>>2]=27488;B=0;va(448,M|0);N=B;B=0;do if(N&1){O=Rb()|0;V=Q;W=O}else{k[M>>2]=27560;O=h+36|0;k[O>>2]=0;k[O+4>>2]=0;k[O+8>>2]=0;k[O+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,M|0,c|0);X=B;B=0;if(X&1){X=Rb()|0;Y=Q;Yua(c);Yua(O);Ava(M);V=Y;W=X;break}Yua(c);B=0;X=Ia(40,h|0,67639,17)|0;Y=B;B=0;do if(Y&1)Z=74;else{_=a+8|0;B=0;$=Xa(242,X|0,k[_>>2]|0)|0;aa=B;B=0;if(aa&1){Z=74;break}B=0;Ia(40,$|0,149177,1)|0;$=B;B=0;if($&1){Z=74;break}B=0;wa(510,i|0,M|0);$=B;B=0;if($&1){Z=74;break}B=0;ya(424,i|0)|0;$=B;B=0;if($&1){$=Rb()|0;aa=Q;Yua(i);ba=aa;ca=$;break}Yua(i);k[h>>2]=27468;k[P>>2]=27488;k[M>>2]=27560;Yua(O);Ava(M);vva(P);$=j+56|0;aa=j+4|0;k[j>>2]=27524;k[$>>2]=27544;B=0;wa(508,j+56|0,aa|0);da=B;B=0;if(da&1){da=Rb()|0;ea=Q;fa=da;vva($);Qb(fa|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[$>>2]=27488;B=0;va(448,aa|0);da=B;B=0;do if(da&1){ga=Rb()|0;ha=Q;ia=ga}else{k[aa>>2]=27560;ga=j+36|0;k[ga>>2]=0;k[ga+4>>2]=0;k[ga+8>>2]=0;k[ga+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,aa|0,c|0);ja=B;B=0;if(ja&1){ja=Rb()|0;ka=Q;Yua(c);Yua(ga);Ava(aa);ha=ka;ia=ja;break}Yua(c);B=0;Ia(40,j|0,67657,12)|0;ja=B;B=0;do if(!(ja&1)){B=0;wa(510,l|0,aa|0);ka=B;B=0;if(ka&1){Z=77;break}B=0;ya(424,l|0)|0;ka=B;B=0;if(ka&1){ka=Rb()|0;la=Q;Yua(l);ma=la;na=ka;break}Yua(l);k[j>>2]=27468;k[$>>2]=27488;k[aa>>2]=27560;Yua(ga);Ava(aa);vva($);if((k[_>>2]|0)<=0){r=b;return}ka=m+56|0;la=m+4|0;oa=m+56|0;pa=m+128|0;qa=m+132|0;ra=m+36|0;sa=m+52|0;ta=a+16|0;ua=a+12|0;xa=0;while(1){k[m>>2]=27524;k[ka>>2]=27544;B=0;wa(508,oa|0,la|0);za=B;B=0;if(za&1){Z=58;break}k[pa>>2]=0;k[qa>>2]=-1;k[m>>2]=27468;k[ka>>2]=27488;B=0;va(448,la|0);za=B;B=0;if(za&1){Z=59;break}k[la>>2]=27560;k[ra>>2]=0;k[ra+4>>2]=0;k[ra+8>>2]=0;k[ra+12>>2]=0;k[sa>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,la|0,c|0);za=B;B=0;if(za&1){Z=57;break}Yua(c);B=0;za=Ia(40,m|0,67670,9)|0;Aa=B;B=0;if(Aa&1){Z=80;break}B=0;Aa=Sa(1,za|0,+(+p[(k[ta>>2]|0)+(xa<<3)>>3]))|0;za=B;B=0;if(za&1){Z=80;break}B=0;Ia(40,Aa|0,67680,2)|0;Aa=B;B=0;if(Aa&1){Z=80;break}B=0;wa(510,n|0,la|0);Aa=B;B=0;if(Aa&1){Z=80;break}B=0;ya(424,n|0)|0;Aa=B;B=0;if(Aa&1){Z=81;break}Yua(n);k[m>>2]=27468;k[ka>>2]=27488;k[la>>2]=27560;Yua(ra);Ava(la);vva(ka);Aa=qh(k[ua>>2]|0,xa)|0;Ec[k[(k[Aa>>2]|0)+8>>2]&1023](Aa);xa=xa+1|0;if((xa|0)>=(k[_>>2]|0)){Z=83;break}}if((Z|0)==57){xa=Rb()|0;ua=Q;Yua(c);Yua(ra);Ava(la);Ba=ua;Ca=xa;Z=60}else if((Z|0)==58){xa=Rb()|0;Da=Q;Ea=xa;vva(ka);Qb(Ea|0)}else if((Z|0)==59){xa=Rb()|0;Ba=Q;Ca=xa;Z=60}else if((Z|0)==80){xa=Rb()|0;Fa=Q;Ga=xa;Z=82}else if((Z|0)==81){xa=Rb()|0;ua=Q;Yua(n);Fa=ua;Ga=xa;Z=82}else if((Z|0)==83){r=b;return}if((Z|0)==60){Da=Ba;Ea=Ca;vva(ka);Qb(Ea|0)}else if((Z|0)==82){k[m>>2]=27468;k[ka>>2]=27488;k[la>>2]=27560;Yua(ra);Ava(la);vva(ka);Ha=Fa;Ja=Ga;Qb(Ja|0)}}else Z=77;while(0);if((Z|0)==77){ja=Rb()|0;ma=Q;na=ja}k[j>>2]=27468;k[$>>2]=27488;k[aa>>2]=27560;Yua(ga);Ava(aa);vva($);Ha=ma;Ja=na;Qb(Ja|0)}while(0);ea=ha;fa=ia;vva($);Qb(fa|0)}while(0);if((Z|0)==74){X=Rb()|0;ba=Q;ca=X}k[h>>2]=27468;k[P>>2]=27488;k[M>>2]=27560;Yua(O);Ava(M);vva(P);Ha=ba;Ja=ca;Qb(Ja|0)}while(0);T=V;U=W;vva(P);Qb(U|0)}else Z=71;while(0);if((Z|0)==71){K=Rb()|0;R=Q;S=K}k[f>>2]=27468;k[z>>2]=27488;k[A>>2]=27560;Yua(H);Ava(A);vva(z);Ha=R;Ja=S;Qb(Ja|0)}while(0);F=I;G=J;vva(z);Qb(G|0)}else Z=68;while(0);if((Z|0)==68){y=Rb()|0;C=Q;D=y}k[d>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(o);Ha=C;Ja=D;Qb(Ja|0)}while(0);t=w;u=x;vva(o);Qb(u|0)}function Sl(a){a=a|0;return -1}function Tl(a){a=a|0;return 697}function Ul(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Qqa(24)|0;k[b>>2]=28476;c=b+8|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[b+4>>2]=k[a+4>>2];d=k[a+8>>2]|0;k[c>>2]=d;c=Rqa(d>>>0>536870911?-1:d<<3)|0;k[b+16>>2]=c;e=k[a+16>>2]|0;if(!e)yb(142353,77590,137,142345);if(d){f=0;do{p[c+(f<<3)>>3]=+p[e+(f<<3)>>3];f=f+1|0}while((f|0)!=(d|0))}d=hh(k[a+12>>2]|0)|0;k[b+12>>2]=d;k[b+20>>2]=k[a+20>>2];return b|0}function Vl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 1:{n=Qqa(36)|0;B=0;va(486,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Sqa(n);q=o;s=p;Qb(q|0)}k[a+12>>2]=n;n=(k[b>>2]|0)+4|0;k[b>>2]=n;p=a+4|0;o=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[p>>0]=o;i[p+1>>0]=o>>8;i[p+2>>0]=o>>16;i[p+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;p=a+8|0;n=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[p>>0]=n;i[p+1>>0]=n>>8;i[p+2>>0]=n>>16;i[p+3>>0]=n>>24;p=k[b>>2]|0;o=p+4|0;k[b>>2]=o;t=i[o>>0]|0;k[b>>2]=p+5;if(t&1){u=a+12|0;v=k[u>>2]|0;lh(v,b,c,d);r=e;return}t=Rqa(n>>>0>536870911?-1:n<<3)|0;k[a+16>>2]=t;p=k[b>>2]|0;o=n<<3;TEa(t|0,p|0,o|0)|0;k[b>>2]=p+o;u=a+12|0;v=k[u>>2]|0;lh(v,b,c,d);r=e;return}case 0:{o=k[b>>2]|0;i[o>>0]=185;i[o+1>>0]=2;i[o+2>>0]=0;i[o+3>>0]=0;o=(k[b>>2]|0)+4|0;k[b>>2]=o;p=a+4|0;t=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;i[o>>0]=t;i[o+1>>0]=t>>8;i[o+2>>0]=t>>16;i[o+3>>0]=t>>24;t=(k[b>>2]|0)+4|0;k[b>>2]=t;o=a+8|0;p=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[t>>0]=p;i[t+1>>0]=p>>8;i[t+2>>0]=p>>16;i[t+3>>0]=p>>24;p=(k[b>>2]|0)+4|0;k[b>>2]=p;t=a+16|0;n=(k[t>>2]|0)==0;i[p>>0]=n&1;p=(k[b>>2]|0)+1|0;k[b>>2]=p;if(n){u=a+12|0;v=k[u>>2]|0;lh(v,b,c,d);r=e;return}TEa(p|0,k[t>>2]|0,k[o>>2]<<3|0)|0;k[b>>2]=(k[b>>2]|0)+(k[o>>2]<<3);u=a+12|0;v=k[u>>2]|0;lh(v,b,c,d);r=e;return}case 2:{o=(k[a+16>>2]|0)==0;t=(k[c>>2]|0)+13|0;k[c>>2]=t;if(o){u=a+12|0;v=k[u>>2]|0;lh(v,b,c,d);r=e;return}k[c>>2]=t+(k[a+8>>2]<<3);u=a+12|0;v=k[u>>2]|0;lh(v,b,c,d);r=e;return}default:{e=g+56|0;d=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,d|0);c=B;B=0;if(c&1){c=Rb()|0;w=Q;x=c;vva(e);Qb(x|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,d|0);c=B;B=0;do if(c&1){b=Rb()|0;y=Q;z=b}else{k[d>>2]=27560;b=g+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,d|0,f|0);v=B;B=0;if(v&1){v=Rb()|0;u=Q;Yua(f);Yua(b);Ava(d);y=u;z=v;break}Yua(f);B=0;v=Ia(40,g|0,143951,43)|0;u=B;B=0;a:do if(!(u&1)?(B=0,Xa(239,v|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,h|0,67683,80);t=B;B=0;do if(!(t&1)){B=0;eb(502,j|0,149525,8);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(h);A=o;C=p;break}B=0;wa(510,m|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;D=p;E=Q;F=1}else{B=0;ua(163,a|0,h|0,j|0,110,m|0);p=B;B=0;if(p&1)G=1;else{B=0;eb(503,a|0,1240,229);B=0;G=0}p=Rb()|0;o=Q;Yua(m);D=p;E=o;F=G}Yua(j);Yua(h);if(F){A=D;C=E}else{H=D;I=E;break a}}else{o=Rb()|0;A=o;C=Q}while(0);zb(a|0);H=A;I=C}else J=19;while(0);if((J|0)==19){v=Rb()|0;H=v;I=Q}k[g>>2]=27468;k[e>>2]=27488;k[d>>2]=27560;Yua(b);Ava(d);vva(e);q=H;s=I;Qb(q|0)}while(0);w=y;x=z;vva(e);Qb(x|0)}}}function Wl(a){a=a|0;return k[a+4>>2]|0}function Xl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=Qqa(24)|0;k[e>>2]=28476;f=e+8|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[e+4>>2]=k[a+4>>2];g=k[a+8>>2]|0;k[f>>2]=g;f=Rqa(g>>>0>536870911?-1:g<<3)|0;k[e+16>>2]=f;h=k[a+16>>2]|0;if(!h)yb(142353,77590,137,142345);if(g){i=0;do{p[f+(i<<3)>>3]=+p[h+(i<<3)>>3];i=i+1|0}while((i|0)!=(g|0))}g=uC(k[a+12>>2]|0,b,c,d)|0;k[e+12>>2]=g;k[e+20>>2]=k[a+20>>2];return e|0}function Yl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=Qqa(24)|0;k[d>>2]=28476;e=d+8|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[d+4>>2]=k[a+4>>2];f=k[a+8>>2]|0;k[e>>2]=f;e=Rqa(f>>>0>536870911?-1:f<<3)|0;k[d+16>>2]=e;g=k[a+16>>2]|0;if(!g)yb(142353,77590,137,142345);if(f){h=0;do{p[e+(h<<3)>>3]=+p[g+(h<<3)>>3];h=h+1|0}while((h|0)!=(f|0))}f=vC(k[a+12>>2]|0,b,c)|0;k[d+12>>2]=f;k[d+20>>2]=k[a+20>>2];return d|0}function Zl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=r;r=r+16|0;e=d;dO(k[a+20>>2]|0,e,767);f=_l(a,+p[e>>3])|0;nd[k[(k[f>>2]|0)+48>>2]&1023](f,b,c);if(!f){r=d;return}Ec[k[(k[f>>2]|0)+4>>2]&1023](f);r=d;return}function _l(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0.0,j=0,l=0,m=0,n=0,o=0,q=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0;c=r;r=r+16|0;d=c;bO(k[a+20>>2]|0,d,359);e=k[a+16>>2]|0;f=k[a+8>>2]|0;g=f+-1|0;if(!(+p[e>>3]>b)){h=+p[e+(g<<3)>>3];a:do if(!(h<=b)){j=0;l=(f|0)/2|0;m=g;while(1){n=l;o=m;while(1){q=+p[e+(n<<3)>>3];if(q<=b?+p[e+(n+1<<3)>>3]>b:0){s=q;t=n;break a}if(!(q>b)){u=n;v=o;break}w=n;n=((n-j|0)/2|0)+j|0;o=w}j=u;l=((v-u|0)/2|0)+u|0;m=v}}else{s=h;t=g}while(0);if((t|0)!=-1)if((t|0)==(g|0)|(i[d>>0]|0)==0){d=qh(k[a+12>>2]|0,t)|0;x=Hc[k[(k[d>>2]|0)+24>>2]&511](d)|0;r=c;return x|0}else{d=t+1|0;h=(b-s)/(+p[e+(d<<3)>>3]-s);e=a+12|0;g=qh(k[e>>2]|0,t)|0;t=qh(k[e>>2]|0,d)|0;d=Hc[k[(k[g>>2]|0)+24>>2]&511](g)|0;Cc[k[(k[d>>2]|0)+120>>2]&63](d,1.0-h);Xc[k[(k[d>>2]|0)+124>>2]&63](d,t,h);x=d;r=c;return x|0}}d=qh(k[a+12>>2]|0,0)|0;x=Hc[k[(k[d>>2]|0)+24>>2]&511](d)|0;r=c;return x|0}function $l(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0;e=_l(a,d)|0;nd[k[(k[e>>2]|0)+48>>2]&1023](e,b,c);if(!e)return;Ec[k[(k[e>>2]|0)+4>>2]&1023](e);return}function am(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=r;r=r+16|0;f=e;dO(k[a+20>>2]|0,f,767);g=_l(a,+p[f>>3])|0;rd[k[(k[g>>2]|0)+60>>2]&511](g,b,c,d);if(!g){r=e;return}Ec[k[(k[g>>2]|0)+4>>2]&1023](g);r=e;return}function bm(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return}function cm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;d=c;dO(k[a+20>>2]|0,d,767);e=_l(a,+p[d>>3])|0;Fc[k[(k[e>>2]|0)+64>>2]&1023](e,b);if(!e){r=c;return}Ec[k[(k[e>>2]|0)+4>>2]&1023](e);r=c;return}function dm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0;e=a+8|0;f=k[e>>2]|0;g=f>>>0>536870911?-1:f<<3;h=Rqa(g)|0;i=Rqa(g)|0;if((f|0)<=0){j=f;k[b>>2]=i;k[c>>2]=h;k[d>>2]=j;return}f=a+12|0;g=a+16|0;a=0;do{l=qh(k[f>>2]|0,a)|0;Fc[k[(k[l>>2]|0)+64>>2]&1023](l,i+(a<<3)|0);p[h+(a<<3)>>3]=+p[(k[g>>2]|0)+(a<<3)>>3];a=a+1|0;l=k[e>>2]|0}while((a|0)<(l|0));j=l;k[b>>2]=i;k[c>>2]=h;k[d>>2]=j;return}function em(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0.0,m=0,n=0,o=0,q=0,r=0,s=0,t=0.0;f=a+8|0;g=k[f>>2]|0;a:do if((g|0)>0){h=k[a+16>>2]|0;i=0;j=0;while(1){l=+p[h+(i<<3)>>3];m=j|l==e;if(l>e){n=m;o=i;break a}q=i+1|0;if((q|0)<(g|0)){i=q;j=m}else{n=m;o=q;break}}}else{n=0;o=0}while(0);g=(n&1^1)+o|0;o=g>>>0>536870911?-1:g<<3;j=Rqa(o)|0;i=Rqa(o)|0;if((g|0)<=0){k[b>>2]=i;k[c>>2]=j;r=k[f>>2]|0;k[d>>2]=r;return}o=g+-1|0;h=a+12|0;q=a+16|0;if(n){n=0;do{m=qh(k[h>>2]|0,n)|0;Fc[k[(k[m>>2]|0)+64>>2]&1023](m,i+(n<<3)|0);p[j+(n<<3)>>3]=+p[(k[q>>2]|0)+(n<<3)>>3];n=n+1|0}while((n|0)!=(g|0));k[b>>2]=i;k[c>>2]=j;r=k[f>>2]|0;k[d>>2]=r;return}n=i+(o<<3)|0;m=0;do{if((m|0)==(o|0)){s=_l(a,e)|0;Fc[k[(k[s>>2]|0)+64>>2]&1023](s,n);t=e}else{s=qh(k[h>>2]|0,m)|0;Fc[k[(k[s>>2]|0)+64>>2]&1023](s,i+(m<<3)|0);t=+p[(k[q>>2]|0)+(m<<3)>>3]}p[j+(m<<3)>>3]=t;m=m+1|0}while((m|0)!=(g|0));k[b>>2]=i;k[c>>2]=j;r=k[f>>2]|0;k[d>>2]=r;return}function fm(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=a+8|0;l=k[j>>2]|0;do if((l|0)>0){m=a+16|0;n=k[m>>2]|0;if(!(+p[n+(l+-1<<3)>>3]>=c)){o=Rqa(l>>>0>536870911?-1:l<<3)|0;if(!n)yb(142353,77590,137,142345);else q=0;do{p[o+(q<<3)>>3]=+p[n+(q<<3)>>3];q=q+1|0}while((q|0)!=(l|0));Tqa(n);s=k[j>>2]|0;k[m>>2]=0;t=m;u=s;v=o;break}s=f+56|0;w=f+4|0;k[f>>2]=27524;k[s>>2]=27544;B=0;wa(508,f+56|0,w|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;z=x;vva(s);Qb(z|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[s>>2]=27488;B=0;va(448,w|0);x=B;B=0;do if(x&1){A=Rb()|0;C=Q;D=A}else{k[w>>2]=27560;A=f+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,w|0,e|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(e);Yua(A);Ava(w);C=F;D=E;break}Yua(e);B=0;E=Ia(40,f|0,67764,42)|0;F=B;B=0;if(!(F&1)?(B=0,Xa(239,E|0,0)|0,E=B,B=0,!(E&1)):0){E=Ab(20)|0;B=0;eb(502,g|0,67683,80);F=B;B=0;do if(!(F&1)){B=0;eb(502,h|0,67807,12);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(g);I=H;J=G;break}B=0;wa(510,i|0,w|0);G=B;B=0;if(G&1){G=Rb()|0;K=Q;L=G;M=1}else{B=0;ua(163,E|0,g|0,h|0,297,i|0);G=B;B=0;if(G&1)N=1;else{B=0;eb(503,E|0,1240,229);B=0;N=0}G=Rb()|0;H=Q;Yua(i);K=H;L=G;M=N}Yua(h);Yua(g);if(M){I=K;J=L}else{O=K;P=L;k[f>>2]=27468;k[s>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(s);Qb(P|0)}}else{G=Rb()|0;I=Q;J=G}while(0);zb(E|0);O=I;P=J;k[f>>2]=27468;k[s>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(s);Qb(P|0)}F=Rb()|0;O=Q;P=F;k[f>>2]=27468;k[s>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(s);Qb(P|0)}while(0);y=C;z=D;vva(s);Qb(z|0)}else{t=a+16|0;u=l;v=0}while(0);l=u+1|0;k[j>>2]=l;z=Rqa(l>>>0>536870911?-1:l<<3)|0;k[t>>2]=z;if((u|0)<=0){R=l;S=z;T=R+-1|0;U=S+(T<<3)|0;p[U>>3]=c;V=a+12|0;W=k[V>>2]|0;ih(W,b)|0;r=d;return}if(!v)yb(142353,77590,137,142345);TEa(z|0,v|0,(l<<3)+-8|0)|0;Tqa(v);R=k[j>>2]|0;S=k[t>>2]|0;T=R+-1|0;U=S+(T<<3)|0;p[U>>3]=c;V=a+12|0;W=k[V>>2]|0;ih(W,b)|0;r=d;return}function gm(a,b){a=a|0;b=b|0;ih(k[a+12>>2]|0,b)|0;return}function hm(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+16|0;c=b;dO(k[a+20>>2]|0,c,767);d=_l(a,+p[c>>3])|0;c=Hc[k[(k[d>>2]|0)+164>>2]&511](d)|0;if(!d){r=b;return c|0}Ec[k[(k[d>>2]|0)+4>>2]&1023](d);r=b;return c|0}function im(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+16|0;c=b;dO(k[a+20>>2]|0,c,767);d=_l(a,+p[c>>3])|0;c=Hc[k[(k[d>>2]|0)+168>>2]&511](d)|0;if(!d){r=b;return c|0}Ec[k[(k[d>>2]|0)+4>>2]&1023](d);r=b;return c|0}function jm(a){a=a|0;return 1}function km(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=a+8|0;if((k[c>>2]|0)<=0)return;d=a+12|0;a=0;do{e=qh(k[d>>2]|0,a)|0;Fc[k[(k[e>>2]|0)+136>>2]&1023](e,b);a=a+1|0}while((a|0)<(k[c>>2]|0));return}function lm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=r;r=r+16|0;e=d;dO(c,e,767);f=_l(a,+p[e>>3])|0;nd[k[(k[f>>2]|0)+88>>2]&1023](f,b,c);if(!f){r=d;return}Ec[k[(k[f>>2]|0)+4>>2]&1023](f);r=d;return}function mm(a){a=a|0;var b=0,c=0,d=0,e=0.0;b=r;r=r+16|0;c=b;dO(k[a+20>>2]|0,c,767);d=_l(a,+p[c>>3])|0;e=+Zc[k[(k[d>>2]|0)+96>>2]&255](d);if(!d){r=b;return +e}Ec[k[(k[d>>2]|0)+4>>2]&1023](d);r=b;return +e}function nm(a){a=a|0;var b=0,c=0,d=0,e=0.0;b=r;r=r+16|0;c=b;dO(k[a+20>>2]|0,c,767);d=_l(a,+p[c>>3])|0;e=+Zc[k[(k[d>>2]|0)+108>>2]&255](d);if(!d){r=b;return +e}Ec[k[(k[d>>2]|0)+4>>2]&1023](d);r=b;return +e}function om(a){a=a|0;var b=0,c=0,d=0,e=0.0;b=r;r=r+16|0;c=b;dO(k[a+20>>2]|0,c,767);d=_l(a,+p[c>>3])|0;e=+Zc[k[(k[d>>2]|0)+100>>2]&255](d);if(!d){r=b;return +e}Ec[k[(k[d>>2]|0)+4>>2]&1023](d);r=b;return +e}function pm(a){a=a|0;var b=0,c=0,d=0,e=0.0;b=r;r=r+16|0;c=b;dO(k[a+20>>2]|0,c,767);d=_l(a,+p[c>>3])|0;e=+Zc[k[(k[d>>2]|0)+112>>2]&255](d);if(!d){r=b;return +e}Ec[k[(k[d>>2]|0)+4>>2]&1023](d);r=b;return +e}function qm(a){a=a|0;var b=0,c=0,d=0,e=0.0;b=r;r=r+16|0;c=b;dO(k[a+20>>2]|0,c,767);d=_l(a,+p[c>>3])|0;e=+Zc[k[(k[d>>2]|0)+104>>2]&255](d);if(!d){r=b;return +e}Ec[k[(k[d>>2]|0)+4>>2]&1023](d);r=b;return +e}function rm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=r;r=r+16|0;e=d;dO(k[a+20>>2]|0,e,767);f=_l(a,+p[e>>3])|0;nd[k[(k[f>>2]|0)+140>>2]&1023](f,b,c);if(!f){r=d;return}Ec[k[(k[f>>2]|0)+4>>2]&1023](f);r=d;return}function sm(a,b){a=a|0;b=b|0;k[a+20>>2]=b;return}function tm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,67827,90);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,55,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function um(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,67827,90);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,56,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function vm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,67827,90);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,57,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function wm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,67827,90);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,60,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function xm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,67827,90);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121324,30);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,63,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function ym(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,67827,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,115231,12);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,68,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function zm(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,120763,23)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,67827,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,120874,3);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,69,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function Am(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,67827,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,115194,5);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,70,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function Bm(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;a=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,67827,90);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,121097,4);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,71,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(E|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function Cm(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;a=r;r=r+192|0;d=a+176|0;e=a+40|0;f=a+24|0;g=a+12|0;h=a;a=e+56|0;i=e+4|0;k[e>>2]=27524;k[a>>2]=27544;B=0;wa(508,e+56|0,i|0);j=B;B=0;if(j&1){j=Rb()|0;l=Q;m=j;vva(a);Qb(m|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[a>>2]=27488;B=0;va(448,i|0);j=B;B=0;do if(j&1){n=Rb()|0;o=Q;p=n}else{k[i>>2]=27560;n=e+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(d);Yua(n);Ava(i);o=s;p=q;break}Yua(d);B=0;q=Ia(40,e|0,149721,19)|0;s=B;B=0;a:do if(!(s&1)?(B=0,Xa(239,q|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,67827,90);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,118419,9);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(f);x=w;y=v;break}B=0;wa(510,h|0,i|0);v=B;B=0;if(v&1){v=Rb()|0;z=Q;A=v;C=1}else{B=0;ua(163,t|0,f|0,g|0,72,h|0);v=B;B=0;if(v&1)D=1;else{B=0;eb(503,t|0,1240,229);B=0;D=0}v=Rb()|0;w=Q;Yua(h);z=w;A=v;C=D}Yua(g);Yua(f);if(C){x=z;y=A}else{E=z;F=A;break a}}else{v=Rb()|0;x=Q;y=v}while(0);zb(t|0);E=x;F=y}else G=16;while(0);if((G|0)==16){q=Rb()|0;E=Q;F=q}k[e>>2]=27468;k[a>>2]=27488;k[i>>2]=27560;Yua(n);Ava(i);vva(a);Qb(F|0)}while(0);l=o;m=p;vva(a);Qb(m|0)}function Dm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,67827,90);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121304,19);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,79,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Em(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,67827,90);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121179,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,45,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Fm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,67827,90);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121166,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,47,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Gm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,67827,90);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121153,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,46,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Hm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,67827,90);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115180,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,51,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function Im(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,76054,90);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,70605,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,66,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function Jm(a){a=a|0;k[a>>2]=28668;i[a+32>>0]=0;k[a+4>>2]=-1;k[a+8>>2]=-1;k[a+12>>2]=-1;k[a+16>>2]=0;k[a+20>>2]=0;k[a+24>>2]=-1;k[a+28>>2]=-1;return}function Km(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0;k[a>>2]=28668;i[a+32>>0]=0;k[a+4>>2]=b;k[a+8>>2]=c;k[a+12>>2]=d;k[a+24>>2]=e;if(!e){j=a+28|0;k[j>>2]=h;return}d=e>>>0>536870911?-1:e<<3;c=Rqa(d)|0;k[a+16>>2]=c;b=Rqa(d)|0;k[a+20>>2]=b;if(!g)yb(142353,67933,137,142345);else l=0;do{p[c+(l<<3)>>3]=+p[g+(l<<3)>>3];l=l+1|0}while((l|0)!=(e|0));if(!f)yb(142353,67933,137,142345);else m=0;do{p[b+(m<<3)>>3]=+p[f+(m<<3)>>3];m=m+1|0}while((m|0)!=(e|0));j=a+28|0;k[j>>2]=h;return}function Lm(a){a=a|0;var b=0,c=0;k[a>>2]=28668;b=a+20|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+16|0;a=k[b>>2]|0;if(!a){k[b>>2]=0;return}Tqa(a);k[b>>2]=0;return}function Mm(a){a=a|0;var b=0,c=0;k[a>>2]=28668;b=a+20|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=k[a+16>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function Nm(a){a=a|0;var b=0;b=Qqa(36)|0;B=0;Ka(11,b|0,k[a+4>>2]|0,k[a+8>>2]|0,k[a+12>>2]|0,k[a+24>>2]|0,k[a+20>>2]|0,k[a+16>>2]|0,k[a+28>>2]|0);a=B;B=0;if(a&1){a=Rb()|0;Sqa(b);Qb(a|0)}else return b|0;return 0}function Om(a){a=a|0;Ec[k[(k[a>>2]|0)+8>>2]&1023](a);return}
+function b$(a){a=a|0;var b=0;k[a>>2]=36788;b=k[a+12>>2]|0;if(b)Ec[k[(k[b>>2]|0)+4>>2]&1023](b);b=k[a+16>>2]|0;if(b)Ec[k[(k[b>>2]|0)+4>>2]&1023](b);b=k[a+20>>2]|0;if(b)Ec[k[(k[b>>2]|0)+4>>2]&1023](b);b=k[a+24>>2]|0;if(b)Ec[k[(k[b>>2]|0)+4>>2]&1023](b);b=k[a+28>>2]|0;if(!b)return;Ec[k[(k[b>>2]|0)+4>>2]&1023](b);return}function c$(a){a=a|0;var b=0;k[a>>2]=36788;b=k[a+12>>2]|0;if(b)Ec[k[(k[b>>2]|0)+4>>2]&1023](b);b=k[a+16>>2]|0;if(b)Ec[k[(k[b>>2]|0)+4>>2]&1023](b);b=k[a+20>>2]|0;if(b)Ec[k[(k[b>>2]|0)+4>>2]&1023](b);b=k[a+24>>2]|0;if(b)Ec[k[(k[b>>2]|0)+4>>2]&1023](b);b=k[a+28>>2]|0;if(!b){Sqa(a);return}Ec[k[(k[b>>2]|0)+4>>2]&1023](b);Sqa(a);return}function d$(a){a=a|0;Ec[k[(k[a>>2]|0)+12>>2]&1023](a);return}function e$(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0;b=r;r=r+1072|0;c=b+1052|0;d=b+880|0;e=b+1040|0;f=b+728|0;g=b+1028|0;h=b+592|0;i=b+1016|0;j=b+440|0;l=b+864|0;m=b+304|0;n=b+576|0;o=b+168|0;p=b+152|0;q=b+16|0;s=b;t=d+56|0;u=d+4|0;k[d>>2]=27524;k[t>>2]=27544;B=0;wa(508,d+56|0,u|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;x=v;vva(t);Qb(x|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[t>>2]=27488;B=0;va(448,u|0);v=B;B=0;do if(v&1){y=Rb()|0;z=Q;A=y}else{k[u>>2]=27560;y=d+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,u|0,c|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(c);Yua(y);Ava(u);z=D;A=C;break}Yua(c);B=0;Ia(40,d|0,114769,14)|0;C=B;B=0;do if(!(C&1)?(B=0,wa(510,e|0,u|0),D=B,B=0,!(D&1)):0){B=0;ya(424,e|0)|0;D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(e);F=E;G=D;break}Yua(e);k[d>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(t);D=f+56|0;E=f+4|0;k[f>>2]=27524;k[D>>2]=27544;B=0;wa(508,f+56|0,E|0);H=B;B=0;if(H&1){H=Rb()|0;I=Q;J=H;vva(D);Qb(J|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[D>>2]=27488;B=0;va(448,E|0);H=B;B=0;do if(H&1){K=Rb()|0;L=Q;M=K}else{k[E>>2]=27560;K=f+36|0;k[K>>2]=0;k[K+4>>2]=0;k[K+8>>2]=0;k[K+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,E|0,c|0);N=B;B=0;if(N&1){N=Rb()|0;O=Q;Yua(c);Yua(K);Ava(E);L=O;M=N;break}Yua(c);k[f+(k[(k[f>>2]|0)+-12>>2]|0)+12>>2]=15;B=0;N=Ia(40,f|0,114784,16)|0;O=B;B=0;do if((((!(O&1)?(k[N+(k[(k[N>>2]|0)+-12>>2]|0)+12>>2]=25,P=N+(k[(k[N>>2]|0)+-12>>2]|0)+4|0,k[P>>2]=k[P>>2]&-177|32,B=0,P=ya(427,k[a+4>>2]|0)|0,R=B,B=0,!(R&1)):0)?(R=Lta(P)|0,B=0,S=Ia(40,N|0,P|0,R|0)|0,R=B,B=0,!(R&1)):0)?(B=0,Ia(40,S|0,149177,1)|0,S=B,B=0,!(S&1)):0)?(B=0,wa(510,g|0,E|0),S=B,B=0,!(S&1)):0){B=0;ya(424,g|0)|0;S=B;B=0;if(S&1){S=Rb()|0;R=Q;Yua(g);T=R;U=S;break}Yua(g);k[f>>2]=27468;k[D>>2]=27488;k[E>>2]=27560;Yua(K);Ava(E);vva(D);S=h+56|0;R=h+4|0;k[h>>2]=27524;k[S>>2]=27544;B=0;wa(508,h+56|0,R|0);P=B;B=0;if(P&1){P=Rb()|0;V=Q;W=P;vva(S);Qb(W|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[S>>2]=27488;B=0;va(448,R|0);P=B;B=0;do if(P&1){X=Rb()|0;Y=Q;Z=X}else{k[R>>2]=27560;X=h+36|0;k[X>>2]=0;k[X+4>>2]=0;k[X+8>>2]=0;k[X+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,R|0,c|0);_=B;B=0;if(_&1){_=Rb()|0;$=Q;Yua(c);Yua(X);Ava(R);Y=$;Z=_;break}Yua(c);B=0;Ia(40,h|0,114801,12)|0;_=B;B=0;do if(_&1)aa=45;else{B=0;wa(510,i|0,R|0);$=B;B=0;if($&1){aa=45;break}B=0;ya(424,i|0)|0;$=B;B=0;if($&1){$=Rb()|0;ba=Q;Yua(i);ca=ba;da=$;break}Yua(i);k[h>>2]=27468;k[S>>2]=27488;k[R>>2]=27560;Yua(X);Ava(R);vva(S);$=k[a+12>>2]|0;if($)Ec[k[(k[$>>2]|0)+8>>2]&1023]($);$=j+56|0;ba=j+4|0;k[j>>2]=27524;k[$>>2]=27544;B=0;wa(508,j+56|0,ba|0);ea=B;B=0;if(ea&1){ea=Rb()|0;fa=Q;ga=ea;vva($);Qb(ga|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[$>>2]=27488;B=0;va(448,ba|0);ea=B;B=0;do if(ea&1){ha=Rb()|0;ia=Q;ja=ha}else{k[ba>>2]=27560;ha=j+36|0;k[ha>>2]=0;k[ha+4>>2]=0;k[ha+8>>2]=0;k[ha+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ba|0,c|0);ka=B;B=0;if(ka&1){ka=Rb()|0;la=Q;Yua(c);Yua(ha);Ava(ba);ia=la;ja=ka;break}Yua(c);B=0;Ia(40,j|0,114814,17)|0;ka=B;B=0;do if(ka&1)aa=61;else{B=0;wa(510,l|0,ba|0);la=B;B=0;if(la&1){aa=61;break}B=0;ya(424,l|0)|0;la=B;B=0;if(la&1){la=Rb()|0;ma=Q;Yua(l);na=ma;oa=la;break}Yua(l);k[j>>2]=27468;k[$>>2]=27488;k[ba>>2]=27560;Yua(ha);Ava(ba);vva($);la=k[a+16>>2]|0;if(la)Ec[k[(k[la>>2]|0)+8>>2]&1023](la);la=m+56|0;ma=m+4|0;k[m>>2]=27524;k[la>>2]=27544;B=0;wa(508,m+56|0,ma|0);pa=B;B=0;if(pa&1){pa=Rb()|0;qa=Q;ra=pa;vva(la);Qb(ra|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[la>>2]=27488;B=0;va(448,ma|0);pa=B;B=0;do if(pa&1){sa=Rb()|0;ta=Q;ua=sa}else{k[ma>>2]=27560;sa=m+36|0;k[sa>>2]=0;k[sa+4>>2]=0;k[sa+8>>2]=0;k[sa+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ma|0,c|0);xa=B;B=0;if(xa&1){xa=Rb()|0;za=Q;Yua(c);Yua(sa);Ava(ma);ta=za;ua=xa;break}Yua(c);B=0;Ia(40,m|0,114832,15)|0;xa=B;B=0;do if(xa&1)aa=77;else{B=0;wa(510,n|0,ma|0);za=B;B=0;if(za&1){aa=77;break}B=0;ya(424,n|0)|0;za=B;B=0;if(za&1){za=Rb()|0;Aa=Q;Yua(n);Ba=Aa;Ca=za;break}Yua(n);k[m>>2]=27468;k[la>>2]=27488;k[ma>>2]=27560;Yua(sa);Ava(ma);vva(la);za=k[a+20>>2]|0;if(za)Ec[k[(k[za>>2]|0)+8>>2]&1023](za);za=o+56|0;Aa=o+4|0;k[o>>2]=27524;k[za>>2]=27544;B=0;wa(508,o+56|0,Aa|0);Da=B;B=0;if(Da&1){Da=Rb()|0;Ea=Q;Fa=Da;vva(za);Qb(Fa|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[za>>2]=27488;B=0;va(448,Aa|0);Da=B;B=0;do if(Da&1){Ga=Rb()|0;Ha=Q;Ja=Ga}else{k[Aa>>2]=27560;Ga=o+36|0;k[Ga>>2]=0;k[Ga+4>>2]=0;k[Ga+8>>2]=0;k[Ga+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Aa|0,c|0);Ka=B;B=0;if(Ka&1){Ka=Rb()|0;La=Q;Yua(c);Yua(Ga);Ava(Aa);Ha=La;Ja=Ka;break}Yua(c);B=0;Ia(40,o|0,114848,15)|0;Ka=B;B=0;do if(Ka&1)aa=93;else{B=0;wa(510,p|0,Aa|0);La=B;B=0;if(La&1){aa=93;break}B=0;ya(424,p|0)|0;La=B;B=0;if(La&1){La=Rb()|0;Ma=Q;Yua(p);Na=Ma;Oa=La;break}Yua(p);k[o>>2]=27468;k[za>>2]=27488;k[Aa>>2]=27560;Yua(Ga);Ava(Aa);vva(za);La=k[a+24>>2]|0;if(La)Ec[k[(k[La>>2]|0)+8>>2]&1023](La);La=q+56|0;Ma=q+4|0;k[q>>2]=27524;k[La>>2]=27544;B=0;wa(508,q+56|0,Ma|0);Pa=B;B=0;if(Pa&1){Pa=Rb()|0;Qa=Q;Ra=Pa;vva(La);Qb(Ra|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[La>>2]=27488;B=0;va(448,Ma|0);Pa=B;B=0;do if(Pa&1){Sa=Rb()|0;Ta=Q;Ua=Sa}else{k[Ma>>2]=27560;Sa=q+36|0;k[Sa>>2]=0;k[Sa+4>>2]=0;k[Sa+8>>2]=0;k[Sa+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ma|0,c|0);Va=B;B=0;if(Va&1){Va=Rb()|0;Wa=Q;Yua(c);Yua(Sa);Ava(Ma);Ta=Wa;Ua=Va;break}Yua(c);B=0;Ia(40,q|0,114864,14)|0;Va=B;B=0;do if(Va&1)aa=109;else{B=0;wa(510,s|0,Ma|0);Wa=B;B=0;if(Wa&1){aa=109;break}B=0;ya(424,s|0)|0;Wa=B;B=0;if(Wa&1){Wa=Rb()|0;Xa=Q;Yua(s);Ya=Xa;Za=Wa;break}Yua(s);k[q>>2]=27468;k[La>>2]=27488;k[Ma>>2]=27560;Yua(Sa);Ava(Ma);vva(La);Wa=k[a+28>>2]|0;if(!Wa){r=b;return}Ec[k[(k[Wa>>2]|0)+8>>2]&1023](Wa);r=b;return}while(0);if((aa|0)==109){Va=Rb()|0;Ya=Q;Za=Va}k[q>>2]=27468;k[La>>2]=27488;k[Ma>>2]=27560;Yua(Sa);Ava(Ma);vva(La);_a=Ya;$a=Za;Qb($a|0)}while(0);Qa=Ta;Ra=Ua;vva(La);Qb(Ra|0)}while(0);if((aa|0)==93){Ka=Rb()|0;Na=Q;Oa=Ka}k[o>>2]=27468;k[za>>2]=27488;k[Aa>>2]=27560;Yua(Ga);Ava(Aa);vva(za);_a=Na;$a=Oa;Qb($a|0)}while(0);Ea=Ha;Fa=Ja;vva(za);Qb(Fa|0)}while(0);if((aa|0)==77){xa=Rb()|0;Ba=Q;Ca=xa}k[m>>2]=27468;k[la>>2]=27488;k[ma>>2]=27560;Yua(sa);Ava(ma);vva(la);_a=Ba;$a=Ca;Qb($a|0)}while(0);qa=ta;ra=ua;vva(la);Qb(ra|0)}while(0);if((aa|0)==61){ka=Rb()|0;na=Q;oa=ka}k[j>>2]=27468;k[$>>2]=27488;k[ba>>2]=27560;Yua(ha);Ava(ba);vva($);_a=na;$a=oa;Qb($a|0)}while(0);fa=ia;ga=ja;vva($);Qb(ga|0)}while(0);if((aa|0)==45){_=Rb()|0;ca=Q;da=_}k[h>>2]=27468;k[S>>2]=27488;k[R>>2]=27560;Yua(X);Ava(R);vva(S);_a=ca;$a=da;Qb($a|0)}while(0);V=Y;W=Z;vva(S);Qb(W|0)}else aa=42;while(0);if((aa|0)==42){N=Rb()|0;T=Q;U=N}k[f>>2]=27468;k[D>>2]=27488;k[E>>2]=27560;Yua(K);Ava(E);vva(D);_a=T;$a=U;Qb($a|0)}while(0);I=L;J=M;vva(D);Qb(J|0)}else aa=39;while(0);if((aa|0)==39){C=Rb()|0;F=Q;G=C}k[d>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(t);_a=F;$a=G;Qb($a|0)}while(0);w=z;x=A;vva(t);Qb(x|0)}function f$(a){a=a|0;return -1}function g$(a){a=a|0;return 559}function h$(a){a=a|0;var b=0,c=0,d=0;b=Qqa(32)|0;k[b>>2]=36788;c=b+8|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=0;k[b+4>>2]=k[a+4>>2];k[c>>2]=k[a+8>>2];c=k[a+12>>2]|0;if(c){d=Hc[k[(k[c>>2]|0)+24>>2]&511](c)|0;k[b+12>>2]=d}d=k[a+16>>2]|0;if(d){c=Hc[k[(k[d>>2]|0)+24>>2]&511](d)|0;k[b+16>>2]=c}c=k[a+20>>2]|0;if(c){d=Hc[k[(k[c>>2]|0)+24>>2]&511](c)|0;k[b+20>>2]=d}d=k[a+24>>2]|0;if(d){c=Hc[k[(k[d>>2]|0)+24>>2]&511](d)|0;k[b+24>>2]=c}c=k[a+28>>2]|0;if(!c)return b|0;a=Hc[k[(k[c>>2]|0)+24>>2]&511](c)|0;k[b+28>>2]=a;return b|0}function i$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;e=r;r=r+368|0;f=e+344|0;g=e+208|0;h=e+196|0;j=e+184|0;m=e+36|0;n=e+48|0;o=e+24|0;p=e+12|0;q=e;a:do switch(d|0){case 0:{s=k[b>>2]|0;i[s>>0]=47;i[s+1>>0]=2;i[s+2>>0]=0;i[s+3>>0]=0;s=(k[b>>2]|0)+4|0;k[b>>2]=s;t=a+4|0;u=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[s>>0]=u;i[s+1>>0]=u>>8;i[s+2>>0]=u>>16;i[s+3>>0]=u>>24;u=(k[b>>2]|0)+4|0;k[b>>2]=u;s=a+8|0;t=l[s>>0]|l[s+1>>0]<<8|l[s+2>>0]<<16|l[s+3>>0]<<24;i[u>>0]=t;i[u+1>>0]=t>>8;i[u+2>>0]=t>>16;i[u+3>>0]=t>>24;k[b>>2]=(k[b>>2]|0)+4;break}case 2:{k[c>>2]=(k[c>>2]|0)+12;break}case 1:{t=(k[b>>2]|0)+4|0;k[b>>2]=t;u=a+4|0;s=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[u>>0]=s;i[u+1>>0]=s>>8;i[u+2>>0]=s>>16;i[u+3>>0]=s>>24;t=(k[b>>2]|0)+4|0;k[b>>2]=t;v=a+8|0;w=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;i[v>>0]=w;i[v+1>>0]=w>>8;i[v+2>>0]=w>>16;i[v+3>>0]=w>>24;k[b>>2]=(k[b>>2]|0)+4;switch(s|0){case 622:{s=Qqa(16)|0;B=0;va(468,s|0);w=B;B=0;if(w&1){w=Rb()|0;v=Q;Sqa(s);x=v;y=w;Qb(y|0)}k[a+12>>2]=s;s=Qqa(16)|0;B=0;va(468,s|0);w=B;B=0;if(w&1){w=Rb()|0;v=Q;Sqa(s);x=v;y=w;Qb(y|0)}k[a+16>>2]=s;s=Qqa(16)|0;B=0;va(468,s|0);w=B;B=0;if(w&1){w=Rb()|0;v=Q;Sqa(s);x=v;y=w;Qb(y|0)}k[a+20>>2]=s;s=Qqa(16)|0;B=0;va(468,s|0);w=B;B=0;if(w&1){w=Rb()|0;v=Q;Sqa(s);x=v;y=w;Qb(y|0)}k[a+24>>2]=s;s=Qqa(16)|0;B=0;va(468,s|0);w=B;B=0;if(!(w&1)){k[a+28>>2]=s;break a}w=Rb()|0;v=Q;Sqa(s);x=v;y=w;Qb(y|0);break}case 626:{w=Qqa(16)|0;B=0;va(469,w|0);v=B;B=0;if(v&1){v=Rb()|0;s=Q;Sqa(w);x=s;y=v;Qb(y|0)}k[a+12>>2]=w;w=Qqa(16)|0;B=0;va(469,w|0);v=B;B=0;if(v&1){v=Rb()|0;s=Q;Sqa(w);x=s;y=v;Qb(y|0)}k[a+16>>2]=w;w=Qqa(16)|0;B=0;va(469,w|0);v=B;B=0;if(v&1){v=Rb()|0;s=Q;Sqa(w);x=s;y=v;Qb(y|0)}k[a+20>>2]=w;w=Qqa(16)|0;B=0;va(469,w|0);v=B;B=0;if(v&1){v=Rb()|0;s=Q;Sqa(w);x=s;y=v;Qb(y|0)}k[a+24>>2]=w;w=Qqa(16)|0;B=0;va(469,w|0);v=B;B=0;if(!(v&1)){k[a+28>>2]=w;break a}v=Rb()|0;s=Q;Sqa(w);x=s;y=v;Qb(y|0);break}default:{v=n+56|0;s=n+4|0;k[n>>2]=27524;k[v>>2]=27544;B=0;wa(508,n+56|0,s|0);w=B;B=0;if(w&1){w=Rb()|0;z=Q;A=w;vva(v);Qb(A|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[v>>2]=27488;B=0;va(448,s|0);w=B;B=0;do if(w&1){t=Rb()|0;C=Q;D=t}else{k[s>>2]=27560;t=n+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,s|0,f|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(f);Yua(t);Ava(s);C=F;D=E;break}Yua(f);B=0;E=Ia(40,n|0,114627,14)|0;F=B;B=0;b:do if((((!(F&1)?(B=0,G=ya(427,k[u>>2]|0)|0,H=B,B=0,!(H&1)):0)?(H=Lta(G)|0,B=0,I=Ia(40,E|0,G|0,H|0)|0,H=B,B=0,!(H&1)):0)?(B=0,H=Ia(40,I|0,114642,34)|0,I=B,B=0,!(I&1)):0)?(B=0,Xa(239,H|0,0)|0,H=B,B=0,!(H&1)):0){H=Ab(20)|0;B=0;eb(502,o|0,114677,78);I=B;B=0;do if(!(I&1)){B=0;eb(502,p|0,149525,8);G=B;B=0;if(G&1){G=Rb()|0;J=Q;Yua(o);K=G;L=J;break}B=0;wa(510,q|0,s|0);J=B;B=0;if(J&1){J=Rb()|0;M=1;N=Q;O=J}else{B=0;ua(163,H|0,o|0,p|0,122,q|0);J=B;B=0;if(J&1)P=1;else{B=0;eb(503,H|0,1240,229);B=0;P=0}J=Rb()|0;G=Q;Yua(q);M=P;N=G;O=J}Yua(p);Yua(o);if(M){K=O;L=N}else{R=N;S=O;break b}}else{J=Rb()|0;K=J;L=Q}while(0);zb(H|0);R=L;S=K}else T=68;while(0);if((T|0)==68){E=Rb()|0;R=Q;S=E}k[n>>2]=27468;k[v>>2]=27488;k[s>>2]=27560;Yua(t);Ava(s);vva(v);x=R;y=S;Qb(y|0)}while(0);z=C;A=D;vva(v);Qb(A|0)}}break}default:{s=g+56|0;u=g+4|0;k[g>>2]=27524;k[s>>2]=27544;B=0;wa(508,g+56|0,u|0);w=B;B=0;if(w&1){w=Rb()|0;U=Q;V=w;vva(s);Qb(V|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[s>>2]=27488;B=0;va(448,u|0);w=B;B=0;do if(w&1){E=Rb()|0;W=Q;X=E}else{k[u>>2]=27560;E=g+36|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,u|0,f|0);F=B;B=0;if(F&1){F=Rb()|0;I=Q;Yua(f);Yua(E);Ava(u);W=I;X=F;break}Yua(f);B=0;F=Ia(40,g|0,143951,43)|0;I=B;B=0;c:do if(!(I&1)?(B=0,Xa(239,F|0,0)|0,J=B,B=0,!(J&1)):0){J=Ab(20)|0;B=0;eb(502,h|0,114677,78);G=B;B=0;do if(!(G&1)){B=0;eb(502,j|0,149525,8);Y=B;B=0;if(Y&1){Y=Rb()|0;Z=Q;Yua(h);_=Z;$=Y;break}B=0;wa(510,m|0,u|0);Y=B;B=0;if(Y&1){Y=Rb()|0;aa=Q;ba=Y;ca=1}else{B=0;ua(163,J|0,h|0,j|0,100,m|0);Y=B;B=0;if(Y&1)da=1;else{B=0;eb(503,J|0,1240,229);B=0;da=0}Y=Rb()|0;Z=Q;Yua(m);aa=Z;ba=Y;ca=da}Yua(j);Yua(h);if(ca){_=aa;$=ba}else{ea=aa;fa=ba;break c}}else{Y=Rb()|0;_=Q;$=Y}while(0);zb(J|0);ea=_;fa=$}else T=17;while(0);if((T|0)==17){F=Rb()|0;ea=Q;fa=F}k[g>>2]=27468;k[s>>2]=27488;k[u>>2]=27560;Yua(E);Ava(u);vva(s);x=ea;y=fa;Qb(y|0)}while(0);U=W;V=X;vva(s);Qb(V|0)}}while(0);V=k[a+12>>2]|0;if(V)rd[k[(k[V>>2]|0)+28>>2]&511](V,b,c,d);V=k[a+16>>2]|0;if(V)rd[k[(k[V>>2]|0)+28>>2]&511](V,b,c,d);V=k[a+20>>2]|0;if(V)rd[k[(k[V>>2]|0)+28>>2]&511](V,b,c,d);V=k[a+24>>2]|0;if(V)rd[k[(k[V>>2]|0)+28>>2]&511](V,b,c,d);V=k[a+28>>2]|0;if(!V){r=e;return}rd[k[(k[V>>2]|0)+28>>2]&511](V,b,c,d);r=e;return}function j$(a){a=a|0;return k[a+4>>2]|0}function k$(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=k[a+12>>2]|0;Xc[k[(k[d>>2]|0)+124>>2]&63](d,b,c);return}function l$(a){a=a|0;var b=0,c=0,d=0;b=a+12|0;c=k[b>>2]|0;d=ed[k[(k[c>>2]|0)+160>>2]&511](c,k[a+24>>2]|0)|0;c=k[b>>2]|0;if(c)Ec[k[(k[c>>2]|0)+4>>2]&1023](c);k[b>>2]=d;c=ed[k[(k[d>>2]|0)+156>>2]&511](d,k[a+20>>2]|0)|0;a=k[b>>2]|0;if(!a){k[b>>2]=c;return}Ec[k[(k[a>>2]|0)+4>>2]&1023](a);k[b>>2]=c;return}function m$(a,b,c){a=a|0;b=+b;c=+c;var d=0;d=k[a+12>>2]|0;Qc[k[(k[d>>2]|0)+128>>2]&15](d,b,c);return}function n$(a,b){a=a|0;b=b|0;var c=0;c=k[a+12>>2]|0;Fc[k[(k[c>>2]|0)+136>>2]&1023](c,b);c=k[a+16>>2]|0;Fc[k[(k[c>>2]|0)+136>>2]&1023](c,b);return}function o$(a){a=a|0;var b=0;b=k[a+12>>2]|0;return Hc[k[(k[b>>2]|0)+164>>2]&511](b)|0}function p$(a){a=a|0;var b=0;b=k[a+12>>2]|0;return Hc[k[(k[b>>2]|0)+168>>2]&511](b)|0}function q$(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;i=a+8|0;switch(k[i>>2]|0){case 1:{Fc[k[(k[b>>2]|0)+80>>2]&1023](b,938);break}case 2:{Fc[k[(k[b>>2]|0)+80>>2]&1023](b,939);break}case 3:{Fc[k[(k[b>>2]|0)+80>>2]&1023](b,940);break}default:{j=e+56|0;l=e+4|0;k[e>>2]=27524;k[j>>2]=27544;B=0;wa(508,e+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=e+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,l|0,d|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);Yua(p);Ava(l);q=u;s=t;break}Yua(d);B=0;t=Ia(40,e|0,114890,51)|0;u=B;B=0;if(((!(u&1)?(B=0,u=Xa(242,t|0,k[i>>2]|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,114942,55)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,f|0,114677,78);u=B;B=0;do if(!(u&1)){B=0;eb(502,g|0,114998,11);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(f);x=w;y=v;break}B=0;wa(510,h|0,l|0);v=B;B=0;if(v&1){v=Rb()|0;z=Q;A=v;C=1}else{B=0;ua(163,t|0,f|0,g|0,195,h|0);v=B;B=0;if(v&1)D=1;else{B=0;eb(503,t|0,1240,229);B=0;D=0}v=Rb()|0;w=Q;Yua(h);z=w;A=v;C=D}Yua(g);Yua(f);if(C){x=z;y=A}else{E=z;F=A;k[e>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Qb(F|0)}}else{v=Rb()|0;x=Q;y=v}while(0);zb(t|0);E=x;F=y;k[e>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Qb(F|0)}u=Rb()|0;E=Q;F=u;k[e>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);Qb(F|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}}o=a+28|0;a=k[o>>2]|0;if(!a){k[o>>2]=b;r=c;return}Ec[k[(k[a>>2]|0)+4>>2]&1023](a);k[o>>2]=b;r=c;return}function r$(a,b){a=a|0;b=b|0;var c=0,d=0;c=a+12|0;d=k[c>>2]|0;if(d)Ec[k[(k[d>>2]|0)+4>>2]&1023](d);k[c>>2]=b;s$(a);return}function s$(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;c=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;h=a+12|0;i=k[h>>2]|0;if(i){j=a+16|0;l=k[j>>2]|0;if(!l){m=i;n=k[m>>2]|0;o=n+24|0;p=k[o>>2]|0;q=Hc[p&511](m)|0;k[j>>2]=q;r=b;return}Ec[k[(k[l>>2]|0)+4>>2]&1023](l);m=k[h>>2]|0;n=k[m>>2]|0;o=n+24|0;p=k[o>>2]|0;q=Hc[p&511](m)|0;k[j>>2]=q;r=b;return}b=d+56|0;q=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,q|0);j=B;B=0;if(j&1){j=Rb()|0;s=Q;t=j;vva(b);Qb(t|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,q|0);j=B;B=0;do if(j&1){m=Rb()|0;u=Q;v=m}else{k[q>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,q|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;o=Q;Yua(c);Yua(m);Ava(q);u=o;v=p;break}Yua(c);B=0;p=Ia(40,d|0,115010,10)|0;o=B;B=0;if((((!(o&1)?(B=0,o=ya(427,k[a+4>>2]|0)|0,n=B,B=0,!(n&1)):0)?(n=Lta(o)|0,B=0,h=Ia(40,p|0,o|0,n|0)|0,n=B,B=0,!(n&1)):0)?(B=0,n=Ia(40,h|0,114879,10)|0,h=B,B=0,!(h&1)):0)?(B=0,Xa(239,n|0,0)|0,n=B,B=0,!(n&1)):0){n=Ab(20)|0;B=0;eb(502,e|0,114677,78);h=B;B=0;do if(!(h&1)){B=0;eb(502,f|0,115021,9);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(e);w=p;x=o;break}B=0;wa(510,g|0,q|0);o=B;B=0;if(o&1){o=Rb()|0;y=Q;z=o;A=1}else{B=0;ua(163,n|0,e|0,f|0,267,g|0);o=B;B=0;if(o&1)C=1;else{B=0;eb(503,n|0,1240,229);B=0;C=0}o=Rb()|0;p=Q;Yua(g);y=p;z=o;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;k[d>>2]=27468;k[b>>2]=27488;k[q>>2]=27560;Yua(m);Ava(q);vva(b);Qb(E|0)}}else{o=Rb()|0;w=Q;x=o}while(0);zb(n|0);D=w;E=x;k[d>>2]=27468;k[b>>2]=27488;k[q>>2]=27560;Yua(m);Ava(q);vva(b);Qb(E|0)}h=Rb()|0;D=Q;E=h;k[d>>2]=27468;k[b>>2]=27488;k[q>>2]=27560;Yua(m);Ava(q);vva(b);Qb(E|0)}while(0);s=u;t=v;vva(b);Qb(t|0)}function t$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=k[a+12>>2]|0;return ld[k[(k[e>>2]|0)+144>>2]&127](e,b,c,d)|0}function u$(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=k[a+12>>2]|0;return Rc[k[(k[d>>2]|0)+148>>2]&63](d,b,c)|0}function v$(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=k[a+12>>2]|0;nd[k[(k[d>>2]|0)+140>>2]&1023](d,b,c);return}function w$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;i=e+12|0;j=e;if(!(Ita(d,115926)|0)){l=k[a+12>>2]|0;nd[k[(k[l>>2]|0)+140>>2]&1023](l,b,c);r=e;return}if(!(Ita(d,115325)|0)){l=k[a+20>>2]|0;nd[k[(k[l>>2]|0)+140>>2]&1023](l,b,c);r=e;return}if(!(Ita(d,115336)|0)){l=k[a+24>>2]|0;nd[k[(k[l>>2]|0)+140>>2]&1023](l,b,c);r=e;return}if(!(Ita(d,115031)|0)){l=k[a+28>>2]|0;nd[k[(k[l>>2]|0)+140>>2]&1023](l,b,c);r=e;return}e=g+56|0;c=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;m=Q;n=b;vva(e);Qb(n|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,c|0);b=B;B=0;do if(b&1){l=Rb()|0;o=Q;p=l}else{k[c>>2]=27560;l=g+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,c|0,f|0);a=B;B=0;if(a&1){a=Rb()|0;q=Q;Yua(f);Yua(l);Ava(c);o=q;p=a;break}Yua(f);B=0;a=Ia(40,g|0,115040,5)|0;q=B;B=0;if(((!(q&1)?(q=Lta(d)|0,B=0,s=Ia(40,a|0,d|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,s|0,146481,18)|0,s=B,B=0,!(s&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,h|0,114677,78);s=B;B=0;do if(!(s&1)){B=0;eb(502,i|0,115046,19);a=B;B=0;if(a&1){a=Rb()|0;t=Q;Yua(h);u=t;v=a;break}B=0;wa(510,j|0,c|0);a=B;B=0;if(a&1){a=Rb()|0;w=Q;x=a;y=1}else{B=0;ua(163,q|0,h|0,i|0,236,j|0);a=B;B=0;if(a&1)z=1;else{B=0;eb(503,q|0,1240,229);B=0;z=0}a=Rb()|0;t=Q;Yua(j);w=t;x=a;y=z}Yua(i);Yua(h);if(y){u=w;v=x}else{A=w;C=x;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(e);Qb(C|0)}}else{a=Rb()|0;u=Q;v=a}while(0);zb(q|0);A=u;C=v;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(e);Qb(C|0)}s=Rb()|0;A=Q;C=s;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(e);Qb(C|0)}while(0);m=o;n=p;vva(e);Qb(n|0)}function x$(a,b){a=a|0;b=b|0;var c=0;c=k[a+12>>2]|0;Fc[k[(k[c>>2]|0)+64>>2]&1023](c,b);return}function y$(a,b){a=a|0;b=b|0;var c=0;c=k[a+12>>2]|0;Fc[k[(k[c>>2]|0)+36>>2]&1023](c,b);return}function z$(a,b){a=a|0;b=b|0;var c=0;c=k[a+12>>2]|0;Fc[k[(k[c>>2]|0)+40>>2]&1023](c,b);return}function A$(a,b){a=a|0;b=b|0;var c=0;c=k[a+12>>2]|0;Fc[k[(k[c>>2]|0)+44>>2]&1023](c,b);return}function B$(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=k[a+12>>2]|0;nd[k[(k[d>>2]|0)+48>>2]&1023](d,b,c);return}function C$(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=k[a+28>>2]|0;nd[k[(k[d>>2]|0)+48>>2]&1023](d,b,c);return}function D$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=k[a+12>>2]|0;rd[k[(k[e>>2]|0)+60>>2]&511](e,b,c,d);return}function E$(a){a=a|0;var b=0;b=k[a+12>>2]|0;return +(+Zc[k[(k[b>>2]|0)+112>>2]&255](b))}function F$(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0;c=r;r=r+368|0;d=c+344|0;e=c+208|0;f=c+196|0;g=c+184|0;h=c+36|0;i=c+48|0;j=c+24|0;l=c+12|0;m=c;n=a+28|0;if(!(k[n>>2]|0)){o=e+56|0;p=e+4|0;k[e>>2]=27524;k[o>>2]=27544;B=0;wa(508,e+56|0,p|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;t=q;vva(o);Qb(t|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[o>>2]=27488;B=0;va(448,p|0);q=B;B=0;do if(q&1){u=Rb()|0;v=Q;w=u}else{k[p>>2]=27560;u=e+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,p|0,d|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(d);Yua(u);Ava(p);v=y;w=x;break}Yua(d);B=0;x=Ia(40,e|0,115066,12)|0;y=B;B=0;a:do if((((!(y&1)?(B=0,z=ya(427,k[a+4>>2]|0)|0,A=B,B=0,!(A&1)):0)?(A=Lta(z)|0,B=0,C=Ia(40,x|0,z|0,A|0)|0,A=B,B=0,!(A&1)):0)?(B=0,A=Ia(40,C|0,114879,10)|0,C=B,B=0,!(C&1)):0)?(B=0,Xa(239,A|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,f|0,114677,78);C=B;B=0;do if(!(C&1)){B=0;eb(502,g|0,115079,11);z=B;B=0;if(z&1){z=Rb()|0;D=Q;Yua(f);E=z;F=D;break}B=0;wa(510,h|0,p|0);D=B;B=0;if(D&1){D=Rb()|0;G=Q;H=D;I=1}else{B=0;ua(163,A|0,f|0,g|0,273,h|0);D=B;B=0;if(D&1)J=1;else{B=0;eb(503,A|0,1240,229);B=0;J=0}D=Rb()|0;z=Q;Yua(h);G=z;H=D;I=J}Yua(g);Yua(f);if(I){E=H;F=G}else{K=H;L=G;break a}}else{D=Rb()|0;E=D;F=Q}while(0);zb(A|0);K=E;L=F}else M=20;while(0);if((M|0)==20){x=Rb()|0;K=x;L=Q}k[e>>2]=27468;k[o>>2]=27488;k[p>>2]=27560;Yua(u);Ava(p);vva(o);N=L;O=K;Qb(O|0)}while(0);s=v;t=w;vva(o);Qb(t|0)}t=a+16|0;o=k[t>>2]|0;if(o){w=a+12|0;v=k[w>>2]|0;if(!v){P=o;R=k[P>>2]|0;S=R+24|0;T=k[S>>2]|0;U=Hc[T&511](P)|0;k[w>>2]=U;V=k[U>>2]|0;W=V+124|0;X=k[W>>2]|0;Y=k[n>>2]|0;Xc[X&63](U,Y,b);r=c;return}Ec[k[(k[v>>2]|0)+4>>2]&1023](v);P=k[t>>2]|0;R=k[P>>2]|0;S=R+24|0;T=k[S>>2]|0;U=Hc[T&511](P)|0;k[w>>2]=U;V=k[U>>2]|0;W=V+124|0;X=k[W>>2]|0;Y=k[n>>2]|0;Xc[X&63](U,Y,b);r=c;return}c=i+56|0;Y=i+4|0;k[i>>2]=27524;k[c>>2]=27544;B=0;wa(508,i+56|0,Y|0);U=B;B=0;if(U&1){U=Rb()|0;Z=Q;_=U;vva(c);Qb(_|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[c>>2]=27488;B=0;va(448,Y|0);U=B;B=0;do if(U&1){X=Rb()|0;$=Q;aa=X}else{k[Y>>2]=27560;X=i+36|0;k[X>>2]=0;k[X+4>>2]=0;k[X+8>>2]=0;k[X+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Y|0,d|0);n=B;B=0;if(n&1){n=Rb()|0;W=Q;Yua(d);Yua(X);Ava(Y);$=W;aa=n;break}Yua(d);B=0;n=Ia(40,i|0,115010,10)|0;W=B;B=0;b:do if((((!(W&1)?(B=0,V=ya(427,k[a+4>>2]|0)|0,w=B,B=0,!(w&1)):0)?(w=Lta(V)|0,B=0,P=Ia(40,n|0,V|0,w|0)|0,w=B,B=0,!(w&1)):0)?(B=0,w=Ia(40,P|0,114879,10)|0,P=B,B=0,!(P&1)):0)?(B=0,Xa(239,w|0,0)|0,w=B,B=0,!(w&1)):0){w=Ab(20)|0;B=0;eb(502,j|0,114677,78);P=B;B=0;do if(!(P&1)){B=0;eb(502,l|0,115079,11);V=B;B=0;if(V&1){V=Rb()|0;T=Q;Yua(j);ba=V;ca=T;break}B=0;wa(510,m|0,Y|0);T=B;B=0;if(T&1){T=Rb()|0;da=1;ea=Q;fa=T}else{B=0;ua(163,w|0,j|0,l|0,274,m|0);T=B;B=0;if(T&1)ga=1;else{B=0;eb(503,w|0,1240,229);B=0;ga=0}T=Rb()|0;V=Q;Yua(m);da=ga;ea=V;fa=T}Yua(l);Yua(j);if(da){ba=fa;ca=ea}else{ha=ea;ia=fa;break b}}else{T=Rb()|0;ba=T;ca=Q}while(0);zb(w|0);ha=ca;ia=ba}else M=47;while(0);if((M|0)==47){n=Rb()|0;ha=Q;ia=n}k[i>>2]=27468;k[c>>2]=27488;k[Y>>2]=27560;Yua(X);Ava(Y);vva(c);N=ha;O=ia;Qb(O|0)}while(0);Z=$;_=aa;vva(c);Qb(_|0)}function G$(a,b){a=a|0;b=b|0;var c=0;c=k[a+12>>2]|0;Fc[k[(k[c>>2]|0)+132>>2]&1023](c,b);return}function H$(a,b){a=a|0;b=b|0;return}function I$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;e=c+24|0;f=c+12|0;g=c;c=a+56|0;h=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(c);Qb(l|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=a+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,h|0,b|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(b);Yua(m);Ava(h);n=q;o=p;break}Yua(b);B=0;p=Ia(40,a|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,115091,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,121355,13);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,56,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[a>>2]=27468;k[c>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(c);Qb(E|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}function J$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,115091,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121355,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,57,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function K$(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,115091,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121324,30);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,60,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function L$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,115091,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,120910,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,61,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function M$(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;f=d+12|0;g=d;d=b+56|0;h=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(d);Qb(l|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=b+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,b|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,a|0,115091,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,120878,31);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(a);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,a|0,f|0,62,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(a);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[b>>2]=27468;k[d>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(d);Qb(E|0)}while(0);j=n;l=o;vva(d);Qb(l|0)}function N$(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,115091,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115254,10);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,63,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function O$(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,115091,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115244,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,64,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function P$(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,115091,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,115231,12);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,65,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function Q$(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,115091,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115218,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,71,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function R$(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,115091,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115211,6);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,73,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function S$(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,115091,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115204,6);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,75,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function T$(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,115091,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115200,3);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,72,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0);return +(0.0)}function U$(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,120763,23)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,115091,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,120874,3);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,66,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function V$(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;a=r;r=r+192|0;c=a+176|0;d=a+40|0;e=a+24|0;f=a+12|0;g=a;a=d+56|0;h=d+4|0;k[d>>2]=27524;k[a>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(a);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[a>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(c);Yua(m);Ava(h);n=q;o=p;break}Yua(c);B=0;p=Ia(40,d|0,149721,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,115091,88);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,115194,5);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,67,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[a>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(a);Qb(E|0)}while(0);j=n;l=o;vva(a);Qb(l|0)}function W$(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,115091,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121179,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,43,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function X$(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,115091,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121166,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,45,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Y$(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,115091,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,121153,12);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,44,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function Z$(a){a=a|0;return 1}function _$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;c=d+176|0;b=d+40|0;a=d+24|0;e=d+12|0;f=d;d=b+56|0;g=b+4|0;k[b>>2]=27524;k[d>>2]=27544;B=0;wa(508,b+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(d);Qb(j|0)}k[b+128>>2]=0;k[b+132>>2]=-1;k[b>>2]=27468;k[d>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=b+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[b+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,g|0,c|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(c);Yua(l);Ava(g);m=p;n=o;break}Yua(c);B=0;o=Ia(40,b|0,134695,17)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,a|0,115091,88);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115180,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(a);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,a|0,e|0,83,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(a);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[b>>2]=27468;k[d>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(d);Qb(D|0)}while(0);i=m;j=n;vva(d);Qb(j|0)}function $$(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0.0,_=0.0,$=0.0;b=r;r=r+432|0;c=b+32|0;d=b+412|0;e=b+408|0;f=b+404|0;g=b+421|0;h=b+420|0;j=b+400|0;l=b+396|0;m=b+392|0;n=b+388|0;o=b+384|0;q=b+380|0;s=b+232|0;t=b+368|0;u=b+224|0;v=b+216|0;w=b;x=b+80|0;y=b+68|0;z=b+64|0;k[j>>2]=0;k[l>>2]=0;k[m>>2]=0;k[n>>2]=0;k[o>>2]=0;k[q>>2]=0;A=a+44|0;cO(k[A>>2]|0,b+416|0,198);hO(k[A>>2]|0,j,0,176);cO(k[A>>2]|0,e,196);hO(k[A>>2]|0,l,0,186);iO(k[A>>2]|0,m,0,200);cO(k[A>>2]|0,f,476);bO(k[A>>2]|0,g,99);bO(k[A>>2]|0,h,314);mO(k[A>>2]|0,0,759);j_(o,k[A>>2]|0,k[f>>2]|0);g0(q,k[f>>2]|0);a:do if(FY()|0){f=s+56|0;q=s+4|0;k[s>>2]=27524;k[f>>2]=27544;B=0;wa(508,s+56|0,q|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;E=C;vva(f);Qb(E|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[f>>2]=27488;B=0;va(448,q|0);C=B;B=0;do if(C&1){F=Rb()|0;G=Q;H=F}else{k[q>>2]=27560;F=s+36|0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;k[s+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,q|0,c|0);I=B;B=0;if(I&1){I=Rb()|0;J=Q;Yua(c);Yua(F);Ava(q);G=J;H=I;break}Yua(c);B=0;Ia(40,s|0,115265,30)|0;I=B;B=0;do if(!(I&1)?(B=0,wa(510,t|0,q|0),J=B,B=0,!(J&1)):0){B=0;ya(425,t|0)|0;J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(t);L=J;M=K;break}else{Yua(t);k[s>>2]=27468;k[f>>2]=27488;k[q>>2]=27560;Yua(F);Ava(q);vva(f);break a}}else N=14;while(0);if((N|0)==14){I=Rb()|0;L=I;M=Q}k[s>>2]=27468;k[f>>2]=27488;k[q>>2]=27560;Yua(F);Ava(q);vva(f);O=L;P=M;Qb(O|0)}while(0);D=G;E=H;vva(f);Qb(E|0)}while(0);if(i[g>>0]|0)Ec[k[o>>2]&1023](a);k[u>>2]=0;g=a+20|0;E=a+24|0;H=a+28|0;G=a+36|0;D=a+40|0;$oa(u,k[g>>2]|0,k[E>>2]|0,k[H>>2]|0,k[G>>2]|0,k[D>>2]|0,k[A>>2]|0,115926,0);M=k[u>>2]|0;if(k[M>>2]|0){L=k[k[M+4>>2]>>2]|0;s=Hc[k[(k[L>>2]|0)+52>>2]&511](L)|0;L=k[u>>2]|0;if(!(k[L>>2]|0)){R=L;S=s}else{t=k[k[L+4>>2]>>2]|0;Fc[k[(k[t>>2]|0)+28>>2]&1023](t,d);R=k[u>>2]|0;S=s}}else{R=M;S=0}if(R){if((k[R>>2]|0)!=0?(M=k[R+4>>2]|0,(M|0)!=0):0){s=k[M>>2]|0;if(s)Ec[k[(k[s>>2]|0)+4>>2]&1023](s);Sqa(M)}Sqa(R)}R=k[e>>2]|0;M=k[d>>2]|0;s=k[l>>2]|0;u=k[m>>2]|0;k[v>>2]=a;k[v+4>>2]=M;p[w>>3]=0.0;p[w+8>>3]=1.0;k[w+16>>2]=u;k[w+20>>2]=s;k[w+24>>2]=R;k[w+28>>2]=M;k[c>>2]=k[w>>2];k[c+4>>2]=k[w+4>>2];k[c+8>>2]=k[w+8>>2];k[c+12>>2]=k[w+12>>2];k[c+16>>2]=k[w+16>>2];k[c+20>>2]=k[w+20>>2];k[c+24>>2]=k[w+24>>2];k[c+28>>2]=k[w+28>>2];epa(n,c,S,38,2,v);b:do if(FY()|0){v=x+56|0;w=x+4|0;k[x>>2]=27524;k[v>>2]=27544;B=0;wa(508,x+56|0,w|0);M=B;B=0;if(M&1){M=Rb()|0;T=Q;U=M;vva(v);Qb(U|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[v>>2]=27488;B=0;va(448,w|0);M=B;B=0;do if(M&1){R=Rb()|0;V=Q;W=R}else{k[w>>2]=27560;R=x+36|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[x+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,w|0,c|0);s=B;B=0;if(s&1){s=Rb()|0;u=Q;Yua(c);Yua(R);Ava(w);V=u;W=s;break}Yua(c);B=0;Ia(40,x|0,115296,28)|0;s=B;B=0;do if(!(s&1)?(B=0,wa(510,y|0,w|0),u=B,B=0,!(u&1)):0){B=0;ya(425,y|0)|0;u=B;B=0;if(u&1){u=Rb()|0;t=Q;Yua(y);X=u;Y=t;break}else{Yua(y);k[x>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(R);Ava(w);vva(v);break b}}else N=42;while(0);if((N|0)==42){s=Rb()|0;X=s;Y=Q}k[x>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(R);Ava(w);vva(v);O=X;P=Y;Qb(O|0)}while(0);T=V;U=W;vva(v);Qb(U|0)}while(0);k[c>>2]=0;k[z>>2]=0;apa(c,k[g>>2]|0,k[E>>2]|0,k[H>>2]|0,k[G>>2]|0,k[D>>2]|0,k[A>>2]|0,115325,0);apa(z,k[g>>2]|0,k[E>>2]|0,k[H>>2]|0,k[G>>2]|0,k[D>>2]|0,k[A>>2]|0,115336,0);D=k[d>>2]|0;d=k[z>>2]|0;if((D|0)>0){G=k[c>>2]|0;H=0;do{E=S+(H<<3)|0;Z=+p[E>>3];_=+p[d+(H<<3)>>3];if(Z>_){p[E>>3]=_;$=_}else $=Z;Z=+p[G+(H<<3)>>3];if($<Z)p[E>>3]=Z;H=H+1|0}while((H|0)<(D|0))}if(d)Tqa(d);k[z>>2]=0;z=k[c>>2]|0;if(z)Tqa(z);k[c>>2]=0;bpa(a,S);mO(k[A>>2]|0,1,759);Ec[k[o>>2]&1023](a);c:do if(!(i[h>>0]|0)){o=a+48|0;li(a,o);A=k[o>>2]|0;o=Qqa(40)|0;B=0;c=ya(428,A|0)|0;z=B;B=0;d:do if(!(z&1)?(d=k[n>>2]|0,D=k[e>>2]|0,k[o>>2]=27964,k[o+4>>2]=c+1,H=o+16|0,k[H>>2]=D,D=o+20|0,k[D>>2]=1,B=0,wa(512,o+8|0,764),G=B,B=0,!(G&1)):0){k[o+24>>2]=0;p[o+32>>3]=0.0;G=ma(k[D>>2]|0,k[H>>2]|0)|0;do if(G){B=0;H=ya(422,(G>>>0>536870911?-1:G<<3)|0)|0;D=B;B=0;if(D&1)break d;k[o+12>>2]=H;if(!d){B=0;ib(283,142353,115347,137,142345);B=0;break d}else{TEa(H|0,d|0,G<<3|0)|0;break}}else k[o+12>>2]=0;while(0);ih(A,o)|0;break c}while(0);A=Rb()|0;c=Q;Sqa(o);O=A;P=c;Qb(O|0)}while(0);O=k[j>>2]|0;if(O)Tqa(O);k[j>>2]=0;j=k[l>>2]|0;if(j)Tqa(j);k[l>>2]=0;l=k[m>>2]|0;if(l)Tqa(l);k[m>>2]=0;m=k[n>>2]|0;if(m)Tqa(m);k[n>>2]=0;if(!S){r=b;return}Tqa(S);r=b;return}function a0(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0.0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0.0;c=r;r=r+672|0;d=c+656|0;e=c;f=c+652|0;g=c+644|0;h=c+640|0;i=c+624|0;j=c+464|0;l=c+628|0;m=c+612|0;n=c+600|0;o=c+456|0;q=c+320|0;s=c+168|0;t=c+184|0;u=c+20|0;v=c+32|0;w=c+8|0;x=k[b>>2]|0;y=k[b+4>>2]|0;b=x+44|0;cO(k[b>>2]|0,c+648|0,477);cO(k[b>>2]|0,f,476);cO(k[b>>2]|0,g,199);k[h>>2]=0;k[i>>2]=0;z=x+20|0;A=x+24|0;C=x+28|0;D=x+36|0;E=x+40|0;apa(h,k[z>>2]|0,k[A>>2]|0,k[C>>2]|0,k[D>>2]|0,k[E>>2]|0,k[b>>2]|0,115325,0);apa(i,k[z>>2]|0,k[A>>2]|0,k[C>>2]|0,k[D>>2]|0,k[E>>2]|0,k[b>>2]|0,115336,0);if((y|0)>0){b=k[i>>2]|0;E=k[h>>2]|0;D=0;do{C=a+(D<<3)|0;F=+p[C>>3];G=+p[b+(D<<3)>>3];if(F>G){p[C>>3]=G;H=G}else H=F;F=+p[E+(D<<3)>>3];if(H<F)p[C>>3]=F;D=D+1|0}while((D|0)!=(y|0))}bpa(x,a);switch(k[f>>2]|0){case 518:{xh(x,497);j0(x);break}case 499:{xh(x,497);Woa(x,1);break}case 485:{xh(x,484);Voa(x);break}case 489:break;case 487:{xh(x,486);Voa(x);break}default:{a=j+56|0;y=j+4|0;k[j>>2]=27524;k[a>>2]=27544;B=0;wa(508,j+56|0,y|0);D=B;B=0;if(D&1){D=Rb()|0;I=Q;J=D;vva(a);Qb(J|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[a>>2]=27488;B=0;va(448,y|0);D=B;B=0;do if(D&1){E=Rb()|0;K=Q;L=E}else{k[y>>2]=27560;E=j+36|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[j+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,y|0,d|0);b=B;B=0;if(b&1){b=Rb()|0;C=Q;Yua(d);Yua(E);Ava(y);K=C;L=b;break}Yua(d);B=0;b=Ia(40,j|0,134802,9)|0;C=B;B=0;a:do if((((!(C&1)?(B=0,A=ya(427,k[f>>2]|0)|0,z=B,B=0,!(z&1)):0)?(z=Lta(A)|0,B=0,M=Ia(40,b|0,A|0,z|0)|0,z=B,B=0,!(z&1)):0)?(B=0,z=Ia(40,M|0,127493,20)|0,M=B,B=0,!(M&1)):0)?(B=0,Xa(239,z|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,l|0,115461,69);M=B;B=0;do if(!(M&1)){B=0;eb(502,m|0,115531,12);A=B;B=0;if(A&1){A=Rb()|0;N=Q;Yua(l);O=N;P=A;break}B=0;wa(510,n|0,y|0);A=B;B=0;if(A&1){A=Rb()|0;R=Q;S=A;T=1}else{B=0;ua(163,z|0,l|0,m|0,168,n|0);A=B;B=0;if(A&1)U=1;else{B=0;eb(503,z|0,1240,229);B=0;U=0}A=Rb()|0;N=Q;Yua(n);R=N;S=A;T=U}Yua(m);Yua(l);if(T){O=R;P=S}else{V=R;W=S;break a}}else{A=Rb()|0;O=Q;P=A}while(0);zb(z|0);V=O;W=P}else X=31;while(0);if((X|0)==31){b=Rb()|0;V=Q;W=b}k[j>>2]=27468;k[a>>2]=27488;k[y>>2]=27560;Yua(E);Ava(y);vva(a);Y=V;Z=W;Qb(Z|0)}while(0);I=K;J=L;vva(a);Qb(J|0)}}k[o>>2]=0;ki(x,e,o,0);x=q+56|0;J=q+4|0;k[q>>2]=27524;k[x>>2]=27544;B=0;wa(508,q+56|0,J|0);a=B;B=0;if(a&1){a=Rb()|0;_=Q;$=a;vva(x);Qb($|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[x>>2]=27488;B=0;va(448,J|0);a=B;B=0;do if(a&1){L=Rb()|0;aa=Q;ba=L}else{k[J>>2]=27560;L=q+36|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;k[q+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,J|0,d|0);K=B;B=0;if(K&1){K=Rb()|0;I=Q;Yua(d);Yua(L);Ava(J);aa=I;ba=K;break}Yua(d);B=0;K=Ia(40,q|0,115544,7)|0;I=B;B=0;do if(((!(I&1)?(k[K+(k[(k[K>>2]|0)+-12>>2]|0)+12>>2]=12,k[K+(k[(k[K>>2]|0)+-12>>2]|0)+8>>2]=7,B=0,W=Sa(1,K|0,+(+p[e>>3]))|0,V=B,B=0,!(V&1)):0)?(B=0,Ia(40,W|0,115552,5)|0,W=B,B=0,!(W&1)):0)?(B=0,wa(510,s|0,J|0),W=B,B=0,!(W&1)):0){B=0;ya(425,s|0)|0;W=B;B=0;if(W&1){W=Rb()|0;V=Q;Yua(s);ca=V;da=W;break}Yua(s);k[q>>2]=27468;k[x>>2]=27488;k[J>>2]=27560;Yua(L);Ava(J);vva(x);b:do if((k[g>>2]|0)>0){W=t+56|0;V=t+4|0;y=t+56|0;j=t+128|0;P=t+132|0;O=t+36|0;S=t+52|0;R=0;while(1){k[t>>2]=27524;k[W>>2]=27544;B=0;wa(508,y|0,V|0);T=B;B=0;if(T&1){X=70;break}k[j>>2]=0;k[P>>2]=-1;k[t>>2]=27468;k[W>>2]=27488;B=0;va(448,V|0);T=B;B=0;if(T&1){X=71;break}k[V>>2]=27560;k[O>>2]=0;k[O+4>>2]=0;k[O+8>>2]=0;k[O+12>>2]=0;k[S>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,V|0,d|0);T=B;B=0;if(T&1){X=69;break}Yua(d);B=0;T=Ia(40,t|0,149175,1)|0;l=B;B=0;if(l&1){X=79;break}k[T+(k[(k[T>>2]|0)+-12>>2]|0)+12>>2]=12;k[T+(k[(k[T>>2]|0)+-12>>2]|0)+8>>2]=7;B=0;Sa(1,T|0,+(+p[(k[o>>2]|0)+(R<<3)>>3]))|0;T=B;B=0;if(T&1){X=79;break}B=0;wa(510,u|0,V|0);T=B;B=0;if(T&1){X=79;break}B=0;ya(425,u|0)|0;T=B;B=0;if(T&1){X=80;break}Yua(u);k[t>>2]=27468;k[W>>2]=27488;k[V>>2]=27560;Yua(O);Ava(V);vva(W);R=R+1|0;if((R|0)>=(k[g>>2]|0))break b}if((X|0)==69){R=Rb()|0;S=Q;Yua(d);Yua(O);Ava(V);ea=S;fa=R;X=72}else if((X|0)==70){R=Rb()|0;ga=Q;ha=R;vva(W);Qb(ha|0)}else if((X|0)==71){R=Rb()|0;ea=Q;fa=R;X=72}else if((X|0)==79){R=Rb()|0;ia=Q;ja=R;X=81}else if((X|0)==80){R=Rb()|0;S=Q;Yua(u);ia=S;ja=R;X=81}if((X|0)==72){ga=ea;ha=fa;vva(W);Qb(ha|0)}else if((X|0)==81){k[t>>2]=27468;k[W>>2]=27488;k[V>>2]=27560;Yua(O);Ava(V);vva(W);Y=ia;Z=ja;Qb(Z|0)}}while(0);z=v+56|0;R=v+4|0;k[v>>2]=27524;k[z>>2]=27544;B=0;wa(508,v+56|0,R|0);S=B;B=0;if(S&1){S=Rb()|0;ka=Q;la=S;vva(z);Qb(la|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[z>>2]=27488;B=0;va(448,R|0);S=B;B=0;do if(S&1){P=Rb()|0;ma=Q;na=P}else{k[R>>2]=27560;P=v+36|0;k[P>>2]=0;k[P+4>>2]=0;k[P+8>>2]=0;k[P+12>>2]=0;k[v+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,R|0,d|0);j=B;B=0;if(j&1){j=Rb()|0;y=Q;Yua(d);Yua(P);Ava(R);ma=y;na=j;break}Yua(d);B=0;Ia(40,v|0,149177,1)|0;j=B;B=0;do if(!(j&1)?(B=0,wa(510,w|0,R|0),y=B,B=0,!(y&1)):0){B=0;ya(425,w|0)|0;y=B;B=0;if(y&1){y=Rb()|0;T=Q;Yua(w);oa=T;pa=y;break}Yua(w);k[v>>2]=27468;k[z>>2]=27488;k[R>>2]=27560;Yua(P);Ava(R);vva(z);y=k[i>>2]|0;if(y)Tqa(y);k[i>>2]=0;y=k[h>>2]|0;if(y)Tqa(y);k[h>>2]=0;y=k[o>>2]|0;if(!y){qa=+p[e>>3];r=c;return +qa}Tqa(y);qa=+p[e>>3];r=c;return +qa}else X=91;while(0);if((X|0)==91){j=Rb()|0;oa=Q;pa=j}k[v>>2]=27468;k[z>>2]=27488;k[R>>2]=27560;Yua(P);Ava(R);vva(z);Y=oa;Z=pa;Qb(Z|0)}while(0);ka=ma;la=na;vva(z);Qb(la|0)}else X=63;while(0);if((X|0)==63){K=Rb()|0;ca=Q;da=K}k[q>>2]=27468;k[x>>2]=27488;k[J>>2]=27560;Yua(L);Ava(J);vva(x);Y=ca;Z=da;Qb(Z|0)}while(0);_=aa;$=ba;vva(x);Qb($|0);return +(0.0)}function b0(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0.0,P=0.0,R=0,S=0.0,T=0,U=0.0,V=0.0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0.0;d=r;r=r+528|0;e=d+504|0;f=d;g=d+500|0;h=d+496|0;i=d+488|0;j=d+484|0;l=d+480|0;m=d+476|0;n=d+472|0;o=d+468|0;q=d+464|0;s=d+460|0;t=d+312|0;u=d+448|0;v=d+160|0;w=d+296|0;x=d+24|0;y=d+8|0;k[g>>2]=0;k[l>>2]=0;k[m>>2]=0;k[n>>2]=0;k[o>>2]=0;z=k[c>>2]|0;A=k[c+4>>2]|0;c=z+44|0;cO(k[c>>2]|0,d+492|0,477);cO(k[c>>2]|0,h,476);cO(k[c>>2]|0,i,199);jO(k[c>>2]|0,l,0,0,181);cO(k[c>>2]|0,j,198);C=z+28|0;D=nn(k[C>>2]|0)|0;k[q>>2]=0;k[s>>2]=0;E=z+20|0;F=z+24|0;G=z+36|0;H=z+40|0;apa(q,k[E>>2]|0,k[F>>2]|0,k[C>>2]|0,k[G>>2]|0,k[H>>2]|0,k[c>>2]|0,115325,0);apa(s,k[E>>2]|0,k[F>>2]|0,k[C>>2]|0,k[G>>2]|0,k[H>>2]|0,k[c>>2]|0,115336,0);I=(A|0)>0;if(I){J=k[s>>2]|0;K=k[q>>2]|0;L=0;do{M=b+(L<<3)|0;N=+p[M>>3];O=+p[J+(L<<3)>>3];if(N>O){p[M>>3]=O;P=O}else P=N;N=+p[K+(L<<3)>>3];if(P<N)p[M>>3]=N;L=L+1|0}while((L|0)!=(A|0))}bpa(z,b);L=k[h>>2]|0;if((L|0)==518){v_(z);R=k[h>>2]|0}else R=L;g0(g,R);Ec[k[g>>2]&1023](z);dpa(n,o,k[E>>2]|0,k[F>>2]|0,k[C>>2]|0,k[G>>2]|0,k[H>>2]|0,k[c>>2]|0);g=k[l>>2]|0;R=k[o>>2]|0;P=+p[g>>3]/+p[R>>3];L=k[j>>2]|0;if((L|0)>1){N=+KY(P,+p[g+8>>3]/+p[R+8>>3]);R=k[j>>2]|0;if((R|0)>2){g=2;O=N;while(1){S=+KY(O,+p[(k[l>>2]|0)+(g<<3)>>3]/+p[(k[o>>2]|0)+(g<<3)>>3]);g=g+1|0;h=k[j>>2]|0;if((g|0)>=(h|0)){T=h;U=S;break}else O=S}}else{T=R;U=N}}else{T=L;U=P}if((T|0)>0?(L=k[n>>2]|0,(D|0)>0):0){R=0;do{g=ma(R,D)|0;j=0;do{h=L+(j+g<<3)|0;p[h>>3]=U*+p[h>>3];j=j+1|0}while((j|0)!=(D|0));R=R+1|0}while((R|0)<(T|0))}if(I){I=k[s>>2]|0;T=k[q>>2]|0;R=k[n>>2]|0;D=0;do{L=b+(D<<3)|0;U=+p[L>>3];if(!(U>=+p[I+(D<<3)>>3]))V=U;else{p[R+(D<<3)>>3]=0.0;V=+p[L>>3]}if(V<=+p[T+(D<<3)>>3])p[R+(D<<3)>>3]=0.0;D=D+1|0}while((D|0)!=(A|0));W=R}else W=k[n>>2]|0;_oa(k[E>>2]|0,k[F>>2]|0,k[C>>2]|0,k[G>>2]|0,k[H>>2]|0,k[c>>2]|0,W);ki(z,f,m,0);z=t+56|0;W=t+4|0;k[t>>2]=27524;k[z>>2]=27544;B=0;wa(508,t+56|0,W|0);c=B;B=0;if(c&1){c=Rb()|0;X=Q;Y=c;vva(z);Qb(Y|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[z>>2]=27488;B=0;va(448,W|0);c=B;B=0;do if(c&1){H=Rb()|0;Z=Q;_=H}else{k[W>>2]=27560;H=t+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[t+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,W|0,e|0);G=B;B=0;if(G&1){G=Rb()|0;C=Q;Yua(e);Yua(H);Ava(W);Z=C;_=G;break}Yua(e);B=0;G=Ia(40,t|0,115544,7)|0;C=B;B=0;do if(((!(C&1)?(k[G+(k[(k[G>>2]|0)+-12>>2]|0)+12>>2]=12,k[G+(k[(k[G>>2]|0)+-12>>2]|0)+8>>2]=7,B=0,F=Sa(1,G|0,+(+p[f>>3]))|0,E=B,B=0,!(E&1)):0)?(B=0,Ia(40,F|0,115552,5)|0,F=B,B=0,!(F&1)):0)?(B=0,wa(510,u|0,W|0),F=B,B=0,!(F&1)):0){B=0;ya(425,u|0)|0;F=B;B=0;if(F&1){F=Rb()|0;E=Q;Yua(u);$=E;aa=F;break}Yua(u);k[t>>2]=27468;k[z>>2]=27488;k[W>>2]=27560;Yua(H);Ava(W);vva(z);a:do if((k[i>>2]|0)>0){F=v+56|0;E=v+4|0;R=v+56|0;A=v+128|0;D=v+132|0;T=v+36|0;I=v+52|0;b=0;while(1){k[v>>2]=27524;k[F>>2]=27544;B=0;wa(508,R|0,E|0);L=B;B=0;if(L&1){ba=57;break}k[A>>2]=0;k[D>>2]=-1;k[v>>2]=27468;k[F>>2]=27488;B=0;va(448,E|0);L=B;B=0;if(L&1){ba=58;break}k[E>>2]=27560;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[I>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,E|0,e|0);L=B;B=0;if(L&1){ba=56;break}Yua(e);B=0;L=Ia(40,v|0,149175,1)|0;j=B;B=0;if(j&1){ba=66;break}k[L+(k[(k[L>>2]|0)+-12>>2]|0)+12>>2]=12;k[L+(k[(k[L>>2]|0)+-12>>2]|0)+8>>2]=7;B=0;Sa(1,L|0,+(+p[(k[m>>2]|0)+(b<<3)>>3]))|0;L=B;B=0;if(L&1){ba=66;break}B=0;wa(510,w|0,E|0);L=B;B=0;if(L&1){ba=66;break}B=0;ya(425,w|0)|0;L=B;B=0;if(L&1){ba=67;break}Yua(w);k[v>>2]=27468;k[F>>2]=27488;k[E>>2]=27560;Yua(T);Ava(E);vva(F);b=b+1|0;if((b|0)>=(k[i>>2]|0))break a}if((ba|0)==56){b=Rb()|0;I=Q;Yua(e);Yua(T);Ava(E);ca=I;da=b;ba=59}else if((ba|0)==57){b=Rb()|0;ea=Q;fa=b;vva(F);Qb(fa|0)}else if((ba|0)==58){b=Rb()|0;ca=Q;da=b;ba=59}else if((ba|0)==66){b=Rb()|0;ga=Q;ha=b;ba=68}else if((ba|0)==67){b=Rb()|0;I=Q;Yua(w);ga=I;ha=b;ba=68}if((ba|0)==59){ea=ca;fa=da;vva(F);Qb(fa|0)}else if((ba|0)==68){k[v>>2]=27468;k[F>>2]=27488;k[E>>2]=27560;Yua(T);Ava(E);vva(F);ia=ga;ja=ha;Qb(ja|0)}}while(0);b=x+56|0;I=x+4|0;k[x>>2]=27524;k[b>>2]=27544;B=0;wa(508,x+56|0,I|0);D=B;B=0;if(D&1){D=Rb()|0;ka=Q;la=D;vva(b);Qb(la|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[b>>2]=27488;B=0;va(448,I|0);D=B;B=0;do if(D&1){A=Rb()|0;na=Q;oa=A}else{k[I>>2]=27560;A=x+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[x+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,I|0,e|0);R=B;B=0;if(R&1){R=Rb()|0;L=Q;Yua(e);Yua(A);Ava(I);na=L;oa=R;break}Yua(e);B=0;Ia(40,x|0,149177,1)|0;R=B;B=0;do if(R&1)ba=82;else{B=0;wa(510,y|0,I|0);L=B;B=0;if(L&1){ba=82;break}B=0;ya(425,y|0)|0;L=B;B=0;if(L&1){L=Rb()|0;j=Q;Yua(y);pa=j;qa=L;break}Yua(y);k[x>>2]=27468;k[b>>2]=27488;k[I>>2]=27560;Yua(A);Ava(I);vva(b);L=k[s>>2]|0;if(L)Tqa(L);k[s>>2]=0;L=k[q>>2]|0;if(L)Tqa(L);k[q>>2]=0;L=k[o>>2]|0;if(L)Tqa(L);k[o>>2]=0;L=k[l>>2]|0;if(L)Tqa(L);k[l>>2]=0;L=k[m>>2]|0;if(!L){ra=k[n>>2]|0;k[a>>2]=ra;sa=+p[f>>3];r=d;return +sa}Tqa(L);ra=k[n>>2]|0;k[a>>2]=ra;sa=+p[f>>3];r=d;return +sa}while(0);if((ba|0)==82){R=Rb()|0;pa=Q;qa=R}k[x>>2]=27468;k[b>>2]=27488;k[I>>2]=27560;Yua(A);Ava(I);vva(b);ia=pa;ja=qa;Qb(ja|0)}while(0);ka=na;la=oa;vva(b);Qb(la|0)}else ba=50;while(0);if((ba|0)==50){G=Rb()|0;$=Q;aa=G}k[t>>2]=27468;k[z>>2]=27488;k[W>>2]=27560;Yua(H);Ava(W);vva(z);ia=$;ja=aa;Qb(ja|0)}while(0);X=Z;Y=_;vva(z);Qb(Y|0);return +(0.0)}function c0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,115558,48)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,115607,72);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115680,15);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,214,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function d0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,115696,29)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,115726,71);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115798,14);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,331,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function e0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;a=r;r=r+192|0;b=a+176|0;c=a+40|0;d=a+24|0;e=a+12|0;f=a;a=c+56|0;g=c+4|0;k[c>>2]=27524;k[a>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(a);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[a>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,c|0,115813,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,115833,74);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,115908,17);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,255,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[a>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(a);Qb(D|0)}while(0);i=m;j=n;vva(a);Qb(j|0)}function f0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0.0,Ua=0.0,Va=0.0,Wa=0.0,Xa=0.0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0;b=r;r=r+1280|0;c=b+1264|0;d=b+1260|0;e=b+1256|0;f=b+16|0;g=b+8|0;h=b+1248|0;i=b+1232|0;j=b+1228|0;l=b+1212|0;m=b+1208|0;n=b+1192|0;o=b+1056|0;q=b+1236|0;s=b+904|0;t=b+1216|0;u=b+768|0;v=b+1196|0;w=b+616|0;x=b+1040|0;y=b+480|0;z=b+752|0;A=b+328|0;C=b+464|0;D=b+176|0;E=b+312|0;F=b+40|0;G=b+24|0;k[h>>2]=0;k[i>>2]=0;k[j>>2]=0;k[l>>2]=0;k[m>>2]=0;H=a+44|0;cO(k[H>>2]|0,d,476);mO(k[H>>2]|0,0,759);cO(k[H>>2]|0,b+1252|0,199);dO(k[H>>2]|0,b,67);iO(k[H>>2]|0,h,0,177);k[n>>2]=0;I=a+20|0;J=a+24|0;K=a+28|0;L=a+36|0;M=a+40|0;$oa(n,k[I>>2]|0,k[J>>2]|0,k[K>>2]|0,k[L>>2]|0,k[M>>2]|0,k[H>>2]|0,115926,0);N=k[n>>2]|0;if(k[N>>2]|0){O=k[k[N+4>>2]>>2]|0;Fc[k[(k[O>>2]|0)+28>>2]&1023](O,e);O=k[n>>2]|0;if(!(k[O>>2]|0)){P=O;R=0}else{S=k[k[O+4>>2]>>2]|0;O=Hc[k[(k[S>>2]|0)+52>>2]&511](S)|0;P=k[n>>2]|0;R=O}}else{P=N;R=0}if(P){if((k[P>>2]|0)!=0?(N=k[P+4>>2]|0,(N|0)!=0):0){O=k[N>>2]|0;if(O)Ec[k[(k[O>>2]|0)+4>>2]&1023](O);Sqa(N)}Sqa(P)}P=k[e>>2]|0;N=Rqa(P>>>0>536870911?-1:P<<3)|0;j_(l,k[H>>2]|0,k[d>>2]|0);g0(m,k[d>>2]|0);a:do if(FY()|0){d=o+56|0;P=o+4|0;k[o>>2]=27524;k[d>>2]=27544;B=0;wa(508,o+56|0,P|0);O=B;B=0;if(O&1){O=Rb()|0;T=Q;U=O;vva(d);Qb(U|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[d>>2]=27488;B=0;va(448,P|0);O=B;B=0;do if(O&1){n=Rb()|0;V=Q;W=n}else{k[P>>2]=27560;n=o+36|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[n+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,P|0,c|0);S=B;B=0;if(S&1){S=Rb()|0;X=Q;Yua(c);Yua(n);Ava(P);V=X;W=S;break}Yua(c);B=0;Ia(40,o|0,115932,28)|0;S=B;B=0;do if(!(S&1)?(B=0,wa(510,q|0,P|0),X=B,B=0,!(X&1)):0){B=0;ya(425,q|0)|0;X=B;B=0;if(X&1){X=Rb()|0;Y=Q;Yua(q);Z=X;_=Y;break}else{Yua(q);k[o>>2]=27468;k[d>>2]=27488;k[P>>2]=27560;Yua(n);Ava(P);vva(d);break a}}else aa=24;while(0);if((aa|0)==24){S=Rb()|0;Z=S;_=Q}k[o>>2]=27468;k[d>>2]=27488;k[P>>2]=27560;Yua(n);Ava(P);vva(d);ba=Z;ca=_;Qb(ba|0)}while(0);T=V;U=W;vva(d);Qb(U|0)}while(0);Ec[k[l>>2]&1023](a);b:do if(FY()|0){U=s+56|0;W=s+4|0;k[s>>2]=27524;k[U>>2]=27544;B=0;wa(508,s+56|0,W|0);V=B;B=0;if(V&1){V=Rb()|0;da=Q;ea=V;vva(U);Qb(ea|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[U>>2]=27488;B=0;va(448,W|0);V=B;B=0;do if(V&1){T=Rb()|0;fa=Q;ga=T}else{k[W>>2]=27560;T=s+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[s+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,W|0,c|0);_=B;B=0;if(_&1){_=Rb()|0;Z=Q;Yua(c);Yua(T);Ava(W);fa=Z;ga=_;break}Yua(c);B=0;Ia(40,s|0,115961,19)|0;_=B;B=0;do if(!(_&1)?(B=0,wa(510,t|0,W|0),Z=B,B=0,!(Z&1)):0){B=0;ya(425,t|0)|0;Z=B;B=0;if(Z&1){Z=Rb()|0;o=Q;Yua(t);ha=Z;ia=o;break}else{Yua(t);k[s>>2]=27468;k[U>>2]=27488;k[W>>2]=27560;Yua(T);Ava(W);vva(U);break b}}else aa=40;while(0);if((aa|0)==40){_=Rb()|0;ha=_;ia=Q}k[s>>2]=27468;k[U>>2]=27488;k[W>>2]=27560;Yua(T);Ava(W);vva(U);ba=ha;ca=ia;Qb(ba|0)}while(0);da=fa;ea=ga;vva(U);Qb(ea|0)}while(0);Ec[k[m>>2]&1023](a);c:do if(FY()|0){m=u+56|0;ea=u+4|0;k[u>>2]=27524;k[m>>2]=27544;B=0;wa(508,u+56|0,ea|0);ga=B;B=0;if(ga&1){ga=Rb()|0;ja=Q;ka=ga;vva(m);Qb(ka|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[m>>2]=27488;B=0;va(448,ea|0);ga=B;B=0;do if(ga&1){fa=Rb()|0;la=Q;na=fa}else{k[ea>>2]=27560;fa=u+36|0;k[fa>>2]=0;k[fa+4>>2]=0;k[fa+8>>2]=0;k[fa+12>>2]=0;k[u+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ea|0,c|0);da=B;B=0;if(da&1){da=Rb()|0;ia=Q;Yua(c);Yua(fa);Ava(ea);la=ia;na=da;break}Yua(c);B=0;Ia(40,u|0,115981,33)|0;da=B;B=0;do if(!(da&1)?(B=0,wa(510,v|0,ea|0),ia=B,B=0,!(ia&1)):0){B=0;ya(425,v|0)|0;ia=B;B=0;if(ia&1){ia=Rb()|0;ha=Q;Yua(v);oa=ia;pa=ha;break}else{Yua(v);k[u>>2]=27468;k[m>>2]=27488;k[ea>>2]=27560;Yua(fa);Ava(ea);vva(m);break c}}else aa=56;while(0);if((aa|0)==56){da=Rb()|0;oa=da;pa=Q}k[u>>2]=27468;k[m>>2]=27488;k[ea>>2]=27560;Yua(fa);Ava(ea);vva(m);ba=oa;ca=pa;Qb(ba|0)}while(0);ja=la;ka=na;vva(m);Qb(ka|0)}while(0);ki(a,f,i,0);ka=w+56|0;na=w+4|0;k[w>>2]=27524;k[ka>>2]=27544;B=0;wa(508,w+56|0,na|0);la=B;B=0;if(la&1){la=Rb()|0;qa=Q;ra=la;vva(ka);Qb(ra|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[ka>>2]=27488;B=0;va(448,na|0);la=B;B=0;do if(la&1){ja=Rb()|0;sa=Q;ta=ja}else{k[na>>2]=27560;ja=w+36|0;k[ja>>2]=0;k[ja+4>>2]=0;k[ja+8>>2]=0;k[ja+12>>2]=0;k[w+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,na|0,c|0);pa=B;B=0;if(pa&1){pa=Rb()|0;oa=Q;Yua(c);Yua(ja);Ava(na);sa=oa;ta=pa;break}Yua(c);B=0;pa=Ia(40,w|0,116015,29)|0;oa=B;B=0;do if(((!(oa&1)?(k[pa+(k[(k[pa>>2]|0)+-12>>2]|0)+12>>2]=12,k[pa+(k[(k[pa>>2]|0)+-12>>2]|0)+8>>2]=7,B=0,u=Sa(1,pa|0,+(+p[f>>3]))|0,v=B,B=0,!(v&1)):0)?(B=0,Ia(40,u|0,149177,1)|0,u=B,B=0,!(u&1)):0)?(B=0,wa(510,x|0,na|0),u=B,B=0,!(u&1)):0){B=0;ya(425,x|0)|0;u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(x);ua=u;xa=v;break}Yua(x);k[w>>2]=27468;k[ka>>2]=27488;k[na>>2]=27560;Yua(ja);Ava(na);vva(ka);v=k[i>>2]|0;if(v)Tqa(v);k[i>>2]=0;d:do if(FY()|0){v=y+56|0;u=y+4|0;k[y>>2]=27524;k[v>>2]=27544;B=0;wa(508,y+56|0,u|0);ea=B;B=0;if(ea&1){ea=Rb()|0;za=Q;Aa=ea;vva(v);Qb(Aa|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[v>>2]=27488;B=0;va(448,u|0);ea=B;B=0;do if(ea&1){ga=Rb()|0;Ba=Q;Ca=ga}else{k[u>>2]=27560;ga=y+36|0;k[ga>>2]=0;k[ga+4>>2]=0;k[ga+8>>2]=0;k[ga+12>>2]=0;k[y+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,u|0,c|0);U=B;B=0;if(U&1){U=Rb()|0;da=Q;Yua(c);Yua(ga);Ava(u);Ba=da;Ca=U;break}Yua(c);B=0;Ia(40,y|0,116045,20)|0;U=B;B=0;do if(!(U&1)){B=0;wa(510,z|0,u|0);da=B;B=0;if(da&1){aa=90;break}B=0;ya(425,z|0)|0;da=B;B=0;if(da&1){da=Rb()|0;T=Q;Yua(z);Da=da;Ea=T;break}else{Yua(z);k[y>>2]=27468;k[v>>2]=27488;k[u>>2]=27560;Yua(ga);Ava(u);vva(v);break d}}else aa=90;while(0);if((aa|0)==90){U=Rb()|0;Da=U;Ea=Q}k[y>>2]=27468;k[v>>2]=27488;k[u>>2]=27560;Yua(ga);Ava(u);vva(v);ba=Da;ca=Ea;Qb(ba|0)}while(0);za=Ba;Aa=Ca;vva(v);Qb(Aa|0)}while(0);dpa(j,0,k[I>>2]|0,k[J>>2]|0,k[K>>2]|0,k[L>>2]|0,k[M>>2]|0,k[H>>2]|0);fa=k[e>>2]|0;if((fa|0)>0){u=k[j>>2]|0;ea=0;do{U=u+(ea<<3)|0;p[U>>3]=-+p[U>>3];ea=ea+1|0}while((ea|0)<(fa|0))}fa=Rqa(416)|0;ea=A+56|0;u=A+4|0;k[A>>2]=27524;k[ea>>2]=27544;B=0;wa(508,A+56|0,u|0);U=B;B=0;if(U&1){U=Rb()|0;Fa=Q;Ga=U;vva(ea);Qb(Ga|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[ea>>2]=27488;B=0;va(448,u|0);U=B;B=0;do if(U&1){T=Rb()|0;Ha=Q;Ja=T}else{k[u>>2]=27560;T=A+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[A+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,u|0,c|0);da=B;B=0;if(da&1){da=Rb()|0;ha=Q;Yua(c);Yua(T);Ava(u);Ha=ha;Ja=da;break}Yua(c);B=0;Ia(40,A|0,116066,26)|0;da=B;B=0;do if(da&1)aa=120;else{B=0;wa(510,C|0,u|0);ha=B;B=0;if(ha&1){aa=120;break}B=0;ya(425,C|0)|0;ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(C);Ka=ha;La=ia;break}Yua(C);k[A>>2]=27468;k[ea>>2]=27488;k[u>>2]=27560;Yua(T);Ava(u);vva(ea);ia=D+56|0;ha=D+4|0;k[D>>2]=27524;k[ia>>2]=27544;B=0;wa(508,D+56|0,ha|0);s=B;B=0;if(s&1){s=Rb()|0;Ma=Q;Na=s;vva(ia);Qb(Na|0)}k[D+128>>2]=0;k[D+132>>2]=-1;k[D>>2]=27468;k[ia>>2]=27488;B=0;va(448,ha|0);s=B;B=0;do if(s&1){t=Rb()|0;Oa=Q;Pa=t}else{k[ha>>2]=27560;t=D+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[D+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ha|0,c|0);W=B;B=0;if(W&1){W=Rb()|0;V=Q;Yua(c);Yua(t);Ava(ha);Oa=V;Pa=W;break}Yua(c);B=0;Ia(40,D|0,116093,26)|0;W=B;B=0;do if(!(W&1)){B=0;wa(510,E|0,ha|0);V=B;B=0;if(V&1){aa=123;break}B=0;ya(425,E|0)|0;V=B;B=0;if(V&1){V=Rb()|0;d=Q;Yua(E);Qa=V;Ra=d;break}Yua(E);k[D>>2]=27468;k[ia>>2]=27488;k[ha>>2]=27560;Yua(t);Ava(ha);vva(ia);d=F+56|0;V=F+4|0;_=F+56|0;n=F+128|0;o=F+132|0;Z=F+36|0;q=F+52|0;P=0;while(1){Ta=+osa(1.0,0-P|0);O=k[e>>2]|0;if((O|0)>0){S=k[h>>2]|0;Y=0;do{p[N+(Y<<3)>>3]=+p[R+(Y<<3)>>3]+Ta*+p[S>>3];Y=Y+1|0}while((Y|0)<(O|0))}bpa(a,N);Ec[k[l>>2]&1023](a);ki(a,g,0,0);O=k[e>>2]|0;if((O|0)>0){Y=k[j>>2]|0;Ua=+p[k[h>>2]>>3];Va=0.0;S=0;while(1){Wa=Va+Ta*+p[Y+(S<<3)>>3]*Ua;S=S+1|0;if((S|0)>=(O|0)){Xa=Wa;break}else Va=Wa}}else Xa=0.0;Va=+$(+((+p[g>>3]-+p[f>>3])/Xa+-1.0));k[F>>2]=27524;k[d>>2]=27544;B=0;wa(508,_|0,V|0);O=B;B=0;if(O&1){aa=135;break}k[n>>2]=0;k[o>>2]=-1;k[F>>2]=27468;k[d>>2]=27488;B=0;va(448,V|0);O=B;B=0;if(O&1){aa=136;break}k[V>>2]=27560;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[q>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,V|0,c|0);O=B;B=0;if(O&1){aa=134;break}Yua(c);B=0;O=Ia(40,F|0,149175,1)|0;S=B;B=0;if(S&1){aa=148;break}k[O+(k[(k[O>>2]|0)+-12>>2]|0)+12>>2]=11;k[O+(k[(k[O>>2]|0)+-12>>2]|0)+8>>2]=5;B=0;S=Sa(1,O|0,+Ta)|0;O=B;B=0;if(O&1){aa=148;break}B=0;O=Ia(40,S|0,149175,1)|0;S=B;B=0;if(S&1){aa=148;break}k[O+(k[(k[O>>2]|0)+-12>>2]|0)+12>>2]=11;k[O+(k[(k[O>>2]|0)+-12>>2]|0)+8>>2]=5;B=0;S=Sa(1,O|0,+Va)|0;O=B;B=0;if(O&1){aa=148;break}B=0;Ia(40,S|0,149177,1)|0;S=B;B=0;if(S&1){aa=148;break}B=0;wa(510,G|0,V|0);S=B;B=0;if(S&1){aa=148;break}B=0;ya(425,G|0)|0;S=B;B=0;if(S&1){aa=149;break}Yua(G);k[F>>2]=27468;k[d>>2]=27488;k[V>>2]=27560;Yua(Z);Ava(V);vva(d);S=P<<1;p[fa+(S<<3)>>3]=Ta;p[fa+((S|1)<<3)>>3]=Va;P=P+1|0;if((P|0)>=26){aa=119;break}}if((aa|0)==119){P=a+48|0;q=k[P>>2]|0;o=Qqa(40)|0;B=0;n=ya(428,q|0)|0;_=B;B=0;do if(!(_&1)){k[o>>2]=27964;k[o+4>>2]=n+1;S=o+16|0;k[S>>2]=26;O=o+20|0;k[O>>2]=2;B=0;wa(512,o+8|0,764);Y=B;B=0;if(Y&1)break;k[o+24>>2]=0;p[o+32>>3]=0.0;Y=ma(k[O>>2]|0,k[S>>2]|0)|0;if(!Y)k[o+12>>2]=0;else{B=0;S=ya(422,(Y>>>0>536870911?-1:Y<<3)|0)|0;O=B;B=0;if(O&1)break;k[o+12>>2]=S;TEa(S|0,fa|0,Y<<3|0)|0}ih(q,o)|0;_oa(k[I>>2]|0,k[J>>2]|0,k[K>>2]|0,k[L>>2]|0,k[M>>2]|0,k[H>>2]|0,k[j>>2]|0);li(a,P);Tqa(fa);Y=k[j>>2]|0;if(Y)Tqa(Y);k[j>>2]=0;Tqa(N);if(!R){r=b;return}Tqa(R);r=b;return}while(0);P=Rb()|0;q=Q;Sqa(o);ba=P;ca=q;Qb(ba|0)}else if((aa|0)==134){q=Rb()|0;P=Q;Yua(c);Yua(Z);Ava(V);Ya=P;Za=q;aa=137}else if((aa|0)==135){q=Rb()|0;_a=Q;$a=q;vva(d);Qb($a|0)}else if((aa|0)==136){q=Rb()|0;Ya=Q;Za=q;aa=137}else if((aa|0)==148){q=Rb()|0;ab=q;bb=Q;aa=150}else if((aa|0)==149){q=Rb()|0;P=Q;Yua(G);ab=q;bb=P;aa=150}if((aa|0)==137){_a=Ya;$a=Za;vva(d);Qb($a|0)}else if((aa|0)==150){k[F>>2]=27468;k[d>>2]=27488;k[V>>2]=27560;Yua(Z);Ava(V);vva(d);ba=ab;ca=bb;Qb(ba|0)}}else aa=123;while(0);if((aa|0)==123){W=Rb()|0;Qa=W;Ra=Q}k[D>>2]=27468;k[ia>>2]=27488;k[ha>>2]=27560;Yua(t);Ava(ha);vva(ia);ba=Qa;ca=Ra;Qb(ba|0)}while(0);Ma=Oa;Na=Pa;vva(ia);Qb(Na|0)}while(0);if((aa|0)==120){da=Rb()|0;Ka=da;La=Q}k[A>>2]=27468;k[ea>>2]=27488;k[u>>2]=27560;Yua(T);Ava(u);vva(ea);ba=Ka;ca=La;Qb(ba|0)}while(0);Fa=Ha;Ga=Ja;vva(ea);Qb(Ga|0)}else aa=87;while(0);if((aa|0)==87){pa=Rb()|0;ua=pa;xa=Q}k[w>>2]=27468;k[ka>>2]=27488;k[na>>2]=27560;Yua(ja);Ava(na);vva(ka);ba=ua;ca=xa;Qb(ba|0)}while(0);qa=sa;ra=ta;vva(ka);Qb(ra|0)}function g0(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;switch(b|0){case 485:{i=528;k[a>>2]=i;r=c;return}case 487:{i=529;k[a>>2]=i;r=c;return}case 489:{i=517;k[a>>2]=i;r=c;return}case 518:case 499:{i=527;k[a>>2]=i;r=c;return}default:{c=e+56|0;i=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,i|0);a=B;B=0;if(a&1){a=Rb()|0;j=Q;l=a;vva(c);Qb(l|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,i|0);a=B;B=0;do if(a&1){m=Rb()|0;n=Q;o=m}else{k[i>>2]=27560;m=e+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,i|0,d|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(d);Yua(m);Ava(i);n=q;o=p;break}Yua(d);B=0;p=Ia(40,e|0,116120,45)|0;q=B;B=0;if((((!(q&1)?(B=0,q=ya(427,b|0)|0,s=B,B=0,!(s&1)):0)?(s=Lta(q)|0,B=0,t=Ia(40,p|0,q|0,s|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,t|0,116166,4)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,f|0,116171,91);t=B;B=0;do if(!(t&1)){B=0;eb(502,g|0,116263,34);q=B;B=0;if(q&1){q=Rb()|0;p=Q;Yua(f);u=p;v=q;break}B=0;wa(510,h|0,i|0);q=B;B=0;if(q&1){q=Rb()|0;w=Q;x=q;y=1}else{B=0;ua(163,s|0,f|0,g|0,41,h|0);q=B;B=0;if(q&1)z=1;else{B=0;eb(503,s|0,1240,229);B=0;z=0}q=Rb()|0;p=Q;Yua(h);w=p;x=q;y=z}Yua(g);Yua(f);if(y){u=w;v=x}else{A=w;C=x;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(m);Ava(i);vva(c);Qb(C|0)}}else{q=Rb()|0;u=Q;v=q}while(0);zb(s|0);A=u;C=v;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(m);Ava(i);vva(c);Qb(C|0)}t=Rb()|0;A=Q;C=t;k[e>>2]=27468;k[c>>2]=27488;k[i>>2]=27560;Yua(m);Ava(i);vva(c);Qb(C|0)}while(0);j=n;l=o;vva(c);Qb(l|0)}}}function h0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0;b=r;r=r+1584|0;c=b+1540|0;d=b+1500|0;e=b+1577|0;f=b+1576|0;g=b+1352|0;h=b+1528|0;j=b+1216|0;l=b+1516|0;m=b+1064|0;n=b+1504|0;o=b+1052|0;p=b+904|0;q=b+1488|0;s=b+768|0;t=b+1200|0;u=b+608|0;v=b+1040|0;w=b+472|0;x=b+756|0;y=b+320|0;z=b+744|0;A=b;C=b+168|0;D=b+456|0;E=b+32|0;F=b+304|0;G=b+20|0;H=b+8|0;I=a+44|0;bO(k[I>>2]|0,e,759);cO(k[I>>2]|0,d,118);a:do if(CY()|0){J=g+56|0;K=g+4|0;k[g>>2]=27524;k[J>>2]=27544;B=0;wa(508,g+56|0,K|0);L=B;B=0;if(L&1){L=Rb()|0;M=Q;N=L;vva(J);Qb(N|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[J>>2]=27488;B=0;va(448,K|0);L=B;B=0;do if(L&1){O=Rb()|0;P=Q;R=O}else{k[K>>2]=27560;O=g+36|0;k[O>>2]=0;k[O+4>>2]=0;k[O+8>>2]=0;k[O+12>>2]=0;k[g+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,K|0,c|0);S=B;B=0;if(S&1){S=Rb()|0;T=Q;Yua(c);Yua(O);Ava(K);P=T;R=S;break}Yua(c);B=0;Ia(40,g|0,116298,25)|0;S=B;B=0;do if(!(S&1)?(B=0,wa(510,h|0,K|0),T=B,B=0,!(T&1)):0){B=0;ya(425,h|0)|0;T=B;B=0;if(T&1){T=Rb()|0;U=Q;Yua(h);V=T;W=U;break}else{Yua(h);k[g>>2]=27468;k[J>>2]=27488;k[K>>2]=27560;Yua(O);Ava(K);vva(J);break a}}else X=14;while(0);if((X|0)==14){S=Rb()|0;V=S;W=Q}k[g>>2]=27468;k[J>>2]=27488;k[K>>2]=27560;Yua(O);Ava(K);vva(J);Y=V;Z=W;Qb(Y|0)}while(0);M=P;N=R;vva(J);Qb(N|0)}while(0);N=k[d>>2]|0;if((N|0)==119){o0(a);p0(a);_=k[d>>2]|0}else _=N;switch(_|0){case 119:{b:do if(CY()|0){_=j+56|0;N=j+4|0;k[j>>2]=27524;k[_>>2]=27544;B=0;wa(508,j+56|0,N|0);R=B;B=0;if(R&1){R=Rb()|0;$=Q;aa=R;vva(_);Qb(aa|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[_>>2]=27488;B=0;va(448,N|0);R=B;B=0;do if(R&1){P=Rb()|0;ba=Q;ca=P}else{k[N>>2]=27560;P=j+36|0;k[P>>2]=0;k[P+4>>2]=0;k[P+8>>2]=0;k[P+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,N|0,c|0);M=B;B=0;if(M&1){M=Rb()|0;W=Q;Yua(c);Yua(P);Ava(N);ba=W;ca=M;break}Yua(c);B=0;Ia(40,j|0,116324,26)|0;M=B;B=0;do if(!(M&1)?(B=0,wa(510,l|0,N|0),W=B,B=0,!(W&1)):0){B=0;ya(425,l|0)|0;W=B;B=0;if(W&1){W=Rb()|0;V=Q;Yua(l);da=W;ea=V;break}else{Yua(l);k[j>>2]=27468;k[_>>2]=27488;k[N>>2]=27560;Yua(P);Ava(N);vva(_);break b}}else X=33;while(0);if((X|0)==33){M=Rb()|0;da=M;ea=Q}k[j>>2]=27468;k[_>>2]=27488;k[N>>2]=27560;Yua(P);Ava(N);vva(_);Y=da;Z=ea;Qb(Y|0)}while(0);$=ba;aa=ca;vva(_);Qb(aa|0)}while(0);xh(a,504);Woa(a,1);joa(a,699,768);if(!(i[e>>0]|0)){r=b;return}c:do if(CY()|0){aa=m+56|0;ca=m+4|0;k[m>>2]=27524;k[aa>>2]=27544;B=0;wa(508,m+56|0,ca|0);ba=B;B=0;if(ba&1){ba=Rb()|0;fa=Q;ga=ba;vva(aa);Qb(ga|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[aa>>2]=27488;B=0;va(448,ca|0);ba=B;B=0;do if(ba&1){$=Rb()|0;ha=Q;ia=$}else{k[ca>>2]=27560;$=m+36|0;k[$>>2]=0;k[$+4>>2]=0;k[$+8>>2]=0;k[$+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ca|0,c|0);ea=B;B=0;if(ea&1){ea=Rb()|0;da=Q;Yua(c);Yua($);Ava(ca);ha=da;ia=ea;break}Yua(c);B=0;Ia(40,m|0,116351,19)|0;ea=B;B=0;do if(!(ea&1)?(B=0,wa(510,n|0,ca|0),da=B,B=0,!(da&1)):0){B=0;ya(425,n|0)|0;da=B;B=0;if(da&1){da=Rb()|0;j=Q;Yua(n);ja=da;ka=j;break}else{Yua(n);k[m>>2]=27468;k[aa>>2]=27488;k[ca>>2]=27560;Yua($);Ava(ca);vva(aa);break c}}else X=50;while(0);if((X|0)==50){ea=Rb()|0;ja=ea;ka=Q}k[m>>2]=27468;k[aa>>2]=27488;k[ca>>2]=27560;Yua($);Ava(ca);vva(aa);Y=ja;Z=ka;Qb(Y|0)}while(0);fa=ha;ga=ia;vva(aa);Qb(ga|0)}while(0);k[o>>2]=k[9243];k[o+4>>2]=k[9244];k[o+8>>2]=k[9245];fi(a,a+48|0,o,3,1);d:do if(CY()|0){o=p+56|0;ga=p+4|0;k[p>>2]=27524;k[o>>2]=27544;B=0;wa(508,p+56|0,ga|0);ia=B;B=0;if(ia&1){ia=Rb()|0;la=Q;ma=ia;vva(o);Qb(ma|0)}k[p+128>>2]=0;k[p+132>>2]=-1;k[p>>2]=27468;k[o>>2]=27488;B=0;va(448,ga|0);ia=B;B=0;do if(ia&1){ha=Rb()|0;na=Q;oa=ha}else{k[ga>>2]=27560;ha=p+36|0;k[ha>>2]=0;k[ha+4>>2]=0;k[ha+8>>2]=0;k[ha+12>>2]=0;k[p+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ga|0,c|0);fa=B;B=0;if(fa&1){fa=Rb()|0;ka=Q;Yua(c);Yua(ha);Ava(ga);na=ka;oa=fa;break}Yua(c);B=0;Ia(40,p|0,116371,28)|0;fa=B;B=0;do if(!(fa&1)?(B=0,wa(510,q|0,ga|0),ka=B,B=0,!(ka&1)):0){B=0;ya(425,q|0)|0;ka=B;B=0;if(ka&1){ka=Rb()|0;ja=Q;Yua(q);pa=ka;qa=ja;break}else{Yua(q);k[p>>2]=27468;k[o>>2]=27488;k[ga>>2]=27560;Yua(ha);Ava(ga);vva(o);break d}}else X=66;while(0);if((X|0)==66){fa=Rb()|0;pa=fa;qa=Q}k[p>>2]=27468;k[o>>2]=27488;k[ga>>2]=27560;Yua(ha);Ava(ga);vva(o);Y=pa;Z=qa;Qb(Y|0)}while(0);la=na;ma=oa;vva(o);Qb(ma|0)}while(0);CZ(a);r=b;return}case 122:{joa(a,123,124);bO(k[I>>2]|0,f,152);if(i[f>>0]|0){joa(a,127,128);joa(a,148,149)}i0(a);if(!(i[e>>0]|0)){r=b;return}e:do if(CY()|0){I=s+56|0;ma=s+4|0;k[s>>2]=27524;k[I>>2]=27544;B=0;wa(508,s+56|0,ma|0);oa=B;B=0;if(oa&1){oa=Rb()|0;ra=Q;sa=oa;vva(I);Qb(sa|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[I>>2]=27488;B=0;va(448,ma|0);oa=B;B=0;do if(oa&1){na=Rb()|0;ta=Q;xa=na}else{k[ma>>2]=27560;na=s+36|0;k[na>>2]=0;k[na+4>>2]=0;k[na+8>>2]=0;k[na+12>>2]=0;k[s+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ma|0,c|0);la=B;B=0;if(la&1){la=Rb()|0;qa=Q;Yua(c);Yua(na);Ava(ma);ta=qa;xa=la;break}Yua(c);B=0;Ia(40,s|0,116351,19)|0;la=B;B=0;do if(!(la&1)?(B=0,wa(510,t|0,ma|0),qa=B,B=0,!(qa&1)):0){B=0;ya(425,t|0)|0;qa=B;B=0;if(qa&1){qa=Rb()|0;pa=Q;Yua(t);za=qa;Aa=pa;break}else{Yua(t);k[s>>2]=27468;k[I>>2]=27488;k[ma>>2]=27560;Yua(na);Ava(ma);vva(I);break e}}else X=86;while(0);if((X|0)==86){la=Rb()|0;za=la;Aa=Q}k[s>>2]=27468;k[I>>2]=27488;k[ma>>2]=27560;Yua(na);Ava(ma);vva(I);Y=za;Z=Aa;Qb(Y|0)}while(0);ra=ta;sa=xa;vva(I);Qb(sa|0)}while(0);if(!(i[f>>0]|0)){k[c>>2]=k[9255];k[c+4>>2]=k[9256];k[c+8>>2]=k[9257];fi(a,a+48|0,c,3,1)}else{f=c;sa=36984;xa=f+36|0;do{k[f>>2]=k[sa>>2];f=f+4|0;sa=sa+4|0}while((f|0)<(xa|0));fi(a,a+48|0,c,9,1)}f:do if(CY()|0){sa=u+56|0;f=u+4|0;k[u>>2]=27524;k[sa>>2]=27544;B=0;wa(508,u+56|0,f|0);xa=B;B=0;if(xa&1){xa=Rb()|0;Ba=Q;Ca=xa;vva(sa);Qb(Ca|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[sa>>2]=27488;B=0;va(448,f|0);xa=B;B=0;do if(xa&1){ta=Rb()|0;Da=Q;Ea=ta}else{k[f>>2]=27560;ta=u+36|0;k[ta>>2]=0;k[ta+4>>2]=0;k[ta+8>>2]=0;k[ta+12>>2]=0;k[u+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,f|0,c|0);ra=B;B=0;if(ra&1){ra=Rb()|0;Aa=Q;Yua(c);Yua(ta);Ava(f);Da=Aa;Ea=ra;break}Yua(c);B=0;Ia(40,u|0,116371,28)|0;ra=B;B=0;do if(!(ra&1)?(B=0,wa(510,v|0,f|0),Aa=B,B=0,!(Aa&1)):0){B=0;ya(425,v|0)|0;Aa=B;B=0;if(Aa&1){Aa=Rb()|0;za=Q;Yua(v);Fa=Aa;Ga=za;break}else{Yua(v);k[u>>2]=27468;k[sa>>2]=27488;k[f>>2]=27560;Yua(ta);Ava(f);vva(sa);break f}}else X=105;while(0);if((X|0)==105){ra=Rb()|0;Fa=ra;Ga=Q}k[u>>2]=27468;k[sa>>2]=27488;k[f>>2]=27560;Yua(ta);Ava(f);vva(sa);Y=Fa;Z=Ga;Qb(Y|0)}while(0);Ba=Da;Ca=Ea;vva(sa);Qb(Ca|0)}while(0);CZ(a);r=b;return}case 165:{xh(a,507);Woa(a,1);g:do if(CY()|0){Ca=w+56|0;Ea=w+4|0;k[w>>2]=27524;k[Ca>>2]=27544;B=0;wa(508,w+56|0,Ea|0);Da=B;B=0;if(Da&1){Da=Rb()|0;Ha=Q;Ja=Da;vva(Ca);Qb(Ja|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[Ca>>2]=27488;B=0;va(448,Ea|0);Da=B;B=0;do if(Da&1){Ba=Rb()|0;Ka=Q;La=Ba}else{k[Ea>>2]=27560;Ba=w+36|0;k[Ba>>2]=0;k[Ba+4>>2]=0;k[Ba+8>>2]=0;k[Ba+12>>2]=0;k[w+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ea|0,c|0);Ga=B;B=0;if(Ga&1){Ga=Rb()|0;Fa=Q;Yua(c);Yua(Ba);Ava(Ea);Ka=Fa;La=Ga;break}Yua(c);B=0;Ia(40,w|0,116400,23)|0;Ga=B;B=0;do if(!(Ga&1)?(B=0,wa(510,x|0,Ea|0),Fa=B,B=0,!(Fa&1)):0){B=0;ya(425,x|0)|0;Fa=B;B=0;if(Fa&1){Fa=Rb()|0;u=Q;Yua(x);Ma=Fa;Na=u;break}else{Yua(x);k[w>>2]=27468;k[Ca>>2]=27488;k[Ea>>2]=27560;Yua(Ba);Ava(Ea);vva(Ca);break g}}else X=122;while(0);if((X|0)==122){Ga=Rb()|0;Ma=Ga;Na=Q}k[w>>2]=27468;k[Ca>>2]=27488;k[Ea>>2]=27560;Yua(Ba);Ava(Ea);vva(Ca);Y=Ma;Z=Na;Qb(Y|0)}while(0);Ha=Ka;Ja=La;vva(Ca);Qb(Ja|0)}while(0);Ja=Qqa(4)|0;k[Ja>>2]=39164;Uca(Ja,a);Ec[k[(k[Ja>>2]|0)+4>>2]&1023](Ja);if(!(i[e>>0]|0)){r=b;return}h:do if(CY()|0){e=y+56|0;Ja=y+4|0;k[y>>2]=27524;k[e>>2]=27544;B=0;wa(508,y+56|0,Ja|0);La=B;B=0;if(La&1){La=Rb()|0;Oa=Q;Pa=La;vva(e);Qb(Pa|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[e>>2]=27488;B=0;va(448,Ja|0);La=B;B=0;do if(La&1){Ka=Rb()|0;Qa=Q;Ra=Ka}else{k[Ja>>2]=27560;Ka=y+36|0;k[Ka>>2]=0;k[Ka+4>>2]=0;k[Ka+8>>2]=0;k[Ka+12>>2]=0;k[y+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ja|0,c|0);Ha=B;B=0;if(Ha&1){Ha=Rb()|0;Na=Q;Yua(c);Yua(Ka);Ava(Ja);Qa=Na;Ra=Ha;break}Yua(c);B=0;Ia(40,y|0,116351,19)|0;Ha=B;B=0;do if(!(Ha&1)?(B=0,wa(510,z|0,Ja|0),Na=B,B=0,!(Na&1)):0){B=0;ya(425,z|0)|0;Na=B;B=0;if(Na&1){Na=Rb()|0;Ma=Q;Yua(z);Sa=Na;Ta=Ma;break}else{Yua(z);k[y>>2]=27468;k[e>>2]=27488;k[Ja>>2]=27560;Yua(Ka);Ava(Ja);vva(e);break h}}else X=139;while(0);if((X|0)==139){Ha=Rb()|0;Sa=Ha;Ta=Q}k[y>>2]=27468;k[e>>2]=27488;k[Ja>>2]=27560;Yua(Ka);Ava(Ja);vva(e);Y=Sa;Z=Ta;Qb(Y|0)}while(0);Oa=Qa;Pa=Ra;vva(e);Qb(Pa|0)}while(0);Pa=A;k[Pa>>2]=166;k[Pa+4>>2]=167;fi(a,a+48|0,A,2,1);i:do if(CY()|0){A=C+56|0;Pa=C+4|0;k[C>>2]=27524;k[A>>2]=27544;B=0;wa(508,C+56|0,Pa|0);Ra=B;B=0;if(Ra&1){Ra=Rb()|0;Ua=Q;Va=Ra;vva(A);Qb(Va|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[A>>2]=27488;B=0;va(448,Pa|0);Ra=B;B=0;do if(Ra&1){Qa=Rb()|0;Wa=Q;Ya=Qa}else{k[Pa>>2]=27560;Qa=C+36|0;k[Qa>>2]=0;k[Qa+4>>2]=0;k[Qa+8>>2]=0;k[Qa+12>>2]=0;k[C+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Pa|0,c|0);Oa=B;B=0;if(Oa&1){Oa=Rb()|0;Ta=Q;Yua(c);Yua(Qa);Ava(Pa);Wa=Ta;Ya=Oa;break}Yua(c);B=0;Ia(40,C|0,116371,28)|0;Oa=B;B=0;do if(!(Oa&1)?(B=0,wa(510,D|0,Pa|0),Ta=B,B=0,!(Ta&1)):0){B=0;ya(425,D|0)|0;Ta=B;B=0;if(Ta&1){Ta=Rb()|0;Sa=Q;Yua(D);Za=Ta;_a=Sa;break}else{Yua(D);k[C>>2]=27468;k[A>>2]=27488;k[Pa>>2]=27560;Yua(Qa);Ava(Pa);vva(A);break i}}else X=155;while(0);if((X|0)==155){Oa=Rb()|0;Za=Oa;_a=Q}k[C>>2]=27468;k[A>>2]=27488;k[Pa>>2]=27560;Yua(Qa);Ava(Pa);vva(A);Y=Za;Z=_a;Qb(Y|0)}while(0);Ua=Wa;Va=Ya;vva(A);Qb(Va|0)}while(0);CZ(a);r=b;return}default:{b=E+56|0;a=E+4|0;k[E>>2]=27524;k[b>>2]=27544;B=0;wa(508,E+56|0,a|0);Va=B;B=0;if(Va&1){Va=Rb()|0;$a=Q;ab=Va;vva(b);Qb(ab|0)}k[E+128>>2]=0;k[E+132>>2]=-1;k[E>>2]=27468;k[b>>2]=27488;B=0;va(448,a|0);Va=B;B=0;do if(Va&1){Ya=Rb()|0;bb=Q;cb=Ya}else{k[a>>2]=27560;Ya=E+36|0;k[Ya>>2]=0;k[Ya+4>>2]=0;k[Ya+8>>2]=0;k[Ya+12>>2]=0;k[E+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);Wa=B;B=0;if(Wa&1){Wa=Rb()|0;Ua=Q;Yua(c);Yua(Ya);Ava(a);bb=Ua;cb=Wa;break}Yua(c);B=0;Wa=Ia(40,E|0,116424,16)|0;Ua=B;B=0;j:do if((((!(Ua&1)?(B=0,_a=ya(427,k[d>>2]|0)|0,Za=B,B=0,!(Za&1)):0)?(Za=Lta(_a)|0,B=0,C=Ia(40,Wa|0,_a|0,Za|0)|0,Za=B,B=0,!(Za&1)):0)?(B=0,Za=Ia(40,C|0,146481,18)|0,C=B,B=0,!(C&1)):0)?(B=0,Xa(239,Za|0,0)|0,Za=B,B=0,!(Za&1)):0){Za=Ab(20)|0;B=0;eb(502,F|0,116441,71);C=B;B=0;do if(!(C&1)){B=0;eb(502,G|0,116513,14);_a=B;B=0;if(_a&1){_a=Rb()|0;D=Q;Yua(F);db=D;fb=_a;break}B=0;wa(510,H|0,a|0);_a=B;B=0;if(_a&1){_a=Rb()|0;gb=1;hb=_a;ib=Q}else{B=0;ua(163,Za|0,F|0,G|0,100,H|0);_a=B;B=0;if(_a&1)jb=1;else{B=0;eb(503,Za|0,1240,229);B=0;jb=0}_a=Rb()|0;D=Q;Yua(H);gb=jb;hb=_a;ib=D}Yua(G);Yua(F);if(gb){db=ib;fb=hb}else{kb=ib;lb=hb;break j}}else{D=Rb()|0;db=Q;fb=D}while(0);zb(Za|0);kb=db;lb=fb}else X=177;while(0);if((X|0)==177){Wa=Rb()|0;kb=Q;lb=Wa}k[E>>2]=27468;k[b>>2]=27488;k[a>>2]=27560;Yua(Ya);Ava(a);vva(b);Y=lb;Z=kb;Qb(Y|0)}while(0);$a=bb;ab=cb;vva(b);Qb(ab|0)}}}function i0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Gc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0.0,Sc=0.0,Tc=0.0,Uc=0.0,Vc=0.0,Wc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0.0,dd=0.0,ed=0.0,fd=0,gd=0,hd=0,jd=0.0,kd=0.0,ld=0,md=0.0,nd=0.0,od=0.0,pd=0,qd=0.0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Pe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,Ve=0,We=0,Xe=0,Ye=0,Ze=0,_e=0,$e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,mf=0,nf=0,of=0,pf=0,qf=0,rf=0,sf=0,tf=0,uf=0,vf=0,wf=0,xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0,Df=0,Ef=0,Ff=0,Gf=0,Hf=0,If=0,Jf=0,Kf=0,Lf=0,Mf=0,Nf=0,Of=0,Pf=0,Qf=0,Rf=0,Sf=0,Tf=0,Uf=0,Vf=0,Wf=0,Xf=0,Yf=0,Zf=0,_f=0,$f=0,ag=0,bg=0,cg=0,dg=0,eg=0,fg=0,gg=0,hg=0,ig=0,jg=0,kg=0,lg=0,mg=0,ng=0;b=r;r=r+3136|0;c=b+3108|0;d=b+3092|0;e=b+3088|0;f=b+3084|0;g=b+3068|0;h=b+3052|0;j=b+3036|0;l=b+3020|0;m=b+3016|0;n=b+3012|0;o=b+3120|0;q=b+2984|0;s=b+2968|0;u=b+2964|0;v=b+24|0;w=b+16|0;x=b+8|0;y=b;z=b+2792|0;A=b+3096|0;C=b+2640|0;D=b+3072|0;E=b+2504|0;F=b+3056|0;G=b+3040|0;H=b+3024|0;I=b+2352|0;J=b+3e3|0;K=b+2988|0;L=b+2972|0;M=b+2216|0;N=b+2952|0;O=b+2064|0;P=b+2940|0;R=b+1912|0;S=b+2928|0;T=b+1776|0;U=b+2776|0;V=b+1624|0;W=b+2488|0;X=b+2200|0;Y=b+2048|0;Z=b+1472|0;_=b+1760|0;aa=b+1336|0;ba=b+1608|0;ca=b+1320|0;da=b+1168|0;ea=b+1184|0;fa=b+880|0;ga=b+1032|0;ha=b+728|0;ia=b+440|0;ja=b+288|0;ka=b+896|0;la=b+140|0;ma=b+128|0;na=b+116|0;oa=b+744|0;pa=b+104|0;qa=b+592|0;ra=b+92|0;sa=b+456|0;ta=b+80|0;xa=b+304|0;za=b+68|0;Aa=b+152|0;Ba=b+56|0;Ca=b+44|0;Da=b+32|0;k[d>>2]=0;k[e>>2]=0;k[f>>2]=0;k[g>>2]=0;k[h>>2]=0;k[j>>2]=0;k[l>>2]=0;k[m>>2]=0;k[n>>2]=0;xh(a,505);Ea=a+44|0;bO(k[Ea>>2]|0,o,152);cO(k[Ea>>2]|0,u,132);dO(k[Ea>>2]|0,w,133);Fa=i[o>>0]|0;Aoa(d,a);Ga=a+24|0;Koa(e,k[d>>2]|0,k[Ga>>2]|0,k[Ea>>2]|0);if(!(i[o>>0]|0)){Ha=0;Ja=0}else{Ka=Qqa(4)|0;k[Ka>>2]=39240;La=Qqa(4)|0;k[La>>2]=39316;xh(a,506);Aoa(f,a);oda(Ka,a);wda(La,a);Ha=La;Ja=Ka}Ka=z+56|0;La=z+4|0;Ma=z+56|0;Na=z+128|0;Oa=z+132|0;Pa=z+36|0;Qa=z+52|0;Ra=C+56|0;Ta=C+4|0;Ua=C+56|0;Va=C+128|0;Wa=C+132|0;Ya=C+36|0;Za=C+52|0;_a=M+56|0;$a=M+4|0;ab=M+56|0;bb=M+128|0;cb=M+132|0;db=M+36|0;fb=M+52|0;gb=O+56|0;hb=O+4|0;ib=O+56|0;jb=O+128|0;kb=O+132|0;lb=O+36|0;mb=O+52|0;nb=xa+56|0;ob=xa+4|0;pb=xa+56|0;qb=xa+128|0;rb=xa+132|0;sb=xa+36|0;tb=xa+52|0;ub=oa+56|0;vb=oa+4|0;wb=oa+56|0;xb=oa+128|0;yb=oa+132|0;Bb=oa+36|0;Cb=oa+52|0;Db=qa+56|0;Eb=qa+4|0;Fb=qa+56|0;Gb=qa+128|0;Hb=qa+132|0;Ib=qa+36|0;Jb=qa+52|0;Kb=sa+56|0;Lb=sa+4|0;Mb=sa+56|0;Nb=sa+128|0;Ob=sa+132|0;Pb=sa+36|0;Sb=sa+52|0;Tb=R+56|0;Ub=R+4|0;Vb=R+56|0;Wb=R+128|0;Xb=R+132|0;Yb=R+36|0;Zb=R+52|0;_b=T+56|0;$b=T+4|0;ac=T+56|0;bc=T+128|0;cc=T+132|0;dc=T+36|0;ec=T+52|0;fc=Z+56|0;gc=Z+4|0;hc=Z+56|0;ic=Z+128|0;jc=Z+132|0;kc=Z+36|0;lc=Z+52|0;mc=ea+56|0;nc=ea+4|0;oc=ea+56|0;pc=ea+128|0;qc=ea+132|0;rc=ea+36|0;sc=ea+52|0;tc=Fa<<24>>24!=1;Fa=1;uc=0;vc=0;wc=0;a:while(1){if(i[o>>0]|0){xc=k[d>>2]|0;yc=Qqa(8)|0;B=0;va(485,yc|0);zc=B;B=0;if(zc&1){Ac=yc;Bc=7;break}if(k[xc>>2]|0){zc=k[xc+4>>2]|0;xc=Qqa(4)|0;Cc=k[zc>>2]|0;Dc=Hc[k[(k[Cc>>2]|0)+36>>2]&511](Cc)|0;k[xc>>2]=Dc;Cc=k[zc>>2]|0;Fc[k[(k[Cc>>2]|0)+60>>2]&1023](Cc,Dc);k[yc+4>>2]=xc}xc=k[d>>2]|0;if(k[xc>>2]|0){Dc=k[k[xc+4>>2]>>2]|0;Fc[k[(k[Dc>>2]|0)+60>>2]&1023](Dc,k[k[yc+4>>2]>>2]|0)}Dc=k[f>>2]|0;xc=Qqa(8)|0;B=0;va(485,xc|0);Cc=B;B=0;if(Cc&1){Gc=xc;Bc=13;break}if(k[Dc>>2]|0){Cc=k[Dc+4>>2]|0;Dc=Qqa(4)|0;zc=k[Cc>>2]|0;Ic=Hc[k[(k[zc>>2]|0)+36>>2]&511](zc)|0;k[Dc>>2]=Ic;zc=k[Cc>>2]|0;Fc[k[(k[zc>>2]|0)+60>>2]&1023](zc,Ic);k[xc+4>>2]=Dc}Dc=k[f>>2]|0;if(!(k[Dc>>2]|0)){Jc=xc;Kc=yc}else{Ic=k[k[Dc+4>>2]>>2]|0;Fc[k[(k[Ic>>2]|0)+60>>2]&1023](Ic,k[k[xc+4>>2]>>2]|0);Jc=xc;Kc=yc}}else{Jc=vc;Kc=wc}xh(a,505);uoa(a,1,656);uoa(a,0,645);Eh(a);oO(k[Ea>>2]|0,162,161);Noa(a);yc=1;while(1){xc=k[e>>2]|0;Ic=Qqa(8)|0;B=0;va(485,Ic|0);Dc=B;B=0;if(Dc&1){Lc=Ic;Bc=20;break a}if(k[xc>>2]|0){Dc=k[xc+4>>2]|0;xc=Qqa(4)|0;zc=k[Dc>>2]|0;Cc=Hc[k[(k[zc>>2]|0)+36>>2]&511](zc)|0;k[xc>>2]=Cc;zc=k[Dc>>2]|0;Fc[k[(k[zc>>2]|0)+60>>2]&1023](zc,Cc);k[Ic+4>>2]=xc}xc=k[e>>2]|0;if(!(k[xc>>2]|0))Mc=yc;else{Cc=k[k[xc+4>>2]>>2]|0;Fc[k[(k[Cc>>2]|0)+60>>2]&1023](Cc,k[k[Ic+4>>2]>>2]|0);Mc=yc}while(1){if(CY()|0){k[z>>2]=27524;k[Ka>>2]=27544;B=0;wa(508,Ma|0,La|0);Cc=B;B=0;if(Cc&1){Bc=29;break a}k[Na>>2]=0;k[Oa>>2]=-1;k[z>>2]=27468;k[Ka>>2]=27488;B=0;va(448,La|0);Cc=B;B=0;if(Cc&1){Bc=30;break a}k[La>>2]=27560;k[Pa>>2]=0;k[Pa+4>>2]=0;k[Pa+8>>2]=0;k[Pa+12>>2]=0;k[Qa>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,La|0,c|0);Cc=B;B=0;if(Cc&1){Bc=28;break a}Yua(c);B=0;Ia(40,z|0,116528,28)|0;Cc=B;B=0;if(Cc&1){Bc=37;break a}B=0;wa(510,A|0,La|0);Cc=B;B=0;if(Cc&1){Bc=37;break a}B=0;ya(425,A|0)|0;Cc=B;B=0;if(Cc&1){Bc=38;break a}Yua(A);k[z>>2]=27468;k[Ka>>2]=27488;k[La>>2]=27560;Yua(Pa);Ava(La);vva(Ka)}ooa(j,l,m,n,v,a);poa(h,k[Ga>>2]|0,505);Loa(k[m>>2]|0,k[l>>2]|0,k[h>>2]|0,0);Cc=k[l>>2]|0;if(Cc){if((k[Cc>>2]|0)!=0?(xc=k[Cc+4>>2]|0,(xc|0)!=0):0){zc=k[xc>>2]|0;if(zc)Ec[k[(k[zc>>2]|0)+4>>2]&1023](zc);Sqa(xc)}Sqa(Cc)}Cc=k[e>>2]|0;if(Cc){if((k[Cc>>2]|0)!=0?(xc=k[Cc+4>>2]|0,(xc|0)!=0):0){zc=k[xc>>2]|0;if(zc)Ec[k[(k[zc>>2]|0)+4>>2]&1023](zc);Sqa(xc)}Sqa(Cc)}Poa(e,k[j>>2]|0,k[m>>2]|0,Ic,k[n>>2]|0,k[Ea>>2]|0);Cc=k[j>>2]|0;if(Cc){if((k[Cc>>2]|0)!=0?(xc=k[Cc+4>>2]|0,(xc|0)!=0):0){zc=k[xc>>2]|0;if(zc)Ec[k[(k[zc>>2]|0)+4>>2]&1023](zc);Sqa(xc)}Sqa(Cc)}Cc=k[m>>2]|0;if(Cc){if((k[Cc>>2]|0)!=0?(xc=k[Cc+4>>2]|0,(xc|0)!=0):0){zc=k[xc>>2]|0;if(zc)Ec[k[(k[zc>>2]|0)+4>>2]&1023](zc);Sqa(xc)}Sqa(Cc)}Cc=k[n>>2]|0;if(Cc){if((k[Cc>>2]|0)!=0?(xc=k[Cc+4>>2]|0,(xc|0)!=0):0){zc=k[xc>>2]|0;if(zc)Ec[k[(k[zc>>2]|0)+4>>2]&1023](zc);Sqa(xc)}Sqa(Cc)}Cc=k[d>>2]|0;if(Cc){if((k[Cc>>2]|0)!=0?(xc=k[Cc+4>>2]|0,(xc|0)!=0):0){zc=k[xc>>2]|0;if(zc)Ec[k[(k[zc>>2]|0)+4>>2]&1023](zc);Sqa(xc)}Sqa(Cc)}Roa(d,k[e>>2]|0,k[h>>2]|0,k[Ga>>2]|0,k[Ea>>2]|0,0);Cc=k[h>>2]|0;if(Cc){if((k[Cc>>2]|0)!=0?(xc=k[Cc+4>>2]|0,(xc|0)!=0):0){zc=k[xc>>2]|0;if(zc)Ec[k[(k[zc>>2]|0)+4>>2]&1023](zc);Sqa(xc)}Sqa(Cc)}xoa(a,k[d>>2]|0);Moa(q,s,a);if(EY()|0){k[C>>2]=27524;k[Ra>>2]=27544;B=0;wa(508,Ua|0,Ta|0);Cc=B;B=0;if(Cc&1){Bc=94;break a}k[Va>>2]=0;k[Wa>>2]=-1;k[C>>2]=27468;k[Ra>>2]=27488;B=0;va(448,Ta|0);Cc=B;B=0;if(Cc&1){Bc=95;break a}k[Ta>>2]=27560;k[Ya>>2]=0;k[Ya+4>>2]=0;k[Ya+8>>2]=0;k[Ya+12>>2]=0;k[Za>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ta|0,c|0);Cc=B;B=0;if(Cc&1){Bc=93;break a}Yua(c);B=0;Cc=Ia(40,C|0,116557,37)|0;xc=B;B=0;if(xc&1){Bc=104;break a}B=0;xc=Xa(242,Cc|0,k[s>>2]|0)|0;Cc=B;B=0;if(Cc&1){Bc=104;break a}B=0;Ia(40,xc|0,149177,1)|0;xc=B;B=0;if(xc&1){Bc=104;break a}B=0;wa(510,D|0,Ta|0);xc=B;B=0;if(xc&1){Bc=104;break a}B=0;ya(425,D|0)|0;xc=B;B=0;if(xc&1){Bc=105;break a}Yua(D);k[C>>2]=27468;k[Ra>>2]=27488;k[Ta>>2]=27560;Yua(Ya);Ava(Ta);vva(Ra)}if((Mc|0)>=(k[u>>2]|0)){Bc=108;break a}xc=Mc+1|0;if(!(k[s>>2]|0)){Nc=xc;break}else Mc=xc}xc=Qqa(8)|0;B=0;va(485,xc|0);Cc=B;B=0;if(Cc&1){Oc=xc;Bc=136;break a}if((k[Ic>>2]|0)!=0?(Cc=Ic+4|0,zc=k[Cc>>2]|0,Dc=Qqa(4)|0,Pc=k[zc>>2]|0,Qc=Hc[k[(k[Pc>>2]|0)+36>>2]&511](Pc)|0,k[Dc>>2]=Qc,Pc=k[zc>>2]|0,Fc[k[(k[Pc>>2]|0)+60>>2]&1023](Pc,Qc),k[xc+4>>2]=Dc,(k[Ic>>2]|0)!=0):0){Qc=k[k[Cc>>2]>>2]|0;Fc[k[(k[Qc>>2]|0)+60>>2]&1023](Qc,k[Dc>>2]|0)}if((k[xc>>2]|0)!=0?(Dc=xc+4|0,Qc=k[k[Dc>>2]>>2]|0,Xc[k[(k[Qc>>2]|0)+48>>2]&63](Qc,k[k[(k[e>>2]|0)+4>>2]>>2]|0,-1.0),(k[xc>>2]|0)!=0):0){Qc=k[k[Dc>>2]>>2]|0;Rc=+id[k[(k[Qc>>2]|0)+64>>2]&63](Qc,1);if((k[xc>>2]|0)!=0?(Qc=k[Dc>>2]|0,(Qc|0)!=0):0){Dc=k[Qc>>2]|0;if(Dc)Ec[k[(k[Dc>>2]|0)+4>>2]&1023](Dc);Sqa(Qc);Sc=Rc}else Sc=Rc}else Sc=0.0;Sqa(xc);if(!(k[Ic>>2]|0))Tc=0.0;else{xc=k[k[Ic+4>>2]>>2]|0;Tc=+id[k[(k[xc>>2]|0)+64>>2]&63](xc,1)}Rc=+$(+Sc);p[t>>3]=Rc;xc=k[t+4>>2]|0;if(xc>>>0>2146435072|(xc|0)==2146435072&(k[t>>2]|0)>>>0>0){Bc=150;break a}Rc=+$(+Tc);p[t>>3]=Rc;xc=k[t+4>>2]|0;if(xc>>>0>2146435072|(xc|0)==2146435072&(k[t>>2]|0)>>>0>0){Bc=150;break a}Rc=Sc==0.0&Tc==0.0?1.0e-06:Tc;if(EY()|0){k[M>>2]=27524;k[_a>>2]=27544;B=0;wa(508,ab|0,$a|0);xc=B;B=0;if(xc&1){Bc=179;break a}k[bb>>2]=0;k[cb>>2]=-1;k[M>>2]=27468;k[_a>>2]=27488;B=0;va(448,$a|0);xc=B;B=0;if(xc&1){Bc=180;break a}k[$a>>2]=27560;k[db>>2]=0;k[db+4>>2]=0;k[db+8>>2]=0;k[db+12>>2]=0;k[fb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,$a|0,c|0);xc=B;B=0;if(xc&1){Bc=178;break a}Yua(c);k[M+(k[(k[M>>2]|0)+-12>>2]|0)+12>>2]=50;xc=M+(k[(k[M>>2]|0)+-12>>2]|0)+4|0;k[xc>>2]=k[xc>>2]&-177|32;B=0;xc=Ia(40,M|0,116784,40)|0;Qc=B;B=0;if(Qc&1){Bc=191;break a}Uc=Sc/Rc;B=0;Qc=Sa(1,xc|0,+(Uc*100.0))|0;xc=B;B=0;if(xc&1){Bc=191;break a}B=0;xc=Ia(40,Qc|0,116825,21)|0;Qc=B;B=0;if(Qc&1){Bc=191;break a}B=0;Qc=Sa(1,xc|0,+(+p[w>>3]*10.0*100.0))|0;xc=B;B=0;if(xc&1){Bc=191;break a}B=0;Ia(40,Qc|0,148274,3)|0;Qc=B;B=0;if(Qc&1){Bc=191;break a}B=0;wa(510,N|0,$a|0);Qc=B;B=0;if(Qc&1){Bc=191;break a}B=0;ya(425,N|0)|0;Qc=B;B=0;if(Qc&1){Bc=192;break a}Yua(N);k[M>>2]=27468;k[_a>>2]=27488;k[$a>>2]=27560;Yua(db);Ava($a);vva(_a);Vc=Uc}else Vc=Sc/Rc;if(Vc<+p[w>>3]*10.0)if(EY()|0){k[O>>2]=27524;k[gb>>2]=27544;B=0;wa(508,ib|0,hb|0);Qc=B;B=0;if(Qc&1){Bc=200;break a}k[jb>>2]=0;k[kb>>2]=-1;k[O>>2]=27468;k[gb>>2]=27488;B=0;va(448,hb|0);Qc=B;B=0;if(Qc&1){Bc=201;break a}k[hb>>2]=27560;k[lb>>2]=0;k[lb+4>>2]=0;k[lb+8>>2]=0;k[lb+12>>2]=0;k[mb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,hb|0,c|0);Qc=B;B=0;if(Qc&1){Bc=199;break a}Yua(c);B=0;Ia(40,O|0,116847,41)|0;Qc=B;B=0;if(Qc&1){Bc=208;break a}B=0;wa(510,P|0,hb|0);Qc=B;B=0;if(Qc&1){Bc=208;break a}B=0;ya(425,P|0)|0;Qc=B;B=0;if(Qc&1){Bc=209;break a}Yua(P);k[O>>2]=27468;k[gb>>2]=27488;k[hb>>2]=27560;Yua(lb);Ava(hb);vva(gb);Wc=1}else Wc=1;else Wc=0;if((k[Ic>>2]|0)!=0?(Qc=k[Ic+4>>2]|0,(Qc|0)!=0):0){xc=k[Qc>>2]|0;if(xc)Ec[k[(k[xc>>2]|0)+4>>2]&1023](xc);Sqa(Qc)}Sqa(Ic);if(Wc)break;else yc=Nc}pO(k[Ea>>2]|0,+p[v>>3],164);uoa(a,1,645);xoa(a,k[d>>2]|0);voa(a,+p[v>>3],164);if(!(i[o>>0]|0))Yc=uc;else{xh(a,506);ui(a,x);oda(Ja,a);uoa(a,1,656);uoa(a,0,645);oO(k[Ea>>2]|0,163,161);yc=uc;while(1){Qc=k[f>>2]|0;xc=Qqa(8)|0;B=0;va(485,xc|0);Dc=B;B=0;if(Dc&1){Zc=xc;Bc=221;break a}if(k[Qc>>2]|0){Dc=k[Qc+4>>2]|0;Qc=Qqa(4)|0;Cc=k[Dc>>2]|0;Pc=Hc[k[(k[Cc>>2]|0)+36>>2]&511](Cc)|0;k[Qc>>2]=Pc;Cc=k[Dc>>2]|0;Fc[k[(k[Cc>>2]|0)+60>>2]&1023](Cc,Pc);k[xc+4>>2]=Qc}Qc=k[f>>2]|0;if(k[Qc>>2]|0){Pc=k[k[Qc+4>>2]>>2]|0;Fc[k[(k[Pc>>2]|0)+60>>2]&1023](Pc,k[k[xc+4>>2]>>2]|0)}if(CY()|0){k[R>>2]=27524;k[Tb>>2]=27544;B=0;wa(508,Vb|0,Ub|0);Pc=B;B=0;if(Pc&1){Bc=230;break a}k[Wb>>2]=0;k[Xb>>2]=-1;k[R>>2]=27468;k[Tb>>2]=27488;B=0;va(448,Ub|0);Pc=B;B=0;if(Pc&1){Bc=231;break a}k[Ub>>2]=27560;k[Yb>>2]=0;k[Yb+4>>2]=0;k[Yb+8>>2]=0;k[Yb+12>>2]=0;k[Zb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ub|0,c|0);Pc=B;B=0;if(Pc&1){Bc=229;break a}Yua(c);B=0;Ia(40,R|0,116889,28)|0;Pc=B;B=0;if(Pc&1){Bc=238;break a}B=0;wa(510,S|0,Ub|0);Pc=B;B=0;if(Pc&1){Bc=238;break a}B=0;ya(425,S|0)|0;Pc=B;B=0;if(Pc&1){Bc=239;break a}Yua(S);k[R>>2]=27468;k[Tb>>2]=27488;k[Ub>>2]=27560;Yua(Yb);Ava(Ub);vva(Tb)}xh(a,492);vi(a,y);oda(Ja,a);oO(k[Ea>>2]|0,129,576);Voa(a);oO(k[Ea>>2]|0,130,576);Voa(a);xh(a,506);Jda(Ha,a);ui(a,x);oda(Ja,a);if(CY()|0){k[T>>2]=27524;k[_b>>2]=27544;B=0;wa(508,ac|0,$b|0);Pc=B;B=0;if(Pc&1){Bc=246;break a}k[bc>>2]=0;k[cc>>2]=-1;k[T>>2]=27468;k[_b>>2]=27488;B=0;va(448,$b|0);Pc=B;B=0;if(Pc&1){Bc=247;break a}k[$b>>2]=27560;k[dc>>2]=0;k[dc+4>>2]=0;k[dc+8>>2]=0;k[dc+12>>2]=0;k[ec>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,$b|0,c|0);Pc=B;B=0;if(Pc&1){Bc=245;break a}Yua(c);B=0;Ia(40,T|0,116918,23)|0;Pc=B;B=0;if(Pc&1){Bc=254;break a}B=0;wa(510,U|0,$b|0);Pc=B;B=0;if(Pc&1){Bc=254;break a}B=0;ya(425,U|0)|0;Pc=B;B=0;if(Pc&1){Bc=255;break a}Yua(U);k[T>>2]=27468;k[_b>>2]=27488;k[$b>>2]=27560;Yua(dc);Ava($b);vva(_b)}ooa(j,l,m,n,0,a);poa(h,k[Ga>>2]|0,506);Loa(k[m>>2]|0,k[l>>2]|0,k[h>>2]|0,0);Pc=k[l>>2]|0;if(Pc){if((k[Pc>>2]|0)!=0?(Qc=k[Pc+4>>2]|0,(Qc|0)!=0):0){Cc=k[Qc>>2]|0;if(Cc)Ec[k[(k[Cc>>2]|0)+4>>2]&1023](Cc);Sqa(Qc)}Sqa(Pc)}Pc=k[g>>2]|0;if(Pc){if((k[Pc>>2]|0)!=0?(Qc=k[Pc+4>>2]|0,(Qc|0)!=0):0){Cc=k[Qc>>2]|0;if(Cc)Ec[k[(k[Cc>>2]|0)+4>>2]&1023](Cc);Sqa(Qc)}Sqa(Pc)}Poa(g,k[j>>2]|0,k[m>>2]|0,yc,k[n>>2]|0,k[Ea>>2]|0);Pc=k[j>>2]|0;if(Pc){if((k[Pc>>2]|0)!=0?(Qc=k[Pc+4>>2]|0,(Qc|0)!=0):0){Cc=k[Qc>>2]|0;if(Cc)Ec[k[(k[Cc>>2]|0)+4>>2]&1023](Cc);Sqa(Qc)}Sqa(Pc)}Pc=k[m>>2]|0;if(Pc){if((k[Pc>>2]|0)!=0?(Qc=k[Pc+4>>2]|0,(Qc|0)!=0):0){Cc=k[Qc>>2]|0;if(Cc)Ec[k[(k[Cc>>2]|0)+4>>2]&1023](Cc);Sqa(Qc)}Sqa(Pc)}Pc=k[n>>2]|0;if(Pc){if((k[Pc>>2]|0)!=0?(Qc=k[Pc+4>>2]|0,(Qc|0)!=0):0){Cc=k[Qc>>2]|0;if(Cc)Ec[k[(k[Cc>>2]|0)+4>>2]&1023](Cc);Sqa(Qc)}Sqa(Pc)}if(yc){do if(k[yc>>2]|0){Pc=k[yc+4>>2]|0;if(!Pc)break;Qc=k[Pc>>2]|0;if(Qc)Ec[k[(k[Qc>>2]|0)+4>>2]&1023](Qc);Sqa(Pc)}while(0);Sqa(yc)}Ic=k[g>>2]|0;Pc=Qqa(8)|0;B=0;va(485,Pc|0);Qc=B;B=0;if(Qc&1){_c=Pc;Bc=301;break a}if(k[Ic>>2]|0){Qc=k[Ic+4>>2]|0;Ic=Qqa(4)|0;Cc=k[Qc>>2]|0;Dc=Hc[k[(k[Cc>>2]|0)+36>>2]&511](Cc)|0;k[Ic>>2]=Dc;Cc=k[Qc>>2]|0;Fc[k[(k[Cc>>2]|0)+60>>2]&1023](Cc,Dc);k[Pc+4>>2]=Ic}Ic=k[g>>2]|0;if(k[Ic>>2]|0){Dc=k[k[Ic+4>>2]>>2]|0;Fc[k[(k[Dc>>2]|0)+60>>2]&1023](Dc,k[k[Pc+4>>2]>>2]|0)}Dc=k[f>>2]|0;if(Dc){do if(k[Dc>>2]|0){Ic=k[Dc+4>>2]|0;if(!Ic)break;Cc=k[Ic>>2]|0;if(Cc)Ec[k[(k[Cc>>2]|0)+4>>2]&1023](Cc);Sqa(Ic)}while(0);Sqa(Dc)}Roa(f,k[g>>2]|0,k[h>>2]|0,k[Ga>>2]|0,k[Ea>>2]|0,0);Ic=k[h>>2]|0;if(Ic){do if(k[Ic>>2]|0){Cc=k[Ic+4>>2]|0;if(!Cc)break;Qc=k[Cc>>2]|0;if(Qc)Ec[k[(k[Qc>>2]|0)+4>>2]&1023](Qc);Sqa(Cc)}while(0);Sqa(Ic)}xoa(a,k[f>>2]|0);Moa(q,s,a);Dc=Qqa(8)|0;B=0;va(485,Dc|0);Cc=B;B=0;if(Cc&1){$c=Dc;Bc=321;break a}do if(k[xc>>2]|0){Cc=xc+4|0;Qc=k[Cc>>2]|0;zc=Qqa(4)|0;ad=k[Qc>>2]|0;bd=Hc[k[(k[ad>>2]|0)+36>>2]&511](ad)|0;k[zc>>2]=bd;ad=k[Qc>>2]|0;Fc[k[(k[ad>>2]|0)+60>>2]&1023](ad,bd);k[Dc+4>>2]=zc;if(!(k[xc>>2]|0))break;bd=k[k[Cc>>2]>>2]|0;Fc[k[(k[bd>>2]|0)+60>>2]&1023](bd,k[zc>>2]|0)}while(0);do if(!(k[Dc>>2]|0))cd=0.0;else{Ic=Dc+4|0;zc=k[k[Ic>>2]>>2]|0;Xc[k[(k[zc>>2]|0)+48>>2]&63](zc,k[k[(k[f>>2]|0)+4>>2]>>2]|0,-1.0);if(!(k[Dc>>2]|0)){cd=0.0;break}zc=k[k[Ic>>2]>>2]|0;Rc=+id[k[(k[zc>>2]|0)+64>>2]&63](zc,1);if(!(k[Dc>>2]|0)){cd=Rc;break}zc=k[Ic>>2]|0;if(!zc){cd=Rc;break}Ic=k[zc>>2]|0;if(Ic)Ec[k[(k[Ic>>2]|0)+4>>2]&1023](Ic);Sqa(zc);cd=Rc}while(0);Sqa(Dc);if(!(k[xc>>2]|0))dd=0.0;else{zc=k[k[xc+4>>2]>>2]|0;dd=+id[k[(k[zc>>2]|0)+64>>2]&63](zc,1)}Rc=+$(+cd);p[t>>3]=Rc;zc=k[t+4>>2]|0;if(zc>>>0>2146435072|(zc|0)==2146435072&(k[t>>2]|0)>>>0>0){Bc=335;break a}Rc=+$(+dd);p[t>>3]=Rc;zc=k[t+4>>2]|0;if(zc>>>0>2146435072|(zc|0)==2146435072&(k[t>>2]|0)>>>0>0){Bc=335;break a}Rc=cd==0.0&dd==0.0?1.0e-06:dd;if(EY()|0){k[Z>>2]=27524;k[fc>>2]=27544;B=0;wa(508,hc|0,gc|0);zc=B;B=0;if(zc&1){Bc=364;break a}k[ic>>2]=0;k[jc>>2]=-1;k[Z>>2]=27468;k[fc>>2]=27488;B=0;va(448,gc|0);zc=B;B=0;if(zc&1){Bc=365;break a}k[gc>>2]=27560;k[kc>>2]=0;k[kc+4>>2]=0;k[kc+8>>2]=0;k[kc+12>>2]=0;k[lc>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,gc|0,c|0);zc=B;B=0;if(zc&1){Bc=363;break a}Yua(c);k[Z+(k[(k[Z>>2]|0)+-12>>2]|0)+12>>2]=50;zc=Z+(k[(k[Z>>2]|0)+-12>>2]|0)+4|0;k[zc>>2]=k[zc>>2]&-177|32;B=0;zc=Ia(40,Z|0,116942,35)|0;Ic=B;B=0;if(Ic&1){Bc=376;break a}Uc=cd/Rc;B=0;Ic=Sa(1,zc|0,+(Uc*100.0))|0;zc=B;B=0;if(zc&1){Bc=376;break a}B=0;zc=Ia(40,Ic|0,116825,21)|0;Ic=B;B=0;if(Ic&1){Bc=376;break a}B=0;Ic=Sa(1,zc|0,+(+p[w>>3]*10.0*100.0))|0;zc=B;B=0;if(zc&1){Bc=376;break a}B=0;Ia(40,Ic|0,148274,3)|0;Ic=B;B=0;if(Ic&1){Bc=376;break a}B=0;wa(510,_|0,gc|0);Ic=B;B=0;if(Ic&1){Bc=376;break a}B=0;ya(425,_|0)|0;Ic=B;B=0;if(Ic&1){Bc=377;break a}Yua(_);k[Z>>2]=27468;k[fc>>2]=27488;k[gc>>2]=27560;Yua(kc);Ava(gc);vva(fc);ed=Uc}else ed=cd/Rc;Ic=ed<+p[w>>3]*10.0;if((k[u>>2]|0)<2){Bc=380;break a}do if(k[xc>>2]|0){zc=k[xc+4>>2]|0;if(!zc)break;bd=k[zc>>2]|0;if(bd)Ec[k[(k[bd>>2]|0)+4>>2]&1023](bd);Sqa(zc)}while(0);Sqa(xc);if(Ic){fd=Pc;break}else yc=Pc}if(CY()|0){k[ea>>2]=27524;k[mc>>2]=27544;B=0;wa(508,oc|0,nc|0);yc=B;B=0;if(yc&1){Bc=416;break}k[pc>>2]=0;k[qc>>2]=-1;k[ea>>2]=27468;k[mc>>2]=27488;B=0;va(448,nc|0);yc=B;B=0;if(yc&1){Bc=417;break}k[nc>>2]=27560;k[rc>>2]=0;k[rc+4>>2]=0;k[rc+8>>2]=0;k[rc+12>>2]=0;k[sc>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,nc|0,c|0);yc=B;B=0;if(yc&1){Bc=415;break}Yua(c);B=0;Ia(40,ea|0,117016,16)|0;yc=B;B=0;if(yc&1){Bc=424;break}B=0;wa(510,fa|0,nc|0);yc=B;B=0;if(yc&1){Bc=424;break}B=0;ya(425,fa|0)|0;yc=B;B=0;if(yc&1){Bc=425;break}Yua(fa);k[ea>>2]=27468;k[mc>>2]=27488;k[nc>>2]=27560;Yua(rc);Ava(nc);vva(mc)}uoa(a,1,645);xoa(a,k[f>>2]|0);xda(Ha,a);Yc=fd}if(tc){gd=Yc;Bc=619;break}yc=Qqa(8)|0;B=0;va(485,yc|0);Dc=B;B=0;if(Dc&1){hd=yc;Bc=431;break}if((k[Kc>>2]|0)!=0?(Dc=Kc+4|0,zc=k[Dc>>2]|0,bd=Qqa(4)|0,Cc=k[zc>>2]|0,ad=Hc[k[(k[Cc>>2]|0)+36>>2]&511](Cc)|0,k[bd>>2]=ad,Cc=k[zc>>2]|0,Fc[k[(k[Cc>>2]|0)+60>>2]&1023](Cc,ad),k[yc+4>>2]=bd,(k[Kc>>2]|0)!=0):0){ad=k[k[Dc>>2]>>2]|0;Fc[k[(k[ad>>2]|0)+60>>2]&1023](ad,k[bd>>2]|0)}if((k[yc>>2]|0)!=0?(bd=yc+4|0,ad=k[k[bd>>2]>>2]|0,Xc[k[(k[ad>>2]|0)+48>>2]&63](ad,k[k[(k[d>>2]|0)+4>>2]>>2]|0,-1.0),(k[yc>>2]|0)!=0):0){ad=k[k[bd>>2]>>2]|0;Rc=+id[k[(k[ad>>2]|0)+64>>2]&63](ad,1);if((k[yc>>2]|0)!=0?(ad=k[bd>>2]|0,(ad|0)!=0):0){bd=k[ad>>2]|0;if(bd)Ec[k[(k[bd>>2]|0)+4>>2]&1023](bd);Sqa(ad);jd=Rc}else jd=Rc}else jd=0.0;Sqa(yc);if(k[Kc>>2]|0){yc=Kc+4|0;ad=k[k[yc>>2]>>2]|0;Rc=+id[k[(k[ad>>2]|0)+64>>2]&63](ad,1);if((k[Kc>>2]|0)!=0?(ad=k[yc>>2]|0,(ad|0)!=0):0){yc=k[ad>>2]|0;if(yc)Ec[k[(k[yc>>2]|0)+4>>2]&1023](yc);Sqa(ad);kd=Rc}else kd=Rc}else kd=0.0;Sqa(Kc);Rc=+$(+jd);p[t>>3]=Rc;ad=k[t+4>>2]|0;if(ad>>>0>2146435072|(ad|0)==2146435072&(k[t>>2]|0)>>>0>0){Bc=449;break}Rc=+$(+kd);p[t>>3]=Rc;ad=k[t+4>>2]|0;if(ad>>>0>2146435072|(ad|0)==2146435072&(k[t>>2]|0)>>>0>0){Bc=449;break}Rc=jd==0.0&kd==0.0?1.0e-06:kd;ad=Qqa(8)|0;B=0;va(485,ad|0);yc=B;B=0;if(yc&1){ld=ad;Bc=474;break}if((k[Jc>>2]|0)!=0?(yc=Jc+4|0,bd=k[yc>>2]|0,Dc=Qqa(4)|0,Cc=k[bd>>2]|0,zc=Hc[k[(k[Cc>>2]|0)+36>>2]&511](Cc)|0,k[Dc>>2]=zc,Cc=k[bd>>2]|0,Fc[k[(k[Cc>>2]|0)+60>>2]&1023](Cc,zc),k[ad+4>>2]=Dc,(k[Jc>>2]|0)!=0):0){zc=k[k[yc>>2]>>2]|0;Fc[k[(k[zc>>2]|0)+60>>2]&1023](zc,k[Dc>>2]|0)}if((k[ad>>2]|0)!=0?(Dc=ad+4|0,zc=k[k[Dc>>2]>>2]|0,Xc[k[(k[zc>>2]|0)+48>>2]&63](zc,k[k[(k[f>>2]|0)+4>>2]>>2]|0,-1.0),(k[ad>>2]|0)!=0):0){zc=k[k[Dc>>2]>>2]|0;Uc=+id[k[(k[zc>>2]|0)+64>>2]&63](zc,1);if((k[ad>>2]|0)!=0?(zc=k[Dc>>2]|0,(zc|0)!=0):0){Dc=k[zc>>2]|0;if(Dc)Ec[k[(k[Dc>>2]|0)+4>>2]&1023](Dc);Sqa(zc);md=Uc}else md=Uc}else md=0.0;Sqa(ad);if(k[Jc>>2]|0){ad=Jc+4|0;zc=k[k[ad>>2]>>2]|0;Uc=+id[k[(k[zc>>2]|0)+64>>2]&63](zc,1);if((k[Jc>>2]|0)!=0?(zc=k[ad>>2]|0,(zc|0)!=0):0){ad=k[zc>>2]|0;if(ad)Ec[k[(k[ad>>2]|0)+4>>2]&1023](ad);Sqa(zc);nd=Uc}else nd=Uc}else nd=0.0;Sqa(Jc);Uc=+$(+md);p[t>>3]=Uc;zc=k[t+4>>2]|0;if(zc>>>0>2146435072|(zc|0)==2146435072&(k[t>>2]|0)>>>0>0){Bc=492;break}Uc=+$(+nd);p[t>>3]=Uc;zc=k[t+4>>2]|0;if(zc>>>0>2146435072|(zc|0)==2146435072&(k[t>>2]|0)>>>0>0){Bc=492;break}Uc=+p[w>>3];od=+$(+Uc);p[t>>3]=od;zc=k[t+4>>2]|0;do if(zc>>>0>2146435072|(zc|0)==2146435072&(k[t>>2]|0)>>>0>0){k[xa>>2]=27524;k[nb>>2]=27544;B=0;wa(508,pb|0,ob|0);ad=B;B=0;if(ad&1){Bc=579;break a}k[qb>>2]=0;k[rb>>2]=-1;k[xa>>2]=27468;k[nb>>2]=27488;B=0;va(448,ob|0);ad=B;B=0;if(ad&1){Bc=580;break a}k[ob>>2]=27560;k[sb>>2]=0;k[sb+4>>2]=0;k[sb+8>>2]=0;k[sb+12>>2]=0;k[tb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ob|0,c|0);ad=B;B=0;if(ad&1){Bc=578;break a}Yua(c);k[xa+(k[(k[xa>>2]|0)+-12>>2]|0)+12>>2]=50;ad=xa+(k[(k[xa>>2]|0)+-12>>2]|0)+4|0;k[ad>>2]=k[ad>>2]&-177|32;B=0;ad=Ia(40,xa|0,117201,25)|0;Dc=B;B=0;if(Dc&1){Bc=589;break a}B=0;Dc=Sa(1,ad|0,+(jd/Rc*100.0))|0;ad=B;B=0;if(ad&1){Bc=589;break a}B=0;Ia(40,Dc|0,148274,3)|0;Dc=B;B=0;if(Dc&1){Bc=589;break a}B=0;wa(510,za|0,ob|0);Dc=B;B=0;if(Dc&1){Bc=589;break a}B=0;ya(425,za|0)|0;Dc=B;B=0;if(Dc&1){Bc=590;break a}Yua(za);k[xa>>2]=27468;k[nb>>2]=27488;k[ob>>2]=27560;Yua(sb);Ava(ob);vva(nb);pd=0}else{od=md/(md==0.0&nd==0.0?1.0e-06:nd);qd=jd/Rc;Dc=EY()|0;if(od<Uc&qd<Uc){if(!Dc){pd=1;break}k[oa>>2]=27524;k[ub>>2]=27544;B=0;wa(508,wb|0,vb|0);ad=B;B=0;if(ad&1){Bc=522;break a}k[xb>>2]=0;k[yb>>2]=-1;k[oa>>2]=27468;k[ub>>2]=27488;B=0;va(448,vb|0);ad=B;B=0;if(ad&1){Bc=523;break a}k[vb>>2]=27560;k[Bb>>2]=0;k[Bb+4>>2]=0;k[Bb+8>>2]=0;k[Bb+12>>2]=0;k[Cb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,vb|0,c|0);ad=B;B=0;if(ad&1){Bc=521;break a}Yua(c);k[oa+(k[(k[oa>>2]|0)+-12>>2]|0)+12>>2]=50;ad=oa+(k[(k[oa>>2]|0)+-12>>2]|0)+4|0;k[ad>>2]=k[ad>>2]&-177|32;B=0;ad=Ia(40,oa|0,117101,20)|0;yc=B;B=0;if(yc&1){Bc=532;break a}B=0;yc=Xa(242,ad|0,Fa|0)|0;ad=B;B=0;if(ad&1){Bc=532;break a}B=0;Ia(40,yc|0,117122,13)|0;yc=B;B=0;if(yc&1){Bc=532;break a}B=0;wa(510,pa|0,vb|0);yc=B;B=0;if(yc&1){Bc=532;break a}B=0;ya(425,pa|0)|0;yc=B;B=0;if(yc&1){Bc=533;break a}Yua(pa);k[oa>>2]=27468;k[ub>>2]=27488;k[vb>>2]=27560;Yua(Bb);Ava(vb);vva(ub);pd=1;break}if(Dc){k[qa>>2]=27524;k[Db>>2]=27544;B=0;wa(508,Fb|0,Eb|0);Dc=B;B=0;if(Dc&1){Bc=540;break a}k[Gb>>2]=0;k[Hb>>2]=-1;k[qa>>2]=27468;k[Db>>2]=27488;B=0;va(448,Eb|0);Dc=B;B=0;if(Dc&1){Bc=541;break a}k[Eb>>2]=27560;k[Ib>>2]=0;k[Ib+4>>2]=0;k[Ib+8>>2]=0;k[Ib+12>>2]=0;k[Jb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Eb|0,c|0);Dc=B;B=0;if(Dc&1){Bc=539;break a}Yua(c);k[qa+(k[(k[qa>>2]|0)+-12>>2]|0)+12>>2]=50;Dc=qa+(k[(k[qa>>2]|0)+-12>>2]|0)+4|0;k[Dc>>2]=k[Dc>>2]&-177|32;B=0;Dc=Ia(40,qa|0,117136,34)|0;yc=B;B=0;if(yc&1){Bc=552;break a}B=0;yc=Sa(1,Dc|0,+(qd*100.0))|0;Dc=B;B=0;if(Dc&1){Bc=552;break a}B=0;Dc=Ia(40,yc|0,116825,21)|0;yc=B;B=0;if(yc&1){Bc=552;break a}B=0;yc=Sa(1,Dc|0,+(+p[w>>3]*100.0))|0;Dc=B;B=0;if(Dc&1){Bc=552;break a}B=0;Ia(40,yc|0,148274,3)|0;yc=B;B=0;if(yc&1){Bc=552;break a}B=0;wa(510,ra|0,Eb|0);yc=B;B=0;if(yc&1){Bc=552;break a}B=0;ya(425,ra|0)|0;yc=B;B=0;if(yc&1){Bc=553;break a}Yua(ra);k[qa>>2]=27468;k[Db>>2]=27488;k[Eb>>2]=27560;Yua(Ib);Ava(Eb);vva(Db)}if(!(EY()|0)){pd=0;break}k[sa>>2]=27524;k[Kb>>2]=27544;B=0;wa(508,Mb|0,Lb|0);yc=B;B=0;if(yc&1){Bc=560;break a}k[Nb>>2]=0;k[Ob>>2]=-1;k[sa>>2]=27468;k[Kb>>2]=27488;B=0;va(448,Lb|0);yc=B;B=0;if(yc&1){Bc=561;break a}k[Lb>>2]=27560;k[Pb>>2]=0;k[Pb+4>>2]=0;k[Pb+8>>2]=0;k[Pb+12>>2]=0;k[Sb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Lb|0,c|0);yc=B;B=0;if(yc&1){Bc=559;break a}Yua(c);k[sa+(k[(k[sa>>2]|0)+-12>>2]|0)+12>>2]=50;yc=sa+(k[(k[sa>>2]|0)+-12>>2]|0)+4|0;k[yc>>2]=k[yc>>2]&-177|32;B=0;yc=Ia(40,sa|0,117171,29)|0;Dc=B;B=0;if(Dc&1){Bc=572;break a}B=0;Dc=Sa(1,yc|0,+(od*100.0))|0;yc=B;B=0;if(yc&1){Bc=572;break a}B=0;yc=Ia(40,Dc|0,116825,21)|0;Dc=B;B=0;if(Dc&1){Bc=572;break a}B=0;Dc=Sa(1,yc|0,+(+p[w>>3]*100.0))|0;yc=B;B=0;if(yc&1){Bc=572;break a}B=0;Ia(40,Dc|0,148274,3)|0;Dc=B;B=0;if(Dc&1){Bc=572;break a}B=0;wa(510,ta|0,Lb|0);Dc=B;B=0;if(Dc&1){Bc=572;break a}B=0;ya(425,ta|0)|0;Dc=B;B=0;if(Dc&1){Bc=573;break a}Yua(ta);k[sa>>2]=27468;k[Kb>>2]=27488;k[Lb>>2]=27560;Yua(Pb);Ava(Lb);vva(Kb);pd=0}while(0);if((Fa|0)>=(k[u>>2]|0)){Bc=593;break}if(pd){gd=Yc;Bc=619;break}else{tc=0;Fa=Fa+1|0;uc=Yc;vc=Jc;wc=Kc}}switch(Bc|0){case 7:{Kc=Rb()|0;Sqa(Ac);Qb(Kc|0);break}case 13:{Kc=Rb()|0;Sqa(Gc);Qb(Kc|0);break}case 20:{Kc=Rb()|0;Sqa(Lc);Qb(Kc|0);break}case 28:{Kc=Rb()|0;Lc=Q;Yua(c);Yua(Pa);Ava(La);rd=Lc;sd=Kc;Bc=31;break}case 29:{Kc=Rb()|0;td=Q;ud=Kc;vva(Ka);Qb(ud|0);break}case 30:{Kc=Rb()|0;rd=Q;sd=Kc;Bc=31;break}case 37:{Kc=Rb()|0;vd=Q;wd=Kc;Bc=39;break}case 38:{Kc=Rb()|0;Lc=Q;Yua(A);vd=Lc;wd=Kc;Bc=39;break}case 93:{Kc=Rb()|0;Lc=Q;Yua(c);Yua(Ya);Ava(Ta);xd=Lc;yd=Kc;Bc=96;break}case 94:{Kc=Rb()|0;zd=Q;Ad=Kc;vva(Ra);Qb(Ad|0);break}case 95:{Kc=Rb()|0;xd=Q;yd=Kc;Bc=96;break}case 104:{Kc=Rb()|0;Bd=Q;Cd=Kc;Bc=106;break}case 105:{Kc=Rb()|0;Lc=Q;Yua(D);Bd=Lc;Cd=Kc;Bc=106;break}case 108:{Kc=E+56|0;Lc=E+4|0;k[E>>2]=27524;k[Kc>>2]=27544;B=0;wa(508,E+56|0,Lc|0);D=B;B=0;if(D&1){D=Rb()|0;Dd=Q;Ed=D;vva(Kc);Qb(Ed|0)}k[E+128>>2]=0;k[E+132>>2]=-1;k[E>>2]=27468;k[Kc>>2]=27488;B=0;va(448,Lc|0);D=B;B=0;do if(D&1){A=Rb()|0;Fd=Q;Gd=A}else{k[Lc>>2]=27560;A=E+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[E+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Lc|0,c|0);Gc=B;B=0;if(Gc&1){Gc=Rb()|0;Ac=Q;Yua(c);Yua(A);Ava(Lc);Fd=Ac;Gd=Gc;break}Yua(c);B=0;Gc=Ia(40,E|0,116595,42)|0;Ac=B;B=0;b:do if(((!(Ac&1)?(B=0,wc=Xa(242,Gc|0,k[u>>2]|0)|0,Jc=B,B=0,!(Jc&1)):0)?(B=0,Jc=Ia(40,wc|0,116638,10)|0,wc=B,B=0,!(wc&1)):0)?(B=0,Xa(239,Jc|0,0)|0,Jc=B,B=0,!(Jc&1)):0){Jc=Ab(20)|0;B=0;eb(502,F|0,116649,101);wc=B;B=0;do if(!(wc&1)){B=0;eb(502,G|0,116751,32);vc=B;B=0;if(vc&1){vc=Rb()|0;Yc=Q;Yua(F);Hd=Yc;Id=vc;break}B=0;wa(510,H|0,Lc|0);vc=B;B=0;if(vc&1){vc=Rb()|0;Jd=1;Kd=Q;Ld=vc}else{B=0;ua(163,Jc|0,F|0,G|0,121,H|0);vc=B;B=0;if(vc&1)Md=1;else{B=0;eb(503,Jc|0,1240,229);B=0;Md=0}vc=Rb()|0;Yc=Q;Yua(H);Jd=Md;Kd=Yc;Ld=vc}Yua(G);Yua(F);if(Jd){Hd=Kd;Id=Ld}else{Nd=Kd;Od=Ld;break b}}else{vc=Rb()|0;Hd=Q;Id=vc}while(0);zb(Jc|0);Nd=Hd;Od=Id}else Bc=125;while(0);if((Bc|0)==125){Gc=Rb()|0;Nd=Q;Od=Gc}k[E>>2]=27468;k[Kc>>2]=27488;k[Lc>>2]=27560;Yua(A);Ava(Lc);vva(Kc);Pd=Nd;Qd=Od;Qb(Qd|0)}while(0);Dd=Fd;Ed=Gd;vva(Kc);Qb(Ed|0);break}case 136:{Ed=Rb()|0;Sqa(Oc);Qb(Ed|0);break}case 150:{Ed=I+56|0;Oc=I+4|0;k[I>>2]=27524;k[Ed>>2]=27544;B=0;wa(508,I+56|0,Oc|0);Kc=B;B=0;if(Kc&1){Kc=Rb()|0;Rd=Q;Sd=Kc;vva(Ed);Qb(Sd|0)}k[I+128>>2]=0;k[I+132>>2]=-1;k[I>>2]=27468;k[Ed>>2]=27488;B=0;va(448,Oc|0);Kc=B;B=0;do if(Kc&1){Gd=Rb()|0;Td=Q;Ud=Gd}else{k[Oc>>2]=27560;Gd=I+36|0;k[Gd>>2]=0;k[Gd+4>>2]=0;k[Gd+8>>2]=0;k[Gd+12>>2]=0;k[I+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Oc|0,c|0);Fd=B;B=0;if(Fd&1){Fd=Rb()|0;Dd=Q;Yua(c);Yua(Gd);Ava(Oc);Td=Dd;Ud=Fd;break}Yua(c);B=0;Fd=Ia(40,I|0,148282,29)|0;Dd=B;B=0;c:do if(!(Dd&1)?(B=0,Xa(239,Fd|0,0)|0,Od=B,B=0,!(Od&1)):0){Od=Ab(20)|0;B=0;eb(502,J|0,116649,101);Nd=B;B=0;do if(!(Nd&1)){B=0;eb(502,K|0,116751,32);Lc=B;B=0;if(Lc&1){Lc=Rb()|0;E=Q;Yua(J);Vd=E;Wd=Lc;break}B=0;wa(510,L|0,Oc|0);Lc=B;B=0;if(Lc&1){Lc=Rb()|0;Xd=1;Yd=Q;Zd=Lc}else{B=0;ua(163,Od|0,J|0,K|0,139,L|0);Lc=B;B=0;if(Lc&1)_d=1;else{B=0;eb(503,Od|0,1240,229);B=0;_d=0}Lc=Rb()|0;E=Q;Yua(L);Xd=_d;Yd=E;Zd=Lc}Yua(K);Yua(J);if(Xd){Vd=Yd;Wd=Zd}else{$d=Yd;ae=Zd;break c}}else{Lc=Rb()|0;Vd=Q;Wd=Lc}while(0);zb(Od|0);$d=Vd;ae=Wd}else Bc=165;while(0);if((Bc|0)==165){Fd=Rb()|0;$d=Q;ae=Fd}k[I>>2]=27468;k[Ed>>2]=27488;k[Oc>>2]=27560;Yua(Gd);Ava(Oc);vva(Ed);Pd=$d;Qd=ae;Qb(Qd|0)}while(0);Rd=Td;Sd=Ud;vva(Ed);Qb(Sd|0);break}case 178:{Sd=Rb()|0;Ed=Q;Yua(c);Yua(db);Ava($a);be=Ed;ce=Sd;Bc=181;break}case 179:{Sd=Rb()|0;de=Q;ee=Sd;vva(_a);Qb(ee|0);break}case 180:{Sd=Rb()|0;be=Q;ce=Sd;Bc=181;break}case 191:{Sd=Rb()|0;fe=Q;ge=Sd;Bc=193;break}case 192:{Sd=Rb()|0;Ed=Q;Yua(N);fe=Ed;ge=Sd;Bc=193;break}case 199:{Sd=Rb()|0;Ed=Q;Yua(c);Yua(lb);Ava(hb);he=Ed;ie=Sd;Bc=202;break}case 200:{Sd=Rb()|0;je=Q;ke=Sd;vva(gb);Qb(ke|0);break}case 201:{Sd=Rb()|0;he=Q;ie=Sd;Bc=202;break}case 208:{Sd=Rb()|0;le=Q;me=Sd;Bc=210;break}case 209:{Sd=Rb()|0;Ed=Q;Yua(P);le=Ed;me=Sd;Bc=210;break}case 221:{Sd=Rb()|0;Sqa(Zc);Qb(Sd|0);break}case 229:{Sd=Rb()|0;Zc=Q;Yua(c);Yua(Yb);Ava(Ub);ne=Zc;oe=Sd;Bc=232;break}case 230:{Sd=Rb()|0;pe=Q;qe=Sd;vva(Tb);Qb(qe|0);break}case 231:{Sd=Rb()|0;ne=Q;oe=Sd;Bc=232;break}case 238:{Sd=Rb()|0;re=Q;se=Sd;Bc=240;break}case 239:{Sd=Rb()|0;Zc=Q;Yua(S);re=Zc;se=Sd;Bc=240;break}case 245:{Sd=Rb()|0;Zc=Q;Yua(c);Yua(dc);Ava($b);te=Zc;ue=Sd;Bc=248;break}case 246:{Sd=Rb()|0;ve=Q;we=Sd;vva(_b);Qb(we|0);break}case 247:{Sd=Rb()|0;te=Q;ue=Sd;Bc=248;break}case 254:{Sd=Rb()|0;xe=Q;ye=Sd;Bc=256;break}case 255:{Sd=Rb()|0;Zc=Q;Yua(U);xe=Zc;ye=Sd;Bc=256;break}case 301:{Sd=Rb()|0;Sqa(_c);Qb(Sd|0);break}case 321:{Sd=Rb()|0;Sqa($c);Qb(Sd|0);break}case 335:{Sd=V+56|0;$c=V+4|0;k[V>>2]=27524;k[Sd>>2]=27544;B=0;wa(508,V+56|0,$c|0);_c=B;B=0;if(_c&1){_c=Rb()|0;ze=Q;Ae=_c;vva(Sd);Qb(Ae|0)}k[V+128>>2]=0;k[V+132>>2]=-1;k[V>>2]=27468;k[Sd>>2]=27488;B=0;va(448,$c|0);_c=B;B=0;do if(_c&1){Zc=Rb()|0;Be=Q;Ce=Zc}else{k[$c>>2]=27560;Zc=V+36|0;k[Zc>>2]=0;k[Zc+4>>2]=0;k[Zc+8>>2]=0;k[Zc+12>>2]=0;k[V+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,$c|0,c|0);U=B;B=0;if(U&1){U=Rb()|0;S=Q;Yua(c);Yua(Zc);Ava($c);Be=S;Ce=U;break}Yua(c);B=0;U=Ia(40,V|0,148282,29)|0;S=B;B=0;d:do if(!(S&1)?(B=0,Xa(239,U|0,0)|0,Ed=B,B=0,!(Ed&1)):0){Ed=Ab(20)|0;B=0;eb(502,W|0,116649,101);P=B;B=0;do if(!(P&1)){B=0;eb(502,X|0,116751,32);N=B;B=0;if(N&1){N=Rb()|0;Ud=Q;Yua(W);De=Ud;Ee=N;break}B=0;wa(510,Y|0,$c|0);N=B;B=0;if(N&1){N=Rb()|0;Fe=1;Ge=Q;He=N}else{B=0;ua(163,Ed|0,W|0,X|0,209,Y|0);N=B;B=0;if(N&1)Ie=1;else{B=0;eb(503,Ed|0,1240,229);B=0;Ie=0}N=Rb()|0;Ud=Q;Yua(Y);Fe=Ie;Ge=Ud;He=N}Yua(X);Yua(W);if(Fe){De=Ge;Ee=He}else{Je=Ge;Ke=He;break d}}else{N=Rb()|0;De=Q;Ee=N}while(0);zb(Ed|0);Je=De;Ke=Ee}else Bc=350;while(0);if((Bc|0)==350){U=Rb()|0;Je=Q;Ke=U}k[V>>2]=27468;k[Sd>>2]=27488;k[$c>>2]=27560;Yua(Zc);Ava($c);vva(Sd);Pd=Je;Qd=Ke;Qb(Qd|0)}while(0);ze=Be;Ae=Ce;vva(Sd);Qb(Ae|0);break}case 363:{Ae=Rb()|0;Sd=Q;Yua(c);Yua(kc);Ava(gc);Le=Sd;Me=Ae;Bc=366;break}case 364:{Ae=Rb()|0;Ne=Q;Oe=Ae;vva(fc);Qb(Oe|0);break}case 365:{Ae=Rb()|0;Le=Q;Me=Ae;Bc=366;break}case 376:{Ae=Rb()|0;Pe=Q;Qe=Ae;Bc=378;break}case 377:{Ae=Rb()|0;Sd=Q;Yua(_);Pe=Sd;Qe=Ae;Bc=378;break}case 380:{Ae=aa+56|0;Sd=aa+4|0;k[aa>>2]=27524;k[Ae>>2]=27544;B=0;wa(508,aa+56|0,Sd|0);_=B;B=0;if(_&1){_=Rb()|0;Re=Q;Se=_;vva(Ae);Qb(Se|0)}k[aa+128>>2]=0;k[aa+132>>2]=-1;k[aa>>2]=27468;k[Ae>>2]=27488;B=0;va(448,Sd|0);_=B;B=0;do if(_&1){Ce=Rb()|0;Te=Q;Ue=Ce}else{k[Sd>>2]=27560;Ce=aa+36|0;k[Ce>>2]=0;k[Ce+4>>2]=0;k[Ce+8>>2]=0;k[Ce+12>>2]=0;k[aa+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Sd|0,c|0);Be=B;B=0;if(Be&1){Be=Rb()|0;ze=Q;Yua(c);Yua(Ce);Ava(Sd);Te=ze;Ue=Be;break}Yua(c);B=0;Be=Ia(40,aa|0,116978,37)|0;ze=B;B=0;e:do if(((!(ze&1)?(B=0,Ke=Xa(242,Be|0,k[u>>2]|0)|0,Je=B,B=0,!(Je&1)):0)?(B=0,Je=Ia(40,Ke|0,116638,10)|0,Ke=B,B=0,!(Ke&1)):0)?(B=0,Xa(239,Je|0,0)|0,Je=B,B=0,!(Je&1)):0){Je=Ab(20)|0;B=0;eb(502,ba|0,116649,101);Ke=B;B=0;do if(!(Ke&1)){B=0;eb(502,ca|0,116751,32);$c=B;B=0;if($c&1){$c=Rb()|0;V=Q;Yua(ba);Ve=V;We=$c;break}B=0;wa(510,da|0,Sd|0);$c=B;B=0;if($c&1){$c=Rb()|0;Xe=1;Ye=Q;Ze=$c}else{B=0;ua(163,Je|0,ba|0,ca|0,214,da|0);$c=B;B=0;if($c&1)_e=1;else{B=0;eb(503,Je|0,1240,229);B=0;_e=0}$c=Rb()|0;V=Q;Yua(da);Xe=_e;Ye=V;Ze=$c}Yua(ca);Yua(ba);if(Xe){Ve=Ye;We=Ze}else{$e=Ye;af=Ze;break e}}else{$c=Rb()|0;Ve=Q;We=$c}while(0);zb(Je|0);$e=Ve;af=We}else Bc=397;while(0);if((Bc|0)==397){Be=Rb()|0;$e=Q;af=Be}k[aa>>2]=27468;k[Ae>>2]=27488;k[Sd>>2]=27560;Yua(Ce);Ava(Sd);vva(Ae);Pd=$e;Qd=af;Qb(Qd|0)}while(0);Re=Te;Se=Ue;vva(Ae);Qb(Se|0);break}case 415:{Se=Rb()|0;Ae=Q;Yua(c);Yua(rc);Ava(nc);bf=Ae;cf=Se;Bc=418;break}case 416:{Se=Rb()|0;df=Q;ef=Se;vva(mc);Qb(ef|0);break}case 417:{Se=Rb()|0;bf=Q;cf=Se;Bc=418;break}case 424:{Se=Rb()|0;ff=Q;gf=Se;Bc=426;break}case 425:{Se=Rb()|0;Ae=Q;Yua(fa);ff=Ae;gf=Se;Bc=426;break}case 431:{Se=Rb()|0;Sqa(hd);Qb(Se|0);break}case 449:{Se=ga+56|0;hd=ga+4|0;k[ga>>2]=27524;k[Se>>2]=27544;B=0;wa(508,ga+56|0,hd|0);Ae=B;B=0;if(Ae&1){Ae=Rb()|0;hf=Q;jf=Ae;vva(Se);Qb(jf|0)}k[ga+128>>2]=0;k[ga+132>>2]=-1;k[ga>>2]=27468;k[Se>>2]=27488;B=0;va(448,hd|0);Ae=B;B=0;do if(Ae&1){fa=Rb()|0;kf=Q;lf=fa}else{k[hd>>2]=27560;fa=ga+36|0;k[fa>>2]=0;k[fa+4>>2]=0;k[fa+8>>2]=0;k[fa+12>>2]=0;k[ga+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,hd|0,c|0);Ue=B;B=0;if(Ue&1){Ue=Rb()|0;Te=Q;Yua(c);Yua(fa);Ava(hd);kf=Te;lf=Ue;break}Yua(c);B=0;Ue=Ia(40,ga|0,117033,33)|0;Te=B;B=0;f:do if(!(Te&1)?(B=0,Xa(239,Ue|0,0)|0,Re=B,B=0,!(Re&1)):0){Re=Ab(20)|0;B=0;eb(502,ha|0,116649,101);af=B;B=0;do if(!(af&1)){B=0;eb(502,ia|0,116751,32);$e=B;B=0;if($e&1){$e=Rb()|0;Sd=Q;Yua(ha);mf=Sd;nf=$e;break}B=0;wa(510,ja|0,hd|0);$e=B;B=0;if($e&1){$e=Rb()|0;of=1;pf=Q;qf=$e}else{B=0;ua(163,Re|0,ha|0,ia|0,242,ja|0);$e=B;B=0;if($e&1)rf=1;else{B=0;eb(503,Re|0,1240,229);B=0;rf=0}$e=Rb()|0;Sd=Q;Yua(ja);of=rf;pf=Sd;qf=$e}Yua(ia);Yua(ha);if(of){mf=pf;nf=qf}else{sf=pf;tf=qf;break f}}else{$e=Rb()|0;mf=Q;nf=$e}while(0);zb(Re|0);sf=mf;tf=nf}else Bc=464;while(0);if((Bc|0)==464){Ue=Rb()|0;sf=Q;tf=Ue}k[ga>>2]=27468;k[Se>>2]=27488;k[hd>>2]=27560;Yua(fa);Ava(hd);vva(Se);Pd=sf;Qd=tf;Qb(Qd|0)}while(0);hf=kf;jf=lf;vva(Se);Qb(jf|0);break}case 474:{jf=Rb()|0;Sqa(ld);Qb(jf|0);break}case 492:{jf=ka+56|0;ld=ka+4|0;k[ka>>2]=27524;k[jf>>2]=27544;B=0;wa(508,ka+56|0,ld|0);Se=B;B=0;if(Se&1){Se=Rb()|0;uf=Q;vf=Se;vva(jf);Qb(vf|0)}k[ka+128>>2]=0;k[ka+132>>2]=-1;k[ka>>2]=27468;k[jf>>2]=27488;B=0;va(448,ld|0);Se=B;B=0;do if(Se&1){lf=Rb()|0;wf=Q;xf=lf}else{k[ld>>2]=27560;lf=ka+36|0;k[lf>>2]=0;k[lf+4>>2]=0;k[lf+8>>2]=0;k[lf+12>>2]=0;k[ka+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ld|0,c|0);kf=B;B=0;if(kf&1){kf=Rb()|0;hf=Q;Yua(c);Yua(lf);Ava(ld);wf=hf;xf=kf;break}Yua(c);B=0;kf=Ia(40,ka|0,117067,33)|0;hf=B;B=0;g:do if(!(hf&1)?(B=0,Xa(239,kf|0,0)|0,tf=B,B=0,!(tf&1)):0){tf=Ab(20)|0;B=0;eb(502,la|0,116649,101);sf=B;B=0;do if(!(sf&1)){B=0;eb(502,ma|0,116751,32);hd=B;B=0;if(hd&1){hd=Rb()|0;ga=Q;Yua(la);yf=ga;zf=hd;break}B=0;wa(510,na|0,ld|0);hd=B;B=0;if(hd&1){hd=Rb()|0;Af=1;Bf=Q;Cf=hd}else{B=0;ua(163,tf|0,la|0,ma|0,251,na|0);hd=B;B=0;if(hd&1)Df=1;else{B=0;eb(503,tf|0,1240,229);B=0;Df=0}hd=Rb()|0;ga=Q;Yua(na);Af=Df;Bf=ga;Cf=hd}Yua(ma);Yua(la);if(Af){yf=Bf;zf=Cf}else{Ef=Bf;Ff=Cf;break g}}else{hd=Rb()|0;yf=Q;zf=hd}while(0);zb(tf|0);Ef=yf;Ff=zf}else Bc=507;while(0);if((Bc|0)==507){kf=Rb()|0;Ef=Q;Ff=kf}k[ka>>2]=27468;k[jf>>2]=27488;k[ld>>2]=27560;Yua(lf);Ava(ld);vva(jf);Pd=Ef;Qd=Ff;Qb(Qd|0)}while(0);uf=wf;vf=xf;vva(jf);Qb(vf|0);break}case 521:{vf=Rb()|0;jf=Q;Yua(c);Yua(Bb);Ava(vb);Gf=jf;Hf=vf;Bc=524;break}case 522:{vf=Rb()|0;If=Q;Jf=vf;vva(ub);Qb(Jf|0);break}case 523:{vf=Rb()|0;Gf=Q;Hf=vf;Bc=524;break}case 532:{vf=Rb()|0;Kf=Q;Lf=vf;Bc=534;break}case 533:{vf=Rb()|0;jf=Q;Yua(pa);Kf=jf;Lf=vf;Bc=534;break}case 539:{vf=Rb()|0;jf=Q;Yua(c);Yua(Ib);Ava(Eb);Mf=jf;Nf=vf;Bc=542;break}case 540:{vf=Rb()|0;Of=Q;Pf=vf;vva(Db);Qb(Pf|0);break}case 541:{vf=Rb()|0;Mf=Q;Nf=vf;Bc=542;break}case 552:{vf=Rb()|0;Qf=Q;Rf=vf;Bc=554;break}case 553:{vf=Rb()|0;jf=Q;Yua(ra);Qf=jf;Rf=vf;Bc=554;break}case 559:{vf=Rb()|0;jf=Q;Yua(c);Yua(Pb);Ava(Lb);Sf=jf;Tf=vf;Bc=562;break}case 560:{vf=Rb()|0;Uf=Q;Vf=vf;vva(Kb);Qb(Vf|0);break}case 561:{vf=Rb()|0;Sf=Q;Tf=vf;Bc=562;break}case 572:{vf=Rb()|0;Wf=Q;Xf=vf;Bc=574;break}case 573:{vf=Rb()|0;jf=Q;Yua(ta);Wf=jf;Xf=vf;Bc=574;break}case 578:{vf=Rb()|0;jf=Q;Yua(c);Yua(sb);Ava(ob);Yf=jf;Zf=vf;Bc=581;break}case 579:{vf=Rb()|0;_f=Q;$f=vf;vva(nb);Qb($f|0);break}case 580:{vf=Rb()|0;Yf=Q;Zf=vf;Bc=581;break}case 589:{vf=Rb()|0;ag=Q;bg=vf;Bc=591;break}case 590:{vf=Rb()|0;jf=Q;Yua(za);ag=jf;bg=vf;Bc=591;break}case 593:{vf=Aa+56|0;jf=Aa+4|0;k[Aa>>2]=27524;k[vf>>2]=27544;B=0;wa(508,Aa+56|0,jf|0);za=B;B=0;if(za&1){za=Rb()|0;cg=Q;dg=za;vva(vf);Qb(dg|0)}k[Aa+128>>2]=0;k[Aa+132>>2]=-1;k[Aa>>2]=27468;k[vf>>2]=27488;B=0;va(448,jf|0);za=B;B=0;do if(za&1){ta=Rb()|0;eg=Q;fg=ta}else{k[jf>>2]=27560;ta=Aa+36|0;k[ta>>2]=0;k[ta+4>>2]=0;k[ta+8>>2]=0;k[ta+12>>2]=0;k[Aa+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,jf|0,c|0);ra=B;B=0;if(ra&1){ra=Rb()|0;pa=Q;Yua(c);Yua(ta);Ava(jf);eg=pa;fg=ra;break}Yua(c);B=0;ra=Ia(40,Aa|0,117227,54)|0;pa=B;B=0;h:do if(((!(pa&1)?(B=0,xf=Xa(242,ra|0,k[u>>2]|0)|0,wf=B,B=0,!(wf&1)):0)?(B=0,wf=Ia(40,xf|0,116638,10)|0,xf=B,B=0,!(xf&1)):0)?(B=0,Xa(239,wf|0,0)|0,wf=B,B=0,!(wf&1)):0){wf=Ab(20)|0;B=0;eb(502,Ba|0,116649,101);xf=B;B=0;do if(!(xf&1)){B=0;eb(502,Ca|0,116751,32);uf=B;B=0;if(uf&1){uf=Rb()|0;Ff=Q;Yua(Ba);gg=Ff;hg=uf;break}B=0;wa(510,Da|0,jf|0);uf=B;B=0;if(uf&1){uf=Rb()|0;ig=1;jg=Q;kg=uf}else{B=0;ua(163,wf|0,Ba|0,Ca|0,266,Da|0);uf=B;B=0;if(uf&1)lg=1;else{B=0;eb(503,wf|0,1240,229);B=0;lg=0}uf=Rb()|0;Ff=Q;Yua(Da);ig=lg;jg=Ff;kg=uf}Yua(Ca);Yua(Ba);if(ig){gg=jg;hg=kg}else{mg=jg;ng=kg;break h}}else{uf=Rb()|0;gg=Q;hg=uf}while(0);zb(wf|0);mg=gg;ng=hg}else Bc=610;while(0);if((Bc|0)==610){ra=Rb()|0;mg=Q;ng=ra}k[Aa>>2]=27468;k[vf>>2]=27488;k[jf>>2]=27560;Yua(ta);Ava(jf);vva(vf);Pd=mg;Qd=ng;Qb(Qd|0)}while(0);cg=eg;dg=fg;vva(vf);Qb(dg|0);break}case 619:{if(i[o>>0]|0)xoa(a,k[f>>2]|0);xh(a,505);xoa(a,k[d>>2]|0);a=k[f>>2]|0;if(a){if((k[a>>2]|0)!=0?(f=k[a+4>>2]|0,(f|0)!=0):0){o=k[f>>2]|0;if(o)Ec[k[(k[o>>2]|0)+4>>2]&1023](o);Sqa(f)}Sqa(a)}a=k[d>>2]|0;if(a){if((k[a>>2]|0)!=0?(d=k[a+4>>2]|0,(d|0)!=0):0){f=k[d>>2]|0;if(f)Ec[k[(k[f>>2]|0)+4>>2]&1023](f);Sqa(d)}Sqa(a)}a=k[e>>2]|0;if(a){if((k[a>>2]|0)!=0?(e=k[a+4>>2]|0,(e|0)!=0):0){d=k[e>>2]|0;if(d)Ec[k[(k[d>>2]|0)+4>>2]&1023](d);Sqa(e)}Sqa(a)}a=k[g>>2]|0;if(a){if((k[a>>2]|0)!=0?(g=k[a+4>>2]|0,(g|0)!=0):0){e=k[g>>2]|0;if(e)Ec[k[(k[e>>2]|0)+4>>2]&1023](e);Sqa(g)}Sqa(a)}if(gd){if((k[gd>>2]|0)!=0?(a=k[gd+4>>2]|0,(a|0)!=0):0){g=k[a>>2]|0;if(g)Ec[k[(k[g>>2]|0)+4>>2]&1023](g);Sqa(a)}Sqa(gd)}if(Ja)Ec[k[(k[Ja>>2]|0)+4>>2]&1023](Ja);if(!Ha){r=b;return}Ec[k[(k[Ha>>2]|0)+4>>2]&1023](Ha);r=b;return}}switch(Bc|0){case 31:{td=rd;ud=sd;vva(Ka);Qb(ud|0);break}case 39:{k[z>>2]=27468;k[Ka>>2]=27488;k[La>>2]=27560;Yua(Pa);Ava(La);vva(Ka);Pd=vd;Qd=wd;Qb(Qd|0);break}case 96:{zd=xd;Ad=yd;vva(Ra);Qb(Ad|0);break}case 106:{k[C>>2]=27468;k[Ra>>2]=27488;k[Ta>>2]=27560;Yua(Ya);Ava(Ta);vva(Ra);Pd=Bd;Qd=Cd;Qb(Qd|0);break}case 181:{de=be;ee=ce;vva(_a);Qb(ee|0);break}case 193:{k[M>>2]=27468;k[_a>>2]=27488;k[$a>>2]=27560;Yua(db);Ava($a);vva(_a);Pd=fe;Qd=ge;Qb(Qd|0);break}case 202:{je=he;ke=ie;vva(gb);Qb(ke|0);break}case 210:{k[O>>2]=27468;k[gb>>2]=27488;k[hb>>2]=27560;Yua(lb);Ava(hb);vva(gb);Pd=le;Qd=me;Qb(Qd|0);break}case 232:{pe=ne;qe=oe;vva(Tb);Qb(qe|0);break}case 240:{k[R>>2]=27468;k[Tb>>2]=27488;k[Ub>>2]=27560;Yua(Yb);Ava(Ub);vva(Tb);Pd=re;Qd=se;Qb(Qd|0);break}case 248:{ve=te;we=ue;vva(_b);Qb(we|0);break}case 256:{k[T>>2]=27468;k[_b>>2]=27488;k[$b>>2]=27560;Yua(dc);Ava($b);vva(_b);Pd=xe;Qd=ye;Qb(Qd|0);break}case 366:{Ne=Le;Oe=Me;vva(fc);Qb(Oe|0);break}case 378:{k[Z>>2]=27468;k[fc>>2]=27488;k[gc>>2]=27560;Yua(kc);Ava(gc);vva(fc);Pd=Pe;Qd=Qe;Qb(Qd|0);break}case 418:{df=bf;ef=cf;vva(mc);Qb(ef|0);break}case 426:{k[ea>>2]=27468;k[mc>>2]=27488;k[nc>>2]=27560;Yua(rc);Ava(nc);vva(mc);Pd=ff;Qd=gf;Qb(Qd|0);break}case 524:{If=Gf;Jf=Hf;vva(ub);Qb(Jf|0);break}case 534:{k[oa>>2]=27468;k[ub>>2]=27488;k[vb>>2]=27560;Yua(Bb);Ava(vb);vva(ub);Pd=Kf;Qd=Lf;Qb(Qd|0);break}case 542:{Of=Mf;Pf=Nf;vva(Db);Qb(Pf|0);break}case 554:{k[qa>>2]=27468;k[Db>>2]=27488;k[Eb>>2]=27560;Yua(Ib);Ava(Eb);vva(Db);Pd=Qf;Qd=Rf;Qb(Qd|0);break}case 562:{Uf=Sf;Vf=Tf;vva(Kb);Qb(Vf|0);break}case 574:{k[sa>>2]=27468;k[Kb>>2]=27488;k[Lb>>2]=27560;Yua(Pb);Ava(Lb);vva(Kb);Pd=Wf;Qd=Xf;Qb(Qd|0);break}case 581:{_f=Yf;$f=Zf;vva(nb);Qb($f|0);break}case 591:{k[xa>>2]=27468;k[nb>>2]=27488;k[ob>>2]=27560;Yua(sb);Ava(ob);vva(nb);Pd=ag;Qd=bg;Qb(Qd|0);break}}}function j0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0;b=r;r=r+336|0;c=b+316|0;d=b+312|0;e=b+333|0;f=b+332|0;g=b+331|0;h=b+330|0;j=b+329|0;l=b+328|0;m=b+308|0;n=b+304|0;o=b+300|0;p=b+152|0;q=b+288|0;s=b+16|0;t=b;k[n>>2]=0;k[o>>2]=0;u=a+44|0;cO(k[u>>2]|0,d,298);bO(k[u>>2]|0,e,95);bO(k[u>>2]|0,f,96);bO(k[u>>2]|0,g,97);bO(k[u>>2]|0,h,98);bO(k[u>>2]|0,j,99);bO(k[u>>2]|0,l,759);cO(k[u>>2]|0,m,476);cO(k[u>>2]|0,n,76);if(k[n>>2]|0)gO(k[u>>2]|0,o,n,77);a:do if(CY()|0){v=p+56|0;w=p+4|0;k[p>>2]=27524;k[v>>2]=27544;B=0;wa(508,p+56|0,w|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;z=x;vva(v);Qb(z|0)}k[p+128>>2]=0;k[p+132>>2]=-1;k[p>>2]=27468;k[v>>2]=27488;B=0;va(448,w|0);x=B;B=0;do if(x&1){A=Rb()|0;C=Q;D=A}else{k[w>>2]=27560;A=p+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[p+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,w|0,c|0);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(c);Yua(A);Ava(w);C=F;D=E;break}Yua(c);B=0;Ia(40,p|0,117282,26)|0;E=B;B=0;do if(!(E&1)?(B=0,wa(510,q|0,w|0),F=B,B=0,!(F&1)):0){B=0;ya(425,q|0)|0;F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(q);H=G;I=F;break}else{Yua(q);k[p>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);break a}}else J=16;while(0);if((J|0)==16){E=Rb()|0;H=Q;I=E}k[p>>2]=27468;k[v>>2]=27488;k[w>>2]=27560;Yua(A);Ava(w);vva(v);K=H;L=I;Qb(L|0)}while(0);y=C;z=D;vva(v);Qb(z|0)}while(0);if((i[e>>0]|0)==0?(z=i[j>>0]|0,!(z<<24>>24!=0&(k[d>>2]|0)==301)):0)M=z;else{o0(a);M=i[j>>0]|0}if(M<<24>>24){p0(a);xh(a,497);Ooa(k[a+20>>2]|0,k[a+24>>2]|0,k[a+28>>2]|0,k[a+36>>2]|0,k[a+40>>2]|0,k[u>>2]|0)}if(i[e>>0]|0){if((i[g>>0]|i[f>>0]|i[h>>0])<<24>>24)Soa(a,498);u=Qqa(4)|0;k[u>>2]=38860;Fc[k[38892>>2]&1023](u,a);Ec[k[(k[u>>2]|0)+4>>2]&1023](u);if((i[g>>0]|i[f>>0]|i[h>>0])<<24>>24)Soa(a,497)}if((i[g>>0]|i[f>>0]|i[h>>0]|i[j>>0])<<24>>24){j=Qqa(4)|0;k[j>>2]=38696;Fc[k[38728>>2]&1023](j,a);Ec[k[(k[j>>2]|0)+4>>2]&1023](j)}if((k[d>>2]|0)==302?(i[f>>0]|i[e>>0]|i[g>>0]|i[h>>0])<<24>>24!=0:0){h=Qqa(4)|0;k[h>>2]=38936;Fc[k[38968>>2]&1023](h,a);Ec[k[(k[h>>2]|0)+4>>2]&1023](h)}if(i[l>>0]|0){b:do if(CY()|0){l=s+56|0;h=s+4|0;k[s>>2]=27524;k[l>>2]=27544;B=0;wa(508,s+56|0,h|0);g=B;B=0;if(g&1){g=Rb()|0;N=Q;O=g;vva(l);Qb(O|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[l>>2]=27488;B=0;va(448,h|0);g=B;B=0;do if(g&1){e=Rb()|0;P=Q;R=e}else{k[h>>2]=27560;e=s+36|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[s+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,h|0,c|0);f=B;B=0;if(f&1){f=Rb()|0;d=Q;Yua(c);Yua(e);Ava(h);P=d;R=f;break}Yua(c);B=0;Ia(40,s|0,148942,18)|0;f=B;B=0;do if(!(f&1)?(B=0,wa(510,t|0,h|0),d=B,B=0,!(d&1)):0){B=0;ya(425,t|0)|0;d=B;B=0;if(d&1){d=Rb()|0;j=Q;Yua(t);S=j;T=d;break}else{Yua(t);k[s>>2]=27468;k[l>>2]=27488;k[h>>2]=27560;Yua(e);Ava(h);vva(l);break b}}else J=48;while(0);if((J|0)==48){f=Rb()|0;S=Q;T=f}k[s>>2]=27468;k[l>>2]=27488;k[h>>2]=27560;Yua(e);Ava(h);vva(l);K=S;L=T;Qb(L|0)}while(0);N=P;O=R;vva(l);Qb(O|0)}while(0);ci(a,a+48|0,k[o>>2]|0,k[n>>2]|0,1)}if((k[m>>2]|0)==499)gi(a);a=k[n>>2]|0;if(!a){r=b;return}m=k[o>>2]|0;if((a|0)>0){O=m;R=a;a=0;while(1){P=O+(a<<2)|0;N=k[P>>2]|0;if(!N)U=R;else{Tqa(N);U=k[n>>2]|0}k[P>>2]=0;a=a+1|0;P=k[o>>2]|0;if((a|0)>=(U|0)){V=P;break}else{O=P;R=U}}}else V=m;if(V)Tqa(V);k[o>>2]=0;r=b;return}function k0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;b=r;r=r+320|0;c=b+300|0;d=b+312|0;e=b+152|0;f=b+288|0;g=b+16|0;h=b;xh(a,484);bO(k[a+44>>2]|0,d,759);a:do if(CY()|0){j=e+56|0;l=e+4|0;k[e>>2]=27524;k[j>>2]=27544;B=0;wa(508,e+56|0,l|0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;o=m;vva(j);Qb(o|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[j>>2]=27488;B=0;va(448,l|0);m=B;B=0;do if(m&1){p=Rb()|0;q=Q;s=p}else{k[l>>2]=27560;p=e+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(c);Yua(p);Ava(l);q=u;s=t;break}Yua(c);B=0;Ia(40,e|0,136216,25)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,f|0,l|0),u=B,B=0,!(u&1)):0){B=0;ya(425,f|0)|0;u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(f);w=v;x=u;break}else{Yua(f);k[e>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);break a}}else y=14;while(0);if((y|0)==14){t=Rb()|0;w=Q;x=t}k[e>>2]=27468;k[j>>2]=27488;k[l>>2]=27560;Yua(p);Ava(l);vva(j);z=w;A=x;Qb(A|0)}while(0);n=q;o=s;vva(j);Qb(o|0)}while(0);Voa(a);if(!(i[d>>0]|0)){r=b;return}b:do if(CY()|0){d=g+56|0;o=g+4|0;k[g>>2]=27524;k[d>>2]=27544;B=0;wa(508,g+56|0,o|0);s=B;B=0;if(s&1){s=Rb()|0;C=Q;D=s;vva(d);Qb(D|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[d>>2]=27488;B=0;va(448,o|0);s=B;B=0;do if(s&1){q=Rb()|0;E=Q;F=q}else{k[o>>2]=27560;q=g+36|0;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;k[q+12>>2]=0;k[g+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,o|0,c|0);n=B;B=0;if(n&1){n=Rb()|0;x=Q;Yua(c);Yua(q);Ava(o);E=x;F=n;break}Yua(c);B=0;Ia(40,g|0,148942,18)|0;n=B;B=0;do if(!(n&1)?(B=0,wa(510,h|0,o|0),x=B,B=0,!(x&1)):0){B=0;ya(425,h|0)|0;x=B;B=0;if(x&1){x=Rb()|0;w=Q;Yua(h);G=w;H=x;break}else{Yua(h);k[g>>2]=27468;k[d>>2]=27488;k[o>>2]=27560;Yua(q);Ava(o);vva(d);break b}}else y=31;while(0);if((y|0)==31){n=Rb()|0;G=Q;H=n}k[g>>2]=27468;k[d>>2]=27488;k[o>>2]=27560;Yua(q);Ava(o);vva(d);z=G;A=H;Qb(A|0)}while(0);C=E;D=F;vva(d);Qb(D|0)}while(0);k[c>>2]=353;fi(a,a+48|0,c,1,1);r=b;return}function l0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;b=r;r=r+496|0;c=b+456|0;d=b+480|0;e=b+304|0;f=b+440|0;g=b+152|0;h=b+288|0;j=b+16|0;l=b;bO(k[a+44>>2]|0,d,759);a:do if(CY()|0){m=e+56|0;n=e+4|0;k[e>>2]=27524;k[m>>2]=27544;B=0;wa(508,e+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;q=o;vva(m);Qb(q|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){s=Rb()|0;t=Q;u=s}else{k[n>>2]=27560;s=e+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,n|0,c|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);Yua(s);Ava(n);t=w;u=v;break}Yua(c);B=0;Ia(40,e|0,117309,33)|0;v=B;B=0;do if(!(v&1)?(B=0,wa(510,f|0,n|0),w=B,B=0,!(w&1)):0){B=0;ya(425,f|0)|0;w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(f);y=w;z=x;break}else{Yua(f);k[e>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);break a}}else A=14;while(0);if((A|0)==14){v=Rb()|0;y=v;z=Q}k[e>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);C=y;D=z;Qb(C|0)}while(0);p=t;q=u;vva(m);Qb(q|0)}while(0);o0(a);b:do if(CY()|0){q=g+56|0;u=g+4|0;k[g>>2]=27524;k[q>>2]=27544;B=0;wa(508,g+56|0,u|0);t=B;B=0;if(t&1){t=Rb()|0;E=Q;F=t;vva(q);Qb(F|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[q>>2]=27488;B=0;va(448,u|0);t=B;B=0;do if(t&1){p=Rb()|0;G=Q;H=p}else{k[u>>2]=27560;p=g+36|0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[p+12>>2]=0;k[g+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,u|0,c|0);z=B;B=0;if(z&1){z=Rb()|0;y=Q;Yua(c);Yua(p);Ava(u);G=y;H=z;break}Yua(c);B=0;Ia(40,g|0,136216,25)|0;z=B;B=0;do if(!(z&1)?(B=0,wa(510,h|0,u|0),y=B,B=0,!(y&1)):0){B=0;ya(425,h|0)|0;y=B;B=0;if(y&1){y=Rb()|0;e=Q;Yua(h);I=y;J=e;break}else{Yua(h);k[g>>2]=27468;k[q>>2]=27488;k[u>>2]=27560;Yua(p);Ava(u);vva(q);break b}}else A=30;while(0);if((A|0)==30){z=Rb()|0;I=z;J=Q}k[g>>2]=27468;k[q>>2]=27488;k[u>>2]=27560;Yua(p);Ava(u);vva(q);C=I;D=J;Qb(C|0)}while(0);E=G;F=H;vva(q);Qb(F|0)}while(0);xh(a,486);Voa(a);if(!(i[d>>0]|0)){r=b;return}c:do if(CY()|0){d=j+56|0;F=j+4|0;k[j>>2]=27524;k[d>>2]=27544;B=0;wa(508,j+56|0,F|0);H=B;B=0;if(H&1){H=Rb()|0;K=Q;L=H;vva(d);Qb(L|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[d>>2]=27488;B=0;va(448,F|0);H=B;B=0;do if(H&1){G=Rb()|0;M=Q;N=G}else{k[F>>2]=27560;G=j+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,F|0,c|0);E=B;B=0;if(E&1){E=Rb()|0;J=Q;Yua(c);Yua(G);Ava(F);M=J;N=E;break}Yua(c);B=0;Ia(40,j|0,148942,18)|0;E=B;B=0;do if(!(E&1)?(B=0,wa(510,l|0,F|0),J=B,B=0,!(J&1)):0){B=0;ya(425,l|0)|0;J=B;B=0;if(J&1){J=Rb()|0;I=Q;Yua(l);O=J;P=I;break}else{Yua(l);k[j>>2]=27468;k[d>>2]=27488;k[F>>2]=27560;Yua(G);Ava(F);vva(d);break c}}else A=47;while(0);if((A|0)==47){E=Rb()|0;O=E;P=Q}k[j>>2]=27468;k[d>>2]=27488;k[F>>2]=27560;Yua(G);Ava(F);vva(d);C=O;D=P;Qb(C|0)}while(0);K=M;L=N;vva(d);Qb(L|0)}while(0);k[c>>2]=k[9258];k[c+4>>2]=k[9259];k[c+8>>2]=k[9260];k[c+12>>2]=k[9261];k[c+16>>2]=k[9262];k[c+20>>2]=k[9263];fi(a,a+48|0,c,6,1);r=b;return}function m0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0;b=r;r=r+480|0;c=b+452|0;d=b+464|0;e=b+304|0;f=b+440|0;g=b+152|0;h=b+288|0;j=b+16|0;l=b;m=a+44|0;bO(k[m>>2]|0,d,759);a:do if(CY()|0){n=e+56|0;o=e+4|0;k[e>>2]=27524;k[n>>2]=27544;B=0;wa(508,e+56|0,o|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;s=p;vva(n);Qb(s|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[n>>2]=27488;B=0;va(448,o|0);p=B;B=0;do if(p&1){t=Rb()|0;u=Q;v=t}else{k[o>>2]=27560;t=e+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[e+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,o|0,c|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(c);Yua(t);Ava(o);u=x;v=w;break}Yua(c);B=0;Ia(40,e|0,117343,33)|0;w=B;B=0;do if(!(w&1)?(B=0,wa(510,f|0,o|0),x=B,B=0,!(x&1)):0){B=0;ya(425,f|0)|0;x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(f);z=y;A=x;break}else{Yua(f);k[e>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);break a}}else C=14;while(0);if((C|0)==14){w=Rb()|0;z=Q;A=w}k[e>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);D=z;E=A;Qb(E|0)}while(0);q=u;s=v;vva(n);Qb(s|0)}while(0);pO(k[m>>2]|0,8.0,579);xh(a,520);oO(k[m>>2]|0,704,578);Voa(a);oO(k[m>>2]|0,705,578);Voa(a);b:do if(CY()|0){m=g+56|0;s=g+4|0;k[g>>2]=27524;k[m>>2]=27544;B=0;wa(508,g+56|0,s|0);v=B;B=0;if(v&1){v=Rb()|0;F=Q;G=v;vva(m);Qb(G|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[m>>2]=27488;B=0;va(448,s|0);v=B;B=0;do if(v&1){u=Rb()|0;H=Q;I=u}else{k[s>>2]=27560;u=g+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[g+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,s|0,c|0);q=B;B=0;if(q&1){q=Rb()|0;A=Q;Yua(c);Yua(u);Ava(s);H=A;I=q;break}Yua(c);B=0;Ia(40,g|0,136216,25)|0;q=B;B=0;do if(!(q&1)?(B=0,wa(510,h|0,s|0),A=B,B=0,!(A&1)):0){B=0;ya(425,h|0)|0;A=B;B=0;if(A&1){A=Rb()|0;z=Q;Yua(h);J=z;K=A;break}else{Yua(h);k[g>>2]=27468;k[m>>2]=27488;k[s>>2]=27560;Yua(u);Ava(s);vva(m);break b}}else C=30;while(0);if((C|0)==30){q=Rb()|0;J=Q;K=q}k[g>>2]=27468;k[m>>2]=27488;k[s>>2]=27560;Yua(u);Ava(s);vva(m);D=J;E=K;Qb(E|0)}while(0);F=H;G=I;vva(m);Qb(G|0)}while(0);xh(a,490);Voa(a);if(!(i[d>>0]|0)){r=b;return}c:do if(CY()|0){d=j+56|0;G=j+4|0;k[j>>2]=27524;k[d>>2]=27544;B=0;wa(508,j+56|0,G|0);I=B;B=0;if(I&1){I=Rb()|0;L=Q;M=I;vva(d);Qb(M|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[d>>2]=27488;B=0;va(448,G|0);I=B;B=0;do if(I&1){H=Rb()|0;N=Q;O=H}else{k[G>>2]=27560;H=j+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,G|0,c|0);F=B;B=0;if(F&1){F=Rb()|0;K=Q;Yua(c);Yua(H);Ava(G);N=K;O=F;break}Yua(c);B=0;Ia(40,j|0,148942,18)|0;F=B;B=0;do if(!(F&1)?(B=0,wa(510,l|0,G|0),K=B,B=0,!(K&1)):0){B=0;ya(425,l|0)|0;K=B;B=0;if(K&1){K=Rb()|0;J=Q;Yua(l);P=J;R=K;break}else{Yua(l);k[j>>2]=27468;k[d>>2]=27488;k[G>>2]=27560;Yua(H);Ava(G);vva(d);break c}}else C=47;while(0);if((C|0)==47){F=Rb()|0;P=Q;R=F}k[j>>2]=27468;k[d>>2]=27488;k[G>>2]=27560;Yua(H);Ava(G);vva(d);D=P;E=R;Qb(E|0)}while(0);L=N;M=O;vva(d);Qb(M|0)}while(0);k[c>>2]=k[9264];k[c+4>>2]=k[9265];k[c+8>>2]=k[9266];fi(a,a+48|0,c,3,1);r=b;return}function n0(a){a=a|0;return}function o0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;b=r;r=r+320|0;c=b;d=b+312|0;e=b+308|0;f=b+160|0;g=b+296|0;h=b+24|0;j=b+12|0;l=a+44|0;bO(k[l>>2]|0,d,759);cO(k[l>>2]|0,e,298);a:do if(CY()|0){m=f+56|0;n=f+4|0;k[f>>2]=27524;k[m>>2]=27544;B=0;wa(508,f+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;q=o;vva(m);Qb(q|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){s=Rb()|0;t=Q;u=s}else{k[n>>2]=27560;s=f+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,n|0,c|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);Yua(s);Ava(n);t=w;u=v;break}Yua(c);B=0;Ia(40,f|0,117377,19)|0;v=B;B=0;do if(!(v&1)?(B=0,wa(510,g|0,n|0),w=B,B=0,!(w&1)):0){B=0;ya(425,g|0)|0;w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(g);y=x;z=w;break}else{Yua(g);k[f>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);break a}}else A=14;while(0);if((A|0)==14){v=Rb()|0;y=Q;z=v}k[f>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);C=y;D=z;Qb(D|0)}while(0);p=t;q=u;vva(m);Qb(q|0)}while(0);xh(a,493);oO(k[l>>2]|0,664,576);Voa(a);if(!((k[e>>2]|0)!=301?(oO(k[l>>2]|0,665,576),Voa(a),(k[e>>2]|0)!=301):0)){oO(k[l>>2]|0,664,575);y_(a)}if(!(i[d>>0]|0)){r=b;return}b:do if(CY()|0){d=h+56|0;l=h+4|0;k[h>>2]=27524;k[d>>2]=27544;B=0;wa(508,h+56|0,l|0);q=B;B=0;if(q&1){q=Rb()|0;E=Q;F=q;vva(d);Qb(F|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[d>>2]=27488;B=0;va(448,l|0);q=B;B=0;do if(q&1){u=Rb()|0;G=Q;H=u}else{k[l>>2]=27560;u=h+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;p=Q;Yua(c);Yua(u);Ava(l);G=p;H=t;break}Yua(c);B=0;Ia(40,h|0,149048,16)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,j|0,l|0),p=B,B=0,!(p&1)):0){B=0;ya(425,j|0)|0;p=B;B=0;if(p&1){p=Rb()|0;z=Q;Yua(j);I=z;J=p;break}else{Yua(j);k[h>>2]=27468;k[d>>2]=27488;k[l>>2]=27560;Yua(u);Ava(l);vva(d);break b}}else A=34;while(0);if((A|0)==34){t=Rb()|0;I=Q;J=t}k[h>>2]=27468;k[d>>2]=27488;k[l>>2]=27560;Yua(u);Ava(l);vva(d);C=I;D=J;Qb(D|0)}while(0);E=G;F=H;vva(d);Qb(F|0)}while(0);if((k[e>>2]|0)==301){k[c>>2]=664;fi(a,a+48|0,c,1,1);r=b;return}else{e=c;k[e>>2]=664;k[e+4>>2]=665;fi(a,a+48|0,c,2,1);r=b;return}}function p0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;b=r;r=r+320|0;c=b;d=b+312|0;e=b+308|0;f=b+160|0;g=b+296|0;h=b+24|0;j=b+12|0;l=a+44|0;bO(k[l>>2]|0,d,759);cO(k[l>>2]|0,e,298);a:do if(CY()|0){m=f+56|0;n=f+4|0;k[f>>2]=27524;k[m>>2]=27544;B=0;wa(508,f+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;q=o;vva(m);Qb(q|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){s=Rb()|0;t=Q;u=s}else{k[n>>2]=27560;s=f+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,n|0,c|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);Yua(s);Ava(n);t=w;u=v;break}Yua(c);B=0;Ia(40,f|0,117397,19)|0;v=B;B=0;do if(!(v&1)?(B=0,wa(510,g|0,n|0),w=B,B=0,!(w&1)):0){B=0;ya(425,g|0)|0;w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(g);y=x;z=w;break}else{Yua(g);k[f>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);break a}}else A=14;while(0);if((A|0)==14){v=Rb()|0;y=Q;z=v}k[f>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);C=y;D=z;Qb(D|0)}while(0);p=t;q=u;vva(m);Qb(q|0)}while(0);xh(a,493);oO(k[l>>2]|0,642,576);Voa(a);if((k[e>>2]|0)!=301){oO(k[l>>2]|0,643,576);Voa(a)}if(!(i[d>>0]|0)){r=b;return}b:do if(CY()|0){d=h+56|0;l=h+4|0;k[h>>2]=27524;k[d>>2]=27544;B=0;wa(508,h+56|0,l|0);q=B;B=0;if(q&1){q=Rb()|0;E=Q;F=q;vva(d);Qb(F|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[d>>2]=27488;B=0;va(448,l|0);q=B;B=0;do if(q&1){u=Rb()|0;G=Q;H=u}else{k[l>>2]=27560;u=h+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,l|0,c|0);t=B;B=0;if(t&1){t=Rb()|0;p=Q;Yua(c);Yua(u);Ava(l);G=p;H=t;break}Yua(c);B=0;Ia(40,h|0,148942,18)|0;t=B;B=0;do if(!(t&1)?(B=0,wa(510,j|0,l|0),p=B,B=0,!(p&1)):0){B=0;ya(425,j|0)|0;p=B;B=0;if(p&1){p=Rb()|0;z=Q;Yua(j);I=z;J=p;break}else{Yua(j);k[h>>2]=27468;k[d>>2]=27488;k[l>>2]=27560;Yua(u);Ava(l);vva(d);break b}}else A=33;while(0);if((A|0)==33){t=Rb()|0;I=Q;J=t}k[h>>2]=27468;k[d>>2]=27488;k[l>>2]=27560;Yua(u);Ava(l);vva(d);C=I;D=J;Qb(D|0)}while(0);E=G;F=H;vva(d);Qb(F|0)}while(0);if((k[e>>2]|0)==301){k[c>>2]=642;fi(a,a+48|0,c,1,1);r=b;return}else{e=c;k[e>>2]=642;k[e+4>>2]=643;fi(a,a+48|0,c,2,1);r=b;return}}function q0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;b=r;r=r+336|0;c=b+316|0;d=b+328|0;e=b+308|0;f=b+304|0;g=b+300|0;h=b+152|0;j=b+288|0;l=b+16|0;m=b;k[f>>2]=0;k[g>>2]=0;n=a+44|0;bO(k[n>>2]|0,d,759);cO(k[n>>2]|0,b+312|0,476);cO(k[n>>2]|0,f,242);if(k[f>>2]|0)gO(k[n>>2]|0,g,f,243);cO(k[n>>2]|0,e,237);a:do if(CY()|0){n=h+56|0;o=h+4|0;k[h>>2]=27524;k[n>>2]=27544;B=0;wa(508,h+56|0,o|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;s=p;vva(n);Qb(s|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[n>>2]=27488;B=0;va(448,o|0);p=B;B=0;do if(p&1){t=Rb()|0;u=Q;v=t}else{k[o>>2]=27560;t=h+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,o|0,c|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(c);Yua(t);Ava(o);u=x;v=w;break}Yua(c);B=0;Ia(40,h|0,117417,20)|0;w=B;B=0;do if(!(w&1)?(B=0,wa(510,j|0,o|0),x=B,B=0,!(x&1)):0){B=0;ya(425,j|0)|0;x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(j);z=y;A=x;break}else{Yua(j);k[h>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);break a}}else C=16;while(0);if((C|0)==16){w=Rb()|0;z=Q;A=w}k[h>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);D=z;E=A;Qb(E|0)}while(0);q=u;s=v;vva(n);Qb(s|0)}while(0);T8(a);xh(a,496);if((k[e>>2]|0)==4)Yoa(a);Voa(a);if(i[d>>0]|0){b:do if(CY()|0){d=l+56|0;e=l+4|0;k[l>>2]=27524;k[d>>2]=27544;B=0;wa(508,l+56|0,e|0);s=B;B=0;if(s&1){s=Rb()|0;F=Q;G=s;vva(d);Qb(G|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[d>>2]=27488;B=0;va(448,e|0);s=B;B=0;do if(s&1){v=Rb()|0;H=Q;I=v}else{k[e>>2]=27560;v=l+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,e|0,c|0);u=B;B=0;if(u&1){u=Rb()|0;q=Q;Yua(c);Yua(v);Ava(e);H=q;I=u;break}Yua(c);B=0;Ia(40,l|0,148942,18)|0;u=B;B=0;do if(!(u&1)?(B=0,wa(510,m|0,e|0),q=B,B=0,!(q&1)):0){B=0;ya(425,m|0)|0;q=B;B=0;if(q&1){q=Rb()|0;A=Q;Yua(m);J=A;K=q;break}else{Yua(m);k[l>>2]=27468;k[d>>2]=27488;k[e>>2]=27560;Yua(v);Ava(e);vva(d);break b}}else C=35;while(0);if((C|0)==35){u=Rb()|0;J=Q;K=u}k[l>>2]=27468;k[d>>2]=27488;k[e>>2]=27560;Yua(v);Ava(e);vva(d);D=J;E=K;Qb(E|0)}while(0);F=H;G=I;vva(d);Qb(G|0)}while(0);ci(a,a+48|0,k[g>>2]|0,k[f>>2]|0,1)}a=k[f>>2]|0;if(!a){r=b;return}G=k[g>>2]|0;if((a|0)>0){I=G;H=a;a=0;while(1){F=I+(a<<2)|0;E=k[F>>2]|0;if(!E)L=H;else{Tqa(E);L=k[f>>2]|0}k[F>>2]=0;a=a+1|0;F=k[g>>2]|0;if((a|0)>=(L|0)){M=F;break}else{I=F;H=L}}}else M=G;if(M)Tqa(M);k[g>>2]=0;r=b;return}function r0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;b=r;r=r+176|0;c=b+156|0;d=b+173|0;e=b+172|0;f=b+171|0;g=b+170|0;h=b+169|0;j=b+168|0;l=b+152|0;m=b+16|0;n=b;o=a+44|0;cO(k[o>>2]|0,l,298);bO(k[o>>2]|0,d,759);bO(k[o>>2]|0,e,362);bO(k[o>>2]|0,f,364);bO(k[o>>2]|0,g,365);bO(k[o>>2]|0,j,369);if((i[g>>0]|0)!=0&(k[l>>2]|0)==302)bO(k[o>>2]|0,h,340);if(!(i[j>>0]|0)){r=b;return}Uha(a);a:do if(CY()|0){j=m+56|0;p=m+4|0;k[m>>2]=27524;k[j>>2]=27544;B=0;wa(508,m+56|0,p|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;t=q;vva(j);Qb(t|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[j>>2]=27488;B=0;va(448,p|0);q=B;B=0;do if(q&1){u=Rb()|0;v=Q;w=u}else{k[p>>2]=27560;u=m+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,p|0,c|0);x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(c);Yua(u);Ava(p);v=y;w=x;break}Yua(c);B=0;Ia(40,m|0,117438,32)|0;x=B;B=0;if(!(x&1)?(B=0,wa(510,n|0,p|0),x=B,B=0,!(x&1)):0){B=0;ya(425,n|0)|0;x=B;B=0;if(!(x&1)){Yua(n);k[m>>2]=27468;k[j>>2]=27488;k[p>>2]=27560;Yua(u);Ava(p);vva(j);break a}x=Rb()|0;y=Q;Yua(n);z=y;A=x;k[m>>2]=27468;k[j>>2]=27488;k[p>>2]=27560;Yua(u);Ava(p);vva(j);Qb(A|0)}x=Rb()|0;z=Q;A=x;k[m>>2]=27468;k[j>>2]=27488;k[p>>2]=27560;Yua(u);Ava(p);vva(j);Qb(A|0)}while(0);s=v;t=w;vva(j);Qb(t|0)}while(0);kpa(a);t=(i[e>>0]|0)==0;e=i[f>>0]|0;f=(i[g>>0]|0)!=0&(k[l>>2]|0)==302;l=(f&1)+((t?0:2)|e&255)|0;g=Rqa(l<<2)|0;if(t)C=0;else{k[g>>2]=674;k[g+4>>2]=677;C=2}if(!(e<<24>>24))D=C;else{k[g+(C<<2)>>2]=353;D=C|1}if(f)k[g+(D<<2)>>2]=(i[h>>0]|0)==0?666:687;h=Qqa(4)|0;k[h>>2]=40380;if(l){D=0;do{oO(k[o>>2]|0,k[g+(D<<2)>>2]|0,991);Fc[k[(k[h>>2]|0)+32>>2]&1023](h,a);D=D+1|0}while((D|0)<(l|0))}Tqa(g);Ec[k[(k[h>>2]|0)+4>>2]&1023](h);h=Qqa(4)|0;k[h>>2]=40304;Fc[k[40336>>2]&1023](h,a);Ec[k[(k[h>>2]|0)+4>>2]&1023](h);SZ(a);if(!(i[d>>0]|0)){r=b;return}k[c>>2]=992;fi(a,a+48|0,c,1,1);r=b;return}function s0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0;e=r;r=r+352|0;d=e+336|0;b=e+332|0;g=e+192|0;h=e+176|0;i=e+40|0;j=e+24|0;l=e+12|0;m=e;cO(f,b,942);cO(f,e+328|0,477);if((k[b>>2]|0)==921){r=e;return}a:do if(BY()|0){n=g+56|0;o=g+4|0;k[g>>2]=27524;k[n>>2]=27544;B=0;wa(508,g+56|0,o|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;s=p;vva(n);Qb(s|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[n>>2]=27488;B=0;va(448,o|0);p=B;B=0;do if(p&1){t=Rb()|0;u=Q;v=t}else{k[o>>2]=27560;t=g+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[g+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,o|0,d|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(d);Yua(t);Ava(o);u=x;v=w;break}Yua(d);B=0;Ia(40,g|0,117471,28)|0;w=B;B=0;do if(!(w&1)?(B=0,wa(510,h|0,o|0),x=B,B=0,!(x&1)):0){B=0;ya(425,h|0)|0;x=B;B=0;if(x&1){x=Rb()|0;y=Q;Yua(h);z=y;A=x;break}else{Yua(h);k[g>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);break a}}else C=15;while(0);if((C|0)==15){w=Rb()|0;z=Q;A=w}k[g>>2]=27468;k[n>>2]=27488;k[o>>2]=27560;Yua(t);Ava(o);vva(n);D=z;E=A;Qb(E|0)}while(0);q=u;s=v;vva(n);Qb(s|0)}while(0);tO(f,483);switch(k[b>>2]|0){case 923:{s=t0(a,c,0)|0;F=u0(a,0,c,f,s)|0;G=s;break}case 926:{F=v0(a,c)|0;G=0;break}case 927:case 925:case 924:case 922:{F=0;G=0;break}default:{c=i+56|0;s=i+4|0;k[i>>2]=27524;k[c>>2]=27544;B=0;wa(508,i+56|0,s|0);f=B;B=0;if(f&1){f=Rb()|0;H=Q;I=f;vva(c);Qb(I|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[c>>2]=27488;B=0;va(448,s|0);f=B;B=0;do if(f&1){v=Rb()|0;J=Q;K=v}else{k[s>>2]=27560;v=i+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[i+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,s|0,d|0);u=B;B=0;if(u&1){u=Rb()|0;q=Q;Yua(d);Yua(v);Ava(s);J=q;K=u;break}Yua(d);B=0;u=Ia(40,i|0,117500,25)|0;q=B;B=0;b:do if((((!(q&1)?(B=0,A=ya(427,k[b>>2]|0)|0,z=B,B=0,!(z&1)):0)?(z=Lta(A)|0,B=0,g=Ia(40,u|0,A|0,z|0)|0,z=B,B=0,!(z&1)):0)?(B=0,z=Ia(40,g|0,146956,19)|0,g=B,B=0,!(g&1)):0)?(B=0,Xa(239,z|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,j|0,117526,106);g=B;B=0;do if(!(g&1)){B=0;eb(502,l|0,117633,23);A=B;B=0;if(A&1){A=Rb()|0;h=Q;Yua(j);L=h;M=A;break}B=0;wa(510,m|0,s|0);A=B;B=0;if(A&1){A=Rb()|0;N=1;O=Q;P=A}else{B=0;ua(163,z|0,j|0,l|0,46,m|0);A=B;B=0;if(A&1)R=1;else{B=0;eb(503,z|0,1240,229);B=0;R=0}A=Rb()|0;h=Q;Yua(m);N=R;O=h;P=A}Yua(l);Yua(j);if(N){L=O;M=P}else{S=O;T=P;break b}}else{A=Rb()|0;L=Q;M=A}while(0);zb(z|0);S=L;T=M}else C=40;while(0);if((C|0)==40){u=Rb()|0;S=Q;T=u}k[i>>2]=27468;k[c>>2]=27488;k[s>>2]=27560;Yua(v);Ava(s);vva(c);D=S;E=T;Qb(E|0)}while(0);H=J;I=K;vva(c);Qb(I|0)}}if((th(a)|0)>0){I=0;do{eq(qh(a,I)|0,F);I=I+1|0}while((I|0)<(th(a)|0))}if(G)Tqa(G);if(!F){r=e;return}Tqa(F);r=e;return}function t0(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=nn(b)|0;b=Qqa(8)|0;B=0;va(485,b|0);d=B;B=0;a:do if(!(d&1)){do if(k[b>>2]|0){B=0;e=ya(423,4)|0;f=B;B=0;if(f&1)break a;B=0;eb(505,e|0,c|0,0);f=B;B=0;if(!(f&1)){k[b+4>>2]=e;break}f=Rb()|0;g=Q;Sqa(e);h=g;i=f;Sqa(b);Qb(i|0)}while(0);if((th(a)|0)>0){f=0;do{g=qh(a,f)|0;Fc[k[(k[g>>2]|0)+400>>2]&1023](g,b);f=f+1|0}while((f|0)<(th(a)|0))}if(!(k[b>>2]|0)){j=0;Sqa(b);return j|0}f=b+4|0;g=k[k[f>>2]>>2]|0;Ec[k[(k[g>>2]|0)+12>>2]&1023](g);if(!(k[b>>2]|0)){j=0;Sqa(b);return j|0}g=k[k[f>>2]>>2]|0;e=Hc[k[(k[g>>2]|0)+52>>2]&511](g)|0;if(!(k[b>>2]|0)){j=e;Sqa(b);return j|0}g=k[f>>2]|0;if(!g){j=e;Sqa(b);return j|0}f=k[g>>2]|0;if(f)Ec[k[(k[f>>2]|0)+4>>2]&1023](f);Sqa(g);j=e;Sqa(b);return j|0}while(0);j=Rb()|0;h=Q;i=j;Sqa(b);Qb(i|0);return 0}function u0(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;b=r;r=r+176|0;f=b+164|0;g=b+156|0;h=b+152|0;i=b+16|0;j=b;cO(d,b+160|0,477);d=Qqa(8)|0;B=0;l=ya(429,c|0)|0;c=B;B=0;a:do if(!(c&1)?(B=0,va(485,d|0),m=B,B=0,!(m&1)):0){do if(k[d>>2]|0){B=0;m=ya(423,4)|0;n=B;B=0;if(n&1){o=10;break a}B=0;eb(505,m|0,l|0,0);n=B;B=0;if(n&1){n=Rb()|0;q=Q;Sqa(m);s=q;t=n;break a}else{k[d+4>>2]=m;break}}while(0);if((th(a)|0)>0){m=0;do{Gp(qh(a,m)|0,d,928,628);m=m+1|0}while((m|0)<(th(a)|0))}m=d+4|0;if((k[d>>2]|0)!=0?(n=k[k[m>>2]>>2]|0,Ec[k[(k[n>>2]|0)+12>>2]&1023](n),(k[d>>2]|0)!=0):0){n=k[k[m>>2]>>2]|0;u=Hc[k[(k[n>>2]|0)+52>>2]&511](n)|0}else u=0;k[g>>2]=1;n=i+56|0;q=i+4|0;v=i+56|0;w=i+128|0;x=i+132|0;y=i+36|0;z=i+52|0;A=u;while(1){C=Qqa(8)|0;B=0;D=ya(434,a|0)|0;E=B;B=0;if(E&1){F=C;o=28;break}B=0;va(485,C|0);E=B;B=0;if(E&1){F=C;o=28;break}if(k[C>>2]|0){B=0;E=ya(423,4)|0;G=B;B=0;if(G&1){F=C;o=28;break}B=0;eb(505,E|0,D|0,1);D=B;B=0;if(D&1){H=C;I=E;o=24;break}k[C+4>>2]=E}if((th(a)|0)>0){E=C+4|0;D=0;do{G=qh(a,D)|0;J=Rp(G)|0;K=ed[k[(k[G>>2]|0)+244>>2]&511](G,A)|0;if(k[C>>2]|0){G=k[k[E>>2]>>2]|0;Jc[k[(k[G>>2]|0)+20>>2]&1](G,J,K?1.0:0.0,0)}D=D+1|0}while((D|0)<(th(a)|0))}if((k[C>>2]|0)!=0?(D=C+4|0,E=k[k[D>>2]>>2]|0,Ec[k[(k[E>>2]|0)+12>>2]&1023](E),(k[C>>2]|0)!=0):0){E=k[k[D>>2]>>2]|0;L=Hc[k[(k[E>>2]|0)+52>>2]&511](E)|0}else L=0;k[h>>2]=0;if((th(a)|0)>0){E=0;do{D=qh(a,E)|0;K=L+((Rp(D)|0)<<3)|0;if(~~+p[K>>3]){K=ld[k[(k[D>>2]|0)+492>>2]&127](D,e,d,A)|0;k[h>>2]=(k[h>>2]|0)+K}E=E+1|0}while((E|0)<(th(a)|0))}if(k[d>>2]|0){E=k[k[m>>2]>>2]|0;Ec[k[(k[E>>2]|0)+12>>2]&1023](E)}fZ(h,g,1,4,4,uY()|0)|0;if(EY()|0){k[i>>2]=27524;k[n>>2]=27544;B=0;wa(508,v|0,q|0);E=B;B=0;if(E&1){o=44;break}k[w>>2]=0;k[x>>2]=-1;k[i>>2]=27468;k[n>>2]=27488;B=0;va(448,q|0);E=B;B=0;if(E&1){o=45;break}k[q>>2]=27560;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[z>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,q|0,f|0);E=B;B=0;if(E&1){o=43;break}Yua(f);B=0;E=Ia(40,i|0,117657,54)|0;K=B;B=0;if(K&1){o=54;break}B=0;K=Xa(242,E|0,k[g>>2]|0)|0;E=B;B=0;if(E&1){o=54;break}B=0;Ia(40,K|0,149177,1)|0;K=B;B=0;if(K&1){o=54;break}B=0;wa(510,j|0,q|0);K=B;B=0;if(K&1){o=54;break}B=0;ya(425,j|0)|0;K=B;B=0;if(K&1){o=55;break}Yua(j);k[i>>2]=27468;k[n>>2]=27488;k[q>>2]=27560;Yua(y);Ava(q);vva(n)}if(L)Tqa(L);if(A)Tqa(A);if((k[C>>2]|0)!=0?(K=k[C+4>>2]|0,(K|0)!=0):0){E=k[K>>2]|0;if(E)Ec[k[(k[E>>2]|0)+4>>2]&1023](E);Sqa(K)}Sqa(C);if(!(k[d>>2]|0))M=0;else{K=k[k[m>>2]>>2]|0;M=Hc[k[(k[K>>2]|0)+52>>2]&511](K)|0}if(!(k[g>>2]|0)){N=M;o=69;break}else A=M}if((o|0)==24){A=Rb()|0;z=Q;Sqa(I);O=H;P=z;R=A;o=29}else if((o|0)==28){A=Rb()|0;O=F;P=Q;R=A;o=29}else if((o|0)==43){A=Rb()|0;z=Q;Yua(f);Yua(y);Ava(q);S=z;T=A;o=46}else if((o|0)==44){A=Rb()|0;U=Q;V=A;vva(n);Qb(V|0)}else if((o|0)==45){A=Rb()|0;S=Q;T=A;o=46}else if((o|0)==54){A=Rb()|0;W=Q;X=A;o=56}else if((o|0)==55){A=Rb()|0;z=Q;Yua(j);W=z;X=A;o=56}else if((o|0)==69){if(!(k[d>>2]|0)){Sqa(d);r=b;return N|0}A=k[m>>2]|0;if(!A){Sqa(d);r=b;return N|0}z=k[A>>2]|0;if(z)Ec[k[(k[z>>2]|0)+4>>2]&1023](z);Sqa(A);Sqa(d);r=b;return N|0}if((o|0)==29){Sqa(O);Y=P;Z=R;Qb(Z|0)}else if((o|0)==46){U=S;V=T;vva(n);Qb(V|0)}else if((o|0)==56){k[i>>2]=27468;k[n>>2]=27488;k[q>>2]=27560;Yua(y);Ava(q);vva(n);Y=W;Z=X;Qb(Z|0)}}else o=10;while(0);if((o|0)==10){o=Rb()|0;s=Q;t=o}Sqa(d);Y=s;Z=t;Qb(Z|0);return 0}function v0(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0.0,t=0,u=0,v=0;c=nn(b)|0;b=Qqa(8)|0;B=0;va(485,b|0);d=B;B=0;a:do if(d&1)e=23;else{do if(k[b>>2]|0){B=0;f=ya(423,4)|0;g=B;B=0;if(g&1){e=23;break a}B=0;eb(505,f|0,c|0,0);g=B;B=0;if(g&1){g=Rb()|0;h=Q;Sqa(f);i=h;j=g;break a}else{k[b+4>>2]=f;break}}while(0);f=Qqa(8)|0;B=0;va(485,f|0);g=B;B=0;b:do if(g&1)e=25;else{do if(k[f>>2]|0){B=0;h=ya(423,4)|0;l=B;B=0;if(l&1){e=25;break b}B=0;eb(505,h|0,c|0,0);l=B;B=0;if(l&1){l=Rb()|0;m=Q;Sqa(h);n=m;o=l;break b}else{k[f+4>>2]=h;break}}while(0);h=Rqa(c>>>0>536870911?-1:c<<3)|0;if((th(a)|0)>0){l=0;do{m=qh(a,l)|0;nd[k[(k[m>>2]|0)+120>>2]&1023](m,b,f);l=l+1|0}while((l|0)<(th(a)|0))}if(k[b>>2]|0){l=k[k[b+4>>2]>>2]|0;Ec[k[(k[l>>2]|0)+12>>2]&1023](l)}if(k[f>>2]|0){l=k[k[f+4>>2]>>2]|0;Ec[k[(k[l>>2]|0)+12>>2]&1023](l)}if(!(k[b>>2]|0))q=0;else{l=k[k[b+4>>2]>>2]|0;q=Hc[k[(k[l>>2]|0)+52>>2]&511](l)|0}if(!(k[f>>2]|0))r=0;else{l=k[k[f+4>>2]>>2]|0;r=Hc[k[(k[l>>2]|0)+52>>2]&511](l)|0}if((c|0)>0){l=0;do{s=+p[q+(l<<3)>>3];m=+p[r+(l<<3)>>3]==1.0;do if(s==1.0){t=h+(l<<3)|0;if(m){p[t>>3]=0.0;break}else{p[t>>3]=1.0;break}}else{if(m){p[h+(l<<3)>>3]=-1.0;break}t=h+(l<<3)|0;if(s>10.0){p[t>>3]=9999.0;break}else{p[t>>3]=-9999.0;break}}while(0);l=l+1|0}while((l|0)!=(c|0))}if((k[b>>2]|0)!=0?(l=k[b+4>>2]|0,(l|0)!=0):0){m=k[l>>2]|0;if(m)Ec[k[(k[m>>2]|0)+4>>2]&1023](m);Sqa(l)}Sqa(b);if((k[f>>2]|0)!=0?(l=k[f+4>>2]|0,(l|0)!=0):0){m=k[l>>2]|0;if(m)Ec[k[(k[m>>2]|0)+4>>2]&1023](m);Sqa(l)}Sqa(f);if(q)Tqa(q);if(!r)return h|0;Tqa(r);return h|0}while(0);if((e|0)==25){g=Rb()|0;n=Q;o=g}Sqa(f);u=n;v=o;Qb(v|0)}while(0);if((e|0)==23){e=Rb()|0;i=Q;j=e}Sqa(b);u=i;v=j;Qb(v|0);return 0}function w0(a){a=a|0;var b=0;k[a>>2]=37076;k[a+4>>2]=37196;k[a+124>>2]=0;b=a+44|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;return}function x0(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0;f=r;r=r+32|0;g=f+16|0;h=f+8|0;j=f+4|0;l=f;k[a>>2]=37076;k[a+4>>2]=37196;B=0;eb(512,d|0,l|0,117723);m=B;B=0;do if(((((!(m&1)?(B=0,n=Xa(246,d|0,127458)|0,o=B,B=0,!(o&1)):0)?(o=c*12|0,q=~~+p[n+(o<<3)+16>>3],B=0,n=Xa(246,d|0,127458)|0,s=B,B=0,!(s&1)):0)?(s=~~+p[n+(o<<3)+24>>3],B=0,n=Xa(246,d|0,127458)|0,t=B,B=0,!(t&1)):0)?(t=~~+p[n+(o<<3)>>3],B=0,n=Xa(246,d|0,127458)|0,u=B,B=0,!(u&1)):0)?(u=~~+p[n+(o<<3)+8>>3],k[a+8>>2]=b,k[a+12>>2]=e,n=k[d+100>>2]|0,k[g>>2]=n+t,k[g+4>>2]=n+u,k[h>>2]=q,k[h+4>>2]=s,k[j>>2]=(k[d+56>>2]|0)+1,B=0,s=ya(423,16)|0,q=B,B=0,!(q&1)):0){B=0;eb(509,s|0,g|0,2);q=B;B=0;if(q&1){q=Rb()|0;u=Q;Sqa(s);v=u;w=q;Qb(w|0)}k[a+44>>2]=s;B=0;s=ya(423,16)|0;q=B;B=0;if(!(q&1)){B=0;eb(509,s|0,h|0,2);q=B;B=0;if(q&1){q=Rb()|0;u=Q;Sqa(s);v=u;w=q;Qb(w|0)}k[a+48>>2]=s;B=0;s=ya(423,16)|0;q=B;B=0;if(!(q&1)){B=0;eb(509,s|0,j|0,1);q=B;B=0;if(q&1){q=Rb()|0;u=Q;Sqa(s);v=u;w=q;Qb(w|0)}k[a+52>>2]=s;i[a+72>>0]=0;i[a+73>>0]=0;k[a+76>>2]=0;i[a+80>>0]=0;k[a+68>>2]=k[l>>2];i[a+81>>0]=0;B=0;s=Xa(246,d|0,127458)|0;q=B;B=0;if(((((((!(q&1)?(p[a+88>>3]=+p[s+(o<<3)+32>>3],B=0,s=Xa(246,d|0,127458)|0,q=B,B=0,!(q&1)):0)?(p[a+96>>3]=+p[s+(o<<3)+40>>3],B=0,s=Xa(246,d|0,127458)|0,q=B,B=0,!(q&1)):0)?(p[a+104>>3]=+p[s+(o<<3)+48>>3],B=0,s=Xa(246,d|0,127458)|0,q=B,B=0,!(q&1)):0)?(p[a+112>>3]=+p[s+(o<<3)+72>>3],B=0,s=Xa(246,d|0,127458)|0,q=B,B=0,!(q&1)):0)?(k[a+120>>2]=~~+p[s+(o<<3)+88>>3],k[a+16>>2]=613,B=0,s=Xa(246,d|0,127458)|0,q=B,B=0,!(q&1)):0)?(k[a+20>>2]=~~+p[s+(o<<3)+56>>3],B=0,s=Xa(246,d|0,127458)|0,q=B,B=0,!(q&1)):0)?(p[a+24>>3]=+p[s+(o<<3)+64>>3],B=0,s=Xa(246,d|0,127458)|0,q=B,B=0,!(q&1)):0){p[a+32>>3]=+p[s+(o<<3)+80>>3];B=0;o=Xa(246,d|0,134962)|0;s=B;B=0;if(s&1)break;i[a+40>>0]=+p[o+(t+-1<<3)>>3]<0.0&1;k[a+124>>2]=0;k[a+60>>2]=0;k[a+64>>2]=0;k[a+56>>2]=0;r=f;return}}}}while(0);f=Rb()|0;v=Q;w=f;Qb(w|0)}function y0(a){a=a|0;var b=0;k[a>>2]=37076;k[a+4>>2]=37196;k[a+124>>2]=0;b=k[a+44>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+48>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+52>>2]|0;if(!b)return;yla(b);Sqa(b);return}function z0(a){a=a|0;var b=0;k[a>>2]=37076;k[a+4>>2]=37196;k[a+124>>2]=0;b=k[a+44>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+48>>2]|0;if(b){yla(b);Sqa(b)}b=k[a+52>>2]|0;if(!b){Sqa(a);return}yla(b);Sqa(b);Sqa(a);return}function A0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=Qqa(128)|0;k[b>>2]=37076;k[b+4>>2]=37196;c=b+44|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=0;k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2];k[b+16>>2]=k[a+16>>2];k[b+20>>2]=k[a+20>>2];p[b+24>>3]=+p[a+24>>3];p[b+32>>3]=+p[a+32>>3];i[b+40>>0]=i[a+40>>0]|0;k[b+124>>2]=k[a+124>>2];d=Bla(k[a+44>>2]|0)|0;k[c>>2]=d;d=Bla(k[a+48>>2]|0)|0;e=b+48|0;k[e>>2]=d;d=Bla(k[a+52>>2]|0)|0;f=b+52|0;k[f>>2]=d;d=Gla(k[c>>2]|0)|0;k[b+60>>2]=d;d=Gla(k[e>>2]|0)|0;k[b+64>>2]=d;d=Fla(k[f>>2]|0)|0;k[b+56>>2]=d;k[b+68>>2]=k[a+68>>2];d=j[a+72>>1]|0;i[b+72>>0]=d;i[b+73>>0]=(d&65535)>>>8;k[b+120>>2]=k[a+120>>2];k[b+76>>2]=k[a+76>>2];d=j[a+80>>1]|0;i[b+80>>0]=d;i[b+81>>0]=(d&65535)>>>8;p[b+88>>3]=+p[a+88>>3];p[b+96>>3]=+p[a+96>>3];p[b+104>>3]=+p[a+104>>3];p[b+112>>3]=+p[a+112>>3];return b|0}function B0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;e=r;r=r+368|0;f=e+344|0;g=e+208|0;h=e+196|0;j=e+184|0;m=e+36|0;n=e+48|0;o=e+24|0;q=e+12|0;s=e;u=(d|0)==0;a:do if(u){v=k[b>>2]|0;i[v>>0]=98;i[v+1>>0]=2;i[v+2>>0]=0;i[v+3>>0]=0;v=(k[b>>2]|0)+4|0;k[b>>2]=v;w=a+8|0;x=l[w>>0]|l[w+1>>0]<<8|l[w+2>>0]<<16|l[w+3>>0]<<24;i[v>>0]=x;i[v+1>>0]=x>>8;i[v+2>>0]=x>>16;i[v+3>>0]=x>>24;x=(k[b>>2]|0)+4|0;k[b>>2]=x;v=a+12|0;w=l[v>>0]|l[v+1>>0]<<8|l[v+2>>0]<<16|l[v+3>>0]<<24;i[x>>0]=w;i[x+1>>0]=w>>8;i[x+2>>0]=w>>16;i[x+3>>0]=w>>24;w=(k[b>>2]|0)+4|0;k[b>>2]=w;x=a+16|0;v=l[x>>0]|l[x+1>>0]<<8|l[x+2>>0]<<16|l[x+3>>0]<<24;i[w>>0]=v;i[w+1>>0]=v>>8;i[w+2>>0]=v>>16;i[w+3>>0]=v>>24;v=(k[b>>2]|0)+4|0;k[b>>2]=v;w=a+20|0;x=l[w>>0]|l[w+1>>0]<<8|l[w+2>>0]<<16|l[w+3>>0]<<24;i[v>>0]=x;i[v+1>>0]=x>>8;i[v+2>>0]=x>>16;i[v+3>>0]=x>>24;x=(k[b>>2]|0)+4|0;k[b>>2]=x;v=a+24|0;w=v;y=l[w>>0]|l[w+1>>0]<<8|l[w+2>>0]<<16|l[w+3>>0]<<24;w=v+4|0;v=l[w>>0]|l[w+1>>0]<<8|l[w+2>>0]<<16|l[w+3>>0]<<24;w=x;x=w;i[x>>0]=y;i[x+1>>0]=y>>8;i[x+2>>0]=y>>16;i[x+3>>0]=y>>24;y=w+4|0;i[y>>0]=v;i[y+1>>0]=v>>8;i[y+2>>0]=v>>16;i[y+3>>0]=v>>24;v=(k[b>>2]|0)+8|0;k[b>>2]=v;y=a+32|0;w=y;x=l[w>>0]|l[w+1>>0]<<8|l[w+2>>0]<<16|l[w+3>>0]<<24;w=y+4|0;y=l[w>>0]|l[w+1>>0]<<8|l[w+2>>0]<<16|l[w+3>>0]<<24;w=v;v=w;i[v>>0]=x;i[v+1>>0]=x>>8;i[v+2>>0]=x>>16;i[v+3>>0]=x>>24;x=w+4|0;i[x>>0]=y;i[x+1>>0]=y>>8;i[x+2>>0]=y>>16;i[x+3>>0]=y>>24;y=(k[b>>2]|0)+8|0;k[b>>2]=y;i[y>>0]=i[a+40>>0]|0;k[b>>2]=(k[b>>2]|0)+1;z=0}else switch(d|0){case 2:{k[c>>2]=(k[c>>2]|0)+37;z=0;break a;break}case 1:{y=(k[b>>2]|0)+4|0;k[b>>2]=y;x=a+8|0;w=l[y>>0]|l[y+1>>0]<<8|l[y+2>>0]<<16|l[y+3>>0]<<24;i[x>>0]=w;i[x+1>>0]=w>>8;i[x+2>>0]=w>>16;i[x+3>>0]=w>>24;w=(k[b>>2]|0)+4|0;k[b>>2]=w;x=a+12|0;y=l[w>>0]|l[w+1>>0]<<8|l[w+2>>0]<<16|l[w+3>>0]<<24;i[x>>0]=y;i[x+1>>0]=y>>8;i[x+2>>0]=y>>16;i[x+3>>0]=y>>24;y=(k[b>>2]|0)+4|0;k[b>>2]=y;x=a+16|0;w=l[y>>0]|l[y+1>>0]<<8|l[y+2>>0]<<16|l[y+3>>0]<<24;i[x>>0]=w;i[x+1>>0]=w>>8;i[x+2>>0]=w>>16;i[x+3>>0]=w>>24;w=(k[b>>2]|0)+4|0;k[b>>2]=w;x=a+20|0;y=l[w>>0]|l[w+1>>0]<<8|l[w+2>>0]<<16|l[w+3>>0]<<24;i[x>>0]=y;i[x+1>>0]=y>>8;i[x+2>>0]=y>>16;i[x+3>>0]=y>>24;y=(k[b>>2]|0)+4|0;k[b>>2]=y;x=a+24|0;i[t>>0]=i[y>>0];i[t+1>>0]=i[y+1>>0];i[t+2>>0]=i[y+2>>0];i[t+3>>0]=i[y+3>>0];i[t+4>>0]=i[y+4>>0];i[t+5>>0]=i[y+5>>0];i[t+6>>0]=i[y+6>>0];i[t+7>>0]=i[y+7>>0];p[t>>3]=+p[t>>3];i[x>>0]=i[t>>0];i[x+1>>0]=i[t+1>>0];i[x+2>>0]=i[t+2>>0];i[x+3>>0]=i[t+3>>0];i[x+4>>0]=i[t+4>>0];i[x+5>>0]=i[t+5>>0];i[x+6>>0]=i[t+6>>0];i[x+7>>0]=i[t+7>>0];x=(k[b>>2]|0)+8|0;k[b>>2]=x;y=a+32|0;i[t>>0]=i[x>>0];i[t+1>>0]=i[x+1>>0];i[t+2>>0]=i[x+2>>0];i[t+3>>0]=i[x+3>>0];i[t+4>>0]=i[x+4>>0];i[t+5>>0]=i[x+5>>0];i[t+6>>0]=i[x+6>>0];i[t+7>>0]=i[x+7>>0];p[t>>3]=+p[t>>3];i[y>>0]=i[t>>0];i[y+1>>0]=i[t+1>>0];i[y+2>>0]=i[t+2>>0];i[y+3>>0]=i[t+3>>0];i[y+4>>0]=i[t+4>>0];i[y+5>>0]=i[t+5>>0];i[y+6>>0]=i[t+6>>0];i[y+7>>0]=i[t+7>>0];y=(k[b>>2]|0)+8|0;k[b>>2]=y;i[a+40>>0]=i[y>>0]|0;k[b>>2]=(k[b>>2]|0)+1;y=Qqa(16)|0;B=0;va(489,y|0);x=B;B=0;if(x&1){x=Rb()|0;w=Q;Sqa(y);A=w;C=x;Qb(C|0)}k[a+44>>2]=y;y=Qqa(16)|0;B=0;va(489,y|0);x=B;B=0;if(x&1){x=Rb()|0;w=Q;Sqa(y);A=w;C=x;Qb(C|0)}k[a+52>>2]=y;y=Qqa(16)|0;B=0;va(489,y|0);x=B;B=0;if(!(x&1)){k[a+48>>2]=y;z=1;break a}x=Rb()|0;w=Q;Sqa(y);A=w;C=x;Qb(C|0);break}default:{x=g+56|0;w=g+4|0;k[g>>2]=27524;k[x>>2]=27544;B=0;wa(508,g+56|0,w|0);y=B;B=0;if(y&1){y=Rb()|0;D=Q;E=y;vva(x);Qb(E|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[x>>2]=27488;B=0;va(448,w|0);y=B;B=0;do if(y&1){v=Rb()|0;F=Q;G=v}else{k[w>>2]=27560;v=g+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,w|0,f|0);H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(f);Yua(v);Ava(w);F=I;G=H;break}Yua(f);B=0;H=Ia(40,g|0,143951,43)|0;I=B;B=0;b:do if(!(I&1)?(B=0,Xa(239,H|0,0)|0,J=B,B=0,!(J&1)):0){J=Ab(20)|0;B=0;eb(502,h|0,117758,74);K=B;B=0;do if(!(K&1)){B=0;eb(502,j|0,149525,8);L=B;B=0;if(L&1){L=Rb()|0;M=Q;Yua(h);N=M;O=L;break}B=0;wa(510,m|0,w|0);L=B;B=0;if(L&1){L=Rb()|0;P=Q;R=L;S=1}else{B=0;ua(163,J|0,h|0,j|0,160,m|0);L=B;B=0;if(L&1)T=1;else{B=0;eb(503,J|0,1240,229);B=0;T=0}L=Rb()|0;M=Q;Yua(m);P=M;R=L;S=T}Yua(j);Yua(h);if(S){N=P;O=R}else{U=P;V=R;break b}}else{L=Rb()|0;N=Q;O=L}while(0);zb(J|0);U=N;V=O}else W=18;while(0);if((W|0)==18){H=Rb()|0;U=Q;V=H}k[g>>2]=27468;k[x>>2]=27488;k[w>>2]=27560;Yua(v);Ava(w);vva(x);A=U;C=V;Qb(C|0)}while(0);D=F;E=G;vva(x);Qb(E|0)}}while(0);E=a+44|0;Cla(k[E>>2]|0,b,c,d);G=a+52|0;Cla(k[G>>2]|0,b,c,d);F=a+48|0;Cla(k[F>>2]|0,b,c,d);D=Gla(k[E>>2]|0)|0;k[a+60>>2]=D;D=Fla(k[G>>2]|0)|0;k[a+56>>2]=D;D=Gla(k[F>>2]|0)|0;k[a+64>>2]=D;if(u){u=k[b>>2]|0;D=a+68|0;F=l[D>>0]|l[D+1>>0]<<8|l[D+2>>0]<<16|l[D+3>>0]<<24;i[u>>0]=F;i[u+1>>0]=F>>8;i[u+2>>0]=F>>16;i[u+3>>0]=F>>24;F=(k[b>>2]|0)+4|0;k[b>>2]=F;i[F>>0]=i[a+72>>0]|0;F=(k[b>>2]|0)+1|0;k[b>>2]=F;i[F>>0]=i[a+73>>0]|0;F=(k[b>>2]|0)+1|0;k[b>>2]=F;u=a+120|0;D=l[u>>0]|l[u+1>>0]<<8|l[u+2>>0]<<16|l[u+3>>0]<<24;i[F>>0]=D;i[F+1>>0]=D>>8;i[F+2>>0]=D>>16;i[F+3>>0]=D>>24;D=(k[b>>2]|0)+4|0;k[b>>2]=D;F=a+76|0;u=l[F>>0]|l[F+1>>0]<<8|l[F+2>>0]<<16|l[F+3>>0]<<24;i[D>>0]=u;i[D+1>>0]=u>>8;i[D+2>>0]=u>>16;i[D+3>>0]=u>>24;u=(k[b>>2]|0)+4|0;k[b>>2]=u;i[u>>0]=i[a+80>>0]|0;u=(k[b>>2]|0)+1|0;k[b>>2]=u;i[u>>0]=i[a+81>>0]|0;u=(k[b>>2]|0)+1|0;k[b>>2]=u;D=a+88|0;F=D;G=l[F>>0]|l[F+1>>0]<<8|l[F+2>>0]<<16|l[F+3>>0]<<24;F=D+4|0;D=l[F>>0]|l[F+1>>0]<<8|l[F+2>>0]<<16|l[F+3>>0]<<24;F=u;u=F;i[u>>0]=G;i[u+1>>0]=G>>8;i[u+2>>0]=G>>16;i[u+3>>0]=G>>24;G=F+4|0;i[G>>0]=D;i[G+1>>0]=D>>8;i[G+2>>0]=D>>16;i[G+3>>0]=D>>24;D=(k[b>>2]|0)+8|0;k[b>>2]=D;G=a+96|0;F=G;u=l[F>>0]|l[F+1>>0]<<8|l[F+2>>0]<<16|l[F+3>>0]<<24;F=G+4|0;G=l[F>>0]|l[F+1>>0]<<8|l[F+2>>0]<<16|l[F+3>>0]<<24;F=D;D=F;i[D>>0]=u;i[D+1>>0]=u>>8;i[D+2>>0]=u>>16;i[D+3>>0]=u>>24;u=F+4|0;i[u>>0]=G;i[u+1>>0]=G>>8;i[u+2>>0]=G>>16;i[u+3>>0]=G>>24;G=(k[b>>2]|0)+8|0;k[b>>2]=G;u=a+104|0;F=u;D=l[F>>0]|l[F+1>>0]<<8|l[F+2>>0]<<16|l[F+3>>0]<<24;F=u+4|0;u=l[F>>0]|l[F+1>>0]<<8|l[F+2>>0]<<16|l[F+3>>0]<<24;F=G;G=F;i[G>>0]=D;i[G+1>>0]=D>>8;i[G+2>>0]=D>>16;i[G+3>>0]=D>>24;D=F+4|0;i[D>>0]=u;i[D+1>>0]=u>>8;i[D+2>>0]=u>>16;i[D+3>>0]=u>>24;u=(k[b>>2]|0)+8|0;k[b>>2]=u;D=a+112|0;F=D;G=l[F>>0]|l[F+1>>0]<<8|l[F+2>>0]<<16|l[F+3>>0]<<24;F=D+4|0;D=l[F>>0]|l[F+1>>0]<<8|l[F+2>>0]<<16|l[F+3>>0]<<24;F=u;u=F;i[u>>0]=G;i[u+1>>0]=G>>8;i[u+2>>0]=G>>16;i[u+3>>0]=G>>24;G=F+4|0;i[G>>0]=D;i[G+1>>0]=D>>8;i[G+2>>0]=D>>16;i[G+3>>0]=D>>24;k[b>>2]=(k[b>>2]|0)+8;r=e;return}if((d|0)==2){k[c>>2]=(k[c>>2]|0)+48;r=e;return}if(z){z=a+68|0;c=k[b>>2]|0;d=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[z>>0]=d;i[z+1>>0]=d>>8;i[z+2>>0]=d>>16;i[z+3>>0]=d>>24;d=(k[b>>2]|0)+4|0;k[b>>2]=d;i[a+72>>0]=i[d>>0]|0;d=(k[b>>2]|0)+1|0;k[b>>2]=d;i[a+73>>0]=i[d>>0]|0;d=(k[b>>2]|0)+1|0;k[b>>2]=d;z=a+120|0;c=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[z>>0]=c;i[z+1>>0]=c>>8;i[z+2>>0]=c>>16;i[z+3>>0]=c>>24;c=(k[b>>2]|0)+4|0;k[b>>2]=c;z=a+76|0;d=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[z>>0]=d;i[z+1>>0]=d>>8;i[z+2>>0]=d>>16;i[z+3>>0]=d>>24;d=(k[b>>2]|0)+4|0;k[b>>2]=d;i[a+80>>0]=i[d>>0]|0;d=(k[b>>2]|0)+1|0;k[b>>2]=d;i[a+81>>0]=i[d>>0]|0;d=(k[b>>2]|0)+1|0;k[b>>2]=d;z=a+88|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[z>>0]=i[t>>0];i[z+1>>0]=i[t+1>>0];i[z+2>>0]=i[t+2>>0];i[z+3>>0]=i[t+3>>0];i[z+4>>0]=i[t+4>>0];i[z+5>>0]=i[t+5>>0];i[z+6>>0]=i[t+6>>0];i[z+7>>0]=i[t+7>>0];z=(k[b>>2]|0)+8|0;k[b>>2]=z;d=a+96|0;i[t>>0]=i[z>>0];i[t+1>>0]=i[z+1>>0];i[t+2>>0]=i[z+2>>0];i[t+3>>0]=i[z+3>>0];i[t+4>>0]=i[z+4>>0];i[t+5>>0]=i[z+5>>0];i[t+6>>0]=i[z+6>>0];i[t+7>>0]=i[z+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];d=(k[b>>2]|0)+8|0;k[b>>2]=d;z=a+104|0;i[t>>0]=i[d>>0];i[t+1>>0]=i[d+1>>0];i[t+2>>0]=i[d+2>>0];i[t+3>>0]=i[d+3>>0];i[t+4>>0]=i[d+4>>0];i[t+5>>0]=i[d+5>>0];i[t+6>>0]=i[d+6>>0];i[t+7>>0]=i[d+7>>0];p[t>>3]=+p[t>>3];i[z>>0]=i[t>>0];i[z+1>>0]=i[t+1>>0];i[z+2>>0]=i[t+2>>0];i[z+3>>0]=i[t+3>>0];i[z+4>>0]=i[t+4>>0];i[z+5>>0]=i[t+5>>0];i[z+6>>0]=i[t+6>>0];i[z+7>>0]=i[t+7>>0];z=(k[b>>2]|0)+8|0;k[b>>2]=z;d=a+112|0;i[t>>0]=i[z>>0];i[t+1>>0]=i[z+1>>0];i[t+2>>0]=i[z+2>>0];i[t+3>>0]=i[z+3>>0];i[t+4>>0]=i[z+4>>0];i[t+5>>0]=i[z+5>>0];i[t+6>>0]=i[z+6>>0];i[t+7>>0]=i[z+7>>0];p[t>>3]=+p[t>>3];i[d>>0]=i[t>>0];i[d+1>>0]=i[t+1>>0];i[d+2>>0]=i[t+2>>0];i[d+3>>0]=i[t+3>>0];i[d+4>>0]=i[t+4>>0];i[d+5>>0]=i[t+5>>0];i[d+6>>0]=i[t+6>>0];i[d+7>>0]=i[t+7>>0];k[b>>2]=(k[b>>2]|0)+8;r=e;return}e=n+56|0;b=n+4|0;k[n>>2]=27524;k[e>>2]=27544;B=0;wa(508,n+56|0,b|0);d=B;B=0;if(d&1){d=Rb()|0;X=Q;Y=d;vva(e);Qb(Y|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[e>>2]=27488;B=0;va(448,b|0);d=B;B=0;do if(d&1){z=Rb()|0;Z=Q;_=z}else{k[b>>2]=27560;z=n+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,b|0,f|0);a=B;B=0;if(a&1){a=Rb()|0;c=Q;Yua(f);Yua(z);Ava(b);Z=c;_=a;break}Yua(f);B=0;a=Ia(40,n|0,143951,43)|0;c=B;B=0;c:do if(!(c&1)?(B=0,Xa(239,a|0,0)|0,D=B,B=0,!(D&1)):0){D=Ab(20)|0;B=0;eb(502,o|0,117758,74);G=B;B=0;do if(!(G&1)){B=0;eb(502,q|0,149525,8);F=B;B=0;if(F&1){F=Rb()|0;u=Q;Yua(o);$=F;aa=u;break}B=0;wa(510,s|0,b|0);u=B;B=0;if(u&1){u=Rb()|0;ba=1;ca=Q;da=u}else{B=0;ua(163,D|0,o|0,q|0,184,s|0);u=B;B=0;if(u&1)ea=1;else{B=0;eb(503,D|0,1240,229);B=0;ea=0}u=Rb()|0;F=Q;Yua(s);ba=ea;ca=F;da=u}Yua(q);Yua(o);if(ba){$=da;aa=ca}else{fa=ca;ga=da;break c}}else{u=Rb()|0;$=u;aa=Q}while(0);zb(D|0);fa=aa;ga=$}else W=53;while(0);if((W|0)==53){a=Rb()|0;fa=Q;ga=a}k[n>>2]=27468;k[e>>2]=27488;k[b>>2]=27560;Yua(z);Ava(b);vva(e);A=fa;C=ga;Qb(C|0)}while(0);X=Z;Y=_;vva(e);Qb(Y|0)}function C0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;b=r;r=r+624|0;c=b+604|0;d=b+456|0;e=b+592|0;f=b+304|0;g=b+440|0;h=b+152|0;i=b+288|0;j=b+16|0;l=b;m=d+56|0;n=d+4|0;k[d>>2]=27524;k[m>>2]=27544;B=0;wa(508,d+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;q=o;vva(m);Qb(q|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){s=Rb()|0;t=Q;u=s}else{k[n>>2]=27560;s=d+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,n|0,c|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(c);Yua(s);Ava(n);t=w;u=v;break}Yua(c);B=0;Ia(40,d|0,117833,11)|0;v=B;B=0;do if(!(v&1)?(B=0,wa(510,e|0,n|0),w=B,B=0,!(w&1)):0){B=0;ya(424,e|0)|0;w=B;B=0;if(w&1){w=Rb()|0;x=Q;Yua(e);y=x;z=w;break}Yua(e);k[d>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);w=f+56|0;x=f+4|0;k[f>>2]=27524;k[w>>2]=27544;B=0;wa(508,f+56|0,x|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;D=A;vva(w);Qb(D|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[w>>2]=27488;B=0;va(448,x|0);A=B;B=0;do if(A&1){E=Rb()|0;F=Q;G=E}else{k[x>>2]=27560;E=f+36|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,x|0,c|0);H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(c);Yua(E);Ava(x);F=I;G=H;break}Yua(c);B=0;H=Ia(40,f|0,144086,7)|0;I=B;B=0;do if(((!(I&1)?(B=0,J=Xa(242,H|0,k[a+8>>2]|0)|0,K=B,B=0,!(K&1)):0)?(B=0,Ia(40,J|0,149177,1)|0,J=B,B=0,!(J&1)):0)?(B=0,wa(510,g|0,x|0),J=B,B=0,!(J&1)):0){B=0;ya(424,g|0)|0;J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(g);L=K;M=J;break}Yua(g);k[f>>2]=27468;k[w>>2]=27488;k[x>>2]=27560;Yua(E);Ava(x);vva(w);J=h+56|0;K=h+4|0;k[h>>2]=27524;k[J>>2]=27544;B=0;wa(508,h+56|0,K|0);N=B;B=0;if(N&1){N=Rb()|0;O=Q;P=N;vva(J);Qb(P|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[J>>2]=27488;B=0;va(448,K|0);N=B;B=0;do if(N&1){R=Rb()|0;S=Q;T=R}else{k[K>>2]=27560;R=h+36|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,K|0,c|0);U=B;B=0;if(U&1){U=Rb()|0;V=Q;Yua(c);Yua(R);Ava(K);S=V;T=U;break}Yua(c);B=0;U=Ia(40,h|0,144094,18)|0;V=B;B=0;do if(V&1)W=58;else{B=0;X=ya(427,k[a+12>>2]|0)|0;Y=B;B=0;if(Y&1){W=58;break}Y=Lta(X)|0;B=0;Z=Ia(40,U|0,X|0,Y|0)|0;Y=B;B=0;if(Y&1){W=58;break}B=0;Ia(40,Z|0,149177,1)|0;Z=B;B=0;if(Z&1){W=58;break}B=0;wa(510,i|0,K|0);Z=B;B=0;if(Z&1){W=58;break}B=0;ya(424,i|0)|0;Z=B;B=0;if(Z&1){Z=Rb()|0;Y=Q;Yua(i);_=Y;$=Z;break}Yua(i);k[h>>2]=27468;k[J>>2]=27488;k[K>>2]=27560;Yua(R);Ava(K);vva(J);Ala(k[a+44>>2]|0);Ala(k[a+48>>2]|0);Ala(k[a+52>>2]|0);Z=j+56|0;Y=j+4|0;k[j>>2]=27524;k[Z>>2]=27544;B=0;wa(508,j+56|0,Y|0);X=B;B=0;if(X&1){X=Rb()|0;aa=Q;ba=X;vva(Z);Qb(ba|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[Z>>2]=27488;B=0;va(448,Y|0);X=B;B=0;do if(X&1){ca=Rb()|0;da=Q;ea=ca}else{k[Y>>2]=27560;ca=j+36|0;k[ca>>2]=0;k[ca+4>>2]=0;k[ca+8>>2]=0;k[ca+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Y|0,c|0);fa=B;B=0;if(fa&1){fa=Rb()|0;ga=Q;Yua(c);Yua(ca);Ava(Y);da=ga;ea=fa;break}Yua(c);B=0;Ia(40,j|0,144113,14)|0;fa=B;B=0;do if(!(fa&1)){B=0;wa(510,l|0,Y|0);ga=B;B=0;if(ga&1){W=61;break}B=0;ya(424,l|0)|0;ga=B;B=0;if(ga&1){ga=Rb()|0;ha=Q;Yua(l);ia=ha;ja=ga;break}Yua(l);k[j>>2]=27468;k[Z>>2]=27488;k[Y>>2]=27560;Yua(ca);Ava(Y);vva(Z);ga=k[a+124>>2]|0;if(!ga){r=b;return}else $N(ga)}else W=61;while(0);if((W|0)==61){fa=Rb()|0;ia=Q;ja=fa}k[j>>2]=27468;k[Z>>2]=27488;k[Y>>2]=27560;Yua(ca);Ava(Y);vva(Z);ka=ia;la=ja;Qb(la|0)}while(0);aa=da;ba=ea;vva(Z);Qb(ba|0)}while(0);if((W|0)==58){U=Rb()|0;_=Q;$=U}k[h>>2]=27468;k[J>>2]=27488;k[K>>2]=27560;Yua(R);Ava(K);vva(J);ka=_;la=$;Qb(la|0)}while(0);O=S;P=T;vva(J);Qb(P|0)}else W=55;while(0);if((W|0)==55){H=Rb()|0;L=Q;M=H}k[f>>2]=27468;k[w>>2]=27488;k[x>>2]=27560;Yua(E);Ava(x);vva(w);ka=L;la=M;Qb(la|0)}while(0);C=F;D=G;vva(w);Qb(D|0)}else W=52;while(0);if((W|0)==52){v=Rb()|0;y=Q;z=v}k[d>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(m);ka=y;la=z;Qb(la|0)}while(0);p=t;q=u;vva(m);Qb(q|0)}function D0(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Pe=0,Qe=0,Re=0;b=r;r=r+3168|0;c=b+3152|0;d=b+2896|0;e=b+3140|0;f=b+2760|0;g=b+3128|0;h=b+2608|0;j=b+3116|0;l=b+2472|0;m=b+3104|0;n=b+2320|0;o=b+3092|0;q=b+2184|0;s=b+3080|0;t=b+2032|0;u=b+3068|0;v=b+1896|0;w=b+3056|0;x=b+1744|0;y=b+3044|0;z=b+1592|0;A=b+3032|0;C=b+1456|0;D=b+2744|0;E=b+1320|0;F=b+2456|0;G=b+1168|0;H=b+2168|0;I=b+1016|0;J=b+1880|0;K=b+880|0;L=b+1728|0;M=b+744|0;N=b+1304|0;O=b+592|0;P=b+1152|0;R=b+456|0;S=b+728|0;T=b+304|0;U=b+440|0;V=b+168|0;W=b+152|0;X=b+16|0;Y=b;Z=d+56|0;_=d+4|0;k[d>>2]=27524;k[Z>>2]=27544;B=0;wa(508,d+56|0,_|0);$=B;B=0;if($&1){$=Rb()|0;aa=Q;ba=$;vva(Z);Qb(ba|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[Z>>2]=27488;B=0;va(448,_|0);$=B;B=0;do if($&1){ca=Rb()|0;da=Q;ea=ca}else{k[_>>2]=27560;ca=d+36|0;k[ca>>2]=0;k[ca+4>>2]=0;k[ca+8>>2]=0;k[ca+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,_|0,c|0);fa=B;B=0;if(fa&1){fa=Rb()|0;ga=Q;Yua(c);Yua(ca);Ava(_);da=ga;ea=fa;break}Yua(c);B=0;Ia(40,d|0,117833,11)|0;fa=B;B=0;do if(!(fa&1)?(B=0,wa(510,e|0,_|0),ga=B,B=0,!(ga&1)):0){B=0;ya(424,e|0)|0;ga=B;B=0;if(ga&1){ga=Rb()|0;ha=Q;Yua(e);ia=ha;ja=ga;break}Yua(e);k[d>>2]=27468;k[Z>>2]=27488;k[_>>2]=27560;Yua(ca);Ava(_);vva(Z);ga=f+56|0;ha=f+4|0;k[f>>2]=27524;k[ga>>2]=27544;B=0;wa(508,f+56|0,ha|0);ka=B;B=0;if(ka&1){ka=Rb()|0;la=Q;ma=ka;vva(ga);Qb(ma|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[ga>>2]=27488;B=0;va(448,ha|0);ka=B;B=0;do if(ka&1){na=Rb()|0;oa=Q;pa=na}else{k[ha>>2]=27560;na=f+36|0;k[na>>2]=0;k[na+4>>2]=0;k[na+8>>2]=0;k[na+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ha|0,c|0);qa=B;B=0;if(qa&1){qa=Rb()|0;ra=Q;Yua(c);Yua(na);Ava(ha);oa=ra;pa=qa;break}Yua(c);B=0;qa=Ia(40,f|0,144086,7)|0;ra=B;B=0;do if(((!(ra&1)?(B=0,sa=Xa(242,qa|0,k[a+8>>2]|0)|0,ta=B,B=0,!(ta&1)):0)?(B=0,Ia(40,sa|0,149177,1)|0,sa=B,B=0,!(sa&1)):0)?(B=0,wa(510,g|0,ha|0),sa=B,B=0,!(sa&1)):0){B=0;ya(424,g|0)|0;sa=B;B=0;if(sa&1){sa=Rb()|0;ta=Q;Yua(g);ua=ta;xa=sa;break}Yua(g);k[f>>2]=27468;k[ga>>2]=27488;k[ha>>2]=27560;Yua(na);Ava(ha);vva(ga);sa=h+56|0;ta=h+4|0;k[h>>2]=27524;k[sa>>2]=27544;B=0;wa(508,h+56|0,ta|0);za=B;B=0;if(za&1){za=Rb()|0;Aa=Q;Ba=za;vva(sa);Qb(Ba|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[sa>>2]=27488;B=0;va(448,ta|0);za=B;B=0;do if(za&1){Ca=Rb()|0;Da=Q;Ea=Ca}else{k[ta>>2]=27560;Ca=h+36|0;k[Ca>>2]=0;k[Ca+4>>2]=0;k[Ca+8>>2]=0;k[Ca+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ta|0,c|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ga=Q;Yua(c);Yua(Ca);Ava(ta);Da=Ga;Ea=Fa;break}Yua(c);B=0;Fa=Ia(40,h|0,144094,18)|0;Ga=B;B=0;do if(Ga&1)Ha=280;else{B=0;Ja=ya(427,k[a+12>>2]|0)|0;Ka=B;B=0;if(Ka&1){Ha=280;break}Ka=Lta(Ja)|0;B=0;La=Ia(40,Fa|0,Ja|0,Ka|0)|0;Ka=B;B=0;if(Ka&1){Ha=280;break}B=0;Ia(40,La|0,149177,1)|0;La=B;B=0;if(La&1){Ha=280;break}B=0;wa(510,j|0,ta|0);La=B;B=0;if(La&1){Ha=280;break}B=0;ya(424,j|0)|0;La=B;B=0;if(La&1){La=Rb()|0;Ka=Q;Yua(j);Ma=Ka;Na=La;break}Yua(j);k[h>>2]=27468;k[sa>>2]=27488;k[ta>>2]=27560;Yua(Ca);Ava(ta);vva(sa);La=l+56|0;Ka=l+4|0;k[l>>2]=27524;k[La>>2]=27544;B=0;wa(508,l+56|0,Ka|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;Oa=Q;Pa=Ja;vva(La);Qb(Pa|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[La>>2]=27488;B=0;va(448,Ka|0);Ja=B;B=0;do if(Ja&1){Qa=Rb()|0;Ra=Q;Ta=Qa}else{k[Ka>>2]=27560;Qa=l+36|0;k[Qa>>2]=0;k[Qa+4>>2]=0;k[Qa+8>>2]=0;k[Qa+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ka|0,c|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;Va=Q;Yua(c);Yua(Qa);Ava(Ka);Ra=Va;Ta=Ua;break}Yua(c);B=0;Ua=Ia(40,l|0,117845,11)|0;Va=B;B=0;do if(Va&1)Ha=283;else{B=0;Wa=Xa(245,Ua|0,k[a+44>>2]|0)|0;Ya=B;B=0;if(Ya&1){Ha=283;break}B=0;Ia(40,Wa|0,149177,1)|0;Wa=B;B=0;if(Wa&1){Ha=283;break}B=0;wa(510,m|0,Ka|0);Wa=B;B=0;if(Wa&1){Ha=283;break}B=0;ya(424,m|0)|0;Wa=B;B=0;if(Wa&1){Wa=Rb()|0;Ya=Q;Yua(m);Za=Ya;_a=Wa;break}Yua(m);k[l>>2]=27468;k[La>>2]=27488;k[Ka>>2]=27560;Yua(Qa);Ava(Ka);vva(La);Wa=n+56|0;Ya=n+4|0;k[n>>2]=27524;k[Wa>>2]=27544;B=0;wa(508,n+56|0,Ya|0);$a=B;B=0;if($a&1){$a=Rb()|0;ab=Q;bb=$a;vva(Wa);Qb(bb|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[Wa>>2]=27488;B=0;va(448,Ya|0);$a=B;B=0;do if($a&1){cb=Rb()|0;db=Q;eb=cb}else{k[Ya>>2]=27560;cb=n+36|0;k[cb>>2]=0;k[cb+4>>2]=0;k[cb+8>>2]=0;k[cb+12>>2]=0;k[n+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ya|0,c|0);fb=B;B=0;if(fb&1){fb=Rb()|0;gb=Q;Yua(c);Yua(cb);Ava(Ya);db=gb;eb=fb;break}Yua(c);B=0;fb=Ia(40,n|0,117857,14)|0;gb=B;B=0;do if(gb&1)Ha=286;else{B=0;hb=Xa(245,fb|0,k[a+48>>2]|0)|0;ib=B;B=0;if(ib&1){Ha=286;break}B=0;Ia(40,hb|0,149177,1)|0;hb=B;B=0;if(hb&1){Ha=286;break}B=0;wa(510,o|0,Ya|0);hb=B;B=0;if(hb&1){Ha=286;break}B=0;ya(424,o|0)|0;hb=B;B=0;if(hb&1){hb=Rb()|0;ib=Q;Yua(o);jb=ib;kb=hb;break}Yua(o);k[n>>2]=27468;k[Wa>>2]=27488;k[Ya>>2]=27560;Yua(cb);Ava(Ya);vva(Wa);hb=q+56|0;ib=q+4|0;k[q>>2]=27524;k[hb>>2]=27544;B=0;wa(508,q+56|0,ib|0);lb=B;B=0;if(lb&1){lb=Rb()|0;mb=Q;nb=lb;vva(hb);Qb(nb|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[hb>>2]=27488;B=0;va(448,ib|0);lb=B;B=0;do if(lb&1){ob=Rb()|0;pb=Q;qb=ob}else{k[ib>>2]=27560;ob=q+36|0;k[ob>>2]=0;k[ob+4>>2]=0;k[ob+8>>2]=0;k[ob+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ib|0,c|0);rb=B;B=0;if(rb&1){rb=Rb()|0;sb=Q;Yua(c);Yua(ob);Ava(ib);pb=sb;qb=rb;break}Yua(c);B=0;rb=Ia(40,q|0,117872,12)|0;sb=B;B=0;do if(sb&1)Ha=289;else{B=0;tb=Xa(245,rb|0,k[a+52>>2]|0)|0;ub=B;B=0;if(ub&1){Ha=289;break}B=0;Ia(40,tb|0,149177,1)|0;tb=B;B=0;if(tb&1){Ha=289;break}B=0;wa(510,s|0,ib|0);tb=B;B=0;if(tb&1){Ha=289;break}B=0;ya(424,s|0)|0;tb=B;B=0;if(tb&1){tb=Rb()|0;ub=Q;Yua(s);vb=ub;wb=tb;break}Yua(s);k[q>>2]=27468;k[hb>>2]=27488;k[ib>>2]=27560;Yua(ob);Ava(ib);vva(hb);tb=t+56|0;ub=t+4|0;k[t>>2]=27524;k[tb>>2]=27544;B=0;wa(508,t+56|0,ub|0);xb=B;B=0;if(xb&1){xb=Rb()|0;yb=Q;zb=xb;vva(tb);Qb(zb|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[tb>>2]=27488;B=0;va(448,ub|0);xb=B;B=0;do if(xb&1){Ab=Rb()|0;Bb=Q;Cb=Ab}else{k[ub>>2]=27560;Ab=t+36|0;k[Ab>>2]=0;k[Ab+4>>2]=0;k[Ab+8>>2]=0;k[Ab+12>>2]=0;k[t+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ub|0,c|0);Db=B;B=0;if(Db&1){Db=Rb()|0;Eb=Q;Yua(c);Yua(Ab);Ava(ub);Bb=Eb;Cb=Db;break}Yua(c);B=0;Db=Ia(40,t|0,144140,15)|0;Eb=B;B=0;do if(Eb&1)Ha=292;else{B=0;Fb=Xa(245,Db|0,k[a+124>>2]|0)|0;Gb=B;B=0;if(Gb&1){Ha=292;break}B=0;Ia(40,Fb|0,149177,1)|0;Fb=B;B=0;if(Fb&1){Ha=292;break}B=0;wa(510,u|0,ub|0);Fb=B;B=0;if(Fb&1){Ha=292;break}B=0;ya(424,u|0)|0;Fb=B;B=0;if(Fb&1){Fb=Rb()|0;Gb=Q;Yua(u);Hb=Gb;Ib=Fb;break}Yua(u);k[t>>2]=27468;k[tb>>2]=27488;k[ub>>2]=27560;Yua(Ab);Ava(ub);vva(tb);Fb=v+56|0;Gb=v+4|0;k[v>>2]=27524;k[Fb>>2]=27544;B=0;wa(508,v+56|0,Gb|0);Jb=B;B=0;if(Jb&1){Jb=Rb()|0;Kb=Q;Lb=Jb;vva(Fb);Qb(Lb|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[Fb>>2]=27488;B=0;va(448,Gb|0);Jb=B;B=0;do if(Jb&1){Mb=Rb()|0;Nb=Q;Ob=Mb}else{k[Gb>>2]=27560;Mb=v+36|0;k[Mb>>2]=0;k[Mb+4>>2]=0;k[Mb+8>>2]=0;k[Mb+12>>2]=0;k[v+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Gb|0,c|0);Pb=B;B=0;if(Pb&1){Pb=Rb()|0;Sb=Q;Yua(c);Yua(Mb);Ava(Gb);Nb=Sb;Ob=Pb;break}Yua(c);B=0;Ia(40,v|0,117885,25)|0;Pb=B;B=0;do if(Pb&1)Ha=295;else{B=0;wa(510,w|0,Gb|0);Sb=B;B=0;if(Sb&1){Ha=295;break}B=0;ya(424,w|0)|0;Sb=B;B=0;if(Sb&1){Sb=Rb()|0;Tb=Q;Yua(w);Ub=Tb;Vb=Sb;break}Yua(w);k[v>>2]=27468;k[Fb>>2]=27488;k[Gb>>2]=27560;Yua(Mb);Ava(Gb);vva(Fb);Sb=x+56|0;Tb=x+4|0;k[x>>2]=27524;k[Sb>>2]=27544;B=0;wa(508,x+56|0,Tb|0);Wb=B;B=0;if(Wb&1){Wb=Rb()|0;Xb=Q;Yb=Wb;vva(Sb);Qb(Yb|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[Sb>>2]=27488;B=0;va(448,Tb|0);Wb=B;B=0;do if(Wb&1){Zb=Rb()|0;_b=Q;$b=Zb}else{k[Tb>>2]=27560;Zb=x+36|0;k[Zb>>2]=0;k[Zb+4>>2]=0;k[Zb+8>>2]=0;k[Zb+12>>2]=0;k[x+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Tb|0,c|0);ac=B;B=0;if(ac&1){ac=Rb()|0;bc=Q;Yua(c);Yua(Zb);Ava(Tb);_b=bc;$b=ac;break}Yua(c);B=0;ac=Ia(40,x|0,117911,11)|0;bc=B;B=0;do if(bc&1)Ha=298;else{B=0;cc=Sa(1,ac|0,+(+p[a+88>>3]))|0;dc=B;B=0;if(dc&1){Ha=298;break}B=0;dc=Ia(40,cc|0,117923,1)|0;cc=B;B=0;if(cc&1){Ha=298;break}B=0;cc=Sa(1,dc|0,+(+p[a+96>>3]))|0;dc=B;B=0;if(dc&1){Ha=298;break}B=0;Ia(40,cc|0,149177,1)|0;cc=B;B=0;if(cc&1){Ha=298;break}B=0;wa(510,y|0,Tb|0);cc=B;B=0;if(cc&1){Ha=298;break}B=0;ya(424,y|0)|0;cc=B;B=0;if(cc&1){cc=Rb()|0;dc=Q;Yua(y);ec=dc;fc=cc;break}Yua(y);k[x>>2]=27468;k[Sb>>2]=27488;k[Tb>>2]=27560;Yua(Zb);Ava(Tb);vva(Sb);cc=z+56|0;dc=z+4|0;k[z>>2]=27524;k[cc>>2]=27544;B=0;wa(508,z+56|0,dc|0);gc=B;B=0;if(gc&1){gc=Rb()|0;hc=Q;ic=gc;vva(cc);Qb(ic|0)}k[z+128>>2]=0;k[z+132>>2]=-1;k[z>>2]=27468;k[cc>>2]=27488;B=0;va(448,dc|0);gc=B;B=0;do if(gc&1){jc=Rb()|0;kc=Q;lc=jc}else{k[dc>>2]=27560;jc=z+36|0;k[jc>>2]=0;k[jc+4>>2]=0;k[jc+8>>2]=0;k[jc+12>>2]=0;k[z+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,dc|0,c|0);mc=B;B=0;if(mc&1){mc=Rb()|0;nc=Q;Yua(c);Yua(jc);Ava(dc);kc=nc;lc=mc;break}Yua(c);B=0;mc=Ia(40,z|0,117925,11)|0;nc=B;B=0;do if(nc&1)Ha=301;else{B=0;oc=Sa(1,mc|0,+(+p[a+104>>3]))|0;pc=B;B=0;if(pc&1){Ha=301;break}B=0;Ia(40,oc|0,149177,1)|0;oc=B;B=0;if(oc&1){Ha=301;break}B=0;wa(510,A|0,dc|0);oc=B;B=0;if(oc&1){Ha=301;break}B=0;ya(424,A|0)|0;oc=B;B=0;if(oc&1){oc=Rb()|0;pc=Q;Yua(A);qc=pc;rc=oc;break}Yua(A);k[z>>2]=27468;k[cc>>2]=27488;k[dc>>2]=27560;Yua(jc);Ava(dc);vva(cc);oc=C+56|0;pc=C+4|0;k[C>>2]=27524;k[oc>>2]=27544;B=0;wa(508,C+56|0,pc|0);sc=B;B=0;if(sc&1){sc=Rb()|0;tc=Q;uc=sc;vva(oc);Qb(uc|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[oc>>2]=27488;B=0;va(448,pc|0);sc=B;B=0;do if(sc&1){vc=Rb()|0;wc=Q;xc=vc}else{k[pc>>2]=27560;vc=C+36|0;k[vc>>2]=0;k[vc+4>>2]=0;k[vc+8>>2]=0;k[vc+12>>2]=0;k[C+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,pc|0,c|0);yc=B;B=0;if(yc&1){yc=Rb()|0;zc=Q;Yua(c);Yua(vc);Ava(pc);wc=zc;xc=yc;break}Yua(c);B=0;yc=Ia(40,C|0,117937,17)|0;zc=B;B=0;do if(zc&1)Ha=304;else{B=0;Ac=Xa(242,yc|0,k[a+68>>2]|0)|0;Bc=B;B=0;if(Bc&1){Ha=304;break}B=0;Ia(40,Ac|0,149177,1)|0;Ac=B;B=0;if(Ac&1){Ha=304;break}B=0;wa(510,D|0,pc|0);Ac=B;B=0;if(Ac&1){Ha=304;break}B=0;ya(424,D|0)|0;Ac=B;B=0;if(Ac&1){Ac=Rb()|0;Bc=Q;Yua(D);Cc=Bc;Dc=Ac;break}Yua(D);k[C>>2]=27468;k[oc>>2]=27488;k[pc>>2]=27560;Yua(vc);Ava(pc);vva(oc);Ac=E+56|0;Bc=E+4|0;k[E>>2]=27524;k[Ac>>2]=27544;B=0;wa(508,E+56|0,Bc|0);Ec=B;B=0;if(Ec&1){Ec=Rb()|0;Fc=Q;Gc=Ec;vva(Ac);Qb(Gc|0)}k[E+128>>2]=0;k[E+132>>2]=-1;k[E>>2]=27468;k[Ac>>2]=27488;B=0;va(448,Bc|0);Ec=B;B=0;do if(Ec&1){Hc=Rb()|0;Ic=Q;Jc=Hc}else{k[Bc>>2]=27560;Hc=E+36|0;k[Hc>>2]=0;k[Hc+4>>2]=0;k[Hc+8>>2]=0;k[Hc+12>>2]=0;k[E+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Bc|0,c|0);Kc=B;B=0;if(Kc&1){Kc=Rb()|0;Lc=Q;Yua(c);Yua(Hc);Ava(Bc);Ic=Lc;Jc=Kc;break}Yua(c);B=0;Kc=Ia(40,E|0,142516,11)|0;Lc=B;B=0;do if(Lc&1)Ha=307;else{Mc=(i[a+72>>0]|0)!=0;B=0;Nc=Ia(40,Kc|0,(Mc?159247:159252)|0,(Mc?4:5)|0)|0;Mc=B;B=0;if(Mc&1){Ha=307;break}B=0;Ia(40,Nc|0,149177,1)|0;Nc=B;B=0;if(Nc&1){Ha=307;break}B=0;wa(510,F|0,Bc|0);Nc=B;B=0;if(Nc&1){Ha=307;break}B=0;ya(424,F|0)|0;Nc=B;B=0;if(Nc&1){Nc=Rb()|0;Mc=Q;Yua(F);Oc=Mc;Pc=Nc;break}Yua(F);k[E>>2]=27468;k[Ac>>2]=27488;k[Bc>>2]=27560;Yua(Hc);Ava(Bc);vva(Ac);Nc=G+56|0;Mc=G+4|0;k[G>>2]=27524;k[Nc>>2]=27544;B=0;wa(508,G+56|0,Mc|0);Qc=B;B=0;if(Qc&1){Qc=Rb()|0;Rc=Q;Sc=Qc;vva(Nc);Qb(Sc|0)}k[G+128>>2]=0;k[G+132>>2]=-1;k[G>>2]=27468;k[Nc>>2]=27488;B=0;va(448,Mc|0);Qc=B;B=0;do if(Qc&1){Tc=Rb()|0;Uc=Q;Vc=Tc}else{k[Mc>>2]=27560;Tc=G+36|0;k[Tc>>2]=0;k[Tc+4>>2]=0;k[Tc+8>>2]=0;k[Tc+12>>2]=0;k[G+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Mc|0,c|0);Wc=B;B=0;if(Wc&1){Wc=Rb()|0;Xc=Q;Yua(c);Yua(Tc);Ava(Mc);Uc=Xc;Vc=Wc;break}Yua(c);B=0;Wc=Ia(40,G|0,117955,12)|0;Xc=B;B=0;do if(Xc&1)Ha=310;else{B=0;Yc=Xa(242,Wc|0,k[a+76>>2]|0)|0;Zc=B;B=0;if(Zc&1){Ha=310;break}B=0;Ia(40,Yc|0,149177,1)|0;Yc=B;B=0;if(Yc&1){Ha=310;break}B=0;wa(510,H|0,Mc|0);Yc=B;B=0;if(Yc&1){Ha=310;break}B=0;ya(424,H|0)|0;Yc=B;B=0;if(Yc&1){Yc=Rb()|0;Zc=Q;Yua(H);_c=Zc;$c=Yc;break}Yua(H);k[G>>2]=27468;k[Nc>>2]=27488;k[Mc>>2]=27560;Yua(Tc);Ava(Mc);vva(Nc);Yc=I+56|0;Zc=I+4|0;k[I>>2]=27524;k[Yc>>2]=27544;B=0;wa(508,I+56|0,Zc|0);ad=B;B=0;if(ad&1){ad=Rb()|0;bd=Q;cd=ad;vva(Yc);Qb(cd|0)}k[I+128>>2]=0;k[I+132>>2]=-1;k[I>>2]=27468;k[Yc>>2]=27488;B=0;va(448,Zc|0);ad=B;B=0;do if(ad&1){dd=Rb()|0;ed=Q;fd=dd}else{k[Zc>>2]=27560;dd=I+36|0;k[dd>>2]=0;k[dd+4>>2]=0;k[dd+8>>2]=0;k[dd+12>>2]=0;k[I+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Zc|0,c|0);gd=B;B=0;if(gd&1){gd=Rb()|0;hd=Q;Yua(c);Yua(dd);Ava(Zc);ed=hd;fd=gd;break}Yua(c);B=0;gd=Ia(40,I|0,117968,14)|0;hd=B;B=0;do if(hd&1)Ha=313;else{id=(i[a+80>>0]|0)!=0;B=0;jd=Ia(40,gd|0,(id?159247:159252)|0,(id?4:5)|0)|0;id=B;B=0;if(id&1){Ha=313;break}B=0;Ia(40,jd|0,149177,1)|0;jd=B;B=0;if(jd&1){Ha=313;break}B=0;wa(510,J|0,Zc|0);jd=B;B=0;if(jd&1){Ha=313;break}B=0;ya(424,J|0)|0;jd=B;B=0;if(jd&1){jd=Rb()|0;id=Q;Yua(J);kd=id;ld=jd;break}Yua(J);k[I>>2]=27468;k[Yc>>2]=27488;k[Zc>>2]=27560;Yua(dd);Ava(Zc);vva(Yc);jd=K+56|0;id=K+4|0;k[K>>2]=27524;k[jd>>2]=27544;B=0;wa(508,K+56|0,id|0);md=B;B=0;if(md&1){md=Rb()|0;nd=Q;od=md;vva(jd);Qb(od|0)}k[K+128>>2]=0;k[K+132>>2]=-1;k[K>>2]=27468;k[jd>>2]=27488;B=0;va(448,id|0);md=B;B=0;do if(md&1){pd=Rb()|0;qd=Q;rd=pd}else{k[id>>2]=27560;pd=K+36|0;k[pd>>2]=0;k[pd+4>>2]=0;k[pd+8>>2]=0;k[pd+12>>2]=0;k[K+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,id|0,c|0);sd=B;B=0;if(sd&1){sd=Rb()|0;td=Q;Yua(c);Yua(pd);Ava(id);qd=td;rd=sd;break}Yua(c);B=0;sd=Ia(40,K|0,117983,23)|0;td=B;B=0;do if(td&1)Ha=316;else{ud=(i[a+81>>0]|0)!=0;B=0;vd=Ia(40,sd|0,(ud?159247:159252)|0,(ud?4:5)|0)|0;ud=B;B=0;if(ud&1){Ha=316;break}B=0;Ia(40,vd|0,149177,1)|0;vd=B;B=0;if(vd&1){Ha=316;break}B=0;wa(510,L|0,id|0);vd=B;B=0;if(vd&1){Ha=316;break}B=0;ya(424,L|0)|0;vd=B;B=0;if(vd&1){vd=Rb()|0;ud=Q;Yua(L);wd=ud;xd=vd;break}Yua(L);k[K>>2]=27468;k[jd>>2]=27488;k[id>>2]=27560;Yua(pd);Ava(id);vva(jd);vd=M+56|0;ud=M+4|0;k[M>>2]=27524;k[vd>>2]=27544;B=0;wa(508,M+56|0,ud|0);yd=B;B=0;if(yd&1){yd=Rb()|0;zd=Q;Ad=yd;vva(vd);Qb(Ad|0)}k[M+128>>2]=0;k[M+132>>2]=-1;k[M>>2]=27468;k[vd>>2]=27488;B=0;va(448,ud|0);yd=B;B=0;do if(yd&1){Bd=Rb()|0;Cd=Q;Dd=Bd}else{k[ud>>2]=27560;Bd=M+36|0;k[Bd>>2]=0;k[Bd+4>>2]=0;k[Bd+8>>2]=0;k[Bd+12>>2]=0;k[M+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ud|0,c|0);Ed=B;B=0;if(Ed&1){Ed=Rb()|0;Fd=Q;Yua(c);Yua(Bd);Ava(ud);Cd=Fd;Dd=Ed;break}Yua(c);B=0;Ed=Ia(40,M|0,118007,9)|0;Fd=B;B=0;do if(Fd&1)Ha=319;else{B=0;Gd=Xa(242,Ed|0,k[a+20>>2]|0)|0;Hd=B;B=0;if(Hd&1){Ha=319;break}B=0;Ia(40,Gd|0,149177,1)|0;Gd=B;B=0;if(Gd&1){Ha=319;break}B=0;wa(510,N|0,ud|0);Gd=B;B=0;if(Gd&1){Ha=319;break}B=0;ya(424,N|0)|0;Gd=B;B=0;if(Gd&1){Gd=Rb()|0;Hd=Q;Yua(N);Id=Hd;Jd=Gd;break}Yua(N);k[M>>2]=27468;k[vd>>2]=27488;k[ud>>2]=27560;Yua(Bd);Ava(ud);vva(vd);Gd=O+56|0;Hd=O+4|0;k[O>>2]=27524;k[Gd>>2]=27544;B=0;wa(508,O+56|0,Hd|0);Kd=B;B=0;if(Kd&1){Kd=Rb()|0;Ld=Q;Md=Kd;vva(Gd);Qb(Md|0)}k[O+128>>2]=0;k[O+132>>2]=-1;k[O>>2]=27468;k[Gd>>2]=27488;B=0;va(448,Hd|0);Kd=B;B=0;do if(Kd&1){Nd=Rb()|0;Od=Q;Pd=Nd}else{k[Hd>>2]=27560;Nd=O+36|0;k[Nd>>2]=0;k[Nd+4>>2]=0;k[Nd+8>>2]=0;k[Nd+12>>2]=0;k[O+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Hd|0,c|0);Qd=B;B=0;if(Qd&1){Qd=Rb()|0;Rd=Q;Yua(c);Yua(Nd);Ava(Hd);Od=Rd;Pd=Qd;break}Yua(c);B=0;Qd=Ia(40,O|0,118017,13)|0;Rd=B;B=0;do if(Rd&1)Ha=322;else{B=0;Sd=Sa(1,Qd|0,+(+p[a+24>>3]))|0;Td=B;B=0;if(Td&1){Ha=322;break}B=0;Ia(40,Sd|0,149177,1)|0;Sd=B;B=0;if(Sd&1){Ha=322;break}B=0;wa(510,P|0,Hd|0);Sd=B;B=0;if(Sd&1){Ha=322;break}B=0;ya(424,P|0)|0;Sd=B;B=0;if(Sd&1){Sd=Rb()|0;Td=Q;Yua(P);Ud=Td;Vd=Sd;break}Yua(P);k[O>>2]=27468;k[Gd>>2]=27488;k[Hd>>2]=27560;Yua(Nd);Ava(Hd);vva(Gd);Sd=R+56|0;Td=R+4|0;k[R>>2]=27524;k[Sd>>2]=27544;B=0;wa(508,R+56|0,Td|0);Wd=B;B=0;if(Wd&1){Wd=Rb()|0;Xd=Q;Yd=Wd;vva(Sd);Qb(Yd|0)}k[R+128>>2]=0;k[R+132>>2]=-1;k[R>>2]=27468;k[Sd>>2]=27488;B=0;va(448,Td|0);Wd=B;B=0;do if(Wd&1){Zd=Rb()|0;_d=Q;$d=Zd}else{k[Td>>2]=27560;Zd=R+36|0;k[Zd>>2]=0;k[Zd+4>>2]=0;k[Zd+8>>2]=0;k[Zd+12>>2]=0;k[R+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Td|0,c|0);ae=B;B=0;if(ae&1){ae=Rb()|0;be=Q;Yua(c);Yua(Zd);Ava(Td);_d=be;$d=ae;break}Yua(c);B=0;ae=Ia(40,R|0,118031,13)|0;be=B;B=0;do if(be&1)Ha=325;else{B=0;ce=Sa(1,ae|0,+(+p[a+112>>3]))|0;de=B;B=0;if(de&1){Ha=325;break}B=0;Ia(40,ce|0,149177,1)|0;ce=B;B=0;if(ce&1){Ha=325;break}B=0;wa(510,S|0,Td|0);ce=B;B=0;if(ce&1){Ha=325;break}B=0;ya(424,S|0)|0;ce=B;B=0;if(ce&1){ce=Rb()|0;de=Q;Yua(S);ee=de;fe=ce;break}Yua(S);k[R>>2]=27468;k[Sd>>2]=27488;k[Td>>2]=27560;Yua(Zd);Ava(Td);vva(Sd);ce=T+56|0;de=T+4|0;k[T>>2]=27524;k[ce>>2]=27544;B=0;wa(508,T+56|0,de|0);ge=B;B=0;if(ge&1){ge=Rb()|0;he=Q;ie=ge;vva(ce);Qb(ie|0)}k[T+128>>2]=0;k[T+132>>2]=-1;k[T>>2]=27468;k[ce>>2]=27488;B=0;va(448,de|0);ge=B;B=0;do if(ge&1){je=Rb()|0;ke=Q;le=je}else{k[de>>2]=27560;je=T+36|0;k[je>>2]=0;k[je+4>>2]=0;k[je+8>>2]=0;k[je+12>>2]=0;k[T+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,de|0,c|0);me=B;B=0;if(me&1){me=Rb()|0;ne=Q;Yua(c);Yua(je);Ava(de);ke=ne;le=me;break}Yua(c);B=0;me=Ia(40,T|0,118045,22)|0;ne=B;B=0;do if(ne&1)Ha=328;else{B=0;oe=Sa(1,me|0,+(+p[a+32>>3]))|0;pe=B;B=0;if(pe&1){Ha=328;break}B=0;Ia(40,oe|0,149177,1)|0;oe=B;B=0;if(oe&1){Ha=328;break}B=0;wa(510,U|0,de|0);oe=B;B=0;if(oe&1){Ha=328;break}B=0;ya(424,U|0)|0;oe=B;B=0;if(oe&1){oe=Rb()|0;pe=Q;Yua(U);qe=pe;re=oe;break}Yua(U);k[T>>2]=27468;k[ce>>2]=27488;k[de>>2]=27560;Yua(je);Ava(de);vva(ce);oe=V+56|0;pe=V+4|0;k[V>>2]=27524;k[oe>>2]=27544;B=0;wa(508,V+56|0,pe|0);se=B;B=0;if(se&1){se=Rb()|0;te=Q;ue=se;vva(oe);Qb(ue|0)}k[V+128>>2]=0;k[V+132>>2]=-1;k[V>>2]=27468;k[oe>>2]=27488;B=0;va(448,pe|0);se=B;B=0;do if(se&1){ve=Rb()|0;we=Q;xe=ve}else{k[pe>>2]=27560;ve=V+36|0;k[ve>>2]=0;k[ve+4>>2]=0;k[ve+8>>2]=0;k[ve+12>>2]=0;k[V+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,pe|0,c|0);ye=B;B=0;if(ye&1){ye=Rb()|0;ze=Q;Yua(c);Yua(ve);Ava(pe);we=ze;xe=ye;break}Yua(c);B=0;ye=Ia(40,V|0,118068,10)|0;ze=B;B=0;do if(ze&1)Ha=331;else{B=0;Ae=Xa(242,ye|0,k[a+120>>2]|0)|0;Be=B;B=0;if(Be&1){Ha=331;break}B=0;Ia(40,Ae|0,149177,1)|0;Ae=B;B=0;if(Ae&1){Ha=331;break}B=0;wa(510,W|0,pe|0);Ae=B;B=0;if(Ae&1){Ha=331;break}B=0;ya(424,W|0)|0;Ae=B;B=0;if(Ae&1){Ae=Rb()|0;Be=Q;Yua(W);Ce=Be;De=Ae;break}Yua(W);k[V>>2]=27468;k[oe>>2]=27488;k[pe>>2]=27560;Yua(ve);Ava(pe);vva(oe);Ae=X+56|0;Be=X+4|0;k[X>>2]=27524;k[Ae>>2]=27544;B=0;wa(508,X+56|0,Be|0);Ee=B;B=0;if(Ee&1){Ee=Rb()|0;Fe=Q;Ge=Ee;vva(Ae);Qb(Ge|0)}k[X+128>>2]=0;k[X+132>>2]=-1;k[X>>2]=27468;k[Ae>>2]=27488;B=0;va(448,Be|0);Ee=B;B=0;do if(Ee&1){He=Rb()|0;Ie=Q;Je=He}else{k[Be>>2]=27560;He=X+36|0;k[He>>2]=0;k[He+4>>2]=0;k[He+8>>2]=0;k[He+12>>2]=0;k[X+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Be|0,c|0);Ke=B;B=0;if(Ke&1){Ke=Rb()|0;Le=Q;Yua(c);Yua(He);Ava(Be);Ie=Le;Je=Ke;break}Yua(c);B=0;Ke=Ia(40,X|0,118079,11)|0;Le=B;B=0;do if(!(Le&1)){Me=(i[a+73>>0]|0)!=0;B=0;Ne=Ia(40,Ke|0,(Me?159247:159252)|0,(Me?4:5)|0)|0;Me=B;B=0;if(Me&1){Ha=334;break}B=0;Ia(40,Ne|0,149177,1)|0;Ne=B;B=0;if(Ne&1){Ha=334;break}B=0;wa(510,Y|0,Be|0);Ne=B;B=0;if(Ne&1){Ha=334;break}B=0;ya(424,Y|0)|0;Ne=B;B=0;if(Ne&1){Ne=Rb()|0;Me=Q;Yua(Y);Oe=Me;Pe=Ne;break}else{Yua(Y);k[X>>2]=27468;k[Ae>>2]=27488;k[Be>>2]=27560;Yua(He);Ava(Be);vva(Ae);r=b;return}}else Ha=334;while(0);if((Ha|0)==334){Ke=Rb()|0;Oe=Q;Pe=Ke}k[X>>2]=27468;k[Ae>>2]=27488;k[Be>>2]=27560;Yua(He);Ava(Be);vva(Ae);Qe=Oe;Re=Pe;Qb(Re|0)}while(0);Fe=Ie;Ge=Je;vva(Ae);Qb(Ge|0)}while(0);if((Ha|0)==331){ye=Rb()|0;Ce=Q;De=ye}k[V>>2]=27468;k[oe>>2]=27488;k[pe>>2]=27560;Yua(ve);Ava(pe);vva(oe);Qe=Ce;Re=De;Qb(Re|0)}while(0);te=we;ue=xe;vva(oe);Qb(ue|0)}while(0);if((Ha|0)==328){me=Rb()|0;qe=Q;re=me}k[T>>2]=27468;k[ce>>2]=27488;k[de>>2]=27560;Yua(je);Ava(de);vva(ce);Qe=qe;Re=re;Qb(Re|0)}while(0);he=ke;ie=le;vva(ce);Qb(ie|0)}while(0);if((Ha|0)==325){ae=Rb()|0;ee=Q;fe=ae}k[R>>2]=27468;k[Sd>>2]=27488;k[Td>>2]=27560;Yua(Zd);Ava(Td);vva(Sd);Qe=ee;Re=fe;Qb(Re|0)}while(0);Xd=_d;Yd=$d;vva(Sd);Qb(Yd|0)}while(0);if((Ha|0)==322){Qd=Rb()|0;Ud=Q;Vd=Qd}k[O>>2]=27468;k[Gd>>2]=27488;k[Hd>>2]=27560;Yua(Nd);Ava(Hd);vva(Gd);Qe=Ud;Re=Vd;Qb(Re|0)}while(0);Ld=Od;Md=Pd;vva(Gd);Qb(Md|0)}while(0);if((Ha|0)==319){Ed=Rb()|0;Id=Q;Jd=Ed}k[M>>2]=27468;k[vd>>2]=27488;k[ud>>2]=27560;Yua(Bd);Ava(ud);vva(vd);Qe=Id;Re=Jd;Qb(Re|0)}while(0);zd=Cd;Ad=Dd;vva(vd);Qb(Ad|0)}while(0);if((Ha|0)==316){sd=Rb()|0;wd=Q;xd=sd}k[K>>2]=27468;k[jd>>2]=27488;k[id>>2]=27560;Yua(pd);Ava(id);vva(jd);Qe=wd;Re=xd;Qb(Re|0)}while(0);nd=qd;od=rd;vva(jd);Qb(od|0)}while(0);if((Ha|0)==313){gd=Rb()|0;kd=Q;ld=gd}k[I>>2]=27468;k[Yc>>2]=27488;k[Zc>>2]=27560;Yua(dd);Ava(Zc);vva(Yc);Qe=kd;Re=ld;Qb(Re|0)}while(0);bd=ed;cd=fd;vva(Yc);Qb(cd|0)}while(0);if((Ha|0)==310){Wc=Rb()|0;_c=Q;$c=Wc}k[G>>2]=27468;k[Nc>>2]=27488;k[Mc>>2]=27560;Yua(Tc);Ava(Mc);vva(Nc);Qe=_c;Re=$c;Qb(Re|0)}while(0);Rc=Uc;Sc=Vc;vva(Nc);Qb(Sc|0)}while(0);if((Ha|0)==307){Kc=Rb()|0;Oc=Q;Pc=Kc}k[E>>2]=27468;k[Ac>>2]=27488;k[Bc>>2]=27560;Yua(Hc);Ava(Bc);vva(Ac);Qe=Oc;Re=Pc;Qb(Re|0)}while(0);Fc=Ic;Gc=Jc;vva(Ac);Qb(Gc|0)}while(0);if((Ha|0)==304){yc=Rb()|0;Cc=Q;Dc=yc}k[C>>2]=27468;k[oc>>2]=27488;k[pc>>2]=27560;Yua(vc);Ava(pc);vva(oc);Qe=Cc;Re=Dc;Qb(Re|0)}while(0);tc=wc;uc=xc;vva(oc);Qb(uc|0)}while(0);if((Ha|0)==301){mc=Rb()|0;qc=Q;rc=mc}k[z>>2]=27468;k[cc>>2]=27488;k[dc>>2]=27560;Yua(jc);Ava(dc);vva(cc);Qe=qc;Re=rc;Qb(Re|0)}while(0);hc=kc;ic=lc;vva(cc);Qb(ic|0)}while(0);if((Ha|0)==298){ac=Rb()|0;ec=Q;fc=ac}k[x>>2]=27468;k[Sb>>2]=27488;k[Tb>>2]=27560;Yua(Zb);Ava(Tb);vva(Sb);Qe=ec;Re=fc;Qb(Re|0)}while(0);Xb=_b;Yb=$b;vva(Sb);Qb(Yb|0)}while(0);if((Ha|0)==295){Pb=Rb()|0;Ub=Q;Vb=Pb}k[v>>2]=27468;k[Fb>>2]=27488;k[Gb>>2]=27560;Yua(Mb);Ava(Gb);vva(Fb);Qe=Ub;Re=Vb;Qb(Re|0)}while(0);Kb=Nb;Lb=Ob;vva(Fb);Qb(Lb|0)}while(0);if((Ha|0)==292){Db=Rb()|0;Hb=Q;Ib=Db}k[t>>2]=27468;k[tb>>2]=27488;k[ub>>2]=27560;Yua(Ab);Ava(ub);vva(tb);Qe=Hb;Re=Ib;Qb(Re|0)}while(0);yb=Bb;zb=Cb;vva(tb);Qb(zb|0)}while(0);if((Ha|0)==289){rb=Rb()|0;vb=Q;wb=rb}k[q>>2]=27468;k[hb>>2]=27488;k[ib>>2]=27560;Yua(ob);Ava(ib);vva(hb);Qe=vb;Re=wb;Qb(Re|0)}while(0);mb=pb;nb=qb;vva(hb);Qb(nb|0)}while(0);if((Ha|0)==286){fb=Rb()|0;jb=Q;kb=fb}k[n>>2]=27468;k[Wa>>2]=27488;k[Ya>>2]=27560;Yua(cb);Ava(Ya);vva(Wa);Qe=jb;Re=kb;Qb(Re|0)}while(0);ab=db;bb=eb;vva(Wa);Qb(bb|0)}while(0);if((Ha|0)==283){Ua=Rb()|0;Za=Q;_a=Ua}k[l>>2]=27468;k[La>>2]=27488;k[Ka>>2]=27560;Yua(Qa);Ava(Ka);vva(La);Qe=Za;Re=_a;Qb(Re|0)}while(0);Oa=Ra;Pa=Ta;vva(La);Qb(Pa|0)}while(0);if((Ha|0)==280){Fa=Rb()|0;Ma=Q;Na=Fa}k[h>>2]=27468;k[sa>>2]=27488;k[ta>>2]=27560;Yua(Ca);Ava(ta);vva(sa);Qe=Ma;Re=Na;Qb(Re|0)}while(0);Aa=Da;Ba=Ea;vva(sa);Qb(Ba|0)}else Ha=277;while(0);if((Ha|0)==277){qa=Rb()|0;ua=Q;xa=qa}k[f>>2]=27468;k[ga>>2]=27488;k[ha>>2]=27560;Yua(na);Ava(ha);vva(ga);Qe=ua;Re=xa;Qb(Re|0)}while(0);la=oa;ma=pa;vva(ga);Qb(ma|0)}else Ha=274;while(0);if((Ha|0)==274){fa=Rb()|0;ia=Q;ja=fa}k[d>>2]=27468;k[Z>>2]=27488;k[_>>2]=27560;Yua(ca);Ava(_);vva(Z);Qe=ia;Re=ja;Qb(Re|0)}while(0);aa=da;ba=ea;vva(Z);Qb(ba|0)}function E0(a){a=a|0;return k[a+8>>2]|0}function F0(a){a=a|0;return 610}function G0(a,b,c){a=a|0;b=b|0;c=c|0;return}function H0(a,b,c){a=a|0;b=b|0;c=c|0;return}function I0(a,b,c){a=a|0;b=+b;c=c|0;return}function J0(a,b,c){a=a|0;b=+b;c=c|0;return}function K0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function L0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function M0(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;e=a+44|0;Ela(k[e>>2]|0,d);d=a+48|0;Ela(k[d>>2]|0,b);b=a+52|0;Ela(k[b>>2]|0,f);f=Gla(k[e>>2]|0)|0;k[a+60>>2]=f;f=Gla(k[d>>2]|0)|0;k[a+64>>2]=f;f=Fla(k[b>>2]|0)|0;k[a+56>>2]=f;k[a+124>>2]=g;return}function N0(a,b,c){a=a|0;b=b|0;c=c|0;return}function O0(a,b){a=a|0;b=b|0;return}function P0(a,b){a=a|0;b=b|0;var c=0;c=a+60|0;a=Rn(k[k[c>>2]>>2]|0)|0;k[b>>2]=a;a=Rn(k[(k[c>>2]|0)+4>>2]|0)|0;k[b+4>>2]=a;return}function Q0(a,b){a=a|0;b=b|0;var c=0;c=a+60|0;a=Qn(k[k[c>>2]>>2]|0)|0;k[b>>2]=a;a=Qn(k[(k[c>>2]|0)+4>>2]|0)|0;k[b+4>>2]=a;return}function R0(a){a=a|0;return 2}function S0(a,b){a=a|0;b=b|0;return (k[a+12>>2]|0)==(b|0)|0}function T0(a){a=a|0;return 1}function U0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0;e=r;r=r+192|0;f=e+180|0;g=e+176|0;h=e+40|0;i=e+24|0;j=e+12|0;l=e;cO(k[a+124>>2]|0,g,477);switch(k[g>>2]|0){case 497:{m=V0(a,d)|0;break}case 481:{m=V0(a,d)|0;break}default:{a=h+56|0;n=h+4|0;k[h>>2]=27524;k[a>>2]=27544;B=0;wa(508,h+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;q=o;vva(a);Qb(q|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[a>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){s=Rb()|0;t=Q;u=s}else{k[n>>2]=27560;s=h+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[h+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,n|0,f|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;Yua(f);Yua(s);Ava(n);t=w;u=v;break}Yua(f);B=0;v=Ia(40,h|0,144156,9)|0;w=B;B=0;if((((((!(w&1)?(B=0,w=Xa(242,v|0,k[g>>2]|0)|0,v=B,B=0,!(v&1)):0)?(B=0,v=Ia(40,w|0,144166,2)|0,w=B,B=0,!(w&1)):0)?(B=0,w=ya(427,k[g>>2]|0)|0,x=B,B=0,!(x&1)):0)?(x=Lta(w)|0,B=0,y=Ia(40,v|0,w|0,x|0)|0,x=B,B=0,!(x&1)):0)?(B=0,x=Ia(40,y|0,144169,19)|0,y=B,B=0,!(y&1)):0)?(B=0,Xa(239,x|0,0)|0,x=B,B=0,!(x&1)):0){x=Ab(20)|0;B=0;eb(502,i|0,117758,74);y=B;B=0;do if(!(y&1)){B=0;eb(502,j|0,118091,20);w=B;B=0;if(w&1){w=Rb()|0;v=Q;Yua(i);z=v;A=w;break}B=0;wa(510,l|0,n|0);w=B;B=0;if(w&1){w=Rb()|0;C=Q;D=w;E=1}else{B=0;ua(163,x|0,i|0,j|0,334,l|0);w=B;B=0;if(w&1)F=1;else{B=0;eb(503,x|0,1240,229);B=0;F=0}w=Rb()|0;v=Q;Yua(l);C=v;D=w;E=F}Yua(j);Yua(i);if(E){z=C;A=D}else{G=C;H=D;k[h>>2]=27468;k[a>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(a);Qb(H|0)}}else{w=Rb()|0;z=Q;A=w}while(0);zb(x|0);G=z;H=A;k[h>>2]=27468;k[a>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(a);Qb(H|0)}y=Rb()|0;G=Q;H=y;k[h>>2]=27468;k[a>>2]=27488;k[n>>2]=27560;Yua(s);Ava(n);vva(a);Qb(H|0)}while(0);p=t;q=u;vva(a);Qb(q|0)}}if(!m){r=e;return}IN(m,b,c);HN(m);Sqa(m);r=e;return}function V0(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0.0,W=0.0,X=0.0,Y=0,Z=0,_=0,$=0,aa=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0;c=r;r=r+400|0;d=c+376|0;e=c+8|0;f=c;g=c+240|0;h=c+224|0;j=c+72|0;l=c+60|0;m=c+88|0;n=c+48|0;o=c+36|0;q=c+24|0;s=a+64|0;t=k[k[s>>2]>>2]|0;if((Hc[k[(k[t>>2]|0)+20>>2]&511](t)|0)!=621){t=g+56|0;u=g+4|0;k[g>>2]=27524;k[t>>2]=27544;B=0;wa(508,g+56|0,u|0);v=B;B=0;if(v&1){v=Rb()|0;w=Q;x=v;vva(t);Qb(x|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[t>>2]=27488;B=0;va(448,u|0);v=B;B=0;do if(v&1){y=Rb()|0;z=Q;A=y}else{k[u>>2]=27560;y=g+36|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[g+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,u|0,d|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(d);Yua(y);Ava(u);z=D;A=C;break}Yua(d);B=0;C=Ia(40,g|0,118112,45)|0;D=B;B=0;a:do if(!(D&1)?(B=0,Xa(239,C|0,0)|0,E=B,B=0,!(E&1)):0){E=Ab(20)|0;B=0;eb(502,h|0,117758,74);F=B;B=0;do if(!(F&1)){B=0;eb(502,j|0,118158,38);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(h);I=G;J=H;break}B=0;wa(510,l|0,u|0);H=B;B=0;if(H&1){H=Rb()|0;K=H;L=Q;M=1}else{B=0;ua(163,E|0,h|0,j|0,455,l|0);H=B;B=0;if(H&1)N=1;else{B=0;eb(503,E|0,1240,229);B=0;N=0}H=Rb()|0;G=Q;Yua(l);K=H;L=G;M=N}Yua(j);Yua(h);if(M){I=K;J=L}else{O=K;P=L;break a}}else{G=Rb()|0;I=G;J=Q}while(0);zb(E|0);O=I;P=J}else R=17;while(0);if((R|0)==17){C=Rb()|0;O=C;P=Q}k[g>>2]=27468;k[t>>2]=27488;k[u>>2]=27560;Yua(y);Ava(u);vva(t);S=P;T=O;Qb(T|0)}while(0);w=z;x=A;vva(t);Qb(x|0)}x=k[s>>2]|0;s=k[x>>2]|0;t=k[x+4>>2]|0;if(!(i[a+72>>0]|0)){U=0;r=c;return U|0}x=Qqa(68)|0;A=a+60|0;z=a+124|0;B=0;ua(165,x|0,k[A>>2]|0,2,k[z>>2]|0,534);w=B;B=0;if(w&1){w=Rb()|0;O=Q;Sqa(x);S=O;T=w;Qb(T|0)}dO(k[z>>2]|0,f,73);rd[k[(k[s>>2]|0)+144>>2]&511](s,e,k[k[A>>2]>>2]|0,353);s=e+8|0;rd[k[(k[t>>2]|0)+144>>2]&511](t,s,k[(k[A>>2]|0)+4>>2]|0,353);V=+p[e>>3];if(!(V!=+p[s>>3])){s=a+88|0;W=+p[s>>3];X=W*W*b*+ba(10.0,+(+p[f>>3]));e=x+12|0;A=k[e>>2]|0;p[A>>3]=X+ +p[A>>3];t=a+96|0;X=+p[s>>3]*+p[t>>3]*b*+ba(10.0,+(+p[f>>3]));z=A+8|0;p[z>>3]=X+ +p[z>>3];X=+p[s>>3];W=X*X*b*+ba(10.0,+(+p[f>>3]));z=A+16|0;p[z>>3]=+p[z>>3]-W;W=+p[s>>3]*+p[t>>3]*b*+ba(10.0,+(+p[f>>3]));z=A+24|0;p[z>>3]=+p[z>>3]-W;W=+p[s>>3]*+p[t>>3]*b*+ba(10.0,+(+p[f>>3]));z=A+32|0;p[z>>3]=W+ +p[z>>3];W=+p[t>>3];X=W*W*b*+ba(10.0,+(+p[f>>3]));z=A+40|0;p[z>>3]=X+ +p[z>>3];X=+p[s>>3]*+p[t>>3]*b*+ba(10.0,+(+p[f>>3]));z=A+48|0;p[z>>3]=+p[z>>3]-X;X=+p[t>>3];W=X*X*b*+ba(10.0,+(+p[f>>3]));z=A+56|0;p[z>>3]=+p[z>>3]-W;W=+p[s>>3];X=W*W*b*+ba(10.0,+(+p[f>>3]));z=A+64|0;p[z>>3]=+p[z>>3]-X;X=+p[s>>3]*+p[t>>3]*b*+ba(10.0,+(+p[f>>3]));z=A+72|0;p[z>>3]=+p[z>>3]-X;X=+p[s>>3];W=X*X*b*+ba(10.0,+(+p[f>>3]));z=k[e>>2]|0;A=z+80|0;p[A>>3]=W+ +p[A>>3];W=+p[s>>3]*+p[t>>3]*b*+ba(10.0,+(+p[f>>3]));A=z+88|0;p[A>>3]=W+ +p[A>>3];W=+p[s>>3]*+p[t>>3]*b*+ba(10.0,+(+p[f>>3]));A=z+96|0;p[A>>3]=+p[A>>3]-W;W=+p[t>>3];X=W*W*b*+ba(10.0,+(+p[f>>3]));A=z+104|0;p[A>>3]=+p[A>>3]-X;X=+p[s>>3]*+p[t>>3]*b*+ba(10.0,+(+p[f>>3]));A=z+112|0;p[A>>3]=X+ +p[A>>3];X=+p[t>>3];W=X*X*b*+ba(10.0,+(+p[f>>3]));f=z+120|0;p[f>>3]=W+ +p[f>>3];W=+p[t>>3];f=a+104|0;A=a+24|0;p[z>>3]=+p[z>>3]+ +p[A>>3]*(+p[f>>3]*(V*(W*W)));a=z+8|0;p[a>>3]=+p[a>>3]-+p[A>>3]*(+p[f>>3]*(V*(+p[s>>3]*+p[t>>3])));W=+p[t>>3];a=z+16|0;p[a>>3]=+p[a>>3]-+p[A>>3]*(+p[f>>3]*(V*(W*W)));a=k[e>>2]|0;z=a+24|0;p[z>>3]=+p[z>>3]+ +p[A>>3]*(+p[f>>3]*(V*(+p[s>>3]*+p[t>>3])));z=a+32|0;p[z>>3]=+p[z>>3]-+p[A>>3]*(+p[f>>3]*(V*(+p[s>>3]*+p[t>>3])));W=+p[s>>3];z=a+40|0;p[z>>3]=+p[z>>3]+ +p[A>>3]*(+p[f>>3]*(V*(W*W)));z=a+48|0;p[z>>3]=+p[z>>3]+ +p[A>>3]*(+p[f>>3]*(V*(+p[s>>3]*+p[t>>3])));W=+p[s>>3];z=a+56|0;p[z>>3]=+p[z>>3]-+p[A>>3]*(+p[f>>3]*(V*(W*W)));W=+p[t>>3];z=a+64|0;p[z>>3]=+p[z>>3]-+p[A>>3]*(+p[f>>3]*(V*(W*W)));z=a+72|0;p[z>>3]=+p[z>>3]+ +p[A>>3]*(+p[f>>3]*(V*(+p[s>>3]*+p[t>>3])));W=+p[t>>3];z=a+80|0;p[z>>3]=+p[z>>3]+ +p[A>>3]*(+p[f>>3]*(V*(W*W)));z=a+88|0;p[z>>3]=+p[z>>3]-+p[A>>3]*(+p[f>>3]*(V*(+p[s>>3]*+p[t>>3])));z=k[e>>2]|0;e=z+96|0;p[e>>3]=+p[e>>3]+ +p[A>>3]*(+p[f>>3]*(V*(+p[s>>3]*+p[t>>3])));W=+p[s>>3];e=z+104|0;p[e>>3]=+p[e>>3]-+p[A>>3]*(+p[f>>3]*(V*(W*W)));e=z+112|0;p[e>>3]=+p[e>>3]-+p[A>>3]*(+p[f>>3]*(V*(+p[s>>3]*+p[t>>3])));W=+p[s>>3];s=z+120|0;p[s>>3]=+p[s>>3]+ +p[A>>3]*(+p[f>>3]*(V*(W*W)));U=x;r=c;return U|0}U=m+56|0;c=m+4|0;k[m>>2]=27524;k[U>>2]=27544;B=0;wa(508,m+56|0,c|0);x=B;B=0;if(x&1){x=Rb()|0;Y=Q;Z=x;vva(U);Qb(Z|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[U>>2]=27488;B=0;va(448,c|0);x=B;B=0;do if(x&1){f=Rb()|0;_=Q;$=f}else{k[c>>2]=27560;f=m+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[m+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,c|0,d|0);A=B;B=0;if(A&1){A=Rb()|0;s=Q;Yua(d);Yua(f);Ava(c);_=s;$=A;break}Yua(d);B=0;A=Ia(40,m|0,118197,51)|0;s=B;B=0;b:do if(!(s&1)?(B=0,Xa(239,A|0,0)|0,z=B,B=0,!(z&1)):0){z=Ab(20)|0;B=0;eb(502,n|0,117758,74);t=B;B=0;do if(!(t&1)){B=0;eb(502,o|0,118158,38);e=B;B=0;if(e&1){e=Rb()|0;a=Q;Yua(n);aa=e;ca=a;break}B=0;wa(510,q|0,c|0);a=B;B=0;if(a&1){a=Rb()|0;da=1;ea=Q;fa=a}else{B=0;ua(163,z|0,n|0,o|0,467,q|0);a=B;B=0;if(a&1)ga=1;else{B=0;eb(503,z|0,1240,229);B=0;ga=0}a=Rb()|0;e=Q;Yua(q);da=ga;ea=e;fa=a}Yua(o);Yua(n);if(da){aa=fa;ca=ea}else{ha=ea;ia=fa;break b}}else{a=Rb()|0;aa=a;ca=Q}while(0);zb(z|0);ha=ca;ia=aa}else R=44;while(0);if((R|0)==44){A=Rb()|0;ha=Q;ia=A}k[m>>2]=27468;k[U>>2]=27488;k[c>>2]=27560;Yua(f);Ava(c);vva(U);S=ha;T=ia;Qb(T|0)}while(0);Y=_;Z=$;vva(U);Qb(Z|0);return 0}function W0(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0;d=r;r=r+192|0;e=d+180|0;f=d+176|0;g=d+40|0;h=d+24|0;i=d+12|0;j=d;cO(k[a+124>>2]|0,f,477);switch(k[f>>2]|0){case 497:{l=X0(a,0.0)|0;if(!l){r=d;return}TN(l,b);SN(l);Sqa(l);r=d;return}case 481:{r=d;return}default:{d=g+56|0;l=g+4|0;k[g>>2]=27524;k[d>>2]=27544;B=0;wa(508,g+56|0,l|0);b=B;B=0;if(b&1){b=Rb()|0;m=Q;n=b;vva(d);Qb(n|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[d>>2]=27488;B=0;va(448,l|0);b=B;B=0;do if(b&1){a=Rb()|0;o=Q;p=a}else{k[l>>2]=27560;a=g+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,l|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;s=Q;Yua(e);Yua(a);Ava(l);o=s;p=q;break}Yua(e);B=0;q=Ia(40,g|0,144156,9)|0;s=B;B=0;if((((((!(s&1)?(B=0,s=Xa(242,q|0,k[f>>2]|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,s|0,144166,2)|0,s=B,B=0,!(s&1)):0)?(B=0,s=ya(427,k[f>>2]|0)|0,t=B,B=0,!(t&1)):0)?(t=Lta(s)|0,B=0,u=Ia(40,q|0,s|0,t|0)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Ia(40,u|0,144169,19)|0,u=B,B=0,!(u&1)):0)?(B=0,Xa(239,t|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,h|0,117758,74);u=B;B=0;do if(!(u&1)){B=0;eb(502,i|0,118249,20);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(h);v=q;w=s;break}B=0;wa(510,j|0,l|0);s=B;B=0;if(s&1){s=Rb()|0;x=Q;y=s;z=1}else{B=0;ua(163,t|0,h|0,i|0,359,j|0);s=B;B=0;if(s&1)A=1;else{B=0;eb(503,t|0,1240,229);B=0;A=0}s=Rb()|0;q=Q;Yua(j);x=q;y=s;z=A}Yua(i);Yua(h);if(z){v=x;w=y}else{C=x;D=y;k[g>>2]=27468;k[d>>2]=27488;k[l>>2]=27560;Yua(a);Ava(l);vva(d);Qb(D|0)}}else{s=Rb()|0;v=Q;w=s}while(0);zb(t|0);C=v;D=w;k[g>>2]=27468;k[d>>2]=27488;k[l>>2]=27560;Yua(a);Ava(l);vva(d);Qb(D|0)}u=Rb()|0;C=Q;D=u;k[g>>2]=27468;k[d>>2]=27488;k[l>>2]=27560;Yua(a);Ava(l);vva(d);Qb(D|0)}while(0);m=o;n=p;vva(d);Qb(n|0)}}}function X0(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0.0,ga=0.0,ha=0.0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0.0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0.0,Ma=0.0,Na=0.0,Oa=0.0,Pa=0.0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0;c=r;r=r+912|0;d=c+900|0;e=c+16|0;f=c;g=c+728|0;h=c+888|0;j=c+876|0;l=c+864|0;m=c+592|0;n=c+580|0;o=c+568|0;q=c+280|0;s=c+432|0;t=c+128|0;u=c+116|0;v=c+104|0;w=c+296|0;x=c+92|0;y=c+80|0;z=c+68|0;A=c+144|0;C=c+56|0;D=c+44|0;E=c+32|0;F=a+64|0;G=k[k[F>>2]>>2]|0;if((Hc[k[(k[G>>2]|0)+20>>2]&511](G)|0)!=621){G=g+56|0;H=g+4|0;k[g>>2]=27524;k[G>>2]=27544;B=0;wa(508,g+56|0,H|0);I=B;B=0;if(I&1){I=Rb()|0;J=Q;K=I;vva(G);Qb(K|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[G>>2]=27488;B=0;va(448,H|0);I=B;B=0;do if(I&1){L=Rb()|0;M=Q;N=L}else{k[H>>2]=27560;L=g+36|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;k[g+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,H|0,d|0);O=B;B=0;if(O&1){O=Rb()|0;P=Q;Yua(d);Yua(L);Ava(H);M=P;N=O;break}Yua(d);B=0;O=Ia(40,g|0,118112,45)|0;P=B;B=0;a:do if(!(P&1)?(B=0,Xa(239,O|0,0)|0,R=B,B=0,!(R&1)):0){R=Ab(20)|0;B=0;eb(502,h|0,117758,74);S=B;B=0;do if(!(S&1)){B=0;eb(502,j|0,118270,38);T=B;B=0;if(T&1){T=Rb()|0;U=Q;Yua(h);V=U;W=T;break}B=0;wa(510,l|0,H|0);T=B;B=0;if(T&1){T=Rb()|0;X=Q;Y=T;Z=1}else{B=0;ua(163,R|0,h|0,j|0,541,l|0);T=B;B=0;if(T&1)_=1;else{B=0;eb(503,R|0,1240,229);B=0;_=0}T=Rb()|0;U=Q;Yua(l);X=U;Y=T;Z=_}Yua(j);Yua(h);if(Z){V=X;W=Y}else{$=X;aa=Y;break a}}else{T=Rb()|0;V=Q;W=T}while(0);zb(R|0);$=V;aa=W}else ba=17;while(0);if((ba|0)==17){O=Rb()|0;$=Q;aa=O}k[g>>2]=27468;k[G>>2]=27488;k[H>>2]=27560;Yua(L);Ava(H);vva(G);ca=$;da=aa;Qb(da|0)}while(0);J=M;K=N;vva(G);Qb(K|0)}K=k[F>>2]|0;F=k[K>>2]|0;G=k[K+4>>2]|0;if(i[a+72>>0]|0){ea=0;r=c;return ea|0}K=Qqa(24)|0;N=a+60|0;B=0;ua(166,K|0,k[N>>2]|0,2,k[a+124>>2]|0,534);M=B;B=0;if(M&1){M=Rb()|0;J=Q;Sqa(K);ca=J;da=M;Qb(da|0)}M=a+56|0;b=+WJ(k[M>>2]|0,265);fa=+WJ(k[M>>2]|0,266);ga=+WJ(k[M>>2]|0,65);rd[k[(k[F>>2]|0)+144>>2]&511](F,e,k[k[N>>2]>>2]|0,353);M=e+8|0;rd[k[(k[G>>2]|0)+144>>2]&511](G,M,k[(k[N>>2]|0)+4>>2]|0,353);ha=+p[e>>3];if(ha!=+p[M>>3]){M=m+56|0;e=m+4|0;k[m>>2]=27524;k[M>>2]=27544;B=0;wa(508,m+56|0,e|0);J=B;B=0;if(J&1){J=Rb()|0;ia=Q;ja=J;vva(M);Qb(ja|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[M>>2]=27488;B=0;va(448,e|0);J=B;B=0;do if(J&1){aa=Rb()|0;ka=Q;la=aa}else{k[e>>2]=27560;aa=m+36|0;k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;k[aa+12>>2]=0;k[m+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,e|0,d|0);$=B;B=0;if($&1){$=Rb()|0;H=Q;Yua(d);Yua(aa);Ava(e);ka=H;la=$;break}Yua(d);B=0;$=Ia(40,m|0,118197,51)|0;H=B;B=0;b:do if(!(H&1)?(B=0,Xa(239,$|0,0)|0,g=B,B=0,!(g&1)):0){g=Ab(20)|0;B=0;eb(502,n|0,117758,74);W=B;B=0;do if(!(W&1)){B=0;eb(502,o|0,118270,38);V=B;B=0;if(V&1){V=Rb()|0;Y=Q;Yua(n);ma=Y;na=V;break}B=0;wa(510,q|0,e|0);V=B;B=0;if(V&1){V=Rb()|0;oa=1;pa=Q;qa=V}else{B=0;ua(163,g|0,n|0,o|0,555,q|0);V=B;B=0;if(V&1)ra=1;else{B=0;eb(503,g|0,1240,229);B=0;ra=0}V=Rb()|0;Y=Q;Yua(q);oa=ra;pa=Y;qa=V}Yua(o);Yua(n);if(oa){ma=pa;na=qa}else{sa=pa;ta=qa;break b}}else{V=Rb()|0;ma=Q;na=V}while(0);zb(g|0);sa=ma;ta=na}else ba=44;while(0);if((ba|0)==44){$=Rb()|0;sa=Q;ta=$}k[m>>2]=27468;k[M>>2]=27488;k[e>>2]=27560;Yua(aa);Ava(e);vva(M);ca=sa;da=ta;Qb(da|0)}while(0);ia=ka;ja=la;vva(M);Qb(ja|0)}rd[k[(k[F>>2]|0)+144>>2]&511](F,f,k[k[N>>2]>>2]|0,64);F=f+8|0;rd[k[(k[G>>2]|0)+144>>2]&511](G,F,k[(k[N>>2]|0)+4>>2]|0,64);xa=+p[f>>3];if(xa!=+p[F>>3]){F=s+56|0;f=s+4|0;k[s>>2]=27524;k[F>>2]=27544;B=0;wa(508,s+56|0,f|0);N=B;B=0;if(N&1){N=Rb()|0;ya=Q;za=N;vva(F);Qb(za|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[F>>2]=27488;B=0;va(448,f|0);N=B;B=0;do if(N&1){G=Rb()|0;Aa=Q;Ba=G}else{k[f>>2]=27560;G=s+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[s+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,f|0,d|0);ja=B;B=0;if(ja&1){ja=Rb()|0;M=Q;Yua(d);Yua(G);Ava(f);Aa=M;Ba=ja;break}Yua(d);B=0;ja=Ia(40,s|0,118309,44)|0;M=B;B=0;c:do if(!(M&1)?(B=0,Xa(239,ja|0,0)|0,la=B,B=0,!(la&1)):0){la=Ab(20)|0;B=0;eb(502,t|0,117758,74);ka=B;B=0;do if(!(ka&1)){B=0;eb(502,u|0,118270,38);ia=B;B=0;if(ia&1){ia=Rb()|0;ta=Q;Yua(t);Ca=ta;Da=ia;break}B=0;wa(510,v|0,f|0);ia=B;B=0;if(ia&1){ia=Rb()|0;Ea=1;Fa=Q;Ga=ia}else{B=0;ua(163,la|0,t|0,u|0,559,v|0);ia=B;B=0;if(ia&1)Ha=1;else{B=0;eb(503,la|0,1240,229);B=0;Ha=0}ia=Rb()|0;ta=Q;Yua(v);Ea=Ha;Fa=ta;Ga=ia}Yua(u);Yua(t);if(Ea){Ca=Fa;Da=Ga}else{Ja=Fa;Ka=Ga;break c}}else{ia=Rb()|0;Ca=Q;Da=ia}while(0);zb(la|0);Ja=Ca;Ka=Da}else ba=68;while(0);if((ba|0)==68){ja=Rb()|0;Ja=Q;Ka=ja}k[s>>2]=27468;k[F>>2]=27488;k[f>>2]=27560;Yua(G);Ava(f);vva(F);ca=Ja;da=Ka;Qb(da|0)}while(0);ya=Aa;za=Ba;vva(F);Qb(za|0)}za=a+20|0;d:do switch(k[za>>2]|0){case 633:{La=ha*ha;Ma=b*ga*La*.5;Na=fa*ga;if(!(i[a+40>>0]|0)){Oa=Ma-Na*La*.5;break d}else{Oa=Ma-Na*(xa*xa)*.5;break d}break}case 630:{Oa=b*ga*(ha*ha)*.5;break}case 631:{Oa=0.0;break}case 632:{if(i[a+40>>0]|0){Na=b*ga;Ma=+p[a+112>>3];La=ha*Ma;Pa=ha*(b/fa*Ma);Oa=Na*(ha*ha)*.5-Na*(La*La)*.5-fa*.5*ga*(xa*xa-Pa*Pa);break d}F=w+56|0;Ba=w+4|0;k[w>>2]=27524;k[F>>2]=27544;B=0;wa(508,w+56|0,Ba|0);Aa=B;B=0;if(Aa&1){Aa=Rb()|0;Qa=Q;Ra=Aa;vva(F);Qb(Ra|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[F>>2]=27488;B=0;va(448,Ba|0);Aa=B;B=0;do if(Aa&1){ya=Rb()|0;Sa=Q;Ta=ya}else{k[Ba>>2]=27560;ya=w+36|0;k[ya>>2]=0;k[ya+4>>2]=0;k[ya+8>>2]=0;k[ya+12>>2]=0;k[w+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Ba|0,d|0);Ka=B;B=0;if(Ka&1){Ka=Rb()|0;Ja=Q;Yua(d);Yua(ya);Ava(Ba);Sa=Ja;Ta=Ka;break}Yua(d);B=0;Ka=Ia(40,w|0,118354,10)|0;Ja=B;B=0;e:do if(((!(Ja&1)?(B=0,f=Xa(242,Ka|0,k[za>>2]|0)|0,s=B,B=0,!(s&1)):0)?(B=0,s=Ia(40,f|0,118365,33)|0,f=B,B=0,!(f&1)):0)?(B=0,Xa(239,s|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,x|0,117758,74);f=B;B=0;do if(!(f&1)){B=0;eb(502,y|0,118270,38);Da=B;B=0;if(Da&1){Da=Rb()|0;Ca=Q;Yua(x);Ua=Ca;Va=Da;break}B=0;wa(510,z|0,Ba|0);Da=B;B=0;if(Da&1){Da=Rb()|0;Wa=1;Ya=Q;Za=Da}else{B=0;ua(163,s|0,x|0,y|0,587,z|0);Da=B;B=0;if(Da&1)_a=1;else{B=0;eb(503,s|0,1240,229);B=0;_a=0}Da=Rb()|0;Ca=Q;Yua(z);Wa=_a;Ya=Ca;Za=Da}Yua(y);Yua(x);if(Wa){Ua=Ya;Va=Za}else{$a=Ya;ab=Za;break e}}else{Da=Rb()|0;Ua=Q;Va=Da}while(0);zb(s|0);$a=Ua;ab=Va}else ba=99;while(0);if((ba|0)==99){Ka=Rb()|0;$a=Q;ab=Ka}k[w>>2]=27468;k[F>>2]=27488;k[Ba>>2]=27560;Yua(ya);Ava(Ba);vva(F);ca=$a;da=ab;Qb(da|0)}while(0);Qa=Sa;Ra=Ta;vva(F);Qb(Ra|0);break}default:{Ba=A+56|0;Aa=A+4|0;k[A>>2]=27524;k[Ba>>2]=27544;B=0;wa(508,A+56|0,Aa|0);G=B;B=0;if(G&1){G=Rb()|0;bb=Q;cb=G;vva(Ba);Qb(cb|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[Ba>>2]=27488;B=0;va(448,Aa|0);G=B;B=0;do if(G&1){Ka=Rb()|0;db=Q;fb=Ka}else{k[Aa>>2]=27560;Ka=A+36|0;k[Ka>>2]=0;k[Ka+4>>2]=0;k[Ka+8>>2]=0;k[Ka+12>>2]=0;k[A+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,Aa|0,d|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;la=Q;Yua(d);Yua(Ka);Ava(Aa);db=la;fb=Ja;break}Yua(d);B=0;Ja=Ia(40,A|0,118354,10)|0;la=B;B=0;f:do if(((!(la&1)?(B=0,f=Xa(242,Ja|0,k[za>>2]|0)|0,Da=B,B=0,!(Da&1)):0)?(B=0,Da=Ia(40,f|0,118399,19)|0,f=B,B=0,!(f&1)):0)?(B=0,Xa(239,Da|0,0)|0,Da=B,B=0,!(Da&1)):0){Da=Ab(20)|0;B=0;eb(502,C|0,117758,74);f=B;B=0;do if(!(f&1)){B=0;eb(502,D|0,118270,38);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Ga=Q;Yua(C);gb=Ga;hb=Ca;break}B=0;wa(510,E|0,Aa|0);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;ib=1;jb=Q;kb=Ca}else{B=0;ua(163,Da|0,C|0,D|0,597,E|0);Ca=B;B=0;if(Ca&1)lb=1;else{B=0;eb(503,Da|0,1240,229);B=0;lb=0}Ca=Rb()|0;Ga=Q;Yua(E);ib=lb;jb=Ga;kb=Ca}Yua(D);Yua(C);if(ib){gb=jb;hb=kb}else{mb=jb;nb=kb;break f}}else{Ca=Rb()|0;gb=Q;hb=Ca}while(0);zb(Da|0);mb=gb;nb=hb}else ba=125;while(0);if((ba|0)==125){Ja=Rb()|0;mb=Q;nb=Ja}k[A>>2]=27468;k[Ba>>2]=27488;k[Aa>>2]=27560;Yua(Ka);Ava(Aa);vva(Ba);ca=mb;da=nb;Qb(da|0)}while(0);bb=db;cb=fb;vva(Ba);Qb(cb|0)}}while(0);cb=a+104|0;fb=k[K+4>>2]|0;db=a+88|0;p[fb>>3]=Oa*+p[db>>3]*+p[cb>>3]+ +p[fb>>3];bb=a+96|0;a=fb+8|0;p[a>>3]=Oa*+p[bb>>3]*+p[cb>>3]+ +p[a>>3];a=fb+16|0;p[a>>3]=+p[a>>3]-Oa*+p[db>>3]*+p[cb>>3];db=fb+24|0;p[db>>3]=+p[db>>3]-Oa*+p[bb>>3]*+p[cb>>3];ea=K;r=c;return ea|0}function Y0(a){a=a|0;k[a+60>>2]=0;k[a+64>>2]=0;k[a+56>>2]=0;k[a+124>>2]=0;Dla(k[a+44>>2]|0);Dla(k[a+48>>2]|0);Dla(k[a+52>>2]|0);return}function Z0(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return}function _0(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;g=r;r=r+192|0;d=g+176|0;j=g+40|0;l=g+24|0;m=g+12|0;n=g;o=a+60|0;a=e+(Rn(k[k[o>>2]>>2]|0)|0)|0;p=(i[a>>0]|0)==0;if((h|0)==937){if(p){a=e+(Rn(k[k[o>>2]>>2]|0)|0)|0;i[a>>0]=1;a=0;while(1){q=f+(a<<2)|0;if((k[q>>2]|0)>-1)a=a+1|0;else{s=q;break}}a=Rn(k[k[o>>2]>>2]|0)|0;k[s>>2]=a;a=k[k[o>>2]>>2]|0;if(k[a+28>>2]|0){s=(fo(a)|0)==0;t=s&1;u=s&1^1}else{t=0;u=0}}else{t=0;u=0}s=e+(Rn(k[(k[o>>2]|0)+4>>2]|0)|0)|0;if(i[s>>0]|0){v=t;w=u;k[b>>2]=v;k[c>>2]=w;r=g;return}s=e+(Rn(k[(k[o>>2]|0)+4>>2]|0)|0)|0;i[s>>0]=1;s=0;while(1){a=f+(s<<2)|0;if((k[a>>2]|0)>-1)s=s+1|0;else{x=a;break}}s=Rn(k[(k[o>>2]|0)+4>>2]|0)|0;k[x>>2]=s;s=k[(k[o>>2]|0)+4>>2]|0;if(!(k[s+28>>2]|0)){v=t;w=u;k[b>>2]=v;k[c>>2]=w;r=g;return}if(!(fo(s)|0)){v=t+1|0;w=u;k[b>>2]=v;k[c>>2]=w;r=g;return}else{v=t;w=u+1|0;k[b>>2]=v;k[c>>2]=w;r=g;return}}a:do if(p){u=e+(Rn(k[k[o>>2]>>2]|0)|0)|0;i[u>>0]=1;u=0;while(1){t=f+(u<<2)|0;if((k[t>>2]|0)>-1)u=u+1|0;else{y=t;break}}u=Rn(k[k[o>>2]>>2]|0)|0;k[y>>2]=u;switch(h|0){case 966:{u=k[k[o>>2]>>2]|0;if(!(k[u+32>>2]|0)){z=0;A=0;C=40;break a}t=(fo(u)|0)==0;z=t;A=t&1^1;C=40;break a;break}case 943:{t=k[k[o>>2]>>2]|0;if(!(k[t+24>>2]|0)){z=0;A=0;C=40;break a}u=(fo(t)|0)==0;z=u;A=u&1^1;C=40;break a;break}default:break a}}else{z=0;A=0;C=40}while(0);b:do if((C|0)==40){y=z&1;p=e+(Rn(k[(k[o>>2]|0)+4>>2]|0)|0)|0;if(i[p>>0]|0){v=y;w=A;k[b>>2]=v;k[c>>2]=w;r=g;return}p=e+(Rn(k[(k[o>>2]|0)+4>>2]|0)|0)|0;i[p>>0]=1;p=0;while(1){u=f+(p<<2)|0;if((k[u>>2]|0)>-1)p=p+1|0;else{D=u;break}}p=Rn(k[(k[o>>2]|0)+4>>2]|0)|0;k[D>>2]=p;switch(h|0){case 966:{p=k[(k[o>>2]|0)+4>>2]|0;if(!(k[p+32>>2]|0)){v=y;w=A;k[b>>2]=v;k[c>>2]=w;r=g;return}if(!(fo(p)|0)){v=z?2:1;w=A;k[b>>2]=v;k[c>>2]=w;r=g;return}else{v=y;w=A+1|0;k[b>>2]=v;k[c>>2]=w;r=g;return}break}case 943:{p=k[(k[o>>2]|0)+4>>2]|0;if(!(k[p+24>>2]|0)){v=y;w=A;k[b>>2]=v;k[c>>2]=w;r=g;return}if(!(fo(p)|0)){v=z?2:1;w=A;k[b>>2]=v;k[c>>2]=w;r=g;return}else{v=y;w=A+1|0;k[b>>2]=v;k[c>>2]=w;r=g;return}break}default:break b}}while(0);g=j+56|0;w=j+4|0;k[j>>2]=27524;k[g>>2]=27544;B=0;wa(508,j+56|0,w|0);c=B;B=0;if(c&1){c=Rb()|0;E=Q;F=c;vva(g);Qb(F|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[g>>2]=27488;B=0;va(448,w|0);c=B;B=0;do if(c&1){v=Rb()|0;G=Q;H=v}else{k[w>>2]=27560;v=j+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[j+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,w|0,d|0);b=B;B=0;if(b&1){b=Rb()|0;A=Q;Yua(d);Yua(v);Ava(w);G=A;H=b;break}Yua(d);B=0;b=Ia(40,j|0,145010,13)|0;A=B;B=0;if(!(A&1)?(B=0,Xa(239,b|0,0)|0,b=B,B=0,!(b&1)):0){b=Ab(20)|0;B=0;eb(502,l|0,117758,74);A=B;B=0;do if(!(A&1)){B=0;eb(502,m|0,144217,23);z=B;B=0;if(z&1){z=Rb()|0;o=Q;Yua(l);I=o;J=z;break}B=0;wa(510,n|0,w|0);z=B;B=0;if(z&1){z=Rb()|0;K=Q;L=z;M=1}else{B=0;ua(163,b|0,l|0,m|0,431,n|0);z=B;B=0;if(z&1)N=1;else{B=0;eb(503,b|0,1240,229);B=0;N=0}z=Rb()|0;o=Q;Yua(n);K=o;L=z;M=N}Yua(m);Yua(l);if(M){I=K;J=L}else{O=K;P=L;k[j>>2]=27468;k[g>>2]=27488;k[w>>2]=27560;Yua(v);Ava(w);vva(g);Qb(P|0)}}else{z=Rb()|0;I=Q;J=z}while(0);zb(b|0);O=I;P=J;k[j>>2]=27468;k[g>>2]=27488;k[w>>2]=27560;Yua(v);Ava(w);vva(g);Qb(P|0)}A=Rb()|0;O=Q;P=A;k[j>>2]=27468;k[g>>2]=27488;k[w>>2]=27560;Yua(v);Ava(w);vva(g);Qb(P|0)}while(0);E=G;F=H;vva(g);Qb(F|0)}function $0(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;c=r;r=r+224|0;d=c+208|0;e=c+24|0;f=c+16|0;g=c+8|0;h=c;j=c+72|0;m=c+56|0;n=c+44|0;o=c+32|0;q=a+64|0;s=k[k[q>>2]>>2]|0;if((Hc[k[(k[s>>2]|0)+20>>2]&511](s)|0)==621){s=k[q>>2]|0;q=k[s>>2]|0;t=k[s+4>>2]|0;if(i[a+73>>0]|0){k[b>>2]=0;r=c;return 1}switch(k[a+120>>2]|0){case 636:{i[a+72>>0]=0;break}case 634:{i[a+72>>0]=1;break}default:{s=a+60|0;rd[k[(k[q>>2]|0)+144>>2]&511](q,e,k[k[s>>2]>>2]|0,674);rd[k[(k[t>>2]|0)+144>>2]&511](t,g,k[(k[s>>2]|0)+4>>2]|0,674);rd[k[(k[q>>2]|0)+144>>2]&511](q,f,k[k[s>>2]>>2]|0,677);rd[k[(k[t>>2]|0)+144>>2]&511](t,h,k[(k[s>>2]|0)+4>>2]|0,677);s=(+p[g>>3]-+p[e>>3])*+p[a+88>>3]+(+p[h>>3]-+p[f>>3])*+p[a+96>>3]<0.0;f=a+76|0;h=k[f>>2]|0;if((h|0)>(k[a+68>>2]|0)){k[f>>2]=0;e=a+112|0;u=+p[a+32>>3]+ +p[e>>3];p[e>>3]=u;if(u>1.0){p[e>>3]=1.0;v=0}else v=0}else v=h;h=a+72|0;if((l[h>>0]|0)==(s&1|0))w=0;else{k[f>>2]=v+1;w=1}i[h>>0]=s&1;k[b>>2]=w;r=c;return 1}}k[b>>2]=0;r=c;return 1}c=j+56|0;b=j+4|0;k[j>>2]=27524;k[c>>2]=27544;B=0;wa(508,j+56|0,b|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;y=w;vva(c);Qb(y|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[c>>2]=27488;B=0;va(448,b|0);w=B;B=0;do if(w&1){s=Rb()|0;z=Q;A=s}else{k[b>>2]=27560;s=j+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[j+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,b|0,d|0);h=B;B=0;if(h&1){h=Rb()|0;v=Q;Yua(d);Yua(s);Ava(b);z=v;A=h;break}Yua(d);B=0;h=Ia(40,j|0,118112,45)|0;v=B;B=0;if(!(v&1)?(B=0,Xa(239,h|0,0)|0,h=B,B=0,!(h&1)):0){h=Ab(20)|0;B=0;eb(502,m|0,117758,74);v=B;B=0;do if(!(v&1)){B=0;eb(502,n|0,118419,9);f=B;B=0;if(f&1){f=Rb()|0;a=Q;Yua(m);C=a;D=f;break}B=0;wa(510,o|0,b|0);f=B;B=0;if(f&1){f=Rb()|0;E=Q;F=f;G=1}else{B=0;ua(163,h|0,m|0,n|0,630,o|0);f=B;B=0;if(f&1)H=1;else{B=0;eb(503,h|0,1240,229);B=0;H=0}f=Rb()|0;a=Q;Yua(o);E=a;F=f;G=H}Yua(n);Yua(m);if(G){C=E;D=F}else{I=E;J=F;k[j>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(s);Ava(b);vva(c);Qb(J|0)}}else{f=Rb()|0;C=Q;D=f}while(0);zb(h|0);I=C;J=D;k[j>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(s);Ava(b);vva(c);Qb(J|0)}v=Rb()|0;I=Q;J=v;k[j>>2]=27468;k[c>>2]=27488;k[b>>2]=27560;Yua(s);Ava(b);vva(c);Qb(J|0)}while(0);x=z;y=A;vva(c);Qb(y|0);return 0}function a1(a){a=a|0;i[a+73>>0]=1;return}function b1(a){a=a|0;return (i[a+73>>0]|0)!=0|0}function c1(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,118429,102);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,77,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function d1(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;b=r;r=r+192|0;a=b+176|0;d=b+40|0;e=b+24|0;f=b+12|0;g=b;b=d+56|0;h=d+4|0;k[d>>2]=27524;k[b>>2]=27544;B=0;wa(508,d+56|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;j=Q;l=i;vva(b);Qb(l|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[b>>2]=27488;B=0;va(448,h|0);i=B;B=0;do if(i&1){m=Rb()|0;n=Q;o=m}else{k[h>>2]=27560;m=d+36|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[d+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,h|0,a|0);p=B;B=0;if(p&1){p=Rb()|0;q=Q;Yua(a);Yua(m);Ava(h);n=q;o=p;break}Yua(a);B=0;p=Ia(40,d|0,144350,19)|0;q=B;B=0;a:do if(!(q&1)?(B=0,Xa(239,p|0,0)|0,s=B,B=0,!(s&1)):0){s=Ab(20)|0;B=0;eb(502,e|0,118429,102);t=B;B=0;do if(!(t&1)){B=0;eb(502,f|0,144370,27);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(e);w=v;x=u;break}B=0;wa(510,g|0,h|0);u=B;B=0;if(u&1){u=Rb()|0;y=Q;z=u;A=1}else{B=0;ua(163,s|0,e|0,f|0,85,g|0);u=B;B=0;if(u&1)C=1;else{B=0;eb(503,s|0,1240,229);B=0;C=0}u=Rb()|0;v=Q;Yua(g);y=v;z=u;A=C}Yua(f);Yua(e);if(A){w=y;x=z}else{D=y;E=z;break a}}else{u=Rb()|0;w=Q;x=u}while(0);zb(s|0);D=w;E=x}else F=16;while(0);if((F|0)==16){p=Rb()|0;D=Q;E=p}k[d>>2]=27468;k[b>>2]=27488;k[h>>2]=27560;Yua(m);Ava(h);vva(b);Qb(E|0)}while(0);j=n;l=o;vva(b);Qb(l|0)}function e1(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,118532,20)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,118429,102);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,118553,23);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,68,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function f1(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,118429,102);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144327,22);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,70,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function g1(a,b,c){a=a|0;b=b|0;c=c|0;e1(a+-4|0,b,c)}function h1(a,b,c){a=a|0;b=b|0;c=c|0;f1(a+-4|0,b,c)}function i1(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,La=0,Ma=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0;d=r;r=r+352|0;e=d+332|0;f=d+328|0;g=d+324|0;h=d+320|0;i=d+316|0;j=d+312|0;l=d+308|0;m=d+304|0;n=d+300|0;o=d+296|0;q=d+292|0;s=d+288|0;t=d+284|0;u=d+280|0;v=d+276|0;w=d+272|0;x=d+268|0;y=d+264|0;z=d+260|0;A=d+256|0;C=d+252|0;D=d+248|0;E=d+244|0;F=d+240|0;G=d+236|0;H=d+232|0;I=d+228|0;J=d+224|0;K=d+220|0;L=d+216|0;M=d+212|0;N=d+208|0;O=d+204|0;P=d+200|0;R=d+196|0;S=d+192|0;T=d+188|0;U=d+184|0;V=d+180|0;W=d+176|0;X=d+40|0;Y=d+24|0;Z=d+12|0;_=d;k[f>>2]=0;$=Qqa(36)|0;B=0;va(480,$|0);aa=B;B=0;if(aa&1){aa=Rb()|0;ba=Q;Sqa($);ca=ba;da=aa;Qb(da|0)}Cka(c,f,g,0,118577);a:do if((k[g>>2]|0)>0){aa=0;b:while(1){switch(k[(k[f>>2]|0)+(aa<<2)>>2]|0){case 871:{k[i>>2]=0;k[j>>2]=0;k[l>>2]=0;k[m>>2]=0;Tka(c,i,h,118602);Vka(c,j,e,118625);Xka(c,l,m,0,e,118658);if((k[h>>2]|0)>0){ba=0;while(1){ea=Qqa(40)|0;B=0;ua(172,ea|0,k[(k[i>>2]|0)+(ba<<2)>>2]|0,k[(k[j>>2]|0)+(ba<<2)>>2]|0,k[(k[m>>2]|0)+(ba<<2)>>2]|0,k[(k[l>>2]|0)+(ba<<2)>>2]|0);fa=B;B=0;if(fa&1){ga=ea;ha=11;break b}ih($,ea)|0;ba=ba+1|0;ea=k[h>>2]|0;if((ba|0)>=(ea|0)){ia=ea;break}}ba=k[i>>2]|0;if((ia|0)>0){ea=ba;fa=0;while(1){ja=k[ea+(fa<<2)>>2]|0;if(ja)Tqa(ja);ja=k[(k[l>>2]|0)+(fa<<2)>>2]|0;if(ja)Tqa(ja);fa=fa+1|0;ja=k[i>>2]|0;if((fa|0)>=(k[h>>2]|0)){ka=ja;break}else ea=ja}}else ka=ba}else ka=k[i>>2]|0;if(ka)Tqa(ka);k[i>>2]=0;ea=k[l>>2]|0;if(ea)Tqa(ea);k[l>>2]=0;ea=k[m>>2]|0;if(ea)Tqa(ea);k[m>>2]=0;ea=k[j>>2]|0;if(ea)Tqa(ea);break}case 652:{k[o>>2]=0;k[q>>2]=0;k[s>>2]=0;k[t>>2]=0;k[u>>2]=0;k[v>>2]=0;k[w>>2]=0;k[x>>2]=0;k[y>>2]=0;k[z>>2]=0;k[A>>2]=0;k[C>>2]=0;k[D>>2]=0;Tka(c,o,n,118685);Vka(c,q,n,118700);Vka(c,s,n,118725);Xka(c,t,v,w,n,118746);Vka(c,u,n,118768);Tka(c,y,n,118795);Vka(c,x,n,118823);Xka(c,z,A,C,n,118839);Vka(c,D,n,118857);if((k[n>>2]|0)>0){ea=0;while(1){fa=Qqa(56)|0;B=0;Ka(12,fa|0,k[(k[o>>2]|0)+(ea<<2)>>2]|0,k[(k[q>>2]|0)+(ea<<2)>>2]|0,k[(k[s>>2]|0)+(ea<<2)>>2]|0,k[(k[u>>2]|0)+(ea<<2)>>2]|0,k[(k[y>>2]|0)+(ea<<2)>>2]|0,(k[(k[x>>2]|0)+(ea<<2)>>2]|0)!=0|0,k[(k[D>>2]|0)+(ea<<2)>>2]|0);ja=B;B=0;if(ja&1){la=fa;ha=32;break b}ih($,fa)|0;if((th(a)|0)>0){fa=0;do{ja=qh(a,fa)|0;Qp(ja,k[(k[t>>2]|0)+(ea<<2)>>2]|0,c,k[(k[v>>2]|0)+(ea<<2)>>2]|0,k[(k[w>>2]|0)+(ea<<2)>>2]|0,1,k[(k[u>>2]|0)+(ea<<2)>>2]|0,7);Qp(ja,k[(k[z>>2]|0)+(ea<<2)>>2]|0,c,k[(k[A>>2]|0)+(ea<<2)>>2]|0,k[(k[C>>2]|0)+(ea<<2)>>2]|0,1,k[(k[D>>2]|0)+(ea<<2)>>2]|0,7);fa=fa+1|0}while((fa|0)<(th(a)|0))}ea=ea+1|0;fa=k[n>>2]|0;if((ea|0)>=(fa|0)){ma=fa;break}}ea=k[o>>2]|0;if((ma|0)>0){ba=ea;fa=0;while(1){ja=k[ba+(fa<<2)>>2]|0;if(ja)Tqa(ja);ja=k[(k[y>>2]|0)+(fa<<2)>>2]|0;if(ja)Tqa(ja);ja=k[(k[t>>2]|0)+(fa<<2)>>2]|0;if(ja)Tqa(ja);ja=k[(k[z>>2]|0)+(fa<<2)>>2]|0;if(ja)Tqa(ja);fa=fa+1|0;ja=k[o>>2]|0;if((fa|0)>=(k[n>>2]|0)){na=ja;break}else ba=ja}}else na=ea}else na=k[o>>2]|0;if(na)Tqa(na);k[o>>2]=0;ba=k[s>>2]|0;if(ba)Tqa(ba);k[s>>2]=0;ba=k[q>>2]|0;if(ba)Tqa(ba);k[q>>2]=0;ba=k[t>>2]|0;if(ba)Tqa(ba);k[t>>2]=0;ba=k[u>>2]|0;if(ba)Tqa(ba);k[u>>2]=0;ba=k[v>>2]|0;if(ba)Tqa(ba);k[v>>2]=0;ba=k[w>>2]|0;if(ba)Tqa(ba);k[w>>2]=0;ba=k[x>>2]|0;if(ba)Tqa(ba);k[x>>2]=0;ba=k[y>>2]|0;if(ba)Tqa(ba);k[y>>2]=0;ba=k[z>>2]|0;if(ba)Tqa(ba);k[z>>2]=0;ba=k[A>>2]|0;if(ba)Tqa(ba);k[A>>2]=0;ba=k[C>>2]|0;if(ba)Tqa(ba);k[C>>2]=0;ba=k[D>>2]|0;if(ba)Tqa(ba);break}case 875:{k[F>>2]=0;k[G>>2]=0;k[H>>2]=0;k[I>>2]=0;Tka(c,F,E,118880);Vka(c,G,E,118899);Vka(c,H,E,118928);Vka(c,I,E,118953);if((k[E>>2]|0)>0){ba=0;while(1){fa=Qqa(24)|0;ja=k[(k[F>>2]|0)+(ba<<2)>>2]|0;oa=k[(k[G>>2]|0)+(ba<<2)>>2]|0;pa=k[(k[H>>2]|0)+(ba<<2)>>2]|0;qa=(k[(k[I>>2]|0)+(ba<<2)>>2]|0)+-1|0;k[fa>>2]=37224;k[fa+4>>2]=37276;k[fa+8>>2]=oa;oa=(Lta(ja)|0)+1|0;B=0;ra=ya(422,oa|0)|0;oa=B;B=0;if(oa&1){sa=fa;ha=79;break b}k[fa+12>>2]=ra;oa=(Lta(ja)|0)+1|0;if(!ja){ta=fa;ha=77;break b}if(oa)TEa(ra|0,ja|0,oa|0)|0;k[fa+16>>2]=pa;k[fa+20>>2]=qa;ih($,fa)|0;ba=ba+1|0;fa=k[E>>2]|0;if((ba|0)>=(fa|0)){xa=fa;break}}ba=k[F>>2]|0;if((xa|0)>0){ea=ba;fa=xa;qa=0;while(1){pa=k[ea+(qa<<2)>>2]|0;if(!pa){za=fa;Aa=ea}else{Tqa(pa);za=k[E>>2]|0;Aa=k[F>>2]|0}qa=qa+1|0;if((qa|0)>=(za|0)){Ba=Aa;break}else{ea=Aa;fa=za}}}else Ba=ba}else Ba=k[F>>2]|0;if(Ba)Tqa(Ba);k[F>>2]=0;fa=k[H>>2]|0;if(fa)Tqa(fa);k[H>>2]=0;fa=k[G>>2]|0;if(fa)Tqa(fa);k[G>>2]=0;fa=k[I>>2]|0;if(fa)Tqa(fa);break}case 597:{k[K>>2]=0;k[L>>2]=0;k[M>>2]=0;k[N>>2]=0;k[O>>2]=0;Tka(c,K,J,119107);Vka(c,L,J,119123);Xka(c,M,N,O,J,119149);if((k[J>>2]|0)>0){fa=0;while(1){ea=Qqa(24)|0;B=0;ua(173,ea|0,k[(k[K>>2]|0)+(fa<<2)>>2]|0,k[(k[L>>2]|0)+(fa<<2)>>2]|0,k[(k[M>>2]|0)+(fa<<2)>>2]|0,k[(k[N>>2]|0)+(fa<<2)>>2]|0);qa=B;B=0;if(qa&1){Ca=ea;ha=98;break b}ih($,ea)|0;fa=fa+1|0;ea=k[J>>2]|0;if((fa|0)>=(ea|0)){Da=ea;break}}fa=k[K>>2]|0;if((Da|0)>0){ba=fa;ea=0;while(1){qa=k[ba+(ea<<2)>>2]|0;if(qa)Tqa(qa);qa=k[(k[M>>2]|0)+(ea<<2)>>2]|0;if(qa)Tqa(qa);ea=ea+1|0;qa=k[K>>2]|0;if((ea|0)>=(k[J>>2]|0)){Ea=qa;break}else ba=qa}}else Ea=fa}else Ea=k[K>>2]|0;if(Ea)Tqa(Ea);k[K>>2]=0;ba=k[M>>2]|0;if(ba)Tqa(ba);k[M>>2]=0;ba=k[N>>2]|0;if(ba)Tqa(ba);k[N>>2]=0;ba=k[O>>2]|0;if(ba)Tqa(ba);k[O>>2]=0;ba=k[L>>2]|0;if(ba)Tqa(ba);break}case 601:{k[P>>2]=0;k[R>>2]=0;k[S>>2]=0;k[T>>2]=0;k[U>>2]=0;k[V>>2]=0;Tka(c,P,W,119169);Vka(c,R,W,119190);Tka(c,S,W,119221);Tka(c,T,W,119243);Wka(c,U,W,119265);Wka(c,V,W,119287);if((k[W>>2]|0)>0){ba=0;while(1){ea=Qqa(40)|0;B=0;Na(1,ea|0,k[(k[P>>2]|0)+(ba<<2)>>2]|0,k[(k[R>>2]|0)+(ba<<2)>>2]|0,k[(k[S>>2]|0)+(ba<<2)>>2]|0,k[(k[T>>2]|0)+(ba<<2)>>2]|0,+(+p[(k[U>>2]|0)+(ba<<3)>>3]),+(+p[(k[V>>2]|0)+(ba<<3)>>3]));qa=B;B=0;if(qa&1){Fa=ea;ha=120;break b}ih($,ea)|0;ba=ba+1|0;ea=k[W>>2]|0;if((ba|0)>=(ea|0)){Ga=ea;break}}ba=k[P>>2]|0;if((Ga|0)>0){fa=ba;ea=0;while(1){qa=k[fa+(ea<<2)>>2]|0;if(qa)Tqa(qa);qa=k[(k[S>>2]|0)+(ea<<2)>>2]|0;if(qa)Tqa(qa);qa=k[(k[T>>2]|0)+(ea<<2)>>2]|0;if(qa)Tqa(qa);ea=ea+1|0;qa=k[P>>2]|0;if((ea|0)>=(k[W>>2]|0)){Ha=qa;break}else fa=qa}}else Ha=ba}else Ha=k[P>>2]|0;if(Ha)Tqa(Ha);k[P>>2]=0;fa=k[S>>2]|0;if(fa)Tqa(fa);k[S>>2]=0;fa=k[T>>2]|0;if(fa)Tqa(fa);k[T>>2]=0;fa=k[R>>2]|0;if(fa)Tqa(fa);k[R>>2]=0;fa=k[U>>2]|0;if(fa)Tqa(fa);k[U>>2]=0;fa=k[V>>2]|0;if(fa)Tqa(fa);break}default:{Ja=aa;ha=141;break b}}aa=aa+1|0;if((aa|0)>=(k[g>>2]|0))break a}if((ha|0)==11){aa=Rb()|0;fa=Q;Sqa(ga);ca=fa;da=aa;Qb(da|0)}else if((ha|0)==32){aa=Rb()|0;fa=Q;Sqa(la);ca=fa;da=aa;Qb(da|0)}else if((ha|0)==77){B=0;ib(283,142353,118972,137,142345);B=0;aa=Rb()|0;La=ta;Ma=aa;Oa=Q}else if((ha|0)==79){aa=Rb()|0;La=sa;Ma=aa;Oa=Q}else if((ha|0)==98){aa=Rb()|0;fa=Q;Sqa(Ca);ca=fa;da=aa;Qb(da|0)}else if((ha|0)==120){aa=Rb()|0;fa=Q;Sqa(Fa);ca=fa;da=aa;Qb(da|0)}else if((ha|0)==141){aa=X+56|0;fa=X+4|0;k[X>>2]=27524;k[aa>>2]=27544;B=0;wa(508,X+56|0,fa|0);ea=B;B=0;if(ea&1){ea=Rb()|0;Pa=Q;Qa=ea;vva(aa);Qb(Qa|0)}k[X+128>>2]=0;k[X+132>>2]=-1;k[X>>2]=27468;k[aa>>2]=27488;B=0;va(448,fa|0);ea=B;B=0;do if(ea&1){qa=Rb()|0;Ra=Q;Sa=qa}else{k[fa>>2]=27560;qa=X+36|0;k[qa>>2]=0;k[qa+4>>2]=0;k[qa+8>>2]=0;k[qa+12>>2]=0;k[X+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,fa|0,e|0);pa=B;B=0;if(pa&1){pa=Rb()|0;oa=Q;Yua(e);Yua(qa);Ava(fa);Ra=oa;Sa=pa;break}Yua(e);B=0;pa=Ia(40,X|0,119308,23)|0;oa=B;B=0;c:do if(((!(oa&1)?(B=0,ja=Xa(242,pa|0,k[(k[f>>2]|0)+(Ja<<2)>>2]|0)|0,ra=B,B=0,!(ra&1)):0)?(B=0,ra=Ia(40,ja|0,119332,18)|0,ja=B,B=0,!(ja&1)):0)?(B=0,Xa(239,ra|0,0)|0,ra=B,B=0,!(ra&1)):0){ra=Ab(20)|0;B=0;eb(502,Y|0,119351,98);ja=B;B=0;do if(!(ja&1)){B=0;eb(502,Z|0,119450,23);Ta=B;B=0;if(Ta&1){Ta=Rb()|0;Ua=Q;Yua(Y);Va=Ua;Wa=Ta;break}B=0;wa(510,_|0,fa|0);Ta=B;B=0;if(Ta&1){Ta=Rb()|0;Ya=Q;Za=Ta;_a=1}else{B=0;ua(163,ra|0,Y|0,Z|0,234,_|0);Ta=B;B=0;if(Ta&1)$a=1;else{B=0;eb(503,ra|0,1240,229);B=0;$a=0}Ta=Rb()|0;Ua=Q;Yua(_);Ya=Ua;Za=Ta;_a=$a}Yua(Z);Yua(Y);if(_a){Va=Ya;Wa=Za}else{ab=Ya;bb=Za;break c}}else{Ta=Rb()|0;Va=Q;Wa=Ta}while(0);zb(ra|0);ab=Va;bb=Wa}else ha=158;while(0);if((ha|0)==158){pa=Rb()|0;ab=Q;bb=pa}k[X>>2]=27468;k[aa>>2]=27488;k[fa>>2]=27560;Yua(qa);Ava(fa);vva(aa);ca=ab;da=bb;Qb(da|0)}while(0);Pa=Ra;Qa=Sa;vva(aa);Qb(Qa|0)}Sqa(La);ca=Oa;da=Ma;Qb(da|0)}while(0);Ma=Qqa(12)|0;B=0;eb(521,Ma|0,769,$|0);Oa=B;B=0;if(Oa&1){Oa=Rb()|0;La=Q;Sqa(Ma);ca=La;da=Oa;Qb(da|0)}YN(b,Ma);jh($);Sqa($);$=k[f>>2]|0;if(!$){r=d;return}Tqa($);r=d;return}function j1(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;k[a>>2]=37544;k[a+4>>2]=37596;k[a+8>>2]=c;c=Rqa((Lta(b)|0)+1|0)|0;k[a+12>>2]=c;f=(Lta(b)|0)+1|0;if(!b)yb(142353,118972,137,142345);if(f)TEa(c|0,b|0,f|0)|0;f=a+16|0;k[f>>2]=d;if(!d)return;b=d>>>0>536870911?-1:d<<3;c=Rqa(b)|0;k[a+20>>2]=c;g=Rqa(b)|0;k[a+28>>2]=g;h=Rqa(b)|0;k[a+24>>2]=h;i=Rqa(b)|0;k[a+32>>2]=i;b=Rqa(d>>>0>1073741823?-1:d<<2)|0;k[a+36>>2]=b;if((d|0)<=0)return;d=k[f>>2]|0;f=0;do{a=f*5|0;p[c+(f<<3)>>3]=+p[e+(a<<3)>>3];p[h+(f<<3)>>3]=+p[e+(a+1<<3)>>3];p[g+(f<<3)>>3]=+p[e+(a+2<<3)>>3];p[i+(f<<3)>>3]=+p[e+(a+3<<3)>>3];k[b+(f<<2)>>2]=~~+p[e+(a+4<<3)>>3];f=f+1|0}while((f|0)<(d|0));return}function k1(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0;k[a>>2]=37464;k[a+4>>2]=37516;k[a+8>>2]=c;c=Rqa((Lta(b)|0)+1|0)|0;k[a+12>>2]=c;j=(Lta(b)|0)+1|0;if(!b)yb(142353,118972,137,142345);if(j)TEa(c|0,b|0,j|0)|0;j=Rqa((Lta(f)|0)+1|0)|0;k[a+28>>2]=j;b=(Lta(f)|0)+1|0;if(!f)yb(142353,118972,137,142345);if(b)TEa(j|0,f|0,b|0)|0;k[a+16>>2]=d;k[a+20>>2]=e;k[a+24>>2]=h;i[a+32>>0]=g&1;p[a+40>>3]=0.0;k[a+48>>2]=0;return}function l1(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;k[a>>2]=37384;k[a+4>>2]=37436;k[a+8>>2]=c;c=Rqa((Lta(b)|0)+1|0)|0;k[a+12>>2]=c;f=(Lta(b)|0)+1|0;if(!b)yb(142353,118972,137,142345);if(f)TEa(c|0,b|0,f|0)|0;f=Rqa(e>>>0>536870911?-1:e<<3)|0;k[a+16>>2]=f;if(!d)yb(142353,118972,137,142345);if(!e){g=a+20|0;k[g>>2]=e;return}TEa(f|0,d|0,e<<3|0)|0;g=a+20|0;k[g>>2]=e;return}function m1(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;g=+g;var h=0,i=0,j=0;k[a>>2]=37304;k[a+4>>2]=37356;k[a+8>>2]=c;c=Rqa((Lta(b)|0)+1|0)|0;k[a+12>>2]=c;h=(Lta(b)|0)+1|0;if(!b)yb(142353,118972,137,142345);if(h)TEa(c|0,b|0,h|0)|0;h=Rqa((Lta(d)|0)+1|0)|0;k[a+16>>2]=h;b=(Lta(d)|0)+1|0;if(!d)yb(142353,118972,137,142345);if(b)TEa(h|0,d|0,b|0)|0;b=Rqa((Lta(e)|0)+1|0)|0;k[a+20>>2]=b;d=(Lta(e)|0)+1|0;if(!e)yb(142353,118972,137,142345);if(!d){i=a+24|0;p[i>>3]=f;j=a+32|0;p[j>>3]=g;return}TEa(b|0,e|0,d|0)|0;i=a+24|0;p[i>>3]=f;j=a+32|0;p[j>>3]=g;return}function n1(a){a=a|0;var b=0,c=0;k[a>>2]=37304;k[a+4>>2]=37356;b=a+12|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=a+16|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=a+20|0;a=k[b>>2]|0;if(!a)return;Tqa(a);k[b>>2]=0;return}function o1(a){a=a|0;var b=0,c=0;k[a>>2]=37304;k[a+4>>2]=37356;b=a+12|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=a+16|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=k[a+20>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}
+function sd(a){a=a|0;var b=0;b=r;r=r+a|0;r=r+15&-16;return b|0}function td(){return r|0}function ud(a){a=a|0;r=a}function vd(a,b){a=a|0;b=b|0;r=a;s=b}function wd(a,b){a=a|0;b=b|0;if(!B){B=a;C=b}}function xd(a){a=a|0;i[t>>0]=i[a>>0];i[t+1>>0]=i[a+1>>0];i[t+2>>0]=i[a+2>>0];i[t+3>>0]=i[a+3>>0]}function yd(a){a=a|0;i[t>>0]=i[a>>0];i[t+1>>0]=i[a+1>>0];i[t+2>>0]=i[a+2>>0];i[t+3>>0]=i[a+3>>0];i[t+4>>0]=i[a+4>>0];i[t+5>>0]=i[a+5>>0];i[t+6>>0]=i[a+6>>0];i[t+7>>0]=i[a+7>>0]}function zd(a){a=a|0;Q=a}function Ad(){return Q|0}function Bd(a){a=a|0;var b=0,c=0;k[a>>2]=27468;b=a+56|0;k[b>>2]=27488;c=a+4|0;k[c>>2]=27560;Yua(a+36|0);Ava(c);vva(b);return}function Cd(a,b,c,d,e,f,g,h,i,j,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;l=l|0;m=+m;var n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;n=r;r=r+80|0;o=n+24|0;q=n+16|0;s=n+8|0;t=n;u=n+64|0;v=n+60|0;w=n+56|0;x=n+52|0;y=n+48|0;z=n+44|0;A=n+40|0;C=n+36|0;D=n+32|0;E=n+28|0;k[u>>2]=0;k[v>>2]=0;k[w>>2]=0;k[x>>2]=0;k[y>>2]=0;k[z>>2]=0;k[A>>2]=0;B=0;fb(3);F=B;B=0;if(((((((((!(F&1)?(B=0,ib(279,u|0,i|0,j|0,l|0),l=B,B=0,!(l&1)):0)?(B=0,ib(279,v|0,0,0,0),l=B,B=0,!(l&1)):0)?(B=0,ta(53,t|0,+m),l=B,B=0,!(l&1)):0)?(B=0,za(1,w|0,x|0,y|0,z|0,A|0,C|0,D|0,E|0,k[u>>2]|0,k[v>>2]|0,+(+p[t>>3])),t=B,B=0,!(t&1)):0)?(B=0,ua(161,a|0,d|0,k[w>>2]|0,k[C>>2]|0,3),C=B,B=0,!(C&1)):0)?(B=0,ib(280,b|0,e|0,k[x>>2]|0,k[D>>2]|0),b=B,B=0,!(b&1)):0)?(B=0,ib(280,c|0,e|0,k[y>>2]|0,k[D>>2]|0),D=B,B=0,!(D&1)):0)?(B=0,ua(161,f|0,h|0,k[z>>2]|0,k[E>>2]|0,3),f=B,B=0,!(f&1)):0)?(B=0,ib(281,g|0,h|0,k[A>>2]|0,k[E>>2]|0),E=B,B=0,!(E&1)):0){E=k[u>>2]|0;if(E){Ym(E);Sqa(E)}E=k[v>>2]|0;if(E){Ym(E);Sqa(E)}E=k[w>>2]|0;if(E)Tqa(E);k[w>>2]=0;w=k[x>>2]|0;if(w)Tqa(w);k[x>>2]=0;x=k[y>>2]|0;if(x)Tqa(x);k[y>>2]=0;y=k[z>>2]|0;if(y)Tqa(y);k[z>>2]=0;z=k[A>>2]|0;if(z)Tqa(z);k[A>>2]=0;r=n;return 0}A=Rb(1240,25216,0)|0;z=Q;if((z|0)!=(Kb(1240)|0)){y=(z|0)==(Kb(25216)|0);z=Nb(A|0)|0;if(y){mta(Hc[k[(k[z>>2]|0)+8>>2]&511](z)|0,q)|0;Pb();r=n;return 0}else{mta(55001,o)|0;Pb();r=n;return 0}}o=Nb(A|0)|0;B=0;A=ya(420,o|0)|0;o=B;B=0;if(!(o&1)){mta(A,s)|0;Pb();r=n;return 0}n=Rb()|0;B=0;fb(4);s=B;B=0;if(s&1){s=Rb(0)|0;Dd(s)}else Qb(n|0);return 0}function Dd(a){a=a|0;Nb(a|0)|0;Zqa()}function Ed(a){a=a|0;var b=0,c=0;b=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;k[b>>2]=27468;a=b+56|0;k[a>>2]=27488;c=b+4|0;k[c>>2]=27560;Yua(b+36|0);Ava(c);vva(a);return}function Fd(a){a=a|0;var b=0,c=0;k[a>>2]=27468;b=a+56|0;k[b>>2]=27488;c=a+4|0;k[c>>2]=27560;Yua(a+36|0);Ava(c);vva(b);Sqa(a);return}function Gd(a){a=a|0;var b=0,c=0;b=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;k[b>>2]=27468;a=b+56|0;k[a>>2]=27488;c=b+4|0;k[c>>2]=27560;Yua(b+36|0);Ava(c);vva(a);Sqa(b);return}function Hd(a){a=a|0;k[a>>2]=27560;Yua(a+32|0);Ava(a);return}function Id(a){a=a|0;k[a>>2]=27560;Yua(a+32|0);Ava(a);Sqa(a);return}function Jd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;g=b+44|0;h=k[g>>2]|0;j=b+24|0;l=k[j>>2]|0;m=l;if(h>>>0<l>>>0){k[g>>2]=l;n=m}else n=h;h=f&24;if(!h){g=a;k[g>>2]=0;k[g+4>>2]=0;g=a+8|0;k[g>>2]=-1;k[g+4>>2]=-1;return}if((e|0)==1&(h|0)==24){h=a;k[h>>2]=0;k[h+4>>2]=0;h=a+8|0;k[h>>2]=-1;k[h+4>>2]=-1;return}a:do switch(e|0){case 0:{o=0;p=0;break}case 1:{if(!(f&8)){h=m-(k[b+20>>2]|0)|0;o=h;p=((h|0)<0)<<31>>31;break a}else{h=(k[b+12>>2]|0)-(k[b+8>>2]|0)|0;o=h;p=((h|0)<0)<<31>>31;break a}break}case 2:{h=b+32|0;if(!(i[h>>0]&1))q=h+1|0;else q=k[b+40>>2]|0;h=n-q|0;o=h;p=((h|0)<0)<<31>>31;break}default:{h=a;k[h>>2]=0;k[h+4>>2]=0;h=a+8|0;k[h>>2]=-1;k[h+4>>2]=-1;return}}while(0);q=QEa(o|0,p|0,c|0,d|0)|0;d=Q;if((d|0)>=0){c=b+32|0;if(!(i[c>>0]&1))r=c+1|0;else r=k[b+40>>2]|0;c=n-r|0;r=((c|0)<0)<<31>>31;if(!((r|0)<(d|0)|(r|0)==(d|0)&c>>>0<q>>>0)){c=f&8;if(!((q|0)==0&(d|0)==0)){if((c|0)!=0?(k[b+12>>2]|0)==0:0){r=a;k[r>>2]=0;k[r+4>>2]=0;r=a+8|0;k[r>>2]=-1;k[r+4>>2]=-1;return}if((f&16|0)!=0&(l|0)==0){l=a;k[l>>2]=0;k[l+4>>2]=0;l=a+8|0;k[l>>2]=-1;k[l+4>>2]=-1;return}}if(c){k[b+12>>2]=(k[b+8>>2]|0)+q;k[b+16>>2]=n}if(f&16)k[j>>2]=(k[b+20>>2]|0)+q;b=a;k[b>>2]=0;k[b+4>>2]=0;b=a+8|0;k[b>>2]=q;k[b+4>>2]=d;return}}d=a;k[d>>2]=0;k[d+4>>2]=0;d=a+8|0;k[d>>2]=-1;k[d+4>>2]=-1;return}function Kd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=c+8|0;Uc[k[(k[b>>2]|0)+16>>2]&63](a,b,k[e>>2]|0,k[e+4>>2]|0,0,d);return}function Ld(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=a+44|0;c=k[b>>2]|0;d=k[a+24>>2]|0;if(c>>>0<d>>>0){k[b>>2]=d;e=d}else e=c;if(!(k[a+48>>2]&8)){f=-1;return f|0}c=a+16|0;d=k[c>>2]|0;b=k[a+12>>2]|0;if(d>>>0<e>>>0){k[c>>2]=e;g=e}else g=d;if(b>>>0>=g>>>0){f=-1;return f|0}f=l[b>>0]|0;return f|0}function Md(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;c=a+44|0;d=k[c>>2]|0;e=k[a+24>>2]|0;if(d>>>0<e>>>0){k[c>>2]=e;f=e}else f=d;d=f;f=a+8|0;e=k[f>>2]|0;c=a+12|0;g=k[c>>2]|0;h=e;if(e>>>0>=g>>>0){j=-1;return j|0}if((b|0)==-1){k[c>>2]=g+-1;k[a+16>>2]=d;j=0;return j|0}if(!(k[a+48>>2]&16)){e=b&255;l=g+-1|0;if(e<<24>>24==(i[l>>0]|0)){m=e;n=l}else{j=-1;return j|0}}else{m=b&255;n=g+-1|0}k[f>>2]=h;k[c>>2]=n;k[a+16>>2]=d;i[n>>0]=m;j=b;return j|0}function Nd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;c=r;r=r+16|0;d=c;if((b|0)==-1){e=0;r=c;return e|0}f=a+12|0;g=a+8|0;h=(k[f>>2]|0)-(k[g>>2]|0)|0;j=a+24|0;l=k[j>>2]|0;m=a+28|0;n=k[m>>2]|0;do if((l|0)==(n|0)){o=a+48|0;if(!(k[o>>2]&16)){e=-1;r=c;return e|0}p=a+20|0;q=k[p>>2]|0;s=l-q|0;t=a+44|0;u=(k[t>>2]|0)-q|0;q=a+32|0;B=0;wa(503,q|0,0);v=B;B=0;if(!(v&1)){if(!(i[q>>0]&1))w=10;else w=(k[q>>2]&-2)+-1|0;B=0;eb(501,q|0,w|0,0);v=B;B=0;if(!(v&1)){v=i[q>>0]|0;if(!(v&1)){x=q+1|0;y=(v&255)>>>1}else{x=k[a+40>>2]|0;y=k[a+36>>2]|0}v=x+y|0;k[p>>2]=x;k[m>>2]=v;p=x+s|0;k[j>>2]=p;s=x+u|0;k[t>>2]=s;z=t;A=o;C=t;D=p;E=s;F=v;break}}v=Rb(0)|0;Nb(v|0)|0;Pb();e=-1;r=c;return e|0}else{v=a+44|0;z=v;A=a+48|0;C=v;D=l;E=k[v>>2]|0;F=n}while(0);n=D+1|0;k[d>>2]=n;l=k[(n>>>0<E>>>0?C:d)>>2]|0;k[z>>2]=l;if(k[A>>2]&8){A=a+32|0;if(!(i[A>>0]&1))G=A+1|0;else G=k[a+40>>2]|0;k[g>>2]=G;k[f>>2]=G+h;k[a+16>>2]=l}if((D|0)==(F|0)){e=ed[k[(k[a>>2]|0)+52>>2]&511](a,b&255)|0;r=c;return e|0}else{k[j>>2]=n;i[D>>0]=b;e=b&255;r=c;return e|0}return 0}function Od(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;c=a+32|0;Zua(c,b)|0;b=a+44|0;k[b>>2]=0;d=a+48|0;e=k[d>>2]|0;if(e&8){f=i[c>>0]|0;if(!(f&1)){g=((f&255)>>>1)+(c+1)|0;k[b>>2]=g;h=g;j=c+1|0;l=c+1|0}else{g=k[a+40>>2]|0;f=g+(k[a+36>>2]|0)|0;k[b>>2]=f;h=f;j=g;l=g}k[a+8>>2]=j;k[a+12>>2]=l;k[a+16>>2]=h}if(!(e&16))return;e=i[c>>0]|0;if(!(e&1)){h=(e&255)>>>1;k[b>>2]=c+1+h;m=10;n=h}else{h=k[a+36>>2]|0;k[b>>2]=(k[a+40>>2]|0)+h;m=(k[c>>2]&-2)+-1|0;n=h}ava(c,m,0);m=i[c>>0]|0;if(!(m&1)){o=c+1|0;p=(m&255)>>>1;q=c+1|0}else{c=k[a+40>>2]|0;o=c;p=k[a+36>>2]|0;q=c}c=a+24|0;k[c>>2]=q;k[a+20>>2]=q;k[a+28>>2]=o+p;if(!(k[d>>2]&3))return;k[c>>2]=q+n;return}function Pd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0;d=r;r=r+16|0;e=d+12|0;f=d;g=d+8|0;B=0;wa(504,f|0,a|0);h=B;B=0;a:do if(h&1){j=Rb(0)|0;l=j;m=a;n=a}else{do if(i[f>>0]|0){j=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;k[g>>2]=k[j+24>>2];o=k[j+4>>2]|0;p=b+c|0;q=j+76|0;s=k[q>>2]|0;do if((s|0)==-1){B=0;t=ya(421,j|0)|0;u=B;B=0;if(u&1)v=13;else{k[e>>2]=t;B=0;t=Xa(238,e|0,49320)|0;u=B;B=0;if(!(u&1)?(B=0,u=Xa(k[(k[t>>2]|0)+28>>2]|0,t|0,32)|0,t=B,B=0,!(t&1)):0){ZAa(e);t=u<<24>>24;k[q>>2]=t;w=t;v=9;break}t=Rb(0)|0;ZAa(e);x=t}}else{w=s;v=9}while(0);if((v|0)==9){B=0;k[e>>2]=k[g>>2];s=xa(39,e|0,b|0,((o&176|0)==32?p:b)|0,p|0,j|0,w&255|0)|0;q=B;B=0;if(!(q&1)){if(s)break;s=a+(k[(k[a>>2]|0)+-12>>2]|0)|0;B=0;wa(505,s|0,k[s+16>>2]|5|0);s=B;B=0;if(!(s&1))break;else v=13}else v=13}if((v|0)==13){s=Rb(0)|0;x=s}twa(f);l=x;m=a;n=a;break a}while(0);twa(f);r=d;return a|0}while(0);Nb(l|0)|0;B=0;va(447,m+(k[(k[n>>2]|0)+-12>>2]|0)|0);n=B;B=0;if(!(n&1)){Pb();r=d;return a|0}a=Rb()|0;B=0;fb(4);d=B;B=0;if(d&1){d=Rb(0)|0;Dd(d)}else Qb(a|0);return 0}function Qd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;g=r;r=r+16|0;h=g;j=k[a>>2]|0;if(!j){l=0;r=g;return l|0}m=d;d=b;n=m-d|0;o=e+12|0;e=k[o>>2]|0;p=(e|0)>(n|0)?e-n|0:0;n=c;e=n-d|0;if((e|0)>0?(Rc[k[(k[j>>2]|0)+48>>2]&63](j,b,e)|0)!=(e|0):0){k[a>>2]=0;l=0;r=g;return l|0}do if((p|0)>0){Xua(h,p,f);B=0;e=Ia(k[(k[j>>2]|0)+48>>2]|0,j|0,((i[h>>0]&1)==0?h+1|0:k[h+8>>2]|0)|0,p|0)|0;b=B;B=0;if(b&1){b=Rb()|0;Yua(h);Qb(b|0)}if((e|0)==(p|0)){Yua(h);break}k[a>>2]=0;Yua(h);l=0;r=g;return l|0}while(0);h=m-n|0;if((h|0)>0?(Rc[k[(k[j>>2]|0)+48>>2]&63](j,c,h)|0)!=(h|0):0){k[a>>2]=0;l=0;r=g;return l|0}k[o>>2]=0;l=j;r=g;return l|0}function Rd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;c=k[b+48>>2]|0;if(c&16){d=b+44|0;e=k[d>>2]|0;f=k[b+24>>2]|0;if(e>>>0<f>>>0){k[d>>2]=f;g=f}else g=e;e=k[b+20>>2]|0;f=g-e|0;if(f>>>0>4294967279)Nqa(a);if(f>>>0<11){i[a>>0]=f<<1;h=a+1|0}else{d=f+16&-16;j=Qqa(d)|0;k[a+8>>2]=j;k[a>>2]=d|1;k[a+4>>2]=f;h=j}if((e|0)==(g|0))l=h;else{j=e;e=h;while(1){i[e>>0]=i[j>>0]|0;j=j+1|0;if((j|0)==(g|0))break;else e=e+1|0}l=h+f|0}i[l>>0]=0;return}if(!(c&8)){k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}c=k[b+8>>2]|0;l=k[b+16>>2]|0;b=l-c|0;if(b>>>0>4294967279)Nqa(a);if(b>>>0<11){i[a>>0]=b<<1;m=a+1|0}else{f=b+16&-16;h=Qqa(f)|0;k[a+8>>2]=h;k[a>>2]=f|1;k[a+4>>2]=b;m=h}if((c|0)==(l|0))n=m;else{h=c;c=m;while(1){i[c>>0]=i[h>>0]|0;h=h+1|0;if((h|0)==(l|0))break;else c=c+1|0}n=m+b|0}i[n>>0]=0;return}function Sd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;g=r;r=r+48|0;h=g+16|0;i=g+8|0;j=g;l=g+36|0;m=g+32|0;n=g+28|0;o=g+24|0;p=g+20|0;k[l>>2]=0;k[o>>2]=0;B=0;fb(3);q=B;B=0;if((((!(q&1)?(B=0,La(25,l|0,m|0,0,d|0,e|0,3),e=B,B=0,!(e&1)):0)?(B=0,wa(506,n|0,f|0),f=B,B=0,!(f&1)):0)?(B=0,ua(162,o|0,p|0,k[l>>2]|0,k[m>>2]|0,k[n>>2]|0),m=B,B=0,!(m&1)):0)?(B=0,La(26,a|0,b|0,c|0,k[o>>2]|0,k[n>>2]|0,k[p>>2]|0),p=B,B=0,!(p&1)):0){p=k[l>>2]|0;if(p)Tqa(p);k[l>>2]=0;l=k[o>>2]|0;if(l)Tqa(l);k[o>>2]=0;r=g;return 0}o=Rb(1240,25216,0)|0;l=Q;if((l|0)!=(Kb(1240)|0)){p=(l|0)==(Kb(25216)|0);l=Nb(o|0)|0;if(p){mta(Hc[k[(k[l>>2]|0)+8>>2]&511](l)|0,i)|0;Pb();r=g;return 0}else{mta(55001,h)|0;Pb();r=g;return 0}}h=Nb(o|0)|0;B=0;o=ya(420,h|0)|0;h=B;B=0;if(!(h&1)){mta(o,j)|0;Pb();r=g;return 0}g=Rb()|0;B=0;fb(4);j=B;B=0;if(j&1){j=Rb(0)|0;Dd(j)}else Qb(g|0);return 0}function Td(a,b,c,d,e,f,g,h,i,j,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;l=l|0;m=+m;var n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;n=r;r=r+256|0;o=n+16|0;p=n+8|0;q=n;s=n+232|0;t=n+228|0;u=n+224|0;v=n+220|0;w=n+216|0;x=n+212|0;y=n+208|0;z=n+204|0;A=n+200|0;C=n+196|0;D=n+192|0;E=n+56|0;F=n+44|0;G=n+32|0;H=n+20|0;k[w>>2]=0;k[x>>2]=0;k[y>>2]=0;k[z>>2]=0;k[A>>2]=0;k[C>>2]=0;k[D>>2]=0;B=0;fb(3);I=B;B=0;a:do if(((((((!(I&1)?(B=0,La(27,w|0,u|0,0,c|0,i|0,3),J=B,B=0,!(J&1)):0)?(B=0,La(27,x|0,v|0,0,d|0,j|0,1),J=B,B=0,!(J&1)):0)?(B=0,La(27,y|0,0,0,e|0,j|0,1),J=B,B=0,!(J&1)):0)?(B=0,wa(506,t|0,~~m|0),J=B,B=0,!(J&1)):0)?(B=0,ib(279,A|0,f|0,g|0,l|0),J=B,B=0,!(J&1)):0)?(B=0,wa(507,z|0,h|0),J=B,B=0,!(J&1)):0)?(B=0,Ra(1,C|0,D|0,k[w>>2]|0,k[x>>2]|0,k[y>>2]|0,k[A>>2]|0,k[z>>2]|0,k[u>>2]|0,k[v>>2]|0,k[t>>2]|0)|0,J=B,B=0,!(J&1)):0){J=k[z>>2]|0;do if(!(Ita(J,53867)|0)){B=0;ib(280,a|0,0,k[C>>2]|0,k[v>>2]|0);K=B;B=0;if(K&1){L=12;break a}B=0;K=B;B=0;if(K&1){L=12;break a}}else{if(!(Ita(J,64911)|0)){B=0;ib(280,a|0,0,k[D>>2]|0,k[u>>2]|0);K=B;B=0;if(K&1){L=12;break a}B=0;K=B;B=0;if(K&1){L=12;break a}else break}if(!(Ita(J,64919)|0)){B=0;ib(280,a|0,0,k[C>>2]|0,k[v>>2]|0);K=B;B=0;if(K&1){L=12;break a}B=0;ib(280,b|0,0,k[D>>2]|0,k[u>>2]|0);K=B;B=0;if(K&1){L=12;break a}else break}K=E+56|0;M=E+4|0;k[E>>2]=27524;k[K>>2]=27544;B=0;wa(508,E+56|0,M|0);N=B;B=0;if(N&1){N=Rb(1240,25216,0)|0;O=Q;P=N}else{k[E+128>>2]=0;k[E+132>>2]=-1;k[E>>2]=27468;k[K>>2]=27488;B=0;va(448,M|0);N=B;B=0;do if(N&1){R=Rb(1240,25216,0)|0;S=Q;T=R}else{k[M>>2]=27560;R=E+36|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[E+52>>2]=16;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;B=0;wa(509,M|0,s|0);U=B;B=0;if(U&1){U=Rb(1240,25216,0)|0;V=Q;Yua(s);Yua(R);Ava(M);S=V;T=U;break}Yua(s);B=0;U=Ia(40,E|0,53872,24)|0;V=B;B=0;b:do if(V&1)L=35;else{B=0;Xa(239,U|0,0)|0;W=B;B=0;if(W&1){L=35;break}W=Ab(20)|0;B=0;eb(502,F|0,53897,97);X=B;B=0;do if(!(X&1)){B=0;eb(502,G|0,53995,19);Y=B;B=0;if(Y&1){Y=Rb(1240,25216,0)|0;Z=Q;Yua(F);_=Y;$=Z;break}B=0;wa(510,H|0,M|0);Z=B;B=0;if(Z&1){Z=Rb(1240,25216,0)|0;aa=Z;ba=Q;ca=1}else{B=0;ua(163,W|0,F|0,G|0,84,H|0);Z=B;B=0;if(Z&1)da=1;else{B=0;eb(503,W|0,1240,229);B=0;da=0}Z=Rb(1240,25216,0)|0;Y=Q;Yua(H);aa=Z;ba=Y;ca=da}Yua(G);Yua(F);if(ca){_=aa;$=ba}else{ea=aa;fa=ba;break b}}else{Y=Rb(1240,25216,0)|0;_=Y;$=Q}while(0);zb(W|0);ea=_;fa=$}while(0);if((L|0)==35){U=Rb(1240,25216,0)|0;ea=U;fa=Q}k[E>>2]=27468;k[K>>2]=27488;k[M>>2]=27560;Yua(R);Ava(M);vva(K);ga=ea;ha=fa;break a}while(0);O=S;P=T}vva(K);ia=O;ja=P;L=13;break a}while(0);J=k[w>>2]|0;if(J)Tqa(J);k[w>>2]=0;J=k[x>>2]|0;if(J)Tqa(J);k[x>>2]=0;J=k[y>>2]|0;if(J)Tqa(J);k[y>>2]=0;J=k[z>>2]|0;if(J)Tqa(J);k[z>>2]=0;J=k[A>>2]|0;if(J){Ym(J);Sqa(J)}J=k[C>>2]|0;if(J)Tqa(J);k[C>>2]=0;J=k[D>>2]|0;if(J)Tqa(J);k[D>>2]=0;r=n;return 0}else L=12;while(0);if((L|0)==12){D=Rb(1240,25216,0)|0;ia=Q;ja=D;L=13}if((L|0)==13){ga=ja;ha=ia}if((ha|0)!=(Kb(1240)|0)){ia=(ha|0)==(Kb(25216)|0);ha=Nb(ga|0)|0;if(ia){mta(Hc[k[(k[ha>>2]|0)+8>>2]&511](ha)|0,p)|0;Pb();r=n;return 0}else{mta(55001,o)|0;Pb();r=n;return 0}}o=Nb(ga|0)|0;B=0;ga=ya(420,o|0)|0;o=B;B=0;if(!(o&1)){mta(ga,q)|0;Pb();r=n;return 0}n=Rb()|0;B=0;fb(4);q=B;B=0;if(q&1){q=Rb(0)|0;Dd(q)}else Qb(n|0);return 0}function Ud(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;g=r;r=r+48|0;h=g+16|0;i=g+8|0;j=g;l=g+40|0;m=g+36|0;n=g+32|0;o=g+28|0;p=g+24|0;q=g+20|0;k[l>>2]=0;k[m>>2]=0;k[q>>2]=0;B=0;fb(3);s=B;B=0;if((((!(s&1)?(B=0,La(25,l|0,n|0,0,b|0,d|0,3),d=B,B=0,!(d&1)):0)?(B=0,La(25,m|0,o|0,p|0,c|0,e|0,f|0),f=B,B=0,!(f&1)):0)?(B=0,La(28,q|0,k[l>>2]|0,k[n>>2]|0,k[m>>2]|0,k[o>>2]|0,k[p>>2]|0),p=B,B=0,!(p&1)):0)?(B=0,La(26,a|0,0,0,k[q>>2]|0,k[n>>2]|0,3),n=B,B=0,!(n&1)):0){n=k[l>>2]|0;if(n)Tqa(n);k[l>>2]=0;l=k[m>>2]|0;if(l)Tqa(l);k[m>>2]=0;m=k[q>>2]|0;if(m)Tqa(m);k[q>>2]=0;r=g;return 0}q=Rb(1240,25216,0)|0;m=Q;if((m|0)!=(Kb(1240)|0)){l=(m|0)==(Kb(25216)|0);m=Nb(q|0)|0;if(l){mta(Hc[k[(k[m>>2]|0)+8>>2]&511](m)|0,i)|0;Pb();r=g;return 0}else{mta(55001,h)|0;Pb();r=g;return 0}}h=Nb(q|0)|0;B=0;q=ya(420,h|0)|0;h=B;B=0;if(!(h&1)){mta(q,j)|0;Pb();r=g;return 0}g=Rb()|0;B=0;fb(4);j=B;B=0;if(j&1){j=Rb(0)|0;Dd(j)}else Qb(g|0);return 0}function Vd(a,b,c,d,e,f,g,h,i,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;l=+l;var m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,bb=0,cb=0,db=0,gb=0,hb=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Lb=0,Mb=0,Ob=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0;m=r;r=r+1200|0;n=m+16|0;o=m+8|0;p=m;q=m+1188|0;s=m+1176|0;t=m+1164|0;u=m+1152|0;v=m+1140|0;w=m+1128|0;x=m+1124|0;y=m+1120|0;z=m+1116|0;A=m+1112|0;C=m+1108|0;D=m+1104|0;E=m+1100|0;F=m+1096|0;G=m+1092|0;H=m+1088|0;I=m+1084|0;J=m+1080|0;K=m+1076|0;L=m+1072|0;M=m+936|0;N=m+920|0;O=m+768|0;P=m+480|0;R=m+784|0;S=m+328|0;T=m+176|0;U=m+164|0;V=m+632|0;W=m+152|0;X=m+140|0;Y=m+128|0;Z=m+496|0;_=m+116|0;$=m+104|0;aa=m+92|0;ba=m+344|0;ca=m+80|0;da=m+68|0;ea=m+56|0;fa=m+192|0;ga=m+44|0;ha=m+32|0;ia=m+20|0;k[x>>2]=0;k[y>>2]=0;k[z>>2]=0;k[A>>2]=0;k[G>>2]=0;k[H>>2]=0;k[J>>2]=0;k[K>>2]=0;B=0;fb(3);ja=B;B=0;a:do if(!(ja&1)?(B=0,La(25,x|0,D|0,L|0,b|0,h|0,3),ka=B,B=0,!(ka&1)):0){if((k[L>>2]|0)!=3){ka=M+56|0;la=M+4|0;k[M>>2]=27524;k[ka>>2]=27544;B=0;wa(508,M+56|0,la|0);na=B;B=0;if(na&1){na=Rb(1240,25216,0)|0;oa=Q;pa=na}else{k[M+128>>2]=0;k[M+132>>2]=-1;k[M>>2]=27468;k[ka>>2]=27488;B=0;va(448,la|0);na=B;B=0;do if(na&1){qa=Rb(1240,25216,0)|0;ra=Q;sa=qa}else{k[la>>2]=27560;qa=M+36|0;k[qa>>2]=0;k[qa+4>>2]=0;k[qa+8>>2]=0;k[qa+12>>2]=0;k[M+52>>2]=16;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;B=0;wa(509,la|0,w|0);ta=B;B=0;if(ta&1){ta=Rb(1240,25216,0)|0;xa=Q;Yua(w);Yua(qa);Ava(la);ra=xa;sa=ta;break}Yua(w);B=0;ta=Ia(40,M|0,54015,27)|0;xa=B;B=0;b:do if(!(xa&1)?(B=0,Xa(239,ta|0,0)|0,za=B,B=0,!(za&1)):0){za=Ab(20)|0;B=0;eb(502,N|0,54043,115);Aa=B;B=0;do if(!(Aa&1)){B=0;eb(502,O|0,54159,28);Ca=B;B=0;if(Ca&1){Ca=Rb(1240,25216,0)|0;Da=Q;Yua(N);Ea=Da;Fa=Ca;break}B=0;wa(510,P|0,la|0);Ca=B;B=0;if(Ca&1){Ca=Rb(1240,25216,0)|0;Ga=Ca;Ha=Q;Ja=1}else{B=0;ua(163,za|0,N|0,O|0,63,P|0);Ca=B;B=0;if(Ca&1)Ka=1;else{B=0;eb(503,za|0,1240,229);B=0;Ka=0}Ca=Rb(1240,25216,0)|0;Da=Q;Yua(P);Ga=Ca;Ha=Da;Ja=Ka}Yua(O);Yua(N);if(Ja){Ea=Ha;Fa=Ga}else{Ma=Ga;Na=Ha;break b}}else{Da=Rb(1240,25216,0)|0;Ea=Q;Fa=Da}while(0);zb(za|0);Ma=Fa;Na=Ea}else Oa=21;while(0);if((Oa|0)==21){ta=Rb(1240,25216,0)|0;Ma=ta;Na=Q}k[M>>2]=27468;k[ka>>2]=27488;k[la>>2]=27560;Yua(qa);Ava(la);vva(ka);Pa=Ma;Qa=Na;break a}while(0);oa=ra;pa=sa}vva(ka);Ra=oa;Sa=pa;Oa=20;break}B=0;ib(282,y|0,C|0,c|0,i|0);la=B;B=0;if(!(la&1)){if((k[C>>2]|0)<3){la=R+56|0;na=R+4|0;k[R>>2]=27524;k[la>>2]=27544;B=0;wa(508,R+56|0,na|0);ta=B;B=0;if(ta&1){ta=Rb(1240,25216,0)|0;Ta=Q;Ua=ta}else{k[R+128>>2]=0;k[R+132>>2]=-1;k[R>>2]=27468;k[la>>2]=27488;B=0;va(448,na|0);ta=B;B=0;do if(ta&1){xa=Rb(1240,25216,0)|0;Va=Q;Wa=xa}else{k[na>>2]=27560;xa=R+36|0;k[xa>>2]=0;k[xa+4>>2]=0;k[xa+8>>2]=0;k[xa+12>>2]=0;k[R+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;B=0;wa(509,na|0,v|0);Aa=B;B=0;if(Aa&1){Aa=Rb(1240,25216,0)|0;Da=Q;Yua(v);Yua(xa);Ava(na);Va=Da;Wa=Aa;break}Yua(v);B=0;Aa=Ia(40,R|0,54188,37)|0;Da=B;B=0;c:do if(!(Da&1)?(B=0,Xa(239,Aa|0,0)|0,Ca=B,B=0,!(Ca&1)):0){Ca=Ab(20)|0;B=0;eb(502,S|0,54043,115);Ya=B;B=0;do if(!(Ya&1)){B=0;eb(502,T|0,54159,28);Za=B;B=0;if(Za&1){Za=Rb(1240,25216,0)|0;_a=Q;Yua(S);$a=Za;bb=_a;break}B=0;wa(510,U|0,na|0);_a=B;B=0;if(_a&1){_a=Rb(1240,25216,0)|0;cb=1;db=_a;gb=Q}else{B=0;ua(163,Ca|0,S|0,T|0,64,U|0);_a=B;B=0;if(_a&1)hb=1;else{B=0;eb(503,Ca|0,1240,229);B=0;hb=0}_a=Rb(1240,25216,0)|0;Za=Q;Yua(U);cb=hb;db=_a;gb=Za}Yua(T);Yua(S);if(cb){$a=db;bb=gb}else{jb=db;kb=gb;break c}}else{Za=Rb(1240,25216,0)|0;$a=Za;bb=Q}while(0);zb(Ca|0);jb=$a;kb=bb}else Oa=46;while(0);if((Oa|0)==46){Aa=Rb(1240,25216,0)|0;jb=Aa;kb=Q}k[R>>2]=27468;k[la>>2]=27488;k[na>>2]=27560;Yua(xa);Ava(na);vva(la);Pa=jb;Qa=kb;break a}while(0);Ta=Va;Ua=Wa}vva(la);Ra=Ta;Sa=Ua;Oa=20;break}B=0;ib(282,z|0,L|0,d|0,i|0);na=B;B=0;if(!(na&1)){if((k[L>>2]|0)!=(k[C>>2]|0)){na=V+56|0;ta=V+4|0;k[V>>2]=27524;k[na>>2]=27544;B=0;wa(508,V+56|0,ta|0);ka=B;B=0;if(ka&1){ka=Rb(1240,25216,0)|0;lb=Q;mb=ka}else{k[V+128>>2]=0;k[V+132>>2]=-1;k[V>>2]=27468;k[na>>2]=27488;B=0;va(448,ta|0);ka=B;B=0;do if(ka&1){Aa=Rb(1240,25216,0)|0;nb=Q;ob=Aa}else{k[ta>>2]=27560;Aa=V+36|0;k[Aa>>2]=0;k[Aa+4>>2]=0;k[Aa+8>>2]=0;k[Aa+12>>2]=0;k[V+52>>2]=16;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;B=0;wa(509,ta|0,u|0);Da=B;B=0;if(Da&1){Da=Rb(1240,25216,0)|0;qa=Q;Yua(u);Yua(Aa);Ava(ta);nb=qa;ob=Da;break}Yua(u);B=0;Da=Ia(40,V|0,54226,43)|0;qa=B;B=0;d:do if(!(qa&1)?(B=0,Xa(239,Da|0,0)|0,Ya=B,B=0,!(Ya&1)):0){Ya=Ab(20)|0;B=0;eb(502,W|0,54043,115);za=B;B=0;do if(!(za&1)){B=0;eb(502,X|0,54159,28);Za=B;B=0;if(Za&1){Za=Rb(1240,25216,0)|0;_a=Q;Yua(W);pb=Za;qb=_a;break}B=0;wa(510,Y|0,ta|0);_a=B;B=0;if(_a&1){_a=Rb(1240,25216,0)|0;rb=1;sb=_a;tb=Q}else{B=0;ua(163,Ya|0,W|0,X|0,65,Y|0);_a=B;B=0;if(_a&1)ub=1;else{B=0;eb(503,Ya|0,1240,229);B=0;ub=0}_a=Rb(1240,25216,0)|0;Za=Q;Yua(Y);rb=ub;sb=_a;tb=Za}Yua(X);Yua(W);if(rb){pb=sb;qb=tb}else{vb=sb;wb=tb;break d}}else{Za=Rb(1240,25216,0)|0;pb=Za;qb=Q}while(0);zb(Ya|0);vb=pb;wb=qb}else Oa=71;while(0);if((Oa|0)==71){Da=Rb(1240,25216,0)|0;vb=Da;wb=Q}k[V>>2]=27468;k[na>>2]=27488;k[ta>>2]=27560;Yua(Aa);Ava(ta);vva(na);Pa=vb;Qa=wb;break a}while(0);lb=nb;mb=ob}vva(na);Ra=lb;Sa=mb;Oa=20;break}B=0;La(27,A|0,E|0,F|0,e|0,i|0,1);ta=B;B=0;if(!(ta&1)){if((ma(k[F>>2]|0,k[E>>2]|0)|0)<1){ta=Z+56|0;ka=Z+4|0;k[Z>>2]=27524;k[ta>>2]=27544;B=0;wa(508,Z+56|0,ka|0);la=B;B=0;if(la&1){la=Rb(1240,25216,0)|0;xb=Q;yb=la}else{k[Z+128>>2]=0;k[Z+132>>2]=-1;k[Z>>2]=27468;k[ta>>2]=27488;B=0;va(448,ka|0);la=B;B=0;do if(la&1){Da=Rb(1240,25216,0)|0;Bb=Q;Cb=Da}else{k[ka>>2]=27560;Da=Z+36|0;k[Da>>2]=0;k[Da+4>>2]=0;k[Da+8>>2]=0;k[Da+12>>2]=0;k[Z+52>>2]=16;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;B=0;wa(509,ka|0,t|0);qa=B;B=0;if(qa&1){qa=Rb(1240,25216,0)|0;xa=Q;Yua(t);Yua(Da);Ava(ka);Bb=xa;Cb=qa;break}Yua(t);B=0;qa=Ia(40,Z|0,54270,13)|0;xa=B;B=0;e:do if(!(xa&1)?(B=0,Xa(239,qa|0,0)|0,za=B,B=0,!(za&1)):0){za=Ab(20)|0;B=0;eb(502,_|0,54043,115);Ca=B;B=0;do if(!(Ca&1)){B=0;eb(502,$|0,54159,28);Za=B;B=0;if(Za&1){Za=Rb(1240,25216,0)|0;_a=Q;Yua(_);Db=Za;Eb=_a;break}B=0;wa(510,aa|0,ka|0);_a=B;B=0;if(_a&1){_a=Rb(1240,25216,0)|0;Fb=_a;Gb=Q;Hb=1}else{B=0;ua(163,za|0,_|0,$|0,66,aa|0);_a=B;B=0;if(_a&1)Ib=1;else{B=0;eb(503,za|0,1240,229);B=0;Ib=0}_a=Rb(1240,25216,0)|0;Za=Q;Yua(aa);Fb=_a;Gb=Za;Hb=Ib}Yua($);Yua(_);if(Hb){Db=Fb;Eb=Gb}else{Jb=Fb;Lb=Gb;break e}}else{Za=Rb(1240,25216,0)|0;Db=Za;Eb=Q}while(0);zb(za|0);Jb=Db;Lb=Eb}else Oa=96;while(0);if((Oa|0)==96){qa=Rb(1240,25216,0)|0;Jb=qa;Lb=Q}k[Z>>2]=27468;k[ta>>2]=27488;k[ka>>2]=27560;Yua(Da);Ava(ka);vva(ta);Pa=Jb;Qa=Lb;break a}while(0);xb=Bb;yb=Cb}vva(ta);Ra=xb;Sa=yb;Oa=20;break}B=0;ib(282,G|0,I|0,f|0,j|0);ka=B;B=0;if(!(ka&1)){if((k[I>>2]|0)<1){ka=ba+56|0;la=ba+4|0;k[ba>>2]=27524;k[ka>>2]=27544;B=0;wa(508,ba+56|0,la|0);na=B;B=0;if(na&1){na=Rb(1240,25216,0)|0;Mb=Q;Ob=na}else{k[ba+128>>2]=0;k[ba+132>>2]=-1;k[ba>>2]=27468;k[ka>>2]=27488;B=0;va(448,la|0);na=B;B=0;do if(na&1){qa=Rb(1240,25216,0)|0;Sb=Q;Tb=qa}else{k[la>>2]=27560;qa=ba+36|0;k[qa>>2]=0;k[qa+4>>2]=0;k[qa+8>>2]=0;k[qa+12>>2]=0;k[ba+52>>2]=16;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;B=0;wa(509,la|0,s|0);xa=B;B=0;if(xa&1){xa=Rb(1240,25216,0)|0;Aa=Q;Yua(s);Yua(qa);Ava(la);Sb=Aa;Tb=xa;break}Yua(s);B=0;xa=Ia(40,ba|0,54284,26)|0;Aa=B;B=0;f:do if(Aa&1)Oa=121;else{B=0;Xa(239,xa|0,0)|0;Ca=B;B=0;if(Ca&1){Oa=121;break}Ca=Ab(20)|0;B=0;eb(502,ca|0,54043,115);Ya=B;B=0;do if(!(Ya&1)){B=0;eb(502,da|0,54159,28);Za=B;B=0;if(Za&1){Za=Rb(1240,25216,0)|0;_a=Q;Yua(ca);Ub=Za;Vb=_a;break}B=0;wa(510,ea|0,la|0);_a=B;B=0;if(_a&1){_a=Rb(1240,25216,0)|0;Wb=1;Xb=_a;Yb=Q}else{B=0;ua(163,Ca|0,ca|0,da|0,67,ea|0);_a=B;B=0;if(_a&1)Zb=1;else{B=0;eb(503,Ca|0,1240,229);B=0;Zb=0}_a=Rb(1240,25216,0)|0;Za=Q;Yua(ea);Wb=Zb;Xb=_a;Yb=Za}Yua(da);Yua(ca);if(Wb){Ub=Xb;Vb=Yb}else{_b=Xb;$b=Yb;break f}}else{Za=Rb(1240,25216,0)|0;Ub=Za;Vb=Q}while(0);zb(Ca|0);_b=Ub;$b=Vb}while(0);if((Oa|0)==121){xa=Rb(1240,25216,0)|0;_b=xa;$b=Q}k[ba>>2]=27468;k[ka>>2]=27488;k[la>>2]=27560;Yua(qa);Ava(la);vva(ka);Pa=_b;Qa=$b;break a}while(0);Mb=Sb;Ob=Tb}vva(ka);Ra=Mb;Sa=Ob;Oa=20;break}B=0;ib(282,H|0,L|0,g|0,j|0);la=B;B=0;if(!(la&1)){if((k[L>>2]|0)==(k[I>>2]|0)){B=0;ab(16,J|0,6,6,54369,+l);la=B;B=0;if(la&1){Oa=19;break}B=0;Ba(1,K|0,k[x>>2]|0,k[y>>2]|0,k[z>>2]|0,k[C>>2]|0,k[D>>2]|0,k[A>>2]|0,k[E>>2]|0,k[F>>2]|0,k[G>>2]|0,k[H>>2]|0,k[I>>2]|0,k[J>>2]|0)|0;la=B;B=0;if(la&1){Oa=19;break}B=0;La(29,a|0,0,0,k[K>>2]|0,k[I>>2]|0,k[F>>2]|0);la=B;B=0;if(la&1){Oa=19;break}la=k[x>>2]|0;if(la)Tqa(la);k[x>>2]=0;la=k[y>>2]|0;if(la)Tqa(la);k[y>>2]=0;la=k[z>>2]|0;if(la)Tqa(la);k[z>>2]=0;la=k[A>>2]|0;if(la)Tqa(la);k[A>>2]=0;la=k[G>>2]|0;if(la)Tqa(la);k[G>>2]=0;la=k[H>>2]|0;if(la)Tqa(la);k[H>>2]=0;la=k[K>>2]|0;if(la)Tqa(la);k[K>>2]=0;la=k[J>>2]|0;if(!la){r=m;return 0}p_(la);Sqa(la);r=m;return 0}la=fa+56|0;na=fa+4|0;k[fa>>2]=27524;k[la>>2]=27544;B=0;wa(508,fa+56|0,na|0);ta=B;B=0;if(ta&1){ta=Rb(1240,25216,0)|0;ac=Q;bc=ta}else{k[fa+128>>2]=0;k[fa+132>>2]=-1;k[fa>>2]=27468;k[la>>2]=27488;B=0;va(448,na|0);ta=B;B=0;do if(ta&1){xa=Rb(1240,25216,0)|0;cc=Q;dc=xa}else{k[na>>2]=27560;xa=fa+36|0;k[xa>>2]=0;k[xa+4>>2]=0;k[xa+8>>2]=0;k[xa+12>>2]=0;k[fa+52>>2]=16;k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;B=0;wa(509,na|0,q|0);Aa=B;B=0;if(Aa&1){Aa=Rb(1240,25216,0)|0;Da=Q;Yua(q);Yua(xa);Ava(na);cc=Da;dc=Aa;break}Yua(q);B=0;Aa=Ia(40,fa|0,54311,57)|0;Da=B;B=0;g:do if(Da&1)Oa=146;else{B=0;Xa(239,Aa|0,0)|0;Ya=B;B=0;if(Ya&1){Oa=146;break}Ya=Ab(20)|0;B=0;eb(502,ga|0,54043,115);za=B;B=0;do if(!(za&1)){B=0;eb(502,ha|0,54159,28);Za=B;B=0;if(Za&1){Za=Rb(1240,25216,0)|0;_a=Q;Yua(ga);ec=Za;fc=_a;break}B=0;wa(510,ia|0,na|0);_a=B;B=0;if(_a&1){_a=Rb(1240,25216,0)|0;gc=1;hc=_a;ic=Q}else{B=0;ua(163,Ya|0,ga|0,ha|0,68,ia|0);_a=B;B=0;if(_a&1)jc=1;else{B=0;eb(503,Ya|0,1240,229);B=0;jc=0}_a=Rb(1240,25216,0)|0;Za=Q;Yua(ia);gc=jc;hc=_a;ic=Za}Yua(ha);Yua(ga);if(gc){ec=hc;fc=ic}else{kc=hc;lc=ic;break g}}else{Za=Rb(1240,25216,0)|0;ec=Za;fc=Q}while(0);zb(Ya|0);kc=ec;lc=fc}while(0);if((Oa|0)==146){Aa=Rb(1240,25216,0)|0;kc=Aa;lc=Q}k[fa>>2]=27468;k[la>>2]=27488;k[na>>2]=27560;Yua(xa);Ava(na);vva(la);Pa=kc;Qa=lc;break a}while(0);ac=cc;bc=dc}vva(la);Ra=ac;Sa=bc;Oa=20}else Oa=19}else Oa=19}else Oa=19}else Oa=19}else Oa=19}else Oa=19;while(0);if((Oa|0)==19){bc=Rb(1240,25216,0)|0;Ra=Q;Sa=bc;Oa=20}if((Oa|0)==20){Pa=Sa;Qa=Ra}if((Qa|0)!=(Kb(1240)|0)){Ra=(Qa|0)==(Kb(25216)|0);Qa=Nb(Pa|0)|0;if(Ra){mta(Hc[k[(k[Qa>>2]|0)+8>>2]&511](Qa)|0,o)|0;Pb();r=m;return 0}else{mta(55001,n)|0;Pb();r=m;return 0}}n=Nb(Pa|0)|0;B=0;Pa=ya(420,n|0)|0;n=B;B=0;if(!(n&1)){mta(Pa,p)|0;Pb();r=m;return 0}m=Rb()|0;B=0;fb(4);p=B;B=0;if(p&1){p=Rb(0)|0;Dd(p)}else Qb(m|0);return 0}function Wd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,gb=0,hb=0.0;d=r;r=r+768|0;e=d+16|0;f=d+8|0;g=d;h=d+752|0;j=d+740|0;l=d+728|0;m=d+716|0;n=d+712|0;o=d+576|0;p=d+560|0;q=d+276|0;s=d+264|0;t=d+424|0;u=d+116|0;v=d+104|0;w=d+92|0;x=d+288|0;y=d+80|0;z=d+68|0;A=d+56|0;C=d+128|0;D=d+44|0;E=d+32|0;F=d+20|0;k[n>>2]=0;B=0;fb(3);G=B;B=0;a:do if(!(G&1)?(B=0,wa(507,n|0,c|0),H=B,B=0,!(H&1)):0){H=k[n>>2]|0;if((((Ita(H,54383)|0)!=0?(Ita(H,54394)|0)!=0:0)?(Ita(H,54411)|0)!=0:0)?(Ita(H,54425)|0)!=0:0)if(Ita(H,54438)|0)if(((Ita(H,54449)|0)!=0?(Ita(H,54460)|0)!=0:0)?(Ita(H,54473)|0)!=0:0){if(!(Ita(H,54486)|0)){I=o+56|0;J=o+4|0;k[o>>2]=27524;k[I>>2]=27544;B=0;wa(508,o+56|0,J|0);K=B;B=0;if(K&1){K=Rb(1240,25216,0)|0;L=Q;M=K}else{k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[I>>2]=27488;B=0;va(448,J|0);K=B;B=0;do if(K&1){N=Rb(1240,25216,0)|0;O=Q;P=N}else{k[J>>2]=27560;N=o+36|0;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;k[o+52>>2]=16;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;B=0;wa(509,J|0,m|0);R=B;B=0;if(R&1){R=Rb(1240,25216,0)|0;S=Q;Yua(m);Yua(N);Ava(J);O=S;P=R;break}Yua(m);B=0;R=Ia(40,o|0,54500,35)|0;S=B;B=0;b:do if(S&1)T=29;else{B=0;Xa(239,R|0,0)|0;U=B;B=0;if(U&1){T=29;break}U=Ab(20)|0;B=0;eb(502,p|0,54536,91);V=B;B=0;do if(!(V&1)){B=0;eb(502,q|0,54628,16);W=B;B=0;if(W&1){W=Rb(1240,25216,0)|0;X=Q;Yua(p);Y=X;Z=W;break}B=0;wa(510,s|0,J|0);W=B;B=0;if(W&1){W=Rb(1240,25216,0)|0;_=Q;$=W;aa=1}else{B=0;ua(163,U|0,p|0,q|0,80,s|0);W=B;B=0;if(W&1)ba=1;else{B=0;eb(503,U|0,1240,229);B=0;ba=0}W=Rb(1240,25216,0)|0;X=Q;Yua(s);_=X;$=W;aa=ba}Yua(q);Yua(p);if(aa){Y=_;Z=$}else{ca=_;da=$;break b}}else{W=Rb(1240,25216,0)|0;Y=Q;Z=W}while(0);zb(U|0);ca=Y;da=Z}while(0);if((T|0)==29){R=Rb(1240,25216,0)|0;ca=Q;da=R}k[o>>2]=27468;k[I>>2]=27488;k[J>>2]=27560;Yua(N);Ava(J);vva(I);ea=ca;fa=da;break a}while(0);L=O;M=P}vva(I);ga=L;ha=M;T=5;break}if(!(Ita(H,54645)|0)){J=t+56|0;K=t+4|0;k[t>>2]=27524;k[J>>2]=27544;B=0;wa(508,t+56|0,K|0);R=B;B=0;if(R&1){R=Rb(1240,25216,0)|0;ia=Q;ja=R}else{k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[J>>2]=27488;B=0;va(448,K|0);R=B;B=0;do if(R&1){S=Rb(1240,25216,0)|0;ka=Q;la=S}else{k[K>>2]=27560;S=t+36|0;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;k[t+52>>2]=16;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;B=0;wa(509,K|0,l|0);V=B;B=0;if(V&1){V=Rb(1240,25216,0)|0;W=Q;Yua(l);Yua(S);Ava(K);ka=W;la=V;break}Yua(l);B=0;V=Ia(40,t|0,54659,35)|0;W=B;B=0;c:do if(W&1)T=53;else{B=0;Xa(239,V|0,0)|0;X=B;B=0;if(X&1){T=53;break}X=Ab(20)|0;B=0;eb(502,u|0,54536,91);ma=B;B=0;do if(!(ma&1)){B=0;eb(502,v|0,54628,16);na=B;B=0;if(na&1){na=Rb(1240,25216,0)|0;oa=Q;Yua(u);pa=oa;qa=na;break}B=0;wa(510,w|0,K|0);na=B;B=0;if(na&1){na=Rb(1240,25216,0)|0;ra=1;sa=Q;xa=na}else{B=0;ua(163,X|0,u|0,v|0,87,w|0);na=B;B=0;if(na&1)za=1;else{B=0;eb(503,X|0,1240,229);B=0;za=0}na=Rb(1240,25216,0)|0;oa=Q;Yua(w);ra=za;sa=oa;xa=na}Yua(v);Yua(u);if(ra){pa=sa;qa=xa}else{Aa=sa;Ba=xa;break c}}else{na=Rb(1240,25216,0)|0;pa=Q;qa=na}while(0);zb(X|0);Aa=pa;Ba=qa}while(0);if((T|0)==53){V=Rb(1240,25216,0)|0;Aa=Q;Ba=V}k[t>>2]=27468;k[J>>2]=27488;k[K>>2]=27560;Yua(S);Ava(K);vva(J);ea=Aa;fa=Ba;break a}while(0);ia=ka;ja=la}vva(J);ga=ia;ha=ja;T=5;break}if(!(Ita(H,54695)|0)){K=x+56|0;R=x+4|0;k[x>>2]=27524;k[K>>2]=27544;B=0;wa(508,x+56|0,R|0);I=B;B=0;if(I&1){I=Rb(1240,25216,0)|0;Ca=Q;Da=I}else{k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[K>>2]=27488;B=0;va(448,R|0);I=B;B=0;do if(I&1){V=Rb(1240,25216,0)|0;Ea=Q;Fa=V}else{k[R>>2]=27560;V=x+36|0;k[V>>2]=0;k[V+4>>2]=0;k[V+8>>2]=0;k[V+12>>2]=0;k[x+52>>2]=16;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;B=0;wa(509,R|0,j|0);W=B;B=0;if(W&1){W=Rb(1240,25216,0)|0;N=Q;Yua(j);Yua(V);Ava(R);Ea=N;Fa=W;break}Yua(j);B=0;W=Ia(40,x|0,54712,38)|0;N=B;B=0;d:do if(N&1)T=77;else{B=0;Xa(239,W|0,0)|0;ma=B;B=0;if(ma&1){T=77;break}ma=Ab(20)|0;B=0;eb(502,y|0,54536,91);U=B;B=0;do if(!(U&1)){B=0;eb(502,z|0,54628,16);na=B;B=0;if(na&1){na=Rb(1240,25216,0)|0;oa=Q;Yua(y);Ga=oa;Ha=na;break}B=0;wa(510,A|0,R|0);na=B;B=0;if(na&1){na=Rb(1240,25216,0)|0;Ja=1;Ka=Q;La=na}else{B=0;ua(163,ma|0,y|0,z|0,96,A|0);na=B;B=0;if(na&1)Ma=1;else{B=0;eb(503,ma|0,1240,229);B=0;Ma=0}na=Rb(1240,25216,0)|0;oa=Q;Yua(A);Ja=Ma;Ka=oa;La=na}Yua(z);Yua(y);if(Ja){Ga=Ka;Ha=La}else{Na=Ka;Oa=La;break d}}else{na=Rb(1240,25216,0)|0;Ga=Q;Ha=na}while(0);zb(ma|0);Na=Ga;Oa=Ha}while(0);if((T|0)==77){W=Rb(1240,25216,0)|0;Na=Q;Oa=W}k[x>>2]=27468;k[K>>2]=27488;k[R>>2]=27560;Yua(V);Ava(R);vva(K);ea=Na;fa=Oa;break a}while(0);Ca=Ea;Da=Fa}vva(K);ga=Ca;ha=Da;T=5;break}do if(!(Ita(H,54751)|0)){B=0;R=ya(422,48)|0;I=B;B=0;if(I&1){T=4;break a}Pa=R;Qa=54763;Ra=Pa+48|0;do{i[Pa>>0]=i[Qa>>0]|0;Pa=Pa+1|0;Qa=Qa+1|0}while((Pa|0)<(Ra|0));Sa=R}else{if(!(Ita(H,54811)|0)){B=0;V=ya(422,30)|0;I=B;B=0;if(I&1){T=4;break a}Pa=V;Qa=110826;Ra=Pa+30|0;do{i[Pa>>0]=i[Qa>>0]|0;Pa=Pa+1|0;Qa=Qa+1|0}while((Pa|0)<(Ra|0));Sa=V;break}if(!(Ita(H,54824)|0)){B=0;R=ya(422,4)|0;I=B;B=0;if(I&1){T=4;break a}i[R>>0]=52;i[R+1>>0]=46;i[R+2>>0]=57;i[R+3>>0]=0;Sa=R;break}if(!(Ita(H,54840)|0)){B=0;R=ya(422,25)|0;I=B;B=0;if(I&1){T=4;break a}Pa=R;Qa=110887;Ra=Pa+25|0;do{i[Pa>>0]=i[Qa>>0]|0;Pa=Pa+1|0;Qa=Qa+1|0}while((Pa|0)<(Ra|0));Sa=R;break}if(!(Ita(H,54852)|0)){B=0;V=ya(422,18)|0;I=B;B=0;if(I&1){T=4;break a}Pa=V;Qa=110912;Ra=Pa+18|0;do{i[Pa>>0]=i[Qa>>0]|0;Pa=Pa+1|0;Qa=Qa+1|0}while((Pa|0)<(Ra|0));Sa=V;break}if(!(Ita(H,54870)|0)){B=0;R=ya(422,29)|0;I=B;B=0;if(I&1){T=4;break a}Pa=R;Qa=54889;Ra=Pa+29|0;do{i[Pa>>0]=i[Qa>>0]|0;Pa=Pa+1|0;Qa=Qa+1|0}while((Pa|0)<(Ra|0));Sa=R;break}if(!(Ita(H,54918)|0)){B=0;V=ya(422,13)|0;I=B;B=0;if(I&1){T=4;break a}Pa=V;Qa=54926;Ra=Pa+13|0;do{i[Pa>>0]=i[Qa>>0]|0;Pa=Pa+1|0;Qa=Qa+1|0}while((Pa|0)<(Ra|0));Sa=V;break}if(!(Ita(H,54939)|0)){B=0;R=ya(422,7)|0;I=B;B=0;if(I&1){T=4;break a};i[R>>0]=i[54949]|0;i[R+1>>0]=i[54950]|0;i[R+2>>0]=i[54951]|0;i[R+3>>0]=i[54952]|0;i[R+4>>0]=i[54953]|0;i[R+5>>0]=i[54954]|0;i[R+6>>0]=i[54955]|0;Sa=R;break}if(!(Ita(H,54956)|0)){B=0;R=ya(422,6)|0;I=B;B=0;if(I&1){T=4;break a};i[R>>0]=i[54968]|0;i[R+1>>0]=i[54969]|0;i[R+2>>0]=i[54970]|0;i[R+3>>0]=i[54971]|0;i[R+4>>0]=i[54972]|0;i[R+5>>0]=i[54973]|0;Sa=R;break}if(!(Ita(H,54974)|0)){B=0;R=ya(422,7)|0;I=B;B=0;if(I&1){T=4;break a};i[R>>0]=i[54984]|0;i[R+1>>0]=i[54985]|0;i[R+2>>0]=i[54986]|0;i[R+3>>0]=i[54987]|0;i[R+4>>0]=i[54988]|0;i[R+5>>0]=i[54989]|0;i[R+6>>0]=i[54990]|0;Sa=R;break}R=C+56|0;I=C+4|0;k[C>>2]=27524;k[R>>2]=27544;B=0;wa(508,C+56|0,I|0);J=B;B=0;if(J&1){J=Rb(1240,25216,0)|0;Ta=Q;Ua=J}else{k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[R>>2]=27488;B=0;va(448,I|0);J=B;B=0;do if(J&1){W=Rb(1240,25216,0)|0;Va=Q;Wa=W}else{k[I>>2]=27560;W=C+36|0;k[W>>2]=0;k[W+4>>2]=0;k[W+8>>2]=0;k[W+12>>2]=0;k[C+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,I|0,h|0);N=B;B=0;if(N&1){N=Rb(1240,25216,0)|0;S=Q;Yua(h);Yua(W);Ava(I);Va=S;Wa=N;break}Yua(h);B=0;N=Ia(40,C|0,54991,9)|0;S=B;B=0;e:do if(S&1)T=132;else{U=k[n>>2]|0;X=Lta(U)|0;B=0;na=Ia(40,N|0,U|0,X|0)|0;X=B;B=0;if(X&1){T=132;break}B=0;X=Ia(40,na|0,146481,18)|0;na=B;B=0;if(na&1){T=132;break}B=0;Xa(239,X|0,0)|0;X=B;B=0;if(X&1){T=132;break}X=Ab(20)|0;B=0;eb(502,D|0,54536,91);na=B;B=0;do if(!(na&1)){B=0;eb(502,E|0,54628,16);U=B;B=0;if(U&1){U=Rb(1240,25216,0)|0;oa=Q;Yua(D);Ya=oa;Za=U;break}B=0;wa(510,F|0,I|0);U=B;B=0;if(U&1){U=Rb(1240,25216,0)|0;_a=1;$a=Q;ab=U}else{B=0;ua(163,X|0,D|0,E|0,155,F|0);U=B;B=0;if(U&1)bb=1;else{B=0;eb(503,X|0,1240,229);B=0;bb=0}U=Rb(1240,25216,0)|0;oa=Q;Yua(F);_a=bb;$a=oa;ab=U}Yua(E);Yua(D);if(_a){Ya=$a;Za=ab}else{cb=$a;db=ab;break e}}else{U=Rb(1240,25216,0)|0;Ya=Q;Za=U}while(0);zb(X|0);cb=Ya;db=Za}while(0);if((T|0)==132){N=Rb(1240,25216,0)|0;cb=Q;db=N}k[C>>2]=27468;k[R>>2]=27488;k[I>>2]=27560;Yua(W);Ava(I);vva(R);ea=cb;fa=db;break a}while(0);Ta=Va;Ua=Wa}vva(R);ga=Ta;ha=Ua;T=5;break a}while(0);B=0;wa(511,b|0,Sa|0);H=B;B=0;if(H&1){T=4;break}else gb=Sa}else{hb=0.0;T=148}else{hb=1.0;T=148}else{hb=0.0;T=148}if((T|0)==148){B=0;ta(54,a|0,+hb);H=B;B=0;if(H&1){T=4;break}else gb=0}H=k[n>>2]|0;if(H)Tqa(H);k[n>>2]=0;if(!gb){r=d;return 0}Tqa(gb);r=d;return 0}else T=4;while(0);if((T|0)==4){gb=Rb(1240,25216,0)|0;ga=Q;ha=gb;T=5}if((T|0)==5){ea=ga;fa=ha}if((ea|0)!=(Kb(1240)|0)){ha=(ea|0)==(Kb(25216)|0);ea=Nb(fa|0)|0;if(ha){mta(Hc[k[(k[ea>>2]|0)+8>>2]&511](ea)|0,f)|0;Pb();r=d;return 0}else{mta(55001,e)|0;Pb();r=d;return 0}}e=Nb(fa|0)|0;B=0;fa=ya(420,e|0)|0;e=B;B=0;if(!(e&1)){mta(fa,g)|0;Pb();r=d;return 0}d=Rb()|0;B=0;fb(4);g=B;B=0;if(g&1){g=Rb(0)|0;Dd(g)}else Qb(d|0);return 0}function Xd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=r;r=r+32|0;d=c+16|0;e=c+8|0;f=c;g=c+24|0;h=c+20|0;k[g>>2]=0;B=0;fb(3);i=B;B=0;if(((!(i&1)?(B=0,wa(506,h|0,b|0),b=B,B=0,!(b&1)):0)?(B=0,wa(512,g|0,k[h>>2]|0),h=B,B=0,!(h&1)):0)?(B=0,wa(511,a|0,k[g>>2]|0),a=B,B=0,!(a&1)):0){a=k[g>>2]|0;if(a)Tqa(a);k[g>>2]=0;r=c;return 0}g=Rb(1240,25216,0)|0;a=Q;if((a|0)!=(Kb(1240)|0)){h=(a|0)==(Kb(25216)|0);a=Nb(g|0)|0;if(h){mta(Hc[k[(k[a>>2]|0)+8>>2]&511](a)|0,e)|0;Pb();r=c;return 0}else{mta(55001,d)|0;Pb();r=c;return 0}}d=Nb(g|0)|0;B=0;g=ya(420,d|0)|0;d=B;B=0;if(!(d&1)){mta(g,f)|0;Pb();r=c;return 0}c=Rb()|0;B=0;fb(4);f=B;B=0;if(f&1){f=Rb(0)|0;Dd(f)}else Qb(c|0);return 0}function Yd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=r;r=r+32|0;d=c+16|0;e=c+8|0;f=c;g=c+20|0;k[g>>2]=0;B=0;fb(3);h=B;B=0;if(((!(h&1)?(B=0,wa(507,g|0,b|0),b=B,B=0,!(b&1)):0)?(B=0,b=Xa(240,k[g>>2]|0,1)|0,h=B,B=0,!(h&1)):0)?(B=0,ta(54,a|0,+(+(b|0))),b=B,B=0,!(b&1)):0){b=k[g>>2]|0;if(b)Tqa(b);k[g>>2]=0;r=c;return 0}g=Rb(1240,25216,0)|0;b=Q;if((b|0)!=(Kb(1240)|0)){a=(b|0)==(Kb(25216)|0);b=Nb(g|0)|0;if(a){mta(Hc[k[(k[b>>2]|0)+8>>2]&511](b)|0,e)|0;Pb();r=c;return 0}else{mta(55001,d)|0;Pb();r=c;return 0}}d=Nb(g|0)|0;B=0;g=ya(420,d|0)|0;d=B;B=0;if(!(d&1)){mta(g,f)|0;Pb();r=c;return 0}c=Rb()|0;B=0;fb(4);f=B;B=0;if(f&1){f=Rb(0)|0;Dd(f)}else Qb(c|0);return 0}function Zd(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0;h=r;r=r+336|0;i=h+316|0;j=h+304|0;l=h+300|0;m=h+296|0;n=h+160|0;o=h+12|0;p=h+24|0;q=h;k[l>>2]=0;B=0;s=Xa(241,0,0)|0;t=B;B=0;do if(!(t&1)?(B=0,u=ya(423,52)|0,v=B,B=0,!(v&1)):0){B=0;Ka(10,u|0,c|0,d|0,e|0,f|0,g|0,s|0,0);v=B;B=0;if(v&1){v=Rb(1240,25216,0)|0;w=Q;Sqa(u);x=v;y=w;break}B=0;va(449,u|0);w=B;B=0;if(((!(w&1)?(B=0,va(450,u|0),w=B,B=0,!(w&1)):0)?(B=0,eb(504,u|0,l|0,m|0),w=B,B=0,!(w&1)):0)?(vh(u),Sqa(u),B=0,fb(5),u=B,B=0,!(u&1)):0){k[b>>2]=k[m>>2];k[a>>2]=k[l>>2];r=h;return 0}else z=9}else z=9;while(0);if((z|0)==9){l=Rb(1240,25216,0)|0;x=l;y=Q}if((y|0)==(Kb(1240)|0)){l=Nb(x|0)|0;B=0;va(451,l|0);l=B;B=0;if(!(l&1)){Pb();r=h;return 0}l=Rb()|0;a=Q;B=0;fb(4);m=B;B=0;if(m&1){A=Rb(0)|0;C=Q;Dd(A)}else{D=l;E=a;Qb(D|0)}}a=(y|0)==(Kb(25216)|0);y=Nb(x|0)|0;if(!a){a=n+56|0;x=n+4|0;k[n>>2]=27524;k[a>>2]=27544;B=0;wa(508,n+56|0,x|0);l=B;B=0;a:do if(l&1){m=Rb()|0;F=Q;G=m;z=39}else{k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[a>>2]=27488;B=0;va(448,x|0);m=B;B=0;do if(m&1){b=Rb()|0;H=Q;I=b}else{k[x>>2]=27560;b=n+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[n+52>>2]=16;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;B=0;wa(509,x|0,i|0);s=B;B=0;if(s&1){s=Rb()|0;g=Q;Yua(i);Yua(b);Ava(x);H=g;I=s;break}Yua(i);B=0;Ia(40,n|0,55051,31)|0;s=B;B=0;do if(!(s&1)?(B=0,wa(510,o|0,x|0),g=B,B=0,!(g&1)):0){B=0;ya(424,o|0)|0;g=B;B=0;if(g&1){g=Rb()|0;f=Q;Yua(o);J=g;K=f;break}Yua(o);k[n>>2]=27468;k[a>>2]=27488;k[x>>2]=27560;Yua(b);Ava(x);vva(a);Pb();r=h;return 0}else z=40;while(0);if((z|0)==40){s=Rb()|0;J=s;K=Q}k[n>>2]=27468;k[a>>2]=27488;k[x>>2]=27560;Yua(b);Ava(x);vva(a);L=J;M=K;break a}while(0);F=H;G=I;z=39}while(0);if((z|0)==39){vva(a);L=G;M=F}B=0;fb(4);F=B;B=0;if(F&1){A=Rb(0)|0;C=Q;Dd(A)}else{D=L;E=M;Qb(D|0)}}M=p+56|0;L=p+4|0;k[p>>2]=27524;k[M>>2]=27544;B=0;wa(508,p+56|0,L|0);F=B;B=0;b:do if(F&1){G=Rb()|0;N=Q;O=G;z=44}else{k[p+128>>2]=0;k[p+132>>2]=-1;k[p>>2]=27468;k[M>>2]=27488;B=0;va(448,L|0);G=B;B=0;do if(G&1){a=Rb()|0;P=Q;R=a}else{k[L>>2]=27560;a=p+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[p+52>>2]=16;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;B=0;wa(509,L|0,j|0);I=B;B=0;if(I&1){I=Rb()|0;H=Q;Yua(j);Yua(a);Ava(L);P=H;R=I;break}Yua(j);B=0;I=Ia(40,p|0,55030,20)|0;H=B;B=0;do if(((!(H&1)?(K=Hc[k[(k[y>>2]|0)+8>>2]&511](y)|0,J=Lta(K)|0,B=0,x=Ia(40,I|0,K|0,J|0)|0,J=B,B=0,!(J&1)):0)?(B=0,Ia(40,x|0,104966,2)|0,x=B,B=0,!(x&1)):0)?(B=0,wa(510,q|0,L|0),x=B,B=0,!(x&1)):0){B=0;ya(424,q|0)|0;x=B;B=0;if(x&1){x=Rb()|0;J=Q;Yua(q);S=x;T=J;break}Yua(q);k[p>>2]=27468;k[M>>2]=27488;k[L>>2]=27560;Yua(a);Ava(L);vva(M);Pb();r=h;return 0}else z=45;while(0);if((z|0)==45){I=Rb()|0;S=I;T=Q}k[p>>2]=27468;k[M>>2]=27488;k[L>>2]=27560;Yua(a);Ava(L);vva(M);U=S;V=T;break b}while(0);N=P;O=R;z=44}while(0);if((z|0)==44){vva(M);U=O;V=N}B=0;fb(4);N=B;B=0;if(N&1){A=Rb(0)|0;C=Q;Dd(A)}else{D=U;E=V;Qb(D|0)}return 0}function _d(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0;e=r;r=r+112|0;f=e+100|0;g=e+96|0;h=e+92|0;i=e+88|0;j=e+72|0;l=e+64|0;m=e+56|0;n=e+48|0;o=e+40|0;q=e+32|0;s=e+24|0;t=e+16|0;u=e+8|0;v=e;k[g>>2]=a;k[h>>2]=b;k[i>>2]=c;p[e+80>>3]=d;p[j>>3]=+p[k[g>>2]>>3]-+p[k[i>>2]>>3];p[n>>3]=+p[(k[g>>2]|0)+8>>3]-+p[(k[i>>2]|0)+8>>3];p[l>>3]=+p[k[h>>2]>>3]-+p[k[i>>2]>>3];p[o>>3]=+p[(k[h>>2]|0)+8>>3]-+p[(k[i>>2]|0)+8>>3];p[m>>3]=+p[k[g>>2]>>3]-+p[k[h>>2]>>3];p[q>>3]=+p[(k[g>>2]|0)+8>>3]-+p[(k[h>>2]|0)+8>>3];p[s>>3]=+p[j>>3]*+p[j>>3]+ +p[n>>3]*+p[n>>3];p[t>>3]=+p[l>>3]*+p[l>>3]+ +p[o>>3]*+p[o>>3];p[u>>3]=+p[m>>3]*+p[m>>3]+ +p[q>>3]*+p[q>>3];p[v>>3]=+p[t>>3]>+p[s>>3]?+p[t>>3]:+p[s>>3];p[v>>3]=+p[u>>3]>+p[v>>3]?+p[u>>3]:+p[v>>3];if(+p[v>>3]>(+p[k[g>>2]>>3]*+p[k[g>>2]>>3]+ +p[(k[g>>2]|0)+8>>3]*+p[(k[g>>2]|0)+8>>3])*.05+.02){k[f>>2]=1;w=k[f>>2]|0;r=e;return w|0}else{k[f>>2]=0;w=k[f>>2]|0;r=e;return w|0}return 0}function $d(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;k[c>>2]=a;vc(k[c>>2]|0)}function ae(a){a=a|0;var b=0,c=0,d=0,e=0;b=r;r=r+16|0;c=b+8|0;d=b+4|0;k[c>>2]=a;a=lua(k[c>>2]|0)|0;k[d>>2]=a;if(k[d>>2]|0){e=k[d>>2]|0;r=b;return e|0}mta(55083,b)|0;$d(1);e=k[d>>2]|0;r=b;return e|0}function be(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;k[c>>2]=a;mua(k[c>>2]|0);r=b;return}function ce(){var a=0;a=r;r=r+32|0;mta(55107,a)|0;mta(55156,a+8|0)|0;mta(55221,a+16|0)|0;$d(1);r=a;return}function de(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0;d=r;r=r+2128|0;e=d+48|0;f=d+40|0;g=d+32|0;h=d+24|0;j=d+16|0;l=d+8|0;m=d;n=d+72|0;o=d+68|0;q=d+64|0;s=d+60|0;t=d+56|0;u=d+52|0;v=d+80|0;k[n>>2]=a;k[o>>2]=b;k[q>>2]=c;k[(k[q>>2]|0)+8>>2]=0;k[(k[q>>2]|0)+4>>2]=0;k[k[q>>2]>>2]=0;k[(k[q>>2]|0)+20>>2]=0;k[(k[q>>2]|0)+16>>2]=0;k[(k[q>>2]|0)+12>>2]=0;k[(k[q>>2]|0)+36>>2]=0;k[(k[q>>2]|0)+32>>2]=0;k[(k[q>>2]|0)+28>>2]=0;k[(k[q>>2]|0)+24>>2]=0;k[(k[q>>2]|0)+40>>2]=1;k[(k[q>>2]|0)+56>>2]=0;k[(k[q>>2]|0)+52>>2]=0;k[(k[q>>2]|0)+48>>2]=0;k[(k[q>>2]|0)+44>>2]=0;k[(k[q>>2]|0)+72>>2]=0;k[(k[q>>2]|0)+68>>2]=0;k[(k[q>>2]|0)+64>>2]=0;k[(k[q>>2]|0)+60>>2]=0;k[(k[q>>2]|0)+76>>2]=0;k[(k[q>>2]|0)+84>>2]=0;k[(k[q>>2]|0)+80>>2]=0;k[(k[q>>2]|0)+96>>2]=0;k[(k[q>>2]|0)+92>>2]=0;k[(k[q>>2]|0)+100>>2]=1;k[(k[q>>2]|0)+104>>2]=0;k[(k[q>>2]|0)+108>>2]=0;k[(k[q>>2]|0)+128>>2]=0;k[(k[q>>2]|0)+88>>2]=0;k[(k[q>>2]|0)+132>>2]=-1;k[(k[q>>2]|0)+124>>2]=1;p[(k[q>>2]|0)+136>>3]=0.0;p[(k[q>>2]|0)+160>>3]=-1.0;k[(k[q>>2]|0)+116>>2]=0;k[(k[q>>2]|0)+112>>2]=0;k[s>>2]=0;while(1){if((k[s>>2]|0)>=(k[n>>2]|0))break;k[t>>2]=0;while(1){if(!(i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0))break;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==112)k[k[q>>2]>>2]=1;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==114)k[(k[q>>2]|0)+4>>2]=1;do if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==113){k[(k[q>>2]|0)+8>>2]=1;if(!((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+((k[t>>2]|0)+1)>>0]|0)>=48?(i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+((k[t>>2]|0)+1)>>0]|0)<=57:0))w=12;if((w|0)==12?(w=0,(i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+((k[t>>2]|0)+1)>>0]|0)!=46):0){p[(k[q>>2]|0)+136>>3]=20.0;break}k[u>>2]=0;while(1){if(!((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+((k[t>>2]|0)+1)>>0]|0)>=48?(i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+((k[t>>2]|0)+1)>>0]|0)<=57:0))w=16;if((w|0)==16?(w=0,(i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+((k[t>>2]|0)+1)>>0]|0)!=46):0)break;k[t>>2]=(k[t>>2]|0)+1;i[v+(k[u>>2]|0)>>0]=i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0;k[u>>2]=(k[u>>2]|0)+1}i[v+(k[u>>2]|0)>>0]=0;x=+zta(v,0);p[(k[q>>2]|0)+136>>3]=x}while(0);do if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==97){k[(k[q>>2]|0)+8>>2]=1;if(!((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+((k[t>>2]|0)+1)>>0]|0)>=48?(i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+((k[t>>2]|0)+1)>>0]|0)<=57:0))w=23;if((w|0)==23?(w=0,(i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+((k[t>>2]|0)+1)>>0]|0)!=46):0){k[(k[q>>2]|0)+12>>2]=1;break}k[(k[q>>2]|0)+16>>2]=1;k[u>>2]=0;while(1){if(!((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+((k[t>>2]|0)+1)>>0]|0)>=48?(i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+((k[t>>2]|0)+1)>>0]|0)<=57:0))w=27;if((w|0)==27?(w=0,(i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+((k[t>>2]|0)+1)>>0]|0)!=46):0)break;k[t>>2]=(k[t>>2]|0)+1;i[v+(k[u>>2]|0)>>0]=i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0;k[u>>2]=(k[u>>2]|0)+1}i[v+(k[u>>2]|0)>>0]=0;x=+zta(v,0);p[(k[q>>2]|0)+160>>3]=x;if(+p[(k[q>>2]|0)+160>>3]<=0.0){mta(55265,m)|0;$d(1)}}while(0);if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==117){k[(k[q>>2]|0)+8>>2]=1;k[(k[q>>2]|0)+20>>2]=1}if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==65)k[(k[q>>2]|0)+24>>2]=1;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==99)k[(k[q>>2]|0)+28>>2]=1;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==119)k[(k[q>>2]|0)+32>>2]=1;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==87)k[(k[q>>2]|0)+32>>2]=2;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==106)k[(k[q>>2]|0)+36>>2]=1;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==122)k[(k[q>>2]|0)+40>>2]=0;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==101)k[(k[q>>2]|0)+44>>2]=1;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==118)k[(k[q>>2]|0)+48>>2]=1;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==110)k[(k[q>>2]|0)+52>>2]=1;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==103)k[(k[q>>2]|0)+56>>2]=1;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==66)k[(k[q>>2]|0)+60>>2]=1;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==80)k[(k[q>>2]|0)+64>>2]=1;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==78)k[(k[q>>2]|0)+68>>2]=1;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==69)k[(k[q>>2]|0)+72>>2]=1;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==79)k[(k[q>>2]|0)+80>>2]=1;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==88)k[(k[q>>2]|0)+84>>2]=1;do if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==111){if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+((k[t>>2]|0)+1)>>0]|0)!=50)break;k[t>>2]=(k[t>>2]|0)+1;k[(k[q>>2]|0)+124>>2]=2}while(0);if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==89){c=(k[q>>2]|0)+128|0;k[c>>2]=(k[c>>2]|0)+1}a:do if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==83){k[(k[q>>2]|0)+132>>2]=0;while(1){if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+((k[t>>2]|0)+1)>>0]|0)<48)break a;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+((k[t>>2]|0)+1)>>0]|0)>57)break a;k[t>>2]=(k[t>>2]|0)+1;k[(k[q>>2]|0)+132>>2]=((k[(k[q>>2]|0)+132>>2]|0)*10|0)+((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)-48)}}while(0);if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==105)k[(k[q>>2]|0)+92>>2]=1;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==70)k[(k[q>>2]|0)+96>>2]=1;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==108)k[(k[q>>2]|0)+100>>2]=0;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==115)k[(k[q>>2]|0)+104>>2]=1;if(!((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)!=68?(i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)!=76:0)){k[(k[q>>2]|0)+8>>2]=1;k[(k[q>>2]|0)+88>>2]=1}if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==67)k[(k[q>>2]|0)+108>>2]=1;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==81)k[(k[q>>2]|0)+112>>2]=1;if((i[(k[(k[o>>2]|0)+(k[s>>2]<<2)>>2]|0)+(k[t>>2]|0)>>0]|0)==86){c=(k[q>>2]|0)+116|0;k[c>>2]=(k[c>>2]|0)+1}k[t>>2]=(k[t>>2]|0)+1}k[s>>2]=(k[s>>2]|0)+1}if(((k[k[q>>2]>>2]|0)==0?(k[(k[q>>2]|0)+4>>2]|0)==0:0)?(k[(k[q>>2]|0)+8>>2]|0)==0:0)y=(k[(k[q>>2]|0)+28>>2]|0)!=0;else y=1;k[(k[q>>2]|0)+120>>2]=y&1;x=+ca(+(+p[(k[q>>2]|0)+136>>3]*3.141592653589793/180.0));p[(k[q>>2]|0)+144>>3]=x;y=k[q>>2]|0;if(+p[(k[q>>2]|0)+144>>3]==1.0)p[y+152>>3]=0.0;else{x=+aa(+((+p[y+144>>3]+1.0)/(1.0-+p[(k[q>>2]|0)+144>>3])))*.475;p[(k[q>>2]|0)+152>>3]=x}y=(k[q>>2]|0)+144|0;p[y>>3]=+p[y>>3]*+p[(k[q>>2]|0)+144>>3];if((k[(k[q>>2]|0)+4>>2]|0)!=0?(k[(k[q>>2]|0)+76>>2]|0)!=0:0){mta(55314,l)|0;$d(1)}if((k[(k[q>>2]|0)+4>>2]|0)==0?(k[k[q>>2]>>2]|0)==0:0)k[(k[q>>2]|0)+12>>2]=0;if(!((k[(k[q>>2]|0)+4>>2]|0)==0?(k[k[q>>2]>>2]|0)!=0:0))k[(k[q>>2]|0)+24>>2]=0;do if(k[(k[q>>2]|0)+32>>2]|0){if((k[k[q>>2]>>2]|0)==0?(k[(k[q>>2]|0)+8>>2]|0)==0:0)break;k[(k[q>>2]|0)+32>>2]=0;if(!(k[(k[q>>2]|0)+112>>2]|0)){mta(55383,j)|0;mta(55444,h)|0}}while(0);if(!(k[(k[q>>2]|0)+36>>2]|0)){r=d;return}if(!(k[(k[q>>2]|0)+68>>2]|0)){r=d;return}if(k[(k[q>>2]|0)+112>>2]|0){r=d;return}mta(55507,g)|0;mta(55564,f)|0;mta(55624,e)|0;r=d;return}function ee(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0;d=r;r=r+224|0;e=d+176|0;f=d+168|0;g=d+160|0;h=d+152|0;i=d+128|0;j=d+120|0;l=d+96|0;m=d+88|0;n=d+64|0;o=d+56|0;q=d+48|0;s=d+32|0;t=d+16|0;u=d;v=d+216|0;w=d+212|0;x=d+208|0;y=d+200|0;z=d+192|0;A=d+184|0;k[v>>2]=a;k[w>>2]=b;k[x>>2]=c;c=k[(k[x>>2]|0)+4>>2]|0;k[u>>2]=k[k[x>>2]>>2];k[u+4>>2]=c;mta(55674,u)|0;k[y+4>>2]=k[k[k[x>>2]>>2]>>2]&3;k[y>>2]=k[k[k[x>>2]>>2]>>2]^k[y+4>>2];if((k[y>>2]|0)==(k[(k[v>>2]|0)+49768>>2]|0))mta(55710,d+8|0)|0;else{u=k[y+4>>2]|0;k[t>>2]=k[y>>2];k[t+4>>2]=u;mta(55733,t)|0}k[y+4>>2]=k[(k[k[x>>2]>>2]|0)+4>>2]&3;k[y>>2]=k[(k[k[x>>2]>>2]|0)+4>>2]^k[y+4>>2];if((k[y>>2]|0)==(k[(k[v>>2]|0)+49768>>2]|0))mta(55753,d+24|0)|0;else{t=k[y+4>>2]|0;k[s>>2]=k[y>>2];k[s+4>>2]=t;mta(55776,s)|0}k[y+4>>2]=k[(k[k[x>>2]>>2]|0)+8>>2]&3;k[y>>2]=k[(k[k[x>>2]>>2]|0)+8>>2]^k[y+4>>2];if((k[y>>2]|0)==(k[(k[v>>2]|0)+49768>>2]|0))mta(55796,d+40|0)|0;else{s=k[y+4>>2]|0;k[q>>2]=k[y>>2];k[q+4>>2]=s;mta(55819,q)|0}k[A>>2]=k[(k[k[x>>2]>>2]|0)+((k[27620+(k[(k[x>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];q=(((k[(k[x>>2]|0)+4>>2]|0)+1|0)%3|0)+3|0;if(!(k[A>>2]|0)){k[o>>2]=q;mta(55839,o)|0}else{o=k[A>>2]|0;B=+p[k[A>>2]>>3];C=+p[(k[A>>2]|0)+8>>3];k[n>>2]=q;k[n+4>>2]=o;p[n+8>>3]=B;p[n+16>>3]=C;mta(55862,n)|0}k[A>>2]=k[(k[k[x>>2]>>2]|0)+((k[27632+(k[(k[x>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];n=(((k[(k[x>>2]|0)+4>>2]|0)+2|0)%3|0)+3|0;if(!(k[A>>2]|0)){k[m>>2]=n;mta(55901,m)|0}else{m=k[A>>2]|0;C=+p[k[A>>2]>>3];B=+p[(k[A>>2]|0)+8>>3];k[l>>2]=n;k[l+4>>2]=m;p[l+8>>3]=C;p[l+16>>3]=B;mta(55924,l)|0}k[A>>2]=k[(k[k[x>>2]>>2]|0)+((k[(k[x>>2]|0)+4>>2]|0)+3<<2)>>2];l=(k[(k[x>>2]|0)+4>>2]|0)+3|0;if(!(k[A>>2]|0)){k[j>>2]=l;mta(55963,j)|0}else{j=k[A>>2]|0;B=+p[k[A>>2]>>3];C=+p[(k[A>>2]|0)+8>>3];k[i>>2]=l;k[i+4>>2]=j;p[i+8>>3]=B;p[i+16>>3]=C;mta(55986,i)|0}if(k[(k[w>>2]|0)+120>>2]|0){k[z+4>>2]=k[(k[k[x>>2]>>2]|0)+24>>2]&1;k[z>>2]=k[(k[k[x>>2]>>2]|0)+24>>2]&-4;if((k[z>>2]|0)!=(k[(k[v>>2]|0)+49776>>2]|0)){i=k[z+4>>2]|0;k[h>>2]=k[z>>2];k[h+4>>2]=i;mta(56025,h)|0}k[z+4>>2]=k[(k[k[x>>2]>>2]|0)+28>>2]&1;k[z>>2]=k[(k[k[x>>2]>>2]|0)+28>>2]&-4;if((k[z>>2]|0)!=(k[(k[v>>2]|0)+49776>>2]|0)){h=k[z+4>>2]|0;k[g>>2]=k[z>>2];k[g+4>>2]=h;mta(56045,g)|0}k[z+4>>2]=k[(k[k[x>>2]>>2]|0)+32>>2]&1;k[z>>2]=k[(k[k[x>>2]>>2]|0)+32>>2]&-4;if((k[z>>2]|0)!=(k[(k[v>>2]|0)+49776>>2]|0)){g=k[z+4>>2]|0;k[f>>2]=k[z>>2];k[f+4>>2]=g;mta(56065,f)|0}}if(!(k[(k[w>>2]|0)+12>>2]|0)){r=d;return}p[e>>3]=+p[(k[k[x>>2]>>2]|0)+(k[(k[v>>2]|0)+49712>>2]<<3)>>3];mta(56085,e)|0;r=d;return}function fe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;d=r;r=r+256|0;e=d+184|0;f=d+176|0;g=d+152|0;h=d+144|0;i=d+136|0;j=d+120|0;l=d+88|0;m=d+80|0;n=d+56|0;o=d+48|0;q=d+40|0;s=d+24|0;t=d;u=d+240|0;v=d+232|0;w=d+224|0;x=d+216|0;y=d+208|0;k[u>>2]=a;k[d+236>>2]=b;k[v>>2]=c;c=k[(k[v>>2]|0)+4>>2]|0;b=k[(k[k[v>>2]>>2]|0)+32>>2]|0;k[t>>2]=k[k[v>>2]>>2];k[t+4>>2]=c;k[t+8>>2]=b;mta(56113,t)|0;k[w+4>>2]=k[k[k[v>>2]>>2]>>2]&1;k[w>>2]=k[k[k[v>>2]>>2]>>2]&-4;if((k[w>>2]|0)==(k[(k[u>>2]|0)+49776>>2]|0))mta(56163,d+16|0)|0;else{t=k[w+4>>2]|0;k[s>>2]=k[w>>2];k[s+4>>2]=t;mta(55733,s)|0}k[w+4>>2]=k[(k[k[v>>2]>>2]|0)+4>>2]&1;k[w>>2]=k[(k[k[v>>2]>>2]|0)+4>>2]&-4;if((k[w>>2]|0)==(k[(k[u>>2]|0)+49776>>2]|0))mta(56188,d+32|0)|0;else{s=k[w+4>>2]|0;k[q>>2]=k[w>>2];k[q+4>>2]=s;mta(55776,q)|0}k[y>>2]=k[(k[k[v>>2]>>2]|0)+(2+(k[(k[v>>2]|0)+4>>2]|0)<<2)>>2];q=2+(k[(k[v>>2]|0)+4>>2]|0)|0;if(!(k[y>>2]|0)){k[o>>2]=q;mta(55839,o)|0}else{o=k[y>>2]|0;z=+p[k[y>>2]>>3];A=+p[(k[y>>2]|0)+8>>3];k[n>>2]=q;k[n+4>>2]=o;p[n+8>>3]=z;p[n+16>>3]=A;mta(55862,n)|0}k[y>>2]=k[(k[k[v>>2]>>2]|0)+(3-(k[(k[v>>2]|0)+4>>2]|0)<<2)>>2];n=3-(k[(k[v>>2]|0)+4>>2]|0)|0;if(!(k[y>>2]|0)){k[m>>2]=n;mta(55901,m)|0}else{m=k[y>>2]|0;A=+p[k[y>>2]>>3];z=+p[(k[y>>2]|0)+8>>3];k[l>>2]=n;k[l+4>>2]=m;p[l+8>>3]=A;p[l+16>>3]=z;mta(55924,l)|0}k[x+4>>2]=k[(k[k[v>>2]>>2]|0)+24>>2]&3;k[x>>2]=k[(k[k[v>>2]>>2]|0)+24>>2]^k[x+4>>2];if((k[x>>2]|0)==(k[(k[u>>2]|0)+49768>>2]|0))mta(56213,d+112|0)|0;else{l=k[x+4>>2]|0;k[j>>2]=k[x>>2];k[j+4>>2]=l;mta(56025,j)|0}k[x+4>>2]=k[(k[k[v>>2]>>2]|0)+28>>2]&3;k[x>>2]=k[(k[k[v>>2]>>2]|0)+28>>2]^k[x+4>>2];if((k[x>>2]|0)==(k[(k[u>>2]|0)+49768>>2]|0))mta(56236,d+128|0)|0;else{u=k[x+4>>2]|0;k[i>>2]=k[x>>2];k[i+4>>2]=u;mta(56045,i)|0}k[y>>2]=k[(k[k[v>>2]>>2]|0)+(4+(k[(k[v>>2]|0)+4>>2]|0)<<2)>>2];i=4+(k[(k[v>>2]|0)+4>>2]|0)|0;if(!(k[y>>2]|0)){k[h>>2]=i;mta(56259,h)|0}else{h=k[y>>2]|0;z=+p[k[y>>2]>>3];A=+p[(k[y>>2]|0)+8>>3];k[g>>2]=i;k[g+4>>2]=h;p[g+8>>3]=z;p[g+16>>3]=A;mta(56290,g)|0}k[y>>2]=k[(k[k[v>>2]>>2]|0)+(5-(k[(k[v>>2]|0)+4>>2]|0)<<2)>>2];g=5-(k[(k[v>>2]|0)+4>>2]|0)|0;if(!(k[y>>2]|0)){k[f>>2]=g;mta(56337,f)|0;r=d;return}else{f=k[y>>2]|0;A=+p[k[y>>2]>>3];z=+p[(k[y>>2]|0)+8>>3];k[e>>2]=g;k[e+4>>2]=f;p[e+8>>3]=A;p[e+16>>3]=z;mta(56368,e)|0;r=d;return}}function ge(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;k[c>>2]=a;k[k[c>>2]>>2]=0;k[(k[c>>2]|0)+4>>2]=0;k[(k[c>>2]|0)+8>>2]=0;k[(k[c>>2]|0)+12>>2]=0;k[(k[c>>2]|0)+16>>2]=0;k[(k[c>>2]|0)+20>>2]=0;k[(k[c>>2]|0)+24>>2]=0;k[(k[c>>2]|0)+28>>2]=0;k[(k[c>>2]|0)+32>>2]=0;k[(k[c>>2]|0)+36>>2]=0;k[(k[c>>2]|0)+40>>2]=0;k[(k[c>>2]|0)+44>>2]=0;k[(k[c>>2]|0)+48>>2]=0;k[(k[c>>2]|0)+52>>2]=0;r=b;return}function he(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+16|0;c=b+4|0;d=b;k[c>>2]=a;k[(k[c>>2]|0)+40>>2]=0;k[(k[c>>2]|0)+44>>2]=0;k[(k[c>>2]|0)+4>>2]=k[k[c>>2]>>2];k[d>>2]=(k[(k[c>>2]|0)+4>>2]|0)+4;k[(k[c>>2]|0)+8>>2]=(k[d>>2]|0)+(k[(k[c>>2]|0)+24>>2]|0)-(((k[d>>2]|0)>>>0)%((k[(k[c>>2]|0)+24>>2]|0)>>>0)|0);k[(k[c>>2]|0)+48>>2]=k[(k[c>>2]|0)+36>>2];k[(k[c>>2]|0)+12>>2]=0;r=b;return}function ie(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0;f=r;r=r+32|0;g=f+16|0;h=f+12|0;i=f+8|0;j=f+4|0;l=f;k[g>>2]=a;k[h>>2]=b;k[i>>2]=c;k[j>>2]=d;k[l>>2]=e;if((k[l>>2]|0)>>>0>4)k[(k[g>>2]|0)+24>>2]=k[l>>2];else k[(k[g>>2]|0)+24>>2]=4;l=ma((((k[h>>2]|0)-1|0)/(k[(k[g>>2]|0)+24>>2]|0)|0)+1|0,k[(k[g>>2]|0)+24>>2]|0)|0;k[(k[g>>2]|0)+28>>2]=l;k[(k[g>>2]|0)+32>>2]=k[i>>2];if(!(k[j>>2]|0))k[(k[g>>2]|0)+36>>2]=k[i>>2];else k[(k[g>>2]|0)+36>>2]=k[j>>2];j=(ma(k[(k[g>>2]|0)+36>>2]|0,k[(k[g>>2]|0)+28>>2]|0)|0)+4|0;i=ae(j+(k[(k[g>>2]|0)+24>>2]|0)|0)|0;k[k[g>>2]>>2]=i;k[k[k[g>>2]>>2]>>2]=0;he(k[g>>2]|0);r=f;return}function je(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;k[c>>2]=a;while(1){if(!(k[k[c>>2]>>2]|0))break;k[(k[c>>2]|0)+4>>2]=k[k[k[c>>2]>>2]>>2];be(k[k[c>>2]>>2]|0);k[k[c>>2]>>2]=k[(k[c>>2]|0)+4>>2]}r=b;return}function ke(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;b=r;r=r+16|0;c=b+12|0;d=b+8|0;e=b+4|0;f=b;k[c>>2]=a;a=k[c>>2]|0;if(k[(k[c>>2]|0)+12>>2]|0){k[d>>2]=k[a+12>>2];k[(k[c>>2]|0)+12>>2]=k[k[(k[c>>2]|0)+12>>2]>>2];g=k[c>>2]|0;h=g+40|0;i=k[h>>2]|0;j=i+1|0;k[h>>2]=j;l=k[d>>2]|0;r=b;return l|0}if(!(k[a+48>>2]|0)){if(!(k[k[(k[c>>2]|0)+4>>2]>>2]|0)){a=(ma(k[(k[c>>2]|0)+32>>2]|0,k[(k[c>>2]|0)+28>>2]|0)|0)+4|0;m=ae(a+(k[(k[c>>2]|0)+24>>2]|0)|0)|0;k[e>>2]=m;k[k[(k[c>>2]|0)+4>>2]>>2]=k[e>>2];k[k[e>>2]>>2]=0}k[(k[c>>2]|0)+4>>2]=k[k[(k[c>>2]|0)+4>>2]>>2];k[f>>2]=(k[(k[c>>2]|0)+4>>2]|0)+4;k[(k[c>>2]|0)+8>>2]=(k[f>>2]|0)+(k[(k[c>>2]|0)+24>>2]|0)-(((k[f>>2]|0)>>>0)%((k[(k[c>>2]|0)+24>>2]|0)>>>0)|0);k[(k[c>>2]|0)+48>>2]=k[(k[c>>2]|0)+32>>2]}k[d>>2]=k[(k[c>>2]|0)+8>>2];k[(k[c>>2]|0)+8>>2]=(k[(k[c>>2]|0)+8>>2]|0)+(k[(k[c>>2]|0)+28>>2]|0);f=(k[c>>2]|0)+48|0;k[f>>2]=(k[f>>2]|0)+-1;f=(k[c>>2]|0)+44|0;k[f>>2]=(k[f>>2]|0)+1;g=k[c>>2]|0;h=g+40|0;i=k[h>>2]|0;j=i+1|0;k[h>>2]=j;l=k[d>>2]|0;r=b;return l|0}function le(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;d=c+4|0;e=c;k[d>>2]=a;k[e>>2]=b;k[k[e>>2]>>2]=k[(k[d>>2]|0)+12>>2];k[(k[d>>2]|0)+12>>2]=k[e>>2];e=(k[d>>2]|0)+40|0;k[e>>2]=(k[e>>2]|0)+-1;r=c;return}function me(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+16|0;c=b+4|0;d=b;k[c>>2]=a;k[(k[c>>2]|0)+16>>2]=k[k[c>>2]>>2];k[d>>2]=(k[(k[c>>2]|0)+16>>2]|0)+4;k[(k[c>>2]|0)+20>>2]=(k[d>>2]|0)+(k[(k[c>>2]|0)+24>>2]|0)-(((k[d>>2]|0)>>>0)%((k[(k[c>>2]|0)+24>>2]|0)>>>0)|0);k[(k[c>>2]|0)+52>>2]=k[(k[c>>2]|0)+36>>2];r=b;return}function ne(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=r;r=r+16|0;c=b+12|0;d=b+8|0;e=b+4|0;f=b;k[d>>2]=a;if((k[(k[d>>2]|0)+20>>2]|0)==(k[(k[d>>2]|0)+8>>2]|0)){k[c>>2]=0;g=k[c>>2]|0;r=b;return g|0}if(!(k[(k[d>>2]|0)+52>>2]|0)){k[(k[d>>2]|0)+16>>2]=k[k[(k[d>>2]|0)+16>>2]>>2];k[f>>2]=(k[(k[d>>2]|0)+16>>2]|0)+4;k[(k[d>>2]|0)+20>>2]=(k[f>>2]|0)+(k[(k[d>>2]|0)+24>>2]|0)-(((k[f>>2]|0)>>>0)%((k[(k[d>>2]|0)+24>>2]|0)>>>0)|0);k[(k[d>>2]|0)+52>>2]=k[(k[d>>2]|0)+32>>2]}k[e>>2]=k[(k[d>>2]|0)+20>>2];k[(k[d>>2]|0)+20>>2]=(k[(k[d>>2]|0)+20>>2]|0)+(k[(k[d>>2]|0)+28>>2]|0);f=(k[d>>2]|0)+52|0;k[f>>2]=(k[f>>2]|0)+-1;k[c>>2]=k[e>>2];g=k[c>>2]|0;r=b;return g|0}function oe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=r;r=r+32|0;f=e+16|0;g=e+12|0;h=e+8|0;i=e+4|0;j=e;k[f>>2]=a;k[g>>2]=b;k[h>>2]=c;k[i>>2]=d;d=ae((k[h>>2]|0)+(k[(k[f>>2]|0)+24>>2]|0)|0)|0;k[(k[f>>2]|0)+49772>>2]=d;k[j>>2]=k[(k[f>>2]|0)+49772>>2];k[(k[f>>2]|0)+49768>>2]=(k[j>>2]|0)+(k[(k[f>>2]|0)+24>>2]|0)-(((k[j>>2]|0)>>>0)%((k[(k[f>>2]|0)+24>>2]|0)>>>0)|0);k[k[(k[f>>2]|0)+49768>>2]>>2]=k[(k[f>>2]|0)+49768>>2];k[(k[(k[f>>2]|0)+49768>>2]|0)+4>>2]=k[(k[f>>2]|0)+49768>>2];k[(k[(k[f>>2]|0)+49768>>2]|0)+8>>2]=k[(k[f>>2]|0)+49768>>2];k[(k[(k[f>>2]|0)+49768>>2]|0)+12>>2]=0;k[(k[(k[f>>2]|0)+49768>>2]|0)+16>>2]=0;k[(k[(k[f>>2]|0)+49768>>2]|0)+20>>2]=0;if(!(k[(k[g>>2]|0)+120>>2]|0)){r=e;return}g=ae((k[i>>2]|0)+(k[(k[f>>2]|0)+56+24>>2]|0)|0)|0;k[(k[f>>2]|0)+49780>>2]=g;k[j>>2]=k[(k[f>>2]|0)+49780>>2];k[(k[f>>2]|0)+49776>>2]=(k[j>>2]|0)+(k[(k[f>>2]|0)+56+24>>2]|0)-(((k[j>>2]|0)>>>0)%((k[(k[f>>2]|0)+56+24>>2]|0)>>>0)|0);k[k[(k[f>>2]|0)+49776>>2]>>2]=k[(k[f>>2]|0)+49776>>2];k[(k[(k[f>>2]|0)+49776>>2]|0)+4>>2]=k[(k[f>>2]|0)+49776>>2];k[(k[(k[f>>2]|0)+49776>>2]|0)+8>>2]=0;k[(k[(k[f>>2]|0)+49776>>2]|0)+12>>2]=0;k[(k[(k[f>>2]|0)+49776>>2]|0)+16>>2]=0;k[(k[(k[f>>2]|0)+49776>>2]|0)+20>>2]=0;k[(k[(k[f>>2]|0)+49776>>2]|0)+24>>2]=k[(k[f>>2]|0)+49768>>2];k[(k[(k[f>>2]|0)+49776>>2]|0)+28>>2]=k[(k[f>>2]|0)+49768>>2];k[(k[(k[f>>2]|0)+49776>>2]|0)+32>>2]=0;k[(k[(k[f>>2]|0)+49768>>2]|0)+24>>2]=k[(k[f>>2]|0)+49776>>2];k[(k[(k[f>>2]|0)+49768>>2]|0)+28>>2]=k[(k[f>>2]|0)+49776>>2];k[(k[(k[f>>2]|0)+49768>>2]|0)+32>>2]=k[(k[f>>2]|0)+49776>>2];r=e;return}function pe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=r;r=r+16|0;d=c+8|0;e=c+4|0;f=c;k[d>>2]=a;k[e>>2]=b;k[(k[d>>2]|0)+49696>>2]=((((k[(k[d>>2]|0)+49676>>2]|0)+(k[(k[d>>2]|0)+49680>>2]|0)<<3)+4-1|0)>>>0)/4|0;k[f>>2]=(k[(k[d>>2]|0)+49696>>2]|0)+2<<2;if(k[k[e>>2]>>2]|0){k[(k[d>>2]|0)+49700>>2]=(((k[f>>2]|0)+4-1|0)>>>0)/4|0;k[f>>2]=(k[(k[d>>2]|0)+49700>>2]|0)+1<<2}e=(k[d>>2]|0)+112|0;b=k[f>>2]|0;if((k[(k[d>>2]|0)+49648>>2]|0)<=4092){g=4092;ie(e,b,4092,g,8);r=c;return}g=k[(k[d>>2]|0)+49648>>2]|0;ie(e,b,4092,g,8);r=c;return}function qe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=r;r=r+16|0;d=c+8|0;e=c+4|0;f=c;k[d>>2]=a;k[e>>2]=b;k[(k[d>>2]|0)+49704>>2]=6+((k[(k[e>>2]|0)+120>>2]|0)*3|0);b=(ma((k[(k[e>>2]|0)+124>>2]|0)+1|0,(k[(k[e>>2]|0)+124>>2]|0)+2|0)|0)/2|0;k[f>>2]=b+((k[(k[d>>2]|0)+49704>>2]|0)-3)<<2;k[(k[d>>2]|0)+49708>>2]=(((k[f>>2]|0)+8-1|0)>>>0)/8|0;k[(k[d>>2]|0)+49712>>2]=(k[(k[d>>2]|0)+49708>>2]|0)+(k[(k[d>>2]|0)+49684>>2]|0)+(k[(k[e>>2]|0)+24>>2]|0);b=k[d>>2]|0;if(!(k[(k[e>>2]|0)+12>>2]|0)){if(((k[b+49684>>2]|0)+(k[(k[e>>2]|0)+24>>2]|0)|0)>0)k[f>>2]=k[(k[d>>2]|0)+49712>>2]<<3}else k[f>>2]=(k[b+49712>>2]|0)+1<<3;if(k[(k[e>>2]|0)+48>>2]|0){if((k[f>>2]|0)>>>0<28)g=8}else if((k[f>>2]|0)>>>0<28?(k[(k[e>>2]|0)+52>>2]|0)!=0:0)g=8;if((g|0)==8)k[f>>2]=28;if(((k[(k[d>>2]|0)+49648>>2]<<1)-2|0)>4092)h=(k[(k[d>>2]|0)+49648>>2]<<1)-2|0;else h=4092;ie(k[d>>2]|0,k[f>>2]|0,4092,h,4);h=k[d>>2]|0;if(k[(k[e>>2]|0)+120>>2]|0){ie(h+56|0,36,508,508,4);oe(k[d>>2]|0,k[e>>2]|0,k[(k[d>>2]|0)+28>>2]|0,k[(k[d>>2]|0)+56+28>>2]|0);r=c;return}else{oe(h,k[e>>2]|0,k[(k[d>>2]|0)+28>>2]|0,0);r=c;return}}function re(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;d=c+4|0;e=c;k[d>>2]=a;k[e>>2]=b;k[(k[e>>2]|0)+4>>2]=0;k[(k[e>>2]|0)+12>>2]=0;le(k[d>>2]|0,k[e>>2]|0);r=c;return}function se(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=r;r=r+16|0;c=b+8|0;d=b+4|0;e=b;k[d>>2]=a;while(1){a=ne(k[d>>2]|0)|0;k[e>>2]=a;if(!(k[e>>2]|0)){f=3;break}if(k[(k[e>>2]|0)+4>>2]|0){f=5;break}}if((f|0)==3){k[c>>2]=0;g=k[c>>2]|0;r=b;return g|0}else if((f|0)==5){k[c>>2]=k[e>>2];g=k[c>>2]|0;r=b;return g|0}return 0}function te(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;d=c+4|0;e=c;k[d>>2]=a;k[e>>2]=b;k[(k[e>>2]|0)+4>>2]=0;k[(k[e>>2]|0)+8>>2]=0;le((k[d>>2]|0)+56|0,k[e>>2]|0);r=c;return}function ue(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=r;r=r+16|0;c=b+8|0;d=b+4|0;e=b;k[d>>2]=a;while(1){a=ne((k[d>>2]|0)+56|0)|0;k[e>>2]=a;if(!(k[e>>2]|0)){f=3;break}if(k[(k[e>>2]|0)+4>>2]|0){f=5;break}}if((f|0)==3){k[c>>2]=0;g=k[c>>2]|0;r=b;return g|0}else if((f|0)==5){k[c>>2]=k[e>>2];g=k[c>>2]|0;r=b;return g|0}return 0}function ve(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;d=c+4|0;e=c;k[d>>2]=a;k[e>>2]=b;k[(k[e>>2]|0)+((k[(k[d>>2]|0)+49696>>2]|0)+1<<2)>>2]=-32768;le((k[d>>2]|0)+112|0,k[e>>2]|0);r=c;return}function we(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=r;r=r+16|0;c=b+8|0;d=b+4|0;e=b;k[d>>2]=a;while(1){a=ne((k[d>>2]|0)+112|0)|0;k[e>>2]=a;if(!(k[e>>2]|0)){f=3;break}if((k[(k[e>>2]|0)+((k[(k[d>>2]|0)+49696>>2]|0)+1<<2)>>2]|0)!=-32768){f=5;break}}if((f|0)==3){k[c>>2]=0;g=k[c>>2]|0;r=b;return g|0}else if((f|0)==5){k[c>>2]=k[e>>2];g=k[c>>2]|0;r=b;return g|0}return 0}function xe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;d=c+4|0;e=c;k[d>>2]=a;k[e>>2]=b;k[(k[e>>2]|0)+4>>2]=0;le((k[d>>2]|0)+224|0,k[e>>2]|0);r=c;return}function ye(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=r;r=r+16|0;c=b+8|0;d=b+4|0;e=b;k[d>>2]=a;while(1){a=ne((k[d>>2]|0)+224|0)|0;k[e>>2]=a;if(!(k[e>>2]|0)){f=3;break}if(k[(k[e>>2]|0)+4>>2]|0){f=5;break}}if((f|0)==3){k[c>>2]=0;g=k[c>>2]|0;r=b;return g|0}else if((f|0)==5){k[c>>2]=k[e>>2];g=k[c>>2]|0;r=b;return g|0}return 0}function ze(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;d=r;r=r+32|0;e=d+24|0;f=d+20|0;g=d+16|0;h=d+12|0;i=d+8|0;j=d+4|0;l=d;k[e>>2]=a;k[f>>2]=b;k[g>>2]=c;k[h>>2]=k[(k[e>>2]|0)+112>>2];k[l>>2]=k[(k[f>>2]|0)+40>>2];a:do if(((k[l>>2]|0)+(k[(k[e>>2]|0)+112+36>>2]|0)|0)<=(k[g>>2]|0)){k[h>>2]=k[k[h>>2]>>2];k[l>>2]=(k[l>>2]|0)+(k[(k[e>>2]|0)+112+36>>2]|0);while(1){if(((k[l>>2]|0)+(k[(k[e>>2]|0)+112+32>>2]|0)|0)>(k[g>>2]|0))break a;k[h>>2]=k[k[h>>2]>>2];k[l>>2]=(k[l>>2]|0)+(k[(k[e>>2]|0)+112+32>>2]|0)}}while(0);k[j>>2]=(k[h>>2]|0)+4;k[i>>2]=(k[j>>2]|0)+(k[(k[e>>2]|0)+112+24>>2]|0)-(((k[j>>2]|0)>>>0)%((k[(k[e>>2]|0)+112+24>>2]|0)>>>0)|0);j=(k[i>>2]|0)+(ma(k[(k[e>>2]|0)+112+28>>2]|0,(k[g>>2]|0)-(k[l>>2]|0)|0)|0)|0;r=d;return j|0}function Ae(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;d=c+4|0;e=c;k[d>>2]=a;k[e>>2]=b;je(k[d>>2]|0);be(k[(k[d>>2]|0)+49772>>2]|0);if(k[(k[e>>2]|0)+120>>2]|0){je((k[d>>2]|0)+56|0);be(k[(k[d>>2]|0)+49780>>2]|0)}je((k[d>>2]|0)+112|0);if(!(k[(k[e>>2]|0)+8>>2]|0)){r=c;return}je((k[d>>2]|0)+224|0);if(((!(+p[(k[e>>2]|0)+136>>3]>0.0)?(k[(k[e>>2]|0)+12>>2]|0)==0:0)?(k[(k[e>>2]|0)+16>>2]|0)==0:0)?(k[(k[e>>2]|0)+20>>2]|0)==0:0){r=c;return}je((k[d>>2]|0)+280|0);je((k[d>>2]|0)+336|0);r=c;return}function Be(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=r;r=r+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;k[e>>2]=a;k[f>>2]=b;k[g>>2]=c;c=ke(k[e>>2]|0)|0;k[k[g>>2]>>2]=c;k[k[k[g>>2]>>2]>>2]=k[(k[e>>2]|0)+49768>>2];k[(k[k[g>>2]>>2]|0)+4>>2]=k[(k[e>>2]|0)+49768>>2];k[(k[k[g>>2]>>2]|0)+8>>2]=k[(k[e>>2]|0)+49768>>2];k[(k[k[g>>2]>>2]|0)+12>>2]=0;k[(k[k[g>>2]>>2]|0)+16>>2]=0;k[(k[k[g>>2]>>2]|0)+20>>2]=0;if(k[(k[f>>2]|0)+120>>2]|0){k[(k[k[g>>2]>>2]|0)+24>>2]=k[(k[e>>2]|0)+49776>>2];k[(k[k[g>>2]>>2]|0)+28>>2]=k[(k[e>>2]|0)+49776>>2];k[(k[k[g>>2]>>2]|0)+32>>2]=k[(k[e>>2]|0)+49776>>2]}k[h>>2]=0;while(1){if((k[h>>2]|0)>=(k[(k[e>>2]|0)+49684>>2]|0))break;p[(k[k[g>>2]>>2]|0)+((k[(k[e>>2]|0)+49708>>2]|0)+(k[h>>2]|0)<<3)>>3]=0.0;k[h>>2]=(k[h>>2]|0)+1}if(!(k[(k[f>>2]|0)+12>>2]|0)){i=k[g>>2]|0;j=i+4|0;k[j>>2]=0;r=d;return}p[(k[k[g>>2]>>2]|0)+(k[(k[e>>2]|0)+49712>>2]<<3)>>3]=-1.0;i=k[g>>2]|0;j=i+4|0;k[j>>2]=0;r=d;return}function Ce(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;d=c+4|0;e=c;k[d>>2]=a;k[e>>2]=b;b=ke((k[d>>2]|0)+56|0)|0;k[k[e>>2]>>2]=b;k[k[k[e>>2]>>2]>>2]=k[(k[d>>2]|0)+49776>>2];k[(k[k[e>>2]>>2]|0)+4>>2]=k[(k[d>>2]|0)+49776>>2];k[(k[k[e>>2]>>2]|0)+8>>2]=0;k[(k[k[e>>2]>>2]|0)+12>>2]=0;k[(k[k[e>>2]>>2]|0)+16>>2]=0;k[(k[k[e>>2]>>2]|0)+20>>2]=0;k[(k[k[e>>2]>>2]|0)+24>>2]=k[(k[d>>2]|0)+49768>>2];k[(k[k[e>>2]>>2]|0)+28>>2]=k[(k[d>>2]|0)+49768>>2];k[(k[k[e>>2]>>2]|0)+32>>2]=0;k[(k[e>>2]|0)+4>>2]=0;r=c;return}function De(){var a=0,b=0,c=0,d=0,e=0;a=r;r=r+32|0;b=a+16|0;c=a+8|0;d=a;e=a+24|0;k[e>>2]=1;p[b>>3]=.5;p[6]=1.0;p[5]=1.0;p[c>>3]=1.0;do{p[d>>3]=+p[c>>3];p[6]=+p[6]*+p[b>>3];if(k[e>>2]|0)p[5]=+p[5]*2.0;k[e>>2]=((k[e>>2]|0)!=0^1)&1;p[c>>3]=+p[6]+1.0;if(!(+p[c>>3]!=1.0))break}while(+p[c>>3]!=+p[d>>3]);p[5]=+p[5]+1.0;p[7]=(+p[6]*8.0+3.0)*+p[6];p[8]=(+p[6]*16.0+3.0)*+p[6];p[9]=(+p[6]*12.0+2.0)*+p[6];p[10]=(+p[6]*64.0+9.0)*+p[6]*+p[6];p[11]=(+p[6]*96.0+10.0)*+p[6];p[12]=(+p[6]*48.0+4.0)*+p[6];p[13]=(+p[6]*576.0+44.0)*+p[6]*+p[6];p[14]=(+p[6]*56.0+7.0)*+p[6];p[15]=(+p[6]*28.0+3.0)*+p[6];p[16]=(+p[6]*288.0+26.0)*+p[6]*+p[6];r=a;return}function Ee(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0;f=r;r=r+112|0;g=f+100|0;h=f+96|0;i=f+92|0;j=f+88|0;l=f+84|0;m=f+64|0;n=f+56|0;o=f+48|0;q=f+40|0;s=f+32|0;t=f+24|0;u=f+16|0;v=f+80|0;w=f+76|0;x=f+72|0;y=f+8|0;z=f;k[g>>2]=a;k[h>>2]=b;k[i>>2]=c;k[j>>2]=d;k[l>>2]=e;p[y>>3]=+p[k[h>>2]>>3];p[z>>3]=+p[k[j>>2]>>3];k[w>>2]=0;k[v>>2]=0;if((+p[z>>3]>+p[y>>3]|0)==(+p[z>>3]>-+p[y>>3]|0)){p[m>>3]=+p[y>>3];e=(k[v>>2]|0)+1|0;k[v>>2]=e;p[y>>3]=+p[(k[h>>2]|0)+(e<<3)>>3]}else{p[m>>3]=+p[z>>3];e=(k[w>>2]|0)+1|0;k[w>>2]=e;p[z>>3]=+p[(k[j>>2]|0)+(e<<3)>>3]}k[x>>2]=0;a:do if((k[v>>2]|0)<(k[g>>2]|0)?(k[w>>2]|0)<(k[i>>2]|0):0){if((+p[z>>3]>+p[y>>3]|0)==(+p[z>>3]>-+p[y>>3]|0)){p[n>>3]=+p[y>>3]+ +p[m>>3];p[q>>3]=+p[n>>3]-+p[y>>3];p[o>>3]=+p[m>>3]-+p[q>>3];e=(k[v>>2]|0)+1|0;k[v>>2]=e;p[y>>3]=+p[(k[h>>2]|0)+(e<<3)>>3]}else{p[n>>3]=+p[z>>3]+ +p[m>>3];p[q>>3]=+p[n>>3]-+p[z>>3];p[o>>3]=+p[m>>3]-+p[q>>3];e=(k[w>>2]|0)+1|0;k[w>>2]=e;p[z>>3]=+p[(k[j>>2]|0)+(e<<3)>>3]}p[m>>3]=+p[n>>3];if(+p[o>>3]!=0.0){A=+p[o>>3];e=k[x>>2]|0;k[x>>2]=e+1;p[(k[l>>2]|0)+(e<<3)>>3]=A}while(1){if((k[v>>2]|0)>=(k[g>>2]|0))break a;if((k[w>>2]|0)>=(k[i>>2]|0))break a;A=+p[m>>3];if((+p[z>>3]>+p[y>>3]|0)==(+p[z>>3]>-+p[y>>3]|0)){p[n>>3]=A+ +p[y>>3];p[q>>3]=+p[n>>3]-+p[m>>3];p[s>>3]=+p[n>>3]-+p[q>>3];p[t>>3]=+p[y>>3]-+p[q>>3];p[u>>3]=+p[m>>3]-+p[s>>3];p[o>>3]=+p[u>>3]+ +p[t>>3];e=(k[v>>2]|0)+1|0;k[v>>2]=e;p[y>>3]=+p[(k[h>>2]|0)+(e<<3)>>3]}else{p[n>>3]=A+ +p[z>>3];p[q>>3]=+p[n>>3]-+p[m>>3];p[s>>3]=+p[n>>3]-+p[q>>3];p[t>>3]=+p[z>>3]-+p[q>>3];p[u>>3]=+p[m>>3]-+p[s>>3];p[o>>3]=+p[u>>3]+ +p[t>>3];e=(k[w>>2]|0)+1|0;k[w>>2]=e;p[z>>3]=+p[(k[j>>2]|0)+(e<<3)>>3]}p[m>>3]=+p[n>>3];if(!(+p[o>>3]!=0.0))continue;A=+p[o>>3];e=k[x>>2]|0;k[x>>2]=e+1;p[(k[l>>2]|0)+(e<<3)>>3]=A}}while(0);while(1){if((k[v>>2]|0)>=(k[g>>2]|0))break;p[n>>3]=+p[m>>3]+ +p[y>>3];p[q>>3]=+p[n>>3]-+p[m>>3];p[s>>3]=+p[n>>3]-+p[q>>3];p[t>>3]=+p[y>>3]-+p[q>>3];p[u>>3]=+p[m>>3]-+p[s>>3];p[o>>3]=+p[u>>3]+ +p[t>>3];e=(k[v>>2]|0)+1|0;k[v>>2]=e;p[y>>3]=+p[(k[h>>2]|0)+(e<<3)>>3];p[m>>3]=+p[n>>3];if(!(+p[o>>3]!=0.0))continue;A=+p[o>>3];e=k[x>>2]|0;k[x>>2]=e+1;p[(k[l>>2]|0)+(e<<3)>>3]=A}while(1){B=+p[m>>3];if((k[w>>2]|0)>=(k[i>>2]|0))break;p[n>>3]=B+ +p[z>>3];p[q>>3]=+p[n>>3]-+p[m>>3];p[s>>3]=+p[n>>3]-+p[q>>3];p[t>>3]=+p[z>>3]-+p[q>>3];p[u>>3]=+p[m>>3]-+p[s>>3];p[o>>3]=+p[u>>3]+ +p[t>>3];h=(k[w>>2]|0)+1|0;k[w>>2]=h;p[z>>3]=+p[(k[j>>2]|0)+(h<<3)>>3];p[m>>3]=+p[n>>3];if(!(+p[o>>3]!=0.0))continue;A=+p[o>>3];h=k[x>>2]|0;k[x>>2]=h+1;p[(k[l>>2]|0)+(h<<3)>>3]=A}if(!(B!=0.0|(k[x>>2]|0)==0)){C=k[x>>2]|0;r=f;return C|0}B=+p[m>>3];m=k[x>>2]|0;k[x>>2]=m+1;p[(k[l>>2]|0)+(m<<3)>>3]=B;C=k[x>>2]|0;r=f;return C|0}function Fe(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;e=r;r=r+192|0;f=e+176|0;g=e+172|0;h=e+152|0;i=e+168|0;j=e+144|0;l=e+136|0;m=e+128|0;n=e+120|0;o=e+112|0;q=e+164|0;s=e+160|0;t=e+104|0;u=e+96|0;v=e+88|0;w=e+80|0;x=e+72|0;y=e+64|0;z=e+56|0;A=e+48|0;B=e+40|0;C=e+32|0;D=e+24|0;E=e+16|0;F=e+8|0;G=e;k[f>>2]=a;k[g>>2]=b;p[h>>3]=c;k[i>>2]=d;p[y>>3]=+p[5]*+p[h>>3];p[z>>3]=+p[y>>3]-+p[h>>3];p[C>>3]=+p[y>>3]-+p[z>>3];p[D>>3]=+p[h>>3]-+p[C>>3];p[j>>3]=+p[k[g>>2]>>3]*+p[h>>3];p[y>>3]=+p[5]*+p[k[g>>2]>>3];p[z>>3]=+p[y>>3]-+p[k[g>>2]>>3];p[A>>3]=+p[y>>3]-+p[z>>3];p[B>>3]=+p[k[g>>2]>>3]-+p[A>>3];p[E>>3]=+p[j>>3]-+p[A>>3]*+p[C>>3];p[F>>3]=+p[E>>3]-+p[B>>3]*+p[C>>3];p[G>>3]=+p[F>>3]-+p[A>>3]*+p[D>>3];p[m>>3]=+p[B>>3]*+p[D>>3]-+p[G>>3];k[s>>2]=0;if(+p[m>>3]!=0.0){c=+p[m>>3];d=k[s>>2]|0;k[s>>2]=d+1;p[(k[i>>2]|0)+(d<<3)>>3]=c}k[q>>2]=1;while(1){if((k[q>>2]|0)>=(k[f>>2]|0))break;p[t>>3]=+p[(k[g>>2]|0)+(k[q>>2]<<3)>>3];p[n>>3]=+p[t>>3]*+p[h>>3];p[y>>3]=+p[5]*+p[t>>3];p[z>>3]=+p[y>>3]-+p[t>>3];p[A>>3]=+p[y>>3]-+p[z>>3];p[B>>3]=+p[t>>3]-+p[A>>3];p[E>>3]=+p[n>>3]-+p[A>>3]*+p[C>>3];p[F>>3]=+p[E>>3]-+p[B>>3]*+p[C>>3];p[G>>3]=+p[F>>3]-+p[A>>3]*+p[D>>3];p[o>>3]=+p[B>>3]*+p[D>>3]-+p[G>>3];p[l>>3]=+p[j>>3]+ +p[o>>3];p[u>>3]=+p[l>>3]-+p[j>>3];p[v>>3]=+p[l>>3]-+p[u>>3];p[w>>3]=+p[o>>3]-+p[u>>3];p[x>>3]=+p[j>>3]-+p[v>>3];p[m>>3]=+p[x>>3]+ +p[w>>3];if(+p[m>>3]!=0.0){c=+p[m>>3];d=k[s>>2]|0;k[s>>2]=d+1;p[(k[i>>2]|0)+(d<<3)>>3]=c}p[j>>3]=+p[n>>3]+ +p[l>>3];p[u>>3]=+p[j>>3]-+p[n>>3];p[m>>3]=+p[l>>3]-+p[u>>3];if(+p[m>>3]!=0.0){c=+p[m>>3];d=k[s>>2]|0;k[s>>2]=d+1;p[(k[i>>2]|0)+(d<<3)>>3]=c}k[q>>2]=(k[q>>2]|0)+1}if(!(+p[j>>3]!=0.0|(k[s>>2]|0)==0)){H=k[s>>2]|0;r=e;return H|0}c=+p[j>>3];j=k[s>>2]|0;k[s>>2]=j+1;p[(k[i>>2]|0)+(j<<3)>>3]=c;H=k[s>>2]|0;r=e;return H|0}function Ge(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=r;r=r+32|0;d=c+16|0;e=c+12|0;f=c;g=c+8|0;k[d>>2]=a;k[e>>2]=b;p[f>>3]=+p[k[e>>2]>>3];k[g>>2]=1;while(1){if((k[g>>2]|0)>=(k[d>>2]|0))break;p[f>>3]=+p[f>>3]+ +p[(k[e>>2]|0)+(k[g>>2]<<3)>>3];k[g>>2]=(k[g>>2]|0)+1}r=c;return +(+p[f>>3])}function He(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0.0;e=r;r=r+688|0;f=e+648|0;g=e+676|0;h=e+672|0;i=e+668|0;j=e+640|0;l=e+632|0;m=e+624|0;n=e+616|0;o=e+608|0;q=e+600|0;s=e+592|0;t=e+584|0;u=e+576|0;v=e+568|0;w=e+560|0;x=e+552|0;y=e+544|0;z=e+536|0;A=e+528|0;B=e+496|0;C=e+432|0;D=e+336|0;E=e+208|0;F=e+200|0;G=e+664|0;H=e+660|0;I=e+656|0;J=e+168|0;K=e+160|0;L=e+152|0;M=e+144|0;N=e+136|0;O=e+128|0;P=e+120|0;Q=e+112|0;R=e+104|0;S=e+96|0;T=e+88|0;U=e+80|0;V=e+72|0;W=e+64|0;X=e+56|0;Y=e+48|0;Z=e+40|0;_=e+32|0;$=e+24|0;aa=e+16|0;ba=e+8|0;ca=e;k[g>>2]=a;k[h>>2]=b;k[i>>2]=c;p[j>>3]=d;p[l>>3]=+p[k[g>>2]>>3]-+p[k[i>>2]>>3];p[n>>3]=+p[k[h>>2]>>3]-+p[k[i>>2]>>3];p[m>>3]=+p[(k[g>>2]|0)+8>>3]-+p[(k[i>>2]|0)+8>>3];p[o>>3]=+p[(k[h>>2]|0)+8>>3]-+p[(k[i>>2]|0)+8>>3];p[v>>3]=+p[l>>3]*+p[o>>3];p[T>>3]=+p[5]*+p[l>>3];p[U>>3]=+p[T>>3]-+p[l>>3];p[V>>3]=+p[T>>3]-+p[U>>3];p[W>>3]=+p[l>>3]-+p[V>>3];p[T>>3]=+p[5]*+p[o>>3];p[U>>3]=+p[T>>3]-+p[o>>3];p[X>>3]=+p[T>>3]-+p[U>>3];p[Y>>3]=+p[o>>3]-+p[X>>3];p[Z>>3]=+p[v>>3]-+p[V>>3]*+p[X>>3];p[_>>3]=+p[Z>>3]-+p[W>>3]*+p[X>>3];p[$>>3]=+p[_>>3]-+p[V>>3]*+p[Y>>3];p[x>>3]=+p[W>>3]*+p[Y>>3]-+p[$>>3];p[w>>3]=+p[m>>3]*+p[n>>3];p[T>>3]=+p[5]*+p[m>>3];p[U>>3]=+p[T>>3]-+p[m>>3];p[V>>3]=+p[T>>3]-+p[U>>3];p[W>>3]=+p[m>>3]-+p[V>>3];p[T>>3]=+p[5]*+p[n>>3];p[U>>3]=+p[T>>3]-+p[n>>3];p[X>>3]=+p[T>>3]-+p[U>>3];p[Y>>3]=+p[n>>3]-+p[X>>3];p[Z>>3]=+p[w>>3]-+p[V>>3]*+p[X>>3];p[_>>3]=+p[Z>>3]-+p[W>>3]*+p[X>>3];p[$>>3]=+p[_>>3]-+p[V>>3]*+p[Y>>3];p[y>>3]=+p[W>>3]*+p[Y>>3]-+p[$>>3];p[aa>>3]=+p[x>>3]-+p[y>>3];p[P>>3]=+p[x>>3]-+p[aa>>3];p[Q>>3]=+p[aa>>3]+ +p[P>>3];p[R>>3]=+p[P>>3]-+p[y>>3];p[S>>3]=+p[x>>3]-+p[Q>>3];p[B>>3]=+p[S>>3]+ +p[R>>3];p[ba>>3]=+p[v>>3]+ +p[aa>>3];p[P>>3]=+p[ba>>3]-+p[v>>3];p[Q>>3]=+p[ba>>3]-+p[P>>3];p[R>>3]=+p[aa>>3]-+p[P>>3];p[S>>3]=+p[v>>3]-+p[Q>>3];p[ca>>3]=+p[S>>3]+ +p[R>>3];p[aa>>3]=+p[ca>>3]-+p[w>>3];p[P>>3]=+p[ca>>3]-+p[aa>>3];p[Q>>3]=+p[aa>>3]+ +p[P>>3];p[R>>3]=+p[P>>3]-+p[w>>3];p[S>>3]=+p[ca>>3]-+p[Q>>3];p[B+8>>3]=+p[S>>3]+ +p[R>>3];p[F>>3]=+p[ba>>3]+ +p[aa>>3];p[P>>3]=+p[F>>3]-+p[ba>>3];p[Q>>3]=+p[F>>3]-+p[P>>3];p[R>>3]=+p[aa>>3]-+p[P>>3];p[S>>3]=+p[ba>>3]-+p[Q>>3];p[B+16>>3]=+p[S>>3]+ +p[R>>3];p[B+24>>3]=+p[F>>3];d=+Ge(4,B);p[z>>3]=d;p[A>>3]=+p[9]*+p[j>>3];if(!(+p[z>>3]>=+p[A>>3])?!(-+p[z>>3]>=+p[A>>3]):0){p[P>>3]=+p[k[g>>2]>>3]-+p[l>>3];p[Q>>3]=+p[l>>3]+ +p[P>>3];p[R>>3]=+p[P>>3]-+p[k[i>>2]>>3];p[S>>3]=+p[k[g>>2]>>3]-+p[Q>>3];p[q>>3]=+p[S>>3]+ +p[R>>3];p[P>>3]=+p[k[h>>2]>>3]-+p[n>>3];p[Q>>3]=+p[n>>3]+ +p[P>>3];p[R>>3]=+p[P>>3]-+p[k[i>>2]>>3];p[S>>3]=+p[k[h>>2]>>3]-+p[Q>>3];p[t>>3]=+p[S>>3]+ +p[R>>3];p[P>>3]=+p[(k[g>>2]|0)+8>>3]-+p[m>>3];p[Q>>3]=+p[m>>3]+ +p[P>>3];p[R>>3]=+p[P>>3]-+p[(k[i>>2]|0)+8>>3];p[S>>3]=+p[(k[g>>2]|0)+8>>3]-+p[Q>>3];p[s>>3]=+p[S>>3]+ +p[R>>3];p[P>>3]=+p[(k[h>>2]|0)+8>>3]-+p[o>>3];p[Q>>3]=+p[o>>3]+ +p[P>>3];p[R>>3]=+p[P>>3]-+p[(k[i>>2]|0)+8>>3];p[S>>3]=+p[(k[h>>2]|0)+8>>3]-+p[Q>>3];p[u>>3]=+p[S>>3]+ +p[R>>3];if(+p[q>>3]==0.0&+p[s>>3]==0.0&+p[t>>3]==0.0&+p[u>>3]==0.0){p[f>>3]=+p[z>>3];da=+p[f>>3];r=e;return +da}d=+p[z>>3];p[A>>3]=+p[10]*+p[j>>3]+ +p[7]*(+p[z>>3]>=0.0?d:-d);p[z>>3]=+p[z>>3]+(+p[l>>3]*+p[u>>3]+ +p[o>>3]*+p[q>>3]-(+p[m>>3]*+p[t>>3]+ +p[n>>3]*+p[s>>3]));if(!(+p[z>>3]>=+p[A>>3])?!(-+p[z>>3]>=+p[A>>3]):0){p[L>>3]=+p[q>>3]*+p[o>>3];p[T>>3]=+p[5]*+p[q>>3];p[U>>3]=+p[T>>3]-+p[q>>3];p[V>>3]=+p[T>>3]-+p[U>>3];p[W>>3]=+p[q>>3]-+p[V>>3];p[T>>3]=+p[5]*+p[o>>3];p[U>>3]=+p[T>>3]-+p[o>>3];p[X>>3]=+p[T>>3]-+p[U>>3];p[Y>>3]=+p[o>>3]-+p[X>>3];p[Z>>3]=+p[L>>3]-+p[V>>3]*+p[X>>3];p[_>>3]=+p[Z>>3]-+p[W>>3]*+p[X>>3];p[$>>3]=+p[_>>3]-+p[V>>3]*+p[Y>>3];p[N>>3]=+p[W>>3]*+p[Y>>3]-+p[$>>3];p[M>>3]=+p[s>>3]*+p[n>>3];p[T>>3]=+p[5]*+p[s>>3];p[U>>3]=+p[T>>3]-+p[s>>3];p[V>>3]=+p[T>>3]-+p[U>>3];p[W>>3]=+p[s>>3]-+p[V>>3];p[T>>3]=+p[5]*+p[n>>3];p[U>>3]=+p[T>>3]-+p[n>>3];p[X>>3]=+p[T>>3]-+p[U>>3];p[Y>>3]=+p[n>>3]-+p[X>>3];p[Z>>3]=+p[M>>3]-+p[V>>3]*+p[X>>3];p[_>>3]=+p[Z>>3]-+p[W>>3]*+p[X>>3];p[$>>3]=+p[_>>3]-+p[V>>3]*+p[Y>>3];p[O>>3]=+p[W>>3]*+p[Y>>3]-+p[$>>3];p[aa>>3]=+p[N>>3]-+p[O>>3];p[P>>3]=+p[N>>3]-+p[aa>>3];p[Q>>3]=+p[aa>>3]+ +p[P>>3];p[R>>3]=+p[P>>3]-+p[O>>3];p[S>>3]=+p[N>>3]-+p[Q>>3];p[J>>3]=+p[S>>3]+ +p[R>>3];p[ba>>3]=+p[L>>3]+ +p[aa>>3];p[P>>3]=+p[ba>>3]-+p[L>>3];p[Q>>3]=+p[ba>>3]-+p[P>>3];p[R>>3]=+p[aa>>3]-+p[P>>3];p[S>>3]=+p[L>>3]-+p[Q>>3];p[ca>>3]=+p[S>>3]+ +p[R>>3];p[aa>>3]=+p[ca>>3]-+p[M>>3];p[P>>3]=+p[ca>>3]-+p[aa>>3];p[Q>>3]=+p[aa>>3]+ +p[P>>3];p[R>>3]=+p[P>>3]-+p[M>>3];p[S>>3]=+p[ca>>3]-+p[Q>>3];p[J+8>>3]=+p[S>>3]+ +p[R>>3];p[K>>3]=+p[ba>>3]+ +p[aa>>3];p[P>>3]=+p[K>>3]-+p[ba>>3];p[Q>>3]=+p[K>>3]-+p[P>>3];p[R>>3]=+p[aa>>3]-+p[P>>3];p[S>>3]=+p[ba>>3]-+p[Q>>3];p[J+16>>3]=+p[S>>3]+ +p[R>>3];p[J+24>>3]=+p[K>>3];n=Ee(4,B,4,J,C)|0;k[G>>2]=n;p[L>>3]=+p[l>>3]*+p[u>>3];p[T>>3]=+p[5]*+p[l>>3];p[U>>3]=+p[T>>3]-+p[l>>3];p[V>>3]=+p[T>>3]-+p[U>>3];p[W>>3]=+p[l>>3]-+p[V>>3];p[T>>3]=+p[5]*+p[u>>3];p[U>>3]=+p[T>>3]-+p[u>>3];p[X>>3]=+p[T>>3]-+p[U>>3];p[Y>>3]=+p[u>>3]-+p[X>>3];p[Z>>3]=+p[L>>3]-+p[V>>3]*+p[X>>3];p[_>>3]=+p[Z>>3]-+p[W>>3]*+p[X>>3];p[$>>3]=+p[_>>3]-+p[V>>3]*+p[Y>>3];p[N>>3]=+p[W>>3]*+p[Y>>3]-+p[$>>3];p[M>>3]=+p[m>>3]*+p[t>>3];p[T>>3]=+p[5]*+p[m>>3];p[U>>3]=+p[T>>3]-+p[m>>3];p[V>>3]=+p[T>>3]-+p[U>>3];p[W>>3]=+p[m>>3]-+p[V>>3];p[T>>3]=+p[5]*+p[t>>3];p[U>>3]=+p[T>>3]-+p[t>>3];p[X>>3]=+p[T>>3]-+p[U>>3];p[Y>>3]=+p[t>>3]-+p[X>>3];p[Z>>3]=+p[M>>3]-+p[V>>3]*+p[X>>3];p[_>>3]=+p[Z>>3]-+p[W>>3]*+p[X>>3];p[$>>3]=+p[_>>3]-+p[V>>3]*+p[Y>>3];p[O>>3]=+p[W>>3]*+p[Y>>3]-+p[$>>3];p[aa>>3]=+p[N>>3]-+p[O>>3];p[P>>3]=+p[N>>3]-+p[aa>>3];p[Q>>3]=+p[aa>>3]+ +p[P>>3];p[R>>3]=+p[P>>3]-+p[O>>3];p[S>>3]=+p[N>>3]-+p[Q>>3];p[J>>3]=+p[S>>3]+ +p[R>>3];p[ba>>3]=+p[L>>3]+ +p[aa>>3];p[P>>3]=+p[ba>>3]-+p[L>>3];p[Q>>3]=+p[ba>>3]-+p[P>>3];p[R>>3]=+p[aa>>3]-+p[P>>3];p[S>>3]=+p[L>>3]-+p[Q>>3];p[ca>>3]=+p[S>>3]+ +p[R>>3];p[aa>>3]=+p[ca>>3]-+p[M>>3];p[P>>3]=+p[ca>>3]-+p[aa>>3];p[Q>>3]=+p[aa>>3]+ +p[P>>3];p[R>>3]=+p[P>>3]-+p[M>>3];p[S>>3]=+p[ca>>3]-+p[Q>>3];p[J+8>>3]=+p[S>>3]+ +p[R>>3];p[K>>3]=+p[ba>>3]+ +p[aa>>3];p[P>>3]=+p[K>>3]-+p[ba>>3];p[Q>>3]=+p[K>>3]-+p[P>>3];p[R>>3]=+p[aa>>3]-+p[P>>3];p[S>>3]=+p[ba>>3]-+p[Q>>3];p[J+16>>3]=+p[S>>3]+ +p[R>>3];p[J+24>>3]=+p[K>>3];m=Ee(k[G>>2]|0,C,4,J,D)|0;k[H>>2]=m;p[L>>3]=+p[q>>3]*+p[u>>3];p[T>>3]=+p[5]*+p[q>>3];p[U>>3]=+p[T>>3]-+p[q>>3];p[V>>3]=+p[T>>3]-+p[U>>3];p[W>>3]=+p[q>>3]-+p[V>>3];p[T>>3]=+p[5]*+p[u>>3];p[U>>3]=+p[T>>3]-+p[u>>3];p[X>>3]=+p[T>>3]-+p[U>>3];p[Y>>3]=+p[u>>3]-+p[X>>3];p[Z>>3]=+p[L>>3]-+p[V>>3]*+p[X>>3];p[_>>3]=+p[Z>>3]-+p[W>>3]*+p[X>>3];p[$>>3]=+p[_>>3]-+p[V>>3]*+p[Y>>3];p[N>>3]=+p[W>>3]*+p[Y>>3]-+p[$>>3];p[M>>3]=+p[s>>3]*+p[t>>3];p[T>>3]=+p[5]*+p[s>>3];p[U>>3]=+p[T>>3]-+p[s>>3];p[V>>3]=+p[T>>3]-+p[U>>3];p[W>>3]=+p[s>>3]-+p[V>>3];p[T>>3]=+p[5]*+p[t>>3];p[U>>3]=+p[T>>3]-+p[t>>3];p[X>>3]=+p[T>>3]-+p[U>>3];p[Y>>3]=+p[t>>3]-+p[X>>3];p[Z>>3]=+p[M>>3]-+p[V>>3]*+p[X>>3];p[_>>3]=+p[Z>>3]-+p[W>>3]*+p[X>>3];p[$>>3]=+p[_>>3]-+p[V>>3]*+p[Y>>3];p[O>>3]=+p[W>>3]*+p[Y>>3]-+p[$>>3];p[aa>>3]=+p[N>>3]-+p[O>>3];p[P>>3]=+p[N>>3]-+p[aa>>3];p[Q>>3]=+p[aa>>3]+ +p[P>>3];p[R>>3]=+p[P>>3]-+p[O>>3];p[S>>3]=+p[N>>3]-+p[Q>>3];p[J>>3]=+p[S>>3]+ +p[R>>3];p[ba>>3]=+p[L>>3]+ +p[aa>>3];p[P>>3]=+p[ba>>3]-+p[L>>3];p[Q>>3]=+p[ba>>3]-+p[P>>3];p[R>>3]=+p[aa>>3]-+p[P>>3];p[S>>3]=+p[L>>3]-+p[Q>>3];p[ca>>3]=+p[S>>3]+ +p[R>>3];p[aa>>3]=+p[ca>>3]-+p[M>>3];p[P>>3]=+p[ca>>3]-+p[aa>>3];p[Q>>3]=+p[aa>>3]+ +p[P>>3];p[R>>3]=+p[P>>3]-+p[M>>3];p[S>>3]=+p[ca>>3]-+p[Q>>3];p[J+8>>3]=+p[S>>3]+ +p[R>>3];p[K>>3]=+p[ba>>3]+ +p[aa>>3];p[P>>3]=+p[K>>3]-+p[ba>>3];p[Q>>3]=+p[K>>3]-+p[P>>3];p[R>>3]=+p[aa>>3]-+p[P>>3];p[S>>3]=+p[ba>>3]-+p[Q>>3];p[J+16>>3]=+p[S>>3]+ +p[R>>3];p[J+24>>3]=+p[K>>3];K=Ee(k[H>>2]|0,D,4,J,E)|0;k[I>>2]=K;p[f>>3]=+p[E+((k[I>>2]|0)-1<<3)>>3];da=+p[f>>3];r=e;return +da}p[f>>3]=+p[z>>3];da=+p[f>>3];r=e;return +da}p[f>>3]=+p[z>>3];da=+p[f>>3];r=e;return +da}function Ie(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0.0,v=0.0;f=r;r=r+80|0;g=f+40|0;h=f+64|0;i=f+60|0;j=f+56|0;l=f+52|0;m=f+48|0;n=f+32|0;o=f+24|0;q=f+16|0;s=f+8|0;t=f;k[h>>2]=a;k[i>>2]=b;k[j>>2]=c;k[l>>2]=d;k[m>>2]=e;e=(k[h>>2]|0)+49736|0;k[e>>2]=(k[e>>2]|0)+1;p[n>>3]=(+p[k[j>>2]>>3]-+p[k[m>>2]>>3])*(+p[(k[l>>2]|0)+8>>3]-+p[(k[m>>2]|0)+8>>3]);p[o>>3]=(+p[(k[j>>2]|0)+8>>3]-+p[(k[m>>2]|0)+8>>3])*(+p[k[l>>2]>>3]-+p[k[m>>2]>>3]);p[q>>3]=+p[n>>3]-+p[o>>3];if(k[(k[i>>2]|0)+84>>2]|0){p[g>>3]=+p[q>>3];u=+p[g>>3];r=f;return +u}do if(+p[n>>3]>0.0){if(!(+p[o>>3]<=0.0)){p[s>>3]=+p[n>>3]+ +p[o>>3];break}p[g>>3]=+p[q>>3];u=+p[g>>3];r=f;return +u}else{if(!(+p[n>>3]<0.0)){p[g>>3]=+p[q>>3];u=+p[g>>3];r=f;return +u}if(!(+p[o>>3]>=0.0)){p[s>>3]=-+p[n>>3]-+p[o>>3];break}p[g>>3]=+p[q>>3];u=+p[g>>3];r=f;return +u}while(0);p[t>>3]=+p[8]*+p[s>>3];if(!(+p[q>>3]>=+p[t>>3])?!(-+p[q>>3]>=+p[t>>3]):0){v=+He(k[j>>2]|0,k[l>>2]|0,k[m>>2]|0,+p[s>>3]);p[g>>3]=v;u=+p[g>>3];r=f;return +u}p[g>>3]=+p[q>>3];u=+p[g>>3];r=f;return +u}function Je(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0.0;f=r;r=r+26416|0;g=f+26136|0;h=f+26412|0;i=f+26408|0;j=f+26404|0;l=f+26400|0;m=f+26128|0;n=f+26120|0;o=f+26112|0;q=f+26104|0;s=f+26096|0;t=f+26088|0;u=f+26080|0;v=f+26072|0;w=f+26064|0;x=f+26056|0;y=f+26048|0;z=f+26040|0;A=f+26032|0;B=f+26024|0;C=f+26016|0;D=f+26008|0;E=f+26e3|0;F=f+25992|0;G=f+25984|0;H=f+25976|0;I=f+25968|0;J=f+25936|0;K=f+25904|0;L=f+25872|0;M=f+25864|0;N=f+25856|0;O=f+25848|0;P=f+25784|0;Q=f+25656|0;R=f+25592|0;S=f+25464|0;T=f+25208|0;U=f+26396|0;V=f+26392|0;W=f+26388|0;X=f+26384|0;Y=f+26380|0;Z=f+25144|0;_=f+25016|0;$=f+24952|0;aa=f+24824|0;ba=f+24568|0;ca=f+26376|0;da=f+26372|0;ea=f+26368|0;fa=f+26364|0;ga=f+26360|0;ha=f+24504|0;ia=f+24376|0;ja=f+24312|0;ka=f+24184|0;la=f+23928|0;ma=f+26356|0;na=f+26352|0;oa=f+26348|0;pa=f+26344|0;qa=f+26340|0;ra=f+23416|0;sa=f+26336|0;ta=f+14200|0;ua=f+4984|0;va=f+26332|0;wa=f+26328|0;xa=f+26324|0;ya=f+26320|0;za=f+4976|0;Aa=f+4968|0;Ba=f+4960|0;Ca=f+4952|0;Da=f+4944|0;Ea=f+4936|0;Fa=f+4928|0;Ga=f+4920|0;Ha=f+4912|0;Ia=f+4904|0;Ja=f+4896|0;Ka=f+4888|0;La=f+4880|0;Ma=f+4872|0;Na=f+4864|0;Oa=f+4856|0;Pa=f+4848|0;Qa=f+4840|0;Ra=f+4808|0;Sa=f+4776|0;Ta=f+4744|0;Ua=f+4736|0;Va=f+4728|0;Wa=f+4720|0;Xa=f+4712|0;Ya=f+4704|0;Za=f+4696|0;_a=f+4688|0;$a=f+4656|0;ab=f+4624|0;bb=f+4616|0;cb=f+4608|0;db=f+4544|0;eb=f+4416|0;fb=f+4288|0;gb=f+4160|0;hb=f+3904|0;ib=f+3648|0;jb=f+3264|0;kb=f+2752|0;lb=f+26316|0;mb=f+26312|0;nb=f+26308|0;ob=f+26304|0;pb=f+26300|0;qb=f+26296|0;rb=f+26292|0;sb=f+26288|0;tb=f+2688|0;ub=f+2624|0;vb=f+2560|0;wb=f+2496|0;xb=f+26284|0;yb=f+26280|0;zb=f+26276|0;Ab=f+26272|0;Bb=f+2432|0;Cb=f+2368|0;Db=f+2304|0;Eb=f+2240|0;Fb=f+26268|0;Gb=f+26264|0;Hb=f+26260|0;Ib=f+26256|0;Jb=f+2176|0;Kb=f+2112|0;Lb=f+2048|0;Mb=f+1984|0;Nb=f+26252|0;Ob=f+26248|0;Pb=f+26244|0;Qb=f+26240|0;Rb=f+1920|0;Sb=f+1856|0;Tb=f+1792|0;Ub=f+1728|0;Vb=f+1664|0;Wb=f+1600|0;Xb=f+26236|0;Yb=f+26232|0;Zb=f+26228|0;_b=f+26224|0;$b=f+26220|0;ac=f+26216|0;bc=f+1472|0;cc=f+1344|0;dc=f+1216|0;ec=f+1088|0;fc=f+960|0;gc=f+832|0;hc=f+26212|0;ic=f+26208|0;jc=f+26204|0;kc=f+26200|0;lc=f+26196|0;mc=f+26192|0;nc=f+768|0;oc=f+704|0;pc=f+640|0;qc=f+576|0;rc=f+512|0;sc=f+448|0;tc=f+26188|0;uc=f+26184|0;vc=f+26180|0;wc=f+26176|0;xc=f+26172|0;yc=f+26168|0;zc=f+384|0;Ac=f+320|0;Bc=f+256|0;Cc=f+26164|0;Dc=f+26160|0;Ec=f+26156|0;Fc=f+224|0;Gc=f+192|0;Hc=f+160|0;Ic=f+26152|0;Jc=f+26148|0;Kc=f+26144|0;Lc=f+152|0;Mc=f+144|0;Nc=f+136|0;Oc=f+128|0;Pc=f+120|0;Qc=f+112|0;Rc=f+104|0;Sc=f+96|0;Tc=f+88|0;Uc=f+80|0;Vc=f+72|0;Wc=f+64|0;Xc=f+56|0;Yc=f+48|0;Zc=f+40|0;_c=f+32|0;$c=f+24|0;ad=f+16|0;bd=f+8|0;cd=f;k[h>>2]=a;k[i>>2]=b;k[j>>2]=c;k[l>>2]=d;p[m>>3]=e;p[n>>3]=+p[k[h>>2]>>3]-+p[k[l>>2]>>3];p[o>>3]=+p[k[i>>2]>>3]-+p[k[l>>2]>>3];p[q>>3]=+p[k[j>>2]>>3]-+p[k[l>>2]>>3];p[s>>3]=+p[(k[h>>2]|0)+8>>3]-+p[(k[l>>2]|0)+8>>3];p[t>>3]=+p[(k[i>>2]|0)+8>>3]-+p[(k[l>>2]|0)+8>>3];p[u>>3]=+p[(k[j>>2]|0)+8>>3]-+p[(k[l>>2]|0)+8>>3];p[x>>3]=+p[o>>3]*+p[u>>3];p[Tc>>3]=+p[5]*+p[o>>3];p[Uc>>3]=+p[Tc>>3]-+p[o>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[o>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[u>>3];p[Uc>>3]=+p[Tc>>3]-+p[u>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[u>>3]-+p[Xc>>3];p[Zc>>3]=+p[x>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[D>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[y>>3]=+p[q>>3]*+p[t>>3];p[Tc>>3]=+p[5]*+p[q>>3];p[Uc>>3]=+p[Tc>>3]-+p[q>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[q>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[t>>3];p[Uc>>3]=+p[Tc>>3]-+p[t>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[t>>3]-+p[Xc>>3];p[Zc>>3]=+p[y>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[E>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[ad>>3]=+p[D>>3]-+p[E>>3];p[Pc>>3]=+p[D>>3]-+p[ad>>3];p[Qc>>3]=+p[ad>>3]+ +p[Pc>>3];p[Rc>>3]=+p[Pc>>3]-+p[E>>3];p[Sc>>3]=+p[D>>3]-+p[Qc>>3];p[J>>3]=+p[Sc>>3]+ +p[Rc>>3];p[bd>>3]=+p[x>>3]+ +p[ad>>3];p[Pc>>3]=+p[bd>>3]-+p[x>>3];p[Qc>>3]=+p[bd>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[x>>3]-+p[Qc>>3];p[cd>>3]=+p[Sc>>3]+ +p[Rc>>3];p[ad>>3]=+p[cd>>3]-+p[y>>3];p[Pc>>3]=+p[cd>>3]-+p[ad>>3];p[Qc>>3]=+p[ad>>3]+ +p[Pc>>3];p[Rc>>3]=+p[Pc>>3]-+p[y>>3];p[Sc>>3]=+p[cd>>3]-+p[Qc>>3];p[J+8>>3]=+p[Sc>>3]+ +p[Rc>>3];p[M>>3]=+p[bd>>3]+ +p[ad>>3];p[Pc>>3]=+p[M>>3]-+p[bd>>3];p[Qc>>3]=+p[M>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[bd>>3]-+p[Qc>>3];p[J+16>>3]=+p[Sc>>3]+ +p[Rc>>3];p[J+24>>3]=+p[M>>3];M=Fe(4,J,+p[n>>3],P)|0;k[U>>2]=M;M=Fe(k[U>>2]|0,P,+p[n>>3],Q)|0;k[V>>2]=M;M=Fe(4,J,+p[s>>3],R)|0;k[W>>2]=M;M=Fe(k[W>>2]|0,R,+p[s>>3],S)|0;k[X>>2]=M;M=Ee(k[V>>2]|0,Q,k[X>>2]|0,S,T)|0;k[Y>>2]=M;p[z>>3]=+p[q>>3]*+p[s>>3];p[Tc>>3]=+p[5]*+p[q>>3];p[Uc>>3]=+p[Tc>>3]-+p[q>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[q>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[s>>3];p[Uc>>3]=+p[Tc>>3]-+p[s>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[s>>3]-+p[Xc>>3];p[Zc>>3]=+p[z>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[F>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[A>>3]=+p[n>>3]*+p[u>>3];p[Tc>>3]=+p[5]*+p[n>>3];p[Uc>>3]=+p[Tc>>3]-+p[n>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[n>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[u>>3];p[Uc>>3]=+p[Tc>>3]-+p[u>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[u>>3]-+p[Xc>>3];p[Zc>>3]=+p[A>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[G>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[ad>>3]=+p[F>>3]-+p[G>>3];p[Pc>>3]=+p[F>>3]-+p[ad>>3];p[Qc>>3]=+p[ad>>3]+ +p[Pc>>3];p[Rc>>3]=+p[Pc>>3]-+p[G>>3];p[Sc>>3]=+p[F>>3]-+p[Qc>>3];p[K>>3]=+p[Sc>>3]+ +p[Rc>>3];p[bd>>3]=+p[z>>3]+ +p[ad>>3];p[Pc>>3]=+p[bd>>3]-+p[z>>3];p[Qc>>3]=+p[bd>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[z>>3]-+p[Qc>>3];p[cd>>3]=+p[Sc>>3]+ +p[Rc>>3];p[ad>>3]=+p[cd>>3]-+p[A>>3];p[Pc>>3]=+p[cd>>3]-+p[ad>>3];p[Qc>>3]=+p[ad>>3]+ +p[Pc>>3];p[Rc>>3]=+p[Pc>>3]-+p[A>>3];p[Sc>>3]=+p[cd>>3]-+p[Qc>>3];p[K+8>>3]=+p[Sc>>3]+ +p[Rc>>3];p[N>>3]=+p[bd>>3]+ +p[ad>>3];p[Pc>>3]=+p[N>>3]-+p[bd>>3];p[Qc>>3]=+p[N>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[bd>>3]-+p[Qc>>3];p[K+16>>3]=+p[Sc>>3]+ +p[Rc>>3];p[K+24>>3]=+p[N>>3];N=Fe(4,K,+p[o>>3],Z)|0;k[ca>>2]=N;N=Fe(k[ca>>2]|0,Z,+p[o>>3],_)|0;k[da>>2]=N;N=Fe(4,K,+p[t>>3],$)|0;k[ea>>2]=N;N=Fe(k[ea>>2]|0,$,+p[t>>3],aa)|0;k[fa>>2]=N;N=Ee(k[da>>2]|0,_,k[fa>>2]|0,aa,ba)|0;k[ga>>2]=N;p[B>>3]=+p[n>>3]*+p[t>>3];p[Tc>>3]=+p[5]*+p[n>>3];p[Uc>>3]=+p[Tc>>3]-+p[n>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[n>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[t>>3];p[Uc>>3]=+p[Tc>>3]-+p[t>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[t>>3]-+p[Xc>>3];p[Zc>>3]=+p[B>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[H>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[C>>3]=+p[o>>3]*+p[s>>3];p[Tc>>3]=+p[5]*+p[o>>3];p[Uc>>3]=+p[Tc>>3]-+p[o>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[o>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[s>>3];p[Uc>>3]=+p[Tc>>3]-+p[s>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[s>>3]-+p[Xc>>3];p[Zc>>3]=+p[C>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[I>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[ad>>3]=+p[H>>3]-+p[I>>3];p[Pc>>3]=+p[H>>3]-+p[ad>>3];p[Qc>>3]=+p[ad>>3]+ +p[Pc>>3];p[Rc>>3]=+p[Pc>>3]-+p[I>>3];p[Sc>>3]=+p[H>>3]-+p[Qc>>3];p[L>>3]=+p[Sc>>3]+ +p[Rc>>3];p[bd>>3]=+p[B>>3]+ +p[ad>>3];p[Pc>>3]=+p[bd>>3]-+p[B>>3];p[Qc>>3]=+p[bd>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[B>>3]-+p[Qc>>3];p[cd>>3]=+p[Sc>>3]+ +p[Rc>>3];p[ad>>3]=+p[cd>>3]-+p[C>>3];p[Pc>>3]=+p[cd>>3]-+p[ad>>3];p[Qc>>3]=+p[ad>>3]+ +p[Pc>>3];p[Rc>>3]=+p[Pc>>3]-+p[C>>3];p[Sc>>3]=+p[cd>>3]-+p[Qc>>3];p[L+8>>3]=+p[Sc>>3]+ +p[Rc>>3];p[O>>3]=+p[bd>>3]+ +p[ad>>3];p[Pc>>3]=+p[O>>3]-+p[bd>>3];p[Qc>>3]=+p[O>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[bd>>3]-+p[Qc>>3];p[L+16>>3]=+p[Sc>>3]+ +p[Rc>>3];p[L+24>>3]=+p[O>>3];O=Fe(4,L,+p[q>>3],ha)|0;k[ma>>2]=O;O=Fe(k[ma>>2]|0,ha,+p[q>>3],ia)|0;k[na>>2]=O;O=Fe(4,L,+p[u>>3],ja)|0;k[oa>>2]=O;O=Fe(k[oa>>2]|0,ja,+p[u>>3],ka)|0;k[pa>>2]=O;O=Ee(k[na>>2]|0,ia,k[pa>>2]|0,ka,la)|0;k[qa>>2]=O;O=Ee(k[Y>>2]|0,T,k[ga>>2]|0,ba,ra)|0;k[sa>>2]=O;O=Ee(k[sa>>2]|0,ra,k[qa>>2]|0,la,ta)|0;k[ya>>2]=O;e=+Ge(k[ya>>2]|0,ta);p[v>>3]=e;p[w>>3]=+p[12]*+p[m>>3];if(!(+p[v>>3]>=+p[w>>3])?!(-+p[v>>3]>=+p[w>>3]):0){p[Pc>>3]=+p[k[h>>2]>>3]-+p[n>>3];p[Qc>>3]=+p[n>>3]+ +p[Pc>>3];p[Rc>>3]=+p[Pc>>3]-+p[k[l>>2]>>3];p[Sc>>3]=+p[k[h>>2]>>3]-+p[Qc>>3];p[za>>3]=+p[Sc>>3]+ +p[Rc>>3];p[Pc>>3]=+p[(k[h>>2]|0)+8>>3]-+p[s>>3];p[Qc>>3]=+p[s>>3]+ +p[Pc>>3];p[Rc>>3]=+p[Pc>>3]-+p[(k[l>>2]|0)+8>>3];p[Sc>>3]=+p[(k[h>>2]|0)+8>>3]-+p[Qc>>3];p[Ca>>3]=+p[Sc>>3]+ +p[Rc>>3];p[Pc>>3]=+p[k[i>>2]>>3]-+p[o>>3];p[Qc>>3]=+p[o>>3]+ +p[Pc>>3];p[Rc>>3]=+p[Pc>>3]-+p[k[l>>2]>>3];p[Sc>>3]=+p[k[i>>2]>>3]-+p[Qc>>3];p[Aa>>3]=+p[Sc>>3]+ +p[Rc>>3];p[Pc>>3]=+p[(k[i>>2]|0)+8>>3]-+p[t>>3];p[Qc>>3]=+p[t>>3]+ +p[Pc>>3];p[Rc>>3]=+p[Pc>>3]-+p[(k[l>>2]|0)+8>>3];p[Sc>>3]=+p[(k[i>>2]|0)+8>>3]-+p[Qc>>3];p[Da>>3]=+p[Sc>>3]+ +p[Rc>>3];p[Pc>>3]=+p[k[j>>2]>>3]-+p[q>>3];p[Qc>>3]=+p[q>>3]+ +p[Pc>>3];p[Rc>>3]=+p[Pc>>3]-+p[k[l>>2]>>3];p[Sc>>3]=+p[k[j>>2]>>3]-+p[Qc>>3];p[Ba>>3]=+p[Sc>>3]+ +p[Rc>>3];p[Pc>>3]=+p[(k[j>>2]|0)+8>>3]-+p[u>>3];p[Qc>>3]=+p[u>>3]+ +p[Pc>>3];p[Rc>>3]=+p[Pc>>3]-+p[(k[l>>2]|0)+8>>3];p[Sc>>3]=+p[(k[j>>2]|0)+8>>3]-+p[Qc>>3];p[Ea>>3]=+p[Sc>>3]+ +p[Rc>>3];if(+p[za>>3]==0.0&+p[Aa>>3]==0.0&+p[Ba>>3]==0.0&+p[Ca>>3]==0.0&+p[Da>>3]==0.0&+p[Ea>>3]==0.0){p[g>>3]=+p[v>>3];dd=+p[g>>3];r=f;return +dd}e=+p[v>>3];p[w>>3]=+p[13]*+p[m>>3]+ +p[7]*(+p[v>>3]>=0.0?e:-e);p[v>>3]=+p[v>>3]+((+p[n>>3]*+p[n>>3]+ +p[s>>3]*+p[s>>3])*(+p[o>>3]*+p[Ea>>3]+ +p[u>>3]*+p[Aa>>3]-(+p[t>>3]*+p[Ba>>3]+ +p[q>>3]*+p[Da>>3]))+(+p[n>>3]*+p[za>>3]+ +p[s>>3]*+p[Ca>>3])*2.0*(+p[o>>3]*+p[u>>3]-+p[t>>3]*+p[q>>3])+((+p[o>>3]*+p[o>>3]+ +p[t>>3]*+p[t>>3])*(+p[q>>3]*+p[Ca>>3]+ +p[s>>3]*+p[Ba>>3]-(+p[u>>3]*+p[za>>3]+ +p[n>>3]*+p[Ea>>3]))+(+p[o>>3]*+p[Aa>>3]+ +p[t>>3]*+p[Da>>3])*2.0*(+p[q>>3]*+p[s>>3]-+p[u>>3]*+p[n>>3]))+((+p[q>>3]*+p[q>>3]+ +p[u>>3]*+p[u>>3])*(+p[n>>3]*+p[Da>>3]+ +p[t>>3]*+p[za>>3]-(+p[s>>3]*+p[Aa>>3]+ +p[o>>3]*+p[Ca>>3]))+(+p[q>>3]*+p[Ba>>3]+ +p[u>>3]*+p[Ea>>3])*2.0*(+p[n>>3]*+p[t>>3]-+p[s>>3]*+p[o>>3])));if(!(+p[v>>3]>=+p[w>>3])?!(-+p[v>>3]>=+p[w>>3]):0){k[va>>2]=ta;k[wa>>2]=ua;if(+p[Aa>>3]!=0.0|+p[Da>>3]!=0.0|+p[Ba>>3]!=0.0|+p[Ea>>3]!=0.0){p[Fa>>3]=+p[n>>3]*+p[n>>3];p[Tc>>3]=+p[5]*+p[n>>3];p[Uc>>3]=+p[Tc>>3]-+p[n>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[n>>3]-+p[Vc>>3];p[Zc>>3]=+p[Fa>>3]-+p[Vc>>3]*+p[Vc>>3];p[$c>>3]=+p[Zc>>3]-(+p[Vc>>3]+ +p[Vc>>3])*+p[Wc>>3];p[La>>3]=+p[Wc>>3]*+p[Wc>>3]-+p[$c>>3];p[Ga>>3]=+p[s>>3]*+p[s>>3];p[Tc>>3]=+p[5]*+p[s>>3];p[Uc>>3]=+p[Tc>>3]-+p[s>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[s>>3]-+p[Vc>>3];p[Zc>>3]=+p[Ga>>3]-+p[Vc>>3]*+p[Vc>>3];p[$c>>3]=+p[Zc>>3]-(+p[Vc>>3]+ +p[Vc>>3])*+p[Wc>>3];p[Ma>>3]=+p[Wc>>3]*+p[Wc>>3]-+p[$c>>3];p[ad>>3]=+p[La>>3]+ +p[Ma>>3];p[Pc>>3]=+p[ad>>3]-+p[La>>3];p[Qc>>3]=+p[ad>>3]-+p[Pc>>3];p[Rc>>3]=+p[Ma>>3]-+p[Pc>>3];p[Sc>>3]=+p[La>>3]-+p[Qc>>3];p[Ra>>3]=+p[Sc>>3]+ +p[Rc>>3];p[bd>>3]=+p[Fa>>3]+ +p[ad>>3];p[Pc>>3]=+p[bd>>3]-+p[Fa>>3];p[Qc>>3]=+p[bd>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[Fa>>3]-+p[Qc>>3];p[cd>>3]=+p[Sc>>3]+ +p[Rc>>3];p[ad>>3]=+p[cd>>3]+ +p[Ga>>3];p[Pc>>3]=+p[ad>>3]-+p[cd>>3];p[Qc>>3]=+p[ad>>3]-+p[Pc>>3];p[Rc>>3]=+p[Ga>>3]-+p[Pc>>3];p[Sc>>3]=+p[cd>>3]-+p[Qc>>3];p[Ra+8>>3]=+p[Sc>>3]+ +p[Rc>>3];p[Ua>>3]=+p[bd>>3]+ +p[ad>>3];p[Pc>>3]=+p[Ua>>3]-+p[bd>>3];p[Qc>>3]=+p[Ua>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[bd>>3]-+p[Qc>>3];p[Ra+16>>3]=+p[Sc>>3]+ +p[Rc>>3];p[Ra+24>>3]=+p[Ua>>3]}if(+p[Ba>>3]!=0.0|+p[Ea>>3]!=0.0|+p[za>>3]!=0.0|+p[Ca>>3]!=0.0){p[Ha>>3]=+p[o>>3]*+p[o>>3];p[Tc>>3]=+p[5]*+p[o>>3];p[Uc>>3]=+p[Tc>>3]-+p[o>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[o>>3]-+p[Vc>>3];p[Zc>>3]=+p[Ha>>3]-+p[Vc>>3]*+p[Vc>>3];p[$c>>3]=+p[Zc>>3]-(+p[Vc>>3]+ +p[Vc>>3])*+p[Wc>>3];p[Na>>3]=+p[Wc>>3]*+p[Wc>>3]-+p[$c>>3];p[Ia>>3]=+p[t>>3]*+p[t>>3];p[Tc>>3]=+p[5]*+p[t>>3];p[Uc>>3]=+p[Tc>>3]-+p[t>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[t>>3]-+p[Vc>>3];p[Zc>>3]=+p[Ia>>3]-+p[Vc>>3]*+p[Vc>>3];p[$c>>3]=+p[Zc>>3]-(+p[Vc>>3]+ +p[Vc>>3])*+p[Wc>>3];p[Oa>>3]=+p[Wc>>3]*+p[Wc>>3]-+p[$c>>3];p[ad>>3]=+p[Na>>3]+ +p[Oa>>3];p[Pc>>3]=+p[ad>>3]-+p[Na>>3];p[Qc>>3]=+p[ad>>3]-+p[Pc>>3];p[Rc>>3]=+p[Oa>>3]-+p[Pc>>3];p[Sc>>3]=+p[Na>>3]-+p[Qc>>3];p[Sa>>3]=+p[Sc>>3]+ +p[Rc>>3];p[bd>>3]=+p[Ha>>3]+ +p[ad>>3];p[Pc>>3]=+p[bd>>3]-+p[Ha>>3];p[Qc>>3]=+p[bd>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[Ha>>3]-+p[Qc>>3];p[cd>>3]=+p[Sc>>3]+ +p[Rc>>3];p[ad>>3]=+p[cd>>3]+ +p[Ia>>3];p[Pc>>3]=+p[ad>>3]-+p[cd>>3];p[Qc>>3]=+p[ad>>3]-+p[Pc>>3];p[Rc>>3]=+p[Ia>>3]-+p[Pc>>3];p[Sc>>3]=+p[cd>>3]-+p[Qc>>3];p[Sa+8>>3]=+p[Sc>>3]+ +p[Rc>>3];p[Va>>3]=+p[bd>>3]+ +p[ad>>3];p[Pc>>3]=+p[Va>>3]-+p[bd>>3];p[Qc>>3]=+p[Va>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[bd>>3]-+p[Qc>>3];p[Sa+16>>3]=+p[Sc>>3]+ +p[Rc>>3];p[Sa+24>>3]=+p[Va>>3]}if(+p[za>>3]!=0.0|+p[Ca>>3]!=0.0|+p[Aa>>3]!=0.0|+p[Da>>3]!=0.0){p[Ja>>3]=+p[q>>3]*+p[q>>3];p[Tc>>3]=+p[5]*+p[q>>3];p[Uc>>3]=+p[Tc>>3]-+p[q>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[q>>3]-+p[Vc>>3];p[Zc>>3]=+p[Ja>>3]-+p[Vc>>3]*+p[Vc>>3];p[$c>>3]=+p[Zc>>3]-(+p[Vc>>3]+ +p[Vc>>3])*+p[Wc>>3];p[Pa>>3]=+p[Wc>>3]*+p[Wc>>3]-+p[$c>>3];p[Ka>>3]=+p[u>>3]*+p[u>>3];p[Tc>>3]=+p[5]*+p[u>>3];p[Uc>>3]=+p[Tc>>3]-+p[u>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[u>>3]-+p[Vc>>3];p[Zc>>3]=+p[Ka>>3]-+p[Vc>>3]*+p[Vc>>3];p[$c>>3]=+p[Zc>>3]-(+p[Vc>>3]+ +p[Vc>>3])*+p[Wc>>3];p[Qa>>3]=+p[Wc>>3]*+p[Wc>>3]-+p[$c>>3];p[ad>>3]=+p[Pa>>3]+ +p[Qa>>3];p[Pc>>3]=+p[ad>>3]-+p[Pa>>3];p[Qc>>3]=+p[ad>>3]-+p[Pc>>3];p[Rc>>3]=+p[Qa>>3]-+p[Pc>>3];p[Sc>>3]=+p[Pa>>3]-+p[Qc>>3];p[Ta>>3]=+p[Sc>>3]+ +p[Rc>>3];p[bd>>3]=+p[Ja>>3]+ +p[ad>>3];p[Pc>>3]=+p[bd>>3]-+p[Ja>>3];p[Qc>>3]=+p[bd>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[Ja>>3]-+p[Qc>>3];p[cd>>3]=+p[Sc>>3]+ +p[Rc>>3];p[ad>>3]=+p[cd>>3]+ +p[Ka>>3];p[Pc>>3]=+p[ad>>3]-+p[cd>>3];p[Qc>>3]=+p[ad>>3]-+p[Pc>>3];p[Rc>>3]=+p[Ka>>3]-+p[Pc>>3];p[Sc>>3]=+p[cd>>3]-+p[Qc>>3];p[Ta+8>>3]=+p[Sc>>3]+ +p[Rc>>3];p[Wa>>3]=+p[bd>>3]+ +p[ad>>3];p[Pc>>3]=+p[Wa>>3]-+p[bd>>3];p[Qc>>3]=+p[Wa>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[bd>>3]-+p[Qc>>3];p[Ta+16>>3]=+p[Sc>>3]+ +p[Rc>>3];p[Ta+24>>3]=+p[Wa>>3]}if(+p[za>>3]!=0.0){Wa=Fe(4,J,+p[za>>3],Rb)|0;k[Xb>>2]=Wa;Wa=Fe(k[Xb>>2]|0,Rb,+p[n>>3]*2.0,eb)|0;k[mb>>2]=Wa;Wa=Fe(4,Ta,+p[za>>3],ub)|0;k[yb>>2]=Wa;Wa=Fe(k[yb>>2]|0,ub,+p[t>>3],fb)|0;k[nb>>2]=Wa;Wa=Fe(4,Sa,+p[za>>3],tb)|0;k[xb>>2]=Wa;Wa=Fe(k[xb>>2]|0,tb,-+p[u>>3],gb)|0;k[ob>>2]=Wa;Wa=Ee(k[mb>>2]|0,eb,k[nb>>2]|0,fb,hb)|0;k[pb>>2]=Wa;Wa=Ee(k[ob>>2]|0,gb,k[pb>>2]|0,hb,jb)|0;k[rb>>2]=Wa;Wa=Ee(k[ya>>2]|0,k[va>>2]|0,k[rb>>2]|0,jb,k[wa>>2]|0)|0;k[ya>>2]=Wa;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2]}if(+p[Ca>>3]!=0.0){Wa=Fe(4,J,+p[Ca>>3],Sb)|0;k[Yb>>2]=Wa;Wa=Fe(k[Yb>>2]|0,Sb,+p[s>>3]*2.0,eb)|0;k[mb>>2]=Wa;Wa=Fe(4,Sa,+p[Ca>>3],vb)|0;k[zb>>2]=Wa;Wa=Fe(k[zb>>2]|0,vb,+p[q>>3],fb)|0;k[nb>>2]=Wa;Wa=Fe(4,Ta,+p[Ca>>3],wb)|0;k[Ab>>2]=Wa;Wa=Fe(k[Ab>>2]|0,wb,-+p[o>>3],gb)|0;k[ob>>2]=Wa;Wa=Ee(k[mb>>2]|0,eb,k[nb>>2]|0,fb,hb)|0;k[pb>>2]=Wa;Wa=Ee(k[ob>>2]|0,gb,k[pb>>2]|0,hb,jb)|0;k[rb>>2]=Wa;Wa=Ee(k[ya>>2]|0,k[va>>2]|0,k[rb>>2]|0,jb,k[wa>>2]|0)|0;k[ya>>2]=Wa;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2]}if(+p[Aa>>3]!=0.0){Wa=Fe(4,K,+p[Aa>>3],Tb)|0;k[Zb>>2]=Wa;Wa=Fe(k[Zb>>2]|0,Tb,+p[o>>3]*2.0,eb)|0;k[mb>>2]=Wa;Wa=Fe(4,Ra,+p[Aa>>3],Bb)|0;k[Fb>>2]=Wa;Wa=Fe(k[Fb>>2]|0,Bb,+p[u>>3],fb)|0;k[nb>>2]=Wa;Wa=Fe(4,Ta,+p[Aa>>3],Cb)|0;k[Gb>>2]=Wa;Wa=Fe(k[Gb>>2]|0,Cb,-+p[s>>3],gb)|0;k[ob>>2]=Wa;Wa=Ee(k[mb>>2]|0,eb,k[nb>>2]|0,fb,hb)|0;k[pb>>2]=Wa;Wa=Ee(k[ob>>2]|0,gb,k[pb>>2]|0,hb,jb)|0;k[rb>>2]=Wa;Wa=Ee(k[ya>>2]|0,k[va>>2]|0,k[rb>>2]|0,jb,k[wa>>2]|0)|0;k[ya>>2]=Wa;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2]}if(+p[Da>>3]!=0.0){Wa=Fe(4,K,+p[Da>>3],Ub)|0;k[_b>>2]=Wa;Wa=Fe(k[_b>>2]|0,Ub,+p[t>>3]*2.0,eb)|0;k[mb>>2]=Wa;Wa=Fe(4,Ta,+p[Da>>3],Eb)|0;k[Ib>>2]=Wa;Wa=Fe(k[Ib>>2]|0,Eb,+p[n>>3],fb)|0;k[nb>>2]=Wa;Wa=Fe(4,Ra,+p[Da>>3],Db)|0;k[Hb>>2]=Wa;Wa=Fe(k[Hb>>2]|0,Db,-+p[q>>3],gb)|0;k[ob>>2]=Wa;Wa=Ee(k[mb>>2]|0,eb,k[nb>>2]|0,fb,hb)|0;k[pb>>2]=Wa;Wa=Ee(k[ob>>2]|0,gb,k[pb>>2]|0,hb,jb)|0;k[rb>>2]=Wa;Wa=Ee(k[ya>>2]|0,k[va>>2]|0,k[rb>>2]|0,jb,k[wa>>2]|0)|0;k[ya>>2]=Wa;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2]}if(+p[Ba>>3]!=0.0){Wa=Fe(4,L,+p[Ba>>3],Vb)|0;k[$b>>2]=Wa;Wa=Fe(k[$b>>2]|0,Vb,+p[q>>3]*2.0,eb)|0;k[mb>>2]=Wa;Wa=Fe(4,Sa,+p[Ba>>3],Kb)|0;k[Ob>>2]=Wa;Wa=Fe(k[Ob>>2]|0,Kb,+p[s>>3],fb)|0;k[nb>>2]=Wa;Wa=Fe(4,Ra,+p[Ba>>3],Jb)|0;k[Nb>>2]=Wa;Wa=Fe(k[Nb>>2]|0,Jb,-+p[t>>3],gb)|0;k[ob>>2]=Wa;Wa=Ee(k[mb>>2]|0,eb,k[nb>>2]|0,fb,hb)|0;k[pb>>2]=Wa;Wa=Ee(k[ob>>2]|0,gb,k[pb>>2]|0,hb,jb)|0;k[rb>>2]=Wa;Wa=Ee(k[ya>>2]|0,k[va>>2]|0,k[rb>>2]|0,jb,k[wa>>2]|0)|0;k[ya>>2]=Wa;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2]}if(+p[Ea>>3]!=0.0){Wa=Fe(4,L,+p[Ea>>3],Wb)|0;k[ac>>2]=Wa;Wa=Fe(k[ac>>2]|0,Wb,+p[u>>3]*2.0,eb)|0;k[mb>>2]=Wa;Wa=Fe(4,Ra,+p[Ea>>3],Lb)|0;k[Pb>>2]=Wa;Wa=Fe(k[Pb>>2]|0,Lb,+p[o>>3],fb)|0;k[nb>>2]=Wa;Wa=Fe(4,Sa,+p[Ea>>3],Mb)|0;k[Qb>>2]=Wa;Wa=Fe(k[Qb>>2]|0,Mb,-+p[n>>3],gb)|0;k[ob>>2]=Wa;Wa=Ee(k[mb>>2]|0,eb,k[nb>>2]|0,fb,hb)|0;k[pb>>2]=Wa;Wa=Ee(k[ob>>2]|0,gb,k[pb>>2]|0,hb,jb)|0;k[rb>>2]=Wa;Wa=Ee(k[ya>>2]|0,k[va>>2]|0,k[rb>>2]|0,jb,k[wa>>2]|0)|0;k[ya>>2]=Wa;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2]}do if(+p[za>>3]!=0.0|+p[Ca>>3]!=0.0){if(+p[Aa>>3]!=0.0|+p[Da>>3]!=0.0|+p[Ba>>3]!=0.0|+p[Ea>>3]!=0.0){p[Xa>>3]=+p[Aa>>3]*+p[u>>3];p[Tc>>3]=+p[5]*+p[Aa>>3];p[Uc>>3]=+p[Tc>>3]-+p[Aa>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[Aa>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[u>>3];p[Uc>>3]=+p[Tc>>3]-+p[u>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[u>>3]-+p[Xc>>3];p[Zc>>3]=+p[Xa>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[Za>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[Ya>>3]=+p[o>>3]*+p[Ea>>3];p[Tc>>3]=+p[5]*+p[o>>3];p[Uc>>3]=+p[Tc>>3]-+p[o>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[o>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[Ea>>3];p[Uc>>3]=+p[Tc>>3]-+p[Ea>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[Ea>>3]-+p[Xc>>3];p[Zc>>3]=+p[Ya>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[_a>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[ad>>3]=+p[Za>>3]+ +p[_a>>3];p[Pc>>3]=+p[ad>>3]-+p[Za>>3];p[Qc>>3]=+p[ad>>3]-+p[Pc>>3];p[Rc>>3]=+p[_a>>3]-+p[Pc>>3];p[Sc>>3]=+p[Za>>3]-+p[Qc>>3];p[$a>>3]=+p[Sc>>3]+ +p[Rc>>3];p[bd>>3]=+p[Xa>>3]+ +p[ad>>3];p[Pc>>3]=+p[bd>>3]-+p[Xa>>3];p[Qc>>3]=+p[bd>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[Xa>>3]-+p[Qc>>3];p[cd>>3]=+p[Sc>>3]+ +p[Rc>>3];p[ad>>3]=+p[cd>>3]+ +p[Ya>>3];p[Pc>>3]=+p[ad>>3]-+p[cd>>3];p[Qc>>3]=+p[ad>>3]-+p[Pc>>3];p[Rc>>3]=+p[Ya>>3]-+p[Pc>>3];p[Sc>>3]=+p[cd>>3]-+p[Qc>>3];p[$a+8>>3]=+p[Sc>>3]+ +p[Rc>>3];p[bb>>3]=+p[bd>>3]+ +p[ad>>3];p[Pc>>3]=+p[bb>>3]-+p[bd>>3];p[Qc>>3]=+p[bb>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[bd>>3]-+p[Qc>>3];p[$a+16>>3]=+p[Sc>>3]+ +p[Rc>>3];p[$a+24>>3]=+p[bb>>3];p[Oc>>3]=-+p[t>>3];p[Xa>>3]=+p[Ba>>3]*+p[Oc>>3];p[Tc>>3]=+p[5]*+p[Ba>>3];p[Uc>>3]=+p[Tc>>3]-+p[Ba>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[Ba>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[Oc>>3];p[Uc>>3]=+p[Tc>>3]-+p[Oc>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[Oc>>3]-+p[Xc>>3];p[Zc>>3]=+p[Xa>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[Za>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[Oc>>3]=-+p[Da>>3];p[Ya>>3]=+p[q>>3]*+p[Oc>>3];p[Tc>>3]=+p[5]*+p[q>>3];p[Uc>>3]=+p[Tc>>3]-+p[q>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[q>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[Oc>>3];p[Uc>>3]=+p[Tc>>3]-+p[Oc>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[Oc>>3]-+p[Xc>>3];p[Zc>>3]=+p[Ya>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[_a>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[ad>>3]=+p[Za>>3]+ +p[_a>>3];p[Pc>>3]=+p[ad>>3]-+p[Za>>3];p[Qc>>3]=+p[ad>>3]-+p[Pc>>3];p[Rc>>3]=+p[_a>>3]-+p[Pc>>3];p[Sc>>3]=+p[Za>>3]-+p[Qc>>3];p[ab>>3]=+p[Sc>>3]+ +p[Rc>>3];p[bd>>3]=+p[Xa>>3]+ +p[ad>>3];p[Pc>>3]=+p[bd>>3]-+p[Xa>>3];p[Qc>>3]=+p[bd>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[Xa>>3]-+p[Qc>>3];p[cd>>3]=+p[Sc>>3]+ +p[Rc>>3];p[ad>>3]=+p[cd>>3]+ +p[Ya>>3];p[Pc>>3]=+p[ad>>3]-+p[cd>>3];p[Qc>>3]=+p[ad>>3]-+p[Pc>>3];p[Rc>>3]=+p[Ya>>3]-+p[Pc>>3];p[Sc>>3]=+p[cd>>3]-+p[Qc>>3];p[ab+8>>3]=+p[Sc>>3]+ +p[Rc>>3];p[cb>>3]=+p[bd>>3]+ +p[ad>>3];p[Pc>>3]=+p[cb>>3]-+p[bd>>3];p[Qc>>3]=+p[cb>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[bd>>3]-+p[Qc>>3];p[ab+16>>3]=+p[Sc>>3]+ +p[Rc>>3];p[ab+24>>3]=+p[cb>>3];Wa=Ee(4,$a,4,ab,Ac)|0;k[Dc>>2]=Wa;p[Xa>>3]=+p[Aa>>3]*+p[Ea>>3];p[Tc>>3]=+p[5]*+p[Aa>>3];p[Uc>>3]=+p[Tc>>3]-+p[Aa>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[Aa>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[Ea>>3];p[Uc>>3]=+p[Tc>>3]-+p[Ea>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[Ea>>3]-+p[Xc>>3];p[Zc>>3]=+p[Xa>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[Za>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[Ya>>3]=+p[Ba>>3]*+p[Da>>3];p[Tc>>3]=+p[5]*+p[Ba>>3];p[Uc>>3]=+p[Tc>>3]-+p[Ba>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[Ba>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[Da>>3];p[Uc>>3]=+p[Tc>>3]-+p[Da>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[Da>>3]-+p[Xc>>3];p[Zc>>3]=+p[Ya>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[_a>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[ad>>3]=+p[Za>>3]-+p[_a>>3];p[Pc>>3]=+p[Za>>3]-+p[ad>>3];p[Qc>>3]=+p[ad>>3]+ +p[Pc>>3];p[Rc>>3]=+p[Pc>>3]-+p[_a>>3];p[Sc>>3]=+p[Za>>3]-+p[Qc>>3];p[Gc>>3]=+p[Sc>>3]+ +p[Rc>>3];p[bd>>3]=+p[Xa>>3]+ +p[ad>>3];p[Pc>>3]=+p[bd>>3]-+p[Xa>>3];p[Qc>>3]=+p[bd>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[Xa>>3]-+p[Qc>>3];p[cd>>3]=+p[Sc>>3]+ +p[Rc>>3];p[ad>>3]=+p[cd>>3]-+p[Ya>>3];p[Pc>>3]=+p[cd>>3]-+p[ad>>3];p[Qc>>3]=+p[ad>>3]+ +p[Pc>>3];p[Rc>>3]=+p[Pc>>3]-+p[Ya>>3];p[Sc>>3]=+p[cd>>3]-+p[Qc>>3];p[Gc+8>>3]=+p[Sc>>3]+ +p[Rc>>3];p[Mc>>3]=+p[bd>>3]+ +p[ad>>3];p[Pc>>3]=+p[Mc>>3]-+p[bd>>3];p[Qc>>3]=+p[Mc>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[bd>>3]-+p[Qc>>3];p[Gc+16>>3]=+p[Sc>>3]+ +p[Rc>>3];p[Gc+24>>3]=+p[Mc>>3];k[Jc>>2]=4}else{p[Ac>>3]=0.0;k[Dc>>2]=1;p[Gc>>3]=0.0;k[Jc>>2]=1}if(+p[za>>3]!=0.0){Wa=Fe(k[Xb>>2]|0,Rb,+p[za>>3],eb)|0;k[mb>>2]=Wa;Wa=Fe(k[Dc>>2]|0,Ac,+p[za>>3],bc)|0;k[hc>>2]=Wa;Wa=Fe(k[hc>>2]|0,bc,+p[n>>3]*2.0,hb)|0;k[pb>>2]=Wa;Wa=Ee(k[mb>>2]|0,eb,k[pb>>2]|0,hb,jb)|0;k[rb>>2]=Wa;Wa=Ee(k[ya>>2]|0,k[va>>2]|0,k[rb>>2]|0,jb,k[wa>>2]|0)|0;k[ya>>2]=Wa;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2];if(+p[Da>>3]!=0.0){Wa=Fe(4,Ta,+p[za>>3],db)|0;k[lb>>2]=Wa;Wa=Fe(k[lb>>2]|0,db,+p[Da>>3],eb)|0;k[mb>>2]=Wa;Wa=Ee(k[ya>>2]|0,k[va>>2]|0,k[mb>>2]|0,eb,k[wa>>2]|0)|0;k[ya>>2]=Wa;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2]}if(+p[Ea>>3]!=0.0){Wa=Fe(4,Sa,-+p[za>>3],db)|0;k[lb>>2]=Wa;Wa=Fe(k[lb>>2]|0,db,+p[Ea>>3],eb)|0;k[mb>>2]=Wa;Wa=Ee(k[ya>>2]|0,k[va>>2]|0,k[mb>>2]|0,eb,k[wa>>2]|0)|0;k[ya>>2]=Wa;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2]}Wa=Fe(k[hc>>2]|0,bc,+p[za>>3],hb)|0;k[pb>>2]=Wa;Wa=Fe(k[Jc>>2]|0,Gc,+p[za>>3],nc)|0;k[tc>>2]=Wa;Wa=Fe(k[tc>>2]|0,nc,+p[n>>3]*2.0,eb)|0;k[mb>>2]=Wa;Wa=Fe(k[tc>>2]|0,nc,+p[za>>3],fb)|0;k[nb>>2]=Wa;Wa=Ee(k[mb>>2]|0,eb,k[nb>>2]|0,fb,ib)|0;k[qb>>2]=Wa;Wa=Ee(k[pb>>2]|0,hb,k[qb>>2]|0,ib,kb)|0;k[sb>>2]=Wa;Wa=Ee(k[ya>>2]|0,k[va>>2]|0,k[sb>>2]|0,kb,k[wa>>2]|0)|0;k[ya>>2]=Wa;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2]}if(!(+p[Ca>>3]!=0.0))break;Wa=Fe(k[Yb>>2]|0,Sb,+p[Ca>>3],eb)|0;k[mb>>2]=Wa;Wa=Fe(k[Dc>>2]|0,Ac,+p[Ca>>3],cc)|0;k[ic>>2]=Wa;Wa=Fe(k[ic>>2]|0,cc,+p[s>>3]*2.0,hb)|0;k[pb>>2]=Wa;Wa=Ee(k[mb>>2]|0,eb,k[pb>>2]|0,hb,jb)|0;k[rb>>2]=Wa;Wa=Ee(k[ya>>2]|0,k[va>>2]|0,k[rb>>2]|0,jb,k[wa>>2]|0)|0;k[ya>>2]=Wa;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2];Wa=Fe(k[ic>>2]|0,cc,+p[Ca>>3],hb)|0;k[pb>>2]=Wa;Wa=Fe(k[Jc>>2]|0,Gc,+p[Ca>>3],oc)|0;k[uc>>2]=Wa;Wa=Fe(k[uc>>2]|0,oc,+p[s>>3]*2.0,eb)|0;k[mb>>2]=Wa;Wa=Fe(k[uc>>2]|0,oc,+p[Ca>>3],fb)|0;k[nb>>2]=Wa;Wa=Ee(k[mb>>2]|0,eb,k[nb>>2]|0,fb,ib)|0;k[qb>>2]=Wa;Wa=Ee(k[pb>>2]|0,hb,k[qb>>2]|0,ib,kb)|0;k[sb>>2]=Wa;Wa=Ee(k[ya>>2]|0,k[va>>2]|0,k[sb>>2]|0,kb,k[wa>>2]|0)|0;k[ya>>2]=Wa;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2]}while(0);do if(+p[Aa>>3]!=0.0|+p[Da>>3]!=0.0){if(+p[Ba>>3]!=0.0|+p[Ea>>3]!=0.0|+p[za>>3]!=0.0|+p[Ca>>3]!=0.0){p[Xa>>3]=+p[Ba>>3]*+p[s>>3];p[Tc>>3]=+p[5]*+p[Ba>>3];p[Uc>>3]=+p[Tc>>3]-+p[Ba>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[Ba>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[s>>3];p[Uc>>3]=+p[Tc>>3]-+p[s>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[s>>3]-+p[Xc>>3];p[Zc>>3]=+p[Xa>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[Za>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[Ya>>3]=+p[q>>3]*+p[Ca>>3];p[Tc>>3]=+p[5]*+p[q>>3];p[Uc>>3]=+p[Tc>>3]-+p[q>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[q>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[Ca>>3];p[Uc>>3]=+p[Tc>>3]-+p[Ca>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[Ca>>3]-+p[Xc>>3];p[Zc>>3]=+p[Ya>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[_a>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[ad>>3]=+p[Za>>3]+ +p[_a>>3];p[Pc>>3]=+p[ad>>3]-+p[Za>>3];p[Qc>>3]=+p[ad>>3]-+p[Pc>>3];p[Rc>>3]=+p[_a>>3]-+p[Pc>>3];p[Sc>>3]=+p[Za>>3]-+p[Qc>>3];p[$a>>3]=+p[Sc>>3]+ +p[Rc>>3];p[bd>>3]=+p[Xa>>3]+ +p[ad>>3];p[Pc>>3]=+p[bd>>3]-+p[Xa>>3];p[Qc>>3]=+p[bd>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[Xa>>3]-+p[Qc>>3];p[cd>>3]=+p[Sc>>3]+ +p[Rc>>3];p[ad>>3]=+p[cd>>3]+ +p[Ya>>3];p[Pc>>3]=+p[ad>>3]-+p[cd>>3];p[Qc>>3]=+p[ad>>3]-+p[Pc>>3];p[Rc>>3]=+p[Ya>>3]-+p[Pc>>3];p[Sc>>3]=+p[cd>>3]-+p[Qc>>3];p[$a+8>>3]=+p[Sc>>3]+ +p[Rc>>3];p[bb>>3]=+p[bd>>3]+ +p[ad>>3];p[Pc>>3]=+p[bb>>3]-+p[bd>>3];p[Qc>>3]=+p[bb>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[bd>>3]-+p[Qc>>3];p[$a+16>>3]=+p[Sc>>3]+ +p[Rc>>3];p[$a+24>>3]=+p[bb>>3];p[Oc>>3]=-+p[u>>3];p[Xa>>3]=+p[za>>3]*+p[Oc>>3];p[Tc>>3]=+p[5]*+p[za>>3];p[Uc>>3]=+p[Tc>>3]-+p[za>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[za>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[Oc>>3];p[Uc>>3]=+p[Tc>>3]-+p[Oc>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[Oc>>3]-+p[Xc>>3];p[Zc>>3]=+p[Xa>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[Za>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[Oc>>3]=-+p[Ea>>3];p[Ya>>3]=+p[n>>3]*+p[Oc>>3];p[Tc>>3]=+p[5]*+p[n>>3];p[Uc>>3]=+p[Tc>>3]-+p[n>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[n>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[Oc>>3];p[Uc>>3]=+p[Tc>>3]-+p[Oc>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[Oc>>3]-+p[Xc>>3];p[Zc>>3]=+p[Ya>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[_a>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[ad>>3]=+p[Za>>3]+ +p[_a>>3];p[Pc>>3]=+p[ad>>3]-+p[Za>>3];p[Qc>>3]=+p[ad>>3]-+p[Pc>>3];p[Rc>>3]=+p[_a>>3]-+p[Pc>>3];p[Sc>>3]=+p[Za>>3]-+p[Qc>>3];p[ab>>3]=+p[Sc>>3]+ +p[Rc>>3];p[bd>>3]=+p[Xa>>3]+ +p[ad>>3];p[Pc>>3]=+p[bd>>3]-+p[Xa>>3];p[Qc>>3]=+p[bd>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[Xa>>3]-+p[Qc>>3];p[cd>>3]=+p[Sc>>3]+ +p[Rc>>3];p[ad>>3]=+p[cd>>3]+ +p[Ya>>3];p[Pc>>3]=+p[ad>>3]-+p[cd>>3];p[Qc>>3]=+p[ad>>3]-+p[Pc>>3];p[Rc>>3]=+p[Ya>>3]-+p[Pc>>3];p[Sc>>3]=+p[cd>>3]-+p[Qc>>3];p[ab+8>>3]=+p[Sc>>3]+ +p[Rc>>3];p[cb>>3]=+p[bd>>3]+ +p[ad>>3];p[Pc>>3]=+p[cb>>3]-+p[bd>>3];p[Qc>>3]=+p[cb>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[bd>>3]-+p[Qc>>3];p[ab+16>>3]=+p[Sc>>3]+ +p[Rc>>3];p[ab+24>>3]=+p[cb>>3];oc=Ee(4,$a,4,ab,Bc)|0;k[Ec>>2]=oc;p[Xa>>3]=+p[Ba>>3]*+p[Ca>>3];p[Tc>>3]=+p[5]*+p[Ba>>3];p[Uc>>3]=+p[Tc>>3]-+p[Ba>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[Ba>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[Ca>>3];p[Uc>>3]=+p[Tc>>3]-+p[Ca>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[Ca>>3]-+p[Xc>>3];p[Zc>>3]=+p[Xa>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[Za>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[Ya>>3]=+p[za>>3]*+p[Ea>>3];p[Tc>>3]=+p[5]*+p[za>>3];p[Uc>>3]=+p[Tc>>3]-+p[za>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[za>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[Ea>>3];p[Uc>>3]=+p[Tc>>3]-+p[Ea>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[Ea>>3]-+p[Xc>>3];p[Zc>>3]=+p[Ya>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[_a>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[ad>>3]=+p[Za>>3]-+p[_a>>3];p[Pc>>3]=+p[Za>>3]-+p[ad>>3];p[Qc>>3]=+p[ad>>3]+ +p[Pc>>3];p[Rc>>3]=+p[Pc>>3]-+p[_a>>3];p[Sc>>3]=+p[Za>>3]-+p[Qc>>3];p[Hc>>3]=+p[Sc>>3]+ +p[Rc>>3];p[bd>>3]=+p[Xa>>3]+ +p[ad>>3];p[Pc>>3]=+p[bd>>3]-+p[Xa>>3];p[Qc>>3]=+p[bd>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[Xa>>3]-+p[Qc>>3];p[cd>>3]=+p[Sc>>3]+ +p[Rc>>3];p[ad>>3]=+p[cd>>3]-+p[Ya>>3];p[Pc>>3]=+p[cd>>3]-+p[ad>>3];p[Qc>>3]=+p[ad>>3]+ +p[Pc>>3];p[Rc>>3]=+p[Pc>>3]-+p[Ya>>3];p[Sc>>3]=+p[cd>>3]-+p[Qc>>3];p[Hc+8>>3]=+p[Sc>>3]+ +p[Rc>>3];p[Nc>>3]=+p[bd>>3]+ +p[ad>>3];p[Pc>>3]=+p[Nc>>3]-+p[bd>>3];p[Qc>>3]=+p[Nc>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[bd>>3]-+p[Qc>>3];p[Hc+16>>3]=+p[Sc>>3]+ +p[Rc>>3];p[Hc+24>>3]=+p[Nc>>3];k[Kc>>2]=4}else{p[Bc>>3]=0.0;k[Ec>>2]=1;p[Hc>>3]=0.0;k[Kc>>2]=1}if(+p[Aa>>3]!=0.0){oc=Fe(k[Zb>>2]|0,Tb,+p[Aa>>3],eb)|0;k[mb>>2]=oc;oc=Fe(k[Ec>>2]|0,Bc,+p[Aa>>3],dc)|0;k[jc>>2]=oc;oc=Fe(k[jc>>2]|0,dc,+p[o>>3]*2.0,hb)|0;k[pb>>2]=oc;oc=Ee(k[mb>>2]|0,eb,k[pb>>2]|0,hb,jb)|0;k[rb>>2]=oc;oc=Ee(k[ya>>2]|0,k[va>>2]|0,k[rb>>2]|0,jb,k[wa>>2]|0)|0;k[ya>>2]=oc;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2];if(+p[Ea>>3]!=0.0){oc=Fe(4,Ra,+p[Aa>>3],db)|0;k[lb>>2]=oc;oc=Fe(k[lb>>2]|0,db,+p[Ea>>3],eb)|0;k[mb>>2]=oc;oc=Ee(k[ya>>2]|0,k[va>>2]|0,k[mb>>2]|0,eb,k[wa>>2]|0)|0;k[ya>>2]=oc;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2]}if(+p[Ca>>3]!=0.0){oc=Fe(4,Ta,-+p[Aa>>3],db)|0;k[lb>>2]=oc;oc=Fe(k[lb>>2]|0,db,+p[Ca>>3],eb)|0;k[mb>>2]=oc;oc=Ee(k[ya>>2]|0,k[va>>2]|0,k[mb>>2]|0,eb,k[wa>>2]|0)|0;k[ya>>2]=oc;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2]}oc=Fe(k[jc>>2]|0,dc,+p[Aa>>3],hb)|0;k[pb>>2]=oc;oc=Fe(k[Kc>>2]|0,Hc,+p[Aa>>3],pc)|0;k[vc>>2]=oc;oc=Fe(k[vc>>2]|0,pc,+p[o>>3]*2.0,eb)|0;k[mb>>2]=oc;oc=Fe(k[vc>>2]|0,pc,+p[Aa>>3],fb)|0;k[nb>>2]=oc;oc=Ee(k[mb>>2]|0,eb,k[nb>>2]|0,fb,ib)|0;k[qb>>2]=oc;oc=Ee(k[pb>>2]|0,hb,k[qb>>2]|0,ib,kb)|0;k[sb>>2]=oc;oc=Ee(k[ya>>2]|0,k[va>>2]|0,k[sb>>2]|0,kb,k[wa>>2]|0)|0;k[ya>>2]=oc;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2]}if(!(+p[Da>>3]!=0.0))break;oc=Fe(k[_b>>2]|0,Ub,+p[Da>>3],eb)|0;k[mb>>2]=oc;oc=Fe(k[Ec>>2]|0,Bc,+p[Da>>3],ec)|0;k[kc>>2]=oc;oc=Fe(k[kc>>2]|0,ec,+p[t>>3]*2.0,hb)|0;k[pb>>2]=oc;oc=Ee(k[mb>>2]|0,eb,k[pb>>2]|0,hb,jb)|0;k[rb>>2]=oc;oc=Ee(k[ya>>2]|0,k[va>>2]|0,k[rb>>2]|0,jb,k[wa>>2]|0)|0;k[ya>>2]=oc;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2];oc=Fe(k[kc>>2]|0,ec,+p[Da>>3],hb)|0;k[pb>>2]=oc;oc=Fe(k[Kc>>2]|0,Hc,+p[Da>>3],qc)|0;k[wc>>2]=oc;oc=Fe(k[wc>>2]|0,qc,+p[t>>3]*2.0,eb)|0;k[mb>>2]=oc;oc=Fe(k[wc>>2]|0,qc,+p[Da>>3],fb)|0;k[nb>>2]=oc;oc=Ee(k[mb>>2]|0,eb,k[nb>>2]|0,fb,ib)|0;k[qb>>2]=oc;oc=Ee(k[pb>>2]|0,hb,k[qb>>2]|0,ib,kb)|0;k[sb>>2]=oc;oc=Ee(k[ya>>2]|0,k[va>>2]|0,k[sb>>2]|0,kb,k[wa>>2]|0)|0;k[ya>>2]=oc;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2]}while(0);do if(+p[Ba>>3]!=0.0|+p[Ea>>3]!=0.0){if(+p[za>>3]!=0.0|+p[Ca>>3]!=0.0|+p[Aa>>3]!=0.0|+p[Da>>3]!=0.0){p[Xa>>3]=+p[za>>3]*+p[t>>3];p[Tc>>3]=+p[5]*+p[za>>3];p[Uc>>3]=+p[Tc>>3]-+p[za>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[za>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[t>>3];p[Uc>>3]=+p[Tc>>3]-+p[t>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[t>>3]-+p[Xc>>3];p[Zc>>3]=+p[Xa>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[Za>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[Ya>>3]=+p[n>>3]*+p[Da>>3];p[Tc>>3]=+p[5]*+p[n>>3];p[Uc>>3]=+p[Tc>>3]-+p[n>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[n>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[Da>>3];p[Uc>>3]=+p[Tc>>3]-+p[Da>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[Da>>3]-+p[Xc>>3];p[Zc>>3]=+p[Ya>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[_a>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[ad>>3]=+p[Za>>3]+ +p[_a>>3];p[Pc>>3]=+p[ad>>3]-+p[Za>>3];p[Qc>>3]=+p[ad>>3]-+p[Pc>>3];p[Rc>>3]=+p[_a>>3]-+p[Pc>>3];p[Sc>>3]=+p[Za>>3]-+p[Qc>>3];p[$a>>3]=+p[Sc>>3]+ +p[Rc>>3];p[bd>>3]=+p[Xa>>3]+ +p[ad>>3];p[Pc>>3]=+p[bd>>3]-+p[Xa>>3];p[Qc>>3]=+p[bd>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[Xa>>3]-+p[Qc>>3];p[cd>>3]=+p[Sc>>3]+ +p[Rc>>3];p[ad>>3]=+p[cd>>3]+ +p[Ya>>3];p[Pc>>3]=+p[ad>>3]-+p[cd>>3];p[Qc>>3]=+p[ad>>3]-+p[Pc>>3];p[Rc>>3]=+p[Ya>>3]-+p[Pc>>3];p[Sc>>3]=+p[cd>>3]-+p[Qc>>3];p[$a+8>>3]=+p[Sc>>3]+ +p[Rc>>3];p[bb>>3]=+p[bd>>3]+ +p[ad>>3];p[Pc>>3]=+p[bb>>3]-+p[bd>>3];p[Qc>>3]=+p[bb>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[bd>>3]-+p[Qc>>3];p[$a+16>>3]=+p[Sc>>3]+ +p[Rc>>3];p[$a+24>>3]=+p[bb>>3];p[Oc>>3]=-+p[s>>3];p[Xa>>3]=+p[Aa>>3]*+p[Oc>>3];p[Tc>>3]=+p[5]*+p[Aa>>3];p[Uc>>3]=+p[Tc>>3]-+p[Aa>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[Aa>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[Oc>>3];p[Uc>>3]=+p[Tc>>3]-+p[Oc>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[Oc>>3]-+p[Xc>>3];p[Zc>>3]=+p[Xa>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[Za>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[Oc>>3]=-+p[Ca>>3];p[Ya>>3]=+p[o>>3]*+p[Oc>>3];p[Tc>>3]=+p[5]*+p[o>>3];p[Uc>>3]=+p[Tc>>3]-+p[o>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[o>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[Oc>>3];p[Uc>>3]=+p[Tc>>3]-+p[Oc>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[Oc>>3]-+p[Xc>>3];p[Zc>>3]=+p[Ya>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[_a>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[ad>>3]=+p[Za>>3]+ +p[_a>>3];p[Pc>>3]=+p[ad>>3]-+p[Za>>3];p[Qc>>3]=+p[ad>>3]-+p[Pc>>3];p[Rc>>3]=+p[_a>>3]-+p[Pc>>3];p[Sc>>3]=+p[Za>>3]-+p[Qc>>3];p[ab>>3]=+p[Sc>>3]+ +p[Rc>>3];p[bd>>3]=+p[Xa>>3]+ +p[ad>>3];p[Pc>>3]=+p[bd>>3]-+p[Xa>>3];p[Qc>>3]=+p[bd>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[Xa>>3]-+p[Qc>>3];p[cd>>3]=+p[Sc>>3]+ +p[Rc>>3];p[ad>>3]=+p[cd>>3]+ +p[Ya>>3];p[Pc>>3]=+p[ad>>3]-+p[cd>>3];p[Qc>>3]=+p[ad>>3]-+p[Pc>>3];p[Rc>>3]=+p[Ya>>3]-+p[Pc>>3];p[Sc>>3]=+p[cd>>3]-+p[Qc>>3];p[ab+8>>3]=+p[Sc>>3]+ +p[Rc>>3];p[cb>>3]=+p[bd>>3]+ +p[ad>>3];p[Pc>>3]=+p[cb>>3]-+p[bd>>3];p[Qc>>3]=+p[cb>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[bd>>3]-+p[Qc>>3];p[ab+16>>3]=+p[Sc>>3]+ +p[Rc>>3];p[ab+24>>3]=+p[cb>>3];qc=Ee(4,$a,4,ab,zc)|0;k[Cc>>2]=qc;p[Xa>>3]=+p[za>>3]*+p[Da>>3];p[Tc>>3]=+p[5]*+p[za>>3];p[Uc>>3]=+p[Tc>>3]-+p[za>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[za>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[Da>>3];p[Uc>>3]=+p[Tc>>3]-+p[Da>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[Da>>3]-+p[Xc>>3];p[Zc>>3]=+p[Xa>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[Za>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[Ya>>3]=+p[Aa>>3]*+p[Ca>>3];p[Tc>>3]=+p[5]*+p[Aa>>3];p[Uc>>3]=+p[Tc>>3]-+p[Aa>>3];p[Vc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Wc>>3]=+p[Aa>>3]-+p[Vc>>3];p[Tc>>3]=+p[5]*+p[Ca>>3];p[Uc>>3]=+p[Tc>>3]-+p[Ca>>3];p[Xc>>3]=+p[Tc>>3]-+p[Uc>>3];p[Yc>>3]=+p[Ca>>3]-+p[Xc>>3];p[Zc>>3]=+p[Ya>>3]-+p[Vc>>3]*+p[Xc>>3];p[_c>>3]=+p[Zc>>3]-+p[Wc>>3]*+p[Xc>>3];p[$c>>3]=+p[_c>>3]-+p[Vc>>3]*+p[Yc>>3];p[_a>>3]=+p[Wc>>3]*+p[Yc>>3]-+p[$c>>3];p[ad>>3]=+p[Za>>3]-+p[_a>>3];p[Pc>>3]=+p[Za>>3]-+p[ad>>3];p[Qc>>3]=+p[ad>>3]+ +p[Pc>>3];p[Rc>>3]=+p[Pc>>3]-+p[_a>>3];p[Sc>>3]=+p[Za>>3]-+p[Qc>>3];p[Fc>>3]=+p[Sc>>3]+ +p[Rc>>3];p[bd>>3]=+p[Xa>>3]+ +p[ad>>3];p[Pc>>3]=+p[bd>>3]-+p[Xa>>3];p[Qc>>3]=+p[bd>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[Xa>>3]-+p[Qc>>3];p[cd>>3]=+p[Sc>>3]+ +p[Rc>>3];p[ad>>3]=+p[cd>>3]-+p[Ya>>3];p[Pc>>3]=+p[cd>>3]-+p[ad>>3];p[Qc>>3]=+p[ad>>3]+ +p[Pc>>3];p[Rc>>3]=+p[Pc>>3]-+p[Ya>>3];p[Sc>>3]=+p[cd>>3]-+p[Qc>>3];p[Fc+8>>3]=+p[Sc>>3]+ +p[Rc>>3];p[Lc>>3]=+p[bd>>3]+ +p[ad>>3];p[Pc>>3]=+p[Lc>>3]-+p[bd>>3];p[Qc>>3]=+p[Lc>>3]-+p[Pc>>3];p[Rc>>3]=+p[ad>>3]-+p[Pc>>3];p[Sc>>3]=+p[bd>>3]-+p[Qc>>3];p[Fc+16>>3]=+p[Sc>>3]+ +p[Rc>>3];p[Fc+24>>3]=+p[Lc>>3];k[Ic>>2]=4}else{p[zc>>3]=0.0;k[Cc>>2]=1;p[Fc>>3]=0.0;k[Ic>>2]=1}if(+p[Ba>>3]!=0.0){qc=Fe(k[$b>>2]|0,Vb,+p[Ba>>3],eb)|0;k[mb>>2]=qc;qc=Fe(k[Cc>>2]|0,zc,+p[Ba>>3],fc)|0;k[lc>>2]=qc;qc=Fe(k[lc>>2]|0,fc,+p[q>>3]*2.0,hb)|0;k[pb>>2]=qc;qc=Ee(k[mb>>2]|0,eb,k[pb>>2]|0,hb,jb)|0;k[rb>>2]=qc;qc=Ee(k[ya>>2]|0,k[va>>2]|0,k[rb>>2]|0,jb,k[wa>>2]|0)|0;k[ya>>2]=qc;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2];if(+p[Ca>>3]!=0.0){qc=Fe(4,Sa,+p[Ba>>3],db)|0;k[lb>>2]=qc;qc=Fe(k[lb>>2]|0,db,+p[Ca>>3],eb)|0;k[mb>>2]=qc;qc=Ee(k[ya>>2]|0,k[va>>2]|0,k[mb>>2]|0,eb,k[wa>>2]|0)|0;k[ya>>2]=qc;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2]}if(+p[Da>>3]!=0.0){qc=Fe(4,Ra,-+p[Ba>>3],db)|0;k[lb>>2]=qc;qc=Fe(k[lb>>2]|0,db,+p[Da>>3],eb)|0;k[mb>>2]=qc;qc=Ee(k[ya>>2]|0,k[va>>2]|0,k[mb>>2]|0,eb,k[wa>>2]|0)|0;k[ya>>2]=qc;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2]}qc=Fe(k[lc>>2]|0,fc,+p[Ba>>3],hb)|0;k[pb>>2]=qc;qc=Fe(k[Ic>>2]|0,Fc,+p[Ba>>3],rc)|0;k[xc>>2]=qc;qc=Fe(k[xc>>2]|0,rc,+p[q>>3]*2.0,eb)|0;k[mb>>2]=qc;qc=Fe(k[xc>>2]|0,rc,+p[Ba>>3],fb)|0;k[nb>>2]=qc;qc=Ee(k[mb>>2]|0,eb,k[nb>>2]|0,fb,ib)|0;k[qb>>2]=qc;qc=Ee(k[pb>>2]|0,hb,k[qb>>2]|0,ib,kb)|0;k[sb>>2]=qc;qc=Ee(k[ya>>2]|0,k[va>>2]|0,k[sb>>2]|0,kb,k[wa>>2]|0)|0;k[ya>>2]=qc;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2]}if(!(+p[Ea>>3]!=0.0))break;qc=Fe(k[ac>>2]|0,Wb,+p[Ea>>3],eb)|0;k[mb>>2]=qc;qc=Fe(k[Cc>>2]|0,zc,+p[Ea>>3],gc)|0;k[mc>>2]=qc;qc=Fe(k[mc>>2]|0,gc,+p[u>>3]*2.0,hb)|0;k[pb>>2]=qc;qc=Ee(k[mb>>2]|0,eb,k[pb>>2]|0,hb,jb)|0;k[rb>>2]=qc;qc=Ee(k[ya>>2]|0,k[va>>2]|0,k[rb>>2]|0,jb,k[wa>>2]|0)|0;k[ya>>2]=qc;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2];qc=Fe(k[mc>>2]|0,gc,+p[Ea>>3],hb)|0;k[pb>>2]=qc;qc=Fe(k[Ic>>2]|0,Fc,+p[Ea>>3],sc)|0;k[yc>>2]=qc;qc=Fe(k[yc>>2]|0,sc,+p[u>>3]*2.0,eb)|0;k[mb>>2]=qc;qc=Fe(k[yc>>2]|0,sc,+p[Ea>>3],fb)|0;k[nb>>2]=qc;qc=Ee(k[mb>>2]|0,eb,k[nb>>2]|0,fb,ib)|0;k[qb>>2]=qc;qc=Ee(k[pb>>2]|0,hb,k[qb>>2]|0,ib,kb)|0;k[sb>>2]=qc;qc=Ee(k[ya>>2]|0,k[va>>2]|0,k[sb>>2]|0,kb,k[wa>>2]|0)|0;k[ya>>2]=qc;k[xa>>2]=k[va>>2];k[va>>2]=k[wa>>2];k[wa>>2]=k[xa>>2]}while(0);p[g>>3]=+p[(k[va>>2]|0)+((k[ya>>2]|0)-1<<3)>>3];dd=+p[g>>3];r=f;return +dd}p[g>>3]=+p[v>>3];dd=+p[g>>3];r=f;return +dd}p[g>>3]=+p[v>>3];dd=+p[g>>3];r=f;return +dd}function Ke(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0;g=r;r=r+176|0;h=g+144|0;i=g+172|0;j=g+168|0;l=g+164|0;m=g+160|0;n=g+156|0;o=g+152|0;q=g+136|0;s=g+128|0;t=g+120|0;u=g+112|0;v=g+104|0;w=g+96|0;x=g+88|0;y=g+80|0;z=g+72|0;A=g+64|0;B=g+56|0;C=g+48|0;D=g+40|0;E=g+32|0;F=g+24|0;G=g+16|0;H=g+8|0;I=g;k[i>>2]=a;k[j>>2]=b;k[l>>2]=c;k[m>>2]=d;k[n>>2]=e;k[o>>2]=f;f=(k[i>>2]|0)+49732|0;k[f>>2]=(k[f>>2]|0)+1;p[q>>3]=+p[k[l>>2]>>3]-+p[k[o>>2]>>3];p[s>>3]=+p[k[m>>2]>>3]-+p[k[o>>2]>>3];p[t>>3]=+p[k[n>>2]>>3]-+p[k[o>>2]>>3];p[u>>3]=+p[(k[l>>2]|0)+8>>3]-+p[(k[o>>2]|0)+8>>3];p[v>>3]=+p[(k[m>>2]|0)+8>>3]-+p[(k[o>>2]|0)+8>>3];p[w>>3]=+p[(k[n>>2]|0)+8>>3]-+p[(k[o>>2]|0)+8>>3];p[x>>3]=+p[s>>3]*+p[w>>3];p[y>>3]=+p[t>>3]*+p[v>>3];p[D>>3]=+p[q>>3]*+p[q>>3]+ +p[u>>3]*+p[u>>3];p[z>>3]=+p[t>>3]*+p[u>>3];p[A>>3]=+p[q>>3]*+p[w>>3];p[E>>3]=+p[s>>3]*+p[s>>3]+ +p[v>>3]*+p[v>>3];p[B>>3]=+p[q>>3]*+p[v>>3];p[C>>3]=+p[s>>3]*+p[u>>3];p[F>>3]=+p[t>>3]*+p[t>>3]+ +p[w>>3]*+p[w>>3];p[G>>3]=+p[D>>3]*(+p[x>>3]-+p[y>>3])+ +p[E>>3]*(+p[z>>3]-+p[A>>3])+ +p[F>>3]*(+p[B>>3]-+p[C>>3]);if(k[(k[j>>2]|0)+84>>2]|0){p[h>>3]=+p[G>>3];J=+p[h>>3];r=g;return +J}K=+p[x>>3];L=+p[y>>3];M=+p[z>>3];N=+p[A>>3];O=+p[B>>3];P=+p[C>>3];p[H>>3]=((+p[x>>3]>=0.0?K:-K)+(+p[y>>3]>=0.0?L:-L))*+p[D>>3]+((+p[z>>3]>=0.0?M:-M)+(+p[A>>3]>=0.0?N:-N))*+p[E>>3]+((+p[B>>3]>=0.0?O:-O)+(+p[C>>3]>=0.0?P:-P))*+p[F>>3];p[I>>3]=+p[11]*+p[H>>3];if(!(+p[G>>3]>+p[I>>3])?!(-+p[G>>3]>+p[I>>3]):0){P=+Je(k[l>>2]|0,k[m>>2]|0,k[n>>2]|0,k[o>>2]|0,+p[H>>3]);p[h>>3]=P;J=+p[h>>3];r=g;return +J}p[h>>3]=+p[G>>3];J=+p[h>>3];r=g;return +J}function Le(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;var j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0.0;j=r;r=r+5040|0;l=j+4936|0;m=j+5032|0;n=j+5028|0;o=j+5024|0;q=j+5020|0;s=j+4928|0;t=j+4920|0;u=j+4912|0;v=j+4904|0;w=j+4896|0;x=j+4888|0;y=j+4880|0;z=j+4872|0;A=j+4864|0;B=j+4856|0;C=j+4848|0;D=j+4840|0;E=j+4832|0;F=j+4824|0;G=j+4816|0;H=j+4808|0;I=j+4800|0;J=j+4792|0;K=j+4784|0;L=j+4776|0;M=j+4768|0;N=j+4760|0;O=j+4752|0;P=j+4744|0;Q=j+4736|0;R=j+4728|0;S=j+4720|0;T=j+4712|0;U=j+4680|0;V=j+4648|0;W=j+4616|0;X=j+4608|0;Y=j+4600|0;Z=j+4592|0;_=j+4528|0;$=j+4464|0;aa=j+4400|0;ba=j+5016|0;ca=j+5012|0;da=j+5008|0;ea=j+4272|0;fa=j+5004|0;ga=j+5e3|0;ha=j+4996|0;ia=j+4992|0;ja=j+2736|0;ka=j+1200|0;la=j+4988|0;ma=j+1192|0;na=j+1184|0;oa=j+1176|0;pa=j+1168|0;qa=j+1160|0;ra=j+1152|0;sa=j+1144|0;ta=j+1136|0;ua=j+1128|0;va=j+1120|0;wa=j+1112|0;xa=j+1104|0;ya=j+1096|0;za=j+1088|0;Aa=j+1080|0;Ba=j+1048|0;Ca=j+1016|0;Da=j+984|0;Ea=j+952|0;Fa=j+920|0;Ga=j+888|0;Ha=j+4984|0;Ia=j+4980|0;Ja=j+4976|0;Ka=j+4972|0;La=j+4968|0;Ma=j+4964|0;Na=j+880|0;Oa=j+872|0;Pa=j+864|0;Qa=j+856|0;Ra=j+848|0;Sa=j+840|0;Ta=j+832|0;Ua=j+824|0;Va=j+816|0;Wa=j+808|0;Xa=j+800|0;Ya=j+792|0;Za=j+784|0;_a=j+776|0;$a=j+768|0;ab=j+760|0;bb=j+752|0;cb=j+744|0;db=j+736|0;eb=j+728|0;fb=j+720|0;gb=j+712|0;hb=j+704|0;ib=j+696|0;jb=j+632|0;kb=j+568|0;lb=j+504|0;mb=j+4960|0;nb=j+4956|0;ob=j+4952|0;pb=j+496|0;qb=j+488|0;rb=j+480|0;sb=j+472|0;tb=j+464|0;ub=j+456|0;vb=j+448|0;wb=j+440|0;xb=j+432|0;yb=j+424|0;zb=j+416|0;Ab=j+408|0;Bb=j+376|0;Cb=j+280|0;Db=j+152|0;Eb=j+144|0;Fb=j+4948|0;Gb=j+4944|0;Hb=j+136|0;Ib=j+128|0;Jb=j+120|0;Kb=j+112|0;Lb=j+104|0;Mb=j+96|0;Nb=j+88|0;Ob=j+80|0;Pb=j+72|0;Qb=j+64|0;Rb=j+56|0;Sb=j+48|0;Tb=j+40|0;Ub=j+32|0;Vb=j+24|0;Wb=j+16|0;Xb=j+8|0;Yb=j;k[m>>2]=a;k[n>>2]=b;k[o>>2]=c;k[q>>2]=d;p[s>>3]=e;p[t>>3]=f;p[u>>3]=g;p[v>>3]=h;p[w>>3]=i;p[x>>3]=+p[k[m>>2]>>3]-+p[k[q>>2]>>3];p[y>>3]=+p[k[n>>2]>>3]-+p[k[q>>2]>>3];p[z>>3]=+p[k[o>>2]>>3]-+p[k[q>>2]>>3];p[A>>3]=+p[(k[m>>2]|0)+8>>3]-+p[(k[q>>2]|0)+8>>3];p[B>>3]=+p[(k[n>>2]|0)+8>>3]-+p[(k[q>>2]|0)+8>>3];p[C>>3]=+p[(k[o>>2]|0)+8>>3]-+p[(k[q>>2]|0)+8>>3];p[D>>3]=+p[s>>3]-+p[v>>3];p[E>>3]=+p[t>>3]-+p[v>>3];p[F>>3]=+p[u>>3]-+p[v>>3];p[I>>3]=+p[y>>3]*+p[C>>3];p[Mb>>3]=+p[5]*+p[y>>3];p[Nb>>3]=+p[Mb>>3]-+p[y>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[y>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[C>>3];p[Nb>>3]=+p[Mb>>3]-+p[C>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[C>>3]-+p[Qb>>3];p[Sb>>3]=+p[I>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[O>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[J>>3]=+p[z>>3]*+p[B>>3];p[Mb>>3]=+p[5]*+p[z>>3];p[Nb>>3]=+p[Mb>>3]-+p[z>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[z>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[B>>3];p[Nb>>3]=+p[Mb>>3]-+p[B>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[B>>3]-+p[Qb>>3];p[Sb>>3]=+p[J>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[P>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Vb>>3]=+p[O>>3]-+p[P>>3];p[Ib>>3]=+p[O>>3]-+p[Vb>>3];p[Jb>>3]=+p[Vb>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[P>>3];p[Lb>>3]=+p[O>>3]-+p[Jb>>3];p[U>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Wb>>3]=+p[I>>3]+ +p[Vb>>3];p[Ib>>3]=+p[Wb>>3]-+p[I>>3];p[Jb>>3]=+p[Wb>>3]-+p[Ib>>3];p[Kb>>3]=+p[Vb>>3]-+p[Ib>>3];p[Lb>>3]=+p[I>>3]-+p[Jb>>3];p[Yb>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Vb>>3]=+p[Yb>>3]-+p[J>>3];p[Ib>>3]=+p[Yb>>3]-+p[Vb>>3];p[Jb>>3]=+p[Vb>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[J>>3];p[Lb>>3]=+p[Yb>>3]-+p[Jb>>3];p[U+8>>3]=+p[Lb>>3]+ +p[Kb>>3];p[X>>3]=+p[Wb>>3]+ +p[Vb>>3];p[Ib>>3]=+p[X>>3]-+p[Wb>>3];p[Jb>>3]=+p[X>>3]-+p[Ib>>3];p[Kb>>3]=+p[Vb>>3]-+p[Ib>>3];p[Lb>>3]=+p[Wb>>3]-+p[Jb>>3];p[U+16>>3]=+p[Lb>>3]+ +p[Kb>>3];p[U+24>>3]=+p[X>>3];X=Fe(4,U,+p[D>>3],_)|0;k[ba>>2]=X;p[K>>3]=+p[z>>3]*+p[A>>3];p[Mb>>3]=+p[5]*+p[z>>3];p[Nb>>3]=+p[Mb>>3]-+p[z>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[z>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[A>>3];p[Nb>>3]=+p[Mb>>3]-+p[A>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[A>>3]-+p[Qb>>3];p[Sb>>3]=+p[K>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Q>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[L>>3]=+p[x>>3]*+p[C>>3];p[Mb>>3]=+p[5]*+p[x>>3];p[Nb>>3]=+p[Mb>>3]-+p[x>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[x>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[C>>3];p[Nb>>3]=+p[Mb>>3]-+p[C>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[C>>3]-+p[Qb>>3];p[Sb>>3]=+p[L>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[R>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Vb>>3]=+p[Q>>3]-+p[R>>3];p[Ib>>3]=+p[Q>>3]-+p[Vb>>3];p[Jb>>3]=+p[Vb>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[R>>3];p[Lb>>3]=+p[Q>>3]-+p[Jb>>3];p[V>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Wb>>3]=+p[K>>3]+ +p[Vb>>3];p[Ib>>3]=+p[Wb>>3]-+p[K>>3];p[Jb>>3]=+p[Wb>>3]-+p[Ib>>3];p[Kb>>3]=+p[Vb>>3]-+p[Ib>>3];p[Lb>>3]=+p[K>>3]-+p[Jb>>3];p[Yb>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Vb>>3]=+p[Yb>>3]-+p[L>>3];p[Ib>>3]=+p[Yb>>3]-+p[Vb>>3];p[Jb>>3]=+p[Vb>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[L>>3];p[Lb>>3]=+p[Yb>>3]-+p[Jb>>3];p[V+8>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Y>>3]=+p[Wb>>3]+ +p[Vb>>3];p[Ib>>3]=+p[Y>>3]-+p[Wb>>3];p[Jb>>3]=+p[Y>>3]-+p[Ib>>3];p[Kb>>3]=+p[Vb>>3]-+p[Ib>>3];p[Lb>>3]=+p[Wb>>3]-+p[Jb>>3];p[V+16>>3]=+p[Lb>>3]+ +p[Kb>>3];p[V+24>>3]=+p[Y>>3];Y=Fe(4,V,+p[E>>3],$)|0;k[ca>>2]=Y;p[M>>3]=+p[x>>3]*+p[B>>3];p[Mb>>3]=+p[5]*+p[x>>3];p[Nb>>3]=+p[Mb>>3]-+p[x>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[x>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[B>>3];p[Nb>>3]=+p[Mb>>3]-+p[B>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[B>>3]-+p[Qb>>3];p[Sb>>3]=+p[M>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[S>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[N>>3]=+p[y>>3]*+p[A>>3];p[Mb>>3]=+p[5]*+p[y>>3];p[Nb>>3]=+p[Mb>>3]-+p[y>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[y>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[A>>3];p[Nb>>3]=+p[Mb>>3]-+p[A>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[A>>3]-+p[Qb>>3];p[Sb>>3]=+p[N>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[T>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Vb>>3]=+p[S>>3]-+p[T>>3];p[Ib>>3]=+p[S>>3]-+p[Vb>>3];p[Jb>>3]=+p[Vb>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[T>>3];p[Lb>>3]=+p[S>>3]-+p[Jb>>3];p[W>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Wb>>3]=+p[M>>3]+ +p[Vb>>3];p[Ib>>3]=+p[Wb>>3]-+p[M>>3];p[Jb>>3]=+p[Wb>>3]-+p[Ib>>3];p[Kb>>3]=+p[Vb>>3]-+p[Ib>>3];p[Lb>>3]=+p[M>>3]-+p[Jb>>3];p[Yb>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Vb>>3]=+p[Yb>>3]-+p[N>>3];p[Ib>>3]=+p[Yb>>3]-+p[Vb>>3];p[Jb>>3]=+p[Vb>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[N>>3];p[Lb>>3]=+p[Yb>>3]-+p[Jb>>3];p[W+8>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Z>>3]=+p[Wb>>3]+ +p[Vb>>3];p[Ib>>3]=+p[Z>>3]-+p[Wb>>3];p[Jb>>3]=+p[Z>>3]-+p[Ib>>3];p[Kb>>3]=+p[Vb>>3]-+p[Ib>>3];p[Lb>>3]=+p[Wb>>3]-+p[Jb>>3];p[W+16>>3]=+p[Lb>>3]+ +p[Kb>>3];p[W+24>>3]=+p[Z>>3];Z=Fe(4,W,+p[F>>3],aa)|0;k[da>>2]=Z;Z=Ee(k[ba>>2]|0,_,k[ca>>2]|0,$,ea)|0;k[fa>>2]=Z;Z=Ee(k[fa>>2]|0,ea,k[da>>2]|0,aa,ja)|0;k[la>>2]=Z;i=+Ge(k[la>>2]|0,ja);p[G>>3]=i;p[H>>3]=+p[15]*+p[w>>3];if(!(+p[G>>3]>=+p[H>>3])?!(-+p[G>>3]>=+p[H>>3]):0){p[Ib>>3]=+p[k[m>>2]>>3]-+p[x>>3];p[Jb>>3]=+p[x>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[k[q>>2]>>3];p[Lb>>3]=+p[k[m>>2]>>3]-+p[Jb>>3];p[ma>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Ib>>3]=+p[k[n>>2]>>3]-+p[y>>3];p[Jb>>3]=+p[y>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[k[q>>2]>>3];p[Lb>>3]=+p[k[n>>2]>>3]-+p[Jb>>3];p[na>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Ib>>3]=+p[k[o>>2]>>3]-+p[z>>3];p[Jb>>3]=+p[z>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[k[q>>2]>>3];p[Lb>>3]=+p[k[o>>2]>>3]-+p[Jb>>3];p[oa>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Ib>>3]=+p[(k[m>>2]|0)+8>>3]-+p[A>>3];p[Jb>>3]=+p[A>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[(k[q>>2]|0)+8>>3];p[Lb>>3]=+p[(k[m>>2]|0)+8>>3]-+p[Jb>>3];p[pa>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Ib>>3]=+p[(k[n>>2]|0)+8>>3]-+p[B>>3];p[Jb>>3]=+p[B>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[(k[q>>2]|0)+8>>3];p[Lb>>3]=+p[(k[n>>2]|0)+8>>3]-+p[Jb>>3];p[qa>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Ib>>3]=+p[(k[o>>2]|0)+8>>3]-+p[C>>3];p[Jb>>3]=+p[C>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[(k[q>>2]|0)+8>>3];p[Lb>>3]=+p[(k[o>>2]|0)+8>>3]-+p[Jb>>3];p[ra>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Ib>>3]=+p[s>>3]-+p[D>>3];p[Jb>>3]=+p[D>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[v>>3];p[Lb>>3]=+p[s>>3]-+p[Jb>>3];p[sa>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Ib>>3]=+p[t>>3]-+p[E>>3];p[Jb>>3]=+p[E>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[v>>3];p[Lb>>3]=+p[t>>3]-+p[Jb>>3];p[ta>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Ib>>3]=+p[u>>3]-+p[F>>3];p[Jb>>3]=+p[F>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[v>>3];p[Lb>>3]=+p[u>>3]-+p[Jb>>3];p[ua>>3]=+p[Lb>>3]+ +p[Kb>>3];if(+p[ma>>3]==0.0&+p[na>>3]==0.0&+p[oa>>3]==0.0&+p[pa>>3]==0.0&+p[qa>>3]==0.0&+p[ra>>3]==0.0&+p[sa>>3]==0.0&+p[ta>>3]==0.0&+p[ua>>3]==0.0){p[l>>3]=+p[G>>3];Zb=+p[l>>3];r=j;return +Zb}i=+p[G>>3];p[H>>3]=+p[16]*+p[w>>3]+ +p[7]*(+p[G>>3]>=0.0?i:-i);p[G>>3]=+p[G>>3]+(+p[D>>3]*(+p[y>>3]*+p[ra>>3]+ +p[C>>3]*+p[na>>3]-(+p[B>>3]*+p[oa>>3]+ +p[z>>3]*+p[qa>>3]))+ +p[sa>>3]*(+p[y>>3]*+p[C>>3]-+p[B>>3]*+p[z>>3])+(+p[E>>3]*(+p[z>>3]*+p[pa>>3]+ +p[A>>3]*+p[oa>>3]-(+p[C>>3]*+p[ma>>3]+ +p[x>>3]*+p[ra>>3]))+ +p[ta>>3]*(+p[z>>3]*+p[A>>3]-+p[C>>3]*+p[x>>3]))+(+p[F>>3]*(+p[x>>3]*+p[qa>>3]+ +p[B>>3]*+p[ma>>3]-(+p[A>>3]*+p[na>>3]+ +p[y>>3]*+p[pa>>3]))+ +p[ua>>3]*(+p[x>>3]*+p[B>>3]-+p[A>>3]*+p[y>>3])));if(!(+p[G>>3]>=+p[H>>3])?!(-+p[G>>3]>=+p[H>>3]):0){k[ga>>2]=ja;k[ha>>2]=ka;ka=+p[pa>>3]==0.0;do if(+p[ma>>3]==0.0)if(ka){p[Ba>>3]=0.0;k[Ha>>2]=1;p[Ca>>3]=0.0;k[Ia>>2]=1;break}else{p[Hb>>3]=-+p[pa>>3];p[va>>3]=+p[Hb>>3]*+p[y>>3];p[Mb>>3]=+p[5]*+p[Hb>>3];p[Nb>>3]=+p[Mb>>3]-+p[Hb>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[Hb>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[y>>3];p[Nb>>3]=+p[Mb>>3]-+p[y>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[y>>3]-+p[Qb>>3];p[Sb>>3]=+p[va>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Ba>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Ba+8>>3]=+p[va>>3];k[Ha>>2]=2;p[wa>>3]=+p[pa>>3]*+p[z>>3];p[Mb>>3]=+p[5]*+p[pa>>3];p[Nb>>3]=+p[Mb>>3]-+p[pa>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[pa>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[z>>3];p[Nb>>3]=+p[Mb>>3]-+p[z>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[z>>3]-+p[Qb>>3];p[Sb>>3]=+p[wa>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Ca>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Ca+8>>3]=+p[wa>>3];k[Ia>>2]=2;break}else{i=+p[ma>>3]*+p[B>>3];if(ka){p[va>>3]=i;p[Mb>>3]=+p[5]*+p[ma>>3];p[Nb>>3]=+p[Mb>>3]-+p[ma>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[ma>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[B>>3];p[Nb>>3]=+p[Mb>>3]-+p[B>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[B>>3]-+p[Qb>>3];p[Sb>>3]=+p[va>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Ba>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Ba+8>>3]=+p[va>>3];k[Ha>>2]=2;p[Hb>>3]=-+p[ma>>3];p[wa>>3]=+p[Hb>>3]*+p[C>>3];p[Mb>>3]=+p[5]*+p[Hb>>3];p[Nb>>3]=+p[Mb>>3]-+p[Hb>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[Hb>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[C>>3];p[Nb>>3]=+p[Mb>>3]-+p[C>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[C>>3]-+p[Qb>>3];p[Sb>>3]=+p[wa>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Ca>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Ca+8>>3]=+p[wa>>3];k[Ia>>2]=2;break}else{p[Ra>>3]=i;p[Mb>>3]=+p[5]*+p[ma>>3];p[Nb>>3]=+p[Mb>>3]-+p[ma>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[ma>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[B>>3];p[Nb>>3]=+p[Mb>>3]-+p[B>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[B>>3]-+p[Qb>>3];p[Sb>>3]=+p[Ra>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Xa>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[bb>>3]=+p[pa>>3]*+p[y>>3];p[Mb>>3]=+p[5]*+p[pa>>3];p[Nb>>3]=+p[Mb>>3]-+p[pa>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[pa>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[y>>3];p[Nb>>3]=+p[Mb>>3]-+p[y>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[y>>3]-+p[Qb>>3];p[Sb>>3]=+p[bb>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[hb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Vb>>3]=+p[Xa>>3]-+p[hb>>3];p[Ib>>3]=+p[Xa>>3]-+p[Vb>>3];p[Jb>>3]=+p[Vb>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[hb>>3];p[Lb>>3]=+p[Xa>>3]-+p[Jb>>3];p[Ba>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Wb>>3]=+p[Ra>>3]+ +p[Vb>>3];p[Ib>>3]=+p[Wb>>3]-+p[Ra>>3];p[Jb>>3]=+p[Wb>>3]-+p[Ib>>3];p[Kb>>3]=+p[Vb>>3]-+p[Ib>>3];p[Lb>>3]=+p[Ra>>3]-+p[Jb>>3];p[Yb>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Vb>>3]=+p[Yb>>3]-+p[bb>>3];p[Ib>>3]=+p[Yb>>3]-+p[Vb>>3];p[Jb>>3]=+p[Vb>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[bb>>3];p[Lb>>3]=+p[Yb>>3]-+p[Jb>>3];p[Ba+8>>3]=+p[Lb>>3]+ +p[Kb>>3];p[va>>3]=+p[Wb>>3]+ +p[Vb>>3];p[Ib>>3]=+p[va>>3]-+p[Wb>>3];p[Jb>>3]=+p[va>>3]-+p[Ib>>3];p[Kb>>3]=+p[Vb>>3]-+p[Ib>>3];p[Lb>>3]=+p[Wb>>3]-+p[Jb>>3];p[Ba+16>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Ba+24>>3]=+p[va>>3];k[Ha>>2]=4;p[ab>>3]=+p[pa>>3]*+p[z>>3];p[Mb>>3]=+p[5]*+p[pa>>3];p[Nb>>3]=+p[Mb>>3]-+p[pa>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[pa>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[z>>3];p[Nb>>3]=+p[Mb>>3]-+p[z>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[z>>3]-+p[Qb>>3];p[Sb>>3]=+p[ab>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[gb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Qa>>3]=+p[ma>>3]*+p[C>>3];p[Mb>>3]=+p[5]*+p[ma>>3];p[Nb>>3]=+p[Mb>>3]-+p[ma>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[ma>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[C>>3];p[Nb>>3]=+p[Mb>>3]-+p[C>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[C>>3]-+p[Qb>>3];p[Sb>>3]=+p[Qa>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Wa>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Vb>>3]=+p[gb>>3]-+p[Wa>>3];p[Ib>>3]=+p[gb>>3]-+p[Vb>>3];p[Jb>>3]=+p[Vb>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[Wa>>3];p[Lb>>3]=+p[gb>>3]-+p[Jb>>3];p[Ca>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Wb>>3]=+p[ab>>3]+ +p[Vb>>3];p[Ib>>3]=+p[Wb>>3]-+p[ab>>3];p[Jb>>3]=+p[Wb>>3]-+p[Ib>>3];p[Kb>>3]=+p[Vb>>3]-+p[Ib>>3];p[Lb>>3]=+p[ab>>3]-+p[Jb>>3];p[Yb>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Vb>>3]=+p[Yb>>3]-+p[Qa>>3];p[Ib>>3]=+p[Yb>>3]-+p[Vb>>3];p[Jb>>3]=+p[Vb>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[Qa>>3];p[Lb>>3]=+p[Yb>>3]-+p[Jb>>3];p[Ca+8>>3]=+p[Lb>>3]+ +p[Kb>>3];p[wa>>3]=+p[Wb>>3]+ +p[Vb>>3];p[Ib>>3]=+p[wa>>3]-+p[Wb>>3];p[Jb>>3]=+p[wa>>3]-+p[Ib>>3];p[Kb>>3]=+p[Vb>>3]-+p[Ib>>3];p[Lb>>3]=+p[Wb>>3]-+p[Jb>>3];p[Ca+16>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Ca+24>>3]=+p[wa>>3];k[Ia>>2]=4;break}}while(0);wa=+p[qa>>3]==0.0;do if(+p[na>>3]==0.0)if(wa){p[Da>>3]=0.0;k[Ja>>2]=1;p[Ea>>3]=0.0;k[Ka>>2]=1;break}else{p[Hb>>3]=-+p[qa>>3];p[xa>>3]=+p[Hb>>3]*+p[z>>3];p[Mb>>3]=+p[5]*+p[Hb>>3];p[Nb>>3]=+p[Mb>>3]-+p[Hb>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[Hb>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[z>>3];p[Nb>>3]=+p[Mb>>3]-+p[z>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[z>>3]-+p[Qb>>3];p[Sb>>3]=+p[xa>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Da>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Da+8>>3]=+p[xa>>3];k[Ja>>2]=2;p[ya>>3]=+p[qa>>3]*+p[x>>3];p[Mb>>3]=+p[5]*+p[qa>>3];p[Nb>>3]=+p[Mb>>3]-+p[qa>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[qa>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[x>>3];p[Nb>>3]=+p[Mb>>3]-+p[x>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[x>>3]-+p[Qb>>3];p[Sb>>3]=+p[ya>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Ea>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Ea+8>>3]=+p[ya>>3];k[Ka>>2]=2;break}else{i=+p[na>>3]*+p[C>>3];if(wa){p[xa>>3]=i;p[Mb>>3]=+p[5]*+p[na>>3];p[Nb>>3]=+p[Mb>>3]-+p[na>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[na>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[C>>3];p[Nb>>3]=+p[Mb>>3]-+p[C>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[C>>3]-+p[Qb>>3];p[Sb>>3]=+p[xa>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Da>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Da+8>>3]=+p[xa>>3];k[Ja>>2]=2;p[Hb>>3]=-+p[na>>3];p[ya>>3]=+p[Hb>>3]*+p[A>>3];p[Mb>>3]=+p[5]*+p[Hb>>3];p[Nb>>3]=+p[Mb>>3]-+p[Hb>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[Hb>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[A>>3];p[Nb>>3]=+p[Mb>>3]-+p[A>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[A>>3]-+p[Qb>>3];p[Sb>>3]=+p[ya>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Ea>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Ea+8>>3]=+p[ya>>3];k[Ka>>2]=2;break}else{p[Na>>3]=i;p[Mb>>3]=+p[5]*+p[na>>3];p[Nb>>3]=+p[Mb>>3]-+p[na>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[na>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[C>>3];p[Nb>>3]=+p[Mb>>3]-+p[C>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[C>>3]-+p[Qb>>3];p[Sb>>3]=+p[Na>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Ta>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Za>>3]=+p[qa>>3]*+p[z>>3];p[Mb>>3]=+p[5]*+p[qa>>3];p[Nb>>3]=+p[Mb>>3]-+p[qa>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[qa>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[z>>3];p[Nb>>3]=+p[Mb>>3]-+p[z>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[z>>3]-+p[Qb>>3];p[Sb>>3]=+p[Za>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[db>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Vb>>3]=+p[Ta>>3]-+p[db>>3];p[Ib>>3]=+p[Ta>>3]-+p[Vb>>3];p[Jb>>3]=+p[Vb>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[db>>3];p[Lb>>3]=+p[Ta>>3]-+p[Jb>>3];p[Da>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Wb>>3]=+p[Na>>3]+ +p[Vb>>3];p[Ib>>3]=+p[Wb>>3]-+p[Na>>3];p[Jb>>3]=+p[Wb>>3]-+p[Ib>>3];p[Kb>>3]=+p[Vb>>3]-+p[Ib>>3];p[Lb>>3]=+p[Na>>3]-+p[Jb>>3];p[Yb>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Vb>>3]=+p[Yb>>3]-+p[Za>>3];p[Ib>>3]=+p[Yb>>3]-+p[Vb>>3];p[Jb>>3]=+p[Vb>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[Za>>3];p[Lb>>3]=+p[Yb>>3]-+p[Jb>>3];p[Da+8>>3]=+p[Lb>>3]+ +p[Kb>>3];p[xa>>3]=+p[Wb>>3]+ +p[Vb>>3];p[Ib>>3]=+p[xa>>3]-+p[Wb>>3];p[Jb>>3]=+p[xa>>3]-+p[Ib>>3];p[Kb>>3]=+p[Vb>>3]-+p[Ib>>3];p[Lb>>3]=+p[Wb>>3]-+p[Jb>>3];p[Da+16>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Da+24>>3]=+p[xa>>3];k[Ja>>2]=4;p[cb>>3]=+p[qa>>3]*+p[x>>3];p[Mb>>3]=+p[5]*+p[qa>>3];p[Nb>>3]=+p[Mb>>3]-+p[qa>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[qa>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[x>>3];p[Nb>>3]=+p[Mb>>3]-+p[x>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[x>>3]-+p[Qb>>3];p[Sb>>3]=+p[cb>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[ib>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Sa>>3]=+p[na>>3]*+p[A>>3];p[Mb>>3]=+p[5]*+p[na>>3];p[Nb>>3]=+p[Mb>>3]-+p[na>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[na>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[A>>3];p[Nb>>3]=+p[Mb>>3]-+p[A>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[A>>3]-+p[Qb>>3];p[Sb>>3]=+p[Sa>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Ya>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Vb>>3]=+p[ib>>3]-+p[Ya>>3];p[Ib>>3]=+p[ib>>3]-+p[Vb>>3];p[Jb>>3]=+p[Vb>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[Ya>>3];p[Lb>>3]=+p[ib>>3]-+p[Jb>>3];p[Ea>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Wb>>3]=+p[cb>>3]+ +p[Vb>>3];p[Ib>>3]=+p[Wb>>3]-+p[cb>>3];p[Jb>>3]=+p[Wb>>3]-+p[Ib>>3];p[Kb>>3]=+p[Vb>>3]-+p[Ib>>3];p[Lb>>3]=+p[cb>>3]-+p[Jb>>3];p[Yb>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Vb>>3]=+p[Yb>>3]-+p[Sa>>3];p[Ib>>3]=+p[Yb>>3]-+p[Vb>>3];p[Jb>>3]=+p[Vb>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[Sa>>3];p[Lb>>3]=+p[Yb>>3]-+p[Jb>>3];p[Ea+8>>3]=+p[Lb>>3]+ +p[Kb>>3];p[ya>>3]=+p[Wb>>3]+ +p[Vb>>3];p[Ib>>3]=+p[ya>>3]-+p[Wb>>3];p[Jb>>3]=+p[ya>>3]-+p[Ib>>3];p[Kb>>3]=+p[Vb>>3]-+p[Ib>>3];p[Lb>>3]=+p[Wb>>3]-+p[Jb>>3];p[Ea+16>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Ea+24>>3]=+p[ya>>3];k[Ka>>2]=4;break}}while(0);ya=+p[ra>>3]==0.0;do if(+p[oa>>3]==0.0)if(ya){p[Fa>>3]=0.0;k[La>>2]=1;p[Ga>>3]=0.0;k[Ma>>2]=1;break}else{p[Hb>>3]=-+p[ra>>3];p[za>>3]=+p[Hb>>3]*+p[x>>3];p[Mb>>3]=+p[5]*+p[Hb>>3];p[Nb>>3]=+p[Mb>>3]-+p[Hb>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[Hb>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[x>>3];p[Nb>>3]=+p[Mb>>3]-+p[x>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[x>>3]-+p[Qb>>3];p[Sb>>3]=+p[za>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Fa>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Fa+8>>3]=+p[za>>3];k[La>>2]=2;p[Aa>>3]=+p[ra>>3]*+p[y>>3];p[Mb>>3]=+p[5]*+p[ra>>3];p[Nb>>3]=+p[Mb>>3]-+p[ra>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[ra>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[y>>3];p[Nb>>3]=+p[Mb>>3]-+p[y>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[y>>3]-+p[Qb>>3];p[Sb>>3]=+p[Aa>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Ga>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Ga+8>>3]=+p[Aa>>3];k[Ma>>2]=2;break}else{i=+p[oa>>3]*+p[A>>3];if(ya){p[za>>3]=i;p[Mb>>3]=+p[5]*+p[oa>>3];p[Nb>>3]=+p[Mb>>3]-+p[oa>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[oa>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[A>>3];p[Nb>>3]=+p[Mb>>3]-+p[A>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[A>>3]-+p[Qb>>3];p[Sb>>3]=+p[za>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Fa>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Fa+8>>3]=+p[za>>3];k[La>>2]=2;p[Hb>>3]=-+p[oa>>3];p[Aa>>3]=+p[Hb>>3]*+p[B>>3];p[Mb>>3]=+p[5]*+p[Hb>>3];p[Nb>>3]=+p[Mb>>3]-+p[Hb>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[Hb>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[B>>3];p[Nb>>3]=+p[Mb>>3]-+p[B>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[B>>3]-+p[Qb>>3];p[Sb>>3]=+p[Aa>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Ga>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Ga+8>>3]=+p[Aa>>3];k[Ma>>2]=2;break}else{p[Pa>>3]=i;p[Mb>>3]=+p[5]*+p[oa>>3];p[Nb>>3]=+p[Mb>>3]-+p[oa>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[oa>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[A>>3];p[Nb>>3]=+p[Mb>>3]-+p[A>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[A>>3]-+p[Qb>>3];p[Sb>>3]=+p[Pa>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Va>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[$a>>3]=+p[ra>>3]*+p[x>>3];p[Mb>>3]=+p[5]*+p[ra>>3];p[Nb>>3]=+p[Mb>>3]-+p[ra>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[ra>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[x>>3];p[Nb>>3]=+p[Mb>>3]-+p[x>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[x>>3]-+p[Qb>>3];p[Sb>>3]=+p[$a>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[fb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Vb>>3]=+p[Va>>3]-+p[fb>>3];p[Ib>>3]=+p[Va>>3]-+p[Vb>>3];p[Jb>>3]=+p[Vb>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[fb>>3];p[Lb>>3]=+p[Va>>3]-+p[Jb>>3];p[Fa>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Wb>>3]=+p[Pa>>3]+ +p[Vb>>3];p[Ib>>3]=+p[Wb>>3]-+p[Pa>>3];p[Jb>>3]=+p[Wb>>3]-+p[Ib>>3];p[Kb>>3]=+p[Vb>>3]-+p[Ib>>3];p[Lb>>3]=+p[Pa>>3]-+p[Jb>>3];p[Yb>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Vb>>3]=+p[Yb>>3]-+p[$a>>3];p[Ib>>3]=+p[Yb>>3]-+p[Vb>>3];p[Jb>>3]=+p[Vb>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[$a>>3];p[Lb>>3]=+p[Yb>>3]-+p[Jb>>3];p[Fa+8>>3]=+p[Lb>>3]+ +p[Kb>>3];p[za>>3]=+p[Wb>>3]+ +p[Vb>>3];p[Ib>>3]=+p[za>>3]-+p[Wb>>3];p[Jb>>3]=+p[za>>3]-+p[Ib>>3];p[Kb>>3]=+p[Vb>>3]-+p[Ib>>3];p[Lb>>3]=+p[Wb>>3]-+p[Jb>>3];p[Fa+16>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Fa+24>>3]=+p[za>>3];k[La>>2]=4;p[_a>>3]=+p[ra>>3]*+p[y>>3];p[Mb>>3]=+p[5]*+p[ra>>3];p[Nb>>3]=+p[Mb>>3]-+p[ra>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[ra>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[y>>3];p[Nb>>3]=+p[Mb>>3]-+p[y>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[y>>3]-+p[Qb>>3];p[Sb>>3]=+p[_a>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[eb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Oa>>3]=+p[oa>>3]*+p[B>>3];p[Mb>>3]=+p[5]*+p[oa>>3];p[Nb>>3]=+p[Mb>>3]-+p[oa>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[oa>>3]-+p[Ob>>3];p[Mb>>3]=+p[5]*+p[B>>3];p[Nb>>3]=+p[Mb>>3]-+p[B>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[B>>3]-+p[Qb>>3];p[Sb>>3]=+p[Oa>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Ua>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Vb>>3]=+p[eb>>3]-+p[Ua>>3];p[Ib>>3]=+p[eb>>3]-+p[Vb>>3];p[Jb>>3]=+p[Vb>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[Ua>>3];p[Lb>>3]=+p[eb>>3]-+p[Jb>>3];p[Ga>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Wb>>3]=+p[_a>>3]+ +p[Vb>>3];p[Ib>>3]=+p[Wb>>3]-+p[_a>>3];p[Jb>>3]=+p[Wb>>3]-+p[Ib>>3];p[Kb>>3]=+p[Vb>>3]-+p[Ib>>3];p[Lb>>3]=+p[_a>>3]-+p[Jb>>3];p[Yb>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Vb>>3]=+p[Yb>>3]-+p[Oa>>3];p[Ib>>3]=+p[Yb>>3]-+p[Vb>>3];p[Jb>>3]=+p[Vb>>3]+ +p[Ib>>3];p[Kb>>3]=+p[Ib>>3]-+p[Oa>>3];p[Lb>>3]=+p[Yb>>3]-+p[Jb>>3];p[Ga+8>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Aa>>3]=+p[Wb>>3]+ +p[Vb>>3];p[Ib>>3]=+p[Aa>>3]-+p[Wb>>3];p[Jb>>3]=+p[Aa>>3]-+p[Ib>>3];p[Kb>>3]=+p[Vb>>3]-+p[Ib>>3];p[Lb>>3]=+p[Wb>>3]-+p[Jb>>3];p[Ga+16>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Ga+24>>3]=+p[Aa>>3];k[Ma>>2]=4;break}}while(0);Aa=Ee(k[Ja>>2]|0,Da,k[Ma>>2]|0,Ga,jb)|0;k[mb>>2]=Aa;Aa=Fe(k[mb>>2]|0,jb,+p[D>>3],Db)|0;k[Gb>>2]=Aa;Aa=Ee(k[la>>2]|0,k[ga>>2]|0,k[Gb>>2]|0,Db,k[ha>>2]|0)|0;k[la>>2]=Aa;k[ia>>2]=k[ga>>2];k[ga>>2]=k[ha>>2];k[ha>>2]=k[ia>>2];Aa=Ee(k[La>>2]|0,Fa,k[Ia>>2]|0,Ca,kb)|0;k[nb>>2]=Aa;Aa=Fe(k[nb>>2]|0,kb,+p[E>>3],Db)|0;k[Gb>>2]=Aa;Aa=Ee(k[la>>2]|0,k[ga>>2]|0,k[Gb>>2]|0,Db,k[ha>>2]|0)|0;k[la>>2]=Aa;k[ia>>2]=k[ga>>2];k[ga>>2]=k[ha>>2];k[ha>>2]=k[ia>>2];Aa=Ee(k[Ha>>2]|0,Ba,k[Ka>>2]|0,Ea,lb)|0;k[ob>>2]=Aa;Aa=Fe(k[ob>>2]|0,lb,+p[F>>3],Db)|0;k[Gb>>2]=Aa;Aa=Ee(k[la>>2]|0,k[ga>>2]|0,k[Gb>>2]|0,Db,k[ha>>2]|0)|0;k[la>>2]=Aa;k[ia>>2]=k[ga>>2];k[ga>>2]=k[ha>>2];k[ha>>2]=k[ia>>2];if(+p[sa>>3]!=0.0){Aa=Fe(4,U,+p[sa>>3],Cb)|0;k[Fb>>2]=Aa;Aa=Ee(k[la>>2]|0,k[ga>>2]|0,k[Fb>>2]|0,Cb,k[ha>>2]|0)|0;k[la>>2]=Aa;k[ia>>2]=k[ga>>2];k[ga>>2]=k[ha>>2];k[ha>>2]=k[ia>>2]}if(+p[ta>>3]!=0.0){Aa=Fe(4,V,+p[ta>>3],Cb)|0;k[Fb>>2]=Aa;Aa=Ee(k[la>>2]|0,k[ga>>2]|0,k[Fb>>2]|0,Cb,k[ha>>2]|0)|0;k[la>>2]=Aa;k[ia>>2]=k[ga>>2];k[ga>>2]=k[ha>>2];k[ha>>2]=k[ia>>2]}if(+p[ua>>3]!=0.0){Aa=Fe(4,W,+p[ua>>3],Cb)|0;k[Fb>>2]=Aa;Aa=Ee(k[la>>2]|0,k[ga>>2]|0,k[Fb>>2]|0,Cb,k[ha>>2]|0)|0;k[la>>2]=Aa;k[ia>>2]=k[ga>>2];k[ga>>2]=k[ha>>2];k[ha>>2]=k[ia>>2]}if(+p[ma>>3]!=0.0){if(+p[qa>>3]!=0.0?(p[tb>>3]=+p[ma>>3]*+p[qa>>3],p[Mb>>3]=+p[5]*+p[ma>>3],p[Nb>>3]=+p[Mb>>3]-+p[ma>>3],p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3],p[Pb>>3]=+p[ma>>3]-+p[Ob>>3],p[Mb>>3]=+p[5]*+p[qa>>3],p[Nb>>3]=+p[Mb>>3]-+p[qa>>3],p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3],p[Rb>>3]=+p[qa>>3]-+p[Qb>>3],p[Sb>>3]=+p[tb>>3]-+p[Ob>>3]*+p[Qb>>3],p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3],p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3],p[zb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3],p[Mb>>3]=+p[5]*+p[F>>3],p[Nb>>3]=+p[Mb>>3]-+p[F>>3],p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3],p[Rb>>3]=+p[F>>3]-+p[Qb>>3],p[Vb>>3]=+p[zb>>3]*+p[F>>3],p[Mb>>3]=+p[5]*+p[zb>>3],p[Nb>>3]=+p[Mb>>3]-+p[zb>>3],p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3],p[Pb>>3]=+p[zb>>3]-+p[Ob>>3],p[Sb>>3]=+p[Vb>>3]-+p[Ob>>3]*+p[Qb>>3],p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3],p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3],p[Bb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3],p[Wb>>3]=+p[tb>>3]*+p[F>>3],p[Mb>>3]=+p[5]*+p[tb>>3],p[Nb>>3]=+p[Mb>>3]-+p[tb>>3],p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3],p[Pb>>3]=+p[tb>>3]-+p[Ob>>3],p[Sb>>3]=+p[Wb>>3]-+p[Ob>>3]*+p[Qb>>3],p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3],p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3],p[Yb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3],p[Xb>>3]=+p[Vb>>3]+ +p[Yb>>3],p[Ib>>3]=+p[Xb>>3]-+p[Vb>>3],p[Jb>>3]=+p[Xb>>3]-+p[Ib>>3],p[Kb>>3]=+p[Yb>>3]-+p[Ib>>3],p[Lb>>3]=+p[Vb>>3]-+p[Jb>>3],p[Bb+8>>3]=+p[Lb>>3]+ +p[Kb>>3],p[Eb>>3]=+p[Wb>>3]+ +p[Xb>>3],p[Ib>>3]=+p[Eb>>3]-+p[Wb>>3],p[Bb+16>>3]=+p[Xb>>3]-+p[Ib>>3],p[Bb+24>>3]=+p[Eb>>3],Aa=Ee(k[la>>2]|0,k[ga>>2]|0,4,Bb,k[ha>>2]|0)|0,k[la>>2]=Aa,k[ia>>2]=k[ga>>2],k[ga>>2]=k[ha>>2],k[ha>>2]=k[ia>>2],+p[ua>>3]!=0.0):0){p[Mb>>3]=+p[5]*+p[ua>>3];p[Nb>>3]=+p[Mb>>3]-+p[ua>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[ua>>3]-+p[Qb>>3];p[Vb>>3]=+p[zb>>3]*+p[ua>>3];p[Mb>>3]=+p[5]*+p[zb>>3];p[Nb>>3]=+p[Mb>>3]-+p[zb>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[zb>>3]-+p[Ob>>3];p[Sb>>3]=+p[Vb>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Bb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Wb>>3]=+p[tb>>3]*+p[ua>>3];p[Mb>>3]=+p[5]*+p[tb>>3];p[Nb>>3]=+p[Mb>>3]-+p[tb>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[tb>>3]-+p[Ob>>3];p[Sb>>3]=+p[Wb>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Yb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Xb>>3]=+p[Vb>>3]+ +p[Yb>>3];p[Ib>>3]=+p[Xb>>3]-+p[Vb>>3];p[Jb>>3]=+p[Xb>>3]-+p[Ib>>3];p[Kb>>3]=+p[Yb>>3]-+p[Ib>>3];p[Lb>>3]=+p[Vb>>3]-+p[Jb>>3];p[Bb+8>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Eb>>3]=+p[Wb>>3]+ +p[Xb>>3];p[Ib>>3]=+p[Eb>>3]-+p[Wb>>3];p[Bb+16>>3]=+p[Xb>>3]-+p[Ib>>3];p[Bb+24>>3]=+p[Eb>>3];tb=Ee(k[la>>2]|0,k[ga>>2]|0,4,Bb,k[ha>>2]|0)|0;k[la>>2]=tb;k[ia>>2]=k[ga>>2];k[ga>>2]=k[ha>>2];k[ha>>2]=k[ia>>2]}if(+p[ra>>3]!=0.0?(p[Hb>>3]=-+p[ma>>3],p[sb>>3]=+p[Hb>>3]*+p[ra>>3],p[Mb>>3]=+p[5]*+p[Hb>>3],p[Nb>>3]=+p[Mb>>3]-+p[Hb>>3],p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3],p[Pb>>3]=+p[Hb>>3]-+p[Ob>>3],p[Mb>>3]=+p[5]*+p[ra>>3],p[Nb>>3]=+p[Mb>>3]-+p[ra>>3],p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3],p[Rb>>3]=+p[ra>>3]-+p[Qb>>3],p[Sb>>3]=+p[sb>>3]-+p[Ob>>3]*+p[Qb>>3],p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3],p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3],p[yb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3],p[Mb>>3]=+p[5]*+p[E>>3],p[Nb>>3]=+p[Mb>>3]-+p[E>>3],p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3],p[Rb>>3]=+p[E>>3]-+p[Qb>>3],p[Vb>>3]=+p[yb>>3]*+p[E>>3],p[Mb>>3]=+p[5]*+p[yb>>3],p[Nb>>3]=+p[Mb>>3]-+p[yb>>3],p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3],p[Pb>>3]=+p[yb>>3]-+p[Ob>>3],p[Sb>>3]=+p[Vb>>3]-+p[Ob>>3]*+p[Qb>>3],p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3],p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3],p[Bb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3],p[Wb>>3]=+p[sb>>3]*+p[E>>3],p[Mb>>3]=+p[5]*+p[sb>>3],p[Nb>>3]=+p[Mb>>3]-+p[sb>>3],p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3],p[Pb>>3]=+p[sb>>3]-+p[Ob>>3],p[Sb>>3]=+p[Wb>>3]-+p[Ob>>3]*+p[Qb>>3],p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3],p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3],p[Yb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3],p[Xb>>3]=+p[Vb>>3]+ +p[Yb>>3],p[Ib>>3]=+p[Xb>>3]-+p[Vb>>3],p[Jb>>3]=+p[Xb>>3]-+p[Ib>>3],p[Kb>>3]=+p[Yb>>3]-+p[Ib>>3],p[Lb>>3]=+p[Vb>>3]-+p[Jb>>3],p[Bb+8>>3]=+p[Lb>>3]+ +p[Kb>>3],p[Eb>>3]=+p[Wb>>3]+ +p[Xb>>3],p[Ib>>3]=+p[Eb>>3]-+p[Wb>>3],p[Bb+16>>3]=+p[Xb>>3]-+p[Ib>>3],p[Bb+24>>3]=+p[Eb>>3],ma=Ee(k[la>>2]|0,k[ga>>2]|0,4,Bb,k[ha>>2]|0)|0,k[la>>2]=ma,k[ia>>2]=k[ga>>2],k[ga>>2]=k[ha>>2],k[ha>>2]=k[ia>>2],+p[ta>>3]!=0.0):0){p[Mb>>3]=+p[5]*+p[ta>>3];p[Nb>>3]=+p[Mb>>3]-+p[ta>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[ta>>3]-+p[Qb>>3];p[Vb>>3]=+p[yb>>3]*+p[ta>>3];p[Mb>>3]=+p[5]*+p[yb>>3];p[Nb>>3]=+p[Mb>>3]-+p[yb>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[yb>>3]-+p[Ob>>3];p[Sb>>3]=+p[Vb>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Bb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Wb>>3]=+p[sb>>3]*+p[ta>>3];p[Mb>>3]=+p[5]*+p[sb>>3];p[Nb>>3]=+p[Mb>>3]-+p[sb>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[sb>>3]-+p[Ob>>3];p[Sb>>3]=+p[Wb>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Yb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Xb>>3]=+p[Vb>>3]+ +p[Yb>>3];p[Ib>>3]=+p[Xb>>3]-+p[Vb>>3];p[Jb>>3]=+p[Xb>>3]-+p[Ib>>3];p[Kb>>3]=+p[Yb>>3]-+p[Ib>>3];p[Lb>>3]=+p[Vb>>3]-+p[Jb>>3];p[Bb+8>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Eb>>3]=+p[Wb>>3]+ +p[Xb>>3];p[Ib>>3]=+p[Eb>>3]-+p[Wb>>3];p[Bb+16>>3]=+p[Xb>>3]-+p[Ib>>3];p[Bb+24>>3]=+p[Eb>>3];sb=Ee(k[la>>2]|0,k[ga>>2]|0,4,Bb,k[ha>>2]|0)|0;k[la>>2]=sb;k[ia>>2]=k[ga>>2];k[ga>>2]=k[ha>>2];k[ha>>2]=k[ia>>2]}}if(+p[na>>3]!=0.0){if(+p[ra>>3]!=0.0?(p[pb>>3]=+p[na>>3]*+p[ra>>3],p[Mb>>3]=+p[5]*+p[na>>3],p[Nb>>3]=+p[Mb>>3]-+p[na>>3],p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3],p[Pb>>3]=+p[na>>3]-+p[Ob>>3],p[Mb>>3]=+p[5]*+p[ra>>3],p[Nb>>3]=+p[Mb>>3]-+p[ra>>3],p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3],p[Rb>>3]=+p[ra>>3]-+p[Qb>>3],p[Sb>>3]=+p[pb>>3]-+p[Ob>>3]*+p[Qb>>3],p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3],p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3],p[vb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3],p[Mb>>3]=+p[5]*+p[D>>3],p[Nb>>3]=+p[Mb>>3]-+p[D>>3],p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3],p[Rb>>3]=+p[D>>3]-+p[Qb>>3],p[Vb>>3]=+p[vb>>3]*+p[D>>3],p[Mb>>3]=+p[5]*+p[vb>>3],p[Nb>>3]=+p[Mb>>3]-+p[vb>>3],p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3],p[Pb>>3]=+p[vb>>3]-+p[Ob>>3],p[Sb>>3]=+p[Vb>>3]-+p[Ob>>3]*+p[Qb>>3],p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3],p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3],p[Bb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3],p[Wb>>3]=+p[pb>>3]*+p[D>>3],p[Mb>>3]=+p[5]*+p[pb>>3],p[Nb>>3]=+p[Mb>>3]-+p[pb>>3],p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3],p[Pb>>3]=+p[pb>>3]-+p[Ob>>3],p[Sb>>3]=+p[Wb>>3]-+p[Ob>>3]*+p[Qb>>3],p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3],p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3],p[Yb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3],p[Xb>>3]=+p[Vb>>3]+ +p[Yb>>3],p[Ib>>3]=+p[Xb>>3]-+p[Vb>>3],p[Jb>>3]=+p[Xb>>3]-+p[Ib>>3],p[Kb>>3]=+p[Yb>>3]-+p[Ib>>3],p[Lb>>3]=+p[Vb>>3]-+p[Jb>>3],p[Bb+8>>3]=+p[Lb>>3]+ +p[Kb>>3],p[Eb>>3]=+p[Wb>>3]+ +p[Xb>>3],p[Ib>>3]=+p[Eb>>3]-+p[Wb>>3],p[Bb+16>>3]=+p[Xb>>3]-+p[Ib>>3],p[Bb+24>>3]=+p[Eb>>3],ra=Ee(k[la>>2]|0,k[ga>>2]|0,4,Bb,k[ha>>2]|0)|0,k[la>>2]=ra,k[ia>>2]=k[ga>>2],k[ga>>2]=k[ha>>2],k[ha>>2]=k[ia>>2],+p[sa>>3]!=0.0):0){p[Mb>>3]=+p[5]*+p[sa>>3];p[Nb>>3]=+p[Mb>>3]-+p[sa>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[sa>>3]-+p[Qb>>3];p[Vb>>3]=+p[vb>>3]*+p[sa>>3];p[Mb>>3]=+p[5]*+p[vb>>3];p[Nb>>3]=+p[Mb>>3]-+p[vb>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[vb>>3]-+p[Ob>>3];p[Sb>>3]=+p[Vb>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Bb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Wb>>3]=+p[pb>>3]*+p[sa>>3];p[Mb>>3]=+p[5]*+p[pb>>3];p[Nb>>3]=+p[Mb>>3]-+p[pb>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[pb>>3]-+p[Ob>>3];p[Sb>>3]=+p[Wb>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Yb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Xb>>3]=+p[Vb>>3]+ +p[Yb>>3];p[Ib>>3]=+p[Xb>>3]-+p[Vb>>3];p[Jb>>3]=+p[Xb>>3]-+p[Ib>>3];p[Kb>>3]=+p[Yb>>3]-+p[Ib>>3];p[Lb>>3]=+p[Vb>>3]-+p[Jb>>3];p[Bb+8>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Eb>>3]=+p[Wb>>3]+ +p[Xb>>3];p[Ib>>3]=+p[Eb>>3]-+p[Wb>>3];p[Bb+16>>3]=+p[Xb>>3]-+p[Ib>>3];p[Bb+24>>3]=+p[Eb>>3];pb=Ee(k[la>>2]|0,k[ga>>2]|0,4,Bb,k[ha>>2]|0)|0;k[la>>2]=pb;k[ia>>2]=k[ga>>2];k[ga>>2]=k[ha>>2];k[ha>>2]=k[ia>>2]}if(+p[pa>>3]!=0.0?(p[Hb>>3]=-+p[na>>3],p[ub>>3]=+p[Hb>>3]*+p[pa>>3],p[Mb>>3]=+p[5]*+p[Hb>>3],p[Nb>>3]=+p[Mb>>3]-+p[Hb>>3],p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3],p[Pb>>3]=+p[Hb>>3]-+p[Ob>>3],p[Mb>>3]=+p[5]*+p[pa>>3],p[Nb>>3]=+p[Mb>>3]-+p[pa>>3],p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3],p[Rb>>3]=+p[pa>>3]-+p[Qb>>3],p[Sb>>3]=+p[ub>>3]-+p[Ob>>3]*+p[Qb>>3],p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3],p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3],p[Ab>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3],p[Mb>>3]=+p[5]*+p[F>>3],p[Nb>>3]=+p[Mb>>3]-+p[F>>3],p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3],p[Rb>>3]=+p[F>>3]-+p[Qb>>3],p[Vb>>3]=+p[Ab>>3]*+p[F>>3],p[Mb>>3]=+p[5]*+p[Ab>>3],p[Nb>>3]=+p[Mb>>3]-+p[Ab>>3],p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3],p[Pb>>3]=+p[Ab>>3]-+p[Ob>>3],p[Sb>>3]=+p[Vb>>3]-+p[Ob>>3]*+p[Qb>>3],p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3],p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3],p[Bb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3],p[Wb>>3]=+p[ub>>3]*+p[F>>3],p[Mb>>3]=+p[5]*+p[ub>>3],p[Nb>>3]=+p[Mb>>3]-+p[ub>>3],p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3],p[Pb>>3]=+p[ub>>3]-+p[Ob>>3],p[Sb>>3]=+p[Wb>>3]-+p[Ob>>3]*+p[Qb>>3],p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3],p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3],p[Yb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3],p[Xb>>3]=+p[Vb>>3]+ +p[Yb>>3],p[Ib>>3]=+p[Xb>>3]-+p[Vb>>3],p[Jb>>3]=+p[Xb>>3]-+p[Ib>>3],p[Kb>>3]=+p[Yb>>3]-+p[Ib>>3],p[Lb>>3]=+p[Vb>>3]-+p[Jb>>3],p[Bb+8>>3]=+p[Lb>>3]+ +p[Kb>>3],p[Eb>>3]=+p[Wb>>3]+ +p[Xb>>3],p[Ib>>3]=+p[Eb>>3]-+p[Wb>>3],p[Bb+16>>3]=+p[Xb>>3]-+p[Ib>>3],p[Bb+24>>3]=+p[Eb>>3],F=Ee(k[la>>2]|0,k[ga>>2]|0,4,Bb,k[ha>>2]|0)|0,k[la>>2]=F,k[ia>>2]=k[ga>>2],k[ga>>2]=k[ha>>2],k[ha>>2]=k[ia>>2],+p[ua>>3]!=0.0):0){p[Mb>>3]=+p[5]*+p[ua>>3];p[Nb>>3]=+p[Mb>>3]-+p[ua>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[ua>>3]-+p[Qb>>3];p[Vb>>3]=+p[Ab>>3]*+p[ua>>3];p[Mb>>3]=+p[5]*+p[Ab>>3];p[Nb>>3]=+p[Mb>>3]-+p[Ab>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[Ab>>3]-+p[Ob>>3];p[Sb>>3]=+p[Vb>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Bb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Wb>>3]=+p[ub>>3]*+p[ua>>3];p[Mb>>3]=+p[5]*+p[ub>>3];p[Nb>>3]=+p[Mb>>3]-+p[ub>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[ub>>3]-+p[Ob>>3];p[Sb>>3]=+p[Wb>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Yb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Xb>>3]=+p[Vb>>3]+ +p[Yb>>3];p[Ib>>3]=+p[Xb>>3]-+p[Vb>>3];p[Jb>>3]=+p[Xb>>3]-+p[Ib>>3];p[Kb>>3]=+p[Yb>>3]-+p[Ib>>3];p[Lb>>3]=+p[Vb>>3]-+p[Jb>>3];p[Bb+8>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Eb>>3]=+p[Wb>>3]+ +p[Xb>>3];p[Ib>>3]=+p[Eb>>3]-+p[Wb>>3];p[Bb+16>>3]=+p[Xb>>3]-+p[Ib>>3];p[Bb+24>>3]=+p[Eb>>3];ub=Ee(k[la>>2]|0,k[ga>>2]|0,4,Bb,k[ha>>2]|0)|0;k[la>>2]=ub;k[ia>>2]=k[ga>>2];k[ga>>2]=k[ha>>2];k[ha>>2]=k[ia>>2]}}if(+p[oa>>3]!=0.0){if(+p[pa>>3]!=0.0?(p[rb>>3]=+p[oa>>3]*+p[pa>>3],p[Mb>>3]=+p[5]*+p[oa>>3],p[Nb>>3]=+p[Mb>>3]-+p[oa>>3],p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3],p[Pb>>3]=+p[oa>>3]-+p[Ob>>3],p[Mb>>3]=+p[5]*+p[pa>>3],p[Nb>>3]=+p[Mb>>3]-+p[pa>>3],p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3],p[Rb>>3]=+p[pa>>3]-+p[Qb>>3],p[Sb>>3]=+p[rb>>3]-+p[Ob>>3]*+p[Qb>>3],p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3],p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3],p[xb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3],p[Mb>>3]=+p[5]*+p[E>>3],p[Nb>>3]=+p[Mb>>3]-+p[E>>3],p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3],p[Rb>>3]=+p[E>>3]-+p[Qb>>3],p[Vb>>3]=+p[xb>>3]*+p[E>>3],p[Mb>>3]=+p[5]*+p[xb>>3],p[Nb>>3]=+p[Mb>>3]-+p[xb>>3],p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3],p[Pb>>3]=+p[xb>>3]-+p[Ob>>3],p[Sb>>3]=+p[Vb>>3]-+p[Ob>>3]*+p[Qb>>3],p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3],p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3],p[Bb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3],p[Wb>>3]=+p[rb>>3]*+p[E>>3],p[Mb>>3]=+p[5]*+p[rb>>3],p[Nb>>3]=+p[Mb>>3]-+p[rb>>3],p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3],p[Pb>>3]=+p[rb>>3]-+p[Ob>>3],p[Sb>>3]=+p[Wb>>3]-+p[Ob>>3]*+p[Qb>>3],p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3],p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3],p[Yb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3],p[Xb>>3]=+p[Vb>>3]+ +p[Yb>>3],p[Ib>>3]=+p[Xb>>3]-+p[Vb>>3],p[Jb>>3]=+p[Xb>>3]-+p[Ib>>3],p[Kb>>3]=+p[Yb>>3]-+p[Ib>>3],p[Lb>>3]=+p[Vb>>3]-+p[Jb>>3],p[Bb+8>>3]=+p[Lb>>3]+ +p[Kb>>3],p[Eb>>3]=+p[Wb>>3]+ +p[Xb>>3],p[Ib>>3]=+p[Eb>>3]-+p[Wb>>3],p[Bb+16>>3]=+p[Xb>>3]-+p[Ib>>3],p[Bb+24>>3]=+p[Eb>>3],E=Ee(k[la>>2]|0,k[ga>>2]|0,4,Bb,k[ha>>2]|0)|0,k[la>>2]=E,k[ia>>2]=k[ga>>2],k[ga>>2]=k[ha>>2],k[ha>>2]=k[ia>>2],+p[ta>>3]!=0.0):0){p[Mb>>3]=+p[5]*+p[ta>>3];p[Nb>>3]=+p[Mb>>3]-+p[ta>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[ta>>3]-+p[Qb>>3];p[Vb>>3]=+p[xb>>3]*+p[ta>>3];p[Mb>>3]=+p[5]*+p[xb>>3];p[Nb>>3]=+p[Mb>>3]-+p[xb>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[xb>>3]-+p[Ob>>3];p[Sb>>3]=+p[Vb>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Bb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Wb>>3]=+p[rb>>3]*+p[ta>>3];p[Mb>>3]=+p[5]*+p[rb>>3];p[Nb>>3]=+p[Mb>>3]-+p[rb>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[rb>>3]-+p[Ob>>3];p[Sb>>3]=+p[Wb>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Yb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Xb>>3]=+p[Vb>>3]+ +p[Yb>>3];p[Ib>>3]=+p[Xb>>3]-+p[Vb>>3];p[Jb>>3]=+p[Xb>>3]-+p[Ib>>3];p[Kb>>3]=+p[Yb>>3]-+p[Ib>>3];p[Lb>>3]=+p[Vb>>3]-+p[Jb>>3];p[Bb+8>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Eb>>3]=+p[Wb>>3]+ +p[Xb>>3];p[Ib>>3]=+p[Eb>>3]-+p[Wb>>3];p[Bb+16>>3]=+p[Xb>>3]-+p[Ib>>3];p[Bb+24>>3]=+p[Eb>>3];rb=Ee(k[la>>2]|0,k[ga>>2]|0,4,Bb,k[ha>>2]|0)|0;k[la>>2]=rb;k[ia>>2]=k[ga>>2];k[ga>>2]=k[ha>>2];k[ha>>2]=k[ia>>2]}if(+p[qa>>3]!=0.0?(p[Hb>>3]=-+p[oa>>3],p[qb>>3]=+p[Hb>>3]*+p[qa>>3],p[Mb>>3]=+p[5]*+p[Hb>>3],p[Nb>>3]=+p[Mb>>3]-+p[Hb>>3],p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3],p[Pb>>3]=+p[Hb>>3]-+p[Ob>>3],p[Mb>>3]=+p[5]*+p[qa>>3],p[Nb>>3]=+p[Mb>>3]-+p[qa>>3],p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3],p[Rb>>3]=+p[qa>>3]-+p[Qb>>3],p[Sb>>3]=+p[qb>>3]-+p[Ob>>3]*+p[Qb>>3],p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3],p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3],p[wb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3],p[Mb>>3]=+p[5]*+p[D>>3],p[Nb>>3]=+p[Mb>>3]-+p[D>>3],p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3],p[Rb>>3]=+p[D>>3]-+p[Qb>>3],p[Vb>>3]=+p[wb>>3]*+p[D>>3],p[Mb>>3]=+p[5]*+p[wb>>3],p[Nb>>3]=+p[Mb>>3]-+p[wb>>3],p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3],p[Pb>>3]=+p[wb>>3]-+p[Ob>>3],p[Sb>>3]=+p[Vb>>3]-+p[Ob>>3]*+p[Qb>>3],p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3],p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3],p[Bb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3],p[Wb>>3]=+p[qb>>3]*+p[D>>3],p[Mb>>3]=+p[5]*+p[qb>>3],p[Nb>>3]=+p[Mb>>3]-+p[qb>>3],p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3],p[Pb>>3]=+p[qb>>3]-+p[Ob>>3],p[Sb>>3]=+p[Wb>>3]-+p[Ob>>3]*+p[Qb>>3],p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3],p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3],p[Yb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3],p[Xb>>3]=+p[Vb>>3]+ +p[Yb>>3],p[Ib>>3]=+p[Xb>>3]-+p[Vb>>3],p[Jb>>3]=+p[Xb>>3]-+p[Ib>>3],p[Kb>>3]=+p[Yb>>3]-+p[Ib>>3],p[Lb>>3]=+p[Vb>>3]-+p[Jb>>3],p[Bb+8>>3]=+p[Lb>>3]+ +p[Kb>>3],p[Eb>>3]=+p[Wb>>3]+ +p[Xb>>3],p[Ib>>3]=+p[Eb>>3]-+p[Wb>>3],p[Bb+16>>3]=+p[Xb>>3]-+p[Ib>>3],p[Bb+24>>3]=+p[Eb>>3],D=Ee(k[la>>2]|0,k[ga>>2]|0,4,Bb,k[ha>>2]|0)|0,k[la>>2]=D,k[ia>>2]=k[ga>>2],k[ga>>2]=k[ha>>2],k[ha>>2]=k[ia>>2],+p[sa>>3]!=0.0):0){p[Mb>>3]=+p[5]*+p[sa>>3];p[Nb>>3]=+p[Mb>>3]-+p[sa>>3];p[Qb>>3]=+p[Mb>>3]-+p[Nb>>3];p[Rb>>3]=+p[sa>>3]-+p[Qb>>3];p[Vb>>3]=+p[wb>>3]*+p[sa>>3];p[Mb>>3]=+p[5]*+p[wb>>3];p[Nb>>3]=+p[Mb>>3]-+p[wb>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[wb>>3]-+p[Ob>>3];p[Sb>>3]=+p[Vb>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Bb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Wb>>3]=+p[qb>>3]*+p[sa>>3];p[Mb>>3]=+p[5]*+p[qb>>3];p[Nb>>3]=+p[Mb>>3]-+p[qb>>3];p[Ob>>3]=+p[Mb>>3]-+p[Nb>>3];p[Pb>>3]=+p[qb>>3]-+p[Ob>>3];p[Sb>>3]=+p[Wb>>3]-+p[Ob>>3]*+p[Qb>>3];p[Tb>>3]=+p[Sb>>3]-+p[Pb>>3]*+p[Qb>>3];p[Ub>>3]=+p[Tb>>3]-+p[Ob>>3]*+p[Rb>>3];p[Yb>>3]=+p[Pb>>3]*+p[Rb>>3]-+p[Ub>>3];p[Xb>>3]=+p[Vb>>3]+ +p[Yb>>3];p[Ib>>3]=+p[Xb>>3]-+p[Vb>>3];p[Jb>>3]=+p[Xb>>3]-+p[Ib>>3];p[Kb>>3]=+p[Yb>>3]-+p[Ib>>3];p[Lb>>3]=+p[Vb>>3]-+p[Jb>>3];p[Bb+8>>3]=+p[Lb>>3]+ +p[Kb>>3];p[Eb>>3]=+p[Wb>>3]+ +p[Xb>>3];p[Ib>>3]=+p[Eb>>3]-+p[Wb>>3];p[Bb+16>>3]=+p[Xb>>3]-+p[Ib>>3];p[Bb+24>>3]=+p[Eb>>3];Eb=Ee(k[la>>2]|0,k[ga>>2]|0,4,Bb,k[ha>>2]|0)|0;k[la>>2]=Eb;k[ia>>2]=k[ga>>2];k[ga>>2]=k[ha>>2];k[ha>>2]=k[ia>>2]}}if(+p[sa>>3]!=0.0){Eb=Fe(k[mb>>2]|0,jb,+p[sa>>3],Db)|0;k[Gb>>2]=Eb;Eb=Ee(k[la>>2]|0,k[ga>>2]|0,k[Gb>>2]|0,Db,k[ha>>2]|0)|0;k[la>>2]=Eb;k[ia>>2]=k[ga>>2];k[ga>>2]=k[ha>>2];k[ha>>2]=k[ia>>2]}if(+p[ta>>3]!=0.0){Eb=Fe(k[nb>>2]|0,kb,+p[ta>>3],Db)|0;k[Gb>>2]=Eb;Eb=Ee(k[la>>2]|0,k[ga>>2]|0,k[Gb>>2]|0,Db,k[ha>>2]|0)|0;k[la>>2]=Eb;k[ia>>2]=k[ga>>2];k[ga>>2]=k[ha>>2];k[ha>>2]=k[ia>>2]}if(+p[ua>>3]!=0.0){Eb=Fe(k[ob>>2]|0,lb,+p[ua>>3],Db)|0;k[Gb>>2]=Eb;Eb=Ee(k[la>>2]|0,k[ga>>2]|0,k[Gb>>2]|0,Db,k[ha>>2]|0)|0;k[la>>2]=Eb;k[ia>>2]=k[ga>>2];k[ga>>2]=k[ha>>2];k[ha>>2]=k[ia>>2]}p[l>>3]=+p[(k[ga>>2]|0)+((k[la>>2]|0)-1<<3)>>3];Zb=+p[l>>3];r=j;return +Zb}p[l>>3]=+p[G>>3];Zb=+p[l>>3];r=j;return +Zb}p[l>>3]=+p[G>>3];Zb=+p[l>>3];r=j;return +Zb}function Me(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;i=+i;j=+j;var l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0;l=r;r=r+208|0;m=l+176|0;n=l+204|0;o=l+200|0;q=l+196|0;s=l+192|0;t=l+188|0;u=l+184|0;v=l+168|0;w=l+160|0;x=l+152|0;y=l+144|0;z=l+136|0;A=l+128|0;B=l+120|0;C=l+112|0;D=l+104|0;E=l+96|0;F=l+88|0;G=l+80|0;H=l+72|0;I=l+64|0;J=l+56|0;K=l+48|0;L=l+40|0;M=l+32|0;N=l+24|0;O=l+16|0;P=l+8|0;Q=l;k[n>>2]=a;k[o>>2]=b;k[q>>2]=c;k[s>>2]=d;k[t>>2]=e;k[u>>2]=f;p[v>>3]=g;p[w>>3]=h;p[x>>3]=i;p[y>>3]=j;f=(k[n>>2]|0)+49740|0;k[f>>2]=(k[f>>2]|0)+1;p[z>>3]=+p[k[q>>2]>>3]-+p[k[u>>2]>>3];p[A>>3]=+p[k[s>>2]>>3]-+p[k[u>>2]>>3];p[B>>3]=+p[k[t>>2]>>3]-+p[k[u>>2]>>3];p[C>>3]=+p[(k[q>>2]|0)+8>>3]-+p[(k[u>>2]|0)+8>>3];p[D>>3]=+p[(k[s>>2]|0)+8>>3]-+p[(k[u>>2]|0)+8>>3];p[E>>3]=+p[(k[t>>2]|0)+8>>3]-+p[(k[u>>2]|0)+8>>3];p[F>>3]=+p[v>>3]-+p[y>>3];p[G>>3]=+p[w>>3]-+p[y>>3];p[H>>3]=+p[x>>3]-+p[y>>3];p[I>>3]=+p[A>>3]*+p[E>>3];p[J>>3]=+p[B>>3]*+p[D>>3];p[K>>3]=+p[B>>3]*+p[C>>3];p[L>>3]=+p[z>>3]*+p[E>>3];p[M>>3]=+p[z>>3]*+p[D>>3];p[N>>3]=+p[A>>3]*+p[C>>3];p[O>>3]=+p[F>>3]*(+p[I>>3]-+p[J>>3])+ +p[G>>3]*(+p[K>>3]-+p[L>>3])+ +p[H>>3]*(+p[M>>3]-+p[N>>3]);if(k[(k[o>>2]|0)+84>>2]|0){p[m>>3]=+p[O>>3];R=+p[m>>3];r=l;return +R}j=+p[I>>3];i=+p[J>>3];h=+p[F>>3];g=+p[K>>3];S=+p[L>>3];T=+p[G>>3];U=+p[M>>3];V=+p[N>>3];W=+p[H>>3];p[P>>3]=((+p[I>>3]>=0.0?j:-j)+(+p[J>>3]>=0.0?i:-i))*(+p[F>>3]>=0.0?h:-h)+((+p[K>>3]>=0.0?g:-g)+(+p[L>>3]>=0.0?S:-S))*(+p[G>>3]>=0.0?T:-T)+((+p[M>>3]>=0.0?U:-U)+(+p[N>>3]>=0.0?V:-V))*(+p[H>>3]>=0.0?W:-W);p[Q>>3]=+p[14]*+p[P>>3];if(!(+p[O>>3]>+p[Q>>3])?!(-+p[O>>3]>+p[Q>>3]):0){W=+Le(k[q>>2]|0,k[s>>2]|0,k[t>>2]|0,k[u>>2]|0,+p[v>>3],+p[w>>3],+p[x>>3],+p[y>>3],+p[P>>3]);p[m>>3]=W;R=+p[m>>3];r=l;return +R}p[m>>3]=+p[O>>3];R=+p[m>>3];r=l;return +R}function Ne(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0.0,s=0.0;g=r;r=r+32|0;h=g;i=g+28|0;j=g+24|0;l=g+20|0;m=g+16|0;n=g+12|0;o=g+8|0;k[i>>2]=a;k[j>>2]=b;k[l>>2]=c;k[m>>2]=d;k[n>>2]=e;k[o>>2]=f;if(!(k[(k[j>>2]|0)+32>>2]|0)){q=+Ke(k[i>>2]|0,k[j>>2]|0,k[l>>2]|0,k[m>>2]|0,k[n>>2]|0,k[o>>2]|0);p[h>>3]=q;s=+p[h>>3];r=g;return +s}f=k[i>>2]|0;i=k[j>>2]|0;e=k[l>>2]|0;d=k[m>>2]|0;c=k[n>>2]|0;b=k[o>>2]|0;a=k[l>>2]|0;if((k[(k[j>>2]|0)+32>>2]|0)==1){q=+Me(f,i,e,d,c,b,+p[a>>3]*+p[k[l>>2]>>3]+ +p[(k[l>>2]|0)+8>>3]*+p[(k[l>>2]|0)+8>>3]-+p[(k[l>>2]|0)+16>>3],+p[k[m>>2]>>3]*+p[k[m>>2]>>3]+ +p[(k[m>>2]|0)+8>>3]*+p[(k[m>>2]|0)+8>>3]-+p[(k[m>>2]|0)+16>>3],+p[k[n>>2]>>3]*+p[k[n>>2]>>3]+ +p[(k[n>>2]|0)+8>>3]*+p[(k[n>>2]|0)+8>>3]-+p[(k[n>>2]|0)+16>>3],+p[k[o>>2]>>3]*+p[k[o>>2]>>3]+ +p[(k[o>>2]|0)+8>>3]*+p[(k[o>>2]|0)+8>>3]-+p[(k[o>>2]|0)+16>>3]);p[h>>3]=q;s=+p[h>>3];r=g;return +s}else{q=+Me(f,i,e,d,c,b,+p[a+16>>3],+p[(k[m>>2]|0)+16>>3],+p[(k[n>>2]|0)+16>>3],+p[(k[o>>2]|0)+16>>3]);p[h>>3]=q;s=+p[h>>3];r=g;return +s}return +(0.0)}function Oe(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0;j=r;r=r+144|0;l=j+128|0;m=j+124|0;n=j+120|0;o=j+116|0;q=j+112|0;s=j+108|0;t=j+104|0;u=j+100|0;v=j+96|0;w=j+88|0;x=j+80|0;y=j+72|0;z=j+64|0;A=j+56|0;B=j+48|0;C=j+40|0;D=j+32|0;E=j+24|0;F=j+16|0;G=j+8|0;H=j;k[l>>2]=a;k[m>>2]=b;k[n>>2]=c;k[o>>2]=d;k[q>>2]=e;k[s>>2]=f;k[t>>2]=g;k[u>>2]=h;k[v>>2]=i;i=(k[l>>2]|0)+49748|0;k[i>>2]=(k[i>>2]|0)+1;p[w>>3]=+p[k[o>>2]>>3]-+p[k[n>>2]>>3];p[x>>3]=+p[(k[o>>2]|0)+8>>3]-+p[(k[n>>2]|0)+8>>3];p[y>>3]=+p[k[q>>2]>>3]-+p[k[n>>2]>>3];p[z>>3]=+p[(k[q>>2]|0)+8>>3]-+p[(k[n>>2]|0)+8>>3];p[A>>3]=+p[w>>3]*+p[w>>3]+ +p[x>>3]*+p[x>>3];p[B>>3]=+p[y>>3]*+p[y>>3]+ +p[z>>3]*+p[z>>3];p[C>>3]=(+p[k[o>>2]>>3]-+p[k[q>>2]>>3])*(+p[k[o>>2]>>3]-+p[k[q>>2]>>3])+(+p[(k[o>>2]|0)+8>>3]-+p[(k[q>>2]|0)+8>>3])*(+p[(k[o>>2]|0)+8>>3]-+p[(k[q>>2]|0)+8>>3]);if(k[(k[m>>2]|0)+84>>2]|0)p[D>>3]=.5/(+p[w>>3]*+p[z>>3]-+p[y>>3]*+p[x>>3]);else{I=.5/+Ie(k[l>>2]|0,k[m>>2]|0,k[o>>2]|0,k[q>>2]|0,k[n>>2]|0);p[D>>3]=I;i=(k[l>>2]|0)+49736|0;k[i>>2]=(k[i>>2]|0)+-1}p[E>>3]=(+p[z>>3]*+p[A>>3]-+p[x>>3]*+p[B>>3])*+p[D>>3];p[F>>3]=(+p[w>>3]*+p[B>>3]-+p[y>>3]*+p[A>>3])*+p[D>>3];if(+p[A>>3]<+p[B>>3]?+p[A>>3]<+p[C>>3]:0){if(((k[v>>2]|0)!=0?+p[(k[m>>2]|0)+152>>3]>0.0:0)?(p[G>>3]=+p[w>>3]*.5-+p[(k[m>>2]|0)+152>>3]*+p[x>>3],p[H>>3]=+p[x>>3]*.5+ +p[(k[m>>2]|0)+152>>3]*+p[w>>3],+p[G>>3]*+p[G>>3]+ +p[H>>3]*+p[H>>3]<+p[E>>3]*+p[E>>3]+ +p[F>>3]*+p[F>>3]):0){p[E>>3]=+p[G>>3];p[F>>3]=+p[H>>3]}}else J=10;do if((J|0)==10){A=(k[v>>2]|0)!=0;if(+p[B>>3]<+p[C>>3]){if(!A)break;if(!(+p[(k[m>>2]|0)+152>>3]>0.0))break;p[G>>3]=+p[y>>3]*.5+ +p[(k[m>>2]|0)+152>>3]*+p[z>>3];p[H>>3]=+p[z>>3]*.5-+p[(k[m>>2]|0)+152>>3]*+p[y>>3];if(!(+p[G>>3]*+p[G>>3]+ +p[H>>3]*+p[H>>3]<+p[E>>3]*+p[E>>3]+ +p[F>>3]*+p[F>>3]))break;p[E>>3]=+p[G>>3];p[F>>3]=+p[H>>3];break}else{if(!A)break;if(!(+p[(k[m>>2]|0)+152>>3]>0.0))break;p[G>>3]=(+p[k[q>>2]>>3]-+p[k[o>>2]>>3])*.5-+p[(k[m>>2]|0)+152>>3]*(+p[(k[q>>2]|0)+8>>3]-+p[(k[o>>2]|0)+8>>3]);p[H>>3]=(+p[(k[q>>2]|0)+8>>3]-+p[(k[o>>2]|0)+8>>3])*.5+ +p[(k[m>>2]|0)+152>>3]*(+p[k[q>>2]>>3]-+p[k[o>>2]>>3]);if(!(+p[G>>3]*+p[G>>3]+ +p[H>>3]*+p[H>>3]<(+p[E>>3]-+p[w>>3])*(+p[E>>3]-+p[w>>3])+(+p[F>>3]-+p[x>>3])*(+p[F>>3]-+p[x>>3])))break;p[E>>3]=+p[w>>3]+ +p[G>>3];p[F>>3]=+p[x>>3]+ +p[H>>3];break}}while(0);p[k[s>>2]>>3]=+p[k[n>>2]>>3]+ +p[E>>3];p[(k[s>>2]|0)+8>>3]=+p[(k[n>>2]|0)+8>>3]+ +p[F>>3];p[k[t>>2]>>3]=(+p[z>>3]*+p[E>>3]-+p[y>>3]*+p[F>>3])*(+p[D>>3]*2.0);p[k[u>>2]>>3]=(+p[w>>3]*+p[F>>3]-+p[x>>3]*+p[E>>3])*(+p[D>>3]*2.0);r=j;return}function Pe(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;k[c>>2]=a;ge((k[c>>2]|0)+112|0);ge(k[c>>2]|0);ge((k[c>>2]|0)+56|0);ge((k[c>>2]|0)+168|0);ge((k[c>>2]|0)+224|0);ge((k[c>>2]|0)+280|0);ge((k[c>>2]|0)+336|0);ge((k[c>>2]|0)+392|0);k[(k[c>>2]|0)+49784>>2]=0;k[(k[c>>2]|0)+49668>>2]=0;k[(k[c>>2]|0)+49728>>2]=1;k[(k[c>>2]|0)+49716>>2]=0;k[(k[c>>2]|0)+49720>>2]=0;k[(k[c>>2]|0)+49740>>2]=0;k[(k[c>>2]|0)+49736>>2]=0;k[(k[c>>2]|0)+49732>>2]=0;k[(k[c>>2]|0)+49748>>2]=0;k[(k[c>>2]|0)+49752>>2]=0;k[(k[c>>2]|0)+49744>>2]=0;k[6904]=1;De();r=b;return}function Qe(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;k[c>>2]=a;k[6904]=((((k[6904]|0)*1366|0)+150889|0)>>>0)%714025|0;r=b;return ((k[6904]|0)>>>0)/(((714025/((k[c>>2]|0)>>>0)|0)+1|0)>>>0)|0|0}function Re(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;c=r;r=r+160|0;d=c+88|0;e=c+80|0;f=c+72|0;g=c+64|0;h=c+56|0;i=c+48|0;j=c+40|0;l=c+32|0;m=c+24|0;n=c+16|0;o=c+8|0;p=c+156|0;q=c+152|0;s=c+144|0;t=c+136|0;u=c+128|0;v=c+120|0;w=c+116|0;x=c+112|0;y=c+108|0;z=c+104|0;A=c+100|0;B=c+96|0;C=c+92|0;k[p>>2]=a;k[q>>2]=b;k[B>>2]=k[(k[q>>2]|0)+84>>2];k[(k[q>>2]|0)+84>>2]=0;if(!(k[(k[q>>2]|0)+112>>2]|0))mta(56415,c)|0;k[A>>2]=0;me(k[p>>2]|0);b=se(k[p>>2]|0)|0;k[s>>2]=b;while(1){if(!(k[s>>2]|0))break;k[s+4>>2]=0;while(1){if((k[s+4>>2]|0)>=3)break;k[v>>2]=k[(k[s>>2]|0)+((k[27620+(k[s+4>>2]<<2)>>2]|0)+3<<2)>>2];k[w>>2]=k[(k[s>>2]|0)+((k[27632+(k[s+4>>2]<<2)>>2]|0)+3<<2)>>2];if((k[s+4>>2]|0)==0?(k[x>>2]=k[(k[s>>2]|0)+((k[s+4>>2]|0)+3<<2)>>2],+Ie(k[p>>2]|0,k[q>>2]|0,k[v>>2]|0,k[w>>2]|0,k[x>>2]|0)<=0.0):0){mta(56450,o)|0;ee(k[p>>2]|0,k[q>>2]|0,s);k[A>>2]=(k[A>>2]|0)+1}k[C>>2]=k[(k[s>>2]|0)+(k[s+4>>2]<<2)>>2];k[t+4>>2]=k[C>>2]&3;k[t>>2]=k[C>>2]^k[t+4>>2];do if((k[t>>2]|0)!=(k[(k[p>>2]|0)+49768>>2]|0)){k[C>>2]=k[(k[t>>2]|0)+(k[t+4>>2]<<2)>>2];k[u+4>>2]=k[C>>2]&3;k[u>>2]=k[C>>2]^k[u+4>>2];if(!((k[s>>2]|0)==(k[u>>2]|0)?(k[s+4>>2]|0)==(k[u+4>>2]|0):0)){mta(56468,n)|0;if((k[s>>2]|0)==(k[u>>2]|0))mta(56512,m)|0;mta(56552,l)|0;ee(k[p>>2]|0,k[q>>2]|0,s);mta(56563,j)|0;ee(k[p>>2]|0,k[q>>2]|0,t);k[A>>2]=(k[A>>2]|0)+1}k[y>>2]=k[(k[t>>2]|0)+((k[27620+(k[t+4>>2]<<2)>>2]|0)+3<<2)>>2];k[z>>2]=k[(k[t>>2]|0)+((k[27632+(k[t+4>>2]<<2)>>2]|0)+3<<2)>>2];if((k[v>>2]|0)==(k[z>>2]|0)?(k[w>>2]|0)==(k[y>>2]|0):0)break;mta(56594,i)|0;mta(56654,h)|0;ee(k[p>>2]|0,k[q>>2]|0,s);mta(56676,g)|0;ee(k[p>>2]|0,k[q>>2]|0,t);k[A>>2]=(k[A>>2]|0)+1}while(0);b=s+4|0;k[b>>2]=(k[b>>2]|0)+1}b=se(k[p>>2]|0)|0;k[s>>2]=b}if(!(k[A>>2]|0)){if(k[(k[q>>2]|0)+112>>2]|0){D=k[B>>2]|0;E=k[q>>2]|0;F=E+84|0;k[F>>2]=D;r=c;return}mta(56699,f)|0;D=k[B>>2]|0;E=k[q>>2]|0;F=E+84|0;k[F>>2]=D;r=c;return}if((k[A>>2]|0)==1){mta(56760,e)|0;D=k[B>>2]|0;E=k[q>>2]|0;F=E+84|0;k[F>>2]=D;r=c;return}else{k[d>>2]=k[A>>2];mta(56817,d)|0;D=k[B>>2]|0;E=k[q>>2]|0;F=E+84|0;k[F>>2]=D;r=c;return}}function Se(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;c=r;r=r+144|0;d=c+72|0;e=c+64|0;f=c+56|0;g=c+48|0;h=c+40|0;i=c+32|0;j=c+24|0;l=c+16|0;m=c+8|0;n=c+140|0;o=c+136|0;p=c+128|0;q=c+120|0;s=c+112|0;t=c+108|0;u=c+104|0;v=c+100|0;w=c+96|0;x=c+92|0;y=c+88|0;z=c+84|0;A=c+80|0;B=c+76|0;k[n>>2]=a;k[o>>2]=b;k[z>>2]=k[(k[o>>2]|0)+84>>2];k[(k[o>>2]|0)+84>>2]=0;if(!(k[(k[o>>2]|0)+112>>2]|0))mta(56859,c)|0;k[y>>2]=0;me(k[n>>2]|0);b=se(k[n>>2]|0)|0;k[p>>2]=b;while(1){if(!(k[p>>2]|0))break;k[p+4>>2]=0;while(1){if((k[p+4>>2]|0)>=3)break;k[t>>2]=k[(k[p>>2]|0)+((k[27620+(k[p+4>>2]<<2)>>2]|0)+3<<2)>>2];k[u>>2]=k[(k[p>>2]|0)+((k[27632+(k[p+4>>2]<<2)>>2]|0)+3<<2)>>2];k[v>>2]=k[(k[p>>2]|0)+((k[p+4>>2]|0)+3<<2)>>2];k[A>>2]=k[(k[p>>2]|0)+(k[p+4>>2]<<2)>>2];k[q+4>>2]=k[A>>2]&3;k[q>>2]=k[A>>2]^k[q+4>>2];k[w>>2]=k[(k[q>>2]|0)+((k[q+4>>2]|0)+3<<2)>>2];if((((((((((((((k[q>>2]|0)!=(k[(k[n>>2]|0)+49768>>2]|0)?(k[(k[q>>2]|0)+4>>2]|0)!=0:0)?(k[p>>2]|0)>>>0<(k[q>>2]|0)>>>0:0)?(k[t>>2]|0)!=(k[(k[n>>2]|0)+49756>>2]|0):0)?(k[t>>2]|0)!=(k[(k[n>>2]|0)+49760>>2]|0):0)?(k[t>>2]|0)!=(k[(k[n>>2]|0)+49764>>2]|0):0)?(k[u>>2]|0)!=(k[(k[n>>2]|0)+49756>>2]|0):0)?(k[u>>2]|0)!=(k[(k[n>>2]|0)+49760>>2]|0):0)?(k[u>>2]|0)!=(k[(k[n>>2]|0)+49764>>2]|0):0)?(k[v>>2]|0)!=(k[(k[n>>2]|0)+49756>>2]|0):0)?(k[v>>2]|0)!=(k[(k[n>>2]|0)+49760>>2]|0):0)?(k[v>>2]|0)!=(k[(k[n>>2]|0)+49764>>2]|0):0)?(k[w>>2]|0)!=(k[(k[n>>2]|0)+49756>>2]|0):0)?(k[w>>2]|0)!=(k[(k[n>>2]|0)+49760>>2]|0):0)C=(k[w>>2]|0)!=(k[(k[n>>2]|0)+49764>>2]|0);else C=0;k[x>>2]=C&1;if(((k[x>>2]|0)!=0?(k[(k[n>>2]|0)+49716>>2]|0)!=0:0)?(k[B>>2]=k[(k[p>>2]|0)+(6+(k[p+4>>2]|0)<<2)>>2],k[s+4>>2]=k[B>>2]&1,k[s>>2]=k[B>>2]&-4,(k[s>>2]|0)!=(k[(k[n>>2]|0)+49776>>2]|0)):0)k[x>>2]=0;if((k[x>>2]|0)!=0?+Ne(k[n>>2]|0,k[o>>2]|0,k[t>>2]|0,k[u>>2]|0,k[v>>2]|0,k[w>>2]|0)>0.0:0){if(k[(k[o>>2]|0)+32>>2]|0){mta(56990,i)|0;mta(57030,h)|0;ee(k[n>>2]|0,k[o>>2]|0,p);mta(57053,g)|0}else{mta(56900,m)|0;mta(56941,l)|0;ee(k[n>>2]|0,k[o>>2]|0,p);mta(56965,j)|0}ee(k[n>>2]|0,k[o>>2]|0,q);k[y>>2]=(k[y>>2]|0)+1}b=p+4|0;k[b>>2]=(k[b>>2]|0)+1}b=se(k[n>>2]|0)|0;k[p>>2]=b}if(!(k[y>>2]|0)){if(k[(k[o>>2]|0)+112>>2]|0){D=k[z>>2]|0;E=k[o>>2]|0;F=E+84|0;k[F>>2]=D;r=c;return}mta(57077,f)|0;D=k[z>>2]|0;E=k[o>>2]|0;F=E+84|0;k[F>>2]=D;r=c;return}if((k[y>>2]|0)==1){mta(57150,e)|0;D=k[z>>2]|0;E=k[o>>2]|0;F=E+84|0;k[F>>2]=D;r=c;return}else{k[d>>2]=k[y>>2];mta(57216,d)|0;D=k[z>>2]|0;E=k[o>>2]|0;F=E+84|0;k[F>>2]=D;r=c;return}}function Te(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;d=r;r=r+112|0;e=d+24|0;f=d+100|0;g=d+96|0;h=d+92|0;i=d+8|0;j=d;l=d+88|0;m=d+84|0;n=d+80|0;o=d+76|0;q=d+72|0;k[f>>2]=a;k[g>>2]=b;k[h>>2]=c;if((k[(k[g>>2]|0)+116>>2]|0)>2){mta(57266,d+16|0)|0;s=+p[(k[(k[h>>2]|0)+16>>2]|0)+8>>3];t=+p[k[(k[h>>2]|0)+20>>2]>>3];u=+p[(k[(k[h>>2]|0)+20>>2]|0)+8>>3];v=+p[k[(k[h>>2]|0)+24>>2]>>3];w=+p[(k[(k[h>>2]|0)+24>>2]|0)+8>>3];p[e>>3]=+p[k[(k[h>>2]|0)+16>>2]>>3];p[e+8>>3]=s;p[e+16>>3]=t;p[e+24>>3]=u;p[e+32>>3]=v;p[e+40>>3]=w;mta(57292,e)|0}w=+p[(k[h>>2]|0)+8>>3];if(+p[(k[h>>2]|0)+8>>3]>=1.0){p[i>>3]=w;k[o>>2]=1}else{p[i>>3]=1.0/w;k[o>>2]=0}k[l>>2]=0;while(1){if(!(+p[i>>3]>2.0))break;k[m>>2]=1;p[j>>3]=.5;while(1){x=k[m>>2]|0;if(!(+p[i>>3]*+p[j>>3]*+p[j>>3]>1.0))break;k[m>>2]=x<<1;p[j>>3]=+p[j>>3]*+p[j>>3]}k[l>>2]=(k[l>>2]|0)+x;p[i>>3]=+p[i>>3]*+p[j>>3]}k[l>>2]=~~(+(k[l>>2]|0)*2.0+ +(+p[i>>3]>1.4142135623730951|0));i=k[l>>2]|0;if(k[o>>2]|0)k[n>>2]=2047-i;else k[n>>2]=2048+i;if(k[(k[f>>2]|0)+448+(k[n>>2]<<2)>>2]|0){k[(k[(k[f>>2]|0)+16832+(k[n>>2]<<2)>>2]|0)+28>>2]=k[h>>2];y=k[h>>2]|0;z=k[n>>2]|0;A=k[f>>2]|0;B=A+16832|0;C=B+(z<<2)|0;k[C>>2]=y;D=k[h>>2]|0;E=D+28|0;k[E>>2]=0;r=d;return}if((k[n>>2]|0)>(k[(k[f>>2]|0)+49600>>2]|0)){k[(k[f>>2]|0)+33216+(k[n>>2]<<2)>>2]=k[(k[f>>2]|0)+49600>>2];k[(k[f>>2]|0)+49600>>2]=k[n>>2]}else{k[q>>2]=(k[n>>2]|0)+1;while(1){F=k[q>>2]|0;if(k[(k[f>>2]|0)+448+(k[q>>2]<<2)>>2]|0)break;k[q>>2]=F+1}k[(k[f>>2]|0)+33216+(k[n>>2]<<2)>>2]=k[(k[f>>2]|0)+33216+(F<<2)>>2];k[(k[f>>2]|0)+33216+(k[q>>2]<<2)>>2]=k[n>>2]}k[(k[f>>2]|0)+448+(k[n>>2]<<2)>>2]=k[h>>2];y=k[h>>2]|0;z=k[n>>2]|0;A=k[f>>2]|0;B=A+16832|0;C=B+(z<<2)|0;k[C>>2]=y;D=k[h>>2]|0;E=D+28|0;k[E>>2]=0;r=d;return}function Ue(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0;h=r;r=r+48|0;i=h+32|0;j=h+28|0;l=h+24|0;m=h;n=h+20|0;o=h+16|0;q=h+12|0;s=h+8|0;k[i>>2]=a;k[j>>2]=b;k[l>>2]=c;p[m>>3]=d;k[n>>2]=e;k[o>>2]=f;k[q>>2]=g;g=ke((k[i>>2]|0)+280|0)|0;k[s>>2]=g;k[k[s>>2]>>2]=k[k[l>>2]>>2]|k[(k[l>>2]|0)+4>>2];p[(k[s>>2]|0)+8>>3]=+p[m>>3];k[(k[s>>2]|0)+24>>2]=k[n>>2];k[(k[s>>2]|0)+16>>2]=k[o>>2];k[(k[s>>2]|0)+20>>2]=k[q>>2];Te(k[i>>2]|0,k[j>>2]|0,k[s>>2]|0);r=h;return}function Ve(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=r;r=r+16|0;c=b+8|0;d=b+4|0;e=b;k[d>>2]=a;if((k[(k[d>>2]|0)+49600>>2]|0)<0){k[c>>2]=0;f=k[c>>2]|0;r=b;return f|0}k[e>>2]=k[(k[d>>2]|0)+448+(k[(k[d>>2]|0)+49600>>2]<<2)>>2];k[(k[d>>2]|0)+448+(k[(k[d>>2]|0)+49600>>2]<<2)>>2]=k[(k[e>>2]|0)+28>>2];if((k[e>>2]|0)==(k[(k[d>>2]|0)+16832+(k[(k[d>>2]|0)+49600>>2]<<2)>>2]|0))k[(k[d>>2]|0)+49600>>2]=k[(k[d>>2]|0)+33216+(k[(k[d>>2]|0)+49600>>2]<<2)>>2];k[c>>2]=k[e>>2];f=k[c>>2]|0;r=b;return f|0}function We(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0;d=r;r=r+112|0;e=d+8|0;f=d+96|0;g=d+92|0;h=d+88|0;i=d+80|0;j=d+72|0;l=d+64|0;m=d;n=d+60|0;o=d+56|0;q=d+52|0;s=d+48|0;t=d+44|0;u=d+40|0;k[f>>2]=a;k[g>>2]=b;k[h>>2]=c;k[n>>2]=0;k[o>>2]=0;k[q>>2]=k[(k[k[h>>2]>>2]|0)+(2+(k[(k[h>>2]|0)+4>>2]|0)<<2)>>2];k[s>>2]=k[(k[k[h>>2]>>2]|0)+(3-(k[(k[h>>2]|0)+4>>2]|0)<<2)>>2];k[u>>2]=k[(k[k[h>>2]>>2]|0)+(6+(k[(k[h>>2]|0)+4>>2]|0)<<2)>>2];k[i+4>>2]=k[u>>2]&3;k[i>>2]=k[u>>2]^k[i+4>>2];do if((k[i>>2]|0)!=(k[(k[f>>2]|0)+49768>>2]|0)?(k[o>>2]=(k[o>>2]|0)+1,k[t>>2]=k[(k[i>>2]|0)+((k[i+4>>2]|0)+3<<2)>>2],p[m>>3]=(+p[k[q>>2]>>3]-+p[k[t>>2]>>3])*(+p[k[s>>2]>>3]-+p[k[t>>2]>>3])+(+p[(k[q>>2]|0)+8>>3]-+p[(k[t>>2]|0)+8>>3])*(+p[(k[s>>2]|0)+8>>3]-+p[(k[t>>2]|0)+8>>3]),+p[m>>3]<0.0):0){if((k[(k[g>>2]|0)+88>>2]|0)==0?!(+p[m>>3]*+p[m>>3]>=(+p[(k[g>>2]|0)+144>>3]*2.0-1.0)*(+p[(k[g>>2]|0)+144>>3]*2.0-1.0)*((+p[k[q>>2]>>3]-+p[k[t>>2]>>3])*(+p[k[q>>2]>>3]-+p[k[t>>2]>>3])+(+p[(k[q>>2]|0)+8>>3]-+p[(k[t>>2]|0)+8>>3])*(+p[(k[q>>2]|0)+8>>3]-+p[(k[t>>2]|0)+8>>3]))*((+p[k[s>>2]>>3]-+p[k[t>>2]>>3])*(+p[k[s>>2]>>3]-+p[k[t>>2]>>3])+(+p[(k[s>>2]|0)+8>>3]-+p[(k[t>>2]|0)+8>>3])*(+p[(k[s>>2]|0)+8>>3]-+p[(k[t>>2]|0)+8>>3]))):0)break;k[n>>2]=1}while(0);k[j>>2]=k[k[h>>2]>>2];k[j+4>>2]=1-(k[(k[h>>2]|0)+4>>2]|0);k[u>>2]=k[(k[j>>2]|0)+(6+(k[j+4>>2]|0)<<2)>>2];k[i+4>>2]=k[u>>2]&3;k[i>>2]=k[u>>2]^k[i+4>>2];do if((k[i>>2]|0)!=(k[(k[f>>2]|0)+49768>>2]|0)?(k[o>>2]=(k[o>>2]|0)+1,k[t>>2]=k[(k[i>>2]|0)+((k[i+4>>2]|0)+3<<2)>>2],p[m>>3]=(+p[k[q>>2]>>3]-+p[k[t>>2]>>3])*(+p[k[s>>2]>>3]-+p[k[t>>2]>>3])+(+p[(k[q>>2]|0)+8>>3]-+p[(k[t>>2]|0)+8>>3])*(+p[(k[s>>2]|0)+8>>3]-+p[(k[t>>2]|0)+8>>3]),+p[m>>3]<0.0):0){if((k[(k[g>>2]|0)+88>>2]|0)==0?!(+p[m>>3]*+p[m>>3]>=(+p[(k[g>>2]|0)+144>>3]*2.0-1.0)*(+p[(k[g>>2]|0)+144>>3]*2.0-1.0)*((+p[k[q>>2]>>3]-+p[k[t>>2]>>3])*(+p[k[q>>2]>>3]-+p[k[t>>2]>>3])+(+p[(k[q>>2]|0)+8>>3]-+p[(k[t>>2]|0)+8>>3])*(+p[(k[q>>2]|0)+8>>3]-+p[(k[t>>2]|0)+8>>3]))*((+p[k[s>>2]>>3]-+p[k[t>>2]>>3])*(+p[k[s>>2]>>3]-+p[k[t>>2]>>3])+(+p[(k[s>>2]|0)+8>>3]-+p[(k[t>>2]|0)+8>>3])*(+p[(k[s>>2]|0)+8>>3]-+p[(k[t>>2]|0)+8>>3]))):0)break;k[n>>2]=(k[n>>2]|0)+2}while(0);if(!(k[n>>2]|0)){v=k[n>>2]|0;r=d;return v|0}if((k[(k[g>>2]|0)+128>>2]|0)!=0?!((k[o>>2]|0)==2?(k[(k[g>>2]|0)+128>>2]|0)==1:0):0){v=k[n>>2]|0;r=d;return v|0}if((k[(k[g>>2]|0)+116>>2]|0)>2){w=+p[(k[q>>2]|0)+8>>3];x=+p[k[s>>2]>>3];y=+p[(k[s>>2]|0)+8>>3];p[e>>3]=+p[k[q>>2]>>3];p[e+8>>3]=w;p[e+16>>3]=x;p[e+24>>3]=y;mta(57342,e)|0}e=ke((k[f>>2]|0)+224|0)|0;k[l>>2]=e;if((k[n>>2]|0)==1){k[k[l>>2]>>2]=k[k[h>>2]>>2]|k[(k[h>>2]|0)+4>>2];k[(k[l>>2]|0)+4>>2]=k[q>>2];k[(k[l>>2]|0)+8>>2]=k[s>>2];v=k[n>>2]|0;r=d;return v|0}else{k[k[l>>2]>>2]=k[j>>2]|k[j+4>>2];k[(k[l>>2]|0)+4>>2]=k[s>>2];k[(k[l>>2]|0)+8>>2]=k[q>>2];v=k[n>>2]|0;r=d;return v|0}return 0}function Xe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;d=r;r=r+256|0;e=d+240|0;f=d+236|0;g=d+232|0;h=d+224|0;i=d+216|0;j=d+208|0;l=d+204|0;m=d+200|0;n=d+196|0;o=d+192|0;q=d+188|0;s=d+184|0;t=d+180|0;u=d+176|0;v=d+172|0;w=d+168|0;x=d+152|0;y=d+144|0;z=d+136|0;A=d+128|0;B=d+120|0;C=d+112|0;D=d+104|0;E=d+96|0;F=d+88|0;G=d+80|0;H=d+72|0;I=d+64|0;J=d+56|0;K=d+48|0;L=d+40|0;M=d+32|0;N=d+24|0;O=d+16|0;P=d+8|0;Q=d;R=d+164|0;S=d+160|0;k[e>>2]=a;k[f>>2]=b;k[g>>2]=c;k[l>>2]=k[(k[k[g>>2]>>2]|0)+((k[27620+(k[(k[g>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[m>>2]=k[(k[k[g>>2]>>2]|0)+((k[27632+(k[(k[g>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[n>>2]=k[(k[k[g>>2]>>2]|0)+((k[(k[g>>2]|0)+4>>2]|0)+3<<2)>>2];p[x>>3]=+p[k[l>>2]>>3]-+p[k[m>>2]>>3];p[y>>3]=+p[(k[l>>2]|0)+8>>3]-+p[(k[m>>2]|0)+8>>3];p[z>>3]=+p[k[m>>2]>>3]-+p[k[n>>2]>>3];p[A>>3]=+p[(k[m>>2]|0)+8>>3]-+p[(k[n>>2]|0)+8>>3];p[B>>3]=+p[k[n>>2]>>3]-+p[k[l>>2]>>3];p[C>>3]=+p[(k[n>>2]|0)+8>>3]-+p[(k[l>>2]|0)+8>>3];p[D>>3]=+p[x>>3]*+p[x>>3];p[E>>3]=+p[y>>3]*+p[y>>3];p[F>>3]=+p[z>>3]*+p[z>>3];p[G>>3]=+p[A>>3]*+p[A>>3];p[H>>3]=+p[B>>3]*+p[B>>3];p[I>>3]=+p[C>>3]*+p[C>>3];p[J>>3]=+p[D>>3]+ +p[E>>3];p[K>>3]=+p[F>>3]+ +p[G>>3];p[L>>3]=+p[H>>3]+ +p[I>>3];if(+p[J>>3]<+p[K>>3]?+p[J>>3]<+p[L>>3]:0){p[M>>3]=+p[J>>3];p[N>>3]=+p[z>>3]*+p[B>>3]+ +p[A>>3]*+p[C>>3];p[N>>3]=+p[N>>3]*+p[N>>3]/(+p[K>>3]*+p[L>>3]);k[o>>2]=k[l>>2];k[q>>2]=k[m>>2];k[h>>2]=k[k[g>>2]>>2];k[h+4>>2]=k[(k[g>>2]|0)+4>>2]}else T=4;do if((T|0)==4)if(+p[K>>3]<+p[L>>3]){p[M>>3]=+p[K>>3];p[N>>3]=+p[x>>3]*+p[B>>3]+ +p[y>>3]*+p[C>>3];p[N>>3]=+p[N>>3]*+p[N>>3]/(+p[J>>3]*+p[L>>3]);k[o>>2]=k[m>>2];k[q>>2]=k[n>>2];k[h>>2]=k[k[g>>2]>>2];k[h+4>>2]=k[27620+(k[(k[g>>2]|0)+4>>2]<<2)>>2];break}else{p[M>>3]=+p[L>>3];p[N>>3]=+p[x>>3]*+p[z>>3]+ +p[y>>3]*+p[A>>3];p[N>>3]=+p[N>>3]*+p[N>>3]/(+p[J>>3]*+p[K>>3]);k[o>>2]=k[n>>2];k[q>>2]=k[l>>2];k[h>>2]=k[k[g>>2]>>2];k[h+4>>2]=k[27632+(k[(k[g>>2]|0)+4>>2]<<2)>>2];break}while(0);if(!(((k[(k[f>>2]|0)+12>>2]|0)==0?(k[(k[f>>2]|0)+16>>2]|0)==0:0)?(k[(k[f>>2]|0)+20>>2]|0)==0:0)){p[O>>3]=(+p[x>>3]*+p[A>>3]-+p[y>>3]*+p[z>>3])*.5;if((k[(k[f>>2]|0)+16>>2]|0)!=0?+p[O>>3]>+p[(k[f>>2]|0)+160>>3]:0){Ue(k[e>>2]|0,k[f>>2]|0,k[g>>2]|0,+p[M>>3],k[n>>2]|0,k[l>>2]|0,k[m>>2]|0);r=d;return}if(((k[(k[f>>2]|0)+12>>2]|0)!=0?+p[O>>3]>+p[(k[k[g>>2]>>2]|0)+(k[(k[e>>2]|0)+49712>>2]<<3)>>3]:0)?+p[(k[k[g>>2]>>2]|0)+(k[(k[e>>2]|0)+49712>>2]<<3)>>3]>0.0:0){Ue(k[e>>2]|0,k[f>>2]|0,k[g>>2]|0,+p[M>>3],k[n>>2]|0,k[l>>2]|0,k[m>>2]|0);r=d;return}if((k[(k[f>>2]|0)+20>>2]|0)!=0?(_d(k[l>>2]|0,k[m>>2]|0,k[n>>2]|0,+p[O>>3])|0)!=0:0){Ue(k[e>>2]|0,k[f>>2]|0,k[g>>2]|0,+p[M>>3],k[n>>2]|0,k[l>>2]|0,k[m>>2]|0);r=d;return}}if(!(+p[N>>3]>+p[(k[f>>2]|0)+144>>3])){r=d;return}if(((k[(k[o>>2]|0)+((k[(k[e>>2]|0)+49696>>2]|0)+1<<2)>>2]|0)==1?(k[(k[q>>2]|0)+((k[(k[e>>2]|0)+49696>>2]|0)+1<<2)>>2]|0)==1:0)?(k[R>>2]=k[(k[h>>2]|0)+(6+(k[h+4>>2]|0)<<2)>>2],k[j+4>>2]=k[R>>2]&1,k[j>>2]=k[R>>2]&-4,(k[j>>2]|0)==(k[(k[e>>2]|0)+49776>>2]|0)):0){k[i>>2]=k[h>>2];k[i+4>>2]=k[h+4>>2];do{k[S>>2]=k[(k[h>>2]|0)+(k[h+4>>2]<<2)>>2];k[h+4>>2]=k[S>>2]&3;k[h>>2]=k[S>>2]^k[h+4>>2];k[h+4>>2]=k[27620+(k[h+4>>2]<<2)>>2];k[R>>2]=k[(k[h>>2]|0)+(6+(k[h+4>>2]|0)<<2)>>2];k[j+4>>2]=k[R>>2]&1;k[j>>2]=k[R>>2]&-4}while((k[j>>2]|0)==(k[(k[e>>2]|0)+49776>>2]|0));k[s>>2]=k[(k[j>>2]|0)+(4+(k[j+4>>2]|0)<<2)>>2];k[t>>2]=k[(k[j>>2]|0)+(5-(k[j+4>>2]|0)<<2)>>2];do{k[S>>2]=k[(k[i>>2]|0)+(k[i+4>>2]<<2)>>2];k[i+4>>2]=k[S>>2]&3;k[i>>2]=k[S>>2]^k[i+4>>2];k[i+4>>2]=k[27632+(k[i+4>>2]<<2)>>2];k[R>>2]=k[(k[i>>2]|0)+(6+(k[i+4>>2]|0)<<2)>>2];k[j+4>>2]=k[R>>2]&1;k[j>>2]=k[R>>2]&-4}while((k[j>>2]|0)==(k[(k[e>>2]|0)+49776>>2]|0));k[u>>2]=k[(k[j>>2]|0)+(4+(k[j+4>>2]|0)<<2)>>2];k[v>>2]=k[(k[j>>2]|0)+(5-(k[j+4>>2]|0)<<2)>>2];k[w>>2]=0;if(+p[k[t>>2]>>3]==+p[k[u>>2]>>3]?+p[(k[t>>2]|0)+8>>3]==+p[(k[u>>2]|0)+8>>3]:0)k[w>>2]=k[t>>2];else T=31;if(((T|0)==31?+p[k[s>>2]>>3]==+p[k[v>>2]>>3]:0)?+p[(k[s>>2]|0)+8>>3]==+p[(k[v>>2]|0)+8>>3]:0)k[w>>2]=k[s>>2];if(((k[w>>2]|0)!=0?(p[P>>3]=(+p[k[o>>2]>>3]-+p[k[w>>2]>>3])*(+p[k[o>>2]>>3]-+p[k[w>>2]>>3])+(+p[(k[o>>2]|0)+8>>3]-+p[(k[w>>2]|0)+8>>3])*(+p[(k[o>>2]|0)+8>>3]-+p[(k[w>>2]|0)+8>>3]),p[Q>>3]=(+p[k[q>>2]>>3]-+p[k[w>>2]>>3])*(+p[k[q>>2]>>3]-+p[k[w>>2]>>3])+(+p[(k[q>>2]|0)+8>>3]-+p[(k[w>>2]|0)+8>>3])*(+p[(k[q>>2]|0)+8>>3]-+p[(k[w>>2]|0)+8>>3]),+p[P>>3]<+p[Q>>3]*1.001):0)?+p[P>>3]>+p[Q>>3]*.999:0){r=d;return}}Ue(k[e>>2]|0,k[f>>2]|0,k[g>>2]|0,+p[M>>3],k[n>>2]|0,k[l>>2]|0,k[m>>2]|0);r=d;return}function Ye(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=r;r=r+32|0;d=c+20|0;e=c+16|0;f=c+8|0;g=c+4|0;k[d>>2]=a;k[e>>2]=b;if(k[(k[e>>2]|0)+116>>2]|0)mta(57407,c)|0;me(k[d>>2]|0);e=se(k[d>>2]|0)|0;k[f>>2]=e;while(1){if(!(k[f>>2]|0))break;k[f+4>>2]=0;while(1){if((k[f+4>>2]|0)>=3)break;k[g>>2]=k[(k[f>>2]|0)+((k[27620+(k[f+4>>2]<<2)>>2]|0)+3<<2)>>2];k[(k[g>>2]|0)+(k[(k[d>>2]|0)+49700>>2]<<2)>>2]=k[f>>2]|k[f+4>>2];e=f+4|0;k[e>>2]=(k[e>>2]|0)+1}e=se(k[d>>2]|0)|0;k[f>>2]=e}r=c;return}function Ze(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0,H=0;f=r;r=r+144|0;g=f+32|0;h=f+16|0;i=f+140|0;j=f+136|0;l=f+132|0;m=f+128|0;n=f+124|0;o=f+120|0;q=f+112|0;s=f+104|0;t=f+100|0;u=f+96|0;v=f+92|0;w=f+8|0;x=f;y=f+88|0;z=f+84|0;A=f+80|0;k[j>>2]=a;k[l>>2]=b;k[m>>2]=c;k[n>>2]=d;k[o>>2]=e;if((k[(k[l>>2]|0)+116>>2]|0)>2){B=+p[(k[m>>2]|0)+8>>3];p[h>>3]=+p[k[m>>2]>>3];p[h+8>>3]=B;mta(57461,h)|0}k[t>>2]=k[(k[k[n>>2]>>2]|0)+((k[27620+(k[(k[n>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[u>>2]=k[(k[k[n>>2]>>2]|0)+((k[27632+(k[(k[n>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[v>>2]=k[(k[k[n>>2]>>2]|0)+((k[(k[n>>2]|0)+4>>2]|0)+3<<2)>>2];a:while(1){if((k[(k[l>>2]|0)+116>>2]|0)>2){B=+p[(k[t>>2]|0)+8>>3];C=+p[k[u>>2]>>3];D=+p[(k[u>>2]|0)+8>>3];E=+p[k[v>>2]>>3];F=+p[(k[v>>2]|0)+8>>3];p[g>>3]=+p[k[t>>2]>>3];p[g+8>>3]=B;p[g+16>>3]=C;p[g+24>>3]=D;p[g+32>>3]=E;p[g+40>>3]=F;mta(57500,g)|0}if(+p[k[v>>2]>>3]==+p[k[m>>2]>>3]?+p[(k[v>>2]|0)+8>>3]==+p[(k[m>>2]|0)+8>>3]:0){G=8;break}F=+Ie(k[j>>2]|0,k[l>>2]|0,k[t>>2]|0,k[v>>2]|0,k[m>>2]|0);p[x>>3]=F;F=+Ie(k[j>>2]|0,k[l>>2]|0,k[v>>2]|0,k[u>>2]|0,k[m>>2]|0);p[w>>3]=F;h=+p[w>>3]>0.0;do if(+p[x>>3]>0.0)if(h){k[y>>2]=(+p[k[v>>2]>>3]-+p[k[m>>2]>>3])*(+p[k[u>>2]>>3]-+p[k[t>>2]>>3])+(+p[(k[v>>2]|0)+8>>3]-+p[(k[m>>2]|0)+8>>3])*(+p[(k[u>>2]|0)+8>>3]-+p[(k[t>>2]|0)+8>>3])>0.0&1;break}else{k[y>>2]=1;break}else{if(!h){G=15;break a}k[y>>2]=0}while(0);h=(k[y>>2]|0)!=0;k[q>>2]=k[k[n>>2]>>2];e=k[(k[n>>2]|0)+4>>2]|0;if(h){k[q+4>>2]=k[27632+(e<<2)>>2];k[u>>2]=k[v>>2]}else{k[q+4>>2]=k[27620+(e<<2)>>2];k[t>>2]=k[v>>2]}k[z>>2]=k[(k[q>>2]|0)+(k[q+4>>2]<<2)>>2];k[(k[n>>2]|0)+4>>2]=k[z>>2]&3;k[k[n>>2]>>2]=k[z>>2]^k[(k[n>>2]|0)+4>>2];if(((k[o>>2]|0)!=0?(k[(k[j>>2]|0)+49716>>2]|0)!=0:0)?(k[A>>2]=k[(k[q>>2]|0)+(6+(k[q+4>>2]|0)<<2)>>2],k[s+4>>2]=k[A>>2]&1,k[s>>2]=k[A>>2]&-4,(k[s>>2]|0)!=(k[(k[j>>2]|0)+49776>>2]|0)):0){G=25;break}if((k[k[n>>2]>>2]|0)==(k[(k[j>>2]|0)+49768>>2]|0)){G=27;break}k[v>>2]=k[(k[k[n>>2]>>2]|0)+((k[(k[n>>2]|0)+4>>2]|0)+3<<2)>>2]}if((G|0)==8){k[(k[n>>2]|0)+4>>2]=k[27632+(k[(k[n>>2]|0)+4>>2]<<2)>>2];k[i>>2]=2;H=k[i>>2]|0;r=f;return H|0}else if((G|0)==15){if(+p[x>>3]==0.0){k[(k[n>>2]|0)+4>>2]=k[27632+(k[(k[n>>2]|0)+4>>2]<<2)>>2];k[i>>2]=1;H=k[i>>2]|0;r=f;return H|0}if(+p[w>>3]==0.0){k[(k[n>>2]|0)+4>>2]=k[27620+(k[(k[n>>2]|0)+4>>2]<<2)>>2];k[i>>2]=1;H=k[i>>2]|0;r=f;return H|0}else{k[i>>2]=0;H=k[i>>2]|0;r=f;return H|0}}else if((G|0)==25){k[k[n>>2]>>2]=k[q>>2];k[(k[n>>2]|0)+4>>2]=k[q+4>>2];k[i>>2]=3;H=k[i>>2]|0;r=f;return H|0}else if((G|0)==27){k[k[n>>2]>>2]=k[q>>2];k[(k[n>>2]|0)+4>>2]=k[q+4>>2];k[i>>2]=3;H=k[i>>2]|0;r=f;return H|0}return 0}function _e(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0,I=0;e=r;r=r+176|0;f=e+72|0;g=e+56|0;h=e+40|0;i=e+24|0;j=e+160|0;l=e+156|0;m=e+152|0;n=e+148|0;o=e+144|0;q=e+140|0;s=e+136|0;t=e+128|0;u=e+120|0;v=e+116|0;w=e+112|0;x=e+16|0;y=e+8|0;z=e;A=e+108|0;B=e+104|0;C=e+100|0;D=e+96|0;E=e+92|0;F=e+88|0;k[l>>2]=a;k[m>>2]=b;k[n>>2]=c;k[o>>2]=d;if((k[(k[m>>2]|0)+116>>2]|0)>2){G=+p[(k[n>>2]|0)+8>>3];p[i>>3]=+p[k[n>>2]>>3];p[i+8>>3]=G;mta(57553,i)|0}k[u>>2]=k[(k[k[o>>2]>>2]|0)+((k[27620+(k[(k[o>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];p[x>>3]=(+p[k[n>>2]>>3]-+p[k[u>>2]>>3])*(+p[k[n>>2]>>3]-+p[k[u>>2]>>3])+(+p[(k[n>>2]|0)+8>>3]-+p[(k[u>>2]|0)+8>>3])*(+p[(k[n>>2]|0)+8>>3]-+p[(k[u>>2]|0)+8>>3]);if((k[(k[m>>2]|0)+116>>2]|0)>2){G=+p[(k[u>>2]|0)+8>>3];p[h>>3]=+p[k[u>>2]>>3];p[h+8>>3]=G;mta(57616,h)|0}if((k[(k[l>>2]|0)+49784>>2]|0)!=0?(k[(k[(k[l>>2]|0)+49784>>2]|0)+4>>2]|0)!=0:0){k[u>>2]=k[(k[(k[l>>2]|0)+49784>>2]|0)+((k[27620+(k[(k[l>>2]|0)+49784+4>>2]<<2)>>2]|0)+3<<2)>>2];if(+p[k[u>>2]>>3]==+p[k[n>>2]>>3]?+p[(k[u>>2]|0)+8>>3]==+p[(k[n>>2]|0)+8>>3]:0){k[k[o>>2]>>2]=k[(k[l>>2]|0)+49784>>2];k[(k[o>>2]|0)+4>>2]=k[(k[l>>2]|0)+49784+4>>2];k[j>>2]=2;H=k[j>>2]|0;r=e;return H|0}p[y>>3]=(+p[k[n>>2]>>3]-+p[k[u>>2]>>3])*(+p[k[n>>2]>>3]-+p[k[u>>2]>>3])+(+p[(k[n>>2]|0)+8>>3]-+p[(k[u>>2]|0)+8>>3])*(+p[(k[n>>2]|0)+8>>3]-+p[(k[u>>2]|0)+8>>3]);if(+p[y>>3]<+p[x>>3]?(k[k[o>>2]>>2]=k[(k[l>>2]|0)+49784>>2],k[(k[o>>2]|0)+4>>2]=k[(k[l>>2]|0)+49784+4>>2],p[x>>3]=+p[y>>3],(k[(k[m>>2]|0)+116>>2]|0)>2):0){G=+p[(k[u>>2]|0)+8>>3];p[g>>3]=+p[k[u>>2]>>3];p[g+8>>3]=G;mta(57666,g)|0}}while(1){g=ma((k[(k[l>>2]|0)+49728>>2]|0)*11|0,k[(k[l>>2]|0)+49728>>2]|0)|0;h=ma(g,k[(k[l>>2]|0)+49728>>2]|0)|0;g=(k[l>>2]|0)+49728|0;I=k[g>>2]|0;if((h|0)>=(k[(k[l>>2]|0)+40>>2]|0))break;k[g>>2]=I+1}k[A>>2]=(((I*4092|0)-1|0)/(k[(k[l>>2]|0)+44>>2]|0)|0)+1;I=(ma(k[(k[l>>2]|0)+49728>>2]|0,k[(k[l>>2]|0)+36>>2]|0)|0)-1|0;k[C>>2]=((I|0)/(k[(k[l>>2]|0)+44>>2]|0)|0)+1;k[B>>2]=k[(k[l>>2]|0)+49728>>2];k[D>>2]=k[(k[l>>2]|0)+36>>2];k[E>>2]=k[(k[l>>2]|0)+44>>2];k[q>>2]=k[k[l>>2]>>2];k[t+4>>2]=0;while(1){if((k[B>>2]|0)<=0)break;if((k[D>>2]|0)>(k[E>>2]|0))k[D>>2]=k[E>>2];k[w>>2]=(k[q>>2]|0)+4;k[s>>2]=(k[w>>2]|0)+(k[(k[l>>2]|0)+24>>2]|0)-(((k[w>>2]|0)>>>0)%((k[(k[l>>2]|0)+24>>2]|0)>>>0)|0);do{I=k[s>>2]|0;g=Qe(k[D>>2]|0)|0;h=I+(ma(g,k[(k[l>>2]|0)+28>>2]|0)|0)|0;k[t>>2]=h;if(((k[(k[t>>2]|0)+4>>2]|0)!=0?(k[u>>2]=k[(k[t>>2]|0)+((k[27620+(k[t+4>>2]<<2)>>2]|0)+3<<2)>>2],p[y>>3]=(+p[k[n>>2]>>3]-+p[k[u>>2]>>3])*(+p[k[n>>2]>>3]-+p[k[u>>2]>>3])+(+p[(k[n>>2]|0)+8>>3]-+p[(k[u>>2]|0)+8>>3])*(+p[(k[n>>2]|0)+8>>3]-+p[(k[u>>2]|0)+8>>3]),+p[y>>3]<+p[x>>3]):0)?(k[k[o>>2]>>2]=k[t>>2],k[(k[o>>2]|0)+4>>2]=k[t+4>>2],p[x>>3]=+p[y>>3],(k[(k[m>>2]|0)+116>>2]|0)>2):0){G=+p[(k[u>>2]|0)+8>>3];p[f>>3]=+p[k[u>>2]>>3];p[f+8>>3]=G;mta(57724,f)|0}k[C>>2]=(k[C>>2]|0)+-1;k[B>>2]=(k[B>>2]|0)+-1}while((k[C>>2]|0)>0?(k[B>>2]|0)>0:0);if((k[B>>2]|0)<=0)continue;k[q>>2]=k[k[q>>2]>>2];k[C>>2]=k[A>>2];k[E>>2]=(k[E>>2]|0)-(k[D>>2]|0);k[D>>2]=4092}k[u>>2]=k[(k[k[o>>2]>>2]|0)+((k[27620+(k[(k[o>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[v>>2]=k[(k[k[o>>2]>>2]|0)+((k[27632+(k[(k[o>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];if(+p[k[u>>2]>>3]==+p[k[n>>2]>>3]?+p[(k[u>>2]|0)+8>>3]==+p[(k[n>>2]|0)+8>>3]:0){k[j>>2]=2;H=k[j>>2]|0;r=e;return H|0}if(+p[k[v>>2]>>3]==+p[k[n>>2]>>3]?+p[(k[v>>2]|0)+8>>3]==+p[(k[n>>2]|0)+8>>3]:0){k[(k[o>>2]|0)+4>>2]=k[27620+(k[(k[o>>2]|0)+4>>2]<<2)>>2];k[j>>2]=2;H=k[j>>2]|0;r=e;return H|0}G=+Ie(k[l>>2]|0,k[m>>2]|0,k[u>>2]|0,k[v>>2]|0,k[n>>2]|0);p[z>>3]=G;if(!(+p[z>>3]<0.0)){if((+p[z>>3]==0.0?(+p[k[u>>2]>>3]<+p[k[n>>2]>>3]|0)==(+p[k[n>>2]>>3]<+p[k[v>>2]>>3]|0):0)?(+p[(k[u>>2]|0)+8>>3]<+p[(k[n>>2]|0)+8>>3]|0)==(+p[(k[n>>2]|0)+8>>3]<+p[(k[v>>2]|0)+8>>3]|0):0){k[j>>2]=1;H=k[j>>2]|0;r=e;return H|0}}else{k[F>>2]=k[(k[k[o>>2]>>2]|0)+(k[(k[o>>2]|0)+4>>2]<<2)>>2];k[(k[o>>2]|0)+4>>2]=k[F>>2]&3;k[k[o>>2]>>2]=k[F>>2]^k[(k[o>>2]|0)+4>>2]}F=Ze(k[l>>2]|0,k[m>>2]|0,k[n>>2]|0,k[o>>2]|0,0)|0;k[j>>2]=F;H=k[j>>2]|0;r=e;return H|0}function $e(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;e=r;r=r+64|0;f=e;g=e+52|0;h=e+48|0;i=e+44|0;j=e+40|0;l=e+32|0;m=e+24|0;n=e+16|0;o=e+12|0;p=e+8|0;q=e+4|0;k[g>>2]=a;k[h>>2]=b;k[i>>2]=c;k[j>>2]=d;k[n>>2]=k[(k[k[i>>2]>>2]|0)+((k[27620+(k[(k[i>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[o>>2]=k[(k[k[i>>2]>>2]|0)+((k[27632+(k[(k[i>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];if(!(k[(k[n>>2]|0)+(k[(k[g>>2]|0)+49696>>2]<<2)>>2]|0))k[(k[n>>2]|0)+(k[(k[g>>2]|0)+49696>>2]<<2)>>2]=k[j>>2];if(!(k[(k[o>>2]|0)+(k[(k[g>>2]|0)+49696>>2]<<2)>>2]|0))k[(k[o>>2]|0)+(k[(k[g>>2]|0)+49696>>2]<<2)>>2]=k[j>>2];k[q>>2]=k[(k[k[i>>2]>>2]|0)+(6+(k[(k[i>>2]|0)+4>>2]|0)<<2)>>2];k[m+4>>2]=k[q>>2]&1;k[m>>2]=k[q>>2]&-4;if((k[m>>2]|0)==(k[(k[g>>2]|0)+49776>>2]|0)){Ce(k[g>>2]|0,m);k[(k[m>>2]|0)+(2+(k[m+4>>2]|0)<<2)>>2]=k[o>>2];k[(k[m>>2]|0)+(3-(k[m+4>>2]|0)<<2)>>2]=k[n>>2];k[(k[m>>2]|0)+(4+(k[m+4>>2]|0)<<2)>>2]=k[o>>2];k[(k[m>>2]|0)+(5-(k[m+4>>2]|0)<<2)>>2]=k[n>>2];k[(k[k[i>>2]>>2]|0)+(6+(k[(k[i>>2]|0)+4>>2]|0)<<2)>>2]=k[m>>2]|k[m+4>>2];k[(k[m>>2]|0)+(6+(k[m+4>>2]|0)<<2)>>2]=k[k[i>>2]>>2]|k[(k[i>>2]|0)+4>>2];k[p>>2]=k[(k[k[i>>2]>>2]|0)+(k[(k[i>>2]|0)+4>>2]<<2)>>2];k[l+4>>2]=k[p>>2]&3;k[l>>2]=k[p>>2]^k[l+4>>2];k[m+4>>2]=1-(k[m+4>>2]|0);k[(k[l>>2]|0)+(6+(k[l+4>>2]|0)<<2)>>2]=k[m>>2]|k[m+4>>2];k[(k[m>>2]|0)+(6+(k[m+4>>2]|0)<<2)>>2]=k[l>>2]|k[l+4>>2];k[(k[m>>2]|0)+32>>2]=k[j>>2];if((k[(k[h>>2]|0)+116>>2]|0)<=2){r=e;return}mta(57775,f)|0;fe(k[g>>2]|0,k[h>>2]|0,m);r=e;return}else{if(k[(k[m>>2]|0)+32>>2]|0){r=e;return}k[(k[m>>2]|0)+32>>2]=k[j>>2];r=e;return}}function af(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;d=r;r=r+160|0;e=d+8|0;f=d;g=d+152|0;h=d+148|0;i=d+144|0;j=d+136|0;l=d+128|0;m=d+120|0;n=d+112|0;o=d+104|0;p=d+96|0;q=d+88|0;s=d+80|0;t=d+72|0;u=d+64|0;v=d+56|0;w=d+48|0;x=d+40|0;y=d+32|0;z=d+28|0;A=d+24|0;B=d+20|0;C=d+16|0;D=d+12|0;k[g>>2]=a;k[h>>2]=b;k[i>>2]=c;k[z>>2]=k[(k[k[i>>2]>>2]|0)+((k[27620+(k[(k[i>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[y>>2]=k[(k[k[i>>2]>>2]|0)+((k[27632+(k[(k[i>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[A>>2]=k[(k[k[i>>2]>>2]|0)+((k[(k[i>>2]|0)+4>>2]|0)+3<<2)>>2];k[C>>2]=k[(k[k[i>>2]>>2]|0)+(k[(k[i>>2]|0)+4>>2]<<2)>>2];k[o+4>>2]=k[C>>2]&3;k[o>>2]=k[C>>2]^k[o+4>>2];k[B>>2]=k[(k[o>>2]|0)+((k[o+4>>2]|0)+3<<2)>>2];k[m>>2]=k[o>>2];k[m+4>>2]=k[27632+(k[o+4>>2]<<2)>>2];k[C>>2]=k[(k[m>>2]|0)+(k[m+4>>2]<<2)>>2];k[s+4>>2]=k[C>>2]&3;k[s>>2]=k[C>>2]^k[s+4>>2];k[n>>2]=k[o>>2];k[n+4>>2]=k[27620+(k[o+4>>2]<<2)>>2];k[C>>2]=k[(k[n>>2]|0)+(k[n+4>>2]<<2)>>2];k[t+4>>2]=k[C>>2]&3;k[t>>2]=k[C>>2]^k[t+4>>2];k[j>>2]=k[k[i>>2]>>2];k[j+4>>2]=k[27620+(k[(k[i>>2]|0)+4>>2]<<2)>>2];k[C>>2]=k[(k[j>>2]|0)+(k[j+4>>2]<<2)>>2];k[p+4>>2]=k[C>>2]&3;k[p>>2]=k[C>>2]^k[p+4>>2];k[l>>2]=k[k[i>>2]>>2];k[l+4>>2]=k[27632+(k[(k[i>>2]|0)+4>>2]<<2)>>2];k[C>>2]=k[(k[l>>2]|0)+(k[l+4>>2]<<2)>>2];k[q+4>>2]=k[C>>2]&3;k[q>>2]=k[C>>2]^k[q+4>>2];k[(k[m>>2]|0)+(k[m+4>>2]<<2)>>2]=k[p>>2]|k[p+4>>2];k[(k[p>>2]|0)+(k[p+4>>2]<<2)>>2]=k[m>>2]|k[m+4>>2];k[(k[j>>2]|0)+(k[j+4>>2]<<2)>>2]=k[q>>2]|k[q+4>>2];k[(k[q>>2]|0)+(k[q+4>>2]<<2)>>2]=k[j>>2]|k[j+4>>2];k[(k[l>>2]|0)+(k[l+4>>2]<<2)>>2]=k[t>>2]|k[t+4>>2];k[(k[t>>2]|0)+(k[t+4>>2]<<2)>>2]=k[l>>2]|k[l+4>>2];k[(k[n>>2]|0)+(k[n+4>>2]<<2)>>2]=k[s>>2]|k[s+4>>2];k[(k[s>>2]|0)+(k[s+4>>2]<<2)>>2]=k[n>>2]|k[n+4>>2];do if(k[(k[g>>2]|0)+49716>>2]|0){k[D>>2]=k[(k[m>>2]|0)+(6+(k[m+4>>2]|0)<<2)>>2];k[w+4>>2]=k[D>>2]&1;k[w>>2]=k[D>>2]&-4;k[D>>2]=k[(k[j>>2]|0)+(6+(k[j+4>>2]|0)<<2)>>2];k[u+4>>2]=k[D>>2]&1;k[u>>2]=k[D>>2]&-4;k[D>>2]=k[(k[l>>2]|0)+(6+(k[l+4>>2]|0)<<2)>>2];k[v+4>>2]=k[D>>2]&1;k[v>>2]=k[D>>2]&-4;k[D>>2]=k[(k[n>>2]|0)+(6+(k[n+4>>2]|0)<<2)>>2];k[x+4>>2]=k[D>>2]&1;k[x>>2]=k[D>>2]&-4;if((k[w>>2]|0)==(k[(k[g>>2]|0)+49776>>2]|0))k[(k[n>>2]|0)+(6+(k[n+4>>2]|0)<<2)>>2]=k[(k[g>>2]|0)+49776>>2];else{k[(k[n>>2]|0)+(6+(k[n+4>>2]|0)<<2)>>2]=k[w>>2]|k[w+4>>2];k[(k[w>>2]|0)+(6+(k[w+4>>2]|0)<<2)>>2]=k[n>>2]|k[n+4>>2]}if((k[u>>2]|0)==(k[(k[g>>2]|0)+49776>>2]|0))k[(k[m>>2]|0)+(6+(k[m+4>>2]|0)<<2)>>2]=k[(k[g>>2]|0)+49776>>2];else{k[(k[m>>2]|0)+(6+(k[m+4>>2]|0)<<2)>>2]=k[u>>2]|k[u+4>>2];k[(k[u>>2]|0)+(6+(k[u+4>>2]|0)<<2)>>2]=k[m>>2]|k[m+4>>2]}if((k[v>>2]|0)==(k[(k[g>>2]|0)+49776>>2]|0))k[(k[j>>2]|0)+(6+(k[j+4>>2]|0)<<2)>>2]=k[(k[g>>2]|0)+49776>>2];else{k[(k[j>>2]|0)+(6+(k[j+4>>2]|0)<<2)>>2]=k[v>>2]|k[v+4>>2];k[(k[v>>2]|0)+(6+(k[v+4>>2]|0)<<2)>>2]=k[j>>2]|k[j+4>>2]}if((k[x>>2]|0)==(k[(k[g>>2]|0)+49776>>2]|0)){k[(k[l>>2]|0)+(6+(k[l+4>>2]|0)<<2)>>2]=k[(k[g>>2]|0)+49776>>2];break}else{k[(k[l>>2]|0)+(6+(k[l+4>>2]|0)<<2)>>2]=k[x>>2]|k[x+4>>2];k[(k[x>>2]|0)+(6+(k[x+4>>2]|0)<<2)>>2]=k[l>>2]|k[l+4>>2];break}}while(0);k[(k[k[i>>2]>>2]|0)+((k[27620+(k[(k[i>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[B>>2];k[(k[k[i>>2]>>2]|0)+((k[27632+(k[(k[i>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[A>>2];k[(k[k[i>>2]>>2]|0)+((k[(k[i>>2]|0)+4>>2]|0)+3<<2)>>2]=k[z>>2];k[(k[o>>2]|0)+((k[27620+(k[o+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[A>>2];k[(k[o>>2]|0)+((k[27632+(k[o+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[B>>2];k[(k[o>>2]|0)+((k[o+4>>2]|0)+3<<2)>>2]=k[y>>2];if((k[(k[h>>2]|0)+116>>2]|0)<=2){r=d;return}mta(57792,f)|0;ee(k[g>>2]|0,k[h>>2]|0,o);mta(57821,e)|0;ee(k[g>>2]|0,k[h>>2]|0,k[i>>2]|0);r=d;return}function bf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;d=r;r=r+160|0;e=d+8|0;f=d;g=d+152|0;h=d+148|0;i=d+144|0;j=d+136|0;l=d+128|0;m=d+120|0;n=d+112|0;o=d+104|0;p=d+96|0;q=d+88|0;s=d+80|0;t=d+72|0;u=d+64|0;v=d+56|0;w=d+48|0;x=d+40|0;y=d+32|0;z=d+28|0;A=d+24|0;B=d+20|0;C=d+16|0;D=d+12|0;k[g>>2]=a;k[h>>2]=b;k[i>>2]=c;k[z>>2]=k[(k[k[i>>2]>>2]|0)+((k[27620+(k[(k[i>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[y>>2]=k[(k[k[i>>2]>>2]|0)+((k[27632+(k[(k[i>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[A>>2]=k[(k[k[i>>2]>>2]|0)+((k[(k[i>>2]|0)+4>>2]|0)+3<<2)>>2];k[C>>2]=k[(k[k[i>>2]>>2]|0)+(k[(k[i>>2]|0)+4>>2]<<2)>>2];k[o+4>>2]=k[C>>2]&3;k[o>>2]=k[C>>2]^k[o+4>>2];k[B>>2]=k[(k[o>>2]|0)+((k[o+4>>2]|0)+3<<2)>>2];k[m>>2]=k[o>>2];k[m+4>>2]=k[27632+(k[o+4>>2]<<2)>>2];k[C>>2]=k[(k[m>>2]|0)+(k[m+4>>2]<<2)>>2];k[s+4>>2]=k[C>>2]&3;k[s>>2]=k[C>>2]^k[s+4>>2];k[n>>2]=k[o>>2];k[n+4>>2]=k[27620+(k[o+4>>2]<<2)>>2];k[C>>2]=k[(k[n>>2]|0)+(k[n+4>>2]<<2)>>2];k[t+4>>2]=k[C>>2]&3;k[t>>2]=k[C>>2]^k[t+4>>2];k[j>>2]=k[k[i>>2]>>2];k[j+4>>2]=k[27620+(k[(k[i>>2]|0)+4>>2]<<2)>>2];k[C>>2]=k[(k[j>>2]|0)+(k[j+4>>2]<<2)>>2];k[p+4>>2]=k[C>>2]&3;k[p>>2]=k[C>>2]^k[p+4>>2];k[l>>2]=k[k[i>>2]>>2];k[l+4>>2]=k[27632+(k[(k[i>>2]|0)+4>>2]<<2)>>2];k[C>>2]=k[(k[l>>2]|0)+(k[l+4>>2]<<2)>>2];k[q+4>>2]=k[C>>2]&3;k[q>>2]=k[C>>2]^k[q+4>>2];k[(k[m>>2]|0)+(k[m+4>>2]<<2)>>2]=k[t>>2]|k[t+4>>2];k[(k[t>>2]|0)+(k[t+4>>2]<<2)>>2]=k[m>>2]|k[m+4>>2];k[(k[j>>2]|0)+(k[j+4>>2]<<2)>>2]=k[s>>2]|k[s+4>>2];k[(k[s>>2]|0)+(k[s+4>>2]<<2)>>2]=k[j>>2]|k[j+4>>2];k[(k[l>>2]|0)+(k[l+4>>2]<<2)>>2]=k[p>>2]|k[p+4>>2];k[(k[p>>2]|0)+(k[p+4>>2]<<2)>>2]=k[l>>2]|k[l+4>>2];k[(k[n>>2]|0)+(k[n+4>>2]<<2)>>2]=k[q>>2]|k[q+4>>2];k[(k[q>>2]|0)+(k[q+4>>2]<<2)>>2]=k[n>>2]|k[n+4>>2];do if(k[(k[g>>2]|0)+49716>>2]|0){k[D>>2]=k[(k[m>>2]|0)+(6+(k[m+4>>2]|0)<<2)>>2];k[w+4>>2]=k[D>>2]&1;k[w>>2]=k[D>>2]&-4;k[D>>2]=k[(k[j>>2]|0)+(6+(k[j+4>>2]|0)<<2)>>2];k[u+4>>2]=k[D>>2]&1;k[u>>2]=k[D>>2]&-4;k[D>>2]=k[(k[l>>2]|0)+(6+(k[l+4>>2]|0)<<2)>>2];k[v+4>>2]=k[D>>2]&1;k[v>>2]=k[D>>2]&-4;k[D>>2]=k[(k[n>>2]|0)+(6+(k[n+4>>2]|0)<<2)>>2];k[x+4>>2]=k[D>>2]&1;k[x>>2]=k[D>>2]&-4;if((k[w>>2]|0)==(k[(k[g>>2]|0)+49776>>2]|0))k[(k[j>>2]|0)+(6+(k[j+4>>2]|0)<<2)>>2]=k[(k[g>>2]|0)+49776>>2];else{k[(k[j>>2]|0)+(6+(k[j+4>>2]|0)<<2)>>2]=k[w>>2]|k[w+4>>2];k[(k[w>>2]|0)+(6+(k[w+4>>2]|0)<<2)>>2]=k[j>>2]|k[j+4>>2]}if((k[u>>2]|0)==(k[(k[g>>2]|0)+49776>>2]|0))k[(k[l>>2]|0)+(6+(k[l+4>>2]|0)<<2)>>2]=k[(k[g>>2]|0)+49776>>2];else{k[(k[l>>2]|0)+(6+(k[l+4>>2]|0)<<2)>>2]=k[u>>2]|k[u+4>>2];k[(k[u>>2]|0)+(6+(k[u+4>>2]|0)<<2)>>2]=k[l>>2]|k[l+4>>2]}if((k[v>>2]|0)==(k[(k[g>>2]|0)+49776>>2]|0))k[(k[n>>2]|0)+(6+(k[n+4>>2]|0)<<2)>>2]=k[(k[g>>2]|0)+49776>>2];else{k[(k[n>>2]|0)+(6+(k[n+4>>2]|0)<<2)>>2]=k[v>>2]|k[v+4>>2];k[(k[v>>2]|0)+(6+(k[v+4>>2]|0)<<2)>>2]=k[n>>2]|k[n+4>>2]}if((k[x>>2]|0)==(k[(k[g>>2]|0)+49776>>2]|0)){k[(k[m>>2]|0)+(6+(k[m+4>>2]|0)<<2)>>2]=k[(k[g>>2]|0)+49776>>2];break}else{k[(k[m>>2]|0)+(6+(k[m+4>>2]|0)<<2)>>2]=k[x>>2]|k[x+4>>2];k[(k[x>>2]|0)+(6+(k[x+4>>2]|0)<<2)>>2]=k[m>>2]|k[m+4>>2];break}}while(0);k[(k[k[i>>2]>>2]|0)+((k[27620+(k[(k[i>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[A>>2];k[(k[k[i>>2]>>2]|0)+((k[27632+(k[(k[i>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[B>>2];k[(k[k[i>>2]>>2]|0)+((k[(k[i>>2]|0)+4>>2]|0)+3<<2)>>2]=k[y>>2];k[(k[o>>2]|0)+((k[27620+(k[o+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[B>>2];k[(k[o>>2]|0)+((k[27632+(k[o+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[A>>2];k[(k[o>>2]|0)+((k[o+4>>2]|0)+3<<2)>>2]=k[z>>2];if((k[(k[h>>2]|0)+116>>2]|0)<=2){r=d;return}mta(57834,f)|0;ee(k[g>>2]|0,k[h>>2]|0,k[i>>2]|0);mta(57821,e)|0;ee(k[g>>2]|0,k[h>>2]|0,o);r=d;return}function cf(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0.0,ta=0,ua=0.0,va=0.0,wa=0;h=r;r=r+416|0;i=h+128|0;j=h+120|0;l=h+112|0;m=h+104|0;n=h+96|0;o=h+88|0;q=h+80|0;s=h+72|0;t=h+64|0;u=h+32|0;v=h+16|0;w=h+412|0;x=h+408|0;y=h+404|0;z=h+400|0;A=h+396|0;B=h+392|0;C=h+388|0;D=h+384|0;E=h+376|0;F=h+368|0;G=h+360|0;H=h+352|0;I=h+344|0;J=h+336|0;K=h+328|0;L=h+320|0;M=h+312|0;N=h+304|0;O=h+296|0;P=h+288|0;Q=h+280|0;R=h+272|0;S=h+264|0;T=h+256|0;U=h+248|0;V=h+240|0;W=h+232|0;X=h+224|0;Y=h+216|0;Z=h+208|0;_=h+200|0;$=h+196|0;aa=h+192|0;ba=h+188|0;ca=h+184|0;da=h+180|0;ea=h+176|0;fa=h+172|0;ga=h+168|0;ha=h+164|0;ia=h+8|0;ja=h;ka=h+160|0;la=h+156|0;ma=h+152|0;na=h+148|0;oa=h+144|0;pa=h+140|0;qa=h+136|0;ra=h+132|0;k[x>>2]=a;k[y>>2]=b;k[z>>2]=c;k[A>>2]=d;k[B>>2]=e;k[C>>2]=f;k[D>>2]=g;if((k[(k[y>>2]|0)+116>>2]|0)>1){sa=+p[(k[z>>2]|0)+8>>3];p[v>>3]=+p[k[z>>2]>>3];p[v+8>>3]=sa;mta(57865,v)|0}v=k[k[A>>2]>>2]|0;do if(!(k[B>>2]|0))if((v|0)==(k[(k[x>>2]|0)+49768>>2]|0)){k[E>>2]=k[(k[x>>2]|0)+49768>>2];k[E+4>>2]=0;k[qa>>2]=k[(k[E>>2]|0)+(k[E+4>>2]<<2)>>2];k[E+4>>2]=k[qa>>2]&3;k[E>>2]=k[qa>>2]^k[E+4>>2];g=_e(k[x>>2]|0,k[y>>2]|0,k[z>>2]|0,E)|0;k[la>>2]=g;break}else{k[E>>2]=k[k[A>>2]>>2];k[E+4>>2]=k[(k[A>>2]|0)+4>>2];g=Ze(k[x>>2]|0,k[y>>2]|0,k[z>>2]|0,E,1)|0;k[la>>2]=g;break}else{k[E>>2]=v;k[E+4>>2]=k[(k[A>>2]|0)+4>>2];k[la>>2]=1}while(0);if((k[la>>2]|0)==2){k[k[A>>2]>>2]=k[E>>2];k[(k[A>>2]|0)+4>>2]=k[E+4>>2];k[(k[x>>2]|0)+49784>>2]=k[E>>2];k[(k[x>>2]|0)+49784+4>>2]=k[E+4>>2];k[w>>2]=3;ta=k[w>>2]|0;r=h;return ta|0}if(!((k[la>>2]|0)==1|(k[la>>2]|0)==3)){k[G>>2]=k[E>>2];k[G+4>>2]=k[27620+(k[E+4>>2]<<2)>>2];k[H>>2]=k[E>>2];k[H+4>>2]=k[27632+(k[E+4>>2]<<2)>>2];k[qa>>2]=k[(k[G>>2]|0)+(k[G+4>>2]<<2)>>2];k[N+4>>2]=k[qa>>2]&3;k[N>>2]=k[qa>>2]^k[N+4>>2];k[qa>>2]=k[(k[H>>2]|0)+(k[H+4>>2]<<2)>>2];k[O+4>>2]=k[qa>>2]&3;k[O>>2]=k[qa>>2]^k[O+4>>2];Be(k[x>>2]|0,k[y>>2]|0,K);Be(k[x>>2]|0,k[y>>2]|0,L);k[ca>>2]=k[(k[E>>2]|0)+((k[27620+(k[E+4>>2]<<2)>>2]|0)+3<<2)>>2];k[ba>>2]=k[(k[E>>2]|0)+((k[27632+(k[E+4>>2]<<2)>>2]|0)+3<<2)>>2];k[da>>2]=k[(k[E>>2]|0)+((k[E+4>>2]|0)+3<<2)>>2];k[(k[K>>2]|0)+((k[27620+(k[K+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[ba>>2];k[(k[K>>2]|0)+((k[27632+(k[K+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[da>>2];k[(k[K>>2]|0)+((k[K+4>>2]|0)+3<<2)>>2]=k[z>>2];k[(k[L>>2]|0)+((k[27620+(k[L+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[da>>2];k[(k[L>>2]|0)+((k[27632+(k[L+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[ca>>2];k[(k[L>>2]|0)+((k[L+4>>2]|0)+3<<2)>>2]=k[z>>2];k[(k[E>>2]|0)+((k[E+4>>2]|0)+3<<2)>>2]=k[z>>2];k[pa>>2]=0;while(1){if((k[pa>>2]|0)>=(k[(k[x>>2]|0)+49684>>2]|0))break;p[ia>>3]=+p[(k[E>>2]|0)+((k[(k[x>>2]|0)+49708>>2]|0)+(k[pa>>2]|0)<<3)>>3];p[(k[K>>2]|0)+((k[(k[x>>2]|0)+49708>>2]|0)+(k[pa>>2]|0)<<3)>>3]=+p[ia>>3];p[(k[L>>2]|0)+((k[(k[x>>2]|0)+49708>>2]|0)+(k[pa>>2]|0)<<3)>>3]=+p[ia>>3];k[pa>>2]=(k[pa>>2]|0)+1}if(k[(k[y>>2]|0)+12>>2]|0){p[ja>>3]=+p[(k[E>>2]|0)+(k[(k[x>>2]|0)+49712>>2]<<3)>>3];p[(k[K>>2]|0)+(k[(k[x>>2]|0)+49712>>2]<<3)>>3]=+p[ja>>3];p[(k[L>>2]|0)+(k[(k[x>>2]|0)+49712>>2]<<3)>>3]=+p[ja>>3]}if(k[(k[x>>2]|0)+49716>>2]|0){k[ra>>2]=k[(k[G>>2]|0)+(6+(k[G+4>>2]|0)<<2)>>2];k[S+4>>2]=k[ra>>2]&1;k[S>>2]=k[ra>>2]&-4;if((k[S>>2]|0)!=(k[(k[x>>2]|0)+49776>>2]|0)){k[(k[G>>2]|0)+(6+(k[G+4>>2]|0)<<2)>>2]=k[(k[x>>2]|0)+49776>>2];k[(k[K>>2]|0)+(6+(k[K+4>>2]|0)<<2)>>2]=k[S>>2]|k[S+4>>2];k[(k[S>>2]|0)+(6+(k[S+4>>2]|0)<<2)>>2]=k[K>>2]|k[K+4>>2]}k[ra>>2]=k[(k[H>>2]|0)+(6+(k[H+4>>2]|0)<<2)>>2];k[T+4>>2]=k[ra>>2]&1;k[T>>2]=k[ra>>2]&-4;if((k[T>>2]|0)!=(k[(k[x>>2]|0)+49776>>2]|0)){k[(k[H>>2]|0)+(6+(k[H+4>>2]|0)<<2)>>2]=k[(k[x>>2]|0)+49776>>2];k[(k[L>>2]|0)+(6+(k[L+4>>2]|0)<<2)>>2]=k[T>>2]|k[T+4>>2];k[(k[T>>2]|0)+(6+(k[T+4>>2]|0)<<2)>>2]=k[L>>2]|k[L+4>>2]}}k[(k[K>>2]|0)+(k[K+4>>2]<<2)>>2]=k[N>>2]|k[N+4>>2];k[(k[N>>2]|0)+(k[N+4>>2]<<2)>>2]=k[K>>2]|k[K+4>>2];k[(k[L>>2]|0)+(k[L+4>>2]<<2)>>2]=k[O>>2]|k[O+4>>2];k[(k[O>>2]|0)+(k[O+4>>2]<<2)>>2]=k[L>>2]|k[L+4>>2];k[K+4>>2]=k[27620+(k[K+4>>2]<<2)>>2];k[L+4>>2]=k[27632+(k[L+4>>2]<<2)>>2];k[(k[K>>2]|0)+(k[K+4>>2]<<2)>>2]=k[L>>2]|k[L+4>>2];k[(k[L>>2]|0)+(k[L+4>>2]<<2)>>2]=k[K>>2]|k[K+4>>2];k[K+4>>2]=k[27620+(k[K+4>>2]<<2)>>2];k[(k[G>>2]|0)+(k[G+4>>2]<<2)>>2]=k[K>>2]|k[K+4>>2];k[(k[K>>2]|0)+(k[K+4>>2]<<2)>>2]=k[G>>2]|k[G+4>>2];k[L+4>>2]=k[27632+(k[L+4>>2]<<2)>>2];k[(k[H>>2]|0)+(k[H+4>>2]<<2)>>2]=k[L>>2]|k[L+4>>2];k[(k[L>>2]|0)+(k[L+4>>2]<<2)>>2]=k[H>>2]|k[H+4>>2];if(k[(k[x>>2]|0)+49720>>2]|0){he((k[x>>2]|0)+336|0);la=ke((k[x>>2]|0)+336|0)|0;k[(k[x>>2]|0)+49604>>2]=la;k[k[(k[x>>2]|0)+49604>>2]>>2]=k[E>>2]|k[E+4>>2];k[(k[(k[x>>2]|0)+49604>>2]|0)+4>>2]=0}if((k[(k[y>>2]|0)+116>>2]|0)>2){mta(57986,n)|0;ee(k[x>>2]|0,k[y>>2]|0,E);mta(58002,m)|0;ee(k[x>>2]|0,k[y>>2]|0,K);mta(58019,l)|0;ee(k[x>>2]|0,k[y>>2]|0,L)}}else{if(((k[B>>2]|0)==0?(k[(k[x>>2]|0)+49716>>2]|0)!=0:0)?(k[ra>>2]=k[(k[E>>2]|0)+(6+(k[E+4>>2]|0)<<2)>>2],k[W+4>>2]=k[ra>>2]&1,k[W>>2]=k[ra>>2]&-4,(k[W>>2]|0)!=(k[(k[x>>2]|0)+49776>>2]|0)):0){if(k[C>>2]|0){k[oa>>2]=(k[(k[y>>2]|0)+128>>2]|0)!=2&1;if((k[oa>>2]|0)!=0?(k[(k[y>>2]|0)+128>>2]|0)==1:0){k[qa>>2]=k[(k[E>>2]|0)+(k[E+4>>2]<<2)>>2];k[R+4>>2]=k[qa>>2]&3;k[R>>2]=k[qa>>2]^k[R+4>>2];k[oa>>2]=(k[R>>2]|0)!=(k[(k[x>>2]|0)+49768>>2]|0)&1}if((k[oa>>2]|0)!=0?(oa=ke((k[x>>2]|0)+224|0)|0,k[_>>2]=oa,k[k[_>>2]>>2]=k[W>>2]|k[W+4>>2],k[(k[_>>2]|0)+4>>2]=k[(k[W>>2]|0)+(2+(k[W+4>>2]|0)<<2)>>2],k[(k[_>>2]|0)+8>>2]=k[(k[W>>2]|0)+(3-(k[W+4>>2]|0)<<2)>>2],(k[(k[y>>2]|0)+116>>2]|0)>2):0){sa=+p[(k[(k[_>>2]|0)+4>>2]|0)+8>>3];ua=+p[k[(k[_>>2]|0)+8>>2]>>3];va=+p[(k[(k[_>>2]|0)+8>>2]|0)+8>>3];p[u>>3]=+p[k[(k[_>>2]|0)+4>>2]>>3];p[u+8>>3]=sa;p[u+16>>3]=ua;p[u+24>>3]=va;mta(57342,u)|0}}k[k[A>>2]>>2]=k[E>>2];k[(k[A>>2]|0)+4>>2]=k[E+4>>2];k[(k[x>>2]|0)+49784>>2]=k[E>>2];k[(k[x>>2]|0)+49784+4>>2]=k[E+4>>2];k[w>>2]=2;ta=k[w>>2]|0;r=h;return ta|0}k[H>>2]=k[E>>2];k[H+4>>2]=k[27632+(k[E+4>>2]<<2)>>2];k[qa>>2]=k[(k[H>>2]|0)+(k[H+4>>2]<<2)>>2];k[O+4>>2]=k[qa>>2]&3;k[O>>2]=k[qa>>2]^k[O+4>>2];k[qa>>2]=k[(k[E>>2]|0)+(k[E+4>>2]<<2)>>2];k[J+4>>2]=k[qa>>2]&3;k[J>>2]=k[qa>>2]^k[J+4>>2];k[na>>2]=(k[J>>2]|0)!=(k[(k[x>>2]|0)+49768>>2]|0)&1;if(k[na>>2]|0){k[J+4>>2]=k[27620+(k[J+4>>2]<<2)>>2];k[qa>>2]=k[(k[J>>2]|0)+(k[J+4>>2]<<2)>>2];k[Q+4>>2]=k[qa>>2]&3;k[Q>>2]=k[qa>>2]^k[Q+4>>2];Be(k[x>>2]|0,k[y>>2]|0,M)}else{u=(k[x>>2]|0)+49688|0;k[u>>2]=(k[u>>2]|0)+1}Be(k[x>>2]|0,k[y>>2]|0,L);k[ca>>2]=k[(k[E>>2]|0)+((k[27620+(k[E+4>>2]<<2)>>2]|0)+3<<2)>>2];k[ba>>2]=k[(k[E>>2]|0)+((k[27632+(k[E+4>>2]<<2)>>2]|0)+3<<2)>>2];k[da>>2]=k[(k[E>>2]|0)+((k[E+4>>2]|0)+3<<2)>>2];k[(k[L>>2]|0)+((k[27620+(k[L+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[da>>2];k[(k[L>>2]|0)+((k[27632+(k[L+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[ca>>2];k[(k[L>>2]|0)+((k[L+4>>2]|0)+3<<2)>>2]=k[z>>2];k[(k[E>>2]|0)+((k[27620+(k[E+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[z>>2];k[pa>>2]=0;while(1){if((k[pa>>2]|0)>=(k[(k[x>>2]|0)+49684>>2]|0))break;p[(k[L>>2]|0)+((k[(k[x>>2]|0)+49708>>2]|0)+(k[pa>>2]|0)<<3)>>3]=+p[(k[H>>2]|0)+((k[(k[x>>2]|0)+49708>>2]|0)+(k[pa>>2]|0)<<3)>>3];k[pa>>2]=(k[pa>>2]|0)+1}if(k[(k[y>>2]|0)+12>>2]|0)p[(k[L>>2]|0)+(k[(k[x>>2]|0)+49712>>2]<<3)>>3]=+p[(k[H>>2]|0)+(k[(k[x>>2]|0)+49712>>2]<<3)>>3];if(k[na>>2]|0){k[ea>>2]=k[(k[J>>2]|0)+((k[27632+(k[J+4>>2]<<2)>>2]|0)+3<<2)>>2];k[(k[M>>2]|0)+((k[27620+(k[M+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[ca>>2];k[(k[M>>2]|0)+((k[27632+(k[M+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[ea>>2];k[(k[M>>2]|0)+((k[M+4>>2]|0)+3<<2)>>2]=k[z>>2];k[(k[J>>2]|0)+((k[27620+(k[J+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[z>>2];k[pa>>2]=0;while(1){if((k[pa>>2]|0)>=(k[(k[x>>2]|0)+49684>>2]|0))break;p[(k[M>>2]|0)+((k[(k[x>>2]|0)+49708>>2]|0)+(k[pa>>2]|0)<<3)>>3]=+p[(k[J>>2]|0)+((k[(k[x>>2]|0)+49708>>2]|0)+(k[pa>>2]|0)<<3)>>3];k[pa>>2]=(k[pa>>2]|0)+1}if(k[(k[y>>2]|0)+12>>2]|0)p[(k[M>>2]|0)+(k[(k[x>>2]|0)+49712>>2]<<3)>>3]=+p[(k[J>>2]|0)+(k[(k[x>>2]|0)+49712>>2]<<3)>>3]}if(k[(k[x>>2]|0)+49716>>2]|0){k[ra>>2]=k[(k[H>>2]|0)+(6+(k[H+4>>2]|0)<<2)>>2];k[T+4>>2]=k[ra>>2]&1;k[T>>2]=k[ra>>2]&-4;if((k[T>>2]|0)!=(k[(k[x>>2]|0)+49776>>2]|0)){k[(k[H>>2]|0)+(6+(k[H+4>>2]|0)<<2)>>2]=k[(k[x>>2]|0)+49776>>2];k[(k[L>>2]|0)+(6+(k[L+4>>2]|0)<<2)>>2]=k[T>>2]|k[T+4>>2];k[(k[T>>2]|0)+(6+(k[T+4>>2]|0)<<2)>>2]=k[L>>2]|k[L+4>>2]}if((k[na>>2]|0)!=0?(k[ra>>2]=k[(k[J>>2]|0)+(6+(k[J+4>>2]|0)<<2)>>2],k[V+4>>2]=k[ra>>2]&1,k[V>>2]=k[ra>>2]&-4,(k[V>>2]|0)!=(k[(k[x>>2]|0)+49776>>2]|0)):0){k[(k[J>>2]|0)+(6+(k[J+4>>2]|0)<<2)>>2]=k[(k[x>>2]|0)+49776>>2];k[(k[M>>2]|0)+(6+(k[M+4>>2]|0)<<2)>>2]=k[V>>2]|k[V+4>>2];k[(k[V>>2]|0)+(6+(k[V+4>>2]|0)<<2)>>2]=k[M>>2]|k[M+4>>2]}}k[(k[L>>2]|0)+(k[L+4>>2]<<2)>>2]=k[O>>2]|k[O+4>>2];k[(k[O>>2]|0)+(k[O+4>>2]<<2)>>2]=k[L>>2]|k[L+4>>2];k[L+4>>2]=k[27632+(k[L+4>>2]<<2)>>2];k[(k[L>>2]|0)+(k[L+4>>2]<<2)>>2]=k[H>>2]|k[H+4>>2];k[(k[H>>2]|0)+(k[H+4>>2]<<2)>>2]=k[L>>2]|k[L+4>>2];k[L+4>>2]=k[27632+(k[L+4>>2]<<2)>>2];if(k[na>>2]|0){k[(k[M>>2]|0)+(k[M+4>>2]<<2)>>2]=k[Q>>2]|k[Q+4>>2];k[(k[Q>>2]|0)+(k[Q+4>>2]<<2)>>2]=k[M>>2]|k[M+4>>2];k[M+4>>2]=k[27620+(k[M+4>>2]<<2)>>2];k[(k[M>>2]|0)+(k[M+4>>2]<<2)>>2]=k[J>>2]|k[J+4>>2];k[(k[J>>2]|0)+(k[J+4>>2]<<2)>>2]=k[M>>2]|k[M+4>>2];k[M+4>>2]=k[27620+(k[M+4>>2]<<2)>>2];k[(k[M>>2]|0)+(k[M+4>>2]<<2)>>2]=k[L>>2]|k[L+4>>2];k[(k[L>>2]|0)+(k[L+4>>2]<<2)>>2]=k[M>>2]|k[M+4>>2]}if((k[B>>2]|0)!=0?(k[(k[k[B>>2]>>2]|0)+(3-(k[(k[B>>2]|0)+4>>2]|0)<<2)>>2]=k[z>>2],k[ga>>2]=k[(k[k[B>>2]>>2]|0)+(4+(k[(k[B>>2]|0)+4>>2]|0)<<2)>>2],k[ha>>2]=k[(k[k[B>>2]>>2]|0)+(5-(k[(k[B>>2]|0)+4>>2]|0)<<2)>>2],k[(k[B>>2]|0)+4>>2]=1-(k[(k[B>>2]|0)+4>>2]|0),k[ra>>2]=k[(k[k[B>>2]>>2]|0)+(k[(k[B>>2]|0)+4>>2]<<2)>>2],k[Y+4>>2]=k[ra>>2]&1,k[Y>>2]=k[ra>>2]&-4,$e(k[x>>2]|0,k[y>>2]|0,L,k[(k[k[B>>2]>>2]|0)+32>>2]|0),k[ra>>2]=k[(k[L>>2]|0)+(6+(k[L+4>>2]|0)<<2)>>2],k[Z+4>>2]=k[ra>>2]&1,k[Z>>2]=k[ra>>2]&-4,k[(k[Z>>2]|0)+(4+(k[Z+4>>2]|0)<<2)>>2]=k[ga>>2],k[(k[Z>>2]|0)+(5-(k[Z+4>>2]|0)<<2)>>2]=k[ha>>2],k[(k[k[B>>2]>>2]|0)+(k[(k[B>>2]|0)+4>>2]<<2)>>2]=k[Z>>2]|k[Z+4>>2],k[(k[Z>>2]|0)+(k[Z+4>>2]<<2)>>2]=k[k[B>>2]>>2]|k[(k[B>>2]|0)+4>>2],k[Z+4>>2]=1-(k[Z+4>>2]|0),k[(k[Z>>2]|0)+(k[Z+4>>2]<<2)>>2]=k[Y>>2]|k[Y+4>>2],k[(k[Y>>2]|0)+(k[Y+4>>2]<<2)>>2]=k[Z>>2]|k[Z+4>>2],k[(k[B>>2]|0)+4>>2]=1-(k[(k[B>>2]|0)+4>>2]|0),(k[(k[z>>2]|0)+(k[(k[x>>2]|0)+49696>>2]<<2)>>2]|0)==0):0)k[(k[z>>2]|0)+(k[(k[x>>2]|0)+49696>>2]<<2)>>2]=k[(k[k[B>>2]>>2]|0)+32>>2];if(k[(k[x>>2]|0)+49720>>2]|0){he((k[x>>2]|0)+336|0);B=ke((k[x>>2]|0)+336|0)|0;k[(k[x>>2]|0)+49604>>2]=B;k[k[(k[x>>2]|0)+49604>>2]>>2]=k[E>>2]|k[E+4>>2];k[(k[(k[x>>2]|0)+49604>>2]|0)+4>>2]=7}if((k[(k[y>>2]|0)+116>>2]|0)>2){mta(57894,t)|0;ee(k[x>>2]|0,k[y>>2]|0,H);if(k[na>>2]|0){mta(57918,s)|0;ee(k[x>>2]|0,k[y>>2]|0,J);mta(57939,q)|0;ee(k[x>>2]|0,k[y>>2]|0,M)}mta(57961,o)|0;ee(k[x>>2]|0,k[y>>2]|0,L)}k[E+4>>2]=k[27620+(k[E+4>>2]<<2)>>2]}k[ka>>2]=0;k[aa>>2]=k[(k[E>>2]|0)+((k[27620+(k[E+4>>2]<<2)>>2]|0)+3<<2)>>2];k[ca>>2]=k[aa>>2];k[ba>>2]=k[(k[E>>2]|0)+((k[27632+(k[E+4>>2]<<2)>>2]|0)+3<<2)>>2];while(1){k[ma>>2]=1;if((((k[(k[x>>2]|0)+49716>>2]|0)!=0?(k[ra>>2]=k[(k[E>>2]|0)+(6+(k[E+4>>2]|0)<<2)>>2],k[X+4>>2]=k[ra>>2]&1,k[X>>2]=k[ra>>2]&-4,(k[X>>2]|0)!=(k[(k[x>>2]|0)+49776>>2]|0)):0)?(k[ma>>2]=0,(k[C>>2]|0)!=0):0)?(We(k[x>>2]|0,k[y>>2]|0,X)|0)!=0:0)k[ka>>2]=1;do if(k[ma>>2]|0){k[qa>>2]=k[(k[E>>2]|0)+(k[E+4>>2]<<2)>>2];k[F+4>>2]=k[qa>>2]&3;k[F>>2]=k[qa>>2]^k[F+4>>2];if((k[F>>2]|0)==(k[(k[x>>2]|0)+49768>>2]|0)){k[ma>>2]=0;break}k[fa>>2]=k[(k[F>>2]|0)+((k[F+4>>2]|0)+3<<2)>>2];a:do if(((k[ba>>2]|0)!=(k[(k[x>>2]|0)+49756>>2]|0)?(k[ba>>2]|0)!=(k[(k[x>>2]|0)+49760>>2]|0):0)?(k[ba>>2]|0)!=(k[(k[x>>2]|0)+49764>>2]|0):0){if(((k[ca>>2]|0)!=(k[(k[x>>2]|0)+49756>>2]|0)?(k[ca>>2]|0)!=(k[(k[x>>2]|0)+49760>>2]|0):0)?(k[ca>>2]|0)!=(k[(k[x>>2]|0)+49764>>2]|0):0){do if((k[fa>>2]|0)!=(k[(k[x>>2]|0)+49756>>2]|0)?(k[fa>>2]|0)!=(k[(k[x>>2]|0)+49760>>2]|0):0){if((k[fa>>2]|0)==(k[(k[x>>2]|0)+49764>>2]|0))break;L=+Ke(k[x>>2]|0,k[y>>2]|0,k[ba>>2]|0,k[z>>2]|0,k[ca>>2]|0,k[fa>>2]|0)>0.0&1;k[ma>>2]=L;break a}while(0);k[ma>>2]=0;break}L=+Ie(k[x>>2]|0,k[y>>2]|0,k[fa>>2]|0,k[ba>>2]|0,k[z>>2]|0)>0.0&1;k[ma>>2]=L}else wa=79;while(0);if((wa|0)==79){wa=0;L=+Ie(k[x>>2]|0,k[y>>2]|0,k[z>>2]|0,k[ca>>2]|0,k[fa>>2]|0)>0.0&1;k[ma>>2]=L}if(k[ma>>2]|0){k[I>>2]=k[F>>2];k[I+4>>2]=k[27632+(k[F+4>>2]<<2)>>2];k[qa>>2]=k[(k[I>>2]|0)+(k[I+4>>2]<<2)>>2];k[P+4>>2]=k[qa>>2]&3;k[P>>2]=k[qa>>2]^k[P+4>>2];k[J>>2]=k[F>>2];k[J+4>>2]=k[27620+(k[F+4>>2]<<2)>>2];k[qa>>2]=k[(k[J>>2]|0)+(k[J+4>>2]<<2)>>2];k[Q+4>>2]=k[qa>>2]&3;k[Q>>2]=k[qa>>2]^k[Q+4>>2];k[G>>2]=k[E>>2];k[G+4>>2]=k[27620+(k[E+4>>2]<<2)>>2];k[qa>>2]=k[(k[G>>2]|0)+(k[G+4>>2]<<2)>>2];k[N+4>>2]=k[qa>>2]&3;k[N>>2]=k[qa>>2]^k[N+4>>2];k[H>>2]=k[E>>2];k[H+4>>2]=k[27632+(k[E+4>>2]<<2)>>2];k[qa>>2]=k[(k[H>>2]|0)+(k[H+4>>2]<<2)>>2];k[O+4>>2]=k[qa>>2]&3;k[O>>2]=k[qa>>2]^k[O+4>>2];k[(k[I>>2]|0)+(k[I+4>>2]<<2)>>2]=k[N>>2]|k[N+4>>2];k[(k[N>>2]|0)+(k[N+4>>2]<<2)>>2]=k[I>>2]|k[I+4>>2];k[(k[G>>2]|0)+(k[G+4>>2]<<2)>>2]=k[O>>2]|k[O+4>>2];k[(k[O>>2]|0)+(k[O+4>>2]<<2)>>2]=k[G>>2]|k[G+4>>2];k[(k[H>>2]|0)+(k[H+4>>2]<<2)>>2]=k[Q>>2]|k[Q+4>>2];k[(k[Q>>2]|0)+(k[Q+4>>2]<<2)>>2]=k[H>>2]|k[H+4>>2];k[(k[J>>2]|0)+(k[J+4>>2]<<2)>>2]=k[P>>2]|k[P+4>>2];k[(k[P>>2]|0)+(k[P+4>>2]<<2)>>2]=k[J>>2]|k[J+4>>2];do if(k[(k[x>>2]|0)+49716>>2]|0){k[ra>>2]=k[(k[I>>2]|0)+(6+(k[I+4>>2]|0)<<2)>>2];k[U+4>>2]=k[ra>>2]&1;k[U>>2]=k[ra>>2]&-4;k[ra>>2]=k[(k[G>>2]|0)+(6+(k[G+4>>2]|0)<<2)>>2];k[S+4>>2]=k[ra>>2]&1;k[S>>2]=k[ra>>2]&-4;k[ra>>2]=k[(k[H>>2]|0)+(6+(k[H+4>>2]|0)<<2)>>2];k[T+4>>2]=k[ra>>2]&1;k[T>>2]=k[ra>>2]&-4;k[ra>>2]=k[(k[J>>2]|0)+(6+(k[J+4>>2]|0)<<2)>>2];k[V+4>>2]=k[ra>>2]&1;k[V>>2]=k[ra>>2]&-4;if((k[U>>2]|0)==(k[(k[x>>2]|0)+49776>>2]|0))k[(k[J>>2]|0)+(6+(k[J+4>>2]|0)<<2)>>2]=k[(k[x>>2]|0)+49776>>2];else{k[(k[J>>2]|0)+(6+(k[J+4>>2]|0)<<2)>>2]=k[U>>2]|k[U+4>>2];k[(k[U>>2]|0)+(6+(k[U+4>>2]|0)<<2)>>2]=k[J>>2]|k[J+4>>2]}if((k[S>>2]|0)==(k[(k[x>>2]|0)+49776>>2]|0))k[(k[I>>2]|0)+(6+(k[I+4>>2]|0)<<2)>>2]=k[(k[x>>2]|0)+49776>>2];else{k[(k[I>>2]|0)+(6+(k[I+4>>2]|0)<<2)>>2]=k[S>>2]|k[S+4>>2];k[(k[S>>2]|0)+(6+(k[S+4>>2]|0)<<2)>>2]=k[I>>2]|k[I+4>>2]}if((k[T>>2]|0)==(k[(k[x>>2]|0)+49776>>2]|0))k[(k[G>>2]|0)+(6+(k[G+4>>2]|0)<<2)>>2]=k[(k[x>>2]|0)+49776>>2];else{k[(k[G>>2]|0)+(6+(k[G+4>>2]|0)<<2)>>2]=k[T>>2]|k[T+4>>2];k[(k[T>>2]|0)+(6+(k[T+4>>2]|0)<<2)>>2]=k[G>>2]|k[G+4>>2]}if((k[V>>2]|0)==(k[(k[x>>2]|0)+49776>>2]|0)){k[(k[H>>2]|0)+(6+(k[H+4>>2]|0)<<2)>>2]=k[(k[x>>2]|0)+49776>>2];break}else{k[(k[H>>2]|0)+(6+(k[H+4>>2]|0)<<2)>>2]=k[V>>2]|k[V+4>>2];k[(k[V>>2]|0)+(6+(k[V+4>>2]|0)<<2)>>2]=k[H>>2]|k[H+4>>2];break}}while(0);k[(k[E>>2]|0)+((k[27620+(k[E+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[fa>>2];k[(k[E>>2]|0)+((k[27632+(k[E+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[z>>2];k[(k[E>>2]|0)+((k[E+4>>2]|0)+3<<2)>>2]=k[ca>>2];k[(k[F>>2]|0)+((k[27620+(k[F+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[z>>2];k[(k[F>>2]|0)+((k[27632+(k[F+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[fa>>2];k[(k[F>>2]|0)+((k[F+4>>2]|0)+3<<2)>>2]=k[ba>>2];k[pa>>2]=0;while(1){if((k[pa>>2]|0)>=(k[(k[x>>2]|0)+49684>>2]|0))break;p[ia>>3]=(+p[(k[F>>2]|0)+((k[(k[x>>2]|0)+49708>>2]|0)+(k[pa>>2]|0)<<3)>>3]+ +p[(k[E>>2]|0)+((k[(k[x>>2]|0)+49708>>2]|0)+(k[pa>>2]|0)<<3)>>3])*.5;p[(k[F>>2]|0)+((k[(k[x>>2]|0)+49708>>2]|0)+(k[pa>>2]|0)<<3)>>3]=+p[ia>>3];p[(k[E>>2]|0)+((k[(k[x>>2]|0)+49708>>2]|0)+(k[pa>>2]|0)<<3)>>3]=+p[ia>>3];k[pa>>2]=(k[pa>>2]|0)+1}if(k[(k[y>>2]|0)+12>>2]|0){if(!(+p[(k[F>>2]|0)+(k[(k[x>>2]|0)+49712>>2]<<3)>>3]<=0.0)?!(+p[(k[E>>2]|0)+(k[(k[x>>2]|0)+49712>>2]<<3)>>3]<=0.0):0)p[ja>>3]=(+p[(k[F>>2]|0)+(k[(k[x>>2]|0)+49712>>2]<<3)>>3]+ +p[(k[E>>2]|0)+(k[(k[x>>2]|0)+49712>>2]<<3)>>3])*.5;else p[ja>>3]=-1.0;p[(k[F>>2]|0)+(k[(k[x>>2]|0)+49712>>2]<<3)>>3]=+p[ja>>3];p[(k[E>>2]|0)+(k[(k[x>>2]|0)+49712>>2]<<3)>>3]=+p[ja>>3]}if(k[(k[x>>2]|0)+49720>>2]|0){L=ke((k[x>>2]|0)+336|0)|0;k[$>>2]=L;k[k[$>>2]>>2]=k[E>>2]|k[E+4>>2];k[(k[$>>2]|0)+4>>2]=k[(k[x>>2]|0)+49604>>2];k[(k[x>>2]|0)+49604>>2]=k[$>>2]}if((k[(k[y>>2]|0)+116>>2]|0)>2){mta(57792,j)|0;k[I+4>>2]=k[27620+(k[I+4>>2]<<2)>>2];ee(k[x>>2]|0,k[y>>2]|0,I);mta(57821,i)|0;ee(k[x>>2]|0,k[y>>2]|0,E)}k[E+4>>2]=k[27632+(k[E+4>>2]<<2)>>2];k[ba>>2]=k[fa>>2]}}while(0);if(k[ma>>2]|0)continue;if(k[D>>2]|0)Xe(k[x>>2]|0,k[y>>2]|0,E);k[E+4>>2]=k[27620+(k[E+4>>2]<<2)>>2];k[qa>>2]=k[(k[E>>2]|0)+(k[E+4>>2]<<2)>>2];k[R+4>>2]=k[qa>>2]&3;k[R>>2]=k[qa>>2]^k[R+4>>2];if((k[ba>>2]|0)==(k[aa>>2]|0))break;if((k[R>>2]|0)==(k[(k[x>>2]|0)+49768>>2]|0))break;k[E>>2]=k[R>>2];k[E+4>>2]=k[27620+(k[R+4>>2]<<2)>>2];k[ca>>2]=k[ba>>2];k[ba>>2]=k[(k[E>>2]|0)+((k[27632+(k[E+4>>2]<<2)>>2]|0)+3<<2)>>2]}k[k[A>>2]>>2]=k[E>>2];k[(k[A>>2]|0)+4>>2]=k[27620+(k[E+4>>2]<<2)>>2];k[(k[x>>2]|0)+49784>>2]=k[E>>2];k[(k[x>>2]|0)+49784+4>>2]=k[27620+(k[E+4>>2]<<2)>>2];k[w>>2]=k[ka>>2];ta=k[w>>2]|0;r=h;return ta|0}function df(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0,H=0,I=0,J=0,K=0,L=0,M=0;h=r;r=r+144|0;i=h+40|0;j=h+8|0;l=h+136|0;m=h+132|0;n=h+128|0;o=h+124|0;q=h+120|0;s=h+116|0;t=h+112|0;u=h+104|0;v=h+96|0;w=h+88|0;x=h+80|0;y=h+76|0;z=h+72|0;A=h+68|0;B=h+64|0;C=h+60|0;D=h+56|0;k[l>>2]=a;k[m>>2]=b;k[n>>2]=c;k[o>>2]=d;k[q>>2]=e;k[s>>2]=f;k[t>>2]=g;k[x>>2]=k[(k[k[o>>2]>>2]|0)+((k[(k[o>>2]|0)+4>>2]|0)+3<<2)>>2];k[y>>2]=k[(k[k[n>>2]>>2]|0)+((k[27632+(k[(k[n>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];if((k[(k[m>>2]|0)+116>>2]|0)>2){mta(58037,h)|0;E=+p[(k[x>>2]|0)+8>>3];F=+p[k[y>>2]>>3];G=+p[(k[y>>2]|0)+8>>3];p[j>>3]=+p[k[x>>2]>>3];p[j+8>>3]=E;p[j+16>>3]=F;p[j+24>>3]=G;mta(58079,j)|0}k[v>>2]=k[k[n>>2]>>2];k[v+4>>2]=k[27632+(k[(k[n>>2]|0)+4>>2]<<2)>>2];k[D>>2]=k[(k[v>>2]|0)+(k[v+4>>2]<<2)>>2];k[v+4>>2]=k[D>>2]&3;k[v>>2]=k[D>>2]^k[v+4>>2];k[A>>2]=k[(k[v>>2]|0)+((k[27632+(k[v+4>>2]<<2)>>2]|0)+3<<2)>>2];k[u>>2]=k[v>>2];k[u+4>>2]=k[v+4>>2];k[B>>2]=1;k[C>>2]=2;while(1){if((k[C>>2]|0)>((k[q>>2]|0)-2|0))break;k[u+4>>2]=k[27632+(k[u+4>>2]<<2)>>2];k[D>>2]=k[(k[u>>2]|0)+(k[u+4>>2]<<2)>>2];k[u+4>>2]=k[D>>2]&3;k[u>>2]=k[D>>2]^k[u+4>>2];k[z>>2]=k[(k[u>>2]|0)+((k[27632+(k[u+4>>2]<<2)>>2]|0)+3<<2)>>2];if(+Ke(k[l>>2]|0,k[m>>2]|0,k[x>>2]|0,k[y>>2]|0,k[A>>2]|0,k[z>>2]|0)>0.0){k[v>>2]=k[u>>2];k[v+4>>2]=k[u+4>>2];k[A>>2]=k[z>>2];k[B>>2]=k[C>>2]}k[C>>2]=(k[C>>2]|0)+1}if((k[(k[m>>2]|0)+116>>2]|0)>2){G=+p[(k[A>>2]|0)+8>>3];p[i>>3]=+p[k[A>>2]>>3];p[i+8>>3]=G;mta(58114,i)|0}if((k[B>>2]|0)>1){k[D>>2]=k[(k[v>>2]|0)+(k[v+4>>2]<<2)>>2];k[w+4>>2]=k[D>>2]&3;k[w>>2]=k[D>>2]^k[w+4>>2];k[w+4>>2]=k[27620+(k[w+4>>2]<<2)>>2];df(k[l>>2]|0,k[m>>2]|0,k[n>>2]|0,w,(k[B>>2]|0)+1|0,1,k[t>>2]|0)}if((k[B>>2]|0)<((k[q>>2]|0)-2|0)){k[D>>2]=k[(k[v>>2]|0)+(k[v+4>>2]<<2)>>2];k[w+4>>2]=k[D>>2]&3;k[w>>2]=k[D>>2]^k[w+4>>2];df(k[l>>2]|0,k[m>>2]|0,v,k[o>>2]|0,(k[q>>2]|0)-(k[B>>2]|0)|0,1,k[t>>2]|0);k[D>>2]=k[(k[w>>2]|0)+(k[w+4>>2]<<2)>>2];k[v+4>>2]=k[D>>2]&3;k[v>>2]=k[D>>2]^k[v+4>>2]}if(!(k[s>>2]|0)){H=k[v>>2]|0;I=k[o>>2]|0;k[I>>2]=H;J=v+4|0;K=k[J>>2]|0;L=k[o>>2]|0;M=L+4|0;k[M>>2]=K;r=h;return}af(k[l>>2]|0,k[m>>2]|0,v);if(!(k[t>>2]|0)){H=k[v>>2]|0;I=k[o>>2]|0;k[I>>2]=H;J=v+4|0;K=k[J>>2]|0;L=k[o>>2]|0;M=L+4|0;k[M>>2]=K;r=h;return}k[D>>2]=k[(k[v>>2]|0)+(k[v+4>>2]<<2)>>2];k[u+4>>2]=k[D>>2]&3;k[u>>2]=k[D>>2]^k[u+4>>2];Xe(k[l>>2]|0,k[m>>2]|0,u);H=k[v>>2]|0;I=k[o>>2]|0;k[I>>2]=H;J=v+4|0;K=k[J>>2]|0;L=k[o>>2]|0;M=L+4|0;k[M>>2]=K;r=h;return}function ef(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0;d=r;r=r+144|0;e=d;f=d+128|0;g=d+124|0;h=d+120|0;i=d+112|0;j=d+104|0;l=d+96|0;m=d+88|0;n=d+80|0;o=d+72|0;q=d+64|0;s=d+56|0;t=d+48|0;u=d+40|0;v=d+32|0;w=d+28|0;x=d+24|0;y=d+20|0;z=d+16|0;k[f>>2]=a;k[g>>2]=b;k[h>>2]=c;k[v>>2]=k[(k[k[h>>2]>>2]|0)+((k[27620+(k[(k[h>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];if((k[(k[g>>2]|0)+116>>2]|0)>1){A=+p[(k[v>>2]|0)+8>>3];p[e>>3]=+p[k[v>>2]>>3];p[e+8>>3]=A;mta(58153,e)|0}ve(k[f>>2]|0,k[v>>2]|0);k[i>>2]=k[k[h>>2]>>2];k[i+4>>2]=k[27632+(k[(k[h>>2]|0)+4>>2]<<2)>>2];k[y>>2]=k[(k[i>>2]|0)+(k[i+4>>2]<<2)>>2];k[i+4>>2]=k[y>>2]&3;k[i>>2]=k[y>>2]^k[i+4>>2];k[x>>2]=1;while(1){if((k[k[h>>2]>>2]|0)==(k[i>>2]|0))B=(k[(k[h>>2]|0)+4>>2]|0)==(k[i+4>>2]|0);else B=0;C=k[x>>2]|0;if(!(B^1))break;k[x>>2]=C+1;k[i+4>>2]=k[27632+(k[i+4>>2]<<2)>>2];k[y>>2]=k[(k[i>>2]|0)+(k[i+4>>2]<<2)>>2];k[i+4>>2]=k[y>>2]&3;k[i>>2]=k[y>>2]^k[i+4>>2]}if((C|0)>3){k[j>>2]=k[k[h>>2]>>2];k[j+4>>2]=k[27632+(k[(k[h>>2]|0)+4>>2]<<2)>>2];k[y>>2]=k[(k[j>>2]|0)+(k[j+4>>2]<<2)>>2];k[j+4>>2]=k[y>>2]&3;k[j>>2]=k[y>>2]^k[j+4>>2];k[y>>2]=k[(k[k[h>>2]>>2]|0)+(k[(k[h>>2]|0)+4>>2]<<2)>>2];k[l+4>>2]=k[y>>2]&3;k[l>>2]=k[y>>2]^k[l+4>>2];k[l+4>>2]=k[27620+(k[l+4>>2]<<2)>>2];df(k[f>>2]|0,k[g>>2]|0,j,l,k[x>>2]|0,0,((k[(k[g>>2]|0)+128>>2]|0)!=0^1)&1)}k[m>>2]=k[k[h>>2]>>2];k[m+4>>2]=k[27632+(k[(k[h>>2]|0)+4>>2]<<2)>>2];k[y>>2]=k[(k[k[h>>2]>>2]|0)+(k[(k[h>>2]|0)+4>>2]<<2)>>2];k[n+4>>2]=k[y>>2]&3;k[n>>2]=k[y>>2]^k[n+4>>2];k[n+4>>2]=k[27632+(k[n+4>>2]<<2)>>2];k[y>>2]=k[(k[n>>2]|0)+(k[n+4>>2]<<2)>>2];k[q+4>>2]=k[y>>2]&3;k[q>>2]=k[y>>2]^k[q+4>>2];k[y>>2]=k[(k[m>>2]|0)+(k[m+4>>2]<<2)>>2];k[o+4>>2]=k[y>>2]&3;k[o>>2]=k[y>>2]^k[o+4>>2];k[o+4>>2]=k[27620+(k[o+4>>2]<<2)>>2];k[y>>2]=k[(k[o>>2]|0)+(k[o+4>>2]<<2)>>2];k[s+4>>2]=k[y>>2]&3;k[s>>2]=k[y>>2]^k[s+4>>2];k[(k[k[h>>2]>>2]|0)+(k[(k[h>>2]|0)+4>>2]<<2)>>2]=k[q>>2]|k[q+4>>2];k[(k[q>>2]|0)+(k[q+4>>2]<<2)>>2]=k[k[h>>2]>>2]|k[(k[h>>2]|0)+4>>2];k[(k[m>>2]|0)+(k[m+4>>2]<<2)>>2]=k[s>>2]|k[s+4>>2];k[(k[s>>2]|0)+(k[s+4>>2]<<2)>>2]=k[m>>2]|k[m+4>>2];k[z>>2]=k[(k[n>>2]|0)+(6+(k[n+4>>2]|0)<<2)>>2];k[t+4>>2]=k[z>>2]&1;k[t>>2]=k[z>>2]&-4;if((k[t>>2]|0)!=(k[(k[f>>2]|0)+49776>>2]|0)){k[(k[k[h>>2]>>2]|0)+(6+(k[(k[h>>2]|0)+4>>2]|0)<<2)>>2]=k[t>>2]|k[t+4>>2];k[(k[t>>2]|0)+(6+(k[t+4>>2]|0)<<2)>>2]=k[k[h>>2]>>2]|k[(k[h>>2]|0)+4>>2]}k[z>>2]=k[(k[o>>2]|0)+(6+(k[o+4>>2]|0)<<2)>>2];k[u+4>>2]=k[z>>2]&1;k[u>>2]=k[z>>2]&-4;if((k[u>>2]|0)!=(k[(k[f>>2]|0)+49776>>2]|0)){k[(k[m>>2]|0)+(6+(k[m+4>>2]|0)<<2)>>2]=k[u>>2]|k[u+4>>2];k[(k[u>>2]|0)+(6+(k[u+4>>2]|0)<<2)>>2]=k[m>>2]|k[m+4>>2]}k[w>>2]=k[(k[n>>2]|0)+((k[27620+(k[n+4>>2]<<2)>>2]|0)+3<<2)>>2];k[(k[k[h>>2]>>2]|0)+((k[27620+(k[(k[h>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[w>>2];if(k[(k[g>>2]|0)+128>>2]|0){D=k[f>>2]|0;E=k[n>>2]|0;re(D,E);F=k[f>>2]|0;G=k[o>>2]|0;re(F,G);r=d;return}Xe(k[f>>2]|0,k[g>>2]|0,k[h>>2]|0);D=k[f>>2]|0;E=k[n>>2]|0;re(D,E);F=k[f>>2]|0;G=k[o>>2]|0;re(F,G);r=d;return}function ff(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;c=r;r=r+112|0;d=c+108|0;e=c+104|0;f=c+96|0;g=c+88|0;h=c+80|0;i=c+72|0;j=c+64|0;l=c+56|0;m=c+48|0;n=c+40|0;o=c+32|0;p=c+24|0;q=c+16|0;s=c+12|0;t=c+8|0;u=c+4|0;v=c;k[d>>2]=a;k[e>>2]=b;while(1){if(!(k[(k[d>>2]|0)+49604>>2]|0))break;k[f+4>>2]=k[k[(k[d>>2]|0)+49604>>2]>>2]&3;k[f>>2]=k[k[(k[d>>2]|0)+49604>>2]>>2]^k[f+4>>2];do if(!(k[(k[(k[d>>2]|0)+49604>>2]|0)+4>>2]|0)){k[g>>2]=k[f>>2];k[g+4>>2]=k[27620+(k[f+4>>2]<<2)>>2];k[u>>2]=k[(k[g>>2]|0)+(k[g+4>>2]<<2)>>2];k[g+4>>2]=k[u>>2]&3;k[g>>2]=k[u>>2]^k[g+4>>2];k[g+4>>2]=k[27620+(k[g+4>>2]<<2)>>2];k[h>>2]=k[f>>2];k[h+4>>2]=k[27632+(k[f+4>>2]<<2)>>2];k[u>>2]=k[(k[h>>2]|0)+(k[h+4>>2]<<2)>>2];k[h+4>>2]=k[u>>2]&3;k[h>>2]=k[u>>2]^k[h+4>>2];k[h+4>>2]=k[27632+(k[h+4>>2]<<2)>>2];k[u>>2]=k[(k[g>>2]|0)+(k[g+4>>2]<<2)>>2];k[j+4>>2]=k[u>>2]&3;k[j>>2]=k[u>>2]^k[j+4>>2];k[u>>2]=k[(k[h>>2]|0)+(k[h+4>>2]<<2)>>2];k[l+4>>2]=k[u>>2]&3;k[l>>2]=k[u>>2]^k[l+4>>2];k[s>>2]=k[(k[g>>2]|0)+((k[27632+(k[g+4>>2]<<2)>>2]|0)+3<<2)>>2];k[(k[f>>2]|0)+((k[f+4>>2]|0)+3<<2)>>2]=k[s>>2];k[f+4>>2]=k[27620+(k[f+4>>2]<<2)>>2];k[(k[f>>2]|0)+(k[f+4>>2]<<2)>>2]=k[j>>2]|k[j+4>>2];k[(k[j>>2]|0)+(k[j+4>>2]<<2)>>2]=k[f>>2]|k[f+4>>2];k[v>>2]=k[(k[g>>2]|0)+(6+(k[g+4>>2]|0)<<2)>>2];k[o+4>>2]=k[v>>2]&1;k[o>>2]=k[v>>2]&-4;k[(k[f>>2]|0)+(6+(k[f+4>>2]|0)<<2)>>2]=k[o>>2]|k[o+4>>2];k[(k[o>>2]|0)+(6+(k[o+4>>2]|0)<<2)>>2]=k[f>>2]|k[f+4>>2];k[f+4>>2]=k[27620+(k[f+4>>2]<<2)>>2];k[(k[f>>2]|0)+(k[f+4>>2]<<2)>>2]=k[l>>2]|k[l+4>>2];k[(k[l>>2]|0)+(k[l+4>>2]<<2)>>2]=k[f>>2]|k[f+4>>2];k[v>>2]=k[(k[h>>2]|0)+(6+(k[h+4>>2]|0)<<2)>>2];k[p+4>>2]=k[v>>2]&1;k[p>>2]=k[v>>2]&-4;k[(k[f>>2]|0)+(6+(k[f+4>>2]|0)<<2)>>2]=k[p>>2]|k[p+4>>2];k[(k[p>>2]|0)+(6+(k[p+4>>2]|0)<<2)>>2]=k[f>>2]|k[f+4>>2];re(k[d>>2]|0,k[g>>2]|0);re(k[d>>2]|0,k[h>>2]|0)}else{if((k[(k[(k[d>>2]|0)+49604>>2]|0)+4>>2]|0)!=7){bf(k[d>>2]|0,k[e>>2]|0,f);break}k[n>>2]=k[f>>2];k[n+4>>2]=k[27632+(k[f+4>>2]<<2)>>2];k[u>>2]=k[(k[n>>2]|0)+(k[n+4>>2]<<2)>>2];k[h+4>>2]=k[u>>2]&3;k[h>>2]=k[u>>2]^k[h+4>>2];k[h+4>>2]=k[27620+(k[h+4>>2]<<2)>>2];k[u>>2]=k[(k[h>>2]|0)+(k[h+4>>2]<<2)>>2];k[l+4>>2]=k[u>>2]&3;k[l>>2]=k[u>>2]^k[l+4>>2];k[t>>2]=k[(k[h>>2]|0)+((k[27632+(k[h+4>>2]<<2)>>2]|0)+3<<2)>>2];k[(k[f>>2]|0)+((k[27620+(k[f+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[t>>2];k[(k[n>>2]|0)+(k[n+4>>2]<<2)>>2]=k[l>>2]|k[l+4>>2];k[(k[l>>2]|0)+(k[l+4>>2]<<2)>>2]=k[n>>2]|k[n+4>>2];k[v>>2]=k[(k[h>>2]|0)+(6+(k[h+4>>2]|0)<<2)>>2];k[p+4>>2]=k[v>>2]&1;k[p>>2]=k[v>>2]&-4;k[(k[n>>2]|0)+(6+(k[n+4>>2]|0)<<2)>>2]=k[p>>2]|k[p+4>>2];k[(k[p>>2]|0)+(6+(k[p+4>>2]|0)<<2)>>2]=k[n>>2]|k[n+4>>2];re(k[d>>2]|0,k[h>>2]|0);k[u>>2]=k[(k[f>>2]|0)+(k[f+4>>2]<<2)>>2];k[n+4>>2]=k[u>>2]&3;k[n>>2]=k[u>>2]^k[n+4>>2];if((k[n>>2]|0)!=(k[(k[d>>2]|0)+49768>>2]|0)){k[n+4>>2]=k[27620+(k[n+4>>2]<<2)>>2];k[u>>2]=k[(k[n>>2]|0)+(k[n+4>>2]<<2)>>2];k[i+4>>2]=k[u>>2]&3;k[i>>2]=k[u>>2]^k[i+4>>2];k[i+4>>2]=k[27632+(k[i+4>>2]<<2)>>2];k[u>>2]=k[(k[i>>2]|0)+(k[i+4>>2]<<2)>>2];k[m+4>>2]=k[u>>2]&3;k[m>>2]=k[u>>2]^k[m+4>>2];k[(k[n>>2]|0)+((k[27620+(k[n+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[t>>2];k[(k[n>>2]|0)+(k[n+4>>2]<<2)>>2]=k[m>>2]|k[m+4>>2];k[(k[m>>2]|0)+(k[m+4>>2]<<2)>>2]=k[n>>2]|k[n+4>>2];k[v>>2]=k[(k[i>>2]|0)+(6+(k[i+4>>2]|0)<<2)>>2];k[q+4>>2]=k[v>>2]&1;k[q>>2]=k[v>>2]&-4;k[(k[n>>2]|0)+(6+(k[n+4>>2]|0)<<2)>>2]=k[q>>2]|k[q+4>>2];k[(k[q>>2]|0)+(6+(k[q+4>>2]|0)<<2)>>2]=k[n>>2]|k[n+4>>2];re(k[d>>2]|0,k[i>>2]|0)}k[(k[(k[d>>2]|0)+49604>>2]|0)+4>>2]=0}while(0);k[(k[d>>2]|0)+49604>>2]=k[(k[(k[d>>2]|0)+49604>>2]|0)+4>>2]}r=c;return}function gf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;c=r;r=r+48|0;d=c+36|0;e=c+32|0;f=c+28|0;g=c+24|0;h=c+20|0;i=c+8|0;j=c;l=c+16|0;k[d>>2]=a;k[e>>2]=b;if((k[e>>2]|0)==2){if(!(+p[k[k[d>>2]>>2]>>3]>+p[k[(k[d>>2]|0)+4>>2]>>3])){if(!(+p[k[k[d>>2]>>2]>>3]==+p[k[(k[d>>2]|0)+4>>2]>>3])){r=c;return}if(!(+p[(k[k[d>>2]>>2]|0)+8>>3]>+p[(k[(k[d>>2]|0)+4>>2]|0)+8>>3])){r=c;return}}k[l>>2]=k[(k[d>>2]|0)+4>>2];k[(k[d>>2]|0)+4>>2]=k[k[d>>2]>>2];k[k[d>>2]>>2]=k[l>>2];r=c;return}b=Qe(k[e>>2]|0)|0;k[h>>2]=b;p[i>>3]=+p[k[(k[d>>2]|0)+(k[h>>2]<<2)>>2]>>3];p[j>>3]=+p[(k[(k[d>>2]|0)+(k[h>>2]<<2)>>2]|0)+8>>3];k[f>>2]=-1;k[g>>2]=k[e>>2];while(1){if((k[f>>2]|0)>=(k[g>>2]|0))break;while(1){k[f>>2]=(k[f>>2]|0)+1;if((k[f>>2]|0)>(k[g>>2]|0))break;if(+p[k[(k[d>>2]|0)+(k[f>>2]<<2)>>2]>>3]<+p[i>>3])continue;if(!(+p[k[(k[d>>2]|0)+(k[f>>2]<<2)>>2]>>3]==+p[i>>3]))break;if(!(+p[(k[(k[d>>2]|0)+(k[f>>2]<<2)>>2]|0)+8>>3]<+p[j>>3]))break}while(1){k[g>>2]=(k[g>>2]|0)+-1;if((k[f>>2]|0)>(k[g>>2]|0))break;if(+p[k[(k[d>>2]|0)+(k[g>>2]<<2)>>2]>>3]>+p[i>>3])continue;if(!(+p[k[(k[d>>2]|0)+(k[g>>2]<<2)>>2]>>3]==+p[i>>3]))break;if(!(+p[(k[(k[d>>2]|0)+(k[g>>2]<<2)>>2]|0)+8>>3]>+p[j>>3]))break}if((k[f>>2]|0)>=(k[g>>2]|0))continue;k[l>>2]=k[(k[d>>2]|0)+(k[f>>2]<<2)>>2];k[(k[d>>2]|0)+(k[f>>2]<<2)>>2]=k[(k[d>>2]|0)+(k[g>>2]<<2)>>2];k[(k[d>>2]|0)+(k[g>>2]<<2)>>2]=k[l>>2]}if((k[f>>2]|0)>1)gf(k[d>>2]|0,k[f>>2]|0);if((k[g>>2]|0)>=((k[e>>2]|0)-2|0)){r=c;return}gf((k[d>>2]|0)+((k[g>>2]|0)+1<<2)|0,(k[e>>2]|0)-(k[g>>2]|0)-1|0);r=c;return}function hf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0;e=r;r=r+48|0;f=e+44|0;g=e+40|0;h=e+36|0;i=e+32|0;j=e+28|0;l=e+24|0;m=e+20|0;n=e+8|0;o=e;q=e+16|0;k[f>>2]=a;k[g>>2]=b;k[h>>2]=c;k[i>>2]=d;if((k[g>>2]|0)==2){if(!(+p[(k[k[f>>2]>>2]|0)+(k[i>>2]<<3)>>3]>+p[(k[(k[f>>2]|0)+4>>2]|0)+(k[i>>2]<<3)>>3])){if(!(+p[(k[k[f>>2]>>2]|0)+(k[i>>2]<<3)>>3]==+p[(k[(k[f>>2]|0)+4>>2]|0)+(k[i>>2]<<3)>>3])){r=e;return}if(!(+p[(k[k[f>>2]>>2]|0)+(1-(k[i>>2]|0)<<3)>>3]>+p[(k[(k[f>>2]|0)+4>>2]|0)+(1-(k[i>>2]|0)<<3)>>3])){r=e;return}}k[q>>2]=k[(k[f>>2]|0)+4>>2];k[(k[f>>2]|0)+4>>2]=k[k[f>>2]>>2];k[k[f>>2]>>2]=k[q>>2];r=e;return}d=Qe(k[g>>2]|0)|0;k[m>>2]=d;p[n>>3]=+p[(k[(k[f>>2]|0)+(k[m>>2]<<2)>>2]|0)+(k[i>>2]<<3)>>3];p[o>>3]=+p[(k[(k[f>>2]|0)+(k[m>>2]<<2)>>2]|0)+(1-(k[i>>2]|0)<<3)>>3];k[j>>2]=-1;k[l>>2]=k[g>>2];while(1){if((k[j>>2]|0)>=(k[l>>2]|0))break;while(1){k[j>>2]=(k[j>>2]|0)+1;if((k[j>>2]|0)>(k[l>>2]|0))break;if(+p[(k[(k[f>>2]|0)+(k[j>>2]<<2)>>2]|0)+(k[i>>2]<<3)>>3]<+p[n>>3])continue;if(!(+p[(k[(k[f>>2]|0)+(k[j>>2]<<2)>>2]|0)+(k[i>>2]<<3)>>3]==+p[n>>3]))break;if(!(+p[(k[(k[f>>2]|0)+(k[j>>2]<<2)>>2]|0)+(1-(k[i>>2]|0)<<3)>>3]<+p[o>>3]))break}while(1){k[l>>2]=(k[l>>2]|0)+-1;if((k[j>>2]|0)>(k[l>>2]|0))break;if(+p[(k[(k[f>>2]|0)+(k[l>>2]<<2)>>2]|0)+(k[i>>2]<<3)>>3]>+p[n>>3])continue;if(!(+p[(k[(k[f>>2]|0)+(k[l>>2]<<2)>>2]|0)+(k[i>>2]<<3)>>3]==+p[n>>3]))break;if(!(+p[(k[(k[f>>2]|0)+(k[l>>2]<<2)>>2]|0)+(1-(k[i>>2]|0)<<3)>>3]>+p[o>>3]))break}if((k[j>>2]|0)>=(k[l>>2]|0))continue;k[q>>2]=k[(k[f>>2]|0)+(k[j>>2]<<2)>>2];k[(k[f>>2]|0)+(k[j>>2]<<2)>>2]=k[(k[f>>2]|0)+(k[l>>2]<<2)>>2];k[(k[f>>2]|0)+(k[l>>2]<<2)>>2]=k[q>>2]}if((k[j>>2]|0)>(k[h>>2]|0))hf(k[f>>2]|0,k[j>>2]|0,k[h>>2]|0,k[i>>2]|0);if((k[l>>2]|0)>=((k[h>>2]|0)-1|0)){r=e;return}hf((k[f>>2]|0)+((k[l>>2]|0)+1<<2)|0,(k[g>>2]|0)-(k[l>>2]|0)-1|0,(k[h>>2]|0)-(k[l>>2]|0)-1|0,k[i>>2]|0);r=e;return}function jf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=r;r=r+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;k[e>>2]=a;k[f>>2]=b;k[g>>2]=c;k[h>>2]=k[f>>2]>>1;if((k[f>>2]|0)<=3)k[g>>2]=0;hf(k[e>>2]|0,k[f>>2]|0,k[h>>2]|0,k[g>>2]|0);if(((k[f>>2]|0)-(k[h>>2]|0)|0)<2){r=d;return}if((k[h>>2]|0)>=2)jf(k[e>>2]|0,k[h>>2]|0,1-(k[g>>2]|0)|0);jf((k[e>>2]|0)+(k[h>>2]<<2)|0,(k[f>>2]|0)-(k[h>>2]|0)|0,1-(k[g>>2]|0)|0);r=d;return}function kf(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;h=r;r=r+192|0;i=h+16|0;j=h+8|0;l=h;m=h+184|0;n=h+180|0;o=h+176|0;q=h+172|0;s=h+168|0;t=h+164|0;u=h+160|0;v=h+152|0;w=h+144|0;x=h+136|0;y=h+128|0;z=h+120|0;A=h+112|0;B=h+104|0;C=h+96|0;D=h+92|0;E=h+88|0;F=h+84|0;G=h+80|0;H=h+76|0;I=h+72|0;J=h+68|0;K=h+64|0;L=h+60|0;M=h+56|0;N=h+52|0;O=h+48|0;P=h+44|0;Q=h+40|0;R=h+36|0;S=h+32|0;T=h+28|0;U=h+24|0;V=h+20|0;k[m>>2]=a;k[n>>2]=b;k[o>>2]=c;k[q>>2]=d;k[s>>2]=e;k[t>>2]=f;k[u>>2]=g;k[D>>2]=k[(k[k[q>>2]>>2]|0)+((k[27632+(k[(k[q>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[F>>2]=k[(k[k[q>>2]>>2]|0)+((k[(k[q>>2]|0)+4>>2]|0)+3<<2)>>2];k[E>>2]=k[(k[k[s>>2]>>2]|0)+((k[27620+(k[(k[s>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[G>>2]=k[(k[k[s>>2]>>2]|0)+((k[(k[s>>2]|0)+4>>2]|0)+3<<2)>>2];a:do if((k[u>>2]|0)==1?(k[(k[n>>2]|0)+100>>2]|0)!=0:0){k[H>>2]=k[(k[k[o>>2]>>2]|0)+((k[27620+(k[(k[o>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[J>>2]=k[(k[k[o>>2]>>2]|0)+((k[(k[o>>2]|0)+4>>2]|0)+3<<2)>>2];k[I>>2]=k[(k[k[t>>2]>>2]|0)+((k[27632+(k[(k[t>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[K>>2]=k[(k[k[t>>2]>>2]|0)+((k[(k[t>>2]|0)+4>>2]|0)+3<<2)>>2];while(1){if(!(+p[(k[J>>2]|0)+8>>3]<+p[(k[H>>2]|0)+8>>3]))break;k[(k[o>>2]|0)+4>>2]=k[27620+(k[(k[o>>2]|0)+4>>2]<<2)>>2];k[V>>2]=k[(k[k[o>>2]>>2]|0)+(k[(k[o>>2]|0)+4>>2]<<2)>>2];k[(k[o>>2]|0)+4>>2]=k[V>>2]&3;k[k[o>>2]>>2]=k[V>>2]^k[(k[o>>2]|0)+4>>2];k[H>>2]=k[J>>2];k[J>>2]=k[(k[k[o>>2]>>2]|0)+((k[(k[o>>2]|0)+4>>2]|0)+3<<2)>>2]}k[V>>2]=k[(k[k[q>>2]>>2]|0)+(k[(k[q>>2]|0)+4>>2]<<2)>>2];k[C+4>>2]=k[V>>2]&3;k[C>>2]=k[V>>2]^k[C+4>>2];k[Q>>2]=k[(k[C>>2]|0)+((k[C+4>>2]|0)+3<<2)>>2];while(1){if(!(+p[(k[Q>>2]|0)+8>>3]>+p[(k[D>>2]|0)+8>>3]))break;k[k[q>>2]>>2]=k[C>>2];k[(k[q>>2]|0)+4>>2]=k[27620+(k[C+4>>2]<<2)>>2];k[F>>2]=k[D>>2];k[D>>2]=k[Q>>2];k[V>>2]=k[(k[k[q>>2]>>2]|0)+(k[(k[q>>2]|0)+4>>2]<<2)>>2];k[C+4>>2]=k[V>>2]&3;k[C>>2]=k[V>>2]^k[C+4>>2];k[Q>>2]=k[(k[C>>2]|0)+((k[C+4>>2]|0)+3<<2)>>2]}while(1){if(!(+p[(k[G>>2]|0)+8>>3]<+p[(k[E>>2]|0)+8>>3]))break;k[(k[s>>2]|0)+4>>2]=k[27620+(k[(k[s>>2]|0)+4>>2]<<2)>>2];k[V>>2]=k[(k[k[s>>2]>>2]|0)+(k[(k[s>>2]|0)+4>>2]<<2)>>2];k[(k[s>>2]|0)+4>>2]=k[V>>2]&3;k[k[s>>2]>>2]=k[V>>2]^k[(k[s>>2]|0)+4>>2];k[E>>2]=k[G>>2];k[G>>2]=k[(k[k[s>>2]>>2]|0)+((k[(k[s>>2]|0)+4>>2]|0)+3<<2)>>2]}k[V>>2]=k[(k[k[t>>2]>>2]|0)+(k[(k[t>>2]|0)+4>>2]<<2)>>2];k[C+4>>2]=k[V>>2]&3;k[C>>2]=k[V>>2]^k[C+4>>2];k[Q>>2]=k[(k[C>>2]|0)+((k[C+4>>2]|0)+3<<2)>>2];while(1){if(!(+p[(k[Q>>2]|0)+8>>3]>+p[(k[I>>2]|0)+8>>3]))break a;k[k[t>>2]>>2]=k[C>>2];k[(k[t>>2]|0)+4>>2]=k[27620+(k[C+4>>2]<<2)>>2];k[K>>2]=k[I>>2];k[I>>2]=k[Q>>2];k[V>>2]=k[(k[k[t>>2]>>2]|0)+(k[(k[t>>2]|0)+4>>2]<<2)>>2];k[C+4>>2]=k[V>>2]&3;k[C>>2]=k[V>>2]^k[C+4>>2];k[Q>>2]=k[(k[C>>2]|0)+((k[C+4>>2]|0)+3<<2)>>2]}}while(0);do{k[R>>2]=0;if(+Ie(k[m>>2]|0,k[n>>2]|0,k[D>>2]|0,k[F>>2]|0,k[E>>2]|0)>0.0){k[(k[q>>2]|0)+4>>2]=k[27632+(k[(k[q>>2]|0)+4>>2]<<2)>>2];k[V>>2]=k[(k[k[q>>2]>>2]|0)+(k[(k[q>>2]|0)+4>>2]<<2)>>2];k[(k[q>>2]|0)+4>>2]=k[V>>2]&3;k[k[q>>2]>>2]=k[V>>2]^k[(k[q>>2]|0)+4>>2];k[D>>2]=k[F>>2];k[F>>2]=k[(k[k[q>>2]>>2]|0)+((k[(k[q>>2]|0)+4>>2]|0)+3<<2)>>2];k[R>>2]=1}if(+Ie(k[m>>2]|0,k[n>>2]|0,k[G>>2]|0,k[E>>2]|0,k[D>>2]|0)>0.0){k[(k[s>>2]|0)+4>>2]=k[27620+(k[(k[s>>2]|0)+4>>2]<<2)>>2];k[V>>2]=k[(k[k[s>>2]>>2]|0)+(k[(k[s>>2]|0)+4>>2]<<2)>>2];k[(k[s>>2]|0)+4>>2]=k[V>>2]&3;k[k[s>>2]>>2]=k[V>>2]^k[(k[s>>2]|0)+4>>2];k[E>>2]=k[G>>2];k[G>>2]=k[(k[k[s>>2]>>2]|0)+((k[(k[s>>2]|0)+4>>2]|0)+3<<2)>>2];k[R>>2]=1}}while((k[R>>2]|0)!=0);k[V>>2]=k[(k[k[q>>2]>>2]|0)+(k[(k[q>>2]|0)+4>>2]<<2)>>2];k[v+4>>2]=k[V>>2]&3;k[v>>2]=k[V>>2]^k[v+4>>2];k[V>>2]=k[(k[k[s>>2]>>2]|0)+(k[(k[s>>2]|0)+4>>2]<<2)>>2];k[w+4>>2]=k[V>>2]&3;k[w>>2]=k[V>>2]^k[w+4>>2];Be(k[m>>2]|0,k[n>>2]|0,x);k[(k[x>>2]|0)+(k[x+4>>2]<<2)>>2]=k[k[q>>2]>>2]|k[(k[q>>2]|0)+4>>2];k[(k[k[q>>2]>>2]|0)+(k[(k[q>>2]|0)+4>>2]<<2)>>2]=k[x>>2]|k[x+4>>2];k[x+4>>2]=k[27620+(k[x+4>>2]<<2)>>2];k[(k[x>>2]|0)+(k[x+4>>2]<<2)>>2]=k[k[s>>2]>>2]|k[(k[s>>2]|0)+4>>2];k[(k[k[s>>2]>>2]|0)+(k[(k[s>>2]|0)+4>>2]<<2)>>2]=k[x>>2]|k[x+4>>2];k[x+4>>2]=k[27620+(k[x+4>>2]<<2)>>2];k[(k[x>>2]|0)+((k[27620+(k[x+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[E>>2];k[(k[x>>2]|0)+((k[27632+(k[x+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[D>>2];if((k[(k[n>>2]|0)+116>>2]|0)>2){mta(58181,l)|0;ee(k[m>>2]|0,k[n>>2]|0,x)}k[H>>2]=k[(k[k[o>>2]>>2]|0)+((k[27620+(k[(k[o>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];if((k[D>>2]|0)==(k[H>>2]|0)){k[k[o>>2]>>2]=k[x>>2];k[(k[o>>2]|0)+4>>2]=k[27620+(k[x+4>>2]<<2)>>2]}k[I>>2]=k[(k[k[t>>2]>>2]|0)+((k[27632+(k[(k[t>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];if((k[E>>2]|0)==(k[I>>2]|0)){k[k[t>>2]>>2]=k[x>>2];k[(k[t>>2]|0)+4>>2]=k[27632+(k[x+4>>2]<<2)>>2]}k[L>>2]=k[D>>2];k[M>>2]=k[E>>2];k[N>>2]=k[(k[v>>2]|0)+((k[v+4>>2]|0)+3<<2)>>2];k[O>>2]=k[(k[w>>2]|0)+((k[w+4>>2]|0)+3<<2)>>2];while(1){E=+Ie(k[m>>2]|0,k[n>>2]|0,k[N>>2]|0,k[L>>2]|0,k[M>>2]|0)<=0.0&1;k[T>>2]=E;E=+Ie(k[m>>2]|0,k[n>>2]|0,k[O>>2]|0,k[L>>2]|0,k[M>>2]|0)<=0.0&1;k[U>>2]=E;if((k[T>>2]|0)!=0&(k[U>>2]|0)!=0)break;b:do if((k[T>>2]|0)==0?(k[y>>2]=k[v>>2],k[y+4>>2]=k[27632+(k[v+4>>2]<<2)>>2],k[V>>2]=k[(k[y>>2]|0)+(k[y+4>>2]<<2)>>2],k[y+4>>2]=k[V>>2]&3,k[y>>2]=k[V>>2]^k[y+4>>2],k[P>>2]=k[(k[y>>2]|0)+((k[y+4>>2]|0)+3<<2)>>2],(k[P>>2]|0)!=0):0){E=+Ke(k[m>>2]|0,k[n>>2]|0,k[L>>2]|0,k[M>>2]|0,k[N>>2]|0,k[P>>2]|0)>0.0&1;k[S>>2]=E;while(1){if(!(k[S>>2]|0))break b;k[y+4>>2]=k[27620+(k[y+4>>2]<<2)>>2];k[V>>2]=k[(k[y>>2]|0)+(k[y+4>>2]<<2)>>2];k[A+4>>2]=k[V>>2]&3;k[A>>2]=k[V>>2]^k[A+4>>2];k[y+4>>2]=k[27620+(k[y+4>>2]<<2)>>2];k[V>>2]=k[(k[y>>2]|0)+(k[y+4>>2]<<2)>>2];k[z+4>>2]=k[V>>2]&3;k[z>>2]=k[V>>2]^k[z+4>>2];k[(k[y>>2]|0)+(k[y+4>>2]<<2)>>2]=k[A>>2]|k[A+4>>2];k[(k[A>>2]|0)+(k[A+4>>2]<<2)>>2]=k[y>>2]|k[y+4>>2];k[(k[v>>2]|0)+(k[v+4>>2]<<2)>>2]=k[z>>2]|k[z+4>>2];k[(k[z>>2]|0)+(k[z+4>>2]<<2)>>2]=k[v>>2]|k[v+4>>2];k[v+4>>2]=k[27620+(k[v+4>>2]<<2)>>2];k[V>>2]=k[(k[v>>2]|0)+(k[v+4>>2]<<2)>>2];k[B+4>>2]=k[V>>2]&3;k[B>>2]=k[V>>2]^k[B+4>>2];k[y+4>>2]=k[27632+(k[y+4>>2]<<2)>>2];k[(k[y>>2]|0)+(k[y+4>>2]<<2)>>2]=k[B>>2]|k[B+4>>2];k[(k[B>>2]|0)+(k[B+4>>2]<<2)>>2]=k[y>>2]|k[y+4>>2];k[(k[v>>2]|0)+((k[27620+(k[v+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[L>>2];k[(k[v>>2]|0)+((k[27632+(k[v+4>>2]<<2)>>2]|0)+3<<2)>>2]=0;k[(k[v>>2]|0)+((k[v+4>>2]|0)+3<<2)>>2]=k[P>>2];k[(k[y>>2]|0)+((k[27620+(k[y+4>>2]<<2)>>2]|0)+3<<2)>>2]=0;k[(k[y>>2]|0)+((k[27632+(k[y+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[N>>2];k[(k[y>>2]|0)+((k[y+4>>2]|0)+3<<2)>>2]=k[P>>2];k[N>>2]=k[P>>2];k[y>>2]=k[z>>2];k[y+4>>2]=k[z+4>>2];k[P>>2]=k[(k[y>>2]|0)+((k[y+4>>2]|0)+3<<2)>>2];if(k[P>>2]|0){E=+Ke(k[m>>2]|0,k[n>>2]|0,k[L>>2]|0,k[M>>2]|0,k[N>>2]|0,k[P>>2]|0)>0.0&1;k[S>>2]=E;continue}else{k[S>>2]=0;continue}}}while(0);c:do if((k[U>>2]|0)==0?(k[y>>2]=k[w>>2],k[y+4>>2]=k[27620+(k[w+4>>2]<<2)>>2],k[V>>2]=k[(k[y>>2]|0)+(k[y+4>>2]<<2)>>2],k[y+4>>2]=k[V>>2]&3,k[y>>2]=k[V>>2]^k[y+4>>2],k[P>>2]=k[(k[y>>2]|0)+((k[y+4>>2]|0)+3<<2)>>2],(k[P>>2]|0)!=0):0){E=+Ke(k[m>>2]|0,k[n>>2]|0,k[L>>2]|0,k[M>>2]|0,k[O>>2]|0,k[P>>2]|0)>0.0&1;k[S>>2]=E;while(1){if(!(k[S>>2]|0))break c;k[y+4>>2]=k[27632+(k[y+4>>2]<<2)>>2];k[V>>2]=k[(k[y>>2]|0)+(k[y+4>>2]<<2)>>2];k[A+4>>2]=k[V>>2]&3;k[A>>2]=k[V>>2]^k[A+4>>2];k[y+4>>2]=k[27632+(k[y+4>>2]<<2)>>2];k[V>>2]=k[(k[y>>2]|0)+(k[y+4>>2]<<2)>>2];k[z+4>>2]=k[V>>2]&3;k[z>>2]=k[V>>2]^k[z+4>>2];k[(k[y>>2]|0)+(k[y+4>>2]<<2)>>2]=k[A>>2]|k[A+4>>2];k[(k[A>>2]|0)+(k[A+4>>2]<<2)>>2]=k[y>>2]|k[y+4>>2];k[(k[w>>2]|0)+(k[w+4>>2]<<2)>>2]=k[z>>2]|k[z+4>>2];k[(k[z>>2]|0)+(k[z+4>>2]<<2)>>2]=k[w>>2]|k[w+4>>2];k[w+4>>2]=k[27632+(k[w+4>>2]<<2)>>2];k[V>>2]=k[(k[w>>2]|0)+(k[w+4>>2]<<2)>>2];k[B+4>>2]=k[V>>2]&3;k[B>>2]=k[V>>2]^k[B+4>>2];k[y+4>>2]=k[27620+(k[y+4>>2]<<2)>>2];k[(k[y>>2]|0)+(k[y+4>>2]<<2)>>2]=k[B>>2]|k[B+4>>2];k[(k[B>>2]|0)+(k[B+4>>2]<<2)>>2]=k[y>>2]|k[y+4>>2];k[(k[w>>2]|0)+((k[27620+(k[w+4>>2]<<2)>>2]|0)+3<<2)>>2]=0;k[(k[w>>2]|0)+((k[27632+(k[w+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[M>>2];k[(k[w>>2]|0)+((k[w+4>>2]|0)+3<<2)>>2]=k[P>>2];k[(k[y>>2]|0)+((k[27620+(k[y+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[O>>2];k[(k[y>>2]|0)+((k[27632+(k[y+4>>2]<<2)>>2]|0)+3<<2)>>2]=0;k[(k[y>>2]|0)+((k[y+4>>2]|0)+3<<2)>>2]=k[P>>2];k[O>>2]=k[P>>2];k[y>>2]=k[z>>2];k[y+4>>2]=k[z+4>>2];k[P>>2]=k[(k[y>>2]|0)+((k[y+4>>2]|0)+3<<2)>>2];if(k[P>>2]|0){E=+Ke(k[m>>2]|0,k[n>>2]|0,k[L>>2]|0,k[M>>2]|0,k[O>>2]|0,k[P>>2]|0)>0.0&1;k[S>>2]=E;continue}else{k[S>>2]=0;continue}}}while(0);do if(k[T>>2]|0)W=52;else{if((k[U>>2]|0)==0?+Ke(k[m>>2]|0,k[n>>2]|0,k[N>>2]|0,k[L>>2]|0,k[M>>2]|0,k[O>>2]|0)>0.0:0){W=52;break}k[(k[x>>2]|0)+(k[x+4>>2]<<2)>>2]=k[v>>2]|k[v+4>>2];k[(k[v>>2]|0)+(k[v+4>>2]<<2)>>2]=k[x>>2]|k[x+4>>2];k[x>>2]=k[v>>2];k[x+4>>2]=k[27620+(k[v+4>>2]<<2)>>2];k[(k[x>>2]|0)+((k[27620+(k[x+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[M>>2];k[L>>2]=k[N>>2];k[V>>2]=k[(k[x>>2]|0)+(k[x+4>>2]<<2)>>2];k[v+4>>2]=k[V>>2]&3;k[v>>2]=k[V>>2]^k[v+4>>2];k[N>>2]=k[(k[v>>2]|0)+((k[v+4>>2]|0)+3<<2)>>2]}while(0);if((W|0)==52){W=0;k[(k[x>>2]|0)+(k[x+4>>2]<<2)>>2]=k[w>>2]|k[w+4>>2];k[(k[w>>2]|0)+(k[w+4>>2]<<2)>>2]=k[x>>2]|k[x+4>>2];k[x>>2]=k[w>>2];k[x+4>>2]=k[27632+(k[w+4>>2]<<2)>>2];k[(k[x>>2]|0)+((k[27632+(k[x+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[L>>2];k[M>>2]=k[O>>2];k[V>>2]=k[(k[x>>2]|0)+(k[x+4>>2]<<2)>>2];k[w+4>>2]=k[V>>2]&3;k[w>>2]=k[V>>2]^k[w+4>>2];k[O>>2]=k[(k[w>>2]|0)+((k[w+4>>2]|0)+3<<2)>>2]}if((k[(k[n>>2]|0)+116>>2]|0)<=2)continue;mta(58232,i)|0;ee(k[m>>2]|0,k[n>>2]|0,x)}Be(k[m>>2]|0,k[n>>2]|0,y);k[(k[y>>2]|0)+((k[27620+(k[y+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[L>>2];k[(k[y>>2]|0)+((k[27632+(k[y+4>>2]<<2)>>2]|0)+3<<2)>>2]=k[M>>2];k[(k[y>>2]|0)+(k[y+4>>2]<<2)>>2]=k[x>>2]|k[x+4>>2];k[(k[x>>2]|0)+(k[x+4>>2]<<2)>>2]=k[y>>2]|k[y+4>>2];k[y+4>>2]=k[27620+(k[y+4>>2]<<2)>>2];k[(k[y>>2]|0)+(k[y+4>>2]<<2)>>2]=k[w>>2]|k[w+4>>2];k[(k[w>>2]|0)+(k[w+4>>2]<<2)>>2]=k[y>>2]|k[y+4>>2];k[y+4>>2]=k[27620+(k[y+4>>2]<<2)>>2];k[(k[y>>2]|0)+(k[y+4>>2]<<2)>>2]=k[v>>2]|k[v+4>>2];k[(k[v>>2]|0)+(k[v+4>>2]<<2)>>2]=k[y>>2]|k[y+4>>2];if((k[(k[n>>2]|0)+116>>2]|0)>2){mta(58207,j)|0;ee(k[m>>2]|0,k[n>>2]|0,y)}if(!((k[u>>2]|0)==1?(k[(k[n>>2]|0)+100>>2]|0)!=0:0)){r=h;return}k[H>>2]=k[(k[k[o>>2]>>2]|0)+((k[27620+(k[(k[o>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[J>>2]=k[(k[k[o>>2]>>2]|0)+((k[(k[o>>2]|0)+4>>2]|0)+3<<2)>>2];k[I>>2]=k[(k[k[t>>2]>>2]|0)+((k[27632+(k[(k[t>>2]|0)+4>>2]<<2)>>2]|0)+3<<2)>>2];k[K>>2]=k[(k[k[t>>2]>>2]|0)+((k[(k[t>>2]|0)+4>>2]|0)+3<<2)>>2];k[V>>2]=k[(k[k[o>>2]>>2]|0)+(k[(k[o>>2]|0)+4>>2]<<2)>>2];k[C+4>>2]=k[V>>2]&3;k[C>>2]=k[V>>2]^k[C+4>>2];k[Q>>2]=k[(k[C>>2]|0)+((k[C+4>>2]|0)+3<<2)>>2];while(1){if(!(+p[k[Q>>2]>>3]<+p[k[H>>2]>>3]))break;k[k[o>>2]>>2]=k[C>>2];k[(k[o>>2]|0)+4>>2]=k[27632+(k[C+4>>2]<<2)>>2];k[J>>2]=k[H>>2];k[H>>2]=k[Q>>2];k[V>>2]=k[(k[k[o>>2]>>2]|0)+(k[(k[o>>2]|0)+4>>2]<<2)>>2];k[C+4>>2]=k[V>>2]&3;k[C>>2]=k[V>>2]^k[C+4>>2];k[Q>>2]=k[(k[C>>2]|0)+((k[C+4>>2]|0)+3<<2)>>2]}while(1){if(!(+p[k[K>>2]>>3]>+p[k[I>>2]>>3]))break;k[(k[t>>2]|0)+4>>2]=k[27632+(k[(k[t>>2]|0)+4>>2]<<2)>>2];k[V>>2]=k[(k[k[t>>2]>>2]|0)+(k[(k[t>>2]|0)+4>>2]<<2)>>2];k[(k[t>>2]|0)+4>>2]=k[V>>2]&3;k[k[t>>2]>>2]=k[V>>2]^k[(k[t>>2]|0)+4>>2];k[I>>2]=k[K>>2];k[K>>2]=k[(k[k[t>>2]>>2]|0)+((k[(k[t>>2]|0)+4>>2]|0)+3<<2)>>2]}r=h;return}
+function Xia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0;c=r;r=r+576|0;d=c+560|0;e=c+556|0;f=c+552|0;g=c+548|0;h=c+544|0;i=c+540|0;j=c+536|0;l=c+528|0;m=c+524|0;n=c+520|0;o=c+360|0;q=c+508|0;s=c+496|0;t=c+344|0;u=c+208|0;v=c+60|0;w=c+48|0;x=c+36|0;y=c+72|0;z=c+24|0;A=c+12|0;C=c;k[e>>2]=0;k[f>>2]=0;k[h>>2]=0;k[i>>2]=0;D=a+44|0;cO(k[D>>2]|0,l,6);cO(k[D>>2]|0,m,7);cO(k[D>>2]|0,n,5);E=vY()|0;F=(k[l>>2]|0)==(k[m>>2]|0);G=nO(k[D>>2]|0,4)|0;H=(G|0)==0;do if(F){if(!H?(ura(G,208,2088,0)|0)!=0:0)break;I=o+56|0;J=o+4|0;k[o>>2]=27524;k[I>>2]=27544;B=0;wa(508,o+56|0,J|0);K=B;B=0;if(K&1){K=Rb()|0;L=Q;M=K;vva(I);Qb(M|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[I>>2]=27488;B=0;va(448,J|0);K=B;B=0;do if(K&1){N=Rb()|0;O=Q;P=N}else{k[J>>2]=27560;N=o+36|0;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;k[o+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,J|0,d|0);R=B;B=0;if(R&1){R=Rb()|0;S=Q;Yua(d);Yua(N);Ava(J);O=S;P=R;break}Yua(d);B=0;R=Ia(40,o|0,137252,76)|0;S=B;B=0;a:do if(!(S&1)?(B=0,Xa(239,R|0,0)|0,T=B,B=0,!(T&1)):0){T=Ab(20)|0;B=0;eb(502,q|0,137329,74);U=B;B=0;do if(!(U&1)){B=0;eb(502,s|0,137404,15);V=B;B=0;if(V&1){V=Rb()|0;W=Q;Yua(q);X=W;Y=V;break}B=0;wa(510,t|0,J|0);V=B;B=0;if(V&1){V=Rb()|0;Z=Q;_=V;$=1}else{B=0;ua(163,T|0,q|0,s|0,113,t|0);V=B;B=0;if(V&1)aa=1;else{B=0;eb(503,T|0,1240,229);B=0;aa=0}V=Rb()|0;W=Q;Yua(t);Z=W;_=V;$=aa}Yua(s);Yua(q);if($){X=Z;Y=_}else{ba=Z;ca=_;break a}}else{V=Rb()|0;X=Q;Y=V}while(0);zb(T|0);ba=X;ca=Y}else da=19;while(0);if((da|0)==19){R=Rb()|0;ba=Q;ca=R}k[o>>2]=27468;k[I>>2]=27488;k[J>>2]=27560;Yua(N);Ava(J);vva(I);ea=ba;fa=ca;Qb(fa|0)}while(0);L=O;M=P;vva(I);Qb(M|0)}else{if(!H?(ura(G,208,320,0)|0)!=0:0)break;J=u+56|0;K=u+4|0;k[u>>2]=27524;k[J>>2]=27544;B=0;wa(508,u+56|0,K|0);R=B;B=0;if(R&1){R=Rb()|0;ga=Q;ha=R;vva(J);Qb(ha|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[J>>2]=27488;B=0;va(448,K|0);R=B;B=0;do if(R&1){S=Rb()|0;ia=Q;ja=S}else{k[K>>2]=27560;S=u+36|0;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;k[u+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,K|0,d|0);U=B;B=0;if(U&1){U=Rb()|0;V=Q;Yua(d);Yua(S);Ava(K);ia=V;ja=U;break}Yua(d);B=0;U=Ia(40,u|0,137252,76)|0;V=B;B=0;b:do if(!(V&1)?(B=0,Xa(239,U|0,0)|0,W=B,B=0,!(W&1)):0){W=Ab(20)|0;B=0;eb(502,v|0,137329,74);ka=B;B=0;do if(!(ka&1)){B=0;eb(502,w|0,137404,15);la=B;B=0;if(la&1){la=Rb()|0;ma=Q;Yua(v);na=ma;oa=la;break}B=0;wa(510,x|0,K|0);la=B;B=0;if(la&1){la=Rb()|0;pa=1;qa=la;ra=Q}else{B=0;ua(163,W|0,v|0,w|0,118,x|0);la=B;B=0;if(la&1)sa=1;else{B=0;eb(503,W|0,1240,229);B=0;sa=0}la=Rb()|0;ma=Q;Yua(x);pa=sa;qa=la;ra=ma}Yua(w);Yua(v);if(pa){na=ra;oa=qa}else{ta=qa;xa=ra;break b}}else{ma=Rb()|0;na=Q;oa=ma}while(0);zb(W|0);ta=oa;xa=na}else da=45;while(0);if((da|0)==45){U=Rb()|0;ta=U;xa=Q}k[u>>2]=27468;k[J>>2]=27488;k[K>>2]=27560;Yua(S);Ava(K);vva(J);ea=xa;fa=ta;Qb(fa|0)}while(0);ga=ia;ha=ja;vva(J);Qb(ha|0)}while(0);if((k[l>>2]|0)!=(k[m>>2]|0)){ha=nn(k[a+28>>2]|0)|0;k[j>>2]=ha;UZ(e,a,b,629)}ha=(E|0)==0;do if(ha){E=k[l>>2]|0;if((E|0)!=(k[m>>2]|0)){za=0;Aa=0;break}ja=(k[n>>2]|0)+-1|0;ia=ja>>>0>1073741823?-1:ja<<2;ja=Rqa(ia)|0;ga=Rqa(ia)|0;if((E|0)>0){E=0;do{ia=k[ga+(E<<2)>>2]|0;ta=Rqa(ia>>>0>536870911?-1:ia<<3)|0;k[ja+(E<<2)>>2]=ta;E=E+1|0}while((E|0)<(k[m>>2]|0));za=ja;Aa=ga}else{za=ja;Aa=ga}}else{za=0;Aa=0}while(0);c:do if((k[l>>2]|0)==(k[m>>2]|0)){E=nn(k[a+28>>2]|0)|0;k[j>>2]=E;J=Qqa(8)|0;B=0;va(485,J|0);ta=B;B=0;d:do if(ta&1)da=84;else{do if(k[J>>2]|0){B=0;ia=ya(423,4)|0;xa=B;B=0;if(xa&1){da=84;break d}B=0;eb(505,ia|0,E|0,0);xa=B;B=0;if(xa&1){xa=Rb()|0;u=Q;Sqa(ia);Ba=u;Ca=xa;break d}else{k[J+4>>2]=ia;break}}while(0);kO(k[D>>2]|0,f,g,h,i,1014);S=k[g>>2]|0;if((S|0)==(k[m>>2]|0)){if(ha&(S|0)>0){S=J+4|0;ia=0;do{xa=k[za+(ia<<2)>>2]|0;u=k[(k[f>>2]|0)+(ia<<2)>>2]|0;na=k[(k[h>>2]|0)+(ia<<2)>>2]|0;oa=Rqa(na>>>0>1073741823?-1:na<<2)|0;if((na|0)>0){ra=0;do{k[oa+(ra<<2)>>2]=~~+p[u+(ra<<3)>>3]+-1;ra=ra+1|0}while((ra|0)!=(na|0))}if(k[J>>2]|0){ra=k[k[S>>2]>>2]|0;Dc[k[(k[ra>>2]|0)+16>>2]&255](ra,na,oa,xa,0)}Tqa(oa);ia=ia+1|0}while((ia|0)<(k[m>>2]|0))}if(k[J>>2]|0){ia=k[k[J+4>>2]>>2]|0;Ec[k[(k[ia>>2]|0)+12>>2]&1023](ia)}VZ(a,J,b,629);Da=J;break c}ia=y+56|0;S=y+4|0;k[y>>2]=27524;k[ia>>2]=27544;B=0;wa(508,y+56|0,S|0);ra=B;B=0;if(ra&1){ra=Rb()|0;Ea=Q;Fa=ra;vva(ia);Qb(Fa|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[ia>>2]=27488;B=0;va(448,S|0);ra=B;B=0;do if(ra&1){u=Rb()|0;Ga=Q;Ha=u}else{k[S>>2]=27560;u=y+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[y+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,S|0,d|0);W=B;B=0;if(W&1){W=Rb()|0;qa=Q;Yua(d);Yua(u);Ava(S);Ga=qa;Ha=W;break}Yua(d);B=0;W=Ia(40,y|0,137420,98)|0;qa=B;B=0;e:do if(!(qa&1)?(B=0,Xa(239,W|0,0)|0,pa=B,B=0,!(pa&1)):0){pa=Ab(20)|0;B=0;eb(502,z|0,137329,74);v=B;B=0;do if(!(v&1)){B=0;eb(502,A|0,137404,15);w=B;B=0;if(w&1){w=Rb()|0;sa=Q;Yua(z);Ja=sa;Ka=w;break}B=0;wa(510,C|0,S|0);w=B;B=0;if(w&1){w=Rb()|0;La=1;Ma=w;Na=Q}else{B=0;ua(163,pa|0,z|0,A|0,158,C|0);w=B;B=0;if(w&1)Oa=1;else{B=0;eb(503,pa|0,1240,229);B=0;Oa=0}w=Rb()|0;sa=Q;Yua(C);La=Oa;Ma=w;Na=sa}Yua(A);Yua(z);if(La){Ja=Na;Ka=Ma}else{Pa=Ma;Qa=Na;break e}}else{sa=Rb()|0;Ja=Q;Ka=sa}while(0);zb(pa|0);Pa=Ka;Qa=Ja}else da=86;while(0);if((da|0)==86){W=Rb()|0;Pa=W;Qa=Q}k[y>>2]=27468;k[ia>>2]=27488;k[S>>2]=27560;Yua(u);Ava(S);vva(ia);ea=Qa;fa=Pa;Qb(fa|0)}while(0);Ea=Ga;Fa=Ha;vva(ia);Qb(Fa|0)}while(0);if((da|0)==84){E=Rb()|0;Ba=Q;Ca=E}Sqa(J);ea=Ba;fa=Ca;Qb(fa|0)}else Da=0;while(0);if(za){fa=k[n>>2]|0;if((fa|0)>1){Ca=fa;fa=0;while(1){Ba=k[za+(fa<<2)>>2]|0;if(!Ba)Ra=Ca;else{Tqa(Ba);Ra=k[n>>2]|0}fa=fa+1|0;if((fa|0)>=(Ra+-1|0))break;else Ca=Ra}}Tqa(za)}za=k[e>>2]|0;if(za){Tqa(za);k[e>>2]=0}if(Da){if((k[Da>>2]|0)!=0?(e=k[Da+4>>2]|0,(e|0)!=0):0){za=k[e>>2]|0;if(za)Ec[k[(k[za>>2]|0)+4>>2]&1023](za);Sqa(e)}Sqa(Da)}Da=k[f>>2]|0;if(Da){e=k[m>>2]|0;if((e|0)>0){za=Da;Ra=e;e=0;while(1){Ca=k[za+(e<<2)>>2]|0;if(!Ca){Sa=Ra;Ta=za}else{Tqa(Ca);Sa=k[m>>2]|0;Ta=k[f>>2]|0}e=e+1|0;if((e|0)>=(Sa|0)){Ua=Ta;break}else{za=Ta;Ra=Sa}}if(Ua){Va=Ua;da=122}}else{Va=Da;da=122}if((da|0)==122)Tqa(Va);k[f>>2]=0;f=k[h>>2]|0;if(f)Tqa(f);k[h>>2]=0;h=k[i>>2]|0;if(h)Tqa(h);k[i>>2]=0}if(!Aa){r=c;return}Tqa(Aa);r=c;return}function Yia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;c=r;r=r+240|0;d=c+228|0;e=c+224|0;f=c+220|0;g=c+216|0;h=c+212|0;i=c+208|0;j=c+204|0;l=c+196|0;m=c+188|0;n=c+184|0;o=c+40|0;q=c+24|0;s=c+12|0;t=c;k[e>>2]=0;k[f>>2]=0;k[h>>2]=0;k[i>>2]=0;k[l>>2]=0;u=a+44|0;cO(k[u>>2]|0,m,6);cO(k[u>>2]|0,n,7);cO(k[u>>2]|0,c+180|0,5);v=vY()|0;w=k[u>>2]|0;if((k[m>>2]|0)==(k[n>>2]|0))hO(w,l,c+176|0,4);else cO(w,c+200|0,4);if((k[m>>2]|0)==(k[n>>2]|0)){w=nn(k[a+28>>2]|0)|0;k[j>>2]=w;UZ(e,a,b,629)}w=(v|0)==0;a:do if(w){if((k[m>>2]|0)!=(k[n>>2]|0)){v=k[j>>2]|0;x=Rqa(v>>>0>536870911?-1:v<<3)|0;break}kO(k[u>>2]|0,f,g,h,i,1014);v=k[g>>2]|0;if((v|0)==(k[n>>2]|0)){if((v|0)>0)y=0;else{x=0;break}while(1){v=k[(k[h>>2]|0)+(y<<2)>>2]|0;k[j>>2]=v;l=Rqa(v>>>0>536870911?-1:v<<3)|0;z=k[(k[f>>2]|0)+(y<<2)>>2]|0;if((v|0)>0){A=k[e>>2]|0;C=0;do{p[l+(C<<3)>>3]=+p[A+(~~+p[z+(C<<3)>>3]+-1<<3)>>3];C=C+1|0}while((C|0)<(v|0))}y=y+1|0;if((y|0)>=(k[n>>2]|0)){x=l;break a}}}v=o+56|0;C=o+4|0;k[o>>2]=27524;k[v>>2]=27544;B=0;wa(508,o+56|0,C|0);z=B;B=0;if(z&1){z=Rb()|0;D=Q;E=z;vva(v);Qb(E|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[v>>2]=27488;B=0;va(448,C|0);z=B;B=0;do if(z&1){A=Rb()|0;F=Q;G=A}else{k[C>>2]=27560;A=o+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[o+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,C|0,d|0);H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(d);Yua(A);Ava(C);F=I;G=H;break}Yua(d);B=0;H=Ia(40,o|0,137519,99)|0;I=B;B=0;if(!(I&1)?(B=0,Xa(239,H|0,0)|0,H=B,B=0,!(H&1)):0){H=Ab(20)|0;B=0;eb(502,q|0,137329,74);I=B;B=0;do if(!(I&1)){B=0;eb(502,s|0,137619,16);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(q);L=J;M=K;break}B=0;wa(510,t|0,C|0);K=B;B=0;if(K&1){K=Rb()|0;N=K;O=Q;P=1}else{B=0;ua(163,H|0,q|0,s|0,256,t|0);K=B;B=0;if(K&1)R=1;else{B=0;eb(503,H|0,1240,229);B=0;R=0}K=Rb()|0;J=Q;Yua(t);N=K;O=J;P=R}Yua(s);Yua(q);if(P){L=N;M=O}else{S=N;T=O;k[o>>2]=27468;k[v>>2]=27488;k[C>>2]=27560;Yua(A);Ava(C);vva(v);Qb(S|0)}}else{J=Rb()|0;L=J;M=Q}while(0);zb(H|0);S=L;T=M;k[o>>2]=27468;k[v>>2]=27488;k[C>>2]=27560;Yua(A);Ava(C);vva(v);Qb(S|0)}I=Rb()|0;S=I;T=Q;k[o>>2]=27468;k[v>>2]=27488;k[C>>2]=27560;Yua(A);Ava(C);vva(v);Qb(S|0)}while(0);D=F;E=G;vva(v);Qb(E|0)}else x=0;while(0);if((k[m>>2]|0)==(k[n>>2]|0))U=x;else{uY()|0;n=k[j>>2]|0;if(w)V=x;else V=Rqa(n>>>0>536870911?-1:n<<3)|0;uY()|0;WZ(a,V,b,629);U=V}V=k[e>>2]|0;if(V){Tqa(V);k[e>>2]=0}if(U)Tqa(U);U=k[f>>2]|0;if(!U){r=c;return}e=k[g>>2]|0;if((e|0)>0){V=U;b=e;e=0;while(1){a=k[V+(e<<2)>>2]|0;if(!a){W=b;X=V}else{Tqa(a);W=k[g>>2]|0;X=k[f>>2]|0}e=e+1|0;if((e|0)>=(W|0)){Y=X;break}else{V=X;b=W}}if(Y){Z=Y;_=49}}else{Z=U;_=49}if((_|0)==49)Tqa(Z);k[f>>2]=0;f=k[h>>2]|0;if(f)Tqa(f);k[h>>2]=0;h=k[i>>2]|0;if(h)Tqa(h);k[i>>2]=0;r=c;return}function Zia(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0.0,t=0,u=0,v=0;b=r;r=r+32|0;c=b+20|0;d=b+16|0;e=b+12|0;f=b+8|0;g=b;k[d>>2]=0;k[e>>2]=0;k[f>>2]=0;p[g>>3]=0.0;cO(k[a+44>>2]|0,c,478);ioa(d,e,f,k[a+28>>2]|0,1);h=en(k[a+24>>2]|0,k[c>>2]|0,943)|0;c=Qqa(8)|0;B=0;va(485,c|0);i=B;B=0;a:do if(i&1)j=18;else{do if(k[c>>2]|0){B=0;l=ya(423,4)|0;m=B;B=0;if(m&1){j=18;break a}B=0;eb(505,l|0,h|0,0);m=B;B=0;if(m&1){m=Rb()|0;n=Q;Sqa(l);o=n;q=m;break a}else{k[c+4>>2]=l;break}}while(0);ri(a,c,g,k[d>>2]|0,k[e>>2]|0,k[f>>2]|0);s=+ti(a,c);if(k[c>>2]|0){l=k[k[c+4>>2]>>2]|0;Cc[k[(k[l>>2]|0)+56>>2]&63](l,-+p[g>>3]-s)}l=k[a+48>>2]|0;m=Qqa(48)|0;B=0;n=ya(428,l|0)|0;t=B;B=0;if(!(t&1)?(s=-+p[g>>3],k[m>>2]=27904,k[m+4>>2]=n+1,p[m+16>>3]=s,k[m+32>>2]=-9999,p[m+40>>3]=-9999.0,k[m+24>>2]=1,k[m+28>>2]=1,B=0,wa(512,m+8|0,1e3),n=B,B=0,!(n&1)):0){Oo(l,m)|0;l=k[d>>2]|0;if(l)Tqa(l);k[d>>2]=0;l=k[e>>2]|0;if(l)Tqa(l);k[e>>2]=0;l=k[f>>2]|0;if(!l){r=b;return c|0}Tqa(l);r=b;return c|0}l=Rb()|0;n=Q;Sqa(m);u=n;v=l;Qb(v|0)}while(0);if((j|0)==18){j=Rb()|0;o=Q;q=j}Sqa(c);u=o;v=q;Qb(v|0);return 0}function _ia(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0.0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0;c=r;r=r+352|0;d=c+336|0;e=c+332|0;f=c+348|0;g=c+328|0;h=c+8|0;j=c;l=c+324|0;m=c+320|0;n=c+316|0;o=c+168|0;q=c+304|0;s=c+32|0;t=c+16|0;i[f>>0]=1;k[l>>2]=0;k[m>>2]=0;k[n>>2]=0;u=a+44|0;cO(k[u>>2]|0,g,1002);dO(k[u>>2]|0,h,1003);dO(k[u>>2]|0,j,1004);cO(k[u>>2]|0,e,478);ioa(l,m,n,k[a+28>>2]|0,1);u=en(k[a+24>>2]|0,k[e>>2]|0,943)|0;e=Qqa(8)|0;B=0;va(485,e|0);v=B;B=0;do if(v&1)w=52;else{if(k[e>>2]|0){B=0;x=ya(423,4)|0;y=B;B=0;if(y&1){w=52;break}B=0;eb(505,x|0,u|0,0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Sqa(x);A=z;C=y;break}k[e+4>>2]=x;if(k[e>>2]|0){y=k[x>>2]|0;Ec[k[(k[y>>2]|0)+12>>2]&1023](y)}}if(k[b>>2]|0){y=k[k[b+4>>2]>>2]|0;Fc[k[(k[y>>2]|0)+60>>2]&1023](y,k[k[e+4>>2]>>2]|0)}y=Qqa(8)|0;B=0;va(485,y|0);x=B;B=0;do if(x&1)w=54;else{if(k[y>>2]|0){B=0;z=ya(423,4)|0;D=B;B=0;if(D&1){w=54;break}B=0;eb(505,z|0,u|0,0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Sqa(z);F=E;G=D;break}k[y+4>>2]=z;if(k[y>>2]|0){D=k[z>>2]|0;Ec[k[(k[D>>2]|0)+12>>2]&1023](D)}}D=Qqa(8)|0;B=0;va(485,D|0);z=B;B=0;do if(!(z&1)){if(k[D>>2]|0){B=0;E=ya(423,4)|0;H=B;B=0;if(H&1){w=56;break}B=0;eb(505,E|0,u|0,0);H=B;B=0;if(H&1){H=Rb()|0;I=Q;Sqa(E);J=I;K=H;break}k[D+4>>2]=E;if(k[D>>2]|0){H=k[E>>2]|0;Ec[k[(k[H>>2]|0)+12>>2]&1023](H)}}i[f>>0]=0;H=b+4|0;E=e;I=y;L=1;M=1;while(1){if((k[I>>2]|0)!=0?(N=k[I+4>>2]|0,(N|0)!=0):0){O=k[N>>2]|0;if(O)Ec[k[(k[O>>2]|0)+4>>2]&1023](O);Sqa(N)}Sqa(I);N=Qqa(8)|0;B=0;va(485,N|0);O=B;B=0;if(O&1){P=N;w=58;break}if(k[N>>2]|0){B=0;O=ya(423,4)|0;R=B;B=0;if(R&1){P=N;w=58;break}B=0;eb(505,O|0,u|0,0);R=B;B=0;if(R&1){S=N;T=O;w=34;break}k[N+4>>2]=O;if(k[N>>2]|0){R=k[O>>2]|0;Ec[k[(k[R>>2]|0)+12>>2]&1023](R)}}R=Qqa(8)|0;B=0;va(485,R|0);O=B;B=0;if(O&1){U=R;w=60;break}if(k[R>>2]|0){B=0;O=ya(423,4)|0;V=B;B=0;if(V&1){U=R;w=60;break}B=0;eb(505,O|0,u|0,0);V=B;B=0;if(V&1){W=R;X=O;w=41;break}k[R+4>>2]=O;if(k[R>>2]|0){V=k[O>>2]|0;Ec[k[(k[V>>2]|0)+12>>2]&1023](V)}}si(a,R,E,k[l>>2]|0,k[m>>2]|0,k[n>>2]|0,M);if(k[R>>2]|0){V=k[k[R+4>>2]>>2]|0;Ec[k[(k[V>>2]|0)+12>>2]&1023](V)}Y=+ti(a,R);if(k[b>>2]|0){V=k[k[H>>2]>>2]|0;Fc[k[(k[V>>2]|0)+60>>2]&1023](V,k[k[N+4>>2]>>2]|0)}do if(k[N>>2]|0){V=N+4|0;O=k[k[V>>2]>>2]|0;Xc[k[(k[O>>2]|0)+44>>2]&63](O,k[k[R+4>>2]>>2]|0,1.0);if(!(k[N>>2]|0))break;O=k[k[V>>2]>>2]|0;Cc[k[(k[O>>2]|0)+56>>2]&63](O,-Y)}while(0);$ia(f,N,E,+p[h>>3],+p[j>>3]);R=L+1|0;if(i[f>>0]|0){Z=N;_=E;$=L;w=80;break}if((R|0)<(k[g>>2]|0)){O=E;E=N;L=R;M=0;I=O}else{aa=N;ba=E;ca=L;w=63;break}}a:do if((w|0)==34){L=Rb()|0;E=Q;Sqa(T);da=S;ea=E;fa=L;w=59}else if((w|0)==41){L=Rb()|0;E=Q;Sqa(X);ga=W;ha=E;ia=L;w=61}else if((w|0)==58){L=Rb()|0;da=P;ea=Q;fa=L;w=59}else if((w|0)==60){L=Rb()|0;ga=U;ha=Q;ia=L;w=61}else if((w|0)==63){L=o+56|0;E=o+4|0;k[o>>2]=27524;k[L>>2]=27544;B=0;wa(508,o+56|0,E|0);I=B;B=0;if(I&1){I=Rb()|0;ja=Q;ka=I;vva(L);Qb(ka|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[L>>2]=27488;B=0;va(448,E|0);I=B;B=0;do if(I&1){M=Rb()|0;la=Q;ma=M}else{k[E>>2]=27560;M=o+36|0;k[M>>2]=0;k[M+4>>2]=0;k[M+8>>2]=0;k[M+12>>2]=0;k[o+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,E|0,d|0);H=B;B=0;if(H&1){H=Rb()|0;O=Q;Yua(d);Yua(M);Ava(E);la=O;ma=H;break}Yua(d);B=0;H=Ia(40,o|0,147682,43)|0;O=B;B=0;do if(((!(O&1)?(B=0,R=Xa(242,H|0,k[g>>2]|0)|0,V=B,B=0,!(V&1)):0)?(B=0,Ia(40,R|0,148995,11)|0,R=B,B=0,!(R&1)):0)?(B=0,wa(510,q|0,E|0),R=B,B=0,!(R&1)):0){B=0;ya(425,q|0)|0;R=B;B=0;if(R&1){R=Rb()|0;V=Q;Yua(q);na=V;oa=R;break}else{Yua(q);k[o>>2]=27468;k[L>>2]=27488;k[E>>2]=27560;Yua(M);Ava(E);vva(L);i[f>>0]=1;Z=aa;_=ba;$=ca;w=80;break a}}else w=77;while(0);if((w|0)==77){H=Rb()|0;na=Q;oa=H}k[o>>2]=27468;k[L>>2]=27488;k[E>>2]=27560;Yua(M);Ava(E);vva(L);pa=na;qa=oa;Qb(qa|0)}while(0);ja=la;ka=ma;vva(L);Qb(ka|0)}while(0);if((w|0)==59){Sqa(da);pa=ea;qa=fa;Qb(qa|0)}else if((w|0)==61){Sqa(ga);pa=ha;qa=ia;Qb(qa|0)}else if((w|0)==80){b:do if(EY()|0){E=s+56|0;I=s+4|0;k[s>>2]=27524;k[E>>2]=27544;B=0;wa(508,s+56|0,I|0);N=B;B=0;if(N&1){N=Rb()|0;ra=Q;sa=N;vva(E);Qb(sa|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[E>>2]=27488;B=0;va(448,I|0);N=B;B=0;do if(N&1){H=Rb()|0;ta=Q;ua=H}else{k[I>>2]=27560;H=s+36|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;k[s+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,I|0,d|0);O=B;B=0;if(O&1){O=Rb()|0;R=Q;Yua(d);Yua(H);Ava(I);ta=R;ua=O;break}Yua(d);B=0;O=Ia(40,s|0,147767,32)|0;R=B;B=0;do if(!(R&1)?(B=0,V=Xa(242,O|0,$|0)|0,xa=B,B=0,!(xa&1)):0){B=0;Ia(40,V|0,149177,1)|0;V=B;B=0;if(V&1){w=95;break}B=0;wa(510,t|0,I|0);V=B;B=0;if(V&1){w=95;break}B=0;ya(425,t|0)|0;V=B;B=0;if(V&1){V=Rb()|0;xa=Q;Yua(t);za=xa;Aa=V;break}else{Yua(t);k[s>>2]=27468;k[E>>2]=27488;k[I>>2]=27560;Yua(H);Ava(I);vva(E);break b}}else w=95;while(0);if((w|0)==95){O=Rb()|0;za=Q;Aa=O}k[s>>2]=27468;k[E>>2]=27488;k[I>>2]=27560;Yua(H);Ava(I);vva(E);pa=za;qa=Aa;Qb(qa|0)}while(0);ra=ta;sa=ua;vva(E);Qb(sa|0)}while(0);I=k[l>>2]|0;if(I)Tqa(I);k[l>>2]=0;I=k[m>>2]|0;if(I)Tqa(I);k[m>>2]=0;I=k[n>>2]|0;if(I)Tqa(I);k[n>>2]=0;if(!(k[_>>2]|0)){Sqa(_);r=c;return Z|0}I=k[_+4>>2]|0;if(!I){Sqa(_);r=c;return Z|0}N=k[I>>2]|0;if(N)Ec[k[(k[N>>2]|0)+4>>2]&1023](N);Sqa(I);Sqa(_);r=c;return Z|0}}else w=56;while(0);if((w|0)==56){z=Rb()|0;J=Q;K=z}Sqa(D);pa=J;qa=K;Qb(qa|0)}while(0);if((w|0)==54){x=Rb()|0;F=Q;G=x}Sqa(y);pa=F;qa=G;Qb(qa|0)}while(0);if((w|0)==52){w=Rb()|0;A=Q;C=w}Sqa(e);pa=A;qa=C;Qb(qa|0);return 0}function $ia(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0.0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0;f=r;r=r+784|0;g=f+772|0;h=f+600|0;j=f+760|0;l=f+748|0;m=f+736|0;n=f+464|0;o=f+448|0;q=f+312|0;s=f+160|0;u=f+176|0;v=f+12|0;w=f+24|0;x=f;y=Qqa(8)|0;B=0;va(485,y|0);z=B;B=0;if(z&1){z=Rb()|0;Sqa(y);Qb(z|0)}if((k[c>>2]|0)!=0?(z=c+4|0,A=k[z>>2]|0,C=Qqa(4)|0,D=k[A>>2]|0,E=Hc[k[(k[D>>2]|0)+36>>2]&511](D)|0,k[C>>2]=E,D=k[A>>2]|0,Fc[k[(k[D>>2]|0)+60>>2]&1023](D,E),k[y+4>>2]=C,(k[c>>2]|0)!=0):0){E=k[k[z>>2]>>2]|0;Fc[k[(k[E>>2]|0)+60>>2]&1023](E,k[C>>2]|0)}if((k[y>>2]|0)!=0?(C=y+4|0,E=k[k[C>>2]>>2]|0,Xc[k[(k[E>>2]|0)+48>>2]&63](E,k[k[b+4>>2]>>2]|0,-1.0),(k[y>>2]|0)!=0):0){b=k[k[C>>2]>>2]|0;F=+id[k[(k[b>>2]|0)+64>>2]&63](b,1)}else F=0.0;G=+$(+d);p[t>>3]=G;b=k[t+4>>2]|0;C=b>>>0>2146435072|(b|0)==2146435072&(k[t>>2]|0)>>>0>0;if(!C?(k[c>>2]|0)!=0:0){b=k[k[c+4>>2]>>2]|0;H=+id[k[(k[b>>2]|0)+64>>2]&63](b,1)}else H=0.0;G=+$(+F);p[t>>3]=G;b=k[t+4>>2]|0;if(!(b>>>0>2146435072|(b|0)==2146435072&(k[t>>2]|0)>>>0>0)?(G=+$(+H),p[t>>3]=G,b=k[t+4>>2]|0,!(b>>>0>2146435072|(b|0)==2146435072&(k[t>>2]|0)>>>0>0)):0){if((k[y>>2]|0)!=0?(b=k[y+4>>2]|0,(b|0)!=0):0){c=k[b>>2]|0;if(c)Ec[k[(k[c>>2]|0)+4>>2]&1023](c);Sqa(b)}Sqa(y);a:do if(!C){G=F/H;y=EY()|0;if(G<d){if(!y){I=1;break}b=n+56|0;c=n+4|0;k[n>>2]=27524;k[b>>2]=27544;B=0;wa(508,n+56|0,c|0);E=B;B=0;if(E&1){E=Rb()|0;J=Q;K=E;vva(b);Qb(K|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[b>>2]=27488;B=0;va(448,c|0);E=B;B=0;do if(E&1){z=Rb()|0;L=Q;M=z}else{k[c>>2]=27560;z=n+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[n+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,c|0,g|0);D=B;B=0;if(D&1){D=Rb()|0;A=Q;Yua(g);Yua(z);Ava(c);L=A;M=D;break}Yua(g);k[n+(k[(k[n>>2]|0)+-12>>2]|0)+12>>2]=50;D=n+(k[(k[n>>2]|0)+-12>>2]|0)+4|0;k[D>>2]=k[D>>2]&-177|32;B=0;D=Ia(40,n|0,137757,45)|0;A=B;B=0;do if(!(A&1)?(B=0,N=Sa(1,D|0,+(G*100.0))|0,O=B,B=0,!(O&1)):0){B=0;O=Ia(40,N|0,148270,3)|0;N=B;B=0;if(N&1){P=61;break}B=0;N=Sa(1,O|0,+(d*100.0))|0;O=B;B=0;if(O&1){P=61;break}B=0;Ia(40,N|0,148274,3)|0;N=B;B=0;if(N&1){P=61;break}B=0;wa(510,o|0,c|0);N=B;B=0;if(N&1){P=61;break}B=0;ya(425,o|0)|0;N=B;B=0;if(N&1){N=Rb()|0;O=Q;Yua(o);R=O;S=N;break}else{Yua(o);k[n>>2]=27468;k[b>>2]=27488;k[c>>2]=27560;Yua(z);Ava(c);vva(b);I=1;break a}}else P=61;while(0);if((P|0)==61){D=Rb()|0;R=Q;S=D}k[n>>2]=27468;k[b>>2]=27488;k[c>>2]=27560;Yua(z);Ava(c);vva(b);T=R;U=S;Qb(U|0)}while(0);J=L;K=M;vva(b);Qb(K|0)}else{if(!y){I=0;break}c=q+56|0;E=q+4|0;k[q>>2]=27524;k[c>>2]=27544;B=0;wa(508,q+56|0,E|0);D=B;B=0;if(D&1){D=Rb()|0;V=Q;W=D;vva(c);Qb(W|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[c>>2]=27488;B=0;va(448,E|0);D=B;B=0;do if(D&1){A=Rb()|0;X=Q;Y=A}else{k[E>>2]=27560;A=q+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[q+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,E|0,g|0);N=B;B=0;if(N&1){N=Rb()|0;O=Q;Yua(g);Yua(A);Ava(E);X=O;Y=N;break}Yua(g);k[q+(k[(k[q>>2]|0)+-12>>2]|0)+12>>2]=50;N=q+(k[(k[q>>2]|0)+-12>>2]|0)+4|0;k[N>>2]=k[N>>2]&-177|32;B=0;N=Ia(40,q|0,137757,45)|0;O=B;B=0;do if(!(O&1)?(B=0,Z=Sa(1,N|0,+(G*100.0))|0,_=B,B=0,!(_&1)):0){B=0;_=Ia(40,Z|0,148278,3)|0;Z=B;B=0;if(Z&1){P=81;break}B=0;Z=Sa(1,_|0,+(d*100.0))|0;_=B;B=0;if(_&1){P=81;break}B=0;Ia(40,Z|0,148274,3)|0;Z=B;B=0;if(Z&1){P=81;break}B=0;wa(510,s|0,E|0);Z=B;B=0;if(Z&1){P=81;break}B=0;ya(425,s|0)|0;Z=B;B=0;if(Z&1){Z=Rb()|0;_=Q;Yua(s);aa=_;ba=Z;break}else{Yua(s);k[q>>2]=27468;k[c>>2]=27488;k[E>>2]=27560;Yua(A);Ava(E);vva(c);I=0;break a}}else P=81;while(0);if((P|0)==81){N=Rb()|0;aa=Q;ba=N}k[q>>2]=27468;k[c>>2]=27488;k[E>>2]=27560;Yua(A);Ava(E);vva(c);T=aa;U=ba;Qb(U|0)}while(0);V=X;W=Y;vva(c);Qb(W|0)}}else I=1;while(0);d=+$(+e);p[t>>3]=d;W=k[t+4>>2]|0;if(W>>>0>2146435072|(W|0)==2146435072&(k[t>>2]|0)>>>0>0){ca=I;da=ca&1;i[a>>0]=da;r=f;return}W=EY()|0;if(F<e){if(!W){ca=I;da=ca&1;i[a>>0]=da;r=f;return}Y=u+56|0;X=u+4|0;k[u>>2]=27524;k[Y>>2]=27544;B=0;wa(508,u+56|0,X|0);V=B;B=0;if(V&1){V=Rb()|0;ea=Q;fa=V;vva(Y);Qb(fa|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[Y>>2]=27488;B=0;va(448,X|0);V=B;B=0;do if(V&1){ba=Rb()|0;ga=Q;ha=ba}else{k[X>>2]=27560;ba=u+36|0;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;k[u+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,X|0,g|0);aa=B;B=0;if(aa&1){aa=Rb()|0;q=Q;Yua(g);Yua(ba);Ava(X);ga=q;ha=aa;break}Yua(g);k[u+(k[(k[u>>2]|0)+-12>>2]|0)+12>>2]=50;aa=u+(k[(k[u>>2]|0)+-12>>2]|0)+4|0;k[aa>>2]=k[aa>>2]&-177|32;B=0;aa=Ia(40,u|0,137803,37)|0;q=B;B=0;do if(!(q&1)?(B=0,s=Sa(1,aa|0,+F)|0,K=B,B=0,!(K&1)):0){B=0;K=Ia(40,s|0,148270,3)|0;s=B;B=0;if(s&1){P=103;break}B=0;s=Sa(1,K|0,+e)|0;K=B;B=0;if(K&1){P=103;break}B=0;Ia(40,s|0,137841,2)|0;s=B;B=0;if(s&1){P=103;break}B=0;wa(510,v|0,X|0);s=B;B=0;if(s&1){P=103;break}B=0;ya(425,v|0)|0;s=B;B=0;if(s&1){s=Rb()|0;K=Q;Yua(v);ia=K;ja=s;break}Yua(v);k[u>>2]=27468;k[Y>>2]=27488;k[X>>2]=27560;Yua(ba);Ava(X);vva(Y);ca=I;da=ca&1;i[a>>0]=da;r=f;return}else P=103;while(0);if((P|0)==103){aa=Rb()|0;ia=Q;ja=aa}k[u>>2]=27468;k[Y>>2]=27488;k[X>>2]=27560;Yua(ba);Ava(X);vva(Y);T=ia;U=ja;Qb(U|0)}while(0);ea=ga;fa=ha;vva(Y);Qb(fa|0)}else{if(!W){ca=0;da=ca&1;i[a>>0]=da;r=f;return}W=w+56|0;fa=w+4|0;k[w>>2]=27524;k[W>>2]=27544;B=0;wa(508,w+56|0,fa|0);Y=B;B=0;if(Y&1){Y=Rb()|0;ka=Q;la=Y;vva(W);Qb(la|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[W>>2]=27488;B=0;va(448,fa|0);Y=B;B=0;do if(Y&1){ha=Rb()|0;ma=Q;na=ha}else{k[fa>>2]=27560;ha=w+36|0;k[ha>>2]=0;k[ha+4>>2]=0;k[ha+8>>2]=0;k[ha+12>>2]=0;k[w+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,fa|0,g|0);ga=B;B=0;if(ga&1){ga=Rb()|0;ea=Q;Yua(g);Yua(ha);Ava(fa);ma=ea;na=ga;break}Yua(g);k[w+(k[(k[w>>2]|0)+-12>>2]|0)+12>>2]=50;ga=w+(k[(k[w>>2]|0)+-12>>2]|0)+4|0;k[ga>>2]=k[ga>>2]&-177|32;B=0;ga=Ia(40,w|0,137803,37)|0;ea=B;B=0;do if(!(ea&1)?(B=0,ja=Sa(1,ga|0,+F)|0,ia=B,B=0,!(ia&1)):0){B=0;ia=Ia(40,ja|0,148278,3)|0;ja=B;B=0;if(ja&1){P=123;break}B=0;ja=Sa(1,ia|0,+e)|0;ia=B;B=0;if(ia&1){P=123;break}B=0;Ia(40,ja|0,137841,2)|0;ja=B;B=0;if(ja&1){P=123;break}B=0;wa(510,x|0,fa|0);ja=B;B=0;if(ja&1){P=123;break}B=0;ya(425,x|0)|0;ja=B;B=0;if(ja&1){ja=Rb()|0;ia=Q;Yua(x);oa=ia;pa=ja;break}Yua(x);k[w>>2]=27468;k[W>>2]=27488;k[fa>>2]=27560;Yua(ha);Ava(fa);vva(W);ca=0;da=ca&1;i[a>>0]=da;r=f;return}else P=123;while(0);if((P|0)==123){ga=Rb()|0;oa=Q;pa=ga}k[w>>2]=27468;k[W>>2]=27488;k[fa>>2]=27560;Yua(ha);Ava(fa);vva(W);T=oa;U=pa;Qb(U|0)}while(0);ka=ma;la=na;vva(W);Qb(la|0)}}la=h+56|0;W=h+4|0;k[h>>2]=27524;k[la>>2]=27544;B=0;wa(508,h+56|0,W|0);na=B;B=0;if(na&1){na=Rb()|0;qa=Q;ra=na;vva(la);Qb(ra|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[la>>2]=27488;B=0;va(448,W|0);na=B;B=0;do if(na&1){ma=Rb()|0;sa=Q;ta=ma}else{k[W>>2]=27560;ma=h+36|0;k[ma>>2]=0;k[ma+4>>2]=0;k[ma+8>>2]=0;k[ma+12>>2]=0;k[h+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,W|0,g|0);ka=B;B=0;if(ka&1){ka=Rb()|0;pa=Q;Yua(g);Yua(ma);Ava(W);sa=pa;ta=ka;break}Yua(g);B=0;ka=Ia(40,h|0,148282,29)|0;pa=B;B=0;b:do if(!(pa&1)?(B=0,Xa(239,ka|0,0)|0,oa=B,B=0,!(oa&1)):0){oa=Ab(20)|0;B=0;eb(502,j|0,137655,86);fa=B;B=0;do if(!(fa&1)){B=0;eb(502,l|0,137742,14);w=B;B=0;if(w&1){w=Rb()|0;f=Q;Yua(j);xa=f;za=w;break}B=0;wa(510,m|0,W|0);w=B;B=0;if(w&1){w=Rb()|0;Aa=Q;Ba=w;Ca=1}else{B=0;ua(163,oa|0,j|0,l|0,130,m|0);w=B;B=0;if(w&1)Da=1;else{B=0;eb(503,oa|0,1240,229);B=0;Da=0}w=Rb()|0;f=Q;Yua(m);Aa=f;Ba=w;Ca=Da}Yua(l);Yua(j);if(Ca){xa=Aa;za=Ba}else{Ea=Aa;Fa=Ba;break b}}else{w=Rb()|0;xa=Q;za=w}while(0);zb(oa|0);Ea=xa;Fa=za}else P=29;while(0);if((P|0)==29){ka=Rb()|0;Ea=Q;Fa=ka}k[h>>2]=27468;k[la>>2]=27488;k[W>>2]=27560;Yua(ma);Ava(W);vva(la);T=Ea;U=Fa;Qb(U|0)}while(0);qa=sa;ra=ta;vva(la);Qb(ra|0)}function aja(a,b,c){a=a|0;b=b|0;c=c|0;return}function bja(a,b,c){a=a|0;b=b|0;c=c|0;return}function cja(a,b,c){a=a|0;b=b|0;c=c|0;hoa(b,c,998,738,534);return}function dja(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function eja(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0;a=c+56|0;f=k[a>>2]|0;if((f|0)>0){g=c+32|0;h=f;f=0;j=0;while(1){if(!(i[(k[g>>2]|0)+j>>0]|0)){l=h;m=f}else{n=qh(b,f)|0;Uc[k[(k[n>>2]|0)+480>>2]&63](n,j,c,d,e,738);l=k[a>>2]|0;m=f+1|0}j=j+1|0;if((j|0)>=(l|0))break;else{h=l;f=m}}}Zka(c,b,137867,206);Zka(c,b,137888,207);Zka(c,b,137911,208);Zka(c,b,137933,1001);Yka(c,b,137955,999,0.0);return}function fja(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0.0,I=0,J=0.0,K=0.0,L=0.0,M=0.0,N=0,O=0.0,P=0.0,R=0.0,S=0.0,T=0,U=0,V=0,W=0,X=0,Y=0;e=r;r=r+64|0;d=e+52|0;a=e+48|0;f=e+44|0;g=e+56|0;h=e+40|0;j=e+36|0;l=e+32|0;m=e;n=e+28|0;o=e+24|0;q=e+20|0;s=e+16|0;t=e+12|0;u=e+8|0;k[a>>2]=0;k[f>>2]=0;i[g>>0]=0;p[m>>3]=.01;k[o>>2]=0;k[q>>2]=0;k[s>>2]=0;k[t>>2]=0;YN(b,Ika(c,137971,1003)|0);YN(b,Ika(c,137985,1004)|0);YN(b,Ika(c,137999,1002)|0);YN(b,Ika(c,138014,1009)|0);YN(b,Ika(c,138027,1010)|0);Kka(c,g,138027);if(i[g>>0]|0){Qka(c,a,d,0,138042);Qka(c,f,d,0,138056);Pka(c,m,138070);g=~~(180.0/+p[m>>3]+1.0);v=Rqa(g>>>0>536870911?-1:g<<3)|0;w=boa(g,uY()|0)|0;k[h>>2]=w;coa(j,l,w,uY()|0);x=Rqa(w>>>0>536870911?-1:w<<3)|0;w=k[j>>2]|0;y=k[l>>2]|0;a:do if((w|0)<(y|0)){l=k[d>>2]|0;z=l+-1|0;A=k[f>>2]|0;C=A+(z<<3)|0;D=k[a>>2]|0;E=D+(z<<3)|0;F=+p[m>>3];if((l|0)>0){G=0.0;H=0.0;I=w}else{z=w;while(1){J=(+p[C>>3]-+p[E>>3])*.5/+da(+(+(z|0)*F*3.141592653589793/180.0*.5));p[x+(z-w<<3)>>3]=J;z=z+1|0;if((z|0)>=(y|0))break a}}while(1){J=+(I|0)*F*3.141592653589793/180.0;K=(+p[C>>3]-+p[E>>3])*.5/+da(+(J*.5));z=x+(I-w<<3)|0;p[z>>3]=K;L=K;K=G;M=H;N=0;while(1){O=+p[A+(N<<3)>>3]-+p[C>>3]-+p[D+(N<<3)>>3]+ +p[E>>3];switch(N|0){case 0:{P=1.0;break}case 1:{P=+ca(+J);break}default:P=(K*(+((N<<1)+-1|0)*+ca(+J))-M*+(N+-1|0))/+(N|0)}L=O*P+L;p[z>>3]=L;N=N+1|0;if((N|0)==(l|0)){R=P;S=K;break}else{O=K;K=P;M=O}}N=I+1|0;if((N|0)<(y|0)){G=R;H=S;I=N}else break}}while(0);I=wY()|0;y=Rqa(I>>>0>1073741823?-1:I<<2)|0;I=wY()|0;w=Rqa(I>>>0>1073741823?-1:I<<2)|0;dZ(h,1,4,y,1,4,uY()|0)|0;dZ(j,1,4,w,1,4,uY()|0)|0;j=k[h>>2]|0;eZ(x,j,2,v,y,w,2,uY()|0)|0;Tqa(y);Tqa(w);p[v>>3]=+p[v+8>>3];w=Qqa(16)|0;B=0;ib(297,w|0,1012,v|0,g|0);g=B;B=0;if(g&1){g=Rb()|0;y=Q;Sqa(w);T=y;U=g;Qb(U|0)}YN(b,w);w=k[a>>2]|0;if(w)Tqa(w);k[a>>2]=0;a=k[f>>2]|0;if(a)Tqa(a);k[f>>2]=0;Tqa(v);Tqa(x)}Rka(c,q,s,t,u,138084);x=k[q>>2]|0;if(x){v=Qqa(24)|0;B=0;La(31,v|0,1014,x|0,k[u>>2]|0,k[s>>2]|0,k[t>>2]|0);x=B;B=0;if(x&1){x=Rb()|0;f=Q;Sqa(v);T=f;U=x;Qb(U|0)}YN(b,v);v=k[u>>2]|0;x=k[q>>2]|0;if((v|0)>0){f=x;a=v;v=0;while(1){w=k[f+(v<<2)>>2]|0;if(!w){V=a;W=f}else{Tqa(w);V=k[u>>2]|0;W=k[q>>2]|0}v=v+1|0;if((v|0)>=(V|0)){X=W;break}else{f=W;a=V}}}else X=x;if(X)Tqa(X);k[q>>2]=0;q=k[s>>2]|0;if(q)Tqa(q);k[s>>2]=0;s=k[t>>2]|0;if(s)Tqa(s);k[t>>2]=0}Hka(c,o,n,138103);t=Qqa(12)|0;B=0;eb(518,t|0,1016,k[n>>2]|0);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Sqa(t);T=q;U=s;Qb(U|0)}YN(b,t);t=k[n>>2]|0;if(!t){Y=0;Nka(c,o,Y,138103);r=e;return}s=Qqa(16)|0;B=0;ib(294,s|0,1015,k[o>>2]|0,t|0);t=B;B=0;if(t&1){t=Rb()|0;q=Q;Sqa(s);T=q;U=t;Qb(U|0)}else{YN(b,s);Y=k[n>>2]|0;Nka(c,o,Y,138103);r=e;return}}function gja(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,143640,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,138128,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138209,4);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,159,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function hja(a,b){a=a|0;b=b|0;return 0}function ija(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,138214,15)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,138128,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144398,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,166,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function jja(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,138128,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144189,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,169,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function kja(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,138128,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,144203,13);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,172,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0);return 0}function lja(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;c=r;r=r+192|0;b=c+176|0;a=c+40|0;d=c+24|0;e=c+12|0;f=c;c=a+56|0;g=a+4|0;k[a>>2]=27524;k[c>>2]=27544;B=0;wa(508,a+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(c);Qb(j|0)}k[a+128>>2]=0;k[a+132>>2]=-1;k[a>>2]=27468;k[c>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=a+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[a+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;B=0;wa(509,g|0,b|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(b);Yua(l);Ava(g);m=p;n=o;break}Yua(b);B=0;o=Ia(40,a|0,149721,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,138128,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,138230,21);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,175,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[a>>2]=27468;k[c>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(c);Qb(D|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}function mja(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;e=r;r=r+192|0;d=e+176|0;c=e+40|0;b=e+24|0;a=e+12|0;f=e;e=c+56|0;g=c+4|0;k[c>>2]=27524;k[e>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(e);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[e>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,g|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(d);Yua(l);Ava(g);m=p;n=o;break}Yua(d);B=0;o=Ia(40,c|0,144350,19)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,b|0,138128,80);s=B;B=0;do if(!(s&1)){B=0;eb(502,a|0,138252,9);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(b);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,b|0,a|0,178,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(a);Yua(b);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[e>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(e);Qb(D|0)}while(0);i=m;j=n;vva(e);Qb(j|0)}function nja(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;a=Hc[k[(k[c>>2]|0)+172>>2]&511](c)|0;d=Rqa(a>>>0>1073741823?-1:a<<2)|0;Ip(c,d);e=a>>>0>536870911?-1:a<<3;f=Rqa(e)|0;g=(a|0)>0;if(g){h=0;do{p[f+(h<<3)>>3]=+p[b+(k[d+(h<<2)>>2]<<3)>>3];h=h+1|0}while((h|0)!=(a|0))}h=Rqa(e)|0;yp(c,h,999,0.0);if(g)i=0;else{j=k[c>>2]|0;l=j+48|0;m=k[l>>2]|0;rd[m&511](c,999,h,738);Tqa(d);Tqa(f);Tqa(h);return}do{g=h+(i<<3)|0;p[g>>3]=+p[f+(i<<3)>>3]+ +p[g>>3];i=i+1|0}while((i|0)!=(a|0));j=k[c>>2]|0;l=j+48|0;m=k[l>>2]|0;rd[m&511](c,999,h,738);Tqa(d);Tqa(f);Tqa(h);return}function oja(a,b){a=a|0;b=b|0;return}function pja(a){a=a|0;Sqa(a);return}function qja(a){a=a|0;k[a>>2]=40684;k[a+16>>2]=-1;k[a+20>>2]=0;k[a+24>>2]=0;p[a+8>>3]=-9999.0;p[a+32>>3]=-9999.0;return}function rja(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;c=r;r=r+16|0;d=c+4|0;e=c;k[a>>2]=40684;k[d>>2]=0;k[e>>2]=0;f=a+16|0;k[f>>2]=b;Sna(d,e,b);b=k[f>>2]|0;f=b>>>0>536870911?-1:b<<3;g=Rqa(f)|0;k[a+24>>2]=g;h=Rqa(f)|0;k[a+20>>2]=h;f=k[d>>2]|0;if((b|0)<=0){if(f)i=4}else{j=k[e>>2]|0;l=0;do{p[g+(l<<3)>>3]=+p[f+(l<<3)>>3];p[h+(l<<3)>>3]=+p[j+(l<<3)>>3];l=l+1|0}while((l|0)<(b|0));i=4}if((i|0)==4)Tqa(f);k[d>>2]=0;d=k[e>>2]|0;if(!d){m=a+8|0;p[m>>3]=-9999.0;n=a+32|0;p[n>>3]=-9999.0;r=c;return}Tqa(d);m=a+8|0;p[m>>3]=-9999.0;n=a+32|0;p[n>>3]=-9999.0;r=c;return}function sja(a,b){a=a|0;b=+b;var c=0,d=0;k[a>>2]=40684;k[a+16>>2]=1;c=Rqa(8)|0;k[a+24>>2]=c;d=Rqa(8)|0;k[a+20>>2]=d;p[c>>3]=b;p[d>>3]=1.0;p[a+8>>3]=-9999.0;p[a+32>>3]=-9999.0;return}function tja(a){a=a|0;var b=0,c=0;k[a>>2]=40684;b=a+20|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+24|0;a=k[b>>2]|0;if(!a){k[b>>2]=0;return}Tqa(a);k[b>>2]=0;return}function uja(a){a=a|0;var b=0,c=0;k[a>>2]=40684;b=a+20|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=k[a+24>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function vja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0;b=r;r=r+1664|0;c=b+1652|0;d=b+1456|0;e=b+1640|0;f=b+1320|0;g=b+1628|0;h=b+1168|0;i=b+1616|0;j=b+1032|0;l=b+1604|0;m=b+880|0;n=b+1592|0;o=b+728|0;q=b+1304|0;s=b+592|0;t=b+1016|0;u=b+440|0;v=b+864|0;w=b+304|0;x=b+576|0;y=b+168|0;z=b+152|0;A=b+16|0;C=b;D=d+56|0;E=d+4|0;k[d>>2]=27524;k[D>>2]=27544;B=0;wa(508,d+56|0,E|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;H=F;vva(D);Qb(H|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[D>>2]=27488;B=0;va(448,E|0);F=B;B=0;do if(F&1){I=Rb()|0;J=Q;K=I}else{k[E>>2]=27560;I=d+36|0;k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[I+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,E|0,c|0);L=B;B=0;if(L&1){L=Rb()|0;M=Q;Yua(c);Yua(I);Ava(E);J=M;K=L;break}Yua(c);B=0;Ia(40,d|0,138272,10)|0;L=B;B=0;do if(!(L&1)?(B=0,wa(510,e|0,E|0),M=B,B=0,!(M&1)):0){B=0;ya(424,e|0)|0;M=B;B=0;if(M&1){M=Rb()|0;N=Q;Yua(e);O=N;P=M;break}Yua(e);k[d>>2]=27468;k[D>>2]=27488;k[E>>2]=27560;Yua(I);Ava(E);vva(D);M=f+56|0;N=f+4|0;k[f>>2]=27524;k[M>>2]=27544;B=0;wa(508,f+56|0,N|0);R=B;B=0;if(R&1){R=Rb()|0;S=Q;T=R;vva(M);Qb(T|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[M>>2]=27488;B=0;va(448,N|0);R=B;B=0;do if(R&1){U=Rb()|0;V=Q;W=U}else{k[N>>2]=27560;U=f+36|0;k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;k[U+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,N|0,c|0);X=B;B=0;if(X&1){X=Rb()|0;Y=Q;Yua(c);Yua(U);Ava(N);V=Y;W=X;break}Yua(c);B=0;X=Ia(40,f|0,139266,13)|0;Y=B;B=0;do if(((!(Y&1)?(Z=a+16|0,B=0,_=Xa(242,X|0,k[Z>>2]|0)|0,$=B,B=0,!($&1)):0)?(B=0,Ia(40,_|0,149177,1)|0,_=B,B=0,!(_&1)):0)?(B=0,wa(510,g|0,N|0),_=B,B=0,!(_&1)):0){B=0;ya(424,g|0)|0;_=B;B=0;if(_&1){_=Rb()|0;$=Q;Yua(g);aa=$;ba=_;break}Yua(g);k[f>>2]=27468;k[M>>2]=27488;k[N>>2]=27560;Yua(U);Ava(N);vva(M);_=a+20|0;a:do if(!(k[_>>2]|0)){$=o+56|0;ca=o+4|0;k[o>>2]=27524;k[$>>2]=27544;B=0;wa(508,o+56|0,ca|0);da=B;B=0;if(da&1){da=Rb()|0;ea=Q;fa=da;vva($);Qb(fa|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[$>>2]=27488;B=0;va(448,ca|0);da=B;B=0;do if(da&1){ga=Rb()|0;ha=Q;ia=ga}else{k[ca>>2]=27560;ga=o+36|0;k[ga>>2]=0;k[ga+4>>2]=0;k[ga+8>>2]=0;k[ga+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ca|0,c|0);ja=B;B=0;if(ja&1){ja=Rb()|0;ka=Q;Yua(c);Yua(ga);Ava(ca);ha=ka;ia=ja;break}Yua(c);B=0;Ia(40,o|0,139295,15)|0;ja=B;B=0;do if(!(ja&1)){B=0;wa(510,q|0,ca|0);ka=B;B=0;if(ka&1){la=92;break}B=0;ya(424,q|0)|0;ka=B;B=0;if(ka&1){ka=Rb()|0;ma=Q;Yua(q);na=ma;oa=ka;break}else{Yua(q);k[o>>2]=27468;k[$>>2]=27488;k[ca>>2]=27560;Yua(ga);Ava(ca);vva($);break a}}else la=92;while(0);if((la|0)==92){ja=Rb()|0;na=Q;oa=ja}k[o>>2]=27468;k[$>>2]=27488;k[ca>>2]=27560;Yua(ga);Ava(ca);vva($);pa=na;qa=oa;Qb(qa|0)}while(0);ea=ha;fa=ia;vva($);Qb(fa|0)}else{ca=h+56|0;da=h+4|0;k[h>>2]=27524;k[ca>>2]=27544;B=0;wa(508,h+56|0,da|0);ja=B;B=0;if(ja&1){ja=Rb()|0;ra=Q;sa=ja;vva(ca);Qb(sa|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[ca>>2]=27488;B=0;va(448,da|0);ja=B;B=0;do if(ja&1){ka=Rb()|0;ta=Q;ua=ka}else{k[da>>2]=27560;ka=h+36|0;k[ka>>2]=0;k[ka+4>>2]=0;k[ka+8>>2]=0;k[ka+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,da|0,c|0);ma=B;B=0;if(ma&1){ma=Rb()|0;xa=Q;Yua(c);Yua(ka);Ava(da);ta=xa;ua=ma;break}Yua(c);B=0;Ia(40,h|0,139280,14)|0;ma=B;B=0;do if(ma&1)la=54;else{B=0;wa(510,i|0,da|0);xa=B;B=0;if(xa&1){la=54;break}B=0;ya(424,i|0)|0;xa=B;B=0;if(xa&1){xa=Rb()|0;za=Q;Yua(i);Aa=za;Ba=xa;break}Yua(i);k[h>>2]=27468;k[ca>>2]=27488;k[da>>2]=27560;Yua(ka);Ava(da);vva(ca);b:do if((k[Z>>2]|0)>0){xa=j+56|0;za=j+4|0;Ca=j+56|0;Da=j+128|0;Ea=j+132|0;Fa=j+36|0;Ga=j+52|0;Ha=0;while(1){k[j>>2]=27524;k[xa>>2]=27544;B=0;wa(508,Ca|0,za|0);Ja=B;B=0;if(Ja&1){la=61;break}k[Da>>2]=0;k[Ea>>2]=-1;k[j>>2]=27468;k[xa>>2]=27488;B=0;va(448,za|0);Ja=B;B=0;if(Ja&1){la=62;break}k[za>>2]=27560;k[Fa>>2]=0;k[Fa+4>>2]=0;k[Fa+8>>2]=0;k[Fa+12>>2]=0;k[Ga>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,za|0,c|0);Ja=B;B=0;if(Ja&1){la=60;break}Yua(c);B=0;Ja=Ia(40,j|0,149175,1)|0;Ka=B;B=0;if(Ka&1){la=71;break}B=0;Ka=Sa(1,Ja|0,+(+p[(k[_>>2]|0)+(Ha<<3)>>3]))|0;Ja=B;B=0;if(Ja&1){la=71;break}B=0;Ia(40,Ka|0,149177,1)|0;Ka=B;B=0;if(Ka&1){la=71;break}B=0;wa(510,l|0,za|0);Ka=B;B=0;if(Ka&1){la=71;break}B=0;ya(424,l|0)|0;Ka=B;B=0;if(Ka&1){la=72;break}Yua(l);k[j>>2]=27468;k[xa>>2]=27488;k[za>>2]=27560;Yua(Fa);Ava(za);vva(xa);Ha=Ha+1|0;if((Ha|0)>=(k[Z>>2]|0))break b}if((la|0)==60){Ha=Rb()|0;Ga=Q;Yua(c);Yua(Fa);Ava(za);La=Ga;Ma=Ha;la=63}else if((la|0)==61){Ha=Rb()|0;Na=Q;Oa=Ha;vva(xa);Qb(Oa|0)}else if((la|0)==62){Ha=Rb()|0;La=Q;Ma=Ha;la=63}else if((la|0)==71){Ha=Rb()|0;Pa=Q;Qa=Ha;la=73}else if((la|0)==72){Ha=Rb()|0;Ga=Q;Yua(l);Pa=Ga;Qa=Ha;la=73}if((la|0)==63){Na=La;Oa=Ma;vva(xa);Qb(Oa|0)}else if((la|0)==73){k[j>>2]=27468;k[xa>>2]=27488;k[za>>2]=27560;Yua(Fa);Ava(za);vva(xa);pa=Pa;qa=Qa;Qb(qa|0)}}while(0);Ha=m+56|0;Ga=m+4|0;k[m>>2]=27524;k[Ha>>2]=27544;B=0;wa(508,m+56|0,Ga|0);Ea=B;B=0;if(Ea&1){Ea=Rb()|0;Ra=Q;Ta=Ea;vva(Ha);Qb(Ta|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[Ha>>2]=27488;B=0;va(448,Ga|0);Ea=B;B=0;do if(Ea&1){Da=Rb()|0;Ua=Q;Va=Da}else{k[Ga>>2]=27560;Da=m+36|0;k[Da>>2]=0;k[Da+4>>2]=0;k[Da+8>>2]=0;k[Da+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ga|0,c|0);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Ka=Q;Yua(c);Yua(Da);Ava(Ga);Ua=Ka;Va=Ca;break}Yua(c);B=0;Ia(40,m|0,149198,2)|0;Ca=B;B=0;do if(!(Ca&1)){B=0;wa(510,n|0,Ga|0);Ka=B;B=0;if(Ka&1){la=77;break}B=0;ya(424,n|0)|0;Ka=B;B=0;if(Ka&1){Ka=Rb()|0;Ja=Q;Yua(n);Wa=Ja;Ya=Ka;break}else{Yua(n);k[m>>2]=27468;k[Ha>>2]=27488;k[Ga>>2]=27560;Yua(Da);Ava(Ga);vva(Ha);break a}}else la=77;while(0);if((la|0)==77){Ca=Rb()|0;Wa=Q;Ya=Ca}k[m>>2]=27468;k[Ha>>2]=27488;k[Ga>>2]=27560;Yua(Da);Ava(Ga);vva(Ha);pa=Wa;qa=Ya;Qb(qa|0)}while(0);Ra=Ua;Ta=Va;vva(Ha);Qb(Ta|0)}while(0);if((la|0)==54){ma=Rb()|0;Aa=Q;Ba=ma}k[h>>2]=27468;k[ca>>2]=27488;k[da>>2]=27560;Yua(ka);Ava(da);vva(ca);pa=Aa;qa=Ba;Qb(qa|0)}while(0);ra=ta;sa=ua;vva(ca);Qb(sa|0)}while(0);_=a+24|0;c:do if(k[_>>2]|0){da=s+56|0;ja=s+4|0;k[s>>2]=27524;k[da>>2]=27544;B=0;wa(508,s+56|0,ja|0);$=B;B=0;if($&1){$=Rb()|0;Za=Q;_a=$;vva(da);Qb(_a|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[da>>2]=27488;B=0;va(448,ja|0);$=B;B=0;do if($&1){ma=Rb()|0;$a=Q;ab=ma}else{k[ja>>2]=27560;ma=s+36|0;k[ma>>2]=0;k[ma+4>>2]=0;k[ma+8>>2]=0;k[ma+12>>2]=0;k[s+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ja|0,c|0);ga=B;B=0;if(ga&1){ga=Rb()|0;Ga=Q;Yua(c);Yua(ma);Ava(ja);$a=Ga;ab=ga;break}Yua(c);B=0;Ia(40,s|0,139311,14)|0;ga=B;B=0;do if(ga&1)la=118;else{B=0;wa(510,t|0,ja|0);Ga=B;B=0;if(Ga&1){la=118;break}B=0;ya(424,t|0)|0;Ga=B;B=0;if(Ga&1){Ga=Rb()|0;Ea=Q;Yua(t);bb=Ea;cb=Ga;break}Yua(t);k[s>>2]=27468;k[da>>2]=27488;k[ja>>2]=27560;Yua(ma);Ava(ja);vva(da);d:do if((k[Z>>2]|0)>0){Ga=u+56|0;Ea=u+4|0;Ca=u+56|0;xa=u+128|0;za=u+132|0;Fa=u+36|0;Ka=u+52|0;Ja=0;while(1){k[u>>2]=27524;k[Ga>>2]=27544;B=0;wa(508,Ca|0,Ea|0);db=B;B=0;if(db&1){la=125;break}k[xa>>2]=0;k[za>>2]=-1;k[u>>2]=27468;k[Ga>>2]=27488;B=0;va(448,Ea|0);db=B;B=0;if(db&1){la=126;break}k[Ea>>2]=27560;k[Fa>>2]=0;k[Fa+4>>2]=0;k[Fa+8>>2]=0;k[Fa+12>>2]=0;k[Ka>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ea|0,c|0);db=B;B=0;if(db&1){la=124;break}Yua(c);B=0;db=Ia(40,u|0,149175,1)|0;eb=B;B=0;if(eb&1){la=135;break}B=0;eb=Sa(1,db|0,+(+p[(k[_>>2]|0)+(Ja<<3)>>3]))|0;db=B;B=0;if(db&1){la=135;break}B=0;Ia(40,eb|0,149177,1)|0;eb=B;B=0;if(eb&1){la=135;break}B=0;wa(510,v|0,Ea|0);eb=B;B=0;if(eb&1){la=135;break}B=0;ya(424,v|0)|0;eb=B;B=0;if(eb&1){la=136;break}Yua(v);k[u>>2]=27468;k[Ga>>2]=27488;k[Ea>>2]=27560;Yua(Fa);Ava(Ea);vva(Ga);Ja=Ja+1|0;if((Ja|0)>=(k[Z>>2]|0))break d}if((la|0)==124){Ja=Rb()|0;Ka=Q;Yua(c);Yua(Fa);Ava(Ea);fb=Ka;gb=Ja;la=127}else if((la|0)==125){Ja=Rb()|0;hb=Q;ib=Ja;vva(Ga);Qb(ib|0)}else if((la|0)==126){Ja=Rb()|0;fb=Q;gb=Ja;la=127}else if((la|0)==135){Ja=Rb()|0;jb=Q;kb=Ja;la=137}else if((la|0)==136){Ja=Rb()|0;Ka=Q;Yua(v);jb=Ka;kb=Ja;la=137}if((la|0)==127){hb=fb;ib=gb;vva(Ga);Qb(ib|0)}else if((la|0)==137){k[u>>2]=27468;k[Ga>>2]=27488;k[Ea>>2]=27560;Yua(Fa);Ava(Ea);vva(Ga);pa=jb;qa=kb;Qb(qa|0)}}while(0);Ha=w+56|0;Ja=w+4|0;k[w>>2]=27524;k[Ha>>2]=27544;B=0;wa(508,w+56|0,Ja|0);Ka=B;B=0;if(Ka&1){Ka=Rb()|0;lb=Q;mb=Ka;vva(Ha);Qb(mb|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[Ha>>2]=27488;B=0;va(448,Ja|0);Ka=B;B=0;do if(Ka&1){za=Rb()|0;nb=Q;ob=za}else{k[Ja>>2]=27560;za=w+36|0;k[za>>2]=0;k[za+4>>2]=0;k[za+8>>2]=0;k[za+12>>2]=0;k[w+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ja|0,c|0);xa=B;B=0;if(xa&1){xa=Rb()|0;Ca=Q;Yua(c);Yua(za);Ava(Ja);nb=Ca;ob=xa;break}Yua(c);B=0;Ia(40,w|0,149198,2)|0;xa=B;B=0;do if(!(xa&1)){B=0;wa(510,x|0,Ja|0);Ca=B;B=0;if(Ca&1){la=141;break}B=0;ya(424,x|0)|0;Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Da=Q;Yua(x);pb=Da;qb=Ca;break}else{Yua(x);k[w>>2]=27468;k[Ha>>2]=27488;k[Ja>>2]=27560;Yua(za);Ava(Ja);vva(Ha);break c}}else la=141;while(0);if((la|0)==141){xa=Rb()|0;pb=Q;qb=xa}k[w>>2]=27468;k[Ha>>2]=27488;k[Ja>>2]=27560;Yua(za);Ava(Ja);vva(Ha);pa=pb;qa=qb;Qb(qa|0)}while(0);lb=nb;mb=ob;vva(Ha);Qb(mb|0)}while(0);if((la|0)==118){ga=Rb()|0;bb=Q;cb=ga}k[s>>2]=27468;k[da>>2]=27488;k[ja>>2]=27560;Yua(ma);Ava(ja);vva(da);pa=bb;qa=cb;Qb(qa|0)}while(0);Za=$a;_a=ab;vva(da);Qb(_a|0)}while(0);Z=y+56|0;_=y+4|0;k[y>>2]=27524;k[Z>>2]=27544;B=0;wa(508,y+56|0,_|0);ja=B;B=0;if(ja&1){ja=Rb()|0;rb=Q;sb=ja;vva(Z);Qb(sb|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[Z>>2]=27488;B=0;va(448,_|0);ja=B;B=0;do if(ja&1){$=Rb()|0;tb=Q;ub=$}else{k[_>>2]=27560;$=y+36|0;k[$>>2]=0;k[$+4>>2]=0;k[$+8>>2]=0;k[$+12>>2]=0;k[y+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,_|0,c|0);ca=B;B=0;if(ca&1){ca=Rb()|0;ga=Q;Yua(c);Yua($);Ava(_);tb=ga;ub=ca;break}Yua(c);B=0;ca=Ia(40,y|0,139435,12)|0;ga=B;B=0;do if(ga&1)la=171;else{B=0;ka=Sa(1,ca|0,+(+p[a+8>>3]))|0;Ja=B;B=0;if(Ja&1){la=171;break}B=0;Ia(40,ka|0,149177,1)|0;ka=B;B=0;if(ka&1){la=171;break}B=0;wa(510,z|0,_|0);ka=B;B=0;if(ka&1){la=171;break}B=0;ya(424,z|0)|0;ka=B;B=0;if(ka&1){ka=Rb()|0;Ja=Q;Yua(z);vb=Ja;wb=ka;break}Yua(z);k[y>>2]=27468;k[Z>>2]=27488;k[_>>2]=27560;Yua($);Ava(_);vva(Z);ka=A+56|0;Ja=A+4|0;k[A>>2]=27524;k[ka>>2]=27544;B=0;wa(508,A+56|0,Ja|0);Ka=B;B=0;if(Ka&1){Ka=Rb()|0;xb=Q;yb=Ka;vva(ka);Qb(yb|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[ka>>2]=27488;B=0;va(448,Ja|0);Ka=B;B=0;do if(Ka&1){xa=Rb()|0;zb=Q;Ab=xa}else{k[Ja>>2]=27560;xa=A+36|0;k[xa>>2]=0;k[xa+4>>2]=0;k[xa+8>>2]=0;k[xa+12>>2]=0;k[A+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ja|0,c|0);Ga=B;B=0;if(Ga&1){Ga=Rb()|0;Ea=Q;Yua(c);Yua(xa);Ava(Ja);zb=Ea;Ab=Ga;break}Yua(c);B=0;Ga=Ia(40,A|0,139448,12)|0;Ea=B;B=0;do if(!(Ea&1)){B=0;Fa=Sa(1,Ga|0,+(+p[a+32>>3]))|0;Ca=B;B=0;if(Ca&1){la=174;break}B=0;Ia(40,Fa|0,149177,1)|0;Fa=B;B=0;if(Fa&1){la=174;break}B=0;wa(510,C|0,Ja|0);Fa=B;B=0;if(Fa&1){la=174;break}B=0;ya(424,C|0)|0;Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ca=Q;Yua(C);Bb=Ca;Cb=Fa;break}else{Yua(C);k[A>>2]=27468;k[ka>>2]=27488;k[Ja>>2]=27560;Yua(xa);Ava(Ja);vva(ka);r=b;return}}else la=174;while(0);if((la|0)==174){Ga=Rb()|0;Bb=Q;Cb=Ga}k[A>>2]=27468;k[ka>>2]=27488;k[Ja>>2]=27560;Yua(xa);Ava(Ja);vva(ka);pa=Bb;qa=Cb;Qb(qa|0)}while(0);xb=zb;yb=Ab;vva(ka);Qb(yb|0)}while(0);if((la|0)==171){ca=Rb()|0;vb=Q;wb=ca}k[y>>2]=27468;k[Z>>2]=27488;k[_>>2]=27560;Yua($);Ava(_);vva(Z);pa=vb;qa=wb;Qb(qa|0)}while(0);rb=tb;sb=ub;vva(Z);Qb(sb|0)}else la=51;while(0);if((la|0)==51){X=Rb()|0;aa=Q;ba=X}k[f>>2]=27468;k[M>>2]=27488;k[N>>2]=27560;Yua(U);Ava(N);vva(M);pa=aa;qa=ba;Qb(qa|0)}while(0);S=V;T=W;vva(M);Qb(T|0)}else la=48;while(0);if((la|0)==48){L=Rb()|0;O=Q;P=L}k[d>>2]=27468;k[D>>2]=27488;k[E>>2]=27560;Yua(I);Ava(E);vva(D);pa=O;qa=P;Qb(qa|0)}while(0);G=J;H=K;vva(D);Qb(H|0)}function wja(a){a=a|0;return 929}function xja(a,b){a=a|0;b=b|0;p[a+8>>3]=+p[(k[a+20>>2]|0)+(b<<3)>>3];p[a+32>>3]=+p[(k[a+24>>2]|0)+(b<<3)>>3];return}function yja(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;switch(b|0){case 0:{p[a+32>>3]=-1.0;r=c;return}case 1:{p[a+32>>3]=1.0;r=c;return}default:{c=e+56|0;a=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,a|0);b=B;B=0;if(b&1){b=Rb()|0;i=Q;j=b;vva(c);Qb(j|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,a|0);b=B;B=0;do if(b&1){l=Rb()|0;m=Q;n=l}else{k[a>>2]=27560;l=e+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,a|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;q=Q;Yua(d);Yua(l);Ava(a);m=q;n=o;break}Yua(d);B=0;o=Ia(40,e|0,138283,31)|0;q=B;B=0;if(!(q&1)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,f|0,138315,73);q=B;B=0;do if(!(q&1)){B=0;eb(502,g|0,139532,11);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(f);u=t;v=s;break}B=0;wa(510,h|0,a|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,o|0,f|0,g|0,120,h|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,o|0,1240,229);B=0;z=0}s=Rb()|0;t=Q;Yua(h);w=t;x=s;y=z}Yua(g);Yua(f);if(y){u=w;v=x}else{A=w;C=x;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(c);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(o|0);A=u;C=v;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(c);Qb(C|0)}q=Rb()|0;A=Q;C=q;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(c);Qb(C|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}}}function zja(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;d=r;r=r+368|0;e=d+344|0;f=d+208|0;g=d+196|0;h=d+184|0;i=d+36|0;j=d+48|0;l=d+24|0;m=d+12|0;n=d;if((b&-2|0)!=738){o=j+56|0;q=j+4|0;k[j>>2]=27524;k[o>>2]=27544;B=0;wa(508,j+56|0,q|0);s=B;B=0;if(s&1){s=Rb()|0;t=Q;u=s;vva(o);Qb(u|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[o>>2]=27488;B=0;va(448,q|0);s=B;B=0;do if(s&1){v=Rb()|0;w=Q;x=v}else{k[q>>2]=27560;v=j+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[j+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,q|0,e|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(e);Yua(v);Ava(q);w=z;x=y;break}Yua(e);B=0;y=Ia(40,j|0,145867,15)|0;z=B;B=0;a:do if((((!(z&1)?(B=0,A=ya(427,b|0)|0,C=B,B=0,!(C&1)):0)?(C=Lta(A)|0,B=0,D=Ia(40,y|0,A|0,C|0)|0,C=B,B=0,!(C&1)):0)?(B=0,C=Ia(40,D|0,144645,14)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,C|0,0)|0,C=B,B=0,!(C&1)):0){C=Ab(20)|0;B=0;eb(502,l|0,138315,73);D=B;B=0;do if(!(D&1)){B=0;eb(502,m|0,139574,9);A=B;B=0;if(A&1){A=Rb()|0;E=Q;Yua(l);F=A;G=E;break}B=0;wa(510,n|0,q|0);E=B;B=0;if(E&1){E=Rb()|0;H=1;I=Q;J=E}else{B=0;ua(163,C|0,l|0,m|0,138,n|0);E=B;B=0;if(E&1)K=1;else{B=0;eb(503,C|0,1240,229);B=0;K=0}E=Rb()|0;A=Q;Yua(n);H=K;I=A;J=E}Yua(m);Yua(l);if(H){F=J;G=I}else{L=I;M=J;break a}}else{E=Rb()|0;F=E;G=Q}while(0);zb(C|0);L=G;M=F}else N=46;while(0);if((N|0)==46){y=Rb()|0;L=Q;M=y}k[j>>2]=27468;k[o>>2]=27488;k[q>>2]=27560;Yua(v);Ava(q);vva(o);O=L;P=M;Qb(P|0)}while(0);t=w;u=x;vva(o);Qb(u|0)}switch(c|0){case 0:{p[a+32>>3]=-1.0;r=d;return}case 1:{p[a+32>>3]=1.0;r=d;return}default:{d=f+56|0;a=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,a|0);c=B;B=0;if(c&1){c=Rb()|0;R=Q;S=c;vva(d);Qb(S|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,a|0);c=B;B=0;do if(c&1){u=Rb()|0;T=Q;U=u}else{k[a>>2]=27560;u=f+36|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;k[u+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,a|0,e|0);o=B;B=0;if(o&1){o=Rb()|0;x=Q;Yua(e);Yua(u);Ava(a);T=x;U=o;break}Yua(e);B=0;o=Ia(40,f|0,138389,29)|0;x=B;B=0;b:do if(!(x&1)?(B=0,Xa(239,o|0,0)|0,w=B,B=0,!(w&1)):0){w=Ab(20)|0;B=0;eb(502,g|0,138315,73);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,139574,9);M=B;B=0;if(M&1){M=Rb()|0;L=Q;Yua(g);V=M;W=L;break}B=0;wa(510,i|0,a|0);L=B;B=0;if(L&1){L=Rb()|0;X=Q;Y=L;Z=1}else{B=0;ua(163,w|0,g|0,h|0,135,i|0);L=B;B=0;if(L&1)_=1;else{B=0;eb(503,w|0,1240,229);B=0;_=0}L=Rb()|0;M=Q;Yua(i);X=M;Y=L;Z=_}Yua(h);Yua(g);if(Z){V=Y;W=X}else{$=Y;aa=X;break b}}else{L=Rb()|0;V=L;W=Q}while(0);zb(w|0);$=V;aa=W}else N=20;while(0);if((N|0)==20){o=Rb()|0;$=o;aa=Q}k[f>>2]=27468;k[d>>2]=27488;k[a>>2]=27560;Yua(u);Ava(a);vva(d);O=aa;P=$;Qb(P|0)}while(0);R=T;S=U;vva(d);Qb(S|0)}}}function Aja(a){a=a|0;return 0}function Bja(a){a=a|0;return k[a+16>>2]|0}function Cja(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,138315,73);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,139078,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,167,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Dja(a){a=a|0;var b=0;k[a>>2]=40732;k[a+16>>2]=-1;b=a+20|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;p[a+8>>3]=-9999.0;p[a+40>>3]=-9999.0;p[a+48>>3]=-9999.0;p[a+56>>3]=-9999.0;return}function Eja(a,b){a=a|0;b=b|0;k[a>>2]=40732;Una(a+16|0,a+24|0,a+28|0,a+32|0,a+20|0,b);p[a+8>>3]=-9999.0;p[a+40>>3]=-9999.0;p[a+48>>3]=-9999.0;p[a+56>>3]=-9999.0;return}function Fja(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0.0,D=0.0,E=0.0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0.0,fa=0.0,ga=0.0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0.0,Ba=0.0,Ca=0.0,Da=0.0,Ea=0.0,Fa=0.0,Ga=0;e=r;r=r+384|0;f=e+372|0;g=e+360|0;h=e+356|0;i=e+352|0;j=e+216|0;l=e+200|0;m=e+48|0;n=e+36|0;o=e+64|0;q=e+24|0;s=e+12|0;t=e;k[a>>2]=40732;k[h>>2]=0;k[i>>2]=0;u=a+16|0;k[u>>2]=d;B=0;eb(526,h|0,i|0,d|0);d=B;B=0;a:do if((((!(d&1)?(v=k[u>>2]|0,w=v>>>0>536870911?-1:v<<3,B=0,x=ya(422,w|0)|0,y=B,B=0,!(y&1)):0)?(k[a+24>>2]=x,B=0,y=ya(422,w|0)|0,z=B,B=0,!(z&1)):0)?(k[a+28>>2]=y,B=0,z=ya(422,w|0)|0,A=B,B=0,!(A&1)):0)?(k[a+32>>2]=z,B=0,A=ya(422,w|0)|0,w=B,B=0,!(w&1)):0){k[a+20>>2]=A;switch(b|0){case 0:{C=1.0;D=0.0;E=0.0;break}case 1:{C=0.0;D=1.0;E=0.0;break}case 2:{C=0.0;D=0.0;E=1.0;break}default:{w=j+56|0;F=j+4|0;k[j>>2]=27524;k[w>>2]=27544;B=0;wa(508,j+56|0,F|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;I=G}else{k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[w>>2]=27488;B=0;va(448,F|0);G=B;B=0;do if(G&1){J=Rb()|0;K=Q;L=J}else{k[F>>2]=27560;J=j+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[j+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,F|0,g|0);M=B;B=0;if(M&1){M=Rb()|0;N=Q;Yua(g);Yua(J);Ava(F);K=N;L=M;break}Yua(g);B=0;M=Ia(40,j|0,138437,58)|0;N=B;B=0;b:do if(((!(N&1)?(B=0,O=Xa(242,M|0,b|0)|0,P=B,B=0,!(P&1)):0)?(B=0,P=Ia(40,O|0,141170,1)|0,O=B,B=0,!(O&1)):0)?(B=0,Xa(239,P|0,0)|0,P=B,B=0,!(P&1)):0){P=Ab(20)|0;B=0;eb(502,l|0,138496,74);O=B;B=0;do if(!(O&1)){B=0;eb(502,m|0,138571,9);R=B;B=0;if(R&1){R=Rb()|0;S=Q;Yua(l);T=R;U=S;break}B=0;wa(510,n|0,F|0);S=B;B=0;if(S&1){S=Rb()|0;V=Q;W=S;X=1}else{B=0;ua(163,P|0,l|0,m|0,65,n|0);S=B;B=0;if(S&1)Y=1;else{B=0;eb(503,P|0,1240,229);B=0;Y=0}S=Rb()|0;R=Q;Yua(n);V=R;W=S;X=Y}Yua(m);Yua(l);if(X){T=W;U=V}else{Z=W;_=V;break b}}else{S=Rb()|0;T=S;U=Q}while(0);zb(P|0);Z=T;_=U}else $=28;while(0);if(($|0)==28){M=Rb()|0;Z=M;_=Q}k[j>>2]=27468;k[w>>2]=27488;k[F>>2]=27560;Yua(J);Ava(F);vva(w);aa=_;ba=Z;Qb(ba|0)}while(0);H=K;I=L}vva(w);ca=H;da=I;break a}}switch(c|0){case 0:{ea=1.0;fa=0.0;ga=0.0;break}case 1:{ea=0.0;fa=1.0;ga=0.0;break}case 2:{ea=0.0;fa=0.0;ga=1.0;break}default:{F=o+56|0;G=o+4|0;k[o>>2]=27524;k[F>>2]=27544;B=0;wa(508,o+56|0,G|0);M=B;B=0;if(M&1){M=Rb()|0;ha=Q;ia=M}else{k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[F>>2]=27488;B=0;va(448,G|0);M=B;B=0;do if(M&1){N=Rb()|0;ja=Q;ka=N}else{k[G>>2]=27560;N=o+36|0;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;k[o+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,G|0,f|0);O=B;B=0;if(O&1){O=Rb()|0;S=Q;Yua(f);Yua(N);Ava(G);ja=S;ka=O;break}Yua(f);B=0;O=Ia(40,o|0,138581,59)|0;S=B;B=0;c:do if(((!(S&1)?(B=0,R=Xa(242,O|0,c|0)|0,la=B,B=0,!(la&1)):0)?(B=0,la=Ia(40,R|0,138641,2)|0,R=B,B=0,!(R&1)):0)?(B=0,Xa(239,la|0,0)|0,la=B,B=0,!(la&1)):0){la=Ab(20)|0;B=0;eb(502,q|0,138496,74);R=B;B=0;do if(!(R&1)){B=0;eb(502,s|0,138571,9);ma=B;B=0;if(ma&1){ma=Rb()|0;na=Q;Yua(q);oa=ma;pa=na;break}B=0;wa(510,t|0,G|0);na=B;B=0;if(na&1){na=Rb()|0;qa=1;ra=Q;sa=na}else{B=0;ua(163,la|0,q|0,s|0,77,t|0);na=B;B=0;if(na&1)ta=1;else{B=0;eb(503,la|0,1240,229);B=0;ta=0}na=Rb()|0;ma=Q;Yua(t);qa=ta;ra=ma;sa=na}Yua(s);Yua(q);if(qa){oa=sa;pa=ra}else{xa=ra;za=sa;break c}}else{na=Rb()|0;oa=na;pa=Q}while(0);zb(la|0);xa=pa;za=oa}else $=56;while(0);if(($|0)==56){O=Rb()|0;xa=Q;za=O}k[o>>2]=27468;k[F>>2]=27488;k[G>>2]=27560;Yua(N);Ava(G);vva(F);aa=xa;ba=za;Qb(ba|0)}while(0);ha=ja;ia=ka}vva(F);ca=ha;da=ia;break a}}if((v|0)>0){Aa=(C+ea)*.5;G=k[h>>2]|0;Ba=ea-C;Ca=(D+fa)*.5;Da=fa-D;Ea=(E+ga)*.5;Fa=ga-E;M=k[i>>2]|0;w=0;do{O=G+(w<<3)|0;p[x+(w<<3)>>3]=Aa+Ba*(+p[O>>3]*.5);p[y+(w<<3)>>3]=Ca+Da*(+p[O>>3]*.5);p[z+(w<<3)>>3]=Ea+Fa*(+p[O>>3]*.5);p[A+(w<<3)>>3]=+p[M+(w<<3)>>3];w=w+1|0}while((w|0)<(v|0));Ga=G}else Ga=k[h>>2]|0;p[a+8>>3]=-9999.0;p[a+40>>3]=-9999.0;p[a+48>>3]=-9999.0;p[a+56>>3]=-9999.0;if(Ga)Tqa(Ga);k[h>>2]=0;G=k[i>>2]|0;if(!G){r=e;return}Tqa(G);r=e;return}else $=7;while(0);if(($|0)==7){$=Rb()|0;ca=Q;da=$}aa=ca;ba=da;Qb(ba|0)}function Gja(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0,y=0;d=r;r=r+16|0;e=d+4|0;f=d;k[a>>2]=40732;k[e>>2]=0;k[f>>2]=0;g=a+16|0;k[g>>2]=c;Sna(e,f,c);c=k[g>>2]|0;g=c>>>0>536870911?-1:c<<3;h=Rqa(g)|0;k[a+24>>2]=h;i=Rqa(g)|0;k[a+28>>2]=i;j=Rqa(g)|0;k[a+32>>2]=j;l=Rqa(g)|0;k[a+20>>2]=l;if((c|0)>0){g=b+24|0;m=k[e>>2]|0;n=b+8|0;o=b+32|0;q=b+16|0;s=b+40|0;t=k[f>>2]|0;u=0;do{v=+p[b>>3];w=+p[g>>3];x=m+(u<<3)|0;p[h+(u<<3)>>3]=(v+w)*.5+(w-v)*(+p[x>>3]*.5);v=+p[n>>3];w=+p[o>>3];p[i+(u<<3)>>3]=(v+w)*.5+(w-v)*(+p[x>>3]*.5);v=+p[q>>3];w=+p[s>>3];p[j+(u<<3)>>3]=(v+w)*.5+(w-v)*(+p[x>>3]*.5);p[l+(u<<3)>>3]=+p[t+(u<<3)>>3];u=u+1|0}while((u|0)<(c|0));y=m}else y=k[e>>2]|0;p[a+8>>3]=-9999.0;p[a+40>>3]=-9999.0;p[a+48>>3]=-9999.0;p[a+56>>3]=-9999.0;if(y)Tqa(y);k[e>>2]=0;e=k[f>>2]|0;if(!e){r=d;return}Tqa(e);r=d;return}function Hja(a,b,c,d,e,f){a=a|0;b=b|0;c=+c;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0,P=0.0,R=0,S=0.0,T=0.0,U=0.0,V=0,W=0.0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0.0,Ea=0,Fa=0.0,Ga=0,Ha=0,Ja=0,Ka=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0.0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0;g=r;r=r+560|0;h=g+544|0;i=g+532|0;j=g+520|0;l=g+384|0;m=g+368|0;n=g+84|0;o=g+72|0;q=g+232|0;s=g+60|0;t=g+48|0;u=g+36|0;v=g+96|0;w=g+24|0;x=g+12|0;y=g;k[a>>2]=40732;a:do if(e){z=a+16|0;A=a+24|0;C=a+28|0;D=a+32|0;E=a+20|0;B=0;La(39,z|0,A|0,C|0,D|0,E|0,f|0);F=B;B=0;if(F&1)G=8;else{F=k[z>>2]|0;if((F|0)<=0){H=a+8|0;p[H>>3]=-9999.0;I=a+40|0;p[I>>3]=-9999.0;J=a+48|0;p[J>>3]=-9999.0;K=a+56|0;p[K>>3]=-9999.0;r=g;return}z=k[A>>2]|0;A=k[C>>2]|0;C=k[D>>2]|0;if(!b){D=k[E>>2]|0;L=0;do{M=z+(L<<3)|0;N=+p[M>>3]*0.0;O=A+(L<<3)|0;P=+p[O>>3];R=C+(L<<3)|0;S=+p[R>>3];T=N+P*c+S*0.0;U=N+P*0.0+S*d;p[M>>3]=1.0-T-U;p[O>>3]=T;p[R>>3]=U;R=D+(L<<3)|0;p[R>>3]=+p[R>>3]*c*d;L=L+1|0}while((L|0)<(F|0));H=a+8|0;p[H>>3]=-9999.0;I=a+40|0;p[I>>3]=-9999.0;J=a+48|0;p[J>>3]=-9999.0;K=a+56|0;p[K>>3]=-9999.0;r=g;return}else V=0;b:while(1){L=z+(V<<3)|0;U=+p[L>>3]*0.0;D=A+(V<<3)|0;T=+p[D>>3];R=C+(V<<3)|0;S=+p[R>>3];P=U+T*c+S*0.0;N=U+T*0.0+S*d;switch(b|0){case 2:{p[L>>3]=P;p[D>>3]=N;W=1.0-P-N;break}case 1:{p[L>>3]=N;p[D>>3]=1.0-P-N;W=P;break}default:break b}p[R>>3]=W;R=(k[E>>2]|0)+(V<<3)|0;p[R>>3]=+p[R>>3]*c*d;V=V+1|0;if((V|0)>=(F|0)){G=121;break}}if((G|0)==121){H=a+8|0;p[H>>3]=-9999.0;I=a+40|0;p[I>>3]=-9999.0;J=a+48|0;p[J>>3]=-9999.0;K=a+56|0;p[K>>3]=-9999.0;r=g;return}F=l+56|0;E=l+4|0;k[l>>2]=27524;k[F>>2]=27544;B=0;wa(508,l+56|0,E|0);C=B;B=0;if(C&1){C=Rb()|0;X=Q;Y=C}else{k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[F>>2]=27488;B=0;va(448,E|0);C=B;B=0;do if(C&1){A=Rb()|0;Z=Q;_=A}else{k[E>>2]=27560;A=l+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[l+52>>2]=16;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;B=0;wa(509,E|0,j|0);z=B;B=0;if(z&1){z=Rb()|0;R=Q;Yua(j);Yua(A);Ava(E);Z=R;_=z;break}Yua(j);B=0;z=Ia(40,l|0,139246,6)|0;R=B;B=0;c:do if(((!(R&1)?(B=0,D=Xa(242,z|0,b|0)|0,L=B,B=0,!(L&1)):0)?(B=0,L=Ia(40,D|0,146481,18)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,L|0,0)|0,L=B,B=0,!(L&1)):0){L=Ab(20)|0;B=0;eb(502,m|0,138496,74);D=B;B=0;do if(!(D&1)){B=0;eb(502,n|0,138571,9);O=B;B=0;if(O&1){O=Rb()|0;M=Q;Yua(m);$=M;aa=O;break}B=0;wa(510,o|0,E|0);O=B;B=0;if(O&1){O=Rb()|0;ba=O;ca=Q;da=1}else{B=0;ua(163,L|0,m|0,n|0,184,o|0);O=B;B=0;if(O&1)ea=1;else{B=0;eb(503,L|0,1240,229);B=0;ea=0}O=Rb()|0;M=Q;Yua(o);ba=O;ca=M;da=ea}Yua(n);Yua(m);if(da){$=ca;aa=ba}else{fa=ca;ga=ba;break c}}else{M=Rb()|0;$=Q;aa=M}while(0);zb(L|0);fa=$;ga=aa}else G=29;while(0);if((G|0)==29){z=Rb()|0;fa=Q;ga=z}k[l>>2]=27468;k[F>>2]=27488;k[E>>2]=27560;Yua(A);Ava(E);vva(F);ha=fa;ia=ga;Qb(ia|0)}while(0);X=Z;Y=_}vva(F);ja=X;ka=Y}}else{B=0;E=ya(423,64)|0;C=B;B=0;if(!(C&1)){k[E>>2]=40732;C=E+16|0;z=E+24|0;R=E+28|0;D=E+32|0;M=E+20|0;B=0;La(39,C|0,z|0,R|0,D|0,M|0,f|0);O=B;B=0;if(O&1){O=Rb()|0;la=Q;Sqa(E);ha=la;ia=O;Qb(ia|0)}p[E+8>>3]=-9999.0;p[E+40>>3]=-9999.0;p[E+48>>3]=-9999.0;p[E+56>>3]=-9999.0;B=0;O=ya(423,64)|0;la=B;B=0;if(!(la&1)){k[O>>2]=40732;la=O+16|0;ma=O+24|0;na=O+28|0;oa=O+32|0;pa=O+20|0;B=0;La(39,la|0,ma|0,na|0,oa|0,pa|0,f|0);qa=B;B=0;if(qa&1){qa=Rb()|0;ra=Q;Sqa(O);ha=ra;ia=qa;Qb(ia|0)}p[O+8>>3]=-9999.0;p[O+40>>3]=-9999.0;p[O+48>>3]=-9999.0;p[O+56>>3]=-9999.0;qa=k[C>>2]|0;C=(qa|0)>0;d:do if(C){ra=k[z>>2]|0;sa=k[R>>2]|0;ta=k[D>>2]|0;P=1.0-d;if(!b){xa=k[M>>2]|0;za=0;while(1){Aa=ra+(za<<3)|0;N=+p[Aa>>3];Ba=sa+(za<<3)|0;S=+p[Ba>>3];Ca=ta+(za<<3)|0;T=+p[Ca>>3];U=N*c+S*0.0+T*0.0;Da=N*0.0+S+T*d;p[Aa>>3]=1.0-U-Da;p[Ba>>3]=U;p[Ca>>3]=Da;Ca=xa+(za<<3)|0;p[Ca>>3]=P*(+p[Ca>>3]*c);za=za+1|0;if((za|0)>=(qa|0))break d}}else Ea=0;e:while(1){za=ra+(Ea<<3)|0;Da=+p[za>>3];xa=sa+(Ea<<3)|0;U=+p[xa>>3];A=ta+(Ea<<3)|0;T=+p[A>>3];S=Da*c+U*0.0+T*0.0;N=Da*0.0+U+T*d;switch(b|0){case 2:{p[za>>3]=S;p[xa>>3]=N;Fa=1.0-S-N;break}case 1:{p[za>>3]=N;p[xa>>3]=1.0-S-N;Fa=S;break}default:break e}p[A>>3]=Fa;A=(k[M>>2]|0)+(Ea<<3)|0;p[A>>3]=P*(+p[A>>3]*c);Ea=Ea+1|0;if((Ea|0)>=(qa|0))break d}ta=q+56|0;sa=q+4|0;k[q>>2]=27524;k[ta>>2]=27544;B=0;wa(508,q+56|0,sa|0);ra=B;B=0;if(ra&1){ra=Rb()|0;Ga=Q;Ha=ra}else{k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[ta>>2]=27488;B=0;va(448,sa|0);ra=B;B=0;do if(ra&1){A=Rb()|0;Ja=Q;Ka=A}else{k[sa>>2]=27560;A=q+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[q+52>>2]=16;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;B=0;wa(509,sa|0,i|0);xa=B;B=0;if(xa&1){xa=Rb()|0;za=Q;Yua(i);Yua(A);Ava(sa);Ja=za;Ka=xa;break}Yua(i);B=0;xa=Ia(40,q|0,139246,6)|0;za=B;B=0;f:do if(((!(za&1)?(B=0,Ca=Xa(242,xa|0,b|0)|0,Ba=B,B=0,!(Ba&1)):0)?(B=0,Ba=Ia(40,Ca|0,146481,18)|0,Ca=B,B=0,!(Ca&1)):0)?(B=0,Xa(239,Ba|0,0)|0,Ba=B,B=0,!(Ba&1)):0){Ba=Ab(20)|0;B=0;eb(502,s|0,138496,74);Ca=B;B=0;do if(!(Ca&1)){B=0;eb(502,t|0,138571,9);Aa=B;B=0;if(Aa&1){Aa=Rb()|0;Ma=Q;Yua(s);Na=Aa;Oa=Ma;break}B=0;wa(510,u|0,sa|0);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;Pa=1;Qa=Q;Ra=Ma}else{B=0;ua(163,Ba|0,s|0,t|0,222,u|0);Ma=B;B=0;if(Ma&1)Sa=1;else{B=0;eb(503,Ba|0,1240,229);B=0;Sa=0}Ma=Rb()|0;Aa=Q;Yua(u);Pa=Sa;Qa=Aa;Ra=Ma}Yua(t);Yua(s);if(Pa){Na=Ra;Oa=Qa}else{Ta=Qa;Ua=Ra;break f}}else{Ma=Rb()|0;Na=Ma;Oa=Q}while(0);zb(Ba|0);Ta=Oa;Ua=Na}else G=72;while(0);if((G|0)==72){xa=Rb()|0;Ta=Q;Ua=xa}k[q>>2]=27468;k[ta>>2]=27488;k[sa>>2]=27560;Yua(A);Ava(sa);vva(ta);ha=Ta;ia=Ua;Qb(ia|0)}while(0);Ga=Ja;Ha=Ka}vva(ta);ja=Ga;ka=Ha;break a}while(0);F=k[la>>2]|0;sa=(F|0)>0;g:do if(sa){ra=k[ma>>2]|0;xa=k[na>>2]|0;za=k[oa>>2]|0;P=1.0-c;if(!b){L=k[pa>>2]|0;Ca=0;while(1){Ma=ra+(Ca<<3)|0;S=+p[Ma>>3];Aa=xa+(Ca<<3)|0;N=+p[Aa>>3];Va=za+(Ca<<3)|0;T=+p[Va>>3];U=S*c+N+T*0.0;Da=S*0.0+N*0.0+T;p[Ma>>3]=1.0-U-Da;p[Aa>>3]=U;p[Va>>3]=Da;Va=L+(Ca<<3)|0;p[Va>>3]=P*+p[Va>>3];Ca=Ca+1|0;if((Ca|0)>=(F|0))break g}}else Wa=0;h:while(1){Ca=ra+(Wa<<3)|0;Da=+p[Ca>>3];L=xa+(Wa<<3)|0;U=+p[L>>3];ta=za+(Wa<<3)|0;T=+p[ta>>3];N=Da*c+U+T*0.0;S=Da*0.0+U*0.0+T;switch(b|0){case 2:{p[Ca>>3]=N;p[L>>3]=S;Ya=1.0-N-S;break}case 1:{p[Ca>>3]=S;p[L>>3]=1.0-N-S;Ya=N;break}default:break h}p[ta>>3]=Ya;ta=(k[pa>>2]|0)+(Wa<<3)|0;p[ta>>3]=P*+p[ta>>3];Wa=Wa+1|0;if((Wa|0)>=(F|0))break g}za=v+56|0;xa=v+4|0;k[v>>2]=27524;k[za>>2]=27544;B=0;wa(508,v+56|0,xa|0);ra=B;B=0;if(ra&1){ra=Rb()|0;Za=Q;_a=ra}else{k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[za>>2]=27488;B=0;va(448,xa|0);ra=B;B=0;do if(ra&1){ta=Rb()|0;$a=Q;ab=ta}else{k[xa>>2]=27560;ta=v+36|0;k[ta>>2]=0;k[ta+4>>2]=0;k[ta+8>>2]=0;k[ta+12>>2]=0;k[v+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,xa|0,h|0);L=B;B=0;if(L&1){L=Rb()|0;Ca=Q;Yua(h);Yua(ta);Ava(xa);$a=Ca;ab=L;break}Yua(h);B=0;L=Ia(40,v|0,139246,6)|0;Ca=B;B=0;i:do if(((!(Ca&1)?(B=0,Va=Xa(242,L|0,b|0)|0,Aa=B,B=0,!(Aa&1)):0)?(B=0,Aa=Ia(40,Va|0,146481,18)|0,Va=B,B=0,!(Va&1)):0)?(B=0,Xa(239,Aa|0,0)|0,Aa=B,B=0,!(Aa&1)):0){Aa=Ab(20)|0;B=0;eb(502,w|0,138496,74);Va=B;B=0;do if(!(Va&1)){B=0;eb(502,x|0,138571,9);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;bb=Q;Yua(w);cb=Ma;db=bb;break}B=0;wa(510,y|0,xa|0);bb=B;B=0;if(bb&1){bb=Rb()|0;fb=1;gb=Q;hb=bb}else{B=0;ua(163,Aa|0,w|0,x|0,253,y|0);bb=B;B=0;if(bb&1)ib=1;else{B=0;eb(503,Aa|0,1240,229);B=0;ib=0}bb=Rb()|0;Ma=Q;Yua(y);fb=ib;gb=Ma;hb=bb}Yua(x);Yua(w);if(fb){cb=hb;db=gb}else{jb=gb;kb=hb;break i}}else{bb=Rb()|0;cb=bb;db=Q}while(0);zb(Aa|0);jb=db;kb=cb}else G=101;while(0);if((G|0)==101){L=Rb()|0;jb=Q;kb=L}k[v>>2]=27468;k[za>>2]=27488;k[xa>>2]=27560;Yua(ta);Ava(xa);vva(za);ha=jb;ia=kb;Qb(ia|0)}while(0);Za=$a;_a=ab}vva(za);ja=Za;ka=_a;break a}while(0);la=qa+F|0;k[a+16>>2]=la;xa=la>>>0>536870911?-1:la<<3;B=0;la=ya(422,xa|0)|0;ra=B;B=0;if(((!(ra&1)?(k[a+24>>2]=la,B=0,ra=ya(422,xa|0)|0,L=B,B=0,!(L&1)):0)?(k[a+28>>2]=ra,B=0,L=ya(422,xa|0)|0,Ca=B,B=0,!(Ca&1)):0)?(k[a+32>>2]=L,B=0,Ca=ya(422,xa|0)|0,xa=B,B=0,!(xa&1)):0){k[a+20>>2]=Ca;if(C){xa=k[z>>2]|0;A=k[R>>2]|0;Va=k[D>>2]|0;Ba=k[M>>2]|0;bb=0;do{p[la+(bb<<3)>>3]=+p[xa+(bb<<3)>>3];p[ra+(bb<<3)>>3]=+p[A+(bb<<3)>>3];p[L+(bb<<3)>>3]=+p[Va+(bb<<3)>>3];p[Ca+(bb<<3)>>3]=+p[Ba+(bb<<3)>>3];bb=bb+1|0}while((bb|0)<(qa|0))}if(sa){bb=k[ma>>2]|0;Ba=k[na>>2]|0;Va=k[oa>>2]|0;A=k[pa>>2]|0;xa=0;do{M=qa+xa|0;p[la+(M<<3)>>3]=+p[bb+(xa<<3)>>3];p[ra+(M<<3)>>3]=+p[Ba+(xa<<3)>>3];p[L+(M<<3)>>3]=+p[Va+(xa<<3)>>3];p[Ca+(M<<3)>>3]=+p[A+(xa<<3)>>3];xa=xa+1|0}while((xa|0)<(F|0))}Ec[k[(k[E>>2]|0)+4>>2]&1023](E);Ec[k[(k[O>>2]|0)+4>>2]&1023](O);H=a+8|0;p[H>>3]=-9999.0;I=a+40|0;p[I>>3]=-9999.0;J=a+48|0;p[J>>3]=-9999.0;K=a+56|0;p[K>>3]=-9999.0;r=g;return}else G=8}else G=8}else G=8}while(0);if((G|0)==8){G=Rb()|0;ja=Q;ka=G}ha=ja;ia=ka;Qb(ia|0)}function Ija(a){a=a|0;var b=0,c=0;k[a>>2]=40732;b=a+20|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+32|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+28|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+24|0;a=k[b>>2]|0;if(!a){k[b>>2]=0;return}Tqa(a);k[b>>2]=0;return}function Jja(a){a=a|0;var b=0,c=0;k[a>>2]=40732;b=a+20|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+32|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+28|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=k[a+24>>2]|0;if(!b){Sqa(a);return}Tqa(b);Sqa(a);return}function Kja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0;b=r;r=r+3312|0;c=b+3300|0;d=b+3032|0;e=b+3288|0;f=b+2896|0;g=b+3276|0;h=b+2760|0;i=b+3264|0;j=b+2608|0;l=b+3252|0;m=b+2472|0;n=b+3240|0;o=b+2320|0;q=b+3228|0;s=b+2184|0;t=b+3216|0;u=b+2032|0;v=b+3204|0;w=b+1880|0;x=b+3192|0;y=b+1744|0;z=b+3180|0;A=b+1592|0;C=b+3168|0;D=b+1456|0;E=b+2744|0;F=b+1320|0;G=b+2456|0;H=b+1168|0;I=b+2168|0;J=b+1032|0;K=b+2016|0;L=b+880|0;M=b+1728|0;N=b+728|0;O=b+1304|0;P=b+592|0;R=b+1016|0;S=b+440|0;T=b+864|0;U=b+304|0;V=b+576|0;W=b+152|0;X=b+288|0;Y=b+16|0;Z=b;_=d+56|0;$=d+4|0;k[d>>2]=27524;k[_>>2]=27544;B=0;wa(508,d+56|0,$|0);aa=B;B=0;if(aa&1){aa=Rb()|0;ba=Q;ca=aa;vva(_);Qb(ca|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[_>>2]=27488;B=0;va(448,$|0);aa=B;B=0;do if(aa&1){da=Rb()|0;ea=Q;fa=da}else{k[$>>2]=27560;da=d+36|0;k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;k[da+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,$|0,c|0);ga=B;B=0;if(ga&1){ga=Rb()|0;ha=Q;Yua(c);Yua(da);Ava($);ea=ha;fa=ga;break}Yua(c);B=0;Ia(40,d|0,138644,11)|0;ga=B;B=0;do if(!(ga&1)?(B=0,wa(510,e|0,$|0),ha=B,B=0,!(ha&1)):0){B=0;ya(424,e|0)|0;ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(e);ja=ia;ka=ha;break}Yua(e);k[d>>2]=27468;k[_>>2]=27488;k[$>>2]=27560;Yua(da);Ava($);vva(_);ha=f+56|0;ia=f+4|0;k[f>>2]=27524;k[ha>>2]=27544;B=0;wa(508,f+56|0,ia|0);la=B;B=0;if(la&1){la=Rb()|0;ma=Q;na=la;vva(ha);Qb(na|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[ha>>2]=27488;B=0;va(448,ia|0);la=B;B=0;do if(la&1){oa=Rb()|0;pa=Q;qa=oa}else{k[ia>>2]=27560;oa=f+36|0;k[oa>>2]=0;k[oa+4>>2]=0;k[oa+8>>2]=0;k[oa+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ia|0,c|0);ra=B;B=0;if(ra&1){ra=Rb()|0;sa=Q;Yua(c);Yua(oa);Ava(ia);pa=sa;qa=ra;break}Yua(c);B=0;ra=Ia(40,f|0,139266,13)|0;sa=B;B=0;do if(((!(sa&1)?(ta=a+16|0,B=0,ua=Xa(242,ra|0,k[ta>>2]|0)|0,xa=B,B=0,!(xa&1)):0)?(B=0,Ia(40,ua|0,149177,1)|0,ua=B,B=0,!(ua&1)):0)?(B=0,wa(510,g|0,ia|0),ua=B,B=0,!(ua&1)):0){B=0;ya(424,g|0)|0;ua=B;B=0;if(ua&1){ua=Rb()|0;xa=Q;Yua(g);za=xa;Aa=ua;break}Yua(g);k[f>>2]=27468;k[ha>>2]=27488;k[ia>>2]=27560;Yua(oa);Ava(ia);vva(ha);ua=a+20|0;a:do if(!(k[ua>>2]|0)){xa=o+56|0;Ba=o+4|0;k[o>>2]=27524;k[xa>>2]=27544;B=0;wa(508,o+56|0,Ba|0);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Da=Q;Ea=Ca;vva(xa);Qb(Ea|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[xa>>2]=27488;B=0;va(448,Ba|0);Ca=B;B=0;do if(Ca&1){Fa=Rb()|0;Ga=Q;Ha=Fa}else{k[Ba>>2]=27560;Fa=o+36|0;k[Fa>>2]=0;k[Fa+4>>2]=0;k[Fa+8>>2]=0;k[Fa+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ba|0,c|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;Ka=Q;Yua(c);Yua(Fa);Ava(Ba);Ga=Ka;Ha=Ja;break}Yua(c);B=0;Ia(40,o|0,139295,15)|0;Ja=B;B=0;do if(!(Ja&1)){B=0;wa(510,q|0,Ba|0);Ka=B;B=0;if(Ka&1){La=92;break}B=0;ya(424,q|0)|0;Ka=B;B=0;if(Ka&1){Ka=Rb()|0;Ma=Q;Yua(q);Na=Ma;Oa=Ka;break}else{Yua(q);k[o>>2]=27468;k[xa>>2]=27488;k[Ba>>2]=27560;Yua(Fa);Ava(Ba);vva(xa);break a}}else La=92;while(0);if((La|0)==92){Ja=Rb()|0;Na=Q;Oa=Ja}k[o>>2]=27468;k[xa>>2]=27488;k[Ba>>2]=27560;Yua(Fa);Ava(Ba);vva(xa);Pa=Na;Qa=Oa;Qb(Qa|0)}while(0);Da=Ga;Ea=Ha;vva(xa);Qb(Ea|0)}else{Ba=h+56|0;Ca=h+4|0;k[h>>2]=27524;k[Ba>>2]=27544;B=0;wa(508,h+56|0,Ca|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;Ra=Q;Ta=Ja;vva(Ba);Qb(Ta|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[Ba>>2]=27488;B=0;va(448,Ca|0);Ja=B;B=0;do if(Ja&1){Ka=Rb()|0;Ua=Q;Va=Ka}else{k[Ca>>2]=27560;Ka=h+36|0;k[Ka>>2]=0;k[Ka+4>>2]=0;k[Ka+8>>2]=0;k[Ka+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ca|0,c|0);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;Wa=Q;Yua(c);Yua(Ka);Ava(Ca);Ua=Wa;Va=Ma;break}Yua(c);B=0;Ia(40,h|0,139280,14)|0;Ma=B;B=0;do if(Ma&1)La=54;else{B=0;wa(510,i|0,Ca|0);Wa=B;B=0;if(Wa&1){La=54;break}B=0;ya(424,i|0)|0;Wa=B;B=0;if(Wa&1){Wa=Rb()|0;Ya=Q;Yua(i);Za=Ya;_a=Wa;break}Yua(i);k[h>>2]=27468;k[Ba>>2]=27488;k[Ca>>2]=27560;Yua(Ka);Ava(Ca);vva(Ba);b:do if((k[ta>>2]|0)>0){Wa=j+56|0;Ya=j+4|0;$a=j+56|0;ab=j+128|0;bb=j+132|0;cb=j+36|0;db=j+52|0;eb=0;while(1){k[j>>2]=27524;k[Wa>>2]=27544;B=0;wa(508,$a|0,Ya|0);fb=B;B=0;if(fb&1){La=61;break}k[ab>>2]=0;k[bb>>2]=-1;k[j>>2]=27468;k[Wa>>2]=27488;B=0;va(448,Ya|0);fb=B;B=0;if(fb&1){La=62;break}k[Ya>>2]=27560;k[cb>>2]=0;k[cb+4>>2]=0;k[cb+8>>2]=0;k[cb+12>>2]=0;k[db>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ya|0,c|0);fb=B;B=0;if(fb&1){La=60;break}Yua(c);B=0;fb=Ia(40,j|0,149175,1)|0;gb=B;B=0;if(gb&1){La=71;break}B=0;gb=Sa(1,fb|0,+(+p[(k[ua>>2]|0)+(eb<<3)>>3]))|0;fb=B;B=0;if(fb&1){La=71;break}B=0;Ia(40,gb|0,149177,1)|0;gb=B;B=0;if(gb&1){La=71;break}B=0;wa(510,l|0,Ya|0);gb=B;B=0;if(gb&1){La=71;break}B=0;ya(424,l|0)|0;gb=B;B=0;if(gb&1){La=72;break}Yua(l);k[j>>2]=27468;k[Wa>>2]=27488;k[Ya>>2]=27560;Yua(cb);Ava(Ya);vva(Wa);eb=eb+1|0;if((eb|0)>=(k[ta>>2]|0))break b}if((La|0)==60){eb=Rb()|0;db=Q;Yua(c);Yua(cb);Ava(Ya);hb=db;ib=eb;La=63}else if((La|0)==61){eb=Rb()|0;jb=Q;kb=eb;vva(Wa);Qb(kb|0)}else if((La|0)==62){eb=Rb()|0;hb=Q;ib=eb;La=63}else if((La|0)==71){eb=Rb()|0;lb=Q;mb=eb;La=73}else if((La|0)==72){eb=Rb()|0;db=Q;Yua(l);lb=db;mb=eb;La=73}if((La|0)==63){jb=hb;kb=ib;vva(Wa);Qb(kb|0)}else if((La|0)==73){k[j>>2]=27468;k[Wa>>2]=27488;k[Ya>>2]=27560;Yua(cb);Ava(Ya);vva(Wa);Pa=lb;Qa=mb;Qb(Qa|0)}}while(0);eb=m+56|0;db=m+4|0;k[m>>2]=27524;k[eb>>2]=27544;B=0;wa(508,m+56|0,db|0);bb=B;B=0;if(bb&1){bb=Rb()|0;nb=Q;ob=bb;vva(eb);Qb(ob|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[eb>>2]=27488;B=0;va(448,db|0);bb=B;B=0;do if(bb&1){ab=Rb()|0;pb=Q;qb=ab}else{k[db>>2]=27560;ab=m+36|0;k[ab>>2]=0;k[ab+4>>2]=0;k[ab+8>>2]=0;k[ab+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,db|0,c|0);$a=B;B=0;if($a&1){$a=Rb()|0;gb=Q;Yua(c);Yua(ab);Ava(db);pb=gb;qb=$a;break}Yua(c);B=0;Ia(40,m|0,149198,2)|0;$a=B;B=0;do if(!($a&1)){B=0;wa(510,n|0,db|0);gb=B;B=0;if(gb&1){La=77;break}B=0;ya(424,n|0)|0;gb=B;B=0;if(gb&1){gb=Rb()|0;fb=Q;Yua(n);rb=fb;sb=gb;break}else{Yua(n);k[m>>2]=27468;k[eb>>2]=27488;k[db>>2]=27560;Yua(ab);Ava(db);vva(eb);break a}}else La=77;while(0);if((La|0)==77){$a=Rb()|0;rb=Q;sb=$a}k[m>>2]=27468;k[eb>>2]=27488;k[db>>2]=27560;Yua(ab);Ava(db);vva(eb);Pa=rb;Qa=sb;Qb(Qa|0)}while(0);nb=pb;ob=qb;vva(eb);Qb(ob|0)}while(0);if((La|0)==54){Ma=Rb()|0;Za=Q;_a=Ma}k[h>>2]=27468;k[Ba>>2]=27488;k[Ca>>2]=27560;Yua(Ka);Ava(Ca);vva(Ba);Pa=Za;Qa=_a;Qb(Qa|0)}while(0);Ra=Ua;Ta=Va;vva(Ba);Qb(Ta|0)}while(0);ua=a+24|0;c:do if(!(k[ua>>2]|0)){Ca=y+56|0;Ja=y+4|0;k[y>>2]=27524;k[Ca>>2]=27544;B=0;wa(508,y+56|0,Ja|0);xa=B;B=0;if(xa&1){xa=Rb()|0;tb=Q;ub=xa;vva(Ca);Qb(ub|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[Ca>>2]=27488;B=0;va(448,Ja|0);xa=B;B=0;do if(xa&1){Ma=Rb()|0;vb=Q;wb=Ma}else{k[Ja>>2]=27560;Ma=y+36|0;k[Ma>>2]=0;k[Ma+4>>2]=0;k[Ma+8>>2]=0;k[Ma+12>>2]=0;k[y+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ja|0,c|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;db=Q;Yua(c);Yua(Ma);Ava(Ja);vb=db;wb=Fa;break}Yua(c);B=0;Ia(40,y|0,139326,15)|0;Fa=B;B=0;do if(!(Fa&1)){B=0;wa(510,z|0,Ja|0);db=B;B=0;if(db&1){La=156;break}B=0;ya(424,z|0)|0;db=B;B=0;if(db&1){db=Rb()|0;bb=Q;Yua(z);xb=bb;yb=db;break}else{Yua(z);k[y>>2]=27468;k[Ca>>2]=27488;k[Ja>>2]=27560;Yua(Ma);Ava(Ja);vva(Ca);break c}}else La=156;while(0);if((La|0)==156){Fa=Rb()|0;xb=Q;yb=Fa}k[y>>2]=27468;k[Ca>>2]=27488;k[Ja>>2]=27560;Yua(Ma);Ava(Ja);vva(Ca);Pa=xb;Qa=yb;Qb(Qa|0)}while(0);tb=vb;ub=wb;vva(Ca);Qb(ub|0)}else{Ja=s+56|0;xa=s+4|0;k[s>>2]=27524;k[Ja>>2]=27544;B=0;wa(508,s+56|0,xa|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;zb=Q;Ab=Ba;vva(Ja);Qb(Ab|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[Ja>>2]=27488;B=0;va(448,xa|0);Ba=B;B=0;do if(Ba&1){Fa=Rb()|0;Bb=Q;Cb=Fa}else{k[xa>>2]=27560;Fa=s+36|0;k[Fa>>2]=0;k[Fa+4>>2]=0;k[Fa+8>>2]=0;k[Fa+12>>2]=0;k[s+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,xa|0,c|0);Ka=B;B=0;if(Ka&1){Ka=Rb()|0;db=Q;Yua(c);Yua(Fa);Ava(xa);Bb=db;Cb=Ka;break}Yua(c);B=0;Ia(40,s|0,139311,14)|0;Ka=B;B=0;do if(Ka&1)La=118;else{B=0;wa(510,t|0,xa|0);db=B;B=0;if(db&1){La=118;break}B=0;ya(424,t|0)|0;db=B;B=0;if(db&1){db=Rb()|0;bb=Q;Yua(t);Db=bb;Eb=db;break}Yua(t);k[s>>2]=27468;k[Ja>>2]=27488;k[xa>>2]=27560;Yua(Fa);Ava(xa);vva(Ja);d:do if((k[ta>>2]|0)>0){db=u+56|0;bb=u+4|0;$a=u+56|0;Wa=u+128|0;Ya=u+132|0;cb=u+36|0;gb=u+52|0;fb=0;while(1){k[u>>2]=27524;k[db>>2]=27544;B=0;wa(508,$a|0,bb|0);Fb=B;B=0;if(Fb&1){La=125;break}k[Wa>>2]=0;k[Ya>>2]=-1;k[u>>2]=27468;k[db>>2]=27488;B=0;va(448,bb|0);Fb=B;B=0;if(Fb&1){La=126;break}k[bb>>2]=27560;k[cb>>2]=0;k[cb+4>>2]=0;k[cb+8>>2]=0;k[cb+12>>2]=0;k[gb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,bb|0,c|0);Fb=B;B=0;if(Fb&1){La=124;break}Yua(c);B=0;Fb=Ia(40,u|0,149175,1)|0;Gb=B;B=0;if(Gb&1){La=135;break}B=0;Gb=Sa(1,Fb|0,+(+p[(k[ua>>2]|0)+(fb<<3)>>3]))|0;Fb=B;B=0;if(Fb&1){La=135;break}B=0;Ia(40,Gb|0,149177,1)|0;Gb=B;B=0;if(Gb&1){La=135;break}B=0;wa(510,v|0,bb|0);Gb=B;B=0;if(Gb&1){La=135;break}B=0;ya(424,v|0)|0;Gb=B;B=0;if(Gb&1){La=136;break}Yua(v);k[u>>2]=27468;k[db>>2]=27488;k[bb>>2]=27560;Yua(cb);Ava(bb);vva(db);fb=fb+1|0;if((fb|0)>=(k[ta>>2]|0))break d}if((La|0)==124){fb=Rb()|0;gb=Q;Yua(c);Yua(cb);Ava(bb);Hb=gb;Ib=fb;La=127}else if((La|0)==125){fb=Rb()|0;Jb=Q;Kb=fb;vva(db);Qb(Kb|0)}else if((La|0)==126){fb=Rb()|0;Hb=Q;Ib=fb;La=127}else if((La|0)==135){fb=Rb()|0;Lb=Q;Mb=fb;La=137}else if((La|0)==136){fb=Rb()|0;gb=Q;Yua(v);Lb=gb;Mb=fb;La=137}if((La|0)==127){Jb=Hb;Kb=Ib;vva(db);Qb(Kb|0)}else if((La|0)==137){k[u>>2]=27468;k[db>>2]=27488;k[bb>>2]=27560;Yua(cb);Ava(bb);vva(db);Pa=Lb;Qa=Mb;Qb(Qa|0)}}while(0);eb=w+56|0;fb=w+4|0;k[w>>2]=27524;k[eb>>2]=27544;B=0;wa(508,w+56|0,fb|0);gb=B;B=0;if(gb&1){gb=Rb()|0;Nb=Q;Ob=gb;vva(eb);Qb(Ob|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[eb>>2]=27488;B=0;va(448,fb|0);gb=B;B=0;do if(gb&1){Ya=Rb()|0;Pb=Q;Sb=Ya}else{k[fb>>2]=27560;Ya=w+36|0;k[Ya>>2]=0;k[Ya+4>>2]=0;k[Ya+8>>2]=0;k[Ya+12>>2]=0;k[w+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,fb|0,c|0);Wa=B;B=0;if(Wa&1){Wa=Rb()|0;$a=Q;Yua(c);Yua(Ya);Ava(fb);Pb=$a;Sb=Wa;break}Yua(c);B=0;Ia(40,w|0,149198,2)|0;Wa=B;B=0;do if(!(Wa&1)){B=0;wa(510,x|0,fb|0);$a=B;B=0;if($a&1){La=141;break}B=0;ya(424,x|0)|0;$a=B;B=0;if($a&1){$a=Rb()|0;ab=Q;Yua(x);Tb=ab;Ub=$a;break}else{Yua(x);k[w>>2]=27468;k[eb>>2]=27488;k[fb>>2]=27560;Yua(Ya);Ava(fb);vva(eb);break c}}else La=141;while(0);if((La|0)==141){Wa=Rb()|0;Tb=Q;Ub=Wa}k[w>>2]=27468;k[eb>>2]=27488;k[fb>>2]=27560;Yua(Ya);Ava(fb);vva(eb);Pa=Tb;Qa=Ub;Qb(Qa|0)}while(0);Nb=Pb;Ob=Sb;vva(eb);Qb(Ob|0)}while(0);if((La|0)==118){Ka=Rb()|0;Db=Q;Eb=Ka}k[s>>2]=27468;k[Ja>>2]=27488;k[xa>>2]=27560;Yua(Fa);Ava(xa);vva(Ja);Pa=Db;Qa=Eb;Qb(Qa|0)}while(0);zb=Bb;Ab=Cb;vva(Ja);Qb(Ab|0)}while(0);ua=a+28|0;e:do if(!(k[ua>>2]|0)){xa=H+56|0;Ba=H+4|0;k[H>>2]=27524;k[xa>>2]=27544;B=0;wa(508,H+56|0,Ba|0);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Vb=Q;Wb=Ca;vva(xa);Qb(Wb|0)}k[H+128>>2]=0;k[H+132>>2]=-1;k[H>>2]=27468;k[xa>>2]=27488;B=0;va(448,Ba|0);Ca=B;B=0;do if(Ca&1){Ka=Rb()|0;Xb=Q;Yb=Ka}else{k[Ba>>2]=27560;Ka=H+36|0;k[Ka>>2]=0;k[Ka+4>>2]=0;k[Ka+8>>2]=0;k[Ka+12>>2]=0;k[H+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ba|0,c|0);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;fb=Q;Yua(c);Yua(Ka);Ava(Ba);Xb=fb;Yb=Ma;break}Yua(c);B=0;Ia(40,H|0,139357,15)|0;Ma=B;B=0;do if(!(Ma&1)){B=0;wa(510,I|0,Ba|0);fb=B;B=0;if(fb&1){La=220;break}B=0;ya(424,I|0)|0;fb=B;B=0;if(fb&1){fb=Rb()|0;gb=Q;Yua(I);Zb=gb;_b=fb;break}else{Yua(I);k[H>>2]=27468;k[xa>>2]=27488;k[Ba>>2]=27560;Yua(Ka);Ava(Ba);vva(xa);break e}}else La=220;while(0);if((La|0)==220){Ma=Rb()|0;Zb=Q;_b=Ma}k[H>>2]=27468;k[xa>>2]=27488;k[Ba>>2]=27560;Yua(Ka);Ava(Ba);vva(xa);Pa=Zb;Qa=_b;Qb(Qa|0)}while(0);Vb=Xb;Wb=Yb;vva(xa);Qb(Wb|0)}else{Ba=A+56|0;Ca=A+4|0;k[A>>2]=27524;k[Ba>>2]=27544;B=0;wa(508,A+56|0,Ca|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;$b=Q;ac=Ja;vva(Ba);Qb(ac|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[Ba>>2]=27488;B=0;va(448,Ca|0);Ja=B;B=0;do if(Ja&1){Ma=Rb()|0;bc=Q;cc=Ma}else{k[Ca>>2]=27560;Ma=A+36|0;k[Ma>>2]=0;k[Ma+4>>2]=0;k[Ma+8>>2]=0;k[Ma+12>>2]=0;k[A+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ca|0,c|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;fb=Q;Yua(c);Yua(Ma);Ava(Ca);bc=fb;cc=Fa;break}Yua(c);B=0;Ia(40,A|0,139342,14)|0;Fa=B;B=0;do if(Fa&1)La=182;else{B=0;wa(510,C|0,Ca|0);fb=B;B=0;if(fb&1){La=182;break}B=0;ya(424,C|0)|0;fb=B;B=0;if(fb&1){fb=Rb()|0;gb=Q;Yua(C);dc=gb;ec=fb;break}Yua(C);k[A>>2]=27468;k[Ba>>2]=27488;k[Ca>>2]=27560;Yua(Ma);Ava(Ca);vva(Ba);f:do if((k[ta>>2]|0)>0){fb=D+56|0;gb=D+4|0;Wa=D+56|0;db=D+128|0;bb=D+132|0;cb=D+36|0;$a=D+52|0;ab=0;while(1){k[D>>2]=27524;k[fb>>2]=27544;B=0;wa(508,Wa|0,gb|0);Gb=B;B=0;if(Gb&1){La=189;break}k[db>>2]=0;k[bb>>2]=-1;k[D>>2]=27468;k[fb>>2]=27488;B=0;va(448,gb|0);Gb=B;B=0;if(Gb&1){La=190;break}k[gb>>2]=27560;k[cb>>2]=0;k[cb+4>>2]=0;k[cb+8>>2]=0;k[cb+12>>2]=0;k[$a>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,gb|0,c|0);Gb=B;B=0;if(Gb&1){La=188;break}Yua(c);B=0;Gb=Ia(40,D|0,149175,1)|0;Fb=B;B=0;if(Fb&1){La=199;break}B=0;Fb=Sa(1,Gb|0,+(+p[(k[ua>>2]|0)+(ab<<3)>>3]))|0;Gb=B;B=0;if(Gb&1){La=199;break}B=0;Ia(40,Fb|0,149177,1)|0;Fb=B;B=0;if(Fb&1){La=199;break}B=0;wa(510,E|0,gb|0);Fb=B;B=0;if(Fb&1){La=199;break}B=0;ya(424,E|0)|0;Fb=B;B=0;if(Fb&1){La=200;break}Yua(E);k[D>>2]=27468;k[fb>>2]=27488;k[gb>>2]=27560;Yua(cb);Ava(gb);vva(fb);ab=ab+1|0;if((ab|0)>=(k[ta>>2]|0))break f}if((La|0)==188){ab=Rb()|0;$a=Q;Yua(c);Yua(cb);Ava(gb);fc=$a;gc=ab;La=191}else if((La|0)==189){ab=Rb()|0;hc=Q;ic=ab;vva(fb);Qb(ic|0)}else if((La|0)==190){ab=Rb()|0;fc=Q;gc=ab;La=191}else if((La|0)==199){ab=Rb()|0;jc=Q;kc=ab;La=201}else if((La|0)==200){ab=Rb()|0;$a=Q;Yua(E);jc=$a;kc=ab;La=201}if((La|0)==191){hc=fc;ic=gc;vva(fb);Qb(ic|0)}else if((La|0)==201){k[D>>2]=27468;k[fb>>2]=27488;k[gb>>2]=27560;Yua(cb);Ava(gb);vva(fb);Pa=jc;Qa=kc;Qb(Qa|0)}}while(0);eb=F+56|0;ab=F+4|0;k[F>>2]=27524;k[eb>>2]=27544;B=0;wa(508,F+56|0,ab|0);$a=B;B=0;if($a&1){$a=Rb()|0;lc=Q;mc=$a;vva(eb);Qb(mc|0)}k[F+128>>2]=0;k[F+132>>2]=-1;k[F>>2]=27468;k[eb>>2]=27488;B=0;va(448,ab|0);$a=B;B=0;do if($a&1){bb=Rb()|0;nc=Q;oc=bb}else{k[ab>>2]=27560;bb=F+36|0;k[bb>>2]=0;k[bb+4>>2]=0;k[bb+8>>2]=0;k[bb+12>>2]=0;k[F+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ab|0,c|0);db=B;B=0;if(db&1){db=Rb()|0;Wa=Q;Yua(c);Yua(bb);Ava(ab);nc=Wa;oc=db;break}Yua(c);B=0;Ia(40,F|0,149198,2)|0;db=B;B=0;do if(!(db&1)){B=0;wa(510,G|0,ab|0);Wa=B;B=0;if(Wa&1){La=205;break}B=0;ya(424,G|0)|0;Wa=B;B=0;if(Wa&1){Wa=Rb()|0;Ya=Q;Yua(G);pc=Ya;qc=Wa;break}else{Yua(G);k[F>>2]=27468;k[eb>>2]=27488;k[ab>>2]=27560;Yua(bb);Ava(ab);vva(eb);break e}}else La=205;while(0);if((La|0)==205){db=Rb()|0;pc=Q;qc=db}k[F>>2]=27468;k[eb>>2]=27488;k[ab>>2]=27560;Yua(bb);Ava(ab);vva(eb);Pa=pc;Qa=qc;Qb(Qa|0)}while(0);lc=nc;mc=oc;vva(eb);Qb(mc|0)}while(0);if((La|0)==182){Fa=Rb()|0;dc=Q;ec=Fa}k[A>>2]=27468;k[Ba>>2]=27488;k[Ca>>2]=27560;Yua(Ma);Ava(Ca);vva(Ba);Pa=dc;Qa=ec;Qb(Qa|0)}while(0);$b=bc;ac=cc;vva(Ba);Qb(ac|0)}while(0);ua=a+32|0;g:do if(!(k[ua>>2]|0)){Ca=P+56|0;Ja=P+4|0;k[P>>2]=27524;k[Ca>>2]=27544;B=0;wa(508,P+56|0,Ja|0);xa=B;B=0;if(xa&1){xa=Rb()|0;rc=Q;sc=xa;vva(Ca);Qb(sc|0)}k[P+128>>2]=0;k[P+132>>2]=-1;k[P>>2]=27468;k[Ca>>2]=27488;B=0;va(448,Ja|0);xa=B;B=0;do if(xa&1){Fa=Rb()|0;tc=Q;uc=Fa}else{k[Ja>>2]=27560;Fa=P+36|0;k[Fa>>2]=0;k[Fa+4>>2]=0;k[Fa+8>>2]=0;k[Fa+12>>2]=0;k[P+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ja|0,c|0);Ka=B;B=0;if(Ka&1){Ka=Rb()|0;ab=Q;Yua(c);Yua(Fa);Ava(Ja);tc=ab;uc=Ka;break}Yua(c);B=0;Ia(40,P|0,139388,15)|0;Ka=B;B=0;do if(!(Ka&1)){B=0;wa(510,R|0,Ja|0);ab=B;B=0;if(ab&1){La=284;break}B=0;ya(424,R|0)|0;ab=B;B=0;if(ab&1){ab=Rb()|0;$a=Q;Yua(R);vc=$a;wc=ab;break}else{Yua(R);k[P>>2]=27468;k[Ca>>2]=27488;k[Ja>>2]=27560;Yua(Fa);Ava(Ja);vva(Ca);break g}}else La=284;while(0);if((La|0)==284){Ka=Rb()|0;vc=Q;wc=Ka}k[P>>2]=27468;k[Ca>>2]=27488;k[Ja>>2]=27560;Yua(Fa);Ava(Ja);vva(Ca);Pa=vc;Qa=wc;Qb(Qa|0)}while(0);rc=tc;sc=uc;vva(Ca);Qb(sc|0)}else{Ja=J+56|0;xa=J+4|0;k[J>>2]=27524;k[Ja>>2]=27544;B=0;wa(508,J+56|0,xa|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;xc=Q;yc=Ba;vva(Ja);Qb(yc|0)}k[J+128>>2]=0;k[J+132>>2]=-1;k[J>>2]=27468;k[Ja>>2]=27488;B=0;va(448,xa|0);Ba=B;B=0;do if(Ba&1){Ka=Rb()|0;zc=Q;Ac=Ka}else{k[xa>>2]=27560;Ka=J+36|0;k[Ka>>2]=0;k[Ka+4>>2]=0;k[Ka+8>>2]=0;k[Ka+12>>2]=0;k[J+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,xa|0,c|0);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;ab=Q;Yua(c);Yua(Ka);Ava(xa);zc=ab;Ac=Ma;break}Yua(c);B=0;Ia(40,J|0,139373,14)|0;Ma=B;B=0;do if(Ma&1)La=246;else{B=0;wa(510,K|0,xa|0);ab=B;B=0;if(ab&1){La=246;break}B=0;ya(424,K|0)|0;ab=B;B=0;if(ab&1){ab=Rb()|0;$a=Q;Yua(K);Bc=$a;Cc=ab;break}Yua(K);k[J>>2]=27468;k[Ja>>2]=27488;k[xa>>2]=27560;Yua(Ka);Ava(xa);vva(Ja);h:do if((k[ta>>2]|0)>0){ab=L+56|0;$a=L+4|0;db=L+56|0;fb=L+128|0;gb=L+132|0;cb=L+36|0;Wa=L+52|0;Ya=0;while(1){k[L>>2]=27524;k[ab>>2]=27544;B=0;wa(508,db|0,$a|0);Fb=B;B=0;if(Fb&1){La=253;break}k[fb>>2]=0;k[gb>>2]=-1;k[L>>2]=27468;k[ab>>2]=27488;B=0;va(448,$a|0);Fb=B;B=0;if(Fb&1){La=254;break}k[$a>>2]=27560;k[cb>>2]=0;k[cb+4>>2]=0;k[cb+8>>2]=0;k[cb+12>>2]=0;k[Wa>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,$a|0,c|0);Fb=B;B=0;if(Fb&1){La=252;break}Yua(c);B=0;Fb=Ia(40,L|0,149175,1)|0;Gb=B;B=0;if(Gb&1){La=263;break}B=0;Gb=Sa(1,Fb|0,+(+p[(k[ua>>2]|0)+(Ya<<3)>>3]))|0;Fb=B;B=0;if(Fb&1){La=263;break}B=0;Ia(40,Gb|0,149177,1)|0;Gb=B;B=0;if(Gb&1){La=263;break}B=0;wa(510,M|0,$a|0);Gb=B;B=0;if(Gb&1){La=263;break}B=0;ya(424,M|0)|0;Gb=B;B=0;if(Gb&1){La=264;break}Yua(M);k[L>>2]=27468;k[ab>>2]=27488;k[$a>>2]=27560;Yua(cb);Ava($a);vva(ab);Ya=Ya+1|0;if((Ya|0)>=(k[ta>>2]|0))break h}if((La|0)==252){Ya=Rb()|0;Wa=Q;Yua(c);Yua(cb);Ava($a);Dc=Wa;Ec=Ya;La=255}else if((La|0)==253){Ya=Rb()|0;Fc=Q;Gc=Ya;vva(ab);Qb(Gc|0)}else if((La|0)==254){Ya=Rb()|0;Dc=Q;Ec=Ya;La=255}else if((La|0)==263){Ya=Rb()|0;Hc=Q;Ic=Ya;La=265}else if((La|0)==264){Ya=Rb()|0;Wa=Q;Yua(M);Hc=Wa;Ic=Ya;La=265}if((La|0)==255){Fc=Dc;Gc=Ec;vva(ab);Qb(Gc|0)}else if((La|0)==265){k[L>>2]=27468;k[ab>>2]=27488;k[$a>>2]=27560;Yua(cb);Ava($a);vva(ab);Pa=Hc;Qa=Ic;Qb(Qa|0)}}while(0);eb=N+56|0;Ya=N+4|0;k[N>>2]=27524;k[eb>>2]=27544;B=0;wa(508,N+56|0,Ya|0);Wa=B;B=0;if(Wa&1){Wa=Rb()|0;Jc=Q;Kc=Wa;vva(eb);Qb(Kc|0)}k[N+128>>2]=0;k[N+132>>2]=-1;k[N>>2]=27468;k[eb>>2]=27488;B=0;va(448,Ya|0);Wa=B;B=0;do if(Wa&1){gb=Rb()|0;Lc=Q;Mc=gb}else{k[Ya>>2]=27560;gb=N+36|0;k[gb>>2]=0;k[gb+4>>2]=0;k[gb+8>>2]=0;k[gb+12>>2]=0;k[N+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ya|0,c|0);fb=B;B=0;if(fb&1){fb=Rb()|0;db=Q;Yua(c);Yua(gb);Ava(Ya);Lc=db;Mc=fb;break}Yua(c);B=0;Ia(40,N|0,149198,2)|0;fb=B;B=0;do if(!(fb&1)){B=0;wa(510,O|0,Ya|0);db=B;B=0;if(db&1){La=269;break}B=0;ya(424,O|0)|0;db=B;B=0;if(db&1){db=Rb()|0;bb=Q;Yua(O);Nc=bb;Oc=db;break}else{Yua(O);k[N>>2]=27468;k[eb>>2]=27488;k[Ya>>2]=27560;Yua(gb);Ava(Ya);vva(eb);break g}}else La=269;while(0);if((La|0)==269){fb=Rb()|0;Nc=Q;Oc=fb}k[N>>2]=27468;k[eb>>2]=27488;k[Ya>>2]=27560;Yua(gb);Ava(Ya);vva(eb);Pa=Nc;Qa=Oc;Qb(Qa|0)}while(0);Jc=Lc;Kc=Mc;vva(eb);Qb(Kc|0)}while(0);if((La|0)==246){Ma=Rb()|0;Bc=Q;Cc=Ma}k[J>>2]=27468;k[Ja>>2]=27488;k[xa>>2]=27560;Yua(Ka);Ava(xa);vva(Ja);Pa=Bc;Qa=Cc;Qb(Qa|0)}while(0);xc=zc;yc=Ac;vva(Ja);Qb(yc|0)}while(0);ta=S+56|0;ua=S+4|0;k[S>>2]=27524;k[ta>>2]=27544;B=0;wa(508,S+56|0,ua|0);xa=B;B=0;if(xa&1){xa=Rb()|0;Pc=Q;Qc=xa;vva(ta);Qb(Qc|0)}k[S+128>>2]=0;k[S+132>>2]=-1;k[S>>2]=27468;k[ta>>2]=27488;B=0;va(448,ua|0);xa=B;B=0;do if(xa&1){Ba=Rb()|0;Rc=Q;Sc=Ba}else{k[ua>>2]=27560;Ba=S+36|0;k[Ba>>2]=0;k[Ba+4>>2]=0;k[Ba+8>>2]=0;k[Ba+12>>2]=0;k[S+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ua|0,c|0);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Ma=Q;Yua(c);Yua(Ba);Ava(ua);Rc=Ma;Sc=Ca;break}Yua(c);B=0;Ca=Ia(40,S|0,139435,12)|0;Ma=B;B=0;do if(Ma&1)La=340;else{B=0;Fa=Sa(1,Ca|0,+(+p[a+8>>3]))|0;Ya=B;B=0;if(Ya&1){La=340;break}B=0;Ia(40,Fa|0,149177,1)|0;Fa=B;B=0;if(Fa&1){La=340;break}B=0;wa(510,T|0,ua|0);Fa=B;B=0;if(Fa&1){La=340;break}B=0;ya(424,T|0)|0;Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ya=Q;Yua(T);Tc=Ya;Uc=Fa;break}Yua(T);k[S>>2]=27468;k[ta>>2]=27488;k[ua>>2]=27560;Yua(Ba);Ava(ua);vva(ta);Fa=U+56|0;Ya=U+4|0;k[U>>2]=27524;k[Fa>>2]=27544;B=0;wa(508,U+56|0,Ya|0);Wa=B;B=0;if(Wa&1){Wa=Rb()|0;Vc=Q;Wc=Wa;vva(Fa);Qb(Wc|0)}k[U+128>>2]=0;k[U+132>>2]=-1;k[U>>2]=27468;k[Fa>>2]=27488;B=0;va(448,Ya|0);Wa=B;B=0;do if(Wa&1){fb=Rb()|0;Xc=Q;Yc=fb}else{k[Ya>>2]=27560;fb=U+36|0;k[fb>>2]=0;k[fb+4>>2]=0;k[fb+8>>2]=0;k[fb+12>>2]=0;k[U+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ya|0,c|0);ab=B;B=0;if(ab&1){ab=Rb()|0;$a=Q;Yua(c);Yua(fb);Ava(Ya);Xc=$a;Yc=ab;break}Yua(c);B=0;ab=Ia(40,U|0,139448,12)|0;$a=B;B=0;do if($a&1)La=343;else{B=0;cb=Sa(1,ab|0,+(+p[a+40>>3]))|0;db=B;B=0;if(db&1){La=343;break}B=0;Ia(40,cb|0,149177,1)|0;cb=B;B=0;if(cb&1){La=343;break}B=0;wa(510,V|0,Ya|0);cb=B;B=0;if(cb&1){La=343;break}B=0;ya(424,V|0)|0;cb=B;B=0;if(cb&1){cb=Rb()|0;db=Q;Yua(V);Zc=db;_c=cb;break}Yua(V);k[U>>2]=27468;k[Fa>>2]=27488;k[Ya>>2]=27560;Yua(fb);Ava(Ya);vva(Fa);cb=W+56|0;db=W+4|0;k[W>>2]=27524;k[cb>>2]=27544;B=0;wa(508,W+56|0,db|0);bb=B;B=0;if(bb&1){bb=Rb()|0;$c=Q;ad=bb;vva(cb);Qb(ad|0)}k[W+128>>2]=0;k[W+132>>2]=-1;k[W>>2]=27468;k[cb>>2]=27488;B=0;va(448,db|0);bb=B;B=0;do if(bb&1){Gb=Rb()|0;bd=Q;cd=Gb}else{k[db>>2]=27560;Gb=W+36|0;k[Gb>>2]=0;k[Gb+4>>2]=0;k[Gb+8>>2]=0;k[Gb+12>>2]=0;k[W+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,db|0,c|0);Fb=B;B=0;if(Fb&1){Fb=Rb()|0;dd=Q;Yua(c);Yua(Gb);Ava(db);bd=dd;cd=Fb;break}Yua(c);B=0;Fb=Ia(40,W|0,139461,12)|0;dd=B;B=0;do if(dd&1)La=346;else{B=0;ed=Sa(1,Fb|0,+(+p[a+48>>3]))|0;fd=B;B=0;if(fd&1){La=346;break}B=0;Ia(40,ed|0,149177,1)|0;ed=B;B=0;if(ed&1){La=346;break}B=0;wa(510,X|0,db|0);ed=B;B=0;if(ed&1){La=346;break}B=0;ya(424,X|0)|0;ed=B;B=0;if(ed&1){ed=Rb()|0;fd=Q;Yua(X);gd=fd;hd=ed;break}Yua(X);k[W>>2]=27468;k[cb>>2]=27488;k[db>>2]=27560;Yua(Gb);Ava(db);vva(cb);ed=Y+56|0;fd=Y+4|0;k[Y>>2]=27524;k[ed>>2]=27544;B=0;wa(508,Y+56|0,fd|0);id=B;B=0;if(id&1){id=Rb()|0;jd=Q;kd=id;vva(ed);Qb(kd|0)}k[Y+128>>2]=0;k[Y+132>>2]=-1;k[Y>>2]=27468;k[ed>>2]=27488;B=0;va(448,fd|0);id=B;B=0;do if(id&1){ld=Rb()|0;md=Q;nd=ld}else{k[fd>>2]=27560;ld=Y+36|0;k[ld>>2]=0;k[ld+4>>2]=0;k[ld+8>>2]=0;k[ld+12>>2]=0;k[Y+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,fd|0,c|0);od=B;B=0;if(od&1){od=Rb()|0;pd=Q;Yua(c);Yua(ld);Ava(fd);md=pd;nd=od;break}Yua(c);B=0;od=Ia(40,Y|0,139474,12)|0;pd=B;B=0;do if(!(pd&1)){B=0;qd=Sa(1,od|0,+(+p[a+56>>3]))|0;rd=B;B=0;if(rd&1){La=349;break}B=0;Ia(40,qd|0,149177,1)|0;qd=B;B=0;if(qd&1){La=349;break}B=0;wa(510,Z|0,fd|0);qd=B;B=0;if(qd&1){La=349;break}B=0;ya(424,Z|0)|0;qd=B;B=0;if(qd&1){qd=Rb()|0;rd=Q;Yua(Z);sd=rd;td=qd;break}else{Yua(Z);k[Y>>2]=27468;k[ed>>2]=27488;k[fd>>2]=27560;Yua(ld);Ava(fd);vva(ed);r=b;return}}else La=349;while(0);if((La|0)==349){od=Rb()|0;sd=Q;td=od}k[Y>>2]=27468;k[ed>>2]=27488;k[fd>>2]=27560;Yua(ld);Ava(fd);vva(ed);Pa=sd;Qa=td;Qb(Qa|0)}while(0);jd=md;kd=nd;vva(ed);Qb(kd|0)}while(0);if((La|0)==346){Fb=Rb()|0;gd=Q;hd=Fb}k[W>>2]=27468;k[cb>>2]=27488;k[db>>2]=27560;Yua(Gb);Ava(db);vva(cb);Pa=gd;Qa=hd;Qb(Qa|0)}while(0);$c=bd;ad=cd;vva(cb);Qb(ad|0)}while(0);if((La|0)==343){ab=Rb()|0;Zc=Q;_c=ab}k[U>>2]=27468;k[Fa>>2]=27488;k[Ya>>2]=27560;Yua(fb);Ava(Ya);vva(Fa);Pa=Zc;Qa=_c;Qb(Qa|0)}while(0);Vc=Xc;Wc=Yc;vva(Fa);Qb(Wc|0)}while(0);if((La|0)==340){Ca=Rb()|0;Tc=Q;Uc=Ca}k[S>>2]=27468;k[ta>>2]=27488;k[ua>>2]=27560;Yua(Ba);Ava(ua);vva(ta);Pa=Tc;Qa=Uc;Qb(Qa|0)}while(0);Pc=Rc;Qc=Sc;vva(ta);Qb(Qc|0)}else La=51;while(0);if((La|0)==51){ra=Rb()|0;za=Q;Aa=ra}k[f>>2]=27468;k[ha>>2]=27488;k[ia>>2]=27560;Yua(oa);Ava(ia);vva(ha);Pa=za;Qa=Aa;Qb(Qa|0)}while(0);ma=pa;na=qa;vva(ha);Qb(na|0)}else La=48;while(0);if((La|0)==48){ga=Rb()|0;ja=Q;ka=ga}k[d>>2]=27468;k[_>>2]=27488;k[$>>2]=27560;Yua(da);Ava($);vva(_);Pa=ja;Qa=ka;Qb(Qa|0)}while(0);ba=ea;ca=fa;vva(_);Qb(ca|0)}function Lja(a){a=a|0;return 930}function Mja(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=(b|0)>(c|0);l=j?b:c;m=j?c:b;b=(m|0)==0;if(b&(l|0)==1){p[a+40>>3]=.5;p[a+48>>3]=.5;p[a+56>>3]=0.0;r=d;return}c=(l|0)==2;if(b&c){p[a+40>>3]=.5;p[a+48>>3]=0.0;p[a+56>>3]=.5;r=d;return}if((m|0)==1&c){p[a+40>>3]=0.0;p[a+48>>3]=.5;p[a+56>>3]=.5;r=d;return}d=f+56|0;a=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,a|0);c=B;B=0;if(c&1){c=Rb()|0;n=Q;o=c;vva(d);Qb(o|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,a|0);c=B;B=0;do if(c&1){b=Rb()|0;q=Q;s=b}else{k[a>>2]=27560;b=f+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,a|0,e|0);j=B;B=0;if(j&1){j=Rb()|0;t=Q;Yua(e);Yua(b);Ava(a);q=t;s=j;break}Yua(e);B=0;j=Ia(40,f|0,138656,60)|0;t=B;B=0;if(((((!(t&1)?(B=0,t=Xa(242,j|0,m|0)|0,j=B,B=0,!(j&1)):0)?(B=0,j=Ia(40,t|0,138717,5)|0,t=B,B=0,!(t&1)):0)?(B=0,t=Xa(242,j|0,l|0)|0,j=B,B=0,!(j&1)):0)?(B=0,j=Ia(40,t|0,141170,1)|0,t=B,B=0,!(t&1)):0)?(B=0,Xa(239,j|0,0)|0,j=B,B=0,!(j&1)):0){j=Ab(20)|0;B=0;eb(502,g|0,138496,74);t=B;B=0;do if(!(t&1)){B=0;eb(502,h|0,138723,15);u=B;B=0;if(u&1){u=Rb()|0;v=Q;Yua(g);w=u;x=v;break}B=0;wa(510,i|0,a|0);v=B;B=0;if(v&1){v=Rb()|0;y=v;z=Q;A=1}else{B=0;ua(163,j|0,g|0,h|0,366,i|0);v=B;B=0;if(v&1)C=1;else{B=0;eb(503,j|0,1240,229);B=0;C=0}v=Rb()|0;u=Q;Yua(i);y=v;z=u;A=C}Yua(h);Yua(g);if(A){w=y;x=z}else{D=y;E=z;k[f>>2]=27468;k[d>>2]=27488;k[a>>2]=27560;Yua(b);Ava(a);vva(d);Qb(D|0)}}else{u=Rb()|0;w=u;x=Q}while(0);zb(j|0);D=w;E=x;k[f>>2]=27468;k[d>>2]=27488;k[a>>2]=27560;Yua(b);Ava(a);vva(d);Qb(D|0)}t=Rb()|0;D=t;E=Q;k[f>>2]=27468;k[d>>2]=27488;k[a>>2]=27560;Yua(b);Ava(a);vva(d);Qb(D|0)}while(0);n=q;o=s;vva(d);Qb(o|0)}function Nja(a,b){a=a|0;b=b|0;p[a+8>>3]=+p[(k[a+20>>2]|0)+(b<<3)>>3];p[a+40>>3]=+p[(k[a+24>>2]|0)+(b<<3)>>3];p[a+48>>3]=+p[(k[a+28>>2]|0)+(b<<3)>>3];p[a+56>>3]=+p[(k[a+32>>2]|0)+(b<<3)>>3];return}function Oja(a,b,c,d){a=a|0;b=+b;c=+c;d=d|0;var e=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;e=+p[d>>3];f=+p[d+8>>3];g=+p[d+24>>3];h=+p[d+32>>3];i=+p[d+48>>3];j=+p[d+56>>3];k=(f*i+(e*h+(g*j-h*i)-f*g)-e*j)*.5;l=b-i;b=c-j;c=(l*(h-j)-(g-i)*b)/k;p[a+40>>3]=c;g=((e-i)*b-l*(f-j))/k;p[a+48>>3]=g;p[a+56>>3]=1.0-c-g;return}function Pja(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;switch(b|0){case 0:{p[a+40>>3]=1.0;b=a+48|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;r=c;return}case 1:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;r=c;return}case 2:{b=a+40|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;p[a+56>>3]=1.0;r=c;return}default:{c=e+56|0;a=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,a|0);b=B;B=0;if(b&1){b=Rb()|0;i=Q;j=b;vva(c);Qb(j|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,a|0);b=B;B=0;do if(b&1){l=Rb()|0;m=Q;n=l}else{k[a>>2]=27560;l=e+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,a|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;q=Q;Yua(d);Yua(l);Ava(a);m=q;n=o;break}Yua(d);B=0;o=Ia(40,e|0,138739,31)|0;q=B;B=0;if(!(q&1)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,f|0,138496,74);q=B;B=0;do if(!(q&1)){B=0;eb(502,g|0,139532,11);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(f);u=t;v=s;break}B=0;wa(510,h|0,a|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,o|0,f|0,g|0,419,h|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,o|0,1240,229);B=0;z=0}s=Rb()|0;t=Q;Yua(h);w=t;x=s;y=z}Yua(g);Yua(f);if(y){u=w;v=x}else{A=w;C=x;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(c);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(o|0);A=u;C=v;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(c);Qb(C|0)}q=Rb()|0;A=Q;C=q;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(c);Qb(C|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}}}function Qja(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0;d=r;r=r+1056|0;e=d+1040|0;f=d+856|0;g=d+1028|0;h=d+1016|0;i=d+1004|0;j=d+704|0;l=d+992|0;m=d+840|0;n=d+552|0;o=d+568|0;q=d+268|0;s=d+256|0;t=d+108|0;u=d+416|0;v=d+96|0;w=d+84|0;x=d+72|0;y=d+280|0;z=d+60|0;A=d+48|0;C=d+36|0;D=d+120|0;E=d+24|0;F=d+12|0;G=d;switch(b|0){case 736:{if(!c){p[a+40>>3]=.3333333333333333;p[a+48>>3]=.3333333333333333;p[a+56>>3]=.3333333333333333;r=d;return}H=f+56|0;I=f+4|0;k[f>>2]=27524;k[H>>2]=27544;B=0;wa(508,f+56|0,I|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;L=J;vva(H);Qb(L|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[H>>2]=27488;B=0;va(448,I|0);J=B;B=0;do if(J&1){M=Rb()|0;N=Q;O=M}else{k[I>>2]=27560;M=f+36|0;k[M>>2]=0;k[M+4>>2]=0;k[M+8>>2]=0;k[M+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,I|0,e|0);P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(e);Yua(M);Ava(I);N=R;O=P;break}Yua(e);B=0;P=Ia(40,f|0,138771,22)|0;R=B;B=0;a:do if(!(R&1)?(B=0,Xa(239,P|0,0)|0,S=B,B=0,!(S&1)):0){S=Ab(20)|0;B=0;eb(502,g|0,138496,74);T=B;B=0;do if(!(T&1)){B=0;eb(502,h|0,139574,9);U=B;B=0;if(U&1){U=Rb()|0;V=Q;Yua(g);W=V;X=U;break}B=0;wa(510,i|0,I|0);U=B;B=0;if(U&1){U=Rb()|0;Y=Q;Z=U;_=1}else{B=0;ua(163,S|0,g|0,h|0,434,i|0);U=B;B=0;if(U&1)$=1;else{B=0;eb(503,S|0,1240,229);B=0;$=0}U=Rb()|0;V=Q;Yua(i);Y=V;Z=U;_=$}Yua(h);Yua(g);if(_){W=Y;X=Z}else{aa=Y;ba=Z;break a}}else{U=Rb()|0;W=Q;X=U}while(0);zb(S|0);aa=W;ba=X}else ca=19;while(0);if((ca|0)==19){P=Rb()|0;aa=Q;ba=P}k[f>>2]=27468;k[H>>2]=27488;k[I>>2]=27560;Yua(M);Ava(I);vva(H);da=aa;ea=ba;Qb(ea|0)}while(0);K=N;L=O;vva(H);Qb(L|0);break}case 739:case 738:{switch(c|0){case 0:{p[a+40>>3]=1.0;L=a+48|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;r=d;return}case 1:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;r=d;return}case 2:{L=a+40|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;p[a+56>>3]=1.0;r=d;return}default:{L=j+56|0;H=j+4|0;k[j>>2]=27524;k[L>>2]=27544;B=0;wa(508,j+56|0,H|0);O=B;B=0;if(O&1){O=Rb()|0;fa=Q;ga=O;vva(L);Qb(ga|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[L>>2]=27488;B=0;va(448,H|0);O=B;B=0;do if(O&1){N=Rb()|0;ha=Q;ia=N}else{k[H>>2]=27560;N=j+36|0;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;k[j+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,H|0,e|0);K=B;B=0;if(K&1){K=Rb()|0;ba=Q;Yua(e);Yua(N);Ava(H);ha=ba;ia=K;break}Yua(e);B=0;K=Ia(40,j|0,138794,29)|0;ba=B;B=0;b:do if(!(ba&1)?(B=0,Xa(239,K|0,0)|0,aa=B,B=0,!(aa&1)):0){aa=Ab(20)|0;B=0;eb(502,l|0,138496,74);I=B;B=0;do if(!(I&1)){B=0;eb(502,m|0,139574,9);f=B;B=0;if(f&1){f=Rb()|0;X=Q;Yua(l);ja=X;ka=f;break}B=0;wa(510,n|0,H|0);f=B;B=0;if(f&1){f=Rb()|0;la=1;ma=Q;na=f}else{B=0;ua(163,aa|0,l|0,m|0,442,n|0);f=B;B=0;if(f&1)oa=1;else{B=0;eb(503,aa|0,1240,229);B=0;oa=0}f=Rb()|0;X=Q;Yua(n);la=oa;ma=X;na=f}Yua(m);Yua(l);if(la){ja=ma;ka=na}else{pa=ma;qa=na;break b}}else{f=Rb()|0;ja=Q;ka=f}while(0);zb(aa|0);pa=ja;qa=ka}else ca=46;while(0);if((ca|0)==46){K=Rb()|0;pa=Q;qa=K}k[j>>2]=27468;k[L>>2]=27488;k[H>>2]=27560;Yua(N);Ava(H);vva(L);da=pa;ea=qa;Qb(ea|0)}while(0);fa=ha;ga=ia;vva(L);Qb(ga|0)}}break}case 741:case 740:{switch(c|0){case 0:{p[a+40>>3]=1.0;ga=a+48|0;k[ga>>2]=0;k[ga+4>>2]=0;k[ga+8>>2]=0;k[ga+12>>2]=0;r=d;return}case 1:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;r=d;return}case 2:{ga=a+40|0;k[ga>>2]=0;k[ga+4>>2]=0;k[ga+8>>2]=0;k[ga+12>>2]=0;p[a+56>>3]=1.0;r=d;return}case 3:{p[a+40>>3]=.3333333333333333;p[a+48>>3]=.3333333333333333;p[a+56>>3]=.3333333333333333;r=d;return}default:{ga=o+56|0;L=o+4|0;k[o>>2]=27524;k[ga>>2]=27544;B=0;wa(508,o+56|0,L|0);ia=B;B=0;if(ia&1){ia=Rb()|0;ra=Q;sa=ia;vva(ga);Qb(sa|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[ga>>2]=27488;B=0;va(448,L|0);ia=B;B=0;do if(ia&1){ha=Rb()|0;ta=Q;xa=ha}else{k[L>>2]=27560;ha=o+36|0;k[ha>>2]=0;k[ha+4>>2]=0;k[ha+8>>2]=0;k[ha+12>>2]=0;k[o+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,L|0,e|0);fa=B;B=0;if(fa&1){fa=Rb()|0;qa=Q;Yua(e);Yua(ha);Ava(L);ta=qa;xa=fa;break}Yua(e);B=0;fa=Ia(40,o|0,138988,29)|0;qa=B;B=0;c:do if(!(qa&1)?(B=0,Xa(239,fa|0,0)|0,pa=B,B=0,!(pa&1)):0){pa=Ab(20)|0;B=0;eb(502,q|0,138496,74);H=B;B=0;do if(!(H&1)){B=0;eb(502,s|0,139574,9);j=B;B=0;if(j&1){j=Rb()|0;ka=Q;Yua(q);za=ka;Aa=j;break}B=0;wa(510,t|0,L|0);j=B;B=0;if(j&1){j=Rb()|0;Ba=1;Ca=Q;Da=j}else{B=0;ua(163,pa|0,q|0,s|0,451,t|0);j=B;B=0;if(j&1)Ea=1;else{B=0;eb(503,pa|0,1240,229);B=0;Ea=0}j=Rb()|0;ka=Q;Yua(t);Ba=Ea;Ca=ka;Da=j}Yua(s);Yua(q);if(Ba){za=Ca;Aa=Da}else{Fa=Ca;Ga=Da;break c}}else{j=Rb()|0;za=Q;Aa=j}while(0);zb(pa|0);Fa=za;Ga=Aa}else ca=74;while(0);if((ca|0)==74){fa=Rb()|0;Fa=Q;Ga=fa}k[o>>2]=27468;k[ga>>2]=27488;k[L>>2]=27560;Yua(ha);Ava(L);vva(ga);da=Fa;ea=Ga;Qb(ea|0)}while(0);ra=ta;sa=xa;vva(ga);Qb(sa|0)}}break}case 742:{switch(c|0){case 0:{p[a+40>>3]=1.0;sa=a+48|0;k[sa>>2]=0;k[sa+4>>2]=0;k[sa+8>>2]=0;k[sa+12>>2]=0;r=d;return}case 1:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;r=d;return}case 2:{sa=a+40|0;k[sa>>2]=0;k[sa+4>>2]=0;k[sa+8>>2]=0;k[sa+12>>2]=0;p[a+56>>3]=1.0;r=d;return}case 3:{p[a+40>>3]=0.0;p[a+48>>3]=.5;p[a+56>>3]=.5;r=d;return}case 4:{p[a+40>>3]=.5;p[a+48>>3]=0.0;p[a+56>>3]=.5;r=d;return}case 5:{p[a+40>>3]=.5;p[a+48>>3]=.5;p[a+56>>3]=0.0;r=d;return}default:{sa=u+56|0;ga=u+4|0;k[u>>2]=27524;k[sa>>2]=27544;B=0;wa(508,u+56|0,ga|0);xa=B;B=0;if(xa&1){xa=Rb()|0;Ha=Q;Ja=xa;vva(sa);Qb(Ja|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[sa>>2]=27488;B=0;va(448,ga|0);xa=B;B=0;do if(xa&1){ta=Rb()|0;Ka=Q;La=ta}else{k[ga>>2]=27560;ta=u+36|0;k[ta>>2]=0;k[ta+4>>2]=0;k[ta+8>>2]=0;k[ta+12>>2]=0;k[u+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,ga|0,e|0);ra=B;B=0;if(ra&1){ra=Rb()|0;Ga=Q;Yua(e);Yua(ta);Ava(ga);Ka=Ga;La=ra;break}Yua(e);B=0;ra=Ia(40,u|0,139544,29)|0;Ga=B;B=0;d:do if(!(Ga&1)?(B=0,Xa(239,ra|0,0)|0,Fa=B,B=0,!(Fa&1)):0){Fa=Ab(20)|0;B=0;eb(502,v|0,138496,74);L=B;B=0;do if(!(L&1)){B=0;eb(502,w|0,139574,9);o=B;B=0;if(o&1){o=Rb()|0;Aa=Q;Yua(v);Ma=Aa;Na=o;break}B=0;wa(510,x|0,ga|0);o=B;B=0;if(o&1){o=Rb()|0;Oa=Q;Pa=o;Qa=1}else{B=0;ua(163,Fa|0,v|0,w|0,462,x|0);o=B;B=0;if(o&1)Ra=1;else{B=0;eb(503,Fa|0,1240,229);B=0;Ra=0}o=Rb()|0;Aa=Q;Yua(x);Oa=Aa;Pa=o;Qa=Ra}Yua(w);Yua(v);if(Qa){Ma=Oa;Na=Pa}else{Sa=Oa;Ta=Pa;break d}}else{o=Rb()|0;Ma=Q;Na=o}while(0);zb(Fa|0);Sa=Ma;Ta=Na}else ca=104;while(0);if((ca|0)==104){ra=Rb()|0;Sa=Q;Ta=ra}k[u>>2]=27468;k[sa>>2]=27488;k[ga>>2]=27560;Yua(ta);Ava(ga);vva(sa);da=Sa;ea=Ta;Qb(ea|0)}while(0);Ha=Ka;Ja=La;vva(sa);Qb(Ja|0)}}break}case 744:case 743:{switch(c|0){case 0:{p[a+40>>3]=1.0;c=a+48|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;r=d;return}case 1:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;r=d;return}case 2:{c=a+40|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;p[a+56>>3]=1.0;r=d;return}case 3:{p[a+40>>3]=0.0;p[a+48>>3]=.5;p[a+56>>3]=.5;r=d;return}case 4:{p[a+40>>3]=.5;p[a+48>>3]=0.0;p[a+56>>3]=.5;r=d;return}case 5:{p[a+40>>3]=.5;p[a+48>>3]=.5;p[a+56>>3]=0.0;r=d;return}case 6:{p[a+40>>3]=.3333333333333333;p[a+48>>3]=.3333333333333333;p[a+56>>3]=.3333333333333333;r=d;return}default:{d=y+56|0;a=y+4|0;k[y>>2]=27524;k[d>>2]=27544;B=0;wa(508,y+56|0,a|0);c=B;B=0;if(c&1){c=Rb()|0;Ua=Q;Va=c;vva(d);Qb(Va|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[d>>2]=27488;B=0;va(448,a|0);c=B;B=0;do if(c&1){Ja=Rb()|0;Wa=Q;Ya=Ja}else{k[a>>2]=27560;Ja=y+36|0;k[Ja>>2]=0;k[Ja+4>>2]=0;k[Ja+8>>2]=0;k[Ja+12>>2]=0;k[y+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,a|0,e|0);sa=B;B=0;if(sa&1){sa=Rb()|0;La=Q;Yua(e);Yua(Ja);Ava(a);Wa=La;Ya=sa;break}Yua(e);B=0;sa=Ia(40,y|0,139645,29)|0;La=B;B=0;e:do if(!(La&1)?(B=0,Xa(239,sa|0,0)|0,Ka=B,B=0,!(Ka&1)):0){Ka=Ab(20)|0;B=0;eb(502,z|0,138496,74);Ha=B;B=0;do if(!(Ha&1)){B=0;eb(502,A|0,139574,9);Ta=B;B=0;if(Ta&1){Ta=Rb()|0;Sa=Q;Yua(z);Za=Sa;_a=Ta;break}B=0;wa(510,C|0,a|0);Ta=B;B=0;if(Ta&1){Ta=Rb()|0;$a=1;ab=Q;bb=Ta}else{B=0;ua(163,Ka|0,z|0,A|0,474,C|0);Ta=B;B=0;if(Ta&1)cb=1;else{B=0;eb(503,Ka|0,1240,229);B=0;cb=0}Ta=Rb()|0;Sa=Q;Yua(C);$a=cb;ab=Sa;bb=Ta}Yua(A);Yua(z);if($a){Za=ab;_a=bb}else{db=ab;fb=bb;break e}}else{Ta=Rb()|0;Za=Q;_a=Ta}while(0);zb(Ka|0);db=Za;fb=_a}else ca=135;while(0);if((ca|0)==135){sa=Rb()|0;db=Q;fb=sa}k[y>>2]=27468;k[d>>2]=27488;k[a>>2]=27560;Yua(Ja);Ava(a);vva(d);da=db;ea=fb;Qb(ea|0)}while(0);Ua=Wa;Va=Ya;vva(d);Qb(Va|0)}}break}default:{Va=D+56|0;d=D+4|0;k[D>>2]=27524;k[Va>>2]=27544;B=0;wa(508,D+56|0,d|0);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;gb=Q;hb=Ya;vva(Va);Qb(hb|0)}k[D+128>>2]=0;k[D+132>>2]=-1;k[D>>2]=27468;k[Va>>2]=27488;B=0;va(448,d|0);Ya=B;B=0;do if(Ya&1){Wa=Rb()|0;ib=Q;jb=Wa}else{k[d>>2]=27560;Wa=D+36|0;k[Wa>>2]=0;k[Wa+4>>2]=0;k[Wa+8>>2]=0;k[Wa+12>>2]=0;k[D+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,d|0,e|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;fb=Q;Yua(e);Yua(Wa);Ava(d);ib=fb;jb=Ua;break}Yua(e);B=0;Ua=Ia(40,D|0,145867,15)|0;fb=B;B=0;f:do if((((!(fb&1)?(B=0,db=ya(427,b|0)|0,a=B,B=0,!(a&1)):0)?(a=Lta(db)|0,B=0,y=Ia(40,Ua|0,db|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,a=Ia(40,y|0,144645,14)|0,y=B,B=0,!(y&1)):0)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,E|0,138496,74);y=B;B=0;do if(!(y&1)){B=0;eb(502,F|0,139574,9);db=B;B=0;if(db&1){db=Rb()|0;_a=Q;Yua(E);kb=_a;lb=db;break}B=0;wa(510,G|0,d|0);db=B;B=0;if(db&1){db=Rb()|0;mb=1;nb=Q;ob=db}else{B=0;ua(163,a|0,E|0,F|0,477,G|0);db=B;B=0;if(db&1)pb=1;else{B=0;eb(503,a|0,1240,229);B=0;pb=0}db=Rb()|0;_a=Q;Yua(G);mb=pb;nb=_a;ob=db}Yua(F);Yua(E);if(mb){kb=nb;lb=ob}else{qb=nb;rb=ob;break f}}else{db=Rb()|0;kb=Q;lb=db}while(0);zb(a|0);qb=kb;rb=lb}else ca=161;while(0);if((ca|0)==161){Ua=Rb()|0;qb=Q;rb=Ua}k[D>>2]=27468;k[Va>>2]=27488;k[d>>2]=27560;Yua(Wa);Ava(d);vva(Va);da=qb;ea=rb;Qb(ea|0)}while(0);gb=ib;hb=jb;vva(Va);Qb(hb|0)}}}function Rja(a){a=a|0;return 0}function Sja(a){a=a|0;return k[a+16>>2]|0}function Tja(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,138496,74);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,139078,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,510,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function Uja(a){a=a|0;var b=0;k[a>>2]=40780;k[a+16>>2]=-1;b=a+20|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;p[a+8>>3]=-9999.0;p[a+40>>3]=-9999.0;p[a+48>>3]=-9999.0;p[a+56>>3]=-9999.0;p[a+64>>3]=-9999.0;return}function Vja(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0.0,i=0.0;k[a>>2]=40780;c=a+16|0;d=a+20|0;Vna(c,a+24|0,a+28|0,a+32|0,a+36|0,d,b);b=k[c>>2]|0;c=(b|0)>0;if(c){e=k[d>>2]|0;f=0;g=0.0;while(1){h=g+ +p[e+(f<<3)>>3];f=f+1|0;if((f|0)>=(b|0)){i=h;break}else g=h}if(!(i!=1.0|c^1)){c=k[d>>2]|0;d=0;do{f=c+(d<<3)|0;p[f>>3]=+p[f>>3]/6.0;d=d+1|0}while((d|0)<(b|0))}}p[a+8>>3]=-9999.0;p[a+40>>3]=-9999.0;p[a+48>>3]=-9999.0;p[a+56>>3]=-9999.0;return}function Wja(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0;f=r;r=r+192|0;g=f+176|0;h=f+40|0;i=f+24|0;j=f+12|0;l=f;k[a>>2]=40780;m=(b|0)==0;n=(d|0)==2;do if(m&(c|0)==1&n){o=a+16|0;B=0;La(39,o|0,a+24|0,a+28|0,a+32|0,a+20|0,e|0);p=B;B=0;if(!(p&1)?(p=k[o>>2]|0,B=0,o=ya(422,(p>>>0>536870911?-1:p<<3)|0)|0,q=B,B=0,!(q&1)):0){k[a+36>>2]=o;if((p|0)<=0){r=f;return}WEa(o|0,0,((p|0)>1?p:1)<<3|0)|0;r=f;return}else s=6}else{p=(c|0)==3;if(m&p&(d|0)==1){o=a+16|0;B=0;La(39,o|0,a+24|0,a+28|0,a+36|0,a+20|0,e|0);q=B;B=0;if(q&1){s=6;break}q=k[o>>2]|0;B=0;o=ya(422,(q>>>0>536870911?-1:q<<3)|0)|0;t=B;B=0;if(t&1){s=6;break}k[a+32>>2]=o;if((q|0)<=0){r=f;return}WEa(o|0,0,((q|0)>1?q:1)<<3|0)|0;r=f;return}if((b|0)==1&p&n){p=a+16|0;B=0;La(39,p|0,a+28|0,a+32|0,a+36|0,a+20|0,e|0);q=B;B=0;if(q&1){s=6;break}q=k[p>>2]|0;B=0;p=ya(422,(q>>>0>536870911?-1:q<<3)|0)|0;o=B;B=0;if(o&1){s=6;break}k[a+24>>2]=p;if((q|0)<=0){r=f;return}WEa(p|0,0,((q|0)>1?q:1)<<3|0)|0;r=f;return}if(m&(c|0)==2&(d|0)==3){q=a+16|0;B=0;La(39,q|0,a+24|0,a+32|0,a+36|0,a+20|0,e|0);p=B;B=0;if(p&1){s=6;break}p=k[q>>2]|0;B=0;q=ya(422,(p>>>0>536870911?-1:p<<3)|0)|0;o=B;B=0;if(o&1){s=6;break}k[a+28>>2]=q;if((p|0)<=0){r=f;return}WEa(q|0,0,((p|0)>1?p:1)<<3|0)|0;r=f;return}p=h+56|0;q=h+4|0;k[h>>2]=27524;k[p>>2]=27544;B=0;wa(508,h+56|0,q|0);o=B;B=0;if(o&1){o=Rb()|0;u=Q;v=o}else{k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[p>>2]=27488;B=0;va(448,q|0);o=B;B=0;do if(o&1){t=Rb()|0;w=Q;x=t}else{k[q>>2]=27560;t=h+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[h+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,q|0,g|0);y=B;B=0;if(y&1){y=Rb()|0;z=Q;Yua(g);Yua(t);Ava(q);w=z;x=y;break}Yua(g);B=0;y=Xa(242,h|0,b|0)|0;z=B;B=0;a:do if((((((!(z&1)?(B=0,A=Ia(40,y|0,149175,1)|0,C=B,B=0,!(C&1)):0)?(B=0,C=Xa(242,A|0,c|0)|0,A=B,B=0,!(A&1)):0)?(B=0,A=Ia(40,C|0,149175,1)|0,C=B,B=0,!(C&1)):0)?(B=0,C=Xa(242,A|0,d|0)|0,A=B,B=0,!(A&1)):0)?(B=0,A=Ia(40,C|0,138837,18)|0,C=B,B=0,!(C&1)):0)?(B=0,Xa(239,A|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,i|0,138856,75);C=B;B=0;do if(!(C&1)){B=0;eb(502,j|0,138932,10);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(i);F=E;G=D;break}B=0;wa(510,l|0,q|0);D=B;B=0;if(D&1){D=Rb()|0;H=Q;I=D;J=1}else{B=0;ua(163,A|0,i|0,j|0,82,l|0);D=B;B=0;if(D&1)K=1;else{B=0;eb(503,A|0,1240,229);B=0;K=0}D=Rb()|0;E=Q;Yua(l);H=E;I=D;J=K}Yua(j);Yua(i);if(J){F=H;G=I}else{L=H;M=I;break a}}else{D=Rb()|0;F=Q;G=D}while(0);zb(A|0);L=F;M=G}else s=43;while(0);if((s|0)==43){y=Rb()|0;L=Q;M=y}k[h>>2]=27468;k[p>>2]=27488;k[q>>2]=27560;Yua(t);Ava(q);vva(p);N=L;O=M;Qb(O|0)}while(0);u=w;v=x}vva(p);P=u;R=v}while(0);if((s|0)==6){s=Rb()|0;P=Q;R=s}N=P;O=R;Qb(O|0)}function Xja(a){a=a|0;var b=0,c=0;k[a>>2]=40780;b=a+20|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+24|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+28|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+32|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+36|0;a=k[b>>2]|0;if(!a){k[b>>2]=0;return}Tqa(a);k[b>>2]=0;return}function Yja(a){a=a|0;Xja(a);Sqa(a);return}function Zja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0;b=r;r=r+4064|0;c=b+4052|0;d=b+3760|0;e=b+4040|0;f=b+3624|0;g=b+4028|0;h=b+3472|0;i=b+4016|0;j=b+3320|0;l=b+4004|0;m=b+3184|0;n=b+3992|0;o=b+3048|0;q=b+3980|0;s=b+2896|0;t=b+3968|0;u=b+2760|0;v=b+3956|0;w=b+2608|0;x=b+3944|0;y=b+2456|0;z=b+3932|0;A=b+2320|0;C=b+3920|0;D=b+2168|0;E=b+3908|0;F=b+2032|0;G=b+3896|0;H=b+1880|0;I=b+3608|0;J=b+1744|0;K=b+3456|0;L=b+1592|0;M=b+3032|0;N=b+1456|0;O=b+2744|0;P=b+1320|0;R=b+2592|0;S=b+1168|0;T=b+2304|0;U=b+1032|0;V=b+2016|0;W=b+880|0;X=b+1728|0;Y=b+728|0;Z=b+1304|0;_=b+592|0;$=b+1016|0;aa=b+440|0;ba=b+864|0;ca=b+304|0;da=b+576|0;ea=b+152|0;fa=b+288|0;ga=b+16|0;ha=b;ia=d+56|0;ja=d+4|0;k[d>>2]=27524;k[ia>>2]=27544;B=0;wa(508,d+56|0,ja|0);ka=B;B=0;if(ka&1){ka=Rb()|0;la=Q;ma=ka;vva(ia);Qb(ma|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[ia>>2]=27488;B=0;va(448,ja|0);ka=B;B=0;do if(ka&1){na=Rb()|0;oa=Q;pa=na}else{k[ja>>2]=27560;na=d+36|0;k[na>>2]=0;k[na+4>>2]=0;k[na+8>>2]=0;k[na+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ja|0,c|0);qa=B;B=0;if(qa&1){qa=Rb()|0;ra=Q;Yua(c);Yua(na);Ava(ja);oa=ra;pa=qa;break}Yua(c);B=0;Ia(40,d|0,138943,12)|0;qa=B;B=0;do if(!(qa&1)?(B=0,wa(510,e|0,ja|0),ra=B,B=0,!(ra&1)):0){B=0;ya(424,e|0)|0;ra=B;B=0;if(ra&1){ra=Rb()|0;sa=Q;Yua(e);ta=sa;ua=ra;break}Yua(e);k[d>>2]=27468;k[ia>>2]=27488;k[ja>>2]=27560;Yua(na);Ava(ja);vva(ia);ra=f+56|0;sa=f+4|0;k[f>>2]=27524;k[ra>>2]=27544;B=0;wa(508,f+56|0,sa|0);xa=B;B=0;if(xa&1){xa=Rb()|0;za=Q;Aa=xa;vva(ra);Qb(Aa|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[ra>>2]=27488;B=0;va(448,sa|0);xa=B;B=0;do if(xa&1){Ba=Rb()|0;Ca=Q;Da=Ba}else{k[sa>>2]=27560;Ba=f+36|0;k[Ba>>2]=0;k[Ba+4>>2]=0;k[Ba+8>>2]=0;k[Ba+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,sa|0,c|0);Ea=B;B=0;if(Ea&1){Ea=Rb()|0;Fa=Q;Yua(c);Yua(Ba);Ava(sa);Ca=Fa;Da=Ea;break}Yua(c);B=0;Ea=Ia(40,f|0,139266,13)|0;Fa=B;B=0;do if(((!(Fa&1)?(Ga=a+16|0,B=0,Ha=Xa(242,Ea|0,k[Ga>>2]|0)|0,Ja=B,B=0,!(Ja&1)):0)?(B=0,Ia(40,Ha|0,149177,1)|0,Ha=B,B=0,!(Ha&1)):0)?(B=0,wa(510,g|0,sa|0),Ha=B,B=0,!(Ha&1)):0){B=0;ya(424,g|0)|0;Ha=B;B=0;if(Ha&1){Ha=Rb()|0;Ja=Q;Yua(g);Ka=Ja;La=Ha;break}Yua(g);k[f>>2]=27468;k[ra>>2]=27488;k[sa>>2]=27560;Yua(Ba);Ava(sa);vva(ra);Ha=a+20|0;a:do if(!(k[Ha>>2]|0)){Ja=o+56|0;Ma=o+4|0;k[o>>2]=27524;k[Ja>>2]=27544;B=0;wa(508,o+56|0,Ma|0);Na=B;B=0;if(Na&1){Na=Rb()|0;Oa=Q;Pa=Na;vva(Ja);Qb(Pa|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[Ja>>2]=27488;B=0;va(448,Ma|0);Na=B;B=0;do if(Na&1){Qa=Rb()|0;Ra=Q;Ta=Qa}else{k[Ma>>2]=27560;Qa=o+36|0;k[Qa>>2]=0;k[Qa+4>>2]=0;k[Qa+8>>2]=0;k[Qa+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ma|0,c|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;Va=Q;Yua(c);Yua(Qa);Ava(Ma);Ra=Va;Ta=Ua;break}Yua(c);B=0;Ia(40,o|0,139295,15)|0;Ua=B;B=0;do if(!(Ua&1)){B=0;wa(510,q|0,Ma|0);Va=B;B=0;if(Va&1){Wa=92;break}B=0;ya(424,q|0)|0;Va=B;B=0;if(Va&1){Va=Rb()|0;Ya=Q;Yua(q);Za=Ya;_a=Va;break}else{Yua(q);k[o>>2]=27468;k[Ja>>2]=27488;k[Ma>>2]=27560;Yua(Qa);Ava(Ma);vva(Ja);break a}}else Wa=92;while(0);if((Wa|0)==92){Ua=Rb()|0;Za=Q;_a=Ua}k[o>>2]=27468;k[Ja>>2]=27488;k[Ma>>2]=27560;Yua(Qa);Ava(Ma);vva(Ja);$a=Za;ab=_a;Qb(ab|0)}while(0);Oa=Ra;Pa=Ta;vva(Ja);Qb(Pa|0)}else{Ma=h+56|0;Na=h+4|0;k[h>>2]=27524;k[Ma>>2]=27544;B=0;wa(508,h+56|0,Na|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;bb=Q;cb=Ua;vva(Ma);Qb(cb|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[Ma>>2]=27488;B=0;va(448,Na|0);Ua=B;B=0;do if(Ua&1){Va=Rb()|0;db=Q;eb=Va}else{k[Na>>2]=27560;Va=h+36|0;k[Va>>2]=0;k[Va+4>>2]=0;k[Va+8>>2]=0;k[Va+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Na|0,c|0);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;fb=Q;Yua(c);Yua(Va);Ava(Na);db=fb;eb=Ya;break}Yua(c);B=0;Ia(40,h|0,139280,14)|0;Ya=B;B=0;do if(Ya&1)Wa=54;else{B=0;wa(510,i|0,Na|0);fb=B;B=0;if(fb&1){Wa=54;break}B=0;ya(424,i|0)|0;fb=B;B=0;if(fb&1){fb=Rb()|0;gb=Q;Yua(i);hb=gb;ib=fb;break}Yua(i);k[h>>2]=27468;k[Ma>>2]=27488;k[Na>>2]=27560;Yua(Va);Ava(Na);vva(Ma);b:do if((k[Ga>>2]|0)>0){fb=j+56|0;gb=j+4|0;jb=j+56|0;kb=j+128|0;lb=j+132|0;mb=j+36|0;nb=j+52|0;ob=0;while(1){k[j>>2]=27524;k[fb>>2]=27544;B=0;wa(508,jb|0,gb|0);pb=B;B=0;if(pb&1){Wa=61;break}k[kb>>2]=0;k[lb>>2]=-1;k[j>>2]=27468;k[fb>>2]=27488;B=0;va(448,gb|0);pb=B;B=0;if(pb&1){Wa=62;break}k[gb>>2]=27560;k[mb>>2]=0;k[mb+4>>2]=0;k[mb+8>>2]=0;k[mb+12>>2]=0;k[nb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,gb|0,c|0);pb=B;B=0;if(pb&1){Wa=60;break}Yua(c);B=0;pb=Ia(40,j|0,149175,1)|0;qb=B;B=0;if(qb&1){Wa=71;break}B=0;qb=Sa(1,pb|0,+(+p[(k[Ha>>2]|0)+(ob<<3)>>3]))|0;pb=B;B=0;if(pb&1){Wa=71;break}B=0;Ia(40,qb|0,149177,1)|0;qb=B;B=0;if(qb&1){Wa=71;break}B=0;wa(510,l|0,gb|0);qb=B;B=0;if(qb&1){Wa=71;break}B=0;ya(424,l|0)|0;qb=B;B=0;if(qb&1){Wa=72;break}Yua(l);k[j>>2]=27468;k[fb>>2]=27488;k[gb>>2]=27560;Yua(mb);Ava(gb);vva(fb);ob=ob+1|0;if((ob|0)>=(k[Ga>>2]|0))break b}if((Wa|0)==60){ob=Rb()|0;nb=Q;Yua(c);Yua(mb);Ava(gb);rb=nb;sb=ob;Wa=63}else if((Wa|0)==61){ob=Rb()|0;tb=Q;ub=ob;vva(fb);Qb(ub|0)}else if((Wa|0)==62){ob=Rb()|0;rb=Q;sb=ob;Wa=63}else if((Wa|0)==71){ob=Rb()|0;vb=Q;wb=ob;Wa=73}else if((Wa|0)==72){ob=Rb()|0;nb=Q;Yua(l);vb=nb;wb=ob;Wa=73}if((Wa|0)==63){tb=rb;ub=sb;vva(fb);Qb(ub|0)}else if((Wa|0)==73){k[j>>2]=27468;k[fb>>2]=27488;k[gb>>2]=27560;Yua(mb);Ava(gb);vva(fb);$a=vb;ab=wb;Qb(ab|0)}}while(0);ob=m+56|0;nb=m+4|0;k[m>>2]=27524;k[ob>>2]=27544;B=0;wa(508,m+56|0,nb|0);lb=B;B=0;if(lb&1){lb=Rb()|0;xb=Q;yb=lb;vva(ob);Qb(yb|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[ob>>2]=27488;B=0;va(448,nb|0);lb=B;B=0;do if(lb&1){kb=Rb()|0;zb=Q;Ab=kb}else{k[nb>>2]=27560;kb=m+36|0;k[kb>>2]=0;k[kb+4>>2]=0;k[kb+8>>2]=0;k[kb+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,nb|0,c|0);jb=B;B=0;if(jb&1){jb=Rb()|0;qb=Q;Yua(c);Yua(kb);Ava(nb);zb=qb;Ab=jb;break}Yua(c);B=0;Ia(40,m|0,149198,2)|0;jb=B;B=0;do if(!(jb&1)){B=0;wa(510,n|0,nb|0);qb=B;B=0;if(qb&1){Wa=77;break}B=0;ya(424,n|0)|0;qb=B;B=0;if(qb&1){qb=Rb()|0;pb=Q;Yua(n);Bb=pb;Cb=qb;break}else{Yua(n);k[m>>2]=27468;k[ob>>2]=27488;k[nb>>2]=27560;Yua(kb);Ava(nb);vva(ob);break a}}else Wa=77;while(0);if((Wa|0)==77){jb=Rb()|0;Bb=Q;Cb=jb}k[m>>2]=27468;k[ob>>2]=27488;k[nb>>2]=27560;Yua(kb);Ava(nb);vva(ob);$a=Bb;ab=Cb;Qb(ab|0)}while(0);xb=zb;yb=Ab;vva(ob);Qb(yb|0)}while(0);if((Wa|0)==54){Ya=Rb()|0;hb=Q;ib=Ya}k[h>>2]=27468;k[Ma>>2]=27488;k[Na>>2]=27560;Yua(Va);Ava(Na);vva(Ma);$a=hb;ab=ib;Qb(ab|0)}while(0);bb=db;cb=eb;vva(Ma);Qb(cb|0)}while(0);Ha=a+24|0;c:do if(!(k[Ha>>2]|0)){Na=y+56|0;Ua=y+4|0;k[y>>2]=27524;k[Na>>2]=27544;B=0;wa(508,y+56|0,Ua|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;Db=Q;Eb=Ja;vva(Na);Qb(Eb|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[Na>>2]=27488;B=0;va(448,Ua|0);Ja=B;B=0;do if(Ja&1){Ya=Rb()|0;Fb=Q;Gb=Ya}else{k[Ua>>2]=27560;Ya=y+36|0;k[Ya>>2]=0;k[Ya+4>>2]=0;k[Ya+8>>2]=0;k[Ya+12>>2]=0;k[y+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ua|0,c|0);Qa=B;B=0;if(Qa&1){Qa=Rb()|0;nb=Q;Yua(c);Yua(Ya);Ava(Ua);Fb=nb;Gb=Qa;break}Yua(c);B=0;Ia(40,y|0,139326,15)|0;Qa=B;B=0;do if(!(Qa&1)){B=0;wa(510,z|0,Ua|0);nb=B;B=0;if(nb&1){Wa=156;break}B=0;ya(424,z|0)|0;nb=B;B=0;if(nb&1){nb=Rb()|0;lb=Q;Yua(z);Hb=lb;Ib=nb;break}else{Yua(z);k[y>>2]=27468;k[Na>>2]=27488;k[Ua>>2]=27560;Yua(Ya);Ava(Ua);vva(Na);break c}}else Wa=156;while(0);if((Wa|0)==156){Qa=Rb()|0;Hb=Q;Ib=Qa}k[y>>2]=27468;k[Na>>2]=27488;k[Ua>>2]=27560;Yua(Ya);Ava(Ua);vva(Na);$a=Hb;ab=Ib;Qb(ab|0)}while(0);Db=Fb;Eb=Gb;vva(Na);Qb(Eb|0)}else{Ua=s+56|0;Ja=s+4|0;k[s>>2]=27524;k[Ua>>2]=27544;B=0;wa(508,s+56|0,Ja|0);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;Jb=Q;Kb=Ma;vva(Ua);Qb(Kb|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[Ua>>2]=27488;B=0;va(448,Ja|0);Ma=B;B=0;do if(Ma&1){Qa=Rb()|0;Lb=Q;Mb=Qa}else{k[Ja>>2]=27560;Qa=s+36|0;k[Qa>>2]=0;k[Qa+4>>2]=0;k[Qa+8>>2]=0;k[Qa+12>>2]=0;k[s+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ja|0,c|0);Va=B;B=0;if(Va&1){Va=Rb()|0;nb=Q;Yua(c);Yua(Qa);Ava(Ja);Lb=nb;Mb=Va;break}Yua(c);B=0;Ia(40,s|0,139311,14)|0;Va=B;B=0;do if(Va&1)Wa=118;else{B=0;wa(510,t|0,Ja|0);nb=B;B=0;if(nb&1){Wa=118;break}B=0;ya(424,t|0)|0;nb=B;B=0;if(nb&1){nb=Rb()|0;lb=Q;Yua(t);Nb=lb;Ob=nb;break}Yua(t);k[s>>2]=27468;k[Ua>>2]=27488;k[Ja>>2]=27560;Yua(Qa);Ava(Ja);vva(Ua);d:do if((k[Ga>>2]|0)>0){nb=u+56|0;lb=u+4|0;jb=u+56|0;fb=u+128|0;gb=u+132|0;mb=u+36|0;qb=u+52|0;pb=0;while(1){k[u>>2]=27524;k[nb>>2]=27544;B=0;wa(508,jb|0,lb|0);Pb=B;B=0;if(Pb&1){Wa=125;break}k[fb>>2]=0;k[gb>>2]=-1;k[u>>2]=27468;k[nb>>2]=27488;B=0;va(448,lb|0);Pb=B;B=0;if(Pb&1){Wa=126;break}k[lb>>2]=27560;k[mb>>2]=0;k[mb+4>>2]=0;k[mb+8>>2]=0;k[mb+12>>2]=0;k[qb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,lb|0,c|0);Pb=B;B=0;if(Pb&1){Wa=124;break}Yua(c);B=0;Pb=Ia(40,u|0,149175,1)|0;Sb=B;B=0;if(Sb&1){Wa=135;break}B=0;Sb=Sa(1,Pb|0,+(+p[(k[Ha>>2]|0)+(pb<<3)>>3]))|0;Pb=B;B=0;if(Pb&1){Wa=135;break}B=0;Ia(40,Sb|0,149177,1)|0;Sb=B;B=0;if(Sb&1){Wa=135;break}B=0;wa(510,v|0,lb|0);Sb=B;B=0;if(Sb&1){Wa=135;break}B=0;ya(424,v|0)|0;Sb=B;B=0;if(Sb&1){Wa=136;break}Yua(v);k[u>>2]=27468;k[nb>>2]=27488;k[lb>>2]=27560;Yua(mb);Ava(lb);vva(nb);pb=pb+1|0;if((pb|0)>=(k[Ga>>2]|0))break d}if((Wa|0)==124){pb=Rb()|0;qb=Q;Yua(c);Yua(mb);Ava(lb);Tb=qb;Ub=pb;Wa=127}else if((Wa|0)==125){pb=Rb()|0;Vb=Q;Wb=pb;vva(nb);Qb(Wb|0)}else if((Wa|0)==126){pb=Rb()|0;Tb=Q;Ub=pb;Wa=127}else if((Wa|0)==135){pb=Rb()|0;Xb=Q;Yb=pb;Wa=137}else if((Wa|0)==136){pb=Rb()|0;qb=Q;Yua(v);Xb=qb;Yb=pb;Wa=137}if((Wa|0)==127){Vb=Tb;Wb=Ub;vva(nb);Qb(Wb|0)}else if((Wa|0)==137){k[u>>2]=27468;k[nb>>2]=27488;k[lb>>2]=27560;Yua(mb);Ava(lb);vva(nb);$a=Xb;ab=Yb;Qb(ab|0)}}while(0);ob=w+56|0;pb=w+4|0;k[w>>2]=27524;k[ob>>2]=27544;B=0;wa(508,w+56|0,pb|0);qb=B;B=0;if(qb&1){qb=Rb()|0;Zb=Q;_b=qb;vva(ob);Qb(_b|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[ob>>2]=27488;B=0;va(448,pb|0);qb=B;B=0;do if(qb&1){gb=Rb()|0;$b=Q;ac=gb}else{k[pb>>2]=27560;gb=w+36|0;k[gb>>2]=0;k[gb+4>>2]=0;k[gb+8>>2]=0;k[gb+12>>2]=0;k[w+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,pb|0,c|0);fb=B;B=0;if(fb&1){fb=Rb()|0;jb=Q;Yua(c);Yua(gb);Ava(pb);$b=jb;ac=fb;break}Yua(c);B=0;Ia(40,w|0,149198,2)|0;fb=B;B=0;do if(!(fb&1)){B=0;wa(510,x|0,pb|0);jb=B;B=0;if(jb&1){Wa=141;break}B=0;ya(424,x|0)|0;jb=B;B=0;if(jb&1){jb=Rb()|0;kb=Q;Yua(x);bc=kb;cc=jb;break}else{Yua(x);k[w>>2]=27468;k[ob>>2]=27488;k[pb>>2]=27560;Yua(gb);Ava(pb);vva(ob);break c}}else Wa=141;while(0);if((Wa|0)==141){fb=Rb()|0;bc=Q;cc=fb}k[w>>2]=27468;k[ob>>2]=27488;k[pb>>2]=27560;Yua(gb);Ava(pb);vva(ob);$a=bc;ab=cc;Qb(ab|0)}while(0);Zb=$b;_b=ac;vva(ob);Qb(_b|0)}while(0);if((Wa|0)==118){Va=Rb()|0;Nb=Q;Ob=Va}k[s>>2]=27468;k[Ua>>2]=27488;k[Ja>>2]=27560;Yua(Qa);Ava(Ja);vva(Ua);$a=Nb;ab=Ob;Qb(ab|0)}while(0);Jb=Lb;Kb=Mb;vva(Ua);Qb(Kb|0)}while(0);Ha=a+28|0;e:do if(!(k[Ha>>2]|0)){Ja=H+56|0;Ma=H+4|0;k[H>>2]=27524;k[Ja>>2]=27544;B=0;wa(508,H+56|0,Ma|0);Na=B;B=0;if(Na&1){Na=Rb()|0;dc=Q;ec=Na;vva(Ja);Qb(ec|0)}k[H+128>>2]=0;k[H+132>>2]=-1;k[H>>2]=27468;k[Ja>>2]=27488;B=0;va(448,Ma|0);Na=B;B=0;do if(Na&1){Va=Rb()|0;fc=Q;gc=Va}else{k[Ma>>2]=27560;Va=H+36|0;k[Va>>2]=0;k[Va+4>>2]=0;k[Va+8>>2]=0;k[Va+12>>2]=0;k[H+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ma|0,c|0);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;pb=Q;Yua(c);Yua(Va);Ava(Ma);fc=pb;gc=Ya;break}Yua(c);B=0;Ia(40,H|0,139357,15)|0;Ya=B;B=0;do if(!(Ya&1)){B=0;wa(510,I|0,Ma|0);pb=B;B=0;if(pb&1){Wa=220;break}B=0;ya(424,I|0)|0;pb=B;B=0;if(pb&1){pb=Rb()|0;qb=Q;Yua(I);hc=qb;ic=pb;break}else{Yua(I);k[H>>2]=27468;k[Ja>>2]=27488;k[Ma>>2]=27560;Yua(Va);Ava(Ma);vva(Ja);break e}}else Wa=220;while(0);if((Wa|0)==220){Ya=Rb()|0;hc=Q;ic=Ya}k[H>>2]=27468;k[Ja>>2]=27488;k[Ma>>2]=27560;Yua(Va);Ava(Ma);vva(Ja);$a=hc;ab=ic;Qb(ab|0)}while(0);dc=fc;ec=gc;vva(Ja);Qb(ec|0)}else{Ma=A+56|0;Na=A+4|0;k[A>>2]=27524;k[Ma>>2]=27544;B=0;wa(508,A+56|0,Na|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;jc=Q;kc=Ua;vva(Ma);Qb(kc|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[Ma>>2]=27488;B=0;va(448,Na|0);Ua=B;B=0;do if(Ua&1){Ya=Rb()|0;lc=Q;mc=Ya}else{k[Na>>2]=27560;Ya=A+36|0;k[Ya>>2]=0;k[Ya+4>>2]=0;k[Ya+8>>2]=0;k[Ya+12>>2]=0;k[A+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Na|0,c|0);Qa=B;B=0;if(Qa&1){Qa=Rb()|0;pb=Q;Yua(c);Yua(Ya);Ava(Na);lc=pb;mc=Qa;break}Yua(c);B=0;Ia(40,A|0,139342,14)|0;Qa=B;B=0;do if(Qa&1)Wa=182;else{B=0;wa(510,C|0,Na|0);pb=B;B=0;if(pb&1){Wa=182;break}B=0;ya(424,C|0)|0;pb=B;B=0;if(pb&1){pb=Rb()|0;qb=Q;Yua(C);nc=qb;oc=pb;break}Yua(C);k[A>>2]=27468;k[Ma>>2]=27488;k[Na>>2]=27560;Yua(Ya);Ava(Na);vva(Ma);f:do if((k[Ga>>2]|0)>0){pb=D+56|0;qb=D+4|0;fb=D+56|0;nb=D+128|0;lb=D+132|0;mb=D+36|0;jb=D+52|0;kb=0;while(1){k[D>>2]=27524;k[pb>>2]=27544;B=0;wa(508,fb|0,qb|0);Sb=B;B=0;if(Sb&1){Wa=189;break}k[nb>>2]=0;k[lb>>2]=-1;k[D>>2]=27468;k[pb>>2]=27488;B=0;va(448,qb|0);Sb=B;B=0;if(Sb&1){Wa=190;break}k[qb>>2]=27560;k[mb>>2]=0;k[mb+4>>2]=0;k[mb+8>>2]=0;k[mb+12>>2]=0;k[jb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,qb|0,c|0);Sb=B;B=0;if(Sb&1){Wa=188;break}Yua(c);B=0;Sb=Ia(40,D|0,149175,1)|0;Pb=B;B=0;if(Pb&1){Wa=199;break}B=0;Pb=Sa(1,Sb|0,+(+p[(k[Ha>>2]|0)+(kb<<3)>>3]))|0;Sb=B;B=0;if(Sb&1){Wa=199;break}B=0;Ia(40,Pb|0,149177,1)|0;Pb=B;B=0;if(Pb&1){Wa=199;break}B=0;wa(510,E|0,qb|0);Pb=B;B=0;if(Pb&1){Wa=199;break}B=0;ya(424,E|0)|0;Pb=B;B=0;if(Pb&1){Wa=200;break}Yua(E);k[D>>2]=27468;k[pb>>2]=27488;k[qb>>2]=27560;Yua(mb);Ava(qb);vva(pb);kb=kb+1|0;if((kb|0)>=(k[Ga>>2]|0))break f}if((Wa|0)==188){kb=Rb()|0;jb=Q;Yua(c);Yua(mb);Ava(qb);pc=jb;qc=kb;Wa=191}else if((Wa|0)==189){kb=Rb()|0;rc=Q;sc=kb;vva(pb);Qb(sc|0)}else if((Wa|0)==190){kb=Rb()|0;pc=Q;qc=kb;Wa=191}else if((Wa|0)==199){kb=Rb()|0;tc=Q;uc=kb;Wa=201}else if((Wa|0)==200){kb=Rb()|0;jb=Q;Yua(E);tc=jb;uc=kb;Wa=201}if((Wa|0)==191){rc=pc;sc=qc;vva(pb);Qb(sc|0)}else if((Wa|0)==201){k[D>>2]=27468;k[pb>>2]=27488;k[qb>>2]=27560;Yua(mb);Ava(qb);vva(pb);$a=tc;ab=uc;Qb(ab|0)}}while(0);ob=F+56|0;kb=F+4|0;k[F>>2]=27524;k[ob>>2]=27544;B=0;wa(508,F+56|0,kb|0);jb=B;B=0;if(jb&1){jb=Rb()|0;vc=Q;wc=jb;vva(ob);Qb(wc|0)}k[F+128>>2]=0;k[F+132>>2]=-1;k[F>>2]=27468;k[ob>>2]=27488;B=0;va(448,kb|0);jb=B;B=0;do if(jb&1){lb=Rb()|0;xc=Q;yc=lb}else{k[kb>>2]=27560;lb=F+36|0;k[lb>>2]=0;k[lb+4>>2]=0;k[lb+8>>2]=0;k[lb+12>>2]=0;k[F+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,kb|0,c|0);nb=B;B=0;if(nb&1){nb=Rb()|0;fb=Q;Yua(c);Yua(lb);Ava(kb);xc=fb;yc=nb;break}Yua(c);B=0;Ia(40,F|0,149198,2)|0;nb=B;B=0;do if(!(nb&1)){B=0;wa(510,G|0,kb|0);fb=B;B=0;if(fb&1){Wa=205;break}B=0;ya(424,G|0)|0;fb=B;B=0;if(fb&1){fb=Rb()|0;gb=Q;Yua(G);zc=gb;Ac=fb;break}else{Yua(G);k[F>>2]=27468;k[ob>>2]=27488;k[kb>>2]=27560;Yua(lb);Ava(kb);vva(ob);break e}}else Wa=205;while(0);if((Wa|0)==205){nb=Rb()|0;zc=Q;Ac=nb}k[F>>2]=27468;k[ob>>2]=27488;k[kb>>2]=27560;Yua(lb);Ava(kb);vva(ob);$a=zc;ab=Ac;Qb(ab|0)}while(0);vc=xc;wc=yc;vva(ob);Qb(wc|0)}while(0);if((Wa|0)==182){Qa=Rb()|0;nc=Q;oc=Qa}k[A>>2]=27468;k[Ma>>2]=27488;k[Na>>2]=27560;Yua(Ya);Ava(Na);vva(Ma);$a=nc;ab=oc;Qb(ab|0)}while(0);jc=lc;kc=mc;vva(Ma);Qb(kc|0)}while(0);Ha=a+32|0;g:do if(!(k[Ha>>2]|0)){Na=P+56|0;Ua=P+4|0;k[P>>2]=27524;k[Na>>2]=27544;B=0;wa(508,P+56|0,Ua|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;Bc=Q;Cc=Ja;vva(Na);Qb(Cc|0)}k[P+128>>2]=0;k[P+132>>2]=-1;k[P>>2]=27468;k[Na>>2]=27488;B=0;va(448,Ua|0);Ja=B;B=0;do if(Ja&1){Qa=Rb()|0;Dc=Q;Ec=Qa}else{k[Ua>>2]=27560;Qa=P+36|0;k[Qa>>2]=0;k[Qa+4>>2]=0;k[Qa+8>>2]=0;k[Qa+12>>2]=0;k[P+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ua|0,c|0);Va=B;B=0;if(Va&1){Va=Rb()|0;kb=Q;Yua(c);Yua(Qa);Ava(Ua);Dc=kb;Ec=Va;break}Yua(c);B=0;Ia(40,P|0,139388,15)|0;Va=B;B=0;do if(!(Va&1)){B=0;wa(510,R|0,Ua|0);kb=B;B=0;if(kb&1){Wa=284;break}B=0;ya(424,R|0)|0;kb=B;B=0;if(kb&1){kb=Rb()|0;jb=Q;Yua(R);Fc=jb;Gc=kb;break}else{Yua(R);k[P>>2]=27468;k[Na>>2]=27488;k[Ua>>2]=27560;Yua(Qa);Ava(Ua);vva(Na);break g}}else Wa=284;while(0);if((Wa|0)==284){Va=Rb()|0;Fc=Q;Gc=Va}k[P>>2]=27468;k[Na>>2]=27488;k[Ua>>2]=27560;Yua(Qa);Ava(Ua);vva(Na);$a=Fc;ab=Gc;Qb(ab|0)}while(0);Bc=Dc;Cc=Ec;vva(Na);Qb(Cc|0)}else{Ua=J+56|0;Ja=J+4|0;k[J>>2]=27524;k[Ua>>2]=27544;B=0;wa(508,J+56|0,Ja|0);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;Hc=Q;Ic=Ma;vva(Ua);Qb(Ic|0)}k[J+128>>2]=0;k[J+132>>2]=-1;k[J>>2]=27468;k[Ua>>2]=27488;B=0;va(448,Ja|0);Ma=B;B=0;do if(Ma&1){Va=Rb()|0;Jc=Q;Kc=Va}else{k[Ja>>2]=27560;Va=J+36|0;k[Va>>2]=0;k[Va+4>>2]=0;k[Va+8>>2]=0;k[Va+12>>2]=0;k[J+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ja|0,c|0);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;kb=Q;Yua(c);Yua(Va);Ava(Ja);Jc=kb;Kc=Ya;break}Yua(c);B=0;Ia(40,J|0,139373,14)|0;Ya=B;B=0;do if(Ya&1)Wa=246;else{B=0;wa(510,K|0,Ja|0);kb=B;B=0;if(kb&1){Wa=246;break}B=0;ya(424,K|0)|0;kb=B;B=0;if(kb&1){kb=Rb()|0;jb=Q;Yua(K);Lc=jb;Mc=kb;break}Yua(K);k[J>>2]=27468;k[Ua>>2]=27488;k[Ja>>2]=27560;Yua(Va);Ava(Ja);vva(Ua);h:do if((k[Ga>>2]|0)>0){kb=L+56|0;jb=L+4|0;nb=L+56|0;pb=L+128|0;qb=L+132|0;mb=L+36|0;fb=L+52|0;gb=0;while(1){k[L>>2]=27524;k[kb>>2]=27544;B=0;wa(508,nb|0,jb|0);Pb=B;B=0;if(Pb&1){Wa=253;break}k[pb>>2]=0;k[qb>>2]=-1;k[L>>2]=27468;k[kb>>2]=27488;B=0;va(448,jb|0);Pb=B;B=0;if(Pb&1){Wa=254;break}k[jb>>2]=27560;k[mb>>2]=0;k[mb+4>>2]=0;k[mb+8>>2]=0;k[mb+12>>2]=0;k[fb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,jb|0,c|0);Pb=B;B=0;if(Pb&1){Wa=252;break}Yua(c);B=0;Pb=Ia(40,L|0,149175,1)|0;Sb=B;B=0;if(Sb&1){Wa=263;break}B=0;Sb=Sa(1,Pb|0,+(+p[(k[Ha>>2]|0)+(gb<<3)>>3]))|0;Pb=B;B=0;if(Pb&1){Wa=263;break}B=0;Ia(40,Sb|0,149177,1)|0;Sb=B;B=0;if(Sb&1){Wa=263;break}B=0;wa(510,M|0,jb|0);Sb=B;B=0;if(Sb&1){Wa=263;break}B=0;ya(424,M|0)|0;Sb=B;B=0;if(Sb&1){Wa=264;break}Yua(M);k[L>>2]=27468;k[kb>>2]=27488;k[jb>>2]=27560;Yua(mb);Ava(jb);vva(kb);gb=gb+1|0;if((gb|0)>=(k[Ga>>2]|0))break h}if((Wa|0)==252){gb=Rb()|0;fb=Q;Yua(c);Yua(mb);Ava(jb);Nc=fb;Oc=gb;Wa=255}else if((Wa|0)==253){gb=Rb()|0;Pc=Q;Qc=gb;vva(kb);Qb(Qc|0)}else if((Wa|0)==254){gb=Rb()|0;Nc=Q;Oc=gb;Wa=255}else if((Wa|0)==263){gb=Rb()|0;Rc=Q;Sc=gb;Wa=265}else if((Wa|0)==264){gb=Rb()|0;fb=Q;Yua(M);Rc=fb;Sc=gb;Wa=265}if((Wa|0)==255){Pc=Nc;Qc=Oc;vva(kb);Qb(Qc|0)}else if((Wa|0)==265){k[L>>2]=27468;k[kb>>2]=27488;k[jb>>2]=27560;Yua(mb);Ava(jb);vva(kb);$a=Rc;ab=Sc;Qb(ab|0)}}while(0);ob=N+56|0;gb=N+4|0;k[N>>2]=27524;k[ob>>2]=27544;B=0;wa(508,N+56|0,gb|0);fb=B;B=0;if(fb&1){fb=Rb()|0;Tc=Q;Uc=fb;vva(ob);Qb(Uc|0)}k[N+128>>2]=0;k[N+132>>2]=-1;k[N>>2]=27468;k[ob>>2]=27488;B=0;va(448,gb|0);fb=B;B=0;do if(fb&1){qb=Rb()|0;Vc=Q;Wc=qb}else{k[gb>>2]=27560;qb=N+36|0;k[qb>>2]=0;k[qb+4>>2]=0;k[qb+8>>2]=0;k[qb+12>>2]=0;k[N+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,gb|0,c|0);pb=B;B=0;if(pb&1){pb=Rb()|0;nb=Q;Yua(c);Yua(qb);Ava(gb);Vc=nb;Wc=pb;break}Yua(c);B=0;Ia(40,N|0,149198,2)|0;pb=B;B=0;do if(!(pb&1)){B=0;wa(510,O|0,gb|0);nb=B;B=0;if(nb&1){Wa=269;break}B=0;ya(424,O|0)|0;nb=B;B=0;if(nb&1){nb=Rb()|0;lb=Q;Yua(O);Xc=lb;Yc=nb;break}else{Yua(O);k[N>>2]=27468;k[ob>>2]=27488;k[gb>>2]=27560;Yua(qb);Ava(gb);vva(ob);break g}}else Wa=269;while(0);if((Wa|0)==269){pb=Rb()|0;Xc=Q;Yc=pb}k[N>>2]=27468;k[ob>>2]=27488;k[gb>>2]=27560;Yua(qb);Ava(gb);vva(ob);$a=Xc;ab=Yc;Qb(ab|0)}while(0);Tc=Vc;Uc=Wc;vva(ob);Qb(Uc|0)}while(0);if((Wa|0)==246){Ya=Rb()|0;Lc=Q;Mc=Ya}k[J>>2]=27468;k[Ua>>2]=27488;k[Ja>>2]=27560;Yua(Va);Ava(Ja);vva(Ua);$a=Lc;ab=Mc;Qb(ab|0)}while(0);Hc=Jc;Ic=Kc;vva(Ua);Qb(Ic|0)}while(0);Ha=a+36|0;i:do if(!(k[Ha>>2]|0)){Ja=Y+56|0;Ma=Y+4|0;k[Y>>2]=27524;k[Ja>>2]=27544;B=0;wa(508,Y+56|0,Ma|0);Na=B;B=0;if(Na&1){Na=Rb()|0;Zc=Q;_c=Na;vva(Ja);Qb(_c|0)}k[Y+128>>2]=0;k[Y+132>>2]=-1;k[Y>>2]=27468;k[Ja>>2]=27488;B=0;va(448,Ma|0);Na=B;B=0;do if(Na&1){Ya=Rb()|0;$c=Q;ad=Ya}else{k[Ma>>2]=27560;Ya=Y+36|0;k[Ya>>2]=0;k[Ya+4>>2]=0;k[Ya+8>>2]=0;k[Ya+12>>2]=0;k[Y+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ma|0,c|0);Qa=B;B=0;if(Qa&1){Qa=Rb()|0;gb=Q;Yua(c);Yua(Ya);Ava(Ma);$c=gb;ad=Qa;break}Yua(c);B=0;Ia(40,Y|0,139419,15)|0;Qa=B;B=0;do if(!(Qa&1)){B=0;wa(510,Z|0,Ma|0);gb=B;B=0;if(gb&1){Wa=348;break}B=0;ya(424,Z|0)|0;gb=B;B=0;if(gb&1){gb=Rb()|0;fb=Q;Yua(Z);bd=fb;cd=gb;break}else{Yua(Z);k[Y>>2]=27468;k[Ja>>2]=27488;k[Ma>>2]=27560;Yua(Ya);Ava(Ma);vva(Ja);break i}}else Wa=348;while(0);if((Wa|0)==348){Qa=Rb()|0;bd=Q;cd=Qa}k[Y>>2]=27468;k[Ja>>2]=27488;k[Ma>>2]=27560;Yua(Ya);Ava(Ma);vva(Ja);$a=bd;ab=cd;Qb(ab|0)}while(0);Zc=$c;_c=ad;vva(Ja);Qb(_c|0)}else{Ma=S+56|0;Na=S+4|0;k[S>>2]=27524;k[Ma>>2]=27544;B=0;wa(508,S+56|0,Na|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;dd=Q;ed=Ua;vva(Ma);Qb(ed|0)}k[S+128>>2]=0;k[S+132>>2]=-1;k[S>>2]=27468;k[Ma>>2]=27488;B=0;va(448,Na|0);Ua=B;B=0;do if(Ua&1){Qa=Rb()|0;fd=Q;gd=Qa}else{k[Na>>2]=27560;Qa=S+36|0;k[Qa>>2]=0;k[Qa+4>>2]=0;k[Qa+8>>2]=0;k[Qa+12>>2]=0;k[S+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Na|0,c|0);Va=B;B=0;if(Va&1){Va=Rb()|0;gb=Q;Yua(c);Yua(Qa);Ava(Na);fd=gb;gd=Va;break}Yua(c);B=0;Ia(40,S|0,139404,14)|0;Va=B;B=0;do if(Va&1)Wa=310;else{B=0;wa(510,T|0,Na|0);gb=B;B=0;if(gb&1){Wa=310;break}B=0;ya(424,T|0)|0;gb=B;B=0;if(gb&1){gb=Rb()|0;fb=Q;Yua(T);hd=fb;id=gb;break}Yua(T);k[S>>2]=27468;k[Ma>>2]=27488;k[Na>>2]=27560;Yua(Qa);Ava(Na);vva(Ma);j:do if((k[Ga>>2]|0)>0){gb=U+56|0;fb=U+4|0;pb=U+56|0;kb=U+128|0;jb=U+132|0;mb=U+36|0;nb=U+52|0;lb=0;while(1){k[U>>2]=27524;k[gb>>2]=27544;B=0;wa(508,pb|0,fb|0);Sb=B;B=0;if(Sb&1){Wa=317;break}k[kb>>2]=0;k[jb>>2]=-1;k[U>>2]=27468;k[gb>>2]=27488;B=0;va(448,fb|0);Sb=B;B=0;if(Sb&1){Wa=318;break}k[fb>>2]=27560;k[mb>>2]=0;k[mb+4>>2]=0;k[mb+8>>2]=0;k[mb+12>>2]=0;k[nb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,fb|0,c|0);Sb=B;B=0;if(Sb&1){Wa=316;break}Yua(c);B=0;Sb=Ia(40,U|0,149175,1)|0;Pb=B;B=0;if(Pb&1){Wa=327;break}B=0;Pb=Sa(1,Sb|0,+(+p[(k[Ha>>2]|0)+(lb<<3)>>3]))|0;Sb=B;B=0;if(Sb&1){Wa=327;break}B=0;Ia(40,Pb|0,149177,1)|0;Pb=B;B=0;if(Pb&1){Wa=327;break}B=0;wa(510,V|0,fb|0);Pb=B;B=0;if(Pb&1){Wa=327;break}B=0;ya(424,V|0)|0;Pb=B;B=0;if(Pb&1){Wa=328;break}Yua(V);k[U>>2]=27468;k[gb>>2]=27488;k[fb>>2]=27560;Yua(mb);Ava(fb);vva(gb);lb=lb+1|0;if((lb|0)>=(k[Ga>>2]|0))break j}if((Wa|0)==316){lb=Rb()|0;nb=Q;Yua(c);Yua(mb);Ava(fb);jd=nb;kd=lb;Wa=319}else if((Wa|0)==317){lb=Rb()|0;ld=Q;md=lb;vva(gb);Qb(md|0)}else if((Wa|0)==318){lb=Rb()|0;jd=Q;kd=lb;Wa=319}else if((Wa|0)==327){lb=Rb()|0;nd=Q;od=lb;Wa=329}else if((Wa|0)==328){lb=Rb()|0;nb=Q;Yua(V);nd=nb;od=lb;Wa=329}if((Wa|0)==319){ld=jd;md=kd;vva(gb);Qb(md|0)}else if((Wa|0)==329){k[U>>2]=27468;k[gb>>2]=27488;k[fb>>2]=27560;Yua(mb);Ava(fb);vva(gb);$a=nd;ab=od;Qb(ab|0)}}while(0);ob=W+56|0;lb=W+4|0;k[W>>2]=27524;k[ob>>2]=27544;B=0;wa(508,W+56|0,lb|0);nb=B;B=0;if(nb&1){nb=Rb()|0;pd=Q;qd=nb;vva(ob);Qb(qd|0)}k[W+128>>2]=0;k[W+132>>2]=-1;k[W>>2]=27468;k[ob>>2]=27488;B=0;va(448,lb|0);nb=B;B=0;do if(nb&1){jb=Rb()|0;rd=Q;sd=jb}else{k[lb>>2]=27560;jb=W+36|0;k[jb>>2]=0;k[jb+4>>2]=0;k[jb+8>>2]=0;k[jb+12>>2]=0;k[W+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,lb|0,c|0);kb=B;B=0;if(kb&1){kb=Rb()|0;pb=Q;Yua(c);Yua(jb);Ava(lb);rd=pb;sd=kb;break}Yua(c);B=0;Ia(40,W|0,149198,2)|0;kb=B;B=0;do if(!(kb&1)){B=0;wa(510,X|0,lb|0);pb=B;B=0;if(pb&1){Wa=333;break}B=0;ya(424,X|0)|0;pb=B;B=0;if(pb&1){pb=Rb()|0;qb=Q;Yua(X);td=qb;ud=pb;break}else{Yua(X);k[W>>2]=27468;k[ob>>2]=27488;k[lb>>2]=27560;Yua(jb);Ava(lb);vva(ob);break i}}else Wa=333;while(0);if((Wa|0)==333){kb=Rb()|0;td=Q;ud=kb}k[W>>2]=27468;k[ob>>2]=27488;k[lb>>2]=27560;Yua(jb);Ava(lb);vva(ob);$a=td;ab=ud;Qb(ab|0)}while(0);pd=rd;qd=sd;vva(ob);Qb(qd|0)}while(0);if((Wa|0)==310){Va=Rb()|0;hd=Q;id=Va}k[S>>2]=27468;k[Ma>>2]=27488;k[Na>>2]=27560;Yua(Qa);Ava(Na);vva(Ma);$a=hd;ab=id;Qb(ab|0)}while(0);dd=fd;ed=gd;vva(Ma);Qb(ed|0)}while(0);Ga=_+56|0;Ha=_+4|0;k[_>>2]=27524;k[Ga>>2]=27544;B=0;wa(508,_+56|0,Ha|0);Na=B;B=0;if(Na&1){Na=Rb()|0;vd=Q;wd=Na;vva(Ga);Qb(wd|0)}k[_+128>>2]=0;k[_+132>>2]=-1;k[_>>2]=27468;k[Ga>>2]=27488;B=0;va(448,Ha|0);Na=B;B=0;do if(Na&1){Ua=Rb()|0;xd=Q;yd=Ua}else{k[Ha>>2]=27560;Ua=_+36|0;k[Ua>>2]=0;k[Ua+4>>2]=0;k[Ua+8>>2]=0;k[Ua+12>>2]=0;k[_+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ha|0,c|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;Va=Q;Yua(c);Yua(Ua);Ava(Ha);xd=Va;yd=Ja;break}Yua(c);B=0;Ja=Ia(40,_|0,139435,12)|0;Va=B;B=0;do if(Va&1)Wa=417;else{B=0;Ya=Sa(1,Ja|0,+(+p[a+8>>3]))|0;lb=B;B=0;if(lb&1){Wa=417;break}B=0;Ia(40,Ya|0,149177,1)|0;Ya=B;B=0;if(Ya&1){Wa=417;break}B=0;wa(510,$|0,Ha|0);Ya=B;B=0;if(Ya&1){Wa=417;break}B=0;ya(424,$|0)|0;Ya=B;B=0;if(Ya&1){Ya=Rb()|0;lb=Q;Yua($);zd=lb;Ad=Ya;break}Yua($);k[_>>2]=27468;k[Ga>>2]=27488;k[Ha>>2]=27560;Yua(Ua);Ava(Ha);vva(Ga);Ya=aa+56|0;lb=aa+4|0;k[aa>>2]=27524;k[Ya>>2]=27544;B=0;wa(508,aa+56|0,lb|0);nb=B;B=0;if(nb&1){nb=Rb()|0;Bd=Q;Cd=nb;vva(Ya);Qb(Cd|0)}k[aa+128>>2]=0;k[aa+132>>2]=-1;k[aa>>2]=27468;k[Ya>>2]=27488;B=0;va(448,lb|0);nb=B;B=0;do if(nb&1){kb=Rb()|0;Dd=Q;Ed=kb}else{k[lb>>2]=27560;kb=aa+36|0;k[kb>>2]=0;k[kb+4>>2]=0;k[kb+8>>2]=0;k[kb+12>>2]=0;k[aa+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,lb|0,c|0);gb=B;B=0;if(gb&1){gb=Rb()|0;fb=Q;Yua(c);Yua(kb);Ava(lb);Dd=fb;Ed=gb;break}Yua(c);B=0;gb=Ia(40,aa|0,139448,12)|0;fb=B;B=0;do if(fb&1)Wa=420;else{B=0;mb=Sa(1,gb|0,+(+p[a+40>>3]))|0;pb=B;B=0;if(pb&1){Wa=420;break}B=0;Ia(40,mb|0,149177,1)|0;mb=B;B=0;if(mb&1){Wa=420;break}B=0;wa(510,ba|0,lb|0);mb=B;B=0;if(mb&1){Wa=420;break}B=0;ya(424,ba|0)|0;mb=B;B=0;if(mb&1){mb=Rb()|0;pb=Q;Yua(ba);Fd=pb;Gd=mb;break}Yua(ba);k[aa>>2]=27468;k[Ya>>2]=27488;k[lb>>2]=27560;Yua(kb);Ava(lb);vva(Ya);mb=ca+56|0;pb=ca+4|0;k[ca>>2]=27524;k[mb>>2]=27544;B=0;wa(508,ca+56|0,pb|0);qb=B;B=0;if(qb&1){qb=Rb()|0;Hd=Q;Id=qb;vva(mb);Qb(Id|0)}k[ca+128>>2]=0;k[ca+132>>2]=-1;k[ca>>2]=27468;k[mb>>2]=27488;B=0;va(448,pb|0);qb=B;B=0;do if(qb&1){Pb=Rb()|0;Jd=Q;Kd=Pb}else{k[pb>>2]=27560;Pb=ca+36|0;k[Pb>>2]=0;k[Pb+4>>2]=0;k[Pb+8>>2]=0;k[Pb+12>>2]=0;k[ca+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,pb|0,c|0);Sb=B;B=0;if(Sb&1){Sb=Rb()|0;Ld=Q;Yua(c);Yua(Pb);Ava(pb);Jd=Ld;Kd=Sb;break}Yua(c);B=0;Sb=Ia(40,ca|0,139461,12)|0;Ld=B;B=0;do if(Ld&1)Wa=423;else{B=0;Md=Sa(1,Sb|0,+(+p[a+48>>3]))|0;Nd=B;B=0;if(Nd&1){Wa=423;break}B=0;Ia(40,Md|0,149177,1)|0;Md=B;B=0;if(Md&1){Wa=423;break}B=0;wa(510,da|0,pb|0);Md=B;B=0;if(Md&1){Wa=423;break}B=0;ya(424,da|0)|0;Md=B;B=0;if(Md&1){Md=Rb()|0;Nd=Q;Yua(da);Od=Nd;Pd=Md;break}Yua(da);k[ca>>2]=27468;k[mb>>2]=27488;k[pb>>2]=27560;Yua(Pb);Ava(pb);vva(mb);Md=ea+56|0;Nd=ea+4|0;k[ea>>2]=27524;k[Md>>2]=27544;B=0;wa(508,ea+56|0,Nd|0);Qd=B;B=0;if(Qd&1){Qd=Rb()|0;Rd=Q;Sd=Qd;vva(Md);Qb(Sd|0)}k[ea+128>>2]=0;k[ea+132>>2]=-1;k[ea>>2]=27468;k[Md>>2]=27488;B=0;va(448,Nd|0);Qd=B;B=0;do if(Qd&1){Td=Rb()|0;Ud=Q;Vd=Td}else{k[Nd>>2]=27560;Td=ea+36|0;k[Td>>2]=0;k[Td+4>>2]=0;k[Td+8>>2]=0;k[Td+12>>2]=0;k[ea+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Nd|0,c|0);Wd=B;B=0;if(Wd&1){Wd=Rb()|0;Xd=Q;Yua(c);Yua(Td);Ava(Nd);Ud=Xd;Vd=Wd;break}Yua(c);B=0;Wd=Ia(40,ea|0,139474,12)|0;Xd=B;B=0;do if(Xd&1)Wa=426;else{B=0;Yd=Sa(1,Wd|0,+(+p[a+56>>3]))|0;Zd=B;B=0;if(Zd&1){Wa=426;break}B=0;Ia(40,Yd|0,149177,1)|0;Yd=B;B=0;if(Yd&1){Wa=426;break}B=0;wa(510,fa|0,Nd|0);Yd=B;B=0;if(Yd&1){Wa=426;break}B=0;ya(424,fa|0)|0;Yd=B;B=0;if(Yd&1){Yd=Rb()|0;Zd=Q;Yua(fa);_d=Zd;$d=Yd;break}Yua(fa);k[ea>>2]=27468;k[Md>>2]=27488;k[Nd>>2]=27560;Yua(Td);Ava(Nd);vva(Md);Yd=ga+56|0;Zd=ga+4|0;k[ga>>2]=27524;k[Yd>>2]=27544;B=0;wa(508,ga+56|0,Zd|0);ae=B;B=0;if(ae&1){ae=Rb()|0;be=Q;ce=ae;vva(Yd);Qb(ce|0)}k[ga+128>>2]=0;k[ga+132>>2]=-1;k[ga>>2]=27468;k[Yd>>2]=27488;B=0;va(448,Zd|0);ae=B;B=0;do if(ae&1){de=Rb()|0;ee=Q;fe=de}else{k[Zd>>2]=27560;de=ga+36|0;k[de>>2]=0;k[de+4>>2]=0;k[de+8>>2]=0;k[de+12>>2]=0;k[ga+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Zd|0,c|0);ge=B;B=0;if(ge&1){ge=Rb()|0;he=Q;Yua(c);Yua(de);Ava(Zd);ee=he;fe=ge;break}Yua(c);B=0;ge=Ia(40,ga|0,139487,12)|0;he=B;B=0;do if(!(he&1)){B=0;ie=Sa(1,ge|0,+(+p[a+64>>3]))|0;je=B;B=0;if(je&1){Wa=429;break}B=0;Ia(40,ie|0,149177,1)|0;ie=B;B=0;if(ie&1){Wa=429;break}B=0;wa(510,ha|0,Zd|0);ie=B;B=0;if(ie&1){Wa=429;break}B=0;ya(424,ha|0)|0;ie=B;B=0;if(ie&1){ie=Rb()|0;je=Q;Yua(ha);ke=je;le=ie;break}else{Yua(ha);k[ga>>2]=27468;k[Yd>>2]=27488;k[Zd>>2]=27560;Yua(de);Ava(Zd);vva(Yd);r=b;return}}else Wa=429;while(0);if((Wa|0)==429){ge=Rb()|0;ke=Q;le=ge}k[ga>>2]=27468;k[Yd>>2]=27488;k[Zd>>2]=27560;Yua(de);Ava(Zd);vva(Yd);$a=ke;ab=le;Qb(ab|0)}while(0);be=ee;ce=fe;vva(Yd);Qb(ce|0)}while(0);if((Wa|0)==426){Wd=Rb()|0;_d=Q;$d=Wd}k[ea>>2]=27468;k[Md>>2]=27488;k[Nd>>2]=27560;Yua(Td);Ava(Nd);vva(Md);$a=_d;ab=$d;Qb(ab|0)}while(0);Rd=Ud;Sd=Vd;vva(Md);Qb(Sd|0)}while(0);if((Wa|0)==423){Sb=Rb()|0;Od=Q;Pd=Sb}k[ca>>2]=27468;k[mb>>2]=27488;k[pb>>2]=27560;Yua(Pb);Ava(pb);vva(mb);$a=Od;ab=Pd;Qb(ab|0)}while(0);Hd=Jd;Id=Kd;vva(mb);Qb(Id|0)}while(0);if((Wa|0)==420){gb=Rb()|0;Fd=Q;Gd=gb}k[aa>>2]=27468;k[Ya>>2]=27488;k[lb>>2]=27560;Yua(kb);Ava(lb);vva(Ya);$a=Fd;ab=Gd;Qb(ab|0)}while(0);Bd=Dd;Cd=Ed;vva(Ya);Qb(Cd|0)}while(0);if((Wa|0)==417){Ja=Rb()|0;zd=Q;Ad=Ja}k[_>>2]=27468;k[Ga>>2]=27488;k[Ha>>2]=27560;Yua(Ua);Ava(Ha);vva(Ga);$a=zd;ab=Ad;Qb(ab|0)}while(0);vd=xd;wd=yd;vva(Ga);Qb(wd|0)}else Wa=51;while(0);if((Wa|0)==51){Ea=Rb()|0;Ka=Q;La=Ea}k[f>>2]=27468;k[ra>>2]=27488;k[sa>>2]=27560;Yua(Ba);Ava(sa);vva(ra);$a=Ka;ab=La;Qb(ab|0)}while(0);za=Ca;Aa=Da;vva(ra);Qb(Aa|0)}else Wa=48;while(0);if((Wa|0)==48){qa=Rb()|0;ta=Q;ua=qa}k[d>>2]=27468;k[ia>>2]=27488;k[ja>>2]=27560;Yua(na);Ava(ja);vva(ia);$a=ta;ab=ua;Qb(ab|0)}while(0);la=oa;ma=pa;vva(ia);Qb(ma|0)}function _ja(a){a=a|0;return 931}function $ja(a,b){a=a|0;b=b|0;p[a+8>>3]=+p[(k[a+20>>2]|0)+(b<<3)>>3];p[a+40>>3]=+p[(k[a+24>>2]|0)+(b<<3)>>3];p[a+48>>3]=+p[(k[a+28>>2]|0)+(b<<3)>>3];p[a+56>>3]=+p[(k[a+32>>2]|0)+(b<<3)>>3];p[a+64>>3]=+p[(k[a+36>>2]|0)+(b<<3)>>3];return}function aka(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;switch(b|0){case 0:{p[a+40>>3]=1.0;b=a+48|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;r=c;return}case 1:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;b=a+56|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;r=c;return}case 2:{b=a+40|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=0.0;r=c;return}case 3:{b=a+40|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;p[a+64>>3]=1.0;r=c;return}default:{c=e+56|0;a=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,a|0);b=B;B=0;if(b&1){b=Rb()|0;i=Q;j=b;vva(c);Qb(j|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,a|0);b=B;B=0;do if(b&1){l=Rb()|0;m=Q;n=l}else{k[a>>2]=27560;l=e+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,a|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;q=Q;Yua(d);Yua(l);Ava(a);m=q;n=o;break}Yua(d);B=0;o=Ia(40,e|0,138956,31)|0;q=B;B=0;if(!(q&1)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,f|0,138856,75);q=B;B=0;do if(!(q&1)){B=0;eb(502,g|0,139532,11);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(f);u=t;v=s;break}B=0;wa(510,h|0,a|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,o|0,f|0,g|0,169,h|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,o|0,1240,229);B=0;z=0}s=Rb()|0;t=Q;Yua(h);w=t;x=s;y=z}Yua(g);Yua(f);if(y){u=w;v=x}else{A=w;C=x;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(c);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(o|0);A=u;C=v;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(c);Qb(C|0)}q=Rb()|0;A=Q;C=q;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(c);Qb(C|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}}}function bka(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0;d=r;r=r+704|0;e=d+692|0;f=d+520|0;g=d+680|0;h=d+668|0;i=d+656|0;j=d+384|0;l=d+368|0;m=d+84|0;n=d+72|0;o=d+232|0;q=d+60|0;s=d+48|0;t=d+36|0;u=d+96|0;v=d+24|0;w=d+12|0;x=d;switch(b|0){case 739:case 738:{switch(c|0){case 0:{p[a+40>>3]=1.0;y=a+48|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[y+16>>2]=0;k[y+20>>2]=0;r=d;return}case 1:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;y=a+56|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;r=d;return}case 2:{y=a+40|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=0.0;r=d;return}case 3:{y=a+40|0;k[y>>2]=0;k[y+4>>2]=0;k[y+8>>2]=0;k[y+12>>2]=0;k[y+16>>2]=0;k[y+20>>2]=0;p[a+64>>3]=1.0;r=d;return}default:{y=f+56|0;z=f+4|0;k[f>>2]=27524;k[y>>2]=27544;B=0;wa(508,f+56|0,z|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;D=A;vva(y);Qb(D|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[y>>2]=27488;B=0;va(448,z|0);A=B;B=0;do if(A&1){E=Rb()|0;F=Q;G=E}else{k[z>>2]=27560;E=f+36|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,z|0,e|0);H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(e);Yua(E);Ava(z);F=I;G=H;break}Yua(e);B=0;H=Ia(40,f|0,138988,29)|0;I=B;B=0;a:do if(!(I&1)?(B=0,Xa(239,H|0,0)|0,J=B,B=0,!(J&1)):0){J=Ab(20)|0;B=0;eb(502,g|0,138856,75);K=B;B=0;do if(!(K&1)){B=0;eb(502,h|0,139574,9);L=B;B=0;if(L&1){L=Rb()|0;M=Q;Yua(g);N=M;O=L;break}B=0;wa(510,i|0,z|0);L=B;B=0;if(L&1){L=Rb()|0;P=Q;R=L;S=1}else{B=0;ua(163,J|0,g|0,h|0,188,i|0);L=B;B=0;if(L&1)T=1;else{B=0;eb(503,J|0,1240,229);B=0;T=0}L=Rb()|0;M=Q;Yua(i);P=M;R=L;S=T}Yua(h);Yua(g);if(S){N=P;O=R}else{U=P;V=R;break a}}else{L=Rb()|0;N=Q;O=L}while(0);zb(J|0);U=N;V=O}else W=22;while(0);if((W|0)==22){H=Rb()|0;U=Q;V=H}k[f>>2]=27468;k[y>>2]=27488;k[z>>2]=27560;Yua(E);Ava(z);vva(y);X=U;Y=V;Qb(Y|0)}while(0);C=F;D=G;vva(y);Qb(D|0)}}break}case 741:case 740:{switch(c|0){case 0:{p[a+40>>3]=1.0;D=a+48|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[D+16>>2]=0;k[D+20>>2]=0;r=d;return}case 1:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;D=a+56|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;r=d;return}case 2:{D=a+40|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=0.0;r=d;return}case 3:{D=a+40|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[D+16>>2]=0;k[D+20>>2]=0;p[a+64>>3]=1.0;r=d;return}case 4:{p[a+40>>3]=.25;p[a+48>>3]=.25;p[a+56>>3]=.25;p[a+64>>3]=.25;r=d;return}default:{D=j+56|0;y=j+4|0;k[j>>2]=27524;k[D>>2]=27544;B=0;wa(508,j+56|0,y|0);G=B;B=0;if(G&1){G=Rb()|0;Z=Q;_=G;vva(D);Qb(_|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[D>>2]=27488;B=0;va(448,y|0);G=B;B=0;do if(G&1){F=Rb()|0;$=Q;aa=F}else{k[y>>2]=27560;F=j+36|0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;k[j+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,y|0,e|0);C=B;B=0;if(C&1){C=Rb()|0;V=Q;Yua(e);Yua(F);Ava(y);$=V;aa=C;break}Yua(e);B=0;C=Ia(40,j|0,139018,29)|0;V=B;B=0;b:do if(!(V&1)?(B=0,Xa(239,C|0,0)|0,U=B,B=0,!(U&1)):0){U=Ab(20)|0;B=0;eb(502,l|0,138856,75);z=B;B=0;do if(!(z&1)){B=0;eb(502,m|0,139574,9);f=B;B=0;if(f&1){f=Rb()|0;O=Q;Yua(l);ba=f;ca=O;break}B=0;wa(510,n|0,y|0);O=B;B=0;if(O&1){O=Rb()|0;da=1;ea=Q;fa=O}else{B=0;ua(163,U|0,l|0,m|0,198,n|0);O=B;B=0;if(O&1)ga=1;else{B=0;eb(503,U|0,1240,229);B=0;ga=0}O=Rb()|0;f=Q;Yua(n);da=ga;ea=f;fa=O}Yua(m);Yua(l);if(da){ba=fa;ca=ea}else{ha=ea;ia=fa;break b}}else{O=Rb()|0;ba=O;ca=Q}while(0);zb(U|0);ha=ca;ia=ba}else W=51;while(0);if((W|0)==51){C=Rb()|0;ha=Q;ia=C}k[j>>2]=27468;k[D>>2]=27488;k[y>>2]=27560;Yua(F);Ava(y);vva(D);X=ha;Y=ia;Qb(Y|0)}while(0);Z=$;_=aa;vva(D);Qb(_|0)}}break}case 742:{do switch(c|0){case 0:{p[a+40>>3]=1.0;_=a+48|0;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0;k[_+16>>2]=0;k[_+20>>2]=0;r=d;return}case 1:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;_=a+56|0;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0;r=d;return}case 2:{_=a+40|0;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=0.0;r=d;return}case 3:{_=a+40|0;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0;k[_+16>>2]=0;k[_+20>>2]=0;p[a+64>>3]=1.0;r=d;return}case 4:{p[a+40>>3]=0.0;p[a+48>>3]=.5;p[a+56>>3]=.5;p[a+64>>3]=0.0;r=d;return}case 5:{p[a+40>>3]=.5;p[a+48>>3]=0.0;p[a+56>>3]=.5;p[a+64>>3]=0.0;r=d;return}case 6:{p[a+40>>3]=.5;p[a+48>>3]=.5;_=a+56|0;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0;r=d;return}case 7:{p[a+40>>3]=.5;_=a+48|0;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0;p[a+64>>3]=.5;r=d;return}case 8:{p[a+40>>3]=0.0;p[a+48>>3]=.5;p[a+56>>3]=0.0;p[a+64>>3]=.5;r=d;return}case 9:{_=a+40|0;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0;p[a+56>>3]=.5;p[a+64>>3]=.5;r=d;return}default:{_=o+56|0;D=o+4|0;k[o>>2]=27524;k[_>>2]=27544;B=0;wa(508,o+56|0,D|0);aa=B;B=0;if(aa&1){aa=Rb()|0;ja=Q;ka=aa;vva(_);Qb(ka|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[_>>2]=27488;B=0;va(448,D|0);aa=B;B=0;do if(aa&1){$=Rb()|0;la=Q;ma=$}else{k[D>>2]=27560;$=o+36|0;k[$>>2]=0;k[$+4>>2]=0;k[$+8>>2]=0;k[$+12>>2]=0;k[o+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,D|0,e|0);Z=B;B=0;if(Z&1){Z=Rb()|0;ia=Q;Yua(e);Yua($);Ava(D);la=ia;ma=Z;break}Yua(e);B=0;Z=Ia(40,o|0,139048,29)|0;ia=B;B=0;c:do if(!(ia&1)?(B=0,Xa(239,Z|0,0)|0,ha=B,B=0,!(ha&1)):0){ha=Ab(20)|0;B=0;eb(502,q|0,138856,75);y=B;B=0;do if(!(y&1)){B=0;eb(502,s|0,139574,9);j=B;B=0;if(j&1){j=Rb()|0;ba=Q;Yua(q);na=j;oa=ba;break}B=0;wa(510,t|0,D|0);ba=B;B=0;if(ba&1){ba=Rb()|0;pa=1;qa=Q;ra=ba}else{B=0;ua(163,ha|0,q|0,s|0,214,t|0);ba=B;B=0;if(ba&1)sa=1;else{B=0;eb(503,ha|0,1240,229);B=0;sa=0}ba=Rb()|0;j=Q;Yua(t);pa=sa;qa=j;ra=ba}Yua(s);Yua(q);if(pa){na=ra;oa=qa}else{ta=qa;xa=ra;break c}}else{ba=Rb()|0;na=ba;oa=Q}while(0);zb(ha|0);ta=oa;xa=na}else W=85;while(0);if((W|0)==85){Z=Rb()|0;ta=Q;xa=Z}k[o>>2]=27468;k[_>>2]=27488;k[D>>2]=27560;Yua($);Ava(D);vva(_);X=ta;Y=xa;Qb(Y|0)}while(0);ja=la;ka=ma;vva(_);Qb(ka|0)}}while(0);break}default:{ka=u+56|0;ma=u+4|0;k[u>>2]=27524;k[ka>>2]=27544;B=0;wa(508,u+56|0,ma|0);la=B;B=0;if(la&1){la=Rb()|0;za=Q;Aa=la;vva(ka);Qb(Aa|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[ka>>2]=27488;B=0;va(448,ma|0);la=B;B=0;do if(la&1){ja=Rb()|0;Ba=Q;Ca=ja}else{k[ma>>2]=27560;ja=u+36|0;k[ja>>2]=0;k[ja+4>>2]=0;k[ja+8>>2]=0;k[ja+12>>2]=0;k[u+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,ma|0,e|0);xa=B;B=0;if(xa&1){xa=Rb()|0;ta=Q;Yua(e);Yua(ja);Ava(ma);Ba=ta;Ca=xa;break}Yua(e);B=0;xa=Ia(40,u|0,145867,15)|0;ta=B;B=0;d:do if((((!(ta&1)?(B=0,o=ya(427,b|0)|0,na=B,B=0,!(na&1)):0)?(na=Lta(o)|0,B=0,oa=Ia(40,xa|0,o|0,na|0)|0,na=B,B=0,!(na&1)):0)?(B=0,na=Ia(40,oa|0,144645,14)|0,oa=B,B=0,!(oa&1)):0)?(B=0,Xa(239,na|0,0)|0,na=B,B=0,!(na&1)):0){na=Ab(20)|0;B=0;eb(502,v|0,138856,75);oa=B;B=0;do if(!(oa&1)){B=0;eb(502,w|0,139574,9);o=B;B=0;if(o&1){o=Rb()|0;ra=Q;Yua(v);Da=o;Ea=ra;break}B=0;wa(510,x|0,ma|0);ra=B;B=0;if(ra&1){ra=Rb()|0;Fa=1;Ga=Q;Ha=ra}else{B=0;ua(163,na|0,v|0,w|0,217,x|0);ra=B;B=0;if(ra&1)Ja=1;else{B=0;eb(503,na|0,1240,229);B=0;Ja=0}ra=Rb()|0;o=Q;Yua(x);Fa=Ja;Ga=o;Ha=ra}Yua(w);Yua(v);if(Fa){Da=Ha;Ea=Ga}else{Ka=Ga;La=Ha;break d}}else{ra=Rb()|0;Da=ra;Ea=Q}while(0);zb(na|0);Ka=Ea;La=Da}else W=111;while(0);if((W|0)==111){xa=Rb()|0;Ka=Q;La=xa}k[u>>2]=27468;k[ka>>2]=27488;k[ma>>2]=27560;Yua(ja);Ava(ma);vva(ka);X=Ka;Y=La;Qb(Y|0)}while(0);za=Ba;Aa=Ca;vva(ka);Qb(Aa|0)}}}function cka(a){a=a|0;return 0}function dka(a){a=a|0;return k[a+16>>2]|0}function eka(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;b=r;r=r+192|0;a=b+176|0;c=b+40|0;d=b+24|0;e=b+12|0;f=b;b=c+56|0;g=c+4|0;k[c>>2]=27524;k[b>>2]=27544;B=0;wa(508,c+56|0,g|0);h=B;B=0;if(h&1){h=Rb()|0;i=Q;j=h;vva(b);Qb(j|0)}k[c+128>>2]=0;k[c+132>>2]=-1;k[c>>2]=27468;k[b>>2]=27488;B=0;va(448,g|0);h=B;B=0;do if(h&1){l=Rb()|0;m=Q;n=l}else{k[g>>2]=27560;l=c+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[c+52>>2]=16;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;B=0;wa(509,g|0,a|0);o=B;B=0;if(o&1){o=Rb()|0;p=Q;Yua(a);Yua(l);Ava(g);m=p;n=o;break}Yua(a);B=0;o=Ia(40,c|0,145010,13)|0;p=B;B=0;a:do if(!(p&1)?(B=0,Xa(239,o|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,d|0,138856,75);s=B;B=0;do if(!(s&1)){B=0;eb(502,e|0,139078,20);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Yua(d);v=u;w=t;break}B=0;wa(510,f|0,g|0);t=B;B=0;if(t&1){t=Rb()|0;x=Q;y=t;z=1}else{B=0;ua(163,q|0,d|0,e|0,252,f|0);t=B;B=0;if(t&1)A=1;else{B=0;eb(503,q|0,1240,229);B=0;A=0}t=Rb()|0;u=Q;Yua(f);x=u;y=t;z=A}Yua(e);Yua(d);if(z){v=x;w=y}else{C=x;D=y;break a}}else{t=Rb()|0;v=Q;w=t}while(0);zb(q|0);C=v;D=w}else E=16;while(0);if((E|0)==16){o=Rb()|0;C=Q;D=o}k[c>>2]=27468;k[b>>2]=27488;k[g>>2]=27560;Yua(l);Ava(g);vva(b);Qb(D|0)}while(0);i=m;j=n;vva(b);Qb(j|0)}function fka(a){a=a|0;var b=0;k[a>>2]=40828;k[a+16>>2]=-1;b=a+20|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;p[a+8>>3]=-9999.0;p[a+40>>3]=-9999.0;p[a+48>>3]=-9999.0;p[a+56>>3]=-9999.0;p[a+64>>3]=-9999.0;return}function gka(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;d=r;r=r+32|0;e=d+24|0;f=d+20|0;g=d+16|0;h=d+12|0;i=d+8|0;j=d+4|0;l=d;k[a>>2]=40828;k[f>>2]=0;k[g>>2]=0;k[h>>2]=0;k[i>>2]=0;k[j>>2]=0;k[l>>2]=0;Una(e,f,g,h,i,b);Sna(j,l,c);b=k[e>>2]|0;e=ma(b,c)|0;k[a+16>>2]=e;m=e>>>0>536870911?-1:e<<3;e=Rqa(m)|0;k[a+24>>2]=e;n=Rqa(m)|0;k[a+28>>2]=n;o=Rqa(m)|0;k[a+32>>2]=o;q=Rqa(m)|0;k[a+36>>2]=q;s=Rqa(m)|0;k[a+20>>2]=s;if((b|0)>0){m=k[f>>2]|0;t=k[g>>2]|0;u=k[h>>2]|0;v=k[j>>2]|0;w=k[i>>2]|0;x=k[l>>2]|0;if((c|0)>0){y=0;do{z=m+(y<<3)|0;A=ma(y,c)|0;B=t+(y<<3)|0;C=u+(y<<3)|0;D=w+(y<<3)|0;E=0;do{F=E+A|0;p[e+(F<<3)>>3]=+p[z>>3];p[n+(F<<3)>>3]=+p[B>>3];p[o+(F<<3)>>3]=+p[C>>3];p[q+(F<<3)>>3]=+p[v+(E<<3)>>3];p[s+(F<<3)>>3]=+p[D>>3]*+p[x+(E<<3)>>3];E=E+1|0}while((E|0)!=(c|0));y=y+1|0}while((y|0)<(b|0));G=m}else G=m}else G=k[f>>2]|0;p[a+8>>3]=-9999.0;p[a+40>>3]=-9999.0;p[a+48>>3]=-9999.0;p[a+56>>3]=-9999.0;p[a+64>>3]=-9999.0;if(G)Tqa(G);k[f>>2]=0;f=k[g>>2]|0;if(f)Tqa(f);k[g>>2]=0;g=k[h>>2]|0;if(g)Tqa(g);k[h>>2]=0;h=k[j>>2]|0;if(h)Tqa(h);k[j>>2]=0;j=k[i>>2]|0;if(j)Tqa(j);k[i>>2]=0;i=k[l>>2]|0;if(!i){r=d;return}Tqa(i);r=d;return}function hka(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;e=r;r=r+208|0;f=e+184|0;g=e+180|0;h=e+176|0;i=e+40|0;j=e+24|0;l=e+12|0;m=e;k[a>>2]=40828;k[g>>2]=0;k[h>>2]=0;n=a+16|0;k[n>>2]=d;B=0;eb(526,g|0,h|0,d|0);d=B;B=0;a:do if(((((!(d&1)?(o=k[n>>2]|0,q=o>>>0>536870911?-1:o<<3,B=0,s=ya(422,q|0)|0,t=B,B=0,!(t&1)):0)?(k[a+24>>2]=s,B=0,t=ya(422,q|0)|0,u=B,B=0,!(u&1)):0)?(u=a+28|0,k[u>>2]=t,B=0,v=ya(422,q|0)|0,w=B,B=0,!(w&1)):0)?(w=a+32|0,k[w>>2]=v,B=0,v=ya(422,q|0)|0,x=B,B=0,!(x&1)):0)?(x=a+36|0,k[x>>2]=v,B=0,v=ya(422,q|0)|0,q=B,B=0,!(q&1)):0){q=a+20|0;k[q>>2]=v;b:do if((b|0)==0&(c|0)==3){v=(o|0)>0;if(v){y=0;do{p[s+(y<<3)>>3]=1.0;y=y+1|0}while((y|0)<(o|0));if((v?(WEa(t|0,0,((o|0)>1?o:1)<<3|0)|0,y=k[n>>2]|0,(y|0)>0):0)?(WEa(k[w>>2]|0,0,((y|0)>1?y:1)<<3|0)|0,y=k[n>>2]|0,z=(y|0)>0,z):0){A=k[g>>2]|0;C=k[x>>2]|0;D=0;do{p[C+(D<<3)>>3]=+p[A+(D<<3)>>3];D=D+1|0}while((D|0)<(y|0));if(z){D=k[h>>2]|0;A=k[q>>2]|0;C=0;do{p[A+(C<<3)>>3]=+p[D+(C<<3)>>3];C=C+1|0}while((C|0)<(y|0))}}}}else{if((b|0)==1&(c|0)==4){if((o|0)<=0)break;WEa(s|0,0,((o|0)>1?o:1)<<3|0)|0;y=k[n>>2]|0;C=(y|0)>0;if(!C)break;D=k[u>>2]|0;A=0;do{p[D+(A<<3)>>3]=1.0;A=A+1|0}while((A|0)<(y|0));if(C){WEa(k[w>>2]|0,0,((y|0)>1?y:1)<<3|0)|0;E=k[n>>2]|0}else E=y;A=(E|0)>0;if(!A)break;D=k[g>>2]|0;z=k[x>>2]|0;v=0;do{p[z+(v<<3)>>3]=+p[D+(v<<3)>>3];v=v+1|0}while((v|0)<(E|0));if(!A)break;v=k[h>>2]|0;D=k[q>>2]|0;z=0;while(1){p[D+(z<<3)>>3]=+p[v+(z<<3)>>3];z=z+1|0;if((z|0)>=(E|0))break b}}if((b|0)==2&(c|0)==5){if((o|0)<=0)break;WEa(s|0,0,((o|0)>1?o:1)<<3|0)|0;z=k[n>>2]|0;if((z|0)<=0)break;WEa(k[u>>2]|0,0,((z|0)>1?z:1)<<3|0)|0;z=k[n>>2]|0;v=(z|0)>0;if(!v)break;D=k[w>>2]|0;A=0;do{p[D+(A<<3)>>3]=1.0;A=A+1|0}while((A|0)<(z|0));if(!v)break;A=k[g>>2]|0;D=k[x>>2]|0;y=0;do{p[D+(y<<3)>>3]=+p[A+(y<<3)>>3];y=y+1|0}while((y|0)<(z|0));y=k[h>>2]|0;A=k[q>>2]|0;D=0;while(1){p[A+(D<<3)>>3]=+p[y+(D<<3)>>3];D=D+1|0;if((D|0)>=(z|0))break b}}z=i+56|0;D=i+4|0;k[i>>2]=27524;k[z>>2]=27544;B=0;wa(508,i+56|0,D|0);y=B;B=0;if(y&1){y=Rb()|0;F=Q;G=y}else{k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=27468;k[z>>2]=27488;B=0;va(448,D|0);y=B;B=0;do if(y&1){A=Rb()|0;H=Q;I=A}else{k[D>>2]=27560;A=i+36|0;k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;k[A+12>>2]=0;k[i+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,D|0,f|0);v=B;B=0;if(v&1){v=Rb()|0;C=Q;Yua(f);Yua(A);Ava(D);H=C;I=v;break}Yua(f);B=0;v=Ia(40,i|0,139112,23)|0;C=B;B=0;c:do if(!(C&1)?(B=0,Xa(239,v|0,0)|0,J=B,B=0,!(J&1)):0){J=Ab(20)|0;B=0;eb(502,j|0,139136,75);K=B;B=0;do if(!(K&1)){B=0;eb(502,l|0,139212,10);L=B;B=0;if(L&1){L=Rb()|0;M=Q;Yua(j);N=L;O=M;break}B=0;wa(510,m|0,D|0);M=B;B=0;if(M&1){M=Rb()|0;P=M;R=Q;S=1}else{B=0;ua(163,J|0,j|0,l|0,126,m|0);M=B;B=0;if(M&1)T=1;else{B=0;eb(503,J|0,1240,229);B=0;T=0}M=Rb()|0;L=Q;Yua(m);P=M;R=L;S=T}Yua(l);Yua(j);if(S){N=P;O=R}else{U=P;V=R;break c}}else{L=Rb()|0;N=L;O=Q}while(0);zb(J|0);U=N;V=O}else W=59;while(0);if((W|0)==59){v=Rb()|0;U=v;V=Q}k[i>>2]=27468;k[z>>2]=27488;k[D>>2]=27560;Yua(A);Ava(D);vva(z);X=V;Y=U;Qb(Y|0)}while(0);F=H;G=I}vva(z);Z=F;_=G;break a}while(0);p[a+8>>3]=-9999.0;p[a+40>>3]=-9999.0;p[a+48>>3]=-9999.0;p[a+56>>3]=-9999.0;p[a+64>>3]=-9999.0;q=k[g>>2]|0;if(q)Tqa(q);k[g>>2]=0;q=k[h>>2]|0;if(!q){r=e;return}Tqa(q);r=e;return}else W=11;while(0);if((W|0)==11){W=Rb()|0;Z=Q;_=W}X=Z;Y=_;Qb(Y|0)}function ika(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0;f=r;r=r+192|0;g=f+176|0;h=f+40|0;i=f+24|0;j=f+12|0;l=f;k[a>>2]=40828;do if((b|0)==0&(c|0)==1&(d|0)==2){m=a+16|0;B=0;La(39,m|0,a+24|0,a+28|0,a+32|0,a+20|0,e|0);n=B;B=0;if(!(n&1)?(n=k[m>>2]|0,B=0,m=ya(422,(n>>>0>536870911?-1:n<<3)|0)|0,o=B,B=0,!(o&1)):0){k[a+36>>2]=m;if((n|0)>0)q=0;else{r=f;return}do{p[m+(q<<3)>>3]=-1.0;q=q+1|0}while((q|0)<(n|0));r=f;return}else s=5}else{if((b|0)==3&(c|0)==4&(d|0)==5){n=a+16|0;B=0;La(39,n|0,a+24|0,a+28|0,a+32|0,a+20|0,e|0);m=B;B=0;if(m&1){s=5;break}m=k[n>>2]|0;B=0;n=ya(422,(m>>>0>536870911?-1:m<<3)|0)|0;o=B;B=0;if(o&1){s=5;break}k[a+36>>2]=n;if((m|0)>0)t=0;else{r=f;return}do{p[n+(t<<3)>>3]=1.0;t=t+1|0}while((t|0)<(m|0));r=f;return}m=h+56|0;n=h+4|0;k[h>>2]=27524;k[m>>2]=27544;B=0;wa(508,h+56|0,n|0);o=B;B=0;if(o&1){o=Rb()|0;u=Q;v=o}else{k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);o=B;B=0;do if(o&1){w=Rb()|0;x=Q;y=w}else{k[n>>2]=27560;w=h+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[h+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,n|0,g|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(g);Yua(w);Ava(n);x=A;y=z;break}Yua(g);B=0;z=Ia(40,h|0,139223,22)|0;A=B;B=0;a:do if(!(A&1)?(B=0,Xa(239,z|0,0)|0,C=B,B=0,!(C&1)):0){C=Ab(20)|0;B=0;eb(502,i|0,139136,75);D=B;B=0;do if(!(D&1)){B=0;eb(502,j|0,139212,10);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(i);G=F;H=E;break}B=0;wa(510,l|0,n|0);E=B;B=0;if(E&1){E=Rb()|0;I=E;J=Q;K=1}else{B=0;ua(163,C|0,i|0,j|0,165,l|0);E=B;B=0;if(E&1)L=1;else{B=0;eb(503,C|0,1240,229);B=0;L=0}E=Rb()|0;F=Q;Yua(l);I=E;J=F;K=L}Yua(j);Yua(i);if(K){G=J;H=I}else{M=J;N=I;break a}}else{F=Rb()|0;G=Q;H=F}while(0);zb(C|0);M=G;N=H}else s=28;while(0);if((s|0)==28){z=Rb()|0;M=Q;N=z}k[h>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(w);Ava(n);vva(m);O=M;P=N;Qb(P|0)}while(0);u=x;v=y}vva(m);R=u;S=v}while(0);if((s|0)==5){s=Rb()|0;R=Q;S=s}O=R;P=S;Qb(P|0)}function jka(a,b,c,d,e,f){a=a|0;b=b|0;c=+c;d=+d;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0,O=0.0,P=0,R=0.0,S=0.0,T=0.0,U=0,V=0.0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0.0,Ma=0,Na=0.0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0.0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0;g=r;r=r+560|0;h=g+544|0;i=g+532|0;j=g+520|0;l=g+384|0;m=g+368|0;n=g+84|0;o=g+72|0;q=g+232|0;s=g+60|0;t=g+48|0;u=g+36|0;v=g+96|0;w=g+24|0;x=g+12|0;y=g;k[a>>2]=40828;a:do if(e){z=a+16|0;A=a+24|0;C=a+28|0;D=a+32|0;E=a+20|0;B=0;La(39,z|0,A|0,C|0,D|0,E|0,f|0);F=B;B=0;if(!(F&1)){F=k[z>>2]|0;z=(F|0)>0;b:do if(z){G=k[A>>2]|0;H=k[C>>2]|0;I=k[D>>2]|0;if(!b){J=k[E>>2]|0;K=0;while(1){L=G+(K<<3)|0;M=+p[L>>3]*0.0;N=H+(K<<3)|0;O=+p[N>>3];P=I+(K<<3)|0;R=+p[P>>3];S=M+O*c+R*0.0;T=M+O*0.0+R*d;p[L>>3]=1.0-S-T;p[N>>3]=S;p[P>>3]=T;P=J+(K<<3)|0;p[P>>3]=+p[P>>3]*c*d;K=K+1|0;if((K|0)>=(F|0))break b}}else U=0;c:while(1){K=G+(U<<3)|0;T=+p[K>>3]*0.0;J=H+(U<<3)|0;S=+p[J>>3];P=I+(U<<3)|0;R=+p[P>>3];O=T+S*c+R*0.0;M=T+S*0.0+R*d;switch(b|0){case 2:{p[K>>3]=O;p[J>>3]=M;V=1.0-O-M;break}case 1:{p[K>>3]=M;p[J>>3]=1.0-O-M;V=O;break}default:break c}p[P>>3]=V;P=(k[E>>2]|0)+(U<<3)|0;p[P>>3]=+p[P>>3]*c*d;U=U+1|0;if((U|0)>=(F|0))break b}I=l+56|0;H=l+4|0;k[l>>2]=27524;k[I>>2]=27544;B=0;wa(508,l+56|0,H|0);G=B;B=0;if(G&1){G=Rb()|0;W=Q;X=G}else{k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[I>>2]=27488;B=0;va(448,H|0);G=B;B=0;do if(G&1){P=Rb()|0;Y=Q;Z=P}else{k[H>>2]=27560;P=l+36|0;k[P>>2]=0;k[P+4>>2]=0;k[P+8>>2]=0;k[P+12>>2]=0;k[l+52>>2]=16;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;B=0;wa(509,H|0,j|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(j);Yua(P);Ava(H);Y=K;Z=J;break}Yua(j);B=0;J=Ia(40,l|0,139246,6)|0;K=B;B=0;d:do if(((!(K&1)?(B=0,N=Xa(242,J|0,b|0)|0,L=B,B=0,!(L&1)):0)?(B=0,L=Ia(40,N|0,146481,18)|0,N=B,B=0,!(N&1)):0)?(B=0,Xa(239,L|0,0)|0,L=B,B=0,!(L&1)):0){L=Ab(20)|0;B=0;eb(502,m|0,139136,75);N=B;B=0;do if(!(N&1)){B=0;eb(502,n|0,139212,10);_=B;B=0;if(_&1){_=Rb()|0;$=Q;Yua(m);aa=$;ba=_;break}B=0;wa(510,o|0,H|0);_=B;B=0;if(_&1){_=Rb()|0;ca=_;da=Q;ea=1}else{B=0;ua(163,L|0,m|0,n|0,286,o|0);_=B;B=0;if(_&1)fa=1;else{B=0;eb(503,L|0,1240,229);B=0;fa=0}_=Rb()|0;$=Q;Yua(o);ca=_;da=$;ea=fa}Yua(n);Yua(m);if(ea){aa=da;ba=ca}else{ga=da;ha=ca;break d}}else{$=Rb()|0;aa=Q;ba=$}while(0);zb(L|0);ga=aa;ha=ba}else ia=29;while(0);if((ia|0)==29){J=Rb()|0;ga=Q;ha=J}k[l>>2]=27468;k[I>>2]=27488;k[H>>2]=27560;Yua(P);Ava(H);vva(I);ja=ga;ka=ha;Qb(ka|0)}while(0);W=Y;X=Z}vva(I);la=W;ma=X;break a}while(0);B=0;E=ya(422,(F>>>0>536870911?-1:F<<3)|0)|0;D=B;B=0;if(!(D&1)){k[a+36>>2]=E;if(z)na=0;else{oa=a+8|0;p[oa>>3]=-9999.0;pa=a+40|0;p[pa>>3]=-9999.0;qa=a+48|0;p[qa>>3]=-9999.0;ra=a+56|0;p[ra>>3]=-9999.0;sa=a+64|0;p[sa>>3]=-9999.0;r=g;return}do{p[E+(na<<3)>>3]=-1.0;na=na+1|0}while((na|0)<(F|0));oa=a+8|0;p[oa>>3]=-9999.0;pa=a+40|0;p[pa>>3]=-9999.0;qa=a+48|0;p[qa>>3]=-9999.0;ra=a+56|0;p[ra>>3]=-9999.0;sa=a+64|0;p[sa>>3]=-9999.0;r=g;return}else ia=8}else ia=8}else{B=0;F=ya(423,72)|0;E=B;B=0;if(E&1)ia=8;else{k[F>>2]=40828;E=F+16|0;z=F+24|0;D=F+28|0;C=F+32|0;A=F+20|0;B=0;La(39,E|0,z|0,D|0,C|0,A|0,f|0);H=B;B=0;if(!(H&1)?(H=k[E>>2]|0,B=0,G=ya(422,(H>>>0>536870911?-1:H<<3)|0)|0,J=B,B=0,!(J&1)):0){J=F+36|0;k[J>>2]=G;if((H|0)>0){K=0;do{p[G+(K<<3)>>3]=-1.0;K=K+1|0}while((K|0)!=(H|0))}B=0;H=ya(423,72)|0;K=B;B=0;if(K&1){ia=8;break}k[H>>2]=40828;K=H+16|0;G=H+24|0;N=H+28|0;$=H+32|0;_=H+20|0;B=0;La(39,K|0,G|0,N|0,$|0,_|0,f|0);ta=B;B=0;if(!(ta&1)?(ta=k[K>>2]|0,B=0,K=ya(422,(ta>>>0>536870911?-1:ta<<3)|0)|0,xa=B,B=0,!(xa&1)):0){k[H+36>>2]=K;xa=(ta|0)>0;if(xa){za=0;do{p[K+(za<<3)>>3]=-1.0;za=za+1|0}while((za|0)!=(ta|0))}za=k[E>>2]|0;Aa=(za|0)>0;e:do if(Aa){Ba=k[z>>2]|0;Ca=k[D>>2]|0;Da=k[C>>2]|0;O=1.0-d;if(!b){Ea=k[A>>2]|0;Fa=0;while(1){Ga=Ba+(Fa<<3)|0;M=+p[Ga>>3];Ha=Ca+(Fa<<3)|0;R=+p[Ha>>3];Ja=Da+(Fa<<3)|0;S=+p[Ja>>3];T=M*c+R*0.0+S*0.0;Ka=M*0.0+R+S*d;p[Ga>>3]=1.0-T-Ka;p[Ha>>3]=T;p[Ja>>3]=Ka;Ja=Ea+(Fa<<3)|0;p[Ja>>3]=O*(+p[Ja>>3]*c);Fa=Fa+1|0;if((Fa|0)>=(za|0))break e}}else Ma=0;f:while(1){Fa=Ba+(Ma<<3)|0;Ka=+p[Fa>>3];Ea=Ca+(Ma<<3)|0;T=+p[Ea>>3];I=Da+(Ma<<3)|0;S=+p[I>>3];R=Ka*c+T*0.0+S*0.0;M=Ka*0.0+T+S*d;switch(b|0){case 2:{p[Fa>>3]=R;p[Ea>>3]=M;Na=1.0-R-M;break}case 1:{p[Fa>>3]=M;p[Ea>>3]=1.0-R-M;Na=R;break}default:break f}p[I>>3]=Na;I=(k[A>>2]|0)+(Ma<<3)|0;p[I>>3]=O*(+p[I>>3]*c);Ma=Ma+1|0;if((Ma|0)>=(za|0))break e}Da=q+56|0;Ca=q+4|0;k[q>>2]=27524;k[Da>>2]=27544;B=0;wa(508,q+56|0,Ca|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;Oa=Q;Pa=Ba}else{k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[Da>>2]=27488;B=0;va(448,Ca|0);Ba=B;B=0;do if(Ba&1){I=Rb()|0;Qa=Q;Ra=I}else{k[Ca>>2]=27560;I=q+36|0;k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[I+12>>2]=0;k[q+52>>2]=16;k[i>>2]=0;k[i+4>>2]=0;k[i+8>>2]=0;B=0;wa(509,Ca|0,i|0);Ea=B;B=0;if(Ea&1){Ea=Rb()|0;Fa=Q;Yua(i);Yua(I);Ava(Ca);Qa=Fa;Ra=Ea;break}Yua(i);B=0;Ea=Ia(40,q|0,139246,6)|0;Fa=B;B=0;g:do if(Fa&1)ia=81;else{B=0;Ja=Xa(242,Ea|0,b|0)|0;Ha=B;B=0;if(Ha&1){ia=81;break}B=0;Ha=Ia(40,Ja|0,146481,18)|0;Ja=B;B=0;if(Ja&1){ia=81;break}B=0;Xa(239,Ha|0,0)|0;Ha=B;B=0;if(Ha&1){ia=81;break}Ha=Ab(20)|0;B=0;eb(502,s|0,139136,75);Ja=B;B=0;do if(!(Ja&1)){B=0;eb(502,t|0,139212,10);Ga=B;B=0;if(Ga&1){Ga=Rb()|0;Sa=Q;Yua(s);Ta=Ga;Ua=Sa;break}B=0;wa(510,u|0,Ca|0);Sa=B;B=0;if(Sa&1){Sa=Rb()|0;Va=1;Wa=Q;Ya=Sa}else{B=0;ua(163,Ha|0,s|0,t|0,326,u|0);Sa=B;B=0;if(Sa&1)Za=1;else{B=0;eb(503,Ha|0,1240,229);B=0;Za=0}Sa=Rb()|0;Ga=Q;Yua(u);Va=Za;Wa=Ga;Ya=Sa}Yua(t);Yua(s);if(Va){Ta=Ya;Ua=Wa}else{_a=Wa;$a=Ya;break g}}else{Sa=Rb()|0;Ta=Sa;Ua=Q}while(0);zb(Ha|0);_a=Ua;$a=Ta}while(0);if((ia|0)==81){Ea=Rb()|0;_a=Q;$a=Ea}k[q>>2]=27468;k[Da>>2]=27488;k[Ca>>2]=27560;Yua(I);Ava(Ca);vva(Da);ja=_a;ka=$a;Qb(ka|0)}while(0);Oa=Qa;Pa=Ra}vva(Da);la=Oa;ma=Pa;break a}while(0);h:do if(xa){E=k[G>>2]|0;Ca=k[N>>2]|0;Ba=k[$>>2]|0;O=1.0-c;if(!b){Ea=k[_>>2]|0;Fa=0;while(1){P=E+(Fa<<3)|0;R=+p[P>>3];Ja=Ca+(Fa<<3)|0;M=+p[Ja>>3];L=Ba+(Fa<<3)|0;S=+p[L>>3];T=R*c+M+S*0.0;Ka=R*0.0+M*0.0+S;p[P>>3]=1.0-T-Ka;p[Ja>>3]=T;p[L>>3]=Ka;L=Ea+(Fa<<3)|0;p[L>>3]=O*+p[L>>3];Fa=Fa+1|0;if((Fa|0)>=(ta|0))break h}}else ab=0;i:while(1){Fa=E+(ab<<3)|0;Ka=+p[Fa>>3];Ea=Ca+(ab<<3)|0;T=+p[Ea>>3];Da=Ba+(ab<<3)|0;S=+p[Da>>3];M=Ka*c+T+S*0.0;R=Ka*0.0+T*0.0+S;switch(b|0){case 2:{p[Fa>>3]=M;p[Ea>>3]=R;bb=1.0-M-R;break}case 1:{p[Fa>>3]=R;p[Ea>>3]=1.0-M-R;bb=M;break}default:break i}p[Da>>3]=bb;Da=(k[_>>2]|0)+(ab<<3)|0;p[Da>>3]=O*+p[Da>>3];ab=ab+1|0;if((ab|0)>=(ta|0))break h}Ba=v+56|0;Ca=v+4|0;k[v>>2]=27524;k[Ba>>2]=27544;B=0;wa(508,v+56|0,Ca|0);E=B;B=0;if(E&1){E=Rb()|0;cb=Q;db=E}else{k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[Ba>>2]=27488;B=0;va(448,Ca|0);E=B;B=0;do if(E&1){Da=Rb()|0;fb=Q;gb=Da}else{k[Ca>>2]=27560;Da=v+36|0;k[Da>>2]=0;k[Da+4>>2]=0;k[Da+8>>2]=0;k[Da+12>>2]=0;k[v+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,Ca|0,h|0);Ea=B;B=0;if(Ea&1){Ea=Rb()|0;Fa=Q;Yua(h);Yua(Da);Ava(Ca);fb=Fa;gb=Ea;break}Yua(h);B=0;Ea=Ia(40,v|0,139246,6)|0;Fa=B;B=0;j:do if(Fa&1)ia=110;else{B=0;L=Xa(242,Ea|0,b|0)|0;Ja=B;B=0;if(Ja&1){ia=110;break}B=0;Ja=Ia(40,L|0,146481,18)|0;L=B;B=0;if(L&1){ia=110;break}B=0;Xa(239,Ja|0,0)|0;Ja=B;B=0;if(Ja&1){ia=110;break}Ja=Ab(20)|0;B=0;eb(502,w|0,139136,75);L=B;B=0;do if(!(L&1)){B=0;eb(502,x|0,139212,10);P=B;B=0;if(P&1){P=Rb()|0;Sa=Q;Yua(w);hb=P;ib=Sa;break}B=0;wa(510,y|0,Ca|0);Sa=B;B=0;if(Sa&1){Sa=Rb()|0;jb=1;kb=Q;lb=Sa}else{B=0;ua(163,Ja|0,w|0,x|0,357,y|0);Sa=B;B=0;if(Sa&1)mb=1;else{B=0;eb(503,Ja|0,1240,229);B=0;mb=0}Sa=Rb()|0;P=Q;Yua(y);jb=mb;kb=P;lb=Sa}Yua(x);Yua(w);if(jb){hb=lb;ib=kb}else{nb=kb;ob=lb;break j}}else{Sa=Rb()|0;hb=Sa;ib=Q}while(0);zb(Ja|0);nb=ib;ob=hb}while(0);if((ia|0)==110){Ea=Rb()|0;nb=Q;ob=Ea}k[v>>2]=27468;k[Ba>>2]=27488;k[Ca>>2]=27560;Yua(Da);Ava(Ca);vva(Ba);ja=nb;ka=ob;Qb(ka|0)}while(0);cb=fb;db=gb}vva(Ba);la=cb;ma=db;break a}while(0);Ca=za+ta|0;k[a+16>>2]=Ca;E=Ca>>>0>536870911?-1:Ca<<3;B=0;Ca=ya(422,E|0)|0;Ea=B;B=0;if(Ea&1){ia=8;break}k[a+24>>2]=Ca;B=0;Ea=ya(422,E|0)|0;Fa=B;B=0;if(Fa&1){ia=8;break}k[a+28>>2]=Ea;B=0;Fa=ya(422,E|0)|0;I=B;B=0;if(I&1){ia=8;break}k[a+32>>2]=Fa;B=0;I=ya(422,E|0)|0;L=B;B=0;if(L&1){ia=8;break}k[a+36>>2]=I;B=0;L=ya(422,E|0)|0;E=B;B=0;if(E&1){ia=8;break}k[a+20>>2]=L;if(Aa){E=k[z>>2]|0;Ha=k[D>>2]|0;Sa=k[C>>2]|0;P=k[J>>2]|0;Ga=k[A>>2]|0;pb=0;do{p[Ca+(pb<<3)>>3]=+p[E+(pb<<3)>>3];p[Ea+(pb<<3)>>3]=+p[Ha+(pb<<3)>>3];p[Fa+(pb<<3)>>3]=+p[Sa+(pb<<3)>>3];p[I+(pb<<3)>>3]=+p[P+(pb<<3)>>3];p[L+(pb<<3)>>3]=+p[Ga+(pb<<3)>>3];pb=pb+1|0}while((pb|0)<(za|0))}if(xa){pb=k[G>>2]|0;Ga=k[N>>2]|0;P=k[$>>2]|0;Sa=k[_>>2]|0;Ha=0;do{E=za+Ha|0;p[Ca+(E<<3)>>3]=+p[pb+(Ha<<3)>>3];p[Ea+(E<<3)>>3]=+p[Ga+(Ha<<3)>>3];p[Fa+(E<<3)>>3]=+p[P+(Ha<<3)>>3];p[I+(E<<3)>>3]=+p[K+(Ha<<3)>>3];p[L+(E<<3)>>3]=+p[Sa+(Ha<<3)>>3];Ha=Ha+1|0}while((Ha|0)<(ta|0))}Ec[k[(k[F>>2]|0)+4>>2]&1023](F);Ec[k[(k[H>>2]|0)+4>>2]&1023](H);oa=a+8|0;p[oa>>3]=-9999.0;pa=a+40|0;p[pa>>3]=-9999.0;qa=a+48|0;p[qa>>3]=-9999.0;ra=a+56|0;p[ra>>3]=-9999.0;sa=a+64|0;p[sa>>3]=-9999.0;r=g;return}ta=Rb()|0;Ha=Q;Sqa(H);ja=Ha;ka=ta;Qb(ka|0)}ta=Rb()|0;Ha=Q;Sqa(F);ja=Ha;ka=ta;Qb(ka|0)}}while(0);if((ia|0)==8){ia=Rb()|0;la=Q;ma=ia}ja=la;ka=ma;Qb(ka|0)}function kka(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0,H=0,I=0,J=0;e=r;r=r+16|0;f=e+12|0;g=e+8|0;h=e+4|0;i=e;k[a>>2]=40828;k[f>>2]=0;k[g>>2]=0;k[h>>2]=0;k[i>>2]=0;Sna(f,g,c);Sna(h,i,d);j=ma(d,c)|0;k[a+16>>2]=j;l=j>>>0>536870911?-1:j<<3;j=Rqa(l)|0;k[a+24>>2]=j;m=Rqa(l)|0;k[a+28>>2]=m;n=Rqa(l)|0;k[a+32>>2]=n;o=Rqa(l)|0;k[a+36>>2]=o;q=Rqa(l)|0;k[a+20>>2]=q;if((c|0)>0){a=b+24|0;l=k[f>>2]|0;s=b+8|0;t=b+32|0;u=b+16|0;v=b+40|0;w=k[h>>2]|0;x=k[g>>2]|0;y=k[i>>2]|0;if((d|0)>0){z=0;do{A=l+(z<<3)|0;B=ma(z,d)|0;C=x+(z<<3)|0;D=0;do{E=+p[b>>3];F=+p[a>>3];G=D+B|0;p[j+(G<<3)>>3]=(E+F)*.5+(F-E)*(+p[A>>3]*.5);E=+p[s>>3];F=+p[t>>3];p[m+(G<<3)>>3]=(E+F)*.5+(F-E)*(+p[A>>3]*.5);E=+p[u>>3];F=+p[v>>3];p[n+(G<<3)>>3]=(E+F)*.5+(F-E)*(+p[A>>3]*.5);p[o+(G<<3)>>3]=+p[w+(D<<3)>>3];p[q+(G<<3)>>3]=+p[C>>3]*+p[y+(D<<3)>>3];D=D+1|0}while((D|0)!=(d|0));z=z+1|0}while((z|0)!=(c|0));H=l;I=8}else{J=l;I=7}}else{J=k[f>>2]|0;I=7}if((I|0)==7?(J|0)!=0:0){H=J;I=8}if((I|0)==8)Tqa(H);k[f>>2]=0;f=k[g>>2]|0;if(f)Tqa(f);k[g>>2]=0;g=k[h>>2]|0;if(g)Tqa(g);k[h>>2]=0;h=k[i>>2]|0;if(!h){r=e;return}Tqa(h);r=e;return}function lka(a){a=a|0;var b=0,c=0;k[a>>2]=40828;b=a+20|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+24|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+28|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+32|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+36|0;a=k[b>>2]|0;if(!a){k[b>>2]=0;return}Tqa(a);k[b>>2]=0;return}function mka(a){a=a|0;lka(a);Sqa(a);return}function nka(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0;b=r;r=r+4064|0;c=b+4052|0;d=b+3760|0;e=b+4040|0;f=b+3624|0;g=b+4028|0;h=b+3472|0;i=b+4016|0;j=b+3320|0;l=b+4004|0;m=b+3184|0;n=b+3992|0;o=b+3048|0;q=b+3980|0;s=b+2896|0;t=b+3968|0;u=b+2760|0;v=b+3956|0;w=b+2608|0;x=b+3944|0;y=b+2456|0;z=b+3932|0;A=b+2320|0;C=b+3920|0;D=b+2168|0;E=b+3908|0;F=b+2032|0;G=b+3896|0;H=b+1880|0;I=b+3608|0;J=b+1744|0;K=b+3456|0;L=b+1592|0;M=b+3032|0;N=b+1456|0;O=b+2744|0;P=b+1320|0;R=b+2592|0;S=b+1168|0;T=b+2304|0;U=b+1032|0;V=b+2016|0;W=b+880|0;X=b+1728|0;Y=b+728|0;Z=b+1304|0;_=b+592|0;$=b+1016|0;aa=b+440|0;ba=b+864|0;ca=b+304|0;da=b+576|0;ea=b+152|0;fa=b+288|0;ga=b+16|0;ha=b;ia=d+56|0;ja=d+4|0;k[d>>2]=27524;k[ia>>2]=27544;B=0;wa(508,d+56|0,ja|0);ka=B;B=0;if(ka&1){ka=Rb()|0;la=Q;ma=ka;vva(ia);Qb(ma|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[ia>>2]=27488;B=0;va(448,ja|0);ka=B;B=0;do if(ka&1){na=Rb()|0;oa=Q;pa=na}else{k[ja>>2]=27560;na=d+36|0;k[na>>2]=0;k[na+4>>2]=0;k[na+8>>2]=0;k[na+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ja|0,c|0);qa=B;B=0;if(qa&1){qa=Rb()|0;ra=Q;Yua(c);Yua(na);Ava(ja);oa=ra;pa=qa;break}Yua(c);B=0;Ia(40,d|0,139253,12)|0;qa=B;B=0;do if(!(qa&1)?(B=0,wa(510,e|0,ja|0),ra=B,B=0,!(ra&1)):0){B=0;ya(424,e|0)|0;ra=B;B=0;if(ra&1){ra=Rb()|0;sa=Q;Yua(e);ta=sa;ua=ra;break}Yua(e);k[d>>2]=27468;k[ia>>2]=27488;k[ja>>2]=27560;Yua(na);Ava(ja);vva(ia);ra=f+56|0;sa=f+4|0;k[f>>2]=27524;k[ra>>2]=27544;B=0;wa(508,f+56|0,sa|0);xa=B;B=0;if(xa&1){xa=Rb()|0;za=Q;Aa=xa;vva(ra);Qb(Aa|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[ra>>2]=27488;B=0;va(448,sa|0);xa=B;B=0;do if(xa&1){Ba=Rb()|0;Ca=Q;Da=Ba}else{k[sa>>2]=27560;Ba=f+36|0;k[Ba>>2]=0;k[Ba+4>>2]=0;k[Ba+8>>2]=0;k[Ba+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,sa|0,c|0);Ea=B;B=0;if(Ea&1){Ea=Rb()|0;Fa=Q;Yua(c);Yua(Ba);Ava(sa);Ca=Fa;Da=Ea;break}Yua(c);B=0;Ea=Ia(40,f|0,139266,13)|0;Fa=B;B=0;do if(((!(Fa&1)?(Ga=a+16|0,B=0,Ha=Xa(242,Ea|0,k[Ga>>2]|0)|0,Ja=B,B=0,!(Ja&1)):0)?(B=0,Ia(40,Ha|0,149177,1)|0,Ha=B,B=0,!(Ha&1)):0)?(B=0,wa(510,g|0,sa|0),Ha=B,B=0,!(Ha&1)):0){B=0;ya(424,g|0)|0;Ha=B;B=0;if(Ha&1){Ha=Rb()|0;Ja=Q;Yua(g);Ka=Ja;La=Ha;break}Yua(g);k[f>>2]=27468;k[ra>>2]=27488;k[sa>>2]=27560;Yua(Ba);Ava(sa);vva(ra);Ha=a+20|0;a:do if(!(k[Ha>>2]|0)){Ja=o+56|0;Ma=o+4|0;k[o>>2]=27524;k[Ja>>2]=27544;B=0;wa(508,o+56|0,Ma|0);Na=B;B=0;if(Na&1){Na=Rb()|0;Oa=Q;Pa=Na;vva(Ja);Qb(Pa|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[Ja>>2]=27488;B=0;va(448,Ma|0);Na=B;B=0;do if(Na&1){Qa=Rb()|0;Ra=Q;Ta=Qa}else{k[Ma>>2]=27560;Qa=o+36|0;k[Qa>>2]=0;k[Qa+4>>2]=0;k[Qa+8>>2]=0;k[Qa+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ma|0,c|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;Va=Q;Yua(c);Yua(Qa);Ava(Ma);Ra=Va;Ta=Ua;break}Yua(c);B=0;Ia(40,o|0,139295,15)|0;Ua=B;B=0;do if(!(Ua&1)){B=0;wa(510,q|0,Ma|0);Va=B;B=0;if(Va&1){Wa=92;break}B=0;ya(424,q|0)|0;Va=B;B=0;if(Va&1){Va=Rb()|0;Ya=Q;Yua(q);Za=Ya;_a=Va;break}else{Yua(q);k[o>>2]=27468;k[Ja>>2]=27488;k[Ma>>2]=27560;Yua(Qa);Ava(Ma);vva(Ja);break a}}else Wa=92;while(0);if((Wa|0)==92){Ua=Rb()|0;Za=Q;_a=Ua}k[o>>2]=27468;k[Ja>>2]=27488;k[Ma>>2]=27560;Yua(Qa);Ava(Ma);vva(Ja);$a=Za;ab=_a;Qb(ab|0)}while(0);Oa=Ra;Pa=Ta;vva(Ja);Qb(Pa|0)}else{Ma=h+56|0;Na=h+4|0;k[h>>2]=27524;k[Ma>>2]=27544;B=0;wa(508,h+56|0,Na|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;bb=Q;cb=Ua;vva(Ma);Qb(cb|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[Ma>>2]=27488;B=0;va(448,Na|0);Ua=B;B=0;do if(Ua&1){Va=Rb()|0;db=Q;eb=Va}else{k[Na>>2]=27560;Va=h+36|0;k[Va>>2]=0;k[Va+4>>2]=0;k[Va+8>>2]=0;k[Va+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Na|0,c|0);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;fb=Q;Yua(c);Yua(Va);Ava(Na);db=fb;eb=Ya;break}Yua(c);B=0;Ia(40,h|0,139280,14)|0;Ya=B;B=0;do if(Ya&1)Wa=54;else{B=0;wa(510,i|0,Na|0);fb=B;B=0;if(fb&1){Wa=54;break}B=0;ya(424,i|0)|0;fb=B;B=0;if(fb&1){fb=Rb()|0;gb=Q;Yua(i);hb=gb;ib=fb;break}Yua(i);k[h>>2]=27468;k[Ma>>2]=27488;k[Na>>2]=27560;Yua(Va);Ava(Na);vva(Ma);b:do if((k[Ga>>2]|0)>0){fb=j+56|0;gb=j+4|0;jb=j+56|0;kb=j+128|0;lb=j+132|0;mb=j+36|0;nb=j+52|0;ob=0;while(1){k[j>>2]=27524;k[fb>>2]=27544;B=0;wa(508,jb|0,gb|0);pb=B;B=0;if(pb&1){Wa=61;break}k[kb>>2]=0;k[lb>>2]=-1;k[j>>2]=27468;k[fb>>2]=27488;B=0;va(448,gb|0);pb=B;B=0;if(pb&1){Wa=62;break}k[gb>>2]=27560;k[mb>>2]=0;k[mb+4>>2]=0;k[mb+8>>2]=0;k[mb+12>>2]=0;k[nb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,gb|0,c|0);pb=B;B=0;if(pb&1){Wa=60;break}Yua(c);B=0;pb=Ia(40,j|0,149175,1)|0;qb=B;B=0;if(qb&1){Wa=71;break}B=0;qb=Sa(1,pb|0,+(+p[(k[Ha>>2]|0)+(ob<<3)>>3]))|0;pb=B;B=0;if(pb&1){Wa=71;break}B=0;Ia(40,qb|0,149177,1)|0;qb=B;B=0;if(qb&1){Wa=71;break}B=0;wa(510,l|0,gb|0);qb=B;B=0;if(qb&1){Wa=71;break}B=0;ya(424,l|0)|0;qb=B;B=0;if(qb&1){Wa=72;break}Yua(l);k[j>>2]=27468;k[fb>>2]=27488;k[gb>>2]=27560;Yua(mb);Ava(gb);vva(fb);ob=ob+1|0;if((ob|0)>=(k[Ga>>2]|0))break b}if((Wa|0)==60){ob=Rb()|0;nb=Q;Yua(c);Yua(mb);Ava(gb);rb=nb;sb=ob;Wa=63}else if((Wa|0)==61){ob=Rb()|0;tb=Q;ub=ob;vva(fb);Qb(ub|0)}else if((Wa|0)==62){ob=Rb()|0;rb=Q;sb=ob;Wa=63}else if((Wa|0)==71){ob=Rb()|0;vb=Q;wb=ob;Wa=73}else if((Wa|0)==72){ob=Rb()|0;nb=Q;Yua(l);vb=nb;wb=ob;Wa=73}if((Wa|0)==63){tb=rb;ub=sb;vva(fb);Qb(ub|0)}else if((Wa|0)==73){k[j>>2]=27468;k[fb>>2]=27488;k[gb>>2]=27560;Yua(mb);Ava(gb);vva(fb);$a=vb;ab=wb;Qb(ab|0)}}while(0);ob=m+56|0;nb=m+4|0;k[m>>2]=27524;k[ob>>2]=27544;B=0;wa(508,m+56|0,nb|0);lb=B;B=0;if(lb&1){lb=Rb()|0;xb=Q;yb=lb;vva(ob);Qb(yb|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[ob>>2]=27488;B=0;va(448,nb|0);lb=B;B=0;do if(lb&1){kb=Rb()|0;zb=Q;Ab=kb}else{k[nb>>2]=27560;kb=m+36|0;k[kb>>2]=0;k[kb+4>>2]=0;k[kb+8>>2]=0;k[kb+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,nb|0,c|0);jb=B;B=0;if(jb&1){jb=Rb()|0;qb=Q;Yua(c);Yua(kb);Ava(nb);zb=qb;Ab=jb;break}Yua(c);B=0;Ia(40,m|0,149198,2)|0;jb=B;B=0;do if(!(jb&1)){B=0;wa(510,n|0,nb|0);qb=B;B=0;if(qb&1){Wa=77;break}B=0;ya(424,n|0)|0;qb=B;B=0;if(qb&1){qb=Rb()|0;pb=Q;Yua(n);Bb=pb;Cb=qb;break}else{Yua(n);k[m>>2]=27468;k[ob>>2]=27488;k[nb>>2]=27560;Yua(kb);Ava(nb);vva(ob);break a}}else Wa=77;while(0);if((Wa|0)==77){jb=Rb()|0;Bb=Q;Cb=jb}k[m>>2]=27468;k[ob>>2]=27488;k[nb>>2]=27560;Yua(kb);Ava(nb);vva(ob);$a=Bb;ab=Cb;Qb(ab|0)}while(0);xb=zb;yb=Ab;vva(ob);Qb(yb|0)}while(0);if((Wa|0)==54){Ya=Rb()|0;hb=Q;ib=Ya}k[h>>2]=27468;k[Ma>>2]=27488;k[Na>>2]=27560;Yua(Va);Ava(Na);vva(Ma);$a=hb;ab=ib;Qb(ab|0)}while(0);bb=db;cb=eb;vva(Ma);Qb(cb|0)}while(0);Ha=a+24|0;c:do if(!(k[Ha>>2]|0)){Na=y+56|0;Ua=y+4|0;k[y>>2]=27524;k[Na>>2]=27544;B=0;wa(508,y+56|0,Ua|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;Db=Q;Eb=Ja;vva(Na);Qb(Eb|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[Na>>2]=27488;B=0;va(448,Ua|0);Ja=B;B=0;do if(Ja&1){Ya=Rb()|0;Fb=Q;Gb=Ya}else{k[Ua>>2]=27560;Ya=y+36|0;k[Ya>>2]=0;k[Ya+4>>2]=0;k[Ya+8>>2]=0;k[Ya+12>>2]=0;k[y+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ua|0,c|0);Qa=B;B=0;if(Qa&1){Qa=Rb()|0;nb=Q;Yua(c);Yua(Ya);Ava(Ua);Fb=nb;Gb=Qa;break}Yua(c);B=0;Ia(40,y|0,139326,15)|0;Qa=B;B=0;do if(!(Qa&1)){B=0;wa(510,z|0,Ua|0);nb=B;B=0;if(nb&1){Wa=156;break}B=0;ya(424,z|0)|0;nb=B;B=0;if(nb&1){nb=Rb()|0;lb=Q;Yua(z);Hb=lb;Ib=nb;break}else{Yua(z);k[y>>2]=27468;k[Na>>2]=27488;k[Ua>>2]=27560;Yua(Ya);Ava(Ua);vva(Na);break c}}else Wa=156;while(0);if((Wa|0)==156){Qa=Rb()|0;Hb=Q;Ib=Qa}k[y>>2]=27468;k[Na>>2]=27488;k[Ua>>2]=27560;Yua(Ya);Ava(Ua);vva(Na);$a=Hb;ab=Ib;Qb(ab|0)}while(0);Db=Fb;Eb=Gb;vva(Na);Qb(Eb|0)}else{Ua=s+56|0;Ja=s+4|0;k[s>>2]=27524;k[Ua>>2]=27544;B=0;wa(508,s+56|0,Ja|0);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;Jb=Q;Kb=Ma;vva(Ua);Qb(Kb|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[Ua>>2]=27488;B=0;va(448,Ja|0);Ma=B;B=0;do if(Ma&1){Qa=Rb()|0;Lb=Q;Mb=Qa}else{k[Ja>>2]=27560;Qa=s+36|0;k[Qa>>2]=0;k[Qa+4>>2]=0;k[Qa+8>>2]=0;k[Qa+12>>2]=0;k[s+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ja|0,c|0);Va=B;B=0;if(Va&1){Va=Rb()|0;nb=Q;Yua(c);Yua(Qa);Ava(Ja);Lb=nb;Mb=Va;break}Yua(c);B=0;Ia(40,s|0,139311,14)|0;Va=B;B=0;do if(Va&1)Wa=118;else{B=0;wa(510,t|0,Ja|0);nb=B;B=0;if(nb&1){Wa=118;break}B=0;ya(424,t|0)|0;nb=B;B=0;if(nb&1){nb=Rb()|0;lb=Q;Yua(t);Nb=lb;Ob=nb;break}Yua(t);k[s>>2]=27468;k[Ua>>2]=27488;k[Ja>>2]=27560;Yua(Qa);Ava(Ja);vva(Ua);d:do if((k[Ga>>2]|0)>0){nb=u+56|0;lb=u+4|0;jb=u+56|0;fb=u+128|0;gb=u+132|0;mb=u+36|0;qb=u+52|0;pb=0;while(1){k[u>>2]=27524;k[nb>>2]=27544;B=0;wa(508,jb|0,lb|0);Pb=B;B=0;if(Pb&1){Wa=125;break}k[fb>>2]=0;k[gb>>2]=-1;k[u>>2]=27468;k[nb>>2]=27488;B=0;va(448,lb|0);Pb=B;B=0;if(Pb&1){Wa=126;break}k[lb>>2]=27560;k[mb>>2]=0;k[mb+4>>2]=0;k[mb+8>>2]=0;k[mb+12>>2]=0;k[qb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,lb|0,c|0);Pb=B;B=0;if(Pb&1){Wa=124;break}Yua(c);B=0;Pb=Ia(40,u|0,149175,1)|0;Sb=B;B=0;if(Sb&1){Wa=135;break}B=0;Sb=Sa(1,Pb|0,+(+p[(k[Ha>>2]|0)+(pb<<3)>>3]))|0;Pb=B;B=0;if(Pb&1){Wa=135;break}B=0;Ia(40,Sb|0,149177,1)|0;Sb=B;B=0;if(Sb&1){Wa=135;break}B=0;wa(510,v|0,lb|0);Sb=B;B=0;if(Sb&1){Wa=135;break}B=0;ya(424,v|0)|0;Sb=B;B=0;if(Sb&1){Wa=136;break}Yua(v);k[u>>2]=27468;k[nb>>2]=27488;k[lb>>2]=27560;Yua(mb);Ava(lb);vva(nb);pb=pb+1|0;if((pb|0)>=(k[Ga>>2]|0))break d}if((Wa|0)==124){pb=Rb()|0;qb=Q;Yua(c);Yua(mb);Ava(lb);Tb=qb;Ub=pb;Wa=127}else if((Wa|0)==125){pb=Rb()|0;Vb=Q;Wb=pb;vva(nb);Qb(Wb|0)}else if((Wa|0)==126){pb=Rb()|0;Tb=Q;Ub=pb;Wa=127}else if((Wa|0)==135){pb=Rb()|0;Xb=Q;Yb=pb;Wa=137}else if((Wa|0)==136){pb=Rb()|0;qb=Q;Yua(v);Xb=qb;Yb=pb;Wa=137}if((Wa|0)==127){Vb=Tb;Wb=Ub;vva(nb);Qb(Wb|0)}else if((Wa|0)==137){k[u>>2]=27468;k[nb>>2]=27488;k[lb>>2]=27560;Yua(mb);Ava(lb);vva(nb);$a=Xb;ab=Yb;Qb(ab|0)}}while(0);ob=w+56|0;pb=w+4|0;k[w>>2]=27524;k[ob>>2]=27544;B=0;wa(508,w+56|0,pb|0);qb=B;B=0;if(qb&1){qb=Rb()|0;Zb=Q;_b=qb;vva(ob);Qb(_b|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[ob>>2]=27488;B=0;va(448,pb|0);qb=B;B=0;do if(qb&1){gb=Rb()|0;$b=Q;ac=gb}else{k[pb>>2]=27560;gb=w+36|0;k[gb>>2]=0;k[gb+4>>2]=0;k[gb+8>>2]=0;k[gb+12>>2]=0;k[w+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,pb|0,c|0);fb=B;B=0;if(fb&1){fb=Rb()|0;jb=Q;Yua(c);Yua(gb);Ava(pb);$b=jb;ac=fb;break}Yua(c);B=0;Ia(40,w|0,149198,2)|0;fb=B;B=0;do if(!(fb&1)){B=0;wa(510,x|0,pb|0);jb=B;B=0;if(jb&1){Wa=141;break}B=0;ya(424,x|0)|0;jb=B;B=0;if(jb&1){jb=Rb()|0;kb=Q;Yua(x);bc=kb;cc=jb;break}else{Yua(x);k[w>>2]=27468;k[ob>>2]=27488;k[pb>>2]=27560;Yua(gb);Ava(pb);vva(ob);break c}}else Wa=141;while(0);if((Wa|0)==141){fb=Rb()|0;bc=Q;cc=fb}k[w>>2]=27468;k[ob>>2]=27488;k[pb>>2]=27560;Yua(gb);Ava(pb);vva(ob);$a=bc;ab=cc;Qb(ab|0)}while(0);Zb=$b;_b=ac;vva(ob);Qb(_b|0)}while(0);if((Wa|0)==118){Va=Rb()|0;Nb=Q;Ob=Va}k[s>>2]=27468;k[Ua>>2]=27488;k[Ja>>2]=27560;Yua(Qa);Ava(Ja);vva(Ua);$a=Nb;ab=Ob;Qb(ab|0)}while(0);Jb=Lb;Kb=Mb;vva(Ua);Qb(Kb|0)}while(0);Ha=a+28|0;e:do if(!(k[Ha>>2]|0)){Ja=H+56|0;Ma=H+4|0;k[H>>2]=27524;k[Ja>>2]=27544;B=0;wa(508,H+56|0,Ma|0);Na=B;B=0;if(Na&1){Na=Rb()|0;dc=Q;ec=Na;vva(Ja);Qb(ec|0)}k[H+128>>2]=0;k[H+132>>2]=-1;k[H>>2]=27468;k[Ja>>2]=27488;B=0;va(448,Ma|0);Na=B;B=0;do if(Na&1){Va=Rb()|0;fc=Q;gc=Va}else{k[Ma>>2]=27560;Va=H+36|0;k[Va>>2]=0;k[Va+4>>2]=0;k[Va+8>>2]=0;k[Va+12>>2]=0;k[H+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ma|0,c|0);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;pb=Q;Yua(c);Yua(Va);Ava(Ma);fc=pb;gc=Ya;break}Yua(c);B=0;Ia(40,H|0,139357,15)|0;Ya=B;B=0;do if(!(Ya&1)){B=0;wa(510,I|0,Ma|0);pb=B;B=0;if(pb&1){Wa=220;break}B=0;ya(424,I|0)|0;pb=B;B=0;if(pb&1){pb=Rb()|0;qb=Q;Yua(I);hc=qb;ic=pb;break}else{Yua(I);k[H>>2]=27468;k[Ja>>2]=27488;k[Ma>>2]=27560;Yua(Va);Ava(Ma);vva(Ja);break e}}else Wa=220;while(0);if((Wa|0)==220){Ya=Rb()|0;hc=Q;ic=Ya}k[H>>2]=27468;k[Ja>>2]=27488;k[Ma>>2]=27560;Yua(Va);Ava(Ma);vva(Ja);$a=hc;ab=ic;Qb(ab|0)}while(0);dc=fc;ec=gc;vva(Ja);Qb(ec|0)}else{Ma=A+56|0;Na=A+4|0;k[A>>2]=27524;k[Ma>>2]=27544;B=0;wa(508,A+56|0,Na|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;jc=Q;kc=Ua;vva(Ma);Qb(kc|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[Ma>>2]=27488;B=0;va(448,Na|0);Ua=B;B=0;do if(Ua&1){Ya=Rb()|0;lc=Q;mc=Ya}else{k[Na>>2]=27560;Ya=A+36|0;k[Ya>>2]=0;k[Ya+4>>2]=0;k[Ya+8>>2]=0;k[Ya+12>>2]=0;k[A+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Na|0,c|0);Qa=B;B=0;if(Qa&1){Qa=Rb()|0;pb=Q;Yua(c);Yua(Ya);Ava(Na);lc=pb;mc=Qa;break}Yua(c);B=0;Ia(40,A|0,139342,14)|0;Qa=B;B=0;do if(Qa&1)Wa=182;else{B=0;wa(510,C|0,Na|0);pb=B;B=0;if(pb&1){Wa=182;break}B=0;ya(424,C|0)|0;pb=B;B=0;if(pb&1){pb=Rb()|0;qb=Q;Yua(C);nc=qb;oc=pb;break}Yua(C);k[A>>2]=27468;k[Ma>>2]=27488;k[Na>>2]=27560;Yua(Ya);Ava(Na);vva(Ma);f:do if((k[Ga>>2]|0)>0){pb=D+56|0;qb=D+4|0;fb=D+56|0;nb=D+128|0;lb=D+132|0;mb=D+36|0;jb=D+52|0;kb=0;while(1){k[D>>2]=27524;k[pb>>2]=27544;B=0;wa(508,fb|0,qb|0);Sb=B;B=0;if(Sb&1){Wa=189;break}k[nb>>2]=0;k[lb>>2]=-1;k[D>>2]=27468;k[pb>>2]=27488;B=0;va(448,qb|0);Sb=B;B=0;if(Sb&1){Wa=190;break}k[qb>>2]=27560;k[mb>>2]=0;k[mb+4>>2]=0;k[mb+8>>2]=0;k[mb+12>>2]=0;k[jb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,qb|0,c|0);Sb=B;B=0;if(Sb&1){Wa=188;break}Yua(c);B=0;Sb=Ia(40,D|0,149175,1)|0;Pb=B;B=0;if(Pb&1){Wa=199;break}B=0;Pb=Sa(1,Sb|0,+(+p[(k[Ha>>2]|0)+(kb<<3)>>3]))|0;Sb=B;B=0;if(Sb&1){Wa=199;break}B=0;Ia(40,Pb|0,149177,1)|0;Pb=B;B=0;if(Pb&1){Wa=199;break}B=0;wa(510,E|0,qb|0);Pb=B;B=0;if(Pb&1){Wa=199;break}B=0;ya(424,E|0)|0;Pb=B;B=0;if(Pb&1){Wa=200;break}Yua(E);k[D>>2]=27468;k[pb>>2]=27488;k[qb>>2]=27560;Yua(mb);Ava(qb);vva(pb);kb=kb+1|0;if((kb|0)>=(k[Ga>>2]|0))break f}if((Wa|0)==188){kb=Rb()|0;jb=Q;Yua(c);Yua(mb);Ava(qb);pc=jb;qc=kb;Wa=191}else if((Wa|0)==189){kb=Rb()|0;rc=Q;sc=kb;vva(pb);Qb(sc|0)}else if((Wa|0)==190){kb=Rb()|0;pc=Q;qc=kb;Wa=191}else if((Wa|0)==199){kb=Rb()|0;tc=Q;uc=kb;Wa=201}else if((Wa|0)==200){kb=Rb()|0;jb=Q;Yua(E);tc=jb;uc=kb;Wa=201}if((Wa|0)==191){rc=pc;sc=qc;vva(pb);Qb(sc|0)}else if((Wa|0)==201){k[D>>2]=27468;k[pb>>2]=27488;k[qb>>2]=27560;Yua(mb);Ava(qb);vva(pb);$a=tc;ab=uc;Qb(ab|0)}}while(0);ob=F+56|0;kb=F+4|0;k[F>>2]=27524;k[ob>>2]=27544;B=0;wa(508,F+56|0,kb|0);jb=B;B=0;if(jb&1){jb=Rb()|0;vc=Q;wc=jb;vva(ob);Qb(wc|0)}k[F+128>>2]=0;k[F+132>>2]=-1;k[F>>2]=27468;k[ob>>2]=27488;B=0;va(448,kb|0);jb=B;B=0;do if(jb&1){lb=Rb()|0;xc=Q;yc=lb}else{k[kb>>2]=27560;lb=F+36|0;k[lb>>2]=0;k[lb+4>>2]=0;k[lb+8>>2]=0;k[lb+12>>2]=0;k[F+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,kb|0,c|0);nb=B;B=0;if(nb&1){nb=Rb()|0;fb=Q;Yua(c);Yua(lb);Ava(kb);xc=fb;yc=nb;break}Yua(c);B=0;Ia(40,F|0,149198,2)|0;nb=B;B=0;do if(!(nb&1)){B=0;wa(510,G|0,kb|0);fb=B;B=0;if(fb&1){Wa=205;break}B=0;ya(424,G|0)|0;fb=B;B=0;if(fb&1){fb=Rb()|0;gb=Q;Yua(G);zc=gb;Ac=fb;break}else{Yua(G);k[F>>2]=27468;k[ob>>2]=27488;k[kb>>2]=27560;Yua(lb);Ava(kb);vva(ob);break e}}else Wa=205;while(0);if((Wa|0)==205){nb=Rb()|0;zc=Q;Ac=nb}k[F>>2]=27468;k[ob>>2]=27488;k[kb>>2]=27560;Yua(lb);Ava(kb);vva(ob);$a=zc;ab=Ac;Qb(ab|0)}while(0);vc=xc;wc=yc;vva(ob);Qb(wc|0)}while(0);if((Wa|0)==182){Qa=Rb()|0;nc=Q;oc=Qa}k[A>>2]=27468;k[Ma>>2]=27488;k[Na>>2]=27560;Yua(Ya);Ava(Na);vva(Ma);$a=nc;ab=oc;Qb(ab|0)}while(0);jc=lc;kc=mc;vva(Ma);Qb(kc|0)}while(0);Ha=a+32|0;g:do if(!(k[Ha>>2]|0)){Na=P+56|0;Ua=P+4|0;k[P>>2]=27524;k[Na>>2]=27544;B=0;wa(508,P+56|0,Ua|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;Bc=Q;Cc=Ja;vva(Na);Qb(Cc|0)}k[P+128>>2]=0;k[P+132>>2]=-1;k[P>>2]=27468;k[Na>>2]=27488;B=0;va(448,Ua|0);Ja=B;B=0;do if(Ja&1){Qa=Rb()|0;Dc=Q;Ec=Qa}else{k[Ua>>2]=27560;Qa=P+36|0;k[Qa>>2]=0;k[Qa+4>>2]=0;k[Qa+8>>2]=0;k[Qa+12>>2]=0;k[P+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ua|0,c|0);Va=B;B=0;if(Va&1){Va=Rb()|0;kb=Q;Yua(c);Yua(Qa);Ava(Ua);Dc=kb;Ec=Va;break}Yua(c);B=0;Ia(40,P|0,139388,15)|0;Va=B;B=0;do if(!(Va&1)){B=0;wa(510,R|0,Ua|0);kb=B;B=0;if(kb&1){Wa=284;break}B=0;ya(424,R|0)|0;kb=B;B=0;if(kb&1){kb=Rb()|0;jb=Q;Yua(R);Fc=jb;Gc=kb;break}else{Yua(R);k[P>>2]=27468;k[Na>>2]=27488;k[Ua>>2]=27560;Yua(Qa);Ava(Ua);vva(Na);break g}}else Wa=284;while(0);if((Wa|0)==284){Va=Rb()|0;Fc=Q;Gc=Va}k[P>>2]=27468;k[Na>>2]=27488;k[Ua>>2]=27560;Yua(Qa);Ava(Ua);vva(Na);$a=Fc;ab=Gc;Qb(ab|0)}while(0);Bc=Dc;Cc=Ec;vva(Na);Qb(Cc|0)}else{Ua=J+56|0;Ja=J+4|0;k[J>>2]=27524;k[Ua>>2]=27544;B=0;wa(508,J+56|0,Ja|0);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;Hc=Q;Ic=Ma;vva(Ua);Qb(Ic|0)}k[J+128>>2]=0;k[J+132>>2]=-1;k[J>>2]=27468;k[Ua>>2]=27488;B=0;va(448,Ja|0);Ma=B;B=0;do if(Ma&1){Va=Rb()|0;Jc=Q;Kc=Va}else{k[Ja>>2]=27560;Va=J+36|0;k[Va>>2]=0;k[Va+4>>2]=0;k[Va+8>>2]=0;k[Va+12>>2]=0;k[J+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ja|0,c|0);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;kb=Q;Yua(c);Yua(Va);Ava(Ja);Jc=kb;Kc=Ya;break}Yua(c);B=0;Ia(40,J|0,139373,14)|0;Ya=B;B=0;do if(Ya&1)Wa=246;else{B=0;wa(510,K|0,Ja|0);kb=B;B=0;if(kb&1){Wa=246;break}B=0;ya(424,K|0)|0;kb=B;B=0;if(kb&1){kb=Rb()|0;jb=Q;Yua(K);Lc=jb;Mc=kb;break}Yua(K);k[J>>2]=27468;k[Ua>>2]=27488;k[Ja>>2]=27560;Yua(Va);Ava(Ja);vva(Ua);h:do if((k[Ga>>2]|0)>0){kb=L+56|0;jb=L+4|0;nb=L+56|0;pb=L+128|0;qb=L+132|0;mb=L+36|0;fb=L+52|0;gb=0;while(1){k[L>>2]=27524;k[kb>>2]=27544;B=0;wa(508,nb|0,jb|0);Pb=B;B=0;if(Pb&1){Wa=253;break}k[pb>>2]=0;k[qb>>2]=-1;k[L>>2]=27468;k[kb>>2]=27488;B=0;va(448,jb|0);Pb=B;B=0;if(Pb&1){Wa=254;break}k[jb>>2]=27560;k[mb>>2]=0;k[mb+4>>2]=0;k[mb+8>>2]=0;k[mb+12>>2]=0;k[fb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,jb|0,c|0);Pb=B;B=0;if(Pb&1){Wa=252;break}Yua(c);B=0;Pb=Ia(40,L|0,149175,1)|0;Sb=B;B=0;if(Sb&1){Wa=263;break}B=0;Sb=Sa(1,Pb|0,+(+p[(k[Ha>>2]|0)+(gb<<3)>>3]))|0;Pb=B;B=0;if(Pb&1){Wa=263;break}B=0;Ia(40,Sb|0,149177,1)|0;Sb=B;B=0;if(Sb&1){Wa=263;break}B=0;wa(510,M|0,jb|0);Sb=B;B=0;if(Sb&1){Wa=263;break}B=0;ya(424,M|0)|0;Sb=B;B=0;if(Sb&1){Wa=264;break}Yua(M);k[L>>2]=27468;k[kb>>2]=27488;k[jb>>2]=27560;Yua(mb);Ava(jb);vva(kb);gb=gb+1|0;if((gb|0)>=(k[Ga>>2]|0))break h}if((Wa|0)==252){gb=Rb()|0;fb=Q;Yua(c);Yua(mb);Ava(jb);Nc=fb;Oc=gb;Wa=255}else if((Wa|0)==253){gb=Rb()|0;Pc=Q;Qc=gb;vva(kb);Qb(Qc|0)}else if((Wa|0)==254){gb=Rb()|0;Nc=Q;Oc=gb;Wa=255}else if((Wa|0)==263){gb=Rb()|0;Rc=Q;Sc=gb;Wa=265}else if((Wa|0)==264){gb=Rb()|0;fb=Q;Yua(M);Rc=fb;Sc=gb;Wa=265}if((Wa|0)==255){Pc=Nc;Qc=Oc;vva(kb);Qb(Qc|0)}else if((Wa|0)==265){k[L>>2]=27468;k[kb>>2]=27488;k[jb>>2]=27560;Yua(mb);Ava(jb);vva(kb);$a=Rc;ab=Sc;Qb(ab|0)}}while(0);ob=N+56|0;gb=N+4|0;k[N>>2]=27524;k[ob>>2]=27544;B=0;wa(508,N+56|0,gb|0);fb=B;B=0;if(fb&1){fb=Rb()|0;Tc=Q;Uc=fb;vva(ob);Qb(Uc|0)}k[N+128>>2]=0;k[N+132>>2]=-1;k[N>>2]=27468;k[ob>>2]=27488;B=0;va(448,gb|0);fb=B;B=0;do if(fb&1){qb=Rb()|0;Vc=Q;Wc=qb}else{k[gb>>2]=27560;qb=N+36|0;k[qb>>2]=0;k[qb+4>>2]=0;k[qb+8>>2]=0;k[qb+12>>2]=0;k[N+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,gb|0,c|0);pb=B;B=0;if(pb&1){pb=Rb()|0;nb=Q;Yua(c);Yua(qb);Ava(gb);Vc=nb;Wc=pb;break}Yua(c);B=0;Ia(40,N|0,149198,2)|0;pb=B;B=0;do if(!(pb&1)){B=0;wa(510,O|0,gb|0);nb=B;B=0;if(nb&1){Wa=269;break}B=0;ya(424,O|0)|0;nb=B;B=0;if(nb&1){nb=Rb()|0;lb=Q;Yua(O);Xc=lb;Yc=nb;break}else{Yua(O);k[N>>2]=27468;k[ob>>2]=27488;k[gb>>2]=27560;Yua(qb);Ava(gb);vva(ob);break g}}else Wa=269;while(0);if((Wa|0)==269){pb=Rb()|0;Xc=Q;Yc=pb}k[N>>2]=27468;k[ob>>2]=27488;k[gb>>2]=27560;Yua(qb);Ava(gb);vva(ob);$a=Xc;ab=Yc;Qb(ab|0)}while(0);Tc=Vc;Uc=Wc;vva(ob);Qb(Uc|0)}while(0);if((Wa|0)==246){Ya=Rb()|0;Lc=Q;Mc=Ya}k[J>>2]=27468;k[Ua>>2]=27488;k[Ja>>2]=27560;Yua(Va);Ava(Ja);vva(Ua);$a=Lc;ab=Mc;Qb(ab|0)}while(0);Hc=Jc;Ic=Kc;vva(Ua);Qb(Ic|0)}while(0);Ha=a+36|0;i:do if(!(k[Ha>>2]|0)){Ja=Y+56|0;Ma=Y+4|0;k[Y>>2]=27524;k[Ja>>2]=27544;B=0;wa(508,Y+56|0,Ma|0);Na=B;B=0;if(Na&1){Na=Rb()|0;Zc=Q;_c=Na;vva(Ja);Qb(_c|0)}k[Y+128>>2]=0;k[Y+132>>2]=-1;k[Y>>2]=27468;k[Ja>>2]=27488;B=0;va(448,Ma|0);Na=B;B=0;do if(Na&1){Ya=Rb()|0;$c=Q;ad=Ya}else{k[Ma>>2]=27560;Ya=Y+36|0;k[Ya>>2]=0;k[Ya+4>>2]=0;k[Ya+8>>2]=0;k[Ya+12>>2]=0;k[Y+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ma|0,c|0);Qa=B;B=0;if(Qa&1){Qa=Rb()|0;gb=Q;Yua(c);Yua(Ya);Ava(Ma);$c=gb;ad=Qa;break}Yua(c);B=0;Ia(40,Y|0,139419,15)|0;Qa=B;B=0;do if(!(Qa&1)){B=0;wa(510,Z|0,Ma|0);gb=B;B=0;if(gb&1){Wa=348;break}B=0;ya(424,Z|0)|0;gb=B;B=0;if(gb&1){gb=Rb()|0;fb=Q;Yua(Z);bd=fb;cd=gb;break}else{Yua(Z);k[Y>>2]=27468;k[Ja>>2]=27488;k[Ma>>2]=27560;Yua(Ya);Ava(Ma);vva(Ja);break i}}else Wa=348;while(0);if((Wa|0)==348){Qa=Rb()|0;bd=Q;cd=Qa}k[Y>>2]=27468;k[Ja>>2]=27488;k[Ma>>2]=27560;Yua(Ya);Ava(Ma);vva(Ja);$a=bd;ab=cd;Qb(ab|0)}while(0);Zc=$c;_c=ad;vva(Ja);Qb(_c|0)}else{Ma=S+56|0;Na=S+4|0;k[S>>2]=27524;k[Ma>>2]=27544;B=0;wa(508,S+56|0,Na|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;dd=Q;ed=Ua;vva(Ma);Qb(ed|0)}k[S+128>>2]=0;k[S+132>>2]=-1;k[S>>2]=27468;k[Ma>>2]=27488;B=0;va(448,Na|0);Ua=B;B=0;do if(Ua&1){Qa=Rb()|0;fd=Q;gd=Qa}else{k[Na>>2]=27560;Qa=S+36|0;k[Qa>>2]=0;k[Qa+4>>2]=0;k[Qa+8>>2]=0;k[Qa+12>>2]=0;k[S+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Na|0,c|0);Va=B;B=0;if(Va&1){Va=Rb()|0;gb=Q;Yua(c);Yua(Qa);Ava(Na);fd=gb;gd=Va;break}Yua(c);B=0;Ia(40,S|0,139404,14)|0;Va=B;B=0;do if(Va&1)Wa=310;else{B=0;wa(510,T|0,Na|0);gb=B;B=0;if(gb&1){Wa=310;break}B=0;ya(424,T|0)|0;gb=B;B=0;if(gb&1){gb=Rb()|0;fb=Q;Yua(T);hd=fb;id=gb;break}Yua(T);k[S>>2]=27468;k[Ma>>2]=27488;k[Na>>2]=27560;Yua(Qa);Ava(Na);vva(Ma);j:do if((k[Ga>>2]|0)>0){gb=U+56|0;fb=U+4|0;pb=U+56|0;kb=U+128|0;jb=U+132|0;mb=U+36|0;nb=U+52|0;lb=0;while(1){k[U>>2]=27524;k[gb>>2]=27544;B=0;wa(508,pb|0,fb|0);Sb=B;B=0;if(Sb&1){Wa=317;break}k[kb>>2]=0;k[jb>>2]=-1;k[U>>2]=27468;k[gb>>2]=27488;B=0;va(448,fb|0);Sb=B;B=0;if(Sb&1){Wa=318;break}k[fb>>2]=27560;k[mb>>2]=0;k[mb+4>>2]=0;k[mb+8>>2]=0;k[mb+12>>2]=0;k[nb>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,fb|0,c|0);Sb=B;B=0;if(Sb&1){Wa=316;break}Yua(c);B=0;Sb=Ia(40,U|0,149175,1)|0;Pb=B;B=0;if(Pb&1){Wa=327;break}B=0;Pb=Sa(1,Sb|0,+(+p[(k[Ha>>2]|0)+(lb<<3)>>3]))|0;Sb=B;B=0;if(Sb&1){Wa=327;break}B=0;Ia(40,Pb|0,149177,1)|0;Pb=B;B=0;if(Pb&1){Wa=327;break}B=0;wa(510,V|0,fb|0);Pb=B;B=0;if(Pb&1){Wa=327;break}B=0;ya(424,V|0)|0;Pb=B;B=0;if(Pb&1){Wa=328;break}Yua(V);k[U>>2]=27468;k[gb>>2]=27488;k[fb>>2]=27560;Yua(mb);Ava(fb);vva(gb);lb=lb+1|0;if((lb|0)>=(k[Ga>>2]|0))break j}if((Wa|0)==316){lb=Rb()|0;nb=Q;Yua(c);Yua(mb);Ava(fb);jd=nb;kd=lb;Wa=319}else if((Wa|0)==317){lb=Rb()|0;ld=Q;md=lb;vva(gb);Qb(md|0)}else if((Wa|0)==318){lb=Rb()|0;jd=Q;kd=lb;Wa=319}else if((Wa|0)==327){lb=Rb()|0;nd=Q;od=lb;Wa=329}else if((Wa|0)==328){lb=Rb()|0;nb=Q;Yua(V);nd=nb;od=lb;Wa=329}if((Wa|0)==319){ld=jd;md=kd;vva(gb);Qb(md|0)}else if((Wa|0)==329){k[U>>2]=27468;k[gb>>2]=27488;k[fb>>2]=27560;Yua(mb);Ava(fb);vva(gb);$a=nd;ab=od;Qb(ab|0)}}while(0);ob=W+56|0;lb=W+4|0;k[W>>2]=27524;k[ob>>2]=27544;B=0;wa(508,W+56|0,lb|0);nb=B;B=0;if(nb&1){nb=Rb()|0;pd=Q;qd=nb;vva(ob);Qb(qd|0)}k[W+128>>2]=0;k[W+132>>2]=-1;k[W>>2]=27468;k[ob>>2]=27488;B=0;va(448,lb|0);nb=B;B=0;do if(nb&1){jb=Rb()|0;rd=Q;sd=jb}else{k[lb>>2]=27560;jb=W+36|0;k[jb>>2]=0;k[jb+4>>2]=0;k[jb+8>>2]=0;k[jb+12>>2]=0;k[W+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,lb|0,c|0);kb=B;B=0;if(kb&1){kb=Rb()|0;pb=Q;Yua(c);Yua(jb);Ava(lb);rd=pb;sd=kb;break}Yua(c);B=0;Ia(40,W|0,149198,2)|0;kb=B;B=0;do if(!(kb&1)){B=0;wa(510,X|0,lb|0);pb=B;B=0;if(pb&1){Wa=333;break}B=0;ya(424,X|0)|0;pb=B;B=0;if(pb&1){pb=Rb()|0;qb=Q;Yua(X);td=qb;ud=pb;break}else{Yua(X);k[W>>2]=27468;k[ob>>2]=27488;k[lb>>2]=27560;Yua(jb);Ava(lb);vva(ob);break i}}else Wa=333;while(0);if((Wa|0)==333){kb=Rb()|0;td=Q;ud=kb}k[W>>2]=27468;k[ob>>2]=27488;k[lb>>2]=27560;Yua(jb);Ava(lb);vva(ob);$a=td;ab=ud;Qb(ab|0)}while(0);pd=rd;qd=sd;vva(ob);Qb(qd|0)}while(0);if((Wa|0)==310){Va=Rb()|0;hd=Q;id=Va}k[S>>2]=27468;k[Ma>>2]=27488;k[Na>>2]=27560;Yua(Qa);Ava(Na);vva(Ma);$a=hd;ab=id;Qb(ab|0)}while(0);dd=fd;ed=gd;vva(Ma);Qb(ed|0)}while(0);Ga=_+56|0;Ha=_+4|0;k[_>>2]=27524;k[Ga>>2]=27544;B=0;wa(508,_+56|0,Ha|0);Na=B;B=0;if(Na&1){Na=Rb()|0;vd=Q;wd=Na;vva(Ga);Qb(wd|0)}k[_+128>>2]=0;k[_+132>>2]=-1;k[_>>2]=27468;k[Ga>>2]=27488;B=0;va(448,Ha|0);Na=B;B=0;do if(Na&1){Ua=Rb()|0;xd=Q;yd=Ua}else{k[Ha>>2]=27560;Ua=_+36|0;k[Ua>>2]=0;k[Ua+4>>2]=0;k[Ua+8>>2]=0;k[Ua+12>>2]=0;k[_+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ha|0,c|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;Va=Q;Yua(c);Yua(Ua);Ava(Ha);xd=Va;yd=Ja;break}Yua(c);B=0;Ja=Ia(40,_|0,139435,12)|0;Va=B;B=0;do if(Va&1)Wa=417;else{B=0;Ya=Sa(1,Ja|0,+(+p[a+8>>3]))|0;lb=B;B=0;if(lb&1){Wa=417;break}B=0;Ia(40,Ya|0,149177,1)|0;Ya=B;B=0;if(Ya&1){Wa=417;break}B=0;wa(510,$|0,Ha|0);Ya=B;B=0;if(Ya&1){Wa=417;break}B=0;ya(424,$|0)|0;Ya=B;B=0;if(Ya&1){Ya=Rb()|0;lb=Q;Yua($);zd=lb;Ad=Ya;break}Yua($);k[_>>2]=27468;k[Ga>>2]=27488;k[Ha>>2]=27560;Yua(Ua);Ava(Ha);vva(Ga);Ya=aa+56|0;lb=aa+4|0;k[aa>>2]=27524;k[Ya>>2]=27544;B=0;wa(508,aa+56|0,lb|0);nb=B;B=0;if(nb&1){nb=Rb()|0;Bd=Q;Cd=nb;vva(Ya);Qb(Cd|0)}k[aa+128>>2]=0;k[aa+132>>2]=-1;k[aa>>2]=27468;k[Ya>>2]=27488;B=0;va(448,lb|0);nb=B;B=0;do if(nb&1){kb=Rb()|0;Dd=Q;Ed=kb}else{k[lb>>2]=27560;kb=aa+36|0;k[kb>>2]=0;k[kb+4>>2]=0;k[kb+8>>2]=0;k[kb+12>>2]=0;k[aa+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,lb|0,c|0);gb=B;B=0;if(gb&1){gb=Rb()|0;fb=Q;Yua(c);Yua(kb);Ava(lb);Dd=fb;Ed=gb;break}Yua(c);B=0;gb=Ia(40,aa|0,139448,12)|0;fb=B;B=0;do if(fb&1)Wa=420;else{B=0;mb=Sa(1,gb|0,+(+p[a+40>>3]))|0;pb=B;B=0;if(pb&1){Wa=420;break}B=0;Ia(40,mb|0,149177,1)|0;mb=B;B=0;if(mb&1){Wa=420;break}B=0;wa(510,ba|0,lb|0);mb=B;B=0;if(mb&1){Wa=420;break}B=0;ya(424,ba|0)|0;mb=B;B=0;if(mb&1){mb=Rb()|0;pb=Q;Yua(ba);Fd=pb;Gd=mb;break}Yua(ba);k[aa>>2]=27468;k[Ya>>2]=27488;k[lb>>2]=27560;Yua(kb);Ava(lb);vva(Ya);mb=ca+56|0;pb=ca+4|0;k[ca>>2]=27524;k[mb>>2]=27544;B=0;wa(508,ca+56|0,pb|0);qb=B;B=0;if(qb&1){qb=Rb()|0;Hd=Q;Id=qb;vva(mb);Qb(Id|0)}k[ca+128>>2]=0;k[ca+132>>2]=-1;k[ca>>2]=27468;k[mb>>2]=27488;B=0;va(448,pb|0);qb=B;B=0;do if(qb&1){Pb=Rb()|0;Jd=Q;Kd=Pb}else{k[pb>>2]=27560;Pb=ca+36|0;k[Pb>>2]=0;k[Pb+4>>2]=0;k[Pb+8>>2]=0;k[Pb+12>>2]=0;k[ca+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,pb|0,c|0);Sb=B;B=0;if(Sb&1){Sb=Rb()|0;Ld=Q;Yua(c);Yua(Pb);Ava(pb);Jd=Ld;Kd=Sb;break}Yua(c);B=0;Sb=Ia(40,ca|0,139461,12)|0;Ld=B;B=0;do if(Ld&1)Wa=423;else{B=0;Md=Sa(1,Sb|0,+(+p[a+48>>3]))|0;Nd=B;B=0;if(Nd&1){Wa=423;break}B=0;Ia(40,Md|0,149177,1)|0;Md=B;B=0;if(Md&1){Wa=423;break}B=0;wa(510,da|0,pb|0);Md=B;B=0;if(Md&1){Wa=423;break}B=0;ya(424,da|0)|0;Md=B;B=0;if(Md&1){Md=Rb()|0;Nd=Q;Yua(da);Od=Nd;Pd=Md;break}Yua(da);k[ca>>2]=27468;k[mb>>2]=27488;k[pb>>2]=27560;Yua(Pb);Ava(pb);vva(mb);Md=ea+56|0;Nd=ea+4|0;k[ea>>2]=27524;k[Md>>2]=27544;B=0;wa(508,ea+56|0,Nd|0);Qd=B;B=0;if(Qd&1){Qd=Rb()|0;Rd=Q;Sd=Qd;vva(Md);Qb(Sd|0)}k[ea+128>>2]=0;k[ea+132>>2]=-1;k[ea>>2]=27468;k[Md>>2]=27488;B=0;va(448,Nd|0);Qd=B;B=0;do if(Qd&1){Td=Rb()|0;Ud=Q;Vd=Td}else{k[Nd>>2]=27560;Td=ea+36|0;k[Td>>2]=0;k[Td+4>>2]=0;k[Td+8>>2]=0;k[Td+12>>2]=0;k[ea+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Nd|0,c|0);Wd=B;B=0;if(Wd&1){Wd=Rb()|0;Xd=Q;Yua(c);Yua(Td);Ava(Nd);Ud=Xd;Vd=Wd;break}Yua(c);B=0;Wd=Ia(40,ea|0,139474,12)|0;Xd=B;B=0;do if(Xd&1)Wa=426;else{B=0;Yd=Sa(1,Wd|0,+(+p[a+56>>3]))|0;Zd=B;B=0;if(Zd&1){Wa=426;break}B=0;Ia(40,Yd|0,149177,1)|0;Yd=B;B=0;if(Yd&1){Wa=426;break}B=0;wa(510,fa|0,Nd|0);Yd=B;B=0;if(Yd&1){Wa=426;break}B=0;ya(424,fa|0)|0;Yd=B;B=0;if(Yd&1){Yd=Rb()|0;Zd=Q;Yua(fa);_d=Zd;$d=Yd;break}Yua(fa);k[ea>>2]=27468;k[Md>>2]=27488;k[Nd>>2]=27560;Yua(Td);Ava(Nd);vva(Md);Yd=ga+56|0;Zd=ga+4|0;k[ga>>2]=27524;k[Yd>>2]=27544;B=0;wa(508,ga+56|0,Zd|0);ae=B;B=0;if(ae&1){ae=Rb()|0;be=Q;ce=ae;vva(Yd);Qb(ce|0)}k[ga+128>>2]=0;k[ga+132>>2]=-1;k[ga>>2]=27468;k[Yd>>2]=27488;B=0;va(448,Zd|0);ae=B;B=0;do if(ae&1){de=Rb()|0;ee=Q;fe=de}else{k[Zd>>2]=27560;de=ga+36|0;k[de>>2]=0;k[de+4>>2]=0;k[de+8>>2]=0;k[de+12>>2]=0;k[ga+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Zd|0,c|0);ge=B;B=0;if(ge&1){ge=Rb()|0;he=Q;Yua(c);Yua(de);Ava(Zd);ee=he;fe=ge;break}Yua(c);B=0;ge=Ia(40,ga|0,139487,12)|0;he=B;B=0;do if(!(he&1)){B=0;ie=Sa(1,ge|0,+(+p[a+64>>3]))|0;je=B;B=0;if(je&1){Wa=429;break}B=0;Ia(40,ie|0,149177,1)|0;ie=B;B=0;if(ie&1){Wa=429;break}B=0;wa(510,ha|0,Zd|0);ie=B;B=0;if(ie&1){Wa=429;break}B=0;ya(424,ha|0)|0;ie=B;B=0;if(ie&1){ie=Rb()|0;je=Q;Yua(ha);ke=je;le=ie;break}else{Yua(ha);k[ga>>2]=27468;k[Yd>>2]=27488;k[Zd>>2]=27560;Yua(de);Ava(Zd);vva(Yd);r=b;return}}else Wa=429;while(0);if((Wa|0)==429){ge=Rb()|0;ke=Q;le=ge}k[ga>>2]=27468;k[Yd>>2]=27488;k[Zd>>2]=27560;Yua(de);Ava(Zd);vva(Yd);$a=ke;ab=le;Qb(ab|0)}while(0);be=ee;ce=fe;vva(Yd);Qb(ce|0)}while(0);if((Wa|0)==426){Wd=Rb()|0;_d=Q;$d=Wd}k[ea>>2]=27468;k[Md>>2]=27488;k[Nd>>2]=27560;Yua(Td);Ava(Nd);vva(Md);$a=_d;ab=$d;Qb(ab|0)}while(0);Rd=Ud;Sd=Vd;vva(Md);Qb(Sd|0)}while(0);if((Wa|0)==423){Sb=Rb()|0;Od=Q;Pd=Sb}k[ca>>2]=27468;k[mb>>2]=27488;k[pb>>2]=27560;Yua(Pb);Ava(pb);vva(mb);$a=Od;ab=Pd;Qb(ab|0)}while(0);Hd=Jd;Id=Kd;vva(mb);Qb(Id|0)}while(0);if((Wa|0)==420){gb=Rb()|0;Fd=Q;Gd=gb}k[aa>>2]=27468;k[Ya>>2]=27488;k[lb>>2]=27560;Yua(kb);Ava(lb);vva(Ya);$a=Fd;ab=Gd;Qb(ab|0)}while(0);Bd=Dd;Cd=Ed;vva(Ya);Qb(Cd|0)}while(0);if((Wa|0)==417){Ja=Rb()|0;zd=Q;Ad=Ja}k[_>>2]=27468;k[Ga>>2]=27488;k[Ha>>2]=27560;Yua(Ua);Ava(Ha);vva(Ga);$a=zd;ab=Ad;Qb(ab|0)}while(0);vd=xd;wd=yd;vva(Ga);Qb(wd|0)}else Wa=51;while(0);if((Wa|0)==51){Ea=Rb()|0;Ka=Q;La=Ea}k[f>>2]=27468;k[ra>>2]=27488;k[sa>>2]=27560;Yua(Ba);Ava(sa);vva(ra);$a=Ka;ab=La;Qb(ab|0)}while(0);za=Ca;Aa=Da;vva(ra);Qb(Aa|0)}else Wa=48;while(0);if((Wa|0)==48){qa=Rb()|0;ta=Q;ua=qa}k[d>>2]=27468;k[ia>>2]=27488;k[ja>>2]=27560;Yua(na);Ava(ja);vva(ia);$a=ta;ab=ua;Qb(ab|0)}while(0);la=oa;ma=pa;vva(ia);Qb(ma|0)}function oka(a){a=a|0;return 932}function pka(a,b){a=a|0;b=b|0;p[a+8>>3]=+p[(k[a+20>>2]|0)+(b<<3)>>3];p[a+40>>3]=+p[(k[a+24>>2]|0)+(b<<3)>>3];p[a+48>>3]=+p[(k[a+28>>2]|0)+(b<<3)>>3];p[a+56>>3]=+p[(k[a+32>>2]|0)+(b<<3)>>3];p[a+64>>3]=+p[(k[a+36>>2]|0)+(b<<3)>>3];return}function qka(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;switch(b|0){case 0:{p[a+40>>3]=1.0;b=a+48|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;p[a+64>>3]=-1.0;r=c;return}case 1:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=-1.0;r=c;return}case 2:{b=a+40|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=-1.0;r=c;return}case 3:{p[a+40>>3]=1.0;b=a+48|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;p[a+64>>3]=1.0;r=c;return}case 4:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=1.0;r=c;return}case 5:{b=a+40|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=1.0;r=c;return}default:{c=e+56|0;a=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,a|0);b=B;B=0;if(b&1){b=Rb()|0;i=Q;j=b;vva(c);Qb(j|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,a|0);b=B;B=0;do if(b&1){l=Rb()|0;m=Q;n=l}else{k[a>>2]=27560;l=e+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,a|0,d|0);o=B;B=0;if(o&1){o=Rb()|0;q=Q;Yua(d);Yua(l);Ava(a);m=q;n=o;break}Yua(d);B=0;o=Ia(40,e|0,139500,31)|0;q=B;B=0;if(!(q&1)?(B=0,Xa(239,o|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,f|0,139136,75);q=B;B=0;do if(!(q&1)){B=0;eb(502,g|0,139532,11);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(f);u=t;v=s;break}B=0;wa(510,h|0,a|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,o|0,f|0,g|0,520,h|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,o|0,1240,229);B=0;z=0}s=Rb()|0;t=Q;Yua(h);w=t;x=s;y=z}Yua(g);Yua(f);if(y){u=w;v=x}else{A=w;C=x;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(c);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(o|0);A=u;C=v;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(c);Qb(C|0)}q=Rb()|0;A=Q;C=q;k[e>>2]=27468;k[c>>2]=27488;k[a>>2]=27560;Yua(l);Ava(a);vva(c);Qb(C|0)}while(0);i=m;j=n;vva(c);Qb(j|0)}}}function rka(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0;d=r;r=r+1600|0;e=d+1576|0;f=d+1368|0;g=d+1564|0;h=d+1552|0;i=d+1540|0;j=d+1216|0;l=d+1528|0;m=d+1516|0;n=d+1504|0;o=d+1064|0;q=d+1352|0;s=d+1200|0;t=d+1048|0;u=d+912|0;v=d+760|0;w=d+608|0;x=d+320|0;y=d+776|0;z=d+168|0;A=d+156|0;C=d+144|0;D=d+624|0;E=d+132|0;F=d+120|0;G=d+108|0;H=d+472|0;I=d+96|0;J=d+84|0;K=d+72|0;L=d+336|0;M=d+60|0;N=d+48|0;O=d+36|0;P=d+184|0;R=d+24|0;S=d+12|0;T=d;switch(b|0){case 739:case 738:{switch(c|0){case 0:{p[a+40>>3]=1.0;U=a+48|0;k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;k[U+12>>2]=0;p[a+64>>3]=-1.0;r=d;return}case 1:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=-1.0;r=d;return}case 2:{U=a+40|0;k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;k[U+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=-1.0;r=d;return}case 3:{p[a+40>>3]=1.0;U=a+48|0;k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;k[U+12>>2]=0;p[a+64>>3]=1.0;r=d;return}case 4:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=1.0;r=d;return}case 5:{U=a+40|0;k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;k[U+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=1.0;r=d;return}default:{U=f+56|0;V=f+4|0;k[f>>2]=27524;k[U>>2]=27544;B=0;wa(508,f+56|0,V|0);W=B;B=0;if(W&1){W=Rb()|0;X=Q;Y=W;vva(U);Qb(Y|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[U>>2]=27488;B=0;va(448,V|0);W=B;B=0;do if(W&1){Z=Rb()|0;_=Q;$=Z}else{k[V>>2]=27560;Z=f+36|0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[Z+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,V|0,e|0);aa=B;B=0;if(aa&1){aa=Rb()|0;ba=Q;Yua(e);Yua(Z);Ava(V);_=ba;$=aa;break}Yua(e);B=0;aa=Ia(40,f|0,139544,29)|0;ba=B;B=0;a:do if(!(ba&1)?(B=0,Xa(239,aa|0,0)|0,ca=B,B=0,!(ca&1)):0){ca=Ab(20)|0;B=0;eb(502,g|0,139136,75);da=B;B=0;do if(!(da&1)){B=0;eb(502,h|0,139574,9);ea=B;B=0;if(ea&1){ea=Rb()|0;fa=Q;Yua(g);ga=fa;ha=ea;break}B=0;wa(510,i|0,V|0);ea=B;B=0;if(ea&1){ea=Rb()|0;ia=Q;ja=ea;ka=1}else{B=0;ua(163,ca|0,g|0,h|0,558,i|0);ea=B;B=0;if(ea&1)la=1;else{B=0;eb(503,ca|0,1240,229);B=0;la=0}ea=Rb()|0;fa=Q;Yua(i);ia=fa;ja=ea;ka=la}Yua(h);Yua(g);if(ka){ga=ia;ha=ja}else{ma=ia;na=ja;break a}}else{ea=Rb()|0;ga=Q;ha=ea}while(0);zb(ca|0);ma=ga;na=ha}else oa=24;while(0);if((oa|0)==24){aa=Rb()|0;ma=Q;na=aa}k[f>>2]=27468;k[U>>2]=27488;k[V>>2]=27560;Yua(Z);Ava(V);vva(U);pa=ma;qa=na;Qb(qa|0)}while(0);X=_;Y=$;vva(U);Qb(Y|0)}}break}case 746:{do switch(c|0){case 0:{p[a+40>>3]=1.0;Y=a+48|0;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;p[a+64>>3]=-1.0;r=d;return}case 1:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=-1.0;r=d;return}case 2:{Y=a+40|0;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=-1.0;r=d;return}case 3:{p[a+40>>3]=1.0;Y=a+48|0;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;p[a+64>>3]=1.0;r=d;return}case 4:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=1.0;r=d;return}case 5:{Y=a+40|0;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=1.0;r=d;return}case 6:{p[a+40>>3]=1.0;Y=a+48|0;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;k[Y+16>>2]=0;k[Y+20>>2]=0;r=d;return}case 7:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;Y=a+56|0;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;r=d;return}case 8:{Y=a+40|0;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=0.0;r=d;return}default:{Y=j+56|0;U=j+4|0;k[j>>2]=27524;k[Y>>2]=27544;B=0;wa(508,j+56|0,U|0);$=B;B=0;if($&1){$=Rb()|0;ra=Q;sa=$;vva(Y);Qb(sa|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[Y>>2]=27488;B=0;va(448,U|0);$=B;B=0;do if($&1){_=Rb()|0;ta=Q;xa=_}else{k[U>>2]=27560;_=j+36|0;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0;k[j+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,U|0,e|0);X=B;B=0;if(X&1){X=Rb()|0;na=Q;Yua(e);Yua(_);Ava(U);ta=na;xa=X;break}Yua(e);B=0;X=Ia(40,j|0,139584,29)|0;na=B;B=0;b:do if(!(na&1)?(B=0,Xa(239,X|0,0)|0,ma=B,B=0,!(ma&1)):0){ma=Ab(20)|0;B=0;eb(502,l|0,139136,75);V=B;B=0;do if(!(V&1)){B=0;eb(502,m|0,139574,9);f=B;B=0;if(f&1){f=Rb()|0;ha=Q;Yua(l);za=ha;Aa=f;break}B=0;wa(510,n|0,U|0);f=B;B=0;if(f&1){f=Rb()|0;Ba=1;Ca=Q;Da=f}else{B=0;ua(163,ma|0,l|0,m|0,573,n|0);f=B;B=0;if(f&1)Ea=1;else{B=0;eb(503,ma|0,1240,229);B=0;Ea=0}f=Rb()|0;ha=Q;Yua(n);Ba=Ea;Ca=ha;Da=f}Yua(m);Yua(l);if(Ba){za=Ca;Aa=Da}else{Fa=Ca;Ga=Da;break b}}else{f=Rb()|0;za=Q;Aa=f}while(0);zb(ma|0);Fa=za;Ga=Aa}else oa=57;while(0);if((oa|0)==57){X=Rb()|0;Fa=Q;Ga=X}k[j>>2]=27468;k[Y>>2]=27488;k[U>>2]=27560;Yua(_);Ava(U);vva(Y);pa=Fa;qa=Ga;Qb(qa|0)}while(0);ra=ta;sa=xa;vva(Y);Qb(sa|0)}}while(0);break}case 747:{do switch(c|0){case 0:{p[a+40>>3]=1.0;sa=a+48|0;k[sa>>2]=0;k[sa+4>>2]=0;k[sa+8>>2]=0;k[sa+12>>2]=0;p[a+64>>3]=-1.0;r=d;return}case 1:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=-1.0;r=d;return}case 2:{sa=a+40|0;k[sa>>2]=0;k[sa+4>>2]=0;k[sa+8>>2]=0;k[sa+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=-1.0;r=d;return}case 3:{p[a+40>>3]=1.0;sa=a+48|0;k[sa>>2]=0;k[sa+4>>2]=0;k[sa+8>>2]=0;k[sa+12>>2]=0;p[a+64>>3]=1.0;r=d;return}case 4:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=1.0;r=d;return}case 5:{sa=a+40|0;k[sa>>2]=0;k[sa+4>>2]=0;k[sa+8>>2]=0;k[sa+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=1.0;r=d;return}case 6:{p[a+40>>3]=1.0;sa=a+48|0;k[sa>>2]=0;k[sa+4>>2]=0;k[sa+8>>2]=0;k[sa+12>>2]=0;p[a+64>>3]=-.3333333333333333;r=d;return}case 7:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=-.3333333333333333;r=d;return}case 8:{sa=a+40|0;k[sa>>2]=0;k[sa+4>>2]=0;k[sa+8>>2]=0;k[sa+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=-.3333333333333333;r=d;return}case 9:{p[a+40>>3]=1.0;sa=a+48|0;k[sa>>2]=0;k[sa+4>>2]=0;k[sa+8>>2]=0;k[sa+12>>2]=0;p[a+64>>3]=.3333333333333333;r=d;return}case 10:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=.3333333333333333;r=d;return}case 11:{sa=a+40|0;k[sa>>2]=0;k[sa+4>>2]=0;k[sa+8>>2]=0;k[sa+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=.3333333333333333;r=d;return}default:{sa=o+56|0;xa=o+4|0;k[o>>2]=27524;k[sa>>2]=27544;B=0;wa(508,o+56|0,xa|0);ta=B;B=0;if(ta&1){ta=Rb()|0;Ha=Q;Ja=ta;vva(sa);Qb(Ja|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[sa>>2]=27488;B=0;va(448,xa|0);ta=B;B=0;do if(ta&1){ra=Rb()|0;Ka=Q;La=ra}else{k[xa>>2]=27560;ra=o+36|0;k[ra>>2]=0;k[ra+4>>2]=0;k[ra+8>>2]=0;k[ra+12>>2]=0;k[o+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,xa|0,e|0);Ga=B;B=0;if(Ga&1){Ga=Rb()|0;Fa=Q;Yua(e);Yua(ra);Ava(xa);Ka=Fa;La=Ga;break}Yua(e);B=0;Ga=Ia(40,o|0,139614,30)|0;Fa=B;B=0;c:do if(!(Fa&1)?(B=0,Xa(239,Ga|0,0)|0,j=B,B=0,!(j&1)):0){j=Ab(20)|0;B=0;eb(502,q|0,139136,75);Aa=B;B=0;do if(!(Aa&1)){B=0;eb(502,s|0,139574,9);za=B;B=0;if(za&1){za=Rb()|0;Da=Q;Yua(q);Ma=Da;Na=za;break}B=0;wa(510,t|0,xa|0);za=B;B=0;if(za&1){za=Rb()|0;Oa=1;Pa=Q;Qa=za}else{B=0;ua(163,j|0,q|0,s|0,591,t|0);za=B;B=0;if(za&1)Ra=1;else{B=0;eb(503,j|0,1240,229);B=0;Ra=0}za=Rb()|0;Da=Q;Yua(t);Oa=Ra;Pa=Da;Qa=za}Yua(s);Yua(q);if(Oa){Ma=Pa;Na=Qa}else{Sa=Pa;Ta=Qa;break c}}else{za=Rb()|0;Ma=Q;Na=za}while(0);zb(j|0);Sa=Ma;Ta=Na}else oa=93;while(0);if((oa|0)==93){Ga=Rb()|0;Sa=Q;Ta=Ga}k[o>>2]=27468;k[sa>>2]=27488;k[xa>>2]=27560;Yua(ra);Ava(xa);vva(sa);pa=Sa;qa=Ta;Qb(qa|0)}while(0);Ha=Ka;Ja=La;vva(sa);Qb(Ja|0)}}while(0);break}case 745:{do switch(c|0){case 0:{p[a+40>>3]=1.0;Ja=a+48|0;k[Ja>>2]=0;k[Ja+4>>2]=0;k[Ja+8>>2]=0;k[Ja+12>>2]=0;p[a+64>>3]=-1.0;r=d;return}case 1:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=-1.0;r=d;return}case 2:{Ja=a+40|0;k[Ja>>2]=0;k[Ja+4>>2]=0;k[Ja+8>>2]=0;k[Ja+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=-1.0;r=d;return}case 3:{p[a+40>>3]=1.0;Ja=a+48|0;k[Ja>>2]=0;k[Ja+4>>2]=0;k[Ja+8>>2]=0;k[Ja+12>>2]=0;p[a+64>>3]=1.0;r=d;return}case 4:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=1.0;r=d;return}case 5:{Ja=a+40|0;k[Ja>>2]=0;k[Ja+4>>2]=0;k[Ja+8>>2]=0;k[Ja+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=1.0;r=d;return}case 6:{p[a+40>>3]=0.0;p[a+48>>3]=.5;p[a+56>>3]=.5;p[a+64>>3]=-1.0;r=d;return}case 7:{p[a+40>>3]=.5;p[a+48>>3]=0.0;p[a+56>>3]=.5;p[a+64>>3]=-1.0;r=d;return}case 8:{p[a+40>>3]=.5;p[a+48>>3]=.5;p[a+56>>3]=0.0;p[a+64>>3]=-1.0;r=d;return}case 9:{p[a+40>>3]=0.0;p[a+48>>3]=.5;p[a+56>>3]=.5;p[a+64>>3]=1.0;r=d;return}case 10:{p[a+40>>3]=.5;p[a+48>>3]=0.0;p[a+56>>3]=.5;p[a+64>>3]=1.0;r=d;return}case 11:{p[a+40>>3]=.5;p[a+48>>3]=.5;p[a+56>>3]=0.0;p[a+64>>3]=1.0;r=d;return}default:{Ja=u+56|0;La=u+4|0;k[u>>2]=27524;k[Ja>>2]=27544;B=0;wa(508,u+56|0,La|0);Ka=B;B=0;if(Ka&1){Ka=Rb()|0;Ua=Q;Va=Ka;vva(Ja);Qb(Va|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[Ja>>2]=27488;B=0;va(448,La|0);Ka=B;B=0;do if(Ka&1){Ha=Rb()|0;Wa=Q;Ya=Ha}else{k[La>>2]=27560;Ha=u+36|0;k[Ha>>2]=0;k[Ha+4>>2]=0;k[Ha+8>>2]=0;k[Ha+12>>2]=0;k[u+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,La|0,e|0);Ta=B;B=0;if(Ta&1){Ta=Rb()|0;Sa=Q;Yua(e);Yua(Ha);Ava(La);Wa=Sa;Ya=Ta;break}Yua(e);B=0;Ta=Ia(40,u|0,139614,30)|0;Sa=B;B=0;d:do if(!(Sa&1)?(B=0,Xa(239,Ta|0,0)|0,o=B,B=0,!(o&1)):0){o=Ab(20)|0;B=0;eb(502,v|0,139136,75);Na=B;B=0;do if(!(Na&1)){B=0;eb(502,w|0,139574,9);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;Qa=Q;Yua(v);Za=Qa;_a=Ma;break}B=0;wa(510,x|0,La|0);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;$a=1;ab=Q;bb=Ma}else{B=0;ua(163,o|0,v|0,w|0,609,x|0);Ma=B;B=0;if(Ma&1)cb=1;else{B=0;eb(503,o|0,1240,229);B=0;cb=0}Ma=Rb()|0;Qa=Q;Yua(x);$a=cb;ab=Qa;bb=Ma}Yua(w);Yua(v);if($a){Za=ab;_a=bb}else{db=ab;fb=bb;break d}}else{Ma=Rb()|0;Za=Q;_a=Ma}while(0);zb(o|0);db=Za;fb=_a}else oa=129;while(0);if((oa|0)==129){Ta=Rb()|0;db=Q;fb=Ta}k[u>>2]=27468;k[Ja>>2]=27488;k[La>>2]=27560;Yua(Ha);Ava(La);vva(Ja);pa=db;qa=fb;Qb(qa|0)}while(0);Ua=Wa;Va=Ya;vva(Ja);Qb(Va|0)}}while(0);break}case 741:case 740:{switch(c|0){case 0:{p[a+40>>3]=1.0;Va=a+48|0;k[Va>>2]=0;k[Va+4>>2]=0;k[Va+8>>2]=0;k[Va+12>>2]=0;p[a+64>>3]=-1.0;r=d;return}case 1:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=-1.0;r=d;return}case 2:{Va=a+40|0;k[Va>>2]=0;k[Va+4>>2]=0;k[Va+8>>2]=0;k[Va+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=-1.0;r=d;return}case 3:{p[a+40>>3]=1.0;Va=a+48|0;k[Va>>2]=0;k[Va+4>>2]=0;k[Va+8>>2]=0;k[Va+12>>2]=0;p[a+64>>3]=1.0;r=d;return}case 4:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=1.0;r=d;return}case 5:{Va=a+40|0;k[Va>>2]=0;k[Va+4>>2]=0;k[Va+8>>2]=0;k[Va+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=1.0;r=d;return}case 6:{p[a+40>>3]=.3333333333333333;p[a+48>>3]=.3333333333333333;p[a+56>>3]=.3333333333333333;p[a+64>>3]=0.0;r=d;return}default:{Va=y+56|0;Ya=y+4|0;k[y>>2]=27524;k[Va>>2]=27544;B=0;wa(508,y+56|0,Ya|0);Wa=B;B=0;if(Wa&1){Wa=Rb()|0;gb=Q;hb=Wa;vva(Va);Qb(hb|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[Va>>2]=27488;B=0;va(448,Ya|0);Wa=B;B=0;do if(Wa&1){Ua=Rb()|0;ib=Q;jb=Ua}else{k[Ya>>2]=27560;Ua=y+36|0;k[Ua>>2]=0;k[Ua+4>>2]=0;k[Ua+8>>2]=0;k[Ua+12>>2]=0;k[y+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,Ya|0,e|0);fb=B;B=0;if(fb&1){fb=Rb()|0;db=Q;Yua(e);Yua(Ua);Ava(Ya);ib=db;jb=fb;break}Yua(e);B=0;fb=Ia(40,y|0,139645,29)|0;db=B;B=0;e:do if(!(db&1)?(B=0,Xa(239,fb|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,z|0,139136,75);_a=B;B=0;do if(!(_a&1)){B=0;eb(502,A|0,139574,9);Za=B;B=0;if(Za&1){Za=Rb()|0;bb=Q;Yua(z);kb=bb;lb=Za;break}B=0;wa(510,C|0,Ya|0);Za=B;B=0;if(Za&1){Za=Rb()|0;mb=1;nb=Q;ob=Za}else{B=0;ua(163,u|0,z|0,A|0,621,C|0);Za=B;B=0;if(Za&1)pb=1;else{B=0;eb(503,u|0,1240,229);B=0;pb=0}Za=Rb()|0;bb=Q;Yua(C);mb=pb;nb=bb;ob=Za}Yua(A);Yua(z);if(mb){kb=nb;lb=ob}else{qb=nb;rb=ob;break e}}else{Za=Rb()|0;kb=Q;lb=Za}while(0);zb(u|0);qb=kb;rb=lb}else oa=160;while(0);if((oa|0)==160){fb=Rb()|0;qb=Q;rb=fb}k[y>>2]=27468;k[Va>>2]=27488;k[Ya>>2]=27560;Yua(Ua);Ava(Ya);vva(Va);pa=qb;qa=rb;Qb(qa|0)}while(0);gb=ib;hb=jb;vva(Va);Qb(hb|0)}}break}case 742:{do switch(c|0){case 0:{p[a+40>>3]=1.0;hb=a+48|0;k[hb>>2]=0;k[hb+4>>2]=0;k[hb+8>>2]=0;k[hb+12>>2]=0;p[a+64>>3]=-1.0;r=d;return}case 1:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=-1.0;r=d;return}case 2:{hb=a+40|0;k[hb>>2]=0;k[hb+4>>2]=0;k[hb+8>>2]=0;k[hb+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=-1.0;r=d;return}case 3:{p[a+40>>3]=1.0;hb=a+48|0;k[hb>>2]=0;k[hb+4>>2]=0;k[hb+8>>2]=0;k[hb+12>>2]=0;p[a+64>>3]=1.0;r=d;return}case 4:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=1.0;r=d;return}case 5:{hb=a+40|0;k[hb>>2]=0;k[hb+4>>2]=0;k[hb+8>>2]=0;k[hb+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=1.0;r=d;return}case 6:{p[a+40>>3]=1.0;hb=a+48|0;k[hb>>2]=0;k[hb+4>>2]=0;k[hb+8>>2]=0;k[hb+12>>2]=0;k[hb+16>>2]=0;k[hb+20>>2]=0;r=d;return}case 7:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;hb=a+56|0;k[hb>>2]=0;k[hb+4>>2]=0;k[hb+8>>2]=0;k[hb+12>>2]=0;r=d;return}case 8:{hb=a+40|0;k[hb>>2]=0;k[hb+4>>2]=0;k[hb+8>>2]=0;k[hb+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=0.0;r=d;return}case 9:{p[a+40>>3]=0.0;p[a+48>>3]=.5;p[a+56>>3]=.5;p[a+64>>3]=-1.0;r=d;return}case 10:{p[a+40>>3]=.5;p[a+48>>3]=0.0;p[a+56>>3]=.5;p[a+64>>3]=-1.0;r=d;return}case 11:{p[a+40>>3]=.5;p[a+48>>3]=.5;p[a+56>>3]=0.0;p[a+64>>3]=-1.0;r=d;return}case 12:{p[a+40>>3]=0.0;p[a+48>>3]=.5;p[a+56>>3]=.5;p[a+64>>3]=1.0;r=d;return}case 13:{p[a+40>>3]=.5;p[a+48>>3]=0.0;p[a+56>>3]=.5;p[a+64>>3]=1.0;r=d;return}case 14:{p[a+40>>3]=.5;p[a+48>>3]=.5;p[a+56>>3]=0.0;p[a+64>>3]=1.0;r=d;return}case 15:{p[a+40>>3]=0.0;p[a+48>>3]=.5;p[a+56>>3]=.5;p[a+64>>3]=0.0;r=d;return}case 16:{p[a+40>>3]=.5;p[a+48>>3]=0.0;p[a+56>>3]=.5;p[a+64>>3]=0.0;r=d;return}case 17:{p[a+40>>3]=.5;p[a+48>>3]=.5;hb=a+56|0;k[hb>>2]=0;k[hb+4>>2]=0;k[hb+8>>2]=0;k[hb+12>>2]=0;r=d;return}default:{hb=D+56|0;Va=D+4|0;k[D>>2]=27524;k[hb>>2]=27544;B=0;wa(508,D+56|0,Va|0);jb=B;B=0;if(jb&1){jb=Rb()|0;sb=Q;tb=jb;vva(hb);Qb(tb|0)}k[D+128>>2]=0;k[D+132>>2]=-1;k[D>>2]=27468;k[hb>>2]=27488;B=0;va(448,Va|0);jb=B;B=0;do if(jb&1){ib=Rb()|0;ub=Q;vb=ib}else{k[Va>>2]=27560;ib=D+36|0;k[ib>>2]=0;k[ib+4>>2]=0;k[ib+8>>2]=0;k[ib+12>>2]=0;k[D+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,Va|0,e|0);gb=B;B=0;if(gb&1){gb=Rb()|0;rb=Q;Yua(e);Yua(ib);Ava(Va);ub=rb;vb=gb;break}Yua(e);B=0;gb=Ia(40,D|0,139675,30)|0;rb=B;B=0;f:do if(!(rb&1)?(B=0,Xa(239,gb|0,0)|0,qb=B,B=0,!(qb&1)):0){qb=Ab(20)|0;B=0;eb(502,E|0,139136,75);Ya=B;B=0;do if(!(Ya&1)){B=0;eb(502,F|0,139574,9);y=B;B=0;if(y&1){y=Rb()|0;lb=Q;Yua(E);wb=lb;xb=y;break}B=0;wa(510,G|0,Va|0);y=B;B=0;if(y&1){y=Rb()|0;yb=1;Bb=Q;Cb=y}else{B=0;ua(163,qb|0,E|0,F|0,647,G|0);y=B;B=0;if(y&1)Db=1;else{B=0;eb(503,qb|0,1240,229);B=0;Db=0}y=Rb()|0;lb=Q;Yua(G);yb=Db;Bb=lb;Cb=y}Yua(F);Yua(E);if(yb){wb=Bb;xb=Cb}else{Eb=Bb;Fb=Cb;break f}}else{y=Rb()|0;wb=Q;xb=y}while(0);zb(qb|0);Eb=wb;Fb=xb}else oa=202;while(0);if((oa|0)==202){gb=Rb()|0;Eb=Q;Fb=gb}k[D>>2]=27468;k[hb>>2]=27488;k[Va>>2]=27560;Yua(ib);Ava(Va);vva(hb);pa=Eb;qa=Fb;Qb(qa|0)}while(0);sb=ub;tb=vb;vva(hb);Qb(tb|0)}}while(0);break}case 744:case 743:{do switch(c|0){case 0:{p[a+40>>3]=1.0;tb=a+48|0;k[tb>>2]=0;k[tb+4>>2]=0;k[tb+8>>2]=0;k[tb+12>>2]=0;p[a+64>>3]=-1.0;r=d;return}case 1:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=-1.0;r=d;return}case 2:{tb=a+40|0;k[tb>>2]=0;k[tb+4>>2]=0;k[tb+8>>2]=0;k[tb+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=-1.0;r=d;return}case 3:{p[a+40>>3]=1.0;tb=a+48|0;k[tb>>2]=0;k[tb+4>>2]=0;k[tb+8>>2]=0;k[tb+12>>2]=0;p[a+64>>3]=1.0;r=d;return}case 4:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=1.0;r=d;return}case 5:{tb=a+40|0;k[tb>>2]=0;k[tb+4>>2]=0;k[tb+8>>2]=0;k[tb+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=1.0;r=d;return}case 6:{p[a+40>>3]=1.0;tb=a+48|0;k[tb>>2]=0;k[tb+4>>2]=0;k[tb+8>>2]=0;k[tb+12>>2]=0;k[tb+16>>2]=0;k[tb+20>>2]=0;r=d;return}case 7:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;tb=a+56|0;k[tb>>2]=0;k[tb+4>>2]=0;k[tb+8>>2]=0;k[tb+12>>2]=0;r=d;return}case 8:{tb=a+40|0;k[tb>>2]=0;k[tb+4>>2]=0;k[tb+8>>2]=0;k[tb+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=0.0;r=d;return}case 9:{p[a+40>>3]=0.0;p[a+48>>3]=.5;p[a+56>>3]=.5;p[a+64>>3]=-1.0;r=d;return}case 10:{p[a+40>>3]=.5;p[a+48>>3]=0.0;p[a+56>>3]=.5;p[a+64>>3]=-1.0;r=d;return}case 11:{p[a+40>>3]=.5;p[a+48>>3]=.5;p[a+56>>3]=0.0;p[a+64>>3]=-1.0;r=d;return}case 12:{p[a+40>>3]=0.0;p[a+48>>3]=.5;p[a+56>>3]=.5;p[a+64>>3]=1.0;r=d;return}case 13:{p[a+40>>3]=.5;p[a+48>>3]=0.0;p[a+56>>3]=.5;p[a+64>>3]=1.0;r=d;return}case 14:{p[a+40>>3]=.5;p[a+48>>3]=.5;p[a+56>>3]=0.0;p[a+64>>3]=1.0;r=d;return}case 15:{p[a+40>>3]=0.0;p[a+48>>3]=.5;p[a+56>>3]=.5;p[a+64>>3]=0.0;r=d;return}case 16:{p[a+40>>3]=.5;p[a+48>>3]=0.0;p[a+56>>3]=.5;p[a+64>>3]=0.0;r=d;return}case 17:{p[a+40>>3]=.5;p[a+48>>3]=.5;tb=a+56|0;k[tb>>2]=0;k[tb+4>>2]=0;k[tb+8>>2]=0;k[tb+12>>2]=0;r=d;return}case 18:{p[a+40>>3]=.3333333333333333;p[a+48>>3]=.3333333333333333;p[a+56>>3]=.3333333333333333;p[a+64>>3]=0.0;r=d;return}default:{tb=H+56|0;vb=H+4|0;k[H>>2]=27524;k[tb>>2]=27544;B=0;wa(508,H+56|0,vb|0);ub=B;B=0;if(ub&1){ub=Rb()|0;Gb=Q;Hb=ub;vva(tb);Qb(Hb|0)}k[H+128>>2]=0;k[H+132>>2]=-1;k[H>>2]=27468;k[tb>>2]=27488;B=0;va(448,vb|0);ub=B;B=0;do if(ub&1){sb=Rb()|0;Ib=Q;Jb=sb}else{k[vb>>2]=27560;sb=H+36|0;k[sb>>2]=0;k[sb+4>>2]=0;k[sb+8>>2]=0;k[sb+12>>2]=0;k[H+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,vb|0,e|0);Fb=B;B=0;if(Fb&1){Fb=Rb()|0;Eb=Q;Yua(e);Yua(sb);Ava(vb);Ib=Eb;Jb=Fb;break}Yua(e);B=0;Fb=Ia(40,H|0,139706,30)|0;Eb=B;B=0;g:do if(!(Eb&1)?(B=0,Xa(239,Fb|0,0)|0,D=B,B=0,!(D&1)):0){D=Ab(20)|0;B=0;eb(502,I|0,139136,75);xb=B;B=0;do if(!(xb&1)){B=0;eb(502,J|0,139574,9);wb=B;B=0;if(wb&1){wb=Rb()|0;Cb=Q;Yua(I);Kb=Cb;Lb=wb;break}B=0;wa(510,K|0,vb|0);wb=B;B=0;if(wb&1){wb=Rb()|0;Mb=1;Nb=Q;Ob=wb}else{B=0;ua(163,D|0,I|0,J|0,675,K|0);wb=B;B=0;if(wb&1)Pb=1;else{B=0;eb(503,D|0,1240,229);B=0;Pb=0}wb=Rb()|0;Cb=Q;Yua(K);Mb=Pb;Nb=Cb;Ob=wb}Yua(J);Yua(I);if(Mb){Kb=Nb;Lb=Ob}else{Sb=Nb;Tb=Ob;break g}}else{wb=Rb()|0;Kb=Q;Lb=wb}while(0);zb(D|0);Sb=Kb;Tb=Lb}else oa=245;while(0);if((oa|0)==245){Fb=Rb()|0;Sb=Q;Tb=Fb}k[H>>2]=27468;k[tb>>2]=27488;k[vb>>2]=27560;Yua(sb);Ava(vb);vva(tb);pa=Sb;qa=Tb;Qb(qa|0)}while(0);Gb=Ib;Hb=Jb;vva(tb);Qb(Hb|0)}}while(0);break}case 748:{do switch(c|0){case 0:{p[a+40>>3]=1.0;Hb=a+48|0;k[Hb>>2]=0;k[Hb+4>>2]=0;k[Hb+8>>2]=0;k[Hb+12>>2]=0;p[a+64>>3]=-1.0;r=d;return}case 1:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=-1.0;r=d;return}case 2:{Hb=a+40|0;k[Hb>>2]=0;k[Hb+4>>2]=0;k[Hb+8>>2]=0;k[Hb+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=-1.0;r=d;return}case 3:{p[a+40>>3]=1.0;Hb=a+48|0;k[Hb>>2]=0;k[Hb+4>>2]=0;k[Hb+8>>2]=0;k[Hb+12>>2]=0;p[a+64>>3]=1.0;r=d;return}case 4:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=1.0;r=d;return}case 5:{Hb=a+40|0;k[Hb>>2]=0;k[Hb+4>>2]=0;k[Hb+8>>2]=0;k[Hb+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=1.0;r=d;return}case 6:{p[a+40>>3]=1.0;Hb=a+48|0;k[Hb>>2]=0;k[Hb+4>>2]=0;k[Hb+8>>2]=0;k[Hb+12>>2]=0;k[Hb+16>>2]=0;k[Hb+20>>2]=0;r=d;return}case 7:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;Hb=a+56|0;k[Hb>>2]=0;k[Hb+4>>2]=0;k[Hb+8>>2]=0;k[Hb+12>>2]=0;r=d;return}case 8:{Hb=a+40|0;k[Hb>>2]=0;k[Hb+4>>2]=0;k[Hb+8>>2]=0;k[Hb+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=0.0;r=d;return}case 9:{p[a+40>>3]=0.0;p[a+48>>3]=.5;p[a+56>>3]=.5;p[a+64>>3]=-1.0;r=d;return}case 10:{p[a+40>>3]=.5;p[a+48>>3]=0.0;p[a+56>>3]=.5;p[a+64>>3]=-1.0;r=d;return}case 11:{p[a+40>>3]=.5;p[a+48>>3]=.5;p[a+56>>3]=0.0;p[a+64>>3]=-1.0;r=d;return}case 12:{p[a+40>>3]=0.0;p[a+48>>3]=.5;p[a+56>>3]=.5;p[a+64>>3]=1.0;r=d;return}case 13:{p[a+40>>3]=.5;p[a+48>>3]=0.0;p[a+56>>3]=.5;p[a+64>>3]=1.0;r=d;return}case 14:{p[a+40>>3]=.5;p[a+48>>3]=.5;p[a+56>>3]=0.0;p[a+64>>3]=1.0;r=d;return}case 15:{p[a+40>>3]=1.0;Hb=a+48|0;k[Hb>>2]=0;k[Hb+4>>2]=0;k[Hb+8>>2]=0;k[Hb+12>>2]=0;p[a+64>>3]=-.5;r=d;return}case 16:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=-.5;r=d;return}case 17:{Hb=a+40|0;k[Hb>>2]=0;k[Hb+4>>2]=0;k[Hb+8>>2]=0;k[Hb+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=-.5;r=d;return}case 18:{p[a+40>>3]=1.0;Hb=a+48|0;k[Hb>>2]=0;k[Hb+4>>2]=0;k[Hb+8>>2]=0;k[Hb+12>>2]=0;p[a+64>>3]=.5;r=d;return}case 19:{p[a+40>>3]=0.0;p[a+48>>3]=1.0;p[a+56>>3]=0.0;p[a+64>>3]=.5;r=d;return}case 20:{Hb=a+40|0;k[Hb>>2]=0;k[Hb+4>>2]=0;k[Hb+8>>2]=0;k[Hb+12>>2]=0;p[a+56>>3]=1.0;p[a+64>>3]=.5;r=d;return}case 21:{p[a+40>>3]=0.0;p[a+48>>3]=.5;p[a+56>>3]=.5;p[a+64>>3]=-.5;r=d;return}case 22:{p[a+40>>3]=.5;p[a+48>>3]=0.0;p[a+56>>3]=.5;p[a+64>>3]=-.5;r=d;return}case 23:{p[a+40>>3]=.5;p[a+48>>3]=.5;p[a+56>>3]=0.0;p[a+64>>3]=-.5;r=d;return}case 24:{p[a+40>>3]=0.0;p[a+48>>3]=.5;p[a+56>>3]=.5;p[a+64>>3]=0.0;r=d;return}case 25:{p[a+40>>3]=.5;p[a+48>>3]=0.0;p[a+56>>3]=.5;p[a+64>>3]=0.0;r=d;return}case 26:{p[a+40>>3]=.5;p[a+48>>3]=.5;Hb=a+56|0;k[Hb>>2]=0;k[Hb+4>>2]=0;k[Hb+8>>2]=0;k[Hb+12>>2]=0;r=d;return}case 27:{p[a+40>>3]=0.0;p[a+48>>3]=.5;p[a+56>>3]=.5;p[a+64>>3]=.5;r=d;return}case 28:{p[a+40>>3]=.5;p[a+48>>3]=0.0;p[a+56>>3]=.5;p[a+64>>3]=.5;r=d;return}case 29:{p[a+40>>3]=.5;p[a+48>>3]=.5;p[a+56>>3]=0.0;p[a+64>>3]=.5;r=d;return}default:{Hb=L+56|0;Jb=L+4|0;k[L>>2]=27524;k[Hb>>2]=27544;B=0;wa(508,L+56|0,Jb|0);Ib=B;B=0;if(Ib&1){Ib=Rb()|0;Ub=Q;Vb=Ib;vva(Hb);Qb(Vb|0)}k[L+128>>2]=0;k[L+132>>2]=-1;k[L>>2]=27468;k[Hb>>2]=27488;B=0;va(448,Jb|0);Ib=B;B=0;do if(Ib&1){Gb=Rb()|0;Wb=Q;Xb=Gb}else{k[Jb>>2]=27560;Gb=L+36|0;k[Gb>>2]=0;k[Gb+4>>2]=0;k[Gb+8>>2]=0;k[Gb+12>>2]=0;k[L+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,Jb|0,e|0);Tb=B;B=0;if(Tb&1){Tb=Rb()|0;Sb=Q;Yua(e);Yua(Gb);Ava(Jb);Wb=Sb;Xb=Tb;break}Yua(e);B=0;Tb=Ia(40,L|0,139737,30)|0;Sb=B;B=0;h:do if(!(Sb&1)?(B=0,Xa(239,Tb|0,0)|0,H=B,B=0,!(H&1)):0){H=Ab(20)|0;B=0;eb(502,M|0,139136,75);Lb=B;B=0;do if(!(Lb&1)){B=0;eb(502,N|0,139574,9);Kb=B;B=0;if(Kb&1){Kb=Rb()|0;Ob=Q;Yua(M);Yb=Ob;Zb=Kb;break}B=0;wa(510,O|0,Jb|0);Kb=B;B=0;if(Kb&1){Kb=Rb()|0;_b=1;$b=Q;ac=Kb}else{B=0;ua(163,H|0,M|0,N|0,714,O|0);Kb=B;B=0;if(Kb&1)bc=1;else{B=0;eb(503,H|0,1240,229);B=0;bc=0}Kb=Rb()|0;Ob=Q;Yua(O);_b=bc;$b=Ob;ac=Kb}Yua(N);Yua(M);if(_b){Yb=$b;Zb=ac}else{cc=$b;dc=ac;break h}}else{Kb=Rb()|0;Yb=Q;Zb=Kb}while(0);zb(H|0);cc=Yb;dc=Zb}else oa=299;while(0);if((oa|0)==299){Tb=Rb()|0;cc=Q;dc=Tb}k[L>>2]=27468;k[Hb>>2]=27488;k[Jb>>2]=27560;Yua(Gb);Ava(Jb);vva(Hb);pa=cc;qa=dc;Qb(qa|0)}while(0);Ub=Wb;Vb=Xb;vva(Hb);Qb(Vb|0)}}while(0);break}default:{Vb=P+56|0;Xb=P+4|0;k[P>>2]=27524;k[Vb>>2]=27544;B=0;wa(508,P+56|0,Xb|0);Wb=B;B=0;if(Wb&1){Wb=Rb()|0;ec=Q;fc=Wb;vva(Vb);Qb(fc|0)}k[P+128>>2]=0;k[P+132>>2]=-1;k[P>>2]=27468;k[Vb>>2]=27488;B=0;va(448,Xb|0);Wb=B;B=0;do if(Wb&1){Ub=Rb()|0;gc=Q;hc=Ub}else{k[Xb>>2]=27560;Ub=P+36|0;k[Ub>>2]=0;k[Ub+4>>2]=0;k[Ub+8>>2]=0;k[Ub+12>>2]=0;k[P+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,Xb|0,e|0);dc=B;B=0;if(dc&1){dc=Rb()|0;cc=Q;Yua(e);Yua(Ub);Ava(Xb);gc=cc;hc=dc;break}Yua(e);B=0;dc=Ia(40,P|0,145867,15)|0;cc=B;B=0;i:do if((((!(cc&1)?(B=0,L=ya(427,b|0)|0,Zb=B,B=0,!(Zb&1)):0)?(Zb=Lta(L)|0,B=0,Yb=Ia(40,dc|0,L|0,Zb|0)|0,Zb=B,B=0,!(Zb&1)):0)?(B=0,Zb=Ia(40,Yb|0,144645,14)|0,Yb=B,B=0,!(Yb&1)):0)?(B=0,Xa(239,Zb|0,0)|0,Zb=B,B=0,!(Zb&1)):0){Zb=Ab(20)|0;B=0;eb(502,R|0,139136,75);Yb=B;B=0;do if(!(Yb&1)){B=0;eb(502,S|0,139574,9);L=B;B=0;if(L&1){L=Rb()|0;ac=Q;Yua(R);ic=ac;jc=L;break}B=0;wa(510,T|0,Xb|0);L=B;B=0;if(L&1){L=Rb()|0;kc=1;lc=Q;mc=L}else{B=0;ua(163,Zb|0,R|0,S|0,717,T|0);L=B;B=0;if(L&1)nc=1;else{B=0;eb(503,Zb|0,1240,229);B=0;nc=0}L=Rb()|0;ac=Q;Yua(T);kc=nc;lc=ac;mc=L}Yua(S);Yua(R);if(kc){ic=lc;jc=mc}else{oc=lc;pc=mc;break i}}else{L=Rb()|0;ic=Q;jc=L}while(0);zb(Zb|0);oc=ic;pc=jc}else oa=325;while(0);if((oa|0)==325){dc=Rb()|0;oc=Q;pc=dc}k[P>>2]=27468;k[Vb>>2]=27488;k[Xb>>2]=27560;Yua(Ub);Ava(Xb);vva(Vb);pa=oc;qa=pc;Qb(qa|0)}while(0);ec=gc;fc=hc;vva(Vb);Qb(fc|0)}}}function ska(a){a=a|0;return 0}function tka(a){a=a|0;return k[a+16>>2]|0}function uka(a,b){a=a|0;b=b|0;p[b+40>>3]=+p[a+40>>3];p[b+48>>3]=+p[a+48>>3];p[b+56>>3]=+p[a+56>>3];p[b+8>>3]=-9999.0;return}function vka(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;e=r;r=r+16|0;f=e+3|0;g=e+2|0;h=e+1|0;j=e;l=a+4|0;m=a+12|0;n=a+16|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;i[h>>0]=0;i[j>>0]=0;k[a+24>>2]=b;B=0;va(537,a|0);b=B;B=0;a:do if(((((((!(b&1)?(k[a+28>>2]=c,i[f>>0]=0,i[g>>0]=0,B=0,bb(1)|0,o=B,B=0,!(o&1)):0)?(B=0,eb(527,a|0,f|0,139768),o=B,B=0,!(o&1)):0)?(B=0,eb(527,a|0,g|0,139791),o=B,B=0,!(o&1)):0)?(B=0,eb(528,a|0,d|0,0),o=B,B=0,!(o&1)):0)?(B=0,va(538,a|0),o=B,B=0,!(o&1)):0)?(B=0,eb(514,a|0,h|0,139768),o=B,B=0,!(o&1)):0)?(B=0,eb(514,a|0,j|0,139791),o=B,B=0,!(o&1)):0){do if(!d)if((i[h>>0]|0)!=0&(i[j>>0]|0)==0){i[h>>0]=1;p=1;break}else{i[h>>0]=0;p=0;break}else{i[h>>0]=1;p=1}while(0);B=0;o=ya(423,12)|0;q=B;B=0;if(!(q&1)){i[o>>0]=0;B=0;q=ya(423,12)|0;s=B;B=0;do if(!(s&1)){B=0;eb(517,q|0,0,p<<24>>24!=0|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;Sqa(q);v=u;w=t;break}k[o+8>>2]=q;B=0;t=ya(422,23)|0;u=B;B=0;if(!(u&1)){k[o+4>>2]=t;u=t;t=139768;x=u+23|0;do{i[u>>0]=i[t>>0]|0;u=u+1|0;t=t+1|0}while((u|0)<(x|0));B=0;wa(522,a|0,o|0);t=B;B=0;if(t&1){y=11;break a}k[a+32>>2]=0;k[a+36>>2]=0;B=0;eb(529,a|0,a+40|0,139814);t=B;B=0;if(t&1){y=11;break a}B=0;eb(529,a|0,a+44|0,139834);t=B;B=0;if(t&1){y=11;break a}B=0;eb(529,a|0,a+48|0,139859);t=B;B=0;if(t&1){y=11;break a}B=0;eb(529,a|0,a+52|0,139879);t=B;B=0;if(t&1){y=11;break a}B=0;eb(529,a|0,a+56|0,139904);t=B;B=0;if(t&1){y=11;break a}B=0;ua(178,a|0,a+72|0,0,0,139929);t=B;B=0;if(t&1){y=11;break a}k[a+68>>2]=-1;u=a+76|0;x=u+36|0;do{k[u>>2]=0;u=u+4|0}while((u|0)<(x|0));r=e;return}else y=28}else y=28;while(0);if((y|0)==28){q=Rb()|0;v=Q;w=q}Sqa(o);z=v;A=w}else y=11}else y=11;while(0);if((y|0)==11){y=Rb()|0;z=Q;A=y}y=k[m>>2]|0;m=y;if(y){z=k[n>>2]|0;if((z|0)!=(y|0))k[n>>2]=z+(~((z+-4-m|0)>>>2)<<2);Sqa(y)}y=k[a>>2]|0;if(!y)Qb(A|0);a=k[l>>2]|0;if((a|0)!=(y|0))k[l>>2]=a+(~((a+-4-y|0)>>>2)<<2);Sqa(y);Qb(A|0)}
+function wka(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0;b=r;r=r+2224|0;c=b+2200|0;d=b+2088|0;e=b+2084|0;f=b+1936|0;g=b+2188|0;h=b+2176|0;j=b+2164|0;l=b+1800|0;m=b+2152|0;n=b+2140|0;o=b+2128|0;p=b+1648|0;q=b+2116|0;s=b+2104|0;t=b+2092|0;u=b+1512|0;v=b+2072|0;w=b+1360|0;x=b+1784|0;y=b+1224|0;z=b+1496|0;A=b+1088|0;C=b+1072|0;D=b+936|0;E=b+784|0;F=b+800|0;G=b+496|0;H=b+648|0;I=b+208|0;J=b+512|0;K=b+60|0;L=b+360|0;M=b+48|0;N=b+224|0;O=b+36|0;P=b+72|0;R=b+24|0;S=b+12|0;T=b;if(vY()|0){r=b;return}U=a+24|0;dta(k[U>>2]|0,0,0)|0;a:do if(ata(e,4,1,k[U>>2]|0)|0){while(1){a=k[e>>2]|0;if((a+-3|0)>>>0>77){V=a;W=4;break}X=Rqa(a+1|0)|0;i[X+a>>0]=0;if(!(ata(X,a,1,k[U>>2]|0)|0)){Y=X;W=29;break}if(Mta(X,140083,3)|0){Z=X;W=31;break}if(!(Mta(X,140155,6)|0)){_=X;W=56;break}if((ata(d,4,1,k[U>>2]|0)|0)!=1){W=58;break}dta(k[U>>2]|0,k[d>>2]|0,1)|0;Tqa(X);if(!(ata(e,4,1,k[U>>2]|0)|0))break a}if((W|0)==4){X=f+56|0;a=f+4|0;k[f>>2]=27524;k[X>>2]=27544;B=0;wa(508,f+56|0,a|0);$=B;B=0;if($&1){$=Rb()|0;aa=Q;ba=$;vva(X);Qb(ba|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[X>>2]=27488;B=0;va(448,a|0);$=B;B=0;do if($&1){ca=Rb()|0;da=Q;ea=ca}else{k[a>>2]=27560;ca=f+36|0;k[ca>>2]=0;k[ca+4>>2]=0;k[ca+8>>2]=0;k[ca+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,a|0,c|0);fa=B;B=0;if(fa&1){fa=Rb()|0;ga=Q;Yua(c);Yua(ca);Ava(a);da=ga;ea=fa;break}Yua(c);B=0;fa=Ia(40,f|0,139946,59)|0;ga=B;B=0;b:do if((!(ga&1)?(B=0,ha=Xa(242,fa|0,V|0)|0,ia=B,B=0,!(ia&1)):0)?(B=0,Xa(239,ha|0,0)|0,ha=B,B=0,!(ha&1)):0){ha=Ab(20)|0;B=0;eb(502,g|0,140006,66);ia=B;B=0;do if(!(ia&1)){B=0;eb(502,h|0,140073,9);ja=B;B=0;if(ja&1){ja=Rb()|0;ka=Q;Yua(g);la=ka;ma=ja;break}B=0;wa(510,j|0,a|0);ja=B;B=0;if(ja&1){ja=Rb()|0;na=Q;oa=ja;pa=1}else{B=0;ua(163,ha|0,g|0,h|0,332,j|0);ja=B;B=0;if(ja&1)qa=1;else{B=0;eb(503,ha|0,1240,229);B=0;qa=0}ja=Rb()|0;ka=Q;Yua(j);na=ka;oa=ja;pa=qa}Yua(h);Yua(g);if(pa){la=na;ma=oa}else{ra=na;sa=oa;break b}}else{ja=Rb()|0;la=Q;ma=ja}while(0);zb(ha|0);ra=la;sa=ma}else W=20;while(0);if((W|0)==20){fa=Rb()|0;ra=Q;sa=fa}k[f>>2]=27468;k[X>>2]=27488;k[a>>2]=27560;Yua(ca);Ava(a);vva(X);ta=ra;xa=sa;Qb(xa|0)}while(0);aa=da;ba=ea;vva(X);Qb(ba|0)}else if((W|0)==29){Tqa(Y);break}else if((W|0)==31){a=l+56|0;$=l+4|0;k[l>>2]=27524;k[a>>2]=27544;B=0;wa(508,l+56|0,$|0);fa=B;B=0;if(fa&1){fa=Rb()|0;za=Q;Aa=fa;vva(a);Qb(Aa|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[a>>2]=27488;B=0;va(448,$|0);fa=B;B=0;do if(fa&1){ga=Rb()|0;Ba=Q;Ca=ga}else{k[$>>2]=27560;ga=l+36|0;k[ga>>2]=0;k[ga+4>>2]=0;k[ga+8>>2]=0;k[ga+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,$|0,c|0);ia=B;B=0;if(ia&1){ia=Rb()|0;ja=Q;Yua(c);Yua(ga);Ava($);Ba=ja;Ca=ia;break}Yua(c);B=0;ia=Ia(40,l|0,140087,67)|0;ja=B;B=0;c:do if((!(ja&1)?(ka=Lta(Z)|0,B=0,Da=Ia(40,ia|0,Z|0,ka|0)|0,ka=B,B=0,!(ka&1)):0)?(B=0,Xa(239,Da|0,0)|0,Da=B,B=0,!(Da&1)):0){Da=Ab(20)|0;B=0;eb(502,m|0,140006,66);ka=B;B=0;do if(!(ka&1)){B=0;eb(502,n|0,140073,9);Ea=B;B=0;if(Ea&1){Ea=Rb()|0;Fa=Q;Yua(m);Ga=Fa;Ha=Ea;break}B=0;wa(510,o|0,$|0);Ea=B;B=0;if(Ea&1){Ea=Rb()|0;Ja=1;Ka=Q;La=Ea}else{B=0;ua(163,Da|0,m|0,n|0,348,o|0);Ea=B;B=0;if(Ea&1)Ma=1;else{B=0;eb(503,Da|0,1240,229);B=0;Ma=0}Ea=Rb()|0;Fa=Q;Yua(o);Ja=Ma;Ka=Fa;La=Ea}Yua(n);Yua(m);if(Ja){Ga=Ka;Ha=La}else{Na=Ka;Oa=La;break c}}else{Ea=Rb()|0;Ga=Q;Ha=Ea}while(0);zb(Da|0);Na=Ga;Oa=Ha}else W=47;while(0);if((W|0)==47){ia=Rb()|0;Na=Q;Oa=ia}k[l>>2]=27468;k[a>>2]=27488;k[$>>2]=27560;Yua(ga);Ava($);vva(a);ta=Na;xa=Oa;Qb(xa|0)}while(0);za=Ba;Aa=Ca;vva(a);Qb(Aa|0)}else if((W|0)==56){Tqa(_);r=b;return}else if((W|0)==58){$=p+56|0;fa=p+4|0;k[p>>2]=27524;k[$>>2]=27544;B=0;wa(508,p+56|0,fa|0);X=B;B=0;if(X&1){X=Rb()|0;Pa=Q;Qa=X;vva($);Qb(Qa|0)}k[p+128>>2]=0;k[p+132>>2]=-1;k[p>>2]=27468;k[$>>2]=27488;B=0;va(448,fa|0);X=B;B=0;do if(X&1){ia=Rb()|0;Ra=Q;Sa=ia}else{k[fa>>2]=27560;ia=p+36|0;k[ia>>2]=0;k[ia+4>>2]=0;k[ia+8>>2]=0;k[ia+12>>2]=0;k[p+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,fa|0,c|0);ja=B;B=0;if(ja&1){ja=Rb()|0;ca=Q;Yua(c);Yua(ia);Ava(fa);Ra=ca;Sa=ja;break}Yua(c);B=0;ja=Ia(40,p|0,140162,28)|0;ca=B;B=0;d:do if(!(ca&1)?(B=0,Xa(239,ja|0,0)|0,ka=B,B=0,!(ka&1)):0){ka=Ab(20)|0;B=0;eb(502,q|0,140006,66);ha=B;B=0;do if(!(ha&1)){B=0;eb(502,s|0,140073,9);Ea=B;B=0;if(Ea&1){Ea=Rb()|0;Fa=Q;Yua(q);Ta=Fa;Ua=Ea;break}B=0;wa(510,t|0,fa|0);Ea=B;B=0;if(Ea&1){Ea=Rb()|0;Va=1;Wa=Q;Ya=Ea}else{B=0;ua(163,ka|0,q|0,s|0,359,t|0);Ea=B;B=0;if(Ea&1)Za=1;else{B=0;eb(503,ka|0,1240,229);B=0;Za=0}Ea=Rb()|0;Fa=Q;Yua(t);Va=Za;Wa=Fa;Ya=Ea}Yua(s);Yua(q);if(Va){Ta=Wa;Ua=Ya}else{_a=Wa;$a=Ya;break d}}else{Ea=Rb()|0;Ta=Q;Ua=Ea}while(0);zb(ka|0);_a=Ta;$a=Ua}else W=73;while(0);if((W|0)==73){ja=Rb()|0;_a=Q;$a=ja}k[p>>2]=27468;k[$>>2]=27488;k[fa>>2]=27560;Yua(ia);Ava(fa);vva($);ta=_a;xa=$a;Qb(xa|0)}while(0);Pa=Ra;Qa=Sa;vva($);Qb(Qa|0)}}while(0);Qa=u+56|0;Sa=u+4|0;k[u>>2]=27524;k[Qa>>2]=27544;B=0;wa(508,u+56|0,Sa|0);Ra=B;B=0;if(Ra&1){Ra=Rb()|0;ab=Q;bb=Ra;vva(Qa);Qb(bb|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[Qa>>2]=27488;B=0;va(448,Sa|0);Ra=B;B=0;do if(Ra&1){Pa=Rb()|0;cb=Q;db=Pa}else{k[Sa>>2]=27560;Pa=u+36|0;k[Pa>>2]=0;k[Pa+4>>2]=0;k[Pa+8>>2]=0;k[Pa+12>>2]=0;k[u+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Sa|0,c|0);$a=B;B=0;if($a&1){$a=Rb()|0;_a=Q;Yua(c);Yua(Pa);Ava(Sa);cb=_a;db=$a;break}Yua(c);B=0;Ia(40,u|0,149177,1)|0;$a=B;B=0;do if(!($a&1)?(B=0,wa(510,v|0,Sa|0),_a=B,B=0,!(_a&1)):0){B=0;ya(425,v|0)|0;_a=B;B=0;if(_a&1){_a=Rb()|0;p=Q;Yua(v);fb=p;gb=_a;break}Yua(v);k[u>>2]=27468;k[Qa>>2]=27488;k[Sa>>2]=27560;Yua(Pa);Ava(Sa);vva(Qa);_a=w+56|0;p=w+4|0;k[w>>2]=27524;k[_a>>2]=27544;B=0;wa(508,w+56|0,p|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;hb=Q;ib=Ua;vva(_a);Qb(ib|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[_a>>2]=27488;B=0;va(448,p|0);Ua=B;B=0;do if(Ua&1){Ta=Rb()|0;jb=Q;kb=Ta}else{k[p>>2]=27560;Ta=w+36|0;k[Ta>>2]=0;k[Ta+4>>2]=0;k[Ta+8>>2]=0;k[Ta+12>>2]=0;k[w+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,p|0,c|0);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;Wa=Q;Yua(c);Yua(Ta);Ava(p);jb=Wa;kb=Ya;break}Yua(c);B=0;Ia(40,w|0,140191,74)|0;Ya=B;B=0;do if(!(Ya&1)?(B=0,wa(510,x|0,p|0),Wa=B,B=0,!(Wa&1)):0){B=0;ya(425,x|0)|0;Wa=B;B=0;if(Wa&1){Wa=Rb()|0;Va=Q;Yua(x);lb=Va;mb=Wa;break}Yua(x);k[w>>2]=27468;k[_a>>2]=27488;k[p>>2]=27560;Yua(Ta);Ava(p);vva(_a);Wa=y+56|0;Va=y+4|0;k[y>>2]=27524;k[Wa>>2]=27544;B=0;wa(508,y+56|0,Va|0);q=B;B=0;if(q&1){q=Rb()|0;nb=Q;ob=q;vva(Wa);Qb(ob|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=27468;k[Wa>>2]=27488;B=0;va(448,Va|0);q=B;B=0;do if(q&1){s=Rb()|0;pb=Q;qb=s}else{k[Va>>2]=27560;s=y+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[y+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Va|0,c|0);Za=B;B=0;if(Za&1){Za=Rb()|0;t=Q;Yua(c);Yua(s);Ava(Va);pb=t;qb=Za;break}Yua(c);B=0;Ia(40,y|0,140266,74)|0;Za=B;B=0;do if(Za&1)W=213;else{B=0;wa(510,z|0,Va|0);t=B;B=0;if(t&1){W=213;break}B=0;ya(425,z|0)|0;t=B;B=0;if(t&1){t=Rb()|0;b=Q;Yua(z);rb=b;sb=t;break}Yua(z);k[y>>2]=27468;k[Wa>>2]=27488;k[Va>>2]=27560;Yua(s);Ava(Va);vva(Wa);t=A+56|0;b=A+4|0;k[A>>2]=27524;k[t>>2]=27544;B=0;wa(508,A+56|0,b|0);_=B;B=0;if(_&1){_=Rb()|0;tb=Q;ub=_;vva(t);Qb(ub|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[t>>2]=27488;B=0;va(448,b|0);_=B;B=0;do if(_&1){Aa=Rb()|0;vb=Q;wb=Aa}else{k[b>>2]=27560;Aa=A+36|0;k[Aa>>2]=0;k[Aa+4>>2]=0;k[Aa+8>>2]=0;k[Aa+12>>2]=0;k[A+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,b|0,c|0);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Ba=Q;Yua(c);Yua(Aa);Ava(b);vb=Ba;wb=Ca;break}Yua(c);B=0;Ia(40,A|0,140341,74)|0;Ca=B;B=0;do if(Ca&1)W=216;else{B=0;wa(510,C|0,b|0);Ba=B;B=0;if(Ba&1){W=216;break}B=0;ya(425,C|0)|0;Ba=B;B=0;if(Ba&1){Ba=Rb()|0;za=Q;Yua(C);xb=za;yb=Ba;break}Yua(C);k[A>>2]=27468;k[t>>2]=27488;k[b>>2]=27560;Yua(Aa);Ava(b);vva(t);Ba=D+56|0;za=D+4|0;k[D>>2]=27524;k[Ba>>2]=27544;B=0;wa(508,D+56|0,za|0);Oa=B;B=0;if(Oa&1){Oa=Rb()|0;Bb=Q;Cb=Oa;vva(Ba);Qb(Cb|0)}k[D+128>>2]=0;k[D+132>>2]=-1;k[D>>2]=27468;k[Ba>>2]=27488;B=0;va(448,za|0);Oa=B;B=0;do if(Oa&1){Na=Rb()|0;Db=Q;Eb=Na}else{k[za>>2]=27560;Na=D+36|0;k[Na>>2]=0;k[Na+4>>2]=0;k[Na+8>>2]=0;k[Na+12>>2]=0;k[D+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,za|0,c|0);l=B;B=0;if(l&1){l=Rb()|0;Ha=Q;Yua(c);Yua(Na);Ava(za);Db=Ha;Eb=l;break}Yua(c);B=0;Ia(40,D|0,140416,29)|0;l=B;B=0;do if(l&1)W=219;else{B=0;wa(510,E|0,za|0);Ha=B;B=0;if(Ha&1){W=219;break}B=0;ya(425,E|0)|0;Ha=B;B=0;if(Ha&1){Ha=Rb()|0;Ga=Q;Yua(E);Fb=Ga;Gb=Ha;break}Yua(E);k[D>>2]=27468;k[Ba>>2]=27488;k[za>>2]=27560;Yua(Na);Ava(za);vva(Ba);Ha=F+56|0;Ga=F+4|0;k[F>>2]=27524;k[Ha>>2]=27544;B=0;wa(508,F+56|0,Ga|0);La=B;B=0;if(La&1){La=Rb()|0;Hb=Q;Ib=La;vva(Ha);Qb(Ib|0)}k[F+128>>2]=0;k[F+132>>2]=-1;k[F>>2]=27468;k[Ha>>2]=27488;B=0;va(448,Ga|0);La=B;B=0;do if(La&1){Ka=Rb()|0;Jb=Q;Kb=Ka}else{k[Ga>>2]=27560;Ka=F+36|0;k[Ka>>2]=0;k[Ka+4>>2]=0;k[Ka+8>>2]=0;k[Ka+12>>2]=0;k[F+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ga|0,c|0);Ja=B;B=0;if(Ja&1){Ja=Rb()|0;m=Q;Yua(c);Yua(Ka);Ava(Ga);Jb=m;Kb=Ja;break}Yua(c);B=0;Ia(40,F|0,140446,74)|0;Ja=B;B=0;do if(Ja&1)W=222;else{B=0;wa(510,G|0,Ga|0);m=B;B=0;if(m&1){W=222;break}B=0;ya(425,G|0)|0;m=B;B=0;if(m&1){m=Rb()|0;n=Q;Yua(G);Lb=n;Mb=m;break}Yua(G);k[F>>2]=27468;k[Ha>>2]=27488;k[Ga>>2]=27560;Yua(Ka);Ava(Ga);vva(Ha);m=H+56|0;n=H+4|0;k[H>>2]=27524;k[m>>2]=27544;B=0;wa(508,H+56|0,n|0);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;Nb=Q;Ob=Ma;vva(m);Qb(Ob|0)}k[H+128>>2]=0;k[H+132>>2]=-1;k[H>>2]=27468;k[m>>2]=27488;B=0;va(448,n|0);Ma=B;B=0;do if(Ma&1){o=Rb()|0;Pb=Q;Sb=o}else{k[n>>2]=27560;o=H+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[H+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,n|0,c|0);Z=B;B=0;if(Z&1){Z=Rb()|0;Y=Q;Yua(c);Yua(o);Ava(n);Pb=Y;Sb=Z;break}Yua(c);B=0;Ia(40,H|0,140521,74)|0;Z=B;B=0;do if(Z&1)W=225;else{B=0;wa(510,I|0,n|0);Y=B;B=0;if(Y&1){W=225;break}B=0;ya(425,I|0)|0;Y=B;B=0;if(Y&1){Y=Rb()|0;ba=Q;Yua(I);Tb=ba;Ub=Y;break}Yua(I);k[H>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(o);Ava(n);vva(m);Y=J+56|0;ba=J+4|0;k[J>>2]=27524;k[Y>>2]=27544;B=0;wa(508,J+56|0,ba|0);ea=B;B=0;if(ea&1){ea=Rb()|0;Vb=Q;Wb=ea;vva(Y);Qb(Wb|0)}k[J+128>>2]=0;k[J+132>>2]=-1;k[J>>2]=27468;k[Y>>2]=27488;B=0;va(448,ba|0);ea=B;B=0;do if(ea&1){da=Rb()|0;Xb=Q;Yb=da}else{k[ba>>2]=27560;da=J+36|0;k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;k[da+12>>2]=0;k[J+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ba|0,c|0);aa=B;B=0;if(aa&1){aa=Rb()|0;sa=Q;Yua(c);Yua(da);Ava(ba);Xb=sa;Yb=aa;break}Yua(c);B=0;Ia(40,J|0,140341,74)|0;aa=B;B=0;do if(aa&1)W=228;else{B=0;wa(510,K|0,ba|0);sa=B;B=0;if(sa&1){W=228;break}B=0;ya(425,K|0)|0;sa=B;B=0;if(sa&1){sa=Rb()|0;ra=Q;Yua(K);Zb=ra;_b=sa;break}Yua(K);k[J>>2]=27468;k[Y>>2]=27488;k[ba>>2]=27560;Yua(da);Ava(ba);vva(Y);sa=L+56|0;ra=L+4|0;k[L>>2]=27524;k[sa>>2]=27544;B=0;wa(508,L+56|0,ra|0);f=B;B=0;if(f&1){f=Rb()|0;$b=Q;ac=f;vva(sa);Qb(ac|0)}k[L+128>>2]=0;k[L+132>>2]=-1;k[L>>2]=27468;k[sa>>2]=27488;B=0;va(448,ra|0);f=B;B=0;do if(f&1){ma=Rb()|0;bc=Q;cc=ma}else{k[ra>>2]=27560;ma=L+36|0;k[ma>>2]=0;k[ma+4>>2]=0;k[ma+8>>2]=0;k[ma+12>>2]=0;k[L+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ra|0,c|0);la=B;B=0;if(la&1){la=Rb()|0;oa=Q;Yua(c);Yua(ma);Ava(ra);bc=oa;cc=la;break}Yua(c);B=0;Ia(40,L|0,140191,74)|0;la=B;B=0;do if(la&1)W=231;else{B=0;wa(510,M|0,ra|0);oa=B;B=0;if(oa&1){W=231;break}B=0;ya(425,M|0)|0;oa=B;B=0;if(oa&1){oa=Rb()|0;na=Q;Yua(M);dc=na;ec=oa;break}Yua(M);k[L>>2]=27468;k[sa>>2]=27488;k[ra>>2]=27560;Yua(ma);Ava(ra);vva(sa);oa=N+56|0;na=N+4|0;k[N>>2]=27524;k[oa>>2]=27544;B=0;wa(508,N+56|0,na|0);pa=B;B=0;if(pa&1){pa=Rb()|0;fc=Q;gc=pa;vva(oa);Qb(gc|0)}k[N+128>>2]=0;k[N+132>>2]=-1;k[N>>2]=27468;k[oa>>2]=27488;B=0;va(448,na|0);pa=B;B=0;do if(pa&1){g=Rb()|0;hc=Q;ic=g}else{k[na>>2]=27560;g=N+36|0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[N+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,na|0,c|0);h=B;B=0;if(h&1){h=Rb()|0;qa=Q;Yua(c);Yua(g);Ava(na);hc=qa;ic=h;break}Yua(c);B=0;Ia(40,N|0,149177,1)|0;h=B;B=0;do if(h&1)W=234;else{B=0;wa(510,O|0,na|0);qa=B;B=0;if(qa&1){W=234;break}B=0;ya(425,O|0)|0;qa=B;B=0;if(qa&1){qa=Rb()|0;j=Q;Yua(O);jc=j;kc=qa;break}Yua(O);k[N>>2]=27468;k[oa>>2]=27488;k[na>>2]=27560;Yua(g);Ava(na);vva(oa);qa=P+56|0;j=P+4|0;k[P>>2]=27524;k[qa>>2]=27544;B=0;wa(508,P+56|0,j|0);V=B;B=0;if(V&1){V=Rb()|0;lc=Q;mc=V;vva(qa);Qb(mc|0)}k[P+128>>2]=0;k[P+132>>2]=-1;k[P>>2]=27468;k[qa>>2]=27488;B=0;va(448,j|0);V=B;B=0;do if(V&1){U=Rb()|0;nc=Q;oc=U}else{k[j>>2]=27560;U=P+36|0;k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;k[U+12>>2]=0;k[P+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,j|0,c|0);e=B;B=0;if(e&1){e=Rb()|0;d=Q;Yua(c);Yua(U);Ava(j);nc=d;oc=e;break}Yua(c);B=0;e=Ia(40,P|0,140596,47)|0;d=B;B=0;e:do if(d&1)W=237;else{B=0;Xa(239,e|0,0)|0;fa=B;B=0;if(fa&1){W=237;break}fa=Ab(20)|0;B=0;eb(502,R|0,140006,66);X=B;B=0;do if(!(X&1)){B=0;eb(502,S|0,140073,9);a=B;B=0;if(a&1){a=Rb()|0;ja=Q;Yua(R);pc=ja;qc=a;break}B=0;wa(510,T|0,j|0);a=B;B=0;if(a&1){a=Rb()|0;rc=1;sc=Q;tc=a}else{B=0;ua(163,fa|0,R|0,S|0,374,T|0);a=B;B=0;if(a&1)uc=1;else{B=0;eb(503,fa|0,1240,229);B=0;uc=0}a=Rb()|0;ja=Q;Yua(T);rc=uc;sc=ja;tc=a}Yua(S);Yua(R);if(rc){pc=sc;qc=tc}else{vc=sc;wc=tc;break e}}else{a=Rb()|0;pc=Q;qc=a}while(0);zb(fa|0);vc=pc;wc=qc}while(0);if((W|0)==237){e=Rb()|0;vc=Q;wc=e}k[P>>2]=27468;k[qa>>2]=27488;k[j>>2]=27560;Yua(U);Ava(j);vva(qa);ta=vc;xa=wc;Qb(xa|0)}while(0);lc=nc;mc=oc;vva(qa);Qb(mc|0)}while(0);if((W|0)==234){h=Rb()|0;jc=Q;kc=h}k[N>>2]=27468;k[oa>>2]=27488;k[na>>2]=27560;Yua(g);Ava(na);vva(oa);ta=jc;xa=kc;Qb(xa|0)}while(0);fc=hc;gc=ic;vva(oa);Qb(gc|0)}while(0);if((W|0)==231){la=Rb()|0;dc=Q;ec=la}k[L>>2]=27468;k[sa>>2]=27488;k[ra>>2]=27560;Yua(ma);Ava(ra);vva(sa);ta=dc;xa=ec;Qb(xa|0)}while(0);$b=bc;ac=cc;vva(sa);Qb(ac|0)}while(0);if((W|0)==228){aa=Rb()|0;Zb=Q;_b=aa}k[J>>2]=27468;k[Y>>2]=27488;k[ba>>2]=27560;Yua(da);Ava(ba);vva(Y);ta=Zb;xa=_b;Qb(xa|0)}while(0);Vb=Xb;Wb=Yb;vva(Y);Qb(Wb|0)}while(0);if((W|0)==225){Z=Rb()|0;Tb=Q;Ub=Z}k[H>>2]=27468;k[m>>2]=27488;k[n>>2]=27560;Yua(o);Ava(n);vva(m);ta=Tb;xa=Ub;Qb(xa|0)}while(0);Nb=Pb;Ob=Sb;vva(m);Qb(Ob|0)}while(0);if((W|0)==222){Ja=Rb()|0;Lb=Q;Mb=Ja}k[F>>2]=27468;k[Ha>>2]=27488;k[Ga>>2]=27560;Yua(Ka);Ava(Ga);vva(Ha);ta=Lb;xa=Mb;Qb(xa|0)}while(0);Hb=Jb;Ib=Kb;vva(Ha);Qb(Ib|0)}while(0);if((W|0)==219){l=Rb()|0;Fb=Q;Gb=l}k[D>>2]=27468;k[Ba>>2]=27488;k[za>>2]=27560;Yua(Na);Ava(za);vva(Ba);ta=Fb;xa=Gb;Qb(xa|0)}while(0);Bb=Db;Cb=Eb;vva(Ba);Qb(Cb|0)}while(0);if((W|0)==216){Ca=Rb()|0;xb=Q;yb=Ca}k[A>>2]=27468;k[t>>2]=27488;k[b>>2]=27560;Yua(Aa);Ava(b);vva(t);ta=xb;xa=yb;Qb(xa|0)}while(0);tb=vb;ub=wb;vva(t);Qb(ub|0)}while(0);if((W|0)==213){Za=Rb()|0;rb=Q;sb=Za}k[y>>2]=27468;k[Wa>>2]=27488;k[Va>>2]=27560;Yua(s);Ava(Va);vva(Wa);ta=rb;xa=sb;Qb(xa|0)}while(0);nb=pb;ob=qb;vva(Wa);Qb(ob|0)}else W=210;while(0);if((W|0)==210){Ya=Rb()|0;lb=Q;mb=Ya}k[w>>2]=27468;k[_a>>2]=27488;k[p>>2]=27560;Yua(Ta);Ava(p);vva(_a);ta=lb;xa=mb;Qb(xa|0)}while(0);hb=jb;ib=kb;vva(_a);Qb(ib|0)}else W=207;while(0);if((W|0)==207){$a=Rb()|0;fb=Q;gb=$a}k[u>>2]=27468;k[Qa>>2]=27488;k[Sa>>2]=27560;Yua(Pa);Ava(Sa);vva(Qa);ta=fb;xa=gb;Qb(xa|0)}while(0);ab=cb;bb=db;vva(Qa);Qb(bb|0)}function xka(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;c=r;r=r+192|0;d=c+176|0;e=c+189|0;f=c+188|0;g=c+40|0;h=c+24|0;j=c+12|0;l=c;Kka(a,e,139768);Kka(a,f,139791);if(!b?!((i[e>>0]|0)!=0&(i[f>>0]|0)==0):0){r=c;return}c=g+56|0;f=g+4|0;k[g>>2]=27524;k[c>>2]=27544;B=0;wa(508,g+56|0,f|0);e=B;B=0;if(e&1){e=Rb()|0;m=Q;n=e;vva(c);Qb(n|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[c>>2]=27488;B=0;va(448,f|0);e=B;B=0;do if(e&1){b=Rb()|0;o=Q;p=b}else{k[f>>2]=27560;b=g+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[g+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,f|0,d|0);a=B;B=0;if(a&1){a=Rb()|0;q=Q;Yua(d);Yua(b);Ava(f);o=q;p=a;break}Yua(d);B=0;a=Ia(40,g|0,140644,75)|0;q=B;B=0;if(!(q&1)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,h|0,140006,66);q=B;B=0;do if(!(q&1)){B=0;eb(502,j|0,140720,19);s=B;B=0;if(s&1){s=Rb()|0;t=Q;Yua(h);u=t;v=s;break}B=0;wa(510,l|0,f|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;x=s;y=1}else{B=0;ua(163,a|0,h|0,j|0,738,l|0);s=B;B=0;if(s&1)z=1;else{B=0;eb(503,a|0,1240,229);B=0;z=0}s=Rb()|0;t=Q;Yua(l);w=t;x=s;y=z}Yua(j);Yua(h);if(y){u=w;v=x}else{A=w;C=x;k[g>>2]=27468;k[c>>2]=27488;k[f>>2]=27560;Yua(b);Ava(f);vva(c);Qb(C|0)}}else{s=Rb()|0;u=Q;v=s}while(0);zb(a|0);A=u;C=v;k[g>>2]=27468;k[c>>2]=27488;k[f>>2]=27560;Yua(b);Ava(f);vva(c);Qb(C|0)}q=Rb()|0;A=Q;C=q;k[g>>2]=27468;k[c>>2]=27488;k[f>>2]=27560;Yua(b);Ava(f);vva(c);Qb(C|0)}while(0);m=o;n=p;vva(c);Qb(n|0)}function yka(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Pa=0,Qa=0.0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Pe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,Ve=0,We=0,Xe=0,Ye=0,Ze=0,_e=0,$e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,mf=0,nf=0,of=0,pf=0,qf=0,rf=0,sf=0,tf=0,uf=0,vf=0,wf=0,xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0,Df=0;b=r;r=r+2656|0;c=b+2636|0;d=b+2584|0;e=b+2556|0;f=b+2552|0;g=b+2548|0;h=b+2532|0;j=b;l=b+2504|0;m=b+2488|0;n=b+2352|0;o=b+2624|0;q=b+2612|0;s=b+2600|0;t=b+2200|0;u=b+2588|0;v=b+2572|0;w=b+2560|0;x=b+2048|0;y=b+2536|0;z=b+2520|0;A=b+2508|0;C=b+1912|0;D=b+2492|0;E=b+2336|0;F=b+2184|0;G=b+1752|0;H=b+1900|0;I=b+1888|0;J=b+1736|0;K=b+1600|0;L=b+1312|0;M=b+1164|0;N=b+1152|0;O=b+1464|0;P=b+732|0;R=b+720|0;S=b+432|0;T=b+1328|0;U=b+284|0;V=b+272|0;W=b+260|0;X=b+1176|0;Y=b+248|0;Z=b+236|0;_=b+224|0;$=b+1016|0;aa=b+212|0;ba=b+200|0;ca=b+188|0;da=b+880|0;ea=b+176|0;fa=b+164|0;ga=b+152|0;ha=b+744|0;ia=b+140|0;ja=b+128|0;ka=b+116|0;la=b+584|0;ma=b+104|0;na=b+92|0;oa=b+80|0;pa=b+448|0;qa=b+68|0;ra=b+56|0;sa=b+44|0;ta=b+296|0;xa=b+32|0;za=b+20|0;Aa=b+8|0;k[g>>2]=0;k[h>>2]=0;p[j>>3]=0.0;if(vY()|0){uY()|0;if(!(k[f>>2]|0)){r=b;return}Ba=a+4|0;a:while(1){uY()|0;Ca=k[d>>2]|0;Da=Rqa(Ca+1|0)|0;i[Da+Ca>>0]=0;uY()|0;uY()|0;b:do switch(k[f>>2]|0){case 1:{uY()|0;Ca=Qqa(12)|0;Ea=k[g>>2]|0;i[Ca>>0]=0;B=0;Fa=ya(423,12)|0;Ga=B;B=0;if(Ga&1){Ha=Ca;Ja=408;break a}B=0;eb(517,Fa|0,0,(Ea|0)!=0|0);Ea=B;B=0;if(Ea&1){Ka=Ca;La=Fa;Ja=405;break a}k[Ca+8>>2]=Fa;Fa=(Lta(Da)|0)+1|0;B=0;Ea=ya(422,Fa|0)|0;Ga=B;B=0;if(Ga&1){Ha=Ca;Ja=408;break a}k[Ca+4>>2]=Ea;TEa(Ea|0,Da|0,Fa|0)|0;Aka(a,Ca);break}case 2:{uY()|0;Ca=Qqa(12)|0;Fa=k[h>>2]|0;i[Ca>>0]=0;B=0;Ea=ya(423,12)|0;Ga=B;B=0;if(Ga&1){Ma=Ca;Ja=415;break a}B=0;eb(518,Ea|0,0,Fa|0);Fa=B;B=0;if(Fa&1){Na=Ca;Pa=Ea;Ja=413;break a}k[Ca+8>>2]=Ea;Ea=(Lta(Da)|0)+1|0;B=0;Fa=ya(422,Ea|0)|0;Ga=B;B=0;if(Ga&1){Ma=Ca;Ja=415;break a}k[Ca+4>>2]=Fa;TEa(Fa|0,Da|0,Ea|0)|0;Aka(a,Ca);break}case 3:{Ca=k[a>>2]|0;Ea=k[Ba>>2]|0;if(Ca>>>0<Ea>>>0){Fa=0;Ga=Ca;do{Ca=(Ita(k[(k[Ga>>2]|0)+4>>2]|0,Da)|0)==0;Fa=Fa|Ca;Ga=Ga+4|0}while(Ga>>>0<Ea>>>0&(Ca^1));if(Fa)break b}uY()|0;Qa=+p[j>>3];Ea=Qqa(12)|0;i[Ea>>0]=0;B=0;Ga=ya(423,16)|0;Ca=B;B=0;if(Ca&1){Ra=Ea;Ja=425;break a}B=0;Oa(59,Ga|0,0,+Qa);Ca=B;B=0;if(Ca&1){Sa=Ea;Ta=Ga;Ja=423;break a}k[Ea+8>>2]=Ga;Ga=(Lta(Da)|0)+1|0;B=0;Ca=ya(422,Ga|0)|0;Ua=B;B=0;if(Ua&1){Ra=Ea;Ja=425;break a}k[Ea+4>>2]=Ca;TEa(Ca|0,Da|0,Ga|0)|0;Aka(a,Ea);break}case 4:{uY()|0;Ea=k[l>>2]|0;if(!Ea){Ga=Rqa(1)|0;i[Ga>>0]=0;Va=Ga}else{Ga=Rqa(Ea+1|0)|0;i[Ga+Ea>>0]=0;uY()|0;Va=Ga}Ga=Qqa(12)|0;i[Ga>>0]=0;B=0;Ea=ya(423,12)|0;Ca=B;B=0;if(Ca&1){Wa=Ga;Ja=435;break a}B=0;eb(530,Ea|0,0,Va|0);Ca=B;B=0;if(Ca&1){Ya=Ga;Za=Ea;Ja=433;break a}k[Ga+8>>2]=Ea;Ea=(Lta(Da)|0)+1|0;B=0;Ca=ya(422,Ea|0)|0;Ua=B;B=0;if(Ua&1){Wa=Ga;Ja=435;break a}k[Ga+4>>2]=Ca;TEa(Ca|0,Da|0,Ea|0)|0;Aka(a,Ga);Tqa(Va);break}case 8:case 7:case 6:case 5:break;case 9:{uY()|0;Ga=k[m>>2]|0;if(Ga){Ea=Rqa(Ga>>>0>1073741823?-1:Ga<<2)|0;if((Ga|0)>0){WEa(Ea|0,0,((Ga|0)>1?Ga:1)<<2|0)|0;Ca=0;do{uY()|0;Ua=k[l>>2]|0;if(!Ua){_a=Rqa(1)|0;i[_a>>0]=0;$a=_a}else{_a=Rqa(Ua+1|0)|0;i[_a+Ua>>0]=0;uY()|0;$a=_a}k[Ea+(Ca<<2)>>2]=$a;Ca=Ca+1|0;_a=k[m>>2]|0}while((Ca|0)<(_a|0));ab=_a;bb=Ea}else{ab=Ga;bb=Ea}}else{ab=0;bb=0}Ca=Qqa(12)|0;i[Ca>>0]=0;B=0;Fa=ya(423,16)|0;_a=B;B=0;if(_a&1){cb=Ca;Ja=451;break a}B=0;ib(294,Fa|0,0,bb|0,ab|0);_a=B;B=0;if(_a&1){db=Ca;fb=Fa;Ja=447;break a}k[Ca+8>>2]=Fa;Fa=(Lta(Da)|0)+1|0;B=0;_a=ya(422,Fa|0)|0;Ua=B;B=0;if(Ua&1){cb=Ca;Ja=451;break a}k[Ca+4>>2]=_a;TEa(_a|0,Da|0,Fa|0)|0;Aka(a,Ca);Ca=k[m>>2]|0;if((Ca|0)<=0){if(!bb)break b}else{Fa=Ca;Ca=0;while(1){_a=bb+(Ca<<2)|0;Ua=k[_a>>2]|0;if(!Ua)gb=Fa;else{Tqa(Ua);gb=k[m>>2]|0}k[_a>>2]=0;Ca=Ca+1|0;if((Ca|0)>=(gb|0))break;else Fa=gb}}Tqa(bb);break}default:{Ja=456;break a}}while(0);uY()|0;if(!(k[f>>2]|0)){Ja=480;break}}switch(Ja|0){case 405:{bb=Rb()|0;gb=Q;Sqa(La);hb=Ka;jb=gb;kb=bb;Ja=409;break}case 408:{bb=Rb()|0;hb=Ha;jb=Q;kb=bb;Ja=409;break}case 413:{bb=Rb()|0;Ha=Q;Sqa(Pa);lb=Na;mb=Ha;nb=bb;Ja=416;break}case 415:{bb=Rb()|0;lb=Ma;mb=Q;nb=bb;Ja=416;break}case 423:{bb=Rb()|0;Ma=Q;Sqa(Ta);ob=Sa;pb=Ma;qb=bb;Ja=426;break}case 425:{bb=Rb()|0;ob=Ra;pb=Q;qb=bb;Ja=426;break}case 433:{bb=Rb()|0;Ra=Q;Sqa(Za);rb=Ya;sb=Ra;tb=bb;Ja=436;break}case 435:{bb=Rb()|0;rb=Wa;sb=Q;tb=bb;Ja=436;break}case 447:{bb=Rb()|0;Wa=Q;Sqa(fb);ub=db;vb=Wa;wb=bb;Ja=452;break}case 451:{bb=Rb()|0;ub=cb;vb=Q;wb=bb;Ja=452;break}case 456:{bb=ta+56|0;cb=ta+4|0;k[ta>>2]=27524;k[bb>>2]=27544;B=0;wa(508,ta+56|0,cb|0);Wa=B;B=0;if(Wa&1){Wa=Rb()|0;xb=Q;yb=Wa;vva(bb);Qb(yb|0)}k[ta+128>>2]=0;k[ta+132>>2]=-1;k[ta>>2]=27468;k[bb>>2]=27488;B=0;va(448,cb|0);Wa=B;B=0;do if(Wa&1){db=Rb()|0;Bb=Q;Cb=db}else{k[cb>>2]=27560;db=ta+36|0;k[db>>2]=0;k[db+4>>2]=0;k[db+8>>2]=0;k[db+12>>2]=0;k[ta+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,cb|0,c|0);fb=B;B=0;if(fb&1){fb=Rb()|0;Ra=Q;Yua(c);Yua(db);Ava(cb);Bb=Ra;Cb=fb;break}Yua(c);B=0;fb=Ia(40,ta|0,141004,20)|0;Ra=B;B=0;c:do if((!(Ra&1)?(B=0,Ya=Xa(242,fb|0,k[f>>2]|0)|0,Za=B,B=0,!(Za&1)):0)?(B=0,Xa(239,Ya|0,0)|0,Ya=B,B=0,!(Ya&1)):0){Ya=Ab(20)|0;B=0;eb(502,xa|0,140006,66);Za=B;B=0;do if(!(Za&1)){B=0;eb(502,za|0,140740,14);Ma=B;B=0;if(Ma&1){Ma=Rb()|0;Sa=Q;Yua(xa);Db=Ma;Eb=Sa;break}B=0;wa(510,Aa|0,cb|0);Sa=B;B=0;if(Sa&1){Sa=Rb()|0;Fb=1;Gb=Sa;Hb=Q}else{B=0;ua(163,Ya|0,xa|0,za|0,1090,Aa|0);Sa=B;B=0;if(Sa&1)Ib=1;else{B=0;eb(503,Ya|0,1240,229);B=0;Ib=0}Sa=Rb()|0;Ma=Q;Yua(Aa);Fb=Ib;Gb=Sa;Hb=Ma}Yua(za);Yua(xa);if(Fb){Db=Gb;Eb=Hb}else{Jb=Gb;Kb=Hb;break c}}else{Ma=Rb()|0;Db=Ma;Eb=Q}while(0);zb(Ya|0);Jb=Db;Kb=Eb}else Ja=472;while(0);if((Ja|0)==472){fb=Rb()|0;Jb=fb;Kb=Q}k[ta>>2]=27468;k[bb>>2]=27488;k[cb>>2]=27560;Yua(db);Ava(cb);vva(bb);Lb=Jb;Mb=Kb;Qb(Lb|0)}while(0);xb=Bb;yb=Cb;vva(bb);Qb(yb|0);break}case 480:{r=b;return}}if((Ja|0)==409){Sqa(hb);Lb=kb;Mb=jb;Qb(Lb|0)}else if((Ja|0)==416){Sqa(lb);Lb=nb;Mb=mb;Qb(Lb|0)}else if((Ja|0)==426){Sqa(ob);Lb=qb;Mb=pb;Qb(Lb|0)}else if((Ja|0)==436){Sqa(rb);Lb=tb;Mb=sb;Qb(Lb|0)}else if((Ja|0)==452){Sqa(ub);Lb=wb;Mb=vb;Qb(Lb|0)}}vb=a+24|0;dta(k[vb>>2]|0,0,0)|0;d:do if(ata(d,4,1,k[vb>>2]|0)|0){wb=a+4|0;e:while(1){ub=k[d>>2]|0;if((ub+-3|0)>>>0>77){Ja=8;break}sb=Rqa(ub+1|0)|0;i[sb+ub>>0]=0;if(!(ata(sb,ub,1,k[vb>>2]|0)|0)){Ja=33;break}if(Mta(sb,140083,3)|0){Nb=sb;Ja=57;break}if((ata(e,4,1,k[vb>>2]|0)|0)!=1){Ja=82;break}if((ata(f,4,1,k[vb>>2]|0)|0)!=1){Ja=106;break}uY()|0;uY()|0;uY()|0;uY()|0;f:do switch(k[f>>2]|0){case 1:{if((ata(g,4,1,k[vb>>2]|0)|0)!=1){Ja=131;break e}uY()|0;ub=Qqa(12)|0;tb=k[g>>2]|0;i[ub>>0]=0;B=0;rb=ya(423,12)|0;pb=B;B=0;if(pb&1){Ob=ub;Ja=159;break e}B=0;eb(517,rb|0,0,(tb|0)!=0|0);tb=B;B=0;if(tb&1){Pb=ub;Sb=rb;Ja=157;break e}k[ub+8>>2]=rb;rb=(Lta(sb)|0)+1|0;B=0;tb=ya(422,rb|0)|0;pb=B;B=0;if(pb&1){Ob=ub;Ja=159;break e}k[ub+4>>2]=tb;TEa(tb|0,sb|0,rb|0)|0;Aka(a,ub);break}case 2:{if((ata(h,4,1,k[vb>>2]|0)|0)!=1){Ja=162;break e}uY()|0;ub=Qqa(12)|0;rb=k[h>>2]|0;i[ub>>0]=0;B=0;tb=ya(423,12)|0;pb=B;B=0;if(pb&1){Tb=ub;Ja=190;break e}B=0;eb(518,tb|0,0,rb|0);rb=B;B=0;if(rb&1){Ub=ub;Vb=tb;Ja=188;break e}k[ub+8>>2]=tb;tb=(Lta(sb)|0)+1|0;B=0;rb=ya(422,tb|0)|0;pb=B;B=0;if(pb&1){Tb=ub;Ja=190;break e}k[ub+4>>2]=rb;TEa(rb|0,sb|0,tb|0)|0;Aka(a,ub);break}case 3:{ub=k[a>>2]|0;tb=k[wb>>2]|0;if(ub>>>0<tb>>>0){rb=0;pb=ub;do{ub=(Ita(k[(k[pb>>2]|0)+4>>2]|0,sb)|0)==0;rb=rb|ub;pb=pb+4|0}while(pb>>>0<tb>>>0&(ub^1));if(rb)break f}if((ata(j,8,1,k[vb>>2]|0)|0)!=1){Ja=196;break e}uY()|0;Qa=+p[j>>3];tb=Qqa(12)|0;i[tb>>0]=0;B=0;pb=ya(423,16)|0;ub=B;B=0;if(ub&1){Wb=tb;Ja=224;break e}B=0;Oa(59,pb|0,0,+Qa);ub=B;B=0;if(ub&1){Xb=tb;Yb=pb;Ja=222;break e}k[tb+8>>2]=pb;pb=(Lta(sb)|0)+1|0;B=0;ub=ya(422,pb|0)|0;qb=B;B=0;if(qb&1){Wb=tb;Ja=224;break e}k[tb+4>>2]=ub;TEa(ub|0,sb|0,pb|0)|0;Aka(a,tb);break}case 4:{if((ata(l,4,1,k[vb>>2]|0)|0)!=1){Ja=227;break e}uY()|0;tb=k[l>>2]|0;if(!tb){pb=Rqa(1)|0;i[pb>>0]=0;Zb=pb}else{pb=Rqa(tb+1|0)|0;i[pb+tb>>0]=0;if((ata(pb,tb,1,k[vb>>2]|0)|0)!=1){Ja=252;break e}uY()|0;Zb=pb}pb=Qqa(12)|0;i[pb>>0]=0;B=0;tb=ya(423,12)|0;ub=B;B=0;if(ub&1){_b=pb;Ja=282;break e}B=0;eb(530,tb|0,0,Zb|0);ub=B;B=0;if(ub&1){$b=pb;ac=tb;Ja=280;break e}k[pb+8>>2]=tb;tb=(Lta(sb)|0)+1|0;B=0;ub=ya(422,tb|0)|0;qb=B;B=0;if(qb&1){_b=pb;Ja=282;break e}k[pb+4>>2]=ub;TEa(ub|0,sb|0,tb|0)|0;Aka(a,pb);Tqa(Zb);break}case 8:case 7:case 6:case 5:{dta(k[vb>>2]|0,-4,1)|0;dta(k[vb>>2]|0,k[e>>2]|0,1)|0;break}case 9:{if((ata(m,4,1,k[vb>>2]|0)|0)!=1){Ja=286;break e}uY()|0;pb=k[m>>2]|0;if(pb){tb=Rqa(pb>>>0>1073741823?-1:pb<<2)|0;if((pb|0)>0){WEa(tb|0,0,((pb|0)>1?pb:1)<<2|0)|0;ub=0;while(1){if((ata(l,4,1,k[vb>>2]|0)|0)!=1){Ja=313;break e}uY()|0;qb=k[l>>2]|0;if(!qb){ob=Rqa(1)|0;i[ob>>0]=0;bc=ob}else{ob=Rqa(qb+1|0)|0;i[ob+qb>>0]=0;if((ata(ob,qb,1,k[vb>>2]|0)|0)!=1){Ja=338;break e}uY()|0;bc=ob}k[tb+(ub<<2)>>2]=bc;ub=ub+1|0;ob=k[m>>2]|0;if((ub|0)>=(ob|0)){cc=ob;dc=tb;break}}}else{cc=pb;dc=tb}}else{cc=0;dc=0}ub=Qqa(12)|0;i[ub>>0]=0;B=0;rb=ya(423,16)|0;ob=B;B=0;if(ob&1){ec=ub;Ja=371;break e}B=0;ib(294,rb|0,0,dc|0,cc|0);ob=B;B=0;if(ob&1){fc=ub;gc=rb;Ja=367;break e}k[ub+8>>2]=rb;rb=(Lta(sb)|0)+1|0;B=0;ob=ya(422,rb|0)|0;qb=B;B=0;if(qb&1){ec=ub;Ja=371;break e}k[ub+4>>2]=ob;TEa(ob|0,sb|0,rb|0)|0;Aka(a,ub);ub=k[m>>2]|0;if((ub|0)<=0){if(!dc)break f}else{rb=ub;ub=0;while(1){ob=dc+(ub<<2)|0;qb=k[ob>>2]|0;if(!qb)hc=rb;else{Tqa(qb);hc=k[m>>2]|0}k[ob>>2]=0;ub=ub+1|0;if((ub|0)>=(hc|0))break;else rb=hc}}Tqa(dc);break}default:{Ja=376;break e}}while(0);Tqa(sb);if(!(ata(d,4,1,k[vb>>2]|0)|0))break d}switch(Ja|0){case 8:{wb=n+56|0;db=n+4|0;k[n>>2]=27524;k[wb>>2]=27544;B=0;wa(508,n+56|0,db|0);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;ic=Q;jc=Ya;vva(wb);Qb(jc|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[wb>>2]=27488;B=0;va(448,db|0);Ya=B;B=0;do if(Ya&1){rb=Rb()|0;kc=Q;lc=rb}else{k[db>>2]=27560;rb=n+36|0;k[rb>>2]=0;k[rb+4>>2]=0;k[rb+8>>2]=0;k[rb+12>>2]=0;k[n+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,db|0,c|0);ub=B;B=0;if(ub&1){ub=Rb()|0;tb=Q;Yua(c);Yua(rb);Ava(db);kc=tb;lc=ub;break}Yua(c);B=0;ub=Ia(40,n|0,139946,59)|0;tb=B;B=0;g:do if((!(tb&1)?(B=0,pb=Xa(242,ub|0,k[d>>2]|0)|0,ob=B,B=0,!(ob&1)):0)?(B=0,Xa(239,pb|0,0)|0,pb=B,B=0,!(pb&1)):0){pb=Ab(20)|0;B=0;eb(502,o|0,140006,66);ob=B;B=0;do if(!(ob&1)){B=0;eb(502,q|0,140740,14);qb=B;B=0;if(qb&1){qb=Rb()|0;mb=Q;Yua(o);mc=mb;nc=qb;break}B=0;wa(510,s|0,db|0);qb=B;B=0;if(qb&1){qb=Rb()|0;oc=Q;pc=qb;qc=1}else{B=0;ua(163,pb|0,o|0,q|0,841,s|0);qb=B;B=0;if(qb&1)rc=1;else{B=0;eb(503,pb|0,1240,229);B=0;rc=0}qb=Rb()|0;mb=Q;Yua(s);oc=mb;pc=qb;qc=rc}Yua(q);Yua(o);if(qc){mc=oc;nc=pc}else{sc=oc;tc=pc;break g}}else{qb=Rb()|0;mc=Q;nc=qb}while(0);zb(pb|0);sc=mc;tc=nc}else Ja=24;while(0);if((Ja|0)==24){ub=Rb()|0;sc=Q;tc=ub}k[n>>2]=27468;k[wb>>2]=27488;k[db>>2]=27560;Yua(rb);Ava(db);vva(wb);Lb=tc;Mb=sc;Qb(Lb|0)}while(0);ic=kc;jc=lc;vva(wb);Qb(jc|0);break}case 33:{db=t+56|0;Ya=t+4|0;k[t>>2]=27524;k[db>>2]=27544;B=0;wa(508,t+56|0,Ya|0);ub=B;B=0;if(ub&1){ub=Rb()|0;uc=Q;vc=ub;vva(db);Qb(vc|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[db>>2]=27488;B=0;va(448,Ya|0);ub=B;B=0;do if(ub&1){tb=Rb()|0;wc=Q;xc=tb}else{k[Ya>>2]=27560;tb=t+36|0;k[tb>>2]=0;k[tb+4>>2]=0;k[tb+8>>2]=0;k[tb+12>>2]=0;k[t+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ya|0,c|0);sb=B;B=0;if(sb&1){sb=Rb()|0;ob=Q;Yua(c);Yua(tb);Ava(Ya);wc=ob;xc=sb;break}Yua(c);B=0;sb=Ia(40,t|0,140755,26)|0;ob=B;B=0;h:do if(!(ob&1)?(B=0,Xa(239,sb|0,0)|0,qb=B,B=0,!(qb&1)):0){qb=Ab(20)|0;B=0;eb(502,u|0,140006,66);mb=B;B=0;do if(!(mb&1)){B=0;eb(502,v|0,140740,14);nb=B;B=0;if(nb&1){nb=Rb()|0;lb=Q;Yua(u);yc=lb;zc=nb;break}B=0;wa(510,w|0,Ya|0);nb=B;B=0;if(nb&1){nb=Rb()|0;Ac=1;Bc=nb;Cc=Q}else{B=0;ua(163,qb|0,u|0,v|0,850,w|0);nb=B;B=0;if(nb&1)Dc=1;else{B=0;eb(503,qb|0,1240,229);B=0;Dc=0}nb=Rb()|0;lb=Q;Yua(w);Ac=Dc;Bc=nb;Cc=lb}Yua(v);Yua(u);if(Ac){yc=Cc;zc=Bc}else{Ec=Bc;Fc=Cc;break h}}else{lb=Rb()|0;yc=Q;zc=lb}while(0);zb(qb|0);Ec=zc;Fc=yc}else Ja=48;while(0);if((Ja|0)==48){sb=Rb()|0;Ec=sb;Fc=Q}k[t>>2]=27468;k[db>>2]=27488;k[Ya>>2]=27560;Yua(tb);Ava(Ya);vva(db);Lb=Ec;Mb=Fc;Qb(Lb|0)}while(0);uc=wc;vc=xc;vva(db);Qb(vc|0);break}case 57:{Ya=x+56|0;ub=x+4|0;k[x>>2]=27524;k[Ya>>2]=27544;B=0;wa(508,x+56|0,ub|0);wb=B;B=0;if(wb&1){wb=Rb()|0;Gc=Q;Hc=wb;vva(Ya);Qb(Hc|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[Ya>>2]=27488;B=0;va(448,ub|0);wb=B;B=0;do if(wb&1){sb=Rb()|0;Ic=Q;Jc=sb}else{k[ub>>2]=27560;sb=x+36|0;k[sb>>2]=0;k[sb+4>>2]=0;k[sb+8>>2]=0;k[sb+12>>2]=0;k[x+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ub|0,c|0);ob=B;B=0;if(ob&1){ob=Rb()|0;rb=Q;Yua(c);Yua(sb);Ava(ub);Ic=rb;Jc=ob;break}Yua(c);B=0;ob=Ia(40,x|0,140087,67)|0;rb=B;B=0;i:do if((!(rb&1)?(mb=Lta(Nb)|0,B=0,pb=Ia(40,ob|0,Nb|0,mb|0)|0,mb=B,B=0,!(mb&1)):0)?(B=0,Xa(239,pb|0,0)|0,pb=B,B=0,!(pb&1)):0){pb=Ab(20)|0;B=0;eb(502,y|0,140006,66);mb=B;B=0;do if(!(mb&1)){B=0;eb(502,z|0,140740,14);lb=B;B=0;if(lb&1){lb=Rb()|0;nb=Q;Yua(y);Kc=nb;Lc=lb;break}B=0;wa(510,A|0,ub|0);lb=B;B=0;if(lb&1){lb=Rb()|0;Mc=1;Nc=lb;Oc=Q}else{B=0;ua(163,pb|0,y|0,z|0,853,A|0);lb=B;B=0;if(lb&1)Pc=1;else{B=0;eb(503,pb|0,1240,229);B=0;Pc=0}lb=Rb()|0;nb=Q;Yua(A);Mc=Pc;Nc=lb;Oc=nb}Yua(z);Yua(y);if(Mc){Kc=Oc;Lc=Nc}else{Qc=Nc;Rc=Oc;break i}}else{nb=Rb()|0;Kc=Q;Lc=nb}while(0);zb(pb|0);Qc=Lc;Rc=Kc}else Ja=73;while(0);if((Ja|0)==73){ob=Rb()|0;Qc=ob;Rc=Q}k[x>>2]=27468;k[Ya>>2]=27488;k[ub>>2]=27560;Yua(sb);Ava(ub);vva(Ya);Lb=Qc;Mb=Rc;Qb(Lb|0)}while(0);Gc=Ic;Hc=Jc;vva(Ya);Qb(Hc|0);break}case 82:{ub=C+56|0;wb=C+4|0;k[C>>2]=27524;k[ub>>2]=27544;B=0;wa(508,C+56|0,wb|0);db=B;B=0;if(db&1){db=Rb()|0;Sc=Q;Tc=db;vva(ub);Qb(Tc|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[ub>>2]=27488;B=0;va(448,wb|0);db=B;B=0;do if(db&1){ob=Rb()|0;Uc=Q;Vc=ob}else{k[wb>>2]=27560;ob=C+36|0;k[ob>>2]=0;k[ob+4>>2]=0;k[ob+8>>2]=0;k[ob+12>>2]=0;k[C+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,wb|0,c|0);rb=B;B=0;if(rb&1){rb=Rb()|0;tb=Q;Yua(c);Yua(ob);Ava(wb);Uc=tb;Vc=rb;break}Yua(c);B=0;rb=Ia(40,C|0,140782,28)|0;tb=B;B=0;j:do if(!(tb&1)?(B=0,Xa(239,rb|0,0)|0,mb=B,B=0,!(mb&1)):0){mb=Ab(20)|0;B=0;eb(502,D|0,140006,66);qb=B;B=0;do if(!(qb&1)){B=0;eb(502,E|0,140740,14);nb=B;B=0;if(nb&1){nb=Rb()|0;lb=Q;Yua(D);Wc=lb;Xc=nb;break}B=0;wa(510,F|0,wb|0);nb=B;B=0;if(nb&1){nb=Rb()|0;Yc=1;Zc=nb;_c=Q}else{B=0;ua(163,mb|0,D|0,E|0,858,F|0);nb=B;B=0;if(nb&1)$c=1;else{B=0;eb(503,mb|0,1240,229);B=0;$c=0}nb=Rb()|0;lb=Q;Yua(F);Yc=$c;Zc=nb;_c=lb}Yua(E);Yua(D);if(Yc){Wc=_c;Xc=Zc}else{ad=Zc;bd=_c;break j}}else{lb=Rb()|0;Wc=Q;Xc=lb}while(0);zb(mb|0);ad=Xc;bd=Wc}else Ja=97;while(0);if((Ja|0)==97){rb=Rb()|0;ad=rb;bd=Q}k[C>>2]=27468;k[ub>>2]=27488;k[wb>>2]=27560;Yua(ob);Ava(wb);vva(ub);Lb=ad;Mb=bd;Qb(Lb|0)}while(0);Sc=Uc;Tc=Vc;vva(ub);Qb(Tc|0);break}case 106:{wb=G+56|0;db=G+4|0;k[G>>2]=27524;k[wb>>2]=27544;B=0;wa(508,G+56|0,db|0);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;cd=Q;dd=Ya;vva(wb);Qb(dd|0)}k[G+128>>2]=0;k[G+132>>2]=-1;k[G>>2]=27468;k[wb>>2]=27488;B=0;va(448,db|0);Ya=B;B=0;do if(Ya&1){rb=Rb()|0;ed=Q;fd=rb}else{k[db>>2]=27560;rb=G+36|0;k[rb>>2]=0;k[rb+4>>2]=0;k[rb+8>>2]=0;k[rb+12>>2]=0;k[G+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,db|0,c|0);tb=B;B=0;if(tb&1){tb=Rb()|0;sb=Q;Yua(c);Yua(rb);Ava(db);ed=sb;fd=tb;break}Yua(c);B=0;tb=Ia(40,G|0,140811,26)|0;sb=B;B=0;k:do if(!(sb&1)?(B=0,Xa(239,tb|0,0)|0,qb=B,B=0,!(qb&1)):0){qb=Ab(20)|0;B=0;eb(502,H|0,140006,66);pb=B;B=0;do if(!(pb&1)){B=0;eb(502,I|0,140740,14);lb=B;B=0;if(lb&1){lb=Rb()|0;nb=Q;Yua(H);gd=nb;hd=lb;break}B=0;wa(510,J|0,db|0);lb=B;B=0;if(lb&1){lb=Rb()|0;id=1;jd=lb;kd=Q}else{B=0;ua(163,qb|0,H|0,I|0,859,J|0);lb=B;B=0;if(lb&1)ld=1;else{B=0;eb(503,qb|0,1240,229);B=0;ld=0}lb=Rb()|0;nb=Q;Yua(J);id=ld;jd=lb;kd=nb}Yua(I);Yua(H);if(id){gd=kd;hd=jd}else{md=jd;nd=kd;break k}}else{nb=Rb()|0;gd=Q;hd=nb}while(0);zb(qb|0);md=hd;nd=gd}else Ja=121;while(0);if((Ja|0)==121){tb=Rb()|0;md=tb;nd=Q}k[G>>2]=27468;k[wb>>2]=27488;k[db>>2]=27560;Yua(rb);Ava(db);vva(wb);Lb=md;Mb=nd;Qb(Lb|0)}while(0);cd=ed;dd=fd;vva(wb);Qb(dd|0);break}case 131:{db=K+56|0;Ya=K+4|0;k[K>>2]=27524;k[db>>2]=27544;B=0;wa(508,K+56|0,Ya|0);ub=B;B=0;if(ub&1){ub=Rb()|0;od=Q;pd=ub;vva(db);Qb(pd|0)}k[K+128>>2]=0;k[K+132>>2]=-1;k[K>>2]=27468;k[db>>2]=27488;B=0;va(448,Ya|0);ub=B;B=0;do if(ub&1){tb=Rb()|0;qd=Q;rd=tb}else{k[Ya>>2]=27560;tb=K+36|0;k[tb>>2]=0;k[tb+4>>2]=0;k[tb+8>>2]=0;k[tb+12>>2]=0;k[K+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ya|0,c|0);sb=B;B=0;if(sb&1){sb=Rb()|0;ob=Q;Yua(c);Yua(tb);Ava(Ya);qd=ob;rd=sb;break}Yua(c);B=0;sb=Ia(40,K|0,140838,23)|0;ob=B;B=0;l:do if(!(ob&1)?(B=0,Xa(239,sb|0,0)|0,pb=B,B=0,!(pb&1)):0){pb=Ab(20)|0;B=0;eb(502,L|0,140006,66);mb=B;B=0;do if(!(mb&1)){B=0;eb(502,M|0,140740,14);nb=B;B=0;if(nb&1){nb=Rb()|0;lb=Q;Yua(L);sd=lb;td=nb;break}B=0;wa(510,N|0,Ya|0);nb=B;B=0;if(nb&1){nb=Rb()|0;ud=1;vd=nb;wd=Q}else{B=0;ua(163,pb|0,L|0,M|0,872,N|0);nb=B;B=0;if(nb&1)xd=1;else{B=0;eb(503,pb|0,1240,229);B=0;xd=0}nb=Rb()|0;lb=Q;Yua(N);ud=xd;vd=nb;wd=lb}Yua(M);Yua(L);if(ud){sd=wd;td=vd}else{yd=vd;zd=wd;break l}}else{lb=Rb()|0;sd=Q;td=lb}while(0);zb(pb|0);yd=td;zd=sd}else Ja=146;while(0);if((Ja|0)==146){sb=Rb()|0;yd=sb;zd=Q}k[K>>2]=27468;k[db>>2]=27488;k[Ya>>2]=27560;Yua(tb);Ava(Ya);vva(db);Lb=yd;Mb=zd;Qb(Lb|0)}while(0);od=qd;pd=rd;vva(db);Qb(pd|0);break}case 157:{Ya=Rb()|0;ub=Q;Sqa(Sb);Ad=Pb;Bd=ub;Cd=Ya;Ja=160;break}case 159:{Ya=Rb()|0;Ad=Ob;Bd=Q;Cd=Ya;Ja=160;break}case 162:{Ya=O+56|0;ub=O+4|0;k[O>>2]=27524;k[Ya>>2]=27544;B=0;wa(508,O+56|0,ub|0);wb=B;B=0;if(wb&1){wb=Rb()|0;Dd=Q;Ed=wb;vva(Ya);Qb(Ed|0)}k[O+128>>2]=0;k[O+132>>2]=-1;k[O>>2]=27468;k[Ya>>2]=27488;B=0;va(448,ub|0);wb=B;B=0;do if(wb&1){sb=Rb()|0;Fd=Q;Gd=sb}else{k[ub>>2]=27560;sb=O+36|0;k[sb>>2]=0;k[sb+4>>2]=0;k[sb+8>>2]=0;k[sb+12>>2]=0;k[O+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ub|0,c|0);ob=B;B=0;if(ob&1){ob=Rb()|0;rb=Q;Yua(c);Yua(sb);Ava(ub);Fd=rb;Gd=ob;break}Yua(c);B=0;ob=Ia(40,O|0,140862,23)|0;rb=B;B=0;m:do if(!(rb&1)?(B=0,Xa(239,ob|0,0)|0,mb=B,B=0,!(mb&1)):0){mb=Ab(20)|0;B=0;eb(502,P|0,140006,66);qb=B;B=0;do if(!(qb&1)){B=0;eb(502,R|0,140740,14);lb=B;B=0;if(lb&1){lb=Rb()|0;nb=Q;Yua(P);Hd=nb;Id=lb;break}B=0;wa(510,S|0,ub|0);lb=B;B=0;if(lb&1){lb=Rb()|0;Jd=1;Kd=lb;Ld=Q}else{B=0;ua(163,mb|0,P|0,R|0,881,S|0);lb=B;B=0;if(lb&1)Md=1;else{B=0;eb(503,mb|0,1240,229);B=0;Md=0}lb=Rb()|0;nb=Q;Yua(S);Jd=Md;Kd=lb;Ld=nb}Yua(R);Yua(P);if(Jd){Hd=Ld;Id=Kd}else{Nd=Kd;Od=Ld;break m}}else{nb=Rb()|0;Hd=Q;Id=nb}while(0);zb(mb|0);Nd=Id;Od=Hd}else Ja=177;while(0);if((Ja|0)==177){ob=Rb()|0;Nd=ob;Od=Q}k[O>>2]=27468;k[Ya>>2]=27488;k[ub>>2]=27560;Yua(sb);Ava(ub);vva(Ya);Lb=Nd;Mb=Od;Qb(Lb|0)}while(0);Dd=Fd;Ed=Gd;vva(Ya);Qb(Ed|0);break}case 188:{ub=Rb()|0;wb=Q;Sqa(Vb);Pd=Ub;Qd=wb;Rd=ub;Ja=191;break}case 190:{ub=Rb()|0;Pd=Tb;Qd=Q;Rd=ub;Ja=191;break}case 196:{ub=T+56|0;wb=T+4|0;k[T>>2]=27524;k[ub>>2]=27544;B=0;wa(508,T+56|0,wb|0);db=B;B=0;if(db&1){db=Rb()|0;Sd=Q;Td=db;vva(ub);Qb(Td|0)}k[T+128>>2]=0;k[T+132>>2]=-1;k[T>>2]=27468;k[ub>>2]=27488;B=0;va(448,wb|0);db=B;B=0;do if(db&1){ob=Rb()|0;Ud=Q;Vd=ob}else{k[wb>>2]=27560;ob=T+36|0;k[ob>>2]=0;k[ob+4>>2]=0;k[ob+8>>2]=0;k[ob+12>>2]=0;k[T+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,wb|0,c|0);rb=B;B=0;if(rb&1){rb=Rb()|0;tb=Q;Yua(c);Yua(ob);Ava(wb);Ud=tb;Vd=rb;break}Yua(c);B=0;rb=Ia(40,T|0,140886,22)|0;tb=B;B=0;n:do if(!(tb&1)?(B=0,Xa(239,rb|0,0)|0,qb=B,B=0,!(qb&1)):0){qb=Ab(20)|0;B=0;eb(502,U|0,140006,66);pb=B;B=0;do if(!(pb&1)){B=0;eb(502,V|0,140740,14);nb=B;B=0;if(nb&1){nb=Rb()|0;lb=Q;Yua(U);Wd=lb;Xd=nb;break}B=0;wa(510,W|0,wb|0);nb=B;B=0;if(nb&1){nb=Rb()|0;Yd=1;Zd=nb;_d=Q}else{B=0;ua(163,qb|0,U|0,V|0,901,W|0);nb=B;B=0;if(nb&1)$d=1;else{B=0;eb(503,qb|0,1240,229);B=0;$d=0}nb=Rb()|0;lb=Q;Yua(W);Yd=$d;Zd=nb;_d=lb}Yua(V);Yua(U);if(Yd){Wd=_d;Xd=Zd}else{ae=Zd;be=_d;break n}}else{lb=Rb()|0;Wd=Q;Xd=lb}while(0);zb(qb|0);ae=Xd;be=Wd}else Ja=211;while(0);if((Ja|0)==211){rb=Rb()|0;ae=rb;be=Q}k[T>>2]=27468;k[ub>>2]=27488;k[wb>>2]=27560;Yua(ob);Ava(wb);vva(ub);Lb=ae;Mb=be;Qb(Lb|0)}while(0);Sd=Ud;Td=Vd;vva(ub);Qb(Td|0);break}case 222:{wb=Rb()|0;db=Q;Sqa(Yb);ce=Xb;de=db;ee=wb;Ja=225;break}case 224:{wb=Rb()|0;ce=Wb;de=Q;ee=wb;Ja=225;break}case 227:{wb=X+56|0;db=X+4|0;k[X>>2]=27524;k[wb>>2]=27544;B=0;wa(508,X+56|0,db|0);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;fe=Q;ge=Ya;vva(wb);Qb(ge|0)}k[X+128>>2]=0;k[X+132>>2]=-1;k[X>>2]=27468;k[wb>>2]=27488;B=0;va(448,db|0);Ya=B;B=0;do if(Ya&1){rb=Rb()|0;he=Q;ie=rb}else{k[db>>2]=27560;rb=X+36|0;k[rb>>2]=0;k[rb+4>>2]=0;k[rb+8>>2]=0;k[rb+12>>2]=0;k[X+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,db|0,c|0);tb=B;B=0;if(tb&1){tb=Rb()|0;sb=Q;Yua(c);Yua(rb);Ava(db);he=sb;ie=tb;break}Yua(c);B=0;tb=Ia(40,X|0,140909,32)|0;sb=B;B=0;o:do if(!(sb&1)?(B=0,Xa(239,tb|0,0)|0,pb=B,B=0,!(pb&1)):0){pb=Ab(20)|0;B=0;eb(502,Y|0,140006,66);mb=B;B=0;do if(!(mb&1)){B=0;eb(502,Z|0,140740,14);lb=B;B=0;if(lb&1){lb=Rb()|0;nb=Q;Yua(Y);je=lb;ke=nb;break}B=0;wa(510,_|0,db|0);nb=B;B=0;if(nb&1){nb=Rb()|0;le=1;me=nb;ne=Q}else{B=0;ua(163,pb|0,Y|0,Z|0,912,_|0);nb=B;B=0;if(nb&1)oe=1;else{B=0;eb(503,pb|0,1240,229);B=0;oe=0}nb=Rb()|0;lb=Q;Yua(_);le=oe;me=nb;ne=lb}Yua(Z);Yua(Y);if(le){je=me;ke=ne}else{pe=me;qe=ne;break o}}else{lb=Rb()|0;je=lb;ke=Q}while(0);zb(pb|0);pe=je;qe=ke}else Ja=242;while(0);if((Ja|0)==242){tb=Rb()|0;pe=tb;qe=Q}k[X>>2]=27468;k[wb>>2]=27488;k[db>>2]=27560;Yua(rb);Ava(db);vva(wb);Lb=pe;Mb=qe;Qb(Lb|0)}while(0);fe=he;ge=ie;vva(wb);Qb(ge|0);break}case 252:{db=$+56|0;Ya=$+4|0;k[$>>2]=27524;k[db>>2]=27544;B=0;wa(508,$+56|0,Ya|0);ub=B;B=0;if(ub&1){ub=Rb()|0;re=Q;se=ub;vva(db);Qb(se|0)}k[$+128>>2]=0;k[$+132>>2]=-1;k[$>>2]=27468;k[db>>2]=27488;B=0;va(448,Ya|0);ub=B;B=0;do if(ub&1){tb=Rb()|0;te=Q;ue=tb}else{k[Ya>>2]=27560;tb=$+36|0;k[tb>>2]=0;k[tb+4>>2]=0;k[tb+8>>2]=0;k[tb+12>>2]=0;k[$+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ya|0,c|0);sb=B;B=0;if(sb&1){sb=Rb()|0;ob=Q;Yua(c);Yua(tb);Ava(Ya);te=ob;ue=sb;break}Yua(c);B=0;sb=Ia(40,$|0,140942,23)|0;ob=B;B=0;p:do if(!(ob&1)?(B=0,Xa(239,sb|0,0)|0,mb=B,B=0,!(mb&1)):0){mb=Ab(20)|0;B=0;eb(502,aa|0,140006,66);qb=B;B=0;do if(!(qb&1)){B=0;eb(502,ba|0,140740,14);lb=B;B=0;if(lb&1){lb=Rb()|0;nb=Q;Yua(aa);ve=lb;we=nb;break}B=0;wa(510,ca|0,Ya|0);nb=B;B=0;if(nb&1){nb=Rb()|0;xe=1;ye=nb;ze=Q}else{B=0;ua(163,mb|0,aa|0,ba|0,920,ca|0);nb=B;B=0;if(nb&1)Ae=1;else{B=0;eb(503,mb|0,1240,229);B=0;Ae=0}nb=Rb()|0;lb=Q;Yua(ca);xe=Ae;ye=nb;ze=lb}Yua(ba);Yua(aa);if(xe){ve=ye;we=ze}else{Be=ye;Ce=ze;break p}}else{lb=Rb()|0;ve=lb;we=Q}while(0);zb(mb|0);Be=ve;Ce=we}else Ja=267;while(0);if((Ja|0)==267){sb=Rb()|0;Be=sb;Ce=Q}k[$>>2]=27468;k[db>>2]=27488;k[Ya>>2]=27560;Yua(tb);Ava(Ya);vva(db);Lb=Be;Mb=Ce;Qb(Lb|0)}while(0);re=te;se=ue;vva(db);Qb(se|0);break}case 280:{Ya=Rb()|0;ub=Q;Sqa(ac);De=$b;Ee=ub;Fe=Ya;Ja=283;break}case 282:{Ya=Rb()|0;De=_b;Ee=Q;Fe=Ya;Ja=283;break}case 286:{Ya=da+56|0;ub=da+4|0;k[da>>2]=27524;k[Ya>>2]=27544;B=0;wa(508,da+56|0,ub|0);wb=B;B=0;if(wb&1){wb=Rb()|0;Ge=Q;He=wb;vva(Ya);Qb(He|0)}k[da+128>>2]=0;k[da+132>>2]=-1;k[da>>2]=27468;k[Ya>>2]=27488;B=0;va(448,ub|0);wb=B;B=0;do if(wb&1){sb=Rb()|0;Ie=Q;Je=sb}else{k[ub>>2]=27560;sb=da+36|0;k[sb>>2]=0;k[sb+4>>2]=0;k[sb+8>>2]=0;k[sb+12>>2]=0;k[da+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ub|0,c|0);ob=B;B=0;if(ob&1){ob=Rb()|0;rb=Q;Yua(c);Yua(sb);Ava(ub);Ie=rb;Je=ob;break}Yua(c);B=0;ob=Ia(40,da|0,140966,37)|0;rb=B;B=0;q:do if(!(rb&1)?(B=0,Xa(239,ob|0,0)|0,qb=B,B=0,!(qb&1)):0){qb=Ab(20)|0;B=0;eb(502,ea|0,140006,66);pb=B;B=0;do if(!(pb&1)){B=0;eb(502,fa|0,140740,14);lb=B;B=0;if(lb&1){lb=Rb()|0;nb=Q;Yua(ea);Ke=lb;Le=nb;break}B=0;wa(510,ga|0,ub|0);nb=B;B=0;if(nb&1){nb=Rb()|0;Me=1;Ne=nb;Oe=Q}else{B=0;ua(163,qb|0,ea|0,fa|0,945,ga|0);nb=B;B=0;if(nb&1)Pe=1;else{B=0;eb(503,qb|0,1240,229);B=0;Pe=0}nb=Rb()|0;lb=Q;Yua(ga);Me=Pe;Ne=nb;Oe=lb}Yua(fa);Yua(ea);if(Me){Ke=Ne;Le=Oe}else{Qe=Ne;Re=Oe;break q}}else{lb=Rb()|0;Ke=lb;Le=Q}while(0);zb(qb|0);Qe=Ke;Re=Le}else Ja=301;while(0);if((Ja|0)==301){ob=Rb()|0;Qe=ob;Re=Q}k[da>>2]=27468;k[Ya>>2]=27488;k[ub>>2]=27560;Yua(sb);Ava(ub);vva(Ya);Lb=Qe;Mb=Re;Qb(Lb|0)}while(0);Ge=Ie;He=Je;vva(Ya);Qb(He|0);break}case 313:{ub=ha+56|0;wb=ha+4|0;k[ha>>2]=27524;k[ub>>2]=27544;B=0;wa(508,ha+56|0,wb|0);db=B;B=0;if(db&1){db=Rb()|0;Se=Q;Te=db;vva(ub);Qb(Te|0)}k[ha+128>>2]=0;k[ha+132>>2]=-1;k[ha>>2]=27468;k[ub>>2]=27488;B=0;va(448,wb|0);db=B;B=0;do if(db&1){ob=Rb()|0;Ue=Q;Ve=ob}else{k[wb>>2]=27560;ob=ha+36|0;k[ob>>2]=0;k[ob+4>>2]=0;k[ob+8>>2]=0;k[ob+12>>2]=0;k[ha+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,wb|0,c|0);rb=B;B=0;if(rb&1){rb=Rb()|0;tb=Q;Yua(c);Yua(ob);Ava(wb);Ue=tb;Ve=rb;break}Yua(c);B=0;rb=Ia(40,ha|0,140909,32)|0;tb=B;B=0;r:do if(!(tb&1)?(B=0,Xa(239,rb|0,0)|0,pb=B,B=0,!(pb&1)):0){pb=Ab(20)|0;B=0;eb(502,ia|0,140006,66);mb=B;B=0;do if(!(mb&1)){B=0;eb(502,ja|0,140740,14);lb=B;B=0;if(lb&1){lb=Rb()|0;nb=Q;Yua(ia);We=lb;Xe=nb;break}B=0;wa(510,ka|0,wb|0);nb=B;B=0;if(nb&1){nb=Rb()|0;Ye=1;Ze=nb;_e=Q}else{B=0;ua(163,pb|0,ia|0,ja|0,955,ka|0);nb=B;B=0;if(nb&1)$e=1;else{B=0;eb(503,pb|0,1240,229);B=0;$e=0}nb=Rb()|0;lb=Q;Yua(ka);Ye=$e;Ze=nb;_e=lb}Yua(ja);Yua(ia);if(Ye){We=Ze;Xe=_e}else{af=Ze;bf=_e;break r}}else{lb=Rb()|0;We=lb;Xe=Q}while(0);zb(pb|0);af=We;bf=Xe}else Ja=328;while(0);if((Ja|0)==328){rb=Rb()|0;af=rb;bf=Q}k[ha>>2]=27468;k[ub>>2]=27488;k[wb>>2]=27560;Yua(ob);Ava(wb);vva(ub);Lb=af;Mb=bf;Qb(Lb|0)}while(0);Se=Ue;Te=Ve;vva(ub);Qb(Te|0);break}case 338:{wb=la+56|0;db=la+4|0;k[la>>2]=27524;k[wb>>2]=27544;B=0;wa(508,la+56|0,db|0);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;cf=Q;df=Ya;vva(wb);Qb(df|0)}k[la+128>>2]=0;k[la+132>>2]=-1;k[la>>2]=27468;k[wb>>2]=27488;B=0;va(448,db|0);Ya=B;B=0;do if(Ya&1){rb=Rb()|0;ef=Q;ff=rb}else{k[db>>2]=27560;rb=la+36|0;k[rb>>2]=0;k[rb+4>>2]=0;k[rb+8>>2]=0;k[rb+12>>2]=0;k[la+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,db|0,c|0);tb=B;B=0;if(tb&1){tb=Rb()|0;sb=Q;Yua(c);Yua(rb);Ava(db);ef=sb;ff=tb;break}Yua(c);B=0;tb=Ia(40,la|0,140942,23)|0;sb=B;B=0;s:do if(!(sb&1)?(B=0,Xa(239,tb|0,0)|0,mb=B,B=0,!(mb&1)):0){mb=Ab(20)|0;B=0;eb(502,ma|0,140006,66);qb=B;B=0;do if(!(qb&1)){B=0;eb(502,na|0,140740,14);lb=B;B=0;if(lb&1){lb=Rb()|0;nb=Q;Yua(ma);gf=lb;hf=nb;break}B=0;wa(510,oa|0,db|0);nb=B;B=0;if(nb&1){nb=Rb()|0;jf=1;kf=nb;lf=Q}else{B=0;ua(163,mb|0,ma|0,na|0,960,oa|0);nb=B;B=0;if(nb&1)mf=1;else{B=0;eb(503,mb|0,1240,229);B=0;mf=0}nb=Rb()|0;lb=Q;Yua(oa);jf=mf;kf=nb;lf=lb}Yua(na);Yua(ma);if(jf){gf=kf;hf=lf}else{nf=kf;of=lf;break s}}else{lb=Rb()|0;gf=lb;hf=Q}while(0);zb(mb|0);nf=gf;of=hf}else Ja=353;while(0);if((Ja|0)==353){tb=Rb()|0;nf=tb;of=Q}k[la>>2]=27468;k[wb>>2]=27488;k[db>>2]=27560;Yua(rb);Ava(db);vva(wb);Lb=nf;Mb=of;Qb(Lb|0)}while(0);cf=ef;df=ff;vva(wb);Qb(df|0);break}case 367:{db=Rb()|0;Ya=Q;Sqa(gc);pf=fc;qf=Ya;rf=db;Ja=372;break}case 371:{db=Rb()|0;pf=ec;qf=Q;rf=db;Ja=372;break}case 376:{db=pa+56|0;Ya=pa+4|0;k[pa>>2]=27524;k[db>>2]=27544;B=0;wa(508,pa+56|0,Ya|0);ub=B;B=0;if(ub&1){ub=Rb()|0;sf=Q;tf=ub;vva(db);Qb(tf|0)}k[pa+128>>2]=0;k[pa+132>>2]=-1;k[pa>>2]=27468;k[db>>2]=27488;B=0;va(448,Ya|0);ub=B;B=0;do if(ub&1){tb=Rb()|0;uf=Q;vf=tb}else{k[Ya>>2]=27560;tb=pa+36|0;k[tb>>2]=0;k[tb+4>>2]=0;k[tb+8>>2]=0;k[tb+12>>2]=0;k[pa+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ya|0,c|0);sb=B;B=0;if(sb&1){sb=Rb()|0;ob=Q;Yua(c);Yua(tb);Ava(Ya);uf=ob;vf=sb;break}Yua(c);B=0;sb=Ia(40,pa|0,141004,20)|0;ob=B;B=0;t:do if((!(ob&1)?(B=0,qb=Xa(242,sb|0,k[f>>2]|0)|0,pb=B,B=0,!(pb&1)):0)?(B=0,Xa(239,qb|0,0)|0,qb=B,B=0,!(qb&1)):0){qb=Ab(20)|0;B=0;eb(502,qa|0,140006,66);pb=B;B=0;do if(!(pb&1)){B=0;eb(502,ra|0,140740,14);lb=B;B=0;if(lb&1){lb=Rb()|0;nb=Q;Yua(qa);wf=lb;xf=nb;break}B=0;wa(510,sa|0,Ya|0);nb=B;B=0;if(nb&1){nb=Rb()|0;yf=1;zf=nb;Af=Q}else{B=0;ua(163,qb|0,qa|0,ra|0,979,sa|0);nb=B;B=0;if(nb&1)Bf=1;else{B=0;eb(503,qb|0,1240,229);B=0;Bf=0}nb=Rb()|0;lb=Q;Yua(sa);yf=Bf;zf=nb;Af=lb}Yua(ra);Yua(qa);if(yf){wf=zf;xf=Af}else{Cf=zf;Df=Af;break t}}else{lb=Rb()|0;wf=lb;xf=Q}while(0);zb(qb|0);Cf=wf;Df=xf}else Ja=392;while(0);if((Ja|0)==392){sb=Rb()|0;Cf=sb;Df=Q}k[pa>>2]=27468;k[db>>2]=27488;k[Ya>>2]=27560;Yua(tb);Ava(Ya);vva(db);Lb=Cf;Mb=Df;Qb(Lb|0)}while(0);sf=uf;tf=vf;vva(db);Qb(tf|0);break}}if((Ja|0)==160){Sqa(Ad);Lb=Cd;Mb=Bd;Qb(Lb|0)}else if((Ja|0)==191){Sqa(Pd);Lb=Rd;Mb=Qd;Qb(Lb|0)}else if((Ja|0)==225){Sqa(ce);Lb=ee;Mb=de;Qb(Lb|0)}else if((Ja|0)==283){Sqa(De);Lb=Fe;Mb=Ee;Qb(Lb|0)}else if((Ja|0)==372){Sqa(pf);Lb=rf;Mb=qf;Qb(Lb|0)}}while(0);k[f>>2]=0;uY()|0;r=b;return}function zka(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=k[a>>2]|0;l=a+4|0;a=k[l>>2]|0;m=j>>>0<a>>>0;if(m){n=j;do{o=k[n>>2]|0;n=n+4|0;if(!(Ita(k[o+4>>2]|0,c)|0)){p=o;q=4;break}}while(n>>>0<a>>>0);if((q|0)==4){q=k[p+8>>2]|0;Fc[k[(k[q>>2]|0)+28>>2]&1023](q,b);r=d;return}if(m){m=j;do{j=k[(k[m>>2]|0)+8>>2]|0;Ec[k[(k[j>>2]|0)+8>>2]&1023](j);m=m+4|0}while(m>>>0<(k[l>>2]|0)>>>0)}}l=f+56|0;m=f+4|0;k[f>>2]=27524;k[l>>2]=27544;B=0;wa(508,f+56|0,m|0);j=B;B=0;if(j&1){j=Rb()|0;s=Q;t=j;vva(l);Qb(t|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[l>>2]=27488;B=0;va(448,m|0);j=B;B=0;do if(j&1){d=Rb()|0;u=Q;v=d}else{k[m>>2]=27560;d=f+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,m|0,e|0);b=B;B=0;if(b&1){b=Rb()|0;q=Q;Yua(e);Yua(d);Ava(m);u=q;v=b;break}Yua(e);B=0;b=Ia(40,f|0,141025,25)|0;q=B;B=0;if(((!(q&1)?(q=Lta(c)|0,B=0,p=Ia(40,b|0,c|0,q|0)|0,q=B,B=0,!(q&1)):0)?(B=0,q=Ia(40,p|0,141051,1)|0,p=B,B=0,!(p&1)):0)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,g|0,140006,66);p=B;B=0;do if(!(p&1)){B=0;eb(502,h|0,141053,12);b=B;B=0;if(b&1){b=Rb()|0;a=Q;Yua(g);w=a;x=b;break}B=0;wa(510,i|0,m|0);b=B;B=0;if(b&1){b=Rb()|0;y=Q;z=b;A=1}else{B=0;ua(163,q|0,g|0,h|0,501,i|0);b=B;B=0;if(b&1)C=1;else{B=0;eb(503,q|0,1240,229);B=0;C=0}b=Rb()|0;a=Q;Yua(i);y=a;z=b;A=C}Yua(h);Yua(g);if(A){w=y;x=z}else{D=z;E=y;k[f>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(d);Ava(m);vva(l);Qb(D|0)}}else{b=Rb()|0;w=Q;x=b}while(0);zb(q|0);D=x;E=w;k[f>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(d);Ava(m);vva(l);Qb(D|0)}p=Rb()|0;D=p;E=Q;k[f>>2]=27468;k[l>>2]=27488;k[m>>2]=27560;Yua(d);Ava(m);vva(l);Qb(D|0)}while(0);s=u;t=v;vva(l);Qb(t|0)}function Aka(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;c=r;r=r+16|0;d=c;k[d>>2]=b;e=k[a>>2]|0;f=a+4|0;g=k[f>>2]|0;h=b;a:do if(e>>>0<g>>>0){i=b+4|0;j=k[i>>2]|0;l=e;while(1){if(!(Ita(k[(k[l>>2]|0)+4>>2]|0,j)|0))break;l=l+4|0;if(l>>>0>=g>>>0)break a}if(!b){r=c;return}if(j)Tqa(j);k[i>>2]=0;l=k[b+8>>2]|0;if(l)Ec[k[(k[l>>2]|0)+4>>2]&1023](l);Sqa(b);r=c;return}while(0);if((g|0)==(k[a+8>>2]|0)){_ka(a,d);r=c;return}else{k[g>>2]=h;k[f>>2]=(k[f>>2]|0)+4;r=c;return}}function Bka(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;d=r;r=r+384|0;e=d+360|0;f=d+356|0;g=d+352|0;h=d+216|0;i=d+200|0;j=d+48|0;l=d+36|0;m=d+64|0;n=d+24|0;o=d+12|0;p=d;q=vY()|0;s=Oka(a,g,0,c)|0;k[a+24>>2]=s;if((k[g>>2]|0)!=2){g=h+56|0;a=h+4|0;k[h>>2]=27524;k[g>>2]=27544;B=0;wa(508,h+56|0,a|0);t=B;B=0;if(t&1){t=Rb()|0;u=Q;v=t;vva(g);Qb(v|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[g>>2]=27488;B=0;va(448,a|0);t=B;B=0;do if(t&1){w=Rb()|0;x=Q;y=w}else{k[a>>2]=27560;w=h+36|0;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[w+12>>2]=0;k[h+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,a|0,e|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;Yua(e);Yua(w);Ava(a);x=A;y=z;break}Yua(e);B=0;z=Ia(40,h|0,141066,26)|0;A=B;B=0;a:do if(((!(A&1)?(C=Lta(c)|0,B=0,D=Ia(40,z|0,c|0,C|0)|0,C=B,B=0,!(C&1)):0)?(B=0,C=Ia(40,D|0,141051,1)|0,D=B,B=0,!(D&1)):0)?(B=0,Xa(239,C|0,0)|0,C=B,B=0,!(C&1)):0){C=Ab(20)|0;B=0;eb(502,i|0,140006,66);D=B;B=0;do if(!(D&1)){B=0;eb(502,j|0,141093,9);E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(i);G=E;H=F;break}B=0;wa(510,l|0,a|0);F=B;B=0;if(F&1){F=Rb()|0;I=Q;J=F;K=1}else{B=0;ua(163,C|0,i|0,j|0,1137,l|0);F=B;B=0;if(F&1)L=1;else{B=0;eb(503,C|0,1240,229);B=0;L=0}F=Rb()|0;E=Q;Yua(l);I=E;J=F;K=L}Yua(j);Yua(i);if(K){G=J;H=I}else{M=J;N=I;break a}}else{F=Rb()|0;G=F;H=Q}while(0);zb(C|0);M=G;N=H}else O=19;while(0);if((O|0)==19){z=Rb()|0;M=z;N=Q}k[h>>2]=27468;k[g>>2]=27488;k[a>>2]=27560;Yua(w);Ava(a);vva(g);P=N;R=M;Qb(R|0)}while(0);u=x;v=y;vva(g);Qb(v|0)}if(q){uY()|0;S=k[f>>2]|0;k[b>>2]=S;r=d;return}if((ata(f,4,1,s)|0)==1){uY()|0;S=k[f>>2]|0;k[b>>2]=S;r=d;return}d=m+56|0;S=m+4|0;k[m>>2]=27524;k[d>>2]=27544;B=0;wa(508,m+56|0,S|0);b=B;B=0;if(b&1){b=Rb()|0;T=Q;U=b;vva(d);Qb(U|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[d>>2]=27488;B=0;va(448,S|0);b=B;B=0;do if(b&1){f=Rb()|0;V=Q;W=f}else{k[S>>2]=27560;f=m+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[m+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,S|0,e|0);s=B;B=0;if(s&1){s=Rb()|0;q=Q;Yua(e);Yua(f);Ava(S);V=q;W=s;break}Yua(e);B=0;s=Ia(40,m|0,140862,23)|0;q=B;B=0;b:do if(!(q&1)?(B=0,Xa(239,s|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,n|0,140006,66);g=B;B=0;do if(!(g&1)){B=0;eb(502,o|0,141093,9);y=B;B=0;if(y&1){y=Rb()|0;x=Q;Yua(n);X=y;Y=x;break}B=0;wa(510,p|0,S|0);x=B;B=0;if(x&1){x=Rb()|0;Z=1;_=Q;$=x}else{B=0;ua(163,v|0,n|0,o|0,1141,p|0);x=B;B=0;if(x&1)aa=1;else{B=0;eb(503,v|0,1240,229);B=0;aa=0}x=Rb()|0;y=Q;Yua(p);Z=aa;_=y;$=x}Yua(o);Yua(n);if(Z){X=$;Y=_}else{ba=_;ca=$;break b}}else{x=Rb()|0;X=x;Y=Q}while(0);zb(v|0);ba=Y;ca=X}else O=44;while(0);if((O|0)==44){s=Rb()|0;ba=Q;ca=s}k[m>>2]=27468;k[d>>2]=27488;k[S>>2]=27560;Yua(f);Ava(S);vva(d);P=ba;R=ca;Qb(R|0)}while(0);T=V;U=W;vva(d);Qb(U|0)}function Cka(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0;f=r;r=r+720|0;g=f+704|0;h=f+700|0;i=f+684|0;j=f+680|0;l=f+520|0;m=f+688|0;n=f+668|0;o=f+656|0;q=f+384|0;s=f+368|0;t=f+84|0;u=f+72|0;v=f+232|0;w=f+60|0;x=f+48|0;y=f+36|0;z=f+96|0;A=f+24|0;C=f+12|0;D=f;k[j>>2]=0;E=vY()|0;F=Oka(a,j,0,e)|0;G=a+24|0;k[G>>2]=F;a=k[j>>2]|0;if((a+-5|0)>>>0>=3){j=l+56|0;H=l+4|0;k[l>>2]=27524;k[j>>2]=27544;B=0;wa(508,l+56|0,H|0);I=B;B=0;if(I&1){I=Rb()|0;J=Q;K=I;vva(j);Qb(K|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[j>>2]=27488;B=0;va(448,H|0);I=B;B=0;do if(I&1){L=Rb()|0;M=Q;N=L}else{k[H>>2]=27560;L=l+36|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;k[l+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,H|0,g|0);O=B;B=0;if(O&1){O=Rb()|0;P=Q;Yua(g);Yua(L);Ava(H);M=P;N=O;break}Yua(g);B=0;O=Ia(40,l|0,141103,55)|0;P=B;B=0;a:do if((((((!(P&1)?(R=Lta(e)|0,B=0,S=Ia(40,O|0,e|0,R|0)|0,R=B,B=0,!(R&1)):0)?(B=0,R=Ia(40,S|0,141051,1)|0,S=B,B=0,!(S&1)):0)?(B=0,S=Ia(40,R|0,141159,10)|0,R=B,B=0,!(R&1)):0)?(B=0,R=Xa(242,S|0,a|0)|0,S=B,B=0,!(S&1)):0)?(B=0,S=Ia(40,R|0,141170,1)|0,R=B,B=0,!(R&1)):0)?(B=0,Xa(239,S|0,0)|0,S=B,B=0,!(S&1)):0){S=Ab(20)|0;B=0;eb(502,m|0,140006,66);R=B;B=0;do if(!(R&1)){B=0;eb(502,n|0,141093,9);T=B;B=0;if(T&1){T=Rb()|0;U=Q;Yua(m);V=U;W=T;break}B=0;wa(510,o|0,H|0);T=B;B=0;if(T&1){T=Rb()|0;X=Q;Y=T;Z=1}else{B=0;ua(163,S|0,m|0,n|0,1234,o|0);T=B;B=0;if(T&1)_=1;else{B=0;eb(503,S|0,1240,229);B=0;_=0}T=Rb()|0;U=Q;Yua(o);X=U;Y=T;Z=_}Yua(n);Yua(m);if(Z){V=X;W=Y}else{$=X;aa=Y;break a}}else{T=Rb()|0;V=Q;W=T}while(0);zb(S|0);$=V;aa=W}else ba=22;while(0);if((ba|0)==22){O=Rb()|0;$=Q;aa=O}k[l>>2]=27468;k[j>>2]=27488;k[H>>2]=27560;Yua(L);Ava(H);vva(j);ca=$;da=aa;Qb(da|0)}while(0);J=M;K=N;vva(j);Qb(K|0)}K=(E|0)==0;if(K){if((ata(h,4,1,F)|0)!=1){F=q+56|0;E=q+4|0;k[q>>2]=27524;k[F>>2]=27544;B=0;wa(508,q+56|0,E|0);j=B;B=0;if(j&1){j=Rb()|0;ea=Q;fa=j;vva(F);Qb(fa|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[F>>2]=27488;B=0;va(448,E|0);j=B;B=0;do if(j&1){N=Rb()|0;ga=Q;ha=N}else{k[E>>2]=27560;N=q+36|0;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;k[q+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,E|0,g|0);M=B;B=0;if(M&1){M=Rb()|0;J=Q;Yua(g);Yua(N);Ava(E);ga=J;ha=M;break}Yua(g);B=0;M=Ia(40,q|0,141172,41)|0;J=B;B=0;b:do if(!(J&1)?(B=0,Xa(239,M|0,0)|0,aa=B,B=0,!(aa&1)):0){aa=Ab(20)|0;B=0;eb(502,s|0,140006,66);$=B;B=0;do if(!($&1)){B=0;eb(502,t|0,141093,9);H=B;B=0;if(H&1){H=Rb()|0;l=Q;Yua(s);ia=H;ja=l;break}B=0;wa(510,u|0,E|0);l=B;B=0;if(l&1){l=Rb()|0;ka=1;la=Q;na=l}else{B=0;ua(163,aa|0,s|0,t|0,1241,u|0);l=B;B=0;if(l&1)oa=1;else{B=0;eb(503,aa|0,1240,229);B=0;oa=0}l=Rb()|0;H=Q;Yua(u);ka=oa;la=H;na=l}Yua(t);Yua(s);if(ka){ia=na;ja=la}else{pa=la;qa=na;break b}}else{l=Rb()|0;ia=l;ja=Q}while(0);zb(aa|0);pa=ja;qa=ia}else ba=47;while(0);if((ba|0)==47){M=Rb()|0;pa=Q;qa=M}k[q>>2]=27468;k[F>>2]=27488;k[E>>2]=27560;Yua(N);Ava(E);vva(F);ca=pa;da=qa;Qb(da|0)}while(0);ea=ga;fa=ha;vva(F);Qb(fa|0)}uY()|0;if((ata(i,4,1,k[G>>2]|0)|0)!=1){fa=v+56|0;F=v+4|0;k[v>>2]=27524;k[fa>>2]=27544;B=0;wa(508,v+56|0,F|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ra=Q;sa=ha;vva(fa);Qb(sa|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[fa>>2]=27488;B=0;va(448,F|0);ha=B;B=0;do if(ha&1){ga=Rb()|0;ta=Q;xa=ga}else{k[F>>2]=27560;ga=v+36|0;k[ga>>2]=0;k[ga+4>>2]=0;k[ga+8>>2]=0;k[ga+12>>2]=0;k[v+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,F|0,g|0);ea=B;B=0;if(ea&1){ea=Rb()|0;qa=Q;Yua(g);Yua(ga);Ava(F);ta=qa;xa=ea;break}Yua(g);B=0;ea=Ia(40,v|0,141214,44)|0;qa=B;B=0;c:do if(!(qa&1)?(B=0,Xa(239,ea|0,0)|0,pa=B,B=0,!(pa&1)):0){pa=Ab(20)|0;B=0;eb(502,w|0,140006,66);E=B;B=0;do if(!(E&1)){B=0;eb(502,x|0,141093,9);q=B;B=0;if(q&1){q=Rb()|0;ia=Q;Yua(w);ya=q;za=ia;break}B=0;wa(510,y|0,F|0);ia=B;B=0;if(ia&1){ia=Rb()|0;Aa=1;Ba=Q;Ca=ia}else{B=0;ua(163,pa|0,w|0,x|0,1247,y|0);ia=B;B=0;if(ia&1)Da=1;else{B=0;eb(503,pa|0,1240,229);B=0;Da=0}ia=Rb()|0;q=Q;Yua(y);Aa=Da;Ba=q;Ca=ia}Yua(x);Yua(w);if(Aa){ya=Ca;za=Ba}else{Ea=Ba;Fa=Ca;break c}}else{ia=Rb()|0;ya=ia;za=Q}while(0);zb(pa|0);Ea=za;Fa=ya}else ba=71;while(0);if((ba|0)==71){ea=Rb()|0;Ea=Q;Fa=ea}k[v>>2]=27468;k[fa>>2]=27488;k[F>>2]=27560;Yua(ga);Ava(F);vva(fa);ca=Ea;da=Fa;Qb(da|0)}while(0);ra=ta;sa=xa;vva(fa);Qb(sa|0)}}else uY()|0;uY()|0;sa=k[h>>2]|0;fa=k[i>>2]|0;xa=ma(fa,sa)|0;if(!xa){Ga=fa;Ha=sa;Ja=0}else{ta=Rqa(xa>>>0>536870911?-1:xa<<3)|0;do if(K){xa=ma(sa<<3,fa)|0;if((ata(ta,xa,1,k[G>>2]|0)|0)==1)break;xa=z+56|0;ra=z+4|0;k[z>>2]=27524;k[xa>>2]=27544;B=0;wa(508,z+56|0,ra|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ka=Q;La=Fa;vva(xa);Qb(La|0)}k[z+128>>2]=0;k[z+132>>2]=-1;k[z>>2]=27468;k[xa>>2]=27488;B=0;va(448,ra|0);Fa=B;B=0;do if(Fa&1){Ea=Rb()|0;Ma=Q;Na=Ea}else{k[ra>>2]=27560;Ea=z+36|0;k[Ea>>2]=0;k[Ea+4>>2]=0;k[Ea+8>>2]=0;k[Ea+12>>2]=0;k[z+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,ra|0,g|0);F=B;B=0;if(F&1){F=Rb()|0;v=Q;Yua(g);Yua(Ea);Ava(ra);Ma=v;Na=F;break}Yua(g);B=0;F=Ia(40,z|0,141259,22)|0;v=B;B=0;d:do if(!(v&1)?(B=0,Xa(239,F|0,0)|0,ya=B,B=0,!(ya&1)):0){ya=Ab(20)|0;B=0;eb(502,A|0,140006,66);za=B;B=0;do if(!(za&1)){B=0;eb(502,C|0,141093,9);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Ba=Q;Yua(A);Oa=Ca;Pa=Ba;break}B=0;wa(510,D|0,ra|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;Qa=1;Ra=Q;Sa=Ba}else{B=0;ua(163,ya|0,A|0,C|0,1257,D|0);Ba=B;B=0;if(Ba&1)Ta=1;else{B=0;eb(503,ya|0,1240,229);B=0;Ta=0}Ba=Rb()|0;Ca=Q;Yua(D);Qa=Ta;Ra=Ca;Sa=Ba}Yua(C);Yua(A);if(Qa){Oa=Sa;Pa=Ra}else{Ua=Ra;Va=Sa;break d}}else{Ba=Rb()|0;Oa=Ba;Pa=Q}while(0);zb(ya|0);Ua=Pa;Va=Oa}else ba=99;while(0);if((ba|0)==99){F=Rb()|0;Ua=Q;Va=F}k[z>>2]=27468;k[xa>>2]=27488;k[ra>>2]=27560;Yua(Ea);Ava(ra);vva(xa);ca=Ua;da=Va;Qb(da|0)}while(0);Ka=Ma;La=Na;vva(xa);Qb(La|0)}while(0);uY()|0;Ga=k[i>>2]|0;Ha=k[h>>2]|0;Ja=ta}ta=ma(Ga,Ha)|0;if(ta){La=Rqa(ta>>>0>1073741823?-1:ta<<2)|0;if((Ha|0)>0&(Ga|0)>0){ta=0;do{Na=ma(Ga,ta)|0;Ma=0;do{Ka=Na+Ma|0;k[La+(Ka<<2)>>2]=~~+p[Ja+(Ka<<3)>>3];Ma=Ma+1|0}while((Ma|0)!=(Ga|0));ta=ta+1|0}while((ta|0)<(Ha|0));Wa=La;ba=114}else{Ya=La;ba=113}}else{Ya=0;ba=113}if((ba|0)==113)if(!Ja)Za=Ya;else{Wa=Ya;ba=114}if((ba|0)==114){Tqa(Ja);Za=Wa}k[b>>2]=Za;if(c)k[c>>2]=k[h>>2];if(!d){r=f;return}k[d>>2]=k[i>>2];r=f;return}function Dka(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;b=k[a>>2]|0;c=a+4|0;d=k[c>>2]|0;if(b>>>0<d>>>0){e=d;f=b;while(1){g=k[f>>2]|0;if(!g)h=e;else{i=g+4|0;j=k[i>>2]|0;if(j)Tqa(j);k[i>>2]=0;i=k[g+8>>2]|0;if(i)Ec[k[(k[i>>2]|0)+4>>2]&1023](i);Sqa(g);h=k[c>>2]|0}f=f+4|0;if(f>>>0>=h>>>0){l=h;break}else e=h}m=l;n=k[a>>2]|0}else{m=d;n=b}if((m|0)!=(n|0))k[c>>2]=m+(~((m+-4-n|0)>>>2)<<2);n=a+12|0;m=k[n>>2]|0;b=a+16|0;d=k[b>>2]|0;if(m>>>0<d>>>0){l=d;h=m;while(1){e=k[h>>2]|0;if(!e)o=l;else{f=e+4|0;g=k[f>>2]|0;if(g)Tqa(g);k[f>>2]=0;f=k[e+24>>2]|0;if(f)Tqa(f);Sqa(e);o=k[b>>2]|0}h=h+4|0;if(h>>>0>=o>>>0){p=o;break}else l=o}q=p;r=k[n>>2]|0}else{q=d;r=m}if((q|0)!=(r|0))k[b>>2]=q+(~((q+-4-r|0)>>>2)<<2);r=a+32|0;q=k[r>>2]|0;if(q)Tqa(q);k[r>>2]=0;r=a+36|0;q=k[r>>2]|0;if(q)Tqa(q);k[r>>2]=0;r=a+72|0;q=k[r>>2]|0;if(q)Tqa(q);k[r>>2]=0;r=a+76|0;q=k[r>>2]|0;if(q)Tqa(q);k[r>>2]=0;r=a+80|0;q=k[r>>2]|0;if(q)Tqa(q);k[r>>2]=0;r=a+88|0;q=k[r>>2]|0;if(q)Tqa(q);k[r>>2]=0;r=a+84|0;q=k[r>>2]|0;if(q)Tqa(q);k[r>>2]=0;r=a+92|0;q=k[r>>2]|0;if(q)Tqa(q);k[r>>2]=0;r=a+96|0;q=k[r>>2]|0;if(q)Tqa(q);k[r>>2]=0;r=k[n>>2]|0;n=r;if(r){q=k[b>>2]|0;if((q|0)!=(r|0))k[b>>2]=q+(~((q+-4-n|0)>>>2)<<2);Sqa(r)}r=k[a>>2]|0;if(!r)return;a=k[c>>2]|0;if((a|0)!=(r|0))k[c>>2]=a+(~((a+-4-r|0)>>>2)<<2);Sqa(r);return}function Eka(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;c=r;r=r+16|0;d=c;k[d>>2]=b;e=a+12|0;f=k[e>>2]|0;g=a+16|0;h=k[g>>2]|0;i=b;a:do if(f>>>0<h>>>0){j=b+4|0;l=k[j>>2]|0;m=f;while(1){if(!(Ita(k[(k[m>>2]|0)+4>>2]|0,l)|0))break;m=m+4|0;if(m>>>0>=h>>>0)break a}if(!b){r=c;return}if(l)Tqa(l);k[j>>2]=0;m=k[b+24>>2]|0;if(m)Tqa(m);Sqa(b);r=c;return}while(0);if((h|0)==(k[a+20>>2]|0)){$ka(e,d);r=c;return}else{k[h>>2]=i;k[g>>2]=(k[g>>2]|0)+4;r=c;return}}function Fka(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=k[a>>2]|0;l=k[a+4>>2]|0;a:do if(j>>>0<l>>>0){a=j;while(1){m=k[a>>2]|0;a=a+4|0;if(!(Ita(k[m+4>>2]|0,c)|0)){n=m;break}if(a>>>0>=l>>>0)break a}a=k[n+8>>2]|0;Fc[k[(k[a>>2]|0)+32>>2]&1023](a,b);r=d;return}while(0);d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(d);Qb(p|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);n=B;B=0;do if(n&1){l=Rb()|0;q=Q;s=l}else{k[b>>2]=27560;l=f+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);j=B;B=0;if(j&1){j=Rb()|0;a=Q;Yua(e);Yua(l);Ava(b);q=a;s=j;break}Yua(e);B=0;j=Ia(40,f|0,141025,25)|0;a=B;B=0;if(((!(a&1)?(a=Lta(c)|0,B=0,m=Ia(40,j|0,c|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,a=Ia(40,m|0,141051,1)|0,m=B,B=0,!(m&1)):0)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,g|0,140006,66);m=B;B=0;do if(!(m&1)){B=0;eb(502,h|0,141053,12);j=B;B=0;if(j&1){j=Rb()|0;t=Q;Yua(g);u=t;v=j;break}B=0;wa(510,i|0,b|0);j=B;B=0;if(j&1){j=Rb()|0;w=Q;x=j;y=1}else{B=0;ua(163,a|0,g|0,h|0,518,i|0);j=B;B=0;if(j&1)z=1;else{B=0;eb(503,a|0,1240,229);B=0;z=0}j=Rb()|0;t=Q;Yua(i);w=t;x=j;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(d);Qb(C|0)}}else{j=Rb()|0;u=Q;v=j}while(0);zb(a|0);A=u;C=v;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(d);Qb(C|0)}m=Rb()|0;A=Q;C=m;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(d);Qb(C|0)}while(0);o=q;p=s;vva(d);Qb(p|0)}function Gka(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=k[a>>2]|0;l=k[a+4>>2]|0;a:do if(j>>>0<l>>>0){a=j;while(1){m=k[a>>2]|0;a=a+4|0;if(!(Ita(k[m+4>>2]|0,c)|0)){n=m;break}if(a>>>0>=l>>>0)break a}a=k[n+8>>2]|0;Fc[k[(k[a>>2]|0)+44>>2]&1023](a,b);r=d;return}while(0);d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(d);Qb(p|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);n=B;B=0;do if(n&1){l=Rb()|0;q=Q;s=l}else{k[b>>2]=27560;l=f+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);j=B;B=0;if(j&1){j=Rb()|0;a=Q;Yua(e);Yua(l);Ava(b);q=a;s=j;break}Yua(e);B=0;j=Ia(40,f|0,141025,25)|0;a=B;B=0;if(((!(a&1)?(a=Lta(c)|0,B=0,m=Ia(40,j|0,c|0,a|0)|0,a=B,B=0,!(a&1)):0)?(B=0,a=Ia(40,m|0,141051,1)|0,m=B,B=0,!(m&1)):0)?(B=0,Xa(239,a|0,0)|0,a=B,B=0,!(a&1)):0){a=Ab(20)|0;B=0;eb(502,g|0,140006,66);m=B;B=0;do if(!(m&1)){B=0;eb(502,h|0,141053,12);j=B;B=0;if(j&1){j=Rb()|0;t=Q;Yua(g);u=t;v=j;break}B=0;wa(510,i|0,b|0);j=B;B=0;if(j&1){j=Rb()|0;w=Q;x=j;y=1}else{B=0;ua(163,a|0,g|0,h|0,535,i|0);j=B;B=0;if(j&1)z=1;else{B=0;eb(503,a|0,1240,229);B=0;z=0}j=Rb()|0;t=Q;Yua(i);w=t;x=j;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(d);Qb(C|0)}}else{j=Rb()|0;u=Q;v=j}while(0);zb(a|0);A=u;C=v;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(d);Qb(C|0)}m=Rb()|0;A=Q;C=m;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(l);Ava(b);vva(d);Qb(C|0)}while(0);o=q;p=s;vva(d);Qb(p|0)}function Hka(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;i=e+12|0;j=e;l=k[a>>2]|0;m=k[a+4>>2]|0;a:do if(l>>>0<m>>>0){a=l;while(1){n=k[a>>2]|0;a=a+4|0;if(!(Ita(k[n+4>>2]|0,d)|0)){o=n;break}if(a>>>0>=m>>>0)break a}a=k[o+8>>2]|0;nd[k[(k[a>>2]|0)+56>>2]&1023](a,b,c);r=e;return}while(0);e=g+56|0;c=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;p=Q;q=b;vva(e);Qb(q|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,c|0);b=B;B=0;do if(b&1){o=Rb()|0;s=Q;t=o}else{k[c>>2]=27560;o=g+36|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[o+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,c|0,f|0);m=B;B=0;if(m&1){m=Rb()|0;l=Q;Yua(f);Yua(o);Ava(c);s=l;t=m;break}Yua(f);B=0;m=Ia(40,g|0,141025,25)|0;l=B;B=0;if(((!(l&1)?(l=Lta(d)|0,B=0,a=Ia(40,m|0,d|0,l|0)|0,l=B,B=0,!(l&1)):0)?(B=0,l=Ia(40,a|0,141051,1)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(239,l|0,0)|0,l=B,B=0,!(l&1)):0){l=Ab(20)|0;B=0;eb(502,h|0,140006,66);a=B;B=0;do if(!(a&1)){B=0;eb(502,i|0,141053,12);m=B;B=0;if(m&1){m=Rb()|0;n=Q;Yua(h);u=n;v=m;break}B=0;wa(510,j|0,c|0);m=B;B=0;if(m&1){m=Rb()|0;w=Q;x=m;y=1}else{B=0;ua(163,l|0,h|0,i|0,569,j|0);m=B;B=0;if(m&1)z=1;else{B=0;eb(503,l|0,1240,229);B=0;z=0}m=Rb()|0;n=Q;Yua(j);w=n;x=m;y=z}Yua(i);Yua(h);if(y){u=w;v=x}else{A=w;C=x;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(o);Ava(c);vva(e);Qb(C|0)}}else{m=Rb()|0;u=Q;v=m}while(0);zb(l|0);A=u;C=v;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(o);Ava(c);vva(e);Qb(C|0)}a=Rb()|0;A=Q;C=a;k[g>>2]=27468;k[e>>2]=27488;k[c>>2]=27560;Yua(o);Ava(c);vva(e);Qb(C|0)}while(0);p=s;q=t;vva(e);Qb(q|0)}function Ika(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;d=r;r=r+192|0;e=d+176|0;f=d+40|0;g=d+24|0;h=d+12|0;i=d;j=k[a>>2]|0;l=k[a+4>>2]|0;a:do if(j>>>0<l>>>0){a=j;while(1){m=k[a>>2]|0;a=a+4|0;if(!(Ita(k[m+4>>2]|0,b)|0)){n=m;break}if(a>>>0>=l>>>0)break a}a=k[n+8>>2]|0;m=Hc[k[(k[a>>2]|0)+16>>2]&511](a)|0;Fc[k[(k[m>>2]|0)+140>>2]&1023](m,c);r=d;return m|0}while(0);d=f+56|0;c=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,c|0);n=B;B=0;if(n&1){n=Rb()|0;o=Q;p=n;vva(d);Qb(p|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,c|0);n=B;B=0;do if(n&1){l=Rb()|0;q=Q;s=l}else{k[c>>2]=27560;l=f+36|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,c|0,e|0);j=B;B=0;if(j&1){j=Rb()|0;m=Q;Yua(e);Yua(l);Ava(c);q=m;s=j;break}Yua(e);B=0;j=Ia(40,f|0,141282,10)|0;m=B;B=0;if(((!(m&1)?(m=Lta(b)|0,B=0,a=Ia(40,j|0,b|0,m|0)|0,m=B,B=0,!(m&1)):0)?(B=0,m=Ia(40,a|0,141293,22)|0,a=B,B=0,!(a&1)):0)?(B=0,Xa(239,m|0,0)|0,m=B,B=0,!(m&1)):0){m=Ab(20)|0;B=0;eb(502,g|0,140006,66);a=B;B=0;do if(!(a&1)){B=0;eb(502,h|0,141316,18);j=B;B=0;if(j&1){j=Rb()|0;t=Q;Yua(g);u=t;v=j;break}B=0;wa(510,i|0,c|0);j=B;B=0;if(j&1){j=Rb()|0;w=Q;x=j;y=1}else{B=0;ua(163,m|0,g|0,h|0,638,i|0);j=B;B=0;if(j&1)z=1;else{B=0;eb(503,m|0,1240,229);B=0;z=0}j=Rb()|0;t=Q;Yua(i);w=t;x=j;y=z}Yua(h);Yua(g);if(y){u=w;v=x}else{A=w;C=x;k[f>>2]=27468;k[d>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(d);Qb(C|0)}}else{j=Rb()|0;u=Q;v=j}while(0);zb(m|0);A=u;C=v;k[f>>2]=27468;k[d>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(d);Qb(C|0)}a=Rb()|0;A=Q;C=a;k[f>>2]=27468;k[d>>2]=27488;k[c>>2]=27560;Yua(l);Ava(c);vva(d);Qb(C|0)}while(0);o=q;p=s;vva(d);Qb(p|0);return 0}function Jka(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=k[a+12>>2]|0;d=k[a+16>>2]|0;if(c>>>0<d>>>0)e=c;else{f=0;return f|0}while(1){c=k[e>>2]|0;e=e+4|0;if(!(Ita(k[c+4>>2]|0,b)|0)){g=c;break}if(e>>>0>=d>>>0){f=0;h=5;break}}if((h|0)==5)return f|0;f=k[g+24>>2]|0;return f|0}function Kka(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;d=r;r=r+384|0;e=d+360|0;f=d+356|0;g=d+352|0;h=d+216|0;j=d+200|0;l=d+48|0;m=d+36|0;n=d+64|0;o=d+24|0;p=d+12|0;q=d;s=vY()|0;t=Oka(a,g,0,c)|0;k[a+24>>2]=t;if((k[g>>2]|0)!=1){g=h+56|0;a=h+4|0;k[h>>2]=27524;k[g>>2]=27544;B=0;wa(508,h+56|0,a|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(g);Qb(w|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[g>>2]=27488;B=0;va(448,a|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[a>>2]=27560;x=h+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[h+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,a|0,e|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(e);Yua(x);Ava(a);y=C;z=A;break}Yua(e);B=0;A=Ia(40,h|0,141335,25)|0;C=B;B=0;a:do if(((!(C&1)?(D=Lta(c)|0,B=0,E=Ia(40,A|0,c|0,D|0)|0,D=B,B=0,!(D&1)):0)?(B=0,D=Ia(40,E|0,141051,1)|0,E=B,B=0,!(E&1)):0)?(B=0,Xa(239,D|0,0)|0,D=B,B=0,!(D&1)):0){D=Ab(20)|0;B=0;eb(502,j|0,140006,66);E=B;B=0;do if(!(E&1)){B=0;eb(502,l|0,141093,9);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(j);H=F;I=G;break}B=0;wa(510,m|0,a|0);G=B;B=0;if(G&1){G=Rb()|0;J=Q;K=G;L=1}else{B=0;ua(163,D|0,j|0,l|0,1111,m|0);G=B;B=0;if(G&1)M=1;else{B=0;eb(503,D|0,1240,229);B=0;M=0}G=Rb()|0;F=Q;Yua(m);J=F;K=G;L=M}Yua(l);Yua(j);if(L){H=K;I=J}else{N=K;O=J;break a}}else{G=Rb()|0;H=G;I=Q}while(0);zb(D|0);N=H;O=I}else P=19;while(0);if((P|0)==19){A=Rb()|0;N=A;O=Q}k[h>>2]=27468;k[g>>2]=27488;k[a>>2]=27560;Yua(x);Ava(a);vva(g);R=O;S=N;Qb(S|0)}while(0);v=y;w=z;vva(g);Qb(w|0)}if(s){uY()|0;T=k[f>>2]|0;U=(T|0)!=0;V=U&1;i[b>>0]=V;r=d;return}if((ata(f,4,1,t)|0)==1){uY()|0;T=k[f>>2]|0;U=(T|0)!=0;V=U&1;i[b>>0]=V;r=d;return}d=n+56|0;V=n+4|0;k[n>>2]=27524;k[d>>2]=27544;B=0;wa(508,n+56|0,V|0);b=B;B=0;if(b&1){b=Rb()|0;W=Q;X=b;vva(d);Qb(X|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[d>>2]=27488;B=0;va(448,V|0);b=B;B=0;do if(b&1){U=Rb()|0;Y=Q;Z=U}else{k[V>>2]=27560;U=n+36|0;k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;k[U+12>>2]=0;k[n+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,V|0,e|0);T=B;B=0;if(T&1){T=Rb()|0;f=Q;Yua(e);Yua(U);Ava(V);Y=f;Z=T;break}Yua(e);B=0;T=Ia(40,n|0,140838,23)|0;f=B;B=0;b:do if(!(f&1)?(B=0,Xa(239,T|0,0)|0,t=B,B=0,!(t&1)):0){t=Ab(20)|0;B=0;eb(502,o|0,140006,66);s=B;B=0;do if(!(s&1)){B=0;eb(502,p|0,141093,9);w=B;B=0;if(w&1){w=Rb()|0;g=Q;Yua(o);_=w;$=g;break}B=0;wa(510,q|0,V|0);g=B;B=0;if(g&1){g=Rb()|0;aa=1;ba=Q;ca=g}else{B=0;ua(163,t|0,o|0,p|0,1115,q|0);g=B;B=0;if(g&1)da=1;else{B=0;eb(503,t|0,1240,229);B=0;da=0}g=Rb()|0;w=Q;Yua(q);aa=da;ba=w;ca=g}Yua(p);Yua(o);if(aa){_=ca;$=ba}else{ea=ba;fa=ca;break b}}else{g=Rb()|0;_=g;$=Q}while(0);zb(t|0);ea=$;fa=_}else P=44;while(0);if((P|0)==44){T=Rb()|0;ea=Q;fa=T}k[n>>2]=27468;k[d>>2]=27488;k[V>>2]=27560;Yua(U);Ava(V);vva(d);R=ea;S=fa;Qb(S|0)}while(0);W=Y;X=Z;vva(d);Qb(X|0)}function Lka(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;d=r;r=r+208|0;e=d+192|0;f=d+176|0;g=d+40|0;h=d+24|0;j=d+12|0;l=d;k[f>>2]=c;if((b|0)<=0){r=d;return}c=a+12|0;m=a+16|0;a=0;while(1){n=(k[f>>2]|0)+(4-1)&~(4-1);o=k[n>>2]|0;k[f>>2]=n+4;if(Mta(o,140083,3)|0){p=o;break}n=k[c>>2]|0;q=k[m>>2]|0;a:do if(n>>>0<q>>>0){s=n;while(1){t=k[s>>2]|0;u=t+4|0;v=k[u>>2]|0;if((Ita(v,o)|0)==0?(i[t>>0]|0)==0:0){w=t;x=u;y=v;z=t;A=s;break}s=s+4|0;if(s>>>0>=q>>>0)break a}if(y)Tqa(y);k[x>>2]=0;s=k[w+24>>2]|0;if(s)Tqa(s);Sqa(z);s=A+4|0;t=(k[m>>2]|0)-s|0;UEa(A|0,s|0,t|0)|0;s=A+(t>>2<<2)|0;t=k[m>>2]|0;if((t|0)!=(s|0))k[m>>2]=t+(~((t+-4-s|0)>>>2)<<2)}while(0);a=a+1|0;if((a|0)>=(b|0)){C=3;break}}if((C|0)==3){r=d;return}d=g+56|0;C=g+4|0;k[g>>2]=27524;k[d>>2]=27544;B=0;wa(508,g+56|0,C|0);b=B;B=0;if(b&1){b=Rb()|0;D=Q;E=b;vva(d);Qb(E|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[d>>2]=27488;B=0;va(448,C|0);b=B;B=0;do if(b&1){a=Rb()|0;F=Q;G=a}else{k[C>>2]=27560;a=g+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[g+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,C|0,e|0);m=B;B=0;if(m&1){m=Rb()|0;A=Q;Yua(e);Yua(a);Ava(C);F=A;G=m;break}Yua(e);B=0;m=Ia(40,g|0,141361,43)|0;A=B;B=0;if(((!(A&1)?(A=Lta(p)|0,B=0,z=Ia(40,m|0,p|0,A|0)|0,A=B,B=0,!(A&1)):0)?(B=0,A=Ia(40,z|0,141170,1)|0,z=B,B=0,!(z&1)):0)?(B=0,Xa(239,A|0,0)|0,A=B,B=0,!(A&1)):0){A=Ab(20)|0;B=0;eb(502,h|0,140006,66);z=B;B=0;do if(!(z&1)){B=0;eb(502,j|0,141405,10);m=B;B=0;if(m&1){m=Rb()|0;w=Q;Yua(h);H=w;I=m;break}B=0;wa(510,l|0,C|0);m=B;B=0;if(m&1){m=Rb()|0;J=m;K=Q;L=1}else{B=0;ua(163,A|0,h|0,j|0,756,l|0);m=B;B=0;if(m&1)M=1;else{B=0;eb(503,A|0,1240,229);B=0;M=0}m=Rb()|0;w=Q;Yua(l);J=m;K=w;L=M}Yua(j);Yua(h);if(L){H=K;I=J}else{N=J;O=K;k[g>>2]=27468;k[d>>2]=27488;k[C>>2]=27560;Yua(a);Ava(C);vva(d);Qb(N|0)}}else{w=Rb()|0;H=Q;I=w}while(0);zb(A|0);N=I;O=H;k[g>>2]=27468;k[d>>2]=27488;k[C>>2]=27560;Yua(a);Ava(C);vva(d);Qb(N|0)}z=Rb()|0;N=z;O=Q;k[g>>2]=27468;k[d>>2]=27488;k[C>>2]=27560;Yua(a);Ava(C);vva(d);Qb(N|0)}while(0);D=F;E=G;vva(d);Qb(E|0)}function Mka(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if(!b)return;d=k[a+12>>2]|0;e=k[a+16>>2]|0;a:do if(d>>>0<e>>>0){a=d;while(1){f=k[a>>2]|0;if((Ita(k[f+4>>2]|0,c)|0)==0?(i[f>>0]|0)!=0:0)break;a=a+4|0;if(a>>>0>=e>>>0)break a}return}while(0);Tqa(b);return}function Nka(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;d=k[b>>2]|0;if(c){if((c|0)>0){a=0;do{e=k[d+(a<<2)>>2]|0;if(e)Tqa(e);a=a+1|0}while((a|0)!=(c|0))}if(d)Tqa(d)}k[b>>2]=0;return}function Oka(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0;e=r;r=r+1072|0;f=e+1056|0;g=e+1052|0;h=e+1036|0;j=e+1032|0;l=e+1016|0;m=e+1e3|0;n=e+864|0;o=e+1040|0;p=e+1020|0;q=e+1004|0;s=e+704|0;t=e+852|0;u=e+840|0;v=e+688|0;w=e+552|0;x=e+268|0;y=e+256|0;z=e+108|0;A=e+416|0;C=e+96|0;D=e+84|0;E=e+72|0;F=e+280|0;G=e+60|0;H=e+48|0;I=e+36|0;J=e+120|0;K=e+24|0;L=e+12|0;M=e;k[g>>2]=0;k[m>>2]=0;a:do if((vY()|0)==0?(N=a+24|0,dta(k[N>>2]|0,0,0)|0,(ata(h,4,1,k[N>>2]|0)|0)!=0):0){while(1){O=k[h>>2]|0;if((O+-3|0)>>>0>77){P=O;R=4;break}S=Rqa(O+1|0)|0;i[S+O>>0]=0;if(!(ata(S,O,1,k[N>>2]|0)|0)){T=S;R=29;break}if(Mta(S,140083,3)|0){U=S;R=31;break}O=(Ita(S,d)|0)==0;V=k[N>>2]|0;if(O){W=S;X=V;R=56;break}if((ata(j,4,1,V)|0)!=1){R=107;break}dta(k[N>>2]|0,k[j>>2]|0,1)|0;Tqa(S);if(!(ata(h,4,1,k[N>>2]|0)|0))break a}if((R|0)==4){S=n+56|0;V=n+4|0;k[n>>2]=27524;k[S>>2]=27544;B=0;wa(508,n+56|0,V|0);O=B;B=0;if(O&1){O=Rb()|0;Y=Q;Z=O;vva(S);Qb(Z|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[S>>2]=27488;B=0;va(448,V|0);O=B;B=0;do if(O&1){_=Rb()|0;$=Q;aa=_}else{k[V>>2]=27560;_=n+36|0;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[_+12>>2]=0;k[n+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,V|0,f|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;Yua(f);Yua(_);Ava(V);$=ca;aa=ba;break}Yua(f);B=0;ba=Ia(40,n|0,139946,59)|0;ca=B;B=0;b:do if((!(ca&1)?(B=0,da=Xa(242,ba|0,P|0)|0,ea=B,B=0,!(ea&1)):0)?(B=0,Xa(239,da|0,0)|0,da=B,B=0,!(da&1)):0){da=Ab(20)|0;B=0;eb(502,o|0,140006,66);ea=B;B=0;do if(!(ea&1)){B=0;eb(502,p|0,141416,20);fa=B;B=0;if(fa&1){fa=Rb()|0;ga=Q;Yua(o);ha=ga;ia=fa;break}B=0;wa(510,q|0,V|0);fa=B;B=0;if(fa&1){fa=Rb()|0;ja=Q;ka=fa;la=1}else{B=0;ua(163,da|0,o|0,p|0,2090,q|0);fa=B;B=0;if(fa&1)ma=1;else{B=0;eb(503,da|0,1240,229);B=0;ma=0}fa=Rb()|0;ga=Q;Yua(q);ja=ga;ka=fa;la=ma}Yua(p);Yua(o);if(la){ha=ja;ia=ka}else{na=ja;oa=ka;break b}}else{fa=Rb()|0;ha=Q;ia=fa}while(0);zb(da|0);na=ha;oa=ia}else R=20;while(0);if((R|0)==20){ba=Rb()|0;na=Q;oa=ba}k[n>>2]=27468;k[S>>2]=27488;k[V>>2]=27560;Yua(_);Ava(V);vva(S);pa=na;qa=oa;Qb(qa|0)}while(0);Y=$;Z=aa;vva(S);Qb(Z|0)}else if((R|0)==29){k[g>>2]=0;Tqa(T);break}else if((R|0)==31){V=s+56|0;O=s+4|0;k[s>>2]=27524;k[V>>2]=27544;B=0;wa(508,s+56|0,O|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ra=Q;sa=ba;vva(V);Qb(sa|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[V>>2]=27488;B=0;va(448,O|0);ba=B;B=0;do if(ba&1){ca=Rb()|0;ta=Q;xa=ca}else{k[O>>2]=27560;ca=s+36|0;k[ca>>2]=0;k[ca+4>>2]=0;k[ca+8>>2]=0;k[ca+12>>2]=0;k[s+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,O|0,f|0);ea=B;B=0;if(ea&1){ea=Rb()|0;fa=Q;Yua(f);Yua(ca);Ava(O);ta=fa;xa=ea;break}Yua(f);B=0;ea=Ia(40,s|0,140087,67)|0;fa=B;B=0;c:do if((!(fa&1)?(ga=Lta(U)|0,B=0,ya=Ia(40,ea|0,U|0,ga|0)|0,ga=B,B=0,!(ga&1)):0)?(B=0,Xa(239,ya|0,0)|0,ya=B,B=0,!(ya&1)):0){ya=Ab(20)|0;B=0;eb(502,t|0,140006,66);ga=B;B=0;do if(!(ga&1)){B=0;eb(502,u|0,141416,20);za=B;B=0;if(za&1){za=Rb()|0;Aa=Q;Yua(t);Ba=Aa;Ca=za;break}B=0;wa(510,v|0,O|0);za=B;B=0;if(za&1){za=Rb()|0;Da=1;Ea=Q;Fa=za}else{B=0;ua(163,ya|0,t|0,u|0,2105,v|0);za=B;B=0;if(za&1)Ga=1;else{B=0;eb(503,ya|0,1240,229);B=0;Ga=0}za=Rb()|0;Aa=Q;Yua(v);Da=Ga;Ea=Aa;Fa=za}Yua(u);Yua(t);if(Da){Ba=Ea;Ca=Fa}else{Ha=Ea;Ja=Fa;break c}}else{za=Rb()|0;Ba=Q;Ca=za}while(0);zb(ya|0);Ha=Ba;Ja=Ca}else R=47;while(0);if((R|0)==47){ea=Rb()|0;Ha=Q;Ja=ea}k[s>>2]=27468;k[V>>2]=27488;k[O>>2]=27560;Yua(ca);Ava(O);vva(V);pa=Ha;qa=Ja;Qb(qa|0)}while(0);ra=ta;sa=xa;vva(V);Qb(sa|0)}else if((R|0)==56){dta(X,4,1)|0;if((ata(l,4,1,k[N>>2]|0)|0)!=1){O=w+56|0;ba=w+4|0;k[w>>2]=27524;k[O>>2]=27544;B=0;wa(508,w+56|0,ba|0);S=B;B=0;if(S&1){S=Rb()|0;Ka=Q;La=S;vva(O);Qb(La|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[O>>2]=27488;B=0;va(448,ba|0);S=B;B=0;do if(S&1){ea=Rb()|0;Ma=Q;Na=ea}else{k[ba>>2]=27560;ea=w+36|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[w+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,ba|0,f|0);fa=B;B=0;if(fa&1){fa=Rb()|0;_=Q;Yua(f);Yua(ea);Ava(ba);Ma=_;Na=fa;break}Yua(f);B=0;fa=Ia(40,w|0,141437,26)|0;_=B;B=0;d:do if(!(_&1)?(B=0,Xa(239,fa|0,0)|0,ga=B,B=0,!(ga&1)):0){ga=Ab(20)|0;B=0;eb(502,x|0,140006,66);da=B;B=0;do if(!(da&1)){B=0;eb(502,y|0,141416,20);za=B;B=0;if(za&1){za=Rb()|0;Aa=Q;Yua(x);Oa=Aa;Pa=za;break}B=0;wa(510,z|0,ba|0);za=B;B=0;if(za&1){za=Rb()|0;Qa=1;Ra=Q;Sa=za}else{B=0;ua(163,ga|0,x|0,y|0,2112,z|0);za=B;B=0;if(za&1)Ta=1;else{B=0;eb(503,ga|0,1240,229);B=0;Ta=0}za=Rb()|0;Aa=Q;Yua(z);Qa=Ta;Ra=Aa;Sa=za}Yua(y);Yua(x);if(Qa){Oa=Ra;Pa=Sa}else{Ua=Ra;Va=Sa;break d}}else{za=Rb()|0;Oa=Q;Pa=za}while(0);zb(ga|0);Ua=Oa;Va=Pa}else R=72;while(0);if((R|0)==72){fa=Rb()|0;Ua=Q;Va=fa}k[w>>2]=27468;k[O>>2]=27488;k[ba>>2]=27560;Yua(ea);Ava(ba);vva(O);pa=Ua;qa=Va;Qb(qa|0)}while(0);Ka=Ma;La=Na;vva(O);Qb(La|0)}if(((k[l>>2]|0)+-5|0)>>>0<3?(ata(m,4,1,k[N>>2]|0)|0)!=1:0){ba=A+56|0;S=A+4|0;k[A>>2]=27524;k[ba>>2]=27544;B=0;wa(508,A+56|0,S|0);V=B;B=0;if(V&1){V=Rb()|0;Wa=Q;Ya=V;vva(ba);Qb(Ya|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[ba>>2]=27488;B=0;va(448,S|0);V=B;B=0;do if(V&1){fa=Rb()|0;Za=Q;_a=fa}else{k[S>>2]=27560;fa=A+36|0;k[fa>>2]=0;k[fa+4>>2]=0;k[fa+8>>2]=0;k[fa+12>>2]=0;k[A+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,S|0,f|0);_=B;B=0;if(_&1){_=Rb()|0;ca=Q;Yua(f);Yua(fa);Ava(S);Za=ca;_a=_;break}Yua(f);B=0;_=Ia(40,A|0,141464,26)|0;ca=B;B=0;e:do if(!(ca&1)?(B=0,Xa(239,_|0,0)|0,da=B,B=0,!(da&1)):0){da=Ab(20)|0;B=0;eb(502,C|0,140006,66);ya=B;B=0;do if(!(ya&1)){B=0;eb(502,D|0,141416,20);za=B;B=0;if(za&1){za=Rb()|0;Aa=Q;Yua(C);$a=Aa;ab=za;break}B=0;wa(510,E|0,S|0);za=B;B=0;if(za&1){za=Rb()|0;bb=Q;cb=za;db=1}else{B=0;ua(163,da|0,C|0,D|0,2116,E|0);za=B;B=0;if(za&1)fb=1;else{B=0;eb(503,da|0,1240,229);B=0;fb=0}za=Rb()|0;Aa=Q;Yua(E);bb=Aa;cb=za;db=fb}Yua(D);Yua(C);if(db){$a=bb;ab=cb}else{gb=bb;hb=cb;break e}}else{za=Rb()|0;$a=Q;ab=za}while(0);zb(da|0);gb=$a;hb=ab}else R=97;while(0);if((R|0)==97){_=Rb()|0;gb=Q;hb=_}k[A>>2]=27468;k[ba>>2]=27488;k[S>>2]=27560;Yua(fa);Ava(S);vva(ba);pa=gb;qa=hb;Qb(qa|0)}while(0);Wa=Za;Ya=_a;vva(ba);Qb(Ya|0)}k[g>>2]=1;Tqa(W);break}else if((R|0)==107){S=F+56|0;V=F+4|0;k[F>>2]=27524;k[S>>2]=27544;B=0;wa(508,F+56|0,V|0);N=B;B=0;if(N&1){N=Rb()|0;ib=Q;jb=N;vva(S);Qb(jb|0)}k[F+128>>2]=0;k[F+132>>2]=-1;k[F>>2]=27468;k[S>>2]=27488;B=0;va(448,V|0);N=B;B=0;do if(N&1){O=Rb()|0;kb=Q;lb=O}else{k[V>>2]=27560;O=F+36|0;k[O>>2]=0;k[O+4>>2]=0;k[O+8>>2]=0;k[O+12>>2]=0;k[F+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,V|0,f|0);_=B;B=0;if(_&1){_=Rb()|0;ca=Q;Yua(f);Yua(O);Ava(V);kb=ca;lb=_;break}Yua(f);B=0;_=Ia(40,F|0,140162,28)|0;ca=B;B=0;f:do if(!(ca&1)?(B=0,Xa(239,_|0,0)|0,ea=B,B=0,!(ea&1)):0){ea=Ab(20)|0;B=0;eb(502,G|0,140006,66);ya=B;B=0;do if(!(ya&1)){B=0;eb(502,H|0,141416,20);ga=B;B=0;if(ga&1){ga=Rb()|0;za=Q;Yua(G);mb=za;nb=ga;break}B=0;wa(510,I|0,V|0);ga=B;B=0;if(ga&1){ga=Rb()|0;ob=1;pb=Q;qb=ga}else{B=0;ua(163,ea|0,G|0,H|0,2124,I|0);ga=B;B=0;if(ga&1)rb=1;else{B=0;eb(503,ea|0,1240,229);B=0;rb=0}ga=Rb()|0;za=Q;Yua(I);ob=rb;pb=za;qb=ga}Yua(H);Yua(G);if(ob){mb=pb;nb=qb}else{sb=pb;tb=qb;break f}}else{ga=Rb()|0;mb=Q;nb=ga}while(0);zb(ea|0);sb=mb;tb=nb}else R=122;while(0);if((R|0)==122){_=Rb()|0;sb=Q;tb=_}k[F>>2]=27468;k[S>>2]=27488;k[V>>2]=27560;Yua(O);Ava(V);vva(S);pa=sb;qa=tb;Qb(qa|0)}while(0);ib=kb;jb=lb;vva(S);Qb(jb|0)}}while(0);uY()|0;if(k[g>>2]|0){uY()|0;uY()|0;k[b>>2]=k[l>>2];if(!c){ub=a+24|0;vb=k[ub>>2]|0;r=e;return vb|0}k[c>>2]=k[m>>2];ub=a+24|0;vb=k[ub>>2]|0;r=e;return vb|0}vb=J+56|0;e=J+4|0;k[J>>2]=27524;k[vb>>2]=27544;B=0;wa(508,J+56|0,e|0);ub=B;B=0;if(ub&1){ub=Rb()|0;wb=Q;xb=ub;vva(vb);Qb(xb|0)}k[J+128>>2]=0;k[J+132>>2]=-1;k[J>>2]=27468;k[vb>>2]=27488;B=0;va(448,e|0);ub=B;B=0;do if(ub&1){a=Rb()|0;yb=Q;Bb=a}else{k[e>>2]=27560;a=J+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[J+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,e|0,f|0);m=B;B=0;if(m&1){m=Rb()|0;c=Q;Yua(f);Yua(a);Ava(e);yb=c;Bb=m;break}Yua(f);B=0;m=Ia(40,J|0,141491,31)|0;c=B;B=0;g:do if(((!(c&1)?(l=Lta(d)|0,B=0,b=Ia(40,m|0,d|0,l|0)|0,l=B,B=0,!(l&1)):0)?(B=0,l=Ia(40,b|0,141523,16)|0,b=B,B=0,!(b&1)):0)?(B=0,Xa(239,l|0,0)|0,l=B,B=0,!(l&1)):0){l=Ab(20)|0;B=0;eb(502,K|0,140006,66);b=B;B=0;do if(!(b&1)){B=0;eb(502,L|0,141416,20);g=B;B=0;if(g&1){g=Rb()|0;jb=Q;Yua(K);Cb=jb;Db=g;break}B=0;wa(510,M|0,e|0);g=B;B=0;if(g&1){g=Rb()|0;Eb=1;Fb=Q;Gb=g}else{B=0;ua(163,l|0,K|0,L|0,2132,M|0);g=B;B=0;if(g&1)Hb=1;else{B=0;eb(503,l|0,1240,229);B=0;Hb=0}g=Rb()|0;jb=Q;Yua(M);Eb=Hb;Fb=jb;Gb=g}Yua(L);Yua(K);if(Eb){Cb=Fb;Db=Gb}else{Ib=Fb;Jb=Gb;break g}}else{g=Rb()|0;Cb=Q;Db=g}while(0);zb(l|0);Ib=Cb;Jb=Db}else R=149;while(0);if((R|0)==149){m=Rb()|0;Ib=Q;Jb=m}k[J>>2]=27468;k[vb>>2]=27488;k[e>>2]=27560;Yua(a);Ava(e);vva(vb);pa=Ib;qa=Jb;Qb(qa|0)}while(0);wb=yb;xb=Bb;vva(vb);Qb(xb|0);return 0}function Pka(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0.0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0;d=r;r=r+384|0;e=d+364|0;f=d;g=d+360|0;h=d+224|0;i=d+208|0;j=d+56|0;l=d+44|0;m=d+72|0;n=d+32|0;o=d+20|0;q=d+8|0;s=vY()|0;t=Oka(a,g,0,c)|0;k[a+24>>2]=t;if((k[g>>2]|0)!=3){g=h+56|0;a=h+4|0;k[h>>2]=27524;k[g>>2]=27544;B=0;wa(508,h+56|0,a|0);u=B;B=0;if(u&1){u=Rb()|0;v=Q;w=u;vva(g);Qb(w|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[g>>2]=27488;B=0;va(448,a|0);u=B;B=0;do if(u&1){x=Rb()|0;y=Q;z=x}else{k[a>>2]=27560;x=h+36|0;k[x>>2]=0;k[x+4>>2]=0;k[x+8>>2]=0;k[x+12>>2]=0;k[h+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,a|0,e|0);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(e);Yua(x);Ava(a);y=C;z=A;break}Yua(e);B=0;A=Ia(40,h|0,141540,28)|0;C=B;B=0;a:do if(((!(C&1)?(D=Lta(c)|0,B=0,E=Ia(40,A|0,c|0,D|0)|0,D=B,B=0,!(D&1)):0)?(B=0,D=Ia(40,E|0,141051,1)|0,E=B,B=0,!(E&1)):0)?(B=0,Xa(239,D|0,0)|0,D=B,B=0,!(D&1)):0){D=Ab(20)|0;B=0;eb(502,i|0,140006,66);E=B;B=0;do if(!(E&1)){B=0;eb(502,j|0,141093,9);F=B;B=0;if(F&1){F=Rb()|0;G=Q;Yua(i);H=F;I=G;break}B=0;wa(510,l|0,a|0);G=B;B=0;if(G&1){G=Rb()|0;J=Q;K=G;L=1}else{B=0;ua(163,D|0,i|0,j|0,1162,l|0);G=B;B=0;if(G&1)M=1;else{B=0;eb(503,D|0,1240,229);B=0;M=0}G=Rb()|0;F=Q;Yua(l);J=F;K=G;L=M}Yua(j);Yua(i);if(L){H=K;I=J}else{N=K;O=J;break a}}else{G=Rb()|0;H=G;I=Q}while(0);zb(D|0);N=H;O=I}else P=19;while(0);if((P|0)==19){A=Rb()|0;N=A;O=Q}k[h>>2]=27468;k[g>>2]=27488;k[a>>2]=27560;Yua(x);Ava(a);vva(g);R=O;S=N;Qb(S|0)}while(0);v=y;w=z;vva(g);Qb(w|0)}if(s){uY()|0;T=+p[f>>3];p[b>>3]=T;r=d;return}if((ata(f,8,1,t)|0)==1){uY()|0;T=+p[f>>3];p[b>>3]=T;r=d;return}d=m+56|0;b=m+4|0;k[m>>2]=27524;k[d>>2]=27544;B=0;wa(508,m+56|0,b|0);f=B;B=0;if(f&1){f=Rb()|0;U=Q;V=f;vva(d);Qb(V|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);f=B;B=0;do if(f&1){t=Rb()|0;W=Q;X=t}else{k[b>>2]=27560;t=m+36|0;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;k[t+12>>2]=0;k[m+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);s=B;B=0;if(s&1){s=Rb()|0;w=Q;Yua(e);Yua(t);Ava(b);W=w;X=s;break}Yua(e);B=0;s=Ia(40,m|0,140886,22)|0;w=B;B=0;b:do if(!(w&1)?(B=0,Xa(239,s|0,0)|0,g=B,B=0,!(g&1)):0){g=Ab(20)|0;B=0;eb(502,n|0,140006,66);z=B;B=0;do if(!(z&1)){B=0;eb(502,o|0,141093,9);y=B;B=0;if(y&1){y=Rb()|0;v=Q;Yua(n);Y=y;Z=v;break}B=0;wa(510,q|0,b|0);v=B;B=0;if(v&1){v=Rb()|0;_=1;$=Q;aa=v}else{B=0;ua(163,g|0,n|0,o|0,1166,q|0);v=B;B=0;if(v&1)ba=1;else{B=0;eb(503,g|0,1240,229);B=0;ba=0}v=Rb()|0;y=Q;Yua(q);_=ba;$=y;aa=v}Yua(o);Yua(n);if(_){Y=aa;Z=$}else{ca=$;da=aa;break b}}else{v=Rb()|0;Y=v;Z=Q}while(0);zb(g|0);ca=Z;da=Y}else P=44;while(0);if((P|0)==44){s=Rb()|0;ca=Q;da=s}k[m>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(t);Ava(b);vva(d);R=ca;S=da;Qb(S|0)}while(0);U=W;V=X;vva(d);Qb(V|0)}function Qka(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0;f=r;r=r+720|0;g=f+704|0;h=f+700|0;i=f+684|0;j=f+680|0;l=f+520|0;m=f+688|0;n=f+668|0;o=f+656|0;q=f+384|0;s=f+368|0;t=f+84|0;u=f+72|0;v=f+232|0;w=f+60|0;x=f+48|0;y=f+36|0;z=f+96|0;A=f+24|0;C=f+12|0;D=f;E=k[a+12>>2]|0;F=k[a+16>>2]|0;a:do if(E>>>0<F>>>0){G=E;while(1){H=k[G>>2]|0;G=G+4|0;if(!(Ita(k[H+4>>2]|0,e)|0)){I=H;break}if(G>>>0>=F>>>0)break a}k[b>>2]=k[I+24>>2];if(c)k[c>>2]=k[I+8>>2];if(!d){r=f;return}k[d>>2]=k[I+12>>2];r=f;return}while(0);k[j>>2]=0;I=vY()|0;F=Oka(a,j,0,e)|0;E=a+24|0;k[E>>2]=F;a=k[j>>2]|0;if((a+-5|0)>>>0>=3){j=l+56|0;G=l+4|0;k[l>>2]=27524;k[j>>2]=27544;B=0;wa(508,l+56|0,G|0);H=B;B=0;if(H&1){H=Rb()|0;J=Q;K=H;vva(j);Qb(K|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[j>>2]=27488;B=0;va(448,G|0);H=B;B=0;do if(H&1){L=Rb()|0;M=Q;N=L}else{k[G>>2]=27560;L=l+36|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;k[l+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,G|0,g|0);O=B;B=0;if(O&1){O=Rb()|0;P=Q;Yua(g);Yua(L);Ava(G);M=P;N=O;break}Yua(g);B=0;O=Ia(40,l|0,141103,55)|0;P=B;B=0;b:do if((((((!(P&1)?(R=Lta(e)|0,B=0,S=Ia(40,O|0,e|0,R|0)|0,R=B,B=0,!(R&1)):0)?(B=0,R=Ia(40,S|0,141051,1)|0,S=B,B=0,!(S&1)):0)?(B=0,S=Ia(40,R|0,141159,10)|0,R=B,B=0,!(R&1)):0)?(B=0,R=Xa(242,S|0,a|0)|0,S=B,B=0,!(S&1)):0)?(B=0,S=Ia(40,R|0,141170,1)|0,R=B,B=0,!(R&1)):0)?(B=0,Xa(239,S|0,0)|0,S=B,B=0,!(S&1)):0){S=Ab(20)|0;B=0;eb(502,m|0,140006,66);R=B;B=0;do if(!(R&1)){B=0;eb(502,n|0,141093,9);T=B;B=0;if(T&1){T=Rb()|0;U=Q;Yua(m);V=U;W=T;break}B=0;wa(510,o|0,G|0);T=B;B=0;if(T&1){T=Rb()|0;X=Q;Y=T;Z=1}else{B=0;ua(163,S|0,m|0,n|0,1309,o|0);T=B;B=0;if(T&1)_=1;else{B=0;eb(503,S|0,1240,229);B=0;_=0}T=Rb()|0;U=Q;Yua(o);X=U;Y=T;Z=_}Yua(n);Yua(m);if(Z){V=X;W=Y}else{$=X;aa=Y;break b}}else{T=Rb()|0;V=Q;W=T}while(0);zb(S|0);$=V;aa=W}else ba=29;while(0);if((ba|0)==29){O=Rb()|0;$=Q;aa=O}k[l>>2]=27468;k[j>>2]=27488;k[G>>2]=27560;Yua(L);Ava(G);vva(j);ca=$;da=aa;Qb(da|0)}while(0);J=M;K=N;vva(j);Qb(K|0)}K=(I|0)==0;if(K){if((ata(h,4,1,F)|0)!=1){F=q+56|0;I=q+4|0;k[q>>2]=27524;k[F>>2]=27544;B=0;wa(508,q+56|0,I|0);j=B;B=0;if(j&1){j=Rb()|0;ea=Q;fa=j;vva(F);Qb(fa|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[F>>2]=27488;B=0;va(448,I|0);j=B;B=0;do if(j&1){N=Rb()|0;ga=Q;ha=N}else{k[I>>2]=27560;N=q+36|0;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;k[q+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,I|0,g|0);M=B;B=0;if(M&1){M=Rb()|0;J=Q;Yua(g);Yua(N);Ava(I);ga=J;ha=M;break}Yua(g);B=0;M=Ia(40,q|0,141172,41)|0;J=B;B=0;c:do if(!(J&1)?(B=0,Xa(239,M|0,0)|0,aa=B,B=0,!(aa&1)):0){aa=Ab(20)|0;B=0;eb(502,s|0,140006,66);$=B;B=0;do if(!($&1)){B=0;eb(502,t|0,141093,9);G=B;B=0;if(G&1){G=Rb()|0;l=Q;Yua(s);ia=G;ja=l;break}B=0;wa(510,u|0,I|0);l=B;B=0;if(l&1){l=Rb()|0;ka=1;la=Q;na=l}else{B=0;ua(163,aa|0,s|0,t|0,1316,u|0);l=B;B=0;if(l&1)oa=1;else{B=0;eb(503,aa|0,1240,229);B=0;oa=0}l=Rb()|0;G=Q;Yua(u);ka=oa;la=G;na=l}Yua(t);Yua(s);if(ka){ia=na;ja=la}else{pa=la;qa=na;break c}}else{l=Rb()|0;ia=l;ja=Q}while(0);zb(aa|0);pa=ja;qa=ia}else ba=54;while(0);if((ba|0)==54){M=Rb()|0;pa=Q;qa=M}k[q>>2]=27468;k[F>>2]=27488;k[I>>2]=27560;Yua(N);Ava(I);vva(F);ca=pa;da=qa;Qb(da|0)}while(0);ea=ga;fa=ha;vva(F);Qb(fa|0)}uY()|0;if((ata(i,4,1,k[E>>2]|0)|0)!=1){fa=v+56|0;F=v+4|0;k[v>>2]=27524;k[fa>>2]=27544;B=0;wa(508,v+56|0,F|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ra=Q;sa=ha;vva(fa);Qb(sa|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[fa>>2]=27488;B=0;va(448,F|0);ha=B;B=0;do if(ha&1){ga=Rb()|0;ta=Q;xa=ga}else{k[F>>2]=27560;ga=v+36|0;k[ga>>2]=0;k[ga+4>>2]=0;k[ga+8>>2]=0;k[ga+12>>2]=0;k[v+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,F|0,g|0);ea=B;B=0;if(ea&1){ea=Rb()|0;qa=Q;Yua(g);Yua(ga);Ava(F);ta=qa;xa=ea;break}Yua(g);B=0;ea=Ia(40,v|0,141214,44)|0;qa=B;B=0;d:do if(!(qa&1)?(B=0,Xa(239,ea|0,0)|0,pa=B,B=0,!(pa&1)):0){pa=Ab(20)|0;B=0;eb(502,w|0,140006,66);I=B;B=0;do if(!(I&1)){B=0;eb(502,x|0,141093,9);q=B;B=0;if(q&1){q=Rb()|0;ia=Q;Yua(w);ya=q;za=ia;break}B=0;wa(510,y|0,F|0);ia=B;B=0;if(ia&1){ia=Rb()|0;Aa=1;Ba=Q;Ca=ia}else{B=0;ua(163,pa|0,w|0,x|0,1321,y|0);ia=B;B=0;if(ia&1)Da=1;else{B=0;eb(503,pa|0,1240,229);B=0;Da=0}ia=Rb()|0;q=Q;Yua(y);Aa=Da;Ba=q;Ca=ia}Yua(x);Yua(w);if(Aa){ya=Ca;za=Ba}else{Ea=Ba;Fa=Ca;break d}}else{ia=Rb()|0;ya=ia;za=Q}while(0);zb(pa|0);Ea=za;Fa=ya}else ba=78;while(0);if((ba|0)==78){ea=Rb()|0;Ea=Q;Fa=ea}k[v>>2]=27468;k[fa>>2]=27488;k[F>>2]=27560;Yua(ga);Ava(F);vva(fa);ca=Ea;da=Fa;Qb(da|0)}while(0);ra=ta;sa=xa;vva(fa);Qb(sa|0)}}else uY()|0;uY()|0;sa=k[h>>2]|0;fa=k[i>>2]|0;xa=ma(fa,sa)|0;if(!xa)k[b>>2]=0;else{ta=Rqa(xa>>>0>536870911?-1:xa<<3)|0;do if(K){xa=ma(sa<<3,fa)|0;if((ata(ta,xa,1,k[E>>2]|0)|0)==1)break;xa=z+56|0;ra=z+4|0;k[z>>2]=27524;k[xa>>2]=27544;B=0;wa(508,z+56|0,ra|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ga=Q;Ha=Fa;vva(xa);Qb(Ha|0)}k[z+128>>2]=0;k[z+132>>2]=-1;k[z>>2]=27468;k[xa>>2]=27488;B=0;va(448,ra|0);Fa=B;B=0;do if(Fa&1){Ea=Rb()|0;Ja=Q;Ka=Ea}else{k[ra>>2]=27560;Ea=z+36|0;k[Ea>>2]=0;k[Ea+4>>2]=0;k[Ea+8>>2]=0;k[Ea+12>>2]=0;k[z+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,ra|0,g|0);F=B;B=0;if(F&1){F=Rb()|0;v=Q;Yua(g);Yua(Ea);Ava(ra);Ja=v;Ka=F;break}Yua(g);B=0;F=Ia(40,z|0,141259,22)|0;v=B;B=0;e:do if(!(v&1)?(B=0,Xa(239,F|0,0)|0,ya=B,B=0,!(ya&1)):0){ya=Ab(20)|0;B=0;eb(502,A|0,140006,66);za=B;B=0;do if(!(za&1)){B=0;eb(502,C|0,141093,9);Ca=B;B=0;if(Ca&1){Ca=Rb()|0;Ba=Q;Yua(A);La=Ca;Ma=Ba;break}B=0;wa(510,D|0,ra|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;Na=1;Oa=Q;Pa=Ba}else{B=0;ua(163,ya|0,A|0,C|0,1331,D|0);Ba=B;B=0;if(Ba&1)Qa=1;else{B=0;eb(503,ya|0,1240,229);B=0;Qa=0}Ba=Rb()|0;Ca=Q;Yua(D);Na=Qa;Oa=Ca;Pa=Ba}Yua(C);Yua(A);if(Na){La=Pa;Ma=Oa}else{Ra=Oa;Sa=Pa;break e}}else{Ba=Rb()|0;La=Ba;Ma=Q}while(0);zb(ya|0);Ra=Ma;Sa=La}else ba=106;while(0);if((ba|0)==106){F=Rb()|0;Ra=Q;Sa=F}k[z>>2]=27468;k[xa>>2]=27488;k[ra>>2]=27560;Yua(Ea);Ava(ra);vva(xa);ca=Ra;da=Sa;Qb(da|0)}while(0);Ga=Ja;Ha=Ka;vva(xa);Qb(Ha|0)}while(0);uY()|0;Ha=ma(k[i>>2]|0,k[h>>2]|0)|0;Ka=Rqa(Ha>>>0>536870911?-1:Ha<<3)|0;k[b>>2]=Ka;if((Ha|0)>0){b=0;do{p[Ka+(b<<3)>>3]=+p[ta+(b<<3)>>3];b=b+1|0}while((b|0)<(Ha|0))}Tqa(ta)}if(c)k[c>>2]=k[h>>2];if(d)k[d>>2]=k[i>>2];r=f;return}function Rka(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0;g=r;r=r+912|0;h=g+892|0;i=g+888|0;j=g+872|0;l=g+868|0;m=g+852|0;n=g+704|0;o=g+876|0;q=g+856|0;s=g+840|0;t=g+552|0;u=g+688|0;v=g+536|0;w=g+248|0;x=g+400|0;y=g+96|0;z=g+84|0;A=g+72|0;C=g+264|0;D=g+60|0;E=g+48|0;F=g+36|0;G=g+112|0;H=g+24|0;I=g+12|0;J=g;k[i>>2]=0;K=vY()|0;L=Oka(a,m,0,f)|0;M=a+24|0;k[M>>2]=L;if((k[m>>2]|0)!=8){m=n+56|0;a=n+4|0;k[n>>2]=27524;k[m>>2]=27544;B=0;wa(508,n+56|0,a|0);N=B;B=0;if(N&1){N=Rb()|0;O=Q;P=N;vva(m);Qb(P|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[m>>2]=27488;B=0;va(448,a|0);N=B;B=0;do if(N&1){R=Rb()|0;S=Q;T=R}else{k[a>>2]=27560;R=n+36|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[n+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,a|0,h|0);U=B;B=0;if(U&1){U=Rb()|0;V=Q;Yua(h);Yua(R);Ava(a);S=V;T=U;break}Yua(h);B=0;U=Ia(40,n|0,141594,38)|0;V=B;B=0;a:do if(((!(V&1)?(W=Lta(f)|0,B=0,X=Ia(40,U|0,f|0,W|0)|0,W=B,B=0,!(W&1)):0)?(B=0,W=Ia(40,X|0,141051,1)|0,X=B,B=0,!(X&1)):0)?(B=0,Xa(239,W|0,0)|0,W=B,B=0,!(W&1)):0){W=Ab(20)|0;B=0;eb(502,o|0,140006,66);X=B;B=0;do if(!(X&1)){B=0;eb(502,q|0,141093,9);Y=B;B=0;if(Y&1){Y=Rb()|0;Z=Q;Yua(o);_=Z;$=Y;break}B=0;wa(510,s|0,a|0);Y=B;B=0;if(Y&1){Y=Rb()|0;aa=Q;ba=Y;ca=1}else{B=0;ua(163,W|0,o|0,q|0,1365,s|0);Y=B;B=0;if(Y&1)da=1;else{B=0;eb(503,W|0,1240,229);B=0;da=0}Y=Rb()|0;Z=Q;Yua(s);aa=Z;ba=Y;ca=da}Yua(q);Yua(o);if(ca){_=aa;$=ba}else{ea=aa;fa=ba;break a}}else{Y=Rb()|0;_=Q;$=Y}while(0);zb(W|0);ea=_;fa=$}else ga=19;while(0);if((ga|0)==19){U=Rb()|0;ea=Q;fa=U}k[n>>2]=27468;k[m>>2]=27488;k[a>>2]=27560;Yua(R);Ava(a);vva(m);ha=ea;ia=fa;Qb(ia|0)}while(0);O=S;P=T;vva(m);Qb(P|0)}P=(K|0)==0;if(P?(ata(i,4,1,L)|0)!=1:0){L=t+56|0;K=t+4|0;k[t>>2]=27524;k[L>>2]=27544;B=0;wa(508,t+56|0,K|0);m=B;B=0;if(m&1){m=Rb()|0;ja=Q;ka=m;vva(L);Qb(ka|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[L>>2]=27488;B=0;va(448,K|0);m=B;B=0;do if(m&1){T=Rb()|0;la=Q;na=T}else{k[K>>2]=27560;T=t+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[t+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,K|0,h|0);S=B;B=0;if(S&1){S=Rb()|0;O=Q;Yua(h);Yua(T);Ava(K);la=O;na=S;break}Yua(h);B=0;S=Ia(40,t|0,141633,49)|0;O=B;B=0;b:do if(!(O&1)?(B=0,Xa(239,S|0,0)|0,fa=B,B=0,!(fa&1)):0){fa=Ab(20)|0;B=0;eb(502,u|0,140006,66);ea=B;B=0;do if(!(ea&1)){B=0;eb(502,v|0,141093,9);a=B;B=0;if(a&1){a=Rb()|0;n=Q;Yua(u);oa=n;pa=a;break}B=0;wa(510,w|0,K|0);a=B;B=0;if(a&1){a=Rb()|0;qa=1;ra=Q;sa=a}else{B=0;ua(163,fa|0,u|0,v|0,1369,w|0);a=B;B=0;if(a&1)ta=1;else{B=0;eb(503,fa|0,1240,229);B=0;ta=0}a=Rb()|0;n=Q;Yua(w);qa=ta;ra=n;sa=a}Yua(v);Yua(u);if(qa){oa=ra;pa=sa}else{xa=ra;ya=sa;break b}}else{a=Rb()|0;oa=Q;pa=a}while(0);zb(fa|0);xa=oa;ya=pa}else ga=44;while(0);if((ga|0)==44){S=Rb()|0;xa=Q;ya=S}k[t>>2]=27468;k[L>>2]=27488;k[K>>2]=27560;Yua(T);Ava(K);vva(L);ha=xa;ia=ya;Qb(ia|0)}while(0);ja=la;ka=na;vva(L);Qb(ka|0)}uY()|0;ka=k[i>>2]|0;if(!ka){za=0;Aa=0;Ba=0;Ca=0;k[b>>2]=Aa;k[c>>2]=Ba;k[d>>2]=Ca;k[e>>2]=za;r=g;return}L=ka>>>0>1073741823?-1:ka<<2;na=Rqa(L)|0;la=Rqa(L)|0;ja=Rqa(L)|0;if((ka|0)<=0){za=ka;Aa=na;Ba=la;Ca=ja;k[b>>2]=Aa;k[c>>2]=Ba;k[d>>2]=Ca;k[e>>2]=za;r=g;return}L=((ka|0)>1?ka:1)<<2;WEa(na|0,0,L|0)|0;WEa(la|0,0,L|0)|0;WEa(ja|0,0,L|0)|0;L=0;while(1){if(P){if((ata(j,4,1,k[M>>2]|0)|0)!=1){Da=L;ga=57;break}uY()|0;if((ata(l,4,1,k[M>>2]|0)|0)!=1){Ea=L;ga=83;break}}else uY()|0;uY()|0;ka=k[j>>2]|0;ya=k[l>>2]|0;xa=ma(ya,ka)|0;if(!xa){k[na+(L<<2)>>2]=0;Fa=ka;Ga=ya}else{K=Rqa(xa>>>0>536870911?-1:xa<<3)|0;if(P?(xa=ma(ka<<3,ya)|0,(ata(K,xa,1,k[M>>2]|0)|0)!=1):0){ga=113;break}uY()|0;xa=ma(k[l>>2]|0,k[j>>2]|0)|0;ya=Rqa(xa>>>0>536870911?-1:xa<<3)|0;k[na+(L<<2)>>2]=ya;if((xa|0)>0){ka=0;do{p[ya+(ka<<3)>>3]=+p[K+(ka<<3)>>3];ka=ka+1|0}while((ka|0)<(xa|0))}Tqa(K);Fa=k[j>>2]|0;Ga=k[l>>2]|0}k[la+(L<<2)>>2]=Fa;k[ja+(L<<2)>>2]=Ga;L=L+1|0;xa=k[i>>2]|0;if((L|0)>=(xa|0)){za=xa;Aa=na;Ba=la;Ca=ja;ga=141;break}}if((ga|0)==57){ja=x+56|0;la=x+4|0;k[x>>2]=27524;k[ja>>2]=27544;B=0;wa(508,x+56|0,la|0);na=B;B=0;if(na&1){na=Rb()|0;Ha=Q;Ja=na;vva(ja);Qb(Ja|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[ja>>2]=27488;B=0;va(448,la|0);na=B;B=0;do if(na&1){L=Rb()|0;Ka=Q;La=L}else{k[la>>2]=27560;L=x+36|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;k[x+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,la|0,h|0);i=B;B=0;if(i&1){i=Rb()|0;Ga=Q;Yua(h);Yua(L);Ava(la);Ka=Ga;La=i;break}Yua(h);B=0;i=Ia(40,x|0,141683,33)|0;Ga=B;B=0;c:do if(((!(Ga&1)?(B=0,Fa=Xa(242,i|0,Da|0)|0,l=B,B=0,!(l&1)):0)?(B=0,l=Ia(40,Fa|0,141717,25)|0,Fa=B,B=0,!(Fa&1)):0)?(B=0,Xa(239,l|0,0)|0,l=B,B=0,!(l&1)):0){l=Ab(20)|0;B=0;eb(502,y|0,140006,66);Fa=B;B=0;do if(!(Fa&1)){B=0;eb(502,z|0,141093,9);j=B;B=0;if(j&1){j=Rb()|0;M=Q;Yua(y);Ma=M;Na=j;break}B=0;wa(510,A|0,la|0);j=B;B=0;if(j&1){j=Rb()|0;Oa=1;Pa=Q;Qa=j}else{B=0;ua(163,l|0,y|0,z|0,1390,A|0);j=B;B=0;if(j&1)Ra=1;else{B=0;eb(503,l|0,1240,229);B=0;Ra=0}j=Rb()|0;M=Q;Yua(A);Oa=Ra;Pa=M;Qa=j}Yua(z);Yua(y);if(Oa){Ma=Pa;Na=Qa}else{Sa=Pa;Ta=Qa;break c}}else{j=Rb()|0;Ma=Q;Na=j}while(0);zb(l|0);Sa=Ma;Ta=Na}else ga=74;while(0);if((ga|0)==74){i=Rb()|0;Sa=Q;Ta=i}k[x>>2]=27468;k[ja>>2]=27488;k[la>>2]=27560;Yua(L);Ava(la);vva(ja);ha=Sa;ia=Ta;Qb(ia|0)}while(0);Ha=Ka;Ja=La;vva(ja);Qb(Ja|0)}else if((ga|0)==83){Ja=C+56|0;ja=C+4|0;k[C>>2]=27524;k[Ja>>2]=27544;B=0;wa(508,C+56|0,ja|0);La=B;B=0;if(La&1){La=Rb()|0;Ua=Q;Va=La;vva(Ja);Qb(Va|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[Ja>>2]=27488;B=0;va(448,ja|0);La=B;B=0;do if(La&1){Ka=Rb()|0;Wa=Q;Ya=Ka}else{k[ja>>2]=27560;Ka=C+36|0;k[Ka>>2]=0;k[Ka+4>>2]=0;k[Ka+8>>2]=0;k[Ka+12>>2]=0;k[C+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,ja|0,h|0);Ha=B;B=0;if(Ha&1){Ha=Rb()|0;Ta=Q;Yua(h);Yua(Ka);Ava(ja);Wa=Ta;Ya=Ha;break}Yua(h);B=0;Ha=Ia(40,C|0,141743,36)|0;Ta=B;B=0;d:do if(((!(Ta&1)?(B=0,Sa=Xa(242,Ha|0,Ea|0)|0,la=B,B=0,!(la&1)):0)?(B=0,la=Ia(40,Sa|0,141717,25)|0,Sa=B,B=0,!(Sa&1)):0)?(B=0,Xa(239,la|0,0)|0,la=B,B=0,!(la&1)):0){la=Ab(20)|0;B=0;eb(502,D|0,140006,66);Sa=B;B=0;do if(!(Sa&1)){B=0;eb(502,E|0,141093,9);x=B;B=0;if(x&1){x=Rb()|0;Na=Q;Yua(D);Za=Na;_a=x;break}B=0;wa(510,F|0,ja|0);x=B;B=0;if(x&1){x=Rb()|0;$a=1;ab=Q;bb=x}else{B=0;ua(163,la|0,D|0,E|0,1395,F|0);x=B;B=0;if(x&1)cb=1;else{B=0;eb(503,la|0,1240,229);B=0;cb=0}x=Rb()|0;Na=Q;Yua(F);$a=cb;ab=Na;bb=x}Yua(E);Yua(D);if($a){Za=ab;_a=bb}else{db=ab;fb=bb;break d}}else{x=Rb()|0;Za=Q;_a=x}while(0);zb(la|0);db=Za;fb=_a}else ga=100;while(0);if((ga|0)==100){Ha=Rb()|0;db=Q;fb=Ha}k[C>>2]=27468;k[Ja>>2]=27488;k[ja>>2]=27560;Yua(Ka);Ava(ja);vva(Ja);ha=db;ia=fb;Qb(ia|0)}while(0);Ua=Wa;Va=Ya;vva(Ja);Qb(Va|0)}else if((ga|0)==113){Va=G+56|0;Ja=G+4|0;k[G>>2]=27524;k[Va>>2]=27544;B=0;wa(508,G+56|0,Ja|0);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;gb=Q;hb=Ya;vva(Va);Qb(hb|0)}k[G+128>>2]=0;k[G+132>>2]=-1;k[G>>2]=27468;k[Va>>2]=27488;B=0;va(448,Ja|0);Ya=B;B=0;do if(Ya&1){Wa=Rb()|0;ib=Q;jb=Wa}else{k[Ja>>2]=27560;Wa=G+36|0;k[Wa>>2]=0;k[Wa+4>>2]=0;k[Wa+8>>2]=0;k[Wa+12>>2]=0;k[G+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,Ja|0,h|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;fb=Q;Yua(h);Yua(Wa);Ava(Ja);ib=fb;jb=Ua;break}Yua(h);B=0;Ua=Ia(40,G|0,141259,22)|0;fb=B;B=0;e:do if(!(fb&1)?(B=0,Xa(239,Ua|0,0)|0,db=B,B=0,!(db&1)):0){db=Ab(20)|0;B=0;eb(502,H|0,140006,66);ja=B;B=0;do if(!(ja&1)){B=0;eb(502,I|0,141093,9);C=B;B=0;if(C&1){C=Rb()|0;_a=Q;Yua(H);kb=_a;lb=C;break}B=0;wa(510,J|0,Ja|0);C=B;B=0;if(C&1){C=Rb()|0;mb=1;nb=Q;ob=C}else{B=0;ua(163,db|0,H|0,I|0,1405,J|0);C=B;B=0;if(C&1)pb=1;else{B=0;eb(503,db|0,1240,229);B=0;pb=0}C=Rb()|0;_a=Q;Yua(J);mb=pb;nb=_a;ob=C}Yua(I);Yua(H);if(mb){kb=nb;lb=ob}else{qb=nb;rb=ob;break e}}else{C=Rb()|0;kb=Q;lb=C}while(0);zb(db|0);qb=kb;rb=lb}else ga=128;while(0);if((ga|0)==128){Ua=Rb()|0;qb=Q;rb=Ua}k[G>>2]=27468;k[Va>>2]=27488;k[Ja>>2]=27560;Yua(Wa);Ava(Ja);vva(Va);ha=qb;ia=rb;Qb(ia|0)}while(0);gb=ib;hb=jb;vva(Va);Qb(hb|0)}else if((ga|0)==141){k[b>>2]=Aa;k[c>>2]=Ba;k[d>>2]=Ca;k[e>>2]=za;r=g;return}}function Ska(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0;d=r;r=r+240|0;e=d+216|0;f=d+200|0;g=d+192|0;h=d+188|0;j=d+184|0;l=d+180|0;m=d+176|0;n=d+40|0;o=d+24|0;p=d+12|0;q=d;k[j>>2]=0;k[f>>2]=c;if((b|0)<=0){r=d;return}c=a+12|0;s=a+16|0;t=0;while(1){u=(k[f>>2]|0)+(4-1)&~(4-1);v=k[u>>2]|0;k[f>>2]=u+4;if(Mta(v,140083,3)|0){w=v;x=5;break}u=k[c>>2]|0;y=k[s>>2]|0;if(u>>>0<y>>>0){z=0;A=u;do{u=(Ita(k[(k[A>>2]|0)+4>>2]|0,v)|0)==0;z=z|u;A=A+4|0}while(A>>>0<y>>>0&(u^1));if(!z)x=33}else x=33;if((x|0)==33){x=0;Oka(a,g,h,v)|0;Qka(a,j,l,m,v);y=Qqa(28)|0;A=k[j>>2]|0;u=k[g>>2]|0;C=k[h>>2]|0;D=k[l>>2]|0;E=k[m>>2]|0;i[y>>0]=0;k[y+16>>2]=u;k[y+20>>2]=C;k[y+8>>2]=D;k[y+12>>2]=E;k[y+24>>2]=A;A=(Lta(v)|0)+1|0;B=0;E=ya(422,A|0)|0;D=B;B=0;if(D&1){F=y;x=35;break}k[y+4>>2]=E;TEa(E|0,v|0,A|0)|0;Eka(a,y)}t=t+1|0;if((t|0)>=(b|0)){x=3;break}}if((x|0)==3){r=d;return}else if((x|0)==5){d=n+56|0;b=n+4|0;k[n>>2]=27524;k[d>>2]=27544;B=0;wa(508,n+56|0,b|0);t=B;B=0;if(t&1){t=Rb()|0;G=Q;H=t;vva(d);Qb(H|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);t=B;B=0;do if(t&1){a=Rb()|0;I=Q;J=a}else{k[b>>2]=27560;a=n+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[n+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);m=B;B=0;if(m&1){m=Rb()|0;l=Q;Yua(e);Yua(a);Ava(b);I=l;J=m;break}Yua(e);B=0;m=Ia(40,n|0,141361,43)|0;l=B;B=0;a:do if(((!(l&1)?(h=Lta(w)|0,B=0,g=Ia(40,m|0,w|0,h|0)|0,h=B,B=0,!(h&1)):0)?(B=0,h=Ia(40,g|0,141170,1)|0,g=B,B=0,!(g&1)):0)?(B=0,Xa(239,h|0,0)|0,h=B,B=0,!(h&1)):0){h=Ab(20)|0;B=0;eb(502,o|0,140006,66);g=B;B=0;do if(!(g&1)){B=0;eb(502,p|0,141093,9);j=B;B=0;if(j&1){j=Rb()|0;s=Q;Yua(o);K=s;L=j;break}B=0;wa(510,q|0,b|0);j=B;B=0;if(j&1){j=Rb()|0;M=Q;N=j;O=1}else{B=0;ua(163,h|0,o|0,p|0,1493,q|0);j=B;B=0;if(j&1)P=1;else{B=0;eb(503,h|0,1240,229);B=0;P=0}j=Rb()|0;s=Q;Yua(q);M=s;N=j;O=P}Yua(p);Yua(o);if(O){K=M;L=N}else{R=N;S=M;break a}}else{j=Rb()|0;K=Q;L=j}while(0);zb(h|0);R=L;S=K}else x=22;while(0);if((x|0)==22){m=Rb()|0;R=m;S=Q}k[n>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(a);Ava(b);vva(d);T=S;U=R;Qb(U|0)}while(0);G=I;H=J;vva(d);Qb(H|0)}else if((x|0)==35){x=Rb()|0;H=Q;Sqa(F);T=H;U=x;Qb(U|0)}}function Tka(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0;e=r;r=r+544|0;f=e+532|0;g=e+528|0;h=e+524|0;j=e+520|0;l=e+360|0;m=e+508|0;n=e+496|0;o=e+344|0;p=e+208|0;q=e+60|0;s=e+48|0;t=e+36|0;u=e+72|0;v=e+24|0;w=e+12|0;x=e;k[j>>2]=0;y=vY()|0;z=Uka(a,j,0,g,d)|0;A=k[g>>2]|0;a:do if(A){g=Rqa(A>>>0>1073741823?-1:A<<2)|0;if((A|0)>0){C=k[j>>2]|0;D=a+24|0;if(!y)E=0;else{F=0;while(1){uY()|0;G=k[h>>2]|0;if(!G){H=Rqa(1)|0;i[H>>0]=0;I=H}else{H=Rqa(G+1|0)|0;i[H+G>>0]=0;uY()|0;I=H}k[g+(F<<2)>>2]=I;F=F+1|0;if((F|0)>=(A|0)){J=g;break a}}}while(1){if((k[C+(E<<2)>>2]|0)!=4){K=11;break}eta(k[D>>2]|0,z+(E<<4)|0)|0;if((ata(h,4,1,k[D>>2]|0)|0)!=1){K=36;break}uY()|0;F=k[h>>2]|0;if(!F){H=Rqa(1)|0;i[H>>0]=0;L=H}else{H=Rqa(F+1|0)|0;i[H+F>>0]=0;if((ata(H,F,1,k[D>>2]|0)|0)!=1){K=61;break}uY()|0;L=H}k[g+(E<<2)>>2]=L;E=E+1|0;if((E|0)>=(A|0)){J=g;break a}}if((K|0)==11){D=l+56|0;C=l+4|0;k[l>>2]=27524;k[D>>2]=27544;B=0;wa(508,l+56|0,C|0);H=B;B=0;if(H&1){H=Rb()|0;M=Q;N=H;vva(D);Qb(N|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[D>>2]=27488;B=0;va(448,C|0);H=B;B=0;do if(H&1){F=Rb()|0;O=Q;P=F}else{k[C>>2]=27560;F=l+36|0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;k[l+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,C|0,f|0);G=B;B=0;if(G&1){G=Rb()|0;R=Q;Yua(f);Yua(F);Ava(C);O=R;P=G;break}Yua(f);B=0;G=Ia(40,l|0,141569,24)|0;R=B;B=0;b:do if(((!(R&1)?(S=Lta(d)|0,B=0,T=Ia(40,G|0,d|0,S|0)|0,S=B,B=0,!(S&1)):0)?(B=0,S=Ia(40,T|0,141051,1)|0,T=B,B=0,!(T&1)):0)?(B=0,Xa(239,S|0,0)|0,S=B,B=0,!(S&1)):0){S=Ab(20)|0;B=0;eb(502,m|0,140006,66);T=B;B=0;do if(!(T&1)){B=0;eb(502,n|0,141780,17);U=B;B=0;if(U&1){U=Rb()|0;V=Q;Yua(m);W=V;X=U;break}B=0;wa(510,o|0,C|0);U=B;B=0;if(U&1){U=Rb()|0;Y=U;Z=Q;_=1}else{B=0;ua(163,S|0,m|0,n|0,1549,o|0);U=B;B=0;if(U&1)$=1;else{B=0;eb(503,S|0,1240,229);B=0;$=0}U=Rb()|0;V=Q;Yua(o);Y=U;Z=V;_=$}Yua(n);Yua(m);if(_){W=Z;X=Y}else{aa=Z;ba=Y;break b}}else{V=Rb()|0;W=Q;X=V}while(0);zb(S|0);aa=W;ba=X}else K=28;while(0);if((K|0)==28){G=Rb()|0;aa=Q;ba=G}k[l>>2]=27468;k[D>>2]=27488;k[C>>2]=27560;Yua(F);Ava(C);vva(D);ca=aa;da=ba;Qb(da|0)}while(0);M=O;N=P;vva(D);Qb(N|0)}else if((K|0)==36){C=p+56|0;H=p+4|0;k[p>>2]=27524;k[C>>2]=27544;B=0;wa(508,p+56|0,H|0);G=B;B=0;if(G&1){G=Rb()|0;ea=Q;fa=G;vva(C);Qb(fa|0)}k[p+128>>2]=0;k[p+132>>2]=-1;k[p>>2]=27468;k[C>>2]=27488;B=0;va(448,H|0);G=B;B=0;do if(G&1){R=Rb()|0;ga=Q;ha=R}else{k[H>>2]=27560;R=p+36|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[p+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,H|0,f|0);T=B;B=0;if(T&1){T=Rb()|0;V=Q;Yua(f);Yua(R);Ava(H);ga=V;ha=T;break}Yua(f);B=0;T=Ia(40,p|0,140909,32)|0;V=B;B=0;c:do if(!(V&1)?(B=0,Xa(239,T|0,0)|0,U=B,B=0,!(U&1)):0){U=Ab(20)|0;B=0;eb(502,q|0,140006,66);ia=B;B=0;do if(!(ia&1)){B=0;eb(502,s|0,141780,17);ja=B;B=0;if(ja&1){ja=Rb()|0;ka=Q;Yua(q);la=ja;ma=ka;break}B=0;wa(510,t|0,H|0);ka=B;B=0;if(ka&1){ka=Rb()|0;na=1;oa=Q;pa=ka}else{B=0;ua(163,U|0,q|0,s|0,1553,t|0);ka=B;B=0;if(ka&1)qa=1;else{B=0;eb(503,U|0,1240,229);B=0;qa=0}ka=Rb()|0;ja=Q;Yua(t);na=qa;oa=ja;pa=ka}Yua(s);Yua(q);if(na){la=pa;ma=oa}else{ra=oa;sa=pa;break c}}else{ka=Rb()|0;la=ka;ma=Q}while(0);zb(U|0);ra=ma;sa=la}else K=51;while(0);if((K|0)==51){T=Rb()|0;ra=Q;sa=T}k[p>>2]=27468;k[C>>2]=27488;k[H>>2]=27560;Yua(R);Ava(H);vva(C);ca=ra;da=sa;Qb(da|0)}while(0);ea=ga;fa=ha;vva(C);Qb(fa|0)}else if((K|0)==61){H=u+56|0;G=u+4|0;k[u>>2]=27524;k[H>>2]=27544;B=0;wa(508,u+56|0,G|0);D=B;B=0;if(D&1){D=Rb()|0;ta=Q;xa=D;vva(H);Qb(xa|0)}k[u+128>>2]=0;k[u+132>>2]=-1;k[u>>2]=27468;k[H>>2]=27488;B=0;va(448,G|0);D=B;B=0;do if(D&1){T=Rb()|0;ya=Q;za=T}else{k[G>>2]=27560;T=u+36|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[u+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,G|0,f|0);V=B;B=0;if(V&1){V=Rb()|0;F=Q;Yua(f);Yua(T);Ava(G);ya=F;za=V;break}Yua(f);B=0;V=Ia(40,u|0,140942,23)|0;F=B;B=0;d:do if(!(F&1)?(B=0,Xa(239,V|0,0)|0,ia=B,B=0,!(ia&1)):0){ia=Ab(20)|0;B=0;eb(502,v|0,140006,66);S=B;B=0;do if(!(S&1)){B=0;eb(502,w|0,141780,17);ka=B;B=0;if(ka&1){ka=Rb()|0;ja=Q;Yua(v);Aa=ka;Ba=ja;break}B=0;wa(510,x|0,G|0);ja=B;B=0;if(ja&1){ja=Rb()|0;Ca=1;Da=Q;Ea=ja}else{B=0;ua(163,ia|0,v|0,w|0,1565,x|0);ja=B;B=0;if(ja&1)Fa=1;else{B=0;eb(503,ia|0,1240,229);B=0;Fa=0}ja=Rb()|0;ka=Q;Yua(x);Ca=Fa;Da=ka;Ea=ja}Yua(w);Yua(v);if(Ca){Aa=Ea;Ba=Da}else{Ga=Da;Ha=Ea;break d}}else{ja=Rb()|0;Aa=ja;Ba=Q}while(0);zb(ia|0);Ga=Ba;Ha=Aa}else K=76;while(0);if((K|0)==76){V=Rb()|0;Ga=Q;Ha=V}k[u>>2]=27468;k[H>>2]=27488;k[G>>2]=27560;Yua(T);Ava(G);vva(H);ca=Ga;da=Ha;Qb(da|0)}while(0);ta=ya;xa=za;vva(H);Qb(xa|0)}}else J=g}else J=0;while(0);xa=k[j>>2]|0;if(xa)Tqa(xa);k[j>>2]=0;if(!z){k[b>>2]=J;k[c>>2]=A;r=e;return}Tqa(z);k[b>>2]=J;k[c>>2]=A;r=e;return}function Uka(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0;f=r;r=r+1424|0;g=f+1404|0;h=f+1376|0;j=f+1360|0;l=f+1356|0;m=f+1340|0;n=f+1324|0;o=f+1176|0;p=f+1392|0;q=f+1380|0;s=f+1364|0;t=f+1040|0;u=f+1344|0;v=f+1328|0;w=f+1312|0;x=f+888|0;y=f+1024|0;z=f+740|0;A=f+728|0;C=f+752|0;D=f+308|0;E=f+296|0;F=f+144|0;G=f+592|0;H=f+132|0;I=f+120|0;J=f+108|0;K=f+456|0;L=f+96|0;M=f+84|0;N=f+72|0;O=f+320|0;P=f+60|0;R=f+48|0;S=f+36|0;T=f+160|0;U=f+24|0;V=f+12|0;W=f;k[n>>2]=0;a:do if(!(vY()|0)){X=a+24|0;dta(k[X>>2]|0,0,0)|0;b:do if(ata(h,4,1,k[X>>2]|0)|0){while(1){Y=k[h>>2]|0;if((Y+-3|0)>>>0>77){Z=Y;_=4;break}$=Rqa(Y+1|0)|0;i[$+Y>>0]=0;if(!(ata($,Y,1,k[X>>2]|0)|0))break b;if(Mta($,140083,3)|0){aa=$;_=30;break}if(!(Ita($,e)|0))k[n>>2]=(k[n>>2]|0)+1;if((ata(j,4,1,k[X>>2]|0)|0)!=1){_=57;break}dta(k[X>>2]|0,k[j>>2]|0,1)|0;Tqa($);if(!(ata(h,4,1,k[X>>2]|0)|0))break b}if((_|0)==4){$=o+56|0;Y=o+4|0;k[o>>2]=27524;k[$>>2]=27544;B=0;wa(508,o+56|0,Y|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ca=Q;da=ba;vva($);Qb(da|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[$>>2]=27488;B=0;va(448,Y|0);ba=B;B=0;do if(ba&1){ea=Rb()|0;fa=Q;ga=ea}else{k[Y>>2]=27560;ea=o+36|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[o+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,Y|0,g|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;Yua(g);Yua(ea);Ava(Y);fa=ia;ga=ha;break}Yua(g);B=0;ha=Ia(40,o|0,139946,59)|0;ia=B;B=0;c:do if((!(ia&1)?(B=0,ja=Xa(242,ha|0,Z|0)|0,ka=B,B=0,!(ka&1)):0)?(B=0,Xa(239,ja|0,0)|0,ja=B,B=0,!(ja&1)):0){ja=Ab(20)|0;B=0;eb(502,p|0,140006,66);ka=B;B=0;do if(!(ka&1)){B=0;eb(502,q|0,141798,21);la=B;B=0;if(la&1){la=Rb()|0;ma=Q;Yua(p);na=ma;oa=la;break}B=0;wa(510,s|0,Y|0);la=B;B=0;if(la&1){la=Rb()|0;pa=Q;qa=la;ra=1}else{B=0;ua(163,ja|0,p|0,q|0,2180,s|0);la=B;B=0;if(la&1)sa=1;else{B=0;eb(503,ja|0,1240,229);B=0;sa=0}la=Rb()|0;ma=Q;Yua(s);pa=ma;qa=la;ra=sa}Yua(q);Yua(p);if(ra){na=pa;oa=qa}else{ta=pa;xa=qa;break c}}else{la=Rb()|0;na=Q;oa=la}while(0);zb(ja|0);ta=na;xa=oa}else _=20;while(0);if((_|0)==20){ha=Rb()|0;ta=Q;xa=ha}k[o>>2]=27468;k[$>>2]=27488;k[Y>>2]=27560;Yua(ea);Ava(Y);vva($);ya=ta;za=xa;Qb(za|0)}while(0);ca=fa;da=ga;vva($);Qb(da|0)}else if((_|0)==30){Y=t+56|0;ba=t+4|0;k[t>>2]=27524;k[Y>>2]=27544;B=0;wa(508,t+56|0,ba|0);ha=B;B=0;if(ha&1){ha=Rb()|0;Aa=Q;Ba=ha;vva(Y);Qb(Ba|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[Y>>2]=27488;B=0;va(448,ba|0);ha=B;B=0;do if(ha&1){ia=Rb()|0;Ca=Q;Da=ia}else{k[ba>>2]=27560;ia=t+36|0;k[ia>>2]=0;k[ia+4>>2]=0;k[ia+8>>2]=0;k[ia+12>>2]=0;k[t+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,ba|0,g|0);ka=B;B=0;if(ka&1){ka=Rb()|0;la=Q;Yua(g);Yua(ia);Ava(ba);Ca=la;Da=ka;break}Yua(g);B=0;ka=Ia(40,t|0,140087,67)|0;la=B;B=0;d:do if((!(la&1)?(ma=Lta(aa)|0,B=0,Ea=Ia(40,ka|0,aa|0,ma|0)|0,ma=B,B=0,!(ma&1)):0)?(B=0,Xa(239,Ea|0,0)|0,Ea=B,B=0,!(Ea&1)):0){Ea=Ab(20)|0;B=0;eb(502,u|0,140006,66);ma=B;B=0;do if(!(ma&1)){B=0;eb(502,v|0,141798,21);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ga=Q;Yua(u);Ha=Ga;Ja=Fa;break}B=0;wa(510,w|0,ba|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ka=1;La=Q;Ma=Fa}else{B=0;ua(163,Ea|0,u|0,v|0,2192,w|0);Fa=B;B=0;if(Fa&1)Na=1;else{B=0;eb(503,Ea|0,1240,229);B=0;Na=0}Fa=Rb()|0;Ga=Q;Yua(w);Ka=Na;La=Ga;Ma=Fa}Yua(v);Yua(u);if(Ka){Ha=La;Ja=Ma}else{Oa=La;Pa=Ma;break d}}else{Fa=Rb()|0;Ha=Q;Ja=Fa}while(0);zb(Ea|0);Oa=Ha;Pa=Ja}else _=46;while(0);if((_|0)==46){ka=Rb()|0;Oa=Q;Pa=ka}k[t>>2]=27468;k[Y>>2]=27488;k[ba>>2]=27560;Yua(ia);Ava(ba);vva(Y);ya=Oa;za=Pa;Qb(za|0)}while(0);Aa=Ca;Ba=Da;vva(Y);Qb(Ba|0)}else if((_|0)==57){ba=x+56|0;ha=x+4|0;k[x>>2]=27524;k[ba>>2]=27544;B=0;wa(508,x+56|0,ha|0);$=B;B=0;if($&1){$=Rb()|0;Qa=Q;Ra=$;vva(ba);Qb(Ra|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[ba>>2]=27488;B=0;va(448,ha|0);$=B;B=0;do if($&1){ka=Rb()|0;Sa=Q;Ta=ka}else{k[ha>>2]=27560;ka=x+36|0;k[ka>>2]=0;k[ka+4>>2]=0;k[ka+8>>2]=0;k[ka+12>>2]=0;k[x+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,ha|0,g|0);la=B;B=0;if(la&1){la=Rb()|0;ea=Q;Yua(g);Yua(ka);Ava(ha);Sa=ea;Ta=la;break}Yua(g);B=0;la=Ia(40,x|0,140162,28)|0;ea=B;B=0;e:do if(!(ea&1)?(B=0,Xa(239,la|0,0)|0,ma=B,B=0,!(ma&1)):0){ma=Ab(20)|0;B=0;eb(502,y|0,140006,66);ja=B;B=0;do if(!(ja&1)){B=0;eb(502,z|0,141798,21);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ga=Q;Yua(y);Ua=Ga;Va=Fa;break}B=0;wa(510,A|0,ha|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Wa=1;Ya=Q;Za=Fa}else{B=0;ua(163,ma|0,y|0,z|0,2199,A|0);Fa=B;B=0;if(Fa&1)_a=1;else{B=0;eb(503,ma|0,1240,229);B=0;_a=0}Fa=Rb()|0;Ga=Q;Yua(A);Wa=_a;Ya=Ga;Za=Fa}Yua(z);Yua(y);if(Wa){Ua=Ya;Va=Za}else{$a=Ya;ab=Za;break e}}else{Fa=Rb()|0;Ua=Q;Va=Fa}while(0);zb(ma|0);$a=Ua;ab=Va}else _=72;while(0);if((_|0)==72){la=Rb()|0;$a=Q;ab=la}k[x>>2]=27468;k[ba>>2]=27488;k[ha>>2]=27560;Yua(ka);Ava(ha);vva(ba);ya=$a;za=ab;Qb(za|0)}while(0);Qa=Sa;Ra=Ta;vva(ba);Qb(Ra|0)}}while(0);ha=k[n>>2]|0;if(!ha){bb=0;cb=0;db=0}else{$=Rqa(ha>>>0>268435455?-1:ha<<4)|0;Y=ha>>>0>1073741823?-1:ha<<2;ha=Rqa(Y)|0;bb=ha;cb=$;db=Rqa(Y)|0}dta(k[X>>2]|0,0,0)|0;if(ata(h,4,1,k[X>>2]|0)|0){Y=db;$=0;while(1){ha=k[h>>2]|0;if((ha+-3|0)>>>0>77){fb=ha;_=86;break}la=Rqa(ha+1|0)|0;i[la+ha>>0]=0;if(!(ata(la,ha,1,k[X>>2]|0)|0)){gb=la;_=111;break}if(Mta(la,140083,3)|0){hb=la;_=113;break}if(!(Ita(la,e)|0)){dta(k[X>>2]|0,4,1)|0;if((ata(l,4,1,k[X>>2]|0)|0)!=1){_=139;break}ha=k[l>>2]|0;if((ha+-5|0)>>>0<3?(ata(m,4,1,k[X>>2]|0)|0)!=1:0){_=164;break}k[bb+($<<2)>>2]=ha;k[Y+($<<2)>>2]=k[m>>2];Vsa(k[X>>2]|0,cb+($<<4)|0)|0;if(((k[l>>2]|0)+-5|0)>>>0<3)dta(k[X>>2]|0,-4,1)|0;dta(k[X>>2]|0,-4,1)|0;dta(k[X>>2]|0,-4,1)|0;ib=$+1|0}else ib=$;if((ata(j,4,1,k[X>>2]|0)|0)!=1){_=191;break}dta(k[X>>2]|0,k[j>>2]|0,1)|0;Tqa(la);if(!(ata(h,4,1,k[X>>2]|0)|0)){jb=bb;kb=cb;lb=db;break a}else $=ib}if((_|0)==86){$=C+56|0;X=C+4|0;k[C>>2]=27524;k[$>>2]=27544;B=0;wa(508,C+56|0,X|0);Y=B;B=0;if(Y&1){Y=Rb()|0;mb=Q;nb=Y;vva($);Qb(nb|0)}k[C+128>>2]=0;k[C+132>>2]=-1;k[C>>2]=27468;k[$>>2]=27488;B=0;va(448,X|0);Y=B;B=0;do if(Y&1){la=Rb()|0;ob=Q;pb=la}else{k[X>>2]=27560;la=C+36|0;k[la>>2]=0;k[la+4>>2]=0;k[la+8>>2]=0;k[la+12>>2]=0;k[C+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,X|0,g|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ea=Q;Yua(g);Yua(la);Ava(X);ob=ea;pb=ha;break}Yua(g);B=0;ha=Ia(40,C|0,139946,59)|0;ea=B;B=0;f:do if((!(ea&1)?(B=0,ia=Xa(242,ha|0,fb|0)|0,ja=B,B=0,!(ja&1)):0)?(B=0,Xa(239,ia|0,0)|0,ia=B,B=0,!(ia&1)):0){ia=Ab(20)|0;B=0;eb(502,D|0,140006,66);ja=B;B=0;do if(!(ja&1)){B=0;eb(502,E|0,141798,21);Ea=B;B=0;if(Ea&1){Ea=Rb()|0;Fa=Q;Yua(D);qb=Fa;rb=Ea;break}B=0;wa(510,F|0,X|0);Ea=B;B=0;if(Ea&1){Ea=Rb()|0;sb=Q;tb=1;ub=Ea}else{B=0;ua(163,ia|0,D|0,E|0,2223,F|0);Ea=B;B=0;if(Ea&1)vb=1;else{B=0;eb(503,ia|0,1240,229);B=0;vb=0}Ea=Rb()|0;Fa=Q;Yua(F);sb=Fa;tb=vb;ub=Ea}Yua(E);Yua(D);if(tb){qb=sb;rb=ub}else{wb=sb;xb=ub;break f}}else{Ea=Rb()|0;qb=Q;rb=Ea}while(0);zb(ia|0);wb=qb;xb=rb}else _=102;while(0);if((_|0)==102){ha=Rb()|0;wb=Q;xb=ha}k[C>>2]=27468;k[$>>2]=27488;k[X>>2]=27560;Yua(la);Ava(X);vva($);ya=wb;za=xb;Qb(za|0)}while(0);mb=ob;nb=pb;vva($);Qb(nb|0)}else if((_|0)==111){Tqa(gb);jb=bb;kb=cb;lb=db;break}else if((_|0)==113){X=G+56|0;Y=G+4|0;k[G>>2]=27524;k[X>>2]=27544;B=0;wa(508,G+56|0,Y|0);ha=B;B=0;if(ha&1){ha=Rb()|0;yb=Q;Bb=ha;vva(X);Qb(Bb|0)}k[G+128>>2]=0;k[G+132>>2]=-1;k[G>>2]=27468;k[X>>2]=27488;B=0;va(448,Y|0);ha=B;B=0;do if(ha&1){ea=Rb()|0;Cb=Q;Db=ea}else{k[Y>>2]=27560;ea=G+36|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[G+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,Y|0,g|0);ba=B;B=0;if(ba&1){ba=Rb()|0;ja=Q;Yua(g);Yua(ea);Ava(Y);Cb=ja;Db=ba;break}Yua(g);B=0;ba=Ia(40,G|0,140087,67)|0;ja=B;B=0;g:do if((!(ja&1)?(ka=Lta(hb)|0,B=0,Ea=Ia(40,ba|0,hb|0,ka|0)|0,ka=B,B=0,!(ka&1)):0)?(B=0,Xa(239,Ea|0,0)|0,Ea=B,B=0,!(Ea&1)):0){Ea=Ab(20)|0;B=0;eb(502,H|0,140006,66);ka=B;B=0;do if(!(ka&1)){B=0;eb(502,I|0,141798,21);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ga=Q;Yua(H);Eb=Ga;Fb=Fa;break}B=0;wa(510,J|0,Y|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Gb=1;Hb=Q;Ib=Fa}else{B=0;ua(163,Ea|0,H|0,I|0,2237,J|0);Fa=B;B=0;if(Fa&1)Jb=1;else{B=0;eb(503,Ea|0,1240,229);B=0;Jb=0}Fa=Rb()|0;Ga=Q;Yua(J);Gb=Jb;Hb=Ga;Ib=Fa}Yua(I);Yua(H);if(Gb){Eb=Hb;Fb=Ib}else{Kb=Hb;Lb=Ib;break g}}else{Fa=Rb()|0;Eb=Q;Fb=Fa}while(0);zb(Ea|0);Kb=Eb;Lb=Fb}else _=129;while(0);if((_|0)==129){ba=Rb()|0;Kb=Q;Lb=ba}k[G>>2]=27468;k[X>>2]=27488;k[Y>>2]=27560;Yua(ea);Ava(Y);vva(X);ya=Kb;za=Lb;Qb(za|0)}while(0);yb=Cb;Bb=Db;vva(X);Qb(Bb|0)}else if((_|0)==139){Y=K+56|0;ha=K+4|0;k[K>>2]=27524;k[Y>>2]=27544;B=0;wa(508,K+56|0,ha|0);$=B;B=0;if($&1){$=Rb()|0;Mb=Q;Nb=$;vva(Y);Qb(Nb|0)}k[K+128>>2]=0;k[K+132>>2]=-1;k[K>>2]=27468;k[Y>>2]=27488;B=0;va(448,ha|0);$=B;B=0;do if($&1){ba=Rb()|0;Ob=Q;Pb=ba}else{k[ha>>2]=27560;ba=K+36|0;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;k[K+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,ha|0,g|0);ja=B;B=0;if(ja&1){ja=Rb()|0;la=Q;Yua(g);Yua(ba);Ava(ha);Ob=la;Pb=ja;break}Yua(g);B=0;ja=Ia(40,K|0,141437,26)|0;la=B;B=0;h:do if(!(la&1)?(B=0,Xa(239,ja|0,0)|0,ka=B,B=0,!(ka&1)):0){ka=Ab(20)|0;B=0;eb(502,L|0,140006,66);ia=B;B=0;do if(!(ia&1)){B=0;eb(502,M|0,141798,21);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ga=Q;Yua(L);Sb=Ga;Tb=Fa;break}B=0;wa(510,N|0,ha|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ub=1;Vb=Q;Wb=Fa}else{B=0;ua(163,ka|0,L|0,M|0,2244,N|0);Fa=B;B=0;if(Fa&1)Xb=1;else{B=0;eb(503,ka|0,1240,229);B=0;Xb=0}Fa=Rb()|0;Ga=Q;Yua(N);Ub=Xb;Vb=Ga;Wb=Fa}Yua(M);Yua(L);if(Ub){Sb=Vb;Tb=Wb}else{Yb=Vb;Zb=Wb;break h}}else{Fa=Rb()|0;Sb=Q;Tb=Fa}while(0);zb(ka|0);Yb=Sb;Zb=Tb}else _=154;while(0);if((_|0)==154){ja=Rb()|0;Yb=Q;Zb=ja}k[K>>2]=27468;k[Y>>2]=27488;k[ha>>2]=27560;Yua(ba);Ava(ha);vva(Y);ya=Yb;za=Zb;Qb(za|0)}while(0);Mb=Ob;Nb=Pb;vva(Y);Qb(Nb|0)}else if((_|0)==164){ha=O+56|0;$=O+4|0;k[O>>2]=27524;k[ha>>2]=27544;B=0;wa(508,O+56|0,$|0);X=B;B=0;if(X&1){X=Rb()|0;_b=Q;$b=X;vva(ha);Qb($b|0)}k[O+128>>2]=0;k[O+132>>2]=-1;k[O>>2]=27468;k[ha>>2]=27488;B=0;va(448,$|0);X=B;B=0;do if(X&1){ja=Rb()|0;ac=Q;bc=ja}else{k[$>>2]=27560;ja=O+36|0;k[ja>>2]=0;k[ja+4>>2]=0;k[ja+8>>2]=0;k[ja+12>>2]=0;k[O+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,$|0,g|0);la=B;B=0;if(la&1){la=Rb()|0;ea=Q;Yua(g);Yua(ja);Ava($);ac=ea;bc=la;break}Yua(g);B=0;la=Ia(40,O|0,141464,26)|0;ea=B;B=0;i:do if(!(ea&1)?(B=0,Xa(239,la|0,0)|0,ia=B,B=0,!(ia&1)):0){ia=Ab(20)|0;B=0;eb(502,P|0,140006,66);Ea=B;B=0;do if(!(Ea&1)){B=0;eb(502,R|0,141798,21);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ga=Q;Yua(P);cc=Ga;dc=Fa;break}B=0;wa(510,S|0,$|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;ec=1;fc=Q;gc=Fa}else{B=0;ua(163,ia|0,P|0,R|0,2248,S|0);Fa=B;B=0;if(Fa&1)hc=1;else{B=0;eb(503,ia|0,1240,229);B=0;hc=0}Fa=Rb()|0;Ga=Q;Yua(S);ec=hc;fc=Ga;gc=Fa}Yua(R);Yua(P);if(ec){cc=fc;dc=gc}else{ic=fc;jc=gc;break i}}else{Fa=Rb()|0;cc=Q;dc=Fa}while(0);zb(ia|0);ic=cc;jc=dc}else _=179;while(0);if((_|0)==179){la=Rb()|0;ic=Q;jc=la}k[O>>2]=27468;k[ha>>2]=27488;k[$>>2]=27560;Yua(ja);Ava($);vva(ha);ya=ic;za=jc;Qb(za|0)}while(0);_b=ac;$b=bc;vva(ha);Qb($b|0)}else if((_|0)==191){$=T+56|0;X=T+4|0;k[T>>2]=27524;k[$>>2]=27544;B=0;wa(508,T+56|0,X|0);Y=B;B=0;if(Y&1){Y=Rb()|0;kc=Q;lc=Y;vva($);Qb(lc|0)}k[T+128>>2]=0;k[T+132>>2]=-1;k[T>>2]=27468;k[$>>2]=27488;B=0;va(448,X|0);Y=B;B=0;do if(Y&1){la=Rb()|0;mc=Q;nc=la}else{k[X>>2]=27560;la=T+36|0;k[la>>2]=0;k[la+4>>2]=0;k[la+8>>2]=0;k[la+12>>2]=0;k[T+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,X|0,g|0);ea=B;B=0;if(ea&1){ea=Rb()|0;ba=Q;Yua(g);Yua(la);Ava(X);mc=ba;nc=ea;break}Yua(g);B=0;ea=Ia(40,T|0,140162,28)|0;ba=B;B=0;j:do if(!(ba&1)?(B=0,Xa(239,ea|0,0)|0,Ea=B,B=0,!(Ea&1)):0){Ea=Ab(20)|0;B=0;eb(502,U|0,140006,66);ka=B;B=0;do if(!(ka&1)){B=0;eb(502,V|0,141798,21);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;Ga=Q;Yua(U);oc=Ga;pc=Fa;break}B=0;wa(510,W|0,X|0);Fa=B;B=0;if(Fa&1){Fa=Rb()|0;qc=1;rc=Q;sc=Fa}else{B=0;ua(163,Ea|0,U|0,V|0,2264,W|0);Fa=B;B=0;if(Fa&1)tc=1;else{B=0;eb(503,Ea|0,1240,229);B=0;tc=0}Fa=Rb()|0;Ga=Q;Yua(W);qc=tc;rc=Ga;sc=Fa}Yua(V);Yua(U);if(qc){oc=rc;pc=sc}else{uc=rc;vc=sc;break j}}else{Fa=Rb()|0;oc=Q;pc=Fa}while(0);zb(Ea|0);uc=oc;vc=pc}else _=206;while(0);if((_|0)==206){ea=Rb()|0;uc=Q;vc=ea}k[T>>2]=27468;k[$>>2]=27488;k[X>>2]=27560;Yua(la);Ava(X);vva($);ya=uc;za=vc;Qb(za|0)}while(0);kc=mc;lc=nc;vva($);Qb(lc|0)}}else{jb=bb;kb=cb;lb=db}}else{jb=0;kb=0;lb=0}while(0);uY()|0;k[b>>2]=jb;k[d>>2]=k[n>>2];if(c){k[c>>2]=lb;r=f;return kb|0}if(!lb){r=f;return kb|0}Tqa(lb);r=f;return kb|0}function Vka(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;e=r;r=r+384|0;f=e+360|0;g=e+356|0;h=e+352|0;i=e+348|0;j=e+200|0;l=e+336|0;m=e+48|0;n=e+36|0;o=e+64|0;p=e+24|0;q=e+12|0;s=e;k[i>>2]=0;t=vY()|0;u=Uka(a,i,0,g,d)|0;v=k[g>>2]|0;a:do if(v){g=Rqa(v>>>0>1073741823?-1:v<<2)|0;if((v|0)>0){w=k[i>>2]|0;x=a+24|0;if(!t)y=0;else{z=0;while(1){uY()|0;k[g+(z<<2)>>2]=k[h>>2];z=z+1|0;if((z|0)>=(v|0)){A=g;break a}}}while(1){if((k[w+(y<<2)>>2]|0)!=2)break;eta(k[x>>2]|0,u+(y<<4)|0)|0;if((ata(h,4,1,k[x>>2]|0)|0)!=1){C=32;break}uY()|0;k[g+(y<<2)>>2]=k[h>>2];y=y+1|0;if((y|0)>=(v|0)){A=g;break a}}if((C|0)==32){x=o+56|0;w=o+4|0;k[o>>2]=27524;k[x>>2]=27544;B=0;wa(508,o+56|0,w|0);z=B;B=0;if(z&1){z=Rb()|0;D=Q;E=z;vva(x);Qb(E|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[x>>2]=27488;B=0;va(448,w|0);z=B;B=0;do if(z&1){F=Rb()|0;G=Q;H=F}else{k[w>>2]=27560;F=o+36|0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;k[o+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,w|0,f|0);I=B;B=0;if(I&1){I=Rb()|0;J=Q;Yua(f);Yua(F);Ava(w);G=J;H=I;break}Yua(f);B=0;I=Ia(40,o|0,140862,23)|0;J=B;B=0;b:do if(!(J&1)?(B=0,Xa(239,I|0,0)|0,K=B,B=0,!(K&1)):0){K=Ab(20)|0;B=0;eb(502,p|0,140006,66);L=B;B=0;do if(!(L&1)){B=0;eb(502,q|0,141780,17);M=B;B=0;if(M&1){M=Rb()|0;N=Q;Yua(p);O=M;P=N;break}B=0;wa(510,s|0,w|0);N=B;B=0;if(N&1){N=Rb()|0;R=1;S=Q;T=N}else{B=0;ua(163,K|0,p|0,q|0,1619,s|0);N=B;B=0;if(N&1)U=1;else{B=0;eb(503,K|0,1240,229);B=0;U=0}N=Rb()|0;M=Q;Yua(s);R=U;S=M;T=N}Yua(q);Yua(p);if(R){O=T;P=S}else{V=S;W=T;break b}}else{N=Rb()|0;O=N;P=Q}while(0);zb(K|0);V=P;W=O}else C=47;while(0);if((C|0)==47){I=Rb()|0;V=Q;W=I}k[o>>2]=27468;k[x>>2]=27488;k[w>>2]=27560;Yua(F);Ava(w);vva(x);X=V;Y=W;Qb(Y|0)}while(0);D=G;E=H;vva(x);Qb(E|0)}w=j+56|0;z=j+4|0;k[j>>2]=27524;k[w>>2]=27544;B=0;wa(508,j+56|0,z|0);I=B;B=0;if(I&1){I=Rb()|0;Z=Q;_=I;vva(w);Qb(_|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[w>>2]=27488;B=0;va(448,z|0);I=B;B=0;do if(I&1){J=Rb()|0;$=Q;aa=J}else{k[z>>2]=27560;J=j+36|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;k[j+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,z|0,f|0);L=B;B=0;if(L&1){L=Rb()|0;N=Q;Yua(f);Yua(J);Ava(z);$=N;aa=L;break}Yua(f);B=0;L=Ia(40,j|0,141066,26)|0;N=B;B=0;c:do if(((!(N&1)?(M=Lta(d)|0,B=0,ba=Ia(40,L|0,d|0,M|0)|0,M=B,B=0,!(M&1)):0)?(B=0,M=Ia(40,ba|0,141051,1)|0,ba=B,B=0,!(ba&1)):0)?(B=0,Xa(239,M|0,0)|0,M=B,B=0,!(M&1)):0){M=Ab(20)|0;B=0;eb(502,l|0,140006,66);ba=B;B=0;do if(!(ba&1)){B=0;eb(502,m|0,141780,17);ca=B;B=0;if(ca&1){ca=Rb()|0;da=Q;Yua(l);ea=ca;fa=da;break}B=0;wa(510,n|0,z|0);da=B;B=0;if(da&1){da=Rb()|0;ga=Q;ha=da;ia=1}else{B=0;ua(163,M|0,l|0,m|0,1614,n|0);da=B;B=0;if(da&1)ja=1;else{B=0;eb(503,M|0,1240,229);B=0;ja=0}da=Rb()|0;ca=Q;Yua(n);ga=ca;ha=da;ia=ja}Yua(m);Yua(l);if(ia){ea=ha;fa=ga}else{ka=ha;la=ga;break c}}else{da=Rb()|0;ea=da;fa=Q}while(0);zb(M|0);ka=ea;la=fa}else C=24;while(0);if((C|0)==24){L=Rb()|0;ka=L;la=Q}k[j>>2]=27468;k[w>>2]=27488;k[z>>2]=27560;Yua(J);Ava(z);vva(w);X=la;Y=ka;Qb(Y|0)}while(0);Z=$;_=aa;vva(w);Qb(_|0)}else A=g}else A=0;while(0);if(u)Tqa(u);u=k[i>>2]|0;if(!u){k[b>>2]=A;k[c>>2]=v;r=e;return}Tqa(u);k[b>>2]=A;k[c>>2]=v;r=e;return}function Wka(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;e=r;r=r+384|0;f=e+368|0;g=e+364|0;h=e;i=e+360|0;j=e+224|0;l=e+208|0;m=e+56|0;n=e+44|0;o=e+72|0;q=e+32|0;s=e+20|0;t=e+8|0;k[i>>2]=0;u=vY()|0;v=Uka(a,i,0,g,d)|0;w=k[g>>2]|0;a:do if(w){g=Rqa(w>>>0>536870911?-1:w<<3)|0;if((w|0)>0){x=k[i>>2]|0;y=a+24|0;if(!u)z=0;else{A=0;while(1){uY()|0;p[g+(A<<3)>>3]=+p[h>>3];A=A+1|0;if((A|0)>=(w|0)){C=g;break a}}}while(1){if((k[x+(z<<2)>>2]|0)!=3)break;eta(k[y>>2]|0,v+(z<<4)|0)|0;if((ata(h,8,1,k[y>>2]|0)|0)!=1){D=32;break}uY()|0;p[g+(z<<3)>>3]=+p[h>>3];z=z+1|0;if((z|0)>=(w|0)){C=g;break a}}if((D|0)==32){y=o+56|0;x=o+4|0;k[o>>2]=27524;k[y>>2]=27544;B=0;wa(508,o+56|0,x|0);A=B;B=0;if(A&1){A=Rb()|0;E=Q;F=A;vva(y);Qb(F|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[y>>2]=27488;B=0;va(448,x|0);A=B;B=0;do if(A&1){G=Rb()|0;H=Q;I=G}else{k[x>>2]=27560;G=o+36|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;k[o+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,x|0,f|0);J=B;B=0;if(J&1){J=Rb()|0;K=Q;Yua(f);Yua(G);Ava(x);H=K;I=J;break}Yua(f);B=0;J=Ia(40,o|0,140886,22)|0;K=B;B=0;b:do if(!(K&1)?(B=0,Xa(239,J|0,0)|0,L=B,B=0,!(L&1)):0){L=Ab(20)|0;B=0;eb(502,q|0,140006,66);M=B;B=0;do if(!(M&1)){B=0;eb(502,s|0,141780,17);N=B;B=0;if(N&1){N=Rb()|0;O=Q;Yua(q);P=N;R=O;break}B=0;wa(510,t|0,x|0);O=B;B=0;if(O&1){O=Rb()|0;S=1;T=Q;U=O}else{B=0;ua(163,L|0,q|0,s|0,1672,t|0);O=B;B=0;if(O&1)V=1;else{B=0;eb(503,L|0,1240,229);B=0;V=0}O=Rb()|0;N=Q;Yua(t);S=V;T=N;U=O}Yua(s);Yua(q);if(S){P=U;R=T}else{W=T;X=U;break b}}else{O=Rb()|0;P=O;R=Q}while(0);zb(L|0);W=R;X=P}else D=47;while(0);if((D|0)==47){J=Rb()|0;W=Q;X=J}k[o>>2]=27468;k[y>>2]=27488;k[x>>2]=27560;Yua(G);Ava(x);vva(y);Y=W;Z=X;Qb(Z|0)}while(0);E=H;F=I;vva(y);Qb(F|0)}x=j+56|0;A=j+4|0;k[j>>2]=27524;k[x>>2]=27544;B=0;wa(508,j+56|0,A|0);J=B;B=0;if(J&1){J=Rb()|0;_=Q;$=J;vva(x);Qb($|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=27468;k[x>>2]=27488;B=0;va(448,A|0);J=B;B=0;do if(J&1){K=Rb()|0;aa=Q;ba=K}else{k[A>>2]=27560;K=j+36|0;k[K>>2]=0;k[K+4>>2]=0;k[K+8>>2]=0;k[K+12>>2]=0;k[j+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,A|0,f|0);M=B;B=0;if(M&1){M=Rb()|0;O=Q;Yua(f);Yua(K);Ava(A);aa=O;ba=M;break}Yua(f);B=0;M=Ia(40,j|0,141820,24)|0;O=B;B=0;c:do if(((!(O&1)?(N=Lta(d)|0,B=0,ca=Ia(40,M|0,d|0,N|0)|0,N=B,B=0,!(N&1)):0)?(B=0,N=Ia(40,ca|0,141051,1)|0,ca=B,B=0,!(ca&1)):0)?(B=0,Xa(239,N|0,0)|0,N=B,B=0,!(N&1)):0){N=Ab(20)|0;B=0;eb(502,l|0,140006,66);ca=B;B=0;do if(!(ca&1)){B=0;eb(502,m|0,141780,17);da=B;B=0;if(da&1){da=Rb()|0;ea=Q;Yua(l);fa=da;ga=ea;break}B=0;wa(510,n|0,A|0);ea=B;B=0;if(ea&1){ea=Rb()|0;ha=Q;ia=ea;ja=1}else{B=0;ua(163,N|0,l|0,m|0,1667,n|0);ea=B;B=0;if(ea&1)ka=1;else{B=0;eb(503,N|0,1240,229);B=0;ka=0}ea=Rb()|0;da=Q;Yua(n);ha=da;ia=ea;ja=ka}Yua(m);Yua(l);if(ja){fa=ia;ga=ha}else{la=ia;ma=ha;break c}}else{ea=Rb()|0;fa=ea;ga=Q}while(0);zb(N|0);la=fa;ma=ga}else D=24;while(0);if((D|0)==24){M=Rb()|0;la=M;ma=Q}k[j>>2]=27468;k[x>>2]=27488;k[A>>2]=27560;Yua(K);Ava(A);vva(x);Y=ma;Z=la;Qb(Z|0)}while(0);_=aa;$=ba;vva(x);Qb($|0)}else C=g}else C=0;while(0);if(v)Tqa(v);v=k[i>>2]|0;if(!v){k[b>>2]=C;k[c>>2]=w;r=e;return}Tqa(v);k[b>>2]=C;k[c>>2]=w;r=e;return}function Xka(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,fb=0;g=r;r=r+736|0;h=g+712|0;i=g+708|0;j=g+704|0;l=g+688|0;m=g+672|0;n=g+536|0;o=g+692|0;p=g+676|0;q=g+520|0;s=g+384|0;t=g+236|0;u=g+224|0;v=g+72|0;w=g+248|0;x=g+60|0;y=g+48|0;z=g+36|0;A=g+88|0;C=g+24|0;D=g+12|0;E=g;k[m>>2]=0;F=vY()|0;G=Uka(a,m,0,i,f)|0;H=k[i>>2]|0;a:do if(H){i=H>>>0>1073741823?-1:H<<2;I=Rqa(i)|0;J=Rqa(i)|0;K=J;L=Rqa(i)|0;i=L;if((H|0)>0){M=(F|0)==0;N=k[m>>2]|0;O=a+24|0;P=0;while(1){if(M){if(((k[N+(P<<2)>>2]|0)+-5|0)>>>0>=3){R=6;break}eta(k[O>>2]|0,G+(P<<4)|0)|0;if((ata(j,4,1,k[O>>2]|0)|0)!=1){R=32;break}uY()|0;if((ata(l,4,1,k[O>>2]|0)|0)!=1){R=56;break}}else uY()|0;uY()|0;S=k[j>>2]|0;T=k[l>>2]|0;U=ma(T,S)|0;if(!U){V=S;W=T;X=0}else{Y=Rqa(U>>>0>536870911?-1:U<<3)|0;if(M?(U=ma(S<<3,T)|0,(ata(Y,U,1,k[O>>2]|0)|0)!=1):0){R=84;break}uY()|0;U=ma(k[l>>2]|0,k[j>>2]|0)|0;T=Rqa(U>>>0>536870911?-1:U<<3)|0;if((U|0)>0)TEa(T|0,Y|0,((U|0)>1?U:1)<<3|0)|0;Tqa(Y);V=k[j>>2]|0;W=k[l>>2]|0;X=T}k[J+(P<<2)>>2]=V;k[I+(P<<2)>>2]=X;k[L+(P<<2)>>2]=W;P=P+1|0;if((P|0)>=(H|0)){Z=I;_=K;$=i;break a}}if((R|0)==6){P=n+56|0;L=n+4|0;k[n>>2]=27524;k[P>>2]=27544;B=0;wa(508,n+56|0,L|0);J=B;B=0;if(J&1){J=Rb()|0;aa=Q;ba=J;vva(P);Qb(ba|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[P>>2]=27488;B=0;va(448,L|0);J=B;B=0;do if(J&1){O=Rb()|0;ca=Q;da=O}else{k[L>>2]=27560;O=n+36|0;k[O>>2]=0;k[O+4>>2]=0;k[O+8>>2]=0;k[O+12>>2]=0;k[n+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,L|0,h|0);M=B;B=0;if(M&1){M=Rb()|0;N=Q;Yua(h);Yua(O);Ava(L);ca=N;da=M;break}Yua(h);B=0;M=Ia(40,n|0,141103,55)|0;N=B;B=0;b:do if(((!(N&1)?(T=Lta(f)|0,B=0,Y=Ia(40,M|0,f|0,T|0)|0,T=B,B=0,!(T&1)):0)?(B=0,T=Ia(40,Y|0,141051,1)|0,Y=B,B=0,!(Y&1)):0)?(B=0,Xa(239,T|0,0)|0,T=B,B=0,!(T&1)):0){T=Ab(20)|0;B=0;eb(502,o|0,140006,66);Y=B;B=0;do if(!(Y&1)){B=0;eb(502,p|0,141780,17);U=B;B=0;if(U&1){U=Rb()|0;S=Q;Yua(o);ea=S;fa=U;break}B=0;wa(510,q|0,L|0);U=B;B=0;if(U&1){U=Rb()|0;ga=Q;ha=U;ia=1}else{B=0;ua(163,T|0,o|0,p|0,1726,q|0);U=B;B=0;if(U&1)ja=1;else{B=0;eb(503,T|0,1240,229);B=0;ja=0}U=Rb()|0;S=Q;Yua(q);ga=S;ha=U;ia=ja}Yua(p);Yua(o);if(ia){ea=ga;fa=ha}else{ka=ga;la=ha;break b}}else{U=Rb()|0;ea=Q;fa=U}while(0);zb(T|0);ka=ea;la=fa}else R=23;while(0);if((R|0)==23){M=Rb()|0;ka=Q;la=M}k[n>>2]=27468;k[P>>2]=27488;k[L>>2]=27560;Yua(O);Ava(L);vva(P);na=ka;oa=la;Qb(oa|0)}while(0);aa=ca;ba=da;vva(P);Qb(ba|0)}else if((R|0)==32){L=s+56|0;J=s+4|0;k[s>>2]=27524;k[L>>2]=27544;B=0;wa(508,s+56|0,J|0);M=B;B=0;if(M&1){M=Rb()|0;pa=Q;qa=M;vva(L);Qb(qa|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[L>>2]=27488;B=0;va(448,J|0);M=B;B=0;do if(M&1){N=Rb()|0;ra=Q;sa=N}else{k[J>>2]=27560;N=s+36|0;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;k[s+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,J|0,h|0);Y=B;B=0;if(Y&1){Y=Rb()|0;U=Q;Yua(h);Yua(N);Ava(J);ra=U;sa=Y;break}Yua(h);B=0;Y=Ia(40,s|0,141172,41)|0;U=B;B=0;c:do if(!(U&1)?(B=0,Xa(239,Y|0,0)|0,S=B,B=0,!(S&1)):0){S=Ab(20)|0;B=0;eb(502,t|0,140006,66);ta=B;B=0;do if(!(ta&1)){B=0;eb(502,u|0,141780,17);xa=B;B=0;if(xa&1){xa=Rb()|0;ya=Q;Yua(t);za=xa;Aa=ya;break}B=0;wa(510,v|0,J|0);ya=B;B=0;if(ya&1){ya=Rb()|0;Ba=1;Ca=Q;Da=ya}else{B=0;ua(163,S|0,t|0,u|0,1731,v|0);ya=B;B=0;if(ya&1)Ea=1;else{B=0;eb(503,S|0,1240,229);B=0;Ea=0}ya=Rb()|0;xa=Q;Yua(v);Ba=Ea;Ca=xa;Da=ya}Yua(u);Yua(t);if(Ba){za=Da;Aa=Ca}else{Fa=Ca;Ga=Da;break c}}else{ya=Rb()|0;za=ya;Aa=Q}while(0);zb(S|0);Fa=Aa;Ga=za}else R=47;while(0);if((R|0)==47){Y=Rb()|0;Fa=Q;Ga=Y}k[s>>2]=27468;k[L>>2]=27488;k[J>>2]=27560;Yua(N);Ava(J);vva(L);na=Fa;oa=Ga;Qb(oa|0)}while(0);pa=ra;qa=sa;vva(L);Qb(qa|0)}else if((R|0)==56){J=w+56|0;M=w+4|0;k[w>>2]=27524;k[J>>2]=27544;B=0;wa(508,w+56|0,M|0);P=B;B=0;if(P&1){P=Rb()|0;Ha=Q;Ja=P;vva(J);Qb(Ja|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[J>>2]=27488;B=0;va(448,M|0);P=B;B=0;do if(P&1){Y=Rb()|0;Ka=Q;La=Y}else{k[M>>2]=27560;Y=w+36|0;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;k[w+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,M|0,h|0);U=B;B=0;if(U&1){U=Rb()|0;O=Q;Yua(h);Yua(Y);Ava(M);Ka=O;La=U;break}Yua(h);B=0;U=Ia(40,w|0,141214,44)|0;O=B;B=0;d:do if(!(O&1)?(B=0,Xa(239,U|0,0)|0,ta=B,B=0,!(ta&1)):0){ta=Ab(20)|0;B=0;eb(502,x|0,140006,66);T=B;B=0;do if(!(T&1)){B=0;eb(502,y|0,141780,17);ya=B;B=0;if(ya&1){ya=Rb()|0;xa=Q;Yua(x);Ma=ya;Na=xa;break}B=0;wa(510,z|0,M|0);xa=B;B=0;if(xa&1){xa=Rb()|0;Oa=1;Pa=Q;Qa=xa}else{B=0;ua(163,ta|0,x|0,y|0,1736,z|0);xa=B;B=0;if(xa&1)Ra=1;else{B=0;eb(503,ta|0,1240,229);B=0;Ra=0}xa=Rb()|0;ya=Q;Yua(z);Oa=Ra;Pa=ya;Qa=xa}Yua(y);Yua(x);if(Oa){Ma=Qa;Na=Pa}else{Sa=Pa;Ta=Qa;break d}}else{xa=Rb()|0;Ma=xa;Na=Q}while(0);zb(ta|0);Sa=Na;Ta=Ma}else R=71;while(0);if((R|0)==71){U=Rb()|0;Sa=Q;Ta=U}k[w>>2]=27468;k[J>>2]=27488;k[M>>2]=27560;Yua(Y);Ava(M);vva(J);na=Sa;oa=Ta;Qb(oa|0)}while(0);Ha=Ka;Ja=La;vva(J);Qb(Ja|0)}else if((R|0)==84){M=A+56|0;P=A+4|0;k[A>>2]=27524;k[M>>2]=27544;B=0;wa(508,A+56|0,P|0);L=B;B=0;if(L&1){L=Rb()|0;Ua=Q;Va=L;vva(M);Qb(Va|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[M>>2]=27488;B=0;va(448,P|0);L=B;B=0;do if(L&1){U=Rb()|0;Wa=Q;Ya=U}else{k[P>>2]=27560;U=A+36|0;k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;k[U+12>>2]=0;k[A+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;B=0;wa(509,P|0,h|0);O=B;B=0;if(O&1){O=Rb()|0;N=Q;Yua(h);Yua(U);Ava(P);Wa=N;Ya=O;break}Yua(h);B=0;O=Ia(40,A|0,141259,22)|0;N=B;B=0;e:do if(!(N&1)?(B=0,Xa(239,O|0,0)|0,T=B,B=0,!(T&1)):0){T=Ab(20)|0;B=0;eb(502,C|0,140006,66);S=B;B=0;do if(!(S&1)){B=0;eb(502,D|0,141780,17);xa=B;B=0;if(xa&1){xa=Rb()|0;ya=Q;Yua(C);Za=xa;_a=ya;break}B=0;wa(510,E|0,P|0);ya=B;B=0;if(ya&1){ya=Rb()|0;$a=1;ab=Q;bb=ya}else{B=0;ua(163,T|0,C|0,D|0,1747,E|0);ya=B;B=0;if(ya&1)cb=1;else{B=0;eb(503,T|0,1240,229);B=0;cb=0}ya=Rb()|0;xa=Q;Yua(E);$a=cb;ab=xa;bb=ya}Yua(D);Yua(C);if($a){Za=bb;_a=ab}else{db=ab;fb=bb;break e}}else{ya=Rb()|0;Za=ya;_a=Q}while(0);zb(T|0);db=_a;fb=Za}else R=99;while(0);if((R|0)==99){O=Rb()|0;db=Q;fb=O}k[A>>2]=27468;k[M>>2]=27488;k[P>>2]=27560;Yua(U);Ava(P);vva(M);na=db;oa=fb;Qb(oa|0)}while(0);Ua=Wa;Va=Ya;vva(M);Qb(Va|0)}}else{Z=I;_=K;$=i}}else{Z=0;_=0;$=0}while(0);if(G)Tqa(G);G=k[m>>2]|0;if(G)Tqa(G);k[m>>2]=0;k[b>>2]=Z;if(!c){if(_)Tqa(_)}else k[c>>2]=_;if(d){k[d>>2]=$;k[e>>2]=H;r=g;return}if(!$){k[e>>2]=H;r=g;return}Tqa($);k[e>>2]=H;r=g;return}function Yka(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0;f=r;r=r+224|0;g=f+204|0;h=f;i=f+200|0;j=f+196|0;l=f+192|0;m=f+188|0;n=f+184|0;o=f+48|0;q=f+32|0;s=f+20|0;t=f+8|0;p[h>>3]=e;u=k[a+12>>2]|0;v=k[a+16>>2]|0;a:do if(u>>>0<v>>>0){w=u;while(1){x=k[w>>2]|0;w=w+4|0;if(!(Ita(k[x+4>>2]|0,c)|0)){y=x;break}if(w>>>0>=v>>>0)break a}if((th(b)|0)<=0){r=f;return}w=y+24|0;x=y+8|0;z=y+12|0;A=y+20|0;C=y+16|0;D=0;do{E=qh(b,D)|0;Qp(E,k[w>>2]|0,a,k[x>>2]|0,k[z>>2]|0,k[A>>2]|0,d,k[C>>2]|0);D=D+1|0}while((D|0)<(th(b)|0));r=f;return}while(0);k[l>>2]=0;Oka(a,i,j,c)|0;if((k[i>>2]|0)==7){Qka(a,l,m,n,c);i=(th(b)|0)>0;y=k[l>>2]|0;if(i)if(!y){i=0;do{l=qh(b,i)|0;rd[k[(k[l>>2]|0)+48>>2]&511](l,d,h,736);i=i+1|0}while((i|0)<(th(b)|0))}else{i=0;do{h=qh(b,i)|0;Qp(h,y,a,k[m>>2]|0,k[n>>2]|0,k[j>>2]|0,d,7);i=i+1|0}while((i|0)<(th(b)|0));F=35}else F=35;if((F|0)==35?(y|0)!=0:0)Tqa(y);r=f;return}f=o+56|0;y=o+4|0;k[o>>2]=27524;k[f>>2]=27544;B=0;wa(508,o+56|0,y|0);F=B;B=0;if(F&1){F=Rb()|0;G=Q;H=F;vva(f);Qb(H|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[f>>2]=27488;B=0;va(448,y|0);F=B;B=0;do if(F&1){b=Rb()|0;I=Q;J=b}else{k[y>>2]=27560;b=o+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[o+52>>2]=16;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;B=0;wa(509,y|0,g|0);i=B;B=0;if(i&1){i=Rb()|0;d=Q;Yua(g);Yua(b);Ava(y);I=d;J=i;break}Yua(g);i=Lta(c)|0;B=0;d=Ia(40,o|0,c|0,i|0)|0;i=B;B=0;if((!(i&1)?(B=0,i=Ia(40,d|0,141845,22)|0,d=B,B=0,!(d&1)):0)?(B=0,Xa(239,i|0,0)|0,i=B,B=0,!(i&1)):0){i=Ab(20)|0;B=0;eb(502,q|0,140006,66);d=B;B=0;do if(!(d&1)){B=0;eb(502,s|0,141868,16);j=B;B=0;if(j&1){j=Rb()|0;n=Q;Yua(q);K=n;L=j;break}B=0;wa(510,t|0,y|0);j=B;B=0;if(j&1){j=Rb()|0;M=Q;N=j;O=1}else{B=0;ua(163,i|0,q|0,s|0,1924,t|0);j=B;B=0;if(j&1)P=1;else{B=0;eb(503,i|0,1240,229);B=0;P=0}j=Rb()|0;n=Q;Yua(t);M=n;N=j;O=P}Yua(s);Yua(q);if(O){K=M;L=N}else{R=M;S=N;k[o>>2]=27468;k[f>>2]=27488;k[y>>2]=27560;Yua(b);Ava(y);vva(f);Qb(S|0)}}else{j=Rb()|0;K=Q;L=j}while(0);zb(i|0);R=K;S=L;k[o>>2]=27468;k[f>>2]=27488;k[y>>2]=27560;Yua(b);Ava(y);vva(f);Qb(S|0)}d=Rb()|0;R=Q;S=d;k[o>>2]=27468;k[f>>2]=27488;k[y>>2]=27560;Yua(b);Ava(y);vva(f);Qb(S|0)}while(0);G=I;H=J;vva(f);Qb(H|0)}function Zka(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0.0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0;e=r;r=r+752|0;f=e+728|0;g=e+724|0;h=e+720|0;j=e+740|0;l=e+716|0;m=e;n=e+712|0;o=e+708|0;q=e+680|0;s=e+544|0;t=e+696|0;u=e+684|0;v=e+528|0;w=e+392|0;x=e+376|0;y=e+92|0;z=e+80|0;A=e+240|0;C=e+68|0;D=e+56|0;E=e+44|0;F=e+104|0;G=e+32|0;H=e+20|0;I=e+8|0;J=k[a+12>>2]|0;K=k[a+16>>2]|0;a:do if(J>>>0<K>>>0){L=J;while(1){M=k[L>>2]|0;L=L+4|0;if(!(Ita(k[M+4>>2]|0,c)|0)){N=M;break}if(L>>>0>=K>>>0)break a}if((th(b)|0)<=0){r=e;return}L=N+24|0;M=N+8|0;O=N+12|0;P=N+20|0;R=N+16|0;S=0;do{T=qh(b,S)|0;Qp(T,k[L>>2]|0,a,k[M>>2]|0,k[O>>2]|0,k[P>>2]|0,d,k[R>>2]|0);S=S+1|0}while((S|0)<(th(b)|0));r=e;return}while(0);k[n>>2]=0;Oka(a,g,h,c)|0;N=k[g>>2]|0;b:do switch(N|0){case 1:{Kka(a,j,c);if((th(b)|0)>0){g=(i[j>>0]|0)!=0;K=0;do{J=qh(b,K)|0;nd[k[(k[J>>2]|0)+40>>2]&1023](J,g,d);K=K+1|0}while((K|0)<(th(b)|0))}break}case 2:{Bka(a,l,c);if((th(b)|0)>0){K=k[l>>2]|0;g=0;do{J=qh(b,g)|0;nd[k[(k[J>>2]|0)+36>>2]&1023](J,K,d);g=g+1|0}while((g|0)<(th(b)|0))}break}case 3:{Pka(a,m,c);if((th(b)|0)>0){U=+p[m>>3];g=0;do{K=qh(b,g)|0;Nc[k[(k[K>>2]|0)+32>>2]&31](K,U,d);g=g+1|0}while((g|0)<(th(b)|0))}break}case 5:{Qka(a,n,o,q,c);g=k[n>>2]|0;if(g){if((th(b)|0)>0)V=0;else{W=g;X=129;break b}while(1){K=qh(b,V)|0;Qp(K,g,a,k[o>>2]|0,k[q>>2]|0,k[h>>2]|0,d,5);V=V+1|0;if((V|0)>=(th(b)|0)){Y=g;X=128;break b}}}g=s+56|0;K=s+4|0;k[s>>2]=27524;k[g>>2]=27544;B=0;wa(508,s+56|0,K|0);J=B;B=0;if(J&1){J=Rb()|0;Z=Q;_=J;vva(g);Qb(_|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[g>>2]=27488;B=0;va(448,K|0);J=B;B=0;do if(J&1){S=Rb()|0;$=Q;aa=S}else{k[K>>2]=27560;S=s+36|0;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;k[s+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,K|0,f|0);R=B;B=0;if(R&1){R=Rb()|0;P=Q;Yua(f);Yua(S);Ava(K);$=P;aa=R;break}Yua(f);B=0;R=Ia(40,s|0,141051,1)|0;P=B;B=0;c:do if(((!(P&1)?(O=Lta(c)|0,B=0,M=Ia(40,R|0,c|0,O|0)|0,O=B,B=0,!(O&1)):0)?(B=0,O=Ia(40,M|0,141885,26)|0,M=B,B=0,!(M&1)):0)?(B=0,Xa(239,O|0,0)|0,O=B,B=0,!(O&1)):0){O=Ab(20)|0;B=0;eb(502,t|0,140006,66);M=B;B=0;do if(!(M&1)){B=0;eb(502,u|0,141868,16);L=B;B=0;if(L&1){L=Rb()|0;T=Q;Yua(t);ba=T;ca=L;break}B=0;wa(510,v|0,K|0);L=B;B=0;if(L&1){L=Rb()|0;da=Q;ea=L;fa=1}else{B=0;ua(163,O|0,t|0,u|0,1992,v|0);L=B;B=0;if(L&1)ga=1;else{B=0;eb(503,O|0,1240,229);B=0;ga=0}L=Rb()|0;T=Q;Yua(v);da=T;ea=L;fa=ga}Yua(u);Yua(t);if(fa){ba=da;ca=ea}else{ha=da;ia=ea;break c}}else{L=Rb()|0;ba=Q;ca=L}while(0);zb(O|0);ha=ba;ia=ca}else X=36;while(0);if((X|0)==36){R=Rb()|0;ha=Q;ia=R}k[s>>2]=27468;k[g>>2]=27488;k[K>>2]=27560;Yua(S);Ava(K);vva(g);ja=ha;ka=ia;Qb(ka|0)}while(0);Z=$;_=aa;vva(g);Qb(_|0);break}case 6:{Qka(a,n,o,q,c);K=k[n>>2]|0;if(K){if((th(b)|0)>0)la=0;else{W=K;X=129;break b}while(1){J=qh(b,la)|0;Qp(J,K,a,k[o>>2]|0,k[q>>2]|0,k[h>>2]|0,d,6);la=la+1|0;if((la|0)>=(th(b)|0)){Y=K;X=128;break b}}}K=w+56|0;g=w+4|0;k[w>>2]=27524;k[K>>2]=27544;B=0;wa(508,w+56|0,g|0);J=B;B=0;if(J&1){J=Rb()|0;ma=Q;na=J;vva(K);Qb(na|0)}k[w+128>>2]=0;k[w+132>>2]=-1;k[w>>2]=27468;k[K>>2]=27488;B=0;va(448,g|0);J=B;B=0;do if(J&1){R=Rb()|0;oa=Q;pa=R}else{k[g>>2]=27560;R=w+36|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[w+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,g|0,f|0);P=B;B=0;if(P&1){P=Rb()|0;M=Q;Yua(f);Yua(R);Ava(g);oa=M;pa=P;break}Yua(f);B=0;P=Ia(40,w|0,141051,1)|0;M=B;B=0;d:do if(((!(M&1)?(L=Lta(c)|0,B=0,T=Ia(40,P|0,c|0,L|0)|0,L=B,B=0,!(L&1)):0)?(B=0,L=Ia(40,T|0,141885,26)|0,T=B,B=0,!(T&1)):0)?(B=0,Xa(239,L|0,0)|0,L=B,B=0,!(L&1)):0){L=Ab(20)|0;B=0;eb(502,x|0,140006,66);T=B;B=0;do if(!(T&1)){B=0;eb(502,y|0,141868,16);qa=B;B=0;if(qa&1){qa=Rb()|0;ra=Q;Yua(x);sa=qa;ta=ra;break}B=0;wa(510,z|0,g|0);ra=B;B=0;if(ra&1){ra=Rb()|0;xa=1;ya=Q;za=ra}else{B=0;ua(163,L|0,x|0,y|0,2e3,z|0);ra=B;B=0;if(ra&1)Aa=1;else{B=0;eb(503,L|0,1240,229);B=0;Aa=0}ra=Rb()|0;qa=Q;Yua(z);xa=Aa;ya=qa;za=ra}Yua(y);Yua(x);if(xa){sa=za;ta=ya}else{Ba=ya;Ca=za;break d}}else{ra=Rb()|0;sa=ra;ta=Q}while(0);zb(L|0);Ba=ta;Ca=sa}else X=64;while(0);if((X|0)==64){P=Rb()|0;Ba=Q;Ca=P}k[w>>2]=27468;k[K>>2]=27488;k[g>>2]=27560;Yua(R);Ava(g);vva(K);ja=Ba;ka=Ca;Qb(ka|0)}while(0);ma=oa;na=pa;vva(K);Qb(na|0);break}case 7:{Qka(a,n,o,q,c);g=k[n>>2]|0;if(g){if((th(b)|0)>0)Da=0;else{W=g;X=129;break b}while(1){J=qh(b,Da)|0;Qp(J,g,a,k[o>>2]|0,k[q>>2]|0,k[h>>2]|0,d,7);Da=Da+1|0;if((Da|0)>=(th(b)|0)){Y=g;X=128;break b}}}g=A+56|0;K=A+4|0;k[A>>2]=27524;k[g>>2]=27544;B=0;wa(508,A+56|0,K|0);J=B;B=0;if(J&1){J=Rb()|0;Ea=Q;Fa=J;vva(g);Qb(Fa|0)}k[A+128>>2]=0;k[A+132>>2]=-1;k[A>>2]=27468;k[g>>2]=27488;B=0;va(448,K|0);J=B;B=0;do if(J&1){P=Rb()|0;Ga=Q;Ha=P}else{k[K>>2]=27560;P=A+36|0;k[P>>2]=0;k[P+4>>2]=0;k[P+8>>2]=0;k[P+12>>2]=0;k[A+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,K|0,f|0);M=B;B=0;if(M&1){M=Rb()|0;S=Q;Yua(f);Yua(P);Ava(K);Ga=S;Ha=M;break}Yua(f);B=0;M=Ia(40,A|0,141051,1)|0;S=B;B=0;e:do if(((!(S&1)?(T=Lta(c)|0,B=0,O=Ia(40,M|0,c|0,T|0)|0,T=B,B=0,!(T&1)):0)?(B=0,T=Ia(40,O|0,141885,26)|0,O=B,B=0,!(O&1)):0)?(B=0,Xa(239,T|0,0)|0,T=B,B=0,!(T&1)):0){T=Ab(20)|0;B=0;eb(502,C|0,140006,66);O=B;B=0;do if(!(O&1)){B=0;eb(502,D|0,141868,16);ra=B;B=0;if(ra&1){ra=Rb()|0;qa=Q;Yua(C);Ja=ra;Ka=qa;break}B=0;wa(510,E|0,K|0);qa=B;B=0;if(qa&1){qa=Rb()|0;La=1;Ma=Q;Na=qa}else{B=0;ua(163,T|0,C|0,D|0,2008,E|0);qa=B;B=0;if(qa&1)Oa=1;else{B=0;eb(503,T|0,1240,229);B=0;Oa=0}qa=Rb()|0;ra=Q;Yua(E);La=Oa;Ma=ra;Na=qa}Yua(D);Yua(C);if(La){Ja=Na;Ka=Ma}else{Pa=Ma;Qa=Na;break e}}else{qa=Rb()|0;Ja=qa;Ka=Q}while(0);zb(T|0);Pa=Ka;Qa=Ja}else X=92;while(0);if((X|0)==92){M=Rb()|0;Pa=Q;Qa=M}k[A>>2]=27468;k[g>>2]=27488;k[K>>2]=27560;Yua(P);Ava(K);vva(g);ja=Pa;ka=Qa;Qb(ka|0)}while(0);Ea=Ga;Fa=Ha;vva(g);Qb(Fa|0);break}default:{K=F+56|0;J=F+4|0;k[F>>2]=27524;k[K>>2]=27544;B=0;wa(508,F+56|0,J|0);M=B;B=0;if(M&1){M=Rb()|0;Ra=Q;Sa=M;vva(K);Qb(Sa|0)}k[F+128>>2]=0;k[F+132>>2]=-1;k[F>>2]=27468;k[K>>2]=27488;B=0;va(448,J|0);M=B;B=0;do if(M&1){S=Rb()|0;Ta=Q;Ua=S}else{k[J>>2]=27560;S=F+36|0;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;k[F+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,J|0,f|0);R=B;B=0;if(R&1){R=Rb()|0;O=Q;Yua(f);Yua(S);Ava(J);Ta=O;Ua=R;break}Yua(f);B=0;R=Ia(40,F|0,141912,10)|0;O=B;B=0;f:do if(((((!(O&1)?(B=0,L=Xa(242,R|0,N|0)|0,qa=B,B=0,!(qa&1)):0)?(B=0,qa=Ia(40,L|0,141923,47)|0,L=B,B=0,!(L&1)):0)?(L=Lta(c)|0,B=0,ra=Ia(40,qa|0,c|0,L|0)|0,L=B,B=0,!(L&1)):0)?(B=0,L=Ia(40,ra|0,141971,2)|0,ra=B,B=0,!(ra&1)):0)?(B=0,Xa(239,L|0,0)|0,L=B,B=0,!(L&1)):0){L=Ab(20)|0;B=0;eb(502,G|0,140006,66);ra=B;B=0;do if(!(ra&1)){B=0;eb(502,H|0,141868,16);qa=B;B=0;if(qa&1){qa=Rb()|0;Va=Q;Yua(G);Wa=qa;Ya=Va;break}B=0;wa(510,I|0,J|0);Va=B;B=0;if(Va&1){Va=Rb()|0;Za=1;_a=Q;$a=Va}else{B=0;ua(163,L|0,G|0,H|0,2015,I|0);Va=B;B=0;if(Va&1)ab=1;else{B=0;eb(503,L|0,1240,229);B=0;ab=0}Va=Rb()|0;qa=Q;Yua(I);Za=ab;_a=qa;$a=Va}Yua(H);Yua(G);if(Za){Wa=$a;Ya=_a}else{bb=_a;cb=$a;break f}}else{Va=Rb()|0;Wa=Va;Ya=Q}while(0);zb(L|0);bb=Ya;cb=Wa}else X=120;while(0);if((X|0)==120){R=Rb()|0;bb=Q;cb=R}k[F>>2]=27468;k[K>>2]=27488;k[J>>2]=27560;Yua(S);Ava(J);vva(K);ja=bb;ka=cb;Qb(ka|0)}while(0);Ra=Ta;Sa=Ua;vva(K);Qb(Sa|0)}}while(0);if((X|0)==128?(Y|0)!=0:0){W=Y;X=129}if((X|0)==129)Tqa(W);r=e;return}function _ka(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;c=a+4|0;d=k[a>>2]|0;e=((k[c>>2]|0)-d>>2)+1|0;if(e>>>0>1073741823){Oqa(a);f=k[a>>2]|0}else f=d;d=a+8|0;g=(k[d>>2]|0)-f|0;if(g>>2>>>0<536870911){h=g>>1;g=h>>>0<e>>>0?e:h;h=k[c>>2]|0;e=h-f>>2;if(!g){i=0;j=0;l=e;m=h}else{n=g;o=h;p=e;q=6}}else{e=k[c>>2]|0;n=1073741823;o=e;p=e-f>>2;q=6}if((q|0)==6){i=n;j=Qqa(n<<2)|0;l=p;m=o}o=j+(l<<2)|0;k[o>>2]=k[b>>2];b=m-f|0;m=o+(0-(b>>2)<<2)|0;TEa(m|0,f|0,b|0)|0;k[a>>2]=m;k[c>>2]=o+4;k[d>>2]=j+(i<<2);if(!f)return;Sqa(f);return}function $ka(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;c=a+4|0;d=k[a>>2]|0;e=((k[c>>2]|0)-d>>2)+1|0;if(e>>>0>1073741823){Oqa(a);f=k[a>>2]|0}else f=d;d=a+8|0;g=(k[d>>2]|0)-f|0;if(g>>2>>>0<536870911){h=g>>1;g=h>>>0<e>>>0?e:h;h=k[c>>2]|0;e=h-f>>2;if(!g){i=0;j=0;l=e;m=h}else{n=g;o=h;p=e;q=6}}else{e=k[c>>2]|0;n=1073741823;o=e;p=e-f>>2;q=6}if((q|0)==6){i=n;j=Qqa(n<<2)|0;l=p;m=o}o=j+(l<<2)|0;k[o>>2]=k[b>>2];b=m-f|0;m=o+(0-(b>>2)<<2)|0;TEa(m|0,f|0,b|0)|0;k[a>>2]=m;k[c>>2]=o+4;k[d>>2]=j+(i<<2);if(!f)return;Sqa(f);return}function ala(a,b,c){a=a|0;b=b|0;c=c|0;k[a+4>>2]=b;k[a+8>>2]=c;cp(b,a+12|0,111);return}function bla(a){a=a|0;return}function cla(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0.0,o=0.0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0;d=r;r=r+208|0;e=d+152|0;f=d+16|0;g=d+8|0;h=d;i=d+188|0;j=d+176|0;l=d+164|0;switch(k[a+12>>2]|0){case 1:{dla(a,b,c);r=d;return}case 3:{ela(a,b,c);r=d;return}case 4:{dla(a,h,c);m=a+4|0;Cp(k[m>>2]|0,e,c,666);Cp(k[m>>2]|0,f,c,653);n=+uq(k[m>>2]|0,+p[f>>3]);dO(k[(k[m>>2]|0)+36>>2]|0,g,112);o=+p[h>>3]/+ja(+((+p[e>>3]-n)/+p[g>>3]));p[b>>3]=o;r=d;return}default:{d=f+56|0;b=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,b|0);g=B;B=0;if(g&1){g=Rb()|0;q=Q;s=g;vva(d);Qb(s|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,b|0);g=B;B=0;do if(g&1){h=Rb()|0;t=Q;u=h}else{k[b>>2]=27560;h=f+36|0;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;k[h+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,b|0,e|0);m=B;B=0;if(m&1){m=Rb()|0;c=Q;Yua(e);Yua(h);Ava(b);t=c;u=m;break}Yua(e);B=0;m=Ia(40,f|0,145010,13)|0;c=B;B=0;if(!(c&1)?(B=0,Xa(239,m|0,0)|0,m=B,B=0,!(m&1)):0){m=Ab(20)|0;B=0;eb(502,i|0,141974,73);c=B;B=0;do if(!(c&1)){B=0;eb(502,j|0,142048,18);a=B;B=0;if(a&1){a=Rb()|0;v=Q;Yua(i);w=v;x=a;break}B=0;wa(510,l|0,b|0);a=B;B=0;if(a&1){a=Rb()|0;y=Q;z=a;A=1}else{B=0;ua(163,m|0,i|0,j|0,55,l|0);a=B;B=0;if(a&1)C=1;else{B=0;eb(503,m|0,1240,229);B=0;C=0}a=Rb()|0;v=Q;Yua(l);y=v;z=a;A=C}Yua(j);Yua(i);if(A){w=y;x=z}else{D=y;E=z;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(h);Ava(b);vva(d);Qb(E|0)}}else{a=Rb()|0;w=Q;x=a}while(0);zb(m|0);D=w;E=x;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(h);Ava(b);vva(d);Qb(E|0)}c=Rb()|0;D=Q;E=c;k[f>>2]=27468;k[d>>2]=27488;k[b>>2]=27560;Yua(h);Ava(b);vva(d);Qb(E|0)}while(0);q=t;s=u;vva(d);Qb(s|0)}}}function dla(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0;d=r;r=r+272|0;e=d+248|0;f=d+64|0;g=d+56|0;h=d+48|0;i=d+40|0;j=d+32|0;l=d+16|0;m=d+8|0;n=d;o=d+112|0;q=d+96|0;s=d+84|0;t=d+72|0;u=a+4|0;Bp(k[u>>2]|0,i,107);Bp(k[u>>2]|0,j,108);Cp(k[u>>2]|0,m,c,353);Cp(k[u>>2]|0,l,c,64);Cp(k[u>>2]|0,n,c,999);Cp(k[u>>2]|0,d+24|0,c,105);v=+Dp(k[u>>2]|0,266);w=+Dp(k[u>>2]|0,265);x=+Dp(k[u>>2]|0,65);y=+p[i>>3];z=+p[j>>3]/y;A=1.0/y;y=x*(w*+p[m>>3]+v*(+p[l>>3]-+p[n>>3]));v=y<0.0?0.0:y;switch(k[a+8>>2]|0){case 1:{Cp(k[u>>2]|0,f,c,674);y=+p[f>>3];C=+aa(+(y*y));break}case 2:{Cp(k[u>>2]|0,f,c,674);Cp(k[u>>2]|0,g,c,677);y=+p[f>>3];w=+p[g>>3];C=+aa(+(y*y+w*w));break}case 3:{Cp(k[u>>2]|0,f,c,674);Cp(k[u>>2]|0,g,c,677);Cp(k[u>>2]|0,h,c,679);w=+p[f>>3];y=+p[g>>3];x=+p[h>>3];C=+aa(+(w*w+y*y+x*x));break}default:{h=o+56|0;g=o+4|0;k[o>>2]=27524;k[h>>2]=27544;B=0;wa(508,o+56|0,g|0);f=B;B=0;if(f&1){f=Rb()|0;D=Q;E=f;vva(h);Qb(E|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[h>>2]=27488;B=0;va(448,g|0);f=B;B=0;do if(f&1){c=Rb()|0;F=Q;G=c}else{k[g>>2]=27560;c=o+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[o+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,g|0,e|0);u=B;B=0;if(u&1){u=Rb()|0;a=Q;Yua(e);Yua(c);Ava(g);F=a;G=u;break}Yua(e);B=0;u=Ia(40,o|0,145010,13)|0;a=B;B=0;if(!(a&1)?(B=0,Xa(239,u|0,0)|0,u=B,B=0,!(u&1)):0){u=Ab(20)|0;B=0;eb(502,q|0,141974,73);a=B;B=0;do if(!(a&1)){B=0;eb(502,s|0,142067,25);n=B;B=0;if(n&1){n=Rb()|0;l=Q;Yua(q);H=l;I=n;break}B=0;wa(510,t|0,g|0);n=B;B=0;if(n&1){n=Rb()|0;J=Q;K=n;L=1}else{B=0;ua(163,u|0,q|0,s|0,111,t|0);n=B;B=0;if(n&1)M=1;else{B=0;eb(503,u|0,1240,229);B=0;M=0}n=Rb()|0;l=Q;Yua(t);J=l;K=n;L=M}Yua(s);Yua(q);if(L){H=J;I=K}else{N=J;O=K;k[o>>2]=27468;k[h>>2]=27488;k[g>>2]=27560;Yua(c);Ava(g);vva(h);Qb(O|0)}}else{n=Rb()|0;H=Q;I=n}while(0);zb(u|0);N=H;O=I;k[o>>2]=27468;k[h>>2]=27488;k[g>>2]=27560;Yua(c);Ava(g);vva(h);Qb(O|0)}a=Rb()|0;N=Q;O=a;k[o>>2]=27468;k[h>>2]=27488;k[g>>2]=27560;Yua(c);Ava(g);vva(h);Qb(O|0)}while(0);D=F;E=G;vva(h);Qb(E|0)}}x=A+-1.0;if(x<0.0&C==0.0){P=0.0;p[b>>3]=P;r=d;return}P=+ba(+v,+z)*+ba(+C,+x);p[b>>3]=P;r=d;return}function ela(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0;d=r;r=r+256|0;e=d+244|0;f=d+240|0;g=d+56|0;h=d+48|0;i=d+40|0;j=d+32|0;l=d+24|0;m=d+16|0;n=d+8|0;o=d;q=d+104|0;s=d+88|0;t=d+76|0;u=d+64|0;v=a+4|0;Bp(k[v>>2]|0,g,108);Bp(k[v>>2]|0,h,110);Cp(k[v>>2]|0,i,c,104);Cp(k[v>>2]|0,l,c,217);cO(k[(k[v>>2]|0)+36>>2]|0,f,116);w=k[v>>2]|0;if((k[f>>2]|0)==1)Cp(w,j,c,126);else Cp(w,j,c,115);if(+p[j>>3]<0.0)p[j>>3]=0.0;switch(k[a+8>>2]|0){case 1:{Cp(k[v>>2]|0,m,c,674);x=+p[m>>3];y=+aa(+(x*x));break}case 2:{Cp(k[v>>2]|0,m,c,674);Cp(k[v>>2]|0,n,c,677);x=+p[m>>3];z=+p[n>>3];y=+aa(+(x*x+z*z));break}case 3:{Cp(k[v>>2]|0,m,c,674);Cp(k[v>>2]|0,n,c,677);Cp(k[v>>2]|0,o,c,679);z=+p[m>>3];x=+p[n>>3];A=+p[o>>3];y=+aa(+(z*z+x*x+A*A));break}default:{o=q+56|0;n=q+4|0;k[q>>2]=27524;k[o>>2]=27544;B=0;wa(508,q+56|0,n|0);m=B;B=0;if(m&1){m=Rb()|0;C=Q;D=m;vva(o);Qb(D|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[o>>2]=27488;B=0;va(448,n|0);m=B;B=0;do if(m&1){c=Rb()|0;E=Q;F=c}else{k[n>>2]=27560;c=q+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[q+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,n|0,e|0);v=B;B=0;if(v&1){v=Rb()|0;a=Q;Yua(e);Yua(c);Ava(n);E=a;F=v;break}Yua(e);B=0;v=Ia(40,q|0,145010,13)|0;a=B;B=0;if(!(a&1)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,s|0,141974,73);a=B;B=0;do if(!(a&1)){B=0;eb(502,t|0,142093,23);w=B;B=0;if(w&1){w=Rb()|0;f=Q;Yua(s);G=f;H=w;break}B=0;wa(510,u|0,n|0);w=B;B=0;if(w&1){w=Rb()|0;I=Q;J=w;K=1}else{B=0;ua(163,v|0,s|0,t|0,171,u|0);w=B;B=0;if(w&1)L=1;else{B=0;eb(503,v|0,1240,229);B=0;L=0}w=Rb()|0;f=Q;Yua(u);I=f;J=w;K=L}Yua(t);Yua(s);if(K){G=I;H=J}else{M=I;N=J;k[q>>2]=27468;k[o>>2]=27488;k[n>>2]=27560;Yua(c);Ava(n);vva(o);Qb(N|0)}}else{w=Rb()|0;G=Q;H=w}while(0);zb(v|0);M=G;N=H;k[q>>2]=27468;k[o>>2]=27488;k[n>>2]=27560;Yua(c);Ava(n);vva(o);Qb(N|0)}a=Rb()|0;M=Q;N=a;k[q>>2]=27468;k[o>>2]=27488;k[n>>2]=27560;Yua(c);Ava(n);vva(o);Qb(N|0)}while(0);C=E;D=F;vva(o);Qb(D|0)}}A=+p[g>>3];if(A==1.0)O=1.0;else{x=A+-1.0;O=+ba(+x,+x)/+ba(+A,+A)}x=+p[h>>3];z=+p[l>>3];P=+ba(+x,+z);R=+p[j>>3];S=P*+ba(+R,+z);P=+p[i>>3];T=y/(S*P);S=T/(O*+ba(+T,+A)+1.0);if(y==0.0|R==0.0){U=0.0;p[b>>3]=U;r=d;return}U=-(x*R/(y*z)*+ba(+S,+((1.0-z)/z))*(S/P-S*(S*(O*A*+ba(+T,+(A+-1.0))))/P));p[b>>3]=U;r=d;return}function fla(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0.0,q=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0;d=r;r=r+208|0;e=d+152|0;f=d+16|0;g=d+8|0;h=d;i=d+188|0;j=d+176|0;l=d+164|0;m=a+12|0;switch(k[m>>2]|0){case 1:{gla(a,b,c);r=d;return}case 2:{hla(a,b,c);r=d;return}case 3:{ila(a,b,c);r=d;return}case 4:{gla(a,h,c);n=a+4|0;Cp(k[n>>2]|0,e,c,666);Cp(k[n>>2]|0,f,c,653);o=+uq(k[n>>2]|0,+p[f>>3]);dO(k[(k[n>>2]|0)+36>>2]|0,g,112);q=+p[h>>3]/+ja(+((+p[e>>3]-o)/+p[g>>3]));p[b>>3]=q;r=d;return}case 5:{jla(a,b,c);r=d;return}case 6:{hla(a,h,c);n=a+4|0;Cp(k[n>>2]|0,e,c,666);Cp(k[n>>2]|0,f,c,653);q=+uq(k[n>>2]|0,+p[f>>3]);dO(k[(k[n>>2]|0)+36>>2]|0,g,112);o=+p[h>>3]/+ja(+((+p[e>>3]-q)/+p[g>>3]));p[b>>3]=o;r=d;return}case 7:{kla(a,b,c);r=d;return}case 8:{lla(a,b,c);r=d;return}default:{d=f+56|0;c=f+4|0;k[f>>2]=27524;k[d>>2]=27544;B=0;wa(508,f+56|0,c|0);b=B;B=0;if(b&1){b=Rb()|0;s=Q;t=b;vva(d);Qb(t|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[d>>2]=27488;B=0;va(448,c|0);b=B;B=0;do if(b&1){a=Rb()|0;u=Q;v=a}else{k[c>>2]=27560;a=f+36|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[f+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,c|0,e|0);g=B;B=0;if(g&1){g=Rb()|0;h=Q;Yua(e);Yua(a);Ava(c);u=h;v=g;break}Yua(e);B=0;g=Ia(40,f|0,142117,13)|0;h=B;B=0;if(((!(h&1)?(B=0,h=Xa(242,g|0,k[m>>2]|0)|0,g=B,B=0,!(g&1)):0)?(B=0,g=Ia(40,h|0,144645,14)|0,h=B,B=0,!(h&1)):0)?(B=0,Xa(239,g|0,0)|0,g=B,B=0,!(g&1)):0){g=Ab(20)|0;B=0;eb(502,i|0,141974,73);h=B;B=0;do if(!(h&1)){B=0;eb(502,j|0,142131,9);n=B;B=0;if(n&1){n=Rb()|0;w=Q;Yua(i);x=w;y=n;break}B=0;wa(510,l|0,c|0);n=B;B=0;if(n&1){n=Rb()|0;z=Q;A=n;C=1}else{B=0;ua(163,g|0,i|0,j|0,250,l|0);n=B;B=0;if(n&1)D=1;else{B=0;eb(503,g|0,1240,229);B=0;D=0}n=Rb()|0;w=Q;Yua(l);z=w;A=n;C=D}Yua(j);Yua(i);if(C){x=z;y=A}else{E=z;F=A;k[f>>2]=27468;k[d>>2]=27488;k[c>>2]=27560;Yua(a);Ava(c);vva(d);Qb(F|0)}}else{n=Rb()|0;x=Q;y=n}while(0);zb(g|0);E=x;F=y;k[f>>2]=27468;k[d>>2]=27488;k[c>>2]=27560;Yua(a);Ava(c);vva(d);Qb(F|0)}h=Rb()|0;E=Q;F=h;k[f>>2]=27468;k[d>>2]=27488;k[c>>2]=27560;Yua(a);Ava(c);vva(d);Qb(F|0)}while(0);s=u;t=v;vva(d);Qb(t|0)}}}function gla(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0.0;d=r;r=r+272|0;e=d+248|0;f=d+64|0;g=d+56|0;h=d+48|0;i=d+40|0;j=d+32|0;l=d+24|0;m=d+16|0;n=d+8|0;o=d;q=d+112|0;s=d+96|0;t=d+84|0;u=d+72|0;v=a+4|0;Bp(k[v>>2]|0,f,107);Bp(k[v>>2]|0,g,108);Cp(k[v>>2]|0,h,c,353);Cp(k[v>>2]|0,i,c,64);Cp(k[v>>2]|0,j,c,999);Cp(k[v>>2]|0,o,c,105);w=+Dp(k[v>>2]|0,266);x=+Dp(k[v>>2]|0,265);y=+Dp(k[v>>2]|0,65);z=+p[f>>3];A=+p[g>>3]/z;C=1.0/z;z=y*(x*+p[h>>3]+w*(+p[i>>3]-+p[j>>3]));w=z<0.0?0.0:z;switch(k[a+8>>2]|0){case 1:{Cp(k[v>>2]|0,l,c,674);z=+p[l>>3];D=+aa(+(z*z));break}case 2:{Cp(k[v>>2]|0,l,c,674);Cp(k[v>>2]|0,m,c,677);z=+p[l>>3];x=+p[m>>3];D=+aa(+(z*z+x*x));break}case 3:{Cp(k[v>>2]|0,l,c,674);Cp(k[v>>2]|0,m,c,677);Cp(k[v>>2]|0,n,c,679);x=+p[l>>3];z=+p[m>>3];y=+p[n>>3];D=+aa(+(x*x+z*z+y*y));break}default:{n=q+56|0;m=q+4|0;k[q>>2]=27524;k[n>>2]=27544;B=0;wa(508,q+56|0,m|0);l=B;B=0;if(l&1){l=Rb()|0;E=Q;F=l;vva(n);Qb(F|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[n>>2]=27488;B=0;va(448,m|0);l=B;B=0;do if(l&1){c=Rb()|0;G=Q;H=c}else{k[m>>2]=27560;c=q+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[q+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,m|0,e|0);v=B;B=0;if(v&1){v=Rb()|0;a=Q;Yua(e);Yua(c);Ava(m);G=a;H=v;break}Yua(e);B=0;v=Ia(40,q|0,145010,13)|0;a=B;B=0;if(!(a&1)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,s|0,141974,73);a=B;B=0;do if(!(a&1)){B=0;eb(502,t|0,142141,16);j=B;B=0;if(j&1){j=Rb()|0;i=Q;Yua(s);I=i;J=j;break}B=0;wa(510,u|0,m|0);j=B;B=0;if(j&1){j=Rb()|0;K=Q;L=j;M=1}else{B=0;ua(163,v|0,s|0,t|0,481,u|0);j=B;B=0;if(j&1)N=1;else{B=0;eb(503,v|0,1240,229);B=0;N=0}j=Rb()|0;i=Q;Yua(u);K=i;L=j;M=N}Yua(t);Yua(s);if(M){I=K;J=L}else{O=K;P=L;k[q>>2]=27468;k[n>>2]=27488;k[m>>2]=27560;Yua(c);Ava(m);vva(n);Qb(P|0)}}else{j=Rb()|0;I=Q;J=j}while(0);zb(v|0);O=I;P=J;k[q>>2]=27468;k[n>>2]=27488;k[m>>2]=27560;Yua(c);Ava(m);vva(n);Qb(P|0)}a=Rb()|0;O=Q;P=a;k[q>>2]=27468;k[n>>2]=27488;k[m>>2]=27560;Yua(c);Ava(m);vva(n);Qb(P|0)}while(0);E=G;F=H;vva(n);Qb(F|0)}}y=C+-1.0;if(y<0.0&D==0.0){R=0.0;p[b>>3]=R;r=d;return}C=+p[o>>3];R=C*C*+ba(+w,+A)*+ba(+D,+y);p[b>>3]=R;r=d;return}function hla(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0;d=r;r=r+240|0;e=d+216|0;f=d+32|0;g=d+24|0;h=d+16|0;i=d+8|0;j=d;l=d+80|0;m=d+64|0;n=d+52|0;o=d+40|0;q=a+4|0;Cp(k[q>>2]|0,f,c,110);Bp(k[q>>2]|0,g,109);switch(k[a+8>>2]|0){case 1:{Cp(k[q>>2]|0,h,c,674);s=+p[h>>3];t=+aa(+(s*s));break}case 2:{Cp(k[q>>2]|0,h,c,674);Cp(k[q>>2]|0,i,c,677);s=+p[h>>3];u=+p[i>>3];t=+aa(+(s*s+u*u));break}case 3:{Cp(k[q>>2]|0,h,c,674);Cp(k[q>>2]|0,i,c,677);Cp(k[q>>2]|0,j,c,679);u=+p[h>>3];s=+p[i>>3];v=+p[j>>3];t=+aa(+(u*u+s*s+v*v));break}default:{j=l+56|0;i=l+4|0;k[l>>2]=27524;k[j>>2]=27544;B=0;wa(508,l+56|0,i|0);h=B;B=0;if(h&1){h=Rb()|0;w=Q;x=h;vva(j);Qb(x|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[j>>2]=27488;B=0;va(448,i|0);h=B;B=0;do if(h&1){c=Rb()|0;y=Q;z=c}else{k[i>>2]=27560;c=l+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[l+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,i|0,e|0);q=B;B=0;if(q&1){q=Rb()|0;a=Q;Yua(e);Yua(c);Ava(i);y=a;z=q;break}Yua(e);B=0;q=Ia(40,l|0,145010,13)|0;a=B;B=0;if(!(a&1)?(B=0,Xa(239,q|0,0)|0,q=B,B=0,!(q&1)):0){q=Ab(20)|0;B=0;eb(502,m|0,141974,73);a=B;B=0;do if(!(a&1)){B=0;eb(502,n|0,142158,17);A=B;B=0;if(A&1){A=Rb()|0;C=Q;Yua(m);D=C;E=A;break}B=0;wa(510,o|0,i|0);A=B;B=0;if(A&1){A=Rb()|0;F=Q;G=A;H=1}else{B=0;ua(163,q|0,m|0,n|0,588,o|0);A=B;B=0;if(A&1)I=1;else{B=0;eb(503,q|0,1240,229);B=0;I=0}A=Rb()|0;C=Q;Yua(o);F=C;G=A;H=I}Yua(n);Yua(m);if(H){D=F;E=G}else{J=F;K=G;k[l>>2]=27468;k[j>>2]=27488;k[i>>2]=27560;Yua(c);Ava(i);vva(j);Qb(K|0)}}else{A=Rb()|0;D=Q;E=A}while(0);zb(q|0);J=D;K=E;k[l>>2]=27468;k[j>>2]=27488;k[i>>2]=27560;Yua(c);Ava(i);vva(j);Qb(K|0)}a=Rb()|0;J=Q;K=a;k[l>>2]=27468;k[j>>2]=27488;k[i>>2]=27560;Yua(c);Ava(i);vva(j);Qb(K|0)}while(0);w=y;x=z;vva(j);Qb(x|0)}}v=+p[g>>3];if(t==0.0?1.0/v+-1.0<0.0:0){L=0.0;p[b>>3]=L;r=d;return}L=+ba(+(+p[f>>3]),+(-1.0/v))*+ba(+t,+(1.0/v+-1.0));p[b>>3]=L;r=d;return}function ila(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0;d=r;r=r+256|0;e=d+244|0;f=d+240|0;g=d+56|0;h=d+48|0;i=d+40|0;j=d+32|0;l=d+24|0;m=d+16|0;n=d+8|0;o=d;q=d+104|0;s=d+88|0;t=d+76|0;u=d+64|0;v=a+4|0;Bp(k[v>>2]|0,g,108);Bp(k[v>>2]|0,h,110);Cp(k[v>>2]|0,i,c,104);Cp(k[v>>2]|0,l,c,217);cO(k[(k[v>>2]|0)+36>>2]|0,f,116);w=k[v>>2]|0;if((k[f>>2]|0)==1)Cp(w,j,c,126);else Cp(w,j,c,115);if(+p[j>>3]<0.0)p[j>>3]=0.0;switch(k[a+8>>2]|0){case 1:{Cp(k[v>>2]|0,m,c,674);x=+p[m>>3];y=+aa(+(x*x));break}case 2:{Cp(k[v>>2]|0,m,c,674);Cp(k[v>>2]|0,n,c,677);x=+p[m>>3];z=+p[n>>3];y=+aa(+(x*x+z*z));break}case 3:{Cp(k[v>>2]|0,m,c,674);Cp(k[v>>2]|0,n,c,677);Cp(k[v>>2]|0,o,c,679);z=+p[m>>3];x=+p[n>>3];A=+p[o>>3];y=+aa(+(z*z+x*x+A*A));break}default:{o=q+56|0;n=q+4|0;k[q>>2]=27524;k[o>>2]=27544;B=0;wa(508,q+56|0,n|0);m=B;B=0;if(m&1){m=Rb()|0;C=Q;D=m;vva(o);Qb(D|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[o>>2]=27488;B=0;va(448,n|0);m=B;B=0;do if(m&1){c=Rb()|0;E=Q;F=c}else{k[n>>2]=27560;c=q+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[q+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,n|0,e|0);v=B;B=0;if(v&1){v=Rb()|0;a=Q;Yua(e);Yua(c);Ava(n);E=a;F=v;break}Yua(e);B=0;v=Ia(40,q|0,145010,13)|0;a=B;B=0;if(!(a&1)?(B=0,Xa(239,v|0,0)|0,v=B,B=0,!(v&1)):0){v=Ab(20)|0;B=0;eb(502,s|0,141974,73);a=B;B=0;do if(!(a&1)){B=0;eb(502,t|0,142176,14);w=B;B=0;if(w&1){w=Rb()|0;f=Q;Yua(s);G=f;H=w;break}B=0;wa(510,u|0,n|0);w=B;B=0;if(w&1){w=Rb()|0;I=Q;J=w;K=1}else{B=0;ua(163,v|0,s|0,t|0,382,u|0);w=B;B=0;if(w&1)L=1;else{B=0;eb(503,v|0,1240,229);B=0;L=0}w=Rb()|0;f=Q;Yua(u);I=f;J=w;K=L}Yua(t);Yua(s);if(K){G=I;H=J}else{M=I;N=J;k[q>>2]=27468;k[o>>2]=27488;k[n>>2]=27560;Yua(c);Ava(n);vva(o);Qb(N|0)}}else{w=Rb()|0;G=Q;H=w}while(0);zb(v|0);M=G;N=H;k[q>>2]=27468;k[o>>2]=27488;k[n>>2]=27560;Yua(c);Ava(n);vva(o);Qb(N|0)}a=Rb()|0;M=Q;N=a;k[q>>2]=27468;k[o>>2]=27488;k[n>>2]=27560;Yua(c);Ava(n);vva(o);Qb(N|0)}while(0);C=E;D=F;vva(o);Qb(D|0)}}A=+p[g>>3];if(A==1.0)O=1.0;else{x=A+-1.0;O=+ba(+x,+x)/+ba(+A,+A)}x=+p[h>>3];z=+p[l>>3];P=+ba(+x,+z);R=+p[j>>3];S=P*+ba(+R,+z);P=y/(S*+p[i>>3]);if(y==0.0|R==0.0){T=0.0;p[b>>3]=T;r=d;return}T=x*R*+ba(+(P/(O*+ba(+P,+A)+1.0)),+(1.0/z))/y;p[b>>3]=T;r=d;return}function jla(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0.0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,xa=0.0;d=r;r=r+448|0;e=d+436|0;f=d+80|0;g=d+72|0;h=d+64|0;i=d+56|0;j=d+48|0;l=d+40|0;m=d+32|0;n=d+24|0;o=d+16|0;q=d+8|0;s=d;t=d+288|0;u=d+424|0;v=d+136|0;w=d+124|0;x=d+152|0;y=d+112|0;z=d+100|0;A=d+88|0;C=a+4|0;dO(k[(k[C>>2]|0)+36>>2]|0,h,113);Bp(k[C>>2]|0,f,107);Bp(k[C>>2]|0,g,108);Cp(k[C>>2]|0,i,c,353);Cp(k[C>>2]|0,j,c,64);Cp(k[C>>2]|0,l,c,999);Cp(k[C>>2]|0,q,c,105);Cp(k[C>>2]|0,s,c,114);D=+Dp(k[C>>2]|0,266);E=+Dp(k[C>>2]|0,265);F=+Dp(k[C>>2]|0,65);G=+p[f>>3];H=+p[g>>3]/G;I=1.0/G;G=+p[j>>3];if(G>0.0){p[j>>3]=0.0;J=0.0}else J=G;G=+p[s>>3];do if(G==0.0)K=E*F*+p[i>>3]+D*F*(J-+p[l>>3]);else{if(G>0.0){K=E*F*+p[i>>3]*+p[h>>3];break}s=t+56|0;j=t+4|0;k[t>>2]=27524;k[s>>2]=27544;B=0;wa(508,t+56|0,j|0);g=B;B=0;if(g&1){g=Rb()|0;L=Q;M=g;vva(s);Qb(M|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[s>>2]=27488;B=0;va(448,j|0);g=B;B=0;do if(g&1){f=Rb()|0;N=Q;O=f}else{k[j>>2]=27560;f=t+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[t+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,j|0,e|0);P=B;B=0;if(P&1){P=Rb()|0;R=Q;Yua(e);Yua(f);Ava(j);N=R;O=P;break}Yua(e);B=0;P=Ia(40,t|0,142191,30)|0;R=B;B=0;a:do if(!(R&1)?(B=0,Xa(239,P|0,0)|0,S=B,B=0,!(S&1)):0){S=Ab(20)|0;B=0;eb(502,u|0,141974,73);T=B;B=0;do if(!(T&1)){B=0;eb(502,v|0,142222,19);U=B;B=0;if(U&1){U=Rb()|0;V=Q;Yua(u);W=U;X=V;break}B=0;wa(510,w|0,j|0);V=B;B=0;if(V&1){V=Rb()|0;Y=Q;Z=V;_=1}else{B=0;ua(163,S|0,u|0,v|0,527,w|0);V=B;B=0;if(V&1)$=1;else{B=0;eb(503,S|0,1240,229);B=0;$=0}V=Rb()|0;U=Q;Yua(w);Y=U;Z=V;_=$}Yua(v);Yua(u);if(_){W=Z;X=Y}else{ca=Z;da=Y;break a}}else{V=Rb()|0;W=V;X=Q}while(0);zb(S|0);ca=W;da=X}else ea=22;while(0);if((ea|0)==22){P=Rb()|0;ca=P;da=Q}k[t>>2]=27468;k[s>>2]=27488;k[j>>2]=27560;Yua(f);Ava(j);vva(s);fa=da;ga=ca;Qb(ga|0)}while(0);L=N;M=O;vva(s);Qb(M|0)}while(0);F=K<0.0?0.0:K;switch(k[a+8>>2]|0){case 1:{Cp(k[C>>2]|0,m,c,674);K=+p[m>>3];ha=+aa(+(K*K));break}case 2:{Cp(k[C>>2]|0,m,c,674);Cp(k[C>>2]|0,n,c,677);K=+p[m>>3];E=+p[n>>3];ha=+aa(+(K*K+E*E));break}case 3:{Cp(k[C>>2]|0,m,c,674);Cp(k[C>>2]|0,n,c,677);Cp(k[C>>2]|0,o,c,679);E=+p[m>>3];K=+p[n>>3];G=+p[o>>3];ha=+aa(+(E*E+K*K+G*G));break}default:{o=x+56|0;n=x+4|0;k[x>>2]=27524;k[o>>2]=27544;B=0;wa(508,x+56|0,n|0);m=B;B=0;if(m&1){m=Rb()|0;ia=Q;ja=m;vva(o);Qb(ja|0)}k[x+128>>2]=0;k[x+132>>2]=-1;k[x>>2]=27468;k[o>>2]=27488;B=0;va(448,n|0);m=B;B=0;do if(m&1){c=Rb()|0;ka=Q;la=c}else{k[n>>2]=27560;c=x+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[x+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,n|0,e|0);C=B;B=0;if(C&1){C=Rb()|0;a=Q;Yua(e);Yua(c);Ava(n);ka=a;la=C;break}Yua(e);B=0;C=Ia(40,x|0,145010,13)|0;a=B;B=0;b:do if(!(a&1)?(B=0,Xa(239,C|0,0)|0,M=B,B=0,!(M&1)):0){M=Ab(20)|0;B=0;eb(502,y|0,141974,73);O=B;B=0;do if(!(O&1)){B=0;eb(502,z|0,142222,19);N=B;B=0;if(N&1){N=Rb()|0;L=Q;Yua(y);ma=N;na=L;break}B=0;wa(510,A|0,n|0);L=B;B=0;if(L&1){L=Rb()|0;oa=1;pa=Q;qa=L}else{B=0;ua(163,M|0,y|0,z|0,547,A|0);L=B;B=0;if(L&1)ra=1;else{B=0;eb(503,M|0,1240,229);B=0;ra=0}L=Rb()|0;N=Q;Yua(A);oa=ra;pa=N;qa=L}Yua(z);Yua(y);if(oa){ma=qa;na=pa}else{sa=pa;ta=qa;break b}}else{L=Rb()|0;ma=L;na=Q}while(0);zb(M|0);sa=na;ta=ma}else ea=49;while(0);if((ea|0)==49){C=Rb()|0;sa=Q;ta=C}k[x>>2]=27468;k[o>>2]=27488;k[n>>2]=27560;Yua(c);Ava(n);vva(o);fa=sa;ga=ta;Qb(ga|0)}while(0);ia=ka;ja=la;vva(o);Qb(ja|0)}}G=I+-1.0;if(G<0.0&ha==0.0){xa=0.0;p[b>>3]=xa;r=d;return}I=+p[q>>3];xa=I*I*+ba(+F,+H)*+ba(+ha,+G);p[b>>3]=xa;r=d;return}function kla(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0.0,X=0.0,Y=0.0,Z=0,_=0.0;d=r;r=r+288|0;e=d+264|0;f=d+80|0;g=d+72|0;h=d+64|0;i=d+56|0;j=d+48|0;l=d+40|0;m=d+32|0;n=d+24|0;o=d+16|0;q=d+8|0;s=d;t=d+128|0;u=d+112|0;v=d+100|0;w=d+88|0;x=a+4|0;Bp(k[x>>2]|0,f,107);Bp(k[x>>2]|0,g,108);Cp(k[x>>2]|0,h,c,353);Cp(k[x>>2]|0,i,c,64);Cp(k[x>>2]|0,l,c,999);Cp(k[x>>2]|0,j,c,63);Cp(k[x>>2]|0,q,c,105);Cp(k[x>>2]|0,s,c,106);y=+Dp(k[x>>2]|0,266);z=+Dp(k[x>>2]|0,265);A=+Dp(k[x>>2]|0,65);C=+p[f>>3];D=+p[g>>3]/C;E=1.0/C;C=A*(z*+p[h>>3]+y*(+p[i>>3]-+p[l>>3]));F=C<0.0?0.0:C;switch(k[a+8>>2]|0){case 1:{Cp(k[x>>2]|0,m,c,674);C=+p[m>>3];G=+aa(+(C*C));break}case 2:{Cp(k[x>>2]|0,m,c,674);Cp(k[x>>2]|0,n,c,677);C=+p[m>>3];H=+p[n>>3];G=+aa(+(C*C+H*H));break}case 3:{Cp(k[x>>2]|0,m,c,674);Cp(k[x>>2]|0,n,c,677);Cp(k[x>>2]|0,o,c,679);H=+p[m>>3];C=+p[n>>3];I=+p[o>>3];G=+aa(+(H*H+C*C+I*I));break}default:{o=t+56|0;n=t+4|0;k[t>>2]=27524;k[o>>2]=27544;B=0;wa(508,t+56|0,n|0);m=B;B=0;if(m&1){m=Rb()|0;J=Q;K=m;vva(o);Qb(K|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[o>>2]=27488;B=0;va(448,n|0);m=B;B=0;do if(m&1){c=Rb()|0;L=Q;M=c}else{k[n>>2]=27560;c=t+36|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[t+52>>2]=16;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;B=0;wa(509,n|0,e|0);x=B;B=0;if(x&1){x=Rb()|0;a=Q;Yua(e);Yua(c);Ava(n);L=a;M=x;break}Yua(e);B=0;x=Ia(40,t|0,145010,13)|0;a=B;B=0;if(!(a&1)?(B=0,Xa(239,x|0,0)|0,x=B,B=0,!(x&1)):0){x=Ab(20)|0;B=0;eb(502,u|0,141974,73);a=B;B=0;do if(!(a&1)){B=0;eb(502,v|0,142242,16);l=B;B=0;if(l&1){l=Rb()|0;i=Q;Yua(u);N=i;O=l;break}B=0;wa(510,w|0,n|0);l=B;B=0;if(l&1){l=Rb()|0;P=Q;R=l;S=1}else{B=0;ua(163,x|0,u|0,v|0,306,w|0);l=B;B=0;if(l&1)T=1;else{B=0;eb(503,x|0,1240,229);B=0;T=0}l=Rb()|0;i=Q;Yua(w);P=i;R=l;S=T}Yua(v);Yua(u);if(S){N=P;O=R}else{U=P;V=R;k[t>>2]=27468;k[o>>2]=27488;k[n>>2]=27560;Yua(c);Ava(n);vva(o);Qb(V|0)}}else{l=Rb()|0;N=Q;O=l}while(0);zb(x|0);U=N;V=O;k[t>>2]=27468;k[o>>2]=27488;k[n>>2]=27560;Yua(c);Ava(n);vva(o);Qb(V|0)}a=Rb()|0;U=Q;V=a;k[t>>2]=27468;k[o>>2]=27488;k[n>>2]=27560;Yua(c);Ava(n);vva(o);Qb(V|0)}while(0);J=L;K=M;vva(o);Qb(K|0)}}K=G==0.0;I=E+-1.0;if(I<0.0&K)W=0.0;else{E=+p[q>>3];W=E*E*+ba(+F,+D)*+ba(+G,+I)}I=+p[j>>3];if(I<0.0)X=-y/z*I;else X=0.0;if(K){Y=0.0;Z=Y<W;_=Z?Y:W;p[b>>3]=_;r=d;return}I=+p[s>>3];Y=(+p[h>>3]-X)*(A*(y*(I*I)))/G;Z=Y<W;_=Z?Y:W;p[b>>3]=_;r=d;return}function lla(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0.0,m=0.0,n=0.0,o=0.0;d=r;r=r+48|0;e=d+32|0;f=d+24|0;g=d+16|0;h=d+8|0;i=d;j=a+4|0;Cp(k[j>>2]|0,g,c,353);Cp(k[j>>2]|0,f,c,64);Cp(k[j>>2]|0,h,c,166);Cp(k[j>>2]|0,i,c,999);Cp(k[j>>2]|0,e,c,105);l=+Dp(k[j>>2]|0,267);m=+Dp(k[j>>2]|0,265);n=+Dp(k[j>>2]|0,65);o=m*n*+p[g>>3]-l*n*(+p[h>>3]-+p[f>>3]+ +p[i>>3]);n=+p[e>>3];p[b>>3]=n*n*(o<0.0?0.0:o);r=d;return}function mla(a){a=a|0;var b=0;k[a>>2]=-9999;k[a+4>>2]=-9999;k[a+8>>2]=-9999;i[a+12>>0]=0;i[a+13>>0]=1;i[a+14>>0]=0;b=a+16|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;return}function nla(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;k[a>>2]=b;i[a+12>>0]=0;if((b|0)<=0)return;d=Rqa(b)|0;k[a+16>>2]=d;d=Rqa(b)|0;k[a+20>>2]=d;d=Rqa(b>>>0>536870911?-1:b<<3)|0;k[a+24>>2]=d;d=b>>>0>1073741823?-1:b<<2;b=Rqa(d)|0;k[a+32>>2]=b;if(!c)k[a+28>>2]=0;else{b=Rqa(d)|0;k[a+28>>2]=b}b=k[a+16>>2]|0;d=k[a+20>>2]|0;e=k[a+24>>2]|0;f=k[a+32>>2]|0;g=k[a+28>>2]|0;if(!g){h=0;do{i[b+h>>0]=1;i[d+h>>0]=0;p[e+(h<<3)>>3]=0.0;k[f+(h<<2)>>2]=-9999;h=h+1|0}while((h|0)<(k[a>>2]|0));return}else{h=0;do{i[b+h>>0]=1;i[d+h>>0]=0;p[e+(h<<3)>>3]=0.0;k[f+(h<<2)>>2]=-9999;k[g+(h<<2)>>2]=k[c+(h<<2)>>2];h=h+1|0}while((h|0)<(k[a>>2]|0));return}}function ola(a){a=a|0;var b=0,c=0;b=a+16|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=a+20|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=a+24|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=a+28|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=a+32|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=a+36|0;c=k[b>>2]|0;if(c){Tqa(c);k[b>>2]=0}b=a+40|0;a=k[b>>2]|0;if(!a)return;Tqa(a);k[b>>2]=0;return}function pla(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;c=k[b>>2]|0;k[a>>2]=c;d=k[b+4>>2]|0;e=a+4|0;k[e>>2]=d;f=k[b+8>>2]|0;g=a+8|0;k[g>>2]=f;h=k[b+12>>2]|0;i[a+12>>0]=h;i[a+13>>0]=(h&65535)>>>8;i[a+14>>0]=h>>>16;h=(c|0)>0;if(h){j=Rqa(c)|0;k[a+16>>2]=j;l=Rqa(c)|0;k[a+20>>2]=l;m=Rqa(c>>>0>536870911?-1:c<<3)|0;k[a+24>>2]=m;if(!(k[b+28>>2]|0)){k[a+28>>2]=0;n=c>>>0>1073741823?-1:c<<2;o=0}else{q=c>>>0>1073741823?-1:c<<2;r=Rqa(q)|0;k[a+28>>2]=r;n=q;o=r}r=Rqa(n)|0;k[a+32>>2]=r;s=j;t=l;u=m;v=o;w=r}else{r=a+16|0;k[r>>2]=0;k[r+4>>2]=0;k[r+8>>2]=0;k[r+12>>2]=0;k[r+16>>2]=0;s=0;t=0;u=0;v=0;w=0}if((d|0)>0){r=Rqa(d>>>0>1073741823?-1:d<<2)|0;k[a+36>>2]=r}else k[a+36>>2]=0;if((f|0)>0){r=Rqa(f>>>0>1073741823?-1:f<<2)|0;k[a+40>>2]=r}else k[a+40>>2]=0;if(h){TEa(s|0,k[b+16>>2]|0,c|0)|0;TEa(t|0,k[b+20>>2]|0,c|0)|0;t=k[b+24>>2]|0;if(!u)yb(142259,142264,137,142345);if(!t)yb(142353,142264,137,142345);else x=0;do{p[u+(x<<3)>>3]=+p[t+(x<<3)>>3];x=x+1|0}while((x|0)!=(c|0));if(!v){y=c;z=w}else{TEa(v|0,k[b+28>>2]|0,c<<2|0)|0;y=k[a>>2]|0;z=k[a+32>>2]|0}TEa(z|0,k[b+32>>2]|0,y<<2|0)|0;A=k[e>>2]|0}else A=d;if((A|0)>0)TEa(k[a+36>>2]|0,k[b+36>>2]|0,A<<2|0)|0;A=k[g>>2]|0;if((A|0)<=0)return;TEa(k[a+40>>2]|0,k[b+40>>2]|0,A<<2|0)|0;return}function qla(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0;c=r;r=r+192|0;d=c+176|0;e=c+40|0;f=c+24|0;g=c+12|0;h=c;switch(b|0){case 937:{i=k[a>>2]|0;if((i|0)>0){j=k[a+16>>2]|0;m=0;n=0;while(1){o=(l[j+m>>0]|0)+n|0;m=m+1|0;if((m|0)>=(i|0)){p=o;break}else n=o}}else p=0;n=a+4|0;k[n>>2]=p;i=a+36|0;m=k[i>>2]|0;if(!m)q=p;else{Tqa(m);q=k[n>>2]|0}k[i>>2]=0;if(!q){k[i>>2]=0;r=c;return}else{q=Rqa(p>>>0>1073741823?-1:p<<2)|0;k[i>>2]=q;r=c;return}break}case 966:{q=k[a>>2]|0;if((q|0)>0){i=k[a+20>>2]|0;p=0;n=0;while(1){m=(l[i+p>>0]|0)+n|0;p=p+1|0;if((p|0)>=(q|0)){s=m;break}else n=m}}else s=0;n=a+8|0;k[n>>2]=s;q=a+40|0;a=k[q>>2]|0;if(!a)t=s;else{Tqa(a);t=k[n>>2]|0}k[q>>2]=0;if(!t){k[q>>2]=0;r=c;return}else{t=Rqa(s>>>0>1073741823?-1:s<<2)|0;k[q>>2]=t;r=c;return}break}default:{c=e+56|0;t=e+4|0;k[e>>2]=27524;k[c>>2]=27544;B=0;wa(508,e+56|0,t|0);q=B;B=0;if(q&1){q=Rb()|0;u=Q;v=q;vva(c);Qb(v|0)}k[e+128>>2]=0;k[e+132>>2]=-1;k[e>>2]=27468;k[c>>2]=27488;B=0;va(448,t|0);q=B;B=0;do if(q&1){s=Rb()|0;w=Q;x=s}else{k[t>>2]=27560;s=e+36|0;k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;k[s+12>>2]=0;k[e+52>>2]=16;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;B=0;wa(509,t|0,d|0);n=B;B=0;if(n&1){n=Rb()|0;a=Q;Yua(d);Yua(s);Ava(t);w=a;x=n;break}Yua(d);B=0;n=Ia(40,e|0,142357,17)|0;a=B;B=0;if((((!(a&1)?(B=0,a=ya(427,b|0)|0,p=B,B=0,!(p&1)):0)?(p=Lta(a)|0,B=0,i=Ia(40,n|0,a|0,p|0)|0,p=B,B=0,!(p&1)):0)?(B=0,p=Ia(40,i|0,146956,19)|0,i=B,B=0,!(i&1)):0)?(B=0,Xa(239,p|0,0)|0,p=B,B=0,!(p&1)):0){p=Ab(20)|0;B=0;eb(502,f|0,142375,70);i=B;B=0;do if(!(i&1)){B=0;eb(502,g|0,142446,7);a=B;B=0;if(a&1){a=Rb()|0;n=Q;Yua(f);y=n;z=a;break}B=0;wa(510,h|0,t|0);a=B;B=0;if(a&1){a=Rb()|0;A=Q;C=a;D=1}else{B=0;ua(163,p|0,f|0,g|0,211,h|0);a=B;B=0;if(a&1)E=1;else{B=0;eb(503,p|0,1240,229);B=0;E=0}a=Rb()|0;n=Q;Yua(h);A=n;C=a;D=E}Yua(g);Yua(f);if(D){y=A;z=C}else{F=A;G=C;k[e>>2]=27468;k[c>>2]=27488;k[t>>2]=27560;Yua(s);Ava(t);vva(c);Qb(G|0)}}else{a=Rb()|0;y=Q;z=a}while(0);zb(p|0);F=y;G=z;k[e>>2]=27468;k[c>>2]=27488;k[t>>2]=27560;Yua(s);Ava(t);vva(c);Qb(G|0)}i=Rb()|0;F=Q;G=i;k[e>>2]=27468;k[c>>2]=27488;k[t>>2]=27560;Yua(s);Ava(t);vva(c);Qb(G|0)}while(0);u=w;v=x;vva(c);Qb(v|0)}}}function rla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0;b=r;r=r+1072|0;c=b+1052|0;d=b+880|0;e=b+1040|0;f=b+728|0;g=b+1028|0;h=b+592|0;j=b+1016|0;l=b+440|0;m=b+864|0;n=b+304|0;o=b+576|0;p=b+168|0;q=b+152|0;s=b+16|0;t=b;u=d+56|0;v=d+4|0;k[d>>2]=27524;k[u>>2]=27544;B=0;wa(508,d+56|0,v|0);w=B;B=0;if(w&1){w=Rb()|0;x=Q;y=w;vva(u);Qb(y|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[u>>2]=27488;B=0;va(448,v|0);w=B;B=0;do if(w&1){z=Rb()|0;A=Q;C=z}else{k[v>>2]=27560;z=d+36|0;k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;k[z+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,v|0,c|0);D=B;B=0;if(D&1){D=Rb()|0;E=Q;Yua(c);Yua(z);Ava(v);A=E;C=D;break}Yua(c);B=0;Ia(40,d|0,142454,13)|0;D=B;B=0;do if(!(D&1)?(B=0,wa(510,e|0,v|0),E=B,B=0,!(E&1)):0){B=0;ya(424,e|0)|0;E=B;B=0;if(E&1){E=Rb()|0;F=Q;Yua(e);G=F;H=E;break}Yua(e);k[d>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);E=f+56|0;F=f+4|0;k[f>>2]=27524;k[E>>2]=27544;B=0;wa(508,f+56|0,F|0);I=B;B=0;if(I&1){I=Rb()|0;J=Q;K=I;vva(E);Qb(K|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[E>>2]=27488;B=0;va(448,F|0);I=B;B=0;do if(I&1){L=Rb()|0;M=Q;N=L}else{k[F>>2]=27560;L=f+36|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,F|0,c|0);O=B;B=0;if(O&1){O=Rb()|0;P=Q;Yua(c);Yua(L);Ava(F);M=P;N=O;break}Yua(c);B=0;O=Ia(40,f|0,142468,11)|0;P=B;B=0;do if(((!(P&1)?(B=0,R=Xa(242,O|0,k[a>>2]|0)|0,S=B,B=0,!(S&1)):0)?(B=0,Ia(40,R|0,149177,1)|0,R=B,B=0,!(R&1)):0)?(B=0,wa(510,g|0,F|0),R=B,B=0,!(R&1)):0){B=0;ya(424,g|0)|0;R=B;B=0;if(R&1){R=Rb()|0;S=Q;Yua(g);T=S;U=R;break}Yua(g);k[f>>2]=27468;k[E>>2]=27488;k[F>>2]=27560;Yua(L);Ava(F);vva(E);R=h+56|0;S=h+4|0;k[h>>2]=27524;k[R>>2]=27544;B=0;wa(508,h+56|0,S|0);V=B;B=0;if(V&1){V=Rb()|0;W=Q;X=V;vva(R);Qb(X|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[R>>2]=27488;B=0;va(448,S|0);V=B;B=0;do if(V&1){Y=Rb()|0;Z=Q;_=Y}else{k[S>>2]=27560;Y=h+36|0;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[Y+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,S|0,c|0);$=B;B=0;if($&1){$=Rb()|0;aa=Q;Yua(c);Yua(Y);Ava(S);Z=aa;_=$;break}Yua(c);B=0;$=Ia(40,h|0,142480,11)|0;aa=B;B=0;do if(aa&1)ba=97;else{B=0;ca=Xa(242,$|0,k[a+4>>2]|0)|0;da=B;B=0;if(da&1){ba=97;break}B=0;Ia(40,ca|0,149177,1)|0;ca=B;B=0;if(ca&1){ba=97;break}B=0;wa(510,j|0,S|0);ca=B;B=0;if(ca&1){ba=97;break}B=0;ya(424,j|0)|0;ca=B;B=0;if(ca&1){ca=Rb()|0;da=Q;Yua(j);ea=da;fa=ca;break}Yua(j);k[h>>2]=27468;k[R>>2]=27488;k[S>>2]=27560;Yua(Y);Ava(S);vva(R);ca=l+56|0;da=l+4|0;k[l>>2]=27524;k[ca>>2]=27544;B=0;wa(508,l+56|0,da|0);ga=B;B=0;if(ga&1){ga=Rb()|0;ha=Q;ia=ga;vva(ca);Qb(ia|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[ca>>2]=27488;B=0;va(448,da|0);ga=B;B=0;do if(ga&1){ja=Rb()|0;ka=Q;la=ja}else{k[da>>2]=27560;ja=l+36|0;k[ja>>2]=0;k[ja+4>>2]=0;k[ja+8>>2]=0;k[ja+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,da|0,c|0);ma=B;B=0;if(ma&1){ma=Rb()|0;na=Q;Yua(c);Yua(ja);Ava(da);ka=na;la=ma;break}Yua(c);B=0;ma=Ia(40,l|0,142492,11)|0;na=B;B=0;do if(na&1)ba=100;else{B=0;oa=Xa(242,ma|0,k[a+8>>2]|0)|0;pa=B;B=0;if(pa&1){ba=100;break}B=0;Ia(40,oa|0,149177,1)|0;oa=B;B=0;if(oa&1){ba=100;break}B=0;wa(510,m|0,da|0);oa=B;B=0;if(oa&1){ba=100;break}B=0;ya(424,m|0)|0;oa=B;B=0;if(oa&1){oa=Rb()|0;pa=Q;Yua(m);qa=pa;ra=oa;break}Yua(m);k[l>>2]=27468;k[ca>>2]=27488;k[da>>2]=27560;Yua(ja);Ava(da);vva(ca);oa=n+56|0;pa=n+4|0;k[n>>2]=27524;k[oa>>2]=27544;B=0;wa(508,n+56|0,pa|0);sa=B;B=0;if(sa&1){sa=Rb()|0;ta=Q;ua=sa;vva(oa);Qb(ua|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[oa>>2]=27488;B=0;va(448,pa|0);sa=B;B=0;do if(sa&1){xa=Rb()|0;za=Q;Aa=xa}else{k[pa>>2]=27560;xa=n+36|0;k[xa>>2]=0;k[xa+4>>2]=0;k[xa+8>>2]=0;k[xa+12>>2]=0;k[n+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,pa|0,c|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;Ca=Q;Yua(c);Yua(xa);Ava(pa);za=Ca;Aa=Ba;break}Yua(c);B=0;Ba=Ia(40,n|0,142504,11)|0;Ca=B;B=0;do if(Ca&1)ba=103;else{B=0;Da=Xa(247,Ba|0,(i[a+12>>0]|0)!=0|0)|0;Ea=B;B=0;if(Ea&1){ba=103;break}B=0;Ia(40,Da|0,149177,1)|0;Da=B;B=0;if(Da&1){ba=103;break}B=0;wa(510,o|0,pa|0);Da=B;B=0;if(Da&1){ba=103;break}B=0;ya(424,o|0)|0;Da=B;B=0;if(Da&1){Da=Rb()|0;Ea=Q;Yua(o);Fa=Ea;Ga=Da;break}Yua(o);k[n>>2]=27468;k[oa>>2]=27488;k[pa>>2]=27560;Yua(xa);Ava(pa);vva(oa);Da=p+56|0;Ea=p+4|0;k[p>>2]=27524;k[Da>>2]=27544;B=0;wa(508,p+56|0,Ea|0);Ha=B;B=0;if(Ha&1){Ha=Rb()|0;Ja=Q;Ka=Ha;vva(Da);Qb(Ka|0)}k[p+128>>2]=0;k[p+132>>2]=-1;k[p>>2]=27468;k[Da>>2]=27488;B=0;va(448,Ea|0);Ha=B;B=0;do if(Ha&1){La=Rb()|0;Ma=Q;Na=La}else{k[Ea>>2]=27560;La=p+36|0;k[La>>2]=0;k[La+4>>2]=0;k[La+8>>2]=0;k[La+12>>2]=0;k[p+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ea|0,c|0);Oa=B;B=0;if(Oa&1){Oa=Rb()|0;Pa=Q;Yua(c);Yua(La);Ava(Ea);Ma=Pa;Na=Oa;break}Yua(c);B=0;Oa=Ia(40,p|0,142516,11)|0;Pa=B;B=0;do if(Pa&1)ba=106;else{B=0;Qa=Xa(247,Oa|0,(i[a+13>>0]|0)!=0|0)|0;Ra=B;B=0;if(Ra&1){ba=106;break}B=0;Ia(40,Qa|0,149177,1)|0;Qa=B;B=0;if(Qa&1){ba=106;break}B=0;wa(510,q|0,Ea|0);Qa=B;B=0;if(Qa&1){ba=106;break}B=0;ya(424,q|0)|0;Qa=B;B=0;if(Qa&1){Qa=Rb()|0;Ra=Q;Yua(q);Sa=Ra;Ta=Qa;break}Yua(q);k[p>>2]=27468;k[Da>>2]=27488;k[Ea>>2]=27560;Yua(La);Ava(Ea);vva(Da);Qa=s+56|0;Ra=s+4|0;k[s>>2]=27524;k[Qa>>2]=27544;B=0;wa(508,s+56|0,Ra|0);Ua=B;B=0;if(Ua&1){Ua=Rb()|0;Va=Q;Wa=Ua;vva(Qa);Qb(Wa|0)}k[s+128>>2]=0;k[s+132>>2]=-1;k[s>>2]=27468;k[Qa>>2]=27488;B=0;va(448,Ra|0);Ua=B;B=0;do if(Ua&1){Ya=Rb()|0;Za=Q;_a=Ya}else{k[Ra>>2]=27560;Ya=s+36|0;k[Ya>>2]=0;k[Ya+4>>2]=0;k[Ya+8>>2]=0;k[Ya+12>>2]=0;k[s+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ra|0,c|0);$a=B;B=0;if($a&1){$a=Rb()|0;ab=Q;Yua(c);Yua(Ya);Ava(Ra);Za=ab;_a=$a;break}Yua(c);B=0;$a=Ia(40,s|0,142528,11)|0;ab=B;B=0;do if(!(ab&1)){B=0;bb=Xa(247,$a|0,(i[a+14>>0]|0)!=0|0)|0;cb=B;B=0;if(cb&1){ba=109;break}B=0;Ia(40,bb|0,149177,1)|0;bb=B;B=0;if(bb&1){ba=109;break}B=0;wa(510,t|0,Ra|0);bb=B;B=0;if(bb&1){ba=109;break}B=0;ya(424,t|0)|0;bb=B;B=0;if(bb&1){bb=Rb()|0;cb=Q;Yua(t);db=cb;eb=bb;break}else{Yua(t);k[s>>2]=27468;k[Qa>>2]=27488;k[Ra>>2]=27560;Yua(Ya);Ava(Ra);vva(Qa);r=b;return}}else ba=109;while(0);if((ba|0)==109){$a=Rb()|0;db=Q;eb=$a}k[s>>2]=27468;k[Qa>>2]=27488;k[Ra>>2]=27560;Yua(Ya);Ava(Ra);vva(Qa);fb=db;gb=eb;Qb(gb|0)}while(0);Va=Za;Wa=_a;vva(Qa);Qb(Wa|0)}while(0);if((ba|0)==106){Oa=Rb()|0;Sa=Q;Ta=Oa}k[p>>2]=27468;k[Da>>2]=27488;k[Ea>>2]=27560;Yua(La);Ava(Ea);vva(Da);fb=Sa;gb=Ta;Qb(gb|0)}while(0);Ja=Ma;Ka=Na;vva(Da);Qb(Ka|0)}while(0);if((ba|0)==103){Ba=Rb()|0;Fa=Q;Ga=Ba}k[n>>2]=27468;k[oa>>2]=27488;k[pa>>2]=27560;Yua(xa);Ava(pa);vva(oa);fb=Fa;gb=Ga;Qb(gb|0)}while(0);ta=za;ua=Aa;vva(oa);Qb(ua|0)}while(0);if((ba|0)==100){ma=Rb()|0;qa=Q;ra=ma}k[l>>2]=27468;k[ca>>2]=27488;k[da>>2]=27560;Yua(ja);Ava(da);vva(ca);fb=qa;gb=ra;Qb(gb|0)}while(0);ha=ka;ia=la;vva(ca);Qb(ia|0)}while(0);if((ba|0)==97){$=Rb()|0;ea=Q;fa=$}k[h>>2]=27468;k[R>>2]=27488;k[S>>2]=27560;Yua(Y);Ava(S);vva(R);fb=ea;gb=fa;Qb(gb|0)}while(0);W=Z;X=_;vva(R);Qb(X|0)}else ba=94;while(0);if((ba|0)==94){O=Rb()|0;T=Q;U=O}k[f>>2]=27468;k[E>>2]=27488;k[F>>2]=27560;Yua(L);Ava(F);vva(E);fb=T;gb=U;Qb(gb|0)}while(0);J=M;K=N;vva(E);Qb(K|0)}else ba=91;while(0);if((ba|0)==91){D=Rb()|0;G=Q;H=D}k[d>>2]=27468;k[u>>2]=27488;k[v>>2]=27560;Yua(z);Ava(v);vva(u);fb=G;gb=H;Qb(gb|0)}while(0);x=A;y=C;vva(u);Qb(y|0)}function sla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Pe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,Ve=0,We=0,Xe=0,Ye=0,Ze=0,_e=0,$e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0;b=r;r=r+3776|0;c=b+3752|0;d=b+3472|0;e=b+3740|0;f=b+3336|0;g=b+3728|0;h=b+3184|0;j=b+3716|0;l=b+3048|0;m=b+3704|0;n=b+2896|0;o=b+3692|0;q=b+2744|0;s=b+3680|0;t=b+2608|0;u=b+3668|0;v=b+2472|0;w=b+3656|0;x=b+2320|0;y=b+3644|0;z=b+2184|0;A=b+3632|0;C=b+2032|0;D=b+3620|0;E=b+1896|0;F=b+3608|0;G=b+1744|0;H=b+3320|0;I=b+1608|0;J=b+3032|0;K=b+1456|0;L=b+2880|0;M=b+1304|0;N=b+2456|0;O=b+1168|0;P=b+2168|0;R=b+1016|0;S=b+1880|0;T=b+880|0;U=b+1592|0;V=b+744|0;W=b+1440|0;X=b+592|0;Y=b+1152|0;Z=b+456|0;_=b+728|0;$=b+304|0;aa=b+440|0;ba=b+168|0;ca=b+152|0;da=b+16|0;ea=b;fa=d+56|0;ga=d+4|0;k[d>>2]=27524;k[fa>>2]=27544;B=0;wa(508,d+56|0,ga|0);ha=B;B=0;if(ha&1){ha=Rb()|0;ia=Q;ja=ha;vva(fa);Qb(ja|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[fa>>2]=27488;B=0;va(448,ga|0);ha=B;B=0;do if(ha&1){ka=Rb()|0;la=Q;ma=ka}else{k[ga>>2]=27560;ka=d+36|0;k[ka>>2]=0;k[ka+4>>2]=0;k[ka+8>>2]=0;k[ka+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ga|0,c|0);na=B;B=0;if(na&1){na=Rb()|0;oa=Q;Yua(c);Yua(ka);Ava(ga);la=oa;ma=na;break}Yua(c);B=0;Ia(40,d|0,142454,13)|0;na=B;B=0;do if(!(na&1)?(B=0,wa(510,e|0,ga|0),oa=B,B=0,!(oa&1)):0){B=0;ya(424,e|0)|0;oa=B;B=0;if(oa&1){oa=Rb()|0;pa=Q;Yua(e);qa=pa;ra=oa;break}Yua(e);k[d>>2]=27468;k[fa>>2]=27488;k[ga>>2]=27560;Yua(ka);Ava(ga);vva(fa);oa=f+56|0;pa=f+4|0;k[f>>2]=27524;k[oa>>2]=27544;B=0;wa(508,f+56|0,pa|0);sa=B;B=0;if(sa&1){sa=Rb()|0;ta=Q;ua=sa;vva(oa);Qb(ua|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[oa>>2]=27488;B=0;va(448,pa|0);sa=B;B=0;do if(sa&1){xa=Rb()|0;za=Q;Aa=xa}else{k[pa>>2]=27560;xa=f+36|0;k[xa>>2]=0;k[xa+4>>2]=0;k[xa+8>>2]=0;k[xa+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,pa|0,c|0);Ba=B;B=0;if(Ba&1){Ba=Rb()|0;Ca=Q;Yua(c);Yua(xa);Ava(pa);za=Ca;Aa=Ba;break}Yua(c);B=0;Ba=Ia(40,f|0,142468,11)|0;Ca=B;B=0;do if(((!(Ca&1)?(B=0,Da=Xa(242,Ba|0,k[a>>2]|0)|0,Ea=B,B=0,!(Ea&1)):0)?(B=0,Ia(40,Da|0,149177,1)|0,Da=B,B=0,!(Da&1)):0)?(B=0,wa(510,g|0,pa|0),Da=B,B=0,!(Da&1)):0){B=0;ya(424,g|0)|0;Da=B;B=0;if(Da&1){Da=Rb()|0;Ea=Q;Yua(g);Fa=Ea;Ga=Da;break}Yua(g);k[f>>2]=27468;k[oa>>2]=27488;k[pa>>2]=27560;Yua(xa);Ava(pa);vva(oa);Da=h+56|0;Ea=h+4|0;k[h>>2]=27524;k[Da>>2]=27544;B=0;wa(508,h+56|0,Ea|0);Ha=B;B=0;if(Ha&1){Ha=Rb()|0;Ja=Q;Ka=Ha;vva(Da);Qb(Ka|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[Da>>2]=27488;B=0;va(448,Ea|0);Ha=B;B=0;do if(Ha&1){La=Rb()|0;Ma=Q;Na=La}else{k[Ea>>2]=27560;La=h+36|0;k[La>>2]=0;k[La+4>>2]=0;k[La+8>>2]=0;k[La+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ea|0,c|0);Oa=B;B=0;if(Oa&1){Oa=Rb()|0;Pa=Q;Yua(c);Yua(La);Ava(Ea);Ma=Pa;Na=Oa;break}Yua(c);B=0;Oa=Ia(40,h|0,142480,11)|0;Pa=B;B=0;do if(Pa&1)Qa=127;else{Ra=a+4|0;B=0;Ta=Xa(242,Oa|0,k[Ra>>2]|0)|0;Ua=B;B=0;if(Ua&1){Qa=127;break}B=0;Ia(40,Ta|0,149177,1)|0;Ta=B;B=0;if(Ta&1){Qa=127;break}B=0;wa(510,j|0,Ea|0);Ta=B;B=0;if(Ta&1){Qa=127;break}B=0;ya(424,j|0)|0;Ta=B;B=0;if(Ta&1){Ta=Rb()|0;Ua=Q;Yua(j);Va=Ua;Wa=Ta;break}Yua(j);k[h>>2]=27468;k[Da>>2]=27488;k[Ea>>2]=27560;Yua(La);Ava(Ea);vva(Da);Ta=l+56|0;Ua=l+4|0;k[l>>2]=27524;k[Ta>>2]=27544;B=0;wa(508,l+56|0,Ua|0);Ya=B;B=0;if(Ya&1){Ya=Rb()|0;Za=Q;_a=Ya;vva(Ta);Qb(_a|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=27468;k[Ta>>2]=27488;B=0;va(448,Ua|0);Ya=B;B=0;do if(Ya&1){$a=Rb()|0;ab=Q;bb=$a}else{k[Ua>>2]=27560;$a=l+36|0;k[$a>>2]=0;k[$a+4>>2]=0;k[$a+8>>2]=0;k[$a+12>>2]=0;k[l+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ua|0,c|0);cb=B;B=0;if(cb&1){cb=Rb()|0;db=Q;Yua(c);Yua($a);Ava(Ua);ab=db;bb=cb;break}Yua(c);B=0;cb=Ia(40,l|0,142492,11)|0;db=B;B=0;do if(db&1)Qa=130;else{eb=a+8|0;B=0;fb=Xa(242,cb|0,k[eb>>2]|0)|0;gb=B;B=0;if(gb&1){Qa=130;break}B=0;Ia(40,fb|0,149177,1)|0;fb=B;B=0;if(fb&1){Qa=130;break}B=0;wa(510,m|0,Ua|0);fb=B;B=0;if(fb&1){Qa=130;break}B=0;ya(424,m|0)|0;fb=B;B=0;if(fb&1){fb=Rb()|0;gb=Q;Yua(m);hb=gb;ib=fb;break}Yua(m);k[l>>2]=27468;k[Ta>>2]=27488;k[Ua>>2]=27560;Yua($a);Ava(Ua);vva(Ta);fb=n+56|0;gb=n+4|0;k[n>>2]=27524;k[fb>>2]=27544;B=0;wa(508,n+56|0,gb|0);jb=B;B=0;if(jb&1){jb=Rb()|0;kb=Q;lb=jb;vva(fb);Qb(lb|0)}k[n+128>>2]=0;k[n+132>>2]=-1;k[n>>2]=27468;k[fb>>2]=27488;B=0;va(448,gb|0);jb=B;B=0;do if(jb&1){mb=Rb()|0;nb=Q;ob=mb}else{k[gb>>2]=27560;mb=n+36|0;k[mb>>2]=0;k[mb+4>>2]=0;k[mb+8>>2]=0;k[mb+12>>2]=0;k[n+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,gb|0,c|0);pb=B;B=0;if(pb&1){pb=Rb()|0;qb=Q;Yua(c);Yua(mb);Ava(gb);nb=qb;ob=pb;break}Yua(c);B=0;pb=Ia(40,n|0,142504,11)|0;qb=B;B=0;do if(qb&1)Qa=133;else{B=0;rb=Xa(247,pb|0,(i[a+12>>0]|0)!=0|0)|0;sb=B;B=0;if(sb&1){Qa=133;break}B=0;Ia(40,rb|0,149177,1)|0;rb=B;B=0;if(rb&1){Qa=133;break}B=0;wa(510,o|0,gb|0);rb=B;B=0;if(rb&1){Qa=133;break}B=0;ya(424,o|0)|0;rb=B;B=0;if(rb&1){rb=Rb()|0;sb=Q;Yua(o);tb=sb;ub=rb;break}Yua(o);k[n>>2]=27468;k[fb>>2]=27488;k[gb>>2]=27560;Yua(mb);Ava(gb);vva(fb);rb=q+56|0;sb=q+4|0;k[q>>2]=27524;k[rb>>2]=27544;B=0;wa(508,q+56|0,sb|0);vb=B;B=0;if(vb&1){vb=Rb()|0;wb=Q;xb=vb;vva(rb);Qb(xb|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=27468;k[rb>>2]=27488;B=0;va(448,sb|0);vb=B;B=0;do if(vb&1){yb=Rb()|0;zb=Q;Ab=yb}else{k[sb>>2]=27560;yb=q+36|0;k[yb>>2]=0;k[yb+4>>2]=0;k[yb+8>>2]=0;k[yb+12>>2]=0;k[q+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,sb|0,c|0);Bb=B;B=0;if(Bb&1){Bb=Rb()|0;Cb=Q;Yua(c);Yua(yb);Ava(sb);zb=Cb;Ab=Bb;break}Yua(c);B=0;Bb=Ia(40,q|0,142516,11)|0;Cb=B;B=0;do if(Cb&1)Qa=136;else{B=0;Db=Xa(247,Bb|0,(i[a+13>>0]|0)!=0|0)|0;Eb=B;B=0;if(Eb&1){Qa=136;break}B=0;Ia(40,Db|0,149177,1)|0;Db=B;B=0;if(Db&1){Qa=136;break}B=0;wa(510,s|0,sb|0);Db=B;B=0;if(Db&1){Qa=136;break}B=0;ya(424,s|0)|0;Db=B;B=0;if(Db&1){Db=Rb()|0;Eb=Q;Yua(s);Fb=Eb;Gb=Db;break}Yua(s);k[q>>2]=27468;k[rb>>2]=27488;k[sb>>2]=27560;Yua(yb);Ava(sb);vva(rb);Db=t+56|0;Eb=t+4|0;k[t>>2]=27524;k[Db>>2]=27544;B=0;wa(508,t+56|0,Eb|0);Hb=B;B=0;if(Hb&1){Hb=Rb()|0;Ib=Q;Jb=Hb;vva(Db);Qb(Jb|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[Db>>2]=27488;B=0;va(448,Eb|0);Hb=B;B=0;do if(Hb&1){Kb=Rb()|0;Lb=Q;Mb=Kb}else{k[Eb>>2]=27560;Kb=t+36|0;k[Kb>>2]=0;k[Kb+4>>2]=0;k[Kb+8>>2]=0;k[Kb+12>>2]=0;k[t+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Eb|0,c|0);Nb=B;B=0;if(Nb&1){Nb=Rb()|0;Ob=Q;Yua(c);Yua(Kb);Ava(Eb);Lb=Ob;Mb=Nb;break}Yua(c);B=0;Nb=Ia(40,t|0,142528,11)|0;Ob=B;B=0;do if(Ob&1)Qa=139;else{B=0;Pb=Xa(247,Nb|0,(i[a+14>>0]|0)!=0|0)|0;Sb=B;B=0;if(Sb&1){Qa=139;break}B=0;Ia(40,Pb|0,149177,1)|0;Pb=B;B=0;if(Pb&1){Qa=139;break}B=0;wa(510,u|0,Eb|0);Pb=B;B=0;if(Pb&1){Qa=139;break}B=0;ya(424,u|0)|0;Pb=B;B=0;if(Pb&1){Pb=Rb()|0;Sb=Q;Yua(u);Tb=Sb;Ub=Pb;break}Yua(u);k[t>>2]=27468;k[Db>>2]=27488;k[Eb>>2]=27560;Yua(Kb);Ava(Eb);vva(Db);Pb=v+56|0;Sb=v+4|0;k[v>>2]=27524;k[Pb>>2]=27544;B=0;wa(508,v+56|0,Sb|0);Vb=B;B=0;if(Vb&1){Vb=Rb()|0;Wb=Q;Xb=Vb;vva(Pb);Qb(Xb|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[Pb>>2]=27488;B=0;va(448,Sb|0);Vb=B;B=0;do if(Vb&1){Yb=Rb()|0;Zb=Q;_b=Yb}else{k[Sb>>2]=27560;Yb=v+36|0;k[Yb>>2]=0;k[Yb+4>>2]=0;k[Yb+8>>2]=0;k[Yb+12>>2]=0;k[v+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Sb|0,c|0);$b=B;B=0;if($b&1){$b=Rb()|0;ac=Q;Yua(c);Yua(Yb);Ava(Sb);Zb=ac;_b=$b;break}Yua(c);B=0;Ia(40,v|0,142540,29)|0;$b=B;B=0;do if($b&1)Qa=142;else{B=0;wa(510,w|0,Sb|0);ac=B;B=0;if(ac&1){Qa=142;break}B=0;ya(424,w|0)|0;ac=B;B=0;if(ac&1){ac=Rb()|0;bc=Q;Yua(w);cc=bc;dc=ac;break}Yua(w);k[v>>2]=27468;k[Pb>>2]=27488;k[Sb>>2]=27560;Yua(Yb);Ava(Sb);vva(Pb);a:do if((k[a>>2]|0)>0){ac=x+56|0;bc=x+4|0;ec=x+56|0;fc=x+128|0;gc=x+132|0;hc=x+36|0;ic=x+52|0;jc=a+16|0;kc=a+20|0;lc=0;while(1){k[x>>2]=27524;k[ac>>2]=27544;B=0;wa(508,ec|0,bc|0);mc=B;B=0;if(mc&1){Qa=107;break}k[fc>>2]=0;k[gc>>2]=-1;k[x>>2]=27468;k[ac>>2]=27488;B=0;va(448,bc|0);mc=B;B=0;if(mc&1){Qa=108;break}k[bc>>2]=27560;k[hc>>2]=0;k[hc+4>>2]=0;k[hc+8>>2]=0;k[hc+12>>2]=0;k[ic>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,bc|0,c|0);mc=B;B=0;if(mc&1){Qa=106;break}Yua(c);B=0;mc=Ia(40,x|0,142570,10)|0;nc=B;B=0;if(nc&1){Qa=145;break}B=0;nc=Xa(242,mc|0,lc|0)|0;mc=B;B=0;if(mc&1){Qa=145;break}B=0;mc=Ia(40,nc|0,160061,2)|0;nc=B;B=0;if(nc&1){Qa=145;break}nc=(i[(k[jc>>2]|0)+lc>>0]|0)!=0;B=0;oc=Ia(40,mc|0,(nc?159247:159252)|0,(nc?4:5)|0)|0;nc=B;B=0;if(nc&1){Qa=145;break}B=0;nc=Ia(40,oc|0,149175,1)|0;oc=B;B=0;if(oc&1){Qa=145;break}oc=(i[(k[kc>>2]|0)+lc>>0]|0)!=0;B=0;mc=Ia(40,nc|0,(oc?159247:159252)|0,(oc?4:5)|0)|0;oc=B;B=0;if(oc&1){Qa=145;break}B=0;Ia(40,mc|0,149177,1)|0;mc=B;B=0;if(mc&1){Qa=145;break}B=0;wa(510,y|0,bc|0);mc=B;B=0;if(mc&1){Qa=145;break}B=0;ya(424,y|0)|0;mc=B;B=0;if(mc&1){Qa=146;break}Yua(y);k[x>>2]=27468;k[ac>>2]=27488;k[bc>>2]=27560;Yua(hc);Ava(bc);vva(ac);lc=lc+1|0;if((lc|0)>=(k[a>>2]|0))break a}if((Qa|0)==106){lc=Rb()|0;kc=Q;Yua(c);Yua(hc);Ava(bc);pc=kc;qc=lc;Qa=109}else if((Qa|0)==107){lc=Rb()|0;rc=Q;sc=lc;vva(ac);Qb(sc|0)}else if((Qa|0)==108){lc=Rb()|0;pc=Q;qc=lc;Qa=109}else if((Qa|0)==145){lc=Rb()|0;tc=Q;uc=lc;Qa=147}else if((Qa|0)==146){lc=Rb()|0;kc=Q;Yua(y);tc=kc;uc=lc;Qa=147}if((Qa|0)==109){rc=pc;sc=qc;vva(ac);Qb(sc|0)}else if((Qa|0)==147){k[x>>2]=27468;k[ac>>2]=27488;k[bc>>2]=27560;Yua(hc);Ava(bc);vva(ac);vc=tc;wc=uc;Qb(wc|0)}}while(0);lc=z+56|0;kc=z+4|0;k[z>>2]=27524;k[lc>>2]=27544;B=0;wa(508,z+56|0,kc|0);jc=B;B=0;if(jc&1){jc=Rb()|0;xc=Q;yc=jc;vva(lc);Qb(yc|0)}k[z+128>>2]=0;k[z+132>>2]=-1;k[z>>2]=27468;k[lc>>2]=27488;B=0;va(448,kc|0);jc=B;B=0;do if(jc&1){ic=Rb()|0;zc=Q;Ac=ic}else{k[kc>>2]=27560;ic=z+36|0;k[ic>>2]=0;k[ic+4>>2]=0;k[ic+8>>2]=0;k[ic+12>>2]=0;k[z+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,kc|0,c|0);gc=B;B=0;if(gc&1){gc=Rb()|0;fc=Q;Yua(c);Yua(ic);Ava(kc);zc=fc;Ac=gc;break}Yua(c);B=0;gc=Ia(40,z|0,142581,12)|0;fc=B;B=0;do if(fc&1)Qa=178;else{B=0;ec=Xa(242,gc|0,k[eb>>2]|0)|0;mc=B;B=0;if(mc&1){Qa=178;break}B=0;Ia(40,ec|0,142594,4)|0;ec=B;B=0;if(ec&1){Qa=178;break}B=0;wa(510,A|0,kc|0);ec=B;B=0;if(ec&1){Qa=178;break}B=0;ya(424,A|0)|0;ec=B;B=0;if(ec&1){ec=Rb()|0;mc=Q;Yua(A);Bc=mc;Cc=ec;break}Yua(A);k[z>>2]=27468;k[lc>>2]=27488;k[kc>>2]=27560;Yua(ic);Ava(kc);vva(lc);ec=k[a>>2]|0;b:do if((ec|0)>0){mc=a+20|0;oc=C+56|0;nc=C+4|0;Dc=C+56|0;Ec=C+128|0;Fc=C+132|0;Gc=C+36|0;Hc=C+52|0;Ic=a+24|0;Jc=ec;Kc=0;while(1){if(!(i[(k[mc>>2]|0)+Kc>>0]|0))Lc=Jc;else{k[C>>2]=27524;k[oc>>2]=27544;B=0;wa(508,Dc|0,nc|0);Mc=B;B=0;if(Mc&1){Qa=168;break}k[Ec>>2]=0;k[Fc>>2]=-1;k[C>>2]=27468;k[oc>>2]=27488;B=0;va(448,nc|0);Mc=B;B=0;if(Mc&1){Qa=169;break}k[nc>>2]=27560;k[Gc>>2]=0;k[Gc+4>>2]=0;k[Gc+8>>2]=0;k[Gc+12>>2]=0;k[Hc>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,nc|0,c|0);Mc=B;B=0;if(Mc&1){Qa=167;break}Yua(c);B=0;Mc=Ia(40,C|0,149175,1)|0;Nc=B;B=0;if(Nc&1){Qa=181;break}B=0;Nc=Sa(1,Mc|0,+(+p[(k[Ic>>2]|0)+(Kc<<3)>>3]))|0;Mc=B;B=0;if(Mc&1){Qa=181;break}B=0;Ia(40,Nc|0,142599,2)|0;Nc=B;B=0;if(Nc&1){Qa=181;break}B=0;wa(510,D|0,nc|0);Nc=B;B=0;if(Nc&1){Qa=181;break}B=0;ya(424,D|0)|0;Nc=B;B=0;if(Nc&1){Qa=182;break}Yua(D);k[C>>2]=27468;k[oc>>2]=27488;k[nc>>2]=27560;Yua(Gc);Ava(nc);vva(oc);Lc=k[a>>2]|0}Kc=Kc+1|0;if((Kc|0)>=(Lc|0))break b;else Jc=Lc}if((Qa|0)==167){Jc=Rb()|0;Kc=Q;Yua(c);Yua(Gc);Ava(nc);Oc=Kc;Pc=Jc;Qa=170}else if((Qa|0)==168){Jc=Rb()|0;Qc=Q;Rc=Jc;vva(oc);Qb(Rc|0)}else if((Qa|0)==169){Jc=Rb()|0;Oc=Q;Pc=Jc;Qa=170}else if((Qa|0)==181){Jc=Rb()|0;Sc=Q;Tc=Jc;Qa=183}else if((Qa|0)==182){Jc=Rb()|0;Kc=Q;Yua(D);Sc=Kc;Tc=Jc;Qa=183}if((Qa|0)==170){Qc=Oc;Rc=Pc;vva(oc);Qb(Rc|0)}else if((Qa|0)==183){k[C>>2]=27468;k[oc>>2]=27488;k[nc>>2]=27560;Yua(Gc);Ava(nc);vva(oc);vc=Sc;wc=Tc;Qb(wc|0)}}while(0);ec=E+56|0;Jc=E+4|0;k[E>>2]=27524;k[ec>>2]=27544;B=0;wa(508,E+56|0,Jc|0);Kc=B;B=0;if(Kc&1){Kc=Rb()|0;Uc=Q;Vc=Kc;vva(ec);Qb(Vc|0)}k[E+128>>2]=0;k[E+132>>2]=-1;k[E>>2]=27468;k[ec>>2]=27488;B=0;va(448,Jc|0);Kc=B;B=0;do if(Kc&1){Ic=Rb()|0;Wc=Q;Xc=Ic}else{k[Jc>>2]=27560;Ic=E+36|0;k[Ic>>2]=0;k[Ic+4>>2]=0;k[Ic+8>>2]=0;k[Ic+12>>2]=0;k[E+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Jc|0,c|0);Hc=B;B=0;if(Hc&1){Hc=Rb()|0;Fc=Q;Yua(c);Yua(Ic);Ava(Jc);Wc=Fc;Xc=Hc;break}Yua(c);B=0;Ia(40,E|0,149177,1)|0;Hc=B;B=0;do if(Hc&1)Qa=224;else{B=0;wa(510,F|0,Jc|0);Fc=B;B=0;if(Fc&1){Qa=224;break}B=0;ya(424,F|0)|0;Fc=B;B=0;if(Fc&1){Fc=Rb()|0;Ec=Q;Yua(F);Yc=Ec;Zc=Fc;break}Yua(F);k[E>>2]=27468;k[ec>>2]=27488;k[Jc>>2]=27560;Yua(Ic);Ava(Jc);vva(ec);Fc=a+28|0;c:do if(!(k[Fc>>2]|0)){Ec=M+56|0;Dc=M+4|0;k[M>>2]=27524;k[Ec>>2]=27544;B=0;wa(508,M+56|0,Dc|0);mc=B;B=0;if(mc&1){mc=Rb()|0;_c=Q;$c=mc;vva(Ec);Qb($c|0)}k[M+128>>2]=0;k[M+132>>2]=-1;k[M>>2]=27468;k[Ec>>2]=27488;B=0;va(448,Dc|0);mc=B;B=0;do if(mc&1){Nc=Rb()|0;ad=Q;bd=Nc}else{k[Dc>>2]=27560;Nc=M+36|0;k[Nc>>2]=0;k[Nc+4>>2]=0;k[Nc+8>>2]=0;k[Nc+12>>2]=0;k[M+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Dc|0,c|0);Mc=B;B=0;if(Mc&1){Mc=Rb()|0;cd=Q;Yua(c);Yua(Nc);Ava(Dc);ad=cd;bd=Mc;break}Yua(c);B=0;Ia(40,M|0,142616,17)|0;Mc=B;B=0;do if(!(Mc&1)){B=0;wa(510,N|0,Dc|0);cd=B;B=0;if(cd&1){Qa=260;break}B=0;ya(424,N|0)|0;cd=B;B=0;if(cd&1){cd=Rb()|0;dd=Q;Yua(N);ed=dd;fd=cd;break}else{Yua(N);k[M>>2]=27468;k[Ec>>2]=27488;k[Dc>>2]=27560;Yua(Nc);Ava(Dc);vva(Ec);break c}}else Qa=260;while(0);if((Qa|0)==260){Mc=Rb()|0;ed=Q;fd=Mc}k[M>>2]=27468;k[Ec>>2]=27488;k[Dc>>2]=27560;Yua(Nc);Ava(Dc);vva(Ec);vc=ed;wc=fd;Qb(wc|0)}while(0);_c=ad;$c=bd;vva(Ec);Qb($c|0)}else{Dc=G+56|0;mc=G+4|0;k[G>>2]=27524;k[Dc>>2]=27544;B=0;wa(508,G+56|0,mc|0);Mc=B;B=0;if(Mc&1){Mc=Rb()|0;gd=Q;hd=Mc;vva(Dc);Qb(hd|0)}k[G+128>>2]=0;k[G+132>>2]=-1;k[G>>2]=27468;k[Dc>>2]=27488;B=0;va(448,mc|0);Mc=B;B=0;do if(Mc&1){cd=Rb()|0;id=Q;jd=cd}else{k[mc>>2]=27560;cd=G+36|0;k[cd>>2]=0;k[cd+4>>2]=0;k[cd+8>>2]=0;k[cd+12>>2]=0;k[G+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,mc|0,c|0);dd=B;B=0;if(dd&1){dd=Rb()|0;kd=Q;Yua(c);Yua(cd);Ava(mc);id=kd;jd=dd;break}Yua(c);B=0;Ia(40,G|0,142602,13)|0;dd=B;B=0;do if(dd&1)Qa=227;else{B=0;wa(510,H|0,mc|0);kd=B;B=0;if(kd&1){Qa=227;break}B=0;ya(424,H|0)|0;kd=B;B=0;if(kd&1){kd=Rb()|0;ld=Q;Yua(H);md=ld;nd=kd;break}Yua(H);k[G>>2]=27468;k[Dc>>2]=27488;k[mc>>2]=27560;Yua(cd);Ava(mc);vva(Dc);d:do if((k[a>>2]|0)>0){kd=I+56|0;ld=I+4|0;od=I+56|0;pd=I+128|0;qd=I+132|0;rd=I+36|0;sd=I+52|0;td=0;while(1){k[I>>2]=27524;k[kd>>2]=27544;B=0;wa(508,od|0,ld|0);ud=B;B=0;if(ud&1){Qa=214;break}k[pd>>2]=0;k[qd>>2]=-1;k[I>>2]=27468;k[kd>>2]=27488;B=0;va(448,ld|0);ud=B;B=0;if(ud&1){Qa=215;break}k[ld>>2]=27560;k[rd>>2]=0;k[rd+4>>2]=0;k[rd+8>>2]=0;k[rd+12>>2]=0;k[sd>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ld|0,c|0);ud=B;B=0;if(ud&1){Qa=213;break}Yua(c);B=0;ud=Ia(40,I|0,149175,1)|0;vd=B;B=0;if(vd&1){Qa=230;break}B=0;vd=Xa(242,ud|0,k[(k[Fc>>2]|0)+(td<<2)>>2]|0)|0;ud=B;B=0;if(ud&1){Qa=230;break}B=0;Ia(40,vd|0,142599,2)|0;vd=B;B=0;if(vd&1){Qa=230;break}B=0;wa(510,J|0,ld|0);vd=B;B=0;if(vd&1){Qa=230;break}B=0;ya(424,J|0)|0;vd=B;B=0;if(vd&1){Qa=231;break}Yua(J);k[I>>2]=27468;k[kd>>2]=27488;k[ld>>2]=27560;Yua(rd);Ava(ld);vva(kd);td=td+1|0;if((td|0)>=(k[a>>2]|0))break d}if((Qa|0)==213){td=Rb()|0;sd=Q;Yua(c);Yua(rd);Ava(ld);wd=sd;xd=td;Qa=216}else if((Qa|0)==214){td=Rb()|0;yd=Q;zd=td;vva(kd);Qb(zd|0)}else if((Qa|0)==215){td=Rb()|0;wd=Q;xd=td;Qa=216}else if((Qa|0)==230){td=Rb()|0;Ad=Q;Bd=td;Qa=232}else if((Qa|0)==231){td=Rb()|0;sd=Q;Yua(J);Ad=sd;Bd=td;Qa=232}if((Qa|0)==216){yd=wd;zd=xd;vva(kd);Qb(zd|0)}else if((Qa|0)==232){k[I>>2]=27468;k[kd>>2]=27488;k[ld>>2]=27560;Yua(rd);Ava(ld);vva(kd);vc=Ad;wc=Bd;Qb(wc|0)}}while(0);td=K+56|0;sd=K+4|0;k[K>>2]=27524;k[td>>2]=27544;B=0;wa(508,K+56|0,sd|0);qd=B;B=0;if(qd&1){qd=Rb()|0;Cd=Q;Dd=qd;vva(td);Qb(Dd|0)}k[K+128>>2]=0;k[K+132>>2]=-1;k[K>>2]=27468;k[td>>2]=27488;B=0;va(448,sd|0);qd=B;B=0;do if(qd&1){pd=Rb()|0;Ed=Q;Fd=pd}else{k[sd>>2]=27560;pd=K+36|0;k[pd>>2]=0;k[pd+4>>2]=0;k[pd+8>>2]=0;k[pd+12>>2]=0;k[K+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,sd|0,c|0);od=B;B=0;if(od&1){od=Rb()|0;vd=Q;Yua(c);Yua(pd);Ava(sd);Ed=vd;Fd=od;break}Yua(c);B=0;Ia(40,K|0,149177,1)|0;od=B;B=0;do if(!(od&1)){B=0;wa(510,L|0,sd|0);vd=B;B=0;if(vd&1){Qa=245;break}B=0;ya(424,L|0)|0;vd=B;B=0;if(vd&1){vd=Rb()|0;ud=Q;Yua(L);Gd=ud;Hd=vd;break}else{Yua(L);k[K>>2]=27468;k[td>>2]=27488;k[sd>>2]=27560;Yua(pd);Ava(sd);vva(td);break c}}else Qa=245;while(0);if((Qa|0)==245){od=Rb()|0;Gd=Q;Hd=od}k[K>>2]=27468;k[td>>2]=27488;k[sd>>2]=27560;Yua(pd);Ava(sd);vva(td);vc=Gd;wc=Hd;Qb(wc|0)}while(0);Cd=Ed;Dd=Fd;vva(td);Qb(Dd|0)}while(0);if((Qa|0)==227){dd=Rb()|0;md=Q;nd=dd}k[G>>2]=27468;k[Dc>>2]=27488;k[mc>>2]=27560;Yua(cd);Ava(mc);vva(Dc);vc=md;wc=nd;Qb(wc|0)}while(0);gd=id;hd=jd;vva(Dc);Qb(hd|0)}while(0);Fc=O+56|0;mc=O+4|0;k[O>>2]=27524;k[Fc>>2]=27544;B=0;wa(508,O+56|0,mc|0);Mc=B;B=0;if(Mc&1){Mc=Rb()|0;Id=Q;Jd=Mc;vva(Fc);Qb(Jd|0)}k[O+128>>2]=0;k[O+132>>2]=-1;k[O>>2]=27468;k[Fc>>2]=27488;B=0;va(448,mc|0);Mc=B;B=0;do if(Mc&1){Ec=Rb()|0;Kd=Q;Ld=Ec}else{k[mc>>2]=27560;Ec=O+36|0;k[Ec>>2]=0;k[Ec+4>>2]=0;k[Ec+8>>2]=0;k[Ec+12>>2]=0;k[O+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,mc|0,c|0);dd=B;B=0;if(dd&1){dd=Rb()|0;Nc=Q;Yua(c);Yua(Ec);Ava(mc);Kd=Nc;Ld=dd;break}Yua(c);B=0;dd=Ia(40,O|0,142634,14)|0;Nc=B;B=0;do if(Nc&1)Qa=292;else{B=0;sd=Xa(242,dd|0,k[a>>2]|0)|0;qd=B;B=0;if(qd&1){Qa=292;break}B=0;Ia(40,sd|0,142594,4)|0;sd=B;B=0;if(sd&1){Qa=292;break}B=0;wa(510,P|0,mc|0);sd=B;B=0;if(sd&1){Qa=292;break}B=0;ya(424,P|0)|0;sd=B;B=0;if(sd&1){sd=Rb()|0;qd=Q;Yua(P);Md=qd;Nd=sd;break}Yua(P);k[O>>2]=27468;k[Fc>>2]=27488;k[mc>>2]=27560;Yua(Ec);Ava(mc);vva(Fc);e:do if((k[a>>2]|0)>0){sd=R+56|0;qd=R+4|0;od=R+56|0;kd=R+128|0;ld=R+132|0;rd=R+36|0;vd=R+52|0;ud=a+32|0;Od=0;while(1){k[R>>2]=27524;k[sd>>2]=27544;B=0;wa(508,od|0,qd|0);Pd=B;B=0;if(Pd&1){Qa=282;break}k[kd>>2]=0;k[ld>>2]=-1;k[R>>2]=27468;k[sd>>2]=27488;B=0;va(448,qd|0);Pd=B;B=0;if(Pd&1){Qa=283;break}k[qd>>2]=27560;k[rd>>2]=0;k[rd+4>>2]=0;k[rd+8>>2]=0;k[rd+12>>2]=0;k[vd>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,qd|0,c|0);Pd=B;B=0;if(Pd&1){Qa=281;break}Yua(c);B=0;Pd=Ia(40,R|0,149175,1)|0;Qd=B;B=0;if(Qd&1){Qa=295;break}B=0;Qd=Xa(242,Pd|0,k[(k[ud>>2]|0)+(Od<<2)>>2]|0)|0;Pd=B;B=0;if(Pd&1){Qa=295;break}B=0;Ia(40,Qd|0,142599,2)|0;Qd=B;B=0;if(Qd&1){Qa=295;break}B=0;wa(510,S|0,qd|0);Qd=B;B=0;if(Qd&1){Qa=295;break}B=0;ya(424,S|0)|0;Qd=B;B=0;if(Qd&1){Qa=296;break}Yua(S);k[R>>2]=27468;k[sd>>2]=27488;k[qd>>2]=27560;Yua(rd);Ava(qd);vva(sd);Od=Od+1|0;if((Od|0)>=(k[a>>2]|0))break e}if((Qa|0)==281){Od=Rb()|0;ud=Q;Yua(c);Yua(rd);Ava(qd);Rd=ud;Sd=Od;Qa=284}else if((Qa|0)==282){Od=Rb()|0;Td=Q;Ud=Od;vva(sd);Qb(Ud|0)}else if((Qa|0)==283){Od=Rb()|0;Rd=Q;Sd=Od;Qa=284}else if((Qa|0)==295){Od=Rb()|0;Vd=Q;Wd=Od;Qa=297}else if((Qa|0)==296){Od=Rb()|0;ud=Q;Yua(S);Vd=ud;Wd=Od;Qa=297}if((Qa|0)==284){Td=Rd;Ud=Sd;vva(sd);Qb(Ud|0)}else if((Qa|0)==297){k[R>>2]=27468;k[sd>>2]=27488;k[qd>>2]=27560;Yua(rd);Ava(qd);vva(sd);vc=Vd;wc=Wd;Qb(wc|0)}}while(0);cd=T+56|0;Od=T+4|0;k[T>>2]=27524;k[cd>>2]=27544;B=0;wa(508,T+56|0,Od|0);ud=B;B=0;if(ud&1){ud=Rb()|0;Xd=Q;Yd=ud;vva(cd);Qb(Yd|0)}k[T+128>>2]=0;k[T+132>>2]=-1;k[T>>2]=27468;k[cd>>2]=27488;B=0;va(448,Od|0);ud=B;B=0;do if(ud&1){vd=Rb()|0;Zd=Q;_d=vd}else{k[Od>>2]=27560;vd=T+36|0;k[vd>>2]=0;k[vd+4>>2]=0;k[vd+8>>2]=0;k[vd+12>>2]=0;k[T+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Od|0,c|0);ld=B;B=0;if(ld&1){ld=Rb()|0;kd=Q;Yua(c);Yua(vd);Ava(Od);Zd=kd;_d=ld;break}Yua(c);B=0;Ia(40,T|0,149177,1)|0;ld=B;B=0;do if(ld&1)Qa=338;else{B=0;wa(510,U|0,Od|0);kd=B;B=0;if(kd&1){Qa=338;break}B=0;ya(424,U|0)|0;kd=B;B=0;if(kd&1){kd=Rb()|0;od=Q;Yua(U);$d=od;ae=kd;break}Yua(U);k[T>>2]=27468;k[cd>>2]=27488;k[Od>>2]=27560;Yua(vd);Ava(Od);vva(cd);kd=V+56|0;od=V+4|0;k[V>>2]=27524;k[kd>>2]=27544;B=0;wa(508,V+56|0,od|0);td=B;B=0;if(td&1){td=Rb()|0;be=Q;ce=td;vva(kd);Qb(ce|0)}k[V+128>>2]=0;k[V+132>>2]=-1;k[V>>2]=27468;k[kd>>2]=27488;B=0;va(448,od|0);td=B;B=0;do if(td&1){Qd=Rb()|0;de=Q;ee=Qd}else{k[od>>2]=27560;Qd=V+36|0;k[Qd>>2]=0;k[Qd+4>>2]=0;k[Qd+8>>2]=0;k[Qd+12>>2]=0;k[V+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,od|0,c|0);Pd=B;B=0;if(Pd&1){Pd=Rb()|0;fe=Q;Yua(c);Yua(Qd);Ava(od);de=fe;ee=Pd;break}Yua(c);B=0;Pd=Ia(40,V|0,142649,14)|0;fe=B;B=0;do if(fe&1)Qa=341;else{B=0;ge=Xa(242,Pd|0,k[Ra>>2]|0)|0;he=B;B=0;if(he&1){Qa=341;break}B=0;Ia(40,ge|0,142594,4)|0;ge=B;B=0;if(ge&1){Qa=341;break}B=0;wa(510,W|0,od|0);ge=B;B=0;if(ge&1){Qa=341;break}B=0;ya(424,W|0)|0;ge=B;B=0;if(ge&1){ge=Rb()|0;he=Q;Yua(W);ie=he;je=ge;break}Yua(W);k[V>>2]=27468;k[kd>>2]=27488;k[od>>2]=27560;Yua(Qd);Ava(od);vva(kd);f:do if((k[Ra>>2]|0)>0){ge=X+56|0;he=X+4|0;ke=X+56|0;le=X+128|0;me=X+132|0;ne=X+36|0;oe=X+52|0;pe=a+36|0;qe=0;while(1){k[X>>2]=27524;k[ge>>2]=27544;B=0;wa(508,ke|0,he|0);re=B;B=0;if(re&1){Qa=328;break}k[le>>2]=0;k[me>>2]=-1;k[X>>2]=27468;k[ge>>2]=27488;B=0;va(448,he|0);re=B;B=0;if(re&1){Qa=329;break}k[he>>2]=27560;k[ne>>2]=0;k[ne+4>>2]=0;k[ne+8>>2]=0;k[ne+12>>2]=0;k[oe>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,he|0,c|0);re=B;B=0;if(re&1){Qa=327;break}Yua(c);B=0;re=Ia(40,X|0,149175,1)|0;se=B;B=0;if(se&1){Qa=344;break}B=0;se=Xa(242,re|0,k[(k[pe>>2]|0)+(qe<<2)>>2]|0)|0;re=B;B=0;if(re&1){Qa=344;break}B=0;Ia(40,se|0,142599,2)|0;se=B;B=0;if(se&1){Qa=344;break}B=0;wa(510,Y|0,he|0);se=B;B=0;if(se&1){Qa=344;break}B=0;ya(424,Y|0)|0;se=B;B=0;if(se&1){Qa=345;break}Yua(Y);k[X>>2]=27468;k[ge>>2]=27488;k[he>>2]=27560;Yua(ne);Ava(he);vva(ge);qe=qe+1|0;if((qe|0)>=(k[Ra>>2]|0))break f}if((Qa|0)==327){qe=Rb()|0;pe=Q;Yua(c);Yua(ne);Ava(he);te=pe;ue=qe;Qa=330}else if((Qa|0)==328){qe=Rb()|0;ve=Q;we=qe;vva(ge);Qb(we|0)}else if((Qa|0)==329){qe=Rb()|0;te=Q;ue=qe;Qa=330}else if((Qa|0)==344){qe=Rb()|0;xe=Q;ye=qe;Qa=346}else if((Qa|0)==345){qe=Rb()|0;pe=Q;Yua(Y);xe=pe;ye=qe;Qa=346}if((Qa|0)==330){ve=te;we=ue;vva(ge);Qb(we|0)}else if((Qa|0)==346){k[X>>2]=27468;k[ge>>2]=27488;k[he>>2]=27560;Yua(ne);Ava(he);vva(ge);vc=xe;wc=ye;Qb(wc|0)}}while(0);qe=Z+56|0;pe=Z+4|0;k[Z>>2]=27524;k[qe>>2]=27544;B=0;wa(508,Z+56|0,pe|0);oe=B;B=0;if(oe&1){oe=Rb()|0;ze=Q;Ae=oe;vva(qe);Qb(Ae|0)}k[Z+128>>2]=0;k[Z+132>>2]=-1;k[Z>>2]=27468;k[qe>>2]=27488;B=0;va(448,pe|0);oe=B;B=0;do if(oe&1){me=Rb()|0;Be=Q;Ce=me}else{k[pe>>2]=27560;me=Z+36|0;k[me>>2]=0;k[me+4>>2]=0;k[me+8>>2]=0;k[me+12>>2]=0;k[Z+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,pe|0,c|0);le=B;B=0;if(le&1){le=Rb()|0;ke=Q;Yua(c);Yua(me);Ava(pe);Be=ke;Ce=le;break}Yua(c);B=0;Ia(40,Z|0,149177,1)|0;le=B;B=0;do if(le&1)Qa=387;else{B=0;wa(510,_|0,pe|0);ke=B;B=0;if(ke&1){Qa=387;break}B=0;ya(424,_|0)|0;ke=B;B=0;if(ke&1){ke=Rb()|0;se=Q;Yua(_);De=se;Ee=ke;break}Yua(_);k[Z>>2]=27468;k[qe>>2]=27488;k[pe>>2]=27560;Yua(me);Ava(pe);vva(qe);ke=$+56|0;se=$+4|0;k[$>>2]=27524;k[ke>>2]=27544;B=0;wa(508,$+56|0,se|0);re=B;B=0;if(re&1){re=Rb()|0;Fe=Q;Ge=re;vva(ke);Qb(Ge|0)}k[$+128>>2]=0;k[$+132>>2]=-1;k[$>>2]=27468;k[ke>>2]=27488;B=0;va(448,se|0);re=B;B=0;do if(re&1){He=Rb()|0;Ie=Q;Je=He}else{k[se>>2]=27560;He=$+36|0;k[He>>2]=0;k[He+4>>2]=0;k[He+8>>2]=0;k[He+12>>2]=0;k[$+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,se|0,c|0);Ke=B;B=0;if(Ke&1){Ke=Rb()|0;Le=Q;Yua(c);Yua(He);Ava(se);Ie=Le;Je=Ke;break}Yua(c);B=0;Ke=Ia(40,$|0,142664,14)|0;Le=B;B=0;do if(Le&1)Qa=390;else{B=0;Me=Xa(242,Ke|0,k[eb>>2]|0)|0;Ne=B;B=0;if(Ne&1){Qa=390;break}B=0;Ia(40,Me|0,142594,4)|0;Me=B;B=0;if(Me&1){Qa=390;break}B=0;wa(510,aa|0,se|0);Me=B;B=0;if(Me&1){Qa=390;break}B=0;ya(424,aa|0)|0;Me=B;B=0;if(Me&1){Me=Rb()|0;Ne=Q;Yua(aa);Oe=Ne;Pe=Me;break}Yua(aa);k[$>>2]=27468;k[ke>>2]=27488;k[se>>2]=27560;Yua(He);Ava(se);vva(ke);g:do if((k[eb>>2]|0)>0){Me=ba+56|0;Ne=ba+4|0;Qe=ba+56|0;Re=ba+128|0;Se=ba+132|0;Te=ba+36|0;Ue=ba+52|0;Ve=a+40|0;We=0;while(1){k[ba>>2]=27524;k[Me>>2]=27544;B=0;wa(508,Qe|0,Ne|0);Xe=B;B=0;if(Xe&1){Qa=377;break}k[Re>>2]=0;k[Se>>2]=-1;k[ba>>2]=27468;k[Me>>2]=27488;B=0;va(448,Ne|0);Xe=B;B=0;if(Xe&1){Qa=378;break}k[Ne>>2]=27560;k[Te>>2]=0;k[Te+4>>2]=0;k[Te+8>>2]=0;k[Te+12>>2]=0;k[Ue>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ne|0,c|0);Xe=B;B=0;if(Xe&1){Qa=376;break}Yua(c);B=0;Xe=Ia(40,ba|0,149175,1)|0;Ye=B;B=0;if(Ye&1){Qa=393;break}B=0;Ye=Xa(242,Xe|0,k[(k[Ve>>2]|0)+(We<<2)>>2]|0)|0;Xe=B;B=0;if(Xe&1){Qa=393;break}B=0;Ia(40,Ye|0,142599,2)|0;Ye=B;B=0;if(Ye&1){Qa=393;break}B=0;wa(510,ca|0,Ne|0);Ye=B;B=0;if(Ye&1){Qa=393;break}B=0;ya(424,ca|0)|0;Ye=B;B=0;if(Ye&1){Qa=394;break}Yua(ca);k[ba>>2]=27468;k[Me>>2]=27488;k[Ne>>2]=27560;Yua(Te);Ava(Ne);vva(Me);We=We+1|0;if((We|0)>=(k[eb>>2]|0))break g}if((Qa|0)==376){We=Rb()|0;Ve=Q;Yua(c);Yua(Te);Ava(Ne);Ze=Ve;_e=We;Qa=379}else if((Qa|0)==377){We=Rb()|0;$e=Q;af=We;vva(Me);Qb(af|0)}else if((Qa|0)==378){We=Rb()|0;Ze=Q;_e=We;Qa=379}else if((Qa|0)==393){We=Rb()|0;bf=Q;cf=We;Qa=395}else if((Qa|0)==394){We=Rb()|0;Ve=Q;Yua(ca);bf=Ve;cf=We;Qa=395}if((Qa|0)==379){$e=Ze;af=_e;vva(Me);Qb(af|0)}else if((Qa|0)==395){k[ba>>2]=27468;k[Me>>2]=27488;k[Ne>>2]=27560;Yua(Te);Ava(Ne);vva(Me);vc=bf;wc=cf;Qb(wc|0)}}while(0);We=da+56|0;Ve=da+4|0;k[da>>2]=27524;k[We>>2]=27544;B=0;wa(508,da+56|0,Ve|0);Ue=B;B=0;if(Ue&1){Ue=Rb()|0;df=Q;ef=Ue;vva(We);Qb(ef|0)}k[da+128>>2]=0;k[da+132>>2]=-1;k[da>>2]=27468;k[We>>2]=27488;B=0;va(448,Ve|0);Ue=B;B=0;do if(Ue&1){Se=Rb()|0;ff=Q;gf=Se}else{k[Ve>>2]=27560;Se=da+36|0;k[Se>>2]=0;k[Se+4>>2]=0;k[Se+8>>2]=0;k[Se+12>>2]=0;k[da+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ve|0,c|0);Re=B;B=0;if(Re&1){Re=Rb()|0;Qe=Q;Yua(c);Yua(Se);Ava(Ve);ff=Qe;gf=Re;break}Yua(c);B=0;Ia(40,da|0,149177,1)|0;Re=B;B=0;do if(!(Re&1)){B=0;wa(510,ea|0,Ve|0);Qe=B;B=0;if(Qe&1){Qa=408;break}B=0;ya(424,ea|0)|0;Qe=B;B=0;if(Qe&1){Qe=Rb()|0;Ye=Q;Yua(ea);hf=Ye;jf=Qe;break}else{Yua(ea);k[da>>2]=27468;k[We>>2]=27488;k[Ve>>2]=27560;Yua(Se);Ava(Ve);vva(We);r=b;return}}else Qa=408;while(0);if((Qa|0)==408){Re=Rb()|0;hf=Q;jf=Re}k[da>>2]=27468;k[We>>2]=27488;k[Ve>>2]=27560;Yua(Se);Ava(Ve);vva(We);vc=hf;wc=jf;Qb(wc|0)}while(0);df=ff;ef=gf;vva(We);Qb(ef|0)}while(0);if((Qa|0)==390){Ke=Rb()|0;Oe=Q;Pe=Ke}k[$>>2]=27468;k[ke>>2]=27488;k[se>>2]=27560;Yua(He);Ava(se);vva(ke);vc=Oe;wc=Pe;Qb(wc|0)}while(0);Fe=Ie;Ge=Je;vva(ke);Qb(Ge|0)}while(0);if((Qa|0)==387){le=Rb()|0;De=Q;Ee=le}k[Z>>2]=27468;k[qe>>2]=27488;k[pe>>2]=27560;Yua(me);Ava(pe);vva(qe);vc=De;wc=Ee;Qb(wc|0)}while(0);ze=Be;Ae=Ce;vva(qe);Qb(Ae|0)}while(0);if((Qa|0)==341){Pd=Rb()|0;ie=Q;je=Pd}k[V>>2]=27468;k[kd>>2]=27488;k[od>>2]=27560;Yua(Qd);Ava(od);vva(kd);vc=ie;wc=je;Qb(wc|0)}while(0);be=de;ce=ee;vva(kd);Qb(ce|0)}while(0);if((Qa|0)==338){ld=Rb()|0;$d=Q;ae=ld}k[T>>2]=27468;k[cd>>2]=27488;k[Od>>2]=27560;Yua(vd);Ava(Od);vva(cd);vc=$d;wc=ae;Qb(wc|0)}while(0);Xd=Zd;Yd=_d;vva(cd);Qb(Yd|0)}while(0);if((Qa|0)==292){dd=Rb()|0;Md=Q;Nd=dd}k[O>>2]=27468;k[Fc>>2]=27488;k[mc>>2]=27560;Yua(Ec);Ava(mc);vva(Fc);vc=Md;wc=Nd;Qb(wc|0)}while(0);Id=Kd;Jd=Ld;vva(Fc);Qb(Jd|0)}while(0);if((Qa|0)==224){Hc=Rb()|0;Yc=Q;Zc=Hc}k[E>>2]=27468;k[ec>>2]=27488;k[Jc>>2]=27560;Yua(Ic);Ava(Jc);vva(ec);vc=Yc;wc=Zc;Qb(wc|0)}while(0);Uc=Wc;Vc=Xc;vva(ec);Qb(Vc|0)}while(0);if((Qa|0)==178){gc=Rb()|0;Bc=Q;Cc=gc}k[z>>2]=27468;k[lc>>2]=27488;k[kc>>2]=27560;Yua(ic);Ava(kc);vva(lc);vc=Bc;wc=Cc;Qb(wc|0)}while(0);xc=zc;yc=Ac;vva(lc);Qb(yc|0)}while(0);if((Qa|0)==142){$b=Rb()|0;cc=Q;dc=$b}k[v>>2]=27468;k[Pb>>2]=27488;k[Sb>>2]=27560;Yua(Yb);Ava(Sb);vva(Pb);vc=cc;wc=dc;Qb(wc|0)}while(0);Wb=Zb;Xb=_b;vva(Pb);Qb(Xb|0)}while(0);if((Qa|0)==139){Nb=Rb()|0;Tb=Q;Ub=Nb}k[t>>2]=27468;k[Db>>2]=27488;k[Eb>>2]=27560;Yua(Kb);Ava(Eb);vva(Db);vc=Tb;wc=Ub;Qb(wc|0)}while(0);Ib=Lb;Jb=Mb;vva(Db);Qb(Jb|0)}while(0);if((Qa|0)==136){Bb=Rb()|0;Fb=Q;Gb=Bb}k[q>>2]=27468;k[rb>>2]=27488;k[sb>>2]=27560;Yua(yb);Ava(sb);vva(rb);vc=Fb;wc=Gb;Qb(wc|0)}while(0);wb=zb;xb=Ab;vva(rb);Qb(xb|0)}while(0);if((Qa|0)==133){pb=Rb()|0;tb=Q;ub=pb}k[n>>2]=27468;k[fb>>2]=27488;k[gb>>2]=27560;Yua(mb);Ava(gb);vva(fb);vc=tb;wc=ub;Qb(wc|0)}while(0);kb=nb;lb=ob;vva(fb);Qb(lb|0)}while(0);if((Qa|0)==130){cb=Rb()|0;hb=Q;ib=cb}k[l>>2]=27468;k[Ta>>2]=27488;k[Ua>>2]=27560;Yua($a);Ava(Ua);vva(Ta);vc=hb;wc=ib;Qb(wc|0)}while(0);Za=ab;_a=bb;vva(Ta);Qb(_a|0)}while(0);if((Qa|0)==127){Oa=Rb()|0;Va=Q;Wa=Oa}k[h>>2]=27468;k[Da>>2]=27488;k[Ea>>2]=27560;Yua(La);Ava(Ea);vva(Da);vc=Va;wc=Wa;Qb(wc|0)}while(0);Ja=Ma;Ka=Na;vva(Da);Qb(Ka|0)}else Qa=124;while(0);if((Qa|0)==124){Ba=Rb()|0;Fa=Q;Ga=Ba}k[f>>2]=27468;k[oa>>2]=27488;k[pa>>2]=27560;Yua(xa);Ava(pa);vva(oa);vc=Fa;wc=Ga;Qb(wc|0)}while(0);ta=za;ua=Aa;vva(oa);Qb(ua|0)}else Qa=121;while(0);if((Qa|0)==121){na=Rb()|0;qa=Q;ra=na}k[d>>2]=27468;k[fa>>2]=27488;k[ga>>2]=27560;Yua(ka);Ava(ga);vva(fa);vc=qa;wc=ra;Qb(wc|0)}while(0);ia=la;ja=ma;vva(fa);Qb(ja|0)}function tla(a){a=a|0;var b=0,c=0,d=0,e=0;i[a+13>>0]=0;b=k[a>>2]|0;if((b|0)<=0)return;c=k[a+16>>2]|0;d=k[a+20>>2]|0;e=k[a+24>>2]|0;a=0;do{i[c+a>>0]=0;i[d+a>>0]=1;p[e+(a<<3)>>3]=0.0;a=a+1|0}while((a|0)<(b|0));return}function ula(a){a=a|0;var b=0,c=0,d=0,e=0;i[a+13>>0]=1;b=k[a>>2]|0;if((b|0)<=0)return;c=k[a+16>>2]|0;d=k[a+20>>2]|0;e=k[a+24>>2]|0;a=0;do{i[c+a>>0]=1;i[d+a>>0]=0;p[e+(a<<3)>>3]=0.0;a=a+1|0}while((a|0)<(b|0));return}function vla(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;e=r;r=r+192|0;f=e+176|0;g=e+40|0;h=e+24|0;j=e+12|0;m=e;switch(d|0){case 0:{d=k[b>>2]|0;n=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;i[d>>0]=n;i[d+1>>0]=n>>8;i[d+2>>0]=n>>16;i[d+3>>0]=n>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;d=a+4|0;o=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[n>>0]=o;i[n+1>>0]=o>>8;i[n+2>>0]=o>>16;i[n+3>>0]=o>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;n=a+8|0;p=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[o>>0]=p;i[o+1>>0]=p>>8;i[o+2>>0]=p>>16;i[o+3>>0]=p>>24;p=(k[b>>2]|0)+4|0;k[b>>2]=p;i[p>>0]=i[a+12>>0]|0;p=(k[b>>2]|0)+1|0;k[b>>2]=p;i[p>>0]=i[a+13>>0]|0;p=(k[b>>2]|0)+1|0;k[b>>2]=p;i[p>>0]=i[a+14>>0]|0;p=(k[b>>2]|0)+1|0;k[b>>2]=p;o=a+16|0;q=(k[o>>2]|0)==0;i[p>>0]=q&1;p=(k[b>>2]|0)+1|0;k[b>>2]=p;if(q)s=p;else{TEa(p|0,k[o>>2]|0,k[a>>2]|0)|0;o=(k[b>>2]|0)+(k[a>>2]|0)|0;k[b>>2]=o;s=o}o=a+20|0;p=(k[o>>2]|0)==0;i[s>>0]=p&1;s=(k[b>>2]|0)+1|0;k[b>>2]=s;if(p)t=s;else{TEa(s|0,k[o>>2]|0,k[a>>2]|0)|0;o=(k[b>>2]|0)+(k[a>>2]|0)|0;k[b>>2]=o;t=o}o=a+24|0;s=(k[o>>2]|0)==0;i[t>>0]=s&1;t=(k[b>>2]|0)+1|0;k[b>>2]=t;if(s)u=t;else{TEa(t|0,k[o>>2]|0,k[a>>2]<<3|0)|0;o=(k[b>>2]|0)+(k[a>>2]<<3)|0;k[b>>2]=o;u=o}o=a+28|0;t=(k[o>>2]|0)==0;i[u>>0]=t&1;u=(k[b>>2]|0)+1|0;k[b>>2]=u;if(t)v=u;else{TEa(u|0,k[o>>2]|0,k[a>>2]<<2|0)|0;o=(k[b>>2]|0)+(k[a>>2]<<2)|0;k[b>>2]=o;v=o}o=a+32|0;u=(k[o>>2]|0)==0;i[v>>0]=u&1;v=(k[b>>2]|0)+1|0;k[b>>2]=v;if(u)w=v;else{TEa(v|0,k[o>>2]|0,k[a>>2]<<2|0)|0;o=(k[b>>2]|0)+(k[a>>2]<<2)|0;k[b>>2]=o;w=o}o=a+36|0;v=(k[o>>2]|0)==0;i[w>>0]=v&1;w=(k[b>>2]|0)+1|0;k[b>>2]=w;if(v)x=w;else{TEa(w|0,k[o>>2]|0,k[d>>2]<<2|0)|0;o=(k[b>>2]|0)+(k[d>>2]<<2)|0;k[b>>2]=o;x=o}o=a+40|0;d=(k[o>>2]|0)==0;i[x>>0]=d&1;x=(k[b>>2]|0)+1|0;k[b>>2]=x;if(d){r=e;return}TEa(x|0,k[o>>2]|0,k[n>>2]<<2|0)|0;k[b>>2]=(k[b>>2]|0)+(k[n>>2]<<2);r=e;return}case 2:{n=(k[a+16>>2]|0)==0;o=(k[c>>2]|0)+16|0;k[c>>2]=o;if(n)y=o;else{n=o+(k[a>>2]|0)|0;k[c>>2]=n;y=n}n=(k[a+20>>2]|0)==0;o=y+1|0;k[c>>2]=o;if(n)z=o;else{n=o+(k[a>>2]|0)|0;k[c>>2]=n;z=n}n=(k[a+24>>2]|0)==0;o=z+1|0;k[c>>2]=o;if(n)A=o;else{n=o+(k[a>>2]<<3)|0;k[c>>2]=n;A=n}n=(k[a+28>>2]|0)==0;o=A+1|0;k[c>>2]=o;if(n)C=o;else{n=o+(k[a>>2]<<2)|0;k[c>>2]=n;C=n}n=(k[a+32>>2]|0)==0;o=C+1|0;k[c>>2]=o;if(n)D=o;else{n=o+(k[a>>2]<<2)|0;k[c>>2]=n;D=n}n=(k[a+36>>2]|0)==0;o=D+1|0;k[c>>2]=o;if(n)E=o;else{n=o+(k[a+4>>2]<<2)|0;k[c>>2]=n;E=n}n=(k[a+40>>2]|0)==0;o=E+1|0;k[c>>2]=o;if(n){r=e;return}k[c>>2]=o+(k[a+8>>2]<<2);r=e;return}case 1:{o=k[b>>2]|0;c=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[a>>0]=c;i[a+1>>0]=c>>8;i[a+2>>0]=c>>16;i[a+3>>0]=c>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;n=a+4|0;E=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[n>>0]=E;i[n+1>>0]=E>>8;i[n+2>>0]=E>>16;i[n+3>>0]=E>>24;n=(k[b>>2]|0)+4|0;k[b>>2]=n;o=a+8|0;D=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[o>>0]=D;i[o+1>>0]=D>>8;i[o+2>>0]=D>>16;i[o+3>>0]=D>>24;o=(k[b>>2]|0)+4|0;k[b>>2]=o;i[a+12>>0]=i[o>>0]|0;o=(k[b>>2]|0)+1|0;k[b>>2]=o;i[a+13>>0]=i[o>>0]|0;o=(k[b>>2]|0)+1|0;k[b>>2]=o;i[a+14>>0]=i[o>>0]|0;o=k[b>>2]|0;n=o+1|0;k[b>>2]=n;C=i[n>>0]|0;n=o+2|0;k[b>>2]=n;if(!(C&1)){C=Rqa(c)|0;k[a+16>>2]=C;o=k[b>>2]|0;TEa(C|0,o|0,c|0)|0;C=o+c|0;k[b>>2]=C;F=C}else F=n;n=i[F>>0]|0;C=F+1|0;k[b>>2]=C;if(!(n&1)){n=Rqa(c)|0;k[a+20>>2]=n;F=k[b>>2]|0;TEa(n|0,F|0,c|0)|0;n=F+c|0;k[b>>2]=n;G=n}else G=C;C=i[G>>0]|0;n=G+1|0;k[b>>2]=n;if(!(C&1)){C=Rqa(c>>>0>536870911?-1:c<<3)|0;k[a+24>>2]=C;G=k[b>>2]|0;F=c<<3;TEa(C|0,G|0,F|0)|0;C=G+F|0;k[b>>2]=C;H=C}else H=n;n=i[H>>0]|0;C=H+1|0;k[b>>2]=C;if(!(n&1)){n=Rqa(c>>>0>1073741823?-1:c<<2)|0;k[a+28>>2]=n;H=k[b>>2]|0;F=c<<2;TEa(n|0,H|0,F|0)|0;n=H+F|0;k[b>>2]=n;I=n}else I=C;C=i[I>>0]|0;n=I+1|0;k[b>>2]=n;if(!(C&1)){C=Rqa(c>>>0>1073741823?-1:c<<2)|0;k[a+32>>2]=C;I=k[b>>2]|0;F=c<<2;TEa(C|0,I|0,F|0)|0;C=I+F|0;k[b>>2]=C;J=C}else J=n;n=i[J>>0]|0;C=J+1|0;k[b>>2]=C;if(!(n&1)){n=Rqa(E>>>0>1073741823?-1:E<<2)|0;k[a+36>>2]=n;J=k[b>>2]|0;F=E<<2;TEa(n|0,J|0,F|0)|0;n=J+F|0;k[b>>2]=n;K=n}else K=C;C=i[K>>0]|0;k[b>>2]=K+1;if(C&1){r=e;return}C=Rqa(D>>>0>1073741823?-1:D<<2)|0;k[a+40>>2]=C;a=k[b>>2]|0;K=D<<2;TEa(C|0,a|0,K|0)|0;k[b>>2]=a+K;r=e;return}default:{e=g+56|0;K=g+4|0;k[g>>2]=27524;k[e>>2]=27544;B=0;wa(508,g+56|0,K|0);a=B;B=0;if(a&1){a=Rb()|0;L=Q;M=a;vva(e);Qb(M|0)}k[g+128>>2]=0;k[g+132>>2]=-1;k[g>>2]=27468;k[e>>2]=27488;B=0;va(448,K|0);a=B;B=0;do if(a&1){b=Rb()|0;N=Q;O=b}else{k[K>>2]=27560;b=g+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[g+52>>2]=16;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;B=0;wa(509,K|0,f|0);C=B;B=0;if(C&1){C=Rb()|0;D=Q;Yua(f);Yua(b);Ava(K);N=D;O=C;break}Yua(f);B=0;C=Ia(40,g|0,143951,43)|0;D=B;B=0;if(!(D&1)?(B=0,Xa(239,C|0,0)|0,C=B,B=0,!(C&1)):0){C=Ab(20)|0;B=0;eb(502,h|0,142375,70);D=B;B=0;do if(!(D&1)){B=0;eb(502,j|0,149525,8);n=B;B=0;if(n&1){n=Rb()|0;F=Q;Yua(h);P=F;R=n;break}B=0;wa(510,m|0,K|0);n=B;B=0;if(n&1){n=Rb()|0;S=Q;T=n;U=1}else{B=0;ua(163,C|0,h|0,j|0,305,m|0);n=B;B=0;if(n&1)V=1;else{B=0;eb(503,C|0,1240,229);B=0;V=0}n=Rb()|0;F=Q;Yua(m);S=F;T=n;U=V}Yua(j);Yua(h);if(U){P=S;R=T}else{W=S;X=T;k[g>>2]=27468;k[e>>2]=27488;k[K>>2]=27560;Yua(b);Ava(K);vva(e);Qb(X|0)}}else{n=Rb()|0;P=Q;R=n}while(0);zb(C|0);W=P;X=R;k[g>>2]=27468;k[e>>2]=27488;k[K>>2]=27560;Yua(b);Ava(K);vva(e);Qb(X|0)}D=Rb()|0;W=Q;X=D;k[g>>2]=27468;k[e>>2]=27488;k[K>>2]=27560;Yua(b);Ava(K);vva(e);Qb(X|0)}while(0);L=N;M=O;vva(e);Qb(M|0)}}}function wla(a){a=a|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;return}function xla(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;k[a>>2]=c;if((c|0)<1){k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;return}d=c>>>0>1073741823?-1:c<<2;c=Rqa(d)|0;e=a+4|0;k[e>>2]=c;f=Rqa(d)|0;g=a+8|0;k[g>>2]=f;h=Rqa(d)|0;d=a+12|0;k[d>>2]=h;k[f>>2]=k[b>>2];k[c>>2]=0;k[h>>2]=0;if((k[a>>2]|0)>1)i=1;else return;do{h=k[e>>2]|0;k[(k[g>>2]|0)+(i<<2)>>2]=k[b+(i<<2)>>2];k[h+(i<<2)>>2]=0;k[(k[d>>2]|0)+(i<<2)>>2]=0;i=i+1|0}while((i|0)<(k[a>>2]|0));return}function yla(a){a=a|0;var b=0,c=0;b=a+4|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+8|0;c=k[b>>2]|0;if(c)Tqa(c);k[b>>2]=0;b=a+12|0;a=k[b>>2]|0;if(!a){k[b>>2]=0;return}Tqa(a);k[b>>2]=0;return}function zla(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0;b=r;r=r+1376|0;c=b+1352|0;d=b+1168|0;e=b+1340|0;f=b+1032|0;g=b+1328|0;h=b+880|0;i=b+1316|0;j=b+728|0;l=b+1304|0;m=b+592|0;n=b+1016|0;o=b+456|0;p=b+864|0;q=b+304|0;s=b+440|0;t=b+168|0;u=b+152|0;v=b+16|0;w=b;if(!(k[a>>2]|0)){x=v+56|0;y=v+4|0;k[v>>2]=27524;k[x>>2]=27544;B=0;wa(508,v+56|0,y|0);z=B;B=0;if(z&1){z=Rb()|0;A=Q;C=z;vva(x);Qb(C|0)}k[v+128>>2]=0;k[v+132>>2]=-1;k[v>>2]=27468;k[x>>2]=27488;B=0;va(448,y|0);z=B;B=0;do if(z&1){D=Rb()|0;E=Q;F=D}else{k[y>>2]=27560;D=v+36|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;k[D+12>>2]=0;k[v+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,y|0,c|0);G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(c);Yua(D);Ava(y);E=H;F=G;break}Yua(c);B=0;Ia(40,v|0,142729,16)|0;G=B;B=0;do if(!(G&1)?(B=0,wa(510,w|0,y|0),H=B,B=0,!(H&1)):0){B=0;ya(424,w|0)|0;H=B;B=0;if(H&1){H=Rb()|0;I=Q;Yua(w);J=I;K=H;break}Yua(w);k[v>>2]=27468;k[x>>2]=27488;k[y>>2]=27560;Yua(D);Ava(y);vva(x);r=b;return}else L=137;while(0);if((L|0)==137){G=Rb()|0;J=Q;K=G}k[v>>2]=27468;k[x>>2]=27488;k[y>>2]=27560;Yua(D);Ava(y);vva(x);M=J;N=K;Qb(N|0)}while(0);A=E;C=F;vva(x);Qb(C|0)}C=d+56|0;x=d+4|0;k[d>>2]=27524;k[C>>2]=27544;B=0;wa(508,d+56|0,x|0);F=B;B=0;if(F&1){F=Rb()|0;O=Q;P=F;vva(C);Qb(P|0)}k[d+128>>2]=0;k[d+132>>2]=-1;k[d>>2]=27468;k[C>>2]=27488;B=0;va(448,x|0);F=B;B=0;do if(F&1){E=Rb()|0;R=Q;S=E}else{k[x>>2]=27560;E=d+36|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;k[d+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,x|0,c|0);A=B;B=0;if(A&1){A=Rb()|0;K=Q;Yua(c);Yua(E);Ava(x);R=K;S=A;break}Yua(c);B=0;Ia(40,d|0,142679,10)|0;A=B;B=0;do if(!(A&1)?(B=0,wa(510,e|0,x|0),K=B,B=0,!(K&1)):0){B=0;ya(424,e|0)|0;K=B;B=0;if(K&1){K=Rb()|0;J=Q;Yua(e);T=J;U=K;break}Yua(e);k[d>>2]=27468;k[C>>2]=27488;k[x>>2]=27560;Yua(E);Ava(x);vva(C);K=f+56|0;J=f+4|0;k[f>>2]=27524;k[K>>2]=27544;B=0;wa(508,f+56|0,J|0);y=B;B=0;if(y&1){y=Rb()|0;V=Q;W=y;vva(K);Qb(W|0)}k[f+128>>2]=0;k[f+132>>2]=-1;k[f>>2]=27468;k[K>>2]=27488;B=0;va(448,J|0);y=B;B=0;do if(y&1){v=Rb()|0;X=Q;Y=v}else{k[J>>2]=27560;v=f+36|0;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;k[v+12>>2]=0;k[f+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,J|0,c|0);w=B;B=0;if(w&1){w=Rb()|0;z=Q;Yua(c);Yua(v);Ava(J);X=z;Y=w;break}Yua(c);B=0;w=Ia(40,f|0,142690,10)|0;z=B;B=0;do if(((!(z&1)?(B=0,G=Xa(242,w|0,k[a>>2]|0)|0,H=B,B=0,!(H&1)):0)?(B=0,Ia(40,G|0,149177,1)|0,G=B,B=0,!(G&1)):0)?(B=0,wa(510,g|0,J|0),G=B,B=0,!(G&1)):0){B=0;ya(424,g|0)|0;G=B;B=0;if(G&1){G=Rb()|0;H=Q;Yua(g);Z=H;_=G;break}Yua(g);k[f>>2]=27468;k[K>>2]=27488;k[J>>2]=27560;Yua(v);Ava(J);vva(K);G=h+56|0;H=h+4|0;k[h>>2]=27524;k[G>>2]=27544;B=0;wa(508,h+56|0,H|0);I=B;B=0;if(I&1){I=Rb()|0;$=Q;aa=I;vva(G);Qb(aa|0)}k[h+128>>2]=0;k[h+132>>2]=-1;k[h>>2]=27468;k[G>>2]=27488;B=0;va(448,H|0);I=B;B=0;do if(I&1){ba=Rb()|0;ca=Q;da=ba}else{k[H>>2]=27560;ba=h+36|0;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;k[h+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,H|0,c|0);ea=B;B=0;if(ea&1){ea=Rb()|0;fa=Q;Yua(c);Yua(ba);Ava(H);ca=fa;da=ea;break}Yua(c);B=0;Ia(40,h|0,142701,11)|0;ea=B;B=0;do if(ea&1)L=58;else{B=0;wa(510,i|0,H|0);fa=B;B=0;if(fa&1){L=58;break}B=0;ya(424,i|0)|0;fa=B;B=0;if(fa&1){fa=Rb()|0;ga=Q;Yua(i);ha=ga;ia=fa;break}Yua(i);k[h>>2]=27468;k[G>>2]=27488;k[H>>2]=27560;Yua(ba);Ava(H);vva(G);a:do if((k[a>>2]|0)>0){fa=j+56|0;ga=j+4|0;ja=j+56|0;ka=j+128|0;la=j+132|0;ma=j+36|0;na=j+52|0;oa=a+8|0;pa=0;while(1){k[j>>2]=27524;k[fa>>2]=27544;B=0;wa(508,ja|0,ga|0);qa=B;B=0;if(qa&1){L=43;break}k[ka>>2]=0;k[la>>2]=-1;k[j>>2]=27468;k[fa>>2]=27488;B=0;va(448,ga|0);qa=B;B=0;if(qa&1){L=44;break}k[ga>>2]=27560;k[ma>>2]=0;k[ma+4>>2]=0;k[ma+8>>2]=0;k[ma+12>>2]=0;k[na>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,ga|0,c|0);qa=B;B=0;if(qa&1){L=42;break}Yua(c);B=0;qa=Xa(242,j|0,k[(k[oa>>2]|0)+(pa<<2)>>2]|0)|0;ra=B;B=0;if(ra&1){L=61;break}B=0;Ia(40,qa|0,149175,1)|0;qa=B;B=0;if(qa&1){L=61;break}B=0;wa(510,l|0,ga|0);qa=B;B=0;if(qa&1){L=61;break}B=0;ya(424,l|0)|0;qa=B;B=0;if(qa&1){L=62;break}Yua(l);k[j>>2]=27468;k[fa>>2]=27488;k[ga>>2]=27560;Yua(ma);Ava(ga);vva(fa);pa=pa+1|0;if((pa|0)>=(k[a>>2]|0))break a}if((L|0)==42){pa=Rb()|0;oa=Q;Yua(c);Yua(ma);Ava(ga);sa=oa;ta=pa;L=45}else if((L|0)==43){pa=Rb()|0;ua=Q;xa=pa;vva(fa);Qb(xa|0)}else if((L|0)==44){pa=Rb()|0;sa=Q;ta=pa;L=45}else if((L|0)==61){pa=Rb()|0;za=Q;Aa=pa;L=63}else if((L|0)==62){pa=Rb()|0;oa=Q;Yua(l);za=oa;Aa=pa;L=63}if((L|0)==45){ua=sa;xa=ta;vva(fa);Qb(xa|0)}else if((L|0)==63){k[j>>2]=27468;k[fa>>2]=27488;k[ga>>2]=27560;Yua(ma);Ava(ga);vva(fa);M=za;N=Aa;Qb(N|0)}}while(0);pa=m+56|0;oa=m+4|0;k[m>>2]=27524;k[pa>>2]=27544;B=0;wa(508,m+56|0,oa|0);na=B;B=0;if(na&1){na=Rb()|0;Ba=Q;Ca=na;vva(pa);Qb(Ca|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=27468;k[pa>>2]=27488;B=0;va(448,oa|0);na=B;B=0;do if(na&1){la=Rb()|0;Da=Q;Ea=la}else{k[oa>>2]=27560;la=m+36|0;k[la>>2]=0;k[la+4>>2]=0;k[la+8>>2]=0;k[la+12>>2]=0;k[m+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,oa|0,c|0);ka=B;B=0;if(ka&1){ka=Rb()|0;ja=Q;Yua(c);Yua(la);Ava(oa);Da=ja;Ea=ka;break}Yua(c);B=0;Ia(40,m|0,149177,1)|0;ka=B;B=0;do if(ka&1)L=101;else{B=0;wa(510,n|0,oa|0);ja=B;B=0;if(ja&1){L=101;break}B=0;ya(424,n|0)|0;ja=B;B=0;if(ja&1){ja=Rb()|0;qa=Q;Yua(n);Fa=qa;Ga=ja;break}Yua(n);k[m>>2]=27468;k[pa>>2]=27488;k[oa>>2]=27560;Yua(la);Ava(oa);vva(pa);ja=o+56|0;qa=o+4|0;k[o>>2]=27524;k[ja>>2]=27544;B=0;wa(508,o+56|0,qa|0);ra=B;B=0;if(ra&1){ra=Rb()|0;Ha=Q;Ja=ra;vva(ja);Qb(Ja|0)}k[o+128>>2]=0;k[o+132>>2]=-1;k[o>>2]=27468;k[ja>>2]=27488;B=0;va(448,qa|0);ra=B;B=0;do if(ra&1){Ka=Rb()|0;La=Q;Ma=Ka}else{k[qa>>2]=27560;Ka=o+36|0;k[Ka>>2]=0;k[Ka+4>>2]=0;k[Ka+8>>2]=0;k[Ka+12>>2]=0;k[o+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,qa|0,c|0);Na=B;B=0;if(Na&1){Na=Rb()|0;Oa=Q;Yua(c);Yua(Ka);Ava(qa);La=Oa;Ma=Na;break}Yua(c);B=0;Ia(40,o|0,142713,15)|0;Na=B;B=0;do if(Na&1)L=104;else{B=0;wa(510,p|0,qa|0);Oa=B;B=0;if(Oa&1){L=104;break}B=0;ya(424,p|0)|0;Oa=B;B=0;if(Oa&1){Oa=Rb()|0;Pa=Q;Yua(p);Qa=Pa;Ra=Oa;break}Yua(p);k[o>>2]=27468;k[ja>>2]=27488;k[qa>>2]=27560;Yua(Ka);Ava(qa);vva(ja);b:do if((k[a>>2]|0)>0){Oa=q+56|0;Pa=q+4|0;Sa=q+56|0;Ta=q+128|0;Ua=q+132|0;Va=q+36|0;Wa=q+52|0;Ya=a+12|0;Za=0;while(1){k[q>>2]=27524;k[Oa>>2]=27544;B=0;wa(508,Sa|0,Pa|0);_a=B;B=0;if(_a&1){L=92;break}k[Ta>>2]=0;k[Ua>>2]=-1;k[q>>2]=27468;k[Oa>>2]=27488;B=0;va(448,Pa|0);_a=B;B=0;if(_a&1){L=93;break}k[Pa>>2]=27560;k[Va>>2]=0;k[Va+4>>2]=0;k[Va+8>>2]=0;k[Va+12>>2]=0;k[Wa>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Pa|0,c|0);_a=B;B=0;if(_a&1){L=91;break}Yua(c);B=0;_a=Xa(242,q|0,k[(k[Ya>>2]|0)+(Za<<2)>>2]|0)|0;$a=B;B=0;if($a&1){L=107;break}B=0;Ia(40,_a|0,149175,1)|0;_a=B;B=0;if(_a&1){L=107;break}B=0;wa(510,s|0,Pa|0);_a=B;B=0;if(_a&1){L=107;break}B=0;ya(424,s|0)|0;_a=B;B=0;if(_a&1){L=108;break}Yua(s);k[q>>2]=27468;k[Oa>>2]=27488;k[Pa>>2]=27560;Yua(Va);Ava(Pa);vva(Oa);Za=Za+1|0;if((Za|0)>=(k[a>>2]|0))break b}if((L|0)==91){Za=Rb()|0;Ya=Q;Yua(c);Yua(Va);Ava(Pa);ab=Ya;bb=Za;L=94}else if((L|0)==92){Za=Rb()|0;cb=Q;db=Za;vva(Oa);Qb(db|0)}else if((L|0)==93){Za=Rb()|0;ab=Q;bb=Za;L=94}else if((L|0)==107){Za=Rb()|0;eb=Q;fb=Za;L=109}else if((L|0)==108){Za=Rb()|0;Ya=Q;Yua(s);eb=Ya;fb=Za;L=109}if((L|0)==94){cb=ab;db=bb;vva(Oa);Qb(db|0)}else if((L|0)==109){k[q>>2]=27468;k[Oa>>2]=27488;k[Pa>>2]=27560;Yua(Va);Ava(Pa);vva(Oa);M=eb;N=fb;Qb(N|0)}}while(0);Za=t+56|0;Ya=t+4|0;k[t>>2]=27524;k[Za>>2]=27544;B=0;wa(508,t+56|0,Ya|0);Wa=B;B=0;if(Wa&1){Wa=Rb()|0;gb=Q;hb=Wa;vva(Za);Qb(hb|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=27468;k[Za>>2]=27488;B=0;va(448,Ya|0);Wa=B;B=0;do if(Wa&1){Ua=Rb()|0;ib=Q;jb=Ua}else{k[Ya>>2]=27560;Ua=t+36|0;k[Ua>>2]=0;k[Ua+4>>2]=0;k[Ua+8>>2]=0;k[Ua+12>>2]=0;k[t+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;B=0;wa(509,Ya|0,c|0);Ta=B;B=0;if(Ta&1){Ta=Rb()|0;Sa=Q;Yua(c);Yua(Ua);Ava(Ya);ib=Sa;jb=Ta;break}Yua(c);B=0;Ia(40,t|0,149177,1)|0;Ta=B;B=0;do if(Ta&1)L=122;else{B=0;wa(510,u|0,Ya|0);Sa=B;B=0;if(Sa&1){L=122;break}B=0;ya(424,u|0)|0;Sa=B;B=0;if(Sa&1){Sa=Rb()|0;_a=Q;Yua(u);kb=_a;lb=Sa;break}Yua(u);k[t>>2]=27468;k[Za>>2]=27488;k[Ya>>2]=27560;Yua(Ua);Ava(Ya);vva(Za);r=b;return}while(0);if((L|0)==122){Ta=Rb()|0;kb=Q;lb=Ta}k[t>>2]=27468;k[Za>>2]=27488;k[Ya>>2]=27560;Yua(Ua);Ava(Ya);vva(Za);M=kb;N=lb;Qb(N|0)}while(0);gb=ib;hb=jb;vva(Za);Qb(hb|0)}while(0);if((L|0)==104){Na=Rb()|0;Qa=Q;Ra=Na}k[o>>2]=27468;k[ja>>2]=27488;k[qa>>2]=27560;Yua(Ka);Ava(qa);vva(ja);M=Qa;N=Ra;Qb(N|0)}while(0);Ha=La;Ja=Ma;vva(ja);Qb(Ja|0)}while(0);if((L|0)==101){ka=Rb()|0;Fa=Q;Ga=ka}k[m>>2]=27468;k[pa>>2]=27488;k[oa>>2]=27560;Yua(la);Ava(oa);vva(pa);M=Fa;N=Ga;Qb(N|0)}while(0);Ba=Da;Ca=Ea;vva(pa);Qb(Ca|0)}while(0);if((L|0)==58){ea=Rb()|0;ha=Q;ia=ea}k[h>>2]=27468;k[G>>2]=27488;k[H>>2]=27560;Yua(ba);Ava(H);vva(G);M=ha;N=ia;Qb(N|0)}while(0);$=ca;aa=da;vva(G);Qb(aa|0)}else L=55;while(0);if((L|0)==55){w=Rb()|0;Z=Q;_=w}k[f>>2]=27468;k[K>>2]=27488;k[J>>2]=27560;Yua(v);Ava(J);vva(K);M=Z;N=_;Qb(N|0)}while(0);V=X;W=Y;vva(K);Qb(W|0)}else L=52;while(0);if((L|0)==52){A=Rb()|0;T=Q;U=A}k[d>>2]=27468;k[C>>2]=27488;k[x>>2]=27560;Yua(E);Ava(x);vva(C);M=T;N=U;Qb(N|0)}while(0);O=R;P=S;vva(C);Qb(P|0)}
+function WCa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0;a=r;r=r+224|0;g=a+198|0;h=a+196|0;j=a+184|0;m=a+172|0;n=a+168|0;o=a+8|0;p=a+4|0;q=a;s=ACa(d)|0;Dxa(j,d,g,h);d=0;while(1){if((d|0)==3)break;k[m+(d<<2)>>2]=0;d=d+1|0}if(!(i[m>>0]&1))t=10;else t=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,t|0,0);t=B;B=0;a:do if(!(t&1)){d=m+8|0;u=m+1|0;v=(i[m>>0]&1)==0?u:k[d>>2]|0;k[n>>2]=v;k[p>>2]=o;k[q>>2]=0;w=m+4|0;x=i[h>>0]|0;y=k[b>>2]|0;z=v;b:while(1){if(y)if((k[y+12>>2]|0)==(k[y+16>>2]|0)){B=0;v=ya(k[(k[y>>2]|0)+36>>2]|0,y|0)|0;A=B;B=0;if(A&1){C=27;break}if((v|0)==-1){k[b>>2]=0;D=0}else D=y}else D=y;else D=0;v=(D|0)==0;A=k[c>>2]|0;do if(A){if((k[A+12>>2]|0)!=(k[A+16>>2]|0))if(v){E=A;break}else{F=A;G=D;H=z;break b}B=0;I=ya(k[(k[A>>2]|0)+36>>2]|0,A|0)|0;J=B;B=0;if(J&1){C=27;break b}if((I|0)!=-1)if(v){E=A;break}else{F=A;G=D;H=z;break b}else{k[c>>2]=0;C=19;break}}else C=19;while(0);if((C|0)==19){C=0;if(v){F=0;G=D;H=z;break}else E=0}A=i[m>>0]|0;I=(A&1)==0?(A&255)>>>1:k[w>>2]|0;if((k[n>>2]|0)==(z+I|0)){B=0;eb(501,m|0,I<<1|0,0);A=B;B=0;if(A&1){C=27;break}if(!(i[m>>0]&1))K=10;else K=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,K|0,0);A=B;B=0;if(A&1){C=27;break}A=(i[m>>0]&1)==0?u:k[d>>2]|0;k[n>>2]=A+I;L=A}else L=z;A=D+12|0;I=k[A>>2]|0;J=D+16|0;if((I|0)==(k[J>>2]|0)){B=0;M=ya(k[(k[D>>2]|0)+36>>2]|0,D|0)|0;N=B;B=0;if(N&1){C=27;break}else O=M}else O=l[I>>0]|0;if(nxa(O&255,s,L,n,q,x,j,o,p,g)|0){F=E;G=D;H=L;break}I=k[A>>2]|0;if((I|0)==(k[J>>2]|0)){B=0;ya(k[(k[D>>2]|0)+40>>2]|0,D|0)|0;J=B;B=0;if(J&1){C=27;break}else{y=D;z=L;continue}}else{k[A>>2]=I+1;y=D;z=L;continue}}if((C|0)==27){z=Rb()|0;P=z;R=Q;break}z=i[j>>0]|0;if((((z&1)==0?(z&255)>>>1:k[j+4>>2]|0)|0)!=0?(z=k[p>>2]|0,(z-o|0)<160):0){y=k[q>>2]|0;k[p>>2]=z+4;k[z>>2]=y}B=0;y=cb(78,H|0,k[n>>2]|0,e|0,s|0)|0;z=Q;x=B;B=0;if(!(x&1)){x=f;k[x>>2]=y;k[x+4>>2]=z;lAa(j,o,k[p>>2]|0,e);if(G)if((k[G+12>>2]|0)==(k[G+16>>2]|0)){B=0;z=ya(k[(k[G>>2]|0)+36>>2]|0,G|0)|0;x=B;B=0;if(x&1){C=28;break}if((z|0)==-1){k[b>>2]=0;S=0}else S=G}else S=G;else S=0;z=(S|0)==0;do if(F){if((k[F+12>>2]|0)==(k[F+16>>2]|0)){B=0;x=ya(k[(k[F>>2]|0)+36>>2]|0,F|0)|0;y=B;B=0;if(y&1){C=28;break a}if((x|0)==-1){k[c>>2]=0;C=52;break}}if(!z)C=53}else C=52;while(0);if((C|0)==52?z:0)C=53;if((C|0)==53)k[e>>2]=k[e>>2]|2;x=k[b>>2]|0;Yua(m);Yua(j);r=a;return x|0}else C=28}else C=28;while(0);if((C|0)==28){C=Rb()|0;P=C;R=Q}Yua(m);Yua(j);Qb(P|0);return 0}function XCa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0.0,X=0;a=r;r=r+240|0;g=a+200|0;h=a+199|0;j=a+198|0;m=a+184|0;n=a+172|0;p=a+168|0;q=a+8|0;s=a+4|0;t=a;u=a+197|0;v=a+196|0;Exa(m,d,g,h,j);d=0;while(1){if((d|0)==3)break;k[n+(d<<2)>>2]=0;d=d+1|0}if(!(i[n>>0]&1))w=10;else w=(k[n>>2]&-2)+-1|0;B=0;eb(501,n|0,w|0,0);w=B;B=0;a:do if(!(w&1)){d=n+8|0;x=n+1|0;y=(i[n>>0]&1)==0?x:k[d>>2]|0;k[p>>2]=y;k[s>>2]=q;k[t>>2]=0;i[u>>0]=1;i[v>>0]=69;z=n+4|0;A=i[h>>0]|0;C=i[j>>0]|0;D=k[b>>2]|0;E=y;b:while(1){if(D)if((k[D+12>>2]|0)==(k[D+16>>2]|0)){B=0;y=ya(k[(k[D>>2]|0)+36>>2]|0,D|0)|0;F=B;B=0;if(F&1){G=27;break}if((y|0)==-1){k[b>>2]=0;H=0}else H=D}else H=D;else H=0;y=(H|0)==0;F=k[c>>2]|0;do if(F){if((k[F+12>>2]|0)!=(k[F+16>>2]|0))if(y){I=F;break}else{J=F;K=H;L=E;break b}B=0;M=ya(k[(k[F>>2]|0)+36>>2]|0,F|0)|0;N=B;B=0;if(N&1){G=27;break b}if((M|0)!=-1)if(y){I=F;break}else{J=F;K=H;L=E;break b}else{k[c>>2]=0;G=19;break}}else G=19;while(0);if((G|0)==19){G=0;if(y){J=0;K=H;L=E;break}else I=0}F=i[n>>0]|0;M=(F&1)==0?(F&255)>>>1:k[z>>2]|0;if((k[p>>2]|0)==(E+M|0)){B=0;eb(501,n|0,M<<1|0,0);F=B;B=0;if(F&1){G=27;break}if(!(i[n>>0]&1))O=10;else O=(k[n>>2]&-2)+-1|0;B=0;eb(501,n|0,O|0,0);F=B;B=0;if(F&1){G=27;break}F=(i[n>>0]&1)==0?x:k[d>>2]|0;k[p>>2]=F+M;P=F}else P=E;F=H+12|0;M=k[F>>2]|0;N=H+16|0;if((M|0)==(k[N>>2]|0)){B=0;R=ya(k[(k[H>>2]|0)+36>>2]|0,H|0)|0;S=B;B=0;if(S&1){G=27;break}else T=R}else T=l[M>>0]|0;if(Fxa(T&255,u,v,P,p,A,C,m,q,s,t,g)|0){J=I;K=H;L=P;break}M=k[F>>2]|0;if((M|0)==(k[N>>2]|0)){B=0;ya(k[(k[H>>2]|0)+40>>2]|0,H|0)|0;N=B;B=0;if(N&1){G=27;break}else{D=H;E=P;continue}}else{k[F>>2]=M+1;D=H;E=P;continue}}if((G|0)==27){E=Rb()|0;U=E;V=Q;break}E=i[m>>0]|0;if(!((i[u>>0]|0)==0?1:(((E&1)==0?(E&255)>>>1:k[m+4>>2]|0)|0)==0)?(E=k[s>>2]|0,(E-q|0)<160):0){D=k[t>>2]|0;k[s>>2]=E+4;k[E>>2]=D}B=0;W=+Za(3,L|0,k[p>>2]|0,e|0);D=B;B=0;if(!(D&1)){o[f>>2]=W;lAa(m,q,k[s>>2]|0,e);if(K)if((k[K+12>>2]|0)==(k[K+16>>2]|0)){B=0;D=ya(k[(k[K>>2]|0)+36>>2]|0,K|0)|0;E=B;B=0;if(E&1){G=28;break}if((D|0)==-1){k[b>>2]=0;X=0}else X=K}else X=K;else X=0;D=(X|0)==0;do if(J){if((k[J+12>>2]|0)==(k[J+16>>2]|0)){B=0;E=ya(k[(k[J>>2]|0)+36>>2]|0,J|0)|0;C=B;B=0;if(C&1){G=28;break a}if((E|0)==-1){k[c>>2]=0;G=52;break}}if(!D)G=53}else G=52;while(0);if((G|0)==52?D:0)G=53;if((G|0)==53)k[e>>2]=k[e>>2]|2;E=k[b>>2]|0;Yua(n);Yua(m);r=a;return E|0}else G=28}else G=28;while(0);if((G|0)==28){G=Rb()|0;U=G;V=Q}Yua(n);Yua(m);Qb(U|0);return 0}function YCa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0.0,X=0;a=r;r=r+240|0;g=a+200|0;h=a+199|0;j=a+198|0;m=a+184|0;n=a+172|0;o=a+168|0;q=a+8|0;s=a+4|0;t=a;u=a+197|0;v=a+196|0;Exa(m,d,g,h,j);d=0;while(1){if((d|0)==3)break;k[n+(d<<2)>>2]=0;d=d+1|0}if(!(i[n>>0]&1))w=10;else w=(k[n>>2]&-2)+-1|0;B=0;eb(501,n|0,w|0,0);w=B;B=0;a:do if(!(w&1)){d=n+8|0;x=n+1|0;y=(i[n>>0]&1)==0?x:k[d>>2]|0;k[o>>2]=y;k[s>>2]=q;k[t>>2]=0;i[u>>0]=1;i[v>>0]=69;z=n+4|0;A=i[h>>0]|0;C=i[j>>0]|0;D=k[b>>2]|0;E=y;b:while(1){if(D)if((k[D+12>>2]|0)==(k[D+16>>2]|0)){B=0;y=ya(k[(k[D>>2]|0)+36>>2]|0,D|0)|0;F=B;B=0;if(F&1){G=27;break}if((y|0)==-1){k[b>>2]=0;H=0}else H=D}else H=D;else H=0;y=(H|0)==0;F=k[c>>2]|0;do if(F){if((k[F+12>>2]|0)!=(k[F+16>>2]|0))if(y){I=F;break}else{J=F;K=H;L=E;break b}B=0;M=ya(k[(k[F>>2]|0)+36>>2]|0,F|0)|0;N=B;B=0;if(N&1){G=27;break b}if((M|0)!=-1)if(y){I=F;break}else{J=F;K=H;L=E;break b}else{k[c>>2]=0;G=19;break}}else G=19;while(0);if((G|0)==19){G=0;if(y){J=0;K=H;L=E;break}else I=0}F=i[n>>0]|0;M=(F&1)==0?(F&255)>>>1:k[z>>2]|0;if((k[o>>2]|0)==(E+M|0)){B=0;eb(501,n|0,M<<1|0,0);F=B;B=0;if(F&1){G=27;break}if(!(i[n>>0]&1))O=10;else O=(k[n>>2]&-2)+-1|0;B=0;eb(501,n|0,O|0,0);F=B;B=0;if(F&1){G=27;break}F=(i[n>>0]&1)==0?x:k[d>>2]|0;k[o>>2]=F+M;P=F}else P=E;F=H+12|0;M=k[F>>2]|0;N=H+16|0;if((M|0)==(k[N>>2]|0)){B=0;R=ya(k[(k[H>>2]|0)+36>>2]|0,H|0)|0;S=B;B=0;if(S&1){G=27;break}else T=R}else T=l[M>>0]|0;if(Fxa(T&255,u,v,P,o,A,C,m,q,s,t,g)|0){J=I;K=H;L=P;break}M=k[F>>2]|0;if((M|0)==(k[N>>2]|0)){B=0;ya(k[(k[H>>2]|0)+40>>2]|0,H|0)|0;N=B;B=0;if(N&1){G=27;break}else{D=H;E=P;continue}}else{k[F>>2]=M+1;D=H;E=P;continue}}if((G|0)==27){E=Rb()|0;U=E;V=Q;break}E=i[m>>0]|0;if(!((i[u>>0]|0)==0?1:(((E&1)==0?(E&255)>>>1:k[m+4>>2]|0)|0)==0)?(E=k[s>>2]|0,(E-q|0)<160):0){D=k[t>>2]|0;k[s>>2]=E+4;k[E>>2]=D}B=0;W=+Za(4,L|0,k[o>>2]|0,e|0);D=B;B=0;if(!(D&1)){p[f>>3]=W;lAa(m,q,k[s>>2]|0,e);if(K)if((k[K+12>>2]|0)==(k[K+16>>2]|0)){B=0;D=ya(k[(k[K>>2]|0)+36>>2]|0,K|0)|0;E=B;B=0;if(E&1){G=28;break}if((D|0)==-1){k[b>>2]=0;X=0}else X=K}else X=K;else X=0;D=(X|0)==0;do if(J){if((k[J+12>>2]|0)==(k[J+16>>2]|0)){B=0;E=ya(k[(k[J>>2]|0)+36>>2]|0,J|0)|0;C=B;B=0;if(C&1){G=28;break a}if((E|0)==-1){k[c>>2]=0;G=52;break}}if(!D)G=53}else G=52;while(0);if((G|0)==52?D:0)G=53;if((G|0)==53)k[e>>2]=k[e>>2]|2;E=k[b>>2]|0;Yua(n);Yua(m);r=a;return E|0}else G=28}else G=28;while(0);if((G|0)==28){G=Rb()|0;U=G;V=Q}Yua(n);Yua(m);Qb(U|0);return 0}function ZCa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0.0,X=0;a=r;r=r+240|0;g=a+200|0;h=a+199|0;j=a+198|0;m=a+184|0;n=a+172|0;o=a+168|0;q=a+8|0;s=a+4|0;t=a;u=a+197|0;v=a+196|0;Exa(m,d,g,h,j);d=0;while(1){if((d|0)==3)break;k[n+(d<<2)>>2]=0;d=d+1|0}if(!(i[n>>0]&1))w=10;else w=(k[n>>2]&-2)+-1|0;B=0;eb(501,n|0,w|0,0);w=B;B=0;a:do if(!(w&1)){d=n+8|0;x=n+1|0;y=(i[n>>0]&1)==0?x:k[d>>2]|0;k[o>>2]=y;k[s>>2]=q;k[t>>2]=0;i[u>>0]=1;i[v>>0]=69;z=n+4|0;A=i[h>>0]|0;C=i[j>>0]|0;D=k[b>>2]|0;E=y;b:while(1){if(D)if((k[D+12>>2]|0)==(k[D+16>>2]|0)){B=0;y=ya(k[(k[D>>2]|0)+36>>2]|0,D|0)|0;F=B;B=0;if(F&1){G=27;break}if((y|0)==-1){k[b>>2]=0;H=0}else H=D}else H=D;else H=0;y=(H|0)==0;F=k[c>>2]|0;do if(F){if((k[F+12>>2]|0)!=(k[F+16>>2]|0))if(y){I=F;break}else{J=F;K=H;L=E;break b}B=0;M=ya(k[(k[F>>2]|0)+36>>2]|0,F|0)|0;N=B;B=0;if(N&1){G=27;break b}if((M|0)!=-1)if(y){I=F;break}else{J=F;K=H;L=E;break b}else{k[c>>2]=0;G=19;break}}else G=19;while(0);if((G|0)==19){G=0;if(y){J=0;K=H;L=E;break}else I=0}F=i[n>>0]|0;M=(F&1)==0?(F&255)>>>1:k[z>>2]|0;if((k[o>>2]|0)==(E+M|0)){B=0;eb(501,n|0,M<<1|0,0);F=B;B=0;if(F&1){G=27;break}if(!(i[n>>0]&1))O=10;else O=(k[n>>2]&-2)+-1|0;B=0;eb(501,n|0,O|0,0);F=B;B=0;if(F&1){G=27;break}F=(i[n>>0]&1)==0?x:k[d>>2]|0;k[o>>2]=F+M;P=F}else P=E;F=H+12|0;M=k[F>>2]|0;N=H+16|0;if((M|0)==(k[N>>2]|0)){B=0;R=ya(k[(k[H>>2]|0)+36>>2]|0,H|0)|0;S=B;B=0;if(S&1){G=27;break}else T=R}else T=l[M>>0]|0;if(Fxa(T&255,u,v,P,o,A,C,m,q,s,t,g)|0){J=I;K=H;L=P;break}M=k[F>>2]|0;if((M|0)==(k[N>>2]|0)){B=0;ya(k[(k[H>>2]|0)+40>>2]|0,H|0)|0;N=B;B=0;if(N&1){G=27;break}else{D=H;E=P;continue}}else{k[F>>2]=M+1;D=H;E=P;continue}}if((G|0)==27){E=Rb()|0;U=E;V=Q;break}E=i[m>>0]|0;if(!((i[u>>0]|0)==0?1:(((E&1)==0?(E&255)>>>1:k[m+4>>2]|0)|0)==0)?(E=k[s>>2]|0,(E-q|0)<160):0){D=k[t>>2]|0;k[s>>2]=E+4;k[E>>2]=D}B=0;W=+Za(5,L|0,k[o>>2]|0,e|0);D=B;B=0;if(!(D&1)){p[f>>3]=W;lAa(m,q,k[s>>2]|0,e);if(K)if((k[K+12>>2]|0)==(k[K+16>>2]|0)){B=0;D=ya(k[(k[K>>2]|0)+36>>2]|0,K|0)|0;E=B;B=0;if(E&1){G=28;break}if((D|0)==-1){k[b>>2]=0;X=0}else X=K}else X=K;else X=0;D=(X|0)==0;do if(J){if((k[J+12>>2]|0)==(k[J+16>>2]|0)){B=0;E=ya(k[(k[J>>2]|0)+36>>2]|0,J|0)|0;C=B;B=0;if(C&1){G=28;break a}if((E|0)==-1){k[c>>2]=0;G=52;break}}if(!D)G=53}else G=52;while(0);if((G|0)==52?D:0)G=53;if((G|0)==53)k[e>>2]=k[e>>2]|2;E=k[b>>2]|0;Yua(n);Yua(m);r=a;return E|0}else G=28}else G=28;while(0);if((G|0)==28){G=Rb()|0;U=G;V=Q}Yua(n);Yua(m);Qb(U|0);return 0}function _Ca(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=r;r=r+16|0;f=e;k[f>>2]=d;d=esa(b)|0;b=yta(a,c,f)|0;if((d|0)!=0?(B=0,ya(444,d|0)|0,d=B,B=0,d&1):0){d=Rb(0)|0;Dd(d)}r=e;return b|0}function $Ca(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;h=r;r=r+112|0;j=h;l=(d-c|0)/12|0;do if(l>>>0>100){m=lua(l)|0;if((m|0)==0?(B=0,fb(7),n=B,B=0,n&1):0){o=0;p=6;break}q=m;s=m;p=11}else{q=0;s=j;p=11}while(0);a:do if((p|0)==11){j=c;m=0;n=l;t=s;while(1){if((j|0)==(d|0)){u=m;v=n;break}w=i[j>>0]|0;if(!(w&1))x=(w&255)>>>1;else x=k[j+4>>2]|0;if(!x){i[t>>0]=2;y=m+1|0;z=n+-1|0}else{i[t>>0]=1;y=m;z=n}j=j+12|0;m=y;n=z;t=t+1|0}t=0;n=u;m=v;b:while(1){j=k[a>>2]|0;do if(j){w=k[j+12>>2]|0;if((w|0)==(k[j+16>>2]|0)){B=0;A=ya(k[(k[j>>2]|0)+36>>2]|0,j|0)|0;C=B;B=0;if(C&1){p=5;break b}else D=A}else D=k[w>>2]|0;if((D|0)==-1){k[a>>2]=0;E=1;break}else{E=(k[a>>2]|0)==0;break}}else E=1;while(0);j=k[b>>2]|0;if(j){w=k[j+12>>2]|0;if((w|0)==(k[j+16>>2]|0)){B=0;A=ya(k[(k[j>>2]|0)+36>>2]|0,j|0)|0;C=B;B=0;if(C&1){p=5;break}else F=A}else F=k[w>>2]|0;if((F|0)==-1){k[b>>2]=0;G=0;H=1}else{G=j;H=0}}else{G=0;H=1}j=k[a>>2]|0;if(!((m|0)!=0&(E^H))){I=j;J=G;p=35;break}w=k[j+12>>2]|0;if((w|0)==(k[j+16>>2]|0)){B=0;A=ya(k[(k[j>>2]|0)+36>>2]|0,j|0)|0;j=B;B=0;if(j&1){p=5;break}else K=A}else K=k[w>>2]|0;if(!g){B=0;w=Xa(k[(k[e>>2]|0)+28>>2]|0,e|0,K|0)|0;A=B;B=0;if(A&1){p=5;break}else L=w}else L=K;w=t+1|0;A=0;j=c;C=n;M=m;N=s;while(1){if((j|0)==(d|0))break;do if((i[N>>0]|0)==1){if(!(i[j>>0]&1))O=j+4|0;else O=k[j+8>>2]|0;P=k[O+(t<<2)>>2]|0;if(!g){B=0;R=Xa(k[(k[e>>2]|0)+28>>2]|0,e|0,P|0)|0;S=B;B=0;if(S&1){p=4;break b}else T=R}else T=P;if((L|0)!=(T|0)){i[N>>0]=0;U=A;V=C;W=M+-1|0;break}P=i[j>>0]|0;if(!(P&1))X=(P&255)>>>1;else X=k[j+4>>2]|0;if((X|0)==(w|0)){i[N>>0]=2;U=1;V=C+1|0;W=M+-1|0}else{U=1;V=C;W=M}}else{U=A;V=C;W=M}while(0);A=U;j=j+12|0;C=V;M=W;N=N+1|0}if(!A){t=w;n=C;m=M;continue}N=k[a>>2]|0;j=N+12|0;P=k[j>>2]|0;if((P|0)==(k[N+16>>2]|0)){B=0;ya(k[(k[N>>2]|0)+40>>2]|0,N|0)|0;N=B;B=0;if(N&1){p=5;break}}else k[j>>2]=P+4;if((C+M|0)>>>0>1){Y=c;Z=C;_=s}else{t=w;n=C;m=M;continue}while(1){if((Y|0)==(d|0)){t=w;n=Z;m=M;continue b}if((i[_>>0]|0)==2){P=i[Y>>0]|0;if(!(P&1))$=(P&255)>>>1;else $=k[Y+4>>2]|0;if(($|0)!=(w|0)){i[_>>0]=0;aa=Z+-1|0}else aa=Z}else aa=Z;Y=Y+12|0;Z=aa;_=_+1|0}}if((p|0)==4){m=Rb()|0;ba=q;ca=m;da=Q;break}else if((p|0)==5){m=Rb()|0;ba=q;ca=m;da=Q;break}else if((p|0)==35){do if(I){m=k[I+12>>2]|0;if((m|0)==(k[I+16>>2]|0)){B=0;n=ya(k[(k[I>>2]|0)+36>>2]|0,I|0)|0;t=B;B=0;if(t&1){o=q;p=6;break a}else ea=n}else ea=k[m>>2]|0;if((ea|0)==-1){k[a>>2]=0;fa=1;break}else{fa=(k[a>>2]|0)==0;break}}else fa=1;while(0);do if(J){m=k[J+12>>2]|0;if((m|0)==(k[J+16>>2]|0)){B=0;n=ya(k[(k[J>>2]|0)+36>>2]|0,J|0)|0;t=B;B=0;if(t&1){o=q;p=6;break a}else ga=n}else ga=k[m>>2]|0;if((ga|0)!=-1)if(fa){ha=c;ia=s;break}else{p=84;break}else{k[b>>2]=0;p=82;break}}else p=82;while(0);if((p|0)==82)if(fa)p=84;else{ha=c;ia=s}if((p|0)==84){k[f>>2]=k[f>>2]|2;ha=c;ia=s}while(1){if((ha|0)==(d|0)){p=88;break}if((i[ia>>0]|0)==2){ja=ha;break}ha=ha+12|0;ia=ia+1|0}if((p|0)==88){k[f>>2]=k[f>>2]|4;ja=d}if(q)mua(q);r=h;return ja|0}}while(0);if((p|0)==6){p=Rb()|0;ba=o;ca=p;da=Q}if(ba)mua(ba);Qb(ca|0);return 0}function aDa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0;a=r;r=r+304|0;g=a+200|0;h=a+196|0;j=a+184|0;l=a+172|0;m=a+168|0;n=a+8|0;o=a+4|0;p=a;q=ACa(d)|0;Gxa(j,d,g,h);d=0;while(1){if((d|0)==3)break;k[l+(d<<2)>>2]=0;d=d+1|0}if(!(i[l>>0]&1))s=10;else s=(k[l>>2]&-2)+-1|0;B=0;eb(501,l|0,s|0,0);s=B;B=0;a:do if(!(s&1)){d=l+8|0;t=l+1|0;u=(i[l>>0]&1)==0?t:k[d>>2]|0;k[m>>2]=u;k[o>>2]=n;k[p>>2]=0;v=l+4|0;w=k[h>>2]|0;x=k[b>>2]|0;y=u;b:while(1){if(x){u=k[x+12>>2]|0;if((u|0)==(k[x+16>>2]|0)){B=0;z=ya(k[(k[x>>2]|0)+36>>2]|0,x|0)|0;A=B;B=0;if(A&1){C=28;break}else D=z}else D=k[u>>2]|0;if((D|0)==-1){k[b>>2]=0;E=0;F=1}else{E=x;F=0}}else{E=0;F=1}u=k[c>>2]|0;do if(u){z=k[u+12>>2]|0;if((z|0)==(k[u+16>>2]|0)){B=0;A=ya(k[(k[u>>2]|0)+36>>2]|0,u|0)|0;G=B;B=0;if(G&1){C=28;break b}else H=A}else H=k[z>>2]|0;if((H|0)!=-1)if(F){I=u;break}else{J=u;K=E;L=y;break b}else{k[c>>2]=0;C=20;break}}else C=20;while(0);if((C|0)==20){C=0;if(F){J=0;K=E;L=y;break}else I=0}u=i[l>>0]|0;z=(u&1)==0?(u&255)>>>1:k[v>>2]|0;if((k[m>>2]|0)==(y+z|0)){B=0;eb(501,l|0,z<<1|0,0);u=B;B=0;if(u&1){C=28;break}if(!(i[l>>0]&1))M=10;else M=(k[l>>2]&-2)+-1|0;B=0;eb(501,l|0,M|0,0);u=B;B=0;if(u&1){C=28;break}u=(i[l>>0]&1)==0?t:k[d>>2]|0;k[m>>2]=u+z;N=u}else N=y;u=E+12|0;z=k[u>>2]|0;A=E+16|0;if((z|0)==(k[A>>2]|0)){B=0;G=ya(k[(k[E>>2]|0)+36>>2]|0,E|0)|0;O=B;B=0;if(O&1){C=28;break}else P=G}else P=k[z>>2]|0;if(Cxa(P,q,N,m,p,w,j,n,o,g)|0){J=I;K=E;L=N;break}z=k[u>>2]|0;if((z|0)==(k[A>>2]|0)){B=0;ya(k[(k[E>>2]|0)+40>>2]|0,E|0)|0;A=B;B=0;if(A&1){C=28;break}else{x=E;y=N;continue}}else{k[u>>2]=z+4;x=E;y=N;continue}}if((C|0)==28){y=Rb()|0;R=y;S=Q;break}y=i[j>>0]|0;if((((y&1)==0?(y&255)>>>1:k[j+4>>2]|0)|0)!=0?(y=k[o>>2]|0,(y-n|0)<160):0){x=k[p>>2]|0;k[o>>2]=y+4;k[y>>2]=x}B=0;x=cb(73,L|0,k[m>>2]|0,e|0,q|0)|0;y=B;B=0;if(!(y&1)){k[f>>2]=x;lAa(j,n,k[o>>2]|0,e);if(K){x=k[K+12>>2]|0;if((x|0)==(k[K+16>>2]|0)){B=0;y=ya(k[(k[K>>2]|0)+36>>2]|0,K|0)|0;w=B;B=0;if(w&1){C=29;break}else T=y}else T=k[x>>2]|0;if((T|0)==-1){k[b>>2]=0;U=1}else U=0}else U=1;do if(J){x=k[J+12>>2]|0;if((x|0)==(k[J+16>>2]|0)){B=0;y=ya(k[(k[J>>2]|0)+36>>2]|0,J|0)|0;w=B;B=0;if(w&1){C=29;break a}else V=y}else V=k[x>>2]|0;if((V|0)!=-1)if(U)break;else{C=56;break}else{k[c>>2]=0;C=54;break}}else C=54;while(0);if((C|0)==54?U:0)C=56;if((C|0)==56)k[e>>2]=k[e>>2]|2;x=k[b>>2]|0;Yua(l);Yua(j);r=a;return x|0}else C=29}else C=29;while(0);if((C|0)==29){C=Rb()|0;R=C;S=Q}Yua(l);Yua(j);Qb(R|0);return 0}function bDa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0;a=r;r=r+304|0;g=a+200|0;h=a+196|0;j=a+184|0;l=a+172|0;m=a+168|0;n=a+8|0;o=a+4|0;p=a;q=ACa(d)|0;Gxa(j,d,g,h);d=0;while(1){if((d|0)==3)break;k[l+(d<<2)>>2]=0;d=d+1|0}if(!(i[l>>0]&1))s=10;else s=(k[l>>2]&-2)+-1|0;B=0;eb(501,l|0,s|0,0);s=B;B=0;a:do if(!(s&1)){d=l+8|0;t=l+1|0;u=(i[l>>0]&1)==0?t:k[d>>2]|0;k[m>>2]=u;k[o>>2]=n;k[p>>2]=0;v=l+4|0;w=k[h>>2]|0;x=k[b>>2]|0;y=u;b:while(1){if(x){u=k[x+12>>2]|0;if((u|0)==(k[x+16>>2]|0)){B=0;z=ya(k[(k[x>>2]|0)+36>>2]|0,x|0)|0;A=B;B=0;if(A&1){C=28;break}else D=z}else D=k[u>>2]|0;if((D|0)==-1){k[b>>2]=0;E=0;F=1}else{E=x;F=0}}else{E=0;F=1}u=k[c>>2]|0;do if(u){z=k[u+12>>2]|0;if((z|0)==(k[u+16>>2]|0)){B=0;A=ya(k[(k[u>>2]|0)+36>>2]|0,u|0)|0;G=B;B=0;if(G&1){C=28;break b}else H=A}else H=k[z>>2]|0;if((H|0)!=-1)if(F){I=u;break}else{J=u;K=E;L=y;break b}else{k[c>>2]=0;C=20;break}}else C=20;while(0);if((C|0)==20){C=0;if(F){J=0;K=E;L=y;break}else I=0}u=i[l>>0]|0;z=(u&1)==0?(u&255)>>>1:k[v>>2]|0;if((k[m>>2]|0)==(y+z|0)){B=0;eb(501,l|0,z<<1|0,0);u=B;B=0;if(u&1){C=28;break}if(!(i[l>>0]&1))M=10;else M=(k[l>>2]&-2)+-1|0;B=0;eb(501,l|0,M|0,0);u=B;B=0;if(u&1){C=28;break}u=(i[l>>0]&1)==0?t:k[d>>2]|0;k[m>>2]=u+z;N=u}else N=y;u=E+12|0;z=k[u>>2]|0;A=E+16|0;if((z|0)==(k[A>>2]|0)){B=0;G=ya(k[(k[E>>2]|0)+36>>2]|0,E|0)|0;O=B;B=0;if(O&1){C=28;break}else P=G}else P=k[z>>2]|0;if(Cxa(P,q,N,m,p,w,j,n,o,g)|0){J=I;K=E;L=N;break}z=k[u>>2]|0;if((z|0)==(k[A>>2]|0)){B=0;ya(k[(k[E>>2]|0)+40>>2]|0,E|0)|0;A=B;B=0;if(A&1){C=28;break}else{x=E;y=N;continue}}else{k[u>>2]=z+4;x=E;y=N;continue}}if((C|0)==28){y=Rb()|0;R=y;S=Q;break}y=i[j>>0]|0;if((((y&1)==0?(y&255)>>>1:k[j+4>>2]|0)|0)!=0?(y=k[o>>2]|0,(y-n|0)<160):0){x=k[p>>2]|0;k[o>>2]=y+4;k[y>>2]=x}B=0;x=cb(74,L|0,k[m>>2]|0,e|0,q|0)|0;y=Q;w=B;B=0;if(!(w&1)){w=f;k[w>>2]=x;k[w+4>>2]=y;lAa(j,n,k[o>>2]|0,e);if(K){y=k[K+12>>2]|0;if((y|0)==(k[K+16>>2]|0)){B=0;w=ya(k[(k[K>>2]|0)+36>>2]|0,K|0)|0;x=B;B=0;if(x&1){C=29;break}else T=w}else T=k[y>>2]|0;if((T|0)==-1){k[b>>2]=0;U=1}else U=0}else U=1;do if(J){y=k[J+12>>2]|0;if((y|0)==(k[J+16>>2]|0)){B=0;w=ya(k[(k[J>>2]|0)+36>>2]|0,J|0)|0;x=B;B=0;if(x&1){C=29;break a}else V=w}else V=k[y>>2]|0;if((V|0)!=-1)if(U)break;else{C=56;break}else{k[c>>2]=0;C=54;break}}else C=54;while(0);if((C|0)==54?U:0)C=56;if((C|0)==56)k[e>>2]=k[e>>2]|2;y=k[b>>2]|0;Yua(l);Yua(j);r=a;return y|0}else C=29}else C=29;while(0);if((C|0)==29){C=Rb()|0;R=C;S=Q}Yua(l);Yua(j);Qb(R|0);return 0}function cDa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0;a=r;r=r+304|0;g=a+200|0;h=a+196|0;l=a+184|0;m=a+172|0;n=a+168|0;o=a+8|0;p=a+4|0;q=a;s=ACa(d)|0;Gxa(l,d,g,h);d=0;while(1){if((d|0)==3)break;k[m+(d<<2)>>2]=0;d=d+1|0}if(!(i[m>>0]&1))t=10;else t=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,t|0,0);t=B;B=0;a:do if(!(t&1)){d=m+8|0;u=m+1|0;v=(i[m>>0]&1)==0?u:k[d>>2]|0;k[n>>2]=v;k[p>>2]=o;k[q>>2]=0;w=m+4|0;x=k[h>>2]|0;y=k[b>>2]|0;z=v;b:while(1){if(y){v=k[y+12>>2]|0;if((v|0)==(k[y+16>>2]|0)){B=0;A=ya(k[(k[y>>2]|0)+36>>2]|0,y|0)|0;C=B;B=0;if(C&1){D=28;break}else E=A}else E=k[v>>2]|0;if((E|0)==-1){k[b>>2]=0;F=0;G=1}else{F=y;G=0}}else{F=0;G=1}v=k[c>>2]|0;do if(v){A=k[v+12>>2]|0;if((A|0)==(k[v+16>>2]|0)){B=0;C=ya(k[(k[v>>2]|0)+36>>2]|0,v|0)|0;H=B;B=0;if(H&1){D=28;break b}else I=C}else I=k[A>>2]|0;if((I|0)!=-1)if(G){J=v;break}else{K=v;L=F;M=z;break b}else{k[c>>2]=0;D=20;break}}else D=20;while(0);if((D|0)==20){D=0;if(G){K=0;L=F;M=z;break}else J=0}v=i[m>>0]|0;A=(v&1)==0?(v&255)>>>1:k[w>>2]|0;if((k[n>>2]|0)==(z+A|0)){B=0;eb(501,m|0,A<<1|0,0);v=B;B=0;if(v&1){D=28;break}if(!(i[m>>0]&1))N=10;else N=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,N|0,0);v=B;B=0;if(v&1){D=28;break}v=(i[m>>0]&1)==0?u:k[d>>2]|0;k[n>>2]=v+A;O=v}else O=z;v=F+12|0;A=k[v>>2]|0;C=F+16|0;if((A|0)==(k[C>>2]|0)){B=0;H=ya(k[(k[F>>2]|0)+36>>2]|0,F|0)|0;P=B;B=0;if(P&1){D=28;break}else R=H}else R=k[A>>2]|0;if(Cxa(R,s,O,n,q,x,l,o,p,g)|0){K=J;L=F;M=O;break}A=k[v>>2]|0;if((A|0)==(k[C>>2]|0)){B=0;ya(k[(k[F>>2]|0)+40>>2]|0,F|0)|0;C=B;B=0;if(C&1){D=28;break}else{y=F;z=O;continue}}else{k[v>>2]=A+4;y=F;z=O;continue}}if((D|0)==28){z=Rb()|0;S=z;T=Q;break}z=i[l>>0]|0;if((((z&1)==0?(z&255)>>>1:k[l+4>>2]|0)|0)!=0?(z=k[p>>2]|0,(z-o|0)<160):0){y=k[q>>2]|0;k[p>>2]=z+4;k[z>>2]=y}B=0;y=cb(75,M|0,k[n>>2]|0,e|0,s|0)|0;z=B;B=0;if(!(z&1)){j[f>>1]=y;lAa(l,o,k[p>>2]|0,e);if(L){y=k[L+12>>2]|0;if((y|0)==(k[L+16>>2]|0)){B=0;z=ya(k[(k[L>>2]|0)+36>>2]|0,L|0)|0;x=B;B=0;if(x&1){D=29;break}else U=z}else U=k[y>>2]|0;if((U|0)==-1){k[b>>2]=0;V=1}else V=0}else V=1;do if(K){y=k[K+12>>2]|0;if((y|0)==(k[K+16>>2]|0)){B=0;z=ya(k[(k[K>>2]|0)+36>>2]|0,K|0)|0;x=B;B=0;if(x&1){D=29;break a}else W=z}else W=k[y>>2]|0;if((W|0)!=-1)if(V)break;else{D=56;break}else{k[c>>2]=0;D=54;break}}else D=54;while(0);if((D|0)==54?V:0)D=56;if((D|0)==56)k[e>>2]=k[e>>2]|2;y=k[b>>2]|0;Yua(m);Yua(l);r=a;return y|0}else D=29}else D=29;while(0);if((D|0)==29){D=Rb()|0;S=D;T=Q}Yua(m);Yua(l);Qb(S|0);return 0}function dDa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0;a=r;r=r+304|0;g=a+200|0;h=a+196|0;j=a+184|0;l=a+172|0;m=a+168|0;n=a+8|0;o=a+4|0;p=a;q=ACa(d)|0;Gxa(j,d,g,h);d=0;while(1){if((d|0)==3)break;k[l+(d<<2)>>2]=0;d=d+1|0}if(!(i[l>>0]&1))s=10;else s=(k[l>>2]&-2)+-1|0;B=0;eb(501,l|0,s|0,0);s=B;B=0;a:do if(!(s&1)){d=l+8|0;t=l+1|0;u=(i[l>>0]&1)==0?t:k[d>>2]|0;k[m>>2]=u;k[o>>2]=n;k[p>>2]=0;v=l+4|0;w=k[h>>2]|0;x=k[b>>2]|0;y=u;b:while(1){if(x){u=k[x+12>>2]|0;if((u|0)==(k[x+16>>2]|0)){B=0;z=ya(k[(k[x>>2]|0)+36>>2]|0,x|0)|0;A=B;B=0;if(A&1){C=28;break}else D=z}else D=k[u>>2]|0;if((D|0)==-1){k[b>>2]=0;E=0;F=1}else{E=x;F=0}}else{E=0;F=1}u=k[c>>2]|0;do if(u){z=k[u+12>>2]|0;if((z|0)==(k[u+16>>2]|0)){B=0;A=ya(k[(k[u>>2]|0)+36>>2]|0,u|0)|0;G=B;B=0;if(G&1){C=28;break b}else H=A}else H=k[z>>2]|0;if((H|0)!=-1)if(F){I=u;break}else{J=u;K=E;L=y;break b}else{k[c>>2]=0;C=20;break}}else C=20;while(0);if((C|0)==20){C=0;if(F){J=0;K=E;L=y;break}else I=0}u=i[l>>0]|0;z=(u&1)==0?(u&255)>>>1:k[v>>2]|0;if((k[m>>2]|0)==(y+z|0)){B=0;eb(501,l|0,z<<1|0,0);u=B;B=0;if(u&1){C=28;break}if(!(i[l>>0]&1))M=10;else M=(k[l>>2]&-2)+-1|0;B=0;eb(501,l|0,M|0,0);u=B;B=0;if(u&1){C=28;break}u=(i[l>>0]&1)==0?t:k[d>>2]|0;k[m>>2]=u+z;N=u}else N=y;u=E+12|0;z=k[u>>2]|0;A=E+16|0;if((z|0)==(k[A>>2]|0)){B=0;G=ya(k[(k[E>>2]|0)+36>>2]|0,E|0)|0;O=B;B=0;if(O&1){C=28;break}else P=G}else P=k[z>>2]|0;if(Cxa(P,q,N,m,p,w,j,n,o,g)|0){J=I;K=E;L=N;break}z=k[u>>2]|0;if((z|0)==(k[A>>2]|0)){B=0;ya(k[(k[E>>2]|0)+40>>2]|0,E|0)|0;A=B;B=0;if(A&1){C=28;break}else{x=E;y=N;continue}}else{k[u>>2]=z+4;x=E;y=N;continue}}if((C|0)==28){y=Rb()|0;R=y;S=Q;break}y=i[j>>0]|0;if((((y&1)==0?(y&255)>>>1:k[j+4>>2]|0)|0)!=0?(y=k[o>>2]|0,(y-n|0)<160):0){x=k[p>>2]|0;k[o>>2]=y+4;k[y>>2]=x}B=0;x=cb(76,L|0,k[m>>2]|0,e|0,q|0)|0;y=B;B=0;if(!(y&1)){k[f>>2]=x;lAa(j,n,k[o>>2]|0,e);if(K){x=k[K+12>>2]|0;if((x|0)==(k[K+16>>2]|0)){B=0;y=ya(k[(k[K>>2]|0)+36>>2]|0,K|0)|0;w=B;B=0;if(w&1){C=29;break}else T=y}else T=k[x>>2]|0;if((T|0)==-1){k[b>>2]=0;U=1}else U=0}else U=1;do if(J){x=k[J+12>>2]|0;if((x|0)==(k[J+16>>2]|0)){B=0;y=ya(k[(k[J>>2]|0)+36>>2]|0,J|0)|0;w=B;B=0;if(w&1){C=29;break a}else V=y}else V=k[x>>2]|0;if((V|0)!=-1)if(U)break;else{C=56;break}else{k[c>>2]=0;C=54;break}}else C=54;while(0);if((C|0)==54?U:0)C=56;if((C|0)==56)k[e>>2]=k[e>>2]|2;x=k[b>>2]|0;Yua(l);Yua(j);r=a;return x|0}else C=29}else C=29;while(0);if((C|0)==29){C=Rb()|0;R=C;S=Q}Yua(l);Yua(j);Qb(R|0);return 0}function eDa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0;a=r;r=r+304|0;g=a+200|0;h=a+196|0;j=a+184|0;l=a+172|0;m=a+168|0;n=a+8|0;o=a+4|0;p=a;q=ACa(d)|0;Gxa(j,d,g,h);d=0;while(1){if((d|0)==3)break;k[l+(d<<2)>>2]=0;d=d+1|0}if(!(i[l>>0]&1))s=10;else s=(k[l>>2]&-2)+-1|0;B=0;eb(501,l|0,s|0,0);s=B;B=0;a:do if(!(s&1)){d=l+8|0;t=l+1|0;u=(i[l>>0]&1)==0?t:k[d>>2]|0;k[m>>2]=u;k[o>>2]=n;k[p>>2]=0;v=l+4|0;w=k[h>>2]|0;x=k[b>>2]|0;y=u;b:while(1){if(x){u=k[x+12>>2]|0;if((u|0)==(k[x+16>>2]|0)){B=0;z=ya(k[(k[x>>2]|0)+36>>2]|0,x|0)|0;A=B;B=0;if(A&1){C=28;break}else D=z}else D=k[u>>2]|0;if((D|0)==-1){k[b>>2]=0;E=0;F=1}else{E=x;F=0}}else{E=0;F=1}u=k[c>>2]|0;do if(u){z=k[u+12>>2]|0;if((z|0)==(k[u+16>>2]|0)){B=0;A=ya(k[(k[u>>2]|0)+36>>2]|0,u|0)|0;G=B;B=0;if(G&1){C=28;break b}else H=A}else H=k[z>>2]|0;if((H|0)!=-1)if(F){I=u;break}else{J=u;K=E;L=y;break b}else{k[c>>2]=0;C=20;break}}else C=20;while(0);if((C|0)==20){C=0;if(F){J=0;K=E;L=y;break}else I=0}u=i[l>>0]|0;z=(u&1)==0?(u&255)>>>1:k[v>>2]|0;if((k[m>>2]|0)==(y+z|0)){B=0;eb(501,l|0,z<<1|0,0);u=B;B=0;if(u&1){C=28;break}if(!(i[l>>0]&1))M=10;else M=(k[l>>2]&-2)+-1|0;B=0;eb(501,l|0,M|0,0);u=B;B=0;if(u&1){C=28;break}u=(i[l>>0]&1)==0?t:k[d>>2]|0;k[m>>2]=u+z;N=u}else N=y;u=E+12|0;z=k[u>>2]|0;A=E+16|0;if((z|0)==(k[A>>2]|0)){B=0;G=ya(k[(k[E>>2]|0)+36>>2]|0,E|0)|0;O=B;B=0;if(O&1){C=28;break}else P=G}else P=k[z>>2]|0;if(Cxa(P,q,N,m,p,w,j,n,o,g)|0){J=I;K=E;L=N;break}z=k[u>>2]|0;if((z|0)==(k[A>>2]|0)){B=0;ya(k[(k[E>>2]|0)+40>>2]|0,E|0)|0;A=B;B=0;if(A&1){C=28;break}else{x=E;y=N;continue}}else{k[u>>2]=z+4;x=E;y=N;continue}}if((C|0)==28){y=Rb()|0;R=y;S=Q;break}y=i[j>>0]|0;if((((y&1)==0?(y&255)>>>1:k[j+4>>2]|0)|0)!=0?(y=k[o>>2]|0,(y-n|0)<160):0){x=k[p>>2]|0;k[o>>2]=y+4;k[y>>2]=x}B=0;x=cb(77,L|0,k[m>>2]|0,e|0,q|0)|0;y=B;B=0;if(!(y&1)){k[f>>2]=x;lAa(j,n,k[o>>2]|0,e);if(K){x=k[K+12>>2]|0;if((x|0)==(k[K+16>>2]|0)){B=0;y=ya(k[(k[K>>2]|0)+36>>2]|0,K|0)|0;w=B;B=0;if(w&1){C=29;break}else T=y}else T=k[x>>2]|0;if((T|0)==-1){k[b>>2]=0;U=1}else U=0}else U=1;do if(J){x=k[J+12>>2]|0;if((x|0)==(k[J+16>>2]|0)){B=0;y=ya(k[(k[J>>2]|0)+36>>2]|0,J|0)|0;w=B;B=0;if(w&1){C=29;break a}else V=y}else V=k[x>>2]|0;if((V|0)!=-1)if(U)break;else{C=56;break}else{k[c>>2]=0;C=54;break}}else C=54;while(0);if((C|0)==54?U:0)C=56;if((C|0)==56)k[e>>2]=k[e>>2]|2;x=k[b>>2]|0;Yua(l);Yua(j);r=a;return x|0}else C=29}else C=29;while(0);if((C|0)==29){C=Rb()|0;R=C;S=Q}Yua(l);Yua(j);Qb(R|0);return 0}function fDa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0;a=r;r=r+304|0;g=a+200|0;h=a+196|0;j=a+184|0;l=a+172|0;m=a+168|0;n=a+8|0;o=a+4|0;p=a;q=ACa(d)|0;Gxa(j,d,g,h);d=0;while(1){if((d|0)==3)break;k[l+(d<<2)>>2]=0;d=d+1|0}if(!(i[l>>0]&1))s=10;else s=(k[l>>2]&-2)+-1|0;B=0;eb(501,l|0,s|0,0);s=B;B=0;a:do if(!(s&1)){d=l+8|0;t=l+1|0;u=(i[l>>0]&1)==0?t:k[d>>2]|0;k[m>>2]=u;k[o>>2]=n;k[p>>2]=0;v=l+4|0;w=k[h>>2]|0;x=k[b>>2]|0;y=u;b:while(1){if(x){u=k[x+12>>2]|0;if((u|0)==(k[x+16>>2]|0)){B=0;z=ya(k[(k[x>>2]|0)+36>>2]|0,x|0)|0;A=B;B=0;if(A&1){C=28;break}else D=z}else D=k[u>>2]|0;if((D|0)==-1){k[b>>2]=0;E=0;F=1}else{E=x;F=0}}else{E=0;F=1}u=k[c>>2]|0;do if(u){z=k[u+12>>2]|0;if((z|0)==(k[u+16>>2]|0)){B=0;A=ya(k[(k[u>>2]|0)+36>>2]|0,u|0)|0;G=B;B=0;if(G&1){C=28;break b}else H=A}else H=k[z>>2]|0;if((H|0)!=-1)if(F){I=u;break}else{J=u;K=E;L=y;break b}else{k[c>>2]=0;C=20;break}}else C=20;while(0);if((C|0)==20){C=0;if(F){J=0;K=E;L=y;break}else I=0}u=i[l>>0]|0;z=(u&1)==0?(u&255)>>>1:k[v>>2]|0;if((k[m>>2]|0)==(y+z|0)){B=0;eb(501,l|0,z<<1|0,0);u=B;B=0;if(u&1){C=28;break}if(!(i[l>>0]&1))M=10;else M=(k[l>>2]&-2)+-1|0;B=0;eb(501,l|0,M|0,0);u=B;B=0;if(u&1){C=28;break}u=(i[l>>0]&1)==0?t:k[d>>2]|0;k[m>>2]=u+z;N=u}else N=y;u=E+12|0;z=k[u>>2]|0;A=E+16|0;if((z|0)==(k[A>>2]|0)){B=0;G=ya(k[(k[E>>2]|0)+36>>2]|0,E|0)|0;O=B;B=0;if(O&1){C=28;break}else P=G}else P=k[z>>2]|0;if(Cxa(P,q,N,m,p,w,j,n,o,g)|0){J=I;K=E;L=N;break}z=k[u>>2]|0;if((z|0)==(k[A>>2]|0)){B=0;ya(k[(k[E>>2]|0)+40>>2]|0,E|0)|0;A=B;B=0;if(A&1){C=28;break}else{x=E;y=N;continue}}else{k[u>>2]=z+4;x=E;y=N;continue}}if((C|0)==28){y=Rb()|0;R=y;S=Q;break}y=i[j>>0]|0;if((((y&1)==0?(y&255)>>>1:k[j+4>>2]|0)|0)!=0?(y=k[o>>2]|0,(y-n|0)<160):0){x=k[p>>2]|0;k[o>>2]=y+4;k[y>>2]=x}B=0;x=cb(78,L|0,k[m>>2]|0,e|0,q|0)|0;y=Q;w=B;B=0;if(!(w&1)){w=f;k[w>>2]=x;k[w+4>>2]=y;lAa(j,n,k[o>>2]|0,e);if(K){y=k[K+12>>2]|0;if((y|0)==(k[K+16>>2]|0)){B=0;w=ya(k[(k[K>>2]|0)+36>>2]|0,K|0)|0;x=B;B=0;if(x&1){C=29;break}else T=w}else T=k[y>>2]|0;if((T|0)==-1){k[b>>2]=0;U=1}else U=0}else U=1;do if(J){y=k[J+12>>2]|0;if((y|0)==(k[J+16>>2]|0)){B=0;w=ya(k[(k[J>>2]|0)+36>>2]|0,J|0)|0;x=B;B=0;if(x&1){C=29;break a}else V=w}else V=k[y>>2]|0;if((V|0)!=-1)if(U)break;else{C=56;break}else{k[c>>2]=0;C=54;break}}else C=54;while(0);if((C|0)==54?U:0)C=56;if((C|0)==56)k[e>>2]=k[e>>2]|2;y=k[b>>2]|0;Yua(l);Yua(j);r=a;return y|0}else C=29}else C=29;while(0);if((C|0)==29){C=Rb()|0;R=C;S=Q}Yua(l);Yua(j);Qb(R|0);return 0}function gDa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0.0,Y=0,Z=0,_=0;a=r;r=r+352|0;g=a+208|0;h=a+200|0;j=a+196|0;l=a+184|0;m=a+172|0;n=a+168|0;p=a+8|0;q=a+4|0;s=a;t=a+337|0;u=a+336|0;Hxa(l,d,g,h,j);d=0;while(1){if((d|0)==3)break;k[m+(d<<2)>>2]=0;d=d+1|0}if(!(i[m>>0]&1))v=10;else v=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,v|0,0);v=B;B=0;a:do if(!(v&1)){d=m+8|0;w=m+1|0;x=(i[m>>0]&1)==0?w:k[d>>2]|0;k[n>>2]=x;k[q>>2]=p;k[s>>2]=0;i[t>>0]=1;i[u>>0]=69;y=m+4|0;z=k[h>>2]|0;A=k[j>>2]|0;C=k[b>>2]|0;D=x;b:while(1){if(C){x=k[C+12>>2]|0;if((x|0)==(k[C+16>>2]|0)){B=0;E=ya(k[(k[C>>2]|0)+36>>2]|0,C|0)|0;F=B;B=0;if(F&1){G=28;break}else H=E}else H=k[x>>2]|0;if((H|0)==-1){k[b>>2]=0;I=0;J=1}else{I=C;J=0}}else{I=0;J=1}x=k[c>>2]|0;do if(x){E=k[x+12>>2]|0;if((E|0)==(k[x+16>>2]|0)){B=0;F=ya(k[(k[x>>2]|0)+36>>2]|0,x|0)|0;K=B;B=0;if(K&1){G=28;break b}else L=F}else L=k[E>>2]|0;if((L|0)!=-1)if(J){M=x;break}else{N=x;O=I;P=D;break b}else{k[c>>2]=0;G=20;break}}else G=20;while(0);if((G|0)==20){G=0;if(J){N=0;O=I;P=D;break}else M=0}x=i[m>>0]|0;E=(x&1)==0?(x&255)>>>1:k[y>>2]|0;if((k[n>>2]|0)==(D+E|0)){B=0;eb(501,m|0,E<<1|0,0);x=B;B=0;if(x&1){G=28;break}if(!(i[m>>0]&1))R=10;else R=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,R|0,0);x=B;B=0;if(x&1){G=28;break}x=(i[m>>0]&1)==0?w:k[d>>2]|0;k[n>>2]=x+E;S=x}else S=D;x=I+12|0;E=k[x>>2]|0;F=I+16|0;if((E|0)==(k[F>>2]|0)){B=0;K=ya(k[(k[I>>2]|0)+36>>2]|0,I|0)|0;T=B;B=0;if(T&1){G=28;break}else U=K}else U=k[E>>2]|0;if(Ixa(U,t,u,S,n,z,A,l,p,q,s,g)|0){N=M;O=I;P=S;break}E=k[x>>2]|0;if((E|0)==(k[F>>2]|0)){B=0;ya(k[(k[I>>2]|0)+40>>2]|0,I|0)|0;F=B;B=0;if(F&1){G=28;break}else{C=I;D=S;continue}}else{k[x>>2]=E+4;C=I;D=S;continue}}if((G|0)==28){D=Rb()|0;V=D;W=Q;break}D=i[l>>0]|0;if(!((i[t>>0]|0)==0?1:(((D&1)==0?(D&255)>>>1:k[l+4>>2]|0)|0)==0)?(D=k[q>>2]|0,(D-p|0)<160):0){C=k[s>>2]|0;k[q>>2]=D+4;k[D>>2]=C}B=0;X=+Za(3,P|0,k[n>>2]|0,e|0);C=B;B=0;if(!(C&1)){o[f>>2]=X;lAa(l,p,k[q>>2]|0,e);if(O){C=k[O+12>>2]|0;if((C|0)==(k[O+16>>2]|0)){B=0;D=ya(k[(k[O>>2]|0)+36>>2]|0,O|0)|0;A=B;B=0;if(A&1){G=29;break}else Y=D}else Y=k[C>>2]|0;if((Y|0)==-1){k[b>>2]=0;Z=1}else Z=0}else Z=1;do if(N){C=k[N+12>>2]|0;if((C|0)==(k[N+16>>2]|0)){B=0;D=ya(k[(k[N>>2]|0)+36>>2]|0,N|0)|0;A=B;B=0;if(A&1){G=29;break a}else _=D}else _=k[C>>2]|0;if((_|0)!=-1)if(Z)break;else{G=56;break}else{k[c>>2]=0;G=54;break}}else G=54;while(0);if((G|0)==54?Z:0)G=56;if((G|0)==56)k[e>>2]=k[e>>2]|2;C=k[b>>2]|0;Yua(m);Yua(l);r=a;return C|0}else G=29}else G=29;while(0);if((G|0)==29){G=Rb()|0;V=G;W=Q}Yua(m);Yua(l);Qb(V|0);return 0}function hDa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0.0,Y=0,Z=0,_=0;a=r;r=r+352|0;g=a+208|0;h=a+200|0;j=a+196|0;l=a+184|0;m=a+172|0;n=a+168|0;o=a+8|0;q=a+4|0;s=a;t=a+337|0;u=a+336|0;Hxa(l,d,g,h,j);d=0;while(1){if((d|0)==3)break;k[m+(d<<2)>>2]=0;d=d+1|0}if(!(i[m>>0]&1))v=10;else v=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,v|0,0);v=B;B=0;a:do if(!(v&1)){d=m+8|0;w=m+1|0;x=(i[m>>0]&1)==0?w:k[d>>2]|0;k[n>>2]=x;k[q>>2]=o;k[s>>2]=0;i[t>>0]=1;i[u>>0]=69;y=m+4|0;z=k[h>>2]|0;A=k[j>>2]|0;C=k[b>>2]|0;D=x;b:while(1){if(C){x=k[C+12>>2]|0;if((x|0)==(k[C+16>>2]|0)){B=0;E=ya(k[(k[C>>2]|0)+36>>2]|0,C|0)|0;F=B;B=0;if(F&1){G=28;break}else H=E}else H=k[x>>2]|0;if((H|0)==-1){k[b>>2]=0;I=0;J=1}else{I=C;J=0}}else{I=0;J=1}x=k[c>>2]|0;do if(x){E=k[x+12>>2]|0;if((E|0)==(k[x+16>>2]|0)){B=0;F=ya(k[(k[x>>2]|0)+36>>2]|0,x|0)|0;K=B;B=0;if(K&1){G=28;break b}else L=F}else L=k[E>>2]|0;if((L|0)!=-1)if(J){M=x;break}else{N=x;O=I;P=D;break b}else{k[c>>2]=0;G=20;break}}else G=20;while(0);if((G|0)==20){G=0;if(J){N=0;O=I;P=D;break}else M=0}x=i[m>>0]|0;E=(x&1)==0?(x&255)>>>1:k[y>>2]|0;if((k[n>>2]|0)==(D+E|0)){B=0;eb(501,m|0,E<<1|0,0);x=B;B=0;if(x&1){G=28;break}if(!(i[m>>0]&1))R=10;else R=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,R|0,0);x=B;B=0;if(x&1){G=28;break}x=(i[m>>0]&1)==0?w:k[d>>2]|0;k[n>>2]=x+E;S=x}else S=D;x=I+12|0;E=k[x>>2]|0;F=I+16|0;if((E|0)==(k[F>>2]|0)){B=0;K=ya(k[(k[I>>2]|0)+36>>2]|0,I|0)|0;T=B;B=0;if(T&1){G=28;break}else U=K}else U=k[E>>2]|0;if(Ixa(U,t,u,S,n,z,A,l,o,q,s,g)|0){N=M;O=I;P=S;break}E=k[x>>2]|0;if((E|0)==(k[F>>2]|0)){B=0;ya(k[(k[I>>2]|0)+40>>2]|0,I|0)|0;F=B;B=0;if(F&1){G=28;break}else{C=I;D=S;continue}}else{k[x>>2]=E+4;C=I;D=S;continue}}if((G|0)==28){D=Rb()|0;V=D;W=Q;break}D=i[l>>0]|0;if(!((i[t>>0]|0)==0?1:(((D&1)==0?(D&255)>>>1:k[l+4>>2]|0)|0)==0)?(D=k[q>>2]|0,(D-o|0)<160):0){C=k[s>>2]|0;k[q>>2]=D+4;k[D>>2]=C}B=0;X=+Za(4,P|0,k[n>>2]|0,e|0);C=B;B=0;if(!(C&1)){p[f>>3]=X;lAa(l,o,k[q>>2]|0,e);if(O){C=k[O+12>>2]|0;if((C|0)==(k[O+16>>2]|0)){B=0;D=ya(k[(k[O>>2]|0)+36>>2]|0,O|0)|0;A=B;B=0;if(A&1){G=29;break}else Y=D}else Y=k[C>>2]|0;if((Y|0)==-1){k[b>>2]=0;Z=1}else Z=0}else Z=1;do if(N){C=k[N+12>>2]|0;if((C|0)==(k[N+16>>2]|0)){B=0;D=ya(k[(k[N>>2]|0)+36>>2]|0,N|0)|0;A=B;B=0;if(A&1){G=29;break a}else _=D}else _=k[C>>2]|0;if((_|0)!=-1)if(Z)break;else{G=56;break}else{k[c>>2]=0;G=54;break}}else G=54;while(0);if((G|0)==54?Z:0)G=56;if((G|0)==56)k[e>>2]=k[e>>2]|2;C=k[b>>2]|0;Yua(m);Yua(l);r=a;return C|0}else G=29}else G=29;while(0);if((G|0)==29){G=Rb()|0;V=G;W=Q}Yua(m);Yua(l);Qb(V|0);return 0}function iDa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0.0,Y=0,Z=0,_=0;a=r;r=r+352|0;g=a+208|0;h=a+200|0;j=a+196|0;l=a+184|0;m=a+172|0;n=a+168|0;o=a+8|0;q=a+4|0;s=a;t=a+337|0;u=a+336|0;Hxa(l,d,g,h,j);d=0;while(1){if((d|0)==3)break;k[m+(d<<2)>>2]=0;d=d+1|0}if(!(i[m>>0]&1))v=10;else v=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,v|0,0);v=B;B=0;a:do if(!(v&1)){d=m+8|0;w=m+1|0;x=(i[m>>0]&1)==0?w:k[d>>2]|0;k[n>>2]=x;k[q>>2]=o;k[s>>2]=0;i[t>>0]=1;i[u>>0]=69;y=m+4|0;z=k[h>>2]|0;A=k[j>>2]|0;C=k[b>>2]|0;D=x;b:while(1){if(C){x=k[C+12>>2]|0;if((x|0)==(k[C+16>>2]|0)){B=0;E=ya(k[(k[C>>2]|0)+36>>2]|0,C|0)|0;F=B;B=0;if(F&1){G=28;break}else H=E}else H=k[x>>2]|0;if((H|0)==-1){k[b>>2]=0;I=0;J=1}else{I=C;J=0}}else{I=0;J=1}x=k[c>>2]|0;do if(x){E=k[x+12>>2]|0;if((E|0)==(k[x+16>>2]|0)){B=0;F=ya(k[(k[x>>2]|0)+36>>2]|0,x|0)|0;K=B;B=0;if(K&1){G=28;break b}else L=F}else L=k[E>>2]|0;if((L|0)!=-1)if(J){M=x;break}else{N=x;O=I;P=D;break b}else{k[c>>2]=0;G=20;break}}else G=20;while(0);if((G|0)==20){G=0;if(J){N=0;O=I;P=D;break}else M=0}x=i[m>>0]|0;E=(x&1)==0?(x&255)>>>1:k[y>>2]|0;if((k[n>>2]|0)==(D+E|0)){B=0;eb(501,m|0,E<<1|0,0);x=B;B=0;if(x&1){G=28;break}if(!(i[m>>0]&1))R=10;else R=(k[m>>2]&-2)+-1|0;B=0;eb(501,m|0,R|0,0);x=B;B=0;if(x&1){G=28;break}x=(i[m>>0]&1)==0?w:k[d>>2]|0;k[n>>2]=x+E;S=x}else S=D;x=I+12|0;E=k[x>>2]|0;F=I+16|0;if((E|0)==(k[F>>2]|0)){B=0;K=ya(k[(k[I>>2]|0)+36>>2]|0,I|0)|0;T=B;B=0;if(T&1){G=28;break}else U=K}else U=k[E>>2]|0;if(Ixa(U,t,u,S,n,z,A,l,o,q,s,g)|0){N=M;O=I;P=S;break}E=k[x>>2]|0;if((E|0)==(k[F>>2]|0)){B=0;ya(k[(k[I>>2]|0)+40>>2]|0,I|0)|0;F=B;B=0;if(F&1){G=28;break}else{C=I;D=S;continue}}else{k[x>>2]=E+4;C=I;D=S;continue}}if((G|0)==28){D=Rb()|0;V=D;W=Q;break}D=i[l>>0]|0;if(!((i[t>>0]|0)==0?1:(((D&1)==0?(D&255)>>>1:k[l+4>>2]|0)|0)==0)?(D=k[q>>2]|0,(D-o|0)<160):0){C=k[s>>2]|0;k[q>>2]=D+4;k[D>>2]=C}B=0;X=+Za(5,P|0,k[n>>2]|0,e|0);C=B;B=0;if(!(C&1)){p[f>>3]=X;lAa(l,o,k[q>>2]|0,e);if(O){C=k[O+12>>2]|0;if((C|0)==(k[O+16>>2]|0)){B=0;D=ya(k[(k[O>>2]|0)+36>>2]|0,O|0)|0;A=B;B=0;if(A&1){G=29;break}else Y=D}else Y=k[C>>2]|0;if((Y|0)==-1){k[b>>2]=0;Z=1}else Z=0}else Z=1;do if(N){C=k[N+12>>2]|0;if((C|0)==(k[N+16>>2]|0)){B=0;D=ya(k[(k[N>>2]|0)+36>>2]|0,N|0)|0;A=B;B=0;if(A&1){G=29;break a}else _=D}else _=k[C>>2]|0;if((_|0)!=-1)if(Z)break;else{G=56;break}else{k[c>>2]=0;G=54;break}}else G=54;while(0);if((G|0)==54?Z:0)G=56;if((G|0)==56)k[e>>2]=k[e>>2]|2;C=k[b>>2]|0;Yua(m);Yua(l);r=a;return C|0}else G=29}else G=29;while(0);if((G|0)==29){G=Rb()|0;V=G;W=Q}Yua(m);Yua(l);Qb(V|0);return 0}function jDa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=r;r=r+16|0;g=f;k[g>>2]=e;e=esa(c)|0;c=wta(a,b,d,g)|0;if((e|0)!=0?(B=0,ya(444,e|0)|0,e=B,B=0,e&1):0){e=Rb(0)|0;Dd(e)}r=f;return c|0}function kDa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=r;r=r+16|0;f=e;k[f>>2]=d;d=esa(b)|0;B=0;b=Ia(58,a|0,c|0,f|0)|0;f=B;B=0;if(f&1){f=Rb()|0;if((d|0)!=0?(B=0,ya(444,d|0)|0,c=B,B=0,c&1):0){c=Rb(0)|0;Dd(c)}Qb(f|0)}else{if((d|0)!=0?(B=0,ya(444,d|0)|0,d=B,B=0,d&1):0){d=Rb(0)|0;Dd(d)}r=e;return b|0}return 0}function lDa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;g=r;r=r+16|0;h=g;j=k[a>>2]|0;a:do if(!j)l=0;else{m=d;n=b;o=m-n>>2;p=e+12|0;q=k[p>>2]|0;s=(q|0)>(o|0)?q-o|0:0;o=c;q=o-n|0;n=q>>2;if((q|0)>0?(Rc[k[(k[j>>2]|0)+48>>2]&63](j,b,n)|0)!=(n|0):0){k[a>>2]=0;l=0;break}do if((s|0)>0){jva(h,s,f);B=0;n=Ia(k[(k[j>>2]|0)+48>>2]|0,j|0,((i[h>>0]&1)==0?h+4|0:k[h+8>>2]|0)|0,s|0)|0;q=B;B=0;if(q&1){q=Rb()|0;kva(h);Qb(q|0)}if((n|0)==(s|0)){kva(h);break}else{k[a>>2]=0;kva(h);l=0;break a}}while(0);s=m-o|0;n=s>>2;if((s|0)>0?(Rc[k[(k[j>>2]|0)+48>>2]&63](j,c,n)|0)!=(n|0):0){k[a>>2]=0;l=0;break}k[p>>2]=0;l=j}while(0);r=g;return l|0}function mDa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;f=k[a>>2]|0;do if(f)if((k[f+12>>2]|0)==(k[f+16>>2]|0))if((Hc[k[(k[f>>2]|0)+36>>2]&511](f)|0)==-1){k[a>>2]=0;g=0;break}else{g=k[a>>2]|0;break}else g=f;else g=0;while(0);f=(g|0)==0;g=k[b>>2]|0;do if(g){if((k[g+12>>2]|0)==(k[g+16>>2]|0)?(Hc[k[(k[g>>2]|0)+36>>2]&511](g)|0)==-1:0){k[b>>2]=0;h=11;break}if(f){i=g;h=13}else h=12}else h=11;while(0);if((h|0)==11)if(f)h=12;else{i=0;h=13}a:do if((h|0)==12){k[c>>2]=k[c>>2]|6;m=0}else if((h|0)==13){f=k[a>>2]|0;g=k[f+12>>2]|0;if((g|0)==(k[f+16>>2]|0))n=Hc[k[(k[f>>2]|0)+36>>2]&511](f)|0;else n=l[g>>0]|0;g=n&255;if(g<<24>>24>-1?(f=d+8|0,(j[(k[f>>2]|0)+(n<<24>>24<<1)>>1]&2048)!=0):0){o=(Rc[k[(k[d>>2]|0)+36>>2]&63](d,g,0)|0)<<24>>24;g=k[a>>2]|0;p=g+12|0;q=k[p>>2]|0;if((q|0)==(k[g+16>>2]|0)){Hc[k[(k[g>>2]|0)+40>>2]&511](g)|0;r=e;s=i;t=i;u=o}else{k[p>>2]=q+1;r=e;s=i;t=i;u=o}while(1){o=u+-48|0;q=r+-1|0;p=k[a>>2]|0;do if(p)if((k[p+12>>2]|0)==(k[p+16>>2]|0))if((Hc[k[(k[p>>2]|0)+36>>2]&511](p)|0)==-1){k[a>>2]=0;v=0;break}else{v=k[a>>2]|0;break}else v=p;else v=0;while(0);p=(v|0)==0;if(t)if((k[t+12>>2]|0)==(k[t+16>>2]|0))if((Hc[k[(k[t>>2]|0)+36>>2]&511](t)|0)==-1){k[b>>2]=0;w=0;x=0}else{w=s;x=s}else{w=s;x=t}else{w=s;x=0}g=k[a>>2]|0;if(!((r|0)>1&(p^(x|0)==0))){y=g;z=w;A=o;break}p=k[g+12>>2]|0;if((p|0)==(k[g+16>>2]|0))B=Hc[k[(k[g>>2]|0)+36>>2]&511](g)|0;else B=l[p>>0]|0;p=B&255;if(p<<24>>24<=-1){m=o;break a}if(!(j[(k[f>>2]|0)+(B<<24>>24<<1)>>1]&2048)){m=o;break a}g=((Rc[k[(k[d>>2]|0)+36>>2]&63](d,p,0)|0)<<24>>24)+(o*10|0)|0;p=k[a>>2]|0;C=p+12|0;D=k[C>>2]|0;if((D|0)==(k[p+16>>2]|0)){Hc[k[(k[p>>2]|0)+40>>2]&511](p)|0;r=q;s=w;t=x;u=g;continue}else{k[C>>2]=D+1;r=q;s=w;t=x;u=g;continue}}do if(y)if((k[y+12>>2]|0)==(k[y+16>>2]|0))if((Hc[k[(k[y>>2]|0)+36>>2]&511](y)|0)==-1){k[a>>2]=0;E=0;break}else{E=k[a>>2]|0;break}else E=y;else E=0;while(0);f=(E|0)==0;do if(z){if((k[z+12>>2]|0)==(k[z+16>>2]|0)?(Hc[k[(k[z>>2]|0)+36>>2]&511](z)|0)==-1:0){k[b>>2]=0;h=50;break}if(f){m=A;break a}}else h=50;while(0);if((h|0)==50?!f:0){m=A;break}k[c>>2]=k[c>>2]|2;m=A;break}k[c>>2]=k[c>>2]|4;m=0}while(0);return m|0}function nDa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;f=k[a>>2]|0;do if(f){g=k[f+12>>2]|0;if((g|0)==(k[f+16>>2]|0))h=Hc[k[(k[f>>2]|0)+36>>2]&511](f)|0;else h=k[g>>2]|0;if((h|0)==-1){k[a>>2]=0;i=1;break}else{i=(k[a>>2]|0)==0;break}}else i=1;while(0);h=k[b>>2]|0;do if(h){f=k[h+12>>2]|0;if((f|0)==(k[h+16>>2]|0))j=Hc[k[(k[h>>2]|0)+36>>2]&511](h)|0;else j=k[f>>2]|0;if((j|0)!=-1)if(i){l=h;m=17;break}else{m=16;break}else{k[b>>2]=0;m=14;break}}else m=14;while(0);if((m|0)==14)if(i)m=16;else{l=0;m=17}a:do if((m|0)==16){k[c>>2]=k[c>>2]|6;n=0}else if((m|0)==17){i=k[a>>2]|0;h=k[i+12>>2]|0;if((h|0)==(k[i+16>>2]|0))o=Hc[k[(k[i>>2]|0)+36>>2]&511](i)|0;else o=k[h>>2]|0;if(!(Rc[k[(k[d>>2]|0)+12>>2]&63](d,2048,o)|0)){k[c>>2]=k[c>>2]|4;n=0;break}h=(Rc[k[(k[d>>2]|0)+52>>2]&63](d,o,0)|0)<<24>>24;i=k[a>>2]|0;j=i+12|0;f=k[j>>2]|0;if((f|0)==(k[i+16>>2]|0)){Hc[k[(k[i>>2]|0)+40>>2]&511](i)|0;p=e;q=l;r=l;s=h}else{k[j>>2]=f+4;p=e;q=l;r=l;s=h}while(1){h=s+-48|0;f=p+-1|0;j=k[a>>2]|0;do if(j){i=k[j+12>>2]|0;if((i|0)==(k[j+16>>2]|0))t=Hc[k[(k[j>>2]|0)+36>>2]&511](j)|0;else t=k[i>>2]|0;if((t|0)==-1){k[a>>2]=0;u=1;break}else{u=(k[a>>2]|0)==0;break}}else u=1;while(0);do if(r){j=k[r+12>>2]|0;if((j|0)==(k[r+16>>2]|0))v=Hc[k[(k[r>>2]|0)+36>>2]&511](r)|0;else v=k[j>>2]|0;if((v|0)==-1){k[b>>2]=0;w=0;x=0;y=1;break}else{w=q;x=q;y=(q|0)==0;break}}else{w=q;x=0;y=1}while(0);j=k[a>>2]|0;if(!((p|0)>1&(u^y))){z=j;A=w;B=h;break}i=k[j+12>>2]|0;if((i|0)==(k[j+16>>2]|0))C=Hc[k[(k[j>>2]|0)+36>>2]&511](j)|0;else C=k[i>>2]|0;if(!(Rc[k[(k[d>>2]|0)+12>>2]&63](d,2048,C)|0)){n=h;break a}i=((Rc[k[(k[d>>2]|0)+52>>2]&63](d,C,0)|0)<<24>>24)+(h*10|0)|0;j=k[a>>2]|0;g=j+12|0;D=k[g>>2]|0;if((D|0)==(k[j+16>>2]|0)){Hc[k[(k[j>>2]|0)+40>>2]&511](j)|0;p=f;q=w;r=x;s=i;continue}else{k[g>>2]=D+4;p=f;q=w;r=x;s=i;continue}}do if(z){i=k[z+12>>2]|0;if((i|0)==(k[z+16>>2]|0))E=Hc[k[(k[z>>2]|0)+36>>2]&511](z)|0;else E=k[i>>2]|0;if((E|0)==-1){k[a>>2]=0;F=1;break}else{F=(k[a>>2]|0)==0;break}}else F=1;while(0);do if(A){i=k[A+12>>2]|0;if((i|0)==(k[A+16>>2]|0))G=Hc[k[(k[A>>2]|0)+36>>2]&511](A)|0;else G=k[i>>2]|0;if((G|0)!=-1)if(F){n=B;break a}else break;else{k[b>>2]=0;m=60;break}}else m=60;while(0);if((m|0)==60?!F:0){n=B;break}k[c>>2]=k[c>>2]|2;n=B}while(0);return n|0}function oDa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=a+4|0;e=(k[d>>2]|0)!=552;f=k[a>>2]|0;g=(k[c>>2]|0)-f|0;h=g>>>0<2147483647?g<<1:-1;g=(k[b>>2]|0)-f|0;i=oua(e?f:0,h)|0;if(!i)Gra();do if(!e){f=k[a>>2]|0;k[a>>2]=i;if(f){B=0;va(k[d>>2]|0,f|0);f=B;B=0;if(f&1){f=Rb(0)|0;Dd(f)}else{j=k[a>>2]|0;break}}else j=i}else{k[a>>2]=i;j=i}while(0);k[d>>2]=564;k[b>>2]=j+g;k[c>>2]=(k[a>>2]|0)+h;return}function pDa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=a+4|0;e=(k[d>>2]|0)!=552;f=k[a>>2]|0;g=(k[c>>2]|0)-f|0;h=g>>>0<2147483647?g<<1:-1;g=(k[b>>2]|0)-f>>2;i=oua(e?f:0,h)|0;if(!i)Gra();do if(!e){f=k[a>>2]|0;k[a>>2]=i;if(f){B=0;va(k[d>>2]|0,f|0);f=B;B=0;if(f&1){f=Rb(0)|0;Dd(f)}else{j=k[a>>2]|0;break}}else j=i}else{k[a>>2]=i;j=i}while(0);k[d>>2]=564;k[b>>2]=j+(g<<2);k[c>>2]=(k[a>>2]|0)+(h>>>2<<2);return}function qDa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;d=b;e=i[a>>0]|0;if(!(e&1)){f=10;g=(e&255)>>>1;h=e}else{e=k[a>>2]|0;f=(e&-2)+-1|0;g=k[a+4>>2]|0;h=e&255}e=c-d|0;do if((c|0)!=(b|0)){if((f-g|0)>>>0<e>>>0){hva(a,f,g+e-f|0,g,g,0,0);j=i[a>>0]|0}else j=h;if(!(j&1))l=a+1|0;else l=k[a+8>>2]|0;m=c+(g-d)|0;n=b;o=l+g|0;while(1){if((n|0)==(c|0))break;i[o>>0]=i[n>>0]|0;n=n+1|0;o=o+1|0}i[l+m>>0]=0;o=g+e|0;if(!(i[a>>0]&1)){i[a>>0]=o<<1;break}else{k[a+4>>2]=o;break}}while(0);return a|0}function rDa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=a+4|0;e=(k[d>>2]|0)!=552;f=k[a>>2]|0;g=(k[c>>2]|0)-f|0;h=g>>>0<2147483647?g<<1:-1;g=(k[b>>2]|0)-f>>2;i=oua(e?f:0,h)|0;if(!i)Gra();do if(!e){f=k[a>>2]|0;k[a>>2]=i;if(f){B=0;va(k[d>>2]|0,f|0);f=B;B=0;if(f&1){f=Rb(0)|0;Dd(f)}else{j=k[a>>2]|0;break}}else j=i}else{k[a>>2]=i;j=i}while(0);k[d>>2]=564;k[b>>2]=j+(g<<2);k[c>>2]=(k[a>>2]|0)+(h>>>2<<2);return}function sDa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;d=b;e=i[a>>0]|0;if(!(e&1)){f=1;g=(e&255)>>>1;h=e}else{e=k[a>>2]|0;f=(e&-2)+-1|0;g=k[a+4>>2]|0;h=e&255}e=c-d>>2;do if(e){if((f-g|0)>>>0<e>>>0){qva(a,f,g+e-f|0,g,g,0,0);j=i[a>>0]|0}else j=h;if(!(j&1))l=a+4|0;else l=k[a+8>>2]|0;m=g+((c-d|0)>>>2)|0;n=b;o=l+(g<<2)|0;while(1){if((n|0)==(c|0))break;k[o>>2]=k[n>>2];n=n+4|0;o=o+4|0}k[l+(m<<2)>>2]=0;o=g+e|0;if(!(i[a>>0]&1)){i[a>>0]=o<<1;break}else{k[a+4>>2]=o;break}}while(0);return a|0}function tDa(a,b){a=a|0;b=b|0;var c=0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;i[a+128>>0]=0;do if(b){B=0;wa(562,a|0,b|0);c=B;B=0;if(c&1){c=Rb()|0;WDa(a);Qb(c|0)}else{lEa(a,b);break}}while(0);return}function uDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(48248)|0);return}function vDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(48288)|0);return}function wDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(49320)|0);return}function xDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(49312)|0);return}function yDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(49380)|0);return}function zDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(49388)|0);return}function ADa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(49444)|0);return}function BDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(49452)|0);return}function CDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(49460)|0);return}function DDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(49468)|0);return}function EDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(48360)|0);return}function FDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(48432)|0);return}function GDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(48492)|0);return}function HDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(48552)|0);return}function IDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(48864)|0);return}function JDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(48928)|0);return}function KDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(48992)|0);return}function LDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(49056)|0);return}function MDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(49092)|0);return}function NDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(49128)|0);return}function ODa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(49164)|0);return}function PDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(49200)|0);return}function QDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(48644)|0);return}function RDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(48736)|0);return}function SDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(48768)|0);return}function TDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(48800)|0);return}function UDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(49240)|0);return}function VDa(a,b){a=a|0;b=b|0;QAa(a,b,_Aa(49280)|0);return}function WDa(a){a=a|0;var b=0,c=0,d=0,e=0;b=k[a>>2]|0;do if(b){c=a+4|0;d=k[c>>2]|0;while(1){if((d|0)==(b|0))break;e=d+-4|0;k[c>>2]=e;d=e}if((a+16|0)==(b|0)){i[a+128>>0]=0;break}else{Sqa(b);break}}while(0);return}function XDa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=a+4|0;d=k[c>>2]|0;e=k[a>>2]|0;f=d-e>>2;g=e;e=d;a:do if(f>>>0>=b>>>0){if(f>>>0>b>>>0){d=g+(b<<2)|0;h=e;while(1){if((h|0)==(d|0))break a;i=h+-4|0;k[c>>2]=i;h=i}}}else kEa(a,b-f|0);while(0);return}function YDa(a,b){a=a|0;b=b|0;var c=0,d=0;c=k[a+8>>2]|0;if((k[a+12>>2]|0)-c>>2>>>0>b>>>0)d=(k[c+(b<<2)>>2]|0)!=0;else d=0;return d|0}function ZDa(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+4|0;c=k[b>>2]|0;d=k[b+4>>2]|0;b=(k[a>>2]|0)+(d>>1)|0;if(!(d&1))e=c;else e=k[(k[b>>2]|0)+c>>2]|0;Ec[e&1023](b);return}function _Da(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var l=0,n=0,o=0,p=0,q=0,r=0;k[c>>2]=a;k[f>>2]=d;a=e;if(h&2)if((a-d|0)<3)l=1;else{k[f>>2]=d+1;i[d>>0]=-17;d=k[f>>2]|0;k[f>>2]=d+1;i[d>>0]=-69;d=k[f>>2]|0;k[f>>2]=d+1;i[d>>0]=-65;n=4}else n=4;a:do if((n|0)==4){d=b;h=k[c>>2]|0;while(1){if(h>>>0>=b>>>0){l=0;break a}e=j[h>>1]|0;o=e&65535;if(o>>>0>g>>>0){l=2;break a}do if((e&65535)<128){p=k[f>>2]|0;if((a-p|0)<1){l=1;break a}k[f>>2]=p+1;i[p>>0]=e}else{if((e&65535)<2048){p=k[f>>2]|0;if((a-p|0)<2){l=1;break a}k[f>>2]=p+1;i[p>>0]=o>>>6|192;p=k[f>>2]|0;k[f>>2]=p+1;i[p>>0]=o&63|128;break}if((e&65535)<55296){p=k[f>>2]|0;if((a-p|0)<3){l=1;break a}k[f>>2]=p+1;i[p>>0]=o>>>12|224;p=k[f>>2]|0;k[f>>2]=p+1;i[p>>0]=o>>>6&63|128;p=k[f>>2]|0;k[f>>2]=p+1;i[p>>0]=o&63|128;break}if((e&65535)>=56320){if((e&65535)<57344){l=2;break a}p=k[f>>2]|0;if((a-p|0)<3){l=1;break a}k[f>>2]=p+1;i[p>>0]=o>>>12|224;p=k[f>>2]|0;k[f>>2]=p+1;i[p>>0]=o>>>6&63|128;p=k[f>>2]|0;k[f>>2]=p+1;i[p>>0]=o&63|128;break}if((d-h|0)<4){l=1;break a}p=h+2|0;q=m[p>>1]|0;if((q&64512|0)!=56320){l=2;break a}if((a-(k[f>>2]|0)|0)<4){l=1;break a}r=o&960;if(((r<<10)+65536|o<<10&64512|q&1023)>>>0>g>>>0){l=2;break a}k[c>>2]=p;p=(r>>>6)+1|0;r=k[f>>2]|0;k[f>>2]=r+1;i[r>>0]=p>>>2|240;r=k[f>>2]|0;k[f>>2]=r+1;i[r>>0]=o>>>2&15|p<<4&48|128;p=k[f>>2]|0;k[f>>2]=p+1;i[p>>0]=o<<4&48|q>>>6&15|128;p=k[f>>2]|0;k[f>>2]=p+1;i[p>>0]=q&63|128}while(0);o=(k[c>>2]|0)+2|0;k[c>>2]=o;h=o}}while(0);return l|0}function $Da(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;k[c>>2]=a;k[f>>2]=d;if(h&4){h=k[c>>2]|0;d=b;if((((d-h|0)>2?(i[h>>0]|0)==-17:0)?(i[h+1>>0]|0)==-69:0)?(i[h+2>>0]|0)==-65:0){k[c>>2]=h+3;m=d}else m=d}else m=b;d=e;a:while(1){h=k[c>>2]|0;a=h>>>0<b>>>0;if(!a){n=a;o=41;break}p=k[f>>2]|0;if(p>>>0>=e>>>0){n=a;o=41;break}a=i[h>>0]|0;q=a&255;if(q>>>0>g>>>0){r=2;break}do if(a<<24>>24>-1){j[p>>1]=a&255;k[c>>2]=h+1}else{if((a&255)<194){r=2;break a}if((a&255)<224){if((m-h|0)<2){r=1;break a}s=l[h+1>>0]|0;if((s&192|0)!=128){r=2;break a}t=s&63|q<<6&1984;if(t>>>0>g>>>0){r=2;break a}j[p>>1]=t;k[c>>2]=h+2;break}if((a&255)<240){if((m-h|0)<3){r=1;break a}t=i[h+1>>0]|0;s=i[h+2>>0]|0;switch(q|0){case 224:{if((t&-32)<<24>>24!=-96){r=2;break a}break}case 237:{if((t&-32)<<24>>24!=-128){r=2;break a}break}default:if((t&-64)<<24>>24!=-128){r=2;break a}}u=s&255;if((u&192|0)!=128){r=2;break a}s=(t&255)<<6&4032|q<<12|u&63;if((s&65535)>>>0>g>>>0){r=2;break a}j[p>>1]=s;k[c>>2]=h+3;break}if((a&255)>=245){r=2;break a}if((m-h|0)<4){r=1;break a}s=i[h+1>>0]|0;u=i[h+2>>0]|0;t=i[h+3>>0]|0;switch(q|0){case 240:{if((s+112&255)>=48){r=2;break a}break}case 244:{if((s&-16)<<24>>24!=-128){r=2;break a}break}default:if((s&-64)<<24>>24!=-128){r=2;break a}}v=u&255;if((v&192|0)!=128){r=2;break a}u=t&255;if((u&192|0)!=128){r=2;break a}if((d-p|0)<4){r=1;break a}t=q&7;w=s&255;s=v<<6;x=u&63;if((w<<12&258048|t<<18|s&4032|x)>>>0>g>>>0){r=2;break a}j[p>>1]=w<<2&60|v>>>4&3|((w>>>4&3|t<<2)<<6)+16320|55296;t=p+2|0;k[f>>2]=t;j[t>>1]=x|s&960|56320;k[c>>2]=(k[c>>2]|0)+4}while(0);k[f>>2]=(k[f>>2]|0)+2}if((o|0)==41)r=n&1;return r|0}function aEa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;f=b;if((((e&4|0)!=0?(f-a|0)>2:0)?(i[a>>0]|0)==-17:0)?(i[a+1>>0]|0)==-69:0){g=(i[a+2>>0]|0)==-65?a+3|0:a;h=0}else{g=a;h=0}a:while(1){if(!(h>>>0<c>>>0&g>>>0<b>>>0)){j=g;k=40;break}e=i[g>>0]|0;m=e&255;if(m>>>0>d>>>0){j=g;k=40;break}do if(e<<24>>24>-1){n=g+1|0;o=h}else{if((e&255)<194){j=g;k=40;break a}if((e&255)<224){if((f-g|0)<2){j=g;k=40;break a}p=l[g+1>>0]|0;if((p&192|0)!=128){j=g;k=40;break a}if((p&63|m<<6&1984)>>>0>d>>>0){j=g;k=40;break a}else{n=g+2|0;o=h;break}}if((e&255)<240){p=g;if((f-p|0)<3){j=g;k=40;break a}q=i[g+1>>0]|0;r=i[g+2>>0]|0;switch(m|0){case 224:{if((q&-32)<<24>>24!=-96){s=p;t=g;k=19;break a}break}case 237:{if((q&-32)<<24>>24!=-128){u=p;v=g;k=21;break a}break}default:if((q&-64)<<24>>24!=-128){w=p;x=g;k=23;break a}}p=r&255;if((p&192|0)!=128){j=g;k=40;break a}if(((q&255)<<6&4032|m<<12&61440|p&63)>>>0>d>>>0){j=g;k=40;break a}else{n=g+3|0;o=h;break}}if((e&255)>=245){j=g;k=40;break a}p=g;if((c-h|0)>>>0<2|(f-p|0)<4){j=g;k=40;break a}q=i[g+1>>0]|0;r=i[g+2>>0]|0;y=i[g+3>>0]|0;switch(m|0){case 240:{if((q+112&255)>=48){z=p;A=g;k=30;break a}break}case 244:{if((q&-16)<<24>>24!=-128){B=p;C=g;k=32;break a}break}default:if((q&-64)<<24>>24!=-128){D=p;E=g;k=34;break a}}p=r&255;if((p&192|0)!=128){j=g;k=40;break a}r=y&255;if((r&192|0)!=128){j=g;k=40;break a}if(((q&255)<<12&258048|m<<18&1835008|p<<6&4032|r&63)>>>0>d>>>0){j=g;k=40;break a}n=g+4|0;o=h+1|0}while(0);g=n;h=o+1|0}if((k|0)==19){o=a;F=0;G=s-o|0;H=o;I=t}else if((k|0)==21){t=a;F=0;G=u-t|0;H=t;I=v}else if((k|0)==23){v=a;F=0;G=w-v|0;H=v;I=x}else if((k|0)==30){x=a;F=0;G=z-x|0;H=x;I=A}else if((k|0)==32){A=a;F=0;G=B-A|0;H=A;I=C}else if((k|0)==34){C=a;F=0;G=D-C|0;H=C;I=E}else if((k|0)==40){F=1;G=0;H=a;I=j}return (F?I-H|0:G)|0}function bEa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0;k[c>>2]=a;k[f>>2]=d;a=e;if(h&2)if((a-d|0)<3)j=1;else{k[f>>2]=d+1;i[d>>0]=-17;d=k[f>>2]|0;k[f>>2]=d+1;i[d>>0]=-69;d=k[f>>2]|0;k[f>>2]=d+1;i[d>>0]=-65;l=4}else l=4;a:do if((l|0)==4){d=k[c>>2]|0;while(1){if(d>>>0>=b>>>0){j=0;break a}h=k[d>>2]|0;if(h>>>0>g>>>0|(h&-2048|0)==55296){j=2;break a}do if(h>>>0>=128){if(h>>>0<2048){e=k[f>>2]|0;if((a-e|0)<2){j=1;break a}k[f>>2]=e+1;i[e>>0]=h>>>6|192;e=k[f>>2]|0;k[f>>2]=e+1;i[e>>0]=h&63|128;break}e=k[f>>2]|0;m=a-e|0;if(h>>>0<65536){if((m|0)<3){j=1;break a}k[f>>2]=e+1;i[e>>0]=h>>>12|224;n=k[f>>2]|0;k[f>>2]=n+1;i[n>>0]=h>>>6&63|128;n=k[f>>2]|0;k[f>>2]=n+1;i[n>>0]=h&63|128;break}else{if((m|0)<4){j=1;break a}k[f>>2]=e+1;i[e>>0]=h>>>18|240;e=k[f>>2]|0;k[f>>2]=e+1;i[e>>0]=h>>>12&63|128;e=k[f>>2]|0;k[f>>2]=e+1;i[e>>0]=h>>>6&63|128;e=k[f>>2]|0;k[f>>2]=e+1;i[e>>0]=h&63|128;break}}else{e=k[f>>2]|0;if((a-e|0)<1){j=1;break a}k[f>>2]=e+1;i[e>>0]=h}while(0);h=(k[c>>2]|0)+4|0;k[c>>2]=h;d=h}}while(0);return j|0}function cEa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;k[c>>2]=a;k[f>>2]=d;if(h&4){h=k[c>>2]|0;d=b;if((((d-h|0)>2?(i[h>>0]|0)==-17:0)?(i[h+1>>0]|0)==-69:0)?(i[h+2>>0]|0)==-65:0){k[c>>2]=h+3;j=d}else j=d}else j=b;a:while(1){d=k[c>>2]|0;h=d>>>0<b>>>0;if(!h){m=h;n=40;break}a=k[f>>2]|0;if(a>>>0>=e>>>0){m=h;n=40;break}h=i[d>>0]|0;o=h&255;do if(h<<24>>24>-1){if(o>>>0>g>>>0){p=2;break a}k[a>>2]=o;k[c>>2]=d+1}else{if((h&255)<194){p=2;break a}if((h&255)<224){if((j-d|0)<2){p=1;break a}q=l[d+1>>0]|0;if((q&192|0)!=128){p=2;break a}r=q&63|o<<6&1984;if(r>>>0>g>>>0){p=2;break a}k[a>>2]=r;k[c>>2]=d+2;break}if((h&255)<240){if((j-d|0)<3){p=1;break a}r=i[d+1>>0]|0;q=i[d+2>>0]|0;switch(o|0){case 224:{if((r&-32)<<24>>24!=-96){p=2;break a}break}case 237:{if((r&-32)<<24>>24!=-128){p=2;break a}break}default:if((r&-64)<<24>>24!=-128){p=2;break a}}s=q&255;if((s&192|0)!=128){p=2;break a}q=(r&255)<<6&4032|o<<12&61440|s&63;if(q>>>0>g>>>0){p=2;break a}k[a>>2]=q;k[c>>2]=d+3;break}if((h&255)>=245){p=2;break a}if((j-d|0)<4){p=1;break a}q=i[d+1>>0]|0;s=i[d+2>>0]|0;r=i[d+3>>0]|0;switch(o|0){case 240:{if((q+112&255)>=48){p=2;break a}break}case 244:{if((q&-16)<<24>>24!=-128){p=2;break a}break}default:if((q&-64)<<24>>24!=-128){p=2;break a}}t=s&255;if((t&192|0)!=128){p=2;break a}s=r&255;if((s&192|0)!=128){p=2;break a}r=(q&255)<<12&258048|o<<18&1835008|t<<6&4032|s&63;if(r>>>0>g>>>0){p=2;break a}k[a>>2]=r;k[c>>2]=d+4}while(0);k[f>>2]=(k[f>>2]|0)+4}if((n|0)==40)p=m&1;return p|0}function dEa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;f=b;if((((e&4|0)!=0?(f-a|0)>2:0)?(i[a>>0]|0)==-17:0)?(i[a+1>>0]|0)==-69:0){g=(i[a+2>>0]|0)==-65?a+3|0:a;h=0}else{g=a;h=0}a:while(1){if(!(h>>>0<c>>>0&g>>>0<b>>>0)){j=g;k=40;break}e=i[g>>0]|0;m=e&255;do if(e<<24>>24<=-1){if((e&255)<194){j=g;k=40;break a}if((e&255)<224){if((f-g|0)<2){j=g;k=40;break a}n=l[g+1>>0]|0;if((n&192|0)!=128){j=g;k=40;break a}if((n&63|m<<6&1984)>>>0>d>>>0){j=g;k=40;break a}o=g+2|0;break}if((e&255)<240){n=g;if((f-n|0)<3){j=g;k=40;break a}p=i[g+1>>0]|0;q=i[g+2>>0]|0;switch(m|0){case 224:{if((p&-32)<<24>>24!=-96){r=n;k=20;break a}break}case 237:{if((p&-32)<<24>>24!=-128){s=n;k=22;break a}break}default:if((p&-64)<<24>>24!=-128){t=n;k=24;break a}}n=q&255;if((n&192|0)!=128){j=g;k=40;break a}if(((p&255)<<6&4032|m<<12&61440|n&63)>>>0>d>>>0){j=g;k=40;break a}else{o=g+3|0;break}}if((e&255)>=245){j=g;k=40;break a}n=g;if((f-n|0)<4){j=g;k=40;break a}p=i[g+1>>0]|0;q=i[g+2>>0]|0;u=i[g+3>>0]|0;switch(m|0){case 240:{if((p+112&255)>=48){v=n;k=31;break a}break}case 244:{if((p&-16)<<24>>24!=-128){w=n;k=33;break a}break}default:if((p&-64)<<24>>24!=-128){x=n;k=35;break a}}n=q&255;if((n&192|0)!=128){j=g;k=40;break a}q=u&255;if((q&192|0)!=128){j=g;k=40;break a}if(((p&255)<<12&258048|m<<18&1835008|n<<6&4032|q&63)>>>0>d>>>0){j=g;k=40;break a}else o=g+4|0}else{if(m>>>0>d>>>0){j=g;k=40;break a}o=g+1|0}while(0);g=o;h=h+1|0}if((k|0)==20)y=r-a|0;else if((k|0)==22)y=s-a|0;else if((k|0)==24)y=t-a|0;else if((k|0)==31)y=v-a|0;else if((k|0)==33)y=w-a|0;else if((k|0)==35)y=x-a|0;else if((k|0)==40)y=j-a|0;return y|0}function eEa(a){a=a|0;Yua(50296);Yua(50284);Yua(50272);Yua(50260);Yua(50248);Yua(50236);Yua(50224);Yua(50212);Yua(50200);Yua(50188);Yua(50176);Yua(50164);Yua(50152);Yua(50140);return}function fEa(a){a=a|0;kva(50468);kva(50456);kva(50444);kva(50432);kva(50420);kva(50408);kva(50396);kva(50384);kva(50372);kva(50360);kva(50348);kva(50336);kva(50324);kva(50312);return}function gEa(a){a=a|0;Yua(51100);Yua(51088);Yua(51076);Yua(51064);Yua(51052);Yua(51040);Yua(51028);Yua(51016);Yua(51004);Yua(50992);Yua(50980);Yua(50968);Yua(50956);Yua(50944);Yua(50932);Yua(50920);Yua(50908);Yua(50896);Yua(50884);Yua(50872);Yua(50860);Yua(50848);Yua(50836);Yua(50824);return}function hEa(a){a=a|0;kva(51392);kva(51380);kva(51368);kva(51356);kva(51344);kva(51332);kva(51320);kva(51308);kva(51296);kva(51284);kva(51272);kva(51260);kva(51248);kva(51236);kva(51224);kva(51212);kva(51200);kva(51188);kva(51176);kva(51164);kva(51152);kva(51140);kva(51128);kva(51116);return}function iEa(a){a=a|0;Yua(52204);Yua(52192);Yua(52180);Yua(52168);Yua(52156);Yua(52144);Yua(52132);Yua(52120);Yua(52108);Yua(52096);Yua(52084);Yua(52072);Yua(52060);Yua(52048);Yua(52036);Yua(52024);Yua(52012);Yua(52e3);Yua(51988);Yua(51976);Yua(51964);Yua(51952);Yua(51940);Yua(51928);return}function jEa(a){a=a|0;kva(52496);kva(52484);kva(52472);kva(52460);kva(52448);kva(52436);kva(52424);kva(52412);kva(52400);kva(52388);kva(52376);kva(52364);kva(52352);kva(52340);kva(52328);kva(52316);kva(52304);kva(52292);kva(52280);kva(52268);kva(52256);kva(52244);kva(52232);kva(52220);return}function kEa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=r;r=r+32|0;d=c;e=k[a+8>>2]|0;f=k[a+4>>2]|0;if(e-f>>2>>>0<b>>>0){g=k[a>>2]|0;h=f-g>>2;f=h+b|0;if(f>>>0>1073741823)Oqa(a);i=e-g|0;if(i>>2>>>0<536870911){g=i>>1;j=g>>>0<f>>>0?f:g}else j=1073741823;mEa(d,j,h,a+16|0);h=d+8|0;j=k[h>>2]|0;WEa(j|0,0,b<<2|0)|0;k[h>>2]=j+(b<<2);nEa(a,d);oEa(d)}else lEa(a,b);r=c;return}function lEa(a,b){a=a|0;b=b|0;var c=0;c=a+4|0;a=b;b=k[c>>2]|0;do{k[b>>2]=0;b=(k[c>>2]|0)+4|0;k[c>>2]=b;a=a+-1|0}while((a|0)!=0);return}function mEa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;k[a+12>>2]=0;k[a+16>>2]=d;do if(b){e=d+112|0;if(b>>>0<29&(i[e>>0]|0)==0){i[e>>0]=1;f=d;break}else{f=Qqa(b<<2)|0;break}}else f=0;while(0);k[a>>2]=f;d=f+(c<<2)|0;k[a+8>>2]=d;k[a+4>>2]=d;k[a+12>>2]=f+(b<<2);return}function nEa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=k[a>>2]|0;d=a+4|0;e=b+4|0;f=(k[d>>2]|0)-c|0;g=(k[e>>2]|0)+(0-(f>>2)<<2)|0;k[e>>2]=g;TEa(g|0,c|0,f|0)|0;f=k[a>>2]|0;k[a>>2]=k[e>>2];k[e>>2]=f;f=b+8|0;c=k[d>>2]|0;k[d>>2]=k[f>>2];k[f>>2]=c;c=a+8|0;a=b+12|0;f=k[c>>2]|0;k[c>>2]=k[a>>2];k[a>>2]=f;k[b>>2]=k[e>>2];return}function oEa(a){a=a|0;var b=0,c=0,d=0,e=0;b=k[a+4>>2]|0;c=a+8|0;d=k[c>>2]|0;while(1){if((d|0)==(b|0))break;e=d+-4|0;k[c>>2]=e;d=e}d=k[a>>2]|0;do if(d){c=k[a+16>>2]|0;if((c|0)==(d|0)){i[c+112>>0]=0;break}else{Sqa(d);break}}while(0);return}function pEa(a,b){a=a|0;b=b|0;var c=0,d=0;if(b>>>0>1073741823)Oqa(a);c=a+128|0;if(b>>>0<29&(i[c>>0]|0)==0){i[c>>0]=1;d=a+16|0}else d=Qqa(b<<2)|0;k[a+4>>2]=d;k[a>>2]=d;k[a+8>>2]=d+(b<<2);return}function qEa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0.0,g=0,h=0,i=0.0,j=0.0;d=r;r=r+16|0;e=d;if((a|0)==(b|0)){k[c>>2]=4;f=0.0}else{g=Sra()|0;h=k[g>>2]|0;k[g>>2]=0;i=+Ata(a,e,oxa()|0);a=k[g>>2]|0;if(!a)k[g>>2]=h;if((k[e>>2]|0)==(b|0))if((a|0)==34){k[c>>2]=4;j=i}else j=i;else{k[c>>2]=4;j=0.0}f=j}r=d;return +f}function rEa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0.0,g=0,h=0,i=0.0,j=0.0;d=r;r=r+16|0;e=d;if((a|0)==(b|0)){k[c>>2]=4;f=0.0}else{g=Sra()|0;h=k[g>>2]|0;k[g>>2]=0;i=+Ata(a,e,oxa()|0);a=k[g>>2]|0;if(!a)k[g>>2]=h;if((k[e>>2]|0)==(b|0))if((a|0)==34){k[c>>2]=4;j=i}else j=i;else{k[c>>2]=4;j=0.0}f=j}r=d;return +f}function sEa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0.0,g=0,h=0,i=0.0,j=0.0;d=r;r=r+16|0;e=d;if((a|0)==(b|0)){k[c>>2]=4;f=0.0}else{g=Sra()|0;h=k[g>>2]|0;k[g>>2]=0;i=+Ata(a,e,oxa()|0);a=k[g>>2]|0;if(!a)k[g>>2]=h;if((k[e>>2]|0)==(b|0)){if((a|0)==34)k[c>>2]=4;j=i}else{k[c>>2]=4;j=0.0}f=j}r=d;return +f}function tEa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;e=r;r=r+16|0;f=e;do if((a|0)==(b|0)){k[c>>2]=4;g=0;h=0}else{if((i[a>>0]|0)==45){k[c>>2]=4;g=0;h=0;break}j=Sra()|0;l=k[j>>2]|0;k[j>>2]=0;m=Lra(a,f,d,oxa()|0)|0;n=Q;o=k[j>>2]|0;if(!o)k[j>>2]=l;if((k[f>>2]|0)==(b|0))if((o|0)==34){k[c>>2]=4;p=-1;q=-1}else{p=m;q=n}else{k[c>>2]=4;p=0;q=0}g=q;h=p}while(0);Q=g;r=e;return h|0}function uEa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;e=r;r=r+16|0;f=e;do if((a|0)==(b|0)){k[c>>2]=4;g=0}else{if((i[a>>0]|0)==45){k[c>>2]=4;g=0;break}h=Sra()|0;j=k[h>>2]|0;k[h>>2]=0;l=Lra(a,f,d,oxa()|0)|0;m=Q;n=k[h>>2]|0;if(!n)k[h>>2]=j;do if((k[f>>2]|0)==(b|0))if(m>>>0>0|(m|0)==0&l>>>0>4294967295|(n|0)==34){k[c>>2]=4;o=-1;break}else{o=l;break}else{k[c>>2]=4;o=0}while(0);g=o}while(0);r=e;return g|0}function vEa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;e=r;r=r+16|0;f=e;do if((a|0)==(b|0)){k[c>>2]=4;g=0}else{if((i[a>>0]|0)==45){k[c>>2]=4;g=0;break}h=Sra()|0;j=k[h>>2]|0;k[h>>2]=0;l=Lra(a,f,d,oxa()|0)|0;m=Q;n=k[h>>2]|0;if(!n)k[h>>2]=j;do if((k[f>>2]|0)==(b|0))if(m>>>0>0|(m|0)==0&l>>>0>4294967295|(n|0)==34){k[c>>2]=4;o=-1;break}else{o=l;break}else{k[c>>2]=4;o=0}while(0);g=o}while(0);r=e;return g|0}function wEa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;e=r;r=r+16|0;f=e;do if((a|0)==(b|0)){k[c>>2]=4;g=0}else{if((i[a>>0]|0)==45){k[c>>2]=4;g=0;break}h=Sra()|0;j=k[h>>2]|0;k[h>>2]=0;l=Lra(a,f,d,oxa()|0)|0;m=Q;n=k[h>>2]|0;if(!n)k[h>>2]=j;do if((k[f>>2]|0)==(b|0))if(m>>>0>0|(m|0)==0&l>>>0>65535|(n|0)==34){k[c>>2]=4;o=-1;break}else{o=l&65535;break}else{k[c>>2]=4;o=0}while(0);g=o}while(0);r=e;return g|0}function xEa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;e=r;r=r+16|0;f=e;if((a|0)==(b|0)){k[c>>2]=4;g=0;h=0}else{i=Sra()|0;j=k[i>>2]|0;k[i>>2]=0;l=Mra(a,f,d,oxa()|0)|0;d=Q;a=k[i>>2]|0;if(!a)k[i>>2]=j;if((k[f>>2]|0)==(b|0))if((a|0)==34){k[c>>2]=4;a=(d|0)>0|(d|0)==0&l>>>0>0;m=a?-1:0;n=a?2147483647:-2147483648}else{m=l;n=d}else{k[c>>2]=4;m=0;n=0}g=n;h=m}Q=g;r=e;return h|0}function yEa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0;e=r;r=r+16|0;f=e;if((a|0)==(b|0)){k[c>>2]=4;g=0}else{h=Sra()|0;i=k[h>>2]|0;k[h>>2]=0;j=Mra(a,f,d,oxa()|0)|0;d=Q;a=k[h>>2]|0;if(!a)k[h>>2]=i;a:do if((k[f>>2]|0)==(b|0)){do if((a|0)==34){k[c>>2]=4;if((d|0)>0|(d|0)==0&j>>>0>0){l=2147483647;break a}}else{if((d|0)<-1|(d|0)==-1&j>>>0<2147483648){k[c>>2]=4;break}if((d|0)>0|(d|0)==0&j>>>0>2147483647){k[c>>2]=4;l=2147483647;break a}else{l=j;break a}}while(0);l=-2147483648}else{k[c>>2]=4;l=0}while(0);g=l}r=e;return g|0}function zEa(a){a=a|0;return}function AEa(a){a=a|0;var b=0;b=a+4|0;k[b>>2]=(k[b>>2]|0)+1;return}function BEa(a){a=a|0;var b=0,c=0,d=0;b=a+4|0;c=k[b>>2]|0;k[b>>2]=c+-1;if(!c){Ec[k[(k[a>>2]|0)+8>>2]&1023](a);d=1}else d=0;return d|0}function CEa(a,b){a=a|0;b=b|0;k[a>>2]=42060;B=0;wa(563,a+4|0,((i[b>>0]&1)==0?b+1|0:k[b+8>>2]|0)|0);b=B;B=0;if(b&1){b=Rb()|0;Qb(b|0)}else return}function DEa(a,b){a=a|0;b=b|0;k[a>>2]=42060;B=0;wa(563,a+4|0,b|0);b=B;B=0;if(b&1){b=Rb()|0;Qb(b|0)}else return}function EEa(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=Lta(b)|0;d=Qqa(c+13|0)|0;k[d>>2]=c;k[d+4>>2]=c;k[d+8>>2]=0;e=d+12|0;TEa(e|0,b|0,c+1|0)|0;k[a>>2]=e;return}function FEa(a,b,c){a=a|0;b=b|0;c=c|0;k[a>>2]=c;k[a+4>>2]=b;return}function GEa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=r;r=r+16|0;e=d;nd[k[(k[a>>2]|0)+12>>2]&1023](e,a,b);if((k[e+4>>2]|0)==(k[c+4>>2]|0))f=(k[e>>2]|0)==(k[c>>2]|0);else f=0;r=d;return f|0}function HEa(a,b,c){a=a|0;b=b|0;c=c|0;return ((k[b>>2]|0)==(c|0)?(k[b+4>>2]|0)==(a|0):0)|0}function IEa(a,b,c){a=a|0;b=b|0;c=c|0;b=Tra(c)|0;Wua(a,b,Lta(b)|0);return}function JEa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0;d=r;r=r+16|0;e=d;f=k[b>>2]|0;do if(f){g=i[c>>0]|0;if(!(g&1))h=(g&255)>>>1;else h=k[c+4>>2]|0;if(!h)j=f;else{dva(c,160061)|0;j=k[b>>2]|0}g=k[b+4>>2]|0;nd[k[(k[g>>2]|0)+24>>2]&1023](e,g,j);g=i[e>>0]|0;l=(g&1)==0;B=0;Ia(59,c|0,(l?e+1|0:k[e+8>>2]|0)|0,(l?(g&255)>>>1:k[e+4>>2]|0)|0)|0;g=B;B=0;if(g&1){g=Rb()|0;Yua(e);Qb(g|0)}else{Yua(e);break}}while(0);k[a>>2]=k[c>>2];k[a+4>>2]=k[c+4>>2];k[a+8>>2]=k[c+8>>2];a=0;while(1){if((a|0)==3)break;k[c+(a<<2)>>2]=0;a=a+1|0}r=d;return}function KEa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;d=r;r=r+32|0;e=d+12|0;f=d;Wua(f,c,Lta(c)|0);B=0;eb(536,e|0,b|0,f|0);c=B;B=0;do if(!(c&1)){B=0;wa(564,a|0,e|0);g=B;B=0;if(g&1){g=Rb()|0;h=Q;Yua(e);i=h;j=g;break}else{Yua(e);Yua(f);k[a>>2]=52844;g=b;h=k[g+4>>2]|0;l=a+8|0;k[l>>2]=k[g>>2];k[l+4>>2]=h;r=d;return}}else{h=Rb()|0;i=Q;j=h}while(0);Yua(f);Qb(j|0)}function LEa(a){a=a|0;ara(a);return}function MEa(a){a=a|0;ara(a);Sqa(a);return}function NEa(a){a=a|0;return}function OEa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;qc(52856)|0;while(1){if((k[a>>2]|0)!=1)break;lb(52884,52856)|0}do if(!(k[a>>2]|0)){k[a>>2]=1;B=0;ya(446,52856)|0;d=B;B=0;if((((!(d&1)?(B=0,va(c|0,b|0),d=B,B=0,!(d&1)):0)?(B=0,ya(447,52856)|0,d=B,B=0,!(d&1)):0)?(k[a>>2]=-1,B=0,ya(446,52856)|0,d=B,B=0,!(d&1)):0)?(B=0,ya(448,52884)|0,d=B,B=0,!(d&1)):0)break;d=Rb(0)|0;Nb(d|0)|0;B=0;ya(447,52856)|0;d=B;B=0;if((!(d&1)?(k[a>>2]=0,B=0,ya(446,52856)|0,d=B,B=0,!(d&1)):0)?(B=0,ya(448,52884)|0,d=B,B=0,!(d&1)):0){B=0;fb(8);B=0}d=Rb()|0;B=0;fb(4);e=B;B=0;if(e&1){e=Rb(0)|0;Dd(e)}else Qb(d|0)}else Zb(52856)|0;while(0);return}function PEa(){}function QEa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=a+c>>>0;return (Q=b+d+(e>>>0<a>>>0|0)>>>0,e|0)|0}function REa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=b-d>>>0;e=b-d-(c>>>0>a>>>0|0)>>>0;return (Q=e,a-c>>>0|0)|0}function SEa(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){Q=b>>>c;return a>>>c|(b&(1<<c)-1)<<32-c}Q=0;return b>>>c-32|0}function TEa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((c|0)>=4096)return Ob(a|0,b|0,c|0)|0;d=a|0;if((a&3)==(b&3)){while(a&3){if(!c)return d|0;i[a>>0]=i[b>>0]|0;a=a+1|0;b=b+1|0;c=c-1|0}while((c|0)>=4){k[a>>2]=k[b>>2];a=a+4|0;b=b+4|0;c=c-4|0}}while((c|0)>0){i[a>>0]=i[b>>0]|0;a=a+1|0;b=b+1|0;c=c-1|0}return d|0}function UEa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((b|0)<(a|0)&(a|0)<(b+c|0)){d=a;b=b+c|0;a=a+c|0;while((c|0)>0){a=a-1|0;b=b-1|0;c=c-1|0;i[a>>0]=i[b>>0]|0}a=d}else TEa(a,b,c)|0;return a|0}function VEa(a){a=+a;return a>=0.0?+_(a+.5):+la(a-.5)}function WEa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=a+c|0;if((c|0)>=20){b=b&255;e=a&3;f=b|b<<8|b<<16|b<<24;g=d&~3;if(e){e=a+4-e|0;while((a|0)<(e|0)){i[a>>0]=b;a=a+1|0}}while((a|0)<(g|0)){k[a>>2]=f;a=a+4|0}}while((a|0)<(d|0)){i[a>>0]=b;a=a+1|0}return a-c|0}function XEa(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){Q=b<<c|(a&(1<<c)-1<<32-c)>>>32-c;return a<<c}Q=a<<c-32;return 0}function YEa(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){Q=b>>c;return a>>>c|(b&(1<<c)-1)<<32-c}Q=(b|0)<0?-1:0;return b>>c-32|0}function ZEa(a){a=a|0;var b=0;b=i[v+(a&255)>>0]|0;if((b|0)<8)return b|0;b=i[v+(a>>8&255)>>0]|0;if((b|0)<8)return b+8|0;b=i[v+(a>>16&255)>>0]|0;if((b|0)<8)return b+16|0;return (i[v+(a>>>24)>>0]|0)+24|0}function _Ea(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=a&65535;d=b&65535;e=ma(d,c)|0;f=a>>>16;a=(e>>>16)+(ma(d,f)|0)|0;d=b>>>16;b=ma(d,c)|0;return (Q=(a>>>16)+(ma(d,f)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|e&65535|0)|0}function $Ea(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=b>>31|((b|0)<0?-1:0)<<1;f=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;g=d>>31|((d|0)<0?-1:0)<<1;h=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;i=REa(e^a,f^b,e,f)|0;b=Q;a=g^e;e=h^f;return REa((eFa(i,b,REa(g^c,h^d,g,h)|0,Q,0)|0)^a,Q^e,a,e)|0}function aFa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0;e=r;r=r+16|0;f=e|0;g=b>>31|((b|0)<0?-1:0)<<1;h=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;i=d>>31|((d|0)<0?-1:0)<<1;j=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;l=REa(g^a,h^b,g,h)|0;b=Q;eFa(l,b,REa(i^c,j^d,i,j)|0,Q,f)|0;j=REa(k[f>>2]^g,k[f+4>>2]^h,g,h)|0;h=Q;r=e;return (Q=h,j)|0}function bFa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;a=c;c=_Ea(e,a)|0;f=Q;return (Q=(ma(b,a)|0)+(ma(d,e)|0)+f|f&0,c|0|0)|0}function cFa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return eFa(a,b,c,d,0)|0}function dFa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=r;r=r+16|0;f=e|0;eFa(a,b,c,d,f)|0;r=e;return (Q=k[f+4>>2]|0,k[f>>2]|0)|0}function eFa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;f=a;g=b;h=g;i=c;j=d;l=j;if(!h){m=(e|0)!=0;if(!l){if(m){k[e>>2]=(f>>>0)%(i>>>0);k[e+4>>2]=0}n=0;o=(f>>>0)/(i>>>0)>>>0;return (Q=n,o)|0}else{if(!m){n=0;o=0;return (Q=n,o)|0}k[e>>2]=a|0;k[e+4>>2]=b&0;n=0;o=0;return (Q=n,o)|0}}m=(l|0)==0;do if(i){if(!m){p=(oa(l|0)|0)-(oa(h|0)|0)|0;if(p>>>0<=31){q=p+1|0;r=31-p|0;s=p-31>>31;t=q;u=f>>>(q>>>0)&s|h<<r;v=h>>>(q>>>0)&s;w=0;x=f<<r;break}if(!e){n=0;o=0;return (Q=n,o)|0}k[e>>2]=a|0;k[e+4>>2]=g|b&0;n=0;o=0;return (Q=n,o)|0}r=i-1|0;if(r&i){s=(oa(i|0)|0)+33-(oa(h|0)|0)|0;q=64-s|0;p=32-s|0;y=p>>31;z=s-32|0;A=z>>31;t=s;u=p-1>>31&h>>>(z>>>0)|(h<<p|f>>>(s>>>0))&A;v=A&h>>>(s>>>0);w=f<<q&y;x=(h<<q|f>>>(z>>>0))&y|f<<p&s-33>>31;break}if(e){k[e>>2]=r&f;k[e+4>>2]=0}if((i|0)==1){n=g|b&0;o=a|0|0;return (Q=n,o)|0}else{r=ZEa(i|0)|0;n=h>>>(r>>>0)|0;o=h<<32-r|f>>>(r>>>0)|0;return (Q=n,o)|0}}else{if(m){if(e){k[e>>2]=(h>>>0)%(i>>>0);k[e+4>>2]=0}n=0;o=(h>>>0)/(i>>>0)>>>0;return (Q=n,o)|0}if(!f){if(e){k[e>>2]=0;k[e+4>>2]=(h>>>0)%(l>>>0)}n=0;o=(h>>>0)/(l>>>0)>>>0;return (Q=n,o)|0}r=l-1|0;if(!(r&l)){if(e){k[e>>2]=a|0;k[e+4>>2]=r&h|b&0}n=0;o=h>>>((ZEa(l|0)|0)>>>0);return (Q=n,o)|0}r=(oa(l|0)|0)-(oa(h|0)|0)|0;if(r>>>0<=30){s=r+1|0;p=31-r|0;t=s;u=h<<p|f>>>(s>>>0);v=h>>>(s>>>0);w=0;x=f<<p;break}if(!e){n=0;o=0;return (Q=n,o)|0}k[e>>2]=a|0;k[e+4>>2]=g|b&0;n=0;o=0;return (Q=n,o)|0}while(0);if(!t){B=x;C=w;D=v;E=u;F=0;G=0}else{b=c|0|0;c=j|d&0;d=QEa(b|0,c|0,-1,-1)|0;j=Q;g=x;x=w;w=v;v=u;u=t;t=0;do{a=g;g=x>>>31|g<<1;x=t|x<<1;f=v<<1|a>>>31|0;a=v>>>31|w<<1|0;REa(d,j,f,a)|0;h=Q;l=h>>31|((h|0)<0?-1:0)<<1;t=l&1;v=REa(f,a,l&b,(((h|0)<0?-1:0)>>31|((h|0)<0?-1:0)<<1)&c)|0;w=Q;u=u-1|0}while((u|0)!=0);B=g;C=x;D=w;E=v;F=0;G=t}t=C;C=0;if(e){k[e>>2]=E;k[e+4>>2]=D}n=(t|0)>>>31|(B|C)<<1|(C<<1|t>>>31)&0|F;o=(t<<1|0>>>31)&-2|G;return (Q=n,o)|0}function fFa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return Ac[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function gFa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;return Bc[a&3](b|0,c|0,d|0,e|0,f|0,+g)|0}function hFa(a,b,c){a=a|0;b=b|0;c=+c;Cc[a&63](b|0,+c)}function iFa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Dc[a&255](b|0,c|0,d|0,e|0,f|0)}function jFa(a,b){a=a|0;b=b|0;Ec[a&1023](b|0)}function kFa(a,b,c){a=a|0;b=b|0;c=c|0;Fc[a&1023](b|0,c|0)}function lFa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Gc[a&63](b|0,c|0,d|0,e|0,f|0,g|0)|0}function mFa(a,b){a=a|0;b=b|0;return Hc[a&511](b|0)|0}function nFa(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=+l;Ic[a&1](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,+l)}function oFa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;Jc[a&1](b|0,c|0,+d,e|0)}function pFa(a,b,c,d,e,f,g,h,i,j,k,l,m,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;return Kc[a&1](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0,n|0)|0}function qFa(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;i=+i;Lc[a&15](b|0,c|0,d|0,e|0,f|0,g|0,+h,+i)}function rFa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=+c;d=+d;e=+e;f=+f;g=g|0;return +Mc[a&7](b|0,+c,+d,+e,+f,g|0)}function sFa(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;Nc[a&31](b|0,+c,d|0)}function tFa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;g=g|0;Oc[a&3](b|0,c|0,+d,+e,f|0,g|0)}function uFa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=+c;d=+d;e=+e;f=+f;g=+g;return +Pc[a&7](b|0,+c,+d,+e,+f,+g)}function vFa(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;Qc[a&15](b|0,+c,+d)}function wFa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Rc[a&63](b|0,c|0,d|0)|0}function xFa(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;Sc[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0,n|0,o|0,p|0)}function yFa(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;Tc[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function zFa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Uc[a&63](b|0,c|0,d|0,e|0,f|0,g|0)}function AFa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return +Vc[a&7](b|0,c|0,d|0,e|0)}function BFa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;Wc[a&1](b|0,c|0,d|0,e|0,f|0,+g,+h)}function CFa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;Xc[a&63](b|0,c|0,+d)}function DFa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;g=g|0;Yc[a&1](b|0,c|0,d|0,e|0,+f,g|0)}function EFa(a,b){a=a|0;b=b|0;return +Zc[a&255](b|0)}function FFa(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return _c[a&1](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function GFa(a,b,c){a=a|0;b=b|0;c=+c;return $c[a&1](b|0,+c)|0}function HFa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ad[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function IFa(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return bd[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function JFa(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;cd[a&1](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function KFa(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;dd[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function LFa(a,b,c){a=a|0;b=b|0;c=c|0;return ed[a&511](b|0,c|0)|0}function MFa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return fd[a&31](b|0,c|0,d|0,e|0,f|0)|0}function NFa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +gd[a&7](b|0,c|0,d|0)}function OFa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;g=g|0;return hd[a&7](b|0,c|0,+d,+e,f|0,g|0)|0}function PFa(a,b,c){a=a|0;b=b|0;c=c|0;return +id[a&63](b|0,c|0)}function QFa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;jd[a&31](b|0,c|0,d|0,e|0,+f)}function RFa(a){a=a|0;return kd[a&15]()|0}function SFa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ld[a&127](b|0,c|0,d|0,e|0)|0}function TFa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;md[a&31](b|0,c|0,d|0,+e)}function UFa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;nd[a&1023](b|0,c|0,d|0)}function VFa(a){a=a|0;od[a&15]()}function WFa(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return pd[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function XFa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return qd[a&7](b|0,c|0,d|0,e|0,+f)|0}function YFa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;rd[a&511](b|0,c|0,d|0,e|0)}function ZFa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;pa(0);return 0}function _Fa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;pa(1);return 0}function $Fa(a,b){a=a|0;b=+b;pa(2)}function aGa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;pa(3)}function bGa(a){a=a|0;pa(4)}function cGa(a,b){a=a|0;b=b|0;pa(5)}function dGa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;pa(6);return 0}function eGa(a){a=a|0;pa(7);return 0}function fGa(a){a=a|0;return Zb(a|0)|0}function gGa(a){a=a|0;return qc(a|0)|0}function hGa(a){a=a|0;return Db(a|0)|0}function iGa(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=+k;pa(8)}function jGa(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;pa(9)}function kGa(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;pa(10);return 0}function lGa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;pa(11)}function mGa(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=f|0;pa(12);return 0.0}function nGa(a,b,c){a=a|0;b=+b;c=c|0;pa(13)}function oGa(a,b,c,d,e,f){a=a|0;b=b|0;c=+c;d=+d;e=e|0;f=f|0;pa(14)}function pGa(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;pa(15);return 0.0}function qGa(a,b,c){a=a|0;b=+b;c=+c;pa(16)}function rGa(a,b,c){a=a|0;b=b|0;c=c|0;pa(17);return 0}function sGa(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;pa(18)}function tGa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;pa(19)}function uGa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;pa(20)}function vGa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;pa(21);return 0.0}function wGa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;g=+g;pa(22)}function xGa(a,b,c){a=a|0;b=b|0;c=+c;pa(23)}function yGa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;pa(24)}function zGa(a){a=a|0;pa(25);return 0.0}function AGa(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;pa(26);return 0}function BGa(a,b){a=a|0;b=+b;pa(27);return 0}function CGa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;pa(28)}function DGa(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;pa(29);return 0}function EGa(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;pa(30)}function FGa(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;pa(31)}function GGa(a,b){a=a|0;b=b|0;pa(32);return 0}function HGa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;pa(33);return 0}function IGa(a,b,c){a=a|0;b=b|0;c=c|0;pa(34);return 0.0}function JGa(a,b,c,d,e,f){a=a|0;b=b|0;c=+c;d=+d;e=e|0;f=f|0;pa(35);return 0}function KGa(a,b){a=a|0;b=b|0;pa(36);return 0.0}function LGa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;pa(37)}function MGa(){pa(38);return 0}function NGa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;pa(39);return 0}function OGa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;pa(40)}function PGa(a,b,c){a=a|0;b=b|0;c=c|0;pa(41)}function QGa(a,b,c){a=a|0;b=b|0;c=c|0;jc(a|0,b|0,c|0)}function RGa(){pa(42)}function SGa(){oc()}function TGa(){Pb()}function UGa(){ac()}function VGa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;pa(43);return 0}function WGa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;pa(44);return 0}function XGa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;pa(45)}function YGa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;yb(a|0,b|0,c|0,d|0)}
+
+// EMSCRIPTEN_END_FUNCS
+var Ac=[ZFa,hza,lza,fAa,jAa,oAa,qAa,cf,QCa,$Ca,ZFa,ZFa,ZFa,ZFa,ZFa,ZFa];var Bc=[_Fa,uAa,AAa,_Fa];var Cc=[$Fa,yl,Hj,Zi,Ek,Ik,Lk,ym,zm,Am,XC,aD,bD,SD,ZD,YD,RE,XE,FE,KF,QF,yF,sG,NG,rG,rH,xH,yH,lI,rI,sI,VO,GP,rQ,aR,MR,xS,jT,VT,FU,qV,bW,MW,xX,P$,U$,V$,k3,H3,q3,d4,k4,j4,sg,ng,sja,$Fa,$Fa,$Fa,$Fa,$Fa,$Fa,$Fa,$Fa];var Dc=[aGa,rl,Il,Aj,Rj,Si,hj,yk,Wm,vr,Kr,ft,mt,Nt,ju,Sv,Xv,Lx,Yx,Wy,Zy,zz,Pz,wB,DB,KK,ZK,OO,dP,zP,QP,kQ,AQ,VQ,jR,FR,WR,qS,HS,cT,sT,OT,cU,mU,nU,jV,zV,WV,kW,FW,WW,rX,HX,A5,B5,I5,U5,V5,a6,k6,l6,z6,W6,X6,g7,o7,p7,x7,D7,C7,N7,V7,W7,b8,j8,k8,r8,z8,A8,J8,Y8,Z8,x9,Naa,Oaa,Vaa,bba,cba,mba,uba,vba,Gba,Oba,Pba,jca,sca,tca,Bca,Jca,Kca,Rca,Zca,Yca,jda,sda,rda,Gda,Sda,Tda,_da,gea,hea,oea,wea,xea,Iea,Vea,Wea,bfa,jfa,kfa,rfa,zfa,Afa,Hfa,Pfa,Qfa,Xfa,dga,ega,lga,tga,uga,Bga,Jga,Kga,Wga,cha,dha,kha,sha,tha,Aha,Iha,Jha,Qha,Zha,_ha,fia,oia,pia,yia,Jia,Kia,Ria,eja,fja,mja,Ara,zra,wra,ig,Yg,OY,vka,GN,RN,Uq,Wja,ika,ro,vT,j1,l1,MK,x0,Dma,VL,Cka,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa,aGa];var Ec=[bGa,Bd,Fd,Ed,Gd,owa,qwa,pwa,rwa,Hd,Id,Lg,Mg,Ng,Og,yg,zg,Ag,Bg,Bi,bl,cl,Ok,Pk,Qk,Rk,gk,hk,ik,jk,Uj,Vj,Wj,Xj,kj,lj,Ci,Di,uk,vk,wk,xk,Ol,Pl,Ql,Rl,Lm,Mm,Pm,Om,Tm,pn,qn,rn,sn,Fn,Gn,Jn,Kn,so,to,uo,vo,Qo,Ro,mp,$o,Iq,_q,$q,wr,yr,zr,Ar,Ms,Ns,Us,Vs,Ws,ct,dt,Gt,Ht,Ot,Pt,Ut,Vt,Wt,zv,Av,Gv,Hv,kw,Pv,Qv,Fw,Gw,Mx,Px,Qx,Rx,yx,zx,Ly,My,Ny,Ty,Uy,sz,tz,Az,Cz,FB,Dz,cB,dB,kB,lB,mB,tB,uB,zC,AC,BC,CC,qD,rD,vD,wD,xD,yD,oE,pE,qE,rE,hF,iF,oF,jF,aG,bG,cG,dG,UG,VG,WG,XG,NH,OH,PH,QH,KI,LI,PI,OI,xJ,CJ,DJ,EJ,FJ,XJ,zK,AK,DK,CK,HK,NK,OK,RK,QK,VK,jL,kL,oL,nL,FL,WL,XL,$L,_L,rM,MM,NM,RM,QM,hN,wO,xO,yO,hP,iP,jP,UP,VP,WP,DQ,EQ,FQ,nR,oR,pR,_R,$R,aS,LS,MS,NS,wT,xT,yT,gU,hU,iU,SU,TU,UU,DV,EV,FV,oW,pW,qW,_W,$W,aX,KX,LX,NX,OX,PY,QY,DZ,EZ,FZ,GZ,b$,c$,d$,e$,y0,z0,D0,C0,Y0,T1,U1,V1,W1,c2,d2,n1,o1,p1,q1,y1,z1,D1,E1,F1,G1,O1,P1,h2,i2,j2,k2,s2,t2,x2,y2,z2,A2,I2,J2,S2,T2,U2,V2,L3,M3,N3,O3,O5,P5,f6,R6,j7,A7,Q7,e8,u8,S8,Iaa,Yaa,pba,Jba,nca,Eca,Wca,pda,Nda,bea,rea,Qea,efa,ufa,Kfa,_fa,oga,Ega,Zga,nha,Dha,Tha,jia,Dia,Uia,pja,tja,uja,vja,Ija,Jja,Kja,Xja,Yja,Zja,lka,mka,nka,Kla,Lla,Pla,Ola,yma,Ema,Fma,Jma,Ima,Wma,kna,lna,pna,ona,Dna,Qpa,Rpa,Spa,Vqa,Wqa,ara,bra,fra,gra,ira,lra,jra,kra,mra,nra,Pva,zua,Fua,Ava,Kua,Qua,Bva,Qva,cwa,ewa,dwa,fwa,iwa,kwa,jwa,lwa,Dwa,Fwa,Ewa,Gwa,Nwa,Owa,uva,Pwa,NEa,Qwa,Rwa,Twa,bBa,Xwa,Ywa,axa,bxa,pxa,qxa,Jxa,Kxa,Yxa,Zxa,jya,kya,Iya,Jya,eza,gza,jza,kza,nza,oza,yza,zza,Jza,Kza,Uza,Vza,dAa,eAa,mAa,nAa,sAa,tAa,yAa,zAa,EAa,FAa,JAa,KAa,RAa,SAa,tBa,uBa,PCa,MBa,mCa,nCa,oCa,pCa,Swa,aBa,dBa,DBa,UBa,aCa,iCa,jCa,LEa,MEa,hwa,Cva,zh,CZ,SY,Xm,o_,Cn,qo,II,AJ,xK,LK,Jm,Po,Sq,mE,_F,fF,$_,Ll,tD,Q2,J3,xC,w0,KM,UL,hL,JX,_K,FI,WN,gh,Lo,Zm,jn,Lq,zi,iC,mla,tla,wla,qja,Dja,Uja,fka,lR,fP,CQ,SP,uO,YW,eU,uT,QU,YR,BV,JS,mW,$$,c0,e0,f0,d0,j0,v_,A_,k0,l0,n0,m0,h0,o0,p0,u_,x_,Wia,Eia,q0,fpa,gpa,hpa,_4,cqa,J4,Bpa,Dsa,d5,To,wka,yka,on,zpa,Apa,spa,tpa,vpa,upa,tqa,Kra,Vta,Wta,sua,asa,gAa,iAa,cBa,ZDa,eEa,fEa,gEa,hEa,iEa,jEa,Yua,kva,mua,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa,bGa];var Fc=[cGa,Dva,Gg,hl,il,ll,nl,sl,tl,ul,vl,wl,xl,zl,Fl,Gl,Hl,Jl,qj,rj,uj,wj,Bj,Cj,Dj,Ej,Fj,Gj,Ij,Oj,Pj,Qj,Sj,Ii,Ji,Mi,Oi,Ti,Ui,Vi,Wi,Xi,Yi,_i,ej,fj,gj,ij,Bk,Ck,Jk,tm,um,vm,cm,bm,sm,Dm,km,An,Jq,xr,Vr,Wr,Js,Qs,Qt,Tt,wu,xu,wv,iw,Ox,Vw,Ww,Hy,Jy,Bz,$z,aA,$A,gB,NC,OC,PC,IC,VC,LC,eD,fD,fE,gE,hE,ND,MD,eE,kE,lE,zE,AE,BE,NE,DE,JE,ZE,HE,sF,tF,uF,GF,wF,CF,RF,SF,lG,mG,nG,AG,pG,FG,BG,OG,fH,gH,hH,mH,dH,eH,BH,CH,$H,aI,bI,fI,jI,ZH,vI,wI,TI,SJ,sL,uL,wL,vL,GM,eM,gM,hM,qN,ZM,aN,bN,EO,FO,IO,KO,PO,QO,RO,SO,TO,UO,WO,aP,bP,cP,eP,pP,qP,tP,vP,AP,BP,CP,DP,EP,FP,HP,NP,OP,PP,RP,bQ,cQ,eQ,gQ,lQ,mQ,nQ,oQ,pQ,qQ,sQ,xQ,yQ,zQ,BQ,MQ,NQ,PQ,RQ,WQ,XQ,YQ,ZQ,_Q,$Q,bR,gR,hR,iR,kR,vR,uR,BR,DR,GR,HR,IR,JR,KR,LR,NR,TR,UR,VR,XR,gS,hS,kS,mS,rS,sS,tS,uS,vS,wS,yS,ES,FS,GS,IS,VS,WS,ZS,$S,dT,eT,fT,gT,hT,iT,kT,pT,qT,rT,tT,GT,HT,JT,LT,PT,QT,RT,ST,TT,UT,WT,$T,aU,bU,dU,pU,qU,tU,vU,zU,AU,BU,CU,DU,EU,GU,MU,NU,OU,PU,cV,dV,fV,hV,kV,lV,mV,nV,oV,pV,rV,wV,xV,yV,AV,NV,OV,RV,KV,XV,YV,ZV,_V,$V,aW,LV,hW,iW,jW,lW,wW,xW,AW,BW,GW,HW,IW,JW,KW,LW,NW,TW,UW,VW,XW,hX,iX,lX,nX,sX,tX,uX,fX,vX,wX,yX,EX,FX,GX,IX,y$,z$,A$,x$,N$,H$,G$,n$,c1,O0,P0,Q0,A3,B3,e3,i3,h3,z3,u3,t3,s4,t4,u4,_3,Z3,r4,y4,z4,C5,N5,W5,e6,m6,Q6,Y6,i7,q7,z7,H7,P7,X7,d8,l8,t8,B8,L8,_8,G9,Paa,Xaa,dba,oba,wba,Iba,Vba,mca,uca,Dca,Lca,Tca,bda,mda,yda,Ida,Uda,aea,iea,qea,yea,Kea,Xea,dfa,lfa,tfa,Bfa,Jfa,Rfa,Zfa,fga,nga,vga,Dga,Lga,Yga,eha,mha,uha,Cha,Kha,Sha,$ha,iia,qia,Cia,Lia,Tia,gja,oja,xja,yja,Cja,Nja,Pja,Tja,$ja,aka,eka,pka,qka,uka,Tla,fna,Oma,Pma,Qma,Gna,una,wna,xna,Aua,Eua,Lua,Pua,Sva,rza,sza,tza,uza,wza,xza,Cza,Dza,Eza,Fza,Hza,Iza,Nza,Oza,Pza,Qza,Sza,Tza,Yza,Zza,_za,$za,bAa,cAa,IAa,NAa,uCa,wCa,yCa,vCa,xCa,zCa,eva,swa,tva,rg,qg,yva,Od,Rd,pg,yY,NY,Ml,rja,MH,Eja,Vja,Wq,CN,c5,Aka,Npa,Mqa,wva,Hwa,DEa,cva,ova,nva,tDa,uDa,vDa,wDa,xDa,yDa,LBa,zDa,ADa,BDa,CDa,DDa,EDa,FDa,GDa,HDa,IDa,JDa,KDa,LDa,MDa,NDa,ODa,PDa,QDa,RDa,SDa,TDa,UDa,VDa,XDa,pEa,EEa,CEa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa,cGa];var Gc=[dGa,cxa,dxa,exa,fxa,gxa,hxa,ixa,jxa,kxa,lxa,mxa,rxa,sxa,txa,uxa,vxa,wxa,xxa,yxa,zxa,Axa,Bxa,Qxa,Sxa,bya,dya,mya,nya,oya,qya,sya,Lya,Mya,Nya,Pya,Rya,xAa,DAa,Qd,lDa,dGa,dGa,dGa,dGa,dGa,dGa,dGa,dGa,dGa,dGa,dGa,dGa,dGa,dGa,dGa,dGa,dGa,dGa,dGa,dGa,dGa,dGa,dGa];var Hc=[eGa,Hva,Iva,Ld,Lva,Pg,Qg,Rg,Cg,Dg,Eg,Hg,Ig,Jg,Kg,dl,el,gl,Sk,Tk,Uk,Xk,Yk,_k,kk,lk,mk,pk,qk,sk,Yj,Zj,_j,bk,ck,ek,mj,nj,pj,Ei,Fi,Hi,Dk,Hk,Sl,Tl,Ul,Wl,hm,im,jm,Qm,Rm,Nm,xn,yn,Ln,Mn,Hn,wo,xo,yo,Op,sr,ar,dr,Ir,Jr,fr,gr,Tr,fs,hr,hs,is,kr,Hs,Is,Ks,Rs,Ss,Ys,ht,tv,It,cu,aw,iu,ru,tu,bw,Mu,Nu,Pu,Qu,$u,uv,vv,xv,Dv,Fv,Jv,Uv,vx,Hw,Pw,Xx,Qw,Tw,Uw,ey,py,_w,$w,ax,fx,tx,ux,wx,Bx,Dx,Ex,Hx,_A,vz,Jz,Nz,Oz,Vz,Xz,Zz,IB,pA,rA,sA,DA,YA,ZA,aB,hB,iB,NB,yB,DC,EC,FC,HC,mD,nD,oD,zD,AD,BD,DD,GD,HD,ID,sE,tE,uE,wE,bF,cF,dF,kF,lF,mF,pF,WF,XF,YF,eG,fG,gG,iG,PG,QG,RG,YG,ZG,_G,aH,JH,KH,LH,RH,SH,TH,YH,BI,CI,DI,QI,RI,MI,$I,GJ,HJ,IJ,nK,EK,FK,BK,SK,TK,PK,pL,qL,lL,xL,zL,aM,bM,YL,iM,kM,SM,TM,OM,cN,eN,AO,BO,DO,lP,mP,oP,XP,YP,aQ,GQ,HQ,LQ,rR,sR,AR,cS,dS,fS,PS,QS,US,zT,AT,FT,jU,kU,oU,VU,WU,bV,HV,IV,MV,rW,sW,vW,cX,dX,gX,PX,QX,MX,RY,HZ,IZ,JZ,MZ,NZ,PZ,f$,g$,h$,j$,o$,p$,Z$,E0,F0,A0,R0,T0,X1,Y1,Z1,$1,a2,e2,f2,r1,s1,t1,v1,w1,A1,B1,H1,I1,J1,L1,M1,Q1,R1,l2,m2,n2,p2,q2,u2,v2,B2,C2,D2,F2,G2,K2,L2,W2,X2,Y2,_2,b3,c3,I3,P3,Q3,R3,T3,U3,V3,B4,Aja,Bja,wja,Rja,Sja,Lja,cka,dka,_ja,ska,tka,oka,Qla,Rla,Mla,$la,Kma,Lma,Gma,Rma,Tma,qna,rna,mna,yna,Ana,Tpa,Upa,Vpa,Xqa,cra,hra,Ksa,Bua,Xva,Zva,_va,Wva,Gua,Hua,Mua,Kva,Rua,Sua,Jwa,lya,BCa,DCa,FCa,LCa,NCa,HCa,JCa,Kya,CCa,ECa,GCa,MCa,OCa,ICa,KCa,pza,qza,vza,Aza,Bza,Gza,Lza,Mza,Rza,Wza,Xza,aAa,QBa,RBa,TBa,qCa,sCa,rCa,tCa,HBa,IBa,KBa,YBa,ZBa,$Ba,eCa,fCa,hCa,TY,xva,Rqa,Qqa,rY,qY,Xg,xY,th,nn,n_,co,hh,gn,Qq,$pa,rpa,xpa,qpa,ypa,$ta,cua,gwa,mwa,esa,Qta,fGa,gGa,hGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa,eGa];var Ic=[iGa,Tg];var Jc=[jGa,zk];var Kc=[kGa,Ug];var Lc=[lGa,nt,ot,Yv,Zv,_y,$y,OB,PB,lGa,lGa,lGa,lGa,lGa,lGa,lGa];var Mc=[mGa,ps,Xu,vy,BA,mGa,mGa,mGa];var Nc=[nGa,Wp,Xp,$r,Eu,ky,fA,kJ,lJ,MJ,NJ,IL,JL,uM,vM,sN,yN,I0,J0,kma,lma,Zma,_ma,Ina,Ona,nGa,nGa,nGa,nGa,nGa,nGa,nGa];var Oc=[oGa,Hja,jka,oGa];var Pc=[pGa,Ts,jw,Ky,jB,pGa,pGa,pGa];var Qc=[qGa,Cm,dD,$D,YE,AF,uG,AH,uI,m$,s3,m4,qGa,qGa,qGa,qGa];var Rc=[rGa,Eva,Jva,Nva,Yl,Bn,iD,FD,yE,rF,kG,FH,WH,u$,a3,A4,ora,hua,Nsa,Msa,Lsa,Osa,Tva,Yva,Cua,awa,Nua,GEa,HEa,Wwa,$wa,GAa,LAa,wBa,yBa,BBa,eBa,lBa,oBa,rBa,Pd,VX,WX,XX,zwa,Ppa,Yta,Zta,_ta,aua,bua,eua,dsa,qDa,sDa,zsa,ysa,tsa,tta,fva,rGa,rGa,rGa,rGa];var Sc=[sGa,wAa,CAa,sGa];var Tc=[tGa,qJ,oK,HL,tM,jN,_0,qma,Yma,Fna,wi,Km,k1,Dn,tGa,tGa];var Uc=[uGa,Jd,Or,Ur,Ps,bt,ou,vu,Cv,Ov,ay,fy,Ax,Fx,HB,_z,fB,sB,Dra,Cra,Bra,Uva,Fva,HAa,MAa,vg,jg,ug,Zg,kg,e5,fU,Ft,Ew,uz,f5,LM,jna,nW,Una,uGa,uGa,uGa,uGa,uGa,uGa,uGa,uGa,uGa,uGa,uGa,uGa,uGa,uGa,uGa,uGa,uGa,uGa,uGa,uGa,uGa,uGa,uGa,uGa];var Vc=[vGa,rs,Zu,xy,KB,vGa,vGa,vGa];var Wc=[wGa,m1];var Xc=[xGa,ml,vj,Ni,Fk,Gk,Bm,cs,Gu,ny,iA,cD,_D,GE,zF,tG,zH,tI,aJ,dJ,bJ,cJ,fK,gK,kK,lK,AL,EL,HM,nM,rN,gN,JO,uP,fQ,QQ,CR,lS,_S,KT,uU,gV,SV,uW,mX,k$,d1,W0,r3,l4,ama,dma,bma,cma,gna,Vma,Hna,Cna,$F,mR,xGa,xGa,xGa,xGa];var Yc=[yGa,yK];var Zc=[zGa,Zk,rk,dk,mm,om,qm,nm,pm,cr,Gr,Xr,Yr,Zr,_r,Xs,Zs,_s,$s,at,qt,rt,St,du,yu,Bu,Cu,Du,Iv,Kv,Lv,Mv,Nv,$v,fu,Nx,Vx,gy,hy,iy,jy,Oy,Py,Qy,Ry,Sy,bz,cz,EB,Kz,bA,cA,dA,eA,nB,oB,pB,qB,rB,RB,SB,YC,ZC,_C,$C,MC,TD,VD,XD,UD,WD,SE,TE,UE,VE,WE,LF,MF,NF,OF,PF,MG,wG,yG,vG,xG,sH,tH,uH,vH,wH,mI,nI,oI,pI,qI,UI,VI,WI,XI,ZI,_I,YI,_J,$J,aK,bK,cK,dK,eK,OZ,Q$,R$,S$,T$,E$,l3,n3,p3,m3,o3,e4,g4,i4,f4,h4,Ula,Vla,Wla,Xla,Zla,_la,Yla,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa,zGa];var _c=[AGa,Wg];var $c=[BGa,Awa];var ad=[CGa,zn,Br,kt,Xt,mw,Kw,Ix,Ez,BB,sJ,uJ,vJ,qK,sK,tK,rL,GL,cM,sM,UM,iN,M0,Z0,tma,vma,wma,Mma,Xma,sna,Ena,a$,noa,Pxa,Vxa,aya,fya,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa,CGa];var bd=[DGa,hAa,pAa,DGa];var cd=[EGa,N2];var dd=[FGa,kAa,rAa,vAa,BAa,FGa,FGa,FGa];var ed=[GGa,Md,Nd,Em,Fm,Gm,Vm,Pr,Qr,Rr,gs,js,lr,vs,xs,it,pu,qu,su,Ou,Ru,av,ev,fv,Vv,by,Sw,cy,qy,ry,gx,ix,jx,Xy,Tz,Uz,Wz,qA,tA,EA,HA,JA,zB,jD,kD,lD,dE,cE,bE,_E,$E,aF,TF,UF,VF,CG,EG,DG,GH,HH,IH,yI,zI,AI,NI,ZJ,JK,XK,yL,jM,dN,W$,X$,Y$,S0,v3,x3,w3,q4,p4,o4,D5,E5,F5,G5,X5,Y5,Z5,_5,n6,o6,p6,u6,Z6,_6,$6,c7,r7,t7,u7,v7,I7,J7,K7,L7,Y7,Z7,_7,$7,m8,n8,o8,p8,E8,F8,G8,H8,$8,a9,e9,m9,Qaa,Raa,Saa,Taa,eba,fba,gba,iba,xba,yba,zba,Cba,Xba,Yba,Zba,aca,vca,xca,yca,zca,Mca,Nca,Oca,Pca,cda,dda,eda,gda,zda,Ada,Bda,Dda,Vda,Wda,Xda,Yda,jea,kea,lea,mea,zea,Aea,Bea,Eea,Yea,Zea,_ea,$ea,mfa,nfa,ofa,pfa,Cfa,Dfa,Efa,Ffa,Sfa,Tfa,Ufa,Vfa,gga,hga,iga,jga,wga,xga,yga,zga,Mga,Nga,Oga,Rga,fha,gha,hha,iha,vha,wha,xha,yha,Lha,Mha,Nha,Oha,aia,bia,cia,dia,tia,uia,via,wia,Mia,Nia,Oia,Pia,hja,ija,jja,kja,Nla,Sma,zna,$va,Dua,Iua,bwa,Mva,Oua,Tua,Ova,vBa,xBa,zBa,jBa,mBa,pBa,$Aa,Cwa,zY,l_,wwa,xwa,bn,Bwa,Jka,uwa,MY,zt,qw,XB,iz,ywa,Q4,vwa,Z4,Zpa,_pa,Epa,Fpa,csa,bsa,_ua,lva,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa,GGa];var fd=[HGa,ts,dv,hx,FA,Uwa,Zwa,Lxa,Mxa,Rxa,Xxa,_xa,$xa,cya,hya,CBa,PBa,SBa,sBa,GBa,JBa,XBa,_Ba,dCa,gCa,Asa,wsa,HGa,HGa,HGa,HGa,HGa];var gd=[IGa,TX,b0,sEa,rEa,qEa,IGa,IGa];var hd=[JGa,us,cv,Ay,GA,JGa,JGa,JGa];var id=[KGa,Kk,Mk,tn,Lr,ns,os,qs,ss,pt,ku,Wu,Yu,fw,_u,_v,Zx,ty,uy,wy,yy,az,Qz,JB,zA,CA,LB,QB,b2,g2,x1,C1,N1,S1,r2,w2,H2,M2,a0,KGa,KGa,KGa,KGa,KGa,KGa,KGa,KGa,KGa,KGa,KGa,KGa,KGa,KGa,KGa,KGa,KGa,KGa,KGa,KGa,KGa,KGa,KGa,KGa,KGa];var jd=[LGa,em,Nr,nu,$x,GB,UC,QD,QE,JF,LG,pH,iI,M$,G3,a4,xg,LGa,LGa,LGa,LGa,LGa,LGa,LGa,LGa,LGa,LGa,LGa,LGa,LGa,LGa,LGa];var kd=[MGa,vY,Pqa,oxa,UAa,VAa,WAa,Nra,Pra,Ora,MGa,MGa,MGa,MGa,MGa,MGa];var ld=[NGa,Xl,mr,ws,Es,et,bv,gw,pv,Rv,zy,By,Gy,Vy,MB,IA,UA,vB,hD,ED,xE,qF,jG,EH,VH,t$,$2,b4,z5,T5,j6,V6,n7,B7,U7,i8,y8,X8,Maa,aba,tba,Nba,rca,Ica,Xca,qda,Rda,fea,vea,Uea,ifa,yfa,Ofa,cga,sga,Iga,bha,rha,Hha,Yha,nia,Iia,dja,ABa,gBa,hBa,iBa,qBa,_Ca,kDa,xsa,_ra,usa,yEa,xEa,wEa,vEa,uEa,tEa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa,NGa];var md=[OGa,$l,QC,iE,KE,DF,GG,jH,dI,BL,lM,fN,I$,U0,C3,v4,Uma,Bna,OGa,OGa,OGa,OGa,OGa,OGa,OGa,OGa,OGa,OGa,OGa,OGa,OGa,OGa];var nd=[PGa,jl,ol,pl,Al,Bl,Dl,Wk,ok,ak,sj,xj,yj,Jj,Kj,Mj,Ki,Pi,Qi,$i,aj,cj,Ak,Nk,Zl,xm,lm,rm,Um,un,vn,wn,Up,Yp,Kq,Vp,Zp,Er,Hr,Sr,as,bs,ds,es,nr,As,pr,qr,Cs,Ds,Fs,rr,Gs,Ls,jt,st,vt,Rt,au,eu,uu,Fu,cw,dw,Ju,gv,jv,kv,mv,ov,nv,qv,rv,sv,yv,lw,Hu,Iu,Ux,Wx,dy,ly,my,oy,Zw,kx,nx,Dy,Fy,px,ox,qx,rx,sx,xx,Yy,Xw,Yw,Hz,Lz,Yz,gA,hA,mA,lA,KA,OA,PA,RA,SA,TA,VA,WA,XA,bB,AB,jA,kA,JC,SC,WC,gD,KD,OD,RD,aE,CE,OE,EE,IE,vF,HF,xF,BF,oG,JG,qG,zG,iH,nH,qH,DH,cI,gI,kI,xI,eJ,fJ,gJ,hJ,rJ,tJ,wJ,mJ,oJ,yJ,nJ,pJ,zJ,hK,iK,jK,mK,pK,rK,uK,OJ,QJ,vK,PJ,RJ,wK,IK,WK,tL,KL,ML,SL,LL,NL,TL,dM,wM,yM,IM,xM,zM,JM,VM,tN,uN,vN,zN,AN,BN,GO,LO,MO,XO,YO,_O,rP,wP,xP,IP,JP,LP,_P,hQ,iQ,tQ,uQ,$P,OQ,SQ,TQ,cR,dR,fR,wR,ER,yR,OR,PR,RR,iS,nS,oS,zS,AS,CS,XS,SS,aT,TS,lT,nT,IT,MT,NT,XT,YT,ZT,rU,wU,xU,HU,IU,KU,_U,iV,YU,sV,$U,uV,PV,TV,UV,cW,dW,fW,yW,CW,DW,OW,PW,RW,jX,oX,pX,zX,AX,CX,LZ,B$,K$,O$,v$,N0,e1,G0,f1,g1,H0,h1,f3,E3,j3,y3,X3,x4,c4,n4,w5,x5,y5,H5,M5,Q5,R5,S5,$5,d6,g6,h6,i6,y6,N6,S6,T6,U6,f7,h7,k7,l7,m7,w7,y7,F7,G7,E7,M7,O7,R7,S7,T7,a8,c8,f8,g8,h8,q8,s8,v8,w8,x8,I8,K8,U8,V8,W8,u9,y9,Jaa,Kaa,Laa,Uaa,Waa,Zaa,_aa,$aa,lba,nba,qba,rba,sba,Fba,Hba,Kba,Lba,Mba,ica,kca,oca,pca,qca,Aca,Cca,Fca,Gca,Hca,Qca,Sca,$ca,ada,_ca,ida,kda,uda,vda,tda,Fda,Hda,Oda,Pda,Qda,Zda,$da,cea,dea,eea,nea,pea,sea,tea,uea,Hea,Jea,Rea,Sea,Tea,afa,cfa,ffa,gfa,hfa,qfa,sfa,vfa,wfa,xfa,Gfa,Ifa,Lfa,Mfa,Nfa,Wfa,Yfa,$fa,aga,bga,kga,mga,pga,qga,rga,Aga,Cga,Fga,Gga,Hga,Vga,Xga,_ga,$ga,aha,jha,lha,oha,pha,qha,zha,Bha,Eha,Fha,Gha,Pha,Rha,Vha,Wha,Xha,eia,gia,kia,lia,mia,xia,zia,Fia,Gia,Hia,Qia,Sia,aja,bja,cja,lja,nja,zja,Qja,bka,rka,ema,fma,gma,hma,sma,uma,xma,mma,oma,zma,nma,pma,Ama,Nma,$ma,bna,hna,ana,cna,ina,tna,Jna,Kna,Lna,Pna,Qna,Rna,FEa,Kwa,ava,Wua,QGa,yi,Ai,nla,nE,gF,xla,Gja,gka,Fka,Gka,zka,EN,ON,vO,gP,ZR,BJ,ZW,Xpa,Mpa,ala,R8,Sna,Kka,xka,Bka,CV,Mwa,oDa,pDa,rDa,iva,JEa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa,PGa];var od=[RGa,SGa,Hra,tY,TGa,m_,Ira,Gra,UGa,RGa,RGa,RGa,RGa,RGa,RGa,RGa];var pd=[VGa,uya,Tya,NBa,OBa,EBa,FBa,VBa,WBa,bCa,cCa,VGa,VGa,VGa,VGa,VGa];var qd=[WGa,Txa,Wxa,eya,gya,WGa,WGa,WGa];var rd=[XGa,Kd,Sg,Fg,fl,kl,ql,Cl,El,Vk,nk,$j,oj,tj,zj,Lj,Nj,Gi,Li,Ri,bj,dj,Vl,wm,am,dm,Hm,Im,Sm,In,zo,br,tr,ur,Cr,Dr,Fr,er,Mr,ir,ks,ls,jr,ms,or,ys,zs,Bs,Os,gt,lt,tt,ut,Jt,Kt,Mt,Yt,Zt,bu,lu,mu,Su,Tu,ew,Uu,Vu,hv,iv,hw,lv,Bv,Tv,Wv,Ku,Lu,Iw,Kx,Jw,Sx,Tx,Lw,_x,Rw,bx,cx,sy,dx,ex,lx,mx,Cy,Ey,Iy,Gx,Jx,dz,ez,wz,xz,yz,Fz,Gz,Iz,Rz,Sz,uA,vA,wA,xA,yA,LA,MA,NA,QA,eB,xB,CB,nA,oA,GC,RC,KC,TC,pD,sD,CD,jE,LD,PD,JD,vE,LE,ME,PE,eF,nF,EF,FF,IF,ZF,hG,HG,IG,KG,SG,$G,kH,lH,oH,bH,UH,_H,eI,hI,EI,SI,iJ,jJ,JJ,KJ,LJ,GK,UK,mL,OL,PL,ZL,AM,BM,PM,wN,xN,CO,HO,NO,ZO,$O,nP,sP,yP,KP,MP,ZP,dQ,jQ,vQ,wQ,IQ,JQ,UQ,eR,KQ,tR,xR,zR,QR,SR,eS,jS,pS,BS,DS,RS,YS,bT,mT,oT,BT,DT,CT,ET,_T,lU,sU,yU,JU,LU,XU,eV,ZU,tV,vV,JV,QV,VV,eW,gW,tW,zW,EW,QW,SW,eX,kX,qX,BX,DX,RX,KZ,i$,J$,D$,L$,_$,B0,K0,L0,_1,u1,K1,o2,E2,Z2,D3,g3,F3,d3,S3,w4,Y3,$3,W3,Sla,ima,jma,Hma,dna,ena,nna,Mna,Nna,Wpa,qra,rra,tra,Vva,Gva,Vwa,_wa,wg,lg,mg,tg,YGa,uD,R2,K3,Nl,TG,Fja,kka,hka,yC,TP,KS,JI,Jla,RU,iL,FN,QN,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa,XGa];return{_IssmConfigModule:Wd,_EnumToStringModule:Xd,_bitshift64Lshr:SEa,_InterpFromMeshToMesh2dModule:Vd,_NodeConnectivityModule:Sd,_bitshift64Shl:XEa,_IssmModule:Zd,_StringToEnumModule:Yd,_memset:WEa,_ElementConnectivityModule:Ud,_memcpy:TEa,_i64Subtract:REa,_i64Add:QEa,_TriMeshModule:Cd,_fflush:Usa,___errno_location:Sra,___cxa_can_catch:Era,_ContourToMeshModule:Td,_free:mua,_round:VEa,_memmove:UEa,___cxa_is_pointer_type:Fra,_malloc:lua,__GLOBAL__I_000101:tua,__GLOBAL__sub_I_Mesh_cpp:t5,__GLOBAL__sub_I_Geometry_cpp:Hpa,__GLOBAL__sub_I_iostream_cpp:uua,runPostSets:PEa,_emscripten_replace_memory:zc,stackAlloc:sd,stackSave:td,stackRestore:ud,establishStackSpace:vd,setThrew:wd,setTempRet0:zd,getTempRet0:Ad,dynCall_iiiiiiii:fFa,dynCall_iiiiiid:gFa,dynCall_vid:hFa,dynCall_viiiii:iFa,dynCall_vi:jFa,dynCall_vii:kFa,dynCall_iiiiiii:lFa,dynCall_ii:mFa,dynCall_viiiiiiiiiid:nFa,dynCall_viidi:oFa,dynCall_iiiiiiiiiiiiii:pFa,dynCall_viiiiiidd:qFa,dynCall_diddddi:rFa,dynCall_vidi:sFa,dynCall_viiddii:tFa,dynCall_diddddd:uFa,dynCall_vidd:vFa,dynCall_iiii:wFa,dynCall_viiiiiiiiiiiiiii:xFa,dynCall_viiiiiiii:yFa,dynCall_viiiiii:zFa,dynCall_diiii:AFa,dynCall_viiiiidd:BFa,dynCall_viid:CFa,dynCall_viiiidi:DFa,dynCall_di:EFa,dynCall_iiiiiiiiiii:FFa,dynCall_iid:GFa,dynCall_viiiiiii:HFa,dynCall_iiiiiiiiiiii:IFa,dynCall_viiiiiiiii:JFa,dynCall_viiiiiiiiii:KFa,dynCall_iii:LFa,dynCall_iiiiii:MFa,dynCall_diii:NFa,dynCall_iiiddii:OFa,dynCall_dii:PFa,dynCall_viiiid:QFa,dynCall_i:RFa,dynCall_iiiii:SFa,dynCall_viiid:TFa,dynCall_viii:UFa,dynCall_v:VFa,dynCall_iiiiiiiii:WFa,dynCall_iiiiid:XFa,dynCall_viiii:YFa}})
+
+
+// EMSCRIPTEN_END_ASM
+(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _IssmConfigModule=Module["_IssmConfigModule"]=asm["_IssmConfigModule"];var _EnumToStringModule=Module["_EnumToStringModule"]=asm["_EnumToStringModule"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _InterpFromMeshToMesh2dModule=Module["_InterpFromMeshToMesh2dModule"]=asm["_InterpFromMeshToMesh2dModule"];var _NodeConnectivityModule=Module["_NodeConnectivityModule"]=asm["_NodeConnectivityModule"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _IssmModule=Module["_IssmModule"]=asm["_IssmModule"];var _StringToEnumModule=Module["_StringToEnumModule"]=asm["_StringToEnumModule"];var _memset=Module["_memset"]=asm["_memset"];var _ElementConnectivityModule=Module["_ElementConnectivityModule"]=asm["_ElementConnectivityModule"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var __GLOBAL__sub_I_Mesh_cpp=Module["__GLOBAL__sub_I_Mesh_cpp"]=asm["__GLOBAL__sub_I_Mesh_cpp"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var __GLOBAL__I_000101=Module["__GLOBAL__I_000101"]=asm["__GLOBAL__I_000101"];var __GLOBAL__sub_I_iostream_cpp=Module["__GLOBAL__sub_I_iostream_cpp"]=asm["__GLOBAL__sub_I_iostream_cpp"];var _TriMeshModule=Module["_TriMeshModule"]=asm["_TriMeshModule"];var _fflush=Module["_fflush"]=asm["_fflush"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var _ContourToMeshModule=Module["_ContourToMeshModule"]=asm["_ContourToMeshModule"];var _free=Module["_free"]=asm["_free"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var _round=Module["_round"]=asm["_round"];var _memmove=Module["_memmove"]=asm["_memmove"];var __GLOBAL__sub_I_Geometry_cpp=Module["__GLOBAL__sub_I_Geometry_cpp"]=asm["__GLOBAL__sub_I_Geometry_cpp"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var _malloc=Module["_malloc"]=asm["_malloc"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=asm["dynCall_iiiiiiii"];var dynCall_iiiiiid=Module["dynCall_iiiiiid"]=asm["dynCall_iiiiiid"];var dynCall_vid=Module["dynCall_vid"]=asm["dynCall_vid"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_viiiiiiiiiid=Module["dynCall_viiiiiiiiiid"]=asm["dynCall_viiiiiiiiiid"];var dynCall_viidi=Module["dynCall_viidi"]=asm["dynCall_viidi"];var dynCall_iiiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiiii"]=asm["dynCall_iiiiiiiiiiiiii"];var dynCall_viiiiiidd=Module["dynCall_viiiiiidd"]=asm["dynCall_viiiiiidd"];var dynCall_diddddi=Module["dynCall_diddddi"]=asm["dynCall_diddddi"];var dynCall_vidi=Module["dynCall_vidi"]=asm["dynCall_vidi"];var dynCall_viiddii=Module["dynCall_viiddii"]=asm["dynCall_viiddii"];var dynCall_diddddd=Module["dynCall_diddddd"]=asm["dynCall_diddddd"];var dynCall_vidd=Module["dynCall_vidd"]=asm["dynCall_vidd"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=asm["dynCall_viiiiiiiiiiiiiii"];var dynCall_viiiiiiii=Module["dynCall_viiiiiiii"]=asm["dynCall_viiiiiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_diiii=Module["dynCall_diiii"]=asm["dynCall_diiii"];var dynCall_viiiiidd=Module["dynCall_viiiiidd"]=asm["dynCall_viiiiidd"];var dynCall_viid=Module["dynCall_viid"]=asm["dynCall_viid"];var dynCall_viiiidi=Module["dynCall_viiiidi"]=asm["dynCall_viiiidi"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=asm["dynCall_iiiiiiiiiii"];var dynCall_iid=Module["dynCall_iid"]=asm["dynCall_iid"];var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=asm["dynCall_viiiiiii"];var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=asm["dynCall_iiiiiiiiiiii"];var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=asm["dynCall_viiiiiiiii"];var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=asm["dynCall_viiiiiiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];var dynCall_diii=Module["dynCall_diii"]=asm["dynCall_diii"];var dynCall_iiiddii=Module["dynCall_iiiddii"]=asm["dynCall_iiiddii"];var dynCall_dii=Module["dynCall_dii"]=asm["dynCall_dii"];var dynCall_viiiid=Module["dynCall_viiiid"]=asm["dynCall_viiiid"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_viiid=Module["dynCall_viiid"]=asm["dynCall_viiid"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=asm["dynCall_iiiiiiiii"];var dynCall_iiiiid=Module["dynCall_iiiiid"]=asm["dynCall_iiiiid"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.establishStackSpace=asm["establishStackSpace"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){assert(runDependencies==0,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");assert(__ATPRERUN__.length==0,"cannot call main when preRun functions remain to be called");args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i<argc-1;i=i+1){argv.push(allocate(intArrayFromString(args[i]),"i8",ALLOC_NORMAL));pad()}argv.push(0);argv=allocate(argv,"i32",ALLOC_NORMAL);try{var ret=Module["_main"](argc,argv,0);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="SimulateInfiniteLoop"){Module["noExitRuntime"]=true;return}else{if(e&&typeof e==="object"&&e.stack)Module.printErr("exception thrown: "+[e,e.stack]);throw e}}finally{calledMain=true}};function run(args){args=args||Module["arguments"];if(preloadStartTime===null)preloadStartTime=Date.now();if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["stdout"]["once"]("drain",(function(){process["exit"](status)}));console.log(" ");setTimeout((function(){process["exit"](status)}),500)}else if(ENVIRONMENT_IS_SHELL&&typeof quit==="function"){quit(status)}throw new ExitStatus(status)}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=false;if(Module["noInitialRun"]){shouldRunNow=false}run()
+
+
+
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/issm-extlibraries.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/issm-extlibraries.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/issm-extlibraries.js	(revision 21239)
@@ -0,0 +1,119 @@
+/**
+ * @fileoverview gl-matrix - High performance matrix and vector operations
+ * @author Brandon Jones
+ * @author Colin MacKenzie IV
+ * @version 2.3.2
+ */
+
+/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.
+
+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. */
+
+!function(t,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define(a);else{var n=a();for(var r in n)("object"==typeof exports?exports:t)[r]=n[r]}}(this,function(){return function(t){function a(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,a),o.loaded=!0,o.exports}var n={};return a.m=t,a.c=n,a.p="",a(0)}([function(t,a,n){a.glMatrix=n(1),a.mat2=n(2),a.mat2d=n(3),a.mat3=n(4),a.mat4=n(5),a.quat=n(6),a.vec2=n(9),a.vec3=n(7),a.vec4=n(8)},function(t,a){var n={};n.EPSILON=1e-6,n.ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array,n.RANDOM=Math.random,n.ENABLE_SIMD=!1,n.SIMD_AVAILABLE=n.ARRAY_TYPE===Float32Array&&"SIMD"in this,n.USE_SIMD=n.ENABLE_SIMD&&n.SIMD_AVAILABLE,n.setMatrixArrayType=function(t){n.ARRAY_TYPE=t};var r=Math.PI/180;n.toRadian=function(t){return t*r},t.exports=n},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(4);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},o.clone=function(t){var a=new r.ARRAY_TYPE(4);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t},o.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},o.transpose=function(t,a){if(t===a){var n=a[1];t[1]=a[2],t[2]=n}else t[0]=a[0],t[1]=a[2],t[2]=a[1],t[3]=a[3];return t},o.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n*l-o*r;return u?(u=1/u,t[0]=l*u,t[1]=-r*u,t[2]=-o*u,t[3]=n*u,t):null},o.adjoint=function(t,a){var n=a[0];return t[0]=a[3],t[1]=-a[1],t[2]=-a[2],t[3]=n,t},o.determinant=function(t){return t[0]*t[3]-t[2]*t[1]},o.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=n[0],M=n[1],i=n[2],s=n[3];return t[0]=r*e+l*M,t[1]=o*e+u*M,t[2]=r*i+l*s,t[3]=o*i+u*s,t},o.mul=o.multiply,o.rotate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=Math.sin(n),M=Math.cos(n);return t[0]=r*M+l*e,t[1]=o*M+u*e,t[2]=r*-e+l*M,t[3]=o*-e+u*M,t},o.scale=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=n[0],M=n[1];return t[0]=r*e,t[1]=o*e,t[2]=l*M,t[3]=u*M,t},o.fromRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=n,t[2]=-n,t[3]=r,t},o.fromScaling=function(t,a){return t[0]=a[0],t[1]=0,t[2]=0,t[3]=a[1],t},o.str=function(t){return"mat2("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},o.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2))},o.LDU=function(t,a,n,r){return t[2]=r[2]/r[0],n[0]=r[0],n[1]=r[1],n[3]=r[3]-t[2]*n[1],[t,a,n]},t.exports=o},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(6);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},o.clone=function(t){var a=new r.ARRAY_TYPE(6);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=t[4],a[5]=t[5],a},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t},o.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},o.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=n*l-r*o;return M?(M=1/M,t[0]=l*M,t[1]=-r*M,t[2]=-o*M,t[3]=n*M,t[4]=(o*e-l*u)*M,t[5]=(r*u-n*e)*M,t):null},o.determinant=function(t){return t[0]*t[3]-t[1]*t[2]},o.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=n[0],s=n[1],c=n[2],D=n[3],S=n[4],I=n[5];return t[0]=r*i+l*s,t[1]=o*i+u*s,t[2]=r*c+l*D,t[3]=o*c+u*D,t[4]=r*S+l*I+e,t[5]=o*S+u*I+M,t},o.mul=o.multiply,o.rotate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=Math.sin(n),s=Math.cos(n);return t[0]=r*s+l*i,t[1]=o*s+u*i,t[2]=r*-i+l*s,t[3]=o*-i+u*s,t[4]=e,t[5]=M,t},o.scale=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=n[0],s=n[1];return t[0]=r*i,t[1]=o*i,t[2]=l*s,t[3]=u*s,t[4]=e,t[5]=M,t},o.translate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=n[0],s=n[1];return t[0]=r,t[1]=o,t[2]=l,t[3]=u,t[4]=r*i+l*s+e,t[5]=o*i+u*s+M,t},o.fromRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=n,t[2]=-n,t[3]=r,t[4]=0,t[5]=0,t},o.fromScaling=function(t,a){return t[0]=a[0],t[1]=0,t[2]=0,t[3]=a[1],t[4]=0,t[5]=0,t},o.fromTranslation=function(t,a){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=a[0],t[5]=a[1],t},o.str=function(t){return"mat2d("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+")"},o.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+1)},t.exports=o},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},o.fromMat4=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[4],t[4]=a[5],t[5]=a[6],t[6]=a[8],t[7]=a[9],t[8]=a[10],t},o.clone=function(t){var a=new r.ARRAY_TYPE(9);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=t[4],a[5]=t[5],a[6]=t[6],a[7]=t[7],a[8]=t[8],a},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t},o.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},o.transpose=function(t,a){if(t===a){var n=a[1],r=a[2],o=a[5];t[1]=a[3],t[2]=a[6],t[3]=n,t[5]=a[7],t[6]=r,t[7]=o}else t[0]=a[0],t[1]=a[3],t[2]=a[6],t[3]=a[1],t[4]=a[4],t[5]=a[7],t[6]=a[2],t[7]=a[5],t[8]=a[8];return t},o.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8],c=s*u-e*i,D=-s*l+e*M,S=i*l-u*M,I=n*c+r*D+o*S;return I?(I=1/I,t[0]=c*I,t[1]=(-s*r+o*i)*I,t[2]=(e*r-o*u)*I,t[3]=D*I,t[4]=(s*n-o*M)*I,t[5]=(-e*n+o*l)*I,t[6]=S*I,t[7]=(-i*n+r*M)*I,t[8]=(u*n-r*l)*I,t):null},o.adjoint=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8];return t[0]=u*s-e*i,t[1]=o*i-r*s,t[2]=r*e-o*u,t[3]=e*M-l*s,t[4]=n*s-o*M,t[5]=o*l-n*e,t[6]=l*i-u*M,t[7]=r*M-n*i,t[8]=n*u-r*l,t},o.determinant=function(t){var a=t[0],n=t[1],r=t[2],o=t[3],l=t[4],u=t[5],e=t[6],M=t[7],i=t[8];return a*(i*l-u*M)+n*(-i*o+u*e)+r*(M*o-l*e)},o.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=n[0],S=n[1],I=n[2],x=n[3],f=n[4],F=n[5],m=n[6],h=n[7],d=n[8];return t[0]=D*r+S*u+I*i,t[1]=D*o+S*e+I*s,t[2]=D*l+S*M+I*c,t[3]=x*r+f*u+F*i,t[4]=x*o+f*e+F*s,t[5]=x*l+f*M+F*c,t[6]=m*r+h*u+d*i,t[7]=m*o+h*e+d*s,t[8]=m*l+h*M+d*c,t},o.mul=o.multiply,o.translate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=n[0],S=n[1];return t[0]=r,t[1]=o,t[2]=l,t[3]=u,t[4]=e,t[5]=M,t[6]=D*r+S*u+i,t[7]=D*o+S*e+s,t[8]=D*l+S*M+c,t},o.rotate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=Math.sin(n),S=Math.cos(n);return t[0]=S*r+D*u,t[1]=S*o+D*e,t[2]=S*l+D*M,t[3]=S*u-D*r,t[4]=S*e-D*o,t[5]=S*M-D*l,t[6]=i,t[7]=s,t[8]=c,t},o.scale=function(t,a,n){var r=n[0],o=n[1];return t[0]=r*a[0],t[1]=r*a[1],t[2]=r*a[2],t[3]=o*a[3],t[4]=o*a[4],t[5]=o*a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t},o.fromTranslation=function(t,a){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=a[0],t[7]=a[1],t[8]=1,t},o.fromRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=n,t[2]=0,t[3]=-n,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},o.fromScaling=function(t,a){return t[0]=a[0],t[1]=0,t[2]=0,t[3]=0,t[4]=a[1],t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},o.fromMat2d=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=0,t[3]=a[2],t[4]=a[3],t[5]=0,t[6]=a[4],t[7]=a[5],t[8]=1,t},o.fromQuat=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n+n,e=r+r,M=o+o,i=n*u,s=r*u,c=r*e,D=o*u,S=o*e,I=o*M,x=l*u,f=l*e,F=l*M;return t[0]=1-c-I,t[3]=s-F,t[6]=D+f,t[1]=s+F,t[4]=1-i-I,t[7]=S-x,t[2]=D-f,t[5]=S+x,t[8]=1-i-c,t},o.normalFromMat4=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8],c=a[9],D=a[10],S=a[11],I=a[12],x=a[13],f=a[14],F=a[15],m=n*e-r*u,h=n*M-o*u,d=n*i-l*u,v=r*M-o*e,z=r*i-l*e,p=o*i-l*M,w=s*x-c*I,A=s*f-D*I,R=s*F-S*I,b=c*f-D*x,Y=c*F-S*x,q=D*F-S*f,y=m*q-h*Y+d*b+v*R-z*A+p*w;return y?(y=1/y,t[0]=(e*q-M*Y+i*b)*y,t[1]=(M*R-u*q-i*A)*y,t[2]=(u*Y-e*R+i*w)*y,t[3]=(o*Y-r*q-l*b)*y,t[4]=(n*q-o*R+l*A)*y,t[5]=(r*R-n*Y-l*w)*y,t[6]=(x*p-f*z+F*v)*y,t[7]=(f*d-I*p-F*h)*y,t[8]=(I*z-x*d+F*m)*y,t):null},o.str=function(t){return"mat3("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+")"},o.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+Math.pow(t[6],2)+Math.pow(t[7],2)+Math.pow(t[8],2))},t.exports=o},function(t,a,n){var r=n(1),o={scalar:{},SIMD:{}};o.create=function(){var t=new r.ARRAY_TYPE(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.clone=function(t){var a=new r.ARRAY_TYPE(16);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=t[4],a[5]=t[5],a[6]=t[6],a[7]=t[7],a[8]=t[8],a[9]=t[9],a[10]=t[10],a[11]=t[11],a[12]=t[12],a[13]=t[13],a[14]=t[14],a[15]=t[15],a},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15],t},o.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.scalar.transpose=function(t,a){if(t===a){var n=a[1],r=a[2],o=a[3],l=a[6],u=a[7],e=a[11];t[1]=a[4],t[2]=a[8],t[3]=a[12],t[4]=n,t[6]=a[9],t[7]=a[13],t[8]=r,t[9]=l,t[11]=a[14],t[12]=o,t[13]=u,t[14]=e}else t[0]=a[0],t[1]=a[4],t[2]=a[8],t[3]=a[12],t[4]=a[1],t[5]=a[5],t[6]=a[9],t[7]=a[13],t[8]=a[2],t[9]=a[6],t[10]=a[10],t[11]=a[14],t[12]=a[3],t[13]=a[7],t[14]=a[11],t[15]=a[15];return t},o.SIMD.transpose=function(t,a){var n,r,o,l,u,e,M,i,s,c;return n=SIMD.Float32x4.load(a,0),r=SIMD.Float32x4.load(a,4),o=SIMD.Float32x4.load(a,8),l=SIMD.Float32x4.load(a,12),u=SIMD.Float32x4.shuffle(n,r,0,1,4,5),e=SIMD.Float32x4.shuffle(o,l,0,1,4,5),M=SIMD.Float32x4.shuffle(u,e,0,2,4,6),i=SIMD.Float32x4.shuffle(u,e,1,3,5,7),SIMD.Float32x4.store(t,0,M),SIMD.Float32x4.store(t,4,i),u=SIMD.Float32x4.shuffle(n,r,2,3,6,7),e=SIMD.Float32x4.shuffle(o,l,2,3,6,7),s=SIMD.Float32x4.shuffle(u,e,0,2,4,6),c=SIMD.Float32x4.shuffle(u,e,1,3,5,7),SIMD.Float32x4.store(t,8,s),SIMD.Float32x4.store(t,12,c),t},o.transpose=r.USE_SIMD?o.SIMD.transpose:o.scalar.transpose,o.scalar.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8],c=a[9],D=a[10],S=a[11],I=a[12],x=a[13],f=a[14],F=a[15],m=n*e-r*u,h=n*M-o*u,d=n*i-l*u,v=r*M-o*e,z=r*i-l*e,p=o*i-l*M,w=s*x-c*I,A=s*f-D*I,R=s*F-S*I,b=c*f-D*x,Y=c*F-S*x,q=D*F-S*f,y=m*q-h*Y+d*b+v*R-z*A+p*w;return y?(y=1/y,t[0]=(e*q-M*Y+i*b)*y,t[1]=(o*Y-r*q-l*b)*y,t[2]=(x*p-f*z+F*v)*y,t[3]=(D*z-c*p-S*v)*y,t[4]=(M*R-u*q-i*A)*y,t[5]=(n*q-o*R+l*A)*y,t[6]=(f*d-I*p-F*h)*y,t[7]=(s*p-D*d+S*h)*y,t[8]=(u*Y-e*R+i*w)*y,t[9]=(r*R-n*Y-l*w)*y,t[10]=(I*z-x*d+F*m)*y,t[11]=(c*d-s*z-S*m)*y,t[12]=(e*A-u*b-M*w)*y,t[13]=(n*b-r*A+o*w)*y,t[14]=(x*h-I*v-f*m)*y,t[15]=(s*v-c*h+D*m)*y,t):null},o.SIMD.invert=function(t,a){var n,r,o,l,u,e,M,i,s,c,D=SIMD.Float32x4.load(a,0),S=SIMD.Float32x4.load(a,4),I=SIMD.Float32x4.load(a,8),x=SIMD.Float32x4.load(a,12);return u=SIMD.Float32x4.shuffle(D,S,0,1,4,5),r=SIMD.Float32x4.shuffle(I,x,0,1,4,5),n=SIMD.Float32x4.shuffle(u,r,0,2,4,6),r=SIMD.Float32x4.shuffle(r,u,1,3,5,7),u=SIMD.Float32x4.shuffle(D,S,2,3,6,7),l=SIMD.Float32x4.shuffle(I,x,2,3,6,7),o=SIMD.Float32x4.shuffle(u,l,0,2,4,6),l=SIMD.Float32x4.shuffle(l,u,1,3,5,7),u=SIMD.Float32x4.mul(o,l),u=SIMD.Float32x4.swizzle(u,1,0,3,2),e=SIMD.Float32x4.mul(r,u),M=SIMD.Float32x4.mul(n,u),u=SIMD.Float32x4.swizzle(u,2,3,0,1),e=SIMD.Float32x4.sub(SIMD.Float32x4.mul(r,u),e),M=SIMD.Float32x4.sub(SIMD.Float32x4.mul(n,u),M),M=SIMD.Float32x4.swizzle(M,2,3,0,1),u=SIMD.Float32x4.mul(r,o),u=SIMD.Float32x4.swizzle(u,1,0,3,2),e=SIMD.Float32x4.add(SIMD.Float32x4.mul(l,u),e),s=SIMD.Float32x4.mul(n,u),u=SIMD.Float32x4.swizzle(u,2,3,0,1),e=SIMD.Float32x4.sub(e,SIMD.Float32x4.mul(l,u)),s=SIMD.Float32x4.sub(SIMD.Float32x4.mul(n,u),s),s=SIMD.Float32x4.swizzle(s,2,3,0,1),u=SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(r,2,3,0,1),l),u=SIMD.Float32x4.swizzle(u,1,0,3,2),o=SIMD.Float32x4.swizzle(o,2,3,0,1),e=SIMD.Float32x4.add(SIMD.Float32x4.mul(o,u),e),i=SIMD.Float32x4.mul(n,u),u=SIMD.Float32x4.swizzle(u,2,3,0,1),e=SIMD.Float32x4.sub(e,SIMD.Float32x4.mul(o,u)),i=SIMD.Float32x4.sub(SIMD.Float32x4.mul(n,u),i),i=SIMD.Float32x4.swizzle(i,2,3,0,1),u=SIMD.Float32x4.mul(n,r),u=SIMD.Float32x4.swizzle(u,1,0,3,2),i=SIMD.Float32x4.add(SIMD.Float32x4.mul(l,u),i),s=SIMD.Float32x4.sub(SIMD.Float32x4.mul(o,u),s),u=SIMD.Float32x4.swizzle(u,2,3,0,1),i=SIMD.Float32x4.sub(SIMD.Float32x4.mul(l,u),i),s=SIMD.Float32x4.sub(s,SIMD.Float32x4.mul(o,u)),u=SIMD.Float32x4.mul(n,l),u=SIMD.Float32x4.swizzle(u,1,0,3,2),M=SIMD.Float32x4.sub(M,SIMD.Float32x4.mul(o,u)),i=SIMD.Float32x4.add(SIMD.Float32x4.mul(r,u),i),u=SIMD.Float32x4.swizzle(u,2,3,0,1),M=SIMD.Float32x4.add(SIMD.Float32x4.mul(o,u),M),i=SIMD.Float32x4.sub(i,SIMD.Float32x4.mul(r,u)),u=SIMD.Float32x4.mul(n,o),u=SIMD.Float32x4.swizzle(u,1,0,3,2),M=SIMD.Float32x4.add(SIMD.Float32x4.mul(l,u),M),s=SIMD.Float32x4.sub(s,SIMD.Float32x4.mul(r,u)),u=SIMD.Float32x4.swizzle(u,2,3,0,1),M=SIMD.Float32x4.sub(M,SIMD.Float32x4.mul(l,u)),s=SIMD.Float32x4.add(SIMD.Float32x4.mul(r,u),s),c=SIMD.Float32x4.mul(n,e),c=SIMD.Float32x4.add(SIMD.Float32x4.swizzle(c,2,3,0,1),c),c=SIMD.Float32x4.add(SIMD.Float32x4.swizzle(c,1,0,3,2),c),u=SIMD.Float32x4.reciprocalApproximation(c),c=SIMD.Float32x4.sub(SIMD.Float32x4.add(u,u),SIMD.Float32x4.mul(c,SIMD.Float32x4.mul(u,u))),(c=SIMD.Float32x4.swizzle(c,0,0,0,0))?(SIMD.Float32x4.store(t,0,SIMD.Float32x4.mul(c,e)),SIMD.Float32x4.store(t,4,SIMD.Float32x4.mul(c,M)),SIMD.Float32x4.store(t,8,SIMD.Float32x4.mul(c,i)),SIMD.Float32x4.store(t,12,SIMD.Float32x4.mul(c,s)),t):null},o.invert=r.USE_SIMD?o.SIMD.invert:o.scalar.invert,o.scalar.adjoint=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8],c=a[9],D=a[10],S=a[11],I=a[12],x=a[13],f=a[14],F=a[15];return t[0]=e*(D*F-S*f)-c*(M*F-i*f)+x*(M*S-i*D),t[1]=-(r*(D*F-S*f)-c*(o*F-l*f)+x*(o*S-l*D)),t[2]=r*(M*F-i*f)-e*(o*F-l*f)+x*(o*i-l*M),t[3]=-(r*(M*S-i*D)-e*(o*S-l*D)+c*(o*i-l*M)),t[4]=-(u*(D*F-S*f)-s*(M*F-i*f)+I*(M*S-i*D)),t[5]=n*(D*F-S*f)-s*(o*F-l*f)+I*(o*S-l*D),t[6]=-(n*(M*F-i*f)-u*(o*F-l*f)+I*(o*i-l*M)),t[7]=n*(M*S-i*D)-u*(o*S-l*D)+s*(o*i-l*M),t[8]=u*(c*F-S*x)-s*(e*F-i*x)+I*(e*S-i*c),t[9]=-(n*(c*F-S*x)-s*(r*F-l*x)+I*(r*S-l*c)),t[10]=n*(e*F-i*x)-u*(r*F-l*x)+I*(r*i-l*e),t[11]=-(n*(e*S-i*c)-u*(r*S-l*c)+s*(r*i-l*e)),t[12]=-(u*(c*f-D*x)-s*(e*f-M*x)+I*(e*D-M*c)),t[13]=n*(c*f-D*x)-s*(r*f-o*x)+I*(r*D-o*c),t[14]=-(n*(e*f-M*x)-u*(r*f-o*x)+I*(r*M-o*e)),t[15]=n*(e*D-M*c)-u*(r*D-o*c)+s*(r*M-o*e),t},o.SIMD.adjoint=function(t,a){var n,r,o,l,u,e,M,i,s,c,D,S,I,n=SIMD.Float32x4.load(a,0),r=SIMD.Float32x4.load(a,4),o=SIMD.Float32x4.load(a,8),l=SIMD.Float32x4.load(a,12);return s=SIMD.Float32x4.shuffle(n,r,0,1,4,5),e=SIMD.Float32x4.shuffle(o,l,0,1,4,5),u=SIMD.Float32x4.shuffle(s,e,0,2,4,6),e=SIMD.Float32x4.shuffle(e,s,1,3,5,7),s=SIMD.Float32x4.shuffle(n,r,2,3,6,7),i=SIMD.Float32x4.shuffle(o,l,2,3,6,7),M=SIMD.Float32x4.shuffle(s,i,0,2,4,6),i=SIMD.Float32x4.shuffle(i,s,1,3,5,7),s=SIMD.Float32x4.mul(M,i),s=SIMD.Float32x4.swizzle(s,1,0,3,2),c=SIMD.Float32x4.mul(e,s),D=SIMD.Float32x4.mul(u,s),s=SIMD.Float32x4.swizzle(s,2,3,0,1),c=SIMD.Float32x4.sub(SIMD.Float32x4.mul(e,s),c),D=SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,s),D),D=SIMD.Float32x4.swizzle(D,2,3,0,1),s=SIMD.Float32x4.mul(e,M),s=SIMD.Float32x4.swizzle(s,1,0,3,2),c=SIMD.Float32x4.add(SIMD.Float32x4.mul(i,s),c),I=SIMD.Float32x4.mul(u,s),s=SIMD.Float32x4.swizzle(s,2,3,0,1),c=SIMD.Float32x4.sub(c,SIMD.Float32x4.mul(i,s)),I=SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,s),I),I=SIMD.Float32x4.swizzle(I,2,3,0,1),s=SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,2,3,0,1),i),s=SIMD.Float32x4.swizzle(s,1,0,3,2),M=SIMD.Float32x4.swizzle(M,2,3,0,1),c=SIMD.Float32x4.add(SIMD.Float32x4.mul(M,s),c),S=SIMD.Float32x4.mul(u,s),s=SIMD.Float32x4.swizzle(s,2,3,0,1),c=SIMD.Float32x4.sub(c,SIMD.Float32x4.mul(M,s)),S=SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,s),S),S=SIMD.Float32x4.swizzle(S,2,3,0,1),s=SIMD.Float32x4.mul(u,e),s=SIMD.Float32x4.swizzle(s,1,0,3,2),S=SIMD.Float32x4.add(SIMD.Float32x4.mul(i,s),S),I=SIMD.Float32x4.sub(SIMD.Float32x4.mul(M,s),I),s=SIMD.Float32x4.swizzle(s,2,3,0,1),S=SIMD.Float32x4.sub(SIMD.Float32x4.mul(i,s),S),I=SIMD.Float32x4.sub(I,SIMD.Float32x4.mul(M,s)),s=SIMD.Float32x4.mul(u,i),s=SIMD.Float32x4.swizzle(s,1,0,3,2),D=SIMD.Float32x4.sub(D,SIMD.Float32x4.mul(M,s)),S=SIMD.Float32x4.add(SIMD.Float32x4.mul(e,s),S),s=SIMD.Float32x4.swizzle(s,2,3,0,1),D=SIMD.Float32x4.add(SIMD.Float32x4.mul(M,s),D),S=SIMD.Float32x4.sub(S,SIMD.Float32x4.mul(e,s)),s=SIMD.Float32x4.mul(u,M),s=SIMD.Float32x4.swizzle(s,1,0,3,2),D=SIMD.Float32x4.add(SIMD.Float32x4.mul(i,s),D),I=SIMD.Float32x4.sub(I,SIMD.Float32x4.mul(e,s)),s=SIMD.Float32x4.swizzle(s,2,3,0,1),D=SIMD.Float32x4.sub(D,SIMD.Float32x4.mul(i,s)),I=SIMD.Float32x4.add(SIMD.Float32x4.mul(e,s),I),SIMD.Float32x4.store(t,0,c),SIMD.Float32x4.store(t,4,D),SIMD.Float32x4.store(t,8,S),SIMD.Float32x4.store(t,12,I),t},o.adjoint=r.USE_SIMD?o.SIMD.adjoint:o.scalar.adjoint,o.determinant=function(t){var a=t[0],n=t[1],r=t[2],o=t[3],l=t[4],u=t[5],e=t[6],M=t[7],i=t[8],s=t[9],c=t[10],D=t[11],S=t[12],I=t[13],x=t[14],f=t[15],F=a*u-n*l,m=a*e-r*l,h=a*M-o*l,d=n*e-r*u,v=n*M-o*u,z=r*M-o*e,p=i*I-s*S,w=i*x-c*S,A=i*f-D*S,R=s*x-c*I,b=s*f-D*I,Y=c*f-D*x;return F*Y-m*b+h*R+d*A-v*w+z*p},o.SIMD.multiply=function(t,a,n){var r=SIMD.Float32x4.load(a,0),o=SIMD.Float32x4.load(a,4),l=SIMD.Float32x4.load(a,8),u=SIMD.Float32x4.load(a,12),e=SIMD.Float32x4.load(n,0),M=SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,0,0,0,0),r),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,1,1,1,1),o),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,2,2,2,2),l),SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,3,3,3,3),u))));SIMD.Float32x4.store(t,0,M);var i=SIMD.Float32x4.load(n,4),s=SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(i,0,0,0,0),r),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(i,1,1,1,1),o),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(i,2,2,2,2),l),SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(i,3,3,3,3),u))));SIMD.Float32x4.store(t,4,s);var c=SIMD.Float32x4.load(n,8),D=SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(c,0,0,0,0),r),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(c,1,1,1,1),o),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(c,2,2,2,2),l),SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(c,3,3,3,3),u))));SIMD.Float32x4.store(t,8,D);var S=SIMD.Float32x4.load(n,12),I=SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(S,0,0,0,0),r),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(S,1,1,1,1),o),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(S,2,2,2,2),l),SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(S,3,3,3,3),u))));return SIMD.Float32x4.store(t,12,I),t},o.scalar.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=a[9],S=a[10],I=a[11],x=a[12],f=a[13],F=a[14],m=a[15],h=n[0],d=n[1],v=n[2],z=n[3];return t[0]=h*r+d*e+v*c+z*x,t[1]=h*o+d*M+v*D+z*f,t[2]=h*l+d*i+v*S+z*F,t[3]=h*u+d*s+v*I+z*m,h=n[4],d=n[5],v=n[6],z=n[7],t[4]=h*r+d*e+v*c+z*x,t[5]=h*o+d*M+v*D+z*f,t[6]=h*l+d*i+v*S+z*F,t[7]=h*u+d*s+v*I+z*m,h=n[8],d=n[9],v=n[10],z=n[11],t[8]=h*r+d*e+v*c+z*x,t[9]=h*o+d*M+v*D+z*f,t[10]=h*l+d*i+v*S+z*F,t[11]=h*u+d*s+v*I+z*m,h=n[12],d=n[13],v=n[14],z=n[15],t[12]=h*r+d*e+v*c+z*x,t[13]=h*o+d*M+v*D+z*f,t[14]=h*l+d*i+v*S+z*F,t[15]=h*u+d*s+v*I+z*m,t},o.multiply=r.USE_SIMD?o.SIMD.multiply:o.scalar.multiply,o.mul=o.multiply,o.scalar.translate=function(t,a,n){var r,o,l,u,e,M,i,s,c,D,S,I,x=n[0],f=n[1],F=n[2];return a===t?(t[12]=a[0]*x+a[4]*f+a[8]*F+a[12],t[13]=a[1]*x+a[5]*f+a[9]*F+a[13],t[14]=a[2]*x+a[6]*f+a[10]*F+a[14],t[15]=a[3]*x+a[7]*f+a[11]*F+a[15]):(r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=a[9],S=a[10],I=a[11],t[0]=r,t[1]=o,t[2]=l,t[3]=u,t[4]=e,t[5]=M,t[6]=i,t[7]=s,t[8]=c,t[9]=D,t[10]=S,t[11]=I,t[12]=r*x+e*f+c*F+a[12],t[13]=o*x+M*f+D*F+a[13],t[14]=l*x+i*f+S*F+a[14],t[15]=u*x+s*f+I*F+a[15]),t},o.SIMD.translate=function(t,a,n){var r=SIMD.Float32x4.load(a,0),o=SIMD.Float32x4.load(a,4),l=SIMD.Float32x4.load(a,8),u=SIMD.Float32x4.load(a,12),e=SIMD.Float32x4(n[0],n[1],n[2],0);a!==t&&(t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11]),r=SIMD.Float32x4.mul(r,SIMD.Float32x4.swizzle(e,0,0,0,0)),o=SIMD.Float32x4.mul(o,SIMD.Float32x4.swizzle(e,1,1,1,1)),l=SIMD.Float32x4.mul(l,SIMD.Float32x4.swizzle(e,2,2,2,2));var M=SIMD.Float32x4.add(r,SIMD.Float32x4.add(o,SIMD.Float32x4.add(l,u)));return SIMD.Float32x4.store(t,12,M),t},o.translate=r.USE_SIMD?o.SIMD.translate:o.scalar.translate,o.scalar.scale=function(t,a,n){var r=n[0],o=n[1],l=n[2];return t[0]=a[0]*r,t[1]=a[1]*r,t[2]=a[2]*r,t[3]=a[3]*r,t[4]=a[4]*o,t[5]=a[5]*o,t[6]=a[6]*o,t[7]=a[7]*o,t[8]=a[8]*l,t[9]=a[9]*l,t[10]=a[10]*l,t[11]=a[11]*l,t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15],t},o.SIMD.scale=function(t,a,n){var r,o,l,u=SIMD.Float32x4(n[0],n[1],n[2],0);return r=SIMD.Float32x4.load(a,0),SIMD.Float32x4.store(t,0,SIMD.Float32x4.mul(r,SIMD.Float32x4.swizzle(u,0,0,0,0))),o=SIMD.Float32x4.load(a,4),SIMD.Float32x4.store(t,4,SIMD.Float32x4.mul(o,SIMD.Float32x4.swizzle(u,1,1,1,1))),l=SIMD.Float32x4.load(a,8),SIMD.Float32x4.store(t,8,SIMD.Float32x4.mul(l,SIMD.Float32x4.swizzle(u,2,2,2,2))),t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15],t},o.scale=r.USE_SIMD?o.SIMD.scale:o.scalar.scale,o.rotate=function(t,a,n,o){var l,u,e,M,i,s,c,D,S,I,x,f,F,m,h,d,v,z,p,w,A,R,b,Y,q=o[0],y=o[1],E=o[2],g=Math.sqrt(q*q+y*y+E*E);return Math.abs(g)<r.EPSILON?null:(g=1/g,q*=g,y*=g,E*=g,l=Math.sin(n),u=Math.cos(n),e=1-u,M=a[0],i=a[1],s=a[2],c=a[3],D=a[4],S=a[5],I=a[6],x=a[7],f=a[8],F=a[9],m=a[10],h=a[11],d=q*q*e+u,v=y*q*e+E*l,z=E*q*e-y*l,p=q*y*e-E*l,w=y*y*e+u,A=E*y*e+q*l,R=q*E*e+y*l,b=y*E*e-q*l,Y=E*E*e+u,t[0]=M*d+D*v+f*z,t[1]=i*d+S*v+F*z,t[2]=s*d+I*v+m*z,t[3]=c*d+x*v+h*z,t[4]=M*p+D*w+f*A,t[5]=i*p+S*w+F*A,t[6]=s*p+I*w+m*A,t[7]=c*p+x*w+h*A,t[8]=M*R+D*b+f*Y,t[9]=i*R+S*b+F*Y,t[10]=s*R+I*b+m*Y,t[11]=c*R+x*b+h*Y,a!==t&&(t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t)},o.scalar.rotateX=function(t,a,n){var r=Math.sin(n),o=Math.cos(n),l=a[4],u=a[5],e=a[6],M=a[7],i=a[8],s=a[9],c=a[10],D=a[11];return a!==t&&(t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t[4]=l*o+i*r,t[5]=u*o+s*r,t[6]=e*o+c*r,t[7]=M*o+D*r,t[8]=i*o-l*r,t[9]=s*o-u*r,t[10]=c*o-e*r,t[11]=D*o-M*r,t},o.SIMD.rotateX=function(t,a,n){var r=SIMD.Float32x4.splat(Math.sin(n)),o=SIMD.Float32x4.splat(Math.cos(n));a!==t&&(t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]);var l=SIMD.Float32x4.load(a,4),u=SIMD.Float32x4.load(a,8);return SIMD.Float32x4.store(t,4,SIMD.Float32x4.add(SIMD.Float32x4.mul(l,o),SIMD.Float32x4.mul(u,r))),SIMD.Float32x4.store(t,8,SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,o),SIMD.Float32x4.mul(l,r))),t},o.rotateX=r.USE_SIMD?o.SIMD.rotateX:o.scalar.rotateX,o.scalar.rotateY=function(t,a,n){var r=Math.sin(n),o=Math.cos(n),l=a[0],u=a[1],e=a[2],M=a[3],i=a[8],s=a[9],c=a[10],D=a[11];return a!==t&&(t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t[0]=l*o-i*r,t[1]=u*o-s*r,t[2]=e*o-c*r,t[3]=M*o-D*r,t[8]=l*r+i*o,t[9]=u*r+s*o,t[10]=e*r+c*o,t[11]=M*r+D*o,t},o.SIMD.rotateY=function(t,a,n){var r=SIMD.Float32x4.splat(Math.sin(n)),o=SIMD.Float32x4.splat(Math.cos(n));a!==t&&(t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]);var l=SIMD.Float32x4.load(a,0),u=SIMD.Float32x4.load(a,8);return SIMD.Float32x4.store(t,0,SIMD.Float32x4.sub(SIMD.Float32x4.mul(l,o),SIMD.Float32x4.mul(u,r))),SIMD.Float32x4.store(t,8,SIMD.Float32x4.add(SIMD.Float32x4.mul(l,r),SIMD.Float32x4.mul(u,o))),t},o.rotateY=r.USE_SIMD?o.SIMD.rotateY:o.scalar.rotateY,o.scalar.rotateZ=function(t,a,n){var r=Math.sin(n),o=Math.cos(n),l=a[0],u=a[1],e=a[2],M=a[3],i=a[4],s=a[5],c=a[6],D=a[7];return a!==t&&(t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t[0]=l*o+i*r,t[1]=u*o+s*r,t[2]=e*o+c*r,t[3]=M*o+D*r,t[4]=i*o-l*r,t[5]=s*o-u*r,t[6]=c*o-e*r,t[7]=D*o-M*r,t},o.SIMD.rotateZ=function(t,a,n){var r=SIMD.Float32x4.splat(Math.sin(n)),o=SIMD.Float32x4.splat(Math.cos(n));a!==t&&(t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]);var l=SIMD.Float32x4.load(a,0),u=SIMD.Float32x4.load(a,4);return SIMD.Float32x4.store(t,0,SIMD.Float32x4.add(SIMD.Float32x4.mul(l,o),SIMD.Float32x4.mul(u,r))),SIMD.Float32x4.store(t,4,SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,o),SIMD.Float32x4.mul(l,r))),t},o.rotateZ=r.USE_SIMD?o.SIMD.rotateZ:o.scalar.rotateZ,o.fromTranslation=function(t,a){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=a[0],t[13]=a[1],t[14]=a[2],t[15]=1,t},o.fromScaling=function(t,a){return t[0]=a[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=a[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.fromRotation=function(t,a,n){var o,l,u,e=n[0],M=n[1],i=n[2],s=Math.sqrt(e*e+M*M+i*i);return Math.abs(s)<r.EPSILON?null:(s=1/s,e*=s,M*=s,i*=s,o=Math.sin(a),l=Math.cos(a),u=1-l,t[0]=e*e*u+l,t[1]=M*e*u+i*o,t[2]=i*e*u-M*o,t[3]=0,t[4]=e*M*u-i*o,t[5]=M*M*u+l,t[6]=i*M*u+e*o,t[7]=0,t[8]=e*i*u+M*o,t[9]=M*i*u-e*o,t[10]=i*i*u+l,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t)},o.fromXRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=r,t[6]=n,t[7]=0,t[8]=0,t[9]=-n,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.fromYRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=0,t[2]=-n,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=n,t[9]=0,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.fromZRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=n,t[2]=0,t[3]=0,t[4]=-n,t[5]=r,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.fromRotationTranslation=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=r+r,M=o+o,i=l+l,s=r*e,c=r*M,D=r*i,S=o*M,I=o*i,x=l*i,f=u*e,F=u*M,m=u*i;return t[0]=1-(S+x),t[1]=c+m,t[2]=D-F,t[3]=0,t[4]=c-m,t[5]=1-(s+x),t[6]=I+f,t[7]=0,t[8]=D+F,t[9]=I-f,t[10]=1-(s+S),t[11]=0,t[12]=n[0],t[13]=n[1],t[14]=n[2],t[15]=1,t},o.fromRotationTranslationScale=function(t,a,n,r){var o=a[0],l=a[1],u=a[2],e=a[3],M=o+o,i=l+l,s=u+u,c=o*M,D=o*i,S=o*s,I=l*i,x=l*s,f=u*s,F=e*M,m=e*i,h=e*s,d=r[0],v=r[1],z=r[2];return t[0]=(1-(I+f))*d,t[1]=(D+h)*d,t[2]=(S-m)*d,t[3]=0,t[4]=(D-h)*v,t[5]=(1-(c+f))*v,t[6]=(x+F)*v,t[7]=0,t[8]=(S+m)*z,t[9]=(x-F)*z,t[10]=(1-(c+I))*z,t[11]=0,t[12]=n[0],t[13]=n[1],t[14]=n[2],t[15]=1,t},o.fromRotationTranslationScaleOrigin=function(t,a,n,r,o){var l=a[0],u=a[1],e=a[2],M=a[3],i=l+l,s=u+u,c=e+e,D=l*i,S=l*s,I=l*c,x=u*s,f=u*c,F=e*c,m=M*i,h=M*s,d=M*c,v=r[0],z=r[1],p=r[2],w=o[0],A=o[1],R=o[2];return t[0]=(1-(x+F))*v,t[1]=(S+d)*v,t[2]=(I-h)*v,t[3]=0,t[4]=(S-d)*z,t[5]=(1-(D+F))*z,t[6]=(f+m)*z,t[7]=0,t[8]=(I+h)*p,t[9]=(f-m)*p,t[10]=(1-(D+x))*p,t[11]=0,t[12]=n[0]+w-(t[0]*w+t[4]*A+t[8]*R),t[13]=n[1]+A-(t[1]*w+t[5]*A+t[9]*R),t[14]=n[2]+R-(t[2]*w+t[6]*A+t[10]*R),t[15]=1,t},o.fromQuat=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n+n,e=r+r,M=o+o,i=n*u,s=r*u,c=r*e,D=o*u,S=o*e,I=o*M,x=l*u,f=l*e,F=l*M;return t[0]=1-c-I,t[1]=s+F,t[2]=D-f,t[3]=0,t[4]=s-F,t[5]=1-i-I,t[6]=S+x,t[7]=0,t[8]=D+f,t[9]=S-x,t[10]=1-i-c,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.frustum=function(t,a,n,r,o,l,u){var e=1/(n-a),M=1/(o-r),i=1/(l-u);return t[0]=2*l*e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*l*M,t[6]=0,t[7]=0,t[8]=(n+a)*e,t[9]=(o+r)*M,t[10]=(u+l)*i,t[11]=-1,t[12]=0,t[13]=0,t[14]=u*l*2*i,t[15]=0,t},o.perspective=function(t,a,n,r,o){var l=1/Math.tan(a/2),u=1/(r-o);return t[0]=l/n,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(o+r)*u,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*o*r*u,t[15]=0,t},o.perspectiveFromFieldOfView=function(t,a,n,r){var o=Math.tan(a.upDegrees*Math.PI/180),l=Math.tan(a.downDegrees*Math.PI/180),u=Math.tan(a.leftDegrees*Math.PI/180),e=Math.tan(a.rightDegrees*Math.PI/180),M=2/(u+e),i=2/(o+l);return t[0]=M,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=i,t[6]=0,t[7]=0,t[8]=-((u-e)*M*.5),t[9]=(o-l)*i*.5,t[10]=r/(n-r),t[11]=-1,t[12]=0,t[13]=0,t[14]=r*n/(n-r),t[15]=0,t},o.ortho=function(t,a,n,r,o,l,u){var e=1/(a-n),M=1/(r-o),i=1/(l-u);return t[0]=-2*e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*M,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*i,t[11]=0,t[12]=(a+n)*e,t[13]=(o+r)*M,t[14]=(u+l)*i,t[15]=1,t},o.lookAt=function(t,a,n,l){var u,e,M,i,s,c,D,S,I,x,f=a[0],F=a[1],m=a[2],h=l[0],d=l[1],v=l[2],z=n[0],p=n[1],w=n[2];return Math.abs(f-z)<r.EPSILON&&Math.abs(F-p)<r.EPSILON&&Math.abs(m-w)<r.EPSILON?o.identity(t):(D=f-z,S=F-p,I=m-w,x=1/Math.sqrt(D*D+S*S+I*I),D*=x,S*=x,I*=x,u=d*I-v*S,e=v*D-h*I,M=h*S-d*D,x=Math.sqrt(u*u+e*e+M*M),x?(x=1/x,u*=x,e*=x,M*=x):(u=0,e=0,M=0),i=S*M-I*e,s=I*u-D*M,c=D*e-S*u,x=Math.sqrt(i*i+s*s+c*c),x?(x=1/x,i*=x,s*=x,c*=x):(i=0,s=0,c=0),t[0]=u,t[1]=i,t[2]=D,t[3]=0,t[4]=e,t[5]=s,t[6]=S,t[7]=0,t[8]=M,t[9]=c,t[10]=I,t[11]=0,t[12]=-(u*f+e*F+M*m),t[13]=-(i*f+s*F+c*m),t[14]=-(D*f+S*F+I*m),t[15]=1,t)},o.str=function(t){return"mat4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+", "+t[9]+", "+t[10]+", "+t[11]+", "+t[12]+", "+t[13]+", "+t[14]+", "+t[15]+")"},o.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+Math.pow(t[6],2)+Math.pow(t[7],2)+Math.pow(t[8],2)+Math.pow(t[9],2)+Math.pow(t[10],2)+Math.pow(t[11],2)+Math.pow(t[12],2)+Math.pow(t[13],2)+Math.pow(t[14],2)+Math.pow(t[15],2))},t.exports=o},function(t,a,n){var r=n(1),o=n(4),l=n(7),u=n(8),e={};e.create=function(){var t=new r.ARRAY_TYPE(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},e.rotationTo=function(){var t=l.create(),a=l.fromValues(1,0,0),n=l.fromValues(0,1,0);return function(r,o,u){var M=l.dot(o,u);return-.999999>M?(l.cross(t,a,o),l.length(t)<1e-6&&l.cross(t,n,o),l.normalize(t,t),e.setAxisAngle(r,t,Math.PI),r):M>.999999?(r[0]=0,r[1]=0,r[2]=0,r[3]=1,r):(l.cross(t,o,u),r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=1+M,e.normalize(r,r))}}(),e.setAxes=function(){var t=o.create();return function(a,n,r,o){return t[0]=r[0],t[3]=r[1],t[6]=r[2],t[1]=o[0],t[4]=o[1],t[7]=o[2],t[2]=-n[0],t[5]=-n[1],t[8]=-n[2],e.normalize(a,e.fromMat3(a,t))}}(),e.clone=u.clone,e.fromValues=u.fromValues,e.copy=u.copy,e.set=u.set,e.identity=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},e.setAxisAngle=function(t,a,n){n=.5*n;var r=Math.sin(n);return t[0]=r*a[0],t[1]=r*a[1],t[2]=r*a[2],t[3]=Math.cos(n),t},e.add=u.add,e.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=n[0],M=n[1],i=n[2],s=n[3];return t[0]=r*s+u*e+o*i-l*M,t[1]=o*s+u*M+l*e-r*i,t[2]=l*s+u*i+r*M-o*e,t[3]=u*s-r*e-o*M-l*i,t},e.mul=e.multiply,e.scale=u.scale,e.rotateX=function(t,a,n){n*=.5;var r=a[0],o=a[1],l=a[2],u=a[3],e=Math.sin(n),M=Math.cos(n);return t[0]=r*M+u*e,t[1]=o*M+l*e,t[2]=l*M-o*e,t[3]=u*M-r*e,t},e.rotateY=function(t,a,n){n*=.5;var r=a[0],o=a[1],l=a[2],u=a[3],e=Math.sin(n),M=Math.cos(n);return t[0]=r*M-l*e,t[1]=o*M+u*e,t[2]=l*M+r*e,t[3]=u*M-o*e,t},e.rotateZ=function(t,a,n){n*=.5;var r=a[0],o=a[1],l=a[2],u=a[3],e=Math.sin(n),M=Math.cos(n);return t[0]=r*M+o*e,t[1]=o*M-r*e,t[2]=l*M+u*e,t[3]=u*M-l*e,t},e.calculateW=function(t,a){var n=a[0],r=a[1],o=a[2];return t[0]=n,t[1]=r,t[2]=o,t[3]=Math.sqrt(Math.abs(1-n*n-r*r-o*o)),t},e.dot=u.dot,e.lerp=u.lerp,e.slerp=function(t,a,n,r){var o,l,u,e,M,i=a[0],s=a[1],c=a[2],D=a[3],S=n[0],I=n[1],x=n[2],f=n[3];return l=i*S+s*I+c*x+D*f,0>l&&(l=-l,S=-S,I=-I,x=-x,f=-f),1-l>1e-6?(o=Math.acos(l),u=Math.sin(o),e=Math.sin((1-r)*o)/u,M=Math.sin(r*o)/u):(e=1-r,M=r),t[0]=e*i+M*S,t[1]=e*s+M*I,t[2]=e*c+M*x,t[3]=e*D+M*f,t},e.sqlerp=function(){var t=e.create(),a=e.create();return function(n,r,o,l,u,M){return e.slerp(t,r,u,M),e.slerp(a,o,l,M),e.slerp(n,t,a,2*M*(1-M)),n}}(),e.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n*n+r*r+o*o+l*l,e=u?1/u:0;
+return t[0]=-n*e,t[1]=-r*e,t[2]=-o*e,t[3]=l*e,t},e.conjugate=function(t,a){return t[0]=-a[0],t[1]=-a[1],t[2]=-a[2],t[3]=a[3],t},e.length=u.length,e.len=e.length,e.squaredLength=u.squaredLength,e.sqrLen=e.squaredLength,e.normalize=u.normalize,e.fromMat3=function(t,a){var n,r=a[0]+a[4]+a[8];if(r>0)n=Math.sqrt(r+1),t[3]=.5*n,n=.5/n,t[0]=(a[5]-a[7])*n,t[1]=(a[6]-a[2])*n,t[2]=(a[1]-a[3])*n;else{var o=0;a[4]>a[0]&&(o=1),a[8]>a[3*o+o]&&(o=2);var l=(o+1)%3,u=(o+2)%3;n=Math.sqrt(a[3*o+o]-a[3*l+l]-a[3*u+u]+1),t[o]=.5*n,n=.5/n,t[3]=(a[3*l+u]-a[3*u+l])*n,t[l]=(a[3*l+o]+a[3*o+l])*n,t[u]=(a[3*u+o]+a[3*o+u])*n}return t},e.str=function(t){return"quat("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t.exports=e},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(3);return t[0]=0,t[1]=0,t[2]=0,t},o.clone=function(t){var a=new r.ARRAY_TYPE(3);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a},o.fromValues=function(t,a,n){var o=new r.ARRAY_TYPE(3);return o[0]=t,o[1]=a,o[2]=n,o},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t},o.set=function(t,a,n,r){return t[0]=a,t[1]=n,t[2]=r,t},o.add=function(t,a,n){return t[0]=a[0]+n[0],t[1]=a[1]+n[1],t[2]=a[2]+n[2],t},o.subtract=function(t,a,n){return t[0]=a[0]-n[0],t[1]=a[1]-n[1],t[2]=a[2]-n[2],t},o.sub=o.subtract,o.multiply=function(t,a,n){return t[0]=a[0]*n[0],t[1]=a[1]*n[1],t[2]=a[2]*n[2],t},o.mul=o.multiply,o.divide=function(t,a,n){return t[0]=a[0]/n[0],t[1]=a[1]/n[1],t[2]=a[2]/n[2],t},o.div=o.divide,o.min=function(t,a,n){return t[0]=Math.min(a[0],n[0]),t[1]=Math.min(a[1],n[1]),t[2]=Math.min(a[2],n[2]),t},o.max=function(t,a,n){return t[0]=Math.max(a[0],n[0]),t[1]=Math.max(a[1],n[1]),t[2]=Math.max(a[2],n[2]),t},o.scale=function(t,a,n){return t[0]=a[0]*n,t[1]=a[1]*n,t[2]=a[2]*n,t},o.scaleAndAdd=function(t,a,n,r){return t[0]=a[0]+n[0]*r,t[1]=a[1]+n[1]*r,t[2]=a[2]+n[2]*r,t},o.distance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1],o=a[2]-t[2];return Math.sqrt(n*n+r*r+o*o)},o.dist=o.distance,o.squaredDistance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1],o=a[2]-t[2];return n*n+r*r+o*o},o.sqrDist=o.squaredDistance,o.length=function(t){var a=t[0],n=t[1],r=t[2];return Math.sqrt(a*a+n*n+r*r)},o.len=o.length,o.squaredLength=function(t){var a=t[0],n=t[1],r=t[2];return a*a+n*n+r*r},o.sqrLen=o.squaredLength,o.negate=function(t,a){return t[0]=-a[0],t[1]=-a[1],t[2]=-a[2],t},o.inverse=function(t,a){return t[0]=1/a[0],t[1]=1/a[1],t[2]=1/a[2],t},o.normalize=function(t,a){var n=a[0],r=a[1],o=a[2],l=n*n+r*r+o*o;return l>0&&(l=1/Math.sqrt(l),t[0]=a[0]*l,t[1]=a[1]*l,t[2]=a[2]*l),t},o.dot=function(t,a){return t[0]*a[0]+t[1]*a[1]+t[2]*a[2]},o.cross=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=n[0],e=n[1],M=n[2];return t[0]=o*M-l*e,t[1]=l*u-r*M,t[2]=r*e-o*u,t},o.lerp=function(t,a,n,r){var o=a[0],l=a[1],u=a[2];return t[0]=o+r*(n[0]-o),t[1]=l+r*(n[1]-l),t[2]=u+r*(n[2]-u),t},o.hermite=function(t,a,n,r,o,l){var u=l*l,e=u*(2*l-3)+1,M=u*(l-2)+l,i=u*(l-1),s=u*(3-2*l);return t[0]=a[0]*e+n[0]*M+r[0]*i+o[0]*s,t[1]=a[1]*e+n[1]*M+r[1]*i+o[1]*s,t[2]=a[2]*e+n[2]*M+r[2]*i+o[2]*s,t},o.bezier=function(t,a,n,r,o,l){var u=1-l,e=u*u,M=l*l,i=e*u,s=3*l*e,c=3*M*u,D=M*l;return t[0]=a[0]*i+n[0]*s+r[0]*c+o[0]*D,t[1]=a[1]*i+n[1]*s+r[1]*c+o[1]*D,t[2]=a[2]*i+n[2]*s+r[2]*c+o[2]*D,t},o.random=function(t,a){a=a||1;var n=2*r.RANDOM()*Math.PI,o=2*r.RANDOM()-1,l=Math.sqrt(1-o*o)*a;return t[0]=Math.cos(n)*l,t[1]=Math.sin(n)*l,t[2]=o*a,t},o.transformMat4=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=n[3]*r+n[7]*o+n[11]*l+n[15];return u=u||1,t[0]=(n[0]*r+n[4]*o+n[8]*l+n[12])/u,t[1]=(n[1]*r+n[5]*o+n[9]*l+n[13])/u,t[2]=(n[2]*r+n[6]*o+n[10]*l+n[14])/u,t},o.transformMat3=function(t,a,n){var r=a[0],o=a[1],l=a[2];return t[0]=r*n[0]+o*n[3]+l*n[6],t[1]=r*n[1]+o*n[4]+l*n[7],t[2]=r*n[2]+o*n[5]+l*n[8],t},o.transformQuat=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=n[0],e=n[1],M=n[2],i=n[3],s=i*r+e*l-M*o,c=i*o+M*r-u*l,D=i*l+u*o-e*r,S=-u*r-e*o-M*l;return t[0]=s*i+S*-u+c*-M-D*-e,t[1]=c*i+S*-e+D*-u-s*-M,t[2]=D*i+S*-M+s*-e-c*-u,t},o.rotateX=function(t,a,n,r){var o=[],l=[];return o[0]=a[0]-n[0],o[1]=a[1]-n[1],o[2]=a[2]-n[2],l[0]=o[0],l[1]=o[1]*Math.cos(r)-o[2]*Math.sin(r),l[2]=o[1]*Math.sin(r)+o[2]*Math.cos(r),t[0]=l[0]+n[0],t[1]=l[1]+n[1],t[2]=l[2]+n[2],t},o.rotateY=function(t,a,n,r){var o=[],l=[];return o[0]=a[0]-n[0],o[1]=a[1]-n[1],o[2]=a[2]-n[2],l[0]=o[2]*Math.sin(r)+o[0]*Math.cos(r),l[1]=o[1],l[2]=o[2]*Math.cos(r)-o[0]*Math.sin(r),t[0]=l[0]+n[0],t[1]=l[1]+n[1],t[2]=l[2]+n[2],t},o.rotateZ=function(t,a,n,r){var o=[],l=[];return o[0]=a[0]-n[0],o[1]=a[1]-n[1],o[2]=a[2]-n[2],l[0]=o[0]*Math.cos(r)-o[1]*Math.sin(r),l[1]=o[0]*Math.sin(r)+o[1]*Math.cos(r),l[2]=o[2],t[0]=l[0]+n[0],t[1]=l[1]+n[1],t[2]=l[2]+n[2],t},o.forEach=function(){var t=o.create();return function(a,n,r,o,l,u){var e,M;for(n||(n=3),r||(r=0),M=o?Math.min(o*n+r,a.length):a.length,e=r;M>e;e+=n)t[0]=a[e],t[1]=a[e+1],t[2]=a[e+2],l(t,t,u),a[e]=t[0],a[e+1]=t[1],a[e+2]=t[2];return a}}(),o.angle=function(t,a){var n=o.fromValues(t[0],t[1],t[2]),r=o.fromValues(a[0],a[1],a[2]);o.normalize(n,n),o.normalize(r,r);var l=o.dot(n,r);return l>1?0:Math.acos(l)},o.str=function(t){return"vec3("+t[0]+", "+t[1]+", "+t[2]+")"},t.exports=o},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t},o.clone=function(t){var a=new r.ARRAY_TYPE(4);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a},o.fromValues=function(t,a,n,o){var l=new r.ARRAY_TYPE(4);return l[0]=t,l[1]=a,l[2]=n,l[3]=o,l},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t},o.set=function(t,a,n,r,o){return t[0]=a,t[1]=n,t[2]=r,t[3]=o,t},o.add=function(t,a,n){return t[0]=a[0]+n[0],t[1]=a[1]+n[1],t[2]=a[2]+n[2],t[3]=a[3]+n[3],t},o.subtract=function(t,a,n){return t[0]=a[0]-n[0],t[1]=a[1]-n[1],t[2]=a[2]-n[2],t[3]=a[3]-n[3],t},o.sub=o.subtract,o.multiply=function(t,a,n){return t[0]=a[0]*n[0],t[1]=a[1]*n[1],t[2]=a[2]*n[2],t[3]=a[3]*n[3],t},o.mul=o.multiply,o.divide=function(t,a,n){return t[0]=a[0]/n[0],t[1]=a[1]/n[1],t[2]=a[2]/n[2],t[3]=a[3]/n[3],t},o.div=o.divide,o.min=function(t,a,n){return t[0]=Math.min(a[0],n[0]),t[1]=Math.min(a[1],n[1]),t[2]=Math.min(a[2],n[2]),t[3]=Math.min(a[3],n[3]),t},o.max=function(t,a,n){return t[0]=Math.max(a[0],n[0]),t[1]=Math.max(a[1],n[1]),t[2]=Math.max(a[2],n[2]),t[3]=Math.max(a[3],n[3]),t},o.scale=function(t,a,n){return t[0]=a[0]*n,t[1]=a[1]*n,t[2]=a[2]*n,t[3]=a[3]*n,t},o.scaleAndAdd=function(t,a,n,r){return t[0]=a[0]+n[0]*r,t[1]=a[1]+n[1]*r,t[2]=a[2]+n[2]*r,t[3]=a[3]+n[3]*r,t},o.distance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1],o=a[2]-t[2],l=a[3]-t[3];return Math.sqrt(n*n+r*r+o*o+l*l)},o.dist=o.distance,o.squaredDistance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1],o=a[2]-t[2],l=a[3]-t[3];return n*n+r*r+o*o+l*l},o.sqrDist=o.squaredDistance,o.length=function(t){var a=t[0],n=t[1],r=t[2],o=t[3];return Math.sqrt(a*a+n*n+r*r+o*o)},o.len=o.length,o.squaredLength=function(t){var a=t[0],n=t[1],r=t[2],o=t[3];return a*a+n*n+r*r+o*o},o.sqrLen=o.squaredLength,o.negate=function(t,a){return t[0]=-a[0],t[1]=-a[1],t[2]=-a[2],t[3]=-a[3],t},o.inverse=function(t,a){return t[0]=1/a[0],t[1]=1/a[1],t[2]=1/a[2],t[3]=1/a[3],t},o.normalize=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n*n+r*r+o*o+l*l;return u>0&&(u=1/Math.sqrt(u),t[0]=n*u,t[1]=r*u,t[2]=o*u,t[3]=l*u),t},o.dot=function(t,a){return t[0]*a[0]+t[1]*a[1]+t[2]*a[2]+t[3]*a[3]},o.lerp=function(t,a,n,r){var o=a[0],l=a[1],u=a[2],e=a[3];return t[0]=o+r*(n[0]-o),t[1]=l+r*(n[1]-l),t[2]=u+r*(n[2]-u),t[3]=e+r*(n[3]-e),t},o.random=function(t,a){return a=a||1,t[0]=r.RANDOM(),t[1]=r.RANDOM(),t[2]=r.RANDOM(),t[3]=r.RANDOM(),o.normalize(t,t),o.scale(t,t,a),t},o.transformMat4=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3];return t[0]=n[0]*r+n[4]*o+n[8]*l+n[12]*u,t[1]=n[1]*r+n[5]*o+n[9]*l+n[13]*u,t[2]=n[2]*r+n[6]*o+n[10]*l+n[14]*u,t[3]=n[3]*r+n[7]*o+n[11]*l+n[15]*u,t},o.transformQuat=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=n[0],e=n[1],M=n[2],i=n[3],s=i*r+e*l-M*o,c=i*o+M*r-u*l,D=i*l+u*o-e*r,S=-u*r-e*o-M*l;return t[0]=s*i+S*-u+c*-M-D*-e,t[1]=c*i+S*-e+D*-u-s*-M,t[2]=D*i+S*-M+s*-e-c*-u,t[3]=a[3],t},o.forEach=function(){var t=o.create();return function(a,n,r,o,l,u){var e,M;for(n||(n=4),r||(r=0),M=o?Math.min(o*n+r,a.length):a.length,e=r;M>e;e+=n)t[0]=a[e],t[1]=a[e+1],t[2]=a[e+2],t[3]=a[e+3],l(t,t,u),a[e]=t[0],a[e+1]=t[1],a[e+2]=t[2],a[e+3]=t[3];return a}}(),o.str=function(t){return"vec4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t.exports=o},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(2);return t[0]=0,t[1]=0,t},o.clone=function(t){var a=new r.ARRAY_TYPE(2);return a[0]=t[0],a[1]=t[1],a},o.fromValues=function(t,a){var n=new r.ARRAY_TYPE(2);return n[0]=t,n[1]=a,n},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t},o.set=function(t,a,n){return t[0]=a,t[1]=n,t},o.add=function(t,a,n){return t[0]=a[0]+n[0],t[1]=a[1]+n[1],t},o.subtract=function(t,a,n){return t[0]=a[0]-n[0],t[1]=a[1]-n[1],t},o.sub=o.subtract,o.multiply=function(t,a,n){return t[0]=a[0]*n[0],t[1]=a[1]*n[1],t},o.mul=o.multiply,o.divide=function(t,a,n){return t[0]=a[0]/n[0],t[1]=a[1]/n[1],t},o.div=o.divide,o.min=function(t,a,n){return t[0]=Math.min(a[0],n[0]),t[1]=Math.min(a[1],n[1]),t},o.max=function(t,a,n){return t[0]=Math.max(a[0],n[0]),t[1]=Math.max(a[1],n[1]),t},o.scale=function(t,a,n){return t[0]=a[0]*n,t[1]=a[1]*n,t},o.scaleAndAdd=function(t,a,n,r){return t[0]=a[0]+n[0]*r,t[1]=a[1]+n[1]*r,t},o.distance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1];return Math.sqrt(n*n+r*r)},o.dist=o.distance,o.squaredDistance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1];return n*n+r*r},o.sqrDist=o.squaredDistance,o.length=function(t){var a=t[0],n=t[1];return Math.sqrt(a*a+n*n)},o.len=o.length,o.squaredLength=function(t){var a=t[0],n=t[1];return a*a+n*n},o.sqrLen=o.squaredLength,o.negate=function(t,a){return t[0]=-a[0],t[1]=-a[1],t},o.inverse=function(t,a){return t[0]=1/a[0],t[1]=1/a[1],t},o.normalize=function(t,a){var n=a[0],r=a[1],o=n*n+r*r;return o>0&&(o=1/Math.sqrt(o),t[0]=a[0]*o,t[1]=a[1]*o),t},o.dot=function(t,a){return t[0]*a[0]+t[1]*a[1]},o.cross=function(t,a,n){var r=a[0]*n[1]-a[1]*n[0];return t[0]=t[1]=0,t[2]=r,t},o.lerp=function(t,a,n,r){var o=a[0],l=a[1];return t[0]=o+r*(n[0]-o),t[1]=l+r*(n[1]-l),t},o.random=function(t,a){a=a||1;var n=2*r.RANDOM()*Math.PI;return t[0]=Math.cos(n)*a,t[1]=Math.sin(n)*a,t},o.transformMat2=function(t,a,n){var r=a[0],o=a[1];return t[0]=n[0]*r+n[2]*o,t[1]=n[1]*r+n[3]*o,t},o.transformMat2d=function(t,a,n){var r=a[0],o=a[1];return t[0]=n[0]*r+n[2]*o+n[4],t[1]=n[1]*r+n[3]*o+n[5],t},o.transformMat3=function(t,a,n){var r=a[0],o=a[1];return t[0]=n[0]*r+n[3]*o+n[6],t[1]=n[1]*r+n[4]*o+n[7],t},o.transformMat4=function(t,a,n){var r=a[0],o=a[1];return t[0]=n[0]*r+n[4]*o+n[12],t[1]=n[1]*r+n[5]*o+n[13],t},o.forEach=function(){var t=o.create();return function(a,n,r,o,l,u){var e,M;for(n||(n=2),r||(r=0),M=o?Math.min(o*n+r,a.length):a.length,e=r;M>e;e+=n)t[0]=a[e],t[1]=a[e+1],l(t,t,u),a[e]=t[0],a[e+1]=t[1];return a}}(),o.str=function(t){return"vec2("+t[0]+", "+t[1]+")"},t.exports=o}])});/*! Hammer.JS - v2.0.4 - 2014-09-28
+ * http://hammerjs.github.io/
+ *
+ * Copyright (c) 2014 Jorik Tangelder;
+ * Licensed under the MIT license */
+!function(a,b,c,d){"use strict";function e(a,b,c){return setTimeout(k(a,c),b)}function f(a,b,c){return Array.isArray(a)?(g(a,c[b],c),!0):!1}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e<a.length;)b.call(c,a[e],e,a),e++;else for(e in a)a.hasOwnProperty(e)&&b.call(c,a[e],e,a)}function h(a,b,c){for(var e=Object.keys(b),f=0;f<e.length;)(!c||c&&a[e[f]]===d)&&(a[e[f]]=b[e[f]]),f++;return a}function i(a,b){return h(a,b,!0)}function j(a,b,c){var d,e=b.prototype;d=a.prototype=Object.create(e),d.constructor=a,d._super=e,c&&h(d,c)}function k(a,b){return function(){return a.apply(b,arguments)}}function l(a,b){return typeof a==kb?a.apply(b?b[0]||d:d,b):a}function m(a,b){return a===d?b:a}function n(a,b,c){g(r(b),function(b){a.addEventListener(b,c,!1)})}function o(a,b,c){g(r(b),function(b){a.removeEventListener(b,c,!1)})}function p(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function q(a,b){return a.indexOf(b)>-1}function r(a){return a.trim().split(/\s+/g)}function s(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;d<a.length;){if(c&&a[d][c]==b||!c&&a[d]===b)return d;d++}return-1}function t(a){return Array.prototype.slice.call(a,0)}function u(a,b,c){for(var d=[],e=[],f=0;f<a.length;){var g=b?a[f][b]:a[f];s(e,g)<0&&d.push(a[f]),e[f]=g,f++}return c&&(d=b?d.sort(function(a,c){return a[b]>c[b]}):d.sort()),d}function v(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g<ib.length;){if(c=ib[g],e=c?c+f:b,e in a)return e;g++}return d}function w(){return ob++}function x(a){var b=a.ownerDocument;return b.defaultView||b.parentWindow}function y(a,b){var c=this;this.manager=a,this.callback=b,this.element=a.element,this.target=a.options.inputTarget,this.domHandler=function(b){l(a.options.enable,[a])&&c.handler(b)},this.init()}function z(a){var b,c=a.options.inputClass;return new(b=c?c:rb?N:sb?Q:qb?S:M)(a,A)}function A(a,b,c){var d=c.pointers.length,e=c.changedPointers.length,f=b&yb&&d-e===0,g=b&(Ab|Bb)&&d-e===0;c.isFirst=!!f,c.isFinal=!!g,f&&(a.session={}),c.eventType=b,B(a,c),a.emit("hammer.input",c),a.recognize(c),a.session.prevInput=c}function B(a,b){var c=a.session,d=b.pointers,e=d.length;c.firstInput||(c.firstInput=E(b)),e>1&&!c.firstMultiple?c.firstMultiple=E(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=F(d);b.timeStamp=nb(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=J(h,i),b.distance=I(h,i),C(c,b),b.offsetDirection=H(b.deltaX,b.deltaY),b.scale=g?L(g.pointers,d):1,b.rotation=g?K(g.pointers,d):0,D(c,b);var j=a.element;p(b.srcEvent.target,j)&&(j=b.srcEvent.target),b.target=j}function C(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===yb||f.eventType===Ab)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function D(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Bb&&(i>xb||h.velocity===d)){var j=h.deltaX-b.deltaX,k=h.deltaY-b.deltaY,l=G(i,j,k);e=l.x,f=l.y,c=mb(l.x)>mb(l.y)?l.x:l.y,g=H(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function E(a){for(var b=[],c=0;c<a.pointers.length;)b[c]={clientX:lb(a.pointers[c].clientX),clientY:lb(a.pointers[c].clientY)},c++;return{timeStamp:nb(),pointers:b,center:F(b),deltaX:a.deltaX,deltaY:a.deltaY}}function F(a){var b=a.length;if(1===b)return{x:lb(a[0].clientX),y:lb(a[0].clientY)};for(var c=0,d=0,e=0;b>e;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:lb(c/b),y:lb(d/b)}}function G(a,b,c){return{x:b/a||0,y:c/a||0}}function H(a,b){return a===b?Cb:mb(a)>=mb(b)?a>0?Db:Eb:b>0?Fb:Gb}function I(a,b,c){c||(c=Kb);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function J(a,b,c){c||(c=Kb);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function K(a,b){return J(b[1],b[0],Lb)-J(a[1],a[0],Lb)}function L(a,b){return I(b[0],b[1],Lb)/I(a[0],a[1],Lb)}function M(){this.evEl=Nb,this.evWin=Ob,this.allow=!0,this.pressed=!1,y.apply(this,arguments)}function N(){this.evEl=Rb,this.evWin=Sb,y.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function O(){this.evTarget=Ub,this.evWin=Vb,this.started=!1,y.apply(this,arguments)}function P(a,b){var c=t(a.touches),d=t(a.changedTouches);return b&(Ab|Bb)&&(c=u(c.concat(d),"identifier",!0)),[c,d]}function Q(){this.evTarget=Xb,this.targetIds={},y.apply(this,arguments)}function R(a,b){var c=t(a.touches),d=this.targetIds;if(b&(yb|zb)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=t(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return p(a.target,i)}),b===yb)for(e=0;e<f.length;)d[f[e].identifier]=!0,e++;for(e=0;e<g.length;)d[g[e].identifier]&&h.push(g[e]),b&(Ab|Bb)&&delete d[g[e].identifier],e++;return h.length?[u(f.concat(h),"identifier",!0),h]:void 0}function S(){y.apply(this,arguments);var a=k(this.handler,this);this.touch=new Q(this.manager,a),this.mouse=new M(this.manager,a)}function T(a,b){this.manager=a,this.set(b)}function U(a){if(q(a,bc))return bc;var b=q(a,cc),c=q(a,dc);return b&&c?cc+" "+dc:b||c?b?cc:dc:q(a,ac)?ac:_b}function V(a){this.id=w(),this.manager=null,this.options=i(a||{},this.defaults),this.options.enable=m(this.options.enable,!0),this.state=ec,this.simultaneous={},this.requireFail=[]}function W(a){return a&jc?"cancel":a&hc?"end":a&gc?"move":a&fc?"start":""}function X(a){return a==Gb?"down":a==Fb?"up":a==Db?"left":a==Eb?"right":""}function Y(a,b){var c=b.manager;return c?c.get(a):a}function Z(){V.apply(this,arguments)}function $(){Z.apply(this,arguments),this.pX=null,this.pY=null}function _(){Z.apply(this,arguments)}function ab(){V.apply(this,arguments),this._timer=null,this._input=null}function bb(){Z.apply(this,arguments)}function cb(){Z.apply(this,arguments)}function db(){V.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function eb(a,b){return b=b||{},b.recognizers=m(b.recognizers,eb.defaults.preset),new fb(a,b)}function fb(a,b){b=b||{},this.options=i(b,eb.defaults),this.options.inputTarget=this.options.inputTarget||a,this.handlers={},this.session={},this.recognizers=[],this.element=a,this.input=z(this),this.touchAction=new T(this,this.options.touchAction),gb(this,!0),g(b.recognizers,function(a){var b=this.add(new a[0](a[1]));a[2]&&b.recognizeWith(a[2]),a[3]&&b.requireFailure(a[3])},this)}function gb(a,b){var c=a.element;g(a.options.cssProps,function(a,d){c.style[v(c.style,d)]=b?a:""})}function hb(a,c){var d=b.createEvent("Event");d.initEvent(a,!0,!0),d.gesture=c,c.target.dispatchEvent(d)}var ib=["","webkit","moz","MS","ms","o"],jb=b.createElement("div"),kb="function",lb=Math.round,mb=Math.abs,nb=Date.now,ob=1,pb=/mobile|tablet|ip(ad|hone|od)|android/i,qb="ontouchstart"in a,rb=v(a,"PointerEvent")!==d,sb=qb&&pb.test(navigator.userAgent),tb="touch",ub="pen",vb="mouse",wb="kinect",xb=25,yb=1,zb=2,Ab=4,Bb=8,Cb=1,Db=2,Eb=4,Fb=8,Gb=16,Hb=Db|Eb,Ib=Fb|Gb,Jb=Hb|Ib,Kb=["x","y"],Lb=["clientX","clientY"];y.prototype={handler:function(){},init:function(){this.evEl&&n(this.element,this.evEl,this.domHandler),this.evTarget&&n(this.target,this.evTarget,this.domHandler),this.evWin&&n(x(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&o(this.element,this.evEl,this.domHandler),this.evTarget&&o(this.target,this.evTarget,this.domHandler),this.evWin&&o(x(this.element),this.evWin,this.domHandler)}};var Mb={mousedown:yb,mousemove:zb,mouseup:Ab},Nb="mousedown",Ob="mousemove mouseup";j(M,y,{handler:function(a){var b=Mb[a.type];b&yb&&0===a.button&&(this.pressed=!0),b&zb&&1!==a.which&&(b=Ab),this.pressed&&this.allow&&(b&Ab&&(this.pressed=!1),this.callback(this.manager,b,{pointers:[a],changedPointers:[a],pointerType:vb,srcEvent:a}))}});var Pb={pointerdown:yb,pointermove:zb,pointerup:Ab,pointercancel:Bb,pointerout:Bb},Qb={2:tb,3:ub,4:vb,5:wb},Rb="pointerdown",Sb="pointermove pointerup pointercancel";a.MSPointerEvent&&(Rb="MSPointerDown",Sb="MSPointerMove MSPointerUp MSPointerCancel"),j(N,y,{handler:function(a){var b=this.store,c=!1,d=a.type.toLowerCase().replace("ms",""),e=Pb[d],f=Qb[a.pointerType]||a.pointerType,g=f==tb,h=s(b,a.pointerId,"pointerId");e&yb&&(0===a.button||g)?0>h&&(b.push(a),h=b.length-1):e&(Ab|Bb)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Tb={touchstart:yb,touchmove:zb,touchend:Ab,touchcancel:Bb},Ub="touchstart",Vb="touchstart touchmove touchend touchcancel";j(O,y,{handler:function(a){var b=Tb[a.type];if(b===yb&&(this.started=!0),this.started){var c=P.call(this,a,b);b&(Ab|Bb)&&c[0].length-c[1].length===0&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:tb,srcEvent:a})}}});var Wb={touchstart:yb,touchmove:zb,touchend:Ab,touchcancel:Bb},Xb="touchstart touchmove touchend touchcancel";j(Q,y,{handler:function(a){var b=Wb[a.type],c=R.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:tb,srcEvent:a})}}),j(S,y,{handler:function(a,b,c){var d=c.pointerType==tb,e=c.pointerType==vb;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Ab|Bb)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Yb=v(jb.style,"touchAction"),Zb=Yb!==d,$b="compute",_b="auto",ac="manipulation",bc="none",cc="pan-x",dc="pan-y";T.prototype={set:function(a){a==$b&&(a=this.compute()),Zb&&(this.manager.element.style[Yb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){l(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),U(a.join(" "))},preventDefaults:function(a){if(!Zb){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=q(d,bc),f=q(d,dc),g=q(d,cc);return e||f&&c&Hb||g&&c&Ib?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var ec=1,fc=2,gc=4,hc=8,ic=hc,jc=16,kc=32;V.prototype={defaults:{},set:function(a){return h(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(f(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=Y(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=Y(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,"requireFailure",this))return this;var b=this.requireFail;return a=Y(a,this),-1===s(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this))return this;a=Y(a,this);var b=s(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(c.options.event+(b?W(d):""),a)}var c=this,d=this.state;hc>d&&b(!0),b(),d>=hc&&b(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=kc)},canEmit:function(){for(var a=0;a<this.requireFail.length;){if(!(this.requireFail[a].state&(kc|ec)))return!1;a++}return!0},recognize:function(a){var b=h({},a);return l(this.options.enable,[this,b])?(this.state&(ic|jc|kc)&&(this.state=ec),this.state=this.process(b),void(this.state&(fc|gc|hc|jc)&&this.tryEmit(b))):(this.reset(),void(this.state=kc))},process:function(){},getTouchAction:function(){},reset:function(){}},j(Z,V,{defaults:{pointers:1},attrTest:function(a){var b=this.options.pointers;return 0===b||a.pointers.length===b},process:function(a){var b=this.state,c=a.eventType,d=b&(fc|gc),e=this.attrTest(a);return d&&(c&Bb||!e)?b|jc:d||e?c&Ab?b|hc:b&fc?b|gc:fc:kc}}),j($,Z,{defaults:{event:"pan",threshold:10,pointers:1,direction:Jb},getTouchAction:function(){var a=this.options.direction,b=[];return a&Hb&&b.push(dc),a&Ib&&b.push(cc),b},directionTest:function(a){var b=this.options,c=!0,d=a.distance,e=a.direction,f=a.deltaX,g=a.deltaY;return e&b.direction||(b.direction&Hb?(e=0===f?Cb:0>f?Db:Eb,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Cb:0>g?Fb:Gb,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return Z.prototype.attrTest.call(this,a)&&(this.state&fc||!(this.state&fc)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),j(_,Z,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[bc]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&fc)},emit:function(a){if(this._super.emit.call(this,a),1!==a.scale){var b=a.scale<1?"in":"out";this.manager.emit(this.options.event+b,a)}}}),j(ab,V,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[_b]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime>b.time;if(this._input=a,!d||!c||a.eventType&(Ab|Bb)&&!f)this.reset();else if(a.eventType&yb)this.reset(),this._timer=e(function(){this.state=ic,this.tryEmit()},b.time,this);else if(a.eventType&Ab)return ic;return kc},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===ic&&(a&&a.eventType&Ab?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=nb(),this.manager.emit(this.options.event,this._input)))}}),j(bb,Z,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[bc]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&fc)}}),j(cb,Z,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:Hb|Ib,pointers:1},getTouchAction:function(){return $.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Hb|Ib)?b=a.velocity:c&Hb?b=a.velocityX:c&Ib&&(b=a.velocityY),this._super.attrTest.call(this,a)&&c&a.direction&&a.distance>this.options.threshold&&mb(b)>this.options.velocity&&a.eventType&Ab},emit:function(a){var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),j(db,V,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[ac]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime<b.time;if(this.reset(),a.eventType&yb&&0===this.count)return this.failTimeout();if(d&&f&&c){if(a.eventType!=Ab)return this.failTimeout();var g=this.pTime?a.timeStamp-this.pTime<b.interval:!0,h=!this.pCenter||I(this.pCenter,a.center)<b.posThreshold;this.pTime=a.timeStamp,this.pCenter=a.center,h&&g?this.count+=1:this.count=1,this._input=a;var i=this.count%b.taps;if(0===i)return this.hasRequireFailures()?(this._timer=e(function(){this.state=ic,this.tryEmit()},b.interval,this),fc):ic}return kc},failTimeout:function(){return this._timer=e(function(){this.state=kc},this.options.interval,this),kc},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==ic&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),eb.VERSION="2.0.4",eb.defaults={domEvents:!1,touchAction:$b,enable:!0,inputTarget:null,inputClass:null,preset:[[bb,{enable:!1}],[_,{enable:!1},["rotate"]],[cb,{direction:Hb}],[$,{direction:Hb},["swipe"]],[db],[db,{event:"doubletap",taps:2},["tap"]],[ab]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var lc=1,mc=2;fb.prototype={set:function(a){return h(this.options,a),a.touchAction&&this.touchAction.update(),a.inputTarget&&(this.input.destroy(),this.input.target=a.inputTarget,this.input.init()),this},stop:function(a){this.session.stopped=a?mc:lc},recognize:function(a){var b=this.session;if(!b.stopped){this.touchAction.preventDefaults(a);var c,d=this.recognizers,e=b.curRecognizer;(!e||e&&e.state&ic)&&(e=b.curRecognizer=null);for(var f=0;f<d.length;)c=d[f],b.stopped===mc||e&&c!=e&&!c.canRecognizeWith(e)?c.reset():c.recognize(a),!e&&c.state&(fc|gc|hc)&&(e=b.curRecognizer=c),f++}},get:function(a){if(a instanceof V)return a;for(var b=this.recognizers,c=0;c<b.length;c++)if(b[c].options.event==a)return b[c];return null},add:function(a){if(f(a,"add",this))return this;var b=this.get(a.options.event);return b&&this.remove(b),this.recognizers.push(a),a.manager=this,this.touchAction.update(),a},remove:function(a){if(f(a,"remove",this))return this;var b=this.recognizers;return a=this.get(a),b.splice(s(b,a),1),this.touchAction.update(),this},on:function(a,b){var c=this.handlers;return g(r(a),function(a){c[a]=c[a]||[],c[a].push(b)}),this},off:function(a,b){var c=this.handlers;return g(r(a),function(a){b?c[a].splice(s(c[a],b),1):delete c[a]}),this},emit:function(a,b){this.options.domEvents&&hb(a,b);var c=this.handlers[a]&&this.handlers[a].slice();if(c&&c.length){b.type=a,b.preventDefault=function(){b.srcEvent.preventDefault()};for(var d=0;d<c.length;)c[d](b),d++}},destroy:function(){this.element&&gb(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},h(eb,{INPUT_START:yb,INPUT_MOVE:zb,INPUT_END:Ab,INPUT_CANCEL:Bb,STATE_POSSIBLE:ec,STATE_BEGAN:fc,STATE_CHANGED:gc,STATE_ENDED:hc,STATE_RECOGNIZED:ic,STATE_CANCELLED:jc,STATE_FAILED:kc,DIRECTION_NONE:Cb,DIRECTION_LEFT:Db,DIRECTION_RIGHT:Eb,DIRECTION_UP:Fb,DIRECTION_DOWN:Gb,DIRECTION_HORIZONTAL:Hb,DIRECTION_VERTICAL:Ib,DIRECTION_ALL:Jb,Manager:fb,Input:y,TouchAction:T,TouchInput:Q,MouseInput:M,PointerEventInput:N,TouchMouseInput:S,SingleTouchInput:O,Recognizer:V,AttrRecognizer:Z,Tap:db,Pan:$,Swipe:cb,Pinch:_,Rotate:bb,Press:ab,on:n,off:o,each:g,merge:i,extend:h,inherit:j,bindFn:k,prefixed:v}),typeof define==kb&&define.amd?define(function(){return eb}):"undefined"!=typeof module&&module.exports?module.exports=eb:a[c]=eb}(window,document,"Hammer");
+/**
+* JSONfn - javascript (both node.js and browser) plugin to stringify, 
+*          parse and clone objects with Functions, Regexp and Date.
+*  
+* Version - 0.60.00
+* Copyright (c) 2012 - 2015 Vadim Kiryukhin
+* vkiryukhin @ gmail.com
+* http://www.eslinstructor.net/jsonfn/
+* 
+* Licensed under the MIT license ( http://www.opensource.org/licenses/mit-license.php )
+*
+*   USAGE:
+*     browser:
+*         JSONfn.stringify(obj);
+*         JSONfn.parse(str[, date2obj]);
+*         JSONfn.clone(obj[, date2obj]);
+*
+*     nodejs:
+*       var JSONfn = require('path/to/json-fn');
+*       JSONfn.stringify(obj);
+*       JSONfn.parse(str[, date2obj]);
+*       JSONfn.clone(obj[, date2obj]);
+*
+*
+*     @obj      -  Object;
+*     @str      -  String, which is returned by JSONfn.stringify() function; 
+*     @date2obj - Boolean (optional); if true, date string in ISO8061 format
+*                 is converted into a Date object; otherwise, it is left as a String.
+*/
+
+"use strict";
+
+(function (exports) {
+
+  exports.stringify = function (obj) {
+
+    return JSON.stringify(obj, function (key, value) {
+      if (value instanceof Function || typeof value == 'function') {
+        return value.toString();
+      }
+      if (value instanceof RegExp) {
+        return '_PxEgEr_' + value;
+      }
+      return value;
+    });
+  };
+
+  exports.parse = function (str, date2obj) {
+
+    var iso8061 = date2obj ? /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/ : false;
+
+    return JSON.parse(str, function (key, value) {
+      var prefix;
+
+      if (typeof value != 'string') {
+        return value;
+      }
+      if (value.length < 8) {
+        return value;
+      }
+
+      prefix = value.substring(0, 8);
+
+      if (iso8061 && value.match(iso8061)) {
+        return new Date(value);
+      }
+      if (prefix === 'function') {
+        return eval('(' + value + ')');
+      }
+      if (prefix === '_PxEgEr_') {
+        return eval(value.slice(8));
+      }
+
+      return value;
+    });
+  };
+
+  exports.clone = function (obj, date2obj) {
+    return exports.parse(exports.stringify(obj), date2obj);
+  };
+
+}(typeof exports === 'undefined' ? (window.JSONfn = {}) : exports));
+
+
+(function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q={}.hasOwnProperty,r=function(a,b){function c(){this.constructor=a}for(var d in b)q.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};!function(){var a,b,c,d,e,f,g;for(g=["ms","moz","webkit","o"],c=0,e=g.length;e>c&&(f=g[c],!window.requestAnimationFrame);c++)window.requestAnimationFrame=window[f+"RequestAnimationFrame"],window.cancelAnimationFrame=window[f+"CancelAnimationFrame"]||window[f+"CancelRequestAnimationFrame"];return a=null,d=0,b={},requestAnimationFrame?window.cancelAnimationFrame?void 0:(a=window.requestAnimationFrame,window.requestAnimationFrame=function(c,e){var f;return f=++d,a(function(){return b[f]?void 0:c()},e),f},window.cancelAnimationFrame=function(a){return b[a]=!0}):(window.requestAnimationFrame=function(a,b){var c,d,e,f;return c=(new Date).getTime(),f=Math.max(0,16-(c-e)),d=window.setTimeout(function(){return a(c+f)},f),e=c+f,d},window.cancelAnimationFrame=function(a){return clearTimeout(a)})}(),String.prototype.hashCode=function(){var a,b,c,d,e;if(b=0,0===this.length)return b;for(c=d=0,e=this.length;e>=0?e>d:d>e;c=e>=0?++d:--d)a=this.charCodeAt(c),b=(b<<5)-b+a,b&=b;return b},o=function(a){var b,c;for(b=Math.floor(a/3600),c=Math.floor((a-3600*b)/60),a-=3600*b+60*c,a+="",c+="";c.length<2;)c="0"+c;for(;a.length<2;)a="0"+a;return b=b?b+":":"",b+c+":"+a},m=function(a){return k(a.toFixed(0))},p=function(a,b){var c,d;for(c in b)q.call(b,c)&&(d=b[c],a[c]=d);return a},n=function(a,b){var c,d,e;d={};for(c in a)q.call(a,c)&&(e=a[c],d[c]=e);for(c in b)q.call(b,c)&&(e=b[c],d[c]=e);return d},k=function(a){var b,c,d,e;for(a+="",c=a.split("."),d=c[0],e="",c.length>1&&(e="."+c[1]),b=/(\d+)(\d{3})/;b.test(d);)d=d.replace(b,"$1,$2");return d+e},l=function(a){return"#"===a.charAt(0)?a.substring(1,7):a},j=function(){function a(a,b){null==a&&(a=!0),this.clear=null!=b?b:!0,a&&AnimationUpdater.add(this)}return a.prototype.animationSpeed=32,a.prototype.update=function(a){var b;return null==a&&(a=!1),a||this.displayedValue!==this.value?(this.ctx&&this.clear&&this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height),b=this.value-this.displayedValue,Math.abs(b/this.animationSpeed)<=.001?this.displayedValue=this.value:this.displayedValue=this.displayedValue+b/this.animationSpeed,this.render(),!0):!1},a}(),e=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return r(b,a),b.prototype.displayScale=1,b.prototype.setTextField=function(a){return this.textField=a instanceof i?a:new i(a)},b.prototype.setMinValue=function(a,b){var c,d,e,f,g;if(this.minValue=a,null==b&&(b=!0),b){for(this.displayedValue=this.minValue,f=this.gp||[],g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(c.displayedValue=this.minValue);return g}},b.prototype.setOptions=function(a){return null==a&&(a=null),this.options=n(this.options,a),this.textField&&(this.textField.el.style.fontSize=a.fontSize+"px"),this.options.angle>.5&&(this.gauge.options.angle=.5),this.configDisplayScale(),this},b.prototype.configDisplayScale=function(){var a,b,c,d,e;return d=this.displayScale,this.options.highDpiSupport===!1?delete this.displayScale:(b=window.devicePixelRatio||1,a=this.ctx.webkitBackingStorePixelRatio||this.ctx.mozBackingStorePixelRatio||this.ctx.msBackingStorePixelRatio||this.ctx.oBackingStorePixelRatio||this.ctx.backingStorePixelRatio||1,this.displayScale=b/a),this.displayScale!==d&&(e=this.canvas.G__width||this.canvas.width,c=this.canvas.G__height||this.canvas.height,this.canvas.width=e*this.displayScale,this.canvas.height=c*this.displayScale,this.canvas.style.width=e+"px",this.canvas.style.height=c+"px",this.canvas.G__width=e,this.canvas.G__height=c),this},b}(j),i=function(){function a(a){this.el=a}return a.prototype.render=function(a){return this.el.innerHTML=m(a.displayedValue)},a}(),a=function(a){function b(a,b){this.elem=a,this.text=null!=b?b:!1,this.value=1*this.elem.innerHTML,this.text&&(this.value=0)}return r(b,a),b.prototype.displayedValue=0,b.prototype.value=0,b.prototype.setVal=function(a){return this.value=1*a},b.prototype.render=function(){var a;return a=this.text?o(this.displayedValue.toFixed(0)):k(m(this.displayedValue)),this.elem.innerHTML=a},b}(j),b={create:function(b){var c,d,e,f;for(f=[],d=0,e=b.length;e>d;d++)c=b[d],f.push(new a(c));return f}},h=function(a){function b(a){this.gauge=a,this.ctx=this.gauge.ctx,this.canvas=this.gauge.canvas,b.__super__.constructor.call(this,!1,!1),this.setOptions()}return r(b,a),b.prototype.displayedValue=0,b.prototype.value=0,b.prototype.options={strokeWidth:.035,length:.1,color:"#000000"},b.prototype.setOptions=function(a){return null==a&&(a=null),p(this.options,a),this.length=this.canvas.height*this.options.length,this.strokeWidth=this.canvas.height*this.options.strokeWidth,this.maxValue=this.gauge.maxValue,this.minValue=this.gauge.minValue,this.animationSpeed=this.gauge.animationSpeed,this.options.angle=this.gauge.options.angle},b.prototype.render=function(){var a,b,c,d,e,f,g,h,i;return a=this.gauge.getAngle.call(this,this.displayedValue),b=this.canvas.width/2,c=.9*this.canvas.height,h=Math.round(b+this.length*Math.cos(a)),i=Math.round(c+this.length*Math.sin(a)),f=Math.round(b+this.strokeWidth*Math.cos(a-Math.PI/2)),g=Math.round(c+this.strokeWidth*Math.sin(a-Math.PI/2)),d=Math.round(b+this.strokeWidth*Math.cos(a+Math.PI/2)),e=Math.round(c+this.strokeWidth*Math.sin(a+Math.PI/2)),this.ctx.fillStyle=this.options.color,this.ctx.beginPath(),this.ctx.arc(b,c,this.strokeWidth,0,2*Math.PI,!0),this.ctx.fill(),this.ctx.beginPath(),this.ctx.moveTo(f,g),this.ctx.lineTo(h,i),this.ctx.lineTo(d,e),this.ctx.fill()},b}(j),c=function(){function a(a){this.elem=a}return a.prototype.updateValues=function(a){return this.value=a[0],this.maxValue=a[1],this.avgValue=a[2],this.render()},a.prototype.render=function(){var a,b;return this.textField&&this.textField.text(m(this.value)),0===this.maxValue&&(this.maxValue=2*this.avgValue),b=this.value/this.maxValue*100,a=this.avgValue/this.maxValue*100,$(".bar-value",this.elem).css({width:b+"%"}),$(".typical-value",this.elem).css({width:a+"%"})},a}(),g=function(a){function b(a){this.canvas=a,b.__super__.constructor.call(this),this.percentColors=null,"undefined"!=typeof G_vmlCanvasManager&&(this.canvas=window.G_vmlCanvasManager.initElement(this.canvas)),this.ctx=this.canvas.getContext("2d"),this.gp=[new h(this)],this.setOptions(),this.render()}return r(b,a),b.prototype.elem=null,b.prototype.value=[20],b.prototype.maxValue=80,b.prototype.minValue=0,b.prototype.displayedAngle=0,b.prototype.displayedValue=0,b.prototype.lineWidth=40,b.prototype.paddingBottom=.1,b.prototype.percentColors=null,b.prototype.options={colorStart:"#6fadcf",colorStop:void 0,gradientType:0,strokeColor:"#e0e0e0",pointer:{length:.8,strokeWidth:.035},angle:.15,lineWidth:.44,fontSize:40,limitMax:!1},b.prototype.setOptions=function(a){var c,d,e,f;for(null==a&&(a=null),b.__super__.setOptions.call(this,a),this.configPercentColors(),this.lineWidth=this.canvas.height*(1-this.paddingBottom)*this.options.lineWidth,this.radius=this.canvas.height*(1-this.paddingBottom)-this.lineWidth,this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height),this.render(),f=this.gp,d=0,e=f.length;e>d;d++)c=f[d],c.setOptions(this.options.pointer),c.render();return this},b.prototype.configPercentColors=function(){var a,b,c,d,e,f,g;if(this.percentColors=null,void 0!==this.options.percentColors){for(this.percentColors=new Array,f=[],c=d=0,e=this.options.percentColors.length-1;e>=0?e>=d:d>=e;c=e>=0?++d:--d)g=parseInt(l(this.options.percentColors[c][1]).substring(0,2),16),b=parseInt(l(this.options.percentColors[c][1]).substring(2,4),16),a=parseInt(l(this.options.percentColors[c][1]).substring(4,6),16),f.push(this.percentColors[c]={pct:this.options.percentColors[c][0],color:{r:g,g:b,b:a}});return f}},b.prototype.set=function(a){var b,c,d,e,f,g,i;if(a instanceof Array||(a=[a]),a.length>this.gp.length)for(b=c=0,g=a.length-this.gp.length;g>=0?g>c:c>g;b=g>=0?++c:--c)this.gp.push(new h(this));for(b=0,f=!1,d=0,e=a.length;e>d;d++)i=a[d],i>this.maxValue&&(this.maxValue=1.1*this.value,f=!0),this.gp[b].value=i,this.gp[b++].setOptions({maxValue:this.maxValue,angle:this.options.angle});return this.value=a[a.length-1],f&&this.options.limitMax?void 0:AnimationUpdater.run()},b.prototype.getAngle=function(a){return(1+this.options.angle)*Math.PI+(a-this.minValue)/(this.maxValue-this.minValue)*(1-2*this.options.angle)*Math.PI},b.prototype.getColorForPercentage=function(a,b){var c,d,e,f,g,h,i;if(0===a)c=this.percentColors[0].color;else for(c=this.percentColors[this.percentColors.length-1].color,e=f=0,h=this.percentColors.length-1;h>=0?h>=f:f>=h;e=h>=0?++f:--f)if(a<=this.percentColors[e].pct){b===!0?(i=this.percentColors[e-1],d=this.percentColors[e],g=(a-i.pct)/(d.pct-i.pct),c={r:Math.floor(i.color.r*(1-g)+d.color.r*g),g:Math.floor(i.color.g*(1-g)+d.color.g*g),b:Math.floor(i.color.b*(1-g)+d.color.b*g)}):c=this.percentColors[e].color;break}return"rgb("+[c.r,c.g,c.b].join(",")+")"},b.prototype.getColorForValue=function(a,b){var c;return c=(a-this.minValue)/(this.maxValue-this.minValue),this.getColorForPercentage(c,b)},b.prototype.render=function(){var a,b,c,d,e,f,g,h,i;for(i=this.canvas.width/2,d=this.canvas.height*(1-this.paddingBottom),a=this.getAngle(this.displayedValue),this.textField&&this.textField.render(this),this.ctx.lineCap="butt",void 0!==this.options.customFillStyle?b=this.options.customFillStyle(this):null!==this.percentColors?b=this.getColorForValue(this.displayedValue,!0):void 0!==this.options.colorStop?(b=0===this.options.gradientType?this.ctx.createRadialGradient(i,d,9,i,d,70):this.ctx.createLinearGradient(0,0,i,0),b.addColorStop(0,this.options.colorStart),b.addColorStop(1,this.options.colorStop)):b=this.options.colorStart,this.ctx.strokeStyle=b,this.ctx.beginPath(),this.ctx.arc(i,d,this.radius,(1+this.options.angle)*Math.PI,a,!1),this.ctx.lineWidth=this.lineWidth,this.ctx.stroke(),this.ctx.strokeStyle=this.options.strokeColor,this.ctx.beginPath(),this.ctx.arc(i,d,this.radius,a,(2-this.options.angle)*Math.PI,!1),this.ctx.stroke(),g=this.gp,h=[],e=0,f=g.length;f>e;e++)c=g[e],h.push(c.update(!0));return h},b}(e),d=function(a){function b(a){this.canvas=a,b.__super__.constructor.call(this),"undefined"!=typeof G_vmlCanvasManager&&(this.canvas=window.G_vmlCanvasManager.initElement(this.canvas)),this.ctx=this.canvas.getContext("2d"),this.setOptions(),this.render()}return r(b,a),b.prototype.lineWidth=15,b.prototype.displayedValue=0,b.prototype.value=33,b.prototype.maxValue=80,b.prototype.minValue=0,b.prototype.options={lineWidth:.1,colorStart:"#6f6ea0",colorStop:"#c0c0db",strokeColor:"#eeeeee",shadowColor:"#d5d5d5",angle:.35},b.prototype.getAngle=function(a){return(1-this.options.angle)*Math.PI+(a-this.minValue)/(this.maxValue-this.minValue)*(2+this.options.angle-(1-this.options.angle))*Math.PI},b.prototype.setOptions=function(a){return null==a&&(a=null),b.__super__.setOptions.call(this,a),this.lineWidth=this.canvas.height*this.options.lineWidth,this.radius=this.canvas.height/2-this.lineWidth/2,this},b.prototype.set=function(a){return this.value=a,this.value>this.maxValue&&(this.maxValue=1.1*this.value),AnimationUpdater.run()},b.prototype.render=function(){var a,b,c,d,e,f;return a=this.getAngle(this.displayedValue),f=this.canvas.width/2,c=this.canvas.height/2,this.textField&&this.textField.render(this),b=this.ctx.createRadialGradient(f,c,39,f,c,70),b.addColorStop(0,this.options.colorStart),b.addColorStop(1,this.options.colorStop),d=this.radius-this.lineWidth/2,e=this.radius+this.lineWidth/2,this.ctx.strokeStyle=this.options.strokeColor,this.ctx.beginPath(),this.ctx.arc(f,c,this.radius,(1-this.options.angle)*Math.PI,(2+this.options.angle)*Math.PI,!1),this.ctx.lineWidth=this.lineWidth,this.ctx.lineCap="round",this.ctx.stroke(),this.ctx.strokeStyle=b,this.ctx.beginPath(),this.ctx.arc(f,c,this.radius,(1-this.options.angle)*Math.PI,a,!1),this.ctx.stroke()},b}(e),f=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return r(b,a),b.prototype.strokeGradient=function(a,b,c,d){var e;return e=this.ctx.createRadialGradient(a,b,c,a,b,d),e.addColorStop(0,this.options.shadowColor),e.addColorStop(.12,this.options._orgStrokeColor),e.addColorStop(.88,this.options._orgStrokeColor),e.addColorStop(1,this.options.shadowColor),e},b.prototype.setOptions=function(a){var c,d,e,f;return null==a&&(a=null),b.__super__.setOptions.call(this,a),f=this.canvas.width/2,c=this.canvas.height/2,d=this.radius-this.lineWidth/2,e=this.radius+this.lineWidth/2,this.options._orgStrokeColor=this.options.strokeColor,this.options.strokeColor=this.strokeGradient(f,c,d,e),this},b}(d),window.AnimationUpdater={elements:[],animId:null,addAll:function(a){var b,c,d,e;for(e=[],c=0,d=a.length;d>c;c++)b=a[c],e.push(AnimationUpdater.elements.push(b));return e},add:function(a){return AnimationUpdater.elements.push(a)},run:function(){var a,b,c,d,e;for(a=!0,e=AnimationUpdater.elements,c=0,d=e.length;d>c;c++)b=e[c],b.update()&&(a=!1);return a?cancelAnimationFrame(AnimationUpdater.animId):AnimationUpdater.animId=requestAnimationFrame(AnimationUpdater.run)}},"function"==typeof window.define&&null!=window.define.amd?define(function(){return{Gauge:g,Donut:f,BaseDonut:d,TextRenderer:i}}):"undefined"!=typeof module&&null!=module.exports?module.exports={Gauge:g,Donut:f,BaseDonut:d,TextRenderer:i}:(window.Gauge=g,window.Donut=f,window.BaseDonut=d,window.TextRenderer=i)}).call(this);
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/levelset.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/levelset.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/levelset.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/levelset.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/link-libs.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/link-libs.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/link-libs.sh	(revision 21239)
@@ -0,0 +1,7 @@
+# Create hard links for lib files
+ln $ISSM_DIR/src/m/enum/EnumDefinitions.js .
+ln $ISSM_DIR/src/m/classes/levelset.js .
+ln $ISSM_DIR/src/m/classes/mask.js .
+ln $ISSM_DIR/src/m/classes/mesh2d.js .
+ln $ISSM_DIR/src/m/classes/mesh3dprisms.js .
+ln $ISSM_DIR/src/m/classes/model.js .
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/mask.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/mask.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/mask.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/mask.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/masstransport.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/masstransport.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/masstransport.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/masstransport.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/matice.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/matice.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/matice.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/matice.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/matlabfunc.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/matlabfunc.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/matlabfunc.js	(revision 21239)
@@ -0,0 +1,62 @@
+function ones(...args) {
+    var array = [];
+    for (var i = 0; i < args[0]; ++i) {
+        array.push(args.length === 1 ? 1 : ones(args.slice(1)));
+    }
+    return array;
+}
+
+function zeros(...args) {
+    var array = [];
+    for (var i = 0; i < args[0]; ++i) {
+        array.push(args.length === 0 ? 1 : ones(args.slice(1)));
+    }
+    return array;
+}
+
+function numel(matrix) { // Assume all rows are the same length
+    return matrix.length * (matrix.constructor === Array ? matrix[0].length : 1);
+}
+
+function ArrayFill2D(arr, value) {
+    for (var i = 0; i < newarr.length; ++i) {
+        for (var j = 0; j < newarr[0].length; ++j) {
+            arr[i][j] = value;
+        }
+    }
+    return arr;
+}
+
+function ArrayFindNot2D(array, value) {
+    var indices = [];
+
+    for (var i = 0; i < array.length; ++i) {
+        for (var j = 0; j < array[0].length; ++j) {
+            if (array[i][j] !== value) {
+                indices.push(array[i][j]);
+            }
+        }
+    }
+
+    return indices;
+}
+
+function ArrayFind2D(array, value) {
+    var indices = [];
+
+    for (var i = 0; i < array.length; ++i) {
+        for (var j = 0; j < array[0].length; ++j) {
+            if (array[i][j] === value) {
+                indices.push(array[i][j]);
+            }
+        }
+    }
+
+    return indices;
+}
+
+function getMatrixWidth(matrix) {
+    return matrix.reduce(function (result, row) {
+        return Math.max(result, row.length);
+    }, 0);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/mesh2d.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/mesh2d.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/mesh2d.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/mesh2d.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/mesh3dprisms.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/mesh3dprisms.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/mesh3dprisms.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/mesh3dprisms.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/model.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/model.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/model.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/model.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/partitioner.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/partitioner.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/partitioner.js	(revision 21239)
@@ -0,0 +1,116 @@
+partitioner = function(md,...args) {
+function zeros(...args) {
+	var array = [];
+	for (var i = 0; i < args[0]; ++i) {
+		array.push(args.length == 1 ? 0 : zeros(args.slice(1)));
+	}
+	return array;
+}
+//PARTITIONER - partition mesh 
+//
+//   List of options to partitioner: 
+//
+//   package: 'chaco', 'metis' or 'scotch'
+//   npart: number of partitions.
+//   weighting: 'on' or 'off': default off
+//   section:  1 by defaults(1=bisection, 2=quadrisection, 3=octasection)
+//   recomputeadjacency:  'on' by default (set to 'off' to compute existing one)
+//   Output: md.qmu.partition recover the partition vector
+//   
+//   Usage:
+//      md=partitioner(md,'package','chaco','npart',100,'weighting','on');
+//
+
+//get options: 
+options= new pairoptions(args.slice());
+
+//set defaults
+options.addfielddefault('package','chaco');
+options.addfielddefault('npart',10);
+options.addfielddefault('weighting','on');
+options.addfielddefault('section',1);
+options.addfielddefault('recomputeadjacency','on');
+
+//get package: 
+package=options.getfieldvalue('package');
+npart=options.getfieldvalue('npart');
+recomputeadjacency=options.getfieldvalue('recomputeadjacency');
+
+if(md.mesh.dimension()===3) {
+	//partitioning essentially happens in 2D. So partition in 2D, then 
+    //extrude the partition vector vertically. 
+	md3d=md; //save  for later
+	md.mesh.elements=md.mesh.elements2d;
+	md.mesh.x=md.mesh.x2d;
+	md.mesh.y=md.mesh.y2d;
+	md.mesh.numberofvertices=md.mesh.numberofvertices2d;
+	md.mesh.numberofelements=md.mesh.numberofelements2d;
+	md.qmu.vertex_weight=[];
+	md.mesh.vertexconnectivity=[];
+}
+
+//adjacency matrix if needed:
+if (recomputeadjacency.toLowerCase() === 'on') {
+	md=adjacency(md);
+} else {
+	disp('skipping adjacency matrix computation as requested in the options');
+}
+
+if (package.toLowerCase() === 'chaco') {
+
+	//  default method (from chaco.m)
+	method=[[1], [1], [0], [0], [1], [1], [50], [0], [.001], [7654321]];
+	method[0]=3;    //  global method (3=inertial (geometric))
+	method[2]=0;    //  vertex weights (0=off, 1=on)
+
+	//specify bisection
+	method[5]=options.getfieldvalue('section');//  ndims (1=bisection, 2=quadrisection, 3=octasection)
+
+    //are we using weights? 
+    if (options.getfieldvalue('weighting').toLowerCase() === 'on') {
+            weights=Math.floor(md.qmu.vertex_weight/math.min(md.qmu.vertex_weight));
+            method[2]=1;
+    } else { 
+        weights=[];
+    }
+
+	//  partition into nparts
+    if (md.mesh.classname() === 'mesh2d') {
+        //TODO convert to column
+		part=Chaco(md.qmu.adjacency,weights,[],md.mesh.x, md.mesh.y,zeros(md.mesh.numberofvertices,1),method,npart,[])+1; //index partitions from 1 up. like metis.
+	} else {
+        //TODO convert to column
+		part=Chaco(md.qmu.adjacency,weights,[],md.mesh.x, md.mesh.y,md.mesh.z,method,npart,[])+1; //index partitions from 1 up. like metis.
+	}
+} else if (package.toLowerCase() === 'scotch') {
+	//are we using weights? 
+    if (options.getfieldvalue('weighting').toLowerCase() === 'on') {
+		weights=floor(md.qmu.vertex_weight/min(md.qmu.vertex_weight));
+	}
+	maptab=Scotch(md.qmu.adjacency,[],weights,[],'cmplt',[npart]);
+
+    part=maptab.filter(function(x, idx) { return idx });//index partitions from 1 up. like metis.
+} else if (package.toLowerCase() === 'linear') {
+
+    part = part.slice(0, md.mesh.numberofvertices);
+} else if (package.toLowerCase() === 'metis') {
+	[element_partitioning,part]=MeshPartition(md.mesh,md.qmu.numberofpartitions);
+} else {
+	console.error(['partitioner error message: could not find ' + package + ' partitioner']);
+	//help partitioner
+}
+
+//extrude if we are in 3d
+if (md.mesh.dimension() === 3) {
+	md3d.qmu.vertex_weight=md.qmu.vertex_weight;
+	md3d.qmu.adjacency=md.qmu.adjacency;
+	md=md3d;
+
+    //TODO convert to column vec
+	part=project3d(md,'vector',part,'type','node');
+}
+
+md.qmu.partition=part;
+
+return md;
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/project2d.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/project2d.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/project2d.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/extrusion/project2d.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/project3d.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/project3d.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/project3d.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/extrusion/project3d.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/qmu.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/qmu.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/qmu.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/qmu.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/stressbalance.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/stressbalance.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/stressbalance.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/stressbalance.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/supportedcontrols.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/supportedcontrols.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/supportedcontrols.js	(revision 21239)
@@ -0,0 +1,16 @@
+function supportedcontrols() {
+    var list = [
+        'BalancethicknessThickeningRate',
+        'FrictionCoefficient',
+        'FrictionAs',
+        'MaterialsRheologyBbar',
+        'DamageDbar',
+        'Vx',
+        'Vy',
+        'Thickness',
+        'BalancethicknessOmega',
+        'BalancethicknessApparentMassbalance',
+        'MaterialsRheologyB'];
+
+    return list;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/supportedcostfunctions.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/supportedcostfunctions.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/supportedcostfunctions.js	(revision 21239)
@@ -0,0 +1,10 @@
+function supportedcostfunctions() {
+    function range(start, count) {
+      return Array.apply(0, Array(count))
+        .map(function (element, index) { 
+          return index + start;  
+      });
+    }
+    var list = range(101,5).concat(range(201,1).concat(range(501,7)).concat(range(510,1)).concat(range(601,4)));
+    return list;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/thermal.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/thermal.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/lib/bin/thermal.js	(revision 21239)
@@ -0,0 +1,1 @@
+link /home/andy/Programming/Research/trunk-jpl/src/m/classes/thermal.js
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/package.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/package.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/package.json	(revision 21239)
@@ -0,0 +1,16 @@
+{
+  "devDependencies": {
+    "jquery": "^3.0.0",
+    "karma": "^0.13.22",
+    "karma-chrome-launcher": "^1.0.1",
+    "karma-firefox-launcher": "^1.0.0",
+    "karma-jasmine": "^1.0.2",
+    "karma-jasmine-jquery": "^0.1.1",
+    "karma-junit-reporter": "^1.0.0",
+    "karma-phantomjs-launcher": "^1.0.1",
+    "karma-requirejs": "^1.0.0",
+    "mathjs": "^3.2.1",
+    "phantomjs-prebuilt": "^2.1.7",
+    "requirejs": "^2.2.0"
+  }
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/m2js.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/m2js.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/m2js.sh	(revision 21239)
@@ -0,0 +1,101 @@
+#!/bin/bash
+
+# Translates trivial ISSM tests from MATLAB to JavaScript
+
+for INFILE in "$@"; do
+    if ! [[ $INFILE == *.m ]]; then
+        echo "Error: Invalid input file detected. Only MATLAB files are accepted as input."
+        echo "Instead, found $INFILE."
+        echo "Exiting..."
+        exit
+    fi
+
+    OUTFILE=$(dirname $INFILE)/$(basename $INFILE .m).js
+    cp $INFILE $OUTFILE
+
+    printf "Translating to $OUTFILE..."
+    TRIANGLEMODELPATH=$(grep '^.*triangle.*' $OUTFILE | awk -F "," '{print $(NF-1)}' | cut -d ')' -f 1)
+
+    if [[ -n $TRIANGLEMODELPATH ]]; then
+        TRIANGLEMODEL=$(basename $TRIANGLEMODELPATH | sed 's/\..*//' | tr A-Z a-z)
+        TRIANGLEVAL=$(grep '^.*triangle.*' $OUTFILE | awk -F "," '{print $NF}' | cut -d ')' -f 1)
+        sed -i "s/\s*triangle.*/triangle(md,$TRIANGLEMODEL[0],$TRIANGLEVAL);/" $OUTFILE # triangle statement
+    fi
+
+
+    sed -i 's/.*setmask\(.*\)/setmask\1/' $OUTFILE # setmask
+
+    sed -i 's:%://:g' $OUTFILE # comments
+    sed -i 's/{/[/g' $OUTFILE # left curly brace to bracket
+    sed -i 's/}/]/g' $OUTFILE # right curly brace to bracket
+
+
+    sed -i 's/.*parameterize.*/parameterize(md);/' $OUTFILE # parameterize
+    sed -i 's/^.*\(extrude\)\(.*\)/md\.\1\2/' $OUTFILE # extrude
+
+    sed -i '/.*solve.*/! s/^md\s*=\s*//' $OUTFILE # remove md= unless it calls solve
+
+    sed -i 's:^md\.cluster=generic.*://&:' $OUTFILE # comment out oshostname
+
+    sed -i 'N;s/\.\.\.//g' $OUTFILE # JavaScript lets you have multiline statments without explicit indicators
+
+    sed -i 's/md\.results\..*Solution/&[0]/' $OUTFILE # actual results are stored in the 0th index of the solution
+
+    sed -i 's/\(.*\)(:)\s*=\s*\([^;]*\);$/for (var i = 0; i < \1.length; ++i) {\n\t\1[i] = \2;\n}/' $OUTFILE
+
+    sed -i 's/\(.*\)(\([0-9]*\):\([0-9]*\))\s*=\s*\([^;]*\)/for (var i = \2; i < \3; ++i) {\n\t\1[i] = \4\n}/' $OUTFILE
+
+    sed -i 's/\(.*\)\s*=\s*find(\(.*\))/\1=[];\nfor (var i = 0; i < \2.length; ++i) {\n\tif (\2[i] !== 0)\n\t\t\1.push(i);\n}/' $OUTFILE # matlab's find creates an array of the indices with nonzero elements
+
+    sed -i 's/[^%]*if\s\(.*\)$/if (\1) {/' $OUTFILE #if statement
+    sed -i 's/else/} & {/' $OUTFILE #else
+
+    sed -i 's/end/}/' $OUTFILE #closing block
+
+    if grep 'zeros(.*)' $OUTFILE; then
+        sed -i '2s/^/function zeros(...args) {\n\tvar array = [];\n\tfor (var i = 0; i < args[0]; ++i) {\n\t\tarray.push(args.length == 1 ? 0 : zeros(args.slice(1)));\n\t}\n\treturn array;\n}\nvar md = new model();\n/' $OUTFILE
+    fi # include zeros function to generate matrices of zeros
+
+
+    #sed -i "s/\([^']\)NaN\([^']\)/\1null\2/g" $OUTFILE # NaN translates to null
+
+    sed -i 's/function\s\(.*\)\s*=\s*\(.*\)(\(.*\)/this.\2 = function(\3)/' $OUTFILE
+
+    sed -i 's/(self,*\(.*\))/(\1)/' $OUTFILE
+
+    sed -i 's/classdef\s*\(.*\)/function \1() {/' $OUTFILE # Classes not in javascript - implemented as functions
+
+    sed -i 's/properties (\(.*\))/\/\/properties (\1)/' $OUTFILE #properties block
+    sed -i 's/^\(\s*\)methods.*/\1\/\/&/' $OUTFILE #methods block declaraion
+
+    sed -i 's/md\s*=\s*checkfield\(.*\)/checkfield\1/' $OUTFILE #checkfield
+
+    sed -i 's/\(\s*\)error(/\1console.error(/' $OUTFILE #error -> console.error
+
+    sed -i 's/switch \(.*\)/switch(\1) {/' $OUTFILE # switch statement
+    sed -i 's/case \(.*\)/&:/' $OUTFILE # case x
+    sed -i '$!N;/switch/!s/\n\s*case .*$/break\;&/;P;D' $OUTFILE
+    sed -i 's/otherwise/default:/' $OUTFILE # default case
+    sed -i '$!N;s/\n\s*default:\s*$/break\;&/;P;D' $OUTFILE # add break before default case
+    sed -i 'N;s/\(\s*\)\(.*\)break\;/\1\2\n\1break\;/' $OUTFILE # make break its own line
+
+    perl -i -pe 's/(varargin\[)(\d+)/$1.($2-1)/e' $OUTFILE # matlab starts its indices at 1, javascript at 0
+
+    sed -i 's/self/this/g' $OUTFILE # self -> this
+    sed -i 's/md\.transient/md.trans/g' $OUTFILE # self -> this
+
+    sed -i 's/function(\([^ ]*\))/function(\1) {/' $OUTFILE
+
+    #sed -i 's/\(\d+\)\^\(\d+\)/Math.pow(\1,\2)/' $OUTFILE
+    sed -i 's/\([0-9]*\)\^\([0-9]*\)/Math.pow(\1,\2)/g' $OUTFILE
+
+    #if [[ $OUTFILE == test*.js ]]; then
+    sed -i '2s/^/var md = new model();\n/' $OUTFILE # initialize the model
+    #fi
+
+    #sed -i 'N;s/properties.*\n\s*\(.*\)\(\s*\)=\s*\(.*\)/this/' $OUTFILE
+
+    #zeros - make it work for all args
+    #power function (10+5^-10)
+    printf "completed.\n"
+done
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/reload-tests.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/reload-tests.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/reload-tests.sh	(revision 21239)
@@ -0,0 +1,2 @@
+# Create hard links for tests
+ln $ISSM_DIR/test/NightlyRun/*.js .
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/run-server.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/run-server.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/run-server.sh	(revision 21239)
@@ -0,0 +1,3 @@
+# Run a file server for serving the tests
+PORT="${1:-8081}"
+python2.7 -m SimpleHTTPServer $PORT
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/runme.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/runme.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/runme.js	(revision 21239)
@@ -0,0 +1,18 @@
+$(document).ready(function() {
+    $.ajaxSetup({
+        cache: true
+    });
+
+    var PORT=8080;
+    var tests = [];
+
+    for (var i = 101; i < 109; ++i) {
+        tests.push(i);
+    }
+
+    $.each(tests, function(i, v) {
+        $.getScript('http://localhost:'+PORT+'/test'+v+'.js', function(src, status) {
+            console.log('='.repeat(30));
+        });
+    });
+});
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/runscript.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/runscript.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/runscript.js	(revision 21239)
@@ -0,0 +1,53 @@
+$(document).ready(function() {
+    $.ajaxSetup({
+        cache: true
+    });
+
+    var PORT=8081;
+    var tests = []; //last test to check
+
+    // Adding translated tests to array. Hardcoded for now.
+    for (var i = 101; i < 109; ++i) {
+        tests.push(i);
+    }
+
+    for (var i = 111; i < 115; ++i) {
+        tests.push(i);
+    }
+
+    for (var i = 201; i < 209; ++i) {
+        tests.push(i);
+    }
+
+
+    $.each(tests, function(i, v) {
+        var btn = $('<input type="button" class="btn btn-primary" value="test'+v+'" id="test'+v+'"/>');
+        $(".btn-container").append(btn);
+    });
+
+    $("[id^=test]").each(function () {
+        $(this).click(function () {
+            $('#debug').empty();
+            var id = this.id.replace(/[^\d]/g, ''); 
+            $.getScript('http://localhost:'+PORT+'/test'+id+'.js', function(src, status) {
+                console.log('='.repeat(30));
+                console.log('Status: ' + status);
+                console.log('Script executed: test' + id + '.js');
+            });
+        });
+    });
+
+    //Show console log in div
+    if (typeof console  != "undefined") 
+        if (typeof console.log != 'undefined')
+            console.olog = console.log;
+    else
+        console.olog = function() {};
+
+    console.log = function(message) {
+        console.olog(message);
+        $('#debug').append('<p>' + message + '</p>');
+    };
+
+    console.error = console.debug = console.info =  console.log;
+});
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/specs/generate-spec.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/specs/generate-spec.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/specs/generate-spec.sh	(revision 21239)
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+if [ -z $1 ]; then
+        echo "Usage: $0 [NUMBER[-NUMBER]][,NUMBER[-NUMBER]]..."
+        exit 1
+fi
+
+# Create array to store numbers of the tests
+TESTNUMBERS=()
+
+# Location of test scripts
+SCRIPTDIR=$ISSM_DIR/jenkins/javascript/karma/scripts
+
+OLDIFS=$IFS
+IFS=, # Overwrite the in-field-separator to detect ranges of numbers as numbers separated by commas
+
+# Add the test numbers to the array
+for range in $1; do
+    if [[ ! "$range" =~ "-" ]]; then # check if it is a range of numbers or just a single number
+        if [ ! -f "$SCRIPTDIR/test$range.js" ]; then
+            >&2 echo "Warning: test$num.js does not exist."
+        else
+            TESTNUMBERS+=($range)
+        fi
+    else
+        SEQUENCE=($(seq -w -s ' ' $(sed "s/-/$IFS/" <<< ${range})))
+
+        IFS=' '
+        for num in ${SEQUENCE[@]}; do
+            if [ ! -f "$SCRIPTDIR/test$num.js" ]; then
+                >&2 echo "Warning: test$num.js does not exist."
+            fi
+        done
+
+        TESTNUMBERS=("${TESTNUMBERS[@]}" "${SEQUENCE[@]}")
+    fi
+done
+
+IFS=$OLDIFS # Reset the in-field-separator
+
+# Include necessary functions and constants
+cat << EOF
+window.jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; // Change timeout for Jasmine tests
+var AJAX_TIMEOUT = 5000;
+function onAjaxSuccess(data, status, jqxhr) {
+    console.log("Success");
+}
+function onAjaxError(jqxhr, status, err) {
+    console.log("Unexpected error: " + err);
+}
+EOF
+
+# Create stubs for individual tests
+for num in ${TESTNUMBERS[@]}; do
+cat  << EOF
+describe("test$num", function() {
+    it("contains test$num", function(done) {
+        $.ajax({
+            url: 'http://localhost:8080/test$num.js',
+            dataType: 'script',
+            success: onAjaxSuccess,
+            error: onAjaxError,
+            complete: function(jqxhr, status) { done(); },
+            timeout: AJAX_TIMEOUT
+        });
+    });
+});
+EOF
+done
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/specs/issm-ajax.spec.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/specs/issm-ajax.spec.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/specs/issm-ajax.spec.js	(revision 21239)
@@ -0,0 +1,23 @@
+window.jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; // Change timeout for Jasmine tests
+var AJAX_TIMEOUT = 5000;
+
+function onAjaxSuccess(data, status, jqxhr) {
+    console.log("Success");
+}
+
+function onAjaxError(jqxhr, status, err) {
+    console.log("Unexpected error: " + err);
+}
+
+describe("test101", function() {
+    it("contains test101", function(done) {
+        $.ajax({
+            url: 'http://localhost:8080/test101.js',
+            dataType: 'script',
+            success: onAjaxSuccess,
+            error: onAjaxError,
+            complete: function(jqxhr, status) { done(); },
+            timeout: AJAX_TIMEOUT
+        });
+    });
+});
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/specs/issm.spec.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/specs/issm.spec.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/specs/issm.spec.js	(revision 21239)
@@ -0,0 +1,217 @@
+//var json:any;
+it("should load a fixture", function () {
+    jasmine.getFixtures().fixturesPath = "base/Archives/"
+    var f = readFixtures("Archive101.json");
+    var json = JSON.parse(f);
+    expect(json).toBeDefined();
+    //console.log(json);
+});
+
+describe("test101", function() {
+    it("contains test101", function() {
+        console.log('creating model'); 
+        var md = new model();
+
+        console.log('meshing');
+        triangle(md,square[0],40000); 
+
+        console.log('parameterization');
+        setmask(md,'all','');
+        parameterize(md);
+        setflowequation(md,'SSA','all');
+        md.verbose.solution=2;  md.verbose.convergence=0;
+
+        console.log("MESH");
+        console.log(md.mesh.domaintype());
+
+        md=solve(md,StressbalanceSolutionEnum(),'checkconsistency','no');
+
+        console.log(md.results['StressbalanceSolution'][0]['Vel']);
+    });
+})
+
+//describe("test105", function() {
+    //it("contains test105", function() {
+        ////Test Name: SquareShelfConstrainedMasstransp2d
+        //var md = new model();
+        //triangle(md,square[0],150000.);
+        //setmask(md,'all','');
+        //parameterize(md);
+        //setflowequation(md,'SSA','all');
+        ////md.cluster=generic('name',oshostname(),'np',3);
+        //md=solve(md,MasstransportSolutionEnum());
+
+        ////Fields and tolerances to track changes
+        //field_names     =['Thickness'];
+        //field_tolerances=[1e-13];
+        //field_values=[
+            //(md.results.MasstransportSolution[0].Thickness),
+            //];
+    //});
+//})
+
+//describe("test110", function() {
+    //it("contains test110", function() {
+        ////Test Name: SquareShelfConstrainedTranSSA2d
+        //var md = new model();
+        //triangle(md,square[0],150000.);
+        //setmask(md,'all','');
+        //parameterize(md);
+        //setflowequation(md,'SSA','all');
+        ////md.cluster=generic('name',oshostname(),'np',3);
+        //md.trans.requested_outputs=['IceVolume'];
+
+        //md=solve(md,TransientSolutionEnum());
+
+        ////Fields and tolerances to track changes
+        //field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Volume3'];
+        //field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+            //1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+        //1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+        //field_values=[
+            //(md.results.TransientSolution[0](1).Vx),
+            //(md.results.TransientSolution[0](1).Vy),
+            //(md.results.TransientSolution[0](1).Vel),
+            //(md.results.TransientSolution[0](1).Pressure),
+            //(md.results.TransientSolution[0](1).Base),
+            //(md.results.TransientSolution[0](1).Surface),
+            //(md.results.TransientSolution[0](1).Thickness),
+            //(md.results.TransientSolution[0](1).IceVolume),
+            //(md.results.TransientSolution[0](2).Vx),
+            //(md.results.TransientSolution[0](2).Vy),
+            //(md.results.TransientSolution[0](2).Vel),
+            //(md.results.TransientSolution[0](2).Pressure),
+            //(md.results.TransientSolution[0](2).Base),
+            //(md.results.TransientSolution[0](2).Surface),
+            //(md.results.TransientSolution[0](2).Thickness),
+            //(md.results.TransientSolution[0](2).IceVolume),
+            //(md.results.TransientSolution[0](3).Vx),
+            //(md.results.TransientSolution[0](3).Vy),
+            //(md.results.TransientSolution[0](3).Vel),
+            //(md.results.TransientSolution[0](3).Pressure),
+            //(md.results.TransientSolution[0](3).Base),
+            //(md.results.TransientSolution[0](3).Surface),
+            //(md.results.TransientSolution[0](3).Thickness),
+            //(md.results.TransientSolution[0](3).IceVolume),
+        //];
+    //});
+//})
+
+//describe("test112", function() {
+    //it("contains test112", function() {
+        ////Test Name: SquareShelfConstrainedSurfSlop2d
+        //var md = new model();
+        //triangle(md,square[0],150000.);
+        //setmask(md,'all','');
+        //parameterize(md);
+        //setflowequation(md,'SSA','all');
+        ////md.cluster=generic('name',oshostname(),'np',3);
+        //md=solve(md,SurfaceSlopeSolutionEnum());
+
+        ////Fields and tolerances to track changes
+        //field_names     =['SurfaceSlopeX','SurfaceSlopeY'];
+        //field_tolerances=[1e-13,1e-13];
+        //field_values=[
+            //(md.results.SurfaceSlopeSolution[0].SurfaceSlopeX),
+            //(md.results.SurfaceSlopeSolution[0].SurfaceSlopeY),
+        //];
+    //});
+//})
+
+//describe("test114", function() {
+    //it("contains test114", function() {
+        ////Test Name: SquareShelfConstrainedBedSlop2d
+        //var md = new model();
+        //triangle(md,square[0],150000.);
+        //setmask(md,'all','');
+        //parameterize(md);
+        //setflowequation(md,'SSA','all');
+        ////md.cluster=generic('name',oshostname(),'np',3);
+        //md=solve(md,BedSlopeSolutionEnum());
+
+        ////Fields and tolerances to track changes
+        //field_names     =['BedSlopeX','BedSlopeY'];
+        //field_tolerances=[1e-13,1e-13];
+        //field_values=[
+            //(md.results.BedSlopeSolution[0].BedSlopeX),
+            //(md.results.BedSlopeSolution[0].BedSlopeY),
+        //];
+    //});
+//})
+
+//describe("test201", function() {
+    //it("contains test201", function() {
+        ////Test Name: SquareShelfStressSSA2d
+        //var md = new model();
+        //triangle(md,square[0],150000.);
+        //setmask(md,'all','');
+        //parameterize(md);
+        //setflowequation(md,'SSA','all');
+        ////md.cluster=generic('name',oshostname(),'np',3);
+        //md=solve(md,StressbalanceSolutionEnum());
+
+        ////Fields and tolerances to track changes
+        //field_names     =['Vx','Vy','Vel','Pressure'];
+        //field_tolerances=[1e-13,1e-13,1e-13,1e-13];
+        //field_values=[
+            //(md.results.StressbalanceSolution[0].Vx),
+            //(md.results.StressbalanceSolution[0].Vy),
+            //(md.results.StressbalanceSolution[0].Vel),
+            //(md.results.StressbalanceSolution[0].Pressure),
+        //];
+    //});
+//})
+
+//describe("test208", function() {
+    //it("contains test208", function() {
+        ////Test Name: SquareShelfTranSSA2d
+        //var md = new model();
+        //triangle(md,square[0],150000.);
+        //setmask(md,'all','');
+        //parameterize(md);
+        //setflowequation(md,'SSA','all');
+        ////md.cluster=generic('name',oshostname(),'np',3);
+        //md.trans.requested_outputs=['default','FloatingArea','GroundedArea','TotalGroundedBmb','TotalFloatingBmb'];
+        //for (var i = 0; i < md.basalforcings.floatingice_melting_rate.length; ++i) {
+            //md.basalforcings.floatingice_melting_rate[i] = 1;
+        //}
+        //md=solve(md,TransientSolutionEnum());
+
+        ////Fields and tolerances to track changes
+        //field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','TotalGroundedBmb1','TotalFloatingBmb1',
+            //'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','TotalGroundedBmb2','TotalFloatingBmb2',
+        //'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','TotalGroundedBmb3','TotalFloatingBmb3'];
+        //field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+            //1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+        //1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+        //field_values=[
+            //(md.results.TransientSolution[0](1).Vx),
+            //(md.results.TransientSolution[0](1).Vy),
+            //(md.results.TransientSolution[0](1).Vel),
+            //(md.results.TransientSolution[0](1).Pressure),
+            //(md.results.TransientSolution[0](1).Base),
+            //(md.results.TransientSolution[0](1).Surface),
+            //(md.results.TransientSolution[0](1).Thickness),
+            //(md.results.TransientSolution[0](1).TotalGroundedBmb),
+            //(md.results.TransientSolution[0](1).TotalFloatingBmb),
+            //(md.results.TransientSolution[0](2).Vx),
+            //(md.results.TransientSolution[0](2).Vy),
+            //(md.results.TransientSolution[0](2).Vel),
+            //(md.results.TransientSolution[0](2).Pressure),
+            //(md.results.TransientSolution[0](2).Base),
+            //(md.results.TransientSolution[0](2).Surface),
+            //(md.results.TransientSolution[0](2).Thickness),
+            //(md.results.TransientSolution[0](2).TotalGroundedBmb),
+            //(md.results.TransientSolution[0](2).TotalFloatingBmb),
+            //(md.results.TransientSolution[0](3).Vx),
+            //(md.results.TransientSolution[0](3).Vy),
+            //(md.results.TransientSolution[0](3).Vel),
+            //(md.results.TransientSolution[0](3).Pressure),
+            //(md.results.TransientSolution[0](3).Base),
+            //(md.results.TransientSolution[0](3).Surface),
+            //(md.results.TransientSolution[0](3).Thickness),
+            //(md.results.TransientSolution[0](3).TotalGroundedBmb),
+            //(md.results.TransientSolution[0](3).TotalFloatingBmb),
+        //];
+    //});
+//})
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/test231.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/test231.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/test231.js	(revision 21239)
@@ -0,0 +1,73 @@
+//Test Name: SquareShelfTranForcePos3d
+var md = new model();
+triangle(md,square[0],350000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+//Set up transient
+smb=ones(md.mesh.numberofvertices,1);
+for (var i = 0; i < smb.length; ++i) {
+    smb[i][0] *= 3.6;
+    smb[i].push(smb[i][0]*2);
+}
+
+md.smb.mass_balance=smb.slice();
+md.smb.mass_balance[md.smb.mass_balance.length-1] = [1.5, 3.];
+md.trans.isthermal=0;
+
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', 
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).SmbMassBalance),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).SmbMassBalance),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).SmbMassBalance),
+	(md.results.TransientSolution[0](4).Vx),
+	(md.results.TransientSolution[0](4).Vy),
+	(md.results.TransientSolution[0](4).Vz),
+	(md.results.TransientSolution[0](4).Vel),
+	(md.results.TransientSolution[0](4).Pressure),
+	(md.results.TransientSolution[0](4).Base),
+	(md.results.TransientSolution[0](4).Surface),
+	(md.results.TransientSolution[0](4).Thickness),
+	(md.results.TransientSolution[0](4).SmbMassBalance),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/test232.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/test232.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/test232.js	(revision 21239)
@@ -0,0 +1,31 @@
+//Test Name: SquareShelfTherTranForcTemp
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.thermal.spctemperature=[[md.thermal.spctemperature, md.thermal.spctemperature+5., md.thermal.spctemperature+10., md.thermal.spctemperature+15.], [1.5, 2.5, 3.5, 4.]];
+md.timestepping.time_step=1;
+md.timestepping.final_time=4;
+md.trans.isstressbalance=0;
+md.trans.ismasstransport=0;
+md.trans.issmb=1;
+md.trans.isthermal=1;
+md.trans.isgroundingline=0;
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Temperature1','BasalforcingsGroundediceMeltingRate1','Temperature2','BasalforcingsGroundediceMeltingRate2','Temperature3','BasalforcingsGroundediceMeltingRate3','Temperature4','BasalforcingsGroundediceMeltingRate4'];
+field_tolerances=[1e-13,1e-6,1e-13,1e-6,1e-13,1e-6,1e-13,1e-6];
+field_values=[
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](4).Temperature),
+	(md.results.TransientSolution[0](4).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/test233.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/test233.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/test233.js	(revision 21239)
@@ -0,0 +1,64 @@
+//Test Name: SquareShelfTranHOForcTemp
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.thermal.spctemperature=[[md.thermal.spctemperature, md.thermal.spctemperature+5.], [1., 2.]];
+md.timestepping.time_step=0.5;
+md.timestepping.final_time=2.;
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3', 
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','Temperature4','BasalforcingsGroundediceMeltingRate4'];
+field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09, 
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, 
+	1e-08,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, 
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](4).Vx),
+	(md.results.TransientSolution[0](4).Vy),
+	(md.results.TransientSolution[0](4).Vz),
+	(md.results.TransientSolution[0](4).Vel),
+	(md.results.TransientSolution[0](4).Pressure),
+	(md.results.TransientSolution[0](4).Base),
+	(md.results.TransientSolution[0](4).Surface),
+	(md.results.TransientSolution[0](4).Thickness),
+	(md.results.TransientSolution[0](4).Temperature),
+	(md.results.TransientSolution[0](4).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/test234.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/test234.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/scripts/test234.js	(revision 21239)
@@ -0,0 +1,93 @@
+//Test Name: SquareShelfTranForceNeg2dDakotaSamp
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+smb=ones(md.mesh.numberofvertices,1);
+for (var i = 0; i < smb.length; ++i) {
+    smb[i][0] *= 3.6;
+    smb[i].push(smb[i][0]*-1);
+}
+
+md.smb.mass_balance= smb.slice();
+md.smb.mass_balance[md.smb.mass_balance.length-1] = [1.5, 3.];
+md.trans.isthermal=0;
+//Dakota options
+
+//dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version.toString().slice(0,2);
+
+//partitioning
+md.qmu.numberofpartitions=20;
+partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');
+md.qmu.partition=md.qmu.partition-1;
+
+//variables
+md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,0.1);
+
+//responses
+md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.IceVolume=response_function('IceVolume',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux1=response_function('indexed_MassFlux_1',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux2=response_function('indexed_MassFlux_2',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux3=response_function('indexed_MassFlux_3',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux4=response_function('indexed_MassFlux_4',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux5=response_function('indexed_MassFlux_5',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.massFlux6=response_function('indexed_MassFlux_6',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+
+//mass flux profiles
+md.qmu.mass_flux_profiles=['../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp'];
+md.qmu.mass_flux_profile_directory=pwd;
+
+////  nond_sampling study
+md.qmu.method=dakota_method('nond_samp');
+md.qmu.method[md.qmu.method.length-1]=dmeth_params_set(md.qmu.method[md.qmu.method.length-1],'seed',1234,'samples',20,'sample_type','lhs');
+dver=textscan(IssmConfig('_DAKOTA_VERSION_'),'//[0123456789].//[0123456789].//[0123456789]');
+if (((str2num(dver[1][1])==4 && str2num(dver[2][1])>2) || str2num(dver[1][1])>4)) {
+	md.qmu.method[md.qmu.method.length-1]=dmeth_params_set(md.qmu.method(end),'rng','rnum2');
+}
+
+//parameters
+md.qmu.params.direct=true;
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.tabular_graphics_data=true;
+md.qmu.isdakota=1;
+
+if (version>=6) {
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+} else {
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+}
+
+
+md.stressbalance.reltol=Math.pow(10,-5); //tighten for qmu analyses
+md.trans.requested_outputs=['IceVolume'];
+
+//solve
+md=solve(md,'Transient','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+//Fields and tolerances to track changes
+md.results.dakota.moments=[];
+for (var i = 0; i < 8; ++i) {
+	md.results.dakota.moments.push(md.results.dakota.dresp_out[i].mean);
+}
+for (var i = 0; i < 8; ++i) {
+	md.results.dakota.moments.push(md.results.dakota.dresp_out[i].stddev);
+}
+field_names     =['moments'];
+field_tolerances=[1e-11];
+field_values=[
+         md.results.dakota.moments,
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/spec/support/jasmine.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/spec/support/jasmine.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/javascript/karma/spec/support/jasmine.json	(revision 21239)
@@ -0,0 +1,11 @@
+{
+  "spec_dir": "spec",
+  "spec_files": [
+    "**/*[sS]pec.js"
+  ],
+  "helpers": [
+    "helpers/**/*.js"
+  ],
+  "stopSpecOnExpectationFailure": false,
+  "random": false
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/jenkins.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/jenkins.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/jenkins.sh	(revision 21239)
@@ -0,0 +1,486 @@
+#!/bin/bash
+#This bash script calls the nightlyrun.m matlab file to run our nightly test decks. 
+#It then processes the results and sends an email to the Ice developpers.
+
+echo "Cleaning up execution directory"
+rm -rf $ISSM_DIR/execution/*
+rm -rf $ISSM_DIR/nightlylog
+mkdir  $ISSM_DIR/nightlylog
+
+#Server URI
+SERVER='https://ross.ics.uci.edu:8080'
+
+#Get configuration
+#Source config file{{{
+if [ $# -ne 1 ];
+then
+	#no config file specified: exit
+	echo "no config file specified. Exiting..." >&2 # Error message to stderr.
+	exit 1
+fi
+if [ ! -f "$1" ]
+then
+	echo "File $1 not found!" >&2   # Error message to stderr.
+	exit 1
+fi 
+
+#Defaults (to avoid -eq: unary operator expected)
+EXAMPLES_TEST=0
+MATLAB_TEST=0
+PYTHON_TEST=0
+
+#source configuration script
+source $1;
+#}}}
+#Get Operating system (OS) name{{{
+OS=$(uname -s)
+if [[ $OS == CYGWIN* ]]; then 
+	OS="win";
+fi
+#}}}
+
+#Install ISSM
+#Determinig Installation type depending on svn changes{{{
+echo "======================================================";
+echo "             Determining Installation type            "
+echo "======================================================";
+if [ -a $ISSM_DIR/svn_revision_old ]
+then
+	SVN_PREVIOUS=$(cat $ISSM_DIR/svn_revision_old)
+	SVN_CURRENT=$SVN_REVISION_1
+	echo "Previous revision number: $SVN_PREVIOUS"
+	echo "Current  revision number: $SVN_CURRENT"
+
+	#Get changes from jenkins itself (svn requires credentials)
+	rm -rf changes
+	wget $SERVER/job/$JOB_NAME/$BUILD_NUMBER/changes > /dev/null 2>&1
+
+	#Process html page and get the list of files that has changed (tricky...)
+	#cat changes | grep '="The file was modified"' | sed -e 's/.*<\/td><td><a>\(.*\)<\/a><\/td><td>.*/\1/' > $ISSM_DIR/TEMP
+	cat changes | grep 'document_edit' |sed -e 's/document_edit.png/document_edit.png\
+		/g' | sed -e 's/.*<\/a><\/td><td>\(.*\)<\/td><\/tr>.*/\1/' | grep -v 'document_edit.png' > $ISSM_DIR/TEMP
+
+	#Print list of files
+	echo "   "
+	echo "List of updated files"
+	cat $ISSM_DIR/TEMP
+	echo "   "
+
+	#Do we need to reinstall externalpackages?
+	echo "Determining installation type"
+	if [ ! -z "$(cat $ISSM_DIR/TEMP | grep externalpackages)" ] ; then
+		echo "  -- checking for changed externalpackages... yes";
+		ISSM_EXTERNALPACKAGES="yes"
+	else
+		echo "  -- checking for changed externalpackages... no";
+		ISSM_EXTERNALPACKAGES="no"
+	fi
+
+	#Do we need to reconfigure
+	if [ ! -z "$(cat $ISSM_DIR/TEMP | grep -e "Makefile.am" -e "m4" )" ] ||
+		[ ! -f "$ISSM_DIR/bin/issm.exe" ] ||
+		[ "$ISSM_EXTERNALPACKAGES" == "yes" ] ;
+	then
+		echo "  -- checking for reconfiguration... yes";
+		ISSM_RECONFIGURE="yes"
+	else
+		echo "  -- checking for reconfiguration... no";
+		ISSM_RECONFIGURE="no"
+	fi
+
+	#Do we need to recompile
+	if [ ! -z "$(cat $ISSM_DIR/TEMP | grep -e "\.cpp" -e "\.h" )" ] ||
+		[ "$ISSM_RECONFIGURE" == "yes" ] ;
+	then
+		echo "  -- checking for recompilation... yes";
+		ISSM_COMPILATION="yes"
+	else
+		echo "  -- checking for recompilation... no";
+		ISSM_COMPILATION="no"
+	fi
+	#ISSM_COMPILATION="yes"
+
+else
+	echo "Previous revision not found, this must be a fresh install"
+	echo "  -- checking for changed externalpackages... yes";
+	echo "  -- checking for reconfiguration... yes";
+	echo "  -- checking for recompilation... yes";
+	ISSM_EXTERNALPACKAGES="yes"
+	ISSM_RECONFIGURE="yes"
+	ISSM_COMPILATION="yes"
+fi
+echo " "
+echo "Recording current svn version: $SVN_REVISION_1"
+echo $SVN_REVISION_1 > $ISSM_DIR/svn_revision_old
+#}}}
+#Install external packages    (ISSM_EXTERNALPACKAGES){{{
+
+#number of packages: 
+NUMPACKAGES=$(($(echo $EXTERNALPACKAGES | wc -w )/2))
+
+#Jenkins xml files for individual packages
+EXTERNAL_TEST_FILE="$ISSM_DIR/nightlylog/results/external.xml"
+mkdir -p $ISSM_DIR/nightlylog/results
+echo "<testsuite tests=\"$NUMPACKAGES\">" > $EXTERNAL_TEST_FILE
+
+# Need a source here for when builds start midway through installation of 
+# externalpackages.
+source $ISSM_DIR/etc/environment.sh
+
+EXTERNALPACKAGES_FAILED=0;
+
+for ((i=1;i<=$NUMPACKAGES;i++))
+do
+	NUM1=$((2*$i-1))
+	NUM2=$((2*$i))
+	PACKAGENAME=$(echo $EXTERNALPACKAGES | cut -d " " -f $NUM1-$NUM1)
+	PACKAGEINST=$(echo $EXTERNALPACKAGES | cut -d " " -f $NUM2-$NUM2)
+
+	cd $ISSM_DIR/externalpackages/$PACKAGENAME
+
+	#install if requested or if previous install has not been successful
+	if [ "$ISSM_EXTERNALPACKAGES" == "yes" ] || [ ! -d ./install ] || [ ! "$(ls -A ./install)" ]; then
+		echo "======================================================";
+		echo "       Installing $PACKAGENAME                        ";
+		echo "======================================================";
+
+		./$PACKAGEINST &> compil.log
+		if [ $? -ne 0 ]; then
+			echo "======================================================";
+			echo "    ERROR: installation of $PACKAGENAME failed        ";
+			echo "======================================================";
+			echo "<testcase classname=\"externalpackages\" name=\"$PACKAGENAME\">" >> $EXTERNAL_TEST_FILE
+			echo '<failure message="failure">External packages did not install right. Check it.' >> $EXTERNAL_TEST_FILE
+			cat compil.log >> $EXTERNAL_TEST_FILE
+			echo '</failure>' >> $EXTERNAL_TEST_FILE
+			echo '</testcase>' >> $EXTERNAL_TEST_FILE
+			EXTERNALPACKAGES_FAILED=1;
+		else
+			echo "<testcase classname=\"externalpackages\" name=\"$PACKAGENAME\"/>" >> $EXTERNAL_TEST_FILE
+		fi
+		source $ISSM_DIR/etc/environment.sh
+
+		#If external package is rebuilt, we also need to recompile
+		ISSM_RECONFIGURE="yes"
+		ISSM_COMPILATION="yes"
+	else
+		echo "======================================================";
+		echo "       Skipping $PACKAGENAME                          ";
+		echo "======================================================";
+		echo "<testcase classname=\"externalpackages\" name=\"$PACKAGENAME\"/>" >> $EXTERNAL_TEST_FILE
+	fi
+done
+echo '</testsuite>' >> $EXTERNAL_TEST_FILE
+
+if [ $EXTERNALPACKAGES_FAILED -eq 1 ]; then
+	echo "===================================================================================================";
+	echo "    ERROR: One or more of the externalpackages has failed. Skipping everything remaining steps.    ";
+	echo "===================================================================================================";
+	exit 1;
+fi
+
+source $ISSM_DIR/etc/environment.sh
+
+if [ "$OS" == "win" ]
+then
+	echo " == WINDOWS ENVIRONMENT DETECTED =="
+	source $ISSM_DIR/externalpackages/windows/windows_environment.sh
+fi
+#}}}
+#ISSM compilation yes/no                (ISSM_COMPILATION) {{{
+if [ "$ISSM_COMPILATION" == "yes" ]
+then
+	cd $ISSM_DIR
+	if [ "$ISSM_RECONFIGURE" == "yes" ]
+	then
+		echo "======================================================";
+		echo "             Cleaning up and reconfiguring            "
+		echo "======================================================";
+		make uninstall
+		make distclean
+		./scripts/automakererun.sh
+		eval "./configure $ISSM_CONFIG"
+	fi
+
+	#4: compile and install ISSM
+	echo "======================================================";
+	echo "                    Compiling ISSM                    "
+	echo "======================================================";
+	if [ $NUMCPUS_INSTALL -gt 1 ]; then
+		echo "Making with " $NUMCPUS_INSTALL " cpus"
+		make -j $NUMCPUS_INSTALL
+	else
+		make
+	fi
+	if [ $? -ne 0 ]; then 
+		echo "ISSM_COMPILATION failed!"
+		exit 1
+	fi
+	make install
+elif [ "$ISSM_COMPILATION" == "no" ]
+then
+	echo "Skipping ISSM compilation"
+else
+	echo "ISSM_COMPILATION supported values are: yes and no. Exiting..." >&2 # Error message to stderr.
+	exit 1
+fi
+#}}}
+
+#matlab tests
+# {{{
+if [ $MATLAB_TEST -eq 1 ]; then
+#Launch all tests on different cpus
+for (( i=1;i<=$NUMCPUS_RUN;i++ ))
+do
+	#Launch matlab and the nightly run script
+	cat > $ISSM_DIR/nightlylog/matlab_run$i.m << EOF
+	warning off %necessary to avoid a log of several Go for parallel runs
+	try,
+	$(if [ "$MATLAB_NROPTIONS" = ""  ]
+	then
+		echo "runme('output','nightly','rank',$i,'numprocs',$NUMCPUS_RUN);"
+	else
+		echo "runme($MATLAB_NROPTIONS,'output','nightly','rank',$i,'numprocs',$NUMCPUS_RUN);"
+	fi
+	)
+	catch me,
+		%An error occured, get report and exit
+		message=getReport(me)
+		directory=strsplit(pwd,'/');
+		fid=fopen([issmdir '/nightlylog/matlaberror.log'], 'at');
+		fprintf(fid,'\nMatlab error occured in: %s\n\n',directory{end});
+		fprintf(fid,'%s',message);
+		fclose(fid);
+	end
+	disp('MATLABEXITEDCORRECTLY');
+	exit
+EOF
+	cd $ISSM_DIR/test/NightlyRun
+	if [ "$OS" = "win" ]; then
+		$MATLAB_PATH/bin/matlab -nojvm -nosplash -r "addpath $ISSM_DIR_WIN/src/m/dev; devpath; addpath $ISSM_DIR_WIN/nightlylog/; matlab_run$i" -logfile $ISSM_DIR_WIN/nightlylog/matlab_log$i.log &
+	else
+		$MATLAB_PATH/bin/matlab -nojvm -nosplash -r "addpath $ISSM_DIR/src/m/dev; devpath; addpath $ISSM_DIR/nightlylog/; matlab_run$i" -logfile $ISSM_DIR/nightlylog/matlab_log$i.log &
+	fi
+done
+
+#wait until matlab closes
+if [ "$OS" = "win" ]; then
+	sleep 5;
+	echo "Waiting for matlab on windows"
+	pid=$(ps aux -W | grep MATLAB | awk '{printf("%s\n","MATLAB");}')
+	echo '-----------------------------'
+	echo "pid: $pid"
+	echo '-----------------------------'
+	while [ -n "$pid" ]
+	do
+		pid=$(ps aux -W | grep MATLAB | awk '{printf("%s\n","MATLAB");}')
+		sleep 1;
+	done
+	echo "DONE!"
+else
+	wait
+fi
+
+#concatenate reports
+cd $ISSM_DIR/nightlylog/
+echo 'CHECKING NIGHTLYLOG DIRECTORY'
+echo '-----------------------------'
+ls -la
+echo '-----------------------------'
+
+rm matlab_log.log
+
+for job in `jobs -p`
+do
+echo "Waiting on: $job"
+    wait $job
+done
+
+for (( i=1;i<=$NUMCPUS_RUN;i++ ))
+do
+	cat matlab_log$i.log >> matlab_log.log
+done
+
+#filter out windows characters: 
+cat matlab_log.log | tr -cd '\11\12\40-\176' > matlab_log.log2 && mv matlab_log.log2 matlab_log.log
+fi
+# }}}
+
+#python tests
+# {{{
+if [ $PYTHON_TEST -eq 1 ]; then
+#Launch all tests on different cpus
+PYTHON_START_TIME=$(timer);
+export PYTHONSTARTUP=$ISSM_DIR/src/m/dev/devpath.py
+export PYTHONUNBUFFERED=1 #we don't want python to buffer otherwise issm.exe output is not captured
+for (( i=1;i<=$NUMCPUS_RUN;i++ ))
+do
+	cd $ISSM_DIR/test/NightlyRun
+	echo "--------------Running Python test for Rank $i---------------------"
+	./runme.py --output=nightly --rank=$i --numprocs=$NUMCPUS_RUN $PYTHON_NROPTIONS &> $ISSM_DIR/nightlylog/python_log$i.log &
+	echo "--------------Running Python test for Rank $i---------------------"
+done
+
+# concatenate reports
+cd $ISSM_DIR/nightlylog/
+rm python_log.log
+
+for job in `jobs -p`
+do
+echo "Waiting on: $job"
+    wait $job
+done
+
+for (( i=1;i<=$NUMCPUS_RUN;i++ ))
+do
+	echo "This is the concatenation phase for rank: python_log$i.log"
+	cat python_log$i.log >> python_log.log
+done
+fi
+# }}}
+
+# Examples Test
+# {{{
+# This test will allow us to check on the status of the examples.
+if [ $EXAMPLES_TEST -eq 1 ];
+then
+	FILE='runme.m'
+	cd $ISSM_DIR/examples
+
+	for dir in ./* ;
+	do
+		if [ -d "${dir}" ];
+		then
+		# Some of the examples are incomplete (on purpose). As such, we will have to populate the
+		# missing steps in order to make sure that everything is working.
+			echo "Testing directory example: $(basename $dir)"
+
+			# Greenland is missing step 8
+			if [ -z "$SED" ];
+			then
+				SED='sed'
+			fi
+
+			cd ${dir}
+
+			if [ "${dir}" == "./Greenland" ];
+			then
+				STEP_EIGHT="\n	disp('   Step 8: Plotting exercise');\n	md = loadmodel('.\/Models\/Greenland.HistoricTransient');\n	figure\n	surfmb=[]; for i=2:201; surfmb=[surfmb ...\n		md.results.TransientSolution(i).SmbMassBalance]; end\n	subplot(3,1,1); plot([1:200],mean(surfmb));\n	title('Mean Surface mass balance');\n	vel=[]; for i=2:201; vel=[vel md.results.TransientSolution(i).Vel]; end\n	subplot(3,1,2); plot([1:200],mean(vel));\n	title('Mean Velocity');\n	volume=[]; for i=2:201; volume=[volume md.results.TransientSolution(i).IceVolume]; end\n	subplot(3,1,3); plot([1:200],volume);\n	title('Ice Volume'); xlabel('years');"
+
+				$SED -i.bak 's/steps=\[1\];/steps=\[1:8\];\n\ntry\n/' $FILE
+				$SED -i.bak "s/if any(steps==8)/&${STEP_EIGHT}/" $FILE
+			elif [ "${dir}" == "./IceBridge" ];	
+			then
+				$SED -i.bak 's/steps=\[1\];/steps=\[1:5\];\n\ntry\n/' $FILE
+			elif [ "${dir}" == "./IceflowModels" ];	
+			then
+				# Almost nothing to this example
+				$SED -i.bak '1 s/^.*$/try\n\n&/' $FILE
+			elif [ "${dir}" == "./ISMIP" ];	
+			then
+				# Eight steps... none of which are implmented in the script...
+				$SED -i.bak '1 s/^.*$/try\n\n&/' $FILE
+			elif [ "${dir}" == "./Inversion" ];	
+			then
+				$SED -i.bak 's/steps=\[1\];/steps=\[1:4\];\n\ntry\n/' $FILE
+			elif [ "${dir}" == "./Jakobshavn" ];	
+			then
+				$SED -i.bak 's/steps=\[1\];/steps=\[1:4\];\n\ntry\n/' $FILE
+			elif [ "${dir}" == "./Jakobshavn" ];	
+			then
+				$SED -i.bak 's/steps=\[1\];/steps=\[1:4\];\n\ntry\n/' $FILE
+			elif [ "${dir}" == "./Pig" ];	
+			then
+				# Step 6 is needed
+				STEP_SIX="\n disp('Needs work!')"
+				$SED -i.bak 's/steps=\[1\];/steps=\[1:7\];\n!mv DomainOutline.bkp DomainOutline.exp;\n\ntry\n/' $FILE
+				$SED -i.bak "s/if any(steps==6)/&${STEP_SIX}/" $FILE
+			elif [ "${dir}" == "./PigSensitivity" ];	
+			then
+				# Step 4 is needed
+				STEP_FOUR="\n disp('Needs work!')"
+				$SED -i.bak 's/steps=\[1\];/steps=\[1:4\];\n\ntry\n/' $FILE
+				$SED -i.bak "s/if any(steps==6)/&${STEP_FOUR}/" $FILE
+			elif [ "${dir}" == "./SquareIceShelf" ];	
+			then
+				# Almost nothing to this example
+				$SED -i.bak '1 s/^.*$/try\n\n&/' $FILE
+			elif [ "${dir}" == "./UncertaintyQuantification" ];	
+			then
+				$SED -i.bak 's/steps=\[1\];/steps=\[1:7\];\n\ntry\n/' $FILE
+			elif [ "${dir}" == "./Data" ];	
+			then
+				echo "Data directory is used by examples. No modifications required."
+			else
+				echo "Not implemented yet!"
+				$SED -i.bak '1 s/^.*$/try\n\n&/' $FILE
+			fi
+
+			if [ "${dir}" == "./Data" ];
+			then
+				./Download.sh
+			else
+				LOG_FILE="matlab_log_$(basename $dir)_examples.log"
+				echo "disp('SUCCESS');" >> $FILE
+				echo 'catch me' >> $FILE
+				echo 'message=getReport(me);' >> $FILE
+				echo "fprintf('%s',message);" >> $FILE
+				echo "disp('FAILURE');" >> $FILE
+				echo 'end' >> $FILE
+
+				$MATLAB_PATH/bin/matlab -nosplash -nodisplay -r "addpath $ISSM_DIR/src/m/dev; devpath; addpath $ISSM_DIR/nightlylog/; runme" -logfile $ISSM_DIR/nightlylog/$LOG_FILE
+				echo "starting: $(basename $dir)" >> $ISSM_DIR/nightlylog/matlab_log_examples.log
+				cat $ISSM_DIR/nightlylog/$LOG_FILE >> $ISSM_DIR/nightlylog/matlab_log_examples.log
+				echo "finished: $(basename $dir)" >> $ISSM_DIR/nightlylog/matlab_log_examples.log
+			fi
+			cd ..
+		fi
+	done
+fi
+# }}}
+
+#process logs to be junit compatible
+#{{{
+cd $ISSM_DIR/nightlylog/
+source $ISSM_DIR/externalpackages/shell2junit/install/sh2ju.sh
+juLogClean
+
+if [ $MATLAB_TEST -eq 1 ]; then
+	#number tests:
+	numtests=`cat matlab_log.log  | grep "\-\-\-\-\-\-\-\-starting" | wc -l`
+	testlist=`cat matlab_log.log  | grep "\-\-\-\-\-\-\-\-starting" | sed 's/----------------starting://g'  | sed 's/-//g'`
+
+	#look through numtests:
+	for i in `echo $testlist`
+	do
+		juLog  -test=MATLAB-$i -name=Error -error=ERROR awk "/starting:$i/{flag=1;next}/finished/{flag=0} flag{print}" matlab_log.log
+		juLog  -test=MATLAB-$i -name=Failure -error=FAILURE awk "/starting:$i/{flag=1;next}/finished/{flag=0} flag{print}" matlab_log.log
+	done
+fi
+if [ $PYTHON_TEST -eq 1 ]; then
+	#number tests:
+	numtests=`cat python_log.log  | grep "\-\-\-\-\-\-\-\-starting" | wc -l`
+	testlist=`cat python_log.log  | grep "\-\-\-\-\-\-\-\-starting" | sed 's/----------------starting://g'  | sed 's/-//g'`
+
+	#look through numtests:
+	for i in `echo $testlist`
+	do
+		juLog  -test=PYTHON-$i -name=Error -error=ERROR awk "/starting:$i/{flag=1;next}/finished/{flag=0} flag{print}" python_log.log
+		juLog  -test=PYTHON-$i -name=Failure -error=FAILURE awk "/starting:$i/{flag=1;next}/finished/{flag=0} flag{print}" python_log.log
+	done
+fi
+if [ $EXAMPLES_TEST -eq 1 ];
+then
+	# Inexplicably, there are backspace chars in the error output that are causing issues
+	$SED -i.bak 's///g' matlab_log_examples.log
+
+	numtests=`cat matlab_log_examples.log  | grep "starting: " | wc -l`
+	testlist=`cat matlab_log_examples.log   | grep "starting: " | sed 's/starting: //'`
+
+	echo "Processing: $numtests"
+	for i in `echo $testlist`
+	do
+		juLog  -test=Example-$i -name=Error -error=FAILURE awk "/starting: $i/{flag=1;next}/finished: $i/{flag=0} flag{print}" matlab_log_examples.log
+	done
+fi
+#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_caladan
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_caladan	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_caladan	(revision 21239)
@@ -0,0 +1,67 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+	--disable-static \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-python-dir=/usr\
+	--with-python-numpy-dir=/usr/lib/python2.7/dist-packages/numpy\
+	--with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
+	--with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
+	--with-boost-dir=$ISSM_DIR/externalpackages/boost/install/ \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-numthreads=4 \
+	--enable-development \
+	--enable-debugging '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=1
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools     install.sh                
+						mpich         install-3.0-linux64.sh    
+						petsc         install-3.6-linux64.sh    
+						triangle      install-linux64.sh        
+						boost         install.sh                
+						dakota        install-6.2-linux64.sh  
+						chaco         install.sh 
+						m1qn3         install.sh          
+						shell2junit   install.sh"
+
+#-----------------#
+# 4: Test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=4
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=2
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+PYTHON_NROPTIONS="--exclude 119 514 701 702 435"
+MATLAB_NROPTIONS="'exclude',[119,514,701,702,435]"
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_caladan_ad
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_caladan_ad	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_caladan_ad	(revision 21239)
@@ -0,0 +1,55 @@
+#
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+				--disable-static \
+				--prefix=$ISSM_DIR \
+				--without-kriging \
+				--without-kml \
+				--without-Gia \
+				--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install \
+				--with-adolc-dir=$ISSM_DIR/externalpackages/adolc/install \
+				--with-matlab-dir=$MATLAB_PATH \
+				--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools install.sh                
+					 mpich install-3.0-linux64.sh
+					 petsc install-3.6-linux64.sh
+					 metis install-5.0.1-linux64.sh
+					 triangle install-linux64.sh 
+					 gsl install-linux64.sh 
+					 adolc install.sh
+					 shell2junit install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=2
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=1
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+MATLAB_NROPTIONS="'benchmark','adolc','id',[3001:3019]"
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_caladan_ampi
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_caladan_ampi	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_caladan_ampi	(revision 21239)
@@ -0,0 +1,65 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+				 --disable-static \
+				 --without-kriging \
+				 --without-kml \
+				 --without-Gia \
+				 --with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install \
+				 --with-adolc-dir=$ISSM_DIR/externalpackages/adolc/install \
+				 --with-ampi-dir=$ISSM_DIR/externalpackages/adjoinablempi/install \
+				 --with-matlab-dir=$MATLAB_PATH \
+				 --with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+				 --with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+				 --with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
+				 --with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+				 --with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+				 --with-numthreads=4  \
+				 --with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+				 --with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+				 --with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+				 --enable-development '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools install.sh 
+					 mpich install-3.0-linux64.sh
+					 petsc install-3.6-linux64.sh
+					 metis install-5.0.1-linux64.sh
+					 triangle install-linux64.sh 
+					 gsl install-linux64.sh 
+					 adjoinablempi install.sh
+					 adolc install-withampi.sh
+					 shell2junit install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=2
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=1
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+MATLAB_NROPTIONS="'benchmark','adolc','id',[3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3119]"
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross	(revision 21239)
@@ -0,0 +1,70 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+	--disable-static \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-python-dir=$ISSM_DIR/externalpackages/python/install \
+	--with-python-numpy-dir=$ISSM_DIR/externalpackages/python/install/lib/python2.7/site-packages/numpy \
+	--with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-numthreads=4 \
+	--enable-development \
+	--enable-debugging '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=1
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools     install.sh                
+						mpich         install-3.0-linux64.sh    
+						petsc         install-3.7-linux64.sh    
+						triangle      install-linux64.sh        
+						chaco         install.sh 
+						m1qn3         install.sh          
+						python        install-2.7.3-linux64.sh
+                  nose          install-linux64-python2.sh
+                  numpy         install-linux64.sh
+                  hdf5          install.sh
+						netcdf        install.sh
+						netcdf-cxx    install.sh
+						netcdf-python install.sh
+						shell2junit   install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=10
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=5
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+PYTHON_NROPTIONS="--exclude 119 243 514 701 702 435"
+MATLAB_NROPTIONS="'exclude',[IdFromString('Dakota')]"
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_ad
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_ad	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_ad	(revision 21239)
@@ -0,0 +1,59 @@
+#
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+				--disable-static \
+				--prefix=$ISSM_DIR \
+				--without-kriging \
+				--without-kml \
+				--without-Gia \
+				--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install \
+				--with-adolc-dir=$ISSM_DIR/externalpackages/adolc/install \
+				--with-matlab-dir=$MATLAB_PATH \
+				--with-python-dir=/usr\
+				--with-python-numpy-dir=/usr/lib/python2.7/dist-packages/numpy\
+				--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+				--enable-development \
+				--enable-debugging '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=1
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools install.sh                
+					 mpich install-3.0-linux64.sh
+					 petsc install-3.7-linux64.sh
+					 metis install-5.0.1-linux64.sh
+					 triangle install-linux64.sh 
+					 gsl install-linux64.sh 
+					 adolc install.sh
+					 shell2junit install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=5
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=4
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+MATLAB_NROPTIONS="'benchmark','adolc','id',[3001:3019]"
+PYTHON_NROPTIONS="--benchmark=adolc -i 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019"
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_ampi
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_ampi	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_ampi	(revision 21239)
@@ -0,0 +1,68 @@
+#
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+				--disable-static \
+				--without-kriging \
+				--without-kml \
+				--without-Gia \
+				--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install \
+				--with-adolc-dir=$ISSM_DIR/externalpackages/adolc/install \
+				--with-ampi-dir=$ISSM_DIR/externalpackages/adjoinablempi/install \
+				--with-matlab-dir=$MATLAB_PATH \
+				--with-python-dir=/usr\
+				--with-python-numpy-dir=/usr/lib/python2.7/dist-packages/numpy\
+				--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+				--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+				--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
+				--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+				--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+				--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+				--with-numthreads=4  \
+				--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+				--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+				--enable-development \
+				--enable-debugging '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=1
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools install.sh 
+					 mpich install-3.0-linux64.sh
+					 petsc install-3.7-linux64.sh
+					 metis install-5.0.1-linux64.sh
+					 triangle install-linux64.sh 
+					 gsl install-linux64.sh 
+					 adjoinablempi install.sh
+					 adolc install-withampi.sh
+					 shell2junit install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=5
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=3
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+MATLAB_NROPTIONS="'benchmark','adolc','id',[3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3119]"
+PYTHON_NROPTIONS="--benchmark='adolc' -i 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3101 3102 3103 3104 3105 3106 3107 3108 3109 3119"
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_dakota
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_dakota	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_dakota	(revision 21239)
@@ -0,0 +1,65 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+	--disable-static \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
+	--with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
+	--with-boost-dir=$ISSM_DIR/externalpackages/boost/install/ \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-numthreads=4 \
+	--enable-development \
+	--enable-debugging '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools     install.sh                
+						mpich         install-3.0-linux64.sh    
+						petsc         install-3.7-linux64.sh    
+						triangle      install-linux64.sh        
+						boost         install-1.55-linux.sh                
+						dakota        install-6.2-linux64.sh  
+						chaco         install.sh 
+						m1qn3         install.sh          
+						shell2junit   install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=5
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=3
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+PYTHON_NROPTIONS=""
+MATLAB_NROPTIONS="'exclude',[119,243,514,701,702,435]"
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_gia
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_gia	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_gia	(revision 21239)
@@ -0,0 +1,63 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+	--disable-static \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-python-dir=/usr\
+	--with-python-numpy-dir=/usr/lib/python2.7/dist-packages/numpy\
+	--with-math77-dir=$ISSM_DIR/externalpackages/math77/install \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+	--with-gia=yes \
+	--with-numthreads=4 \
+	--enable-development \
+	--enable-debugging '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools     install.sh
+						mpich         install-3.0-linux64.sh    
+						petsc         install-3.6-linux64.sh    
+						triangle      install-linux64.sh        
+						math77        install.sh
+						gmsh          install.sh
+						shell2junit   install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=8
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=1
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+MATLAB_NROPTIONS="'benchmark','all','id',[2001:2100]"
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_iceocean
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_iceocean	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_iceocean	(revision 21239)
@@ -0,0 +1,58 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+	--disable-static \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+	--with-numthreads=4 \
+	--enable-development \
+	--enable-debugging '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools     install.sh                
+						mpich         install-3.0-linux64.sh    
+						cmake         install.sh                
+						petsc         install-3.6-linux64.sh    
+						triangle      install-linux64.sh        
+						shell2junit   install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=8
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=1
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+MATLAB_NROPTIONS="'benchmark','all','id',4001"
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_javascript
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_javascript	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_javascript	(revision 21239)
@@ -0,0 +1,47 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix="$ISSM_DIR" \
+    --with-javascript \
+    --disable-shared \
+    --with-triangle-dir="$ISSM_DIR/externalpackages/triangle/install-javascript" \
+    --with-gsl-dir="$ISSM_DIR/externalpackages/gsl/install-javascript" \
+    --without-kml\
+    --without-kriging\
+    --with-cxxoptflags="-O2"'
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=1
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="emscripten	  install.sh        
+						gsl			  install-javascript.sh    
+						triangle      install-javascript.sh        
+						shell2junit   install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=10
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=5
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+#PYTHON_NROPTIONS="--exclude 119 243 514 701 702 435"
+#MATLAB_NROPTIONS="'exclude',[119,243,514,701,702,435,IdFromString('Dakota')]"
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_python
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_python	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_python	(revision 21239)
@@ -0,0 +1,61 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+	--disable-static \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-python-dir=/usr \
+	--with-python-numpy-dir=/usr/lib/python2.7/dist-packages/numpy \
+	--with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-numthreads=4 \
+	--enable-development \
+	--enable-debugging '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=0
+PYTHON_TEST=1
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="mpich         install-3.0-linux64.sh    
+						petsc         install-3.7-linux64.sh    
+						triangle      install-linux64.sh        
+						chaco         install.sh 
+						m1qn3         install.sh          
+						shell2junit   install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=10
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=5
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+PYTHON_NROPTIONS="--exclude 119 243 514 701 702 435"
+MATLAB_NROPTIONS="'exclude',[IdFromString('Dakota')]"
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_se
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_se	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_se	(revision 21239)
@@ -0,0 +1,73 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+	--disable-static \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-python-dir=$ISSM_DIR/externalpackages/python/install \
+	--with-python-numpy-dir=$ISSM_DIR/externalpackages/python/install/lib/python2.7/site-packages/numpy \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-boost-dir=$ISSM_DIR/externalpackages/boost/install/ \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+	--with-numthreads=4 \
+	--enable-development \
+	--enable-debugging '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=1
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools     install.sh                
+						mpich         install-3.0-linux64.sh    
+						cmake         install.sh
+						petsc         install-3.6-linux64.sh    
+						triangle      install-linux64.sh        
+						boost         install.sh                
+						python        install-2.7.3-linux64.sh
+                  nose          install-linux64-python2.sh
+                  numpy         install-linux64.sh
+						gshhg         install.sh
+						gdal          install-1.10-linux64.sh
+						hdf5          install.sh
+						netcdf        install.sh
+						netcdf-cxx    install.sh
+						netcdf-python install.sh
+						gmt           install.sh
+						gmsh          install.sh
+						shell2junit   install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=5
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=4
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+PYTHON_NROPTIONS="--benchmark=slr"
+MATLAB_NROPTIONS="'benchmark','slr'"
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_static
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_static	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_static	(revision 21239)
@@ -0,0 +1,61 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR \
+	--disable-shared \
+	--enable-standalone-executables \
+	--enable-standalone-libraries \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install  \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+	--with-numthreads=4'
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=0
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools    install.sh
+						cmake        install.sh
+						mpich        install-3.0-linux64-static.sh
+						m1qn3        install.sh
+						petsc        install-3.6-linux64-static.sh
+						triangle     install-linux64.sh
+						shell2junit  install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=4
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=2
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+##                           bamg mesh   FS                     
+#PYTHON_NROPTIONS=""
+#MATLAB_NROPTIONS="'exclude',[119,243,514,701,702,703,435,IdFromString('Dakota')]"
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_test
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_test	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/linux64_ross_test	(revision 21239)
@@ -0,0 +1,67 @@
+#
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+	--disable-static \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-python-dir=/usr\
+	--with-python-numpy-dir=/usr/lib/python2.7/dist-packages/numpy\
+	--with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
+	--with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
+	--with-boost-dir=$ISSM_DIR/externalpackages/boost/install/ \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-numthreads=4 \
+	--enable-development \
+	--enable-debugging '
+
+#PYTHON and MATLAB testing
+#MATLAB_TEST=1
+#PYTHON_TEST=1
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools     install.sh                
+						mpich         install-3.0-linux64.sh    
+						petsc         install-3.6-linux64.sh    
+						triangle      install-linux64.sh        
+						boost         install.sh                
+						dakota        install-6.2-linux64.sh  
+						chaco         install.sh 
+						m1qn3         install.sh          
+						shell2junit   install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=6
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=3
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+PYTHON_NROPTIONS="--exclude 119 243 514 701 702 435"
+MATLAB_NROPTIONS="'exclude',[119,243,514,701,702,435]"
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/macosx_pine-island
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/macosx_pine-island	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/macosx_pine-island	(revision 21239)
@@ -0,0 +1,58 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/Applications/MATLAB_R2015b.app/"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lpmpich -lmpich -lmpl" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install  \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-numthreads=4 \
+	--enable-debugging \
+	--enable-development'
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools    install.sh
+						cmake        install.sh
+						mpich        install-3.0-macosx64.sh
+						m1qn3        install.sh
+						petsc        install-3.6-macosx64.sh
+						triangle     install-macosx64.sh
+						shell2junit  install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=4
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=2
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+##                           bamg mesh   FS                     
+PYTHON_NROPTIONS=""
+MATLAB_NROPTIONS="'exclude',[119,514,701,702,703,435,IdFromString('Dakota')]"
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/macosx_pine-island_dakota
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/macosx_pine-island_dakota	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/macosx_pine-island_dakota	(revision 21239)
@@ -0,0 +1,63 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/Applications/MATLAB_R2015a.app/"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lpmpich -lmpich -lmpl" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install  \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-boost-dir=$ISSM_DIR/externalpackages/boost/install \
+	--with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
+	--with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
+	--with-numthreads=4 \
+	--enable-debugging \
+	--enable-development'
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools    install.sh
+						cmake 		 install.sh
+						mpich        install-3.0-macosx64.sh
+						chaco        install-macosx64.sh
+						m1qn3        install.sh
+						petsc        install-3.5-macosx64.sh
+						triangle     install-macosx64.sh
+						boost        install-1.55-macosx-el_capitan.sh
+						dakota       install-6.2-macosx64.sh
+						shell2junit  install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=4
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=2
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"  ERRORS ARE LARGE FOR: 418 420 
+PYTHON_NROPTIONS=""
+MATLAB_NROPTIONS="'exclude',[119,243,514,701,702,703,234,235,418,420]"
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/macosx_pine-island_dakota_static
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/macosx_pine-island_dakota_static	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/macosx_pine-island_dakota_static	(revision 21239)
@@ -0,0 +1,66 @@
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/Applications/MATLAB_R2015a.app/"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR \
+	--disable-static \
+	--enable-standalone-executables \
+	--enable-standalone-libraries \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lpmpich -lmpich -lmpl" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install  \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-boost-dir=$ISSM_DIR/externalpackages/boost/install \
+	--with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
+	--with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
+	--with-fortran-lib="/usr/local/gfortran/lib/libgfortran.a /usr/local/gfortran/lib/libquadmath.a /usr/local/gfortran/lib/gcc/x86_64-apple-darwin14/5.2.0/libgcc.a" \
+	--with-numthreads=4'
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=0
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools    install.sh
+						cmake        install.sh
+						chaco        install-macosx64.sh
+						mpich        install-3.0-macosx64-static.sh
+						m1qn3        install.sh
+						petsc        install-3.6-macosx64-static.sh
+						triangle     install-macosx64.sh
+						boost        install-1.55-macosx-el_capitan.sh
+						dakota       install-6.2-macosx64.sh
+						shell2junit  install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=4
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=2
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+##                           bamg mesh   FS                     
+#PYTHON_NROPTIONS=""
+#MATLAB_NROPTIONS="'exclude',[119,243,514,701,702,703,435,IdFromString('Dakota')]"
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/macosx_pine-island_examples
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/macosx_pine-island_examples	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/macosx_pine-island_examples	(revision 21239)
@@ -0,0 +1,48 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/Applications/MATLAB_R2015b.app/"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lpmpich -lmpich -lmpl" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install  \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-numthreads=4 \
+	--enable-debugging \
+	--enable-development'
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=0
+PYTHON_TEST=0
+EXAMPLES_TEST=1
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools    install.sh
+						cmake        install.sh
+						mpich        install-3.0-macosx64.sh
+						m1qn3        install.sh
+						petsc        install-3.6-macosx64.sh
+						triangle     install-macosx64.sh
+						shell2junit  install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=4
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/macosx_pine-island_static
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/macosx_pine-island_static	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/macosx_pine-island_static	(revision 21239)
@@ -0,0 +1,61 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/Applications/MATLAB_R2015a.app/"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR \
+	--disable-static \
+	--enable-standalone-executables \
+	--enable-standalone-libraries \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lpmpich -lmpich -lmpl" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install  \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-fortran-lib="/usr/local/gfortran/lib/libgfortran.a /usr/local/gfortran/lib/libquadmath.a /usr/local/gfortran/lib/gcc/x86_64-apple-darwin14/5.2.0/libgcc.a" \
+	--with-numthreads=4'
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=0
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools    install.sh
+						cmake        install.sh
+						mpich        install-3.0-macosx64-static.sh
+						m1qn3        install.sh
+						petsc        install-3.6-macosx64-static.sh
+						triangle     install-macosx64.sh
+						shell2junit  install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=4
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=2
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+##                           bamg mesh   FS                     
+#PYTHON_NROPTIONS=""
+#MATLAB_NROPTIONS="'exclude',[119,243,514,701,702,703,435,IdFromString('Dakota')]"
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/parsing_rules
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/parsing_rules	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/parsing_rules	(revision 21239)
@@ -0,0 +1,15 @@
+# match line starting with 'error ', case-insensitive
+error /.*\\berror:\\b.*/
+error /FAILURE/
+error /failed/
+
+# list of warnings here...
+warning /[Ww]arning/
+warning /WARNING/
+
+# create a quick access link to lines in the report containing 'INFO'
+info /INFO/
+
+# each line containing 'BUILD' represents the start of a section for grouping errors and warnings found after the line.
+# also creates a quick access link.
+start /BUILD/
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/windows
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/windows	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/windows	(revision 21239)
@@ -0,0 +1,63 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/cygdrive/c/Programs/MATLAB/R2015a/"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR \
+	--with-vendor=MSVC-Win64  \
+	--with-cxxoptflags='' \
+   --disable-static \
+	--enable-standalone-libraries \
+	--with-fortran=no  \
+	--without-Gia \
+	--without-kriging \
+	--without-kml \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir="$ISSM_DIR/externalpackages/triangle/install" \
+	--with-petsc-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-metis-dir=$ISSM_DIR/externalpackages/metis/install \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install/lib/  \
+	--with-mpi-libdir="$ISSM_DIR/externalpackages/petsc/install/lib" \
+	--with-mpi-libflags="-Wl,libpetsc.lib" \
+	--with-mpi-include="$ISSM_DIR/externalpackages/petsc/install/include/petsc/mpiuni" \
+	--enable-development \
+	--enable-debugging '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools   install-win.sh
+						petsc       install-3.6-win10.sh
+						metis       install-4.0-win10.sh
+						triangle    install-win10.sh        
+						shell2junit install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=6
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=2
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+
+#In Windows, we don't yet have MUMPS, can't do full stokes, so exclude all FS runs. Also exclude all runs with Dakota. And exclude higher order runs that have penalties. And 800+ tests because we don't want to have --with-development since we do the binaries with this version
+MATLAB_NROPTIONS="'exclude',[104, 124,125,126, 204, 211, 215, 220, 221, 285, 290, 308, 322, 404, 421, 422, 503, 507, 510, 511, 513, 701, 702, 703, 218, 234, 235, 250, 251, 412, 413, 414, 417, 418, 420, 440, 205, 274, 331, 405, 409, 455, 612, 514, 435, 280,801,802,803,804,805,291,340,341,460]"
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/windows-par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/windows-par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/windows-par	(revision 21239)
@@ -0,0 +1,62 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/cygdrive/c/Programs/MATLAB/R2015a/"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR \
+	--with-vendor=MSVC-Win64  \
+   --disable-static \
+	--enable-standalone-libraries \
+	--with-fortran=no  \
+	--without-Gia \
+	--without-kriging \
+	--without-kml \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir="$ISSM_DIR/externalpackages/triangle/install" \
+	--with-petsc-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-metis-dir=$ISSM_DIR/externalpackages/metis/install \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install/lib/  \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-mpi-include="/cygdrive/c/Programs/MPICH2/include" \
+	--with-mpi-libflags="-Wl,mpi.lib -Wl,/LIBPATH:C:/Programs/MPICH2/lib" \
+	--enable-development \
+	--enable-debugging '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools   install-win.sh
+						petsc       install-dev-win10-par.sh
+						metis       install-4.0-win7.sh
+						triangle    install-win7.sh        
+						shell2junit install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=8
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=1
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+
+#In Windows, we don't yet have MUMPS, can't do full stokes, so exclude all FS runs. Also exclude all runs with Dakota. And exclude higher order runs that have penalties. And 800+ tests because we don't want to have --with-development since we do the binaries with this version
+MATLAB_NROPTIONS="'exclude',[104, 124, 204, 211, 215, 220, 221, 285, 290, 308, 322, 404, 421, 422, 503, 507, 510, 511, 513, 701, 702, 703, 218, 234, 235, 412, 413, 414, 417, 418, 420, 205, 274, 331, 405, 409, 455, 612, 514, 435, 280,801,802,803,804,805,291,340,341]"
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-larour-NatClimateChange2016/jenkins/windows_test
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/jenkins/windows_test	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/jenkins/windows_test	(revision 21239)
@@ -0,0 +1,34 @@
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/cygdrive/c/Program\ Files/MATLAB/R2014b/"
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=4
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=1
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+
+#In Windows, we don't yet have MUMPS, can't do full stokes, so exclude all FS runs. Also exclude all runs with Dakota. And exclude higher order runs that have penalties. And 800+ tests because we don't want to have --with-development since we do the binaries with this version
+MATLAB_NROPTIONS="'exclude',[104, 124, 204, 211, 215, 220, 221, 285, 290, 308, 322, 404, 421, 422, 503, 507, 510, 511, 513, 701, 702, 703, 218, 234, 235, 412, 413, 414, 417, 418, 420, 205, 274, 331, 405, 409, 455, 612, 514, 435, 280,801,802,803,804,805,291,340,341]"
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-larour-NatClimateChange2016/ltmain.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/ltmain.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/ltmain.sh	(revision 21239)
@@ -0,0 +1,9655 @@
+
+# libtool (GNU libtool) 2.4.2
+# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
+# 2007, 2008, 2009, 2010, 2011 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 GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Usage: $progname [OPTION]... [MODE-ARG]...
+#
+# Provide generalized library-building support services.
+#
+#       --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
+#       --preserve-dup-deps  don't remove duplicate dependency libraries
+#       --quiet, --silent    don't print informational messages
+#       --no-quiet, --no-silent
+#                            print informational messages (default)
+#       --no-warn            don't display warning messages
+#       --tag=TAG            use configuration variables from tag TAG
+#   -v, --verbose            print more informational messages than default
+#       --no-verbose         don't print the extra informational messages
+#       --version            print version information
+#   -h, --help, --help-all   print short, long, or detailed 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)
+#         $progname:	(GNU libtool) 2.4.2
+#         automake:	$automake_version
+#         autoconf:	$autoconf_version
+#
+# Report bugs to <bug-libtool@gnu.org>.
+# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
+# General help using GNU software: <http://www.gnu.org/gethelp/>.
+
+PROGRAM=libtool
+PACKAGE=libtool
+VERSION=2.4.2
+TIMESTAMP=""
+package_revision=1.3337
+
+# 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
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+
+# NLS nuisances: We save the old values to restore during execute mode.
+lt_user_locale=
+lt_safe_locale=
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+  eval "if test \"\${$lt_var+set}\" = set; then
+          save_$lt_var=\$$lt_var
+          $lt_var=C
+	  export $lt_var
+	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
+	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+	fi"
+done
+LC_ALL=C
+LANGUAGE=C
+export LANGUAGE LC_ALL
+
+$lt_unset CDPATH
+
+
+# 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"
+
+
+
+: ${CP="cp -f"}
+test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+: ${Xsed="$SED -e 1s/^X//"}
+
+# Global variables:
+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.
+
+exit_status=$EXIT_SUCCESS
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" 	$lt_nl"
+
+dirname="s,/[^/]*$,,"
+basename="s,^.*/,,"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+    if test "X$func_dirname_result" = "X${1}"; then
+      func_dirname_result="${3}"
+    else
+      func_dirname_result="$func_dirname_result${2}"
+    fi
+} # func_dirname may be replaced by extended shell implementation
+
+
+# func_basename file
+func_basename ()
+{
+    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+} # func_basename may be replaced by extended shell implementation
+
+
+# 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"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+    # Extract subdirectory from the argument.
+    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
+    if test "X$func_dirname_result" = "X${1}"; then
+      func_dirname_result="${3}"
+    else
+      func_dirname_result="$func_dirname_result${2}"
+    fi
+    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
+} # func_dirname_and_basename may be replaced by extended shell implementation
+
+
+# func_stripname 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).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+    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 may be replaced by extended shell implementation
+
+
+# These SED scripts presuppose an absolute path with a trailing slash.
+pathcar='s,^/\([^/]*\).*$,\1,'
+pathcdr='s,^/[^/]*,,'
+removedotparts=':dotsl
+		s@/\./@/@g
+		t dotsl
+		s,/\.$,/,'
+collapseslashes='s@/\{1,\}@/@g'
+finalslash='s,/*$,/,'
+
+# 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.
+#             value returned in "$func_normal_abspath_result"
+func_normal_abspath ()
+{
+  # 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 "$removedotparts" -e "$collapseslashes" -e "$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 "$pathcar"`
+    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$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_normal_abspath_result=$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_relative_path SRCDIR DSTDIR
+# generates a relative path from SRCDIR to DSTDIR, with a trailing
+# slash if non-empty, suitable for immediately appending a filename
+# without needing to append a separator.
+#             value returned in "$func_relative_path_result"
+func_relative_path ()
+{
+  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 "x$func_relative_path_tlibdir" = x ; 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 "x$func_stripname_result" != x ; then
+    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
+  fi
+
+  # Normalisation. If bindir is libdir, return empty string,
+  # else relative path ending with a slash; either way, target
+  # file name can be directly appended.
+  if test ! -z "$func_relative_path_result"; then
+    func_stripname './' '' "$func_relative_path_result/"
+    func_relative_path_result=$func_stripname_result
+  fi
+}
+
+# The name of this program:
+func_dirname_and_basename "$progpath"
+progname=$func_basename_result
+
+# Make sure we have an absolute path for reexecution:
+case $progpath in
+  [\\/]*|[A-Za-z]:\\*) ;;
+  *[\\/]*)
+     progdir=$func_dirname_result
+     progdir=`cd "$progdir" && pwd`
+     progpath="$progdir/$progname"
+     ;;
+  *)
+     save_IFS="$IFS"
+     IFS=${PATH_SEPARATOR-:}
+     for progdir in $PATH; do
+       IFS="$save_IFS"
+       test -x "$progdir/$progname" && break
+     done
+     IFS="$save_IFS"
+     test -n "$progdir" || progdir=`pwd`
+     progpath="$progdir/$progname"
+     ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+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
+# which contains forward slashes, into one that contains
+# (escaped) backslashes.  A very naive implementation.
+lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
+# Re-`\' parameter expansions in output of double_quote_subst that were
+# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
+# in input to 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 '$'.
+bs='\\'
+bs2='\\\\'
+bs4='\\\\\\\\'
+dollar='\$'
+sed_double_backslash="\
+  s/$bs4/&\\
+/g
+  s/^$bs2$dollar/$bs&/
+  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
+  s/\n//g"
+
+# Standard options:
+opt_dry_run=false
+opt_help=false
+opt_quiet=false
+opt_verbose=false
+opt_warning=:
+
+# func_echo arg...
+# Echo program name prefixed message, along with the current mode
+# name if it has been set yet.
+func_echo ()
+{
+    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
+}
+
+# func_verbose arg...
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+    $opt_verbose && 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_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*"
+}
+
+# func_error arg...
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
+}
+
+# func_warning arg...
+# Echo program name prefixed warning message to standard error.
+func_warning ()
+{
+    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
+
+    # bash bug again:
+    :
+}
+
+# func_fatal_error arg...
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+    func_error ${1+"$@"}
+    exit $EXIT_FAILURE
+}
+
+# func_fatal_help arg...
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+    func_error ${1+"$@"}
+    func_fatal_error "$help"
+}
+help="Try \`$progname --help' for more information."  ## default
+
+
+# func_grep expression filename
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+    $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_mkdir_p directory-path
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+    my_directory_path="$1"
+    my_dir_list=
+
+    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
+
+      # Protect directory names starting with `-'
+      case $my_directory_path in
+        -*) my_directory_path="./$my_directory_path" ;;
+      esac
+
+      # While some portion of DIR does not yet exist...
+      while test ! -d "$my_directory_path"; do
+        # ...make a list in topmost first order.  Use a colon delimited
+	# list incase some portion of path contains whitespace.
+        my_dir_list="$my_directory_path:$my_dir_list"
+
+        # If the last portion added has no slash in it, the list is done
+        case $my_directory_path in */*) ;; *) break ;; esac
+
+        # ...otherwise throw away the child directory and loop
+        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
+      done
+      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
+
+      save_mkdir_p_IFS="$IFS"; IFS=':'
+      for my_dir in $my_dir_list; do
+	IFS="$save_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 "$my_dir" 2>/dev/null || :
+      done
+      IFS="$save_mkdir_p_IFS"
+
+      # Bail out if we (or some other process) failed to create a directory.
+      test -d "$my_directory_path" || \
+        func_fatal_error "Failed to create \`$1'"
+    fi
+}
+
+
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible.  If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+    my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+    if test "$opt_dry_run" = ":"; then
+      # Return a directory name, but don't create it in dry-run mode
+      my_tmpdir="${my_template}-$$"
+    else
+
+      # If mktemp works, use that first and foremost
+      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+      if test ! -d "$my_tmpdir"; then
+        # Failing that, at least try and use $RANDOM to avoid a race
+        my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+        save_mktempdir_umask=`umask`
+        umask 0077
+        $MKDIR "$my_tmpdir"
+        umask $save_mktempdir_umask
+      fi
+
+      # If we're not in dry-run mode, bomb out on failure
+      test -d "$my_tmpdir" || \
+        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
+    fi
+
+    $ECHO "$my_tmpdir"
+}
+
+
+# func_quote_for_eval arg
+# Aesthetically quote ARG to be evaled later.
+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
+# is double-quoted, suitable for a subsequent eval, whereas
+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
+# which are still active within double quotes backslashified.
+func_quote_for_eval ()
+{
+    case $1 in
+      *[\\\`\"\$]*)
+	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
+      *)
+        func_quote_for_eval_unquoted_result="$1" ;;
+    esac
+
+    case $func_quote_for_eval_unquoted_result in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting, command substitution and and variable
+      # expansion for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
+        ;;
+      *)
+        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
+    esac
+}
+
+
+# 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 ()
+{
+    case $1 in
+      *[\\\`\"]*)
+	my_arg=`$ECHO "$1" | $SED \
+	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
+      *)
+        my_arg="$1" ;;
+    esac
+
+    case $my_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.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+        my_arg="\"$my_arg\""
+        ;;
+    esac
+
+    func_quote_for_expand_result="$my_arg"
+}
+
+
+# func_show_eval cmd [fail_exp]
+# Unless opt_silent 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 ()
+{
+    my_cmd="$1"
+    my_fail_exp="${2-:}"
+
+    ${opt_silent-false} || {
+      func_quote_for_expand "$my_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    if ${opt_dry_run-false}; then :; else
+      eval "$my_cmd"
+      my_status=$?
+      if test "$my_status" -eq 0; then :; else
+	eval "(exit $my_status); $my_fail_exp"
+      fi
+    fi
+}
+
+
+# func_show_eval_locale cmd [fail_exp]
+# Unless opt_silent 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 ()
+{
+    my_cmd="$1"
+    my_fail_exp="${2-:}"
+
+    ${opt_silent-false} || {
+      func_quote_for_expand "$my_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    if ${opt_dry_run-false}; then :; else
+      eval "$lt_user_locale
+	    $my_cmd"
+      my_status=$?
+      eval "$lt_safe_locale"
+      if test "$my_status" -eq 0; then :; else
+	eval "(exit $my_status); $my_fail_exp"
+      fi
+    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 ()
+{
+  case $1 in
+  [0-9]* | *[!a-zA-Z0-9_]*)
+    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
+    ;;
+  * )
+    func_tr_sh_result=$1
+    ;;
+  esac
+}
+
+
+# func_version
+# Echo version message to standard output and exit.
+func_version ()
+{
+    $opt_debug
+
+    $SED -n '/(C)/!b go
+	:more
+	/\./!{
+	  N
+	  s/\n# / /
+	  b more
+	}
+	:go
+	/^# '$PROGRAM' (GNU /,/# warranty; / {
+        s/^# //
+	s/^# *$//
+        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
+        p
+     }' < "$progpath"
+     exit $?
+}
+
+# func_usage
+# Echo short help message to standard output and exit.
+func_usage ()
+{
+    $opt_debug
+
+    $SED -n '/^# Usage:/,/^#  *.*--help/ {
+        s/^# //
+	s/^# *$//
+	s/\$progname/'$progname'/
+	p
+    }' < "$progpath"
+    echo
+    $ECHO "run \`$progname --help | more' for full usage"
+    exit $?
+}
+
+# func_help [NOEXIT]
+# Echo long help message to standard output and exit,
+# unless 'noexit' is passed as argument.
+func_help ()
+{
+    $opt_debug
+
+    $SED -n '/^# Usage:/,/# Report bugs to/ {
+	:print
+        s/^# //
+	s/^# *$//
+	s*\$progname*'$progname'*
+	s*\$host*'"$host"'*
+	s*\$SHELL*'"$SHELL"'*
+	s*\$LTCC*'"$LTCC"'*
+	s*\$LTCFLAGS*'"$LTCFLAGS"'*
+	s*\$LD*'"$LD"'*
+	s/\$with_gnu_ld/'"$with_gnu_ld"'/
+	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
+	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
+	p
+	d
+     }
+     /^# .* home page:/b print
+     /^# General help using/b print
+     ' < "$progpath"
+    ret=$?
+    if test -z "$1"; then
+      exit $ret
+    fi
+}
+
+# func_missing_arg argname
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+    $opt_debug
+
+    func_error "missing argument for $1."
+    exit_cmd=exit
+}
+
+
+# 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.
+func_split_short_opt ()
+{
+    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
+    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
+
+    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
+    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
+} # func_split_short_opt may be replaced by extended shell implementation
+
+
+# func_split_long_opt longopt
+# Set func_split_long_opt_name and func_split_long_opt_arg shell
+# variables after splitting LONGOPT at the `=' sign.
+func_split_long_opt ()
+{
+    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
+    my_sed_long_arg='1s/^--[^=]*=//'
+
+    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
+    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
+} # func_split_long_opt may be replaced by extended shell implementation
+
+exit_cmd=:
+
+
+
+
+
+magic="%%%MAGIC variable%%%"
+magic_exe="%%%MAGIC EXE variable%%%"
+
+# Global variables.
+nonopt=
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+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=
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+    eval "${1}=\$${1}\${2}"
+} # func_append may be replaced by extended shell implementation
+
+# func_append_quoted var value
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+func_append_quoted ()
+{
+    func_quote_for_eval "${2}"
+    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
+} # func_append_quoted may be replaced by extended shell implementation
+
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+    func_arith_result=`expr "${@}"`
+} # func_arith may be replaced by extended shell implementation
+
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
+} # func_len may be replaced by extended shell implementation
+
+
+# func_lo2o object
+func_lo2o ()
+{
+    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+} # func_lo2o may be replaced by extended shell implementation
+
+
+# func_xform libobj-or-source
+func_xform ()
+{
+    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+} # func_xform may be replaced by extended shell implementation
+
+
+# func_fatal_configuration arg...
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
+{
+    func_error ${1+"$@"}
+    func_error "See the $PACKAGE documentation for more information."
+    func_fatal_error "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 "$build_libtool_libs" = yes; then
+      echo "enable shared libraries"
+    else
+      echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; 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
+}
+
+
+# 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
+
+
+
+# Option defaults:
+opt_debug=:
+opt_dry_run=false
+opt_config=false
+opt_preserve_dup_deps=false
+opt_features=false
+opt_finish=false
+opt_help=false
+opt_help_all=false
+opt_silent=:
+opt_warning=:
+opt_verbose=:
+opt_silent=false
+opt_verbose=false
+
+
+# Parse options once, thoroughly.  This comes as soon as possible in the
+# script to make things like `--version' happen as quickly as we can.
+{
+  # this just eases exit handling
+  while test $# -gt 0; do
+    opt="$1"
+    shift
+    case $opt in
+      --debug|-x)	opt_debug='set -x'
+			func_echo "enabling shell trace mode"
+			$opt_debug
+			;;
+      --dry-run|--dryrun|-n)
+			opt_dry_run=:
+			;;
+      --config)
+			opt_config=:
+func_config
+			;;
+      --dlopen|-dlopen)
+			optarg="$1"
+			opt_dlopen="${opt_dlopen+$opt_dlopen
+}$optarg"
+			shift
+			;;
+      --preserve-dup-deps)
+			opt_preserve_dup_deps=:
+			;;
+      --features)
+			opt_features=:
+func_features
+			;;
+      --finish)
+			opt_finish=:
+set dummy --mode finish ${1+"$@"}; shift
+			;;
+      --help)
+			opt_help=:
+			;;
+      --help-all)
+			opt_help_all=:
+opt_help=': help-all'
+			;;
+      --mode)
+			test $# = 0 && func_missing_arg $opt && break
+			optarg="$1"
+			opt_mode="$optarg"
+case $optarg in
+  # Valid mode arguments:
+  clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+  # Catch anything else as an error
+  *) func_error "invalid argument for $opt"
+     exit_cmd=exit
+     break
+     ;;
+esac
+			shift
+			;;
+      --no-silent|--no-quiet)
+			opt_silent=false
+func_append preserve_args " $opt"
+			;;
+      --no-warning|--no-warn)
+			opt_warning=false
+func_append preserve_args " $opt"
+			;;
+      --no-verbose)
+			opt_verbose=false
+func_append preserve_args " $opt"
+			;;
+      --silent|--quiet)
+			opt_silent=:
+func_append preserve_args " $opt"
+        opt_verbose=false
+			;;
+      --verbose|-v)
+			opt_verbose=:
+func_append preserve_args " $opt"
+opt_silent=false
+			;;
+      --tag)
+			test $# = 0 && func_missing_arg $opt && break
+			optarg="$1"
+			opt_tag="$optarg"
+func_append preserve_args " $opt $optarg"
+func_enable_tag "$optarg"
+			shift
+			;;
+
+      -\?|-h)		func_usage				;;
+      --help)		func_help				;;
+      --version)	func_version				;;
+
+      # Separate optargs to long options:
+      --*=*)
+			func_split_long_opt "$opt"
+			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
+			shift
+			;;
+
+      # Separate non-argument short options:
+      -\?*|-h*|-n*|-v*)
+			func_split_short_opt "$opt"
+			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
+			shift
+			;;
+
+      --)		break					;;
+      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
+      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
+    esac
+  done
+
+  # Validate options:
+
+  # save first non-option argument
+  if test "$#" -gt 0; then
+    nonopt="$opt"
+    shift
+  fi
+
+  # preserve --debug
+  test "$opt_debug" = : || func_append preserve_args " --debug"
+
+  case $host in
+    *cygwin* | *mingw* | *pw32* | *cegcc*)
+      # 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
+
+    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+      func_fatal_configuration "not configured to build any kind of library"
+    fi
+
+    # Darwin sucks
+    eval std_shrext=\"$shrext_cmds\"
+
+    # Only execute mode is allowed to have -dlopen flags.
+    if test -n "$opt_dlopen" && test "$opt_mode" != execute; 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."
+  }
+
+
+  # Bail if the options were screwed
+  $exit_cmd $EXIT_FAILURE
+}
+
+
+
+
+## ----------- ##
+##    Main.    ##
+## ----------- ##
+
+# 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 \
+        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
+# 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 "$lalib_p" = yes
+}
+
+# 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 ()
+{
+    func_lalib_p "$1"
+}
+
+# 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 ()
+{
+    $opt_debug
+    save_ifs=$IFS; IFS='~'
+    for cmd in $1; do
+      IFS=$save_ifs
+      eval cmd=\"$cmd\"
+      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 ()
+{
+    $opt_debug
+    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 ()
+{
+    $opt_debug
+    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 "$build_libtool_libs" = yes; then
+      write_lobj=\'${2}\'
+    else
+      write_lobj=none
+    fi
+
+    if test "$build_old_libs" = yes; 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$TIMESTAMP) $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 ()
+{
+  $opt_debug
+  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 "$lt_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 ()
+{
+  $opt_debug
+  # 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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  # awkward: cmd appends spaces to result
+  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
+    $SED -e 's/[ ]*$//' -e "$lt_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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  $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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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_mode_compile arg...
+func_mode_compile ()
+{
+    $opt_debug
+    # 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 "$build_libtool_libs" != yes && \
+	  func_fatal_configuration "can not 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 "$build_old_libs" = yes; 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 "$pic_mode" = no && test "$deplibs_check_method" != pass_all; 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 "$compiler_c_o" = no; 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 "$need_locks" = yes; 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 "$need_locks" = warn; 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 "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; 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 "$need_locks" = warn &&
+	 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 "$suppress_opt" = yes; then
+	suppress_output=' >/dev/null 2>&1'
+      fi
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+	# Don't build PIC code
+	command="$base_compile $qsrcfile$pie_flag"
+      else
+	command="$base_compile $qsrcfile $pic_flag"
+      fi
+      if test "$compiler_c_o" = yes; 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 "$need_locks" = warn &&
+	 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 "$need_locks" != no; then
+	removelist=$lockfile
+        $RM "$lockfile"
+      fi
+    }
+
+    exit $EXIT_SUCCESS
+}
+
+$opt_help || {
+  test "$opt_mode" = compile && 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
+  -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 ()
+{
+    $opt_debug
+    # 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 test "X$opt_dry_run" = Xfalse; then
+      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"
+    else
+      # 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
+    fi
+}
+
+test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+    $opt_debug
+    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_silent && 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 "$opt_mode" = finish && func_mode_finish ${1+"$@"}
+
+
+# func_mode_install arg...
+func_mode_install ()
+{
+    $opt_debug
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # 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=no
+    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=yes ;;
+      -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$prev" = x-m && 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=yes
+    if test "$isdir" = yes; 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
+	    ;;
+	  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 "$build_old_libs" = yes; 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=yes
+	  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'` ### testsuite: skip nested quoting test
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      func_warning "\`$lib' has not been installed in \`$libdir'"
+	      finalize=no
+	    fi
+	  done
+
+	  relink_command=
+	  func_source "$wrapper"
+
+	  outputname=
+	  if test "$fast_install" = no && test -n "$relink_command"; then
+	    $opt_dry_run || {
+	      if test "$finalize" = yes; 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_silent || {
+	          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 "$opt_mode" = install && 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 ()
+{
+    $opt_debug
+    my_outputname="$1"
+    my_originator="$2"
+    my_pic_p="${3-no}"
+    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
+    my_dlsyms=
+
+    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; 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$TIMESTAMP) $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 con'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
+
+/* External symbol declarations for the compiler. */\
+"
+
+	if test "$dlself" = yes; 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
+
+	  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[];
+LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{\
+  { \"$my_originator\", (void *) 0 },"
+
+	  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"  ;;
+	  *)
+	    if test "X$my_pic_p" != Xno; then
+	      pic_flag_for_symtable=" $pic_flag"
+	    fi
+	    ;;
+	  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"'
+
+	# 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_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 ()
+{
+  $opt_debug
+  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
+      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
+		}
+	    }'`
+      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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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 which possess that section. Heuristic: eliminate
+    # all those which 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_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 ()
+{
+  $opt_debug
+  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 ()
+{
+  $opt_debug
+  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_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 ()
+{
+  $opt_debug
+  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 ()
+{
+    $opt_debug
+    f_ex_an_ar_dir="$1"; shift
+    f_ex_an_ar_oldlib="$1"
+    if test "$lock_old_archive_extraction" = yes; 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 "$lock_old_archive_extraction" = yes; 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 ()
+{
+    $opt_debug
+    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`
+	  darwin_base_archive=`basename "$darwin_archive"`
+	  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 "$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 in which 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$TIMESTAMP) $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/ which is used only on
+# windows platforms, and (c) all begin with the string "--lt-"
+# (application programs are unlikely to have options which 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$TIMESTAMP) $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 "$fast_install" = yes; 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 "$shlibpath_overrides_runpath" = yes && 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$TIMESTAMP) $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>
+
+/* 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 platforms) ... */
+#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
+# ifndef _INTPTR_T_DEFINED
+#  define _INTPTR_T_DEFINED
+#  define intptr_t int
+# endif
+#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 ((void *) 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
+volatile const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+	    if test "$shlibpath_overrides_runpath" = yes && 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 "$fast_install" = yes; 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;
+  intptr_t rval = 127;
+
+  int i;
+
+  program_name = (char *) xstrdup (base_name (argv[0]));
+  newargz = XMALLOC (char *, 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 (strcmp (argv[i], dumpscript_opt) == 0)
+	{
+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 (strcmp (argv[i], debug_opt) == 0)
+	{
+          lt_debug = 1;
+          continue;
+	}
+      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
+        {
+          /* 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$TIMESTAMP) $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 = _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];
+  int 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 = 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 (strcmp (str, pat) == 0)
+	*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
+    int 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)
+    {
+      int orig_value_len = strlen (orig_value);
+      int 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 #' */
+      int len = strlen (new_value);
+      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+        {
+          new_value[len-1] = '\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 ()
+{
+    $opt_debug
+    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
+    *import*) : ;;
+    *) false ;;
+    esac
+}
+
+# func_mode_link arg...
+func_mode_link ()
+{
+    $opt_debug
+    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
+      # which 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 which 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=
+    non_pic_objects=
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=no
+    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 "$build_libtool_libs" != yes && \
+	  func_fatal_configuration "can not build a shared library"
+	build_old_libs=no
+	break
+	;;
+      -all-static | -static | -static-libtool-libs)
+	case $arg in
+	-all-static)
+	  if test "$build_libtool_libs" = yes && 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)
+	  if test "$preload" = no; then
+	    # Add the symbol object into the linking commands.
+	    func_append compile_command " @SYMFILE@"
+	    func_append finalize_command " @SYMFILE@"
+	    preload=yes
+	  fi
+	  case $arg in
+	  *.la | *.lo) ;;  # We handle these cases below.
+	  force)
+	    if test "$dlself" = no; then
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  self)
+	    if test "$prev" = dlprefiles; then
+	      dlself=yes
+	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+	      dlself=yes
+	    else
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  *)
+	    if test "$prev" = dlfiles; 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
+	  ;;
+	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 "$pic_object" = none &&
+		   test "$non_pic_object" = none; 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 "$pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  pic_object="$xdir$pic_object"
+
+		  if test "$prev" = dlfiles; then
+		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; 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 "$prev" = dlprefiles; 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 "$non_pic_object" != none; 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 "$pic_object" = none ; 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
+	  ;;
+	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 "$prev" = rpath; 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$arg" = "X-export-symbols"; 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$arg" = "X-lc" || test "X$arg" = "X-lm"; 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$arg" = "X-lc" && continue
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && 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$arg" = "X-lc" && continue
+	    ;;
+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+	    # Compiler inserts libc in the correct place for threads to work
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  esac
+	elif test "X$arg" = "X-lc_r"; then
+	 case $host in
+	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	   # Do not include libc_r directly, use -pthread flag.
+	   continue
+	   ;;
+	 esac
+	fi
+	func_append deplibs " $arg"
+	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
+	;;
+
+      -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
+      # @file                GCC response files
+      # -tp=*                Portland pgcc target processor selection
+      # --sysroot=*          for sysroot support
+      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+      -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*|-flto*|-fwhopr*|-fuse-linker-plugin)
+        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
+        ;;
+
+      # 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 "$pic_object" = none &&
+	     test "$non_pic_object" = none; 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 "$pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    pic_object="$xdir$pic_object"
+
+	    if test "$prev" = dlfiles; then
+	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; 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 "$prev" = dlprefiles; 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 "$non_pic_object" != none; 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 "$pic_object" = none ; 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 "$prev" = dlfiles; then
+	  # This library was specified with -dlopen.
+	  func_append dlfiles " $func_resolve_sysroot_result"
+	  prev=
+	elif test "$prev" = dlprefiles; 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 "$export_dynamic" = yes && 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\"
+
+    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 "$linkmode" = lib; 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=no
+	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 "$linkmode,$pass" = "lib,link"; 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 "$linkmode,$pass" = "lib,link" ||
+	 test "$linkmode,$pass" = "prog,scan"; then
+	libs="$deplibs"
+	deplibs=
+      fi
+      if test "$linkmode" = prog; then
+	case $pass in
+	dlopen) libs="$dlfiles" ;;
+	dlpreopen) libs="$dlprefiles" ;;
+	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+	esac
+      fi
+      if test "$linkmode,$pass" = "lib,dlpreopen"; 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 "$pass" = dlopen; then
+	# Collect dlpreopened libraries
+	save_deplibs="$deplibs"
+	deplibs=
+      fi
+
+      for deplib in $libs; do
+	lib=
+	found=no
+	case $deplib in
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+	  if test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    func_append compiler_flags " $deplib"
+	    if test "$linkmode" = lib ; then
+		case "$new_inherited_linker_flags " in
+		    *" $deplib "*) ;;
+		    * ) func_append new_inherited_linker_flags " $deplib" ;;
+		esac
+	    fi
+	  fi
+	  continue
+	  ;;
+	-l*)
+	  if test "$linkmode" != lib && test "$linkmode" != prog; then
+	    func_warning "\`-l' is ignored for archives/objects"
+	    continue
+	  fi
+	  func_stripname '-l' '' "$deplib"
+	  name=$func_stripname_result
+	  if test "$linkmode" = lib; 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 "$search_ext" = ".la"; then
+		  found=yes
+		else
+		  found=no
+		fi
+		break 2
+	      fi
+	    done
+	  done
+	  if test "$found" != yes; then
+	    # deplib doesn't seem to be a libtool library
+	    if test "$linkmode,$pass" = "prog,link"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
+	  else # 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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; 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=no
+		    func_dirname "$lib" "" "."
+		    ladir="$func_dirname_result"
+		    lib=$ladir/$old_library
+		    if test "$linkmode,$pass" = "prog,link"; then
+		      compile_deplibs="$deplib $compile_deplibs"
+		      finalize_deplibs="$deplib $finalize_deplibs"
+		    else
+		      deplibs="$deplib $deplibs"
+		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+		    fi
+		    continue
+		  fi
+		fi
+		;;
+	      *) ;;
+	      esac
+	    fi
+	  fi
+	  ;; # -l
+	*.ltframework)
+	  if test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    deplibs="$deplib $deplibs"
+	    if test "$linkmode" = lib ; 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 "$pass" = conv && 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 "$pass" = conv; then
+	      deplibs="$deplib $deplibs"
+	      continue
+	    fi
+	    if test "$pass" = scan; 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 "$pass" = link; 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 "$pass" = conv; 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=no
+	      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=yes
+		  fi
+		;;
+		pass_all)
+		  valid_a_lib=yes
+		;;
+	      esac
+	      if test "$valid_a_lib" != yes; then
+		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."
+	      else
+		echo
+		$ECHO "*** Warning: Linking the shared library $output against the"
+		$ECHO "*** static library $deplib is not portable!"
+		deplibs="$deplib $deplibs"
+	      fi
+	      ;;
+	    esac
+	    continue
+	    ;;
+	  prog)
+	    if test "$pass" != link; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    continue
+	    ;;
+	  esac # linkmode
+	  ;; # *.$libext
+	*.lo | *.$objext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	  elif test "$linkmode" = prog; then
+	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; 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=yes
+	  continue
+	  ;;
+	esac # case $deplib
+
+	if test "$found" = yes || test -f "$lib"; then :
+	else
+	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
+	fi
+
+	# 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 "$linkmode,$pass" = "lib,link" ||
+	   test "$linkmode,$pass" = "prog,scan" ||
+	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+	  test -n "$dlopen" && func_append dlfiles " $dlopen"
+	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
+	fi
+
+	if test "$pass" = conv; 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"
+	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
+	    func_fatal_error "\`$lib' is not a convenience library"
+	  fi
+	  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
+	  continue
+	fi # $pass = conv
+
+
+	# Get the name of the library we link against.
+	linklib=
+	if test -n "$old_library" &&
+	   { test "$prefer_static_libs" = yes ||
+	     test "$prefer_static_libs,$installed" = "built,no"; }; 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 "$pass" = dlopen; then
+	  if test -z "$libdir"; then
+	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
+	  fi
+	  if test -z "$dlname" ||
+	     test "$dlopen_support" != yes ||
+	     test "$build_libtool_libs" = no; 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 "X$installed" = Xyes; 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 "X$hardcode_automatic" = Xyes && 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 "$pass" = dlpreopen; then
+	  if test -z "$libdir" && test "$linkmode" = prog; 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 "$linkmode" = lib; then
+	    deplibs="$dir/$old_library $deplibs"
+	  elif test "$linkmode,$pass" = "prog,link"; 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 "$linkmode" = prog && test "$pass" != link; then
+	  func_append newlib_search_path " $ladir"
+	  deplibs="$lib $deplibs"
+
+	  linkalldeplibs=no
+	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
+	     test "$build_libtool_libs" = no; then
+	    linkalldeplibs=yes
+	  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 test "$linkalldeplibs" = yes; 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 "$linkmode,$pass" = "prog,link"; then
+	  if test -n "$library_names" &&
+	     { { test "$prefer_static_libs" = no ||
+	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
+	       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 test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 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 "$use_static_libs" = built && test "$installed" = yes; then
+	  use_static_libs=no
+	fi
+	if test -n "$library_names" &&
+	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
+	  case $host in
+	  *cygwin* | *mingw* | *cegcc*)
+	      # No point in relinking DLLs because paths are not encoded
+	      func_append notinst_deplibs " $lib"
+	      need_relink=no
+	    ;;
+	  *)
+	    if test "$installed" = no; 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 "$shouldnotlink" = yes && test "$pass" = link; then
+	    echo
+	    if test "$linkmode" = prog; 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 "$linkmode" = lib &&
+	     test "$hardcode_into_libs" = yes; 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*)
+	        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 "$linkmode" = prog || test "$opt_mode" != relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    lib_linked=yes
+	    case $hardcode_action in
+	    immediate | unsupported)
+	      if test "$hardcode_direct" = no; 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 can not
+		    # 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 "$hardcode_minus_L" = no; then
+		case $host in
+		*-*-sunos*) add_shlibpath="$dir" ;;
+		esac
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = no; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    relink)
+	      if test "$hardcode_direct" = yes &&
+	         test "$hardcode_direct_absolute" = no; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = yes; 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 "$hardcode_shlibpath_var" = yes; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    *) lib_linked=no ;;
+	    esac
+
+	    if test "$lib_linked" != yes; 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 "$linkmode" = prog; 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 "$hardcode_direct" != yes &&
+		 test "$hardcode_minus_L" != yes &&
+		 test "$hardcode_shlibpath_var" = yes; then
+		case :$finalize_shlibpath: in
+		*":$libdir:"*) ;;
+		*) func_append finalize_shlibpath "$libdir:" ;;
+		esac
+	      fi
+	    fi
+	  fi
+
+	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    # Finalize command for both is simple: just hardcode it.
+	    if test "$hardcode_direct" = yes &&
+	       test "$hardcode_direct_absolute" = no; then
+	      add="$libdir/$linklib"
+	    elif test "$hardcode_minus_L" = yes; then
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    elif test "$hardcode_shlibpath_var" = yes; then
+	      case :$finalize_shlibpath: in
+	      *":$libdir:"*) ;;
+	      *) func_append finalize_shlibpath "$libdir:" ;;
+	      esac
+	      add="-l$name"
+	    elif test "$hardcode_automatic" = yes; 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 "$linkmode" = prog; 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 "$linkmode" = prog; 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 "$hardcode_direct" != unsupported; 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 "$build_libtool_libs" = yes; then
+	  # Not a shared library
+	  if test "$deplibs_check_method" != pass_all; 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 can not 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 "$module" = yes; 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 "$build_old_libs" = no; 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 "$linkmode" = lib; then
+	  if test -n "$dependency_libs" &&
+	     { test "$hardcode_into_libs" != yes ||
+	       test "$build_old_libs" = yes ||
+	       test "$link_static" = yes; }; 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 "$link_static" = no && 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 "$link_all_deplibs" != no; 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 "$pass" = link; then
+	if test "$linkmode" = "prog"; 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 "$pass" = dlpreopen; then
+	# Link the dlpreopened libraries before other libraries
+	for deplib in $save_deplibs; do
+	  deplibs="$deplib $deplibs"
+	done
+      fi
+      if test "$pass" != dlopen; then
+	if test "$pass" != conv; then
+	  # 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=
+	fi
+
+	if test "$linkmode,$pass" != "prog,link"; then
+	  vars="deplibs"
+	else
+	  vars="compile_deplibs finalize_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
+      # 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 "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
+    fi
+    if test "$linkmode" = prog || test "$linkmode" = lib; then
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; 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 "$module" = no && \
+	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
+
+	if test "$need_lib_prefix" != no; 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 "$deplibs_check_method" != pass_all; 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 "$dlself" != no && \
+	func_warning "\`-dlopen self' is ignored for libtool libraries"
+
+      set dummy $rpath
+      shift
+      test "$#" -gt 1 && \
+	func_warning "ignoring multiple \`-rpath's for a libtool library"
+
+      install_libdir="$1"
+
+      oldlibs=
+      if test -z "$rpath"; then
+	if test "$build_libtool_libs" = yes; 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
+	  # which has an extra 1 added just for fun
+	  #
+	  case $version_type in
+	  # correct linux to gnu/linux during the next big refactor
+	  darwin|linux|osf|windows|none)
+	    func_arith $number_major + $number_minor
+	    current=$func_arith_result
+	    age="$number_minor"
+	    revision="$number_revision"
+	    ;;
+	  freebsd-aout|freebsd-elf|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
+	    ;;
+	  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"
+	  ;;
+
+	freebsd-aout)
+	  major=".$current"
+	  versuffix=".$current.$revision";
+	  ;;
+
+	freebsd-elf)
+	  major=".$current"
+	  versuffix=".$current"
+	  ;;
+
+	irix | nonstopux)
+	  if test "X$lt_irix_increment" = "Xno"; 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 "$loop" -ne 0; 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 "$loop" -ne 0; 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"
+	  ;;
+
+	sunos)
+	  major=".$current"
+	  versuffix=".$current.$revision"
+	  ;;
+
+	windows)
+	  # Use '-' rather than '.', since we only want one
+	  # extension on DOS 8.3 filesystems.
+	  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 "$need_version" = no; then
+	    versuffix=
+	  else
+	    versuffix=".0.0"
+	  fi
+	fi
+
+	# Remove version info from name if versioning should be avoided
+	if test "$avoid_version" = yes && test "$need_version" = no; then
+	  major=
+	  versuffix=
+	  verstring=""
+	fi
+
+	# Check to see if the archive will have undefined symbols.
+	if test "$allow_undefined" = yes; then
+	  if test "$allow_undefined_flag" = unsupported; then
+	    func_warning "undefined symbols not allowed in $host shared libraries"
+	    build_libtool_libs=no
+	    build_old_libs=yes
+	  fi
+	else
+	  # Don't allow undefined symbols.
+	  allow_undefined_flag="$no_undefined_flag"
+	fi
+
+      fi
+
+      func_generate_dlsyms "$libname" "$libname" "yes"
+      func_append libobjs " $symfileobj"
+      test "X$libobjs" = "X " && libobjs=
+
+      if test "$opt_mode" != relink; 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 "X$precious_files_regex" != "X"; 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 "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; 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 "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; 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 "$build_libtool_libs" = yes; 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 "$build_libtool_need_lc" = "yes"; 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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; 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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; 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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; 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 "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  if test "$want_nocaseglob" = yes; 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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; 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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; 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 "X$deplibs_check_method" = "Xnone"; 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 "$droppeddeps" = yes; then
+	  if test "$module" = yes; 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 "$build_old_libs" = no; 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 "$allow_undefined" = no; 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 "$build_old_libs" = no; 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 "$build_libtool_libs" = yes; then
+	# Remove ${wl} instances when linking with ld.
+	# FIXME: should test the right _cmds variable.
+	case $archive_cmds in
+	  *\$LD\ *) wl= ;;
+        esac
+	if test "$hardcode_into_libs" = yes; then
+	  # Hardcode the library paths
+	  hardcode_libdirs=
+	  dep_rpath=
+	  rpath="$finalize_rpath"
+	  test "$opt_mode" != relink && 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 "$opt_mode" != relink && 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
+	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+	      # 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
+	  fi
+	  ;;
+	esac
+
+	# Prepare the list of exported symbols
+	if test -z "$export_symbols"; then
+	  if test "$always_export_symbols" = yes || 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 "$try_normal_branch" = yes \
+		 && { 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 "X$skipped_export" != "X:"; 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 "X$skipped_export" != "X:" && 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 "$compiler_needs_object" = yes &&
+	    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 "$thread_safe" = yes && 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 "$opt_mode" = relink; 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 "$module" = yes && 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 "X$skipped_export" != "X:" &&
+	   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 "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; 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 "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
+	    output=${output_objdir}/${output_la}.lnk
+	    func_verbose "creating linker input file list: $output"
+	    : > $output
+	    set x $save_libobjs
+	    shift
+	    firstobj=
+	    if test "$compiler_needs_object" = yes; 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 "X$objlist" = X ||
+		   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 "$k" -eq 1 ; 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
+
+	    if ${skipped_export-false}; then
+	      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
+	    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_silent || {
+		  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 "$opt_mode" = relink; 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
+
+          if ${skipped_export-false}; then
+	    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
+	  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 "$module" = yes && 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="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $opt_silent || {
+	    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 "$opt_mode" = relink; 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 "$opt_mode" = relink; 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 "$module" = yes || test "$export_dynamic" = yes; then
+	  # On all known operating systems, these are identical.
+	  dlname="$soname"
+	fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; 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=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec and hope we can get by with
+      # turning comma into space..
+      wl=
+
+      if test -n "$convenience"; then
+	if test -n "$whole_archive_flag_spec"; then
+	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+	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 "$build_libtool_libs" != yes && 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" ### testsuite: skip nested quoting test
+
+      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
+
+      if test "$build_libtool_libs" != yes; then
+	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
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; 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"
+
+      test "$preload" = yes \
+        && test "$dlopen_support" = unknown \
+	&& test "$dlopen_self" = unknown \
+	&& test "$dlopen_self_static" = unknown && \
+	  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 "$tagname" = CXX ; 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 "$build_old_libs" = yes; 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@" "no"
+
+      # template prelinking step
+      if test -n "$prelink_cmds"; then
+	func_execute_cmds "$prelink_cmds" 'exit $?'
+      fi
+
+      wrappers_required=yes
+      case $host in
+      *cegcc* | *mingw32ce*)
+        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
+        wrappers_required=no
+        ;;
+      *cygwin* | *mingw* )
+        if test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
+        ;;
+      *)
+        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
+        ;;
+      esac
+      if test "$wrappers_required" = no; then
+	# 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
+      fi
+
+      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 "$no_install" = yes; 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
+
+      if test "$hardcode_action" = relink; then
+	# 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"
+      else
+	if test "$fast_install" != no; then
+	  link_command="$finalize_var$compile_command$finalize_rpath"
+	  if test "$fast_install" = yes; then
+	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
+	  else
+	    # fast_install is set to needless
+	    relink_command=
+	  fi
+	else
+	  link_command="$compile_var$compile_command$compile_rpath"
+	  relink_command="$finalize_var$finalize_command$finalize_rpath"
+	fi
+      fi
+
+      # 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
+
+      if test "$build_libtool_libs" = convenience; then
+	oldobjs="$libobjs_save $symfileobj"
+	addlibs="$convenience"
+	build_libtool_libs=no
+      else
+	if test "$build_libtool_libs" = module; then
+	  oldobjs="$libobjs_save"
+	  build_libtool_libs=no
+	else
+	  oldobjs="$old_deplibs $non_pic_objects"
+	  if test "$preload" = yes && test -f "$symfileobj"; then
+	    func_append oldobjs " $symfileobj"
+	  fi
+	fi
+	addlibs="$old_convenience"
+      fi
+
+      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 "$build_libtool_libs" = yes; 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 "X$oldobjs" = "X" ; 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 "$build_old_libs" = yes && 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 "$hardcode_automatic" = yes ; then
+	relink_command=
+      fi
+
+      # Only create the output if not a dry run.
+      $opt_dry_run || {
+	for installed in no yes; do
+	  if test "$installed" = yes; 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 "x$bindir" != x ;
+	      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$TIMESTAMP) $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 can not 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 "$installed" = no && test "$need_relink" = yes; 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
+}
+
+{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
+    func_mode_link ${1+"$@"}
+
+
+# func_mode_uninstall arg...
+func_mode_uninstall ()
+{
+    $opt_debug
+    RM="$nonopt"
+    files=
+    rmforce=
+    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=yes ;;
+      -*) 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 "X$dir" = X.; then
+	odir="$objdir"
+      else
+	odir="$dir/$objdir"
+      fi
+      func_basename "$file"
+      name="$func_basename_result"
+      test "$opt_mode" = uninstall && odir="$dir"
+
+      # Remember odir for removal later, being careful to avoid duplicates
+      if test "$opt_mode" = clean; 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 test "$rmforce" = yes; 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" 'test "$rmforce" = yes || exit_status=1'
+	    fi
+
+	    if test -n "$old_library"; then
+	      # Do each command in the old_postuninstall commands.
+	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || 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 "$pic_object" != none; 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 "$non_pic_object" != none; then
+	    func_append rmfiles " $dir/$non_pic_object"
+	  fi
+	fi
+	;;
+
+      *)
+	if test "$opt_mode" = clean ; 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 "$fast_install" = yes && 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
+}
+
+{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
+    func_mode_uninstall ${1+"$@"}
+
+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
+# in which 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:
+# vi:sw=2
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/m4/analyses.m4
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/m4/analyses.m4	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/m4/analyses.m4	(revision 21239)
@@ -0,0 +1,923 @@
+
+dnl   WARNING: DO NOT MODIFY THIS FILE
+dnl            this file has been automatically generated by Synchronize.sh
+dnl            Please read README for more information
+
+# AX_ANALYSES_SELECTION
+# -----------------
+# Check for analyses compilation
+AC_DEFUN([AX_ANALYSES_SELECTION],
+[
+
+dnl with-Smb{{{
+
+AC_ARG_WITH([Smb],
+
+	AS_HELP_STRING([--with-Smb = YES], [compile with Smb capabilities (default is yes)]),
+
+	[SMB=$withval],[SMB=yes])
+
+AC_MSG_CHECKING(for Smb capability compilation)
+
+
+HAVE_SMB=no 
+
+if test "x$SMB" = "xyes"; then
+
+	HAVE_SMB=yes
+
+	AC_DEFINE([_HAVE_SMB_],[1],[with Smb capability])
+
+fi
+
+AM_CONDITIONAL([SMB], [test x$HAVE_SMB = xyes])
+
+AC_MSG_RESULT($HAVE_SMB)
+
+dnl }}}
+dnl with-AdjointBalancethickness{{{
+
+AC_ARG_WITH([AdjointBalancethickness],
+
+	AS_HELP_STRING([--with-AdjointBalancethickness = YES], [compile with AdjointBalancethickness capabilities (default is yes)]),
+
+	[ADJOINTBALANCETHICKNESS=$withval],[ADJOINTBALANCETHICKNESS=yes])
+
+AC_MSG_CHECKING(for AdjointBalancethickness capability compilation)
+
+
+HAVE_ADJOINTBALANCETHICKNESS=no 
+
+if test "x$ADJOINTBALANCETHICKNESS" = "xyes"; then
+
+	HAVE_ADJOINTBALANCETHICKNESS=yes
+
+	AC_DEFINE([_HAVE_ADJOINTBALANCETHICKNESS_],[1],[with AdjointBalancethickness capability])
+
+fi
+
+AM_CONDITIONAL([ADJOINTBALANCETHICKNESS], [test x$HAVE_ADJOINTBALANCETHICKNESS = xyes])
+
+AC_MSG_RESULT($HAVE_ADJOINTBALANCETHICKNESS)
+
+dnl }}}
+dnl with-AdjointBalancethickness2{{{
+
+AC_ARG_WITH([AdjointBalancethickness2],
+
+	AS_HELP_STRING([--with-AdjointBalancethickness2 = YES], [compile with AdjointBalancethickness2 capabilities (default is yes)]),
+
+	[ADJOINTBALANCETHICKNESS2=$withval],[ADJOINTBALANCETHICKNESS2=yes])
+
+AC_MSG_CHECKING(for AdjointBalancethickness2 capability compilation)
+
+
+HAVE_ADJOINTBALANCETHICKNESS2=no 
+
+if test "x$ADJOINTBALANCETHICKNESS2" = "xyes"; then
+
+	HAVE_ADJOINTBALANCETHICKNESS2=yes
+
+	AC_DEFINE([_HAVE_ADJOINTBALANCETHICKNESS2_],[1],[with AdjointBalancethickness2 capability])
+
+fi
+
+AM_CONDITIONAL([ADJOINTBALANCETHICKNESS2], [test x$HAVE_ADJOINTBALANCETHICKNESS2 = xyes])
+
+AC_MSG_RESULT($HAVE_ADJOINTBALANCETHICKNESS2)
+
+dnl }}}
+dnl with-AdjointHoriz{{{
+
+AC_ARG_WITH([AdjointHoriz],
+
+	AS_HELP_STRING([--with-AdjointHoriz = YES], [compile with AdjointHoriz capabilities (default is yes)]),
+
+	[ADJOINTHORIZ=$withval],[ADJOINTHORIZ=yes])
+
+AC_MSG_CHECKING(for AdjointHoriz capability compilation)
+
+
+HAVE_ADJOINTHORIZ=no 
+
+if test "x$ADJOINTHORIZ" = "xyes"; then
+
+	HAVE_ADJOINTHORIZ=yes
+
+	AC_DEFINE([_HAVE_ADJOINTHORIZ_],[1],[with AdjointHoriz capability])
+
+fi
+
+AM_CONDITIONAL([ADJOINTHORIZ], [test x$HAVE_ADJOINTHORIZ = xyes])
+
+AC_MSG_RESULT($HAVE_ADJOINTHORIZ)
+
+dnl }}}
+dnl with-Balancethickness{{{
+
+AC_ARG_WITH([Balancethickness],
+
+	AS_HELP_STRING([--with-Balancethickness = YES], [compile with Balancethickness capabilities (default is yes)]),
+
+	[BALANCETHICKNESS=$withval],[BALANCETHICKNESS=yes])
+
+AC_MSG_CHECKING(for Balancethickness capability compilation)
+
+
+HAVE_BALANCETHICKNESS=no 
+
+if test "x$BALANCETHICKNESS" = "xyes"; then
+
+	HAVE_BALANCETHICKNESS=yes
+
+	AC_DEFINE([_HAVE_BALANCETHICKNESS_],[1],[with Balancethickness capability])
+
+fi
+
+AM_CONDITIONAL([BALANCETHICKNESS], [test x$HAVE_BALANCETHICKNESS = xyes])
+
+AC_MSG_RESULT($HAVE_BALANCETHICKNESS)
+
+dnl }}}
+dnl with-Balancethickness2{{{
+
+AC_ARG_WITH([Balancethickness2],
+
+	AS_HELP_STRING([--with-Balancethickness2 = YES], [compile with Balancethickness2 capabilities (default is yes)]),
+
+	[BALANCETHICKNESS2=$withval],[BALANCETHICKNESS2=yes])
+
+AC_MSG_CHECKING(for Balancethickness2 capability compilation)
+
+
+HAVE_BALANCETHICKNESS2=no 
+
+if test "x$BALANCETHICKNESS2" = "xyes"; then
+
+	HAVE_BALANCETHICKNESS2=yes
+
+	AC_DEFINE([_HAVE_BALANCETHICKNESS2_],[1],[with Balancethickness2 capability])
+
+fi
+
+AM_CONDITIONAL([BALANCETHICKNESS2], [test x$HAVE_BALANCETHICKNESS2 = xyes])
+
+AC_MSG_RESULT($HAVE_BALANCETHICKNESS2)
+
+dnl }}}
+dnl with-BalancethicknessSoft{{{
+
+AC_ARG_WITH([BalancethicknessSoft],
+
+	AS_HELP_STRING([--with-BalancethicknessSoft = YES], [compile with BalancethicknessSoft capabilities (default is yes)]),
+
+	[BALANCETHICKNESSSOFT=$withval],[BALANCETHICKNESSSOFT=yes])
+
+AC_MSG_CHECKING(for BalancethicknessSoft capability compilation)
+
+
+HAVE_BALANCETHICKNESSSOFT=no 
+
+if test "x$BALANCETHICKNESSSOFT" = "xyes"; then
+
+	HAVE_BALANCETHICKNESSSOFT=yes
+
+	AC_DEFINE([_HAVE_BALANCETHICKNESSSOFT_],[1],[with BalancethicknessSoft capability])
+
+fi
+
+AM_CONDITIONAL([BALANCETHICKNESSSOFT], [test x$HAVE_BALANCETHICKNESSSOFT = xyes])
+
+AC_MSG_RESULT($HAVE_BALANCETHICKNESSSOFT)
+
+dnl }}}
+dnl with-Balancevelocity{{{
+
+AC_ARG_WITH([Balancevelocity],
+
+	AS_HELP_STRING([--with-Balancevelocity = YES], [compile with Balancevelocity capabilities (default is yes)]),
+
+	[BALANCEVELOCITY=$withval],[BALANCEVELOCITY=yes])
+
+AC_MSG_CHECKING(for Balancevelocity capability compilation)
+
+
+HAVE_BALANCEVELOCITY=no 
+
+if test "x$BALANCEVELOCITY" = "xyes"; then
+
+	HAVE_BALANCEVELOCITY=yes
+
+	AC_DEFINE([_HAVE_BALANCEVELOCITY_],[1],[with Balancevelocity capability])
+
+fi
+
+AM_CONDITIONAL([BALANCEVELOCITY], [test x$HAVE_BALANCEVELOCITY = xyes])
+
+AC_MSG_RESULT($HAVE_BALANCEVELOCITY)
+
+dnl }}}
+dnl with-L2ProjectionEPL{{{
+
+AC_ARG_WITH([L2ProjectionEPL],
+
+	AS_HELP_STRING([--with-L2ProjectionEPL = YES], [compile with L2ProjectionEPL capabilities (default is yes)]),
+
+	[L2PROJECTIONEPL=$withval],[L2PROJECTIONEPL=yes])
+
+AC_MSG_CHECKING(for L2ProjectionEPL capability compilation)
+
+
+HAVE_L2PROJECTIONEPL=no 
+
+if test "x$L2PROJECTIONEPL" = "xyes"; then
+
+	HAVE_L2PROJECTIONEPL=yes
+
+	AC_DEFINE([_HAVE_L2PROJECTIONEPL_],[1],[with L2ProjectionEPL capability])
+
+fi
+
+AM_CONDITIONAL([L2PROJECTIONEPL], [test x$HAVE_L2PROJECTIONEPL = xyes])
+
+AC_MSG_RESULT($HAVE_L2PROJECTIONEPL)
+
+dnl }}}
+dnl with-L2ProjectionBase{{{
+
+AC_ARG_WITH([L2ProjectionBase],
+
+	AS_HELP_STRING([--with-L2ProjectionBase = YES], [compile with L2ProjectionBase capabilities (default is yes)]),
+
+	[L2PROJECTIONBASE=$withval],[L2PROJECTIONBASE=yes])
+
+AC_MSG_CHECKING(for L2ProjectionBase capability compilation)
+
+
+HAVE_L2PROJECTIONBASE=no 
+
+if test "x$L2PROJECTIONBASE" = "xyes"; then
+
+	HAVE_L2PROJECTIONBASE=yes
+
+	AC_DEFINE([_HAVE_L2PROJECTIONBASE_],[1],[with L2ProjectionBase capability])
+
+fi
+
+AM_CONDITIONAL([L2PROJECTIONBASE], [test x$HAVE_L2PROJECTIONBASE = xyes])
+
+AC_MSG_RESULT($HAVE_L2PROJECTIONBASE)
+
+dnl }}}
+dnl with-DamageEvolution{{{
+
+AC_ARG_WITH([DamageEvolution],
+
+	AS_HELP_STRING([--with-DamageEvolution = YES], [compile with DamageEvolution capabilities (default is yes)]),
+
+	[DAMAGEEVOLUTION=$withval],[DAMAGEEVOLUTION=yes])
+
+AC_MSG_CHECKING(for DamageEvolution capability compilation)
+
+
+HAVE_DAMAGEEVOLUTION=no 
+
+if test "x$DAMAGEEVOLUTION" = "xyes"; then
+
+	HAVE_DAMAGEEVOLUTION=yes
+
+	AC_DEFINE([_HAVE_DAMAGEEVOLUTION_],[1],[with DamageEvolution capability])
+
+fi
+
+AM_CONDITIONAL([DAMAGEEVOLUTION], [test x$HAVE_DAMAGEEVOLUTION = xyes])
+
+AC_MSG_RESULT($HAVE_DAMAGEEVOLUTION)
+
+dnl }}}
+dnl with-Stressbalance{{{
+
+AC_ARG_WITH([Stressbalance],
+
+	AS_HELP_STRING([--with-Stressbalance = YES], [compile with Stressbalance capabilities (default is yes)]),
+
+	[STRESSBALANCE=$withval],[STRESSBALANCE=yes])
+
+AC_MSG_CHECKING(for Stressbalance capability compilation)
+
+
+HAVE_STRESSBALANCE=no 
+
+if test "x$STRESSBALANCE" = "xyes"; then
+
+	HAVE_STRESSBALANCE=yes
+
+	AC_DEFINE([_HAVE_STRESSBALANCE_],[1],[with Stressbalance capability])
+
+fi
+
+AM_CONDITIONAL([STRESSBALANCE], [test x$HAVE_STRESSBALANCE = xyes])
+
+AC_MSG_RESULT($HAVE_STRESSBALANCE)
+
+dnl }}}
+dnl with-StressbalanceSIA{{{
+
+AC_ARG_WITH([StressbalanceSIA],
+
+	AS_HELP_STRING([--with-StressbalanceSIA = YES], [compile with StressbalanceSIA capabilities (default is yes)]),
+
+	[STRESSBALANCESIA=$withval],[STRESSBALANCESIA=yes])
+
+AC_MSG_CHECKING(for StressbalanceSIA capability compilation)
+
+
+HAVE_STRESSBALANCESIA=no 
+
+if test "x$STRESSBALANCESIA" = "xyes"; then
+
+	HAVE_STRESSBALANCESIA=yes
+
+	AC_DEFINE([_HAVE_STRESSBALANCESIA_],[1],[with StressbalanceSIA capability])
+
+fi
+
+AM_CONDITIONAL([STRESSBALANCESIA], [test x$HAVE_STRESSBALANCESIA = xyes])
+
+AC_MSG_RESULT($HAVE_STRESSBALANCESIA)
+
+dnl }}}
+dnl with-StressbalanceVertical{{{
+
+AC_ARG_WITH([StressbalanceVertical],
+
+	AS_HELP_STRING([--with-StressbalanceVertical = YES], [compile with StressbalanceVertical capabilities (default is yes)]),
+
+	[STRESSBALANCEVERTICAL=$withval],[STRESSBALANCEVERTICAL=yes])
+
+AC_MSG_CHECKING(for StressbalanceVertical capability compilation)
+
+
+HAVE_STRESSBALANCEVERTICAL=no 
+
+if test "x$STRESSBALANCEVERTICAL" = "xyes"; then
+
+	HAVE_STRESSBALANCEVERTICAL=yes
+
+	AC_DEFINE([_HAVE_STRESSBALANCEVERTICAL_],[1],[with StressbalanceVertical capability])
+
+fi
+
+AM_CONDITIONAL([STRESSBALANCEVERTICAL], [test x$HAVE_STRESSBALANCEVERTICAL = xyes])
+
+AC_MSG_RESULT($HAVE_STRESSBALANCEVERTICAL)
+
+dnl }}}
+dnl with-Enthalpy{{{
+
+AC_ARG_WITH([Enthalpy],
+
+	AS_HELP_STRING([--with-Enthalpy = YES], [compile with Enthalpy capabilities (default is yes)]),
+
+	[ENTHALPY=$withval],[ENTHALPY=yes])
+
+AC_MSG_CHECKING(for Enthalpy capability compilation)
+
+
+HAVE_ENTHALPY=no 
+
+if test "x$ENTHALPY" = "xyes"; then
+
+	HAVE_ENTHALPY=yes
+
+	AC_DEFINE([_HAVE_ENTHALPY_],[1],[with Enthalpy capability])
+
+fi
+
+AM_CONDITIONAL([ENTHALPY], [test x$HAVE_ENTHALPY = xyes])
+
+AC_MSG_RESULT($HAVE_ENTHALPY)
+
+dnl }}}
+dnl with-HydrologyShreve{{{
+
+AC_ARG_WITH([HydrologyShreve],
+
+	AS_HELP_STRING([--with-HydrologyShreve = YES], [compile with HydrologyShreve capabilities (default is yes)]),
+
+	[HYDROLOGYSHREVE=$withval],[HYDROLOGYSHREVE=yes])
+
+AC_MSG_CHECKING(for HydrologyShreve capability compilation)
+
+
+HAVE_HYDROLOGYSHREVE=no 
+
+if test "x$HYDROLOGYSHREVE" = "xyes"; then
+
+	HAVE_HYDROLOGYSHREVE=yes
+
+	AC_DEFINE([_HAVE_HYDROLOGYSHREVE_],[1],[with HydrologyShreve capability])
+
+fi
+
+AM_CONDITIONAL([HYDROLOGYSHREVE], [test x$HAVE_HYDROLOGYSHREVE = xyes])
+
+AC_MSG_RESULT($HAVE_HYDROLOGYSHREVE)
+
+dnl }}}
+dnl with-HydrologyDCInefficient{{{
+
+AC_ARG_WITH([HydrologyDCInefficient],
+
+	AS_HELP_STRING([--with-HydrologyDCInefficient = YES], [compile with HydrologyDCInefficient capabilities (default is yes)]),
+
+	[HYDROLOGYDCINEFFICIENT=$withval],[HYDROLOGYDCINEFFICIENT=yes])
+
+AC_MSG_CHECKING(for HydrologyDCInefficient capability compilation)
+
+
+HAVE_HYDROLOGYDCINEFFICIENT=no 
+
+if test "x$HYDROLOGYDCINEFFICIENT" = "xyes"; then
+
+	HAVE_HYDROLOGYDCINEFFICIENT=yes
+
+	AC_DEFINE([_HAVE_HYDROLOGYDCINEFFICIENT_],[1],[with HydrologyDCInefficient capability])
+
+fi
+
+AM_CONDITIONAL([HYDROLOGYDCINEFFICIENT], [test x$HAVE_HYDROLOGYDCINEFFICIENT = xyes])
+
+AC_MSG_RESULT($HAVE_HYDROLOGYDCINEFFICIENT)
+
+dnl }}}
+dnl with-HydrologyDCEfficient{{{
+
+AC_ARG_WITH([HydrologyDCEfficient],
+
+	AS_HELP_STRING([--with-HydrologyDCEfficient = YES], [compile with HydrologyDCEfficient capabilities (default is yes)]),
+
+	[HYDROLOGYDCEFFICIENT=$withval],[HYDROLOGYDCEFFICIENT=yes])
+
+AC_MSG_CHECKING(for HydrologyDCEfficient capability compilation)
+
+
+HAVE_HYDROLOGYDCEFFICIENT=no 
+
+if test "x$HYDROLOGYDCEFFICIENT" = "xyes"; then
+
+	HAVE_HYDROLOGYDCEFFICIENT=yes
+
+	AC_DEFINE([_HAVE_HYDROLOGYDCEFFICIENT_],[1],[with HydrologyDCEfficient capability])
+
+fi
+
+AM_CONDITIONAL([HYDROLOGYDCEFFICIENT], [test x$HAVE_HYDROLOGYDCEFFICIENT = xyes])
+
+AC_MSG_RESULT($HAVE_HYDROLOGYDCEFFICIENT)
+
+dnl }}}
+dnl with-HydrologySommers{{{
+
+AC_ARG_WITH([HydrologySommers],
+
+	AS_HELP_STRING([--with-HydrologySommers = YES], [compile with HydrologySommers capabilities (default is yes)]),
+
+	[HYDROLOGYSOMMERS=$withval],[HYDROLOGYSOMMERS=yes])
+
+AC_MSG_CHECKING(for HydrologySommers capability compilation)
+
+
+HAVE_HYDROLOGYSOMMERS=no 
+
+if test "x$HYDROLOGYSOMMERS" = "xyes"; then
+
+	HAVE_HYDROLOGYSOMMERS=yes
+
+	AC_DEFINE([_HAVE_HYDROLOGYSOMMERS_],[1],[with HydrologySommers capability])
+
+fi
+
+AM_CONDITIONAL([HYDROLOGYSOMMERS], [test x$HAVE_HYDROLOGYSOMMERS = xyes])
+
+AC_MSG_RESULT($HAVE_HYDROLOGYSOMMERS)
+
+dnl }}}
+dnl with-Melting{{{
+
+AC_ARG_WITH([Melting],
+
+	AS_HELP_STRING([--with-Melting = YES], [compile with Melting capabilities (default is yes)]),
+
+	[MELTING=$withval],[MELTING=yes])
+
+AC_MSG_CHECKING(for Melting capability compilation)
+
+
+HAVE_MELTING=no 
+
+if test "x$MELTING" = "xyes"; then
+
+	HAVE_MELTING=yes
+
+	AC_DEFINE([_HAVE_MELTING_],[1],[with Melting capability])
+
+fi
+
+AM_CONDITIONAL([MELTING], [test x$HAVE_MELTING = xyes])
+
+AC_MSG_RESULT($HAVE_MELTING)
+
+dnl }}}
+dnl with-Masstransport{{{
+
+AC_ARG_WITH([Masstransport],
+
+	AS_HELP_STRING([--with-Masstransport = YES], [compile with Masstransport capabilities (default is yes)]),
+
+	[MASSTRANSPORT=$withval],[MASSTRANSPORT=yes])
+
+AC_MSG_CHECKING(for Masstransport capability compilation)
+
+
+HAVE_MASSTRANSPORT=no 
+
+if test "x$MASSTRANSPORT" = "xyes"; then
+
+	HAVE_MASSTRANSPORT=yes
+
+	AC_DEFINE([_HAVE_MASSTRANSPORT_],[1],[with Masstransport capability])
+
+fi
+
+AM_CONDITIONAL([MASSTRANSPORT], [test x$HAVE_MASSTRANSPORT = xyes])
+
+AC_MSG_RESULT($HAVE_MASSTRANSPORT)
+
+dnl }}}
+dnl with-FreeSurfaceBase{{{
+
+AC_ARG_WITH([FreeSurfaceBase],
+
+	AS_HELP_STRING([--with-FreeSurfaceBase = YES], [compile with FreeSurfaceBase capabilities (default is yes)]),
+
+	[FREESURFACEBASE=$withval],[FREESURFACEBASE=yes])
+
+AC_MSG_CHECKING(for FreeSurfaceBase capability compilation)
+
+
+HAVE_FREESURFACEBASE=no 
+
+if test "x$FREESURFACEBASE" = "xyes"; then
+
+	HAVE_FREESURFACEBASE=yes
+
+	AC_DEFINE([_HAVE_FREESURFACEBASE_],[1],[with FreeSurfaceBase capability])
+
+fi
+
+AM_CONDITIONAL([FREESURFACEBASE], [test x$HAVE_FREESURFACEBASE = xyes])
+
+AC_MSG_RESULT($HAVE_FREESURFACEBASE)
+
+dnl }}}
+dnl with-FreeSurfaceTop{{{
+
+AC_ARG_WITH([FreeSurfaceTop],
+
+	AS_HELP_STRING([--with-FreeSurfaceTop = YES], [compile with FreeSurfaceTop capabilities (default is yes)]),
+
+	[FREESURFACETOP=$withval],[FREESURFACETOP=yes])
+
+AC_MSG_CHECKING(for FreeSurfaceTop capability compilation)
+
+
+HAVE_FREESURFACETOP=no 
+
+if test "x$FREESURFACETOP" = "xyes"; then
+
+	HAVE_FREESURFACETOP=yes
+
+	AC_DEFINE([_HAVE_FREESURFACETOP_],[1],[with FreeSurfaceTop capability])
+
+fi
+
+AM_CONDITIONAL([FREESURFACETOP], [test x$HAVE_FREESURFACETOP = xyes])
+
+AC_MSG_RESULT($HAVE_FREESURFACETOP)
+
+dnl }}}
+dnl with-ExtrudeFromBase{{{
+
+AC_ARG_WITH([ExtrudeFromBase],
+
+	AS_HELP_STRING([--with-ExtrudeFromBase = YES], [compile with ExtrudeFromBase capabilities (default is yes)]),
+
+	[EXTRUDEFROMBASE=$withval],[EXTRUDEFROMBASE=yes])
+
+AC_MSG_CHECKING(for ExtrudeFromBase capability compilation)
+
+
+HAVE_EXTRUDEFROMBASE=no 
+
+if test "x$EXTRUDEFROMBASE" = "xyes"; then
+
+	HAVE_EXTRUDEFROMBASE=yes
+
+	AC_DEFINE([_HAVE_EXTRUDEFROMBASE_],[1],[with ExtrudeFromBase capability])
+
+fi
+
+AM_CONDITIONAL([EXTRUDEFROMBASE], [test x$HAVE_EXTRUDEFROMBASE = xyes])
+
+AC_MSG_RESULT($HAVE_EXTRUDEFROMBASE)
+
+dnl }}}
+dnl with-ExtrudeFromTop{{{
+
+AC_ARG_WITH([ExtrudeFromTop],
+
+	AS_HELP_STRING([--with-ExtrudeFromTop = YES], [compile with ExtrudeFromTop capabilities (default is yes)]),
+
+	[EXTRUDEFROMTOP=$withval],[EXTRUDEFROMTOP=yes])
+
+AC_MSG_CHECKING(for ExtrudeFromTop capability compilation)
+
+
+HAVE_EXTRUDEFROMTOP=no 
+
+if test "x$EXTRUDEFROMTOP" = "xyes"; then
+
+	HAVE_EXTRUDEFROMTOP=yes
+
+	AC_DEFINE([_HAVE_EXTRUDEFROMTOP_],[1],[with ExtrudeFromTop capability])
+
+fi
+
+AM_CONDITIONAL([EXTRUDEFROMTOP], [test x$HAVE_EXTRUDEFROMTOP = xyes])
+
+AC_MSG_RESULT($HAVE_EXTRUDEFROMTOP)
+
+dnl }}}
+dnl with-DepthAverage{{{
+
+AC_ARG_WITH([DepthAverage],
+
+	AS_HELP_STRING([--with-DepthAverage = YES], [compile with DepthAverage capabilities (default is yes)]),
+
+	[DEPTHAVERAGE=$withval],[DEPTHAVERAGE=yes])
+
+AC_MSG_CHECKING(for DepthAverage capability compilation)
+
+
+HAVE_DEPTHAVERAGE=no 
+
+if test "x$DEPTHAVERAGE" = "xyes"; then
+
+	HAVE_DEPTHAVERAGE=yes
+
+	AC_DEFINE([_HAVE_DEPTHAVERAGE_],[1],[with DepthAverage capability])
+
+fi
+
+AM_CONDITIONAL([DEPTHAVERAGE], [test x$HAVE_DEPTHAVERAGE = xyes])
+
+AC_MSG_RESULT($HAVE_DEPTHAVERAGE)
+
+dnl }}}
+dnl with-Smooth{{{
+
+AC_ARG_WITH([Smooth],
+
+	AS_HELP_STRING([--with-Smooth = YES], [compile with Smooth capabilities (default is yes)]),
+
+	[SMOOTH=$withval],[SMOOTH=yes])
+
+AC_MSG_CHECKING(for Smooth capability compilation)
+
+
+HAVE_SMOOTH=no 
+
+if test "x$SMOOTH" = "xyes"; then
+
+	HAVE_SMOOTH=yes
+
+	AC_DEFINE([_HAVE_SMOOTH_],[1],[with Smooth capability])
+
+fi
+
+AM_CONDITIONAL([SMOOTH], [test x$HAVE_SMOOTH = xyes])
+
+AC_MSG_RESULT($HAVE_SMOOTH)
+
+dnl }}}
+dnl with-Thermal{{{
+
+AC_ARG_WITH([Thermal],
+
+	AS_HELP_STRING([--with-Thermal = YES], [compile with Thermal capabilities (default is yes)]),
+
+	[THERMAL=$withval],[THERMAL=yes])
+
+AC_MSG_CHECKING(for Thermal capability compilation)
+
+
+HAVE_THERMAL=no 
+
+if test "x$THERMAL" = "xyes"; then
+
+	HAVE_THERMAL=yes
+
+	AC_DEFINE([_HAVE_THERMAL_],[1],[with Thermal capability])
+
+fi
+
+AM_CONDITIONAL([THERMAL], [test x$HAVE_THERMAL = xyes])
+
+AC_MSG_RESULT($HAVE_THERMAL)
+
+dnl }}}
+dnl with-UzawaPressure{{{
+
+AC_ARG_WITH([UzawaPressure],
+
+	AS_HELP_STRING([--with-UzawaPressure = YES], [compile with UzawaPressure capabilities (default is yes)]),
+
+	[UZAWAPRESSURE=$withval],[UZAWAPRESSURE=yes])
+
+AC_MSG_CHECKING(for UzawaPressure capability compilation)
+
+
+HAVE_UZAWAPRESSURE=no 
+
+if test "x$UZAWAPRESSURE" = "xyes"; then
+
+	HAVE_UZAWAPRESSURE=yes
+
+	AC_DEFINE([_HAVE_UZAWAPRESSURE_],[1],[with UzawaPressure capability])
+
+fi
+
+AM_CONDITIONAL([UZAWAPRESSURE], [test x$HAVE_UZAWAPRESSURE = xyes])
+
+AC_MSG_RESULT($HAVE_UZAWAPRESSURE)
+
+dnl }}}
+dnl with-Gia{{{
+
+AC_ARG_WITH([Gia],
+
+	AS_HELP_STRING([--with-Gia = YES], [compile with Gia capabilities (default is yes)]),
+
+	[GIA=$withval],[GIA=yes])
+
+AC_MSG_CHECKING(for Gia capability compilation)
+
+
+HAVE_GIA=no 
+
+if test "x$GIA" = "xyes"; then
+
+	HAVE_GIA=yes
+
+	AC_DEFINE([_HAVE_GIA_],[1],[with Gia capability])
+
+fi
+
+AM_CONDITIONAL([GIA], [test x$HAVE_GIA = xyes])
+
+AC_MSG_RESULT($HAVE_GIA)
+
+dnl }}}
+dnl with-Meshdeformation{{{
+
+AC_ARG_WITH([Meshdeformation],
+
+	AS_HELP_STRING([--with-Meshdeformation = YES], [compile with Meshdeformation capabilities (default is yes)]),
+
+	[MESHDEFORMATION=$withval],[MESHDEFORMATION=yes])
+
+AC_MSG_CHECKING(for Meshdeformation capability compilation)
+
+
+HAVE_MESHDEFORMATION=no 
+
+if test "x$MESHDEFORMATION" = "xyes"; then
+
+	HAVE_MESHDEFORMATION=yes
+
+	AC_DEFINE([_HAVE_MESHDEFORMATION_],[1],[with Meshdeformation capability])
+
+fi
+
+AM_CONDITIONAL([MESHDEFORMATION], [test x$HAVE_MESHDEFORMATION = xyes])
+
+AC_MSG_RESULT($HAVE_MESHDEFORMATION)
+
+dnl }}}
+dnl with-Levelset{{{
+
+AC_ARG_WITH([Levelset],
+
+	AS_HELP_STRING([--with-Levelset = YES], [compile with Levelset capabilities (default is yes)]),
+
+	[LEVELSET=$withval],[LEVELSET=yes])
+
+AC_MSG_CHECKING(for Levelset capability compilation)
+
+
+HAVE_LEVELSET=no 
+
+if test "x$LEVELSET" = "xyes"; then
+
+	HAVE_LEVELSET=yes
+
+	AC_DEFINE([_HAVE_LEVELSET_],[1],[with Levelset capability])
+
+fi
+
+AM_CONDITIONAL([LEVELSET], [test x$HAVE_LEVELSET = xyes])
+
+AC_MSG_RESULT($HAVE_LEVELSET)
+
+dnl }}}
+dnl with-Extrapolation{{{
+
+AC_ARG_WITH([Extrapolation],
+
+	AS_HELP_STRING([--with-Extrapolation = YES], [compile with Extrapolation capabilities (default is yes)]),
+
+	[EXTRAPOLATION=$withval],[EXTRAPOLATION=yes])
+
+AC_MSG_CHECKING(for Extrapolation capability compilation)
+
+
+HAVE_EXTRAPOLATION=no 
+
+if test "x$EXTRAPOLATION" = "xyes"; then
+
+	HAVE_EXTRAPOLATION=yes
+
+	AC_DEFINE([_HAVE_EXTRAPOLATION_],[1],[with Extrapolation capability])
+
+fi
+
+AM_CONDITIONAL([EXTRAPOLATION], [test x$HAVE_EXTRAPOLATION = xyes])
+
+AC_MSG_RESULT($HAVE_EXTRAPOLATION)
+
+dnl }}}
+dnl with-LsfReinitialization{{{
+
+AC_ARG_WITH([LsfReinitialization],
+
+	AS_HELP_STRING([--with-LsfReinitialization = YES], [compile with LsfReinitialization capabilities (default is yes)]),
+
+	[LSFREINITIALIZATION=$withval],[LSFREINITIALIZATION=yes])
+
+AC_MSG_CHECKING(for LsfReinitialization capability compilation)
+
+
+HAVE_LSFREINITIALIZATION=no 
+
+if test "x$LSFREINITIALIZATION" = "xyes"; then
+
+	HAVE_LSFREINITIALIZATION=yes
+
+	AC_DEFINE([_HAVE_LSFREINITIALIZATION_],[1],[with LsfReinitialization capability])
+
+fi
+
+AM_CONDITIONAL([LSFREINITIALIZATION], [test x$HAVE_LSFREINITIALIZATION = xyes])
+
+AC_MSG_RESULT($HAVE_LSFREINITIALIZATION)
+
+dnl }}}
+dnl with-Sealevelrise{{{
+
+AC_ARG_WITH([Sealevelrise],
+
+	AS_HELP_STRING([--with-Sealevelrise = YES], [compile with Sealevelrise capabilities (default is yes)]),
+
+	[SEALEVELRISE=$withval],[SEALEVELRISE=yes])
+
+AC_MSG_CHECKING(for Sealevelrise capability compilation)
+
+
+HAVE_SEALEVELRISE=no 
+
+if test "x$SEALEVELRISE" = "xyes"; then
+
+	HAVE_SEALEVELRISE=yes
+
+	AC_DEFINE([_HAVE_SEALEVELRISE_],[1],[with Sealevelrise capability])
+
+fi
+
+AM_CONDITIONAL([SEALEVELRISE], [test x$HAVE_SEALEVELRISE = xyes])
+
+AC_MSG_RESULT($HAVE_SEALEVELRISE)
+
+dnl }}}
+
+])
Index: /issm/branches/trunk-larour-NatClimateChange2016/m4/ar-lib.m4
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/m4/ar-lib.m4	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/m4/ar-lib.m4	(revision 21239)
@@ -0,0 +1,61 @@
+##                                                          -*- Autoconf -*-
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_PROG_AR([ACT-IF-FAIL])
+# -------------------------
+# Try to determine the archiver interface, and trigger the ar-lib wrapper
+# if it is needed.  If the detection of archiver interface fails, run
+# ACT-IF-FAIL (default is to abort configure with a proper error message).
+AC_DEFUN([AM_PROG_AR],
+[AC_BEFORE([$0], [LT_INIT])dnl
+AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([ar-lib])dnl
+AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false])
+: ${AR=ar}
+
+AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface],
+  [am_cv_ar_interface=ar
+   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])],
+     [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
+      AC_TRY_EVAL([am_ar_try])
+      if test "$ac_status" -eq 0; then
+        am_cv_ar_interface=ar
+      else
+        am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
+        AC_TRY_EVAL([am_ar_try])
+        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
+     ])
+   ])
+
+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)
+  m4_default([$1],
+             [AC_MSG_ERROR([could not determine $AR interface])])
+  ;;
+esac
+AC_SUBST([AR])dnl
+])
Index: /issm/branches/trunk-larour-NatClimateChange2016/m4/issm_options.m4
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/m4/issm_options.m4	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/m4/issm_options.m4	(revision 21239)
@@ -0,0 +1,2059 @@
+dnl ISSM Options
+
+AC_DEFUN([ISSM_OPTIONS],[
+
+	AC_MSG_NOTICE(============================================================================)
+	AC_MSG_NOTICE(=                      Checking ISSM specific options                      =)
+	AC_MSG_NOTICE(============================================================================)
+
+	dnl ISSM's internal options
+	dnl Build info{{{
+	
+	dnl build date
+	AC_PATH_PROGS(DATE, date)
+	AC_MSG_CHECKING(for build date)
+	if test "$DATE" ; then
+		PACKAGE_DATE=`date`
+	else
+		PACKAGE_DATE="unknown"
+	fi
+	AC_DEFINE_UNQUOTED(PACKAGE_BUILD_DATE,"$PACKAGE_DATE", Build date)
+	AC_MSG_RESULT($PACKAGE_DATE)
+
+	dnl user name
+	AC_MSG_CHECKING([user name])
+	if test -n "$USER"
+	then
+		user_name="$USER"
+	else
+		if test -n "$LOGNAME"
+		then
+			user_name="$LOGNAME"
+		else
+		   user_name=`(whoami) 2>/dev/null` || user_name=unknown
+		fi
+	fi
+	AC_DEFINE_UNQUOTED(USER_NAME, "$user_name", Build user name)
+	AC_MSG_RESULT($user_name)
+
+	AC_MSG_CHECKING([host full OS name and version])
+	dnl normalize some host OS names
+	case ${host_os} in
+	  dnl linux is linux is linux, regardless of RMS.
+	  linux-gnu* | lignux* )	host_os=linux ;;
+	esac
+	AC_DEFINE_UNQUOTED(HOST_OS, "$host_os", Host full OS name and version)
+	AC_MSG_RESULT($host_os)
+
+  AC_MSG_CHECKING([host cpu])
+  AC_DEFINE_UNQUOTED(HOST_CPU, "$host_cpu",Host cpu)
+  AC_MSG_RESULT($host_cpu)
+
+  AC_MSG_CHECKING([vendor])
+  AC_DEFINE_UNQUOTED(HOST_VENDOR, "$host_vendor",Host vendor)
+  AC_MSG_RESULT($host_vendor)
+
+  AC_MSG_CHECKING([host OS name])
+  host_os_name=`echo $host_os | sed 's/\..*//g'`
+  dnl normalize some OS names
+  case ${host_os_name} in
+	dnl linux is linux is linux, regardless of RMS.
+	linux-gnu* | lignux* )	host_os_name=linux ;;
+  esac
+  AC_DEFINE_UNQUOTED(HOST_OS_NAME, "$host_os_name", Host OS name)
+  AC_MSG_RESULT($host_os_name)
+
+	dnl parse out the OS version of the host
+  AC_MSG_CHECKING([host OS version])
+  host_os_version=`echo $host_os | sed 's/^[[^0-9]]*//g'`
+  if test -z "$host_os_version"
+  then
+	host_os_version=`(uname -r) 2>/dev/null` || host_os_version=unknown
+  fi
+  AC_DEFINE_UNQUOTED(HOST_OS_VERSION, "$host_os_version", Host OS version)
+  AC_MSG_RESULT($host_os_version)
+
+
+	dnl figure out host architecture (different than CPU)
+  AC_MSG_CHECKING([host OS architecture])
+  host_arch=`(uname -m) 2>/dev/null` || host_arch=unknown
+  dnl normalize some names
+  case ${host_arch} in
+	sun4* )	host_arch=sun4 ;;
+	sun3x )	host_arch=sun3 ;;
+	sun )	host_arch=`(arch) 2>/dev/null` || host_arch=unknown ;;
+	i?86 )	host_arch=i386 ;; # all x86 should show up as i386
+  esac
+  AC_DEFINE_UNQUOTED(HOST_ARCH, "$host_arch",Host Archictecture)
+  AC_MSG_RESULT($host_arch)
+
+	dnl }}}
+	dnl Debugging {{{
+	AC_ARG_ENABLE([debugging],                                        dnl feature
+		AS_HELP_STRING([--enable-debugging],[turn debug support on]),  dnl help string
+		[enable_debugging=$enableval],                                 dnl action if given
+		[enable_debugging=no])                                         dnl action if not given
+
+	AC_MSG_CHECKING(for debugging support)
+	if test "x$enable_debugging" = xyes; then
+		AC_DEFINE([_ISSM_DEBUG_],[1],[Macro to enable debugging in ISSM])
+	fi
+	AC_MSG_RESULT($enable_debugging)
+	dnl }}}
+	dnl Development{{{
+	AC_ARG_ENABLE([development],                                      dnl feature
+		AS_HELP_STRING([--enable-development],[turn development on]),  dnl help string
+		[enable_development=$enableval],                                 dnl action if given
+		[enable_development=no])                                      dnl action if not given
+
+	AC_MSG_CHECKING(for development support)
+	if test "x$enable_development" = xyes; then
+		AC_DEFINE([_DEVELOPMENT_],[1],[Macro to enable development version in ISSM])
+	fi
+	AM_CONDITIONAL([DEVELOPMENT], [test x$enable_development = xyes])
+	AC_MSG_RESULT($enable_development)
+	 dnl }}}
+    dnl Standalone Options {{{
+    AC_ARG_ENABLE([standalone-modules],                                                      dnl feature
+        AS_HELP_STRING([--enable-standalone-modules], [produce standalone modules]),         dnl help string
+        [enable_standalone_modules=$enableval],                                              dnl action if given
+        [enable_standalone_modules=no])                                                      dnl action if not given
+	AC_MSG_CHECKING(for standalone modules build)
+    AM_CONDITIONAL([STANDALONE_MODULES], [test x$enable_standalone_modules = xyes])
+	AC_MSG_RESULT($enable_standalone_modules)
+
+    AC_ARG_ENABLE([standalone-executables],                                                  dnl feature
+        AS_HELP_STRING([--enable-standalone-executables], [produce standalone executables]), dnl help string
+        [enable_standalone_executables=$enableval],                                          dnl action if given
+        [enable_standalone_executables=no])                                                  dnl action if not given
+	AC_MSG_CHECKING(for standalone executables build)
+    AM_CONDITIONAL([STANDALONE_EXECUTABLES], [test x$enable_standalone_executables = xyes])
+	AC_MSG_RESULT($enable_standalone_executables)
+
+    AC_ARG_ENABLE([standalone-libraries],                                                    dnl feature
+        AS_HELP_STRING([--enable-standalone-libraries], [produce standalone libraries]),     dnl help string
+        [enable_standalone_libraries=$enableval],                                            dnl action if given
+        [enable_standalone_libraries=no])                                                    dnl action if not given
+	AC_MSG_CHECKING(for standalone libraries build)
+    AM_CONDITIONAL([STANDALONE_LIBRARIES], [test x$enable_standalone_libraries = xyes])
+	AC_MSG_RESULT($enable_standalone_libraries)
+    dnl }}}
+    dnl Version{{{
+    AC_ARG_ENABLE([version],                                   dnl feature
+    AS_HELP_STRING([--enable-version],[produce libISSM.so.0]), dnl help string
+    [enable_version=$enableval],                               dnl action if given
+    [enable_version=no])                                       dnl action if not given
+    AM_CONDITIONAL([VERSION], [test x$enable_VERSION = xyes])
+    dnl }}}
+	dnl Wrappers build {{{
+	AC_ARG_WITH([wrappers],                                           dnl feature
+	AS_HELP_STRING([--with-wrappers = value],[wrappers compilation]), dnl help string
+	[WRAPPERS_VALUE=$withval],                                        dnl action if given
+	[WRAPPERS_VALUE="yes"])                                           dnl action if not given
+	AC_MSG_CHECKING(for wrappers compilation)
+	AM_CONDITIONAL([WRAPPERS], [test x$WRAPPERS_VALUE = xyes])
+	AC_MSG_RESULT($WRAPPERS_VALUE) 
+	dnl }}}
+	dnl Extensions{{{
+	ISSMEXT=".exe"
+	AC_SUBST([ISSMEXT])
+	dnl }}}
+
+	dnl ISSM's externalpackages
+	dnl vendor{{{
+	AC_ARG_WITH([vendor],                                              dnl feature
+	AS_HELP_STRING([--with-vendor = VENDOR],[vendor name, ex: intel]), dnl help string
+	[VENDOR=$withval],                                                 dnl action if given
+	[VENDOR=""])                                                       dnl action if not given
+	AC_MSG_CHECKING(for vendor compilers)
+	if test -n "$VENDOR"; then
+		if  test $VENDOR = intel-win32; then
+			export CC=icl
+			export CXX=icl
+			export CFLAGS="-DWIN32 -D_INTEL_WIN_"
+			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_"
+			IS_WINDOWS=yes
+		elif  test $VENDOR = intel-win7-32; then
+			export CC=cl
+			export CXX=cl
+			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export CFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export AR="ar-lib lib"
+			export OS_LDFLAG="-Wl,"
+			export RANLIB=true
+			IS_WINDOWS=yes
+			OSLIBS="-Wl,kernel32.lib -Wl,user32.lib -Wl,gdi32.lib -Wl,winspool.lib -Wl,comdlg32.lib -Wl,advapi32.lib -Wl,shell32.lib -Wl,ole32.lib -Wl,oleaut32.lib -Wl,uuid.lib -Wl,odbc32.lib -Wl,odbccp32.lib"
+		elif  test $VENDOR = intel-win7-64; then
+			export CC=cl
+			export CXX=cl
+			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export CFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export AR="ar-lib lib"
+			export OS_LDFLAG="-Wl,"
+			export RANLIB=true
+			IS_WINDOWS=yes
+			OSLIBS="-Wl,kernel32.lib -Wl,user32.lib -Wl,gdi32.lib -Wl,winspool.lib -Wl,comdlg32.lib -Wl,advapi32.lib -Wl,shell32.lib -Wl,ole32.lib -Wl,oleaut32.lib -Wl,uuid.lib -Wl,odbc32.lib -Wl,odbccp32.lib"
+		elif  test $VENDOR = MSVC-Win64; then
+			export CC=cl
+			export CXX=cl
+			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_ -D_HAVE_PETSC_MPI_ -EHsc"
+			export CFLAGS="-DWIN32 -D_INTEL_WIN_ -D_HAVE_PETSC_MPI_ -EHsc"
+			export AR="ar-lib lib"
+			export OS_LDFLAG="-Wl,"
+			export RANLIB=true
+			IS_WINDOWS=yes
+			OSLIBS="-Wl,kernel32.lib -Wl,user32.lib -Wl,gdi32.lib -Wl,winspool.lib -Wl,comdlg32.lib -Wl,advapi32.lib -Wl,shell32.lib -Wl,ole32.lib -Wl,oleaut32.lib -Wl,uuid.lib -Wl,odbc32.lib -Wl,odbccp32.lib"
+		elif  test $VENDOR = MSVC-Win64-par; then
+			export CC=cl
+			export CXX=cl
+			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export CFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export AR="ar-lib lib"
+			export OS_LDFLAG="-Wl,"
+			export RANLIB=true
+			IS_WINDOWS=yes
+			OSLIBS="-Wl,kernel32.lib -Wl,user32.lib -Wl,gdi32.lib -Wl,winspool.lib -Wl,comdlg32.lib -Wl,advapi32.lib -Wl,shell32.lib -Wl,ole32.lib -Wl,oleaut32.lib -Wl,uuid.lib -Wl,odbc32.lib -Wl,odbccp32.lib"
+		elif test $VENDOR = intel-linux; then
+			export CC=icc
+			export CXX=icpc
+			export CFLAGS=" -D_INTEL_LINUX_"
+			export CXXFLAGS=" -D_INTEL_LINUX_"
+		elif test $VENDOR = intel-gp; then
+			export CC=icc
+			export CXX=icpc
+			export CFLAGS=" -D_INTEL_LINUX_"
+			export CXXFLAGS=" -D_INTEL_LINUX_"
+		elif test $VENDOR = intel-lonestar; then
+			export CC=icc
+			export CXX=icpc
+		elif test $VENDOR = intel-discover; then
+			export CC=icc
+			export CXX=icpc
+			export CXXFLAGS=" -O3 -D_INTEL_LINUX_ -DMPICH_IGNORE_CXX_SEEK"
+			export CFLAGS=" -O3 -D_INTEL_LINUX_ -DMPICH_IGNORE_CXX_SEEK"
+		elif test $VENDOR = intel-pleiades; then
+			export CC=icc
+			export CXX=icpc
+			export CXXFLAGS=" -O3 -D_INTEL_LINUX_ "
+			export CFLAGS=" -O3 -D_INTEL_LINUX_ "
+		elif test $VENDOR = intel-acenet; then
+			export CC=icc
+			export CXX=icpc
+			export CXXFLAGS=" -D_INTEL_LINUX_ "
+			export CFLAGS=" -D_INTEL_LINUX_ "
+		elif test $VENDOR = intel-pleiades-gcc; then
+			export CC=gcc
+			export CXX=g++
+			export CXXFLAGS="-O3 -march=corei7-avx"
+			export CFLAGS="-O3 -march=corei7-avx"
+        else
+		AC_MSG_ERROR([unknown compiler vendor!])
+		fi
+	fi
+	AC_SUBST([OSLIBS]) 
+	AC_MSG_RESULT(done)
+	dnl }}}
+	dnl matlab{{{
+
+	dnl 1. See if matlab has been provided
+	AC_ARG_WITH([matlab-dir],                                         dnl feature
+	AS_HELP_STRING([--with-matlab-dir=DIR],[matlab root directory.]), dnl help string
+	[MATLAB_ROOT=$withval],                                           dnl action if given
+	[MATLAB_ROOT="no"])                                               dnl action if not given
+
+	AC_MSG_CHECKING([whether matlab is enabled])
+	if test "x$MATLAB_ROOT" = "xno" ; then
+		 HAVE_MATLAB=no
+	else
+		HAVE_MATLAB=yes
+		if ! test -d "$MATLAB_ROOT"; then
+		  AC_MSG_ERROR([matlab directory provided ($MATLAB_ROOT) does not exist]);
+		fi
+		if ! test -f "$MATLAB_ROOT/extern/include/mex.h"; then
+			AC_MSG_ERROR([Couldn't find mex.h... check your installation of matlab])
+	   fi
+	fi
+	AC_MSG_RESULT($HAVE_MATLAB)
+	AM_CONDITIONAL([MATLAB], [test x$HAVE_MATLAB = xyes])
+
+	dnl 2. Get Matlab libraries
+	if test "x$HAVE_MATLAB" = "xyes"; then
+
+		AC_DEFINE([_HAVE_MATLAB_],[1],[with matlab in ISSM src])
+		
+		dnl 4. get MEXLIB MEXLINK and MEXEXT (experimental) except for windows
+		AC_MSG_CHECKING([matlab's mex compilation flags])
+  		case "${host_os}" in
+  			*cygwin*) 
+  				if  test $VENDOR = intel-win7-32; then
+  					MEXLIB="-Wl,libmx.lib -Wl,libmex.lib -Wl,libmat.lib ${OSLIBS} -Wl,libf2cblas.lib -Wl,libf2clapack.lib" 
+               MEXLINK="-Wl,/LIBPATH:`cygpath -m ${MATLAB_ROOT}/extern/lib/win32/microsoft` -Wl,/link -Wl,/EXPORT:mexFunction -Wl,/DLL"
+					MEXEXT=`$MATLAB_ROOT/bin/mexext.bat`
+					MEXEXT=".$MEXEXT"
+  				elif test $VENDOR = intel-win7-64; then
+  					MEXLIB="-Wl,libmx.lib -Wl,libmex.lib -Wl,libmat.lib ${OSLIBS} -Wl,libf2cblas.lib -Wl,libf2clapack.lib" 
+               MEXLINK="-Wl,/LIBPATH:`cygpath -m ${MATLAB_ROOT}/extern/lib/win64/microsoft` -Wl,/link -Wl,/EXPORT:mexFunction -Wl,/DLL" 
+					MEXEXT=".mexw64"
+  				elif test $VENDOR = MSVC-Win64 || test $VENDOR = MSVC-Win64-par; then
+  					MEXLIB="-Wl,libmx.lib -Wl,libmex.lib -Wl,libmat.lib ${OSLIBS} -Wl,libf2cblas.lib -Wl,libf2clapack.lib" 
+               MEXLINK="-Wl,/link -Wl,/LIBPATH:`cygpath -m ${MATLAB_ROOT}/extern/lib/win64/microsoft` -Wl,/link -Wl,/EXPORT:mexFunction -Wl,/DLL" 
+  					MATLABINCL="-I`cygpath -m $MATLAB_ROOT/extern/include/`"
+					MEXEXT=".mexw64"
+  				fi
+  			;;
+		   *)
+           MATLABINCL="-I$MATLAB_ROOT/extern/include/"
+           MEXLINK=$($MATLAB_ROOT/bin/mex -v 2>&1 < /dev/null | grep LDFLAGS     | sed -e "s/         LDFLAGS            = //g")
+			  MEXLIB=$( $MATLAB_ROOT/bin/mex -v 2>&1 < /dev/null | grep CXXLIBS     | sed -e "s/         CXXLIBS            = //g")
+		     MEXEXT=$( $MATLAB_ROOT/bin/mex -v 2>&1 < /dev/null | grep LDEXTENSION | sed -e "s/         LDEXTENSION        = //g")
+				dnl version 2014 and up
+				if test "x$MEXEXT" = "x" ; then
+					 echo "#include <mex.h>" > conftest.cpp
+					 echo "void mexFunction(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]){}" >> conftest.cpp
+					 $MATLAB_ROOT/bin/mex -v -lmex conftest.cpp > conftest.tmp 2>&1 
+					 rm -f conftest.cpp
+					 MEXLINK=$(cat conftest.tmp | grep LDFLAGS  | sed -e "s/LDFLAGS ://g")
+					 MEXLIB=$( cat conftest.tmp | grep LINKLIBS | sed -e "s/LINKLIBS ://g")
+					 MEXEXT=$( cat conftest.tmp | grep LDEXT    | sed -e "s/LDEXT ://g" | awk '{print $[1]}')
+					 rm -f conftest.tmp
+				fi
+
+				dnl Make sure mexFunction.map is not in MEXLIB to avoid problems with global variables
+				dnl MEXLINK=$(echo $MEXLINK | sed -e "s/,-expo.*mexFunction\\.map\"//g" | sed -e "s/-[[^ ]]*mexFunction\\.map//g")
+				MEXLINK="" dnl We actually don't need MEXLINK????
+
+  			;;
+      esac
+		AC_MSG_RESULT(done)
+	   if test "x$MEXEXT" = "x" ; then
+			AC_MSG_ERROR([Couldn't find mex... check your installation of matlab])
+	   fi
+
+		AC_MSG_CHECKING([whether matlab is enabled])
+
+		AC_SUBST([MATLABINCL])
+		MATLABWRAPPEREXT=$MEXEXT
+		AC_SUBST([MATLABWRAPPEREXT])
+	   AC_SUBST([MEXLIB]) 
+		AC_SUBST([MEXLINK])
+	fi
+	dnl }}}
+	dnl windows {{{
+	AC_MSG_CHECKING([Checking if this is a Win build... ])
+	AM_CONDITIONAL([WINDOWS], [test x$IS_WINDOWS = xyes])
+	AC_MSG_RESULT(done)
+	dnl }}}
+	dnl javascript{{{
+	AC_ARG_WITH([javascript],
+	  AS_HELP_STRING([--with-javascript], [compile javascript wrappers? default is no.]),
+	  [JAVASCRIPT=$withval],[JAVASCRIPT="no"]) 
+
+	dnl Check whether javascript wrappers are desired
+	AC_MSG_CHECKING([for javascript])
+	if test "x$JAVASCRIPT" = "xno" ; then
+		HAVE_JAVASCRIPT=no
+	else
+		HAVE_JAVASCRIPT=yes
+		AC_DEFINE([_HAVE_JAVASCRIPT_],[1],[with javascript])
+	fi
+	AC_MSG_RESULT($HAVE_JAVASCRIPT)
+	AM_CONDITIONAL([JAVASCRIPT],[test x$HAVE_JAVASCRIPT = xyes])
+	JAVASCRIPTWRAPPEREXT=.js
+	AC_SUBST([JAVASCRIPTWRAPPEREXT])
+
+	dnl }}}
+	dnl triangle {{{
+	AC_ARG_WITH([triangle-dir],
+			  AS_HELP_STRING([--with-triangle-dir=DIR], [triangle root directory.]),
+			 [TRIANGLE_ROOT=$withval],[TRIANGLE_ROOT="no"]) 
+
+  dnl Check whether triangle is enabled
+	AC_MSG_CHECKING([for triangle])
+	if test "x$TRIANGLE_ROOT" = "xno" ; then
+		HAVE_TRIANGLE=no
+	else
+		HAVE_TRIANGLE=yes
+		if ! test -d "$TRIANGLE_ROOT"; then
+			AC_MSG_ERROR([triangle directory provided ($TRIANGLE_ROOT) does not exist]);
+		fi
+		if ! test -f "$TRIANGLE_ROOT/triangle.h" ; then
+			AC_MSG_ERROR([Couldn't find triangle.h... check your installation of triangle])
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_TRIANGLE)
+	AM_CONDITIONAL([TRIANGLE],[test x$HAVE_TRIANGLE = xyes])
+
+	dnl library and header files
+	if test "x$HAVE_TRIANGLE" = "xyes"; then
+		TRIANGLEINCL=-I$TRIANGLE_ROOT/
+		case "${host_os}" in
+				*cygwin*)
+				TRIANGLEINCL="/I`cygpath -m $TRIANGLE_ROOT/`"
+				TRIANGLELIB="-Wl,`cygpath -m $TRIANGLE_ROOT/`triangle.lib"
+				;;
+				*linux*)
+				TRIANGLELIB=$TRIANGLE_ROOT/triangle.a
+				if test "x$HAVE_JAVASCRIPT" = "xyes"; then
+					dnl go to the bit code, not the library.
+					TRIANGLELIB=$TRIANGLE_ROOT/triangle.o 
+				else
+					TRIANGLELIB=$TRIANGLE_ROOT/triangle.a
+				fi
+				;;
+				*darwin*)
+				if test "x$HAVE_JAVASCRIPT" = "xyes"; then
+					dnl go to the bit code, not the library.
+					TRIANGLELIB=$TRIANGLE_ROOT/triangle.o 
+				else
+					TRIANGLELIB=$TRIANGLE_ROOT/triangle.a
+				fi
+				;;
+			esac
+		AC_DEFINE([_HAVE_TRIANGLE_],[1],[with Triangle in ISSM src])
+		AC_SUBST([TRIANGLEINCL])
+		AC_SUBST([TRIANGLELIB])
+	fi
+	dnl }}}
+	dnl boost{{{
+	AC_ARG_WITH([boost-dir],
+	  AS_HELP_STRING([--with-boost-dir=DIR], [boost root directory.]),
+	  [BOOST_ROOT=$withval],[BOOST_ROOT="no"]) 
+
+	dnl Check whether boost is enabled
+	AC_MSG_CHECKING([for boost])
+	if test "x$BOOST_ROOT" = "xno" ; then
+		HAVE_BOOST=no
+	else
+		HAVE_BOOST=yes
+		if ! test -d "$BOOST_ROOT"; then
+			AC_MSG_ERROR([boost directory provided ($BOOST_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_BOOST)
+	AM_CONDITIONAL([BOOST],[test x$HAVE_BOOST = xyes])
+
+	dnl library and header files
+	if test "x$HAVE_BOOST" = "xyes"; then
+		BOOSTINCL=-I$BOOST_ROOT/include
+		BOOSTLIB="-L$BOOST_ROOT/lib -lboost_python"
+		AC_DEFINE([_HAVE_BOOST_],[1],[with Boost in ISSM src])
+		AC_SUBST([BOOSTINCL])
+		AC_SUBST([BOOSTLIB])
+	fi
+	dnl }}}
+	dnl dakota{{{
+	AC_ARG_WITH([dakota-dir],
+	  AS_HELP_STRING([--with-dakota-dir=DIR], [dakota root directory.]),
+	  [DAKOTA_ROOT=$withval],[DAKOTA_ROOT="no"]) 
+	
+	dnl Check whether dakota is enabled
+	AC_MSG_CHECKING([for dakota])
+	if test "x$DAKOTA_ROOT" = "xno" ; then
+		HAVE_DAKOTA=no
+	else
+		HAVE_DAKOTA=yes
+		if ! test -d "$DAKOTA_ROOT"; then
+			AC_MSG_ERROR([dakota directory provided ($DAKOTA_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_DAKOTA)
+	AM_CONDITIONAL([DAKOTA],[test x$HAVE_DAKOTA = xyes])
+
+	dnl library and header files
+	if test "x$HAVE_DAKOTA" = "xyes"; then
+		DAKOTAINCL=-I$DAKOTA_ROOT/include
+
+		AC_MSG_CHECKING(for dakota version)
+		if test -f "$DAKOTA_ROOT/VERSION"; then
+		 DAKOTA_VERSION=`cat $DAKOTA_ROOT/VERSION | grep 'DAKOTA Version' | sed 's/.*DAKOTA Version //' | sed 's/ .*//' `
+		else if test -f "$DAKOTA_ROOT/../src/src/CommandLineHandler.C"; then
+		 DAKOTA_VERSION=`cat $DAKOTA_ROOT/../src/src/CommandLineHandler.C | grep 'DAKOTA version' | grep 'release' | grep -v // | sed 's/.*DAKOTA version //' | sed 's/ .*//' `
+		else if test -f "$DAKOTA_ROOT/../src/src/CommandLineHandler.cpp"; then
+		 DAKOTA_VERSION=`cat $DAKOTA_ROOT/../src/src/CommandLineHandler.cpp | grep 'DAKOTA version' | grep 'release' | grep -v // | sed 's/.*DAKOTA version //' | sed 's/ .*//' `
+		else
+		 AC_MSG_ERROR([Dakota CommandLineHandler.C or CommandLineHandler.cpp file not found to determine DAKOTA_VERSION!]);
+		fi
+		fi
+		fi
+		AC_MSG_RESULT($DAKOTA_VERSION)
+		AC_DEFINE_UNQUOTED([_DAKOTA_VERSION_],"$DAKOTA_VERSION",[Dakota version number])
+
+		DAKOTAFLAGS=""
+		case "${host_os}" in
+			*cygwin*)
+				if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -L$BOOST_ROOT/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem"
+				else if test x$DAKOTA_VERSION = x6.1 || test x$DAKOTA_VERSION = x6.2; then
+				   DAKOTAFLAGS="-DDISABLE_DAKOTA_CONFIG_H -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION -DDAKOTA_PLUGIN -DBOOST_DISABLE_ASSERTS -DDAKOTA_HAVE_BOOST_FS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DDAKOTA_COLINY -DDAKOTA_UTILIB -DHAVE_ADAPTIVE_SAMPLING -DHAVE_CONMIN -DDAKOTA_DDACE -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_JEGA -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -L$BOOST_ROOT/lib -ldakota_src -ldream -lfsudace -lddace -lnomad -lpecos_src -lscolib -ljega_fe -llhs -lpebbl -lcolin -linterfaces -llhs_mods -lmoga -loptpp -lsoga -lsurfpack -lutilib -lconmin -ldakota_src_fortran -llhs_mod -lncsuopt -lsurfpack_fortran -lteuchos -l3po -lamplsolver -lcport -ldfftpack -leutils -lfsudace -lhopspack -ljega -lnidr -lpecos -lpsuade -ltinyxml -lutilities -lsparsegrid -lboost_serialization -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
+					AC_DEFINE([DISABLE_DAKOTA_CONFIG_H],[1],[disabling DAKOTA_CONFIG_H])
+					AC_DEFINE([DAKOTA_HAVE_MPI],[1],[enabling parallel MPI])
+				else
+					AC_MSG_ERROR([Dakota version not found or version ($DAKOTA_VERSION) not supported!]);
+				fi
+				fi
+			;;
+			*linux*)
+				if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem -lboost_system -ldl"
+				else if test x$DAKOTA_VERSION = x5.3 || test x$DAKOTA_VERSION = x5.3.1; then
+					DAKOTAFLAGS="-DDISABLE_DAKOTA_CONFIG_H -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION -DDAKOTA_PLUGIN -DBOOST_DISABLE_ASSERTS -DDAKOTA_HAVE_BOOST_FS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DDAKOTA_COLINY -DDAKOTA_UTILIB -DHAVE_ADAPTIVE_SAMPLING -DHAVE_CONMIN -DDAKOTA_DDACE -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_JEGA -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -L$BOOST_ROOT/lib -ldakota_src -lpecos_src -lscolib -ljega_fe -llhs -lpebbl -lcolin -linterfaces -lmods -lmoga -loptpp -lsampling -lsoga -lsurfpack -lutilib -lconmin -ldakota_src_fortran -lmod -lncsuopt -lsurfpack_fortran -lteuchos -l3po -lamplsolver -lanalyzer -lbose -lcport -ldace -ldfftpack -leutils -lfsudace -lhopspack -ljega -lnidr -lpecos -lpsuade -lrandom -ltinyxml -lutilities -lsparsegrid -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
+					AC_DEFINE([DISABLE_DAKOTA_CONFIG_H],[1],[disabling DAKOTA_CONFIG_H])
+					AC_DEFINE([DAKOTA_HAVE_MPI],[1],[enabling parallel MPI])
+				else if test x$DAKOTA_VERSION = x6.1 || test x$DAKOTA_VERSION = x6.2; then
+				   DAKOTAFLAGS="-DDISABLE_DAKOTA_CONFIG_H -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION -DDAKOTA_PLUGIN -DBOOST_DISABLE_ASSERTS -DDAKOTA_HAVE_BOOST_FS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DDAKOTA_UTILIB -DHAVE_ADAPTIVE_SAMPLING -DHAVE_CONMIN -DDAKOTA_DDACE -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -L$BOOST_ROOT/lib -ldakota_src -ldream -lfsudace -lddace -lnomad -lpecos_src -llhs -llhs_mods -loptpp -lsurfpack -lconmin -ldakota_src_fortran -llhs_mod -lncsuopt -lsurfpack_fortran -lteuchos -lamplsolver -lcport -ldfftpack -lfsudace -lhopspack -lnidr -lpecos -lpsuade -lsparsegrid -lboost_serialization -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
+					AC_DEFINE([DISABLE_DAKOTA_CONFIG_H],[1],[disabling DAKOTA_CONFIG_H])
+					AC_DEFINE([DAKOTA_HAVE_MPI],[1],[enabling parallel MPI])
+				else
+					AC_MSG_ERROR([Dakota version not found or version ($DAKOTA_VERSION) not supported!]);
+				fi
+				fi
+				fi
+			;;
+			*darwin*)
+				if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
+					dnl DAKOTALIB+= "-lgslcblas -L/usr/lib -lblas -llapack"
+				else if test x$DAKOTA_VERSION = x5.3 || test x$DAKOTA_VERSION = x5.3.1; then
+					DAKOTAFLAGS="-DDISABLE_DAKOTA_CONFIG_H -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION -DDAKOTA_PLUGIN -DBOOST_DISABLE_ASSERTS -DDAKOTA_HAVE_BOOST_FS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DDAKOTA_COLINY -DDAKOTA_UTILIB -DHAVE_ADAPTIVE_SAMPLING -DHAVE_CONMIN -DDAKOTA_DDACE -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_JEGA -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -L$BOOST_ROOT/lib -ldakota_src -lpecos_src -lscolib -ljega_fe -llhs -lpebbl -lcolin -linterfaces -lmods -lmoga -loptpp -lsampling -lsoga -lsurfpack -lutilib -lconmin -ldakota_src_fortran -lmod -lncsuopt -lsurfpack_fortran -lteuchos -l3po -lamplsolver -lanalyzer -lbose -lcport -ldace -ldfftpack -leutils -lfsudace -lhopspack -ljega -lnidr -lpecos -lpsuade -lrandom -ltinyxml -lutilities -lsparsegrid -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
+					AC_DEFINE([DISABLE_DAKOTA_CONFIG_H],[1],[disabling DAKOTA_CONFIG_H])
+					AC_DEFINE([DAKOTA_HAVE_MPI],[1],[enabling parallel MPI])
+				else if test x$DAKOTA_VERSION = x6.1 || test x$DAKOTA_VERSION = x6.2; then
+				   DAKOTAFLAGS="-DDISABLE_DAKOTA_CONFIG_H -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION -DDAKOTA_PLUGIN -DBOOST_DISABLE_ASSERTS -DDAKOTA_HAVE_BOOST_FS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DDAKOTA_UTILIB -DHAVE_ADAPTIVE_SAMPLING -DHAVE_CONMIN -DDAKOTA_DDACE -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -L$BOOST_ROOT/lib -ldakota_src -ldream -lfsudace -lddace -lnomad -lpecos_src -llhs -llhs_mods -loptpp -lsurfpack -lconmin -ldakota_src_fortran -llhs_mod -lncsuopt -lsurfpack_fortran -lteuchos -lamplsolver -lcport -ldfftpack -lfsudace -lhopspack -lnidr -lpecos -lpsuade -lsparsegrid -lboost_serialization -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
+					AC_DEFINE([DISABLE_DAKOTA_CONFIG_H],[1],[disabling DAKOTA_CONFIG_H])
+					AC_DEFINE([DAKOTA_HAVE_MPI],[1],[enabling parallel MPI])
+				else
+					AC_MSG_ERROR([Dakota version not found or version ($DAKOTA_VERSION) not supported!]);
+				fi
+				fi
+				fi
+			;;
+		esac
+
+		case $DAKOTA_VERSION in
+			@<:@1-9@:>@.@<:@0-9@:>@.@<:@0-9@:>@)
+				DAKOTA_MAJOR=`echo $DAKOTA_VERSION | sed -e 's/^\(@<:@0-9@:>@*\)\..*/\1/'`
+				DAKOTA_MINOR=`echo $DAKOTA_VERSION | sed -e 's/^@<:@0-9@:>@*\.\(@<:@0-9@:>@*\)\..*/\1/'`
+				DAKOTA_BUILD=`echo $DAKOTA_VERSION | sed -e 's/^@<:@0-9@:>@*\.@<:@0-9@:>@*\.\(@<:@0-9@:>@*\).*/\1/'`
+			;;
+			@<:@1-9@:>@.@<:@0-9@:>@)
+				DAKOTA_MAJOR=`echo $DAKOTA_VERSION | sed -e 's/^\(@<:@0-9@:>@*\)\..*/\1/'`
+				DAKOTA_MINOR=`echo $DAKOTA_VERSION | sed -e 's/^@<:@0-9@:>@*\.\(@<:@0-9@:>@*\).*/\1/'`
+				DAKOTA_BUILD=0
+			;;
+			@<:@1-9@:>@.@<:@0-9@:>@+)
+				DAKOTA_MAJOR=`echo $DAKOTA_VERSION | sed -e 's/^\(@<:@0-9@:>@*\)\..*/\1/'`
+				DAKOTA_MINOR=`echo $DAKOTA_VERSION | sed -e 's/^@<:@0-9@:>@*\.\(@<:@0-9@:>@*\).*/\1/'`
+				DAKOTA_BUILD=0
+			;;
+			*)
+				AC_MSG_ERROR([Dakota version ($DAKOTA_VERSION) not supported!]);
+		   ;;
+		esac
+		AC_MSG_CHECKING(for dakota major version)
+		AC_MSG_RESULT($DAKOTA_MAJOR)
+		AC_DEFINE_UNQUOTED([_DAKOTA_MAJOR_],$DAKOTA_MAJOR,[Dakota major version number])
+		AC_MSG_CHECKING(for dakota minor version)
+		AC_MSG_RESULT($DAKOTA_MINOR)
+		AC_DEFINE_UNQUOTED([_DAKOTA_MINOR_],$DAKOTA_MINOR,[Dakota minor version number])
+		AC_MSG_CHECKING(for dakota build version)
+		AC_MSG_RESULT($DAKOTA_BUILD)
+		AC_DEFINE_UNQUOTED([_DAKOTA_BUILD_],$DAKOTA_BUILD,[Dakota build version number])
+
+		AC_DEFINE([_HAVE_DAKOTA_],[1],[with Dakota in ISSM src])
+		AC_SUBST([DAKOTAINCL])
+		AC_SUBST([DAKOTAFLAGS])
+		AC_SUBST([DAKOTALIB])
+	fi
+	AM_CONDITIONAL([ISSM_DAKOTA],[test x$DAKOTA_MAJOR = x6])
+	dnl }}}
+	dnl python{{{
+	AC_ARG_WITH([python-dir],
+	  AS_HELP_STRING([--with-python-dir=DIR], [python root directory.]),
+	  [PYTHON_ROOT=$withval],[PYTHON_ROOT="no"]) 
+
+	dnl Check whether python is enabled
+	AC_MSG_CHECKING([for python])
+	if test "x$PYTHON_ROOT" = "xno" ; then
+		HAVE_PYTHON=no
+		HAVE_PYTHON3=no
+	else
+		HAVE_PYTHON=yes
+		if ! test -d "$PYTHON_ROOT"; then
+			AC_MSG_ERROR([python directory provided ($PYTHON_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_PYTHON)
+	AM_CONDITIONAL([PYTHON],[test x$HAVE_PYTHON = xyes])
+
+	dnl python specifics
+	if test "x$HAVE_PYTHON" = "xyes"; then
+		AC_MSG_CHECKING([for python version])
+		dnl Query Python for its version number.  Getting [:3] seems to be the
+		dnl best way to do this; it's what "site.py" does in the standard library.
+		PYTHON_VERSION=$($PYTHON_ROOT/bin/python -c "import sys; print sys.version[[:3]]")
+		AC_MSG_RESULT($PYTHON_VERSION)
+
+		dnl recover major 
+		PYTHON_MAJOR=${PYTHON_VERSION%.*}
+		AC_DEFINE_UNQUOTED([_PYTHON_MAJOR_],$PYTHON_MAJOR,[python version major])
+		if test "x$PYTHON_MAJOR" = "x3"; then
+			HAVE_PYTHON3="yes"
+		else
+			HAVE_PYTHON3="no"
+		fi
+
+		AC_MSG_CHECKING([for python header file Python.h])
+		dnl Python.h mighty be in different locations:
+		if test -f "$PYTHON_ROOT/include/Python.h"; then
+			PYTHONINCL=-I$PYTHON_ROOT/include
+		else if test -f "$PYTHON_ROOT/include/python$PYTHON_VERSION/Python.h"; then
+			PYTHONINCL=-I$PYTHON_ROOT/include/python$PYTHON_VERSION
+		else
+			AC_MSG_ERROR([Python.h not found, locate this file and contact ISSM developers]);
+		fi
+		fi
+		AC_MSG_RESULT(found)
+
+		PYTHONLIB="-L$PYTHON_ROOT/lib -lpython$PYTHON_VERSION"
+		PYTHONEXT=.so
+		case "${host_os}" in
+			*cygwin*)
+			PYTHONLINK="-shared"
+			;;
+			*linux*)
+			PYTHONLINK="-shared"
+			;;
+			*darwin*)
+			PYTHONLINK="-dynamiclib"
+			;;
+		esac
+		AC_DEFINE([_HAVE_PYTHON_],[1],[with python in ISSM src])
+		AC_SUBST([PYTHONINCL])
+		AC_SUBST([PYTHONLIB])
+		PYTHONWRAPPEREXT=$PYTHONEXT
+		AC_SUBST([PYTHONWRAPPEREXT])
+		AC_SUBST([PYTHONLINK])
+	fi
+	AM_CONDITIONAL([PYTHON3], [test x$HAVE_PYTHON3 = xyes])
+	dnl }}}
+	dnl python-numpy{{{
+	AC_ARG_WITH([python-numpy-dir],
+	  AS_HELP_STRING([--with-python-numpy-dir=DIR], [python-numpy root directory.]),
+	  [PYTHON_NUMPY_ROOT=$withval],[PYTHON_NUMPY_ROOT="no"]) 
+	
+	dnl Check whether numpy is enabled
+	AC_MSG_CHECKING(for python-numpy)
+	if test "x$PYTHON_NUMPY_ROOT" = "xno" ; then
+		HAVE_PYTHON_NUMPY=no
+	else
+		HAVE_PYTHON_NUMPY=yes
+		if ! test -d "$PYTHON_NUMPY_ROOT"; then
+			AC_MSG_ERROR([numpy directory provided ($PYTHON_NUMPY_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_PYTHON_NUMPY)
+
+	dnl numpy lib
+	if test "x$HAVE_PYTHON_NUMPY" = "xyes"; then
+		PYTHON_NUMPYINCL="-I$PYTHON_NUMPY_ROOT -I$PYTHON_NUMPY_ROOT/core/include/numpy"
+		AC_DEFINE([_HAVE_PYTHON_NUMPY_],[1],[with Python-Numpy in ISSM src])
+		AC_SUBST([PYTHON_NUMPYINCL])
+	fi
+	dnl }}}
+	dnl chaco{{{
+	AC_ARG_WITH([chaco-dir],
+	  AS_HELP_STRING([--with-chaco-dir=DIR], [chaco root directory.]),
+	  [CHACO_ROOT=$withval],[CHACO_ROOT="no"]) 
+	
+	dnl Check whether chaco is enabled
+	AC_MSG_CHECKING([for chaco])
+	if test "x$CHACO_ROOT" = "xno" ; then
+		HAVE_CHACO=no
+	else
+		HAVE_CHACO=yes
+		if ! test -d "$CHACO_ROOT"; then
+			AC_MSG_ERROR([chaco directory provided ($CHACO_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_CHACO)
+	AM_CONDITIONAL([CHACO],[test x$HAVE_CHACO = xyes])
+
+	dnl library and header files
+	if test "x$HAVE_CHACO" = "xyes"; then
+		CHACOINCL=-I$CHACO_ROOT/include
+		CHACOLIB="-L$CHACO_ROOT/lib -lchacominusblas"
+		AC_DEFINE([_HAVE_CHACO_],[1],[with Chaco in ISSM src])
+		AC_SUBST([CHACOINCL])
+		AC_SUBST([CHACOLIB])
+	fi
+	dnl }}}
+	dnl scotch{{{
+	AC_ARG_WITH([scotch-dir],
+	  AS_HELP_STRING([--with-scotch-dir=DIR], [scotch root directory.]),
+	  [SCOTCH_ROOT=$withval],[SCOTCH_ROOT="no"]) 
+
+  dnl Check whether scotch is enabled
+	AC_MSG_CHECKING([for scotch])
+	if test "x$SCOTCH_ROOT" = "xno" ; then
+		HAVE_SCOTCH=no
+	else
+		HAVE_SCOTCH=yes
+		if ! test -d "$SCOTCH_ROOT"; then
+			AC_MSG_ERROR([scotch directory provided ($SCOTCH_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_SCOTCH)
+	AM_CONDITIONAL([SCOTCH],[test x$HAVE_SCOTCH = xyes])
+	
+	dnl scotch libraries
+	if test "x$HAVE_SCOTCH" = "xyes"; then
+		SCOTCHINCL="-DNOFILEIO -I$SCOTCH_ROOT/include -DSCOTCH_VERSION=\\\"UNKNOWN\\\""
+		SCOTCHLIB="-L$SCOTCH_ROOT/lib -lnfioscotch -lnfioscotcherr -lnfioscotcherrexit -lscotchmetis"
+		AC_DEFINE([_HAVE_SCOTCH_],[1],[with Scotch in ISSM src])
+		AC_SUBST([SCOTCHINCL])
+		AC_SUBST([SCOTCHLIB])
+	fi
+	dnl }}}
+	dnl esmf{{{
+	AC_ARG_WITH([esmf-dir],
+		AS_HELP_STRING([--with-esmf-dir=DIR], [esmf root directory.]),
+		[ESMF_ROOT=$withval],[ESMF_ROOT="no"]) 
+
+	dnl Check whether esmf is enabled
+	AC_MSG_CHECKING([for esmf])
+	if test "x$ESMF_ROOT" = "xno" ; then
+		HAVE_ESMF=no
+	else
+		HAVE_ESMF=yes
+		if ! test -d "$ESMF_ROOT"; then
+			AC_MSG_ERROR([esmf directory provided ($ESMF_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_ESMF)
+	
+	dnl esmf headers and libraries
+	if test "x$HAVE_ESMF" == "xyes"; then
+		ESMFINCL="-I$ESMF_ROOT/include"
+		ESMFLIB="-L$ESMF_ROOT/lib -lesmf"
+		AC_DEFINE([_HAVE_ESMF_],[1],[with esmf in ISSM src])
+		AC_SUBST([ESMFINCL])
+		AC_SUBST([ESMFLIB])
+	fi
+	AM_CONDITIONAL([ESMF], [test x$HAVE_ESMF = xyes])
+	dnl }}}
+	dnl adolc{{{
+	AC_ARG_WITH([adolc-dir],
+		AS_HELP_STRING([--with-adolc-dir=DIR], [adolc root directory.]),
+		[ADOLC_ROOT=$withval],[ADOLC_ROOT="no"]) 
+
+	dnl Check whether adolc is enabled
+	AC_MSG_CHECKING([for adolc])
+	if test "x$ADOLC_ROOT" = "xno" ; then
+		HAVE_ADOLC=no
+	else
+		HAVE_ADOLC=yes
+		if ! test -d "$ADOLC_ROOT"; then
+			AC_MSG_ERROR([adolc directory provided ($ADOLC_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_ADOLC)
+	
+	dnl adolc headers and libraries
+	if test "x$HAVE_ADOLC" == "xyes"; then
+		ADOLCINCL="-I$ADOLC_ROOT/include"
+		dnl ADOLCLIB="-L$ADOLC_ROOT/lib64 -ladolc" used to be the path
+		ADOLCLIB="-L$ADOLC_ROOT/lib -ladolc"
+		AC_DEFINE([_HAVE_ADOLC_],[1],[with adolc in ISSM src])
+		AC_SUBST([ADOLCINCL])
+		AC_SUBST([ADOLCLIB])
+	fi
+	AM_CONDITIONAL([ADOLC], [test x$HAVE_ADOLC = xyes])
+        AM_COND_IF(ADOLC,[CXXFLAGS+=" -std=c++11"])
+	dnl }}}
+	dnl adolc-version{{{
+	AC_ARG_WITH([adolc-version],
+		AS_HELP_STRING([--with-adolc-version=number], [adolc version.]),
+		[ADOLC_VERSION=$withval],[ADOLC_VERSION=2]) 
+	AC_MSG_CHECKING(for adolc-version) 
+
+	AC_DEFINE_UNQUOTED([_ADOLC_VERSION_],$ADOLC_VERSION,[ADOLC version])
+	AC_MSG_RESULT($ADOLC_VERSION)
+	dnl }}}
+	dnl adic2{{{
+	AC_ARG_WITH([adic2-dir],
+	  AS_HELP_STRING([--with-adic2-dir=DIR], [adic2 root directory.]),
+	  [ADIC2_ROOT=$withval],[ADIC2_ROOT="no"]) 
+
+	dnl Check whether adic2 is enabled
+	AC_MSG_CHECKING([for adic2])
+	if test "x$ADIC2_ROOT" = "xno" ; then
+		HAVE_ADIC2=no
+	else
+		HAVE_ADIC2=yes
+		if ! test -d "$ADIC2_ROOT"; then
+			AC_MSG_ERROR([adic2 directory provided ($ADIC2_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_ADIC2)
+
+	dnl adic2 headers and libraries
+	if test "x$HAVE_ADIC2" == "xyes"; then
+		ADIC2INCL="-DADIC2_DENSE -I$ADIC2_ROOT/include -I$ADIC2_ROOT/share/runtime_dense/"
+		ADIC2LIB=""
+		AC_DEFINE([_HAVE_ADIC2_],[1],[with adic2 in ISSM src])
+		AC_SUBST([ADIC2INCL])
+		AC_SUBST([ADIC2LIB])
+	fi
+	AM_CONDITIONAL([ADIC2], [test x$HAVE_ADIC2 = xyes])
+	dnl }}}
+	dnl atlas{{{
+	AC_ARG_WITH([atlas-dir],
+	  AS_HELP_STRING([--with-atlas-dir=DIR],[atlas root directory]),
+	  [ATLAS_ROOT=$withval],[ATLAS_ROOT="no"])
+			  
+	dnl Check whether atlas is enabled
+	AC_MSG_CHECKING(for atlas and cblas libraries)
+	if test "x$ATLAS_ROOT" = "xno" ; then
+		HAVE_ATLAS=no
+	else
+		HAVE_ATLAS=yes
+		if ! test -d "$ATLAS_ROOT"; then
+			AC_MSG_ERROR([atlas directory provided ($ATLAS_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_ATLAS)
+
+	dnl atlas headers and libraries
+	if test "x$HAVE_ATLAS" == "xyes"; then
+		dnl: branch on whether we are running on windows or linux.
+		case "${host_os}" in
+			*cygwin*)
+			ATLASLIB="-L`cygpath -m $ATLAS_ROOT` -Wl,libatlas.lib  -Wl,libcblas.lib"
+			;;
+			*linux*)
+			ATLASLIB=-L"$ATLAS_ROOT/lib -lcblas -latlas -lm " 
+			;;
+			*darwin*)
+			ATLASLIB=-L"$ATLAS_ROOT/lib -lcblas -latlas -lm" 
+			;;
+		esac
+		AC_DEFINE([_HAVE_ATLAS_],[1],[with ATLAS in ISSM src])
+		AC_SUBST([ATLASLIB])
+	fi
+	dnl }}}
+	dnl gsl{{{
+	AC_ARG_WITH([gsl-dir],
+	  AS_HELP_STRING([--with-gsl-dir=DIR], [gsl root directory.]),
+	  [GSL_ROOT=$withval],[GSL_ROOT="no"]) 
+
+	dnl Check whether gsl is enabled
+	AC_MSG_CHECKING([for gsl])
+	if test "x$GSL_ROOT" = "xno" ; then
+		HAVE_GSL=no
+	else
+		HAVE_GSL=yes
+		if ! test -d "$GSL_ROOT"; then
+			AC_MSG_ERROR([gsl directory provided ($GSL_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_GSL)
+	
+	dnl gsl headers and libraries
+	if test "x$HAVE_GSL" == "xyes"; then
+		GSLINCL="-I$GSL_ROOT/include"
+		if test "x$HAVE_ATLAS" = "xyes" ; then
+			GSLLIB="-dy -L$GSL_ROOT/lib -lgsl -L$ATLAS_ROOT/lib -lcblas -latlas -lm"
+		else
+			GSLLIB="-L$GSL_ROOT/lib -lgsl -lgslcblas -lm"
+		fi
+		AC_DEFINE([_HAVE_GSL_],[1],[with gsl in ISSM src])
+		AC_SUBST([GSLINCL])
+		AC_SUBST([GSLLIB])
+	fi
+	AM_CONDITIONAL([GSL], [test x$HAVE_GSL = xyes])
+	dnl }}}
+	dnl adjoinable-mpi{{{
+	AC_ARG_WITH([ampi-dir],
+	  AS_HELP_STRING([--with-ampi-dir=DIR], [adjoinable mpi root directory.]),
+	  [AMPI_ROOT=$withval],[AMPI_ROOT="no"]) 
+
+	dnl Check whether ampi is enabled
+	AC_MSG_CHECKING([for ampi])
+	if test "x$AMPI_ROOT" = "xno" ; then
+		HAVE_AMPI=no
+	else
+		HAVE_AMPI=yes
+		if ! test -d "$AMPI_ROOT"; then
+			AC_MSG_ERROR([ampi directory provided ($AMPI_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_AMPI)
+	
+	dnl ampi headers and libraries
+	if test "x$HAVE_AMPI" == "xyes"; then
+		AMPIINCL="-I$AMPI_ROOT/include"
+		if test "x$ADOLC_ROOT" == "xno"; then
+			AC_MSG_ERROR([cannot run adjoinable mpi without adolc]);
+		fi
+		dnl AMPILIB="-dy -L$AMPI_ROOT/lib -lampiCommon -L$ADOLC_ROOT/lib -ladolc -L$AMPI_ROOT/lib -lampiCommon -lampiBookkeeping -lampiTape"
+		dnl AMPILIB="-dy -L$AMPI_ROOT/lib  -L$ADOLC_ROOT/lib -Wl,--start-group,-lampiCommon,-ladolc,-lampiCommon,-lampiBookkeeping,-lampiTape,-lampiPlainC,-lampiADtoolStubsST,--end-group"
+		dnl AMPILIB="-L$AMPI_ROOT/lib  -L$ADOLC_ROOT/lib -Wl,--start-group -lampiCommon -ladolc -lampiCommon -lampiBookkeeping -lampiTape -lampiPlainC -lampiADtoolStubsST -Wl,--end-group"
+		dnl AMPILIB="$AMPI_ROOT/lib/libampiCommon.so $ADOLC_ROOT/lib/libadolc.so  $AMPI_ROOT/lib/libampiCommon.so $AMPI_ROOT/lib/libampiBookkeeping.so $AMPI_ROOT/lib/libampiTape.so $AMPI_ROOT/lib/libampiPlainC.so  $AMPI_ROOT/lib/libampiADtoolStubsST.so"
+		dnl AMPILIB="-dy -L$AMPI_ROOT/lib  -L$ADOLC_ROOT/lib -lampiCommon -ladolc -lampiCommon -lampiBookkeeping -lampiTape -lampiPlainC -lampiADtoolStubsST"
+		AMPILIB="-dy -L$AMPI_ROOT/lib  -lampiCommon -lampiBookkeeping -lampiTape"
+		AC_DEFINE([_HAVE_AMPI_],[1],[with adjoinable mpi in ISSM src])
+		AC_SUBST([AMPIINCL])
+		AC_SUBST([AMPILIB])
+	fi
+	AM_CONDITIONAL([AMPI], [test x$HAVE_AMPI = xyes])
+	dnl }}}
+	dnl rose{{{
+	AC_ARG_WITH([rose-dir],
+	  AS_HELP_STRING([--with-rose-dir=DIR], [rose root directory.]),
+	  [ROSE_ROOT=$withval],[ROSE_ROOT="no"]) 
+
+	dnl Check whether rose is enabled
+	AC_MSG_CHECKING([for rose])
+	if test "x$ROSE_ROOT" = "xno" ; then
+		HAVE_ROSE=no
+	else
+		HAVE_ROSE=yes
+		if ! test -d "$ROSE_ROOT"; then
+			AC_MSG_ERROR([rose directory provided ($ROSE_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_ROSE)
+	AM_CONDITIONAL([ROSE],[test x$HAVE_ROSE = xyes])
+
+	dnl library and header files
+	if test "x$HAVE_ROSE" = "xyes"; then
+		ROSEINCL="-I$ROSE_ROOT/include"
+		ROSELIB=""
+		AC_DEFINE([_HAVE_ROSE_],[1],[with rose in ISSM src])
+		AC_SUBST([ROSEINCL])
+		AC_SUBST([ROSELIB])
+	fi
+	dnl }}}
+	dnl mpi{{{
+	AC_MSG_CHECKING(for mpi)
+	
+	AC_ARG_WITH([mpi-include],
+	  AS_HELP_STRING([--with-mpi-include=DIR],[mpi include directory, necessary for parallel build]),
+	  [MPI_INCLUDE=$withval],[MPI_INCLUDE=""])
+
+	AC_ARG_WITH([mpi-libdir],
+	  AS_HELP_STRING([--with-mpi-libdir=DIR],[mpi lib directory, necessary for parallel build]),
+	  [MPI_LIBDIR=$withval],[MPI_LIBDIR=""])
+
+	AC_ARG_WITH([mpi-libflags],
+	  AS_HELP_STRING([--with-mpi-libflags=LIBS],[mpi libraries to be used, necessary for parallel build]),
+	  [MPI_LIBFLAGS=$withval],[MPI_LIBFLAGS=""])
+
+	
+	if test -z "$MPI_INCLUDE" ; then
+		HAVE_MPI=no
+	else
+		HAVE_MPI=yes
+
+		dnl Processing for windows
+		if  test x$VENDOR = xintel-win7-32; then
+			MPI_LIBDIR=`cygpath -m $MPI_LIBDIR`
+			MPI_INCLUDE=`cygpath -m $MPI_INCLUDE`
+		elif test x$VENDOR = xintel-win7-64; then
+			MPI_LIBDIR="/I`cygpath -m $MPI_LIBDIR`"
+			MPI_INCLUDE=`cygpath -m $MPI_INCLUDE`
+		elif test x$VENDOR = xMSVC-Win64 || test x$VENDOR = xMSVC-Win64-par; then
+			MPI_LIBDIR=`cygpath -m $MPI_LIBDIR`
+			MPI_INCLUDE=`cygpath -m $MPI_INCLUDE`
+		fi
+
+		if test -z "$MPI_LIBDIR"; then
+			MPILIB="$MPI_LIBFLAGS"
+		else
+			MPILIB="-L$MPI_LIBDIR $MPI_LIBFLAGS"
+		fi
+
+		if  test x$IS_WINDOWS = xyes; then
+			MPIINCL=/I"$MPI_INCLUDE"
+		else 
+			MPIINCL=-I"$MPI_INCLUDE"
+		fi
+
+		AC_DEFINE([_HAVE_MPI_],[1],[with Mpi in ISSM src])
+		AC_DEFINE([HAVE_MPI],[1],[Mpi Flag for Dakota (DO NOT REMOVE)])
+		AC_SUBST([MPIINCL])
+		AC_SUBST([MPILIB])
+	fi
+	AM_CONDITIONAL([MPI], [test x$HAVE_MPI = xyes])
+	AC_MSG_RESULT($HAVE_MPI)
+	dnl }}}
+	dnl petsc{{{
+	AC_ARG_WITH([petsc-dir],
+	  AS_HELP_STRING([--with-petsc-dir=DIR],[PETSc root directory, necessary for parallel build]),
+	  [PETSC_ROOT=$withval],[PETSC_ROOT="no"])
+		
+	dnl Check whether petsc is enabled
+	AC_MSG_CHECKING([for petsc])
+	if test "x$PETSC_ROOT" = "xno" ; then
+		HAVE_PETSC=no
+	else
+		HAVE_PETSC=yes
+		if ! test -d "$PETSC_ROOT"; then
+			AC_MSG_ERROR([petsc directory provided ($PETSC_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_PETSC)
+	AM_CONDITIONAL([PETSC],[test x$HAVE_PETSC = xyes])
+
+	dnl library and header files
+	if test "x$HAVE_PETSC" = "xyes"; then
+		AC_MSG_CHECKING(for petsc version)
+	   if ! test -f "$PETSC_ROOT/include/petscversion.h"; then
+			AC_MSG_ERROR([PETSc not instaled corretly: file ($PETSC_ROOT/include/petscversion.h) does not exist]);
+		fi
+		PETSC_MAJOR=`cat $PETSC_ROOT/include/petscversion.h | grep "#define PETSC_VERSION_MAJOR" | sed 's/#define PETSC_VERSION_MAJOR//' | sed 's/ //g'`
+		PETSC_MINOR=`cat $PETSC_ROOT/include/petscversion.h | grep "#define PETSC_VERSION_MINOR" | sed 's/#define PETSC_VERSION_MINOR//' | sed 's/ //g'`
+		AC_DEFINE_UNQUOTED([_PETSC_MAJOR_],$PETSC_MAJOR,[PETSc version major])
+		AC_DEFINE_UNQUOTED([_PETSC_MINOR_],$PETSC_MINOR,[PETSc version minor])
+		AC_MSG_RESULT($PETSC_MAJOR.$PETSC_MINOR)
+
+		PETSC_VERSION_DATE_HG=`cat $PETSC_ROOT/include/petscversion.h | grep "#define PETSC_VERSION_DATE_HG" | sed 's/#define PETSC_VERSION_DATE_HG//' | sed 's/ //g' | sed -e 's/\"//g' `
+		PETSC_RELEASE=`cat $PETSC_ROOT/include/petscversion.h | grep "#define PETSC_VERSION_RELEASE" | sed 's/#define PETSC_VERSION_RELEASE//' | sed 's/ //g'`
+
+		AC_MSG_CHECKING(whether petsc is the development version)
+		dnl if test x$PETSC_VERSION_DATE_HG = xunknown; then
+		if test "$PETSC_RELEASE" = "0"; then
+		   AC_DEFINE([_HAVE_PETSCDEV_],[1],[with PETSc-dev])
+			AC_MSG_RESULT(yes)
+		else
+			AC_MSG_RESULT(no)
+		fi
+	
+		AC_ARG_WITH([petsc-arch],
+		  AS_HELP_STRING([--with-petsc-arch=DIR],[PETSc arch, necessary for PETSc < 3.0]),
+		  [PETSC_ARCH=$withval],[PETSC_ARCH=""])
+
+		AC_MSG_CHECKING(for petsc headers and libraries in $PETSC_ROOT)
+		dnl To ge PETSc's libraries:
+		dnl cd externalpackages/petsc/src
+		dnl make getlinklibs
+		PETSCINCL=" -I$PETSC_ROOT/include"
+		dnl Add other location (not needed anymore since at least PETSc 3.0)
+		if test "x$PETSC_ARCH" != "x" && test -d "$PETSC_ROOT/$PETSC_ARCH/include"; then
+		 PETSCINCL+=" $PETSC_ROOT/$PETSC_ARCH/include"
+		fi
+		if test "x$PETSC_ARCH" != "x" && test -d "$PETSC_ROOT/include/$PETSC_ARCH"; then
+		 PETSCINCL+=" $PETSC_ROOT/include/$PETSC_ARCH"
+		fi
+		
+		case "${host_os}" in
+				*cygwin*)
+				if test $PETSC_MAJOR -lt 3 ; then
+					PETSCLIB=-Wl,/LIBPATH:`cygpath -w $PETSC_ROOT/lib`  -Wl,libpetscksp.lib  -Wl,libpetscdm.lib  -Wl,libpetscmat.lib  -Wl,libpetscvec.lib  -Wl,libpetscsnes.lib  -Wl,libpetscts.lib  -Wl,libmpiuni.lib  -Wl,libpetsc.lib
+				else
+					PETSCLIB="/link -Wl,/LIBPATH:`cygpath -m $PETSC_ROOT/lib`  -Wl,libpetsc.lib"
+					PETSCINCL="/I`cygpath -m $PETSC_ROOT/include`"
+				fi
+				;;
+				*linux*)
+				if test $PETSC_MAJOR -lt 3 ; then
+					PETSCLIB="-L$PETSC_ROOT/lib -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetscsnes -lpetscts -lmpiuni -lpetsc"
+				else
+					PETSCLIB="-L$PETSC_ROOT/lib -lpetsc -ldl"
+					if test $PETSC_MAJOR -gt 3 || test $PETSC_MINOR -ge 3; then PETSCLIB+=" -lmetis"; fi
+				fi
+				if test "x$host_os_version" = "x3.0.101-0.31.1_1.0502.8394-cray_gem_s" ; then
+					PETSCLIB="-L$PETSC_ROOT/lib -lcraypetsc_gnu_real -lmetis"
+				fi 
+				;;
+				*darwin*)
+				if test $PETSC_MAJOR -lt 3 ; then
+					PETSCLIB="-L$PETSC_ROOT/lib -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetscsnes -lpetscts -lpetsc"
+				else
+					PETSCLIB="-L$PETSC_ROOT/lib -lpetsc"
+					if test $PETSC_MAJOR -gt 3 || test $PETSC_MINOR -ge 3; then PETSCLIB+=" -lmetis"; fi
+				fi
+				;;
+		esac
+		AC_MSG_RESULT(done)
+		AC_DEFINE([_HAVE_PETSC_],[1],[with PETSc in ISSM src])
+		AC_SUBST([PETSCINCL])
+		AC_SUBST([PETSCLIB])
+	fi
+	dnl }}}
+	dnl metis{{{
+	if test "$HAVE_PETSC" = "yes" && test "x$PETSC_MAJOR" = "x3" && test $PETSC_MINOR -ge 3 && test "x$VENDOR" != "xMSVC-Win64" && test "x$VENDOR" != "xMSVC-Win64-par"; then
+		dnl in petsc >=3.3, metis is provided
+		HAVE_METIS="yes"
+		AC_DEFINE([_METIS_VERSION_],[5],[ Metis version number])
+		AC_DEFINE([_HAVE_METIS_],[1],[with Metis in ISSM src])
+	else
+		AC_ARG_WITH([metis-dir],
+		  AS_HELP_STRING([--with-metis-dir=DIR],[metis root directory. necessary for serial build]),
+		  [METIS_ROOT=$withval],[METIS_ROOT="no"])
+
+		dnl Check whether metis is enabled
+		AC_MSG_CHECKING([for metis])
+		if test "x$METIS_ROOT" = "xno" ; then
+			HAVE_METIS=no
+		else
+			HAVE_METIS=yes
+			if ! test -d "$METIS_ROOT"; then
+				AC_MSG_ERROR([metis directory provided ($METIS_ROOT) does not exist]);
+			fi
+		fi
+		AC_MSG_RESULT($HAVE_METIS)
+		AM_CONDITIONAL([METIS],[test x$HAVE_METIS = xyes])
+
+		dnl library and header files
+		if test "x$HAVE_METIS" = "xyes"; then
+
+			AC_MSG_CHECKING(for metis headers and libraries in $METIS_ROOT)
+			dnl first figure out version of metis: does the VERSION file exist?
+			if test -e "$METIS_ROOT/VERSION"; then
+				METIS_VERSION=4
+			else
+				METIS_VERSION=5
+			fi
+
+			if test "$METIS_VERSION" = "4" ; then
+				METISINCL=-I"$METIS_ROOT/Lib" 
+				case "${host_os}" in
+					*cygwin*)
+					METISINCL="/I`cygpath -m $METIS_ROOT/Lib`" 
+					METISLIB="-Wl,/link -Wl,/LIBPATH:`cygpath -m $METIS_ROOT` -Wl,libmetis.lib"
+					;;
+					*linux*)
+					METISLIB=-L"$METIS_ROOT/ -lmetis"
+					;;
+					*darwin*)
+					METISLIB=-L"$METIS_ROOT/ -lmetis"
+					;;
+				esac
+				AC_DEFINE([_METIS_VERSION_],[4],[ Metis version number])
+			fi
+
+			if test "$METIS_VERSION" = "5" ; then
+				case "${host_os}" in
+					*cygwin*)
+					METISLIB="-L$METIS_ROOT libmetis.lib"
+					;;
+					*linux*)
+					METISLIB=-L"$METIS_ROOT/lib -lmetis"
+					;;
+					*darwin*)
+					METISLIB=-L"$METIS_ROOT/lib -lmetis"
+					;;
+				esac
+				METISINCL=-I"$METIS_ROOT/include" 
+				AC_DEFINE([_METIS_VERSION_],[5],[ Metis version number])
+			fi
+
+			AC_DEFINE([_HAVE_METIS_],[1],[with Metis in ISSM src])
+			AC_SUBST([METISINCL])
+			AC_SUBST([METISLIB])
+		fi
+	fi
+	AM_CONDITIONAL([METIS],[test x$HAVE_METIS = xyes])
+	dnl }}}
+	dnl tao{{{
+	AC_ARG_WITH([tao-dir],
+		AS_HELP_STRING([--with-tao-dir=DIR], [tao root directory.]),
+		[TAO_ROOT=$withval],[TAO_ROOT="no"]) 
+
+	dnl Check whether tao is enabled
+	AC_MSG_CHECKING([for tao])
+
+	if test "$HAVE_PETSC" = "yes" && test "x$PETSC_MAJOR" = "x3" && test $PETSC_MINOR -ge 5; then
+		dnl in petsc >=3.5, tao is provided
+		HAVE_TAO="yes"
+		AC_DEFINE([_HAVE_TAO_],[1],[with Tao in ISSM src])
+		AC_MSG_RESULT($HAVE_TAO)
+	else
+
+		if test "x$TAO_ROOT" = "xno" ; then
+			HAVE_TAO=no
+		else
+			HAVE_TAO=yes
+			if ! test -d "$TAO_ROOT"; then
+				AC_MSG_ERROR([tao directory provided ($TAO_ROOT) does not exist]);
+			fi
+		fi
+		AC_MSG_RESULT($HAVE_TAO)
+
+		dnl tao headers and libraries
+		if test "x$HAVE_TAO" == "xyes"; then
+		  TAOINCL="-I$TAO_ROOT/ -I$TAO_ROOT/include -I$TAO_ROOT/bmake/ "
+		  TAOLIB="-L$TAO_ROOT/lib -ltao -lpetsc"
+		  AC_DEFINE([_HAVE_TAO_],[1],[with Tao in ISSM src])
+		  AC_SUBST([TAOINCL])
+		  AC_SUBST([TAOLIB])
+		fi
+	fi
+	dnl }}}
+	dnl m1qn3{{{
+	AC_ARG_WITH([m1qn3-dir],
+		AS_HELP_STRING([--with-m1qn3-dir=DIR], [m1qn3 root directory.]),
+		[M1QN3_ROOT=$withval],[M1QN3_ROOT="no"]) 
+
+	dnl Check whether m1qn3 is enabled
+	AC_MSG_CHECKING([for m1qn3])
+	if test "x$M1QN3_ROOT" = "xno" ; then
+		HAVE_M1QN3=no
+	else
+		HAVE_M1QN3=yes
+		if ! test -d "$M1QN3_ROOT"; then
+			AC_MSG_ERROR([m1qn3 directory provided ($M1QN3_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_M1QN3)
+	
+	dnl m1qn3 headers and libraries
+	if test "x$HAVE_M1QN3" == "xyes"; then
+	  M1QN3LIB="$M1QN3_ROOT/libm1qn3.a $M1QN3_ROOT//libddot.a"
+	  AC_DEFINE([_HAVE_M1QN3_],[1],[with M1QN3 in ISSM src])
+	  AC_SUBST([M1QN3LIB])
+	fi
+	dnl }}}
+	dnl proj.4{{{
+	AC_ARG_WITH([proj4-dir],
+		AS_HELP_STRING([--with-proj4-dir=DIR], [proj4 root directory.]),
+		[PROJ4_ROOT=$withval],[PROJ4_ROOT="no"]) 
+
+	dnl Check whether proj4 is enabled
+	AC_MSG_CHECKING([for proj.4])
+	if test "x$PROJ4_ROOT" = "xno" ; then
+		HAVE_PROJ4=no
+	else
+		HAVE_PROJ4=yes
+		if ! test -d "$PROJ4_ROOT"; then
+			AC_MSG_ERROR([proj4 directory provided ($PROJ4_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_PROJ4)
+	
+	dnl proj4 headers and libraries
+	if test "x$HAVE_PROJ4" == "xyes"; then
+	  PROJ4INCL="-I$PROJ4_ROOT/include "
+	  PROJ4LIB="-L$PROJ4_ROOT/lib -lproj"
+	  AC_DEFINE([_HAVE_PROJ4_],[1],[with PROJ4 in ISSM src])
+	  AC_SUBST([PROJ4INCL])
+	  AC_SUBST([PROJ4LIB])
+	fi
+	AM_CONDITIONAL([PROJ4],[test x$HAVE_PROJ4 = xyes])
+	dnl }}}
+	dnl slepc{{{
+	AC_ARG_WITH([slepc-dir],
+	  AS_HELP_STRING([--with-slepc-dir=DIR],[slepc root directory]),
+	  [SLEPC_ROOT=$withval],[SLEPC_ROOT="no"])
+			  
+	dnl Check whether slepc is enabled
+	AC_MSG_CHECKING([for slepc])
+	if test "x$SLEPC_ROOT" = "xno" ; then
+		HAVE_SLEPC=no
+	else
+		HAVE_SLEPC=yes
+		if ! test -d "$SLEPC_ROOT"; then
+			AC_MSG_ERROR([slepc directory provided ($SLEPC_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_SLEPC)
+	
+	dnl slepc headers and libraries
+	if test "x$HAVE_SLEPC" == "xyes"; then
+		SLEPCINCL=-I"$SLEPC_ROOT/include"
+		SLEPCLIB=-L"$SLEPC_ROOT/lib/ -lslepc"
+		AC_DEFINE([_HAVE_SLEPC_],[1],[with Slepc in ISSM src])
+		AC_SUBST([SLEPCINCL])
+		AC_SUBST([SLEPCLIB])
+	fi
+	dnl }}}
+	dnl shapelib{{{
+	AC_ARG_WITH([shapelib-dir],
+	  AS_HELP_STRING([--with-shapelib-dir=DIR], [shapelib root directory]),
+	  [SHAPELIB_ROOT=$withval],[SHAPELIB_ROOT="no"])
+			  
+	dnl Check whether shapelib is enabled
+	AC_MSG_CHECKING([for shapelib])
+	if test "x$SHAPELIB_ROOT" = "xno" ; then
+		HAVE_SHAPELIB=no
+	else
+		HAVE_SHAPELIB=yes
+		if ! test -d "$SHAPELIB_ROOT"; then
+			AC_MSG_ERROR([shapelib directory provided ($SHAPELIB_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_SHAPELIB)
+	
+	dnl shapelib headers and libraries
+	if test "x$HAVE_SHAPELIB" == "xyes"; then
+		SHAPELIBINCL=-I"$SHAPELIB_ROOT/include"
+		SHAPELIBLIB=-L"$SHAPELIB_ROOT/lib/ -lshape"
+		AC_DEFINE([_HAVE_SHAPELIB_],[1],[with Shapelib in ISSM src])
+		AC_SUBST([SHAPELIBINCL])
+		AC_SUBST([SHAPELIBLIB])
+	fi
+	dnl }}}
+	dnl scalapack{{{
+	AC_ARG_WITH([scalapack-dir],
+	  AS_HELP_STRING([--with-scalapack-dir=DIR],[scalapack root directory]),
+	  [SCALAPACK_ROOT=$withval],[SCALAPACK_ROOT="no"])
+			  
+	dnl Check whether scalapack is enabled
+	AC_MSG_CHECKING([for scalapack])
+	if test "x$SCALAPACK_ROOT" = "xno" ; then
+		HAVE_SCALAPACK=no
+	else
+		HAVE_SCALAPACK=yes
+		if ! test -d "$SCALAPACK_ROOT"; then
+			AC_MSG_ERROR([scalapack directory provided ($SCALAPACK_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_SCALAPACK)
+	
+	dnl scalapack headers and libraries
+	if test "x$HAVE_SCALAPACK" == "xyes"; then
+		if test x$VENDOR = xintel-discover; then
+		 SCALAPACKLIB=-L"$SCALAPACK_ROOT/ -lmkl_scalapack_lp64"
+		else
+		 SCALAPACKLIB=-L"$SCALAPACK_ROOT/ -lscalapack"
+		fi
+		AC_DEFINE([_HAVE_SCALAPACK_],[1],[with Scalapack in ISSM src])
+		AC_SUBST([SCALAPACKLIB])
+	fi
+	dnl }}}
+	dnl blas-lapack{{{
+	AC_ARG_WITH([blas-lapack-dir],
+	  AS_HELP_STRING([--with-blas-lapack-dir=DIR],[blas-lapack root directory]),
+	  [BLASLAPACK_ROOT=$withval],[BLASLAPACK_ROOT="no"])
+			  
+	dnl Check whether blas-lapack is enabled
+	AC_MSG_CHECKING([for blas-lapack])
+	if test "x$BLASLAPACK_ROOT" = "xno" ; then
+		HAVE_BLASLAPACK=no
+	else
+		HAVE_BLASLAPACK=yes
+		if ! test -d "$BLASLAPACK_ROOT"; then
+			AC_MSG_ERROR([blas-lapack directory provided ($BLASLAPACK_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_BLASLAPACK)
+	
+	dnl blas-lapack headers and libraries
+	if test "x$HAVE_BLASLAPACK" == "xyes"; then
+		BLASLAPACKINCL=""
+		if test x$VENDOR = xintel-discover; then
+		   dnl works for intel 11
+			dnl BLASLAPACKLIB=-L"$BLASLAPACK_ROOT -lmkl_lapack -lmkl -lguide -lpthread "
+			dnl dnl works for intel 13
+			BLASLAPACKLIB=-L"$BLASLAPACK_ROOT -lmkl_lapack95_lp64 -lmkl_rt " 
+		else
+			dnl: branch on whether we are running on windows or linux.
+			case "${host_os}" in
+				*cygwin*)
+				BLASLAPACKLIB="-L`cygpath -m $BLASLAPACK_ROOT` -Wl,libf2cblas.lib  -Wl,libf2clapack.lib"
+				;;
+				*linux*)
+				BLASLAPACKLIB=-L"$BLASLAPACK_ROOT/lib -lflapack -lfblas " 
+				;;
+				*darwin*)
+				BLASLAPACKLIB=-L"$BLASLAPACK_ROOT/lib -lflapack -lfblas " 
+				;;
+			esac
+		fi
+		AC_DEFINE([_HAVE_BLASLAPACK_],[1],[with blas lapack in ISSM src])
+		AC_SUBST([BLASLAPACKLIB])
+		AC_SUBST([BLASLAPACKINCL])
+	fi
+	dnl }}}
+	dnl mkl{{{
+		AC_ARG_WITH([mkl-libflags],
+					AS_HELP_STRING([--with-mkl-libflags=LIBS],[mkl libraries to be used]),
+					[MKL_LIBFLAGS=$withval],[MKL_LIBFLAGS="no"])
+
+		  dnl Check whether mkl is enabled
+		  AC_MSG_CHECKING([for mkl])
+		  if test "x$MKL_LIBFLAGS" = "xno" ; then
+				HAVE_MKL=no
+		  else
+				HAVE_MKL=yes
+				KMLLIB="$KML_LIBFLAGS"
+				AC_DEFINE([_HAVE_MKL_],[1],[with mkl in ISSM src])
+				AC_SUBST([MKLLIB])
+				AC_SUBST([MKLINCL])
+			fi
+			AC_MSG_RESULT($HAVE_MKL)
+	dnl }}}
+	dnl plapack{{{
+	AC_MSG_CHECKING(for plapack)
+	
+	AC_ARG_WITH([plapack-lib],
+	  AS_HELP_STRING([--with-plapack-lib = lib],[plapack library]),
+	  [PLAPACK_LIB=$withval],[PLAPACK_LIB=""])
+	
+	AC_ARG_WITH([plapack-include],
+			  AS_HELP_STRING([--with-plapack-include = include],
+							 [plapack include ]),
+			  [PLAPACK_INCLUDE=$withval],[PLAPACK_INCLUDE=""])
+	  
+	if test -n "$PLAPACK_LIB"; then
+		if test -n "$PLAPACK_INCLUDE"; then
+		
+			HAVE_PLAPACK=yes
+			PLAPACKINCL="$PLAPACK_INCLUDE"
+			PLAPACKLIB="$PLAPACK_LIB"
+			AC_DEFINE([_HAVE_PLAPACK_],[1],[with Plapack in ISSM src])
+			AC_SUBST([PLAPACKINCL])
+			AC_SUBST([PLAPACKLIB])
+		else
+			HAVE_PLAPACK=no
+		fi
+	else
+		HAVE_PLAPACK=no
+	fi
+	AC_MSG_RESULT($HAVE_PLAPACK)
+	dnl }}}
+	dnl mumps{{{
+	AC_ARG_WITH([mumps-dir],
+	  AS_HELP_STRING([--with-mumps-dir=DIR],[mumps root directory]),
+	  [MUMPS_ROOT=$withval],[MUMPS_ROOT="no"])
+			  
+	dnl Check whether mumps is enabled
+	AC_MSG_CHECKING([for mumps])
+	if test "x$MUMPS_ROOT" = "xno" ; then
+		HAVE_MUMPS=no
+	else
+		HAVE_MUMPS=yes
+		if ! test -d "$MUMPS_ROOT"; then
+			AC_MSG_ERROR([mumps directory provided ($MUMPS_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_MUMPS)
+	
+	dnl mumps headers and libraries
+	if test "x$HAVE_MUMPS" == "xyes"; then
+		MUMPSINCL=-I"$MUMPS_ROOT/include"
+		if test "$PETSC_MAJOR" = "2" ; then
+			MUMPSLIB=-L"$MUMPS_ROOT/lib "
+		else
+			MUMPSLIB=-L"$MUMPS_ROOT/lib -ldmumps -lcmumps  -lmumps_common -lpord -lparmetis -lzmumps -lmetis"
+			dnl MUMPSLIB=-L"$MUMPS_ROOT/lib "
+		fi
+		AC_DEFINE([_HAVE_MUMPS_],[1],[with Mumps in ISSM src])
+		AC_SUBST([MUMPSINCL])
+		AC_SUBST([MUMPSLIB])
+	fi
+	AM_CONDITIONAL([MUMPS], [test x$HAVE_MUMPS = xyes])
+	dnl }}}
+	dnl blacs{{{
+	AC_ARG_WITH([blacs-dir],
+		AS_HELP_STRING([--with-blacs-dir=DIR],[blacs root directory]),
+			  [BLACS_ROOT=$withval],[BLACS_ROOT="no"])
+			  
+	dnl Check whether blacs is enabled
+	AC_MSG_CHECKING([for blacs])
+	if test "x$BLACS_ROOT" = "xno" ; then
+		HAVE_BLACS=no
+	else
+		HAVE_BLACS=yes
+		if ! test -d "$BLACS_ROOT"; then
+			AC_MSG_ERROR([blacs directory provided ($BLACS_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_BLACS)
+	
+	dnl blacs headers and libraries
+	if test "x$HAVE_BLACS" == "xyes"; then
+		BLACSINCL=""
+		if test x$VENDOR = xintel-discover; then
+		 BLACSLIB=-L"$BLACS_ROOT/ -lmkl_blacs_intelmpi_lp64"
+		else
+		 BLACSLIB=-L"$BLACS_ROOT/ -lblacs"
+		fi
+		AC_DEFINE([_HAVE_BLACS_],[1],[with Blacs in ISSM src])
+		AC_SUBST([BLACSINCL])
+		AC_SUBST([BLACSLIB])
+	fi
+	dnl }}}
+	dnl hypre{{{
+	AC_ARG_WITH([hypre-dir],
+	  AS_HELP_STRING([--with-hypre-dir=DIR],[hypre root directory]),
+			  [HYPRE_ROOT=$withval],[HYPRE_ROOT="no"])
+			  
+	dnl Check whether hypre is enabled
+	AC_MSG_CHECKING([for hypre])
+	if test "x$HYPRE_ROOT" = "xno" ; then
+		HAVE_HYPRE=no
+	else
+		HAVE_HYPRE=yes
+		if ! test -d "$HYPRE_ROOT"; then
+			AC_MSG_ERROR([hypre directory provided ($HYPRE_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_HYPRE)
+
+	dnl hypre headers and libraries
+	if test "x$HAVE_HYPRE" == "xyes"; then
+		HYPREINCL=""
+		HYPRELIB=-L"$HYPRE_ROOT/lib -lHYPRE"
+		AC_DEFINE([_HAVE_HYPRE_],[1],[with Hypre in ISSM src])
+		AC_SUBST([HYPREINCL])
+		AC_SUBST([HYPRELIB])
+	fi
+	dnl }}}
+	dnl prometheus{{{
+	AC_ARG_WITH([prometheus-dir],
+				AS_HELP_STRING([--with-prometheus-dir=DIR],[prometheus root directory]),
+				[PROMETHEUS_ROOT=$withval],[PROMETHEUS_ROOT="no"])
+
+		dnl Check whether prometheus is enabled
+		AC_MSG_CHECKING([for prometheus])
+		if test "x$PROMETHEUS_ROOT" = "xno" ; then
+			HAVE_PROMETHEUS=no
+		else
+			HAVE_PROMETHEUS=yes
+			if ! test -d "$PROMETHEUS_ROOT"; then
+				AC_MSG_ERROR([prometheus directory provided ($PROMETHEUS_ROOT) does not exist]);
+			fi
+		fi
+		AC_MSG_RESULT($HAVE_PROMETHEUS)
+
+		dnl prometheus headers and libraries
+		if test "x$HAVE_PROMETHEUS" == "xyes"; then
+			 PROMETHEUSINCL=-I"$PROMETHEUS_ROOT/include"
+			 PROMETHEUSLIB=-L"$PROMETHEUS_ROOT/lib -lpromfei -lprometheus -lparmetis"
+			 AC_DEFINE([_HAVE_PROMETHEUS_],[1],[with Prometheus in ISSM src])
+			 AC_SUBST([PROMETHEUSINCL])
+			 AC_SUBST([PROMETHEUSLIB])
+	   fi
+		dnl }}}
+dnl spai{{{
+	AC_ARG_WITH([spai-dir],
+				AS_HELP_STRING([--with-spai-dir=DIR],[spai root directory]),
+				[SPAI_ROOT=$withval],[SPAI_ROOT="no"])
+
+		dnl Check whether spai is enabled
+		AC_MSG_CHECKING([for spai])
+		if test "x$SPAI_ROOT" = "xno" ; then
+			HAVE_SPAI=no
+		else
+			HAVE_SPAI=yes
+			if ! test -d "$SPAI_ROOT"; then
+				AC_MSG_ERROR([spai directory provided ($SPAI_ROOT) does not exist]);
+			fi
+		fi
+		AC_MSG_RESULT($HAVE_SPAI)
+
+		dnl spai headers and libraries
+		if test "x$HAVE_SPAI" == "xyes"; then
+			SPAIINCL=-I"$SPAI_ROOT/include"
+			SPAILIB=-L"$SPAI_ROOT/lib -lspai"
+			AC_DEFINE([_HAVE_SPAI_],[1],[with Spai in ISSM src])
+			AC_SUBST([SPAIINCL])
+			AC_SUBST([SPAILIB])
+		fi
+	  dnl }}}
+dnl superlu{{{ 
+	AC_ARG_WITH([superlu-dir],
+				AS_HELP_STRING([--with-superlu-dir=DIR],[superlu root directory]),
+				[SUPERLU_ROOT=$withval],[SUPERLU_ROOT="no"])
+
+	dnl Check whether superlu is enabled
+	AC_MSG_CHECKING([for superlu])
+	if test "x$SUPERLU_ROOT" = "xno" ; then
+		HAVE_SUPERLU=no
+	else
+		HAVE_SUPERLU=yes
+		if ! test -d "$SUPERLU_ROOT"; then
+			AC_MSG_ERROR([superlu directory provided ($SUPERLU_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_SUPERLU)
+	
+	dnl superlu headers and libraries
+	if test "x$HAVE_SUPERLU" == "xyes"; then
+		  SUPERLUINCL=-I"$SUPERLU_ROOT/include"
+		  SUPERLULIB=-L"$SUPERLU_ROOT/lib -lsuperlu_dist"
+		  AC_DEFINE([_HAVE_SUPERLU_],[1],[with Superlu in ISSM src])
+		  AC_SUBST([SUPERLUINCL])
+		  AC_SUBST([SUPERLULIB])
+	 fi
+	 dnl }}}
+dnl spooles{{{ 
+	AC_ARG_WITH([spooles-dir],
+				AS_HELP_STRING([--with-spooles-dir=DIR],[spooles root directory]),
+				[SPOOLES_ROOT=$withval],[SPOOLES_ROOT="no"])
+
+	dnl Check whether spooles is enabled
+	AC_MSG_CHECKING([for spooles])
+	if test "x$SPOOLES_ROOT" = "xno" ; then
+		HAVE_SPOOLES=no
+	else
+		HAVE_SPOOLES=yes
+		if ! test -d "$SPOOLES_ROOT"; then
+			AC_MSG_ERROR([spooles directory provided ($SPOOLES_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_SPOOLES)
+	
+	dnl spooles headers and libraries
+	if test "x$HAVE_SPOOLES" == "xyes"; then
+		  SPOOLESINCL=-I"$SPOOLES_ROOT/include"
+		  SPOOLESLIB=-L"$SPOOLES_ROOT/lib -lspooles"
+		  AC_DEFINE([_HAVE_SPOOLES_],[1],[with Spooles in ISSM src])
+		  AC_SUBST([SPOOLESINCL])
+		  AC_SUBST([SPOOLESLIB])
+	 fi
+	 dnl }}}
+dnl pastix{{{ 
+	AC_ARG_WITH([pastix-dir],
+				AS_HELP_STRING([--with-pastix-dir=DIR],[pastix root directory]),
+				[PASTIX_ROOT=$withval],[PASTIX_ROOT="no"])
+
+	dnl Check whether pastix is enabled
+	AC_MSG_CHECKING([for pastix])
+	if test "x$PASTIX_ROOT" = "xno" ; then
+		HAVE_PASTIX=no
+	else
+		HAVE_PASTIX=yes
+		if ! test -d "$PASTIX_ROOT"; then
+			AC_MSG_ERROR([pastix directory provided ($PASTIX_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_PASTIX)
+	
+	dnl pastix headers and libraries
+	if test "x$HAVE_PASTIX" == "xyes"; then
+		  PASTIXINCL=-I"$PASTIX_ROOT/include"
+		  PASTIXLIB=-L"$PASTIX_ROOT/lib -lpastix_XXbit_mpi_smp_nobubble_int32_simple_real_scotch_i686_pc_linux -lptscotch -lptscotcherr -lpastix"
+		  AC_DEFINE([_HAVE_PASTIX_],[1],[with Pastix in ISSM src])
+		  AC_SUBST([PASTIXINCL])
+		  AC_SUBST([PASTIXLIB])
+  fi
+  dnl }}}
+	dnl ml{{{
+	AC_ARG_WITH([ml-dir],
+	  AS_HELP_STRING([--with-ml-dir=DIR],[ml root directory]),
+			  [ML_ROOT=$withval],[ML_ROOT="no"])
+			  
+	dnl Check whether ml is enabled
+	AC_MSG_CHECKING([for ml])
+	if test "x$ML_ROOT" = "xno" ; then
+		HAVE_ML=no
+	else
+		HAVE_ML=yes
+		if ! test -d "$ML_ROOT"; then
+			AC_MSG_ERROR([ml directory provided ($ML_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_ML)
+	
+	dnl ml headers and libraries
+	if test "x$HAVE_ML" == "xyes"; then
+		MLINCL=-I"$ML_ROOT/include"
+		MLLIB=-L"$ML_ROOT/lib -lml"
+		AC_DEFINE([_HAVE_ML_],[1],[with Blacs in ISSM src])
+		AC_SUBST([MLINCL])
+		AC_SUBST([MLLIB])
+	fi
+	dnl }}}
+	dnl umfpack{{{
+		AC_ARG_WITH([umfpack-dir],
+		  AS_HELP_STRING([--with-umfpack-dir=DIR],[UMFPACK root directory]),
+					[UMFPACK_ROOT=$withval],[UMFPACK_ROOT="no"])
+			  
+	dnl Check whether umfpack is enabled
+	AC_MSG_CHECKING([for umfpack])
+	if test "x$UMFPACK_ROOT" = "xno" ; then
+		HAVE_UMFPACK=no
+	else
+		HAVE_UMFPACK=yes
+		if ! test -d "$UMFPACK_ROOT"; then
+			AC_MSG_ERROR([umfpack directory provided ($UMFPACK_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_UMFPACK)
+	
+	dnl umfpack headers and libraries
+	if test "x$HAVE_UMFPACK" == "xyes"; then
+		UMFPACKINCL=""
+		UMFPACKLIB=-L"$UMFPACK_ROOT/lib -lumfpack -lumfpack.5.5.1"
+		AC_DEFINE([_HAVE_UMFPACK_],[1],[with UMFPACK in ISSM src])
+		AC_SUBST([UMFPACKINCL])
+		AC_SUBST([UMFPACKLIB])
+	fi
+	dnl }}}
+dnl math{{{
+	AC_MSG_CHECKING(for math library)
+	AC_ARG_WITH([math-lib],
+	  AS_HELP_STRING([--with-math-lib = otions],[math options, for ex: "/usr/lib/libm.a]),
+	  [MATH_LIB=$withval],[MATH_LIB=""])
+
+	dnl check that --with-math-lib may have been provided
+	if test -n "$MATH_LIB" ; then
+		HAVE_MATH=yes
+		MATHLIB="$MATH_LIB"
+		AC_DEFINE([_HAVE_MATH_],[1],[with MATH in ISSM src])
+		AC_SUBST([MATHLIB])
+	fi
+	AC_MSG_RESULT(done)
+	dnl }}}
+	dnl math77{{{
+		AC_ARG_WITH([math77-dir],
+					AS_HELP_STRING([--with-math77-dir=DIR], [math77 root directory.]),
+					[MATH77_ROOT=$withval],[MATH77_ROOT="no"]) 
+		  
+	dnl Check whether math77 is enabled
+	AC_MSG_CHECKING([for math77])
+	if test "x$MATH77_ROOT" = "xno" ; then
+		HAVE_MATH77=no
+	else
+		HAVE_MATH77=yes
+		if ! test -d "$MATH77_ROOT"; then
+			AC_MSG_ERROR([math77 directory provided ($MATH77_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_MATH77)
+	
+	dnl math77 headers and libraries
+	if test "x$HAVE_MATH77" == "xyes"; then
+		MATH77LIB="-L$MATH77_ROOT/ -lmath77"
+		AC_DEFINE([_HAVE_MATH77_],[1],[with math77 in ISSM src])
+		AC_SUBST([MATH77LIB])
+   fi
+	dnl }}}
+	dnl fortran{{{
+	AC_ARG_WITH([fortran],
+		AS_HELP_STRING([--with-fortran = YES], [do we compile fortran code (default is yes)]),
+		[FORTRAN=$withval],[FORTRAN=yes]) 
+	AC_MSG_CHECKING(for fortran compilation)
+	if test "x$FORTRAN" = "xyes"; then
+		dnl defaults
+		HAVE_FORTRAN=yes
+		AC_DEFINE([_HAVE_FORTRAN_],[1],[with fortran capability])
+	else
+		HAVE_FORTRAN=no
+	fi
+	AM_CONDITIONAL([FORTRAN], [test x$FORTRAN = xyes])
+	AC_MSG_RESULT($FORTRAN)
+
+	if test "x$FORTRAN" = "xyes"; then
+		dnl fortran library  option
+		AC_MSG_CHECKING(for fortran library)
+		AC_ARG_WITH([fortran-lib],
+		  AS_HELP_STRING([--with-fortran-lib = options],[fortran options, for ex: "/usr/lib/gfortran.a]),
+			[FORTRAN_LIB=$withval],[FORTRAN_LIB=""])
+
+		dnl check that --with-fortran-lib may have been provided
+		if test -n "$FORTRAN_LIB" ; then
+			dnl check that library provided EXISTS!
+		   FORTRAN_DIR=$(echo $FORTRAN_LIB | sed -e "s/-L//g" | awk '{print $[1]}')
+			if test -d "$FORTRAN_DIR" || test -f "$FORTRAN_DIR"; then
+				FORTRANLIB="$FORTRAN_LIB"
+				AC_DEFINE([_HAVE_FORTRAN_],[1],[with FORTRAN in ISSM src])
+				AC_SUBST([FORTRANLIB])
+			else
+			 if test "x$HAVE_MPI" = "xyes"; then
+				FORTRANLIB=$(mpif77 -print-file-name="libgfortran.a")
+				if test -f "$FORTRANLIB"; then
+					 AC_MSG_ERROR([fortran library provided ($FORTRAN_LIB) does not exist, MPI suggests the following library: $FORTRANLIB]);
+				fi
+			 fi
+				AC_MSG_ERROR([fortran library provided ($FORTRAN_LIB) does not exist!]);
+			fi
+		fi
+		AC_MSG_RESULT(done)
+	fi
+	dnl }}}
+	dnl graphics{{{
+	AC_MSG_CHECKING(for graphics library)
+	AC_ARG_WITH([graphics-lib],
+	  AS_HELP_STRING([--with-graphics-lib = options],[graphics options, for ex: "/usr/X11/lib/libX11.a]),
+	  [GRAPHICS_LIB=$withval],[GRAPHICS_LIB=""])
+
+	dnl check that --with-graphics-lib may have been provided
+	if test -n "$GRAPHICS_LIB" ; then
+		dnl check that library provided EXISTS!
+		GRAPHICS_DIR=$(echo $GRAPHICS_LIB | sed -e "s/-L//g" | awk '{print $[1]}')
+		if test -d "$GRAPHICS_DIR" || test -f "$GRAPHICS_DIR"; then
+			HAVE_GRAPHICS=yes
+			GRAPHICSLIB="$GRAPHICS_LIB"
+			AC_DEFINE([_HAVE_GRAPHICS_],[1],[with GRAPHICS in ISSM src])
+			AC_SUBST([GRAPHICSLIB])
+		else
+			if test -f "$PETSC_ROOT/conf/petscvariables"; then
+				GRAPHICSLIB=$(cat $PETSC_ROOT/conf/petscvariables | grep X_LIB)
+				AC_MSG_ERROR([graphics library provided ($GRAPHICS_LIB) does not exist, PETSc suggests the following library: $GRAPHICSLIB]);
+			fi
+			AC_MSG_ERROR([graphics library provided ($GRAPHICS_LIB$) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT(done)
+	dnl }}}
+	dnl meteoio{{{
+	AC_ARG_WITH([meteoio-dir],
+	  AS_HELP_STRING([--with-meteoio-dir=DIR], [use meteoio in conjunction with snowpack model.]),
+	  [METEOIO_ROOT=$withval],[METEOIO_ROOT="no"]) 
+
+	dnl Check whether meteoio is enabled
+	AC_MSG_CHECKING([for meteoio])
+	if test "x$METEOIO_ROOT" = "xno" ; then
+		HAVE_METEOIO=no
+	else
+		HAVE_METEOIO=yes
+		if ! test -d "$METEOIO_ROOT"; then
+			AC_MSG_ERROR([meteoio directory provided ($METEOIO_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_METEOIO)
+	
+	dnl meteoio headers and libraries
+	if test "x$HAVE_METEOIO" == "xyes"; then
+		METEOIOINCL="-I$METEOIO_ROOT/include"
+		METEOIOLIB="-dy -L$METEOIO_ROOT/lib  -lmeteoio "
+
+		AC_DEFINE([_HAVE_METEOIO_],[1],[with meteoio])
+		AC_SUBST([METEOIOINCL])
+		AC_SUBST([METEOIOLIB])
+	fi
+	AM_CONDITIONAL([METEOIO], [test x$HAVE_METEOIO = xyes])
+	dnl }}}
+	dnl snowpack{{{
+	AC_ARG_WITH([snowpack-dir],
+	  AS_HELP_STRING([--with-snowpack-dir=DIR], [use snowpack for surface mass balance model.]),
+	  [SNOWPACK_ROOT=$withval],[SNOWPACK_ROOT="no"]) 
+
+	dnl Check whether snowpack is enabled
+	AC_MSG_CHECKING([for snowpack])
+	if test "x$SNOWPACK_ROOT" = "xno" ; then
+		HAVE_SNOWPACK=no
+	else
+		HAVE_SNOWPACK=yes
+		if ! test -d "$SNOWPACK_ROOT"; then
+			AC_MSG_ERROR([snowpack directory provided ($SNOWPACK_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_SNOWPACK)
+	
+	dnl snowpack headers and libraries
+	if test "x$HAVE_SNOWPACK" == "xyes"; then
+		SNOWPACKINCL="-I$SNOWPACK_ROOT/include"
+		SNOWPACKLIB="-dy -L$SNOWPACK_ROOT/lib  -lsnowpack "
+
+		AC_DEFINE([_HAVE_SNOWPACK_],[1],[with snowpack for surface mass balance model])
+		AC_SUBST([SNOWPACKINCL])
+		AC_SUBST([SNOWPACKLIB])
+	fi
+	AM_CONDITIONAL([SNOWPACK], [test x$HAVE_SNOWPACK = xyes])
+	dnl }}}
+
+	dnl Capabilities
+	dnl with-bamg{{{
+	AC_ARG_WITH([bamg],
+		AS_HELP_STRING([--with-bamg = YES],[compile with bamg capabilities (default is yes)]),
+		[BAMG=$withval],[BAMG=yes]) 
+	AC_MSG_CHECKING(for bamg capability compilation)
+
+	HAVE_BAMG=no
+	if test "x$BAMG" = "xyes"; then
+		HAVE_BAMG=yes
+		AC_DEFINE([_HAVE_BAMG_],[1],[with bamg meshing capability])
+	fi
+	AM_CONDITIONAL([BAMG], [test x$HAVE_BAMG = xyes])
+	AC_MSG_RESULT($HAVE_BAMG)
+	dnl }}}
+	dnl with-kml{{{
+	AC_ARG_WITH([kml],
+		AS_HELP_STRING([--with-kml = YES],[compile with kml capabilities (default is yes)]),
+		[KML=$withval],[KML=yes]) 
+	AC_MSG_CHECKING(for kml capability compilation)
+
+	HAVE_KML=no
+	if test "x$KML" = "xyes"; then
+		HAVE_KML=yes
+		AC_DEFINE([_HAVE_KML_],[1],[with kml capability])
+	fi
+	AM_CONDITIONAL([KML], [test x$HAVE_KML = xyes])
+	AC_MSG_RESULT($HAVE_KML)
+	dnl }}}
+	dnl with-kriging{{{
+	AC_ARG_WITH([kriging],
+		AS_HELP_STRING([--with-kriging = YES],[compile with kriging capabilities (default is yes)]),
+		[KRIGING=$withval],[KRIGING=yes]) 
+	AC_MSG_CHECKING(for kriging capability compilation)
+
+	HAVE_KRIGING=no
+	if test "x$KRIGING" = "xyes"; then
+		HAVE_KRIGING=yes
+		AC_DEFINE([_HAVE_KRIGING_],[1],[with kriging capability])
+	fi
+	AM_CONDITIONAL([KRIGING], [test x$HAVE_KRIGING = xyes])
+	AC_MSG_RESULT($HAVE_KRIGING)
+	dnl }}}
+	AX_ANALYSES_SELECTION
+
+	dnl Platform specifics
+	dnl with-ios{{{
+	AC_ARG_WITH([ios],
+		AS_HELP_STRING([--with-ios = YES], [compile with iOS capabilities (default is no, alternatives are yes)]),
+		[IOS=$withval],[IOS=no]) 
+	AC_MSG_CHECKING(for iOS compilation)
+
+	if test "x$IOS" = "xyes"; then
+		dnl defaults
+		HAVE_IOS=yes
+
+		AC_DEFINE([_HAVE_IOS_],[1],[with android capability])
+	elif test "x$IOS" = "xno"; then
+		HAVE_IOS=no
+	else
+	  AC_MSG_ERROR([--with-ios should be either no or yes])
+	fi
+	AM_CONDITIONAL([IOS], [test x$HAVE_IOS != xno])
+	AC_MSG_RESULT($HAVE_IOS)
+	dnl }}}
+	dnl with-android{{{
+	AC_ARG_WITH([android],
+		AS_HELP_STRING([--with-android = EXE], [compile with android capabilities (default is no, alternatives are exe and jni)]),
+		[ANDROID=$withval],[ANDROID=no]) 
+	AC_MSG_CHECKING(for android capability compilation)
+
+	if test "x$ANDROID" = "xjni"; then
+
+		dnl defaults
+		HAVE_ANDROID=jni
+		AC_DEFINE([_HAVE_ANDROID_],[1],[with android capability])
+		AC_DEFINE([_HAVE_ANDROID_JNI_],[1],[with android jni])
+	elif test "x$ANDROID" = "xexe"; then
+		dnl defaults
+		HAVE_ANDROID=exe
+
+		AC_DEFINE([_HAVE_ANDROID_],[1],[with android capability])
+	elif test "x$ANDROID" = "xno"; then
+		HAVE_ANDROID=no
+	else
+	  AC_MSG_ERROR([--with-android should be either no, exe or jni])
+	fi
+	AM_CONDITIONAL([ANDROID], [test x$HAVE_ANDROID != xno])
+	AM_CONDITIONAL([ANDROIDJNI], [test x$HAVE_ANDROID = xjni])
+	AM_CONDITIONAL([ANDROIDEXE], [test x$HAVE_ANDROID = xexe])
+	AC_MSG_RESULT($HAVE_ANDROID)
+	dnl }}}
+	dnl with-android-ndk{{{
+	AC_ARG_WITH([android-ndk],
+	  AS_HELP_STRING([--with-android-ndk=DIR], [android-ndk root directory.]),
+	  [ANDROID_NDK_ROOT=$withval],[ANDROID_NDK_ROOT=""]) 
+	AC_MSG_CHECKING(with android ndk)
+	
+	if test -d "$ANDROID_NDK_ROOT"; then
+		dnl defaults
+		HAVE_ANDROID_NDK=yes
+		ANDROID_NDKINCL="-I$ANDROID_NDK_ROOT/arm-linux-android-install/sysroot/usr/include"
+
+		AC_DEFINE([_HAVE_ANDROID_NDK_],[1],[with android ndk in ISSM src])
+		AC_SUBST([ANDROID_NDKINCL])
+	else
+		HAVE_ANDROID_NDK=no
+	fi
+	AC_MSG_RESULT($HAVE_ANDROID_NDK)
+	dnl }}}
+
+	dnl other options
+	dnl optimization{{{
+	dnl bypass standard optimization -g -O2 ? 
+	AC_ARG_WITH([cxxoptflags],
+	  AS_HELP_STRING([--with-cxxoptflags = CXXOPTFLAGS], [optimization using CXX flags, ex: --with-cxxoptflags=-march=opteron -O3]),
+	  [CXXOPTFLAGS=$withval],[CXXOPTFLAGS="-g -O2 -fPIC"]) 
+	AC_MSG_CHECKING(for c++ optimization flags)
+	AC_SUBST([CXXOPTFLAGS])
+	AC_MSG_RESULT(done)
+
+	dnl }}}
+	dnl multithreading{{{
+	AC_ARG_WITH([numthreads],
+	  AS_HELP_STRING([--with-numthreads = NUMTHREADS_VALUE],[numthreads, default is 1. ]),
+	  [NUMTHREADS_VALUE=$withval],[NUMTHREADS_VALUE=1])
+	AC_MSG_CHECKING(for number of threads)
+	dnl defaults
+	MULTITHREADING=no
+	MULTITHREADINLIB=""
+	if test "$NUMTHREADS_VALUE" != "1"; then
+		
+		MULTITHREADINGLIB="-lpthread -lrt"
+		case "${host_os}" in
+		*cygwin*)
+		MULTITHREADINGLIB="-lpthread -lrt"
+		;;
+		*linux*)
+		MULTITHREADINGLIB="-lpthread -lrt"
+		;;
+		*darwin*)
+		MULTITHREADINGLIB="-lpthread"
+		;;
+		esac
+		AC_DEFINE([_MULTITHREADING_],[1],[with numthreads enabled])
+	fi
+	AC_DEFINE_UNQUOTED([_NUMTHREADS_],[$NUMTHREADS_VALUE],[number of threads])
+	AC_SUBST([MULTITHREADINGLIB])
+	AC_MSG_RESULT($NUMTHREADS_VALUE) 
+	dnl }}}
+	dnl 64bit {{{
+	AC_ARG_WITH([64bit-indices],
+	  AS_HELP_STRING([--with-64bit-indices = bool], [use 64 bit integers, default 0, ex: --with-64bit-indices=1]),
+	  [USE_64BIT_INDICES=$withval],[USE_64BIT_INDICES=0]) 
+	AC_MSG_CHECKING(for 64 bit indices)
+
+	if test "$USE_64BIT_INDICES" == "1"; then
+	AC_DEFINE([ISSM_USE_64BIT_INDICES],[1],[with 64 bits indices])
+	else
+	AC_DEFINE([ISSM_USE_64BIT_INDICES],[0],[with 64 bits indices])
+	fi
+	AC_MSG_RESULT($USE_64BIT_INDICES)
+	dnl }}}
+
+	dnl Checks
+	dnl checks{{{
+		AC_MSG_CHECKING(consistency between all libraries)
+
+		  dnl check that if petsc is requested , mpi should be specified
+		  if test "$HAVE_PETSC" = "yes" ; then
+				if test "$HAVE_MPI" = "NO";  then
+					 AC_MSG_ERROR([petsc requires mpi!]);
+				fi
+		  fi
+
+		  dnl check that we have either python or matlab support if we compile the modules
+		  if test "$MODULES_VALUE" = "yes"  && test "$HAVE_MATLAB" = "no" && test "$HAVE_PYTHON" = "no"; then
+				AC_MSG_ERROR([need at least python or matlab support to compile modules (or use --with-modules=no)]);
+		  fi
+
+		  dnl check that if we have MPI, we have metis
+		  if test "$HAVE_METIS" = "yes"  && test "$HAVE_MPI" = "no" ; then
+				AC_MSG_ERROR([need mpi if using the metis partitioner!]);
+		  fi
+		
+		dnl check that if we run adolc, we don't compile krigging.exe
+		if test "$HAVE_ADOLC" = "yes"  && test "$HAVE_KRIGING" = "yes" ; then
+			AC_MSG_ERROR([cannot compile kriging.exe under adolc conditions!]);
+		fi
+		dnl check that if we run adolc, we don't use PETSc for now
+		if test "$HAVE_ADOLC" = "yes"  && test "$HAVE_PETSC" = "yes" ; then
+			AC_MSG_ERROR([cannot compile ISSM with both PETSc and adolc]);
+		fi
+		dnl check that if we run meteoio, we have snowpack also
+		if test "$HAVE_METEOIO" = "yes"  && test "$HAVE_SNOWPACK" = "no" ; then
+			AC_MSG_ERROR([cannot compile MeteoIO package without Snowpack!]);
+		fi
+		dnl check that if we run snowpack, we have meteoio also
+		if test "$HAVE_METEOIO" = "no"  && test "$HAVE_SNOWPACK" = "yes" ; then
+			AC_MSG_ERROR([cannot compile Snowpack package without MeteoIO!]);
+		fi
+
+		AC_MSG_RESULT(done)
+		dnl }}}
+])
Index: /issm/branches/trunk-larour-NatClimateChange2016/packagers/macosx-dakota/package.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/packagers/macosx-dakota/package.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/packagers/macosx-dakota/package.sh	(revision 21239)
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+echo "modify generic" 
+cd $ISSM_DIR/bin
+cat generic_static.m | sed -e "s/generic_static/generic/g" > generic.m
+echo "move mpiexec to bin" 
+cp ../externalpackages/mpich/install/bin/mpiexec .
+cp ../externalpackages/mpich/install/bin/hydra_pmi_proxy .
+
+#Check that test101 runs
+cd $ISSM_DIR/test/NightlyRun
+rm matlab.log
+$MATLAB_DIR/bin/matlab -nojvm -nosplash -r "try, addpath $ISSM_DIR/bin $ISSM_DIR/lib; runme('id',101);exit; catch me,fprintf('%s',getReport(me)); exit; end" -logfile matlab.log
+
+if [[ $(cat matlab.log | grep -c SUCCESS) -lt 10 ]]; then
+	echo "test101 FAILED"
+	exit 1;
+else
+	echo "test101 passed"
+fi
+
+#Package using the Package Maker from OSX, driven by command line.
+tarball_name='issm-mac-dakota-static_build.tar.gz'
+
+echo "Cleanup first" 
+cd $ISSM_DIR
+rm $tarball_name
+
+echo "Creating tarball: ${tarball_name}"
+cd $ISSM_DIR
+rm -rf trunk
+mkdir trunk
+cp -rf bin lib test examples trunk/
+tar -czf $tarball_name trunk
+ls -lah $tarball_name
+
+echo "Shipping binaries to website"
+
+# We're using public key authentication method to upload the tarball. The
+# following lines check to see if the SSH Agent is running. If not, then it is
+# started and relevant information is forwarded to a script.
+pgrep "ssh-agent" > /dev/null
+if [ $? -ne 0 ]; then
+	echo "SSH Agent is not running. Starting it..."
+	ssh-agent > ~/.ssh/agent.sh
+else
+	echo "SSH Agent is running..."
+fi
+
+source ~/.ssh/agent.sh
+ssh-add ~/.ssh/macosx-bins_richese-to-ross
+
+scp $tarball_name ross.ics.uci.edu:/var/www/html/$tarball_name
+
+if [ $? -ne 0 ]; then
+	echo "The upload failed."
+	echo "Perhaps the SSH Agent was started by some other means."
+	echo "Try killing the agent and running again."
+fi
Index: /issm/branches/trunk-larour-NatClimateChange2016/packagers/macosx/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/packagers/macosx/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/packagers/macosx/install.sh	(revision 21239)
@@ -0,0 +1,136 @@
+#!/bin/bash
+
+# ISSM_DIR and MATLAB_DIR must be set correctly.
+# {{{
+if [ "${ISSM_DIR}x" == "x" ]; then
+   echo "ISSM_DIR is not set!" >&2
+   exit 1;
+elif [ -d ${ISSM_DIR} ]; then
+   echo "ISSM_DIR: ${ISSM_DIR}"
+else
+   echo "ISSM_DIR: ${ISSM_DIR} does not exist!" >&2
+   exit 1;
+fi
+
+if [ "${MATLAB_DIR}x" == "x" ]; then
+   echo "MATLAB_DIR is not set!"
+   exit 1;
+elif [ -d ${MATLAB_DIR} ]; then
+   echo "MATLAB_DIR: ${MATLAB_DIR}"
+else
+   echo "MATLAB_DIR: ${MATLAB_DIR} does not exist!" >&2
+   exit 1;
+fi
+# }}}
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools install.sh                
+                  mpich     install-3.0-macosx64-static.sh
+                  cmake     install.sh                
+                  petsc     install-3.5-macosx64-static.sh
+						m1qn3     install.sh    
+                  triangle  install-macosx64.sh "
+
+# Install Externalpackages
+# {{{
+
+#Files source environment to make sure installed packages are in PATH
+source $ISSM_DIR/etc/environment.sh
+
+#number of packages: 
+NUMPACKAGES=$(($(echo $EXTERNALPACKAGES | wc -w )/2))
+
+for ((i=1;i<=$NUMPACKAGES;i++))
+do
+	NUM1=$((2*$i-1))
+	NUM2=$((2*$i))
+	PACKAGENAME=$(echo $EXTERNALPACKAGES | cut -d " " -f $NUM1-$NUM1)
+	PACKAGEINST=$(echo $EXTERNALPACKAGES | cut -d " " -f $NUM2-$NUM2)
+
+	cd $ISSM_DIR/externalpackages/$PACKAGENAME
+
+	if [[ $PACKAGEINST -nt  install ]]; then 
+		#go ahead and reinstall. 
+		echo "Triggering new install of $PACKAGENAME"
+		install_test=1
+	else
+		#ok, we want to skip, unless the package is not installed: 
+		if [ -d install ]; then 
+			#could be empty, signaling a failed previous install: 
+			if [ "$(ls -A install)" ];then
+				echo "and install directory exists, so skipping install of $PACKAGENAME"
+				install_test=0;
+			else
+				echo "and install directory exists, however, it is empty, so triggering install of $PACKAGENAME"
+				install_test=1;
+			fi
+		else
+			echo "However, install directory does not exist, so triggering install of $PACKAGENAME"
+			install_test=1;
+		fi
+	fi
+
+	if [[ $install_test == 1 ]]; then 
+		echo "======================================================";
+		echo "       Installing $PACKAGENAME                        ";
+		echo "======================================================";
+		./$PACKAGEINST |  tee compil.log
+		if [ $? -ne 0 ]; then
+			echo "======================================================";
+			echo "    ERROR: installation of $PACKAGENAME failed        ";
+			echo "======================================================";
+			#erase install directory, so that next time, we still try and compile this!
+			rm -rf install
+		fi
+		source $ISSM_DIR/etc/environment.sh
+	else
+		echo "======================================================";
+		echo "       Skipping install of $PACKAGENAME                        ";
+		echo "======================================================";
+	fi
+	cd ..
+done
+# }}}
+
+# Compile ISSM
+#{{{
+cd $ISSM_DIR
+echo "Uinstalling..."
+make uninstall
+echo "Cleaning..."
+make clean
+echo "Even cleaner..."
+make distclean
+echo "Aureconf..."
+autoreconf -if
+echo "Configuring..."
+./configure \
+	--prefix=$ISSM_DIR \
+	--disable-static \
+	--enable-standalone-executables \
+	--enable-standalone-libraries \
+	--with-matlab-dir="/Applications/MATLAB_R2011b.app/" \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install  \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags=" -L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich -lpmpich" \
+	--with-fortran-lib="/usr/local/lib/libgfortran.a" \
+	--enable-debugging \
+	--with-numthreads=4
+
+
+if [ $? -ne 0 ]; then echo "FAILED TO CONFIGURE!" && exit 1; fi
+
+echo "Building..."
+make -j 4 
+if [ $? -ne 0 ]; then echo "FAILED TO BUILD!" && exit 1; fi
+
+echo "Installing..."
+make install 
+if [ $? -ne 0 ]; then echo "FAILED TO INSTALL!" && exit 1; fi
+#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/packagers/macosx/package.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/packagers/macosx/package.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/packagers/macosx/package.sh	(revision 21239)
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+echo "modify generic" 
+cd $ISSM_DIR/bin
+cat generic_static.m | sed -e "s/generic_static/generic/g" > generic.m
+echo "move mpiexec to bin" 
+cp ../externalpackages/mpich/install/bin/mpiexec .
+cp ../externalpackages/mpich/install/bin/hydra_pmi_proxy .
+
+#Check that test101 runs
+cd $ISSM_DIR/test/NightlyRun
+rm matlab.log
+$MATLAB_DIR/bin/matlab -nojvm -nosplash -r "try, addpath $ISSM_DIR/bin $ISSM_DIR/lib; runme('id',101);exit; catch me,fprintf('%s',getReport(me)); exit; end" -logfile matlab.log
+
+if [[ $(cat matlab.log | grep -c SUCCESS) -lt 10 ]]; then
+	echo "test101 FAILED"
+	exit 1;
+else
+	echo "test101 passed"
+fi
+
+#Package using the Package Maker from OSX, driven by command line.
+tarball_name='issm-mac-static_build.tar.gz'
+
+echo "Cleanup first" 
+cd $ISSM_DIR
+rm $tarball_name
+
+echo "Creating tarball: ${tarball_name}"
+cd $ISSM_DIR
+rm -rf trunk
+mkdir trunk
+cp -rf bin lib test examples trunk/
+tar -czf $tarball_name trunk
+ls -lah $tarball_name
+
+echo "Shipping binaries to website"
+
+# We're using public key authentication method to upload the tarball The
+# following lines check to see if the SSH Agent is running. If not, then it is
+# started and relevant information is forwarded to a script.
+pgrep "ssh-agent" > /dev/null
+if [ $? -ne 0 ]; then
+	echo "SSH Agent is not running. Starting it..."
+	ssh-agent > ~/.ssh/agent.sh
+else
+	echo "SSH Agent is running..."
+fi
+
+source ~/.ssh/agent.sh
+ssh-add ~/.ssh/macosx-bins_richese-to-ross
+
+scp $tarball_name ross.ics.uci.edu:/var/www/html/$tarball_name
+
+if [ $? -ne 0 ]; then
+	echo "The upload failed."
+	echo "Perhaps the SSH Agent was started by some other means."
+	echo "Try killing the agent and running again."
+fi
Index: /issm/branches/trunk-larour-NatClimateChange2016/packagers/ubuntu/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/packagers/ubuntu/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/packagers/ubuntu/install.sh	(revision 21239)
@@ -0,0 +1,130 @@
+#!/bin/bash
+
+# ISSM_DIR and MATLAB_DIR must be set correctly.
+# {{{
+if [ "${ISSM_DIR}x" == "x" ]; then
+   echo "ISSM_DIR is not set!" >&2
+   exit 1;
+elif [ -d ${ISSM_DIR} ]; then
+   echo "ISSM_DIR: ${ISSM_DIR}"
+else
+   echo "ISSM_DIR: ${ISSM_DIR} does not exist!" >&2
+   exit 1;
+fi
+
+if [ "${MATLAB_DIR}x" == "x" ]; then
+   echo "MATLAB_DIR is not set!"
+   exit 1;
+elif [ -d ${MATLAB_DIR} ]; then
+   echo "MATLAB_DIR: ${MATLAB_DIR}"
+else
+   echo "MATLAB_DIR: ${MATLAB_DIR} does not exist!" >&2
+   exit 1;
+fi
+# }}}
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools install.sh                
+						mpich     install-3.0-linux64.sh
+                  cmake     install.sh                
+                  petsc     install-3.5-linux64-static.sh
+						m1qn3     install.sh    
+                  triangle  install-linux64.sh "
+
+# Install Externalpackages
+# {{{
+
+#Files source environment to make sure installed packages are in PATH
+source $ISSM_DIR/etc/environment.sh
+
+#number of packages: 
+NUMPACKAGES=$(($(echo $EXTERNALPACKAGES | wc -w )/2))
+
+for ((i=1;i<=$NUMPACKAGES;i++))
+do
+	NUM1=$((2*$i-1))
+	NUM2=$((2*$i))
+	PACKAGENAME=$(echo $EXTERNALPACKAGES | cut -d " " -f $NUM1-$NUM1)
+	PACKAGEINST=$(echo $EXTERNALPACKAGES | cut -d " " -f $NUM2-$NUM2)
+
+	cd $ISSM_DIR/externalpackages/$PACKAGENAME
+
+	if [[ $PACKAGEINST -nt  install ]]; then 
+		#go ahead and reinstall. 
+		echo "Triggering new install of $PACKAGENAME"
+		install_test=1
+	else
+		#ok, we want to skip, unless the package is not installed: 
+		if [ -d install ]; then 
+			#could be empty, signaling a failed previous install: 
+			if [ "$(ls -A install)" ];then
+				echo "and install directory exists, so skipping install of $PACKAGENAME"
+				install_test=0;
+			else
+				echo "and install directory exists, however, it is empty, so triggering install of $PACKAGENAME"
+				install_test=1;
+			fi
+		else
+			echo "However, install directory does not exist, so triggering install of $PACKAGENAME"
+			install_test=1;
+		fi
+	fi
+
+	if [[ $install_test == 1 ]]; then 
+		echo "======================================================";
+		echo "       Installing $PACKAGENAME                        ";
+		echo "======================================================";
+		./$PACKAGEINST |  tee compil.log
+		if [ $? -ne 0 ]; then
+			echo "======================================================";
+			echo "    ERROR: installation of $PACKAGENAME failed        ";
+			echo "======================================================";
+			#erase install directory, so that next time, we still try and compile this!
+			rm -rf install
+		fi
+		source $ISSM_DIR/etc/environment.sh
+	else
+		echo "======================================================";
+		echo "       Skipping install of $PACKAGENAME                        ";
+		echo "======================================================";
+	fi
+	cd ..
+done
+# }}}
+
+# Compile ISSM
+#{{{
+cd $ISSM_DIR
+echo "Aureconf..."
+autoreconf -if
+echo "Configuring..."
+./configure \
+	--prefix=$ISSM_DIR \
+	--disable-static \
+	--enable-standalone-executables \
+	--enable-standalone-libraries \
+	--with-matlab-dir="/usr/local/matlab80/" \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install  \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags=" -L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich -lmpl " \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.6/ -lgfortran" \
+	--enable-debugging \
+	--with-numthreads=4
+
+
+if [ $? -ne 0 ]; then echo "FAILED TO CONFIGURE!" && exit 1; fi
+
+echo "Building..."
+make -j 8
+if [ $? -ne 0 ]; then echo "FAILED TO BUILD!" && exit 1; fi
+
+echo "Installing..."
+make install 
+if [ $? -ne 0 ]; then echo "FAILED TO INSTALL!" && exit 1; fi
+#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/packagers/ubuntu/package.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/packagers/ubuntu/package.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/packagers/ubuntu/package.sh	(revision 21239)
@@ -0,0 +1,56 @@
+#!/bin/bash
+
+echo "modify generic" 
+cd $ISSM_DIR/bin
+cat generic_static.m | sed -e "s/generic_static/generic/g" > generic.m
+echo "move mpiexec to bin" 
+
+#Check that test101 runs
+cd $ISSM_DIR/test/NightlyRun
+rm matlab.log
+$MATLAB_DIR/bin/matlab -nojvm -nosplash -r "try, addpath $ISSM_DIR/bin $ISSM_DIR/lib; runme('id',101);exit; catch me,fprintf('%s',getReport(me)); exit; end" -logfile matlab.log
+
+if [[ $(cat matlab.log | grep -c SUCCESS) -lt 10 ]]; then
+	echo "test101 FAILED"
+	exit 1;
+else
+	echo "test101 passed"
+fi
+
+tarball_name='issm-ubuntu-static_build.tar.gz'
+
+echo "Cleanup first" 
+cd $ISSM_DIR
+rm $tarball_name
+
+echo "Creating tarball: ${tarball_name}"
+cd $ISSM_DIR
+rm -rf trunk
+mkdir trunk
+cp -rf bin lib test examples trunk/
+tar -czf $tarball_name trunk
+ls -lah $tarball_name
+
+echo "Shipping binaries to website"
+
+# We're using public key authentication method to upload the tarball The
+# following lines check to see if the SSH Agent is running. If not, then it is
+# started and relevant information is forwarded to a script.
+pgrep "ssh-agent" > /dev/null
+if [ $? -ne 0 ]; then
+	echo "SSH Agent is not running. Starting it..."
+	ssh-agent > ~/.ssh/agent.sh
+else
+	echo "SSH Agent is running..."
+fi
+
+source ~/.ssh/agent.sh
+ssh-add ~/.ssh/ubuntu-bins_jenkins-to-ross
+
+scp $tarball_name ross.ics.uci.edu:/var/www/html/$tarball_name
+
+if [ $? -ne 0 ]; then
+	echo "The upload failed."
+	echo "Perhaps the SSH Agent was started by some other means."
+	echo "Try killing the agent and running again."
+fi
Index: /issm/branches/trunk-larour-NatClimateChange2016/packagers/win7/ISSM.initial.aip
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/packagers/win7/ISSM.initial.aip	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/packagers/win7/ISSM.initial.aip	(revision 21239)
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<DOCUMENT Type="Advanced Installer" CreateVersion="8.9" version="10.1" Modules="simple" RootPath="." Language="en" Id="{36DC7549-63BC-4A22-AE82-A96C27BF7B21}">
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiPropsComponent">
+    <ROW Property="ALLUSERS" Value="2"/>
+    <ROW Property="ARPCOMMENTS" Value="This installer database contains the logic and data required to install [|ProductName]." ValueLocId="*"/>
+    <ROW Property="ARPCONTACT" Value="Eric Larour, Helene Seroussi and Mathieu Morlighem"/>
+    <ROW Property="ARPHELPTELEPHONE" Value="001 (818) 393-2435"/>
+    <ROW Property="ARPURLINFOABOUT" Value="http://issm.jpl.nasa.gov"/>
+    <ROW Property="CTRLS" Value="1"/>
+    <ROW Property="Manufacturer" Value="JPL-UCI" ValueLocId="*"/>
+    <ROW Property="ProductCode" Value="1033:{387D11EC-1489-4A6F-8CA2-BA65601C19BE} " Type="16"/>
+    <ROW Property="ProductLanguage" Value="1033"/>
+    <ROW Property="ProductName" Value="ISSM" ValueLocId="*"/>
+    <ROW Property="ProductVersion" Value="1.0" Type="32"/>
+    <ROW Property="SecureCustomProperties" Value="OLDPRODUCTS;AI_NEWERPRODUCTFOUND"/>
+    <ROW Property="UpgradeCode" Value="{F12D1A74-5079-41A3-A02A-15754B89E390}"/>
+    <ROW Property="VIEWREADME" Value="1" Type="4"/>
+    <ROW Property="WindowsType9X" MultiBuildValue="DefaultBuild:Windows 9x/ME" ValueLocId="-"/>
+    <ROW Property="WindowsType9XDisplay" MultiBuildValue="DefaultBuild:Windows 9x/ME" ValueLocId="-"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiDirsComponent">
+    <ROW Directory="APPDIR" Directory_Parent="TARGETDIR" DefaultDir="APPDIR:." IsPseudoRoot="1"/>
+    <ROW Directory="AppDataFolder" Directory_Parent="TARGETDIR" DefaultDir="AppDat~1|AppDataFolder" IsPseudoRoot="1"/>
+    <ROW Directory="DesktopFolder" Directory_Parent="TARGETDIR" DefaultDir="Deskto~1|DesktopFolder" IsPseudoRoot="1"/>
+    <ROW Directory="InternetExplorer_Dir" Directory_Parent="Microsoft_Dir" DefaultDir="Intern~1|Internet Explorer"/>
+    <ROW Directory="Microsoft_Dir" Directory_Parent="AppDataFolder" DefaultDir="Micros~1|Microsoft"/>
+    <ROW Directory="QuickLaunch_Dir" Directory_Parent="InternetExplorer_Dir" DefaultDir="QuickL~1|Quick Launch"/>
+    <ROW Directory="SHORTCUTDIR" Directory_Parent="TARGETDIR" DefaultDir="SHORTC~1|SHORTCUTDIR" IsPseudoRoot="1"/>
+    <ROW Directory="StartMenuFolder" Directory_Parent="TARGETDIR" DefaultDir="StartM~1|StartMenuFolder" IsPseudoRoot="1"/>
+    <ROW Directory="TARGETDIR" DefaultDir="SourceDir"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiCompsComponent">
+    <ROW Component="ProductInformation" ComponentId="{9BA1DCE1-2716-4161-BFC1-9427FF450B3F}" Directory_="APPDIR" Attributes="4" KeyPath="Version"/>
+    <ROW Component="QuickLaunch" ComponentId="{73BCCA29-216A-4FD5-A030-FFEAC0435857}" Directory_="QuickLaunch_Dir" Attributes="0"/>
+    <ROW Component="SHORTCUTDIR" ComponentId="{92285889-F321-4F14-B289-6895275D45D7}" Directory_="SHORTCUTDIR" Attributes="0"/>
+    <ROW Component="matlabissm.bat" ComponentId="{239E0327-22CA-433B-B84D-609A42F7F608}" Directory_="APPDIR" Attributes="0" KeyPath="matlabissm.bat" Type="0"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiFeatsComponent">
+    <ROW Feature="MainFeature" Title="MainFeature" Description="Description" Display="1" Level="1" Directory_="APPDIR" Attributes="0" Components="ProductInformation QuickLaunch SHORTCUTDIR matlabissm.bat"/>
+    <ATTRIBUTE name="CurrentFeature" value="MainFeature"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiFilesComponent">
+    <ROW File="README.rtf" Component_="matlabissm.bat" FileName="README.rtf" Attributes="0" SourcePath="..\..\bin\README.rtf" SelfReg="false"/>
+    <ROW File="matlabissm.bat" Component_="matlabissm.bat" FileName="matlab~1.bat|matlabissm.bat" Attributes="0" SourcePath="..\..\scripts\matlabissm.bat" SelfReg="false" NextFile="README.rtf"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.BuildComponent">
+    <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" Languages="en" InstallationType="4" MsiPackageType="x64"/>
+    <ATTRIBUTE name="CurrentBuild" value="DefaultBuild"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.CacheComponent">
+    <ATTRIBUTE name="Enable" value="false"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent">
+    <ROW Path="&lt;AI_DICTS&gt;ui.ail"/>
+    <ROW Path="&lt;AI_DICTS&gt;ui_en.ail"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.FragmentComponent">
+    <ROW Fragment="CommonUI.aip" Path="&lt;AI_FRAGS&gt;CommonUI.aip"/>
+    <ROW Fragment="FolderDlg.aip" Path="&lt;AI_THEMES&gt;classic\fragments\FolderDlg.aip"/>
+    <ROW Fragment="MaintenanceTypeDlg.aip" Path="&lt;AI_THEMES&gt;classic\fragments\MaintenanceTypeDlg.aip"/>
+    <ROW Fragment="MaintenanceWelcomeDlg.aip" Path="&lt;AI_THEMES&gt;classic\fragments\MaintenanceWelcomeDlg.aip"/>
+    <ROW Fragment="SequenceDialogs.aip" Path="&lt;AI_THEMES&gt;classic\fragments\SequenceDialogs.aip"/>
+    <ROW Fragment="Sequences.aip" Path="&lt;AI_FRAGS&gt;Sequences.aip"/>
+    <ROW Fragment="StaticUIStrings.aip" Path="&lt;AI_FRAGS&gt;StaticUIStrings.aip"/>
+    <ROW Fragment="UI.aip" Path="&lt;AI_THEMES&gt;classic\fragments\UI.aip"/>
+    <ROW Fragment="Validation.aip" Path="&lt;AI_FRAGS&gt;Validation.aip"/>
+    <ROW Fragment="VerifyRemoveDlg.aip" Path="&lt;AI_THEMES&gt;classic\fragments\VerifyRemoveDlg.aip"/>
+    <ROW Fragment="VerifyRepairDlg.aip" Path="&lt;AI_THEMES&gt;classic\fragments\VerifyRepairDlg.aip"/>
+    <ROW Fragment="WelcomeDlg.aip" Path="&lt;AI_THEMES&gt;classic\fragments\WelcomeDlg.aip"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiBinaryComponent">
+    <ROW Name="aicustact.dll" SourcePath="&lt;AI_CUSTACTS&gt;aicustact.dll"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiControlComponent">
+    <ATTRIBUTE name="FixedSizeBitmaps" value="0"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiControlEventComponent">
+    <ROW Dialog_="FolderDlg" Control_="Back" Event="NewDialog" Argument="WelcomeDlg" Condition="AI_INSTALL" Ordering="1"/>
+    <ROW Dialog_="WelcomeDlg" Control_="Next" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL" Ordering="1"/>
+    <ROW Dialog_="VerifyReadyDlg" Control_="Back" Event="NewDialog" Argument="FolderDlg" Condition="AI_INSTALL" Ordering="201"/>
+    <ROW Dialog_="FolderDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_INSTALL" Ordering="201"/>
+    <ROW Dialog_="VerifyReadyDlg" Control_="Install" Event="EndDialog" Argument="Return" Condition="AI_INSTALL" Ordering="197"/>
+    <ROW Dialog_="MaintenanceTypeDlg" Control_="Back" Event="NewDialog" Argument="MaintenanceWelcomeDlg" Condition="AI_MAINT" Ordering="1"/>
+    <ROW Dialog_="MaintenanceWelcomeDlg" Control_="Next" Event="NewDialog" Argument="MaintenanceTypeDlg" Condition="AI_MAINT" Ordering="99"/>
+    <ROW Dialog_="CustomizeDlg" Control_="Back" Event="NewDialog" Argument="MaintenanceTypeDlg" Condition="AI_MAINT" Ordering="1"/>
+    <ROW Dialog_="MaintenanceTypeDlg" Control_="ChangeButton" Event="NewDialog" Argument="CustomizeDlg" Condition="AI_MAINT" Ordering="401"/>
+    <ROW Dialog_="VerifyReadyDlg" Control_="Back" Event="NewDialog" Argument="CustomizeDlg" Condition="AI_MAINT" Ordering="202"/>
+    <ROW Dialog_="CustomizeDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_MAINT" Ordering="101"/>
+    <ROW Dialog_="VerifyReadyDlg" Control_="Install" Event="EndDialog" Argument="Return" Condition="AI_MAINT" Ordering="198"/>
+    <ROW Dialog_="VerifyReadyDlg" Control_="Back" Event="NewDialog" Argument="PatchWelcomeDlg" Condition="AI_PATCH" Ordering="203"/>
+    <ROW Dialog_="PatchWelcomeDlg" Control_="Next" Event="NewDialog" Argument="VerifyReadyDlg" Condition="AI_PATCH" Ordering="201"/>
+    <ROW Dialog_="VerifyReadyDlg" Control_="Install" Event="EndDialog" Argument="Return" Condition="AI_PATCH" Ordering="199"/>
+    <ROW Dialog_="ResumeDlg" Control_="Install" Event="EndDialog" Argument="Return" Condition="AI_RESUME" Ordering="299"/>
+    <ROW Dialog_="VerifyRemoveDlg" Control_="Remove" Event="EndDialog" Argument="Return" Condition="AI_MAINT AND InstallMode = &quot;Remove&quot;" Ordering="299"/>
+    <ROW Dialog_="VerifyRepairDlg" Control_="Repair" Event="EndDialog" Argument="Return" Condition="AI_MAINT AND InstallMode = &quot;Repair&quot;" Ordering="399"/>
+    <ROW Dialog_="VerifyRemoveDlg" Control_="Back" Event="NewDialog" Argument="MaintenanceTypeDlg" Condition="AI_MAINT AND InstallMode = &quot;Remove&quot;" Ordering="1"/>
+    <ROW Dialog_="VerifyRepairDlg" Control_="Back" Event="NewDialog" Argument="MaintenanceTypeDlg" Condition="AI_MAINT AND InstallMode = &quot;Repair&quot;" Ordering="1"/>
+    <ROW Dialog_="MaintenanceTypeDlg" Control_="RemoveButton" Event="NewDialog" Argument="VerifyRemoveDlg" Condition="AI_MAINT AND InstallMode = &quot;Remove&quot;" Ordering="601"/>
+    <ROW Dialog_="MaintenanceTypeDlg" Control_="RepairButton" Event="NewDialog" Argument="VerifyRepairDlg" Condition="AI_MAINT AND InstallMode = &quot;Repair&quot;" Ordering="601"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiCreateFolderComponent">
+    <ROW Directory_="SHORTCUTDIR" Component_="SHORTCUTDIR"/>
+    <ROW Directory_="QuickLaunch_Dir" Component_="QuickLaunch"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiCustActComponent">
+    <ROW Action="AI_DOWNGRADE" Type="19" Target="4010"/>
+    <ROW Action="AI_InstallModeCheck" Type="1" Source="aicustact.dll" Target="UpdateInstallMode" WithoutSeq="true"/>
+    <ROW Action="AI_PREPARE_UPGRADE" Type="65" Source="aicustact.dll" Target="PrepareUpgrade"/>
+    <ROW Action="AI_RESTORE_LOCATION" Type="65" Source="aicustact.dll" Target="RestoreLocation"/>
+    <ROW Action="AI_ResolveKnownFolders" Type="1" Source="aicustact.dll" Target="AI_ResolveKnownFolders"/>
+    <ROW Action="AI_ResolveLocalizedCredentials" Type="1" Source="aicustact.dll" Target="GetLocalizedCredentials"/>
+    <ROW Action="AI_SHOW_LOG" Type="65" Source="aicustact.dll" Target="LaunchLogFile" WithoutSeq="true"/>
+    <ROW Action="AI_STORE_LOCATION" Type="51" Source="ARPINSTALLLOCATION" Target="[APPDIR]"/>
+    <ROW Action="AI_ViewReadme" Type="1" Source="aicustact.dll" Target="[#README.rtf]"/>
+    <ROW Action="SET_APPDIR" Type="307" Source="APPDIR" Target="[ProgramFilesFolder][Manufacturer]\[ProductName]" MultiBuildTarget="DefaultBuild:[ProgramFiles64Folder][Manufacturer]\[ProductName]"/>
+    <ROW Action="SET_SHORTCUTDIR" Type="307" Source="SHORTCUTDIR" Target="[ProgramMenuFolder][ProductName]"/>
+    <ROW Action="SET_TARGETDIR_TO_APPDIR" Type="51" Source="TARGETDIR" Target="[APPDIR]"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiEnvComponent">
+    <ROW Environment="ISSM_TESTS_1" Name="=-ISSM_TESTS" Value="[test_Dir]" Component_="ProductInformation"/>
+    <ROW Environment="ISSM_TIER" Name="=-ISSM_TIER" Value="[APPDIR]" Component_="ProductInformation"/>
+    <ROW Environment="ISSM_TIER_WIN" Name="=-ISSM_TIER_WIN" Value="[APPDIR]" Component_="ProductInformation"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiIconsComponent">
+    <ROW Name="matlabissm.exe" SourcePath="ISSMlogo.ico" Index="0"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiInstExSeqComponent">
+    <ROW Action="AI_DOWNGRADE" Condition="AI_NEWERPRODUCTFOUND AND (UILevel &lt;&gt; 5)" Sequence="210"/>
+    <ROW Action="AI_RESTORE_LOCATION" Condition="APPDIR=&quot;&quot;" Sequence="749"/>
+    <ROW Action="AI_STORE_LOCATION" Condition="(Not Installed) OR REINSTALL" Sequence="1501"/>
+    <ROW Action="AI_PREPARE_UPGRADE" Condition="AI_UPGRADE=&quot;No&quot; AND (Not Installed)" Sequence="1399"/>
+    <ROW Action="AI_ResolveKnownFolders" Sequence="52"/>
+    <ROW Action="AI_ResolveLocalizedCredentials" Sequence="51"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiInstallUISequenceComponent">
+    <ROW Action="AI_RESTORE_LOCATION" Condition="APPDIR=&quot;&quot;" Sequence="749"/>
+    <ROW Action="AI_ResolveKnownFolders" Sequence="52"/>
+    <ROW Action="AI_ResolveLocalizedCredentials" Sequence="51"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiLaunchConditionsComponent">
+    <ROW Condition="Privileged" Description="[ProductName] requires administrative privileges to install." DescriptionLocId="AI.LaunchCondition.Privileged" IsPredefined="true" Builds="DefaultBuild"/>
+    <ROW Condition="VersionNT" Description="[ProductName] cannot be installed on [WindowsType9XDisplay]" DescriptionLocId="AI.LaunchCondition.No9X" IsPredefined="true" Builds="DefaultBuild"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiRegsComponent">
+    <ROW Registry="Path" Root="-1" Key="Software\[Manufacturer]\[ProductName]" Name="Path" Value="[APPDIR]" Component_="ProductInformation"/>
+    <ROW Registry="Version" Root="-1" Key="Software\[Manufacturer]\[ProductName]" Name="Version" Value="[ProductVersion]" Component_="ProductInformation"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiShortsComponent">
+    <ROW Shortcut="ISSM" Directory_="SHORTCUTDIR" Name="ISSM" Component_="matlabissm.bat" Target="[#matlabissm.bat]" Hotkey="0" Icon_="matlabissm.exe" IconIndex="0" ShowCmd="1" WkDir="APPDIR"/>
+    <ROW Shortcut="ISSM_1" Directory_="DesktopFolder" Name="ISSM" Component_="matlabissm.bat" Target="[#matlabissm.bat]" Hotkey="0" Icon_="matlabissm.exe" IconIndex="0" ShowCmd="1" WkDir="APPDIR"/>
+    <ROW Shortcut="ISSM_2" Directory_="QuickLaunch_Dir" Name="ISSM" Component_="matlabissm.bat" Target="[#matlabissm.bat]" Hotkey="0" Icon_="matlabissm.exe" IconIndex="0" ShowCmd="1" WkDir="APPDIR"/>
+    <ROW Shortcut="ISSM_3" Directory_="StartMenuFolder" Name="ISSM" Component_="matlabissm.bat" Target="[#matlabissm.bat]" Hotkey="0" Icon_="matlabissm.exe" IconIndex="0" ShowCmd="1" WkDir="APPDIR"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiThemeComponent">
+    <ATTRIBUTE name="UsedTheme" value="classic"/>
+  </COMPONENT>
+  <COMPONENT cid="caphyon.advinst.msicomp.MsiUpgradeComponent">
+    <ROW UpgradeCode="[|UpgradeCode]" VersionMax="[|ProductVersion]" Attributes="1025" ActionProperty="OLDPRODUCTS"/>
+    <ROW UpgradeCode="[|UpgradeCode]" VersionMin="[|ProductVersion]" Attributes="2" ActionProperty="AI_NEWERPRODUCTFOUND"/>
+  </COMPONENT>
+</DOCUMENT>
Index: /issm/branches/trunk-larour-NatClimateChange2016/packagers/win7/package32.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/packagers/win7/package32.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/packagers/win7/package32.sh	(revision 21239)
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+#get brand new project: 
+rm -rf ISSM.aip  ISSM-SetupFiles ISSM.msi
+cp ISSM.initial.aip ISSM.aip
+
+#get windows style path to files
+export ISSM_DIR_WIN=`cygpath -m "$ISSM_DIR"`
+
+#build list of files to put into the installer: 
+rm -rf ISSM.aic 
+cat << END > ISSM.aic
+;aic
+SetVersion "1.0"
+SetPackageName "ISSM.msi"
+END
+
+ls $ISSM_DIR_WIN/scripts/*.bat startup.m  | awk '{printf("AddFile APPDIR %s\n",$1);}' | sed 's/\//\\/g' >> ISSM.aic
+
+cat << END >> ISSM.aic
+AddFolder PersonalFolder $ISSM_DIR_WIN\test
+AddFolder APPDIR $ISSM_DIR_WIN\bin
+NewEnvironment -name ISSM_TESTS -value [test_Dir]
+NewEnvironment -name ISSM_DIR -value [APPDIR]
+NewEnvironment -name ISSM_DIR_WIN -value [APPDIR]
+Save
+Rebuild
+END
+#Not needed anymore? 
+#DelEnvironment ISSM_TESTS
+#DelEnvironment ISSM_DIR
+#DelEnvironment ISSM_DIR_WIN
+
+#Run installer: 
+"C:/Program Files (x86)/Caphyon/Advanced Installer 10.8/bin/x86/AdvancedInstaller.com" /execute  ./ISSM.aip ./ISSM.aic
+
+#Get rid of temporary files: 
+cp ISSM-SetupFiles/ISSM.msi ./
+rm -rf ISSM.aip ISSM-SetupFiles ISSM.aic
Index: /issm/branches/trunk-larour-NatClimateChange2016/packagers/win7/package64.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/packagers/win7/package64.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/packagers/win7/package64.sh	(revision 21239)
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+#get brand new project: 
+rm -rf ISSM.aip  ISSM-SetupFiles ISSM.msi
+cp ISSM.initial.aip ISSM.aip
+
+#recover version: 
+version=`svn info | grep Revision | awk '{printf("%s\n",$2);}'`
+
+#get windows style path to files
+export ISSM_DIR_WIN=`cygpath -m "$ISSM_DIR"`
+
+echo "----------------------------------"
+rm $ISSM_DIR/bin/*.m
+find $ISSM_DIR/src/m -name '*.m' | xargs cp -t $ISSM_DIR/bin/
+ls $ISSM_DIR/bin
+echo "----------------------------------"
+
+#build list of files to put into the installer: 
+rm -rf ISSM.aic 
+cat << END > ISSM.aic
+;aic
+SetVersion "$version"
+SetPackageName "ISSM.msi"
+END
+
+ls $ISSM_DIR_WIN/scripts/*.bat startup.m | awk '{printf("AddFile APPDIR %s\n",$1);}' | sed 's/\//\\/g' >> ISSM.aic
+
+cat << END >> ISSM.aic
+AddFolder PersonalFolder $ISSM_DIR_WIN\test
+AddFolder PersonalFolder $ISSM_DIR_WIN\examples
+AddFolder APPDIR $ISSM_DIR_WIN\bin
+AddFolder APPDIR $ISSM_DIR_WIN\lib
+NewEnvironment -name ISSM_TESTS -value [test_Dir]
+NewEnvironment -name ISSM_DIR -value [APPDIR]
+NewEnvironment -name ISSM_DIR_WIN -value [APPDIR]
+Save
+Rebuild
+END
+#Not needed anymore? 
+#DelEnvironment ISSM_TESTS
+#DelEnvironment ISSM_DIR
+#DelEnvironment ISSM_DIR_WIN
+
+#Run installer: 
+"C:/Program Files (x86)/Caphyon/Advanced Installer 10.8/bin/x86/AdvancedInstaller.com" /execute  ./ISSM.aip ./ISSM.aic
+
+#Get rid of temporary files: 
+cp ISSM-SetupFiles/ISSM.msi ./
+rm -rf ISSM.aip ISSM-SetupFiles ISSM.aic
+
+#To upload to website: 
+#scp ISSM.msi websites:/home/larour/files/ISSM64.msi
Index: /issm/branches/trunk-larour-NatClimateChange2016/packagers/win7/startup.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/packagers/win7/startup.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/packagers/win7/startup.m	(revision 21239)
@@ -0,0 +1,47 @@
+%STARTUP - Matlab startup script
+%
+%   startup.m is a script run by matlab at the beginning of a session, just
+%   before handing over the prompt to the user. This delivery startup.m script
+%   has been customized here for the ISSM code. This startup script should be
+%   run by users before trying to use ISSM. The best way to do that is to put
+%   the startup file in the location where Matlab starts and established its
+%   root directory.
+
+% clear the last warning to focus on the warnings of the ISSM path
+lastwarn(''); 
+
+%Recover ISSM_TIER , or if on a Windows machine, ISSM_TIER_WIN
+ISSM_TIER=getenv('ISSM_TIER_WIN');
+
+if (isempty(ISSM_TIER)),
+	error('issmdir error message: ''ISSM_TIER'' environment variable is empty! You should define ISSM_TIER in your .cshrc or .bashrc!');
+end
+
+%Now add all issm code paths necessary to run issm smoothly. 
+%We capture the error output, so that we can warn the user to update 
+%the variable ISSM_TIER in this file, in case it is not correctly setup. 
+
+%ISSM path
+addpath(pwd); %add current path first
+addpath([pwd '\bin']);
+addpath([pwd '\lib']);
+
+%Check on any warning messages that might indicate that the paths were not correct. 
+if ~isempty(lastwarn),
+	fprintf('\n  Error trying to setup ''ISSM'' code paths. Try and update the ISSM_TIER variable in your .cshrc or .bashrc!\n');
+	fprintf('  ''ISSM'' will not  work at all until this is resolved\n\n');
+else
+	fprintf('\n  To get started with ISSM, type issmdoc at the command prompt.\n\n');
+end
+
+%disable matlab bell!
+beep off;
+
+% no warning if we try to plot while in nojvm (will not be supported in future releases)
+warning off MATLAB:HandleGraphics:noJVM
+
+%at the end, get to tests directory if ISSM_TESTS exists: 
+ISSM_TESTS=getenv('ISSM_TESTS');
+if ~isempty(ISSM_TESTS),
+	cd(ISSM_TESTS);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/patches/Makefile.am_C
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/patches/Makefile.am_C	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/patches/Makefile.am_C	(revision 21239)
@@ -0,0 +1,1018 @@
+AM_CPPFLAGS = @DAKOTAINCL@ @SHAPELIBINCL@ @PETSCINCL@ @SLEPCINCL@ @MPIINCL@ @METISINCL@ @CHACOINCL@ @SCOTCHINCL@ @PLAPACKINCL@ @BLASLAPACKINCL@ @MKLINCL@ @MUMPSINCL@ @TRIANGLEINCL@ @SPAIINCL@ @HYPREINCL@ @PROMETHEUSINCL@ @SUPERLUINCL@ @SPOOLESINCL@ @PASTIXINCL@ @MLINCL@ @TAOINCL@ @ADIC2INCL@ @ADOLCINCL@ @GSLINCL@ @BOOSTINCL@ @ANDROID_NDKINCL@
+
+EXEEXT=$(ISSMEXT)
+
+#Library declaration {{{
+lib_LIBRARIES = libISSMCore.a libISSMOverload.a
+
+if WRAPPERS
+lib_LIBRARIES += libISSMModules.a 
+endif
+#}}}
+
+#sources
+#Core sources{{{
+core_sources = ./main/issm.h\
+			   ./main/globals.h\
+			   ./datastructures/DataSet.h\
+					./datastructures/DataSet.cpp\
+					./datastructures/Object.h\
+					./datastructures/datastructures.h\
+					./classes/classes.h\
+					./classes/gauss/GaussTria.h\
+					./classes/gauss/GaussTria.cpp\
+					./classes/Update.h\
+					./classes/Element.h\
+					./classes/FemModel.h\
+					./classes/FemModel.cpp\
+					./classes/Material.h\
+					./classes/Load.h\
+					./classes/Contour.h\
+					./classes/Loads/Friction.h\
+					./classes/Loads/Friction.cpp\
+					./classes/Inputs/TransientInput.h\
+					./classes/Inputs/TransientInput.cpp\
+					./classes/Constraints/SpcTransient.cpp\
+					./classes/Constraints/SpcTransient.h\
+					./classes/IndependentObject.h\
+					./classes/IndependentObject.cpp\
+					./classes/DependentObject.h\
+					./classes/DependentObject.cpp\
+					./classes/DofIndexing.h\
+					./classes/DofIndexing.cpp\
+					./classes/IoModel.h\
+					./classes/IoModel.cpp\
+					./classes/Contours.h\
+					./classes/Contours.cpp\
+					./classes/Nodes.h\
+					./classes/Nodes.cpp\
+					./classes/Vertices.h\
+					./classes/Vertices.cpp\
+					./classes/Node.h\
+					./classes/Node.cpp\
+					./classes/Segment.h\
+					./classes/Vertex.h\
+					./classes/Vertex.cpp\
+					./classes/Hook.h\
+					./classes/Hook.cpp\
+					./classes/Patch.h\
+					./classes/Patch.cpp\
+					./classes/ElementResults/ElementResultLocal.h\
+					./classes/ElementResults/DoubleElementResult.h\
+					./classes/ElementResults/DoubleElementResult.cpp\
+					./classes/ElementResults/TriaP1ElementResult.h\
+					./classes/ElementResults/TriaP1ElementResult.cpp\
+					./classes/ElementResults/BoolElementResult.h\
+					./classes/ElementResults/BoolElementResult.cpp\
+					./classes/ExternalResults/Results.h\
+					./classes/ExternalResults/Results.cpp\
+					./classes/ExternalResults/ExternalResult.h\
+					./classes/ExternalResults/GenericExternalResult.h\
+					./classes/Elements/Elements.h\
+					./classes/Elements/Elements.cpp\
+					./classes/Elements/Tria.h\
+					./classes/Elements/Tria.cpp\
+					./classes/Elements/TriaHook.h\
+					./classes/Elements/TriaHook.cpp\
+					./classes/Elements/TriaRef.h\
+					./classes/Elements/TriaRef.cpp\
+					./classes/Inputs/Inputs.h\
+					./classes/Inputs/Inputs.cpp\
+					./classes/Inputs/Input.h\
+					./classes/Inputs/InputLocal.h\
+					./classes/Inputs/TriaP1Input.h\
+					./classes/Inputs/TriaP1Input.cpp\
+					./classes/Inputs/BoolInput.h\
+					./classes/Inputs/BoolInput.cpp\
+					./classes/Inputs/IntInput.h\
+					./classes/Inputs/IntInput.cpp\
+					./classes/Inputs/DoubleInput.h\
+					./classes/Inputs/DoubleInput.cpp\
+					./classes/Inputs/DatasetInput.h\
+					./classes/Inputs/DatasetInput.cpp\
+					./classes/Materials/Materials.h\
+					./classes/Materials/Materials.cpp\
+					./classes/Materials/Matice.h\
+					./classes/Materials/Matice.cpp\
+					./classes/Materials/Matdamageice.h\
+					./classes/Materials/Matdamageice.cpp\
+					./classes/Materials/Matpar.h\
+					./classes/Materials/Matpar.cpp\
+					./classes/Constraints/Constraints.h\
+					./classes/Constraints/Constraints.cpp\
+					./classes/Constraints/Constraint.h\
+					./classes/Constraints/SpcStatic.cpp\
+					./classes/Constraints/SpcStatic.h\
+					./classes/Constraints/SpcDynamic.cpp\
+					./classes/Constraints/SpcDynamic.h\
+					./classes/Loads/Loads.h\
+					./classes/Loads/Loads.cpp\
+					./classes/Loads/Penpair.cpp\
+					./classes/Loads/Penpair.h\
+					./classes/Loads/Pengrid.cpp\
+					./classes/Loads/Pengrid.h\
+					./classes/Loads/Icefront.cpp\
+					./classes/Loads/Icefront.h\
+					./classes/Loads/Numericalflux.cpp\
+					./classes/Loads/Numericalflux.h\
+					./classes/matrix/matrixobjects.h\
+					./classes/matrix/ElementMatrix.h\
+					./classes/matrix/ElementMatrix.cpp\
+					./classes/matrix/ElementVector.h\
+					./classes/matrix/ElementVector.cpp\
+					./classes/Params/Parameters.h\
+					./classes/Params/Parameters.cpp\
+					./classes/Params/Param.h\
+					./classes/Params/GenericParam.h\
+					./classes/Params/BoolParam.cpp\
+					./classes/Params/BoolParam.h\
+					./classes/Params/IntParam.cpp\
+					./classes/Params/IntParam.h\
+					./classes/Params/IntVecParam.cpp\
+					./classes/Params/IntVecParam.h\
+					./classes/Params/IntMatParam.cpp\
+					./classes/Params/IntMatParam.h\
+					./classes/Params/DoubleParam.cpp\
+					./classes/Params/DoubleParam.h\
+					./classes/Params/FileParam.cpp\
+					./classes/Params/FileParam.h\
+					./classes/Params/StringArrayParam.cpp\
+					./classes/Params/StringArrayParam.h\
+					./classes/Params/DoubleMatParam.cpp\
+					./classes/Params/DoubleMatParam.h\
+					./classes/Params/DoubleTransientMatParam.cpp\
+					./classes/Params/DoubleTransientMatParam.h\
+					./classes/Params/DoubleMatArrayParam.cpp\
+					./classes/Params/DoubleMatArrayParam.h\
+					./classes/Params/DoubleVecParam.cpp\
+					./classes/Params/DoubleVecParam.h\
+					./classes/Params/StringParam.cpp\
+					./classes/Params/StringParam.h\
+					./classes/Params/MatrixParam.h\
+					./classes/Params/MatrixParam.cpp\
+					./classes/Params/VectorParam.h\
+					./classes/Params/VectorParam.cpp\
+					./classes/Params/TransientParam.h\
+					./classes/Params/TransientParam.cpp\
+					./classes/Params/DataSetParam.h\
+					./classes/Params/DataSetParam.cpp\
+					./classes/Profiler.h\
+					./classes/Profiler.cpp\
+					./shared/shared.h\
+					./shared/MemOps/MemOps.h\
+					./shared/Matrix/matrix.h\
+					./shared/Matrix/MatrixUtils.cpp\
+					./shared/io/io.h\
+					./shared/io/Disk/diskio.h\
+					./shared/io/Disk/pfopen.cpp\
+					./shared/io/Disk/pfclose.cpp\
+					./shared/io/Disk/WriteLockFile.cpp\
+					./shared/io/Print/PrintfFunction.cpp\
+					./shared/io/Print/Print.h\
+					./shared/io/Comm/Comm.h\
+					./shared/io/Comm/CommDef.h\
+					./shared/io/Comm/IssmComm.h\
+					./shared/io/Comm/IssmComm.cpp\
+					./shared/LatLong/Ll2xyx.cpp\
+					./shared/LatLong/Xy2llx.cpp\
+					./shared/Enum/Enum.h\
+					./shared/Enum/EnumDefinitions.h\
+					./shared/Enum/EnumToStringx.cpp\
+					./shared/Enum/StringToEnumx.cpp\
+					./shared/Numerics/numerics.h\
+					./shared/Numerics/types.h\
+					./shared/Numerics/constants.h\
+					./shared/Numerics/Verbosity.h\
+					./shared/Numerics/Verbosity.cpp\
+					./shared/Numerics/GaussPoints.h\
+					./shared/Numerics/GaussPoints.cpp\
+					./shared/Numerics/cross.cpp\
+					./shared/Numerics/isnan.h\
+					./shared/Numerics/isnan.cpp\
+					./shared/Numerics/cubic.cpp\
+					./shared/Numerics/extrema.cpp\
+					./shared/Numerics/XZvectorsToCoordinateSystem.cpp\
+					./shared/Numerics/UnitConversion.cpp\
+					./shared/Numerics/OptArgs.h\
+					./shared/Numerics/OptPars.h\
+					./shared/Exceptions/exceptions.h\
+					./shared/Exceptions/Exceptions.cpp\
+					./shared/Exceptions/exprintf.cpp\
+					./shared/Sorting/binary_search.cpp\
+					./shared/Sorting/sorting.h\
+					./shared/Elements/elements.h\
+					./shared/Elements/Paterson.cpp\
+					./shared/Elements/Arrhenius.cpp\
+					./shared/Elements/PrintArrays.cpp\
+					./shared/Elements/PddSurfaceMassBalance.cpp\
+					./shared/Elements/ComputeDelta18oTemperaturePrecipitation.cpp\
+					./shared/String/sharedstring.h\
+					./shared/String/DescriptorIndex.cpp\
+					./toolkits/metis/metisincludes.h\
+					./toolkits/issm/issmtoolkit.h\
+					./toolkits/issm/IssmToolkitUtils.h\
+					./toolkits/issm/IssmToolkitUtils.cpp\
+					./toolkits/issm/IssmAbsMat.h\
+					./toolkits/issm/IssmAbsVec.h\
+					./toolkits/issm/IssmDenseMat.h\
+					./toolkits/issm/IssmMat.h\
+					./toolkits/issm/IssmSeqVec.h\
+					./toolkits/issm/IssmVec.h\
+					./toolkits/issm/IssmSolver.h\
+					./toolkits/issm/IssmSolver.cpp\
+					./toolkits/issm/Bucket.h\
+					./toolkits/adolc/adolcincludes.h\
+					./toolkits/adolc/AdolcEdf.h\
+					./toolkits/ToolkitOptions.h\
+					./toolkits/ToolkitOptions.cpp\
+					./toolkits/triangle/triangleincludes.h\
+					./toolkits/objects/toolkitobjects.h\
+					./toolkits/objects/Matrix.h\
+					./toolkits/objects/Vector.h\
+					./toolkits/objects/Solver.h\
+					./toolkitsenums.h\
+					./toolkits.h\
+					./modules/ModelProcessorx/ModelProcessorx.h\
+					./modules/ModelProcessorx/ModelProcessorx.cpp\
+					./modules/ModelProcessorx/DistributeNumDofs.cpp\
+					./modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp\
+					./modules/ModelProcessorx/NodesPartitioning.cpp\
+					./modules/ModelProcessorx/SortDataSets.cpp\
+					./modules/ModelProcessorx/UpdateCounters.cpp\
+					./modules/ModelProcessorx/CreateDataSets.cpp\
+					./modules/ModelProcessorx/CreateParameters.cpp\
+					./modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp\
+					./modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp\
+					./modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp\
+					./modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp\
+					./modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.h\
+					./modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.cpp\
+					./modules/NodesDofx/NodesDofx.h\
+					./modules/NodesDofx/NodesDofx.cpp\
+					./modules/NodalValuex/NodalValuex.h\
+					./modules/NodalValuex/NodalValuex.cpp\
+					./modules/VerticesDofx/VerticesDofx.h\
+					./modules/VerticesDofx/VerticesDofx.cpp\
+					./modules/VertexCoordinatesx/VertexCoordinatesx.h\
+					./modules/VertexCoordinatesx/VertexCoordinatesx.cpp\
+					./modules/OutputResultsx/OutputResultsx.h\
+					./modules/OutputResultsx/OutputResultsx.cpp\
+					./modules/InputDuplicatex/InputDuplicatex.h\
+					./modules/InputDuplicatex/InputDuplicatex.cpp\
+					./modules/InputScalex/InputScalex.h\
+					./modules/InputScalex/InputScalex.cpp\
+					./modules/SurfaceAreax/SurfaceAreax.h\
+					./modules/SurfaceAreax/SurfaceAreax.cpp\
+					./modules/CreateNodalConstraintsx/CreateNodalConstraintsx.h\
+					./modules/CreateNodalConstraintsx/CreateNodalConstraintsx.cpp\
+					./modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.h\
+					./modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.cpp\
+					./modules/IoModelToConstraintsx/IoModelToConstraintsx.h\
+					./modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp\
+					./modules/InputUpdateFromConstantx/InputUpdateFromConstantx.h\
+					./modules/InputUpdateFromConstantx/InputUpdateFromConstantx.cpp\
+					./modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.h\
+					./modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.cpp\
+					./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.h\
+					./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp\
+					./modules/GetVectorFromInputsx/GetVectorFromInputsx.h\
+					./modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp\
+					./modules/InputUpdateFromVectorx/InputUpdateFromVectorx.h\
+					./modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp\
+					./modules/InputArtificialNoisex/InputArtificialNoisex.h\
+					./modules/InputArtificialNoisex/InputArtificialNoisex.cpp\
+					./modules/ConfigureObjectsx/ConfigureObjectsx.h\
+					./modules/ConfigureObjectsx/ConfigureObjectsx.cpp\
+					./modules/ComputeBasalStressx/ComputeBasalStressx.h\
+					./modules/ComputeBasalStressx/ComputeBasalStressx.cpp\
+					./modules/ComputeStrainRatex/ComputeStrainRatex.h\
+					./modules/ComputeStrainRatex/ComputeStrainRatex.cpp\
+					./modules/SpcNodesx/SpcNodesx.h\
+					./modules/SpcNodesx/SpcNodesx.cpp\
+					./modules/PositiveDegreeDayx/PositiveDegreeDayx.h\
+					./modules/PositiveDegreeDayx/PositiveDegreeDayx.cpp\
+					./modules/Delta18oParameterizationx/Delta18oParameterizationx.h\
+					./modules/Delta18oParameterizationx/Delta18oParameterizationx.cpp\
+					./modules/SmbGradientsx/SmbGradientsx.h\
+					./modules/SmbGradientsx/SmbGradientsx.cpp\
+					./modules/MeshPartitionx/MeshPartitionx.h\
+					./modules/Reducevectorgtofx/Reducevectorgtofx.cpp\
+					./modules/Reducevectorgtofx/Reducevectorgtofx.h\
+					./modules/Reduceloadx/Reduceloadx.h\
+					./modules/Reduceloadx/Reduceloadx.cpp\
+					./modules/ConstraintsStatex/ConstraintsStatex.cpp\
+					./modules/ConstraintsStatex/ConstraintsStatex.h\
+					./modules/ConstraintsStatex/ConstraintsStateLocal.h\
+					./modules/ResetConstraintsx/ResetConstraintsx.h\
+					./modules/ResetConstraintsx/ResetConstraintsx.cpp\
+					./modules/ResetCoordinateSystemx/ResetCoordinateSystemx.h\
+					./modules/ResetCoordinateSystemx/ResetCoordinateSystemx.cpp\
+					./modules/Solverx/Solverx.cpp\
+					./modules/Solverx/Solverx.h\
+					./modules/VecMergex/VecMergex.cpp\
+					./modules/VecMergex/VecMergex.h\
+					./modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp\
+					./modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h\
+					./modules/InputToResultx/InputToResultx.cpp\
+					./modules/InputToResultx/InputToResultx.h\
+					./analyses/ProcessArguments.cpp\
+					./analyses/ResetBoundaryConditions.cpp\
+					./analyses/AnalysisConfiguration.cpp\
+					./analyses/WrapperCorePointerFromSolutionEnum.cpp\
+					./analyses/CorePointerFromSolutionEnum.cpp\
+					./analyses/EnvironmentInit.cpp\
+					./analyses/EnvironmentFinalize.cpp\
+					./analyses/ad_core.cpp\
+					./solutionsequences/solutionsequence_linear.cpp\
+					./solutionsequences/solutionsequence_nonlinear.cpp\
+					./solutionsequences/solutionsequence_newton.cpp\
+					./solutionsequences/convergence.cpp\
+					./classes/Options/Options.h\
+					./classes/Options/Options.cpp\
+					./classes/Options/Option.h\
+					./classes/Options/GenericOption.h\
+					./classes/Options/OptionUtilities.cpp\
+					./classes/Options/OptionUtilities.h\
+					./classes/RiftStruct.cpp\
+					./classes/RiftStruct.h
+#}}}
+#DAKOTA sources  {{{
+dakota_sources = ./modules/InputUpdateFromDakotax/InputUpdateFromDakotax.h\
+					  ./modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp\
+					  ./modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h\
+					  ./modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp\
+					  ./modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.h\
+					  ./modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp\
+					  ./modules/AverageOntoPartitionx/AverageOntoPartitionx.cpp\
+					  ./modules/AverageOntoPartitionx/AverageOntoPartitionx.h\
+					  ./modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp\
+					  ./analyses/dakota_core.cpp\
+					  ./analyses/DakotaSpawnCore.h\
+					  ./analyses/DakotaSpawnCore.cpp
+#}}}
+#Transient sources  {{{
+transient_sources  = ./modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp \
+							./analyses/transient_core.cpp
+#}}}
+#Steadystate sources  {{{
+steadystate_sources = ./analyses/steadystate_core.cpp
+#}}}
+#Prognostic sources  {{{
+prognostic_sources = ./modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp\
+					      ./modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp\
+					      ./modules/ModelProcessorx/Prognostic/CreateConstraintsPrognostic.cpp\
+					      ./modules/ModelProcessorx/Prognostic/CreateLoadsPrognostic.cpp\
+							./analyses/prognostic_core.cpp
+#}}}
+#Thermal sources  {{{
+thermal_sources = ./modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp\
+					   ./modules/ModelProcessorx/Thermal/CreateNodesThermal.cpp\
+					   ./modules/ModelProcessorx/Thermal/CreateConstraintsThermal.cpp\
+					   ./modules/ModelProcessorx/Thermal/CreateLoadsThermal.cpp\
+					   ./modules/ModelProcessorx/Enthalpy/UpdateElementsEnthalpy.cpp\
+					   ./modules/ModelProcessorx/Enthalpy/CreateNodesEnthalpy.cpp\
+					   ./modules/ModelProcessorx/Enthalpy/CreateConstraintsEnthalpy.cpp\
+					   ./modules/ModelProcessorx/Enthalpy/CreateLoadsEnthalpy.cpp\
+					   ./modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp\
+					   ./modules/ModelProcessorx/Melting/CreateNodesMelting.cpp\
+					   ./modules/ModelProcessorx/Melting/CreateConstraintsMelting.cpp\
+					   ./modules/ModelProcessorx/Melting/CreateLoadsMelting.cpp\
+					   ./modules/ConstraintsStatex/ThermalConstraintsState.cpp\
+					   ./modules/ConstraintsStatex/ThermalIsPresent.cpp\
+					   ./modules/ResetConstraintsx/ThermalConstraintsReset.cpp \
+					   ./analyses/thermal_core.cpp\
+					   ./analyses/enthalpy_core.cpp\
+					   ./solutionsequences/solutionsequence_thermal_nonlinear.cpp
+#}}}
+#Control sources  {{{
+control_sources= ./modules/ControlInputGetGradientx/ControlInputGetGradientx.cpp\
+					  ./modules/ControlInputGetGradientx/ControlInputGetGradientx.h\
+					  ./modules/ControlInputSetGradientx/ControlInputSetGradientx.cpp\
+					  ./modules/ControlInputSetGradientx/ControlInputSetGradientx.h\
+					  ./modules/ControlInputScaleGradientx/ControlInputScaleGradientx.cpp\
+					  ./modules/ControlInputScaleGradientx/ControlInputScaleGradientx.h\
+					  ./modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.cpp\
+					  ./modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.h\
+					  ./modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.cpp\
+					  ./modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.h\
+					  ./modules/ModelProcessorx/Control/CreateParametersControl.cpp\
+					  ./modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp\
+					  ./modules/InputControlUpdatex/InputControlUpdatex.h\
+					  ./modules/InputControlUpdatex/InputControlUpdatex.cpp\
+					  ./modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.h\
+					  ./modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp\
+					  ./modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.h\
+					  ./modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp\
+					  ./modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.h\
+					  ./modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp\
+					  ./modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.h\
+					  ./modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp\
+					  ./modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.h\
+					  ./modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp\
+					  ./modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.h\
+					  ./modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.cpp\
+					  ./modules/Orthx/Orthx.h\
+					  ./modules/Orthx/Orthx.cpp\
+					  ./modules/Gradjx/Gradjx.h\
+					  ./modules/Gradjx/Gradjx.cpp\
+					  ./modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.cpp\
+					  ./modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.h\
+					  ./modules/ThicknessAlongGradientx/ThicknessAlongGradientx.cpp\
+					  ./modules/ThicknessAlongGradientx/ThicknessAlongGradientx.h\
+					  ./modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.cpp\
+					  ./modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.h\
+					  ./modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.cpp\
+					  ./modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.h\
+					  ./classes/Inputs/ControlInput.h\
+					  ./classes/Inputs/ControlInput.cpp\
+					  ./shared/Numerics/BrentSearch.cpp\
+					  ./shared/Numerics/OptimalSearch.cpp \
+					  ./analyses/control_core.cpp\
+					  ./analyses/controltao_core.cpp\
+					  ./analyses/objectivefunction.cpp\
+					  ./analyses/gradient_core.cpp\
+					  ./analyses/adjointdiagnostic_core.cpp\
+					  ./analyses/adjointbalancethickness_core.cpp\
+					  ./analyses/AdjointCorePointerFromSolutionEnum.cpp\
+					  ./solutionsequences/solutionsequence_adjoint_linear.cpp
+
+#}}}
+#Hydrology sources  {{{
+hydrology_sources  = ./modules/ModelProcessorx/HydrologyShreve/UpdateElementsHydrologyShreve.cpp\
+					      ./modules/ModelProcessorx/HydrologyShreve/CreateNodesHydrologyShreve.cpp\
+					      ./modules/ModelProcessorx/HydrologyShreve/CreateConstraintsHydrologyShreve.cpp\
+					      ./modules/ModelProcessorx/HydrologyShreve/CreateLoadsHydrologyShreve.cpp \
+							./modules/ModelProcessorx/HydrologyShreve/CreateParametersHydrologyShreve.cpp \
+							./modules/ModelProcessorx/HydrologyDCInefficient/UpdateElementsHydrologyDCInefficient.cpp\
+							./modules/ModelProcessorx/HydrologyDCInefficient/CreateNodesHydrologyDCInefficient.cpp\
+							./modules/ModelProcessorx/HydrologyDCInefficient/CreateConstraintsHydrologyDCInefficient.cpp\
+							./modules/ModelProcessorx/HydrologyDCInefficient/CreateLoadsHydrologyDCInefficient.cpp \
+							./modules/ModelProcessorx/HydrologyDCInefficient/CreateParametersHydrologyDCInefficient.cpp \
+							./modules/ModelProcessorx/HydrologyDCEfficient/UpdateElementsHydrologyDCEfficient.cpp\
+							./modules/ModelProcessorx/HydrologyDCEfficient/CreateNodesHydrologyDCEfficient.cpp\
+							./modules/ModelProcessorx/HydrologyDCEfficient/CreateConstraintsHydrologyDCEfficient.cpp\
+							./modules/ModelProcessorx/HydrologyDCEfficient/CreateLoadsHydrologyDCEfficient.cpp \
+							./modules/ModelProcessorx/HydrologyDCEfficient/CreateParametersHydrologyDCEfficient.cpp \
+							./analyses/hydrology_core.cpp\
+							./solutionsequences/solutionsequence_hydro_nonlinear.cpp
+#}}}
+#Diagnostic sources  {{{
+diagnostic_sources = ./modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp\
+					      ./modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp \
+					      ./modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp \
+					      ./modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp\
+					      ./modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp\
+					      ./modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp \
+					      ./modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp \
+					      ./modules/ModelProcessorx/DiagnosticVert/CreateLoadsDiagnosticVert.cpp\
+					      ./modules/ModelProcessorx/DiagnosticHutter/UpdateElementsDiagnosticHutter.cpp\
+					      ./modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp \
+					      ./modules/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp \
+							./modules/ModelProcessorx/DiagnosticHutter/CreateLoadsDiagnosticHutter.cpp \
+							./analyses/diagnostic_core.cpp\
+							./solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp
+#}}}
+#Balanced sources  {{{
+balanced_sources = ./modules/ModelProcessorx/Balancethickness/UpdateElementsBalancethickness.cpp\
+					    ./modules/ModelProcessorx/Balancethickness/CreateNodesBalancethickness.cpp\
+					    ./modules/ModelProcessorx/Balancethickness/CreateConstraintsBalancethickness.cpp\
+						 ./modules/ModelProcessorx/Balancethickness/CreateLoadsBalancethickness.cpp\
+						 ./analyses/balancethickness_core.cpp \
+						 ./analyses/dummy_core.cpp
+#}}}
+#Slope sources  {{{
+slope_sources =  ./modules/ModelProcessorx/BedSlope/UpdateElementsBedSlope.cpp\
+					  ./modules/ModelProcessorx/BedSlope/CreateNodesBedSlope.cpp \
+					  ./modules/ModelProcessorx/BedSlope/CreateConstraintsBedSlope.cpp\
+					  ./modules/ModelProcessorx/BedSlope/CreateLoadsBedSlope.cpp\
+					  ./modules/ModelProcessorx/SurfaceSlope/UpdateElementsSurfaceSlope.cpp\
+					  ./modules/ModelProcessorx/SurfaceSlope/CreateNodesSurfaceSlope.cpp \
+					  ./modules/ModelProcessorx/SurfaceSlope/CreateConstraintsSurfaceSlope.cpp\
+					  ./modules/ModelProcessorx/SurfaceSlope/CreateLoadsSurfaceSlope.cpp\
+					  ./analyses/surfaceslope_core.cpp\
+					  ./analyses/bedslope_core.cpp
+#}}}
+#Gia sources  {{{
+gia_sources =  ./analyses/gia_core.cpp\
+					./modules/ModelProcessorx/Gia/UpdateElementsGia.cpp\
+					./modules/ModelProcessorx/Gia/CreateNodesGia.cpp \
+					./modules/ModelProcessorx/Gia/CreateConstraintsGia.cpp\
+					./modules/ModelProcessorx/Gia/CreateLoadsGia.cpp\
+					./modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp\
+					./modules/GiaDeflectionCorex/GiaDeflectionCorex.h\
+					./modules/GiaDeflectionCorex/distme.f\
+					./modules/GiaDeflectionCorex/freed.f\
+					./modules/GiaDeflectionCorex/ojrule.f\
+					./modules/GiaDeflectionCorex/pwise.f\
+					./modules/GiaDeflectionCorex/qwise.f\
+					./modules/GiaDeflectionCorex/stot.f\
+					./modules/GiaDeflectionCorex/what0.f\
+					./classes/GiaDeflectionCoreArgs.h
+
+#}}}
+#Groundingline sources  {{{
+groundingline_sources= ./modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp\
+					        ./modules/GroundinglineMigrationx/GroundinglineMigrationx.h
+#}}}
+#Rifts sources  {{{
+rifts_sources = ./classes/Loads/Riftfront.cpp\
+				    ./classes/Loads/Riftfront.h\
+				    ./modules/ConstraintsStatex/RiftConstraintsState.cpp
+#}}}
+#Android sources  {{{
+android_sources = 
+#}}}
+#3D sources  {{{
+threed_sources = ./classes/gauss/GaussPenta.h\
+				     ./classes/gauss/GaussPenta.cpp\
+				     ./classes/ElementResults/PentaP1ElementResult.h\
+				     ./classes/ElementResults/PentaP1ElementResult.cpp\
+				     ./classes/Inputs/PentaP1Input.h\
+				     ./classes/Inputs/PentaP1Input.cpp\
+				     ./classes/Elements/Penta.h\
+				     ./classes/Elements/Penta.cpp\
+				     ./classes/Elements/PentaHook.h\
+				     ./classes/Elements/PentaHook.cpp\
+				     ./classes/Elements/PentaRef.h\
+				     ./classes/Elements/PentaRef.cpp
+#}}}
+#Bamg sources  {{{
+bamg_sources =  ./bamg/bamgobjects.h\
+				./bamg/BamgGeom.h\
+				./bamg/BamgGeom.cpp\
+				./bamg/BamgMesh.h\
+				./bamg/BamgMesh.cpp\
+				./bamg/BamgOpts.h\
+				./bamg/BamgOpts.cpp\
+				./bamg/CrackedEdge.h\
+				./bamg/CrackedEdge.cpp\
+				./bamg/Curve.h\
+				./bamg/Curve.cpp\
+				./bamg/Direction.h\
+				./bamg/Direction.cpp\
+				./bamg/DoubleAndInt.h\
+				./bamg/Edge.h\
+				./bamg/Edge.cpp\
+				./bamg/GeomEdge.h\
+				./bamg/GeomEdge.cpp\
+				./bamg/GeomSubDomain.h\
+				./bamg/GeomSubDomain.cpp\
+				./bamg/GeomVertex.h\
+				./bamg/GeomVertex.cpp\
+				./bamg/Geometry.cpp\
+				./bamg/Geometry.h\
+				./bamg/ListofIntersectionTriangles.cpp\
+				./bamg/ListofIntersectionTriangles.h\
+				./bamg/EigenMetric.cpp\
+				./bamg/Metric.cpp\
+				./bamg/Metric.h\
+				./bamg/BamgQuadtree.cpp\
+				./bamg/BamgQuadtree.h\
+				./bamg/R2.h\
+				./bamg/SetOfE4.cpp\
+				./bamg/SetOfE4.h\
+				./bamg/SubDomain.h\
+				./bamg/SubDomain.cpp\
+				./bamg/AdjacentTriangle.h\
+				./bamg/AdjacentTriangle.cpp\
+				./bamg/Triangle.cpp\
+				./bamg/det.h \
+				./bamg/Triangle.h\
+				./bamg/BamgVertex.cpp\
+				./bamg/BamgVertex.h\
+				./bamg/VertexOnEdge.h\
+				./bamg/VertexOnEdge.cpp\
+				./bamg/VertexOnGeom.h\
+				./bamg/VertexOnGeom.cpp\
+				./bamg/VertexOnVertex.h\
+				./bamg/VertexOnVertex.cpp\
+				./bamg/Mesh.cpp\
+				./bamg/Mesh.h\
+				./shared/Bamg/Abs.h \
+				./shared/Bamg/BigPrimeNumber.h\
+				./shared/Bamg/BigPrimeNumber.cpp\
+				./shared/Bamg/BinaryRand.h \
+				./shared/Bamg/Exchange.h \
+				./shared/Bamg/extrema.h \
+				./shared/Bamg/HeapSort.h \
+				./shared/Bamg/OppositeAngle.h \
+				./modules/Bamgx/Bamgx.cpp\
+				./modules/Bamgx/Bamgx.h\
+				./modules/BamgConvertMeshx/BamgConvertMeshx.cpp\
+				./modules/BamgConvertMeshx/BamgConvertMeshx.h\
+				./modules/BamgTriangulatex/BamgTriangulatex.cpp\
+				./modules/BamgTriangulatex/BamgTriangulatex.h
+#}}}
+#Kriging sources  {{{
+kriging_sources = ./classes/kriging/Observations.h\
+						./classes/kriging/Observations.cpp\
+						./classes/kriging/Variogram.h \
+						./classes/kriging/GaussianVariogram.h\
+						./classes/kriging/GaussianVariogram.cpp\
+						./classes/kriging/ExponentialVariogram.h\
+						./classes/kriging/ExponentialVariogram.cpp\
+						./classes/kriging/SphericalVariogram.h\
+						./classes/kriging/SphericalVariogram.cpp\
+						./classes/kriging/PowerVariogram.h\
+						./classes/kriging/PowerVariogram.cpp\
+						./classes/kriging/Quadtree.h\
+						./classes/kriging/Quadtree.cpp\
+						./classes/kriging/Observation.h\
+						./classes/kriging/Observation.cpp\
+						./modules/Krigingx/Krigingx.cpp\
+						./modules/Krigingx/Krigingx.h
+
+#For parallel kriging, only difference is ./modules/Krigingx/pKrigingx.cpp with no multithreading
+pkriging_sources = ./classes/kriging/Observations.h\
+						./classes/kriging/Observations.cpp\
+						./classes/kriging/Variogram.h \
+						./classes/kriging/GaussianVariogram.h\
+						./classes/kriging/GaussianVariogram.cpp\
+						./classes/kriging/ExponentialVariogram.h\
+						./classes/kriging/ExponentialVariogram.cpp\
+						./classes/kriging/SphericalVariogram.h\
+						./classes/kriging/SphericalVariogram.cpp\
+						./classes/kriging/PowerVariogram.h\
+						./classes/kriging/PowerVariogram.cpp\
+						./classes/kriging/Quadtree.h\
+						./classes/kriging/Quadtree.cpp\
+						./classes/kriging/Observation.h\
+						./classes/kriging/Observation.cpp\
+						./modules/Krigingx/pKrigingx.cpp\
+						./modules/Krigingx/Krigingx.h
+
+#}}}
+#Kml sources  {{{
+kml_sources = ./modules/Exp2Kmlx/Exp2Kmlx.h\
+			     ./modules/Exp2Kmlx/Exp2Kmlx.cpp\
+			     ./modules/Kml2Expx/Kml2Expx.h\
+			     ./modules/Kml2Expx/Kml2Expx.cpp\
+			     ./modules/Shp2Expx/Shp2Expx.h\
+			     ./modules/Shp2Expx/Shp2Expx.cpp\
+			     ./modules/Shp2Kmlx/Shp2Kmlx.h\
+			     ./modules/Shp2Kmlx/Shp2Kmlx.cpp\
+			     ./modules/KMLFileReadx/KMLFileReadx.h\
+			     ./modules/KMLFileReadx/KMLFileReadx.cpp\
+			     ./modules/KMLMeshWritex/KMLMeshWritex.h\
+			     ./modules/KMLMeshWritex/KMLMeshWritex.cpp\
+			     ./modules/KMLOverlayx/KMLOverlayx.h\
+			     ./modules/KMLOverlayx/KMLOverlayx.cpp\
+			     ./kml/kmlobjects.h\
+			     ./kml/KML_Attribute.cpp\
+			     ./kml/KML_Attribute.h\
+			     ./kml/KML_Comment.cpp\
+			     ./kml/KML_Comment.h\
+			     ./kml/KML_ColorStyle.cpp\
+			     ./kml/KML_ColorStyle.h\
+			     ./kml/KML_Container.cpp\
+			     ./kml/KML_Container.h\
+			     ./kml/KML_Document.cpp\
+			     ./kml/KML_Document.h\
+			     ./kml/KML_Feature.cpp\
+			     ./kml/KML_Feature.h\
+			     ./kml/KML_File.cpp\
+			     ./kml/KML_File.h\
+			     ./kml/KML_Folder.cpp\
+			     ./kml/KML_Folder.h\
+			     ./kml/KML_Geometry.cpp\
+			     ./kml/KML_Geometry.h\
+			     ./kml/KML_GroundOverlay.cpp\
+			     ./kml/KML_GroundOverlay.h\
+			     ./kml/KML_Icon.cpp\
+			     ./kml/KML_Icon.h\
+			     ./kml/KML_LatLonBox.cpp\
+		  	     ./kml/KML_LatLonBox.h\
+			     ./kml/KML_LinearRing.cpp\
+			     ./kml/KML_LinearRing.h\
+			     ./kml/KML_LineString.cpp\
+			     ./kml/KML_LineString.h\
+			     ./kml/KML_LineStyle.cpp\
+			     ./kml/KML_LineStyle.h\
+			     ./kml/KML_MultiGeometry.cpp\
+			     ./kml/KML_MultiGeometry.h\
+			     ./kml/KML_Object.cpp\
+			     ./kml/KML_Object.h\
+			     ./kml/KML_Overlay.cpp\
+			     ./kml/KML_Overlay.h\
+			     ./kml/KML_Point.cpp\
+			     ./kml/KML_Point.h\
+			     ./kml/KML_Placemark.cpp\
+			     ./kml/KML_Placemark.h\
+			     ./kml/KML_Polygon.cpp\
+			     ./kml/KML_Polygon.h\
+			     ./kml/KML_PolyStyle.cpp\
+			     ./kml/KML_PolyStyle.h\
+			     ./kml/KML_Style.cpp\
+			     ./kml/KML_Style.h\
+			     ./kml/KML_StyleSelector.cpp\
+			     ./kml/KML_StyleSelector.h\
+			     ./kml/KML_SubStyle.cpp\
+			     ./kml/KML_SubStyle.h\
+			     ./kml/KML_Unknown.cpp\
+			     ./kml/KML_Unknown.h\
+			     ./kml/KMLFileReadUtils.cpp\
+			     ./kml/KMLFileReadUtils.h
+#}}}
+#Petsc sources  {{{
+petsc_sources= ./toolkits/petsc\
+					./toolkits/petsc/patches\
+					./toolkits/petsc/patches/SolverEnum.h\
+					./toolkits/petsc/patches/petscpatches.h\
+					./toolkits/petsc/patches/VecToMPISerial.cpp\
+					./toolkits/petsc/patches/MatToSerial.cpp\
+					./toolkits/petsc/patches/VecMerge.cpp\
+					./toolkits/petsc/patches/NewVec.cpp\
+					./toolkits/petsc/patches/PetscOptionsDetermineSolverType.cpp\
+					./toolkits/petsc/patches/PetscOptionsInsertMultipleString.cpp\
+					./toolkits/petsc/patches/NewMat.cpp\
+					./toolkits/petsc/patches/VecFree.cpp\
+					./toolkits/petsc/patches/PetscMatrixToDoubleMatrix.cpp\
+					./toolkits/petsc/patches/PetscVectorToDoubleVector.cpp\
+					./toolkits/petsc/patches/VecDuplicatePatch.cpp\
+					./toolkits/petsc/patches/KSPFree.cpp\
+					./toolkits/petsc/patches/MatFree.cpp\
+					./toolkits/petsc/patches/MatMultPatch.cpp\
+					./toolkits/petsc/patches/ISSMToPetscMatrixType.cpp\
+					./toolkits/petsc/patches/ISSMToPetscInsertMode.cpp\
+					./toolkits/petsc/patches/ISSMToPetscNormMode.cpp\
+					./toolkits/petsc/objects/petscobjects.h\
+					./toolkits/petsc/objects/PetscMat.h\
+					./toolkits/petsc/objects/PetscMat.cpp\
+					./toolkits/petsc/objects/PetscVec.h\
+					./toolkits/petsc/objects/PetscVec.cpp\
+					./toolkits/petsc/objects/PetscSolver.cpp\
+					./toolkits/petsc/objects/PetscSolver.h\
+					./toolkits/petsc/petscincludes.h
+
+#}}}
+#Mumps sources  {{{
+mumps_sources=      ./toolkits/mumps\
+					./toolkits/mumps/mumpsincludes.h\
+					./toolkits/mumps/MpiDenseMumpsSolve.cpp
+#}}}
+#Gsl sources  {{{
+gsl_sources=      ./toolkits/gsl\
+					./toolkits/gsl/gslincludes.h\
+					./toolkits/gsl/DenseGslSolve.cpp
+#}}}
+#Mpi sources  {{{
+mpi_sources= ./toolkits/mpi/mpiincludes.h\
+				./toolkits/mpi/patches/mpipatches.h\
+				./toolkits/mpi/patches/DetermineLocalSize.cpp\
+				./toolkits/mpi/patches/DetermineGlobalSize.cpp\
+				./toolkits/mpi/patches/DetermineRowRankFromLocalSize.cpp\
+				./toolkits/mpi/patches/GetOwnershipBoundariesFromRange.cpp\
+				./toolkits/issm/IssmMpiDenseMat.h\
+				./toolkits/issm/IssmMpiVec.h
+#}}}
+#Metis sources  {{{
+metis_sources= ./toolkits/metis/patches/metispatches.h\
+					./toolkits/metis/patches/METIS_PartMeshNodalPatch.cpp
+#}}}
+#Modules sources{{{
+modules_sources= ./shared/Threads/issm_threads.h\
+			./shared/Threads/LaunchThread.cpp\
+			./shared/Threads/PartitionRange.cpp\
+			./shared/Exp/exp.h\
+			./shared/Exp/exp.cpp\
+			./shared/TriMesh/trimesh.h\
+			./shared/TriMesh/AssociateSegmentToElement.cpp\
+			./shared/TriMesh/GridInsideHole.cpp\
+			./shared/TriMesh/OrderSegments.cpp\
+			./shared/TriMesh/SplitMeshForRifts.cpp\
+			./shared/TriMesh/TriMeshUtils.cpp\
+			./modules/Chacox/Chacox.h\
+			./modules/Chacox/Chacox.cpp\
+			./modules/Chacox/input_parse.cpp\
+			./modules/Chacox/chaco_seconds.cpp\
+			./modules/Chacox/user_params.cpp\
+			./modules/TriaSearchx/TriaSearchx.h\
+			./modules/TriaSearchx/TriaSearchx.cpp\
+			./modules/TriMeshx/TriMeshx.h\
+			./modules/TriMeshx/TriMeshx.cpp\
+			./modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.h\
+			./modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.cpp\
+			./modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.h\
+			./modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.cpp\
+			./modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp\
+			./modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp\
+			./modules/InterpFromGridToMeshx/InterpFromGridToMeshx.h\
+			./modules/InterpFromMesh2dx/InterpFromMesh2dx.cpp\
+			./modules/InterpFromMesh2dx/InterpFromMesh2dxt.cpp\
+			./modules/InterpFromMesh2dx/InterpFromMesh2dx.h\
+			./modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp\
+			./modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.h\
+			./modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.cpp\
+			./modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.h\
+			./modules/InterpFromMeshToGridx/InterpFromMeshToGridx.cpp\
+			./modules/InterpFromMeshToGridx/InterpFromMeshToGridx.h\
+			./modules/HoleFillerx/HoleFillerx.cpp\
+			./modules/HoleFillerx/HoleFillerx.h\
+			./modules/EdgeDetectionx/EdgeDetectionx.cpp\
+			./modules/EdgeDetectionx/EdgeDetectionx.h\
+			./modules/AverageFilterx/AverageFilterx.cpp\
+			./modules/AverageFilterx/AverageFilterx.h\
+			./modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp\
+			./modules/MeshProfileIntersectionx/MeshProfileIntersectionx.h\
+			./modules/ContourToMeshx/ContourToMeshx.cpp\
+			./modules/ContourToMeshx/ContourToMeshxt.cpp\
+			./modules/ContourToMeshx/ContourToMeshx.h\
+			./modules/ContourToNodesx/ContourToNodesx.cpp\
+			./modules/ContourToNodesx/ContourToNodesx.h\
+			./modules/Reducevectorgtosx/Reducevectorgtosx.cpp\
+			./modules/Reducevectorgtosx/Reducevectorgtosx.h\
+			./modules/NodeConnectivityx/NodeConnectivityx.cpp\
+			./modules/NodeConnectivityx/NodeConnectivityx.h\
+			./modules/ElementConnectivityx/ElementConnectivityx.cpp\
+			./modules/ElementConnectivityx/ElementConnectivityx.h\
+			./modules/Scotchx/Scotchx.cpp\
+			./modules/Scotchx/Scotchx.h\
+			./modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.cpp\
+			./modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.h
+#}}}
+
+#{{{ Conditional build-up of sources
+#ISSM sources are a combination of core sources and sources related to specific capabilities (which can 
+#be activated by autotools conditionals 
+
+#First the core
+issm_sources  =  $(core_sources)
+
+#Now the optional source
+if DAKOTA
+issm_sources  +=  $(dakota_sources)
+endif
+
+if PETSC
+issm_sources  +=  $(petsc_sources)
+endif
+
+if MUMPS
+issm_sources  +=  $(mumps_sources)
+endif
+
+if GSL
+issm_sources  +=  $(gsl_sources)
+endif
+
+if TRANSIENT
+issm_sources  +=  $(transient_sources)
+endif
+
+if STEADYSTATE
+issm_sources  +=  $(steadystate_sources)
+endif
+
+if PROGNOSTIC
+issm_sources  +=  $(prognostic_sources)
+endif
+
+if THERMAL
+issm_sources  +=  $(thermal_sources)
+endif
+
+if GIA
+issm_sources  +=  $(gia_sources)
+endif
+
+if CONTROL
+issm_sources  +=  $(control_sources)
+endif
+
+if HYDROLOGY
+issm_sources  +=  $(hydrology_sources)
+endif
+
+if DIAGNOSTIC
+issm_sources  +=  $(diagnostic_sources)
+endif
+
+if BALANCED
+issm_sources  +=  $(balanced_sources)
+endif
+
+if SLOPE
+issm_sources  +=  $(slope_sources)
+endif
+
+if GROUNDINGLINE
+issm_sources +=  $(groundingline_sources)
+endif
+
+if RIFTS
+issm_sources +=  $(rifts_sources)
+endif
+
+if ANDROID
+issm_sources +=  $(android_sources)
+endif
+
+if THREED
+issm_sources +=  $(threed_sources)
+endif
+
+if MPI
+issm_sources +=  $(mpi_sources)
+endif
+
+if METIS
+issm_sources +=  $(metis_sources)
+endif
+
+if KRIGING
+issm_sources +=  $(pkriging_sources)
+endif
+#}}}
+#Library flags and sources {{{
+ALLCXXFLAGS= -fPIC -D_GNU_SOURCE -fno-omit-frame-pointer -pthread -D_CPP_  $(CXXFLAGS) $(CXXOPTFLAGS) 
+
+libISSMCore_a_SOURCES  = $(issm_sources)
+libISSMCore_a_CXXFLAGS = $(ALLCXXFLAGS)
+libISSMCore_a_FFLAGS = $(AM_FFLAGS)
+
+if WRAPPERS
+libISSMModules_a_SOURCES = $(modules_sources)
+libISSMModules_a_SOURCES += $(bamg_sources)
+if KRIGING
+libISSMModules_a_SOURCES += $(kriging_sources)
+endif
+if KML
+libISSMModules_a_SOURCES += $(kml_sources)
+endif
+libISSMModules_a_CXXFLAGS = $(ALLCXXFLAGS)
+libISSMModules_a_LIBADD = ./libISSMCore.a
+endif
+
+if VERSION
+AM_LDFLAGS =
+else
+AM_LDFLAGS = -avoid-version
+endif
+#}}}
+#Overload library, to overload any non-standard symbols. {{{
+libISSMOverload_a_SOURCES = ./shared/String/stricmp.c
+libISSMOverload_a_CFLAGS  = -fPIC -D_C_ $(COPTFLAGS) $(CFLAGS)
+#}}}
+
+#Executable {{{
+if ANDROID
+if ANDROIDEXE
+bin_PROGRAMS = issm 
+else
+bin_PROGRAMS = 
+endif
+else
+bin_PROGRAMS = issm 
+endif
+
+#Standard libraries
+LDADD = ./libISSMCore.a ./libISSMOverload.a
+
+#External packages
+LDADD += $(PETSCLIB) $(TAOLIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(SCALAPACKLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(FORTRANLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB) $(ADOLCLIB)
+
+if FORTRAN
+LDADD += $(FLIBS)
+endif
+
+issm_SOURCES = main/issm.cpp
+issm_CXXFLAGS= -fPIC $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) 
+
+if KRIGING
+bin_PROGRAMS += kriging
+kriging_SOURCES = main/kriging.cpp
+kriging_CXXFLAGS= -fPIC $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) 
+endif
+#}}}
+#Automatic differentiation: append this fold to the end of the src/c/Makefile.am to get this Makefile.am {{{
+if ADIC2 
+lib_LIBRARIES += libAD.a libISSMRose.a
+
+#ADIC2 library, for automatic differentiation 
+#libAD_a_SOURCES = ./mini1.ad.c
+libAD_a_SOURCES = 
+libAD_a_CFLAGS = -fPIC -D_C_ $(COPTFLAGS)
+
+
+#test rose preprocessing 
+%.r2cpp.cpp : %.cpp
+	testTranslator -rose:o $@ -rose:skipfinalCompileStep -DHAVE_CONFIG_H -D_C_ -I. -I../.. $(INCLUDES) $<
+libISSMRose_a_SOURCES = $(libISSMCore_a_SOURCES:.cpp=.r2cpp.cpp)
+libISSMRose_a_CXXFLAGS= -fPIC -D_C_ $(CXXOPTFLAGS)
+
+
+
+#Automatic differentiation rules: 
+%.ad.c: %.c
+	adic2 -mforward  $< --nary
+
+
+
+#Executable
+bin_PROGRAMS +=  issmRose.exe
+issmRose_exe_LDADD = ./libISSMRose.a $(LDADD)
+issmRose_exe_SOURCES = main/issm.cpp
+issmRose_exe_CXXFLAGS= -fPIC $(CXXOPTFLAGS) $(COPTFLAGS) 
+LDADD +=  $(ADIC2LIB) 
+
+endif #}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/patches/Makefile.am_MATLAB
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/patches/Makefile.am_MATLAB	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/patches/Makefile.am_MATLAB	(revision 21239)
@@ -0,0 +1,267 @@
+AM_CPPFLAGS = @DAKOTAINCL@ @MATLABINCL@ @PETSCINCL@ @MPIINCL@ @SPOOLESINCL@ @METISINCL@ @TRIANGLEINCL@ @CHACOINCL@ @SCOTCHINCL@ @SHAPELIBINCL@
+
+lib_LIBRARIES = libISSMMatlab.a 
+
+EXEEXT=$(MATLABWRAPPEREXT)
+
+#matlab io{{{
+io_sources = ./include/matlabincludes.h\
+				./io/matlabio.h\
+				./io/MatlabNArrayToNArray.cpp\
+				./io/CheckNumMatlabArguments.cpp\
+				./io/mxGetAssignedField.cpp\
+				./io/WriteMatlabData.cpp\
+				./io/FetchMatlabData.cpp\
+				./io/OptionParse.cpp\
+				./io/MatlabMatrixToMatrix.cpp\
+				./io/MatlabVectorToVector.cpp\
+				./io/MatlabVectorToDoubleVector.cpp\
+				./io/MatlabMatrixToDoubleMatrix.cpp\
+				./io/MatlabMatrixToIssmMat.cpp\
+				./io/MatlabVectorToIssmVec.cpp
+				
+if PETSC
+io_sources += ./io/MatlabMatrixToPetscMat.cpp\
+				./io/MatlabVectorToPetscVec.cpp
+endif
+
+ALLCXXFLAGS = /D_GNU_SOURCE /D_CPP_ /D_WRAPPERS_ $(CXXFLAGS) $(CXXOPTFLAGS) 
+libISSMMatlab_a_SOURCES = $(io_sources)
+libISSMMatlab_a_CXXFLAGS = $(ALLCXXFLAGS)
+
+#}}}
+#Wrappers {{{
+if WRAPPERS
+bin_PROGRAMS =  AverageFilter\
+						 BamgMesher\
+						 BamgConvertMesh\
+						 BamgTriangulate\
+						 ContourToMesh\
+						 ContourToNodes\
+						 EdgeDetection\
+						 ElementConnectivity\
+						 EnumToString\
+						 ExpSimplify\
+						 HoleFiller\
+						 InternalFront\
+						 InterpFromGridToMesh\
+						 InterpFromMeshToMesh2d\
+						 InterpFromMeshToMesh3d\
+						 InterpFromMeshToGrid\
+						 InterpFromMesh2d\
+						 Ll2xy\
+						 NodeConnectivity\
+						 MeshPartition\
+						 MeshProfileIntersection\
+						 PointCloudFindNeighbors\
+						 PropagateFlagsFromConnectivity\
+						 StringToEnum\
+						 TriaSearch\
+						 TriMesh\
+						 TriMeshProcessRifts\
+						 Scotch\
+						 Xy2ll\
+						 Chaco
+
+if KRIGING
+bin_PROGRAMS +=  Kriging
+endif
+if KML
+bin_PROGRAMS +=  KMLFileRead\
+				   KMLMeshWrite\
+				   KMLOverlay\
+				   Exp2Kml\
+				   Kml2Exp\
+				   Shp2Exp\
+				   Shp2Kml
+endif
+endif
+#}}}
+#Flags and libraries {{{
+#if SHAREDLIBS
+#deps = ../../c/libISSMCore ../../c/libISSMModules.la
+#else
+#deps = ../../c/libISSMCore.a ../../c/libISSMModules.a
+#endif
+#deps +=  $(MATHLIB)
+deps =  $(MATHLIB)
+
+#Triangle library
+AM_CXXFLAGS =  /DTRILIBRARY /DANSI_DECLARATORS /DNO_TIMER
+
+#Matlab part
+AM_LDFLAGS = 
+if VERSION
+AM_LDFLAGS +=
+else
+AM_LDFLAGS += -avoid-version
+endif
+deps += ./libISSMMatlab.a
+AM_LDFLAGS += --no-warnings 
+
+AM_CXXFLAGS +=  /D_HAVE_MATLAB_MODULES_  /D_GNU_SOURCE 
+
+deps += ../../c/libISSMModules.a ../../c/libISSMCore.a  
+if ADOLC
+deps += $(ADOLCLIB)
+endif
+
+#MEXLIB needs to be the last (undefined references on larsen)
+deps += ${MEXLIB}
+
+#Optimization flags:
+AM_CXXFLAGS += $(CXXOPTFLAGS) 
+#}}}
+#Bin sources {{{
+AverageFilter_SOURCES = ../AverageFilter/AverageFilter.cpp\
+									../AverageFilter/AverageFilter.h
+AverageFilter_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+BamgMesher_SOURCES = ../BamgMesher/BamgMesher.cpp\
+								../BamgMesher/BamgMesher.h
+BamgMesher_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+BamgConvertMesh_SOURCES = ../BamgConvertMesh/BamgConvertMesh.cpp\
+									  ../BamgConvertMesh/BamgConvertMesh.h
+BamgConvertMesh_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+BamgTriangulate_SOURCES = ../BamgTriangulate/BamgTriangulate.cpp\
+									  ../BamgTriangulate/BamgTriangulate.h
+BamgTriangulate_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+Chaco_SOURCES = ../Chaco/Chaco.cpp\
+						 ../Chaco/Chaco.h
+Chaco_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(CHACOLIB) $(GSLLIB)
+
+ContourToMesh_SOURCES = ../ContourToMesh/ContourToMesh.cpp\
+									../ContourToMesh/ContourToMesh.h
+ContourToMesh_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB)
+
+ContourToNodes_SOURCES = ../ContourToNodes/ContourToNodes.cpp\
+									 ../ContourToNodes/ContourToNodes.h
+ContourToNodes_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+ElementConnectivity_SOURCES = ../ElementConnectivity/ElementConnectivity.cpp\
+											../ElementConnectivity/ElementConnectivity.h
+ElementConnectivity_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+EnumToString_SOURCES = ../EnumToString/EnumToString.cpp\
+								  ../EnumToString/EnumToString.h
+EnumToString_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+StringToEnum_SOURCES = ../StringToEnum/StringToEnum.cpp\
+								  ../StringToEnum/StringToEnum.h
+StringToEnum_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+HoleFiller_SOURCES = ../HoleFiller/HoleFiller.cpp\
+								../HoleFiller/HoleFiller.h
+HoleFiller_LDADD = ${deps} $(MPILIB) $(PETSCLIB)  $(GSLLIB)
+
+InternalFront_SOURCES = ../InternalFront/InternalFront.cpp\
+									../InternalFront/InternalFront.h
+InternalFront_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+InterpFromGridToMesh_SOURCES = ../InterpFromGridToMesh/InterpFromGridToMesh.cpp\
+											 ../InterpFromGridToMesh/InterpFromGridToMesh.h
+InterpFromGridToMesh_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB)
+
+InterpFromMeshToMesh2d_SOURCES = ../InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp\
+												../InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.h
+InterpFromMeshToMesh2d_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB)
+
+InterpFromMeshToMesh3d_SOURCES = ../InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.cpp\
+												../InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.h
+InterpFromMeshToMesh3d_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+InterpFromMeshToGrid_SOURCES = ../InterpFromMeshToGrid/InterpFromMeshToGrid.cpp\
+											 ../InterpFromMeshToGrid/InterpFromMeshToGrid.h
+InterpFromMeshToGrid_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+InterpFromMesh2d_SOURCES = ../InterpFromMesh2d/InterpFromMesh2d.cpp\
+										../InterpFromMesh2d/InterpFromMesh2d.h
+InterpFromMesh2d_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB)
+
+KMLFileRead_SOURCES = ../KMLFileRead/KMLFileRead.cpp\
+								 ../KMLFileRead/KMLFileRead.h
+KMLFileRead_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+KMLMeshWrite_SOURCES = ../KMLMeshWrite/KMLMeshWrite.cpp\
+								  ../KMLMeshWrite/KMLMeshWrite.h
+KMLMeshWrite_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+KMLOverlay_SOURCES = ../KMLOverlay/KMLOverlay.cpp\
+								../KMLOverlay/KMLOverlay.h
+KMLOverlay_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+Xy2ll_SOURCES = ../Xy2ll/Xy2ll.cpp\
+						 ../Xy2ll/Xy2ll.h
+Xy2ll_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+Ll2xy_SOURCES = ../Ll2xy/Ll2xy.cpp\
+						 ../Ll2xy/Ll2xy.h
+Ll2xy_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+EdgeDetection_SOURCES = ../EdgeDetection/EdgeDetection.cpp\
+							../EdgeDetection/EdgeDetection.h
+EdgeDetection_LDADD= ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+ExpSimplify_SOURCES = ../ExpSimplify/ExpSimplify.cpp\
+							../ExpSimplify/ExpSimplify.h
+ExpSimplify_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+Exp2Kml_SOURCES = ../Exp2Kml/Exp2Kml.cpp\
+							../Exp2Kml/Exp2Kml.h
+Exp2Kml_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+Kml2Exp_SOURCES = ../Kml2Exp/Kml2Exp.cpp\
+							../Kml2Exp/Kml2Exp.h
+Kml2Exp_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+Kriging_SOURCES = ../Kriging/Kriging.cpp\
+							../Kriging/Kriging.h
+Kriging_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(MULTITHREADINGLIB) $(GSLLIB)
+
+MeshPartition_SOURCES = ../MeshPartition/MeshPartition.cpp\
+									../MeshPartition/MeshPartition.h
+MeshPartition_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(METISLIB) $(GSLLIB)
+
+MeshProfileIntersection_SOURCES = ../MeshProfileIntersection/MeshProfileIntersection.cpp\
+												 ../MeshProfileIntersection/MeshProfileIntersection.h
+MeshProfileIntersection_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+NodeConnectivity_SOURCES = ../NodeConnectivity/NodeConnectivity.cpp\
+										../NodeConnectivity/NodeConnectivity.h
+NodeConnectivity_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+PointCloudFindNeighbors_SOURCES = ../PointCloudFindNeighbors/PointCloudFindNeighbors.cpp\
+												 ../PointCloudFindNeighbors/PointCloudFindNeighbors.h
+PointCloudFindNeighbors_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB)
+
+PropagateFlagsFromConnectivity_SOURCES = ../PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.cpp\
+														  ../PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.h
+PropagateFlagsFromConnectivity_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+Scotch_SOURCES = ../Scotch/Scotch.cpp\
+						  ../Scotch/Scotch.h
+Scotch_LDADD = ${deps} $(SCOTCHLIB) $(MPILIB)
+
+Shp2Exp_SOURCES = ../Shp2Exp/Shp2Exp.cpp\
+							../Shp2Exp/Shp2Exp.h
+Shp2Exp_LDADD = ${deps} $(SHAPELIBLIB) $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+Shp2Kml_SOURCES = ../Shp2Kml/Shp2Kml.cpp\
+							../Shp2Kml/Shp2Kml.h
+Shp2Kml_LDADD = ${deps} $(SHAPELIBLIB) $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+TriaSearch_SOURCES = ../TriaSearch/TriaSearch.cpp\
+								../TriaSearch/TriaSearch.h
+TriaSearch_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+TriMesh_SOURCES = ../TriMesh/TriMesh.cpp\
+							../TriMesh/TriMesh.h
+TriMesh_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(TRIANGLELIB) $(GSLLIB)
+
+TriMeshProcessRifts_SOURCES = ../TriMeshProcessRifts/TriMeshProcessRifts.cpp\
+											../TriMeshProcessRifts/TriMeshProcessRifts.h
+TriMeshProcessRifts_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/patches/configure.ac
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/patches/configure.ac	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/patches/configure.ac	(revision 21239)
@@ -0,0 +1,44 @@
+# Process this file with autoconf to produce a configure script.
+
+#AUTOCONF
+AC_INIT([ISSM],[4.2.5],[issm@jpl.nasa.gov],[issm],[http://issm.jpl.nasa.gov]) #Initializing configure
+AC_CONFIG_AUX_DIR([./aux-config])         #Put config files in aux-config
+AC_CONFIG_MACRO_DIR([m4])                 #m4 macros are located in m4
+m4_include([m4/issm_options.m4])
+AC_CANONICAL_TARGET                       #Determine the system type
+
+#Compilers
+AC_PROG_CC([icc cccl cl icl gcc])
+AC_PROG_CPP
+AC_PROG_CXX([icpc cccl cl icl g++])
+AC_PROG_F77([ifort g77 gfortran])
+
+#Libraries and linking
+AC_F77_LIBRARY_LDFLAGS
+AC_PATH_XTRA      #figure out X library and include paths
+AC_PROG_RANLIB
+
+#AUTOMAKE
+#Initialize automake and declare foreign so that we don't need a ChangeLog, INSTALL, etc
+AM_INIT_AUTOMAKE([foreign])
+AC_CONFIG_HEADERS([./config.h])   #Config file must be config.h
+AM_SILENT_RULES([yes])           #Do not show compilation command by default
+AM_PROG_CC_C_O
+AM_PROG_AR
+
+#Libtool
+#LT_INIT
+
+#Run issm_options.m4
+ISSM_OPTIONS
+
+#List all Makefiles
+AC_CONFIG_FILES([Makefile
+			src/Makefile
+			src/c/Makefile 
+			src/wrappers/Makefile
+			src/wrappers/matlab/Makefile
+			src/m/Makefile])
+
+#End of configure.ac
+AC_OUTPUT
Index: /issm/branches/trunk-larour-NatClimateChange2016/patches/issm_options.m4
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/patches/issm_options.m4	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/patches/issm_options.m4	(revision 21239)
@@ -0,0 +1,1621 @@
+dnl ISSM Options
+
+AC_DEFUN([ISSM_OPTIONS],[
+
+	dnl ISSM's internal options
+	dnl Debugging {{{
+	AC_ARG_ENABLE([debugging],                                        dnl feature
+		AS_HELP_STRING([--enable-debugging],[turn debug support on]),  dnl help string
+		[enable_debugging=$enableval],                                 dnl action if given
+		[enable_debugging=no])                                         dnl action if not given
+	if test "x$enable_debugging" = xyes; then
+		AC_DEFINE([_ISSM_DEBUG_],[1],[Macro to enable debugging in ISSM])
+	fi
+
+	dnl }}}
+    dnl Shared build {{{
+    AC_ARG_ENABLE([sharedlibs],                                                dnl feature
+        AS_HELP_STRING([--enable-sharedlibs], [produce libISSM.so.0]),         dnl help string
+        [enable_sharedlibs=$enableval],                                        dnl action if given
+        [enable_sharedlibs=no])                                                dnl action if not given
+    AM_CONDITIONAL([SHAREDLIBS], [test x$enable_sharedlibs = xyes])
+    dnl }}}
+    dnl Version{{{
+    AC_ARG_ENABLE([version],                                                dnl feature
+        AS_HELP_STRING([--enable-version], [produce libISSM.so.0]),         dnl help string
+        [enable_version=$enableval],                                        dnl action if given
+        [enable_version=no])                                                dnl action if not given
+    AM_CONDITIONAL([VERSION], [test x$enable_VERSION = xyes])
+    dnl }}}
+	dnl Wrappers build {{{
+	AC_ARG_WITH([wrappers],
+		AS_HELP_STRING([--with-wrappers = value],[wrappers compilation. ]),
+		[WRAPPERS_VALUE=$withval],[WRAPPERS_VALUE="yes"])
+	AC_MSG_CHECKING(for wrappers compilation)
+	AM_CONDITIONAL([WRAPPERS], [test x$WRAPPERS_VALUE = xyes])
+	AC_MSG_RESULT($WRAPPERS_VALUE) 
+	dnl }}}
+	dnl Extensions{{{
+	ISSMEXT=".exe"
+	AC_SUBST([ISSMEXT])
+	dnl }}}
+
+	dnl ISSM's externalpackages
+	dnl vendor{{{
+	AC_ARG_WITH([vendor],
+	  AS_HELP_STRING([--with-vendor = VENDOR], [vendor name, ex: intel]),
+	  [VENDOR=$withval],[VENDOR=""]) 
+	AC_MSG_CHECKING(for vendor compilers)
+	if test -n "$VENDOR"; then
+
+		if  test $VENDOR = intel-win32; then
+			export CC=icl
+			export CXX=icl
+			export CFLAGS="-DWIN32 -D_INTEL_WIN_"
+			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_"
+		elif  test $VENDOR = intel-win7-32; then
+			export CC=cccl
+			export CXX=cccl
+			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export CFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export AR="ar-lib lib"
+			export RANLIB=true
+			OSLIBS="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"
+		elif  test $VENDOR = intel-win7-64; then
+			export CC=cccl
+			export CXX=cccl
+			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export CFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export AR="ar-lib lib"
+			export RANLIB=true
+			OSLIBS="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"
+		elif test $VENDOR = intel-linux; then
+			export CC=icc
+			export CXX=icpc
+			export CFLAGS=" -D_INTEL_LINUX_"
+			export CXXFLAGS=" -D_INTEL_LINUX_"
+		elif test $VENDOR = intel-discover; then
+			export CC=icc
+			export CXX=icpc
+			export CXXFLAGS=" -O3 -D_INTEL_LINUX_ -DMPICH_IGNORE_CXX_SEEK"
+			export CFLAGS=" -O3 -D_INTEL_LINUX_ -DMPICH_IGNORE_CXX_SEEK"
+		elif test $VENDOR = intel-pleiades; then
+			export CC=icc
+			export CXX=icpc
+			export CXXFLAGS=" -O3 -D_INTEL_LINUX_ "
+			export CFLAGS=" -O3 -D_INTEL_LINUX_ "
+        else
+		AC_MSG_ERROR([unknow compiler vendor!])
+		fi
+	fi
+	AC_SUBST([OSLIBS]) 
+	AC_MSG_RESULT(done)
+	dnl }}}
+	dnl matlab{{{
+
+	dnl 1. See if matlab has been provided
+	AC_ARG_WITH([matlab-dir],
+		AS_HELP_STRING([--with-matlab-dir=DIR], [matlab root directory. necessary for serial build.]),
+		[MATLAB_ROOT=$withval],[MATLAB_ROOT=""]) 
+
+	AC_MSG_CHECKING([whether matlab is enabled])
+	if test -d "$MATLAB_ROOT"; then
+		HAVE_MATLAB=yes
+	else
+		HAVE_MATLAB=no
+	fi
+	if test x$HAVE_MATLAB = xyes; then
+		AC_DEFINE([_HAVE_MATLAB_],[1],[with Matlab in ISSM src])
+	fi
+	AC_MSG_RESULT($HAVE_MATLAB)
+	AM_CONDITIONAL([MATLAB], [test x$HAVE_MATLAB = xyes])
+
+	dnl 2. Get Matlab libraries
+	if test x$HAVE_MATLAB = xyes; then
+
+		AC_MSG_CHECKING(for matlab headers and libraries in $MATLAB_ROOT)
+  		MATLABINCL="-I$MATLAB_ROOT/extern/include"
+
+		dnl 4. get MEXLIB MEXLINK and MEXEXT (experimental)
+      dnl OS-dependent variables and checks
+  		case "${host_os}" in
+  			*linux*)
+  				if test "${host_cpu}" = "x86_64";
+  				then
+  					MEXLIB=-L"$MATLAB_ROOT/bin/glnxa64/ -lmex"
+  					MEXLINK="-pthread -shared -W2,--version-script,${MATLAB_ROOT}/extern/lib/glnxa64/mexFunction.map";
+  				else
+  					MEXLIB=-L"$MATLAB_ROOT/bin/glnx86/ -lmex"
+  					MEXLINK="-pthread -shared -W2,--version-script,${MATLAB_ROOT}/extern/lib/glnx86/mexFunction.map";
+  				fi
+  				MEXEXT=`$MATLAB_ROOT/bin/mexext`
+  				MEXEXT=".$MEXEXT"
+  			;;
+  			*darwin*)
+  				dnl mex -v gives all the flags for compilation of mex files
+  				dnl if matlab version is 7.9 or more, we must use mexmaci64 (64 bits)
+  				MEXLINK="-O -Wl,-flat_namespace -undefined suppress -arch i386 -bundle -Wl,-exported_symbols_list,$MATLAB_ROOT/extern/lib/maci/mexFunction.map"
+  				MEXLIB=" -L$MATLAB_ROOT/bin/maci/ -lmx -lmex -lmat -lstdc++ -largeArrayDims"
+  				if test $MATLAB_MAJOR -ge 7; then 
+  					 if test $MATLAB_MINOR -ge 9; then 
+  						  MEXLINK="-O -Wl,-flat_namespace -undefined suppress -bundle -Wl,-exported_symbols_list,$MATLAB_ROOT/extern/lib/maci64/mexFunction.map"
+  							 MEXLIB=" -L$MATLAB_ROOT/bin/maci64/ -lmx -lmex -lmat -lstdc++"
+  					 fi
+  				fi
+  				MEXEXT=`$MATLAB_ROOT/bin/mexext`
+  				MEXEXT=".$MEXEXT"
+  			;;
+  			*cygwin*) 
+  				if  test $VENDOR = intel-win7-32; then
+					MATLABLIB="$MATLAB_ROOT/extern/lib/win32/microsoft"
+  					MEXLIB="/link /DLL /export:mexFunction -L$MATLABLIB libmx.lib libmex.lib libmat.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib" 
+  				elif  test $VENDOR = intel-win7-64; then
+					MATLABLIB="$MATLAB_ROOT/extern/lib/win64/microsoft"
+  					MEXLIB="/link /DLL /export:mexFunction -L$MATLABLIB libmx.lib libmex.lib libmat.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib " 
+  				fi
+  				MEXEXT=".$MEXEXT"
+  			;;
+      esac
+	   AC_MSG_RESULT(done)
+
+		AC_SUBST([MATLABINCL])
+		AC_SUBST([MEX])
+		MATLABWRAPPEREXT=$MEXEXT
+		AC_SUBST([MATLABWRAPPEREXT])
+	    AC_SUBST([MEXLIB]) 
+		AC_SUBST([MEXLINK])
+	fi
+	dnl }}}
+	dnl triangle {{{
+	AC_ARG_WITH([triangle-dir],
+			  AS_HELP_STRING([--with-triangle-dir=DIR], [triangle root directory. necessary for serial build]),
+			 [TRIANGLE_ROOT=$withval],[TRIANGLE_ROOT=""]) 
+	AC_MSG_CHECKING(for triangle headers and libraries)
+
+	if test -d "$TRIANGLE_ROOT"; then
+
+		dnl defaults
+		HAVE_TRIANGLE=yes
+		TRIANGLEINCL=-I$TRIANGLE_ROOT/
+
+		case "${host_os}" in
+				*cygwin*)
+				TRIANGLELIB=$TRIANGLE_ROOT/triangle.lib
+				;;
+				*linux*)
+				TRIANGLELIB=$TRIANGLE_ROOT/triangle.a
+				;;
+				*darwin*)
+				TRIANGLELIB=$TRIANGLE_ROOT/triangle.a
+				;;
+			esac
+
+		AC_DEFINE([_HAVE_TRIANGLE_],[1],[with Triangle in ISSM src])
+		AC_SUBST([TRIANGLEINCL])
+		AC_SUBST([TRIANGLELIB])
+
+	else
+		HAVE_TRIANGLE=no
+	fi
+	AC_MSG_RESULT($HAVE_TRIANGLE)
+	dnl }}}
+	dnl dakota{{{
+	AC_ARG_WITH([dakota-dir],
+	  AS_HELP_STRING([--with-dakota-dir=DIR], [dakota root directory. necessary for serial build]),
+	  [DAKOTA_ROOT=$withval],[DAKOTA_ROOT=""]) 
+	AC_MSG_CHECKING(for dakota)
+	
+	if test -d "$DAKOTA_ROOT"; then
+
+		dnl defaults
+		HAVE_DAKOTA=yes
+		AC_MSG_RESULT($HAVE_DAKOTA)
+		DAKOTAINCL=-I$DAKOTA_ROOT/include
+		AC_MSG_CHECKING(for dakota version)
+		DAKOTA_VERSION=`cat $DAKOTA_ROOT/include/dakota_config.h | grep "#define PACKAGE_VERSION" | sed 's/#define PACKAGE_VERSION//' | sed 's/ //g' | sed -e 's/\"//g' `
+		AC_MSG_RESULT($DAKOTA_VERSION)
+		AC_DEFINE_UNQUOTED([DAKOTA_VERSION],"$DAKOTA_VERSION",[Dakota version number])
+		case "${host_os}" in
+			*cygwin*)
+				if      test x$DAKOTA_VERSION = x4.2; then
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver"
+				else if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
+				else
+					AC_MSG_ERROR([Dakota version not found or version ($DAKOTA_VERSION) not supported!]);
+				fi
+				fi
+			;;
+			*linux*)
+				if      test x$DAKOTA_VERSION = x4.2; then
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver"
+				else if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem -lboost_system -ldl"
+				else
+					AC_MSG_ERROR([Dakota version not found or version ($DAKOTA_VERSION) not supported!]);
+				fi
+				fi
+			;;
+			*darwin*)
+				if      test x$DAKOTA_VERSION = x4.2; then
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver" 
+					dnl DAKOTALIB+= "-lgslcblas -L/usr/lib -lblas -llapack"
+				else if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
+					dnl DAKOTALIB+= "-lgslcblas -L/usr/lib -lblas -llapack"
+				else
+					AC_MSG_ERROR([Dakota version not found or version ($DAKOTA_VERSION) not supported!]);
+				fi
+				fi
+			;;
+		esac
+		AC_DEFINE([_HAVE_DAKOTA_],[1],[with Dakota in ISSM src])
+		AC_SUBST([DAKOTAINCL])
+		AC_SUBST([DAKOTALIB])
+
+	else
+		HAVE_DAKOTA=no
+		AC_MSG_RESULT($HAVE_DAKOTA)
+	fi
+	AM_CONDITIONAL([DAKOTA], [test x$HAVE_DAKOTA = xyes])
+	dnl }}}
+	dnl boost{{{
+	AC_ARG_WITH([boost-dir],
+	  AS_HELP_STRING([--with-boost-dir=DIR], [boost root directory.]),
+	  [BOOST_ROOT=$withval],[BOOST_ROOT=""]) 
+	AC_MSG_CHECKING(for boost)
+	
+	if test -d "$BOOST_ROOT"; then
+		dnl defaults
+		HAVE_BOOST=yes
+		BOOSTINCL=-I$BOOST_ROOT/include
+		BOOSTLIB="-L$BOOST_ROOT/lib -lboost_python"
+
+		AC_DEFINE([_HAVE_BOOST_],[1],[with Boost in ISSM src])
+		AC_SUBST([BOOSTINCL])
+		AC_SUBST([BOOSTLIB])
+	else
+		HAVE_BOOST=no
+	fi
+	AM_CONDITIONAL([BOOST], [test x$HAVE_BOOST = xyes])
+	AC_MSG_RESULT($HAVE_BOOST)
+	dnl }}}
+	dnl python{{{
+	AC_ARG_WITH([python-dir],
+	  AS_HELP_STRING([--with-python-dir=DIR], [python root directory.]),
+	  [PYTHON_ROOT=$withval],[PYTHON_ROOT=""]) 
+
+	AC_MSG_CHECKING(for python)
+	if test -d "$PYTHON_ROOT"; then
+		HAVE_PYTHON="yes"
+		AC_DEFINE([_HAVE_PYTHON_],[1],[with Python in ISSM src])
+	else
+		HAVE_PYTHON=no
+	fi
+	AC_MSG_RESULT($HAVE_PYTHON)
+
+	dnl get python version
+	if test x$HAVE_PYTHON = xyes; then
+		AC_MSG_CHECKING(for python version)
+		dnl Query Python for its version number.  Getting [:3] seems to be
+		dnl the best way to do this; it's what "site.py" does in the standard
+		dnl library.
+		PYTHON_VERSION=$($PYTHON_ROOT/bin/python -c "import sys; print sys.version[[:3]]")
+		AC_MSG_RESULT($PYTHON_VERSION)
+
+		dnl recover major: 
+		PYTHON_MAJOR=${PYTHON_VERSION%.*}
+		if test x$PYTHON_MAJOR = x3; then
+			dnl are we running python 3?
+			HAVE_PYTHON3="yes"
+		else
+			HAVE_PYTHON3="no"
+		fi
+		AC_DEFINE_UNQUOTED([_PYTHON_MAJOR_],$PYTHON_MAJOR,[python version major])
+
+		PYTHONINCL=-I$PYTHON_ROOT/include
+		PYTHONLIB="-L$PYTHON_ROOT/lib -lpython$PYTHON_VERSION"
+		PYTHONEXT=.so
+
+		case "${host_os}" in
+			*cygwin*)
+			PYTHONLINK="-shared"
+			;;
+			*linux*)
+			PYTHONLINK="-shared"
+			;;
+			*darwin*)
+			PYTHONLINK="-dynamiclib"
+			;;
+		esac
+
+		AC_SUBST([PYTHONINCL])
+		AC_SUBST([PYTHONLIB])
+		PYTHONWRAPPEREXT=$PYTHONEXT
+		AC_SUBST([PYTHONWRAPPEREXT])
+		AC_SUBST([PYTHONLINK])
+	fi
+	AM_CONDITIONAL([PYTHON], [test x$HAVE_PYTHON = xyes])
+	AM_CONDITIONAL([PYTHON3], [test x$HAVE_PYTHON3 = xyes])
+	dnl }}}
+	dnl python-numpy{{{
+	AC_ARG_WITH([python-numpy-dir],
+	  AS_HELP_STRING([--with-python-numpy-dir=DIR], [python-numpy root directory.]),
+	  [PYTHON_NUMPY_ROOT=$withval],[PYTHON_NUMPY_ROOT=""]) 
+	AC_MSG_CHECKING(for python-numpy)
+	
+	if test -d "$PYTHON_NUMPY_ROOT"; then
+		dnl defaults
+		HAVE_PYTHON_NUMPY=yes
+		PYTHON_NUMPYINCL="-I$PYTHON_NUMPY_ROOT -I$PYTHON_NUMPY_ROOT/core/include/numpy"
+
+		AC_DEFINE([_HAVE_PYTHON_NUMPY_],[1],[with Python-Numpy in ISSM src])
+		AC_SUBST([PYTHON_NUMPYINCL])
+	else
+		HAVE_PYTHON_NUMPY=no
+	fi
+	AC_MSG_RESULT($HAVE_PYTHON_NUMPY)
+	dnl }}}
+	dnl chaco{{{
+	AC_ARG_WITH([chaco-dir],
+	  AS_HELP_STRING([--with-chaco-dir=DIR], [chaco root directory.]),
+	  [CHACO_ROOT=$withval],[CHACO_ROOT=""]) 
+	AC_MSG_CHECKING(for chaco)
+	
+	if test -d "$CHACO_ROOT"; then
+
+		dnl defaults
+		HAVE_CHACO=yes
+		CHACOINCL=-I$CHACO_ROOT/include
+		CHACOLIB="-L$CHACO_ROOT/lib -lchacominusblas"
+
+		AC_DEFINE([_HAVE_CHACO_],[1],[with Chaco in ISSM src])
+		AC_SUBST([CHACOINCL])
+		AC_SUBST([CHACOLIB])
+
+	else
+		HAVE_CHACO=no
+	fi
+	AC_MSG_RESULT($HAVE_CHACO)
+	dnl }}}
+	dnl scotch{{{
+	AC_ARG_WITH([scotch-dir],
+	  AS_HELP_STRING([--with-scotch-dir=DIR], [scotch root directory.]),
+	  [SCOTCH_ROOT=$withval],[SCOTCH_ROOT=""]) 
+	AC_MSG_CHECKING(for scotch)
+	
+	if test -d "$SCOTCH_ROOT"; then
+
+		dnl defaults
+		HAVE_SCOTCH=yes
+		SCOTCHINCL="-DNOFILEIO -I$SCOTCH_ROOT/include -DSCOTCH_VERSION=\\\"UNKNOWN\\\""
+		SCOTCHLIB="-L$SCOTCH_ROOT/lib -lnfioscotch -lnfioscotcherr -lnfioscotcherrexit -lscotchmetis"
+
+		AC_DEFINE([_HAVE_SCOTCH_],[1],[with Scotch in ISSM src])
+		AC_SUBST([SCOTCHINCL])
+		AC_SUBST([SCOTCHLIB])
+
+	else
+		HAVE_SCOTCH=no
+	fi
+	AC_MSG_RESULT($HAVE_SCOTCH)
+	dnl }}}
+	dnl adolc{{{
+	AC_ARG_WITH([adolc-dir],
+		AS_HELP_STRING([--with-adolc-dir=DIR], [adolc root directory.]),
+		[ADOLC_ROOT=$withval],[ADOLC_ROOT="no"]) 
+	AC_MSG_CHECKING(for adolc)
+
+	if test "x$ADOLC_ROOT" = "xno"; then
+		HAVE_ADOLC=no
+	else
+		if test -d "$ADOLC_ROOT"; then
+
+			dnl defaults
+			HAVE_ADOLC=yes
+			ADOLCINCL="-I$ADOLC_ROOT/include"
+			ADOLCLIB="-L$ADOLC_ROOT/lib64 -ladolc"
+
+			AC_DEFINE([_HAVE_ADOLC_],[1],[with adolc in ISSM src])
+			AC_SUBST([ADOLCINCL])
+			AC_SUBST([ADOLCLIB])
+
+		else
+			echo  "Specified directory does not exist!"
+			exit 1
+		fi
+	fi
+	AM_CONDITIONAL([ADOLC], [test x$HAVE_ADOLC = xyes])
+	AC_MSG_RESULT($HAVE_ADOLC)
+	dnl }}}
+	dnl adolc-version{{{
+	AC_ARG_WITH([adolc-version],
+		AS_HELP_STRING([--with-adolc-version=number], [adolc version.]),
+		[ADOLC_VERSION=$withval],[ADOLC_VERSION=2]) 
+	AC_MSG_CHECKING(for adolc-version) 
+
+	AC_DEFINE_UNQUOTED([_ADOLC_VERSION_],$ADOLC_VERSION,[ADOLC version])
+	AC_MSG_RESULT($ADOLC_VERSION)
+	dnl }}}
+	dnl adic2{{{
+	AC_ARG_WITH([adic2-dir],
+	  AS_HELP_STRING([--with-adic2-dir=DIR], [adic2 root directory.]),
+	  [ADIC2_ROOT=$withval],[ADIC2_ROOT="no"]) 
+	AC_MSG_CHECKING(for adic2)
+
+	if test "x$ADIC2_ROOT" = "xno"; then
+		HAVE_ADIC2=no
+	else
+		if test -d "$ADIC2_ROOT"; then
+
+			dnl defaults
+			HAVE_ADIC2=yes
+			ADIC2INCL="-DADIC2_DENSE -I$ADIC2_ROOT/include -I$ADIC2_ROOT/share/runtime_dense/"
+			ADIC2LIB=""
+
+			AC_DEFINE([_HAVE_ADIC2_],[1],[with adic2 in ISSM src])
+			AC_SUBST([ADIC2INCL])
+			AC_SUBST([ADIC2LIB])
+
+		else
+			echo  "Specified directory does not exist!"
+			exit 1
+		fi
+	fi
+	AM_CONDITIONAL([ADIC2], [test x$HAVE_ADIC2 = xyes])
+	AC_MSG_RESULT($HAVE_ADIC2)
+	dnl }}}
+	dnl gsl{{{
+	AC_ARG_WITH([gsl-dir],
+	  AS_HELP_STRING([--with-gsl-dir=DIR], [gsl root directory.]),
+	  [GSL_ROOT=$withval],[GSL_ROOT=""]) 
+	AC_MSG_CHECKING(for gsl)
+	
+	if test -d "$GSL_ROOT"; then
+
+		dnl defaults
+		HAVE_GSL=yes
+		GSLINCL="-I$GSL_ROOT/include"
+		GSLLIB="-dy -L$GSL_ROOT/lib -lgsl -lgslcblas -lm"
+
+		AC_DEFINE([_HAVE_GSL_],[1],[with gsl in ISSM src])
+		AC_SUBST([GSLINCL])
+		AC_SUBST([GSLLIB])
+
+	else
+		HAVE_GSL=no
+	fi
+	AM_CONDITIONAL([GSL], [test x$HAVE_GSL = xyes])
+	AC_MSG_RESULT($HAVE_GSL)
+	dnl }}}
+	dnl rose{{{
+	AC_ARG_WITH([rose-dir],
+	  AS_HELP_STRING([--with-rose-dir=DIR], [rose root directory.]),
+	  [ROSE_ROOT=$withval],[ROSE_ROOT=""]) 
+	AC_MSG_CHECKING(for rose)
+	
+	if test -d "$ROSE_ROOT"; then
+
+		dnl defaults
+		HAVE_ROSE=yes
+		ROSEINCL="-I$ROSE_ROOT/include"
+		ROSELIB=""
+
+		AC_DEFINE([_HAVE_ROSE_],[1],[with rose in ISSM src])
+		AC_SUBST([ROSEINCL])
+		AC_SUBST([ROSELIB])
+
+	else
+		HAVE_ROSE=no
+	fi
+	AM_CONDITIONAL([ROSE], [test x$HAVE_ROSE = xyes])
+	AC_MSG_RESULT($HAVE_ROSE)
+	dnl }}}
+	dnl mpi{{{
+	AC_MSG_CHECKING(for mpi)
+	AC_ARG_WITH([mpi-lib],
+		AS_HELP_STRING([--with-mpi-lib = options],[mpi options, for ex: "-L$MPIROOT -lmpich]),
+		[MPILIB=$withval],[MPILIB=""])
+	
+	AC_ARG_WITH([mpi-include],
+	  AS_HELP_STRING([--with-mpi-include=DIR],[mpi include directory, necessary for parallel build]),
+	  [MPI_INCLUDE=$withval],[MPI_INCLUDE=""])
+	
+	if test -z "$MPILIB" ; then
+		HAVE_MPI=no
+	else
+		if test -z "$MPI_INCLUDE" ; then
+			HAVE_MPI=no
+		else
+			HAVE_MPI=yes
+			MPIINCL=-I"$MPI_INCLUDE"
+			AC_DEFINE([_HAVE_MPI_],[1],[with Mpi in ISSM src])
+			AC_DEFINE([HAVE_MPI],[1],[Mpi Flag for Dakota (DO NOT REMOVE)])
+			AC_SUBST([MPIINCL])
+			AC_SUBST([MPILIB])
+		fi
+	fi
+	AM_CONDITIONAL([MPI], [test x$HAVE_MPI = xyes])
+	AC_MSG_RESULT($HAVE_MPI)
+	dnl }}}
+	dnl petsc{{{
+	AC_ARG_WITH([petsc-dir],
+	  AS_HELP_STRING([--with-petsc-dir=DIR],[PETSc root directory, necessary for parallel build]),
+	  [PETSC_ROOT=$withval],[PETSC_ROOT=""])
+		
+	if test -d "$PETSC_ROOT"; then
+		AC_MSG_CHECKING(for petsc version)
+		PETSC_MAJOR=`cat $PETSC_ROOT/include/petscversion.h | grep "#define PETSC_VERSION_MAJOR" | sed 's/#define PETSC_VERSION_MAJOR//' | sed 's/ //g'`
+		PETSC_MINOR=`cat $PETSC_ROOT/include/petscversion.h | grep "#define PETSC_VERSION_MINOR" | sed 's/#define PETSC_VERSION_MINOR//' | sed 's/ //g'`
+		AC_DEFINE_UNQUOTED([_PETSC_MAJOR_],$PETSC_MAJOR,[PETSc version major])
+		AC_DEFINE_UNQUOTED([_PETSC_MINOR_],$PETSC_MINOR,[PETSc version minor])
+		AC_MSG_RESULT($PETSC_MAJOR.$PETSC_MINOR)
+
+		PETSC_VERSION_DATE_HG=`cat $PETSC_ROOT/include/petscversion.h | grep "#define PETSC_VERSION_DATE_HG" | sed 's/#define PETSC_VERSION_DATE_HG//' | sed 's/ //g' | sed -e 's/\"//g' `
+		PETSC_RELEASE=`cat $PETSC_ROOT/include/petscversion.h | grep "#define PETSC_VERSION_RELEASE" | sed 's/#define PETSC_VERSION_RELEASE//' | sed 's/ //g'`
+
+		AC_MSG_CHECKING(whether petsc is the development version)
+		dnl if test x$PETSC_VERSION_DATE_HG = xunknown; then
+		if test "$PETSC_RELEASE" = "0"; then
+		   AC_DEFINE([_HAVE_PETSCDEV_],[1],[with PETSc-dev])
+			AC_MSG_RESULT(yes)
+		else
+			AC_MSG_RESULT(no)
+		fi
+	fi
+	
+	AC_ARG_WITH([petsc-arch],
+	  AS_HELP_STRING([--with-petsc-arch=DIR],[PETSc arch , necessary for parallel build]),
+	  [PETSC_ARCH=$withval],[PETSC_ARCH=""])
+
+	AC_MSG_CHECKING(for petsc headers and libraries in $PETSC_ROOT for architecture $PETSC_ARCH)
+	
+	dnl To ge PETSc's libraries:
+	dnl cd externalpackages/petsc/src
+	dnl make getlinklibs
+	if test -d "$PETSC_ROOT"; then
+
+	 PETSCINCL=" -I$PETSC_ROOT/include"
+	 dnl Add other location (maybe not needed anymore)
+	 if test -d "$PETSC_ROOT/$PETSC_ARCH/include"; then
+	  PETSCINCL+=" $PETSC_ROOT/$PETSC_ARCH/include"
+	 fi
+	 if test -d "$PETSC_ROOT/include/$PETSC_ARCH"; then
+	  PETSCINCL+=" $PETSC_ROOT/include/$PETSC_ARCH"
+	 fi
+	
+	 case "${host_os}" in
+			*cygwin*)
+			if test $PETSC_MAJOR -lt 3 ; then
+				PETSCLIB="-L$PETSC_ROOT/lib libpetscksp.lib libpetscdm.lib libpetscmat.lib libpetscvec.lib libpetscsnes.lib libpetscts.lib libmpiuni.lib libpetsc.lib"
+			else
+				PETSCLIB="-L$PETSC_ROOT/lib libpetsc.lib"
+				if test $PETSC_MAJOR -gt 3 || test $PETSC_MINOR -ge 3; then PETSCLIB+=" libmetis.lib"; fi
+			fi
+			;;
+			*linux*)
+			if test $PETSC_MAJOR -lt 3 ; then
+				PETSCLIB="-L$PETSC_ROOT/lib -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetsc  -lpetscsnes -lpetscts"
+			else
+				PETSCLIB="-L$PETSC_ROOT/lib -lpetsc -ldl"
+				if test $PETSC_MAJOR -gt 3 || test $PETSC_MINOR -ge 3; then PETSCLIB+=" -lmetis"; fi
+			fi
+			;;
+			*darwin*)
+			if test $PETSC_MAJOR -lt 3 ; then
+				PETSCLIB="-L$PETSC_ROOT/lib -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetscsnes -lpetscts -lpetsc"
+			else
+				PETSCLIB="-L$PETSC_ROOT/lib -lpetsc"
+				if test $PETSC_MAJOR -gt 3 || test $PETSC_MINOR -ge 3; then PETSCLIB+=" -lmetis"; fi
+			fi
+			;;
+		esac
+		AC_DEFINE([_HAVE_PETSC_],[1],[with PETSc in ISSM src])
+		AC_SUBST([PETSCINCL])
+		AC_SUBST([PETSCLIB])
+		HAVE_PETSC=yes
+	else
+		HAVE_PETSC=no
+	fi
+	
+	AM_CONDITIONAL([PETSC], [test x$HAVE_PETSC = xyes])
+	AC_MSG_RESULT($HAVE_PETSC)
+	dnl }}}
+	dnl metis{{{
+	if test "$HAVE_PETSC" = "yes" && test "x$PETSC_MAJOR" = "x3" && test $PETSC_MINOR -ge 3; then
+
+		dnl in petsc >=3.3, metis is provided
+		HAVE_METIS="yes"
+		AC_DEFINE([_METIS_VERSION_],[5],[ Metis version number])
+		AC_DEFINE([_HAVE_METIS_],[1],[with Metis in ISSM src])
+	else
+		AC_ARG_WITH([metis-dir],
+		  AS_HELP_STRING([--with-metis-dir=DIR],[metis root directory. necessary for serial build]),
+		  [METIS_ROOT=$withval],[METIS_ROOT=""])
+
+		AC_MSG_CHECKING(for metis headers and libraries in $METIS_ROOT)
+
+		if test -d "$METIS_ROOT"; then
+
+			dnl first figure out version of metis: does the VERSION file exist?
+			if test -e "$METIS_ROOT/VERSION"; then
+				METIS_VERSION=4
+			else
+				METIS_VERSION=5
+			fi
+
+			dnl defaults
+			HAVE_METIS=yes
+
+			if test "$METIS_VERSION" = "4" ; then
+					
+				METISINCL=-I"$METIS_ROOT/Lib" 
+				case "${host_os}" in
+					*cygwin*)
+					METISLIB="-L$METIS_ROOT libmetis.lib"
+					;;
+					*linux*)
+					METISLIB=-L"$METIS_ROOT/ -lmetis"
+					;;
+					*darwin*)
+					METISLIB=-L"$METIS_ROOT/ -lmetis"
+					;;
+				esac
+
+					AC_DEFINE([_METIS_VERSION_],[4],[ Metis version number])
+			fi
+			if test "$METIS_VERSION" = "5" ; then
+		
+				case "${host_os}" in
+					*cygwin*)
+					METISLIB="-L$METIS_ROOT libmetis.lib"
+					;;
+					*linux*)
+					METISLIB=-L"$METIS_ROOT/lib -lmetis"
+					;;
+					*darwin*)
+					METISLIB=-L"$METIS_ROOT/lib -lmetis"
+					;;
+				esac
+
+				METISINCL=-I"$METIS_ROOT/include" 
+				AC_DEFINE([_METIS_VERSION_],[5],[ Metis version number])
+			fi
+
+			AC_DEFINE([_HAVE_METIS_],[1],[with Metis in ISSM src])
+			AC_SUBST([METISINCL])
+			AC_SUBST([METISLIB])
+		else
+			HAVE_METIS=no
+		fi
+		AC_MSG_RESULT($HAVE_METIS)
+	fi
+	AM_CONDITIONAL([METIS], [test x$HAVE_METIS = xyes])
+	dnl }}}
+	dnl tao{{{
+	AC_ARG_WITH([tao-dir],
+		AS_HELP_STRING([--with-tao-dir=DIR], [tao root directory.]),
+		[TAO_ROOT=$withval],[TAO_ROOT=""]) 
+	AC_MSG_CHECKING(for tao)
+
+	if test -d "$TAO_ROOT"; then
+
+	  HAVE_TAO=yes
+	  TAOINCL="-I$TAO_ROOT/ -I$TAO_ROOT/include -I$TAO_ROOT/bmake/ "
+	  TAOLIB="-L$TAO_ROOT/lib -ltao -lpetsc"
+
+	  AC_DEFINE([_HAVE_TAO_],[1],[with Tao in ISSM src])
+	  AC_SUBST([TAOINCL])
+	  AC_SUBST([TAOLIB])
+	else
+		HAVE_TAO=no
+	fi
+	AC_MSG_RESULT($HAVE_TAO)
+	dnl }}}
+	dnl slepc{{{
+	AC_ARG_WITH([slepc-dir],
+	  AS_HELP_STRING([--with-slepc-dir=DIR],[slepc root directory]),
+	  [SLEPC_ROOT=$withval],[SLEPC_ROOT=""])
+			  
+	AC_MSG_CHECKING(for slepc headers and libraries in $SLEPC_ROOT)
+	if test -d "$SLEPC_ROOT"; then
+		HAVE_SLEPC=yes
+		SLEPCINCL=-I"$SLEPC_ROOT/include"
+		SLEPCLIB=-L"$SLEPC_ROOT/lib/ -lslepc"
+
+		AC_DEFINE([_HAVE_SLEPC_],[1],[with Slepc in ISSM src])
+		AC_SUBST([SLEPCINCL])
+		AC_SUBST([SLEPCLIB])
+	else
+		HAVE_SLEPC=no
+	fi
+	AC_MSG_RESULT($HAVE_SLEPC)
+	dnl }}}
+	dnl shapelib{{{
+	AC_ARG_WITH([shapelib-dir],
+	  AS_HELP_STRING([--with-shapelib-dir=DIR], [shapelib root directory]),
+	  [SHAPELIB_ROOT=$withval],[SHAPELIB_ROOT=""])
+			  
+	AC_MSG_CHECKING(for shapelib headers and libraries in $SHAPELIB_ROOT)
+	if test -d "$SHAPELIB_ROOT"; then
+
+		dnl defaults
+		HAVE_SHAPELIB=yes
+		SHAPELIBINCL=-I"$SHAPELIB_ROOT/include"
+		SHAPELIBLIB=-L"$SHAPELIB_ROOT/lib/ -lshape"
+
+		AC_DEFINE([_HAVE_SHAPELIB_],[1],[with Shapelib in ISSM src])
+		AC_SUBST([SHAPELIBINCL])
+		AC_SUBST([SHAPELIBLIB])
+	else
+		HAVE_SHAPELIB=no
+	fi
+	AC_MSG_RESULT($HAVE_SHAPELIB)
+	dnl }}}
+	dnl scalapack{{{
+	AC_ARG_WITH([scalapack-dir],
+	  AS_HELP_STRING([--with-scalapack-dir=DIR],[scalapack root directory]),
+	  [SCALAPACK_ROOT=$withval],[SCALAPACK_ROOT=""])
+			  
+	AC_MSG_CHECKING(for scalapack headers and libraries in $SCALAPACK_ROOT)
+	if test -d "$SCALAPACK_ROOT"; then
+
+		dnl defaults
+		HAVE_SCALAPACK=yes
+		if test x$VENDOR = xintel-discover; then
+		 SCALAPACKLIB=-L"$SCALAPACK_ROOT/ -lmkl_scalapack_lp64"
+		else
+		 SCALAPACKLIB=-L"$SCALAPACK_ROOT/ -lscalapack"
+		fi
+
+		AC_DEFINE([_HAVE_SCALAPACK_],[1],[with Scalapack in ISSM src])
+		AC_SUBST([SCALAPACKLIB])
+	else
+		HAVE_SCALAPACK=no
+	fi
+	AC_MSG_RESULT($HAVE_SCALAPACK)
+	dnl }}}
+	dnl blas{{{
+	AC_ARG_WITH([blas-lapack-dir],
+	  AS_HELP_STRING([--with-blas-lapack-dir=DIR],[blas-lapack root directory]),
+	  [BLASLAPACK_ROOT=$withval],[BLASLAPACK_ROOT=""])
+			  
+	AC_MSG_CHECKING(for blas and lapack headers and libraries in $BLASLAPACK_ROOT)
+	if test -d "$BLASLAPACK_ROOT"; then
+
+		dnl defaults
+		HAVE_BLASLAPACK=yes
+		BLASLAPACKINCL=""
+	
+		if test x$VENDOR = xintel-discover; then
+		 BLASLAPACKLIB=-L"$BLASLAPACK_ROOT -lmkl_lapack -lmkl -lguide -lpthread"
+		else
+		dnl: branch on whether we are running on windows or linux.
+		case "${host_os}" in
+			*cygwin*)
+			BLASLAPACKLIB="-L$BLASLAPACK_ROOT libf2cblas.lib  libf2clapack.lib"
+			;;
+			*linux*)
+			BLASLAPACKLIB=-L"$BLASLAPACK_ROOT -lflapack -lfblas " 
+			;;
+			*darwin*)
+			BLASLAPACKLIB=-L"$BLASLAPACK_ROOT -lflapack -lfblas " 
+			;;
+		esac
+		fi
+
+		AC_DEFINE([_HAVE_BLASLAPACK_],[1],[with blas lapack in ISSM src])
+		AC_SUBST([BLASLAPACKLIB])
+		AC_SUBST([BLASLAPACKINCL])
+	else
+		HAVE_BLASLAPACK=no
+	fi
+	AC_MSG_RESULT($HAVE_BLASLAPACK)
+	dnl }}}
+	dnl mkl{{{
+	AC_ARG_WITH([mkl-dir],
+	  AS_HELP_STRING([--with-mkl-dir=DIR],[mkl root directory]),
+	  [MKL_ROOT=$withval],[MKL_ROOT=""])
+			  
+	AC_MSG_CHECKING(for mkl headers and libraries in $MKL_ROOT)
+	if test -d "$MKL_ROOT"; then
+
+		dnl defaults
+		HAVE_MKL=yes
+		MKLINCL=""
+		MKLLIB=-L"$MKL_ROOT -lmkl -lmkl_lapack -lmkl_scalapack_ilp64   -lmkl_blacs_sgimpt_ilp64 -lguide  -lpthread"
+		AC_DEFINE([_HAVE_MKL_],[1],[with mkl in ISSM src])
+		AC_SUBST([MKLLIB])
+		AC_SUBST([MKLINCL])
+	else
+		HAVE_MKL=no
+	fi
+	AC_MSG_RESULT($HAVE_MKL)
+	dnl }}}
+	dnl plapack{{{
+	AC_MSG_CHECKING(for plapack)
+	
+	AC_ARG_WITH([plapack-lib],
+	  AS_HELP_STRING([--with-plapack-lib = lib],[plapack library]),
+	  [PLAPACK_LIB=$withval],[PLAPACK_LIB=""])
+	
+	AC_ARG_WITH([plapack-include],
+			  AS_HELP_STRING([--with-plapack-include = include],
+							 [plapack include ]),
+			  [PLAPACK_INCLUDE=$withval],[PLAPACK_INCLUDE=""])
+	  
+	if test -n "$PLAPACK_LIB"; then
+		if test -n "$PLAPACK_INCLUDE"; then
+		
+			dnl defaults
+			HAVE_PLAPACK=yes
+			PLAPACKINCL="$PLAPACK_INCLUDE"
+			PLAPACKLIB="$PLAPACK_LIB"
+
+			AC_DEFINE([_HAVE_PLAPACK_],[1],[with Plapack in ISSM src])
+			AC_SUBST([PLAPACKINCL])
+			AC_SUBST([PLAPACKLIB])
+		else
+			HAVE_PLAPACK=no
+		fi
+	else
+		HAVE_PLAPACK=no
+	fi
+	AC_MSG_RESULT($HAVE_PLAPACK)
+	dnl }}}
+	dnl mumps{{{
+	AC_ARG_WITH([mumps-dir],
+	  AS_HELP_STRING([--with-mumps-dir=DIR],[mumps root directory]),
+	  [MUMPS_ROOT=$withval],[MUMPS_ROOT=""])
+			  
+	AC_MSG_CHECKING(for mumps headers and libraries in $MUMPS_ROOT)
+	if test -d "$MUMPS_ROOT"; then
+
+		dnl defaults
+		HAVE_MUMPS=yes
+		MUMPSINCL=-I"$MUMPS_ROOT/include"
+		if test "$PETSC_MAJOR" = "2" ; then
+		MUMPSLIB=-L"$MUMPS_ROOT/lib -ldmumps -lcmumps  -lpord "
+		else
+		dnl MUMPSLIB=-L"$MUMPS_ROOT/lib -ldmumps -lcmumps  -lmumps_common -lpord -lparmetis -lzmumps"
+		MUMPSLIB=-L"$MUMPS_ROOT/lib -ldmumps -lcmumps  -lmumps_common -lpord -lparmetis"
+		fi
+
+		AC_DEFINE([_HAVE_MUMPS_],[1],[with Mumps in ISSM src])
+		AC_SUBST([MUMPSINCL])
+		AC_SUBST([MUMPSLIB])
+	else
+		HAVE_MUMPS=no
+	fi
+	AM_CONDITIONAL([MUMPS], [test x$HAVE_MUMPS = xyes])
+	AC_MSG_RESULT($HAVE_MUMPS)
+	dnl }}}
+	dnl blacs{{{
+	AC_ARG_WITH([blacs-dir],
+		AS_HELP_STRING([--with-blacs-dir=DIR],[blacs root directory]),
+			  [BLACS_ROOT=$withval],[BLACS_ROOT=""])
+			  
+	AC_MSG_CHECKING(for blacs headers and libraries in $BLACS_ROOT)
+	if test -d "$BLACS_ROOT"; then
+
+		dnl defaults
+		HAVE_BLACS=yes
+		BLACSINCL=""
+		if test x$VENDOR = xintel-discover; then
+		 BLACSLIB=-L"$BLACS_ROOT/ -lmkl_blacs_intelmpi_lp64"
+		else
+		 BLACSLIB=-L"$BLACS_ROOT/ -lblacs"
+		fi
+        
+		AC_DEFINE([_HAVE_BLACS_],[1],[with Blacs in ISSM src])
+		AC_SUBST([BLACSINCL])
+		AC_SUBST([BLACSLIB])
+	else
+		HAVE_BLACS=no
+	fi
+	AC_MSG_RESULT($HAVE_BLACS)
+	dnl }}}
+	dnl hypre{{{
+	AC_ARG_WITH([hypre-dir],
+	  AS_HELP_STRING([--with-hypre-dir=DIR],[hypre root directory]),
+			  [HYPRE_ROOT=$withval],[HYPRE_ROOT=""])
+			  
+	AC_MSG_CHECKING(for hypre headers and libraries in $HYPRE_ROOT)
+	if test -d "$HYPRE_ROOT"; then
+
+		dnl defaults
+		HAVE_HYPRE=yes
+		HYPREINCL=""
+		HYPRELIB=-L"$HYPRE_ROOT/lib -lHYPRE"
+        
+		AC_DEFINE([_HAVE_HYPRE_],[1],[with Blacs in ISSM src])
+		AC_SUBST([HYPREINCL])
+		AC_SUBST([HYPRELIB])
+	else
+		HAVE_HYPRE=no
+	fi
+	AC_MSG_RESULT($HAVE_HYPRE)
+	dnl }}}
+	dnl prometheus{{{
+		AC_ARG_WITH([prometheus-dir],
+					AS_HELP_STRING([--with-prometheus-dir=DIR],[prometheus root directory]),
+					[PROMETHEUS_ROOT=$withval],[PROMETHEUS_ROOT=""])
+
+		  AC_MSG_CHECKING(for prometheus headers and libraries in $PROMETHEUS_ROOT)
+		  if test -d "$PROMETHEUS_ROOT"; then
+
+			dnl defaults
+			  HAVE_PROMETHEUS=yes
+			  PROMETHEUSINCL=-I"$PROMETHEUS_ROOT/include"
+			  PROMETHEUSLIB=-L"$PROMETHEUS_ROOT/lib -lpromfei -lprometheus -lparmetis"
+
+			  AC_DEFINE([_HAVE_PROMETHEUS_],[1],[with Prometheus in ISSM src])
+			  AC_SUBST([PROMETHEUSINCL])
+			  AC_SUBST([PROMETHEUSLIB])
+		  else
+				HAVE_PROMETHEUS=no
+			fi
+			AC_MSG_RESULT($HAVE_PROMETHEUS)
+		dnl }}}
+dnl spai{{{
+	AC_ARG_WITH([spai-dir],
+				AS_HELP_STRING([--with-spai-dir=DIR],[spai root directory]),
+				[SPAI_ROOT=$withval],[SPAI_ROOT=""])
+
+	  AC_MSG_CHECKING(for spai headers and libraries in $SPAI_ROOT)
+	  if test -d "$SPAI_ROOT"; then
+
+		dnl defaults
+		  HAVE_SPAI=yes
+		  SPAIINCL=-I"$SPAI_ROOT/include"
+		  SPAILIB=-L"$SPAI_ROOT/lib -lspai"
+
+		  AC_DEFINE([_HAVE_SPAI_],[1],[with Spai in ISSM src])
+		  AC_SUBST([SPAIINCL])
+		  AC_SUBST([SPAILIB])
+	  else
+		HAVE_SPAI=no
+		  fi
+		  AC_MSG_RESULT($HAVE_SPAI)
+		  dnl }}}
+dnl superlu{{{ 
+	AC_ARG_WITH([superlu-dir],
+				AS_HELP_STRING([--with-superlu-dir=DIR],[superlu root directory]),
+				[SUPERLU_ROOT=$withval],[SUPERLU_ROOT=""])
+
+	  AC_MSG_CHECKING(for superlu headers and libraries in $SUPERLU_ROOT)
+	  if test -d "$SUPERLU_ROOT"; then
+
+		dnl defaults
+		  HAVE_SUPERLU=yes
+		  SUPERLUINCL=-I"$SUPERLU_ROOT/include"
+		  SUPERLULIB=-L"$SUPERLU_ROOT/lib -lsuperlu_4.3"
+
+		  AC_DEFINE([_HAVE_SUPERLU_],[1],[with Superlu in ISSM src])
+		  AC_SUBST([SUPERLUINCL])
+		  AC_SUBST([SUPERLULIB])
+	  else
+		HAVE_SUPERLU=no
+		  fi
+		  AC_MSG_RESULT($HAVE_SUPERLU)
+		  dnl }}}
+dnl spooles{{{ 
+	AC_ARG_WITH([spooles-dir],
+				AS_HELP_STRING([--with-spooles-dir=DIR],[spooles root directory]),
+				[SPOOLES_ROOT=$withval],[SPOOLES_ROOT=""])
+
+	  AC_MSG_CHECKING(for spooles headers and libraries in $SPOOLES_ROOT)
+	  if test -d "$SPOOLES_ROOT"; then
+
+		dnl defaults
+		  HAVE_SPOOLES=yes
+		  SPOOLESINCL=-I"$SPOOLES_ROOT/include"
+		  SPOOLESLIB=-L"$SPOOLES_ROOT/lib -lspooles"
+
+		  AC_DEFINE([_HAVE_SPOOLES_],[1],[with Spooles in ISSM src])
+		  AC_SUBST([SPOOLESINCL])
+		  AC_SUBST([SPOOLESLIB])
+	  else
+		HAVE_SPOOLES=no
+		  fi
+		  AC_MSG_RESULT($HAVE_SPOOLES)
+		  dnl }}}
+dnl pastix{{{ 
+	AC_ARG_WITH([pastix-dir],
+				AS_HELP_STRING([--with-pastix-dir=DIR],[pastix root directory]),
+				[PASTIX_ROOT=$withval],[PASTIX_ROOT=""])
+
+	  AC_MSG_CHECKING(for pastix headers and libraries in $PASTIX_ROOT)
+	  if test -d "$PASTIX_ROOT"; then
+
+		dnl defaults
+		  HAVE_PASTIX=yes
+		  PASTIXINCL=-I"$PASTIX_ROOT/include"
+		  PASTIXLIB=-L"$PASTIX_ROOT/lib -lpastix_XXbit_mpi_smp_nobubble_int32_simple_real_scotch_i686_pc_linux -lptscotch -lptscotcherr -lpastix"
+
+		  AC_DEFINE([_HAVE_PASTIX_],[1],[with Pastix in ISSM src])
+		  AC_SUBST([PASTIXINCL])
+		  AC_SUBST([PASTIXLIB])
+	  else
+		HAVE_PASTIX=no
+		  fi
+		  AC_MSG_RESULT($HAVE_PASTIX)
+		  dnl }}}
+	dnl ml{{{
+	AC_ARG_WITH([ml-dir],
+	  AS_HELP_STRING([--with-ml-dir=DIR],[ml root directory]),
+			  [ML_ROOT=$withval],[ML_ROOT=""])
+			  
+	AC_MSG_CHECKING(for ml headers and libraries in $ML_ROOT)
+	if test -d "$ML_ROOT"; then
+
+		dnl defaults
+		HAVE_ML=yes
+		MLINCL=-I"$ML_ROOT/include"
+		MLLIB=-L"$ML_ROOT/lib -lml"
+        
+		AC_DEFINE([_HAVE_ML_],[1],[with Blacs in ISSM src])
+		AC_SUBST([MLINCL])
+		AC_SUBST([MLLIB])
+	else
+		HAVE_ML=no
+	fi
+	AC_MSG_RESULT($HAVE_ML)
+	dnl }}}
+	dnl umfpack{{{
+		AC_ARG_WITH([umfpack-dir],
+		  AS_HELP_STRING([--with-umfpack-dir=DIR],[UMFPACK root directory]),
+					[UMFPACK_ROOT=$withval],[UMFPACK_ROOT=""])
+
+		AC_MSG_CHECKING(for UMFPACK headers and libraries in $UMFPACK_ROOT)
+		if test -d "$UMFPACK_ROOT"; then
+
+			dnl defaults
+			HAVE_UMFPACK=yes
+			UMFPACKINCL=""
+			UMFPACKLIB=-L"$UMFPACK_ROOT/lib -lumfpack -lumfpack.5.5.1"
+
+			AC_DEFINE([_HAVE_UMFPACK_],[1],[with UMFPACK in ISSM src])
+			AC_SUBST([UMFPACKINCL])
+			AC_SUBST([UMFPACKLIB])
+		else
+			HAVE_UMFPACK=no
+		fi
+		AC_MSG_RESULT($HAVE_UMFPACK)
+	dnl }}}
+dnl math{{{
+	AC_MSG_CHECKING(for math library)
+	AC_ARG_WITH([math-lib],
+	  AS_HELP_STRING([--with-math-lib = otions],[math options, for ex: "/usr/lib/libm.a]),
+	  [MATH_LIB=$withval],[MATH_LIB=""])
+
+	dnl check that --with-math-lib may have been provided
+	if test -n "$MATH_LIB" ; then
+		HAVE_MATH=yes
+		MATHLIB="$MATH_LIB"
+
+		AC_DEFINE([_HAVE_MATH_],[1],[with MATH in ISSM src])
+		AC_SUBST([MATHLIB])
+	fi
+	AC_MSG_RESULT(done)
+	dnl }}}
+	dnl fortran{{{
+	AC_ARG_WITH([fortran],
+		AS_HELP_STRING([--with-fortran = YES], [do we compile fortran code (default is yes)]),
+		[FORTRAN=$withval],[FORTRAN=yes]) 
+	AC_MSG_CHECKING(for fortran compilation)
+	if test "x$FORTRAN" = "xyes"; then
+		dnl defaults
+		HAVE_FORTRAN=yes
+
+		AC_DEFINE([_HAVE_FORTRAN_],[1],[with fortran capability])
+	else
+		HAVE_FORTRAN=no
+	fi
+	AM_CONDITIONAL([FORTRAN], [test x$FORTRAN = xyes])
+	AC_MSG_RESULT($FORTRAN)
+
+	if test "x$FORTRAN" = "xyes"; then
+		dnl fortran library  option
+		AC_MSG_CHECKING(for fortran library)
+		AC_ARG_WITH([fortran-lib],
+		  AS_HELP_STRING([--with-fortran-lib = options],[fortran options, for ex: "/usr/lib/gfortran.a]),
+			[FORTRAN_LIB=$withval],[FORTRAN_LIB=""])
+
+		dnl check that --with-fortran-lib may have been provided
+		if test -n "$FORTRAN_LIB" ; then
+			dnl check that library provided EXISTS!
+		   FORTRAN_DIR=$(echo $FORTRAN_LIB | sed -e "s/-L//g" | awk '{print $[1]}')
+			if test -d "$FORTRAN_DIR" || test -f "$FORTRAN_DIR"; then
+				FORTRANLIB="$FORTRAN_LIB"
+				AC_DEFINE([_HAVE_FORTRAN_],[1],[with FORTRAN in ISSM src])
+				AC_SUBST([FORTRANLIB])
+			else
+			 if test "x$HAVE_MPI" = "xyes"; then
+				FORTRANLIB=$(mpif77 -print-file-name="libgfortran.a")
+				if test -f "$FORTRANLIB"; then
+					 AC_MSG_ERROR([fortran library provided ($FORTRAN_LIB) does not exist, MPI suggests the following library: $FORTRANLIB]);
+				fi
+			 fi
+				AC_MSG_ERROR([frtran library provided ($FORTRAN_LIB$) does not exist!]);
+			fi
+		fi
+		AC_MSG_RESULT(done)
+	fi
+	dnl }}}
+	dnl graphics{{{
+	AC_MSG_CHECKING(for graphics library)
+	AC_ARG_WITH([graphics-lib],
+	  AS_HELP_STRING([--with-graphics-lib = options],[graphics options, for ex: "/usr/X11/lib/libX11.a]),
+	  [GRAPHICS_LIB=$withval],[GRAPHICS_LIB=""])
+
+	dnl check that --with-graphics-lib may have been provided
+	
+	if test -n "$GRAPHICS_LIB" ; then
+		dnl check that library provided EXISTS!
+		GRAPHICS_DIR=$(echo $GRAPHICS_LIB | sed -e "s/-L//g" | awk '{print $[1]}')
+		if test -d "$GRAPHICS_DIR" || test -f "$GRAPHICS_DIR"; then
+			HAVE_GRAPHICS=yes
+			GRAPHICSLIB="$GRAPHICS_LIB"
+			AC_DEFINE([_HAVE_GRAPHICS_],[1],[with GRAPHICS in ISSM src])
+			AC_SUBST([GRAPHICSLIB])
+		else
+			if test -f "$PETSC_ROOT/conf/petscvariables"; then
+				GRAPHICSLIB=$(cat $PETSC_ROOT/conf/petscvariables | grep X_LIB)
+				AC_MSG_ERROR([graphics library provided ($GRAPHICS_LIB) does not exist, PETSc suggests the following library: $GRAPHICSLIB]);
+			fi
+			AC_MSG_ERROR([graphics library provided ($GRAPHICS_LIB$) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT(done)
+	dnl }}}
+
+	dnl Capabilities
+	dnl with-kml{{{
+	AC_ARG_WITH([kml],
+		AS_HELP_STRING([--with-kml = YES],[compile with kml capabilities (default is yes)]),
+		[KML=$withval],[KML=yes]) 
+	AC_MSG_CHECKING(for kml capability compilation)
+
+	if test "x$KML" = "xyes"; then
+		HAVE_KML=yes
+		AC_DEFINE([_HAVE_KML_],[1],[with kml capability])
+	else
+		HAVE_KML=no
+	fi
+	AM_CONDITIONAL([KML], [test x$HAVE_KML = xyes])
+	AC_MSG_RESULT($HAVE_KML)
+	dnl }}}
+	dnl with-kriging{{{
+	AC_ARG_WITH([kriging],
+		AS_HELP_STRING([--with-kriging = YES],[compile with kriging capabilities (default is yes)]),
+		[KRIGING=$withval],[KRIGING=yes]) 
+	AC_MSG_CHECKING(for kriging capability compilation)
+
+	if test "x$KRIGING" = "xyes"; then
+		HAVE_KRIGING=yes
+		AC_DEFINE([_HAVE_KRIGING_],[1],[with kriging capability])
+	else
+		HAVE_KRIGING=no
+	fi
+	AM_CONDITIONAL([KRIGING], [test x$HAVE_KRIGING = xyes])
+	AC_MSG_RESULT($HAVE_KRIGING)
+	dnl }}}
+	dnl with-steadystate{{{
+	AC_ARG_WITH([steadystate],
+		AS_HELP_STRING([--with-steadystate = YES],[compile with steadystate capabilities (default is yes)]),
+		[STEADYSTATE=$withval],[STEADYSTATE=yes]) 
+	AC_MSG_CHECKING(for steadystate capability compilation)
+
+	if test "x$STEADYSTATE" = "xyes"; then
+
+		dnl defaults
+		HAVE_STEADYSTATE=yes
+
+		AC_DEFINE([_HAVE_STEADYSTATE_],[1],[with steadystate capability])
+	else
+		HAVE_STEADYSTATE=no
+	fi
+	AM_CONDITIONAL([STEADYSTATE], [test x$HAVE_STEADYSTATE = xyes])
+	AC_MSG_RESULT($HAVE_STEADYSTATE)
+	dnl }}}
+	dnl with-transient{{{
+	AC_ARG_WITH([transient],
+		AS_HELP_STRING([--with-transient = YES], [compile with transient capabilities (default is yes)]),
+		[TRANSIENT=$withval],[TRANSIENT=yes]) 
+	AC_MSG_CHECKING(for transient capability compilation)
+
+	if test "x$TRANSIENT" = "xyes"; then
+
+		dnl defaults
+		HAVE_TRANSIENT=yes
+
+		AC_DEFINE([_HAVE_TRANSIENT_],[1],[with transient capability])
+	else
+		HAVE_TRANSIENT=no
+	fi
+	AM_CONDITIONAL([TRANSIENT], [test x$HAVE_TRANSIENT = xyes])
+	AC_MSG_RESULT($HAVE_TRANSIENT)
+	dnl }}}
+	dnl with-thermal{{{
+	AC_ARG_WITH([thermal],
+		AS_HELP_STRING([--with-thermal = YES], [compile with thermal capabilities (default is yes)]),
+		[THERMAL=$withval],[THERMAL=yes]) 
+	AC_MSG_CHECKING(for thermal capability compilation)
+
+	if test "x$THERMAL" = "xyes"; then
+
+		dnl defaults
+		HAVE_THERMAL=yes
+
+		AC_DEFINE([_HAVE_THERMAL_],[1],[with thermal capability])
+	else
+		HAVE_THERMAL=no
+	fi
+	AM_CONDITIONAL([THERMAL], [test x$HAVE_THERMAL = xyes])
+	AC_MSG_RESULT($HAVE_THERMAL)
+	dnl }}}
+	dnl with-prognostic{{{
+	AC_ARG_WITH([prognostic],
+		AS_HELP_STRING([--with-prognostic = YES], [compile with prognostic capabilities (default is yes)]),
+		[PROGNOSTIC=$withval],[PROGNOSTIC=yes]) 
+	AC_MSG_CHECKING(for prognostic capability compilation)
+
+	if test "x$PROGNOSTIC" = "xyes"; then
+
+		dnl defaults
+		HAVE_PROGNOSTIC=yes
+
+		AC_DEFINE([_HAVE_PROGNOSTIC_],[1],[with prognostic capability])
+	else
+		HAVE_PROGNOSTIC=no
+	fi
+	AM_CONDITIONAL([PROGNOSTIC], [test x$HAVE_PROGNOSTIC = xyes])
+	AC_MSG_RESULT($HAVE_PROGNOSTIC)
+	dnl }}}
+	dnl with-control{{{
+	AC_ARG_WITH([control],
+		AS_HELP_STRING([--with-control = YES], [compile with control capabilities (default is yes)]),
+		[CONTROL=$withval],[CONTROL=yes]) 
+	AC_MSG_CHECKING(for control capability compilation)
+
+	if test "x$CONTROL" = "xyes"; then
+
+		dnl defaults
+		HAVE_CONTROL=yes
+
+		AC_DEFINE([_HAVE_CONTROL_],[1],[with control capability])
+	else
+		HAVE_CONTROL=no
+	fi
+	AM_CONDITIONAL([CONTROL], [test x$HAVE_CONTROL = xyes])
+	AC_MSG_RESULT($HAVE_CONTROL)
+	dnl }}}
+	dnl with-hydrology{{{
+	AC_ARG_WITH([hydrology],
+		AS_HELP_STRING([--with-hydrology = YES], [compile with hydrology capabilities (default is yes)]),
+		[HYDROLOGY=$withval],[HYDROLOGY=yes]) 
+	AC_MSG_CHECKING(for hydrology capability compilation)
+
+	if test "x$HYDROLOGY" = "xyes"; then
+
+		dnl defaults
+		HAVE_HYDROLOGY=yes
+
+		AC_DEFINE([_HAVE_HYDROLOGY_],[1],[with hydrology capability])
+	else
+		HAVE_HYDROLOGY=no
+	fi
+	AM_CONDITIONAL([HYDROLOGY], [test x$HAVE_HYDROLOGY = xyes])
+	AC_MSG_RESULT($HAVE_HYDROLOGY)
+	dnl }}}
+	dnl with-diagnostic{{{
+	AC_ARG_WITH([diagnostic],
+		AS_HELP_STRING([--with-diagnostic = YES], [compile with diagnostic capabilities (default is yes)]),
+		[DIAGNOSTIC=$withval],[DIAGNOSTIC=yes]) 
+	AC_MSG_CHECKING(for diagnostic capability compilation)
+
+	if test "x$DIAGNOSTIC" = "xyes"; then
+
+		dnl defaults
+		HAVE_DIAGNOSTIC=yes
+
+		AC_DEFINE([_HAVE_DIAGNOSTIC_],[1],[with diagnostic capability])
+	else
+		HAVE_DIAGNOSTIC=no
+	fi
+	AM_CONDITIONAL([DIAGNOSTIC], [test x$HAVE_DIAGNOSTIC = xyes])
+	AC_MSG_RESULT($HAVE_DIAGNOSTIC)
+	dnl }}}
+	dnl with-balanced{{{
+	AC_ARG_WITH([balanced],
+		AS_HELP_STRING([--with-balanced = YES], [compile with balanced capabilities (default is yes)]),
+		[BALANCED=$withval],[BALANCED=yes]) 
+	AC_MSG_CHECKING(for balanced capability compilation)
+
+	if test "x$BALANCED" = "xyes"; then
+
+		dnl defaults
+		HAVE_BALANCED=yes
+
+		AC_DEFINE([_HAVE_BALANCED_],[1],[with balanced capability])
+	else
+		HAVE_BALANCED=no
+	fi
+	AM_CONDITIONAL([BALANCED], [test x$HAVE_BALANCED = xyes])
+	AC_MSG_RESULT($HAVE_BALANCED)
+	dnl }}}
+	dnl with-responses{{{
+	AC_ARG_WITH([responses],
+		AS_HELP_STRING([--with-responses = YES], [compile with responses capabilities (default is yes)]),
+		[RESPONSES=$withval],[RESPONSES=yes]) 
+	AC_MSG_CHECKING(for responses capability compilation)
+
+	if test "x$RESPONSES" = "xyes"; then
+
+		dnl defaults
+		HAVE_RESPONSES=yes
+
+		AC_DEFINE([_HAVE_RESPONSES_],[1],[with responses capability])
+	else
+		HAVE_RESPONSES=no
+	fi
+	AM_CONDITIONAL([RESPONSES], [test x$HAVE_RESPONSES = xyes])
+	AC_MSG_RESULT($HAVE_RESPONSES)
+	dnl }}}
+	dnl with-slope{{{
+	AC_ARG_WITH([slope],
+		AS_HELP_STRING([--with-slope = YES], [compile with slope capabilities (default is yes)]),
+		[SLOPE=$withval],[SLOPE=yes]) 
+	AC_MSG_CHECKING(for slope capability compilation)
+
+	if test "x$SLOPE" = "xyes"; then
+
+		dnl defaults
+		HAVE_SLOPE=yes
+
+		AC_DEFINE([_HAVE_SLOPE_],[1],[with slope capability])
+	else
+		HAVE_SLOPE=no
+	fi
+	AM_CONDITIONAL([SLOPE], [test x$HAVE_SLOPE = xyes])
+	AC_MSG_RESULT($HAVE_SLOPE)
+	dnl }}}
+	dnl with-groundingline{{{
+	AC_ARG_WITH([groundingline],
+		AS_HELP_STRING([--with-groundingline = YES], [compile with groundingline capabilities (default is yes)]),
+		[GROUNDINGLINE=$withval],[GROUNDINGLINE=yes]) 
+	AC_MSG_CHECKING(for groundingline capability compilation)
+
+	if test "x$GROUNDINGLINE" = "xyes"; then
+
+		dnl defaults
+		HAVE_GROUNDINGLINE=yes
+
+		AC_DEFINE([_HAVE_GROUNDINGLINE_],[1],[with groundingline capability])
+	else
+		HAVE_GROUNDINGLINE=no
+	fi
+	AM_CONDITIONAL([GROUNDINGLINE], [test x$HAVE_GROUNDINGLINE = xyes])
+	AC_MSG_RESULT($HAVE_GROUNDINGLINE)
+	dnl }}}
+	dnl with-rifts{{{
+	AC_ARG_WITH([rifts],
+		AS_HELP_STRING([--with-rifts = YES], [compile with rifts capabilities (default is yes)]),
+		[RIFTS=$withval],[RIFTS=yes]) 
+	AC_MSG_CHECKING(for rifts capability compilation)
+
+	if test "x$RIFTS" = "xyes"; then
+
+		dnl defaults
+		HAVE_RIFTS=yes
+
+		AC_DEFINE([_HAVE_RIFTS_],[1],[with rifts capability])
+	else
+		HAVE_RIFTS=no
+	fi
+	AM_CONDITIONAL([RIFTS], [test x$HAVE_RIFTS = xyes])
+	AC_MSG_RESULT($HAVE_RIFTS)
+	dnl }}}
+	dnl math77{{{
+	AC_ARG_WITH([math77-dir],
+		AS_HELP_STRING([--with-math77-dir=DIR], [math77 root directory.]),
+		[MATH77_ROOT=$withval],[MATH77_ROOT=""]) 
+	AC_MSG_CHECKING(for math77)
+
+	if test -d "$MATH77_ROOT"; then
+
+	  HAVE_MATH77=yes
+	  MATH77LIB="-L$MATH77_ROOT/ -lmath77"
+
+	  AC_DEFINE([_HAVE_MATH77_],[1],[with math77 in ISSM src])
+	  AC_SUBST([MATH77LIB])
+	else
+		HAVE_MATH77=no
+	fi
+	AC_MSG_RESULT($HAVE_MATH77)
+	dnl }}}
+	dnl with-gia{{{
+	AC_ARG_WITH([gia],
+		AS_HELP_STRING([--with-gia = YES], [compile with gia capabilities (default is yes)]),
+		[GIA=$withval],[GIA=no]) 
+	AC_MSG_CHECKING(for gia capability compilation)
+
+	if test "x$GIA" = "xyes"; then
+	  
+	  if test "x$HAVE_MATH77" = "xno"; then
+		  HAVE_GIA=no
+		  AC_MSG_ERROR([gia requires compilation of math77 library! Reconfigure with --with-math77 option on]);
+	  else
+		dnl defaults
+		HAVE_GIA=yes
+		AC_DEFINE([_HAVE_GIA_],[1],[with gia capability])
+	  fi
+
+	else
+		HAVE_GIA=no
+	fi
+	AM_CONDITIONAL([GIA], [test x$HAVE_GIA = xyes])
+	AC_MSG_RESULT($HAVE_GIA)
+	dnl }}}
+	dnl with-ios{{{
+	AC_ARG_WITH([ios],
+		AS_HELP_STRING([--with-ios = YES], [compile with iOS capabilities (default is no, alternatives are yes)]),
+		[IOS=$withval],[IOS=no]) 
+	AC_MSG_CHECKING(for iOS compilation)
+
+	if test "x$IOS" = "xyes"; then
+		dnl defaults
+		HAVE_IOS=yes
+
+		AC_DEFINE([_HAVE_IOS_],[1],[with android capability])
+	elif test "x$IOS" = "xno"; then
+		HAVE_IOS=no
+	else
+	  AC_MSG_ERROR([--with-ios should be either no or yes])
+	fi
+	AM_CONDITIONAL([IOS], [test x$HAVE_IOS != xno])
+	AC_DEFINE([_HAVE_IOS_],[1],[with ios.])
+	AC_MSG_RESULT($HAVE_IOS)
+	dnl }}}
+	dnl with-android{{{
+	AC_ARG_WITH([android],
+		AS_HELP_STRING([--with-android = EXE], [compile with android capabilities (default is no, alternatives are exe and jni)]),
+		[ANDROID=$withval],[ANDROID=no]) 
+	AC_MSG_CHECKING(for android capability compilation)
+
+	if test "x$ANDROID" = "xjni"; then
+
+		dnl defaults
+		HAVE_ANDROID=jni
+		AC_DEFINE([_HAVE_ANDROID_],[1],[with android capability])
+		AC_DEFINE([_HAVE_ANDROID_JNI_],[1],[with android jni])
+	elif test "x$ANDROID" = "xexe"; then
+		dnl defaults
+		HAVE_ANDROID=exe
+
+		AC_DEFINE([_HAVE_ANDROID_],[1],[with android capability])
+	elif test "x$ANDROID" = "xno"; then
+		HAVE_ANDROID=no
+	else
+	  AC_MSG_ERROR([--with-android should be either no, exe or jni])
+	fi
+	AM_CONDITIONAL([ANDROID], [test x$HAVE_ANDROID != xno])
+	AM_CONDITIONAL([ANDROIDJNI], [test x$HAVE_ANDROID = xjni])
+	AM_CONDITIONAL([ANDROIDEXE], [test x$HAVE_ANDROID = xexe])
+	AC_DEFINE([_HAVE_ANDROID_],[1],[with android.])
+	AC_MSG_RESULT($HAVE_ANDROID)
+	dnl }}}
+	dnl with-android-ndk{{{
+	AC_ARG_WITH([android-ndk],
+	  AS_HELP_STRING([--with-android-ndk=DIR], [android-ndk root directory.]),
+	  [ANDROID_NDK_ROOT=$withval],[ANDROID_NDK_ROOT=""]) 
+	AC_MSG_CHECKING(with android ndk)
+	
+	if test -d "$ANDROID_NDK_ROOT"; then
+		dnl defaults
+		HAVE_ANDROID_NDK=yes
+		ANDROID_NDKINCL="-I$ANDROID_NDK_ROOT/arm-linux-android-install/sysroot/usr/include"
+
+		AC_DEFINE([_HAVE_ANDROID_NDK_],[1],[with android ndk in ISSM src])
+		AC_SUBST([ANDROID_NDKINCL])
+	else
+		HAVE_ANDROID_NDK=no
+	fi
+	AC_MSG_RESULT($HAVE_ANDROID_NDK)
+	dnl }}}
+	dnl with-3d{{{
+	AC_ARG_WITH([3d],
+		AS_HELP_STRING([--with-3d = YES], [compile with 3d capabilities (default is yes)]),
+		[THREED=$withval],[THREED=yes]) 
+	AC_MSG_CHECKING(for 3d capability compilation)
+
+	if test "x$THREED" = "xyes"; then
+
+		dnl defaults
+		HAVE_3D=yes
+
+		AC_DEFINE([_HAVE_3D_],[1],[with 3d capability])
+	else
+		HAVE_3D=no
+	fi
+	AM_CONDITIONAL([THREED], [test x$HAVE_3D = xyes])
+	AC_MSG_RESULT($HAVE_3D)
+	dnl }}}
+	dnl checks{{{
+	AC_MSG_CHECKING(consistency between all libraries)
+	
+	dnl check that if petsc is requested , mpi should be specified
+	if test "$HAVE_PETSC" = "yes" ; then
+		if test "$HAVE_MPI" = "NO";  then
+			AC_MSG_ERROR([petsc requires mpi!]);
+		fi
+	fi
+
+	dnl check that we have either python or matlab support if we compile the modules
+	if test "$MODULES_VALUE" = "yes"  && test "$HAVE_MATLAB" = "no" && test "$HAVE_PYTHON" = "no"; then
+		AC_MSG_ERROR([need at least python or matlab support to compile modules (or use --with-modules=no)]);
+	fi
+
+	dnl check that if we have MPI, we have metis
+	if test "$HAVE_METIS" = "yes"  && test "$HAVE_MPI" = "no" ; then
+	AC_MSG_ERROR([need mpi if using the metis partitioner!]);
+	fi
+
+	AC_MSG_RESULT(done)
+	dnl }}}
+
+	dnl other options
+	dnl optimization{{{
+	dnl bypass standard optimization -g -O2 ? 
+	AC_ARG_WITH([cxxoptflags],
+	  AS_HELP_STRING([--with-cxxoptflags = CXXOPTFLAGS], [optimization using CXX flags, ex: --with-cxxoptflags=-march=opteron -O3]),
+	  [CXXOPTFLAGS=$withval],[CXXOPTFLAGS="-g -O2"]) 
+	AC_MSG_CHECKING(for c++ optimization flags)
+	AC_SUBST([CXXOPTFLAGS])
+	AC_MSG_RESULT(done)
+
+	dnl }}}
+	dnl multithreading{{{
+	AC_ARG_WITH([numthreads],
+	  AS_HELP_STRING([--with-numthreads = NUMTHREADS_VALUE],[numthreads, default is 1. ]),
+	  [NUMTHREADS_VALUE=$withval],[NUMTHREADS_VALUE=1])
+	AC_MSG_CHECKING(for number of threads)
+	dnl defaults
+	MULTITHREADING=no
+	MULTITHREADINLIB=""
+	if test "$NUMTHREADS_VALUE" != "1"; then
+		
+		MULTITHREADINGLIB="-lpthread -lrt"
+		case "${host_os}" in
+		*cygwin*)
+		MULTITHREADINGLIB="-lpthread -lrt"
+		;;
+		*linux*)
+		MULTITHREADINGLIB="-lpthread -lrt"
+		;;
+		*darwin*)
+		MULTITHREADINGLIB="-lpthread"
+		;;
+		esac
+
+		AC_DEFINE([_MULTITHREADING_],[1],[with numthreads enabled])
+		AC_DEFINE_UNQUOTED([_NUMTHREADS_],[$NUMTHREADS_VALUE],[number of threads])
+	fi
+	AC_SUBST([MULTITHREADINGLIB])
+	AC_MSG_RESULT($NUMTHREADS_VALUE) 
+	dnl }}}
+	dnl 64bit {{{
+	AC_ARG_WITH([64bit-indices],
+	  AS_HELP_STRING([--with-64bit-indices = bool], [use 64 bit integers, default 0, ex: --with-64bit-indices=1]),
+	  [USE_64BIT_INDICES=$withval],[USE_64BIT_INDICES=0]) 
+	AC_MSG_CHECKING(for 64 bit indices)
+
+	if test "$USE_64BIT_INDICES" == "1"; then
+	AC_DEFINE([ISSM_USE_64BIT_INDICES],[1],[with 64 bits indices])
+	else
+	AC_DEFINE([ISSM_USE_64BIT_INDICES],[0],[with 64 bits indices])
+	fi
+	AC_MSG_RESULT($USE_64BIT_INDICES)
+	dnl }}}
+])
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/BinRead.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/BinRead.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/BinRead.py	(revision 21239)
@@ -0,0 +1,206 @@
+#! /usr/bin/env python
+
+import os
+import sys
+import numpy
+import math
+import struct
+import argparse
+
+def BinRead(filin,filout='',verbose=0): #{{{
+
+	print "reading binary file."
+	f=open(filin,'rb')
+
+	if filout:
+		sys.stdout=open(filout,'w')
+
+	while True:
+		try:
+			#Step 1: read size of record name
+			recordnamesize=struct.unpack('i',f.read(struct.calcsize('i')))[0]
+		except struct.error as e:
+			print "probable EOF: %s" % e
+			break
+
+		print "============================================================================"
+		if verbose>2:
+			print "\nrecordnamesize = \"%d\"" % (recordnamesize)
+		recordname=struct.unpack('%ds' % recordnamesize,f.read(recordnamesize))[0]
+		print "field: %s" % recordname
+
+		#Step 2: read the data itself.
+		#first read length of record
+		reclen=struct.unpack('i',f.read(struct.calcsize('i')))[0]
+		if verbose>1:
+			print "reclen = %d" % reclen
+
+		#read data code: 
+		code=struct.unpack('i',f.read(struct.calcsize('i')))[0]
+		#print "code = %d (%s)" % (code,CodeToFormat(code))
+		print "Format = %s" % CodeToFormat(code)
+
+		if   code == FormatToCode('Boolean'):
+#			bval=struct.unpack('b',f.read(reclen-struct.calcsize('i')))[0]
+			bval=struct.unpack('i',f.read(reclen-struct.calcsize('i')))[0]
+			print "value = %d" % bval
+
+		elif code == FormatToCode('Integer'):
+			ival=struct.unpack('i',f.read(reclen-struct.calcsize('i')))[0]
+			print "value = %d" % ival
+
+		elif code == FormatToCode('Double'):
+			dval=struct.unpack('d',f.read(reclen-struct.calcsize('i')))[0]
+			print "value = %f" % dval
+
+		elif code == FormatToCode('String'):
+			strlen=struct.unpack('i',f.read(struct.calcsize('i')))[0]
+			if verbose>1:
+				print "strlen = %d" % strlen
+			sval=struct.unpack('%ds' % strlen,f.read(strlen))[0]
+			print "value = '%s'" % sval
+
+		elif code == FormatToCode('BooleanMat'):
+			#read matrix type: 
+			mattype=struct.unpack('i',f.read(struct.calcsize('i')))[0]
+			print "mattype = %d" % mattype
+
+			#now read matrix
+			s=[0,0]
+			s[0]=struct.unpack('i',f.read(struct.calcsize('i')))[0]
+			s[1]=struct.unpack('i',f.read(struct.calcsize('i')))[0]
+			print "size = [%dx%d]" % (s[0],s[1])
+			data=numpy.zeros((s[0],s[1]))
+			for i in xrange(s[0]):
+				for j in xrange(s[1]):
+					data[i][j]=struct.unpack('d',f.read(struct.calcsize('d')))[0]    #get to the "c" convention, hence the transpose
+					if verbose>2: print "data[%d,%d] = %f" % (i,j,data[i][j])
+
+		elif code == FormatToCode('IntMat'):
+			#read matrix type: 
+			mattype=struct.unpack('i',f.read(struct.calcsize('i')))[0]
+			print "mattype = %d" % mattype
+
+			#now read matrix
+			s=[0,0]
+			s[0]=struct.unpack('i',f.read(struct.calcsize('i')))[0]
+			s[1]=struct.unpack('i',f.read(struct.calcsize('i')))[0]
+			print "size = [%dx%d]" % (s[0],s[1])
+			data=numpy.zeros((s[0],s[1]))
+			for i in xrange(s[0]):
+				for j in xrange(s[1]):
+					data[i][j]=struct.unpack('d',f.read(struct.calcsize('d')))[0]    #get to the "c" convention, hence the transpose
+					if verbose>2: print "data[%d,%d] = %f" % (i,j,data[i][j])
+
+		elif code == FormatToCode('DoubleMat'):
+			#read matrix type: 
+			mattype=struct.unpack('i',f.read(struct.calcsize('i')))[0]
+			print "mattype = %d" % mattype
+
+			#now read matrix
+			s=[0,0]
+			s[0]=struct.unpack('i',f.read(struct.calcsize('i')))[0]
+			s[1]=struct.unpack('i',f.read(struct.calcsize('i')))[0]
+			print "size = [%dx%d]" % (s[0],s[1])
+			data=numpy.zeros((s[0],s[1]))
+			for i in xrange(s[0]):
+				for j in xrange(s[1]):
+					data[i][j]=struct.unpack('d',f.read(struct.calcsize('d')))[0]    #get to the "c" convention, hence the transpose
+					if verbose>2: print "data[%d,%d] = %f" % (i,j,data[i][j])
+
+		elif code == FormatToCode('MatArray'):
+			f.seek(reclen-4,1)
+			print "skipping %d bytes for code %d." % (code, reclen-4)
+
+		elif code == FormatToCode('StringArray'):
+			f.seek(reclen-4,1)
+			print "skipping %d bytes for code %d." % (code, reclen-4)
+
+		else:
+			raise TypeError('BinRead error message: data type: %d not supported yet! (%s)' % (code,recordname))
+
+	f.close()
+#}}}
+def FormatToCode(format): # {{{
+	"""
+	This routine takes the format string, and hardcodes it into an integer, which 
+	is passed along the record, in order to identify the nature of the dataset being 
+	sent.
+	"""
+
+	if   strcmpi(format,'Boolean'):
+		code=1
+	elif strcmpi(format,'Integer'):
+		code=2
+	elif strcmpi(format,'Double'):
+		code=3
+	elif strcmpi(format,'String'):
+		code=4
+	elif strcmpi(format,'BooleanMat'):
+		code=5
+	elif strcmpi(format,'IntMat'):
+		code=6
+	elif strcmpi(format,'DoubleMat'):
+		code=7
+	elif strcmpi(format,'MatArray'):
+		code=8
+	elif strcmpi(format,'StringArray'):
+		code=9
+	else:
+		raise InputError('FormatToCode error message: data type not supported yet!')
+
+	return code
+# }}}
+def CodeToFormat(code): # {{{
+	"""
+	This routine takes the format string, and hardcodes it into an integer, which 
+	is passed along the record, in order to identify the nature of the dataset being 
+	sent.
+	"""
+
+	if code==1:
+		format='Boolean'
+	elif code==2:
+		format='Integer'
+	elif code==3:
+		format='Double'
+	elif code==4:
+		format='String'
+	elif code==5:
+		format='BooleanMat'
+	elif code==6:
+		format='IntMat'
+	elif code==7:
+		format='DoubleMat'
+	elif code==8:
+		format='MatArray'
+	elif code==9:
+		format='StringArray'
+	else:
+		raise TypeError('FormatToCode error message: code %d not supported yet!' %code)
+
+	return format
+# }}}
+
+if __name__ == '__main__': #{{{
+	if 'PYTHONSTARTUP' in os.environ:
+		PYTHONSTARTUP=os.environ['PYTHONSTARTUP']
+		print 'PYTHONSTARTUP =',PYTHONSTARTUP
+		if os.path.exists(PYTHONSTARTUP):
+			try:
+				execfile(PYTHONSTARTUP)
+			except Exception as e:
+				print "PYTHONSTARTUP error: ",e
+		else:
+			print "PYTHONSTARTUP file '%s' does not exist." % PYTHONSTARTUP
+
+	parser = argparse.ArgumentParser(description='BinRead - function to read binary input file.')
+	parser.add_argument('-f','--filin', help='name of binary input file', default='')
+	parser.add_argument('-o','--filout', help='optional name of text output file', default='')
+	parser.add_argument('-v','--verbose', help='optional level of output', default=0)
+	args = parser.parse_args()
+
+	from MatlabFuncs import *
+
+	BinRead(args.filin, args.filout,args.verbose)
+#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/ConvertAllNetcdfArchivesToArch.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/ConvertAllNetcdfArchivesToArch.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/ConvertAllNetcdfArchivesToArch.m	(revision 21239)
@@ -0,0 +1,20 @@
+root=pwd;
+cd('../test/Archives/');
+ncdir=pwd;
+cd(root);
+
+file_regexp=strcat(ncdir,'/*.nc');
+flist=dir(file_regexp);
+fnames={flist.name}';
+
+pattern='.nc';
+replacement='.arch';
+for i=1:numel(fnames)
+	% Remove the extension '.nc' and replace with '.arch'
+	arch_file_name=regexprep(fnames{i},pattern,replacement);
+	disp(['Converting ' fnames{i} ' to .arch format']);
+	% Reconstruct file path
+	fpath=strcat(ncdir,'/',fnames{i});
+	archpath=strcat(ncdir,'/',arch_file_name);
+	netcdf2arch(fpath,archpath);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/DownloadExternalPackage.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/DownloadExternalPackage.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/DownloadExternalPackage.py	(revision 21239)
@@ -0,0 +1,139 @@
+#!/usr/bin/env python
+# -*- coding: ISO-8859-1 -*-
+#
+# TODO: Improve upon extension recognition by checking for mismatches in found targets
+# and specified local file.
+#
+
+# imports {{{
+import os,sys,re
+import urllib
+from HTMLParser import HTMLParser
+from urllib import FancyURLopener
+# }}}
+class MyHTMLParser(HTMLParser): #{{{
+
+    def __init__(self, pattern):
+        HTMLParser.__init__(self)
+        self.matcher = re.compile(pattern) 
+        self.targets = []
+
+    def handle_starttag(self, tag, attrs):
+        for i in attrs:
+            if "href" == i[0] and str(self.matcher.match(i[1])) != "None":
+                self.targets.append(i[1])
+#}}}
+def main(argv=None): # {{{
+    # Separates the URL into a directory and the file or pattern based on the
+    # last appearance of '/'.
+	if len(sys.argv) > 1:
+	    pivot = sys.argv[1].rfind("/")
+	    url = (sys.argv[1])[:pivot]
+	    pivot += 1
+	    find = (sys.argv[1])[pivot:]
+	else:
+	    print "******************************************************************************************************************************"
+	    print "* Invalid input!                                                                                                             *"
+	    print "*                                                                                                                            *"
+	    print "* Try: 'DownloadExternalPackage.py url [localFile]'                                                                          *"
+	    print "*                                                                                                                            *"
+	    print "* Where 'URL' is the URL with an explicit package name or the URL followed by the truncated package name. And 'localFile' is *"
+	    print "* the file name (including extension) that you would like to save as.                                                        *"
+	    print "*                                                                                                                            *"
+	    print "* Examples:                                                                                                                  *" 
+	    print "*                                                                                                                            *"
+	    print "* DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-2.3.2-p3.tar.gz' 'petsc-2.3.2-p3.tar.gz' *"
+	    print "*                                                                                                                            *"
+	    print "*     This is the old style and the safest way to download a package.                                                        *"
+	    print "*                                                                                                                            *"
+	    print "* DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/libtool' 'libtool.tar.gz'                      *"
+	    print "*                                                                                                                            *"
+	    print "*     This is the new style. For packages like 'Libtool', which we never expect to be using multiple versions, this will     *"
+	    print "*     download the most recent version and save it as the generic 'libtool.tar.gz'.                                          *"
+	    print "*                                                                                                                            *"
+	    print "* DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gsl-1.' 'gsl-1.15.tar.gz'                      *"
+	    print "*                                                                                                                            *"
+	    print "*     This is the new style. This is a demonstration of how this script can be used to disambiguate a package name if there  *"
+	    print "*     are more than once package matching 'gsl-'.                                                                            *"
+	    print "*                                                                                                                            *"
+	    print "* DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/libtool'                                       *"
+	    print "*                                                                                                                            *"
+	    print "*     This is the new style. This will download a package with 'libtool' as a prefix and save it as its canonical name.      *"
+	    print "*                                                                                                                            *"
+	    print "*                                                                                                                            *"
+	    print "******************************************************************************************************************************"
+	
+	if len(sys.argv) > 2:
+	    localFile=sys.argv[2]
+	    print "Downloaded file will be saved as: " + localFile
+	else:
+	    localFile = None
+	    print "Downloaded file will saved with the same file name."
+	
+	
+	print "Looking for: " + find
+	
+	# As an extra precaution, if no extension is given for a particular package
+	# such as '.../libtool', then ensure that files found are of appropriate
+	# file extensions. 
+	#
+	# WARNING: The external packages directory includes executable binaries with
+	# '.exe' extensions. As such, '.exe' is an acceptable suffix, but this is 
+	# inherently dangerous since this script can be used to download from any
+	# valid website. Furthermore, if an individual attempts a "man-in-the-middle"  
+	# attack, then the user would be capable of downloading executables from 
+	# an untrusted source.
+	pattern = find + "[\w.-]*(\.tar\.gz|tar\.gz2|tgz|zip|exe)?"
+	parser = MyHTMLParser(pattern)
+	
+	# Creates a 'FancyURL' which allows the script to fail gracefully by catching
+	# HTTP error codes 30X and several 40X(where 'X' is a natural number).
+	urlObject = FancyURLopener()
+	obj = urlObject.open(url)
+	parser.feed(obj.read())
+	
+	# If a file pattern was used to describe the file that should be downloaded,
+	# then there is the potential for multiple file matches. Currently, the script
+	# will detect this ambiguity and print out all the matches, while informing 
+	# the user that he must refine his search.
+	#
+	# TODO: Prompt the user to select from a list his/her preferred target.
+	if len(parser.targets) > 1:
+	    print "Could not resolve your download due to the number of hits."
+	    print "Refine your search."
+	    for i in parser.targets:
+	        print i
+	
+	elif len(parser.targets) == 1:
+	    print "Found: " + parser.targets[0]
+	    url += "/" + parser.targets[0]
+	
+	    if localFile is None:
+	        if os.path.exists(parser.targets[0]): 
+	            print "File " + parser.targets[0] + " already exists and will not be downloaded..."
+	        else:
+	            urllib.urlretrieve(url, parser.targets[0])
+	            print "File saved as: " + parser.targets[0]
+	    else:
+	        if os.path.exists(localFile): 
+	            print "File "+ localFile +" already exists and will not be downloaded..."
+	        else:
+	            if parser.targets[0] == localFile:
+	                print "File found and destination match."
+	            elif parser.matcher.match(localFile) != "None":
+	                print "File found matches destination pattern."
+	            else:
+	                print "WARNING: the file found \'" + parser.targets[0] + "\' does not match \'" + localFile + "\'"
+	                print "Ensure the downloaded version is suitable."
+	
+	            urllib.urlretrieve(url, localFile)
+	            print "File saved as: " + localFile
+	
+	else:
+	    print "No matches found!"
+	
+	obj.close()
+# End 'main' function. }}}
+
+if __name__ == "__main__":
+    main()
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/DownloadExternalPackage2.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/DownloadExternalPackage2.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/DownloadExternalPackage2.py	(revision 21239)
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+# -*- coding: ISO-8859-1 -*-
+
+import os,sys
+import urllib
+
+#Check inputs
+if(len(sys.argv)!=3): raise NameError('usage: ./DownloadExternalPackage.py URL localfile')
+
+url=sys.argv[1];
+localFile=sys.argv[2]
+
+#Remove file if it already exists
+if os.path.exists(localFile):
+	print "File "+ localFile +" already exists and will not be downloaded..."
+	sys.exit()
+
+#Try to download from url
+httpfail=-1
+try:
+	print "Fetching %s" % localFile
+	urllib.urlretrieve(url,localFile)
+	httpfail=0
+except Exception, e:
+	httpfail=1
+
+#Error message in case it failed
+if (httpfail):
+	failureMessage = '''
+===========================================================================
+Unable to download package %s from: %s
+* If URL specified manually - perhaps there is a typo?
+* If your network is disconnected - please reconnect 
+* Alternatively, you can download the above URL manually
+===========================================================================
+''' % (localFile,url)
+	raise RuntimeError(failureMessage)
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/GenerateReferences.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/GenerateReferences.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/GenerateReferences.sh	(revision 21239)
@@ -0,0 +1,38 @@
+#!/bin/bash
+#Generate a RTF file with references provided in CITE
+#Use AGU bibliography style and delete labels for easy copy/paste
+#Version: 04/28/11
+
+#Genetare a pdf with the list of references provided in $CITE
+CITE="Joughin2009,Rignot2002,Frey2001"
+
+#First erase files; 
+rm -rf references.rtf
+
+#create Latex file
+cat <<END > references.tex
+\documentclass{article}
+\bibliographystyle{agu}
+\begin{document}
+\nocite{$CITE}
+\bibliography{$JPL_SVN/publications/bibtex/references}
+\end{document}
+END
+#Generate pdf
+echo "Compiling document"
+latex  -interaction=batchmode -file-line-error references.tex > /dev/null
+echo "Running Bibtex"
+bibtex references
+echo "Removing labels"
+cat references.bbl | sed -e "s-ibitem.*\]-DELETE-" | grep -v DELETE > references.bak1 #delete labels that hold in one line
+cat references.bak1 | sed -e "/ibitem/,/]/d" > references.bak2                        #delete labels that are on multiple lines
+mv references.bak2 references.bbl
+echo "Converting to rtf"
+$ISSM_DIR/externalpackages/latex2rtf/install/latex2rtf -P $ISSM_DIR/externalpackages/latex2rtf/install/cfg/ references
+
+#Remove all but rtf file
+rm -rf references.[!rtf]*
+rm -rf references.tex
+
+#open output
+#open references.rtf
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/automakererun.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/automakererun.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/automakererun.sh	(revision 21239)
@@ -0,0 +1,11 @@
+#!/bin/sh
+#  this shell script will automatically reconfigure the entire ISSM 
+#  archive.
+
+# As it turns out, the autoreconf script provided by Autotools
+# encompasses the functionality of this script. As such, the 
+# following two lines will replace the remainder of the script.
+# If all goes well, then the script will be shortened in the future.
+
+cd $ISSM_DIR
+autoreconf -iv
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/cloc-1.60.pl
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/cloc-1.60.pl	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/cloc-1.60.pl	(revision 21239)
@@ -0,0 +1,9064 @@
+#!/usr/bin/env perl
+# cloc -- Count Lines of Code                  {{{1
+# Copyright (C) 2006-2013 Northrop Grumman Corporation
+# Author:  Al Danial <al.danial@gmail.com>
+#          First release August 2006
+#
+# Includes code from:
+#   - SLOCCount v2.26 
+#     http://www.dwheeler.com/sloccount/
+#     by David Wheeler.
+#   - Regexp::Common v2.120
+#     http://search.cpan.org/~abigail/Regexp-Common-2.120/lib/Regexp/Common.pm
+#     by Damian Conway and Abigail.
+#   - Win32::Autoglob 
+#     http://search.cpan.org/~sburke/Win32-Autoglob-1.01/Autoglob.pm
+#     by Sean M. Burke.
+#   - Algorithm::Diff
+#     http://search.cpan.org/~tyemq/Algorithm-Diff-1.1902/lib/Algorithm/Diff.pm
+#     by Tye McQueen.
+#
+# 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:
+# <http://www.gnu.org/licenses/gpl.txt>.
+#
+# 1}}}
+my $VERSION = "1.60";  # odd number == beta; even number == stable
+my $URL     = "http://cloc.sourceforge.net";
+require 5.006;
+# use modules                                  {{{1
+use warnings;
+use strict;
+use Getopt::Long;
+use File::Basename;
+use File::Temp qw { tempfile tempdir };
+use File::Find;
+use File::Path;
+use File::Spec;
+use IO::File;
+use POSIX "strftime";
+
+# Digest::MD5 isn't in the standard distribution. Use it only if installed.
+my $HAVE_Digest_MD5 = 0;
+eval "use Digest::MD5;";
+if (defined $Digest::MD5::VERSION) {
+    $HAVE_Digest_MD5 = 1;
+} else {
+    warn "Digest::MD5 not installed; will skip file uniqueness checks.\n";
+}
+
+# Time::HiRes became standard with Perl 5.8
+my $HAVE_Time_HiRes = 0;
+eval "use Time::HiRes;";
+$HAVE_Time_HiRes = 1 if defined $Time::HiRes::VERSION;
+
+my $HAVE_Rexexp_Common;
+# Regexp::Common isn't in the standard distribution.  It will
+# be installed in a temp directory if necessary.
+BEGIN {
+    if (eval "use Regexp::Common;") {
+        $HAVE_Rexexp_Common = 1;
+    } else {
+        $HAVE_Rexexp_Common = 0;
+    }
+}
+
+my $HAVE_Algorith_Diff = 0;
+# Algorithm::Diff isn't in the standard distribution.  It will
+# be installed in a temp directory if necessary.
+eval "use Algorithm::Diff qw ( sdiff ) ";
+if (defined $Algorithm::Diff::VERSION) {
+    $HAVE_Algorith_Diff = 1;
+} else {
+    Install_Algorithm_Diff();
+}
+# print "2 HAVE_Algorith_Diff = $HAVE_Algorith_Diff\n";
+# test_alg_diff($ARGV[$#ARGV - 1], $ARGV[$#ARGV]); die;
+
+# Uncomment next two lines when building Windows executable with perl2exe
+# or if running on a system that already has Regexp::Common.
+#use Regexp::Common;
+#$HAVE_Rexexp_Common = 1;
+
+#perl2exe_include "Regexp/Common/whitespace.pm"
+#perl2exe_include "Regexp/Common/URI.pm"
+#perl2exe_include "Regexp/Common/URI/fax.pm"
+#perl2exe_include "Regexp/Common/URI/file.pm"
+#perl2exe_include "Regexp/Common/URI/ftp.pm"
+#perl2exe_include "Regexp/Common/URI/gopher.pm"
+#perl2exe_include "Regexp/Common/URI/http.pm"
+#perl2exe_include "Regexp/Common/URI/pop.pm"
+#perl2exe_include "Regexp/Common/URI/prospero.pm"
+#perl2exe_include "Regexp/Common/URI/news.pm"
+#perl2exe_include "Regexp/Common/URI/tel.pm"
+#perl2exe_include "Regexp/Common/URI/telnet.pm"
+#perl2exe_include "Regexp/Common/URI/tv.pm"
+#perl2exe_include "Regexp/Common/URI/wais.pm"
+#perl2exe_include "Regexp/Common/CC.pm"
+#perl2exe_include "Regexp/Common/SEN.pm"
+#perl2exe_include "Regexp/Common/number.pm"
+#perl2exe_include "Regexp/Common/delimited.pm"
+#perl2exe_include "Regexp/Common/profanity.pm"
+#perl2exe_include "Regexp/Common/net.pm"
+#perl2exe_include "Regexp/Common/zip.pm"
+#perl2exe_include "Regexp/Common/comment.pm"
+#perl2exe_include "Regexp/Common/balanced.pm"
+#perl2exe_include "Regexp/Common/lingua.pm"
+#perl2exe_include "Regexp/Common/list.pm"
+#perl2exe_include "File/Glob.pm"
+
+use Text::Tabs qw { expand };
+use Cwd qw { cwd };
+use File::Glob;
+my $PERL_516 = $] >= 5.016 ? 1 : 0;  # 5.16 deprecates defined(@array)
+no warnings 'deprecated';            # will need to comment this out to test
+                                     # each new Perl version
+# 1}}}
+# Usage information, options processing.       {{{1
+my $ON_WINDOWS = 0;
+   $ON_WINDOWS = 1 if ($^O =~ /^MSWin/) or ($^O eq "Windows_NT");
+if ($ON_WINDOWS and $ENV{'SHELL'}) {
+    if ($ENV{'SHELL'} =~ m{^/}) {
+        $ON_WINDOWS = 0;  # make Cygwin look like Unix
+    } else {
+        $ON_WINDOWS = 1;  # MKS defines $SHELL but still acts like Windows
+    }
+}
+
+my $NN     = chr(27) . "[0m";  # normal
+   $NN     = "" if $ON_WINDOWS or !(-t STDERR); # -t STDERR:  is it a terminal?
+my $BB     = chr(27) . "[1m";  # bold
+   $BB     = "" if $ON_WINDOWS or !(-t STDERR);
+my $script = basename $0;
+my $usage  = "
+Usage: $script [options] <file(s)/dir(s)> | <set 1> <set 2> | <report files>
+
+ Count, or compute differences of, physical lines of source code in the
+ given files (may be archives such as compressed tarballs or zip files)
+ and/or recursively below the given directories.
+
+ ${BB}Input Options${NN}
+   --extract-with=<cmd>      This option is only needed if cloc is unable
+                             to figure out how to extract the contents of
+                             the input file(s) by itself.
+                             Use <cmd> to extract binary archive files (e.g.:
+                             .tar.gz, .zip, .Z).  Use the literal '>FILE<' as
+                             a stand-in for the actual file(s) to be
+                             extracted.  For example, to count lines of code
+                             in the input files
+                                gcc-4.2.tar.gz  perl-5.8.8.tar.gz
+                             on Unix use
+                               --extract-with='gzip -dc >FILE< | tar xf -'
+                             or, if you have GNU tar,
+                               --extract-with='tar zxf >FILE<'
+                             and on Windows use, for example:
+                               --extract-with=\"\\\"c:\\Program Files\\WinZip\\WinZip32.exe\\\" -e -o >FILE< .\"
+                             (if WinZip is installed there).
+   --list-file=<file>        Take the list of file and/or directory names to
+                             process from <file> which has one file/directory
+                             name per line.  See also --exclude-list-file.
+   --unicode                 Check binary files to see if they contain Unicode
+                             expanded ASCII text.  This causes performance to
+                             drop noticably.
+
+ ${BB}Processing Options${NN}
+   --autoconf                Count .in files (as processed by GNU autoconf) of
+                             recognized languages.
+   --by-file                 Report results for every source file encountered.
+   --by-file-by-lang         Report results for every source file encountered
+                             in addition to reporting by language.
+   --diff <set1> <set2>      Compute differences in code and comments between
+                             source file(s) of <set1> and <set2>.  The inputs
+                             may be pairs of files, directories, or archives.
+                             Use --diff-alignment to generate a list showing
+                             which file pairs where compared.  See also
+                             --ignore-case, --ignore-whitespace.
+   --diff-timeout <N>        Ignore files which take more than <N> seconds
+                             to process.  Default is 10 seconds.
+                             (Large files with many repeated lines can cause 
+                             Algorithm::Diff::sdiff() to take hours.)
+   --follow-links            [Unix only] Follow symbolic links to directories
+                             (sym links to files are always followed).
+   --force-lang=<lang>[,<ext>]
+                             Process all files that have a <ext> extension
+                             with the counter for language <lang>.  For
+                             example, to count all .f files with the
+                             Fortran 90 counter (which expects files to
+                             end with .f90) instead of the default Fortran 77
+                             counter, use
+                               --force-lang=\"Fortran 90\",f
+                             If <ext> is omitted, every file will be counted
+                             with the <lang> counter.  This option can be
+                             specified multiple times (but that is only
+                             useful when <ext> is given each time).
+                             See also --script-lang, --lang-no-ext.
+   --force-lang-def=<file>   Load language processing filters from <file>,
+                             then use these filters instead of the built-in
+                             filters.  Note:  languages which map to the same 
+                             file extension (for example:
+                             MATLAB/Objective C/MUMPS;  Pascal/PHP; 
+                             Lisp/OpenCL) will be ignored as these require 
+                             additional processing that is not expressed in 
+                             language definition files.  Use --read-lang-def 
+                             to define new language filters without replacing 
+                             built-in filters (see also --write-lang-def).
+   --ignore-whitespace       Ignore horizontal white space when comparing files
+                             with --diff.  See also --ignore-case.
+   --ignore-case             Ignore changes in case; consider upper- and lower-
+                             case letters equivalent when comparing files with
+                             --diff.  See also --ignore-whitespace.
+   --lang-no-ext=<lang>      Count files without extensions using the <lang>
+                             counter.  This option overrides internal logic
+                             for files without extensions (where such files
+                             are checked against known scripting languages
+                             by examining the first line for #!).  See also
+                             --force-lang, --script-lang.
+   --max-file-size=<MB>      Skip files larger than <MB> megabytes when
+                             traversing directories.  By default, <MB>=100.
+                             cloc's memory requirement is roughly twenty times 
+                             larger than the largest file so running with 
+                             files larger than 100 MB on a computer with less 
+                             than 2 GB of memory will cause problems.  
+                             Note:  this check does not apply to files 
+                             explicitly passed as command line arguments.
+   --read-binary-files       Process binary files in addition to text files.
+                             This is usually a bad idea and should only be
+                             attempted with text files that have embedded
+                             binary data.
+   --read-lang-def=<file>    Load new language processing filters from <file>
+                             and merge them with those already known to cloc.  
+                             If <file> defines a language cloc already knows 
+                             about, cloc's definition will take precedence.  
+                             Use --force-lang-def to over-ride cloc's 
+                             definitions (see also --write-lang-def ).
+   --script-lang=<lang>,<s>  Process all files that invoke <s> as a #!
+                             scripting language with the counter for language
+                             <lang>.  For example, files that begin with
+                                #!/usr/local/bin/perl5.8.8
+                             will be counted with the Perl counter by using
+                                --script-lang=Perl,perl5.8.8
+                             The language name is case insensitive but the
+                             name of the script language executable, <s>,
+                             must have the right case.  This option can be
+                             specified multiple times.  See also --force-lang,
+                             --lang-no-ext.
+   --sdir=<dir>              Use <dir> as the scratch directory instead of
+                             letting File::Temp chose the location.  Files
+                             written to this location are not removed at
+                             the end of the run (as they are with File::Temp).
+   --skip-uniqueness         Skip the file uniqueness check.  This will give
+                             a performance boost at the expense of counting
+                             files with identical contents multiple times
+                             (if such duplicates exist).
+   --stdin-name=<file>       Give a file name to use to determine the language
+                             for standard input.
+   --strip-comments=<ext>    For each file processed, write to the current
+                             directory a version of the file which has blank
+                             lines and comments removed.  The name of each
+                             stripped file is the original file name with
+                             .<ext> appended to it.  It is written to the
+                             current directory unless --original-dir is on.
+   --original-dir            [Only effective in combination with
+                             --strip-comments]  Write the stripped files
+                             to the same directory as the original files.
+   --sum-reports             Input arguments are report files previously
+                             created with the --report-file option.  Makes
+                             a cumulative set of results containing the
+                             sum of data from the individual report files.
+   --unix                    Override the operating system autodetection
+                             logic and run in UNIX mode.  See also
+                             --windows, --show-os.
+   --windows                 Override the operating system autodetection
+                             logic and run in Microsoft Windows mode.
+                             See also --unix, --show-os.
+
+ ${BB}Filter Options${NN}
+   --exclude-dir=<D1>[,D2,]  Exclude the given comma separated directories
+                             D1, D2, D3, et cetera, from being scanned.  For
+                             example  --exclude-dir=.cache,test  will skip
+                             all files that have /.cache/ or /test/ as part
+                             of their path.
+                             Directories named .bzr, .cvs, .hg, .git, and
+                             .svn are always excluded.
+   --exclude-ext=<ext1>[,<ext2>[...]]
+                             Do not count files having the given file name
+                             extensions.
+   --exclude-lang=<L1>[,L2,] Exclude the given comma separated languages
+                             L1, L2, L3, et cetera, from being counted.
+   --exclude-list-file=<file>  Ignore files and/or directories whose names
+                             appear in <file>.  <file> should have one entry
+                             per line.  Relative path names will be resolved
+                             starting from the directory where cloc is
+                             invoked.  See also --list-file.
+   --match-d=<regex>         Only count files in directories matching the Perl
+                             regex.  For example
+                               --match-d='/(src|include)/'
+                             only counts files in directories containing
+                             /src/ or /include/.
+   --not-match-d=<regex>     Count all files except those in directories
+                             matching the Perl regex.
+   --match-f=<regex>         Only count files whose basenames match the Perl
+                             regex.  For example
+                               --match-f='^[Ww]idget'
+                             only counts files that start with Widget or widget.
+   --not-match-f=<regex>     Count all files except those whose basenames
+                             match the Perl regex.
+   --skip-archive=<regex>    Ignore files that end with the given Perl regular
+                             expression.  For example, if given
+                               --skip-archive='(zip|tar(\.(gz|Z|bz2|xz|7z))?)'
+                             the code will skip files that end with .zip,
+                             .tar, .tar.gz, .tar.Z, .tar.bz2, .tar.xz, and
+                             .tar.7z.
+   --skip-win-hidden         On Windows, ignore hidden files.
+
+ ${BB}Debug Options${NN}
+   --categorized=<file>      Save names of categorized files to <file>.
+   --counted=<file>          Save names of processed source files to <file>.
+   --diff-alignment=<file>   Write to <file> a list of files and file pairs
+                             showing which files were added, removed, and/or
+                             compared during a run with --diff.  This switch
+                             forces the --diff mode on.
+   --help                    Print this usage information and exit.
+   --found=<file>            Save names of every file found to <file>.
+   --ignored=<file>          Save names of ignored files and the reason they
+                             were ignored to <file>.
+   --print-filter-stages     Print to STDOUT processed source code before and
+                             after each filter is applied.
+   --show-ext[=<ext>]        Print information about all known (or just the
+                             given) file extensions and exit.
+   --show-lang[=<lang>]      Print information about all known (or just the
+                             given) languages and exit.
+   --show-os                 Print the value of the operating system mode
+                             and exit.  See also --unix, --windows.
+   -v[=<n>]                  Verbose switch (optional numeric value).
+   --version                 Print the version of this program and exit.
+   --write-lang-def=<file>   Writes to <file> the language processing filters
+                             then exits.  Useful as a first step to creating
+                             custom language definitions (see also
+                             --force-lang-def, --read-lang-def).
+
+ ${BB}Output Options${NN}
+   --3                       Print third-generation language output.
+                             (This option can cause report summation to fail
+                             if some reports were produced with this option
+                             while others were produced without it.)
+   --progress-rate=<n>       Show progress update after every <n> files are
+                             processed (default <n>=100).  Set <n> to 0 to
+                             suppress progress output (useful when redirecting
+                             output to STDOUT).
+   --quiet                   Suppress all information messages except for
+                             the final report.
+   --report-file=<file>      Write the results to <file> instead of STDOUT.
+   --out=<file>              Synonym for --report-file=<file>.
+   --csv                     Write the results as comma separated values.
+   --csv-delimiter=<C>       Use the character <C> as the delimiter for comma
+                             separated files instead of ,.  This switch forces
+                             --csv to be on.
+   --sql=<file>              Write results as SQL create and insert statements
+                             which can be read by a database program such as
+                             SQLite.  If <file> is -, output is sent to STDOUT.
+   --sql-project=<name>      Use <name> as the project identifier for the
+                             current run.  Only valid with the --sql option.
+   --sql-append              Append SQL insert statements to the file specified
+                             by --sql and do not generate table creation
+                             statements.  Only valid with the --sql option.
+   --sum-one                 For plain text reports, show the SUM: output line
+                             even if only one input file is processed.
+   --xml                     Write the results in XML.
+   --xsl=<file>              Reference <file> as an XSL stylesheet within
+                             the XML output.  If <file> is 1 (numeric one),
+                             writes a default stylesheet, cloc.xsl (or
+                             cloc-diff.xsl if --diff is also given).
+                             This switch forces --xml on.
+   --yaml                    Write the results in YAML.
+
+";
+#  Help information for options not yet implemented:
+#  --inline                  Process comments that appear at the end
+#                            of lines containing code.
+#  --html                    Create HTML files of each input file showing
+#                            comment and code lines in different colors.
+
+$| = 1;  # flush STDOUT
+my $start_time = get_time();
+my (
+    $opt_categorized          ,
+    $opt_found                ,
+    @opt_force_lang           ,
+    $opt_lang_no_ext          ,
+    @opt_script_lang          ,
+    $opt_diff                 ,
+    $opt_diff_alignment       ,
+    $opt_diff_timeout         ,
+    $opt_html                 ,
+    $opt_ignored              ,
+    $opt_counted              ,
+    $opt_show_ext             ,
+    $opt_show_lang            ,
+    $opt_progress_rate        ,
+    $opt_print_filter_stages  ,
+    $opt_v                    ,
+    $opt_version              ,
+    $opt_exclude_lang         ,
+    $opt_exclude_list_file    ,
+    $opt_exclude_dir          ,
+    $opt_force_lang_def       ,
+    $opt_read_lang_def        ,
+    $opt_write_lang_def       ,
+    $opt_strip_comments       ,
+    $opt_original_dir         ,
+    $opt_quiet                ,
+    $opt_report_file          ,
+    $opt_sdir                 ,
+    $opt_sum_reports          ,
+    $opt_unicode              ,
+    $opt_no3                  ,   # accept it but don't use it
+    $opt_3                    ,
+    $opt_extract_with         ,
+    $opt_by_file              ,
+    $opt_by_file_by_lang      ,
+    $opt_xml                  ,
+    $opt_xsl                  ,
+    $opt_yaml                 ,
+    $opt_csv                  ,
+    $opt_csv_delimiter        ,
+    $opt_match_f              ,
+    $opt_not_match_f          ,
+    $opt_match_d              ,
+    $opt_not_match_d          ,
+    $opt_skip_uniqueness      ,
+    $opt_list_file            ,
+    $opt_help                 ,
+    $opt_skip_win_hidden      ,
+    $opt_read_binary_files    ,
+    $opt_sql                  ,
+    $opt_sql_append           ,
+    $opt_sql_project          ,
+    $opt_inline               ,
+    $opt_exclude_ext          ,
+    $opt_ignore_whitespace    ,
+    $opt_ignore_case          ,
+    $opt_follow_links         ,
+    $opt_autoconf             ,
+    $opt_sum_one              ,
+    $opt_stdin_name           ,
+    $opt_force_on_windows     ,
+    $opt_force_on_unix        ,   # actually forces !$ON_WINDOWS
+    $opt_show_os              ,
+    $opt_skip_archive         ,
+    $opt_max_file_size        ,   # in MB
+   );
+my $getopt_success = GetOptions(
+   "by_file|by-file"                         => \$opt_by_file             ,
+   "by_file_by_lang|by-file-by-lang"         => \$opt_by_file_by_lang     ,
+   "categorized=s"                           => \$opt_categorized         ,
+   "counted=s"                               => \$opt_counted             ,
+   "exclude_lang|exclude-lang=s"             => \$opt_exclude_lang        ,
+   "exclude_dir|exclude-dir=s"               => \$opt_exclude_dir         ,
+   "exclude_list_file|exclude-list-file=s"   => \$opt_exclude_list_file   ,
+   "extract_with|extract-with=s"             => \$opt_extract_with        ,
+   "found=s"                                 => \$opt_found               ,
+   "diff"                                    => \$opt_diff                ,
+   "diff-alignment|diff_alignment=s"         => \$opt_diff_alignment      ,
+   "diff-timeout|diff_timeout=i"             => \$opt_diff_timeout        ,
+   "html"                                    => \$opt_html                ,
+   "ignored=s"                               => \$opt_ignored             ,
+   "quiet"                                   => \$opt_quiet               ,
+   "force_lang_def|force-lang-def=s"         => \$opt_force_lang_def      ,
+   "read_lang_def|read-lang-def=s"           => \$opt_read_lang_def       ,
+   "show_ext|show-ext:s"                     => \$opt_show_ext            ,
+   "show_lang|show-lang:s"                   => \$opt_show_lang           ,
+   "progress_rate|progress-rate=i"           => \$opt_progress_rate       ,
+   "print_filter_stages|print-filter-stages" => \$opt_print_filter_stages ,
+   "report_file|report-file=s"               => \$opt_report_file         ,
+   "out=s"                                   => \$opt_report_file         ,
+   "script_lang|script-lang=s"               => \@opt_script_lang         ,
+   "sdir=s"                                  => \$opt_sdir                ,
+   "skip_uniqueness|skip-uniqueness"         => \$opt_skip_uniqueness     ,
+   "strip_comments|strip-comments=s"         => \$opt_strip_comments      ,
+   "original_dir|original-dir"               => \$opt_original_dir        ,
+   "sum_reports|sum-reports"                 => \$opt_sum_reports         ,
+   "unicode"                                 => \$opt_unicode             ,
+   "no3"                                     => \$opt_no3                 ,  # ignored
+   "3"                                       => \$opt_3                   ,
+   "v:i"                                     => \$opt_v                   ,
+   "version"                                 => \$opt_version             ,
+   "write_lang_def|write-lang-def=s"         => \$opt_write_lang_def      ,
+   "xml"                                     => \$opt_xml                 ,
+   "xsl=s"                                   => \$opt_xsl                 ,
+   "force_lang|force-lang=s"                 => \@opt_force_lang          ,
+   "lang_no_ext|lang-no-ext=s"               => \$opt_lang_no_ext         ,
+   "yaml"                                    => \$opt_yaml                ,
+   "csv"                                     => \$opt_csv                 ,
+   "csv_delimeter|csv-delimiter=s"           => \$opt_csv_delimiter       ,
+   "match_f|match-f=s"                       => \$opt_match_f             ,
+   "not_match_f|not-match-f=s"               => \$opt_not_match_f         ,
+   "match_d|match-d=s"                       => \$opt_match_d             ,
+   "not_match_d|not-match-d=s"               => \$opt_not_match_d         ,
+   "list_file|list-file=s"                   => \$opt_list_file           ,
+   "help"                                    => \$opt_help                ,
+   "skip_win_hidden|skip-win-hidden"         => \$opt_skip_win_hidden     ,
+   "read_binary_files|read-binary-files"     => \$opt_read_binary_files   ,
+   "sql=s"                                   => \$opt_sql                 ,
+   "sql_project|sql-project=s"               => \$opt_sql_project         ,
+   "sql_append|sql-append"                   => \$opt_sql_append          ,
+   "inline"                                  => \$opt_inline              ,
+   "exclude_ext|exclude-ext=s"               => \$opt_exclude_ext         ,
+   "ignore_whitespace|ignore-whitespace"     => \$opt_ignore_whitespace   ,
+   "ignore_case|ignore-case"                 => \$opt_ignore_case         ,
+   "follow_links|follow-links"               => \$opt_follow_links        ,
+   "autoconf"                                => \$opt_autoconf            ,
+   "sum_one|sum-one"                         => \$opt_sum_one             ,
+   "stdin_name|stdin-name=s"                 => \$opt_stdin_name          ,
+   "windows"                                 => \$opt_force_on_windows    ,
+   "unix"                                    => \$opt_force_on_unix       ,
+   "show_os|show-os"                         => \$opt_show_os             ,
+   "skip_archive|skip-archive=s"             => \$opt_skip_archive        ,
+   "max_file_size|max-file-size=i"           => \$opt_max_file_size       ,
+  );
+$opt_by_file  = 1 if defined  $opt_by_file_by_lang;
+my $CLOC_XSL = "cloc.xsl"; # created with --xsl
+   $CLOC_XSL = "cloc-diff.xsl" if $opt_diff;
+die "\n" unless $getopt_success;
+die $usage if $opt_help;
+my %Exclude_Language = ();
+   %Exclude_Language = map { $_ => 1 } split(/,/, $opt_exclude_lang) 
+        if $opt_exclude_lang;
+my %Exclude_Dir      = ();
+   %Exclude_Dir      = map { $_ => 1 } split(/,/, $opt_exclude_dir ) 
+        if $opt_exclude_dir ;
+# Forcibly exclude .svn, .cvs, .hg, .git, .bzr directories.  The contents of these
+# directories often conflict with files of interest.
+$opt_exclude_dir       = 1;
+$Exclude_Dir{".svn"}   = 1;
+$Exclude_Dir{".cvs"}   = 1;
+$Exclude_Dir{".hg"}    = 1;
+$Exclude_Dir{".git"}   = 1;
+$Exclude_Dir{".bzr"}   = 1;
+$opt_diff              = 1  if $opt_diff_alignment;
+$opt_exclude_ext       = "" unless $opt_exclude_ext;
+$opt_ignore_whitespace = 0  unless $opt_ignore_whitespace;
+$opt_ignore_case       = 0  unless $opt_ignore_case;
+$opt_lang_no_ext       = 0  unless $opt_lang_no_ext;
+$opt_follow_links      = 0  unless $opt_follow_links;
+$opt_diff_timeout      =10  unless $opt_diff_timeout;
+$opt_csv               = 1  if $opt_csv_delimiter;
+$ON_WINDOWS            = 1  if $opt_force_on_windows;
+$ON_WINDOWS            = 0  if $opt_force_on_unix;
+$opt_max_file_size     = 100 unless $opt_max_file_size;
+
+# Options defaults:
+$opt_progress_rate = 100 unless defined $opt_progress_rate;
+if (!defined $opt_v) {
+    $opt_v  = 0;
+} elsif (!$opt_v) {
+    $opt_v  = 1;
+}
+if (defined $opt_xsl) {
+    $opt_xsl = $CLOC_XSL if $opt_xsl eq "1";
+    $opt_xml = 1;
+}
+my $skip_generate_report = 0;
+$opt_sql = 0 unless defined $opt_sql;
+if ($opt_sql eq "-" || $opt_sql eq "1") { # stream SQL output to STDOUT
+    $opt_quiet            = 1;
+    $skip_generate_report = 1;
+    $opt_by_file          = 1;
+    $opt_sum_reports      = 0;
+    $opt_progress_rate    = 0;
+} elsif ($opt_sql)  { # write SQL output to a file
+    $opt_by_file          = 1;
+    $skip_generate_report = 1;
+    $opt_sum_reports      = 0;
+}
+
+die $usage unless defined $opt_version         or
+                  defined $opt_show_lang       or
+                  defined $opt_show_ext        or
+                  defined $opt_show_os         or
+                  defined $opt_write_lang_def  or
+                  defined $opt_list_file       or
+                  defined $opt_xsl             or
+                  scalar @ARGV >= 1;
+die "--diff requires at least two arguments\n" 
+    if $opt_diff and scalar @ARGV < 2;
+if ($opt_version) {
+    printf "$VERSION\n";
+    exit;
+}
+# 1}}}
+# Step 1:  Initialize global constants.        {{{1
+#
+my $nFiles_Found = 0;  # updated in make_file_list
+my (%Language_by_Extension, %Language_by_Script,
+    %Filters_by_Language, %Not_Code_Extension, %Not_Code_Filename,
+    %Language_by_File, %Scale_Factor, %Known_Binary_Archives,
+    %EOL_Continuation_re,
+   );
+my $ALREADY_SHOWED_HEADER = 0;
+my $ALREADY_SHOWED_XML_SECTION = 0;
+my %Error_Codes = ( 'Unable to read'                => -1,
+                    'Neither file nor directory'    => -2, 
+                    'Diff error (quoted comments?)' => -3, 
+                    'Diff error, exceeded timeout'  => -4, 
+                  );
+if ($opt_force_lang_def) {
+    # replace cloc's definitions
+    read_lang_def(
+        $opt_force_lang_def    , #        Sample values:
+        \%Language_by_Extension, # Language_by_Extension{f}    = 'Fortran 77' 
+        \%Language_by_Script   , # Language_by_Script{sh}      = 'Bourne Shell'
+        \%Language_by_File     , # Language_by_File{makefile}  = 'make'
+        \%Filters_by_Language  , # Filters_by_Language{Bourne Shell}[0] = 
+                                 #      [ 'remove_matches' , '^\s*#'  ]
+        \%Not_Code_Extension   , # Not_Code_Extension{jpg}     = 1
+        \%Not_Code_Filename    , # Not_Code_Filename{README}   = 1
+        \%Scale_Factor         , # Scale_Factor{Perl}          = 4.0
+        \%EOL_Continuation_re  , # EOL_Continuation_re{C++}    = '\\$'
+        );
+} else {
+    set_constants(               #
+        \%Language_by_Extension, # Language_by_Extension{f}    = 'Fortran 77' 
+        \%Language_by_Script   , # Language_by_Script{sh}      = 'Bourne Shell'
+        \%Language_by_File     , # Language_by_File{makefile}  = 'make'
+        \%Filters_by_Language  , # Filters_by_Language{Bourne Shell}[0] = 
+                                 #      [ 'remove_matches' , '^\s*#'  ]
+        \%Not_Code_Extension   , # Not_Code_Extension{jpg}     = 1
+        \%Not_Code_Filename    , # Not_Code_Filename{README}   = 1
+        \%Scale_Factor         , # Scale_Factor{Perl}          = 4.0
+        \%Known_Binary_Archives, # Known_Binary_Archives{.tar} = 1
+        \%EOL_Continuation_re  , # EOL_Continuation_re{C++}    = '\\$'
+        );
+}
+if ($opt_read_lang_def) {
+    # augment cloc's definitions (keep cloc's where there are overlaps)
+    merge_lang_def(
+        $opt_read_lang_def     , #        Sample values:
+        \%Language_by_Extension, # Language_by_Extension{f}    = 'Fortran 77' 
+        \%Language_by_Script   , # Language_by_Script{sh}      = 'Bourne Shell'
+        \%Language_by_File     , # Language_by_File{makefile}  = 'make'
+        \%Filters_by_Language  , # Filters_by_Language{Bourne Shell}[0] = 
+                                 #      [ 'remove_matches' , '^\s*#'  ]
+        \%Not_Code_Extension   , # Not_Code_Extension{jpg}     = 1
+        \%Not_Code_Filename    , # Not_Code_Filename{README}   = 1
+        \%Scale_Factor         , # Scale_Factor{Perl}          = 4.0
+        \%EOL_Continuation_re  , # EOL_Continuation_re{C++}    = '\\$'
+        );
+}
+if ($opt_lang_no_ext and !defined $Filters_by_Language{$opt_lang_no_ext}) {
+    die_unknown_lang($opt_lang_no_ext, "--lang-no-ext")
+}
+
+# Process command line provided extention-to-language mapping overrides.
+# Make a hash of known languages in lower case for easier matching.
+my %Recognized_Language_lc = (); # key = language name in lc, value = true name
+foreach my $language (keys %Filters_by_Language) {
+    my $lang_lc = lc $language;
+    $Recognized_Language_lc{$lang_lc} = $language;
+}
+my %Forced_Extension = (); # file name extensions which user wants to count
+my $All_One_Language = 0;  # set to !0 if --force-lang's <ext> is missing
+foreach my $pair (@opt_force_lang) {
+    my ($lang, $extension) = split(',', $pair);
+    my $lang_lc = lc $lang;
+    if (defined $extension) {
+        $Forced_Extension{$extension} = $lang;
+
+        die_unknown_lang($lang, "--force-lang")
+            unless $Recognized_Language_lc{$lang_lc}; 
+
+        $Language_by_Extension{$extension} = $Recognized_Language_lc{$lang_lc};
+    } else {
+        # the scary case--count everything as this language
+        $All_One_Language = $Recognized_Language_lc{$lang_lc};
+    }
+}
+
+foreach my $pair (@opt_script_lang) {
+    my ($lang, $script_name) = split(',', $pair);
+    my $lang_lc = lc $lang;
+    if (!defined $script_name) {
+        die "The --script-lang option requires a comma separated pair of ".
+            "strings.\n";
+    }
+
+    die_unknown_lang($lang, "--script-lang")
+        unless $Recognized_Language_lc{$lang_lc}; 
+
+    $Language_by_Script{$script_name} = $Recognized_Language_lc{$lang_lc};
+}
+
+# If user provided file extensions to ignore, add these to
+# the exclusion list.
+foreach my $ext (map { $_ => 1 } split(/,/, $opt_exclude_ext ) ) {
+    $ext = lc $ext if $ON_WINDOWS;
+    $Not_Code_Extension{$ext} = 1;
+}
+
+# If SQL or --by-file output is requested, keep track of directory names
+# generated by File::Temp::tempdir and used to temporarily hold the results
+# of compressed archives.  Contents of the SQL table 't' will be much
+# cleaner if these meaningless directory names are stripped from the front
+# of files pulled from the archives.
+my %TEMP_DIR = ();
+my $TEMP_OFF =  0;  # Needed for --sdir; keep track of the number of
+                    # scratch directories made in this run to avoid
+                    # file overwrites by multiple extractions to same
+                    # sdir.
+# Also track locations where temporary installations, if necessary, of
+# Algorithm::Diff and/or Regexp::Common are done.  Make sure these 
+# directories are not counted as inputs (ref bug #80 2012-11-23).
+my %TEMP_INST = ();
+
+# invert %Language_by_Script hash to get an easy-to-look-up list of known
+# scripting languages
+my %Script_Language = map { $_ => 1 } values %Language_by_Script ;
+# 1}}}
+# Step 2:  Early exits for display, summation. {{{1
+#
+print_extension_info($opt_show_ext ) if defined $opt_show_ext ;
+print_language_info( $opt_show_lang) if defined $opt_show_lang;
+exit if (defined $opt_show_ext) or (defined $opt_show_lang);
+
+#print "Before glob have [", join(",", @ARGV), "]\n";
+@ARGV = windows_glob(@ARGV) if $ON_WINDOWS;
+#print "after  glob have [", join(",", @ARGV), "]\n";
+
+# filter out archive files if requested to do so
+if (defined $opt_skip_archive) {
+    my @non_archive = ();
+    foreach my $candidate (@ARGV) {
+        if ($candidate !~ m/${opt_skip_archive}$/) {
+            push @non_archive, $candidate;
+
+        } 
+    }
+    @ARGV = @non_archive;
+}
+
+if ($opt_sum_reports and $opt_diff) {
+    my @results = ();
+    if ($opt_list_file) { # read inputs from the list file
+        my @list = read_list_file($opt_list_file);
+        @results = combine_diffs(\@list);
+    } else { # get inputs from the command line
+        @results = combine_diffs(\@ARGV);
+    }
+    if ($opt_report_file) {
+        write_file($opt_report_file, @results);
+    } else {
+        print "\n", join("\n", @results), "\n";
+    }
+    exit;
+}
+if ($opt_sum_reports) {
+    my %Results = ();
+    foreach my $type( "by language", "by report file" ) {
+        my $found_lang = undef; 
+        if ($opt_list_file) { # read inputs from the list file
+            my @list = read_list_file($opt_list_file);
+            $found_lang = combine_results(\@list, 
+                                           $type, 
+                                          \%{$Results{ $type }}, 
+                                          \%Filters_by_Language );
+        } else { # get inputs from the command line
+            $found_lang = combine_results(\@ARGV, 
+                                           $type, 
+                                          \%{$Results{ $type }}, 
+                                          \%Filters_by_Language );
+        }
+        next unless %Results;
+        my $end_time = get_time();
+        my @results  = generate_report($VERSION, $end_time - $start_time,
+                                       $type,
+                                      \%{$Results{ $type }}, \%Scale_Factor);
+        if ($opt_report_file) {
+            my $ext  = ".lang";
+               $ext  = ".file" unless $type eq "by language";
+            next if !$found_lang and  $ext  eq ".lang";
+            write_file($opt_report_file . $ext, @results);
+        } else {
+            print "\n", join("\n", @results), "\n";
+        }
+    }
+    exit;
+}
+if ($opt_write_lang_def) {
+    write_lang_def($opt_write_lang_def   ,
+                  \%Language_by_Extension,
+                  \%Language_by_Script   ,
+                  \%Language_by_File     ,
+                  \%Filters_by_Language  ,
+                  \%Not_Code_Extension   ,
+                  \%Not_Code_Filename    ,
+                  \%Scale_Factor         ,
+                  \%EOL_Continuation_re  ,
+                  );
+    exit;
+}
+if ($opt_show_os) {
+    if ($ON_WINDOWS) {
+        print "Windows\n";
+    } else {
+        print "UNIX\n";
+    }
+    exit;
+}
+# 1}}}
+# Step 3:  Create a list of files to consider. {{{1
+#  a) If inputs are binary archives, first cd to a temp
+#     directory, expand the archive with the user-given
+#     extraction tool, then add the temp directory to
+#     the list of dirs to process.
+#  b) Create a list of every file that might contain source
+#     code.  Ignore binary files, zero-sized files, and
+#     any file in a directory the user says to exclude.
+#  c) Determine the language for each file in the list.
+#
+my @binary_archive = ();
+my $cwd            = cwd();
+if ($opt_extract_with) {
+#print "cwd main = [$cwd]\n";
+    my @extract_location = ();
+    foreach my $bin_file (@ARGV) {
+        my $extract_dir = undef;
+        if ($opt_sdir) {
+            ++$TEMP_OFF;
+            $extract_dir = "$opt_sdir/$TEMP_OFF";
+            File::Path::rmtree($extract_dir) if     is_dir($extract_dir);
+            File::Path::mkpath($extract_dir) unless is_dir($extract_dir);
+        } else {
+            $extract_dir = tempdir( CLEANUP => 1 );  # 1 = delete on exit
+        }
+        $TEMP_DIR{ $extract_dir } = 1 if $opt_sql or $opt_by_file;
+        print "mkdir $extract_dir\n"  if $opt_v;
+        print "cd    $extract_dir\n"  if $opt_v;
+        chdir $extract_dir;
+        my $bin_file_full_path = "";
+        if (File::Spec->file_name_is_absolute( $bin_file )) {
+            $bin_file_full_path = $bin_file;
+#print "bin_file_full_path (was ful) = [$bin_file_full_path]\n";
+        } else {
+            $bin_file_full_path = File::Spec->catfile( $cwd, $bin_file );
+#print "bin_file_full_path (was rel) = [$bin_file_full_path]\n";
+        }
+        my     $extract_cmd = uncompress_archive_cmd($bin_file_full_path);
+        print  $extract_cmd, "\n" if $opt_v;
+        system $extract_cmd;
+        push @extract_location, $extract_dir;
+        chdir $cwd;
+    }
+    # It is possible that the binary archive itself contains additional
+    # files compressed the same way (true for Java .ear files).  Go
+    # through all the files that were extracted, see if they are binary
+    # archives and try to extract them.  Lather, rinse, repeat.
+    my $binary_archives_exist = 1;
+    my $count_binary_archives = 0;
+    my $previous_count        = 0;
+    my $n_pass                = 0;
+    while ($binary_archives_exist) {
+        @binary_archive = ();
+        foreach my $dir (@extract_location) {
+            find(\&archive_files, $dir);  # populates global @binary_archive
+        }
+        foreach my $archive (@binary_archive) {
+            my $extract_dir = undef;
+            if ($opt_sdir) {
+                ++$TEMP_OFF;
+                $extract_dir = "$opt_sdir/$TEMP_OFF";
+                File::Path::rmtree($extract_dir) if     is_dir($extract_dir);
+                File::Path::mkpath($extract_dir) unless is_dir($extract_dir);
+            } else {
+                $extract_dir = tempdir( CLEANUP => 1 );  # 1 = delete on exit
+            }
+            $TEMP_DIR{ $extract_dir } = 1 if $opt_sql or $opt_by_file;
+            print "mkdir $extract_dir\n"  if $opt_v;
+            print "cd    $extract_dir\n"  if $opt_v;
+            chdir  $extract_dir;
+
+            my     $extract_cmd = uncompress_archive_cmd($archive);
+            print  $extract_cmd, "\n" if $opt_v;
+            system $extract_cmd;
+            push @extract_location, $extract_dir;
+            unlink $archive;  # otherwise will be extracting it forever 
+        }
+        $count_binary_archives = scalar @binary_archive;
+        if ($count_binary_archives == $previous_count) {
+            $binary_archives_exist = 0;
+        }
+        $previous_count = $count_binary_archives;
+    }
+    chdir $cwd;
+
+    @ARGV = @extract_location;
+} else {
+    # see if any of the inputs need to be auto-uncompressed &/or expanded
+    my @updated_ARGS = ();
+    foreach my $Arg (@ARGV) {
+        if (is_dir($Arg)) {
+            push @updated_ARGS, $Arg;
+            next;
+        }
+        my $full_path = "";
+        if (File::Spec->file_name_is_absolute( $Arg )) {
+            $full_path = $Arg;
+        } else {
+            $full_path = File::Spec->catfile( $cwd, $Arg );
+        }
+#print "full_path = [$full_path]\n";
+        my $extract_cmd = uncompress_archive_cmd($full_path);
+        if ($extract_cmd) {
+            my $extract_dir = undef;
+            if ($opt_sdir) {
+                ++$TEMP_OFF;
+                $extract_dir = "$opt_sdir/$TEMP_OFF";
+                File::Path::rmtree($extract_dir) if     is_dir($extract_dir);
+                File::Path::mkpath($extract_dir) unless is_dir($extract_dir);
+            } else {
+                $extract_dir = tempdir( CLEANUP => 1 ); # 1 = delete on exit
+            }
+            $TEMP_DIR{ $extract_dir } = 1 if $opt_sql or $opt_by_file;
+            print "mkdir $extract_dir\n"  if $opt_v;
+            print "cd    $extract_dir\n"  if $opt_v;
+            chdir  $extract_dir;
+            print  $extract_cmd, "\n" if $opt_v;
+            system $extract_cmd;
+            push @updated_ARGS, $extract_dir;
+            chdir $cwd;
+        } else {
+            # this is a conventional, uncompressed, unarchived file
+            # or a directory; keep as-is
+            push @updated_ARGS, $Arg;
+        }
+    }
+    @ARGV = @updated_ARGS;
+
+    # make sure we're not counting any directory containing
+    # temporary installations of Regexp::Common, Algorithm::Diff
+    foreach my $d (sort keys %TEMP_INST) {
+        foreach my $a (@ARGV) {
+            next unless is_dir($a);
+            if ($opt_v > 2) {
+                printf "Comparing %s (location of %s) to input [%s]\n",
+                        $d, $TEMP_INST{$d}, $a;
+            }
+            if ($a eq $d) {
+                die "File::Temp::tempdir chose directory ",
+                    $d, " to install ", $TEMP_INST{$d}, " but this ",
+                    "matches one of your input directories.  Rerun ",
+                    "with --sdir and supply a different temporary ",
+                    "directory for ", $TEMP_INST{$d}, "\n";
+            }
+        }
+    }
+}
+# 1}}}
+my @Errors    = ();
+my @file_list = ();  # global variable updated in files()
+my %Ignored   = ();  # files that are not counted (language not recognized or
+                     # problems reading the file)
+my @Lines_Out = ();
+if ($opt_diff) {
+# Step 4:  Separate code from non-code files.  {{{1
+my @fh            = ();
+my @files_for_set = ();
+# make file lists for each separate argument
+if ($opt_exclude_list_file) {
+    process_exclude_list_file($opt_exclude_list_file, 
+                             \%Exclude_Dir,
+                             \%Ignored);
+}
+for (my $i = 0; $i < scalar @ARGV; $i++) {
+    push @fh, 
+         make_file_list([ $ARGV[$i] ], \%Error_Codes, \@Errors, \%Ignored);
+    @{$files_for_set[$i]} = @file_list;
+    @file_list = ();
+}
+# 1}}}
+# Step 5:  Remove duplicate files.             {{{1
+#
+my %Language           = ();
+my %unique_source_file = ();
+my $n_set = 0;
+foreach my $FH (@fh) {  # loop over each pair of file sets
+    ++$n_set;
+    remove_duplicate_files($FH, 
+                               \%{$Language{$FH}}               , 
+                               \%{$unique_source_file{$FH}}     , 
+                          \%Error_Codes                         , 
+                               \@Errors                         , 
+                               \%Ignored                        );
+    printf "%2d: %8d unique file%s.                          \r", 
+        $n_set,
+        plural_form(scalar keys %unique_source_file) 
+        unless $opt_quiet;
+}
+# 1}}}
+# Step 6:  Count code, comments, blank lines.  {{{1
+#
+my %Results_by_Language = ();
+my %Results_by_File     = ();
+my %Delta_by_Language   = ();
+my %Delta_by_File       = ();
+my $nFiles_added        = 0;
+my $nFiles_removed      = 0;
+my $nFiles_modified     = 0;
+my $nFiles_same         = 0;
+
+foreach (my $F = 0; $F < scalar @fh - 1; $F++) { 
+    # loop over file sets; do diff between set $F to $F+1
+
+    my $nCounted = 0;
+
+    my @file_pairs    = ();
+    my @files_added   = ();
+    my @files_removed = ();
+
+    align_by_pairs(\%{$unique_source_file{$fh[$F  ]}}    , # in
+                   \%{$unique_source_file{$fh[$F+1]}}    , # in
+                   \@files_added                         , # out
+                   \@files_removed                       , # out
+                   \@file_pairs                          , # out
+                   );
+    my %already_counted = (); # already_counted{ filename } = 1
+                              
+    if (!@file_pairs) {
+        # Special case where all files were either added or deleted.
+        # In this case, one of these arrays will be empty: 
+        #   @files_added, @files_removed
+        # so loop over both to cover both cases.
+        my $status = @files_added ? 'added' : 'removed';
+        my $offset = @files_added ? 1       : 0        ;
+        foreach my $file (@files_added, @files_removed) {
+            next unless defined $Language{$fh[$F+$offset]}{$file};
+            my $Lang = $Language{$fh[$F+$offset]}{$file};
+            next if $Lang eq '(unknown)';
+            my ($all_line_count,
+                $blank_count   ,
+                $comment_count ,
+               ) = call_counter($file, $Lang, \@Errors);
+            $already_counted{$file} = 1;
+            my $code_count = $all_line_count-$blank_count-$comment_count;
+            if ($opt_by_file) {
+                $Delta_by_File{$file}{'code'   }{$status} += $code_count   ;
+                $Delta_by_File{$file}{'blank'  }{$status} += $blank_count  ;
+                $Delta_by_File{$file}{'comment'}{$status} += $comment_count;
+                $Delta_by_File{$file}{'lang'   }{$status}  = $Lang         ;
+                $Delta_by_File{$file}{'nFiles' }{$status} += 1             ;
+            }
+            $Delta_by_Language{$Lang}{'code'   }{$status} += $code_count   ;
+            $Delta_by_Language{$Lang}{'blank'  }{$status} += $blank_count  ;
+            $Delta_by_Language{$Lang}{'comment'}{$status} += $comment_count;
+            $Delta_by_Language{$Lang}{'nFiles' }{$status} += 1             ;
+        }
+    }
+   #use Data::Dumper::Simple;
+   #use Data::Dumper;
+   #print Dumper(\@files_added, \@files_removed, \@file_pairs);
+    my @alignment = (); # only  used if --diff-alignment
+#print "after align_by_pairs:\n";
+
+#print "added:\n";
+    push @alignment, sprintf "Files added: %d\n", scalar @files_added
+        if $opt_diff_alignment;
+    foreach my $f (@files_added) {
+        next if $already_counted{$f};
+#printf "%10s -> %s\n", $f, $Language{$fh[$F+1]}{$f};
+        # Don't proceed unless the file (both L and R versions)
+        # is in a known language.
+        next if $Language{$fh[$F+1]}{$f} eq "(unknown)";
+        next if $Exclude_Language{$Language{$fh[$F+1]}{$f}};
+        push @alignment, sprintf "  + %s ; %s\n", $f, $Language{$fh[$F+1]}{$f}
+            if $opt_diff_alignment;
+        ++$Delta_by_Language{ $Language{$fh[$F+1]}{$f} }{'nFiles'}{'added'};
+        # Additionally, add contents of file $f to 
+        #        Delta_by_File{$f}{comment/blank/code}{'added'}
+        #        Delta_by_Language{$lang}{comment/blank/code}{'added'}
+        my ($all_line_count,
+            $blank_count   ,
+            $comment_count ,
+           ) = call_counter($f, $Language{$fh[$F+1]}{$f}, \@Errors);
+        $Delta_by_Language{ $Language{$fh[$F+1]}{$f} }{'comment'}{'added'} +=
+            $comment_count;
+        $Delta_by_Language{ $Language{$fh[$F+1]}{$f} }{'blank'}{'added'}   +=
+            $blank_count;
+        $Delta_by_Language{ $Language{$fh[$F+1]}{$f} }{'code'}{'added'}    +=
+            $all_line_count - $blank_count - $comment_count;
+        $Delta_by_File{ $f }{'comment'}{'added'} = $comment_count;
+        $Delta_by_File{ $f }{'blank'}{'added'}   = $blank_count;
+        $Delta_by_File{ $f }{'code'}{'added'}    = 
+            $all_line_count - $blank_count - $comment_count;
+    }
+    push @alignment, "\n";
+
+#print "removed:\n";
+    push @alignment, sprintf "Files removed: %d\n", scalar @files_removed
+        if $opt_diff_alignment;
+    foreach my $f (@files_removed) {
+        next if $already_counted{$f};
+        # Don't proceed unless the file (both L and R versions)
+        # is in a known language.
+        next if $Language{$fh[$F  ]}{$f} eq "(unknown)";
+        next if $Exclude_Language{$Language{$fh[$F  ]}{$f}};
+        ++$Delta_by_Language{ $Language{$fh[$F  ]}{$f} }{'nFiles'}{'removed'};
+        push @alignment, sprintf "  - %s ; %s\n", $f, $Language{$fh[$F]}{$f}
+            if $opt_diff_alignment;
+#printf "%10s -> %s\n", $f, $Language{$fh[$F  ]}{$f};
+        # Additionally, add contents of file $f to 
+        #        Delta_by_File{$f}{comment/blank/code}{'removed'}
+        #        Delta_by_Language{$lang}{comment/blank/code}{'removed'}
+        my ($all_line_count,
+            $blank_count   ,
+            $comment_count ,
+           ) = call_counter($f, $Language{$fh[$F  ]}{$f}, \@Errors);
+        $Delta_by_Language{ $Language{$fh[$F  ]}{$f} }{'comment'}{'removed'} +=
+            $comment_count;
+        $Delta_by_Language{ $Language{$fh[$F  ]}{$f} }{'blank'}{'removed'}   +=
+            $blank_count;
+        $Delta_by_Language{ $Language{$fh[$F  ]}{$f} }{'code'}{'removed'}    +=
+            $all_line_count - $blank_count - $comment_count;
+        $Delta_by_File{ $f }{'comment'}{'removed'} = $comment_count;
+        $Delta_by_File{ $f }{'blank'}{'removed'}   = $blank_count;
+        $Delta_by_File{ $f }{'code'}{'removed'}    = 
+            $all_line_count - $blank_count - $comment_count;
+    }
+    push @alignment, "\n";
+
+    my $alignment_pairs_index = scalar @alignment;
+    my $n_file_pairs_compared = 0;
+    # Don't know ahead of time how many file pairs will be compared
+    # since duplicates are weeded out below.  The answer is
+    # scalar @file_pairs only if there are no duplicates.
+    push @alignment, sprintf "File pairs compared: UPDATE_ME\n"
+        if $opt_diff_alignment;
+
+    foreach my $pair (@file_pairs) {
+        my $file_L = $pair->[0];
+        my $file_R = $pair->[1];
+        my $Lang_L = $Language{$fh[$F  ]}{$file_L};
+        my $Lang_R = $Language{$fh[$F+1]}{$file_R};
+#print "main step 6 file_L=$file_L    file_R=$file_R\n";
+        ++$nCounted;
+        printf "Counting:  %d\r", $nCounted 
+            unless (!$opt_progress_rate or ($nCounted % $opt_progress_rate));
+        next if $Ignored{$file_L};
+
+        # filter out excluded or unrecognized languages
+        if ($Exclude_Language{$Lang_L} or $Exclude_Language{$Lang_R}) {
+            $Ignored{$file_L} = "--exclude-lang=$Lang_L}";
+            $Ignored{$file_R} = "--exclude-lang=$Lang_R}";
+            next;
+        }
+        my $not_Filters_by_Language_Lang_LR = 0;
+        if ($PERL_516) {
+            if (!(@{$Filters_by_Language{$Lang_L} }) or
+                !(@{$Filters_by_Language{$Lang_R} })) {
+                $not_Filters_by_Language_Lang_LR = 1;
+            }
+        } else {
+            if (!defined(@{$Filters_by_Language{$Lang_L} }) or
+                !defined(@{$Filters_by_Language{$Lang_R} })) {
+                $not_Filters_by_Language_Lang_LR = 1;
+            }
+        }
+        if ($not_Filters_by_Language_Lang_LR) {
+            if (($Lang_L eq "(unknown)") or ($Lang_R eq "(unknown)")) {
+                $Ignored{$fh[$F  ]}{$file_L} = "language unknown (#1)";
+                $Ignored{$fh[$F+1]}{$file_R} = "language unknown (#1)";
+            } else {
+                $Ignored{$fh[$F  ]}{$file_L} = "missing Filters_by_Language{$Lang_L}";
+                $Ignored{$fh[$F+1]}{$file_R} = "missing Filters_by_Language{$Lang_R}";
+            }
+            next;
+        }
+
+#print "DIFF($file_L, $file_R)\n";
+        # step 0: compare the two files' contents 
+        chomp ( my @lines_L = read_file($file_L) );
+        chomp ( my @lines_R = read_file($file_R) );
+        my $language_file_L = "";
+        if (defined $Language{$fh[$F]}{$file_L}) {
+            $language_file_L = $Language{$fh[$F]}{$file_L};
+        } else {
+            # files $file_L and $file_R do not contain known language
+            next;
+        }
+        my $contents_are_same = 1;
+        if (scalar @lines_L == scalar @lines_R) {
+            # same size, must compare line-by-line
+            for (my $i = 0; $i < scalar @lines_L; $i++) {
+                if ($lines_L[$i] ne $lines_R[$i]) {
+                    $contents_are_same = 0;
+                    last;
+                }
+            }
+            if ($contents_are_same) {
+                ++$Delta_by_Language{$language_file_L}{'nFiles'}{'same'};
+            } else {
+                ++$Delta_by_Language{$language_file_L}{'nFiles'}{'modified'};
+            }
+        } else {
+            $contents_are_same = 0;
+            # different sizes, contents have changed
+            ++$Delta_by_Language{$language_file_L}{'nFiles'}{'modified'};
+        }
+        if ($opt_diff_alignment) {
+            my $str =  "$file_L | $file_R ; $language_file_L";
+            if ($contents_are_same) {
+                push @alignment, "  == $str";
+            } else {
+                push @alignment, "  != $str";
+            }
+            ++$n_file_pairs_compared;
+        }
+
+        # step 1: identify comments in both files
+#print "Diff blank removal L language= $Lang_L";
+#print " scalar(lines_L)=", scalar @lines_L, "\n";
+        my @original_minus_blanks_L 
+                    = rm_blanks(  \@lines_L, $Lang_L, \%EOL_Continuation_re);
+#print "1: scalar(original_minus_blanks_L)=", scalar @original_minus_blanks_L, "\n";
+        @lines_L    = @original_minus_blanks_L;
+#print "2: scalar(lines_L)=", scalar @lines_L, "\n";
+        @lines_L    = add_newlines(\@lines_L); # compensate for rm_comments()
+        @lines_L    = rm_comments( \@lines_L, $Lang_L, $file_L,
+                                   \%EOL_Continuation_re);
+#print "3: scalar(lines_L)=", scalar @lines_L, "\n";
+
+#print "Diff blank removal R language= $Lang_R\n";
+        my @original_minus_blanks_R 
+                    = rm_blanks(  \@lines_R, $Lang_R, \%EOL_Continuation_re);
+        @lines_R    = @original_minus_blanks_R;
+        @lines_R    = add_newlines(\@lines_R); # taken away by rm_comments()
+        @lines_R    = rm_comments( \@lines_R, $Lang_R, $file_R,
+                                   \%EOL_Continuation_re);
+
+        my (@diff_LL, @diff_LR, );
+        array_diff( $file_L                  ,   # in
+                   \@original_minus_blanks_L ,   # in
+                   \@lines_L                 ,   # in
+                   "comment"                 ,   # in
+                   \@diff_LL, \@diff_LR      ,   # out
+                   \@Errors);                    # in/out
+
+        my (@diff_RL, @diff_RR, );
+        array_diff( $file_R                  ,   # in
+                   \@original_minus_blanks_R ,   # in
+                   \@lines_R                 ,   # in
+                   "comment"                 ,   # in
+                   \@diff_RL, \@diff_RR      ,   # out
+                   \@Errors);                    # in/out
+        # each line of each file is now classified as
+        # code or comment
+
+#use Data::Dumper; 
+#print Dumper("diff_LL", \@diff_LL, "diff_LR", \@diff_LR, );
+#print Dumper("diff_RL", \@diff_RL, "diff_RR", \@diff_RR, );
+#die;
+        # step 2: separate code from comments for L and R files
+        my @code_L = ();
+        my @code_R = ();
+        my @comm_L = ();
+        my @comm_R = ();
+        foreach my $line_info (@diff_LL) {
+            if      ($line_info->{'type'} eq "code"   ) {
+                push @code_L, $line_info->{char};
+            } elsif ($line_info->{'type'} eq "comment") {
+                push @comm_L, $line_info->{char};
+            } else {
+                die "Diff unexpected line type ",
+                    $line_info->{'type'}, "for $file_L line ",
+                    $line_info->{'lnum'};
+            }
+        }
+        foreach my $line_info (@diff_RL) {
+            if      ($line_info->{type} eq "code"   ) {
+                push @code_R, $line_info->{'char'};
+            } elsif ($line_info->{type} eq "comment") {
+                push @comm_R, $line_info->{'char'};
+            } else {
+                die "Diff unexpected line type ",
+                    $line_info->{'type'}, "for $file_R line ",
+                    $line_info->{'lnum'};
+            }
+        }
+
+        if ($opt_ignore_whitespace) {
+            # strip all whitespace from each line of source code
+            # and comments then use these stripped arrays in diffs
+            foreach (@code_L) { s/\s+//g }
+            foreach (@code_R) { s/\s+//g }
+            foreach (@comm_L) { s/\s+//g }
+            foreach (@comm_R) { s/\s+//g }
+        }
+        if ($opt_ignore_case) {
+            # change all text to lowercase in diffs
+            foreach (@code_L) { $_ = lc }
+            foreach (@code_R) { $_ = lc }
+            foreach (@comm_L) { $_ = lc }
+            foreach (@comm_R) { $_ = lc }
+        }
+        # step 3: compute code diffs
+        array_diff("$file_L v. $file_R"   ,   # in
+                   \@code_L               ,   # in
+                   \@code_R               ,   # in
+                   "revision"             ,   # in
+                   \@diff_LL, \@diff_LR   ,   # out
+                   \@Errors);                 # in/out
+#print Dumper("diff_LL", \@diff_LL, "diff_LR", \@diff_LR, );
+#print Dumper("diff_LR", \@diff_LR);
+        foreach my $line_info (@diff_LR) {
+            my $status = $line_info->{'desc'}; # same|added|removed|modified
+            ++$Delta_by_Language{$Lang_L}{'code'}{$status};
+            if ($opt_by_file) {
+                ++$Delta_by_File{$file_L}{'code'}{$status};
+            }
+        }
+#use Data::Dumper;
+#print Dumper("code diffs:", \@diff_LL, \@diff_LR);
+
+        # step 4: compute comment diffs
+        array_diff("$file_L v. $file_R"   ,   # in
+                   \@comm_L               ,   # in
+                   \@comm_R               ,   # in
+                   "revision"             ,   # in
+                   \@diff_LL, \@diff_LR   ,   # out
+                   \@Errors);                 # in/out
+#print Dumper("comment diff_LR", \@diff_LR);
+        foreach my $line_info (@diff_LR) {
+            my $status = $line_info->{'desc'}; # same|added|removed|modified
+            ++$Delta_by_Language{$Lang_L}{'comment'}{$status};
+            if ($opt_by_file) {
+                ++$Delta_by_File{$file_L}{'comment'}{$status};
+            }
+        }
+#print Dumper("comment diffs:", \@diff_LL, \@diff_LR);
+#die; here=  need to save original line number in diff result for html display
+
+        # step 5: compute difference in blank lines (kind of pointless)
+        next if $Lang_L eq '(unknown)' or 
+                $Lang_R eq '(unknown)';
+        my ($all_line_count_L,
+            $blank_count_L   ,
+            $comment_count_L ,
+           ) = call_counter($file_L, $Lang_L, \@Errors);
+
+        my ($all_line_count_R,
+            $blank_count_R   ,
+            $comment_count_R ,
+           ) = call_counter($file_R, $Lang_R, \@Errors);
+
+        if ($blank_count_L <  $blank_count_R) {
+            my $D = $blank_count_R - $blank_count_L;
+            $Delta_by_Language{$Lang_L}{'blank'}{'added'}   += $D;
+        } else {
+            my $D = $blank_count_L - $blank_count_R;
+            $Delta_by_Language{$Lang_L}{'blank'}{'removed'} += $D;
+        }
+        if ($opt_by_file) {
+            if ($blank_count_L <  $blank_count_R) {
+                my $D = $blank_count_R - $blank_count_L;
+                $Delta_by_File{$file_L}{'blank'}{'added'}   += $D;
+            } else {
+                my $D = $blank_count_L - $blank_count_R;
+                $Delta_by_File{$file_L}{'blank'}{'removed'} += $D;
+            }
+        }
+
+        my $code_count_L = $all_line_count_L-$blank_count_L-$comment_count_L;
+        if ($opt_by_file) {
+            $Results_by_File{$file_L}{'code'   } = $code_count_L    ;
+            $Results_by_File{$file_L}{'blank'  } = $blank_count_L   ;
+            $Results_by_File{$file_L}{'comment'} = $comment_count_L ;
+            $Results_by_File{$file_L}{'lang'   } = $Lang_L          ;
+            $Results_by_File{$file_L}{'nFiles' } = 1                ;
+        } else {
+            $Results_by_File{$file_L} = 1;  # just keep track of counted files
+        }
+   
+        $Results_by_Language{$Lang_L}{'nFiles'}++;
+        $Results_by_Language{$Lang_L}{'code'}    += $code_count_L   ;
+        $Results_by_Language{$Lang_L}{'blank'}   += $blank_count_L  ;
+        $Results_by_Language{$Lang_L}{'comment'} += $comment_count_L;
+    }
+    if ($opt_diff_alignment) {
+        $alignment[$alignment_pairs_index] =~ s/UPDATE_ME/$n_file_pairs_compared/;
+        write_file($opt_diff_alignment, @alignment);
+    }
+
+}
+#use Data::Dumper;
+#print Dumper("Delta_by_Language:"  , \%Delta_by_Language);
+#print Dumper("Results_by_Language:", \%Results_by_Language);
+#print Dumper("Delta_by_File:"      , \%Delta_by_File);
+#print Dumper("Results_by_File:"    , \%Results_by_File);
+#die;
+my @ignored_reasons = map { "$_: $Ignored{$_}" } sort keys %Ignored;
+write_file($opt_ignored, @ignored_reasons   ) if $opt_ignored;
+write_file($opt_counted, sort keys %Results_by_File) if $opt_counted;
+# 1}}}
+# Step 7:  Assemble results.                   {{{1
+#
+my $end_time = get_time();
+printf "%8d file%s ignored.                           \n", 
+    plural_form(scalar keys %Ignored) unless $opt_quiet;
+print_errors(\%Error_Codes, \@Errors) if @Errors;
+if (!%Delta_by_Language) {
+    print "Nothing to count.\n";
+    exit;
+}
+
+if ($opt_by_file) {
+    @Lines_Out = diff_report($VERSION, get_time() - $start_time,
+                            "by file",
+                            \%Delta_by_File, \%Scale_Factor);
+} else {
+    @Lines_Out = diff_report($VERSION, get_time() - $start_time,
+                            "by language",
+                            \%Delta_by_Language, \%Scale_Factor);
+}
+
+# 1}}}
+} else {
+# Step 4:  Separate code from non-code files.  {{{1
+my $fh = 0;
+if ($opt_list_file) {
+    my @list = read_list_file($opt_list_file);
+    $fh = make_file_list(\@list, \%Error_Codes, \@Errors, \%Ignored);
+} else {
+    $fh = make_file_list(\@ARGV, \%Error_Codes, \@Errors, \%Ignored);
+    #     make_file_list populates global variable @file_list via call to 
+    #     File::Find's find() which in turn calls files()
+}
+if ($opt_exclude_list_file) {
+    process_exclude_list_file($opt_exclude_list_file, 
+                             \%Exclude_Dir,
+                             \%Ignored);
+}
+if ($opt_skip_win_hidden and $ON_WINDOWS) {
+    my @file_list_minus_hidded = ();
+    # eval code to run on Unix without 'missing Win32::File module' error.
+    my $win32_file_invocation = '
+        use Win32::File;
+        foreach my $F (@file_list) {
+            my $attr = undef;
+            Win32::File::GetAttributes($F, $attr);
+            if ($attr & HIDDEN) {
+                $Ignored{$F} = "Windows hidden file";
+                print "Ignoring $F since it is a Windows hidden file\n" 
+                    if $opt_v > 1;
+            } else {
+                push @file_list_minus_hidded, $F;
+            }
+        }';
+    eval $win32_file_invocation;
+    @file_list = @file_list_minus_hidded;
+}
+#printf "%8d file%s excluded.                     \n", 
+#   plural_form(scalar keys %Ignored) 
+#   unless $opt_quiet;
+# die print ": ", join("\n: ", @file_list), "\n";
+# 1}}}
+# Step 5:  Remove duplicate files.             {{{1
+#
+my %Language           = ();
+my %unique_source_file = ();
+remove_duplicate_files($fh                          ,   # in 
+                           \%Language               ,   # out
+                           \%unique_source_file     ,   # out
+                      \%Error_Codes                 ,   # in
+                           \@Errors                 ,   # out
+                           \%Ignored                );  # out
+printf "%8d unique file%s.                              \n", 
+    plural_form(scalar keys %unique_source_file) 
+    unless $opt_quiet;
+# 1}}}
+# Step 6:  Count code, comments, blank lines.  {{{1
+#
+
+my %Results_by_Language = ();
+my %Results_by_File     = ();
+my $nCounted = 0;
+foreach my $file (sort keys %unique_source_file) {
+    ++$nCounted;
+    printf "Counting:  %d\r", $nCounted 
+        unless (!$opt_progress_rate or ($nCounted % $opt_progress_rate));
+    next if $Ignored{$file};
+    if ($Exclude_Language{$Language{$file}}) {
+        $Ignored{$file} = "--exclude-lang=$Language{$file}";
+        next;
+    }
+    my $Filters_by_Language_Language_file = !defined @{$Filters_by_Language{$Language{$file}} };
+    if ($Filters_by_Language_Language_file) {
+        if ($Language{$file} eq "(unknown)") {
+            $Ignored{$file} = "language unknown (#1)";
+        } else {
+            $Ignored{$file} = "missing Filters_by_Language{$Language{$file}}";
+        }
+        next;
+    }
+
+    my ($all_line_count,
+        $blank_count   ,
+        $comment_count ,
+       ) = call_counter($file, $Language{$file}, \@Errors);
+    my $code_count = $all_line_count - $blank_count - $comment_count;
+    if ($opt_by_file) {
+        $Results_by_File{$file}{'code'   } = $code_count     ;
+        $Results_by_File{$file}{'blank'  } = $blank_count    ;
+        $Results_by_File{$file}{'comment'} = $comment_count  ;
+        $Results_by_File{$file}{'lang'   } = $Language{$file};
+        $Results_by_File{$file}{'nFiles' } = 1;
+    } else {
+        $Results_by_File{$file} = 1;  # just keep track of counted files
+    }
+
+    $Results_by_Language{$Language{$file}}{'nFiles'}++;
+    $Results_by_Language{$Language{$file}}{'code'}    += $code_count   ;
+    $Results_by_Language{$Language{$file}}{'blank'}   += $blank_count  ;
+    $Results_by_Language{$Language{$file}}{'comment'} += $comment_count;
+}
+my @ignored_reasons = map { "$_: $Ignored{$_}" } sort keys %Ignored;
+write_file($opt_ignored, @ignored_reasons   ) if $opt_ignored;
+write_file($opt_counted, sort keys %Results_by_File) if $opt_counted;
+# 1}}}
+# Step 7:  Assemble results.                   {{{1
+#
+my $end_time = get_time();
+printf "%8d file%s ignored.\n", plural_form(scalar keys %Ignored) 
+    unless $opt_quiet;
+print_errors(\%Error_Codes, \@Errors) if @Errors;
+exit unless %Results_by_Language;
+
+generate_sql($end_time - $start_time,
+            \%Results_by_File, \%Scale_Factor) if $opt_sql;
+
+exit if $skip_generate_report;
+if      ($opt_by_file_by_lang) {
+    push @Lines_Out, generate_report( $VERSION, $end_time - $start_time,
+                                      "by file",
+                                      \%Results_by_File,    \%Scale_Factor);
+    push @Lines_Out, generate_report( $VERSION, $end_time - $start_time,
+                                      "by language",
+                                      \%Results_by_Language, \%Scale_Factor);
+} elsif ($opt_by_file) {
+    push @Lines_Out, generate_report( $VERSION, $end_time - $start_time,
+                                      "by file",
+                                      \%Results_by_File,    \%Scale_Factor);
+} else {
+    push @Lines_Out, generate_report( $VERSION, $end_time - $start_time,
+                                      "by language",
+                                      \%Results_by_Language, \%Scale_Factor);
+}
+# 1}}}
+}
+if ($opt_report_file) { write_file($opt_report_file, @Lines_Out); } 
+else                  { print "\n", join("\n", @Lines_Out), "\n"; }
+
+sub process_exclude_list_file {              # {{{1
+    my ($list_file      , # in
+        $rh_exclude_dir , # out
+        $rh_ignored     , # out
+       ) = @_;
+    print "-> process_exclude_list_file($list_file)\n" if $opt_v > 2;
+    # reject a specific set of files and/or directories
+    my @reject_list   = read_list_file($list_file);
+    my @file_reject_list = ();
+    foreach my $F_or_D (@reject_list) {
+        if (is_dir($F_or_D)) {
+            $rh_exclude_dir->{$F_or_D} = 1;
+        } elsif (is_file($F_or_D)) {
+            push @file_reject_list, $F_or_D;
+        }
+    }
+
+    # Normalize file names for better comparison.
+    my %normalized_input   = normalize_file_names(@file_list);
+    my %normalized_reject  = normalize_file_names(@file_reject_list);
+    my %normalized_exclude = normalize_file_names(keys %{$rh_exclude_dir});
+    foreach my $F (keys %normalized_input) {
+        if ($normalized_reject{$F} or is_excluded($F, \%normalized_exclude)) {
+            my $orig_F = $normalized_input{$F};
+            $rh_ignored->{$orig_F} = "listed in exclusion file $opt_exclude_list_file";
+            print "Ignoring $orig_F because it appears in $opt_exclude_list_file\n" 
+                if $opt_v > 1;
+        }
+    }
+    print "<- process_exclude_list_file\n" if $opt_v > 2;
+} # 1}}}
+sub combine_results {                        # {{{1
+    # returns 1 if the inputs are categorized by language
+    #         0 if no identifiable language was found
+    my ($ra_report_files, # in
+        $report_type    , # in  "by language" or "by report file"
+        $rhh_count      , # out count{TYPE}{nFiles|code|blank|comment|scaled}
+        $rhaa_Filters_by_Language , # in
+       ) = @_;
+
+    print "-> combine_results(report_type=$report_type)\n" if $opt_v > 2;
+    my $found_language = 0;
+
+    foreach my $file (@{$ra_report_files}) {
+        my $IN = new IO::File $file, "r";
+        if (!defined $IN) {
+            warn "Unable to read $file; ignoring.\n";
+            next;
+        }
+        while (<$IN>) {
+            next if /^(http|Language|SUM|-----)/;
+            if (!$opt_by_file  and
+                m{^(.*?)\s+         # language
+                   (\d+)\s+         # files
+                   (\d+)\s+         # blank
+                   (\d+)\s+         # comments
+                   (\d+)\s+         # code
+                   (                #    next four entries missing with -nno3
+                   x\s+             # x
+                   \d+\.\d+\s+      # scale
+                   =\s+             # =
+                   (\d+\.\d+)\s*    # scaled code
+                   )?
+                   $}x) {
+                if ($report_type eq "by language") {
+                    if ($PERL_516) {
+                        next unless         @{$rhaa_Filters_by_Language->{$1}};
+                    } else {
+                        next unless defined @{$rhaa_Filters_by_Language->{$1}};
+                    }
+                    # above test necessary to avoid trying to sum reports
+                    # of reports (which have no language breakdown).
+                    $found_language = 1;
+                    $rhh_count->{$1   }{'nFiles' } += $2;
+                    $rhh_count->{$1   }{'blank'  } += $3;
+                    $rhh_count->{$1   }{'comment'} += $4;
+                    $rhh_count->{$1   }{'code'   } += $5;
+                    $rhh_count->{$1   }{'scaled' } += $7 if $opt_3;
+                } else {
+                    $rhh_count->{$file}{'nFiles' } += $2;
+                    $rhh_count->{$file}{'blank'  } += $3;
+                    $rhh_count->{$file}{'comment'} += $4;
+                    $rhh_count->{$file}{'code'   } += $5;
+                    $rhh_count->{$file}{'scaled' } += $7 if $opt_3;
+                }
+            } elsif ($opt_by_file  and
+                m{^(.*?)\s+         # language
+                   (\d+)\s+         # blank
+                   (\d+)\s+         # comments
+                   (\d+)\s+         # code
+                   (                #    next four entries missing with -nno3
+                   x\s+             # x
+                   \d+\.\d+\s+      # scale
+                   =\s+             # =
+                   (\d+\.\d+)\s*    # scaled code
+                   )?
+                   $}x) {
+                if ($report_type eq "by language") {
+                    next unless %{$rhaa_Filters_by_Language->{$1}};
+                    # above test necessary to avoid trying to sum reports
+                    # of reports (which have no language breakdown).
+                    $found_language = 1;
+                    $rhh_count->{$1   }{'nFiles' } +=  1;
+                    $rhh_count->{$1   }{'blank'  } += $2;
+                    $rhh_count->{$1   }{'comment'} += $3;
+                    $rhh_count->{$1   }{'code'   } += $4;
+                    $rhh_count->{$1   }{'scaled' } += $6 if $opt_3;
+                } else {
+                    $rhh_count->{$file}{'nFiles' } +=  1;
+                    $rhh_count->{$file}{'blank'  } += $2;
+                    $rhh_count->{$file}{'comment'} += $3;
+                    $rhh_count->{$file}{'code'   } += $4;
+                    $rhh_count->{$file}{'scaled' } += $6 if $opt_3;
+                }
+            }
+        }
+    }
+    print "<- combine_results\n" if $opt_v > 2;
+    return $found_language;
+} # 1}}}
+sub diff_report     {                        # {{{1
+    # returns an array of lines containing the results
+    print "-> diff_report\n" if $opt_v > 2;
+
+    if ($opt_xml or $opt_yaml) {
+        print "<- diff_report\n" if $opt_v > 2;
+        return diff_xml_yaml_report(@_) 
+    } elsif ($opt_csv) {
+        print "<- diff_report\n" if $opt_v > 2;
+        return diff_csv_report(@_) 
+    }
+
+    my ($version    , # in
+        $elapsed_sec, # in
+        $report_type, # in  "by language" | "by report file" | "by file"
+        $rhhh_count , # in  count{TYPE}{nFiles|code|blank|comment}{a|m|r|s}
+        $rh_scale   , # in
+       ) = @_;
+
+#use Data::Dumper;
+#print "diff_report: ", Dumper($rhhh_count), "\n";
+    my @results       = ();
+
+    my $languages     = ();
+    my %sum           = (); # sum{nFiles|blank|comment|code}{same|modified|added|removed}
+    my $max_len       = 0;
+    foreach my $language (keys %{$rhhh_count}) {
+        foreach my $V (qw(nFiles blank comment code)) {
+            foreach my $S (qw(added same modified removed)) {
+                $rhhh_count->{$language}{$V}{$S} = 0 unless
+                    defined $rhhh_count->{$language}{$V}{$S};
+                $sum{$V}{$S}  += $rhhh_count->{$language}{$V}{$S};
+            }
+        }
+        $max_len      = length($language) if length($language) > $max_len;
+    }
+    my $column_1_offset = 0;
+       $column_1_offset = $max_len - 17 if $max_len > 17;
+    $elapsed_sec = 0.5 unless $elapsed_sec;
+
+    my $spacing_0 = 23;
+    my $spacing_1 = 13;
+    my $spacing_2 =  9;
+    my $spacing_3 = 17;
+    if (!$opt_3) {
+        $spacing_1 = 19;
+        $spacing_2 = 14;
+        $spacing_3 = 28;
+    }
+    $spacing_0 += $column_1_offset;
+    $spacing_1 += $column_1_offset;
+    $spacing_3 += $column_1_offset;
+    my %Format = (
+        '1' => { 'xml' => 'name="%s" ',
+                 'txt' => "\%-${spacing_0}s ",
+               },
+        '2' => { 'xml' => 'name="%s" ',
+                 'txt' => "\%-${spacing_3}s ",
+               },
+        '3' => { 'xml' => 'files_count="%d" ',
+                 'txt' => '%5d ',
+               },
+        '4' => { 'xml' => 'blank="%d" comment="%d" code="%d" ',
+                 'txt' => "\%${spacing_2}d \%${spacing_2}d \%${spacing_2}d",
+               },
+        '5' => { 'xml' => 'factor="%.2f" scaled="%.2f" ',
+                 'txt' => ' x %6.2f = %14.2f',
+               },
+    );
+    my $Style = "txt";
+       $Style = "xml" if $opt_xml ;
+       $Style = "xml" if $opt_yaml;  # not a typo; just set to anything but txt
+       $Style = "xml" if $opt_csv ;  # not a typo; just set to anything but txt
+
+    my $hyphen_line = sprintf "%s", '-' x (79 + $column_1_offset);
+       $hyphen_line = sprintf "%s", '-' x (68 + $column_1_offset) 
+            if (!$opt_3) and (68 + $column_1_offset) > 79;
+    my $data_line  = "";
+    my $first_column;
+    my $BY_LANGUAGE = 0;
+    my $BY_FILE     = 0;
+    if      ($report_type eq "by language") {
+        $first_column = "Language";
+        $BY_LANGUAGE  = 1;
+    } elsif ($report_type eq "by file")     {
+        $first_column = "File";
+        $BY_FILE      = 1;
+    } else {
+        $first_column = "Report File";
+    }
+
+    my $header_line  = sprintf "%s v %s", $URL, $version;
+    my $sum_files    = 1;
+    my $sum_lines    = 1;
+       $header_line .= sprintf("  T=%.2f s (%.1f files/s, %.1f lines/s)",
+                        $elapsed_sec           ,
+                        $sum_files/$elapsed_sec,
+                        $sum_lines/$elapsed_sec) unless $opt_sum_reports;
+    if ($Style eq "txt") {
+        push @results, output_header($header_line, $hyphen_line, $BY_FILE);
+    } elsif ($Style eq "csv") {
+        die "csv";
+    }
+
+    # column headers
+    if (!$opt_3 and $BY_FILE) {
+        my $spacing_n = $spacing_1 - 11;
+        $data_line  = sprintf "%-${spacing_n}s" , $first_column;
+    } else {
+        $data_line  = sprintf "%-${spacing_1}s ", $first_column;
+    }
+    if ($BY_FILE) {
+        $data_line .= sprintf "%${spacing_2}s"   , ""     ;
+    } else {
+        $data_line .= sprintf "%${spacing_2}s "  , "files";
+    }
+    $data_line .= sprintf "%${spacing_2}s %${spacing_2}s %${spacing_2}s",
+        "blank"         ,
+        "comment"       ,
+        "code";
+
+    if ($Style eq "txt") {
+        push @results, $data_line;
+        push @results, $hyphen_line;
+    }
+
+####foreach my $lang_or_file (keys %{$rhhh_count}) {
+####    $rhhh_count->{$lang_or_file}{'code'} = 0 unless 
+####        defined $rhhh_count->{$lang_or_file}{'code'};
+####}
+    foreach my $lang_or_file (sort {
+                                 $rhhh_count->{$b}{'code'} <=>
+                                 $rhhh_count->{$a}{'code'}
+                               }
+                          keys %{$rhhh_count}) {
+
+        if ($BY_FILE) {
+            push @results, rm_leading_tempdir($lang_or_file, \%TEMP_DIR);
+        } else {
+            push @results, $lang_or_file;
+        }
+        foreach my $S (qw(same modified added removed)) {
+            my $indent = $spacing_1 - 2;
+            my $line .= sprintf " %-${indent}s", $S;
+            if ($BY_FILE) {
+                $line .= sprintf "   ";
+            } else {
+                $line .= sprintf "  %${spacing_2}s", $rhhh_count->{$lang_or_file}{'nFiles'}{$S};
+            }
+            $line .= sprintf " %${spacing_2}s %${spacing_2}s %${spacing_2}s",
+                $rhhh_count->{$lang_or_file}{'blank'}{$S}   ,
+                $rhhh_count->{$lang_or_file}{'comment'}{$S} ,
+                $rhhh_count->{$lang_or_file}{'code'}{$S}    ;
+            push @results, $line;
+        }
+    }
+    push @results, "-" x 79;
+    push @results, "SUM:";
+    foreach my $S (qw(same modified added removed)) {
+        my $indent = $spacing_1 - 2;
+        my $line .= sprintf " %-${indent}s", $S;
+            if ($BY_FILE) {
+                $line .= sprintf "   ";
+            } else {
+                $line .= sprintf "  %${spacing_2}s", $sum{'nFiles'}{$S};
+            }
+        $line .= sprintf " %${spacing_2}s %${spacing_2}s %${spacing_2}s",
+            $sum{'blank'}{$S}   ,
+            $sum{'comment'}{$S} ,
+            $sum{'code'}{$S}    ;
+        push @results, $line;
+    }
+    push @results, "-" x 79;
+    write_xsl_file() if $opt_xsl and $opt_xsl eq $CLOC_XSL;
+    print "<- diff_report\n" if $opt_v > 2;
+
+    return @results;
+} # 1}}}
+sub xml_or_yaml_header {                     # {{{1
+    my ($URL, $version, $elapsed_sec, $sum_files, $sum_lines, $by_file) = @_;
+    print "-> xml_or_yaml_header\n" if $opt_v > 2;
+    my $header      = "";
+    my $file_rate   = $sum_files/$elapsed_sec;
+    my $line_rate   = $sum_lines/$elapsed_sec;
+    my $type        = ""; 
+       $type        = "diff_" if $opt_diff;
+    my $report_file = "";
+    if ($opt_report_file) {
+        if ($opt_sum_reports) {
+            if ($by_file) {
+                $report_file = "  <report_file>$opt_report_file.file</report_file>"
+            } else {
+                $report_file = "  <report_file>$opt_report_file.lang</report_file>"
+            }
+        } else {
+            $report_file = "  <report_file>$opt_report_file</report_file>"
+        }
+    }
+    if ($opt_xml) {
+        $header = "<?xml version=\"1.0\"?>";
+        $header .= "\n<?xml-stylesheet type=\"text/xsl\" href=\"" . $opt_xsl . "\"?>" if $opt_xsl;
+        $header .= "<${type}results>
+<header>
+  <cloc_url>$URL</cloc_url>
+  <cloc_version>$version</cloc_version>
+  <elapsed_seconds>$elapsed_sec</elapsed_seconds>
+  <n_files>$sum_files</n_files>
+  <n_lines>$sum_lines</n_lines>
+  <files_per_second>$file_rate</files_per_second>
+  <lines_per_second>$line_rate</lines_per_second>";
+        $header .= "\n$report_file"
+            if $opt_report_file;
+        $header .= "\n</header>";
+    } elsif ($opt_yaml) {
+        $header = "---\n# $URL
+header :
+  cloc_url           : http://cloc.sourceforge.net
+  cloc_version       : $version
+  elapsed_seconds    : $elapsed_sec
+  n_files            : $sum_files
+  n_lines            : $sum_lines
+  files_per_second   : $file_rate
+  lines_per_second   : $line_rate";
+        if ($opt_report_file) {
+            if ($opt_sum_reports) {
+                if ($by_file) {
+                    $header .= "\n  report_file        : $opt_report_file.file"
+                } else {
+                    $header .= "\n  report_file        : $opt_report_file.lang"
+                }
+            } else {
+                $header .= "\n  report_file        : $opt_report_file";
+            }
+        }
+    }
+    print "<- xml_or_yaml_header\n" if $opt_v > 2;
+    return $header;
+} # 1}}}
+sub diff_xml_yaml_report {                   # {{{1
+    # returns an array of lines containing the results
+    my ($version    , # in
+        $elapsed_sec, # in
+        $report_type, # in  "by language" | "by report file" | "by file"
+        $rhhh_count , # in  count{TYPE}{nFiles|code|blank|comment}{a|m|r|s}
+        $rh_scale   , # in
+       ) = @_;
+    print "-> diff_xml_yaml_report\n" if $opt_v > 2;
+
+#print "diff_report: ", Dumper($rhhh_count), "\n";
+    my @results       = ();
+    
+    my $languages     = ();
+    my %sum           = (); # sum{nFiles|blank|comment|code}{same|modified|added|removed}
+
+    my $sum_files = 0;
+    my $sum_lines = 0;
+    foreach my $language (keys %{$rhhh_count}) {
+        foreach my $V (qw(nFiles blank comment code)) {
+            foreach my $S (qw(added same modified removed)) {
+                $rhhh_count->{$language}{$V}{$S} = 0 unless
+                    defined $rhhh_count->{$language}{$V}{$S};
+                $sum{$V}{$S}  += $rhhh_count->{$language}{$V}{$S};
+                if ($V eq "nFiles") {
+                    $sum_files += $rhhh_count->{$language}{$V}{$S};
+                } else {
+                    $sum_lines += $rhhh_count->{$language}{$V}{$S};
+                }
+            }
+        }
+    }
+    $elapsed_sec = 0.5 unless $elapsed_sec;
+
+    my $data_line   = "";
+    my $BY_LANGUAGE = 0;
+    my $BY_FILE     = 0;
+    if      ($report_type eq "by language") {
+        $BY_LANGUAGE  = 1;
+    } elsif ($report_type eq "by file")     {
+        $BY_FILE      = 1;
+    }
+
+    if (!$ALREADY_SHOWED_HEADER) {
+        push @results,
+              xml_or_yaml_header($URL, $version, $elapsed_sec, 
+                                 $sum_files, $sum_lines, $BY_FILE);
+        $ALREADY_SHOWED_HEADER = 1;
+    }
+
+    foreach my $S (qw(same modified added removed)) {
+        if ($opt_xml) {
+            push @results, "  <$S>";
+        } elsif ($opt_yaml) {
+            push @results, "$S :";
+        }
+########foreach my $lang_or_file (keys %{$rhhh_count}) {
+########    $rhhh_count->{$lang_or_file}{'code'} = 0 unless 
+########        defined $rhhh_count->{$lang_or_file}{'code'};
+########}
+        foreach my $lang_or_file (sort {
+                                     $rhhh_count->{$b}{'code'} <=>
+                                     $rhhh_count->{$a}{'code'}
+                                   }
+                              keys %{$rhhh_count}) {
+            my $L = "";
+            if ($opt_xml) {
+                if ($BY_FILE) {
+                    $L .= sprintf "    <file name=\"%s\" files_count=\"1\" ", 
+                            rm_leading_tempdir($lang_or_file, \%TEMP_DIR);
+                } else {
+                    $L .= sprintf "    <language name=\"%s\" files_count=\"%d\" ",
+                            $lang_or_file ,
+                            $rhhh_count->{$lang_or_file}{'nFiles'}{$S};
+                }
+                foreach my $T (qw(blank comment code)) {
+                    $L .= sprintf "%s=\"%d\" ", 
+                            $T, $rhhh_count->{$lang_or_file}{$T}{$S};
+                }
+                push @results, $L . "/>";
+            } elsif ($opt_yaml) {
+                if ($BY_FILE) {
+                    push @results, sprintf "  - file : %s", 
+                                   rm_leading_tempdir($lang_or_file, \%TEMP_DIR);
+                    push @results, sprintf "    files_count : 1", 
+                } else {
+                    push @results, sprintf "  - language : %s", $lang_or_file;
+                    push @results, sprintf "    files_count : %d", 
+                            $rhhh_count->{$lang_or_file}{'nFiles'}{$S};
+                }
+                foreach my $T (qw(blank comment code)) {
+                    push @results, sprintf "    %s : %d", 
+                            $T, $rhhh_count->{$lang_or_file}{$T}{$S};
+                }
+            }
+        }
+
+        if ($opt_xml) {
+            my $L = sprintf "    <total sum_files=\"%d\" ", $sum{'nFiles'}{$S};
+            foreach my $V (qw(blank comment code)) {
+                $L .= sprintf "%s=\"%d\" ", $V, $sum{$V}{$S};
+            }
+            push @results, $L . "/>";
+            push @results, "  </$S>";
+        } elsif ($opt_yaml) {
+            push @results, sprintf "%s_total :\n    sum_files : %d", 
+                                $S, $sum{'nFiles'}{$S};
+            foreach my $V (qw(blank comment code)) {
+                push @results, sprintf "    %s : %d", $V, $sum{$V}{$S};
+            }
+        }
+    }
+
+    if ($opt_xml) {
+        push @results, "</diff_results>";
+    }
+    write_xsl_file() if $opt_xsl and $opt_xsl eq $CLOC_XSL;
+    print "<- diff_xml_yaml_report\n" if $opt_v > 2;
+    return @results;
+} # 1}}}
+sub diff_csv_report {                        # {{{1
+    # returns an array of lines containing the results
+    my ($version    , # in
+        $elapsed_sec, # in
+        $report_type, # in  "by language" | "by report file" | "by file"
+        $rhhh_count , # in  count{TYPE}{nFiles|code|blank|comment}{a|m|r|s}
+        $rh_scale   , # in  unused
+       ) = @_;
+    print "-> diff_csv_report\n" if $opt_v > 2;
+
+#use Data::Dumper;
+#print "diff_csv_report: ", Dumper($rhhh_count), "\n";
+#die;
+    my @results       = ();
+    my $languages     = ();
+
+    my $data_line   = "";
+    my $BY_LANGUAGE = 0;
+    my $BY_FILE     = 0;
+    if      ($report_type eq "by language") {
+        $BY_LANGUAGE  = 1;
+    } elsif ($report_type eq "by file")     {
+        $BY_FILE      = 1;
+    }
+    my $DELIM = ",";
+       $DELIM = $opt_csv_delimiter if defined $opt_csv_delimiter;
+
+    $elapsed_sec = 0.5 unless $elapsed_sec;
+
+    my $line = "Language${DELIM} ";
+       $line = "File${DELIM} " if $BY_FILE;
+    foreach my $item (qw(files blank comment code)) {
+        next if $BY_FILE and $item eq 'files';
+        foreach my $symbol ( '==', '!=', '+', '-', ) {
+            $line .= "$symbol $item${DELIM} ";
+        }
+    }
+    $line .= "\"$URL v $version T=$elapsed_sec s\"";
+    push @results, $line;
+
+    foreach my $lang_or_file (keys %{$rhhh_count}) {
+        $rhhh_count->{$lang_or_file}{'code'}{'added'} = 0 unless 
+            defined $rhhh_count->{$lang_or_file}{'code'};
+    }
+    foreach my $lang_or_file (sort {
+                                 $rhhh_count->{$b}{'code'} <=>
+                                 $rhhh_count->{$a}{'code'}
+                               }
+                          keys %{$rhhh_count}) {
+        if ($BY_FILE) {
+            $line = rm_leading_tempdir($lang_or_file, \%TEMP_DIR) . "$DELIM ";
+        } else {
+            $line = $lang_or_file . "${DELIM} ";
+        }
+        foreach my $item (qw(nFiles blank comment code)) {
+            next if $BY_FILE and $item eq 'nFiles';
+            foreach my $symbol (qw(same modified added removed)) {
+                if (defined $rhhh_count->{$lang_or_file}{$item}{$symbol}) {
+                    $line .= "$rhhh_count->{$lang_or_file}{$item}{$symbol}${DELIM} ";
+                } else {
+                    $line .= "0${DELIM} ";
+                }
+            }
+        }
+        push @results, $line;
+    }
+
+    print "<- diff_csv_report\n" if $opt_v > 2;
+    return @results;
+} # 1}}}
+sub rm_leading_tempdir {                     # {{{1
+    my ($in_file, $rh_temp_dirs, ) = @_;
+    my $clean_filename = $in_file;
+    foreach my $temp_d (keys %{$rh_temp_dirs}) {
+        if ($ON_WINDOWS) {
+        # \ -> / necessary to allow the next if test's
+        # m{} to work in the presence of spaces in file names
+            $temp_d         =~ s{\\}{/}g;
+            $clean_filename =~ s{\\}{/}g;
+        }
+        if ($clean_filename =~ m{^$temp_d/}) {
+            $clean_filename =~ s{^$temp_d/}{};
+            last;
+        }
+    }
+    $clean_filename =~ s{/}{\\}g if $ON_WINDOWS; # then go back from / to \
+    return $clean_filename;
+} # 1}}}
+sub generate_sql    {                        # {{{1
+    my ($elapsed_sec, # in
+        $rhh_count  , # in  count{TYPE}{lang|code|blank|comment|scaled}
+        $rh_scale   , # in
+       ) = @_;
+    print "-> generate_sql\n" if $opt_v > 2;
+
+    $opt_sql_project = cwd() unless defined $opt_sql_project;
+    $opt_sql_project =~ s{/}{\\}g if $ON_WINDOWS;
+
+    my $schema = "
+create table metadata (          -- $URL v $VERSION
+                timestamp text,    
+                Project   text,    
+                elapsed_s real);   
+create table t        (
+                Project   text   ,  
+                Language  text   ,  
+                File      text   ,  
+                nBlank    integer,  
+                nComment  integer,  
+                nCode     integer,  
+                nScaled   real   ); 
+";
+    $opt_sql = "-" if $opt_sql eq "1";
+
+    my $open_mode = ">";
+       $open_mode = ">>" if $opt_sql_append;
+
+    my $fh = new IO::File; # $opt_sql, "w";
+    if (!$fh->open("${open_mode}${opt_sql}")) {
+        die "Unable to write to $opt_sql  $!\n";
+    }
+    print $fh $schema unless defined $opt_sql_append;
+
+    print $fh "begin transaction;\n";
+    printf $fh "insert into metadata values('%s', '%s', %f);\n",
+                strftime("%Y-%m-%d %H:%M:%S", localtime(time())),
+                $opt_sql_project, $elapsed_sec;
+
+    my $nIns = 0;
+    foreach my $file (keys %{$rhh_count}) {
+        my $language = $rhh_count->{$file}{'lang'};
+        my $clean_filename = $file;
+        # If necessary (that is, if the input contained an
+        # archive file [.tar.gz, etc]), strip the temporary
+        # directory name which was used to expand the archive
+        # from the file name.
+
+        $clean_filename = rm_leading_tempdir($clean_filename, \%TEMP_DIR);
+        printf $fh "insert into t values('%s', '%s', '%s', %d, %d, %d, %f);\n",
+                    $opt_sql_project           ,
+                    $language                  ,
+                    $clean_filename            ,
+                    $rhh_count->{$file}{'blank'},
+                    $rhh_count->{$file}{'comment'},
+                    $rhh_count->{$file}{'code'}   ,
+                    $rhh_count->{$file}{'code'}*$rh_scale->{$language};
+        ++$nIns;
+        if (!($nIns % 10_000)) {
+            print $fh "commit;\n";
+            print $fh "begin transaction;\n";
+        }
+    }
+    print $fh "commit;\n";
+
+    $fh->close unless $opt_sql eq "-"; # don't try to close STDOUT
+    print "<- generate_sql\n" if $opt_v > 2;
+
+    # sample query:
+    #
+    #   select project, language, 
+    #          sum(nCode)     as Code, 
+    #          sum(nComment)  as Comments, 
+    #          sum(nBlank)    as Blank,  
+    #          sum(nCode)+sum(nComment)+sum(nBlank) as All_Lines,
+    #          100.0*sum(nComment)/(sum(nCode)+sum(nComment)) as Comment_Pct
+    #          from t group by Project, Language order by Project, Code desc;
+    #
+} # 1}}}
+sub output_header   {                        # {{{1
+    my ($header_line, 
+        $hyphen_line,
+        $BY_FILE    ,)    = @_;
+    print "-> output_header\n" if $opt_v > 2;
+    my @R = ();
+    if      ($opt_xml) {
+        if (!$ALREADY_SHOWED_XML_SECTION) {
+            push @R, "<?xml version=\"1.0\"?>";
+            push @R, '<?xml-stylesheet type="text/xsl" href="' .
+                            $opt_xsl . '"?>' if $opt_xsl;
+            push @R, "<results>";
+            push @R, "<header>$header_line</header>";
+            $ALREADY_SHOWED_XML_SECTION = 1;
+        }
+        if ($BY_FILE) {
+            push @R, "<files>";
+        } else {
+            push @R, "<languages>";
+        }
+    } elsif ($opt_yaml) {
+        push @R, "---\n# $header_line";
+    } elsif ($opt_csv) {
+        # append the header to the end of the column headers
+        # to keep the output a bit cleaner from a spreadsheet
+        # perspective
+    } else {
+        if ($ALREADY_SHOWED_HEADER) {
+            push @R, "";
+        } else {
+            push @R, $header_line;
+            $ALREADY_SHOWED_HEADER = 1;
+        }
+        push @R, $hyphen_line;
+    }
+    print "<- output_header\n" if $opt_v > 2;
+    return @R;
+} # 1}}}
+sub generate_report {                        # {{{1
+    # returns an array of lines containing the results
+    my ($version    , # in
+        $elapsed_sec, # in
+        $report_type, # in  "by language" | "by report file" | "by file"
+        $rhh_count  , # in  count{TYPE}{nFiles|code|blank|comment|scaled}
+        $rh_scale   , # in
+       ) = @_;
+
+    print "-> generate_report\n" if $opt_v > 2;
+    my $DELIM = ",";
+       $DELIM = $opt_csv_delimiter if defined $opt_csv_delimiter;
+
+    my @results       = ();
+    
+    my $languages     = ();
+
+    my $sum_files     = 0;
+    my $sum_code      = 0;
+    my $sum_blank     = 0;
+    my $sum_comment   = 0;
+    my $max_len       = 0;
+    foreach my $language (keys %{$rhh_count}) {
+        $sum_files   += $rhh_count->{$language}{'nFiles'} ;
+        $sum_blank   += $rhh_count->{$language}{'blank'}  ;
+        $sum_comment += $rhh_count->{$language}{'comment'};
+        $sum_code    += $rhh_count->{$language}{'code'}   ;
+        $max_len      = length($language) if length($language) > $max_len;
+    }
+    my $column_1_offset = 0;
+       $column_1_offset = $max_len - 17 if $max_len > 17;
+    my $sum_lines = $sum_blank + $sum_comment + $sum_code;
+    $elapsed_sec = 0.5 unless $elapsed_sec;
+
+    my $spacing_0 = 23;
+    my $spacing_1 = 13;
+    my $spacing_2 =  9;
+    my $spacing_3 = 17;
+    if (!$opt_3) {
+        $spacing_1 = 19;
+        $spacing_2 = 14;
+        $spacing_3 = 28;
+    }
+    $spacing_0 += $column_1_offset;
+    $spacing_1 += $column_1_offset;
+    $spacing_3 += $column_1_offset;
+    my %Format = (
+        '1' => { 'xml' => 'name="%s" ',
+                 'txt' => "\%-${spacing_0}s ",
+               },
+        '2' => { 'xml' => 'name="%s" ',
+                 'txt' => "\%-${spacing_3}s ",
+               },
+        '3' => { 'xml' => 'files_count="%d" ',
+                 'txt' => '%5d ',
+               },
+        '4' => { 'xml' => 'blank="%d" comment="%d" code="%d" ',
+                 'txt' => "\%${spacing_2}d \%${spacing_2}d \%${spacing_2}d",
+               },
+        '5' => { 'xml' => 'factor="%.2f" scaled="%.2f" ',
+                 'txt' => ' x %6.2f = %14.2f',
+               },
+    );
+    my $Style = "txt";
+       $Style = "xml" if $opt_xml ;
+       $Style = "xml" if $opt_yaml;  # not a typo; just set to anything but txt
+       $Style = "xml" if $opt_csv ;  # not a typo; just set to anything but txt
+
+    my $hyphen_line = sprintf "%s", '-' x (79 + $column_1_offset);
+       $hyphen_line = sprintf "%s", '-' x (68 + $column_1_offset) 
+            if (!$opt_3) and (68 + $column_1_offset) > 79;
+    my $data_line  = "";
+    my $first_column;
+    my $BY_LANGUAGE = 0;
+    my $BY_FILE     = 0;
+    if      ($report_type eq "by language") {
+        $first_column = "Language";
+        $BY_LANGUAGE  = 1;
+    } elsif ($report_type eq "by file")     {
+        $first_column = "File";
+        $BY_FILE      = 1;
+    } elsif ($report_type eq "by report file")     {
+        $first_column = "File";
+        $BY_FILE      = 1;
+    } else {
+        $first_column = "Report File";
+    }
+
+    my $header_line  = sprintf "%s v %s", $URL, $version;
+       $header_line .= sprintf("  T=%.2f s (%.1f files/s, %.1f lines/s)",
+                        $elapsed_sec           ,
+                        $sum_files/$elapsed_sec,
+                        $sum_lines/$elapsed_sec) unless $opt_sum_reports;
+    if ($opt_xml or $opt_yaml) {
+        if (!$ALREADY_SHOWED_HEADER) {
+            push @results, xml_or_yaml_header($URL, $version, $elapsed_sec, 
+                                              $sum_files, $sum_lines, $BY_FILE);
+            $ALREADY_SHOWED_HEADER = 1 unless $opt_sum_reports;
+            # --sum-reports yields two xml or yaml files, one by
+            # language and one by report file, each of which needs a header
+        }
+        if ($opt_xml) {
+            if ($BY_FILE) {
+                push @results, "<files>";
+            } else {
+                push @results, "<languages>";
+            }
+        }
+    } else {
+        push @results, output_header($header_line, $hyphen_line, $BY_FILE);
+    }
+
+    if ($Style eq "txt") {
+        # column headers
+        if (!$opt_3 and $BY_FILE) {
+            my $spacing_n = $spacing_1 - 11;
+            $data_line  = sprintf "%-${spacing_n}s ", $first_column;
+        } else {
+            $data_line  = sprintf "%-${spacing_1}s ", $first_column;
+        }
+        if ($BY_FILE) {
+            $data_line .= sprintf "%${spacing_2}s "  , " "    ;
+        } else {
+            $data_line .= sprintf "%${spacing_2}s "  , "files";
+        }
+        $data_line .= sprintf "%${spacing_2}s %${spacing_2}s %${spacing_2}s",
+            "blank"         ,
+            "comment"       ,
+            "code";
+        $data_line .= sprintf " %8s   %14s",
+            "scale"         ,
+            "3rd gen. equiv"
+              if $opt_3;
+        push @results, $data_line;
+        push @results, $hyphen_line;
+    }
+    if ($opt_csv) {
+        my $header2;
+        if ($BY_FILE) {
+            $header2 = "language${DELIM}filename";
+        } else {
+            $header2 = "files${DELIM}language";
+        }
+        $header2 .= "${DELIM}blank${DELIM}comment${DELIM}code";
+        $header2 .= "${DELIM}scale${DELIM}3rd gen. equiv" if $opt_3;
+        $header2 .= ${DELIM} . '"' . $header_line . '"';
+        push @results, $header2;
+    }
+
+    my $sum_scaled = 0;
+####foreach my $lang_or_file (keys %{$rhh_count}) {
+####    $rhh_count->{$lang_or_file}{'code'} = 0 unless 
+####        defined $rhh_count->{$lang_or_file}{'code'};
+####}
+    foreach my $lang_or_file (sort {
+                                 $rhh_count->{$b}{'code'} <=>
+                                 $rhh_count->{$a}{'code'}
+                               }
+                          keys %{$rhh_count}) {
+        next if $lang_or_file eq "by report file";
+        my ($factor, $scaled);
+        if ($BY_LANGUAGE or $BY_FILE) {
+            $factor = 1;
+            if ($BY_LANGUAGE) {
+                if (defined $rh_scale->{$lang_or_file}) {
+                    $factor = $rh_scale->{$lang_or_file};
+                } else {
+                    warn "No scale factor for $lang_or_file; using 1.00";
+                }
+            } else { # by individual code file
+                if ($report_type ne "by report file") {
+                    next unless defined $rhh_count->{$lang_or_file}{'lang'};
+                    next unless defined $rh_scale->{$rhh_count->{$lang_or_file}{'lang'}};
+                    $factor = $rh_scale->{$rhh_count->{$lang_or_file}{'lang'}};
+                }
+            }
+            $scaled = $factor*$rhh_count->{$lang_or_file}{'code'};
+        } else {
+            if (!defined $rhh_count->{$lang_or_file}{'scaled'}) {
+                $opt_3 = 0;
+                # If we're summing together files previously generated
+                # with --no3 then rhh_count->{$lang_or_file}{'scaled'}
+                # this variable will be undefined.  That should only
+                # happen when summing together by file however.
+            } elsif ($BY_LANGUAGE) {
+                warn "Missing scaled language info for $lang_or_file\n";
+            }
+            if ($opt_3) {
+                $scaled =         $rhh_count->{$lang_or_file}{'scaled'};
+                $factor = $scaled/$rhh_count->{$lang_or_file}{'code'};
+            }
+        }
+
+        if ($BY_FILE) {
+            my $clean_filename = rm_leading_tempdir($lang_or_file, \%TEMP_DIR);
+            $data_line  = sprintf $Format{'1'}{$Style}, $clean_filename;
+        } else {
+            $data_line  = sprintf $Format{'2'}{$Style}, $lang_or_file;
+        }
+        $data_line .= sprintf $Format{3}{$Style}  , 
+                        $rhh_count->{$lang_or_file}{'nFiles'} unless $BY_FILE;
+        $data_line .= sprintf $Format{4}{$Style}  , 
+            $rhh_count->{$lang_or_file}{'blank'}  ,
+            $rhh_count->{$lang_or_file}{'comment'},
+            $rhh_count->{$lang_or_file}{'code'}   ;
+        $data_line .= sprintf $Format{5}{$Style}  ,
+            $factor                               ,
+            $scaled if $opt_3;
+        $sum_scaled  += $scaled if $opt_3;
+
+        if ($opt_xml) {
+            if (defined $rhh_count->{$lang_or_file}{'lang'}) {
+                my $lang = $rhh_count->{$lang_or_file}{'lang'};
+                if (!defined $languages->{$lang}) {
+                    $languages->{$lang} = $lang;
+                }
+                $data_line.=' language="' . $lang . '" ';
+            }
+            if ($BY_FILE) {
+                push @results, "  <file " . $data_line . "/>";
+            } else {
+                push @results, "  <language " . $data_line . "/>";
+            }
+        } elsif ($opt_yaml) {
+            push @results,$lang_or_file . ":";
+            push @results,"  nFiles: "  .$rhh_count->{$lang_or_file}{'nFiles'} 
+                unless $BY_FILE;
+            push @results,"  blank: "   .$rhh_count->{$lang_or_file}{'blank'}  ;
+            push @results,"  comment: " .$rhh_count->{$lang_or_file}{'comment'};
+            push @results,"  code: "    .$rhh_count->{$lang_or_file}{'code'}   ;
+            push @results,"  language: ".$rhh_count->{$lang_or_file}{'lang'} 
+                if $BY_FILE;
+            if ($opt_3) {
+                push @results, "  scaled: " . $scaled;
+                push @results, "  factor: " . $factor;
+            }
+        } elsif ($opt_csv) {
+            my $extra_3 = "";
+               $extra_3 = "${DELIM}$factor${DELIM}$scaled" if $opt_3;
+            my $first_column = undef;
+            my $clean_name   = $lang_or_file;
+            if ($BY_FILE) { 
+                $first_column = $rhh_count->{$lang_or_file}{'lang'};
+                $clean_name   = rm_leading_tempdir($lang_or_file, \%TEMP_DIR);
+            } else {
+                $first_column = $rhh_count->{$lang_or_file}{'nFiles'};
+            } 
+            my $str = $first_column                         . ${DELIM} .
+                      $clean_name                           . ${DELIM} .
+                      $rhh_count->{$lang_or_file}{'blank'}  . ${DELIM} .
+                      $rhh_count->{$lang_or_file}{'comment'}. ${DELIM} .
+                      $rhh_count->{$lang_or_file}{'code'}   .
+                      $extra_3;
+            push @results, $str;
+        } else {
+            push @results, $data_line;
+        }
+    }
+
+    my $avg_scale = 1;  # weighted average of scale factors
+       $avg_scale = sprintf("%.2f", $sum_scaled / $sum_code) 
+            if $sum_code and $opt_3;
+
+    if ($opt_xml) {
+        $data_line = "";
+        if (!$BY_FILE) {
+            $data_line .= sprintf "sum_files=\"%d\" ", $sum_files;
+        }
+        $data_line .= sprintf $Format{'4'}{$Style},
+            $sum_blank   ,
+            $sum_comment ,
+            $sum_code    ;
+        $data_line .= sprintf $Format{'5'}{$Style},
+            $avg_scale   ,
+            $sum_scaled  if $opt_3;
+        push @results, "  <total " . $data_line . "/>";
+
+        if ($BY_FILE) {
+            push @results, "</files>";
+        } else {
+            foreach my $language (keys %{$languages}) {
+                push @results, '  <language name="' . $language . '"/>';
+            }
+            push @results, "</languages>";
+        }
+
+        if (!$opt_by_file_by_lang or $ALREADY_SHOWED_XML_SECTION) {
+    	    push @results, "</results>";
+        } else {
+            $ALREADY_SHOWED_XML_SECTION = 1;
+        }
+    } elsif ($opt_yaml) {
+        push @results, "SUM:";
+        push @results, "  blank: "  . $sum_blank  ;
+        push @results, "  code: "   . $sum_code   ;
+        push @results, "  comment: ". $sum_comment;
+        push @results, "  nFiles: " . $sum_files  ;
+        if ($opt_3) {
+            push @results, "  scaled: " . $sum_scaled;
+            push @results, "  factor: " . $avg_scale ;
+        }
+    } elsif ($opt_csv) {
+        # do nothing
+    } else {
+
+        if ($BY_FILE) {
+            $data_line  = sprintf "%-${spacing_0}s ", "SUM:"  ;
+        } else {
+            $data_line  = sprintf "%-${spacing_1}s ", "SUM:"  ;
+            $data_line .= sprintf "%${spacing_2}d ", $sum_files;
+        }
+        $data_line .= sprintf $Format{'4'}{$Style},
+            $sum_blank   ,
+            $sum_comment ,
+            $sum_code    ;
+        $data_line .= sprintf $Format{'5'}{$Style},
+            $avg_scale   ,
+            $sum_scaled if $opt_3;
+        push @results, $hyphen_line if $sum_files > 1 or $opt_sum_one;
+        push @results, $data_line   if $sum_files > 1 or $opt_sum_one;
+        push @results, $hyphen_line;
+    }
+    write_xsl_file() if $opt_xsl and $opt_xsl eq $CLOC_XSL;
+    print "<- generate_report\n" if $opt_v > 2;
+    return @results;
+} # 1}}}
+sub print_errors {                           # {{{1
+    my ($rh_Error_Codes, # in
+        $raa_errors    , # in
+       ) = @_;
+
+    print "-> print_errors\n" if $opt_v > 2;
+    my %error_string = reverse(%{$rh_Error_Codes});
+    my $nErrors      = scalar @{$raa_errors};
+    warn sprintf "\n%d error%s:\n", plural_form(scalar @Errors);
+    for (my $i = 0; $i < $nErrors; $i++) {
+        warn sprintf "%s:  %s\n", 
+                     $error_string{ $raa_errors->[$i][0] },
+                     $raa_errors->[$i][1] ;
+    }
+    print "<- print_errors\n" if $opt_v > 2;
+
+} # 1}}}
+sub write_lang_def {                         # {{{1
+    my ($file                     ,
+        $rh_Language_by_Extension , # in
+        $rh_Language_by_Script    , # in
+        $rh_Language_by_File      , # in
+        $rhaa_Filters_by_Language , # in
+        $rh_Not_Code_Extension    , # in
+        $rh_Not_Code_Filename     , # in
+        $rh_Scale_Factor          , # in
+        $rh_EOL_Continuation_re   , # in
+       ) = @_;
+
+    print "-> write_lang_def($file)\n" if $opt_v > 2;
+    my $OUT = new IO::File $file, "w";
+    die "Unable to write to $file\n" unless defined $OUT;
+
+    foreach my $language (sort keys %{$rhaa_Filters_by_Language}) {
+        next if $language eq "MATLAB/Objective C/MUMPS" or
+                $language eq "PHP/Pascal"               or
+                $language eq "Lisp/OpenCL";
+        printf $OUT "%s\n", $language;
+        foreach my $filter (@{$rhaa_Filters_by_Language->{$language}}) {
+            printf $OUT "    filter %s", $filter->[0];
+            printf $OUT " %s", $filter->[1] if defined $filter->[1];
+            print  $OUT "\n";
+        }
+        foreach my $ext (sort keys %{$rh_Language_by_Extension}) {
+            if ($language eq $rh_Language_by_Extension->{$ext}) {
+                printf $OUT "    extension %s\n", $ext;
+            }
+        }
+        foreach my $filename (sort keys %{$rh_Language_by_File}) {
+            if ($language eq $rh_Language_by_File->{$filename}) {
+                printf $OUT "    filename %s\n", $filename;
+            }
+        }
+        foreach my $script_exe (sort keys %{$rh_Language_by_Script}) {
+            if ($language eq $rh_Language_by_Script->{$script_exe}) {
+                printf $OUT "    script_exe %s\n", $script_exe;
+            }
+        }
+        printf $OUT "    3rd_gen_scale %.2f\n", $rh_Scale_Factor->{$language};
+        if (defined $rh_EOL_Continuation_re->{$language}) {
+            printf $OUT "    end_of_line_continuation %s\n", 
+                $rh_EOL_Continuation_re->{$language};
+        }
+    }
+
+    $OUT->close;
+    print "<- write_lang_def\n" if $opt_v > 2;
+} # 1}}}
+sub read_lang_def {                          # {{{1
+    my ($file                     ,
+        $rh_Language_by_Extension , # out
+        $rh_Language_by_Script    , # out
+        $rh_Language_by_File      , # out
+        $rhaa_Filters_by_Language , # out
+        $rh_Not_Code_Extension    , # out
+        $rh_Not_Code_Filename     , # out
+        $rh_Scale_Factor          , # out
+        $rh_EOL_Continuation_re   , # out
+        $rh_EOL_abc,
+       ) = @_;
+
+
+    print "-> read_lang_def($file)\n" if $opt_v > 2;
+    my $IN = new IO::File $file, "r";
+    die "Unable to read $file.\n" unless defined $IN;
+
+    my $language = "";
+    while (<$IN>) {
+        next if /^\s*#/ or /^\s*$/;
+
+        if (/^(\w+.*?)\s*$/) {
+            $language = $1;
+            next;
+        }
+        die "Missing computer language name, line $. of $file\n"
+            unless $language;
+
+        if      (/^    filter\s+(\w+)\s*$/) {
+            push @{$rhaa_Filters_by_Language->{$language}}, [ $1 ]
+
+        } elsif (/^    filter\s+(\w+)\s+(.*?)\s*$/) {
+            push @{$rhaa_Filters_by_Language->{$language}}, [ $1 , $2 ]
+
+        } elsif (/^    extension\s+(\S+)\s*$/) {
+            if (defined $rh_Language_by_Extension->{$1}) {
+                die "File extension collision:  $1 ",
+                    "maps to languages '$rh_Language_by_Extension->{$1}' ",
+                    "and '$language'\n" ,
+                    "Edit $file and remove $1 from one of these two ",
+                    "language definitions.\n";
+            }
+            $rh_Language_by_Extension->{$1} = $language;
+
+        } elsif (/^    filename\s+(\S+)\s*$/) {
+            $rh_Language_by_File->{$1} = $language;
+
+        } elsif (/^    script_exe\s+(\S+)\s*$/) {
+            $rh_Language_by_Script->{$1} = $language;
+
+        } elsif (/^    3rd_gen_scale\s+(\S+)\s*$/) {
+            $rh_Scale_Factor->{$language} = $1;
+
+        } elsif (/^    end_of_line_continuation\s+(\S+)\s*$/) {
+            $rh_EOL_Continuation_re->{$language} = $1;
+
+        } else {
+            die "Unexpected data line $. of $file:\n$_\n";
+        }
+
+    }
+    $IN->close;
+    print "<- read_lang_def\n" if $opt_v > 2;
+} # 1}}}
+sub merge_lang_def {                         # {{{1
+    my ($file                     ,
+        $rh_Language_by_Extension , # in/out
+        $rh_Language_by_Script    , # in/out
+        $rh_Language_by_File      , # in/out
+        $rhaa_Filters_by_Language , # in/out
+        $rh_Not_Code_Extension    , # in/out
+        $rh_Not_Code_Filename     , # in/out
+        $rh_Scale_Factor          , # in/out
+        $rh_EOL_Continuation_re   , # in/out
+        $rh_EOL_abc,
+       ) = @_;
+
+
+    print "-> merge_lang_def($file)\n" if $opt_v > 2;
+    my $IN = new IO::File $file, "r";
+    die "Unable to read $file.\n" unless defined $IN;
+
+    my $language        = "";  
+    my $already_know_it = undef;
+    while (<$IN>) {
+        next if /^\s*#/ or /^\s*$/;
+
+        if (/^(\w+.*?)\s*$/) {
+            $language = $1;
+            $already_know_it = defined $rh_Scale_Factor->{$language};
+            next;
+        }
+        die "Missing computer language name, line $. of $file\n"
+            unless $language;
+
+        if      (/^    filter\s+(\w+)\s*$/) {
+            next if $already_know_it;
+            push @{$rhaa_Filters_by_Language->{$language}}, [ $1 ]
+
+        } elsif (/^    filter\s+(\w+)\s+(.*?)\s*$/) {
+            next if $already_know_it;
+            push @{$rhaa_Filters_by_Language->{$language}}, [ $1 , $2 ]
+
+        } elsif (/^    extension\s+(\S+)\s*$/) {
+            next if $already_know_it;
+            if (defined $rh_Language_by_Extension->{$1}) {
+                die "File extension collision:  $1 ",
+                    "maps to languages '$rh_Language_by_Extension->{$1}' ",
+                    "and '$language'\n" ,
+                    "Edit $file and remove $1 from one of these two ",
+                    "language definitions.\n";
+            }
+            $rh_Language_by_Extension->{$1} = $language;
+
+        } elsif (/^    filename\s+(\S+)\s*$/) {
+            next if $already_know_it;
+            $rh_Language_by_File->{$1} = $language;
+
+        } elsif (/^    script_exe\s+(\S+)\s*$/) {
+            next if $already_know_it;
+            $rh_Language_by_Script->{$1} = $language;
+
+        } elsif (/^    3rd_gen_scale\s+(\S+)\s*$/) {
+            next if $already_know_it;
+            $rh_Scale_Factor->{$language} = $1;
+
+        } elsif (/^    end_of_line_continuation\s+(\S+)\s*$/) {
+            next if $already_know_it;
+            $rh_EOL_Continuation_re->{$language} = $1;
+
+        } else {
+            die "Unexpected data line $. of $file:\n$_\n";
+        }
+
+    }
+    $IN->close;
+    print "<- merge_lang_def\n" if $opt_v > 2;
+} # 1}}}
+sub print_extension_info {                   # {{{1
+    my ($extension,) = @_;
+    if ($extension) {  # show information on this extension
+        foreach my $ext (sort {lc $a cmp lc $b } keys %Language_by_Extension) {
+            # Language_by_Extension{f}    = 'Fortran 77' 
+            printf "%-12s -> %s\n", $ext, $Language_by_Extension{$ext}
+                if $ext =~ m{$extension}i;
+        }
+    } else {           # show information on all  extensions
+        foreach my $ext (sort {lc $a cmp lc $b } keys %Language_by_Extension) {
+            # Language_by_Extension{f}    = 'Fortran 77' 
+            printf "%-12s -> %s\n", $ext, $Language_by_Extension{$ext};
+        }
+    }
+} # 1}}}
+sub print_language_info {                    # {{{1
+    my ($language,) = @_;
+    my %extensions = (); # the subset matched by the given $language value
+    if ($language) {  # show information on this language
+        foreach my $ext (sort {lc $a cmp lc $b } keys %Language_by_Extension) {
+            # Language_by_Extension{f}    = 'Fortran 77' 
+            push @{$extensions{$Language_by_Extension{$ext}} }, $ext
+                if $Language_by_Extension{$ext} =~ m{$language}i;
+        }
+    } else {          # show information on all  languages
+        foreach my $ext (sort {lc $a cmp lc $b } keys %Language_by_Extension) {
+            # Language_by_Extension{f}    = 'Fortran 77' 
+            push @{$extensions{$Language_by_Extension{$ext}} }, $ext
+        }
+    }
+
+    # add exceptions (one file extension mapping to multiple languages)
+    if (!$language or 
+        $language =~ /^(Objective C|MATLAB|MUMPS)$/i) {
+        push @{$extensions{'Objective C'}}, "m";
+        push @{$extensions{'MATLAB'}}     , "m";
+        push @{$extensions{'MUMPS'}}      , "m";
+        delete $extensions{'MATLAB/Objective C/MUMPS'};
+    } elsif ($language =~ /^(Lisp|OpenCL)$/i) {
+        push @{$extensions{'Lisp'}}  , "cl";
+        push @{$extensions{'OpenCL'}}, "cl";
+        delete $extensions{'Lisp/OpenCL'};
+    } elsif ($language =~ /^(Ant)$/i) {
+        push @{$extensions{'Ant'}}  , "build.xml";
+        delete $extensions{'Ant/XML'};
+    }
+
+    if (%extensions) {
+        foreach my $lang (sort {lc $a cmp lc $b } keys %extensions) {
+            printf "%-26s (%s)\n", $lang, join(", ", @{$extensions{$lang}});
+        }
+    }
+} # 1}}}
+sub make_file_list {                         # {{{1
+    my ($ra_arg_list,  # in   file and/or directory names to examine
+        $rh_Err     ,  # in   hash of error codes
+        $raa_errors ,  # out  errors encountered
+        $rh_ignored ,  # out  files not recognized as computer languages
+        ) = @_;
+    print "-> make_file_list(@{$ra_arg_list})\n" if $opt_v > 2;
+
+    my ($fh, $filename);
+    if ($opt_categorized) {
+        $filename = $opt_categorized;
+        $fh = new IO::File $filename, "+>";  # open for read/write
+        die "Unable to write to $filename:  $!\n" unless defined $fh;
+    } elsif ($opt_sdir) {
+        # write to the user-defined scratch directory
+        $filename = $opt_sdir . '/cloc_file_list.txt';
+        $fh = new IO::File $filename, "+>";  # open for read/write
+        die "Unable to write to $filename:  $!\n" unless defined $fh;
+    } else {
+        # let File::Temp create a suitable temporary file
+        ($fh, $filename) = tempfile(UNLINK => 1);  # delete file on exit
+        print "Using temp file list [$filename]\n" if $opt_v;
+    }
+
+    my @dir_list = ();
+    foreach my $file_or_dir (@{$ra_arg_list}) {
+#print "make_file_list file_or_dir=$file_or_dir\n";
+        my $size_in_bytes = 0;
+        if (!-r $file_or_dir) {
+            push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file_or_dir];
+            next;
+        }
+        if (is_file($file_or_dir)) {
+            if (!(-s $file_or_dir)) {   # 0 sized file, named pipe, socket 
+                $rh_ignored->{$file_or_dir} = 'zero sized file';
+                next;
+            } elsif (-B $file_or_dir and !$opt_read_binary_files) { 
+                # avoid binary files unless user insists on reading them
+                if ($opt_unicode) {
+                    # only ignore if not a Unicode file w/trivial 
+                    # ASCII transliteration
+                    if (!unicode_file($file_or_dir)) {
+                        $rh_ignored->{$file_or_dir} = 'binary file';
+                        next;
+                    }
+                } else {
+                    $rh_ignored->{$file_or_dir} = 'binary file';
+                    next;
+                }
+            }
+            push @file_list, "$file_or_dir";
+        } elsif (is_dir($file_or_dir)) {
+            push @dir_list, $file_or_dir;
+        } else {
+            push @{$raa_errors}, [$rh_Err->{'Neither file nor directory'} , $file_or_dir];
+            $rh_ignored->{$file_or_dir} = 'not file, not directory';
+        }
+    }
+    foreach my $dir (@dir_list) {
+#print "make_file_list dir=$dir\n";
+        # populates global variable @file_list
+        find({wanted => \&files, follow => $opt_follow_links }, $dir);  
+    }
+    $nFiles_Found = scalar @file_list;
+    printf "%8d text file%s.\n", plural_form($nFiles_Found) unless $opt_quiet;
+    write_file($opt_found, sort @file_list) if $opt_found;
+
+    my $nFiles_Categorized = 0;
+    foreach my $file (@file_list) {
+        printf "classifying $file\n" if $opt_v > 2;
+
+        my $basename = basename $file;
+        if ($Not_Code_Filename{$basename}) {
+            $rh_ignored->{$file} = "listed in " . '$' .
+                "Not_Code_Filename{$basename}";
+            next;
+        } elsif ($basename =~ m{~$}) {
+            $rh_ignored->{$file} = "temporary editor file";
+            next;
+        }
+
+        my $size_in_bytes = (stat $file)[7];
+        my $language      = "";
+        if ($All_One_Language) {
+            # user over-rode auto-language detection by using
+            # --force-lang with just a language name (no extension)
+            $language      = $All_One_Language;
+        } else {
+            $language      = classify_file($file      ,
+                                           $rh_Err    ,
+                                           $raa_errors,
+                                           $rh_ignored);
+        }
+die  "make_file_list($file) undef size" unless defined $size_in_bytes;
+die  "make_file_list($file) undef lang" unless defined $language;
+        printf $fh "%d,%s,%s\n", $size_in_bytes, $language, $file;
+        ++$nFiles_Categorized;
+        #printf "classified %d files\n", $nFiles_Categorized 
+        #    unless (!$opt_progress_rate or 
+        #            ($nFiles_Categorized % $opt_progress_rate));
+    }
+    printf "classified %d files\r", $nFiles_Categorized 
+        if !$opt_quiet and $nFiles_Categorized > 1;
+
+    print "<- make_file_list()\n" if $opt_v > 2;
+
+    return $fh;   # handle to the file containing the list of files to process
+}  # 1}}}
+sub remove_duplicate_files {                 # {{{1
+    my ($fh                   , # in 
+        $rh_Language          , # out
+        $rh_unique_source_file, # out
+        $rh_Err               , # in
+        $raa_errors           , # out  errors encountered
+        $rh_ignored           , # out
+        ) = @_;
+
+    # Check for duplicate files by comparing file sizes.
+    # Where files are equally sized, compare their MD5 checksums.
+    print "-> remove_duplicate_files\n" if $opt_v > 2;
+
+    my $n = 0;
+    my %files_by_size = (); # files_by_size{ # bytes } = [ list of files ]
+    seek($fh, 0, 0); # rewind to beginning of the temp file
+    while (<$fh>) {
+        ++$n;
+        my ($size_in_bytes, $language, $file) = split(/,/, $_, 3);
+        chomp($file);
+        $rh_Language->{$file} = $language;
+        push @{$files_by_size{$size_in_bytes}}, $file;
+        if ($opt_skip_uniqueness) {
+            $rh_unique_source_file->{$file} = 1;
+        }
+    }
+    return if $opt_skip_uniqueness;
+    if ($opt_progress_rate and ($n > $opt_progress_rate)) {
+        printf "Duplicate file check %d files (%d known unique)\r", 
+            $n, scalar keys %files_by_size;
+    }
+    $n = 0;
+    foreach my $bytes (sort {$a <=> $b} keys %files_by_size) {
+        ++$n;
+        printf "Unique: %8d files                                          \r",
+            $n unless (!$opt_progress_rate or ($n % $opt_progress_rate));
+        if (scalar @{$files_by_size{$bytes}} == 1) {
+            # only one file is this big; must be unique
+            $rh_unique_source_file->{$files_by_size{$bytes}[0]} = 1;
+            next;
+        } else {
+#print "equally sized files: ",join(", ", @{$files_by_size{$bytes}}), "\n";
+            # Files in the list @{$files_by_size{$bytes} all are
+            # $bytes long.  Sort the list by file basename.
+            my @sorted_bn = ();
+            my %BN = map { basename($_) => $_ } @{$files_by_size{$bytes}};
+            foreach my $F (sort keys %BN) {
+                push @sorted_bn, $BN{$F};
+            }
+            foreach my $F (different_files(\@sorted_bn  ,
+                                            $rh_Err     ,
+                                            $raa_errors ,
+                                            $rh_ignored ) ) {
+                $rh_unique_source_file->{$F} = 1;
+            }
+        }
+    }
+    print "<- remove_duplicate_files\n" if $opt_v > 2;
+} # 1}}}
+sub files {                                  # {{{1
+    # invoked by File::Find's find()   Populates global variables,
+    # @file_list, %Ignored
+    if ($opt_exclude_dir or $opt_exclude_list_file) {
+        my $return = 0;
+        foreach my $skip_dir (keys %Exclude_Dir) {
+            # File::Find::dir used to always start with / but
+            # newer versions (1.13) no longer do; have to correct for this
+            my $dir = $File::Find::dir;
+               $dir = "./$dir" unless $dir =~ m{^/};
+            if ($dir =~ m{/\Q$skip_dir\E(/|$)} ) {
+                $Ignored{$File::Find::name} = "--exclude-dir=$skip_dir";
+                $return = 1;
+                last;
+            }
+        }
+        return if $return;
+    }
+    my $Dir = cwd(); # not $File::Find::dir which just gives relative path
+	if ($opt_match_f    ) {	return unless /$opt_match_f/;     }
+    if ($opt_not_match_f) {	return if     /$opt_not_match_f/; }
+	if ($opt_match_d    ) {	return unless $Dir =~ m{$opt_match_d}     }
+    if ($opt_not_match_d) {	return if     $Dir =~ m{$opt_not_match_d} }
+
+    my $nBytes = -s     $_ ;
+    if (!$nBytes) {
+        $Ignored{$File::Find::name} = 'zero sized file';
+        printf "files(%s)  zero size\n", $File::Find::name if $opt_v > 5;
+    }
+    return unless $nBytes  ; # attempting other tests w/pipe or socket will hang
+    if ($nBytes > $opt_max_file_size*1024**2) {
+        $Ignored{$File::Find::name} = "file size of " .
+            $nBytes/1024**2 . " MB exceeds max file size of " .
+            "$opt_max_file_size MB";
+        printf "file(%s)  exceeds $opt_max_file_size MB\n", 
+            $File::Find::name if $opt_v > 5;
+        return;
+    }
+    my $is_dir = is_dir($_);
+    my $is_bin = -B     $_ ;
+    printf "files(%s)  size=%d is_dir=%d  -B=%d\n",
+        $File::Find::name, $nBytes, $is_dir, $is_bin if $opt_v > 5;
+    $is_bin = 0 if $opt_unicode and unicode_file($_);
+    $is_bin = 0 if $opt_read_binary_files;
+    return if $is_dir or $is_bin;
+    ++$nFiles_Found;
+    printf "%8d files\r", $nFiles_Found 
+        unless (!$opt_progress_rate or ($nFiles_Found % $opt_progress_rate));
+    push @file_list, $File::Find::name;
+} # 1}}}
+sub archive_files {                          # {{{1
+    # invoked by File::Find's find()  Populates global variable @binary_archive
+    foreach my $ext (keys %Known_Binary_Archives) {
+        push @binary_archive, $File::Find::name 
+            if $File::Find::name =~ m{$ext$};
+    }
+} # 1}}}
+sub is_file {                                # {{{1
+    # portable method to test if item is a file
+    # (-f doesn't work in ActiveState Perl on Windows)
+    my $item = shift @_;
+
+    if ($ON_WINDOWS) {
+        my $mode = (stat $item)[2];
+           $mode = 0 unless $mode;
+        if ($mode & 0100000) { return 1; } 
+        else                 { return 0; }
+    } else {
+        return (-f $item);  # works on Unix, Linux, CygWin, z/OS
+    }
+} # 1}}}
+sub is_dir {                                 # {{{1
+    # portable method to test if item is a directory
+    # (-d doesn't work in ActiveState Perl on Windows)
+    my $item = shift @_;
+
+    if ($ON_WINDOWS) {
+        my $mode = (stat $item)[2];
+           $mode = 0 unless $mode;
+        if ($mode & 0040000) { return 1; } 
+        else                 { return 0; }
+    } else {
+        return (-d $item);  # works on Unix, Linux, CygWin, z/OS
+    }
+} # 1}}}
+sub is_excluded {                            # {{{1
+    my ($file       , # in
+        $excluded   , # in   hash of excluded directories
+       ) = @_;
+    my($filename, $filepath, $suffix) = fileparse($file);
+    foreach my $path (sort keys %{$excluded}) {
+        return 1 if ($filepath =~ m{^$path/}i);
+    }
+} # 1}}}
+sub classify_file {                          # {{{1
+    my ($full_file   , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+        $rh_ignored  , # out
+       ) = @_;
+
+    print "-> classify_file($full_file)\n" if $opt_v > 2;
+    my $language = "(unknown)";
+
+    if (basename($full_file) eq "-" && defined $opt_stdin_name) {
+       $full_file = $opt_stdin_name;
+    }
+
+    my $look_at_first_line = 0;
+    my $file = basename $full_file; 
+    if ($opt_autoconf and $file =~ /\.in$/) {
+       $file =~ s/\.in$//;
+    }
+    return $language if $Not_Code_Filename{$file}; # (unknown)
+    return $language if $file =~ m{~$}; # a temp edit file (unknown)
+    if (defined $Language_by_File{$file}) {
+        if      ($Language_by_File{$file} eq "Ant/XML") {
+            return Ant_or_XML(  $full_file, $rh_Err, $raa_errors);
+        } elsif ($Language_by_File{$file} eq "Maven/XML") {
+            return Maven_or_XML($full_file, $rh_Err, $raa_errors);
+        } else {
+            return $Language_by_File{$file};
+        }
+    }
+
+    if ($file =~ /\.(\w+)$/) { # has an extension
+      print "$full_file extension=[$1]\n" if $opt_v > 2;
+      my $extension = $1;
+         # Windows file names are case insensitive so map 
+         # all extensions to lowercase there.
+         $extension = lc $extension if $ON_WINDOWS;  
+      my @extension_list = ( $extension );
+      if ($file =~ /\.(\w+\.\w+)$/) { # has a double extension
+          my $extension = $1;
+          $extension = lc $extension if $ON_WINDOWS;  
+          unshift @extension_list, $extension;  # examine double ext first
+      }
+      foreach my $extension (@extension_list) {
+        if ($Not_Code_Extension{$extension} and 
+           !$Forced_Extension{$extension}) {
+           # If .1 (for example) is an extention that would ordinarily be
+           # ignored but the user has insisted this be counted with the
+           # --force-lang option, then go ahead and count it.
+            $rh_ignored->{$full_file} = 
+                'listed in $Not_Code_Extension{' . $extension . '}';
+            return $language;
+        }
+        if (defined $Language_by_Extension{$extension}) {
+            if ($Language_by_Extension{$extension} eq
+                'MATLAB/Objective C/MUMPS') {
+                my $lang_M_or_O = "";
+                matlab_or_objective_C($full_file , 
+                                      $rh_Err    ,
+                                      $raa_errors,
+                                     \$lang_M_or_O);
+                if ($lang_M_or_O) {
+                    return $lang_M_or_O;
+                } else { # an error happened in matlab_or_objective_C()
+                    $rh_ignored->{$full_file} = 
+                        'failure in matlab_or_objective_C()';
+                    return $language; # (unknown)
+                }
+            } elsif ($Language_by_Extension{$extension} eq 'PHP/Pascal') {
+                if (really_is_php($full_file)) {
+                    return 'PHP';
+                } elsif (really_is_incpascal($full_file)) {
+                    return 'Pascal';
+                } else {
+                    return $language; # (unknown)
+                }
+            } elsif ($Language_by_Extension{$extension} eq 'Lisp/OpenCL') {
+                return Lisp_or_OpenCL($full_file, $rh_Err, $raa_errors);
+            } elsif ($Language_by_Extension{$extension} eq 'Smarty') {
+                # Smarty extension .tpl is generic; make sure the
+                # file at least roughly resembles PHP.  Alternatively,
+                # if the user forces the issue, do the count.
+                my $force_smarty = 0;
+                foreach (@opt_force_lang) {
+                    if (lc($_) eq "smarty,tpl") {
+                        $force_smarty = 1; 
+                        last;
+                    }
+                }
+                if (really_is_php($full_file) or $force_smarty) {
+                    return 'Smarty';
+                } else {
+                    return $language; # (unknown)
+                }
+            } else {
+                return $Language_by_Extension{$extension};
+            }
+        } else { # has an unmapped file extension
+            $look_at_first_line = 1;
+        }
+      }
+    } elsif (defined $Language_by_File{lc $file}) {
+        return $Language_by_File{lc $file};
+    } elsif ($opt_lang_no_ext and 
+             defined $Filters_by_Language{$opt_lang_no_ext}) {
+        return $opt_lang_no_ext;
+    } else {  # no file extension
+        $look_at_first_line = 1;
+    }
+
+    if ($look_at_first_line) {
+        # maybe it is a shell/Perl/Python/Ruby/etc script that
+        # starts with pound bang:
+        #   #!/usr/bin/perl
+        #   #!/usr/bin/env perl
+        my $script_language = peek_at_first_line($full_file , 
+                                                 $rh_Err    , 
+                                                 $raa_errors);
+        if (!$script_language) {
+            $rh_ignored->{$full_file} = "language unknown (#2)";
+            # returns (unknown)
+        }
+        if (defined $Language_by_Script{$script_language}) {
+            if (defined $Filters_by_Language{
+                            $Language_by_Script{$script_language}}) {
+                $language = $Language_by_Script{$script_language};
+            } else {
+                $rh_ignored->{$full_file} = 
+                    "undefined:  Filters_by_Language{" . 
+                    $Language_by_Script{$script_language} .
+                    "} for scripting language $script_language";
+                # returns (unknown)
+            }
+        } else {
+            $rh_ignored->{$full_file} = "language unknown (#3)";
+            # returns (unknown)
+        }
+    }
+    print "<- classify_file($full_file)\n" if $opt_v > 2;
+    return $language;
+} # 1}}}
+sub peek_at_first_line {                     # {{{1
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+       ) = @_;
+
+    print "-> peek_at_first_line($file)\n" if $opt_v > 2;
+
+    my $script_language = "";
+    if (!-r $file) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        return $script_language;
+    }
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        print "<- peek_at_first_line($file)\n" if $opt_v > 2;
+        return $script_language;
+    }
+    chomp(my $first_line = <$IN>);
+    if (defined $first_line) {
+#print "peek_at_first_line of [$file] first_line=[$first_line]\n";
+        if ($first_line =~ /^#\!\s*(\S.*?)$/) {
+#print "peek_at_first_line 1=[$1]\n";
+            my @pound_bang = split(' ', $1);
+#print "peek_at_first_line basename 0=[", basename($pound_bang[0]), "]\n";
+            if (basename($pound_bang[0]) eq "env" and 
+                scalar @pound_bang > 1) {
+                $script_language = $pound_bang[1];
+#print "peek_at_first_line pound_bang A $pound_bang[1]\n";
+            } else {
+                $script_language = basename $pound_bang[0];
+#print "peek_at_first_line pound_bang B $script_language\n";
+            }
+        }
+    }
+    $IN->close;
+    print "<- peek_at_first_line($file)\n" if $opt_v > 2;
+    return $script_language;
+} # 1}}}
+sub different_files {                        # {{{1
+    # See which of the given files are unique by computing each file's MD5
+    # sum.  Return the subset of files which are unique.
+    my ($ra_files    , # in
+        $rh_Err      , # in
+        $raa_errors  , # out
+        $rh_ignored  , # out
+       ) = @_;
+
+    print "-> different_files(@{$ra_files})\n" if $opt_v > 2;
+    my %file_hash = ();  # file_hash{md5 hash} = [ file1, file2, ... ]
+    foreach my $F (@{$ra_files}) {
+        next if is_dir($F);  # needed for Windows
+        my $IN = new IO::File $F, "r";
+        if (!defined $IN) {
+            push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $F];
+            $rh_ignored->{$F} = 'cannot read';
+        } else {
+            if ($HAVE_Digest_MD5) {
+                binmode $IN;
+                my $MD5 = Digest::MD5->new->addfile($IN)->hexdigest;
+#print "$F, $MD5\n";
+                push @{$file_hash{$MD5}}, $F;
+            } else {
+                # all files treated unique
+                push @{$file_hash{$F}}, $F;
+            }
+            $IN->close;
+        }
+    }
+
+    # Loop over file sets having identical MD5 sums.  Within
+    # each set, pick the file that most resembles known source 
+    # code.
+    my @unique = ();
+    for my $md5 (sort keys %file_hash) {
+        my $i_best = 0;
+        for (my $i = 1; $i < scalar(@{$file_hash{$md5}}); $i++) {
+            my $F = $file_hash{$md5}[$i];
+            my (@nul_a, %nul_h);
+            my $language = classify_file($F, $rh_Err, 
+                                        # don't save these errors; pointless
+                                        \@nul_a, \%nul_h);
+            $i_best = $i if $language ne "(unknown)";
+        }
+        # keep the best one found and identify the rest as ignored
+        for (my $i = 0; $i < scalar(@{$file_hash{$md5}}); $i++) {
+            if ($i == $i_best) {
+                push @unique, $file_hash{$md5}[$i_best];
+            } else {
+                $rh_ignored->{$file_hash{$md5}[$i]} = "duplicate of " .
+                    $file_hash{$md5}[$i_best];
+            }
+        }
+
+    }
+    print "<- different_files(@unique)\n" if $opt_v > 2;
+    return @unique;
+} # 1}}}
+sub call_counter {                           # {{{1
+    my ($file     , # in
+        $language , # in
+        $ra_Errors, # out
+       ) = @_;
+
+    # Logic:  pass the file through the following filters:
+    #         1. remove blank lines
+    #         2. remove comments using each filter defined for this language
+    #            (example:  SQL has two, remove_starts_with(--) and 
+    #             remove_c_comments() )
+    #         3. compute comment lines as 
+    #               total lines - blank lines - lines left over after all
+    #                   comment filters have been applied
+
+    print "-> call_counter($file, $language)\n" if $opt_v > 2;
+#print "call_counter:  ", Dumper(@routines), "\n";
+
+    my @lines = ();
+    my $ascii = "";
+    if (-B $file and $opt_unicode) {
+        # was binary so must be unicode
+
+        $/ = undef;
+        my $IN = new IO::File $file, "r";
+        my $bin_text = <$IN>;
+        $IN->close;
+        $/ = "\n";
+
+        $ascii = unicode_to_ascii( $bin_text );
+        @lines = split("\n", $ascii );
+        foreach (@lines) { $_ = "$_\n"; }
+
+    } else {
+        # regular text file
+        @lines = read_file($file);
+        $ascii = join('', @lines);
+    }
+
+    my @original_lines = @lines;
+    my $total_lines    = scalar @lines;
+
+    print_lines($file, "Original file:", \@lines) if $opt_print_filter_stages;
+    @lines = rm_blanks(\@lines, $language, \%EOL_Continuation_re); # remove blank lines
+    my $blank_lines = $total_lines - scalar @lines;
+    print_lines($file, "Blank lines removed:", \@lines) 
+        if $opt_print_filter_stages;
+
+    @lines = rm_comments(\@lines, $language, $file,
+                               \%EOL_Continuation_re);
+
+    my $comment_lines = $total_lines - $blank_lines - scalar  @lines;
+    if ($opt_strip_comments) {
+        my $stripped_file = "";
+        if ($opt_original_dir) {
+            $stripped_file =          $file . ".$opt_strip_comments";
+        } else {
+            $stripped_file = basename $file . ".$opt_strip_comments";
+        }
+        write_file($stripped_file, @lines);
+    }
+    if ($opt_html and !$opt_diff) {
+        chomp(@original_lines);  # includes blank lines, comments
+        chomp(@lines);           # no blank lines, no comments
+
+        my (@diff_L, @diff_R, %count);
+
+        # remove blank lines to get better quality diffs; count
+        # blank lines separately
+        my @original_lines_minus_white = ();
+        # however must keep track of how many blank lines were removed and
+        # where they were removed so that the HTML display can include it
+        my %blank_line  = ();
+        my $insert_line = 0;
+        foreach (@original_lines) {
+            if (/^\s*$/) {
+               ++$count{blank}{same};
+               ++$blank_line{ $insert_line };
+            } else {
+                ++$insert_line;
+                push @original_lines_minus_white, $_;
+            }
+        }
+
+        array_diff( $file                       ,   # in
+                   \@original_lines_minus_white ,   # in
+                   \@lines                      ,   # in
+                   "comment"                    ,   # in
+                   \@diff_L, \@diff_R,          ,   # out
+                    $ra_Errors);                    # in/out
+        write_comments_to_html($file, \@diff_L, \@diff_R, \%blank_line);
+#print Dumper("count", \%count);
+    }
+
+    print "<- call_counter($total_lines, $blank_lines, $comment_lines)\n" 
+        if $opt_v > 2;
+    return ($total_lines, $blank_lines, $comment_lines);
+} # 1}}}
+sub windows_glob {                           # {{{1
+    # Windows doesn't expand wildcards.  Use code from Sean M. Burke's 
+    # Win32::Autoglob module to do this.
+    return map {;
+        ( defined($_) and m/[\*\?]/ ) ? sort(glob($_)) : $_
+          } @_; 
+} # 1}}}
+sub write_file {                             # {{{1
+    my ($file  , # in
+        @lines , # in
+       ) = @_;
+
+#print "write_file 1 [$file]\n";
+    # Do ~ expansion (by Tim LaBerge, fixes bug 2787984)
+    my $preglob_filename = $file;
+#print "write_file 2 [$preglob_filename]\n";
+    if ($ON_WINDOWS) {
+        $file = (windows_glob($file))[0];
+    } else {
+        $file = File::Glob::glob($file);
+    }
+#print "write_file 3 [$file]\n";
+    $file = $preglob_filename unless $file;
+#print "write_file 4 [$file]\n";
+
+    print "-> write_file($file)\n" if $opt_v > 2;
+
+    # Create the destination directory if it doesn't already exist.
+    my $abs_file_path = File::Spec->rel2abs( $file );
+    my ($volume, $directories, $filename) = File::Spec->splitpath( $abs_file_path );
+    mkpath($volume . $directories, 1, 0777);
+    
+    my $OUT = new IO::File $file, "w";
+    if (defined $OUT) {
+        chomp(@lines);
+        print $OUT join("\n", @lines), "\n";
+        $OUT->close;
+    } else {
+        warn "Unable to write to $file\n";
+    }
+    print "Wrote $file" unless $opt_quiet;
+    print ", $CLOC_XSL" if $opt_xsl and $opt_xsl eq $CLOC_XSL;
+    print "\n" unless $opt_quiet;
+    
+    print "<- write_file\n" if $opt_v > 2;
+} # 1}}}
+sub read_file  {                             # {{{1
+    my ($file, ) = @_;
+
+    print "-> read_file($file)\n" if $opt_v > 2;
+    my @lines = ();
+    my $IN = new IO::File $file, "r";
+    if (defined $IN) {
+        @lines = <$IN>;
+        $IN->close;
+        if ($lines[$#lines]) {  # test necessary for zero content files
+                                # (superfluous?)
+            # Some files don't end with a new line.  Force this:
+            $lines[$#lines] .= "\n" unless $lines[$#lines] =~ m/\n$/;
+        }
+    } else {
+        warn "Unable to read $file\n";
+    }
+    print "<- read_file\n" if $opt_v > 2;
+    return @lines;
+} # 1}}}
+sub rm_blanks {                              # {{{1
+    my ($ra_in    ,
+        $language ,
+        $rh_EOL_continuation_re) = @_;
+    print "-> rm_blanks(language=$language)\n" if $opt_v > 2;
+#print "rm_blanks: language = [$language]\n";
+    my @out = ();
+    if ($language eq "COBOL") {
+        @out = remove_cobol_blanks($ra_in);
+    } else {
+        # removes blank lines
+        if (defined $rh_EOL_continuation_re->{$language}) {
+            @out = remove_matches_2re($ra_in, '^\s*$', 
+                                      $rh_EOL_continuation_re->{$language}); 
+        } else {
+            @out = remove_matches($ra_in, '^\s*$');
+        }
+    }
+    print "<- rm_blanks(language=$language)\n" if $opt_v > 2;
+    return @out;
+} # 1}}}
+sub rm_comments {                            # {{{1
+    my ($ra_lines , # in, must be free of blank lines
+        $language , # in
+        $file     , # in (some language counters, eg Haskell, need 
+                    #     access to the original file)
+        $rh_EOL_continuation_re , # in
+       ) = @_;
+    print "-> rm_comments(file=$file)\n" if $opt_v > 2;
+    my @routines       = @{$Filters_by_Language{$language}};
+    my @lines          = @{$ra_lines};
+    my @original_lines = @{$ra_lines};
+
+    foreach my $call_string (@routines) {
+        my $subroutine = $call_string->[0];
+        if (! defined &{$subroutine}) {
+            warn "rm_comments undefined subroutine $subroutine for $file\n";
+            next;
+        }
+        print "rm_comments file=$file sub=$subroutine\n" if $opt_v > 1;
+        my @args  = @{$call_string};
+        shift @args; # drop the subroutine name
+        if (@args and $args[0] eq '>filename<') {
+            shift   @args;
+            unshift @args, $file;
+        }
+
+        no strict 'refs';
+        @lines = &{$subroutine}(\@lines, @args);   # apply filter...
+
+        print_lines($file, "After $subroutine(@args)", \@lines) 
+            if $opt_print_filter_stages;
+        # then remove blank lines which are created by comment removal
+        if (defined $rh_EOL_continuation_re->{$language}) {
+            @lines = remove_matches_2re(\@lines, '^\s*$',
+                                        $rh_EOL_continuation_re->{$language});
+        } else {
+            @lines = remove_matches(\@lines, '^\s*$');
+        }
+        
+        print_lines($file, "post $subroutine(@args) blank cleanup:", \@lines) 
+            if $opt_print_filter_stages;
+    }
+    # Exception for scripting languages:  treat the first #! line as code.
+    # Will need to add it back in if it was removed earlier.
+    if ($Script_Language{$language} and 
+        $original_lines[0] =~ /^#!/ and
+        (scalar(@lines) == 0 or 
+         $lines[0] ne $original_lines[0])) {
+        unshift @lines, $original_lines[0];  # add the first line back
+    }
+    print "<- rm_comments\n" if $opt_v > 2;
+    return @lines;
+} # 1}}}
+sub remove_f77_comments {                    # {{{1
+    my ($ra_lines, ) = @_;
+    print "-> remove_f77_comments\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    foreach (@{$ra_lines}) {
+        next if m{^[*cC]};
+        next if m{^\s*!};
+        push @save_lines, $_;
+    }
+
+    print "<- remove_f77_comments\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub remove_f90_comments {                    # {{{1
+    # derived from SLOCCount
+    my ($ra_lines, ) = @_;
+    print "-> remove_f90_comments\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    foreach (@{$ra_lines}) {
+        # a comment is              m/^\s*!/
+        # an empty line is          m/^\s*$/
+        # a HPF statement is        m/^\s*!hpf\$/i
+        # an Open MP statement is   m/^\s*!omp\$/i
+        if (! m/^(\s*!|\s*$)/ || m/^\s*!(hpf|omp)\$/i) {
+            push @save_lines, $_;
+        }
+    }
+
+    print "<- remove_f90_comments\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub remove_matches {                         # {{{1
+    my ($ra_lines, # in
+        $pattern , # in   Perl regular expression (case insensitive)
+       ) = @_;
+    print "-> remove_matches(pattern=$pattern)\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    foreach (@{$ra_lines}) {
+#chomp; print "remove_matches [$pattern] [$_]\n";
+        next if m{$pattern}i;
+        push @save_lines, $_;
+    }
+
+    print "<- remove_matches\n" if $opt_v > 2;
+#print "remove_matches returning\n   ", join("\n   ", @save_lines), "\n";
+    return @save_lines;
+} # 1}}}
+sub remove_matches_2re {                     # {{{1
+    my ($ra_lines, # in
+        $pattern1, # in Perl regex 1 (case insensitive) to match
+        $pattern2, # in Perl regex 2 (case insensitive) to not match prev line
+       ) = @_;
+    print "-> remove_matches_2re(pattern=$pattern1,$pattern2)\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    for (my $i = 0; $i < scalar @{$ra_lines}; $i++) {
+#print "remove_matches_2re [$pattern1] [$pattern2] [$ra_lines->[$i]]\n";
+        if ($i) {
+#print "remove_matches_2re prev=[$ra_lines->[$i-1]] this=[$ra_lines->[$i]]\n";
+            next if ($ra_lines->[$i]   =~ m{$pattern1}i) and 
+                    ($ra_lines->[$i-1] !~ m{$pattern2}i);
+        } else {
+            # on first line
+            next if $ra_lines->[$i]   =~  m{$pattern1}i;
+        }
+        push @save_lines, $ra_lines->[$i];
+    }
+
+    print "<- remove_matches_2re\n" if $opt_v > 2;
+#print "remove_matches_2re returning\n   ", join("\n   ", @save_lines), "\n";
+    return @save_lines;
+} # 1}}}
+sub remove_inline {                          # {{{1
+    my ($ra_lines, # in
+        $pattern , # in   Perl regular expression (case insensitive)
+       ) = @_;
+    print "-> remove_inline(pattern=$pattern)\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    unless ($opt_inline) {
+        return @{$ra_lines};
+    }
+    my $nLines_affected = 0;
+    foreach (@{$ra_lines}) {
+#chomp; print "remove_inline [$pattern] [$_]\n";
+        if (m{$pattern}i) {
+            ++$nLines_affected;
+            s{$pattern}{}i;
+        }
+        push @save_lines, $_;
+    }
+
+    print "<- remove_inline\n" if $opt_v > 2;
+#print "remove_inline returning\n   ", join("\n   ", @save_lines), "\n";
+    return @save_lines;
+} # 1}}}
+sub remove_above {                           # {{{1
+    my ($ra_lines, $marker, ) = @_;
+    print "-> remove_above(marker=$marker)\n" if $opt_v > 2;
+
+    # Make two passes through the code:
+    # 1. check if the marker exists
+    # 2. remove anything above the marker if it exists,
+    #    do nothing if the marker does not exist
+
+    # Pass 1
+    my $found_marker = 0;
+    for (my $line_number  = 1;
+            $line_number <= scalar @{$ra_lines};
+            $line_number++) {
+        if ($ra_lines->[$line_number-1] =~ m{$marker}) {
+            $found_marker = $line_number;
+            last;
+        }
+    }
+
+    # Pass 2 only if needed
+    my @save_lines = ();
+    if ($found_marker) {
+        my $n = 1;
+        foreach (@{$ra_lines}) {
+            push @save_lines, $_
+                if $n >= $found_marker;
+            ++$n;
+        }
+    } else { # marker wasn't found; save all lines
+        foreach (@{$ra_lines}) {
+            push @save_lines, $_;
+        }
+    }
+
+    print "<- remove_above\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub remove_below {                           # {{{1
+    my ($ra_lines, $marker, ) = @_;
+    print "-> remove_below(marker=$marker)\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    foreach (@{$ra_lines}) {
+        last if m{$marker};
+        push @save_lines, $_;
+    }
+
+    print "<- remove_below\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub remove_below_above {                     # {{{1
+    my ($ra_lines, $marker_below, $marker_above, ) = @_;
+    # delete lines delimited by start and end line markers such
+    # as Perl POD documentation
+    print "-> remove_below_above(markerB=$marker_below, A=$marker_above)\n" 
+        if $opt_v > 2;
+
+    my @save_lines = ();
+    my $between    = 0;
+    foreach (@{$ra_lines}) {
+        if (!$between and m{$marker_below}) {
+            $between    = 1;
+            next;
+        }
+        if ($between and m{$marker_above}) {
+            $between    = 0;
+            next;
+        }
+        next if $between;
+        push @save_lines, $_;
+    }
+
+    print "<- remove_below_above\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub remove_between {                         # {{{1
+    my ($ra_lines, $marker, ) = @_;
+    # $marker must contain one of the balanced pairs understood
+    # by Regexp::Common::balanced, namely
+    # '{}'  '()'  '[]'  or  '<>'
+
+    print "-> remove_between(marker=$marker)\n" if $opt_v > 2;
+    my %acceptable = ('{}'=>1,  '()'=>1,  '[]'=>1,  '<>'=>1, );
+    die "remove_between:  invalid delimiter '$marker'\n",
+        "the delimiter must be one of these four pairs:\n",
+        "{}  ()  []  <>\n" unless
+        $acceptable{$marker};
+
+    Install_Regexp_Common() unless $HAVE_Rexexp_Common;
+
+    my $all_lines = join("", @{$ra_lines});
+
+    no strict 'vars';
+    # otherwise get:
+    #  Global symbol "%RE" requires explicit package name at cloc line xx.
+    if ($all_lines =~ m/$RE{balanced}{-parens => $marker}/) {
+        no warnings; 
+        $all_lines =~ s/$1//g;
+    }
+
+    print "<- remove_between\n" if $opt_v > 2;
+    return split("\n", $all_lines);
+} # 1}}}
+sub remove_between_general {                 # {{{1
+    my ($ra_lines, $start_marker, $end_marker, ) = @_;
+    # Start and end markers may be any length strings.
+
+    print "-> remove_between_general(start=$start_marker, end=$end_marker)\n"
+        if $opt_v > 2;
+
+    my $all_lines = join("", @{$ra_lines});
+
+    my @save_lines = ();
+    my $in_comment = 0;
+    foreach (@{$ra_lines}) {
+
+        next if /^\s*$/;
+        s/\Q$start_marker\E.*?\Q$end_marker\E//g;  # strip one-line comments
+        next if /^\s*$/;
+        if ($in_comment) {
+            if (/\Q$end_marker\E/) {
+                s/^.*?\Q$end_marker\E//;
+                $in_comment = 0;
+            }
+        }
+        next if /^\s*$/;
+        $in_comment = 1 if /^(.*?)\Q$start_marker\E/;
+        next if defined $1 and $1 =~ /^\s*$/;
+        next if ($in_comment);
+        push @save_lines, $_;
+    }
+
+    print "<- remove_between_general\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub remove_cobol_blanks {                    # {{{1
+    # subroutines derived from SLOCCount
+    my ($ra_lines, ) = @_;
+
+    my $free_format = 0;  # Support "free format" source code.
+    my @save_lines  = ();
+  
+    foreach (@{$ra_lines}) {
+        next if m/^\s*$/;
+        my $line = expand($_);  # convert tabs to equivalent spaces
+        $free_format = 1 if $line =~ m/^......\$.*SET.*SOURCEFORMAT.*FREE/i;
+        if ($free_format) {
+            push @save_lines, $_;
+        } else {
+            # Greg Toth:
+            #  (1) Treat lines with any alphanum in cols 1-6 and 
+            #      blanks in cols 7 through 71 as blank line, and
+            #  (2) Treat lines with any alphanum in cols 1-6 and 
+            #      slash (/) in col 7 as blank line (this is a 
+            #      page eject directive). 
+            push @save_lines, $_ unless m/^\d{6}\s*$/             or 
+                                        ($line =~ m/^.{6}\s{66}/) or 
+                                        ($line =~ m/^......\//);
+        }
+    }
+    return @save_lines;
+} # 1}}}
+sub remove_cobol_comments {                  # {{{1
+    # subroutines derived from SLOCCount
+    my ($ra_lines, ) = @_;
+
+    my $free_format = 0;  # Support "free format" source code.
+    my @save_lines  = ();
+  
+    foreach (@{$ra_lines}) {
+        if (m/^......\$.*SET.*SOURCEFORMAT.*FREE/i) {$free_format = 1;}
+        if ($free_format) {
+            push @save_lines, $_ unless m{^\s*\*};
+        } else {
+            push @save_lines, $_ unless m{^......\*} or m{^\*};
+        }
+    }
+    return @save_lines;
+} # 1}}}
+sub remove_jcl_comments {                    # {{{1
+    my ($ra_lines, ) = @_;
+
+    print "-> remove_jcl_comments\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    my $in_comment = 0;
+    foreach (@{$ra_lines}) {
+        next if /^\s*$/;
+        next if m{^\s*//\*};
+        last if m{^\s*//\s*$};
+        push @save_lines, $_;
+    }
+
+    print "<- remove_jcl_comments\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub remove_jsp_comments {                    # {{{1
+    #  JSP comment is   <%--  body of comment   --%>
+    my ($ra_lines, ) = @_;
+
+    print "-> remove_jsp_comments\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    my $in_comment = 0;
+    foreach (@{$ra_lines}) {
+
+        next if /^\s*$/;
+        s/<\%\-\-.*?\-\-\%>//g;  # strip one-line comments
+        next if /^\s*$/;
+        if ($in_comment) {
+            if (/\-\-\%>/) {
+                s/^.*?\-\-\%>//;
+                $in_comment = 0;
+            }
+        }
+        next if /^\s*$/;
+        $in_comment = 1 if /^(.*?)<\%\-\-/;
+        next if defined $1 and $1 =~ /^\s*$/;
+        next if ($in_comment);
+        push @save_lines, $_;
+    }
+
+    print "<- remove_jsp_comments\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub remove_html_comments {                   # {{{1
+    #  HTML comment is   <!--  body of comment   -->
+    #  Need to use my own routine until the HTML comment regex in
+    #  the Regexp::Common module can handle  <!--  --  -->
+    my ($ra_lines, ) = @_;
+
+    print "-> remove_html_comments\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    my $in_comment = 0;
+    foreach (@{$ra_lines}) {
+
+        next if /^\s*$/;
+        s/<!\-\-.*?\-\->//g;  # strip one-line comments
+        next if /^\s*$/;
+        if ($in_comment) {
+            if (/\-\->/) {
+                s/^.*?\-\->//;
+                $in_comment = 0;
+            }
+        }
+        next if /^\s*$/;
+        $in_comment = 1 if /^(.*?)<!\-\-/;
+        next if defined $1 and $1 =~ /^\s*$/;
+        next if ($in_comment);
+        push @save_lines, $_;
+    }
+
+    print "<- remove_html_comments\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub add_newlines {                           # {{{1
+    my ($ra_lines, ) = @_;
+    print "-> add_newlines \n" if $opt_v > 2;
+
+    my @save_lines = ();
+    foreach (@{$ra_lines}) {
+
+        push @save_lines, "$_\n";
+    }
+
+    print "<- add_newlines \n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub docstring_to_C {                         # {{{1
+    my ($ra_lines, ) = @_;
+    # Converts Python docstrings to C comments.
+
+    print "-> docstring_to_C()\n" if $opt_v > 2;
+
+    my $in_docstring = 0;
+    foreach (@{$ra_lines}) {
+        while (/"""/) {
+            if (!$in_docstring) {
+                s{"""}{/*};
+                $in_docstring = 1;
+            } else {
+                s{"""}{*/};
+                $in_docstring = 0;
+            }
+        }
+    }
+
+    print "<- docstring_to_C\n" if $opt_v > 2;
+    return @{$ra_lines};
+} # 1}}}
+sub powershell_to_C {                        # {{{1
+    my ($ra_lines, ) = @_;
+    # Converts PowerShell block comment markers to C comments.
+
+    print "-> powershell_to_C()\n" if $opt_v > 2;
+
+    my $in_docstring = 0;
+    foreach (@{$ra_lines}) {
+        s{<#}{/*}g;
+        s{#>}{*/}g;
+    }
+
+    print "<- powershell_to_C\n" if $opt_v > 2;
+    return @{$ra_lines};
+} # 1}}}
+sub smarty_to_C {                            # {{{1
+    my ($ra_lines, ) = @_;
+    # Converts Smarty comments to C comments.
+
+    print "-> smarty_to_C()\n" if $opt_v > 2;
+
+    foreach (@{$ra_lines}) {
+        s[{\*][/*]g;
+        s[\*}][*/]g;
+    }
+
+    print "<- smarty_to_C\n" if $opt_v > 2;
+    return @{$ra_lines};
+} # 1}}}
+sub determine_lit_type {                     # {{{1
+  my ($file) = @_;
+
+  open (FILE, $file);
+  while (<FILE>) {
+    if (m/^\\begin{code}/) { close FILE; return 2; }
+    if (m/^>\s/) { close FILE; return 1; }
+  }
+
+  return 0;
+} # 1}}}
+sub remove_haskell_comments {                # {{{1
+    # Bulk of code taken from SLOCCount's haskell_count script.
+    # Strips out {- .. -} and -- comments and counts the rest.
+    # Pragmas, {-#...}, are counted as SLOC.
+    # BUG: Doesn't handle strings with embedded block comment markers gracefully.
+    #      In practice, that shouldn't be a problem.
+    my ($ra_lines, $file, ) = @_;
+
+    print "-> remove_haskell_comments\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    my $in_comment = 0;
+    my $incomment  = 0;
+    my ($literate, $inlitblock) = (0,0);
+  
+    $literate = 1 if $file =~ /\.lhs$/;
+    if($literate) { $literate = determine_lit_type($file) }
+
+    foreach (@{$ra_lines}) {
+        if ($literate == 1) {
+            if (!s/^>//) { s/.*//; }
+        } elsif ($literate == 2) {
+            if ($inlitblock) {
+                if (m/^\\end{code}/) { s/.*//; $inlitblock = 0; }
+            } elsif (!$inlitblock) {
+                if (m/^\\begin{code}/) { s/.*//; $inlitblock = 1; }
+                else { s/.*//; }
+            }
+        }
+
+        if ($incomment) {
+            if (m/\-\}/) { s/^.*?\-\}//;  $incomment = 0;}
+            else { s/.*//; }
+        }
+        if (!$incomment) {
+            s/--.*//;
+            s!{-[^#].*?-}!!g;
+            if (m/{-/ && (!m/{-#/)) {
+              s/{-.*//;
+              $incomment = 1;
+            }
+        }
+        if (m/\S/) { push @save_lines, $_; }
+    }
+#   if ($incomment) {print "ERROR: ended in comment in $ARGV\n";}
+
+    print "<- remove_haskell_comments\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub print_lines {                            # {{{1
+    my ($file     , # in
+        $title    , # in
+        $ra_lines , # in
+       ) = @_;
+    printf "->%-30s %s\n", $file, $title;
+    for (my $i = 0; $i < scalar @{$ra_lines}; $i++) {
+        printf "%5d | %s", $i+1, $ra_lines->[$i];
+        print "\n" unless $ra_lines->[$i] =~ m{\n$}
+    }
+} # 1}}}
+sub set_constants {                          # {{{1
+    my ($rh_Language_by_Extension , # out
+        $rh_Language_by_Script    , # out
+        $rh_Language_by_File      , # out
+        $rhaa_Filters_by_Language , # out
+        $rh_Not_Code_Extension    , # out
+        $rh_Not_Code_Filename     , # out
+        $rh_Scale_Factor          , # out
+        $rh_Known_Binary_Archives , # out
+        $rh_EOL_continuation_re   , # out
+       ) = @_;
+# 1}}}
+%{$rh_Language_by_Extension} = (             # {{{1
+            'abap'        => 'ABAP'                  ,
+            'ac'          => 'm4'                    ,
+            'ada'         => 'Ada'                   ,
+            'adb'         => 'Ada'                   ,
+            'ads'         => 'Ada'                   ,
+            'adso'        => 'ADSO/IDSM'             ,
+            'ahk'         => 'AutoHotkey'            ,
+            'am'          => 'make'                  ,
+            'ample'       => 'AMPLE'                 ,
+            'as'          => 'ActionScript'          ,
+            'dofile'      => 'AMPLE'                 ,
+            'startup'     => 'AMPLE'                 ,
+            'asa'         => 'ASP'                   ,
+            'asax'        => 'ASP.Net'               ,
+            'ascx'        => 'ASP.Net'               ,
+            'asm'         => 'Assembly'              ,
+            'asmx'        => 'ASP.Net'               ,
+            'asp'         => 'ASP'                   ,
+            'aspx'        => 'ASP.Net'               ,
+            'master'      => 'ASP.Net'               ,
+            'sitemap'     => 'ASP.Net'               ,
+            'cshtml'      => 'Razor'                 ,
+            'awk'         => 'awk'                   ,
+            'bash'        => 'Bourne Again Shell'    ,
+            'bas'         => 'Visual Basic'          ,
+            'bat'         => 'DOS Batch'             ,
+            'BAT'         => 'DOS Batch'             ,
+            'build.xml'   => 'Ant'                   ,
+            'cbl'         => 'COBOL'                 ,
+            'CBL'         => 'COBOL'                 ,
+            'c'           => 'C'                     ,
+            'C'           => 'C++'                   ,
+            'cc'          => 'C++'                   ,
+            'ccs'         => 'CCS'                   ,
+            'cfc'         => 'ColdFusion CFScript'   ,
+            'cfm'         => 'ColdFusion'            ,
+            'cl'          => 'Lisp/OpenCL'           ,
+            'clj'         => 'Clojure'               ,
+            'cljs'        => 'ClojureScript'         ,
+            'cls'         => 'Visual Basic'          , # also Apex Class
+            'CMakeLists.txt' => 'CMake'              ,
+            'cmake'       => 'CMake'                 ,
+            'cob'         => 'COBOL'                 ,
+            'COB'         => 'COBOL'                 ,
+            'coffee'      => 'CoffeeScript'          ,
+            'component'   => 'Visualforce Component' ,
+            'config'      => 'ASP.Net'               ,
+            'cpp'         => 'C++'                   ,
+            'cs'          => 'C#'                    ,
+            'csh'         => 'C Shell'               ,
+            'css'         => "CSS"                   ,
+            'ctl'         => 'Visual Basic'          ,
+            'cxx'         => 'C++'                   ,
+            'd'           => 'D'                     ,
+            'da'          => 'DAL'                   ,
+            'dart'        => 'Dart'                  ,
+            'def'         => 'Teamcenter def'        ,
+            'dmap'        => 'NASTRAN DMAP'          ,
+            'dpr'         => 'Pascal'                ,
+            'dsr'         => 'Visual Basic'          ,
+            'dtd'         => 'DTD'                   ,
+            'ec'          => 'C'                     ,
+            'el'          => 'Lisp'                  ,
+            'erl'         => 'Erlang'                ,
+            'exp'         => 'Expect'                ,
+            'f77'         => 'Fortran 77'            ,
+            'F77'         => 'Fortran 77'            ,
+            'f90'         => 'Fortran 90'            ,
+            'F90'         => 'Fortran 90'            ,
+            'f95'         => 'Fortran 95'            ,
+            'F95'         => 'Fortran 95'            ,
+            'f'           => 'Fortran 77'            ,
+            'F'           => 'Fortran 77'            ,
+            'fmt'         => 'Oracle Forms'          ,
+            'focexec'     => 'Focus'                 ,
+            'frm'         => 'Visual Basic'          ,
+            'gnumakefile' => 'make'                  ,
+            'Gnumakefile' => 'make'                  ,
+            'go'          => 'Go'                    ,
+            'groovy'      => 'Groovy'                ,
+            'gant'        => 'Groovy'                ,
+            'h'           => 'C/C++ Header'          ,
+            'H'           => 'C/C++ Header'          ,
+            'hh'          => 'C/C++ Header'          ,
+            'hpp'         => 'C/C++ Header'          ,
+            'hrl'         => 'Erlang'                ,
+            'hs'          => 'Haskell'               , 
+            'htm'         => 'HTML'                  ,
+            'html'        => 'HTML'                  ,
+            'i3'          => 'Modula3'               ,
+            'idl'         => 'IDL'                   ,
+            'ism'         => 'InstallShield'         ,
+            'pro'         => 'IDL'                   ,
+            'ig'          => 'Modula3'               ,
+            'il'          => 'SKILL'                 ,
+            'ils'         => 'SKILL++'               ,
+            'inc'         => 'PHP/Pascal'            , # might be PHP or Pascal
+            'ino'         => 'Arduino Sketch'        ,
+            'pde'         => 'Arduino Sketch'        , # pre 1.0
+            'itk'         => 'Tcl/Tk'                ,
+            'java'        => 'Java'                  ,
+            'jcl'         => 'JCL'                   , # IBM Job Control Lang.
+            'jl'          => 'Lisp'                  ,
+            'js'          => 'Javascript'            ,
+            'jsf'         => 'JavaServer Faces'      ,
+            'xhtml'       => 'JavaServer Faces'      ,
+            'jsp'         => 'JSP'                   , # Java server pages
+            'ksc'         => 'Kermit'                ,
+            'ksh'         => 'Korn Shell'            ,
+            'lhs'         => 'Haskell'               ,
+            'l'           => 'lex'                   ,
+            'less'        => 'LESS'                  ,
+            'lsp'         => 'Lisp'                  ,
+            'lisp'        => 'Lisp'                  ,
+            'lua'         => 'Lua'                   ,
+            'm3'          => 'Modula3'               ,
+            'm4'          => 'm4'                    ,
+            'makefile'    => 'make'                  ,
+            'Makefile'    => 'make'                  ,
+            'met'         => 'Teamcenter met'        ,
+            'mg'          => 'Modula3'               , 
+#           'mli'         => 'ML'                    , # ML not implemented
+#           'ml'          => 'ML'                    , 
+            'ml'          => 'OCaml'                 , 
+            'mli'         => 'OCaml'                 , 
+            'mly'         => 'OCaml'                 , 
+            'mll'         => 'OCaml'                 , 
+            'm'           => 'MATLAB/Objective C/MUMPS' ,
+            'mm'          => 'Objective C++'         ,
+            'wdproj'      => 'MSBuild scripts'       ,
+            'csproj'      => 'MSBuild scripts'       ,
+            'mps'         => 'MUMPS'                 ,
+            'mth'         => 'Teamcenter mth'        ,
+            'oscript'     => 'LiveLink OScript'      ,
+            'pad'         => 'Ada'                   , # Oracle Ada preprocessor
+            'page'        => 'Visualforce Page'      ,
+            'pas'         => 'Pascal'                ,
+            'pcc'         => 'C++'                   , # Oracle C++ preprocessor
+            'perl'        => 'Perl'                  ,
+            'pfo'         => 'Fortran 77'            ,
+            'pgc'         => 'C'                     , # Postgres embedded C/C++
+            'php3'        => 'PHP'                   ,
+            'php4'        => 'PHP'                   ,
+            'php5'        => 'PHP'                   ,
+            'php'         => 'PHP'                   ,
+            'pig'         => 'Pig Latin'             ,
+            'plh'         => 'Perl'                  ,
+            'pl'          => 'Perl'                  ,
+            'PL'          => 'Perl'                  ,
+            'plx'         => 'Perl'                  ,
+            'pm'          => 'Perl'                  ,
+            'pom.xml'     => 'Maven'                 ,
+            'pom'         => 'Maven'                 ,
+            'p'           => 'Pascal'                ,
+            'pp'          => 'Pascal'                ,
+            'psql'        => 'SQL'                   ,
+            'py'          => 'Python'                ,
+            'pyx'         => 'Cython'                ,
+            'qml'         => 'QML'                   ,
+            'rb'          => 'Ruby'                  ,
+         #  'resx'        => 'ASP.Net'               ,
+            'rex'         => 'Oracle Reports'        ,
+            'rexx'        => 'Rexx'                  ,
+            'rhtml'       => 'Ruby HTML'             ,
+            'rs'          => 'Rust'                  ,
+            's'           => 'Assembly'              ,
+            'S'           => 'Assembly'              ,
+            'scala'       => 'Scala'                 ,
+            'sbl'         => 'Softbridge Basic'      ,
+            'SBL'         => 'Softbridge Basic'      ,
+            'sc'          => 'Lisp'                  ,
+            'scm'         => 'Lisp'                  ,
+            'sed'         => 'sed'                   ,
+            'ses'         => 'Patran Command Language'   ,
+            'pcl'         => 'Patran Command Language'   ,
+            'ps1'         => 'PowerShell'            ,
+            'sass'        => 'SASS'                  ,
+            'scss'        => 'SASS'                  ,
+            'sh'          => 'Bourne Shell'          ,
+            'smarty'      => 'Smarty'                ,
+            'sql'         => 'SQL'                   ,
+            'SQL'         => 'SQL'                   ,
+            'sproc.sql'   => 'SQL Stored Procedure'  ,
+            'spoc.sql'    => 'SQL Stored Procedure'  ,
+            'spc.sql'     => 'SQL Stored Procedure'  ,
+            'udf.sql'     => 'SQL Stored Procedure'  ,
+            'data.sql'    => 'SQL Data'              ,
+            'v'           => 'Verilog-SystemVerilog' ,
+            'sv'          => 'Verilog-SystemVerilog' ,
+            'svh'         => 'Verilog-SystemVerilog' ,
+            'tcl'         => 'Tcl/Tk'                ,
+            'tcsh'        => 'C Shell'               ,
+            'tk'          => 'Tcl/Tk'                ,
+            'tpl'         => 'Smarty'                ,
+            'trigger'     => 'Apex Trigger'          ,
+            'vala'        => 'Vala'                  ,
+            'vapi'        => 'Vala Header'           ,
+            'vhd'         => 'VHDL'                  ,
+            'VHD'         => 'VHDL'                  ,
+            'vhdl'        => 'VHDL'                  ,
+            'VHDL'        => 'VHDL'                  ,
+            'vba'         => 'Visual Basic'          ,
+            'VBA'         => 'Visual Basic'          ,
+         #  'vbp'         => 'Visual Basic'          , # .vbp - autogenerated
+            'vb'          => 'Visual Basic'          ,
+            'VB'          => 'Visual Basic'          ,
+         #  'vbw'         => 'Visual Basic'          , # .vbw - autogenerated
+            'vbs'         => 'Visual Basic'          ,
+            'VBS'         => 'Visual Basic'          ,
+            'webinfo'     => 'ASP.Net'               ,
+            'xml'         => 'XML'                   ,
+            'XML'         => 'XML'                   ,
+            'mxml'        => 'MXML'                  ,
+            'build'       => 'NAnt scripts'          ,
+            'vim'         => 'vim script'            ,
+            'xaml'        => 'XAML'                  ,
+            'xsd'         => 'XSD'                   ,
+            'XSD'         => 'XSD'                   ,
+            'xslt'        => 'XSLT'                  ,
+            'XSLT'        => 'XSLT'                  ,
+            'xsl'         => 'XSLT'                  ,
+            'XSL'         => 'XSLT'                  ,
+            'y'           => 'yacc'                  ,
+            'yaml'        => 'YAML'                  ,
+            'yml'         => 'YAML'                  ,
+            );
+# 1}}}
+%{$rh_Language_by_Script}    = (             # {{{1
+            'awk'      => 'awk'                   ,
+            'bash'     => 'Bourne Again Shell'    ,
+            'bc'       => 'bc'                    ,# calculator
+            'csh'      => 'C Shell'               ,
+            'dmd'      => 'D'                     ,
+            'idl'      => 'IDL'                   ,
+            'kermit'   => 'Kermit'                ,
+            'ksh'      => 'Korn Shell'            ,
+            'lua'      => 'Lua'                   ,
+            'make'     => 'make'                  ,
+            'octave'   => 'Octave'                ,
+            'perl5'    => 'Perl'                  ,
+            'perl'     => 'Perl'                  ,
+            'ruby'     => 'Ruby'                  ,
+            'sed'      => 'sed'                   ,
+            'sh'       => 'Bourne Shell'          ,
+            'tcl'      => 'Tcl/Tk'                ,
+            'tclsh'    => 'Tcl/Tk'                ,
+            'tcsh'     => 'C Shell'               ,
+            'wish'     => 'Tcl/Tk'                ,
+            );
+# 1}}}
+%{$rh_Language_by_File}      = (             # {{{1
+            'Makefile'       => 'make'               ,
+            'makefile'       => 'make'               ,
+            'gnumakefile'    => 'make'               ,
+            'Gnumakefile'    => 'make'               ,
+            'CMakeLists.txt' => 'CMake'              ,
+            'build.xml'      => 'Ant/XML'            ,
+            'pom.xml'        => 'Maven/XML'          ,
+            );
+# 1}}}
+%{$rhaa_Filters_by_Language} = (             # {{{1
+    'ABAP'               => [   [ 'remove_matches'      , '^\*'    ], ],
+    'ActionScript'       => [   
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                            ],
+
+    'ASP'                => [   [ 'remove_matches'      , '^\s*\47'], ],  # \47 = '
+    'ASP.Net'            => [   [ 'call_regexp_common'  , 'C'      ], ],
+    'Ada'                => [   [ 'remove_matches'      , '^\s*--' ], ],
+    'ADSO/IDSM'          => [   [ 'remove_matches'      , '^\s*\*[\+\!]' ], ],
+    'AMPLE'              => [   [ 'remove_matches'      , '^\s*//' ], ],
+    'Ant/XML'            => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], 
+                            ],
+    'Ant'                => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], 
+                            ],
+    'Apex Trigger'       => [
+                                [ 'remove_matches'      , '^\s*//' ],
+                                [ 'call_regexp_common'  , 'C'      ], 
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'Arduino Sketch'     => [   # same as C
+                                [ 'remove_matches'      , '^\s*//' ],
+                                [ 'call_regexp_common'  , 'C'      ], 
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ], 
+    'Assembly'           => [  
+                                [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_matches'      , '^\s*;'  ],
+                                [ 'call_regexp_common'  , 'C'      ], 
+                                [ 'remove_inline'       , '//.*$'  ], 
+                                [ 'remove_inline'       , ';.*$'   ],
+                            ],
+    'AutoHotkey'         => [   
+                                [ 'remove_matches'      , '^\s*;'  ],
+                                [ 'remove_inline'       , ';.*$'   ],
+                            ],
+    'awk'                => [   
+                                [ 'remove_matches'      , '^\s*#'  ], 
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ], 
+    'bc'                 => [   
+                                [ 'remove_matches'      , '^\s*#'  ], 
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ], 
+    'C'                  => [   
+                                [ 'remove_matches'      , '^\s*//' ], # C99
+                                [ 'call_regexp_common'  , 'C'      ], 
+                                [ 'remove_inline'       , '//.*$'  ], # C99
+                            ], 
+    'C++'                => [   
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'remove_inline'       , '//.*$'  ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                            ],
+    'C/C++ Header'       => [   
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'call_regexp_common'  , 'C'      ], 
+                                [ 'remove_inline'       , '//.*$'  ], 
+                            ],
+    'Clojure'            => [   [ 'remove_matches'      , '^\s*;'  ], ],
+    'ClojureScript'      => [   [ 'remove_matches'      , '^\s*;'  ], ],
+    'CMake'              => [   
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ], 
+                            ],
+    'Cython'             => [   
+                                [ 'remove_matches'      , '^\s*#'  ], 
+                                [ 'docstring_to_C'                 ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ], 
+    'C#'                 => [   
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_inline'       , '//.*$'  ], 
+                            ],
+    'CCS'                => [   [ 'call_regexp_common'  , 'C'      ], ],
+    'CSS'                => [   [ 'call_regexp_common'  , 'C'      ], ],
+    'COBOL'              => [   [ 'remove_cobol_comments',         ], ],
+    'CoffeeScript'       => [   
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ], 
+                            ],
+    'ColdFusion'         => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    'ColdFusion CFScript'=> [
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_inline'       , '//.*$'  ], 
+                            ],
+    'Crystal Reports'    => [   [ 'remove_matches'      , '^\s*//' ], ],
+    'D'                  => [   
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'remove_between_general', '/+', '+/' ],
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_inline'       , '//.*$'  ], 
+                            ],
+    'DAL'                => [   [ 'remove_between'      , '[]',    ], ],
+    'Dart'               => [   
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'remove_inline'       , '//.*$'  ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                            ],
+    'NASTRAN DMAP'       => [   
+                                [ 'remove_matches'      , '^\s*\$' ], 
+                                [ 'remove_inline'       , '\$.*$'  ], 
+                            ],
+    'DOS Batch'          => [   [ 'remove_matches'      , '^\s*rem', ], ],
+    'DTD'                => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    'Erlang'             => [   
+                                [ 'remove_matches'      , '^\s*%'  ], 
+                                [ 'remove_inline'       , '%.*$'   ],
+                            ],
+    'Expect'             => [   
+                                [ 'remove_matches'      , '^\s*#'  ], 
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ], 
+    'Focus'              => [   [ 'remove_matches'      , '^\s*\-\*'  ], ],
+    'Fortran 77'         => [   
+                                [ 'remove_f77_comments' ,          ], 
+                                [ 'remove_inline'       , '\!.*$'  ],
+                            ],
+    'Fortran 90'         => [   
+                                [ 'remove_f77_comments' ,          ],
+                                [ 'remove_f90_comments' ,          ], 
+                                [ 'remove_inline'       , '\!.*$'  ],
+                            ],
+    'Fortran 95'         => [   
+                                [ 'remove_f77_comments' ,          ],
+                                [ 'remove_f90_comments' ,          ], 
+                                [ 'remove_inline'       , '\!.*$'  ],
+                            ],
+    'Go'                 => [   
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'remove_inline'       , '//.*$'  ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                            ],
+    'Groovy'             => [   
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'remove_inline'       , '//.*$'  ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                            ],
+    'HTML'               => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    'Haskell'            => [   [ 'remove_haskell_comments', '>filename<' ], ],
+    'IDL'                => [   [ 'remove_matches'      , '^\s*;'  ], ],
+    'InstallShield'      => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    'JSP'                => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                                [ 'remove_jsp_comments' ,          ], 
+                                [ 'remove_matches'      , '^\s*//' ],
+                                [ 'add_newlines'        ,          ],
+                                [ 'call_regexp_common'  , 'C'      ],
+                            ],
+    'JavaServer Faces'   => [   
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_inline'       , '//.*$'  ], 
+                            ],
+    'Java'               => [   
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_inline'       , '//.*$'  ], 
+                            ],
+    'Javascript'         => [   
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_inline'       , '//.*$'  ], 
+                            ],
+    'JCL'                => [   [ 'remove_jcl_comments' ,          ], ],
+    'LESS'               => [
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_inline'       , '//.*$'  ], 
+                            ],
+    'Lisp'               => [   [ 'remove_matches'      , '^\s*;'  ], ],
+    'Lisp/OpenCL'        => [ [ 'die' ,          ], ], # never called
+    'LiveLink OScript'   => [   [ 'remove_matches'      , '^\s*//' ], ],
+#   'Lua'                => [   [ 'call_regexp_common'  , 'lua'    ], ],
+    'Lua'                => [   [ 'remove_matches'      , '^\s*\-\-' ], ],
+    'make'               => [   
+                                [ 'remove_matches'      , '^\s*#'  ], 
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ], 
+    'MATLAB'             => [   
+                                [ 'remove_matches'      , '^\s*%'  ], 
+                                [ 'remove_inline'       , '%.*$'   ],
+                            ], 
+    'Maven/XML'          => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], 
+                            ],
+    'Maven'              => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], 
+                            ],
+    'Modula3'            => [   [ 'call_regexp_common'  , 'Pascal' ], ],
+        # Modula 3 comments are (* ... *) so applying the Pascal filter
+        # which also treats { ... } as a comment is not really correct.
+    'Objective C'        => [   
+                                [ 'remove_matches'      , '^\s*//' ],
+                                [ 'call_regexp_common'  , 'C'      ], 
+                                [ 'remove_inline'       , '//.*$'  ], 
+                            ], 
+    'Objective C++'      => [   
+                                [ 'remove_matches'      , '^\s*//' ],
+                                [ 'call_regexp_common'  , 'C'      ], 
+                                [ 'remove_inline'       , '//.*$'  ], 
+                            ], 
+    'OCaml'              => [   
+                                [ 'call_regexp_common'  , 'Pascal' ], 
+                            ],
+    'OpenCL'             => [   
+                                [ 'remove_matches'      , '^\s*//' ], # C99
+                                [ 'call_regexp_common'  , 'C'      ], 
+                                [ 'remove_inline'       , '//.*$'  ], # C99
+                            ],
+    'PHP/Pascal'               => [ [ 'die' ,          ], ], # never called
+    'MATLAB/Objective C/MUMPS' => [ [ 'die' ,          ], ], # never called
+    'MUMPS'              => [   [ 'remove_matches'      , '^\s*;'  ], ], 
+    'Octave'             => [   
+                                [ 'remove_matches'      , '^\s*#'  ], 
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ], 
+    'Oracle Forms'       => [   [ 'call_regexp_common'  , 'C'      ], ],
+    'Oracle Reports'     => [   [ 'call_regexp_common'  , 'C'      ], ],
+    'Pascal'             => [   
+                                [ 'call_regexp_common'  , 'Pascal' ], 
+                                [ 'remove_matches'      , '^\s*//' ],
+                            ],
+    'Patran Command Language'=> [   
+                                [ 'remove_matches'      , '^\s*#'   ], 
+                                [ 'remove_matches'      , '^\s*\$#' ], 
+                                [ 'call_regexp_common'  , 'C'       ],
+                            ],
+    'Perl'               => [   [ 'remove_below'        , '^__(END|DATA)__'],
+                                [ 'remove_matches'      , '^\s*#'  ], 
+                                [ 'remove_below_above'  , '^=head1', '^=cut'  ], 
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ], 
+    'Pig Latin'          => [   
+                                [ 'remove_matches'      , '^\s*--' ],
+                                [ 'remove_inline'       , '--.*$'  ],
+                                [ 'call_regexp_common'  , 'C'       ],
+                            ],
+    'PowerShell'         => [ 
+                                [ 'powershell_to_C'                ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_matches'      , '^\s*#'  ], 
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ], 
+    'Python'             => [   
+                                [ 'remove_matches'      , '^\s*#'  ], 
+                                [ 'docstring_to_C'                 ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ], 
+    'PHP'                => [   
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'call_regexp_common'  , 'C'      ], 
+                                [ 'remove_inline'       , '#.*$'   ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'QML'                => [   
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_inline'       , '//.*$'  ], 
+                            ],
+    'Razor'              => [
+                                [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_between_general', '@*', '*@' ],
+                                [ 'call_regexp_common'  , 'C'      ], 
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ], 
+    'Rexx'               => [   [ 'call_regexp_common'  , 'C'      ], ],
+    'Ruby'               => [   
+                                [ 'remove_matches'      , '^\s*#'  ], 
+                                [ 'remove_below_above'  , '^=begin', '^=end' ], 
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ], 
+    'Ruby HTML'          => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    'Rust'               => [   
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'remove_inline'       , '//.*$'  ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                            ],
+    'SASS'               => [   
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_inline'       , '//.*$'  ], 
+                            ],
+    'Scala'              => [   
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'remove_inline'       , '//.*$'  ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                            ],
+    'SKILL'              => [   
+                                [ 'call_regexp_common'  , 'C'      ], 
+                                [ 'remove_matches'      , '^\s*;'  ],
+                            ],
+    'SKILL++'            => [   
+                                [ 'call_regexp_common'  , 'C'      ], 
+                                [ 'remove_matches'      , '^\s*;'  ],
+                            ],
+    'SQL'                => [   
+                                [ 'call_regexp_common'  , 'C'      ], 
+                                [ 'remove_matches'      , '^\s*--' ],
+                                [ 'remove_inline'       , '--.*$'  ],
+                            ],
+    'SQL Stored Procedure'=> [   
+                                [ 'call_regexp_common'  , 'C'      ], 
+                                [ 'remove_matches'      , '^\s*--' ],
+                                [ 'remove_inline'       , '--.*$'  ],
+                            ],
+    'SQL Data'           => [   
+                                [ 'call_regexp_common'  , 'C'      ], 
+                                [ 'remove_matches'      , '^\s*--' ],
+                                [ 'remove_inline'       , '--.*$'  ],
+                            ],
+    'sed'                => [   
+                                [ 'remove_matches'      , '^\s*#'  ], 
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ], 
+    'Smarty'             => [   
+                                [ 'smarty_to_C'                    ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                            ], 
+    'Bourne Again Shell' => [   
+                                [ 'remove_matches'      , '^\s*#'  ], 
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ], 
+    'Bourne Shell'       => [   
+                                [ 'remove_matches'      , '^\s*#'  ], 
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ], 
+    'm4'                 => [   [ 'remove_matches'      , '^dnl '  ], ], 
+    'C Shell'            => [   
+                                [ 'remove_matches'      , '^\s*#'  ], 
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ], 
+    'Kermit'             => [  
+                                [ 'remove_matches'      , '^\s*#'  ], 
+                                [ 'remove_matches'      , '^\s*;'  ], 
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ], 
+    'Korn Shell'         => [   
+                                [ 'remove_matches'      , '^\s*#'  ], 
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ], 
+    'Tcl/Tk'             => [   
+                                [ 'remove_matches'      , '^\s*#'  ], 
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ], 
+    'Teamcenter def'     => [   [ 'remove_matches'      , '^\s*#'  ], ], 
+    'Teamcenter met'     => [   [ 'call_regexp_common'  , 'C'      ], ],
+    'Teamcenter mth'     => [   [ 'remove_matches'      , '^\s*#'  ], ], 
+    'Softbridge Basic'   => [   [ 'remove_above'        , '^\s*Attribute\s+VB_Name\s+=' ],               
+                                [ 'remove_matches'      , '^\s*Attribute\s+'],
+                                [ 'remove_matches'      , '^\s*\47'], ],  # \47 = '
+    # http://www.altium.com/files/learningguides/TR0114%20VHDL%20Language%20Reference.pdf
+    'Vala'               => [   
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_inline'       , '//.*$'  ], 
+                            ],
+    'Vala Header'        => [   
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_inline'       , '//.*$'  ], 
+                            ],
+    'Verilog-SystemVerilog' => [
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'remove_inline'       , '//.*$'  ], 
+                                [ 'call_regexp_common'  , 'C'      ],
+                            ],
+    'VHDL'               => [   
+                                [ 'remove_matches'      , '^\s*--' ],
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'call_regexp_common'  , 'C'      ], 
+                                [ 'remove_inline'       , '--.*$'  ],
+                                [ 'remove_inline'       , '//.*$'  ], 
+                            ],
+    'vim script'         => [   
+                                [ 'remove_matches'      , '^\s*"'  ], 
+                                [ 'remove_inline'       , '".*$'   ], 
+                            ],
+    'Visual Basic'       => [   [ 'remove_above'        , '^\s*Attribute\s+VB_Name\s+=' ],               
+                                [ 'remove_matches'      , '^\s*Attribute\s+'],
+                                [ 'remove_matches'      , '^\s*\47'], ],  # \47 = '
+    'Visualforce Component' => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], 
+                            ],
+    'Visualforce Page'   => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], 
+                            ],
+    'yacc'               => [   
+                                [ 'call_regexp_common'  , 'C'      ], 
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'remove_inline'       , '//.*$'  ], 
+                            ],
+    'YAML'               => [   
+                                [ 'remove_matches'      , '^\s*#'  ], 
+                                [ 'remove_inline'       , '#.*$'   ], 
+                            ],
+    'lex'                => [   [ 'call_regexp_common'  , 'C'      ], ],
+    'XAML'               => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    'MXML'               => [   
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], 
+                                [ 'remove_matches'      , '^\s*//' ], 
+                                [ 'add_newlines'        ,          ], 
+                                [ 'call_regexp_common'  , 'C'      ], 
+                            ],
+    'XML'                => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    'XSD'                => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    'XSLT'               => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    'NAnt scripts'       => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    'MSBuild scripts'    => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    );
+# 1}}}
+%{$rh_EOL_continuation_re} = (               # {{{1
+    'ActionScript'       =>     '\\\\$'         ,
+    'Assembly'           =>     '\\\\$'         ,
+    'ASP'                =>     '\\\\$'         ,
+    'ASP.Net'            =>     '\\\\$'         ,
+    'Ada'                =>     '\\\\$'         ,
+    'awk'                =>     '\\\\$'         ,
+    'bc'                 =>     '\\\\$'         ,
+    'C'                  =>     '\\\\$'         ,
+    'C++'                =>     '\\\\$'         ,
+    'C/C++ Header'       =>     '\\\\$'         ,
+    'CMake'              =>     '\\\\$'         ,
+    'Cython'             =>     '\\\\$'         ,
+    'C#'                 =>     '\\\\$'         ,
+    'D'                  =>     '\\\\$'         ,
+    'Dart'               =>     '\\\\$'         ,
+    'Expect'             =>     '\\\\$'         ,
+    'Go'                 =>     '\\\\$'         ,
+    'Java'               =>     '\\\\$'         ,
+    'Javascript'         =>     '\\\\$'         ,
+    'LESS'               =>     '\\\\$'         ,
+    'Lua'                =>     '\\\\$'         ,
+    'make'               =>     '\\\\$'         ,
+    'MATLAB'             =>     '\.\.\.\s*$'    ,
+    'MXML'               =>     '\\\\$'         ,
+    'Objective C'        =>     '\\\\$'         ,
+    'Objective C++'      =>     '\\\\$'         ,
+    'OCaml'              =>     '\\\\$'         ,
+    'Octave'             =>     '\.\.\.\s*$'    ,
+    'Patran Command Language'=> '\\\\$'         ,
+    'PowerShell'         =>     '\\\\$'         ,
+    'Python'             =>     '\\\\$'         ,
+    'Ruby'               =>     '\\\\$'         ,
+    'sed'                =>     '\\\\$'         ,
+    'Bourne Again Shell' =>     '\\\\$'         ,
+    'Bourne Shell'       =>     '\\\\$'         ,
+    'C Shell'            =>     '\\\\$'         ,
+    'Kermit'             =>     '\\\\$'         ,
+    'Korn Shell'         =>     '\\\\$'         ,
+    'Tcl/Tk'             =>     '\\\\$'         ,
+    'lex'                =>     '\\\\$'         ,
+    'Vala'               =>     '\\\\$'         ,
+    'Vala Header'        =>     '\\\\$'         ,
+    );
+# 1}}}
+%{$rh_Not_Code_Extension}    = (             # {{{1
+   '1'       => 1,  # Man pages (documentation):
+   '2'       => 1,
+   '3'       => 1,
+   '4'       => 1,
+   '5'       => 1,
+   '6'       => 1,
+   '7'       => 1,
+   '8'       => 1,
+   '9'       => 1,
+   'a'       => 1,  # Static object code.
+   'ad'      => 1,  # X application default resource file.
+   'afm'     => 1,  # font metrics
+   'arc'     => 1,  # arc(1) archive
+   'arj'     => 1,  # arj(1) archive
+   'au'      => 1,  # Audio sound filearj(1) archive
+   'bak'     => 1,  # Backup files - we only want to count the "real" files.
+   'bdf'     => 1,
+   'bmp'     => 1,
+   'bz2'     => 1,  # bzip2(1) compressed file
+   'csv'     => 1,  # comma separated values
+   'desktop' => 1,
+   'dic'     => 1,
+   'doc'     => 1,
+   'elc'     => 1,
+   'eps'     => 1,
+   'fig'     => 1,
+   'gif'     => 1,
+   'gz'      => 1,
+   'hdf'     => 1,  # hierarchical data format
+   'in'      => 1,  # Debatable.
+   'jpg'     => 1,
+   'kdelnk'  => 1,
+   'man'     => 1,
+   'mf'      => 1,
+   'mp3'     => 1,
+   'n'       => 1,
+   'o'       => 1,  # Object code is generated from source code.
+   'pbm'     => 1,
+   'pdf'     => 1,
+   'pfb'     => 1,
+   'png'     => 1,
+   'po'      => 1,
+   'ps'      => 1,  # Postscript is _USUALLY_ generated automatically.
+   'sgm'     => 1,
+   'sgml'    => 1,
+   'so'      => 1,  # Dynamically-loaded object code.
+   'Tag'     => 1,
+   'tex'     => 1,
+   'text'    => 1,
+   'tfm'     => 1,
+   'tgz'     => 1,  # gzipped tarball
+   'tiff'    => 1,
+   'txt'     => 1, 
+   'vf'      => 1,
+   'wav'     => 1,
+   'xbm'     => 1,
+   'xpm'     => 1,
+   'Y'       => 1,  # file compressed with "Yabba"
+   'Z'       => 1,  # file compressed with "compress"
+   'zip'     => 1,  # zip archive
+); # 1}}}
+%{$rh_Not_Code_Filename}     = (             # {{{1
+   'AUTHORS'     => 1,
+   'BUGS'        => 1,
+   'BUGS'        => 1,
+   'Changelog'   => 1,
+   'ChangeLog'   => 1,
+   'ChangeLog'   => 1,
+   'Changes'     => 1,
+   'CHANGES'     => 1,
+   'COPYING'     => 1,
+   'COPYING'     => 1,
+   '.cvsignore'  => 1,
+   'Entries'     => 1,
+   'FAQ'         => 1,
+   'iconfig.h'   => 1, # Skip "iconfig.h" files; they're used in Imakefiles.
+   'INSTALL'     => 1,
+   'MAINTAINERS' => 1,
+   'MD5SUMS'     => 1,
+   'NEWS'        => 1,
+   'readme'      => 1,
+   'Readme'      => 1,
+   'README'      => 1,
+   'README.tk'   => 1, # used in kdemultimedia, it's confusing.
+   'Repository'  => 1,
+   'Root'        => 1, # CVS
+   'TODO'        => 1,
+);
+# 1}}}
+%{$rh_Scale_Factor}          = (             # {{{1
+    '1032/af'                      =>   5.00,
+    '1st generation default'       =>   0.25,
+    '2nd generation default'       =>   0.75,
+    '3rd generation default'       =>   1.00,
+    '4th generation default'       =>   4.00,
+    '5th generation default'       =>  16.00,
+    'aas macro'                    =>   0.88,
+    'abap/4'                       =>   5.00,
+    'ABAP'                         =>   5.00,
+    'accel'                        =>   4.21,
+    'access'                       =>   2.11,
+    'ActionScript'                 =>   1.36,
+    'actor'                        =>   3.81,
+    'acumen'                       =>   2.86,
+    'Ada'                          =>   0.52,
+    'Ada 83'                       =>   1.13,
+    'Ada 95'                       =>   1.63,
+    'adr/dl'                       =>   2.00,
+    'adr/ideal/pdl'                =>   4.00,
+    'ads/batch'                    =>   4.00,
+    'ads/online'                   =>   4.00,
+    'ADSO/IDSM'                    =>   3.00,
+    'advantage'                    =>   2.11,
+    'ai shell default'             =>   1.63,
+    'ai shells'                    =>   1.63,
+    'algol 68'                     =>   0.75,
+    'algol w'                      =>   0.75,
+    'ambush'                       =>   2.50,
+    'aml'                          =>   1.63,
+    'AMPLE'                        =>   2.00,
+    'Ant/XML'                      =>   1.90,
+    'Ant'                          =>   1.90,
+    'amppl ii'                     =>   1.25,
+    'ansi basic'                   =>   1.25,
+    'ansi cobol 74'                =>   0.75,
+    'ansi cobol 85'                =>   0.88,
+    'SQL'                          =>   6.15,
+    'SQL Stored Procedure'         =>   6.15,
+    'SQL Data'                     =>   1.00,
+    'answer/db'                    =>   6.15,
+    'apl 360/370'                  =>   2.50,
+    'apl default'                  =>   2.50,
+    'apl*plus'                     =>   2.50,
+    'applesoft basic'              =>   0.63,
+    'application builder'          =>   4.00,
+    'application manager'          =>   2.22,
+    'aps'                          =>   0.96,
+    'aps'                          =>   4.71,
+    'apt'                          =>   1.13,
+    'aptools'                      =>   4.00,
+    'arc'                          =>   1.63,
+    'ariel'                        =>   0.75,
+    'arity'                        =>   1.63,
+    'arity prolog'                 =>   1.25,
+    'art'                          =>   1.63,
+    'art enterprise'               =>   1.74,
+    'artemis'                      =>   2.00,
+    'artim'                        =>   1.74,
+    'as/set'                       =>   4.21,
+    'asi/inquiry'                  =>   6.15,
+    'ask windows'                  =>   1.74,
+'asa'                         =>   1.29,
+'ASP'                         =>   1.29,
+'ASP.Net'                     =>   1.29,
+'aspx'                        =>   1.29,
+#'resx'                        =>   1.29,
+'asax'                        =>   1.29,
+'ascx'                        =>   1.29,
+'asmx'                        =>   1.29,
+'config'                      =>   1.29,
+'webinfo'                     =>   1.29,
+'CCS'                         =>   5.33,
+
+    'Apex Trigger'                 =>   1.4 ,
+#   'assembler (basic)'            =>   0.25,
+    'Arduino Sketch'               =>   1.00,
+    'Assembly'                     =>   0.25,
+
+    'Assembly (macro)'             =>   0.51,
+    'associative default'          =>   1.25,
+    'autocoder'                    =>   0.25,
+    'AutoHotkey'                   =>   1.29,
+    'awk'                          =>   3.81,
+    'aztec c'                      =>   0.63,
+    'balm'                         =>   0.75,
+    'base sas'                     =>   1.51,
+    'basic'                        =>   0.75,
+    'basic a'                      =>   0.63,
+#   'basic assembly'               =>   0.25,
+    'bc'                           =>   1.50,
+    'berkeley pascal'              =>   0.88,
+    'better basic'                 =>   0.88,
+    'bliss'                        =>   0.75,
+    'bmsgen'                       =>   2.22,
+    'boeingcalc'                   =>  13.33,
+    'bteq'                         =>   6.15,
+
+    'C'                            =>   0.77,
+
+    'c set 2'                      =>   0.88,
+
+    'C#'                           =>   1.36,
+
+    'C++'                          =>   1.51,
+
+    'c86plus'                      =>   0.63,
+    'cadbfast'                     =>   2.00,
+    'caearl'                       =>   2.86,
+    'cast'                         =>   1.63,
+    'cbasic'                       =>   0.88,
+    'cdadl'                        =>   4.00,
+    'cellsim'                      =>   1.74,
+    'ColdFusion'                   =>   4.00,
+    'ColdFusion CFScript'          =>   4.00,
+    'chili'                        =>   0.75,
+    'chill'                        =>   0.75,
+    'cics'                         =>   1.74,
+    'clarion'                      =>   1.38,
+    'clascal'                      =>   1.00,
+    'cli'                          =>   2.50,
+    'clipper'                      =>   2.05,
+    'clipper db'                   =>   2.00,
+    'clos'                         =>   3.81,
+    'Clojure'                      =>   1.25,
+    'ClojureScript'                =>   1.25,
+    'clout'                        =>   2.00,
+    'CMake'                        =>   1.00,
+    'cms2'                         =>   0.75,
+    'cmsgen'                       =>   4.21,
+    'COBOL'                        =>   1.04,
+    'COBOL ii'                     =>   0.75,
+    'COBOL/400'                    =>   0.88,
+    'cobra'                        =>   4.00,
+    'codecenter'                   =>   2.22,
+    'cofac'                        =>   2.22,
+    'CoffeeScript'                 =>   2.00,
+    'cogen'                        =>   2.22,
+    'cognos'                       =>   2.22,
+    'cogo'                         =>   1.13,
+    'comal'                        =>   1.00,
+    'comit ii'                     =>   1.25,
+    'common lisp'                  =>   1.25,
+    'concurrent pascal'            =>   1.00,
+    'conniver'                     =>   1.25,
+    'cool:gen/ief'                 =>   2.58,
+    'coral 66'                     =>   0.75,
+    'corvet'                       =>   4.21,
+    'corvision'                    =>   5.33,
+    'cpl'                          =>   0.50,
+    'Crystal Reports'              =>   4.00,
+    'csl'                          =>   1.63,
+    'csp'                          =>   1.51,
+    'cssl'                         =>   1.74,
+    
+'CSS' => 1.0,
+    
+    'culprit'                      =>   1.57,
+    'cxpert'                       =>   1.63,
+    'cygnet'                       =>   4.21,
+    'D'                            =>   1.70,
+    'DAL'                          =>   1.50,
+    'Dart'                         =>   2.00,
+    'data base default'            =>   2.00,
+    'dataflex'                     =>   2.00,
+    'datatrieve'                   =>   4.00,
+    'dbase iii'                    =>   2.00,
+    'dbase iv'                     =>   1.54,
+    'dcl'                          =>   0.38,
+    'decision support default'     =>   2.22,
+    'decrally'                     =>   2.00,
+    'delphi'                       =>   2.76,
+    'dl/1'                         =>   2.00,
+    'NASTRAN DMAP'                 =>   2.35,
+    'dna4'                         =>   4.21,
+    'DOS Batch'                    =>   0.63,
+    'dsp assembly'                 =>   0.50,
+    'dtabl'                        =>   1.74,
+    'dtipt'                        =>   1.74,
+    'dyana'                        =>   1.13,
+    'dynamoiii'                    =>   1.74,
+    'easel'                        =>   2.76,
+    'easy'                         =>   1.63,
+    'easytrieve+'                  =>   2.35,
+    'eclipse'                      =>   1.63,
+    'eda/sql'                      =>   6.67,
+    'edscheme 3.4'                 =>   1.51,
+    'eiffel'                       =>   3.81,
+    'enform'                       =>   1.74,
+    'englishbased default'         =>   1.51,
+    'ensemble'                     =>   2.76,
+    'epos'                         =>   4.00,
+    'Erlang'                       =>   2.11,
+    'esf'                          =>   2.00,
+    'espadvisor'                   =>   1.63,
+    'espl/i'                       =>   1.13,
+    'euclid'                       =>   0.75,
+    'excel'                        =>   1.74,
+    'excel 12'                     =>  13.33,
+    'excel 34'                     =>  13.33,
+    'excel 5'                      =>  13.33,
+    'express'                      =>   2.22,
+    'exsys'                        =>   1.63,
+    'extended common lisp'         =>   1.43,
+    'eznomad'                      =>   2.22,
+    'facets'                       =>   4.00,
+    'factorylink iv'               =>   2.76,
+    'fame'                         =>   2.22,
+    'filemaker pro'                =>   2.22,
+    'flavors'                      =>   2.76,
+    'flex'                         =>   1.74,
+    'flexgen'                      =>   2.76,
+    'Focus'                        =>   1.90,
+    'foil'                         =>   1.51,
+    'forte'                        =>   4.44,
+    'forth'                        =>   1.25,
+    'Fortran 66'                   =>   0.63,
+    'Fortran 77'                   =>   0.75,
+    'Fortran 90'                   =>   1.00,
+    'Fortran 95'                   =>   1.13,
+    'Fortran II'                   =>   0.63,
+    'foundation'                   =>   2.76,
+    'foxpro'                       =>   2.29,
+    'foxpro 1'                     =>   2.00,
+    'foxpro 2.5'                   =>   2.35,
+    'framework'                    =>  13.33,
+    'g2'                           =>   1.63,
+    'gamma'                        =>   5.00,
+    'genascript'                   =>   2.96,
+    'gener/ol'                     =>   6.15,
+    'genexus'                      =>   5.33,
+    'genifer'                      =>   4.21,
+    'geode 2.0'                    =>   5.00,
+    'gfa basic'                    =>   2.35,
+    'gml'                          =>   1.74,
+    'golden common lisp'           =>   1.25,
+    'gpss'                         =>   1.74,
+    'guest'                        =>   2.86,
+    'guru'                         =>   1.63,
+    'Go'                           =>   2.50,
+    'Groovy'                       =>   4.10,
+    'gw basic'                     =>   0.82,
+    'Haskell'                      =>   2.11,
+    'high c'                       =>   0.63,
+    'hlevel'                       =>   1.38,
+    'hp basic'                     =>   0.63,
+
+'HTML'          => 1.90 ,
+'XML'           => 1.90 ,
+'MXML'          => 1.90 ,
+'XSLT'          => 1.90 ,
+'DTD'           => 1.90 ,
+'XSD'           => 1.90 ,
+'NAnt scripts'    => 1.90 ,
+'MSBuild scripts' => 1.90 , 
+
+    'HTML 2'                       =>   5.00,
+    'HTML 3'                       =>   5.33,
+    'huron'                        =>   5.00,
+    'ibm adf i'                    =>   4.00,
+    'ibm adf ii'                   =>   4.44,
+    'ibm advanced basic'           =>   0.82,
+    'ibm cics/vs'                  =>   2.00,
+    'ibm compiled basic'           =>   0.88,
+    'ibm vs cobol'                 =>   0.75,
+    'ibm vs cobol ii'              =>   0.88,
+    'ices'                         =>   1.13,
+    'icon'                         =>   1.00,
+    'ideal'                        =>   1.54,
+    'idms'                         =>   2.00,
+    'ief'                          =>   5.71,
+    'ief/cool:gen'                 =>   2.58,
+    'iew'                          =>   5.71,
+    'ifps/plus'                    =>   2.50,
+    'imprs'                        =>   2.00,
+    'informix'                     =>   2.58,
+    'ingres'                       =>   2.00,
+    'inquire'                      =>   6.15,
+    'insight2'                     =>   1.63,
+    'install/1'                    =>   5.00,
+    'InstallShield'                =>   1.90,
+    'intellect'                    =>   1.51,
+    'interlisp'                    =>   1.38,
+    'interpreted basic'            =>   0.75,
+    'interpreted c'                =>   0.63,
+    'iqlisp'                       =>   1.38,
+    'iqrp'                         =>   6.15,
+    'j2ee'                         =>   1.60,
+    'janus'                        =>   1.13,
+    'Java'                         =>   1.36,
+    'Javascript'                   =>   1.48,
+    'JavaServer Faces'             =>   1.5 ,
+    'JSP'                          =>   1.48,
+    'JCL'                          =>   1.67,
+    'joss'                         =>   0.75,
+    'jovial'                       =>   0.75,
+    'jsp'                          =>   1.36,
+    'kappa'                        =>   2.00,
+    'kbms'                         =>   1.63,
+    'kcl'                          =>   1.25,
+    'kee'                          =>   1.63,
+    'keyplus'                      =>   2.00,
+    'kl'                           =>   1.25,
+    'klo'                          =>   1.25,
+    'knowol'                       =>   1.63,
+    'krl'                          =>   1.38,
+    'Kermit'                       =>   2.00,
+    'Korn Shell'                   =>   3.81,
+    'ladder logic'                 =>   2.22,
+    'lambit/l'                     =>   1.25,
+    'lattice c'                    =>   0.63,
+    'LESS'                         =>   1.50,
+    'liana'                        =>   0.63,
+    'lilith'                       =>   1.13,
+    'linc ii'                      =>   5.71,
+    'Lisp'                         =>   1.25,
+    'LiveLink OScript'             =>   3.5 ,
+    'loglisp'                      =>   1.38,
+    'loops'                        =>   3.81,
+    'lotus 123 dos'                =>  13.33,
+    'lotus macros'                 =>   0.75,
+    'lotus notes'                  =>   3.64,
+    'lucid 3d'                     =>  13.33,
+    'lyric'                        =>   1.51,
+    'm4'                           =>   1.00,
+    'm'                            =>   5.00,
+    'macforth'                     =>   1.25,
+    'mach1'                        =>   2.00,
+    'machine language'             =>   0.13,
+    'maestro'                      =>   5.00,
+    'magec'                        =>   5.00,
+    'magik'                        =>   3.81,
+    'Lake'                         =>   3.81,
+    'make'                         =>   2.50,
+    'mantis'                       =>   2.96,
+    'mapper'                       =>   0.99,
+    'mark iv'                      =>   2.00,
+    'mark v'                       =>   2.22,
+    'mathcad'                      =>  16.00,
+    'Maven'                        =>   1.90,
+    'mdl'                          =>   2.22,
+    'mentor'                       =>   1.51,
+    'mesa'                         =>   0.75,
+    'microfocus cobol'             =>   1.00,
+    'microforth'                   =>   1.25,
+    'microsoft c'                  =>   0.63,
+    'microstep'                    =>   4.00,
+    'miranda'                      =>   2.00,
+    'model 204'                    =>   2.11,
+    'modula 2'                     =>   1.00,
+    'mosaic'                       =>  13.33,
+    # 'ms c ++ v. 7'                 =>   1.51,
+    'ms compiled basic'            =>   0.88,
+    'msl'                          =>   1.25,
+    'mulisp'                       =>   1.25,
+    'MUMPS'                        =>   4.21,
+    'Nastran'                      =>   1.13,
+    'natural'                      =>   1.54,
+    'natural 1'                    =>   1.51,
+    'natural 2'                    =>   1.74,
+    'natural construct'            =>   3.20,
+    'natural language'             =>   0.03,
+    'netron/cap'                   =>   4.21,
+    'nexpert'                      =>   1.63,
+    'nial'                         =>   1.63,
+    'nomad2'                       =>   2.00,
+    'nonprocedural default'        =>   2.22,
+    'notes vip'                    =>   2.22,
+    'nroff'                        =>   1.51,
+    'object assembler'             =>   1.25,
+    'object lisp'                  =>   2.76,
+    'object logo'                  =>   2.76,
+    'object pascal'                =>   2.76,
+    'object star'                  =>   5.00,
+    'Objective C'                  =>   2.96,
+    'Objective C++'                =>   2.96,
+    'objectoriented default'       =>   2.76,
+    'objectview'                   =>   3.20,
+    'OCaml'                        =>   3.00,
+    'ogl'                          =>   1.00,
+    'omnis 7'                      =>   2.00,
+    'oodl'                         =>   2.76,
+    'ops'                          =>   1.74,
+    'ops5'                         =>   1.38,
+    'oracle'                       =>   2.76,
+    'Oracle Reports'               =>   2.76,
+    'Oracle Forms'                 =>   2.67,
+    'Oracle Developer/2000'        =>   3.48,
+    'oscar'                        =>   0.75,
+    'pacbase'                      =>   1.67,
+    'pace'                         =>   2.00,
+    'paradox/pal'                  =>   2.22,
+    'Pascal'                       =>   0.88,
+    'Patran Command Language'      =>   2.50,
+    'pc focus'                     =>   2.22,
+    'pdl millenium'                =>   3.81,
+    'pdp11 ade'                    =>   1.51,
+    'peoplesoft'                   =>   2.50,
+    'Perl'                         =>   4.00,
+    'persistance object builder'   =>   3.81,
+    'Pig Latin'                    =>   1.00,
+    'pilot'                        =>   1.51,
+    'pl/1'                         =>   1.38,
+    'pl/m'                         =>   1.13,
+    'pl/s'                         =>   0.88,
+    'pl/sql'                       =>   2.58,
+    'planit'                       =>   1.51,
+    'planner'                      =>   1.25,
+    'planperfect 1'                =>  11.43,
+    'plato'                        =>   1.51,
+    'polyforth'                    =>   1.25,
+    'pop'                          =>   1.38,
+    'poplog'                       =>   1.38,
+    'power basic'                  =>   1.63,
+    'powerbuilder'                 =>   3.33,
+    'powerhouse'                   =>   5.71,
+    'PowerShell'                   =>   3.00,
+    'ppl (plus)'                   =>   2.00,
+    'problemoriented default'      =>   1.13,
+    'proc'                         =>   2.96,
+    'procedural default'           =>   0.75,
+    'professional pascal'          =>   0.88,
+    'program generator default'    =>   5.00,
+    'progress v4'                  =>   2.22,
+    'proiv'                        =>   1.38,
+    'prolog'                       =>   1.25,
+    'prose'                        =>   0.75,
+    'proteus'                      =>   0.75,
+    'qbasic'                       =>   1.38,
+    'qbe'                          =>   6.15,
+    'qmf'                          =>   5.33,
+    'QML'                          =>   1.25,
+    'qnial'                        =>   1.63,
+    'quattro'                      =>  13.33,
+    'quattro pro'                  =>  13.33,
+    'query default'                =>   6.15,
+    'quick basic 1'                =>   1.25,
+    'quick basic 2'                =>   1.31,
+    'quick basic 3'                =>   1.38,
+    'quick c'                      =>   0.63,
+    'quickbuild'                   =>   2.86,
+    'quiz'                         =>   5.33,
+    'rally'                        =>   2.00,
+    'ramis ii'                     =>   2.00,
+    'rapidgen'                     =>   2.86,
+    'ratfor'                       =>   0.88,
+    'rdb'                          =>   2.00,
+    'realia'                       =>   1.74,
+    'realizer 1.0'                 =>   2.00,
+    'realizer 2.0'                 =>   2.22,
+    'relate/3000'                  =>   2.00,
+    'reuse default'                =>  16.00,
+    'Razor'                        =>   2.00,
+    'Rexx'                         =>   1.19,
+    'Rexx (mvs)'                   =>   1.00,
+    'Rexx (os/2)'                  =>   1.74,
+    'rm basic'                     =>   0.88,
+    'rm cobol'                     =>   0.75,
+    'rm fortran'                   =>   0.75,
+    'rpg i'                        =>   1.00,
+    'rpg ii'                       =>   1.63,
+    'rpg iii'                      =>   1.63,
+    'rtexpert 1.4'                 =>   1.38,
+    'Rust'                         =>   1.00,
+    'sabretalk'                    =>   0.90,
+    'sail'                         =>   0.75,
+    'sapiens'                      =>   5.00,
+    'sas'                          =>   1.95,
+    'savvy'                        =>   6.15,
+    'sbasic'                       =>   0.88,
+    'Scala'                        =>   4.10,
+    'sceptre'                      =>   1.13,
+    'scheme'                       =>   1.51,
+    'screen painter default'       =>  13.33,
+    'sequal'                       =>   6.67,
+    'Bourne Shell'                 =>   3.81,
+    'Bourne Again Shell'           =>   3.81,
+    'ksh'                          =>   3.81,
+    'C Shell'                      =>   3.81,
+    'siebel tools '                =>   6.15,
+    'SASS'                         =>   1.5 ,
+    'simplan'                      =>   2.22,
+    'simscript'                    =>   1.74,
+    'simula'                       =>   1.74,
+    'simula 67'                    =>   1.74,
+    'simulation default'           =>   1.74,
+    'SKILL'                        =>   2.00,
+    'SKILL++'                      =>   2.00,
+    'slogan'                       =>   0.98,
+    'smalltalk'                    =>   2.50,
+    'smalltalk 286'                =>   3.81,
+    'smalltalk 80'                 =>   3.81,
+    'smalltalk/v'                  =>   3.81,
+    'Smarty'                       =>   3.50,
+    'snap'                         =>   1.00,
+    'snobol24'                     =>   0.63,
+    'softscreen'                   =>   5.71,
+    'Softbridge Basic'             =>   2.76,
+    'solo'                         =>   1.38,
+    'speakeasy'                    =>   2.22,
+    'spinnaker ppl'                =>   2.22,
+    'splus'                        =>   2.50,
+    'spreadsheet default'          =>  13.33,
+    'sps'                          =>   0.25,
+    'spss'                         =>   2.50,
+    'SQL'                          =>   2.29,
+    'sqlwindows'                   =>   6.67,
+    'statistical default'          =>   2.50,
+    'strategem'                    =>   2.22,
+    'stress'                       =>   1.13,
+    'strongly typed default'       =>   0.88,
+    'style'                        =>   1.74,
+    'superbase 1.3'                =>   2.22,
+    'surpass'                      =>  13.33,
+    'sybase'                       =>   2.00,
+    'symantec c++'                 =>   2.76,
+    'symbolang'                    =>   1.25,
+    'synchroworks'                 =>   4.44,
+    'synon/2e'                     =>   4.21,
+    'systemw'                      =>   2.22,
+    'tandem access language'       =>   0.88,
+    'Tcl/Tk'                       =>   4.00,
+    'Teamcenter def'               =>   1.00,
+    'Teamcenter met'               =>   1.00,
+    'Teamcenter mth'               =>   1.00,
+    'telon'                        =>   5.00,
+    'tessaract'                    =>   2.00,
+    'the twin'                     =>  13.33,
+    'themis'                       =>   6.15,
+    'tiief'                        =>   5.71,
+    'topspeed c++'                 =>   2.76,
+    'transform'                    =>   5.33,
+    'translisp plus'               =>   1.43,
+    'treet'                        =>   1.25,
+    'treetran'                     =>   1.25,
+    'trs80 basic'                  =>   0.63,
+    'true basic'                   =>   1.25,
+    'turbo c'                      =>   0.63,
+    # 'turbo c++'                    =>   1.51,
+    'turbo expert'                 =>   1.63,
+    'turbo pascal >5'              =>   1.63,
+    'turbo pascal 14'              =>   1.00,
+    'turbo pascal 45'              =>   1.13,
+    'turbo prolog'                 =>   1.00,
+    'turing'                       =>   1.00,
+    'tutor'                        =>   1.51,
+    'twaice'                       =>   1.63,
+    'ucsd pascal'                  =>   0.88,
+    'ufo/ims'                      =>   2.22,
+    'uhelp'                        =>   2.50,
+    'uniface'                      =>   5.00,
+    # 'unix shell scripts'           =>   3.81,
+    'Vala'                         =>   1.50,
+    'Vala Header'                  =>   1.40,
+    'vax acms'                     =>   1.38,
+    'vax ade'                      =>   2.00,
+    'vbscript'                     =>   2.35,
+    'vectran'                      =>   0.75,
+    'Verilog-SystemVerilog'        =>   1.51,
+    'VHDL'                         =>   4.21,
+    'vim script'                   =>   3.00,
+    'visible c'                    =>   1.63,
+    'visible cobol'                =>   2.00,
+    'visicalc 1'                   =>   8.89,
+    'visual 4.0'                   =>   2.76,
+    'visual basic'                 =>   1.90,
+    'visual basic 1'               =>   1.74,
+    'visual basic 2'               =>   1.86,
+    'visual basic 3'               =>   2.00,
+    'visual basic 4'               =>   2.22,
+    'visual basic 5'               =>   2.76,
+    'Visual Basic'                 =>   2.76,
+    'visual basic dos'             =>   2.00,
+    'visual c++'                   =>   2.35,
+    'visual cobol'                 =>   4.00,
+    'visual objects'               =>   5.00,
+    'visualage'                    =>   3.81,
+    'Visualforce Component'        =>   1.9 ,
+    'Visualforce Page'             =>   1.9 ,
+    'visualgen'                    =>   4.44,
+    'vpf'                          =>   0.84,
+    'vsrexx'                       =>   2.50,
+    'vulcan'                       =>   1.25,
+    'vz programmer'                =>   2.22,
+    'warp x'                       =>   2.00,
+    'watcom c'                     =>   0.63,
+    'watcom c/386'                 =>   0.63,
+    'waterloo c'                   =>   0.63,
+    'waterloo pascal'              =>   0.88,
+    'watfiv'                       =>   0.94,
+    'watfor'                       =>   0.88,
+    'web scripts'                  =>   5.33,
+    'whip'                         =>   0.88,
+    'wizard'                       =>   2.86,
+    'xlisp'                        =>   1.25,
+    'XAML'                         =>   1.90,
+    'yacc'                         =>   1.51,
+    'yacc++'                       =>   1.51,
+    'YAML'                         =>   0.90,
+    'zbasic'                       =>   0.88,
+    'zim'                          =>   4.21,
+    'zlisp'                        =>   1.25,
+
+'Expect'  => 2.00,
+'C/C++ Header'  => 1.00, 
+'inc'     => 1.00,
+'lex'     => 1.00,
+'MATLAB'  => 4.00,
+'Maven/XML' => 2.5,
+'IDL'     => 3.80,
+'Octave'  => 4.00,
+'ML'      => 3.00,
+'Modula3' => 2.00,
+'PHP'     => 3.50,
+'Python'  => 4.20,
+'Cython'  => 3.80,
+'Ruby'    => 4.20,
+'Ruby HTML' => 4.00,
+'sed'     => 4.00,
+'Lua'     => 4.00,
+'OpenCL'  => 1.50,
+);
+# 1}}}
+%{$rh_Known_Binary_Archives} = (             # {{{1
+            '.tar'     => 1 ,
+            '.tar.Z'   => 1 ,
+            '.tar.gz'  => 1 ,
+            '.tar.bz2' => 1 ,
+            '.zip'     => 1 ,
+            '.Zip'     => 1 ,
+            '.ZIP'     => 1 ,
+            '.ear'     => 1 ,  # Java
+            '.war'     => 1 ,  # contained within .ear
+            '.xz'      => 1 ,
+            );
+# 1}}}
+} # end sub set_constants()
+sub Install_Regexp_Common {                  # {{{1
+    # Installs portions of Damian Conway's & Abigail's Regexp::Common
+    # module, v2.120, into a temporary directory for the duration of
+    # this run.
+
+    my %Regexp_Common_Contents = ();
+$Regexp_Common_Contents{'Common'} = <<'EOCommon'; # {{{2
+package Regexp::Common;
+
+use 5.00473;
+use strict;
+
+local $^W = 1;
+
+use vars qw /$VERSION %RE %sub_interface $AUTOLOAD/;
+
+($VERSION) = q $Revision: 2.120 $ =~ /([\d.]+)/;
+
+
+sub _croak {
+    require Carp;
+    goto &Carp::croak;
+}
+
+sub _carp {
+    require Carp;
+    goto &Carp::carp;
+}
+
+sub new {
+    my ($class, @data) = @_;
+    my %self;
+    tie %self, $class, @data;
+    return \%self;
+}
+
+sub TIEHASH {
+    my ($class, @data) = @_;
+    bless \@data, $class;
+}
+
+sub FETCH {
+    my ($self, $extra) = @_;
+    return bless ref($self)->new(@$self, $extra), ref($self);
+}
+
+# Modification for cloc:  only need a few modules from Regexp::Common.
+my %imports = map {$_ => "Regexp::Common::$_"}
+              qw /balanced comment delimited /;
+#my %imports = map {$_ => "Regexp::Common::$_"}
+#              qw /balanced CC     comment   delimited lingua list
+#                  net      number profanity SEN       URI    whitespace
+#                  zip/;
+
+sub import {
+    shift;  # Shift off the class.
+    tie %RE, __PACKAGE__;
+    {
+        no strict 'refs';
+        *{caller() . "::RE"} = \%RE;
+    }
+
+    my $saw_import;
+    my $no_defaults;
+    my %exclude;
+    foreach my $entry (grep {!/^RE_/} @_) {
+        if ($entry eq 'pattern') {
+            no strict 'refs';
+            *{caller() . "::pattern"} = \&pattern;
+            next;
+        }
+        # This used to prevent $; from being set. We still recognize it,
+        # but we won't do anything.
+        if ($entry eq 'clean') {
+            next;
+        }
+        if ($entry eq 'no_defaults') {
+            $no_defaults ++;
+            next;
+        }
+        if (my $module = $imports {$entry}) {
+            $saw_import ++;
+            eval "require $module;";
+            die $@ if $@;
+            next;
+        }
+        if ($entry =~ /^!(.*)/ && $imports {$1}) {
+            $exclude {$1} ++;
+            next;
+        }
+        # As a last resort, try to load the argument.
+        my $module = $entry =~ /^Regexp::Common/
+                            ? $entry
+                            : "Regexp::Common::" . $entry;
+        eval "require $module;";
+        die $@ if $@;
+    }
+
+    unless ($saw_import || $no_defaults) {
+        foreach my $module (values %imports) {
+            next if $exclude {$module};
+            eval "require $module;";
+            die $@ if $@;
+        }
+    }
+
+    my %exported;
+    foreach my $entry (grep {/^RE_/} @_) {
+        if ($entry =~ /^RE_(\w+_)?ALL$/) {
+            my $m  = defined $1 ? $1 : "";
+            my $re = qr /^RE_${m}.*$/;
+            while (my ($sub, $interface) = each %sub_interface) {
+                next if $exported {$sub};
+                next unless $sub =~ /$re/;
+                {
+                    no strict 'refs';
+                    *{caller() . "::$sub"} = $interface;
+                }
+                $exported {$sub} ++;
+            }
+        }
+        else {
+            next if $exported {$entry};
+            _croak "Can't export unknown subroutine &$entry"
+                unless $sub_interface {$entry};
+            {
+                no strict 'refs';
+                *{caller() . "::$entry"} = $sub_interface {$entry};
+            }
+            $exported {$entry} ++;
+        }
+    }
+}
+
+sub AUTOLOAD { _croak "Can't $AUTOLOAD" }
+
+sub DESTROY {}
+
+my %cache;
+
+my $fpat = qr/^(-\w+)/;
+
+sub _decache {
+        my @args = @{tied %{$_[0]}};
+        my @nonflags = grep {!/$fpat/} @args;
+        my $cache = get_cache(@nonflags);
+        _croak "Can't create unknown regex: \$RE{"
+            . join("}{",@args) . "}"
+                unless exists $cache->{__VAL__};
+        _croak "Perl $] does not support the pattern "
+            . "\$RE{" . join("}{",@args)
+            . "}.\nYou need Perl $cache->{__VAL__}{version} or later"
+                unless ($cache->{__VAL__}{version}||0) <= $];
+        my %flags = ( %{$cache->{__VAL__}{default}},
+                      map { /$fpat\Q$;\E(.*)/ ? ($1 => $2)
+                          : /$fpat/           ? ($1 => undef)
+                          :                     ()
+                          } @args);
+        $cache->{__VAL__}->_clone_with(\@args, \%flags);
+}
+
+use overload q{""} => \&_decache;
+
+
+sub get_cache {
+        my $cache = \%cache;
+        foreach (@_) {
+                $cache = $cache->{$_}
+                      || ($cache->{$_} = {});
+        }
+        return $cache;
+}
+
+sub croak_version {
+        my ($entry, @args) = @_;
+}
+
+sub pattern {
+        my %spec = @_;
+        _croak 'pattern() requires argument: name => [ @list ]'
+                unless $spec{name} && ref $spec{name} eq 'ARRAY';
+        _croak 'pattern() requires argument: create => $sub_ref_or_string'
+                unless $spec{create};
+
+        if (ref $spec{create} ne "CODE") {
+                my $fixed_str = "$spec{create}";
+                $spec{create} = sub { $fixed_str }
+        }
+
+        my @nonflags;
+        my %default;
+        foreach ( @{$spec{name}} ) {
+                if (/$fpat=(.*)/) {
+                        $default{$1} = $2;
+                }
+                elsif (/$fpat\s*$/) {
+                        $default{$1} = undef;
+                }
+                else {
+                        push @nonflags, $_;
+                }
+        }
+
+        my $entry = get_cache(@nonflags);
+
+        if ($entry->{__VAL__}) {
+                _carp "Overriding \$RE{"
+                   . join("}{",@nonflags)
+                   . "}";
+        }
+
+        $entry->{__VAL__} = bless {
+                                create  => $spec{create},
+                                match   => $spec{match} || \&generic_match,
+                                subs    => $spec{subs}  || \&generic_subs,
+                                version => $spec{version},
+                                default => \%default,
+                            }, 'Regexp::Common::Entry';
+
+        foreach (@nonflags) {s/\W/X/g}
+        my $subname = "RE_" . join ("_", @nonflags);
+        $sub_interface{$subname} = sub {
+                push @_ => undef if @_ % 2;
+                my %flags = @_;
+                my $pat = $spec{create}->($entry->{__VAL__},
+                               {%default, %flags}, \@nonflags);
+                if (exists $flags{-keep}) { $pat =~ s/\Q(?k:/(/g; }
+                else { $pat =~ s/\Q(?k:/(?:/g; }
+                return exists $flags {-i} ? qr /(?i:$pat)/ : qr/$pat/;
+        };
+
+        return 1;
+}
+
+sub generic_match {$_ [1] =~  /$_[0]/}
+sub generic_subs  {$_ [1] =~ s/$_[0]/$_[2]/}
+
+sub matches {
+        my ($self, $str) = @_;
+        my $entry = $self -> _decache;
+        $entry -> {match} -> ($entry, $str);
+}
+
+sub subs {
+        my ($self, $str, $newstr) = @_;
+        my $entry = $self -> _decache;
+        $entry -> {subs} -> ($entry, $str, $newstr);
+        return $str;
+}
+
+
+package Regexp::Common::Entry;
+# use Carp;
+
+local $^W = 1;
+
+use overload
+    q{""} => sub {
+        my ($self) = @_;
+        my $pat = $self->{create}->($self, $self->{flags}, $self->{args});
+        if (exists $self->{flags}{-keep}) {
+            $pat =~ s/\Q(?k:/(/g;
+        }
+        else {
+            $pat =~ s/\Q(?k:/(?:/g;
+        }
+        if (exists $self->{flags}{-i})   { $pat = "(?i)$pat" }
+        return $pat;
+    };
+
+sub _clone_with {
+    my ($self, $args, $flags) = @_;
+    bless { %$self, args=>$args, flags=>$flags }, ref $self;
+}
+# 
+#    Copyright (c) 2001 - 2005, Damian Conway and Abigail. All Rights
+#  Reserved. This module is free software. It may be used, redistributed
+#      and/or modified under the terms of the Perl Artistic License
+#            (see http://www.perl.com/perl/misc/Artistic.html)
+EOCommon
+# 2}}}
+$Regexp_Common_Contents{'Common/comment'} = <<'EOC';   # {{{2
+# $Id: comment.pm,v 2.116 2005/03/16 00:00:02 abigail Exp $
+
+package Regexp::Common::comment;
+
+use strict;
+local $^W = 1;
+
+use Regexp::Common qw /pattern clean no_defaults/;
+use vars qw /$VERSION/;
+
+($VERSION) = q $Revision: 2.116 $ =~ /[\d.]+/g;
+
+my @generic = (
+    {languages => [qw /ABC Forth/],
+     to_eol    => ['\\\\']},   # This is for just a *single* backslash.
+
+    {languages => [qw /Ada Alan Eiffel lua/],
+     to_eol    => ['--']},
+
+    {languages => [qw /Advisor/],
+     to_eol    => ['#|//']},
+
+    {languages => [qw /Advsys CQL Lisp LOGO M MUMPS REBOL Scheme
+                       SMITH zonefile/],
+     to_eol    => [';']},
+
+    {languages => ['Algol 60'],
+     from_to   => [[qw /comment ;/]]},
+
+    {languages => [qw {ALPACA B C C-- LPC PL/I}],
+     from_to   => [[qw {/* */}]]},
+
+    {languages => [qw /awk fvwm2 Icon mutt Perl Python QML R Ruby shell Tcl/],
+     to_eol    => ['#']},
+
+    {languages => [[BASIC => 'mvEnterprise']],
+     to_eol    => ['[*!]|REM']},
+
+    {languages => [qw /Befunge-98 Funge-98 Shelta/],
+     id        => [';']},
+
+    {languages => ['beta-Juliet', 'Crystal Report', 'Portia'],
+     to_eol    => ['//']},
+
+    {languages => ['BML'],
+     from_to   => [['<?_c', '_c?>']],
+    },
+
+    {languages => [qw /C++/, 'C#', qw /Cg ECMAScript FPL Java JavaScript/],
+     to_eol    => ['//'],
+     from_to   => [[qw {/* */}]]},
+
+    {languages => [qw /CLU LaTeX slrn TeX/],
+     to_eol    => ['%']},
+
+    {languages => [qw /False/],
+     from_to   => [[qw !{ }!]]},
+
+    {languages => [qw /Fortran/],
+     to_eol    => ['!']},
+
+    {languages => [qw /Haifu/],
+     id        => [',']},
+
+    {languages => [qw /ILLGOL/],
+     to_eol    => ['NB']},
+
+    {languages => [qw /INTERCAL/],
+     to_eol    => [q{(?:(?:PLEASE(?:\s+DO)?|DO)\s+)?(?:NOT|N'T)}]},
+
+    {languages => [qw /J/],
+     to_eol    => ['NB[.]']},
+
+    {languages => [qw /Nickle/],
+     to_eol    => ['#'],
+     from_to   => [[qw {/* */}]]},
+
+    {languages => [qw /Oberon/],
+     from_to   => [[qw /(* *)/]]},
+     
+    {languages => [[qw /Pascal Delphi/], [qw /Pascal Free/], [qw /Pascal GPC/]],
+     to_eol    => ['//'],
+     from_to   => [[qw !{ }!], [qw !(* *)!]]},
+
+    {languages => [[qw /Pascal Workshop/]],
+     id        => [qw /"/],
+     from_to   => [[qw !{ }!], [qw !(* *)!], [qw !/* */!]]},
+
+    {languages => [qw /PEARL/],
+     to_eol    => ['!'],
+     from_to   => [[qw {/* */}]]},
+
+    {languages => [qw /PHP/],
+     to_eol    => ['#', '//'],
+     from_to   => [[qw {/* */}]]},
+
+    {languages => [qw !PL/B!],
+     to_eol    => ['[.;]']},
+
+    {languages => [qw !PL/SQL!],
+     to_eol    => ['--'],
+     from_to   => [[qw {/* */}]]},
+
+    {languages => [qw /Q-BAL/],
+     to_eol    => ['`']},
+
+    {languages => [qw /Smalltalk/],
+     id        => ['"']},
+
+    {languages => [qw /SQL/],
+     to_eol    => ['-{2,}']},
+
+    {languages => [qw /troff/],
+     to_eol    => ['\\\"']},
+
+    {languages => [qw /vi/],
+     to_eol    => ['"']},
+
+    {languages => [qw /*W/],
+     from_to   => [[qw {|| !!}]]},
+);
+
+my @plain_or_nested = (
+   [Caml         =>  undef,       "(*"  => "*)"],
+   [Dylan        =>  "//",        "/*"  => "*/"],
+   [Haskell      =>  "-{2,}",     "{-"  => "-}"],
+   [Hugo         =>  "!(?!\\\\)", "!\\" => "\\!"],
+   [SLIDE        =>  "#",         "(*"  => "*)"],
+);
+
+#
+# Helper subs.
+#
+
+sub combine      {
+    local $_ = join "|", @_;
+    if (@_ > 1) {
+        s/\(\?k:/(?:/g;
+        $_ = "(?k:$_)";
+    }
+    $_
+}
+
+sub to_eol  ($)  {"(?k:(?k:$_[0])(?k:[^\\n]*)(?k:\\n))"}
+sub id      ($)  {"(?k:(?k:$_[0])(?k:[^$_[0]]*)(?k:$_[0]))"}  # One char only!
+sub from_to      {
+    local $^W = 1;
+    my ($begin, $end) = @_;
+
+    my $qb  = quotemeta $begin;
+    my $qe  = quotemeta $end;
+    my $fe  = quotemeta substr $end   => 0, 1;
+    my $te  = quotemeta substr $end   => 1;
+
+    "(?k:(?k:$qb)(?k:(?:[^$fe]+|$fe(?!$te))*)(?k:$qe))";
+}
+
+
+my $count = 0;
+sub nested {
+    local $^W = 1;
+    my ($begin, $end) = @_;
+
+    $count ++;
+    my $r = '(??{$Regexp::Common::comment ['. $count . ']})';
+
+    my $qb  = quotemeta $begin;
+    my $qe  = quotemeta $end;
+    my $fb  = quotemeta substr $begin => 0, 1;
+    my $fe  = quotemeta substr $end   => 0, 1;
+
+    my $tb  = quotemeta substr $begin => 1;
+    my $te  = quotemeta substr $end   => 1;
+
+    use re 'eval';
+
+    my $re;
+    if ($fb eq $fe) {
+        $re = qr /(?:$qb(?:(?>[^$fb]+)|$fb(?!$tb)(?!$te)|$r)*$qe)/;
+    }
+    else {
+        local $"      =  "|";
+        my   @clauses =  "(?>[^$fb$fe]+)";
+        push @clauses => "$fb(?!$tb)" if length $tb;
+        push @clauses => "$fe(?!$te)" if length $te;
+        push @clauses =>  $r;
+        $re           =   qr /(?:$qb(?:@clauses)*$qe)/;
+    }
+
+    $Regexp::Common::comment [$count] = qr/$re/;
+}
+
+#
+# Process data.
+#
+
+foreach my $info (@plain_or_nested) {
+    my ($language, $mark, $begin, $end) = @$info;
+    pattern name    => [comment => $language],
+            create  =>
+                sub {my $re     = nested $begin => $end;
+                     my $prefix = defined $mark ? $mark . "[^\n]*\n|" : "";
+                     exists $_ [1] -> {-keep} ? qr /($prefix$re)/
+                                              : qr  /$prefix$re/
+                },
+            version => 5.006,
+            ;
+}
+
+
+foreach my $group (@generic) {
+    my $pattern = combine +(map {to_eol   $_} @{$group -> {to_eol}}),
+                           (map {from_to @$_} @{$group -> {from_to}}),
+                           (map {id       $_} @{$group -> {id}}),
+                  ;
+    foreach my $language  (@{$group -> {languages}}) {
+        pattern name    => [comment => ref $language ? @$language : $language],
+                create  => $pattern,
+                ;
+    }
+}
+                
+
+    
+#
+# Other languages.
+#
+
+# http://www.pascal-central.com/docs/iso10206.txt
+pattern name    => [qw /comment Pascal/],
+        create  => '(?k:' . '(?k:[{]|[(][*])'
+                          . '(?k:[^}*]*(?:[*][^)][^}*]*)*)'
+                          . '(?k:[}]|[*][)])'
+                          . ')'
+        ;
+
+# http://www.templetons.com/brad/alice/language/
+pattern name    =>  [qw /comment Pascal Alice/],
+        create  =>  '(?k:(?k:[{])(?k:[^}\n]*)(?k:[}]))'
+        ;
+
+
+# http://westein.arb-phys.uni-dortmund.de/~wb/a68s.txt
+pattern name    => [qw (comment), 'Algol 68'],
+        create  => q {(?k:(?:#[^#]*#)|}                           .
+                   q {(?:\bco\b(?:[^c]+|\Bc|\bc(?!o\b))*\bco\b)|} .
+                   q {(?:\bcomment\b(?:[^c]+|\Bc|\bc(?!omment\b))*\bcomment\b))}
+        ;
+
+
+# See rules 91 and 92 of ISO 8879 (SGML).
+# Charles F. Goldfarb: "The SGML Handbook".
+# Oxford: Oxford University Press. 1990. ISBN 0-19-853737-9.
+# Ch. 10.3, pp 390.
+pattern name    => [qw (comment HTML)],
+        create  => q {(?k:(?k:<!)(?k:(?:--(?k:[^-]*(?:-[^-]+)*)--\s*)*)(?k:>))},
+        ;
+
+
+pattern name    => [qw /comment SQL MySQL/],
+        create  => q {(?k:(?:#|-- )[^\n]*\n|} .
+                   q {/\*(?:(?>[^*;"']+)|"[^"]*"|'[^']*'|\*(?!/))*(?:;|\*/))},
+        ;
+
+# Anything that isn't <>[]+-.,
+# http://home.wxs.nl/~faase009/Ha_BF.html
+pattern name    => [qw /comment Brainfuck/],
+        create  => '(?k:[^<>\[\]+\-.,]+)'
+        ;
+
+# Squeak is a variant of Smalltalk-80.
+# http://www.squeak.
+# http://mucow.com/squeak-qref.html
+pattern name    => [qw /comment Squeak/],
+        create  => '(?k:(?k:")(?k:[^"]*(?:""[^"]*)*)(?k:"))'
+        ;
+
+#
+# Scores of less than 5 or above 17....
+# http://www.cliff.biffle.org/esoterica/beatnik.html
+@Regexp::Common::comment::scores = (1,  3,  3,  2,  1,  4,  2,  4,  1,  8,
+                                    5,  1,  3,  1,  1,  3, 10,  1,  1,  1,
+                                    1,  4,  4,  8,  4, 10);
+pattern name    =>  [qw /comment Beatnik/],
+        create  =>  sub {
+            use re 'eval';
+            my ($s, $x);
+            my $re = qr {\b([A-Za-z]+)\b
+                         (?(?{($s, $x) = (0, lc $^N);
+                              $s += $Regexp::Common::comment::scores
+                                    [ord (chop $x) - ord ('a')] while length $x;
+                              $s  >= 5 && $s < 18})XXX|)}x;
+            $re;
+        },
+        version  => 5.008,
+        ;
+
+
+# http://www.cray.com/craydoc/manuals/007-3692-005/html-007-3692-005/
+#  (Goto table of contents/3.3 Source Form)
+# Fortran, in fixed format. Comments start with a C, c or * in the first
+# column, or a ! anywhere, but the sixth column. Then end with a newline.
+pattern name    =>  [qw /comment Fortran fixed/],
+        create  =>  '(?k:(?k:(?:^[Cc*]|(?<!^.....)!))(?k:[^\n]*)(?k:\n))'
+        ;
+
+
+# http://www.csis.ul.ie/cobol/Course/COBOLIntro.htm
+# Traditionally, comments in COBOL were indicated with an asteriks in
+# the seventh column. Modern compilers may be more lenient.
+pattern name    =>  [qw /comment COBOL/],
+        create  =>  '(?<=^......)(?k:(?k:[*])(?k:[^\n]*)(?k:\n))',
+        version =>  '5.008',
+        ;
+
+1;
+#
+#    Copyright (c) 2001 - 2003, Damian Conway. All Rights Reserved.
+#      This module is free software. It may be used, redistributed
+#     and/or modified under the terms of the Perl Artistic License
+#           (see http://www.perl.com/perl/misc/Artistic.html)
+EOC
+# 2}}}
+$Regexp_Common_Contents{'Common/balanced'} = <<'EOB';   # {{{2
+package Regexp::Common::balanced; {
+
+use strict;
+local $^W = 1;
+
+use vars qw /$VERSION/;
+($VERSION) = q $Revision: 2.101 $ =~ /[\d.]+/g;
+
+use Regexp::Common qw /pattern clean no_defaults/;
+
+my %closer = ( '{'=>'}', '('=>')', '['=>']', '<'=>'>' );
+my $count = -1;
+my %cache;
+
+sub nested {
+    local $^W = 1;
+    my ($start, $finish) = @_;
+
+    return $Regexp::Common::balanced [$cache {$start} {$finish}]
+            if exists $cache {$start} {$finish};
+
+    $count ++;
+    my $r = '(??{$Regexp::Common::balanced ['. $count . ']})';
+
+    my @starts   = map {s/\\(.)/$1/g; $_} grep {length}
+                        $start  =~ /([^|\\]+|\\.)+/gs;
+    my @finishes = map {s/\\(.)/$1/g; $_} grep {length}
+                        $finish =~ /([^|\\]+|\\.)+/gs;
+
+    push @finishes => ($finishes [-1]) x (@starts - @finishes);
+
+    my @re;
+    local $" = "|";
+    foreach my $begin (@starts) {
+        my $end = shift @finishes;
+
+        my $qb  = quotemeta $begin;
+        my $qe  = quotemeta $end;
+        my $fb  = quotemeta substr $begin => 0, 1;
+        my $fe  = quotemeta substr $end   => 0, 1;
+
+        my $tb  = quotemeta substr $begin => 1;
+        my $te  = quotemeta substr $end   => 1;
+
+        use re 'eval';
+
+        my $add;
+        if ($fb eq $fe) {
+            push @re =>
+                   qr /(?:$qb(?:(?>[^$fb]+)|$fb(?!$tb)(?!$te)|$r)*$qe)/;
+        }
+        else {
+            my   @clauses =  "(?>[^$fb$fe]+)";
+            push @clauses => "$fb(?!$tb)" if length $tb;
+            push @clauses => "$fe(?!$te)" if length $te;
+            push @clauses =>  $r;
+            push @re      =>  qr /(?:$qb(?:@clauses)*$qe)/;
+        }
+    }
+
+    $cache {$start} {$finish} = $count;
+    $Regexp::Common::balanced [$count] = qr/@re/;
+}
+
+
+pattern name    => [qw /balanced -parens=() -begin= -end=/],
+        create  => sub {
+            my $flag = $_[1];
+            unless (defined $flag -> {-begin} && length $flag -> {-begin} &&
+                    defined $flag -> {-end}   && length $flag -> {-end}) {
+                my @open  = grep {index ($flag->{-parens}, $_) >= 0}
+                             ('[','(','{','<');
+                my @close = map {$closer {$_}} @open;
+                $flag -> {-begin} = join "|" => @open;
+                $flag -> {-end}   = join "|" => @close;
+            }
+            my $pat = nested @$flag {qw /-begin -end/};
+            return exists $flag -> {-keep} ? qr /($pat)/ : $pat;
+        },
+        version => 5.006,
+        ;
+
+}
+
+1;
+#
+#     Copyright (c) 2001 - 2003, Damian Conway. All Rights Reserved.
+#       This module is free software. It may be used, redistributed
+#      and/or modified under the terms of the Perl Artistic License
+#            (see http://www.perl.com/perl/misc/Artistic.html)
+EOB
+# 2}}}
+$Regexp_Common_Contents{'Common/delimited'} = <<'EOD';   # {{{2
+# $Id: delimited.pm,v 2.104 2005/03/16 00:22:45 abigail Exp $
+
+package Regexp::Common::delimited;
+
+use strict;
+local $^W = 1;
+
+use Regexp::Common qw /pattern clean no_defaults/;
+use vars qw /$VERSION/;
+
+($VERSION) = q $Revision: 2.104 $ =~ /[\d.]+/g;
+
+sub gen_delimited {
+
+    my ($dels, $escs) = @_;
+    # return '(?:\S*)' unless $dels =~ /\S/;
+    if (length $escs) {
+        $escs .= substr ($escs, -1) x (length ($dels) - length ($escs));
+    }
+    my @pat = ();
+    my $i;
+    for ($i=0; $i < length $dels; $i++) {
+        my $del = quotemeta substr ($dels, $i, 1);
+        my $esc = length($escs) ? quotemeta substr ($escs, $i, 1) : "";
+        if ($del eq $esc) {
+            push @pat,
+                 "(?k:$del)(?k:[^$del]*(?:(?:$del$del)[^$del]*)*)(?k:$del)";
+        }
+        elsif (length $esc) {
+            push @pat,
+                 "(?k:$del)(?k:[^$esc$del]*(?:$esc.[^$esc$del]*)*)(?k:$del)";
+        }
+        else {
+            push @pat, "(?k:$del)(?k:[^$del]*)(?k:$del)";
+        }
+    }
+    my $pat = join '|', @pat;
+    return "(?k:$pat)";
+}
+
+sub _croak {
+    require Carp;
+    goto &Carp::croak;
+}
+
+pattern name   => [qw( delimited -delim= -esc=\\ )],
+        create => sub {my $flags = $_[1];
+                       _croak 'Must specify delimiter in $RE{delimited}'
+                             unless length $flags->{-delim};
+                       return gen_delimited (@{$flags}{-delim, -esc});
+                  },
+        ;
+
+pattern name   => [qw( quoted -esc=\\ )],
+        create => sub {my $flags = $_[1];
+                       return gen_delimited (q{"'`}, $flags -> {-esc});
+                  },
+        ;
+
+
+1;
+#
+#     Copyright (c) 2001 - 2003, Damian Conway. All Rights Reserved.
+#       This module is free software. It may be used, redistributed
+#      and/or modified under the terms of the Perl Artistic License
+#            (see http://www.perl.com/perl/misc/Artistic.html)
+EOD
+# 2}}}
+    my $problems        = 0;
+    $HAVE_Rexexp_Common = 0;
+    my $dir             = "";
+    if ($opt_sdir) {
+        ++$TEMP_OFF;
+        $dir = "$opt_sdir/$TEMP_OFF";
+        File::Path::rmtree($dir) if     is_dir($dir);
+        File::Path::mkpath($dir) unless is_dir($dir);
+    } else {
+        # let File::Temp create a suitable temporary directory
+        $dir = tempdir( CLEANUP => 1 );  # 1 = delete on exit
+        $TEMP_INST{ $dir } = "Regexp::Common";
+    }
+    print "Using temp dir [$dir] to install Regexp::Common\n" if $opt_v;
+    my $Regexp_dir        = "$dir/Regexp";
+    my $Regexp_Common_dir = "$dir/Regexp/Common";
+    mkdir $Regexp_dir       ;
+    mkdir $Regexp_Common_dir;
+
+    foreach my $module_file (keys %Regexp_Common_Contents) {
+        my $OUT = new IO::File "$dir/Regexp/${module_file}.pm", "w";
+        if (defined $OUT) {
+            print $OUT $Regexp_Common_Contents{$module_file};
+            $OUT->close;
+        } else {
+            warn "Failed to install Regexp::${module_file}.pm\n";
+            $problems = 1;
+        }
+    }
+
+    push @INC, $dir;
+    eval "use Regexp::Common qw /comment RE_comment_HTML balanced/";
+    $HAVE_Rexexp_Common = 1 unless $problems;
+} # 1}}}
+sub Install_Algorithm_Diff {                 # {{{1
+    # Installs Tye McQueen's Algorithm::Diff module, v1.1902, into a 
+    # temporary directory for the duration of this run.
+
+my $Algorithm_Diff_Contents = <<'EOAlgDiff'; # {{{2
+package Algorithm::Diff;
+# Skip to first "=head" line for documentation.
+use strict;
+
+use integer;    # see below in _replaceNextLargerWith() for mod to make
+                # if you don't use this
+use vars qw( $VERSION @EXPORT_OK );
+$VERSION = 1.19_02;
+#          ^ ^^ ^^-- Incremented at will
+#          | \+----- Incremented for non-trivial changes to features
+#          \-------- Incremented for fundamental changes
+require Exporter;
+*import    = \&Exporter::import;
+@EXPORT_OK = qw(
+    prepare LCS LCSidx LCS_length
+    diff sdiff compact_diff
+    traverse_sequences traverse_balanced
+);
+
+# McIlroy-Hunt diff algorithm
+# Adapted from the Smalltalk code of Mario I. Wolczko, <mario@wolczko.com>
+# by Ned Konz, perl@bike-nomad.com
+# Updates by Tye McQueen, http://perlmonks.org/?node=tye
+
+# Create a hash that maps each element of $aCollection to the set of
+# positions it occupies in $aCollection, restricted to the elements
+# within the range of indexes specified by $start and $end.
+# The fourth parameter is a subroutine reference that will be called to
+# generate a string to use as a key.
+# Additional parameters, if any, will be passed to this subroutine.
+#
+# my $hashRef = _withPositionsOfInInterval( \@array, $start, $end, $keyGen );
+
+sub _withPositionsOfInInterval
+{
+    my $aCollection = shift;    # array ref
+    my $start       = shift;
+    my $end         = shift;
+    my $keyGen      = shift;
+    my %d;
+    my $index;
+    for ( $index = $start ; $index <= $end ; $index++ )
+    {
+        my $element = $aCollection->[$index];
+        my $key = &$keyGen( $element, @_ );
+        if ( exists( $d{$key} ) )
+        {
+            unshift ( @{ $d{$key} }, $index );
+        }
+        else
+        {
+            $d{$key} = [$index];
+        }
+    }
+    return wantarray ? %d : \%d;
+}
+
+# Find the place at which aValue would normally be inserted into the
+# array. If that place is already occupied by aValue, do nothing, and
+# return undef. If the place does not exist (i.e., it is off the end of
+# the array), add it to the end, otherwise replace the element at that
+# point with aValue.  It is assumed that the array's values are numeric.
+# This is where the bulk (75%) of the time is spent in this module, so
+# try to make it fast!
+
+sub _replaceNextLargerWith
+{
+    my ( $array, $aValue, $high ) = @_;
+    $high ||= $#$array;
+
+    # off the end?
+    if ( $high == -1 || $aValue > $array->[-1] )
+    {
+        push ( @$array, $aValue );
+        return $high + 1;
+    }
+
+    # binary search for insertion point...
+    my $low = 0;
+    my $index;
+    my $found;
+    while ( $low <= $high )
+    {
+        $index = ( $high + $low ) / 2;
+
+        # $index = int(( $high + $low ) / 2);  # without 'use integer'
+        $found = $array->[$index];
+
+        if ( $aValue == $found )
+        {
+            return undef;
+        }
+        elsif ( $aValue > $found )
+        {
+            $low = $index + 1;
+        }
+        else
+        {
+            $high = $index - 1;
+        }
+    }
+
+    # now insertion point is in $low.
+    $array->[$low] = $aValue;    # overwrite next larger
+    return $low;
+}
+
+# This method computes the longest common subsequence in $a and $b.
+
+# Result is array or ref, whose contents is such that
+#   $a->[ $i ] == $b->[ $result[ $i ] ]
+# foreach $i in ( 0 .. $#result ) if $result[ $i ] is defined.
+
+# An additional argument may be passed; this is a hash or key generating
+# function that should return a string that uniquely identifies the given
+# element.  It should be the case that if the key is the same, the elements
+# will compare the same. If this parameter is undef or missing, the key
+# will be the element as a string.
+
+# By default, comparisons will use "eq" and elements will be turned into keys
+# using the default stringizing operator '""'.
+
+# Additional parameters, if any, will be passed to the key generation
+# routine.
+
+sub _longestCommonSubsequence
+{
+    my $a        = shift;    # array ref or hash ref
+    my $b        = shift;    # array ref or hash ref
+    my $counting = shift;    # scalar
+    my $keyGen   = shift;    # code ref
+    my $compare;             # code ref
+
+    if ( ref($a) eq 'HASH' )
+    {                        # prepared hash must be in $b
+        my $tmp = $b;
+        $b = $a;
+        $a = $tmp;
+    }
+
+    # Check for bogus (non-ref) argument values
+    if ( !ref($a) || !ref($b) )
+    {
+        my @callerInfo = caller(1);
+        die 'error: must pass array or hash references to ' . $callerInfo[3];
+    }
+
+    # set up code refs
+    # Note that these are optimized.
+    if ( !defined($keyGen) )    # optimize for strings
+    {
+        $keyGen = sub { $_[0] };
+        $compare = sub { my ( $a, $b ) = @_; $a eq $b };
+    }
+    else
+    {
+        $compare = sub {
+            my $a = shift;
+            my $b = shift;
+            &$keyGen( $a, @_ ) eq &$keyGen( $b, @_ );
+        };
+    }
+
+    my ( $aStart, $aFinish, $matchVector ) = ( 0, $#$a, [] );
+    my ( $prunedCount, $bMatches ) = ( 0, {} );
+
+    if ( ref($b) eq 'HASH' )    # was $bMatches prepared for us?
+    {
+        $bMatches = $b;
+    }
+    else
+    {
+        my ( $bStart, $bFinish ) = ( 0, $#$b );
+
+        # First we prune off any common elements at the beginning
+        while ( $aStart <= $aFinish
+            and $bStart <= $bFinish
+            and &$compare( $a->[$aStart], $b->[$bStart], @_ ) )
+        {
+            $matchVector->[ $aStart++ ] = $bStart++;
+            $prunedCount++;
+        }
+
+        # now the end
+        while ( $aStart <= $aFinish
+            and $bStart <= $bFinish
+            and &$compare( $a->[$aFinish], $b->[$bFinish], @_ ) )
+        {
+            $matchVector->[ $aFinish-- ] = $bFinish--;
+            $prunedCount++;
+        }
+
+        # Now compute the equivalence classes of positions of elements
+        $bMatches =
+          _withPositionsOfInInterval( $b, $bStart, $bFinish, $keyGen, @_ );
+    }
+    my $thresh = [];
+    my $links  = [];
+
+    my ( $i, $ai, $j, $k );
+    for ( $i = $aStart ; $i <= $aFinish ; $i++ )
+    {
+        $ai = &$keyGen( $a->[$i], @_ );
+        if ( exists( $bMatches->{$ai} ) )
+        {
+            $k = 0;
+            for $j ( @{ $bMatches->{$ai} } )
+            {
+
+                # optimization: most of the time this will be true
+                if ( $k and $thresh->[$k] > $j and $thresh->[ $k - 1 ] < $j )
+                {
+                    $thresh->[$k] = $j;
+                }
+                else
+                {
+                    $k = _replaceNextLargerWith( $thresh, $j, $k );
+                }
+
+                # oddly, it's faster to always test this (CPU cache?).
+                if ( defined($k) )
+                {
+                    $links->[$k] =
+                      [ ( $k ? $links->[ $k - 1 ] : undef ), $i, $j ];
+                }
+            }
+        }
+    }
+
+    if (@$thresh)
+    {
+        return $prunedCount + @$thresh if $counting;
+        for ( my $link = $links->[$#$thresh] ; $link ; $link = $link->[0] )
+        {
+            $matchVector->[ $link->[1] ] = $link->[2];
+        }
+    }
+    elsif ($counting)
+    {
+        return $prunedCount;
+    }
+
+    return wantarray ? @$matchVector : $matchVector;
+}
+
+sub traverse_sequences
+{
+    my $a                 = shift;          # array ref
+    my $b                 = shift;          # array ref
+    my $callbacks         = shift || {};
+    my $keyGen            = shift;
+    my $matchCallback     = $callbacks->{'MATCH'} || sub { };
+    my $discardACallback  = $callbacks->{'DISCARD_A'} || sub { };
+    my $finishedACallback = $callbacks->{'A_FINISHED'};
+    my $discardBCallback  = $callbacks->{'DISCARD_B'} || sub { };
+    my $finishedBCallback = $callbacks->{'B_FINISHED'};
+    my $matchVector = _longestCommonSubsequence( $a, $b, 0, $keyGen, @_ );
+
+    # Process all the lines in @$matchVector
+    my $lastA = $#$a;
+    my $lastB = $#$b;
+    my $bi    = 0;
+    my $ai;
+
+    for ( $ai = 0 ; $ai <= $#$matchVector ; $ai++ )
+    {
+        my $bLine = $matchVector->[$ai];
+        if ( defined($bLine) )    # matched
+        {
+            &$discardBCallback( $ai, $bi++, @_ ) while $bi < $bLine;
+            &$matchCallback( $ai,    $bi++, @_ );
+        }
+        else
+        {
+            &$discardACallback( $ai, $bi, @_ );
+        }
+    }
+
+    # The last entry (if any) processed was a match.
+    # $ai and $bi point just past the last matching lines in their sequences.
+
+    while ( $ai <= $lastA or $bi <= $lastB )
+    {
+
+        # last A?
+        if ( $ai == $lastA + 1 and $bi <= $lastB )
+        {
+            if ( defined($finishedACallback) )
+            {
+                &$finishedACallback( $lastA, @_ );
+                $finishedACallback = undef;
+            }
+            else
+            {
+                &$discardBCallback( $ai, $bi++, @_ ) while $bi <= $lastB;
+            }
+        }
+
+        # last B?
+        if ( $bi == $lastB + 1 and $ai <= $lastA )
+        {
+            if ( defined($finishedBCallback) )
+            {
+                &$finishedBCallback( $lastB, @_ );
+                $finishedBCallback = undef;
+            }
+            else
+            {
+                &$discardACallback( $ai++, $bi, @_ ) while $ai <= $lastA;
+            }
+        }
+
+        &$discardACallback( $ai++, $bi, @_ ) if $ai <= $lastA;
+        &$discardBCallback( $ai, $bi++, @_ ) if $bi <= $lastB;
+    }
+
+    return 1;
+}
+
+sub traverse_balanced
+{
+    my $a                 = shift;              # array ref
+    my $b                 = shift;              # array ref
+    my $callbacks         = shift || {};
+    my $keyGen            = shift;
+    my $matchCallback     = $callbacks->{'MATCH'} || sub { };
+    my $discardACallback  = $callbacks->{'DISCARD_A'} || sub { };
+    my $discardBCallback  = $callbacks->{'DISCARD_B'} || sub { };
+    my $changeCallback    = $callbacks->{'CHANGE'};
+    my $matchVector = _longestCommonSubsequence( $a, $b, 0, $keyGen, @_ );
+
+    # Process all the lines in match vector
+    my $lastA = $#$a;
+    my $lastB = $#$b;
+    my $bi    = 0;
+    my $ai    = 0;
+    my $ma    = -1;
+    my $mb;
+
+    while (1)
+    {
+
+        # Find next match indices $ma and $mb
+        do {
+            $ma++;
+        } while(
+                $ma <= $#$matchVector
+            &&  !defined $matchVector->[$ma]
+        );
+
+        last if $ma > $#$matchVector;    # end of matchVector?
+        $mb = $matchVector->[$ma];
+
+        # Proceed with discard a/b or change events until
+        # next match
+        while ( $ai < $ma || $bi < $mb )
+        {
+
+            if ( $ai < $ma && $bi < $mb )
+            {
+
+                # Change
+                if ( defined $changeCallback )
+                {
+                    &$changeCallback( $ai++, $bi++, @_ );
+                }
+                else
+                {
+                    &$discardACallback( $ai++, $bi, @_ );
+                    &$discardBCallback( $ai, $bi++, @_ );
+                }
+            }
+            elsif ( $ai < $ma )
+            {
+                &$discardACallback( $ai++, $bi, @_ );
+            }
+            else
+            {
+
+                # $bi < $mb
+                &$discardBCallback( $ai, $bi++, @_ );
+            }
+        }
+
+        # Match
+        &$matchCallback( $ai++, $bi++, @_ );
+    }
+
+    while ( $ai <= $lastA || $bi <= $lastB )
+    {
+        if ( $ai <= $lastA && $bi <= $lastB )
+        {
+
+            # Change
+            if ( defined $changeCallback )
+            {
+                &$changeCallback( $ai++, $bi++, @_ );
+            }
+            else
+            {
+                &$discardACallback( $ai++, $bi, @_ );
+                &$discardBCallback( $ai, $bi++, @_ );
+            }
+        }
+        elsif ( $ai <= $lastA )
+        {
+            &$discardACallback( $ai++, $bi, @_ );
+        }
+        else
+        {
+
+            # $bi <= $lastB
+            &$discardBCallback( $ai, $bi++, @_ );
+        }
+    }
+
+    return 1;
+}
+
+sub prepare
+{
+    my $a       = shift;    # array ref
+    my $keyGen  = shift;    # code ref
+
+    # set up code ref
+    $keyGen = sub { $_[0] } unless defined($keyGen);
+
+    return scalar _withPositionsOfInInterval( $a, 0, $#$a, $keyGen, @_ );
+}
+
+sub LCS
+{
+    my $a = shift;                  # array ref
+    my $b = shift;                  # array ref or hash ref
+    my $matchVector = _longestCommonSubsequence( $a, $b, 0, @_ );
+    my @retval;
+    my $i;
+    for ( $i = 0 ; $i <= $#$matchVector ; $i++ )
+    {
+        if ( defined( $matchVector->[$i] ) )
+        {
+            push ( @retval, $a->[$i] );
+        }
+    }
+    return wantarray ? @retval : \@retval;
+}
+
+sub LCS_length
+{
+    my $a = shift;                          # array ref
+    my $b = shift;                          # array ref or hash ref
+    return _longestCommonSubsequence( $a, $b, 1, @_ );
+}
+
+sub LCSidx
+{
+    my $a= shift @_;
+    my $b= shift @_;
+    my $match= _longestCommonSubsequence( $a, $b, 0, @_ );
+    my @am= grep defined $match->[$_], 0..$#$match;
+    my @bm= @{$match}[@am];
+    return \@am, \@bm;
+}
+
+sub compact_diff
+{
+    my $a= shift @_;
+    my $b= shift @_;
+    my( $am, $bm )= LCSidx( $a, $b, @_ );
+    my @cdiff;
+    my( $ai, $bi )= ( 0, 0 );
+    push @cdiff, $ai, $bi;
+    while( 1 ) {
+        while(  @$am  &&  $ai == $am->[0]  &&  $bi == $bm->[0]  ) {
+            shift @$am;
+            shift @$bm;
+            ++$ai, ++$bi;
+        }
+        push @cdiff, $ai, $bi;
+        last   if  ! @$am;
+        $ai = $am->[0];
+        $bi = $bm->[0];
+        push @cdiff, $ai, $bi;
+    }
+    push @cdiff, 0+@$a, 0+@$b
+        if  $ai < @$a || $bi < @$b;
+    return wantarray ? @cdiff : \@cdiff;
+}
+
+sub diff
+{
+    my $a      = shift;    # array ref
+    my $b      = shift;    # array ref
+    my $retval = [];
+    my $hunk   = [];
+    my $discard = sub {
+        push @$hunk, [ '-', $_[0], $a->[ $_[0] ] ];
+    };
+    my $add = sub {
+        push @$hunk, [ '+', $_[1], $b->[ $_[1] ] ];
+    };
+    my $match = sub {
+        push @$retval, $hunk
+            if 0 < @$hunk;
+        $hunk = []
+    };
+    traverse_sequences( $a, $b,
+        { MATCH => $match, DISCARD_A => $discard, DISCARD_B => $add }, @_ );
+    &$match();
+    return wantarray ? @$retval : $retval;
+}
+
+sub sdiff
+{
+    my $a      = shift;    # array ref
+    my $b      = shift;    # array ref
+    my $retval = [];
+    my $discard = sub { push ( @$retval, [ '-', $a->[ $_[0] ], "" ] ) };
+    my $add = sub { push ( @$retval, [ '+', "", $b->[ $_[1] ] ] ) };
+    my $change = sub {
+        push ( @$retval, [ 'c', $a->[ $_[0] ], $b->[ $_[1] ] ] );
+    };
+    my $match = sub {
+        push ( @$retval, [ 'u', $a->[ $_[0] ], $b->[ $_[1] ] ] );
+    };
+    traverse_balanced(
+        $a,
+        $b,
+        {
+            MATCH     => $match,
+            DISCARD_A => $discard,
+            DISCARD_B => $add,
+            CHANGE    => $change,
+        },
+        @_
+    );
+    return wantarray ? @$retval : $retval;
+}
+
+########################################
+my $Root= __PACKAGE__;
+package Algorithm::Diff::_impl;
+use strict;
+
+sub _Idx()  { 0 } # $me->[_Idx]: Ref to array of hunk indices
+            # 1   # $me->[1]: Ref to first sequence
+            # 2   # $me->[2]: Ref to second sequence
+sub _End()  { 3 } # $me->[_End]: Diff between forward and reverse pos
+sub _Same() { 4 } # $me->[_Same]: 1 if pos 1 contains unchanged items
+sub _Base() { 5 } # $me->[_Base]: Added to range's min and max
+sub _Pos()  { 6 } # $me->[_Pos]: Which hunk is currently selected
+sub _Off()  { 7 } # $me->[_Off]: Offset into _Idx for current position
+sub _Min() { -2 } # Added to _Off to get min instead of max+1
+
+sub Die
+{
+    require Carp;
+    Carp::confess( @_ );
+}
+
+sub _ChkPos
+{
+    my( $me )= @_;
+    return   if  $me->[_Pos];
+    my $meth= ( caller(1) )[3];
+    Die( "Called $meth on 'reset' object" );
+}
+
+sub _ChkSeq
+{
+    my( $me, $seq )= @_;
+    return $seq + $me->[_Off]
+        if  1 == $seq  ||  2 == $seq;
+    my $meth= ( caller(1) )[3];
+    Die( "$meth: Invalid sequence number ($seq); must be 1 or 2" );
+}
+
+sub getObjPkg
+{
+    my( $us )= @_;
+    return ref $us   if  ref $us;
+    return $us . "::_obj";
+}
+
+sub new
+{
+    my( $us, $seq1, $seq2, $opts ) = @_;
+    my @args;
+    for( $opts->{keyGen} ) {
+        push @args, $_   if  $_;
+    }
+    for( $opts->{keyGenArgs} ) {
+        push @args, @$_   if  $_;
+    }
+    my $cdif= Algorithm::Diff::compact_diff( $seq1, $seq2, @args );
+    my $same= 1;
+    if(  0 == $cdif->[2]  &&  0 == $cdif->[3]  ) {
+        $same= 0;
+        splice @$cdif, 0, 2;
+    }
+    my @obj= ( $cdif, $seq1, $seq2 );
+    $obj[_End] = (1+@$cdif)/2;
+    $obj[_Same] = $same;
+    $obj[_Base] = 0;
+    my $me = bless \@obj, $us->getObjPkg();
+    $me->Reset( 0 );
+    return $me;
+}
+
+sub Reset
+{
+    my( $me, $pos )= @_;
+    $pos= int( $pos || 0 );
+    $pos += $me->[_End]
+        if  $pos < 0;
+    $pos= 0
+        if  $pos < 0  ||  $me->[_End] <= $pos;
+    $me->[_Pos]= $pos || !1;
+    $me->[_Off]= 2*$pos - 1;
+    return $me;
+}
+
+sub Base
+{
+    my( $me, $base )= @_;
+    my $oldBase= $me->[_Base];
+    $me->[_Base]= 0+$base   if  defined $base;
+    return $oldBase;
+}
+
+sub Copy
+{
+    my( $me, $pos, $base )= @_;
+    my @obj= @$me;
+    my $you= bless \@obj, ref($me);
+    $you->Reset( $pos )   if  defined $pos;
+    $you->Base( $base );
+    return $you;
+}
+
+sub Next {
+    my( $me, $steps )= @_;
+    $steps= 1   if  ! defined $steps;
+    if( $steps ) {
+        my $pos= $me->[_Pos];
+        my $new= $pos + $steps;
+        $new= 0   if  $pos  &&  $new < 0;
+        $me->Reset( $new )
+    }
+    return $me->[_Pos];
+}
+
+sub Prev {
+    my( $me, $steps )= @_;
+    $steps= 1   if  ! defined $steps;
+    my $pos= $me->Next(-$steps);
+    $pos -= $me->[_End]   if  $pos;
+    return $pos;
+}
+
+sub Diff {
+    my( $me )= @_;
+    $me->_ChkPos();
+    return 0   if  $me->[_Same] == ( 1 & $me->[_Pos] );
+    my $ret= 0;
+    my $off= $me->[_Off];
+    for my $seq ( 1, 2 ) {
+        $ret |= $seq
+            if  $me->[_Idx][ $off + $seq + _Min ]
+            <   $me->[_Idx][ $off + $seq ];
+    }
+    return $ret;
+}
+
+sub Min {
+    my( $me, $seq, $base )= @_;
+    $me->_ChkPos();
+    my $off= $me->_ChkSeq($seq);
+    $base= $me->[_Base] if !defined $base;
+    return $base + $me->[_Idx][ $off + _Min ];
+}
+
+sub Max {
+    my( $me, $seq, $base )= @_;
+    $me->_ChkPos();
+    my $off= $me->_ChkSeq($seq);
+    $base= $me->[_Base] if !defined $base;
+    return $base + $me->[_Idx][ $off ] -1;
+}
+
+sub Range {
+    my( $me, $seq, $base )= @_;
+    $me->_ChkPos();
+    my $off = $me->_ChkSeq($seq);
+    if( !wantarray ) {
+        return  $me->[_Idx][ $off ]
+            -   $me->[_Idx][ $off + _Min ];
+    }
+    $base= $me->[_Base] if !defined $base;
+    return  ( $base + $me->[_Idx][ $off + _Min ] )
+        ..  ( $base + $me->[_Idx][ $off ] - 1 );
+}
+
+sub Items {
+    my( $me, $seq )= @_;
+    $me->_ChkPos();
+    my $off = $me->_ChkSeq($seq);
+    if( !wantarray ) {
+        return  $me->[_Idx][ $off ]
+            -   $me->[_Idx][ $off + _Min ];
+    }
+    return
+        @{$me->[$seq]}[
+                $me->[_Idx][ $off + _Min ]
+            ..  ( $me->[_Idx][ $off ] - 1 )
+        ];
+}
+
+sub Same {
+    my( $me )= @_;
+    $me->_ChkPos();
+    return wantarray ? () : 0
+        if  $me->[_Same] != ( 1 & $me->[_Pos] );
+    return $me->Items(1);
+}
+
+my %getName;
+BEGIN {
+    %getName= (
+        same => \&Same,
+        diff => \&Diff,
+        base => \&Base,
+        min  => \&Min,
+        max  => \&Max,
+        range=> \&Range,
+        items=> \&Items, # same thing
+    );
+}
+
+sub Get
+{
+    my $me= shift @_;
+    $me->_ChkPos();
+    my @value;
+    for my $arg (  @_  ) {
+        for my $word (  split ' ', $arg  ) {
+            my $meth;
+            if(     $word !~ /^(-?\d+)?([a-zA-Z]+)([12])?$/
+                ||  not  $meth= $getName{ lc $2 }
+            ) {
+                Die( $Root, ", Get: Invalid request ($word)" );
+            }
+            my( $base, $name, $seq )= ( $1, $2, $3 );
+            push @value, scalar(
+                4 == length($name)
+                    ? $meth->( $me )
+                    : $meth->( $me, $seq, $base )
+            );
+        }
+    }
+    if(  wantarray  ) {
+        return @value;
+    } elsif(  1 == @value  ) {
+        return $value[0];
+    }
+    Die( 0+@value, " values requested from ",
+        $Root, "'s Get in scalar context" );
+}
+
+
+my $Obj= getObjPkg($Root);
+no strict 'refs';
+
+for my $meth (  qw( new getObjPkg )  ) {
+    *{$Root."::".$meth} = \&{$meth};
+    *{$Obj ."::".$meth} = \&{$meth};
+}
+for my $meth (  qw(
+    Next Prev Reset Copy Base Diff
+    Same Items Range Min Max Get
+    _ChkPos _ChkSeq
+)  ) {
+    *{$Obj."::".$meth} = \&{$meth};
+}
+
+1;
+# This version released by Tye McQueen (http://perlmonks.org/?node=tye).
+# 
+# =head1 LICENSE
+# 
+# Parts Copyright (c) 2000-2004 Ned Konz.  All rights reserved.
+# Parts by Tye McQueen.
+# 
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl.
+# 
+# =head1 MAILING LIST
+# 
+# Mark-Jason still maintains a mailing list.  To join a low-volume mailing
+# list for announcements related to diff and Algorithm::Diff, send an
+# empty mail message to mjd-perl-diff-request@plover.com.
+# =head1 CREDITS
+# 
+# Versions through 0.59 (and much of this documentation) were written by:
+# 
+# Mark-Jason Dominus, mjd-perl-diff@plover.com
+# 
+# This version borrows some documentation and routine names from
+# Mark-Jason's, but Diff.pm's code was completely replaced.
+# 
+# This code was adapted from the Smalltalk code of Mario Wolczko
+# <mario@wolczko.com>, which is available at
+# ftp://st.cs.uiuc.edu/pub/Smalltalk/MANCHESTER/manchester/4.0/diff.st
+# 
+# C<sdiff> and C<traverse_balanced> were written by Mike Schilli
+# <m@perlmeister.com>.
+# 
+# The algorithm is that described in
+# I<A Fast Algorithm for Computing Longest Common Subsequences>,
+# CACM, vol.20, no.5, pp.350-353, May 1977, with a few
+# minor improvements to improve the speed.
+# 
+# Much work was done by Ned Konz (perl@bike-nomad.com).
+# 
+# The OO interface and some other changes are by Tye McQueen.
+# 
+EOAlgDiff
+# 2}}}
+    my $problems        = 0;
+    $HAVE_Algorith_Diff = 0;
+    my $dir             = "";
+    if ($opt_sdir) {
+        ++$TEMP_OFF;
+        $dir = "$opt_sdir/$TEMP_OFF";
+        File::Path::rmtree($dir) if     is_dir($dir);
+        File::Path::mkpath($dir) unless is_dir($dir);
+    } else {
+        # let File::Temp create a suitable temporary directory
+        $dir = tempdir( CLEANUP => 1 );  # 1 = delete on exit
+        $TEMP_INST{ $dir } = "Algorithm::Diff";
+    }
+    print "Using temp dir [$dir] to install Algorithm::Diff\n" if $opt_v;
+    my $Algorithm_dir      = "$dir/Algorithm";
+    my $Algorithm_Diff_dir = "$dir/Algorithm/Diff";
+    mkdir $Algorithm_dir     ;
+    mkdir $Algorithm_Diff_dir;
+
+    my $OUT = new IO::File "$dir/Algorithm/Diff.pm", "w";
+    if (defined $OUT) {
+        print $OUT $Algorithm_Diff_Contents;
+        $OUT->close;
+    } else {
+        warn "Failed to install Algorithm/Diff.pm\n";
+        $problems = 1;
+    }
+
+    push @INC, $dir;  # between this & Regexp::Common only need to do once
+    eval "use Algorithm::Diff qw / sdiff /";
+    $HAVE_Algorith_Diff = 1 unless $problems;
+} # 1}}}
+sub call_regexp_common {                     # {{{1
+    my ($ra_lines, $language ) = @_;
+    print "-> call_regexp_common\n" if $opt_v > 2;
+
+    Install_Regexp_Common() unless $HAVE_Rexexp_Common;
+
+    my $all_lines = join("", @{$ra_lines});
+
+    no strict 'vars';
+    # otherwise get:
+    #  Global symbol "%RE" requires explicit package name at cloc line xx.
+    if ($all_lines =~ $RE{comment}{$language}) {
+        # Suppress "Use of uninitialized value in regexp compilation" that
+        # pops up when $1 is undefined--happens if there's a bug in the $RE
+        # This Pascal comment will trigger it:
+        #         (* This is { another } test. **)
+        # Curiously, testing for "defined $1" breaks the substitution.
+        no warnings; 
+        # remove   comments
+        $all_lines =~ s/$1//g;
+    }
+    # a bogus use of %RE to avoid:
+    # Name "main::RE" used only once: possible typo at cloc line xx.
+    print scalar keys %RE if $opt_v < -20;
+#?#print "$all_lines\n";
+    print "<- call_regexp_common\n" if $opt_v > 2;
+    return split("\n", $all_lines);
+} # 1}}}
+sub plural_form {                            # {{{1
+    # For getting the right plural form on some English nouns.
+    my $n = shift @_;
+    if ($n == 1) { return ( 1, "" ); }
+    else         { return ($n, "s"); }
+} # 1}}}
+sub matlab_or_objective_C {                  # {{{1
+    # Decide if code is MATLAB, Objective C, or MUMPS
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+        $rs_language , # out
+       ) = @_;
+
+    print "-> matlab_or_objective_C\n" if $opt_v > 2;
+    # matlab markers:
+    #   first line starts with "function"
+    #   some lines start with "%"
+    #   high marks for lines that start with [
+    #
+    # Objective C markers:
+    #   must have at least two brace characters, { }
+    #   has /* ... */ style comments
+    #   some lines start with @
+    #   some lines start with #include
+    #
+    # MUMPS:
+    #   has ; comment markers
+    #   do not match:  \w+\s*=\s*\w
+    #   lines begin with   \s*\.?\w+\s+\w
+    #   high marks for lines that start with \s*K\s+ or \s*Kill\s+
+
+    ${$rs_language} = "";
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        return;
+    }
+
+    my $DEBUG              = 0;
+
+    my $matlab_points      = 0;
+    my $objective_C_points = 0;
+    my $mumps_points       = 0;
+    my $has_braces         = 0;
+    while (<$IN>) {
+        ++$has_braces if m/[{}]/;
+        ++$mumps_points if $. == 1 and m{^[A-Z]};
+        if      (m{^\s*/\*}) {           #   /*
+            ++$objective_C_points;
+            --$matlab_points;
+printf ".m:  /*     obj C=% 2d  matlab=% 2d  mumps=% 2d\n", $objective_C_points, $matlab_points, $mumps_points if $DEBUG;
+        } elsif (m{\w+\s*=\s*\[}) {      # matrix assignment, very matlab
+            $matlab_points += 5;
+printf ".m:  \\w=[   obj C=% 2d  matlab=% 2d  mumps=% 2d\n", $objective_C_points, $matlab_points, $mumps_points if $DEBUG;
+        } elsif (m{^\s*\w+\s*=\s*}) {    # definitely not MUMPS
+            --$mumps_points;
+printf ".m:  \\w=    obj C=% 2d  matlab=% 2d  mumps=% 2d\n", $objective_C_points, $matlab_points, $mumps_points if $DEBUG;
+        } elsif (m{^\s*\.?(\w)\s+(\w)} and $1 !~ /\d/ and $2 !~ /\d/) {
+            ++$mumps_points;
+printf ".m:  \\w \\w  obj C=% 2d  matlab=% 2d  mumps=% 2d\n", $objective_C_points, $matlab_points, $mumps_points if $DEBUG;
+        } elsif (m{^\s*;}) {
+            ++$mumps_points;
+printf ".m:  ;      obj C=% 2d  matlab=% 2d  mumps=% 2d\n", $objective_C_points, $matlab_points, $mumps_points if $DEBUG;
+        } elsif (m{^\s*#(include|import)}) {
+            # Objective C without a doubt
+            $objective_C_points = 1;
+            $matlab_points      = 0;
+printf ".m: #includ obj C=% 2d  matlab=% 2d  mumps=% 2d\n", $objective_C_points, $matlab_points, $mumps_points if $DEBUG;
+            last;
+        } elsif (m{^\s*@(interface|implementation|protocol|public|protected|private|end)\s}o) {
+            # Objective C without a doubt
+            $objective_C_points = 1;
+            $matlab_points      = 0;
+printf ".m: keyword obj C=% 2d  matlab=% 2d  mumps=% 2d\n", $objective_C_points, $matlab_points, $mumps_points if $DEBUG;
+            last;
+        } elsif (m{^\s*\[}) {             #   line starts with [  -- very matlab
+            $matlab_points += 5;
+printf ".m:  [      obj C=% 2d  matlab=% 2d  mumps=% 2d\n", $objective_C_points, $matlab_points, $mumps_points if $DEBUG;
+        } elsif (m{^\sK(ill)?\s+}) {
+            $mumps_points  += 5;
+printf ".m:  Kill   obj C=% 2d  matlab=% 2d  mumps=% 2d\n", $objective_C_points, $matlab_points, $mumps_points if $DEBUG;
+        } elsif (m{^\s*function}) {
+            --$objective_C_points;
+            ++$matlab_points;
+printf ".m:  funct  obj C=% 2d  matlab=% 2d  mumps=% 2d\n", $objective_C_points, $matlab_points, $mumps_points if $DEBUG;
+        } elsif (m{^\s*%}) {              #   %
+            # matlab commented line
+            --$objective_C_points;
+            ++$matlab_points;
+printf ".m:  pcent  obj C=% 2d  matlab=% 2d  mumps=% 2d\n", $objective_C_points, $matlab_points, $mumps_points if $DEBUG;
+        }
+    }
+    $IN->close;
+
+    print "<- matlab_or_objective_C(matlab=$matlab_points, C=$objective_C_points, mumps=$mumps_points)\n"
+        if $opt_v > 2;
+    $objective_C_points = -9.9e20 unless $has_braces >= 2;
+    if      (($matlab_points > $objective_C_points) and
+             ($matlab_points > $mumps_points)      ) {
+        ${$rs_language} = "MATLAB";
+    } elsif (($mumps_points > $objective_C_points) and
+             ($mumps_points > $matlab_points)      ) {
+        ${$rs_language} = "MUMPS";
+    } else {
+        ${$rs_language} = "Objective C";
+    }
+
+} # 1}}}
+sub Lisp_or_OpenCL {                         # {{{1
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+       ) = @_;
+
+    print "-> Lisp_or_OpenCL\n" if $opt_v > 2;
+
+    my $lang = undef;
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        return $lang;
+    }
+    my $lisp_points   = 0;
+    my $opcl_points = 0;
+    while (<$IN>) {
+        ++$lisp_points if  /^\s*;/;
+        ++$lisp_points if  /\((def|eval|require|export|let|loop|dec|format)/;
+        ++$opcl_points if  /^\s*(int|float|const|{)/;
+    }
+    $IN->close;
+    # print "lisp_points=$lisp_points   opcl_points=$opcl_points\n";
+    if ($lisp_points > $opcl_points) {
+        $lang = "Lisp";
+    } else {
+        $lang = "OpenCL";
+    }
+
+    print "<- Lisp_or_OpenCL\n" if $opt_v > 2;
+    return $lang;
+} # 1}}}
+sub Ant_or_XML {                             # {{{1
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+       ) = @_;
+
+    print "-> Ant_or_XML($file)\n" if $opt_v > 2;
+
+    my $lang = "XML";
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        return $lang;
+    }
+    my $Ant_points   = 0;
+    my $XML_points   = 1;
+    while (<$IN>) {
+        if (/^\s*<project\s+/) {
+            ++$Ant_points  ;
+            --$XML_points  ;
+        }
+        if (/xmlns:artifact="antlib:org.apache.maven.artifact.ant"/) {
+            ++$Ant_points  ;
+            --$XML_points  ;
+        }
+    }
+    $IN->close;
+
+    if ($XML_points >= $Ant_points) {
+        # tie or better goes to XML
+        $lang = "XML";
+    } else {
+        $lang = "Ant";
+    }
+
+    print "<- Ant_or_XML($lang)\n" if $opt_v > 2;
+    return $lang;
+} # 1}}}
+sub Maven_or_XML {                           # {{{1
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+       ) = @_;
+
+    print "-> Maven_or_XML($file)\n" if $opt_v > 2;
+
+    my $lang = "XML";
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        return $lang;
+    }
+    my $Mvn_points   = 0;
+    my $XML_points   = 1;
+    while (<$IN>) {
+        if (/^\s*<project\s+/) {
+            ++$Mvn_points  ;
+            --$XML_points  ;
+        }
+        if (m{xmlns="http://maven.apache.org/POM/}) {
+            ++$Mvn_points  ;
+            --$XML_points  ;
+        }
+    }
+    $IN->close;
+
+    if ($XML_points >= $Mvn_points) {
+        # tie or better goes to XML
+        $lang = "XML";
+    } else {
+        $lang = "Maven";
+    }
+
+    print "<- Maven_or_XML($lang)\n" if $opt_v > 2;
+    return $lang;
+} # 1}}}
+sub html_colored_text {                      # {{{1
+    # http://www.pagetutor.com/pagetutor/makapage/pics/net216-2.gif
+    my ($color, $text) = @_;
+#?#die "html_colored_text($text)";
+    if      ($color =~ /^red$/i)   {
+        $color = "#ff0000";
+    } elsif ($color =~ /^green$/i) {
+        $color = "#00ff00";
+    } elsif ($color =~ /^blue$/i)  {
+        $color = "#0000ff";
+    } elsif ($color =~ /^grey$/i)  {
+        $color = "#cccccc";
+    }
+#   return "" unless $text;
+    return '<font color="' . $color . '">' . html_metachars($text) . "</font>";
+} # 1}}}
+sub html_metachars {                         # {{{1
+    # Replace HTML metacharacters with their printable forms.
+    # Future:  use HTML-Encoder-0.00_04/lib/HTML/Encoder.pm
+    # from Fabiano Reese Righetti's HTML::Encoder module if 
+    # this subroutine proves to be too simplistic.
+    my ($string, ) = shift @_;
+
+    my  @in_chars    = split(//, $string);
+    my  @out_chars   = ();
+    foreach my $c (@in_chars) {
+        if      ($c eq '<') {
+            push @out_chars, '&lt;'
+        } elsif ($c eq '>') {
+            push @out_chars, '&gt;'
+        } elsif ($c eq '&') {
+            push @out_chars, '&amp;'
+        } else {
+            push @out_chars, $c;
+        }
+    }
+    return join "", @out_chars; 
+} # 1}}}
+sub test_alg_diff {                          # {{{1
+    my ($file_1 ,
+        $file_2 )
+       = @_;
+    my $fh_1 = new IO::File $file_1, "r";
+    die "Unable to read $file_1:  $!\n" unless defined $fh_1;
+    chomp(my @lines_1 = <$fh_1>);
+    $fh_1->close;
+
+    my $fh_2 = new IO::File $file_2, "r";
+    die "Unable to read $file_2:  $!\n" unless defined $fh_2;
+    chomp(my @lines_2 = <$fh_2>);
+    $fh_2->close;
+
+    my $n_no_change = 0;
+    my $n_modified  = 0;
+    my $n_added     = 0;
+    my $n_deleted   = 0;
+    my @min_sdiff   = ();
+my $NN = chr(27) . "[0m";  # normal
+my $BB = chr(27) . "[1m";  # bold
+
+    my @sdiffs = sdiff( \@lines_1, \@lines_2 );
+    foreach my $entry (@sdiffs) {
+        my ($out_1, $out_2) = ('', '');
+        if ($entry->[0] eq 'u') { 
+            ++$n_no_change; 
+          # $out_1 = $entry->[1];
+          # $out_2 = $entry->[2];
+            next; 
+        }
+#       push @min_sdiff, $entry;
+        if      ($entry->[0] eq 'c') { 
+            ++$n_modified;
+            ($out_1, $out_2) = diff_two_strings($entry->[1], $entry->[2]);
+            $out_1 =~ s/\cA(\w)/${BB}$1${NN}/g;
+            $out_2 =~ s/\cA(\w)/${BB}$1${NN}/g;
+          # $out_1 =~ s/\cA//g;
+          # $out_2 =~ s/\cA//g;
+        } elsif ($entry->[0] eq '+') { 
+            ++$n_added;
+            $out_1 = $entry->[1];
+            $out_2 = $entry->[2];
+        } elsif ($entry->[0] eq '-') { 
+            ++$n_deleted;
+            $out_1 = $entry->[1];
+            $out_2 = $entry->[2];
+        } elsif ($entry->[0] eq 'u') { 
+        } else { die "unknown entry->[0]=[$entry->[0]]\n"; }
+        printf "%-80s | %s\n", $out_1, $out_2;
+    }
+
+#   foreach my $entry (@min_sdiff) {
+#       printf "DIFF:  %s  %s  %s\n", @{$entry};
+#   }
+} # 1}}}
+sub write_comments_to_html {                 # {{{1
+    my ($filename      , # in
+        $rah_diff_L    , # in  see routine array_diff() for explanation
+        $rah_diff_R    , # in  see routine array_diff() for explanation
+        $rh_blank      , # in  location and counts of blank lines
+       ) = @_;
+
+    print "-> write_comments_to_html($filename)\n" if $opt_v > 2;
+    my $file = $filename . ".html";
+#use Data::Dumper;
+#print Dumper("rah_diff_L", $rah_diff_L, "rah_diff_R", $rah_diff_R);
+    my $OUT = new IO::File $file, "w";
+    if (!defined $OUT) {
+        warn "Unable to write to $file\n";
+        print "<- write_comments_to_html\n" if $opt_v > 2;
+        return;
+    }
+
+    my $approx_line_count = scalar @{$rah_diff_L};
+    my $n_digits = 1 + int(log($approx_line_count)/2.30258509299405); # log_10
+
+    my $html_out = html_header($filename);
+
+    my $comment_line_number = 0;
+    for (my $i = 0; $i < scalar @{$rah_diff_R}; $i++) {
+        if (defined $rh_blank->{$i}) {
+            foreach (1..$rh_blank->{$i}) {
+                $html_out .= "<!-- blank -->\n";
+            }
+        }
+        my $line_num = "";
+        my $pre      = "";
+        my $post     = '</span> &nbsp;';
+warn "undef rah_diff_R[$i]{type} " unless defined $rah_diff_R->[$i]{type};
+        if ($rah_diff_R->[$i]{type} eq 'nonexist') {
+            ++$comment_line_number;
+            $line_num = sprintf "\&nbsp; <span class=\"clinenum\"> %0${n_digits}d %s",
+                            $comment_line_number, $post;
+            $pre = '<span class="comment">';
+            $html_out .= $line_num;  
+            $html_out .= $pre .  
+                         html_metachars($rah_diff_L->[$i]{char}) . 
+                         $post . "\n";
+            next;
+        }
+        if      ($rah_diff_R->[$i]{type} eq 'code' and
+                 $rah_diff_R->[$i]{desc} eq 'same') {
+            # entire line remains as-is
+            $line_num = sprintf "\&nbsp; <span class=\"linenum\"> %0${n_digits}d %s",
+                            $rah_diff_R->[$i]{lnum}, $post;
+            $pre    = '<span class="normal">';
+            $html_out .= $line_num;  
+            $html_out .= $pre . 
+                         html_metachars($rah_diff_R->[$i]{char}) . $post;
+#XX     } elsif ($rah_diff_R->[$i]{type} eq 'code') { # code+comments
+#XX
+#XX         $line_num = '<span class="linenum">' .
+#XX                      $rah_diff_R->[$i]{lnum} . $post;
+#XX         $html_out .= $line_num;  
+#XX
+#XX         my @strings = @{$rah_diff_R->[$i]{char}{strings}}; 
+#XX         my @type    = @{$rah_diff_R->[$i]{char}{type}}; 
+#XX         for (my $i = 0; $i < scalar @strings; $i++) {
+#XX             if ($type[$i] eq 'u') {
+#XX                 $pre = '<span class="normal">';
+#XX             } else {
+#XX                 $pre = '<span class="comment">';
+#XX             }
+#XX             $html_out .= $pre .  html_metachars($strings[$i]) . $post;
+#XX         }
+# print Dumper(@strings, @type); die;
+
+        } elsif ($rah_diff_R->[$i]{type} eq 'comment') {
+            $line_num = '<span class="clinenum">' . $comment_line_number . $post;
+            # entire line is a comment
+            $pre    = '<span class="comment">';
+            $html_out .= $pre .
+                         html_metachars($rah_diff_R->[$i]{char}) . $post;
+        }
+#printf "%-30s %s %-30s\n", $line_1, $separator, $line_2;
+        $html_out .= "\n";
+    }
+
+    $html_out .= html_end();
+
+    my $out_file = "$filename.html";
+    open  OUT, ">$out_file" or die "Cannot write to $out_file $!\n";
+    print OUT $html_out;
+    close OUT;
+    print "Wrote $out_file\n" unless $opt_quiet;
+    $OUT->close;
+
+    print "<- write_comments_to_html\n" if $opt_v > 2;
+} # 1}}}
+sub array_diff {                             # {{{1
+    my ($file          , # in  only used for error reporting
+        $ra_lines_L    , # in  array of lines in Left  file (no blank lines)
+        $ra_lines_R    , # in  array of lines in Right file (no blank lines)
+        $mode          , # in  "comment" | "revision"
+        $rah_diff_L    , # out
+        $rah_diff_R    , # out
+        $raa_Errors    , # in/out
+       ) = @_;
+
+    # This routine operates in two ways:
+    # A. Computes diffs of the same file with and without comments.
+    #    This is used to classify lines as code, comments, or blank.
+    # B. Computes diffs of two revisions of a file.  This method
+    #    requires a prior run of method A using the older version
+    #    of the file because it needs lines to be classified.
+
+    # $rah_diff structure:
+    # An array with n entries where n equals the number of lines in 
+    # an sdiff of the two files.  Each entry in the array describes
+    # the contents of the corresponding line in file Left and file Right:
+    #  diff[]{type} = blank | code | code+comment | comment | nonexist
+    #        {lnum} = line number within the original file (1-based)
+    #        {desc} = same | added | removed | modified
+    #        {char} = the input line unless {desc} = 'modified' in
+    #                 which case
+    #        {char}{strings} = [ substrings ]
+    #        {char}{type}    = [ disposition (added, removed, etc)]
+    #
+
+    @{$rah_diff_L} = ();
+    @{$rah_diff_R} = ();
+
+    print "-> array_diff()\n" if $opt_v > 2;
+    my $COMMENT_MODE = 0;
+       $COMMENT_MODE = 1 if $mode eq "comment";
+
+#print "array_diff(mode=$mode)\n";
+#print Dumper("block left:" , $ra_lines_L);
+#print Dumper("block right:", $ra_lines_R);
+
+    my @sdiffs = ();
+    eval {
+        local $SIG{ALRM} = sub { die "alarm\n" };
+        alarm $opt_diff_timeout;
+        @sdiffs = sdiff($ra_lines_L, $ra_lines_R);
+        alarm 0;
+    };
+    if ($@) {
+        # timed out
+        die unless $@ eq "alarm\n"; # propagate unexpected errors
+        push @{$raa_Errors}, 
+             [ $Error_Codes{'Diff error, exceeded timeout'}, $file ];
+        if ($opt_v) {
+          warn "array_diff: diff timeout failure for $file--ignoring\n";
+        }
+        return;
+    }
+
+#use Data::Dumper::Simple;
+#print Dumper($ra_lines_L, $ra_lines_R, @sdiffs);
+#die;
+
+    my $n_L        = 0;
+    my $n_R        = 0;
+    my $n_sdiff    = 0;  # index to $rah_diff_L, $rah_diff_R
+    foreach my $triple (@sdiffs) {
+        my $flag   = $triple->[0];
+        my $line_L = $triple->[1];
+        my $line_R = $triple->[2];
+        $rah_diff_L->[$n_sdiff]{char} = $line_L;
+        $rah_diff_R->[$n_sdiff]{char} = $line_R;
+        if      ($flag eq 'u') {  # u = unchanged
+            ++$n_L;
+            ++$n_R;
+            if ($COMMENT_MODE) {
+                # line exists in both with & without comments, must be code
+                $rah_diff_L->[$n_sdiff]{type} = "code";
+                $rah_diff_R->[$n_sdiff]{type} = "code";
+            }
+            $rah_diff_L->[$n_sdiff]{desc} = "same";
+            $rah_diff_R->[$n_sdiff]{desc} = "same";
+            $rah_diff_L->[$n_sdiff]{lnum} = $n_L;
+            $rah_diff_R->[$n_sdiff]{lnum} = $n_R;
+        } elsif ($flag eq 'c') {  # c = changed
+# warn "per line sdiff() commented out\n"; if (0) {
+            ++$n_L;
+            ++$n_R;
+
+            if ($COMMENT_MODE) {
+                # line has text both with & without comments;
+                # count as code
+                $rah_diff_L->[$n_sdiff]{type} = "code";
+                $rah_diff_R->[$n_sdiff]{type} = "code";
+            }
+
+            my @chars_L = split '', $line_L;
+            my @chars_R = split '', $line_R;
+
+#XX         my @inline_sdiffs = sdiff( \@chars_L, \@chars_R );
+
+#use Data::Dumper::Simple; 
+#if ($n_R == 6 or $n_R == 1 or $n_R == 2) {
+#print "L=[$line_L]\n";
+#print "R=[$line_R]\n";
+#print Dumper(@chars_L, @chars_R, @inline_sdiffs);
+#}
+#XX         my @index = ();
+#XX         foreach my $il_triple (@inline_sdiffs) {
+#XX             # make an array of u|c|+|- corresponding
+#XX             # to each character
+#XX             push @index, $il_triple->[0];
+#XX         }
+#XX#print Dumper(@index); die;
+#XX          # expect problems if arrays @index and $inline_sdiffs[1];
+#XX          # (@{$inline_sdiffs->[1]} are the characters of line_L)
+#XX          # aren't the same length
+#XX          my $prev_type = $index[0];
+#XX          my @strings   = ();  # blocks of consecutive code or comment
+#XX          my @type      = ();  # u (=code) or c (=comment)
+#XX          my $j_str     = 0;
+#XX          $strings[$j_str] .= $chars_L[0];
+#XX          $type[$j_str] = $prev_type;
+#XX          for (my $i = 1; $i < scalar @chars_L; $i++) {
+#XX              if ($index[$i] ne $prev_type) {
+#XX                  ++$j_str;
+#XX#print "change at j_str=$j_str type=$index[$i]\n";
+#XX                  $type[$j_str] = $index[$i];
+#XX                  $prev_type    = $index[$i];
+#XX              }
+#XX              $strings[$j_str] .= $chars_L[$i];
+#XX          }
+# print Dumper(@strings, @type); die;
+#XX         delete $rah_diff_R->[$n_sdiff]{char};
+#XX         @{$rah_diff_R->[$n_sdiff]{char}{strings}} = @strings;
+#XX         @{$rah_diff_R->[$n_sdiff]{char}{type}}    = @type;
+            $rah_diff_L->[$n_sdiff]{desc} = "modified";
+            $rah_diff_R->[$n_sdiff]{desc} = "modified";
+            $rah_diff_L->[$n_sdiff]{lnum} = $n_L;
+            $rah_diff_R->[$n_sdiff]{lnum} = $n_R;
+#}
+
+        } elsif ($flag eq '+') {  # + = added
+            ++$n_R;
+            if ($COMMENT_MODE) {
+                # should never get here
+                @{$rah_diff_L} = ();
+                @{$rah_diff_R} = ();
+                push @{$raa_Errors}, 
+                     [ $Error_Codes{'Diff error (quoted comments?)'}, $file ];
+                if ($opt_v) {
+                  warn "array_diff: diff failure (diff says the\n";
+                  warn "comment-free file has added lines).\n";
+                  warn "$n_sdiff  $line_L\n";
+                }
+                last;
+            }
+            $rah_diff_L->[$n_sdiff]{type} = "nonexist";
+            $rah_diff_L->[$n_sdiff]{desc} = "removed";
+            $rah_diff_R->[$n_sdiff]{desc} = "added";
+            $rah_diff_R->[$n_sdiff]{lnum} = $n_R;
+        } elsif ($flag eq '-') {  # - = removed
+            ++$n_L;
+            if ($COMMENT_MODE) {
+                # line must be comment because blanks already gone
+                $rah_diff_L->[$n_sdiff]{type} = "comment";
+            }
+            $rah_diff_R->[$n_sdiff]{type} = "nonexist";
+            $rah_diff_R->[$n_sdiff]{desc} = "removed";
+            $rah_diff_L->[$n_sdiff]{desc} = "added";
+            $rah_diff_L->[$n_sdiff]{lnum} = $n_L;
+        }
+#printf "%-30s %s %-30s\n", $line_L, $separator, $line_R;
+        ++$n_sdiff;
+    }
+#use Data::Dumper::Simple;
+#print Dumper($rah_diff_L, $rah_diff_R);
+
+    print "<- array_diff\n" if $opt_v > 2;
+} # 1}}}
+sub remove_leading_dir {                     # {{{1 
+    my @filenames = @_;
+    #
+    #  Input should be a list of file names
+    #  with the same leading directory such as
+    # 
+    #      dir1/dir2/a.txt
+    #      dir1/dir2/b.txt
+    #      dir1/dir2/dir3/c.txt
+    #
+    #  Output is the same list minus the common
+    #  directory path:
+    # 
+    #      a.txt
+    #      b.txt
+    #      dir3/c.txt
+    #
+    print "-> remove_leading_dir()\n" if $opt_v > 2;
+    my @D = (); # a matrix:   [ [ dir1, dir2 ],         # dir1/dir2/a.txt
+                #               [ dir1, dir2 ],         # dir1/dir2/b.txt
+                #               [ dir1, dir2 , dir3] ]  # dir1/dir2/dir3/c.txt
+    if ($ON_WINDOWS) {
+        foreach my $F (@filenames) {
+            $F =~ s{\\}{/}g;
+            $F = ucfirst($F) if $F =~ /^\w:/;  # uppercase drive letter
+        }
+    }
+    if (scalar @filenames == 1) {
+        # special case:  with only one filename
+        # cannot determine a baseline, just remove first directory level
+        $filenames[0] =~ s{^.*?/}{};
+        print "-> $filenames[0]\n";
+        return $filenames[0];
+    }
+    foreach my $F (@filenames) {
+        my ($Vol, $Dir, $File) = File::Spec->splitpath($F);
+        my @x = File::Spec->splitdir( $Dir );
+        pop @x unless $x[$#x]; # last entry usually null, remove it
+        if ($ON_WINDOWS) {
+            if (defined($Vol) and $Vol) {
+                # put the drive letter, eg, C:, at the front
+                unshift @x, uc $Vol;
+            }
+        }
+#print "F=$F, Dir=$Dir  x=[", join("][", @x), "]\n";
+        push @D, [ @x ];
+    }
+
+    # now loop over columns until either they are all
+    # eliminated or a unique column is found
+
+#use Data::Dumper::Simple;
+#print Dumper("remove_leading_dir after ", @D);
+
+    my @common   = ();  # to contain the common leading directories
+    my $mismatch = 0;
+    while (!$mismatch) {
+        for (my $row = 1; $row < scalar @D; $row++) {
+#print "comparing $D[$row][0] to $D[0][0]\n";
+
+            if (!defined $D[$row][0] or !defined $D[0][0] or
+                ($D[$row][0] ne $D[0][0])) {
+                $mismatch = 1;
+                last;
+            }
+        }
+#print "mismatch=$mismatch\n";
+        if (!$mismatch) {
+            push @common, $D[0][0];
+            # all terms in the leading match; unshift the batch
+            foreach my $ra (@D) {
+                shift @{$ra};
+            }
+        }
+    }
+
+    push @common, " ";  # so that $leading will end with "/ "
+    my $leading = File::Spec->catdir( @common );
+       $leading =~ s{ $}{};  # now take back the bogus appended space
+#print "remove_leading_dir leading=[$leading]\n"; die;
+    if ($ON_WINDOWS) {
+       $leading =~ s{\\}{/}g;
+    }
+    foreach my $F (@filenames) {
+        $F =~ s{^$leading}{};
+    }
+
+    print "<- remove_leading_dir()\n" if $opt_v > 2;
+    return @filenames;
+
+} # 1}}}
+sub align_by_pairs {                         # {{{1 
+    my ($rh_file_list_L        , # in
+        $rh_file_list_R        , # in
+        $ra_added              , # out
+        $ra_removed            , # out
+        $ra_compare_list       , # out
+        ) = @_;
+    print "-> align_by_pairs()\n" if $opt_v > 2;
+    @{$ra_compare_list} = ();
+
+    my @files_L = sort keys %{$rh_file_list_L};
+    my @files_R = sort keys %{$rh_file_list_R};
+    return () unless @files_L or  @files_R;  # at least one must have stuff
+    if      ( @files_L and !@files_R) {
+        # left side has stuff, right side is empty; everything deleted
+        @{$ra_added   }     = ();
+        @{$ra_removed }     = @files_L;
+        @{$ra_compare_list} = ();
+        return;
+    } elsif (!@files_L and  @files_R) {
+        # left side is empty, right side has stuff; everything added
+        @{$ra_added   }     = @files_R;
+        @{$ra_removed }     = ();
+        @{$ra_compare_list} = ();
+        return;
+    }
+#use Data::Dumper::Simple;
+#print Dumper("align_by_pairs", @files_L, @files_R);
+#die;
+    if (scalar @files_L == 1 and scalar @files_R == 1) {
+        # The easy case:  compare two files.
+        push @{$ra_compare_list}, [ $files_L[0],  $files_R[0] ]; 
+        @{$ra_added  } = ();
+        @{$ra_removed} = ();
+        return;
+    }
+    # The harder case:  compare groups of files.  This only works
+    # if the groups are in different directories so the first step
+    # is to strip the leading directory names from file lists to
+    # make it possible to align by file names.
+    my @files_L_minus_dir = remove_leading_dir(@files_L);
+    my @files_R_minus_dir = remove_leading_dir(@files_R);
+
+    # Keys of the stripped_X arrays are canonical file names;
+    # should overlap mostly.  Keys in stripped_L but not in
+    # stripped_R are files that have been deleted.  Keys in
+    # stripped_R but not in stripped_L have been added.
+    my %stripped_L = ();
+       @stripped_L{ @files_L_minus_dir } = @files_L;
+    my %stripped_R = ();
+       @stripped_R{ @files_R_minus_dir } = @files_R;
+
+    my %common = ();
+    foreach my $f (keys %stripped_L) {
+        $common{$f}  = 1 if     defined $stripped_R{$f};
+    }
+
+    my %deleted = ();
+    foreach my $f (keys %stripped_L) {
+        $deleted{$stripped_L{$f}} = $f unless defined $stripped_R{$f};
+    }
+
+    my %added = ();
+    foreach my $f (keys %stripped_R) {
+        $added{$stripped_R{$f}}   = $f unless defined $stripped_L{$f};
+    }
+
+#use Data::Dumper::Simple;
+#print Dumper("align_by_pairs", %stripped_L, %stripped_R);
+#print Dumper("align_by_pairs", %common, %added, %deleted);
+    
+    foreach my $f (keys %common) {
+        push @{$ra_compare_list}, [ $stripped_L{$f},  
+                                    $stripped_R{$f} ]; 
+    }
+    @{$ra_added   } = keys %added  ;
+    @{$ra_removed } = keys %deleted;
+
+    print "<- align_by_pairs()\n" if $opt_v > 2;
+    return;
+#print Dumper("align_by_pairs", @files_L_minus_dir, @files_R_minus_dir);
+#die;
+} # 1}}}
+sub html_header {                            # {{{1
+    my ($title , ) = @_;
+
+    print "-> html_header\n" if $opt_v > 2;
+    return 
+'<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta name="GENERATOR" content="cloc http://cloc.sourceforge.net">
+' .
+"
+<!-- Created by $script v$VERSION -->
+<title>$title</title>
+" .
+'
+<style TYPE="text/css">
+<!--
+    body {
+        color: black;
+        background-color: white;
+        font-family: monospace
+    }
+
+    .whitespace {
+        background-color: gray;
+    }
+
+    .comment {
+        color: gray;
+        font-style: italic;
+    }
+
+    .clinenum {
+        color: red;
+    }
+
+    .linenum {
+        color: green;
+    }
+ -->
+</style>
+</head>
+<body>
+<pre><tt>
+';
+    print "<- html_header\n" if $opt_v > 2;
+} # 1}}}
+sub html_end {                               # {{{1
+return 
+'</tt></pre>
+</body>
+</html>
+';
+} # 1}}}
+sub die_unknown_lang {                       # {{{1
+    my ($lang, $option_name) = @_;
+    die "Unknown language '$lang' used with $option_name option.  " .
+        "The command\n  $script --show-lang\n" .
+        "will print all recognized languages.  Language names are " .
+        "case sensitive.\n" ;
+} # 1}}}
+sub unicode_file {                           # {{{1
+    my $file = shift @_; 
+
+    print "-> unicode_file($file)\n" if $opt_v > 2;
+    return 0 if (-s $file > 2_000_000);  
+    # don't bother trying to test binary files bigger than 2 MB
+
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        warn "Unable to read $file; ignoring.\n";
+        return 0;
+    }
+    my @lines = <$IN>;
+    $IN->close;
+
+    if (unicode_to_ascii( join('', @lines) )) {
+        print "<- unicode_file()\n" if $opt_v > 2;
+        return 1;
+    } else {
+        print "<- unicode_file()\n" if $opt_v > 2;
+        return 0;
+    }
+
+} # 1}}}
+sub unicode_to_ascii {                       # {{{1
+    my $string = shift @_; 
+
+    # A trivial attempt to convert UTF-16 little or big endian
+    # files into ASCII.  These files exhibit the following byte
+    # sequence:
+    #   byte   1:  255
+    #   byte   2:  254
+    #   byte   3:  ord of ASCII character
+    #   byte   4:    0
+    #   byte 3+i:  ord of ASCII character
+    #   byte 4+i:    0
+    # or
+    #   byte   1:  255
+    #   byte   2:  254
+    #   byte   3:    0
+    #   byte   4:  ord of ASCII character
+    #   byte 3+i:    0
+    #   byte 4+i:  ord of ASCII character
+
+    my $length  = length $string;
+#print "length=$length\n";
+    return '' if $length <= 3;
+    my @unicode = split(//, $string);
+
+    # check the first 100 characters for big or little endian UTF-16 encoding
+    my $max_peek = $length < 200 ? $length : 200;
+    my @view_1   = ();
+    for (my $i = 2; $i < $max_peek; $i += 2) { push @view_1, $unicode[$i] }
+    my @view_2   = ();
+    for (my $i = 3; $i < $max_peek; $i += 2) { push @view_2, $unicode[$i] }
+
+    my $points_1 = 0;
+    foreach my $C (@view_1) {
+        ++$points_1 if (32 <= ord($C) and ord($C) <= 127) or ord($C) == 13
+                                                          or ord($C) == 10
+                                                          or ord($C) ==  9;
+    }
+
+    my $points_2 = 0;
+    foreach my $C (@view_2) {
+        ++$points_2 if (32 <= ord($C) and ord($C) <= 127) or ord($C) == 13
+                                                          or ord($C) == 10
+                                                          or ord($C) ==  9;
+    }
+#print "points 1: $points_1\n";
+#print "points 2: $points_2\n";
+
+    my $offset = undef;
+    if    ($points_1 > 90) { $offset = 2; }
+    elsif ($points_2 > 90) { $offset = 3; }
+    else                   { return '' }  # neither big or little endian UTF-16
+
+    my @ascii              = ();
+    for (my $i = $offset; $i < $length; $i += 2) { push @ascii, $unicode[$i]; }
+    return join("", @ascii);
+} # 1}}}
+sub uncompress_archive_cmd {                 # {{{1
+    my ($archive_file, ) = @_;
+
+    # Wrap $archive_file in single or double quotes in the system
+    # commands below to avoid filename chicanery (including
+    # spaces in the names).
+
+    print "-> uncompress_archive_cmd($archive_file)\n" if $opt_v > 2;
+    my $extract_cmd = "";
+    my $missing     = "";
+    if ($opt_extract_with) {
+        ( $extract_cmd = $opt_extract_with ) =~ s/>FILE</$archive_file/g;
+    } elsif (basename($archive_file) eq "-" and !$ON_WINDOWS) {
+        $extract_cmd = "cat > -";
+    } elsif (($archive_file =~ /\.tar\.(gz|Z)$/ or 
+              $archive_file =~ /\.tgz$/       ) and !$ON_WINDOWS)    {
+        if (external_utility_exists("gzip --version")) {
+            if (external_utility_exists("tar --version")) {
+                $extract_cmd = "gzip -dc '$archive_file' | tar xf -";
+            } else {
+                $missing = "tar";
+            }
+        } else {
+            $missing = "gzip";
+        }
+    } elsif ($archive_file =~ /\.tar\.bz2$/ and !$ON_WINDOWS)    {
+        if (external_utility_exists("bzip2 --help")) {
+            if (external_utility_exists("tar --version")) {
+                $extract_cmd = "bzip2 -dc '$archive_file' | tar xf -";
+            } else {
+                $missing = "tar";
+            }
+        } else {
+            $missing = "bzip2";
+        }
+    } elsif ($archive_file =~ /\.tar\.xz$/ and !$ON_WINDOWS)    {
+        if (external_utility_exists("unxz --version")) {
+            if (external_utility_exists("tar --version")) {
+                $extract_cmd = "unxz -dc '$archive_file' | tar xf -";
+            } else {
+                $missing = "tar";
+            }
+        } else {
+            $missing = "bzip2";
+        }
+    } elsif ($archive_file =~ /\.tar$/ and !$ON_WINDOWS)    {
+        $extract_cmd = "tar xf '$archive_file'";
+    } elsif ($archive_file =~ /\.src\.rpm$/i and !$ON_WINDOWS) {
+        if (external_utility_exists("cpio --version")) {
+            if (external_utility_exists("rpm2cpio")) {
+                $extract_cmd = "rpm2cpio '$archive_file' | cpio -i";
+            } else {
+                $missing = "rpm2cpio";
+            }
+        } else {
+            $missing = "bzip2";
+        }
+    } elsif ($archive_file =~ /\.zip$/i and !$ON_WINDOWS)    {
+        if (external_utility_exists("unzip")) {
+            $extract_cmd = "unzip -qq -d . '$archive_file'";
+        } else {
+            $missing = "unzip";
+        }
+    } elsif ($ON_WINDOWS and $archive_file =~ /\.zip$/i) {
+        # zip on Windows, guess default Winzip install location
+        $extract_cmd = "";
+        my $WinZip = '"C:\\Program Files\\WinZip\\WinZip32.exe"';
+        if (external_utility_exists($WinZip)) {
+            $extract_cmd = "$WinZip -e -o \"$archive_file\" .";
+#print "trace 5 extract_cmd=[$extract_cmd]\n";
+        } else {
+#print "trace 6\n";
+            $missing = $WinZip;
+        }
+    }
+    print "<- uncompress_archive_cmd\n" if $opt_v > 2;
+    if ($missing) {
+        die "Unable to expand $archive_file because external\n",
+            "utility '$missing' is not available.\n",
+            "Another possibility is to use the --extract-with option.\n";
+    } else {
+        return $extract_cmd;
+    }
+}
+# 1}}}
+sub read_list_file {                         # {{{1
+    my ($file, ) = @_;
+
+    print "-> read_list_file($file)\n" if $opt_v > 2;
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        warn "Unable to read $file; ignoring.\n";
+        next;
+    }
+    my @entry = ();
+    while (<$IN>) {
+        next if /^\s*$/ or /^\s*#/; # skip empty or commented lines
+        chomp;
+        push @entry, $_;
+    }
+    $IN->close;
+
+    print "<- read_list_file\n" if $opt_v > 2;
+    return @entry;
+}
+# 1}}}
+sub external_utility_exists {                # {{{1
+    my $exe = shift @_;
+
+    my $success      = 0;
+    if ($ON_WINDOWS) {
+        $success = 1 unless system $exe . ' > nul';
+    } else {
+        $success = 1 unless system $exe . ' >/dev/null 2>&1';
+        if (!$success) {
+            $success = 1 unless system "which" . " $exe" . ' >/dev/null 2>&1';
+        }
+    }
+    
+    return $success;
+} # 1}}}
+sub write_xsl_file {                         # {{{1
+    my $OUT = new IO::File $CLOC_XSL, "w";
+    if (!defined $OUT) {
+        warn "Unable to write $CLOC_XSL  $!\n";
+        return;
+    }
+    my $XSL =             # <style>  </style> {{{2
+'<?xml version="1.0" encoding="US-ASCII"?>
+<!-- XLS file by Paul Schwann, January 2009.
+     Fixes for by-file and by-file-by-lang by d_uragan, November 2010.
+     -->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:output method="html"/>
+  <xsl:template match="/">
+    <html xmlns="http://www.w3.org/1999/xhtml">
+      <head>
+        <title>CLOC Results</title>
+      </head>
+      <style type="text/css">
+        table {
+          table-layout: auto;
+          border-collapse: collapse;
+          empty-cells: show;
+        }
+        td, th {
+          padding: 4px;
+        }
+        th {
+          background-color: #CCCCCC;
+        }
+        td {
+          text-align: center;
+        }
+        table, td, tr, th {
+          border: thin solid #999999;
+        }
+      </style>
+      <body>
+        <h3><xsl:value-of select="results/header"/></h3>
+';
+# 2}}}
+
+    if ($opt_by_file) {
+        $XSL .=             # <table> </table>{{{2
+'        <table>
+          <thead>
+            <tr>
+              <th>File</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>
+              <th>Language</th>
+';
+        $XSL .=
+'             <th>3<sup>rd</sup> Generation Equivalent</th>
+              <th>Scale</th>
+' if $opt_3;
+        $XSL .=
+'           </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="results/files/file">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>
+              <td><xsl:value-of select="@language"/></td>
+';
+        $XSL .=
+'             <td><xsl:value-of select="@factor"/></td>
+              <td><xsl:value-of select="@scaled"/></td>
+' if $opt_3;
+        $XSL .=
+'           </tr>
+          </xsl:for-each>
+            <tr>
+              <th>Total</th>
+              <th><xsl:value-of select="results/files/total/@blank"/></th>
+              <th><xsl:value-of select="results/files/total/@comment"/></th>
+              <th><xsl:value-of select="results/files/total/@code"/></th>
+              <th><xsl:value-of select="results/files/total/@language"/></th>
+';
+        $XSL .=
+'             <th><xsl:value-of select="results/files/total/@factor"/></th>
+              <th><xsl:value-of select="results/files/total/@scaled"/></th>
+' if $opt_3;
+        $XSL .=
+'           </tr>
+          </tbody>
+        </table>
+        <br/>
+';
+# 2}}}
+    }
+
+    if (!$opt_by_file or $opt_by_file_by_lang) {
+        $XSL .=             # <table> </table> {{{2
+'       <table>
+          <thead>
+            <tr>
+              <th>Language</th>
+              <th>Files</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>
+';
+        $XSL .=
+'             <th>Scale</th>
+              <th>3<sup>rd</sup> Generation Equivalent</th>
+' if $opt_3;
+        $XSL .=
+'           </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="results/languages/language">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@files_count"/></td>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>
+';
+        $XSL .=
+'             <td><xsl:value-of select="@factor"/></td>
+              <td><xsl:value-of select="@scaled"/></td>
+' if $opt_3;
+        $XSL .=
+'          </tr>
+          </xsl:for-each>
+            <tr>
+              <th>Total</th>
+              <th><xsl:value-of select="results/languages/total/@sum_files"/></th>
+              <th><xsl:value-of select="results/languages/total/@blank"/></th>
+              <th><xsl:value-of select="results/languages/total/@comment"/></th>
+              <th><xsl:value-of select="results/languages/total/@code"/></th>
+';
+        $XSL .=
+'             <th><xsl:value-of select="results/languages/total/@factor"/></th>
+              <th><xsl:value-of select="results/languages/total/@scaled"/></th>
+' if $opt_3;
+        $XSL .=
+'           </tr>
+          </tbody>
+        </table>
+';
+# 2}}}
+    }
+
+    $XSL.= <<'EO_XSL'; # {{{2
+      </body>
+    </html>
+  </xsl:template>
+</xsl:stylesheet>
+
+EO_XSL
+# 2}}}
+
+    my $XSL_DIFF = <<'EO_DIFF_XSL'; # {{{2
+<?xml version="1.0" encoding="US-ASCII"?>
+<!-- XLS file by Blazej Kroll, November 2010 -->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:output method="html"/>
+  <xsl:template match="/">
+    <html xmlns="http://www.w3.org/1999/xhtml">
+      <head>
+        <title>CLOC Results</title>
+      </head>
+      <style type="text/css">
+        table {
+          table-layout: auto;
+          border-collapse: collapse;
+          empty-cells: show;
+		  margin: 1em;
+        }
+        td, th {
+          padding: 4px;
+        }
+        th {
+          background-color: #CCCCCC;
+        }
+        td {
+          text-align: center;
+        }
+        table, td, tr, th {
+          border: thin solid #999999;
+        }
+      </style>
+      <body>
+        <h3><xsl:value-of select="results/header"/></h3>
+EO_DIFF_XSL
+# 2}}}
+
+    if ($opt_by_file) {
+        $XSL_DIFF.= <<'EO_DIFF_XSL'; # {{{2
+		<table>
+          <thead>
+		  <tr><th colspan="4">Same</th>
+		  </tr>
+            <tr>
+              <th>File</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>              
+            </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="diff_results/same/file">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>              
+            </tr>
+          </xsl:for-each>            
+          </tbody>
+        </table>
+		
+		<table>
+          <thead>
+		  <tr><th colspan="4">Modified</th>
+		  </tr>
+            <tr>
+              <th>File</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>              
+            </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="diff_results/modified/file">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>              
+            </tr>
+          </xsl:for-each>            
+          </tbody>
+        </table>
+		
+		<table>
+          <thead>
+		  <tr><th colspan="4">Added</th>
+		  </tr>
+            <tr>
+              <th>File</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>              
+            </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="diff_results/added/file">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>              
+            </tr>
+          </xsl:for-each>            
+          </tbody>
+        </table>
+		
+		<table>
+          <thead>
+		  <tr><th colspan="4">Removed</th>
+		  </tr>
+            <tr>
+              <th>File</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>              
+            </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="diff_results/removed/file">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>              
+            </tr>
+          </xsl:for-each>            
+          </tbody>
+        </table>
+EO_DIFF_XSL
+# 2}}}
+    }
+
+    if (!$opt_by_file or $opt_by_file_by_lang) {
+        $XSL_DIFF.= <<'EO_DIFF_XSL'; # {{{2
+		<table>
+          <thead>
+		  <tr><th colspan="5">Same</th>
+		  </tr>
+            <tr>
+              <th>Language</th>
+              <th>Files</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>              
+            </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="diff_results/same/language">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@files_count"/></td>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>              
+            </tr>
+          </xsl:for-each>            
+          </tbody>
+        </table>
+		
+		<table>
+          <thead>
+		  <tr><th colspan="5">Modified</th>
+		  </tr>
+            <tr>
+              <th>Language</th>
+              <th>Files</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>              
+            </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="diff_results/modified/language">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@files_count"/></td>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>              
+            </tr>
+          </xsl:for-each>            
+          </tbody>
+        </table>
+		
+		<table>
+          <thead>
+		  <tr><th colspan="5">Added</th>
+		  </tr>
+            <tr>
+              <th>Language</th>
+              <th>Files</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>              
+            </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="diff_results/added/language">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@files_count"/></td>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>              
+            </tr>
+          </xsl:for-each>            
+          </tbody>
+        </table>
+		
+		<table>
+          <thead>
+		  <tr><th colspan="5">Removed</th>
+		  </tr>
+            <tr>
+              <th>Language</th>
+              <th>Files</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>              
+            </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="diff_results/removed/language">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@files_count"/></td>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>              
+            </tr>
+          </xsl:for-each>            
+          </tbody>
+        </table>
+EO_DIFF_XSL
+# 2}}}
+
+    }
+    
+    $XSL_DIFF.= <<'EO_DIFF_XSL'; # {{{2
+      </body>
+    </html>
+  </xsl:template>
+</xsl:stylesheet>
+EO_DIFF_XSL
+# 2}}}
+    if ($opt_diff) {
+        print $OUT $XSL_DIFF;
+    } else {
+        print $OUT $XSL;
+    }
+    $OUT->close();
+} # 1}}}
+sub normalize_file_names {                   # {{{1 
+    my (@files, ) = @_;
+
+    # Returns a hash of file names reduced to a canonical form
+    # (fully qualified file names, all path separators changed to /,
+    # Windows file names lowercased).  Hash values are the original
+    # file name.
+
+    my %normalized = ();
+    foreach my $F (@files) {
+        my $F_norm = $F;
+        if ($ON_WINDOWS) {
+            $F_norm = lc $F_norm; # for case insensitive file name comparisons
+            $F_norm =~ s{\\}{/}g; # Windows directory separators to Unix
+            $F_norm =~ s{^\./}{}g;  # remove leading ./
+            if (($F_norm !~ m{^/}) and ($F_norm !~ m{^\w:/})) {
+                # looks like a relative path; prefix with cwd
+                $F_norm = lc "$cwd/$F_norm";
+            }
+        } else {
+            $F_norm =~ s{^\./}{}g;  # remove leading ./
+            if ($F_norm !~ m{^/}) {
+                # looks like a relative path; prefix with cwd
+                $F_norm = lc "$cwd/$F_norm";
+            }
+        }
+        $normalized{ $F_norm } = $F;
+    }
+    return %normalized;
+} # 1}}}
+sub combine_diffs {                          # {{{1
+    # subroutine by Andy (awalshe@sf.net)
+    # https://sourceforge.net/tracker/?func=detail&aid=3261017&group_id=174787&atid=870625
+    my ($ra_files) = @_;
+
+    my $res   = "$URL v $VERSION\n";
+    my $dl    = '-';
+    my $width = 79;
+    # columns are in this order
+    my @cols  = ('files', 'blank', 'comment', 'code');
+    my %HoH   = ();
+  
+    foreach my $file (@{$ra_files}) {
+        my $IN = new IO::File $file, "r";
+        if (!defined $IN) {
+            warn "Unable to read $file; ignoring.\n";
+            next;
+        }
+
+        my $sec;
+        while (<$IN>) {
+            next if /^(http|Language|-----)/;
+            if (/^[A-Za-z0-9]+/) {        # section title
+                $sec = $_;
+                chomp($sec);
+                $HoH{$sec} = () if ! exists $HoH{$sec};
+                next;
+            }
+  
+            if (/^\s(same|modified|added|removed)/) {  # calculated totals row
+                my @ar = grep { $_ ne '' } split(/ /, $_);
+                chomp(@ar);
+                my $ttl = shift @ar;
+                my $i = 0;
+                foreach(@ar) {
+                    my $t = "$ttl$dl$cols[$i]";
+                    $HoH{$sec}{$t} = 0 if ! exists $HoH{$sec}{$t};
+                    $HoH{$sec}{$t} += $_;
+                    $i++;
+                }
+            }
+        }
+        $IN->close;
+    }
+
+    # rows are in this order
+    my @rows = ('same', 'modified', 'added', 'removed');
+  
+    $res .= sprintf("%s\n", "-" x $width);
+    $res .= sprintf("%-19s %14s %14s %14s %14s\n", 'Language', 
+                    $cols[0], $cols[1], $cols[2], $cols[3]);
+    $res .= sprintf("%s\n", "-" x $width);
+  
+    for my $sec ( keys %HoH ) {
+        next if $sec =~ /SUM:/;
+        $res .= "$sec\n";
+        foreach (@rows) {
+            $res .= sprintf(" %-18s %14s %14s %14s %14s\n", 
+                            $_, $HoH{$sec}{"$_$dl$cols[0]"},
+                                $HoH{$sec}{"$_$dl$cols[1]"},
+                                $HoH{$sec}{"$_$dl$cols[2]"},
+                                $HoH{$sec}{"$_$dl$cols[3]"});
+        }
+    }
+    $res .= sprintf("%s\n", "-" x $width);
+    my $sec = 'SUM:';
+    $res .= "$sec\n";
+    foreach (@rows) {
+        $res .= sprintf(" %-18s %14s %14s %14s %14s\n", 
+                        $_, $HoH{$sec}{"$_$dl$cols[0]"},
+                            $HoH{$sec}{"$_$dl$cols[1]"},
+                            $HoH{$sec}{"$_$dl$cols[2]"},
+                            $HoH{$sec}{"$_$dl$cols[3]"});
+    }
+    $res .= sprintf("%s\n", "-" x $width);
+  
+    return $res;
+} # 1}}}
+sub get_time {                               # {{{1
+    if ($HAVE_Time_HiRes) {
+        return Time::HiRes::time();
+    } else {
+        return time();
+    }
+} # 1}}}
+# subroutines copied from SLOCCount
+my %lex_files    = ();  # really_is_lex()
+my %expect_files = ();  # really_is_expect()
+my %php_files    = ();  # really_is_php()
+sub really_is_lex {                          # {{{1
+# Given filename, returns TRUE if its contents really is lex.
+# lex file must have "%%", "%{", and "%}".
+# In theory, a lex file doesn't need "%{" and "%}", but in practice
+# they all have them, and requiring them avoid mislabeling a
+# non-lexfile as a lex file.
+
+ my $filename = shift;
+ chomp($filename);
+
+ my $is_lex = 0;      # Value to determine.
+ my $percent_percent = 0;
+ my $percent_opencurly = 0;
+ my $percent_closecurly = 0;
+
+ # Return cached result, if available:
+ if ($lex_files{$filename}) { return $lex_files{$filename};}
+
+ open(LEX_FILE, "<$filename") ||
+      die "Can't open $filename to determine if it's lex.\n";
+ while(<LEX_FILE>) {
+   $percent_percent++     if (m/^\s*\%\%/);
+   $percent_opencurly++   if (m/^\s*\%\{/);
+   $percent_closecurly++   if (m/^\s*\%\}/);
+ }
+ close(LEX_FILE);
+
+ if ($percent_percent && $percent_opencurly && $percent_closecurly)
+          {$is_lex = 1;}
+
+ $lex_files{$filename} = $is_lex; # Store result in cache.
+
+ return $is_lex;
+} # 1}}}
+sub really_is_expect {                       # {{{1
+# Given filename, returns TRUE if its contents really are Expect.
+# Many "exp" files (such as in Apache and Mesa) are just "export" data,
+# summarizing something else # (e.g., its interface).
+# Sometimes (like in RPM) it's just misc. data.
+# Thus, we need to look at the file to determine
+# if it's really an "expect" file.
+
+ my $filename = shift;
+ chomp($filename);
+
+# The heuristic is as follows: it's Expect _IF_ it:
+# 1. has "load_lib" command and either "#" comments or {}.
+# 2. {, }, and one of: proc, if, [...], expect
+
+ my $is_expect = 0;      # Value to determine.
+
+ my $begin_brace = 0;  # Lines that begin with curly braces.
+ my $end_brace = 0;    # Lines that begin with curly braces.
+ my $load_lib = 0;     # Lines with the Load_lib command.
+ my $found_proc = 0;
+ my $found_if = 0;
+ my $found_brackets = 0;
+ my $found_expect = 0;
+ my $found_pound = 0;
+
+ # Return cached result, if available:
+ if ($expect_files{$filename}) { return expect_files{$filename};}
+
+ open(EXPECT_FILE, "<$filename") ||
+      die "Can't open $filename to determine if it's expect.\n";
+ while(<EXPECT_FILE>) {
+
+   if (m/#/) {$found_pound++; s/#.*//;}
+   if (m/^\s*\{/) { $begin_brace++;}
+   if (m/\{\s*$/) { $begin_brace++;}
+   if (m/^\s*\}/) { $end_brace++;}
+   if (m/\};?\s*$/) { $end_brace++;}
+   if (m/^\s*load_lib\s+\S/) { $load_lib++;}
+   if (m/^\s*proc\s/) { $found_proc++;}
+   if (m/^\s*if\s/) { $found_if++;}
+   if (m/\[.*\]/) { $found_brackets++;}
+   if (m/^\s*expect\s/) { $found_expect++;}
+ }
+ close(EXPECT_FILE);
+
+ if ($load_lib && ($found_pound || ($begin_brace && $end_brace)))
+          {$is_expect = 1;}
+ if ( $begin_brace && $end_brace &&
+      ($found_proc || $found_if || $found_brackets || $found_expect))
+          {$is_expect = 1;}
+
+ $expect_files{$filename} = $is_expect; # Store result in cache.
+
+ return $is_expect;
+} # 1}}}
+sub really_is_pascal {                       # {{{1
+# Given filename, returns TRUE if its contents really are Pascal.
+
+# This isn't as obvious as it seems.
+# Many ".p" files are Perl files
+# (such as /usr/src/redhat/BUILD/ispell-3.1/dicts/czech/glob.p),
+# others are C extractions
+# (such as /usr/src/redhat/BUILD/linux/include/linux/umsdos_fs.p
+# and some files in linuxconf).
+# However, test files in "p2c" really are Pascal, for example.
+
+# Note that /usr/src/redhat/BUILD/ucd-snmp-4.1.1/ov/bitmaps/UCD.20.p
+# is actually C code.  The heuristics determine that they're not Pascal,
+# but because it ends in ".p" it's not counted as C code either.
+# I believe this is actually correct behavior, because frankly it
+# looks like it's automatically generated (it's a bitmap expressed as code).
+# Rather than guess otherwise, we don't include it in a list of
+# source files.  Let's face it, someone who creates C files ending in ".p"
+# and expects them to be counted by default as C files in SLOCCount needs
+# their head examined.  I suggest examining their head
+# with a sucker rod (see syslogd(8) for more on sucker rods).
+
+# This heuristic counts as Pascal such files such as:
+#  /usr/src/redhat/BUILD/teTeX-1.0/texk/web2c/tangleboot.p
+# Which is hand-generated.  We don't count woven documents now anyway,
+# so this is justifiable.
+
+ my $filename = shift;
+ chomp($filename);
+
+# The heuristic is as follows: it's Pascal _IF_ it has all of the following
+# (ignoring {...} and (*...*) comments):
+# 1. "^..program NAME" or "^..unit NAME",
+# 2. "procedure", "function", "^..interface", or "^..implementation",
+# 3. a "begin", and
+# 4. it ends with "end.",
+#
+# Or it has all of the following:
+# 1. "^..module NAME" and
+# 2. it ends with "end.".
+#
+# Or it has all of the following:
+# 1. "^..program NAME",
+# 2. a "begin", and
+# 3. it ends with "end.".
+#
+# The "end." requirements in particular filter out non-Pascal.
+#
+# Note (jgb): this does not detect Pascal main files in fpc, like
+# fpc-1.0.4/api/test/testterminfo.pas, which does not have "program" in
+# it
+
+ my $is_pascal = 0;      # Value to determine.
+
+ my $has_program = 0;
+ my $has_unit = 0;
+ my $has_module = 0;
+ my $has_procedure_or_function = 0;
+ my $found_begin = 0;
+ my $found_terminating_end = 0;
+ my $has_begin = 0;
+
+ open(PASCAL_FILE, "<$filename") ||
+      die "Can't open $filename to determine if it's pascal.\n";
+ while(<PASCAL_FILE>) {
+   s/\{.*?\}//g;  # Ignore {...} comments on this line; imperfect, but effective.
+   s/\(\*.*?\*\)//g;  # Ignore (*...*) comments on this line; imperfect, but effective.
+   if (m/\bprogram\s+[A-Za-z]/i)  {$has_program=1;}
+   if (m/\bunit\s+[A-Za-z]/i)     {$has_unit=1;}
+   if (m/\bmodule\s+[A-Za-z]/i)   {$has_module=1;}
+   if (m/\bprocedure\b/i)         { $has_procedure_or_function = 1; }
+   if (m/\bfunction\b/i)          { $has_procedure_or_function = 1; }
+   if (m/^\s*interface\s+/i)      { $has_procedure_or_function = 1; }
+   if (m/^\s*implementation\s+/i) { $has_procedure_or_function = 1; }
+   if (m/\bbegin\b/i) { $has_begin = 1; }
+   # Originally I said:
+   # "This heuristic fails if there are multi-line comments after
+   # "end."; I haven't seen that in real Pascal programs:"
+   # But jgb found there are a good quantity of them in Debian, specially in 
+   # fpc (at the end of a lot of files there is a multiline comment
+   # with the changelog for the file).
+   # Therefore, assume Pascal if "end." appears anywhere in the file.
+   if (m/end\.\s*$/i) {$found_terminating_end = 1;}
+#   elsif (m/\S/) {$found_terminating_end = 0;}
+ }
+ close(PASCAL_FILE);
+
+ # Okay, we've examined the entire file looking for clues;
+ # let's use those clues to determine if it's really Pascal:
+
+ if ( ( ($has_unit || $has_program) && $has_procedure_or_function &&
+     $has_begin && $found_terminating_end ) ||
+      ( $has_module && $found_terminating_end ) ||
+      ( $has_program && $has_begin && $found_terminating_end ) )
+          {$is_pascal = 1;}
+
+ return $is_pascal;
+} # 1}}}
+sub really_is_incpascal {                    # {{{1
+# Given filename, returns TRUE if its contents really are Pascal.
+# For .inc files (mainly seen in fpc)
+
+ my $filename = shift;
+ chomp($filename);
+
+# The heuristic is as follows: it is Pacal if any of the following:
+# 1. really_is_pascal returns true
+# 2. Any usual reserverd word is found (program, unit, const, begin...)
+
+ # If the general routine for Pascal files works, we have it
+ if (really_is_pascal($filename)) { 
+   return 1;
+ }
+
+ my $is_pascal = 0;      # Value to determine.
+ my $found_begin = 0;
+
+ open(PASCAL_FILE, "<$filename") ||
+      die "Can't open $filename to determine if it's pascal.\n";
+ while(<PASCAL_FILE>) {
+   s/\{.*?\}//g;  # Ignore {...} comments on this line; imperfect, but effective.
+   s/\(\*.*?\*\)//g;  # Ignore (*...*) comments on this line; imperfect, but effective.
+   if (m/\bprogram\s+[A-Za-z]/i)  {$is_pascal=1;}
+   if (m/\bunit\s+[A-Za-z]/i)     {$is_pascal=1;}
+   if (m/\bmodule\s+[A-Za-z]/i)   {$is_pascal=1;}
+   if (m/\bprocedure\b/i)         {$is_pascal = 1; }
+   if (m/\bfunction\b/i)          {$is_pascal = 1; }
+   if (m/^\s*interface\s+/i)      {$is_pascal = 1; }
+   if (m/^\s*implementation\s+/i) {$is_pascal = 1; }
+   if (m/\bconstant\s+/i)         {$is_pascal=1;}
+   if (m/\bbegin\b/i) { $found_begin = 1; }
+   if ((m/end\.\s*$/i) && ($found_begin = 1)) {$is_pascal = 1;}
+   if ($is_pascal) {
+     last;
+   }
+ }
+
+ close(PASCAL_FILE);
+ return $is_pascal;
+} # 1}}}
+sub really_is_php {                          # {{{1
+# Given filename, returns TRUE if its contents really is php.
+
+ my $filename = shift;
+ chomp($filename);
+
+ my $is_php = 0;      # Value to determine.
+ # Need to find a matching pair of surrounds, with ending after beginning:
+ my $normal_surround = 0;  # <?; bit 0 = <?, bit 1 = ?>
+ my $script_surround = 0;  # <script..>; bit 0 = <script language="php">
+ my $asp_surround = 0;     # <%; bit 0 = <%, bit 1 = %>
+
+ # Return cached result, if available:
+ if ($php_files{$filename}) { return $php_files{$filename};}
+
+ open(PHP_FILE, "<$filename") ||
+      die "Can't open $filename to determine if it's php.\n";
+ while(<PHP_FILE>) {
+   if (m/\<\?/)                           { $normal_surround |= 1; }
+   if (m/\?\>/ && ($normal_surround & 1)) { $normal_surround |= 2; }
+   if (m/\<script.*language="?php"?/i)    { $script_surround |= 1; }
+   if (m/\<\/script\>/i && ($script_surround & 1)) { $script_surround |= 2; }
+   if (m/\<\%/)                           { $asp_surround |= 1; }
+   if (m/\%\>/ && ($asp_surround & 1)) { $asp_surround |= 2; }
+ }
+ close(PHP_FILE);
+
+ if ( ($normal_surround == 3) || ($script_surround == 3) ||
+      ($asp_surround == 3)) {
+   $is_php = 1;
+ }
+
+ $php_files{$filename} = $is_php; # Store result in cache.
+
+ return $is_php;
+} # 1}}}
+__END__
+mode values (stat $item)[2]
+       Unix    Windows
+file:  33188   33206
+dir :  16832   16895
+link:  33261   33206
+pipe:   4544    null
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/cloc2html.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/cloc2html.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/cloc2html.py	(revision 21239)
@@ -0,0 +1,85 @@
+#!/usr/bin/env python
+# -*- coding: ISO-8859-1 -*-
+#inspired from http://qwiki.stanford.edu/images/d/df/Latex2qwiki.txt
+import sys, re, os
+
+ISSM_DIR=os.getenv('ISSM_DIR');
+if(not ISSM_DIR): raise NameError('ISSM_DIR undefined')
+
+infile  = open('temp','r')
+outfile = open('temp.html','w')
+file_text  = infile.readlines()
+
+#write header
+outfile.write('<table width="600px" rules=none border=0 bordercolor="#000000" cellpadding="3" align="center" style="border-collapse:collapse;">\n')
+style_r='style="text-align:right;"'
+style_c='style="text-align:center;"'
+style_l='style="text-align:left;"'
+color = ' bgcolor=#7AA9DD ' #dark blue
+color1 = ' bgcolor=#C6E2FF ' #light blue
+color2 = ' bgcolor=#FFFFFF ' #white
+
+count = 0 
+toggle = 0
+for i in range(len(file_text)):
+
+	#Get current lines except if first line
+	if(i==0): continue
+	line = file_text[i]
+
+	pattern=r"----------------"
+	if (re.search(pattern,line)):
+		count+=1
+		continue
+
+	if(count==1):
+		mystr = '<tr>\n'
+		column = 1
+		for i in line.split():
+			if(column==1): mystr += '<th '+color+style_l+'>'+i+'</th>'; column+=1
+			else:          mystr += '<th '+color+style_r+'>'+i+'</th>'
+		mystr += '<th '+color+style_r+'>Total</th>\n</th>\n'
+	elif(count==2):
+		total  = 0
+		column = 1
+		if(toggle): mystr = '<tr>\n<th '+color1+style_l+'>'
+		else:       mystr = '<tr>\n<th '+color2+style_l+'>'
+		for i in line.split():
+			if(not i.isdigit() or (i.isdigit and int(i)==77)):
+				mystr += ' '+i+' '
+			else:
+				if(column==1): mystr += '</th>'
+				if(column>=2): total += int(i)
+				if(toggle): mystr += '<td '+color1+style_r+'>'+i+'</td>'
+				else:       mystr += '<td '+color2+style_r+'>'+i+'</td>'
+				column += 1
+		if(toggle): mystr += '<td '+color1+style_r+'>'+str(total)+'</td>\n</tr>\n'
+		else:       mystr += '<td '+color2+style_r+'>'+str(total)+'</td>\n</tr>\n'
+		toggle = 1 - toggle
+	elif(count==3):
+		total  = 0
+		column = 1
+		if(toggle): mystr = '<tr>\n<th '+color1+style_l+'>'
+		else:       mystr = '<tr>\n<th '+color2+style_l+'>'
+		for i in line.split():
+			if(not i.isdigit()):
+				mystr += ' '+i+' '
+			else:
+				if(column==1): mystr += '</th>'
+				if(column>=2): total += int(i)
+				if(toggle): mystr += '<td '+color1+style_r+'>'+i+'</td>'
+				else:       mystr += '<td '+color2+style_r+'>'+i+'</td>'
+				column += 1
+		if(toggle): mystr += '<td '+color1+style_r+'>'+str(total)+'</td>\n</tr>\n'
+		else:       mystr += '<td '+color2+style_r+'>'+str(total)+'</td>\n</tr>\n'
+	else:
+		continue
+
+	outfile.write(mystr)
+
+#write header
+outfile.write('</table>\n')
+
+#close all files
+infile.close()
+outfile.close()
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/convertmatlabclasses.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/convertmatlabclasses.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/convertmatlabclasses.py	(revision 21239)
@@ -0,0 +1,156 @@
+#!/usr/bin/env python
+# -*- coding: ISO-8859-1 -*-
+import sys, re, os, shutil
+
+#get names of all directories to process
+ISSM_DIR=os.getenv('ISSM_DIR');
+if(not ISSM_DIR): raise NameError('ISSM_DIR undefined')
+newclassesdir = ISSM_DIR + '/src/m/classes/'
+oldclassesdir = ISSM_DIR + '/src/m/oldclasses/'
+
+#make new directory
+if(os.path.exists(oldclassesdir)):shutil.rmtree(oldclassesdir)
+os.mkdir(oldclassesdir)
+
+#prepare subsref and subsasgn
+#{{{
+subsasgntext = r'''
+function obj = subsasgn(obj,index,val)
+obj=builtin('subsasgn',obj,index,val);
+'''
+subsreftext = r'''
+function obj = subsref(obj,index)
+obj=builtin('subsref',obj,index);
+'''
+#}}}
+
+#copy all files from new classes
+files = os.listdir(newclassesdir)
+for filename in files:
+	newpath = newclassesdir + filename
+	oldpath = oldclassesdir + filename
+	if(filename==".svn"):         continue
+	if(filename.endswith(".m")):  shutil.copy(newpath,oldpath)
+	if(filename.startswith("@")): shutil.copytree(newpath,oldpath)
+	if(filename=="clusters"):
+		files2 = os.listdir(newpath)
+		for filename2 in files2:
+			if(filename2==".svn"): continue
+			newpath = newclassesdir + filename +'/'+ filename2
+			oldpath = oldclassesdir + filename2
+			shutil.copy(newpath,oldpath)
+	if(filename=="model"):
+		shutil.copy(newpath+'/model.m'     ,oldclassesdir+'model.m');
+	if(filename=="qmu"):
+		shutil.copytree(newpath+'/@dakota_method',oldclassesdir+'/@dakota_method')
+		files2 = os.listdir(newpath)
+		for filename2 in files2:
+			if(filename2==".svn"): continue
+			if(filename2=="@dakota_method"): continue
+			newpath = newclassesdir + filename +'/'+ filename2
+			oldpath = oldclassesdir + filename2
+			shutil.copy(newpath,oldpath)
+
+files = os.listdir(oldclassesdir)
+#prepare properties
+#{{{
+propertiesfile = open(oldclassesdir+'/properties.m','w')
+propertiesfile.write("function out=properties(classname)\n");
+#}}}
+for file in files:
+	if(not file.endswith(".m")): continue;
+	print "converting " + file + " from new to old Matlab class definition..."
+	infile     = open(oldclassesdir+file,'r')
+	classname  = (re.compile(r"\.m")).sub("",file)
+	dirname    = oldclassesdir+'/@'+classname
+	step       = 0
+	properties = ""
+
+	#create directory
+	if(not os.path.exists(dirname)):
+		#print "Directory " + dirname + " does not exist, creating...";
+		os.mkdir(dirname)
+
+	#Process file
+	file_text  = infile.readlines()
+	for i in range(len(file_text)-2):
+		mystr  = file_text[i];
+
+		if("properties" in mystr and step==0): step  = 1; continue
+		if("methods"    in mystr and step==1): step  = 2; continue
+		if("function "   in mystr and step==2): step += 1; 
+
+		if(step==1):
+			if("end" in mystr): continue
+			property = mystr.lstrip();
+			property = re.sub(r"%.*$","",property);
+			property = re.sub(r"\n","",property);
+			if(len(property)):
+				properties = properties + 'OBJ' + property + ";\n"
+
+		if("function " in mystr):
+
+			#close previous file
+			if(step>3): outfile.close()
+
+			#get function name
+			mystr2 = (re.compile("=")).sub(" ",mystr); #replaces equal signs by blank space
+			mystr2 = (re.compile("\(")).sub(" ( ",mystr2); #add blank spaces before and after (
+			list=mystr2.split();
+			for j in range(len(list)):
+				word=list[j];
+				if(word=='('): break
+			objectname   = list[1]
+			functionname = list[j-1]
+			objectname = re.sub("\[","",objectname);
+			objectname = re.sub("\]","",objectname);
+			if(functionname == "disp"): functionname = "display"
+			outfile = open(dirname + '/' + functionname + '.m','w')
+
+			#deal with constructor
+			if(functionname==classname):
+
+				properties2 = re.sub("OBJ",objectname + '.',properties);
+				#write function declaration
+				outfile.write(mystr)
+				#write properties
+				outfile.write(properties2)
+				#write set class
+				outfile.write(objectname + "=class(" + objectname + ",'" + classname + "');\n")
+
+				#update properties list
+				properties2=properties2.split('\n')
+				propertiesfile2 = open(dirname + '/properties.m','w')
+				propertiesfile2.write("function out=properties(obj),\n")
+				propertiesfile2.write('\tout=cell('+str(len(properties2)-1)+',1);\n')
+				propertiesfile.write("if strcmp(classname,'"+ classname +"'),\n")
+				propertiesfile.write('\tout=cell('+str(len(properties2)-1)+',1);\n')
+				for j in range(len(properties2)-1):
+					property = re.sub(r"=.*$","",properties2[j]);
+					property = property.strip()
+					property = re.sub(objectname+'.',"",property);
+					propertiesfile.write('\tout{' + str(j+1) + "}='" + property + "';\n")
+					propertiesfile2.write('\tout{' + str(j+1) + "}='" + property + "';\n")
+				propertiesfile.write('end\n')
+				continue
+
+		#write file
+		if(step>2): outfile.write(mystr)
+
+	#close all files and delete m file
+	if(step>3):outfile.close()
+	infile.close()
+	os.remove(oldclassesdir+file)
+
+	#Add subsref and subsasgn
+	outfile = open(dirname+'/subsasgn.m','w')
+	outfile.write(subsasgntext)
+	outfile.close()
+	outfile = open(dirname+'/subsref.m','w')
+	outfile.write(subsreftext)
+	outfile.close()
+
+
+#close all files
+propertiesfile.close()
+#shutil.rmtree(newclassesdir)
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/cppcheck.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/cppcheck.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/cppcheck.sh	(revision 21239)
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+#comprehensive check, except unusedFunction
+#cppcheck -j 32 --include=$ISSM_DIR/config.h -DHAVE_CONFIG_H -D_HAVE_ADOLC_ -D_HAVE_DAKOTA_ --enable=all $ISSM_DIR/src/c 2> CPPCHECK.err
+
+#unused function only (slow)
+cppcheck --include=$ISSM_DIR/config.h -DHAVE_CONFIG_H -D_HAVE_ADOLC_ -D_HAVE_DAKOTA_ --enable=unusedFunction $ISSM_DIR/src 2> CPPCHECK.err
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/getloc.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/getloc.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/getloc.sh	(revision 21239)
@@ -0,0 +1,11 @@
+#!/bin/bash
+#get number of lines of code
+cloc-1.60.pl $ISSM_DIR/src $ISSM_DIR/m4 --exclude-dir=.svn --exclude-dir=ad  --exclude-ext=exp --exclude-lang=make --out=temp
+cat temp
+./cloc2html.py
+rm temp
+
+cat $ISSM_DIR/src/dox/issm.dox | sed '/<table/,//d' > input1
+cat $ISSM_DIR/src/dox/issm.dox | sed '1,/<\/table>/d' > input2
+cat input1 temp.html input2 > $ISSM_DIR/src/dox/issm.dox
+rm input1 input2 temp.html
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/historyISSM.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/historyISSM.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/historyISSM.m	(revision 21239)
@@ -0,0 +1,7 @@
+!vim runme.m
+runme('id',[101]);
+md.mesh.numberofelements
+md=solve(md,TransientSolutionEnum);
+md=solve(md,StressbalanceSolutionEnum);
+plotmodel(md,'data',md.results.StressbalanceSolution.Vel)
+plotmodel(md,'data',)
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/installExternalPackages.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/installExternalPackages.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/installExternalPackages.sh	(revision 21239)
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+#Jenkins xml files for individual packages
+EXTERNAL_TEST_FILE="$ISSM_DIR/nightlylog/results/external.xml"
+mkdir -p $ISSM_DIR/nightlylog/results
+echo "<testsuite tests=\"$NUMPACKAGES\">" > $EXTERNAL_TEST_FILE
+
+source $ISSM_DIR/BuildConfig/externalpackages
+
+#number of packages: 
+NUMPACKAGES=$(($(echo $EXTERNALPACKAGES | wc -w )/2))
+for ((i=1;i<=$NUMPACKAGES;i++))
+do
+	NUM1=$((2*$i-1))
+	NUM2=$((2*$i))
+	PACKAGENAME=$(echo $EXTERNALPACKAGES | cut -d " " -f $NUM1-$NUM1)
+	PACKAGEINST=$(echo $EXTERNALPACKAGES | cut -d " " -f $NUM2-$NUM2)
+
+	cd $ISSM_DIR/externalpackages/$PACKAGENAME
+
+	#install if requested or if previous install has not been successful
+	echo "======================================================";
+	echo "       Installing $PACKAGENAME                        ";
+	echo "======================================================";
+	echo "<testcase classname=\"externalpackages\" name=\"$PACKAGENAME\">" >> $EXTERNAL_TEST_FILE
+	./$PACKAGEINST |  tee compil.log
+	if [ $? -ne 0 ]; then
+		echo "======================================================";
+		echo "    ERROR: installation of $PACKAGENAME failed        ";
+		echo "======================================================";
+		echo '<failure message="failure">' >> $EXTERNAL_TEST_FILE
+		cat ./compil.log >> $EXTERNAL_TEST_FILE
+		echo '</failure>' >> $EXTERNAL_TEST_FILE
+		exit 1
+	else
+		echo '<success message="success">' >> $EXTERNAL_TEST_FILE
+		cat ./compil.log >> $EXTERNAL_TEST_FILE
+		echo '</success>' >> $EXTERNAL_TEST_FILE
+		touch SUCCESS
+	fi
+	echo '</testcase>' >> $EXTERNAL_TEST_FILE
+	source $ISSM_DIR/etc/environment.sh
+done
+echo '</testsuite>' >> $EXTERNAL_TEST_FILE
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/intel-compile.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/intel-compile.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/intel-compile.sh	(revision 21239)
@@ -0,0 +1,21 @@
+#!/bin/bash
+#Why don't we just type make? (shouldn't automake have taken care of this?)
+#The problem is the /Fe option from the intel compiler, which we weren't able to 
+#get automake to recognize. End result is that every file compiled is not named libISSM_a-name, 
+#but just name.  This makes the creation of libISSM.a impossible, as none of its objects 
+#can be found with the correct name. 
+#As a fix, we rename the objects, and then link.
+
+#First compile.
+#make
+
+#Then change the names
+list=`ls *.obj | grep -v libISSM_a`
+for i in `echo $list`
+do
+	mv $i libISSM_a-$i
+done
+
+#Now create the library out the .obj files
+rm -rf libISSM.a
+lib.exe /out:libISSM.a *.obj
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/issmconfiguration.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/issmconfiguration.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/issmconfiguration.sh	(revision 21239)
@@ -0,0 +1,80 @@
+#/bin/bash
+#This script picks up whatever configuration files exists in trunk/configs, 
+#and offers the user the choice to reconfigure the ISSM compilation using
+#a given configuration file: 
+
+#keep track of present directory: 
+presendir=`pwd`
+
+if test -d "$ISSM_DIR/configs" ; then
+	cd $ISSM_DIR/configs
+	LIST=`ls`
+	
+	if test -d "$JPL_SVN/usr/$USER/configs"; then
+		cd $JPL_SVN/usr/$USER/configs 
+		LIST2=`ls`
+	fi
+	
+	#print choices
+	COUNT=0;
+	printf 'ISSM wide configurations\n'
+	for STEP in $LIST
+	do
+		let COUNT=$COUNT+1
+		printf '%3i: %s\n' $COUNT $STEP
+	done
+	printf 'Personal configuration\n'
+	for STEP in $LIST2
+	do
+		let COUNT=$COUNT+1
+		printf '%3i: %s\n' $COUNT $STEP
+	done
+
+	echo -n "Configuration choice: "
+	read choice 
+
+	#Now go backto the list and retrieve the name of the configuration file: 
+	COUNT=0;
+	for STEP in $LIST
+	do
+		let COUNT=$COUNT+1
+		if [[ $COUNT == $choice ]]; then
+			configurename=$STEP
+		fi
+	done
+	for STEP in $LIST2
+	do
+		let COUNT=$COUNT+1
+		if [[ $COUNT == $choice ]]; then
+			configurename=$STEP
+		fi
+	done
+
+	#Now go ahead and configure: 
+	echo ""
+	echo "Configuring ISSM with following configs: $configurename"
+	echo ""
+
+	cd $ISSM_DIR 
+
+	#at this point, was a cleanup of the archive requested? 
+	if [ "$1" == "clean" ]; 
+	then 
+		make uninstall && make distclean
+	fi
+
+	source ./scripts/automakererun.sh 
+	if [ -f configs/$configurename ]; then 
+		source configs/$configurename
+	else 
+		source $JPL_SVN/usr/$USER/configs/$configurename
+	fi
+	
+	#we are done, go back to original directory: 
+	cd $presendir
+else
+	echo "Configuration directory does not exist!"
+	exit
+fi
+
+#alias aut='a=`pwd` && cd $ISSM_DIR && ./scripts/automakererun.sh && ./configs/config-macosx64-larour-nopetsc.sh'
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/jpic2pdf
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/jpic2pdf	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/jpic2pdf	(revision 21239)
@@ -0,0 +1,80 @@
+#!/bin/bash
+#Transform a pst from JPicEdt to a nice pdf
+
+# Generate temporary directory ($$ = process ID)
+TMPDIR=/tmp/jpic2pdf$$
+if [ -e $TMPDIR ] ; then
+	echo "$0: Temporary directory $TMPDIR already exists." 1>&2
+	exit 1
+fi
+mkdir $TMPDIR
+HOMEDIR="`pwd`" || exit 1
+
+#get input files
+if [ $# -eq 0 ]
+then
+	echo "No input file specified, exiting..." >&2
+	exit 1
+else
+	FILES=$*
+fi
+
+#convert files
+for FILE in $FILES
+do
+	#get file name without pst extension
+	NAME=$(echo $FILE | sed -e "s/.pst//g")
+
+	#transform equation only if begin{eqution} is found
+	echo "converting $FILE"
+	#Header
+	(
+	cat << ENDHEADER
+\documentclass[11pt,a0paper,landscape]{article}
+\usepackage{color}
+\usepackage[dvips]{graphicx}
+\usepackage[left=0cm, right=0cm, top=0cm, bottom=0cm]{geometry}  % margins
+\usepackage{array, multirow}
+\usepackage{amsmath,amsfonts,amssymb,mathrsfs,bm}
+\usepackage{pstricks}
+\pagestyle{empty}
+%\pagecolor{white}
+\definecolor{darkblue}{RGB}{0,0,170}
+\definecolor{darkgreen}{RGB}{0,140,0}
+\begin{document}
+ENDHEADER
+	) > $TMPDIR/out.tex
+
+	#File
+	cat $FILE >> $TMPDIR/out.tex
+
+	#Footer
+	(
+	cat << ENDFOOTER
+\end{document}
+ENDFOOTER
+) >> $TMPDIR/out.tex
+
+	cd "$TMPDIR"
+	latex -interaction=batchmode out.tex > /dev/null
+	ls
+
+	#check that the dvi has been generated
+	if [ ! -f "./out.dvi" ]; then
+		latex  -halt-on-error -interaction=errorstopmode out.tex
+		echo "latex compilation failed, See above" 1>&2
+		exit 1
+	fi
+	cd "$HOMEDIR"
+	dvips -o $TMPDIR/out.eps -E $TMPDIR/out.dvi 2> /dev/null
+	dvipdf $TMPDIR/out.dvi $TMPDIR/out.pdf
+	mv $TMPDIR/out.pdf $NAME.pdf
+
+	echo "cropping $FILE"
+	pdfcrop -noverbose $NAME.pdf $NAME.pdf
+done
+
+# Cleanup
+rm -rf $TMPDIR
+#mv $TMPDIR .
+exit 0
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/mToPy.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/mToPy.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/mToPy.py	(revision 21239)
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#
+program =               'mToPy.py'
+version =               '1.0'
+versionReleaseDate =    '09/24/12'
+origAuthor =            'Mike Pellegrin'
+desc = '\nMain control unit for converting an matlab script file to python'
+#
+#   Note: Output will be put in the same (absolute) location as the input.
+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#				History
+#	Date		Developer           Modification
+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#	09/24/12	Michael Pellegrin	Initial Release         V1.0
+#
+#
+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+import sys, os, shutil
+import translateToPy
+import mToPy   # touch mToPy to assertain location of installation
+
+def convert ( inputFile ):
+    try:
+      if os.path.exists( inputFile + '.m') and os.path.isfile( inputFile + '.m'):
+        checkBackupOutputFile( inputFile )
+        convertMToPy( inputFile )
+      else:
+        print 'Specified input file: ' + inputFile + '.m doesn\'t appear to exist'
+    finally:
+      print ''
+
+def convertMToPy ( inputFileName ):
+    translateToPy.convertToPython ( inputFileName + '.m', inputFileName + '.py' )
+
+def checkBackupOutputFile ( inputFile ):
+    mFile = inputFile + '.m'
+    pyFile = inputFile + '.py'
+    if os.path.exists( pyFile ):
+        i=1
+        bkupName = pyFile + str(i)
+        while os.path.exists( bkupName ):
+            i+=1
+            bkupName = pyFile + str(i)
+        os.rename( pyFile, bkupName )
+
+    shutil.copyfile(mFile, pyFile)
+
+if __name__ == "__main__":
+    convert( sys.argv[1])
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/mail
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/mail	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/mail	(revision 21239)
@@ -0,0 +1,158 @@
+#!/bin/sh
+
+# This is a shell script to emulate the standard mail(1) aka mailx(1)
+# aka Mail(1) tool usage for sending emails. This shell script is not
+# a client for checking or reading mail. Also, this version of mail
+# does not touch any mail boxes.
+
+# Copyright (c) 2003 by Jeremy C. Reed
+# This software is provided "as is" without any warranties. You may
+# redistribute and use this source, with or without modification,
+# as long as you include this copyright and disclaimer.
+
+# To do: some switches to consider:
+# -v  display details of delivery
+# -E  do not send empty messages
+# -c  send carbon copies to users
+# -b  send blind carbon copies
+
+# todo: test if read can read in long enough lines
+# some shells may have limit of 256 characters per read?
+ 
+SENDMAIL=sendmail  # set to path of your sendmail(8) command
+SENDMAIL_ARGS="-t -i" # -i is so dot doesn't terminate message
+                      # -t is to get recipients from headers
+
+unset subject
+unset to_addr
+dontsendempty=0
+
+about ()
+{
+  echo "This is mailx.sh version 0.03. This is simple, shell script"
+  echo "to implement mailx(1) functionality for sending mail. It does"
+  echo "not provide an interface for checking or reading email messages."
+  echo
+
+  # maybe do this without forking a command
+  mailname=$( basename $0 )
+
+  if [ -n "$1" ] ; then
+    echo "$mailname: $1" 1>&2
+  fi
+
+  echo "Usage: $mailname [-s subject] to-addr ..." 1>&2
+
+  if [ -n "$1" ] ; then
+    if [ -n "$2" ] ; then 
+      exit $2
+    fi
+    exit 100
+  fi
+
+  exit 0
+}
+
+if [ $# -eq 0 ] ; then
+  about "Sorry, this is not a mail reader." 1
+fi
+
+while [ -n "$1" ] ; do
+  case "$1" in
+  -*)
+      if [ "$1" = "-s" ] ; then
+        if [ -z "$2" ] ; then
+          about "The \"-s\" option requires an argument." 4
+        fi
+        subject="$2"
+        shift
+      elif [ "$1" = "-u" -o "$1" = "-f" ] ; then
+        about "Sorry, this is not a mail reader." 2
+#      elif [ "$1" = "-E" ] ; then
+# this probably needs to have entire message saved to temp file first
+#        dontsendempty=1
+      else
+#        about "unknown option -- $1" 3
+        about "Switch \"$1\" is not implemented." 3
+      fi
+      ;;
+  *)  if [ -n "$to_addr" ] ; then
+        to_addr="${to_addr}, $1"
+      else
+        to_addr="$1"
+      fi
+      ;;
+  esac
+  shift
+done
+
+
+if [ -t 0 ] ; then   # no piped in standard input
+  if [ -z "$subject" ] ; then
+    echo -n "Subject: "
+    OLD_IFS=$IFS
+    IFS=""
+    read -r subject
+    IFS=$OLD_IFS
+  fi
+fi
+
+if [ -z "$to_addr" ] ; then
+  about "No recipients specified." 6
+#  about "You must specify recipients." 6
+fi
+
+# generate SMTP headers
+
+# mail(1) doesn't seem to set date
+#date +"Date: %a, %e %b %G %T %z"
+## maybe pipe though sed to get rid of extra space
+## before single digit day of month?
+
+{
+# if [ -n "$to_addr" ] ; then
+echo "To: ${to_addr}"
+# fi
+
+if [ -n "$subject" ] ; then
+  echo "Subject: $subject"
+fi
+
+# end of headers
+echo ""
+
+# output
+line_count=0
+OLD_IFS=$IFS
+IFS=""
+while read -r line ; do
+  # finish if manual, non-piped input is a period on a line by itself
+  if [ "$line" = "." -a -t 0 ] ; then
+      break
+  fi
+  echo "$line"
+  line_count=$(( line_count + 1 ))
+done
+
+IFS=$OLD_IFS
+
+if [ -t 0 ] ; then   # no piped in standard input
+  echo "EOT" 1>&2
+fi
+
+# later add switch to not send mail by exiting
+if [ "$line_count" -eq 0 ] ; then
+#  if [ "$dontsendempty" -eq 1 ] ; then
+# todo this, have it save to temp file and then send to sendmail as needed
+#    # No message, so just exit cleanly
+#    exit 0
+#  fi
+  if [ -z "$subject" ] ; then
+    echo "No message, no subject; hope that's ok" 1>&2
+  else
+    echo "Null message body; hope that's ok" 1>&2
+  fi
+fi
+
+} | $SENDMAIL $SENDMAIL_ARGS
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/matlabissm.bat
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/matlabissm.bat	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/matlabissm.bat	(revision 21239)
@@ -0,0 +1,2 @@
+@echo off
+matlab 
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/ol
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/ol	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/ol	(revision 21239)
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+#Get the runme file, read it, and display steps
+rm -rf orglist_temporary_file
+LIST=$(cat runme.m | grep perform | grep if | sed "s/'/ /g" | awk '{print $3}')
+
+COUNT=0;
+echo "Available steps"
+for STEP in $LIST
+do
+	let COUNT=$COUNT+1
+	printf '%3i: %s\n' $COUNT $STEP
+done
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/ol.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/ol.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/ol.m	(revision 21239)
@@ -0,0 +1,14 @@
+
+fid=fopen('runme.m','r');
+
+tline = fgets(fid);
+count=1;
+while ischar(tline)
+	tline = fgets(fid);
+	if length(tline)>16,
+		if strcmpi(tline(1:16),'if perform(org,'''),
+			disp(sprintf('%i: %s',count,tline(17:end-4)));
+			count=count+1;
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/pdfcrop.pl
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/pdfcrop.pl	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/pdfcrop.pl	(revision 21239)
@@ -0,0 +1,608 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' && eval 'exec perl -S $0 $argv:q'
+  if 0;
+use strict;
+$^W=1; # turn warning on
+#
+# pdfcrop.pl
+#
+# Copyright (C) 2002, 2004, 2005, 2008, 2009 Heiko Oberdiek.
+#
+# This program may be distributed and/or modified under the
+# conditions of the LaTeX Project Public License, either version 1.2
+# of this license or (at your option) any later version.
+# The latest version of this license is in
+#   http://www.latex-project.org/lppl.txt
+# and version 1.2 or later is part of all distributions of LaTeX
+# version 1999/12/01 or later.
+#
+# See file "README" for a list of files that belong to this project.
+#
+# This file "pdfcrop.pl" may be renamed to "pdfcrop"
+# for installation purposes.
+#
+my $file        = "pdfcrop.pl";
+my $program     = uc($&) if $file =~ /^\w+/;
+my $version     = "1.18";
+my $date        = "2009/07/18";
+my $author      = "Heiko Oberdiek";
+my $copyright   = "Copyright (c) 2002-2009 by $author.";
+#
+# Reqirements: Perl5, Ghostscript
+# History:
+#   2002/10/30 v1.0:  First release.
+#   2002/10/30 v1.1:  Option --hires added.
+#   2002/11/04 v1.2:  "nul" instead of "/dev/null" for windows.
+#   2002/11/23 v1.3:  Use of File::Spec module's "devnull" call.
+#   2002/11/29 v1.4:  Option --papersize added.
+#   2004/06/24 v1.5:  Clear map file entries so that pdfTeX
+#                     does not touch the fonts.
+#   2004/06/26 v1.6:  Use mgs.exe instead of gswin32c.exe for MIKTEX.
+#   2005/03/11 v1.7:  Support of spaces in file names
+#                     (open("-|") is used for ghostscript call).
+#   2008/01/09 v1.8:  Fix for moving the temporary file to the output
+#                     file across file system boundaries.
+#   2008/04/05 v1.9:  Options --resolution and --bbox added.
+#   2008/07/16 v1.10: Support for XeTeX added with new options
+#                     --pdftex, --xetex, and --xetexcmd.
+#   2008/07/22 v1.11: Workaround for open("-|").
+#   2008/07/23 v1.12: Workarounds for the workaround (error detection, ...).
+#   2008/07/24 v1.13: open("-|")/workaround removed.
+#                     Input files with unsafe file names are linked/copied
+#                     to temporary file with safe file name.
+#   2008/09/12 v1.14: Error detection for invalid Bounding Boxes.
+#   2009/07/14 v1.15: Fix for negative coordinates in Bounding Boxes
+#                     (David Menestrina).
+#   2009/07/16 v1.16: Security fixes:
+#                     * -dSAFER added for Ghostscript,
+#                     * -no-shell-escape added for pdfTeX/XeTeX.
+#   2009/07/17 v1.17: Security fixes:
+#                     * Backticks and whitespace are forbidden
+#                       for options --(gs|pdftex|xetex)cmd.
+#                     * Validation of options --papersize and --resolution.
+#   2009/07/18 v1.18: * Restricted mode added.
+#                     * Option --version added.
+
+### program identification
+my $title = "$program $version, $date - $copyright\n";
+
+### error strings
+my $Error = "!!! Error:"; # error prefix
+
+### string constants for Ghostscript run
+# get Ghostscript command name
+my $GS = "gs";
+$GS = "gs386"    if $^O =~ /dos/i;
+$GS = "gsos2"    if $^O =~ /os2/i;
+$GS = "gswin32c" if $^O =~ /mswin32/i;
+$GS = "gswin32c" if $^O =~ /cygwin/i;
+$GS = "mgs"      if defined($ENV{"TEXSYSTEM"}) and
+                    $ENV{"TEXSYSTEM"} =~ /miktex/i;
+
+# Windows detection (no SIGHUP)
+my $Win = 0;
+$Win = 1 if $^O =~ /mswin32/i;
+$Win = 1 if $^O =~ /cygwin/i;
+
+# restricted mode
+my $restricted = 0;
+if ($0 =~ /rpdfcrop/ or $0 =~ /restricted/) {
+    $restricted = 1;
+}
+
+# "null" device
+use File::Spec::Functions qw(devnull);
+my $null = devnull();
+
+### variables
+my $inputfile   = "";
+my $outputfile  = "";
+my $tmp = "tmp-\L$program\E-$$";
+
+### paper sizes
+
+my @papersizes = qw[
+  11x17 ledger legal letter lettersmall
+  archE archD archC archB archA
+  a0 a1 a2 a3 a4 a4small a5 a6 a7 a8 a9 a10
+  isob0 isob1 isob2 isob3 isob4 isob5 isob6
+  c0 c1 c2 c3 c4 c5 c6
+  jisb0 jisb1 jisb2 jisb3 jisb4 jisb5 jisb6
+  b0 b1 b2 b3 b4 b5
+  flsa flse halfletter
+];
+my %papersizes;
+foreach (@papersizes) {
+    $papersizes{$_} = 1;
+}
+
+### option variables
+my @bool = ("false", "true");
+$::opt_version    = 0;
+$::opt_help       = 0;
+$::opt_debug      = 0;
+$::opt_verbose    = 0;
+$::opt_gscmd      = $GS;
+$::opt_pdftexcmd  = "pdftex";
+$::opt_xetexcmd   = "xetex";
+$::opt_tex        = "pdftex";
+$::opt_margins    = "0 0 0 0";
+$::opt_clip       = 0;
+$::opt_hires      = 0;
+$::opt_papersize  = "";
+$::opt_resolution = "";
+$::opt_bbox       = "";
+
+my $usage = <<"END_OF_USAGE";
+${title}Syntax:   \L$program\E [options] <input[.pdf]> [output file]
+Function: Margins are calculated and removed for each page in the file.
+Options:                                                    (defaults:)
+  --help              print usage
+  --version           print version number
+  --(no)verbose       verbose printing                      ($bool[$::opt_verbose])
+  --(no)debug         debug informations                    ($bool[$::opt_debug])
+  --gscmd <name>      call of ghostscript                   ($::opt_gscmd)
+  --pdftex | --xetex  use pdfTeX | use XeTeX                ($::opt_tex)
+  --pdftexcmd <name>  call of pdfTeX                        ($::opt_pdftexcmd)
+  --xetexcmd <name>   call of XeTeX                         ($::opt_xetexcmd)
+  --margins "<left> <top> <right> <bottom>"                 ($::opt_margins)
+                      add extra margins, unit is bp. If only one number is
+                      given, then it is used for all margins, in the case
+                      of two numbers they are also used for right and bottom.
+  --(no)clip          clipping support, if margins are set  ($bool[$::opt_clip])
+                      (not available for --xetex)
+  --(no)hires         using `%%HiResBoundingBox'            ($bool[$::opt_hires])
+                      instead of `%%BoundingBox'
+Expert options:
+  --restricted        turn on restricted mode               ($bool[$restricted])
+  --papersize <foo>   parameter for gs's -sPAPERSIZE=<foo>,
+                      use only with older gs versions <7.32 ($::opt_papersize)
+  --resolution <xres>x<yres>                                ()
+  --resolution <res>  pass argument to ghostscript's option -r
+                      Example: --resolution 72
+  --bbox "<left> <top> <right> <bottom>"                    ()
+                      override bounding box found by ghostscript
+Examples:
+  \L$program\E --margins 10 input.pdf output.pdf
+  \L$program\E --margins '5 10 5 20' --clip input.pdf output.pdf
+In case of errors:
+  Try option --verbose first to get more information.
+In case of bugs:
+  Please, use option --debug for bug reports.
+END_OF_USAGE
+
+### process options
+my @OrgArgv = @ARGV;
+use Getopt::Long;
+GetOptions(
+  "help!",
+  "version!",
+  "debug!",
+  "verbose!",
+  "gscmd=s",
+  "pdftexcmd=s",
+  "xetexcmd=s",
+  "pdftex" => sub { $::opt_tex = 'pdftex'; },
+  "xetex"  => sub { $::opt_tex = 'xetex'; },
+  "margins=s",
+  "clip!",
+  "hires!",
+  "papersize=s",
+  "resolution=s",
+  "bbox=s",
+  "restricted" => sub { $restricted = 1; },
+) or die $usage;
+!$::opt_help or die $usage;
+
+if ($::opt_version) {
+    print "$version\n";
+    exit(0);
+}
+
+$::opt_verbose = 1 if $::opt_debug;
+
+@ARGV >= 1 or die $usage;
+
+print $title;
+
+if ($::opt_bbox) {
+    $::opt_bbox =~ s/^\s+//;
+    $::opt_bbox =~ s/\s+$//;
+    $::opt_bbox =~ s/\s+/ /;
+    if ($::opt_bbox =~ /^-?\d*\.?\d+ -?\d*\.?\d+ -?\d*\.?\d+ -?\d*\.?\d+$/) {
+        print "* Explicite Bounding Box: $::opt_bbox\n" if $::opt_debug;
+    }
+    else {
+        die "$Error Parse error (option --bbox \"$::opt_bbox\")!\n";
+    }
+}
+
+@ARGV <= 2 or die "$Error Too many files!\n";
+
+### input file
+$inputfile = shift @ARGV;
+
+if (! -f $inputfile) {
+    if (-f "$inputfile.pdf") {
+        $inputfile .= ".pdf";
+    }
+    else {
+        die "$Error Input file `$inputfile' not found!\n";
+    }
+}
+
+print "* Input file: $inputfile\n" if $::opt_debug;
+
+### output file
+if (@ARGV) {
+    $outputfile = shift @ARGV;
+}
+else {
+    $outputfile = $inputfile;
+    $outputfile =~ s/\.pdf$//i;
+    $outputfile .= "-crop.pdf";
+}
+
+print "* Output file: $outputfile\n" if $::opt_debug;
+
+if (($::opt_tex eq 'xetex') && $::opt_clip) {
+    die "$Error No clipping support for XeTeX!\n";
+}
+
+### margins
+my ($llx, $lly, $urx, $ury) = (0, 0, 0, 0);
+if ($::opt_margins =~
+        /^\s*([\-\.\d]+)\s+([\-\.\d]+)\s+([\-\.\d]+)\s+([\-\.\d]+)\s*$/) {
+    ($llx, $lly, $urx, $ury) = ($1, $2, $3, $4);
+}
+else {
+    if ($::opt_margins =~ /^\s*([\-\.\d]+)\s+([\-\.\d]+)\s*$/) {
+        ($llx, $lly, $urx, $ury) = ($1, $2, $1, $2);
+    }
+    else {
+        if ($::opt_margins =~ /^\s*([\-\.\d]+)\s*$/) {
+            ($llx, $lly, $urx, $ury) = ($1, $1, $1, $1);
+        }
+        else {
+            die "$Error Parse error (option --margins)!\n";
+        }
+    }
+}
+print "* Margins: $llx $lly $urx $ury\n" if $::opt_debug;
+
+### papersize validation (security)
+if ($::opt_papersize ne '') {
+    $::opt_papersize =~ /^[0-9A-Za-z]+$/
+            or die "$Error Invalid papersize ($::opt_papersize)!\n";
+    $papersizes{$::opt_papersize}
+            or die "$Error Unknown papersize ($::opt_papersize),"
+                   . " see ghostscript's documentation for option `-r'!\n";
+}
+
+### resolution validation (security)
+if ($::opt_resolution ne '') {
+    $::opt_resolution =~ /^\d+(x\d+)?$/
+            or die "$Error Invalid resolution ($::opt_resolution),"
+                   . " see ghostscript's documentation!\n";
+}
+
+### command name validation (security)
+my %cmd = (
+    'gscmd' => \$::opt_gscmd,
+    'pdftexcmd' => \$::opt_pdftexcmd,
+    'xetexcmd' => \$::opt_xetexcmd
+);
+foreach my $cmd (keys %cmd) {
+    my $val = ${$cmd{$cmd}};
+    next unless $val;
+    $val =~ s/^\s+//;
+    $val =~ s/\s+$//;
+    next unless $val;
+    if ($val =~ /`/) {
+        die "$Error Forbidden backtick for option `--$cmd' ($val)!\n";
+    }
+    if ($val =~ /\s/) {
+        die "$Error Forbidden whitespace for option `--$cmd' ($val)!\n";
+    }
+}
+if ($restricted) {
+    if ($::opt_pdftexcmd and $::opt_pdftexcmd ne 'pdftex') {
+        die "$Error pdfTeX program name must not be changed in restricted mode!\n";
+    }
+    if ($::opt_xetexcmd and $::opt_xetexcmd ne 'xetex') {
+        die "$Error XeTeX program name must not be changed in restricted mode!\n";
+    }
+    if ($::opt_gscmd) {
+        $::opt_gscmd =~ /^(gs|mgs|gswin32c|gs386|gsos2)$/
+        or $::opt_gscmd =~ /^gs[\-_]?(\d|\d[\.-_]?\d\d)c?$/
+        or die "$Error: Invalid Ghostscript program name in restricted mode!\n";
+    }
+}
+
+### cleanup system
+my @unlink_files = ();
+my $exit_code = 1;
+sub clean {
+    print "* Cleanup\n" if $::opt_debug;
+    if ($::opt_debug) {
+        print "* Temporary files: @unlink_files\n";
+    }
+    else {
+        for (; @unlink_files>0; ) {
+            unlink shift @unlink_files;
+        }
+    }
+}
+sub cleanup {
+    clean();
+    exit($exit_code);
+}
+$SIG{'INT'} = \&cleanup;
+$SIG{'__DIE__'} = \&clean;
+
+### Calculation of BoundingBoxes
+
+# use safe file name for use within cmd line of gs (unknown shell: space, ...)
+# and pdfTeX (dollar, ...)
+my $inputfilesafe = $inputfile;
+if ($inputfile =~ /[\s\$~'"]/) {
+    $inputfilesafe = "$tmp-img.pdf";
+    push @unlink_files, $inputfilesafe;
+    my $symlink_exists = eval { symlink("", ""); 1 };
+    print "* Input file name `$inputfile' contains special characters.\n"
+          . "* " . ($symlink_exists ? "Link" : "Copy")
+          . " input file to temporary file `$inputfilesafe'.\n"
+            if $::opt_verbose;
+    if ($symlink_exists) {
+        symlink($inputfile, $inputfilesafe)
+            or die "$Error Link from `$inputfile' to"
+                   . " `$inputfilesafe' failed: $!\n";
+    }
+    else {
+        use File::Copy;
+        copy($inputfile, $inputfilesafe)
+                or die "$Error Copy from `$inputfile' to"
+                       . " `$inputfilesafe' failed: $!\n";
+    }
+}
+
+my @gsargs = (
+    "-sDEVICE=bbox",
+    "-dBATCH",
+    "-dNOPAUSE"
+);
+push @gsargs, "-sPAPERSIZE=$::opt_papersize" if $::opt_papersize;
+push @gsargs, "-r$::opt_resolution" if $::opt_resolution;
+push @gsargs,
+    "-c",
+    "save",
+    "pop",
+    "-f",
+    $inputfilesafe
+;
+
+my $tmpfile = "$tmp.tex";
+push @unlink_files, $tmpfile;
+open(TMP, ">$tmpfile") or
+    die "$Error Cannot write tmp file `$tmpfile'!\n";
+print TMP "\\def\\pdffile{$inputfilesafe}\n";
+if ($::opt_tex eq 'pdftex') {
+    print TMP <<'END_TMP_HEAD';
+\csname pdfmapfile\endcsname{}
+\def\page #1 [#2 #3 #4 #5]{%
+  \count0=#1\relax
+  \setbox0=\hbox{%
+    \pdfximage page #1{\pdffile}%
+    \pdfrefximage\pdflastximage
+  }%
+  \pdfhorigin=-#2bp\relax
+  \pdfvorigin=#3bp\relax
+  \pdfpagewidth=#4bp\relax
+  \advance\pdfpagewidth by -#2bp\relax
+  \pdfpageheight=#5bp\relax
+  \advance\pdfpageheight by -#3bp\relax
+  \ht0=\pdfpageheight
+  \shipout\box0\relax
+}
+\def\pageclip #1 [#2 #3 #4 #5][#6 #7 #8 #9]{%
+  \count0=#1\relax
+  \dimen0=#4bp\relax \advance\dimen0 by -#2bp\relax
+  \edef\imagewidth{\the\dimen0}%
+  \dimen0=#5bp\relax \advance\dimen0 by -#3bp\relax
+  \edef\imageheight{\the\dimen0}%
+  \pdfximage page #1{\pdffile}%
+  \setbox0=\hbox{%
+    \kern -#2bp\relax
+    \lower #3bp\hbox{\pdfrefximage\pdflastximage}%
+  }%
+  \wd0=\imagewidth\relax
+  \ht0=\imageheight\relax
+  \dp0=0pt\relax
+  \pdfhorigin=#6pt\relax
+  \pdfvorigin=#7bp\relax
+  \pdfpagewidth=\imagewidth
+  \advance\pdfpagewidth by #6bp\relax
+  \advance\pdfpagewidth by #8bp\relax
+  \pdfpageheight=\imageheight\relax
+  \advance\pdfpageheight by #7bp\relax
+  \advance\pdfpageheight by #9bp\relax
+  \pdfxform0\relax
+  \shipout\hbox{\pdfrefxform\pdflastxform}%
+}%
+\def\pageinclude#1{%
+  \pdfhorigin=0pt\relax
+  \pdfvorigin=0pt\relax
+  \pdfximage page #1{\pdffile}%
+  \setbox0=\hbox{\pdfrefximage\pdflastximage}%
+  \pdfpagewidth=\wd0\relax
+  \pdfpageheight=\ht0\relax
+  \advance\pdfpageheight by \dp0\relax
+  \shipout\hbox{%
+    \raise\dp0\box0\relax
+  }%
+}
+END_TMP_HEAD
+}
+else { # XeTeX
+    print TMP <<'END_TMP_HEAD';
+\expandafter\ifx\csname XeTeXpdffile\endcsname\relax
+  \expandafter\ifx\csname pdffile\endcsname\relax
+    \errmessage{XeTeX not found!}%
+  \else
+    \errmessage{XeTeX is too old!}%
+  \fi
+\fi
+\def\page #1 [#2 #3 #4 #5]{%
+  \count0=#1\relax
+  \setbox0=\hbox{%
+    \XeTeXpdffile "\pdffile" page #1%
+  }%
+  \pdfpagewidth=#4bp\relax
+  \advance\pdfpagewidth by -#2bp\relax
+  \pdfpageheight=#5bp\relax
+  \advance\pdfpageheight by -#3bp\relax
+  \shipout\hbox{%
+    \kern-1in%
+    \kern-#2bp%
+    \vbox{%
+      \kern-1in%
+      \kern#3bp%
+      \ht0=\pdfpageheight
+      \box0 %
+    }%
+  }%
+}
+END_TMP_HEAD
+}
+
+print "* Running ghostscript for BoundingBox calculation ...\n"
+    if $::opt_verbose;
+print "* Ghostscript call: $::opt_gscmd @gsargs\n" if $::opt_debug;
+
+my @bbox;
+if ($::opt_bbox) {
+     $::opt_bbox =~ /([-\d\.]+) ([-\d\.]+) ([-\d\.]+) ([-\d\.]+)/;
+     @bbox = ($1, $2, $3, $4);
+}
+my $page = 0;
+my $gs_pipe = "$::opt_gscmd -dSAFER @gsargs 2>&1";
+$gs_pipe .= " 1>$null" unless $::opt_verbose;
+$gs_pipe .= "|";
+
+open(GS, $gs_pipe) or
+        die "$Error Cannot call ghostscript ($::opt_gscmd)!\n";
+my $bb = ($::opt_hires) ? "%%HiResBoundingBox" : "%%BoundingBox";
+while (<GS>) {
+    print $_ if $::opt_verbose;
+    next unless
+        /^$bb:\s*(-?[\.\d]+) (-?[\.\d]+) (-?[\.\d]+) (-?[\.\d]+)/o;
+    @bbox = ($1, $2, $3, $4) unless $::opt_bbox;
+    $page++;
+
+    my $empty = 0;
+    $empty = 1 if $bbox[0] >= $bbox[2];
+    $empty = 1 if $bbox[1] >= $bbox[3];
+    if ($empty) {
+        print <<"END_WARNING";
+
+!!! Warning: Empty Bounding Box is returned by Ghostscript!
+!!!   Page $page: @bbox
+!!! Either there is a problem with the page or with Ghostscript.
+!!! Recovery is tried by embedding the page in its original size.
+
+END_WARNING
+        print TMP "\\pageinclude{$page}\n";
+        next;
+    }
+
+    print "* Page $page: @bbox\n" if $::opt_verbose;
+
+    my @bb = ($bbox[0] - $llx, $bbox[1] - $ury,
+             $bbox[2] + $urx, $bbox[3] + $lly);
+
+    $empty = 0;
+    $empty = 1 if $bb[0] >= $bb[2];
+    $empty = 1 if $bb[1] >= $bb[3];
+    if ($empty) {
+        print <<"END_WARNING";
+
+!!! Warning: The final Bounding Box is empty!
+!!!   Page: $page: @bb
+!!! Probably caused by too large negative margin values.
+!!! Recovery by ignoring margin values.
+
+END_WARNING
+        print TMP "\\page $page [@bbox]\n";
+        # clipping shouldn't make a difference
+        next;
+    }
+    if ($::opt_clip) {
+        print TMP "\\pageclip $page [@bbox][$llx $lly $urx $ury]\n";
+    }
+    else {
+        print TMP "\\page $page [@bb]\n";
+    }
+}
+close(GS);
+
+if ($? & 127) {
+    die sprintf  "$Error Ghostscript died with signal %d!\n",
+                 ($? & 127);
+}
+elsif ($? != 0) {
+    die sprintf "$Error Ghostscript exited with error code %d!\n",
+                $? >> 8;
+}
+
+print TMP "\\csname \@\@end\\endcsname\n\\end\n";
+close(TMP);
+
+if ($page == 0) {
+    die "$Error Ghostscript does not report bounding boxes!\n";
+}
+
+### Run pdfTeX/XeTeX
+
+push @unlink_files, "$tmp.log";
+my $cmd;
+my $texname;
+if ($::opt_tex eq 'pdftex') {
+    $cmd = $::opt_pdftexcmd;
+    $texname = 'pdfTeX';
+}
+else {
+    $cmd = $::opt_xetexcmd;
+    $texname = 'XeTeX';
+}
+$cmd .= ' -no-shell-escape';
+if ($::opt_verbose) {
+    $cmd .= " -interaction=nonstopmode $tmp";
+}
+else {
+    $cmd .= " -interaction=batchmode $tmp";
+}
+print "* Running $texname ...\n" if $::opt_verbose;
+print "* $texname call: $cmd\n" if $::opt_debug;
+if ($::opt_verbose) {
+    system($cmd);
+}
+else {
+    `$cmd`;
+}
+if ($?) {
+    die "$Error $texname run failed!\n";
+}
+
+### Move temp file to output
+if (!rename("$tmp.pdf", $outputfile)) {
+    use File::Copy;
+    move "$tmp.pdf", $outputfile or
+            die "$Error Cannot move `$tmp.pdf' to `$outputfile'!\n";
+}
+
+print "==> $page page", (($page == 1) ? "" : "s"),
+      " written on `$outputfile'.\n";
+
+$exit_code = 0;
+cleanup();
+
+__END__
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/report.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/report.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/report.sh	(revision 21239)
@@ -0,0 +1,322 @@
+#!/bin/bash
+#generate html report from info.log output file
+
+#style
+#{{{
+TITLE_STYLE='width="700px" cellpadding="10"'
+TITLE_FONT='style="color:#6495ed; font-family:Arial, Verdana, Tahoma; font-weight: bold; font-size:25px;" align="center"'
+SECTION_STYLE='width="700px" cellpadding="5"'
+SECTION_FONT='style="color:#6495ed; font-family:Arial, Verdana, Tahoma; font-size:20px; font-weight: bold;" align="left"'
+TABLE_STYLE='width="680px" rules=none bgcolor="#ffffdd" border=1 bordercolor="#000000" cellpadding="3"'
+TABLE_FONT='style="color:#404040; font-family:Arial, Verdana, Tahoma; font-size:14px; font-weight: normal;" align="left"'
+CODE_STYLE='width="700px" rules=none'
+CODE_FONT='style="color:#404040; font-family:Arial, Verdana, Tahoma; font-size:12px; font-weight: normal;" align="left"'
+BODY_STYLE='width="700px"'
+BODY_FONT='style="color:#404040; font-family:Arial, Verdana, Tahoma; font-size:14px;"'
+BODY_FONTC=$(echo $BODY_FONT | sed -e "s/style=\"/style=\"text-align:center; /g")
+BODY_FONTL=$(echo $BODY_FONT | sed -e "s/style=\"/style=\"text-align:left; /g")
+FOOTER_STYLE='width="700px"  cellpadding="10"'
+FOOTER_FONT='style="color:#404040; font-family:Arial, Verdana, Tahoma; font-size:12px; font-weight: normal;" align="center"'
+#}}}
+
+#process info.log
+#{{{
+if [ ! -f info.log ]; then
+	echo "File info.log not found!" >&2   # Error message to stderr.
+	exit 1
+fi 
+NRNAME=$(      cat info.log | grep "name:"           | awk '{$1=""}1')
+TODAY=$(       cat info.log | grep "today"           | awk '{printf("%s %s",$2,$3);}')
+USER=$(        cat info.log | grep "user"            | awk '{print $2}')
+VERSION=$(     cat info.log | grep "version"         | awk '{print $2}')
+HOST_NAME=$(   cat info.log | grep "host"            | awk '{print $2}')
+OS=$(          cat info.log | grep "OS"              | awk '{print $2}')
+RELEASE=$(     cat info.log | grep "release"         | awk '{print $2}')
+EL_INSTALL=$(  cat info.log | grep "elapsed_install" | awk '{print $2}')
+EL_TOTAL=$(    cat info.log | grep "elapsed_total"   | awk '{print $2}')
+IS_MATLAB=$(   cat info.log | grep "is_matlab"       | awk '{print $2}')
+IS_PYTHON=$(   cat info.log | grep "is_python"       | awk '{print $2}')
+EL_MATLAB=$(   cat info.log | grep "elapsed_matlab"  | awk '{print $2}')
+EL_PYTHON=$(   cat info.log | grep "elapsed_python"  | awk '{print $2}')
+CRASH_MATLAB=$(cat info.log | grep "matlab_crash:"   | awk '{print $2}')
+CRASH_PYTHON=$(cat info.log | grep "python_crash:"   | awk '{print $2}')
+
+#Did installation work?
+if [ $(ls -1 $ISSM_DIR/bin | wc -l) -le 1 ]; then
+	IS_INSTALL=0
+else
+	IS_INSTALL=1
+fi
+#}}}
+
+#1. summary table 
+#{{{
+rm report.html
+cat << END >> report.html
+<div align="center">
+<table $TITLE_STYLE><tr><td $TITLE_FONT>$NRNAME</td></tr></table>
+
+<table $TABLE_STYLE>
+<tr> 
+<td $TABLE_FONT>host: $HOST_NAME ($OS)</td>
+<td $TABLE_FONT>date: $TODAY</td>
+</tr>
+<tr>
+<td $TABLE_FONT>user: $USER</td>
+<td $TABLE_FONT>release: $RELEASE</td>
+</tr>
+<tr>
+<td $TABLE_FONT>total elapsed time: $EL_TOTAL</td>
+<td $TABLE_FONT>installation elapsed time: $EL_INSTALL</td>
+</tr>
+<tr>
+<td $TABLE_FONT>svn version: $VERSION</td>
+<td $TABLE_FONT></td>
+</tr>
+</table>
+<br><hr width="700px">
+END
+# }}}
+
+#stop if did not install
+#{{{
+if [ $IS_INSTALL -eq 0 ]; then
+	cat << END >> report.html
+	<table $(echo $BODY_STYLE) style="border-collapse:collapse;">
+	<tr><td $BODY_FONTC>Status: <span style="color:#ff0000">Installation failed</span></td></tr>
+	</table>
+	<table $FOOTER_STYLE><tr><td $FOOTER_FONT><a href="http://issm.jpl.nasa.gov" title="ISSM website" target="_blank">ISSM</a> nightly run report</td></tr></table>
+	</div>
+END
+exit 0
+fi
+#}}}
+
+#2. matlab report
+if [ $IS_MATLAB -eq 1 ]; then
+#Process matlab_log.log {{{
+cat matlab_log.log        | egrep 'ERROR|SUCCESS|FAILURE' | grep -v "PETSC" | sed -e "s/>/\&gt;/g" | sed -e "s/</\&lt;/g" > matlab.log
+cat matlab.log        | grep -v "SUCCESS" > matlab_short.log
+cat matlab_log.log        | grep "PETSC" | sed -e "s/>/\&gt;/g" | sed -e "s/</\&lt;/g" > petscerror.log
+NUM_MATLAB_TOT=$(wc -l matlab.log | awk '{print $1}')
+NUM_MATLAB_ERR=$(cat matlab.log | grep 'ERROR'   | grep -v "PETSC" | wc -l)
+NUM_MATLAB_SUC=$(cat matlab.log | grep 'SUCCESS' | wc -l)
+NUM_MATLAB_FAI=$(cat matlab.log | grep 'FAILURE' | wc -l)
+#}}}
+#write report {{{
+cat << END >> report.html
+<table $SECTION_STYLE><tr><td $SECTION_FONT>Matlab tests</td></tr></table>
+<table $(echo $BODY_STYLE) style="border-collapse:collapse;">
+$(if [ $CRASH_MATLAB -eq 0 ]; then
+echo "<tr><td $BODY_FONTL>Status: <span style=\"color:#008000\">all tests have been run</span></td></tr>"
+else
+	echo "<tr><td $BODY_FONTL>Status: <span style=\"color:#ff0000\">Matlab crashed</span></td></tr>"
+fi)
+<tr><td $BODY_FONTL>Total execution time: $EL_MATLAB</td></tr>
+<tr><td $BODY_FONTL>Number of successes: $NUM_MATLAB_SUC/$NUM_MATLAB_TOT</td></tr>
+<tr><td $BODY_FONTL>Number of errors: $NUM_MATLAB_ERR/$NUM_MATLAB_TOT</td></tr>
+<tr><td $BODY_FONTL>Number of failures: $NUM_MATLAB_FAI/$NUM_MATLAB_TOT</td></tr>
+</table>
+END
+#}}}
+fi
+
+#2. python report
+if [ $IS_PYTHON -eq 1 ]; then
+#Process python_log.log {{{
+cat python_log.log        | egrep 'ERROR|SUCCESS|FAILURE' | grep -v "PETSC" | sed -e "s/>/\&gt;/g" | sed -e "s/</\&lt;/g" > python.log
+cat python.log        | grep -v "SUCCESS" > python_short.log
+cat python_log.log        | grep "PETSC" | sed -e "s/>/\&gt;/g" | sed -e "s/</\&lt;/g" > petscerror.log
+NUM_PYTHON_TOT=$(wc -l python.log | awk '{print $1}')
+NUM_PYTHON_ERR=$(cat python.log | grep 'ERROR'   | grep -v "PETSC" | wc -l)
+NUM_PYTHON_SUC=$(cat python.log | grep 'SUCCESS' | wc -l)
+NUM_PYTHON_FAI=$(cat python.log | grep 'FAILURE' | wc -l)
+#}}}
+#write report {{{
+cat << END >> report.html
+<table $SECTION_STYLE><tr><td $SECTION_FONT>Python tests</td></tr></table>
+<table $(echo $BODY_STYLE) style="border-collapse:collapse;">
+$(if [ $CRASH_PYTHON -eq 0 ]; then
+	echo "<tr><td $BODY_FONTL>Status: <span style=\"color:#008000\">all tests have been run</span></td></tr>"
+else
+	echo "<tr><td $BODY_FONTL>Status: <span style=\"color:#ff0000\">Python crashed</span></td></tr>"
+fi)
+<tr><td $BODY_FONTL>Total execution time: $EL_PYTHON</td></tr>
+<tr><td $BODY_FONTL>Number of successes: $NUM_PYTHON_SUC/$NUM_PYTHON_TOT</td></tr>
+<tr><td $BODY_FONTL>Number of errors: $NUM_PYTHON_ERR/$NUM_PYTHON_TOT</td></tr>
+<tr><td $BODY_FONTL>Number of failures: $NUM_PYTHON_FAI/$NUM_PYTHON_TOT</td></tr>
+</table>
+END
+#}}}
+fi
+
+#3. Matlab and python tables
+if [ $IS_MATLAB -eq 1 ]; then
+#Matlab{{{
+#display table ONLY if installation worked and there has been at leat one FAILURE or ERROR
+if [ $IS_INSTALL -eq 1 ] && [ $NUM_MATLAB_TOT -gt 1 ] && [ $NUM_MATLAB_SUC -ne $NUM_MATLAB_TOT ]
+then
+	cat << END >> report.html
+<table $SECTION_STYLE><tr><td $(echo $SECTION_FONT)>List of Matlab tests</td></tr></table>
+<table $BODY_STYLE style="border-collapse:collapse;">
+<tr> 
+<th $BODY_FONT>Result</th> 
+<th $BODY_FONT>Tolerance</th> 
+<th $BODY_FONT>Test id</th>  
+<th $BODY_FONT>Test name</th> 
+<th $BODY_FONT>Field checked</th>
+</tr>
+$(cat matlab_short.log | while read line
+  do
+	  echo "<tr>"
+	  STATUS=`echo $line | awk '{print $1}'`
+	  #FAILURE
+	  if [ "$STATUS" = "FAILURE" ]
+	  then
+		  FONTC=$(echo "$BODY_FONTC bgcolor=#ffff00");
+		  FONTL=$(echo "$BODY_FONTL bgcolor=#ffff00");
+		  echo $line | awk -v FONTC="$FONTC" -v FONTL="$FONTL" '
+		  { printf("<td %s id=FAILURE>%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n\n",FONTL,$1,FONTC,$3,FONTC,$6,FONTL,$9,FONTL,$11);}
+		  '; 
+	  else
+		  #SUCCESS
+		  if [ "$STATUS" = "SUCCESS" ]
+		  then
+			  FONTC=$(echo "$BODY_FONTC bgcolor=#ddffdd")
+			  FONTL=$(echo "$BODY_FONTL bgcolor=#ddffdd")
+			  #do not write anything
+		  #ERROR
+		  else
+			  FONTC=$(echo "$BODY_FONTC bgcolor=#ffdddd id=ERROR")
+			  FONTL=$(echo "$BODY_FONTL bgcolor=#ffdddd")
+			  echo $line | awk -v FONTC="$FONTC" -v FONTL="$FONTL" '
+			  { printf("<td %s>%s</td>\n<td %s>%s%s%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n\n",FONTL,$1,FONTL,$3,$4,$5,FONTC,$8,FONTL,$11,FONTL,$13);}
+			  '; 
+		  fi
+
+	  fi
+	  echo "</tr>"
+  done
+	  )
+</table>
+<br>
+END
+fi
+#}}}
+fi
+if [ $IS_PYTHON -eq 1 ]; then
+#python{{{
+#display table ONLY if installation worked and there has been at leat one FAILURE or ERROR
+if [ $IS_INSTALL -eq 1 ] && [ $NUM_PYTHON_TOT -gt 1 ] && [ $NUM_PYTHON_SUC -ne $NUM_PYTHON_TOT ]
+then
+	cat << END >> report.html
+	<table $(echo $SECTION_STYLE)><tr><td $(echo $SECTION_FONT)>List of Python tests</td></tr></table>
+	<table $(echo $BODY_STYLE) style="border-collapse:collapse;">
+	<tr> 
+	<th $BODY_FONT>Result</th> 
+	<th $BODY_FONT>Tolerance</th> 
+	<th $BODY_FONT>Test id</th>  
+	<th $BODY_FONT>Test name</th> 
+	<th $BODY_FONT>Field checked</th>
+	</tr>
+	$(cat python_short.log | while read line
+do
+	echo "<tr>"
+	STATUS=`echo $line | awk '{print $1}'`
+
+	#FAILURE
+	if [ "$STATUS" = "FAILURE" ]
+	then
+
+		FONTC=$(echo "$BODY_FONTC bgcolor=#ffff00");
+		FONTL=$(echo "$BODY_FONTL bgcolor=#ffff00");
+		echo $line | awk -v FONTC="$FONTC" -v FONTL="$FONTL" '
+		{ printf("<td %s id=FAILURE>%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n\n",FONTL,$1,FONTC,$3,FONTC,$6,FONTL,$9,FONTL,$11);}
+		'; 
+
+	else
+
+		#SUCCESS
+		if [ "$STATUS" = "SUCCESS" ]
+		then
+			FONTC=$(echo "$BODY_FONTC bgcolor=#ddffdd")
+			FONTL=$(echo "$BODY_FONTL bgcolor=#ddffdd")
+			#do not write anything
+			#ERROR
+		else
+			FONTC=$(echo "$BODY_FONTC bgcolor=#ffdddd id=ERROR")
+			FONTL=$(echo "$BODY_FONTL bgcolor=#ffdddd")
+			echo $line | awk -v FONTC="$FONTC" -v FONTL="$FONTL" '
+			{ printf("<td %s>%s</td>\n<td %s>%s%s%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n\n",FONTL,$1,FONTL,$3,$4,$5,FONTC,$8,FONTL,$11,FONTL,$13);}
+			'; 
+		fi
+
+	fi
+	echo "</tr>"
+done
+)
+</table>
+<br>
+END
+fi
+#}}}
+fi
+
+#4. Error report
+if [ $IS_MATLAB -eq 1 ] && [ -s matlaberror.log ]; then
+#Matlab {{{
+cat << END >> report.html
+<table $SECTION_STYLE><tr><td $SECTION_FONT>Matlab errors</td></tr></table>
+<table $CODE_STYLE><tr><td $CODE_FONT>
+<pre style="
+white-space: -moz-pre-wrap;
+white-space: -pre-wrap;
+white-space: -o-pre-wrap;
+white-space: pre-wrap;
+word-wrap: break-word;
+">$(cat matlaberror.log)</pre>
+</td></tr></table>
+END
+#}}}
+fi
+if [ $IS_PYTHON -eq 1 ] && [ -s pythonerror.log ]; then
+	#Python {{{
+	cat << END >> report.html
+<table $SECTION_STYLE><tr><td $SECTION_FONT>Python errors</td></tr></table>
+<table $CODE_STYLE><tr><td $CODE_FONT>
+<pre style="
+white-space: -moz-pre-wrap;
+white-space: -pre-wrap;
+white-space: -o-pre-wrap;
+white-space: pre-wrap;
+word-wrap: break-word;
+">$(cat pythonerror.log)</pre>
+</td></tr></table>
+END
+	#}}}
+fi
+if [ -s petscerror.log ]; then
+	#PETSc{{{
+cat << END >> report.html
+<table $SECTION_STYLE><tr><td $SECTION_FONT>PETSc errors</td></tr></table>
+<table $CODE_STYLE><tr><td $CODE_FONT>
+<pre style="
+white-space: -moz-pre-wrap;
+white-space: -pre-wrap;
+white-space: -o-pre-wrap;
+white-space: pre-wrap;
+word-wrap: break-word;
+">$(cat petscerror.log)</pre>
+</td></tr></table>
+END
+#}}}
+fi
+
+#last: footer
+#{{{
+cat << END >> report.html
+<br>
+<table $FOOTER_STYLE><tr><td $FOOTER_FONT><a href="http://issm.jpl.nasa.gov" title="ISSM website" target="_blank">ISSM</a> nightly run report</td></tr></table>
+</div>
+END
+#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/svnlog
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/svnlog	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/svnlog	(revision 21239)
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+svn log $1 | perl -e 'print reverse<>'
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/svnvimdiff
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/svnvimdiff	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/svnvimdiff	(revision 21239)
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+#get files to check
+if [ $# -eq 0 ]
+then
+	echo "no file specified"
+	return
+fi
+
+#first, check that all files exist
+for FILE in $*
+do
+	if [ ! -f "$FILE" ]
+	then
+		echo "File $FILE not found!" >&2   # Error message to stderr.
+		exit 1
+	fi 
+done
+
+#svn diff all files
+for FILE in $*
+do
+
+	FILENAME=$(basename $FILE);
+	EXT=${FILENAME/*./}
+	RELEASE=$(svn info $FILE | grep "Revision" | awk '{ print $2 }')
+
+	YOUFILE="YOUR_FILE"."$EXT"
+	SVNFILE="SVN_FILE"."$EXT"
+
+	echo "Downloading current $FILENAME in svn repository"
+	mv $FILE $YOUFILE
+	svn update -q $FILE
+	mv $FILE $SVNFILE
+
+	vimdiff $YOUFILE $SVNFILE
+
+	echo "Reverting to local version of $FILENAME"
+	svn update -q -r$RELEASE $FILE
+	wait #wait till svn has downloaded the file otherwise it could be lost!
+	mv $YOUFILE $FILE
+	touch $FILE
+	rm $SVNFILE
+done
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/tai
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/tai	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/tai	(revision 21239)
@@ -0,0 +1,9 @@
+#!/bin/bash
+if [ -z $EXECUTION_DIR ];
+then
+	EXECUTION_DIR=$ISSM_DIR/execution
+fi
+
+DIR=$(ls -rtd1 $EXECUTION_DIR/* | tail -n1)
+echo "Execution directory: $DIR"
+tail -f $DIR/*.outlog
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/translateToPy.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/translateToPy.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/translateToPy.py	(revision 21239)
@@ -0,0 +1,256 @@
+
+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#
+program =               'translateToPy.py'
+version =               '1.0'
+versionReleaseDate =    '09/24/12'
+origAuthor =            'Mike Pellegrin'
+desc = '\nMatlab script conversion into python'
+#
+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#				History
+#	Date		Developer           Modification
+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#	09/24/12 Michael Pellegrin	Initial Release     V1.0
+#
+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+import codecs, unicodedata
+import sys, re, datetime, os
+import decimal, operator
+
+
+outputLocation = sys.stdout
+inputFile = ""
+
+# other global vars
+indentLevel = 0
+
+
+def setupOutputLocation ( outFile ):
+    if outFile != sys.stdout:
+		globals()['outputLocation'] = open( outFile, 'w' ) # clobber
+
+def translateFile ( inputFile ):
+	f = codecs.open( inputFile, encoding='utf-8' )
+	try:
+		for line in f:
+			# print "in: " +line
+
+			asciiLine = unicodedata.normalize('NFKD', line).encode('ascii','ignore')
+			line = asciiLine
+
+			translateLine( line )
+
+	finally:
+		f.close()
+
+def translateLine ( line ):
+
+	if len(line) == 1:	# blank line
+		output( line )
+
+	elif line.split()[0][0] == '%':		# comment line
+		output("# " + line.replace('%','') )
+
+	else:		# needs cleanup.  this is a real-quick-n-dirty implimentation
+		#print line
+		res = line.replace('{','[')
+		res = res.replace('}',']')
+		res = res.replace('model','model()')
+		res = res.replace('SolutionEnum','SolutionEnum()')
+		res = res.replace('StressTensorEnum','StressTensorEnum()')
+		res = res.replace('.par','.py')
+		res = res.replace('=extrude(md,','.extrude(')
+
+		res = res.replace('thickness(pos)','thickness[pos]')
+		res = res.replace('find(md.','numpy.nonzero(md.')
+
+		res = res.replace('\n','')
+
+		# handle inline comments
+		res = res.replace('%','#')
+
+		res = res.replace('...','\\')
+
+		# determine if the m file has mult. line cmd (real quick solution)
+		multCmds = res.split(';')
+		numLines = len( multCmds ) - 2
+		allParts = ''
+		for part in multCmds:
+			allParts += part
+			#allParts += re.sub('^\s+','',part)
+			#allParts += part.strip()
+			if numLines > 0:
+				allParts += '\n'
+				numLines -= 1
+		res = allParts	
+
+		res = res.replace(';','')
+
+
+		res = convertFieldValues( res )
+		#print 'resulting line:' + str(res) + '\n'
+		output(res)
+
+def convertFieldValues ( currentLine ):
+	# before utilizing regex's {starting w/ eg. \([0-9]\) } for special case: ...(#)...
+	# i noticed what i'm looking for is only TransientSolution(*). So, ...
+
+	res = currentLine
+	if 'md.results' in currentLine:
+		res = res.replace('(md.results.','md.results[\'')
+
+		if 'TransientSolution(' in currentLine:		# got a TransientSolution([0-9..]) case
+			res = res.replace('TransientSolution(','TransientSolution\'][')
+			parts = res.split(')')
+			res = parts[0] + '][\'' + parts[1].replace('.','') + '\']' + parts[2]
+
+		else:				# handle the other cases for md.results
+			
+			res = res.replace('Solution.Vx)','Solution\'][1][\'Vx\']')
+			res = res.replace('Solution.Vy)','Solution\'][1][\'Vy\']')
+			res = res.replace('Solution.Vz)','Solution\'][1][\'Vz\']')
+			res = res.replace('Solution.Vel)','Solution\'][1][\'Vel\']')
+
+			res = res.replace('Solution.Pressure)','Solution\'][1][\'Pressure\']')
+
+			res = res.replace('Solution.StressTensorxx)','Solution\'][1][\'StressTensorxx\']')
+			res = res.replace('Solution.StressTensorxy)','Solution\'][1][\'StressTensorxy\']')
+			res = res.replace('Solution.StressTensoryy)','Solution\'][1][\'StressTensoryy\']')
+			res = res.replace('Solution.StressTensorzz)','Solution\'][1][\'StressTensorzz\']')
+			res = res.replace('Solution.StressTensorxz)','Solution\'][1][\'StressTensorxz\']')
+			res = res.replace('Solution.StressTensoryz)','Solution\'][1][\'StressTensoryz\']')
+
+			res = res.replace('Solution.FrictionCoefficient)','Solution\'][1][\'FrictionCoefficient\']')
+			res = res.replace('Solution.SurfaceforcingsMasBalance)','Solution\'][1][\'SurfaceforcingsMasBalance\']')
+			res = res.replace('Solution.MaskElementonfloatingice)','Solution\'][1][\'MaskElementonfloatingice\']')
+			res = res.replace('Solution.J)','Solution\'][1][\'J\']')
+			res = res.replace('Solution.BalancethicknessThickeningRate)','Solution\'][1][\'BalancethicknessThickeningRate\']')
+
+			res = res.replace('Solution.Gradient1)','Solution\'][1][\'Gradient1\']')
+			res = res.replace('Solution.Gradient2)','Solution\'][1][\'Gradient2\']')
+
+			res = res.replace('Solution.MaterialsRheologyZbar)','Solution\'][1][\'MaterialsRheologyZbar\']')
+			res = res.replace('Solution.MaterialsRheologyBbar)','Solution\'][1][\'MaterialsRheologyBbar\']')
+			res = res.replace('Solution.MaterialsRheologyB)','Solution\'][1][\'MaterialsRheologyB\']')
+
+			res = res.replace('Solution.Thickness)','Solution\'][1][\'Thickness\']')
+
+			res = res.replace('Solution.Temperature)','Solution\'][1][\'Temperature\']')
+
+			res = res.replace('Solution.BasalforcingsMeltingRate)','Solution\'][1][\'BasalforcingsMeltingRate\']')
+
+			res = res.replace('Solution.SurfaceSlopeX)','Solution\'][1][\'SurfaceSlopeX\']')
+			res = res.replace('Solution.SurfaceSlopeY)','Solution\'][1][\'SurfaceSlopeY\']')
+			res = res.replace('Solution.SurfaceSlopeZ)','Solution\'][1][\'SurfaceSlopeZ\']')
+
+			res = res.replace('Solution.BedSlopeX)','Solution\'][1][\'BedSlopeX\']')
+			res = res.replace('Solution.BedSlopeY)','Solution\'][1][\'BedSlopeY\']')
+			res = res.replace('Solution.BedSlopeZ)','Solution\'][1][\'BedSlopeZ\']')
+
+			res = res.replace('Solution.Enthalpy)','Solution\'][1][\'Enthalpy\']')
+			res = res.replace('Solution.Waterfraction)','Solution\'][1][\'Waterfraction\']')
+			res = res.replace('Solution.Temperature)','Solution\'][1][\'Temperature\']')
+
+			# special case
+			res = res.replace('.DiagnosticSolution.J','[\'DiagnosticSolution\'][1][\'J\']')
+
+	return res
+
+def output ( line ):
+	numTabs = indentLevel
+	while numTabs:
+		numTabs -= 1
+		print >> outputLocation, '\t',
+	print >> outputLocation, line
+
+def outputTopOfSript( inputFile ):
+
+	global indentLevel
+
+	output("\"\"\"")
+	output("== == == == == == == == == == == == == == == == == == ==")
+	output("Auto generated python script for ISSM:   %s" % (inputFile) )
+	output("Created on %s via %s Ver %s by %s" % ( datetime.date.today(), program, version, os.getlogin()))
+	output("== == == == == == == == == == == == == == == == == == ==")
+	#output("")
+	output(desc)
+	output("%s Author: Michael Pellegrin" % (program))
+	output("%s Date: %s" % (program, versionReleaseDate))
+	output("== == == == == == == == == == == == == == == == == == ==")
+	output("\"\"\"")
+	output("")
+
+def outputBottomOfScript():
+
+	global indentLevel
+
+	output("")
+	
+def genericImports ():
+	output("from MatlabFuncs import *")
+	output("from model import *")
+	output("from EnumDefinitions import *")
+	output("from numpy import *")
+
+def createImports ( inputFile ):
+	genericImports()
+
+	# cycle through eachline to assertain import needs
+	f = codecs.open( inputFile, encoding='utf-8' )
+	try:
+		for line in f:
+			# print "in: " +line
+
+			# toss blank lines
+			if len(line) == 1:
+				continue
+
+			asciiLine = unicodedata.normalize('NFKD', line).encode('ascii','ignore')
+			line = asciiLine
+
+			for il in importList:
+				if line.find(il) != -1:
+					output( "from %s import *" % (il) )
+					importList.remove(il)	# already got it
+
+	finally:
+		output("")
+		f.close()
+
+
+def initImportList ():
+	global importList
+	
+	importList = [ \
+		'triangle'	,\
+		'setmask'	,\
+		'parameterize'	,\
+		'setflowequation'	,\
+		'meshconvert'	,\
+		'solve'	,\
+		#'zeros'					# -> numpy
+		]
+	
+
+
+def convertToPython ( inFile, outFile = sys.stdout ):
+    #print ' in cnvrt to python w/ file:' + inFile
+    initImportList()
+    setupOutputLocation( outFile )
+    outputTopOfSript( inFile )
+    createImports( inFile )
+    translateFile( inFile )
+    #    outputBottomOfScript()
+
+	
+if __name__ == "__main__":
+    #print ' in main w/ arg:' + sys.argv[1]+' '+sys.argv[2]
+    if len(sys.argv)==2:
+        convertToPython( sys.argv[1], sys.argv[2] )
+    else:
+        convertToPython( sys.argv[1] )
+
+
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/user_kill
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/user_kill	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/user_kill	(revision 21239)
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+#get jobs to be killed
+if [ $# -eq 0 ]
+then
+	echo "no job specified"
+	return
+fi
+
+#kill jobs
+for JOB in $*
+do
+
+	#if [[ "$HOSTNAME" != "metro.jpl.nasa.gov" ]]
+	#then
+	#	echo "cannot use user_kill for now"
+	#	exit
+	#fi
+
+	#if [[ $1 == "screen" ]]
+	#then
+	#	echo "cannot kill screen for now!"
+	#	exit 1
+	#fi
+
+
+
+	#if [[ $1 == "matlab" ]]
+	#then
+	#	echo "cannot kill matlab for now!"
+	#	exit 1
+	#fi
+
+	if [ "$JOB" = "konsole" ]; then
+		echo "cannot kill konsole for now!"
+		exit 1
+	fi
+
+	echo "killing $JOB"
+
+	for i in `ps aux | grep $JOB | grep -v grep | grep -v user_kill | awk '{printf("%s\n",$2);}'`; 
+	do 
+		kill -9 $i;
+	done;
+done
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/vie
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/vie	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/vie	(revision 21239)
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+if [ -z "$EXECUTION_DIR" ];
+then
+	EXECUTION_DIR="$ISSM_DIR/execution"
+fi
+
+DIR=$(ls -rtd1 $EXECUTION_DIR/* | tail -n1)
+vim $DIR/*.errlog
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/vil
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/vil	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/vil	(revision 21239)
@@ -0,0 +1,8 @@
+#!/bin/bash
+if [ -z $EXECUTION_DIR ];
+then
+	EXECUTION_DIR="$ISSM_DIR/execution"
+fi
+
+DIR=$(ls -rtd1 $EXECUTION_DIR/* | tail -n1)
+vim $DIR/*.outlog
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/wincron.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/wincron.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/wincron.sh	(revision 21239)
@@ -0,0 +1,5 @@
+#/bin/bash
+#Launch cron as a windows service, using cygrunsrv: 
+
+cygrunsrv --install cron --path /usr/sbin/cron --args -n
+net start cron
Index: /issm/branches/trunk-larour-NatClimateChange2016/scripts/windowsbuild.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/scripts/windowsbuild.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/scripts/windowsbuild.sh	(revision 21239)
@@ -0,0 +1,21 @@
+#!/bin/bash
+#build windows archive of binaries.
+
+#Some local script functions 
+function today_date {
+suffix=`date | awk '{printf("%s-%s-%s",$2,$3,$6);}'` 
+echo $suffix;
+}
+
+#Create tar file, with today's date in the title;
+today=`today_date`
+
+cd $ISSM_DIR/bin
+
+#Filter out .svn files
+rm -rf list
+ls *.mexw32 | grep -v "\.svn" > list;
+
+tar zcvf ../issm-1.0-win-$today.tar.gz  `cat list`
+rm -rf list
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/Makefile.am
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/Makefile.am	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/Makefile.am	(revision 21239)
@@ -0,0 +1,2 @@
+EXTRA_DIST =  perl
+SUBDIRS = c m wrappers mobile
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/Makefile.am
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/Makefile.am	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/Makefile.am	(revision 21239)
@@ -0,0 +1,726 @@
+AM_CPPFLAGS = @DAKOTAINCL@ @SHAPELIBINCL@ @PETSCINCL@ @SLEPCINCL@ @AMPIINCL@ @MPIINCL@ @METISINCL@ @CHACOINCL@ @SCOTCHINCL@ @PLAPACKINCL@ @BLASLAPACKINCL@ @MKLINCL@ @MUMPSINCL@ @TRIANGLEINCL@ @SPAIINCL@ @HYPREINCL@ @PROMETHEUSINCL@ @SUPERLUINCL@ @SPOOLESINCL@ @PASTIXINCL@ @MLINCL@ @TAOINCL@ @ADIC2INCL@ @ADOLCINCL@ @GSLINCL@ @BOOSTINCL@ @ANDROID_NDKINCL@ @METEOIOINCL@ @SNOWPACKINCL@ @PROJ4INCL@
+
+AUTOMAKE_OPTIONS = subdir-objects
+
+EXEEXT=$(ISSMEXT)
+
+#Library declaration {{{
+if !WINDOWS
+lib_LTLIBRARIES = libISSMCore.la libISSMOverload.la 
+if WRAPPERS
+lib_LTLIBRARIES += libISSMModules.la
+endif
+else
+noinst_LTLIBRARIES = libISSMCore.la libISSMOverload.la 
+if WRAPPERS
+noinst_LTLIBRARIES += libISSMModules.la
+endif
+endif
+#}}}
+
+#Core sources
+#Core sources{{{
+issm_sources = ./datastructures/DataSet.cpp\
+					./classes/gauss/GaussSeg.cpp\
+					./classes/gauss/GaussTria.cpp\
+					./classes/gauss/GaussTetra.cpp\
+					./classes/gauss/GaussPenta.cpp\
+					./classes/IoModel.cpp\
+					./classes/FemModel.cpp\
+					./classes/Loads/Friction.cpp\
+					./classes/Inputs/TransientInput.cpp\
+					./classes/Constraints/SpcTransient.cpp\
+					./classes/DependentObject.cpp\
+					./classes/DofIndexing.cpp\
+					./classes/Contours.cpp\
+					./classes/Nodes.cpp\
+					./classes/Vertices.cpp\
+					./classes/Node.cpp\
+					./classes/Vertex.cpp\
+					./classes/Hook.cpp\
+					./classes/ExternalResults/Results.cpp\
+					./classes/Elements/Element.cpp\
+					./classes/Elements/Elements.cpp\
+					./classes/Elements/ElementHook.cpp\
+					./classes/Elements/Seg.cpp\
+					./classes/Elements/SegRef.cpp\
+					./classes/Elements/Tria.cpp\
+					./classes/Elements/TriaRef.cpp\
+					./classes/Elements/Tetra.cpp\
+					./classes/Elements/TetraRef.cpp\
+					./classes/Elements/Penta.cpp\
+					./classes/Elements/PentaRef.cpp\
+					./classes/Inputs/Inputs.cpp\
+					./classes/Inputs/SegInput.cpp\
+					./classes/Inputs/TriaInput.cpp\
+					./classes/Inputs/BoolInput.cpp\
+					./classes/Inputs/IntInput.cpp\
+					./classes/Inputs/DoubleInput.cpp\
+					./classes/Inputs/DoubleArrayInput.cpp\
+					./classes/Inputs/DatasetInput.cpp\
+					./classes/Materials/Materials.cpp\
+					./classes/Materials/Matice.cpp\
+					./classes/Materials/Matestar.cpp\
+					./classes/Materials/Matpar.cpp\
+					./classes/Constraints/Constraints.cpp\
+					./classes/Constraints/SpcStatic.cpp\
+					./classes/Constraints/SpcDynamic.cpp\
+					./classes/Loads/Loads.cpp\
+					./classes/Loads/Penpair.cpp\
+					./classes/Loads/Pengrid.cpp\
+					./classes/Loads/Moulin.cpp\
+					./classes/Loads/Numericalflux.cpp\
+					./classes/Loads/Neumannflux.cpp\
+					./classes/matrix/ElementMatrix.cpp\
+					./classes/matrix/ElementVector.cpp\
+					./classes/Params/Parameters.cpp\
+					./classes/Params/BoolParam.cpp\
+					./classes/Params/IntParam.cpp\
+					./classes/Params/IntVecParam.cpp\
+					./classes/Params/IntMatParam.cpp\
+					./classes/Params/DoubleParam.cpp\
+					./classes/Params/FileParam.cpp\
+					./classes/Params/StringArrayParam.cpp\
+					./classes/Params/DoubleMatParam.cpp\
+					./classes/Params/DoubleTransientMatParam.cpp\
+					./classes/Params/DoubleMatArrayParam.cpp\
+					./classes/Params/DoubleVecParam.cpp\
+					./classes/Params/StringParam.cpp\
+					./classes/Params/MatrixParam.cpp\
+					./classes/Params/VectorParam.cpp\
+					./classes/Params/TransientParam.cpp\
+					./classes/Params/DataSetParam.cpp\
+					./classes/Profiler.cpp\
+					./shared/MemOps/MemOps.cpp\
+					./shared/Matrix/MatrixUtils.cpp\
+					./shared/io/Disk/pfopen.cpp\
+					./shared/io/Disk/pfclose.cpp\
+					./shared/io/Disk/WriteLockFile.cpp\
+					./shared/io/Print/PrintfFunction.cpp\
+					./shared/io/Comm/IssmComm.cpp\
+					./shared/io/Marshalling/IoCodeConversions.cpp \
+					./shared/LatLong/Ll2xyx.cpp\
+					./shared/LatLong/Xy2llx.cpp\
+					./shared/FSanalyticals/fsanalyticals.cpp\
+					./shared/Enum/EnumToStringx.cpp\
+					./shared/Enum/StringToEnumx.cpp\
+					./shared/Numerics/Verbosity.cpp\
+					./shared/Numerics/GaussPoints.cpp\
+					./shared/Numerics/cross.cpp\
+					./shared/Numerics/isnan.cpp\
+					./shared/Numerics/cubic.cpp\
+					./shared/Numerics/NewtonSolveDnorm.cpp\
+					./shared/Numerics/extrema.cpp\
+					./shared/Numerics/legendre.cpp\
+					./shared/Numerics/XZvectorsToCoordinateSystem.cpp\
+					./shared/Exceptions/Exceptions.cpp\
+					./shared/Sorting/binary_search.cpp\
+					./shared/Elements/Cuffey.cpp\
+					./shared/Elements/BuddJacka.cpp\
+					./shared/Elements/CuffeyTemperate.cpp\
+					./shared/Elements/StressIntensityIntegralWeight.cpp\
+					./shared/Elements/Paterson.cpp\
+					./shared/Elements/Arrhenius.cpp\
+					./shared/Elements/LliboutryDuval.cpp \
+					./shared/Elements/PrintArrays.cpp\
+					./shared/Elements/PddSurfaceMassBalance.cpp\
+					./shared/Elements/ComputeDelta18oTemperaturePrecipitation.cpp\
+					./shared/Elements/ComputeMungsmTemperaturePrecipitation.cpp\
+					./shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp\
+					./shared/Elements/DrainageFunctionWaterfraction.cpp\
+					./shared/Elements/EstarComponents.cpp\
+					./shared/String/DescriptorIndex.cpp\
+					./toolkits/issm/IssmToolkitUtils.cpp\
+					./toolkits/issm/IssmSolver.cpp\
+					./toolkits/mpi/issmmpi.cpp\
+					./toolkits/mpi/commops/DetermineLocalSize.cpp\
+					./toolkits/mpi/commops/DetermineGlobalSize.cpp\
+					./toolkits/mpi/commops/DetermineRowRankFromLocalSize.cpp\
+					./toolkits/mpi/commops/GetOwnershipBoundariesFromRange.cpp\
+					./toolkits/ToolkitOptions.cpp\
+					./modules/ModelProcessorx/ModelProcessorx.cpp\
+					./modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp\
+					./modules/ModelProcessorx/NodesPartitioning.cpp\
+					./modules/ModelProcessorx/EdgesPartitioning.cpp\
+					./modules/ModelProcessorx/FacesPartitioning.cpp\
+					./modules/ModelProcessorx/CreateParameters.cpp\
+					./modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp\
+					./modules/ModelProcessorx/CreateFaces.cpp\
+					./modules/ModelProcessorx/CreateEdges.cpp\
+					./modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp\
+					./modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp\
+					./modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp\
+					./modules/ModelProcessorx/CreateNodes.cpp\
+					./modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.cpp\
+					./modules/NodesDofx/NodesDofx.cpp\
+					./modules/NodalValuex/NodalValuex.cpp\
+					./modules/VerticesDofx/VerticesDofx.cpp\
+					./modules/VertexCoordinatesx/VertexCoordinatesx.cpp\
+					./modules/OutputResultsx/OutputResultsx.cpp\
+					./modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.cpp\
+					./modules/InputDuplicatex/InputDuplicatex.cpp\
+					./modules/InputExtrudex/InputExtrudex.cpp\
+					./modules/SurfaceAreax/SurfaceAreax.cpp\
+					./modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp\
+					./modules/CreateJacobianMatrixx/CreateJacobianMatrixx.cpp\
+					./modules/SystemMatricesx/SystemMatricesx.cpp\
+					./modules/CreateNodalConstraintsx/CreateNodalConstraintsx.cpp\
+					./modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.cpp\
+					./modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp\
+					./modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp\
+					./modules/InputUpdateFromConstantx/InputUpdateFromConstantx.cpp\
+					./modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.cpp\
+					./modules/GeothermalFluxx/GeothermalFluxx.cpp\
+					./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp\
+					./modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp\
+					./modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp\
+					./modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp\
+					./modules/ConfigureObjectsx/ConfigureObjectsx.cpp\
+					./modules/SpcNodesx/SpcNodesx.cpp\
+					./modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp\
+					./modules/SurfaceMassBalancex/Gembx.cpp\
+					./modules/Reducevectorgtofx/Reducevectorgtofx.cpp\
+					./modules/Reduceloadx/Reduceloadx.cpp\
+					./modules/ConstraintsStatex/ConstraintsStatex.cpp\
+					./modules/ResetConstraintsx/ResetConstraintsx.cpp\
+					./modules/ResetFSBasalBoundaryConditionx/ResetFSBasalBoundaryConditionx.cpp\
+					./modules/Solverx/Solverx.cpp\
+					./modules/VecMergex/VecMergex.cpp\
+					./modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp\
+					./cores/ProcessArguments.cpp\
+					./cores/ResetBoundaryConditions.cpp\
+					./cores/WrapperCorePointerFromSolutionEnum.cpp\
+					./cores/CorePointerFromSolutionEnum.cpp\
+					./cores/ad_core.cpp\
+					./cores/adgradient_core.cpp\
+					./main/EnvironmentInit.cpp\
+					./main/EnvironmentFinalize.cpp\
+					./analyses/EnumToAnalysis.cpp\
+					./solutionsequences/solutionsequence_la.cpp\
+					./solutionsequences/solutionsequence_la_theta.cpp\
+					./solutionsequences/solutionsequence_linear.cpp\
+					./solutionsequences/solutionsequence_nonlinear.cpp\
+					./solutionsequences/solutionsequence_newton.cpp\
+					./solutionsequences/solutionsequence_fct.cpp\
+					./solutionsequences/convergence.cpp\
+					./classes/Options/Options.cpp\
+					./classes/Options/OptionUtilities.cpp\
+					./classes/RiftStruct.cpp\
+					./modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp \
+					./cores/transient_core.cpp\
+					./cores/steadystate_core.cpp\
+					./cores/masstransport_core.cpp\
+					./cores/depthaverage_core.cpp\
+					./cores/extrudefrombase_core.cpp\
+					./cores/extrudefromtop_core.cpp\
+					./cores/thermal_core.cpp\
+					./cores/smb_core.cpp\
+					./solutionsequences/solutionsequence_thermal_nonlinear.cpp\
+					./modules/ControlInputSetGradientx/ControlInputSetGradientx.cpp\
+					./modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.cpp\
+					./modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.cpp\
+					./modules/ModelProcessorx/Control/CreateParametersControl.cpp\
+					./modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp\
+					./modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp\
+					./modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp\
+					./modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp\
+					./modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp\
+					./modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp\
+					./modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.cpp\
+					./modules/Gradjx/Gradjx.cpp\
+					./modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.cpp\
+					./modules/ThicknessAlongGradientx/ThicknessAlongGradientx.cpp\
+					./modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.cpp\
+					./modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.cpp\
+					./modules/RheologyBAbsGradientx/RheologyBAbsGradientx.cpp\
+					./classes/Inputs/ControlInput.cpp\
+					./shared/Numerics/BrentSearch.cpp\
+					./cores/control_core.cpp\
+					./cores/controltao_core.cpp\
+					./cores/controlad_core.cpp\
+					./cores/controlm1qn3_core.cpp\
+					./cores/controlvalidation_core.cpp\
+					./cores/adjointstressbalance_core.cpp\
+					./cores/adjointbalancethickness_core.cpp\
+					./cores/adjointbalancethickness2_core.cpp\
+					./cores/AdjointCorePointerFromSolutionEnum.cpp\
+					./solutionsequences/solutionsequence_adjoint_linear.cpp\
+					./cores/hydrology_core.cpp\
+					./solutionsequences/solutionsequence_hydro_nonlinear.cpp\
+					./cores/stressbalance_core.cpp\
+					./solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp\
+					./cores/balancethickness_core.cpp \
+					./cores/balancethickness2_core.cpp \
+					./cores/balancevelocity_core.cpp \
+					./cores/dummy_core.cpp\
+					./cores/surfaceslope_core.cpp\
+					./cores/bedslope_core.cpp\
+					./cores/meshdeformation_core.cpp\
+					./cores/damage_core.cpp\
+					./cores/levelsetfunctionslope_core.cpp\
+					./cores/movingfront_core.cpp\
+					./modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp\
+					./classes/Loads/Riftfront.cpp\
+					./modules/ConstraintsStatex/RiftConstraintsState.cpp\
+					./modules/ModelProcessorx/CreateOutputDefinitions.cpp\
+					./modules/OutputDefinitionsResponsex/OutputDefinitionsResponsex.cpp\
+					./classes/Inputs/PentaInput.cpp\
+					./classes/Inputs/TetraInput.cpp
+#}}}
+#DAKOTA sources  {{{
+if DAKOTA
+issm_sources +=  ./classes/Dakota/IssmDirectApplicInterface.h\
+					  ./classes/Dakota/IssmParallelDirectApplicInterface.cpp\
+					  ./modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp\
+					  ./modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp\
+					  ./modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp\
+					  ./modules/AverageOntoPartitionx/AverageOntoPartitionx.cpp\
+					  ./modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp\
+					  ./modules/ModelProcessorx/Dakota/UpdateElementsAndMaterialsDakota.cpp\
+					  ./cores/dakota_core.cpp
+endif
+#}}}
+#BAMG sources  {{{
+if BAMG
+issm_sources += ./bamg/BamgGeom.cpp\
+					 ./bamg/BamgMesh.cpp\
+					 ./bamg/BamgOpts.cpp\
+					 ./bamg/CrackedEdge.cpp\
+					 ./bamg/Curve.cpp\
+					 ./bamg/Direction.cpp\
+					 ./bamg/Edge.cpp\
+					 ./bamg/GeomEdge.cpp\
+					 ./bamg/GeomSubDomain.cpp\
+					 ./bamg/GeomVertex.cpp\
+					 ./bamg/Geometry.cpp\
+					 ./bamg/ListofIntersectionTriangles.cpp\
+					 ./bamg/EigenMetric.cpp\
+					 ./bamg/Metric.cpp\
+					 ./bamg/BamgQuadtree.cpp\
+					 ./bamg/SetOfE4.cpp\
+					 ./bamg/SubDomain.cpp\
+					 ./bamg/AdjacentTriangle.cpp\
+					 ./bamg/Triangle.cpp\
+					 ./bamg/BamgVertex.cpp\
+					 ./bamg/VertexOnEdge.cpp\
+					 ./bamg/VertexOnGeom.cpp\
+					 ./bamg/VertexOnVertex.cpp\
+					 ./bamg/Mesh.cpp\
+					 ./shared/Bamg/BigPrimeNumber.cpp\
+					 ./modules/Bamgx/Bamgx.cpp\
+					 ./modules/BamgConvertMeshx/BamgConvertMeshx.cpp\
+					 ./modules/BamgTriangulatex/BamgTriangulatex.cpp
+endif
+#}}}
+#Petsc sources  {{{
+if PETSC
+issm_sources += ./toolkits/petsc\
+					./toolkits/petsc/patches\
+					./toolkits/petsc/patches/VecToMPISerial.cpp\
+					./toolkits/petsc/patches/MatToSerial.cpp\
+					./toolkits/petsc/patches/VecMerge.cpp\
+					./toolkits/petsc/patches/NewVec.cpp\
+					./toolkits/petsc/patches/PetscOptionsDetermineSolverType.cpp\
+					./toolkits/petsc/patches/PetscOptionsInsertMultipleString.cpp\
+					./toolkits/petsc/patches/NewMat.cpp\
+					./toolkits/petsc/patches/VecFree.cpp\
+					./toolkits/petsc/patches/KSPFree.cpp\
+					./toolkits/petsc/patches/MatFree.cpp\
+					./toolkits/petsc/patches/MatMultPatch.cpp\
+					./toolkits/petsc/patches/ISSMToPetscMatrixType.cpp\
+					./toolkits/petsc/patches/ISSMToPetscInsertMode.cpp\
+					./toolkits/petsc/patches/ISSMToPetscNormMode.cpp\
+					./toolkits/petsc/objects/PetscMat.cpp\
+					./toolkits/petsc/objects/PetscVec.cpp\
+					./toolkits/petsc/objects/PetscSolver.cpp
+endif
+#}}}
+#Mumps sources  {{{
+if MUMPS
+issm_sources += ./toolkits/mumps/MumpsSolve.cpp
+endif
+#}}}
+#Gsl sources  {{{
+if GSL
+issm_sources += ./toolkits/gsl/DenseGslSolve.cpp
+endif
+#}}}
+#proj.4 sources  {{{
+if PROJ4
+issm_sources += ./modules/CoordinateSystemTransformx/CoordinateSystemTransformx.cpp
+endif
+#}}}
+#Analyses{{{
+if ADJOINTBALANCETHICKNESS
+issm_sources += ./analyses/AdjointBalancethicknessAnalysis.cpp
+endif
+if ADJOINTBALANCETHICKNESS2
+issm_sources += ./analyses/AdjointBalancethickness2Analysis.cpp
+endif
+if ADJOINTHORIZ
+issm_sources += ./analyses/AdjointHorizAnalysis.cpp
+endif
+if BALANCETHICKNESS
+issm_sources += ./analyses/BalancethicknessAnalysis.cpp
+endif
+if BALANCETHICKNESS2
+issm_sources += ./analyses/Balancethickness2Analysis.cpp
+endif
+if BALANCETHICKNESSSOFT
+issm_sources += ./analyses/BalancethicknessSoftAnalysis.cpp
+endif
+if BALANCEVELOCITY
+issm_sources += ./analyses/BalancevelocityAnalysis.cpp
+endif
+if L2PROJECTIONBASE
+issm_sources += ./analyses/L2ProjectionBaseAnalysis.cpp
+endif
+if DAMAGEEVOLUTION
+issm_sources += ./analyses/DamageEvolutionAnalysis.cpp
+issm_sources += ./modules/Damagex/Damagex.cpp
+endif
+if STRESSBALANCE
+issm_sources += ./analyses/StressbalanceAnalysis.cpp
+endif
+if UZAWAPRESSURE
+issm_sources += ./analyses/UzawaPressureAnalysis.cpp
+endif
+if STRESSBALANCESIA
+issm_sources += ./analyses/StressbalanceSIAAnalysis.cpp
+endif
+if STRESSBALANCEVERTICAL
+issm_sources += ./analyses/StressbalanceVerticalAnalysis.cpp
+endif
+if ENTHALPY
+issm_sources += ./analyses/EnthalpyAnalysis.cpp
+endif
+if HYDROLOGYSHREVE
+issm_sources += ./analyses/HydrologyShreveAnalysis.cpp
+endif
+if HYDROLOGYSOMMERS
+issm_sources += ./analyses/HydrologySommersAnalysis.cpp
+endif
+if HYDROLOGYDCINEFFICIENT
+issm_sources += ./analyses/HydrologyDCInefficientAnalysis.cpp
+endif
+if HYDROLOGYDCEFFICIENT
+issm_sources += ./analyses/HydrologyDCEfficientAnalysis.cpp
+endif
+if L2PROJECTIONEPL
+issm_sources += ./analyses/L2ProjectionEPLAnalysis.cpp
+endif
+if MELTING
+issm_sources += ./analyses/MeltingAnalysis.cpp
+endif
+if MASSTRANSPORT
+issm_sources += ./analyses/MasstransportAnalysis.cpp
+endif
+if SMB
+issm_sources += ./analyses/SmbAnalysis.cpp
+endif
+
+if FREESURFACEBASE
+issm_sources += ./analyses/FreeSurfaceBaseAnalysis.cpp
+endif
+if FREESURFACETOP
+issm_sources += ./analyses/FreeSurfaceTopAnalysis.cpp
+endif
+if EXTRUDEFROMBASE
+issm_sources += ./analyses/ExtrudeFromBaseAnalysis.cpp
+endif
+if EXTRUDEFROMTOP
+issm_sources += ./analyses/ExtrudeFromTopAnalysis.cpp
+endif
+if DEPTHAVERAGE
+issm_sources += ./analyses/DepthAverageAnalysis.cpp
+endif
+if THERMAL
+issm_sources += ./analyses/ThermalAnalysis.cpp
+endif
+if SMOOTH
+issm_sources += ./analyses/SmoothAnalysis.cpp
+endif
+if MESHDEFORMATION
+issm_sources += ./analyses/MeshdeformationAnalysis.cpp
+endif
+if LEVELSET
+issm_sources += ./analyses/LevelsetAnalysis.cpp
+issm_sources += ./modules/Calvingx/Calvingx.cpp
+endif
+if EXTRAPOLATION
+issm_sources += ./analyses/ExtrapolationAnalysis.cpp
+endif
+#}}}
+#Gia sources  {{{
+if GIA
+issm_sources +=  ./cores/gia_core.cpp\
+					./analyses/GiaAnalysis.cpp\
+					./modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp\
+					./modules/GiaDeflectionCorex/distme.f\
+					./modules/GiaDeflectionCorex/freed.f\
+					./modules/GiaDeflectionCorex/ojrule.f\
+					./modules/GiaDeflectionCorex/pwise.f\
+					./modules/GiaDeflectionCorex/qwise.f\
+					./modules/GiaDeflectionCorex/stot.f\
+					./modules/GiaDeflectionCorex/what0.f
+endif
+#}}}
+#Slr sources  {{{
+if SEALEVELRISE
+issm_sources +=  ./cores/sealevelrise_core.cpp\
+				 ./cores/sealevelrise_core_eustatic.cpp\
+				 ./cores/sealevelrise_core_noneustatic.cpp\
+				 ./analyses/SealevelriseAnalysis.cpp
+endif
+#}}}
+#Metis sources  {{{
+if METIS
+issm_sources += ./toolkits/metis/patches/METIS_PartMeshNodalPatch.cpp
+endif
+#}}}
+#Esmf sources  {{{
+if ESMF
+issm_sources += ./main/esmfbinders.cpp
+endif
+#}}}
+
+#Wrapper sources
+#Bamg sources  {{{
+
+#}}}
+#Kml sources  {{{
+kml_sources = ./modules/Exp2Kmlx/Exp2Kmlx.cpp\
+				  ./modules/Kml2Expx/Kml2Expx.cpp\
+				  ./modules/Shp2Kmlx/Shp2Kmlx.cpp\
+				  ./modules/KMLFileReadx/KMLFileReadx.cpp\
+				  ./modules/KMLMeshWritex/KMLMeshWritex.cpp\
+				  ./modules/KMLOverlayx/KMLOverlayx.cpp\
+				  ./kml/KML_Attribute.cpp\
+				  ./kml/KML_Comment.cpp\
+				  ./kml/KML_ColorStyle.cpp\
+				  ./kml/KML_Container.cpp\
+				  ./kml/KML_Document.cpp\
+				  ./kml/KML_Feature.cpp\
+				  ./kml/KML_File.cpp\
+				  ./kml/KML_Folder.cpp\
+				  ./kml/KML_Geometry.cpp\
+				  ./kml/KML_GroundOverlay.cpp\
+				  ./kml/KML_Icon.cpp\
+				  ./kml/KML_LatLonBox.cpp\
+				  ./kml/KML_LinearRing.cpp\
+				  ./kml/KML_LineString.cpp\
+				  ./kml/KML_LineStyle.cpp\
+				  ./kml/KML_MultiGeometry.cpp\
+				  ./kml/KML_Object.cpp\
+				  ./kml/KML_Overlay.cpp\
+				  ./kml/KML_Point.cpp\
+				  ./kml/KML_Placemark.cpp\
+				  ./kml/KML_Polygon.cpp\
+				  ./kml/KML_PolyStyle.cpp\
+				  ./kml/KML_Style.cpp\
+				  ./kml/KML_StyleSelector.cpp\
+				  ./kml/KML_SubStyle.cpp\
+				  ./kml/KML_Unknown.cpp\
+				  ./kml/KMLFileReadUtils.cpp
+#}}}
+#Modules sources{{{
+modules_sources= ./shared/Threads/LaunchThread.cpp\
+			./shared/Threads/PartitionRange.cpp\
+			./shared/Exp/exp.cpp\
+			./shared/TriMesh/AssociateSegmentToElement.cpp\
+			./shared/TriMesh/GridInsideHole.cpp\
+			./shared/TriMesh/OrderSegments.cpp\
+			./shared/TriMesh/SplitMeshForRifts.cpp\
+			./shared/TriMesh/TriMeshUtils.cpp\
+			./modules/TriMeshx/TriMeshx.cpp\
+			./modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.cpp\
+			./modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.cpp\
+			./modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp\
+			./modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp\
+			./modules/InterpFromMesh2dx/InterpFromMesh2dx.cpp\
+			./modules/InterpFromMesh2dx/InterpFromMesh2dxt.cpp\
+			./modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp\
+			./modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.cpp\
+			./modules/InterpFromMeshToGridx/InterpFromMeshToGridx.cpp\
+			./modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp\
+			./modules/ContourToMeshx/ContourToMeshx.cpp\
+			./modules/ContourToMeshx/ContourToMeshxt.cpp\
+			./modules/ExpToLevelSetx/ExpToLevelSetx.cpp\
+			./modules/ExpToLevelSetx/ExpToLevelSetxt.cpp\
+			./modules/ContourToNodesx/ContourToNodesx.cpp\
+			./modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.cpp\
+			./modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryxt.cpp\
+			./modules/NodeConnectivityx/NodeConnectivityx.cpp\
+			./modules/ElementConnectivityx/ElementConnectivityx.cpp\
+			./modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.cpp
+if CHACO
+modules_sources+= ./modules/Chacox/Chacox.cpp\
+						./modules/Chacox/input_parse.cpp\
+						./modules/Chacox/chaco_seconds.cpp\
+						./modules/Chacox/user_params.cpp
+endif
+if SCOTCH
+modules_sources+= ./modules/Scotchx/Scotchx.cpp
+endif
+#}}}
+
+#kriging (WRAPPER and executable)
+#Kriging sources  {{{
+if KRIGING
+issm_sources += ./classes/kriging/Observations.cpp\
+					./classes/kriging/GaussianVariogram.cpp\
+					./classes/kriging/ExponentialVariogram.cpp\
+					./classes/kriging/SphericalVariogram.cpp\
+					./classes/kriging/PowerVariogram.cpp\
+					./classes/kriging/Quadtree.cpp\
+					./classes/kriging/Covertree.cpp\
+					./classes/kriging/Observation.cpp\
+					./modules/Krigingx/pKrigingx.cpp
+
+modules_sources +=./modules/Krigingx/Krigingx.cpp\
+						./modules/Krigingx/pKrigingx.cpp
+endif
+#}}}
+#Library flags and sources {{{
+ALLCXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS) 
+
+libISSMCore_la_SOURCES  = $(issm_sources)
+libISSMCore_la_CXXFLAGS = $(ALLCXXFLAGS) $(DAKOTAFLAGS)
+libISSMCore_la_FFLAGS = $(AM_FFLAGS)
+
+if !WINDOWS
+if !STANDALONE_LIBRARIES
+libISSMCore_la_LIBADD = $(PETSCLIB) $(TAOLIB) $(M1QN3LIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(SCALAPACKLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB)   $(ADOLCLIB) $(AMPILIB) $(METEOIOLIB) $(SNOWPACKLIB)
+if FORTRAN
+libISSMCore_la_LIBADD += $(FLIBS) $(FORTRANLIB)
+endif
+endif
+endif
+
+if WRAPPERS
+libISSMModules_la_SOURCES = $(modules_sources)
+libISSMModules_la_SOURCES += $(bamg_sources)
+if KRIGING
+libISSMModules_la_SOURCES += $(kriging_sources)
+endif
+if KML
+libISSMModules_la_SOURCES += $(kml_sources)
+endif
+libISSMModules_la_CXXFLAGS = $(ALLCXXFLAGS)
+if !WINDOWS
+if STANDALONE_LIBRARIES
+libISSMModules_la_LIBADD = ./libISSMCore.la
+else
+libISSMModules_la_LIBADD = ./libISSMCore.la $(TRIANGLELIB) $(CHACOLIB)
+endif
+endif
+endif
+
+if VERSION
+AM_LDFLAGS =
+else
+AM_LDFLAGS = -avoid-version
+endif
+
+if STANDALONE_EXECUTABLES
+issm_LDFLAGS = -static
+endif
+
+if STANDALONE_LIBRARIES
+libISSMCore_la_LDFLAGS = -static
+libISSMOverload_la_LDFLAGS = -static
+if WRAPPERS
+libISSMModules_la_LDFLAGS = -static
+else
+libISSMModules_la_LDFLAGS = 
+endif
+else
+libISSMCore_la_LDFLAGS = 
+libISSMOverload_la_LDFLAGS =
+endif
+
+#}}}
+#Overload library, to overload any non-standard symbols. {{{
+libISSMOverload_la_SOURCES = ./shared/String/ApiPrintf.cpp
+
+libISSMOverload_la_CFLAGS  = -D_C_ -fPIC $(COPTFLAGS) $(CFLAGS)
+#}}}
+#Executable {{{
+if ANDROID
+if ANDROIDEXE
+bin_PROGRAMS = issm  issm_slr
+else
+bin_PROGRAMS = 
+endif
+else
+if JAVASCRIPT
+bin_PROGRAMS =
+else
+bin_PROGRAMS = issm  issm_slr
+endif
+endif
+
+#Standard libraries
+LDADD = ./libISSMCore.la ./libISSMOverload.la
+if WRAPPERS
+LDADD += ./libISSMModules.la $(TRIANGLELIB)
+endif
+
+#External packages
+LDADD +=  $(TAOLIB) $(M1QN3LIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(SCALAPACKLIB) $(BLACSLIB) $(PETSCLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB)  $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB) $(AMPILIB) $(ADOLCLIB) $(MPILIB) $(METEOIOLIB) $(SNOWPACKLIB) $(PROJ4LIB)
+
+if FORTRAN
+LDADD += $(FLIBS) $(FORTRANLIB)
+endif
+
+issm_SOURCES = main/issm.cpp
+issm_CXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS)
+
+issm_slr_SOURCES = main/issm_slr.cpp
+issm_slr_CXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS)
+
+
+if KRIGING
+bin_PROGRAMS += kriging
+kriging_SOURCES = main/kriging.cpp
+kriging_CXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) 
+endif
+
+if ISSM_DAKOTA
+bin_PROGRAMS += issm_dakota
+issm_dakota_SOURCES = main/issm_dakota.cpp
+issm_dakota_CXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) 
+issm_dakota_LDADD= $(LDADD)
+endif
+
+#}}}
+#Automatic differentiation (must be done at the end) {{{
+if ADIC2 
+if !WINDOWS
+lib_LTLIBRARIES += libAD.la libISSMRose.la
+else
+noinst_LTLIBRARIES += libAD.la libISSMRose.la
+endif
+
+#ADIC2 library, for automatic differentiation 
+#libAD_a_SOURCES = ./mini1.ad.c
+libAD_la_SOURCES = 
+libAD_la_CFLAGS = -D_C_ -fPIC $(COPTFLAGS)
+
+#test rose preprocessing 
+%.r2cpp.cpp : %.cpp
+	testTranslator -rose:o $@ -rose:skipfinalCompileStep -DHAVE_CONFIG_H -D_C_ -I. -I../.. $(INCLUDES) $<
+libISSMRose_la_SOURCES = $(libISSMCore_a_SOURCES:.cpp=.r2cpp.cpp)
+libISSMRose_la_CXXFLAGS= -D_C_ $(CXXOPTFLAGS)
+
+#Automatic differentiation rules: 
+%.ad.c: %.c
+	adic2 -mforward  $< --nary
+
+#Executable
+bin_PROGRAMS +=  issmRose.exe
+issmRose_exe_LDADD = ./libISSMRose.a $(LDADD)
+issmRose_exe_SOURCES = main/issm.cpp
+issmRose_exe_CXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) 
+LDADD +=  $(ADIC2LIB) 
+endif #}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/AdjointBalancethickness2Analysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/AdjointBalancethickness2Analysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/AdjointBalancethickness2Analysis.cpp	(revision 21239)
@@ -0,0 +1,246 @@
+#include "./AdjointBalancethickness2Analysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processor*/
+void AdjointBalancethickness2Analysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void AdjointBalancethickness2Analysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void AdjointBalancethickness2Analysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+int  AdjointBalancethickness2Analysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void AdjointBalancethickness2Analysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void AdjointBalancethickness2Analysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           AdjointBalancethickness2Analysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* AdjointBalancethickness2Analysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* AdjointBalancethickness2Analysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* AdjointBalancethickness2Analysis::CreateKMatrix(Element* element){/*{{{*/
+
+	Balancethickness2Analysis* analysis = new Balancethickness2Analysis();
+	ElementMatrix* Ke = analysis->CreateKMatrix(element);
+	delete analysis;
+
+	return Ke;
+}/*}}}*/
+ElementVector* AdjointBalancethickness2Analysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	int         num_responses,i;
+	IssmDouble  vx,vy,vel,Jdet;
+	IssmDouble  surface,surfaceobs,weight;
+	int        *responses = NULL;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe     = element->NewElementVector(SSAApproximationEnum);
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	element->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+	Input* surface_input      = element->GetInput(SurfaceEnum);                          _assert_(surface_input);
+	Input* surfaceobs_input   = element->GetInput(InversionSurfaceObsEnum);              _assert_(surfaceobs_input);
+	Input* weights_input      = element->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* vx_input           = element->GetInput(VxEnum);                                 _assert_(vx_input);
+	Input* vy_input           = element->GetInput(VyEnum);                                 _assert_(vy_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		surface_input->GetInputValue(&surface, gauss);
+		surfaceobs_input->GetInputValue(&surfaceobs, gauss);
+
+		/*Loop over all requested responses*/
+		for(int resp=0;resp<num_responses;resp++){
+			weights_input->GetInputValue(&weight,gauss,responses[resp]);
+
+			switch(responses[resp]){
+				case SurfaceAbsMisfitEnum:
+					for(i=0;i<numnodes;i++) pe->values[i]+=(surfaceobs-surface)*weight*Jdet*gauss->weight*basis[i];
+					break;
+				default:
+					_error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(responses);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return pe;
+
+}/*}}}*/
+void           AdjointBalancethickness2Analysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void           AdjointBalancethickness2Analysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	/*The gradient of the cost function is calculated in 2 parts.
+	 *
+	 * dJ    \partial J   \partial lambda^T(KU-F)
+	 * --  = ---------- + ------------------------
+	 * dk    \partial k   \parial k                  
+	 *
+	 * */
+
+	/*If on water, grad = 0: */
+	if(!element->IsIceInElement()) return;
+
+	/*Get list of cost functions*/
+	int *responses = NULL;
+	int num_responses,resp;
+	element->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	element->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+
+	/*Deal with first part (partial derivative a J with respect to k)*/
+	for(resp=0;resp<num_responses;resp++) switch(responses[resp]){
+		case SurfaceAbsMisfitEnum:
+			/*Nothing, \partial J/\partial k = 0*/
+			break;
+		default: _error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
+	}
+
+	/*Deal with second term*/
+	switch(control_type){
+		case BalancethicknessOmegaEnum:           GradientJOmega(element,gradient,control_index); break;
+		case BalancethicknessThickeningRateEnum:  GradientJdHdt( element,gradient,control_index); break;
+		default: _error_("control type not supported yet: " << EnumToStringx(control_type));
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(responses);
+
+}/*}}}*/
+void           AdjointBalancethickness2Analysis::GradientJdHdt(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble lambda,Jdet; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* adjoint_input = element->GetInput(AdjointEnum);            _assert_(adjoint_input);
+
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+
+		adjoint_input->GetInputValue(&lambda,gauss);
+
+		/*Build gradient vector (actually -dJ/da): */
+		for(int i=0;i<numvertices;i++){
+			ge[i]+= -Jdet*gauss->weight*basis[i]*lambda;
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(ge);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+}/*}}}*/
+void           AdjointBalancethickness2Analysis::GradientJOmega(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble dlambda[2],ds[2],D0,omega,Jdet; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* adjoint_input = element->GetInput(AdjointEnum);            _assert_(adjoint_input);
+	Input* s_input       = element->GetInput(SurfaceEnum);            _assert_(s_input);
+	Input* D0_input      = element->GetInput(BalancethicknessD0Enum); _assert_(D0_input);
+	Input* omega_input   = element->GetInput(BalancethicknessOmegaEnum); _assert_(omega_input);
+
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+
+		D0_input->GetInputValue(&D0,gauss);
+		omega_input->GetInputValue(&omega,gauss);
+		adjoint_input->GetInputDerivativeValue(&dlambda[0],xyz_list,gauss);
+		s_input->GetInputDerivativeValue(&ds[0],xyz_list,gauss);
+
+		/*Build gradient vector (actually -dJ/da): */
+		for(int i=0;i<numvertices;i++){
+			ge[i]+= -Jdet*gauss->weight*basis[i]*exp(omega)*D0*(ds[0]*dlambda[0] + ds[1]*dlambda[1]);
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(ge);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+}/*}}}*/
+void           AdjointBalancethickness2Analysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	element->InputUpdateFromSolutionOneDof(solution,AdjointEnum);
+}/*}}}*/
+void           AdjointBalancethickness2Analysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/AdjointBalancethickness2Analysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/AdjointBalancethickness2Analysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/AdjointBalancethickness2Analysis.h	(revision 21239)
@@ -0,0 +1,35 @@
+/*! \file AdjointBalancethickness2Analysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _AdjointBalancethickness2Analysis_
+#define _AdjointBalancethickness2Analysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class AdjointBalancethickness2Analysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           GradientJdHdt(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJOmega(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/AdjointBalancethicknessAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/AdjointBalancethicknessAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/AdjointBalancethicknessAnalysis.cpp	(revision 21239)
@@ -0,0 +1,339 @@
+#include "./AdjointBalancethicknessAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processor*/
+void AdjointBalancethicknessAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void AdjointBalancethicknessAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void AdjointBalancethicknessAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+int  AdjointBalancethicknessAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void AdjointBalancethicknessAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void AdjointBalancethicknessAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           AdjointBalancethicknessAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* AdjointBalancethicknessAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* AdjointBalancethicknessAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* AdjointBalancethicknessAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	BalancethicknessAnalysis* analysis = new BalancethicknessAnalysis();
+	ElementMatrix* Ke = analysis->CreateKMatrix(element);
+	delete analysis;
+
+	/*Transpose and return Ke*/
+	Ke->Transpose();
+	return Ke;
+}/*}}}*/
+ElementVector* AdjointBalancethicknessAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries */
+	int         num_responses,i;
+	IssmDouble  dH[2];
+	IssmDouble  vx,vy,vel,Jdet;
+	IssmDouble  thickness,thicknessobs,weight;
+	int        *responses = NULL;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe     = basalelement->NewElementVector(SSAApproximationEnum);
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	basalelement->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+	Input* thickness_input    = basalelement->GetInput(ThicknessEnum);                          _assert_(thickness_input);
+	Input* thicknessobs_input = basalelement->GetInput(InversionThicknessObsEnum);              _assert_(thicknessobs_input);
+	Input* weights_input      = basalelement->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* vx_input           = basalelement->GetInput(VxEnum);                                 _assert_(vx_input);
+	Input* vy_input           = basalelement->GetInput(VyEnum);                                 _assert_(vy_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+		basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		thickness_input->GetInputValue(&thickness, gauss);
+		thickness_input->GetInputDerivativeValue(&dH[0],xyz_list,gauss);
+		thicknessobs_input->GetInputValue(&thicknessobs, gauss);
+
+		/*Loop over all requested responses*/
+		for(int resp=0;resp<num_responses;resp++){
+			weights_input->GetInputValue(&weight,gauss,responses[resp]);
+
+			switch(responses[resp]){
+				case ThicknessAbsMisfitEnum:
+					for(i=0;i<numnodes;i++) pe->values[i]+=(thicknessobs-thickness)*weight*Jdet*gauss->weight*basis[i];
+					break;
+				case ThicknessAbsGradientEnum:
+					for(i=0;i<numnodes;i++) pe->values[i]+= - weight*dH[0]*dbasis[0*numnodes+i]*Jdet*gauss->weight;
+					for(i=0;i<numnodes;i++) pe->values[i]+= - weight*dH[1]*dbasis[1*numnodes+i]*Jdet*gauss->weight;
+					break;
+				case ThicknessAlongGradientEnum:
+					vx_input->GetInputValue(&vx,gauss);
+					vy_input->GetInputValue(&vy,gauss);
+					vel = sqrt(vx*vx+vy*vy);
+					vx  = vx/(vel+1.e-9);
+					vy  = vy/(vel+1.e-9);
+					for(i=0;i<numnodes;i++) pe->values[i]+= - weight*(dH[0]*vx+dH[1]*vy)*(dbasis[0*numnodes+i]*vx+dbasis[1*numnodes+i]*vy)*Jdet*gauss->weight;
+					break;
+				case ThicknessAcrossGradientEnum:
+					vx_input->GetInputValue(&vx,gauss);
+					vy_input->GetInputValue(&vy,gauss);
+					vel = sqrt(vx*vx+vy*vy);
+					vx  = vx/(vel+1.e-9);
+					vy  = vy/(vel+1.e-9);
+					for(i=0;i<numnodes;i++) pe->values[i]+= - weight*(dH[0]*(-vy)+dH[1]*vx)*(dbasis[0*numnodes+i]*(-vy)+dbasis[1*numnodes+i]*vx)*Jdet*gauss->weight;
+					break;
+				case ThicknessPositiveEnum:
+					if(thickness<0){
+						for(i=0;i<numnodes;i++) pe->values[i]+= - weight*2*thickness*Jdet*gauss->weight*basis[i];
+					}
+					break;
+				default:
+					_error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(responses);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           AdjointBalancethicknessAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void           AdjointBalancethicknessAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	/*The gradient of the cost function is calculated in 2 parts.
+	 *
+	 * dJ    \partial J   \partial lambda^T(KU-F)
+	 * --  = ---------- + ------------------------
+	 * dk    \partial k   \parial k                  
+	 *
+	 * */
+
+	/*If on water, grad = 0: */
+	if(!element->IsIceInElement()) return;
+
+	/*Get list of cost functions*/
+	int *responses = NULL;
+	int num_responses,resp;
+	element->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	element->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+
+	/*Check that control_type is supported*/
+	if(control_type!=VxEnum && 
+		control_type!=VyEnum && 
+		control_type!=BalancethicknessThickeningRateEnum){
+		_error_("Control "<<EnumToStringx(control_type)<<" not supported");
+	}
+
+	/*Deal with first part (partial derivative a J with respect to k)*/
+	for(resp=0;resp<num_responses;resp++) switch(responses[resp]){
+		case ThicknessAbsMisfitEnum:      /*Nothing, \partial J/\partial k = 0*/ break;
+		case ThicknessAbsGradientEnum:    /*Nothing, \partial J/\partial k = 0*/ break;
+		case ThicknessAlongGradientEnum:  /*Nothing, \partial J/\partial k = 0*/ break;
+		case ThicknessAcrossGradientEnum: /*Nothing, \partial J/\partial k = 0*/ break;
+		case ThicknessPositiveEnum:       /*Nothing, \partial J/\partial k = 0*/ break;
+		default: _error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
+	}
+
+	/*Deal with second term*/
+	switch(control_type){
+		case BalancethicknessThickeningRateEnum: GradientJDhDt(element,gradient,control_index); break;
+		case VxEnum:                             GradientJVx(  element,gradient,control_index); break;
+		case VyEnum:                             GradientJVy(  element,gradient,control_index); break;
+		default: _error_("control type not supported yet: " << EnumToStringx(control_type));
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(responses);
+
+}/*}}}*/
+void           AdjointBalancethicknessAnalysis::GradientJDhDt(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	IssmDouble* lambda        = xNew<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	element->GetInputListOnVertices(lambda,AdjointEnum);
+	for(int i=0;i<numvertices;i++){
+		ge[i]=-lambda[i];
+		_assert_(!xIsNan<IssmDouble>(ge[i]));
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,INS_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(ge);
+	xDelete<IssmDouble>(lambda);
+	xDelete<int>(vertexpidlist);
+}/*}}}*/
+void           AdjointBalancethicknessAnalysis::GradientJVx(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble thickness,Jdet,Dlambda[3],dp[3];
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* thickness_input = element->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* adjoint_input   = element->GetInput(AdjointEnum);   _assert_(adjoint_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		adjoint_input->GetInputDerivativeValue(&Dlambda[0],xyz_list,gauss);
+		thickness_input->GetInputValue(&thickness, gauss);
+		thickness_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dD): */
+		for(int i=0;i<numvertices;i++){
+			ge[i]+=thickness*Dlambda[0]*Jdet*gauss->weight*basis[i];
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+}/*}}}*/
+void           AdjointBalancethicknessAnalysis::GradientJVy(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble thickness,Jdet,Dlambda[3],dp[3];
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* thickness_input = element->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* adjoint_input   = element->GetInput(AdjointEnum);   _assert_(adjoint_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		adjoint_input->GetInputDerivativeValue(&Dlambda[0],xyz_list,gauss);
+		thickness_input->GetInputValue(&thickness, gauss);
+		thickness_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dvy): */
+		for(int i=0;i<numvertices;i++){
+			ge[i]+=thickness*Dlambda[1]*Jdet*gauss->weight*basis[i];
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+}/*}}}*/
+void           AdjointBalancethicknessAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->InputUpdateFromSolutionOneDof(solution,AdjointEnum);
+			break;
+		case Domain3DEnum:
+			element->InputUpdateFromSolutionOneDofCollapsed(solution,AdjointEnum);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}/*}}}*/
+void           AdjointBalancethicknessAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/AdjointBalancethicknessAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/AdjointBalancethicknessAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/AdjointBalancethicknessAnalysis.h	(revision 21239)
@@ -0,0 +1,36 @@
+/*! \file AdjointBalancethicknessAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _AdjointBalancethicknessAnalysis_
+#define _AdjointBalancethicknessAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class AdjointBalancethicknessAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           GradientJDhDt(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJVx(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJVy(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/AdjointHorizAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 21239)
@@ -0,0 +1,2437 @@
+#include "./AdjointHorizAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void AdjointHorizAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void AdjointHorizAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void AdjointHorizAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+int  AdjointHorizAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void AdjointHorizAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void AdjointHorizAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void AdjointHorizAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* AdjointHorizAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* AdjointHorizAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* AdjointHorizAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	switch(approximation){
+		case SSAApproximationEnum: 
+			return CreateKMatrixSSA(element);
+		case L1L2ApproximationEnum: 
+			return CreateKMatrixL1L2(element);
+		case HOApproximationEnum: 
+			return CreateKMatrixHO(element);
+		case FSApproximationEnum: 
+			return CreateKMatrixFS(element);
+		case NoneApproximationEnum:
+			return NULL;
+		default:
+			_error_("Approximation "<<EnumToStringx(approximation)<<" not supported");
+	}
+}/*}}}*/
+ElementMatrix* AdjointHorizAnalysis::CreateKMatrixFS(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	bool        incomplete_adjoint;
+	int         dim,epssize;
+	IssmDouble  Jdet,mu_prime;
+	IssmDouble  eps1dotdphii,eps1dotdphij,eps2dotdphii,eps2dotdphij,eps3dotdphii,eps3dotdphij;
+	IssmDouble  eps1[3],eps2[3],eps3[3],epsilon[5];/* epsilon=[exx,eyy,exy,exz,eyz];*/
+	IssmDouble *xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+	if(dim==2) epssize = 3;
+	else       epssize = 6;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numdof    = vnumnodes*dim + pnumnodes;
+
+	/*Initialize Jacobian with regular FS (first part of the Gateau derivative)*/
+	element->FindParam(&incomplete_adjoint,InversionIncompleteAdjointEnum);
+	StressbalanceAnalysis* analysis = new StressbalanceAnalysis();
+	ElementMatrix* Ke=analysis->CreateKMatrix(element);
+	delete analysis;
+	if(incomplete_adjoint) return Ke;
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input = element->GetInput(VxEnum);_assert_(vx_input);
+	Input* vy_input = element->GetInput(VyEnum);_assert_(vy_input);
+	Input* vz_input = NULL;
+	if(dim==3){
+		vz_input = element->GetInput(VzEnum);
+	}
+	else{
+		_error_("Not implemented yet");
+	}
+
+	/*Allocate dbasis*/
+	IssmDouble* dbasis = xNew<IssmDouble>(dim*vnumnodes);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(5);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		element->StrainRateHO(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+		element->material->ViscosityFSDerivativeEpsSquare(&mu_prime,&epsilon[0]);
+		eps1[0]=epsilon[0];   eps2[0]=epsilon[2];   eps3[0]=epsilon[3];
+		eps1[1]=epsilon[2];   eps2[1]=epsilon[1];   eps3[1]=epsilon[4];
+		eps1[2]=epsilon[3];   eps2[2]=epsilon[4];   eps3[2]= -epsilon[0] -epsilon[1];
+
+		for(int i=0;i<vnumnodes;i++){
+			for(int j=0;j<vnumnodes;j++){
+				eps1dotdphii=eps1[0]*dbasis[0*vnumnodes+i]+eps1[1]*dbasis[1*vnumnodes+i]+eps1[2]*dbasis[2*vnumnodes+i];
+				eps1dotdphij=eps1[0]*dbasis[0*vnumnodes+j]+eps1[1]*dbasis[1*vnumnodes+j]+eps1[2]*dbasis[2*vnumnodes+j];
+				eps2dotdphii=eps2[0]*dbasis[0*vnumnodes+i]+eps2[1]*dbasis[1*vnumnodes+i]+eps2[2]*dbasis[2*vnumnodes+i];
+				eps2dotdphij=eps2[0]*dbasis[0*vnumnodes+j]+eps2[1]*dbasis[1*vnumnodes+j]+eps2[2]*dbasis[2*vnumnodes+j];
+				eps3dotdphii=eps3[0]*dbasis[0*vnumnodes+i]+eps3[1]*dbasis[1*vnumnodes+i]+eps3[2]*dbasis[2*vnumnodes+i];
+				eps3dotdphij=eps3[0]*dbasis[0*vnumnodes+j]+eps3[1]*dbasis[1*vnumnodes+j]+eps3[2]*dbasis[2*vnumnodes+j];
+
+				Ke->values[numdof*(4*i+0)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps1dotdphii;
+				Ke->values[numdof*(4*i+0)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps1dotdphii;
+				Ke->values[numdof*(4*i+0)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps1dotdphii;
+
+				Ke->values[numdof*(4*i+1)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps2dotdphii;
+				Ke->values[numdof*(4*i+1)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps2dotdphii;
+				Ke->values[numdof*(4*i+1)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps2dotdphii;
+
+				Ke->values[numdof*(4*i+2)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps3dotdphii;
+				Ke->values[numdof*(4*i+2)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps3dotdphii;
+				Ke->values[numdof*(4*i+2)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps3dotdphii;
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,XYZEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(xyz_list);
+	return Ke;
+}/*}}}*/
+ElementMatrix* AdjointHorizAnalysis::CreateKMatrixHO(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	bool        incomplete_adjoint;
+	IssmDouble  Jdet,mu_prime;
+	IssmDouble  eps1dotdphii,eps1dotdphij,eps2dotdphii,eps2dotdphij;
+	IssmDouble  eps1[3],eps2[3],epsilon[5];/* epsilon=[exx,eyy,exy,exz,eyz];*/
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Jacobian with regular HO (first part of the Gateau derivative)*/
+	element->FindParam(&incomplete_adjoint,InversionIncompleteAdjointEnum);
+	StressbalanceAnalysis* analysis = new StressbalanceAnalysis();
+	ElementMatrix* Ke=analysis->CreateKMatrix(element);
+	delete analysis;
+	if(incomplete_adjoint) return Ke;
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input = element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input = element->GetInput(VyEnum); _assert_(vy_input);
+
+	/*Allocate dbasis*/
+	IssmDouble* dbasis = xNew<IssmDouble>(3*numnodes);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(5);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		element->StrainRateHO(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+		element->material->ViscosityHODerivativeEpsSquare(&mu_prime,&epsilon[0]);
+		eps1[0]=2.*epsilon[0]+epsilon[1];   eps2[0]=epsilon[2];
+		eps1[1]=epsilon[2];                 eps2[1]=epsilon[0]+2.*epsilon[1];
+		eps1[2]=epsilon[3];                 eps2[2]=epsilon[4];
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				eps1dotdphii=eps1[0]*dbasis[0*numnodes+i]+eps1[1]*dbasis[1*numnodes+i]+eps1[2]*dbasis[2*numnodes+i];
+				eps1dotdphij=eps1[0]*dbasis[0*numnodes+j]+eps1[1]*dbasis[1*numnodes+j]+eps1[2]*dbasis[2*numnodes+j];
+				eps2dotdphii=eps2[0]*dbasis[0*numnodes+i]+eps2[1]*dbasis[1*numnodes+i]+eps2[2]*dbasis[2*numnodes+i];
+				eps2dotdphij=eps2[0]*dbasis[0*numnodes+j]+eps2[1]*dbasis[1*numnodes+j]+eps2[2]*dbasis[2*numnodes+j];
+
+				Ke->values[2*numnodes*(2*i+0)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps1dotdphii;
+				Ke->values[2*numnodes*(2*i+0)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps1dotdphii;
+				Ke->values[2*numnodes*(2*i+1)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps2dotdphii;
+				Ke->values[2*numnodes*(2*i+1)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps2dotdphii;
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(xyz_list);
+	return Ke;
+}/*}}}*/
+ElementMatrix* AdjointHorizAnalysis::CreateKMatrixL1L2(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	bool incomplete_adjoint;
+
+	/*Initialize Jacobian with regular L1L2 (first part of the Gateau derivative)*/
+	StressbalanceAnalysis* analysis = new StressbalanceAnalysis();
+	ElementMatrix* Ke=analysis->CreateKMatrix(element);
+	delete analysis;
+
+	/*return*/
+	element->FindParam(&incomplete_adjoint,InversionIncompleteAdjointEnum);
+	if(!incomplete_adjoint){
+		_error_("Exact adjoint not supported yet for L1L2 model");
+	}
+	return Ke;
+}/*}}}*/
+ElementMatrix* AdjointHorizAnalysis::CreateKMatrixSSA(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries */
+	bool        incomplete_adjoint;
+	IssmDouble  Jdet,thickness,mu_prime;
+	IssmDouble  eps1dotdphii,eps1dotdphij,eps2dotdphii,eps2dotdphij;
+	IssmDouble  eps1[2],eps2[2],epsilon[3];
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Jacobian with regular SSA (first part of the Gateau derivative)*/
+	basalelement->FindParam(&incomplete_adjoint,InversionIncompleteAdjointEnum);
+	StressbalanceAnalysis* analysis = new StressbalanceAnalysis();
+	ElementMatrix* Ke=analysis->CreateKMatrix(element);
+	delete analysis;
+	if(incomplete_adjoint){
+		if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+		return Ke;
+	}
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input        = basalelement->GetInput(VxEnum);       _assert_(vx_input);
+	Input* vy_input        = basalelement->GetInput(VyEnum);       _assert_(vy_input);
+	Input* thickness_input = basalelement->GetInput(ThicknessEnum); _assert_(thickness_input);
+
+	/*Allocate dbasis*/
+	IssmDouble* dbasis = xNew<IssmDouble>(2*numnodes);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		thickness_input->GetInputValue(&thickness, gauss);
+		basalelement->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+		basalelement->material->ViscositySSADerivativeEpsSquare(&mu_prime,&epsilon[0]);
+		eps1[0]=2.*epsilon[0]+epsilon[1]; eps2[0]=epsilon[2];
+		eps1[1]=epsilon[2];               eps2[1]=epsilon[0]+2*epsilon[1];
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				eps1dotdphii=eps1[0]*dbasis[0*numnodes+i]+eps1[1]*dbasis[1*numnodes+i];
+				eps1dotdphij=eps1[0]*dbasis[0*numnodes+j]+eps1[1]*dbasis[1*numnodes+j];
+				eps2dotdphii=eps2[0]*dbasis[0*numnodes+i]+eps2[1]*dbasis[1*numnodes+i];
+				eps2dotdphij=eps2[0]*dbasis[0*numnodes+j]+eps2[1]*dbasis[1*numnodes+j];
+
+				Ke->values[2*numnodes*(2*i+0)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*thickness*eps1dotdphij*eps1dotdphii;
+				Ke->values[2*numnodes*(2*i+0)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*thickness*eps2dotdphij*eps1dotdphii;
+				Ke->values[2*numnodes*(2*i+1)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*thickness*eps1dotdphij*eps2dotdphii;
+				Ke->values[2*numnodes*(2*i+1)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*thickness*eps2dotdphij*eps2dotdphii;
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	basalelement->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(xyz_list);
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+ElementVector* AdjointHorizAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	switch(approximation){
+		case SSAApproximationEnum: 
+			return CreatePVectorSSA(element);
+		case L1L2ApproximationEnum: 
+			return CreatePVectorL1L2(element);
+		case HOApproximationEnum: 
+			return CreatePVectorHO(element);
+		case FSApproximationEnum: 
+			return CreatePVectorFS(element);
+		case NoneApproximationEnum:
+			return NULL;
+		default:
+			_error_("Approximation "<<EnumToStringx(approximation)<<" not supported");
+	}
+}/*}}}*/
+ElementVector* AdjointHorizAnalysis::CreatePVectorFS(Element* element){/*{{{*/
+
+	/*Nothing to be done if not on surface*/
+	if(!element->IsOnSurface()) return NULL;
+
+	/*Intermediaries */
+	int        num_responses,i,domaintype;
+	IssmDouble Jdet,obs_velocity_mag,velocity_mag;
+	IssmDouble vx,vy,vxobs,vyobs,dux,duy,weight;
+	IssmDouble scalex,scaley,scale,S;
+	int        *responses    = NULL;
+	IssmDouble *xyz_list_top = NULL;
+
+	/* Get domaintype*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(domaintype==Domain2DverticalEnum) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe     = element->NewElementVector(FSApproximationEnum);
+	IssmDouble*    vbasis = xNew<IssmDouble>(vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesTop(&xyz_list_top);
+	element->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	element->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+	Input* weights_input = element->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* vx_input      = element->GetInput(VxEnum);                                 _assert_(vx_input);
+	Input* vxobs_input   = element->GetInput(InversionVxObsEnum);                     _assert_(vxobs_input);
+	Input* vy_input    = NULL;
+	Input* vyobs_input = NULL;
+	if(domaintype!=Domain2DverticalEnum){
+		vy_input      = element->GetInput(VyEnum);                                 _assert_(vy_input);
+		vyobs_input   = element->GetInput(InversionVyObsEnum);                     _assert_(vyobs_input);
+	}
+	IssmDouble epsvel  = 2.220446049250313e-16;
+	IssmDouble meanvel = 3.170979198376458e-05; /*1000 m/yr*/
+
+	/*Get Surface if required by one response*/
+	for(int resp=0;resp<num_responses;resp++){
+		if(responses[resp]==SurfaceAverageVelMisfitEnum){
+			element->GetInputValue(&S,SurfaceAreaEnum); break;
+		}
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussTop(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminantTop(&Jdet,xyz_list_top,gauss);
+		element->NodalFunctionsVelocity(vbasis,gauss);
+
+		vx_input->GetInputValue(&vx,gauss);
+		vxobs_input->GetInputValue(&vxobs,gauss);
+		if(domaintype!=Domain2DverticalEnum) {
+			vy_input->GetInputValue(&vy,gauss);
+			vyobs_input->GetInputValue(&vyobs,gauss);
+		}
+
+		/*Loop over all requested responses*/
+		for(int resp=0;resp<num_responses;resp++){
+			weights_input->GetInputValue(&weight,gauss,responses[resp]);
+
+			switch(responses[resp]){
+				case SurfaceAbsVelMisfitEnum:
+					/*
+					 *      1  [           2              2 ]
+					 * J = --- | (u - u   )  +  (v - v   )  |
+					 *      2  [       obs            obs   ]
+					 *
+					 *        dJ
+					 * DU = - -- = (u   - u )
+					 *        du     obs
+					 */
+					for(i=0;i<vnumnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							dux=vxobs-vx;
+							pe->values[i*3+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+							duy=vyobs-vy;
+							pe->values[i*3+1]+=duy*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+						else{
+							dux=vxobs-vx;
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+					}
+					break;
+				case SurfaceRelVelMisfitEnum:
+					/*
+					 *      1  [     \bar{v}^2             2   \bar{v}^2              2 ]
+					 * J = --- | -------------  (u - u   ) + -------------  (v - v   )  |
+					 *      2  [  (u   + eps)^2       obs    (v   + eps)^2       obs    ]
+					 *              obs                        obs                      
+					 *
+					 *        dJ     \bar{v}^2
+					 * DU = - -- = ------------- (u   - u )
+					 *        du   (u   + eps)^2    obs
+					 *               obs
+					 */
+					for(i=0;i<vnumnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							scalex=pow(meanvel/(vxobs+epsvel),2); if(vxobs==0)scalex=0;
+							scaley=pow(meanvel/(vyobs+epsvel),2); if(vyobs==0)scaley=0;
+							dux=scalex*(vxobs-vx);
+							duy=scaley*(vyobs-vy);
+							pe->values[i*3+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+							pe->values[i*3+1]+=duy*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+						else{
+							scalex=pow(meanvel/(vxobs+epsvel),2); if(vxobs==0)scalex=0;
+							dux=scalex*(vxobs-vx);
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+					}
+					break;
+				case SurfaceLogVelMisfitEnum:
+					/*
+					 *                 [        vel + eps     ] 2
+					 * J = 4 \bar{v}^2 | log ( -----------  ) |  
+					 *                 [       vel   + eps    ]
+					 *                            obs
+					 *
+					 *        dJ                 2 * log(...)
+					 * DU = - -- = - 4 \bar{v}^2 -------------  u
+					 *        du                 vel^2 + eps
+					 *            
+					 */
+					for(i=0;i<vnumnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							velocity_mag    =sqrt(vx*vx+vy*vy)+epsvel;
+							obs_velocity_mag=sqrt(vxobs*vxobs+vyobs*vyobs)+epsvel;
+							scale=-8.*meanvel*meanvel/(velocity_mag*velocity_mag)*log(velocity_mag/obs_velocity_mag);
+							dux=scale*vx;
+							duy=scale*vy;
+							pe->values[i*3+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+							pe->values[i*3+1]+=duy*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+						else{
+							velocity_mag    =fabs(vx)+epsvel;
+							obs_velocity_mag=fabs(vxobs)+epsvel;
+							scale=-8.*meanvel*meanvel/(velocity_mag*velocity_mag)*log(velocity_mag/obs_velocity_mag);
+							dux=scale*vx;
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+					}
+					break;
+				case SurfaceAverageVelMisfitEnum:
+					/*
+					 *      1                    2              2
+					 * J = ---  sqrt(  (u - u   )  +  (v - v   )  )
+					 *      S                obs            obs
+					 *
+					 *        dJ      1       1 
+					 * DU = - -- = - --- ----------- * 2 (u - u   )
+					 *        du      S  2 sqrt(...)           obs
+					 */
+					for(i=0;i<vnumnodes;i++){
+						if (domaintype!=Domain2DverticalEnum){
+							scale=1./(S*2*sqrt(pow(vx-vxobs,2)+pow(vy-vyobs,2))+epsvel);
+							dux=scale*(vxobs-vx);
+							duy=scale*(vyobs-vy);
+							pe->values[i*3+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+							pe->values[i*3+1]+=duy*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+						else{
+							scale=1./(S*2*fabs(vx-vxobs)+epsvel);
+							dux=scale*(vxobs-vx);
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+					}
+					break;
+				case SurfaceLogVxVyMisfitEnum:
+					/*
+					 *      1            [        |u| + eps     2          |v| + eps     2  ]
+					 * J = --- \bar{v}^2 | log ( -----------  )   +  log ( -----------  )   |  
+					 *      2            [       |u    |+ eps              |v    |+ eps     ]
+					 *                              obs                       obs
+					 *        dJ                              1      u                             1
+					 * DU = - -- = - \bar{v}^2 log(u...) --------- ----  ~ - \bar{v}^2 log(u...) ------
+					 *        du                         |u| + eps  |u|                           u + eps
+					 */
+					for(i=0;i<vnumnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							dux = - meanvel*meanvel * log((fabs(vx)+epsvel)/(fabs(vxobs)+epsvel)) / (vx+epsvel);
+							duy = - meanvel*meanvel * log((fabs(vy)+epsvel)/(fabs(vyobs)+epsvel)) / (vy+epsvel);
+							pe->values[i*3+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+							pe->values[i*3+1]+=duy*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+						else{
+							dux = - meanvel*meanvel * log((fabs(vx)+epsvel)/(fabs(vxobs)+epsvel)) / (vx+epsvel);
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+					}
+					break;
+				case DragCoefficientAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAlongGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAcrossGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case RheologyBbarAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				default:
+					_error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
+			}
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,cs_list);
+
+	/*Clean up and return*/
+	xDelete<int>(cs_list);
+	xDelete<int>(responses);
+	xDelete<IssmDouble>(xyz_list_top);
+	xDelete<IssmDouble>(vbasis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+ElementVector* AdjointHorizAnalysis::CreatePVectorL1L2(Element* element){/*{{{*/
+
+	/*Same as SSA*/
+	return this->CreatePVectorSSA(element);
+}/*}}}*/
+ElementVector* AdjointHorizAnalysis::CreatePVectorHO(Element* element){/*{{{*/
+
+	/*Nothing to be done if not on surface*/
+	if(!element->IsOnSurface()) return NULL;
+
+	/*Intermediaries */
+	int        num_responses,i,domaintype;
+	IssmDouble Jdet,obs_velocity_mag,velocity_mag;
+	IssmDouble vx,vy,vxobs,vyobs,dux,duy,weight;
+	IssmDouble scalex,scaley,scale,S;
+	int        *responses    = NULL;
+	IssmDouble *xyz_list_top = NULL;
+
+	/* Get domaintype*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe    = element->NewElementVector(HOApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesTop(&xyz_list_top);
+	element->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	element->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+	Input* weights_input = element->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* vx_input      = element->GetInput(VxEnum);                                 _assert_(vx_input);
+	Input* vxobs_input   = element->GetInput(InversionVxObsEnum);                     _assert_(vxobs_input);
+	Input* vy_input=NULL;
+	Input* vyobs_input=NULL;
+	if(domaintype!=Domain2DverticalEnum){
+		vy_input      = element->GetInput(VyEnum);                                 _assert_(vy_input);
+		vyobs_input   = element->GetInput(InversionVyObsEnum);                     _assert_(vyobs_input);
+	}
+	IssmDouble epsvel  = 2.220446049250313e-16;
+	IssmDouble meanvel = 3.170979198376458e-05; /*1000 m/yr*/
+
+	/*Get Surface if required by one response*/
+	for(int resp=0;resp<num_responses;resp++){
+		if(responses[resp]==SurfaceAverageVelMisfitEnum){
+			element->GetInputValue(&S,SurfaceAreaEnum); break;
+		}
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussTop(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminantTop(&Jdet,xyz_list_top,gauss);
+		element->NodalFunctions(basis, gauss);
+
+		vx_input->GetInputValue(&vx,gauss);
+		vxobs_input->GetInputValue(&vxobs,gauss);
+		if(domaintype!=Domain2DverticalEnum){
+			vy_input->GetInputValue(&vy,gauss);
+			vyobs_input->GetInputValue(&vyobs,gauss);
+		}
+		/*Loop over all requested responses*/
+		for(int resp=0;resp<num_responses;resp++){
+			weights_input->GetInputValue(&weight,gauss,responses[resp]);
+
+			switch(responses[resp]){
+				case SurfaceAbsVelMisfitEnum:
+					/*
+					 *      1  [           2              2 ]
+					 * J = --- | (u - u   )  +  (v - v   )  |
+					 *      2  [       obs            obs   ]
+					 *
+					 *        dJ
+					 * DU = - -- = (u   - u )
+					 *        du     obs
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							dux=vxobs-vx;
+							duy=vyobs-vy;
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else{ 
+							dux=vxobs-vx;
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case SurfaceRelVelMisfitEnum:
+					/*
+					 *      1  [     \bar{v}^2             2   \bar{v}^2              2 ]
+					 * J = --- | -------------  (u - u   ) + -------------  (v - v   )  |
+					 *      2  [  (u   + eps)^2       obs    (v   + eps)^2       obs    ]
+					 *              obs                        obs                      
+					 *
+					 *        dJ     \bar{v}^2
+					 * DU = - -- = ------------- (u   - u )
+					 *        du   (u   + eps)^2    obs
+					 *               obs
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							scalex=pow(meanvel/(vxobs+epsvel),2); if(vxobs==0)scalex=0;
+							scaley=pow(meanvel/(vyobs+epsvel),2); if(vyobs==0)scaley=0;
+							dux=scalex*(vxobs-vx);
+							duy=scaley*(vyobs-vy);
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else{
+							scalex=pow(meanvel/(vxobs+epsvel),2); if(vxobs==0)scalex=0;
+							dux=scalex*(vxobs-vx);
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case SurfaceLogVelMisfitEnum:
+					/*
+					 *                 [        vel + eps     ] 2
+					 * J = 4 \bar{v}^2 | log ( -----------  ) |  
+					 *                 [       vel   + eps    ]
+					 *                            obs
+					 *
+					 *        dJ                 2 * log(...)
+					 * DU = - -- = - 4 \bar{v}^2 -------------  u
+					 *        du                 vel^2 + eps
+					 *            
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							velocity_mag    =sqrt(pow(vx,   2)+pow(vy,   2))+epsvel;
+							obs_velocity_mag=sqrt(pow(vxobs,2)+pow(vyobs,2))+epsvel;
+							scale=-8*pow(meanvel,2)/pow(velocity_mag,2)*log(velocity_mag/obs_velocity_mag);
+							dux=scale*vx;
+							duy=scale*vy;
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else{
+							velocity_mag    =fabs(vx)+epsvel;
+							obs_velocity_mag=fabs(vxobs)+epsvel;
+							scale=-8*pow(meanvel,2)/pow(velocity_mag,2)*log(velocity_mag/obs_velocity_mag);
+							dux=scale*vx;
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case SurfaceAverageVelMisfitEnum:
+					/*
+					 *      1                    2              2
+					 * J = ---  sqrt(  (u - u   )  +  (v - v   )  )
+					 *      S                obs            obs
+					 *
+					 *        dJ      1       1 
+					 * DU = - -- = - --- ----------- * 2 (u - u   )
+					 *        du      S  2 sqrt(...)           obs
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							scale=1./(S*2*sqrt(pow(vx-vxobs,2)+pow(vy-vyobs,2))+epsvel);
+							dux=scale*(vxobs-vx);
+							duy=scale*(vyobs-vy);
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else{
+							scale=1./(S*2*fabs(vx-vxobs)+epsvel);
+							dux=scale*(vxobs-vx);
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case SurfaceLogVxVyMisfitEnum:
+					/*
+					 *      1            [        |u| + eps     2          |v| + eps     2  ]
+					 * J = --- \bar{v}^2 | log ( -----------  )   +  log ( -----------  )   |  
+					 *      2            [       |u    |+ eps              |v    |+ eps     ]
+					 *                              obs                       obs
+					 *        dJ                              1      u                             1
+					 * DU = - -- = - \bar{v}^2 log(u...) --------- ----  ~ - \bar{v}^2 log(u...) ------
+					 *        du                         |u| + eps  |u|                           u + eps
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							dux = - meanvel*meanvel * log((fabs(vx)+epsvel)/(fabs(vxobs)+epsvel)) / (vx+epsvel);
+							duy = - meanvel*meanvel * log((fabs(vy)+epsvel)/(fabs(vyobs)+epsvel)) / (vy+epsvel);
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else{
+							dux = - meanvel*meanvel * log((fabs(vx)+epsvel)/(fabs(vxobs)+epsvel)) / (vx+epsvel);
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case DragCoefficientAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAlongGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAcrossGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case RheologyBbarAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case RheologyBAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				default:
+					_error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
+			}
+		}
+	}
+
+	/*Transform coordinate system*/
+	if(domaintype!=Domain2DverticalEnum) element->TransformLoadVectorCoord(pe,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<int>(responses);
+	xDelete<IssmDouble>(xyz_list_top);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+
+}/*}}}*/
+ElementVector* AdjointHorizAnalysis::CreatePVectorSSA(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries */
+	int         num_responses,i;
+	IssmDouble  Jdet,obs_velocity_mag,velocity_mag;
+	IssmDouble  vx,vy,vxobs,vyobs,dux,duy,weight;
+	IssmDouble scalex,scaley,scale,S;
+	int        *responses = NULL;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe    = basalelement->NewElementVector(SSAApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	basalelement->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+	Input* weights_input = basalelement->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* vx_input      = basalelement->GetInput(VxEnum);                                 _assert_(vx_input);
+	Input* vxobs_input   = basalelement->GetInput(InversionVxObsEnum);                     _assert_(vxobs_input);
+	Input* vy_input=NULL;
+	Input* vyobs_input=NULL;
+	if(domaintype!=Domain2DverticalEnum){
+		vy_input      = basalelement->GetInput(VyEnum);                                 _assert_(vy_input);
+		vyobs_input   = basalelement->GetInput(InversionVyObsEnum);                     _assert_(vyobs_input);
+	}
+	IssmDouble epsvel  = 2.220446049250313e-16;
+	IssmDouble meanvel = 3.170979198376458e-05; /*1000 m/yr*/
+
+	/*Get Surface if required by one response*/
+	for(int resp=0;resp<num_responses;resp++){
+		if(responses[resp]==SurfaceAverageVelMisfitEnum){
+			basalelement->GetInputValue(&S,SurfaceAreaEnum); break;
+		}
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis, gauss);
+
+		vx_input->GetInputValue(&vx,gauss);
+		vxobs_input->GetInputValue(&vxobs,gauss);
+		if(domaintype!=Domain2DverticalEnum){
+			vy_input->GetInputValue(&vy,gauss);
+			vyobs_input->GetInputValue(&vyobs,gauss);
+		}
+		/*Loop over all requested responses*/
+		for(int resp=0;resp<num_responses;resp++){
+			weights_input->GetInputValue(&weight,gauss,responses[resp]);
+
+			switch(responses[resp]){
+				case SurfaceAbsVelMisfitEnum:
+					/*
+					 *      1  [           2              2 ]
+					 * J = --- | (u - u   )  +  (v - v   )  |
+					 *      2  [       obs            obs   ]
+					 *
+					 *        dJ
+					 * DU = - -- = (u   - u )
+					 *        du     obs
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							dux=vxobs-vx;
+							duy=vyobs-vy;
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else {
+							dux=vxobs-vx;
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case SurfaceRelVelMisfitEnum:
+					/*
+					 *      1  [     \bar{v}^2             2   \bar{v}^2              2 ]
+					 * J = --- | -------------  (u - u   ) + -------------  (v - v   )  |
+					 *      2  [  (u   + eps)^2       obs    (v   + eps)^2       obs    ]
+					 *              obs                        obs                      
+					 *
+					 *        dJ     \bar{v}^2
+					 * DU = - -- = ------------- (u   - u )
+					 *        du   (u   + eps)^2    obs
+					 *               obs
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							scalex=pow(meanvel/(vxobs+epsvel),2); if(vxobs==0)scalex=0;
+							scaley=pow(meanvel/(vyobs+epsvel),2); if(vyobs==0)scaley=0;
+							dux=scalex*(vxobs-vx);
+							duy=scaley*(vyobs-vy);
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else{
+							scalex=pow(meanvel/(vxobs+epsvel),2); if(vxobs==0)scalex=0;
+							dux=scalex*(vxobs-vx);
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case SurfaceLogVelMisfitEnum:
+					/*
+					 *                 [        vel + eps     ] 2
+					 * J = 4 \bar{v}^2 | log ( -----------  ) |  
+					 *                 [       vel   + eps    ]
+					 *                            obs
+					 *
+					 *        dJ                 2 * log(...)
+					 * DU = - -- = - 4 \bar{v}^2 -------------  u
+					 *        du                 vel^2 + eps
+					 *            
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							velocity_mag    =sqrt(pow(vx,   2)+pow(vy,   2))+epsvel;
+							obs_velocity_mag=sqrt(pow(vxobs,2)+pow(vyobs,2))+epsvel;
+							scale=-8*pow(meanvel,2)/pow(velocity_mag,2)*log(velocity_mag/obs_velocity_mag);
+							dux=scale*vx;
+							duy=scale*vy;
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else{
+							velocity_mag    =fabs(vx)+epsvel;
+							obs_velocity_mag=fabs(vxobs)+epsvel;
+							scale=-8*pow(meanvel,2)/pow(velocity_mag,2)*log(velocity_mag/obs_velocity_mag);
+							dux=scale*vx;
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case SurfaceAverageVelMisfitEnum:
+					/*
+					 *      1                    2              2
+					 * J = ---  sqrt(  (u - u   )  +  (v - v   )  )
+					 *      S                obs            obs
+					 *
+					 *        dJ      1       1 
+					 * DU = - -- = - --- ----------- * 2 (u - u   )
+					 *        du      S  2 sqrt(...)           obs
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							scale=1./(S*2*sqrt(pow(vx-vxobs,2)+pow(vy-vyobs,2))+epsvel);
+							dux=scale*(vxobs-vx);
+							duy=scale*(vyobs-vy);
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else{
+							scale=1./(S*2*fabs(vx-vxobs)+epsvel);
+							dux=scale*(vxobs-vx);
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case SurfaceLogVxVyMisfitEnum:
+					/*
+					 *      1            [        |u| + eps     2          |v| + eps     2  ]
+					 * J = --- \bar{v}^2 | log ( -----------  )   +  log ( -----------  )   |  
+					 *      2            [       |u    |+ eps              |v    |+ eps     ]
+					 *                              obs                       obs
+					 *        dJ                              1      u                             1
+					 * DU = - -- = - \bar{v}^2 log(u...) --------- ----  ~ - \bar{v}^2 log(u...) ------
+					 *        du                         |u| + eps  |u|                           u + eps
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							dux = - meanvel*meanvel * log((fabs(vx)+epsvel)/(fabs(vxobs)+epsvel)) / (vx+epsvel);
+							duy = - meanvel*meanvel * log((fabs(vy)+epsvel)/(fabs(vyobs)+epsvel)) / (vy+epsvel);
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else{
+							dux = - meanvel*meanvel * log((fabs(vx)+epsvel)/(fabs(vxobs)+epsvel)) / (vx+epsvel);
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case DragCoefficientAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAlongGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAcrossGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case RheologyBbarAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case RheologyBAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				default:
+					_error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
+			}
+		}
+	}
+
+	/*Transform coordinate system*/
+	if(domaintype!=Domain2DverticalEnum)	basalelement->TransformLoadVectorCoord(pe,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<int>(responses);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           AdjointHorizAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	/*The gradient of the cost function is calculated in 2 parts.
+	 *
+	 * dJ    \partial J   \partial lambda^T(KU-F)
+	 * --  = ---------- + ------------------------
+	 * dk    \partial k   \parial k                  
+	 *
+	 * */
+
+	/*If on water, grad = 0: */
+	if(!element->IsIceInElement()) return;
+
+	/*Get Approximation*/
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+
+	/*Get list of cost functions*/
+	int *responses = NULL;
+	int num_responses,resp;
+	element->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	element->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+
+	/*Check that control_type is supported*/
+	if(control_type!=MaterialsRheologyBbarEnum && 
+		control_type!=FrictionCoefficientEnum   &&
+		control_type!=FrictionAsEnum   && 
+		control_type!=DamageDbarEnum            &&
+		control_type!=MaterialsRheologyBEnum){
+		_error_("Control "<<EnumToStringx(control_type)<<" not supported");
+	}
+
+	/*Deal with first part (partial derivative a J with respect to k)*/
+	for(resp=0;resp<num_responses;resp++) switch(responses[resp]){
+		case SurfaceAbsVelMisfitEnum:     /*Nothing, \partial J/\partial k = 0*/ break;
+		case SurfaceRelVelMisfitEnum:     /*Nothing, \partial J/\partial k = 0*/ break;
+		case SurfaceLogVelMisfitEnum:     /*Nothing, \partial J/\partial k = 0*/ break;
+		case SurfaceLogVxVyMisfitEnum:    /*Nothing, \partial J/\partial k = 0*/ break;
+		case SurfaceAverageVelMisfitEnum: /*Nothing, \partial J/\partial k = 0*/ break;
+		case DragCoefficientAbsGradientEnum: GradientJDragGradient(element,gradient,control_index); break;
+		case RheologyBbarAbsGradientEnum:    GradientJBbarGradient(element,gradient,control_index); break;
+		case RheologyBAbsGradientEnum:       GradientJBGradient(element,gradient,control_index);    break;
+		default: _error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
+	}
+
+	/*Deal with second term*/
+	switch(control_type){
+		case FrictionCoefficientEnum:
+			switch(approximation){
+				case SSAApproximationEnum: GradientJDragSSA(element,gradient,control_index); break;
+				case L1L2ApproximationEnum:GradientJDragL1L2(element,gradient,control_index); break;
+				case HOApproximationEnum:  GradientJDragHO( element,gradient,control_index); break;
+				case FSApproximationEnum:  GradientJDragFS( element,gradient,control_index); break;
+				case NoneApproximationEnum: /*Gradient is 0*/                    break;
+				default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet");
+			}
+			break;
+		case FrictionAsEnum:
+			switch(approximation){
+				case SSAApproximationEnum: GradientJDragHydroSSA(element,gradient,control_index); break;
+				case L1L2ApproximationEnum:GradientJDragHydroL1L2(element,gradient,control_index); break;
+				case HOApproximationEnum:  GradientJDragHydroHO( element,gradient,control_index); break;
+				case FSApproximationEnum:  GradientJDragHydroFS( element,gradient,control_index); break;
+				case NoneApproximationEnum: /*Gradient is 0*/                    break;
+				default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet");
+			}
+			break;
+		case MaterialsRheologyBbarEnum:
+			switch(approximation){
+				case SSAApproximationEnum: GradientJBbarSSA(element,gradient,control_index); break;
+				case L1L2ApproximationEnum:GradientJBbarL1L2(element,gradient,control_index); break;
+				case HOApproximationEnum:  GradientJBbarHO( element,gradient,control_index); break;
+				case FSApproximationEnum:  GradientJBbarFS( element,gradient,control_index); break;
+				case NoneApproximationEnum: /*Gradient is 0*/                    break;
+				default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet");
+			}
+			break;
+		case MaterialsRheologyBEnum:
+			switch(approximation){
+				case SSAApproximationEnum: GradientJBSSA(element,gradient,control_index); break;
+				case HOApproximationEnum:  GradientJBHO( element,gradient,control_index); break;
+				case FSApproximationEnum:  GradientJBFS( element,gradient,control_index); break;
+				case NoneApproximationEnum: /*Gradient is 0*/                    break;
+				default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet");
+			}
+			break;
+		case DamageDbarEnum:
+			switch(approximation){
+				case SSAApproximationEnum: GradientJDSSA(element,gradient,control_index); break;
+				case NoneApproximationEnum: /*Gradient is 0*/                 break;
+				default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet");
+			}
+			break;
+		default: _error_("control type not supported yet: " << EnumToStringx(control_type));
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(responses);
+                         
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBbarFS(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+	/*WARNING: We use SSA as an estimate for now*/
+	this->GradientJBbarSSA(element,gradient,control_index);
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBbarGradient(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble dk[3]; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* dbasis        = xNew<IssmDouble>(2*numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* rheologyb_input = basalelement->GetInput(MaterialsRheologyBbarEnum);              _assert_(rheologyb_input);
+	Input* weights_input   = basalelement->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsP1Derivatives(dbasis,xyz_list,gauss);
+		weights_input->GetInputValue(&weight,gauss,RheologyBbarAbsGradientEnum);
+
+		/*Build alpha_complement_list: */
+		rheologyb_input->GetInputDerivativeValue(&dk[0],xyz_list,gauss);
+
+		/*Build gradje_g_gaussian vector (actually -dJ/ddrag): */
+		for(int i=0;i<numvertices;i++){
+			if(domaintype!=Domain2DverticalEnum){
+				ge[i]+=-weight*Jdet*gauss->weight*(dbasis[0*numvertices+i]*dk[0]+dbasis[1*numvertices+i]*dk[1]);
+			}
+			else{
+				ge[i]+=-weight*Jdet*gauss->weight*dbasis[0*numvertices+i]*dk[0];
+			}
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBbarL1L2(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	   /*Same as SSA*/
+	   return this->GradientJBbarSSA(element,gradient,control_index);
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBbarHO(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*WARNING: We use SSA as an estimate for now*/
+	this->GradientJBbarSSA(element,gradient,control_index);
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBbarSSA(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype,dim;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			dim          = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble thickness,dmudB;
+	IssmDouble dvx[3],dvy[3],dadjx[3],dadjy[3]; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* thickness_input = basalelement->GetInput(ThicknessEnum);             _assert_(thickness_input);
+	Input* vx_input        = basalelement->GetInput(VxEnum);                    _assert_(vx_input);
+	Input* vy_input        = basalelement->GetInput(VyEnum);                    _assert_(vy_input);
+	Input* adjointx_input  = basalelement->GetInput(AdjointxEnum);              _assert_(adjointx_input);
+	Input* adjointy_input  = basalelement->GetInput(AdjointyEnum);              _assert_(adjointy_input);
+	Input* rheologyb_input = basalelement->GetInput(MaterialsRheologyBbarEnum); _assert_(rheologyb_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		thickness_input->GetInputValue(&thickness,gauss);
+		vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+		adjointx_input->GetInputDerivativeValue(&dadjx[0],xyz_list,gauss);
+		adjointy_input->GetInputDerivativeValue(&dadjy[0],xyz_list,gauss);
+
+		basalelement->dViscositydBSSA(&dmudB,dim,xyz_list,gauss,vx_input,vy_input);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dB): */
+		for(int i=0;i<numvertices;i++){
+			ge[i]+=-dmudB*thickness*(
+						(2*dvx[0]+dvy[1])*2*dadjx[0]+(dvx[1]+dvy[0])*(dadjx[1]+dadjy[0])+(2*dvy[1]+dvx[0])*2*dadjy[1]
+						)*Jdet*gauss->weight*basis[i];
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBFS(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+	/*WARNING: We use HO as an estimate for now*/
+	this->GradientJBHO(element,gradient,control_index);
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBGradient(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			break;
+		case Domain2DverticalEnum:
+			break;
+		case Domain3DEnum:
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble dk[3]; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* dbasis        = xNew<IssmDouble>(3*numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* rheology_input = element->GetInput(MaterialsRheologyBEnum);              _assert_(rheology_input);
+	Input* weights_input   = element->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsP1Derivatives(dbasis,xyz_list,gauss);
+		weights_input->GetInputValue(&weight,gauss,RheologyBAbsGradientEnum);
+
+		/*Build alpha_complement_list: */
+		rheology_input->GetInputDerivativeValue(&dk[0],xyz_list,gauss);
+
+		/*Build gradje_g_gaussian vector (actually -dJ/ddrag): */
+		for(int i=0;i<numvertices;i++){
+			if(domaintype!=Domain2DverticalEnum){
+				ge[i]+=-weight*Jdet*gauss->weight*(dbasis[0*numvertices+i]*dk[0]+dbasis[1*numvertices+i]*dk[1]);
+			}
+			else{
+				ge[i]+=-weight*Jdet*gauss->weight*(dbasis[0*numvertices+i]*dk[0]+dbasis[1*numvertices+i]*dk[1]+dbasis[2*numvertices+i]*dk[2]);
+			}
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBHO(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+	/*Intermediaries*/
+	int      domaintype,dim;
+
+	/*Get domaintype*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble thickness,dmudB;
+	IssmDouble dvx[3],dvy[3],dadjx[3],dadjy[3]; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* thickness_input = element->GetInput(ThicknessEnum);             _assert_(thickness_input);
+	Input* vx_input        = element->GetInput(VxEnum);                    _assert_(vx_input);
+	Input* vy_input        = NULL;
+	Input* adjointx_input  = element->GetInput(AdjointxEnum);              _assert_(adjointx_input);
+	Input* adjointy_input  = NULL;
+	Input* rheologyb_input = element->GetInput(MaterialsRheologyBEnum); _assert_(rheologyb_input);
+	if(domaintype!=Domain2DverticalEnum){
+		vy_input        = element->GetInput(VyEnum);                   _assert_(vy_input);
+		adjointy_input  = element->GetInput(AdjointyEnum);             _assert_(adjointy_input);
+	}
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		thickness_input->GetInputValue(&thickness,gauss);
+		vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		adjointx_input->GetInputDerivativeValue(&dadjx[0],xyz_list,gauss);
+		dim=2;
+		if(domaintype!=Domain2DverticalEnum){
+			adjointy_input->GetInputDerivativeValue(&dadjy[0],xyz_list, gauss);
+			vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+			dim=3;
+		}
+
+		element->dViscositydBHO(&dmudB,dim,xyz_list,gauss,vx_input,vy_input);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dB): */
+		for(int i=0;i<numvertices;i++){
+			if(domaintype!=Domain2DverticalEnum){
+				ge[i]+=-dmudB*thickness*(
+							(2*dvx[0]+dvy[1])*2*dadjx[0]+(dvx[1]+dvy[0])*(dadjx[1]+dadjy[0])+(2*dvy[1]+dvx[0])*2*dadjy[1]
+							)*Jdet*gauss->weight*basis[i];
+			}
+			else{
+				ge[i]+=-dmudB*thickness*4*dvx[0]*dadjx[0]*Jdet*gauss->weight*basis[i];
+			}
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBSSA(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype,dim;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			dim          = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble thickness,dmudB;
+	IssmDouble dvx[3],dvy[3],dadjx[3],dadjy[3]; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* thickness_input = basalelement->GetInput(ThicknessEnum);             _assert_(thickness_input);
+	Input* vx_input        = basalelement->GetInput(VxEnum);                    _assert_(vx_input);
+	Input* vy_input        = basalelement->GetInput(VyEnum);                    _assert_(vy_input);
+	Input* adjointx_input  = basalelement->GetInput(AdjointxEnum);              _assert_(adjointx_input);
+	Input* adjointy_input  = basalelement->GetInput(AdjointyEnum);              _assert_(adjointy_input);
+	Input* rheologyb_input = basalelement->GetInput(MaterialsRheologyBEnum); _assert_(rheologyb_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		thickness_input->GetInputValue(&thickness,gauss);
+		vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+		adjointx_input->GetInputDerivativeValue(&dadjx[0],xyz_list,gauss);
+		adjointy_input->GetInputDerivativeValue(&dadjy[0],xyz_list,gauss);
+
+		basalelement->dViscositydBSSA(&dmudB,dim,xyz_list,gauss,vx_input,vy_input);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dB): */
+		for(int i=0;i<numvertices;i++){
+			ge[i]+=-dmudB*thickness*(
+						(2*dvx[0]+dvy[1])*2*dadjx[0]+(dvx[1]+dvy[0])*(dadjx[1]+dadjy[0])+(2*dvy[1]+dvx[0])*2*dadjy[1]
+						)*Jdet*gauss->weight*basis[i];
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJDragGradient(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*return if floating (gradient is 0)*/
+	if(element->IsFloating()) return;
+
+	/*Intermediaries*/
+	int      domaintype,dim;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			dim          = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble dk[3]; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* dbasis        = xNew<IssmDouble>(2*numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* dragcoefficient_input = basalelement->GetInput(FrictionCoefficientEnum);                _assert_(dragcoefficient_input);
+	Input* weights_input         = basalelement->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsP1Derivatives(dbasis,xyz_list,gauss);
+		weights_input->GetInputValue(&weight,gauss,DragCoefficientAbsGradientEnum);
+
+		/*Build alpha_complement_list: */
+		dragcoefficient_input->GetInputDerivativeValue(&dk[0],xyz_list,gauss);
+
+		/*Build gradient vector (actually -dJ/ddrag): */
+		for(int i=0;i<numvertices;i++){
+			if(dim==2){
+				ge[i]+=-weight*Jdet*gauss->weight*(dbasis[0*numvertices+i]*dk[0]+dbasis[1*numvertices+i]*dk[1]);
+			}
+			else{
+				ge[i]+=-weight*Jdet*gauss->weight*dbasis[0*numvertices+i]*dk[0];
+			}
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJDragFS(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*return if floating or not on bed (gradient is 0)*/
+	if(element->IsFloating()) return;
+	if(!element->IsOnBase()) return;
+
+	/*Intermediaries*/
+	int        domaintype,dim;
+	IssmDouble Jdet,weight;
+	IssmDouble drag,dalpha2dk,normal[3];
+	IssmDouble vx,vy,vz,lambda,mu,xi;
+	IssmDouble *xyz_list_base= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/* get domaintype */
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Build friction element, needed later: */
+	if(domaintype!=Domain2DverticalEnum) dim=3;
+	else dim=2;
+	Friction* friction=new Friction(element,dim);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* vx_input        = element->GetInput(VxEnum);                   _assert_(vx_input);
+	Input* vy_input        = element->GetInput(VyEnum);                   _assert_(vy_input);
+	Input* adjointx_input  = element->GetInput(AdjointxEnum);             _assert_(adjointx_input);
+	Input* adjointy_input  = element->GetInput(AdjointyEnum);             _assert_(adjointy_input);
+	Input* vz_input        = NULL;
+	Input* adjointz_input  = NULL;
+	if(domaintype!=Domain2DverticalEnum){
+		vz_input        = element->GetInput(VzEnum);                   _assert_(vy_input);
+		adjointz_input  = element->GetInput(AdjointzEnum);             _assert_(adjointz_input);
+	}
+	Input* dragcoeff_input = element->GetInput(FrictionCoefficientEnum);  _assert_(dragcoeff_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		adjointx_input->GetInputValue(&lambda, gauss);
+		adjointy_input->GetInputValue(&mu, gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		if(domaintype!=Domain2DverticalEnum){
+			adjointz_input->GetInputValue(&xi    ,gauss);
+			vz_input->GetInputValue(&vz,gauss);
+		}
+		dragcoeff_input->GetInputValue(&drag, gauss);
+
+		friction->GetAlphaComplement(&dalpha2dk,gauss);
+		element->NormalBase(&normal[0],xyz_list_base);
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dk): */
+		if(domaintype!=Domain2DverticalEnum){
+			for(int i=0;i<numvertices;i++){
+				ge[i]+=(
+							-lambda*(2*drag*dalpha2dk*(vx - vz*normal[0]*normal[2]))
+							-mu    *(2*drag*dalpha2dk*(vy - vz*normal[1]*normal[2]))
+							-xi    *(2*drag*dalpha2dk*(-vx*normal[0]*normal[2]-vy*normal[1]*normal[2]))
+						 )*Jdet*gauss->weight*basis[i];
+				_assert_(!xIsNan<IssmDouble>(ge[i]));
+			}
+		}
+		else{
+			for(int i=0;i<numvertices;i++){
+				ge[i]+=(
+							-lambda*2*drag*dalpha2dk*vx
+							-mu    *2*drag*dalpha2dk*vy
+						 )*Jdet*gauss->weight*basis[i];
+				_assert_(!xIsNan<IssmDouble>(ge[i]));
+			}
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	delete friction;
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJDragL1L2(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*Same as SSA*/
+	return this->GradientJDragSSA(element,gradient,control_index);
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJDragHO(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*return if floating or not on bed (gradient is 0)*/
+	if(element->IsFloating()) return;
+	if(!element->IsOnBase()) return;
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble drag,dalpha2dk;
+	IssmDouble vx,vy,lambda,mu;
+	IssmDouble *xyz_list_base= NULL;
+
+	int      domaintype,dim;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Build friction element, needed later: */
+	if(domaintype!=Domain2DverticalEnum) dim=3;
+	else dim=2;
+	Friction* friction=new Friction(element,dim);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* vx_input        = element->GetInput(VxEnum);                   _assert_(vx_input);
+	Input* vy_input        = NULL;
+	Input* adjointx_input  = element->GetInput(AdjointxEnum);             _assert_(adjointx_input);
+	Input* adjointy_input  = NULL;
+	Input* dragcoeff_input = element->GetInput(FrictionCoefficientEnum);  _assert_(dragcoeff_input);
+	if(domaintype!=Domain2DverticalEnum){
+		vy_input        = element->GetInput(VyEnum);                   _assert_(vy_input);
+		adjointy_input  = element->GetInput(AdjointyEnum);             _assert_(adjointy_input);
+	}
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		adjointx_input->GetInputValue(&lambda, gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		if(domaintype!=Domain2DverticalEnum){
+			adjointy_input->GetInputValue(&mu, gauss);
+			vy_input->GetInputValue(&vy,gauss);
+		}
+		dragcoeff_input->GetInputValue(&drag, gauss);
+
+		friction->GetAlphaComplement(&dalpha2dk,gauss);
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dD): */
+		for(int i=0;i<numvertices;i++){
+			if(domaintype!=Domain2DverticalEnum) ge[i]+=-2.*drag*dalpha2dk*((lambda*vx+mu*vy))*Jdet*gauss->weight*basis[i];
+			else ge[i]+=-2.*drag*dalpha2dk*(lambda*vx)*Jdet*gauss->weight*basis[i];
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	delete friction;
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJDragSSA(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*return if floating (gradient is 0)*/
+	if(element->IsFloating()) return;
+
+	/*Intermediaries*/
+	int      domaintype,dim;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			dim          = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble drag,dalpha2dk;
+	IssmDouble vx,vy,lambda,mu;
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Build friction element, needed later: */
+	Friction* friction=new Friction(basalelement,dim);
+
+	/*Retrieve all inputs we will be needing: */
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* vx_input        = basalelement->GetInput(VxEnum);                   _assert_(vx_input);
+	Input* vy_input        = basalelement->GetInput(VyEnum);                   _assert_(vy_input);
+	Input* adjointx_input  = basalelement->GetInput(AdjointxEnum);             _assert_(adjointx_input);
+	Input* adjointy_input  = basalelement->GetInput(AdjointyEnum);             _assert_(adjointy_input);
+	Input* dragcoeff_input = basalelement->GetInput(FrictionCoefficientEnum);  _assert_(dragcoeff_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		adjointx_input->GetInputValue(&lambda, gauss);
+		adjointy_input->GetInputValue(&mu, gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		dragcoeff_input->GetInputValue(&drag, gauss);
+
+		friction->GetAlphaComplement(&dalpha2dk,gauss);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dD): */
+		for(int i=0;i<numvertices;i++){
+			ge[i]+=-2.*drag*dalpha2dk*((lambda*vx+mu*vy))*Jdet*gauss->weight*basis[i];
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	delete friction;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+
+void AdjointHorizAnalysis::GradientJDragHydroFS(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*return if floating or not on bed (gradient is 0)*/
+	if(element->IsFloating()) return;
+	if(!element->IsOnBase()) return;
+
+	/*Intermediaries*/
+	int        domaintype,dim;
+	IssmDouble Jdet,weight;
+	IssmDouble drag,dalpha2dk,normal[3];
+	IssmDouble vx,vy,vz,lambda,mu,xi;
+	IssmDouble *xyz_list_base= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/* get domaintype */
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Build friction element, needed later: */
+	if(domaintype!=Domain2DverticalEnum) dim=3;
+	else dim=2;
+	Friction* friction=new Friction(element,dim);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* vx_input        = element->GetInput(VxEnum);                   _assert_(vx_input);
+	Input* vy_input        = element->GetInput(VyEnum);                   _assert_(vy_input);
+	Input* adjointx_input  = element->GetInput(AdjointxEnum);             _assert_(adjointx_input);
+	Input* adjointy_input  = element->GetInput(AdjointyEnum);             _assert_(adjointy_input);
+	Input* vz_input        = NULL;
+	Input* adjointz_input  = NULL;
+	if(domaintype!=Domain2DverticalEnum){
+		vz_input        = element->GetInput(VzEnum);                   _assert_(vy_input);
+		adjointz_input  = element->GetInput(AdjointzEnum);             _assert_(adjointz_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		adjointx_input->GetInputValue(&lambda, gauss);
+		adjointy_input->GetInputValue(&mu, gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		if(domaintype!=Domain2DverticalEnum){
+			adjointz_input->GetInputValue(&xi    ,gauss);
+			vz_input->GetInputValue(&vz,gauss);
+		}
+
+		friction->GetAlphaComplement(&dalpha2dk,gauss);
+		element->NormalBase(&normal[0],xyz_list_base);
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dk): */
+		if(domaintype!=Domain2DverticalEnum){
+			for(int i=0;i<numvertices;i++){
+				ge[i]+=(
+							-lambda*(dalpha2dk*(vx - vz*normal[0]*normal[2]))
+							-mu    *(dalpha2dk*(vy - vz*normal[1]*normal[2]))
+							-xi    *(dalpha2dk*(-vx*normal[0]*normal[2]-vy*normal[1]*normal[2]))
+						 )*Jdet*gauss->weight*basis[i];
+				_assert_(!xIsNan<IssmDouble>(ge[i]));
+			}
+		}
+		else{
+			for(int i=0;i<numvertices;i++){
+				ge[i]+=(
+							-lambda*dalpha2dk*vx
+							-mu    *dalpha2dk*vy
+						 )*Jdet*gauss->weight*basis[i];
+				_assert_(!xIsNan<IssmDouble>(ge[i]));
+			}
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	delete friction;
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJDragHydroL1L2(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*Same as SSA*/
+	return this->GradientJDragSSA(element,gradient,control_index);
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJDragHydroHO(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*return if floating or not on bed (gradient is 0)*/
+	if(element->IsFloating()) return;
+	if(!element->IsOnBase()) return;
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble drag,dalpha2dk;
+	IssmDouble vx,vy,lambda,mu;
+	IssmDouble *xyz_list_base= NULL;
+
+	int      domaintype,dim;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Build friction element, needed later: */
+	if(domaintype!=Domain2DverticalEnum) dim=3;
+	else dim=2;
+	Friction* friction=new Friction(element,dim);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* vx_input        = element->GetInput(VxEnum);                   _assert_(vx_input);
+	Input* vy_input        = NULL;
+	Input* adjointx_input  = element->GetInput(AdjointxEnum);             _assert_(adjointx_input);
+	Input* adjointy_input  = NULL;
+	if(domaintype!=Domain2DverticalEnum){
+		vy_input        = element->GetInput(VyEnum);                   _assert_(vy_input);
+		adjointy_input  = element->GetInput(AdjointyEnum);             _assert_(adjointy_input);
+	}
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		adjointx_input->GetInputValue(&lambda, gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		if(domaintype!=Domain2DverticalEnum){
+			adjointy_input->GetInputValue(&mu, gauss);
+			vy_input->GetInputValue(&vy,gauss);
+		}
+
+		friction->GetAlphaComplement(&dalpha2dk,gauss);
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dD): */
+		for(int i=0;i<numvertices;i++){
+			if(domaintype!=Domain2DverticalEnum) ge[i]+=-dalpha2dk*((lambda*vx+mu*vy))*Jdet*gauss->weight*basis[i];
+			else ge[i]+=-dalpha2dk*(lambda*vx)*Jdet*gauss->weight*basis[i];
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	delete friction;
+}/*}}}*/
+
+void AdjointHorizAnalysis::GradientJDragHydroSSA(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*return if floating (gradient is 0)*/
+	if(element->IsFloating()) return;
+
+	/*Intermediaries*/
+	int      domaintype,dim;
+
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			dim          = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble dalpha2dk;
+	IssmDouble vx,vy,lambda,mu;
+	IssmDouble *xyz_list= NULL;
+
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Build friction element, needed later: */
+	Friction* friction=new Friction(basalelement,dim);
+
+	/*Retrieve all inputs we will be needing: */
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* vx_input        = basalelement->GetInput(VxEnum);          _assert_(vx_input);
+	Input* vy_input        = basalelement->GetInput(VyEnum);          _assert_(vy_input);
+	Input* adjointx_input  = basalelement->GetInput(AdjointxEnum);    _assert_(adjointx_input);
+	Input* adjointy_input  = basalelement->GetInput(AdjointyEnum);    _assert_(adjointy_input);
+
+
+
+	IssmDouble  q_exp;
+	IssmDouble  C_param;
+	IssmDouble  As;
+	IssmDouble  Neff;
+	IssmDouble  n;
+	IssmDouble  alpha;
+	IssmDouble  Chi,Gamma;
+	IssmDouble  vz,vmag;
+	IssmDouble  Uder;
+
+	/*Recover parameters: */
+	Input* qinput = basalelement->GetInput(FrictionQEnum);
+	Input* cinput = basalelement->GetInput(FrictionCEnum);
+	Input* Asinput = basalelement->GetInput(FrictionAsEnum);
+	Input* nInput =basalelement->GetInput(MaterialsRheologyNEnum);
+	Input* Ninput = basalelement->GetInput(FrictionEffectivePressureEnum);	
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		adjointx_input->GetInputValue(&lambda, gauss);
+		adjointy_input->GetInputValue(&mu, gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+
+		friction->GetAlphaComplement(&dalpha2dk,gauss);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsP1(basis,gauss);
+
+		/*Dealing with dalpha/du*/
+		qinput->GetInputValue(&q_exp,gauss);
+		cinput->GetInputValue(&C_param,gauss);
+		Asinput->GetInputValue(&As,gauss);
+		Ninput->GetInputValue(&Neff,gauss);
+		nInput->GetInputValue(&n,gauss);
+
+		if (q_exp==1){
+			alpha=1;
+		}
+		else{
+			alpha=(pow(q_exp-1,q_exp-1))/pow(q_exp,q_exp);
+		}
+		Chi   = vmag/(pow(C_param,n)*pow(Neff,n)*As);
+		Gamma = (Chi/(1.+alpha*pow(Chi,q_exp)));
+		
+		Uder =Neff*C_param/(vmag*vmag*n) *
+			(Gamma-alpha*q_exp*pow(Chi,q_exp-1.)*Gamma*Gamma* pow(Gamma,(1.-n)/n) -
+			 n* pow(Gamma,1./n));
+		
+		/*Build gradient vector (actually -dJ/dD): */
+		for(int i=0;i<numvertices;i++){
+			ge[i]+=-dalpha2dk*((lambda*vx+mu*vy))*Jdet*gauss->weight*basis[i];
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	delete friction;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+
+void           AdjointHorizAnalysis::GradientJDSSA(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype,dim;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			dim          = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble thickness,dmudD;
+	IssmDouble dvx[3],dvy[3],dadjx[3],dadjy[3]; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* thickness_input = basalelement->GetInput(ThicknessEnum);             _assert_(thickness_input);
+	Input* vx_input        = basalelement->GetInput(VxEnum);                    _assert_(vx_input);
+	Input* vy_input        = basalelement->GetInput(VyEnum);                    _assert_(vy_input);
+	Input* adjointx_input  = basalelement->GetInput(AdjointxEnum);              _assert_(adjointx_input);
+	Input* adjointy_input  = basalelement->GetInput(AdjointyEnum);              _assert_(adjointy_input);
+	Input* rheologyb_input = basalelement->GetInput(MaterialsRheologyBbarEnum); _assert_(rheologyb_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		thickness_input->GetInputValue(&thickness,gauss);
+		vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+		adjointx_input->GetInputDerivativeValue(&dadjx[0],xyz_list,gauss);
+		adjointy_input->GetInputDerivativeValue(&dadjy[0],xyz_list,gauss);
+
+		basalelement->dViscositydDSSA(&dmudD,dim,xyz_list,gauss,vx_input,vy_input);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsP1(basis,gauss);
+
+		for(int i=0;i<numvertices;i++){
+			ge[i]+=-dmudD*thickness*(
+						(2*dvx[0]+dvy[1])*2*dadjx[0]+(dvx[1]+dvy[0])*(dadjx[1]+dadjy[0])+(2*dvy[1]+dvx[0])*2*dadjy[1]
+						)*Jdet*gauss->weight*basis[i];
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+void           AdjointHorizAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation==FSApproximationEnum || approximation==NoneApproximationEnum){
+		InputUpdateFromSolutionFS(solution,element);
+	}
+	else{
+		InputUpdateFromSolutionHoriz(solution,element);
+	}
+}/*}}}*/
+void           AdjointHorizAnalysis::InputUpdateFromSolutionFS(IssmDouble* solution,Element* element){/*{{{*/
+	int          i,fe_FS;
+	int*         vdoflist=NULL;
+	int*         pdoflist=NULL;
+	IssmDouble   FSreconditioning;
+
+	int      domaintype,dim;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			dim          = 3;
+			break;
+		case Domain2DverticalEnum:
+			dim          = 2;
+			break;
+		case Domain3DEnum:
+			dim          = 3;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int vnumdof   = vnumnodes*dim;
+	int pnumdof   = pnumnodes*1;
+
+	/*Initialize values*/
+	IssmDouble* values  = xNew<IssmDouble>(vnumdof+pnumdof);
+	IssmDouble* lambdax = xNew<IssmDouble>(vnumnodes);
+	IssmDouble* lambday = xNew<IssmDouble>(vnumnodes);
+	IssmDouble* lambdaz = xNew<IssmDouble>(vnumnodes);
+	IssmDouble* lambdap = xNew<IssmDouble>(pnumnodes);
+
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Get dof list: */
+	element->GetDofListVelocity(&vdoflist,GsetEnum);
+	element->GetDofListPressure(&pdoflist,GsetEnum);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<vnumdof;i++) values[i]        =solution[vdoflist[i]];
+	for(i=0;i<pnumdof;i++) values[vnumdof+i]=solution[pdoflist[i]];
+
+	/*Transform solution in Cartesian Space*/
+	element->TransformSolutionCoord(values,cs_list);
+
+	/*fill in all arrays: */
+	for(i=0;i<vnumnodes;i++){
+		lambdax[i] = values[i*dim+0];
+		if(xIsNan<IssmDouble>(lambdax[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(lambdax[i])) _error_("Inf found in solution vector");
+		lambday[i] = values[i*dim+1];
+		if(xIsNan<IssmDouble>(lambday[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(lambday[i])) _error_("Inf found in solution vector");
+		if(dim==3){
+			lambdaz[i] = values[i*dim+2];
+			if(xIsNan<IssmDouble>(lambdaz[i])) _error_("NaN found in solution vector");
+			if(xIsInf<IssmDouble>(lambdaz[i])) _error_("Inf found in solution vector");
+		}
+	}
+	for(i=0;i<pnumnodes;i++){
+		lambdap[i] = values[vnumdof+i];
+		if(xIsNan<IssmDouble>(lambdap[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(lambdap[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Recondition pressure and compute vel: */
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	for(i=0;i<pnumnodes;i++) lambdap[i]=lambdap[i]*FSreconditioning;
+
+	/*Add vx and vy as inputs to the tria element: */
+	element->AddInput(AdjointxEnum,lambdax,element->VelocityInterpolation());
+	element->AddInput(AdjointyEnum,lambday,element->VelocityInterpolation());
+	if(domaintype!=Domain2DverticalEnum) element->AddInput(AdjointzEnum,lambdaz,element->VelocityInterpolation());
+
+	element->FindParam(&fe_FS,FlowequationFeFSEnum);
+	if(fe_FS!=LATaylorHoodEnum && fe_FS!=LACrouzeixRaviartEnum)	
+	 element->AddInput(AdjointpEnum,lambdap,element->PressureInterpolation());	
+
+	/*Free ressources:*/
+	xDelete<int>(vdoflist);
+	xDelete<int>(pdoflist);
+	xDelete<int>(cs_list);
+	xDelete<IssmDouble>(lambdap);
+	xDelete<IssmDouble>(lambdaz);
+	xDelete<IssmDouble>(lambday);
+	xDelete<IssmDouble>(lambdax);
+	xDelete<IssmDouble>(values);
+}/*}}}*/
+void           AdjointHorizAnalysis::InputUpdateFromSolutionHoriz(IssmDouble* solution,Element* element){/*{{{*/
+	int  i;
+	int* doflist=NULL;
+
+	int    domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof;
+	if(domaintype!=Domain2DverticalEnum)  numdof   = numnodes*2;
+	else			                          numdof   = numnodes*1;
+	/*Fetch dof list and allocate solution vectors*/
+	element->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values  = xNew<IssmDouble>(numdof);
+	IssmDouble* lambdax = xNew<IssmDouble>(numnodes);
+	IssmDouble* lambday = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
+
+	/*Transform solution in Cartesian Space*/
+	if(domaintype!=Domain2DverticalEnum)	element->TransformSolutionCoord(&values[0],XYEnum);
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+	for(i=0;i<numnodes;i++){
+		if(domaintype!=Domain2DverticalEnum){
+			lambdax[i]=values[i*NDOF2+0];
+			lambday[i]=values[i*NDOF2+1];
+		}
+		else {lambdax[i]=values[i];lambday[i]=0;}
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(lambdax[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(lambdax[i])) _error_("Inf found in solution vector");
+		if(domaintype!=Domain2DverticalEnum && xIsNan<IssmDouble>(lambday[i])) _error_("NaN found in solution vector");
+		if(domaintype!=Domain2DverticalEnum && xIsInf<IssmDouble>(lambday[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Add vx and vy as inputs to the tria element: */
+	element->AddInput(AdjointxEnum,lambdax,element->GetElementType());
+	element->AddInput(AdjointyEnum,lambday,element->GetElementType());
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(lambdax);
+	xDelete<IssmDouble>(lambday);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           AdjointHorizAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/AdjointHorizAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/AdjointHorizAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/AdjointHorizAnalysis.h	(revision 21239)
@@ -0,0 +1,62 @@
+/*! \file AdjointHorizAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _AdjointHorizAnalysis_
+#define _AdjointHorizAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class AdjointHorizAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementMatrix* CreateKMatrixFS(Element* element);
+		ElementMatrix* CreateKMatrixHO(Element* element);
+		ElementMatrix* CreateKMatrixL1L2(Element* element);
+		ElementMatrix* CreateKMatrixSSA(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		ElementVector* CreatePVectorFS(Element* element);
+		ElementVector* CreatePVectorL1L2(Element* element);
+		ElementVector* CreatePVectorHO(Element* element);
+		ElementVector* CreatePVectorSSA(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           GradientJBbarFS(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJBbarGradient(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJBbarL1L2(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJBbarHO(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJBbarSSA(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJBFS(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJBGradient(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJBHO(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJBSSA(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJDragFS(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJDragGradient(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJDragL1L2(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJDragHO(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJDragSSA(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJDragHydroFS(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJDragHydroL1L2(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJDragHydroHO(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJDragHydroSSA(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJDSSA(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           InputUpdateFromSolutionFS(IssmDouble* solution,Element* element);
+		void           InputUpdateFromSolutionHoriz(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/Analysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/Analysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/Analysis.h	(revision 21239)
@@ -0,0 +1,54 @@
+/*!\file:  Analysis.h
+ * \brief abstract class for Analysis objects
+ */ 
+
+#ifndef _ANALYSIS_H_
+#define _ANALYSIS_H_
+
+#include "../toolkits/objects/toolkitobjects.h"
+
+// Looks like AD runs without AMPI are missing commmpi.h
+// Conditionally including the header
+
+#if !defined(_HAVE_MPI_) && !defined(_HAVE_PETSC_MPI_)
+#include "../toolkits/mpi/commops/commops.h"
+#endif
+
+class Parameters;
+class IoModel;
+class Elements;
+class Nodes;
+class Constraints;
+class Loads;
+class Element;
+class ElementVector;
+class ElementMatrix;
+class Gauss;
+class FemModel;
+
+class Analysis{
+
+	public: 
+		/*Constructor/Destructor*/
+		virtual      ~Analysis(){};
+
+		/*Model processing*/
+		virtual void CreateConstraints(Constraints* constraints,IoModel* iomodel)=0;
+		virtual void CreateLoads(Loads* loads, IoModel* iomodel)=0;
+		virtual void CreateNodes(Nodes* nodes,IoModel* iomodel)=0;
+		virtual int  DofsPerNode(int** doflist,int domaintype,int approximation)=0;
+		virtual void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type)=0;
+		virtual void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum)=0;
+
+		/*Finite element Analysis*/
+		virtual void           Core(FemModel* femmodel)=0;
+		virtual ElementVector* CreateDVector(Element* element)=0;
+		virtual ElementMatrix* CreateJacobianMatrix(Element* element)=0;
+		virtual ElementMatrix* CreateKMatrix(Element* element)=0;
+		virtual ElementVector* CreatePVector(Element* element)=0;
+		virtual void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element)=0;
+		virtual void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index)=0;
+		virtual void           InputUpdateFromSolution(IssmDouble* solution,Element* element)=0;
+		virtual void           UpdateConstraints(FemModel* femmodel)=0;
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/Balancethickness2Analysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/Balancethickness2Analysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/Balancethickness2Analysis.cpp	(revision 21239)
@@ -0,0 +1,281 @@
+#include "./Balancethickness2Analysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void Balancethickness2Analysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+
+	int finiteelement = P1Enum;
+	IoModelToConstraintsx(constraints,iomodel,"md.balancethickness.spcthickness",Balancethickness2AnalysisEnum,finiteelement);
+
+}/*}}}*/
+void Balancethickness2Analysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+}/*}}}*/
+void Balancethickness2Analysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	int finiteelement = P1Enum;
+	::CreateNodes(nodes,iomodel,Balancethickness2AnalysisEnum,finiteelement);
+}/*}}}*/
+int  Balancethickness2Analysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void Balancethickness2Analysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Finite element type*/
+	int finiteelement = P1Enum;
+
+	/*Load variables in element*/
+	iomodel->FetchDataToInput(elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(elements,"md.slr.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(elements,"md.smb.mass_balance",SmbMassBalanceEnum);
+	iomodel->FetchDataToInput(elements,"md.balancethickness.thickening_rate",BalancethicknessThickeningRateEnum);
+	iomodel->FetchDataToInput(elements,"md.balancethickness.omega",BalancethicknessOmegaEnum);
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,finiteelement);
+
+			counter++;
+		}
+	}
+
+}/*}}}*/
+void Balancethickness2Analysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           Balancethickness2Analysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+ElementVector* Balancethickness2Analysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+void           Balancethickness2Analysis::CreateD0(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble       Gamma,h,mu0,ds[2],Cmu,B,k,s,b,normds;
+	const int        n = 3;
+	const IssmDouble Hstar = 500.;
+	const IssmDouble Lstar = 500.e+3;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of vertices and allocate output*/
+	int  numnodes = element->GetNumberOfNodes();
+	IssmDouble* D0     = xNew<IssmDouble>(numnodes);
+
+	/*retrieve what we need: */
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* surfaceslopex_input = element->GetInput(SurfaceSlopeXEnum);
+	Input* surfaceslopey_input = element->GetInput(SurfaceSlopeYEnum);
+	Input* surface_input       = element->GetInput(SurfaceEnum);            _assert_(surface_input);
+	Input* B_input             = element->GetInput(MaterialsRheologyBEnum); _assert_(B_input);
+	IssmDouble rhog            = element->GetMaterialParameter(MaterialsRhoIceEnum)*element->GetMaterialParameter(ConstantsGEnum);
+
+	/*Calculate damage evolution source term: */
+	Gauss* gauss=element->NewGauss();
+	for (int i=0;i<numnodes;i++){
+		gauss->GaussNode(element->GetElementType(),i);
+		
+		B_input->GetInputValue(&B,gauss);
+		if(surfaceslopex_input && surfaceslopey_input){
+			surfaceslopex_input->GetInputValue(&ds[0],gauss);
+			surfaceslopey_input->GetInputValue(&ds[1],gauss);
+		}
+		else{
+			surface_input->GetInputDerivativeValue(&ds[0],xyz_list,gauss);
+		}
+
+		/*check slopes*/
+		normds = sqrt(ds[0]*ds[0]+ds[1]*ds[1]);
+		if (normds==0.){
+			_error_("surface slope is zero");
+		}
+		if(normds<1.e-5){
+			ds[0] = ds[0]/normds*1.e+5;
+			ds[1] = ds[1]/normds*1.e+5;
+			normds = 1.e-5;
+		}
+
+		mu0   = pow(2.,(1-3*n)/(2.*n)) * B;
+		Gamma = pow(rhog,n) * pow(Hstar,2*(n+1)) * pow(Hstar/Lstar,2*(n+1)) * 1./pow(mu0,n);
+
+		D0[i] = Gamma*pow(ds[0]*ds[0]+ds[1]*ds[1],(n-1)/2)/(n+2);
+	}
+
+	/*Add input*/
+	element->AddInput(BalancethicknessD0Enum,D0,element->GetElementType());
+	//if(surfaceslopex_input && surfaceslopey_input){
+	//	element->DeleteInput(SurfaceSlopeXEnum);
+	//	element->DeleteInput(SurfaceSlopeYEnum);
+	//}
+	
+	/*Clean up and return*/
+	xDelete<IssmDouble>(D0);
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+}/*}}}*/
+ElementMatrix* Balancethickness2Analysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* Balancethickness2Analysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble  Jdet,D0,omega;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* omega_input = element->GetInput(BalancethicknessOmegaEnum); _assert_(omega_input);
+	Input* D0_input    = element->GetInput(BalancethicknessD0Enum);
+	if(!D0_input){
+		this->CreateD0(element);
+		D0_input = element->GetInput(BalancethicknessD0Enum); _assert_(D0_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		D0_input->GetInputValue(&D0,gauss);
+		omega_input->GetInputValue(&omega,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += D0*exp(omega)*gauss->weight*Jdet*(dbasis[0*numnodes+i]*dbasis[0*numnodes+j] + dbasis[1*numnodes+i]*dbasis[1*numnodes+j]);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* Balancethickness2Analysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble  dhdt,mb,ms,Jdet;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* ms_input   = element->GetInput(SmbMassBalanceEnum);                _assert_(ms_input);
+	Input* mb_input   = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);       _assert_(mb_input);
+	Input* dhdt_input = element->GetInput(BalancethicknessThickeningRateEnum);            _assert_(dhdt_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		ms_input->GetInputValue(&ms,gauss);
+		mb_input->GetInputValue(&mb,gauss);
+		dhdt_input->GetInputValue(&dhdt,gauss);
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(
+					(ms-mb-dhdt)*basis[i]
+					);
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           Balancethickness2Analysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+		element->GetSolutionFromInputsOneDof(solution,SurfaceEnum);
+}/*}}}*/
+void           Balancethickness2Analysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           Balancethickness2Analysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble  ds[2],s,b,D;
+	IssmDouble* xyz_list = NULL;
+
+	//element->InputUpdateFromSolutionOneDof(solution,ThicknessEnum);
+	element->InputUpdateFromSolutionOneDof(solution,SurfaceEnum);
+
+	/*Fetch number of vertices and allocate velocity vectors*/
+	int numvertices = element->GetNumberOfVertices();
+	IssmDouble* vel_list = xNew<IssmDouble>(numvertices);
+	IssmDouble* vx_list  = xNew<IssmDouble>(numvertices);
+	IssmDouble* vy_list  = xNew<IssmDouble>(numvertices);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* D_input   = element->GetInput(BalancethicknessDiffusionCoefficientEnum);
+	Input* H_input   = element->GetInput(ThicknessEnum);                            _assert_(H_input);
+	Input* s_input   = element->GetInput(SurfaceEnum);                              _assert_(s_input);
+	Input* b_input   = element->GetInput(BaseEnum);                                 _assert_(b_input);
+
+	/*Calculate velocities*/
+	Gauss* gauss=element->NewGauss();
+	for(int iv=0;iv<numvertices;iv++){
+		gauss->GaussVertex(iv);
+
+		if(D_input){
+			D_input->GetInputValue(&D,gauss);
+		}
+		else{
+			D = 0.;
+		}
+		b_input->GetInputValue(&b,gauss);
+		s_input->GetInputValue(&s,gauss);
+		s_input->GetInputDerivativeValue(&ds[0],xyz_list,gauss);
+
+		vx_list[iv] = -1./(s-b)*D*ds[0];
+		vy_list[iv] = -1./(s-b)*D*ds[1];
+		vel_list[iv] = sqrt(pow(vx_list[iv],2) + pow(vy_list[iv],2));
+	}
+
+	/*Add vx and vy as inputs to the tria element: */
+	element->AddInput(VxEnum,vx_list,P1Enum);
+	element->AddInput(VyEnum,vy_list,P1Enum);
+	element->AddInput(VelEnum,vel_list,P1Enum);
+
+	/*Free ressources:*/
+	delete gauss;
+	xDelete<IssmDouble>(vy_list);
+	xDelete<IssmDouble>(vx_list);
+	xDelete<IssmDouble>(vel_list);
+	xDelete<IssmDouble>(xyz_list);
+}/*}}}*/
+void           Balancethickness2Analysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/Balancethickness2Analysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/Balancethickness2Analysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/Balancethickness2Analysis.h	(revision 21239)
@@ -0,0 +1,34 @@
+/*! \file Balancethickness2Analysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _Balancethickness2Analysis_
+#define _Balancethickness2Analysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class Balancethickness2Analysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		void           CreateD0(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/BalancethicknessAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/BalancethicknessAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/BalancethicknessAnalysis.cpp	(revision 21239)
@@ -0,0 +1,615 @@
+#include "./BalancethicknessAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void BalancethicknessAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*Fetch parameters: */
+	int    stabilization;	
+	iomodel->FindConstant(&stabilization,"md.balancethickness.stabilization");
+
+	/*Do not add constraints in DG*/
+	if(stabilization!=3){
+		IoModelToConstraintsx(constraints,iomodel,"md.balancethickness.spcthickness",BalancethicknessAnalysisEnum,P1Enum);
+	}
+
+}/*}}}*/
+void BalancethicknessAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Intermediary*/
+	int element;
+	int stabilization;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&stabilization,"md.balancethickness.stabilization");
+
+	/*Loads only in DG*/
+	if (stabilization==3){
+
+		/*Get faces and elements*/
+		CreateFaces(iomodel);
+		iomodel->FetchData(1,"md.geometry.thickness");
+
+		/*First load data:*/
+		for(int i=0;i<iomodel->numberoffaces;i++){
+
+			/*Get left and right elements*/
+			element=iomodel->faces[4*i+2]-1; //faces are [node1 node2 elem1 elem2]
+
+			/*Now, if this element is not in the partition, pass: */
+			if(!iomodel->my_elements[element]) continue;
+
+			/* Add load */
+			loads->AddObject(new Numericalflux(iomodel->loadcounter+i+1,i,i,iomodel,BalancethicknessAnalysisEnum));
+		}
+
+		/*Free data: */
+		iomodel->DeleteData(1,"md.geometry.thickness");
+	}
+}/*}}}*/
+void BalancethicknessAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	int  stabilization;
+	iomodel->FindConstant(&stabilization,"md.balancethickness.stabilization");
+
+	/*Check in 3d*/
+	if(stabilization==3 && iomodel->domaintype==Domain3DEnum) _error_("DG 3d not implemented yet");
+
+	/*First fetch data: */
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	if(stabilization!=3){
+		::CreateNodes(nodes,iomodel,BalancethicknessAnalysisEnum,P1Enum);
+	}
+	else{
+		::CreateNodes(nodes,iomodel,BalancethicknessAnalysisEnum,P1DGEnum);
+	}
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  BalancethicknessAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void BalancethicknessAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int    stabilization,finiteelement;
+
+	/*Fetch data needed: */
+	iomodel->FindConstant(&stabilization,"md.balancethickness.stabilization");
+
+	/*Finite element type*/
+	finiteelement = P1Enum;
+	if(stabilization==3){
+		finiteelement = P1DGEnum;
+	}
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(elements,"md.slr.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vy",VyEnum);
+	iomodel->FetchDataToInput(elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(elements,"md.smb.mass_balance",SmbMassBalanceEnum);
+	iomodel->FetchDataToInput(elements,"md.balancethickness.thickening_rate",BalancethicknessThickeningRateEnum);
+
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+}/*}}}*/
+void BalancethicknessAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+	parameters->AddObject(iomodel->CopyConstantObject("md.balancethickness.stabilization",BalancethicknessStabilizationEnum));
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           BalancethicknessAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* BalancethicknessAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* BalancethicknessAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* BalancethicknessAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	if(!element->IsOnBase()) return NULL;
+	Element* basalelement = element->SpawnBasalElement();
+
+	ElementMatrix* Ke = NULL;
+	switch(element->FiniteElement()){
+		case P1Enum: case P2Enum:
+			Ke = CreateKMatrixCG(basalelement);
+			break;
+		case P1DGEnum:
+			Ke = CreateKMatrixDG(basalelement);
+			break;
+		default:
+			_error_("Element type " << EnumToStringx(element->FiniteElement()) << " not supported yet");
+	}
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+ElementMatrix* BalancethicknessAnalysis::CreateKMatrixCG(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	int        stabilization;
+	int        domaintype;
+	IssmDouble Jdet,D_scalar,h;
+	IssmDouble vel,vx,vy,dvxdx,dvydy;
+	IssmDouble dvx[2],dvy[2];
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    B      = xNew<IssmDouble>(2*numnodes);
+	IssmDouble*    Bprime = xNew<IssmDouble>(2*numnodes);
+	IssmDouble     D[2][2];
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&domaintype,DomainTypeEnum);
+	element->FindParam(&stabilization,BalancethicknessStabilizationEnum);
+	Input* vxaverage_input=NULL;
+	Input* vyaverage_input=NULL;
+	if(domaintype==Domain2DhorizontalEnum){
+		vxaverage_input=element->GetInput(VxEnum); _assert_(vxaverage_input);
+		vyaverage_input=element->GetInput(VyEnum); _assert_(vyaverage_input);
+	}
+	else{
+		vxaverage_input=element->GetInput(VxAverageEnum); _assert_(vxaverage_input);
+		vyaverage_input=element->GetInput(VyAverageEnum); _assert_(vyaverage_input);
+	}
+	h = element->CharacteristicLength();
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		GetB(B,element,xyz_list,gauss);
+		GetBprime(Bprime,element,xyz_list,gauss);
+
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+		vxaverage_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		vyaverage_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+		dvxdx=dvx[0];
+		dvydy=dvy[1];
+		D_scalar=gauss->weight*Jdet;
+
+		D[0][0]=D_scalar*dvxdx;
+		D[0][1]=0.;
+		D[1][0]=0.;
+		D[1][1]=D_scalar*dvydy;
+		TripleMultiply(B,2,numnodes,1,
+					&D[0][0],2,2,0,
+					B,2,numnodes,0,
+					&Ke->values[0],1);
+
+		D[0][0]=D_scalar*vx;
+		D[1][1]=D_scalar*vy;
+		TripleMultiply(B,2,numnodes,1,
+					&D[0][0],2,2,0,
+					Bprime,2,numnodes,0,
+					&Ke->values[0],1);
+
+		if(stabilization==1){
+			/*Streamline upwinding*/
+			vel=sqrt(vx*vx+vy*vy);
+			D[0][0]=h/(2*vel)*vx*vx;
+			D[1][0]=h/(2*vel)*vy*vx;
+			D[0][1]=h/(2*vel)*vx*vy;
+			D[1][1]=h/(2*vel)*vy*vy;
+		}
+		else if(stabilization==2){
+			/*SSA*/
+			vxaverage_input->GetInputAverage(&vx);
+			vyaverage_input->GetInputAverage(&vy);
+			D[0][0]=h/2.0*fabs(vx);
+			D[0][1]=0.;
+			D[1][0]=0.;
+			D[1][1]=h/2.0*fabs(vy);
+		}
+		if(stabilization==1 || stabilization==2){
+			D[0][0]=D_scalar*D[0][0];
+			D[1][0]=D_scalar*D[1][0];
+			D[0][1]=D_scalar*D[0][1];
+			D[1][1]=D_scalar*D[1][1];
+			TripleMultiply(Bprime,2,numnodes,1,
+						&D[0][0],2,2,0,
+						Bprime,2,numnodes,0,
+						&Ke->values[0],1);
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(Bprime);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementMatrix* BalancethicknessAnalysis::CreateKMatrixDG(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	int        domaintype;
+	IssmDouble Jdet,D_scalar,vx,vy,dvxdx,dvydy,vel;
+	IssmDouble dvx[2],dvy[2];
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    B      = xNew<IssmDouble>(2*numnodes);
+	IssmDouble*    Bprime = xNew<IssmDouble>(2*numnodes);
+	IssmDouble     D[2][2];
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&domaintype,DomainTypeEnum);
+	Input* vxaverage_input=NULL;
+	Input* vyaverage_input=NULL;
+	if(domaintype==Domain2DhorizontalEnum){
+		vxaverage_input=element->GetInput(VxEnum); _assert_(vxaverage_input);
+		vyaverage_input=element->GetInput(VyEnum); _assert_(vyaverage_input);
+	}
+	else{
+		vxaverage_input=element->GetInput(VxAverageEnum); _assert_(vxaverage_input);
+		vyaverage_input=element->GetInput(VyAverageEnum); _assert_(vyaverage_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+		vxaverage_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		vyaverage_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+		D_scalar=gauss->weight*Jdet;
+
+		/*WARNING: B and Bprime are inverted compared to CG*/
+		GetB(Bprime,element,xyz_list,gauss);
+		GetBprime(B,element,xyz_list,gauss);
+
+		D_scalar = - gauss->weight*Jdet;
+		D[0][0]  = D_scalar*vx;
+		D[0][1]  = 0.;
+		D[1][0]  = 0.;
+		D[1][1]  = D_scalar*vy;
+		TripleMultiply(B,2,numnodes,1,
+					&D[0][0],2,2,0,
+					Bprime,2,numnodes,0,
+					&Ke->values[0],1);
+
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(Bprime);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* BalancethicknessAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	if(!element->IsOnBase()) return NULL;
+	Element* basalelement = element->SpawnBasalElement();
+
+	ElementVector* pe = NULL;
+	switch(element->FiniteElement()){
+		case P1Enum: case P2Enum:
+			pe = CreatePVectorCG(basalelement);
+			break;
+		case P1DGEnum:
+			pe = CreatePVectorDG(basalelement);
+			break;
+		default:
+			_error_("Element type " << EnumToStringx(element->FiniteElement()) << " not supported yet");
+	}
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return pe;
+}/*}}}*/
+ElementVector* BalancethicknessAnalysis::CreatePVectorCG(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble  dhdt,mb,ms,Jdet;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* mb_input   = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);       _assert_(mb_input);
+	Input* ms_input   = element->GetInput(SmbMassBalanceEnum);     _assert_(ms_input);
+	Input* dhdt_input = element->GetInput(BalancethicknessThickeningRateEnum); _assert_(dhdt_input);
+
+	/*Initialize mb_correction to 0, do not forget!:*/
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		ms_input->GetInputValue(&ms,gauss);
+		mb_input->GetInputValue(&mb,gauss);
+		dhdt_input->GetInputValue(&dhdt,gauss);
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(ms-mb-dhdt)*basis[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+ElementVector* BalancethicknessAnalysis::CreatePVectorDG(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble  dhdt,mb,ms,Jdet;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* mb_input   = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);       _assert_(mb_input);
+	Input* ms_input   = element->GetInput(SmbMassBalanceEnum);     _assert_(ms_input);
+	Input* dhdt_input = element->GetInput(BalancethicknessThickeningRateEnum); _assert_(dhdt_input);
+
+	/*Initialize mb_correction to 0, do not forget!:*/
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		ms_input->GetInputValue(&ms,gauss);
+		mb_input->GetInputValue(&mb,gauss);
+		dhdt_input->GetInputValue(&dhdt,gauss);
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(ms-mb-dhdt)*basis[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           BalancethicknessAnalysis::GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3] where Bi is of size 3*NDOF2. 
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi=[ N ]
+	 *          [ N ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B_prog has been allocated already, of size: 2x(NDOF1*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions*/
+	IssmDouble* basis=xNew<IssmDouble>(numnodes);
+	element->NodalFunctions(basis,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		B[numnodes*0+i] = basis[i];
+		B[numnodes*1+i] = basis[i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           BalancethicknessAnalysis::GetBprime(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B'  matrix. B'=[B1' B2' B3'] where Bi' is of size 3*NDOF2. 
+	 * For node i, Bi' can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi_prime=[ dN/dx ]
+	 *                [ dN/dy ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B' has been allocated already, of size: 3x(NDOF2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(2*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B': */
+	for(int i=0;i<numnodes;i++){
+		Bprime[numnodes*0+i] = dbasis[0*numnodes+i];
+		Bprime[numnodes*1+i] = dbasis[1*numnodes+i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+
+}/*}}}*/
+void           BalancethicknessAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           BalancethicknessAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	/* WARNING: this gradient is valid for Soft balance thickness only */
+
+	/*If on water, grad = 0: */
+	if(!element->IsIceInElement()) return;
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble thickness,thicknessobs,dH[3],dp[3];
+	IssmDouble  vx,vy,vel,dvx[2],dvy[2],dhdt,basal_melting,surface_mass_balance;
+	IssmDouble *xyz_list= NULL;
+
+	/*Get list of cost functions*/
+	int *responses = NULL;
+	int  num_responses,resp,solution;
+	element->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	element->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+	element->FindParam(&solution,SolutionTypeEnum);
+	if(solution!=BalancethicknessSoftSolutionEnum) _error_("not implemented yet");
+	if(control_type!=ThicknessEnum)                _error_("Control "<<EnumToStringx(control_type)<<" not supported");
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* dbasis        = xNew<IssmDouble>(2*numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* thickness_input            = element->GetInput(ThicknessEnum);                           _assert_(thickness_input);
+	Input* thicknessobs_input         = element->GetInput(InversionThicknessObsEnum);               _assert_(thicknessobs_input);
+	Input* weights_input              = element->GetInput(InversionCostFunctionsCoefficientsEnum);  _assert_(weights_input);
+	Input* vx_input                   = element->GetInput(VxEnum);                                  _assert_(vx_input);
+	Input* vy_input                   = element->GetInput(VyEnum);                                  _assert_(vy_input);
+	Input* surface_mass_balance_input = element->GetInput(SmbMassBalanceEnum);          _assert_(surface_mass_balance_input);
+	Input* basal_melting_input        = element->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(basal_melting_input);
+	Input* dhdt_input                 = element->GetInput(BalancethicknessThickeningRateEnum);      _assert_(dhdt_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		thickness_input->GetInputValue(&thickness, gauss);
+		thickness_input->GetInputDerivativeValue(&dH[0],xyz_list,gauss);
+		thicknessobs_input->GetInputValue(&thicknessobs, gauss);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+		element->NodalFunctionsP1Derivatives(dbasis,xyz_list,gauss);
+
+		/*Deal with first part (partial derivative a J with respect to k)*/
+		for(resp=0;resp<num_responses;resp++){
+
+			weights_input->GetInputValue(&weight,gauss,responses[resp]);
+
+			switch(responses[resp]){
+				case ThicknessAbsMisfitEnum:
+					for(int i=0;i<numvertices;i++) ge[i]+= (thicknessobs-thickness)*weight*Jdet*gauss->weight*basis[i];
+					break;
+				case ThicknessAbsGradientEnum:
+					for(int i=0;i<numvertices;i++) ge[i]+= - weight*dH[0]*dbasis[0*numvertices+i]*Jdet*gauss->weight;
+					for(int i=0;i<numvertices;i++) ge[i]+= - weight*dH[1]*dbasis[1*numvertices+i]*Jdet*gauss->weight;
+					break;
+				case ThicknessAlongGradientEnum:
+					vx_input->GetInputValue(&vx,gauss);
+					vy_input->GetInputValue(&vy,gauss);
+					vel = sqrt(vx*vx+vy*vy);
+					vx  = vx/(vel+1.e-9);
+					vy  = vy/(vel+1.e-9);
+					for(int i=0;i<numvertices;i++) ge[i]+= - weight*(dH[0]*vx+dH[1]*vy)*(dbasis[0*numvertices+i]*vx+dbasis[1*numvertices+i]*vy)*Jdet*gauss->weight;
+					break;
+				case ThicknessAcrossGradientEnum:
+					vx_input->GetInputValue(&vx,gauss);
+					vy_input->GetInputValue(&vy,gauss);
+					vel = sqrt(vx*vx+vy*vy);
+					vx  = vx/(vel+1.e-9);
+					vy  = vy/(vel+1.e-9);
+					for(int i=0;i<numvertices;i++) ge[i]+= - weight*(dH[0]*(-vy)+dH[1]*vx)*(dbasis[0*numvertices+i]*(-vy)+dbasis[1*numvertices+i]*vx)*Jdet*gauss->weight;
+					break;
+				case BalancethicknessMisfitEnum:
+					surface_mass_balance_input->GetInputValue(&surface_mass_balance,gauss);
+					basal_melting_input->GetInputValue(&basal_melting,gauss);
+					dhdt_input->GetInputValue(&dhdt,gauss);
+					vx_input->GetInputValue(&vx,gauss);
+					vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+					vy_input->GetInputValue(&vy,gauss);
+					vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+					for(int i=0;i<numvertices;i++){
+						ge[i]+= - weight*Jdet*gauss->weight*(
+							(vx*dH[0]+vy*dH[1] + thickness*(dvx[0]+dvy[1]))*(vx*dbasis[0*numvertices+i]+ vy*dbasis[1*numvertices+i] + basis[i]*(dvx[0]+dvy[1]))
+							-(surface_mass_balance-basal_melting-dhdt)*(vx*dbasis[0*numvertices+i]+ vy*dbasis[1*numvertices+i] + basis[i]*(dvx[0]+dvy[1]))
+							);
+					}
+					break;
+				default:
+					_error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
+			}
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	xDelete<int>(responses);
+	delete gauss;
+
+
+}/*}}}*/
+void           BalancethicknessAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->InputUpdateFromSolutionOneDof(solution,ThicknessEnum);
+			break;
+		case Domain3DEnum:
+			element->InputUpdateFromSolutionOneDofCollapsed(solution,ThicknessEnum);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}/*}}}*/
+void           BalancethicknessAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/BalancethicknessAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/BalancethicknessAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/BalancethicknessAnalysis.h	(revision 21239)
@@ -0,0 +1,39 @@
+/*! \file BalancethicknessAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _BalancethicknessAnalysis_
+#define _BalancethicknessAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class BalancethicknessAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementMatrix* CreateKMatrixCG(Element* element);
+		ElementMatrix* CreateKMatrixDG(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		ElementVector* CreatePVectorCG(Element* element);
+		ElementVector* CreatePVectorDG(Element* element);
+		void           GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBprime(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/BalancethicknessSoftAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/BalancethicknessSoftAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/BalancethicknessSoftAnalysis.cpp	(revision 21239)
@@ -0,0 +1,56 @@
+#include "./BalancethicknessSoftAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+int  BalancethicknessSoftAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void BalancethicknessSoftAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void BalancethicknessSoftAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void BalancethicknessSoftAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void BalancethicknessSoftAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void BalancethicknessSoftAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           BalancethicknessSoftAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* BalancethicknessSoftAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* BalancethicknessSoftAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* BalancethicknessSoftAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+ElementVector* BalancethicknessSoftAnalysis::CreatePVector(Element* element){/*{{{*/
+_error_("not implemented yet");
+}/*}}}*/
+void BalancethicknessSoftAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void BalancethicknessSoftAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void BalancethicknessSoftAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void BalancethicknessSoftAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/BalancethicknessSoftAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/BalancethicknessSoftAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/BalancethicknessSoftAnalysis.h	(revision 21239)
@@ -0,0 +1,33 @@
+/*! \file BalancethicknessSoftAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _BalancethicknessSoftAnalysis_
+#define _BalancethicknessSoftAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class BalancethicknessSoftAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/BalancevelocityAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/BalancevelocityAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/BalancevelocityAnalysis.cpp	(revision 21239)
@@ -0,0 +1,264 @@
+#include "./BalancevelocityAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void BalancevelocityAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*No constraints for now*/
+	//IoModelToConstraintsx(constraints,iomodel,"md.balancethickness.spcthickness",BalancevelocityAnalysisEnum,P1Enum);
+}/*}}}*/
+void BalancevelocityAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*No loads*/
+}/*}}}*/
+void BalancevelocityAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	/*Check in 3d*/
+	if(iomodel->domaintype==Domain3DEnum) _error_("DG 3d not implemented yet");
+
+	/*First fetch data: */
+	::CreateNodes(nodes,iomodel,BalancevelocityAnalysisEnum,P1Enum);
+}/*}}}*/
+int  BalancevelocityAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void BalancevelocityAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(elements,"md.slr.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vy",VyEnum);
+	iomodel->FetchDataToInput(elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(elements,"md.smb.mass_balance",SmbMassBalanceEnum);
+	iomodel->FetchDataToInput(elements,"md.balancethickness.thickening_rate",BalancethicknessThickeningRateEnum);
+
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+}/*}}}*/
+void BalancevelocityAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           BalancevelocityAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* BalancevelocityAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* BalancevelocityAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* BalancevelocityAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble  dhdt,mb,ms,Jdet;
+	IssmDouble  h,gamma,thickness;
+	IssmDouble  hnx,hny,dhnx[2],dhny[2];
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    B      = xNew<IssmDouble>(2*numnodes);
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes);
+	IssmDouble*    HNx    = xNew<IssmDouble>(numnodes);
+	IssmDouble*    HNy    = xNew<IssmDouble>(numnodes);
+	IssmDouble*    H      = xNew<IssmDouble>(numnodes);
+	IssmDouble*    Nx     = xNew<IssmDouble>(numnodes);
+	IssmDouble*    Ny     = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all Inputs and parameters: */
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* H_input = element->GetInput(ThicknessEnum); _assert_(H_input);
+	h = element->CharacteristicLength();
+
+	/*Get vector N for all nodes and build HNx and HNy*/
+	element->GetInputListOnNodes(Nx,DrivingStressXEnum);
+	element->GetInputListOnNodes(Ny,DrivingStressYEnum);
+	element->GetInputListOnNodes(H,ThicknessEnum);
+	for(int i=0;i<numnodes;i++){
+		IssmDouble norm=sqrt(Nx[i]*Nx[i]+Ny[i]*Ny[i]+1.e-10);
+		HNx[i] = -H[i]*Nx[i]/norm;
+		HNy[i] = -H[i]*Ny[i]/norm;
+	}
+
+	/*Start looping on the number of gaussian points:*/
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		H_input->GetInputValue(&thickness,gauss);
+		if(thickness<50.) thickness=50.;
+		element->ValueP1DerivativesOnGauss(&dhnx[0],HNx,xyz_list,gauss);
+		element->ValueP1DerivativesOnGauss(&dhny[0],HNy,xyz_list,gauss);
+		element->ValueP1OnGauss(&hnx,HNx,gauss);
+		element->ValueP1OnGauss(&hny,HNy,gauss);
+
+		gamma=h/(2.*thickness+1.e-10);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += gauss->weight*Jdet*(
+							(basis[i]+gamma*(basis[i]*(dhnx[0]+dhny[1]) + dbasis[0*numnodes+i]*hnx + dbasis[1*numnodes+i]*hny))*
+							(basis[j]*(dhnx[0]+dhny[1])  + dbasis[0*numnodes+j]*hnx + dbasis[1*numnodes+j]*hny)
+							);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(H);
+	xDelete<IssmDouble>(Nx);
+	xDelete<IssmDouble>(Ny);
+	xDelete<IssmDouble>(HNx);
+	xDelete<IssmDouble>(HNy);
+	xDelete<IssmDouble>(B);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* BalancevelocityAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries */
+	IssmDouble dhdt,mb,ms,Jdet;
+	IssmDouble gamma,thickness;
+	IssmDouble hnx,hny,dhnx[2],dhny[2];
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe    = basalelement->NewElementVector();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(numnodes*2);
+	IssmDouble*    H      = xNew<IssmDouble>(numnodes);
+	IssmDouble*    Nx     = xNew<IssmDouble>(numnodes);
+	IssmDouble*    Ny     = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	Input* ms_input   = basalelement->GetInput(SmbMassBalanceEnum);          _assert_(ms_input);
+	Input* mb_input   = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(mb_input);
+	Input* dhdt_input = basalelement->GetInput(BalancethicknessThickeningRateEnum);      _assert_(dhdt_input);
+	Input* H_input    = basalelement->GetInput(ThicknessEnum);                           _assert_(H_input);
+	IssmDouble h = basalelement->CharacteristicLength();
+
+	/*Get vector N for all nodes*/
+	basalelement->GetInputListOnNodes(Nx,DrivingStressXEnum);
+	basalelement->GetInputListOnNodes(Ny,DrivingStressYEnum);
+	basalelement->GetInputListOnNodes(H,ThicknessEnum);
+	for(int i=0;i<numnodes;i++){
+		IssmDouble norm=sqrt(Nx[i]*Nx[i]+Ny[i]*Ny[i]+1.e-10);
+		Nx[i] = -H[i]*Nx[i]/norm;
+		Ny[i] = -H[i]*Ny[i]/norm;
+	}
+
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+		basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		element->ValueP1DerivativesOnGauss(&dhnx[0],Nx,xyz_list,gauss);
+		element->ValueP1DerivativesOnGauss(&dhny[0],Ny,xyz_list,gauss);
+		element->ValueP1OnGauss(&hnx,Nx,gauss);
+		element->ValueP1OnGauss(&hny,Ny,gauss);
+
+		ms_input->GetInputValue(&ms,gauss);
+		mb_input->GetInputValue(&mb,gauss);
+		dhdt_input->GetInputValue(&dhdt,gauss);
+		H_input->GetInputValue(&thickness,gauss);
+		if(thickness<50.) thickness=50.;
+
+		gamma=h/(2.*thickness+1.e-10);
+
+		for(int i=0;i<numnodes;i++){
+			pe->values[i]+=Jdet*gauss->weight*(ms-mb-dhdt)*( basis[i] + gamma*(basis[i]*(dhnx[0]+dhny[1])+hnx*dbasis[0*numnodes+i] + hny*dbasis[1*numnodes+i]));
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(H);
+	xDelete<IssmDouble>(Nx);
+	xDelete<IssmDouble>(Ny);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return pe;
+}/*}}}*/
+void           BalancevelocityAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           BalancevelocityAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           BalancevelocityAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->InputUpdateFromSolutionOneDof(solution,VelEnum);
+			break;
+		case Domain3DEnum:
+			element->InputUpdateFromSolutionOneDofCollapsed(solution,VelEnum);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}/*}}}*/
+void           BalancevelocityAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/BalancevelocityAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/BalancevelocityAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/BalancevelocityAnalysis.h	(revision 21239)
@@ -0,0 +1,33 @@
+/*! \file BalancevelocityAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _BalancevelocityAnalysis_
+#define _BalancevelocityAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class BalancevelocityAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/DamageEvolutionAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 21239)
@@ -0,0 +1,841 @@
+#include "./DamageEvolutionAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void DamageEvolutionAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	int finiteelement;
+	iomodel->FindConstant(&finiteelement,"md.damage.elementinterp");
+
+	/*Fetch parameters: */
+	int stabilization;
+	iomodel->FindConstant(&stabilization,"md.damage.stabilization");
+
+	/*Do not add constraints in DG,  they are weakly imposed*/
+	if(stabilization!=3){
+		IoModelToConstraintsx(constraints,iomodel,"md.damage.spcdamage",DamageEvolutionAnalysisEnum,finiteelement);
+	}
+
+	/*FCT, constraints are imposed using penalties*/
+	if(stabilization==4){
+		constraints->ActivatePenaltyMethod(DamageEvolutionAnalysisEnum);
+	}
+}/*}}}*/
+void DamageEvolutionAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Nothing for now*/
+
+}/*}}}*/
+void DamageEvolutionAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	int finiteelement;
+
+	iomodel->FindConstant(&finiteelement,"md.damage.elementinterp");
+	::CreateNodes(nodes,iomodel,DamageEvolutionAnalysisEnum,finiteelement);
+}/*}}}*/
+int  DamageEvolutionAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void DamageEvolutionAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int finiteelement;
+	bool   ismovingfront;
+
+	iomodel->FindConstant(&finiteelement,"md.damage.elementinterp");
+	iomodel->FindConstant(&ismovingfront,"md.transient.ismovingfront");
+
+	/*Update elements: */
+	iomodel->FetchData(1,"md.flowequation.element_equation");
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+	iomodel->DeleteData(1,"md.flowequation.element_equation");
+
+	/*What input do I need to run my damage evolution model?*/
+	iomodel->FetchDataToInput(elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vy",VyEnum);
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchDataToInput(elements,"md.initialization.vz",VzEnum);
+	iomodel->FetchDataToInput(elements,"md.damage.D",DamageDEnum);
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.pressure",PressureEnum);
+
+}/*}}}*/
+void DamageEvolutionAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	/*Intermediaries*/
+	int         numoutputs;
+	char**      requestedoutputs = NULL;
+
+	/*retrieve some parameters: */
+	parameters->AddObject(iomodel->CopyConstantObject("md.damage.law",DamageLawEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.damage.stabilization",DamageStabilizationEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.damage.maxiter",DamageMaxiterEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.damage.max_damage",DamageMaxDamageEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.damage.elementinterp",DamageElementinterpEnum));
+
+	/*Requested outputs*/
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.damage.requested_outputs");
+	parameters->AddObject(new IntParam(DamageEvolutionNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(DamageEvolutionRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.damage.requested_outputs");
+
+	/*Retrieve law dependent parameters: */
+	int law;
+	iomodel->FindConstant(&law,"md.damage.law");
+	if (law==0){
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.stress_threshold",DamageStressThresholdEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.kappa",DamageKappaEnum));
+	}
+	else if (law>0){
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.c1",DamageC1Enum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.c2",DamageC2Enum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.c3",DamageC3Enum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.c4",DamageC4Enum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.stress_threshold",DamageStressThresholdEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.kappa",DamageKappaEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.healing",DamageHealingEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.equiv_stress",DamageEquivStressEnum));
+	}
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           DamageEvolutionAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           DamageEvolutionAnalysis::CreateDamageFInput(Element* element){/*{{{*/
+
+	/*Fetch number of vertices and allocate output*/
+	int numnodes = element->GetNumberOfNodes();
+	IssmDouble* f   = xNew<IssmDouble>(numnodes);
+
+	/*Calculate damage evolution source term: */
+	for (int i=0;i<numnodes;i++){
+
+		/* healing could be handled here */
+
+		/* no source term; damage handled in stress balance */
+		f[i]=0.;
+	}
+
+	/*Add input*/
+	element->AddInput(DamageFEnum,f,element->GetElementType());
+	
+	/*Clean up and return*/
+	xDelete<IssmDouble>(f);
+}/*}}}*/
+void           DamageEvolutionAnalysis::CreateDamageFInputExp(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble epsf,stress_threshold,eps0;
+	IssmDouble damage,B,n,epseff;
+	IssmDouble eps_xx,eps_yy,eps_xy,eps1,eps2,epstmp;
+	int domaintype;
+
+	/*Fetch number of vertices and allocate output*/
+	int numnodes = element->GetNumberOfNodes();
+	IssmDouble* f   = xNew<IssmDouble>(numnodes);
+
+	/*retrieve parameters:*/
+	element->FindParam(&epsf,DamageC1Enum);
+	element->FindParam(&stress_threshold,DamageStressThresholdEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Compute stress tensor: */
+	element->ComputeStrainRate();
+
+	/*retrieve what we need: */
+	Input* eps_xx_input  = element->GetInput(StrainRatexxEnum);     _assert_(eps_xx_input);
+	Input* eps_xy_input  = element->GetInput(StrainRatexyEnum);     _assert_(eps_xy_input);
+	Input* eps_yy_input  = element->GetInput(StrainRateyyEnum);     _assert_(eps_yy_input);
+	Input*  n_input=element->GetInput(MaterialsRheologyNEnum); _assert_(n_input);
+	Input* damage_input = NULL;
+	Input* B_input = NULL;
+	if(domaintype==Domain2DhorizontalEnum){
+		damage_input = element->GetInput(DamageDbarEnum); 	_assert_(damage_input);
+		B_input=element->GetInput(MaterialsRheologyBbarEnum); _assert_(B_input);
+	}
+	else{
+		damage_input = element->GetInput(DamageDEnum);   _assert_(damage_input);
+		B_input=element->GetInput(MaterialsRheologyBEnum); _assert_(B_input);
+	}
+
+	/*Calculate damage evolution source term: */
+	Gauss* gauss=element->NewGauss();
+	for (int i=0;i<numnodes;i++){
+		gauss->GaussNode(element->GetElementType(),i);
+		
+		eps_xx_input->GetInputValue(&eps_xx,gauss);
+		eps_xy_input->GetInputValue(&eps_xy,gauss);
+		eps_yy_input->GetInputValue(&eps_yy,gauss);
+		B_input->GetInputValue(&B,gauss);
+		n_input->GetInputValue(&n,gauss);
+		damage_input->GetInputValue(&damage,gauss);
+	
+		/*Calculate principal effective strain rates*/
+		eps1=(eps_xx+eps_yy)/2.+sqrt(pow((eps_xx-eps_yy)/2.,2)+pow(eps_xy,2));
+		eps2=(eps_xx+eps_yy)/2.-sqrt(pow((eps_xx-eps_yy)/2.,2)+pow(eps_xy,2));
+		if(fabs(eps2)>fabs(eps1)){epstmp=eps2; eps2=eps1; eps1=epstmp;}
+
+		/*Calculate effective strain rate and threshold strain rate*/
+		epseff=1./sqrt(2.)*sqrt(eps1*eps1-eps1*eps2+eps2*eps2);
+		eps0=pow(stress_threshold/B,n);
+
+		if(epseff>eps0){
+			f[i]=1.-pow(eps0/epseff,1./n)*exp(-(epseff-eps0)/(epsf-eps0))-damage;
+		}
+		else f[i]=0;
+	}
+
+	/*Add input*/
+	element->AddInput(DamageFEnum,f,element->GetElementType());
+	
+	/*Clean up and return*/
+	xDelete<IssmDouble>(f);
+	delete gauss;
+}/*}}}*/
+void           DamageEvolutionAnalysis::CreateDamageFInputPralong(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble c1,c2,c3,healing,stress_threshold;
+	IssmDouble s_xx,s_xy,s_xz,s_yy,s_yz,s_zz,s1,s2,s3,stmp;
+	IssmDouble J2s,Chi,Psi,PosPsi,NegPsi;
+	IssmDouble damage,tau_xx,tau_xy,tau_xz,tau_yy,tau_yz,tau_zz,stressMaxPrincipal;
+	int equivstress,domaintype,dim;
+
+	/*Fetch number of vertices and allocate output*/
+	int numnodes = element->GetNumberOfNodes();
+	IssmDouble* f   = xNew<IssmDouble>(numnodes);
+
+	/*retrieve parameters:*/
+	element->FindParam(&c1,DamageC1Enum);
+	element->FindParam(&c2,DamageC2Enum);
+	element->FindParam(&c3,DamageC3Enum);
+	element->FindParam(&healing,DamageHealingEnum);
+	element->FindParam(&stress_threshold,DamageStressThresholdEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Get problem dimension*/
+	switch(domaintype){
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 3; break;
+		default: _error_("not implemented");
+	}
+	/*Compute stress tensor and Stress Max Principal: */
+	element->ComputeDeviatoricStressTensor();
+	if(dim==3){
+		/*Only works in 3d because the pressure is defined*/
+		element->StressMaxPrincipalCreateInput();
+	}
+	/*retrieve what we need: */
+	Input* tau_xx_input  = element->GetInput(DeviatoricStressxxEnum);     _assert_(tau_xx_input);
+	Input* tau_xy_input  = element->GetInput(DeviatoricStressxyEnum);     _assert_(tau_xy_input);
+	Input* tau_yy_input  = element->GetInput(DeviatoricStressyyEnum);     _assert_(tau_yy_input);
+	Input* tau_xz_input  = NULL;
+	Input* tau_yz_input  = NULL;
+	Input* tau_zz_input  = NULL;
+	Input* stressMaxPrincipal_input = NULL;
+	if(dim==3){
+		tau_xz_input  = element->GetInput(DeviatoricStressxzEnum);     _assert_(tau_xz_input);
+		tau_yz_input  = element->GetInput(DeviatoricStressyzEnum);     _assert_(tau_yz_input);
+		tau_zz_input  = element->GetInput(DeviatoricStresszzEnum);     _assert_(tau_zz_input);
+		stressMaxPrincipal_input = element->GetInput(StressMaxPrincipalEnum); _assert_(stressMaxPrincipal_input);
+	}
+	Input* damage_input = NULL;
+	if(domaintype==Domain2DhorizontalEnum){
+		damage_input = element->GetInput(DamageDbarEnum); 	_assert_(damage_input);
+	}
+	else{
+		damage_input = element->GetInput(DamageDEnum);   _assert_(damage_input);
+	}
+
+	/*retrieve the desired type of equivalent stress*/
+	element->FindParam(&equivstress,DamageEquivStressEnum);
+
+	/*Calculate damage evolution source term: */
+	Gauss* gauss=element->NewGauss();
+	for (int i=0;i<numnodes;i++){
+		gauss->GaussNode(element->GetElementType(),i);
+		
+		damage_input->GetInputValue(&damage,gauss);
+		tau_xx_input->GetInputValue(&tau_xx,gauss);
+		tau_xy_input->GetInputValue(&tau_xy,gauss);
+		tau_yy_input->GetInputValue(&tau_yy,gauss);
+		if(dim==3){
+			tau_xz_input->GetInputValue(&tau_xz,gauss);
+			tau_yz_input->GetInputValue(&tau_yz,gauss);
+			tau_zz_input->GetInputValue(&tau_zz,gauss);
+		}
+		/*Calculate effective stress components*/
+		s_xx=tau_xx/(1.-damage);
+		s_xy=tau_xy/(1.-damage);
+		s_yy=tau_yy/(1.-damage);
+		if(dim==3){
+			s_xz=tau_xz/(1.-damage);
+			s_yz=tau_yz/(1.-damage);
+			s_zz=tau_zz/(1.-damage);
+		}
+		/*Calculate principal effective stresses*/
+		if(dim==2){
+			s1=(s_xx+s_yy)/2.+sqrt(pow((s_xx-s_yy)/2.,2)+pow(s_xy,2));
+			s2=(s_xx+s_yy)/2.-sqrt(pow((s_xx-s_yy)/2.,2)+pow(s_xy,2));
+			if(fabs(s2)>fabs(s1)){stmp=s2; s2=s1; s1=stmp;}
+
+			if(equivstress==0){ /* von Mises */
+				Chi=sqrt(s1*s1-s1*s2+s2*s2);
+			}
+			else if(equivstress==1){ /* max principal stress */
+				Chi=s1;
+			}
+			Psi=Chi-stress_threshold;
+			NegPsi=max(-Chi,0.); /* healing only for compressive stresses */
+			PosPsi=max(Psi,0.);
+			f[i]= c1*(pow(PosPsi,c2) - healing*pow(NegPsi,c2))*pow((1./(1.-damage)),c3);
+		}
+		else{
+			if(equivstress==1){/* max principal stress */
+				stressMaxPrincipal_input->GetInputValue(&stressMaxPrincipal,gauss);
+				Chi=stressMaxPrincipal/(1.-damage);
+			}
+			else if(equivstress==0){/* von Mises */
+				Chi=sqrt(((s_xx-s_yy)*(s_xx-s_yy)+(s_yy-s_zz)*(s_yy-s_zz)+(s_zz-s_xx)*(s_zz-s_xx)+6.*(s_xy*s_xy+s_yz*s_yz+s_xz*s_xz))/2.);
+			}
+			Psi=Chi-stress_threshold;
+			NegPsi=max(-Chi,0.); /* healing only for compressive stresses */
+			PosPsi=max(Psi,0.);
+			f[i]= c1*(pow(PosPsi,c2) - healing*pow(NegPsi,c2))*pow((1./(1.-damage)),c3);
+		}
+	}
+	/*Add input*/
+	element->AddInput(DamageFEnum,f,element->GetElementType());
+	
+	/*Clean up and return*/
+	xDelete<IssmDouble>(f);
+	delete gauss;
+}/*}}}*/
+ElementVector* DamageEvolutionAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* DamageEvolutionAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* DamageEvolutionAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+	/*Intermediaries*/
+	int         domaintype,dim;
+	int         stabilization;
+	IssmDouble  Jdet,dt,D_scalar,h,hx,hy,hz;
+	IssmDouble  vel,vx,vy,vz,dvxdx,dvydy,dvzdz,dvx[3],dvy[3],dvz[3];
+	IssmDouble *xyz_list  = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 3; break;
+		default: _error_("Not implemented yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    B      = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    Bprime = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    D      = xNewZeroInit<IssmDouble>(dim*dim);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&stabilization,DamageStabilizationEnum);
+	Input* vx_input = element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input = element->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input = NULL;
+	if(dim==3){
+		vz_input=element->GetInput(VzEnum); _assert_(vz_input);
+	}
+
+	if(dim==2) h=element->CharacteristicLength();
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		
+		vx_input->GetInputValue(&vx,gauss);
+		vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+
+		if(dim==3){
+			vz_input->GetInputValue(&vz,gauss);
+			vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
+		}
+
+		D_scalar=gauss->weight*Jdet;
+		TripleMultiply(basis,1,numnodes,1,
+					&D_scalar,1,1,0,
+					basis,1,numnodes,0,
+					&Ke->values[0],1);
+
+		GetB(B,element,dim,xyz_list,gauss);
+		GetBprime(Bprime,element,dim,xyz_list,gauss);
+
+		dvxdx=dvx[0];
+		dvydy=dvy[1];
+		if(dim==3) dvzdz=dvz[2];
+		D_scalar=dt*gauss->weight*Jdet;
+
+		D[0*dim+0]=D_scalar*dvxdx;
+		D[1*dim+1]=D_scalar*dvydy;
+		if(dim==3) D[2*dim+2]=D_scalar*dvzdz;
+
+		TripleMultiply(B,dim,numnodes,1,
+					D,dim,dim,0,
+					B,dim,numnodes,0,
+					&Ke->values[0],1);
+
+		D[0*dim+0]=D_scalar*vx;
+		D[1*dim+1]=D_scalar*vy;
+		if(dim==3) D[2*dim+2]=D_scalar*vz;
+
+		TripleMultiply(B,dim,numnodes,1,
+					D,dim,dim,0,
+					Bprime,dim,numnodes,0,
+					&Ke->values[0],1);
+
+		if(stabilization==2){
+			if(dim==3){
+				vel=sqrt(vx*vx+vy*vy+vz*vz)+1.e-8;
+				D[0*dim+0]=h/(2.0*vel)*vx*vx;
+				D[1*dim+0]=h/(2.0*vel)*vy*vx;
+				D[2*dim+0]=h/(2.0*vel)*vz*vx;
+				D[0*dim+1]=h/(2.0*vel)*vx*vy;
+				D[1*dim+1]=h/(2.0*vel)*vy*vy;
+				D[2*dim+1]=h/(2.0*vel)*vy*vz;
+				D[0*dim+2]=h/(2.0*vel)*vx*vz;
+				D[1*dim+2]=h/(2.0*vel)*vy*vz;
+				D[2*dim+2]=h/(2.0*vel)*vz*vz;
+			}
+			else{
+				/*Streamline upwinding*/
+				vel=sqrt(vx*vx+vy*vy)+1.e-8;
+				D[0*dim+0]=h/(2.0*vel)*vx*vx;
+				D[1*dim+0]=h/(2.0*vel)*vy*vx;
+				D[0*dim+1]=h/(2.0*vel)*vx*vy;
+				D[1*dim+1]=h/(2.0*vel)*vy*vy;
+			}
+		}
+		else if(stabilization==1){
+			if(dim==2){
+				vx_input->GetInputAverage(&vx);
+				vy_input->GetInputAverage(&vy);
+				D[0*dim+0]=h/2.0*fabs(vx);
+				D[1*dim+1]=h/2.0*fabs(vy);
+			}
+			else if(dim==3){ 
+				element->ElementSizes(&hx,&hy,&hz);
+				vel=sqrt(vx*vx + vy*vy + vz*vz)+1.e-14;
+				h=sqrt( pow(hx*vx/vel,2) + pow(hy*vy/vel,2) + pow(hz*vz/vel,2));
+				D[0*dim+0]=h/(2.*vel)*fabs(vx*vx);  D[0*dim+1]=h/(2.*vel)*fabs(vx*vy); D[0*dim+2]=h/(2.*vel)*fabs(vx*vz);
+				D[1*dim+0]=h/(2.*vel)*fabs(vy*vx);  D[1*dim+1]=h/(2.*vel)*fabs(vy*vy); D[1*dim+2]=h/(2.*vel)*fabs(vy*vz);
+				D[2*dim+0]=h/(2.*vel)*fabs(vz*vx);  D[2*dim+1]=h/(2.*vel)*fabs(vz*vy); D[2*dim+2]=h/(2.*vel)*fabs(vz*vz);
+			}
+		}
+		if(stabilization==1 || stabilization==2){
+			if(dim==2){
+				D[0*dim+0]=D_scalar*D[0*dim+0];
+				D[1*dim+0]=D_scalar*D[1*dim+0];
+				D[0*dim+1]=D_scalar*D[0*dim+1];
+				D[1*dim+1]=D_scalar*D[1*dim+1];
+			}
+			else if(dim==3){
+				D[0*dim+0]=D_scalar*D[0*dim+0];
+				D[1*dim+0]=D_scalar*D[1*dim+0];
+				D[2*dim+0]=D_scalar*D[2*dim+0];
+				D[0*dim+1]=D_scalar*D[0*dim+1];
+				D[1*dim+1]=D_scalar*D[1*dim+1];
+				D[2*dim+1]=D_scalar*D[2*dim+1];
+				D[0*dim+2]=D_scalar*D[0*dim+2];
+				D[1*dim+2]=D_scalar*D[1*dim+2];
+				D[2*dim+2]=D_scalar*D[2*dim+2];
+			}
+			TripleMultiply(Bprime,dim,numnodes,1,
+						D,dim,dim,0,
+						Bprime,dim,numnodes,0,
+						&Ke->values[0],1);
+		}
+
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(D);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* DamageEvolutionAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int      domaintype,damagelaw;
+	IssmDouble  Jdet,dt;
+	IssmDouble  f,damage;
+	IssmDouble* xyz_list = NULL;
+	/*Get element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&damagelaw,DamageLawEnum);
+	switch(damagelaw){
+		case 0:
+			this->CreateDamageFInput(element);
+			break;
+		case 1:
+			this->CreateDamageFInputPralong(element);
+			break;
+		case 2:
+			this->CreateDamageFInputExp(element);
+			break;
+		default:
+			_error_("not implemented yet");
+	}
+
+	Input* damaged_input = NULL;
+	Input* damagef_input = element->GetInput(DamageFEnum); _assert_(damagef_input);
+	if(domaintype==Domain2DhorizontalEnum){
+		damaged_input = element->GetInput(DamageDbarEnum); _assert_(damaged_input);
+	}
+	else{
+		damaged_input = element->GetInput(DamageDEnum); _assert_(damaged_input);
+	}
+
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		damaged_input->GetInputValue(&damage,gauss);
+		damagef_input->GetInputValue(&f,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			pe->values[i]+=Jdet*gauss->weight*(damage+dt*f)*basis[i];
+		}
+	}
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           DamageEvolutionAnalysis::GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3] where Bi is of size 3*NDOF2. 
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi=[ N ]
+	 *          [ N ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B_prog has been allocated already, of size: 2x(NDOF1*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions*/
+	IssmDouble* basis=xNew<IssmDouble>(numnodes);
+	element->NodalFunctions(basis,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		for(int j=0;j<dim;j++){
+			B[numnodes*j+i] = basis[i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           DamageEvolutionAnalysis::GetBprime(IssmDouble* Bprime,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B'  matrix. B'=[B1' B2' B3'] where Bi' is of size 3*NDOF2. 
+	 * For node i, Bi' can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi_prime=[ dN/dx ]
+	 *                [ dN/dy ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B' has been allocated already, of size: 3x(NDOF2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(dim*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B': */
+	for(int i=0;i<numnodes;i++){
+		for(int j=0;j<dim;j++){
+			Bprime[numnodes*j+i] = dbasis[j*numnodes+i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+
+}/*}}}*/
+void           DamageEvolutionAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,DamageDbarEnum);
+}/*}}}*/
+void           DamageEvolutionAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           DamageEvolutionAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int domaintype;
+	IssmDouble  max_damage;
+	int			*doflist = NULL;
+
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Fetch dof list and allocate solution vector*/
+	element->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* newdamage = xNew<IssmDouble>(numnodes);
+
+	/*Get user-supplied max_damage: */
+	element->FindParam(&max_damage,DamageMaxDamageEnum);
+
+	/*Use the dof list to index into the solution vector: */
+	for(int i=0;i<numnodes;i++){
+		newdamage[i]=solution[doflist[i]];
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(newdamage[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(newdamage[i])) _error_("Inf found in solution vector");
+		/*Enforce D < max_damage and D > 0 */
+		if(newdamage[i]>max_damage) newdamage[i]=max_damage;
+		else if(newdamage[i]<0.)    newdamage[i]=0.;
+	}
+
+	/*Get all inputs and parameters*/
+	if(domaintype==Domain2DhorizontalEnum){
+		element->AddInput(DamageDbarEnum,newdamage,element->GetElementType());
+	}
+	else{
+		element->AddInput(DamageDEnum,newdamage,element->GetElementType());
+	}
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(newdamage);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           DamageEvolutionAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
+
+/*Flux Correction Transport*/
+ElementMatrix* DamageEvolutionAnalysis::CreateFctKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	IssmDouble Jdet;
+	IssmDouble vx,vy;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int dim      = 2;
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    B      = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    Bprime = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    D      = xNewZeroInit<IssmDouble>(dim*dim);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vxaverage_input=element->GetInput(VxEnum); _assert_(vxaverage_input);
+	Input* vyaverage_input=element->GetInput(VyEnum); _assert_(vyaverage_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		GetB(B,element,dim,xyz_list,gauss);
+		GetBprime(Bprime,element,dim,xyz_list,gauss);
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+
+		D[0*dim+0] = -gauss->weight*vx*Jdet;
+		D[1*dim+1] = -gauss->weight*vy*Jdet;
+
+		TripleMultiply(B,dim,numnodes,1,
+					D,dim,dim,0,
+					Bprime,dim,numnodes,0,
+					&Ke->values[0],1);
+
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(D);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementMatrix* DamageEvolutionAnalysis::CreateMassMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  D,Jdet;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Me     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		D=gauss->weight*Jdet;
+		TripleMultiply(basis,1,numnodes,1,
+					&D,1,1,0,
+					basis,1,numnodes,0,
+					&Me->values[0],1);
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return Me;
+}/*}}}*/
+void           DamageEvolutionAnalysis::FctKMatrix(Matrix<IssmDouble>** pKff,Matrix<IssmDouble>** pKfs,FemModel* femmodel){/*{{{*/
+
+	/*Output*/
+	Matrix<IssmDouble>* Kff = NULL;
+	Matrix<IssmDouble>* Kfs = NULL;
+
+	/*Initialize Jacobian Matrix*/
+	AllocateSystemMatricesx(&Kff,&Kfs,NULL,NULL,femmodel);
+
+	/*Create and assemble matrix*/
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element*       element = xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		ElementMatrix* Ke     = this->CreateFctKMatrix(element);
+		if(Ke) Ke->AddToGlobal(Kff,Kfs);
+		delete Ke;
+	}
+	Kff->Assemble();
+	Kfs->Assemble();
+
+	/*Assign output pointer*/
+	*pKff=Kff;
+	if(pKfs){
+		*pKfs=Kfs;
+	}
+	else{
+		delete Kfs;
+	}
+}/*}}}*/
+void           DamageEvolutionAnalysis::LumpedMassMatrix(Vector<IssmDouble>** pMlff,FemModel* femmodel){/*{{{*/
+
+	/*Intermediaries*/
+	int  configuration_type;
+
+	/*Initialize Lumped mass matrix (actually we just save its diagonal)*/
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	int fsize      = femmodel->nodes->NumberOfDofs(configuration_type,FsetEnum);
+	int flocalsize = femmodel->nodes->NumberOfDofsLocal(configuration_type,FsetEnum);
+	Vector<IssmDouble>* Mlff = new Vector<IssmDouble>(flocalsize,fsize);
+
+	/*Create and assemble matrix*/
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element*       element = xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		ElementMatrix* MLe     = this->CreateMassMatrix(element);
+		if(MLe){
+			MLe->Lump();
+			MLe->AddDiagonalToGlobal(Mlff);
+		}
+		delete MLe;
+	}
+	Mlff->Assemble();
+
+	/*Assign output pointer*/
+	*pMlff=Mlff;
+}/*}}}*/
+void           DamageEvolutionAnalysis::MassMatrix(Matrix<IssmDouble>** pMff,FemModel* femmodel){/*{{{*/
+
+	/*Initialize Mass matrix*/
+	Matrix<IssmDouble> *Mff = NULL;
+	AllocateSystemMatricesx(&Mff,NULL,NULL,NULL,femmodel);
+
+	/*Create and assemble matrix*/
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element*       element = xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		ElementMatrix* MLe     = this->CreateMassMatrix(element);
+		if(MLe){
+			MLe->AddToGlobal(Mff);
+		}
+		delete MLe;
+	}
+	Mff->Assemble();
+
+	/*Assign output pointer*/
+	*pMff=Mff;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/DamageEvolutionAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/DamageEvolutionAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/DamageEvolutionAnalysis.h	(revision 21239)
@@ -0,0 +1,45 @@
+/*! \file DamageEvolutionAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _DamageEvolutionAnalysis_
+#define _DamageEvolutionAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class DamageEvolutionAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           CreateDamageFInput(Element* element);
+		void           CreateDamageFInputExp(Element* element);
+		void           CreateDamageFInputPralong(Element* element);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBprime(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+
+		/*FCT*/
+		ElementMatrix* CreateFctKMatrix(Element* element);
+		ElementMatrix* CreateMassMatrix(Element* element);
+		void           FctKMatrix(Matrix<IssmDouble>** pKff,Matrix<IssmDouble>** pKfs,FemModel* femmodel);
+		void           LumpedMassMatrix(Vector<IssmDouble>** pMLff,FemModel* femmodel);
+		void           MassMatrix(Matrix<IssmDouble>** pMff,FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/DepthAverageAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/DepthAverageAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/DepthAverageAnalysis.cpp	(revision 21239)
@@ -0,0 +1,174 @@
+#include "./DepthAverageAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void DepthAverageAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void DepthAverageAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void DepthAverageAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	::CreateNodes(nodes,iomodel,DepthAverageAnalysisEnum,P1Enum);
+
+}/*}}}*/
+int  DepthAverageAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void DepthAverageAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	if(iomodel->domaintype==Domain2DverticalEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+	}
+}/*}}}*/
+void DepthAverageAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           DepthAverageAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* DepthAverageAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* DepthAverageAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* DepthAverageAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	int         dim;
+	IssmDouble  Jdet,D,dt=1.e+9;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    B      = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		GetB(B,element,dim,xyz_list,gauss);
+		D=gauss->weight*Jdet*dt;
+
+		/*vertical diffusion*/
+		TripleMultiply(B,1,numnodes,1,
+					&D,1,1,0,
+					B,1,numnodes,0,
+					&Ke->values[0],1);
+
+		/*Next value*/
+		D=gauss->weight*Jdet;
+		element->NodalFunctions(B,gauss);
+		TripleMultiply(B,numnodes,1,0,
+					&D,1,1,0,
+					B,1,numnodes,0,
+					&Ke->values[0],1);
+	} 
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(B);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* DepthAverageAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         input_enum;
+	IssmDouble  Jdet,scalar,value;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe     = element->NewElementVector();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&input_enum,InputToDepthaverageInEnum);
+	Input* input = element->GetInput(input_enum); _assert_(input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(3);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		/* Build transient now */
+		input->GetInputValue(&value, gauss);
+		scalar=value*Jdet*gauss->weight;
+		for(int i=0;i<numnodes;i++) pe->values[i]+=scalar*basis[i];
+
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           DepthAverageAnalysis::GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*	Compute B  matrix. B=[dh1/dz dh2/dz dh3/dz dh4/dz dh5/dz dh6/dz];
+		where hi is the interpolation function for node i.*/
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(dim*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		B[i] = dbasis[(dim-1)*numnodes+i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}
+/*}}}*/
+void           DepthAverageAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           DepthAverageAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           DepthAverageAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int inputenum;
+	element->FindParam(&inputenum,InputToDepthaverageOutEnum);
+	element->InputUpdateFromSolutionOneDof(solution,inputenum);
+}/*}}}*/
+void           DepthAverageAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/DepthAverageAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/DepthAverageAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/DepthAverageAnalysis.h	(revision 21239)
@@ -0,0 +1,34 @@
+/*! \file DepthAverageAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _DepthAverageAnalysis_
+#define _DepthAverageAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class DepthAverageAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/EnthalpyAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/EnthalpyAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/EnthalpyAnalysis.cpp	(revision 21239)
@@ -0,0 +1,1595 @@
+#include "./EnthalpyAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+/*Model processing*/
+void EnthalpyAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*Intermediary*/
+	int        count;
+	int        M,N;
+	bool       spcpresent = false;
+	IssmDouble heatcapacity;
+	IssmDouble referencetemperature;
+
+	/*Output*/
+	IssmDouble *spcvector  = NULL;
+	IssmDouble* times=NULL;
+	IssmDouble* values=NULL;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&heatcapacity,"md.materials.heatcapacity");
+	iomodel->FindConstant(&referencetemperature,"md.constants.referencetemperature");
+
+	/*return if 2d mesh*/
+	if(iomodel->domaintype==Domain2DhorizontalEnum) return;
+
+	/*Fetch data: */
+	iomodel->FetchData(&spcvector,&M,&N,"md.thermal.spctemperature");
+
+	//FIX ME: SHOULD USE IOMODELCREATECONSTRAINTS 
+	/*Transient or static?:*/
+	if(M==iomodel->numberofvertices){
+		/*static: just create Constraints objects*/
+		count=0;
+
+		for(int i=0;i<iomodel->numberofvertices;i++){
+			/*keep only this partition's nodes:*/
+			if((iomodel->my_vertices[i])){
+
+				if (!xIsNan<IssmDouble>(spcvector[i])){
+
+					constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,heatcapacity*(spcvector[i]-referencetemperature),EnthalpyAnalysisEnum));
+					count++;
+
+				}
+			}
+		}
+	}
+	else if (M==(iomodel->numberofvertices+1)){
+		/*transient: create transient SpcTransient objects. Same logic, except we need to retrieve 
+		 * various times and values to initialize an SpcTransient object: */
+		count=0;
+
+		/*figure out times: */
+		times=xNew<IssmDouble>(N);
+		for(int j=0;j<N;j++){
+			times[j]=spcvector[(M-1)*N+j];
+		}
+
+		/*Create constraints from x,y,z: */
+		for(int i=0;i<iomodel->numberofvertices;i++){
+
+			/*keep only this partition's nodes:*/
+			if((iomodel->my_vertices[i])){
+
+				/*figure out times and values: */
+				values=xNew<IssmDouble>(N);
+				spcpresent=false;
+				for(int j=0;j<N;j++){
+					values[j]=heatcapacity*(spcvector[i*N+j]-referencetemperature);
+					if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
+				}
+
+				if(spcpresent){
+					constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,N,times,values,EnthalpyAnalysisEnum));
+					count++;
+				}
+				xDelete<IssmDouble>(values);
+			}
+		}
+	}
+	else{
+		_error_("Size of field " << EnumToStringx(ThermalSpctemperatureEnum) << " not supported");
+	}
+
+	/*Free ressources:*/
+	iomodel->DeleteData(spcvector,"md.thermal.spctemperature");
+	xDelete<IssmDouble>(times);
+	xDelete<IssmDouble>(values);
+}/*}}}*/
+void EnthalpyAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*No loads */
+}/*}}}*/
+void EnthalpyAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,EnthalpyAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  EnthalpyAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void EnthalpyAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	bool dakota_analysis,ismovingfront,isenthalpy;
+	int frictionlaw,basalforcing_model;
+	int FrictionCoupling;
+	
+	/*Now, is the model 3d? otherwise, do nothing: */
+	if(iomodel->domaintype==Domain2DhorizontalEnum)return;
+
+	/*Is enthalpy requested?*/
+	iomodel->FindConstant(&isenthalpy,"md.thermal.isenthalpy");
+	if(!isenthalpy) return;
+
+	/*Fetch data needed: */
+	iomodel->FetchData(3,"md.initialization.temperature","md.initialization.waterfraction","md.initialization.pressure");
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	iomodel->FindConstant(&dakota_analysis,"md.qmu.isdakota");
+	iomodel->FindConstant(&ismovingfront,"md.transient.ismovingfront");
+	iomodel->FindConstant(&frictionlaw,"md.friction.law");
+
+	iomodel->FetchDataToInput(elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(elements,"md.slr.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.mask.groundedice_levelset",MaskGroundediceLevelsetEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+	iomodel->FetchDataToInput(elements,"md.materials.rheology_B",MaterialsRheologyBEnum);
+	iomodel->FetchDataToInput(elements,"md.materials.rheology_n",MaterialsRheologyNEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.pressure",PressureEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.temperature",TemperatureEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.waterfraction",WaterfractionEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.enthalpy",EnthalpyEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.watercolumn",WatercolumnEnum);
+	iomodel->FetchDataToInput(elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vy",VyEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vz",VzEnum);
+	InputUpdateFromConstantx(elements,0.,VxMeshEnum);
+	InputUpdateFromConstantx(elements,0.,VyMeshEnum);
+	InputUpdateFromConstantx(elements,0.,VzMeshEnum);
+	if(ismovingfront){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum); // required for updating active nodes
+	}
+
+	/*Basal forcings variables*/
+	iomodel->FindConstant(&basalforcing_model,"md.basalforcings.model");
+	switch(basalforcing_model){
+		case MantlePlumeGeothermalFluxEnum:
+			break;
+		default:
+			iomodel->FetchDataToInput(elements,"md.basalforcings.geothermalflux",BasalforcingsGeothermalfluxEnum);
+			break;
+	}
+	
+	/*Friction law variables*/
+	switch(frictionlaw){
+		case 1:
+			iomodel->FetchDataToInput(elements,"md.friction.coefficient",FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.p",FrictionPEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.q",FrictionQEnum);
+			break;
+		case 2:
+			iomodel->FetchDataToInput(elements,"md.friction.C",FrictionCEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.m",FrictionMEnum);
+			break;
+		case 3:
+			iomodel->FindConstant(&FrictionCoupling,"md.friction.coupling");
+			iomodel->FetchDataToInput(elements,"md.friction.C",FrictionCEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.As",FrictionAsEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.q",FrictionQEnum);
+			if (FrictionCoupling==0){
+				iomodel->FetchDataToInput(elements,"md.friction.effective_pressure",FrictionEffectivePressureEnum);
+			}
+			break;
+		case 4:
+			iomodel->FetchDataToInput(elements,"md.friction.coefficient",FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.p",FrictionPEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.q",FrictionQEnum);
+			iomodel->FetchDataToInput(elements,"md.initialization.pressure",PressureEnum);
+			iomodel->FetchDataToInput(elements,"md.initialization.temperature",TemperatureEnum);
+			break;
+		case 5:
+			iomodel->FetchDataToInput(elements,"md.friction.coefficient",FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.p",FrictionPEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.q",FrictionQEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.water_layer",FrictionWaterLayerEnum);
+			break;
+		case 6:
+			iomodel->FetchDataToInput(elements,"md.friction.C",FrictionCEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.m",FrictionMEnum);
+			iomodel->FetchDataToInput(elements,"md.initialization.pressure",PressureEnum);
+			iomodel->FetchDataToInput(elements,"md.initialization.temperature",TemperatureEnum);
+			break;
+		default:
+			_error_("not supported");
+	}
+
+	/*Free data: */
+	iomodel->DeleteData(3,"md.initialization.temperature","md.initialization.waterfraction","md.initialization.pressure");
+
+}/*}}}*/
+void EnthalpyAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int     numoutputs;
+	char**  requestedoutputs = NULL;
+
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.stabilization",ThermalStabilizationEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.maxiter",ThermalMaxiterEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.reltol",ThermalReltolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.isenthalpy",ThermalIsenthalpyEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.isdynamicbasalspc",ThermalIsdynamicbasalspcEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.friction.law",FrictionLawEnum));
+
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.thermal.requested_outputs");
+	parameters->AddObject(new IntParam(ThermalNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(ThermalRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.thermal.requested_outputs");
+
+	/*Deal with friction parameters*/
+	int frictionlaw;
+	iomodel->FindConstant(&frictionlaw,"md.friction.law");
+	if(frictionlaw==4 || frictionlaw==6) parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum));
+	if(frictionlaw==3) parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum));
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           EnthalpyAnalysis::ApplyBasalConstraints(IssmDouble* serial_spc,Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return;
+
+	/* Only update constraints at the base. */
+	if(!(element->IsOnBase())) return;
+
+	/*Intermediary*/
+	bool        isdynamicbasalspc;
+	int         numindices;
+	int        *indices = NULL;
+	Node*       node = NULL;
+	IssmDouble	pressure;
+
+	/*Check wether dynamic basal boundary conditions are activated */
+	element->FindParam(&isdynamicbasalspc,ThermalIsdynamicbasalspcEnum);
+	if(!isdynamicbasalspc) return;
+
+	/*Get parameters and inputs: */
+	Input* pressure_input		 = element->GetInput(PressureEnum);							 _assert_(pressure_input);
+
+	/*Fetch indices of basal & surface nodes for this finite element*/
+	Penta *penta =  (Penta *) element; // TODO: add Basal-/SurfaceNodeIndices to element.h, and change this to Element*
+	penta->BasalNodeIndices(&numindices,&indices,element->GetElementType());
+
+	GaussPenta* gauss=new GaussPenta();
+	for(int i=0;i<numindices;i++){
+		gauss->GaussNode(element->GetElementType(),indices[i]);
+
+		pressure_input->GetInputValue(&pressure,gauss);
+
+		/*apply or release spc*/
+		node=element->GetNode(indices[i]);
+		if(serial_spc[node->Sid()]==1.){
+			pressure_input->GetInputValue(&pressure, gauss);
+			node->ApplyConstraint(0,PureIceEnthalpy(element,pressure));
+		}
+		else			
+			node->DofInFSet(0);
+	}
+
+	/*Free ressources:*/
+	xDelete<int>(indices);
+	delete gauss;
+}/*}}}*/
+void           EnthalpyAnalysis::ComputeBasalMeltingrate(FemModel* femmodel){/*{{{*/
+	/*Compute basal melting rates: */
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		ComputeBasalMeltingrate(element);
+	}
+}/*}}}*/
+void           EnthalpyAnalysis::ComputeBasalMeltingrate(Element* element){/*{{{*/
+	/*Calculate the basal melt rates of the enthalpy model after Aschwanden 2012*/
+	/* melting rate is positive when melting, negative when refreezing*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return;
+
+	/* Only compute melt rates at the base of grounded ice*/
+	if(!element->IsOnBase() || element->IsFloating()) return;
+
+	/* Intermediaries */
+	bool			converged;
+	const int   dim=3;
+	int         i,is,state;
+	int			vertexdown,vertexup,numvertices,numsegments;
+	int			enthalpy_enum;
+	IssmDouble  vec_heatflux[dim],normal_base[dim],d1enthalpy[dim],d1pressure[dim];
+	IssmDouble  basalfriction,alpha2,geothermalflux,heatflux;
+	IssmDouble  dt,yts;
+	IssmDouble  melting_overshoot,lambda;
+	IssmDouble  vx,vy,vz;
+	IssmDouble *xyz_list      = NULL;
+	IssmDouble *xyz_list_base = NULL;
+	int        *pairindices   = NULL;
+
+	/*Fetch parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->GetInputValue(&converged,ConvergedEnum);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&yts, ConstantsYtsEnum);
+
+	if(dt==0. && !converged) enthalpy_enum=EnthalpyPicardEnum;
+	else enthalpy_enum=EnthalpyEnum;
+
+	IssmDouble latentheat = element->GetMaterialParameter(MaterialsLatentheatEnum);
+	IssmDouble rho_ice    = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble rho_water  = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	IssmDouble beta		 = element->GetMaterialParameter(MaterialsBetaEnum);
+	IssmDouble kappa		 = EnthalpyDiffusionParameterVolume(element,enthalpy_enum);     _assert_(kappa>=0.);
+	IssmDouble kappa_mix;
+
+	/*retrieve inputs*/
+	Input* enthalpy_input         = element->GetInput(enthalpy_enum);                    _assert_(enthalpy_input);
+	Input* pressure_input			= element->GetInput(PressureEnum);							 _assert_(pressure_input);
+	Input* geothermalflux_input   = element->GetInput(BasalforcingsGeothermalfluxEnum); _assert_(geothermalflux_input);
+	Input* vx_input               = element->GetInput(VxEnum);                          _assert_(vx_input);
+	Input* vy_input               = element->GetInput(VyEnum);                          _assert_(vy_input);
+	Input* vz_input               = element->GetInput(VzEnum);                          _assert_(vz_input);
+
+	/*Build friction element, needed later: */
+	Friction* friction=new Friction(element,dim);
+
+	/******** MELTING RATES  ************************************//*{{{*/
+	element->NormalBase(&normal_base[0],xyz_list_base);
+	element->VerticalSegmentIndices(&pairindices,&numsegments);
+	IssmDouble* meltingrate_enthalpy = xNew<IssmDouble>(numsegments);
+	IssmDouble* heating = xNew<IssmDouble>(numsegments);	
+
+	numvertices=element->GetNumberOfVertices();
+	IssmDouble* enthalpies = xNew<IssmDouble>(numvertices);
+	IssmDouble* pressures = xNew<IssmDouble>(numvertices);
+	IssmDouble* watercolumns = xNew<IssmDouble>(numvertices);
+	IssmDouble* basalmeltingrates = xNew<IssmDouble>(numvertices);
+	element->GetInputListOnVertices(enthalpies,enthalpy_enum);
+	element->GetInputListOnVertices(pressures,PressureEnum);
+	element->GetInputListOnVertices(watercolumns,WatercolumnEnum);
+	element->GetInputListOnVertices(basalmeltingrates,BasalforcingsGroundediceMeltingRateEnum);
+
+	Gauss* gauss=element->NewGauss();
+	for(is=0;is<numsegments;is++){
+		vertexdown = pairindices[is*2+0];
+		vertexup   = pairindices[is*2+1];
+		gauss->GaussVertex(vertexdown);
+
+		state=GetThermalBasalCondition(element, enthalpies[vertexdown], enthalpies[vertexup], pressures[vertexdown], pressures[vertexup], watercolumns[vertexdown], basalmeltingrates[vertexdown]);
+		switch (state) {
+			case 0:
+				// cold, dry base: apply basal surface forcing
+				for(i=0;i<3;i++) vec_heatflux[i]=0.;
+				break;
+			case 1: case 2: case 3: 
+				// case 1 : cold, wet base: keep at pressure melting point 
+				// case 2: temperate, thin refreezing base: release spc
+				// case 3: temperate, thin melting base: set spc
+				enthalpy_input->GetInputDerivativeValue(&d1enthalpy[0],xyz_list,gauss);
+				for(i=0;i<3;i++) vec_heatflux[i]=-kappa*d1enthalpy[i];
+				break;
+			case 4:
+				// temperate, thick melting base: set grad H*n=0
+				kappa_mix=GetWetIceConductivity(element, enthalpies[vertexdown], pressures[vertexdown]);
+				pressure_input->GetInputDerivativeValue(&d1pressure[0],xyz_list,gauss);
+				for(i=0;i<3;i++) vec_heatflux[i]=kappa_mix*beta*d1pressure[i];
+				break;
+			default:
+				_printf0_("	unknown thermal basal state found!");
+		}
+		if(state==0) meltingrate_enthalpy[is]=0.;
+		else{
+			/*heat flux along normal*/
+			heatflux=0.;
+			for(i=0;i<3;i++) heatflux+=(vec_heatflux[i])*normal_base[i];
+
+			/*basal friction*/
+			friction->GetAlpha2(&alpha2,gauss);
+			vx_input->GetInputValue(&vx,gauss);		vy_input->GetInputValue(&vy,gauss);		vz_input->GetInputValue(&vz,gauss);
+			basalfriction=alpha2*(vx*vx + vy*vy + vz*vz);
+			geothermalflux_input->GetInputValue(&geothermalflux,gauss);
+			/* -Mb= Fb-(q-q_geo)/((1-w)*L*rho), and (1-w)*rho=rho_ice, cf Aschwanden 2012, eqs.1, 2, 66*/
+			heating[is]=(heatflux+basalfriction+geothermalflux);
+			meltingrate_enthalpy[is]=heating[is]/(latentheat*rho_ice); // m/s water equivalent
+		}
+	}/*}}}*/
+
+	/******** UPDATE MELTINGRATES AND WATERCOLUMN **************//*{{{*/
+	for(is=0;is<numsegments;is++){
+		vertexdown = pairindices[is*2+0];
+		vertexup   = pairindices[is*2+1];
+		if(dt!=0.){
+			if(watercolumns[vertexdown]+meltingrate_enthalpy[is]*dt<0.){	// prevent too much freeze on			
+				lambda = -watercolumns[vertexdown]/(dt*meltingrate_enthalpy[is]); _assert_(lambda>=0.); _assert_(lambda<1.);
+				watercolumns[vertexdown]=0.;
+				basalmeltingrates[vertexdown]=lambda*meltingrate_enthalpy[is]; // restrict freeze on only to size of watercolumn
+				enthalpies[vertexdown]+=(1.-lambda)*dt/yts*meltingrate_enthalpy[is]*latentheat*rho_ice; // use rest of energy to cool down base: dE=L*m, m=(1-lambda)*meltingrate*rho_ice
+			}
+			else{
+				basalmeltingrates[vertexdown]=meltingrate_enthalpy[is];
+				watercolumns[vertexdown]+=dt*meltingrate_enthalpy[is]; 
+			}
+		}
+		else{
+			basalmeltingrates[vertexdown]=meltingrate_enthalpy[is];
+			if(watercolumns[vertexdown]+meltingrate_enthalpy[is]<0.)
+				watercolumns[vertexdown]=0.;
+			else
+				watercolumns[vertexdown]+=meltingrate_enthalpy[is];
+		}	
+		basalmeltingrates[vertexdown]*=rho_water/rho_ice; // convert meltingrate from water to ice equivalent
+		_assert_(watercolumns[vertexdown]>=0.);
+	}/*}}}*/
+
+	/*feed updated variables back into model*/
+	if(dt!=0.){
+		element->AddInput(enthalpy_enum,enthalpies,P1Enum); //TODO: distinguis for steadystate and transient run
+		element->AddInput(WatercolumnEnum,watercolumns,P1Enum);
+	}
+	element->AddInput(BasalforcingsGroundediceMeltingRateEnum,basalmeltingrates,P1Enum);
+
+	/*Clean up and return*/
+	delete gauss;
+	delete friction;
+	xDelete<int>(pairindices);
+	xDelete<IssmDouble>(enthalpies);
+	xDelete<IssmDouble>(pressures);
+	xDelete<IssmDouble>(watercolumns);
+	xDelete<IssmDouble>(basalmeltingrates);
+	xDelete<IssmDouble>(meltingrate_enthalpy);
+	xDelete<IssmDouble>(heating);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_base);
+}/*}}}*/
+void           EnthalpyAnalysis::Core(FemModel* femmodel){/*{{{*/
+
+	IssmDouble dt;
+	bool isdynamicbasalspc;
+
+	femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+	femmodel->parameters->FindParam(&isdynamicbasalspc,ThermalIsdynamicbasalspcEnum);
+
+	if(VerboseSolution()) _printf0_("   computing enthalpy\n");
+	femmodel->SetCurrentConfiguration(EnthalpyAnalysisEnum);
+	if((dt>0.) && isdynamicbasalspc)	UpdateBasalConstraints(femmodel);
+	solutionsequence_thermal_nonlinear(femmodel);
+
+	/*transfer enthalpy to enthalpy picard for the next step: */
+	InputDuplicatex(femmodel,EnthalpyEnum,EnthalpyPicardEnum);
+
+	PostProcessing(femmodel);
+
+}/*}}}*/
+ElementVector* EnthalpyAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* EnthalpyAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* EnthalpyAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixVolume(element);
+	ElementMatrix* Ke2=CreateKMatrixShelf(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+}/*}}}*/
+ElementMatrix* EnthalpyAnalysis::CreateKMatrixVolume(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int         stabilization;
+	IssmDouble  Jdet,dt,u,v,w,um,vm,wm,vel;
+	IssmDouble  h,hx,hy,hz,vx,vy,vz;
+	IssmDouble  tau_parameter,diameter;
+	IssmDouble  D_scalar;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes    = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke       = element->NewElementMatrix();
+	IssmDouble*    basis    = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis   = xNew<IssmDouble>(3*numnodes);
+	IssmDouble*    B        = xNew<IssmDouble>(3*numnodes);
+	IssmDouble*    Bprime   = xNew<IssmDouble>(3*numnodes);
+	IssmDouble     D[3][3]  = {0.};
+	IssmDouble     K[3][3];
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&stabilization,ThermalStabilizationEnum);
+	IssmDouble  rho_water           = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	IssmDouble  rho_ice             = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble  gravity             = element->GetMaterialParameter(ConstantsGEnum);
+	IssmDouble  heatcapacity        = element->GetMaterialParameter(MaterialsHeatcapacityEnum);
+	IssmDouble  thermalconductivity = element->GetMaterialParameter(MaterialsThermalconductivityEnum);
+	Input* vx_input  = element->GetInput(VxEnum);     _assert_(vx_input);
+	Input* vy_input  = element->GetInput(VyEnum);     _assert_(vy_input);
+	Input* vz_input  = element->GetInput(VzEnum);     _assert_(vz_input);
+	Input* vxm_input = element->GetInput(VxMeshEnum); _assert_(vxm_input);
+	Input* vym_input = element->GetInput(VyMeshEnum); _assert_(vym_input);
+	Input* vzm_input = element->GetInput(VzMeshEnum); _assert_(vzm_input);
+	if(stabilization==2) diameter=element->MinEdgeLength(xyz_list);
+
+	/*Enthalpy diffusion parameter*/
+	IssmDouble kappa=this->EnthalpyDiffusionParameterVolume(element,EnthalpyPicardEnum); _assert_(kappa>=0.);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		D_scalar=gauss->weight*Jdet;
+		if(dt!=0.) D_scalar=D_scalar*dt;
+
+		/*Conduction: */
+		GetBConduct(B,element,xyz_list,gauss); 
+		D[0][0]=D_scalar*kappa/rho_ice;
+		D[1][1]=D_scalar*kappa/rho_ice;
+		D[2][2]=D_scalar*kappa/rho_ice;
+		TripleMultiply(B,3,numnodes,1,
+					&D[0][0],3,3,0,
+					B,3,numnodes,0,
+					&Ke->values[0],1);
+
+		/*Advection: */
+		GetBAdvec(B,element,xyz_list,gauss); 
+		GetBAdvecprime(Bprime,element,xyz_list,gauss); 
+		vx_input->GetInputValue(&u,gauss); vxm_input->GetInputValue(&um,gauss); vx=u-um;
+		vy_input->GetInputValue(&v,gauss); vym_input->GetInputValue(&vm,gauss); vy=v-vm;
+		vz_input->GetInputValue(&w,gauss); vzm_input->GetInputValue(&wm,gauss); vz=w-wm;
+		D[0][0]=D_scalar*vx;
+		D[1][1]=D_scalar*vy;
+		D[2][2]=D_scalar*vz;
+		TripleMultiply(B,3,numnodes,1,
+					&D[0][0],3,3,0,
+					Bprime,3,numnodes,0,
+					&Ke->values[0],1);
+
+		/*Transient: */
+		if(dt!=0.){
+			D_scalar=gauss->weight*Jdet;
+			element->NodalFunctions(basis,gauss);
+			TripleMultiply(basis,numnodes,1,0,
+						&D_scalar,1,1,0,
+						basis,1,numnodes,0,
+						&Ke->values[0],1);
+			D_scalar=D_scalar*dt;
+		}
+
+		/*Artifficial diffusivity*/
+		if(stabilization==1){
+			element->ElementSizes(&hx,&hy,&hz);
+			vel=sqrt(vx*vx + vy*vy + vz*vz)+1.e-14;
+			h=sqrt( pow(hx*vx/vel,2) + pow(hy*vy/vel,2) + pow(hz*vz/vel,2));
+			K[0][0]=h/(2.*vel)*fabs(vx*vx);  K[0][1]=h/(2.*vel)*fabs(vx*vy); K[0][2]=h/(2.*vel)*fabs(vx*vz);
+			K[1][0]=h/(2.*vel)*fabs(vy*vx);  K[1][1]=h/(2.*vel)*fabs(vy*vy); K[1][2]=h/(2.*vel)*fabs(vy*vz);
+			K[2][0]=h/(2.*vel)*fabs(vz*vx);  K[2][1]=h/(2.*vel)*fabs(vz*vy); K[2][2]=h/(2.*vel)*fabs(vz*vz);
+			for(int i=0;i<3;i++) for(int j=0;j<3;j++) K[i][j] = D_scalar*K[i][j];
+
+			GetBAdvecprime(Bprime,element,xyz_list,gauss); 
+			TripleMultiply(Bprime,3,numnodes,1,
+						&K[0][0],3,3,0,
+						Bprime,3,numnodes,0,
+						&Ke->values[0],1);
+		}
+		else if(stabilization==2){
+			element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+			tau_parameter=element->StabilizationParameter(u-um,v-vm,w-wm,diameter,kappa/rho_ice);
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j]+=tau_parameter*D_scalar*
+					  ((u-um)*dbasis[0*numnodes+i]+(v-vm)*dbasis[1*numnodes+i]+(w-wm)*dbasis[2*numnodes+i])*((u-um)*dbasis[0*numnodes+j]+(v-vm)*dbasis[1*numnodes+j]+(w-wm)*dbasis[2*numnodes+j]);
+				}
+			}
+			if(dt!=0.){
+				D_scalar=gauss->weight*Jdet;
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=tau_parameter*D_scalar*basis[j]*((u-um)*dbasis[0*numnodes+i]+(v-vm)*dbasis[1*numnodes+i]+(w-wm)*dbasis[2*numnodes+i]);
+					}
+				}
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(Bprime);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementMatrix* EnthalpyAnalysis::CreateKMatrixShelf(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Initialize Element matrix and return if necessary*/
+	if(!element->IsOnBase() || !element->IsFloating()) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  dt,Jdet,D;
+	IssmDouble *xyz_list_base = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize vectors*/
+	ElementMatrix* Ke    = element->NewElementMatrix();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	IssmDouble  gravity             = element->GetMaterialParameter(ConstantsGEnum);
+	IssmDouble  rho_water           = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	IssmDouble  rho_ice             = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble  heatcapacity        = element->GetMaterialParameter(MaterialsHeatcapacityEnum);
+	IssmDouble  mixed_layer_capacity= element->GetMaterialParameter(MaterialsMixedLayerCapacityEnum);
+	IssmDouble  thermal_exchange_vel= element->GetMaterialParameter(MaterialsThermalExchangeVelocityEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		D=gauss->weight*Jdet*rho_water*mixed_layer_capacity*thermal_exchange_vel/(heatcapacity*rho_ice);
+		if(reCast<bool,IssmDouble>(dt)) D=dt*D;
+		TripleMultiply(basis,numnodes,1,0,
+					&D,1,1,0,
+					basis,1,numnodes,0,
+					&Ke->values[0],1);
+
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list_base);
+	return Ke;
+}/*}}}*/
+ElementVector* EnthalpyAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorVolume(element);
+	ElementVector* pe2=CreatePVectorSheet(element);
+	ElementVector* pe3=CreatePVectorShelf(element);
+	ElementVector* pe =new ElementVector(pe1,pe2,pe3);
+
+	/*clean-up and return*/
+	delete pe1;
+	delete pe2;
+	delete pe3;
+	return pe;
+}/*}}}*/
+ElementVector* EnthalpyAnalysis::CreatePVectorVolume(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int         i, stabilization;
+	IssmDouble  Jdet,phi,dt;
+	IssmDouble  enthalpy, Hpmp;
+	IssmDouble  enthalpypicard, d1enthalpypicard[3];
+	IssmDouble  pressure, d1pressure[3], d2pressure;
+	IssmDouble  waterfractionpicard;
+	IssmDouble  kappa,tau_parameter,diameter,kappa_w;
+	IssmDouble  u,v,w;
+	IssmDouble  scalar_def, scalar_sens ,scalar_transient;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble  d1H_d1P, d1P2;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes    = element->GetNumberOfNodes();
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize Element vector*/
+	ElementVector* pe             = element->NewElementVector();
+	IssmDouble*    basis          = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis         = xNew<IssmDouble>(3*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	IssmDouble  rho_ice             = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble  heatcapacity        = element->GetMaterialParameter(MaterialsHeatcapacityEnum);
+	IssmDouble  thermalconductivity = element->GetMaterialParameter(MaterialsThermalconductivityEnum);
+	IssmDouble  temperateiceconductivity = element->GetMaterialParameter(MaterialsTemperateiceconductivityEnum);
+	IssmDouble  beta                = element->GetMaterialParameter(MaterialsBetaEnum);
+	IssmDouble  latentheat          = element->GetMaterialParameter(MaterialsLatentheatEnum);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&stabilization,ThermalStabilizationEnum);
+	Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input=element->GetInput(VzEnum); _assert_(vz_input);
+	Input* enthalpypicard_input=element->GetInput(EnthalpyPicardEnum); _assert_(enthalpypicard_input);
+	Input* pressure_input=element->GetInput(PressureEnum); _assert_(pressure_input);
+	Input* enthalpy_input=NULL;
+	if(reCast<bool,IssmDouble>(dt)){enthalpy_input = element->GetInput(EnthalpyEnum); _assert_(enthalpy_input);}
+	if(stabilization==2){
+		diameter=element->MinEdgeLength(xyz_list);
+		kappa=this->EnthalpyDiffusionParameterVolume(element,EnthalpyPicardEnum); _assert_(kappa>=0.);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		
+		/*viscous dissipation*/
+		element->ViscousHeating(&phi,xyz_list,gauss,vx_input,vy_input,vz_input);
+
+		scalar_def=phi/rho_ice*Jdet*gauss->weight;
+		if(dt!=0.) scalar_def=scalar_def*dt;
+
+		for(i=0;i<numnodes;i++) pe->values[i]+=scalar_def*basis[i];
+
+		/*sensible heat flux in temperate ice*/
+		enthalpypicard_input->GetInputValue(&enthalpypicard,gauss);
+		pressure_input->GetInputValue(&pressure,gauss);
+		Hpmp=this->PureIceEnthalpy(element, pressure);
+
+		if(enthalpypicard>=Hpmp){
+			enthalpypicard_input->GetInputDerivativeValue(&d1enthalpypicard[0],xyz_list,gauss);
+			pressure_input->GetInputDerivativeValue(&d1pressure[0],xyz_list,gauss);
+			d2pressure=0.; // for linear elements, 2nd derivative is zero
+			
+			d1H_d1P=0.;
+			for(i=0;i<3;i++) d1H_d1P+=d1enthalpypicard[i]*d1pressure[i];
+			d1P2=0.;
+			for(i=0;i<3;i++) d1P2+=pow(d1pressure[i],2.);
+
+			scalar_sens=-beta*((temperateiceconductivity - thermalconductivity)/latentheat*(d1H_d1P + beta*heatcapacity*d1P2))/rho_ice;
+			if(dt!=0.) scalar_sens=scalar_sens*dt;
+			for(i=0;i<numnodes;i++) pe->values[i]+=scalar_sens*basis[i];
+		}		
+
+		/* Build transient now */
+		if(reCast<bool,IssmDouble>(dt)){
+			enthalpy_input->GetInputValue(&enthalpy, gauss);
+			scalar_transient=enthalpy*Jdet*gauss->weight;
+			for(i=0;i<numnodes;i++) pe->values[i]+=scalar_transient*basis[i];
+		}
+
+		if(stabilization==2){
+			element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+			vx_input->GetInputValue(&u,gauss);
+			vy_input->GetInputValue(&v,gauss);
+			vz_input->GetInputValue(&w,gauss);
+			tau_parameter=element->StabilizationParameter(u,v,w,diameter,kappa/rho_ice);
+
+			for(i=0;i<numnodes;i++) pe->values[i]+=tau_parameter*scalar_def*(u*dbasis[0*numnodes+i]+v*dbasis[1*numnodes+i]+w*dbasis[2*numnodes+i]);
+
+			if(dt!=0.){
+				for(i=0;i<numnodes;i++) pe->values[i]+=tau_parameter*scalar_transient*(u*dbasis[0*numnodes+i]+v*dbasis[1*numnodes+i]+w*dbasis[2*numnodes+i]);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return pe;
+
+}/*}}}*/
+ElementVector* EnthalpyAnalysis::CreatePVectorSheet(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/* implementation of the basal condition decision chart of Aschwanden 2012, Fig.5 */
+	if(!element->IsOnBase() || element->IsFloating()) return NULL;
+
+	bool converged, isdynamicbasalspc;
+	int i, state;
+	int enthalpy_enum;
+	IssmDouble  dt,Jdet,scalar;
+	IssmDouble	enthalpy, enthalpyup, pressure, pressureup, watercolumn, meltingrate;
+	IssmDouble	vx,vy,vz;
+	IssmDouble  alpha2,basalfriction,geothermalflux,heatflux;
+	IssmDouble *xyz_list_base = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&isdynamicbasalspc,ThermalIsdynamicbasalspcEnum);
+	element->GetInputValue(&converged,ConvergedEnum);
+	if(dt==0. && !converged) enthalpy_enum=EnthalpyPicardEnum; // use enthalpy from last iteration
+	else enthalpy_enum=EnthalpyEnum; // use enthalpy from last time step
+	Input* vx_input             = element->GetInput(VxEnum);                          _assert_(vx_input);
+	Input* vy_input             = element->GetInput(VyEnum);                          _assert_(vy_input);
+	Input* vz_input             = element->GetInput(VzEnum);                          _assert_(vz_input);
+	Input* enthalpy_input		 = element->GetInput(enthalpy_enum);					 _assert_(enthalpy_input);
+	Input* pressure_input		 = element->GetInput(PressureEnum);							 _assert_(pressure_input);
+	Input* watercolumn_input	 = element->GetInput(WatercolumnEnum);							 _assert_(watercolumn_input);
+	Input* meltingrate_input	 = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);							 _assert_(meltingrate_input);
+	Input* geothermalflux_input = element->GetInput(BasalforcingsGeothermalfluxEnum); _assert_(geothermalflux_input);
+	IssmDouble  rho_ice			 = element->GetMaterialParameter(MaterialsRhoIceEnum);
+
+	/*Build friction element, needed later: */
+	Friction* friction=new Friction(element,3);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(4);
+	Gauss* gaussup=element->NewGaussTop(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+		gaussup->GaussPoint(ig);
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		if(isdynamicbasalspc){
+			enthalpy_input->GetInputValue(&enthalpy,gauss);
+			enthalpy_input->GetInputValue(&enthalpyup,gaussup);
+			pressure_input->GetInputValue(&pressure,gauss);
+			pressure_input->GetInputValue(&pressureup,gaussup);
+			watercolumn_input->GetInputValue(&watercolumn,gauss);
+			meltingrate_input->GetInputValue(&meltingrate,gauss);
+			state=GetThermalBasalCondition(element, enthalpy, enthalpyup, pressure, pressureup, watercolumn, meltingrate);
+		}
+		else
+			state=0;
+
+		switch (state) {
+			case 0: case 1: case 2: case 3:
+				// cold, dry base; cold, wet base; refreezing temperate base; thin temperate base: 
+				// Apply basal surface forcing.
+				// Interpolated values of enthalpy on gauss nodes may indicate cold base, 
+				// although one node might have become temperate. So keep heat flux switched on.
+				geothermalflux_input->GetInputValue(&geothermalflux,gauss);
+				friction->GetAlpha2(&alpha2,gauss);
+				vx_input->GetInputValue(&vx,gauss);
+				vy_input->GetInputValue(&vy,gauss);
+				vz_input->GetInputValue(&vz,gauss);
+				basalfriction=alpha2*(vx*vx+vy*vy+vz*vz);
+				heatflux=(basalfriction+geothermalflux)/(rho_ice);
+				scalar=gauss->weight*Jdet*heatflux;
+				if(dt!=0.) scalar=dt*scalar;
+				for(i=0;i<numnodes;i++) 
+					pe->values[i]+=scalar*basis[i];
+				break;
+			case 4:
+				// temperate, thick melting base: set grad H*n=0
+				for(i=0;i<numnodes;i++) 
+					pe->values[i]+=0.;
+				break;
+			default:
+				_printf0_("	unknown thermal basal state found!");
+		}
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	delete gaussup;
+	delete friction;
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list_base);
+	return pe;
+
+}/*}}}*/
+ElementVector* EnthalpyAnalysis::CreatePVectorShelf(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnBase() || !element->IsFloating()) return NULL;
+
+	IssmDouble  Hpmp,dt,Jdet,scalar_ocean,pressure;
+	IssmDouble *xyz_list_base = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input*      pressure_input=element->GetInput(PressureEnum); _assert_(pressure_input);
+	IssmDouble  gravity             = element->GetMaterialParameter(ConstantsGEnum);
+	IssmDouble  rho_water           = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	IssmDouble  rho_ice             = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble  heatcapacity        = element->GetMaterialParameter(MaterialsHeatcapacityEnum);
+	IssmDouble  mixed_layer_capacity= element->GetMaterialParameter(MaterialsMixedLayerCapacityEnum);
+	IssmDouble  thermal_exchange_vel= element->GetMaterialParameter(MaterialsThermalExchangeVelocityEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		pressure_input->GetInputValue(&pressure,gauss);
+		Hpmp=element->PureIceEnthalpy(pressure);
+
+		scalar_ocean=gauss->weight*Jdet*rho_water*mixed_layer_capacity*thermal_exchange_vel*Hpmp/(heatcapacity*rho_ice);
+		if(reCast<bool,IssmDouble>(dt)) scalar_ocean=dt*scalar_ocean;
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=scalar_ocean*basis[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list_base);
+	return pe;
+}/*}}}*/
+void           EnthalpyAnalysis::DrainWaterfraction(FemModel* femmodel){/*{{{*/
+	/*Drain excess water fraction in ice column: */
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		DrainWaterfractionIcecolumn(element);
+	}
+}/*}}}*/
+void           EnthalpyAnalysis::DrainWaterfraction(Element* element, IssmDouble* pdrainrate_element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return;
+
+	/*Intermediaries*/
+	int iv,is,vertexdown,vertexup,numsegments;	
+	IssmDouble dt, height_element;
+	IssmDouble rho_water, rho_ice;
+	int numvertices = element->GetNumberOfVertices();
+
+	IssmDouble* xyz_list = NULL;
+	IssmDouble* enthalpies = xNew<IssmDouble>(numvertices);
+	IssmDouble* pressures = xNew<IssmDouble>(numvertices);
+	IssmDouble* temperatures = xNew<IssmDouble>(numvertices);
+	IssmDouble* waterfractions = xNew<IssmDouble>(numvertices);
+	IssmDouble* deltawaterfractions = xNew<IssmDouble>(numvertices);
+	int        *pairindices   = NULL;
+	
+	rho_ice=element->GetMaterialParameter(MaterialsRhoIceEnum);
+	rho_water=element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetInputListOnVertices(enthalpies,EnthalpyEnum);
+	element->GetInputListOnVertices(pressures,PressureEnum);
+
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	for(iv=0;iv<numvertices;iv++){ 
+		element->EnthalpyToThermal(&temperatures[iv],&waterfractions[iv], enthalpies[iv],pressures[iv]); 
+		deltawaterfractions[iv]=DrainageFunctionWaterfraction(waterfractions[iv], dt);
+	}
+	
+	/*drain waterfraction, feed updated variables back into model*/
+	for(iv=0;iv<numvertices;iv++){
+		if(reCast<bool,IssmDouble>(dt))
+			waterfractions[iv]-=deltawaterfractions[iv]*dt;
+		else
+			waterfractions[iv]-=deltawaterfractions[iv];
+		element->ThermalToEnthalpy(&enthalpies[iv], temperatures[iv], waterfractions[iv], pressures[iv]);
+	}
+	element->AddInput(EnthalpyEnum,enthalpies,P1Enum);
+  	element->AddInput(WaterfractionEnum,waterfractions,P1Enum);
+
+	/*return meltwater column equivalent to drained water*/
+	element->VerticalSegmentIndices(&pairindices,&numsegments);
+	for(is=0;is<numsegments;is++){
+		vertexdown = pairindices[is*2+0];
+		vertexup   = pairindices[is*2+1];
+		height_element=fabs(xyz_list[vertexup*3+2]-xyz_list[vertexdown*3+2]);
+		pdrainrate_element[is]=(deltawaterfractions[vertexdown]+deltawaterfractions[vertexup])/2.*height_element; // return water equivalent of drainage
+		_assert_(pdrainrate_element[is]>=0.);
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(pairindices);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(enthalpies);
+	xDelete<IssmDouble>(pressures);
+	xDelete<IssmDouble>(temperatures);
+	xDelete<IssmDouble>(waterfractions);
+	xDelete<IssmDouble>(deltawaterfractions);
+}/*}}}*/
+void           EnthalpyAnalysis::DrainWaterfractionIcecolumn(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return;
+
+	/* Only drain waterfraction of ice column from element at base*/
+	if(!element->IsOnBase()) return; //FIXME: allow freeze on for floating elements
+
+	/* Intermediaries*/
+	int is, numvertices, numsegments;
+	int *pairindices   = NULL;
+
+	numvertices=element->GetNumberOfVertices();
+	element->VerticalSegmentIndices(&pairindices,&numsegments);
+
+	IssmDouble* watercolumn = xNew<IssmDouble>(numvertices);
+	IssmDouble* drainrate_column  = xNew<IssmDouble>(numsegments);
+	IssmDouble* drainrate_element = xNew<IssmDouble>(numsegments);
+
+	element->GetInputListOnVertices(watercolumn,WatercolumnEnum);
+
+	for(is=0;is<numsegments;is++)	drainrate_column[is]=0.;
+	Element* elementi = element;
+	for(;;){
+		for(is=0;is<numsegments;is++)	drainrate_element[is]=0.;
+		DrainWaterfraction(elementi,drainrate_element); // TODO: make sure every vertex is only drained once
+		for(is=0;is<numsegments;is++)	drainrate_column[is]+=drainrate_element[is];
+
+		if(elementi->IsOnSurface()) break;
+		elementi=elementi->GetUpperElement();			
+	}
+	/* add drained water to water column*/
+	for(is=0;is<numsegments;is++) watercolumn[is]+=drainrate_column[is];
+	/* Feed updated water column back into model */
+	element->AddInput(WatercolumnEnum,watercolumn,P1Enum);
+
+	xDelete<int>(pairindices);
+	xDelete<IssmDouble>(drainrate_column);
+	xDelete<IssmDouble>(drainrate_element);
+	xDelete<IssmDouble>(watercolumn);
+}/*}}}*/
+IssmDouble     EnthalpyAnalysis::EnthalpyDiffusionParameter(Element* element,IssmDouble enthalpy,IssmDouble pressure){/*{{{*/
+
+	IssmDouble heatcapacity             = element->GetMaterialParameter(MaterialsHeatcapacityEnum);
+	IssmDouble temperateiceconductivity = element->GetMaterialParameter(MaterialsTemperateiceconductivityEnum);
+	IssmDouble thermalconductivity      = element->GetMaterialParameter(MaterialsThermalconductivityEnum);
+
+	if(enthalpy < PureIceEnthalpy(element,pressure)){
+		return thermalconductivity/heatcapacity;
+	}
+	else{
+		return temperateiceconductivity/heatcapacity;
+	}
+}/*}}}*/
+IssmDouble     EnthalpyAnalysis::EnthalpyDiffusionParameterVolume(Element* element,int enthalpy_enum){/*{{{*/
+
+	int         iv;
+	IssmDouble  lambda;                   /* fraction of cold ice    */
+	IssmDouble  kappa,kappa_c,kappa_t; /* enthalpy conductivities */
+	IssmDouble  Hc,Ht;
+
+	/*Get pressures and enthalpies on vertices*/
+	int         numvertices = element->GetNumberOfVertices();
+	IssmDouble* pressures   = xNew<IssmDouble>(numvertices);
+	IssmDouble* enthalpies  = xNew<IssmDouble>(numvertices);
+	IssmDouble* PIE         = xNew<IssmDouble>(numvertices);
+	IssmDouble* dHpmp       = xNew<IssmDouble>(numvertices);
+	element->GetInputListOnVertices(pressures,PressureEnum);
+	element->GetInputListOnVertices(enthalpies,enthalpy_enum);
+	for(iv=0;iv<numvertices;iv++){
+		PIE[iv]   = PureIceEnthalpy(element,pressures[iv]);
+		dHpmp[iv] = enthalpies[iv]-PIE[iv];
+	}
+
+	bool allequalsign = true;
+	if(dHpmp[0]<0.){
+		for(iv=1; iv<numvertices;iv++) allequalsign=(allequalsign && (dHpmp[iv]<0.));
+	}
+	else{
+		for(iv=1; iv<numvertices;iv++) allequalsign=(allequalsign && (dHpmp[iv]>=0.));
+	}
+
+	if(allequalsign){
+		kappa = EnthalpyDiffusionParameter(element,enthalpies[0],pressures[0]);
+	}
+	else{
+		/* return harmonic mean of thermal conductivities, weighted by fraction of cold/temperate ice,
+			cf Patankar 1980, pp44 */
+		kappa_c = EnthalpyDiffusionParameter(element,PureIceEnthalpy(element,0.)-1.,0.);
+		kappa_t = EnthalpyDiffusionParameter(element,PureIceEnthalpy(element,0.)+1.,0.);
+		Hc=0.; Ht=0.;
+		for(iv=0; iv<numvertices;iv++){
+			if(enthalpies[iv]<PIE[iv])
+			 Hc+=(PIE[iv]-enthalpies[iv]);
+			else
+			 Ht+=(enthalpies[iv]-PIE[iv]);
+		}
+		_assert_((Hc+Ht)>0.);
+		lambda = Hc/(Hc+Ht);
+		kappa  = kappa_c*kappa_t/(lambda*kappa_t+(1.-lambda)*kappa_c); // ==(lambda/kappa_c + (1.-lambda)/kappa_t)^-1
+	}	
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(PIE);
+	xDelete<IssmDouble>(dHpmp);
+	xDelete<IssmDouble>(pressures);
+	xDelete<IssmDouble>(enthalpies);
+	return kappa;
+}/*}}}*/
+void           EnthalpyAnalysis::GetBAdvec(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3 B4 B5 B6] where Bi is of size 5*NDOF1. 
+	 * For node i, Bi' can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi_advec =[ h ]
+	 *                 [ h ]
+	 *                 [ h ]
+	 * where h is the interpolation function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 3x(NDOF1*NUMNODESP1)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions*/
+	IssmDouble* basis=xNew<IssmDouble>(numnodes);
+	element->NodalFunctions(basis,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		B[numnodes*0+i] = basis[i];
+		B[numnodes*1+i] = basis[i];
+		B[numnodes*2+i] = basis[i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           EnthalpyAnalysis::GetBAdvecprime(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3 B4 B5 B6] where Bi is of size 5*NDOF1. 
+	 * For node i, Bi' can be expressed in the actual coordinate system
+	 * by: 
+	 *       Biprime_advec=[ dh/dx ]
+	 *                     [ dh/dy ]
+	 *                     [ dh/dz ]
+	 * where h is the interpolation function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 3x(NDOF1*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(3*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		B[numnodes*0+i] = dbasis[0*numnodes+i];
+		B[numnodes*1+i] = dbasis[1*numnodes+i];
+		B[numnodes*2+i] = dbasis[2*numnodes+i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           EnthalpyAnalysis::GetBasalConstraints(Vector<IssmDouble>* vec_spc,Element* element){/*{{{*/
+
+	/*Intermediary*/
+	bool        isdynamicbasalspc;
+	IssmDouble	dt;
+
+	/*Check wether dynamic basal boundary conditions are activated */
+	element->FindParam(&isdynamicbasalspc,ThermalIsdynamicbasalspcEnum);
+	if(!isdynamicbasalspc) return;
+
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	if(dt==0.){
+		GetBasalConstraintsSteadystate(vec_spc,element);
+	}
+	else{
+		GetBasalConstraintsTransient(vec_spc,element);
+	}
+}/*}}}*/
+void           EnthalpyAnalysis::GetBasalConstraintsSteadystate(Vector<IssmDouble>* vec_spc,Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return;
+
+	/* Only update constraints at the base. 
+	 * Floating ice is not affected by basal BC decision chart. */
+	if(!(element->IsOnBase()) || element->IsFloating()) return;
+
+	/*Intermediary*/
+	int         numindices, numindicesup, state;
+	int        *indices = NULL, *indicesup = NULL;
+	IssmDouble	enthalpy, enthalpyup, pressure, pressureup, watercolumn, meltingrate;
+
+	/*Get parameters and inputs: */
+	Input* enthalpy_input		 = element->GetInput(EnthalpyPicardEnum);					 _assert_(enthalpy_input);
+	Input* pressure_input		 = element->GetInput(PressureEnum);							 _assert_(pressure_input);
+	Input* watercolumn_input	 = element->GetInput(WatercolumnEnum);							 _assert_(watercolumn_input);
+	Input* meltingrate_input	 = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);							 _assert_(meltingrate_input);
+
+	/*Fetch indices of basal & surface nodes for this finite element*/
+	Penta *penta =  (Penta *) element; // TODO: add Basal-/SurfaceNodeIndices to element.h, and change this to Element*
+	penta->BasalNodeIndices(&numindices,&indices,element->GetElementType());
+	penta->SurfaceNodeIndices(&numindicesup,&indicesup,element->GetElementType());	_assert_(numindices==numindicesup);
+
+	GaussPenta* gauss=new GaussPenta();
+	GaussPenta* gaussup=new GaussPenta();
+	for(int i=0;i<numindices;i++){
+		gauss->GaussNode(element->GetElementType(),indices[i]);
+		gaussup->GaussNode(element->GetElementType(),indicesup[i]);
+
+		enthalpy_input->GetInputValue(&enthalpy,gauss);
+		enthalpy_input->GetInputValue(&enthalpyup,gaussup);
+		pressure_input->GetInputValue(&pressure,gauss);
+		pressure_input->GetInputValue(&pressureup,gaussup);
+		watercolumn_input->GetInputValue(&watercolumn,gauss);
+		meltingrate_input->GetInputValue(&meltingrate,gauss);
+
+		state=GetThermalBasalCondition(element, enthalpy, enthalpyup, pressure, pressureup, watercolumn, meltingrate);
+		switch (state) {
+			case 0:
+				// cold, dry base: apply basal surface forcing
+				vec_spc->SetValue(element->nodes[i]->Sid(),0.,INS_VAL);
+				break;
+			case 1:
+				// cold, wet base: keep at pressure melting point 
+				vec_spc->SetValue(element->nodes[i]->Sid(),1.,INS_VAL);
+				break;
+			case 2:
+				// temperate, thin refreezing base: 
+				vec_spc->SetValue(element->nodes[i]->Sid(),1.,INS_VAL);
+				break;
+			case 3:
+				// temperate, thin melting base: set spc
+				vec_spc->SetValue(element->nodes[i]->Sid(),1.,INS_VAL);
+				break;
+			case 4:
+				// temperate, thick melting base:
+				vec_spc->SetValue(element->nodes[i]->Sid(),1.,INS_VAL);
+				break;
+			default:
+				_printf0_("	unknown thermal basal state found!");
+		}
+	}
+
+	/*Free ressources:*/
+	xDelete<int>(indices);
+	xDelete<int>(indicesup);
+	delete gauss;
+	delete gaussup;
+}/*}}}*/
+void           EnthalpyAnalysis::GetBasalConstraintsTransient(Vector<IssmDouble>* vec_spc,Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return;
+
+	/* Only update constraints at the base. 
+	 * Floating ice is not affected by basal BC decision chart.*/
+	if(!(element->IsOnBase()) || element->IsFloating()) return;
+
+	/*Intermediary*/
+	int         numindices, numindicesup, state;
+	int        *indices = NULL, *indicesup = NULL;
+	IssmDouble	enthalpy, enthalpyup, pressure, pressureup, watercolumn, meltingrate;
+
+	/*Get parameters and inputs: */
+	Input* enthalpy_input       = element->GetInput(EnthalpyEnum);                    _assert_(enthalpy_input); //TODO: check EnthalpyPicard?
+	Input* pressure_input		 = element->GetInput(PressureEnum);							 _assert_(pressure_input);
+	Input* watercolumn_input	 = element->GetInput(WatercolumnEnum);							 _assert_(watercolumn_input);
+	Input* meltingrate_input	 = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);							 _assert_(meltingrate_input);
+
+	/*Fetch indices of basal & surface nodes for this finite element*/
+	Penta *penta =  (Penta *) element; // TODO: add Basal-/SurfaceNodeIndices to element.h, and change this to Element*
+	penta->BasalNodeIndices(&numindices,&indices,element->GetElementType());
+	penta->SurfaceNodeIndices(&numindicesup,&indicesup,element->GetElementType());	_assert_(numindices==numindicesup);
+
+	GaussPenta* gauss=new GaussPenta();
+	GaussPenta* gaussup=new GaussPenta();
+
+	for(int i=0;i<numindices;i++){
+		gauss->GaussNode(element->GetElementType(),indices[i]);
+		gaussup->GaussNode(element->GetElementType(),indicesup[i]);
+		
+		enthalpy_input->GetInputValue(&enthalpy,gauss);
+		enthalpy_input->GetInputValue(&enthalpyup,gaussup);
+		pressure_input->GetInputValue(&pressure,gauss);
+		pressure_input->GetInputValue(&pressureup,gaussup);
+		watercolumn_input->GetInputValue(&watercolumn,gauss);
+		meltingrate_input->GetInputValue(&meltingrate,gauss);
+
+		state=GetThermalBasalCondition(element, enthalpy, enthalpyup, pressure, pressureup, watercolumn, meltingrate);
+
+		switch (state) {
+			case 0:
+				// cold, dry base: apply basal surface forcing
+				vec_spc->SetValue(element->nodes[i]->Sid(),0.,INS_VAL);
+				break;
+			case 1:
+				// cold, wet base: keep at pressure melting point 
+				vec_spc->SetValue(element->nodes[i]->Sid(),1.,INS_VAL);
+				break;
+			case 2:
+				// temperate, thin refreezing base: release spc
+				vec_spc->SetValue(element->nodes[i]->Sid(),0.,INS_VAL);
+				break;
+			case 3:
+				// temperate, thin melting base: set spc
+				vec_spc->SetValue(element->nodes[i]->Sid(),1.,INS_VAL);
+				break;
+			case 4:
+				// temperate, thick melting base: set grad H*n=0
+				vec_spc->SetValue(element->nodes[i]->Sid(),0.,INS_VAL);
+				break;
+			default:
+				_printf0_("	unknown thermal basal state found!");
+		}
+
+	}
+
+	/*Free ressources:*/
+	xDelete<int>(indices);
+	xDelete<int>(indicesup);
+	delete gauss;
+	delete gaussup;
+}/*}}}*/
+void           EnthalpyAnalysis::GetBConduct(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3 B4 B5 B6] where Bi is of size 5*NDOF1. 
+	 * For node i, Bi' can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi_conduct=[ dh/dx ]
+	 *                  [ dh/dy ]
+	 *                  [ dh/dz ]
+	 * where h is the interpolation function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 3x(NDOF1*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(3*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		B[numnodes*0+i] = dbasis[0*numnodes+i];
+		B[numnodes*1+i] = dbasis[1*numnodes+i];
+		B[numnodes*2+i] = dbasis[2*numnodes+i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           EnthalpyAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,EnthalpyEnum);
+}/*}}}*/
+int            EnthalpyAnalysis::GetThermalBasalCondition(Element* element, IssmDouble enthalpy, IssmDouble enthalpyup, IssmDouble pressure, IssmDouble pressureup, IssmDouble watercolumn, IssmDouble meltingrate){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return -1;
+
+	/* Only update Constraints at the base of grounded ice*/
+	if(!(element->IsOnBase())) return -1;
+
+	/*Intermediary*/
+	int state=-1;
+	IssmDouble	dt;
+
+	/*Get parameters and inputs: */
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+
+	if(enthalpy<PureIceEnthalpy(element,pressure)){
+		if(watercolumn<=0.) state=0; // cold, dry base
+		else state=1; // cold, wet base (refreezing)
+	}
+	else{
+		if(enthalpyup<PureIceEnthalpy(element,pressureup)){
+			if((dt==0.) && (meltingrate<0.)) state=2;	// refreezing temperate base (non-physical, only for steadystate solver)
+			else	state=3; // temperate base, but no temperate layer
+		}
+		else state=4; // temperate layer with positive thickness
+	}
+
+	_assert_(state>=0);
+	return state;
+}/*}}}*/
+IssmDouble     EnthalpyAnalysis::GetWetIceConductivity(Element* element, IssmDouble enthalpy, IssmDouble pressure){/*{{{*/
+
+	IssmDouble temperature, waterfraction;
+	IssmDouble kappa_w = 0.6; // thermal conductivity of water (in W/m/K)
+	IssmDouble kappa_i = element->GetMaterialParameter(MaterialsThermalconductivityEnum);
+	element->EnthalpyToThermal(&temperature, &waterfraction, enthalpy, pressure);
+
+	return (1.-waterfraction)*kappa_i + waterfraction*kappa_w;
+}/*}}}*/
+void           EnthalpyAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           EnthalpyAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	bool        converged;
+	int         i,rheology_law;
+	IssmDouble  B_average,s_average,T_average=0.,P_average=0.;
+	int        *doflist   = NULL;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes    = element->GetNumberOfNodes();
+
+	/*Fetch dof list and allocate solution vector*/
+	element->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values        = xNew<IssmDouble>(numnodes);
+	IssmDouble* pressure      = xNew<IssmDouble>(numnodes);
+	IssmDouble* surface       = xNew<IssmDouble>(numnodes);
+	IssmDouble* B             = xNew<IssmDouble>(numnodes);
+	IssmDouble* temperature   = xNew<IssmDouble>(numnodes);
+	IssmDouble* waterfraction = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numnodes;i++){
+		values[i]=solution[doflist[i]];
+
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Get all inputs and parameters*/
+	element->GetInputValue(&converged,ConvergedEnum);
+	element->GetInputListOnNodes(&pressure[0],PressureEnum);
+	if(converged){
+		for(i=0;i<numnodes;i++){
+			element->EnthalpyToThermal(&temperature[i],&waterfraction[i],values[i],pressure[i]);
+			if(waterfraction[i]<0.) _error_("Negative water fraction found in solution vector");
+			//if(waterfraction[i]>1.) _error_("Water fraction >1 found in solution vector");
+		}
+		element->AddInput(EnthalpyEnum,values,element->GetElementType());
+		element->AddInput(WaterfractionEnum,waterfraction,element->GetElementType());
+		element->AddInput(TemperatureEnum,temperature,element->GetElementType());
+
+		/*Update Rheology only if converged (we must make sure that the temperature is below melting point
+		 * otherwise the rheology could be negative*/
+		element->FindParam(&rheology_law,MaterialsRheologyLawEnum);
+		element->GetInputListOnNodes(&surface[0],SurfaceEnum);
+		switch(rheology_law){
+			case NoneEnum:
+				/*Do nothing: B is not temperature dependent*/
+				break;
+			case CuffeyEnum:
+				for(i=0;i<numnodes;i++) B[i]=Cuffey(temperature[i]);
+				element->AddInput(MaterialsRheologyBEnum,&B[0],element->GetElementType());
+				break;
+			case CuffeyTemperateEnum:
+				for(i=0;i<numnodes;i++) B[i]=CuffeyTemperate(temperature[i], waterfraction[i], element->GetMaterialParameter(MaterialsRheologyNEnum));
+				element->AddInput(MaterialsRheologyBEnum,&B[0],element->GetElementType());
+				break;
+			case PatersonEnum:
+				for(i=0;i<numnodes;i++) B[i]=Paterson(temperature[i]);
+				element->AddInput(MaterialsRheologyBEnum,&B[0],element->GetElementType());
+				break;
+			case ArrheniusEnum:
+				element->GetVerticesCoordinates(&xyz_list);
+				for(i=0;i<numnodes;i++) B[i]=Arrhenius(temperature[i],surface[i]-xyz_list[i*3+2],element->GetMaterialParameter(MaterialsRheologyNEnum));
+				element->AddInput(MaterialsRheologyBEnum,&B[0],element->GetElementType());
+				break;
+			case LliboutryDuvalEnum:
+				for(i=0;i<numnodes;i++) B[i]=LliboutryDuval(values[i],pressure[i],element->GetMaterialParameter(MaterialsRheologyNEnum),element->GetMaterialParameter(MaterialsBetaEnum),element->GetMaterialParameter(ConstantsReferencetemperatureEnum),element->GetMaterialParameter(MaterialsHeatcapacityEnum),element->GetMaterialParameter(MaterialsLatentheatEnum)); 
+				element->AddInput(MaterialsRheologyBEnum,&B[0],element->GetElementType()); 
+				break; 
+			default: _error_("Rheology law " << EnumToStringx(rheology_law) << " not supported yet");
+		}
+	}
+	else{
+		element->AddInput(EnthalpyPicardEnum,values,element->GetElementType());
+	}
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(surface);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(temperature);
+	xDelete<IssmDouble>(waterfraction);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           EnthalpyAnalysis::PostProcessing(FemModel* femmodel){/*{{{*/
+
+	/*Intermediaries*/
+	bool computebasalmeltingrates=true;
+	bool drainicecolumn=true;
+	IssmDouble dt;
+
+	femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+
+	if(drainicecolumn && (dt>0.))	DrainWaterfraction(femmodel);
+	if(computebasalmeltingrates)	ComputeBasalMeltingrate(femmodel);
+
+}/*}}}*/
+IssmDouble     EnthalpyAnalysis::PureIceEnthalpy(Element* element,IssmDouble pressure){/*{{{*/
+
+	IssmDouble heatcapacity         = element->GetMaterialParameter(MaterialsHeatcapacityEnum);
+	IssmDouble referencetemperature = element->GetMaterialParameter(ConstantsReferencetemperatureEnum);
+
+	return heatcapacity*(TMeltingPoint(element,pressure)-referencetemperature);
+}/*}}}*/
+IssmDouble     EnthalpyAnalysis::TMeltingPoint(Element* element,IssmDouble pressure){/*{{{*/
+
+	IssmDouble meltingpoint = element->GetMaterialParameter(MaterialsMeltingpointEnum);
+	IssmDouble beta         = element->GetMaterialParameter(MaterialsBetaEnum);
+
+	return meltingpoint-beta*pressure;
+}/*}}}*/
+void           EnthalpyAnalysis::UpdateBasalConstraints(FemModel* femmodel){/*{{{*/
+
+	/*Update basal dirichlet BCs for enthalpy: */
+	Vector<IssmDouble>* spc           = NULL;
+	IssmDouble*         serial_spc    = NULL;
+
+	spc=new Vector<IssmDouble>(femmodel->nodes->NumberOfNodes(EnthalpyAnalysisEnum));
+	/*First create a vector to figure out what elements should be constrained*/
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		GetBasalConstraints(spc,element);
+	}
+
+	/*Assemble and serialize*/
+	spc->Assemble();
+	serial_spc=spc->ToMPISerial();
+	delete spc;
+
+	/*Then update basal constraints nodes accordingly*/
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		ApplyBasalConstraints(serial_spc,element);
+	}
+
+	femmodel->UpdateConstraintsx();
+
+	/*Delete*/
+	xDelete<IssmDouble>(serial_spc);
+}/*}}}*/
+void           EnthalpyAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/EnthalpyAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/EnthalpyAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/EnthalpyAnalysis.h	(revision 21239)
@@ -0,0 +1,59 @@
+/*! \file EnthalpyAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _EnthalpyAnalysis_
+#define _EnthalpyAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+#include "../classes/classes.h"
+
+class EnthalpyAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		static void       ApplyBasalConstraints(IssmDouble* serial_spc,Element* element);
+		static void       ComputeBasalMeltingrate(FemModel* femmodel);
+		static void       ComputeBasalMeltingrate(Element* element);
+		void              Core(FemModel* femmodel);
+		ElementVector*    CreateDVector(Element* element);
+		ElementMatrix*    CreateJacobianMatrix(Element* element);
+		ElementMatrix*    CreateKMatrix(Element* element);
+		ElementMatrix*    CreateKMatrixVolume(Element* element);
+		ElementMatrix*    CreateKMatrixShelf(Element* element);
+		ElementVector*    CreatePVector(Element* element);
+		ElementVector*    CreatePVectorVolume(Element* element);
+		ElementVector*    CreatePVectorSheet(Element* element);
+		ElementVector*    CreatePVectorShelf(Element* element);
+		static void       DrainWaterfraction(FemModel* femmodel);
+		static void       DrainWaterfraction(Element* element, IssmDouble* pdrainrate_element);
+		static void       DrainWaterfractionIcecolumn(Element* element);
+		static IssmDouble EnthalpyDiffusionParameter(Element* element,IssmDouble enthalpy,IssmDouble pressure);
+		static IssmDouble EnthalpyDiffusionParameterVolume(Element* element,int enthalpy_enum);
+		void              GetBAdvec(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void              GetBAdvecprime(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		static void       GetBasalConstraints(Vector<IssmDouble>* vec_spc,Element* element);
+		static void       GetBasalConstraintsSteadystate(Vector<IssmDouble>* vec_spc,Element* element);
+		static void       GetBasalConstraintsTransient(Vector<IssmDouble>* vec_spc,Element* element);
+		void              GetBConduct(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void              GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		static int        GetThermalBasalCondition(Element* element, IssmDouble enthalpy, IssmDouble enthalpy_up, IssmDouble pressure, IssmDouble pressure_up, IssmDouble watercolumn, IssmDouble meltingrate);
+		static IssmDouble GetWetIceConductivity(Element* element, IssmDouble enthalpy, IssmDouble pressure);
+		void              GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void              InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		static void       PostProcessing(FemModel* femmodel);
+		static IssmDouble PureIceEnthalpy(Element* element,IssmDouble pressure);
+		static IssmDouble TMeltingPoint(Element* element,IssmDouble pressure);
+		static void       UpdateBasalConstraints(FemModel* femmodel);
+		void              UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/EnumToAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/EnumToAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/EnumToAnalysis.cpp	(revision 21239)
@@ -0,0 +1,120 @@
+/*
+* \file EnumToAnalysis.cpp
+* \brief: output class depending on enum
+*
+*   WARNING: DO NOT MODIFY THIS FILE
+*            this file has been automatically generated by Synchronize.sh
+*            Please read README for more information
+*/
+
+#include "./analyses.h"
+#include "../shared/shared.h"
+
+Analysis* EnumToAnalysis(int analysis_enum){
+
+	switch(analysis_enum){
+		#ifdef _HAVE_SMB_
+		case SmbAnalysisEnum : return new SmbAnalysis();
+		#endif
+		#ifdef _HAVE_ADJOINTBALANCETHICKNESS_
+		case AdjointBalancethicknessAnalysisEnum : return new AdjointBalancethicknessAnalysis();
+		#endif
+		#ifdef _HAVE_ADJOINTBALANCETHICKNESS2_
+		case AdjointBalancethickness2AnalysisEnum : return new AdjointBalancethickness2Analysis();
+		#endif
+		#ifdef _HAVE_ADJOINTHORIZ_
+		case AdjointHorizAnalysisEnum : return new AdjointHorizAnalysis();
+		#endif
+		#ifdef _HAVE_BALANCETHICKNESS_
+		case BalancethicknessAnalysisEnum : return new BalancethicknessAnalysis();
+		#endif
+		#ifdef _HAVE_BALANCETHICKNESS2_
+		case Balancethickness2AnalysisEnum : return new Balancethickness2Analysis();
+		#endif
+		#ifdef _HAVE_BALANCETHICKNESSSOFT_
+		case BalancethicknessSoftAnalysisEnum : return new BalancethicknessSoftAnalysis();
+		#endif
+		#ifdef _HAVE_BALANCEVELOCITY_
+		case BalancevelocityAnalysisEnum : return new BalancevelocityAnalysis();
+		#endif
+		#ifdef _HAVE_L2PROJECTIONEPL_
+		case L2ProjectionEPLAnalysisEnum : return new L2ProjectionEPLAnalysis();
+		#endif
+		#ifdef _HAVE_L2PROJECTIONBASE_
+		case L2ProjectionBaseAnalysisEnum : return new L2ProjectionBaseAnalysis();
+		#endif
+		#ifdef _HAVE_DAMAGEEVOLUTION_
+		case DamageEvolutionAnalysisEnum : return new DamageEvolutionAnalysis();
+		#endif
+		#ifdef _HAVE_STRESSBALANCE_
+		case StressbalanceAnalysisEnum : return new StressbalanceAnalysis();
+		#endif
+		#ifdef _HAVE_STRESSBALANCESIA_
+		case StressbalanceSIAAnalysisEnum : return new StressbalanceSIAAnalysis();
+		#endif
+		#ifdef _HAVE_STRESSBALANCEVERTICAL_
+		case StressbalanceVerticalAnalysisEnum : return new StressbalanceVerticalAnalysis();
+		#endif
+		#ifdef _HAVE_ENTHALPY_
+		case EnthalpyAnalysisEnum : return new EnthalpyAnalysis();
+		#endif
+		#ifdef _HAVE_HYDROLOGYSHREVE_
+		case HydrologyShreveAnalysisEnum : return new HydrologyShreveAnalysis();
+		#endif
+		#ifdef _HAVE_HYDROLOGYDCINEFFICIENT_
+		case HydrologyDCInefficientAnalysisEnum : return new HydrologyDCInefficientAnalysis();
+		#endif
+		#ifdef _HAVE_HYDROLOGYDCEFFICIENT_
+		case HydrologyDCEfficientAnalysisEnum : return new HydrologyDCEfficientAnalysis();
+		#endif
+		#ifdef _HAVE_HYDROLOGYSOMMERS_
+		case HydrologySommersAnalysisEnum : return new HydrologySommersAnalysis();
+		#endif
+		#ifdef _HAVE_MELTING_
+		case MeltingAnalysisEnum : return new MeltingAnalysis();
+		#endif
+		#ifdef _HAVE_MASSTRANSPORT_
+		case MasstransportAnalysisEnum : return new MasstransportAnalysis();
+		#endif
+		#ifdef _HAVE_FREESURFACEBASE_
+		case FreeSurfaceBaseAnalysisEnum : return new FreeSurfaceBaseAnalysis();
+		#endif
+		#ifdef _HAVE_FREESURFACETOP_
+		case FreeSurfaceTopAnalysisEnum : return new FreeSurfaceTopAnalysis();
+		#endif
+		#ifdef _HAVE_EXTRUDEFROMBASE_
+		case ExtrudeFromBaseAnalysisEnum : return new ExtrudeFromBaseAnalysis();
+		#endif
+		#ifdef _HAVE_EXTRUDEFROMTOP_
+		case ExtrudeFromTopAnalysisEnum : return new ExtrudeFromTopAnalysis();
+		#endif
+		#ifdef _HAVE_DEPTHAVERAGE_
+		case DepthAverageAnalysisEnum : return new DepthAverageAnalysis();
+		#endif
+		#ifdef _HAVE_SEALEVELRISE_
+		case SealevelriseAnalysisEnum : return new SealevelriseAnalysis();
+		#endif
+		#ifdef _HAVE_SMOOTH_
+		case SmoothAnalysisEnum : return new SmoothAnalysis();
+		#endif
+		#ifdef _HAVE_THERMAL_
+		case ThermalAnalysisEnum : return new ThermalAnalysis();
+		#endif
+		#ifdef _HAVE_UZAWAPRESSURE_
+		case UzawaPressureAnalysisEnum : return new UzawaPressureAnalysis();
+		#endif
+		#ifdef _HAVE_GIA_
+		case GiaAnalysisEnum : return new GiaAnalysis();
+		#endif
+		#ifdef _HAVE_MESHDEFORMATION_
+		case MeshdeformationAnalysisEnum : return new MeshdeformationAnalysis();
+		#endif
+		#ifdef _HAVE_LEVELSET_
+		case LevelsetAnalysisEnum : return new LevelsetAnalysis();
+		#endif
+		#ifdef _HAVE_EXTRAPOLATION_
+		case ExtrapolationAnalysisEnum : return new ExtrapolationAnalysis();
+		#endif
+		default : _error_("enum provided not supported ("<<EnumToStringx(analysis_enum)<<")");
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/EnumToAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/EnumToAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/EnumToAnalysis.h	(revision 21239)
@@ -0,0 +1,26 @@
+#ifndef _ENUMTOANALYSIS_
+#define _ENUMTOANALYSIS_
+
+class Analysis;
+
+Analysis* EnumToAnalysis(int analysis_enum);
+
+#endif
+		/*Model processing*/
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void UpdateConstraints(FemModel* femmodel);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ExtrapolationAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ExtrapolationAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ExtrapolationAnalysis.cpp	(revision 21239)
@@ -0,0 +1,380 @@
+#include "./ExtrapolationAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void ExtrapolationAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	// do nothing for now
+	return;
+}
+/*}}}*/
+void ExtrapolationAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	//	do nothing for now
+	return;
+}/*}}}*/
+void ExtrapolationAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+	int finiteelement=P1Enum;
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,ExtrapolationAnalysisEnum,finiteelement);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}
+/*}}}*/
+int  ExtrapolationAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}
+/*}}}*/
+void ExtrapolationAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+	int    finiteelement;
+
+	/*Finite element type*/
+	finiteelement = P1Enum;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+}
+/*}}}*/
+void ExtrapolationAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+	//do nothing for now
+	return;
+}
+/*}}}*/
+
+/*Finite element Analysis*/
+void           ExtrapolationAnalysis::Core(FemModel* femmodel){/*{{{*/
+
+	/* Intermediaries */
+	bool save_results;
+	int extvar_enum; 
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&extvar_enum, ExtrapolationVariableEnum);
+
+	/*activate formulation: */
+	femmodel->SetCurrentConfiguration(ExtrapolationAnalysisEnum);
+
+	if(VerboseSolution()) _printf0_("extrapolation of " << EnumToStringx(extvar_enum) << ": call computational core:\n");
+	solutionsequence_linear(femmodel);
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		femmodel->RequestedOutputsx(&femmodel->results,&extvar_enum,1);
+	}
+}/*}}}*/
+ElementVector* ExtrapolationAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* ExtrapolationAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+	/* Jacobian required for the Newton solver */
+	_error_("not implemented yet");
+}/*}}}*/
+ElementMatrix* ExtrapolationAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	int	dim, domaintype, extrapolationcase;
+	int	i,row,col,stabilization;
+	bool	extrapolatebydiffusion;
+	IssmDouble Jdet,D_scalar,h;
+	IssmDouble norm_dlsf;
+	IssmDouble hx,hy,hz,kappa;
+	IssmDouble*	xyz_list = NULL;
+	Element*		workelement=NULL;
+
+	/*Get problem case*/
+	extrapolationcase=GetExtrapolationCase(element);
+	switch(extrapolationcase){
+		case 0:
+			if(!element->IsOnBase()) return NULL; 
+			workelement = element->SpawnBasalElement(); 
+			break;
+		case 1: case 2: case 3: workelement=element; break;
+	}
+	/* get extrapolation dimension */
+	workelement->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum: dim=1; break;
+		case Domain2DhorizontalEnum: dim=2; break;
+		case Domain3DEnum: dim=3; break;
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = workelement->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = workelement->NewElementMatrix();
+	IssmDouble*    B      = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    Bprime = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*		D	  = xNew<IssmDouble>(dim*dim);
+	IssmDouble*		dlsf  = xNew<IssmDouble>(dim);
+	IssmDouble*		normal= xNew<IssmDouble>(dim);
+
+	/*Retrieve all inputs and parameters*/
+	Input* lsf_slopex_input=workelement->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input);
+	Input* lsf_slopey_input=workelement->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input);
+	workelement->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=workelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){/*{{{*/
+		gauss->GaussPoint(ig);
+
+		workelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		GetB(B,workelement,xyz_list,gauss,dim);
+		GetBprime(Bprime,workelement,xyz_list,gauss,dim);
+		
+		D_scalar=gauss->weight*Jdet;
+
+		extrapolatebydiffusion=true;
+		if(extrapolatebydiffusion){
+			/* diffuse values outward */
+			for(row=0;row<dim;row++)
+				for(col=0;col<dim;col++)
+					if(row==col && row<2) //extrapolate only in xy-plane
+						D[row*dim+col] = D_scalar;
+					else
+						D[row*dim+col] = 0.;
+
+			TripleMultiply(Bprime,dim,numnodes,1,
+					D,dim,dim,0,
+					Bprime,dim,numnodes,0,
+					&Ke->values[0],1);
+		}
+		else{
+			/* extrapolate values along normal */
+			/* Get normal on ice boundary */
+			lsf_slopex_input->GetInputValue(&dlsf[0],gauss);
+			if(dim>1)
+				lsf_slopey_input->GetInputValue(&dlsf[1],gauss);
+			if(dim>2)
+				dlsf[2]=0.;
+			norm_dlsf=0.;
+			for(i=0;i<dim;i++)	norm_dlsf+=dlsf[i]*dlsf[i]; 
+			norm_dlsf=sqrt(norm_dlsf); _assert_(norm_dlsf>0.);
+
+			if(norm_dlsf>0.)
+				for(i=0;i<dim;i++)	normal[i]=dlsf[i]/norm_dlsf;
+			else
+				for(i=0;i<dim;i++)	normal[i]=0.;
+			
+			for(row=0;row<dim;row++)
+				for(col=0;col<dim;col++)
+					if(row==col)
+						D[row*dim+col]=D_scalar*normal[row];
+					else
+						D[row*dim+col]=0.;
+			TripleMultiply(B,dim,numnodes,1,
+						D,dim,dim,0,
+						Bprime,dim,numnodes,0,
+						&Ke->values[0],1);
+
+			/* stabilization *//*{{{*/
+			/* do not use streamline upwinding for extrapolation: it yields oscillating results due to diffusion along normal direction, but none across */
+			stabilization=1;
+			if (stabilization==0){/* no stabilization, do nothing*/}
+			else if(stabilization==1){
+				/* Artificial Diffusion */
+				workelement->ElementSizes(&hx,&hy,&hz);
+				h=sqrt(pow(hx*normal[0],2) + pow(hy*normal[1],2));
+				kappa=h/2.+1.e-14; 
+				for(row=0;row<dim;row++)
+					for(col=0;col<dim;col++)
+						if(row==col)
+							D[row*dim+col]=D_scalar*kappa;
+						else
+							D[row*dim+col]=0.;
+				TripleMultiply(Bprime,dim,numnodes,1,
+							D,dim,dim,0,
+							Bprime,dim,numnodes,0,
+							&Ke->values[0],1);
+			}
+			/*}}}*/
+		}
+	}/*}}}*/
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(D);
+	xDelete<IssmDouble>(dlsf);
+	xDelete<IssmDouble>(normal);
+	delete gauss;
+	if(extrapolationcase==0){workelement->DeleteMaterials(); delete workelement;};
+	return Ke;
+
+}/*}}}*/
+ElementVector* ExtrapolationAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	Element* workelement=NULL;
+
+	/*Get problem dimension*/
+	int extrapolationcase=GetExtrapolationCase(element);
+	switch(extrapolationcase){
+		case 0: 
+			if(!element->IsOnBase()) return NULL; 
+			workelement = element->SpawnBasalElement(); 
+			break;
+		case 1: case 2: case 3: workelement=element; break;
+	}
+
+	/*Fetch number of nodes */
+	int numnodes = workelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe = workelement->NewElementVector();
+	for(int i=0;i<numnodes;i++) 
+		pe->values[i]=0.; 
+
+	if(extrapolationcase==0){workelement->DeleteMaterials(); delete workelement;};
+	return pe;
+}/*}}}*/
+void           ExtrapolationAnalysis::GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss, int dim){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3] where Bi is of size 3*NDOF2. 
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi=[ N ]
+	 *          [ N ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B_prog has been allocated already, of size: 2x(NDOF1*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions*/
+	IssmDouble* basis=xNew<IssmDouble>(numnodes);
+	element->NodalFunctions(basis,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++)
+		for(int d=0;d<dim;d++)
+			B[numnodes*d+i] = basis[i];
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           ExtrapolationAnalysis::GetBprime(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss, int dim){/*{{{*/
+	/*Compute B'  matrix. B'=[B1' B2' B3'] where Bi' is of size 3*NDOF2. 
+	 * For node i, Bi' can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi_prime=[ dN/dx ]
+	 *                [ dN/dy ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B' has been allocated already, of size: 3x(NDOF2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(dim*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B': */
+	for(int i=0;i<numnodes;i++)
+		for(int d=0;d<dim;d++)
+			Bprime[numnodes*d+i] = dbasis[d*numnodes+i];
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+
+}/*}}}*/
+void           ExtrapolationAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void           ExtrapolationAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           ExtrapolationAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int extrapolationvariable, extrapolationcase;
+	extrapolationcase=GetExtrapolationCase(element);
+	element->FindParam(&extrapolationvariable, ExtrapolationVariableEnum);
+	switch(extrapolationcase){
+		case 0:
+			element->InputUpdateFromSolutionOneDof(solution,extrapolationvariable);
+			break;
+		case 1:
+			element->InputUpdateFromSolutionOneDof(solution,extrapolationvariable);
+			break;
+		case 2:
+			element->InputUpdateFromSolutionOneDofCollapsed(solution,extrapolationvariable);
+			break;
+		case 3:
+			element->InputUpdateFromSolutionOneDof(solution,extrapolationvariable);
+			break;
+	}
+}/*}}}*/
+int				ExtrapolationAnalysis::GetExtrapolationCase(Element* element){/*{{{*/
+
+	/* Get case of extrapolation, depending on domain quality, and extrapolation variable */
+	int domaintype, extrapolationvariable;
+	int extrapolationcase;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum: extrapolationcase=0; break;
+		case Domain2DhorizontalEnum: extrapolationcase=1;break;
+		case Domain3DEnum:  
+			element->FindParam(&extrapolationvariable, ExtrapolationVariableEnum);
+			if(extrapolationvariable==ThicknessEnum) extrapolationcase=2; // scalar fields that are constant along z-axis
+			else extrapolationcase=3; // scalar fields that vary along z-axis
+			break;
+	}
+	return extrapolationcase;
+}/*}}}*/
+void           ExtrapolationAnalysis::SetConstraintsOnIce(Element* element){/*{{{*/
+
+	int numnodes=element->GetNumberOfNodes();	
+
+	/* Intermediaries */
+	int extvar_enum;
+	IssmDouble phi,value;
+	Node* node = NULL;
+
+	/* Get parameters */
+	element->FindParam(&extvar_enum, ExtrapolationVariableEnum);
+	
+	Input* levelset_input=element->GetInput(MaskIceLevelsetEnum); _assert_(levelset_input);
+	Input* extvar_input=element->GetInput(extvar_enum); _assert_(extvar_input);
+
+	Gauss* gauss=element->NewGauss();
+	for(int in=0;in<numnodes;in++){
+		gauss->GaussNode(element->GetElementType(),in);
+		node=element->GetNode(in);
+		levelset_input->GetInputValue(&phi,gauss);
+		if(node->IsActive()){
+			if(phi<=0.){
+				/* if ice, set dirichlet BC */
+				extvar_input->GetInputValue(&value,gauss);
+				node->ApplyConstraint(0,value);
+			}
+			else {
+				/* no ice, set no spc */
+				node->DofInFSet(0); 
+			}
+		}
+	}
+	delete gauss;
+}/*}}}*/
+void           ExtrapolationAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		this->SetConstraintsOnIce(element);
+	}
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ExtrapolationAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ExtrapolationAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ExtrapolationAnalysis.h	(revision 21239)
@@ -0,0 +1,37 @@
+/*! \file ExtrapolationAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _ExtrapolationAnalysis_
+#define _ExtrapolationAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class ExtrapolationAnalysis: public Analysis{
+	
+ public:
+	/*Model processing*/
+	void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+	void CreateLoads(Loads* loads, IoModel* iomodel);
+	void CreateNodes(Nodes* nodes,IoModel* iomodel);
+	int  DofsPerNode(int** doflist,int domaintype,int approximation);
+	void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+	void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+	/*Finite element Analysis*/
+	void           Core(FemModel* femmodel);
+	ElementVector* CreateDVector(Element* element);
+	ElementMatrix* CreateJacobianMatrix(Element* element);
+	ElementMatrix* CreateKMatrix(Element* element);
+	ElementVector* CreatePVector(Element* element);
+	void           GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss, int dim);
+	void           GetBprime(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss, int dim);
+	void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+	void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+	void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+	int				GetExtrapolationCase(Element* element);
+	void           SetConstraintsOnIce(Element* element);
+	void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ExtrudeFromBaseAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ExtrudeFromBaseAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ExtrudeFromBaseAnalysis.cpp	(revision 21239)
@@ -0,0 +1,109 @@
+#include "./ExtrudeFromBaseAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void ExtrudeFromBaseAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void ExtrudeFromBaseAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void ExtrudeFromBaseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	::CreateNodes(nodes,iomodel,ExtrudeFromBaseAnalysisEnum,P1Enum);
+
+}/*}}}*/
+int  ExtrudeFromBaseAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void ExtrudeFromBaseAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	if(iomodel->domaintype==Domain2DverticalEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+	}
+}/*}}}*/
+void ExtrudeFromBaseAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           ExtrudeFromBaseAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* ExtrudeFromBaseAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* ExtrudeFromBaseAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* ExtrudeFromBaseAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble  Jdet,D;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get dimension*/
+	int dim;
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    dbasis = xNew<IssmDouble>(dim*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		D=gauss->weight*Jdet;
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += gauss->weight*Jdet*(dbasis[(dim-1)*numnodes+i]*dbasis[(dim-1)*numnodes+j]);
+			}
+		}
+	} 
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* ExtrudeFromBaseAnalysis::CreatePVector(Element* element){/*{{{*/
+	return NULL;
+}/*}}}*/
+void           ExtrudeFromBaseAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           ExtrudeFromBaseAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           ExtrudeFromBaseAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int inputenum;
+	element->FindParam(&inputenum,InputToExtrudeEnum);
+	element->InputUpdateFromSolutionOneDof(solution,inputenum);
+}/*}}}*/
+void           ExtrudeFromBaseAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ExtrudeFromBaseAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ExtrudeFromBaseAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ExtrudeFromBaseAnalysis.h	(revision 21239)
@@ -0,0 +1,33 @@
+/*! \file ExtrudeFromBaseAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _ExtrudeFromBaseAnalysis_
+#define _ExtrudeFromBaseAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class ExtrudeFromBaseAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ExtrudeFromTopAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ExtrudeFromTopAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ExtrudeFromTopAnalysis.cpp	(revision 21239)
@@ -0,0 +1,109 @@
+#include "./ExtrudeFromTopAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void ExtrudeFromTopAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void ExtrudeFromTopAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void ExtrudeFromTopAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	::CreateNodes(nodes,iomodel,ExtrudeFromTopAnalysisEnum,P1Enum);
+
+}/*}}}*/
+int  ExtrudeFromTopAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void ExtrudeFromTopAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	if(iomodel->domaintype==Domain2DverticalEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+	}
+}/*}}}*/
+void ExtrudeFromTopAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           ExtrudeFromTopAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* ExtrudeFromTopAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* ExtrudeFromTopAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* ExtrudeFromTopAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble  Jdet,D;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get dimension*/
+	int dim;
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    dbasis = xNew<IssmDouble>(dim*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		D=gauss->weight*Jdet;
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += gauss->weight*Jdet*(dbasis[(dim-1)*numnodes+i]*dbasis[(dim-1)*numnodes+j]);
+			}
+		}
+	} 
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* ExtrudeFromTopAnalysis::CreatePVector(Element* element){/*{{{*/
+	return NULL;
+}/*}}}*/
+void           ExtrudeFromTopAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           ExtrudeFromTopAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           ExtrudeFromTopAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int inputenum;
+	element->FindParam(&inputenum,InputToExtrudeEnum);
+	element->InputUpdateFromSolutionOneDof(solution,inputenum);
+}/*}}}*/
+void           ExtrudeFromTopAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ExtrudeFromTopAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ExtrudeFromTopAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ExtrudeFromTopAnalysis.h	(revision 21239)
@@ -0,0 +1,33 @@
+/*! \file ExtrudeFromTopAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _ExtrudeFromTopAnalysis_
+#define _ExtrudeFromTopAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class ExtrudeFromTopAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/FreeSurfaceBaseAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/FreeSurfaceBaseAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/FreeSurfaceBaseAnalysis.cpp	(revision 21239)
@@ -0,0 +1,405 @@
+#include "./FreeSurfaceBaseAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void FreeSurfaceBaseAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void FreeSurfaceBaseAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Intermediaries*/
+	int penpair_ids[2];
+	int count=0;
+	int numvertex_pairing;
+
+	/*Create Penpair for vertex_pairing: */
+	IssmDouble *vertex_pairing=NULL;
+	IssmDouble *nodeonbase=NULL;
+	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.masstransport.vertex_pairing");
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(&nodeonbase,NULL,NULL,"md.mesh.vertexonbase");
+	for(int i=0;i<numvertex_pairing;i++){
+
+		if(iomodel->my_vertices[reCast<int>(vertex_pairing[2*i+0])-1]){
+
+			/*In debugging mode, check that the second node is in the same cpu*/
+			_assert_(iomodel->my_vertices[reCast<int>(vertex_pairing[2*i+1])-1]);
+
+			/*Skip if one of the two is not on the bed*/
+			if(iomodel->domaintype!=Domain2DhorizontalEnum){
+				if(!(reCast<bool>(nodeonbase[reCast<int>(vertex_pairing[2*i+0])-1])) || !(reCast<bool>(nodeonbase[reCast<int>(vertex_pairing[2*i+1])-1]))) continue;
+			}
+
+			/*Get node ids*/
+			penpair_ids[0]=iomodel->nodecounter+reCast<int>(vertex_pairing[2*i+0]);
+			penpair_ids[1]=iomodel->nodecounter+reCast<int>(vertex_pairing[2*i+1]);
+
+			/*Create Load*/
+			loads->AddObject(new Penpair(
+							iomodel->loadcounter+count+1,
+							&penpair_ids[0],
+							FreeSurfaceBaseAnalysisEnum));
+			count++;
+		}
+	}
+
+	/*free ressources: */
+	iomodel->DeleteData(vertex_pairing,"md.masstransport.vertex_pairing");
+	iomodel->DeleteData(nodeonbase,"md.mesh.vertexonbase");
+}/*}}}*/
+void FreeSurfaceBaseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,FreeSurfaceBaseAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  FreeSurfaceBaseAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void FreeSurfaceBaseAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Now, is the model 3d? otherwise, do nothing: */
+	if (iomodel->domaintype==Domain2DhorizontalEnum)return;
+
+	/*Finite element type*/
+	int finiteelement = P1Enum;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(elements,"md.slr.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(elements,"md.basalforcings.floatingice_melting_rate",BasalforcingsFloatingiceMeltingRateEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vy",VyEnum);
+	if(iomodel->domaindim==3){
+		iomodel->FetchDataToInput(elements,"md.initialization.vz",VzEnum);
+	}
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+}/*}}}*/
+void FreeSurfaceBaseAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           FreeSurfaceBaseAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* FreeSurfaceBaseAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* FreeSurfaceBaseAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* FreeSurfaceBaseAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         domaintype,dim,stabilization;
+	Element*    basalelement = NULL;
+	IssmDouble *xyz_list  = NULL;
+	IssmDouble  Jdet,D_scalar,dt,h;
+	IssmDouble  vel,vx,vy;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			dim = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			dim = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			dim = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke     = basalelement->NewElementMatrix(NoneApproximationEnum);
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    B      = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    Bprime = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    D      = xNew<IssmDouble>(dim*dim);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	basalelement->FindParam(&stabilization,MasstransportStabilizationEnum);
+	Input* vx_input=basalelement->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=NULL;
+	if(dim>1){vy_input = basalelement->GetInput(VyEnum); _assert_(vy_input);}
+	h = basalelement->CharacteristicLength();
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+
+		vx_input->GetInputValue(&vx,gauss);
+		if(dim==2) vy_input->GetInputValue(&vy,gauss);
+
+		D_scalar=gauss->weight*Jdet;
+		TripleMultiply(basis,1,numnodes,1,
+					&D_scalar,1,1,0,
+					basis,1,numnodes,0,
+					&Ke->values[0],1);
+
+		GetB(B,basalelement,dim,xyz_list,gauss);
+		GetBprime(Bprime,basalelement,dim,xyz_list,gauss);
+
+		D_scalar=dt*gauss->weight*Jdet;
+		for(int i=0;i<dim*dim;i++) D[i]=0.;
+		D[0] = D_scalar*vx;
+		if(dim==2) D[1*dim+1] = D_scalar*vy;
+
+		TripleMultiply(B,dim,numnodes,1,
+					D,dim,dim,0,
+					Bprime,dim,numnodes,0,
+					&Ke->values[0],1);
+
+		if(stabilization==2){
+			/*Streamline upwinding*/
+			if(dim==1){
+			 vel=fabs(vx)+1.e-8;
+			 D[0] = h/(2.*vel)*vx*vx;
+			}
+			else{
+			 vel=sqrt(vx*vx+vy*vy)+1.e-8;
+			 D[0*dim+0]=h/(2*vel)*vx*vx;
+			 D[1*dim+0]=h/(2*vel)*vy*vx;
+			 D[0*dim+1]=h/(2*vel)*vx*vy;
+			 D[1*dim+1]=h/(2*vel)*vy*vy;
+			}
+		}
+		else if(stabilization==1){
+			/*SSA*/
+			if(dim==1){
+				vx_input->GetInputAverage(&vx);
+				D[0]=h/2.*fabs(vx);
+			}
+			else{
+				vx_input->GetInputAverage(&vx);
+				vy_input->GetInputAverage(&vy);
+				D[0*dim+0]=h/2.0*fabs(vx);
+				D[1*dim+1]=h/2.0*fabs(vy);
+			}
+		}
+		if(stabilization==1 || stabilization==2){
+			for(int i=0;i<dim*dim;i++) D[i]=D_scalar*D[i];
+			TripleMultiply(Bprime,dim,numnodes,1,
+						D,dim,dim,0,
+						Bprime,dim,numnodes,0,
+						&Ke->values[0],1);
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(D);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+ElementVector* FreeSurfaceBaseAnalysis::CreatePVector(Element* element){/*{{{*/
+	/*Intermediaries*/
+	int         domaintype,dim;
+	IssmDouble  Jdet,dt;
+	IssmDouble  gmb,fmb,mb,bed,phi,vz;
+	Element*    basalelement = NULL;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			dim = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			dim = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			dim = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = basalelement->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input* groundedice_input   = basalelement->GetInput(MaskGroundediceLevelsetEnum);              _assert_(groundedice_input);
+	Input* gmb_input           = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum);  _assert_(gmb_input);
+	Input* fmb_input           = basalelement->GetInput(BasalforcingsFloatingiceMeltingRateEnum);  _assert_(fmb_input);
+	Input* base_input          = basalelement->GetInput(BaseEnum);                                 _assert_(base_input);
+	Input* vz_input      = NULL;
+	switch(dim){
+		case 1: vz_input = basalelement->GetInput(VyEnum); _assert_(vz_input); break;
+		case 2: vz_input = basalelement->GetInput(VzEnum); _assert_(vz_input); break;
+		default: _error_("not implemented");
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+
+		vz_input->GetInputValue(&vz,gauss);
+		gmb_input->GetInputValue(&gmb,gauss);
+		fmb_input->GetInputValue(&fmb,gauss);
+		base_input->GetInputValue(&bed,gauss);
+		groundedice_input->GetInputValue(&phi,gauss);
+		if(phi>0) mb=gmb;
+		else mb=fmb;
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(bed+dt*(mb) + dt*vz)*basis[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return pe;
+
+}/*}}}*/
+void           FreeSurfaceBaseAnalysis::GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3] where Bi is of size 3*NDOF2. 
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi=[ N ]
+	 *          [ N ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B_prog has been allocated already, of size: 2x(NDOF1*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions*/
+	IssmDouble* basis=xNew<IssmDouble>(numnodes);
+	element->NodalFunctions(basis,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		for(int j=0;j<dim;j++){
+			B[numnodes*j+i] = basis[i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           FreeSurfaceBaseAnalysis::GetBprime(IssmDouble* Bprime,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B'  matrix. B'=[B1' B2' B3'] where Bi' is of size 3*NDOF2. 
+	 * For node i, Bi' can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi_prime=[ dN/dx ]
+	 *                [ dN/dy ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B' has been allocated already, of size: 3x(NDOF2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(dim*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B': */
+	for(int i=0;i<numnodes;i++){
+		for(int j=0;j<dim;j++){
+			Bprime[numnodes*j+i] = dbasis[j*numnodes+i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+
+}/*}}}*/
+void           FreeSurfaceBaseAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           FreeSurfaceBaseAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           FreeSurfaceBaseAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	element->InputUpdateFromSolutionOneDof(solution,BaseEnum);
+}/*}}}*/
+void           FreeSurfaceBaseAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+
+	/*Intermediary*/
+	IssmDouble phi,isonbase,base;
+
+	for(int i=0;i<femmodel->elements->Size();i++){
+
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		if(!element->IsOnBase()) continue;
+
+		int             numnodes = element->GetNumberOfNodes();
+		Input* groundedice_input = element->GetInput(MaskGroundediceLevelsetEnum);  _assert_(groundedice_input);
+		Input* onbase_input       = element->GetInput(MeshVertexonbaseEnum);          _assert_(onbase_input);
+		Input* base_input        = element->GetInput(BaseEnum);                     _assert_(base_input);
+
+		Gauss* gauss=element->NewGauss();
+		for(int iv=0;iv<numnodes;iv++){
+			gauss->GaussNode(element->GetElementType(),iv);
+			onbase_input->GetInputValue(&isonbase,gauss);
+			if(isonbase==1.){
+				groundedice_input->GetInputValue(&phi,gauss);
+				if(phi>=0.){
+					base_input->GetInputValue(&base,gauss);
+					element->nodes[iv]->ApplyConstraint(0,base);
+				}
+				else{
+					element->nodes[iv]->DofInFSet(0);
+				}
+			}
+		}
+		delete gauss;
+	}
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/FreeSurfaceBaseAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/FreeSurfaceBaseAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/FreeSurfaceBaseAnalysis.h	(revision 21239)
@@ -0,0 +1,35 @@
+/*! \file FreeSurfaceBaseAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _FreeSurfaceBaseAnalysis_
+#define _FreeSurfaceBaseAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class FreeSurfaceBaseAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBprime(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/FreeSurfaceTopAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/FreeSurfaceTopAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/FreeSurfaceTopAnalysis.cpp	(revision 21239)
@@ -0,0 +1,380 @@
+#include "./FreeSurfaceTopAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void FreeSurfaceTopAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void FreeSurfaceTopAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Intermediaries*/
+	int penpair_ids[2];
+	int count=0;
+	int numvertex_pairing;
+
+	/*Create Penpair for vertex_pairing: */
+	IssmDouble *vertex_pairing=NULL;
+	IssmDouble *nodeonsurface=NULL;
+	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.masstransport.vertex_pairing");
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(&nodeonsurface,NULL,NULL,"md.mesh.vertexonsurface");
+	for(int i=0;i<numvertex_pairing;i++){
+
+		if(iomodel->my_vertices[reCast<int>(vertex_pairing[2*i+0])-1]){
+
+			/*In debugging mode, check that the second node is in the same cpu*/
+			_assert_(iomodel->my_vertices[reCast<int>(vertex_pairing[2*i+1])-1]);
+
+			/*Skip if one of the two is not on the bed*/
+			if(iomodel->domaintype!=Domain2DhorizontalEnum){
+				if(!(reCast<bool>(nodeonsurface[reCast<int>(vertex_pairing[2*i+0])-1])) || !(reCast<bool>(nodeonsurface[reCast<int>(vertex_pairing[2*i+1])-1]))) continue;
+			}
+
+			/*Get node ids*/
+			penpair_ids[0]=iomodel->nodecounter+reCast<int>(vertex_pairing[2*i+0]);
+			penpair_ids[1]=iomodel->nodecounter+reCast<int>(vertex_pairing[2*i+1]);
+
+			/*Create Load*/
+			loads->AddObject(new Penpair(
+							iomodel->loadcounter+count+1,
+							&penpair_ids[0],
+							FreeSurfaceTopAnalysisEnum));
+			count++;
+		}
+	}
+
+	/*free ressources: */
+	iomodel->DeleteData(vertex_pairing,"md.masstransport.vertex_pairing");
+	iomodel->DeleteData(nodeonsurface,"md.mesh.vertexonsurface");
+}/*}}}*/
+void FreeSurfaceTopAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,FreeSurfaceTopAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  FreeSurfaceTopAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void FreeSurfaceTopAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Now, is the model 3d? otherwise, do nothing: */
+	if (iomodel->domaintype==Domain2DhorizontalEnum)return;
+
+	int smb_model;
+	int finiteelement = P1Enum;
+
+	/*Fetch data needed: */
+	iomodel->FindConstant(&smb_model,"md.smb.model");
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(elements,"md.slr.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vx",VxEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+	}
+	if(iomodel->domaindim==3){
+		iomodel->FetchDataToInput(elements,"md.initialization.vz",VzEnum);
+	}
+	switch(smb_model){
+		case SMBforcingEnum:
+			iomodel->FetchDataToInput(elements,"md.smb.mass_balance",SmbMassBalanceEnum,0.);
+			break;
+		default:
+			/*Nothing for now*/
+			;
+	}
+}/*}}}*/
+void FreeSurfaceTopAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           FreeSurfaceTopAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* FreeSurfaceTopAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* FreeSurfaceTopAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* FreeSurfaceTopAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         domaintype,dim,stabilization;
+	Element*    topelement = NULL;
+	IssmDouble *xyz_list  = NULL;
+	IssmDouble  Jdet,D_scalar,dt,h;
+	IssmDouble  vel,vx,vy;
+
+	/*Get top element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			topelement = element;
+			dim = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnSurface()) return NULL;
+			topelement = element->SpawnTopElement();
+			dim = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnSurface()) return NULL;
+			topelement = element->SpawnTopElement();
+			dim = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = topelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke     = topelement->NewElementMatrix(NoneApproximationEnum);
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    B      = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    Bprime = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    D      = xNew<IssmDouble>(dim*dim);
+
+	/*Retrieve all inputs and parameters*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+	topelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	topelement->FindParam(&stabilization,MasstransportStabilizationEnum);
+	Input* vx_input=topelement->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=NULL;
+	if(dim>1){vy_input = topelement->GetInput(VyEnum); _assert_(vy_input);}
+	h = topelement->CharacteristicLength();
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		topelement->NodalFunctions(basis,gauss);
+
+		vx_input->GetInputValue(&vx,gauss);
+		if(dim==2) vy_input->GetInputValue(&vy,gauss);
+
+		D_scalar=gauss->weight*Jdet;
+		TripleMultiply(basis,1,numnodes,1,
+					&D_scalar,1,1,0,
+					basis,1,numnodes,0,
+					&Ke->values[0],1);
+
+		GetB(B,topelement,dim,xyz_list,gauss);
+		GetBprime(Bprime,topelement,dim,xyz_list,gauss);
+
+		D_scalar=dt*gauss->weight*Jdet;
+		for(int i=0;i<dim*dim;i++) D[i]=0.;
+		D[0] = D_scalar*vx;
+		if(dim==2) D[1*dim+1]=D_scalar*vy;
+
+		TripleMultiply(B,dim,numnodes,1,
+					D,dim,dim,0,
+					Bprime,dim,numnodes,0,
+					&Ke->values[0],1);
+
+		if(stabilization==2){
+			/*Streamline upwinding*/
+			if(dim==1){
+				vel=fabs(vx)+1.e-8;
+				D[0] = h/(2.*vel)*vx*vx;
+			}
+			else{
+				vel=sqrt(vx*vx+vy*vy)+1.e-8;
+				D[0*dim+0]=h/(2*vel)*vx*vx;
+				D[1*dim+0]=h/(2*vel)*vy*vx;
+				D[0*dim+1]=h/(2*vel)*vx*vy;
+				D[1*dim+1]=h/(2*vel)*vy*vy;
+			}
+		}
+		else if(stabilization==1){
+			/*SSA*/
+			if(dim==1){
+				vx_input->GetInputAverage(&vx);
+				D[0]=h/2.*fabs(vx);
+			}
+			else{
+				vx_input->GetInputAverage(&vx);
+				vy_input->GetInputAverage(&vy);
+				D[0*dim+0]=h/2.0*fabs(vx);
+				D[1*dim+1]=h/2.0*fabs(vy);
+			}
+		}
+		if(stabilization==1 || stabilization==2){
+			for(int i=0;i<dim*dim;i++) D[i]=D_scalar*D[i];
+			TripleMultiply(Bprime,dim,numnodes,1,
+						D,dim,dim,0,
+						Bprime,dim,numnodes,0,
+						&Ke->values[0],1);
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(D);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
+	return Ke;
+}/*}}}*/
+ElementVector* FreeSurfaceTopAnalysis::CreatePVector(Element* element){/*{{{*/
+	/*Intermediaries*/
+	int         domaintype,dim;
+	IssmDouble  Jdet,dt;
+	IssmDouble  ms,surface,vz;
+	Element*    topelement = NULL;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Get top element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			topelement = element;
+			dim = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnSurface()) return NULL;
+			topelement = element->SpawnTopElement();
+			dim = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnSurface()) return NULL;
+			topelement = element->SpawnTopElement();
+			dim = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = topelement->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = topelement->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+	topelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input* ms_input      = topelement->GetInput(SmbMassBalanceEnum);  _assert_(ms_input);
+	Input* surface_input = topelement->GetInput(SurfaceEnum);                     _assert_(surface_input);
+	Input* vz_input      = NULL;
+	switch(dim){
+		case 1: vz_input = topelement->GetInput(VyEnum); _assert_(vz_input); break;
+		case 2: vz_input = topelement->GetInput(VzEnum); _assert_(vz_input); break;
+		default: _error_("not implemented");
+	}
+
+	/*Initialize mb_correction to 0, do not forget!:*/
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		topelement->NodalFunctions(basis,gauss);
+
+		ms_input->GetInputValue(&ms,gauss);
+		vz_input->GetInputValue(&vz,gauss);
+		surface_input->GetInputValue(&surface,gauss);
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(surface + dt*ms + dt*vz)*basis[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
+	return pe;
+
+}/*}}}*/
+void           FreeSurfaceTopAnalysis::GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3] where Bi is of size 3*NDOF2. 
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi=[ N ]
+	 *          [ N ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B_prog has been allocated already, of size: 2x(NDOF1*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions*/
+	IssmDouble* basis=xNew<IssmDouble>(numnodes);
+	element->NodalFunctions(basis,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		for(int j=0;j<dim;j++){
+			B[numnodes*j+i] = basis[i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           FreeSurfaceTopAnalysis::GetBprime(IssmDouble* Bprime,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B'  matrix. B'=[B1' B2' B3'] where Bi' is of size 3*NDOF2. 
+	 * For node i, Bi' can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi_prime=[ dN/dx ]
+	 *                [ dN/dy ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B' has been allocated already, of size: 3x(NDOF2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(dim*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B': */
+	for(int i=0;i<numnodes;i++){
+		for(int j=0;j<dim;j++){
+			Bprime[numnodes*j+i] = dbasis[j*numnodes+i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+
+}/*}}}*/
+void           FreeSurfaceTopAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           FreeSurfaceTopAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           FreeSurfaceTopAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	element->InputUpdateFromSolutionOneDof(solution,SurfaceEnum);
+}/*}}}*/
+void           FreeSurfaceTopAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/FreeSurfaceTopAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/FreeSurfaceTopAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/FreeSurfaceTopAnalysis.h	(revision 21239)
@@ -0,0 +1,35 @@
+/*! \file FreeSurfaceTopAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _FreeSurfaceTopAnalysis_
+#define _FreeSurfaceTopAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class FreeSurfaceTopAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBprime(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/GiaAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/GiaAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/GiaAnalysis.cpp	(revision 21239)
@@ -0,0 +1,69 @@
+#include "./GiaAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void GiaAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	/*No constraints*/
+}/*}}}*/
+void GiaAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	/*No loads*/
+}/*}}}*/
+void GiaAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+	::CreateNodes(nodes,iomodel,GiaAnalysisEnum,P1Enum);
+}/*}}}*/
+int  GiaAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void GiaAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(elements,"md.gia.mantle_viscosity",GiaMantleViscosityEnum);
+	iomodel->FetchDataToInput(elements,"md.gia.lithosphere_thickness",GiaLithosphereThicknessEnum);
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+}/*}}}*/
+void GiaAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           GiaAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* GiaAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* GiaAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* GiaAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+ElementVector* GiaAnalysis::CreatePVector(Element* element){/*{{{*/
+_error_("not implemented yet");
+}/*}}}*/
+void           GiaAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           GiaAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           GiaAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void           GiaAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/GiaAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/GiaAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/GiaAnalysis.h	(revision 21239)
@@ -0,0 +1,33 @@
+/*! \file GiaAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _GiaAnalysis_
+#define _GiaAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class GiaAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologyDCEfficientAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologyDCEfficientAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologyDCEfficientAnalysis.cpp	(revision 21239)
@@ -0,0 +1,851 @@
+#include "./HydrologyDCEfficientAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+int  HydrologyDCEfficientAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void HydrologyDCEfficientAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int         hydrology_model;
+	int         eplflip_lock;
+	int         eplthickcomp;
+	bool        isefficientlayer;
+	/*retrieve some parameters: */
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want DC?*/
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	/*Do we want an efficient layer*/
+	iomodel->FindConstant(&isefficientlayer,"md.hydrology.isefficientlayer");
+
+	/*If not return*/
+	if(!isefficientlayer) return;
+
+	/*If yes, initialize a flip flop counter*/
+	iomodel->FetchData(&eplflip_lock,"md.hydrology.eplflip_lock");
+	parameters->AddObject(new IntParam(HydrologydcEplflipLockEnum,eplflip_lock));
+
+	iomodel->FetchData(&eplthickcomp,"md.hydrology.epl_thick_comp");
+	parameters->AddObject(new IntParam(HydrologydcEplThickCompEnum,eplthickcomp));
+
+	
+}/*}}}*/
+void HydrologyDCEfficientAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	bool   isefficientlayer;
+	int    hydrology_model;
+
+	/*Now, do we really want DC?*/
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	/*Do we want an efficient layer*/
+	iomodel->FindConstant(&isefficientlayer,"md.hydrology.isefficientlayer");
+	if(!isefficientlayer) return;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+	iomodel->FetchDataToInput(elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.epl_head",EplHeadEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.sediment_head",SedimentHeadEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.epl_thickness",HydrologydcEplThicknessEnum);
+	iomodel->FetchDataToInput(elements,"md.hydrology.basal_moulin_input",HydrologydcBasalMoulinInputEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+}/*}}}*/
+
+void HydrologyDCEfficientAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	/*Now, do we really want DC?*/
+	int  hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	/*Do we want an efficient layer*/
+	bool isefficientlayer;
+	iomodel->FindConstant(&isefficientlayer,"md.hydrology.isefficientlayer");
+	if(!isefficientlayer) return;
+
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,HydrologyDCEfficientAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+
+void HydrologyDCEfficientAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*Do we really want DC?*/
+	int  hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	/*Do we want an efficient layer*/
+	bool isefficientlayer;
+	iomodel->FindConstant(&isefficientlayer,"md.hydrology.isefficientlayer");
+	if(!isefficientlayer) return;
+
+	IoModelToConstraintsx(constraints,iomodel,"md.hydrology.spcepl_head",HydrologyDCEfficientAnalysisEnum,P1Enum);
+}/*}}}*/
+
+void HydrologyDCEfficientAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	/*Nothing for now*/
+
+	/*Fetch parameters: */
+	int hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(1,"md.mesh.vertexonbase");
+
+	//create penalties for nodes: no node can have water above the max
+	CreateSingleNodeToElementConnectivity(iomodel);
+	for(int i=0;i<iomodel->numberofvertices;i++){
+		if (iomodel->domaintype!=Domain3DEnum){
+			/*keep only this partition's nodes:*/
+			if(iomodel->my_vertices[i]){
+				loads->AddObject(new Moulin(iomodel->loadcounter+i+1,i,iomodel,HydrologyDCEfficientAnalysisEnum));
+			}
+		}
+		else if(reCast<int>(iomodel->Data("md.mesh.vertexonbase")[i])){
+			if(iomodel->my_vertices[i]){
+				loads->AddObject(new Moulin(iomodel->loadcounter+i+1,i,iomodel,HydrologyDCEfficientAnalysisEnum));
+			}	
+		}
+	}
+	iomodel->DeleteData(1,"md.mesh.vertexonbase");
+}/*}}}*/
+
+void HydrologyDCEfficientAnalysis::InitZigZagCounter(FemModel* femmodel){/*{{{*/
+	int*   eplzigzag_counter =NULL;
+	
+	eplzigzag_counter=xNewZeroInit<int>(femmodel->nodes->Size());
+	femmodel->parameters->AddObject(new IntVecParam(EplZigZagCounterEnum,eplzigzag_counter,femmodel->nodes->Size()));
+	xDelete<int>(eplzigzag_counter);
+}/*}}}*/
+
+void HydrologyDCEfficientAnalysis::ResetCounter(FemModel* femmodel){/*{{{*/
+
+	int*     eplzigzag_counter=NULL;
+	Element* element=NULL;
+
+	femmodel->parameters->FindParam(&eplzigzag_counter,NULL,EplZigZagCounterEnum);
+	for(int i=0;i<femmodel->nodes->Size();i++){
+
+		eplzigzag_counter[i]=0;
+	}
+	femmodel->parameters->SetParam(eplzigzag_counter,femmodel->nodes->Size(),EplZigZagCounterEnum);
+	xDelete<int>(eplzigzag_counter);
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void HydrologyDCEfficientAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+
+ElementVector* HydrologyDCEfficientAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+
+ElementMatrix* HydrologyDCEfficientAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+
+ElementMatrix* HydrologyDCEfficientAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	bool     active_element;
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	Input* active_element_input = basalelement->GetInput(HydrologydcMaskEplactiveEltEnum); _assert_(active_element_input);
+	active_element_input->GetInputValue(&active_element);
+
+	/*Check that all nodes are active, else return empty matrix*/
+	if(!active_element) {
+	if(domaintype!=Domain2DhorizontalEnum){
+			basalelement->DeleteMaterials(); 
+			delete basalelement;
+		}
+		return NULL;
+	}
+
+	/* Intermediaries */
+	IssmDouble  D_scalar,Jdet,dt;
+	IssmDouble  epl_thickness;
+	IssmDouble  transfer;
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke     = basalelement->NewElementMatrix();
+	IssmDouble*    B      = xNew<IssmDouble>(2*numnodes);
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble     D[2][2]={0.};
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
+
+	Input* epl_thick_input = basalelement->GetInput(HydrologydcEplThicknessEnum); _assert_(epl_thick_input);
+	Input* sed_head_input  = basalelement->GetInput(SedimentHeadEnum);
+	Input* epl_head_input  = basalelement->GetInput(EplHeadEnum);
+	Input* thick_input     = basalelement->GetInput(ThicknessEnum);
+	Input* base_input      = basalelement->GetInput(BaseEnum);
+
+	IssmDouble epl_specificstoring   = EplSpecificStoring(basalelement);
+	IssmDouble epl_conductivity      = basalelement->GetMaterialParameter(HydrologydcEplConductivityEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss           ->GaussPoint(ig);
+		basalelement    ->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		epl_thick_input ->GetInputValue(&epl_thickness,gauss);
+
+		/*Diffusivity*/
+		D_scalar=epl_conductivity*epl_thickness*gauss->weight*Jdet;
+		if(dt!=0.) D_scalar=D_scalar*dt;
+		D[0][0]=D_scalar;
+		D[1][1]=D_scalar;
+		GetB(B,basalelement,xyz_list,gauss); 
+		TripleMultiply(B,2,numnodes,1,
+					&D[0][0],2,2,0,
+					B,2,numnodes,0,
+					&Ke->values[0],1);
+
+		/*Transient*/
+		if(dt!=0.){
+			basalelement->NodalFunctions(&basis[0],gauss);
+			D_scalar=epl_specificstoring*epl_thickness*gauss->weight*Jdet;
+			TripleMultiply(basis,numnodes,1,0,
+						&D_scalar,1,1,0,
+						basis,1,numnodes,0,
+						&Ke->values[0],1);
+			
+			
+			/*Transfer EPL part*/
+			transfer=GetHydrologyKMatrixTransfer(basalelement,gauss,sed_head_input,epl_head_input,thick_input,base_input);
+			D_scalar=dt*transfer*gauss->weight*Jdet;
+			TripleMultiply(basis,numnodes,1,0,
+										 &D_scalar,1,1,0,
+										 basis,1,numnodes,0,
+										 &Ke->values[0],1);
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(B);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+
+ElementVector* HydrologyDCEfficientAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	bool     active_element;
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	Input* active_element_input = basalelement->GetInput(HydrologydcMaskEplactiveEltEnum); _assert_(active_element_input);
+	active_element_input->GetInputValue(&active_element);
+
+	/*Check that all nodes are active, else return empty matrix*/
+	if(!active_element) {
+	if(domaintype!=Domain2DhorizontalEnum){
+			basalelement->DeleteMaterials(); 
+			delete basalelement;
+		}
+		return NULL;
+	}
+	/*Intermediaries */
+	IssmDouble dt,scalar,water_head;
+	IssmDouble water_load,transfer;
+	IssmDouble epl_thickness;
+	IssmDouble Jdet;
+	IssmDouble residual,connectivity;
+
+	IssmDouble *xyz_list     = NULL;
+	Input*      old_wh_input = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes    = basalelement->GetNumberOfNodes();
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*Initialize Element vector*/
+	ElementVector* pe    = basalelement->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&dt,TimesteppingTimeStepEnum);	
+
+	Input* epl_thick_input = basalelement->GetInput(HydrologydcEplThicknessEnum); _assert_(epl_thick_input);
+	Input* sed_head_input  = basalelement->GetInput(SedimentHeadEnum);
+	Input* epl_head_input  = basalelement->GetInput(EplHeadEnum);
+	Input* thick_input     = basalelement->GetInput(ThicknessEnum);
+	Input* base_input      = basalelement->GetInput(BaseEnum);
+	Input* water_input		 = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(water_input);
+	Input* residual_input  = basalelement->GetInput(SedimentHeadResidualEnum);    _assert_(residual_input);
+	if(dt!= 0.){old_wh_input = basalelement->GetInput(EplHeadOldEnum);            _assert_(old_wh_input);}
+
+	IssmDouble epl_specificstoring = EplSpecificStoring(basalelement);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		basalelement ->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement ->NodalFunctions(basis,gauss);
+
+		/*Loading term*/
+		water_input->GetInputValue(&water_load,gauss);
+		scalar = Jdet*gauss->weight*(water_load);
+		if(dt!=0.) scalar = scalar*dt;
+		for(int i=0;i<numnodes;i++){
+			pe->values[i]+=scalar*basis[i];
+		}
+		
+		/*Transient and transfer terms*/
+		if(dt!=0.){
+			old_wh_input    ->GetInputValue(&water_head,gauss);
+			epl_thick_input ->GetInputValue(&epl_thickness,gauss);
+			
+			/*Dealing with the epl part of the transfer term*/
+			transfer=GetHydrologyPVectorTransfer(basalelement,gauss,sed_head_input,epl_head_input,thick_input,base_input);
+			scalar = Jdet*gauss->weight*((water_head*epl_specificstoring*epl_thickness)+(dt*transfer));
+			for(int i=0;i<numnodes;i++)pe->values[i]+=scalar*basis[i];
+		}
+	}
+	delete gauss;
+
+	/*	Add residual if necessary*/
+	gauss=basalelement->NewGauss();
+	for(int iv=0;iv<numvertices;iv++){
+		gauss->GaussVertex(iv);
+
+		connectivity = IssmDouble(basalelement->VertexConnectivity(iv));
+		residual_input->GetInputValue(&residual,gauss);
+		pe->values[iv]+=residual/connectivity;
+
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return pe;
+}/*}}}*/
+
+void HydrologyDCEfficientAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,EplHeadEnum);
+}/*}}}*/
+
+void HydrologyDCEfficientAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+
+void HydrologyDCEfficientAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	bool active_element;
+	int domaintype,i;
+	Element*   basalelement=NULL;
+
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	if(domaintype!=Domain2DhorizontalEnum){
+		if(!element->IsOnBase()) return;
+		basalelement=element->SpawnBasalElement();
+	}
+	else{
+		basalelement = element;
+	}
+	
+	/*Intermediary*/
+	int* doflist = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Fetch dof list and allocate solution vector*/
+	IssmDouble* sedhead     = xNew<IssmDouble>(numnodes);
+	IssmDouble* eplHeads    = xNew<IssmDouble>(numnodes);
+
+	basalelement->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	basalelement->GetInputListOnVertices(&sedhead[0],SedimentHeadEnum);
+
+	Input* active_element_input=basalelement->GetInput(HydrologydcMaskEplactiveEltEnum); _assert_(active_element_input);
+	active_element_input->GetInputValue(&active_element);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numnodes;i++){
+		eplHeads[i]=solution[doflist[i]];
+		if(xIsNan<IssmDouble>(eplHeads[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(eplHeads[i])) _error_("Inf found in solution vector");
+	}
+	/*Add input to the element: */
+	element->AddBasalInput(EplHeadEnum,eplHeads,P1Enum);
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(eplHeads);
+	xDelete<IssmDouble>(sedhead);
+	xDelete<int>(doflist);
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+} /*}}}*/
+
+void HydrologyDCEfficientAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
+
+/*Intermediaries*/
+IssmDouble HydrologyDCEfficientAnalysis::EplSpecificStoring(Element* element){/*{{{*/
+	IssmDouble rho_freshwater        = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	IssmDouble g                     = element->GetMaterialParameter(ConstantsGEnum);
+	IssmDouble epl_porosity          = element->GetMaterialParameter(HydrologydcEplPorosityEnum);
+	IssmDouble epl_compressibility   = element->GetMaterialParameter(HydrologydcEplCompressibilityEnum);
+	IssmDouble water_compressibility = element->GetMaterialParameter(HydrologydcWaterCompressibilityEnum);
+	return rho_freshwater*g*epl_porosity*(water_compressibility+(epl_compressibility/epl_porosity));		 
+}/*}}}*/
+
+IssmDouble HydrologyDCEfficientAnalysis::SedimentStoring(Element* element){/*{{{*/
+	IssmDouble rho_freshwater           = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	IssmDouble g                        = element->GetMaterialParameter(ConstantsGEnum);
+	IssmDouble sediment_porosity        = element->GetMaterialParameter(HydrologydcSedimentPorosityEnum);
+	IssmDouble sediment_thickness       = element->GetMaterialParameter(HydrologydcSedimentThicknessEnum);
+	IssmDouble sediment_compressibility = element->GetMaterialParameter(HydrologydcSedimentCompressibilityEnum);
+	IssmDouble water_compressibility    = element->GetMaterialParameter(HydrologydcWaterCompressibilityEnum);
+	return rho_freshwater*g*sediment_porosity*sediment_thickness*(water_compressibility+(sediment_compressibility/sediment_porosity));		 
+}/*}}}*/
+
+IssmDouble HydrologyDCEfficientAnalysis::GetHydrologyKMatrixTransfer(Element* element, Gauss* gauss, Input* sed_head_input, Input* epl_head_input, Input* thick_input, Input* base_input){/*{{{*/
+
+	int transfermethod;
+	IssmDouble hmax;
+	IssmDouble epl_head,sediment_head;
+	IssmDouble leakage,transfer;
+	IssmDouble continuum, factor;
+	HydrologyDCInefficientAnalysis* inefanalysis = NULL;
+
+	element->FindParam(&transfermethod,HydrologydcTransferFlagEnum);
+
+	/*Switch between the different transfer methods cases*/
+	switch(transfermethod){
+	case 0:
+		/*Just keepping the transfer to zero*/
+		transfer=0.0;
+		break;
+	case 1:
+		_assert_(sed_head_input);
+		_assert_(epl_head_input);
+		
+		inefanalysis = new HydrologyDCInefficientAnalysis();
+		hmax = inefanalysis->GetHydrologyDCInefficientHmax(element,gauss,thick_input,base_input);
+		delete inefanalysis;
+
+		sed_head_input->GetInputValue(&sediment_head,gauss);
+		epl_head_input->GetInputValue(&epl_head,gauss);
+		element->FindParam(&leakage,HydrologydcLeakageFactorEnum);
+		
+		//Computing continuum function to apply to transfer term, transfer is null only if
+		// epl_head>sediment_head AND sediment_head>h_max
+		continuum=((1.0/(1.0+exp(-20.0*(sediment_head-epl_head)))))+(1.0/(1.0+exp(-20.0*(hmax-sediment_head))));
+		factor=min(continuum,1.0);
+		transfer=leakage*factor;
+		break;
+	default:
+		_error_("no case higher than 1 for the Transfer method");
+	}
+	return transfer;
+}/*}}}*/
+
+IssmDouble HydrologyDCEfficientAnalysis::GetHydrologyPVectorTransfer(Element* element, Gauss* gauss, Input* sed_head_input, Input* epl_head_input, Input* thick_input, Input* base_input){/*{{{*/
+
+	int transfermethod;
+	IssmDouble hmax;
+	IssmDouble epl_head,sediment_head;
+	IssmDouble leakage,transfer;
+	IssmDouble continuum, factor;
+
+	HydrologyDCInefficientAnalysis* inefanalysis = NULL;
+
+	element->FindParam(&transfermethod,HydrologydcTransferFlagEnum);
+
+	/*Switch between the different transfer methods cases*/
+	switch(transfermethod){
+	case 0:
+		/*Just keepping the transfer to zero*/
+		transfer=0.0;
+		break;
+	case 1:
+		_assert_(sed_head_input);
+		_assert_(epl_head_input);
+
+		inefanalysis = new HydrologyDCInefficientAnalysis();
+		hmax = inefanalysis->GetHydrologyDCInefficientHmax(element,gauss,thick_input,base_input);
+		delete inefanalysis;
+		
+		sed_head_input->GetInputValue(&sediment_head,gauss);
+		epl_head_input->GetInputValue(&epl_head,gauss);
+		element->FindParam(&leakage,HydrologydcLeakageFactorEnum);
+
+		//Computing continuum function to apply to transfer term, transfer is null only if
+		// epl_head>sediment_head AND sediment_head>h_max
+		continuum=((1.0/(1.0+exp(-20.0*(sediment_head-epl_head)))))+(1.0/(1.0+exp(-20.0*(hmax-sediment_head))));
+		factor=min(continuum,1.0);
+		transfer=sediment_head*leakage*factor;
+
+		break;
+	default:
+		_error_("no case higher than 1 for the Transfer method");
+	}
+
+	return transfer;
+}/*}}}*/
+
+void HydrologyDCEfficientAnalysis::ComputeEPLThickness(FemModel* femmodel){/*{{{*/
+
+	bool        active_element;
+	int         iseplthickcomp;
+	int         domaintype;
+	IssmDouble  dt,A,B;
+	IssmDouble  EPLgrad2;
+	IssmDouble  EPL_N;
+
+	
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+
+	for(int j=0;j<femmodel->elements->Size();j++){
+		
+		Element* element=(Element*)femmodel->elements->GetObjectByOffset(j);
+		element->parameters->FindParam(&iseplthickcomp,HydrologydcEplThickCompEnum);
+		if(iseplthickcomp==0) return;
+		
+		switch(domaintype){
+		case Domain2DhorizontalEnum:
+			if(!element->IsOnBase()) return;	
+			B = element->GetMaterialParameter(MaterialsRheologyBbarEnum);
+			break;
+		case Domain3DEnum:
+			B = element->GetMaterialParameter(MaterialsRheologyBEnum);
+			break;
+		default:
+		_error_("not Implemented Yet");
+		}
+		
+		int         numnodes      = element->GetNumberOfNodes();
+		IssmDouble* thickness     = xNew<IssmDouble>(numnodes);
+		IssmDouble* eplhead       = xNew<IssmDouble>(numnodes);
+		IssmDouble* epl_slopeX    = xNew<IssmDouble>(numnodes);
+		IssmDouble* epl_slopeY    = xNew<IssmDouble>(numnodes);
+		IssmDouble* old_thickness = xNew<IssmDouble>(numnodes);
+		IssmDouble* ice_thickness = xNew<IssmDouble>(numnodes);
+		IssmDouble* bed           = xNew<IssmDouble>(numnodes);
+
+		Input* 	active_element_input=element->GetInput(HydrologydcMaskEplactiveEltEnum); _assert_(active_element_input);		
+		active_element_input->GetInputValue(&active_element);
+		element->FindParam(&dt,TimesteppingTimeStepEnum);
+	
+		/*For now, assuming just one way to compute EPL thickness*/
+		IssmDouble gravity          = element->GetMaterialParameter(ConstantsGEnum);
+		IssmDouble rho_water        = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+		IssmDouble rho_ice          = element->GetMaterialParameter(MaterialsRhoIceEnum);
+		IssmDouble n                =	element->GetMaterialParameter(MaterialsRheologyNEnum);
+		IssmDouble latentheat       = element->GetMaterialParameter(MaterialsLatentheatEnum);
+		IssmDouble epl_conductivity = element->GetMaterialParameter(HydrologydcEplConductivityEnum);
+		IssmDouble init_thick       =	element->GetMaterialParameter(HydrologydcEplInitialThicknessEnum);
+		IssmDouble max_thick        =	element->GetMaterialParameter(HydrologydcEplMaxThicknessEnum);
+		
+		A=pow(B,-n);
+		
+		element->GetInputListOnVertices(&eplhead[0],EplHeadEnum);
+		element->GetInputListOnVertices(&epl_slopeX[0],EplHeadSlopeXEnum); 
+		element->GetInputListOnVertices(&epl_slopeY[0],EplHeadSlopeYEnum);
+		element->GetInputListOnVertices(&old_thickness[0],HydrologydcEplThicknessOldEnum);
+		element->GetInputListOnVertices(&ice_thickness[0],ThicknessEnum);
+		element->GetInputListOnVertices(&bed[0],BaseEnum);
+		
+		if(!active_element){
+			
+			/*Keeping thickness to initial value if EPL is not active*/
+			for(int i=0;i<numnodes;i++){
+				thickness[i]=init_thick;
+			}
+		}
+		else{
+			for(int i=0;i<numnodes;i++){
+				
+				/*Compute first the effective pressure in the EPL*/
+				EPL_N=gravity*((rho_ice*ice_thickness[i])-(rho_water*max(0.0,(eplhead[i]-bed[i]))));
+				if(EPL_N<0.0)EPL_N=0.0;
+				/*Get then the square of the gradient of EPL heads*/
+				EPLgrad2 = (epl_slopeX[i]*epl_slopeX[i])+(epl_slopeY[i]*epl_slopeY[i]);
+				
+				/*And proceed to the real thing*/
+				thickness[i] = old_thickness[i]*(1.0+((rho_water*gravity*dt)/(rho_ice*latentheat))*epl_conductivity*EPLgrad2-
+																				 (2.0*(A*dt/(pow(n,n)))*(pow(EPL_N,n))));
+				
+				/*Take care of otherthikening*/
+				if(thickness[i]>max_thick){
+					thickness[i] = max_thick;
+				}
+			}
+		}
+		element->AddInput(HydrologydcEplThicknessEnum,thickness,element->GetElementType());
+		xDelete<IssmDouble>(thickness);
+		xDelete<IssmDouble>(eplhead);
+		xDelete<IssmDouble>(epl_slopeX);
+		xDelete<IssmDouble>(epl_slopeY);
+		xDelete<IssmDouble>(old_thickness);
+		xDelete<IssmDouble>(ice_thickness);
+		xDelete<IssmDouble>(bed);
+	}
+}/*}}}*/
+
+void HydrologyDCEfficientAnalysis::GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3] where Bi is of size 3*NDOF2. 
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi=[ dN/dx ]
+	 *          [ dN/dy ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 3x(NDOF2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(2*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		B[numnodes*0+i] = dbasis[0*numnodes+i];
+		B[numnodes*1+i] = dbasis[1*numnodes+i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+
+void  HydrologyDCEfficientAnalysis::HydrologyEPLGetMask(Vector<IssmDouble>* vec_mask, Vector<IssmDouble>* recurence, int* eplzigzag_counter, Element* element){
+
+	bool        active_element;
+	int         i,j;
+	int         domaintype;
+	IssmDouble  h_max;
+	IssmDouble  sedheadmin;
+	Element*    basalelement=NULL;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+	/*Intermediaries*/
+	int         numnodes      =basalelement->GetNumberOfNodes();
+	IssmDouble* epl_thickness =xNew<IssmDouble>(numnodes);
+	IssmDouble* old_active    =xNew<IssmDouble>(numnodes);
+	IssmDouble* sedhead       =xNew<IssmDouble>(numnodes);
+	IssmDouble* eplhead       =xNew<IssmDouble>(numnodes);
+	IssmDouble* residual      =xNew<IssmDouble>(numnodes);
+	
+	IssmDouble init_thick    =basalelement->GetMaterialParameter(HydrologydcEplInitialThicknessEnum);
+	IssmDouble colapse_thick =basalelement->GetMaterialParameter(HydrologydcEplColapseThicknessEnum);
+
+	Input* active_element_input=basalelement->GetInput(HydrologydcMaskEplactiveEltEnum); _assert_(active_element_input);
+	active_element_input->GetInputValue(&active_element);
+
+	basalelement-> GetInputListOnVertices(&old_active[0],HydrologydcMaskEplactiveNodeEnum);	
+	basalelement-> GetInputListOnVertices(&epl_thickness[0],HydrologydcEplThicknessEnum);	
+	basalelement-> GetInputListOnVertices(&sedhead[0],SedimentHeadEnum);
+	basalelement-> GetInputListOnVertices(&eplhead[0],EplHeadEnum);
+	basalelement-> GetInputListOnVertices(&residual[0],SedimentHeadResidualEnum);
+
+	/*Get minimum sediment head of the element*/
+	sedheadmin=sedhead[0];
+	for(i=1;i<numnodes;i++) if(sedhead[i]<=sedheadmin)sedheadmin=sedhead[i];
+	for(i=0;i<numnodes;i++){
+		/*If node is now closed bring its thickness back to initial*/
+		if (old_active[i]==0.){
+			epl_thickness[i]=init_thick;
+		}
+
+		/*Now starting to look at the activations*/
+		if(residual[i]>0.){
+			vec_mask->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
+			if(old_active[i]==0.)	recurence->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
+		}
+		/*If mask was already one, keep one or colapse*/
+		else if(old_active[i]>0.){
+			vec_mask->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
+			/*If epl thickness gets under colapse thickness, close the layer*/
+			if(epl_thickness[i]<colapse_thick){
+				vec_mask->SetValue(basalelement->nodes[i]->Sid(),0.,INS_VAL);
+				recurence->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
+			}
+		}
+		/*Increase of the efficient system is needed if the epl head reach the maximum value (sediment max value for now)*/
+		GetHydrologyDCInefficientHmax(&h_max,basalelement,basalelement->nodes[i]);
+		if(eplhead[i]>=h_max && active_element){
+			for(j=0;j<numnodes;j++){
+				/*Increase of the domain is on the downstream node in term of sediment head*/
+				if(sedhead[j] == sedheadmin){
+					vec_mask->SetValue(basalelement->nodes[j]->Sid(),1.,INS_VAL);
+					if(old_active[i]==0.)	recurence->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
+				}
+			}
+		}
+	}
+	basalelement->AddInput(HydrologydcEplThicknessEnum,epl_thickness,basalelement->GetElementType());
+
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	xDelete<IssmDouble>(epl_thickness);
+	xDelete<IssmDouble>(old_active);
+	xDelete<IssmDouble>(sedhead);
+	xDelete<IssmDouble>(eplhead);
+	xDelete<IssmDouble>(residual);
+}
+/*}}}*/
+
+void HydrologyDCEfficientAnalysis::HydrologyEPLGetActive(Vector<IssmDouble>* active_vec, Element* element){
+	/*Constants*/
+	int      domaintype;
+	Element*   basalelement=NULL;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+	
+	const int   numnodes = basalelement->GetNumberOfNodes();
+	IssmDouble  flag     = 0.;
+	IssmDouble* active   = xNew<IssmDouble>(numnodes);
+
+	/*Pass the activity mask from elements to nodes*/
+	basalelement->GetInputListOnVertices(&active[0],HydrologydcMaskEplactiveNodeEnum);
+	bool active_element;
+	Input* 	active_element_input=basalelement->GetInput(HydrologydcMaskEplactiveEltEnum); _assert_(active_element_input);		
+	active_element_input->GetInputValue(&active_element);
+	
+	for(int i=0;i<numnodes;i++) flag+=active[i];
+
+	/*If any node is active all the node in the element are active*/
+	if(flag>0.){
+		for(int i=0;i<numnodes;i++){
+			active_vec->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
+		}
+	}
+	/*If the element is active all its nodes are active*/
+	else if(active_element){
+		for(int i=0;i<numnodes;i++){
+			active_vec->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
+		}		
+	}
+	else{
+		/*Do not do anything: at least one node is active for this element but this element is not solved for*/
+	}
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	xDelete<IssmDouble>(active);
+}
+
+void HydrologyDCEfficientAnalysis::GetHydrologyDCInefficientHmax(IssmDouble* ph_max,Element* element, Node* innode){/*{{{*/
+	
+	int        hmax_flag;
+	IssmDouble h_max;
+	IssmDouble rho_ice,rho_water;
+	IssmDouble thickness,bed;
+	/*Get the flag to the limitation method*/
+	element->FindParam(&hmax_flag,HydrologydcSedimentlimitFlagEnum);
+	
+	/*Switch between the different cases*/
+	switch(hmax_flag){
+	case 0:
+		h_max=1.0e+10;
+		break;
+	case 1:
+		element->FindParam(&h_max,HydrologydcSedimentlimitEnum);
+		break;
+	case 2:
+		/*Compute max*/
+		rho_water = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+		rho_ice   = element->GetMaterialParameter(MaterialsRhoIceEnum);
+		element-> GetInputValue(&thickness,innode,ThicknessEnum);
+		element-> GetInputValue(&bed,innode,BaseEnum);
+		h_max=((rho_ice*thickness)/rho_water)+bed;
+		break;
+	case 3:
+		_error_("Using normal stress  not supported yet");
+		break;
+	default:
+		_error_("no case higher than 3 for SedimentlimitFlag");
+	}
+	/*Assign output pointer*/
+	*ph_max=h_max;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologyDCEfficientAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologyDCEfficientAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologyDCEfficientAnalysis.h	(revision 21239)
@@ -0,0 +1,47 @@
+/*! \file HydrologyDCEfficientAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _HydrologyDCEfficientAnalysis_
+#define _HydrologyDCEfficientAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+class Node;
+class Input;
+class HydrologyDCEfficientAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void InitZigZagCounter(FemModel* femmodel);
+		void ResetCounter(FemModel* femmodel);
+			
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void UpdateConstraints(FemModel* femmodel);
+
+		/*Intermediaries*/
+		void GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		IssmDouble EplSpecificStoring(Element* element);
+		IssmDouble SedimentStoring(Element* element);
+		IssmDouble GetHydrologyKMatrixTransfer(Element* element, Gauss* gauss, Input* sed_head_input, Input* epl_head_input, Input* thick_input, Input* base_input);
+		IssmDouble GetHydrologyPVectorTransfer(Element* element, Gauss* gauss, Input* sed_head_input, Input* epl_head_input, Input* thick_input, Input* base_input);
+		void HydrologyEPLGetMask(Vector<IssmDouble>* vec_mask, Vector<IssmDouble>* recurence, int* eplzigzag_counter, Element* element);
+		void HydrologyEPLGetActive(Vector<IssmDouble>* active_vec, Element* element);
+		void GetHydrologyDCInefficientHmax(IssmDouble* ph_max,Element* element, Node* innode);
+		void ComputeEPLThickness(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologyDCInefficientAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologyDCInefficientAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologyDCInefficientAnalysis.cpp	(revision 21239)
@@ -0,0 +1,697 @@
+#include "./HydrologyDCInefficientAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../classes/Node.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+int  HydrologyDCInefficientAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+
+void HydrologyDCInefficientAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int         hydrology_model;
+	int         sedimentlimit_flag;
+	int         transfer_flag;
+	int         penalty_lock;
+	int         hydro_maxiter;
+	bool        isefficientlayer;
+	IssmDouble  sedimentlimit;
+	IssmDouble  penalty_factor;
+	IssmDouble  leakagefactor;
+	IssmDouble  rel_tol;
+
+	/*retrieve some parameters: */
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want DC?*/
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	iomodel->FetchData(&isefficientlayer,   "md.hydrology.isefficientlayer");
+	iomodel->FetchData(&sedimentlimit_flag, "md.hydrology.sedimentlimit_flag" );
+	iomodel->FetchData(&transfer_flag,      "md.hydrology.transfer_flag" );
+	iomodel->FetchData(&penalty_factor,     "md.hydrology.penalty_factor" );
+	iomodel->FetchData(&rel_tol,            "md.hydrology.rel_tol" );
+	iomodel->FetchData(&penalty_lock,       "md.hydrology.penalty_lock" );
+	iomodel->FetchData(&hydro_maxiter,      "md.hydrology.max_iter" );
+
+	if(sedimentlimit_flag==1){
+		iomodel->FetchData(&sedimentlimit,"md.hydrology.sedimentlimit");
+		parameters->AddObject(new DoubleParam(HydrologydcSedimentlimitEnum,sedimentlimit));
+	}
+
+	if(transfer_flag==1){
+		iomodel->FetchData(&leakagefactor,"md.hydrology.leakage_factor");
+		parameters->AddObject(new DoubleParam(HydrologydcLeakageFactorEnum,leakagefactor));
+	}
+
+	parameters->AddObject(new DoubleParam(HydrologydcPenaltyFactorEnum,penalty_factor));
+	parameters->AddObject(new IntParam(HydrologyModelEnum,hydrology_model));
+	parameters->AddObject(new BoolParam(HydrologydcIsefficientlayerEnum,isefficientlayer));
+	parameters->AddObject(new IntParam(HydrologydcSedimentlimitFlagEnum,sedimentlimit_flag));
+	parameters->AddObject(new IntParam(HydrologydcTransferFlagEnum,transfer_flag));
+	parameters->AddObject(new DoubleParam(HydrologydcRelTolEnum,rel_tol));
+	parameters->AddObject(new IntParam(HydrologydcPenaltyLockEnum,penalty_lock));
+	parameters->AddObject(new IntParam(HydrologydcMaxIterEnum,hydro_maxiter));
+}/*}}}*/
+
+void HydrologyDCInefficientAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	bool   isefficientlayer;
+	bool   element_active;
+	int    hydrology_model;
+	
+	/*Fetch data needed: */
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want DC?*/
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	/*Fetch data needed: */
+	iomodel->FindConstant(&isefficientlayer,"md.hydrology.isefficientlayer");
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(elements,"md.hydrology.basal_moulin_input",HydrologydcBasalMoulinInputEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.sediment_head",SedimentHeadEnum);
+	iomodel->FetchDataToInput(elements,"md.hydrology.sediment_transmitivity",HydrologydcSedimentTransmitivityEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+
+	if(isefficientlayer){
+		iomodel->FetchDataToInput(elements,"md.hydrology.mask_eplactive_node",HydrologydcMaskEplactiveNodeEnum);
+	}
+}/*}}}*/
+
+void HydrologyDCInefficientAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	/*Fetch parameters: */
+	int  hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want DC?*/
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,HydrologyDCInefficientAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+
+void HydrologyDCInefficientAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*retrieve some parameters: */
+	int hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	IoModelToConstraintsx(constraints,iomodel,"md.hydrology.spcsediment_head",HydrologyDCInefficientAnalysisEnum,P1Enum);
+}/*}}}*/
+
+void HydrologyDCInefficientAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Fetch parameters: */
+	int hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(1,"md.mesh.vertexonbase");
+
+	//create penalties for nodes: no node can have water above the max
+	CreateSingleNodeToElementConnectivity(iomodel);
+	for(int i=0;i<iomodel->numberofvertices;i++){
+		if (iomodel->domaintype!=Domain3DEnum){
+			/*keep only this partition's nodes:*/
+			if(iomodel->my_vertices[i]){
+				loads->AddObject(new Pengrid(iomodel->loadcounter+i+1,i,iomodel,HydrologyDCInefficientAnalysisEnum));
+				loads->AddObject(new Moulin(iomodel->loadcounter+i+1,i,iomodel,HydrologyDCInefficientAnalysisEnum));
+			}
+		}
+		else if(reCast<int>(iomodel->Data("md.mesh.vertexonbase")[i])){
+			if(iomodel->my_vertices[i]){
+				loads->AddObject(new Pengrid(iomodel->loadcounter+i+1,i,iomodel,HydrologyDCInefficientAnalysisEnum));
+				loads->AddObject(new Moulin(iomodel->loadcounter+i+1,i,iomodel,HydrologyDCInefficientAnalysisEnum));
+			}	
+		}
+	}
+	iomodel->DeleteData(1,"md.mesh.vertexonbase");
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           HydrologyDCInefficientAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+
+ElementVector* HydrologyDCInefficientAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+
+ElementMatrix* HydrologyDCInefficientAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+
+ElementMatrix* HydrologyDCInefficientAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries */
+	bool        active_element,isefficientlayer;
+	IssmDouble  D_scalar,Jdet,dt;
+	IssmDouble  sediment_transmitivity;
+	IssmDouble  transfer;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Define transfer related variables*/
+	Input* active_element_input =NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke     = basalelement->NewElementMatrix();
+	IssmDouble*    B      = xNew<IssmDouble>(2*numnodes);
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble     D[2][2]= {0.};
+
+	/*Retrieve all inputs and parameters*/
+	basalelement ->GetVerticesCoordinates(&xyz_list);
+	basalelement ->FindParam(&dt,TimesteppingTimeStepEnum);
+	basalelement ->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum);
+	Input* SedTrans_input = basalelement->GetInput(HydrologydcSedimentTransmitivityEnum); _assert_(SedTrans_input);
+	Input* sed_head_input = basalelement->GetInput(SedimentHeadEnum);
+	Input* epl_head_input = basalelement->GetInput(EplHeadEnum);
+	Input* thick_input    = basalelement->GetInput(ThicknessEnum);
+	Input* base_input     = basalelement->GetInput(BaseEnum);
+
+	IssmDouble sediment_storing = SedimentStoring(basalelement);
+	/*Transfer related Inputs*/
+	if(isefficientlayer){
+		active_element_input = basalelement->GetInput(HydrologydcMaskEplactiveEltEnum); _assert_(active_element_input);
+	}
+	
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss -> begin();ig<gauss->end();ig++){
+		gauss          -> GaussPoint(ig);
+		basalelement   -> JacobianDeterminant(&Jdet,xyz_list,gauss);
+		SedTrans_input -> GetInputValue(&sediment_transmitivity,gauss);
+		/*Diffusivity*/
+		D_scalar=sediment_transmitivity*gauss->weight*Jdet;
+		if(dt!=0.) D_scalar=D_scalar*dt;
+		D[0][0]=D_scalar;
+		D[1][1]=D_scalar;
+		GetB(B,basalelement,xyz_list,gauss); 
+		TripleMultiply(B,2,numnodes,1,
+									 &D[0][0],2,2,0,
+									 B,2,numnodes,0,
+									 &Ke->values[0],1);
+
+		/*Transient*/
+		if(dt!=0.){
+			basalelement->NodalFunctions(&basis[0],gauss);
+			D_scalar=sediment_storing*gauss->weight*Jdet;
+			TripleMultiply(basis,numnodes,1,0,
+										 &D_scalar,1,1,0,
+										 basis,1,numnodes,0,
+										 &Ke->values[0],1);
+			
+			/*Transfer EPL part*/
+			if(isefficientlayer){
+				active_element_input->GetInputValue(&active_element);
+				if(active_element){
+					transfer=GetHydrologyKMatrixTransfer(basalelement,gauss,sed_head_input,epl_head_input,thick_input,base_input);
+					basalelement->NodalFunctions(&basis[0],gauss);
+					D_scalar=dt*transfer*gauss->weight*Jdet;
+					TripleMultiply(basis,numnodes,1,0,
+												 &D_scalar,1,1,0,
+												 basis,1,numnodes,0,
+												 &Ke->values[0],1);
+				}
+			}
+		}
+	}
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+
+ElementVector* HydrologyDCInefficientAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries */
+	bool       active_element,isefficientlayer;
+	IssmDouble dt,scalar;
+	IssmDouble water_head;
+	IssmDouble water_load,transfer;
+	IssmDouble Jdet;
+
+	IssmDouble *xyz_list             = NULL;
+	Input*      old_wh_input         = NULL;
+	Input*      active_element_input = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe    = basalelement->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	basalelement->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum);
+
+	Input* sed_head_input			  = basalelement->GetInput(SedimentHeadEnum);
+	Input* epl_head_input			  = basalelement->GetInput(EplHeadEnum);
+	Input* thick_input					= basalelement->GetInput(ThicknessEnum);
+	Input* base_input					  = basalelement->GetInput(BaseEnum);
+	Input* water_input					= basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(water_input);
+	if(dt!= 0.){old_wh_input = basalelement->GetInput(SedimentHeadOldEnum);                     _assert_(old_wh_input);}
+
+	IssmDouble sediment_storing    = SedimentStoring(basalelement);
+
+	/*Transfer related Inputs*/
+	if(isefficientlayer){
+		active_element_input = basalelement->GetInput(HydrologydcMaskEplactiveEltEnum); _assert_(active_element_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+	
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+
+		/*Loading term*/
+		if(!isefficientlayer){
+			water_input->GetInputValue(&water_load,gauss);
+			scalar = Jdet*gauss->weight*(water_load);
+			if(dt!=0.) scalar = scalar*dt;
+			for(int i=0;i<numnodes;i++){
+				pe->values[i]+=scalar*basis[i];
+			}
+		}
+		else{
+			/*if EPL is present and active input is there not here*/
+			active_element_input->GetInputValue(&active_element);
+			if(!active_element){	
+				water_input->GetInputValue(&water_load,gauss);
+				scalar = Jdet*gauss->weight*(water_load);
+				if(dt!=0.) scalar = scalar*dt;
+				for(int i=0;i<numnodes;i++){
+					pe->values[i]+=scalar*basis[i];
+				}
+			}
+		}
+		/*Transient and transfer terms*/
+		if(dt!=0.){
+			old_wh_input    ->GetInputValue(&water_head,gauss);
+			if(isefficientlayer){
+				/*Dealing with the sediment part of the transfer term*/
+				active_element_input->GetInputValue(&active_element);
+				if(active_element){
+					transfer=GetHydrologyPVectorTransfer(basalelement,gauss,sed_head_input,epl_head_input,thick_input,base_input);
+				}
+				else{
+					transfer=0.0;
+				}
+				scalar = Jdet*gauss->weight*((water_head*sediment_storing)+(dt*transfer));
+				for(int i=0;i<numnodes;i++)pe->values[i]+=scalar*basis[i];
+			}
+			else{
+				scalar = Jdet*gauss->weight*(water_head*sediment_storing);
+				for(int i=0;i<numnodes;i++)pe->values[i]+=scalar*basis[i];
+			}
+		}
+	}
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return pe;
+}/*}}}*/
+
+void HydrologyDCInefficientAnalysis::GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3] where Bi is of size 3*NDOF2. 
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi=[ dN/dx ]
+	 *          [ dN/dy ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 3x(NDOF2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(2*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		B[numnodes*0+i] = dbasis[0*numnodes+i];
+		B[numnodes*1+i] = dbasis[1*numnodes+i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+
+void HydrologyDCInefficientAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,SedimentHeadEnum);
+}/*}}}*/
+
+void HydrologyDCInefficientAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+
+void HydrologyDCInefficientAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int        domaintype;
+	bool       converged;
+	int*       doflist=NULL;
+	Element*   basalelement=NULL;
+
+	element->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype!=Domain2DhorizontalEnum){
+		if(!element->IsOnBase()) return;
+		basalelement=element->SpawnBasalElement();
+	}
+	else{
+		basalelement = element;
+	}
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Fetch dof list and allocate solution vector*/
+	basalelement->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values   = xNew<IssmDouble>(numnodes);
+	IssmDouble* pressure = xNew<IssmDouble>(numnodes);
+	IssmDouble* residual = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(int i=0;i<numnodes;i++){
+		values[i] =solution[doflist[i]];
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+	}
+
+	/*If converged keep the residual in mind, also compute effective pressure*/
+	basalelement->GetInputValue(&converged,ConvergedEnum);
+
+	/*Get inputs*/
+	if(converged){
+		IssmDouble  penalty_factor,kmax,kappa,h_max;
+		IssmDouble* thickness = xNew<IssmDouble>(numnodes);
+		IssmDouble* base      = xNew<IssmDouble>(numnodes);
+
+		basalelement->FindParam(&kmax,HydrologySedimentKmaxEnum);
+		basalelement->FindParam(&penalty_factor,HydrologydcPenaltyFactorEnum);
+		IssmDouble rho_freshwater = basalelement->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+		IssmDouble rho_ice        = basalelement->GetMaterialParameter(MaterialsRhoIceEnum);
+		IssmDouble g              = basalelement->GetMaterialParameter(ConstantsGEnum);
+		
+		basalelement->GetInputListOnVertices(thickness,ThicknessEnum);
+		basalelement->GetInputListOnVertices(base,BaseEnum);
+
+		kappa=kmax*pow(10.,penalty_factor);
+
+		for(int i=0;i<numnodes;i++){
+
+			GetHydrologyDCInefficientHmax(&h_max,basalelement,basalelement->GetNode(i));
+			if(values[i]>h_max) {
+				residual[i] = kappa*(values[i]-h_max);
+			}
+			else{
+				residual[i] = 0.;
+			}
+			//adding base in min to take into account heads under bed wich don't change N
+			pressure[i]=(rho_ice*g*thickness[i])-(rho_freshwater*g*(max((min(h_max,values[i])-base[i]),0.0)));
+		}
+		xDelete<IssmDouble>(thickness);
+		xDelete<IssmDouble>(base);
+	}
+
+	/*Add input to the element: */
+	element->AddBasalInput(SedimentHeadEnum,values,P1Enum);
+	element->AddBasalInput(SedimentHeadResidualEnum,residual,P1Enum);
+	element->AddBasalInput(EffectivePressureEnum,pressure,P1Enum);
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(residual);
+	xDelete<IssmDouble>(pressure);
+	xDelete<int>(doflist);
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+
+void HydrologyDCInefficientAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
+
+/*Intermediaries*/
+IssmDouble HydrologyDCInefficientAnalysis::SedimentStoring(Element* element){/*{{{*/
+	IssmDouble rho_freshwater           = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	IssmDouble g                        = element->GetMaterialParameter(ConstantsGEnum);
+	IssmDouble sediment_porosity        = element->GetMaterialParameter(HydrologydcSedimentPorosityEnum);
+	IssmDouble sediment_thickness       = element->GetMaterialParameter(HydrologydcSedimentThicknessEnum);
+	IssmDouble sediment_compressibility = element->GetMaterialParameter(HydrologydcSedimentCompressibilityEnum);
+	IssmDouble water_compressibility    = element->GetMaterialParameter(HydrologydcWaterCompressibilityEnum);
+	return rho_freshwater*g*sediment_porosity*sediment_thickness*(water_compressibility+(sediment_compressibility/sediment_porosity));		 
+}/*}}}*/
+
+IssmDouble HydrologyDCInefficientAnalysis::EplSpecificStoring(Element* element){/*{{{*/
+	IssmDouble rho_freshwater        = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	IssmDouble g                     = element->GetMaterialParameter(ConstantsGEnum);
+	IssmDouble epl_porosity          = element->GetMaterialParameter(HydrologydcEplPorosityEnum);
+	IssmDouble epl_compressibility   = element->GetMaterialParameter(HydrologydcEplCompressibilityEnum);
+	IssmDouble water_compressibility = element->GetMaterialParameter(HydrologydcWaterCompressibilityEnum);
+	return rho_freshwater*g*epl_porosity*(water_compressibility+(epl_compressibility/epl_porosity));		 
+}/*}}}*/
+
+IssmDouble HydrologyDCInefficientAnalysis::GetHydrologyDCInefficientHmax(Element* element, Gauss* gauss, Input* thick_input, Input* base_input){/*{{{*/
+	int        hmax_flag;
+	IssmDouble h_max;
+	IssmDouble rho_ice,rho_water;
+	IssmDouble thickness,bed;
+	/*Get the flag to the limitation method*/
+	element->FindParam(&hmax_flag,HydrologydcSedimentlimitFlagEnum);
+	
+	/*Switch between the different cases*/
+	switch(hmax_flag){
+	case 0:
+		h_max=1.0e+10;
+		break;
+	case 1:
+		element->FindParam(&h_max,HydrologydcSedimentlimitEnum);
+		break;
+	case 2:
+	
+		rho_water = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+		rho_ice   = element->GetMaterialParameter(MaterialsRhoIceEnum);
+
+		_assert_(thick_input);
+		_assert_(base_input);
+
+		/*Compute max*/
+		thick_input->GetInputValue(&thickness,gauss);
+		base_input->GetInputValue(&bed,gauss);
+		h_max=((rho_ice*thickness)/rho_water)+bed;
+		break;
+	case 3:
+		_error_("Using normal stress  not supported yet");
+		break;
+	default:
+		_error_("no case higher than 3 for SedimentlimitFlag");
+	}
+	return h_max;
+}/*}}}*/
+
+void  HydrologyDCInefficientAnalysis::GetHydrologyDCInefficientHmax(IssmDouble* ph_max,Element* element, Node* innode){/*{{{*/
+	
+	int        hmax_flag;
+	IssmDouble h_max;
+	IssmDouble rho_ice,rho_water;
+	IssmDouble thickness,bed;
+	/*Get the flag to the limitation method*/
+	element->FindParam(&hmax_flag,HydrologydcSedimentlimitFlagEnum);
+	
+	/*Switch between the different cases*/
+	switch(hmax_flag){
+	case 0:
+		h_max=1.0e+10;
+		break;
+	case 1:
+		element->FindParam(&h_max,HydrologydcSedimentlimitEnum);
+		break;
+	case 2:
+		/*Compute max*/
+		rho_water = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+		rho_ice   = element->GetMaterialParameter(MaterialsRhoIceEnum);
+		element->GetInputValue(&thickness,innode,ThicknessEnum);
+		element->GetInputValue(&bed,innode,BaseEnum);
+		h_max=((rho_ice*thickness)/rho_water)+bed;
+		break;
+	case 3:
+		_error_("Using normal stress  not supported yet");
+		break;
+	default:
+		_error_("no case higher than 3 for SedimentlimitFlag");
+	}
+	/*Assign output pointer*/
+	*ph_max=h_max;
+}
+/*}}}*/
+
+IssmDouble HydrologyDCInefficientAnalysis::GetHydrologyKMatrixTransfer(Element* element, Gauss* gauss, Input* sed_head_input, Input* epl_head_input, Input* thick_input, Input* base_input){/*{{{*/
+
+	int transfermethod;
+	IssmDouble hmax;
+	IssmDouble epl_head,sediment_head;
+	IssmDouble leakage,transfer;
+	IssmDouble continuum, factor;
+	
+	element->FindParam(&transfermethod,HydrologydcTransferFlagEnum);
+
+	/*Switch between the different transfer methods cases*/
+	switch(transfermethod){
+	case 0:
+		/*Just keepping the transfer to zero*/
+		transfer=0.0;
+		break;
+	case 1:
+		_assert_(sed_head_input);
+		_assert_(epl_head_input);
+		
+		sed_head_input->GetInputValue(&sediment_head,gauss);
+		epl_head_input->GetInputValue(&epl_head,gauss);
+		element->FindParam(&leakage,HydrologydcLeakageFactorEnum);
+
+		hmax=GetHydrologyDCInefficientHmax(element, gauss, thick_input, base_input);
+	
+		//Computing continuum function to apply to transfer term, transfer is null only if
+		//epl_head>sediment_head AND sediment_head>h_max
+		continuum=((1.0/(1.0+exp(-20.0*(sediment_head-epl_head)))))+(1.0/(1.0+exp(-20.0*(hmax-sediment_head))));
+		factor=min(continuum,1.0);
+		transfer=leakage*factor;
+
+		break;
+	default:
+		_error_("no case higher than 1 for the Transfer method");
+	}
+	return transfer;
+}/*}}}*/
+
+IssmDouble HydrologyDCInefficientAnalysis::GetHydrologyPVectorTransfer(Element* element, Gauss* gauss, Input* sed_head_input, Input* epl_head_input, Input* thick_input, Input* base_input){/*{{{*/
+
+	int transfermethod;
+	IssmDouble hmax;
+	IssmDouble epl_head,sediment_head;
+	IssmDouble leakage,transfer;
+	IssmDouble continuum, factor;
+	
+	element->FindParam(&transfermethod,HydrologydcTransferFlagEnum);
+
+	/*Switch between the different transfer methods cases*/
+	switch(transfermethod){
+	case 0:
+		/*Just keepping the transfer to zero*/
+		transfer=0.0;
+		break;
+	case 1:
+		_assert_(sed_head_input);
+		_assert_(epl_head_input);
+		
+		sed_head_input->GetInputValue(&sediment_head,gauss);
+		epl_head_input->GetInputValue(&epl_head,gauss);
+		element->FindParam(&leakage,HydrologydcLeakageFactorEnum);
+
+		hmax=GetHydrologyDCInefficientHmax(element, gauss, thick_input, base_input);
+		
+		//Computing continuum function to apply to transfer term, transfer is null only if
+		//epl_head>sediment_head AND sediment_head>h_max
+		continuum=((1.0/(1.0+exp(-20.0*(sediment_head-epl_head)))))+(1.0/(1.0+exp(-20.0*(hmax-sediment_head))));
+		factor=min(continuum,1.0);
+		transfer=epl_head*leakage*factor;
+		break;
+	default:
+		_error_("no case higher than 1 for the Transfer method");
+	}
+	return transfer;
+}/*}}}*/
+
+void HydrologyDCInefficientAnalysis::ElementizeEplMask(FemModel* femmodel){/*{{{*/
+
+	bool     element_active;
+	Element* element=NULL;
+
+	for(int i=0;i<femmodel->elements->Size();i++){
+		element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+			Input* node_mask_input = element->GetInput(HydrologydcMaskEplactiveNodeEnum); _assert_(node_mask_input);
+		
+		if(node_mask_input->Max()>0.){
+			element_active = true;
+		}
+		else{
+			element_active = false;
+		}
+		element->AddInput(new BoolInput(HydrologydcMaskEplactiveEltEnum,element_active));
+	}
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologyDCInefficientAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologyDCInefficientAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologyDCInefficientAnalysis.h	(revision 21239)
@@ -0,0 +1,44 @@
+/*! \file HydrologyDCInefficientAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _HydrologyDCInefficientAnalysis_
+#define _HydrologyDCInefficientAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+class Node; 
+class Input;
+class HydrologyDCInefficientAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void UpdateConstraints(FemModel* femmodel);
+
+		/*Intermediaries*/
+		void GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		IssmDouble SedimentStoring(Element* element);
+		IssmDouble EplSpecificStoring(Element* element);
+		IssmDouble GetHydrologyDCInefficientHmax(Element* element, Gauss* gauss, Input* thickness_input, Input* base_input);
+		void GetHydrologyDCInefficientHmax(IssmDouble* ph_max,Element* element, Node* innode);
+		IssmDouble GetHydrologyKMatrixTransfer(Element* element, Gauss* gauss, Input* sed_head_input, Input* epl_head_input, Input* thick_input, Input* base_input);
+		IssmDouble GetHydrologyPVectorTransfer(Element* element, Gauss* gauss, Input* sed_head_input, Input* epl_head_input, Input* thick_input, Input* base_input);
+		void ElementizeEplMask(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologyShreveAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologyShreveAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologyShreveAnalysis.cpp	(revision 21239)
@@ -0,0 +1,394 @@
+#include "./HydrologyShreveAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void HydrologyShreveAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*retrieve some parameters: */
+	int          hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	if(hydrology_model!=HydrologyshreveEnum) return;
+
+	IoModelToConstraintsx(constraints,iomodel,"md.hydrologyshreve.spcwatercolumn",HydrologyShreveAnalysisEnum,P1Enum);
+
+}/*}}}*/
+void HydrologyShreveAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	/*No loads*/
+}/*}}}*/
+void HydrologyShreveAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	/*Fetch parameters: */
+	int  hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want Shreve?*/
+	if(hydrology_model!=HydrologyshreveEnum) return;
+
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,HydrologyShreveAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  HydrologyShreveAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void HydrologyShreveAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Fetch data needed: */
+	int    hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want Shreve?*/
+	if(hydrology_model!=HydrologyshreveEnum) return;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(elements,"md.slr.sealevel",SealevelEnum,0);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.mask.groundedice_levelset",MaskGroundediceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.watercolumn",WatercolumnEnum);
+
+	elements->InputDuplicate(WatercolumnEnum,WaterColumnOldEnum);
+}/*}}}*/
+void HydrologyShreveAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	/*retrieve some parameters: */
+	int  hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want Shreve?*/
+	if(hydrology_model!=HydrologyshreveEnum) return;
+
+	parameters->AddObject(new IntParam(HydrologyModelEnum,hydrology_model));
+	parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.stabilization",HydrologyshreveStabilizationEnum));
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           HydrologyShreveAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* HydrologyShreveAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+void           HydrologyShreveAnalysis::CreateHydrologyWaterVelocityInput(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble dsdx,dsdy,dbdx,dbdy,w;
+
+	/*Retrieve all inputs and parameters*/
+	IssmDouble  rho_ice   = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble  rho_water = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	IssmDouble  g         = element->GetMaterialParameter(ConstantsGEnum);
+	IssmDouble  mu_water  = element->GetMaterialParameter(MaterialsMuWaterEnum);
+	Input* surfaceslopex_input = element->GetInput(SurfaceSlopeXEnum); _assert_(surfaceslopex_input);
+	Input* surfaceslopey_input = element->GetInput(SurfaceSlopeYEnum); _assert_(surfaceslopey_input);
+	Input* bedslopex_input     = element->GetInput(BedSlopeXEnum);     _assert_(bedslopex_input);
+	Input* bedslopey_input     = element->GetInput(BedSlopeYEnum);     _assert_(bedslopey_input);
+	Input* watercolumn_input   = element->GetInput(WatercolumnEnum);   _assert_(watercolumn_input);
+
+	/*Fetch number of vertices and allocate output*/
+	int numvertices = element->GetNumberOfVertices();
+	IssmDouble* vx  = xNew<IssmDouble>(numvertices);
+	IssmDouble* vy  = xNew<IssmDouble>(numvertices);
+
+	Gauss* gauss=element->NewGauss();
+	for(int iv=0;iv<numvertices;iv++){
+		gauss->GaussVertex(iv);
+		surfaceslopex_input->GetInputValue(&dsdx,gauss);
+		surfaceslopey_input->GetInputValue(&dsdy,gauss);
+		bedslopex_input->GetInputValue(&dbdx,gauss);
+		bedslopey_input->GetInputValue(&dbdy,gauss);
+		watercolumn_input->GetInputValue(&w,gauss);
+
+		/* Water velocity x and y components */
+		vx[iv]= - w*w/(12 * mu_water)*(rho_ice*g*dsdx+(rho_water-rho_ice)*g*dbdx);
+		vy[iv]= - w*w/(12 * mu_water)*(rho_ice*g*dsdy+(rho_water-rho_ice)*g*dbdy);
+	}
+
+	/*clean-up*/
+	delete gauss;
+
+	/*Add to inputs*/
+	element->AddInput(HydrologyWaterVxEnum,vx,P1Enum);
+	element->AddInput(HydrologyWaterVyEnum,vy,P1Enum);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(vy);
+}/*}}}*/
+ElementMatrix* HydrologyShreveAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* HydrologyShreveAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble diffusivity;
+	IssmDouble Jdet,D_scalar,dt,h;
+	IssmDouble vx,vy,vel,dvxdx,dvydy;
+	IssmDouble dvx[2],dvy[2];
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    B      = xNew<IssmDouble>(2*numnodes);
+	IssmDouble*    Bprime = xNew<IssmDouble>(2*numnodes);
+	IssmDouble     D[2][2]={0.};
+
+	/*Create water velocity vx and vy from current inputs*/
+	CreateHydrologyWaterVelocityInput(element);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&diffusivity,HydrologyshreveStabilizationEnum);
+	Input* vx_input=element->GetInput(HydrologyWaterVxEnum); _assert_(vx_input);
+	Input* vy_input=element->GetInput(HydrologyWaterVyEnum); _assert_(vy_input);
+	h = element->CharacteristicLength();
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+
+		D_scalar=gauss->weight*Jdet;
+
+		TripleMultiply(basis,1,numnodes,1,
+					&D_scalar,1,1,0,
+					basis,1,numnodes,0,
+					Ke->values,1);
+
+		GetB(B,element,xyz_list,gauss);
+		GetBprime(Bprime,element,xyz_list,gauss);
+
+		dvxdx=dvx[0];
+		dvydy=dvy[1];
+		D_scalar=dt*gauss->weight*Jdet;
+
+		D[0][0]=D_scalar*dvxdx;
+		D[1][1]=D_scalar*dvydy;
+		TripleMultiply(B,2,numnodes,1,
+					&D[0][0],2,2,0,
+					B,2,numnodes,0,
+					&Ke->values[0],1);
+
+		D[0][0]=D_scalar*vx;
+		D[1][1]=D_scalar*vy;
+		TripleMultiply(B,2,numnodes,1,
+					&D[0][0],2,2,0,
+					Bprime,2,numnodes,0,
+					&Ke->values[0],1);
+
+		/*Artificial diffusivity*/
+		vel=sqrt(vx*vx+vy*vy);
+		D[0][0]=D_scalar*diffusivity*h/(2*vel)*vx*vx;
+		D[1][0]=D_scalar*diffusivity*h/(2*vel)*vy*vx;
+		D[0][1]=D_scalar*diffusivity*h/(2*vel)*vx*vy;
+		D[1][1]=D_scalar*diffusivity*h/(2*vel)*vy*vy;
+		TripleMultiply(Bprime,2,numnodes,1,
+					&D[0][0],2,2,0,
+					Bprime,2,numnodes,0,
+					&Ke->values[0],1);
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(Bprime);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* HydrologyShreveAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Skip if water or ice shelf element*/
+	if(element->IsFloating()) return NULL;
+
+	/*Intermediaries */
+	IssmDouble  Jdet,dt;
+	IssmDouble  mb,oldw;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input* mb_input   = element->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(mb_input);
+	Input* oldw_input = element->GetInput(WaterColumnOldEnum);                      _assert_(oldw_input);
+
+	/*Initialize mb_correction to 0, do not forget!:*/
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		mb_input->GetInputValue(&mb,gauss);
+		oldw_input->GetInputValue(&oldw,gauss);
+
+		if(dt!=0.){
+			for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(oldw+dt*mb)*basis[i];
+		}
+		else{
+			for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*mb*basis[i];
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           HydrologyShreveAnalysis::GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3] where Bi is of size 3*NDOF2. 
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi=[ N ]
+	 *          [ N ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B_prog has been allocated already, of size: 2x(NDOF1*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions*/
+	IssmDouble* basis=xNew<IssmDouble>(numnodes);
+	element->NodalFunctions(basis,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		B[numnodes*0+i] = basis[i];
+		B[numnodes*1+i] = basis[i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           HydrologyShreveAnalysis::GetBprime(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B'  matrix. B'=[B1' B2' B3'] where Bi' is of size 3*NDOF2. 
+	 * For node i, Bi' can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi_prime=[ dN/dx ]
+	 *                [ dN/dy ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B' has been allocated already, of size: 3x(NDOF2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(2*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B': */
+	for(int i=0;i<numnodes;i++){
+		Bprime[numnodes*0+i] = dbasis[0*numnodes+i];
+		Bprime[numnodes*1+i] = dbasis[1*numnodes+i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+
+}/*}}}*/
+void           HydrologyShreveAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,WatercolumnEnum);
+}/*}}}*/
+void           HydrologyShreveAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           HydrologyShreveAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	/*Intermediary*/
+	int* doflist = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Fetch dof list and allocate solution vector*/
+	element->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(int i=0;i<numnodes;i++){
+		values[i]=solution[doflist[i]];
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+		if (values[i]<10e-10) values[i]=10e-10; //correcting the water column to positive values
+	}
+
+	/*Add input to the element: */
+	element->AddInput(WatercolumnEnum,values,element->GetElementType());
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           HydrologyShreveAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
+
+
+/*Needed changes to switch to the Johnson formulation*//*{{{*/
+/*All the changes are to be done in the velocity computation.
+	The new velocity needs some new parameter that should be introduce in the hydrologyshreve class:
+	'p' and 'q' which are the exponent of the Manning formula for laminar (p=2,q=1) or turbulent (p=2/3,q=1/2) flow
+	'R' the hydraulic radius
+	'n' the manning roughness coeficient
+
+	With these, the velocity reads ;
+
+	v= - (1/n)* pow(R,p)*pow((grad phi(rho_water*g)),q)
+
+	you should also redefine the water pressure potential 'phi' with respect to the effective pressure deffinition given in Johson:
+	phi=(rho_ice*g*( surface + ((rho_water/rho_ice)-1)*base - k_n*((thickness* grad(base))/omega) )
+
+	where 
+	'omega' is the fractional area of the base occupied by the water film
+	'k_n' is a parameter
+	This last equation derives from the effective pressure definition developped in Alley 1989
+*/
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologyShreveAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologyShreveAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologyShreveAnalysis.h	(revision 21239)
@@ -0,0 +1,36 @@
+/*! \file HydrologyShreveAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _HydrologyShreveAnalysis_
+#define _HydrologyShreveAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class HydrologyShreveAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		void           CreateHydrologyWaterVelocityInput(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBprime(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologySommersAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologySommersAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologySommersAnalysis.cpp	(revision 21239)
@@ -0,0 +1,554 @@
+#include "./HydrologySommersAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Define 2 hardcoded parameters*/
+#define OMEGA 0.001    // parameter controlling transition to nonlinear resistance in basal system (dimensionless)
+#define NU    1.787e-6 //kinematic water viscosity m^2/s
+#define CT    7.5e-8  // Clapeyron slope (K/Pa) 
+#define CW    4.22e3   // specific heat capacity of water (J/kg/K)
+
+/*Model processing*/
+void HydrologySommersAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*retrieve some parameters: */
+	int hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	if(hydrology_model!=HydrologysommersEnum) return;
+
+	IoModelToConstraintsx(constraints,iomodel,"md.hydrology.spchead",HydrologySommersAnalysisEnum,P1Enum);
+
+}/*}}}*/
+void HydrologySommersAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Fetch parameters: */
+	int  hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want Sommers?*/
+	if(hydrology_model!=HydrologysommersEnum) return;
+
+	/*Create discrete loads for Moulins*/
+	CreateSingleNodeToElementConnectivity(iomodel);
+	for(int i=0;i<iomodel->numberofvertices;i++){
+		if (iomodel->domaintype!=Domain3DEnum){
+			/*keep only this partition's nodes:*/
+			if(iomodel->my_vertices[i]){
+				loads->AddObject(new Moulin(iomodel->loadcounter+i+1,i,iomodel,HydrologySommersAnalysisEnum));
+			}
+		}
+		else if(reCast<int>(iomodel->Data("md.mesh.vertexonbase")[i])){
+			if(iomodel->my_vertices[i]){
+				loads->AddObject(new Moulin(iomodel->loadcounter+i+1,i,iomodel,HydrologySommersAnalysisEnum));
+			}	
+		}
+	}
+	iomodel->DeleteData(1,"md.mesh.vertexonbase");
+
+	/*Deal with Neumann BC*/
+	int M,N;
+	int *segments = NULL;
+	iomodel->FetchData(&segments,&M,&N,"md.mesh.segments");
+
+	/*Check that the size seem right*/
+	_assert_(N==3); _assert_(M>=3);
+	for(int i=0;i<M;i++){
+		if(iomodel->my_elements[segments[i*3+2]-1]){
+			loads->AddObject(new Neumannflux(iomodel->loadcounter+i+1,i,iomodel,segments,HydrologySommersAnalysisEnum));
+		}
+	}
+
+	xDelete<int>(segments);
+
+}/*}}}*/
+void HydrologySommersAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	/*Fetch parameters: */
+	int  hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want Sommers?*/
+	if(hydrology_model!=HydrologysommersEnum) return;
+
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,HydrologySommersAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  HydrologySommersAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void HydrologySommersAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Fetch data needed: */
+	int    hydrology_model,frictionlaw;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want Sommers?*/
+	if(hydrology_model!=HydrologysommersEnum) return;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.base",BaseEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.mask.groundedice_levelset",MaskGroundediceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(elements,"md.basalforcings.geothermalflux",BasalforcingsGeothermalfluxEnum);
+	iomodel->FetchDataToInput(elements,"md.hydrology.head",HydrologyHeadEnum);
+	iomodel->FetchDataToInput(elements,"md.hydrology.gap_height",HydrologyGapHeightEnum);
+	iomodel->FetchDataToInput(elements,"md.hydrology.englacial_input",HydrologyEnglacialInputEnum);
+	iomodel->FetchDataToInput(elements,"md.hydrology.moulin_input",HydrologyMoulinInputEnum);
+	iomodel->FetchDataToInput(elements,"md.hydrology.bump_spacing",HydrologyBumpSpacingEnum);
+	iomodel->FetchDataToInput(elements,"md.hydrology.bump_height",HydrologyBumpHeightEnum);
+	iomodel->FetchDataToInput(elements,"md.hydrology.reynolds",HydrologyReynoldsEnum);
+	iomodel->FetchDataToInput(elements,"md.hydrology.neumannflux",HydrologyNeumannfluxEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vy",VyEnum);
+	//iomodel->FetchDataToInput(elements,"md.hydrology.eff_pressure",EffectivePressureEnum);
+	iomodel->FindConstant(&frictionlaw,"md.friction.law");
+	/*Friction law variables*/
+	switch(frictionlaw){
+		case 1:
+			iomodel->FetchDataToInput(elements,"md.friction.coefficient",FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.p",FrictionPEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.q",FrictionQEnum);
+			break;
+		case 8:
+			iomodel->FetchDataToInput(elements,"md.friction.coefficient",FrictionCoefficientEnum);
+			break;
+		default:
+			_error_("Friction law "<< frictionlaw <<" not supported");
+	}
+}/*}}}*/
+void HydrologySommersAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	/*retrieve some parameters: */
+	int  hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want Sommers?*/
+	if(hydrology_model!=HydrologysommersEnum) return;
+
+	parameters->AddObject(new IntParam(HydrologyModelEnum,hydrology_model));
+	parameters->AddObject(iomodel->CopyConstantObject("md.friction.law",FrictionLawEnum));
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           HydrologySommersAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* HydrologySommersAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* HydrologySommersAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* HydrologySommersAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble Jdet;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/*Get conductivity from inputs*/
+	IssmDouble conductivity = GetConductivity(element);
+//if(element->Id()==1){
+//	printf("Conductivity at CreateKMatrix: %g \n",conductivity);
+//}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(1);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += conductivity*gauss->weight*Jdet*(dbasis[0*numnodes+i]*dbasis[0*numnodes+j] + dbasis[1*numnodes+i]*dbasis[1*numnodes+j]);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* HydrologySommersAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Skip if water or ice shelf element*/
+	if(element->IsFloating()) return NULL;
+
+	/*Intermediaries */
+	IssmDouble  Jdet,meltrate,G,dh[2],B,A,n;
+	IssmDouble  gap,bed,thickness,head,ieb,head_old;
+	IssmDouble  lr,br,vx,vy,beta;
+	IssmDouble  alpha2,frictionheat;
+   IssmDouble  PMPheat,dpressure_water[2],dbed[2];	
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	IssmDouble  latentheat      = element->GetMaterialParameter(MaterialsLatentheatEnum);
+	IssmDouble  g               = element->GetMaterialParameter(ConstantsGEnum);
+	IssmDouble  rho_ice         = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble  rho_water       = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	Input* geothermalflux_input = element->GetInput(BasalforcingsGeothermalfluxEnum);_assert_(geothermalflux_input);
+	Input* head_input           = element->GetInput(HydrologyHeadEnum);              _assert_(head_input);
+	Input* gap_input            = element->GetInput(HydrologyGapHeightEnum);         _assert_(gap_input);
+	Input* thickness_input      = element->GetInput(ThicknessEnum);                  _assert_(thickness_input);
+	Input* base_input           = element->GetInput(BaseEnum);                       _assert_(base_input);
+	Input* B_input              = element->GetInput(MaterialsRheologyBEnum);         _assert_(B_input);
+	Input* n_input              = element->GetInput(MaterialsRheologyNEnum);         _assert_(n_input);
+	Input* englacial_input      = element->GetInput(HydrologyEnglacialInputEnum);    _assert_(englacial_input);
+	Input* vx_input             = element->GetInput(VxEnum);                         _assert_(vx_input);
+	Input* vy_input             = element->GetInput(VyEnum);                         _assert_(vy_input);
+	Input* lr_input             = element->GetInput(HydrologyBumpSpacingEnum);       _assert_(lr_input);
+	Input* br_input             = element->GetInput(HydrologyBumpHeightEnum);        _assert_(br_input);
+   Input* headold_input        = element->GetInput(HydrologyHeadOldEnum);           _assert_(headold_input);
+
+	/*Get conductivity from inputs*/
+	IssmDouble conductivity = GetConductivity(element);
+//if(element->Id()==1){
+//	printf("Conductivity in CreatePVector: %g \n",conductivity);
+//}
+
+	/*Build friction element, needed later: */
+	Friction* friction=new Friction(element,2);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		geothermalflux_input->GetInputValue(&G,gauss);
+		base_input->GetInputValue(&bed,gauss);
+		base_input->GetInputDerivativeValue(&dbed[0],xyz_list,gauss);
+		thickness_input->GetInputValue(&thickness,gauss);
+		gap_input->GetInputValue(&gap,gauss);
+		head_input->GetInputValue(&head,gauss);
+		head_input->GetInputDerivativeValue(&dh[0],xyz_list,gauss);
+		englacial_input->GetInputValue(&ieb,gauss);
+		lr_input->GetInputValue(&lr,gauss);
+		br_input->GetInputValue(&br,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+      headold_input->GetInputValue(&head_old,gauss);
+
+		/*Get ice A parameter*/
+		B_input->GetInputValue(&B,gauss);
+		n_input->GetInputValue(&n,gauss);
+		A=pow(B,-n);
+		
+		/*Compute beta term*/
+		if(gap<br)
+		 beta = (br-gap)/lr;
+		else
+		 beta = 0.;
+
+		/*Compute frictional heat flux*/
+		friction->GetAlpha2(&alpha2,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		frictionheat=alpha2*(vx*vx+vy*vy);
+
+		/*Get water and ice pressures*/
+		IssmDouble pressure_ice   = rho_ice*g*thickness;    _assert_(pressure_ice>0.); 
+		IssmDouble pressure_water = rho_water*g*(head-bed);
+		if(pressure_water>pressure_ice) pressure_water = pressure_ice;
+
+		/*Get water pressure from previous time step to use in lagged creep term*/
+		IssmDouble pressure_water_old = rho_water*g*(head_old-bed);
+		if(pressure_water_old>pressure_ice) pressure_water_old = pressure_ice;
+
+		/*Compute change in sensible heat due to changes in pressure melting point*/
+   	dpressure_water[0] = rho_water*g*(dh[0] - dbed[0]);
+		dpressure_water[1] = rho_water*g*(dh[1] - dbed[1]);
+		PMPheat=-CT*CW*conductivity*(dh[0]*dpressure_water[0]+dh[1]*dpressure_water[1]);
+
+		meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1])-PMPheat);
+		_assert_(meltrate>0.);
+		
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*
+		 (
+		  meltrate*(1/rho_water-1/rho_ice)
+		  +A*pow(fabs(pressure_ice - pressure_water_old),n-1)*(pressure_ice - pressure_water_old)*gap
+		  -beta*sqrt(vx*vx+vy*vy)
+		  +ieb
+		  )*basis[i];     	
+	}
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete friction;
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           HydrologySommersAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,HydrologyHeadEnum);
+}/*}}}*/
+void           HydrologySommersAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           HydrologySommersAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	/*Intermediary*/
+	IssmDouble dh[3];
+	int* doflist = NULL;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get gravity from parameters*/
+	   IssmDouble  g = element->GetMaterialParameter(ConstantsGEnum);
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Fetch dof list and allocate solution vector*/
+	element->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values = xNew<IssmDouble>(numnodes);
+
+	/*Get thickness and base on nodes to apply cap on water head*/
+   IssmDouble* eff_pressure = xNew<IssmDouble>(numnodes);
+	IssmDouble* thickness = xNew<IssmDouble>(numnodes);
+	IssmDouble* bed       = xNew<IssmDouble>(numnodes);
+	IssmDouble  rho_ice   = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble  rho_water = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	element->GetInputListOnNodes(&thickness[0],ThicknessEnum);
+	element->GetInputListOnNodes(&bed[0],BaseEnum);
+
+	/*Use the dof list to index into the solution vector: */
+	for(int i=0;i<numnodes;i++){
+		values[i]=solution[doflist[i]];
+
+		/*make sure that p_water<p_ice ->  h<rho_i H/rho_w + zb*/
+		if(values[i]>rho_ice*thickness[i]/rho_water+bed[i]){
+			values[i] = rho_ice*thickness[i]/rho_water+bed[i];
+		}
+
+		/*Make sure that negative pressure is not allowed*/
+      if(values[i]<bed[i]){
+			values[i] = bed[i];
+		}
+
+		/*Calculate effective pressure*/
+		eff_pressure[i] = rho_ice*g*thickness[i] - rho_water*g*(values[i]-bed[i]);
+	
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Add input to the element: */
+	element->AddInput(HydrologyHeadEnum,values,element->GetElementType());
+   element->AddInput(EffectivePressureEnum,eff_pressure,P1Enum);
+
+	/*Update reynolds number according to new solution*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* head_input = element->GetInput(HydrologyHeadEnum);_assert_(head_input);
+	head_input->GetInputDerivativeAverageValue(&dh[0],xyz_list);
+	IssmDouble conductivity = GetConductivity(element);
+
+	IssmDouble reynolds = conductivity*sqrt(dh[0]*dh[0]+dh[1]*dh[1])/(2.*NU);
+	element->AddInput(HydrologyReynoldsEnum,&reynolds,P0Enum);
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(thickness);
+	xDelete<IssmDouble>(bed);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<int>(doflist);
+	xDelete<IssmDouble>(eff_pressure);
+}/*}}}*/
+void           HydrologySommersAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
+
+/*Additional methods*/
+IssmDouble HydrologySommersAnalysis::GetConductivity(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble gap,reynolds;
+
+	/*Get gravity from parameters*/
+	IssmDouble  g = element->GetMaterialParameter(ConstantsGEnum);
+
+	/*Get Reynolds and gap average values*/
+	Input* reynolds_input = element->GetInput(HydrologyReynoldsEnum);  _assert_(reynolds_input);
+	Input* gap_input      = element->GetInput(HydrologyGapHeightEnum); _assert_(gap_input);
+	reynolds_input->GetInputAverage(&reynolds);
+	gap_input->GetInputAverage(&gap);
+	
+	/*Compute conductivity*/
+	IssmDouble conductivity = pow(gap,3)*g/(12.*NU*(1+OMEGA*reynolds));
+	_assert_(conductivity>0);
+
+	/*Clean up and return*/
+	return conductivity;
+}/*}}}*/
+void HydrologySommersAnalysis::UpdateGapHeight(FemModel* femmodel){/*{{{*/
+
+
+	for(int j=0;j<femmodel->elements->Size();j++){
+		Element* element=(Element*)femmodel->elements->GetObjectByOffset(j);
+		UpdateGapHeight(element);
+	}
+
+}/*}}}*/
+void HydrologySommersAnalysis::UpdateGapHeight(Element* element){/*{{{*/
+
+	/*Skip if water or ice shelf element*/
+	if(element->IsFloating()) return;
+
+	/*Intermediaries */
+	IssmDouble newgap = 0.;
+	IssmDouble  Jdet,meltrate,G,dh[2],B,A,n,dt;
+	IssmDouble  gap,bed,thickness,head,ieb;
+	IssmDouble  lr,br,vx,vy,beta;
+	IssmDouble  alpha2,frictionheat;
+	IssmDouble* xyz_list = NULL;
+   IssmDouble  dpressure_water[2],dbed[2],PMPheat;
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	IssmDouble  latentheat      = element->GetMaterialParameter(MaterialsLatentheatEnum);
+	IssmDouble  g               = element->GetMaterialParameter(ConstantsGEnum);
+	IssmDouble  rho_ice         = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble  rho_water       = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	Input* geothermalflux_input = element->GetInput(BasalforcingsGeothermalfluxEnum);_assert_(geothermalflux_input);
+	Input* head_input           = element->GetInput(HydrologyHeadEnum);              _assert_(head_input);
+	Input* gap_input            = element->GetInput(HydrologyGapHeightEnum);         _assert_(gap_input);
+	Input* thickness_input      = element->GetInput(ThicknessEnum);                  _assert_(thickness_input);
+	Input* base_input           = element->GetInput(BaseEnum);                       _assert_(base_input);
+	Input* B_input              = element->GetInput(MaterialsRheologyBEnum);         _assert_(B_input);
+	Input* n_input              = element->GetInput(MaterialsRheologyNEnum);         _assert_(n_input);
+	Input* englacial_input      = element->GetInput(HydrologyEnglacialInputEnum);    _assert_(englacial_input);
+	Input* vx_input             = element->GetInput(VxEnum);                         _assert_(vx_input);
+	Input* vy_input             = element->GetInput(VyEnum);                         _assert_(vy_input);
+	Input* lr_input             = element->GetInput(HydrologyBumpSpacingEnum);       _assert_(lr_input);
+	Input* br_input             = element->GetInput(HydrologyBumpHeightEnum);        _assert_(br_input);
+
+	/*Get conductivity from inputs*/
+	IssmDouble conductivity = GetConductivity(element);
+//if(element->Id()==1){
+//	printf("Conductivity at gap update: %g \n",conductivity);
+//}
+	/*Build friction element, needed later: */
+	Friction* friction=new Friction(element,2);
+
+	/*Keep track of weights*/
+	IssmDouble totalweights=0.;
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		geothermalflux_input->GetInputValue(&G,gauss);
+		base_input->GetInputValue(&bed,gauss);
+		base_input->GetInputDerivativeValue(&dbed[0],xyz_list,gauss);
+		thickness_input->GetInputValue(&thickness,gauss);
+		gap_input->GetInputValue(&gap,gauss);
+		head_input->GetInputValue(&head,gauss);
+		head_input->GetInputDerivativeValue(&dh[0],xyz_list,gauss);
+		englacial_input->GetInputValue(&ieb,gauss);
+		lr_input->GetInputValue(&lr,gauss);
+		br_input->GetInputValue(&br,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+
+		/*Get ice A parameter*/
+		B_input->GetInputValue(&B,gauss);
+		n_input->GetInputValue(&n,gauss);
+		A=pow(B,-n);
+
+		/*Compute beta term*/
+		if(gap<br)
+		 beta = (br-gap)/lr;
+		else
+		 beta = 0.;
+
+		/*Compute frictional heat flux*/
+		friction->GetAlpha2(&alpha2,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		frictionheat=alpha2*(vx*vx+vy*vy);
+
+		/*Get water and ice pressures*/
+		IssmDouble pressure_ice   = rho_ice*g*thickness;    _assert_(pressure_ice>0.); 
+		IssmDouble pressure_water = rho_water*g*(head-bed);
+		if(pressure_water>pressure_ice) pressure_water = pressure_ice;
+      
+      /* Compute change in sensible heat due to changes in pressure melting point*/
+	   dpressure_water[0] = rho_water*g*(dh[0] - dbed[0]);
+		dpressure_water[1] = rho_water*g*(dh[1] - dbed[1]);
+		PMPheat=-CT*CW*conductivity*(dh[0]*dpressure_water[0]+dh[1]*dpressure_water[1]);
+	
+		meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1])-PMPheat);
+		_assert_(meltrate>0.);
+
+		newgap += gauss->weight*Jdet*(gap+dt*(
+					meltrate/rho_ice
+					-A*pow(fabs(pressure_ice-pressure_water),n-1)*(pressure_ice-pressure_water)*gap
+					+beta*sqrt(vx*vx+vy*vy)
+					));
+		totalweights +=gauss->weight*Jdet;
+	}
+
+	/*Divide by connectivity*/
+	newgap = newgap/totalweights;
+	IssmDouble mingap = 1e-5;
+	if(newgap<mingap) newgap=mingap;
+
+	/*Limit gap height to grow to surface*/
+	if(newgap>thickness)
+	 newgap = thickness;
+	
+	 
+	/*Add new gap as an input*/
+	element->AddInput(HydrologyGapHeightEnum,&newgap,P0Enum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	delete friction;
+	delete gauss;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologySommersAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologySommersAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/HydrologySommersAnalysis.h	(revision 21239)
@@ -0,0 +1,38 @@
+/*! \file HydrologySommersAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _HydrologySommersAnalysis_
+#define _HydrologySommersAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class HydrologySommersAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+
+		/*Intermediaries*/
+		IssmDouble GetConductivity(Element* element);
+		void UpdateGapHeight(FemModel* femmodel);
+		void UpdateGapHeight(Element* element);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/L2ProjectionBaseAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/L2ProjectionBaseAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/L2ProjectionBaseAnalysis.cpp	(revision 21239)
@@ -0,0 +1,231 @@
+#include "./L2ProjectionBaseAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void L2ProjectionBaseAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*No constraints*/
+}/*}}}*/
+void L2ProjectionBaseAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*No loads*/
+}/*}}}*/
+void L2ProjectionBaseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	if(iomodel->domaintype==Domain3DEnum){
+		iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	}
+	else if(iomodel->domaintype==Domain2DverticalEnum){
+		iomodel->FetchData(1,"md.mesh.vertexonbase");
+	}
+	::CreateNodes(nodes,iomodel,L2ProjectionBaseAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  L2ProjectionBaseAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void L2ProjectionBaseAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(elements,"md.slr.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum & iomodel->domaintype!=Domain3DsurfaceEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+}/*}}}*/
+void L2ProjectionBaseAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           L2ProjectionBaseAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* L2ProjectionBaseAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* L2ProjectionBaseAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* L2ProjectionBaseAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries */
+	IssmDouble  D,Jdet;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke    = basalelement->NewElementMatrix();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+		D=gauss->weight*Jdet;
+
+		TripleMultiply(basis,1,numnodes,1,
+					&D,1,1,0,
+					basis,1,numnodes,0,
+					&Ke->values[0],1);
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+ElementVector* L2ProjectionBaseAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries */
+	int         input_enum;
+	IssmDouble  Jdet,value,slopes[2];
+	Input      *input     = NULL;
+	Input      *input2    = NULL;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe    = basalelement->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&input_enum,InputToL2ProjectEnum);
+	switch(input_enum){
+		case SurfaceSlopeXEnum: input2 = basalelement->GetInput(SurfaceEnum); _assert_(input2); break;
+		case SurfaceSlopeYEnum: input2 = basalelement->GetInput(SurfaceEnum); _assert_(input2); break;
+		case BedSlopeXEnum:     input2 = basalelement->GetInput(BaseEnum);     _assert_(input2); break;
+		case BedSlopeYEnum:     input2 = basalelement->GetInput(BaseEnum);     _assert_(input2); break;
+		case LevelsetfunctionSlopeXEnum: input2 = basalelement->GetInput(MaskIceLevelsetEnum);     _assert_(input2); break;
+		case LevelsetfunctionSlopeYEnum: input2 = basalelement->GetInput(MaskIceLevelsetEnum);     _assert_(input2); break;
+		default: input = element->GetInput(input_enum);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+
+		if(input2) input2->GetInputDerivativeValue(&slopes[0],xyz_list,gauss);
+		switch(input_enum){
+			case SurfaceSlopeXEnum: case BedSlopeXEnum: case LevelsetfunctionSlopeXEnum: value = slopes[0]; break;
+			case SurfaceSlopeYEnum: case BedSlopeYEnum: case LevelsetfunctionSlopeYEnum: value = slopes[1]; break;
+			default: input->GetInputValue(&value,gauss);
+		}
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*value*basis[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return pe;
+}/*}}}*/
+void           L2ProjectionBaseAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           L2ProjectionBaseAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           L2ProjectionBaseAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int inputenum,domaintype,elementtype;
+
+	element->FindParam(&inputenum,InputToL2ProjectEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+	element->FindParam(&elementtype,MeshElementtypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->InputUpdateFromSolutionOneDof(solution,inputenum);
+			break;
+		case Domain2DverticalEnum:
+			element->InputUpdateFromSolutionOneDof(solution,inputenum);
+			break;
+		case Domain3DEnum:
+			if(elementtype==TetraEnum)
+			 element->InputUpdateFromSolutionOneDof(solution,inputenum);
+			else
+			 element->InputUpdateFromSolutionOneDofCollapsed(solution,inputenum);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}/*}}}*/
+void           L2ProjectionBaseAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/L2ProjectionBaseAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/L2ProjectionBaseAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/L2ProjectionBaseAnalysis.h	(revision 21239)
@@ -0,0 +1,33 @@
+/*! \file L2ProjectionBaseAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _L2ProjectionBaseAnalysis_
+#define _L2ProjectionBaseAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class L2ProjectionBaseAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/L2ProjectionEPLAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/L2ProjectionEPLAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/L2ProjectionEPLAnalysis.cpp	(revision 21239)
@@ -0,0 +1,256 @@
+#include "./L2ProjectionEPLAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void L2ProjectionEPLAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*No constraints*/
+}/*}}}*/
+void L2ProjectionEPLAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*No loads*/
+}/*}}}*/
+void L2ProjectionEPLAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+	/*Now, do we really want DC?*/
+	int  hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	/*Do we want an efficient layer*/
+	bool isefficientlayer;
+	iomodel->FindConstant(&isefficientlayer,"md.hydrology.isefficientlayer");
+	if(!isefficientlayer) return;
+
+	if(iomodel->domaintype==Domain3DEnum){
+		iomodel->FetchData(1,"md.mesh.vertexonbase");
+	}
+	else if(iomodel->domaintype==Domain2DverticalEnum){
+		iomodel->FetchData(1,"md.mesh.vertexonbase");
+	}
+	::CreateNodes(nodes,iomodel,L2ProjectionEPLAnalysisEnum,P1Enum);
+	iomodel->DeleteData(1,"md.mesh.vertexonbase");
+}/*}}}*/
+int  L2ProjectionEPLAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void L2ProjectionEPLAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	bool   isefficientlayer;
+	int    hydrology_model;
+
+	/*Now, do we really want DC?*/
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	/*Do we want an efficient layer*/
+	iomodel->FindConstant(&isefficientlayer,"md.hydrology.isefficientlayer");
+	if(!isefficientlayer) return;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(elements,"md.initialization.epl_head",EplHeadEnum);
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+}/*}}}*/
+void L2ProjectionEPLAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           L2ProjectionEPLAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* L2ProjectionEPLAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* L2ProjectionEPLAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* L2ProjectionEPLAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	bool     active_element;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	Input* active_element_input=basalelement->GetInput(HydrologydcMaskEplactiveEltEnum); _assert_(active_element_input);
+	active_element_input->GetInputValue(&active_element);
+
+	/* Check that all nodes are active, else return empty matrix */
+	if(!active_element){
+		if(domaintype!=Domain2DhorizontalEnum){
+			basalelement->DeleteMaterials();
+			delete basalelement;
+		}
+		return NULL;
+	}
+
+	/*Intermediaries */
+	IssmDouble  D,Jdet;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke    = basalelement->NewElementMatrix(NoneApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+		D=gauss->weight*Jdet;
+
+		TripleMultiply(basis,1,numnodes,1,
+					&D,1,1,0,
+					basis,1,numnodes,0,
+					&Ke->values[0],1);
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+ElementVector* L2ProjectionEPLAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	bool     active_element;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	Input* active_element_input = basalelement->GetInput(HydrologydcMaskEplactiveEltEnum); _assert_(active_element_input);
+	active_element_input->GetInputValue(&active_element);
+
+	/*Check that all nodes are active, else return empty matrix*/
+	if(!active_element) {
+		if(domaintype!=Domain2DhorizontalEnum){
+			basalelement->DeleteMaterials();
+			delete basalelement;
+		}
+		return NULL;
+	}
+	
+	/*Intermediaries */
+	int         input_enum,index;
+	IssmDouble  Jdet,slopes[2];
+	Input      *input     = NULL;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe    = basalelement->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&input_enum,InputToL2ProjectEnum);
+	switch(input_enum){
+		case EplHeadSlopeXEnum: input = basalelement->GetInput(EplHeadEnum); index = 0; _assert_(input); break;
+		case EplHeadSlopeYEnum: input = basalelement->GetInput(EplHeadEnum); index = 1; _assert_(input); break;
+		default: _error_("not implemented");
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+
+		input->GetInputDerivativeValue(&slopes[0],xyz_list,gauss);
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*slopes[index]*basis[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return pe;
+}/*}}}*/
+void           L2ProjectionEPLAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           L2ProjectionEPLAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           L2ProjectionEPLAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	int inputenum,domaintype;
+
+	element->FindParam(&inputenum,InputToL2ProjectEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->InputUpdateFromSolutionOneDof(solution,inputenum);
+			break;
+		case Domain2DverticalEnum:
+			element->InputUpdateFromSolutionOneDof(solution,inputenum);
+			break;
+		case Domain3DEnum:
+			element->InputUpdateFromSolutionOneDofCollapsed(solution,inputenum);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}/*}}}*/
+void           L2ProjectionEPLAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/L2ProjectionEPLAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/L2ProjectionEPLAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/L2ProjectionEPLAnalysis.h	(revision 21239)
@@ -0,0 +1,33 @@
+/*! \file L2ProjectionEPLAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _L2ProjectionEPLAnalysis_
+#define _L2ProjectionEPLAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class L2ProjectionEPLAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/LevelsetAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/LevelsetAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/LevelsetAnalysis.cpp	(revision 21239)
@@ -0,0 +1,685 @@
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./LevelsetAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void LevelsetAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	IoModelToConstraintsx(constraints,iomodel,"md.levelset.spclevelset",LevelsetAnalysisEnum,P1Enum);
+}
+/*}}}*/
+void LevelsetAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	return;
+}/*}}}*/
+void LevelsetAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+	int finiteelement=P1Enum;
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,LevelsetAnalysisEnum,finiteelement);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}
+/*}}}*/
+int  LevelsetAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}
+/*}}}*/
+void LevelsetAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Finite element type*/
+	int finiteelement = P1Enum;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+	
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vy",VyEnum);
+
+	/*Get moving front parameters*/
+	int  calvinglaw;
+	iomodel->FindConstant(&calvinglaw,"md.calving.law");
+	switch(calvinglaw){
+		case DefaultCalvingEnum:
+			iomodel->FetchDataToInput(elements,"md.calving.calvingrate",CalvingCalvingrateEnum);
+			iomodel->FetchDataToInput(elements,"md.calving.meltingrate",CalvingMeltingrateEnum);
+			break;
+		case CalvingLevermannEnum:
+			iomodel->FetchDataToInput(elements,"md.calving.coeff",CalvinglevermannCoeffEnum);
+			iomodel->FetchDataToInput(elements,"md.calving.meltingrate",CalvinglevermannMeltingrateEnum);
+			break;
+		case CalvingDevEnum:
+			iomodel->FetchDataToInput(elements,"md.calving.coeff",CalvingdevCoeffEnum);
+			iomodel->FetchDataToInput(elements,"md.calving.meltingrate",CalvingMeltingrateEnum);
+			break;
+		case CalvingMinthicknessEnum:
+			iomodel->FetchDataToInput(elements,"md.calving.meltingrate",CalvingMeltingrateEnum);
+			break;
+		default:
+			_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+	}
+}
+/*}}}*/
+void LevelsetAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+	parameters->AddObject(iomodel->CopyConstantObject("md.levelset.stabilization",LevelsetStabilizationEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.levelset.reinit_frequency",LevelsetReinitFrequencyEnum));
+	int  calvinglaw;
+	iomodel->FindConstant(&calvinglaw,"md.calving.law");
+	switch(calvinglaw){
+		case DefaultCalvingEnum:
+		case CalvingLevermannEnum:
+		case CalvingDevEnum:
+			break;
+		case CalvingMinthicknessEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.min_thickness",CalvingMinthicknessEnum));
+			break;
+		default:
+			_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+	}
+	return;
+}
+/*}}}*/
+
+/*Finite element Analysis*/
+void           LevelsetAnalysis::Core(FemModel* femmodel){/*{{{*/
+
+	/*parameters: */
+	int  stabilization;
+	bool save_results;
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&stabilization,LevelsetStabilizationEnum);
+
+	/*activate formulation: */
+	femmodel->SetCurrentConfiguration(LevelsetAnalysisEnum);
+
+	if(VerboseSolution()) _printf0_("call computational core:\n");
+	if(stabilization==4){
+		solutionsequence_fct(femmodel);
+	}
+	else{
+		solutionsequence_linear(femmodel);
+	}
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		int outputs[1] = {MaskIceLevelsetEnum};
+		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],1);
+	}
+}/*}}}*/
+ElementVector* LevelsetAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* LevelsetAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+	/* Jacobian required for the Newton solver */
+	_error_("not implemented yet");
+}/*}}}*/
+ElementMatrix* LevelsetAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	if(!element->IsOnBase()) return NULL;
+	Element* basalelement = element->SpawnBasalElement();
+
+	/*Intermediaries */
+	int  stabilization,dim, domaintype, calvinglaw;
+	int i, row, col;
+	IssmDouble kappa;
+	IssmDouble Jdet, dt, D_scalar;
+	IssmDouble h,hx,hy,hz;
+	IssmDouble vel;
+	IssmDouble norm_dlsf, norm_calving, calvingrate, meltingrate;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get problem dimension and whether there is moving front or not*/
+	basalelement->FindParam(&domaintype,DomainTypeEnum);
+	basalelement->FindParam(&calvinglaw,CalvingLawEnum);
+	basalelement->FindParam(&stabilization,LevelsetStabilizationEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1; break;
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 2; break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes    = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke       = basalelement->NewElementMatrix();
+	IssmDouble*    basis    = xNew<IssmDouble>(numnodes);
+	IssmDouble*    B        = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    Bprime   = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    D        = xNew<IssmDouble>(dim*dim);
+	IssmDouble*    v        = xNew<IssmDouble>(dim);
+	IssmDouble*    w        = xNew<IssmDouble>(dim);
+	IssmDouble*    c        = xNewZeroInit<IssmDouble>(dim);
+	IssmDouble*    m        = xNewZeroInit<IssmDouble>(dim);
+	IssmDouble*    dlsf     = xNew<IssmDouble>(dim);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input* vx_input           = NULL;
+	Input* vy_input           = NULL;
+	Input* calvingratex_input = NULL;
+	Input* calvingratey_input = NULL;
+	Input* lsf_slopex_input   = NULL;
+	Input* lsf_slopey_input   = NULL;
+	Input* calvingrate_input  = NULL;
+	Input* meltingrate_input  = NULL;
+
+	/*Load velocities*/
+	switch(domaintype){
+		case Domain2DverticalEnum:
+			vx_input=basalelement->GetInput(VxEnum); _assert_(vx_input);
+			break;
+		case Domain2DhorizontalEnum:
+			vx_input=basalelement->GetInput(VxEnum); _assert_(vx_input);
+			vy_input=basalelement->GetInput(VyEnum); _assert_(vy_input);
+			break;
+		case Domain3DEnum:
+			vx_input=basalelement->GetInput(VxAverageEnum); _assert_(vx_input);
+			vy_input=basalelement->GetInput(VyAverageEnum); _assert_(vy_input);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Load calving inputs*/
+	switch(calvinglaw){
+		case DefaultCalvingEnum:
+		case CalvingDevEnum:
+			lsf_slopex_input  = basalelement->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input);
+			if(dim==2) lsf_slopey_input  = basalelement->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input);
+			calvingrate_input = basalelement->GetInput(CalvingCalvingrateEnum);     _assert_(calvingrate_input);
+			meltingrate_input = basalelement->GetInput(CalvingMeltingrateEnum);     _assert_(meltingrate_input);
+			break;
+		case CalvingLevermannEnum:
+			switch(domaintype){
+				case Domain2DverticalEnum:
+					calvingratex_input=basalelement->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+					break;
+				case Domain2DhorizontalEnum:
+					calvingratex_input=basalelement->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+					calvingratey_input=basalelement->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
+					break;
+				case Domain3DEnum:
+					calvingratex_input=basalelement->GetInput(CalvingratexAverageEnum); _assert_(calvingratex_input);
+					calvingratey_input=basalelement->GetInput(CalvingrateyAverageEnum); _assert_(calvingratey_input);
+					break;
+				default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+			}
+			meltingrate_input = basalelement->GetInput(CalvinglevermannMeltingrateEnum);     _assert_(meltingrate_input);
+			break;
+		case CalvingMinthicknessEnum:
+			lsf_slopex_input  = basalelement->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input);
+			if(dim==2) lsf_slopey_input  = basalelement->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input);
+			meltingrate_input = basalelement->GetInput(CalvingMeltingrateEnum);     _assert_(meltingrate_input);
+			break;
+		default:
+			_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		D_scalar=gauss->weight*Jdet;
+
+		/* Transient */
+		if(dt!=0.){
+			basalelement->NodalFunctions(basis,gauss);
+			TripleMultiply(basis,numnodes,1,0,
+						&D_scalar,1,1,0,
+						basis,1,numnodes,0,
+						&Ke->values[0],1);
+			D_scalar*=dt;
+		}
+
+		/* Advection */
+		GetB(B,basalelement,xyz_list,gauss); 
+		GetBprime(Bprime,basalelement,xyz_list,gauss); 
+		vx_input->GetInputValue(&v[0],gauss);
+		vy_input->GetInputValue(&v[1],gauss); 
+
+		/*Get calving speed*/
+		switch(calvinglaw){
+			case DefaultCalvingEnum:
+			case CalvingDevEnum:
+				lsf_slopex_input->GetInputValue(&dlsf[0],gauss);
+				if(dim==2) lsf_slopey_input->GetInputValue(&dlsf[1],gauss);
+				calvingrate_input->GetInputValue(&calvingrate,gauss);
+				meltingrate_input->GetInputValue(&meltingrate,gauss);
+
+				norm_dlsf=0.;
+				for(i=0;i<dim;i++) norm_dlsf+=pow(dlsf[i],2);
+				norm_dlsf=sqrt(norm_dlsf);
+
+				if(norm_dlsf>1.e-10)
+				 for(i=0;i<dim;i++){ 
+					 c[i]=calvingrate*dlsf[i]/norm_dlsf; m[i]=meltingrate*dlsf[i]/norm_dlsf;
+				 }
+				else
+				 for(i=0;i<dim;i++){
+					 c[i]=0.; m[i]=0.;
+				 }
+				break;
+
+			case CalvingLevermannEnum:
+				calvingratex_input->GetInputValue(&c[0],gauss);
+				if(dim==2) calvingratey_input->GetInputValue(&c[1],gauss);
+				meltingrate_input->GetInputValue(&meltingrate,gauss);
+				norm_calving=0.;
+				for(i=0;i<dim;i++) norm_calving+=pow(c[i],2);
+				norm_calving=sqrt(norm_calving)+1.e-14;
+				for(i=0;i<dim;i++) m[i]=meltingrate*c[i]/norm_calving;
+				break;
+
+			case CalvingMinthicknessEnum:
+				lsf_slopex_input->GetInputValue(&dlsf[0],gauss);
+				if(dim==2) lsf_slopey_input->GetInputValue(&dlsf[1],gauss);
+				meltingrate_input->GetInputValue(&meltingrate,gauss);
+
+				norm_dlsf=0.;
+				for(i=0;i<dim;i++) norm_dlsf+=pow(dlsf[i],2);
+				norm_dlsf=sqrt(norm_dlsf);
+
+				if(norm_dlsf>1.e-10)
+				 for(i=0;i<dim;i++){ 
+					 c[i]=0.;
+					 m[i]=meltingrate*dlsf[i]/norm_dlsf;
+				 }
+				else
+				 for(i=0;i<dim;i++){
+					 c[i]=0.;
+					 m[i]=0.;
+				 }
+				break;
+
+			default:
+				_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+		}
+
+		/*Levelset speed is ice velocity - calving rate*/
+		for(i=0;i<dim;i++) w[i]=v[i]-c[i]-m[i];
+
+		/*Compute D*/
+		for(row=0;row<dim;row++){
+			for(col=0;col<dim;col++){
+				if(row==col)
+				 D[row*dim+col]=D_scalar*w[row];
+				else
+				 D[row*dim+col]=0.;
+			}
+		}
+
+		TripleMultiply(B,dim,numnodes,1,
+					D,dim,dim,0,
+					Bprime,dim,numnodes,0,
+					&Ke->values[0],1);
+
+		/* Stabilization */
+		vel=0.;
+		for(i=0;i<dim;i++) vel+=w[i]*w[i];
+		vel=sqrt(vel)+1.e-14;
+		switch(stabilization){
+			case 0:
+				// no stabilization, do nothing
+				break;
+			case 1:
+				/* Artificial Diffusion */
+				basalelement->ElementSizes(&hx,&hy,&hz);
+				h=sqrt( pow(hx*w[0]/vel,2) + pow(hy*w[1]/vel,2) ); 
+				kappa=h*vel/2.;
+				for(row=0;row<dim;row++)
+					for(col=0;col<dim;col++)
+					if(row==col)
+						D[row*dim+col]=D_scalar*kappa;
+					else
+						D[row*dim+col]=0.;
+
+				TripleMultiply(Bprime,dim,numnodes,1,
+							D,dim,dim,0,
+							Bprime,dim,numnodes,0,
+							&Ke->values[0],1);
+				break;	
+			case 2:
+				/* Streamline Upwinding */
+				basalelement->ElementSizes(&hx,&hy,&hz);
+				h=sqrt( pow(hx*w[0]/vel,2) + pow(hy*w[1]/vel,2) );
+				for(row=0;row<dim;row++) 
+					for(col=0;col<dim;col++) 
+						D[row*dim+col] = D_scalar*h/(2.*vel)*w[row]*w[col];
+
+				TripleMultiply(Bprime,dim,numnodes,1,
+							D,dim,dim,0,
+							Bprime,dim,numnodes,0,
+							&Ke->values[0],1);
+				break;
+			default:
+				_error_("unknown type of stabilization in LevelsetAnalysis.cpp");
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(D);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(v);
+	xDelete<IssmDouble>(w);
+	xDelete<IssmDouble>(c);
+	xDelete<IssmDouble>(m);
+	xDelete<IssmDouble>(dlsf);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+ElementVector* LevelsetAnalysis::CreatePVector(Element* element){/*{{{*/
+	
+	if(!element->IsOnBase()) return NULL;
+	Element* basalelement = element->SpawnBasalElement();
+
+	/*Intermediaries */
+	int i, ig, domaintype;
+	IssmDouble  Jdet,dt;
+	IssmDouble  lsf;
+	IssmDouble* xyz_list = NULL;
+	
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe = basalelement->NewElementVector();
+	basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	
+	if(dt!=0.){
+		/*Initialize basis vector*/
+		IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+		/*Retrieve all inputs and parameters*/
+		basalelement->GetVerticesCoordinates(&xyz_list);
+		Input* levelset_input     = basalelement->GetInput(MaskIceLevelsetEnum);                    _assert_(levelset_input);
+
+		/* Start  looping on the number of gaussian points: */
+		Gauss* gauss=basalelement->NewGauss(2);
+		for(ig=gauss->begin();ig<gauss->end();ig++){
+			gauss->GaussPoint(ig);
+
+			basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+			basalelement->NodalFunctions(basis,gauss);
+
+			/* old function value */
+			levelset_input->GetInputValue(&lsf,gauss);
+			for(i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*lsf*basis[i];
+		}
+
+		/*Clean up and return*/
+		xDelete<IssmDouble>(xyz_list);
+		xDelete<IssmDouble>(basis);
+		basalelement->FindParam(&domaintype,DomainTypeEnum);
+		if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+		delete gauss;
+	}
+
+	return pe;
+}/*}}}*/
+void           LevelsetAnalysis::GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3] where Bi is of size 3*NDOF2. 
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi=[ N ]
+	 *          [ N ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B_prog has been allocated already, of size: 2x(NDOF1*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions*/
+	IssmDouble* basis=xNew<IssmDouble>(numnodes);
+	element->NodalFunctions(basis,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		B[numnodes*0+i] = basis[i];
+		B[numnodes*1+i] = basis[i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           LevelsetAnalysis::GetBprime(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B'  matrix. B'=[B1' B2' B3'] where Bi' is of size 3*NDOF2. 
+	 * For node i, Bi' can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi_prime=[ dN/dx ]
+	 *                [ dN/dy ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B' has been allocated already, of size: 3x(NDOF2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(2*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B': */
+	for(int i=0;i<numnodes;i++){
+		Bprime[numnodes*0+i] = dbasis[0*numnodes+i];
+		Bprime[numnodes*1+i] = dbasis[1*numnodes+i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+
+}/*}}}*/
+IssmDouble     LevelsetAnalysis::GetDistanceToStraight(IssmDouble* q, IssmDouble* s0, IssmDouble* s1){/*{{{*/
+	// returns distance d of point q to straight going through points s0, s1
+	// d=|a x b|/|b|
+	// with a=q-s0, b=s1-s0
+	
+	/* Intermediaries */
+	const int dim=2;
+	int i;
+	IssmDouble a[dim], b[dim];
+	IssmDouble norm_b;
+
+	for(i=0;i<dim;i++){
+		a[i]=q[i]-s0[i];
+		b[i]=s1[i]-s0[i];
+	}
+	
+	norm_b=0.;
+	for(i=0;i<dim;i++)
+		norm_b+=b[i]*b[i];
+	norm_b=sqrt(norm_b);
+	_assert_(norm_b>0.);
+
+	return fabs(a[0]*b[1]-a[1]*b[0])/norm_b;
+}/*}}}*/
+void           LevelsetAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void           LevelsetAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           LevelsetAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->InputUpdateFromSolutionOneDof(solution,MaskIceLevelsetEnum);
+			break;
+		case Domain3DEnum:
+			element->InputUpdateFromSolutionOneDofCollapsed(solution,MaskIceLevelsetEnum);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}/*}}}*/
+void           LevelsetAnalysis::SetDistanceOnIntersectedElements(FemModel* femmodel){/*{{{*/
+
+	/* Intermediaries */
+	int i,k;
+	IssmDouble dmaxp=0.,dmaxm=0,val=0.;
+
+	/*Initialize vector with number of vertices*/
+	int numvertices=femmodel->vertices->NumberOfVertices();
+	Element* element;
+
+	Vector<IssmDouble>* vec_dist_zerolevelset = NULL;
+	GetVectorFromInputsx(&vec_dist_zerolevelset, femmodel, MaskIceLevelsetEnum, VertexPIdEnum);
+	
+	/* set NaN on elements intersected by zero levelset */
+	for(i=0;i<femmodel->elements->Size();i++){
+		element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		if(element->IsZeroLevelset(MaskIceLevelsetEnum))
+			for(k=0;k<element->GetNumberOfVertices();k++)
+				vec_dist_zerolevelset->SetValue(element->vertices[k]->Sid(),NAN,INS_VAL); 
+	}
+
+	/* set distance on elements intersected by zero levelset */
+	for(i=0;i<femmodel->elements->Size();i++){
+		element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		if(element->IsZeroLevelset(MaskIceLevelsetEnum)){
+			SetDistanceToZeroLevelsetElement(vec_dist_zerolevelset, element);
+
+			/* Get maximum distance to interface along vertices */
+			for(k=0;k<element->GetNumberOfVertices();k++){
+					vec_dist_zerolevelset->GetValue(&val,element->vertices[k]->Sid()); 
+					if((val>0.) && (val>dmaxp))
+						 dmaxp=val;
+					else if((val<0.) && (val<dmaxm))
+						 dmaxm=val;
+			}
+		}
+	}
+
+	/* set all none intersected vertices to max/min distance */
+	for(i=0;i<numvertices;i++){
+		vec_dist_zerolevelset->GetValue(&val,i);
+		if(val==1.) //FIXME: improve check
+			vec_dist_zerolevelset->SetValue(i,3.*dmaxp,INS_VAL);
+		else if(val==-1.)
+			vec_dist_zerolevelset->SetValue(i,3.*dmaxm,INS_VAL);
+	}
+
+	/*Assemble vector and serialize */
+	vec_dist_zerolevelset->Assemble();
+	IssmDouble* dist_zerolevelset=vec_dist_zerolevelset->ToMPISerial();
+	InputUpdateFromVectorx(femmodel,dist_zerolevelset,MaskIceLevelsetEnum,VertexSIdEnum);
+
+	/*Clean up and return*/
+	delete vec_dist_zerolevelset;
+	delete dist_zerolevelset;
+}/*}}}*/
+void           LevelsetAnalysis::SetDistanceToZeroLevelsetElement(Vector<IssmDouble>* vec_signed_dist, Element* element){/*{{{*/
+
+	if(!element->IsZeroLevelset(MaskIceLevelsetEnum))
+		return;
+
+	/* Intermediaries */
+	const int dim=3;
+	int i,d;
+	int numvertices=element->GetNumberOfVertices();
+	IssmDouble s0[dim], s1[dim], v[dim];
+	IssmDouble dist,lsf_old;
+
+	IssmDouble* lsf = xNew<IssmDouble>(numvertices);
+	IssmDouble* sign_lsf = xNew<IssmDouble>(numvertices);
+	IssmDouble* signed_dist = xNew<IssmDouble>(numvertices);
+	IssmDouble* xyz_list = NULL;
+	IssmDouble* xyz_list_zero = NULL;
+
+	/* retrieve inputs and parameters */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetInputListOnVertices(lsf,MaskIceLevelsetEnum);
+
+	/* get sign of levelset function */
+	for(i=0;i<numvertices;i++)
+		sign_lsf[i]=(lsf[i]>=0.?1.:-1.);
+
+	element->ZeroLevelsetCoordinates(&xyz_list_zero, xyz_list, MaskIceLevelsetEnum);
+	for(d=0;d<dim;d++){
+		s0[d]=xyz_list_zero[0+d];
+		s1[d]=xyz_list_zero[3+d];
+	}
+
+	/* get signed_distance of vertices to zero levelset straight */
+	for(i=0;i<numvertices;i++){
+		for(d=0;d<dim;d++)
+			v[d]=xyz_list[3*i+d];
+		dist=GetDistanceToStraight(&v[0],&s0[0],&s1[0]);
+		signed_dist[i]=sign_lsf[i]*dist;
+	}
+	
+	/* insert signed_distance into vec_signed_dist, if computed distance is smaller */
+	for(i=0;i<numvertices;i++){
+		vec_signed_dist->GetValue(&lsf_old, element->vertices[i]->Sid());
+		if(xIsNan<IssmDouble>(lsf_old) || fabs(signed_dist[i])<fabs(lsf_old))
+			vec_signed_dist->SetValue(element->vertices[i]->Sid(),signed_dist[i],INS_VAL);
+	}
+
+	xDelete<IssmDouble>(lsf);
+	xDelete<IssmDouble>(sign_lsf);
+	xDelete<IssmDouble>(signed_dist);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_zero);
+}/*}}}*/
+void           LevelsetAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+
+	/*Intermediaries*/
+	int         calvinglaw;
+	IssmDouble  min_thickness,thickness; 
+	femmodel->parameters->FindParam(&calvinglaw,CalvingLawEnum);
+
+	if(calvinglaw==CalvingMinthicknessEnum){
+
+		/*Get minimum thickness threshold*/
+		femmodel->parameters->FindParam(&min_thickness,CalvingMinthicknessEnum);
+
+		/*Loop over all elements of this partition*/
+		for(int i=0;i<femmodel->elements->Size();i++){
+			Element* element  = xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+
+			int      numnodes = element->GetNumberOfNodes();	
+			Gauss*   gauss    = element->NewGauss();
+			Input*   H_input  = element->GetInput(ThicknessEnum); _assert_(H_input);
+
+			/*Potentially constrain nodes of this element*/
+			for(int in=0;in<numnodes;in++){
+				gauss->GaussNode(element->GetElementType(),in);
+				Node* node=element->GetNode(in);
+				H_input->GetInputValue(&thickness,gauss);
+				if(thickness<min_thickness){
+					node->ApplyConstraint(0,+1.);
+				}
+				else {
+					/* no ice, set no spc */
+					node->DofInFSet(0); 
+				}
+			}
+			delete gauss;
+		}
+	}
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/LevelsetAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/LevelsetAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/LevelsetAnalysis.h	(revision 21239)
@@ -0,0 +1,38 @@
+/*! \file LevelsetAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _LevelsetAnalysis_
+#define _LevelsetAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class LevelsetAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBprime(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		IssmDouble     GetDistanceToStraight(IssmDouble* q, IssmDouble* s0, IssmDouble* s1);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           SetDistanceOnIntersectedElements(FemModel* femmodel);
+		void           SetDistanceToZeroLevelsetElement(Vector<IssmDouble>* vec_signed_dist, Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/MasstransportAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/MasstransportAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/MasstransportAnalysis.cpp	(revision 21239)
@@ -0,0 +1,915 @@
+#include "./MasstransportAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void MasstransportAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*Fetch parameters: */
+	int stabilization;
+	iomodel->FindConstant(&stabilization,"md.masstransport.stabilization");
+
+	/*Do not add constraints in DG,  they are weakly imposed*/
+	if(stabilization!=3){
+		IoModelToConstraintsx(constraints,iomodel,"md.masstransport.spcthickness",MasstransportAnalysisEnum,P1Enum);
+	}
+
+	/*FCT, constraints are imposed using penalties*/
+	if(stabilization==4){
+		constraints->ActivatePenaltyMethod(MasstransportAnalysisEnum);
+	}
+}/*}}}*/
+void MasstransportAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Intermediaries*/
+	int element;
+	int penpair_ids[2];
+	int count=0;
+	int stabilization;
+	int numvertex_pairing;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&stabilization,"md.masstransport.stabilization");
+
+	/*Loads only in DG*/
+	if (stabilization==3){
+
+		/*Get faces and elements*/
+		CreateFaces(iomodel);
+		iomodel->FetchData(1,"md.geometry.thickness");
+
+		/*First load data:*/
+		for(int i=0;i<iomodel->numberoffaces;i++){
+
+			/*Get left and right elements*/
+			element=iomodel->faces[4*i+2]-1; //faces are [node1 node2 elem1 elem2]
+
+			/*Now, if this element is not in the partition, pass: */
+			if(!iomodel->my_elements[element]) continue;
+
+			/* Add load */
+			loads->AddObject(new Numericalflux(iomodel->loadcounter+i+1,i,i,iomodel,MasstransportAnalysisEnum));
+		}
+
+		/*Free data: */
+		iomodel->DeleteData(1,"md.geometry.thickness");
+	}
+
+	/*Create Penpair for vertex_pairing: */
+	IssmDouble *vertex_pairing=NULL;
+	IssmDouble *nodeonbase=NULL;
+	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.masstransport.vertex_pairing");
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(&nodeonbase,NULL,NULL,"md.mesh.vertexonbase");
+
+	for(int i=0;i<numvertex_pairing;i++){
+
+		if(iomodel->my_vertices[reCast<int>(vertex_pairing[2*i+0])-1]){
+
+			/*In debugging mode, check that the second node is in the same cpu*/
+			_assert_(iomodel->my_vertices[reCast<int>(vertex_pairing[2*i+1])-1]);
+
+			/*Skip if one of the two is not on the bed*/
+			if(iomodel->domaintype!=Domain2DhorizontalEnum){
+				if(!(reCast<bool>(nodeonbase[reCast<int>(vertex_pairing[2*i+0])-1])) || !(reCast<bool>(nodeonbase[reCast<int>(vertex_pairing[2*i+1])-1]))) continue;
+			}
+
+			/*Get node ids*/
+			penpair_ids[0]=iomodel->nodecounter+reCast<int>(vertex_pairing[2*i+0]);
+			penpair_ids[1]=iomodel->nodecounter+reCast<int>(vertex_pairing[2*i+1]);
+
+			/*Create Load*/
+			loads->AddObject(new Penpair(
+							iomodel->loadcounter+count+1,
+							&penpair_ids[0],
+							MasstransportAnalysisEnum));
+			count++;
+		}
+	}
+
+	/*free ressources: */
+	iomodel->DeleteData(vertex_pairing,"md.masstransport.vertex_pairing");
+	iomodel->DeleteData(nodeonbase,"md.mesh.vertexonbase");
+
+}/*}}}*/
+void MasstransportAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	/*Fetch parameters: */
+	int  stabilization;
+	iomodel->FindConstant(&stabilization,"md.masstransport.stabilization");
+
+	/*Check in 3d*/
+	if(stabilization==3 && iomodel->domaintype==Domain3DEnum) _error_("DG 3d not implemented yet");
+
+	/*Create Nodes either DG or CG depending on stabilization*/
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	if(stabilization!=3){
+		::CreateNodes(nodes,iomodel,MasstransportAnalysisEnum,P1Enum);
+	}
+	else{
+		::CreateNodes(nodes,iomodel,MasstransportAnalysisEnum,P1DGEnum);
+	}
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  MasstransportAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void MasstransportAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int    stabilization,finiteelement;
+	bool   dakota_analysis;
+	bool   isgroundingline;
+	bool   ismovingfront;
+	bool   issmb;
+
+	/*Fetch data needed: */
+	iomodel->FindConstant(&stabilization,"md.masstransport.stabilization");
+	iomodel->FindConstant(&dakota_analysis,"md.qmu.isdakota");
+	iomodel->FindConstant(&isgroundingline,"md.transient.isgroundingline");
+	iomodel->FindConstant(&ismovingfront,"md.transient.ismovingfront");
+	iomodel->FindConstant(&issmb,"md.transient.issmb");
+
+	/*Finite element type*/
+	finiteelement = P1Enum;
+	if(stabilization==3){
+		finiteelement = P1DGEnum;
+	}
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(elements,"md.slr.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.mask.groundedice_levelset",MaskGroundediceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(elements,"md.basalforcings.floatingice_melting_rate",BasalforcingsFloatingiceMeltingRateEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vy",VyEnum);
+
+	if(!issmb){
+		iomodel->FetchDataToInput(elements,"md.smb.mass_balance",SmbMassBalanceEnum);
+	}
+	if(stabilization==3){
+		iomodel->FetchDataToInput(elements,"md.masstransport.spcthickness",MasstransportSpcthicknessEnum); //for DG, we need the spc in the element
+	}
+	if(stabilization==4){
+		iomodel->FetchDataToInput(elements,"md.masstransport.spcthickness",MasstransportSpcthicknessEnum); //for FCT, we need the spc in the element (penlaties)
+	}
+
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+}/*}}}*/
+void MasstransportAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int     numoutputs;
+	char**  requestedoutputs = NULL;
+
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isFS",FlowequationIsFSEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.masstransport.isfreesurface",MasstransportIsfreesurfaceEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.masstransport.hydrostatic_adjustment",MasstransportHydrostaticAdjustmentEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.masstransport.stabilization",MasstransportStabilizationEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.masstransport.min_thickness",MasstransportMinThicknessEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.masstransport.penalty_factor",MasstransportPenaltyFactorEnum));
+
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.masstransport.requested_outputs");
+	parameters->AddObject(new IntParam(MasstransportNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(MasstransportRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.masstransport.requested_outputs");
+	
+	
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           MasstransportAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* MasstransportAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* MasstransportAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* MasstransportAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	if(!element->IsOnBase()) return NULL;
+	Element* basalelement = element->SpawnBasalElement();
+
+	ElementMatrix* Ke = NULL;
+	switch(element->FiniteElement()){
+		case P1Enum: case P2Enum:
+			Ke = CreateKMatrixCG(basalelement);
+			break;
+		case P1DGEnum:
+			Ke = CreateKMatrixDG(basalelement);
+			break;
+		default:
+			_error_("Element type " << EnumToStringx(element->FiniteElement()) << " not supported yet");
+	}
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+ElementMatrix* MasstransportAnalysis::CreateKMatrixCG(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int        stabilization;
+	int        domaintype,dim;
+	IssmDouble Jdet,D_scalar,dt,h;
+	IssmDouble vel,vx,vy,dvxdx,dvydy;
+	IssmDouble dvx[2],dvy[2];
+	IssmDouble* xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1; break;
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 2; break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    B      = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    Bprime = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    D      = xNewZeroInit<IssmDouble>(dim*dim);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+	element->FindParam(&stabilization,MasstransportStabilizationEnum);
+	Input* vxaverage_input=NULL;
+	Input* vyaverage_input=NULL;
+	if(domaintype==Domain2DhorizontalEnum){
+		vxaverage_input=element->GetInput(VxEnum); _assert_(vxaverage_input);
+		vyaverage_input=element->GetInput(VyEnum); _assert_(vyaverage_input);
+	}
+	else{
+		if(dim==1){
+			vxaverage_input=element->GetInput(VxAverageEnum); _assert_(vxaverage_input);
+		}
+		if(dim==2){
+			vxaverage_input=element->GetInput(VxAverageEnum); _assert_(vxaverage_input);
+			vyaverage_input=element->GetInput(VyAverageEnum); _assert_(vyaverage_input);
+		}
+
+	}
+	h = element->CharacteristicLength();
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vxaverage_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		if(dim==2){
+			vyaverage_input->GetInputValue(&vy,gauss);
+			vyaverage_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+		}
+
+		D_scalar=gauss->weight*Jdet;
+		TripleMultiply(basis,1,numnodes,1,
+					&D_scalar,1,1,0,
+					basis,1,numnodes,0,
+					&Ke->values[0],1);
+
+		GetB(B,element,dim,xyz_list,gauss);
+		GetBprime(Bprime,element,dim,xyz_list,gauss);
+
+		dvxdx=dvx[0];
+		if(dim==2) dvydy=dvy[1];
+		D_scalar=dt*gauss->weight*Jdet;
+
+		D[0*dim+0]=D_scalar*dvxdx;
+		if(dim==2) D[1*dim+1]=D_scalar*dvydy;
+
+		TripleMultiply(B,dim,numnodes,1,
+					D,dim,dim,0,
+					B,dim,numnodes,0,
+					&Ke->values[0],1);
+
+		D[0*dim+0]=D_scalar*vx;
+		if(dim==2) D[1*dim+1]=D_scalar*vy;
+
+		TripleMultiply(B,dim,numnodes,1,
+					D,dim,dim,0,
+					Bprime,dim,numnodes,0,
+					&Ke->values[0],1);
+
+		switch(stabilization){
+			case 0:
+				/*Nothing to be onde*/
+				break;
+			case 1:
+				/*SSA*/
+				vxaverage_input->GetInputAverage(&vx);
+				if(dim==2) vyaverage_input->GetInputAverage(&vy);
+				D[0*dim+0]=h/2.0*fabs(vx);
+				if(dim==2) D[1*dim+1]=h/2.0*fabs(vy);
+				break;
+			case 2:
+				if(dim==1){
+					vel=fabs(vx)+1.e-8;
+					D[0]=h/(2*vel)*vx*vx;
+				}
+				else{
+					/*Streamline upwinding*/
+					vel=sqrt(vx*vx+vy*vy)+1.e-8;
+					D[0*dim+0]=h/(2*vel)*vx*vx;
+					D[1*dim+0]=h/(2*vel)*vy*vx;
+					D[0*dim+1]=h/(2*vel)*vx*vy;
+					D[1*dim+1]=h/(2*vel)*vy*vy;
+				}
+				break;
+			default:
+				_error_("Stabilization "<<stabilization<<" not supported yet");
+		}
+		if(stabilization==1 || stabilization==2){
+			if(dim==1) D[0]=D_scalar*D[0];
+			else{
+				D[0*dim+0]=D_scalar*D[0*dim+0];
+				D[1*dim+0]=D_scalar*D[1*dim+0];
+				D[0*dim+1]=D_scalar*D[0*dim+1];
+				D[1*dim+1]=D_scalar*D[1*dim+1];
+			}
+
+			TripleMultiply(Bprime,dim,numnodes,1,
+						D,dim,dim,0,
+						Bprime,dim,numnodes,0,
+						&Ke->values[0],1);
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(D);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementMatrix* MasstransportAnalysis::CreateKMatrixDG(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int        domaintype;
+	IssmDouble Jdet,D_scalar,dt,vx,vy;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    B      = xNew<IssmDouble>(2*numnodes);
+	IssmDouble*    Bprime = xNew<IssmDouble>(2*numnodes);
+	IssmDouble     D[2][2];
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+	Input* vxaverage_input=NULL;
+	Input* vyaverage_input=NULL;
+	if(domaintype==Domain2DhorizontalEnum){
+		vxaverage_input=element->GetInput(VxEnum); _assert_(vxaverage_input);
+		vyaverage_input=element->GetInput(VyEnum); _assert_(vyaverage_input);
+	}
+	else{
+		vxaverage_input=element->GetInput(VxAverageEnum); _assert_(vxaverage_input);
+		vyaverage_input=element->GetInput(VyAverageEnum); _assert_(vyaverage_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+
+		D_scalar=gauss->weight*Jdet;
+		TripleMultiply(basis,1,numnodes,1,
+					&D_scalar,1,1,0,
+					basis,1,numnodes,0,
+					&Ke->values[0],1);
+
+		/*WARNING: B and Bprime are inverted compared to CG*/
+		GetB(Bprime,element,2,xyz_list,gauss);
+		GetBprime(B,element,2,xyz_list,gauss);
+
+		D_scalar = - dt*gauss->weight*Jdet;
+		D[0][0]  = D_scalar*vx;
+		D[0][1]  = 0.;
+		D[1][0]  = 0.;
+		D[1][1]  = D_scalar*vy;
+		TripleMultiply(B,2,numnodes,1,
+					&D[0][0],2,2,0,
+					Bprime,2,numnodes,0,
+					&Ke->values[0],1);
+
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(Bprime);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* MasstransportAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	if(!element->IsOnBase()) return NULL;
+	Element* basalelement = element->SpawnBasalElement();
+
+	ElementVector* pe = NULL;
+	switch(element->FiniteElement()){
+		case P1Enum: case P2Enum:
+			pe = CreatePVectorCG(basalelement);
+			break;
+		case P1DGEnum:
+			pe = CreatePVectorDG(basalelement);
+			break;
+		default:
+			_error_("Element type " << EnumToStringx(element->FiniteElement()) << " not supported yet");
+	}
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return pe;
+}/*}}}*/
+ElementVector* MasstransportAnalysis::CreatePVectorCG(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	IssmDouble  Jdet,dt;
+	IssmDouble  ms,mb,gmb,fmb,thickness,phi;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input* gmb_input           = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);  _assert_(gmb_input);
+	Input* fmb_input           = element->GetInput(BasalforcingsFloatingiceMeltingRateEnum);  _assert_(fmb_input);
+	Input* groundedice_input   = element->GetInput(MaskGroundediceLevelsetEnum);              _assert_(groundedice_input);
+	Input* ms_input            = element->GetInput(SmbMassBalanceEnum);                       _assert_(ms_input);
+	Input* thickness_input     = element->GetInput(ThicknessEnum);                            _assert_(thickness_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		ms_input->GetInputValue(&ms,gauss);
+		gmb_input->GetInputValue(&gmb,gauss);
+		fmb_input->GetInputValue(&fmb,gauss);
+		groundedice_input->GetInputValue(&phi,gauss);
+		thickness_input->GetInputValue(&thickness,gauss);
+		if(phi>0.) mb=gmb;
+		else mb=fmb;
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(thickness+dt*(ms-mb))*basis[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+ElementVector* MasstransportAnalysis::CreatePVectorDG(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	IssmDouble  Jdet,dt;
+	IssmDouble  ms,mb,gmb,fmb,thickness,phi;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input* gmb_input           = element->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(gmb_input);
+	Input* fmb_input           = element->GetInput(BasalforcingsFloatingiceMeltingRateEnum); _assert_(fmb_input);
+	Input* ms_input            = element->GetInput(SmbMassBalanceEnum);          _assert_(ms_input);
+	Input* groundedice_input   = element->GetInput(MaskGroundediceLevelsetEnum);             _assert_(groundedice_input);
+	Input* thickness_input     = element->GetInput(ThicknessEnum);                           _assert_(thickness_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		ms_input->GetInputValue(&ms,gauss);
+		gmb_input->GetInputValue(&gmb,gauss);
+		fmb_input->GetInputValue(&fmb,gauss);
+		groundedice_input->GetInputValue(&phi,gauss);
+		thickness_input->GetInputValue(&thickness,gauss);
+		if(phi>0) mb=gmb;
+		else mb=fmb;
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(thickness+dt*(ms-mb))*basis[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           MasstransportAnalysis::GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3] where Bi is of size 3*NDOF2. 
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi=[ N ]
+	 *          [ N ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B_prog has been allocated already, of size: 2x(NDOF1*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions*/
+	IssmDouble* basis=xNew<IssmDouble>(numnodes);
+	element->NodalFunctions(basis,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		for(int j=0;j<dim;j++){
+			B[numnodes*j+i] = basis[i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           MasstransportAnalysis::GetBprime(IssmDouble* Bprime,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B'  matrix. B'=[B1' B2' B3'] where Bi' is of size 3*NDOF2. 
+	 * For node i, Bi' can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi_prime=[ dN/dx ]
+	 *                [ dN/dy ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B' has been allocated already, of size: 3x(NDOF2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(dim*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B': */
+	for(int i=0;i<numnodes;i++){
+		for(int j=0;j<dim;j++){
+			Bprime[numnodes*j+i] = dbasis[j*numnodes+i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+
+}/*}}}*/
+void           MasstransportAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,ThicknessEnum);
+}/*}}}*/
+void           MasstransportAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           MasstransportAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int        i,hydroadjustment,domaintype;
+	int*       doflist=NULL;
+	IssmDouble rho_ice,rho_water,minthickness;
+	Element*   basalelement=NULL;
+
+	element->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype!=Domain2DhorizontalEnum){
+		if(!element->IsOnBase()) return;
+		basalelement=element->SpawnBasalElement();
+	}
+	else{
+		basalelement = element;
+	}
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Fetch dof list and allocate solution vector*/
+	basalelement->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* newthickness   = xNew<IssmDouble>(numnodes);
+	IssmDouble* deltathickness = xNew<IssmDouble>(numnodes);
+	IssmDouble* newbase        = xNew<IssmDouble>(numnodes);
+	IssmDouble* newsurface     = xNew<IssmDouble>(numnodes);
+	IssmDouble* oldthickness   = xNew<IssmDouble>(numnodes);
+	IssmDouble* oldbase        = xNew<IssmDouble>(numnodes);
+	IssmDouble* oldsurface     = xNew<IssmDouble>(numnodes);
+	IssmDouble* phi            = xNew<IssmDouble>(numnodes);
+	IssmDouble* sealevel       = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	basalelement->FindParam(&minthickness,MasstransportMinThicknessEnum);
+	for(i=0;i<numnodes;i++){
+		newthickness[i]=solution[doflist[i]];
+		if(xIsNan<IssmDouble>(newthickness[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(newthickness[i])) _error_("Inf found in solution vector");
+		/*Constrain thickness to be at least 1m*/
+		if(newthickness[i]<minthickness) newthickness[i]=minthickness;
+	}
+
+	/*Get previous base, thickness, surfac and current sealevel:*/
+	basalelement->GetInputListOnNodes(&oldbase[0],BaseEnum);
+	basalelement->GetInputListOnNodes(&oldsurface[0],SurfaceEnum);
+	basalelement->GetInputListOnNodes(&oldthickness[0],ThicknessEnum);
+	basalelement->GetInputListOnNodes(&phi[0],MaskGroundediceLevelsetEnum);
+	basalelement->GetInputListOnNodes(&sealevel[0],SealevelEnum);
+
+	/*What is the delta thickness forcing the sea-level rise core: */
+	for(i=0;i<numnodes;i++) deltathickness[i]=newthickness[i]-oldthickness[i];
+
+	/*Find MasstransportHydrostaticAdjustment to figure out how to update the geometry:*/
+	basalelement->FindParam(&hydroadjustment,MasstransportHydrostaticAdjustmentEnum);
+	rho_ice   = basalelement->GetMaterialParameter(MaterialsRhoIceEnum);
+	rho_water = basalelement->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+
+	for(i=0;i<numnodes;i++) {
+		if (phi[i]>0.){ //this is an ice sheet: just add thickness to base.
+			newsurface[i] = oldbase[i]+newthickness[i]; //surface = oldbase + newthickness
+			newbase[i]     = oldbase[i];                 //same base: do nothing
+		}
+		else{ //this is an ice shelf: hydrostatic equilibrium*/
+			if(hydroadjustment==AbsoluteEnum){
+				newsurface[i] = newthickness[i]*(1-rho_ice/rho_water)+sealevel[i];
+				newbase[i]     = newthickness[i]*(-rho_ice/rho_water)+sealevel[i];
+			}
+			else if(hydroadjustment==IncrementalEnum){
+				newsurface[i] = oldsurface[i]+(1.0-rho_ice/rho_water)*(newthickness[i]-oldthickness[i])+sealevel[i]; //surface = oldsurface + (1-di) * dH
+				newbase[i]     = oldbase[i]-rho_ice/rho_water*(newthickness[i]-oldthickness[i])+sealevel[i]; //base               = oldbed + di * dH
+			}
+			else _error_("Hydrostatic adjustment " << hydroadjustment << " (" << EnumToStringx(hydroadjustment) << ") not supported yet");
+		}
+	}
+
+	/*Add input to the element: */
+	element->AddBasalInput(ThicknessEnum,newthickness,P1Enum);
+	element->AddBasalInput(SealevelriseDeltathicknessEnum,deltathickness,P1Enum);
+	element->AddBasalInput(SurfaceEnum,newsurface,P1Enum);
+	element->AddBasalInput(BaseEnum,newbase,P1Enum);
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(newthickness);
+	xDelete<IssmDouble>(newbase);
+	xDelete<IssmDouble>(newsurface);
+	xDelete<IssmDouble>(oldthickness);
+	xDelete<IssmDouble>(deltathickness);
+	xDelete<IssmDouble>(oldbase);
+	xDelete<IssmDouble>(oldsurface);
+	xDelete<IssmDouble>(phi);
+	xDelete<IssmDouble>(sealevel);
+	xDelete<int>(doflist);
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+void           MasstransportAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
+
+/*Flux Correction Transport*/
+ElementMatrix* MasstransportAnalysis::CreateFctKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	IssmDouble Jdet;
+	IssmDouble vx,vy;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int dim      = 2;
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    B      = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    Bprime = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    D      = xNewZeroInit<IssmDouble>(dim*dim);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vxaverage_input=element->GetInput(VxEnum); _assert_(vxaverage_input);
+	Input* vyaverage_input=element->GetInput(VyEnum); _assert_(vyaverage_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		GetB(B,element,dim,xyz_list,gauss);
+		GetBprime(Bprime,element,dim,xyz_list,gauss);
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+
+		D[0*dim+0] = -gauss->weight*vx*Jdet;
+		D[1*dim+1] = -gauss->weight*vy*Jdet;
+
+		TripleMultiply(B,dim,numnodes,1,
+					D,dim,dim,0,
+					Bprime,dim,numnodes,0,
+					&Ke->values[0],1);
+
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(D);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementMatrix* MasstransportAnalysis::CreateMassMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  D,Jdet;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Me     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		D=gauss->weight*Jdet;
+		TripleMultiply(basis,1,numnodes,1,
+					&D,1,1,0,
+					basis,1,numnodes,0,
+					&Me->values[0],1);
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return Me;
+}/*}}}*/
+void           MasstransportAnalysis::FctKMatrix(Matrix<IssmDouble>** pKff,Matrix<IssmDouble>** pKfs,FemModel* femmodel){/*{{{*/
+
+	/*Output*/
+	Matrix<IssmDouble>* Kff = NULL;
+	Matrix<IssmDouble>* Kfs = NULL;
+
+	/*Initialize Jacobian Matrix*/
+	AllocateSystemMatricesx(&Kff,&Kfs,NULL,NULL,femmodel);
+
+	/*Create and assemble matrix*/
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element*       element = xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		ElementMatrix* Ke     = this->CreateFctKMatrix(element);
+		if(Ke) Ke->AddToGlobal(Kff,Kfs);
+		delete Ke;
+	}
+	Kff->Assemble();
+	Kfs->Assemble();
+
+	/*Assign output pointer*/
+	*pKff=Kff;
+	if(pKfs){
+		*pKfs=Kfs;
+	}
+	else{
+		delete Kfs;
+	}
+}/*}}}*/
+void           MasstransportAnalysis::LumpedMassMatrix(Vector<IssmDouble>** pMlff,FemModel* femmodel){/*{{{*/
+
+	/*Intermediaries*/
+	int  configuration_type;
+
+	/*Initialize Lumped mass matrix (actually we just save its diagonal)*/
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	int fsize      = femmodel->nodes->NumberOfDofs(configuration_type,FsetEnum);
+	int flocalsize = femmodel->nodes->NumberOfDofsLocal(configuration_type,FsetEnum);
+	Vector<IssmDouble>* Mlff = new Vector<IssmDouble>(flocalsize,fsize);
+
+	/*Create and assemble matrix*/
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element*       element = xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		ElementMatrix* MLe     = this->CreateMassMatrix(element);
+		if(MLe){
+			MLe->Lump();
+			MLe->AddDiagonalToGlobal(Mlff);
+		}
+		delete MLe;
+	}
+	Mlff->Assemble();
+
+	/*Assign output pointer*/
+	*pMlff=Mlff;
+}/*}}}*/
+void           MasstransportAnalysis::MassMatrix(Matrix<IssmDouble>** pMff,FemModel* femmodel){/*{{{*/
+
+	/*Initialize Mass matrix*/
+	Matrix<IssmDouble> *Mff = NULL;
+	AllocateSystemMatricesx(&Mff,NULL,NULL,NULL,femmodel);
+
+	/*Create and assemble matrix*/
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element*       element = xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		ElementMatrix* MLe     = this->CreateMassMatrix(element);
+		if(MLe){
+			MLe->AddToGlobal(Mff);
+		}
+		delete MLe;
+	}
+	Mff->Assemble();
+
+	/*Assign output pointer*/
+	*pMff=Mff;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/MasstransportAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/MasstransportAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/MasstransportAnalysis.h	(revision 21239)
@@ -0,0 +1,46 @@
+/*! \file MasstransportAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _MasstransportAnalysis_
+#define _MasstransportAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class MasstransportAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementMatrix* CreateKMatrixCG(Element* element);
+		ElementMatrix* CreateKMatrixDG(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		ElementVector* CreatePVectorCG(Element* element);
+		ElementVector* CreatePVectorDG(Element* element);
+		void           GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBprime(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+
+		/*FCT*/
+		ElementMatrix* CreateFctKMatrix(Element* element);
+		ElementMatrix* CreateMassMatrix(Element* element);
+		void           FctKMatrix(Matrix<IssmDouble>** pKff,Matrix<IssmDouble>** pKfs,FemModel* femmodel);
+		void           LumpedMassMatrix(Vector<IssmDouble>** pMLff,FemModel* femmodel);
+		void           MassMatrix(Matrix<IssmDouble>** pMff,FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/MeltingAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/MeltingAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/MeltingAnalysis.cpp	(revision 21239)
@@ -0,0 +1,141 @@
+#include "./MeltingAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void MeltingAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	/*No Constraints*/
+}/*}}}*/
+void MeltingAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*if 2d: Error*/
+	if(iomodel->domaintype==Domain2DhorizontalEnum) _error_("2d meshes not supported yet");
+
+	//create penalties for nodes: no node can have a temperature over the melting point
+	iomodel->FetchData(1,"md.mesh.vertexonbase");
+	CreateSingleNodeToElementConnectivity(iomodel);
+
+	for(int i=0;i<iomodel->numberofvertices;i++){
+		if(iomodel->my_vertices[i]){
+			if (reCast<int>(iomodel->Data("md.mesh.vertexonbase")[i])){
+				loads->AddObject(new Pengrid(iomodel->loadcounter+i+1,i,iomodel,MeltingAnalysisEnum));
+			}
+		}
+	}
+	iomodel->DeleteData(1,"md.mesh.vertexonbase");
+
+}/*}}}*/
+void MeltingAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,MeltingAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  MeltingAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void MeltingAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int frictionlaw;
+
+	/*Now, is the model 3d? otherwise, do nothing: */
+	if(iomodel->domaintype==Domain2DhorizontalEnum)return;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	/*Create inputs: */
+	iomodel->FetchDataToInput(elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(elements,"md.slr.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+	iomodel->FetchDataToInput(elements,"md.initialization.pressure",PressureEnum);
+}/*}}}*/
+void MeltingAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           MeltingAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* MeltingAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* MeltingAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* MeltingAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Get basal element*/
+	if(!element->IsOnBase()) return NULL;
+	Element* basalelement = element->SpawnBasalElement();
+
+	/*Intermediaries */
+	IssmDouble  D,Jdet;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke    = basalelement->NewElementMatrix(NoneApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	IssmDouble latentheat   = element->GetMaterialParameter(MaterialsLatentheatEnum);
+	IssmDouble heatcapacity = element->GetMaterialParameter(MaterialsHeatcapacityEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+		D=latentheat/heatcapacity*gauss->weight*Jdet;
+
+		TripleMultiply(basis,1,numnodes,1,
+					&D,1,1,0,
+					basis,1,numnodes,0,
+					&Ke->values[0],1);
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	basalelement->DeleteMaterials(); delete basalelement;
+	return Ke;
+}/*}}}*/
+ElementVector* MeltingAnalysis::CreatePVector(Element* element){/*{{{*/
+	return NULL;
+}/*}}}*/
+void           MeltingAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           MeltingAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           MeltingAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	element->InputUpdateFromSolutionOneDof(solution,BasalforcingsGroundediceMeltingRateEnum);
+}/*}}}*/
+void           MeltingAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/MeltingAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/MeltingAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/MeltingAnalysis.h	(revision 21239)
@@ -0,0 +1,33 @@
+/*! \file MeltingAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _MeltingAnalysis_
+#define _MeltingAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class MeltingAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/MeshdeformationAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/MeshdeformationAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/MeshdeformationAnalysis.cpp	(revision 21239)
@@ -0,0 +1,56 @@
+#include "./MeshdeformationAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void MeshdeformationAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void MeshdeformationAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void MeshdeformationAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+int  MeshdeformationAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void MeshdeformationAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void MeshdeformationAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           MeshdeformationAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* MeshdeformationAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* MeshdeformationAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* MeshdeformationAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+ElementVector* MeshdeformationAnalysis::CreatePVector(Element* element){/*{{{*/
+_error_("not implemented yet");
+}/*}}}*/
+void           MeshdeformationAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           MeshdeformationAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           MeshdeformationAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void           MeshdeformationAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/MeshdeformationAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/MeshdeformationAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/MeshdeformationAnalysis.h	(revision 21239)
@@ -0,0 +1,33 @@
+/*! \file MeshdeformationAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _MeshdeformationAnalysis_
+#define _MeshdeformationAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class MeshdeformationAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/SealevelriseAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/SealevelriseAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/SealevelriseAnalysis.cpp	(revision 21239)
@@ -0,0 +1,254 @@
+#include "./SealevelriseAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void SealevelriseAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	/*No constraints*/
+}/*}}}*/
+void SealevelriseAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	/*No loads*/
+}/*}}}*/
+void SealevelriseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+	::CreateNodes(nodes,iomodel,SealevelriseAnalysisEnum,P1Enum);
+}/*}}}*/
+int  SealevelriseAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void SealevelriseAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	/*Create inputs: */
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.mask.land_levelset",MaskLandLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.slr.deltathickness",SealevelriseDeltathicknessEnum);
+	iomodel->FetchDataToInput(elements,"md.slr.sealevel",SealevelEnum,0);
+
+}/*}}}*/
+void SealevelriseAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int         nl;
+	IssmDouble* love_h=NULL;
+	IssmDouble* love_k=NULL;
+	IssmDouble* love_l=NULL;
+	
+	bool elastic=false;
+	IssmDouble* G_elastic = NULL;
+	IssmDouble* G_elastic_local = NULL;
+	IssmDouble* U_elastic = NULL;
+	IssmDouble* U_elastic_local = NULL;
+	IssmDouble* H_elastic = NULL;
+	IssmDouble* H_elastic_local = NULL;
+	int         M,m,lower_row,upper_row;
+	IssmDouble  degacc=.01;
+
+	int     numoutputs;
+	char**  requestedoutputs = NULL;
+
+	/*transition vectors: */
+	IssmDouble **transitions    = NULL;
+	int         *transitions_M    = NULL;
+	int         *transitions_N    = NULL;
+	int          ntransitions;
+
+	/*some constant parameters: */
+	parameters->AddObject(iomodel->CopyConstantObject("md.slr.reltol",SealevelriseReltolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.slr.abstol",SealevelriseAbstolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.slr.maxiter",SealevelriseMaxiterEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.slr.rigid",SealevelriseRigidEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.slr.elastic",SealevelriseElasticEnum));
+
+	iomodel->FetchData(&elastic,"md.slr.elastic");
+	if(elastic){
+
+		/*love numbers: */
+		iomodel->FetchData(&love_h,&nl,NULL,"md.slr.love_h");
+		iomodel->FetchData(&love_k,&nl,NULL,"md.slr.love_k");
+		iomodel->FetchData(&love_l,&nl,NULL,"md.slr.love_l");
+
+		/*compute elastic green function for a range of angles*/
+		iomodel->FetchData(&degacc,"md.slr.degacc");
+		M=reCast<int,IssmDouble>(180./degacc+1.);
+		G_elastic=xNew<IssmDouble>(M);
+		U_elastic=xNew<IssmDouble>(M);
+		H_elastic=xNew<IssmDouble>(M);
+		
+		/*compute combined legendre + love number (elastic green function:*/
+		m=DetermineLocalSize(M,IssmComm::GetComm());
+		GetOwnershipBoundariesFromRange(&lower_row,&upper_row,m,IssmComm::GetComm());
+		G_elastic_local=xNew<IssmDouble>(m);
+		U_elastic_local=xNew<IssmDouble>(m);
+		H_elastic_local=xNew<IssmDouble>(m);
+
+		for(int i=lower_row;i<upper_row;i++){
+			IssmDouble alpha,x;
+			alpha= reCast<IssmDouble>(i)*degacc * PI / 180.0;
+
+			G_elastic_local[i-lower_row]= (love_k[nl-1]-love_h[nl-1])/2.0/sin(alpha/2.0);
+			U_elastic_local[i-lower_row]= (love_h[nl-1])/2.0/sin(alpha/2.0);
+			H_elastic_local[i-lower_row]= 0; 
+			IssmDouble Pn,Pn1,Pn2;
+			IssmDouble Pn_p,Pn_p1,Pn_p2;
+			for (int n=0;n<nl;n++) {
+				IssmDouble deltalove_G;
+				IssmDouble deltalove_U;
+
+				deltalove_G = (love_k[n]-love_k[nl-1]-love_h[n]+love_h[nl-1]);
+				deltalove_U = (love_h[n]-love_h[nl-1]);
+		
+				/*compute legendre polynomials: P_n(cos\theta) & d P_n(cos\theta)/ d\theta: */
+				if(n==0){
+					Pn=1; 
+					Pn_p=0; 
+				}
+				else if(n==1){ 
+					Pn = cos(alpha); 
+					Pn_p = 1; 
+				}
+				else{
+					Pn = ( (2*n-1)*cos(alpha)*Pn1 - (n-1)*Pn2 ) /n;
+					Pn_p = ( (2*n-1)*(Pn1+cos(alpha)*Pn_p1) - (n-1)*Pn_p2 ) /n;
+				}
+				Pn2=Pn1; Pn1=Pn;
+				Pn_p2=Pn_p1; Pn_p1=Pn_p;
+
+				G_elastic_local[i-lower_row] += deltalove_G*Pn;		// gravitational potential 
+				U_elastic_local[i-lower_row] += deltalove_U*Pn;		// vertical (up) displacement 
+				H_elastic_local[i-lower_row] += sin(alpha)*love_l[n]*Pn_p;		// horizontal displacements 
+			}
+		}
+
+		/*merge G_elastic_local into G_elastic; U_elastic_local into U_elastic; H_elastic_local to H_elastic:{{{*/
+		int* recvcounts=xNew<int>(IssmComm::GetSize());
+		int* displs=xNew<int>(IssmComm::GetSize());
+
+		//recvcounts:
+		ISSM_MPI_Allgather(&m,1,ISSM_MPI_INT,recvcounts,1,ISSM_MPI_INT,IssmComm::GetComm());
+
+		/*displs: */
+		ISSM_MPI_Allgather(&lower_row,1,ISSM_MPI_INT,displs,1,ISSM_MPI_INT,IssmComm::GetComm());
+
+		/*All gather:*/
+		ISSM_MPI_Allgatherv(G_elastic_local, m, ISSM_MPI_DOUBLE, G_elastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+		ISSM_MPI_Allgatherv(U_elastic_local, m, ISSM_MPI_DOUBLE, U_elastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+		ISSM_MPI_Allgatherv(H_elastic_local, m, ISSM_MPI_DOUBLE, H_elastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+		/*free ressources: */
+		xDelete<int>(recvcounts);
+		xDelete<int>(displs);
+
+		/*}}}*/
+
+		/*Avoid singularity at 0: */
+		G_elastic[0]=G_elastic[1];
+		parameters->AddObject(new DoubleVecParam(SealevelriseGElasticEnum,G_elastic,M));
+		U_elastic[0]=U_elastic[1];
+		parameters->AddObject(new DoubleVecParam(SealevelriseUElasticEnum,U_elastic,M));
+		H_elastic[0]=H_elastic[1];
+		parameters->AddObject(new DoubleVecParam(SealevelriseHElasticEnum,H_elastic,M));
+
+		/*free ressources: */
+		xDelete<IssmDouble>(love_h);
+		xDelete<IssmDouble>(love_k);
+		xDelete<IssmDouble>(love_l);
+		xDelete<IssmDouble>(G_elastic);
+		xDelete<IssmDouble>(G_elastic_local);
+		xDelete<IssmDouble>(U_elastic);
+		xDelete<IssmDouble>(U_elastic_local);
+		xDelete<IssmDouble>(H_elastic);
+		xDelete<IssmDouble>(H_elastic_local);
+	}
+	
+	/*Transitions: */
+	iomodel->FetchData(&transitions,&transitions_M,&transitions_N,&ntransitions,"md.slr.transitions");
+	if(transitions){
+		parameters->AddObject(new DoubleMatArrayParam(SealevelriseTransitionsEnum,transitions,ntransitions,transitions_M,transitions_N));
+
+		for(int i=0;i<ntransitions;i++){
+			IssmDouble* transition=transitions[i];
+			xDelete<IssmDouble>(transition);
+		}
+		xDelete<IssmDouble*>(transitions);
+		xDelete<int>(transitions_M);
+		xDelete<int>(transitions_N);
+	}
+
+	/*Requested outputs*/
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.slr.requested_outputs");
+	parameters->AddObject(new IntParam(SealevelriseNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(SealevelriseRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.slr.requested_outputs");
+
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           SealevelriseAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* SealevelriseAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* SealevelriseAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* SealevelriseAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+ElementVector* SealevelriseAnalysis::CreatePVector(Element* element){/*{{{*/
+_error_("not implemented yet");
+}/*}}}*/
+void           SealevelriseAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           SealevelriseAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           SealevelriseAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	
+	IssmDouble *deltaS  = NULL;
+	IssmDouble *S  = NULL;
+	int*        sidlist = NULL;
+	int         numvertices;
+	
+	numvertices= element->GetNumberOfVertices();
+	sidlist=xNew<int>(numvertices);
+	
+	element->GetVerticesSidList(sidlist);
+
+	deltaS = xNew<IssmDouble>(numvertices);
+	for(int i=0;i<numvertices;i++){
+		deltaS[i]=solution[sidlist[i]];
+	}
+
+	S = xNew<IssmDouble>(numvertices);
+	element->GetInputListOnVertices(S,SealevelEnum,0);
+
+	/*Add deltaS to S:*/
+	for (int i=0;i<numvertices;i++)S[i]+=deltaS[i];
+
+	/*Add S back into inputs: */
+	element->AddInput(SealevelEnum,S,P1Enum);
+
+	/*Free ressources:*/
+	xDelete<int>(sidlist);
+	xDelete<IssmDouble>(deltaS);
+	xDelete<IssmDouble>(S);
+
+}/*}}}*/
+void           SealevelriseAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/SealevelriseAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/SealevelriseAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/SealevelriseAnalysis.h	(revision 21239)
@@ -0,0 +1,33 @@
+/*! \file SealevelriseAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _SealevelriseAnalysis_
+#define _SealevelriseAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class SealevelriseAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/SmbAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/SmbAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/SmbAnalysis.cpp	(revision 21239)
@@ -0,0 +1,328 @@
+#include "./SmbAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void SmbAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	/*No constraints*/
+}/*}}}*/
+void SmbAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	/*No loads*/
+}/*}}}*/
+void SmbAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+	::CreateNodes(nodes,iomodel,SmbAnalysisEnum,P1Enum);
+}/*}}}*/
+int  SmbAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void SmbAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+	
+	int    smb_model;
+	bool   isdelta18o,ismungsm,isd18opd;
+	
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+	
+	/*Figure out smb model: */
+	iomodel->FindConstant(&smb_model,"md.smb.model");
+			
+	switch(smb_model){
+		case SMBforcingEnum:
+			iomodel->FetchDataToInput(elements,"md.smb.mass_balance",SmbMassBalanceEnum,0.);
+			break;
+		case SMBgembEnum:
+			iomodel->FetchDataToInput(elements,"md.smb.Ta",SmbTaEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.V",SmbVEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.dswrf",SmbDswrfEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.dlwrf",SmbDlwrfEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.P",SmbPEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.eAir",SmbEAirEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.pAir",SmbPAirEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.zTop",SmbZTopEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.dzTop",SmbDzTopEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.dzMin",SmbDzMinEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.zY",SmbZYEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.zMax",SmbZMaxEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.zMin",SmbZMinEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.Tmean",SmbTmeanEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.C",SmbCEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.Tz",SmbTzEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.Vz",SmbVzEnum);
+			InputUpdateFromConstantx(elements,0.,SmbIsInitializedEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.Dzini",SmbDziniEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.Dini",SmbDiniEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.Reini",SmbReiniEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.Gdnini",SmbGdniniEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.Gspini",SmbGspiniEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.ECini",SmbECiniEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.Wini",SmbWiniEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.Aini",SmbAiniEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.Tini",SmbTiniEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.Sizeini",SmbSizeiniEnum);
+			break;
+		case SMBpddEnum:
+			iomodel->FindConstant(&isdelta18o,"md.smb.isdelta18o");
+			iomodel->FindConstant(&ismungsm,"md.smb.ismungsm");
+			iomodel->FetchDataToInput(elements,"md.thermal.spctemperature",ThermalSpctemperatureEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.s0p",SmbS0pEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.s0t",SmbS0tEnum);
+			if(isdelta18o || ismungsm){
+				iomodel->FetchDataToInput(elements,"md.smb.temperatures_lgm",SmbTemperaturesLgmEnum);
+				iomodel->FetchDataToInput(elements,"md.smb.temperatures_presentday",SmbTemperaturesPresentdayEnum);
+				iomodel->FetchDataToInput(elements,"md.smb.precipitations_presentday",SmbPrecipitationsPresentdayEnum);
+				iomodel->FetchDataToInput(elements,"md.smb.precipitations_lgm",SmbPrecipitationsLgmEnum);
+			}
+			else{
+				iomodel->FetchDataToInput(elements,"md.smb.precipitation",SmbPrecipitationEnum);
+				iomodel->FetchDataToInput(elements,"md.smb.monthlytemperatures",SmbMonthlytemperaturesEnum);
+			}
+			break;
+		case SMBd18opddEnum:
+			iomodel->FindConstant(&ismungsm,"md.smb.ismungsm");
+			iomodel->FindConstant(&isd18opd,"md.smb.isd18opd");
+			iomodel->FetchDataToInput(elements,"md.thermal.spctemperature",ThermalSpctemperatureEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.s0p",SmbS0pEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.s0t",SmbS0tEnum);
+			if(isd18opd){
+				iomodel->FetchDataToInput(elements,"md.smb.temperatures_presentday",SmbTemperaturesPresentdayEnum);
+				iomodel->FetchDataToInput(elements,"md.smb.precipitations_presentday",SmbPrecipitationsPresentdayEnum);
+			}
+
+			break;
+		case SMBgradientsEnum:
+			iomodel->FetchDataToInput(elements,"md.smb.href",SmbHrefEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.smbref",SmbSmbrefEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.b_pos",SmbBPosEnum);
+			iomodel->FetchDataToInput(elements,"md.smb.b_neg",SmbBNegEnum);
+			break;
+		case SMBhenningEnum:
+			iomodel->FetchDataToInput(elements,"md.smb.smbref",SmbSmbrefEnum,0.);
+			break;
+		case SMBcomponentsEnum:
+			iomodel->FetchDataToInput(elements,"md.smb.accumulation",SmbAccumulationEnum,0.);
+			iomodel->FetchDataToInput(elements,"md.smb.evaporation",SmbEvaporationEnum,0.);
+			iomodel->FetchDataToInput(elements,"md.smb.runoff",SmbRunoffEnum,0.);
+			break;
+		case SMBmeltcomponentsEnum:
+			iomodel->FetchDataToInput(elements,"md.smb.accumulation",SmbAccumulationEnum,0.);
+			iomodel->FetchDataToInput(elements,"md.smb.evaporation",SmbEvaporationEnum,0.);
+			iomodel->FetchDataToInput(elements,"md.smb.melt",SmbMeltEnum,0.);
+			iomodel->FetchDataToInput(elements,"md.smb.refreeze",SmbRefreezeEnum,0.);
+			break;
+		default:
+			_error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
+	}
+	
+	
+
+}/*}}}*/
+void SmbAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int     numoutputs;
+	char**  requestedoutputs = NULL;
+	bool    isdelta18o,ismungsm,isd18opd,interp;
+	int     smb_model;
+	IssmDouble *temp = NULL;
+	int         N,M;
+	
+	parameters->AddObject(iomodel->CopyConstantObject("md.smb.model",SmbEnum));
+	
+	iomodel->FindConstant(&smb_model,"md.smb.model");
+	iomodel->FindConstant(&interp,"md.timestepping.interp_forcings");
+	
+	switch(smb_model){
+		case SMBforcingEnum:
+			/*Nothing to add to parameters*/
+			break;
+		case SMBgembEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.aIdx",SmbAIdxEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.swIdx",SmbSwIdxEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.denIdx",SmbDenIdxEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.outputFreq",SmbOutputFreqEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.cldFrac",SmbCldFracEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.t0wet",SmbT0wetEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.t0dry",SmbT0dryEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.K",SmbKEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.aSnow",SmbASnowEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.aIce",SmbAIceEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.dt",SmbDtEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isgraingrowth",SmbIsgraingrowthEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isalbedo",SmbIsalbedoEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isshortwave",SmbIsshortwaveEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isthermal",SmbIsthermalEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isaccumulation",SmbIsaccumulationEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.ismelt",SmbIsmeltEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isdensification",SmbIsdensificationEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isturbulentflux",SmbIsturbulentfluxEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.InitDensityScaling",SmbInitDensityScalingEnum));
+			break;
+		case SMBpddEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isdelta18o",SmbIsdelta18oEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.ismungsm",SmbIsmungsmEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.desfac",SmbDesfacEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlaps",SmbRlapsEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlapslgm",SmbRlapslgmEnum));
+			iomodel->FindConstant(&isdelta18o,"md.smb.isdelta18o");
+			iomodel->FindConstant(&ismungsm,"md.smb.ismungsm");
+
+			if(ismungsm){
+			  iomodel->FetchData(&temp,&N,&M,"md.smb.Pfac"); _assert_(N==2);
+			  parameters->AddObject(new TransientParam(SmbPfacEnum,&temp[0],&temp[M],interp,M));
+			  iomodel->DeleteData(temp,"md.smb.Pfac");
+			
+			  iomodel->FetchData(&temp,&N,&M,"md.smb.Tdiff"); _assert_(N==2);
+			  parameters->AddObject(new TransientParam(SmbTdiffEnum,&temp[0],&temp[M],interp,M));
+			  iomodel->DeleteData(temp,"md.smb.Tdiff");
+
+			  iomodel->FetchData(&temp,&N,&M,"md.smb.sealev"); _assert_(N==2);
+			  parameters->AddObject(new TransientParam(SmbSealevEnum,&temp[0],&temp[M],interp,M));
+			  iomodel->DeleteData(temp,"md.smb.sealev");
+			}
+			if(isdelta18o){
+				iomodel->FetchData(&temp,&N,&M,"md.smb.delta18o"); _assert_(N==2);
+				parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,M));
+				iomodel->DeleteData(temp,"md.smb.delta18o");
+
+				iomodel->FetchData(&temp,&N,&M,"md.smb.delta18o_surface"); _assert_(N==2);
+				parameters->AddObject(new TransientParam(SmbDelta18oSurfaceEnum,&temp[0],&temp[M],interp,M));
+				iomodel->DeleteData(temp,"md.smb.delta18o_surface");
+			}
+			break;
+		case SMBd18opddEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.ismungsm",SmbIsmungsmEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isd18opd",SmbIsd18opdEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.desfac",SmbDesfacEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlaps",SmbRlapsEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlapslgm",SmbRlapslgmEnum));
+			iomodel->FindConstant(&ismungsm,"md.smb.ismungsm");
+			iomodel->FindConstant(&isd18opd,"md.smb.isd18opd");
+			if(isd18opd){
+				iomodel->FetchData(&temp,&N,&M,"md.smb.delta18o"); _assert_(N==2);
+				parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,M));
+				iomodel->DeleteData(temp,"md.smb.delta18o");
+				
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.dpermil",SmbDpermilEnum));
+			}
+			break;
+		case SMBgradientsEnum:
+			/*Nothing to add to parameters*/
+			break;
+		case SMBhenningEnum:
+			/*Nothing to add to parameters*/
+			break;
+		case SMBcomponentsEnum:
+			/*Nothing to add to parameters*/
+			break;
+		case SMBmeltcomponentsEnum:
+			/*Nothing to add to parameters*/
+			break;
+		default:
+			_error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
+	}
+
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.smb.requested_outputs");
+	parameters->AddObject(new IntParam(SmbNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(SmbRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.smb.requested_outputs");
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           SmbAnalysis::Core(FemModel* femmodel){/*{{{*/
+
+	int    smb_model;
+
+	/*Figure out smb model: */
+	femmodel->parameters->FindParam(&smb_model,SmbEnum);
+	
+	/*branch to correct module*/
+	switch(smb_model){
+		case SMBforcingEnum:
+			/*Nothing to be done*/
+			break;
+		case SMBgembEnum:
+			Gembx(femmodel);
+			break;
+		case SMBpddEnum:
+			bool isdelta18o,ismungsm;
+			femmodel->parameters->FindParam(&isdelta18o,SmbIsdelta18oEnum);
+			femmodel->parameters->FindParam(&ismungsm,SmbIsmungsmEnum);
+			if(isdelta18o){
+				if(VerboseSolution()) _printf0_("   call Delta18oParameterization module\n");
+				Delta18oParameterizationx(femmodel);
+			} 
+			if(ismungsm){
+				if(VerboseSolution()) _printf0_("   call MungsmtpParameterization module\n");
+				MungsmtpParameterizationx(femmodel);
+			} 
+			if(VerboseSolution()) _printf0_("   call positive degree day module\n");
+			PositiveDegreeDayx(femmodel);
+			break;
+		case SMBd18opddEnum:
+			bool isd18opd;
+			femmodel->parameters->FindParam(&isd18opd,SmbIsd18opdEnum);
+			if(isd18opd){
+				if(VerboseSolution()) _printf0_("   call Delta18opdParameterization module\n");
+				Delta18opdParameterizationx(femmodel);
+				if(VerboseSolution()) _printf0_("   call positive degree day module\n");
+				PositiveDegreeDayx(femmodel);
+			} 
+			break;
+		case SMBgradientsEnum:
+			if(VerboseSolution())_printf0_("	call smb gradients module\n");
+			SmbGradientsx(femmodel);
+			break;
+		case SMBhenningEnum:
+			if(VerboseSolution())_printf0_("  call smb Henning module\n");
+			SmbHenningx(femmodel);
+			break;
+		case SMBcomponentsEnum:
+			if(VerboseSolution())_printf0_("  call smb Components module\n");
+			SmbComponentsx(femmodel);
+			break;
+		case SMBmeltcomponentsEnum:
+			if(VerboseSolution())_printf0_("  call smb Melt Components module\n");
+			SmbMeltComponentsx(femmodel);
+			break;
+		case SMBgcmEnum:
+			/*Nothing to be done*/
+			break;
+		default:
+			_error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
+	}
+
+}/*}}}*/
+ElementVector* SmbAnalysis::CreateDVector(Element* element){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementMatrix* SmbAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* SmbAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+ElementVector* SmbAnalysis::CreatePVector(Element* element){/*{{{*/
+_error_("not implemented yet");
+}/*}}}*/
+void           SmbAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           SmbAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           SmbAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void           SmbAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/SmbAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/SmbAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/SmbAnalysis.h	(revision 21239)
@@ -0,0 +1,33 @@
+/*! \file SmbAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _SmbAnalysis_
+#define _SmbAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class SmbAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/SmoothAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/SmoothAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/SmoothAnalysis.cpp	(revision 21239)
@@ -0,0 +1,228 @@
+#include "./SmoothAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void SmoothAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void SmoothAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void SmoothAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	::CreateNodes(nodes,iomodel,SmoothAnalysisEnum,P1Enum);
+
+}/*}}}*/
+int  SmoothAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void SmoothAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+}/*}}}*/
+void SmoothAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           SmoothAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* SmoothAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* SmoothAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* SmoothAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/* Intermediaries */
+	int         domaintype;
+	IssmDouble  Jdet,thickness,l;
+	IssmDouble *xyz_list = NULL;
+
+	/*Check dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes);
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->FindParam(&l,SmoothThicknessMultiplierEnum); _assert_(l>0.);
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* thickness_input = element->GetInput(ThicknessEnum); _assert_(thickness_input);
+
+	/* Start looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		thickness_input->GetInputValue(&thickness,gauss);
+		if(thickness<50.) thickness=50.;
+
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += gauss->weight*Jdet*(
+							basis[i]*basis[j]
+							+(l*thickness)*(l*thickness)*(dbasis[0*numnodes+i]*dbasis[0*numnodes+j] + dbasis[1*numnodes+i]*dbasis[1*numnodes+j])
+							);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list);
+	return Ke;
+}/*}}}*/
+ElementVector* SmoothAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Get basal element*/
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries */
+	int         input_enum;
+	IssmDouble  Jdet,value;
+	IssmDouble *xyz_list  = NULL;
+	Input      *input = NULL;
+
+	/*SPECIFICS: Driving stress for balance velocities*/
+	Input*      H_input = NULL, *surface_input = NULL, *vx_input = NULL, *vy_input = NULL;
+	IssmDouble  taud_x,norms,normv,vx,vy;
+	IssmDouble  rho_ice,gravity,slope[2],thickness;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&input_enum,InputToSmoothEnum);
+
+	switch(input_enum){
+		case DrivingStressXEnum:
+		case DrivingStressYEnum:{
+			rho_ice       = element->GetMaterialParameter(MaterialsRhoIceEnum);
+			gravity       = element->GetMaterialParameter(ConstantsGEnum);
+			H_input       = element->GetInput(ThicknessEnum); _assert_(H_input);
+			surface_input = element->GetInput(SurfaceEnum);   _assert_(surface_input);
+			vx_input      = element->GetInput(VxEnum);
+			vy_input      = element->GetInput(VyEnum);
+			}
+			break;
+		case SurfaceSlopeXEnum:
+		case SurfaceSlopeYEnum:{
+			surface_input = element->GetInput(SurfaceEnum);   _assert_(surface_input);
+			}
+			break;
+		default: input = element->GetInput(input_enum);
+	}
+
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+
+		switch(input_enum){
+			case DrivingStressXEnum: 
+			case DrivingStressYEnum:{
+				H_input->GetInputValue(&thickness,gauss);
+				surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+				if(vx_input && vy_input){
+					vx_input->GetInputValue(&vx,gauss);
+					vy_input->GetInputValue(&vy,gauss);
+					norms = sqrt(slope[0]*slope[0]+slope[1]*slope[1]+1.e-10);
+					normv = sqrt(vx*vx + vy*vy);
+					if(normv>15./(365.*24.*3600.)){
+						slope[0] = -vx/normv*norms;
+						slope[1] = -vy/normv*norms;
+					}
+				}
+				if(input_enum==DrivingStressXEnum)
+				 value = rho_ice*gravity*thickness*slope[0];
+				else
+				 value = rho_ice*gravity*thickness*slope[1];
+			}
+			break;
+			case SurfaceSlopeXEnum: 
+				surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+				value = slope[0];
+				break;
+			case SurfaceSlopeYEnum:
+				surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+				value = slope[1];
+				break;
+			default:
+				input->GetInputValue(&value,gauss);
+		}
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*value*basis[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           SmoothAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           SmoothAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           SmoothAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	int inputenum,domaintype,elementtype;
+
+	element->FindParam(&inputenum,InputToSmoothEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->InputUpdateFromSolutionOneDof(solution,inputenum);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}/*}}}*/
+void           SmoothAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/SmoothAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/SmoothAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/SmoothAnalysis.h	(revision 21239)
@@ -0,0 +1,33 @@
+/*! \file SmoothAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _SmoothAnalysis_
+#define _SmoothAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class SmoothAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/StressbalanceAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/StressbalanceAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/StressbalanceAnalysis.cpp	(revision 21239)
@@ -0,0 +1,7121 @@
+#include "./StressbalanceAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../cores/cores.h"
+
+//#define FSANALYTICAL 12
+//#define LATERALFRICTION 1
+
+/*Model processing*/
+void StressbalanceAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*Intermediary*/
+	int        i,j;
+	int        count,finiteelement;
+	IssmDouble g;
+	IssmDouble rho_ice;
+	IssmDouble FSreconditioning;
+	bool       isSIA,isSSA,isL1L2,isHO,isFS,iscoupling;
+	bool       spcpresent = false;
+	int        Mx,Nx;
+	int        My,Ny;
+	int        Mz,Nz;
+	IssmDouble *spcvx          = NULL;
+	IssmDouble *spcvy          = NULL;
+	IssmDouble *spcvz          = NULL;
+	IssmDouble *nodeonSSA = NULL;
+	IssmDouble *nodeonHO   = NULL;
+	IssmDouble *nodeonFS   = NULL;
+	IssmDouble *nodeonbase      = NULL;
+	IssmDouble *groundedice_ls = NULL;
+	IssmDouble *vertices_type  = NULL;
+	IssmDouble *surface        = NULL;
+	IssmDouble *z              = NULL;
+	IssmDouble *timesx=NULL;
+	IssmDouble *timesy=NULL;
+	IssmDouble *timesz=NULL;
+   IssmDouble* values=NULL;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&g,"md.constants.g");
+	iomodel->FindConstant(&rho_ice,"md.materials.rho_ice");
+	iomodel->FindConstant(&FSreconditioning,"md.stressbalance.FSreconditioning");
+	iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
+	iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
+	iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
+	iomodel->FindConstant(&isHO,"md.flowequation.isHO");
+	iomodel->FindConstant(&isFS,"md.flowequation.isFS");
+
+	/*Now, is the flag macayaealHO on? otherwise, do nothing: */
+	if(!isSSA && !isHO && !isFS && !isL1L2) return;
+
+	/*Do we have coupling*/
+	if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
+	 iscoupling = true;
+	else
+	 iscoupling = false;
+
+	/*If no coupling, call Regular IoModelToConstraintsx, else, use P1 elements only*/
+	if(!iscoupling){
+
+		/*Get finite element type*/
+		if(isSSA)       iomodel->FindConstant(&finiteelement,"md.flowequation.fe_SSA");
+		else if(isL1L2) finiteelement = P1Enum;
+		else if(isHO)   iomodel->FindConstant(&finiteelement,"md.flowequation.fe_HO");
+		else if(isFS){  iomodel->FindConstant(&finiteelement,"md.flowequation.fe_FS");
+			/*Deduce velocity interpolation from finite element*/
+			switch(finiteelement){
+				case P1P1Enum              : finiteelement = P1Enum;       break;
+				case P1P1GLSEnum           : finiteelement = P1Enum;       break;
+				case MINIcondensedEnum     : finiteelement = P1bubbleEnum; break;
+				case MINIEnum              : finiteelement = P1bubbleEnum; break;
+				case TaylorHoodEnum        : finiteelement = P2Enum;       break;
+				case XTaylorHoodEnum       : finiteelement = P2Enum;       break;
+				case LATaylorHoodEnum      : finiteelement = P2Enum;       break;
+				case LACrouzeixRaviartEnum : finiteelement = P2bubbleEnum; break;
+				case OneLayerP4zEnum       : finiteelement = P2xP4Enum;    break;
+				case CrouzeixRaviartEnum   : finiteelement = P2bubbleEnum; break;
+				default: _error_("finite element "<<EnumToStringx(finiteelement)<<" not supported");
+			}
+		}
+		else{
+			_error_("model not supported yet");
+		}
+
+		if(isFS){
+
+			/*Constraint at the bedrock interface (v.n = vz = 0) (Coordinates will be updated according to the bed slope)*/
+			iomodel->FetchData(&vertices_type,NULL,NULL,"md.flowequation.vertex_equation");
+			iomodel->FetchData(&nodeonFS,NULL,NULL,"md.flowequation.borderFS");
+			iomodel->FetchData(&nodeonbase,NULL,NULL,"md.mesh.vertexonbase");
+			iomodel->FetchData(&groundedice_ls,NULL,NULL,"md.mask.groundedice_levelset");
+			if(iomodel->domaintype==Domain3DEnum){
+				iomodel->FetchData(&spcvz,&Mz,&Nz,"md.stressbalance.spcvz");
+			}
+			else if (iomodel->domaintype==Domain2DverticalEnum){
+				iomodel->FetchData(&spcvz,&Mz,&Nz,"md.stressbalance.spcvy");
+			}
+			else{
+				_error_("not supported yet");
+			}
+			if(iomodel->domaintype==Domain3DEnum){
+				IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceAnalysisEnum,finiteelement,0);
+				IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy",StressbalanceAnalysisEnum,finiteelement,1);
+				IoModelToConstraintsx(constraints,iomodel,spcvz,Mz,Nz,StressbalanceAnalysisEnum,finiteelement,2);
+				iomodel->DeleteData(spcvz,"md.stressbalance.spcvz");
+			}
+			else if (iomodel->domaintype==Domain2DverticalEnum){
+				IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceAnalysisEnum,finiteelement,0);
+				IoModelToConstraintsx(constraints,iomodel,spcvz,Mz,Nz,StressbalanceAnalysisEnum,finiteelement,1);
+				iomodel->DeleteData(spcvz,"md.stressbalance.spcvy");
+			}
+			else{
+				_error_("not supported yet");
+			}
+			iomodel->DeleteData(vertices_type,"md.flowequation.vertex_equation");
+			iomodel->DeleteData(nodeonFS,"md.flowequation.borderFS");
+			iomodel->DeleteData(nodeonbase,"md.mesh.vertexonbase");
+			iomodel->DeleteData(groundedice_ls,"md.mask.groundedice_levelset");
+
+			/*Pressure spc*/
+			count = constraints->Size();
+			iomodel->FetchData(&vertices_type,NULL,NULL,"md.flowequation.vertex_equation");
+			iomodel->FetchData(&surface,NULL,NULL,"md.geometry.surface");
+			iomodel->FetchData(&z,NULL,NULL,"md.mesh.z");
+			switch(finiteelement){
+				case P1Enum:
+					for(i=0;i<iomodel->numberofvertices;i++){
+						if(iomodel->my_vertices[i]){
+							if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){
+								constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));
+								count++;
+							}
+						}
+					}
+					break;
+				case P1bubbleEnum:
+					for(i=0;i<iomodel->numberofvertices;i++){
+						if(iomodel->my_vertices[i]){
+							if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){
+								constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));
+								count++;
+							}
+						}
+					}
+					break;
+				case P2Enum:
+					for(i=0;i<iomodel->numberofvertices;i++){
+						if(iomodel->my_vertices[i]){
+							if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){
+								constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));
+								count++;
+							}
+						}
+					}
+					break;
+				case P2bubbleEnum:
+					for(i=0;i<iomodel->numberofvertices;i++){
+						if(iomodel->my_vertices[i]){
+							if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){
+								constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+iomodel->numberoffaces+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));
+								count++;
+							}
+						}
+					}
+					break;
+				case P2xP4Enum:
+					//Nothing yet
+					break;
+				default:
+					_error_("not implemented yet");
+			}
+			iomodel->DeleteData(vertices_type,"md.flowequation.vertex_equation");
+			iomodel->DeleteData(surface,"md.geometry.surface");
+			iomodel->DeleteData(z,"md.mesh.z");
+		}
+		else{
+			IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceAnalysisEnum,finiteelement,0);
+			if(iomodel->domaintype!=Domain2DverticalEnum){
+				IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy",StressbalanceAnalysisEnum,finiteelement,1);
+			}
+		}
+
+		return;
+	}
+
+	/*Constraints: fetch data: */
+	iomodel->FetchData(&spcvx,&Mx,&Nx,"md.stressbalance.spcvx");
+	iomodel->FetchData(&spcvy,&My,&Ny,"md.stressbalance.spcvy");
+	iomodel->FetchData(&spcvz,&Mz,&Nz,"md.stressbalance.spcvz");
+	iomodel->FetchData(&nodeonSSA,NULL,NULL,"md.flowequation.borderSSA");
+	if(iomodel->domaintype==Domain3DEnum)iomodel->FetchData(&nodeonHO,NULL,NULL,"md.flowequation.borderHO");
+	if(iomodel->domaintype==Domain3DEnum)iomodel->FetchData(&nodeonFS,NULL,NULL,"md.flowequation.borderFS");
+	if(iomodel->domaintype==Domain3DEnum)iomodel->FetchData(&nodeonbase,NULL,NULL,"md.mesh.vertexonbase");
+	if(iomodel->domaintype==Domain3DEnum)iomodel->FetchData(&groundedice_ls,NULL,NULL,"md.mask.groundedice_levelset");
+	iomodel->FetchData(&vertices_type,NULL,NULL,"md.flowequation.vertex_equation");
+	iomodel->FetchData(&surface,NULL,NULL,"md.geometry.surface");
+	iomodel->FetchData(&z,NULL,NULL,"md.mesh.z");
+
+	/*Initialize counter: */
+	count=0;
+
+	/*figure out times: */
+	timesx=xNew<IssmDouble>(Nx);
+	for(j=0;j<Nx;j++){
+		timesx[j]=spcvx[(Mx-1)*Nx+j];
+	}
+	/*figure out times: */
+	timesy=xNew<IssmDouble>(Ny);
+	for(j=0;j<Ny;j++){
+		timesy[j]=spcvy[(My-1)*Ny+j];
+	}
+	/*figure out times: */
+	timesz=xNew<IssmDouble>(Nz);
+	for(j=0;j<Nz;j++){
+		timesz[j]=spcvz[(Mz-1)*Nz+j];
+	}
+
+	/*Create spcs from x,y,z, as well as the spc values on those spcs: */
+	for(i=0;i<iomodel->numberofvertices;i++){
+		if(iomodel->my_vertices[i]){
+
+			/*Start with adding spcs of coupling: zero at the border SSA/HO for the appropriate dofs*/
+			if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==SSAHOApproximationEnum){
+				/*If grionSSA, spc HO dofs: 3 & 4*/
+					if (reCast<int,IssmDouble>(nodeonHO[i])){
+						constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						if (!xIsNan<IssmDouble>(spcvx[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+						if (!xIsNan<IssmDouble>(spcvy[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+
+					}
+					else if (reCast<int,IssmDouble>(nodeonSSA[i])){
+						constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						if (!xIsNan<IssmDouble>(spcvx[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+						if (!xIsNan<IssmDouble>(spcvy[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+
+					}
+					else _error_("if vertices_type is SSAHO, you shoud have nodeonHO or nodeonSSA");
+			}
+			/*Also add spcs of coupling: zero at the border HO/FS for the appropriate dofs*/
+			else if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==HOFSApproximationEnum){
+				/*If grion,HO spc FS dofs: 3 4 & 5*/
+					if (reCast<int,IssmDouble>(nodeonHO[i])){
+						constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						if (!xIsNan<IssmDouble>(spcvx[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+						if (!xIsNan<IssmDouble>(spcvy[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+
+					}
+					else if (reCast<int,IssmDouble>(nodeonFS[i])){ //spc HO nodes: 1 & 2
+						constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						if (!xIsNan<IssmDouble>(spcvx[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+						if (!xIsNan<IssmDouble>(spcvy[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+						if (!xIsNan<IssmDouble>(spcvz[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+					}
+					else _error_("if vertices_type is HOFS, you shoud have nodeonHO or nodeonFS");
+			}
+			/*Also add spcs of coupling: zero at the border HO/FS for the appropriate dofs*/
+			else if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==SSAFSApproximationEnum){
+				/*If grion,HO spc FS dofs: 3 4 & 5*/
+					if (reCast<int,IssmDouble>(nodeonSSA[i])){
+						constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						if (!xIsNan<IssmDouble>(spcvx[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+						if (!xIsNan<IssmDouble>(spcvy[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+
+					}
+					else if (reCast<int,IssmDouble>(nodeonFS[i])){ //spc SSA nodes: 1 & 2
+						constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						if (!xIsNan<IssmDouble>(spcvx[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+						if (!xIsNan<IssmDouble>(spcvy[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+						if (!xIsNan<IssmDouble>(spcvz[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+					}
+					else _error_("if vertices_type is SSAFS, you shoud have nodeonSSA or nodeonFS");
+			}
+			/*Now add the regular spcs*/
+			else{
+				if (Mx==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvx[i])){
+					constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+					count++;
+
+				}
+				else if (Mx==iomodel->numberofvertices+1) {
+					/*figure out times and values: */
+					values=xNew<IssmDouble>(Nx);
+					spcpresent=false;
+					for(j=0;j<Nx;j++){
+						values[j]=spcvx[i*Nx+j];
+						if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
+					}
+
+					if(spcpresent){
+						constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,Nx,timesx,values,StressbalanceAnalysisEnum));
+						count++;
+					}
+					xDelete<IssmDouble>(values);
+				}
+				else if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==SIAApproximationEnum){
+					constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,StressbalanceAnalysisEnum));
+					count++;
+				}
+
+				if (My==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvy[i])){
+					constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vy.
+					count++;
+				}
+				else if (My==iomodel->numberofvertices+1){
+					/*figure out times and values: */
+					values=xNew<IssmDouble>(Ny);
+					spcpresent=false;
+					for(j=0;j<Ny;j++){
+						values[j]=spcvy[i*Ny+j];
+						if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
+					}
+					if(spcpresent){
+						constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,Ny,timesy,values,StressbalanceAnalysisEnum));
+						count++;
+					}
+					xDelete<IssmDouble>(values);
+				}
+				else if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==SIAApproximationEnum){
+					constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,StressbalanceAnalysisEnum));
+					count++;
+				}
+
+				if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==FSApproximationEnum ||  (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum)){
+					if (Mz==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvz[i])){
+						constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
+						count++;
+					}
+					else if (Mz==iomodel->numberofvertices+1){
+						/*figure out times and values: */
+						values=xNew<IssmDouble>(Nz);
+						spcpresent=false;
+						for(j=0;j<Nz;j++){
+							values[j]=spcvz[i*Nz+j];
+							if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
+						}
+						if(spcpresent){
+							constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,Nz,timesz,values,StressbalanceAnalysisEnum));
+							count++;
+						}
+						xDelete<IssmDouble>(values);
+					}
+
+				}
+				if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){
+					constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
+					count++;
+				}
+			}
+		}
+	}
+
+	/*Free data: */
+	iomodel->DeleteData(spcvx,"md.stressbalance.spcvx");
+	iomodel->DeleteData(spcvy,"md.stressbalance.spcvy");
+	iomodel->DeleteData(spcvz,"md.stressbalance.spcvz");
+	iomodel->DeleteData(nodeonSSA,"md.flowequation.borderSSA");
+	if(iomodel->domaintype==Domain3DEnum)iomodel->DeleteData(nodeonHO,"md.flowequation.borderHO");
+	if(iomodel->domaintype==Domain3DEnum)iomodel->DeleteData(nodeonFS,"md.flowequation.borderFS");
+	if(iomodel->domaintype==Domain3DEnum)iomodel->DeleteData(nodeonbase,"md.mesh.vertexonbase");
+	if(iomodel->domaintype==Domain3DEnum)iomodel->DeleteData(groundedice_ls,"md.mask.groundedice_levelset");
+	iomodel->DeleteData(vertices_type,"md.flowequation.vertex_equation");
+	iomodel->DeleteData(surface,"md.geometry.surface");
+	iomodel->DeleteData(z,"md.mesh.z");
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(timesx);
+	xDelete<IssmDouble>(timesy);
+	xDelete<IssmDouble>(timesz);
+	xDelete<IssmDouble>(values);
+
+}/*}}}*/
+void StressbalanceAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Intermediary*/
+	const int   RIFTINFOSIZE = 12;
+	int         i;
+	int         count;
+	int         penpair_ids[2];
+	bool        isSSA,isL1L2,isHO,isFS;
+	int         numpenalties,numrifts,numriftsegments;
+	IssmDouble *riftinfo       = NULL;
+	IssmDouble *penalties      = NULL;
+	int         assert_int;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
+	iomodel->FindConstant(&isFS,"md.flowequation.isFS");
+	iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
+	iomodel->FindConstant(&isHO,"md.flowequation.isHO");
+	iomodel->FindConstant(&numrifts,"md.rifts.numrifts");
+
+	/*Now, is the flag macayaealHO on? otherwise, do nothing: */
+	if(!isSSA && !isHO && !isFS && !isL1L2) return;
+
+	/*Initialize counter: */
+	count=0;
+
+	/*Create Penpair for penalties: */
+	iomodel->FetchData(&penalties,&numpenalties,NULL,"md.stressbalance.vertex_pairing");
+
+	for(i=0;i<numpenalties;i++){
+
+		if(iomodel->my_vertices[reCast<int,IssmDouble>(penalties[2*i+0]-1)]){
+
+			/*In debugging mode, check that the second node is in the same cpu*/
+			assert_int=iomodel->my_vertices[reCast<int,IssmDouble>(penalties[2*i+1]-1)]; _assert_(assert_int);
+
+			/*Get node ids*/
+			penpair_ids[0]=iomodel->nodecounter+reCast<int,IssmDouble>(penalties[2*i+0]);
+			penpair_ids[1]=iomodel->nodecounter+reCast<int,IssmDouble>(penalties[2*i+1]);
+
+			/*Create Load*/
+			loads->AddObject(new Penpair(iomodel->loadcounter+count+1,&penpair_ids[0],StressbalanceAnalysisEnum));
+			count++;
+		}
+	}
+
+	/*free ressources: */
+	iomodel->DeleteData(penalties,"md.stressbalance.vertex_pairing");
+
+	/*Create Riffront loads for rifts: */
+	if(numrifts){
+		iomodel->FetchData(&riftinfo,&numriftsegments,NULL,"md.rifts.riftstruct");
+		iomodel->FetchData(5,"md.rifts.riftstruct","md.geometry.thickness","md.geometry.base","md.geometry.surface","md.mask.groundedice_levelset");
+		for(i=0;i<numriftsegments;i++){
+			if(iomodel->my_elements[reCast<int,IssmDouble>(*(riftinfo+RIFTINFOSIZE*i+2))-1]){
+				loads->AddObject(new Riftfront(iomodel->loadcounter+count+1,i,iomodel,StressbalanceAnalysisEnum));
+				count++;
+			}
+		}
+		iomodel->DeleteData(5,"md.rifts.riftstruct","md.geometry.thickness","md.geometry.base","md.geometry.surface","md.mask.groundedice_levelset");
+		xDelete<IssmDouble>(riftinfo);
+	}
+}/*}}}*/
+void StressbalanceAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	/*Intermediary*/
+	bool isSSA,isL1L2,isHO,isFS,iscoupling;
+	int  finiteelement=-1,approximation=-1;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
+	iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
+	iomodel->FindConstant(&isHO,"md.flowequation.isHO");
+	iomodel->FindConstant(&isFS,"md.flowequation.isFS");
+
+	/*Now, check that we have non SIA elements */
+	if(!isSSA & !isL1L2 & !isHO & !isFS) return;
+
+	/*Do we have coupling*/
+	if( (isSSA?1.:0.) + (isL1L2?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
+	 iscoupling = true;
+	else
+	 iscoupling = false;
+
+	/*If no coupling, call Regular CreateNodes, else, use P1 elements only*/
+	if(!iscoupling){
+
+		/*Get finite element type*/
+		if(isSSA){
+			approximation=SSAApproximationEnum;
+			iomodel->FindConstant(&finiteelement,"md.flowequation.fe_SSA");
+		}
+		else if(isL1L2){
+			approximation = L1L2ApproximationEnum;
+			finiteelement = P1Enum;
+		}
+		else if(isHO){
+			approximation = HOApproximationEnum;
+			iomodel->FindConstant(&finiteelement,"md.flowequation.fe_HO");
+		}
+		else if(isFS){
+			approximation = FSApproximationEnum;
+			iomodel->FindConstant(&finiteelement,"md.flowequation.fe_FS");
+		}
+		iomodel->FetchData(3,"md.flowequation.borderSSA","md.flowequation.vertex_equation","md.stressbalance.referential");
+		if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(3,"md.mesh.vertexonbase","md.mesh.vertexonsurface","md.flowequation.borderFS");
+		::CreateNodes(nodes,iomodel,StressbalanceAnalysisEnum,finiteelement,approximation);
+		iomodel->DeleteData(6,"md.mesh.vertexonbase","md.mesh.vertexonsurface","md.flowequation.borderSSA","md.flowequation.vertex_equation",
+					"md.stressbalance.referential","md.flowequation.borderFS");
+	}
+	else{
+		/*Coupling: we are going to create P1 Elements only*/
+
+		Node*  node  = NULL;
+		int    lid=0;
+		if(!nodes) nodes = new Nodes();
+
+		iomodel->FetchData(6,"md.mesh.vertexonbase","md.mesh.vertexonsurface","md.flowequation.borderSSA","md.flowequation.borderFS",
+					"md.flowequation.vertex_equation","md.stressbalance.referential");
+		if(isFS){
+			/*P1+ velocity*/
+			for(int i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					approximation=IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]));
+					if(approximation==FSApproximationEnum)  approximation=FSvelocityEnum;
+					nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,lid++,i,iomodel,StressbalanceAnalysisEnum,approximation));
+				}
+			}
+			for(int i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]){
+					node = new Node(iomodel->nodecounter+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,StressbalanceAnalysisEnum,FSvelocityEnum);
+					node->Deactivate();
+					nodes->AddObject(node);
+				}
+			}
+			/*P1 pressure*/
+			for(int i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					approximation=IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]));
+					node = new Node(iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,i,iomodel,StressbalanceAnalysisEnum,FSpressureEnum);
+					if(approximation==HOApproximationEnum || approximation==SSAApproximationEnum){
+						node->Deactivate();
+					}
+					nodes->AddObject(node);
+				}
+			}
+		}
+		else{
+			for(int i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,lid++,i,iomodel,StressbalanceAnalysisEnum,IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]))));
+				}
+			}
+		}
+		iomodel->DeleteData(6,"md.mesh.vertexonbase","md.mesh.vertexonsurface","md.flowequation.borderSSA","md.flowequation.borderFS",
+					"md.flowequation.vertex_equation","md.stressbalance.referential");
+	}
+}/*}}}*/
+int  StressbalanceAnalysis::DofsPerNode(int** pdoftype,int domaintype,int approximation){/*{{{*/
+
+	/*output*/
+	int *doftype = NULL;
+	int  numdofs;
+
+	switch(approximation){
+		case SSAApproximationEnum:
+			 switch(domaintype){
+				 case Domain3DEnum:           numdofs=2; break;
+				 case Domain2DhorizontalEnum: numdofs=2; break;
+				 case Domain2DverticalEnum:   numdofs=1; break;
+				 default: _error_("mesh type not supported yet");
+			 }
+			 break;
+		case L1L2ApproximationEnum: numdofs =2; break;
+		case HOApproximationEnum:   
+			 switch(domaintype){
+				 case Domain3DEnum:         numdofs=2; break;
+				 case Domain2DverticalEnum: numdofs=1; break;
+				 default: _error_("mesh type not supported yet");
+			 }
+			 break;
+		case SIAApproximationEnum:  numdofs =2; break;
+		case FSvelocityEnum:
+			 switch(domaintype){
+				 case Domain3DEnum:         numdofs=3; break;
+				 case Domain2DverticalEnum: numdofs=2; break;
+				 default: _error_("mesh type not supported yet");
+			}
+			break;
+		case FSpressureEnum: numdofs=1; break;
+		case NoneApproximationEnum:
+			 switch(domaintype){
+				 case Domain3DEnum:         numdofs=4; break;
+				 case Domain2DverticalEnum: numdofs=3; break;
+				 default: _error_("mesh type not supported yet");
+			}
+			break;
+		case SSAHOApproximationEnum:
+			numdofs=4;
+			doftype=xNew<int>(numdofs);
+			doftype[0]=SSAApproximationEnum;
+			doftype[1]=SSAApproximationEnum;
+			doftype[2]=HOApproximationEnum;
+			doftype[3]=HOApproximationEnum;
+			break;
+		case HOFSApproximationEnum:
+			numdofs=5;
+			doftype=xNew<int>(numdofs);
+			doftype[0]=HOApproximationEnum;
+			doftype[1]=HOApproximationEnum;
+			doftype[2]=FSvelocityEnum;
+			doftype[3]=FSvelocityEnum;
+			doftype[4]=FSvelocityEnum;
+			break;
+		case SSAFSApproximationEnum:
+			numdofs=5;
+			doftype=xNew<int>(numdofs);
+			doftype[0]=SSAApproximationEnum;
+			doftype[1]=SSAApproximationEnum;
+			doftype[2]=FSvelocityEnum;
+			doftype[3]=FSvelocityEnum;
+			doftype[4]=FSvelocityEnum;
+			break;
+		default:
+			_error_("Approximation " << EnumToStringx(approximation) << " not implemented yet");
+	}
+
+	/*Assign output pointer and return*/
+	*pdoftype = doftype;
+	return numdofs;
+}/*}}}*/
+void StressbalanceAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Intermediaries*/
+	int    materials_type,finiteelement,fe_FS;
+	int    approximation,frictionlaw;
+	int    FrictionCoupling;
+	int*   finiteelement_list=NULL;
+	bool   isSSA,isL1L2,isHO,isFS,iscoupling;
+	bool   control_analysis;
+	bool   dakota_analysis;
+	bool   ismovingfront;
+
+	/*Fetch constants needed: */
+	iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
+	iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
+	iomodel->FindConstant(&isHO,"md.flowequation.isHO");
+	iomodel->FindConstant(&isFS,"md.flowequation.isFS");
+	iomodel->FindConstant(&control_analysis,"md.inversion.iscontrol");
+	iomodel->FindConstant(&dakota_analysis,"md.qmu.isdakota");
+	iomodel->FindConstant(&materials_type,"md.materials.type");
+	iomodel->FindConstant(&ismovingfront,"md.transient.ismovingfront");
+	iomodel->FindConstant(&frictionlaw,"md.friction.law");
+
+	/*return if no processing required*/
+	if(!isSSA & !isL1L2 & !isHO & !isFS) return;
+
+	/*Fetch data needed and allocate vectors: */
+	iomodel->FetchData(1,"md.flowequation.element_equation");
+	finiteelement_list=xNewZeroInit<int>(iomodel->numberofelements);
+
+	/*Do we have coupling*/
+	if( (isSSA?1.:0.) + (isL1L2?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
+	 iscoupling = true;
+	else
+	 iscoupling = false;
+
+	/*Get finite element type*/
+	if(!iscoupling){
+		if(isSSA)       iomodel->FindConstant(&finiteelement,"md.flowequation.fe_SSA");
+		else if(isL1L2) finiteelement = P1Enum;
+		else if(isHO)   iomodel->FindConstant(&finiteelement,"md.flowequation.fe_HO");
+		else if(isFS)   iomodel->FindConstant(&finiteelement,"md.flowequation.fe_FS");
+		for(int i=0;i<iomodel->numberofelements;i++){
+			finiteelement_list[i]=finiteelement;
+		}
+	}
+	else{
+		if(isFS){
+			for(int i=0;i<iomodel->numberofelements;i++){
+				approximation=IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[i]));
+				if(approximation==FSApproximationEnum || approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+					finiteelement_list[i]=MINIcondensedEnum;
+				}
+				else{
+					finiteelement_list[i]=P1Enum;
+				}
+			}
+		}
+		else{
+			finiteelement = P1Enum;
+			for(int i=0;i<iomodel->numberofelements;i++){
+				finiteelement_list[i]=finiteelement;
+			}
+		}
+	}
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,finiteelement_list[i]);
+			counter++;
+		}
+	}
+
+	/*Create inputs: */
+	iomodel->FetchDataToInput(elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(elements,"md.slr.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.mask.groundedice_levelset",MaskGroundediceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vx",VxEnum,0.);
+	iomodel->FetchDataToInput(elements,"md.initialization.vy",VyEnum,0.);
+	iomodel->FetchDataToInput(elements,"md.stressbalance.loadingforcex",LoadingforceXEnum);
+	iomodel->FetchDataToInput(elements,"md.stressbalance.loadingforcey",LoadingforceYEnum);
+	#ifdef LATERALFRICTION
+	iomodel->FetchDataToInput(elements,"md.mesh.vertexonboundary",MeshVertexonboundaryEnum);
+	#endif
+
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+	if(iomodel->domaintype==Domain3DEnum){
+		iomodel->FetchDataToInput(elements,"md.flowequation.borderFS",FlowequationBorderFSEnum);
+		iomodel->FetchDataToInput(elements,"md.stressbalance.loadingforcez",LoadingforceZEnum);
+		iomodel->FetchDataToInput(elements,"md.initialization.vz",VzEnum,0.);
+	}
+	if(isFS){
+		iomodel->FetchDataToInput(elements,"md.initialization.pressure",PressureEnum,0.);
+		iomodel->FetchDataToInput(elements,"md.basalforcings.floatingice_melting_rate",BasalforcingsFloatingiceMeltingRateEnum,0.);
+	}
+	/*LATH parameters*/
+	iomodel->FindConstant(&fe_FS,"md.flowequation.fe_FS");
+	if(fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum){
+		InputUpdateFromConstantx(elements,0.,SigmaNNEnum);
+	}
+
+	/*Friction law variables*/
+	switch(frictionlaw){
+		case 1:
+			iomodel->FetchDataToInput(elements,"md.friction.coefficient",FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.p",FrictionPEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.q",FrictionQEnum);
+			break;
+		case 2:
+			iomodel->FetchDataToInput(elements,"md.friction.C",FrictionCEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.m",FrictionMEnum);
+			break;
+		case 3:
+			iomodel->FindConstant(&FrictionCoupling,"md.friction.coupling");
+			iomodel->FetchDataToInput(elements,"md.friction.C",FrictionCEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.As",FrictionAsEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.q",FrictionQEnum);
+			if(FrictionCoupling==0){
+				iomodel->FetchDataToInput(elements,"md.friction.effective_pressure",FrictionEffectivePressureEnum);
+			}
+			break;
+		case 4:
+			iomodel->FetchDataToInput(elements,"md.friction.coefficient",FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.p",FrictionPEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.q",FrictionQEnum);
+			iomodel->FetchDataToInput(elements,"md.initialization.pressure",PressureEnum);
+			iomodel->FetchDataToInput(elements,"md.initialization.temperature",TemperatureEnum);
+			break;
+		case 5:
+			iomodel->FetchDataToInput(elements,"md.friction.coefficient",FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.p",FrictionPEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.q",FrictionQEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.water_layer",FrictionWaterLayerEnum);
+			break;
+		case 6:
+			iomodel->FetchDataToInput(elements,"md.friction.C",FrictionCEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.m",FrictionMEnum);
+			iomodel->FetchDataToInput(elements,"md.initialization.pressure",PressureEnum);
+			iomodel->FetchDataToInput(elements,"md.initialization.temperature",TemperatureEnum);
+			break;
+		case 7:
+			iomodel->FetchDataToInput(elements,"md.friction.coefficient",FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.coefficientcoulomb",FrictionCoefficientcoulombEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.p",FrictionPEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.q",FrictionQEnum);
+			break;
+		default:
+			_error_("not supported");
+	}
+
+#ifdef _HAVE_ANDROID_
+	elements->InputDuplicate(FrictionCoefficientEnum,AndroidFrictionCoefficientEnum);
+#endif
+
+	/*Free data: */
+	iomodel->DeleteData(1,"md.flowequation.element_equation");
+	xDelete<int>(finiteelement_list);
+}/*}}}*/
+void StressbalanceAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	/*Intermediaries*/
+	int     fe_FS;
+	int     numoutputs;
+	char**  requestedoutputs = NULL;
+	int     materials_type;
+
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isSIA",FlowequationIsSIAEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isSSA",FlowequationIsSSAEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isL1L2",FlowequationIsL1L2Enum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isHO",FlowequationIsHOEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isFS",FlowequationIsFSEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.fe_FS",FlowequationFeFSEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.restol",StressbalanceRestolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.reltol",StressbalanceReltolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.abstol",StressbalanceAbstolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.isnewton",StressbalanceIsnewtonEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.maxiter",StressbalanceMaxiterEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.penalty_factor",StressbalancePenaltyFactorEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.rift_penalty_threshold",StressbalanceRiftPenaltyThresholdEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.FSreconditioning",StressbalanceFSreconditioningEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.shelf_dampening",StressbalanceShelfDampeningEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.viscosity_overshoot",StressbalanceViscosityOvershootEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.friction.law",FrictionLawEnum));
+
+	/*XTH LATH parameters*/
+	iomodel->FindConstant(&fe_FS,"md.flowequation.fe_FS");
+	if(fe_FS==XTaylorHoodEnum || fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum){
+		parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.augmented_lagrangian_r",AugmentedLagrangianREnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.augmented_lagrangian_rlambda",AugmentedLagrangianRlambdaEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.XTH_theta",AugmentedLagrangianThetaEnum));
+	}
+
+	iomodel->FindConstant(&materials_type,"md.materials.type");
+	if(materials_type==MatdamageiceEnum){
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.law",DamageLawEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.kappa",DamageKappaEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.stress_threshold",DamageStressThresholdEnum));
+	}
+
+	/*Requested outputs*/
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.stressbalance.requested_outputs");
+	parameters->AddObject(new IntParam(StressbalanceNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(StressbalanceRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.stressbalance.requested_outputs");
+
+	/*Deal with friction parameters*/
+	int frictionlaw;
+	iomodel->FindConstant(&frictionlaw,"md.friction.law");
+	if(frictionlaw==4 || frictionlaw==6) parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum));
+	if(frictionlaw==3) parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum));
+	if(frictionlaw==5) parameters->AddObject(iomodel->CopyConstantObject("md.friction.f",FrictionFEnum));
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           StressbalanceAnalysis::Core(FemModel* femmodel){/*{{{*/
+
+	/*Intermediaries*/
+	bool isSSA,isL1L2,isHO,isFS;
+	bool conserve_loads = true;
+	int  newton,domaintype,fe_FS;
+
+	/* recover parameters:*/
+	femmodel->parameters->FindParam(&isSSA,FlowequationIsSSAEnum);
+	femmodel->parameters->FindParam(&isL1L2,FlowequationIsL1L2Enum);
+	femmodel->parameters->FindParam(&isHO,FlowequationIsHOEnum);
+	femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
+	femmodel->parameters->FindParam(&fe_FS,FlowequationFeFSEnum);
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&newton,StressbalanceIsnewtonEnum);
+
+	if(isFS && !(isSSA || isHO || isL1L2)){
+		if(VerboseSolution()) _printf0_("   computing velocities\n");
+
+		femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+		if (fe_FS==XTaylorHoodEnum)
+		 solutionsequence_la_theta(femmodel);
+		else if (fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum)
+		 solutionsequence_la(femmodel);
+		else if(newton>0)
+		 solutionsequence_newton(femmodel);
+		else
+		 solutionsequence_nonlinear(femmodel,conserve_loads); 
+	}
+	else if(!isFS && (isSSA || isHO || isL1L2)){ 
+		if(VerboseSolution()) _printf0_("   computing velocities\n");
+
+		femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+		if(newton>0)
+		 solutionsequence_newton(femmodel);
+		else
+		 solutionsequence_nonlinear(femmodel,conserve_loads); 
+
+		if(domaintype==Domain2DverticalEnum && isSSA){
+			femmodel->parameters->SetParam(VxEnum,InputToExtrudeEnum);
+			extrudefrombase_core(femmodel);
+			femmodel->parameters->SetParam(VelEnum,InputToExtrudeEnum);
+			extrudefrombase_core(femmodel);
+		}
+	}
+	else if ((isSSA || isL1L2 || isHO) && isFS){
+		if(VerboseSolution()) _printf0_("   computing coupling between lower order models and FS\n");
+		solutionsequence_FScoupling_nonlinear(femmodel,conserve_loads);
+	}
+	else{
+		_error_("not supported");
+	}
+
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreateDVector(Element* element){/*{{{*/
+
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	switch(approximation){
+		case FSApproximationEnum: 
+			return CreateDVectorFS(element);
+		default:
+			return NULL; //no need for doftypes outside of FS approximation
+	}
+	return NULL;
+
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	switch(approximation){
+		case SSAApproximationEnum: 
+			return CreateJacobianMatrixSSA(element);
+		case HOApproximationEnum: 
+			return CreateJacobianMatrixHO(element);
+		case FSApproximationEnum: 
+			return CreateJacobianMatrixFS(element);
+		case NoneApproximationEnum:
+			return NULL;
+		default:
+			_error_("Approximation "<<EnumToStringx(approximation)<<" not supported");
+	}
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	switch(approximation){
+		case SIAApproximationEnum:
+			return NULL;
+		case SSAApproximationEnum: 
+			return CreateKMatrixSSA(element);
+		case L1L2ApproximationEnum: 
+			return CreateKMatrixL1L2(element);
+		case HOApproximationEnum: 
+			return CreateKMatrixHO(element);
+		case FSApproximationEnum: 
+			return CreateKMatrixFS(element);
+		case SSAHOApproximationEnum: 
+			return CreateKMatrixSSAHO(element);
+		case HOFSApproximationEnum: 
+			return CreateKMatrixHOFS(element);
+		case SSAFSApproximationEnum: 
+			return CreateKMatrixSSAFS(element);
+		case NoneApproximationEnum:
+			return NULL;
+		default:
+			_error_("Approximation "<<EnumToStringx(approximation)<<" not supported");
+	}
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	switch(approximation){
+		case SIAApproximationEnum:
+			return NULL;
+		case SSAApproximationEnum: 
+			return CreatePVectorSSA(element);
+		case L1L2ApproximationEnum: 
+			return CreatePVectorL1L2(element);
+		case HOApproximationEnum: 
+			return CreatePVectorHO(element);
+		case FSApproximationEnum: 
+			return CreatePVectorFS(element);
+		case SSAHOApproximationEnum: 
+			return CreatePVectorSSAHO(element);
+		case HOFSApproximationEnum: 
+			return CreatePVectorHOFS(element);
+		case SSAFSApproximationEnum: 
+			return CreatePVectorSSAFS(element);
+		case NoneApproximationEnum:
+			return NULL;
+		default:
+			_error_("Approximation "<<EnumToStringx(approximation)<<" not supported");
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	switch(approximation){
+		case FSApproximationEnum: case NoneApproximationEnum:
+			GetSolutionFromInputsFS(solution,element);
+			return;
+		case SSAApproximationEnum: case HOApproximationEnum: case SIAApproximationEnum:
+			GetSolutionFromInputsHoriz(solution,element);
+			return;
+		case L1L2ApproximationEnum:
+			GetSolutionFromInputsHoriz(solution,element);
+			return;
+		case SSAHOApproximationEnum: case HOFSApproximationEnum: case SSAFSApproximationEnum:
+			/*the elements around will create the solution*/
+			return;
+		default:
+			_error_("Approximation "<<EnumToStringx(approximation)<<" not supported");
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::GetSolutionFromInputsHoriz(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+
+	IssmDouble   vx,vy;
+	int          domaintype,dim,approximation,dofpernode;
+	int*         doflist = NULL;
+
+	/*Get some parameters*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum: dim = 2; dofpernode = 2; break;
+		case Domain2DverticalEnum:   dim = 2; dofpernode = 1; break;
+		case Domain3DEnum:           dim = 3; dofpernode = 2; break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*dofpernode;
+	element->GetInputValue(&approximation,ApproximationEnum);
+
+	/*Fetch dof list and allocate solution vector*/
+	element->GetDofList(&doflist,approximation,GsetEnum);
+	IssmDouble* values = xNew<IssmDouble>(numdof);
+
+	/*Get inputs*/
+	Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=NULL;
+	if(domaintype!=Domain2DverticalEnum){vy_input=element->GetInput(VyEnum); _assert_(vy_input);}
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+	Gauss* gauss=element->NewGauss();
+	for(int i=0;i<numnodes;i++){
+		gauss->GaussNode(element->FiniteElement(),i);
+
+		/*Recover vx and vy*/
+		vx_input->GetInputValue(&vx,gauss);
+		values[i*dofpernode+0]=vx;
+		if(dofpernode==2){
+			vy_input->GetInputValue(&vy,gauss);
+			values[i*dofpernode+1]=vy;
+		}
+	}
+
+	solution->SetValues(numdof,doflist,values,INS_VAL);
+
+	/*Free ressources:*/
+	delete gauss;
+	xDelete<IssmDouble>(values);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           StressbalanceAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	switch(approximation){
+		case FSApproximationEnum: case NoneApproximationEnum:
+			InputUpdateFromSolutionFS(solution,element);
+			return;
+		case SIAApproximationEnum: 
+			return;
+		case SSAApproximationEnum: 
+			InputUpdateFromSolutionSSA(solution,element);
+			return;
+		case HOApproximationEnum: 
+			InputUpdateFromSolutionHO(solution,element);
+			return;
+		case L1L2ApproximationEnum:
+			InputUpdateFromSolutionL1L2(solution,element);
+			return;
+		case SSAHOApproximationEnum:
+			InputUpdateFromSolutionSSAHO(solution,element);
+			return;
+		case HOFSApproximationEnum:
+			InputUpdateFromSolutionHOFS(solution,element);
+			return;
+		case SSAFSApproximationEnum:
+			InputUpdateFromSolutionSSAFS(solution,element);
+			return;
+		default:
+			_error_("Approximation "<<EnumToStringx(approximation)<<" not supported");
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
+
+/*SSA*/
+ElementMatrix* StressbalanceAnalysis::CreateJacobianMatrixSSA(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries */
+	IssmDouble Jdet,thickness;
+	IssmDouble eps1dotdphii,eps1dotdphij;
+	IssmDouble eps2dotdphii,eps2dotdphij;
+	IssmDouble mu_prime;
+	IssmDouble epsilon[3];/* epsilon=[exx,eyy,exy];*/
+	IssmDouble eps1[2],eps2[2];
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element matrix, vectors and Gaussian points*/
+	ElementMatrix* Ke=this->CreateKMatrixSSA(element); //Initialize Jacobian with regular SSA (first part of the Gateau derivative)
+	IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* thickness_input = basalelement->GetInput(ThicknessEnum);_assert_(thickness_input);
+	Input* vx_input        = basalelement->GetInput(VxEnum);       _assert_(vx_input);
+	Input* vy_input        = basalelement->GetInput(VyEnum);       _assert_(vy_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		thickness_input->GetInputValue(&thickness, gauss);
+		basalelement->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+		basalelement->material->ViscositySSADerivativeEpsSquare(&mu_prime,&epsilon[0]);
+		eps1[0]=2*epsilon[0]+epsilon[1];   eps2[0]=epsilon[2];
+		eps1[1]=epsilon[2];                eps2[1]=epsilon[0]+2*epsilon[1];
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				eps1dotdphii=eps1[0]*dbasis[0*numnodes+i]+eps1[1]*dbasis[1*numnodes+i];
+				eps1dotdphij=eps1[0]*dbasis[0*numnodes+j]+eps1[1]*dbasis[1*numnodes+j];
+				eps2dotdphii=eps2[0]*dbasis[0*numnodes+i]+eps2[1]*dbasis[1*numnodes+i];
+				eps2dotdphij=eps2[0]*dbasis[0*numnodes+j]+eps2[1]*dbasis[1*numnodes+j];
+
+				Ke->values[2*numnodes*(2*i+0)+2*j+0]+=gauss->weight*Jdet*2.*mu_prime*thickness*eps1dotdphij*eps1dotdphii;
+				Ke->values[2*numnodes*(2*i+0)+2*j+1]+=gauss->weight*Jdet*2.*mu_prime*thickness*eps2dotdphij*eps1dotdphii;
+				Ke->values[2*numnodes*(2*i+1)+2*j+0]+=gauss->weight*Jdet*2.*mu_prime*thickness*eps1dotdphij*eps2dotdphii;
+				Ke->values[2*numnodes*(2*i+1)+2*j+1]+=gauss->weight*Jdet*2.*mu_prime*thickness*eps2dotdphij*eps2dotdphii;
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	basalelement->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+
+	/*clean-up and return*/
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixSSA(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum: case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixSSAViscous(basalelement);
+	ElementMatrix* Ke2=CreateKMatrixSSAFriction(basalelement);
+	#ifdef LATERALFRICTION
+	ElementMatrix* Ke3=CreateKMatrixSSALateralFriction(basalelement);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2,Ke3);
+	delete Ke3;
+	#else
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+	#endif
+
+	/*clean-up and return*/
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixSSAFriction(Element* element){/*{{{*/
+
+	/*Return if element is inactive*/
+	if(element->IsFloating() || !element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int         dim,domaintype;
+	bool        mainlyfloating;
+	int         migration_style,point1;
+	IssmDouble  alpha2,Jdet,fraction1,fraction2;
+	IssmDouble  gllevelset,phi=1.;
+	IssmDouble *xyz_list  = NULL;
+	Gauss*      gauss     = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1;break;
+		case Domain2DhorizontalEnum: dim = 2;break;
+		case Domain3DEnum:           dim = 2;break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*dim;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke = element->NewElementMatrix(SSAApproximationEnum);
+	IssmDouble*    B  = xNew<IssmDouble>(dim*numdof);
+	IssmDouble*    D  = xNewZeroInit<IssmDouble>(dim*dim);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&migration_style,GroundinglineMigrationEnum);
+	Input* surface_input    = element->GetInput(SurfaceEnum); _assert_(surface_input);
+	Input* gllevelset_input = NULL;
+
+	/*build friction object, used later on: */
+	Friction* friction=new Friction(element,1);
+
+	/*Recover portion of element that is grounded*/
+	if(migration_style==SubelementMigrationEnum) phi=element->GetGroundedPortion(xyz_list);
+	if(migration_style==SubelementMigration2Enum){
+		gllevelset_input=element->GetInput(MaskGroundediceLevelsetEnum); _assert_(gllevelset_input);
+		element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+	   gauss = element->NewGauss(point1,fraction1,fraction2,mainlyfloating,2);
+	}
+	else{
+		gauss = element->NewGauss(2);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		friction->GetAlpha2(&alpha2,gauss);
+		if(migration_style==SubelementMigrationEnum) alpha2=phi*alpha2;
+		if(migration_style==SubelementMigration2Enum){
+			gllevelset_input->GetInputValue(&gllevelset, gauss);
+			if(gllevelset<0.) alpha2=0.;
+		}
+
+		this->GetBSSAFriction(B,element,dim,xyz_list,gauss);
+		element->JacobianDeterminant(&Jdet, xyz_list,gauss);
+		for(int i=0;i<dim;i++) D[i*dim+i]=alpha2*gauss->weight*Jdet;
+
+		TripleMultiply(B,dim,numdof,1,
+					D,dim,dim,0,
+					B,dim,numdof,0,
+					&Ke->values[0],1);
+	}
+
+	/*Transform Coordinate System*/
+	if(dim==2) element->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	delete friction;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(D);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixSSALateralFriction(Element* element){/*{{{*/
+
+	/*Return if element is inactive*/
+	if(!element->IsIceInElement()) return NULL;
+
+	/*If no boundary, return NULL*/
+	if(!element->IsFaceOnBoundary()) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  alpha2;
+	IssmDouble  Jdet;
+	int         domaintype;
+	IssmDouble  icefront;
+	IssmDouble *xyz_list          = NULL;
+	IssmDouble *xyz_list_boundary = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype==Domain2DverticalEnum) return NULL; //not supported yet
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int dim      = 2;
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*dim;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke = element->NewElementMatrix(SSAApproximationEnum);
+	IssmDouble*    B  = xNew<IssmDouble>(dim*numdof);
+	IssmDouble*    D  = xNewZeroInit<IssmDouble>(dim*dim);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetLevelCoordinates(&xyz_list_boundary,xyz_list,MeshVertexonboundaryEnum,1.);
+	Input* icelevelset_input = element->GetInput(MaskIceLevelsetEnum); _assert_(icelevelset_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(xyz_list,xyz_list_boundary,3);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		this->GetBSSAFriction(B,element,dim,xyz_list,gauss);
+		element->JacobianDeterminantSurface(&Jdet,xyz_list_boundary,gauss);
+		icelevelset_input->GetInputValue(&icefront, gauss);
+		if(icefront==0.)
+		 alpha2=0.;
+		else
+		 alpha2=2.e+12;
+		for(int i=0;i<dim;i++) D[i*dim+i]=alpha2*gauss->weight*Jdet;
+
+		TripleMultiply(B,dim,numdof,1,
+					D,dim,dim,0,
+					B,dim,numdof,0,
+					&Ke->values[0],1);
+	}
+
+	/*Transform Coordinate System*/
+	if(dim==2) element->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_boundary);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(D);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixSSAViscous(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int         dim,domaintype,bsize;
+	IssmDouble  viscosity,newviscosity,oldviscosity;
+	IssmDouble  viscosity_overshoot,thickness,Jdet;
+	IssmDouble  D_scalar;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1; bsize = 1; break;
+		case Domain2DhorizontalEnum: dim = 2; bsize = 3; break;
+		case Domain3DEnum:           dim = 2; bsize = 3; break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*dim;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix(SSAApproximationEnum);
+	IssmDouble*    B      = xNew<IssmDouble>(bsize*numdof);
+	IssmDouble*    Bprime = xNew<IssmDouble>(bsize*numdof);
+	IssmDouble*    D      = xNewZeroInit<IssmDouble>(bsize*bsize);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* thickness_input=element->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* vx_input=element->GetInput(VxEnum);               _assert_(vx_input);
+	Input* vxold_input=element->GetInput(VxPicardEnum);      _assert_(vxold_input);
+	Input* vy_input    = NULL;
+	Input* vyold_input = NULL;
+	if(dim==2){
+		vy_input    = element->GetInput(VyEnum);       _assert_(vy_input);
+		vyold_input = element->GetInput(VyPicardEnum); _assert_(vyold_input);
+	}
+	element->FindParam(&viscosity_overshoot,StressbalanceViscosityOvershootEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		this->GetBSSA(B,element,dim,xyz_list,gauss);
+		this->GetBSSAprime(Bprime,element,dim,xyz_list,gauss);
+
+		element->material->ViscositySSA(&viscosity,dim,xyz_list,gauss,vx_input,vy_input);
+		element->material->ViscositySSA(&oldviscosity,dim,xyz_list,gauss,vxold_input,vyold_input);
+		thickness_input->GetInputValue(&thickness, gauss);
+
+		newviscosity=viscosity+viscosity_overshoot*(viscosity-oldviscosity);
+		D_scalar=2.*newviscosity*thickness*gauss->weight*Jdet;
+		for(int i=0;i<bsize;i++) D[i*bsize+i]=D_scalar;
+
+		TripleMultiply(B,bsize,numdof,1,
+					D,bsize,bsize,0,
+					Bprime,bsize,numdof,0,
+					&Ke->values[0],1);
+	}
+
+	/*Transform Coordinate System*/
+	if(dim==2) element->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(D);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(B);
+	return Ke;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorSSA(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum: case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorSSADrivingStress(basalelement);
+	ElementVector* pe2=CreatePVectorSSAFront(basalelement);
+	ElementVector* pe =new ElementVector(pe1,pe2);
+
+	/*clean-up and return*/
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	delete pe1;
+	delete pe2;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorSSADrivingStress(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int         dim,domaintype;
+	IssmDouble  thickness,Jdet,slope[2];
+	IssmDouble* xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1;break;
+		case Domain2DhorizontalEnum: dim = 2;break;
+		case Domain3DEnum:           dim = 2;break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe    = element->NewElementVector(SSAApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input*     thickness_input=element->GetInput(ThicknessEnum); _assert_(thickness_input); 
+	Input*     surface_input  =element->GetInput(SurfaceEnum);   _assert_(surface_input);
+	IssmDouble rhog = element->GetMaterialParameter(MaterialsRhoIceEnum)*element->GetMaterialParameter(ConstantsGEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis, gauss);
+
+		thickness_input->GetInputValue(&thickness,gauss); _assert_(thickness>0);
+		surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			pe->values[i*dim+0]+=-rhog*thickness*slope[0]*Jdet*gauss->weight*basis[i];
+			if(dim==2) pe->values[i*dim+1]+=-rhog*thickness*slope[1]*Jdet*gauss->weight*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	if(dim==2) element->TransformLoadVectorCoord(pe,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorSSAFront(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*If no front, return NULL*/
+	if(!element->IsIcefront()) return NULL;
+
+	/*Intermediaries*/
+	int         dim,domaintype;
+	IssmDouble  Jdet,thickness,base,sealevel,water_pressure,ice_pressure;
+	IssmDouble  surface_under_water,base_under_water,pressure;
+	IssmDouble *xyz_list = NULL;
+	IssmDouble *xyz_list_front = NULL;
+	IssmDouble  normal[2];
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1;break;
+		case Domain2DhorizontalEnum: dim = 2;break;
+		case Domain3DEnum:           dim = 2;break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector(SSAApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	Input* thickness_input = element->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* base_input       = element->GetInput(BaseEnum);       _assert_(base_input);
+	Input* sealevel_input       = element->GetInput(SealevelEnum);       _assert_(sealevel_input);
+	IssmDouble rho_water   = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	IssmDouble rho_ice     = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble gravity     = element->GetMaterialParameter(ConstantsGEnum);
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetIcefrontCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum);
+	element->NormalSection(&normal[0],xyz_list_front);
+
+	/*Start looping on Gaussian points*/
+	Gauss* gauss=element->NewGauss(xyz_list,xyz_list_front,3);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+		thickness_input->GetInputValue(&thickness,gauss);
+		sealevel_input->GetInputValue(&sealevel,gauss);
+		base_input->GetInputValue(&base,gauss);
+		element->JacobianDeterminantSurface(&Jdet,xyz_list_front,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		surface_under_water = min(0.,thickness+base-sealevel); // 0 if the top of the glacier is above water level
+		base_under_water    = min(0.,base-sealevel);           // 0 if the bottom of the glacier is above water level
+		water_pressure = 1.0/2.0*gravity*rho_water*(surface_under_water*surface_under_water - base_under_water*base_under_water);
+		ice_pressure   = 1.0/2.0*gravity*rho_ice*thickness*thickness;
+		pressure = ice_pressure + water_pressure;
+
+		for(int i=0;i<numnodes;i++){
+			pe->values[dim*i+0]+= pressure*Jdet*gauss->weight*normal[0]*basis[i];
+			if(dim==2) pe->values[dim*i+1]+= pressure*Jdet*gauss->weight*normal[1]*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	if(dim==2) element->TransformLoadVectorCoord(pe,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_front);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           StressbalanceAnalysis::GetBSSA(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3] where Bi is of size 3*NDOF2. 
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by: 
+	 *                   2D                      1D
+	 *       Bi=[ dN/dx           0    ]   Bi=[ dN/dx ]
+	 *          [   0           dN/dy  ]      
+	 *          [ 1/2*dN/dy  1/2*dN/dx ]     
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 3x(NDOF2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(dim*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B: */
+	if(dim==2){
+		for(int i=0;i<numnodes;i++){
+			B[2*numnodes*0+2*i+0] = dbasis[0*numnodes+i];
+			B[2*numnodes*0+2*i+1] = 0.;
+			B[2*numnodes*1+2*i+0] = 0.;
+			B[2*numnodes*1+2*i+1] = dbasis[1*numnodes+i];
+			B[2*numnodes*2+2*i+0] = .5*dbasis[1*numnodes+i];
+			B[2*numnodes*2+2*i+1] = .5*dbasis[0*numnodes+i];
+		}
+	}
+	else{
+		for(int i=0;i<numnodes;i++){
+			B[i] = dbasis[i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBSSAFriction(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3] where Bi is square and of size 2. 
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by: 
+	 *                       2D             1D
+	 *                 Bi=[ N   0 ]    Bi = N
+	 *                    [ 0   N ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 2 x (numdof*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* basis=xNew<IssmDouble>(numnodes);
+	element->NodalFunctions(basis,gauss);
+
+	/*Build L: */
+	if(dim==2){
+		for(int i=0;i<numnodes;i++){
+			B[2*numnodes*0+2*i+0] = basis[i];
+			B[2*numnodes*0+2*i+1] = 0.;
+			B[2*numnodes*1+2*i+0] = 0.;
+			B[2*numnodes*1+2*i+1] = basis[i];
+		}
+	}
+	else{
+		for(int i=0;i<numnodes;i++){
+			B[i] = basis[i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBSSAprime(IssmDouble* Bprime,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B'  matrix. B'=[B1' B2' B3'] where Bi' is of size 3*NDOF2. 
+	 * For node i, Bi' can be expressed in the actual coordinate system
+	 * by: 
+	 *                         2D                        1D
+	 *       Bi_prime=[ 2*dN/dx    dN/dy ]     Bi_prime=[ 2*dN/dx ]
+	 *                [   dN/dx  2*dN/dy ]
+	 *                [   dN/dy    dN/dx ]
+	 * where hNis the finiteelement function for node i.
+	 *
+	 * We assume B' has been allocated already, of size: 3x(NDOF2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(dim*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B': */
+	if(dim==2){
+		for(int i=0;i<numnodes;i++){
+			Bprime[2*numnodes*0+2*i+0] = 2.*dbasis[0*numnodes+i];
+			Bprime[2*numnodes*0+2*i+1] =    dbasis[1*numnodes+i];
+			Bprime[2*numnodes*1+2*i+0] =    dbasis[0*numnodes+i];
+			Bprime[2*numnodes*1+2*i+1] = 2.*dbasis[1*numnodes+i];
+			Bprime[2*numnodes*2+2*i+0] =    dbasis[1*numnodes+i];
+			Bprime[2*numnodes*2+2*i+1] =    dbasis[0*numnodes+i];
+		}
+	}
+	else{
+		for(int i=0;i<numnodes;i++){
+			Bprime[i] = 2.*dbasis[i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolutionSSA(IssmDouble* solution,Element* element){/*{{{*/
+
+	int         i,dim,domaintype;
+	IssmDouble  rho_ice,g;
+	int*        doflist=NULL;
+	IssmDouble* xyz_list=NULL;
+	Element*    basalelement=NULL;
+
+	/*Deal with pressure first*/
+	int numvertices = element->GetNumberOfVertices();
+	IssmDouble* pressure  = xNew<IssmDouble>(numvertices);
+	IssmDouble* thickness = xNew<IssmDouble>(numvertices);
+	IssmDouble* surface   = xNew<IssmDouble>(numvertices);
+
+	element->FindParam(&domaintype,DomainTypeEnum);
+	rho_ice =element->GetMaterialParameter(MaterialsRhoIceEnum);
+	g       =element->GetMaterialParameter(ConstantsGEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->GetInputListOnVertices(thickness,ThicknessEnum);
+			for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*thickness[i];
+			dim=2;
+			break;
+		case Domain3DEnum:
+			element->GetVerticesCoordinates(&xyz_list);
+			element->GetInputListOnVertices(surface,SurfaceEnum);
+			for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
+			dim=2;
+			break;
+		case Domain2DverticalEnum:
+			element->GetVerticesCoordinates(&xyz_list);
+			element->GetInputListOnVertices(surface,SurfaceEnum);
+			for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+1]);
+			dim=1;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+	element->AddInput(PressureEnum,pressure,P1Enum);
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(thickness);
+	xDelete<IssmDouble>(surface);
+
+	/*Get basal element*/
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum: case Domain2DverticalEnum:
+			if(!element->IsOnBase()){xDelete<IssmDouble>(xyz_list); return;}
+			basalelement=element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+	int numdof   = numnodes*dim;
+
+	/*Fetch dof list and allocate solution vectors*/
+	basalelement->GetDofList(&doflist,SSAApproximationEnum,GsetEnum);
+	IssmDouble* values    = xNew<IssmDouble>(numdof);
+	IssmDouble* vx        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vy        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vz        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vel       = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
+
+	/*Transform solution in Cartesian Space*/
+	if(dim==2) basalelement->TransformSolutionCoord(&values[0],XYEnum);
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+	for(i=0;i<numnodes;i++){
+		vx[i]=values[i*dim+0];
+		if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector");
+
+		if(dim==2){
+			vy[i]=values[i*dim+1];
+			if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector");
+			if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector");
+		}
+	}
+
+	/*Get Vz and compute vel*/
+	if(dim==2){
+		basalelement->GetInputListOnNodes(&vz[0],VzEnum,0.);
+		for(i=0;i<numnodes;i++) vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i] + vz[i]*vz[i]);
+	}
+	else{
+		basalelement->GetInputListOnNodes(&vy[0],VyEnum,0.);
+		for(i=0;i<numnodes;i++) vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i]);
+	}
+
+	/*Now, we have to move the previous Vx and Vy inputs  to old 
+	 * status, otherwise, we'll wipe them off: */
+	element->InputChangeName(VxEnum,VxPicardEnum);
+	if(dim==2)element->InputChangeName(VyEnum,VyPicardEnum);
+
+	/*Add vx and vy as inputs to the tria element: */
+	element->AddBasalInput(VxEnum,vx,element->GetElementType());
+	if(dim==2)element->AddBasalInput(VyEnum,vy,element->GetElementType());
+	element->AddBasalInput(VelEnum,vel,element->GetElementType());
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(vel);
+	xDelete<IssmDouble>(vz);
+	xDelete<IssmDouble>(vy);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<int>(doflist);
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+
+/*L1L2*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixL1L2(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixL1L2Viscous(element);
+	ElementMatrix* Ke2=CreateKMatrixL1L2Friction(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixL1L2Friction(Element* element){/*{{{*/
+
+	if(!element->IsOnBase() || element->IsFloating()) return NULL;
+	Element* basalelement = element->SpawnBasalElement();
+	ElementMatrix* Ke = CreateKMatrixSSAFriction(basalelement);
+
+	/*clean-up and return*/
+	basalelement->DeleteMaterials(); delete basalelement;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixL1L2Viscous(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble  viscosity,Jdet;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get element on base*/
+	Element* basalelement = element->GetBasalElement()->SpawnBasalElement();
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+	int numdof   = numnodes*2;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke     = basalelement->NewElementMatrix(L1L2ApproximationEnum);
+	IssmDouble*    B      = xNew<IssmDouble>(3*numdof);
+	IssmDouble*    Bprime = xNew<IssmDouble>(3*numdof);
+	IssmDouble*    D      = xNewZeroInit<IssmDouble>(3*3);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* surface_input = element->GetInput(SurfaceEnum); _assert_(surface_input);
+	Input* vx_input      = element->GetInput(VxEnum);      _assert_(vx_input);
+	Input* vy_input      = element->GetInput(VyEnum);      _assert_(vy_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss      = element->NewGauss(5);
+	Gauss* gauss_base = basalelement->NewGauss();
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+		gauss->SynchronizeGaussBase(gauss_base);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		this->GetBSSA(B,basalelement,2,xyz_list,gauss_base);
+		this->GetBSSAprime(Bprime,basalelement,2,xyz_list,gauss_base);
+
+		element->material->ViscosityL1L2(&viscosity,xyz_list,gauss,vx_input,vy_input,surface_input);
+
+		for(int i=0;i<3;i++) D[i*3+i]=2*viscosity*gauss->weight*Jdet;
+
+		TripleMultiply(B,3,numdof,1,
+					D,3,3,0,
+					Bprime,3,numdof,0,
+					&Ke->values[0],1);
+	}
+
+	/*Transform Coordinate System*/
+	basalelement->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	delete gauss_base;
+	basalelement->DeleteMaterials(); delete basalelement;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(D);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(B);
+	return Ke;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorL1L2(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum: case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorL1L2DrivingStress(basalelement);
+	ElementVector* pe2=CreatePVectorL1L2Front(basalelement);
+	ElementVector* pe =new ElementVector(pe1,pe2);
+
+	/*clean-up and return*/
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	delete pe1;
+	delete pe2;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorL1L2DrivingStress(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble  thickness,Jdet,slope[2];
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe    = element->NewElementVector(L1L2ApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input*     thickness_input=element->GetInput(ThicknessEnum); _assert_(thickness_input); 
+	Input*     surface_input  =element->GetInput(SurfaceEnum);   _assert_(surface_input);
+	IssmDouble rhog = element->GetMaterialParameter(MaterialsRhoIceEnum)*element->GetMaterialParameter(ConstantsGEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis, gauss);
+
+		thickness_input->GetInputValue(&thickness,gauss);
+		surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			pe->values[i*2+0]+=-rhog*thickness*slope[0]*Jdet*gauss->weight*basis[i];
+			pe->values[i*2+1]+=-rhog*thickness*slope[1]*Jdet*gauss->weight*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorL1L2Front(Element* element){/*{{{*/
+
+	/*If no front, return NULL*/
+	if(!element->IsIcefront()) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  Jdet,thickness,bed,sealevel,water_pressure,ice_pressure;
+	IssmDouble  surface_under_water,base_under_water,pressure;
+	IssmDouble *xyz_list = NULL;
+	IssmDouble *xyz_list_front = NULL;
+	IssmDouble  normal[2];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector(L1L2ApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	Input* thickness_input = element->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* base_input       = element->GetInput(BaseEnum);       _assert_(base_input);
+	Input* sealevel_input       = element->GetInput(SealevelEnum);       _assert_(sealevel_input);
+	IssmDouble rho_water   = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	IssmDouble rho_ice     = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble gravity     = element->GetMaterialParameter(ConstantsGEnum);
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetIcefrontCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum);
+	element->NormalSection(&normal[0],xyz_list_front);
+
+	/*Start looping on Gaussian points*/
+	Gauss* gauss=element->NewGauss(xyz_list,xyz_list_front,3);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+		thickness_input->GetInputValue(&thickness,gauss);
+		base_input->GetInputValue(&bed,gauss);
+		sealevel_input->GetInputValue(&sealevel,gauss);
+		element->JacobianDeterminantSurface(&Jdet,xyz_list_front,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		surface_under_water = min(0.,thickness+bed-sealevel); // 0 if the top of the glacier is above water level
+		base_under_water    = min(0.,bed-sealevel);           // 0 if the bottom of the glacier is above water level
+		water_pressure = 1.0/2.0*gravity*rho_water*(surface_under_water*surface_under_water - base_under_water*base_under_water);
+		ice_pressure   = 1.0/2.0*gravity*rho_ice*thickness*thickness;
+		pressure = ice_pressure + water_pressure;
+
+		for (int i=0;i<numnodes;i++){
+			pe->values[2*i+0]+= pressure*Jdet*gauss->weight*normal[0]*basis[i];
+			pe->values[2*i+1]+= pressure*Jdet*gauss->weight*normal[1]*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_front);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolutionL1L2(IssmDouble* solution,Element* element){/*{{{*/
+
+	int         i,dim,domaintype;
+	IssmDouble  rho_ice,g;
+	int*        doflist=NULL;
+	IssmDouble* xyz_list=NULL;
+	Element*    basalelement=NULL;
+
+	/*Deal with pressure first*/
+	int numvertices = element->GetNumberOfVertices();
+	IssmDouble* pressure  = xNew<IssmDouble>(numvertices);
+	IssmDouble* thickness = xNew<IssmDouble>(numvertices);
+	IssmDouble* surface   = xNew<IssmDouble>(numvertices);
+
+	element->FindParam(&dim,DomainDimensionEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+	rho_ice =element->GetMaterialParameter(MaterialsRhoIceEnum);
+	g       =element->GetMaterialParameter(ConstantsGEnum);
+	if(dim==2){
+		element->GetInputListOnVertices(thickness,ThicknessEnum);
+		for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*thickness[i];
+	}
+	else{
+		element->GetVerticesCoordinates(&xyz_list);
+		element->GetInputListOnVertices(surface,SurfaceEnum);
+		for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
+	}
+	element->AddInput(PressureEnum,pressure,P1Enum);
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(thickness);
+	xDelete<IssmDouble>(surface);
+
+	/*Get basal element*/
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()){xDelete<IssmDouble>(xyz_list); return;}
+			basalelement=element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+	int numdof   = numnodes*2;
+
+	/*Fetch dof list and allocate solution vectors*/
+	basalelement->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values    = xNew<IssmDouble>(numdof);
+	IssmDouble* vx        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vy        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vz        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vel       = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
+
+	/*Transform solution in Cartesian Space*/
+	basalelement->TransformSolutionCoord(&values[0],XYEnum);
+	basalelement->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+	for(i=0;i<numnodes;i++){
+		vx[i]=values[i*2+0];
+		vy[i]=values[i*2+1];
+
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Get Vz and compute vel*/
+	basalelement->GetInputListOnNodes(&vz[0],VzEnum,0.);
+	for(i=0;i<numnodes;i++) vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i] + vz[i]*vz[i]);
+
+	/*Now, we have to move the previous Vx and Vy inputs  to old 
+	 * status, otherwise, we'll wipe them off: */
+	element->InputChangeName(VxEnum,VxPicardEnum);
+	element->InputChangeName(VyEnum,VyPicardEnum);
+
+	/*Add vx and vy as inputs to the tria element: */
+	element->AddBasalInput(VxEnum,vx,element->GetElementType());
+	element->AddBasalInput(VyEnum,vy,element->GetElementType());
+	element->AddBasalInput(VelEnum,vel,element->GetElementType());
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(vel);
+	xDelete<IssmDouble>(vz);
+	xDelete<IssmDouble>(vy);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<int>(doflist);
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+
+/*HO*/
+ElementMatrix* StressbalanceAnalysis::CreateJacobianMatrixHO(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble Jdet;
+	IssmDouble eps1dotdphii,eps1dotdphij;
+	IssmDouble eps2dotdphii,eps2dotdphij;
+	IssmDouble mu_prime;
+	IssmDouble epsilon[5]; /* epsilon=[exx,eyy,exy,exz,eyz];*/
+	IssmDouble eps1[3],eps2[3];
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element matrix, vectors and Gaussian points*/
+	ElementMatrix* Ke=this->CreateKMatrixHO(element); //Initialize Jacobian with regular HO (first part of the Gateau derivative)
+	IssmDouble*    dbasis = xNew<IssmDouble>(3*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input = element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input = element->GetInput(VyEnum); _assert_(vy_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGauss(5);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		element->StrainRateHO(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+		element->material->ViscosityHODerivativeEpsSquare(&mu_prime,&epsilon[0]);
+		eps1[0]=2*epsilon[0]+epsilon[1];   eps2[0]=epsilon[2];
+		eps1[1]=epsilon[2];                eps2[1]=epsilon[0]+2*epsilon[1];
+		eps1[2]=epsilon[3];                eps2[2]=epsilon[4];
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				eps1dotdphii=eps1[0]*dbasis[0*numnodes+i]+eps1[1]*dbasis[1*numnodes+i]+eps1[2]*dbasis[2*numnodes+i];
+				eps1dotdphij=eps1[0]*dbasis[0*numnodes+j]+eps1[1]*dbasis[1*numnodes+j]+eps1[2]*dbasis[2*numnodes+j];
+				eps2dotdphii=eps2[0]*dbasis[0*numnodes+i]+eps2[1]*dbasis[1*numnodes+i]+eps2[2]*dbasis[2*numnodes+i];
+				eps2dotdphij=eps2[0]*dbasis[0*numnodes+j]+eps2[1]*dbasis[1*numnodes+j]+eps2[2]*dbasis[2*numnodes+j];
+
+				Ke->values[2*numnodes*(2*i+0)+2*j+0]+=gauss->weight*Jdet*2.*mu_prime*eps1dotdphij*eps1dotdphii;
+				Ke->values[2*numnodes*(2*i+0)+2*j+1]+=gauss->weight*Jdet*2.*mu_prime*eps2dotdphij*eps1dotdphii;
+				Ke->values[2*numnodes*(2*i+1)+2*j+0]+=gauss->weight*Jdet*2.*mu_prime*eps1dotdphij*eps2dotdphii;
+				Ke->values[2*numnodes*(2*i+1)+2*j+1]+=gauss->weight*Jdet*2.*mu_prime*eps2dotdphij*eps2dotdphii;
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixHO(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixHOViscous(element);
+	ElementMatrix* Ke2=CreateKMatrixHOFriction(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixHOFriction(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	if(element->IsFloating() || !element->IsOnBase()) return NULL;
+
+	/*Intermediaries*/
+	int         dim;
+	bool        mainlyfloating;
+	int         migration_style,point1;
+	IssmDouble  alpha2,Jdet,fraction1,fraction2;
+	IssmDouble  gllevelset,phi=1.;
+	IssmDouble *xyz_list_base = NULL;
+	Gauss*      gauss         = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*(dim-1);
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke = element->NewElementMatrix(HOApproximationEnum);
+	IssmDouble*    B  = xNew<IssmDouble>((dim-1)*numdof);
+	IssmDouble*    D  = xNewZeroInit<IssmDouble>((dim-1)*(dim-1));
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->FindParam(&migration_style,GroundinglineMigrationEnum);
+	Input* gllevelset_input = NULL;
+
+	/*build friction object, used later on: */
+	Friction* friction=new Friction(element,2);
+
+	/*Recover portion of element that is grounded*/
+	if(migration_style==SubelementMigrationEnum) phi=element->GetGroundedPortion(xyz_list_base);
+	if(migration_style==SubelementMigration2Enum){
+		gllevelset_input=element->GetInput(MaskGroundediceLevelsetEnum); _assert_(gllevelset_input);
+		element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+		gauss = element->NewGauss(point1,fraction1,fraction2,mainlyfloating,2);
+	}
+	else{
+		gauss=element->NewGaussBase(2);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		friction->GetAlpha2(&alpha2,gauss);
+		if(migration_style==SubelementMigrationEnum) alpha2=phi*alpha2;
+		if(migration_style==SubelementMigration2Enum){
+			gllevelset_input->GetInputValue(&gllevelset, gauss);
+			if(gllevelset<0.) alpha2=0.;
+		}
+
+		this->GetBHOFriction(B,element,dim,xyz_list_base,gauss);
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		for(int i=0;i<dim-1;i++) D[i*(dim-1)+i]=alpha2*gauss->weight*Jdet;
+
+		TripleMultiply(B,dim-1,numdof,1,
+					D,dim-1,dim-1,0,
+					B,dim-1,numdof,0,
+					&Ke->values[0],1);
+	}
+
+	/*Transform Coordinate System*/
+	if(dim==3) element->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	delete friction;
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(D);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixHOViscous(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int         dim,bsize;
+	IssmDouble  viscosity,newviscosity,oldviscosity;
+	IssmDouble  viscosity_overshoot,thickness,Jdet;
+	IssmDouble  D_scalar;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+	if(dim==2) bsize = 2;
+	else       bsize = 5;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*(dim-1);
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix(HOApproximationEnum);
+	IssmDouble*    B      = xNew<IssmDouble>(bsize*numdof);
+	IssmDouble*    Bprime = xNew<IssmDouble>(bsize*numdof);
+	IssmDouble*    D      = xNewZeroInit<IssmDouble>(bsize*bsize);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input    = element->GetInput(VxEnum);       _assert_(vx_input);
+	Input* vxold_input = element->GetInput(VxPicardEnum); _assert_(vxold_input);
+	Input* vy_input    = NULL;
+	Input* vyold_input = NULL;
+	if(dim==3){
+		vy_input=element->GetInput(VyEnum);          _assert_(vy_input);
+		vyold_input=element->GetInput(VyPicardEnum); _assert_(vyold_input);
+	}
+	element->FindParam(&viscosity_overshoot,StressbalanceViscosityOvershootEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGauss(5);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		this->GetBHO(B,element,dim,xyz_list,gauss);
+		this->GetBHOprime(Bprime,element,dim,xyz_list,gauss);
+
+		element->material->ViscosityHO(&viscosity,dim,xyz_list,gauss,vx_input,vy_input);
+		element->material->ViscosityHO(&oldviscosity,dim,xyz_list,gauss,vxold_input,vyold_input);
+
+		newviscosity=viscosity+viscosity_overshoot*(viscosity-oldviscosity);
+		D_scalar=2.*newviscosity*gauss->weight*Jdet;
+		for(int i=0;i<bsize;i++) D[i*bsize+i]=D_scalar;
+
+		TripleMultiply(B,bsize,numdof,1,
+					D,bsize,bsize,0,
+					Bprime,bsize,numdof,0,
+					&Ke->values[0],1);
+	}
+
+	/*Transform Coordinate System*/
+	if(dim==3) element->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(D);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(B);
+	return Ke;
+}/*}}}*/
+#ifdef FSANALYTICAL
+ElementVector* StressbalanceAnalysis::CreatePVectorHO(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int         dim;
+	IssmDouble  x_coord,y_coord,z_coord;
+	IssmDouble  Jdet,forcex,forcey,forcez;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe=element->NewElementVector(HOApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(3);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis, gauss);
+
+		x_coord=element->GetXcoord(xyz_list,gauss);
+		y_coord=element->GetYcoord(xyz_list,gauss);
+		if(dim==3) z_coord=element->GetZcoord(xyz_list,gauss);
+		else z_coord=0.;
+
+		forcex=fx(x_coord,y_coord,z_coord,FSANALYTICAL);
+		forcey=fy(x_coord,y_coord,z_coord,FSANALYTICAL);
+
+		for(int i=0;i<numnodes;i++){
+			pe->values[i*(dim-1)+0]+=forcex*Jdet*gauss->weight*basis[i];
+			pe->values[i*(dim-1)+1]+=forcey*Jdet*gauss->weight*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	if(dim==3) element->TransformLoadVectorCoord(pe,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return pe;
+}/*}}}*/
+#else
+ElementVector* StressbalanceAnalysis::CreatePVectorHO(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorHODrivingStress(element);
+	ElementVector* pe2=CreatePVectorHOFront(element);
+	ElementVector* pe =new ElementVector(pe1,pe2);
+
+	/*clean-up and return*/
+	delete pe1;
+	delete pe2;
+	return pe;
+}/*}}}*/
+#endif
+ElementVector* StressbalanceAnalysis::CreatePVectorHODrivingStress(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int         dim;
+	IssmDouble  Jdet,slope[3];
+	IssmDouble* xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe=element->NewElementVector(HOApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input*     surface_input = element->GetInput(SurfaceEnum);   _assert_(surface_input);
+	IssmDouble rhog = element->GetMaterialParameter(MaterialsRhoIceEnum)*element->GetMaterialParameter(ConstantsGEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(3);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis, gauss);
+		surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			pe->values[i*(dim-1)+0]+=-rhog*slope[0]*Jdet*gauss->weight*basis[i];
+			if(dim==3) pe->values[i*(dim-1)+1]+=-rhog*slope[1]*Jdet*gauss->weight*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	if(dim==3) element->TransformLoadVectorCoord(pe,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorHOFront(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*If no front, return NULL*/
+	if(!element->IsIcefront()) return NULL;
+
+	/*Intermediaries*/
+	int         dim;
+	IssmDouble  Jdet,surface,sealevel,z,water_pressure,ice_pressure;
+	IssmDouble  surface_under_water,base_under_water,pressure;
+	IssmDouble* xyz_list       = NULL;
+	IssmDouble* xyz_list_front = NULL;
+	IssmDouble  normal[3];
+	Gauss*      gauss = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes    = element->GetNumberOfNodes();
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector(HOApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	Input* surface_input = element->GetInput(SurfaceEnum); _assert_(surface_input);
+	Input* sealevel_input       = element->GetInput(SealevelEnum);       _assert_(sealevel_input);
+	IssmDouble rho_water = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	IssmDouble rho_ice   = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble gravity   = element->GetMaterialParameter(ConstantsGEnum);
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetIcefrontCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum);
+	element->NormalSection(&normal[0],xyz_list_front);
+
+	/*Initialize gauss points*/
+	IssmDouble zmax=xyz_list[0*3+(dim-1)]; for(int i=1;i<numvertices;i++) if(xyz_list[i*3+(dim-1)]>zmax) zmax=xyz_list[i*3+(dim-1)];
+	IssmDouble zmin=xyz_list[0*3+(dim-1)]; for(int i=1;i<numvertices;i++) if(xyz_list[i*3+(dim-1)]<zmin) zmin=xyz_list[i*3+(dim-1)];
+	if(zmax>0. && zmin<0.) gauss=element->NewGauss(xyz_list,xyz_list_front,3,10);//refined in vertical because of the sea level discontinuity
+	else                   gauss=element->NewGauss(xyz_list,xyz_list_front,3,3);
+
+	/* Start  looping on the number of gaussian points: */
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+		surface_input->GetInputValue(&surface,gauss);
+		sealevel_input->GetInputValue(&sealevel,gauss);
+		if(dim==3) z=element->GetZcoord(xyz_list,gauss);
+		else       z=element->GetYcoord(xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->JacobianDeterminantSurface(&Jdet,xyz_list_front,gauss);
+
+		water_pressure = rho_water*gravity*min(0.,z-sealevel);//0 if the gaussian point is above water level
+		ice_pressure   = rho_ice*gravity*(surface-z);
+		pressure       = ice_pressure + water_pressure;
+
+		for (int i=0;i<numnodes;i++){
+			pe->values[(dim-1)*i+0]+= pressure*Jdet*gauss->weight*normal[0]*basis[i];
+			if(dim==3) pe->values[(dim-1)*i+1]+= pressure*Jdet*gauss->weight*normal[1]*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	if(dim==3)element->TransformLoadVectorCoord(pe,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_front);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           StressbalanceAnalysis::GetBHO(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3 B4 B5 B6] where Bi is of size 5*NDOF2. 
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by: 
+	 *                   3D                        2D
+	 *
+	 *       Bi=[ dh/dx          0      ]  Bi=[ dh/dx]
+	 *          [   0           dh/dy   ]     [ dh/dy]
+	 *          [ 1/2*dh/dy  1/2*dh/dx  ]     
+	 *          [ 1/2*dh/dz      0      ]    
+	 *          [  0         1/2*dh/dz  ]   
+	 * where h is the interpolation function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 5x(NDOF2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(dim*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B: */
+	if(dim==2){
+		for(int i=0;i<numnodes;i++){
+			B[numnodes*0+i] = dbasis[0*numnodes+i];
+			B[numnodes*1+i] = .5*dbasis[1*numnodes+i];
+		}
+	}
+	else{
+		for(int i=0;i<numnodes;i++){
+			B[2*numnodes*0+2*i+0] = dbasis[0*numnodes+i];
+			B[2*numnodes*0+2*i+1] = 0.;
+			B[2*numnodes*1+2*i+0] = 0.;
+			B[2*numnodes*1+2*i+1] = dbasis[1*numnodes+i];
+			B[2*numnodes*2+2*i+0] = .5*dbasis[1*numnodes+i];
+			B[2*numnodes*2+2*i+1] = .5*dbasis[0*numnodes+i];
+			B[2*numnodes*3+2*i+0] = .5*dbasis[2*numnodes+i];
+			B[2*numnodes*3+2*i+1] = 0.;
+			B[2*numnodes*4+2*i+0] = 0.;
+			B[2*numnodes*4+2*i+1] = .5*dbasis[2*numnodes+i];
+		}
+	}
+
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBHOFriction(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3] where Bi is square and of size 2. 
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by: 
+	 *                       3D           2D
+	 *                 Bi=[ N   0 ]    Bi=N
+	 *                    [ 0   N ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 2 x (numdof*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* basis=xNew<IssmDouble>(numnodes);
+	element->NodalFunctions(basis,gauss);
+
+	/*Build L: */
+	if(dim==3){
+		for(int i=0;i<numnodes;i++){
+			B[2*numnodes*0+2*i+0] = basis[i];
+			B[2*numnodes*0+2*i+1] = 0.;
+			B[2*numnodes*1+2*i+0] = 0.;
+			B[2*numnodes*1+2*i+1] = basis[i];
+		}
+	}
+	else{
+		for(int i=0;i<numnodes;i++){
+			B[i] = basis[i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBHOprime(IssmDouble* Bprime,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B'  matrix. B'=[B1' B2' B3'] where Bi' is of size 3*NDOF2. 
+	 * For node i, Bi' can be expressed in the actual coordinate system
+	 * by: 
+	 *                          3D                      2D
+	 *       Bi_prime=[ 2*dN/dx    dN/dy ] Bi_prime=[ 2*dN/dx ]
+	 *                [   dN/dx  2*dN/dy ]          [   dN/dy ]
+	 *                [   dN/dy    dN/dx ]  
+	 * where hNis the finiteelement function for node i.
+	 *
+	 * We assume B' has been allocated already, of size: 3x(NDOF2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(dim*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B': */
+	if(dim==3){
+		for(int i=0;i<numnodes;i++){
+			Bprime[2*numnodes*0+2*i+0] = 2.*dbasis[0*numnodes+i];
+			Bprime[2*numnodes*0+2*i+1] = dbasis[1*numnodes+i];
+			Bprime[2*numnodes*1+2*i+0] = dbasis[0*numnodes+i];
+			Bprime[2*numnodes*1+2*i+1] = 2.*dbasis[1*numnodes+i];
+			Bprime[2*numnodes*2+2*i+0] = dbasis[1*numnodes+i];
+			Bprime[2*numnodes*2+2*i+1] = dbasis[0*numnodes+i];
+			Bprime[2*numnodes*3+2*i+0] = dbasis[2*numnodes+i];
+			Bprime[2*numnodes*3+2*i+1] = 0.;
+			Bprime[2*numnodes*4+2*i+0] = 0.;
+			Bprime[2*numnodes*4+2*i+1] = dbasis[2*numnodes+i];
+		}
+	}
+	else{
+		for(int i=0;i<numnodes;i++){
+			Bprime[numnodes*0+i] = 2.*dbasis[0*numnodes+i];
+			Bprime[numnodes*1+i] = dbasis[1*numnodes+i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolutionHO(IssmDouble* solution,Element* element){/*{{{*/
+
+	int         i,domaintype,dim;
+	int*        doflist=NULL;
+	IssmDouble* xyz_list=NULL;
+
+	/*Deal with pressure first*/
+	int numvertices = element->GetNumberOfVertices();
+	IssmDouble* pressure  = xNew<IssmDouble>(numvertices);
+	IssmDouble* surface   = xNew<IssmDouble>(numvertices);
+
+	element->FindParam(&domaintype,DomainTypeEnum);
+	IssmDouble rho_ice =element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble g       =element->GetMaterialParameter(ConstantsGEnum);
+	switch(domaintype){
+		case Domain3DEnum:
+			element->GetVerticesCoordinates(&xyz_list);
+			element->GetInputListOnVertices(surface,SurfaceEnum);
+			for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
+			dim=3;
+			break;
+		case Domain2DverticalEnum:
+			element->GetVerticesCoordinates(&xyz_list);
+			element->GetInputListOnVertices(surface,SurfaceEnum);
+			for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+1]);
+			dim=2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+	element->AddInput(PressureEnum,pressure,P1Enum);
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(surface);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*(dim-1);
+
+	/*Fetch dof list and allocate solution vectors*/
+	element->GetDofList(&doflist,HOApproximationEnum,GsetEnum);
+	IssmDouble* values = xNew<IssmDouble>(numdof);
+	IssmDouble* vx     = xNew<IssmDouble>(numnodes);
+	IssmDouble* vy     = xNew<IssmDouble>(numnodes);
+	IssmDouble* vz     = xNew<IssmDouble>(numnodes);
+	IssmDouble* vel    = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
+
+	/*Transform solution in Cartesian Space*/
+	if(dim==3) element->TransformSolutionCoord(&values[0],XYEnum);
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+	for(i=0;i<numnodes;i++){
+		vx[i]=values[i*(dim-1)+0];
+		if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector");
+		if(dim==3){
+			vy[i]=values[i*(dim-1)+1];
+			if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector");
+			if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector");
+		}
+	}
+
+	/*Get Vz and compute vel*/
+	if(dim==3){
+		element->GetInputListOnNodes(&vz[0],VzEnum,0.);
+		for(i=0;i<numnodes;i++) vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i] + vz[i]*vz[i]);
+	}
+	else{
+		element->GetInputListOnNodes(&vy[0],VyEnum,0.);
+		for(i=0;i<numnodes;i++) vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i]);
+	}
+
+	/*Now, we have to move the previous Vx and Vy inputs  to old 
+	 * status, otherwise, we'll wipe them off: */
+	element->InputChangeName(VxEnum,VxPicardEnum);
+	if(dim==3)element->InputChangeName(VyEnum,VyPicardEnum);
+
+	/*Add vx and vy as inputs to the element: */
+	element->AddInput(VxEnum,vx,element->GetElementType());
+	if(dim==3)element->AddInput(VyEnum,vy,element->GetElementType());
+	element->AddInput(VelEnum,vel,element->GetElementType());
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(vel);
+	xDelete<IssmDouble>(vz);
+	xDelete<IssmDouble>(vy);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<int>(doflist);
+}/*}}}*/
+
+/*FS*/
+ElementVector* StressbalanceAnalysis::CreateDVectorFS(Element* element){/*{{{*/
+
+	int dim;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+
+	/*Initialize output vector*/
+	ElementVector* de = element->NewElementVector(FSvelocityEnum);
+
+	for(int i=0;i<vnumnodes;i++){
+		for(int j=0;j<dim;j++) de->values[i*dim+j]=VelocityEnum;
+	}
+	for(int i=0;i<pnumnodes;i++){
+		de->values[vnumnodes*dim+i]=PressureEnum;
+	}
+
+	return de;
+
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateJacobianMatrixFS(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	int        i,j;
+	IssmDouble Jdet;
+	IssmDouble eps1dotdphii,eps1dotdphij;
+	IssmDouble eps2dotdphii,eps2dotdphij;
+	IssmDouble eps3dotdphii,eps3dotdphij;
+	IssmDouble mu_prime;
+	IssmDouble epsilon[6]; /* epsilon=[exx,eyy,ezz,exy,exz,eyz];*/
+	IssmDouble eps1[3],eps2[3],eps3[3];
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numdof    = vnumnodes*NDOF3 + pnumnodes*NDOF1;
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	for(i=0;i<vnumnodes;i++) cs_list[i]           = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Initialize Element matrix, vectors and Gaussian points*/
+	ElementMatrix* Ke=this->CreateKMatrixFS(element); //Initialize Jacobian with regular FS (first part of the Gateau derivative)
+	IssmDouble*    dbasis = xNew<IssmDouble>(3*vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input = element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input = element->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input = element->GetInput(VzEnum); _assert_(vz_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGauss(5);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsDerivativesVelocity(dbasis,xyz_list,gauss);
+
+		//element->StrainRateFS(&epsilon[0],xyz_list,gauss,vx_input,vy_input,vz_input);
+		//eps1[0]=epsilon[0];   eps2[0]=epsilon[3];   eps3[0]=epsilon[4];
+		//eps1[1]=epsilon[3];   eps2[1]=epsilon[1];   eps3[1]=epsilon[5];
+		//eps1[2]=epsilon[4];   eps2[2]=epsilon[5];   eps3[2]=epsilon[2];
+		element->StrainRateHO(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+		eps1[0]=epsilon[0];   eps2[0]=epsilon[2];   eps3[0]=epsilon[3];
+		eps1[1]=epsilon[2];   eps2[1]=epsilon[1];   eps3[1]=epsilon[4];
+		eps1[2]=epsilon[3];   eps2[2]=epsilon[4];   eps3[2]= -epsilon[0] -epsilon[1];
+		element->material->ViscosityFSDerivativeEpsSquare(&mu_prime,&epsilon[0]);
+
+		for(i=0;i<vnumnodes;i++){
+			for(j=0;j<vnumnodes;j++){
+				eps1dotdphii=eps1[0]*dbasis[0*vnumnodes+i]+eps1[1]*dbasis[1*vnumnodes+i]+eps1[2]*dbasis[2*vnumnodes+i];
+				eps1dotdphij=eps1[0]*dbasis[0*vnumnodes+j]+eps1[1]*dbasis[1*vnumnodes+j]+eps1[2]*dbasis[2*vnumnodes+j];
+				eps2dotdphii=eps2[0]*dbasis[0*vnumnodes+i]+eps2[1]*dbasis[1*vnumnodes+i]+eps2[2]*dbasis[2*vnumnodes+i];
+				eps2dotdphij=eps2[0]*dbasis[0*vnumnodes+j]+eps2[1]*dbasis[1*vnumnodes+j]+eps2[2]*dbasis[2*vnumnodes+j];
+				eps3dotdphii=eps3[0]*dbasis[0*vnumnodes+i]+eps3[1]*dbasis[1*vnumnodes+i]+eps3[2]*dbasis[2*vnumnodes+i];
+				eps3dotdphij=eps3[0]*dbasis[0*vnumnodes+j]+eps3[1]*dbasis[1*vnumnodes+j]+eps3[2]*dbasis[2*vnumnodes+j];
+
+				Ke->values[numdof*(3*i+0)+3*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps1dotdphii;
+				Ke->values[numdof*(3*i+0)+3*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps1dotdphii;
+				Ke->values[numdof*(3*i+0)+3*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps1dotdphii;
+
+				Ke->values[numdof*(3*i+1)+3*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps2dotdphii;
+				Ke->values[numdof*(3*i+1)+3*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps2dotdphii;
+				Ke->values[numdof*(3*i+1)+3*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps2dotdphii;
+
+				Ke->values[numdof*(3*i+2)+3*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps3dotdphii;
+				Ke->values[numdof*(3*i+2)+3*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps3dotdphii;
+				Ke->values[numdof*(3*i+2)+3*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps3dotdphii;
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<int>(cs_list);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixFS(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Get type of algorithm*/
+	int fe_FS;
+	element->FindParam(&fe_FS,FlowequationFeFSEnum);
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=NULL;
+	if(fe_FS==XTaylorHoodEnum)
+	 Ke1=CreateKMatrixFSViscousXTH(element);
+	else if(fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum)
+	 Ke1=CreateKMatrixFSViscousLA(element);
+	else
+	 Ke1=CreateKMatrixFSViscous(element);
+
+	ElementMatrix* Ke2=CreateKMatrixFSFriction(element);
+	ElementMatrix* Ke3=CreateKMatrixFSShelf(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2,Ke3);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	delete Ke3;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixFSShelf(Element* element){/*{{{*/
+
+	if(!element->IsFloating() || !element->IsOnBase()) return NULL;
+
+	/*If on not water or not FS, skip stiffness: */
+	int approximation,shelf_dampening;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation!=FSApproximationEnum && approximation!=SSAFSApproximationEnum && approximation!=HOFSApproximationEnum) return NULL;
+	element->FindParam(&shelf_dampening,StressbalanceShelfDampeningEnum);
+	if(shelf_dampening==0) return NULL;
+
+	/*Intermediaries*/
+	bool        mainlyfloating;
+	int         j,i,dim;
+	IssmDouble  Jdet,slope2,scalar,dt;
+	IssmDouble  slope[3];
+	IssmDouble *xyz_list_base = NULL;
+	IssmDouble *xyz_list      = NULL;
+	Gauss*      gauss         = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numdof    = vnumnodes*dim + pnumnodes;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke = element->NewElementMatrix(FSvelocityEnum);
+	IssmDouble*    vbasis = xNew<IssmDouble>(vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	if(dt==0)   dt=1.e+5;
+	IssmDouble  rho_water     = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	IssmDouble  gravity       = element->GetMaterialParameter(ConstantsGEnum);
+	Input*      surface_input = element->GetInput(SurfaceEnum); _assert_(surface_input);
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=element->NewGaussBase(3);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+		element->NodalFunctionsVelocity(vbasis,gauss);
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		if(dim==2) slope2=slope[0]*slope[0];
+		else if(dim==3) slope2=slope[0]*slope[0]+slope[1]*slope[1];
+		scalar  = rho_water*gravity*sqrt(1+slope2)*gauss->weight*Jdet*dt; 
+		for(i=0;i<vnumnodes;i++){
+			for(j=0;j<vnumnodes;j++){
+				Ke->values[numdof*((i+1)*dim-1)+(j+1)*dim-1] += scalar*vbasis[i]*vbasis[j];
+			}
+		}
+	}
+
+	/*DO NOT Transform Coordinate System: this stiffness matrix is already expressed in tangential coordinates*/
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(vbasis);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixFSViscous(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         i,dim,epssize;
+	IssmDouble  viscosity,FSreconditioning,Jdet;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+	if(dim==2) epssize = 3;
+	else       epssize = 6;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numdof    = vnumnodes*dim + pnumnodes;
+	int bsize     = epssize + 2;
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix(FSvelocityEnum);
+	IssmDouble*    B      = xNew<IssmDouble>(bsize*numdof);
+	IssmDouble*    Bprime = xNew<IssmDouble>(bsize*numdof);
+	IssmDouble*    D      = xNewZeroInit<IssmDouble>(bsize*bsize);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	Input* vx_input=element->GetInput(VxEnum);     _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum);     _assert_(vy_input);
+	Input* vz_input;
+	if(dim==3){vz_input=element->GetInput(VzEnum); _assert_(vz_input);}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGauss(5);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		this->GetBFS(B,element,dim,xyz_list,gauss);
+		this->GetBFSprime(Bprime,element,dim,xyz_list,gauss);
+
+		element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+		for(i=0;i<epssize;i++)     D[i*bsize+i] = + 2.*viscosity*gauss->weight*Jdet;
+		for(i=epssize;i<bsize;i++) D[i*bsize+i] = - FSreconditioning*gauss->weight*Jdet;
+
+		TripleMultiply(B,bsize,numdof,1,
+					D,bsize,bsize,0,
+					Bprime,bsize,numdof,0,
+					&Ke->values[0],1);
+	}
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(D);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(B);
+	xDelete<int>(cs_list);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixFSViscousLA(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         i,dim,epssize;
+	IssmDouble  r,rl,Jdet,viscosity,DU,DUl;
+	IssmDouble	normal[3];
+	IssmDouble *xyz_list = NULL;
+	IssmDouble *xyz_list_base = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+	element->FindParam(&r,AugmentedLagrangianREnum);
+	if(dim==2) epssize = 3;
+	else       epssize = 6;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->GetNumberOfNodes(P1Enum);
+	int lnumnodes = element->GetNumberOfNodes(P2Enum);
+	int numdof    = vnumnodes*dim;
+	int pnumdof   = pnumnodes;
+	int lnumdof   = lnumnodes;
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke       = element->NewElementMatrix(FSvelocityEnum);
+	IssmDouble*    B        = xNew<IssmDouble>(epssize*numdof);
+	IssmDouble*    Bprime   = xNew<IssmDouble>(epssize*numdof);
+	IssmDouble*    BtBUzawa = xNewZeroInit<IssmDouble>(numdof*pnumdof);
+	IssmDouble*    BU       = xNew<IssmDouble>(pnumdof);
+	IssmDouble*    BprimeU  = xNew<IssmDouble>(numdof);
+	IssmDouble*    D        = xNewZeroInit<IssmDouble>(epssize*epssize);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input = element->GetInput(VxEnum);     _assert_(vx_input);
+	Input* vy_input = element->GetInput(VyEnum);     _assert_(vy_input);
+	Input* vz_input = NULL;
+	if(dim==3){vz_input = element->GetInput(VzEnum); _assert_(vz_input);}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGauss(5);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		this->GetBFSvel(B,element,dim,xyz_list,gauss);
+		this->GetBFSprimevel(Bprime,element,dim,xyz_list,gauss);
+
+		element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+		for(i=0;i<epssize;i++)   D[i*epssize+i] = 2*viscosity*gauss->weight*Jdet;
+
+		TripleMultiply(B,epssize,numdof,1,
+					D,epssize,epssize,0,
+					Bprime,epssize,numdof,0,
+					&Ke->values[0],1);
+
+		this->GetBFSUzawa(BU,element,dim,xyz_list,gauss);
+		this->GetBFSprimeUzawa(BprimeU,element,dim,xyz_list,gauss);
+
+		DU = gauss->weight*Jdet*sqrt(r);
+
+		TripleMultiply(BU,1,pnumdof,1,
+					&DU,1,1,0,
+					BprimeU,1,numdof,0,
+					BtBUzawa,1);
+	}
+
+	/*The pressure augmentation should not be transformed*/
+	MatrixMultiply(BtBUzawa,pnumdof,numdof,1,
+				BtBUzawa,pnumdof,numdof,0,
+				&Ke->values[0],1);
+
+	if(element->IsOnBase() && 0){ 
+		element->FindParam(&rl,AugmentedLagrangianRlambdaEnum);
+		element->GetVerticesCoordinatesBase(&xyz_list_base);
+		element->NormalBase(&normal[0],xyz_list_base);
+
+		IssmDouble* Dlambda  = xNewZeroInit<IssmDouble>(dim*dim);
+		IssmDouble* C        = xNewZeroInit<IssmDouble>(dim*lnumdof);
+		IssmDouble* Cprime   = xNewZeroInit<IssmDouble>(dim*numdof);
+		IssmDouble* CtCUzawa = xNewZeroInit<IssmDouble>(numdof*lnumdof);
+
+		delete gauss;
+		gauss = element->NewGaussBase(5);
+		for(int ig=gauss->begin();ig<gauss->end();ig++){
+			gauss->GaussPoint(ig);
+
+			element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+			this->GetCFS(C,element,dim,xyz_list,gauss);
+			this->GetCFSprime(Cprime,element,dim,xyz_list,gauss);
+			for(i=0;i<dim;i++) Dlambda[i*dim+i] = gauss->weight*Jdet*sqrt(normal[i]*normal[i])*sqrt(rl);
+			TripleMultiply(C,dim,lnumdof,1,
+						Dlambda,dim,dim,0,
+						Cprime,dim,numdof,0,
+						CtCUzawa,1);
+		}
+
+		/*The sigma naugmentation should not be transformed*/
+		MatrixMultiply(CtCUzawa,lnumdof,numdof,1,
+					CtCUzawa,lnumdof,numdof,0,
+					&Ke->values[0],1);
+
+		/*Delete base part*/
+		xDelete<IssmDouble>(Dlambda);
+		xDelete<IssmDouble>(C);
+		xDelete<IssmDouble>(Cprime);
+		xDelete<IssmDouble>(CtCUzawa);
+		xDelete<IssmDouble>(xyz_list_base);
+	}
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(D);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(BprimeU);
+	xDelete<IssmDouble>(BU);
+	xDelete<IssmDouble>(BtBUzawa);
+	xDelete<int>(cs_list);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixFSViscousXTH(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         i,dim,epssize;
+	IssmDouble  r,FSreconditioning,Jdet;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+	element->FindParam(&r,AugmentedLagrangianREnum);
+	if(dim==2) epssize = 3;
+	else       epssize = 6;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numdof    = vnumnodes*dim + pnumnodes;
+	int bsize     = epssize + 2;
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix(FSvelocityEnum);
+	IssmDouble*    B      = xNew<IssmDouble>(bsize*numdof);
+	IssmDouble*    Bprime = xNew<IssmDouble>(bsize*numdof);
+	IssmDouble*    D      = xNewZeroInit<IssmDouble>(bsize*bsize);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	Input* vx_input=element->GetInput(VxEnum);     _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum);     _assert_(vy_input);
+	Input* vz_input;
+	if(dim==3){vz_input=element->GetInput(VzEnum); _assert_(vz_input);}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGauss(5);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		this->GetBFS(B,element,dim,xyz_list,gauss);
+		this->GetBFSprime(Bprime,element,dim,xyz_list,gauss);
+
+		for(i=0;i<epssize;i++)     D[i*bsize+i] = + r*gauss->weight*Jdet;
+		for(i=epssize;i<bsize;i++) D[i*bsize+i] = - FSreconditioning*gauss->weight*Jdet;
+
+		TripleMultiply(B,bsize,numdof,1,
+					D,bsize,bsize,0,
+					Bprime,bsize,numdof,0,
+					&Ke->values[0],1);
+	}
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(D);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(B);
+	xDelete<int>(cs_list);
+	return Ke;
+}/*}}}*/
+#ifdef FSANALYTICAL
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixFSFriction(Element* element){/*{{{*/
+
+	if(element->IsFloating() || !element->IsOnBase()) return NULL;
+
+	/*If on water or not FS, skip stiffness: */
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation!=FSApproximationEnum && approximation!=SSAFSApproximationEnum && approximation!=HOFSApproximationEnum) return NULL;
+
+	/*Intermediaries*/
+	int         i,dim;
+	IssmDouble  alpha2,Jdet;
+	IssmDouble  x_coord,y_coord,z_coord;
+	IssmDouble *xyz_list_base = NULL;
+	IssmDouble *xyz_list      = NULL;
+	Gauss*      gauss         = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numdof    = vnumnodes*dim + pnumnodes;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke = element->NewElementMatrix(FSvelocityEnum);
+	IssmDouble*    B  = xNew<IssmDouble>(dim*numdof);
+	IssmDouble*    D  = xNewZeroInit<IssmDouble>(dim*dim);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input         = element->GetInput(VxEnum);      _assert_(vx_input);
+	Input* vy_input         = element->GetInput(VyEnum);      _assert_(vy_input);
+	Input* vz_input         = NULL;
+	if(dim==3){    vz_input = element->GetInput(VzEnum);      _assert_(vz_input);}
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=element->NewGaussBase(10);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		x_coord=element->GetXcoord(xyz_list,gauss);
+		y_coord=element->GetYcoord(xyz_list,gauss);
+		if(dim==3) z_coord=element->GetZcoord(xyz_list,gauss);
+		else z_coord=0.;
+
+		alpha2=alpha(x_coord,y_coord,z_coord,FSANALYTICAL);
+
+		this->GetBFSFriction(B,element,dim,xyz_list_base,gauss);
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		for(int i=0;i<dim;i++) D[i*dim+i] = alpha2*gauss->weight*Jdet; //taub_x = -alpha2 v_x (same for y)
+
+		TripleMultiply(B,dim,numdof,1,
+					D,dim,dim,0,
+					B,dim,numdof,0,
+					&Ke->values[0],1);
+	}
+
+	/*DO NOT Transform Coordinate System: this stiffness matrix is already expressed in tangential coordinates*/
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(D);
+	return Ke;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorFS(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	ElementVector* pe = NULL;
+
+	ElementVector* pe1=CreatePVectorFSViscous(element);
+	ElementVector* pe2=CreatePVectorFSFriction(element);
+	ElementVector* pe3=CreatePVectorFSStress(element);
+	pe =new ElementVector(pe1,pe2,pe3);
+	delete pe1;
+	delete pe2;
+	delete pe3;
+
+	/*clean-up and return*/
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorFSFriction(Element* element){/*{{{*/
+
+	if(!element->IsOnBase()) return NULL;
+
+	/*Intermediaries*/
+	int         dim;
+	IssmDouble  alpha2,Jdet;
+	IssmDouble  bed_normal[3];
+	IssmDouble *xyz_list_base = NULL;
+	Gauss*      gauss         = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+
+	/*Initialize Element matrix and vectors*/
+	ElementVector* pe = element->NewElementVector(FSvelocityEnum);
+	IssmDouble*    vbasis = xNew<IssmDouble>(vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	Input*  alpha2_input=element->GetInput(FrictionCoefficientEnum); _assert_(alpha2_input);
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=element->NewGaussBase(3);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		alpha2_input->GetInputValue(&alpha2, gauss);
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctionsVelocity(vbasis,gauss);
+		element->NormalBase(&bed_normal[0],xyz_list_base);
+
+		for(int i=0;i<vnumnodes;i++){
+			pe->values[i*dim+0] += - alpha2*gauss->weight*Jdet*vbasis[i]*bed_normal[1];
+			pe->values[i*dim+1] += alpha2*gauss->weight*Jdet*vbasis[i]*bed_normal[0];
+			if(dim==3){
+				pe->values[i*dim+2]+= alpha2*gauss->weight*Jdet*vbasis[i];
+			}
+		}
+
+	}
+
+	/*DO NOT Transform Coordinate System: this stiffness matrix is already expressed in tangential coordinates*/
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(vbasis);
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorFSStress(Element* element){/*{{{*/
+
+	if(!element->IsOnBase()) return NULL;
+
+	/*Intermediaries*/
+	int         dim;
+	IssmDouble  sigmann,sigmant,Jdet,bedslope,beta;
+	IssmDouble *xyz_list_base = NULL;
+	Gauss*      gauss         = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+
+	/*Initialize Element matrix and vectors*/
+	ElementVector* pe = element->NewElementVector(FSvelocityEnum);
+	IssmDouble*    vbasis = xNew<IssmDouble>(vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	Input*  sigmann_input=element->GetInput(VzEnum); _assert_(sigmann_input);
+	Input*  sigmant_input=element->GetInput(TemperatureEnum); _assert_(sigmant_input);
+	Input*  bedslope_input=element->GetInput(BedSlopeXEnum);     _assert_(bedslope_input);
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=element->NewGaussBase(3);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		sigmann_input->GetInputValue(&sigmann, gauss);
+		sigmant_input->GetInputValue(&sigmant, gauss);
+		bedslope_input->GetInputValue(&bedslope, gauss);
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctionsVelocity(vbasis,gauss);
+
+		beta=sqrt(1+bedslope*bedslope);
+		for(int i=0;i<vnumnodes;i++){
+			pe->values[i*dim+0] += - (1./beta)*(-bedslope*sigmann + sigmant)*gauss->weight*Jdet*vbasis[i];
+			pe->values[i*dim+1] += - (1./beta)*(sigmann + bedslope*sigmant)*gauss->weight*Jdet*vbasis[i];
+			if(dim==3){
+				//pe->values[i*dim+2]+= alpha2*gauss->weight*Jdet*vbasis[i];
+				_error_("3d not supported yet");
+			}
+		}
+
+	}
+
+	/*DO NOT Transform Coordinate System: this stiffness matrix is already expressed in tangential coordinates*/
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(vbasis);
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorFSViscous(Element* element){/*{{{*/
+
+	int         i,dim,fe_FS;
+	IssmDouble  x_coord,y_coord,z_coord;
+	IssmDouble  Jdet,forcex,forcey,forcez;
+	IssmDouble *xyz_list = NULL;
+
+	element->FindParam(&fe_FS,FlowequationFeFSEnum);
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Initialize vectors*/
+	ElementVector* pe     = element->NewElementVector(FSvelocityEnum);
+	IssmDouble*    vbasis = xNew<IssmDouble>(vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(5);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsVelocity(vbasis,gauss);
+
+		x_coord=element->GetXcoord(xyz_list,gauss);
+		y_coord=element->GetYcoord(xyz_list,gauss);
+		if(dim==3) z_coord=element->GetZcoord(xyz_list,gauss);
+		else z_coord=0.;
+
+		forcex=fx(x_coord,y_coord,z_coord,FSANALYTICAL);
+		forcey=fy(x_coord,y_coord,z_coord,FSANALYTICAL);
+		forcez=fz(x_coord,y_coord,z_coord,FSANALYTICAL);
+
+		for(i=0;i<vnumnodes;i++){
+			pe->values[i*dim+0] += forcex *Jdet*gauss->weight*vbasis[i];
+			pe->values[i*dim+1] += forcey *Jdet*gauss->weight*vbasis[i];
+			if(dim==3) pe->values[i*dim+2] += forcez *Jdet*gauss->weight*vbasis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<int>(cs_list);
+	xDelete<IssmDouble>(vbasis);
+	xDelete<IssmDouble>(xyz_list);
+	if(fe_FS==XTaylorHoodEnum){
+		ElementVector* pe2=CreatePVectorFSViscousXTH(element);
+		ElementVector* pe3 = new ElementVector(pe,pe2);
+		delete pe;
+		delete pe2;
+		return pe3;
+	}
+	else if(fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum){
+		ElementVector* pe2=CreatePVectorFSViscousLA(element);
+		ElementVector* pe3 = new ElementVector(pe,pe2);
+		delete pe;
+		delete pe2;
+		return pe3;
+	}
+	return pe;
+}/*}}}*/
+#else
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixFSFriction(Element* element){/*{{{*/
+
+	if(element->IsFloating() || !element->IsOnBase()) return NULL;
+
+	/*If on water or not FS, skip stiffness: */
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation!=FSApproximationEnum && approximation!=SSAFSApproximationEnum && approximation!=HOFSApproximationEnum) return NULL;
+
+	/*Intermediaries*/
+	bool        mainlyfloating;
+	int         dim,domaintype;
+	int         migration_style,point1;
+	IssmDouble  alpha2,Jdet,fraction1,fraction2;
+	IssmDouble  gllevelset,phi=1.;
+	IssmDouble *xyz_list_base = NULL;
+	Gauss*      gauss         = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numdof    = vnumnodes*dim + pnumnodes;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke = element->NewElementMatrix(FSvelocityEnum);
+	IssmDouble*    B  = xNew<IssmDouble>(dim*numdof);
+	IssmDouble*    D  = xNewZeroInit<IssmDouble>(dim*dim);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->FindParam(&migration_style,GroundinglineMigrationEnum);
+	Input* gllevelset_input = NULL;
+
+	/*build friction object, used later on: */
+	Friction* friction=new Friction(element,dim==3?3:1);
+
+	/*Recover portion of element that is grounded*/
+	if(migration_style==SubelementMigrationEnum) phi=element->GetGroundedPortion(xyz_list_base);
+	if(migration_style==SubelementMigration2Enum){
+		if(domaintype==Domain2DverticalEnum) _error_("Subelement Migration 2 not implemented yet for Flowline");
+		gllevelset_input=element->GetInput(MaskGroundediceLevelsetEnum); _assert_(gllevelset_input);
+		element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+		//gauss = element->NewGauss(point1,fraction1,fraction2,mainlyfloating,2);
+		gauss=element->NewGaussBase(3);
+	}
+	else{
+		gauss=element->NewGaussBase(3);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		friction->GetAlpha2(&alpha2,gauss);
+		if(migration_style==SubelementMigrationEnum) alpha2=phi*alpha2;
+		if(migration_style==SubelementMigration2Enum){
+			gllevelset_input->GetInputValue(&gllevelset, gauss);
+			if(gllevelset<0.) alpha2=0.;
+		}
+
+		this->GetBFSFriction(B,element,dim,xyz_list_base,gauss);
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		for(int i=0;i<dim;i++) D[i*dim+i] = alpha2*gauss->weight*Jdet; //taub_x = -alpha2 v_x (same for y)
+
+		TripleMultiply(B,dim,numdof,1,
+					D,dim,dim,0,
+					B,dim,numdof,0,
+					&Ke->values[0],1);
+	}
+
+	/*DO NOT Transform Coordinate System: this stiffness matrix is already expressed in tangential coordinates*/
+
+	/*Clean up and return*/
+	delete gauss;
+	delete friction;
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(D);
+	return Ke;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorFS(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	ElementVector* pe = NULL;
+	int fe_FS;
+	element->FindParam(&fe_FS,FlowequationFeFSEnum);
+
+	if(fe_FS==XTaylorHoodEnum){
+		ElementVector* pe1=CreatePVectorFSViscous(element);
+		ElementVector* pe2=CreatePVectorFSShelf(element);
+		ElementVector* pe3=CreatePVectorFSFront(element);
+		ElementVector* petemp =new ElementVector(pe1,pe2,pe3);
+		ElementVector* pe4=CreatePVectorFSViscousXTH(element);
+		pe = new ElementVector(petemp,pe4);
+		delete pe1;
+		delete pe2;
+		delete pe3;
+		delete petemp;
+		delete pe4;
+	}
+	else if(fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum){
+		ElementVector* pe1=CreatePVectorFSViscous(element);
+		ElementVector* pe2=CreatePVectorFSShelf(element);
+		ElementVector* pe3=CreatePVectorFSFront(element);
+		ElementVector* petemp =new ElementVector(pe1,pe2,pe3);
+		ElementVector* pe4=CreatePVectorFSViscousLA(element);
+		pe = new ElementVector(petemp,pe4);
+		delete pe1;
+		delete pe2;
+		delete pe3;
+		delete petemp;
+		delete pe4;
+	}
+	else{
+		ElementVector* pe1=CreatePVectorFSViscous(element);
+		ElementVector* pe2=CreatePVectorFSShelf(element);
+		ElementVector* pe3=CreatePVectorFSFront(element);
+		pe =new ElementVector(pe1,pe2,pe3);
+		delete pe1;
+		delete pe2;
+		delete pe3;
+	}
+
+	/*clean-up and return*/
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorFSViscous(Element* element){/*{{{*/
+
+	int         i,dim;
+	IssmDouble  Jdet,forcex,forcey,forcez;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Initialize vectors*/
+	ElementVector* pe     = element->NewElementVector(FSvelocityEnum);
+	IssmDouble*    vbasis = xNew<IssmDouble>(vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	IssmDouble  rho_ice =element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble  gravity =element->GetMaterialParameter(ConstantsGEnum);
+	Input*      loadingforcex_input=element->GetInput(LoadingforceXEnum);  _assert_(loadingforcex_input);
+	Input*      loadingforcey_input=element->GetInput(LoadingforceYEnum);  _assert_(loadingforcey_input);
+	Input*      loadingforcez_input=NULL;
+	if(dim==3){
+		loadingforcez_input=element->GetInput(LoadingforceZEnum);  _assert_(loadingforcez_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(5);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsVelocity(vbasis,gauss);
+
+		loadingforcex_input->GetInputValue(&forcex,gauss);
+		loadingforcey_input->GetInputValue(&forcey,gauss);
+		if(dim==3) loadingforcez_input->GetInputValue(&forcez,gauss);
+
+		for(i=0;i<vnumnodes;i++){
+			pe->values[i*dim+0] += +rho_ice*forcex *Jdet*gauss->weight*vbasis[i];
+			pe->values[i*dim+1] += +rho_ice*forcey *Jdet*gauss->weight*vbasis[i];
+			if(dim==3){
+				pe->values[i*dim+2] += +rho_ice*forcez*Jdet*gauss->weight*vbasis[i];
+				pe->values[i*dim+2] += -rho_ice*gravity*Jdet*gauss->weight*vbasis[i];
+			}
+			else{
+				pe->values[i*dim+1] += -rho_ice*gravity*Jdet*gauss->weight*vbasis[i];
+			}
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<int>(cs_list);
+	xDelete<IssmDouble>(vbasis);
+	xDelete<IssmDouble>(xyz_list);
+	return pe;
+}/*}}}*/
+#endif
+ElementVector* StressbalanceAnalysis::CreatePVectorFSFront(Element* element){/*{{{*/
+
+	/*If no front, return NULL*/
+	if(!element->IsIcefront()) return NULL;
+
+	/*Intermediaries*/
+	int         i,dim;
+	IssmDouble  Jdet,pressure,surface,sealevel,z;
+	IssmDouble	normal[3];
+	IssmDouble *xyz_list       = NULL;
+	IssmDouble *xyz_list_front = NULL;
+	Gauss      *gauss          = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes   = element->NumberofNodesVelocity();
+	int pnumnodes   = element->NumberofNodesPressure();
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Initialize vectors*/
+	ElementVector* pe     = element->NewElementVector(FSvelocityEnum);
+	IssmDouble*    vbasis = xNew<IssmDouble>(vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetIcefrontCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum);
+	element->NormalSection(&normal[0],xyz_list_front);
+	Input* surface_input  = element->GetInput(SurfaceEnum); _assert_(surface_input);
+	Input* sealevel_input       = element->GetInput(SealevelEnum);       _assert_(sealevel_input);
+	IssmDouble  rho_water = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	IssmDouble  gravity   = element->GetMaterialParameter(ConstantsGEnum);
+
+	/*Initialize gauss points*/
+	IssmDouble zmax=xyz_list[0*3+(dim-1)]; for(int i=1;i<numvertices;i++) if(xyz_list[i*3+(dim-1)]>zmax) zmax=xyz_list[i*3+(dim-1)];
+	IssmDouble zmin=xyz_list[0*3+(dim-1)]; for(int i=1;i<numvertices;i++) if(xyz_list[i*3+(dim-1)]<zmin) zmin=xyz_list[i*3+(dim-1)];
+	if(zmax>0. && zmin<0.) gauss=element->NewGauss(xyz_list,xyz_list_front,3,30);//refined in vertical because of the sea level discontinuity
+	else                   gauss=element->NewGauss(xyz_list,xyz_list_front,3,3);
+
+	/* Start  looping on the number of gaussian points: */
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminantSurface(&Jdet,xyz_list_front,gauss);
+		element->NodalFunctionsVelocity(vbasis,gauss);
+		surface_input->GetInputValue(&surface,gauss);
+		sealevel_input->GetInputValue(&sealevel,gauss);
+		if(dim==3) z=element->GetZcoord(xyz_list,gauss);
+		else       z=element->GetYcoord(xyz_list,gauss);
+		pressure = rho_water*gravity*min(0.,z-sealevel);//0 if the gaussian point is above water level
+
+		for (int i=0;i<vnumnodes;i++){
+			pe->values[dim*i+0]+= pressure*Jdet*gauss->weight*normal[0]*vbasis[i];
+			pe->values[dim*i+1]+= pressure*Jdet*gauss->weight*normal[1]*vbasis[i];
+			if(dim==3) pe->values[dim*i+2]+= pressure*Jdet*gauss->weight*normal[2]*vbasis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<int>(cs_list);
+	xDelete<IssmDouble>(vbasis);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_front);
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorFSShelf(Element* element){/*{{{*/
+
+	int         i,dim;
+	IssmDouble  Jdet,water_pressure,bed;
+	IssmDouble	normal[3];
+	IssmDouble *xyz_list_base = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnBase() || !element->IsFloating()) return NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Initialize vectors*/
+	ElementVector* pe     = element->NewElementVector(FSvelocityEnum);
+	IssmDouble*    vbasis = xNew<IssmDouble>(vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	Input*      base_input=element->GetInput(BaseEnum); _assert_(base_input);
+	IssmDouble  rho_water=element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	IssmDouble  gravity  =element->GetMaterialParameter(ConstantsGEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(5);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctionsVelocity(vbasis,gauss);
+
+		element->NormalBase(&normal[0],xyz_list_base);
+		_assert_(normal[dim-1]<0.);
+		base_input->GetInputValue(&bed, gauss);
+		water_pressure=gravity*rho_water*bed;
+
+		for(i=0;i<vnumnodes;i++){
+			pe->values[i*dim+0] += water_pressure*gauss->weight*Jdet*vbasis[i]*normal[0];
+			pe->values[i*dim+1] += water_pressure*gauss->weight*Jdet*vbasis[i]*normal[1];
+			if(dim==3){
+				pe->values[i*dim+2]+=water_pressure*gauss->weight*Jdet*vbasis[i]*normal[2];
+			}
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,cs_list);
+
+	/* shelf dampening*/
+	int shelf_dampening;
+	element->FindParam(&shelf_dampening,StressbalanceShelfDampeningEnum);
+	if(shelf_dampening) {
+		Input*      mb_input=element->GetInput(BasalforcingsFloatingiceMeltingRateEnum); _assert_(mb_input);
+		IssmDouble dt,mb,normal_b;
+		element->FindParam(&dt,TimesteppingTimeStepEnum);
+		for(int ig=gauss->begin();ig<gauss->end();ig++){
+			gauss->GaussPoint(ig);
+			element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+			element->NodalFunctionsVelocity(vbasis,gauss);
+			element->NormalBase(&normal[0],xyz_list_base);
+			if (dim==2) normal_b=normal[1];
+			else if (dim==3) normal_b=sqrt(normal[0]*normal[0]+normal[1]*normal[1]);
+			mb_input->GetInputValue(&mb, gauss);
+			for(i=0;i<vnumnodes;i++){
+				pe->values[i*dim+1] += dt*rho_water*gravity*mb*gauss->weight*Jdet*vbasis[i]*normal_b;
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<int>(cs_list);
+	xDelete<IssmDouble>(vbasis);
+	xDelete<IssmDouble>(xyz_list_base);
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorFSViscousLA(Element* element){/*{{{*/
+
+	int         i,dim;
+	IssmDouble  Jdet,pressure;
+	IssmDouble  bed_normal[3];
+	IssmDouble *xyz_list      = NULL;
+	IssmDouble *xyz_list_base = NULL;
+	Gauss*      gauss         = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(numnodes);
+	if(dim==2) for(i=0;i<numnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<numnodes;i++) cs_list[i] = XYZEnum;
+
+	/*Initialize vectors*/
+	ElementVector* pe      = element->NewElementVector(FSvelocityEnum);
+	IssmDouble*    dbasis  = xNew<IssmDouble>(3*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/*Get pressure and sigmann*/
+	Input* pressure_input=element->GetInput(PressureEnum); _assert_(pressure_input);
+	Input* sigmann_input =element->GetInput(SigmaNNEnum);  _assert_(sigmann_input);
+
+	gauss=element->NewGauss(5);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		
+		pressure_input->GetInputValue(&pressure, gauss);
+		element->NodalFunctionsDerivativesVelocity(dbasis,xyz_list,gauss);
+
+		for(i=0;i<numnodes;i++){
+			pe->values[i*dim+0] += pressure*gauss->weight*Jdet*dbasis[0*numnodes+i];
+			pe->values[i*dim+1] += pressure*gauss->weight*Jdet*dbasis[1*numnodes+i];
+			if(dim==3) pe->values[i*dim+2]+= pressure*gauss->weight*Jdet*dbasis[2*numnodes+i];
+		}
+	}
+
+	if(element->IsOnBase() && 0){ 
+		IssmDouble   sigmann;
+		IssmDouble*  vbasis = xNew<IssmDouble>(numnodes);
+
+		element->GetVerticesCoordinatesBase(&xyz_list_base);
+		element->NormalBase(&bed_normal[0],xyz_list_base);
+
+		delete gauss;
+		gauss=element->NewGaussBase(5);
+		for(int ig=gauss->begin();ig<gauss->end();ig++){
+			gauss->GaussPoint(ig);
+
+			element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+			element->NodalFunctionsVelocity(vbasis,gauss);
+			sigmann_input->GetInputValue(&sigmann, gauss);
+
+			for(i=0;i<numnodes;i++){
+				pe->values[i*dim+0] += + sigmann*bed_normal[0]*gauss->weight*Jdet*vbasis[i];
+				pe->values[i*dim+1] += + sigmann*bed_normal[1]*gauss->weight*Jdet*vbasis[i];
+				if(dim==3) pe->values[i*dim+2] += + sigmann*bed_normal[2]*gauss->weight*Jdet*vbasis[i];
+			}
+		}
+		xDelete<IssmDouble>(xyz_list_base);
+		xDelete<IssmDouble>(vbasis);
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<int>(cs_list);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorFSViscousXTH(Element* element){/*{{{*/
+
+	int         i,tausize,dim;
+	IssmDouble  Jdet,r;
+	IssmDouble  epsxx,epsyy,epszz,epsxy,epsxz,epsyz;
+	IssmDouble  sigmapxx,sigmapyy,sigmapzz,sigmapxy,sigmapxz,sigmapyz;
+	IssmDouble *xyz_list = NULL;
+	Gauss*      gauss    = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+	if(dim==2) tausize = 3;
+	else       tausize = 6;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int tnumnodes = element->GetNumberOfVertices();      //Tensors, P1 DG
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i]  = PressureEnum;
+
+	/*Initialize vectors*/
+	ElementVector* pe      = element->NewElementVector(FSvelocityEnum);
+	IssmDouble*    Dstar   = xNewZeroInit<IssmDouble>((dim*vnumnodes)*(tausize*tnumnodes));
+	IssmDouble*    tau     = xNew<IssmDouble>(tausize*tnumnodes);
+	IssmDouble*    d       = xNew<IssmDouble>(tausize*tnumnodes);
+	IssmDouble*    vdbasis = xNew<IssmDouble>(dim*vnumnodes);
+	IssmDouble*    tbasis  = xNew<IssmDouble>(tnumnodes);
+	IssmDouble*    D       = xNewZeroInit<IssmDouble>(tausize*tnumnodes*tausize*tnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->FindParam(&r,AugmentedLagrangianREnum);
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/*Get d and tau*/
+	Input* epsxx_input=element->GetInput(StrainRatexxEnum); _assert_(epsxx_input);
+	Input* epsyy_input=element->GetInput(StrainRateyyEnum); _assert_(epsyy_input);
+	Input* epsxy_input=element->GetInput(StrainRatexyEnum); _assert_(epsxy_input);
+	Input* epszz_input=NULL; Input* epsxz_input=NULL; Input* epsyz_input=NULL;
+	Input* sigmapxx_input=element->GetInput(DeviatoricStressxxEnum); _assert_(sigmapxx_input);
+	Input* sigmapyy_input=element->GetInput(DeviatoricStressyyEnum); _assert_(sigmapyy_input);
+	Input* sigmapxy_input=element->GetInput(DeviatoricStressxyEnum); _assert_(sigmapxy_input);
+	Input* sigmapzz_input=NULL; Input* sigmapxz_input=NULL; Input* sigmapyz_input=NULL;
+	if(dim==3){
+		epszz_input=element->GetInput(StrainRatezzEnum); _assert_(epszz_input);
+		epsxz_input=element->GetInput(StrainRatexzEnum); _assert_(epsxz_input);
+		epsyz_input=element->GetInput(StrainRateyzEnum); _assert_(epsyz_input);
+		sigmapzz_input=element->GetInput(DeviatoricStresszzEnum); _assert_(sigmapzz_input);
+		sigmapxz_input=element->GetInput(DeviatoricStressxzEnum); _assert_(sigmapxz_input);
+		sigmapyz_input=element->GetInput(DeviatoricStressyzEnum); _assert_(sigmapyz_input);
+	}
+
+	gauss = element->NewGauss();
+	for(int i=0;i<tnumnodes;i++){
+		gauss->GaussNode(P1DGEnum,i);
+
+		epsxx_input->GetInputValue(&epsxx,gauss); sigmapxx_input->GetInputValue(&sigmapxx,gauss);
+		epsyy_input->GetInputValue(&epsyy,gauss); sigmapyy_input->GetInputValue(&sigmapyy,gauss);
+		epsxy_input->GetInputValue(&epsxy,gauss); sigmapxy_input->GetInputValue(&sigmapxy,gauss);
+		if(dim==2){
+			d[i*tausize+0]=epsxx;  tau[i*tausize+0]=sigmapxx;
+			d[i*tausize+1]=epsyy;  tau[i*tausize+1]=sigmapyy;
+			d[i*tausize+2]=epsxy;  tau[i*tausize+2]=sigmapxy;
+		}
+		else{
+			epszz_input->GetInputValue(&epszz,gauss); sigmapzz_input->GetInputValue(&sigmapzz,gauss);
+			epsxz_input->GetInputValue(&epsxz,gauss); sigmapxz_input->GetInputValue(&sigmapxz,gauss);
+			epsyz_input->GetInputValue(&epsyz,gauss); sigmapyz_input->GetInputValue(&sigmapyz,gauss);
+			d[i*tausize+0]=epsxx;  tau[i*tausize+0]=sigmapxx;
+			d[i*tausize+1]=epsyy;  tau[i*tausize+1]=sigmapyy;
+			d[i*tausize+2]=epszz;  tau[i*tausize+2]=sigmapzz;
+			d[i*tausize+3]=epsxy;  tau[i*tausize+3]=sigmapxy;
+			d[i*tausize+4]=epsxz;  tau[i*tausize+4]=sigmapxz;
+			d[i*tausize+5]=epsyz;  tau[i*tausize+5]=sigmapyz;
+		}
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	delete gauss;
+	gauss=element->NewGauss(5);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Create Dstar*/
+		/*In dim = 2
+		 *
+		 *       <----------------- tausize ---------------> x tnumnodes
+		 *       |  gamma_ij^x         0       gamma_ij^y  | ^
+		 * Dij = |                                         | dim
+		 *       |     0          gamma_ij^y   gamma_ij^x  | v
+		 *                                                   x
+		 *                                                   vnumnodes
+		 *
+		 *In dim = 3
+		 *
+		 *       |  gamma_ij^x         0          0         gamma_ij^y  gamma_ij^z      0      |
+		 *       |                                                                             |
+		 * Dij = |     0          gamma_ij^y      0         gamma_ij^x     0        gamma_ij^z |
+		 *       |                                                                             |
+		 *       |     0               0      gamma_ij^z        0       gamma_ij^x  gamma_ij^y |
+		 *
+		 * gamma_ij^x = zeta_j dphi_i/dx
+		 *
+		 * where:
+		 *   - zeta_j is the nodal function for the j^th node of the tensor (P1DG)
+		 *   - phi_i  is the nodal function for the i^th node of the velocity (P2)*/
+		element->NodalFunctionsDerivativesVelocity(vdbasis,xyz_list,gauss);
+		element->NodalFunctionsTensor(tbasis,gauss);
+		if(dim==2){
+			for(int i=0;i<vnumnodes;i++){
+				for(int j=0;j<tnumnodes;j++){
+					Dstar[(i*dim+0)*tausize*tnumnodes + j*tausize+0] += gauss->weight*Jdet*tbasis[j]*vdbasis[0*vnumnodes+i];
+					Dstar[(i*dim+0)*tausize*tnumnodes + j*tausize+2] += gauss->weight*Jdet*tbasis[j]*vdbasis[1*vnumnodes+i];
+
+					Dstar[(i*dim+1)*tausize*tnumnodes + j*tausize+1] += gauss->weight*Jdet*tbasis[j]*vdbasis[1*vnumnodes+i];
+					Dstar[(i*dim+1)*tausize*tnumnodes + j*tausize+2] += gauss->weight*Jdet*tbasis[j]*vdbasis[0*vnumnodes+i];
+				}
+			}
+		}
+		else{
+			for(int i=0;i<vnumnodes;i++){
+				for(int j=0;j<tnumnodes;j++){
+					Dstar[(i*dim+0)*tausize*tnumnodes + j*tausize+0] += gauss->weight*Jdet*tbasis[j]*vdbasis[0*vnumnodes+i];
+					Dstar[(i*dim+0)*tausize*tnumnodes + j*tausize+3] += gauss->weight*Jdet*tbasis[j]*vdbasis[1*vnumnodes+i];
+					Dstar[(i*dim+0)*tausize*tnumnodes + j*tausize+4] += gauss->weight*Jdet*tbasis[j]*vdbasis[2*vnumnodes+i];
+
+					Dstar[(i*dim+1)*tausize*tnumnodes + j*tausize+1] += gauss->weight*Jdet*tbasis[j]*vdbasis[1*vnumnodes+i];
+					Dstar[(i*dim+1)*tausize*tnumnodes + j*tausize+3] += gauss->weight*Jdet*tbasis[j]*vdbasis[0*vnumnodes+i];
+					Dstar[(i*dim+1)*tausize*tnumnodes + j*tausize+5] += gauss->weight*Jdet*tbasis[j]*vdbasis[2*vnumnodes+i];
+
+					Dstar[(i*dim+2)*tausize*tnumnodes + j*tausize+2] += gauss->weight*Jdet*tbasis[j]*vdbasis[2*vnumnodes+i];
+					Dstar[(i*dim+2)*tausize*tnumnodes + j*tausize+4] += gauss->weight*Jdet*tbasis[j]*vdbasis[0*vnumnodes+i];
+					Dstar[(i*dim+2)*tausize*tnumnodes + j*tausize+5] += gauss->weight*Jdet*tbasis[j]*vdbasis[1*vnumnodes+i];
+				}
+			}
+		}
+	}
+
+	/*contribution -Dstar tau*/
+	for(i=0;i<tausize*tnumnodes;i++) D[i*(tausize*tnumnodes)+i] = -1.;
+	TripleMultiply(Dstar,dim*vnumnodes,tausize*tnumnodes,0,
+				D,tausize*tnumnodes,tausize*tnumnodes,0,
+				tau,tausize*tnumnodes,1,0,
+				&pe->values[0],1);
+
+	/*contribution + r Dstar d*/
+	for(i=0;i<tausize*tnumnodes;i++) D[i*(tausize*tnumnodes)+i] = +r;
+	TripleMultiply(Dstar,dim*vnumnodes,tausize*tnumnodes,0,
+				D,tausize*tnumnodes,tausize*tnumnodes,0,
+				d,tausize*tnumnodes,1,0,
+				&pe->values[0],1);
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<int>(cs_list);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(Dstar);
+	xDelete<IssmDouble>(d);
+	xDelete<IssmDouble>(D);
+	xDelete<IssmDouble>(tau);
+	xDelete<IssmDouble>(vdbasis);
+	xDelete<IssmDouble>(tbasis);
+	return pe;
+}/*}}}*/
+void           StressbalanceAnalysis::GetBFS(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[Bv1 Bv2 ... Bp1 Bp2 ...] where Bvi is of size 3*NDOF3. 
+	 * For node i, Bvi can be expressed in the actual coordinate system
+	 * by: 	   Bvi=[ dphi/dx          0        ]
+	 *					 [   0           dphi/dy     ]
+	 *					 [ 1/2*dphi/dy    1/2*dphi/dx]
+	 *					 [   0             0         ]
+	 *					 [ dphi/dx         dphi/dy   ]
+	 *
+	 *         Bpi=[  0    ]
+	 *					[  0    ]
+	 *					[  0    ]
+	 *					[ phi_p ]
+	 *					[  0    ]
+	 *
+	 *	In 3d:
+	 *     	   Bvi=[ dh/dx          0             0      ]
+	 *					[   0           dh/dy           0      ]
+	 *					[   0             0           dh/dz    ]
+	 *					[ 1/2*dh/dy    1/2*dh/dx        0      ]
+	 *					[ 1/2*dh/dz       0         1/2*dh/dx  ]
+	 *					[   0          1/2*dh/dz    1/2*dh/dy  ]
+	 *					[   0             0             0      ]
+	 *					[ dh/dx         dh/dy         dh/dz    ]
+	 *
+	 *         Bpi=[ 0 ]
+	 *					[ 0 ]
+	 *					[ 0 ]
+	 *					[ 0 ]
+	 *					[ 0 ]
+	 *					[ 0 ]
+	 *					[ h ]
+	 *					[ 0 ]
+	 *	where phi is the finiteelement function for node i.
+	 *	Same thing for Bb except the last column that does not exist.
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int pnumnodes = element->NumberofNodesPressure();
+	int vnumnodes = element->NumberofNodesVelocity();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* vdbasis=xNew<IssmDouble>(dim*vnumnodes);
+	IssmDouble* pbasis =xNew<IssmDouble>(pnumnodes);
+	element->NodalFunctionsDerivativesVelocity(vdbasis,xyz_list,gauss);
+	element->NodalFunctionsPressure(pbasis,gauss);
+
+	/*Build B: */
+	if(dim==2){
+		for(int i=0;i<vnumnodes;i++){
+			B[(dim*vnumnodes+pnumnodes)*0+dim*i+0] = vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*0+dim*i+1] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*1+dim*i+0] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*1+dim*i+1] = vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*2+dim*i+0] = .5*vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*2+dim*i+1] = .5*vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*3+dim*i+0] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*3+dim*i+1] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*4+dim*i+0] = vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*4+dim*i+1] = vdbasis[1*vnumnodes+i];
+		}
+		for(int i=0;i<pnumnodes;i++){
+			B[(dim*vnumnodes+pnumnodes)*0+(dim*vnumnodes)+i] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*1+(dim*vnumnodes)+i] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*2+(dim*vnumnodes)+i] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*3+(dim*vnumnodes)+i] = pbasis[i];
+			B[(dim*vnumnodes+pnumnodes)*4+(dim*vnumnodes)+i] = 0.;
+		}
+	}
+	else{
+		for(int i=0;i<vnumnodes;i++){
+			B[(dim*vnumnodes+pnumnodes)*0+dim*i+0] = vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*0+dim*i+1] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*0+dim*i+2] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*1+dim*i+0] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*1+dim*i+1] = vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*1+dim*i+2] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*2+dim*i+0] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*2+dim*i+1] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*2+dim*i+2] = vdbasis[2*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*3+dim*i+0] = .5*vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*3+dim*i+1] = .5*vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*3+dim*i+2] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*4+dim*i+0] = .5*vdbasis[2*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*4+dim*i+1] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*4+dim*i+2] = .5*vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*5+dim*i+0] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*5+dim*i+1] = .5*vdbasis[2*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*5+dim*i+2] = .5*vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*6+dim*i+0] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*6+dim*i+1] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*6+dim*i+2] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*7+dim*i+0] = vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*7+dim*i+1] = vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*7+dim*i+2] = vdbasis[2*vnumnodes+i];
+		}
+		for(int i=0;i<pnumnodes;i++){
+			B[(dim*vnumnodes+pnumnodes)*0+(dim*vnumnodes)+i] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*1+(dim*vnumnodes)+i] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*2+(dim*vnumnodes)+i] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*3+(dim*vnumnodes)+i] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*4+(dim*vnumnodes)+i] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*5+(dim*vnumnodes)+i] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*6+(dim*vnumnodes)+i] = pbasis[i];
+			B[(dim*vnumnodes+pnumnodes)*7+(dim*vnumnodes)+i] = 0.;
+		}
+	}
+
+	/*Clean up*/
+	xDelete<IssmDouble>(vdbasis);
+	xDelete<IssmDouble>(pbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBFSFriction(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/* Compute L  matrix. L=[L1 L2 L3] where Li is square and of size numdof. 
+	 * For node i, Li can be expressed in the actual coordinate system
+	 * by in 3d 
+	 *       Li=[ h 0 0 0 ]
+	 *	 	      [ 0 h 0 0 ]
+	 *	in 2d:
+	 *       Li=[ h 0 0 ]
+	 * where h is the interpolation function for node i.
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int pnumnodes = element->NumberofNodesPressure();
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumdof   = pnumnodes;
+	int vnumdof   = vnumnodes*dim;
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* vbasis=xNew<IssmDouble>(vnumnodes);
+	element->NodalFunctionsVelocity(vbasis,gauss);
+
+	/*Build B: */
+	if(dim==3){
+		for(int i=0;i<vnumnodes;i++){
+			B[(vnumdof+pnumdof)*0+3*i+0] = vbasis[i];
+			B[(vnumdof+pnumdof)*0+3*i+1] = 0.;
+			B[(vnumdof+pnumdof)*0+3*i+2] = 0.;
+
+			B[(vnumdof+pnumdof)*1+3*i+0] = 0.;
+			B[(vnumdof+pnumdof)*1+3*i+1] = vbasis[i];
+			B[(vnumdof+pnumdof)*1+3*i+2] = 0.;
+
+			B[(vnumdof+pnumdof)*2+3*i+0] = 0.;
+			B[(vnumdof+pnumdof)*2+3*i+1] = 0.;
+			B[(vnumdof+pnumdof)*2+3*i+2] = vbasis[i];
+		}
+		for(int i=0;i<pnumnodes;i++){
+			B[(vnumdof+pnumdof)*0+i+vnumdof+0] = 0.;
+			B[(vnumdof+pnumdof)*1+i+vnumdof+0] = 0.;
+			B[(vnumdof+pnumdof)*2+i+vnumdof+0] = 0.;
+		}
+	}
+	else{
+		for(int i=0;i<vnumnodes;i++){
+			B[(vnumdof+pnumdof)*0+2*i+0] = vbasis[i];
+			B[(vnumdof+pnumdof)*0+2*i+1] = 0.;
+
+			B[(vnumdof+pnumdof)*1+2*i+0] = 0.;
+			B[(vnumdof+pnumdof)*1+2*i+1] = vbasis[i];
+		}
+
+		for(int i=0;i<pnumnodes;i++){
+			B[(vnumdof+pnumdof)*0+i+vnumdof+0] = 0.;
+			B[(vnumdof+pnumdof)*1+i+vnumdof+0] = 0.;
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(vbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBFSprime(IssmDouble* Bprime,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*	Compute B'  matrix. B'=[B1' B2' B3' B4' B5' B6' Bb'] where Bi' is of size 3*NDOF2. 
+	 *	For node i, Bi' can be expressed in the actual coordinate system
+	 *	by: 
+	 *			Bvi' = [  dphi/dx     0     ]
+	 *					 [     0      dphi/dy ]
+	 *					 [  dphi/dy   dphi/dx ]
+	 *					 [  dphi/dx   dphi/dy ]
+	 *					 [     0      0       ]
+	 *
+	 * by: 	  Bpi=[  0  ]
+	 *					[  0  ]
+	 *					[  0  ]
+	 *					[  0  ]
+	 *					[ phi ]
+	 *
+	 *	In 3d
+	 *     	   Bvi=[ dh/dx     0        0    ]
+	 *					[   0      dh/dy      0    ]
+	 *					[   0        0      dh/dz  ]
+	 *					[ dh/dy    dh/dx      0    ]
+	 *					[ dh/dz      0      dh/dx  ]
+	 *					[   0      dh/dz    dh/dy  ]
+	 *					[ dh/dx    dh/dy    dh/dz  ]
+	 *					[   0        0        0    ]
+	 *
+	 *         Bpi=[ 0 ]
+	 *					[ 0 ]
+	 *					[ 0 ]
+	 *					[ 0 ]
+	 *					[ 0 ]
+	 *					[ 0 ]
+	 *					[ 0 ]
+	 *					[ h ]
+	 *	where phi is the finiteelement function for node i.
+	 *	In 3d:
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int pnumnodes = element->NumberofNodesPressure();
+	int vnumnodes = element->NumberofNodesVelocity();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* vdbasis=xNew<IssmDouble>(dim*vnumnodes);
+	IssmDouble* pbasis =xNew<IssmDouble>(pnumnodes);
+	element->NodalFunctionsDerivativesVelocity(vdbasis,xyz_list,gauss);
+	element->NodalFunctionsPressure(pbasis,gauss);
+
+	/*Build B_prime: */
+	if(dim==2){
+		for(int i=0;i<vnumnodes;i++){
+			Bprime[(dim*vnumnodes+pnumnodes)*0+dim*i+0] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*0+dim*i+1] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*1+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*1+dim*i+1] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*2+dim*i+0] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*2+dim*i+1] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*3+dim*i+0] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*3+dim*i+1] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*4+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*4+dim*i+1] = 0.;
+		}
+		for(int i=0;i<pnumnodes;i++){
+			Bprime[(dim*vnumnodes+pnumnodes)*0+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*1+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*2+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*3+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*4+(dim*vnumnodes)+i] = pbasis[i];
+		}
+	}
+	else{
+		for(int i=0;i<vnumnodes;i++){
+			Bprime[(dim*vnumnodes+pnumnodes)*0+dim*i+0] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*0+dim*i+1] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*0+dim*i+2] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*1+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*1+dim*i+1] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*1+dim*i+2] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*2+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*2+dim*i+1] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*2+dim*i+2] = vdbasis[2*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*3+dim*i+0] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*3+dim*i+1] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*3+dim*i+2] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*4+dim*i+0] = vdbasis[2*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*4+dim*i+1] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*4+dim*i+2] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*5+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*5+dim*i+1] = vdbasis[2*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*5+dim*i+2] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*6+dim*i+0] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*6+dim*i+1] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*6+dim*i+2] = vdbasis[2*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*7+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*7+dim*i+1] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*7+dim*i+2] = 0.;
+		}
+		for(int i=0;i<pnumnodes;i++){
+			Bprime[(dim*vnumnodes+pnumnodes)*0+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*1+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*2+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*3+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*4+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*5+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*6+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*7+(dim*vnumnodes)+i] = pbasis[i];
+		}
+	}
+
+	/*Clean up*/
+	xDelete<IssmDouble>(vdbasis);
+	xDelete<IssmDouble>(pbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBFSprimeUzawa(IssmDouble* Bprime,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*	Compute B'  matrix. B'=[B1' B2' B3' B4' B5' B6'] where Bi' is of size 3*NDOF2. 
+	 *	For node i, Bi' can be expressed in the actual coordinate system
+	 *	by: 
+	 *			Bvi' = [  dphi/dx   dphi/dy ]
+	 *
+	 *	In 3d
+	 *     	   Bvi=[ dh/dx   dh/dy    dh/dz  ]
+	 *	where phi is the finiteelement function for node i.
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* vdbasis=xNew<IssmDouble>(dim*vnumnodes);
+	element->NodalFunctionsDerivativesVelocity(vdbasis,xyz_list,gauss);
+
+	/*Build B_prime: */
+	if(dim==2){
+		for(int i=0;i<vnumnodes;i++){
+			Bprime[dim*i+0] = vdbasis[0*vnumnodes+i];
+			Bprime[dim*i+1] = vdbasis[1*vnumnodes+i];
+		}
+	}
+	else{
+		for(int i=0;i<vnumnodes;i++){
+			Bprime[dim*i+0] = vdbasis[0*vnumnodes+i];
+			Bprime[dim*i+1] = vdbasis[1*vnumnodes+i];
+			Bprime[dim*i+2] = vdbasis[2*vnumnodes+i];
+		}
+	}
+
+	/*Clean up*/
+	xDelete<IssmDouble>(vdbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBFSprimevel(IssmDouble* Bprime,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*	Compute B'  matrix. B'=[B1' B2' B3' B4' B5' B6' Bb'] where Bi' is of size 3*NDOF2. 
+	 *	For node i, Bi' can be expressed in the actual coordinate system
+	 *	by: 
+	 *			Bvi' = [  dphi/dx     0     ]
+	 *					 [     0      dphi/dy ]
+	 *					 [  dphi/dy   dphi/dx ]
+	 *
+	 *	In 3d
+	 *     	   Bvi=[ dh/dx     0        0    ]
+	 *					[   0      dh/dy      0    ]
+	 *					[   0        0      dh/dz  ]
+	 *					[ dh/dy    dh/dx      0    ]
+	 *					[ dh/dz      0      dh/dx  ]
+	 *					[   0      dh/dz    dh/dy  ]
+	 *	where phi is the finiteelement function for node i.
+	 *	In 3d:
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* vdbasis=xNew<IssmDouble>(dim*vnumnodes);
+	element->NodalFunctionsDerivativesVelocity(vdbasis,xyz_list,gauss);
+
+	/*Build B_prime: */
+	if(dim==2){
+		for(int i=0;i<vnumnodes;i++){
+			Bprime[(dim*vnumnodes)*0+dim*i+0] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*0+dim*i+1] = 0.;
+			Bprime[(dim*vnumnodes)*1+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes)*1+dim*i+1] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*2+dim*i+0] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*2+dim*i+1] = vdbasis[0*vnumnodes+i];
+		}
+	}
+	else{
+		for(int i=0;i<vnumnodes;i++){
+			Bprime[(dim*vnumnodes)*0+dim*i+0] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*0+dim*i+1] = 0.;
+			Bprime[(dim*vnumnodes)*0+dim*i+2] = 0.;
+			Bprime[(dim*vnumnodes)*1+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes)*1+dim*i+1] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*1+dim*i+2] = 0.;
+			Bprime[(dim*vnumnodes)*2+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes)*2+dim*i+1] = 0.;
+			Bprime[(dim*vnumnodes)*2+dim*i+2] = vdbasis[2*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*3+dim*i+0] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*3+dim*i+1] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*3+dim*i+2] = 0.;
+			Bprime[(dim*vnumnodes)*4+dim*i+0] = vdbasis[2*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*4+dim*i+1] = 0.;
+			Bprime[(dim*vnumnodes)*4+dim*i+2] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*5+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes)*5+dim*i+1] = vdbasis[2*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*5+dim*i+2] = vdbasis[1*vnumnodes+i];
+		}
+	}
+
+	/*Clean up*/
+	xDelete<IssmDouble>(vdbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBFSUzawa(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[Bp1 Bp2 ...] where Bpi=phi_pi. 
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int pnumnodes;
+	if(dim==2) pnumnodes=3;
+	else pnumnodes=6;
+	//int pnumnodes = element->NumberofNodes(P1Enum);
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* basis =xNew<IssmDouble>(pnumnodes);
+	element->NodalFunctionsP1(basis,gauss);
+
+	/*Build B: */
+	for(int i=0;i<pnumnodes;i++){
+		B[i] = basis[i];
+	}
+
+	/*Clean up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBFSvel(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[Bv1 Bv2 ... Bp1 Bp2 ...] where Bvi is of size 3*NDOF3. 
+	 * For node i, Bvi can be expressed in the actual coordinate system
+	 * by: 	   Bvi=[ dphi/dx          0        ]
+	 *					 [   0           dphi/dy     ]
+	 *					 [ 1/2*dphi/dy    1/2*dphi/dx]
+	 *
+	 *
+	 *	In 3d:
+	 *     	   Bvi=[ dh/dx          0             0      ]
+	 *					[   0           dh/dy           0      ]
+	 *					[   0             0           dh/dz    ]
+	 *					[ 1/2*dh/dy    1/2*dh/dx        0      ]
+	 *					[ 1/2*dh/dz       0         1/2*dh/dx  ]
+	 *					[   0          1/2*dh/dz    1/2*dh/dy  ]
+	 *
+	 *	where phi is the finiteelement function for node i.
+	 *	Same thing for Bb except the last column that does not exist.
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* vdbasis=xNew<IssmDouble>(dim*vnumnodes);
+	element->NodalFunctionsDerivativesVelocity(vdbasis,xyz_list,gauss);
+
+	/*Build B: */
+	if(dim==2){
+		for(int i=0;i<vnumnodes;i++){
+			B[(dim*vnumnodes)*0+dim*i+0] = vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes)*0+dim*i+1] = 0.;
+			B[(dim*vnumnodes)*1+dim*i+0] = 0.;
+			B[(dim*vnumnodes)*1+dim*i+1] = vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes)*2+dim*i+0] = .5*vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes)*2+dim*i+1] = .5*vdbasis[0*vnumnodes+i];
+		}
+	}
+	else{
+		for(int i=0;i<vnumnodes;i++){
+			B[(dim*vnumnodes)*0+dim*i+0] = vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes)*0+dim*i+1] = 0.;
+			B[(dim*vnumnodes)*0+dim*i+2] = 0.;
+			B[(dim*vnumnodes)*1+dim*i+0] = 0.;
+			B[(dim*vnumnodes)*1+dim*i+1] = vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes)*1+dim*i+2] = 0.;
+			B[(dim*vnumnodes)*2+dim*i+0] = 0.;
+			B[(dim*vnumnodes)*2+dim*i+1] = 0.;
+			B[(dim*vnumnodes)*2+dim*i+2] = vdbasis[2*vnumnodes+i];
+			B[(dim*vnumnodes)*3+dim*i+0] = .5*vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes)*3+dim*i+1] = .5*vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes)*3+dim*i+2] = 0.;
+			B[(dim*vnumnodes)*4+dim*i+0] = .5*vdbasis[2*vnumnodes+i];
+			B[(dim*vnumnodes)*4+dim*i+1] = 0.;
+			B[(dim*vnumnodes)*4+dim*i+2] = .5*vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes)*5+dim*i+0] = 0.;
+			B[(dim*vnumnodes)*5+dim*i+1] = .5*vdbasis[2*vnumnodes+i];
+			B[(dim*vnumnodes)*5+dim*i+2] = .5*vdbasis[1*vnumnodes+i];
+		}
+	}
+
+	/*Clean up*/
+	xDelete<IssmDouble>(vdbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetCFS(IssmDouble* C,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute C  matrix. C=[Cp1 Cp2 ...] where:
+	 *     Cpi=[phi phi]. 
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int lnumnodes = element->GetNumberOfNodes(P2Enum);
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* basis =xNew<IssmDouble>(lnumnodes);
+	element->NodalFunctionsP2(basis,gauss);
+
+	/*Build B: */
+	for(int i=0;i<lnumnodes;i++){
+		C[lnumnodes*0+i] = basis[i];
+		C[lnumnodes*1+i] = basis[i];
+	}
+
+	/*Clean up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetCFSprime(IssmDouble* Cprime,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*	Compute C'  matrix. C'=[C1' C2' ...] 
+	 *			Ci' = [  phi  0  ]
+	 *			      [   0  phi ]
+	 *
+	 *	In 3d
+	 *			Ci' = [  phi  0   0  ]
+	 *			      [   0  phi  0  ]
+	 *			      [   0   0  phi ]
+	 *	where phi is the finiteelement function for node i.
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int vnumdof   = vnumnodes*dim;
+
+	IssmDouble* vbasis=xNew<IssmDouble>(vnumnodes);
+	element->NodalFunctionsVelocity(vbasis,gauss);
+
+	/*Build B: */
+	if(dim==3){
+		for(int i=0;i<vnumnodes;i++){
+			Cprime[vnumdof*0+3*i+0] = vbasis[i];
+			Cprime[vnumdof*0+3*i+1] = 0.;
+			Cprime[vnumdof*0+3*i+2] = 0.;
+
+			Cprime[vnumdof*1+3*i+0] = 0.;
+			Cprime[vnumdof*1+3*i+1] = vbasis[i];
+			Cprime[vnumdof*1+3*i+2] = 0.;
+
+			Cprime[vnumdof*2+3*i+0] = 0.;
+			Cprime[vnumdof*2+3*i+1] = 0.;
+			Cprime[vnumdof*2+3*i+2] = vbasis[i];
+		}
+	}
+	else{
+		for(int i=0;i<vnumnodes;i++){
+			Cprime[vnumdof*0+2*i+0] = vbasis[i];
+			Cprime[vnumdof*0+2*i+1] = 0.;
+
+			Cprime[vnumdof*1+2*i+0] = 0.;
+			Cprime[vnumdof*1+2*i+1] = vbasis[i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(vbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetSolutionFromInputsFS(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+
+	int*         vdoflist=NULL;
+	int*         pdoflist=NULL;
+	Input*       vz_input=NULL;
+	int          dim;
+	IssmDouble   vx,vy,vz,p;
+	IssmDouble   FSreconditioning;
+
+	/*Get some parameters*/
+	element->FindParam(&dim,DomainDimensionEnum);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int vnumdof   = vnumnodes*dim;
+	int pnumdof   = pnumnodes*1;
+
+	/*Initialize values*/
+	IssmDouble* vvalues = xNew<IssmDouble>(vnumdof);
+	IssmDouble* pvalues = xNew<IssmDouble>(pnumdof);
+
+	/*Get dof list: */
+	element->GetDofListVelocity(&vdoflist,GsetEnum);
+	element->GetDofListPressure(&pdoflist,GsetEnum);
+	Input*     vx_input=element->GetInput(VxEnum);       _assert_(vx_input);
+	Input*     vy_input=element->GetInput(VyEnum);       _assert_(vy_input);
+	if(dim==3){vz_input=element->GetInput(VzEnum);       _assert_(vz_input);}
+	Input*     p_input =element->GetInput(PressureEnum); _assert_(p_input);
+
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+
+	/*Ok, we have the velocities in inputs, fill in solution */
+	Gauss* gauss = element->NewGauss();
+	for(int i=0;i<vnumnodes;i++){
+		gauss->GaussNode(element->VelocityInterpolation(),i);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vvalues[i*dim+0]=vx;
+		vvalues[i*dim+1]=vy;
+		if(dim==3){
+			vz_input->GetInputValue(&vz,gauss);
+			vvalues[i*dim+2]=vz;
+		}
+	}
+	for(int i=0;i<pnumnodes;i++){
+		gauss->GaussNode(element->PressureInterpolation(),i);
+		p_input->GetInputValue(&p ,gauss);
+		pvalues[i]=p/FSreconditioning;
+	}
+
+	/*Add value to global vector*/
+	solution->SetValues(vnumdof,vdoflist,vvalues,INS_VAL);
+	if(pnumdof>0) solution->SetValues(pnumdof,pdoflist,pvalues,INS_VAL);
+
+	/*Free ressources:*/
+	delete gauss;
+	xDelete<int>(pdoflist);
+	xDelete<int>(vdoflist);
+	xDelete<IssmDouble>(pvalues);
+	xDelete<IssmDouble>(vvalues);
+}/*}}}*/
+void           StressbalanceAnalysis::InitializeXTH(Elements* elements,Parameters* parameters){/*{{{*/
+
+	/*Intermediaries*/
+	int        dim;
+	IssmDouble dvx[3],dvy[3],dvz[3];
+	IssmDouble viscosity;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get problem dimension*/
+	parameters->FindParam(&dim,DomainDimensionEnum);
+
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+
+		/*Get inputs and parameters*/
+		element->GetVerticesCoordinates(&xyz_list);
+		Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
+		Input* vy_input=element->GetInput(VyEnum); _assert_(vy_input);
+		Input* vz_input;
+		if(dim==3){vz_input=element->GetInput(VzEnum); _assert_(vz_input);}
+
+		/*Allocate new inputs*/
+		int tnumnodes = element->GetNumberOfVertices();      //Tensors, P1 DG
+		IssmDouble* epsxx = xNew<IssmDouble>(tnumnodes); IssmDouble* sigmapxx = xNew<IssmDouble>(tnumnodes);
+		IssmDouble* epsyy = xNew<IssmDouble>(tnumnodes); IssmDouble* sigmapyy = xNew<IssmDouble>(tnumnodes); 
+		IssmDouble* epsxy = xNew<IssmDouble>(tnumnodes); IssmDouble* sigmapxy = xNew<IssmDouble>(tnumnodes); 
+		IssmDouble* epszz = NULL;                        IssmDouble* sigmapzz = NULL;  
+		IssmDouble* epsxz = NULL;                        IssmDouble* sigmapxz = NULL;  
+		IssmDouble* epsyz = NULL;                        IssmDouble* sigmapyz = NULL;  
+		if(dim==3){
+			epszz = xNew<IssmDouble>(tnumnodes); sigmapzz = xNew<IssmDouble>(tnumnodes);
+			epsxz = xNew<IssmDouble>(tnumnodes); sigmapxz = xNew<IssmDouble>(tnumnodes); 
+			epsyz = xNew<IssmDouble>(tnumnodes); sigmapyz = xNew<IssmDouble>(tnumnodes); 
+		}
+
+		/*Get d and tau*/
+		Gauss* gauss = element->NewGauss();
+		for(int i=0;i<tnumnodes;i++){
+			gauss->GaussNode(P1DGEnum,i);
+
+			vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+			vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+			if(dim==3){
+				vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
+			}
+
+			element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+			epsxx[i] = dvx[0];                sigmapxx[i] = 2.*viscosity*epsxx[i];
+			epsyy[i] = dvy[1];                sigmapyy[i] = 2.*viscosity*epsyy[i];
+			epsxy[i] = 0.5*(dvx[1] + dvy[0]); sigmapxy[i] = 2.*viscosity*epsxy[i];
+			if(dim==3){
+				epszz[i] = dvz[2];                sigmapzz[i] = 2.*viscosity*epszz[i];
+				epsxz[i] = 0.5*(dvx[2] + dvz[0]); sigmapxz[i] = 2.*viscosity*epsxz[i];
+				epsyz[i] = 0.5*(dvy[2] + dvz[1]); sigmapyz[i] = 2.*viscosity*epsyz[i];
+			}
+		}
+
+		/*Add inputs*/
+		element->AddInput(StrainRatexxEnum,epsxx,P1DGEnum); element->AddInput(DeviatoricStressxxEnum,sigmapxx,P1DGEnum);
+		element->AddInput(StrainRateyyEnum,epsyy,P1DGEnum); element->AddInput(DeviatoricStressyyEnum,sigmapyy,P1DGEnum);
+		element->AddInput(StrainRatexyEnum,epsxy,P1DGEnum); element->AddInput(DeviatoricStressxyEnum,sigmapxy,P1DGEnum);
+		if(dim==3){
+			element->AddInput(StrainRatezzEnum,epszz,P1DGEnum); element->AddInput(DeviatoricStresszzEnum,sigmapzz,P1DGEnum);
+			element->AddInput(StrainRatexzEnum,epsxz,P1DGEnum); element->AddInput(DeviatoricStressxzEnum,sigmapxz,P1DGEnum);
+			element->AddInput(StrainRateyzEnum,epsyz,P1DGEnum); element->AddInput(DeviatoricStressyzEnum,sigmapyz,P1DGEnum);
+		}
+
+		/*Clean up*/
+		delete gauss;
+		xDelete<IssmDouble>(xyz_list);
+		xDelete<IssmDouble>(epsxx); xDelete<IssmDouble>(sigmapxx);
+		xDelete<IssmDouble>(epsyy); xDelete<IssmDouble>(sigmapyy);
+		xDelete<IssmDouble>(epszz); xDelete<IssmDouble>(sigmapzz);
+		xDelete<IssmDouble>(epsxy); xDelete<IssmDouble>(sigmapxy);
+		xDelete<IssmDouble>(epsxz); xDelete<IssmDouble>(sigmapxz);
+		xDelete<IssmDouble>(epsyz); xDelete<IssmDouble>(sigmapyz);
+	}
+
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolutionFS(IssmDouble* solution,Element* element){/*{{{*/
+
+	bool         results_on_nodes;
+	int          i,dim;
+	int*         vdoflist=NULL;
+	int*         pdoflist=NULL;
+	IssmDouble   FSreconditioning;
+
+	element->FindParam(&dim,DomainDimensionEnum);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	element->FindParam(&results_on_nodes,SettingsResultsOnNodesEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int vnumdof   = vnumnodes*dim;
+	int pnumdof   = pnumnodes*1;
+
+	/*Initialize values*/
+	IssmDouble* values   = xNew<IssmDouble>(vnumdof+pnumdof);
+	IssmDouble* vx       = xNew<IssmDouble>(vnumnodes);
+	IssmDouble* vy       = xNew<IssmDouble>(vnumnodes);
+	IssmDouble* vz       = xNew<IssmDouble>(vnumnodes);
+	IssmDouble* vel      = xNew<IssmDouble>(vnumnodes);
+	IssmDouble* pressure = xNew<IssmDouble>(pnumnodes);
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Get dof list: */
+	element->GetDofListVelocity(&vdoflist,GsetEnum);
+	element->GetDofListPressure(&pdoflist,GsetEnum);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<vnumdof;i++) values[i]        =solution[vdoflist[i]];
+	for(i=0;i<pnumdof;i++) values[vnumdof+i]=solution[pdoflist[i]];
+
+	/*Transform solution in Cartesian Space*/
+	element->TransformSolutionCoord(values,cs_list);
+
+	/*Ok, we have vx and vy in values, fill in all arrays: */
+	for(i=0;i<vnumnodes;i++){
+		vx[i] = values[i*dim+0];
+		vy[i] = values[i*dim+1];
+		if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector");
+
+		if(dim==3){
+			vz[i] = values[i*dim+2];
+			if(xIsNan<IssmDouble>(vz[i])) _error_("NaN found in solution vector");
+			if(xIsInf<IssmDouble>(vz[i])) _error_("Inf found in solution vector");
+		}
+	}
+	for(i=0;i<pnumnodes;i++){
+		pressure[i] = values[vnumdof+i];
+		if(xIsNan<IssmDouble>(pressure[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(pressure[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Recondition pressure and compute vel: */
+	for(i=0;i<pnumnodes;i++) pressure[i] = pressure[i]*FSreconditioning;
+	if(dim==3) for(i=0;i<vnumnodes;i++) vel[i] = sqrt(vx[i]*vx[i] + vy[i]*vy[i] + vz[i]*vz[i]);
+	else       for(i=0;i<vnumnodes;i++) vel[i] = sqrt(vx[i]*vx[i] + vy[i]*vy[i]);
+
+	/*Now, we have to move the previous inputs  to old 
+	 * status, otherwise, we'll wipe them off: */
+	element->InputChangeName(VxEnum,VxPicardEnum);
+	element->InputChangeName(VyEnum,VyPicardEnum);
+	if(pnumdof>0) element->InputChangeName(PressureEnum,PressurePicardEnum);
+	if(dim==3) element->InputChangeName(VzEnum,VzPicardEnum);
+
+	/*Add vx and vy as inputs to the tria element: */
+	element->AddInput(VxEnum,      vx,      element->VelocityInterpolation());
+	element->AddInput(VyEnum,      vy,      element->VelocityInterpolation());
+	element->AddInput(VelEnum,     vel,     element->VelocityInterpolation());
+	if(pnumdof>0) element->AddInput(PressureEnum,pressure,element->PressureInterpolation());
+	if(dim==3) element->AddInput(VzEnum,vz, element->VelocityInterpolation());
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(vel);
+	xDelete<IssmDouble>(vz);
+	xDelete<IssmDouble>(vy);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(values);
+	xDelete<int>(vdoflist);
+	xDelete<int>(pdoflist);
+	xDelete<int>(cs_list);
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolutionFSXTH_d(Elements* elements,Parameters* parameters){/*{{{*/
+
+	/*Intermediaries*/
+	int         dim,tausize;
+	IssmDouble  epsxx,epsyy,epszz,epsxy,epsxz,epsyz,D_scalar;
+	IssmDouble  epsxx_old,epsyy_old,epszz_old,epsxy_old,epsxz_old,epsyz_old;
+	IssmDouble  sigmapxx,sigmapyy,sigmapzz,sigmapxy,sigmapxz,sigmapyz;
+	IssmDouble  dvx[3],dvy[3],dvz[3],B,n;
+	IssmDouble *xyz_list = NULL;
+	IssmDouble  Jdet,r;
+
+	parameters->FindParam(&r,AugmentedLagrangianREnum);
+	parameters->FindParam(&dim,DomainDimensionEnum);
+	if(dim==2) tausize = 3;
+	else       tausize = 6;
+
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+
+		/*Get inputs and parameters*/
+		element->GetVerticesCoordinates(&xyz_list);
+		Input*  B_input=element->GetInput(MaterialsRheologyBEnum); _assert_(B_input);
+		Input*  n_input=element->GetInput(MaterialsRheologyNEnum); _assert_(n_input);
+		Input* vx_input=element->GetInput(VxEnum);                 _assert_(vx_input);
+		Input* vy_input=element->GetInput(VyEnum);                 _assert_(vy_input);
+		Input* vz_input;
+		if(dim==3){vz_input=element->GetInput(VzEnum); _assert_(vz_input);}
+
+		/*Fetch number of nodes and dof for this finite element*/
+		int tnumnodes = element->GetNumberOfVertices();      //Tensors, P1 DG
+
+		/*Initialize vectors*/
+		IssmDouble* tbasis = xNew<IssmDouble>(tnumnodes);
+		IssmDouble* Ke     = xNewZeroInit<IssmDouble>(tnumnodes*tnumnodes);
+		IssmDouble* pe_xx  = xNewZeroInit<IssmDouble>(tnumnodes);
+		IssmDouble* pe_yy  = xNewZeroInit<IssmDouble>(tnumnodes);
+		IssmDouble* pe_xy  = xNewZeroInit<IssmDouble>(tnumnodes);
+		IssmDouble* pe_zz  = NULL; IssmDouble* pe_xz  = NULL; IssmDouble* pe_yz  = NULL;
+		if(dim==3){
+			pe_zz = xNewZeroInit<IssmDouble>(tnumnodes);
+			pe_xz = xNewZeroInit<IssmDouble>(tnumnodes);
+			pe_yz = xNewZeroInit<IssmDouble>(tnumnodes);
+		}
+
+		/*Get previous d*/
+		Input* epsxx_input=element->GetInput(StrainRatexxEnum); _assert_(epsxx_input);
+		Input* epsyy_input=element->GetInput(StrainRateyyEnum); _assert_(epsyy_input);
+		Input* epsxy_input=element->GetInput(StrainRatexyEnum); _assert_(epsxy_input);
+		Input* epszz_input=NULL; Input* epsxz_input=NULL; Input* epsyz_input=NULL;
+		if(dim==3){
+			epszz_input=element->GetInput(StrainRatezzEnum); _assert_(epszz_input);
+			epsxz_input=element->GetInput(StrainRatexzEnum); _assert_(epsxz_input);
+			epsyz_input=element->GetInput(StrainRateyzEnum); _assert_(epsyz_input);
+		}
+
+		/*Get tau*/
+		Input* sigmapxx_input=element->GetInput(DeviatoricStressxxEnum); _assert_(sigmapxx_input);
+		Input* sigmapyy_input=element->GetInput(DeviatoricStressyyEnum); _assert_(sigmapyy_input);
+		Input* sigmapxy_input=element->GetInput(DeviatoricStressxyEnum); _assert_(sigmapxy_input);
+		Input* sigmapzz_input=NULL; Input* sigmapxz_input=NULL; Input* sigmapyz_input=NULL;
+		if(dim==3){
+			sigmapzz_input=element->GetInput(DeviatoricStresszzEnum); _assert_(sigmapzz_input);
+			sigmapxz_input=element->GetInput(DeviatoricStressxzEnum); _assert_(sigmapxz_input);
+			sigmapyz_input=element->GetInput(DeviatoricStressyzEnum); _assert_(sigmapyz_input);
+		}
+
+		Gauss* gauss=element->NewGauss(5);
+		for(int ig=gauss->begin();ig<gauss->end();ig++){
+			gauss->GaussPoint(ig);
+			element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+			element->NodalFunctionsTensor(tbasis,gauss);
+
+			/*Get tau from inputs*/
+			sigmapxx_input->GetInputValue(&sigmapxx,gauss);
+			sigmapyy_input->GetInputValue(&sigmapyy,gauss);
+			sigmapxy_input->GetInputValue(&sigmapxy,gauss);
+			if(dim==3){
+				sigmapzz_input->GetInputValue(&sigmapzz,gauss);
+				sigmapxz_input->GetInputValue(&sigmapxz,gauss);
+				sigmapyz_input->GetInputValue(&sigmapyz,gauss);
+			}
+
+			/*Get previous d*/
+			epsxx_input->GetInputValue(&epsxx_old,gauss);
+			epsyy_input->GetInputValue(&epsyy_old,gauss);
+			epsxy_input->GetInputValue(&epsxy_old,gauss);
+			if(dim==3){
+				epszz_input->GetInputValue(&epszz_old,gauss);
+				epsxz_input->GetInputValue(&epsxz_old,gauss);
+				epsyz_input->GetInputValue(&epsyz_old,gauss);
+			}
+
+			/*Calculate d from previous results*/
+			vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+			vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+			if(dim==3){
+				vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
+			}
+			epsxx = dvx[0];
+			epsyy = dvy[1];
+			epsxy = 0.5*(dvx[1] + dvy[0]); 
+			if(dim==3){
+				epszz = dvz[2];               
+				epsxz = 0.5*(dvx[2] + dvz[0]);
+				epsyz = 0.5*(dvy[2] + dvz[1]);
+			}
+
+			/*Solve 2 eta_0 |d|^s-1 + r |d| = |rD(u) + tau|*/
+			IssmDouble coef1,coef2,coef3;
+			B_input->GetInputValue(&B,gauss);
+			n_input->GetInputValue(&n,gauss);
+			coef1 = B*pow(1./sqrt(2.),(1.-n)/n); //2 eta_0 = 2 * B/(2* (1/sqrt(2)  )^(n-1)/n ) 
+			coef2 = r;
+			if(dim==2){
+				coef3 = sqrt(
+							  (r*epsxx + sigmapxx)*(r*epsxx + sigmapxx)
+							+ (r*epsyy + sigmapyy)*(r*epsyy + sigmapyy)
+							+ 2*(r*epsxy + sigmapxy)*(r*epsxy + sigmapxy)
+							);
+			}
+			else{
+				coef3 = sqrt(
+					  		  (r*epsxx + sigmapxx)*(r*epsxx + sigmapxx)
+							+ (r*epsyy + sigmapyy)*(r*epsyy + sigmapyy)
+							+ (r*epszz + sigmapzz)*(r*epszz + sigmapzz)
+							+ 2*(r*epsxy + sigmapxy)*(r*epsxy + sigmapxy)
+							+ 2*(r*epsxz + sigmapxz)*(r*epsxz + sigmapxz)
+							+ 2*(r*epsyz + sigmapyz)*(r*epsyz + sigmapyz)
+							);
+			}
+			IssmDouble dnorm;
+			if(dim==2){
+				dnorm = sqrt( epsxx_old*epsxx_old + epsyy_old*epsyy_old + 2.*epsxy_old*epsxy_old );
+			}
+			else{
+				dnorm = sqrt( epsxx_old*epsxx_old + epsyy_old*epsyy_old + epszz_old*epszz_old 
+							+2.*(epsxy_old*epsxy_old + epsxz_old*epsxz_old + epsyz_old*epsyz_old));
+			}
+			/*Initial guess cannot be 0 otherwise log(0)  - inf*/
+			if(dnorm==0.) dnorm=1.;
+			NewtonSolveDnorm(&dnorm,coef1,coef2,coef3,n,dnorm);
+			_assert_(dnorm>=0.);
+			_assert_(!xIsNan<IssmDouble>(dnorm));
+
+			/*Create Ke*/
+			D_scalar=(coef1*pow(dnorm,(1.-n)/n)+r)*gauss->weight*Jdet;
+			TripleMultiply(tbasis,tnumnodes,1,0,
+						&D_scalar,1,1,0,
+						tbasis,1,tnumnodes,0,
+						Ke,1);
+
+			/*Create Right hand sides*/
+			for(int ii=0;ii<tnumnodes;ii++) pe_xx[ii] += (r*epsxx+sigmapxx)*tbasis[ii]*gauss->weight*Jdet;
+			for(int ii=0;ii<tnumnodes;ii++) pe_yy[ii] += (r*epsyy+sigmapyy)*tbasis[ii]*gauss->weight*Jdet;
+			for(int ii=0;ii<tnumnodes;ii++) pe_xy[ii] += (r*epsxy+sigmapxy)*tbasis[ii]*gauss->weight*Jdet;
+			if(dim==3){
+				for(int ii=0;ii<tnumnodes;ii++) pe_zz[ii] += (r*epszz+sigmapzz)*tbasis[ii]*gauss->weight*Jdet;
+				for(int ii=0;ii<tnumnodes;ii++) pe_xz[ii] += (r*epsxz+sigmapxz)*tbasis[ii]*gauss->weight*Jdet;
+				for(int ii=0;ii<tnumnodes;ii++) pe_yz[ii] += (r*epsyz+sigmapyz)*tbasis[ii]*gauss->weight*Jdet;
+			}
+		}
+
+		/*Solve the systems*/
+		IssmDouble* d_xx = xNew<IssmDouble>(tnumnodes);
+		IssmDouble* d_yy = xNew<IssmDouble>(tnumnodes);
+		IssmDouble* d_xy = xNew<IssmDouble>(tnumnodes);
+		IssmDouble* d_zz = NULL;
+		IssmDouble* d_xz = NULL;
+		IssmDouble* d_yz = NULL;
+		if(dim==2){
+			_assert_(tnumnodes==3);
+			Matrix3x3Solve(&d_xx[0],Ke,pe_xx);
+			Matrix3x3Solve(&d_yy[0],Ke,pe_yy);
+			Matrix3x3Solve(&d_xy[0],Ke,pe_xy);
+			for(int i=0;i<3;i++) _assert_(!xIsNan<IssmDouble>(d_xx[i]));
+			for(int i=0;i<3;i++) _assert_(!xIsNan<IssmDouble>(d_yy[i]));
+			for(int i=0;i<3;i++) _assert_(!xIsNan<IssmDouble>(d_xx[i]));
+			element->AddInput(StrainRatexxEnum,d_xx,P1DGEnum);
+			element->AddInput(StrainRateyyEnum,d_yy,P1DGEnum);
+			element->AddInput(StrainRatexyEnum,d_xy,P1DGEnum);
+		}
+		else{
+			_assert_(tnumnodes==4);
+			d_zz = xNew<IssmDouble>(tnumnodes);
+			d_xz = xNew<IssmDouble>(tnumnodes);
+			d_yz = xNew<IssmDouble>(tnumnodes);
+			Matrix4x4Solve(&d_xx[0],Ke,pe_xx);
+			Matrix4x4Solve(&d_yy[0],Ke,pe_yy);
+			Matrix4x4Solve(&d_xy[0],Ke,pe_xy);
+			Matrix4x4Solve(&d_zz[0],Ke,pe_zz);
+			Matrix4x4Solve(&d_xz[0],Ke,pe_xz);
+			Matrix4x4Solve(&d_yz[0],Ke,pe_yz);
+			element->AddInput(StrainRatexxEnum,d_xx,P1DGEnum);
+			element->AddInput(StrainRateyyEnum,d_yy,P1DGEnum);
+			element->AddInput(StrainRatexyEnum,d_xy,P1DGEnum);
+			element->AddInput(StrainRatezzEnum,d_zz,P1DGEnum);
+			element->AddInput(StrainRatexzEnum,d_xz,P1DGEnum);
+			element->AddInput(StrainRateyzEnum,d_yz,P1DGEnum);
+		}
+
+		/*Clean up*/
+		delete gauss;
+		xDelete<IssmDouble>(xyz_list);
+		xDelete<IssmDouble>(tbasis);
+		xDelete<IssmDouble>(Ke);
+		xDelete<IssmDouble>(pe_xx); xDelete<IssmDouble>(d_xx);
+		xDelete<IssmDouble>(pe_yy); xDelete<IssmDouble>(d_yy);
+		xDelete<IssmDouble>(pe_zz); xDelete<IssmDouble>(d_zz);
+		xDelete<IssmDouble>(pe_xy); xDelete<IssmDouble>(d_xy);
+		xDelete<IssmDouble>(pe_xz); xDelete<IssmDouble>(d_xz);
+		xDelete<IssmDouble>(pe_yz); xDelete<IssmDouble>(d_yz);
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolutionFSXTH_tau(Elements* elements,Parameters* parameters){/*{{{*/
+
+	/*Intermediaries*/
+	int         dim,tausize;
+	IssmDouble  epsxx,epsyy,epszz,epsxy,epsxz,epsyz,D_scalar;
+	IssmDouble  d_xx,d_yy,d_zz,d_xy,d_xz,d_yz;
+	IssmDouble  sigmapxx,sigmapyy,sigmapzz,sigmapxy,sigmapxz,sigmapyz;
+	IssmDouble  dvx[3],dvy[3],dvz[3];
+	IssmDouble *xyz_list = NULL;
+	IssmDouble  Jdet,r;
+
+	parameters->FindParam(&r,AugmentedLagrangianREnum);
+	parameters->FindParam(&dim,DomainDimensionEnum);
+	if(dim==2) tausize = 3;
+	else       tausize = 6;
+
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+
+		/*Get inputs and parameters*/
+		element->GetVerticesCoordinates(&xyz_list);
+		Input* vx_input=element->GetInput(VxEnum);                 _assert_(vx_input);
+		Input* vy_input=element->GetInput(VyEnum);                 _assert_(vy_input);
+		Input* vz_input=NULL;
+		if(dim==3){vz_input=element->GetInput(VzEnum); _assert_(vz_input);}
+
+		/*Get previous tau*/
+		Input* sigmapxx_input=element->GetInput(DeviatoricStressxxEnum); _assert_(sigmapxx_input);
+		Input* sigmapyy_input=element->GetInput(DeviatoricStressyyEnum); _assert_(sigmapyy_input);
+		Input* sigmapxy_input=element->GetInput(DeviatoricStressxyEnum); _assert_(sigmapxy_input);
+		Input* sigmapzz_input=NULL; Input* sigmapxz_input=NULL; Input* sigmapyz_input=NULL;
+		if(dim==3){
+			sigmapzz_input=element->GetInput(DeviatoricStresszzEnum); _assert_(sigmapzz_input);
+			sigmapxz_input=element->GetInput(DeviatoricStressxzEnum); _assert_(sigmapxz_input);
+			sigmapyz_input=element->GetInput(DeviatoricStressyzEnum); _assert_(sigmapyz_input);
+		}
+
+		/*Get NEW d*/
+		Input* epsxx_input=element->GetInput(StrainRatexxEnum); _assert_(epsxx_input);
+		Input* epsyy_input=element->GetInput(StrainRateyyEnum); _assert_(epsyy_input);
+		Input* epsxy_input=element->GetInput(StrainRatexyEnum); _assert_(epsxy_input);
+		Input* epszz_input=NULL; Input* epsxz_input=NULL; Input* epsyz_input=NULL;
+		if(dim==3){
+			epszz_input=element->GetInput(StrainRatezzEnum); _assert_(epszz_input);
+			epsxz_input=element->GetInput(StrainRatexzEnum); _assert_(epsxz_input);
+			epsyz_input=element->GetInput(StrainRateyzEnum); _assert_(epsyz_input);
+		}
+
+		/*Fetch number of nodes and dof for this finite element*/
+		int tnumnodes = element->GetNumberOfVertices();      //Tensors, P1 DG
+
+		/*Update tau accordingly*/
+		IssmDouble* tau_xx = xNew<IssmDouble>(tnumnodes);
+		IssmDouble* tau_yy = xNew<IssmDouble>(tnumnodes);
+		IssmDouble* tau_xy = xNew<IssmDouble>(tnumnodes);
+		IssmDouble* tau_zz = NULL;
+		IssmDouble* tau_xz = NULL;
+		IssmDouble* tau_yz = NULL;
+		if(dim==3){
+			tau_zz = xNew<IssmDouble>(tnumnodes);
+			tau_xz = xNew<IssmDouble>(tnumnodes);
+			tau_yz = xNew<IssmDouble>(tnumnodes);
+		}
+		Gauss* gauss = element->NewGauss();
+		for(int ig=0;ig<tnumnodes;ig++){
+			gauss->GaussNode(P1DGEnum,ig);
+
+			/*Get D(u)*/
+			vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+			vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+			if(dim==3){
+				vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
+			}
+			epsxx = dvx[0];
+			epsyy = dvy[1];
+			epsxy = 0.5*(dvx[1] + dvy[0]); 
+			if(dim==3){
+				epszz = dvz[2]; 
+				epsxz = 0.5*(dvx[2] + dvz[0]);
+				epsyz = 0.5*(dvy[2] + dvz[1]);
+			}
+
+			/*Get tau^(n-1) from inputs*/
+			sigmapxx_input->GetInputValue(&sigmapxx,gauss);
+			sigmapyy_input->GetInputValue(&sigmapyy,gauss);
+			sigmapxy_input->GetInputValue(&sigmapxy,gauss);
+			if(dim==3){
+				sigmapzz_input->GetInputValue(&sigmapzz,gauss);
+				sigmapxz_input->GetInputValue(&sigmapxz,gauss);
+				sigmapyz_input->GetInputValue(&sigmapyz,gauss);
+			}
+
+			/*Get new d*/
+			epsxx_input->GetInputValue(&d_xx,gauss);
+			epsyy_input->GetInputValue(&d_yy,gauss);
+			epsxy_input->GetInputValue(&d_xy,gauss);
+			if(dim==3){
+				epszz_input->GetInputValue(&d_zz,gauss);
+				epsxz_input->GetInputValue(&d_xz,gauss);
+				epsyz_input->GetInputValue(&d_yz,gauss);
+			}
+
+			/*Get d and update tau accordingly*/
+			tau_xx[ig] = sigmapxx + r*(epsxx - d_xx);
+			tau_yy[ig] = sigmapyy + r*(epsyy - d_yy);
+			tau_xy[ig] = sigmapxy + r*(epsxy - d_xy);
+			if(dim==3){
+				tau_zz[ig] = sigmapzz + r*(epszz - d_zz);
+				tau_xz[ig] = sigmapxz + r*(epsxz - d_xz);
+				tau_yz[ig] = sigmapyz + r*(epsyz - d_yz);
+			}
+		}
+
+		/*Add inputs*/
+		element->AddInput(DeviatoricStressxxEnum,tau_xx,P1DGEnum);
+		element->AddInput(DeviatoricStressyyEnum,tau_yy,P1DGEnum);
+		element->AddInput(DeviatoricStressxyEnum,tau_xy,P1DGEnum);
+		if(dim==3){
+			element->AddInput(DeviatoricStresszzEnum,tau_zz,P1DGEnum);
+			element->AddInput(DeviatoricStressxzEnum,tau_xz,P1DGEnum);
+			element->AddInput(DeviatoricStressyzEnum,tau_yz,P1DGEnum);
+		}
+
+		/*Clean up and */
+		delete gauss;
+		xDelete<IssmDouble>(xyz_list);
+		xDelete<IssmDouble>(tau_xx);
+		xDelete<IssmDouble>(tau_yy);
+		xDelete<IssmDouble>(tau_zz);
+		xDelete<IssmDouble>(tau_xy);
+		xDelete<IssmDouble>(tau_xz);
+		xDelete<IssmDouble>(tau_yz);
+	}
+}/*}}}*/
+
+/*Coupling (Tiling)*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixCouplingHOFS(Element* element){/*{{{*/
+
+	/*Constants*/
+	int numnodes       = 3*6+1;
+	int numdofp        = 2*6;
+	int numdofs        = 4*6 + 3;
+	int numdoftotal    = (2+4)*6+ 3;
+
+	/*Intermediaries*/
+	int   i,j,init;
+	int*   cs_list     = xNew<int>(6*3+1);
+	int*   cs_list2    = xNew<int>(6*2+1);
+	Node  **node_list  = xNew<Node*>(6*3+1);
+
+	/*Some parameters needed*/
+	init = element->FiniteElement();
+
+	/*prepare node list*/
+	for(i=0;i<6+1;i++){
+		node_list[i+6] = element->GetNode(i);
+		cs_list[i+6]   = XYZEnum;
+		cs_list2[i]    = XYZEnum;
+	}
+	for(i=0;i<6;i++){
+		node_list[i]       = element->GetNode(i);
+		node_list[i+2*6+1] = element->GetNode(i+6*1);
+		cs_list[i]         = XYEnum;
+		cs_list[i+2*6+1]   = PressureEnum;
+		cs_list2[i+6+1]    = PressureEnum;
+	}
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=element->NewElementMatrixCoupling(6,HOApproximationEnum);
+	ElementMatrix* Ke2=element->NewElementMatrix(FSvelocityEnum);
+	ElementMatrix* Ke=new ElementMatrix(Ke1,Ke2);
+	delete Ke1; delete Ke2;
+
+	/*Compute HO Matrix with P1 element type\n");*/
+	Ke1=CreateKMatrixFS(element); element->TransformInvStiffnessMatrixCoord(Ke1,node_list,2*6+1,cs_list2);
+	int indices[3]={18,19,20};
+	Ke1->StaticCondensation(3,&indices[0]);
+	element->SetTemporaryElementType(P1Enum); // P1 needed for HO
+	Ke2=CreateKMatrixHO(element); element->TransformInvStiffnessMatrixCoord(Ke2,XYEnum);
+	element->SetTemporaryElementType(init); // P1 needed for HO
+	/*Compute FS Matrix and condense it \n");*/
+
+	for(i=0;i<numdofs;i++) for(j=0;j<6;j++){
+		Ke->values[(i+numdofp)*numdoftotal+2*j+0]+=Ke1->values[i*numdofs+3*j+0];
+		Ke->values[(i+numdofp)*numdoftotal+2*j+1]+=Ke1->values[i*numdofs+3*j+1];
+	}
+	for(i=0;i<numdofp;i++) for(j=0;j<6;j++){
+		Ke->values[i*numdoftotal+numdofp+3*j+0]+=Ke2->values[i*numdofp+2*j+0];
+		Ke->values[i*numdoftotal+numdofp+3*j+1]+=Ke2->values[i*numdofp+2*j+1];
+	}
+
+	/*Transform Coordinate System*/ //Do not transform, already done in the matrices
+	element->TransformStiffnessMatrixCoord(Ke,node_list,numnodes,cs_list);
+
+	/*clean-up and return*/
+	xDelete<int>(cs_list);
+	xDelete<int>(cs_list2);
+	xDelete<Node*>(node_list);
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixCouplingSSAFS(Element* element){/*{{{*/
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixCouplingSSAFSViscous(element);
+	ElementMatrix* Ke2=CreateKMatrixCouplingSSAFSFriction(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixCouplingSSAFSFriction(Element* element){/*{{{*/
+
+	/*Constants*/
+	const int numdofs   = (6+1)*3 + 6*1;
+	const int numdofm   = 6 *2;
+	const int numdof2d  = 3 *3;
+	const int numdof2dm = 3 *2;
+	const int numdoftot = 6*2 + (6+1)*3 +6; // HO + FS vel + FS Pressure
+
+	/*Intermediaries */
+	int        i,j,approximation;
+	int        dim=3;
+	IssmDouble FSreconditioning,viscosity,alpha2_gauss,Jdet2d;
+	IssmDouble bed_normal[3];
+	IssmDouble LSSAFS[8][numdof2dm];
+	IssmDouble LprimeSSAFS[8][numdofs];
+	IssmDouble DLSSAFS[8][8]={0.0};
+	IssmDouble LFSSSA[4][numdof2d];
+	IssmDouble LprimeFSSSA[4][numdof2dm];
+	IssmDouble DLFSSSA[4][4]={0.0};
+	IssmDouble Ke_drag[numdof2dm][numdofs]={0.0};
+	IssmDouble Ke_drag2[numdof2d][numdof2dm]={0.0};
+	IssmDouble *xyz_list      = NULL;
+	IssmDouble *xyz_list_tria = NULL;
+
+	/*If on water or not FS, skip stiffness: */
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(element->IsFloating() || !element->IsOnBase()) return NULL;
+
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numnodes  = 2*vnumnodes-1+pnumnodes;
+
+	/*Prepare node list*/
+	int* cs_list = xNew<int>(2*vnumnodes-1+pnumnodes);
+	Node **node_list = xNew<Node*>(2*vnumnodes-1+pnumnodes);
+	for(i=0;i<vnumnodes-1;i++){
+		node_list[i] = element->GetNode(i);
+		cs_list[i]   = XYEnum;
+	}
+	for(i=0;i<vnumnodes;i++){
+		node_list[i+vnumnodes-1] = element->GetNode(i);
+		cs_list[i+vnumnodes-1]   = XYZEnum;
+	}
+	for(i=0;i<pnumnodes;i++){
+		node_list[2*vnumnodes-1+i] = element->GetNode(vnumnodes+i);
+		cs_list[2*vnumnodes-1+i]   = PressureEnum;
+	}
+
+	ElementMatrix* Ke1=element->NewElementMatrixCoupling(6,SSAApproximationEnum);
+	ElementMatrix* Ke2=element->NewElementMatrix(FSvelocityEnum);
+	ElementMatrix* Ke=new ElementMatrix(Ke1,Ke2);
+	delete Ke1; delete Ke2;
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetVerticesCoordinatesBase(&xyz_list_tria);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input=element->GetInput(VzEnum); _assert_(vz_input);
+
+	/*build friction object, used later on: */
+	Friction* friction=new Friction(element,3);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminantBase(&Jdet2d,xyz_list_tria,gauss);
+		this->GetLSSAFS(&LSSAFS[0][0], element,gauss);
+		this->GetLprimeSSAFS(&LprimeSSAFS[0][0], element,xyz_list, gauss);
+		this->GetLFSSSA(&LFSSSA[0][0],element, gauss);
+		this->GetLprimeFSSSA(&LprimeFSSSA[0][0], element,xyz_list, gauss);
+
+		element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+
+		element->NormalBase(&bed_normal[0],xyz_list_tria);
+		friction->GetAlpha2(&alpha2_gauss,gauss);
+
+		DLSSAFS[0][0]=alpha2_gauss*gauss->weight*Jdet2d;
+		DLSSAFS[1][1]=alpha2_gauss*gauss->weight*Jdet2d;
+		DLSSAFS[2][2]=-alpha2_gauss*gauss->weight*Jdet2d*bed_normal[0]*bed_normal[2];
+		DLSSAFS[3][3]=-alpha2_gauss*gauss->weight*Jdet2d*bed_normal[1]*bed_normal[2];
+		DLSSAFS[4][4]=-2*viscosity*gauss->weight*Jdet2d*bed_normal[0];
+		DLSSAFS[5][5]=-2*viscosity*gauss->weight*Jdet2d*bed_normal[1];
+		DLSSAFS[6][6]=FSreconditioning*gauss->weight*Jdet2d*bed_normal[0];
+		DLSSAFS[7][7]=FSreconditioning*gauss->weight*Jdet2d*bed_normal[1];
+
+		DLFSSSA[0][0]=alpha2_gauss*gauss->weight*Jdet2d;
+		DLFSSSA[1][1]=alpha2_gauss*gauss->weight*Jdet2d;
+		DLFSSSA[2][2]=-alpha2_gauss*gauss->weight*Jdet2d*bed_normal[0]*bed_normal[2];
+		DLFSSSA[3][3]=-alpha2_gauss*gauss->weight*Jdet2d*bed_normal[1]*bed_normal[2];
+
+		TripleMultiply( &LSSAFS[0][0],8,numdof2dm,1,
+					&DLSSAFS[0][0],8,8,0,
+					&LprimeSSAFS[0][0],8,numdofs,0,
+					&Ke_drag[0][0],1);
+
+		TripleMultiply( &LFSSSA[0][0],4,numdof2d,1,
+					&DLFSSSA[0][0],4,4,0,
+					&LprimeFSSSA[0][0],4,numdof2dm,0,
+					&Ke_drag2[0][0],1);
+	}
+
+	for(i=0;i<numdof2dm;i++) for(j=0;j<numdofs;j++) Ke->values[i*numdoftot+j+numdofm]+=Ke_drag[i][j];
+	for(i=0;i<numdof2d;i++) for(j=0;j<numdof2dm;j++) Ke->values[(i+numdofm)*numdoftot+j]+=Ke_drag2[i][j];
+		
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,node_list,numnodes,cs_list);
+
+	/*Clean up and return*/
+	xDelete<int>(cs_list);
+	xDelete<Node*>(node_list);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_tria);
+	delete gauss;
+	delete friction;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixCouplingSSAFSViscous(Element* element){/*{{{*/
+
+	/*Constants*/
+	const int numdofm     = 2 *3;
+	const int numdofs     = 4 *6+ 3;
+	const int numdoftotal = 2 *numdofm+numdofs;
+
+	/*Intermediaries */
+	int        i,j;
+	int        dim=3;
+	IssmDouble Jdet,viscosity,FSreconditioning,D_scalar;
+	IssmDouble B[4][numdofs];
+	IssmDouble Bprime[4][numdofm];
+	IssmDouble B2[3][numdofm];
+	IssmDouble Bprime2[3][numdofs];
+	IssmDouble D[4][4]={0.0};            // material matrix, simple scalar matrix.
+	IssmDouble D2[3][3]={0.0};            // material matrix, simple scalar matrix.
+	IssmDouble Ke_gg[numdofs][numdofm]={0.0}; //local element stiffness matrix 
+	IssmDouble Ke_gg2[numdofm][numdofs]={0.0}; //local element stiffness matrix 
+	IssmDouble *xyz_list    = NULL;
+
+	/*Find penta on bed as FS must be coupled to the dofs on the bed: */
+	Element* pentabase=element->GetBasalElement();
+	Element* basaltria=pentabase->SpawnBasalElement();
+
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numnodes  = 2*vnumnodes-1+pnumnodes;
+
+	/*Prepare node list*/
+	int* cs_list     = xNew<int>(2*vnumnodes-1+pnumnodes);
+	Node **node_list = xNew<Node*>(2*vnumnodes-1+pnumnodes);
+	for(i=0;i<vnumnodes-1;i++){
+		node_list[i] = pentabase->GetNode(i);
+		cs_list[i]   = XYEnum;
+	}
+	for(i=0;i<vnumnodes;i++){
+		node_list[i+vnumnodes-1] = element->GetNode(i);
+		cs_list[i+vnumnodes-1]   = XYZEnum;
+	}
+	for(i=0;i<pnumnodes;i++){
+		node_list[2*vnumnodes-1+i] = element->GetNode(vnumnodes+i);
+		cs_list[2*vnumnodes-1+i]   = PressureEnum;
+	}
+
+	/*Initialize Element matrix and return if necessary*/
+	ElementMatrix* Ke1=pentabase->NewElementMatrixCoupling(6,SSAApproximationEnum);
+	ElementMatrix* Ke2=element->NewElementMatrix(FSvelocityEnum);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+	delete Ke1; delete Ke2;
+
+	/* Get node coordinates and dof list: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input=element->GetInput(VzEnum); _assert_(vz_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(5);
+	Gauss* gauss_tria=new GaussTria();
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+		gauss->SynchronizeGaussBase(gauss_tria);
+
+		element->JacobianDeterminant(&Jdet, xyz_list,gauss);
+		this->GetBSSAFS(&B[0][0],element,xyz_list, gauss);
+		this->GetBprimeSSAFSTria(&Bprime[0][0], basaltria,xyz_list, gauss_tria);
+		this->GetBSSAFSTria(&B2[0][0], basaltria,xyz_list, gauss_tria);
+		this->GetBprimeSSAFS(&Bprime2[0][0], element,xyz_list, gauss);
+
+		element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+
+		D_scalar=2*viscosity*gauss->weight*Jdet;
+		for (i=0;i<3;i++) D[i][i]=D_scalar;
+		D[3][3]=-gauss->weight*Jdet*FSreconditioning;
+		for (i=0;i<3;i++) D2[i][i]=D_scalar;
+
+		TripleMultiply( &B[0][0],4,numdofs,1,
+					&D[0][0],4,4,0,
+					&Bprime[0][0],4,numdofm,0,
+					&Ke_gg[0][0],1);
+
+		TripleMultiply( &B2[0][0],3,numdofm,1,
+					&D2[0][0],3,3,0,
+					&Bprime2[0][0],3,numdofs,0,
+					&Ke_gg2[0][0],1);
+
+	} 
+	for(i=0;i<numdofs;i++) for(j=0;j<numdofm;j++) Ke->values[(i+2*numdofm)*numdoftotal+j]+=Ke_gg[i][j];
+	for(i=0;i<numdofm;i++) for(j=0;j<numdofs;j++) Ke->values[i*numdoftotal+(j+2*numdofm)]+=Ke_gg2[i][j];
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,node_list,numnodes,cs_list);
+
+	/*Clean-up and return*/
+	xDelete<int>(cs_list);
+	xDelete<Node*>(node_list);
+	xDelete<IssmDouble>(xyz_list);
+	delete basaltria->material; delete basaltria;
+	delete gauss;
+	delete gauss_tria;
+	return Ke;
+
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixCouplingSSAHO(Element* element){/*{{{*/
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixCouplingSSAHOViscous(element);
+	ElementMatrix* Ke2=CreateKMatrixCouplingSSAHOFriction(element);
+	ElementMatrix* Ke=new ElementMatrix(Ke1,Ke2);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixCouplingSSAHOFriction(Element* element){/*{{{*/
+
+	if(element->IsFloating() || !element->IsOnBase()) return NULL;
+
+	/*Constants*/
+	int numnodes    = element->GetNumberOfNodes();
+	int numdof      = 2*numnodes;
+	int numdoftotal = 4*numnodes;
+
+	/*Intermediaries */
+	int         i,j;
+	IssmDouble  Jdet2d,alpha2;
+	IssmDouble *xyz_list_tria = NULL;
+	IssmDouble* L             = xNewZeroInit<IssmDouble>(2*numdof);
+	IssmDouble  DL[2][2]      = {{ 0,0 },{0,0}}; //for basal drag
+	IssmDouble  DL_scalar;
+	IssmDouble* Ke_gg         = xNewZeroInit<IssmDouble>(numdof*numdof);
+	Node      **node_list     = xNew<Node*>(2*numnodes);
+	int*        cs_list       = xNew<int>(2*numnodes);
+
+	/*Initialize Element matrix and return if necessary*/
+	ElementMatrix* Ke1=element->NewElementMatrix(SSAApproximationEnum);
+	ElementMatrix* Ke2=element->NewElementMatrix(HOApproximationEnum);
+	ElementMatrix* Ke=new ElementMatrix(Ke1,Ke2);
+	delete Ke1; delete Ke2;
+
+	/*Prepare node list*/
+	for(i=0;i<numnodes;i++){
+		node_list[i+0*numnodes] = element->GetNode(i);
+		node_list[i+1*numnodes] = element->GetNode(i);
+		cs_list[i+0*numnodes] = XYEnum;
+		cs_list[i+1*numnodes] = XYEnum;
+	}
+
+	/*retrieve inputs :*/
+	element->GetVerticesCoordinatesBase(&xyz_list_tria);
+
+	/*build friction object, used later on: */
+	Friction* friction=new Friction(element,2);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		/*Friction: */
+		friction->GetAlpha2(&alpha2,gauss);
+		element->JacobianDeterminantBase(&Jdet2d, xyz_list_tria,gauss);
+		this->GetBHOFriction(L,element,3,xyz_list_tria,gauss);
+
+		DL_scalar=alpha2*gauss->weight*Jdet2d;
+		for (i=0;i<2;i++) DL[i][i]=DL_scalar; 
+
+		/*  Do the triple producte tL*D*L: */
+		TripleMultiply( L,2,numdof,1,
+					&DL[0][0],2,2,0,
+					L,2,numdof,0,
+					Ke_gg,1);
+	}
+
+	for(i=0;i<numdof;i++) for(j=0;j<numdof;j++) Ke->values[i*numdoftotal+(numdof+j)]+=Ke_gg[i*numdof+j];
+	for(i=0;i<numdof;i++) for(j=0;j<numdof;j++) Ke->values[(i+numdof)*numdoftotal+j]+=Ke_gg[i*numdof+j];
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,node_list,2*numnodes,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	delete friction;
+	xDelete<int>(cs_list);
+	xDelete<Node*>(node_list);
+	xDelete<IssmDouble>(xyz_list_tria);
+	xDelete<IssmDouble>(Ke_gg);
+	xDelete<IssmDouble>(L);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixCouplingSSAHOViscous(Element* element){/*{{{*/
+
+	/*Constants*/
+	int numnodes    = element->GetNumberOfNodes();
+	int numdofm     = 1 *numnodes; //*2/2
+	int numdofp     = 2 *numnodes;
+	int numdoftotal = 2 *2 *numnodes;//2 dof per nodes and 2 sets of nodes for HO and SSA
+
+	/*Intermediaries */
+	int         i,j;
+	IssmDouble  Jdet,viscosity,oldviscosity,newviscosity,viscosity_overshoot; //viscosity
+	IssmDouble  *xyz_list      = NULL;
+	IssmDouble* B              = xNew<IssmDouble>(3*numdofp);
+	IssmDouble* Bprime         = xNew<IssmDouble>(3*numdofm);
+	IssmDouble  D[3][3]={0.0}; // material matrix, simple scalar matrix.
+	IssmDouble  D_scalar;
+	IssmDouble* Ke_gg          = xNewZeroInit<IssmDouble>(numdofp*numdofm);
+	Node       **node_list     = xNew<Node*>(2*numnodes);
+	int*         cs_list= xNew<int>(2*numnodes);
+
+	/*Find penta on bed as HO must be coupled to the dofs on the bed: */
+	Element* pentabase=element->GetBasalElement();
+	Element* basaltria=pentabase->SpawnBasalElement();
+
+	/*prepare node list*/
+	for(i=0;i<numnodes;i++){
+		node_list[i+0*numnodes] = pentabase->GetNode(i);
+		node_list[i+1*numnodes] = element  ->GetNode(i);
+		cs_list[i+0*numnodes] = XYEnum;
+		cs_list[i+1*numnodes] = XYEnum;
+	}
+
+	/*Initialize Element matrix*/
+	ElementMatrix* Ke1= pentabase->NewElementMatrix(SSAApproximationEnum);
+	ElementMatrix* Ke2= element  ->NewElementMatrix(HOApproximationEnum);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+	delete Ke1; delete Ke2;
+
+	/* Get node coordinates and dof list: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&viscosity_overshoot,StressbalanceViscosityOvershootEnum);
+	Input* vx_input   =element->GetInput(VxEnum);       _assert_(vx_input);
+	Input* vy_input   =element->GetInput(VyEnum);       _assert_(vy_input);
+	Input* vxold_input=element->GetInput(VxPicardEnum); _assert_(vxold_input);
+	Input* vyold_input=element->GetInput(VyPicardEnum); _assert_(vyold_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(5);
+	Gauss* gauss_tria=new GaussTria();
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+		gauss->SynchronizeGaussBase(gauss_tria);
+
+		element->JacobianDeterminant(&Jdet, xyz_list,gauss);
+		this->GetBSSAHO(B, element,xyz_list, gauss);
+		this->GetBSSAprime(Bprime,basaltria,2,xyz_list, gauss_tria); 
+		element->material->ViscosityHO(&viscosity,3,xyz_list,gauss,vx_input,vy_input);
+		element->material->ViscosityHO(&oldviscosity,3,xyz_list,gauss,vxold_input,vyold_input);
+
+		newviscosity=viscosity+viscosity_overshoot*(viscosity-oldviscosity);
+		D_scalar=2*newviscosity*gauss->weight*Jdet;
+		for (i=0;i<3;i++) D[i][i]=D_scalar;
+
+		TripleMultiply( B,3,numdofp,1,
+					&D[0][0],3,3,0,
+					Bprime,3,numdofm,0,
+					Ke_gg,1);
+	} 
+	for(i=0;i<numdofp;i++) for(j=0;j<numdofm;j++) Ke->values[(i+2*numdofm)*numdoftotal+j]+=Ke_gg[i*numdofm+j];
+	for(i=0;i<numdofm;i++) for(j=0;j<numdofp;j++) Ke->values[i*numdoftotal+(j+2*numdofm)]+=Ke_gg[j*numdofm+i];
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,node_list,2*numnodes,cs_list);
+
+	/*Clean-up and return*/
+	basaltria->DeleteMaterials(); delete basaltria;
+	
+	delete gauss;
+	delete gauss_tria;
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(Ke_gg);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<Node*>(node_list);
+	xDelete<int>(cs_list);
+	return Ke;
+
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixHOFS(Element* element){/*{{{*/
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixFS(element);
+	int indices[3]={18,19,20};
+	Ke1->StaticCondensation(3,&indices[0]);
+	int init = element->FiniteElement();
+	element->SetTemporaryElementType(P1Enum); // P1 needed for HO
+	ElementMatrix* Ke2=CreateKMatrixHO(element);
+	element->SetTemporaryElementType(init); // P1 needed for HO
+	ElementMatrix* Ke3=CreateKMatrixCouplingHOFS(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2,Ke3);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	delete Ke3;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixSSAFS(Element* element){/*{{{*/
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixFS(element);
+	int indices[3]={18,19,20};
+	Ke1->StaticCondensation(3,&indices[0]);
+	int init = element->FiniteElement();
+	element->SetTemporaryElementType(P1Enum); 
+	ElementMatrix* Ke2=CreateKMatrixSSA3d(element);
+	element->SetTemporaryElementType(init); 
+	ElementMatrix* Ke3=CreateKMatrixCouplingSSAFS(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2,Ke3);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	delete Ke3;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixSSAHO(Element* element){/*{{{*/
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixSSA3d(element);
+	ElementMatrix* Ke2=CreateKMatrixHO(element);
+	ElementMatrix* Ke3=CreateKMatrixCouplingSSAHO(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2,Ke3);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	delete Ke3;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixSSA3d(Element* element){/*{{{*/
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixSSA3dViscous(element);
+	ElementMatrix* Ke2=CreateKMatrixSSA3dFriction(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixSSA3dFriction(Element* element){/*{{{*/
+
+	/*Initialize Element matrix and return if necessary*/
+	if(element->IsFloating() || !element->IsOnBase()) return NULL;
+
+	/*Build a tria element using the 3 nodes of the base of the penta. Then use 
+	 * the tria functionality to build a friction stiffness matrix on these 3
+	 * nodes: */
+	Element* basalelement = element->SpawnBasalElement();
+	ElementMatrix* Ke=CreateKMatrixSSAFriction(basalelement);
+	basalelement->DeleteMaterials(); delete basalelement;
+
+	/*clean-up and return*/
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixSSA3dViscous(Element* element){/*{{{*/
+
+	/*Constants*/
+	const int    numdof2d=2*3;
+
+	/*Intermediaries */
+	int         i,j,approximation;
+	int         dim=3;
+	IssmDouble  Jdet,viscosity,oldviscosity,newviscosity,viscosity_overshoot;
+	IssmDouble  epsilon[5],oldepsilon[5];       /* epsilon=[exx,eyy,exy,exz,eyz];*/
+	IssmDouble  epsilons[6];                    //6 for FS
+	IssmDouble  B[3][numdof2d];
+	IssmDouble  Bprime[3][numdof2d];
+	IssmDouble  D[3][3]= {0.0};                 // material matrix, simple scalar matrix.
+	IssmDouble  D_scalar;
+	IssmDouble  Ke_gg[numdof2d][numdof2d]={0.0};
+	IssmDouble  *xyz_list  = NULL;
+
+	/*Find penta on bed as this is a SSA elements: */
+	Element* pentabase=element->GetBasalElement();
+	Element* basaltria=pentabase->SpawnBasalElement();
+
+	/*Initialize Element matrix*/
+	ElementMatrix* Ke=basaltria->NewElementMatrix(SSAApproximationEnum);
+	element->GetInputValue(&approximation,ApproximationEnum);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&viscosity_overshoot,StressbalanceViscosityOvershootEnum);
+	Input* vx_input   =element->GetInput(VxEnum);       _assert_(vx_input);
+	Input* vy_input   =element->GetInput(VyEnum);       _assert_(vy_input);
+	Input* vxold_input=element->GetInput(VxPicardEnum); _assert_(vxold_input);
+	Input* vyold_input=element->GetInput(VyPicardEnum); _assert_(vyold_input);
+	Input* vz_input   =element->GetInput(VzEnum);       _assert_(vz_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(5);
+	Gauss* gauss_tria=new GaussTria();
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+		gauss->SynchronizeGaussBase(gauss_tria);
+
+		element->JacobianDeterminant(&Jdet, xyz_list,gauss);
+		this->GetBSSA(&B[0][0],basaltria,2,xyz_list, gauss_tria);
+		this->GetBSSAprime(&Bprime[0][0],basaltria,2,xyz_list, gauss_tria);
+
+		if(approximation==SSAHOApproximationEnum){
+			element->material->ViscosityHO(&viscosity,dim,xyz_list,gauss,vx_input,vy_input);
+			element->material->ViscosityHO(&oldviscosity,dim,xyz_list,gauss,vxold_input,vyold_input);
+			newviscosity=viscosity+viscosity_overshoot*(viscosity-oldviscosity);
+		}
+		else if (approximation==SSAFSApproximationEnum){
+			element->material->ViscosityFS(&newviscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+		}
+		else _error_("approximation " << approximation << " (" << EnumToStringx(approximation) << ") not supported yet");
+
+		D_scalar=2*newviscosity*gauss->weight*Jdet;
+		for (i=0;i<3;i++) D[i][i]=D_scalar;
+
+		TripleMultiply( &B[0][0],3,numdof2d,1,
+					&D[0][0],3,3,0,
+					&Bprime[0][0],3,numdof2d,0,
+					&Ke_gg[0][0],1);
+
+	}
+	for(i=0;i<numdof2d;i++) for(j=0;j<numdof2d;j++) Ke->values[i*numdof2d+j]+=Ke_gg[i][j];
+
+	/*Transform Coordinate System*/
+	basaltria->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	delete basaltria->material;
+	delete basaltria;
+	delete gauss_tria;
+	delete gauss;
+	return Ke;
+
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorCouplingHOFS(Element* element){/*{{{*/
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorCouplingHOFSViscous(element);
+	ElementVector* pe2=CreatePVectorCouplingHOFSFriction(element);
+	ElementVector* pe =new ElementVector(pe1,pe2);
+
+	/*clean-up and return*/
+	delete pe1;
+	delete pe2;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorCouplingHOFSFriction(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         i,approximation;
+	int         dim=3;
+	IssmDouble  Jdet,Jdet2d,FSreconditioning;
+	IssmDouble	bed_normal[3];
+	IssmDouble  viscosity, w, alpha2_gauss;
+	IssmDouble  dw[3];
+	IssmDouble	*xyz_list_tria = NULL;
+	IssmDouble  *xyz_list      = NULL;
+	IssmDouble  basis[6]; //for the six nodes of the penta
+
+	/*Initialize Element vector and return if necessary*/
+	if(!element->IsOnBase() || element->IsFloating()) return NULL;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation!=HOFSApproximationEnum) return NULL;
+
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numnodes  = vnumnodes+pnumnodes;
+
+	/*Prepare coordinate system list*/
+	int*   cs_list   = xNew<int>(vnumnodes+pnumnodes);
+	Node **node_list = xNew<Node*>(vnumnodes+pnumnodes);
+	for(i=0;i<vnumnodes;i++){
+		cs_list[i]           = XYZEnum;
+		node_list[i]           = element->GetNode(i);
+	}
+	for(i=0;i<pnumnodes;i++){
+		cs_list[vnumnodes+i] = PressureEnum;
+		node_list[vnumnodes+i] = element->GetNode(vnumnodes+i);
+	}
+
+	ElementVector* pe=element->NewElementVector(FSvelocityEnum);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetVerticesCoordinatesBase(&xyz_list_tria);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	Input* vx_input=  element->GetInput(VxEnum);   _assert_(vx_input);
+	Input* vy_input=  element->GetInput(VyEnum);   _assert_(vy_input);
+	Input* vz_input=  element->GetInput(VzEnum);   _assert_(vz_input);
+	Input* vzHO_input=element->GetInput(VzHOEnum); _assert_(vzHO_input);
+
+	/*build friction object, used later on: */
+	Friction* friction=new Friction(element,3);
+
+	/* Start looping on the number of gauss 2d (nodes on the bedrock) */
+	Gauss* gauss=element->NewGaussBase(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminantBase(&Jdet2d,xyz_list_tria,gauss);
+		element->NodalFunctionsP1(basis, gauss);
+
+		vzHO_input->GetInputValue(&w, gauss);
+		vzHO_input->GetInputDerivativeValue(&dw[0],xyz_list,gauss);
+
+		element->NormalBase(&bed_normal[0],xyz_list_tria);
+		element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+		friction->GetAlpha2(&alpha2_gauss,gauss);
+
+		for(i=0;i<3;i++){
+			pe->values[i*3+0]+=Jdet2d*gauss->weight*(alpha2_gauss*w*bed_normal[0]*bed_normal[2]+2*viscosity*dw[2]*bed_normal[0])*basis[i];
+			pe->values[i*3+1]+=Jdet2d*gauss->weight*(alpha2_gauss*w*bed_normal[1]*bed_normal[2]+2*viscosity*dw[2]*bed_normal[1])*basis[i];
+			pe->values[i*3+2]+=Jdet2d*gauss->weight*2*viscosity*(dw[0]*bed_normal[0]+dw[1]*bed_normal[1]+dw[2]*bed_normal[2])*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,node_list,vnumnodes+pnumnodes,cs_list);
+
+	/*Clean up and return*/
+	xDelete<int>(cs_list);
+	xDelete<Node*>(node_list);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_tria);
+	delete gauss;
+	delete friction;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorCouplingHOFSViscous(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	int         i,approximation;
+	int         dim=3;
+	IssmDouble  viscosity,Jdet,FSreconditioning;
+	IssmDouble  dw[3];
+	IssmDouble  *xyz_list = NULL;
+	IssmDouble  basis[6]; //for the six nodes of the penta
+	IssmDouble  dbasis[3][6]; //for the six nodes of the penta
+
+	/*Initialize Element vector and return if necessary*/
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation!=HOFSApproximationEnum) return NULL;
+	int   vnumnodes = element->NumberofNodesVelocity();
+	int   pnumnodes = element->NumberofNodesPressure();
+
+	/*Prepare coordinate system list*/
+	int*   cs_list   = xNew<int>(vnumnodes+pnumnodes);
+	Node **node_list = xNew<Node*>(vnumnodes+pnumnodes);
+	for(i=0;i<vnumnodes;i++){
+		cs_list[i]             = XYZEnum;
+		node_list[i]           = element->GetNode(i);
+	}
+	for(i=0;i<pnumnodes;i++){
+		cs_list[vnumnodes+i]   = PressureEnum;
+		node_list[vnumnodes+i] = element->GetNode(vnumnodes+i);
+	}
+	ElementVector* pe = element->NewElementVector(FSvelocityEnum);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	Input* vx_input   =element->GetInput(VxEnum);   _assert_(vx_input);
+	Input* vy_input   =element->GetInput(VyEnum);   _assert_(vy_input);
+	Input* vz_input   =element->GetInput(VzEnum);   _assert_(vz_input);
+	Input* vzHO_input=element->GetInput(VzHOEnum);  _assert_(vzHO_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(5);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet, xyz_list,gauss);
+		element->NodalFunctionsP1(&basis[0],gauss);
+		element->NodalFunctionsP1Derivatives(&dbasis[0][0],xyz_list,gauss);
+		
+		element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+		vzHO_input->GetInputDerivativeValue(&dw[0],xyz_list,gauss);
+
+		for(i=0;i<6;i++){
+			pe->values[i*3+0]+=-Jdet*gauss->weight*viscosity*dw[0]*dbasis[2][i];
+			pe->values[i*3+1]+=-Jdet*gauss->weight*viscosity*dw[1]*dbasis[2][i];
+			pe->values[i*3+2]+=-Jdet*gauss->weight*viscosity*(dw[0]*dbasis[0][i]+dw[1]*dbasis[1][i]+2*dw[2]*dbasis[2][i]);
+			pe->values[3*vnumnodes+i]+=Jdet*gauss->weight*FSreconditioning*dw[2]*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,node_list,vnumnodes+pnumnodes,cs_list);
+
+	/*Clean up and return*/
+	xDelete<int>(cs_list);
+	xDelete<Node*>(node_list);
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorCouplingSSAFS(Element* element){/*{{{*/
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorCouplingSSAFSViscous(element);
+	ElementVector* pe2=CreatePVectorCouplingSSAFSFriction(element);
+	ElementVector* pe =new ElementVector(pe1,pe2);
+
+	/*clean-up and return*/
+	delete pe1;
+	delete pe2;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorCouplingSSAFSFriction(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         i,j,approximation;
+	int         dim=3;
+	IssmDouble  Jdet,Jdet2d,FSreconditioning;
+	IssmDouble	bed_normal[3];
+	IssmDouble  viscosity, w, alpha2_gauss;
+	IssmDouble  dw[3];
+	IssmDouble  basis[6]; //for the six nodes of the penta
+	IssmDouble	*xyz_list_tria = NULL;
+	IssmDouble  *xyz_list      = NULL;
+
+	/*Initialize Element vector and return if necessary*/
+	if(!element->IsOnBase() || element->IsFloating()) return NULL;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation!=SSAFSApproximationEnum) return NULL;
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+
+	/*Prepare coordinate system list*/
+	int* cs_list     = xNew<int>(vnumnodes+pnumnodes);
+	Node **node_list = xNew<Node*>(vnumnodes+pnumnodes);
+	for(i=0;i<vnumnodes;i++){
+		cs_list[i]             = XYZEnum;
+		node_list[i]           = element->GetNode(i);
+	}
+	for(i=0;i<pnumnodes;i++){
+		cs_list[vnumnodes+i]   = PressureEnum;
+		node_list[vnumnodes+i] = element->GetNode(vnumnodes+i);
+	}
+	ElementVector* pe=element->NewElementVector(FSvelocityEnum);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetVerticesCoordinatesBase(&xyz_list_tria);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	Input* vx_input=   element->GetInput(VxEnum);    _assert_(vx_input);
+	Input* vy_input=   element->GetInput(VyEnum);    _assert_(vy_input);
+	Input* vz_input=   element->GetInput(VzEnum);    _assert_(vz_input);
+	Input* vzSSA_input=element->GetInput(VzSSAEnum); _assert_(vzSSA_input);
+
+	/*build friction object, used later on: */
+	Friction* friction=new Friction(element,3);
+
+	/* Start looping on the number of gauss 2d (nodes on the bedrock) */
+	Gauss* gauss=element->NewGaussBase(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminantBase(&Jdet2d,xyz_list_tria,gauss);
+		element->NodalFunctionsP1(basis, gauss);
+
+		vzSSA_input->GetInputValue(&w, gauss);
+		vzSSA_input->GetInputDerivativeValue(&dw[0],xyz_list,gauss);
+
+		element->NormalBase(&bed_normal[0],xyz_list_tria);
+		element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+		friction->GetAlpha2(&alpha2_gauss,gauss);
+
+		for(i=0;i<3;i++){
+			pe->values[i*3+0]+=Jdet2d*gauss->weight*(alpha2_gauss*w*bed_normal[0]*bed_normal[2]+2*viscosity*dw[2]*bed_normal[0])*basis[i];
+			pe->values[i*3+1]+=Jdet2d*gauss->weight*(alpha2_gauss*w*bed_normal[1]*bed_normal[2]+2*viscosity*dw[2]*bed_normal[1])*basis[i];
+			pe->values[i*3+2]+=Jdet2d*gauss->weight*2*viscosity*(dw[0]*bed_normal[0]+dw[1]*bed_normal[1]+dw[2]*bed_normal[2])*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,node_list,vnumnodes+pnumnodes,cs_list);
+
+	/*Clean up and return*/
+	xDelete<int>(cs_list);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_tria);
+	xDelete<Node*>(node_list);
+	delete gauss;
+	delete friction;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorCouplingSSAFSViscous(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	int         i,approximation;
+	IssmDouble  viscosity,Jdet,FSreconditioning;
+	IssmDouble  dw[3];
+	IssmDouble  *xyz_list = NULL;
+	IssmDouble  basis[6]; //for the six nodes of the penta
+	IssmDouble  dbasis[3][6]; //for the six nodes of the penta
+
+	/*Initialize Element vector and return if necessary*/
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation!=SSAFSApproximationEnum) return NULL;
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	Node **node_list = xNew<Node*>(vnumnodes+pnumnodes);
+	for(i=0;i<vnumnodes;i++){
+		cs_list[i]             = XYZEnum;
+		node_list[i]           = element->GetNode(i);
+	}
+	for(i=0;i<pnumnodes;i++){
+		cs_list[vnumnodes+i]   = PressureEnum;
+		node_list[vnumnodes+i] = element->GetNode(vnumnodes+i);
+	}
+	ElementVector* pe=element->NewElementVector(FSvelocityEnum);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	Input* vx_input   =element->GetInput(VxEnum);      _assert_(vx_input);
+	Input* vy_input   =element->GetInput(VyEnum);      _assert_(vy_input);
+	Input* vz_input   =element->GetInput(VzEnum);      _assert_(vz_input);
+	Input* vzSSA_input=element->GetInput(VzSSAEnum);   _assert_(vzSSA_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(5);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsP1(&basis[0], gauss);
+		element->NodalFunctionsP1Derivatives(&dbasis[0][0],xyz_list, gauss);
+
+		vzSSA_input->GetInputDerivativeValue(&dw[0],xyz_list,gauss);
+		element->material->ViscosityFS(&viscosity,3,xyz_list,gauss,vx_input,vy_input,vz_input);
+
+		for(i=0;i<6;i++){
+			pe->values[i*3+0]+=-Jdet*gauss->weight*viscosity*dw[0]*dbasis[2][i];
+			pe->values[i*3+1]+=-Jdet*gauss->weight*viscosity*dw[1]*dbasis[2][i];
+			pe->values[i*3+2]+=-Jdet*gauss->weight*viscosity*(dw[0]*dbasis[0][i]+dw[1]*dbasis[1][i]+2*dw[2]*dbasis[2][i]);
+			pe->values[3*vnumnodes+i]+=Jdet*gauss->weight*FSreconditioning*dw[2]*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,node_list,vnumnodes+pnumnodes,cs_list);
+
+	/*Clean up and return*/
+	xDelete<int>(cs_list);
+	xDelete<Node*>(node_list);
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorHOFS(Element* element){/*{{{*/
+
+	/*compute all load vectors for this element*/
+	int init = element->FiniteElement();
+	element->SetTemporaryElementType(P1Enum);
+	ElementVector* pe1=CreatePVectorHO(element);
+	element->SetTemporaryElementType(init);
+	ElementVector* pe2=CreatePVectorFS(element);
+	int indices[3]={18,19,20};
+	element->SetTemporaryElementType(MINIcondensedEnum);
+	ElementMatrix* Ke = CreateKMatrixFS(element);
+	element->SetTemporaryElementType(init);
+	pe2->StaticCondensation(Ke,3,&indices[0]);
+	delete Ke;
+	ElementVector* pe3=CreatePVectorCouplingHOFS(element);
+	ElementVector* pe =new ElementVector(pe1,pe2,pe3);
+
+	/*clean-up and return*/
+	delete pe1;
+	delete pe2;
+	delete pe3;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorSSAFS(Element* element){/*{{{*/
+
+	/*compute all load vectors for this element*/
+	int init = element->FiniteElement();
+	element->SetTemporaryElementType(P1Enum); // P1 needed for HO
+	ElementVector* pe1=CreatePVectorSSA(element);
+	element->SetTemporaryElementType(init); // P1 needed for HO
+	ElementVector* pe2=CreatePVectorFS(element);
+	int indices[3]={18,19,20};
+	element->SetTemporaryElementType(MINIcondensedEnum); // P1 needed for HO
+	ElementMatrix* Ke = CreateKMatrixFS(element);
+	element->SetTemporaryElementType(init); // P1 needed for HO
+	pe2->StaticCondensation(Ke,3,&indices[0]);
+	delete Ke;
+	ElementVector* pe3=CreatePVectorCouplingSSAFS(element);
+	ElementVector* pe =new ElementVector(pe1,pe2,pe3);
+
+	/*clean-up and return*/
+	delete pe1;
+	delete pe2;
+	delete pe3;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorSSAHO(Element* element){/*{{{*/
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorSSA(element);
+	ElementVector* pe2=CreatePVectorHO(element);
+	ElementVector* pe =new ElementVector(pe1,pe2);
+
+	/*clean-up and return*/
+	delete pe1;
+	delete pe2;
+	return pe;
+}/*}}}*/
+void           StressbalanceAnalysis::GetBprimeSSAFS(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute Bprime  matrix. Bprime=[Bprime1 Bprime2 Bprime3 Bprime4 Bprime5 Bprime6] where Bprimei is of size 5*NDOF2. 
+	 * For node i, Bprimei can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bprimei=[ 2*dh/dx    dh/dy   0   0 ]
+	 *               [  dh/dx    2*dh/dy  0   0 ]
+	 *               [  dh/dy     dh/dx   0   0 ]
+	 * where h is the interpolation function for node i.
+	 *
+	 * We assume Bprime has been allocated already, of size: 5x(NDOF2*NUMNODESP1)
+	 */
+
+	int    i;
+	IssmDouble dbasismini[3][7];
+
+	/*Get dbasis in actual coordinate system: */
+	element->NodalFunctionsMINIDerivatives(&dbasismini[0][0],xyz_list, gauss);
+
+	/*Build Bprime: */
+	for(i=0;i<6;i++){
+		Bprime[(3*7+6)*0+3*i+0] = 2.*dbasismini[0][i];
+		Bprime[(3*7+6)*0+3*i+1] = dbasismini[1][i];
+		Bprime[(3*7+6)*0+3*i+2] = 0.;
+		Bprime[(3*7+6)*1+3*i+0] = dbasismini[0][i];
+		Bprime[(3*7+6)*1+3*i+1] = 2.*dbasismini[1][i];
+		Bprime[(3*7+6)*1+3*i+2] = 0.;
+		Bprime[(3*7+6)*2+3*i+0] = dbasismini[1][i];
+		Bprime[(3*7+6)*2+3*i+1] = dbasismini[0][i];
+		Bprime[(3*7+6)*2+3*i+2] = 0.;
+	}
+
+	for(i=0;i<1;i++){ //Add zeros for the bubble function
+		Bprime[(3*7+6)*0+3*(6+i)+0] = 0.;
+		Bprime[(3*7+6)*0+3*(6+i)+1] = 0.;
+		Bprime[(3*7+6)*0+3*(6+i)+2] = 0.;
+		Bprime[(3*7+6)*1+3*(6+i)+0] = 0.;
+		Bprime[(3*7+6)*1+3*(6+i)+1] = 0.;
+		Bprime[(3*7+6)*1+3*(6+i)+2] = 0.;
+		Bprime[(3*7+6)*2+3*(6+i)+0] = 0.;
+		Bprime[(3*7+6)*2+3*(6+i)+1] = 0.;
+		Bprime[(3*7+6)*2+3*(6+i)+2] = 0.;
+	}
+
+	for(i=0;i<6;i++){ //last column not for the bubble function
+		Bprime[(3*7+6)*0+7*3+i] = 0.;
+		Bprime[(3*7+6)*1+7*3+i] = 0.;
+		Bprime[(3*7+6)*2+7*3+i] = 0.;
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::GetBprimeSSAFSTria(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute Bprime  matrix. Bprime=[Bprime1 Bprime2 Bprime3] where Bprimei is of size 3*NDOF2. 
+	 * For node i, Bprimei can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bprimei=[  dN/dx    0   ]
+	 *               [    0    dN/dy ]
+	 *               [  dN/dy  dN/dx ]
+	 N               [  dN/dx  dN/dy ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume Bprime has been allocated already, of size: 3x(NDOF2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions*/
+	IssmDouble* dbasis=xNew<IssmDouble>(2*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build Bprime: */
+	for(int i=0;i<numnodes;i++){
+		Bprime[2*numnodes*0+2*i+0] = dbasis[0*numnodes+i];
+		Bprime[2*numnodes*0+2*i+1] = 0.;
+		Bprime[2*numnodes*1+2*i+0] = 0.;
+		Bprime[2*numnodes*1+2*i+1] = dbasis[1*numnodes+i];
+		Bprime[2*numnodes*2+2*i+0] = dbasis[1*numnodes+i];
+		Bprime[2*numnodes*2+2*i+1] = dbasis[0*numnodes+i];
+		Bprime[2*numnodes*3+2*i+0] = dbasis[0*numnodes+i];
+		Bprime[2*numnodes*3+2*i+1] = dbasis[1*numnodes+i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBSSAFS(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3 B4 B5 B6] where Bi is of size 5*NDOF2. 
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi=[ dh/dx          0       0   0 ]
+	 *          [   0           dh/dy    0   0 ]
+	 *          [ 1/2*dh/dy  1/2*dh/dx   0   0 ]
+	 *          [   0            0       0   h ]
+	 * where h is the interpolation function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 5x(NDOF2*NUMNODESP1)
+	 */
+
+	int i;
+	IssmDouble dbasismini[3][7];
+	IssmDouble basis[6];
+
+	/*Get dbasis in actual coordinate system: */
+	element->NodalFunctionsMINIDerivatives(&dbasismini[0][0],xyz_list, gauss);
+	element->NodalFunctionsP1(basis,gauss);
+
+	/*Build B: */
+	for(i=0;i<6;i++){
+		B[(3*7+6)*0+3*i+0] = dbasismini[0][i];
+		B[(3*7+6)*0+3*i+1] = 0.;
+		B[(3*7+6)*0+3*i+2] = 0.;
+		B[(3*7+6)*1+3*i+0] = 0.;
+		B[(3*7+6)*1+3*i+1] = dbasismini[1][i];
+		B[(3*7+6)*1+3*i+2] = 0.;
+		B[(3*7+6)*2+3*i+0] = 0.5*dbasismini[1][i];
+		B[(3*7+6)*2+3*i+1] = 0.5*dbasismini[0][i];
+		B[(3*7+6)*2+3*i+2] = 0.;
+		B[(3*7+6)*3+3*i+0] = 0.;
+		B[(3*7+6)*3+3*i+1] = 0.;
+		B[(3*7+6)*3+3*i+2] = 0.;
+	}
+	for(i=0;i<1;i++){
+		B[(3*7+6)*0+3*(6+i)+0] = 0.;
+		B[(3*7+6)*0+3*(6+i)+1] = 0.;
+		B[(3*7+6)*0+3*(6+i)+2] = 0.;
+		B[(3*7+6)*1+3*(6+i)+0] = 0.;
+		B[(3*7+6)*1+3*(6+i)+1] = 0.;
+		B[(3*7+6)*1+3*(6+i)+2] = 0.;
+		B[(3*7+6)*2+3*(6+i)+0] = 0.;
+		B[(3*7+6)*2+3*(6+i)+1] = 0.;
+		B[(3*7+6)*2+3*(6+i)+2] = 0.;
+		B[(3*7+6)*3+3*(6+i)+0] = 0.;
+		B[(3*7+6)*3+3*(6+i)+1] = 0.;
+		B[(3*7+6)*3+3*(6+i)+2] = 0.;
+	}
+
+	for(i=0;i<6;i++){ //last column not for the bubble function
+		B[(3*7+6)*0+7*3+i] = 0;
+		B[(3*7+6)*1+7*3+i] = 0;
+		B[(3*7+6)*2+7*3+i] = 0;
+		B[(3*7+6)*3+7*3+i] = basis[i];
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::GetBSSAFSTria(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3] where Bi is of size 3*NDOF2. 
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi=[   dN/dx         0     ]
+	 *          [       0       dN/dy   ]
+	 *          [  1/2*dN/dy  1/2*dN/dx ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 3x(NDOF2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(2*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B': */
+	for(int i=0;i<numnodes;i++){
+		B[2*numnodes*0+2*i+0] = dbasis[0*numnodes+i];
+		B[2*numnodes*0+2*i+1] = 0.;
+		B[2*numnodes*1+2*i+0] = 0.;
+		B[2*numnodes*1+2*i+1] = dbasis[1*numnodes+i];
+		B[2*numnodes*2+2*i+0] = 0.5*dbasis[1*numnodes+i];
+		B[2*numnodes*2+2*i+1] = 0.5*dbasis[0*numnodes+i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBSSAHO(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3 B4 B5 B6] where Bi is of size 3*NDOF2. 
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi=[ dh/dx          0      ]
+	 *          [   0           dh/dy   ]
+	 *          [ 1/2*dh/dy  1/2*dh/dx  ]
+	 * where h is the interpolation function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 5x(NDOF2*NUMNODESP1)
+	 */
+
+	int numnodes = element->GetNumberOfNodes();
+	IssmDouble* dbasis=xNew<IssmDouble>(3*numnodes);
+
+	/*Get dbasis in actual coordinate system: */
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		B[2*numnodes*0+2*i+0] = dbasis[0*numnodes+i];
+		B[2*numnodes*0+2*i+1] = 0.;
+		B[2*numnodes*1+2*i+0] = 0.;
+		B[2*numnodes*1+2*i+1] = dbasis[1*numnodes+i];
+		B[2*numnodes*2+2*i+0] = .5*dbasis[1*numnodes+i];
+		B[2*numnodes*2+2*i+1] = .5*dbasis[0*numnodes+i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetLprimeFSSSA(IssmDouble* LprimeFS,Element* element,IssmDouble* xyz_list,Gauss* gauss_in){/*{{{*/
+	/* Compute Lprime  matrix. Lprime=[Lp1 Lp2 Lp3] where Lpi is square and of size numdof. 
+	 * For node i, Lpi can be expressed in the actual coordinate system
+	 * by: 
+	 *       Lpi=[ h    0 ]
+	 *		       [ 0    h ]
+	 *		       [ h    0 ]
+	 *		       [ 0    h ]
+	 * where h is the interpolation function for node i.
+	 */
+	int num_dof=2;
+	IssmDouble basis[3];
+
+	/*Cast gauss to GaussPenta*/
+	_assert_(gauss_in->Enum()==GaussPentaEnum);
+	GaussPenta* gauss = xDynamicCast<GaussPenta*>(gauss_in);
+
+	/*Get basis in actual coordinate system: */
+	basis[0]=gauss->coord1*(1-gauss->coord4)/2.0;
+	basis[1]=gauss->coord2*(1-gauss->coord4)/2.0;
+	basis[2]=gauss->coord3*(1-gauss->coord4)/2.0;
+
+	/*Build LprimeFS: */
+	for(int i=0;i<3;i++){
+		LprimeFS[num_dof*3*0+num_dof*i+0] = basis[i];
+		LprimeFS[num_dof*3*0+num_dof*i+1] = 0.;
+		LprimeFS[num_dof*3*1+num_dof*i+0] = 0.;
+		LprimeFS[num_dof*3*1+num_dof*i+1] = basis[i];
+		LprimeFS[num_dof*3*2+num_dof*i+0] = basis[i];
+		LprimeFS[num_dof*3*2+num_dof*i+1] = 0.;
+		LprimeFS[num_dof*3*3+num_dof*i+0] = 0.;
+		LprimeFS[num_dof*3*3+num_dof*i+1] = basis[i];
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::GetLprimeSSAFS(IssmDouble* LprimeFS,Element* element,IssmDouble* xyz_list,Gauss* gauss_in){/*{{{*/
+	/* Compute Lprime  matrix. Lprime=[Lp1 Lp2 Lp3] where Lpi is square and of size numdof. 
+	 * For node i, Lpi can be expressed in the actual coordinate system
+	 * by: 
+	 *       Lpi=[ h    0    0   0]
+	 *		       [ 0    h    0   0]
+	 *		       [ 0    0    h   0]
+	 *		       [ 0    0    h   0]
+	 *		       [ 0    0  dh/dz 0]
+	 *		       [ 0    0  dh/dz 0]
+	 *           [ 0    0    0   h]
+	 *           [ 0    0    0   h]
+	 * where h is the interpolation function for node i.
+	 */
+	int num_dof=3;
+	int num_dof_vel=3*7;
+	int num_dof_total=3*7+1*6;
+	IssmDouble basis[3];
+	IssmDouble dbasis[3][6];
+
+	/*Cast gauss to GaussPenta*/
+	_assert_(gauss_in->Enum()==GaussPentaEnum);
+	GaussPenta* gauss = xDynamicCast<GaussPenta*>(gauss_in);
+
+	/*Get basis in actual coordinate system: */
+	basis[0]=gauss->coord1*(1-gauss->coord4)/2.0;
+	basis[1]=gauss->coord2*(1-gauss->coord4)/2.0;
+	basis[2]=gauss->coord3*(1-gauss->coord4)/2.0;
+
+	element->NodalFunctionsP1Derivatives(&dbasis[0][0],xyz_list,gauss);
+
+	/*Build LprimeFS: */
+	for(int i=0;i<3;i++){
+		LprimeFS[num_dof_total*0+num_dof*i+0] = basis[i];
+		LprimeFS[num_dof_total*0+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*0+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*1+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*1+num_dof*i+1] = basis[i];
+		LprimeFS[num_dof_total*1+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*2+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*2+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*2+num_dof*i+2] = basis[i];
+		LprimeFS[num_dof_total*3+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*3+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*3+num_dof*i+2] = basis[i];
+		LprimeFS[num_dof_total*4+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*4+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*4+num_dof*i+2] = dbasis[2][i];
+		LprimeFS[num_dof_total*5+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*5+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*5+num_dof*i+2] = dbasis[2][i];
+		LprimeFS[num_dof_total*6+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*6+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*6+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*7+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*7+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*7+num_dof*i+2] = 0.;
+	}
+	for(int i=3;i<7;i++){
+		LprimeFS[num_dof_total*0+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*0+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*0+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*1+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*1+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*1+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*2+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*2+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*2+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*3+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*3+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*3+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*4+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*4+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*4+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*5+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*5+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*5+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*6+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*6+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*6+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*7+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*7+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*7+num_dof*i+2] = 0.;
+	}
+	for(int i=0;i<3;i++){
+		LprimeFS[num_dof_total*0+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*1+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*2+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*3+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*4+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*5+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*6+num_dof_vel+i] = basis[i];
+		LprimeFS[num_dof_total*7+num_dof_vel+i] = basis[i];
+	}
+	for(int i=3;i<6;i++){
+		LprimeFS[num_dof_total*0+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*1+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*2+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*3+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*4+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*5+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*6+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*7+num_dof_vel+i] = 0.;
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::GetLFSSSA(IssmDouble* LFS,Element* element,Gauss* gauss_in){/*{{{*/
+	/* Compute L  matrix. L=[L1 L2 L3] where Li is square and of size numdof. 
+	 * For node i, Li can be expressed in the actual coordinate system
+	 * by: 
+	 *       Li=[ h    0    0 ]
+	 *	 	      [ 0    h    0 ]
+	 *		      [ 0    0    h ]
+	 *		      [ 0    0    h ]
+	 * where h is the interpolation function for node i.
+	 */
+
+	int num_dof=3;
+	IssmDouble basis[3];
+
+	/*Cast gauss to GaussPenta*/
+	_assert_(gauss_in->Enum()==GaussPentaEnum);
+	GaussPenta* gauss = xDynamicCast<GaussPenta*>(gauss_in);
+
+	/*Get basis in actual coordinate system: */
+	basis[0]=gauss->coord1*(1-gauss->coord4)/2.0;
+	basis[1]=gauss->coord2*(1-gauss->coord4)/2.0;
+	basis[2]=gauss->coord3*(1-gauss->coord4)/2.0;
+
+	/*Build LFS: */
+	for(int i=0;i<3;i++){
+		LFS[num_dof*3*0+num_dof*i+0] = basis[i];
+		LFS[num_dof*3*0+num_dof*i+1] = 0.;
+		LFS[num_dof*3*0+num_dof*i+2] = 0.;
+		LFS[num_dof*3*1+num_dof*i+0] = 0.;
+		LFS[num_dof*3*1+num_dof*i+1] = basis[i];
+		LFS[num_dof*3*1+num_dof*i+2] = 0.;
+		LFS[num_dof*3*2+num_dof*i+0] = 0.;
+		LFS[num_dof*3*2+num_dof*i+1] = 0.;
+		LFS[num_dof*3*2+num_dof*i+2] = basis[i];
+		LFS[num_dof*3*3+num_dof*i+0] = 0.;
+		LFS[num_dof*3*3+num_dof*i+1] = 0.;
+		LFS[num_dof*3*3+num_dof*i+2] = basis[i];
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::GetLSSAFS(IssmDouble* LFS,Element* element,Gauss* gauss_in){/*{{{*/
+	/*
+	 * Compute L  matrix. L=[L1 L2 L3] where Li is square and of size numdof. 
+	 * For node i, Li can be expressed in the actual coordinate system
+	 * by: 
+	 *       Li=[ h    0 ]
+	 *	 	      [ 0    h ]
+	 *	 	      [ h    0 ]
+	 *	 	      [ 0    h ]
+	 *	 	      [ h    0 ]
+	 *	 	      [ 0    h ]
+	 *	 	      [ h    0 ]
+	 *	 	      [ 0    h ]
+	 * where h is the interpolation function for node i.
+	 */
+
+	int num_dof=2;
+	IssmDouble basis[3];
+
+	/*Cast gauss to GaussPenta*/
+	_assert_(gauss_in->Enum()==GaussPentaEnum);
+	GaussPenta* gauss = xDynamicCast<GaussPenta*>(gauss_in);
+
+	/*Get basis in actual coordinate system: */
+	basis[0]=gauss->coord1*(1-gauss->coord4)/2.0;
+	basis[1]=gauss->coord2*(1-gauss->coord4)/2.0;
+	basis[2]=gauss->coord3*(1-gauss->coord4)/2.0;
+
+	/*Build LFS: */
+	for(int i=0;i<3;i++){
+		LFS[num_dof*3*0+num_dof*i+0] = basis[i];
+		LFS[num_dof*3*0+num_dof*i+1] = 0;
+		LFS[num_dof*3*1+num_dof*i+0] = 0;
+		LFS[num_dof*3*1+num_dof*i+1] = basis[i];
+		LFS[num_dof*3*2+num_dof*i+0] = basis[i];
+		LFS[num_dof*3*2+num_dof*i+1] = 0;
+		LFS[num_dof*3*3+num_dof*i+0] = 0;
+		LFS[num_dof*3*3+num_dof*i+1] = basis[i];
+		LFS[num_dof*3*4+num_dof*i+0] = basis[i];
+		LFS[num_dof*3*4+num_dof*i+1] = 0;
+		LFS[num_dof*3*5+num_dof*i+0] = 0;
+		LFS[num_dof*3*5+num_dof*i+1] = basis[i];
+		LFS[num_dof*3*6+num_dof*i+0] = basis[i];
+		LFS[num_dof*3*6+num_dof*i+1] = 0;
+		LFS[num_dof*3*7+num_dof*i+0] = 0;
+		LFS[num_dof*3*7+num_dof*i+1] = basis[i];
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolutionHOFS(IssmDouble* solution,Element* element){/*{{{*/
+
+	int         i;
+	IssmDouble  rho_ice,g,FSreconditioning;
+	int*        doflistHO  = NULL;
+	int*        doflistFSv = NULL;
+	int*        doflistFSp = NULL;
+
+	/*Only works with Penta for now*/
+	if(element->ObjectEnum()!=PentaEnum) _error_("Coupling not supported for "<<EnumToStringx(element->ObjectEnum()));
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes  = 6;
+	int numdofHO  = 6*2;
+	int numdofFSv = 6*3;
+	int numdofFSp = 6;
+
+	/*Fetch dof list and allocate solution vectors*/
+	element->GetDofList(&doflistFSv,FSvelocityEnum,GsetEnum);
+	element->GetDofList(&doflistHO, HOApproximationEnum, GsetEnum);
+	element->GetDofListPressure(&doflistFSp,GsetEnum);
+	IssmDouble* HOvalues  = xNew<IssmDouble>(numdofHO);
+	IssmDouble* FSvalues  = xNew<IssmDouble>(numdofFSv+numdofFSp);
+	IssmDouble* vx        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vy        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vz        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vzHO      = xNew<IssmDouble>(numnodes);
+	IssmDouble* vzFS      = xNew<IssmDouble>(numnodes);
+	IssmDouble* vel       = xNew<IssmDouble>(numnodes);
+	IssmDouble* pressure  = xNew<IssmDouble>(numnodes);
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(2*numnodes);
+	for(i=0;i<numnodes;i++) cs_list[i]          = XYZEnum;
+	for(i=0;i<numnodes;i++) cs_list[numnodes+i] = PressureEnum;
+
+	/*Use the dof list to index into the solution vector: */
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	for(i=0;i<numdofHO ;i++) HOvalues[i]=solution[doflistHO[i]];
+	for(i=0;i<numdofFSv;i++) FSvalues[i]=solution[doflistFSv[i]];
+	for(i=0;i<numdofFSp;i++) FSvalues[numdofFSv+i]=solution[doflistFSp[i]];
+
+	/*Transform solution in Cartesian Space*/
+	element->TransformSolutionCoord(FSvalues,2*numnodes,cs_list);
+	element->TransformSolutionCoord(HOvalues,numnodes,XYEnum);
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+	for(i=0;i<numnodes;i++){
+		vx[i]       = FSvalues[i*3+0]+HOvalues[i*2+0];
+		vy[i]       = FSvalues[i*3+1]+HOvalues[i*2+1];
+		vzFS[i]     = FSvalues[i*3+2];
+		pressure[i] = FSvalues[numnodes*3+i]*FSreconditioning;
+
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(vx[i]))       _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vx[i]))       _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(vy[i]))       _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vy[i]))       _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(vzFS[i]))     _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vzFS[i]))     _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(pressure[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(pressure[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Get Vz and compute vel*/
+	element->GetInputListOnVertices(vzHO,VzHOEnum);
+	for(i=0;i<numnodes;i++){
+		vz[i] = vzHO[i]+vzFS[i];
+		vel[i]= sqrt(vx[i]*vx[i] + vy[i]*vy[i] + vz[i]*vz[i]);
+	}
+
+	/*Now, we have to move the previous Vx and Vy inputs  to old 
+	 * status, otherwise, we'll wipe them off: */
+	element->InputChangeName(VxEnum,VxPicardEnum);
+	element->InputChangeName(VyEnum,VyPicardEnum);
+	element->InputChangeName(VzEnum,VzPicardEnum);
+	element->InputChangeName(PressureEnum,PressurePicardEnum);
+
+	/*Add vx and vy as inputs to element: */
+	element->AddInput(VxEnum,vx,P1Enum);
+	element->AddInput(VyEnum,vy,P1Enum);
+	element->AddInput(VzEnum,vz,P1Enum);
+	element->AddInput(VzFSEnum,vzFS,P1Enum);
+	element->AddInput(VelEnum,vel,P1Enum);
+	element->AddInput(PressureEnum,pressure,P1Enum);
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(vel);
+	xDelete<IssmDouble>(vz);
+	xDelete<IssmDouble>(vzHO);
+	xDelete<IssmDouble>(vzFS);
+	xDelete<IssmDouble>(vy);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(FSvalues);
+	xDelete<IssmDouble>(HOvalues);
+	xDelete<int>(doflistFSp);
+	xDelete<int>(doflistFSv);
+	xDelete<int>(doflistHO);
+	xDelete<int>(cs_list);
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolutionSSAFS(IssmDouble* solution,Element* element){/*{{{*/
+
+	int         i;
+	IssmDouble  rho_ice,g,FSreconditioning;
+	int*        doflistSSA  = NULL;
+	int*        doflistFSv = NULL;
+	int*        doflistFSp = NULL;
+
+	/*we have to add results of this element for FS and results from the element
+	 * at base for SSA, so we need to have the pointer toward the basal element*/
+	Element* basalelement=element->GetBasalElement();
+	if(basalelement->ObjectEnum()!=PentaEnum){
+		_error_("Coupling not supported for "<<EnumToStringx(basalelement->ObjectEnum()));
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes  = 6;
+	int numdof2d  = numnodes;
+	int numdofSSA = 6*2;
+	int numdofFSv = 6*3;
+	int numdofFSp = 6;
+
+	/*Fetch dof list and allocate solution vectors*/
+	element->GetDofList(&doflistFSv,FSvelocityEnum,GsetEnum);
+	element->GetDofListPressure(&doflistFSp,GsetEnum);
+	basalelement->GetDofList(&doflistSSA, SSAApproximationEnum, GsetEnum);
+	IssmDouble* SSAvalues  = xNew<IssmDouble>(numdofSSA);
+	IssmDouble* FSvalues  = xNew<IssmDouble>(numdofFSv+numdofFSp);
+	IssmDouble* vx        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vy        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vz        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vzSSA      = xNew<IssmDouble>(numnodes);
+	IssmDouble* vzFS      = xNew<IssmDouble>(numnodes);
+	IssmDouble* vel       = xNew<IssmDouble>(numnodes);
+	IssmDouble* pressure  = xNew<IssmDouble>(numnodes);
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(2*numnodes);
+	for(i=0;i<numnodes;i++) cs_list[i]          = XYZEnum;
+	for(i=0;i<numnodes;i++) cs_list[numnodes+i] = PressureEnum;
+
+	/*Use the dof list to index into the solution vector: */
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	for(i=0;i<numdof2d;i++){
+		SSAvalues[i]          = solution[doflistSSA[i]];
+		SSAvalues[i+numdof2d] = solution[doflistSSA[i]];
+	}
+	for(i=0;i<numdofFSv;i++) FSvalues[i]=solution[doflistFSv[i]];
+	for(i=0;i<numdofFSp;i++) FSvalues[numdofFSv+i]=solution[doflistFSp[i]];
+
+	/*Transform solution in Cartesian Space*/
+	element->TransformSolutionCoord(FSvalues,2*numnodes,cs_list);
+	element->TransformSolutionCoord(SSAvalues,numnodes,XYEnum);
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+
+	for(i=0;i<numnodes;i++){
+		vx[i]       = FSvalues[i*3+0]+SSAvalues[i*2+0];
+		vy[i]       = FSvalues[i*3+1]+SSAvalues[i*2+1];
+		vzFS[i]     = FSvalues[i*3+2];
+		pressure[i] = FSvalues[numnodes*3+i]*FSreconditioning;
+
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(vx[i]))       _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vx[i]))       _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(vy[i]))       _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vy[i]))       _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(vzFS[i]))     _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vzFS[i]))     _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(pressure[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(pressure[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Get Vz and compute vel*/
+	element->GetInputListOnVertices(vzSSA,VzSSAEnum);
+	for(i=0;i<numnodes;i++){
+		vz[i] = vzSSA[i]+vzFS[i];
+		vel[i]= sqrt(vx[i]*vx[i] + vy[i]*vy[i] + vz[i]*vz[i]);
+	}
+
+	/*Now, we have to move the previous Vx and Vy inputs  to old 
+	 * status, otherwise, we'll wipe them off: */
+	element->InputChangeName(VxEnum,VxPicardEnum);
+	element->InputChangeName(VyEnum,VyPicardEnum);
+	element->InputChangeName(VzEnum,VzPicardEnum);
+	element->InputChangeName(PressureEnum,PressurePicardEnum);
+
+	/*Add vx and vy as inputs to element: */
+	element->AddInput(VxEnum,vx,P1Enum);
+	element->AddInput(VyEnum,vy,P1Enum);
+	element->AddInput(VzEnum,vz,P1Enum);
+	element->AddInput(VzFSEnum,vzFS,P1Enum);
+	element->AddInput(VelEnum,vel,P1Enum);
+	element->AddInput(PressureEnum,pressure,P1Enum);
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(vel);
+	xDelete<IssmDouble>(vz);
+	xDelete<IssmDouble>(vzSSA);
+	xDelete<IssmDouble>(vzFS);
+	xDelete<IssmDouble>(vy);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(FSvalues);
+	xDelete<IssmDouble>(SSAvalues);
+	xDelete<int>(doflistFSp);
+	xDelete<int>(doflistFSv);
+	xDelete<int>(doflistSSA);
+	xDelete<int>(cs_list);
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolutionSSAHO(IssmDouble* solution,Element* element){/*{{{*/
+
+	int         i,domaintype;
+	IssmDouble  rho_ice,g;
+	int*        SSAdoflist = NULL;
+	int*        HOdoflist  = NULL;
+	IssmDouble* xyz_list   = NULL;
+
+	/*we have to add results of this element for HO and results from the element
+	 * at base for SSA, so we need to have the pointer toward the basal element*/
+	Element* basalelement=element->GetBasalElement();
+	if(basalelement->ObjectEnum()!=PentaEnum){
+		_error_("Coupling not supported for "<<EnumToStringx(basalelement->ObjectEnum()));
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*2;
+	int numdof2d = numnodes;
+
+	/*Fetch dof list and allocate solution vectors*/
+	basalelement->GetDofList(&SSAdoflist,SSAApproximationEnum,GsetEnum);
+	element     ->GetDofList(&HOdoflist, HOApproximationEnum, GsetEnum);
+	IssmDouble* HOvalues  = xNew<IssmDouble>(numdof);
+	IssmDouble* SSAvalues = xNew<IssmDouble>(numdof);
+	IssmDouble* vx        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vy        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vz        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vel       = xNew<IssmDouble>(numnodes);
+	IssmDouble* pressure  = xNew<IssmDouble>(numnodes);
+	IssmDouble* surface   = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numdof2d;i++){
+		HOvalues[i]  = solution[HOdoflist[i]];
+		SSAvalues[i] = solution[SSAdoflist[i]];
+	}
+	for(i=numdof2d;i<numdof;i++){
+		HOvalues[i]  = solution[HOdoflist[i]];
+		SSAvalues[i] = SSAvalues[i-numdof2d];
+	}
+
+	/*Transform solution in Cartesian Space*/
+	basalelement->TransformSolutionCoord(SSAvalues,XYEnum);
+	element->TransformSolutionCoord(HOvalues,XYEnum);
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+	for(i=0;i<numnodes;i++){
+		vx[i]=SSAvalues[i*2+0]+HOvalues[i*2+0];
+		vy[i]=SSAvalues[i*2+1]+HOvalues[i*2+1];
+
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Get Vz and compute vel*/
+	element->GetInputListOnNodes(&vz[0],VzEnum,0.);
+	for(i=0;i<numnodes;i++) vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i] + vz[i]*vz[i]);
+
+	/*For pressure: we have not computed pressure in this analysis, for this element. We are in 2D, 
+	 *so the pressure is just the pressure at the bedrock: */
+	rho_ice = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	g       = element->GetMaterialParameter(ConstantsGEnum);
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetInputListOnNodes(&surface[0],SurfaceEnum);
+	for(i=0;i<numnodes;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
+
+	/*Now, we have to move the previous Vx and Vy inputs  to old 
+	 * status, otherwise, we'll wipe them off: */
+	element->InputChangeName(VxEnum,VxPicardEnum);
+	element->InputChangeName(VyEnum,VyPicardEnum);
+	element->InputChangeName(PressureEnum,PressurePicardEnum);
+
+	/*Add vx and vy as inputs to element: */
+	element->AddInput(VxEnum,vx,P1Enum);
+	element->AddInput(VyEnum,vy,P1Enum);
+	element->AddInput(VelEnum,vel,P1Enum);
+	element->AddInput(PressureEnum,pressure,P1Enum);
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(surface);
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(vel);
+	xDelete<IssmDouble>(vz);
+	xDelete<IssmDouble>(vy);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(SSAvalues);
+	xDelete<IssmDouble>(HOvalues);
+	xDelete<int>(SSAdoflist);
+	xDelete<int>(HOdoflist);
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/StressbalanceAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/StressbalanceAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/StressbalanceAnalysis.h	(revision 21239)
@@ -0,0 +1,134 @@
+/*! \file StressbalanceAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _StressbalanceAnalysis_
+#define _StressbalanceAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class StressbalanceAnalysis: public Analysis{
+
+  public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GetSolutionFromInputsHoriz(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+
+		/*SSA*/
+		ElementMatrix* CreateJacobianMatrixSSA(Element* element);
+		ElementMatrix* CreateKMatrixSSA(Element* element);
+		ElementMatrix* CreateKMatrixSSAFriction(Element* element);
+		ElementMatrix* CreateKMatrixSSALateralFriction(Element* element);
+		ElementMatrix* CreateKMatrixSSAViscous(Element* element);
+		ElementVector* CreatePVectorSSA(Element* element);
+		ElementVector* CreatePVectorSSAFront(Element* element);
+		ElementVector* CreatePVectorSSADrivingStress(Element* element);
+		void           GetBSSA(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBSSAFriction(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBSSAprime(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           InputUpdateFromSolutionSSA(IssmDouble* solution,Element* element);
+		/*L1L2*/
+		ElementMatrix* CreateKMatrixL1L2(Element* element);
+		ElementMatrix* CreateKMatrixL1L2Friction(Element* element);
+		ElementMatrix* CreateKMatrixL1L2Viscous(Element* element);
+		ElementVector* CreatePVectorL1L2(Element* element);
+		ElementVector* CreatePVectorL1L2Front(Element* element);
+		ElementVector* CreatePVectorL1L2DrivingStress(Element* element);
+		void           InputUpdateFromSolutionL1L2(IssmDouble* solution,Element* element);
+		/*HO*/
+		ElementMatrix* CreateJacobianMatrixHO(Element* element);
+		ElementMatrix* CreateKMatrixHO(Element* element);
+		ElementMatrix* CreateKMatrixHOFriction(Element* element);
+		ElementMatrix* CreateKMatrixHOViscous(Element* element);
+		ElementVector* CreatePVectorHO(Element* element);
+		ElementVector* CreatePVectorHOFront(Element* element);
+		ElementVector* CreatePVectorHODrivingStress(Element* element);
+		void           GetBHO(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBHOFriction(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBHOprime(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           InputUpdateFromSolutionHO(IssmDouble* solution,Element* element);
+		/*FS*/
+		ElementVector* CreateDVectorFS(Element* element);
+		ElementMatrix* CreateJacobianMatrixFS(Element* element);
+		ElementMatrix* CreateKMatrixFS(Element* element);
+		ElementMatrix* CreateKMatrixFSFriction(Element* element);
+		ElementMatrix* CreateKMatrixFSShelf(Element* element);
+		ElementMatrix* CreateKMatrixFSViscous(Element* element);
+		ElementMatrix* CreateKMatrixFSViscousLA(Element* element);
+		ElementMatrix* CreateKMatrixFSViscousXTH(Element* element);
+		ElementVector* CreatePVectorFS(Element* element);
+		ElementVector* CreatePVectorFSFriction(Element* element);
+		ElementVector* CreatePVectorFSFront(Element* element);
+		ElementVector* CreatePVectorFSShelf(Element* element);
+		ElementVector* CreatePVectorFSStress(Element* element);
+		ElementVector* CreatePVectorFSViscous(Element* element);
+		ElementVector* CreatePVectorFSViscousLA(Element* element);
+		ElementVector* CreatePVectorFSViscousXTH(Element* element);
+		void           GetBFS(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBFSFriction(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBFSprime(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBFSprimeUzawa(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBFSprimevel(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBFSUzawa(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBFSvel(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetCFS(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetCFSprime(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetSolutionFromInputsFS(Vector<IssmDouble>* solution,Element* element);
+		void           InitializeXTH(Elements* elements,Parameters* parameters);
+		void           InputUpdateFromSolutionFS(IssmDouble* solution,Element* element);
+		void           InputUpdateFromSolutionFSXTH_d(Elements* elements,Parameters* parameters);
+		void           InputUpdateFromSolutionFSXTH_tau(Elements* elements,Parameters* parameters);
+		/*Coupling*/
+		ElementMatrix* CreateKMatrixCouplingHOFS(Element* element);
+		ElementMatrix* CreateKMatrixCouplingSSAFS(Element* element);
+		ElementMatrix* CreateKMatrixCouplingSSAFSFriction(Element* element);
+		ElementMatrix* CreateKMatrixCouplingSSAFSViscous(Element* element);
+		ElementMatrix* CreateKMatrixCouplingSSAHO(Element* element);
+		ElementMatrix* CreateKMatrixCouplingSSAHOFriction(Element* element);
+		ElementMatrix* CreateKMatrixCouplingSSAHOViscous(Element* element);
+		ElementMatrix* CreateKMatrixHOFS(Element* element);
+		ElementMatrix* CreateKMatrixSSAFS(Element* element);
+		ElementMatrix* CreateKMatrixSSAHO(Element* element);
+		ElementMatrix* CreateKMatrixSSA3d(Element* element);
+		ElementMatrix* CreateKMatrixSSA3dFriction(Element* element);
+		ElementMatrix* CreateKMatrixSSA3dViscous(Element* element);
+		ElementVector* CreatePVectorSSAFS(Element* element);
+		ElementVector* CreatePVectorSSAHO(Element* element);
+		ElementVector* CreatePVectorCouplingSSAFS(Element* element);
+		ElementVector* CreatePVectorCouplingSSAFSFriction(Element* element);
+		ElementVector* CreatePVectorCouplingSSAFSViscous(Element* element);
+		ElementVector* CreatePVectorHOFS(Element* element);
+		ElementVector* CreatePVectorCouplingHOFS(Element* element);
+		ElementVector* CreatePVectorCouplingHOFSFriction(Element* element);
+		ElementVector* CreatePVectorCouplingHOFSViscous(Element* element);
+		void           GetBprimeSSAFS(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBprimeSSAFSTria(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBSSAFS(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBSSAFSTria(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBSSAHO(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetLFSSSA(IssmDouble* L,Element* element,Gauss* gauss);
+		void           GetLprimeFSSSA(IssmDouble* Lprime,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetLprimeSSAFS(IssmDouble* Lprime,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetLSSAFS(IssmDouble* L,Element* element,Gauss* gauss);
+		void           InputUpdateFromSolutionHOFS(IssmDouble* solution,Element* element);
+		void           InputUpdateFromSolutionSSAFS(IssmDouble* solution,Element* element);
+		void           InputUpdateFromSolutionSSAHO(IssmDouble* solution,Element* element);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/StressbalanceSIAAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 21239)
@@ -0,0 +1,640 @@
+#include "./StressbalanceSIAAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+/*Model processing*/
+void StressbalanceSIAAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*Intermediaries*/
+	bool       isSIA,isSSA,isL1L2,isHO,isFS,iscoupling;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
+	iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
+	iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
+	iomodel->FindConstant(&isHO,"md.flowequation.isHO");
+	iomodel->FindConstant(&isFS,"md.flowequation.isFS");
+
+	/*Now, is the flag isSIA on? otherwise, do nothing: */
+	if (!isSIA) return;
+
+	/*Do we have coupling*/
+	if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
+	 iscoupling = true;
+	else
+	 iscoupling = false;
+
+	/*If no coupling, call Regular IoModelToConstraintsx, else, OLD stuff, keep for now*/
+	if(!iscoupling){
+		IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceSIAAnalysisEnum,P1Enum,0);
+		IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy",StressbalanceSIAAnalysisEnum,P1Enum,1);
+	}
+	else{
+		/*Fetch data: */
+		iomodel->FetchData(3,"md.stressbalance.spcvx","md.stressbalance.spcvy","md.flowequation.vertex_equation");
+
+		/*Initialize conunter*/
+		int count=0;
+
+		/*vx and vy are spc'd if we are not on nodeonSIA: */
+		for(int i=0;i<iomodel->numberofvertices;i++){
+			/*keep only this partition's nodes:*/
+			if((iomodel->my_vertices[i])){
+				if (IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]))!=SIAApproximationEnum){
+
+					constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceSIAAnalysisEnum));
+					count++;
+
+					constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceSIAAnalysisEnum));
+					count++;
+				}
+				else{
+					if (!xIsNan<IssmDouble>(iomodel->Data("md.stressbalance.spcvx")[i])){
+						constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,iomodel->Data("md.stressbalance.spcvx")[i],StressbalanceSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+					}
+
+					if (!xIsNan<IssmDouble>(iomodel->Data("md.stressbalance.spcvy")[i])){
+						constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->Data("md.stressbalance.spcvy")[i],StressbalanceSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
+						count++;
+					}
+				}
+			}
+		}
+	}
+
+	/*Free data: */
+	iomodel->DeleteData(3,"md.stressbalance.spcvx","md.stressbalance.spcvy","md.flowequation.vertex_equation");
+
+}/*}}}*/
+void StressbalanceSIAAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*No loads*/
+
+}/*}}}*/
+void StressbalanceSIAAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	/*Intermediaries*/
+	bool  isSIA;
+	Node* node = NULL;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
+
+	/*Now, is the flag isSIA on? otherwise, do nothing: */
+	if(!isSIA) return;
+
+	/*First create nodes*/
+	int    lid=0;
+	iomodel->FetchData(4,"md.flowequation.borderSSA","md.flowequation.borderFS","md.flowequation.vertex_equation","md.stressbalance.referential");
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	}
+
+	for(int i=0;i<iomodel->numberofvertices;i++){
+		if(iomodel->my_vertices[i]){
+
+			/*Create new node if is in this processor's partition*/
+			node = new Node(iomodel->nodecounter+i+1,i,lid++,i,iomodel,StressbalanceSIAAnalysisEnum,IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i])));
+
+			/*Deactivate node if not SIA*/
+			if(IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]))!=SIAApproximationEnum){
+				node->Deactivate();
+			}
+
+			/*Add to Nodes dataset*/
+			nodes->AddObject(node);
+		}
+	}
+
+	iomodel->DeleteData(6,"md.mesh.vertexonbase","md.mesh.vertexonsurface","md.flowequation.borderSSA","md.flowequation.borderFS","md.flowequation.vertex_equation","md.stressbalance.referential");
+
+}/*}}}*/
+int  StressbalanceSIAAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 2;
+}/*}}}*/
+void StressbalanceSIAAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Fetch data needed: */
+	bool   isSIA;
+	bool   ismovingfront;
+	int    frictionlaw;
+	iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
+	iomodel->FindConstant(&ismovingfront,"md.transient.ismovingfront");
+	iomodel->FindConstant(&frictionlaw,"md.friction.law");
+
+	/*Now, is the flag SIA on? otherwise, do nothing: */
+	if (!isSIA)return;
+
+	iomodel->FetchData(1,"md.flowequation.element_equation");
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	/*Friction law variables*/
+	switch(frictionlaw){
+		case 1:
+			iomodel->FetchDataToInput(elements,"md.friction.coefficient",FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.p",FrictionPEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.q",FrictionQEnum);
+			break;
+		case 2:
+			iomodel->FetchDataToInput(elements,"md.friction.C",FrictionCEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.m",FrictionMEnum);
+			break;
+		case 6:
+			iomodel->FetchDataToInput(elements,"md.friction.C",FrictionCEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.m",FrictionMEnum);
+			iomodel->FetchDataToInput(elements,"md.initialization.pressure",PressureEnum);
+			iomodel->FetchDataToInput(elements,"md.initialization.temperature",TemperatureEnum);
+			break;
+		default:
+			_error_("not supported");
+	}
+
+	iomodel->FetchDataToInput(elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(elements,"md.mask.groundedice_levelset",MaskGroundediceLevelsetEnum);
+	if(ismovingfront){
+		if(iomodel->domaintype!=Domain2DhorizontalEnum)
+			iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum); // required for updating active nodes
+	}
+
+	/*Free data: */
+	iomodel->DeleteData(1,"md.flowequation.element_equation");
+}/*}}}*/
+void StressbalanceSIAAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	/*No specific parameters*/
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           StressbalanceSIAAnalysis::Core(FemModel* femmodel){/*{{{*/
+
+		if(VerboseSolution()) _printf0_("   computing SIA velocities\n");
+		femmodel->SetCurrentConfiguration(StressbalanceSIAAnalysisEnum);
+		solutionsequence_linear(femmodel);
+}/*}}}*/
+ElementVector* StressbalanceSIAAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* StressbalanceSIAAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* StressbalanceSIAAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			return CreateKMatrix2D(element);
+		case Domain3DEnum:
+			return CreateKMatrix3D(element);
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}/*}}}*/
+ElementMatrix* StressbalanceSIAAnalysis::CreateKMatrix2D(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	IssmDouble connectivity;
+
+	/*Fetch number vertices for this element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke=element->NewElementMatrix();
+	for(int iv=0;iv<numvertices;iv++){
+		connectivity=(IssmDouble)element->VertexConnectivity(iv);
+		Ke->values[(2*iv+0)*2*numvertices+(2*iv+0)]=1./connectivity;
+		Ke->values[(2*iv+1)*2*numvertices+(2*iv+1)]=1./connectivity;
+	}
+
+	/*Clean up and return*/
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceSIAAnalysis::CreateKMatrix3D(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int         i0,i1,j0,j1,nodeup,nodedown,numsegments;
+	IssmDouble  slope[2],connectivity[2],one0,one1;
+	int        *pairindices = NULL;
+
+	/*Fetch number vertices for this element*/
+	int numvertices = element->GetNumberOfVertices();
+	int numdof      = 2*numvertices;
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke=element->NewElementMatrix();
+
+	element->VerticalSegmentIndices(&pairindices,&numsegments);
+	for(int is=0;is<numsegments;is++){
+		nodedown = pairindices[is*2+0];
+		nodeup   = pairindices[is*2+1];
+		connectivity[0]=(IssmDouble)element->VertexConnectivity(nodedown);
+		connectivity[1]=(IssmDouble)element->VertexConnectivity(nodeup);
+		one0=1./connectivity[0];
+		one1=1./connectivity[1];
+
+		/*2 dofs of first node*/
+		i0=2*nodedown;  i1=2*nodedown+1;
+		/*2 dofs of second node*/
+		j0=2*nodeup;    j1=2*nodeup+1;
+
+		/*Create matrix for these two nodes*/
+		if(element->IsOnBase() && element->IsOnSurface()){
+			Ke->values[i0*numdof+i0] = +one0;
+			Ke->values[i1*numdof+i1] = +one0;
+			Ke->values[j0*numdof+i0] = -one1;
+			Ke->values[j0*numdof+j0] = +one1;
+			Ke->values[j1*numdof+i1] = -one1;
+			Ke->values[j1*numdof+j1] = +one1;
+		}
+		else if(element->IsOnBase()){
+			Ke->values[i0*numdof+i0] = one0;
+			Ke->values[i1*numdof+i1] = one0;
+			Ke->values[j0*numdof+i0] = -2.*one1;
+			Ke->values[j0*numdof+j0] = +2.*one1;
+			Ke->values[j1*numdof+i1] = -2.*one1;
+			Ke->values[j1*numdof+j1] = +2.*one1;
+		}
+		else if(element->IsOnSurface()){
+			Ke->values[j0*numdof+i0] = -one1;
+			Ke->values[j0*numdof+j0] = +one1;
+			Ke->values[j1*numdof+i1] = -one1;
+			Ke->values[j1*numdof+j1] = +one1;
+		}
+		else{ //node is on two horizontal layers and beams include the values only once, so the have to use half of the connectivity
+			Ke->values[j0*numdof+i0] = -2.*one1;
+			Ke->values[j0*numdof+j0] = +2.*one1;
+			Ke->values[j1*numdof+i1] = -2.*one1;
+			Ke->values[j1*numdof+j1] = +2.*one1;
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(pairindices);
+	return Ke;
+}/*}}}*/
+ElementVector* StressbalanceSIAAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			return CreatePVector2D(element);
+		case Domain3DEnum:
+			return CreatePVector3D(element);
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}/*}}}*/
+ElementVector* StressbalanceSIAAnalysis::CreatePVector2D(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int        frictionlaw = 1;
+	IssmDouble ub,vb,slope2,drag,thickness,surface,connectivity;
+	IssmDouble slope[2];
+
+	/*Fetch number vertices for this element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize Element vector*/
+	ElementVector* pe=element->NewElementVector();
+
+	/*Retrieve all inputs and parameters*/
+	IssmDouble  rho_ice    = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble  gravity    = element->GetMaterialParameter(ConstantsGEnum);
+	IssmDouble  n          = element->GetMaterialParameter(MaterialsRheologyNEnum);
+	IssmDouble  B          = element->GetMaterialParameter(MaterialsRheologyBbarEnum);
+	Input* slopex_input    = element->GetInput(SurfaceSlopeXEnum);        _assert_(slopex_input);
+	Input* slopey_input    = element->GetInput(SurfaceSlopeYEnum);        _assert_(slopey_input);
+	Input* thickness_input = element->GetInput(ThicknessEnum);            _assert_(thickness_input);
+	Input* surface_input   = element->GetInput(SurfaceEnum);              _assert_(surface_input);
+	Input* drag_input      = NULL;
+	if(frictionlaw!=5 && frictionlaw!=1){
+		drag_input = element->GetInput(FrictionCoefficientEnum);  _assert_(drag_input);
+	}
+
+	Gauss* gauss=element->NewGauss();
+	for(int iv=0;iv<numvertices;iv++){
+		gauss->GaussVertex(iv);
+
+		connectivity=(IssmDouble)element->VertexConnectivity(iv);
+
+		thickness_input->GetInputValue(&thickness,gauss);
+		surface_input->GetInputValue(&surface,gauss);
+		slopex_input->GetInputValue(&slope[0],gauss);
+		slopey_input->GetInputValue(&slope[1],gauss);
+		slope2=slope[0]*slope[0]+slope[1]*slope[1];
+
+		switch(frictionlaw){
+			case 1:
+				/*Payne 1995 (m = 1, B = 5e-3/yts = 1.58e-10  m/s/Pa*/
+				ub=-1.58*1.e-10*rho_ice*gravity*thickness*slope[0];
+				vb=-1.58*1.e-10*rho_ice*gravity*thickness*slope[1];
+				break;
+			case 2:
+				/*Ritz et al. 1996*/
+				drag_input->GetInputValue(&drag,gauss);
+				ub=drag*(rho_ice*gravity*thickness)*(rho_ice*gravity*thickness)*slope[0]/sqrt(slope2);
+				vb=drag*(rho_ice*gravity*thickness)*(rho_ice*gravity*thickness)*slope[1]/sqrt(slope2);
+				break;
+			case 3:
+				/*Rutt et al. 2009*/
+				drag_input->GetInputValue(&drag,gauss);
+				ub=-drag*rho_ice*gravity*thickness*slope[0];
+				vb=-drag*rho_ice*gravity*thickness*slope[1];
+				break;
+			case 4:
+				/*Henning Akesson*/
+				drag = -4e-15 * surface + 8.6e-12;
+				ub=-drag*rho_ice*gravity*thickness*slope[0];
+				vb=-drag*rho_ice*gravity*thickness*slope[1];
+				break;
+			default:
+				_error_("Not supported yet");
+		}
+
+		pe->values[2*iv+0]=(ub-2.*pow(rho_ice*gravity,n)*pow(slope2,((n-1.)/2.))*pow(thickness,n+1.)/(pow(B,n)*(n+2))*slope[0])/connectivity;
+		pe->values[2*iv+1]=(vb-2.*pow(rho_ice*gravity,n)*pow(slope2,((n-1.)/2.))*pow(thickness,n+1.)/(pow(B,n)*(n+2))*slope[1])/connectivity;
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceSIAAnalysis::CreatePVector3D(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int         frictionlaw = 1;
+	int         nodeup,nodedown,numsegments;
+	IssmDouble  ub,vb,slope2,drag,surface,thickness,constant_part,z,Jdet;
+	IssmDouble  slope[2],connectivity[2],xyz_list_line[2][3];
+	IssmDouble *xyz_list = NULL;
+	int        *pairindices = NULL;
+
+	/*Fetch number vertices for this element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize Element vector*/
+	ElementVector* pe=element->NewElementVector();
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	IssmDouble  rho_ice    = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble  gravity    = element->GetMaterialParameter(ConstantsGEnum);
+	IssmDouble  n          = element->GetMaterialParameter(MaterialsRheologyNEnum);
+	IssmDouble  B          = element->GetMaterialParameter(MaterialsRheologyBEnum);
+	Input* surface_input   = element->GetInput(SurfaceEnum);              _assert_(surface_input);
+	Input* slopex_input    = element->GetInput(SurfaceSlopeXEnum);        _assert_(slopex_input);
+	Input* slopey_input    = element->GetInput(SurfaceSlopeYEnum);        _assert_(slopey_input);
+	Input* thickness_input = element->GetInput(ThicknessEnum);            _assert_(thickness_input);
+	Input* drag_input      = NULL;
+	Friction* friction     = NULL;
+	if(frictionlaw!=5 && frictionlaw!=1){
+		drag_input = element->GetInput(FrictionCoefficientEnum);  _assert_(drag_input);
+	}
+	else if(frictionlaw==5){
+		friction=new Friction(element,3);
+	}
+
+	/*Get Vertical segment indices*/
+	element->VerticalSegmentIndices(&pairindices,&numsegments);
+	for(int is=0;is<numsegments;is++){
+		nodedown = pairindices[is*2+0];
+		nodeup   = pairindices[is*2+1];
+		connectivity[0]=(IssmDouble)element->VertexConnectivity(nodedown);
+		connectivity[1]=(IssmDouble)element->VertexConnectivity(nodeup);
+		for(int i=0;i<3;i++){
+			xyz_list_line[0][i]=xyz_list[nodedown*3+i];
+			xyz_list_line[1][i]=xyz_list[nodeup*3+i];
+		}
+
+		Gauss* gauss=element->NewGaussLine(nodedown,nodeup,3);
+		for(int ig=gauss->begin();ig<gauss->end();ig++){
+			gauss->GaussPoint(ig);
+
+			slopex_input->GetInputValue(&slope[0],gauss);
+			slopey_input->GetInputValue(&slope[1],gauss);
+			surface_input->GetInputValue(&surface,gauss);
+			thickness_input->GetInputValue(&thickness,gauss);
+
+			slope2=slope[0]*slope[0]+slope[1]*slope[1];
+			constant_part=-2.*pow(rho_ice*gravity,n)*pow(slope2,((n-1.)/2.));
+
+			z = element->GetZcoord(xyz_list,gauss);
+			element->JacobianDeterminantLine(&Jdet,&xyz_list_line[0][0],gauss);
+
+			if(element->IsOnSurface()){
+				pe->values[2*nodeup+0]+=constant_part*pow((surface-z)/B,n)*slope[0]*Jdet*gauss->weight/connectivity[1];
+				pe->values[2*nodeup+1]+=constant_part*pow((surface-z)/B,n)*slope[1]*Jdet*gauss->weight/connectivity[1];
+			}
+			else{/*connectivity is too large, should take only half on it*/
+				pe->values[2*nodeup+0]+=constant_part*pow((surface-z)/B,n)*slope[0]*Jdet*gauss->weight*2./connectivity[1];
+				pe->values[2*nodeup+1]+=constant_part*pow((surface-z)/B,n)*slope[1]*Jdet*gauss->weight*2./connectivity[1];
+			}
+		}
+
+		/*Deal with basal velocities*/
+		if(element->IsOnBase()){
+			switch(frictionlaw){
+				case 1:
+					/*Payne 1995 (m = 1, B = 5e-3/yts = 1.58e-10  m/s/Pa*/
+					ub=-1.58*1.e-10*rho_ice*gravity*thickness*slope[0];
+					vb=-1.58*1.e-10*rho_ice*gravity*thickness*slope[1];
+					break;
+				case 2:
+					/*Ritz et al. 1996*/
+					drag_input->GetInputValue(&drag,gauss);
+					ub=drag*(rho_ice*gravity*thickness)*(rho_ice*gravity*thickness)*slope[0]/sqrt(slope2);
+					vb=drag*(rho_ice*gravity*thickness)*(rho_ice*gravity*thickness)*slope[1]/sqrt(slope2);
+					break;
+				case 3:
+					/*Rutt et al. 2009*/
+					drag_input->GetInputValue(&drag,gauss);
+					ub=-drag*rho_ice*gravity*thickness*slope[0];
+					vb=-drag*rho_ice*gravity*thickness*slope[1];
+					break;
+				case 4:
+					/*Henning Akesson*/
+					drag_input->GetInputValue(&drag,gauss);
+					drag = -4e-15 * surface + 8.6e-12;
+					ub=-drag*rho_ice*gravity*thickness*slope[0];
+					vb=-drag*rho_ice*gravity*thickness*slope[1];
+					break;
+				case 5: /*Weertman temp for Kevin*/{
+					friction->GetAlpha2WeertmanTemp(&drag,gauss);
+					ub = -1./drag * rho_ice*gravity*thickness*slope[0];
+					vb = -1./drag * rho_ice*gravity*thickness*slope[1];
+					}
+					break;
+				default:
+					_error_("Not supported yet");
+			}
+
+			pe->values[2*nodedown+0]+=ub/connectivity[0];
+			pe->values[2*nodedown+1]+=vb/connectivity[0];
+		}
+		delete gauss;
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(pairindices);
+	xDelete<IssmDouble>(xyz_list);
+	if(frictionlaw==5) delete friction;
+	return pe;
+
+}/*}}}*/
+void           StressbalanceSIAAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+
+	IssmDouble vx,vy;
+	int       *doflist = NULL;
+
+	/*Fetch number of nodes and initialize values*/
+	int         numnodes = element->GetNumberOfNodes();
+	int         numdof   = numnodes*2;
+	IssmDouble* values   = xNew<IssmDouble>(numdof);
+
+	/*Get dof list and inputs */
+	element->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum); _assert_(vy_input);
+
+	/*Ok, we have the velocities in inputs, fill in solution */
+	Gauss* gauss=element->NewGauss();
+	for(int i=0;i<numnodes;i++){
+		gauss->GaussVertex(i);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		values[i*2+0]=vx;
+		values[i*2+1]=vy;
+	}
+
+	/*Add value to global vector*/
+	solution->SetValues(numdof,doflist,values,INS_VAL);
+
+	/*Free ressources:*/
+	delete gauss;
+	xDelete<int>(doflist);
+	xDelete<IssmDouble>(values);
+}/*}}}*/
+void           StressbalanceSIAAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           StressbalanceSIAAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int         i,domaintype;
+	IssmDouble  rho_ice,g;
+	int*        doflist=NULL;
+	IssmDouble* xyz_list=NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*2;
+
+	/*Fetch dof list and allocate solution vectors*/
+	element->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values    = xNew<IssmDouble>(numdof);
+	IssmDouble* vx        = xNew<IssmDouble>(numdof);
+	IssmDouble* vy        = xNew<IssmDouble>(numdof);
+	IssmDouble* vz        = xNew<IssmDouble>(numdof);
+	IssmDouble* vel       = xNew<IssmDouble>(numdof);
+	IssmDouble* pressure  = xNew<IssmDouble>(numdof);
+	IssmDouble* thickness = xNew<IssmDouble>(numdof);
+	IssmDouble* surface   = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
+
+	/*Transform solution in Cartesian Space*/
+	element->TransformSolutionCoord(&values[0],XYEnum);
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+	for(i=0;i<numnodes;i++){
+		vx[i]=values[i*NDOF2+0];
+		vy[i]=values[i*NDOF2+1];
+
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Get Vz and compute vel*/
+	element->GetInputListOnNodes(&vz[0],VzEnum,0.);
+	for(i=0;i<numnodes;i++) vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i] + vz[i]*vz[i]);
+
+	/*For pressure: we have not computed pressure in this analysis, for this element. We are in 2D, 
+	 *so the pressure is just the pressure at the bedrock: */
+	rho_ice  = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	g        = element->GetMaterialParameter(ConstantsGEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->GetInputListOnNodes(&thickness[0],ThicknessEnum);
+			for(i=0;i<numnodes;i++) pressure[i]=rho_ice*g*thickness[i];
+			break;
+		case Domain3DEnum:   
+			element->GetVerticesCoordinates(&xyz_list);
+			element->GetInputListOnNodes(&surface[0],SurfaceEnum);
+			for(i=0;i<numnodes;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Now, we have to move the previous Vx and Vy inputs  to old 
+	 * status, otherwise, we'll wipe them off: */
+	element->InputChangeName(VxEnum,VxPicardEnum);
+	element->InputChangeName(VyEnum,VyPicardEnum);
+	element->InputChangeName(PressureEnum,PressurePicardEnum);
+
+	/*Add vx and vy as inputs to the tria element: */
+	element->AddInput(VxEnum,vx,P1Enum);
+	element->AddInput(VyEnum,vy,P1Enum);
+	element->AddInput(VelEnum,vel,P1Enum);
+	element->AddInput(PressureEnum,pressure,P1Enum);
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(thickness);
+	xDelete<IssmDouble>(surface);
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(vel);
+	xDelete<IssmDouble>(vz);
+	xDelete<IssmDouble>(vy);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           StressbalanceSIAAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/StressbalanceSIAAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/StressbalanceSIAAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/StressbalanceSIAAnalysis.h	(revision 21239)
@@ -0,0 +1,37 @@
+/*! \file StressbalanceSIAAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _StressbalanceSIAAnalysis_
+#define _StressbalanceSIAAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class StressbalanceSIAAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementMatrix* CreateKMatrix2D(Element* element);
+		ElementMatrix* CreateKMatrix3D(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		ElementVector* CreatePVector2D(Element* element);
+		ElementVector* CreatePVector3D(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/StressbalanceVerticalAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/StressbalanceVerticalAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/StressbalanceVerticalAnalysis.cpp	(revision 21239)
@@ -0,0 +1,620 @@
+#include "./StressbalanceVerticalAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+/*Model processing*/
+void StressbalanceVerticalAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*Intermediary*/
+	bool        isSIA,isSSA,isL1L2,isHO,isFS,iscoupling;
+	int         Mz,Nz;
+	IssmDouble *spcvz = NULL;
+
+	/*return if not 3d mesh*/
+	if(iomodel->domaintype!=Domain3DEnum) return;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
+	iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
+	iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
+	iomodel->FindConstant(&isHO,"md.flowequation.isHO");
+	iomodel->FindConstant(&isFS,"md.flowequation.isFS");
+
+	/*Do we have coupling*/
+	if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
+	 iscoupling = true;
+	else
+	 iscoupling = false;
+
+
+	/*If no coupling, call Regular IoModelToConstraintsx, else, use P1 elements only*/
+	if(!iscoupling){
+		IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvz",StressbalanceVerticalAnalysisEnum,P1Enum,0);
+	}
+	else{
+		/*Fetch data: */
+		iomodel->FetchData(1,"md.flowequation.borderFS");
+		/*Fetch Spc*/
+		iomodel->FetchData(&spcvz,&Mz,&Nz,"md.stressbalance.spcvz");
+		if(Nz>1) _error_("not supported yet (needs to be coded)");
+
+		/*Initialize counter*/
+		int count=0;
+
+		/*Create spcs from x,y,z, as well as the spc values on those spcs: */
+		for(int i=0;i<iomodel->numberofvertices;i++){
+
+			/*keep only this partition's nodes:*/
+			if(iomodel->my_vertices[i]){
+
+				if (reCast<int,IssmDouble>(iomodel->Data("md.flowequation.borderFS")[i])){
+					constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceVerticalAnalysisEnum)); //spc to zero as vertical velocity is done in Horiz for FS
+					count++;
+				}
+				else if (!xIsNan<IssmDouble>(spcvz[i])){
+					constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,
+									spcvz[i],StressbalanceVerticalAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+					count++;
+
+				}
+			} 
+		}
+
+		/*Free data: */
+		iomodel->DeleteData(1,"md.flowequation.borderFS");
+		iomodel->DeleteData(spcvz,"md.stressbalance.spcvz");
+	}
+
+}/*}}}*/
+void StressbalanceVerticalAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*No loads*/
+
+}/*}}}*/
+void StressbalanceVerticalAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	/*return if not 3d mesh*/
+	if(iomodel->domaintype!=Domain3DEnum) return;
+
+	iomodel->FetchData(3,"md.mesh.vertexonbase","md.mesh.vertexonsurface","md.flowequation.vertex_equation");
+	::CreateNodes(nodes,iomodel,StressbalanceVerticalAnalysisEnum,P1Enum);
+	iomodel->DeleteData(3,"md.mesh.vertexonbase","md.mesh.vertexonsurface","md.flowequation.vertex_equation");
+}/*}}}*/
+int  StressbalanceVerticalAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void StressbalanceVerticalAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*return if not 3d mesh*/
+	if(iomodel->domaintype!=Domain3DEnum) return;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(elements,"md.slr.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+	iomodel->FetchDataToInput(elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(elements,"md.basalforcings.floatingice_melting_rate",BasalforcingsFloatingiceMeltingRateEnum);
+	//iomodel->FetchDataToInput(elements,"md.smb.mass_balance",SmbMassBalanceEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vx",VxEnum,0.);
+	iomodel->FetchDataToInput(elements,"md.initialization.vy",VyEnum,0.);
+}/*}}}*/
+void StressbalanceVerticalAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	/*No specific parameters*/
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           StressbalanceVerticalAnalysis::Core(FemModel* femmodel){/*{{{*/
+
+		if(VerboseSolution()) _printf0_("   computing vertical velocities\n");
+		femmodel->SetCurrentConfiguration(StressbalanceVerticalAnalysisEnum);
+		solutionsequence_linear(femmodel);
+}/*}}}*/
+ElementVector* StressbalanceVerticalAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* StressbalanceVerticalAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* StressbalanceVerticalAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	bool hack = false;
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixVolume(element);
+	ElementMatrix* Ke2=NULL;
+	if(hack) Ke2=CreateKMatrixBase(element);
+	else Ke2=CreateKMatrixSurface(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+
+}/*}}}*/
+ElementMatrix* StressbalanceVerticalAnalysis::CreateKMatrixBase(Element* element){/*{{{*/
+
+
+	if(!element->IsOnBase()) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  D,Jdet,normal[3];
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke    = element->NewElementMatrix(NoneApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGaussBase(2);
+	element->NormalBase(&normal[0],xyz_list);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		D = -gauss->weight*Jdet*normal[2];
+
+		TripleMultiply( basis,1,numnodes,1,
+					&D,1,1,0,
+					basis,1,numnodes,0,
+					&Ke->values[0],1);
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceVerticalAnalysis::CreateKMatrixSurface(Element* element){/*{{{*/
+
+
+	if(!element->IsOnSurface()) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  D,Jdet,normal[3];
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke    = element->NewElementMatrix(NoneApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesTop(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGaussTop(2);
+	element->NormalTop(&normal[0],xyz_list);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminantTop(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		D = -gauss->weight*Jdet*normal[2];
+
+		TripleMultiply( basis,1,numnodes,1,
+					&D,1,1,0,
+					basis,1,numnodes,0,
+					&Ke->values[0],1);
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceVerticalAnalysis::CreateKMatrixVolume(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble  D,Jdet;
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix(NoneApproximationEnum);
+	IssmDouble*    B      = xNew<IssmDouble>(numnodes);
+	IssmDouble*    Bprime = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		this->GetB(B,element,xyz_list,gauss);
+		this->GetBprime(Bprime,element,xyz_list,gauss);
+		D=gauss->weight*Jdet;
+
+		TripleMultiply(B,1,numnodes,1,
+					&D,1,1,0,
+					Bprime,1,numnodes,0,
+					&Ke->values[0],1);
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(B);
+	return Ke;
+
+}/*}}}*/
+ElementVector* StressbalanceVerticalAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	bool hack = false;
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorVolume(element);
+	ElementVector* pe2=NULL;
+	if(hack) pe2=CreatePVectorSurface(element);
+	else     pe2=CreatePVectorBase(element);
+	ElementVector* pe =new ElementVector(pe1,pe2);
+
+	/*clean-up and return*/
+	delete pe1;
+	delete pe2;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceVerticalAnalysis::CreatePVectorBase(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	int         approximation;
+	IssmDouble *xyz_list      = NULL;
+	IssmDouble *xyz_list_base = NULL;
+	IssmDouble  Jdet,slope[3];
+	IssmDouble  vx,vy,vz=0.,dbdx,dbdy;
+	IssmDouble  gmb,fmb,phi,basalmeltingvalue;
+
+	if(!element->IsOnBase()) return NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->GetInputValue(&approximation,ApproximationEnum);
+	Input* base_input=element->GetInput(BaseEnum);                                               _assert_(base_input);
+	Input* groundedice_input=element->GetInput(MaskGroundediceLevelsetEnum);                     _assert_(groundedice_input);
+	Input* groundedice_melting_input=element->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(groundedice_melting_input);
+	Input* floatingice_melting_input=element->GetInput(BasalforcingsFloatingiceMeltingRateEnum); _assert_(floatingice_melting_input);
+	Input* vx_input=element->GetInput(VxEnum);                                                   _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum);                                                   _assert_(vy_input);
+	Input* vzFS_input=NULL;
+	if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+		vzFS_input=element->GetInput(VzFSEnum);       _assert_(vzFS_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		groundedice_melting_input->GetInputValue(&gmb,gauss);
+		floatingice_melting_input->GetInputValue(&fmb,gauss);
+		groundedice_input->GetInputValue(&phi,gauss);
+		base_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+			vzFS_input->GetInputValue(&vz,gauss);
+		}
+		dbdx=slope[0];
+		dbdy=slope[1];
+		if(phi>0.) basalmeltingvalue=gmb;
+		else basalmeltingvalue=fmb;
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=-Jdet*gauss->weight*(vx*dbdx+vy*dbdy-vz-basalmeltingvalue)*basis[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_base);
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceVerticalAnalysis::CreatePVectorSurface(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	int         approximation;
+	IssmDouble *xyz_list      = NULL;
+	IssmDouble *xyz_list_surface= NULL;
+	IssmDouble  Jdet,slope[3];
+	IssmDouble  vx,vy,vz=0.,dsdx,dsdy;
+	IssmDouble  smb,smbvalue;
+
+	if(!element->IsOnSurface()) return NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetVerticesCoordinatesTop(&xyz_list_surface);
+	element->GetInputValue(&approximation,ApproximationEnum);
+	Input* surface_input    =element->GetInput(SurfaceEnum);               _assert_(surface_input);
+	Input* smb_input=element->GetInput(SmbMassBalanceEnum);    _assert_(smb_input);
+	Input* vx_input=element->GetInput(VxEnum);                             _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum);                             _assert_(vy_input);
+	Input* vzFS_input=NULL;
+	if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+		vzFS_input=element->GetInput(VzFSEnum);       _assert_(vzFS_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussTop(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		smb_input->GetInputValue(&smb,gauss);
+		surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+			vzFS_input->GetInputValue(&vz,gauss);
+		}
+		dsdx=slope[0];
+		dsdy=slope[1];
+
+		element->JacobianDeterminantTop(&Jdet,xyz_list_surface,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=-Jdet*gauss->weight*(vx*dsdx+vy*dsdy-vz+smb)*basis[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_surface);
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceVerticalAnalysis::CreatePVectorVolume(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         approximation;
+	IssmDouble  Jdet,dudx,dvdy,dwdz;
+	IssmDouble  du[3],dv[3],dw[3];
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and basis functions*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetInputValue(&approximation,ApproximationEnum);
+	Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum); _assert_(vy_input);
+	Input* vzFS_input=NULL;
+	if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+		vzFS_input=element->GetInput(VzFSEnum); _assert_(vzFS_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		vx_input->GetInputDerivativeValue(&du[0],xyz_list,gauss);
+		vy_input->GetInputDerivativeValue(&dv[0],xyz_list,gauss);
+		if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+			vzFS_input->GetInputDerivativeValue(&dw[0],xyz_list,gauss);
+			dwdz=dw[2];
+		}
+		else dwdz=0;
+		dudx=du[0];
+		dvdy=dv[1];
+
+		for(int i=0;i<numnodes;i++) pe->values[i] += (dudx+dvdy+dwdz)*Jdet*gauss->weight*basis[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list);
+	return pe;
+}/*}}}*/
+void           StressbalanceVerticalAnalysis::GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*	Compute B  matrix. B=[dh1/dz dh2/dz dh3/dz dh4/dz dh5/dz dh6/dz];
+		where hi is the interpolation function for node i.*/
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(3*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		B[i] = dbasis[2*numnodes+i];  
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           StressbalanceVerticalAnalysis::GetBprime(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	element->NodalFunctions(Bprime,gauss);
+
+}/*}}}*/
+void           StressbalanceVerticalAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,VzEnum);
+}/*}}}*/
+void           StressbalanceVerticalAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           StressbalanceVerticalAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int          numnodes = element->GetNumberOfNodes();
+	int          numdof=numnodes*1;
+
+	int          i;
+	int          approximation;
+	int*         doflist  = NULL;
+	IssmDouble*  xyz_list = NULL;
+	IssmDouble   rho_ice,g;
+
+	/*Get the approximation and do nothing if the element in FS or None*/
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation==FSApproximationEnum || approximation==NoneApproximationEnum){
+		return;
+	}
+
+	/*Get dof list and vertices coordinates: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble*  values    = xNew<IssmDouble>(numdof);
+	IssmDouble*  vx        = xNew<IssmDouble>(numnodes);
+	IssmDouble*  vy        = xNew<IssmDouble>(numnodes);
+	IssmDouble*  vz        = xNew<IssmDouble>(numnodes);
+	IssmDouble*  vzSSA     = xNew<IssmDouble>(numnodes);
+	IssmDouble*  vzHO      = xNew<IssmDouble>(numnodes);
+	IssmDouble*  vzFS      = xNew<IssmDouble>(numnodes);
+	IssmDouble*  vel       = xNew<IssmDouble>(numnodes);
+	IssmDouble*  pressure  = xNew<IssmDouble>(numnodes);
+	IssmDouble*  surface   = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector vz: */
+	for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
+	for(i=0;i<numdof;i++){
+		vz[i]=values[i*1+0];
+
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(vz[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vz[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Get Vx and Vy*/
+	element->GetInputListOnNodes(&vx[0],VxEnum,0.0); //default is 0
+	element->GetInputListOnNodes(&vy[0],VyEnum,0.0); //default is 0
+
+	/*Do some modifications if we actually have a HOFS or SSAFS element*/
+	if(approximation==HOFSApproximationEnum){
+		Input* vzFS_input=element->GetInput(VzFSEnum);
+		if (vzFS_input){
+			if (vzFS_input->ObjectEnum()!=PentaInputEnum) _error_("Cannot compute Vel as VzFS is of type " << EnumToStringx(vzFS_input->ObjectEnum()));
+			element->GetInputListOnNodes(&vzFS[0],VzFSEnum,0.);
+		}
+		else _error_("Cannot compute Vz as VzFS in not present in HOFS element");
+		for(i=0;i<numnodes;i++){
+			vzHO[i]=vz[i];
+			vz[i]=vzHO[i]+vzFS[i];
+		}
+	}
+	else if(approximation==SSAFSApproximationEnum){
+		Input* vzFS_input=element->GetInput(VzFSEnum);
+		if (vzFS_input){
+			if (vzFS_input->ObjectEnum()!=PentaInputEnum) _error_("Cannot compute Vel as VzFS is of type " << EnumToStringx(vzFS_input->ObjectEnum()));
+			element->GetInputListOnNodes(&vzFS[0],VzFSEnum,0.);
+		}
+		else _error_("Cannot compute Vz as VzFS in not present in SSAFS element");
+		for(i=0;i<numnodes;i++){
+			vzSSA[i]=vz[i];
+			vz[i]=vzSSA[i]+vzFS[i];
+		}
+	}
+
+	/*Now Compute vel*/
+	for(i=0;i<numnodes;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
+
+	/*For pressure: we have not computed pressure in this analysis, for this element. We are in 3D, 
+	 *so the pressure is just the pressure at the z elevation: except it this is a HOFS element */
+	if(approximation!=HOFSApproximationEnum &&  approximation!=SSAFSApproximationEnum){
+		rho_ice = element->GetMaterialParameter(MaterialsRhoIceEnum);
+		g       = element->GetMaterialParameter(ConstantsGEnum);
+		element->GetInputListOnNodes(&surface[0],SurfaceEnum,0.);
+		for(i=0;i<numnodes;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
+	}
+
+	/*Now, we have to move the previous Vz inputs to old 
+	 * status, otherwise, we'll wipe them off and add the new inputs: */
+	element->InputChangeName(VzEnum,VzPicardEnum);
+
+	if(approximation!=HOFSApproximationEnum && approximation!=SSAFSApproximationEnum){
+		element->InputChangeName(PressureEnum,PressurePicardEnum);
+		element->AddInput(PressureEnum,pressure,element->GetElementType());
+	}
+	else if(approximation==HOFSApproximationEnum){
+		element->AddInput(VzHOEnum,vzHO,P1Enum);
+	}
+	else if(approximation==SSAFSApproximationEnum){
+		element->AddInput(VzSSAEnum,vzSSA,P1Enum);
+	}
+	element->AddInput(VzEnum,vz,P1Enum);
+	element->AddInput(VelEnum,vel,P1Enum);
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(surface);
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(vel);
+	xDelete<IssmDouble>(vz);
+	xDelete<IssmDouble>(vzSSA);
+	xDelete<IssmDouble>(vzHO);
+	xDelete<IssmDouble>(vzFS);
+	xDelete<IssmDouble>(vy);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           StressbalanceVerticalAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/StressbalanceVerticalAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/StressbalanceVerticalAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/StressbalanceVerticalAnalysis.h	(revision 21239)
@@ -0,0 +1,41 @@
+/*! \file StressbalanceVerticalAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _StressbalanceVerticalAnalysis_
+#define _StressbalanceVerticalAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class StressbalanceVerticalAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementMatrix* CreateKMatrixBase(Element* element);
+		ElementMatrix* CreateKMatrixSurface(Element* element);
+		ElementMatrix* CreateKMatrixVolume(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		ElementVector* CreatePVectorBase(Element* element);
+		ElementVector* CreatePVectorSurface(Element* element);
+		ElementVector* CreatePVectorVolume(Element* element);
+		void           GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBprime(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ThermalAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ThermalAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ThermalAnalysis.cpp	(revision 21239)
@@ -0,0 +1,801 @@
+#include "./ThermalAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void ThermalAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*Intermediary*/
+	int finiteelement = P1Enum;
+
+	/*Only 3d mesh supported*/
+	if(iomodel->domaintype!=Domain3DEnum) _error_("not supported yet");
+
+	/*Specific case for PDD, we want the constaints to be updated by the PDD scheme itself*/
+	bool isdynamic = false;
+	if(iomodel->solution_enum==ThermalSolutionEnum){
+		/*No PDD scheme, keep default*/
+	}
+	else if(iomodel->solution_enum==SteadystateSolutionEnum){
+		/*No PDD scheme, keep default*/
+	}
+	else if (iomodel->solution_enum==TransientSolutionEnum){
+		int smb_model;
+		iomodel->FindConstant(&smb_model,"md.smb.model");
+		if(smb_model==SMBpddEnum) isdynamic=true;
+		if(smb_model==SMBd18opddEnum) isdynamic=true;
+	}
+	else{
+		_error_("Solution "<<EnumToStringx(iomodel->solution_enum)<<" not supported yet");
+	}
+
+	if(isdynamic){
+		IoModelToDynamicConstraintsx(constraints,iomodel,"md.thermal.spctemperature",ThermalAnalysisEnum,finiteelement);
+	}
+	else{
+		IoModelToConstraintsx(constraints,iomodel,"md.thermal.spctemperature",ThermalAnalysisEnum,finiteelement);
+	}
+
+}/*}}}*/
+void ThermalAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	if(iomodel->domaintype==Domain2DhorizontalEnum) _error_("2d meshes not supported yet");
+
+	/*create penalties for nodes: no node can have a temperature over the melting point*/
+	iomodel->FetchData(1,"md.thermal.spctemperature");
+	CreateSingleNodeToElementConnectivity(iomodel);
+
+	for(int i=0;i<iomodel->numberofvertices;i++){
+
+		/*keep only this partition's nodes:*/
+		if(iomodel->my_vertices[i]){
+			if (xIsNan<IssmDouble>(iomodel->Data("md.thermal.spctemperature")[i])){ //No penalty applied on spc nodes!
+				loads->AddObject(new Pengrid(iomodel->loadcounter+i+1,i,iomodel,ThermalAnalysisEnum));
+			}
+		}
+	}
+	iomodel->DeleteData(1,"md.thermal.spctemperature");
+
+}/*}}}*/
+void ThermalAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	int finiteelement = P1Enum;
+	
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,ThermalAnalysisEnum,finiteelement);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  ThermalAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void ThermalAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int frictionlaw,basalforcing_model;
+	int FrictionCoupling;
+	/*Now, is the model 3d? otherwise, do nothing: */
+	if(iomodel->domaintype==Domain2DhorizontalEnum)return;
+
+	/*Update elements: */
+	int finiteelement = P1Enum;
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+
+	bool dakota_analysis, ismovingfront;
+	iomodel->FindConstant(&dakota_analysis,"md.qmu.isdakota");
+	iomodel->FindConstant(&ismovingfront,"md.transient.ismovingfront");
+	iomodel->FindConstant(&frictionlaw,"md.friction.law");
+
+	iomodel->FetchDataToInput(elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(elements,"md.slr.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,"md.mask.groundedice_levelset",MaskGroundediceLevelsetEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+	iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+	iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	iomodel->FetchDataToInput(elements,"md.materials.rheology_B",MaterialsRheologyBEnum);
+	iomodel->FetchDataToInput(elements,"md.materials.rheology_n",MaterialsRheologyNEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.pressure",PressureEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.temperature",TemperatureEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vy",VyEnum);
+	iomodel->FetchDataToInput(elements,"md.initialization.vz",VzEnum);
+	InputUpdateFromConstantx(elements,0.,VxMeshEnum);
+	InputUpdateFromConstantx(elements,0.,VyMeshEnum);
+	InputUpdateFromConstantx(elements,0.,VzMeshEnum);
+	if(ismovingfront){
+		iomodel->FetchDataToInput(elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum); // required for updating active nodes
+	}
+	/*Basal forcings variables*/
+	iomodel->FindConstant(&basalforcing_model,"md.basalforcings.model");
+	switch(basalforcing_model){
+		case MantlePlumeGeothermalFluxEnum:
+			break;
+		default:
+			iomodel->FetchDataToInput(elements,"md.basalforcings.geothermalflux",BasalforcingsGeothermalfluxEnum);
+			break;
+	}
+	/*Friction law variables*/
+	switch(frictionlaw){
+		case 1:
+			iomodel->FetchDataToInput(elements,"md.friction.coefficient",FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.p",FrictionPEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.q",FrictionQEnum);
+			break;
+		case 2:
+			iomodel->FetchDataToInput(elements,"md.friction.C",FrictionCEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.m",FrictionMEnum);
+			break;
+		case 3:
+			iomodel->FindConstant(&FrictionCoupling,"md.friction.coupling");
+			iomodel->FetchDataToInput(elements,"md.friction.C",FrictionCEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.As",FrictionAsEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.q",FrictionQEnum);
+			if (FrictionCoupling==0){
+				iomodel->FetchDataToInput(elements,"md.friction.effective_pressure",FrictionEffectivePressureEnum);
+			}
+			break;
+		case 4:
+			iomodel->FetchDataToInput(elements,"md.friction.coefficient",FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.p",FrictionPEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.q",FrictionQEnum);
+			iomodel->FetchDataToInput(elements,"md.initialization.pressure",PressureEnum);
+			iomodel->FetchDataToInput(elements,"md.initialization.temperature",TemperatureEnum);
+			break;
+		case 5:
+			iomodel->FetchDataToInput(elements,"md.friction.coefficient",FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.p",FrictionPEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.q",FrictionQEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.water_layer",FrictionWaterLayerEnum);
+			break;
+		case 6:
+			iomodel->FetchDataToInput(elements,"md.friction.C",FrictionCEnum);
+			iomodel->FetchDataToInput(elements,"md.friction.m",FrictionMEnum);
+			iomodel->FetchDataToInput(elements,"md.initialization.pressure",PressureEnum);
+			iomodel->FetchDataToInput(elements,"md.initialization.temperature",TemperatureEnum);
+			break;
+		default:
+			_error_("not supported");
+	}
+}/*}}}*/
+void ThermalAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int     numoutputs;
+	char**  requestedoutputs = NULL;
+
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.maxiter",ThermalMaxiterEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.stabilization",ThermalStabilizationEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.penalty_factor",ThermalPenaltyFactorEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.penalty_threshold",ThermalPenaltyThresholdEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.penalty_lock",ThermalPenaltyLockEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.isenthalpy",ThermalIsenthalpyEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.isdynamicbasalspc",ThermalIsdynamicbasalspcEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.friction.law",FrictionLawEnum));
+
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.thermal.requested_outputs");
+	parameters->AddObject(new IntParam(ThermalNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(ThermalRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.thermal.requested_outputs");
+
+	/*Deal with friction parameters*/
+	int frictionlaw;
+	iomodel->FindConstant(&frictionlaw,"md.friction.law");
+	if(frictionlaw==4 || frictionlaw==6) parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum));
+	if(frictionlaw==3) parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum));
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           ThermalAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* ThermalAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* ThermalAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* ThermalAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixVolume(element);
+	ElementMatrix* Ke2=CreateKMatrixShelf(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+}/*}}}*/
+ElementMatrix* ThermalAnalysis::CreateKMatrixShelf(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Initialize Element matrix and return if necessary*/
+	if(!element->IsOnBase() || !element->IsFloating()) return NULL;
+
+	IssmDouble  dt,Jdet,D;
+	IssmDouble *xyz_list_base = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnBase() || !element->IsFloating()) return NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize vectors*/
+	ElementMatrix* Ke    = element->NewElementMatrix();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	IssmDouble  gravity             = element->GetMaterialParameter(ConstantsGEnum);
+	IssmDouble  rho_water           = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	IssmDouble  rho_ice             = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble  heatcapacity        = element->GetMaterialParameter(MaterialsHeatcapacityEnum);
+	IssmDouble  mixed_layer_capacity= element->GetMaterialParameter(MaterialsMixedLayerCapacityEnum);
+	IssmDouble  thermal_exchange_vel= element->GetMaterialParameter(MaterialsThermalExchangeVelocityEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		D=gauss->weight*Jdet*rho_water*mixed_layer_capacity*thermal_exchange_vel/(heatcapacity*rho_ice);
+		if(reCast<bool,IssmDouble>(dt)) D=dt*D;
+		TripleMultiply(basis,numnodes,1,0,
+					&D,1,1,0,
+					basis,1,numnodes,0,
+					&Ke->values[0],1);
+
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list_base);
+	return Ke;
+}/*}}}*/
+ElementMatrix* ThermalAnalysis::CreateKMatrixVolume(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int         stabilization;
+	IssmDouble  Jdet,dt,u,v,w,um,vm,wm,vel;
+	IssmDouble  h,hx,hy,hz,vx,vy,vz;
+	IssmDouble  tau_parameter,diameter;
+	IssmDouble  D_scalar;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(3*numnodes);
+	IssmDouble*    B      = xNew<IssmDouble>(3*numnodes);
+	IssmDouble*    Bprime = xNew<IssmDouble>(3*numnodes);
+	IssmDouble     D[3][3]={0.};
+	IssmDouble     K[3][3];
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&stabilization,ThermalStabilizationEnum);
+	IssmDouble  rho_water           = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	IssmDouble  rho_ice             = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble  gravity             = element->GetMaterialParameter(ConstantsGEnum);
+	IssmDouble  heatcapacity        = element->GetMaterialParameter(MaterialsHeatcapacityEnum);
+	IssmDouble  thermalconductivity = element->GetMaterialParameter(MaterialsThermalconductivityEnum);
+	IssmDouble  kappa = thermalconductivity/(rho_ice*heatcapacity);
+	Input* vx_input  = element->GetInput(VxEnum);     _assert_(vx_input);
+	Input* vy_input  = element->GetInput(VyEnum);     _assert_(vy_input);
+	Input* vz_input  = element->GetInput(VzEnum);     _assert_(vz_input);
+	Input* vxm_input = element->GetInput(VxMeshEnum); _assert_(vxm_input);
+	Input* vym_input = element->GetInput(VyMeshEnum); _assert_(vym_input);
+	Input* vzm_input = element->GetInput(VzMeshEnum); _assert_(vzm_input);
+	if(stabilization==2) diameter=element->MinEdgeLength(xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		D_scalar=gauss->weight*Jdet;
+		if(dt!=0.) D_scalar=D_scalar*dt;
+
+		/*Conduction: */
+		GetBConduct(B,element,xyz_list,gauss); 
+		D[0][0]=D_scalar*kappa;
+		D[1][1]=D_scalar*kappa;
+		D[2][2]=D_scalar*kappa;
+		TripleMultiply(B,3,numnodes,1,
+					&D[0][0],3,3,0,
+					B,3,numnodes,0,
+					&Ke->values[0],1);
+
+		/*Advection: */
+		GetBAdvec(B,element,xyz_list,gauss); 
+		GetBAdvecprime(Bprime,element,xyz_list,gauss); 
+		vx_input->GetInputValue(&u,gauss); vxm_input->GetInputValue(&um,gauss); vx=u-um;
+		vy_input->GetInputValue(&v,gauss); vym_input->GetInputValue(&vm,gauss); vy=v-vm;
+		vz_input->GetInputValue(&w,gauss); vzm_input->GetInputValue(&wm,gauss); vz=w-wm;
+		D[0][0]=D_scalar*vx;
+		D[1][1]=D_scalar*vy;
+		D[2][2]=D_scalar*vz;
+		TripleMultiply(B,3,numnodes,1,
+					&D[0][0],3,3,0,
+					Bprime,3,numnodes,0,
+					&Ke->values[0],1);
+
+		/*Transient: */
+		if(dt!=0.){
+			D_scalar=gauss->weight*Jdet;
+			element->NodalFunctions(basis,gauss);
+			TripleMultiply(basis,numnodes,1,0,
+						&D_scalar,1,1,0,
+						basis,1,numnodes,0,
+						&Ke->values[0],1);
+			D_scalar=D_scalar*dt;
+		}
+
+		/*Artifficial diffusivity*/
+		if(stabilization==1){
+			element->ElementSizes(&hx,&hy,&hz);
+			vel=sqrt(vx*vx + vy*vy + vz*vz)+1.e-14;
+			h=sqrt( pow(hx*vx/vel,2) + pow(hy*vy/vel,2) + pow(hz*vz/vel,2));
+			K[0][0]=h/(2.*vel)*fabs(vx*vx);  K[0][1]=h/(2.*vel)*fabs(vx*vy); K[0][2]=h/(2.*vel)*fabs(vx*vz);
+			K[1][0]=h/(2.*vel)*fabs(vy*vx);  K[1][1]=h/(2.*vel)*fabs(vy*vy); K[1][2]=h/(2.*vel)*fabs(vy*vz);
+			K[2][0]=h/(2.*vel)*fabs(vz*vx);  K[2][1]=h/(2.*vel)*fabs(vz*vy); K[2][2]=h/(2.*vel)*fabs(vz*vz);
+			for(int i=0;i<3;i++) for(int j=0;j<3;j++) K[i][j] = D_scalar*K[i][j];
+
+			GetBAdvecprime(Bprime,element,xyz_list,gauss); 
+
+			TripleMultiply(Bprime,3,numnodes,1,
+						&K[0][0],3,3,0,
+						Bprime,3,numnodes,0,
+						&Ke->values[0],1);
+		}
+		else if(stabilization==2){
+			element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+			tau_parameter=element->StabilizationParameter(u-um,v-vm,w-wm,diameter,kappa);
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j]+=tau_parameter*D_scalar*
+					  ((u-um)*dbasis[0*numnodes+i]+(v-vm)*dbasis[1*numnodes+i]+(w-wm)*dbasis[2*numnodes+i])*((u-um)*dbasis[0*numnodes+j]+(v-vm)*dbasis[1*numnodes+j]+(w-wm)*dbasis[2*numnodes+j]);
+				}
+			}
+			if(dt!=0.){
+				D_scalar=gauss->weight*Jdet;
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=tau_parameter*D_scalar*basis[j]*((u-um)*dbasis[0*numnodes+i]+(v-vm)*dbasis[1*numnodes+i]+(w-wm)*dbasis[2*numnodes+i]);
+					}
+				}
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* ThermalAnalysis::CreatePVector(Element* element){/*{{{*/
+	
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorVolume(element);
+	ElementVector* pe2=CreatePVectorSheet(element);
+	ElementVector* pe3=CreatePVectorShelf(element);
+	ElementVector* pe =new ElementVector(pe1,pe2,pe3);
+
+	/*clean-up and return*/
+	delete pe1;
+	delete pe2;
+	delete pe3;
+	return pe;
+}/*}}}*/
+ElementVector* ThermalAnalysis::CreatePVectorSheet(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/* Geothermal flux on ice sheet base and basal friction */
+	if(!element->IsOnBase() || element->IsFloating()) return NULL;
+
+	IssmDouble  dt,Jdet,geothermalflux,vx,vy,vz;
+	IssmDouble  alpha2,scalar,basalfriction,heatflux;
+	IssmDouble *xyz_list_base = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input* vx_input             = element->GetInput(VxEnum);                          _assert_(vx_input);
+	Input* vy_input             = element->GetInput(VyEnum);                          _assert_(vy_input);
+	Input* vz_input             = element->GetInput(VzEnum);                          _assert_(vz_input);
+	Input* geothermalflux_input = element->GetInput(BasalforcingsGeothermalfluxEnum); _assert_(geothermalflux_input);
+	IssmDouble  rho_ice             = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble  heatcapacity        = element->GetMaterialParameter(MaterialsHeatcapacityEnum);
+
+	/*Build friction element, needed later: */
+	Friction* friction=new Friction(element,3);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss   = element->NewGaussBase(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		geothermalflux_input->GetInputValue(&geothermalflux,gauss);
+		friction->GetAlpha2(&alpha2,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vz_input->GetInputValue(&vz,gauss);
+		vz = 0.;//FIXME
+		basalfriction = alpha2*(vx*vx + vy*vy + vz*vz);
+		heatflux      = (basalfriction+geothermalflux)/(rho_ice*heatcapacity);
+
+		scalar = gauss->weight*Jdet*heatflux;
+		if(dt!=0.) scalar=dt*scalar;
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=scalar*basis[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	delete friction;
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list_base);
+	return pe;
+}/*}}}*/
+ElementVector* ThermalAnalysis::CreatePVectorShelf(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	IssmDouble  t_pmp,dt,Jdet,scalar_ocean,pressure;
+	IssmDouble *xyz_list_base = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnBase() || !element->IsFloating()) return NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input*      pressure_input=element->GetInput(PressureEnum); _assert_(pressure_input);
+	IssmDouble  gravity             = element->GetMaterialParameter(ConstantsGEnum);
+	IssmDouble  rho_water           = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	IssmDouble  rho_ice             = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble  heatcapacity        = element->GetMaterialParameter(MaterialsHeatcapacityEnum);
+	IssmDouble  mixed_layer_capacity= element->GetMaterialParameter(MaterialsMixedLayerCapacityEnum);
+	IssmDouble  thermal_exchange_vel= element->GetMaterialParameter(MaterialsThermalExchangeVelocityEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		pressure_input->GetInputValue(&pressure,gauss);
+		t_pmp=element->TMeltingPoint(pressure);
+
+		scalar_ocean=gauss->weight*Jdet*rho_water*mixed_layer_capacity*thermal_exchange_vel*(t_pmp)/(heatcapacity*rho_ice);
+		if(reCast<bool,IssmDouble>(dt)) scalar_ocean=dt*scalar_ocean;
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=scalar_ocean*basis[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list_base);
+	return pe;
+}/*}}}*/
+ElementVector* ThermalAnalysis::CreatePVectorVolume(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int         stabilization;
+	IssmDouble  Jdet,phi,dt;
+	IssmDouble  temperature;
+	IssmDouble  tau_parameter,diameter;
+	IssmDouble  u,v,w;
+	IssmDouble  scalar_def,scalar_transient;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe     = element->NewElementVector();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(3*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	IssmDouble  rho_ice             = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble  heatcapacity        = element->GetMaterialParameter(MaterialsHeatcapacityEnum);
+	IssmDouble  thermalconductivity = element->GetMaterialParameter(MaterialsThermalconductivityEnum);
+	IssmDouble  kappa = thermalconductivity/(rho_ice*heatcapacity);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&stabilization,ThermalStabilizationEnum);
+	Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input=element->GetInput(VzEnum); _assert_(vz_input);
+	Input* temperature_input = NULL;
+	if(reCast<bool,IssmDouble>(dt)){temperature_input = element->GetInput(TemperatureEnum); _assert_(temperature_input);}
+	if(stabilization==2) diameter=element->MinEdgeLength(xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->ViscousHeating(&phi,xyz_list,gauss,vx_input,vy_input,vz_input);
+
+		scalar_def=phi/(rho_ice*heatcapacity)*Jdet*gauss->weight;
+		if(reCast<bool,IssmDouble>(dt)) scalar_def=scalar_def*dt;
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=scalar_def*basis[i];
+
+		/* Build transient now */
+		if(reCast<bool,IssmDouble>(dt)){
+			temperature_input->GetInputValue(&temperature, gauss);
+			scalar_transient=temperature*Jdet*gauss->weight;
+			for(int i=0;i<numnodes;i++) pe->values[i]+=scalar_transient*basis[i];
+		}
+
+		if(stabilization==2){
+			element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+			vx_input->GetInputValue(&u,gauss);
+			vy_input->GetInputValue(&v,gauss);
+			vz_input->GetInputValue(&w,gauss);
+
+			tau_parameter=element->StabilizationParameter(u,v,w,diameter,kappa);
+
+			for(int i=0;i<numnodes;i++) pe->values[i]+=tau_parameter*scalar_def*(u*dbasis[0*numnodes+i]+v*dbasis[1*numnodes+i]+w*dbasis[2*numnodes+i]);
+			if(reCast<bool,IssmDouble>(dt)){
+				for(int i=0;i<numnodes;i++) pe->values[i]+=tau_parameter*scalar_transient*(u*dbasis[0*numnodes+i]+v*dbasis[1*numnodes+i]+w*dbasis[2*numnodes+i]);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return pe;
+
+}/*}}}*/
+void           ThermalAnalysis::GetBAdvec(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3 B4 B5 B6] where Bi is of size 5*NDOF1. 
+	 * For node i, Bi' can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi_advec =[ h ]
+	 *                 [ h ]
+	 *                 [ h ]
+	 * where h is the interpolation function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 3x(NDOF1*NUMNODESP1)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions*/
+	IssmDouble* basis=xNew<IssmDouble>(numnodes);
+	element->NodalFunctions(basis,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		B[numnodes*0+i] = basis[i];
+		B[numnodes*1+i] = basis[i];
+		B[numnodes*2+i] = basis[i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           ThermalAnalysis::GetBAdvecprime(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3 B4 B5 B6] where Bi is of size 5*NDOF1. 
+	 * For node i, Bi' can be expressed in the actual coordinate system
+	 * by: 
+	 *       Biprime_advec=[ dh/dx ]
+	 *                     [ dh/dy ]
+	 *                     [ dh/dz ]
+	 * where h is the interpolation function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 3x(NDOF1*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(3*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		B[numnodes*0+i] = dbasis[0*numnodes+i];
+		B[numnodes*1+i] = dbasis[1*numnodes+i];
+		B[numnodes*2+i] = dbasis[2*numnodes+i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           ThermalAnalysis::GetBConduct(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3 B4 B5 B6] where Bi is of size 5*NDOF1. 
+	 * For node i, Bi' can be expressed in the actual coordinate system
+	 * by: 
+	 *       Bi_conduct=[ dh/dx ]
+	 *                  [ dh/dy ]
+	 *                  [ dh/dz ]
+	 * where h is the interpolation function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 3x(NDOF1*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(3*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		B[numnodes*0+i] = dbasis[0*numnodes+i];
+		B[numnodes*1+i] = dbasis[1*numnodes+i];
+		B[numnodes*2+i] = dbasis[2*numnodes+i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           ThermalAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,TemperatureEnum);
+}/*}}}*/
+void           ThermalAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           ThermalAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	bool        converged;
+	int         i,rheology_law;
+	int        *doflist   = NULL;
+	IssmDouble *xyz_list  = NULL;
+	bool        hack      = false;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Fetch dof list and allocate solution vector*/
+	element->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values    = xNew<IssmDouble>(numnodes);
+	IssmDouble* surface   = xNew<IssmDouble>(numnodes);
+	IssmDouble* B         = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numnodes;i++){
+		values[i]=solution[doflist[i]];
+
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+		//if(values[i]<0)      _printf_("temperature < 0°K found in solution vector\n");
+		//if(values[i]>275)    _printf_("temperature > 275°K found in solution vector (Paterson's rheology associated is negative)\n");
+	}
+
+	/*Force temperature between [Tpmp-50 Tpmp] to disable penalties*/
+	if(hack){
+		IssmDouble* pressure = xNew<IssmDouble>(numnodes);
+		element->GetInputListOnNodes(&pressure[0],PressureEnum);
+		for(i=0;i<numnodes;i++){
+			if(values[i]>element->TMeltingPoint(pressure[i]))     values[i]=element->TMeltingPoint(pressure[i]);
+			if(values[i]<element->TMeltingPoint(pressure[i])-50.) values[i]=element->TMeltingPoint(pressure[i])-50.;
+		}
+		xDelete<IssmDouble>(pressure);
+	}
+
+	/*Get all inputs and parameters*/
+	element->GetInputValue(&converged,ConvergedEnum);
+	if(converged){
+		element->AddInput(TemperatureEnum,values,element->GetElementType());
+
+		/*Update Rheology only if converged (we must make sure that the temperature is below melting point
+		 * otherwise the rheology could be negative*/
+		element->FindParam(&rheology_law,MaterialsRheologyLawEnum);
+		element->GetInputListOnNodes(&surface[0],SurfaceEnum);
+		switch(rheology_law){
+			case NoneEnum:
+				/*Do nothing: B is not temperature dependent*/
+				break;
+			case CuffeyEnum:
+				for(i=0;i<numnodes;i++) B[i]=Cuffey(values[i]);
+				element->AddInput(MaterialsRheologyBEnum,&B[0],element->GetElementType());
+				break;
+			case PatersonEnum:
+				for(i=0;i<numnodes;i++) B[i]=Paterson(values[i]);
+				element->AddInput(MaterialsRheologyBEnum,&B[0],element->GetElementType());
+				break;
+			case ArrheniusEnum:{
+				element->GetVerticesCoordinates(&xyz_list);
+				for(i=0;i<numnodes;i++) B[i]=Arrhenius(values[i],surface[i]-xyz_list[i*3+2],element->GetMaterialParameter(MaterialsRheologyNEnum));
+				element->AddInput(MaterialsRheologyBEnum,&B[0],element->GetElementType());
+				break;
+				}
+			default:
+				_error_("Rheology law " << EnumToStringx(rheology_law) << " not supported yet");
+		}
+	}
+	else{
+		element->AddInput(TemperaturePicardEnum,values,element->GetElementType());
+	}
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(surface);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           ThermalAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ThermalAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ThermalAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/ThermalAnalysis.h	(revision 21239)
@@ -0,0 +1,41 @@
+/*! \file ThermalAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _THERMALANALYSIS_
+#define _THERMALANALYSIS_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class ThermalAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementMatrix* CreateKMatrixShelf(Element* element);
+		ElementMatrix* CreateKMatrixVolume(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		ElementVector* CreatePVectorSheet(Element* element);
+		ElementVector* CreatePVectorShelf(Element* element);
+		ElementVector* CreatePVectorVolume(Element* element);
+		void           GetBAdvec(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBAdvecprime(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBConduct(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/UzawaPressureAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/UzawaPressureAnalysis.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/UzawaPressureAnalysis.cpp	(revision 21239)
@@ -0,0 +1,302 @@
+#include "./UzawaPressureAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void UzawaPressureAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	return;
+}/*}}}*/
+void UzawaPressureAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	return;
+}/*}}}*/
+void UzawaPressureAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	int finiteelement;
+	int fe_FS;
+
+	iomodel->FindConstant(&fe_FS,"md.flowequation.fe_FS");
+	if(fe_FS==LATaylorHoodEnum) finiteelement = P1Enum;
+	else if(fe_FS==LACrouzeixRaviartEnum) finiteelement = P1DGEnum;
+	else _error_("solution not supported yet");
+
+	::CreateNodes(nodes,iomodel,UzawaPressureAnalysisEnum,finiteelement);
+}/*}}}*/
+int  UzawaPressureAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void UzawaPressureAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Update elements: */
+	int finiteelement;
+	int counter=0;
+	int fe_FS;
+
+	iomodel->FindConstant(&fe_FS,"md.flowequation.fe_FS");
+	if(fe_FS==LATaylorHoodEnum) finiteelement = P1Enum;
+	else if(fe_FS==LACrouzeixRaviartEnum) finiteelement = P1DGEnum;
+	else _error_("solution not supported yet");
+
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(elements,"md.initialization.vx",VxEnum,0.);
+	iomodel->FetchDataToInput(elements,"md.initialization.vy",VyEnum,0.);
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchDataToInput(elements,"md.initialization.vz",VzEnum,0.);
+	iomodel->FetchDataToInput(elements,"md.initialization.pressure",PressureEnum,0.);
+	InputUpdateFromConstantx(elements,0.,SigmaNNEnum);
+}/*}}}*/
+void UzawaPressureAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.augmented_lagrangian_rhop",AugmentedLagrangianRhopEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.augmented_lagrangian_rholambda",AugmentedLagrangianRholambdaEnum));
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           UzawaPressureAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* UzawaPressureAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* UzawaPressureAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* UzawaPressureAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble  D_scalar,Jdet;
+	IssmDouble *xyz_list = NULL;
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke   = element->NewElementMatrix();
+	IssmDouble*    M    = xNew<IssmDouble>(numnodes);
+
+	IssmDouble connectivity;
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	int numvertices = element->GetNumberOfVertices();
+
+	//Gauss* gauss = element->NewGauss(5);
+	//for(int ig=gauss->begin();ig<gauss->end();ig++){
+	//	gauss->GaussPoint(ig);
+
+	//	element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+	//	this->GetM(M,element,gauss);
+	//	D_scalar=gauss->weight*Jdet;
+	//	//TripleMultiply(M,1,numnodes,1,
+	//	//			&D_scalar,1,1,0,
+	//	//			M,1,numnodes,0,
+	//	//			&Ke->values[0],1);
+
+	//}
+	for(int iv=0;iv<numvertices;iv++){
+		connectivity=(IssmDouble)element->VertexConnectivity(iv);
+		Ke->values[iv*numvertices+iv]=1./connectivity;
+	}
+
+	/*Clean up and return*/
+	//delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(M);
+	return Ke;
+}/*}}}*/
+ElementVector* UzawaPressureAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int          dim;
+	IssmDouble   Jdet,rhop,divu;
+	IssmDouble   *xyz_list = NULL;
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Retrieve all inputs and parameters*/
+	element->FindParam(&dim,DomainDimensionEnum);
+	element->FindParam(&rhop,AugmentedLagrangianRhopEnum);
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/*Initialize Element matrix and vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dvx   = xNew<IssmDouble>(dim);
+	IssmDouble*    dvy   = xNew<IssmDouble>(dim);
+	IssmDouble*    dvz   = xNew<IssmDouble>(dim);
+
+	Input* vx_input=element->GetInput(VxEnum);     _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum);     _assert_(vy_input);
+	Input* vz_input = NULL;
+	if(dim==3){vz_input=element->GetInput(VzEnum); _assert_(vz_input);}
+
+	Gauss* gauss = element->NewGauss(5);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis, gauss);
+		vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+		if(dim==3){
+			vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
+		}
+
+		divu=dvx[0]+dvy[1];
+		if (dim==3) divu=divu+dvz[2];
+
+		for(int i=0;i<numnodes;i++){
+			pe->values[i] += - rhop * divu * Jdet * gauss->weight * basis[i];
+		}
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dvx);
+	xDelete<IssmDouble>(dvy);
+	xDelete<IssmDouble>(dvz);
+	return pe;
+}/*}}}*/
+void           UzawaPressureAnalysis::GetM(IssmDouble* M,Element* element,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. M=[M1 M2 M3] */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions*/
+	IssmDouble* basis=xNew<IssmDouble>(numnodes);
+	element->NodalFunctions(basis,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		M[i] = basis[i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           UzawaPressureAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void           UzawaPressureAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           UzawaPressureAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int        dim;
+	int        *doflist       = NULL;
+	IssmDouble rholambda,un,vx,vy,vz,sigmann;
+	IssmDouble *xyz_list_base = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes      = element->GetNumberOfNodes();
+	int numnodessigma;
+	if(element->element_type==P1Enum) numnodessigma=element->GetNumberOfNodes(P2Enum);
+	else if(element->element_type==P1DGEnum) numnodessigma=element->GetNumberOfNodes(P2Enum);
+	else _error_("finite element not supported yet");
+
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch dof list and allocate solution vector*/
+	element->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values        = xNew<IssmDouble>(numnodes);
+	IssmDouble* valueslambda  = xNewZeroInit<IssmDouble>(numnodessigma);
+	IssmDouble* pressure      = xNew<IssmDouble>(numnodes);
+	Input* vx_input           = element->GetInput(VxEnum);      _assert_(vx_input);
+	Input* vy_input           = element->GetInput(VyEnum);      _assert_(vy_input);
+	Input* vz_input           = NULL;
+	if(dim==3){vz_input       = element->GetInput(VzEnum);      _assert_(vz_input);}
+	element->GetInputListOnNodes(&pressure[0],PressureEnum);
+
+	/*Update pressure enum first*/
+	for(int i=0;i<numnodes;i++){
+		values[i]  = pressure[i] + solution[doflist[i]];
+	}
+	element->AddInput(PressureEnum,values,element->GetElementType());
+
+	/*Now compute sigmann if on base*/
+	if(element->IsOnBase() && 0){ 
+		Input* sigmann_input      = element->GetInput(SigmaNNEnum); _assert_(sigmann_input);
+		if(dim==3) _error_("not implemented yet");
+
+		int baselist[3];
+		int onbase=0;
+		IssmDouble  Jdet;
+		IssmDouble bed_normal[3];
+		IssmDouble  Jlambda[3][3]  = {0.0};
+		IssmDouble  Cuk[3]         = {0.0};
+		IssmDouble  deltalambda[3] = {0.0};
+		IssmDouble* vertexonbase  = xNew<IssmDouble>(numnodessigma);
+		Input* vertexonbase_input = element->GetInput(MeshVertexonbaseEnum); _assert_(vertexonbase_input);
+		Gauss* gauss = element->NewGauss();
+
+		IssmDouble* basis = xNewZeroInit<IssmDouble>(numnodessigma);
+		element->GetVerticesCoordinatesBase(&xyz_list_base);
+		element->NormalBase(&bed_normal[0],xyz_list_base);
+		element->FindParam(&rholambda,AugmentedLagrangianRholambdaEnum);
+
+		for(int i=0;i<numnodessigma;i++){
+			gauss->GaussNode(P2Enum,i);
+			vertexonbase_input->GetInputValue(&vertexonbase[i], gauss);
+			if(vertexonbase[i]==1){ 
+				baselist[onbase]=i;
+				onbase += 1;
+			}
+		}
+		if(onbase!=3) _error_("basal nodes of element not found");
+
+		delete gauss;
+		gauss = element->NewGaussBase(3);
+		for(int ig=gauss->begin();ig<gauss->end();ig++){
+			gauss->GaussPoint(ig);
+
+			/*Compute Jlambda*/
+			element->NodalFunctionsP2(basis,gauss);
+			element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+			for(int i=0;i<3;i++){
+				for(int j=0;j<3;j++){
+					Jlambda[i][j] += Jdet*gauss->weight*basis[baselist[i]]*basis[baselist[j]];
+				}
+			}
+
+			/*Compute rho_lambd C u^k*/
+			vx_input->GetInputValue(&vx, gauss);
+			vy_input->GetInputValue(&vy, gauss);
+			un=bed_normal[0]*vx + bed_normal[1]*vy;
+			for(int i=0;i<3;i++) Cuk[i] += - un*rholambda*Jdet*gauss->weight*basis[baselist[i]];
+		}
+
+		/*Now update sigmann*/
+		Matrix3x3Solve(&deltalambda[0],&Jlambda[0][0],&Cuk[0]);
+		delete gauss;
+		gauss = element->NewGauss();
+		for(int i=0;i<3;i++){
+			gauss->GaussNode(P2Enum,baselist[i]);
+			sigmann_input->GetInputValue(&sigmann, gauss);
+			valueslambda[baselist[i]] = sigmann + deltalambda[i];
+		}
+
+		delete gauss;
+		xDelete<IssmDouble>(vertexonbase);
+		xDelete<IssmDouble>(xyz_list_base);
+		xDelete<IssmDouble>(basis);
+
+		element->AddInput(SigmaNNEnum,valueslambda,P2Enum);
+	}
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(valueslambda);
+	xDelete<IssmDouble>(pressure);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           UzawaPressureAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/UzawaPressureAnalysis.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/UzawaPressureAnalysis.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/UzawaPressureAnalysis.h	(revision 21239)
@@ -0,0 +1,34 @@
+/*! \file UzawaPressureAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _UzawaPressureAnalysis_
+#define _UzawaPressureAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class UzawaPressureAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetM(IssmDouble* M,Element* element,Gauss* gauss);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/analyses.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/analyses.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/analyses/analyses.h	(revision 21239)
@@ -0,0 +1,45 @@
+/*
+ * analyses.h: 
+ */
+
+#ifndef _ANALYSES_H_
+#define _ANALYSES_H_
+
+#include "./Analysis.h"
+
+#include "./AdjointBalancethicknessAnalysis.h"
+#include "./AdjointBalancethickness2Analysis.h"
+#include "./AdjointHorizAnalysis.h"
+#include "./BalancethicknessAnalysis.h"
+#include "./Balancethickness2Analysis.h"
+#include "./BalancethicknessSoftAnalysis.h"
+#include "./BalancevelocityAnalysis.h"
+#include "./DamageEvolutionAnalysis.h"
+#include "./DepthAverageAnalysis.h"
+#include "./EnthalpyAnalysis.h"
+#include "./ExtrudeFromBaseAnalysis.h"
+#include "./ExtrudeFromTopAnalysis.h"
+#include "./ExtrapolationAnalysis.h"
+#include "./FreeSurfaceBaseAnalysis.h"
+#include "./FreeSurfaceTopAnalysis.h"
+#include "./GiaAnalysis.h"
+#include "./HydrologyDCEfficientAnalysis.h"
+#include "./HydrologyDCInefficientAnalysis.h"
+#include "./HydrologyShreveAnalysis.h"
+#include "./HydrologySommersAnalysis.h"
+#include "./LevelsetAnalysis.h"
+#include "./MasstransportAnalysis.h"
+#include "./SmbAnalysis.h"
+#include "./SealevelriseAnalysis.h"
+#include "./MeltingAnalysis.h"
+#include "./MeshdeformationAnalysis.h"
+#include "./SmoothAnalysis.h"
+#include "./StressbalanceAnalysis.h"
+#include "./StressbalanceSIAAnalysis.h"
+#include "./StressbalanceVerticalAnalysis.h"
+#include "./UzawaPressureAnalysis.h"
+#include "./L2ProjectionBaseAnalysis.h"
+#include "./L2ProjectionEPLAnalysis.h"
+#include "./ThermalAnalysis.h"
+#include "./EnumToAnalysis.h"
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/AdjacentTriangle.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/AdjacentTriangle.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/AdjacentTriangle.cpp	(revision 21239)
@@ -0,0 +1,57 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "AdjacentTriangle.h"
+#include "Mesh.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+	//See header file
+
+	/*Methods*/
+	int  AdjacentTriangle::Locked() const {/*{{{*/
+		return t->AdjEdgeIndex[a] & 4;
+	}
+	/*}}}*/
+	int  AdjacentTriangle::GetAllFlag_UnSwap() const {/*{{{*/
+		// take all flag except MarkUnSwap
+		return t->AdjEdgeIndex[a] & 1012;
+	}
+	/*}}}*/
+	void AdjacentTriangle::SetLock(){/*{{{*/
+		t->SetLocked(a);
+	}
+	/*}}}*/
+	AdjacentTriangle AdjacentTriangle::Adj() const {/*{{{*/
+		return  t->Adj(a);
+	}
+	/*}}}*/
+	BamgVertex* AdjacentTriangle::EdgeVertex(const int & i) const {/*{{{*/
+		return t->vertices[VerticesOfTriangularEdge[a][i]];
+	}
+	/*}}}*/
+	Icoor2 & AdjacentTriangle::det() const {/*{{{*/
+		return t->det;
+	}
+	/*}}}*/
+	int AdjacentTriangle::swap(){/*{{{*/
+		return  t->swap(a);
+	}
+	/*}}}*/
+	void AdjacentTriangle::SetAdj2(const AdjacentTriangle & ta, int l  ){/*{{{*/
+		//set Adjacent Triangle of a triangle
+		if(t) {
+			t->adj[a]=ta.t;
+			t->AdjEdgeIndex[a]=ta.a|l;
+		}
+		if(ta.t) {
+			ta.t->adj[ta.a] = t ;
+			ta.t->AdjEdgeIndex[ta.a] = a| l ;
+		}
+	}
+	/*}}}*/
+
+} 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/AdjacentTriangle.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/AdjacentTriangle.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/AdjacentTriangle.h	(revision 21239)
@@ -0,0 +1,42 @@
+#ifndef _TRIANGLEADJACENT_H_
+#define _TRIANGLEADJACENT_H_
+
+#include "./include.h"
+#include "./BamgVertex.h"
+
+namespace bamg {
+
+	class Triangle;
+	class Triangle;
+
+	class AdjacentTriangle {
+
+		public:
+			Triangle* t; //pointer toward the triangle
+			int  a;      //Edge number
+
+			//Constructors
+			AdjacentTriangle():a(0),t(NULL) {};
+			AdjacentTriangle(Triangle* tt,int  aa): t(tt),a(aa &3) {};
+
+			//Operators
+			operator Triangle * () const {return t;}
+			operator Triangle & () const {return *t;}
+			operator int() const {return a;}
+			AdjacentTriangle & operator++(){ a= NextEdge[a]; return *this; }
+			AdjacentTriangle operator--(){ a= PreviousEdge[a]; return *this; }
+
+			//Methods
+
+			//Methods
+			int  Locked() const;
+			int  GetAllFlag_UnSwap() const;
+			void SetLock();
+			void SetAdj2(const AdjacentTriangle &ta, int l=0);
+			int  swap();
+			AdjacentTriangle Adj() const;
+			BamgVertex* EdgeVertex(const int & i) const;
+			Icoor2& det() const;
+	};
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgGeom.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgGeom.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgGeom.cpp	(revision 21239)
@@ -0,0 +1,30 @@
+#include "./bamgobjects.h"
+#include "../shared/shared.h"
+
+/*Constructors/Destructors*/
+BamgGeom::BamgGeom(){/*{{{*/
+
+	this->VerticesSize[0]=0,          this->VerticesSize[1]=0;          this->Vertices=NULL;
+	this->EdgesSize[0]=0,             this->EdgesSize[1]=0;             this->Edges=NULL;
+	this->TangentAtEdgesSize[0]=0,    this->TangentAtEdgesSize[1]=0;    this->TangentAtEdges=NULL;
+	this->CornersSize[0]=0,           this->CornersSize[1]=0;           this->Corners=NULL;
+	this->RequiredVerticesSize[0]=0,  this->RequiredVerticesSize[1]=0;  this->RequiredVertices=NULL;
+	this->RequiredEdgesSize[0]=0,     this->RequiredEdgesSize[1]=0;     this->RequiredEdges=NULL;
+	this->CrackedEdgesSize[0]=0,      this->CrackedEdgesSize[1]=0;      this->CrackedEdges=NULL;
+	this->SubDomainsSize[0]=0,        this->SubDomainsSize[1]=0;        this->SubDomains=NULL;
+
+}
+/*}}}*/
+BamgGeom::~BamgGeom(){/*{{{*/
+
+	xDelete<double>(this->Vertices);
+	xDelete<double>(this->Edges);
+	xDelete<double>(this->TangentAtEdges);
+	xDelete<double>(this->Corners);
+	xDelete<double>(this->RequiredVertices);
+	xDelete<double>(this->RequiredEdges);
+	xDelete<double>(this->CrackedEdges);
+	xDelete<double>(this->SubDomains);
+
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgGeom.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgGeom.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgGeom.h	(revision 21239)
@@ -0,0 +1,31 @@
+/*!\file:  BamgGeom.h
+ */ 
+
+#ifndef _BAMGGEOM_H_
+#define _BAMGGEOM_H_
+
+class BamgGeom{
+
+	public:
+		int     VerticesSize[2];
+		double* Vertices;
+		int     EdgesSize[2];
+		double* Edges;
+		int     TangentAtEdgesSize[2];
+		double* TangentAtEdges;
+		int     CornersSize[2];
+		double* Corners;
+		int     RequiredVerticesSize[2];
+		double* RequiredVertices;
+		int     RequiredEdgesSize[2];
+		double* RequiredEdges;
+		int     CrackedEdgesSize[2];
+		double* CrackedEdges;
+		int     SubDomainsSize[2];
+		double* SubDomains;
+
+		BamgGeom();
+		~BamgGeom();
+};
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgMesh.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgMesh.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgMesh.cpp	(revision 21239)
@@ -0,0 +1,53 @@
+#include "./bamgobjects.h"
+#include "../shared/shared.h"
+
+/*Constructors/Destructors*/
+BamgMesh::BamgMesh(){/*{{{*/
+
+	this->VerticesSize[0]=0,                  this->VerticesSize[1]=0;                 this->Vertices=NULL;          this->PreviousNumbering = NULL;
+	this->EdgesSize[0]=0,                     this->EdgesSize[1]=0;                    this->Edges=NULL;
+	this->TrianglesSize[0]=0,                 this->TrianglesSize[1]=0;                this->Triangles=NULL;
+	this->QuadrilateralsSize[0]=0,            this->QuadrilateralsSize[1]=0;           this->Quadrilaterals=NULL;
+
+	this->SubDomainsSize[0]=0,                this->SubDomainsSize[1]=0;               this->SubDomains=NULL;
+	this->SubDomainsFromGeomSize[0]=0,        this->SubDomainsFromGeomSize[1]=0;       this->SubDomainsFromGeom=NULL;
+	this->CrackedVerticesSize[0]=0,           this->CrackedVerticesSize[1]=0;          this->CrackedVertices=NULL;
+	this->CrackedEdgesSize[0]=0,              this->CrackedEdgesSize[1]=0;             this->CrackedEdges=NULL;
+
+	this->VerticesOnGeomVertexSize[0]=0,      this->VerticesOnGeomVertexSize[1]=0;     this->VerticesOnGeomVertex=NULL;
+	this->VerticesOnGeomEdgeSize[0]=0,        this->VerticesOnGeomEdgeSize[1]=0;       this->VerticesOnGeomEdge=NULL;
+	this->EdgesOnGeomEdgeSize[0]=0,           this->EdgesOnGeomEdgeSize[1]=0;          this->EdgesOnGeomEdge=NULL;
+
+	this->IssmEdgesSize[0]=0,                 this->IssmEdgesSize[1]=0;                this->IssmEdges=NULL;
+	this->IssmSegmentsSize[0]=0,              this->IssmSegmentsSize[1]=0;             this->IssmSegments=NULL;
+
+	this->ElementConnectivitySize[0]=0,       this->ElementConnectivitySize[1]=0;      this->ElementConnectivity=NULL;
+	this->NodalConnectivitySize[0]=0,         this->NodalConnectivitySize[1]=0;        this->NodalConnectivity=NULL;
+	this->NodalElementConnectivitySize[0]=0,  this->NodalElementConnectivitySize[1]=0; this->NodalElementConnectivity=NULL;
+}
+/*}}}*/
+BamgMesh::~BamgMesh(){/*{{{*/
+
+	xDelete<double>(this->Vertices);
+	xDelete<double>(this->PreviousNumbering);
+	xDelete<double>(this->Edges);
+	xDelete<double>(this->Triangles);
+	xDelete<double>(this->Quadrilaterals);
+
+	xDelete<double>(this->SubDomains);
+	xDelete<double>(this->SubDomainsFromGeom);
+	xDelete<double>(this->CrackedVertices);
+	xDelete<double>(this->CrackedEdges);
+
+	xDelete<double>(this->VerticesOnGeomVertex);
+	xDelete<double>(this->VerticesOnGeomEdge);
+	xDelete<double>(this->EdgesOnGeomEdge);
+
+	xDelete<double>(this->IssmEdges);
+	xDelete<double>(this->IssmSegments);
+
+	xDelete<double>(this->ElementConnectivity);
+	xDelete<double>(this->NodalConnectivity);
+	xDelete<double>(this->NodalElementConnectivity);
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgMesh.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgMesh.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgMesh.h	(revision 21239)
@@ -0,0 +1,53 @@
+/*!\file:  BamgMesh.h
+ */ 
+
+#ifndef _BAMGMESH_H_
+#define _BAMGMESH_H_
+
+class BamgMesh{
+
+	public:
+
+		int     VerticesSize[2];
+		double* Vertices;
+		double* PreviousNumbering;
+		int     EdgesSize[2];
+		double* Edges;
+		int     TrianglesSize[2];
+		double* Triangles;
+		int     QuadrilateralsSize[2];
+		double* Quadrilaterals;
+
+		int     VerticesOnGeomVertexSize[2];
+		double* VerticesOnGeomVertex;
+		int     VerticesOnGeomEdgeSize[2];
+		double* VerticesOnGeomEdge;
+		int     EdgesOnGeomEdgeSize[2];
+		double* EdgesOnGeomEdge;
+
+		int     SubDomainsSize[2];
+		double* SubDomains;
+		int     SubDomainsFromGeomSize[2];
+		double* SubDomainsFromGeom;
+		int     CrackedVerticesSize[2];
+		double* CrackedVertices;
+		int     CrackedEdgesSize[2];
+		double* CrackedEdges;
+
+		/*Output for ISSM*/
+		int     IssmEdgesSize[2];
+		double* IssmEdges;
+		int     IssmSegmentsSize[2];
+		double* IssmSegments;
+		int     ElementConnectivitySize[2];
+		double* ElementConnectivity;
+		int     NodalConnectivitySize[2];
+		double* NodalConnectivity;
+		int     NodalElementConnectivitySize[2];
+		double* NodalElementConnectivity;
+
+		BamgMesh();
+		~BamgMesh();
+};
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgOpts.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgOpts.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgOpts.cpp	(revision 21239)
@@ -0,0 +1,84 @@
+#include "./bamgobjects.h"
+#include "../shared/shared.h"
+
+/*Constructors/Destructors*/
+BamgOpts::BamgOpts(){/*{{{*/
+
+	this->anisomax=0;
+	this->cutoff=0;
+	this->coeff=0;
+	this->errg=0;
+	this->gradation=0;
+	this->Hessiantype=0;
+	this->MaxCornerAngle=0;
+	this->maxnbv=0;
+	this->maxsubdiv=0;
+	this->Metrictype=0;
+	this->nbjacobi=0;
+	this->nbsmooth=0;
+	this->omega=0;
+	this->power=0;
+	this->random=0;
+	this->verbose=0;
+
+	this->Crack=0;
+	this->geometricalmetric=0;
+	this->KeepVertices=0;
+	this->splitcorners=0;
+
+	this->hmin=0;
+	this->hmax=0;
+	this->hminVertices=NULL; this->hminVerticesSize[0]=this->hminVerticesSize[1]=0;
+	this->hmaxVertices=NULL; this->hmaxVerticesSize[0]=this->hmaxVerticesSize[1]=0;
+	this->hVertices=NULL;    this->hVerticesSize[0]=this->hVerticesSize[1]=0;
+	this->metric=NULL;       this->metricSize[0]=this->metricSize[1]=0;
+	this->field=NULL;        this->fieldSize[0]=this->fieldSize[1]=0;
+	this->err=NULL;          this->errSize[0]=this->errSize[1]=0;
+
+}
+/*}}}*/
+BamgOpts::~BamgOpts(){/*{{{*/
+
+	xDelete<double>(this->hminVertices);
+	xDelete<double>(this->hmaxVertices);
+	xDelete<double>(this->hVertices);
+	xDelete<double>(this->metric);
+	xDelete<double>(this->field);
+	xDelete<double>(this->err);
+
+}
+/*}}}*/
+
+/*Methods*/
+void BamgOpts::Check(void){/*{{{*/
+
+	int i;
+
+	if (this->anisomax<1) _error_("'anisomax' option should be >=1");
+	if (this->coeff==0) _error_("'coeff' should be positive");
+	if (this->errg<0) _error_("'errg' option should be >0");
+	if (this->gradation<1) _error_("'gradation' option should be >=1");
+	if (this->Hessiantype!=0  && this->Hessiantype!=1) _error_("'Hessiantype' supported options are 0 and 1");
+	if (this->maxnbv<3) _error_("'maxnbv' option should be >3");
+	if (this->maxsubdiv<=1) _error_("'maxsubdiv' should be >1");
+	if (this->Metrictype!=0   && this->Metrictype!=1 && this->Metrictype!=2) _error_("'Metrictype' supported options are 0, 1 and 2");
+	if (this->nbjacobi<=0) _error_("'nbjacobi' option should be >0");
+	if (this->nbsmooth<=0) _error_("'nbsmooth' option should be >0");
+
+	if (this->Crack!=0  && this->Crack!=1) _error_("'Crack' supported options are 0 and 1");
+	if (this->KeepVertices!=0 && this->KeepVertices!=1) _error_("'KeepVertices' supported options are 0 and 1");
+	if (this->geometricalmetric!=0  && this->geometricalmetric!=1) _error_("'geometricalmetric' supported options are 0 and 1");
+
+	if (this->hmin<=0) _error_("'hmin' option should be >0");
+	if (this->hmax<=0 || this->hmax<this->hmin) _error_("'hmax' option should be between 0 and hmin=" << this->hmin);
+	if (this->hminVertices && this->hminVerticesSize[1]!=1) _error_("'hminVertices' should be a column");
+	if (this->hmaxVertices && this->hmaxVerticesSize[1]!=1) _error_("'hmaxVertices' should be a column");
+	if (this->hVertices && this->hVerticesSize[1]!=1) _error_("'hVertices' should be a column");
+	if (this->metric && (this->metricSize[1]!=1 && this->metricSize[1]!=3)) _error_("'metric' should have either 1 (iso) or 3 (aniso) columns.");
+	if (this->field){
+		if (this->errSize[0]!=1 || this->errSize[1]!=this->fieldSize[1]) _error_("'err' should be of size " << 1 << " x " << this->fieldSize[1]);
+		for (i=0;i<this->fieldSize[1];i++) {if (this->err[i]<=0) _error_("'err' option should be >0");};
+	}
+
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgOpts.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgOpts.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgOpts.h	(revision 21239)
@@ -0,0 +1,58 @@
+/*!\file:  BamgOpts.h
+ * \brief place holder for optimization function arguments
+ */ 
+
+#ifndef _BAMGOPTS_H_
+#define _BAMGOPTS_H_
+
+class BamgOpts{
+
+	public:
+
+		/*Parameters*/
+		double  anisomax;
+		double  cutoff;
+		double  coeff;
+		double  errg;
+		double  gradation;
+		int     Hessiantype;
+		double  MaxCornerAngle;
+		int     maxnbv;
+		double  maxsubdiv;
+		int     Metrictype;
+		int     nbjacobi;
+		int     nbsmooth;
+		double  omega;
+		double  power;
+		bool    random;
+		int     verbose;
+
+		/*Flags*/
+		int     Crack;
+		int     geometricalmetric;
+		int     KeepVertices;
+		int     splitcorners;
+
+		/*Metric related*/
+		double  hmin;
+		double  hmax;
+		int     hminVerticesSize[2];
+		double* hminVertices;
+		int     hmaxVerticesSize[2];
+		double* hmaxVertices;
+		int     hVerticesSize[2];
+		double* hVertices;
+		int     metricSize[2];
+		double* metric;
+		int     fieldSize[2];
+		double* field;
+		int     errSize[2];
+		double* err;
+
+		BamgOpts();
+		~BamgOpts();
+
+		void Check(void);
+
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgQuadtree.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgQuadtree.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgQuadtree.cpp	(revision 21239)
@@ -0,0 +1,481 @@
+#include <limits.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "./bamgobjects.h"
+#include "../datastructures/datastructures.h"
+
+namespace bamg {
+
+	/*MACROS {{{*/
+	/* 
+	 * 
+	 *    J    j
+	 *    ^    ^
+	 *    |    | +--------+--------+
+	 *    |    | |        |        |
+	 * 1X |    | |   2    |   3    |
+	 *    |    | |        |        |
+	 *    |    | +--------+--------+
+	 *    |    | |        |        |
+	 * 0X |    | |   0    |   1    |
+	 *    |    | |        |        |
+	 *    |    | +--------+--------+
+	 *    |    +-----------------------> i
+	 *    |         
+	 *    |----------------------------> I
+	 *              X0        X1  
+	 *
+	 * box 0 -> I=0 J=0 IJ=00  = 0
+	 * box 1 -> I=1 J=0 IJ=01  = 1
+	 * box 2 -> I=0 J=1 IJ=10  = 2
+	 * box 3 -> I=1 J=1 IJ=11  = 3
+	 */
+#define INTER_SEG(a,b,x,y) (((y) > (a)) && ((x) <(b)))
+#define ABS(i) ((i)<0 ?-(i) :(i))
+#define MAX1(i,j) ((i)>(j) ?(i) :(j))
+#define NORM(i1,j1,i2,j2) MAX1(ABS((i1)-(j1)),ABS((i2)-(j2)))
+
+	//IJ(i,j,l) returns the box number of i and j with respect to l
+	//if !j&l and !i&l -> 0 (box zero: lower left )
+	//if !j&l and  i&l -> 1 (box one:  lower right)
+	//if  j&l and !i&l -> 2 (box two:  upper left )
+	//if  j&l and  i&l -> 3 (box three:upper right)
+#define IJ(i,j,l)  ((j&l) ? ((i&l) ? 3:2 ) :((i&l) ? 1:0 ))
+
+	//I_IJ(k,l) returns l if first  bit of k is 1, else 0
+#define I_IJ(k,l)  ((k&1) ? l:0)
+	//J_IJ(k,l) returns l if second bit of k is 1, else 0
+#define J_IJ(k,l)  ((k&2) ? l:0)
+	/*}}}*/
+	/*DOCUMENTATION What is a BamgQuadtree? {{{
+	 * A Quadtree is a very simple way to group vertices according
+	 * to their locations. A square that holds all the points of the mesh
+	 * (or the geometry) is divided into 4 boxes. As soon as one box
+	 * hold more than 4 vertices, it is divided into 4 new boxes, etc...
+	 * There cannot be more than MAXDEEP (=30) subdivision.
+	 * This process is like a Dichotomy in dimension 2
+	 *
+	 *  + - -  -    - -    -    - - + -   - + - + - + - -     - - +
+	 *  |                           |       |   | X |             |
+	 *                                      + - + - +
+	 *  |                           |       |   |   |             |
+	 *                              + -   - + - + - +             +
+	 *  |                           |       |       |             |
+	 *                         
+	 *  |                           |       |       |             |
+	 *  + - -  -    - -    -    - - + -   - + -   - + - -     - - +
+	 *  |                           |               |             |
+	 *                         
+	 *  |                           |               |             |
+	 *                         
+	 *  |                           |               |             |
+	 *  |                           |               |             |
+	 *  + - -  -    - -    -    - - + -   -   -   - + - -     - - +
+	 *  |                           |                             |
+	 *                         
+	 *  |                           |                             |
+	 *                         
+	 *  |                           |                             |
+	 *                         
+	 *  |                           |                             |
+	 *  |                           |                             |
+	 *  |                           |                             |
+	 *  |                           |                             |
+	 *  |                           |                             |
+	 *  + - -  -    - -    -    - - + -   -   -   -   - -     - - +
+	 *
+	 * The coordinate system used in a quadtree are integers to avoid
+	 * round-off errors. The vertex in the lower left box has the coordinates
+	 * (0 0) 
+	 * The upper right vertex has the follwing coordinates:
+	 * 2^30 -1           2^30 -1        in decimal
+	 * 0 1 1 1 .... 1    0 1 1 1 .... 1 in binary
+	 *  \--   29  --/     \--   29  --/
+	 * Using binaries is therefore very easy to locate a vertex in a box:
+	 * we just need to look at the bits from the left to the right (See ::Add)
+	 }}}*/
+
+	/*Constructors/Destructors*/
+	BamgQuadtree::BamgQuadtree(){/*{{{*/
+
+		/*Number of boxes and vertices*/
+		NbBamgQuadtreeBox=0;
+		NbVertices=0;
+
+		/*Create container*/
+		boxcontainer=new DataSet();
+
+		/*Create Root, pointer toward the main box*/
+		root=NewBamgQuadtreeBox();
+
+		}
+	/*}}}*/
+	BamgQuadtree::BamgQuadtree(Mesh * t,long nbv){ /*{{{*/
+
+		/*Number of boxes and vertices*/
+		NbBamgQuadtreeBox=0;
+		NbVertices=0;
+
+		/*Create container*/
+		boxcontainer=new DataSet();
+
+		/*Create Root, pointer toward the main box*/
+		root=NewBamgQuadtreeBox();
+
+		/*Check Sizes*/
+		_assert_(MaxISize>MaxICoor);
+
+		/*Add all vertices of the mesh*/
+		if (nbv==-1) nbv=t->nbv;
+		for (int i=0;i<nbv;i++) Add(t->vertices[i]);
+
+	}
+	/*}}}*/
+	BamgQuadtree::~BamgQuadtree() {/*{{{*/
+		delete boxcontainer;
+		root=NULL;
+	}
+	/*}}}*/
+
+	/*Methods*/
+	void  BamgQuadtree::Add(BamgVertex &w){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, BamgQuadtree.cpp/Add)*/
+		BamgQuadtreeBox** pb=NULL;
+		BamgQuadtreeBox*  b=NULL;
+
+		/*Get integer coodinate of current point w*/
+		long i=w.i.x, j=w.i.y;
+
+		/*Initialize level*/
+		long level=MaxISize;
+
+		/*Get inital box (the largest)*/
+		pb = &root;
+
+		/*Find the smallest box where w is located*/
+		while((b=*pb) && (b->nbitems<0)){ 
+
+			//shift b->nbitems by -1
+			b->nbitems--;
+
+			//shifted righ by one bit: level=00000010 -> 00000001
+			level >>= 1;
+
+			//Get next subbox according to the bit value (level)
+			pb = &b->b[IJ(i,j,level)];
+		}
+
+		/*OK, we have found b, a Subbox holding vertices (might be full)
+		  check that the vertex is not already in the box*/
+		if (b){      
+			if (b->nbitems > 3 &&  b->v[3] == &w) return;
+			if (b->nbitems > 2 &&  b->v[2] == &w) return;
+			if (b->nbitems > 1 &&  b->v[1] == &w) return;
+			if (b->nbitems > 0 &&  b->v[0] == &w) return;
+		}
+
+		/*check that l is not 0 (this should not happen as MaxDepth = 30)*/
+		_assert_(level>0);
+
+		/*Now, try to add the vertex, if the subbox is full (nbitems=4), we have to divide it
+		  in 4 new subboxes*/
+		while ((b= *pb) && (b->nbitems == 4)){ // the BamgQuadtreeBox is full
+
+			/*Copy the 4 vertices in the current BamgQuadtreebox*/
+			BamgVertex* v4[4];
+			v4[0]= b->v[0];
+			v4[1]= b->v[1];
+			v4[2]= b->v[2];
+			v4[3]= b->v[3];
+
+			/*set nbitems as negative 
+			 * (box full -> holds 4 pointers toward subboxes and not 4 vertices)*/
+			b->nbitems = -b->nbitems;
+
+			/*Initialize the 4 pointers toward the 4 subboxes*/
+			b->b[0]=b->b[1]=b->b[2]=b->b[3]=NULL;
+
+			/*level = 0010000 -> 0001000*/
+			level >>= 1;
+
+			/*Put the four vertices in the new boxes*/
+			for (int k=0;k<4;k++){
+
+				int          ij;
+				/*bb is the new "sub"box of b where v4[k] is located*/
+				BamgQuadtreeBox *bb = b->b[ij=IJ(v4[k]->i.x,v4[k]->i.y,level)];
+
+				// alloc the BamgQuadtreeBox
+				if (!bb) bb=b->b[ij]=NewBamgQuadtreeBox(); 
+
+				/*Copy the current vertex*/
+				bb->v[bb->nbitems++] = v4[k];
+			}
+
+			/*Get the subbox where w (i,j) is located*/
+			pb = &b->b[IJ(i,j,level)];
+		}
+
+		/*alloc the BamgQuadtreeBox if necessary*/
+		if (!(b=*pb)) b=*pb= NewBamgQuadtreeBox();
+
+		/*Add w*/
+		b->v[b->nbitems++]=&w;
+
+		//Increase NbVertices by one (we have one new vertex)
+		NbVertices++;
+	}
+	/*}}}*/
+	BamgVertex*  BamgQuadtree::NearestVertex(Icoor1 i,Icoor1 j) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, BamgQuadtree.cpp/NearestVertex)*/
+
+		/*Intermediaries*/
+		BamgQuadtreeBox *pb[MaxDepth];
+		int          pi[MaxDepth];
+		Icoor1       ii[MaxDepth];
+		Icoor1       jj[MaxDepth];
+		int          level;
+		long         n0;
+		BamgQuadtreeBox *b;
+		long         h0;
+		long         h = MaxISize;
+		long         hb= MaxISize;
+		Icoor1       i0=0,j0=0;
+
+		/*initial output as NULL (no vertex found)*/
+		BamgVertex*  nearest_v=NULL;
+
+		/*Project w coordinates (i,j) onto [0,MaxISize-1] x [0,MaxISize-1] -> (iplus,jplus)*/
+		Icoor1 iplus( i<MaxISize ? (i<0?0:i) : MaxISize-1);
+		Icoor1 jplus( j<MaxISize ? (j<0?0:j) : MaxISize-1);
+
+		/*Get initial Quadtree box (largest)*/
+		b = root;
+
+		/*if the tree is empty, return NULL pointer*/
+		if (!root->nbitems) return nearest_v; 
+
+		/*else, find the smallest non-empty BamgQuadtreeBox containing  the point (i,j)*/
+		while((n0=b->nbitems)<0){
+
+			Icoor1       hb2 = hb >> 1;             //size of the current box
+			int          k   = IJ(iplus,jplus,hb2); //box number (0,1,2 or 3)
+			BamgQuadtreeBox *b0  = b->b[k];             //pointer toward current box
+
+			/* break if NULL box or empty (Keep previous box b)*/
+			if (( b0 == NULL) || (b0->nbitems == 0)) break;
+
+			/*Get next Quadtree box*/
+			b=b0;	
+			i0 += I_IJ(k,hb2); // i orign of BamgQuadtreeBox (macro)
+			j0 += J_IJ(k,hb2); // j orign of BamgQuadtreeBox 
+			hb = hb2;          // size of the box (in Int)
+		}
+
+		/*The box b, is the smallest box containing the point (i,j) and
+		 * has the following properties:
+		 * - n0: number of items (>0 if vertices, else boxes)
+		 * - hb: box size (int)
+		 * - i0: x coordinate of the lower left corner
+		 * - j0: y coordinate of the lower left corner*/
+
+		/* if the current subbox is holding vertices, we are almost done*/
+		if (n0>0){  
+			//loop over the vertices of the box and find the closest vertex
+			for(int k=0;k<n0;k++){
+
+				/*get integer coordinates of current vertex*/
+				I2 i2=b->v[k]->i;
+
+				/*Compute norm with w*/
+				h0=NORM(iplus,i2.x,jplus,i2.y);
+
+				/*is it smaller than previous value*/
+				if (h0<h){
+					h = h0;
+					nearest_v = b->v[k];
+				}
+			}
+			/*return closest vertex*/
+			return nearest_v;
+		}
+
+		/* general case: the current box is empty, we have to go backwards
+			and find the closest not-empty box and find the closest vertex*/
+
+		/*Initialize search variables*/
+		pb[0]=b;                             //pointer toward the box b
+		pi[0]=b->nbitems>0?(int)b->nbitems:4;//number of boxes in b
+		ii[0]=i0;                            //i coordinate of the box lowest left corner
+		jj[0]=j0;                            //j coordinate of the box lowest left corner
+
+		/*initialize h: smallest box size, containing a vertex close to w*/
+		h=hb;
+
+		/*Main loop*/
+		level=0;
+		do {
+
+			/*get current box*/
+			b= pb[level];
+
+			/*Loop over the items in current box (if not empty!)*/
+			while (pi[level]){
+
+				/*We are looping now over the items of b. k is the current index (in [0 3])*/
+				pi[level]--;
+				int k=pi[level];
+
+				/*if the current subbox is holding vertices (b->nbitems<0 is subboxes)*/
+				if (b->nbitems>0){
+					I2 i2=b->v[k]->i;
+					h0 = NORM(iplus,i2.x,jplus,i2.y);
+					if (h0<h){
+						h=h0;
+						nearest_v=b->v[k];
+					}
+				}
+				/*else: current box b is pointing toward 4 boxes
+				 * test sub-box k and go deeper into the tree if it is non empty
+				 * and contains the point w modulo a size h that is either the size of the smallest
+				 * non empty box containing w, or the closest point to w (so far) */
+				else{
+					BamgQuadtreeBox* b0=b;
+
+					/*if the next box exists:*/
+					if((b=b->b[k])){
+
+						/*Get size (hb) and coordinates of the current sub-box lowest left corner*/
+						hb>>=1;
+						Icoor1 iii = ii[level]+I_IJ(k,hb);
+						Icoor1 jjj = jj[level]+J_IJ(k,hb);
+
+						/*if the current point (iplus,jplus) is in b (modulo h), this box is good:
+						 * it is holding vertices that are close to w */
+						if (INTER_SEG(iii,iii+hb,iplus-h,iplus+h) && INTER_SEG(jjj,jjj+hb,jplus-h,jplus+h)){
+							level++;
+							pb[level]= b;
+							pi[level]= b->nbitems>0 ?(int)  b->nbitems : 4  ;
+							ii[level]= iii;
+							jj[level]= jjj;
+						}
+
+						//else go backwards
+						else{
+							//shifted righ by one bit: hb=001000000 -> 01000000
+							b=b0;
+							hb<<=1;
+						}
+					}
+					else{
+						/*Current box is NULL, go to next subbox of b (k=k-1)*/
+						b=b0;
+					}
+				}
+			}
+
+			/*We have found a vertex, now, let's try the other boxes of the previous level
+			 * in case there is a vertex closest to w that has not yet been tested*/
+			hb <<= 1;
+		} while (level--);
+
+		/*return nearest_v, nearest vertex*/
+		return nearest_v;
+
+	}
+	/*}}}*/
+	BamgQuadtree::BamgQuadtreeBox* BamgQuadtree::NewBamgQuadtreeBox(void){/*{{{*/
+
+		/*Output*/
+		BamgQuadtreeBox* newbox=NULL;
+
+		/*Create and initialize a new box*/
+		newbox=new BamgQuadtreeBox;
+		newbox->nbitems=0;
+		newbox->b[0]=NULL;
+		newbox->b[1]=NULL;
+		newbox->b[2]=NULL;
+		newbox->b[3]=NULL;
+
+		/*Add root to the container*/
+		boxcontainer->AddObject(newbox);
+
+		/*Increase counter*/
+		NbBamgQuadtreeBox++;
+
+		/*currentbox now points toward next quadtree box*/
+		return newbox;
+	}/*}}}*/
+	BamgVertex*   BamgQuadtree::ToClose(BamgVertex & v,double seuil,Icoor1 hx,Icoor1 hy){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, BamgQuadtree.cpp/ToClose)*/
+
+		const Icoor1 i=v.i.x;
+		const Icoor1 j=v.i.y;
+		const R2 X(v.r);
+		const Metric  Mx(v.m);
+
+		BamgQuadtreeBox * pb[ MaxDepth ];
+		int  pi[ MaxDepth  ];
+		Icoor1 ii[  MaxDepth ], jj [ MaxDepth];
+		int l=0; // level
+		BamgQuadtreeBox * b;
+		Icoor1 hb =  MaxISize;
+		Icoor1 i0=0,j0=0;
+
+		//  BamgVertex *vn=0;
+
+		if (!root->nbitems)
+		 return 0; // empty tree 
+
+		// general case -----
+		pb[0]=root;
+		pi[0]=root->nbitems>0 ?(int)  root->nbitems : 4  ;
+		ii[0]=i0;
+		jj[0]=j0;
+		do {    
+			b= pb[l];
+			while (pi[l]--){ 	      
+				int k = pi[l];
+
+				if (b->nbitems>0){ // BamgVertex BamgQuadtreeBox none empty
+					I2 i2 =  b->v[k]->i;
+					if ( ABS(i-i2.x) <hx && ABS(j-i2.y) <hy )
+					  {
+						R2 XY(X,b->v[k]->r);
+						if(LengthInterpole(Mx(XY), b->v[k]->m(XY)) < seuil){
+							return b->v[k]; 
+						}
+					  }
+				}
+				else{ // Pointer BamgQuadtreeBox 
+					BamgQuadtreeBox *b0=b;
+					if ((b=b->b[k])){
+						hb >>=1 ; // div by 2
+						long iii = ii[l]+I_IJ(k,hb);
+						long jjj = jj[l]+J_IJ(k,hb);
+
+						if  (INTER_SEG(iii,iii+hb,i-hx,i+hx) && INTER_SEG(jjj,jjj+hb,j-hy,j+hy)){
+							pb[++l]=  b;
+							pi[l]= b->nbitems>0 ?(int)  b->nbitems : 4  ;
+							ii[l]= iii;
+							jj[l]= jjj;
+
+						}
+						else{
+							b=b0;
+							hb <<=1 ;
+						}
+					}
+					else{
+						b=b0;
+					}
+				}
+			}
+			hb <<= 1; // mul by 2 
+		} while (l--);
+
+		return 0;
+	}
+	/*}}}*/
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgQuadtree.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgQuadtree.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgQuadtree.h	(revision 21239)
@@ -0,0 +1,60 @@
+/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, BamgQuadtree.h)*/
+#ifndef _BAMGQUADTREE_H
+#define _BAMGQUADTREE_H
+
+#include "./include.h"
+#include "../datastructures/datastructures.h"
+
+namespace bamg {
+
+	const int  MaxDepth = 30;
+	const long MaxISize = ( 1L << MaxDepth);  // = 2^30 : 010000000000..000 (bitwise operation)
+
+	class BamgVertex;
+
+	class BamgQuadtree{
+
+		private:
+
+			/*A quadtree box contains a maximum of 4 vertices. 4 other quadtree boxes are
+			 * created if a fifth vertex is added to the same box. A Quadtree box is therefore
+			 * composed of EITHER:
+			 * - up to 4 vertices
+			 * - 4 "sub" quadtree boxes*/
+			class BamgQuadtreeBox: public Object{ 
+				public:
+					int nbitems; // number of current vertices in the box
+					union{
+						BamgQuadtreeBox* b[4];
+						BamgVertex*  v[4];
+					};
+					/*Object functions*/
+					void    Echo()       {_error_("not implemented yet"); };
+					void    DeepEcho()   {_error_("not implemented yet"); };
+					int     Id()         {_error_("not implemented yet"); };
+					int     ObjectEnum() {_error_("not implemented yet"); };
+					Object *copy()       {_error_("not implemented yet"); };
+					void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
+			};
+
+			/*BamgQuadtree private Fields*/
+			DataSet* boxcontainer;
+
+		public:
+
+			/*BamgQuadtree public Fields*/
+			BamgQuadtreeBox* root;
+			long         NbBamgQuadtreeBox;
+			long         NbVertices;
+
+			BamgQuadtree();
+			BamgQuadtree(Mesh *t,long nbv=-1);
+			~BamgQuadtree();
+
+			BamgVertex      *NearestVertex(Icoor1 i,Icoor1 j);
+			BamgQuadtreeBox *NewBamgQuadtreeBox(void);
+			BamgVertex      *ToClose(BamgVertex &,double ,Icoor1,Icoor1);
+			void             Add(BamgVertex &w);
+	};
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgVertex.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgVertex.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgVertex.cpp	(revision 21239)
@@ -0,0 +1,257 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "./bamgobjects.h"
+#include "../shared/shared.h"
+#include "./det.h"
+
+namespace bamg {
+
+	/*Constructor/Destructor*/
+	BamgVertex::BamgVertex(){ /*{{{*/
+		this->PreviousNumber = 0;
+	}/*}}}*/
+
+	/*Methods*/
+	void BamgVertex::Echo(void){/*{{{*/
+
+		_printf_("Vertex:\n");
+		_printf_("  integer   coordinates i.x: " << i.x << ", i.y: " << i.y << "\n");
+		_printf_("  Euclidean coordinates r.x: " << r.x << ", r.y: " << r.y << "\n");
+		_printf_("  ReferenceNumber = " << ReferenceNumber << "\n");
+		_printf_("  PreviousNumber  = " << PreviousNumber << "\n");
+		m.Echo();
+
+		return;
+	}
+	/*}}}*/
+	int  BamgVertex::GetReferenceNumber() const { /*{{{*/
+		return ReferenceNumber;
+	}
+	/*}}}*/
+	void BamgVertex::MetricFromHessian(const double Hxx,const double Hyx, const double Hyy,const double smin,const double smax,const double s,double err,BamgOpts* bamgopts){/*{{{*/
+		/*Compute Metric from Hessian*/
+
+		/*get options*/
+		double power=(bamgopts->power);
+		double anisomax=(bamgopts->anisomax);
+		double CutOff=bamgopts->cutoff;
+		double hmin=(bamgopts->hmin);
+		double hmax=(bamgopts->hmax);
+		double coef=bamgopts->coeff;
+		int    Metrictype=(bamgopts->Metrictype);
+
+		/*Intermediary*/
+		double ci;
+
+		/*compute multiplicative coefficient depending on Metric Type (2/9 because it is 2d)*/
+
+		//Absolute Error
+		/*
+		 *            2         1       
+		 *Metric M = ---  ------------   Abs(Hessian)
+		 *            9   err * coeff^2  
+		 */
+		if (Metrictype==0){
+			ci= 2.0/9.0 * 1/(err*coef*coef);
+		}
+
+		//Relative Error
+		/*
+		 *            2         1            Abs(Hessian)
+		 *Metric M = ---  ------------  ----------------------
+		 *            9   err * coeff^2  max( |s| , cutoff*max(|s|) )
+		 *
+		 */
+		else if (Metrictype==1){
+			ci= 2.0/9.0 * 1/(err*coef*coef) * 1/Max( Abs(s), CutOff*(Max(Abs(smin),Abs(smax))));
+		}
+
+		//Rescaled absolute error
+		/*
+		 *            2         1            Abs(Hessian)
+		 *Metric M = ---  ------------  ---------------------- 
+		 *            9   err * coeff^2       (smax-smin)
+		 */
+		else if (Metrictype==2){
+			ci= 2.0/9.0 * 1/(err*coef*coef) * 1/(smax-smin);
+		}
+		else{
+			_error_("Metrictype " << Metrictype << " not supported yet (use 0,1 or 2(default))");
+		}
+
+		//initialize metric Miv with ci*H
+		Metric Miv(Hxx*ci,Hyx*ci,Hyy*ci);
+
+		//Get eigen values and vectors of Miv
+		EigenMetric Vp(Miv);
+
+		//move eigen valuse to their absolute values
+		Vp.Abs();
+
+		//Apply a power if requested by user
+		if(power!=1.0) Vp.pow(power);
+
+		//modify eigen values according to hmin and hmax
+		Vp.Maxh(hmax);
+		Vp.Minh(hmin);
+
+		//Bound anisotropy by 1/(anisomax)^2
+		Vp.BoundAniso2(1/(anisomax*anisomax));
+
+		//rebuild Metric from Vp
+		Metric MVp(Vp);
+
+		//Apply Metric to vertex
+		m.IntersectWith(MVp);
+
+	}
+	/*}}}*/
+	long BamgVertex::Optim(int i,int koption){ /*{{{*/
+		long ret=0;
+		if ( t && (IndexInTriangle >= 0 ) && (IndexInTriangle <3) ){
+			ret = t->Optim(IndexInTriangle,koption);
+			if(!i){
+				t =0; // for no future optime 
+				IndexInTriangle= 0;
+			}
+		}
+		return ret;
+	}
+	/*}}}*/
+	double  BamgVertex::Smoothing(Mesh &Th,const Mesh &BTh,Triangle* &tstart ,double omega){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Smoothing)*/
+
+		BamgVertex* s=this;
+		BamgVertex &vP = *s,vPsave=vP;
+
+		Triangle* tbegin= t , *tria = t , *ttc;
+
+		int k=0,kk=0,j = EdgesVertexTriangle[IndexInTriangle][0],jc;
+		R2 P(s->r),PNew(0,0);
+		do {
+			k++; 
+
+			if (!tria->Hidden(j)){
+				BamgVertex &vQ = (*tria)[VerticesOfTriangularEdge[j][0]]; 
+
+				R2 Q = vQ,QP(P-Q);
+				double lQP = LengthInterpole(vP,vQ,QP);
+				PNew += Q+QP/Max(lQP,1e-20);
+				kk ++;
+			}
+			ttc =  tria->TriangleAdj(j);
+			jc = NextEdge[tria->NuEdgeTriangleAdj(j)];
+			tria = ttc;
+			j = NextEdge[jc];
+			if (k>=2000){
+				_error_("k>=2000 (Maximum number of iterations reached)");
+			}
+		} while ( tbegin != tria); 
+		if (kk<4) return 0;
+		PNew = PNew/(double)kk;
+		R2 Xmove((PNew-P)*omega);
+		PNew = P+Xmove;
+		double delta=Norme2_2(Xmove); 
+
+		Icoor2 deta[3];
+		I2 IBTh  = BTh.R2ToI2(PNew);
+
+		tstart=BTh.TriangleFindFromCoord(IBTh,deta,tstart);  
+
+		if (tstart->det <0){ // outside
+			double ba,bb;
+			AdjacentTriangle edge= CloseBoundaryEdge(IBTh,tstart,ba,bb) ;
+			tstart = edge;
+			vP.m= Metric(ba,*edge.EdgeVertex(0),bb,*edge.EdgeVertex(1));
+		}
+		else { // inside
+			double   aa[3];
+			double s = deta[0]+deta[1]+deta[2];
+			aa[0]=deta[0]/s;
+			aa[1]=deta[1]/s;
+			aa[2]=deta[2]/s;
+			vP.m = Metric(aa,(*tstart)[0],(*tstart)[1],(*tstart)[2]);
+		}
+
+		// recompute the det of the triangle
+		vP.r = PNew;
+
+		vP.i = Th.R2ToI2(PNew);
+
+		BamgVertex vPnew = vP;
+
+		int ok=1;
+		int loop=1;
+		k=0;
+		while (ok){
+			ok =0;
+			do {
+				k++; 
+				double detold = tria->det;
+				tria->det =  bamg::det( (*tria)[0],(*tria)[1]  ,(*tria)[2]);
+				if (loop) {
+					BamgVertex *v0,*v1,*v2,*v3;
+					if (tria->det<0) ok =1;			       
+					else if (tria->Quadrangle(v0,v1,v2,v3))
+					  {
+						vP = vPsave;
+						double qold =QuadQuality(*v0,*v1,*v2,*v3);
+						vP = vPnew;
+						double qnew =QuadQuality(*v0,*v1,*v2,*v3);
+						if (qnew<qold) ok = 1;
+					  }
+					else if ( (double)tria->det < detold/2 ) ok=1;
+
+				}
+				tria->SetUnMarkUnSwap(0);
+				tria->SetUnMarkUnSwap(1);
+				tria->SetUnMarkUnSwap(2);
+				ttc =  tria->TriangleAdj(j);
+				jc = NextEdge[tria->NuEdgeTriangleAdj(j)];
+				tria = ttc;
+				j = NextEdge[jc];
+				if (k>=2000){
+					_error_("k>=2000");
+				}
+			}while ( tbegin != tria); 
+
+			if (ok && loop) vP=vPsave; // no move 
+			loop=0;
+		}
+		return delta;
+	}
+	/*}}}*/
+
+	/*Intermediary*/
+	double QuadQuality(const BamgVertex & a,const BamgVertex &b,const BamgVertex &c,const BamgVertex &d) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshQuad.cpp/QuadQuality)*/
+
+		// calcul de 4 angles --
+		R2 A((R2)a),B((R2)b),C((R2)c),D((R2)d);
+		R2 AB(B-A),BC(C-B),CD(D-C),DA(A-D);
+		//  Move(A),Line(B),Line(C),Line(D),Line(A);
+		const Metric & Ma  = a;
+		const Metric & Mb  = b;
+		const Metric & Mc  = c;
+		const Metric & Md  = d;
+
+		double lAB=Norme2(AB);
+		double lBC=Norme2(BC);
+		double lCD=Norme2(CD);
+		double lDA=Norme2(DA);
+		AB /= lAB;  BC /= lBC;  CD /= lCD;  DA /= lDA;
+		// version aniso 
+		double cosDAB= Ma(DA,AB)/(Ma(DA)*Ma(AB)),sinDAB= Det(DA,AB);
+		double cosABC= Mb(AB,BC)/(Mb(AB)*Mb(BC)),sinABC= Det(AB,BC);
+		double cosBCD= Mc(BC,CD)/(Mc(BC)*Mc(CD)),sinBCD= Det(BC,CD);
+		double cosCDA= Md(CD,DA)/(Md(CD)*Md(DA)),sinCDA= Det(CD,DA);
+		double sinmin=Min(Min(sinDAB,sinABC),Min(sinBCD,sinCDA));
+		if (sinmin<=0) return sinmin;
+		return 1.0-Max(Max(Abs(cosDAB),Abs(cosABC)),Max(Abs(cosBCD),Abs(cosCDA)));
+	}
+	/*}}}*/
+
+} 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgVertex.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgVertex.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/BamgVertex.h	(revision 21239)
@@ -0,0 +1,60 @@
+#ifndef _BAMGVERTEX_H_
+#define _BAMGVERTEX_H_
+
+#include "./include.h"
+#include "./Metric.h"
+#include "./Direction.h"
+#include "./BamgOpts.h"
+
+namespace bamg {
+
+	class Triangle;
+	class Mesh;
+	class VertexOnGeom;
+	class VertexOnEdge;
+
+	class BamgVertex {
+
+		public:
+
+			/*Fields*/
+			I2        i;                 // integer coordinates
+			R2        r;                 // real coordinates
+			Metric    m;
+			long      ReferenceNumber;
+			long      PreviousNumber;
+			Direction DirOfSearch;
+			short     IndexInTriangle;              // the vertex number in triangle; varies between 0 and 2 in t
+
+			union {
+				Triangle     *t;                      // one triangle which is containing the vertex
+				long          color;
+				BamgVertex   *MeshVertexHook;         // used in geometry BamgVertex to know the Mesh Vertex associated
+				VertexOnGeom *GeomEdgeHook;    // if IndexInTriangle == 8; // set with Mesh::SetVertexFieldOn()
+				BamgVertex   *BackgroundVertexHook;   // if IndexInTriangle == 16 on Background vertex Mesh::SetVertexFieldOnBTh()
+				VertexOnEdge *BackgroundEdgeHook;     // if IndexInTriangle == 32 on Background edge
+			};
+
+			/*Operators*/
+			operator I2() const {return i;}             // Cast operator
+			operator const R2 & () const {return r;}    // Cast operator
+			operator Metric () const {return m;}        // Cast operator
+			double operator()(R2 x) const { return m(x);} // Get x in the metric m
+
+			/*methods (No constructor and no destructors...)*/
+			BamgVertex();
+			double Smoothing(Mesh & ,const Mesh & ,Triangle  * & ,double =1);
+			void   MetricFromHessian(const double Hxx,const double Hyx, const double Hyy, const double smin,const double smax,const double s,const double err,BamgOpts* bamgopts);
+			void   Echo();
+			int    GetReferenceNumber() const;
+			I2     GetIntegerCoordinates() const{return this->i;};// avoid operator I2()
+			long   Optim(int =1,int =0); 
+
+			//inline functions
+			inline void Set(const BamgVertex &rec,const Mesh & ,Mesh & ){*this=rec;}
+	};
+
+	//Intermediary
+	double QuadQuality(const BamgVertex &,const BamgVertex &,const BamgVertex &,const BamgVertex &);
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/CrackedEdge.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/CrackedEdge.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/CrackedEdge.cpp	(revision 21239)
@@ -0,0 +1,32 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "CrackedEdge.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+	CrackedEdge::CrackedEdge() {/*{{{*/
+		a=NULL;
+		b=NULL;
+		E=NULL;
+		e1=NULL;
+		e2=NULL;
+		indexa[0]=-1;
+		indexa[1]=-1;
+		indexa[2]=-1;
+		indexb[0]=-1;
+		indexb[1]=-1;
+		indexb[2]=-1;
+		length=0;
+		normal.x=0;
+		normal.y=0;
+
+	}
+	/*}}}*/
+
+	/*Methods*/
+
+} 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/CrackedEdge.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/CrackedEdge.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/CrackedEdge.h	(revision 21239)
@@ -0,0 +1,30 @@
+#ifndef _CRACKEDEDGE_H_
+#define _CRACKEDEDGE_H_
+
+#include "./typedefs.h"
+
+namespace bamg {
+
+	class Triangle;
+	class GeomEdge;
+	class Edge;
+
+	class CrackedEdge {
+
+		public:
+			Triangle* a;
+			Triangle* b; 
+			GeomEdge* E;
+			Edge* e1;
+			Edge* e2;
+			double length;
+			R2     normal;
+			long   indexa[3];
+			long   indexb[3];
+
+			//Constructors
+			CrackedEdge();
+	};
+
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Curve.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Curve.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Curve.cpp	(revision 21239)
@@ -0,0 +1,28 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "Curve.h"
+#include "Geometry.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+	Curve::Curve(){/*{{{*/
+		FirstEdge=NULL;
+		LastEdge=NULL;
+		FirstVertexIndex=0;
+		LastVertexIndex=0;
+	} 
+	/*}}}*/
+
+	/*Methods*/
+	void Curve::Set(const Curve & rec,const Geometry & Gh ,Geometry & GhNew){/*{{{*/
+		*this = rec;
+		FirstEdge = GhNew.edges + Gh.GetId(FirstEdge);    
+		LastEdge = GhNew.edges + Gh.GetId(LastEdge); 
+	}
+	/*}}}*/
+
+} 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Curve.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Curve.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Curve.h	(revision 21239)
@@ -0,0 +1,25 @@
+#ifndef _CURVE_H_
+#define _CURVE_H_
+
+#include "../shared/shared.h"
+
+namespace bamg {
+
+	class GeomEdge;
+	class Curve;
+	class Geometry;
+
+	class Curve {
+		public:
+			GeomEdge *FirstEdge; //First edge of the curve
+			GeomEdge *LastEdge;  //Last edge of the curve
+			int FirstVertexIndex;       //Last vertex index in the last edge
+			int LastVertexIndex;        //First Vertex index in the first edge
+
+			//Methods
+			Curve();
+			void Set(const Curve & rec,const Geometry & Th ,Geometry & ThNew);
+	};
+
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Direction.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Direction.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Direction.cpp	(revision 21239)
@@ -0,0 +1,33 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "Direction.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+	Direction::Direction():/*{{{*/
+		dir(MaxICoor){
+
+	}/*}}}*/
+	Direction::Direction(Icoor1 i,Icoor1 j) {/*{{{*/
+		Icoor2 n2 = 2*(Abs(i)+Abs(j));  
+		Icoor2 r  = MaxICoor* (Icoor2) i;
+		Icoor1 r1 = (Icoor1) (2*(r/ n2)); // odd number 
+		dir = (j>0) ? r1 : r1+1;          // odd-> j>0 even-> j<0
+	}/*}}}*/
+
+	/*Methods*/
+	int Direction::direction(Icoor1 i,Icoor1 j) {/*{{{*/
+		int r =1; 
+		if (dir!= MaxICoor) {
+			Icoor2 x(dir/2),y1(MaxICoor/2-Abs(x)),y((dir%2)?-y1:y1);
+			r = (x*i + y*j) >=0;
+		}
+		return r;
+	}
+	/*}}}*/
+
+} 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Direction.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Direction.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Direction.h	(revision 21239)
@@ -0,0 +1,20 @@
+#ifndef _DIRECTION_H_
+#define _DIRECTION_H_
+
+#include "./include.h"
+#include "../shared/Bamg/shared.h"
+
+namespace bamg {
+
+	class Direction {
+		private:
+			Icoor1 dir;
+
+		public:
+			//Methods
+			Direction();
+			Direction(Icoor1 i,Icoor1 j);
+			int direction(Icoor1 i,Icoor1 j);
+	};
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/DoubleAndInt.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/DoubleAndInt.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/DoubleAndInt.h	(revision 21239)
@@ -0,0 +1,19 @@
+#ifndef _DOUBLEANDINT_H_
+#define _DOUBLEANDINT_H_
+
+#include "./include.h"
+
+namespace bamg {
+
+	class DoubleAndInt {
+		//class used by Mesh::MakeQuadrangles
+
+		public:
+			double q;
+			long i3j;
+
+			//Operators
+			int operator<(DoubleAndInt a){return q > a.q;}
+	};
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Edge.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Edge.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Edge.cpp	(revision 21239)
@@ -0,0 +1,51 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "Edge.h"
+#include "Mesh.h"
+#include "Geometry.h"
+#include "../shared/shared.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+
+	/*Methods*/
+	void Edge::Set(const Mesh & Th ,long i,Mesh & ThNew){ /*{{{*/
+		*this = Th.edges[i];
+		v[0] = ThNew.vertices + Th.GetId(v[0]);    
+		v[1] = ThNew.vertices + Th.GetId(v[1]);
+		if (GeomEdgeHook) 
+		 GeomEdgeHook =  ThNew.Gh.edges+Th.Gh.GetId(GeomEdgeHook);
+		if (adj[0]) adj[0] =   ThNew.edges +   Th.GetId(adj[0]);
+		if (adj[1]) adj[1] =   ThNew.edges +   Th.GetId(adj[1]);
+	}
+	/*}}}*/
+	void Edge::Echo(void){ /*{{{*/
+		_printf_("Edge:\n");
+		_printf_("   pointers towards two vertices: " << v[0] << " " << v[1] << "\n");
+		_printf_("   ReferenceNumber = " << ReferenceNumber << "\n");
+		_printf_("   GeomEdgeHook = " << GeomEdgeHook << "\n");
+		_printf_("   two adjacent edges on the same curve: " << adj[0] << " " << adj[1] << "\n");
+	}
+	/*}}}*/
+	void Edge::Renumbering(BamgVertex *vb,BamgVertex *ve, long *renu){/*{{{*/
+
+		if (v[0] >=vb && v[0] <ve) v[0] = vb + renu[v[0]-vb];
+		if (v[1] >=vb && v[1] <ve) v[1] = vb + renu[v[1]-vb];
+
+	}
+	/*}}}*/
+	int Edge::Intersection(const  Edge & e){ /*{{{*/
+
+		/*some shecks*/
+		if (!(adj[0]==&e || adj[1]==&e)){ _error_("Intersection bug"); }
+		_assert_(adj[0]==&e || adj[1]==&e);
+
+		return adj[0]==&e?0:1;
+	}
+	/*}}}*/
+
+} 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Edge.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Edge.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Edge.h	(revision 21239)
@@ -0,0 +1,34 @@
+#ifndef _EDGE_H_
+#define _EDGE_H_
+
+#include "./BamgVertex.h"
+#include "../shared/shared.h"
+#include "./GeomEdge.h"
+
+namespace bamg {
+
+	class Mesh;
+
+	class Edge {
+
+		public:
+			BamgVertex      *v[2];
+			long             ReferenceNumber;
+			GeomEdge *GeomEdgeHook;
+			Edge            *adj[2];       // the 2 adj edges if on the same curve
+
+			//Operators
+			BamgVertex       &operator[](int i){return *v[i];   };
+			BamgVertex       *operator()(int     i){return v[i];};
+			R2                operator()(double  t) const;// return the point
+			const BamgVertex &operator[](int i) const{return *v[i];};
+
+			//Methods
+			void Renumbering(BamgVertex *vb,BamgVertex *ve, long *renu);
+			int  Intersection(const  Edge & e);
+			void Set(const Mesh &,long,Mesh &);
+			void Echo(void);
+
+	};
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/EigenMetric.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/EigenMetric.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/EigenMetric.cpp	(revision 21239)
@@ -0,0 +1,142 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "Metric.h"
+#include "../shared/shared.h"
+
+namespace bamg {
+
+	/*Constructor*/
+	EigenMetric::EigenMetric(const Metric& M){/*{{{*/
+		/*From a metric (a11,a21,a22), get eigen values lambda1 and lambda2 and one eigen vector v*/
+
+		/*Intermediaries*/
+		double a11=M.a11,a21=M.a21,a22=M.a22;
+		double normM;
+		double delta,b;
+
+		/*To get the eigen values, we must solve the following equation:
+		 *     | a11 - lambda    a21        |
+		 * det |                            | = 0
+		 *     | a21             a22-lambda |
+		 *
+		 * We have to solve the following polynom:
+		 *  lamda^2 + ( -a11 -a22)*lambda + (a11*a22-a21*a21) = 0*/
+
+		/*Compute polynom determinant*/
+		b=-a11-a22;
+		delta=b*b - 4*(a11*a22-a21*a21);
+
+		/*Compute norm of M to avoid round off errors*/
+		normM=a11*a11 + a22*a22 + a21*a21;
+
+		/*1: normM too small: eigen values = 0*/
+		if(normM<1.e-30){
+			lambda1=0;
+			lambda2=0;
+			v.x=1;
+			v.y=0;
+		}
+		/*2: delta is small -> double root*/
+		else if (delta < 1.e-5*normM){
+			lambda1=-b/2;
+			lambda2=-b/2;
+			v.x=1;
+			v.y=0;
+		}
+		/*3: general case -> two roots*/
+		else{
+			delta     = sqrt(delta);
+			lambda1   = (-b-delta)/2.0;
+			lambda2   = (-b+delta)/2.0;
+
+			/*Now, one must find the eigen vectors. For that we use the following property of the inner product
+			 *    <Ax,y> = <x,tAy>
+			 * Here, M'(M-lambda*Id) is symmetrical, which gives:
+			 *    ∀(x,y)∈R²xR² <M'x,y> = <M'y,x>
+			 * And we have the following:
+			 *    if y∈Ker(M'), ∀x∈R² <M'x,y> = <x,M'y> = 0
+			 * We have shown that
+			 *    Im(M') ⊥ Ker(M')
+			 *
+			 * To find the eigen vectors of M, we only have to find two vectors
+			 * of the image of M' and take their perpendicular as long as they are
+			 * not 0.
+			 * To do that, we take the images (1,0) and (0,1):
+			 *  x1 = (a11 - lambda)      x2 = a21
+			 *  y1 = a21                 y2 = (a22-lambda)
+			 *
+			 * We take the vector that has the larger norm and take its perpendicular.*/
+
+			double norm1 = (a11-lambda1)*(a11-lambda1) + a21*a21; 
+			double norm2 = a21*a21 + (a22-lambda1)*(a22-lambda1);
+
+			if (norm2<norm1){
+				norm1=sqrt(norm1);
+				v.x = - a21/norm1;
+				v.y = (a11-lambda1)/norm1;
+			}
+			else{
+				norm2=sqrt(norm2);
+				v.x = - (a22-lambda1)/norm2;
+				v.y = a21/norm2;
+			}
+		}
+
+	}
+	/*}}}*/
+	EigenMetric::EigenMetric(double r1,double r2,const D2& vp1): lambda1(r1),lambda2(r2),v(vp1){/*{{{*/
+
+	}/*}}}*/
+
+	/*Methods*/
+	void   EigenMetric::Abs(){/*{{{*/
+		lambda1=bamg::Abs(lambda1),lambda2=bamg::Abs(lambda2);
+	}/*}}}*/
+	double EigenMetric::Aniso2() const  { /*{{{*/
+		return lmax()/lmin();
+	}/*}}}*/
+	void EigenMetric::Echo(void){/*{{{*/
+
+		_printf_("EigenMetric:\n");
+		_printf_("   lambda1: " << lambda1 << "\n");
+		_printf_("   lambda2: " << lambda2 << "\n");
+		_printf_("   v.x: " << v.x << "\n");
+		_printf_("   v.y: " << v.y << "\n");
+
+		return;
+	}
+	/*}}}*/
+	double EigenMetric::hmin() const {/*{{{*/
+		return sqrt(1/bamg::Max3(lambda1,lambda2,1e-30));
+	}/*}}}*/
+	double EigenMetric::hmax() const {/*{{{*/
+		return sqrt(1/bamg::Max(bamg::Min(lambda1,lambda2),1e-30));
+	}/*}}}*/
+	double EigenMetric::lmax() const {/*{{{*/
+		return bamg::Max3(lambda1,lambda2,1e-30);
+	}/*}}}*/
+	double EigenMetric::lmin() const {/*{{{*/
+		return bamg::Max(bamg::Min(lambda1,lambda2),1e-30);
+	}/*}}}*/
+	void   EigenMetric::Min(double a) { /*{{{*/
+		lambda1=bamg::Min(a,lambda1); lambda2=bamg::Min(a,lambda2) ;
+	}/*}}}*/
+	void   EigenMetric::Max(double a) { /*{{{*/
+		//change eigen values
+		lambda1=bamg::Max(a,lambda1); lambda2=bamg::Max(a,lambda2) ;
+	}/*}}}*/
+	void   EigenMetric::Minh(double h) {/*{{{*/
+		Min(1.0/(h*h));
+	}/*}}}*/
+	void   EigenMetric::Maxh(double h) {/*{{{*/
+		//Call Max function
+		Max(1.0/(h*h));
+	}/*}}}*/
+	void   EigenMetric::pow(double p){/*{{{*/
+		lambda1=::pow(lambda1,p);lambda2=::pow(lambda2,p);
+	}/*}}}*/
+
+} 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/GeomEdge.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/GeomEdge.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/GeomEdge.cpp	(revision 21239)
@@ -0,0 +1,171 @@
+#include <cstdio>
+#include <string.h>
+#include <cmath>
+
+#include "../shared/shared.h"
+
+#include "GeomEdge.h"
+#include "Geometry.h"
+
+using namespace std;
+
+namespace bamg {
+
+	/*Constructor/Destructor*/
+
+	/*Methods*/
+	int    GeomEdge::Cracked() const  {/*{{{*/
+		return type &1;  
+	}/*}}}*/
+	R2 GeomEdge::F(double theta) const{/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/F)*/
+		// parametrization of the curve edge
+
+	   R2 A=v[0]->r,B=v[1]->r;
+		double ca,cb,cta,ctb;
+
+		//Check that theta is in [0 1]
+		_assert_(theta>-1e-12 && theta<1+1e-12);
+
+		if (TgA()){ 
+			if (TgB()){ //Hermite interpolation
+				cb =  theta*theta*(3-2*theta);
+				ca =  1-cb;     
+				cta = (1-theta)*(1-theta)*theta;
+				ctb = (theta-1)*theta*theta ;
+			}
+			else {
+				double t = theta;
+				cb = t*t;
+				ca = 1-cb;
+				cta= t-cb;
+				ctb=0;    
+			}
+		}
+		else{
+			if (TgB()){
+				double t = 1-theta;
+				ca = t*t;
+				cb = 1-ca;
+				ctb= -t+ca;
+				cta=0;    
+			}
+			else { // lagrange P1
+				ca =(1-theta);
+				cb = theta;
+				cta=ctb=0;
+			}
+		}
+		return A*ca + B*cb + tg[0]*cta + tg[1]*ctb;
+	  }
+	/*}}}*/
+	int    GeomEdge::Mark()    const  {/*{{{*/
+		return type &16; 
+	}/*}}}*/
+	double GeomEdge::R1tg(double theta,R2 & t) const{/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/R1tg)*/
+		// 1/R of radius of cuvature
+
+		R2 A=v[0]->r,B=v[1]->r;
+		double dca,dcb,dcta,dctb;
+		double ddca,ddcb,ddcta,ddctb;
+		double tt = theta*theta;
+
+		//check theta
+		_assert_(theta>=0 && theta<=1);
+
+		if (TgA()){ 
+			if (TgB()){
+				// Tangent A and B provided:
+				// interpolation d'hermite
+				dcb = 6*theta*(1-theta);
+				ddcb = 6*(1-2*theta);
+				dca = -dcb;
+				ddca = -ddcb;
+				dcta =  (3*theta - 4)*theta + 1;
+				ddcta=6*theta-4;
+				dctb = 3*tt - 2*theta;
+				ddctb = 6*theta-2;
+			}
+			else {
+				//Tangent A provided but tangent B not provided
+				// 1-t*t, t-t*t, t*t
+				double t = theta;
+				dcb = 2*t;
+				ddcb = 2;
+				dca = -dcb;
+				ddca = -2;
+				dcta = 1-dcb;
+				ddcta = -ddcb;
+				dctb=0;    
+				ddctb=0;    
+			}
+		}
+		else{
+			if (TgB()){
+				//Tangent B provided but tangent A not provided
+				double t = 1-theta;
+				dca = -2*t;
+				ddca = 2;
+				dcb = -dca;
+				ddcb = -2;
+				dctb = 1+dca;
+				ddctb= ddca;
+				dcta =0;
+				ddcta =0;
+			}
+			else {
+				//Neither thangent A nor tangent B provided
+				// lagrange P1
+				t=B-A;
+				return 0;
+			} 
+		}
+		R2 d  =  A*dca  + B*dcb  + tg[0]* dcta  + tg[1] * dctb;
+		R2 dd =  A*ddca + B*ddcb + tg[0]* ddcta + tg[1] * ddctb;
+		double d2=(d,d);
+		double sd2 = sqrt(d2);
+		t=d;
+		if(d2>1.0e-20){
+			t/=sd2;
+			return Abs(Det(d,dd))/(d2*sd2);
+		}
+		else return 0;
+	}
+	/*}}}*/
+	int    GeomEdge::Required()       {/*{{{*/
+		return type &64; 
+	}/*}}}*/
+	void GeomEdge::Set(const GeomEdge & rec,const Geometry & Gh ,Geometry & GhNew){ /*{{{*/
+		*this = rec;
+		v[0] = GhNew.vertices + Gh.GetId(v[0]);    
+		v[1] = GhNew.vertices + Gh.GetId(v[1]); 
+		if (Adj[0]) Adj[0] =  GhNew.edges + Gh.GetId(Adj[0]);     
+		if (Adj[1]) Adj[1] =  GhNew.edges + Gh.GetId(Adj[1]);     
+	}
+	/*}}}*/
+	void   GeomEdge::SetCracked()     { /*{{{*/
+		type |= 1;/*=>1st digit to 1*/
+	}/*}}}*/
+	void   GeomEdge::SetTgA()         { /*{{{*/
+		type |=4; /*=>2d digit to 1*/
+	}/*}}}*/
+	void   GeomEdge::SetTgB()         { /*{{{*/
+		type |=8; /*=> 3d digit to 1*/
+	}/*}}}*/
+	void   GeomEdge::SetMark()        { /*{{{*/
+		type |=16;/*=> 4th digiy to 1*/
+	}/*}}}*/
+	void   GeomEdge::SetUnMark()      { /*{{{*/
+		type &= 1007 /* 1023-16 = 000111110111 => 4th digit to 0*/;
+	}/*}}}*/
+	void   GeomEdge::SetRequired()    { /*{{{*/
+		type |= 64;/*=>6th digit to 1*/ 
+	}/*}}}*/
+	int    GeomEdge::TgA()     const  {/*{{{*/
+		return type &4;  
+	}/*}}}*/
+	int    GeomEdge::TgB()     const  {/*{{{*/
+		return type &8;  
+	}/*}}}*/
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/GeomEdge.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/GeomEdge.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/GeomEdge.h	(revision 21239)
@@ -0,0 +1,45 @@
+#ifndef _GEOMETRICALEDGE_H_
+#define _GEOMETRICALEDGE_H_
+
+#include "./include.h"
+
+namespace bamg {
+
+	class GeomVertex;
+	class Geometry;
+
+	class GeomEdge {
+
+		public:
+			GeomVertex *v[2];
+			long               ReferenceNumber;
+			long               CurveNumber;
+			R2                 tg[2];              // the 2 tangentes (tg[0] =0 => no continuity)
+			GeomEdge   *Adj[2];
+			int                AdjVertexIndex[2]; // for a given vertex, this gives the index of the vertex in the adjacent edge (0 or 1)
+			int                type;
+
+			//Operators
+			GeomVertex       & operator[](int i){return *v[i];};
+			const GeomVertex & operator[](int i) const { return *v[i];};
+			GeomVertex       * operator()(int i){return v[i];};  
+
+			//Methods
+			R2     F(double theta) const ; // parametrization of the curve edge
+			double R1tg(double theta,R2 &t) const ; // 1/radius of curvature + tangente
+			int    Cracked() const;
+			int    TgA()     const;
+			int    TgB()     const;
+			int    Mark()    const;
+			int    Required();
+			void   SetCracked();
+			void   SetTgA();
+			void   SetTgB();
+			void   SetMark();
+			void   SetUnMark();
+			void   SetRequired();
+			void   Set(const GeomEdge & rec,const Geometry & Th ,Geometry & ThNew);
+	};
+
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/GeomSubDomain.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/GeomSubDomain.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/GeomSubDomain.cpp	(revision 21239)
@@ -0,0 +1,19 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "GeomSubDomain.h"
+#include "Geometry.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+
+	/*Methods*/
+	void GeomSubDomain::Set(const GeomSubDomain & rec,const Geometry & Gh ,const Geometry & GhNew){/*{{{*/
+		*this = rec;
+		edge = Gh.GetId(edge) + GhNew.edges;
+	}/*}}}*/
+
+} 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/GeomSubDomain.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/GeomSubDomain.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/GeomSubDomain.h	(revision 21239)
@@ -0,0 +1,22 @@
+#ifndef _GEOMETRICALSUBDOMAIN_H_
+#define _GEOMETRICALSUBDOMAIN_H_
+
+#include "./include.h"
+
+namespace bamg {
+
+	class GeomEdge;
+	class Geometry;
+
+	class GeomSubDomain {
+		public:
+			GeomEdge *edge;
+			int              direction;   // -1 or 1
+			long             ReferenceNumber;
+
+			//Methods
+			void Set(const GeomSubDomain &,const Geometry & ,const Geometry &);
+	};
+
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/GeomVertex.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/GeomVertex.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/GeomVertex.cpp	(revision 21239)
@@ -0,0 +1,33 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "GeomVertex.h"
+#include "../shared/shared.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+	//See header file
+
+	/*Methods*/
+	int  GeomVertex::Corner() const {/*{{{*/
+		return type & 4;
+	}
+	/*}}}*/
+	int  GeomVertex::Required()const {/*{{{*/
+		// a corner is required
+		return type & 6;
+	}
+	/*}}}*/
+	void GeomVertex::SetCorner(){/*{{{*/
+		type |= 4;
+	}
+	/*}}}*/
+	void GeomVertex::SetRequired(){/*{{{*/
+		type |= 2;
+	}
+	/*}}}*/
+
+} 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/GeomVertex.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/GeomVertex.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/GeomVertex.h	(revision 21239)
@@ -0,0 +1,30 @@
+#ifndef _GEOMETRICALVERTEX_H_
+#define _GEOMETRICALVERTEX_H_
+
+#include "./include.h"
+#include "BamgVertex.h"
+
+namespace bamg {
+
+	class Geometry;
+
+	class GeomVertex : public BamgVertex { 
+
+		public:
+			friend class Geometry;
+
+			int type;
+
+			//Constructors
+			GeomVertex():type(0){};
+
+			//Methods
+			int  Corner() const;
+			int  Required()const;
+			void SetCorner();
+			void SetRequired();
+
+	};
+
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Geometry.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Geometry.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Geometry.cpp	(revision 21239)
@@ -0,0 +1,918 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "./bamgobjects.h"
+#include "../shared/shared.h"
+
+namespace bamg {
+
+	static const  Direction NoDirOfSearch=Direction();
+
+	/*Constructors/Destructors*/
+	Geometry::Geometry(){/*{{{*/
+		Init();
+	}
+	/*}}}*/
+	Geometry::Geometry(BamgGeom* bamggeom, BamgOpts* bamgopts){/*{{{*/
+		Init();
+		ReadGeometry(bamggeom,bamgopts);
+		PostRead();
+	}
+	/*}}}*/
+	Geometry::Geometry(const Geometry & Gh) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/Geometry)*/
+
+		long i;
+		*this = Gh;
+		NbRef =0;
+		quadtree=0;
+		vertices = nbv ? new GeomVertex[nbv] : NULL;
+		edges = nbe ? new GeomEdge[nbe]:NULL;
+		curves= nbcurves ? new Curve[nbcurves]:NULL;
+		subdomains = nbsubdomains ? new GeomSubDomain[nbsubdomains]:NULL;
+		for (i=0;i<nbe;i++)
+		 edges[i].Set(Gh.edges[i],Gh,*this);
+		for (i=0;i<nbcurves;i++)
+		 curves[i].Set(Gh.curves[i],Gh,*this);
+		for (i=0;i<nbsubdomains;i++)
+		 subdomains[i].Set(Gh.subdomains[i],Gh,*this);
+	}
+	/*}}}*/
+	Geometry::~Geometry() {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/~Geometry)*/
+		if(NbRef>0){   _printf_("Trying to delete geometry and NbRef>0, probably due to an error"); return;}
+		if(vertices)   delete [] vertices;  vertices=0;
+		if(edges)      delete [] edges;     edges=0;
+		if(quadtree)   delete    quadtree;  quadtree=0;
+		if(curves)     delete [] curves;    curves=0;nbcurves=0;
+		if(subdomains) delete [] subdomains;subdomains=0;
+		Init();
+	}
+	/*}}}*/
+
+	/*IO*/
+	void Geometry::ReadGeometry(BamgGeom* bamggeom,BamgOpts* bamgopts){/*{{{*/
+
+		int verbose;
+		nbcurves=0;
+
+		double Hmin = HUGE_VAL;// the infinie value 
+		int i,j,n,i0,i1,i2,i3;
+
+		/*initialize some variables*/
+		verbose= bamgopts->verbose;
+		nbv    = bamggeom->VerticesSize[0];
+		nbe    = bamggeom->EdgesSize[0];
+
+		//some checks
+		if (bamggeom->Vertices==NULL) _error_("the domain provided does not contain any vertex");
+		if (bamggeom->Edges==NULL) _error_("the domain provided does not contain any edge");
+
+		//Vertices
+		if (bamggeom->Vertices){
+			if(verbose>5) _printf_("      processing Vertices\n");
+			if (bamggeom->VerticesSize[1]!=3) _error_("Vertices should have 3 columns");
+			vertices = new GeomVertex[nbv];
+			for (i=0;i<nbv;i++) {
+				vertices[i].r.x=(double)bamggeom->Vertices[i*3+0];
+				vertices[i].r.y=(double)bamggeom->Vertices[i*3+1];
+				vertices[i].ReferenceNumber=(long)bamggeom->Vertices[i*3+2];
+				vertices[i].DirOfSearch=NoDirOfSearch;
+				vertices[i].color =0;
+				vertices[i].type=0;
+			}
+			/*find domain extrema (pmin,pmax) that will define the square box used for by the quadtree*/
+			pmin =  vertices[0].r;
+			pmax =  vertices[0].r;
+			for (i=0;i<nbv;i++) {
+				pmin.x = Min(pmin.x,vertices[i].r.x);
+				pmin.y = Min(pmin.y,vertices[i].r.y);
+				pmax.x = Max(pmax.x,vertices[i].r.x);
+				pmax.y = Max(pmax.y,vertices[i].r.y);
+			}
+			/*Offset pmin and pmax to avoid round-off errors*/
+			R2 offset = (pmax-pmin)*0.05;
+			pmin -= offset;
+			pmax += offset;
+			/*coefIcoor is the coefficient used for integer coordinates:
+			 *                       (x-pmin.x)
+			 * Icoor x = (2^30 -1) ------------ 
+			 *                          D
+			 * where D is the longest side of the domain (direction x or y)
+			 * so that (x-pmin.x)/D is in ]0 1[
+			 *
+			 * coefIcoor = (2^30 -1)/D
+			 */
+			coefIcoor=(MaxICoor)/(Max(pmax.x-pmin.x,pmax.y-pmin.y));
+			if(coefIcoor<=0) _error_("coefIcoor should be positive");
+		}
+		else{
+			_error_("No BamgVertex provided");
+		}
+
+		//Edges
+		if (bamggeom->Edges){
+			R2      zerovector(0,0);
+			double* verticeslength=NULL;
+
+			if(verbose>5) _printf_("      processing Edges\n");
+			if (bamggeom->EdgesSize[1]!=3) _error_("Edges should have 3 columns");
+			edges = new GeomEdge[nbe];
+
+			//initialize verticeslength (sum of the lengths of the edges holding vertex)
+			verticeslength = new double[nbv];
+			for(i=0;i<nbv;i++) verticeslength[i]=0;
+
+			/*Loop over the edges*/
+			for (i=0;i<nbe;i++){
+
+				i1=(int)bamggeom->Edges[i*3+0]-1; //-1 for C indexing
+				i2=(int)bamggeom->Edges[i*3+1]-1; //-1 for C indexing
+				edges[i].v[0]= vertices + i1;     //pointer toward vertex i1 (=&vertices[i1])
+				edges[i].v[1]= vertices + i2;     //pointer toward vertex i2
+				edges[i].ReferenceNumber=(long)bamggeom->Edges[i*3+2];
+
+				//get length of edge
+				R2     x12=vertices[i2].r-vertices[i1].r;
+				double l12=sqrt((x12,x12));
+				Hmin=Min(Hmin,l12);
+
+				//initialize other fields
+				edges[i].tg[0]=zerovector;
+				edges[i].tg[1]=zerovector;
+				edges[i].AdjVertexIndex[0] = edges[i].AdjVertexIndex[1] = -1;
+				edges[i].Adj[0] = edges[i].Adj[1] = NULL;
+				edges[i].type = 0;
+
+				//Cracked?
+				if (edges[i].ReferenceNumber!=1) edges[i].SetCracked();
+
+				//prepare metric
+				vertices[i1].color++;
+				vertices[i2].color++;
+				verticeslength[i1] += l12;
+				verticeslength[i2] += l12;
+			}
+
+			// definition the default of the given mesh size 
+			for (i=0;i<nbv;i++) {
+				if (vertices[i].color > 0) 
+				 vertices[i].m=Metric(verticeslength[i] /(double) vertices[i].color);
+				else 
+				 vertices[i].m=Metric(Hmin);
+			}
+			delete [] verticeslength;
+
+		}
+		else{
+			_error_("No edges provided");
+		}
+
+		//hVertices
+		if(bamgopts->hVertices && bamgopts->hVerticesSize[0]==nbv){
+			if(verbose>5) _printf_("      processing hVertices\n");
+			for (i=0;i< nbv;i++){
+				if (!xIsNan<IssmPDouble>(bamgopts->hVertices[i])){
+					vertices[i].m=Metric((double)bamgopts->hVertices[i]);
+				}
+			}
+		}
+
+		//MetricVertices
+		if(bamgopts->metric && bamgopts->metric[0]==nbv){
+			if(verbose>5) _printf_("      processing MetricVertices\n");
+			for (i=0;i< nbv;i++) {
+				vertices[i].m = Metric((double)bamgopts->metric[i*3+0],(double)bamgopts->metric[i*3+1],(double)bamgopts->metric[i*3+2]);
+			}
+		}
+
+		//MaxCornerAngle
+		if (bamgopts->MaxCornerAngle){
+			if(verbose>5) _printf_("      processing MaxCornerAngle\n");
+			MaxCornerAngle=bamgopts->MaxCornerAngle*Pi/180;
+		}
+
+		//TangentAtEdges
+		if (bamggeom->TangentAtEdges){
+			if(verbose>5) _printf_("      processing TangentAtEdges");
+			if (bamggeom->TangentAtEdgesSize[1]!=4) _error_("TangentAtEdges should have 4 columns");
+			int n,i,j,k;
+			R2 tg;
+
+			n=bamggeom->TangentAtEdgesSize[0];
+			for (k=0;k<n;k++) {
+				i=(int)bamggeom->TangentAtEdges[k*4+0]-1; //for C indexing
+				j=(int)bamggeom->TangentAtEdges[k*4+1]-1; //for C indexing
+				tg.x=bamggeom->TangentAtEdges[k*4+2];
+				tg.y=bamggeom->TangentAtEdges[k*4+3];
+				if (i<0 || i>=nbe) _error_("TangentAtEdges first index exceeds matrix dimension");
+				if (j!=0 && j!=1)  _error_("TangentAtEdges second index should be 1 or 2 only");
+				edges[i].tg[j] = tg;
+			}
+		}
+
+		//Corners
+		if(bamggeom->Corners){
+			if(verbose>5) _printf_("      processing Corners");
+			if (bamggeom->CornersSize[1]!=1) _error_("Corners should have 1 column");
+			n=bamggeom->CornersSize[0];
+			for (i=0;i<n;i++) {     
+				j=(int)bamggeom->Corners[i]-1; //for C indexing
+				if (j>nbv-1 || j<0) _error_("Bad corner definition: should in [0 " << nbv << "]");
+				/*Required => at the same time SetRequired and SetCorner*/
+				vertices[j].SetCorner();
+				vertices[j].SetRequired();
+			}
+		}
+
+		//RequiredVertices
+		if(bamggeom->RequiredVertices){
+			if(verbose>5) _printf_("      processing RequiredVertices\n");
+			if (bamggeom->RequiredVerticesSize[1]!=1) _error_("RequiredVertices should have 1 column");
+			n=bamggeom->RequiredVerticesSize[0];
+			for (i=0;i<n;i++) {     
+				j=(int)bamggeom->RequiredVertices[i]-1; //for C indexing
+				if (j>nbv-1 || j<0) _error_("Bad RequiredVerticess  definition: should in [0 " << nbv << "]");
+				vertices[j].SetRequired();
+			}
+		}
+
+		//RequiredEdges
+		if(bamggeom->RequiredEdges){
+			if(verbose>5) _printf_("      processing RequiredEdges\n");
+			if (bamggeom->RequiredEdgesSize[1]!=1) _error_("RequiredEdges should have 1 column");
+			n=bamggeom->RequiredEdgesSize[0];
+			for (i=0;i<n;i++) {     
+				j=(int)bamggeom->RequiredEdges[i]-1; //for C indexing
+				if (j>nbe-1 || j<0) _error_("Bad RequiredEdges definition: should in [0 " << nbe << "]");
+				edges[j].SetRequired();  
+			}
+		}
+
+		//SubDomain
+		if(bamggeom->SubDomains){
+			if(verbose>5) _printf_("      processing SubDomains\n");
+			if (bamggeom->SubDomainsSize[1]!=4) _error_("SubDomains should have 4 columns");
+			nbsubdomains=bamggeom->SubDomainsSize[0];
+			subdomains = new GeomSubDomain[nbsubdomains];
+			for (i=0;i<nbsubdomains;i++){
+				i0=(int)bamggeom->SubDomains[i*4+0];
+				i1=(int)bamggeom->SubDomains[i*4+1];
+				i2=(int)bamggeom->SubDomains[i*4+2];
+				i3=(int)bamggeom->SubDomains[i*4+3];
+				if (i0!=2) _error_("Bad Subdomain definition: first number should be 2 (for Edges)");
+				if (i1>nbe || i1<=0) _error_("Bad Subdomain definition: second number should in [1 " << nbe << "] (edge number)");
+				subdomains[i].edge=edges + (i1-1);
+				subdomains[i].direction = (int) i2;
+				subdomains[i].ReferenceNumber = i3;
+			}
+		}
+	}
+	/*}}}*/
+	void Geometry::WriteGeometry(BamgGeom* bamggeom, BamgOpts* bamgopts){/*{{{*/
+
+		int verbose;
+		int nbreq=0;
+		int nbreqv=0;
+		int nbtan=0;
+		int i,count;
+
+		/*Get options*/
+		verbose=bamgopts->verbose;
+
+		/*Vertices*/
+		if(verbose>5) _printf_("      writing Vertices\n");
+		bamggeom->VerticesSize[0]=nbv;
+		bamggeom->VerticesSize[1]=3;
+		if (nbv){
+			bamggeom->Vertices=xNew<double>(3*nbv);
+			for (i=0;i<nbv;i++){
+				bamggeom->Vertices[i*3+0]=vertices[i].r.x;
+				bamggeom->Vertices[i*3+1]=vertices[i].r.y;
+				bamggeom->Vertices[i*3+2]=vertices[i].GetReferenceNumber();
+
+				//update counters
+				if (vertices[i].Required()) nbreqv++;
+			}
+		}
+
+		/*Edges*/
+		if(verbose>5) _printf_("      writing Edges\n");
+		bamggeom->EdgesSize[0]=nbe;
+		bamggeom->EdgesSize[1]=3;
+		if (nbe){
+			bamggeom->Edges=xNew<double>(3*nbe);
+			for (i=0;i<nbe;i++){
+				bamggeom->Edges[i*3+0]=GetId(edges[i][0])+1; //back to Matlab indexing
+				bamggeom->Edges[i*3+1]=GetId(edges[i][1])+1; //back to Matlab indexing
+				bamggeom->Edges[i*3+2]=(double)edges[i].ReferenceNumber;
+
+				//update counters
+				if (edges[i].Required()) nbreq++;
+				if (edges[i].TgA() && edges[i][0].Corner()) nbtan++;
+				if (edges[i].TgB() && edges[i][1].Corner()) nbtan++;
+			}
+		}
+
+		/*RequiredEdges*/
+		if(verbose>5) _printf_("      writing " << nbreq << " RequiredEdges\n");
+		bamggeom->RequiredEdgesSize[0]=nbreq;
+		bamggeom->RequiredEdgesSize[1]=1;
+		if (nbreq){
+			bamggeom->RequiredEdges=xNew<double>(1*nbreq);
+			count=0;
+			for (i=0;i<nbe;i++){
+				if (edges[i].Required()){
+					bamggeom->RequiredEdges[count]=i+1; //back to Matlab indexing
+					count=count+1;
+				}
+			}
+		}
+
+		//No corners
+
+		/*RequiredVertices*/
+		if(verbose>5) _printf_("      writing " << nbreqv << " RequiredVertices\n");
+		bamggeom->RequiredVerticesSize[0]=nbreqv;
+		bamggeom->RequiredVerticesSize[1]=1;
+		if (nbreqv){
+			bamggeom->RequiredVertices=xNew<double>(1*nbreqv);
+			count=0;
+			for (i=0;i<nbv;i++){
+				if (vertices[i].Required()){
+					bamggeom->RequiredVertices[count]=i+1; //back to Matlab indexing
+					count=count+1;
+				}
+			}
+		}
+
+		/*SubDomains*/
+		if(verbose>5) _printf_("      writing SubDomains\n");
+		bamggeom->SubDomainsSize[0]=nbsubdomains;
+		bamggeom->SubDomainsSize[1]=4;
+		if (nbsubdomains){
+			bamggeom->SubDomains=xNew<double>(4*nbsubdomains);
+			for (i=0;i<nbsubdomains;i++){
+				bamggeom->SubDomains[4*i+0]=2;
+				bamggeom->SubDomains[4*i+1]=GetId(subdomains[i].edge)+1; //back to Matlab indexing
+				bamggeom->SubDomains[4*i+2]=subdomains[i].direction;
+				bamggeom->SubDomains[4*i+3]=subdomains[i].ReferenceNumber;
+			}
+		}
+
+		/*TangentAtEdges*/
+		if(verbose>5) _printf_("      writing TangentAtEdges\n");
+		bamggeom->TangentAtEdgesSize[0]=nbtan;
+		bamggeom->TangentAtEdgesSize[1]=4;
+		if (nbtan){
+			bamggeom->TangentAtEdges=xNew<double>(4*nbtan);
+			for (i=0;i<nbe;i++){
+				if (edges[i].TgA() && edges[i][0].Corner()){
+					bamggeom->TangentAtEdges[4*i+0]=i+1; //back to Matlab indexing
+					bamggeom->TangentAtEdges[4*i+1]=1;
+					bamggeom->TangentAtEdges[4*i+2]=edges[i].tg[0].x;
+					bamggeom->TangentAtEdges[4*i+3]=edges[i].tg[0].y;
+				}
+				if (edges[i].TgB() && edges[i][1].Corner()){
+					bamggeom->TangentAtEdges[4*i+0]=i+1; //back to Matlab indexing
+					bamggeom->TangentAtEdges[4*i+1]=2;
+					bamggeom->TangentAtEdges[4*i+2]=edges[i].tg[1].x;
+					bamggeom->TangentAtEdges[4*i+3]=edges[i].tg[1].y;
+				}
+			}
+		}
+	}
+	/*}}}*/
+
+	/*Methods*/
+	void Geometry::Echo(void){/*{{{*/
+
+		_printf_("Geometry:\n");
+		_printf_("   nbv  (number of vertices) : " << nbv << "\n");
+		_printf_("   nbe  (number of edges)    : " << nbe << "\n");
+		_printf_("   nbsubdomains: " << nbsubdomains << "\n");
+		_printf_("   nbcurves: " << nbcurves << "\n");
+		_printf_("   vertices: " << vertices << "\n");
+		_printf_("   edges: " << edges << "\n");
+		_printf_("   quadtree: " << quadtree << "\n");
+		_printf_("   subdomains: " << subdomains << "\n");
+		_printf_("   curves: " << curves << "\n");
+		_printf_("   pmin (x,y): (" << pmin.x << " " << pmin.y << ")\n");
+		_printf_("   pmax (x,y): (" << pmax.x << " " << pmax.y << ")\n");
+		_printf_("   coefIcoor: " << coefIcoor << "\n");
+		_printf_("   MaxCornerAngle: " << MaxCornerAngle << "\n");
+
+		return;
+	}
+	/*}}}*/
+	void Geometry::Init(void){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/EmptyGeometry)*/
+
+		NbRef=0;
+		nbv=0;
+		nbe=0;
+		quadtree=NULL;
+		curves=NULL;
+		edges=NULL;
+		vertices=NULL;
+		nbsubdomains=0;
+		nbcurves=0;
+		subdomains=NULL;
+		MaxCornerAngle = 10*Pi/180; //default is 10 degres
+	}
+	/*}}}*/
+	double Geometry::MinimalHmin() {/*{{{*/
+		/* coeffIcoor = (2^30-1)/D
+		 * We cannot go beyond hmin = D/2^30 because of the quadtree
+		 * hmin is therefore approximately 2/coeffIcoor */
+		return 2.0/coefIcoor;
+	}/*}}}*/
+	double Geometry::MaximalHmax() {/*{{{*/
+		return Max(pmax.x-pmin.x,pmax.y-pmin.y);
+	}/*}}}*/
+	long Geometry::GetId(const GeomVertex & t) const  {/*{{{*/
+		return &t - vertices;
+	}/*}}}*/
+	long Geometry::GetId(const GeomVertex * t) const  {/*{{{*/
+		return t - vertices;
+	}/*}}}*/
+	long Geometry::GetId(const GeomEdge & t) const  {/*{{{*/
+		return &t - edges;
+	}/*}}}*/
+	long Geometry::GetId(const GeomEdge * t) const  {/*{{{*/
+		return t - edges;
+	}/*}}}*/
+	long Geometry::GetId(const Curve * c) const  {/*{{{*/
+		return c - curves;
+	}/*}}}*/
+	void Geometry::PostRead(){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/AfterRead)*/
+
+		long          i          ,j,k;
+		long         *head_v   = new long[nbv];
+		long         *next_p   = new long[2 *nbe];
+		float        *eangle   = new float[nbe];
+		double        eps      = 1e-20;
+		BamgQuadtree  quadtree;                            // build quadtree to find duplicates
+
+		k=0;
+
+		//build quadtree for this geometry
+		for (i=0;i<nbv;i++){
+
+			/*build integer coordinates (non unique)
+			  these coordinates are used by the quadtree to group
+			  the vertices by groups of 5:
+			  All the coordinates are transformed to ]0,1[^2
+			  then, the integer coordinates are computed using 
+			  the transformation ]0,1[^2 -> [0 2^30-1[^2 for a quadtree of depth 30*/
+			vertices[i].i=R2ToI2(vertices[i].r); 
+
+			/*find nearest vertex already present in the quadtree (NULL if empty)*/
+			BamgVertex* v=quadtree.NearestVertex(vertices[i].i.x,vertices[i].i.y); 
+
+			/*if there is a vertex found that is to close to vertices[i] -> error*/
+			if( v && Norme1(v->r - vertices[i].r) < eps ){
+				_printf_("reference numbers: " << v->ReferenceNumber << " " << vertices[i].ReferenceNumber << "\n");
+				_printf_("Id: " << i+1 << "\n");
+				_printf_("Coords: ["<<v->r.x<<" "<<v->r.y<<"] ["<<vertices[i].r.x<<" "<<vertices[i].r.y<<"]\n");
+
+				delete [] next_p;
+				delete [] head_v;
+				delete [] eangle;
+				_error_("two points of the geometry are very closed to each other (see reference numbers above)");
+			}
+
+			/*Add vertices[i] to the quadtree*/
+			quadtree.Add(vertices[i]);
+		}
+
+		/* Here we use a powerful chaining algorithm
+		 *
+		 * 1. What is a chaining algorithm?
+		 *
+		 * If F is a function that goes from i in [0 n] to j in [0 m]
+		 * and we want to compute the reciprocal function F-1 of F
+		 * (what are the antecedents of a given j in Im(F) )
+		 * We use 2 lists:
+		 *    head_F[j] that holds the head of lists
+		 *    next_F[i] that holds the list of elements that have the same image
+		 *
+		 * Example:
+		 *    i1, i2, ..., ip in [0,n] are all antecedents of a given j in [0 m]
+		 *    head_F[j] = ip
+		 *    next_F[ip]= ip-1
+		 *    ....
+		 *    next_F[i2]= i1
+		 *    next_F[i1]= -1  //end of the list
+		 *
+		 * Algorithm:
+		 *    for(j=0;j<m;j++)  head_F[j] = -1 //initialization
+		 *    for(i=0;i<n;i++){
+		 *       j=F[i];
+		 *       next_F[i]= head_F[j];
+		 *       head_F[j]=i;
+		 *    }
+		 * 
+		 *    Then, we can go through all the elements that have for image j:
+		 *    for(i=head_F[j]; i!=-1; i=next_F[i])
+		 *    initialization of i by i=head_F[j]
+		 *    stop the loop when i=-1 (end of the chain)
+		 *    iterate using i=next_F[i] (next element that have for image j)
+		 * 
+		 * 2. How to use this algorithm here?
+		 * 
+		 * Here F is a function that associates two vertices v0 and v1 for a given edge E
+		 * We want to build the reciprocal function: what are the edges that contains
+		 * a vertex v?
+		 * To do so, we use the same chaining algorithm but there is a difficulty
+		 * coming from the fact that for F we have a couple of vertices and not one 
+		 * vertex.
+		 * To overcome this difficulty, we use a global indexing exactly like in 
+		 * C/C++ so that
+		 * a member of a 2-column-table can be described by one index p=i*2+j
+		 * i=(int)p/2 line number of p
+		 * j=p%2      column number of p
+		 *
+		 * Algorithm:
+		 *    for(i=0;i<nbv;i++)  head_v[i] = -1 //initialization
+		 *    for(i=0;i<nbe;i++){
+		 *       for(j=0;j<2;j++){
+		 *          p=2*i+j;
+		 *          v=edges(i,j);
+		 *          next_p[p]= head_v[v];
+		 *          head_v[v]=p;
+		 *       }
+		 *    }
+		 */
+
+		//initialize head_v as -1
+		for (i=0;i<nbv;i++) head_v[i]=-1;
+		k=0;
+		for (i=0;i<nbe;i++) {
+			//compute vector of edge i that goes from vertex 0 to vertex 1
+			R2 v10=edges[i].v[1]->r - edges[i].v[0]->r;
+			double lv10=Norme2(v10);
+			//check that its length is not 0
+			if(lv10==0){
+				delete [] next_p;
+				delete [] head_v;
+				delete [] eangle;
+				_error_("Length of edge " << i << " is 0");
+			}
+			//compute angle in [-Pi Pi]
+			eangle[i] = atan2(v10.y,v10.x);
+			//build chains head_v and next_p
+			for (j=0;j<2;j++){
+				long v=GetId(edges[i].v[j]);
+				next_p[k]=head_v[v];
+				head_v[v]=k++; //post increment: head_v[v]=k; and then k=k+1;
+			}
+		}
+
+		//sort head_v by order of increasing edges angle
+		for (i=0;i<nbv;i++) {
+			int exch=1,ord=0;      
+
+			//exchange vertices position in head_v and next_p till tey are sorted
+			while (exch){
+				long *p=head_v+i;               
+				long *po=p;                     
+				long  n=*p;                     
+				float angleold=-1000 ; // angle = - infinity
+				ord=0; exch=0;
+
+				// loop over the edges that contain the vertex i (till -1)
+				while (n >=0){
+					ord++;
+					long  i1=n/2;       // i1 = floor (n/2)      -> Edge number
+					long  j1=n%2;       // j1 = 1 if n is odd    -> Vertex index for this edge (0 or 1)
+					long* pn=next_p+n;
+
+					//Next vertex index
+					n=*pn;                       
+
+					//compute angle between horizontal axis and v0->v1
+					float angle = j1 ? OppositeAngle(eangle[i1]):  eangle[i1]; 
+
+					//exchange if the current edge angle is smaller than the previous one
+					if (angleold > angle){
+						exch=1;
+						*pn=*po;  // next_p[n] = n + 1
+						*po=*p;   // 
+						*p=n;     // next_p[n+1] = n
+						po=pn;    // po now point toward pn (invert next and current)
+					}
+
+					//else, continue going to the next edge position
+					else{                        //  to have : po -> p -> pn
+						angleold=angle; // update maximum angle
+						po=p;           // po now point toward p  (current position)
+						p=pn;           // p  now point toward pn (next position)
+					}
+				}
+			}
+
+			// angular test on current vertex to guess whether it is a corner (ord = number of edges holding i)
+			if(ord==2) { 
+				long  n1 = head_v[i];
+				long  n2 = next_p[n1];
+				long  i1 = n1/2, i2 = n2/2; // edge number
+				long  j1 = n1%2, j2 = n2%2; // vertex in the edge 
+				float angle1=  j1 ? OppositeAngle(eangle[i1]) : eangle[i1];
+				float angle2= !j2 ? OppositeAngle(eangle[i2]) : eangle[i2];
+				float da12 = Abs(angle2-angle1);
+				if (( da12 >= MaxCornerAngle ) && (da12 <= 2*Pi -MaxCornerAngle)) {
+					vertices[i].SetCorner() ; 
+				}
+				// if the edge type/referencenumber a changing then is SetRequired();
+				if (edges[i1].type != edges[i2].type || edges[i1].Required()){
+					vertices[i].SetRequired();
+				}
+				if (edges[i1].ReferenceNumber != edges[i2].ReferenceNumber) {
+					vertices[i].SetRequired();
+				}
+			}
+			if(ord != 2) {
+				vertices[i].SetCorner();
+			}
+
+			/*close the list around the vertex to have a circular loop*/
+			long no=-1, ne = head_v[i];
+			while (ne >=0) ne = next_p[no=ne];        
+			if(no>=0) next_p[no] = head_v[i];
+		}
+
+		/*Check that the list makes sense (we have all the time the same vertex)
+		 * and build adjacent edges*/
+		k =0;
+		for (i=0;i<nbe;i++){
+			for (j=0;j<2;j++){
+
+				long n1 = next_p[k++]; 
+				long i1 = n1/2 ,j1=n1%2;
+
+				if( edges[i1].v[j1] != edges[i].v[j]) _error_("Problem while processing edges: check the edge list");
+
+				edges[i1].Adj[j1] = edges + i;
+				edges[i1].AdjVertexIndex[j1] = j;
+			}
+		}
+
+		/* generation of  all the tangents*/
+		for (i=0;i<nbe;i++) {
+			R2    AB =edges[i].v[1]->r -edges[i].v[0]->r;// AB = vertex0 -> vertex1
+			double lAB=Norme2(AB);                       // Get length of AB
+			double ltg2[2]={0.0};                        // initialize tangent
+
+			//loop over the 2 vertices of the edge
+			for (j=0;j<2;j++) {
+				R2     tg =edges[i].tg[j];
+				double ltg=Norme2(tg);
+
+				//by default, tangent=[0 0]
+				if(ltg==0){
+					//if the current vertex of the edge is not a corner
+					if(!edges[i].v[j]->Corner()){
+						/*The tangent is set as the vector between the
+						 * previous and next vertices connected to current vertex
+						 * normed by the edge length*/
+						tg = edges[i].v[1-j]->r - edges[i].Adj[j]->v[1-edges[i].AdjVertexIndex[j]]->r;
+						ltg= Norme2(tg);
+						tg = tg *(lAB/ltg);
+						ltg= lAB;
+					}
+					//else:  a Corner no tangent => nothing to do    
+				}
+				else{
+					//tangent has already been computed
+					tg = tg*(lAB/ltg),ltg=lAB;
+				}
+
+				ltg2[j] = ltg;
+
+				if ((tg,AB)<0) tg = -tg;
+
+				edges[i].tg[j]=tg;
+			}
+			if (ltg2[0]!=0) edges[i].SetTgA();
+			if (ltg2[1]!=0) edges[i].SetTgB();
+		} 
+
+		/* generation of  all curves (from corner to corner)*/
+		/*We proceed in 2 steps: first allocate, second build*/
+		for (int step=0;step<2;step++){
+
+			//unmark all edges
+			for (i=0;i<nbe;i++) edges[i].SetUnMark();
+			long  nb_marked_edges=0;
+
+			//initialize number of curves
+			nbcurves = 0;
+
+			for (int level=0;level<2 && nb_marked_edges!=nbe;level++){
+				for (i=0;i<nbe;i++){
+
+					GeomEdge & ei=edges[i];   
+					for(j=0;j<2;j++){
+						/*If current edge ei is unmarked and (level=1 or vertex i is required (corner)):
+						 * we do have the first edge of a new curve*/
+						if (!ei.Mark() && (level || ei[j].Required())) { 
+							int k0=j,k1;
+							GeomEdge   *e=&ei;
+							GeomVertex *a=(*e)(k0); // begin 
+							if(curves){
+								curves[nbcurves].FirstEdge=e;
+								curves[nbcurves].FirstVertexIndex=k0;
+							}
+							int nee=0;
+							for(;;){ 
+								nee++;
+								k1 = 1-k0; // next vertex of the edge 
+								e->SetMark();
+								nb_marked_edges++;
+								e->CurveNumber=nbcurves;
+								GeomVertex *b=(*e)(k1);
+
+								//break if we have reached the other end of the curve
+								if (a==b || b->Required()){
+									if(curves){
+										curves[nbcurves].LastEdge=e;
+										curves[nbcurves].LastVertexIndex=k1;
+									}
+									break;
+								}
+								//else: go to next edge (adjacent)
+								else{
+									k0 = e->AdjVertexIndex[k1];//  vertex in next edge
+									e  = e->Adj[k1]; // next edge
+								}
+							}
+							nbcurves++;
+							if(level) a->SetRequired();
+						}
+					}
+				} 
+			}
+			_assert_(nb_marked_edges && nbe);
+			//allocate if first step
+			if(step==0) curves=new Curve[nbcurves];
+		} 
+
+		/*clean up*/
+		delete [] next_p;
+		delete [] head_v;
+		delete [] eangle;
+
+	}
+	/*}}}*/
+	GeomEdge* Geometry::ProjectOnCurve(const Edge &e,double s,BamgVertex &V,VertexOnGeom &GV) const {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/ProjectOnCurve)*/
+		/*Add a vertex on an existing geometrical edge according to the metrics of the two vertices constituting the edge*/
+
+		double save_s=s;
+		int NbTry=0;
+
+retry:
+
+		s=save_s;
+		GeomEdge* on=e.GeomEdgeHook;
+		if (!on){
+			_error_("ProjectOnCurve error message: edge provided should be on geometry");
+		}
+		if (!e[0].GeomEdgeHook ||  !e[1].GeomEdgeHook){
+			_error_("ProjectOnCurve error message: at least one of the vertex of the edge provided is not on geometry");
+		}
+
+		//Get the two vertices of the edge
+		const BamgVertex &v0=e[0];
+		const BamgVertex &v1=e[1];
+
+		//Get position of V0, V1 and vector v0->v1
+		R2 V0=v0,V1=v1,V01=V1-V0;
+
+		//Get geometrical vertices corresponding to v0 and v1
+		VertexOnGeom  vg0=*v0.GeomEdgeHook,  vg1=*v1.GeomEdgeHook;
+
+		//build two pointers towrad current geometrical edge
+		GeomEdge *eg0=on, *eg1=on;
+
+		//Get edge direction and swap v0 and v1 if necessary
+		R2 Ag=(R2)(*on)[0],Bg=(R2)(*on)[1],AB=Bg-Ag; 
+		int OppositeSens = (V01,AB)<0;
+		int direction0=0,direction1=1;
+		if (OppositeSens) s=1-s,Exchange(vg0,vg1),Exchange(V0,V1);
+
+		//Compute metric of new vertex as a linear interpolation of the two others
+		V.m=Metric(1.0-s,v0,s,v1);
+
+		const int mxe=100;
+		GeomEdge* ge[mxe+1];
+		int     directionge[mxe+1];
+		double  lge[mxe+1];
+		int bge=mxe/2,tge=bge;
+		ge[bge] = e.GeomEdgeHook;
+		directionge[bge]=1;
+
+		while(eg0!=(GeomEdge*)vg0 && (*eg0)(direction0)!=(GeomVertex*)vg0){ 
+			if (bge<=0) {
+				if(NbTry) {
+					_printf_("Fatal Error: on the class Mesh before call Geometry::ProjectOnCurve\n");
+					_printf_("That bug might come from:\n");
+					_printf_(" 1)  a mesh edge  containing more than " << mxe/2 << " geometrical edges\n");
+					_printf_(" 2)  code bug : be sure that we call   Mesh::SetVertexFieldOn() before\n");
+					_printf_("To solve the problem do a coarsening of the geometrical mesh or change the constant value of mxe (dangerous)\n");
+					_error_("see above");
+				}
+				NbTry++;
+				goto retry;
+			}
+			GeomEdge* tmpge = eg0;
+			ge[--bge] =eg0 = eg0->Adj[direction0];
+			_assert_(bge>=0 && bge<=mxe);
+			direction0 = 1-( directionge[bge] = tmpge->AdjVertexIndex[direction0]);
+		}
+		while (eg1 != (GeomEdge*) vg1  &&  (*eg1)(direction1) != (GeomVertex*) vg1) { 
+			if(tge>=mxe ) { 
+				_printf_("WARNING: on the class Mesh before call Geometry::ProjectOnCurve is having issues (isn't it Eric?)\n");
+				NbTry++;
+				if (NbTry<2) goto retry;
+				_printf_("Fatal Error: on the class Mesh before call Geometry::ProjectOnCurve\n");
+				_printf_("That bug might come from:\n");
+				_printf_(" 1)  a mesh edge  contening more than " << mxe/2 << " geometrical edges\n");
+				_printf_(" 2)  code bug : be sure that we call   Mesh::SetVertexFieldOn() before\n");
+				_printf_("To solve the problem do a coarsening of the geometrical mesh or change the constant value of mxe (dangerous)\n");
+				_error_("see above");
+			}
+			GeomEdge* tmpge = eg1;
+			ge[++tge] =eg1 = eg1->Adj[direction1];
+			directionge[tge]= direction1 = 1-tmpge->AdjVertexIndex[direction1];
+			_assert_(tge>=0 && tge<=mxe);
+		}
+
+		if ((*eg0)(direction0)==(GeomVertex*)vg0)
+		 vg0=VertexOnGeom(*(BamgVertex*) vg0,*eg0,direction0); //vg0 = absisce
+
+		if ((*eg1)(direction1)==(GeomVertex*)vg1)
+		 vg1=VertexOnGeom(*(BamgVertex*) vg1,*eg1,direction1);
+
+		double sg;
+		if (eg0 == eg1) { 
+			double s0=vg0,s1=vg1;
+			sg =  s0*(1.0-s) +  s*s1;
+			on=eg0;
+		}
+		else {
+			R2 AA=V0,BB;
+			double s0,s1;
+			int i=bge;
+			double ll=0;
+			for(i=bge;i<tge;i++){
+				_assert_(i>=0 && i<=mxe);
+				BB =  (*ge[i])[directionge[i]];
+				lge[i]=ll += Norme2(AA-BB);
+				AA=BB ;}
+				lge[tge]=ll+=Norme2(AA-V1); 
+				// search the geometrical edge
+				_assert_(s<=1.0);
+				double ls= s*ll;
+				on =0;
+				s0 = vg0;
+				s1= directionge[bge];
+				double l0=0,l1;
+				i=bge;
+				while (  (l1=lge[i]) < ls ) {
+					_assert_(i>=0 && i<=mxe);
+					i++,s0=1-(s1=directionge[i]),l0=l1;
+				}
+				on=ge[i];
+				if (i==tge) 
+				 s1=vg1;
+
+				s  =(ls-l0)/(l1-l0);
+				sg =s0*(1.0-s)+s*s1;    
+		} 
+		_assert_(on);
+		V.r= on->F(sg);
+		GV=VertexOnGeom(V,*on,sg);
+		return on;
+	}
+	/*}}}*/
+	I2 Geometry::R2ToI2(const R2 & P) const {/*{{{*/
+		/*coefIcoor is the coefficient used for integer coordinates:
+		 *                       (x-pmin.x)
+		 * Icoor x = (2^30 -1) ------------ 
+		 *                          D
+		 * where D is the longest side of the domain (direction x or y)
+		 * so that (x-pmin.x)/D is in ]0 1[
+		 *
+		 * coefIcoor = (2^30 -1)/D
+		 */
+		return  I2( (Icoor1) (coefIcoor*(P.x-pmin.x)) ,(Icoor1) (coefIcoor*(P.y-pmin.y)) );
+	}/*}}}*/
+	void Geometry::UnMarkEdges() {/*{{{*/
+		for (int i=0;i<nbe;i++) edges[i].SetUnMark();
+	}/*}}}*/
+} 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Geometry.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Geometry.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Geometry.h	(revision 21239)
@@ -0,0 +1,67 @@
+#ifndef _GEOMETRY_H_
+#define _GEOMETRY_H_
+
+#include "./include.h"
+#include "./BamgGeom.h"
+#include "./BamgOpts.h"
+#include "./GeomVertex.h"
+#include "./GeomEdge.h"
+#include "./Curve.h"
+
+namespace bamg {
+
+	class Triangle;
+	class BamgQuadtree;
+	class GeomSubDomain;
+	class Edge;
+
+	class Geometry { 
+
+		public:
+
+			long           NbRef;                 // counter of ref on the this class if 0 we can delete
+			long           nbv;                   // number of vertices
+			long           nbe;                   // number of edges
+			long           nbsubdomains;
+			long           nbcurves;
+			GeomVertex    *vertices;
+			GeomEdge      *edges;
+			BamgQuadtree  *quadtree;
+			GeomSubDomain *subdomains;
+			Curve         *curves;
+			R2             pmin,pmax;             // domain extrema coordinates
+			double         coefIcoor;             // coef to integer Icoor1;
+			double         MaxCornerAngle;
+
+			//Constructor/Destructors
+			~Geometry(); 
+			Geometry();
+			Geometry(const Geometry & Gh);
+			Geometry(BamgGeom* bamggeom, BamgOpts* bamgopts);
+
+			//Operators
+			const GeomVertex &operator[](long i) const { return vertices[i]; };
+			GeomVertex       &operator[](long i) { return vertices[i];       };
+			const GeomEdge   &operator()(long i) const { return edges[i];    };
+			GeomEdge         &operator()(long  i) { return edges[i];         };
+
+			//Methods
+			void             Echo();
+			I2               R2ToI2(const R2 &P) const;
+			double           MinimalHmin();
+			double           MaximalHmax();
+			void             ReadGeometry(BamgGeom *bamggeom, BamgOpts*bamgopts);
+			void             Init(void);
+			void             PostRead();
+			long             GetId(const GeomVertex &t) const;
+			long             GetId(const GeomVertex *t) const;
+			long             GetId(const GeomEdge &t) const;
+			long             GetId(const GeomEdge *t) const;
+			long             GetId(const Curve *c) const;
+			void             UnMarkEdges();
+			GeomEdge        *ProjectOnCurve(const Edge &,double,BamgVertex &,VertexOnGeom &) const;
+			void             WriteGeometry(BamgGeom *bamggeom, BamgOpts*bamgopts);
+	};
+
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/ListofIntersectionTriangles.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/ListofIntersectionTriangles.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/ListofIntersectionTriangles.cpp	(revision 21239)
@@ -0,0 +1,390 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "./bamgobjects.h"
+#include "../shared/shared.h"
+#include "./det.h"
+
+namespace bamg {
+
+	/*Constructors Destructors*/
+	ListofIntersectionTriangles::ListofIntersectionTriangles(int n,int m)/*{{{*/
+	  : MaxSize(n), Size(0), len(-1),state(-1),lIntTria(new IntersectionTriangles[n]) ,
+	  NbSeg(0), MaxNbSeg(m), lSegsI(new SegInterpolation[m]){
+	  }
+	/*}}}*/
+	ListofIntersectionTriangles::~ListofIntersectionTriangles(){/*{{{*/
+		if (lIntTria) delete [] lIntTria,lIntTria=0;
+		if (lSegsI) delete [] lSegsI,lSegsI=0;
+	} 
+	/*}}}*/
+
+	/*Methods*/
+	void ListofIntersectionTriangles::Init(void){/*{{{*/
+		state=0;
+		len=0;
+		Size=0;
+	}
+	/*}}}*/
+	double  ListofIntersectionTriangles::Length(){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Length)*/
+
+		// computation of the length
+
+		// check Size
+		if (Size<=0){
+			_error_("Size<=0");
+		}
+
+		Metric Mx,My;
+		int ii,jj;
+		R2 x,y,xy;
+
+		SegInterpolation* SegI=lSegsI;
+		lSegsI[NbSeg].last=Size;
+		int EndSeg=Size;
+
+		y = lIntTria[0].x;
+		double sxy, s = 0;
+		lIntTria[0].s =0;
+		SegI->lBegin=s;
+
+		for (jj=0,ii=1;ii<Size;jj=ii++) {  
+			// seg jj,ii
+			x  = y;
+			y  = lIntTria[ii].x;
+			xy = y-x;
+			Mx = lIntTria[ii].m;
+			My = lIntTria[jj].m;
+			sxy= LengthInterpole(Mx,My,xy);
+			s += sxy;
+			lIntTria[ii].s = s;
+			if (ii == EndSeg){
+				SegI->lEnd=s;
+				SegI++;
+				EndSeg=SegI->last;
+				SegI->lBegin=s;
+			}
+		}
+		len = s;
+		SegI->lEnd=s;
+
+		return s;
+	}
+	/*}}}*/
+	int  ListofIntersectionTriangles::NewItem(Triangle * tt,double d0,double d1,double d2) { /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/NewItem)*/
+
+		int n;
+		R2 x(0,0);
+		if ( d0) x =      (*tt)[0].r * d0;
+		if ( d1) x = x +  (*tt)[1].r * d1;
+		if ( d2) x = x +  (*tt)[2].r * d2;
+		// newer add same point 
+		if(!Size ||  Norme2_2(lIntTria[Size-1].x-x)) {
+			if (Size==MaxSize) ReShape();
+			lIntTria[Size].t=tt;
+			lIntTria[Size].bary[0]=d0;
+			lIntTria[Size].bary[1]=d1;
+			lIntTria[Size].bary[2]=d2;
+			lIntTria[Size].x = x;
+			Metric m0,m1,m2;
+			BamgVertex * v;
+			if ((v=(*tt)(0))) m0    = v->m;
+			if ((v=(*tt)(1))) m1    = v->m;
+			if ((v=(*tt)(2))) m2    = v->m;
+			lIntTria[Size].m =  Metric(lIntTria[Size].bary,m0,m1,m2);
+			n=Size++;}
+		else n=Size-1;
+		return n;
+	}
+	/*}}}*/
+	int ListofIntersectionTriangles::NewItem(R2 A,const Metric & mm) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/NewItem)*/
+
+		int n;
+		if(!Size ||  Norme2_2(lIntTria[Size-1].x-A)) {
+			if (Size==MaxSize) ReShape();
+			lIntTria[Size].t=0;
+			lIntTria[Size].x=A;
+			lIntTria[Size].m=mm;
+			n=Size++;
+		}
+		else  n=Size-1;
+		return  n; 
+	}
+	/*}}}*/
+	long ListofIntersectionTriangles::NewPoints(BamgVertex* vertices,long &nbv,long maxnbv){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/NewPoints)*/
+
+		//If length<1.5, do nothing
+		double s=Length();
+		if (s<1.5) return 0;
+
+		const long nbvold=nbv;
+		int ii = 1 ;
+		R2 y,x;
+		Metric My,Mx ;
+		double sx =0,sy;
+		int nbi=Max(2,(int) (s+0.5));
+		double sint=s/nbi;
+		double si  =sint;
+
+		int EndSeg=Size;
+		SegInterpolation* SegI=NULL;
+		if (NbSeg) SegI=lSegsI,EndSeg=SegI->last;
+
+		for (int k=1;k<nbi;k++){
+			while ((ii < Size) && ( lIntTria[ii].s <= si )){
+				if (ii++ == EndSeg){
+					SegI++;
+					EndSeg=SegI->last;
+				}
+			}
+
+			int ii1=ii-1;
+			x  =lIntTria[ii1].x;
+			sx =lIntTria[ii1].s;
+			Metric Mx=lIntTria[ii1].m;
+			y  =lIntTria[ii].x;
+			sy =lIntTria[ii].s;
+			Metric My=lIntTria[ii].m;
+			double lxy = sy-sx;
+			double cy = abscisseInterpole(Mx,My,y-x,(si-sx)/lxy);
+
+			R2 C;
+			double cx = 1-cy;
+			C = SegI ? SegI->F(si): x * cx + y *cy;
+			//C.Echo();
+			//x.Echo();
+			//y.Echo();
+			//_printf_("cx = " << cx << ", cy=" << cy << "\n");
+
+			si += sint;
+			if ( nbv<maxnbv) {
+				vertices[nbv].r = C;
+				vertices[nbv++].m = Metric(cx,lIntTria[ii-1].m,cy,lIntTria[ii].m);
+			}
+			else return nbv-nbvold;
+		  }
+		return nbv-nbvold;
+	}
+	/*}}}*/
+	void ListofIntersectionTriangles::ReShape(){ /*{{{*/
+
+		int newsize = MaxSize*2;
+		IntersectionTriangles* nw = new IntersectionTriangles[newsize];
+		_assert_(nw);
+
+		// recopy
+		for (int i=0;i<MaxSize;i++) nw[i] = lIntTria[i];       
+		long int verbosity=0;
+		if(verbosity>3) _printf_("   ListofIntersectionTriangles  ReShape Maxsize " << MaxSize << " -> " << MaxNbSeg << "\n");
+		MaxSize = newsize; 
+		delete [] lIntTria;// remove old
+		lIntTria = nw; // copy pointer
+	}
+	/*}}}*/
+	void ListofIntersectionTriangles::SplitEdge(const Mesh & Bh, const R2 &A,const R2  &B,int nbegin) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/ListofIntersectionTriangles)*/
+
+		Triangle *tbegin, *t;
+
+		Icoor2 deta[3], deti,detj;
+		double ba[3];
+		int ifirst=-1,ilast;
+		int i0,i1,i2;
+		int ocut,i,j,k=-1;
+		//  int OnAVertices =0;
+		Icoor2 dt[3];
+		I2 a = Bh.R2ToI2(A) ,b= Bh.R2ToI2(B);// compute  the Icoor a,b
+		I2 vi,vj;  
+		int iedge =-1;// not a edge
+
+		if(nbegin)  {// optimisation 
+			// we suppose  knowing the starting  triangle
+			t=tbegin=lIntTria[ilast=(Size-1)].t;
+			if (tbegin->det>=0) 
+			 ifirst = ilast;}  
+		else {// not optimisation 
+			Init();
+			t=tbegin = Bh.TriangleFindFromCoord(a,deta);
+			if( t->det>=0)
+			 ilast=NewItem(t,double(deta[0])/t->det,double(deta[1])/t->det,double(deta[2])/t->det);
+			else 
+			  {// find the nearest boundary edge  of the vertex A
+				// find a edge or such normal projection a the edge IJ is on the edge
+				//   <=> IJ.IA >=0 && IJ.AJ >=0
+				ilast=ifirst;
+				double ba,bb;
+				AdjacentTriangle edge=CloseBoundaryEdge(a,t,ba,bb);
+				BamgVertex & v0 = *edge.EdgeVertex(0), & v1 = *edge.EdgeVertex(1);
+				NewItem(A,Metric(ba,v0,bb,v1));
+				t=edge;
+				// test if the point b is in the same side
+				if (det(v0.i,v1.i,b)>=0) {
+					AdjacentTriangle edge=CloseBoundaryEdge(a,t,ba,bb);
+					BamgVertex & v0 = *edge.EdgeVertex(0), & v1 = *edge.EdgeVertex(1);
+					NewItem(A,Metric(ba,v0,bb,v1));
+					return;
+				}
+			  } // find the nearest boundary edge  of the vertex A
+		} // end not optimisation 
+		if (t->det<0) {  // outside departure
+			while (t->det <0) { // intersection boundary edge and a,b,
+				k=(*t)(0) ?  ((  (*t)(1) ? ( (*t)(2) ? -1 : 2) : 1  )) : 0;
+				if (k<0){
+					_error_("k<0");
+				}
+				ocut = OppositeEdge[k];
+				i=VerticesOfTriangularEdge[ocut][0];
+				j=VerticesOfTriangularEdge[ocut][1];
+				vi=(*t)[i];
+				vj=(*t)[j];
+				deti = bamg::det(a,b,vi);
+				detj = bamg::det(a,b,vj);
+				if (deti>0) // go to  i direction on gamma
+				 ocut = PreviousEdge[ocut];      
+				else if (detj<=0) // go to j direction on gamma
+				 ocut = NextEdge[ocut];         
+				AdjacentTriangle tadj =t->Adj(ocut);
+				t = tadj;
+				iedge= tadj; 
+				if (t == tbegin) { // 
+					double ba,bb;
+					AdjacentTriangle edge=CloseBoundaryEdge(a,t,ba,bb);
+					BamgVertex & v0 = *edge.EdgeVertex(0), & v1 = *edge.EdgeVertex(1);
+					NewItem(A,Metric(ba,v0,bb,v1));
+					return;
+				}
+			} //  end while (t->det <0)
+			// theoriticaly we have: deti =<0 and detj>0
+
+			// computation of barycentric coor
+			// test if the point b is on size on t
+			// we revert vi,vj because vi,vj is def in Adj triangle
+			if ( det(vi,vj,b)>=0) {
+				t=tbegin;
+				double ba,bb;
+				AdjacentTriangle edge=CloseBoundaryEdge(b,t,ba,bb);
+				NewItem(B,Metric(ba,*edge.EdgeVertex(0),bb,*edge.EdgeVertex(1)));
+				return;
+			}
+			else
+			  {
+				k = OppositeVertex[iedge];
+				i=VerticesOfTriangularEdge[iedge][0];
+				j=VerticesOfTriangularEdge[iedge][1];
+				double dij = detj-deti;
+				if (i+j+k != 0 + 1 +2){
+					_error_("i+j+k != 0 + 1 +2");
+				}
+				ba[j] =  detj/dij;
+				ba[i] = -deti/dij;
+				ba[k] = 0;
+				ilast=NewItem(t,ba[0],ba[1],ba[2]); }
+		}  //  outside departure
+
+		// recherche the intersection of [a,b] with Bh Mesh.
+		// we know  a triangle ta contening the vertex a
+		// we have 2 case for intersection [a,b] with a edge [A,B] of Bh
+		// 1) the intersection point is in ]A,B[
+		// 2)                        is A or B
+		// first version --- 
+		for (;;) {
+			//    t->Draw();
+			if (iedge < 0) {
+				i0 =0;i1=1;i2=2;
+				dt[0] =bamg::det(a,b,(*t)[0]);
+				dt[1] =bamg::det(a,b,(*t)[1]);
+				dt[2] =bamg::det(a,b,(*t)[2]);}
+			else {
+				i2 = iedge;
+				i0 = NextEdge[i2];
+				i1 = NextEdge[i0]; 
+				dt[VerticesOfTriangularEdge[iedge][0]] = detj;// we revert i,j because
+				dt[VerticesOfTriangularEdge[iedge][1]] = deti;// we take the Triangle by the other side
+				dt[iedge] = det(a,b,(*t)[OppositeVertex[iedge]]);}
+
+				// so we have just to see the transition from - to + of the det0..2 on edge of t
+				// because we are going from a to b
+				if       ((dt[i=VerticesOfTriangularEdge[i0][0]] <  0) &&
+							( dt[j=VerticesOfTriangularEdge[i0][1]] > 0))
+				 ocut =i0;
+				else  if ((dt[i=VerticesOfTriangularEdge[i1][0]] <  0) &&
+							(dt[j=VerticesOfTriangularEdge[i1][1]] >  0))
+				 ocut =i1;
+				else  if ((dt[i=VerticesOfTriangularEdge[i2][0]] <  0) && 
+							(dt[j=VerticesOfTriangularEdge[i2][1]] >  0))
+				 ocut =i2;
+				else if   ((dt[i=VerticesOfTriangularEdge[i0][0]] == 0) &&
+							( dt[j=VerticesOfTriangularEdge[i0][1]] >  0))
+				 ocut =i0;
+				else  if ((dt[i=VerticesOfTriangularEdge[i1][0]] == 0) &&
+							(dt[j=VerticesOfTriangularEdge[i1][1]] >  0))
+				 ocut =i1;
+				else  if ((dt[i=VerticesOfTriangularEdge[i2][0]] == 0) && 
+							(dt[j=VerticesOfTriangularEdge[i2][1]] >  0))
+				 ocut =i2;
+				else if   ((dt[i=VerticesOfTriangularEdge[i0][0]] <  0) &&
+							( dt[j=VerticesOfTriangularEdge[i0][1]] == 0))
+				 ocut =i0;
+				else  if ((dt[i=VerticesOfTriangularEdge[i1][0]] <  0) &&
+							(dt[j=VerticesOfTriangularEdge[i1][1]] == 0))
+				 ocut =i1;
+				else  if ((dt[i=VerticesOfTriangularEdge[i2][0]] <  0) && 
+							(dt[j=VerticesOfTriangularEdge[i2][1]] == 0))
+				 ocut =i2;
+				else { //  On a edge (2 zero)
+					k =0;
+					if (dt[0]) ocut=0,k++; 
+					if (dt[1]) ocut=1,k++; 
+					if (dt[2]) ocut=2,k++;
+					if(k == 1) {
+						if (dt[ocut] >0) // triangle upper AB
+						 ocut = NextEdge[ocut];
+						i= VerticesOfTriangularEdge[ocut][0];
+						j= VerticesOfTriangularEdge[ocut][1];
+					}
+					else {
+						_error_("Bug Split Edge");
+					}
+				}
+
+				k = OppositeVertex[ocut];
+
+				Icoor2 detbij = bamg::det((*t)[i],(*t)[j],b);
+
+				if (detbij >= 0) { //we find the triangle contening b
+					dt[0]=bamg::det((*t)[1],(*t)[2],b);
+					dt[1]=bamg::det((*t)[2],(*t)[0],b);
+					dt[2]=bamg::det((*t)[0],(*t)[1],b);
+					double dd = t->det;
+					NewItem(t,dt[0]/dd,dt[1]/dd,dt[2]/dd);      
+					return ;}
+				else { // next triangle by  adjacent by edge ocut 
+					deti = dt[i];
+					detj = dt[j];
+					double dij = detj-deti;
+					ba[i] =  detj/dij;
+					ba[j] = -deti/dij;
+					ba[3-i-j ] = 0;
+					ilast=NewItem(t, ba[0],ba[1],ba[2]);      
+
+					AdjacentTriangle ta =t->Adj(ocut);
+					t = ta;
+					iedge= ta; 
+					if (t->det <= 0)  {
+						double ba,bb;
+						AdjacentTriangle edge=CloseBoundaryEdge(b,t,ba,bb);
+						NewItem(B,Metric(ba,*edge.EdgeVertex(0),bb,*edge.EdgeVertex(1)));
+						return;
+					}
+				}// we  go outside of omega 
+		} // for(;;)
+	}
+	/*}}}*/
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/ListofIntersectionTriangles.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/ListofIntersectionTriangles.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/ListofIntersectionTriangles.h	(revision 21239)
@@ -0,0 +1,72 @@
+#ifndef _LISTOFINTERSECTIONTRIANGLES_H_
+#define _LISTOFINTERSECTIONTRIANGLES_H_
+
+#include "./include.h"
+
+namespace bamg {
+
+	class Triangle;
+
+	class ListofIntersectionTriangles {
+
+		class IntersectionTriangles {
+
+			public: 
+				Triangle *t;
+				double    bary[3];   // use if t != 0
+				R2        x;
+				Metric    m;
+				double    s;         // curvilinear coordinate
+				double    sp;        // length of the previous segment in m
+				double    sn;        // length of the next segment in m
+		};
+
+		class SegInterpolation {
+
+			public:
+				GeomEdge *e;
+				double           sBegin  ,sEnd; // abscisse of the seg on edge parameter
+				double           lBegin  ,lEnd; // length abscisse set in ListofIntersectionTriangles::Length
+				int              last;          // last index in ListofIntersectionTriangles for this Sub seg of edge
+
+				//Methods
+				R2 F(double s){ 
+					double c01=lEnd-lBegin, c0=(lEnd-s)/c01, c1=(s-lBegin)/c01;
+					if (lBegin>s || s>lEnd){
+						_error_("lBegin>s || s>lEnd");
+					}
+					return e->F(sBegin*c0+sEnd*c1);
+				}
+		};
+
+		public:
+
+			int                    MaxSize;
+			int                    Size;
+			double                 len;
+			int                    state;
+			IntersectionTriangles *lIntTria;
+			int                    NbSeg;
+			int                    MaxNbSeg;
+			SegInterpolation      *lSegsI;
+
+			//Constructors/Destructors
+			ListofIntersectionTriangles(int n=256,int m=16);
+			~ListofIntersectionTriangles();
+
+			//Operators
+			IntersectionTriangles & operator[](int i) {return lIntTria[i];}
+			operator int&() {return Size;}
+
+			//Methods
+			void   Init();
+			int    NewItem(Triangle *tt,double d0,double d1,double d2);
+			int    NewItem(R2 ,const Metric &);
+			void   SplitEdge(const Mesh &,const R2 &,const R2 &,int nbegin=0);
+			double Length();
+			long   NewPoints(BamgVertex *,long &nbv,long maxnbv);
+			void   ReShape();
+	};
+
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Mesh.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Mesh.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Mesh.cpp	(revision 21239)
@@ -0,0 +1,5081 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "../shared/shared.h"
+#include "./bamgobjects.h"
+#include "./det.h"
+
+namespace bamg {
+
+	static const  Direction NoDirOfSearch=Direction();
+
+	/*Constructors/Destructors*/
+	Mesh::Mesh(BamgGeom* bamggeom,BamgMesh* bamgmesh, BamgOpts* bamgopts):Gh(*(new Geometry())),BTh(*this){ /*{{{*/
+
+		/*Initialize fields*/
+		Init(0);
+
+		/*Read Geometry if provided*/
+		if(bamggeom->Edges) {
+			Gh.ReadGeometry(bamggeom,bamgopts);
+			Gh.PostRead();
+		}
+
+		/*Read background mesh*/
+		ReadMesh(bamgmesh,bamgopts);
+
+		/*Build Geometry if not provided*/
+		if(bamggeom->Edges==NULL) {
+			/*Recreate geometry if needed*/
+			_printf_("WARNING: mesh present but no geometry found. Reconstructing...\n");
+			BuildGeometryFromMesh(bamgopts);
+			Gh.PostRead();
+		}
+
+		/*Set integer coordinates*/
+		SetIntCoor();
+
+		/*Fill holes and generate mesh properties*/
+		ReconstructExistingMesh();
+	}
+	/*}}}*/
+	Mesh::Mesh(int* index,double* x,double* y,int nods,int nels):Gh(*(new Geometry())),BTh(*this){/*{{{*/
+
+		Init(0);
+		ReadMesh(index,x,y,nods,nels);
+		SetIntCoor();
+		ReconstructExistingMesh();
+	}
+	/*}}}*/
+	Mesh::Mesh(double* x,double* y,int nods):Gh(*(new Geometry())),BTh(*this){/*{{{*/
+		Triangulate(x,y,nods);
+	}
+	/*}}}*/
+	Mesh::Mesh(const Mesh & Tho,const int *flag ,const int *bb,BamgOpts* bamgopts) : Gh(*(new Geometry())), BTh(*this) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Triangles)*/
+
+		  int i,k,itadj;
+		  int kt=0;
+		  int * kk    = new int [Tho.nbv];
+		  long * reft = new long[Tho.nbt];
+		  long nbInT =    Tho.TriangleReferenceList(reft);
+		  long * refv = new long[Tho.nbv];
+
+		  for (i=0;i<Tho.nbv;i++)
+			kk[i]=-1;
+		  for (i=0;i<Tho.nbv;i++)
+			refv[i]=0;
+		  int nbNewBedge =0;
+		  //  int nbOldBedge =0;  
+		  for (i=0;i<Tho.nbt;i++)
+			if(  reft[i] >=0 && flag[i]) 
+			  {
+				const Triangle & t = Tho.triangles[i];
+				kt++;
+				kk[Tho.GetId(t[0])]=1;
+				kk[Tho.GetId(t[1])]=1;
+				kk[Tho.GetId(t[2])]=1;
+				itadj=Tho.GetId(t.TriangleAdj(0));
+				if (  reft[itadj] >=0 && !flag[itadj])
+				  { nbNewBedge++;
+					refv[Tho.GetId(t[VerticesOfTriangularEdge[0][0]])]=bb[i];
+					refv[Tho.GetId(t[VerticesOfTriangularEdge[0][1]])]=bb[i];
+				  }
+				itadj=Tho.GetId(t.TriangleAdj(1));
+				if (  reft[itadj] >=0 && !flag[itadj])
+				  { nbNewBedge++;
+					refv[Tho.GetId(t[VerticesOfTriangularEdge[1][0]])]=bb[i];
+					refv[Tho.GetId(t[VerticesOfTriangularEdge[1][1]])]=bb[i];}
+					itadj=Tho.GetId(t.TriangleAdj(2));
+					if (  reft[itadj] >=0 && !flag[itadj])
+					  { nbNewBedge++;
+						refv[Tho.GetId(t[VerticesOfTriangularEdge[2][0]])]=bb[i];
+						refv[Tho.GetId(t[VerticesOfTriangularEdge[2][1]])]=bb[i];}
+			  }
+		  k=0;
+		  for (i=0;i<Tho.nbv;i++){
+			  if (kk[i]>=0) kk[i]=k++;
+			}
+		  _printf_("   number of vertices " << k << ", remove = " << Tho.nbv - k << "\n");
+		  _printf_("   number of triangles " << kt << ", remove = " << nbInT-kt << "\n");
+		  _printf_("   number of New boundary edge " << nbNewBedge << "\n");
+		  long imaxnbv =k;
+		  Init(imaxnbv);
+		  for (i=0;i<Tho.nbv;i++)
+			if (kk[i]>=0) 
+			  {
+				vertices[nbv] = Tho.vertices[i];
+				if (!vertices[nbv].GetReferenceNumber())
+				 vertices[nbv].ReferenceNumber = refv[i];
+				nbv++;
+			  }
+		  if (imaxnbv != nbv){
+			  delete [] kk;
+			  delete [] refv;
+			  _error_("imaxnbv != nbv");
+		  }
+		  for (i=0;i<Tho.nbt;i++)
+			if(reft[i] >=0 && flag[i]){
+				const Triangle & t = Tho.triangles[i];
+				int i0 = Tho.GetId(t[0]);
+				int i1 = Tho.GetId(t[1]);
+				int i2 = Tho.GetId(t[2]);
+				if(i0<0 || i1<0 || i2<0){
+					delete [] refv;
+					_error_("i0<0 || i1<0 || i2< 0");
+				}
+				if(i0>=Tho.nbv || i1>=Tho.nbv || i2>=Tho.nbv){
+					delete [] refv;
+					_error_("i0>=Tho.nbv || i1>=Tho.nbv || i2>=Tho.nbv");
+				}
+				triangles[nbt] = Triangle(this,kk[i0],kk[i1],kk[i2]);
+				triangles[nbt].color = Tho.subdomains[reft[i]].ReferenceNumber; 
+				nbt++;           
+			  }
+		  if (nbt==0 && nbv==0) {
+			  _error_("All triangles have been removed");
+		  }
+		  delete [] kk;
+		  delete [] reft;
+		  delete [] refv;
+		  BuildGeometryFromMesh(bamgopts);
+		  Gh.PostRead(); 
+		  SetIntCoor();
+		  ReconstructExistingMesh();
+
+		  /*Final checks*/
+		  _assert_(kt==nbt);
+		  _assert_(nbsubdomains);
+		  _assert_(subdomains[0].head && subdomains[0].head->link); 
+	  }
+	/*}}}*/
+	Mesh::Mesh(Mesh & Th,Geometry * pGh,Mesh * pBth,long maxnbv_in)/*{{{*/
+	  : Gh(*(pGh?pGh:&Th.Gh)), BTh(*(pBth?pBth:this)) {
+		  /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Triangles)*/
+		  Gh.NbRef++;
+		  maxnbv_in = Max(maxnbv_in,Th.nbv); 
+		  long i;
+		  // do all the allocation to be sure all the pointer existe
+
+		  Init(maxnbv_in);// to make the allocation 
+		  // copy of triangles
+		  nbv = Th.nbv;
+		  nbt = Th.nbt;
+		  nbe = Th.nbe;
+		  nbsubdomains = Th.nbsubdomains;
+		  nbtout = Th.nbtout;
+		  nbq =  Th.nbq ;
+		  NbVerticesOnGeomVertex = Th.NbVerticesOnGeomVertex;
+		  if(NbVerticesOnGeomVertex)
+			VerticesOnGeomVertex = new VertexOnGeom[NbVerticesOnGeomVertex];
+		  NbVerticesOnGeomEdge = Th.NbVerticesOnGeomEdge;
+		  if (NbVerticesOnGeomEdge)
+			VerticesOnGeomEdge = new VertexOnGeom[NbVerticesOnGeomEdge] ;
+		  if (& BTh == & Th.BTh){ // same background 
+			  BTh.NbRef++;
+			  NbVertexOnBThVertex = Th.NbVertexOnBThVertex;
+			  if(NbVertexOnBThVertex)
+				VertexOnBThVertex = new VertexOnVertex[NbVertexOnBThVertex];
+			  NbVertexOnBThEdge = Th.NbVertexOnBThEdge;
+			  if(NbVertexOnBThEdge)
+				VertexOnBThEdge = new VertexOnEdge[NbVertexOnBThEdge];
+			 }
+		  else { // no add on background mesh 
+			  BTh.NbRef++;
+			  NbVertexOnBThVertex=0;
+			  VertexOnBThVertex=0;
+			  NbVertexOnBThEdge=0;
+			  VertexOnBThEdge=0;
+			 }
+
+		  if(nbe)
+			edges = new Edge[nbe];
+		  if(nbsubdomains)
+			subdomains = new SubDomain[nbsubdomains];
+		  pmin = Th.pmin;
+		  pmax = Th.pmax;
+		  coefIcoor = Th.coefIcoor;
+		  for(i=0;i<nbt;i++)
+			triangles[i].Set(Th.triangles[i],Th,*this);
+		  for(i=0;i<nbe;i++)
+			edges[i].Set(Th,i,*this);
+		  for(i=0;i<nbv;i++)
+			vertices[i].Set(Th.vertices[i],Th,*this);
+		  for(i=0;i<nbsubdomains;i++)  
+			subdomains[i].Set(Th,i,*this);
+		  for (i=0;i<NbVerticesOnGeomVertex;i++)
+			VerticesOnGeomVertex[i].Set(Th.VerticesOnGeomVertex[i],Th,*this);
+		  for (i=0;i<NbVerticesOnGeomEdge;i++)
+			VerticesOnGeomEdge[i].Set(Th.VerticesOnGeomEdge[i],Th,*this);
+		  quadtree=0;
+
+	  }
+	/*}}}*/
+	Mesh::Mesh(long imaxnbv,Mesh & BT,BamgOpts* bamgopts,int keepBackVertices) :Gh(BT.Gh),BTh(BT) {/*{{{*/
+		this->Init(imaxnbv);
+		TriangulateFromGeom1(bamgopts,keepBackVertices);
+	}
+	/*}}}*/
+	Mesh::Mesh(long imaxnbv,Geometry & G,BamgOpts* bamgopts):Gh(G),BTh(*this){/*{{{*/
+		Init(imaxnbv);
+		TriangulateFromGeom0(bamgopts);
+	}
+	/*}}}*/
+	Mesh::~Mesh() {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Triangles)*/
+
+		if(vertices)             delete [] vertices;
+		if(edges)                delete [] edges;
+		if(triangles)            delete [] triangles;
+		if(quadtree)             delete    quadtree;
+		if(orderedvertices)      delete [] orderedvertices;
+		if(subdomains)           delete []  subdomains;
+		if(VerticesOnGeomEdge)   delete [] VerticesOnGeomEdge;
+		if(VerticesOnGeomVertex) delete [] VerticesOnGeomVertex;
+		if(VertexOnBThVertex)    delete [] VertexOnBThVertex;
+		if(VertexOnBThEdge)      delete [] VertexOnBThEdge;
+
+		if (Gh.NbRef>0) Gh.NbRef--;
+		else if (Gh.NbRef==0) delete &Gh;
+		if(&BTh != this){
+			if (BTh.NbRef>0) BTh.NbRef--;
+			else if (BTh.NbRef==0) delete &BTh;
+		}
+		Init(0); // set all to zero 
+	}
+	/*}}}*/
+
+	/*IO*/
+	void Mesh::ReadMesh(int* index,double* x,double* y,int nods,int nels){/*{{{*/
+
+		long i1,i2,i3;
+		long i;
+		Metric M1(1);
+		int verbose=0;
+		bool* nodeflags=NULL;
+
+		nbv=nods;
+		maxnbv=nbv;
+		nbt=nels;
+
+		//Vertices
+		if (verbose) _printf_("Reading vertices (" << nbv << ")\n");
+		vertices=xNew<BamgVertex>(nbv);
+		orderedvertices=xNew<BamgVertex*>(nbv);
+		for (i=0;i<nbv;i++){
+			vertices[i].r.x=x[i];
+			vertices[i].r.y=y[i];
+			vertices[i].ReferenceNumber=1;
+			vertices[i].DirOfSearch =NoDirOfSearch;
+			vertices[i].m=M1;
+			vertices[i].color=0;
+		}
+		maxnbt=2*maxnbv-2; // for filling The Holes and quadrilaterals 
+
+		//Triangles
+		if (verbose) _printf_("Reading triangles (" << nbt << ")\n");
+		triangles =new Triangle[maxnbt]; //we cannot allocate only nbt triangles since 
+		nodeflags=xNew<bool>(nbv);
+		for(i=0;i<nbv;i++) nodeflags[i]=false;
+		//other triangles will be added for each edge
+		for (i=0;i<nbt;i++){
+			Triangle & t = triangles[i];
+			i1=(long)index[i*3+0]-1; //for C indexing
+			i2=(long)index[i*3+1]-1; //for C indexing
+			i3=(long)index[i*3+2]-1; //for C indexing
+			t=Triangle(this,i1,i2,i3);
+			t.color=1;
+			nodeflags[i1]=nodeflags[i2]=nodeflags[i3]=true;
+		}
+
+		/*Recreate geometry: */
+		if (verbose) _printf_("Building Geometry\n");
+		BuildGeometryFromMesh();
+		if (verbose) _printf_("Completing geometry\n");
+		Gh.PostRead();
+
+		/*Check that there is no orphan*/
+		bool isorphan=false;
+		for(i=0;i<nbv;i++){
+			if(!nodeflags[i]){
+				_printf_("Vertex " << i+1 << " does not belong to any element\n");
+				isorphan=true;
+			}
+		}
+		if(isorphan) _error_("Orphan found in mesh, see ids above");
+
+		/*Clean up*/
+		xDelete<bool>(nodeflags);
+	}
+	/*}}}*/
+	void Mesh::ReadMesh(BamgMesh* bamgmesh, BamgOpts* bamgopts){/*{{{*/
+
+		int    verbose;
+		double Hmin = HUGE_VAL;    // the infinie value
+		long   i1,i2,i3;
+		long   i,j;
+		Metric M1(1);
+
+		verbose=bamgopts->verbose;
+
+		nbv=bamgmesh->VerticesSize[0];
+		maxnbv=nbv;
+		nbt=bamgmesh->TrianglesSize[0];
+
+		//Vertices
+		if(bamgmesh->Vertices){
+			if(verbose>5) _printf_("      processing Vertices\n");
+
+			vertices=xNew<BamgVertex>(nbv);
+			orderedvertices=xNew<BamgVertex*>(nbv);
+
+			for (i=0;i<nbv;i++){
+				vertices[i].r.x=bamgmesh->Vertices[i*3+0];
+				vertices[i].r.y=bamgmesh->Vertices[i*3+1];
+				vertices[i].ReferenceNumber=(long)bamgmesh->Vertices[i*3+2];
+				vertices[i].DirOfSearch =NoDirOfSearch;
+				vertices[i].m=M1;
+				vertices[i].color=0;
+			}
+			maxnbt=2*maxnbv-2; // for filling The Holes and quadrilaterals 
+		}
+		else{
+			if(verbose>5) _error_("no Vertices found in the initial mesh");
+		}
+
+		//Triangles
+		if(bamgmesh->Triangles){
+			if(verbose>5) _printf_("      processing Triangles\n");
+			triangles =new Triangle[maxnbt]; //we cannot allocate only nbt triangles since 
+			//other triangles will be added for each edge
+			for (i=0;i<nbt;i++){
+				Triangle &t=triangles[i];
+				i1=(long)bamgmesh->Triangles[i*4+0]-1; //for C indexing
+				i2=(long)bamgmesh->Triangles[i*4+1]-1; //for C indexing
+				i3=(long)bamgmesh->Triangles[i*4+2]-1; //for C indexing
+				t=Triangle(this,i1,i2,i3);
+				t.color=(long)bamgmesh->Triangles[i*4+3];
+			}
+		}
+		else{
+			if(verbose>5) _error_("no Triangles found in the initial mesh");
+		}
+
+		//Quadrilaterals
+		if(bamgmesh->Quadrilaterals){
+			if(verbose>5) _printf_("      processing Quadrilaterals\n");
+			long i1,i2,i3,i4;
+			triangles =new Triangle[nbt];
+			for (i=0;i<bamgmesh->QuadrilateralsSize[0];i++){
+				//divide the quad into two triangles
+				Triangle & t1 = triangles[2*i];
+				Triangle & t2 = triangles[2*i+1];
+				i1=(long)bamgmesh->Quadrilaterals[i*5+0]-1; //for C indexing
+				i2=(long)bamgmesh->Quadrilaterals[i*5+1]-1; //for C indexing
+				i3=(long)bamgmesh->Quadrilaterals[i*5+2]-1; //for C indexing
+				i4=(long)bamgmesh->Quadrilaterals[i*5+3]-1; //for C indexing
+				t1=Triangle(this,i1,i2,i3);
+				t2=Triangle(this,i3,i4,i1);
+				t1.color=(long)bamgmesh->Quadrilaterals[i*5+4];
+				t2.color=(long)bamgmesh->Quadrilaterals[i*5+4];
+				t1.SetHidden(OppositeEdge[1]); // two times  because the adj was not created 
+				t2.SetHidden(OppositeEdge[1]); 
+			}
+		}
+
+		//VerticesOnGeomEdge
+		if(bamgmesh->VerticesOnGeomEdge){
+			if(verbose>5) _printf_("      processing VerticesOnGeomEdge\n");
+			NbVerticesOnGeomEdge=bamgmesh->VerticesOnGeomEdgeSize[0];
+			VerticesOnGeomEdge= new  VertexOnGeom[NbVerticesOnGeomEdge] ;
+			for (i=0;i<NbVerticesOnGeomEdge;i++){
+				long  i1,i2;
+				double s;
+				i1=(long)  bamgmesh->VerticesOnGeomEdge[i*3+0]-1; //for C indexing
+				i2=(long)  bamgmesh->VerticesOnGeomEdge[i*3+1]-1; //for C indexing
+				s =(double)bamgmesh->VerticesOnGeomEdge[i*3+2];
+				VerticesOnGeomEdge[i]=VertexOnGeom(vertices[i1],Gh.edges[i2],s);
+			}
+		}
+
+		//VerticesOnGeomVertex
+		if(bamgmesh->VerticesOnGeomVertexSize[0]){
+			if(verbose>5) _printf_("      processing VerticesOnGeomVertex\n");
+			NbVerticesOnGeomVertex=bamgmesh->VerticesOnGeomVertexSize[0];
+			VerticesOnGeomVertex  = new  VertexOnGeom[NbVerticesOnGeomVertex] ;
+			for (i=0;i<NbVerticesOnGeomVertex;i++){
+				long  i1,i2;
+				i1=(long)bamgmesh->VerticesOnGeomVertex[i*2+0]-1; //for C indexing
+				i2=(long)bamgmesh->VerticesOnGeomVertex[i*2+1]-1; //for C indexing
+				VerticesOnGeomVertex[i]=VertexOnGeom(vertices[i1],Gh.vertices[i2]);
+			}
+		}
+
+		//Edges
+		if (bamgmesh->Edges){
+			int i1,i2;
+			double* len=NULL;
+
+			if(verbose>5) _printf_("      processing Edges\n");
+			nbe=bamgmesh->EdgesSize[0];
+			edges= new Edge[nbe];
+			//initialize length of each edge (used to provided metric)
+			len= new double[nbv];
+			for(i=0;i<nbv;i++) len[i]=0;
+
+			for (i=0;i<nbe;i++){
+				i1=(int)bamgmesh->Edges[i*3+0]-1; //-1 for C indexing
+				i2=(int)bamgmesh->Edges[i*3+1]-1; //-1 for C indexing
+				edges[i].ReferenceNumber=(long)bamgmesh->Edges[i*3+2];
+				edges[i].v[0]= vertices +i1;
+				edges[i].v[1]= vertices +i2;
+				edges[i].adj[0]=NULL;
+				edges[i].adj[1]=NULL;
+				R2 x12=vertices[i2].r-vertices[i1].r;
+				double l12=sqrt((x12,x12));
+
+				//prepare metric
+				vertices[i1].color++;
+				vertices[i2].color++;
+				len[i1]+=l12;
+				len[i2]+=l12;
+				Hmin = Min(Hmin,l12);
+			}
+
+			// definition  the default of the given mesh size 
+			for (i=0;i<nbv;i++){
+				if (vertices[i].color>0) 
+				 vertices[i].m=Metric(len[i]/(double)vertices[i].color);
+				else 
+				 vertices[i].m=Metric(Hmin);
+			}
+			delete [] len;
+
+			// construction of edges[].adj 
+			for (i=0;i<nbv;i++){ 
+				vertices[i].color=(vertices[i].color ==2) ?-1:-2;
+			}
+			for (i=0;i<nbe;i++){
+				for (j=0;j<2;j++) { 
+					BamgVertex *v=edges[i].v[j];
+					long i0=v->color,j0;
+					if(i0==-1){
+						v->color=i*2+j;
+					}
+					else if (i0>=0) {// i and i0 edge are adjacent by the vertex v
+						j0 = i0%2;
+						i0 = i0/2;
+						_assert_(v==edges[i0 ].v[j0]);
+						edges[i ].adj[j ] =edges +i0;
+						edges[i0].adj[j0] =edges +i ;
+						v->color = -3;
+					}
+				}
+			}
+		}
+
+		//EdgeOnGeomEdge
+		if(bamgmesh->EdgesOnGeomEdge){
+			if(verbose>5) _printf_("      processing EdgesOnGeomEdge\n");
+			int i1,i2,i,j;
+			i2=bamgmesh->EdgesOnGeomEdgeSize[0];
+			for (i1=0;i1<i2;i1++) {
+				i=(int)bamgmesh->EdgesOnGeomEdge[i1*2+0]-1; //C indexing
+				j=(int)bamgmesh->EdgesOnGeomEdge[i1*2+1]-1; //C indexing
+				//Check value
+				if(!(i>=0 && j>=0 && i<nbe && j<Gh.nbe)) {
+					_error_("ReadMesh error: EdgesOnGeomEdge edge provided (line " << i1+1 << ": [" << i+1 << " " << j+1 << "]) is incorrect (must be positive, [0<i<nbe=" << nbe << " 0<j<Gh.nbe=" << Gh.nbe << "]");
+				}
+				edges[i].GeomEdgeHook=Gh.edges+j;
+			}
+		}
+
+		//SubDomain
+		if(bamgmesh->SubDomains){
+			long i3,head,direction;
+			if(verbose>5) _printf_("      processing SubDomains\n");
+			nbsubdomains=bamgmesh->SubDomainsSize[0];
+			subdomains = new SubDomain [ nbsubdomains ];
+			for (i=0;i<nbsubdomains;i++) {
+				i3  =(int)bamgmesh->SubDomains[i*3+0];
+				head=(int)bamgmesh->SubDomains[i*3+1]-1;//C indexing
+				direction=(int)bamgmesh->SubDomains[i*3+2];
+				if (i3!=3) _error_("Bad Subdomain definition: first number should be 3");
+				if (head<0 || head>=nbt) _error_("Bad Subdomain definition: head should in [1 " << nbt << "] (triangle number)");
+				subdomains[i].head = triangles+head;
+				subdomains[i].direction = direction;
+				subdomains[i].ReferenceNumber = i3;
+			}
+		}
+
+	}
+	/*}}}*/
+	void Mesh::WriteMesh(BamgMesh* bamgmesh,BamgOpts* bamgopts){/*{{{*/
+
+		/*Intermediary*/
+		int i,j,k,num,i1,i2;
+		long n;
+		int* head_1=NULL;
+		int* next_1=NULL;
+		int* connectivitysize_1=NULL;
+		int  connectivitymax_1=0;
+
+		/*Get options*/
+		int verbose=bamgopts->verbose;
+
+		/*Build reft that holds the number the subdomain number of each triangle, and the real numbering of the elements*/
+		long* reft = new long[nbt];
+		long* numt = new long[nbt];
+		long nbInT = TriangleReferenceList(reft);
+		TriangleIntNumbering(numt);
+
+		/*Chaining algorithm used to generate connectivity tables and other outputs*/
+
+		//Memory Allocation
+		head_1=xNew<int>(nbv);
+		next_1=xNew<int>(3*nbt);
+		connectivitysize_1=xNew<int>(nbv);
+
+		//Initialization
+		for (i=0;i<nbv;i++) head_1[i]=-1;
+		for (i=0;i<nbv;i++) connectivitysize_1[i]=0;
+		k=0;
+		//Chains generation
+		for (i=0;i<nbt;i++) {
+			//Do not take into account outside triangles (reft<0)
+			if (reft[i]>=0){
+				for (j=0;j<3;j++){
+					int v=GetId(triangles[i][j]); //jth vertex of the ith triangle
+					if (k>3*nbt-1 || k<0) _error_("k = " << k << ", nbt = " << nbt);
+					next_1[k]=head_1[v];
+					if (v>nbv-1 || v<0)   _error_("v = " << v << ", nbv = " << nbv);
+					head_1[v]=k++;
+					connectivitysize_1[v]+=1;
+				}
+			}
+		}
+		//Get maximum connectivity
+		connectivitymax_1=0;
+		for (i=0;i<nbv;i++){
+			if (connectivitysize_1[i]>connectivitymax_1) connectivitymax_1=connectivitysize_1[i];
+		}
+
+		/*OK, now build outputs*/
+
+		/*Vertices*/
+		if(verbose>5) _printf_("      writing Vertices\n");
+		bamgmesh->VerticesSize[0]=nbv;
+		bamgmesh->VerticesSize[1]=3;
+		if(nbv){
+			bamgmesh->Vertices=xNew<double>(3*nbv);
+			bamgmesh->PreviousNumbering=xNew<double>(nbv);
+			for (i=0;i<nbv;i++){
+				bamgmesh->Vertices[i*3+0]=vertices[i].r.x;
+				bamgmesh->Vertices[i*3+1]=vertices[i].r.y;
+				bamgmesh->Vertices[i*3+2]=vertices[i].GetReferenceNumber();
+				bamgmesh->PreviousNumbering[i]=vertices[i].PreviousNumber;
+			}
+		}
+
+		/*Edges*/
+		if(verbose>5) _printf_("      writing Edges\n");
+		bamgmesh->EdgesSize[0]=nbe;
+		bamgmesh->EdgesSize[1]=3;
+		int NumIssmSegments=0;
+		if (nbe){
+			bamgmesh->Edges=xNew<double>(3*nbe);
+			for (i=0;i<nbe;i++){
+				bamgmesh->Edges[i*3+0]=GetId(edges[i][0])+1; //back to M indexing
+				bamgmesh->Edges[i*3+1]=GetId(edges[i][1])+1; //back to M indexing
+				bamgmesh->Edges[i*3+2]=edges[i].ReferenceNumber;
+				if(edges[i].GeomEdgeHook){
+					NumIssmSegments++;
+				}
+			}
+		}
+
+		/*Element edges*/
+		if(verbose>5) _printf_("      writing element edges\n");
+		SetOfEdges4* edge4=new SetOfEdges4(nbt*3,nbv);
+		double* elemedge=NULL;
+		elemedge=xNew<double>(3*nbt);
+		for (i=0;i<3*nbt;i++) elemedge[i]=-2.;//will become -1
+		k=0;
+		for (i=0;i<nbt;i++){
+			//Do not take into account outside triangles (reft<0)
+			if (reft[i]>=0){
+				for  (j=0;j<3;j++) {
+					i1=GetId(triangles[i][VerticesOfTriangularEdge[j][0]]);
+					i2=GetId(triangles[i][VerticesOfTriangularEdge[j][1]]);
+					n =edge4->SortAndFind(i1,i2);
+					if (n==-1){
+						//first time
+						n=edge4->SortAndAdd(i1,i2);
+						elemedge[n*2+0]=double(k);
+					}
+					else{
+						//second time
+						elemedge[n*2+1]=double(k);
+					}
+				}
+				k++;
+			}
+		}
+		bamgmesh->IssmEdgesSize[0]=edge4->nb();
+		bamgmesh->IssmEdgesSize[1]=4;
+		bamgmesh->IssmEdges=xNew<double>(4*edge4->nb());
+		for (i=0;i<edge4->nb();i++){
+			/*Invert first two vertices if necessary*/
+			bool found=false;
+			for (j=0;j<3;j++){
+				if (triangles[(int)elemedge[2*i+0]](j)==vertices+edge4->i(i)){
+					if (triangles[(int)elemedge[2*i+0]]((j+1)%3)==vertices+edge4->j(i)){
+						//trigonometric direction
+						bamgmesh->IssmEdges[i*4+0]=edge4->i(i)+1;// back to M indexing
+						bamgmesh->IssmEdges[i*4+1]=edge4->j(i)+1;// back to M indexing
+					}
+					else{
+						bamgmesh->IssmEdges[i*4+0]=edge4->j(i)+1;// back to M indexing
+						bamgmesh->IssmEdges[i*4+1]=edge4->i(i)+1;// back to M indexing
+					}
+					found=true;
+					break;
+				}
+			}
+			_assert_(found);
+			bamgmesh->IssmEdges[i*4+2]=elemedge[2*i+0]+1; // back to M indexing
+			bamgmesh->IssmEdges[i*4+3]=elemedge[2*i+1]+1; // back to M indexing
+		}
+		//clean up
+		delete edge4;
+		xDelete<double>(elemedge);
+
+		/*IssmSegments*/
+		if(verbose>5) _printf_("      writing IssmSegments\n");
+		bamgmesh->IssmSegmentsSize[0]=NumIssmSegments;
+		bamgmesh->IssmSegmentsSize[1]=4;
+		bamgmesh->IssmSegments=xNew<double>(4*NumIssmSegments);
+		num=0;
+		for (i=0;i<nbe;i++){
+			if(edges[i].GeomEdgeHook){
+				//build segment
+				int i1=GetId(edges[i][0]);
+				int i2=GetId(edges[i][1]);
+				bool stop=false;
+				for(j=head_1[i1];j!=-1;j=next_1[j]){
+					for(k=0;k<3;k++){
+						if (GetId(triangles[(int)j/3][k])==i1){
+							if (GetId(triangles[(int)j/3][(int)((k+1)%3)])==i2){
+								bamgmesh->IssmSegments[num*4+0]=GetId(edges[i][0])+1; //back to M indexing
+								bamgmesh->IssmSegments[num*4+1]=GetId(edges[i][1])+1; //back to M indexing
+								bamgmesh->IssmSegments[num*4+2]=(int)j/3+1;            //back to M indexing
+								bamgmesh->IssmSegments[num*4+3]=edges[i].ReferenceNumber;
+								num+=1;
+								stop=true;
+								break;
+							}
+							if (GetId(triangles[(int)j/3][(int)((k+2)%3)])==i2){
+								bamgmesh->IssmSegments[num*4+0]=GetId(edges[i][1])+1; //back to M indexing
+								bamgmesh->IssmSegments[num*4+1]=GetId(edges[i][0])+1; //back to M indexing
+								bamgmesh->IssmSegments[num*4+2]=(int)j/3+1;            //back to M indexing
+								bamgmesh->IssmSegments[num*4+3]=edges[i].ReferenceNumber;
+								num+=1;
+								stop=true;
+								break;
+							}
+						}
+					}
+					if(stop) break;
+				}
+				if (!stop){
+					_error_("Element holding segment [" << i1+1 << " " << i2+1 << "] not found...");
+				}
+			}
+		}
+
+		/*Triangles*/
+		if(verbose>5) _printf_("      writing Triangles\n");
+		k=nbInT-nbq*2;
+		num=0;
+		bamgmesh->TrianglesSize[0]=k;
+		bamgmesh->TrianglesSize[1]=4;
+		if (k){
+			bamgmesh->Triangles=xNew<double>(4*k);
+			for (i=0;i<nbt;i++){
+				Triangle &t=triangles[i];
+				//reft[i]=-1 for outside triangle
+				if (reft[i]>=0 && !( t.Hidden(0) || t.Hidden(1) || t.Hidden(2) )){
+					bamgmesh->Triangles[num*4+0]=GetId(t[0])+1; //back to M indexing
+					bamgmesh->Triangles[num*4+1]=GetId(t[1])+1; //back to M indexing
+					bamgmesh->Triangles[num*4+2]=GetId(t[2])+1; //back to M indexing
+					bamgmesh->Triangles[num*4+3]=subdomains[reft[i]].ReferenceNumber;
+					num=num+1;
+				}
+			}
+		}
+
+		/*Quadrilaterals*/
+		if(verbose>5) _printf_("      writing Quadrilaterals\n");
+		bamgmesh->QuadrilateralsSize[0]=nbq;
+		bamgmesh->QuadrilateralsSize[1]=5;
+		if (nbq){
+			bamgmesh->Quadrilaterals=xNew<double>(5*nbq);
+			for (i=0;i<nbt;i++){
+				Triangle &t =triangles[i];
+				Triangle* ta;
+				BamgVertex *v0,*v1,*v2,*v3;
+				if (reft[i]<0) continue;
+				if ((ta=t.Quadrangle(v0,v1,v2,v3)) !=0 && &t<ta) { 
+					bamgmesh->Quadrilaterals[i*5+0]=GetId(v0)+1; //back to M indexing
+					bamgmesh->Quadrilaterals[i*5+1]=GetId(v1)+1; //back to M indexing
+					bamgmesh->Quadrilaterals[i*5+2]=GetId(v2)+1; //back to M indexing
+					bamgmesh->Quadrilaterals[i*5+3]=GetId(v3)+1; //back to M indexing
+					bamgmesh->Quadrilaterals[i*5+4]=subdomains[reft[i]].ReferenceNumber;
+				}
+			}
+		}
+
+		/*SubDomains*/
+		if(verbose>5) _printf_("      writing SubDomains\n");
+		bamgmesh->SubDomainsSize[0]=nbsubdomains;
+		bamgmesh->SubDomainsSize[1]=4;
+		if (nbsubdomains){
+			bamgmesh->SubDomains=xNew<double>(4*nbsubdomains);
+			for (i=0;i<nbsubdomains;i++){
+				bamgmesh->SubDomains[i*4+0]=3;
+				bamgmesh->SubDomains[i*4+1]=reft[GetId(subdomains[i].head)];
+				bamgmesh->SubDomains[i*4+2]=1;
+				bamgmesh->SubDomains[i*4+3]=subdomains[i].ReferenceNumber;
+			}
+		}
+
+		/*SubDomainsFromGeom*/
+		if(verbose>5) _printf_("      writing SubDomainsFromGeom\n");
+		bamgmesh->SubDomainsFromGeomSize[0]=Gh.nbsubdomains;
+		bamgmesh->SubDomainsFromGeomSize[1]=4;
+		if (Gh.nbsubdomains){
+			bamgmesh->SubDomainsFromGeom=xNew<double>(4*Gh.nbsubdomains);
+			for (i=0;i<Gh.nbsubdomains;i++){
+				bamgmesh->SubDomainsFromGeom[i*4+0]=2;
+				bamgmesh->SubDomainsFromGeom[i*4+1]=GetId(subdomains[i].edge)+1; //back to Matlab indexing
+				bamgmesh->SubDomainsFromGeom[i*4+2]=subdomains[i].direction;
+				bamgmesh->SubDomainsFromGeom[i*4+3]=Gh.subdomains[i].ReferenceNumber;
+			}
+		}
+
+		/*VerticesOnGeomVertex*/
+		if(verbose>5) _printf_("      writing VerticesOnGeomVertex\n");
+		bamgmesh->VerticesOnGeomVertexSize[0]=NbVerticesOnGeomVertex;
+		bamgmesh->VerticesOnGeomVertexSize[1]=2;
+		if (NbVerticesOnGeomVertex){
+			bamgmesh->VerticesOnGeomVertex=xNew<double>(2*NbVerticesOnGeomVertex);
+			for (i=0;i<NbVerticesOnGeomVertex;i++){
+				VertexOnGeom &v=VerticesOnGeomVertex[i];
+				_assert_(v.OnGeomVertex());
+				bamgmesh->VerticesOnGeomVertex[i*2+0]=GetId((BamgVertex*)v)+1; //back to Matlab indexing
+				bamgmesh->VerticesOnGeomVertex[i*2+1]=Gh.GetId((GeomVertex*)v)+1; //back to Matlab indexing
+			}
+		}
+
+		/*VertexOnGeomEdge*/
+		if(verbose>5) _printf_("      writing VerticesOnGeomEdge\n");
+		bamgmesh->VerticesOnGeomEdgeSize[0]=NbVerticesOnGeomEdge;
+		bamgmesh->VerticesOnGeomEdgeSize[1]=3;
+		if (NbVerticesOnGeomEdge){
+			bamgmesh->VerticesOnGeomEdge=xNew<double>(3*NbVerticesOnGeomEdge);
+			for (i=0;i<NbVerticesOnGeomEdge;i++){
+				const VertexOnGeom &v=VerticesOnGeomEdge[i];
+				if (!v.OnGeomEdge()){
+					_error_("A vertices supposed to be OnGeomEdge is actually not");
+				}
+				bamgmesh->VerticesOnGeomEdge[i*3+0]=GetId((BamgVertex*)v)+1; //back to Matlab indexing
+				bamgmesh->VerticesOnGeomEdge[i*3+1]=Gh.GetId((const GeomEdge*)v)+1; //back to Matlab indexing
+				bamgmesh->VerticesOnGeomEdge[i*3+2]=(double)v; //absisce
+			}
+		}
+
+		/*EdgesOnGeomEdge*/
+		if(verbose>5) _printf_("      writing EdgesOnGeomEdge\n");
+		k=0;
+		for (i=0;i<nbe;i++){
+			if (edges[i].GeomEdgeHook) k=k+1;
+		}
+		bamgmesh->EdgesOnGeomEdgeSize[0]=k;
+		bamgmesh->EdgesOnGeomEdgeSize[1]=2;
+		if (k){
+			bamgmesh->EdgesOnGeomEdge=xNew<double>(2*(int)k);
+			int count=0;
+			for (i=0;i<nbe;i++){
+				if (edges[i].GeomEdgeHook){
+					bamgmesh->EdgesOnGeomEdge[count*2+0]=(double)i+1; //back to Matlab indexing
+					bamgmesh->EdgesOnGeomEdge[count*2+1]=(double)Gh.GetId(edges[i].GeomEdgeHook)+1; //back to Matlab indexing
+					count=count+1;
+				}
+			}
+		}
+
+		/*Element Connectivity*/
+		if(verbose>5) _printf_("      writing Element connectivity\n");
+		bamgmesh->ElementConnectivitySize[0]=nbt-nbtout;
+		bamgmesh->ElementConnectivitySize[1]=3;
+		bamgmesh->ElementConnectivity=xNew<double>(3*(nbt-nbtout));
+		for (i=0;i<3*(nbt-nbtout);i++) bamgmesh->ElementConnectivity[i]=NAN;
+		num=0;
+		for (i=0;i<nbt;i++){
+			if (reft[i]>=0){
+				for (j=0;j<3;j++){
+					k=GetId(triangles[i].TriangleAdj(j));
+					if (reft[k]>=0){
+						_assert_(3*num+j<3*(nbt-nbtout));
+						bamgmesh->ElementConnectivity[3*num+j]=k+1; // back to Matlab indexing
+					}
+				}
+				num+=1;
+			}
+		}
+
+		/*ElementNodal Connectivity*/
+		if(verbose>5) _printf_("      writing Nodal element connectivity\n");
+		bamgmesh->NodalElementConnectivitySize[0]=nbv;
+		bamgmesh->NodalElementConnectivitySize[1]=connectivitymax_1;
+		bamgmesh->NodalElementConnectivity=xNew<double>(connectivitymax_1*nbv);
+		for (i=0;i<connectivitymax_1*nbv;i++) bamgmesh->NodalElementConnectivity[i]=NAN;
+		for (i=0;i<nbv;i++){
+			k=0;
+			for(j=head_1[i];j!=-1;j=next_1[j]){
+				_assert_(connectivitymax_1*i+k < connectivitymax_1*nbv);
+				bamgmesh->NodalElementConnectivity[connectivitymax_1*i+k]=floor((double)j/3)+1;
+				k++;
+			}
+		}
+
+		/*Nodal Connectivity*/
+		if(verbose>5) _printf_("      writing Nodal connectivity\n");
+		//chaining algorithm (again...)
+		int* head_2=NULL;
+		int* next_2=NULL;
+		int* connectivitysize_2=NULL;
+		int  connectivitymax_2=0;
+		i1=bamgmesh->IssmEdgesSize[0];
+		i2=bamgmesh->IssmEdgesSize[1];
+		head_2=xNew<int>(nbv);
+		next_2=xNew<int>(2*i1);
+		connectivitysize_2=xNew<int>(nbv);
+		//Initialization
+		for (i=0;i<nbv;i++) head_2[i]=-1;
+		for (i=0;i<nbv;i++) connectivitysize_2[i]=0;
+		k=0;
+		//Chains generation
+		for (i=0;i<i1;i++) {
+			for (j=0;j<2;j++){
+				int v=(int)bamgmesh->IssmEdges[i*i2+j]-1; //back to C indexing
+				if (k>2*i1-1 || k<0) _error_("Index exceed matrix dimensions (k=" << k << " not in [0 " << 2*i1-1 << "]");
+				next_2[k]=head_2[v];
+				if (v>nbv-1 || v<0)   _error_("Index exceed matrix dimensions (v=" << v << " not in [0 " << nbv-1 << "])");
+				head_2[v]=k++;
+				connectivitysize_2[v]+=1;
+			}
+		}
+		//Get maximum connectivity
+		for (i=0;i<nbv;i++){
+			if (connectivitysize_2[i]>connectivitymax_2) connectivitymax_2=connectivitysize_2[i];
+		}
+		//Build output
+		connectivitymax_2++;//add last column for size
+		bamgmesh->NodalConnectivitySize[0]=nbv;
+		bamgmesh->NodalConnectivitySize[1]=connectivitymax_2;
+		bamgmesh->NodalConnectivity=xNew<double>(connectivitymax_2*nbv);
+		for (i=0;i<connectivitymax_2*nbv;i++) bamgmesh->NodalConnectivity[i]=0;
+		for (i=0;i<nbv;i++){
+			k=0;
+			for(j=head_2[i];j!=-1;j=next_2[j]){
+				_assert_(connectivitymax_2*i+k < connectivitymax_2*nbv);
+				num=(int)bamgmesh->IssmEdges[int(j/2)*i2+0];
+				if (i+1==num){ //carefull, ElementEdge is in M indexing
+					//i is the first vertex of the edge, it is therefore connected to the second vertex
+					bamgmesh->NodalConnectivity[connectivitymax_2*i+k]=bamgmesh->IssmEdges[int(j/2)*i2+1];
+				}
+				else{
+					bamgmesh->NodalConnectivity[connectivitymax_2*i+k]=num;
+				}
+				k++;
+			}
+			bamgmesh->NodalConnectivity[connectivitymax_2*(i+1)-1]=k;
+		}
+
+		/*Cracked vertices*/
+		if(verbose>5) _printf_("      writing Cracked vertices\n");
+		bamgmesh->CrackedVerticesSize[0]=NbCrackedVertices;
+		bamgmesh->CrackedVerticesSize[1]=2;
+		if (NbCrackedVertices){
+			bamgmesh->CrackedVertices=xNew<double>(2*NbCrackedVertices);
+			for (i=0;i<NbCrackedVertices;i++){
+				bamgmesh->CrackedVertices[i*2+0]=CrackedVertices[i*2+0]+1; //M indexing
+				bamgmesh->CrackedVertices[i*2+1]=CrackedVertices[i*2+1]+1; //M indexing
+			}
+		}
+
+		/*Cracked vertices*/
+		if(verbose>5) _printf_("      writing Cracked vertices\n");
+		bamgmesh->CrackedEdgesSize[0]=NbCrackedEdges;
+		bamgmesh->CrackedEdgesSize[1]=4;
+		if (NbCrackedEdges){
+			bamgmesh->CrackedEdges=xNew<double>(2*NbCrackedEdges);
+			for (i=0;i<NbCrackedEdges;i++){
+				bamgmesh->CrackedEdges[i*2+0]=0;//CrackedEdges[i]->+1; //M indexing
+				bamgmesh->CrackedEdges[i*2+1]=0;//CrackedEdges[i]-]->+1; //M indexing
+			}
+		}
+
+		//clean up
+		xDelete<int>(connectivitysize_1);
+		xDelete<int>(head_1);
+		xDelete<int>(next_1);
+		xDelete<int>(connectivitysize_2);
+		xDelete<int>(head_2);
+		xDelete<int>(next_2);
+		delete [] reft;
+		delete [] numt;
+	}
+	/*}}}*/
+	void Mesh::ReadMetric(const BamgOpts* bamgopts) {/*{{{*/
+
+		/*Intermediary*/
+		int  i,j;
+
+		if(bamgopts->verbose>3) _printf_("      processing metric\n");
+		double hmin = Max(bamgopts->hmin,MinimalHmin());
+		double hmax = Min(bamgopts->hmax,MaximalHmax());
+		double coef = bamgopts->coeff;
+
+		//for now we only use j==3
+		j=3;
+
+		for (i=0;i<nbv;i++){
+			double h;
+			if (j == 1){
+				h=bamgopts->metric[i];
+				vertices[i].m=Metric(Max(hmin,Min(hmax, h*coef)));
+			}
+			else if (j==3){
+				//do not erase metric computed by hVertices
+				if (vertices[i].m.a11==1 && vertices[i].m.a21==0 && vertices[i].m.a22==1){
+					double a,b,c;	     
+					a=bamgopts->metric[i*3+0];
+					b=bamgopts->metric[i*3+1];
+					c=bamgopts->metric[i*3+2];
+					Metric M(a,b,c);
+					EigenMetric Vp(M/coef);
+
+					Vp.Maxh(hmax);
+					Vp.Minh(hmin);
+					vertices[i].m = Vp;
+				}
+			}
+		}
+	}
+	/*}}}*/
+	void Mesh::WriteMetric(BamgOpts* bamgopts) {/*{{{*/
+		int i;
+		xDelete<double>(bamgopts->metric);
+		bamgopts->metric=xNew<double>(3*nbv);
+		for (i=0;i<nbv;i++){
+			bamgopts->metric[i*3+0]=vertices[i].m.a11;
+			bamgopts->metric[i*3+1]=vertices[i].m.a21;
+			bamgopts->metric[i*3+2]=vertices[i].m.a22;
+		}
+	}
+	/*}}}*/
+	void Mesh::WriteIndex(int** pindex,int* pnels){/*{{{*/
+
+		/*Intermediary*/
+		int i,k;
+
+		/*output*/
+		int* index=NULL;
+		int  num=0;
+
+		/*Get number of triangles*/
+		k=0;
+		for (i=0;i<nbt;i++){
+			Triangle &t=triangles[i];
+			if(t.det>0) k++;
+		}
+
+		if (k){
+			index=xNew<int>(3*k);
+			for (i=0;i<nbt;i++){
+				Triangle &t=triangles[i];
+				if (t.det>0 && !(t.Hidden(0)||t.Hidden(1) || t.Hidden(2) )){
+					/*Remove triangles that have a bad aspect ratio*/
+					//if(t.Anisotropy()<2 & t.Length()<1.e+5){
+						index[num*3+0]=GetId(t[0])+1; //back to M indexing
+						index[num*3+1]=GetId(t[1])+1; //back to M indexing
+						index[num*3+2]=GetId(t[2])+1; //back to M indexing
+						num=num+1;
+					//}
+				}
+			}
+		}
+
+		/*Assign output pointers*/
+		*pindex=index;
+		*pnels=num;
+	}
+	/*}}}*/
+
+	/*Methods*/
+	void Mesh::AddGeometryMetric(BamgOpts* bamgopts){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/IntersectGeomMetric)*/
+
+		/*Get options*/
+		double anisomax = bamgopts->anisomax;
+		double errg     = bamgopts->errg;
+
+		double ss[2]={0.00001,0.99999};
+		double errC = 2*sqrt(2*errg);
+		double hmax = Gh.MaximalHmax();
+		double hmin = Gh.MinimalHmin();
+
+		//check that hmax is positive
+		_assert_(hmax>0); 
+
+		//errC cannot be higher than 1
+		if(errC>1) errC=1;
+
+		//Set all vertices to "on"
+		SetVertexFieldOn();
+
+		//loop over all the vertices on edges
+		for(int  i=0;i<nbe;i++){
+			for (int j=0;j<2;j++){
+
+				BamgVertex V;
+				VertexOnGeom GV;
+				Gh.ProjectOnCurve(edges[i],ss[j],V,GV);
+
+				GeomEdge* eg = GV;
+				double s = GV;
+				R2 tg;
+				double  R1= eg->R1tg(s,tg);
+				double  ht=hmax;
+				// err relative to the length of the edge
+				if (R1>1.0e-20) {  
+					ht = Min(Max(errC/R1,hmin),hmax);
+				}
+				double hn=Min(hmax,ht*anisomax);
+
+				if (ht<=0 || hn<=0){
+					_error_("ht<=0 || hn<=0");
+				}
+				EigenMetric Vp(1/(ht*ht),1/(hn*hn),tg);
+				Metric MVp(Vp);
+				edges[i][j].m.IntersectWith(MVp);
+			}
+		}
+		// the problem is for the vertex on vertex 
+	}
+	/*}}}*/
+	void Mesh::AddMetric(BamgOpts* bamgopts){/*{{{*/
+		//  Hessiantype = 0 =>  H is computed using double L2 projection
+		//  Hessiantype = 1 =>  H is computed with green formula
+
+		/*Options*/
+		int Hessiantype=bamgopts->Hessiantype;
+
+		if (Hessiantype==0){
+			BuildMetric0(bamgopts);
+		}
+		else if (Hessiantype==1){
+			BuildMetric1(bamgopts);
+		}
+		else{
+			_error_("Hessiantype " << Hessiantype << " not supported yet (1->use Green formula, 0-> double L2 projection)");
+		}
+	}
+	/*}}}*/
+	void Mesh::AddVertex( BamgVertex &s,Triangle* t, Icoor2* det3){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Add)*/
+		// -------------------------------
+		//             s2
+		//                               !
+		//             /|\               !
+		//            / | \              !
+		//           /  |  \             !
+		//    tt1   /   |   \ tt0        !
+		//         /    |s   \           !
+		//        /     .     \          !
+		//       /  .      `   \         !
+		//      / .           ` \        !
+		//      ----------------         !
+		//   s0       tt2       s1
+		//-------------------------------
+
+		/*Intermediaries*/
+		Triangle* tt[3];       //the three triangles
+		Icoor2 det3local[3];   //three determinants (integer)
+		int nbzerodet =0;      //number of zeros in det3
+		int izerodet=-1;       //egde containing the vertex s
+		int iedge; 
+
+		/*three vertices of t*/
+		BamgVertex* s0=t->GetVertex(0);
+		BamgVertex* s1=t->GetVertex(1);
+		BamgVertex* s2=t->GetVertex(2);
+
+		//determinant of t
+		Icoor2 detOld=t->det;
+
+		/* infvertexindex = index of the infinite vertex (NULL)
+			if no infinite vertex (NULL) infvertexindex=-1
+			else if v_i is infinite, infvertexindex=i*/
+		int infvertexindex = s0 ? ((s1? (s2?-1:2):1)):0;
+
+		//some checks
+		if(((infvertexindex <0 ) && (detOld <0)) ||  ((infvertexindex >=0) && (detOld >0)) ){
+			_error_("inconsistent configuration (Contact ISSM developers)");
+		}
+
+		// if det3 does not exist, build it 
+		if (!det3){ 
+			//allocate
+			det3 = det3local;
+			//if no infinite vertex
+			if (infvertexindex<0 ) {
+				det3[0]=bamg::det(s .GetIntegerCoordinates(),s1->GetIntegerCoordinates(),s2->GetIntegerCoordinates());
+				det3[1]=bamg::det(s0->GetIntegerCoordinates(),s .GetIntegerCoordinates(),s2->GetIntegerCoordinates());
+				det3[2]=bamg::det(s0->GetIntegerCoordinates(),s1->GetIntegerCoordinates(),s.GetIntegerCoordinates());}
+			else { 
+				// one of &s1  &s2  &s0 is NULL
+				det3[0]= s0 ? -1 : bamg::det(s.GetIntegerCoordinates(),s1->GetIntegerCoordinates(),s2->GetIntegerCoordinates()) ;
+				det3[1]= s1 ? -1 : bamg::det(s0->GetIntegerCoordinates(),s.GetIntegerCoordinates(),s2->GetIntegerCoordinates()) ;
+				det3[2]= s2 ? -1 : bamg::det(s0->GetIntegerCoordinates(),s1->GetIntegerCoordinates(),s.GetIntegerCoordinates()) ;
+			}
+		}
+
+		if (!det3[0]) izerodet=0,nbzerodet++;
+		if (!det3[1]) izerodet=1,nbzerodet++;
+		if (!det3[2]) izerodet=2,nbzerodet++;
+
+		//if nbzerodet>0, point s is on an egde or on a vertex 
+		if  (nbzerodet>0){ 
+			/*s is on an edge*/
+			if (nbzerodet==1) {
+				iedge = OppositeEdge[izerodet];
+				AdjacentTriangle ta = t->Adj(iedge);
+
+				/*if the point is one the boundary 
+				  add the point in outside part */
+				if (t->det>=0){ // inside triangle
+					if (((Triangle*)ta)->det<0 ) {
+						// add in outside triangle 
+						AddVertex(s,( Triangle *)ta);
+						return;
+					}
+				}
+			}
+			else{
+				_error_("Cannot add a vertex more than once. Check duplicates");
+			}
+		}
+
+		// remove de MarkUnSwap edge
+		t->SetUnMarkUnSwap(0);
+		t->SetUnMarkUnSwap(1);
+		t->SetUnMarkUnSwap(2);
+
+		tt[0]= t;
+		tt[1]= &triangles[nbt++];
+		tt[2]= &triangles[nbt++];
+
+		if (nbt>maxnbt) _error_("Not enough triangles");
+
+		*tt[1]=*tt[2]=*t;
+		tt[0]->link=tt[1];
+		tt[1]->link=tt[2]; 
+
+		(*tt[0])(OppositeVertex[0])=&s;
+		(*tt[1])(OppositeVertex[1])=&s;
+		(*tt[2])(OppositeVertex[2])=&s;
+
+		tt[0]->det=det3[0];
+		tt[1]->det=det3[1];
+		tt[2]->det=det3[2];         
+
+		//  update adj des triangles externe 
+		tt[0]->SetAdjAdj(0);
+		tt[1]->SetAdjAdj(1);
+		tt[2]->SetAdjAdj(2);
+		//  update des adj des 3 triangle interne
+		const int i0 = 0;
+		const int i1= NextEdge[i0];
+		const int i2 = PreviousEdge[i0];
+
+		tt[i0]->SetAdj2(i2,tt[i2],i0);
+		tt[i1]->SetAdj2(i0,tt[i0],i1);
+		tt[i2]->SetAdj2(i1,tt[i1],i2);
+
+		tt[0]->SetSingleVertexToTriangleConnectivity();
+		tt[1]->SetSingleVertexToTriangleConnectivity();
+		tt[2]->SetSingleVertexToTriangleConnectivity();
+
+		// swap if the point s is on a edge
+		if(izerodet>=0) {
+			int rswap=tt[izerodet]->swap(iedge);
+
+			if (!rswap) {
+				_error_("swap the point s is on a edge");
+			}
+		}
+	}
+	/*}}}*/
+	void  Mesh::BoundAnisotropy(double anisomax,double hminaniso) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/BoundAnisotropy)*/
+
+		long int verbose=0;
+		double lminaniso = 1/ (Max(hminaniso*hminaniso,1e-100));
+
+		//display info
+		if (verbose > 1)  _printf_("   BoundAnisotropy by " << anisomax << "\n");
+
+		double h1=1.e30,h2=1e-30;
+		double coef = 1./(anisomax*anisomax);
+		double hn1=1.e30,hn2=1e-30,rnx =1.e-30,rx=0;  
+
+		//loop over all vertices
+		for (int i=0;i<nbv;i++){
+			EigenMetric Vp(vertices[i]);
+			double lmax=Vp.lmax();
+			Vp*=Min(lminaniso,lmax)/lmax;
+			Vp.BoundAniso2(coef);
+			vertices[i].m = Vp;
+
+			//info to be displayed
+			if (verbose>2){
+				h1 =Min(h1,Vp.lmin());
+				h2 =Max(h2,Vp.lmax());
+				hn1=Min(hn1,Vp.lmin());
+				hn2=Max(hn2,Vp.lmax());
+				rx =Max(rx,Vp.Aniso2());
+				rnx= Max(rnx,Vp.Aniso2());
+			}
+		}
+
+		//display info
+		if (verbose>2){
+			_printf_("      input:  Hmin = " << pow(h2,-0.5)  << ", Hmax = " << pow(h1,-0.5) << ", factor of anisotropy max  = " << pow(rx,0.5) << "\n");
+			_printf_("      output: Hmin = " << pow(hn2,-0.5) << ", Hmax = " << pow(hn1,-0.5)<< ", factor of anisotropy max  = " <<pow(rnx,0.5) << "\n");
+		}
+	}
+	/*}}}*/
+	void Mesh::BuildGeometryFromMesh(BamgOpts* bamgopts){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/ConsGeometry)*/
+
+		/*Reconstruct Geometry from Mesh*/
+
+		/*Intermediary*/
+		int i,j,k,kk,it,jt;
+		int    verbose=0;
+		double cutoffradian=10*Pi/180;
+
+		/*Recover options*/
+		if (bamgopts){
+			verbose=bamgopts->verbose;
+			cutoffradian=bamgopts->MaxCornerAngle*Pi/180;
+		}
+
+		//display info
+		if (verbose>1) _printf_("   construction of the geometry from the 2d mesh\n");
+
+		//check that the mesh is not empty
+		if (nbt<=0 || nbv <=0 ) {
+			_error_("nbt or nbv is negative (Mesh empty?)");
+		}
+
+		//Gh is the geometry of the mesh (this), initialize MaxCornerAngle
+		if (cutoffradian>=0) Gh.MaxCornerAngle = cutoffradian;
+
+		/*Construction of the edges*/
+
+		//initialize st and edge4
+		SetOfEdges4* edge4= new SetOfEdges4(nbt*3,nbv);
+		long*        st   = new long[nbt*3];
+
+		//initialize st as -1 (chaining algorithm)
+		for (i=0;i<nbt*3;i++) st[i]=-1;
+
+		//build edge4 (chain)
+		for (i=0;i<nbe;i++){
+			edge4->SortAndAdd(GetId(edges[i][0]),GetId(edges[i][1]));
+		}
+		//check that there is no double edge
+		if (nbe !=  edge4->nb()){ 
+			delete [] st;
+			_error_("Some Double edge in the mesh, the number is " << nbe << ", nbe4=" << edge4->nb()); 
+		}
+		//keep nbe in nbeold
+		long nbeold = nbe;
+
+		//Go through the triangles and ass the edges in edge4 if they are not there yet
+		for (i=0;i<nbt;i++){
+			//3 edges per triangle
+			for  (j=0;j<3;j++) {
+				//Add Edge to edge4 (k=numberofedges in edge4)
+				long k =edge4->SortAndAdd(GetId(triangles[i][VerticesOfTriangularEdge[j][0]]), GetId(triangles[i][VerticesOfTriangularEdge[j][1]]));
+				long invisible = triangles[i].Hidden(j);
+
+				//if st[k] has not been changed yet, add 3*i+j (= vertex position in the index)
+				if(st[k]==-1) st[k]=3*i+j;
+
+				//else st[k]>=0 -> the edge already exist, check
+				else if(st[k]>=0) {
+					//check that it is not an edge on boundary (should not already exist)
+					if (triangles[i].TriangleAdj(j) || triangles[st[k]/3].TriangleAdj((int) (st[k]%3))){
+						_error_("problem in Geometry reconstruction: an edge on boundary is duplicated (double element?)");
+					}
+					//OK, the element is not on boundary, is belongs to 2 triangles -> build Adjacent triangles list
+					triangles[i].SetAdj2(j,triangles + st[k] / 3,(int) (st[k]%3));
+					if (invisible)  triangles[i].SetHidden(j);
+					// if k < nbe mark the edge as on Boundary (Locked)
+					if (k<nbe) {
+						triangles[i].SetLocked(j);
+					}
+					//set st[k] as negative so that the edge should not be called again
+					st[k]=-2-st[k]; 
+				}
+				//else (see 3 lines above), the edge has been called more than twice: return error
+				else {
+					_printf_("The edge (" << GetId(triangles[i][VerticesOfTriangularEdge[j][0]]) << "," << GetId(triangles[i][VerticesOfTriangularEdge[j][1]]) << ") belongs to more than 2 triangles (" << k << ")\n");
+					_printf_("Edge " << j << " of triangle " << i << "\n");
+					_printf_("Edge " << (-st[k]+2)%3 << " of triangle " << (-st[k]+2)/3 << "\n");
+					_printf_("Edge " << triangles[(-st[k]+2)/3].NuEdgeTriangleAdj((int)((-st[k]+2)%3)) << " of triangle " << GetId(triangles[(-st[k]+2)/3].TriangleAdj((int)((-st[k]+2)%3))) << "\n");
+					_error_("An edge belongs to more than 2 triangles");
+				}	
+			}
+		}
+
+		//delete edge4
+		long nbedges = edge4->nb(); // the total number of edges 
+		delete edge4; edge4=NULL;
+
+		//display info
+		if(verbose>5) {
+			_printf_("         info on Mesh:\n");
+			_printf_("            - number of vertices    = " << nbv << "\n"); 
+			_printf_("            - number of triangles   = " << nbt << "\n"); 
+			_printf_("            - number of given edges = " << nbe << "\n"); 
+			_printf_("            - number of all edges   = " << nbedges << "\n"); 
+			_printf_("            - Euler number 1 - nb of holes = " << nbt-nbedges+nbv << "\n"); 
+		}
+
+		// check consistency of edge[].adj and geometrical required  vertices
+		k=0; kk=0;
+		for (i=0;i<nbedges;i++){
+			//internal edge
+			if (st[i] <-1) {
+				//get triangle number back
+				it =  (-2-st[i])/3;
+				//get edge position back
+				j  =  (int) ((-2-st[i])%3);
+				Triangle &tt=*triangles[it].TriangleAdj(j);
+				if (triangles[it].color != tt.color|| i < nbeold) k++;
+			}
+			//boundary edge (alone)
+			else if (st[i] >=0) 
+			 kk++;
+		}
+
+		/*Constructions of edges*/
+
+		k += kk;
+		kk=0;
+		if (k) {
+			nbe = k;
+			Edge* edgessave=edges;
+			edges = new Edge[nbe];
+			k =0;
+
+			//display info
+			if(verbose>4) _printf_("   Construction of the edges " << nbe << "\n");
+
+			for (i=0;i<nbedges;i++){ 
+				long  add= -1;
+
+				//internal edge (belongs to two triangles)
+				if (st[i] <-1){ 
+					it =  (-2-st[i])/3;
+					j  =  (int) ((-2-st[i])%3);
+					Triangle & tt = * triangles[it].TriangleAdj(j);
+					if (triangles[it].color !=  tt.color || i < nbeold) add=k++;
+				}
+				//boundary edge
+				else if (st[i] >=0){
+					it = st[i]/3;
+					j  = (int) (st[i]%3);
+					add=k++;
+				}
+				if (add>=0 && add < nbe){
+					edges[add].v[0] = &triangles[it][VerticesOfTriangularEdge[j][0]];
+					edges[add].v[1] = &triangles[it][VerticesOfTriangularEdge[j][1]];
+					edges[add].GeomEdgeHook=NULL; 
+					//if already existed
+					if (i<nbeold){
+						edges[add].ReferenceNumber=edgessave[i].ReferenceNumber; 		      
+						edges[add].GeomEdgeHook=edgessave[i].GeomEdgeHook; //  HACK to get required edges
+						_printf_("oh no...\n");
+					}
+					else
+					 edges[add].ReferenceNumber=Min(edges[add].v[0]->GetReferenceNumber(),edges[add].v[1]->GetReferenceNumber());
+				  }
+			}
+
+			//check that we have been through all edges
+			if (k!=nbe){
+				_error_("problem in edge construction process: k!=nbe (should not happen)");
+			}
+			//delete edgessave
+			if (edgessave) delete [] edgessave;
+		}
+
+		/*Color the vertices*/
+
+		//initialize color of all vertices as 0
+		for (i=0;i<nbv;i++) vertices[i].color =0;
+
+		//go through the edges and add a color to corresponding vertices
+		//(A vertex in 4 edges will have a color 4)
+		for (i=0;i<nbe;i++){
+		 for (j=0;j<2;j++) edges[i].v[j]->color++;
+		}
+
+		//change the color: if a vertex belongs to 2 edges -1, else -2
+		for (i=0;i<nbv;i++) {
+			vertices[i].color=(vertices[i].color ==2)? -1 : -2;
+		}
+
+		/*Build edges[i].adj: adjacency of each edge (if on the same curve)*/
+		for (i=0;i<nbe;i++){
+			for (j=0;j<2;j++){ 
+				//get current vertex
+				BamgVertex* v=edges[i].v[j];
+				//get vertex color (i0)
+				long i0=v->color;
+				long j0;
+
+				//if color<0 (first time), no adjacent edge
+				if(i0<0) edges[i].adj[j]=NULL;
+
+				//if color=-1 (corner),change the vertex color as 2*i+j (position of the vertex in edges)
+				if(i0==-1) v->color=i*2+j;
+
+				//if color>=0 (i and i0 edge are adjacent by the vertex v)
+				else if (i0>=0) {
+					//get position of v in edges back
+					j0 =  i0%2; //column in edges
+					i0 =  i0/2; //line in edges
+
+					//check that we have the correct vertex
+					if (v!=edges[i0 ].v[j0]){
+						_error_("v!=edges[i0 ].v[j0]: this should not happen as the vertex belongs to this edge");
+					}
+
+					//Add adjacence
+					edges[i ].adj[j ]=edges +i0;
+					edges[i0].adj[j0]=edges +i ;
+
+					//change color to -3
+					v->color = -3;
+				}
+			}
+		}
+
+		/*Reconstruct subdomains info*/
+
+		//check that nbsubdomains is empty
+		if (nbsubdomains){
+			_error_("nbsubdomains should be 0");
+		}
+		nbsubdomains=0;
+
+		//color the subdomains
+		long* colorT= new long[nbt];
+		Triangle *tt,*t;
+
+		//initialize the color of each triangle as -1
+		for (it=0;it<nbt;it++) colorT[it]=-1;
+
+		//loop over the triangles
+		for (it=0;it<nbt;it++){
+
+			//if the triangle has not been colored yet:
+			if (colorT[it]<0){
+
+				//color = number of subdomains
+				colorT[it]=nbsubdomains;
+
+				//color all the adjacent triangles of T that share a non marked edge
+				int level =1;
+				int kolor=triangles[it].color;
+				st[0]=it; // stack 
+				st[1]=0;
+				k=1;
+				while (level>0){
+					if( (j=st[level]++)<3 ){ 
+						t = &triangles[st[level-1]];
+						tt=t->TriangleAdj((int)j);
+
+						//color the adjacent triangle
+						if ( ! t->Locked(j) && tt && (colorT[jt = GetId(tt)] == -1) && ( tt->color==kolor)) {
+							colorT[jt]=nbsubdomains;
+							st[++level]=jt;
+							st[++level]=0;
+							k++;
+						}
+					}
+					else level-=2;
+				}
+				nbsubdomains++;
+			}
+		}
+		if (verbose> 3) _printf_("      The Number of sub domain = " << nbsubdomains << "\n"); 
+
+		//build subdomains
+		long isd;
+		subdomains = new SubDomain[nbsubdomains];
+
+		//initialize subdomains[isd].head as 0
+		for (isd=0;isd<nbsubdomains;isd++) subdomains[isd].head =0;
+
+		k=0;
+		for (it=0;it<nbt;it++){
+			for (int j=0;j<3;j++){
+				tt=triangles[it].TriangleAdj(j);
+				if ((!tt || tt->color != triangles[it].color) && !subdomains[isd=colorT[it]].head){
+					subdomains[isd].head = triangles+it;
+					subdomains[isd].ReferenceNumber =  triangles[it].color;
+					subdomains[isd].direction = j; // hack
+					subdomains[isd].edge = 0;
+					k++;
+				}
+			}
+		}
+		//check that we have been through all subdomains
+		if (k!= nbsubdomains){
+			delete [] colorT;
+			_error_("k!= nbsubdomains");
+		}
+		//delete colorT and st
+		delete [] colorT;
+		delete [] st;
+
+		/*Reconstruct Geometry Gh*/
+
+		//build colorV -1 for all vertex and 0 for the vertices belonging to edges
+		long* colorV = new long[nbv];
+		for (i=0;i<nbv;i++) colorV[i]=-1;
+		for (i=0;i<nbe;i++){
+		 for ( j=0;j<2;j++) colorV[GetId(edges[i][j])]=0;
+		}
+		//number the vertices belonging to edges
+		k=0;
+		for (i=0;i<nbv;i++){
+		 if(!colorV[i]) colorV[i]=k++;
+		}
+
+		//Build Gh
+		Gh.nbv=k;
+		Gh.nbe = nbe;
+		Gh.vertices = new GeomVertex[k];
+		Gh.edges = new GeomEdge[nbe];
+		Gh.nbsubdomains = nbsubdomains;
+		Gh.subdomains = new GeomSubDomain[nbsubdomains];
+		if (verbose>3) _printf_("   number of vertices = " << Gh.nbv << "\n   number of edges = " << Gh.nbe << "\n");
+		NbVerticesOnGeomVertex = Gh.nbv;
+		VerticesOnGeomVertex = new VertexOnGeom[NbVerticesOnGeomVertex];
+		NbVerticesOnGeomEdge =0;
+		VerticesOnGeomEdge =0;
+
+		//Build VertexOnGeom
+		for (i=0;i<nbv;i++){
+			if((j=colorV[i])>=0){
+				BamgVertex & v = Gh.vertices[j];
+				v = vertices[i];
+				v.color =0;
+				VerticesOnGeomVertex[j] = VertexOnGeom(vertices[i], Gh.vertices[j]);
+			}
+		}
+
+		//Buid pmin and pmax of Gh (extrema coordinates)
+		Gh.pmin =  Gh.vertices[0].r;
+		Gh.pmax =  Gh.vertices[0].r;
+		// recherche des extrema des vertices pmin,pmax
+		for (i=0;i<Gh.nbv;i++) {
+			Gh.pmin.x = Min(Gh.pmin.x,Gh.vertices[i].r.x);
+			Gh.pmin.y = Min(Gh.pmin.y,Gh.vertices[i].r.y);
+			Gh.pmax.x = Max(Gh.pmax.x,Gh.vertices[i].r.x);
+			Gh.pmax.y = Max(Gh.pmax.y,Gh.vertices[i].r.y);
+		}
+		R2 DD05 = (Gh.pmax-Gh.pmin)*0.05;
+		Gh.pmin -=  DD05;
+		Gh.pmax +=  DD05;
+
+		//Build Gh.coefIcoor
+		Gh.coefIcoor= (MaxICoor)/(Max(Gh.pmax.x-Gh.pmin.x,Gh.pmax.y-Gh.pmin.y));
+		if (Gh.coefIcoor<=0){
+			delete [] colorV;
+			_error_("Gh.coefIcoor<=0 in infered Geometry (this should not happen)");
+		}
+
+		/*Build Gh.edges*/
+
+		//initialize len as 0
+		double * len = new double[Gh.nbv];
+		for(i=0;i<Gh.nbv;i++) len[i]=0;
+
+		//initialize edge4 again
+		edge4= new SetOfEdges4(nbe,nbv);  
+		double hmin = HUGE_VAL;
+		int kreq=0;
+		for (i=0;i<nbe;i++){
+
+			long i0 = GetId(edges[i][0]);
+			long i1 = GetId(edges[i][1]);
+			long j0 = colorV[i0];
+			long j1 = colorV[i1];
+
+			Gh.edges[i].v[0] = Gh.vertices +  j0;
+			Gh.edges[i].v[1] = Gh.vertices +  j1;
+
+			Gh.edges[i].type = 0;
+
+			Gh.edges[i].tg[0]=R2();
+			Gh.edges[i].tg[1]=R2();
+
+			bool required= edges[i].GeomEdgeHook; 
+			if(required) kreq++;
+			edges[i].GeomEdgeHook =  Gh.edges + i;
+			if(required){
+				Gh.edges[i].v[0]->SetRequired();
+				Gh.edges[i].v[1]->SetRequired();
+				Gh.edges[i].SetRequired();
+			}
+
+			R2 x12 = Gh.vertices[j0].r-Gh.vertices[j1].r;
+			double l12=Norme2(x12);        
+			hmin = Min(hmin,l12);
+
+			Gh.vertices[j1].color++;
+			Gh.vertices[j0].color++;
+
+			len[j0]+= l12;
+			len[j1] += l12;
+			hmin = Min(hmin,l12);
+			Gh.edges[i].ReferenceNumber  = edges[i].ReferenceNumber;
+
+			k = edge4->SortAndAdd(i0,i1);
+			if (k != i){
+				delete [] len;
+				delete [] colorV;
+				_error_("problem in Edge4 construction: k != i");
+			}
+		}
+
+		//Build metric for all vertices of Gh
+		for (i=0;i<Gh.nbv;i++){
+		 if (Gh.vertices[i].color > 0) 
+		  Gh.vertices[i].m=  Metric(len[i] /(double) Gh.vertices[i].color);
+		 else 
+		  Gh.vertices[i].m=  Metric(hmin);
+		}
+		//delete len
+		delete [] len;
+
+		//Build Gh.subdomains
+		for (i=0;i<nbsubdomains;i++){
+			it = GetId(subdomains[i].head);
+			j = subdomains[i].direction;
+			long i0 = GetId(triangles[it][VerticesOfTriangularEdge[j][0]]);
+			long i1 = GetId(triangles[it][VerticesOfTriangularEdge[j][1]]);
+			k = edge4->SortAndFind(i0,i1);
+			_assert_(k>=0);
+			subdomains[i].direction = (vertices + i0 == edges[k].v[0]) ? 1 : -1;
+			subdomains[i].edge = edges+k;
+			Gh.subdomains[i].edge = Gh.edges + k;
+			Gh.subdomains[i].direction  =  subdomains[i].direction;
+			Gh.subdomains[i].ReferenceNumber =  subdomains[i].ReferenceNumber;
+		}
+
+		delete edge4;
+		delete [] colorV;
+
+		//unset adj
+		for (i=0;i<nbt;i++){
+			for ( j=0;j<3;j++){
+				triangles[i].SetAdj2(j,0,triangles[i].GetAllflag(j));
+			}
+		}
+
+	}
+	/*}}}*/
+	void Mesh::BuildMetric0(BamgOpts* bamgopts){/*{{{*/
+
+		/*Options*/
+		double* s=NULL;
+		long    nbsol;
+		int     verbose;
+
+		int   i,j,k,iA,iB,iC;
+		int   iv;
+
+		/*Recover options*/
+		verbose=bamgopts->verbose;
+
+		/*Get and process fields*/
+		s=bamgopts->field;
+		nbsol=bamgopts->fieldSize[1];
+
+		/*Check size*/
+		if (bamgopts->fieldSize[0] != nbv) _error_("'field' should have " << nbv << " rows");
+
+		//initialization of some variables
+		double* ss=(double*)s;
+		double  sA,sB,sC;
+		double*  detT = new double[nbt];
+		double*  sumareas = new double[nbv];
+		double*  alpha= new double[nbt*3];
+		double*  beta = new double[nbt*3];
+		double*  dx_elem    = new double[nbt];
+		double*  dy_elem    = new double[nbt];
+		double*  dx_vertex  = new double[nbv];
+		double*  dy_vertex  = new double[nbv];
+		double*  dxdx_elem  = new double[nbt];
+		double*  dxdy_elem  = new double[nbt];
+		double*  dydy_elem  = new double[nbt];
+		double*  dxdx_vertex= new double[nbv];
+		double*  dxdy_vertex= new double[nbv];
+		double*  dydy_vertex= new double[nbv];
+
+		//display infos
+		if(verbose>1) {
+			_printf_("   Construction of Metric: number of field: " << nbsol << " (nbt=" << nbt << ", nbv=" << nbv << ")\n");
+		}
+
+		//first, build the chains that will be used for the Hessian computation, as weel as the area of each element
+		int* head_s=NULL;
+		head_s=xNew<int>(nbv);
+		int* next_p=NULL;
+		next_p=xNew<int>(3*nbt);
+		int  p=0;
+		//initialization
+		for(i=0;i<nbv;i++){
+			sumareas[i]=0;
+			head_s[i]=-1;
+		}
+		for(i=0;i<nbt;i++){
+
+			//lopp over the real triangles (no boundary elements)
+			if(triangles[i].link){ 
+
+				//get current triangle t
+				const Triangle &t=triangles[i];
+
+				// coor of 3 vertices 
+				R2 A=t[0];
+				R2 B=t[1];
+				R2 C=t[2];
+
+				//compute triangle determinant (2*Area)
+				double dett = bamg::Area2(A,B,C);
+				detT[i]=dett;
+
+				/*The nodal functions are such that for a vertex A:
+				 *    N_A(x,y)=alphaA x + beta_A y +gamma_A
+				 *    N_A(A) = 1,   N_A(B) = 0,   N_A(C) = 0
+				 * solving this system of equation (determinant = 2Area(T) != 0 if A,B and C are not inlined)
+				 * leads to:
+				 *    N_A = (xB yC - xC yB + x(yB-yC) +y(xC-xB))/(2*Area(T))
+				 * and this gives:
+				 *    alpha_A = (yB-yC)/(2*Area(T))*/
+				alpha[i*3+0]=(B.y-C.y)/dett;
+				alpha[i*3+1]=(C.y-A.y)/dett;
+				alpha[i*3+2]=(A.y-B.y)/dett;
+				beta[ i*3+0]=(C.x-B.x)/dett;
+				beta[ i*3+1]=(A.x-C.x)/dett;
+				beta[ i*3+2]=(B.x-A.x)/dett;
+
+				//compute chains
+				for(j=0;j<3;j++){
+					k=GetId(triangles[i][j]);
+					next_p[p]=head_s[k];
+					head_s[k]=p++;
+
+					//add area to sumareas
+					sumareas[k]+=dett;
+				}
+
+			}
+		}
+
+		//for all Solutions
+		for (int nusol=0;nusol<nbsol;nusol++) {
+			double smin=ss[nusol],smax=ss[nusol];
+
+			//get min(s), max(s) and initialize Hessian (dxdx,dxdy,dydy)
+			for ( iv=0,k=0; iv<nbv; iv++){
+				smin=Min(smin,ss[iv*nbsol+nusol]);
+				smax=Max(smax,ss[iv*nbsol+nusol]);
+			}
+			double sdelta=smax-smin;
+			double absmax=Max(Abs(smin),Abs(smax));
+
+			//display info
+			if(verbose>2) _printf_("      Solution " << nusol << ", Min = " << smin << ", Max = " << smax << ", Delta = " << sdelta << "\n");
+
+			//skip constant field
+			if (sdelta < 1.0e-10*Max(absmax,1e-20)){
+				_printf_("      Solution " << nusol << " is constant, skipping...\n");
+				continue;
+			}
+
+			//initialize the hessian and gradient matrices
+			for ( iv=0,k=0; iv<nbv; iv++) dxdx_vertex[iv]=dxdy_vertex[iv]=dydy_vertex[iv]=dx_vertex[iv]=dy_vertex[iv]=0;
+
+			//1: Compute gradient for each element (exact)
+			for (i=0;i<nbt;i++){
+				if(triangles[i].link){
+					// number of the 3 vertices
+					iA = GetId(triangles[i][0]);
+					iB = GetId(triangles[i][1]);
+					iC = GetId(triangles[i][2]);
+
+					// value of the P1 fonction on 3 vertices 
+					sA = ss[iA*nbsol+nusol];
+					sB = ss[iB*nbsol+nusol];
+					sC = ss[iC*nbsol+nusol];
+
+					//gradient = (sum alpha_i s_i, sum_i beta_i s_i)
+					dx_elem[i]=sA*alpha[3*i+0]+sB*alpha[3*i+1]+sC*alpha[3*i+2];
+					dy_elem[i]=sA*beta[ 3*i+0]+sB*beta[ 3*i+1]+sC*beta[ 3*i+2];
+				}
+			}
+
+			//2: then compute a gradient for each vertex using a P2 projection
+			for(i=0;i<nbv;i++){
+				for(p=head_s[i];p!=-1;p=next_p[p]){
+					//Get triangle number
+					k=(long)(p/3);
+					dx_vertex[i]+=dx_elem[k]*detT[k]/sumareas[i];
+					dy_vertex[i]+=dy_elem[k]*detT[k]/sumareas[i];
+				}
+			}
+
+			//3: compute Hessian matrix on each element
+			for (i=0;i<nbt;i++){
+				if(triangles[i].link){
+					// number of the 3 vertices
+					iA = GetId(triangles[i][0]);
+					iB = GetId(triangles[i][1]);
+					iC = GetId(triangles[i][2]);
+
+					//Hessian
+					dxdx_elem[i]=dx_vertex[iA]*alpha[3*i+0]+dx_vertex[iB]*alpha[3*i+1]+dx_vertex[iC]*alpha[3*i+2];
+					dxdy_elem[i]=dy_vertex[iA]*alpha[3*i+0]+dy_vertex[iB]*alpha[3*i+1]+dy_vertex[iC]*alpha[3*i+2];
+					dydy_elem[i]=dy_vertex[iA]*beta[3*i+0]+dy_vertex[iB]*beta[3*i+1]+dy_vertex[iC]*beta[3*i+2];
+				}
+			}
+
+			//4: finaly compute Hessian on each vertex using the second P2 projection
+			for(i=0;i<nbv;i++){
+				for(p=head_s[i];p!=-1;p=next_p[p]){
+					//Get triangle number
+					k=(long)(p/3);
+					dxdx_vertex[i]+=dxdx_elem[k]*detT[k]/sumareas[i];
+					dxdy_vertex[i]+=dxdy_elem[k]*detT[k]/sumareas[i];
+					dydy_vertex[i]+=dydy_elem[k]*detT[k]/sumareas[i];
+				}
+			}
+
+			/*Compute Metric from Hessian*/
+			for ( iv=0;iv<nbv;iv++){
+				vertices[iv].MetricFromHessian(dxdx_vertex[iv],dxdy_vertex[iv],dydy_vertex[iv],smin,smax,ss[iv*nbsol+nusol],bamgopts->err[nusol],bamgopts);
+			}
+
+		}//for all solutions
+
+		//clean up
+		xDelete<int>(head_s);
+		xDelete<int>(next_p);
+		delete [] detT;
+		delete [] alpha;
+		delete [] beta;
+		delete [] sumareas;
+		delete [] dx_elem;
+		delete [] dy_elem;
+		delete [] dx_vertex;
+		delete [] dy_vertex;
+		delete [] dxdx_elem;
+		delete [] dxdy_elem;
+		delete [] dydy_elem;
+		delete [] dxdx_vertex;
+		delete [] dxdy_vertex;
+		delete [] dydy_vertex;
+	}
+	/*}}}*/
+	void Mesh::BuildMetric1(BamgOpts* bamgopts){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/IntersectConsMetric)*/
+
+		/*Options*/
+		double* s=NULL;
+		long nbsol;
+		int NbJacobi;
+		int verbose;
+
+		/*Recover options*/
+		verbose=bamgopts->verbose;
+		NbJacobi=bamgopts->nbjacobi;
+
+		/*Get and process fields*/
+		s=bamgopts->field;
+		nbsol=bamgopts->fieldSize[1];
+
+		/*Check size*/
+		if (bamgopts->fieldSize[0] != nbv) _error_("'field' should have " << nbv << " rows");
+
+		//initialization of some variables
+		long    i,k,iA,iB,iC,iv;
+		R2      O(0,0);
+		double* ss=(double*)s;
+		double  sA,sB,sC;
+		double*  detT = new double[nbt];
+		double*  Mmass= new double[nbv];
+		double*  Mmassxx= new double[nbv];
+		double*  dxdx= new double[nbv];
+		double*  dxdy= new double[nbv];
+		double*  dydy= new double[nbv];
+		double*  workT= new double[nbt];
+		double*  workV= new double[nbv];
+		int*    OnBoundary = new int[nbv];
+
+		//display infos
+		if(verbose>1) {
+			_printf_("   Construction of Metric: number of field: " << nbsol << " (nbt=" << nbt << ", nbv=" << nbv << ")\n");
+		}
+
+		//initialize Mmass, OnBoundary and Massxx by zero
+		for (iv=0;iv<nbv;iv++){
+			Mmass[iv]=0;
+			OnBoundary[iv]=0;
+			Mmassxx[iv]=0;
+		}
+
+		//Build detT Mmas Mmassxx workT and OnBoundary
+		for (i=0;i<nbt;i++){ 
+
+			//lopp over the real triangles (no boundary elements)
+			if(triangles[i].link){ 
+
+				//get current triangle t
+				const Triangle &t=triangles[i];
+
+				// coor of 3 vertices 
+				R2 A=t[0];
+				R2 B=t[1];
+				R2 C=t[2];
+
+				// number of the 3 vertices
+				iA = GetId(t[0]);
+				iB = GetId(t[1]);
+				iC = GetId(t[2]);
+
+				//compute triangle determinant (2*Area)
+				double dett = bamg::Area2(A,B,C);
+				detT[i]=dett;
+				dett /= 6;
+
+				// construction of OnBoundary (flag=1 if on boundary, else 0)
+				int nbb=0;
+				for(int j=0;j<3;j++){
+					//get adjacent triangle
+					Triangle *ta=t.Adj(j);
+					//if there is no adjacent triangle, the edge of the triangle t is on boundary
+					if ( !ta || !ta->link){
+						//mark the two vertices of the edge as OnBoundary
+						OnBoundary[GetId(t[VerticesOfTriangularEdge[j][0]])]=1;
+						OnBoundary[GetId(t[VerticesOfTriangularEdge[j][1]])]=1;
+						nbb++;
+					}
+				}
+
+				//number of vertices on boundary for current triangle t
+				workT[i] = nbb;
+
+				//Build Mmass Mmass[i] = Mmass[i] + Area/3
+				Mmass[iA] += dett;
+				Mmass[iB] += dett;
+				Mmass[iC] += dett;
+
+				//Build Massxx = Mmass
+				Mmassxx[iA] += dett;
+				Mmassxx[iB] += dett;
+				Mmassxx[iC] += dett;
+			}
+
+			//else: the triangle is a boundary triangle -> workT=-1
+			else workT[i]=-1;
+		}
+
+		//for all Solution  
+		for (int nusol=0;nusol<nbsol;nusol++) {
+
+			double smin=ss[nusol],smax=ss[nusol];
+			double h1=1.e30,h2=1e-30,rx=0;
+			double hn1=1.e30,hn2=1e-30,rnx =1.e-30;  
+
+			//get min(s), max(s) and initialize Hessian (dxdx,dxdy,dydy)
+			for ( iv=0,k=0; iv<nbv; iv++ ){
+				dxdx[iv]=dxdy[iv]=dydy[iv]=0;
+				smin=Min(smin,ss[iv*nbsol+nusol]);
+				smax=Max(smax,ss[iv*nbsol+nusol]);
+			}
+			double sdelta=smax-smin;
+			double absmax=Max(Abs(smin),Abs(smax));
+
+			//display info
+			if(verbose>2) _printf_("      Solution " << nusol << ", Min = " << smin << ", Max = " << smax << ", Delta = " << sdelta << ", number of fields = " << nbsol << "\n");
+
+			//skip constant field
+			if (sdelta < 1.0e-10*Max(absmax,1e-20) ){
+				if (verbose>2) _printf_("      Solution " << nusol << " is constant, skipping...\n");
+				continue;
+			}
+
+			//pointer toward ss that is also a pointer toward s (solutions)
+			double* sf=ss; 
+
+				//initialize the hessian matrix
+				for ( iv=0,k=0; iv<nbv; iv++) dxdx[iv]=dxdy[iv]=dydy[iv]=0;
+
+				//loop over the triangles
+				for (i=0;i<nbt;i++){
+
+					//for real all triangles 
+					if(triangles[i].link){
+
+						// coor of 3 vertices 
+						R2 A=triangles[i][0];
+						R2 B=triangles[i][1];
+						R2 C=triangles[i][2];
+
+						//warning: the normal is internal and the size is the length of the edge
+						R2 nAB = Orthogonal(B-A);
+						R2 nBC = Orthogonal(C-B);
+						R2 nCA = Orthogonal(A-C);
+						//note that :  nAB + nBC + nCA == 0 
+
+						// number of the 3 vertices
+						iA = GetId(triangles[i][0]);
+						iB = GetId(triangles[i][1]);
+						iC = GetId(triangles[i][2]);
+
+						// for the test of  boundary edge
+						// the 3 adj triangles 
+						Triangle *tBC = triangles[i].TriangleAdj(OppositeEdge[0]);
+						Triangle *tCA = triangles[i].TriangleAdj(OppositeEdge[1]);
+						Triangle *tAB = triangles[i].TriangleAdj(OppositeEdge[2]);
+
+						// value of the P1 fonction on 3 vertices 
+						sA = ss[iA*nbsol+nusol];
+						sB = ss[iB*nbsol+nusol];
+						sC = ss[iC*nbsol+nusol];
+
+						/*The nodal functions are such that for a vertex A:
+						  N_A(x,y)=alphaA x + beta_A y +gamma_A
+						  N_A(A) = 1,   N_A(B) = 0,   N_A(C) = 0
+						  solving this system of equation (determinant = 2Area(T) != 0 if A,B and C are not inlined)
+						  leads to:
+						  N_A = (xB yC - xC yB + x(yB-yC) +y(xC-xB))/(2*Area(T))
+						  and this gives:
+						  alpha_A = (yB-yC)/(2*Area(T))
+						  beta_A = (xC-xB)/(2*Area(T))
+						  and therefore:
+						  grad N_A = nA / detT
+						  for an interpolation of a solution s:
+						  grad(s) = s * sum_{i=A,B,C} grad(N_i) */
+
+						R2 Grads=(nAB*sC+nBC*sA+nCA*sB)/detT[i];
+
+						//Use Green to compute Hessian Matrix
+
+						// if edge on boundary no contribution  => normal = 0
+						if ( !tBC || !tBC->link ) nBC=O;
+						if ( !tCA || !tCA->link ) nCA=O;
+						if ( !tAB || !tAB->link ) nAB=O;
+
+						// remark we forgot a 1/2 because
+						//       int_{edge} w_i = 1/2 if i is in edge 
+						//                         0  if not
+						// if we don't take the  boundary 
+						dxdx[iA] += ( nCA.x + nAB.x ) *Grads.x;
+						dxdx[iB] += ( nAB.x + nBC.x ) *Grads.x;
+						dxdx[iC] += ( nBC.x + nCA.x ) *Grads.x;
+
+						//warning optimization (1) the division by 2 is done on the metric construction
+						dxdy[iA] += (( nCA.y + nAB.y ) *Grads.x + ( nCA.x + nAB.x ) *Grads.y) ;
+						dxdy[iB] += (( nAB.y + nBC.y ) *Grads.x + ( nAB.x + nBC.x ) *Grads.y) ;
+						dxdy[iC] += (( nBC.y + nCA.y ) *Grads.x + ( nBC.x + nCA.x ) *Grads.y) ; 
+
+						dydy[iA] += ( nCA.y + nAB.y ) *Grads.y;
+						dydy[iB] += ( nAB.y + nBC.y ) *Grads.y;
+						dydy[iC] += ( nBC.y + nCA.y ) *Grads.y;
+
+					} // for real all triangles 
+				}
+
+				long kk=0;
+				for ( iv=0,k=0 ; iv<nbv; iv++){
+					if(Mmassxx[iv]>0){
+						dxdx[iv] /= 2*Mmassxx[iv];
+						// warning optimization (1) on term dxdy[iv]*ci/2 
+						dxdy[iv] /= 4*Mmassxx[iv];
+						dydy[iv] /= 2*Mmassxx[iv];
+						// Compute the matrix with abs(eigen value)
+						Metric M(dxdx[iv], dxdy[iv], dydy[iv]);
+						EigenMetric Vp(M);
+						Vp.Abs();
+						M = Vp;
+						dxdx[iv] = M.a11;
+						dxdy[iv] = M.a21;
+						dydy[iv] = M.a22;
+					}
+					else kk++;
+				}
+
+				// correction of second derivative
+				// by a laplacien
+				double* dd;
+				for (int xy = 0;xy<3;xy++) {
+					if      (xy==0) dd=dxdx;
+					else if (xy==1) dd=dxdy;
+					else if (xy==2) dd=dydy;
+					else    _error_("not supported yet");
+					// do leat 2 iteration for boundary problem
+					for (int ijacobi=0;ijacobi<Max(NbJacobi,2);ijacobi++){
+						for (i=0;i<nbt;i++) 
+						 if(triangles[i].link){// the real triangles 
+							 // number of the 3 vertices
+							 iA = GetId(triangles[i][0]);
+							 iB = GetId(triangles[i][1]);
+							 iC = GetId(triangles[i][2]);
+							 double cc=3;
+							 if(ijacobi==0)
+							  cc = Max((double) ((Mmassxx[iA]>0)+(Mmassxx[iB]>0)+(Mmassxx[iC]>0)),1.);
+							 workT[i] = (dd[iA]+dd[iB]+dd[iC])/cc;
+						 }
+						for (iv=0;iv<nbv;iv++) workV[iv]=0;
+
+						for (i=0;i<nbt;i++){ 
+							if(triangles[i].link){ // the real triangles 
+								// number of the 3 vertices
+								iA = GetId(triangles[i][0]);
+								iB = GetId(triangles[i][1]);
+								iC = GetId(triangles[i][2]);
+								double cc =  workT[i]*detT[i];
+								workV[iA] += cc;
+								workV[iB] += cc;
+								workV[iC] += cc;
+							}
+						}
+
+						for (iv=0;iv<nbv;iv++){
+							if( ijacobi<NbJacobi || OnBoundary[iv]){
+								dd[iv] = workV[iv]/(Mmass[iv]*6);
+							}
+						}
+					}
+				}
+
+				/*Compute Metric from Hessian*/
+				for ( iv=0;iv<nbv;iv++){
+					vertices[iv].MetricFromHessian(dxdx[iv],dxdy[iv],dydy[iv],smin,smax,ss[iv*nbsol+nusol],bamgopts->err[nusol],bamgopts);
+				}
+
+		}// end for all solution 
+
+		delete [] detT;
+		delete [] Mmass;
+		delete [] dxdx;
+		delete [] dxdy;
+		delete [] dydy;
+		delete []  workT;
+		delete [] workV;
+		delete [] Mmassxx;
+		delete []  OnBoundary;
+
+	}
+	/*}}}*/
+	void Mesh::CrackMesh(BamgOpts* bamgopts) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/CrackMesh)*/
+
+		/*Intermediary*/
+		int i,j,k,num,count;
+		int i1,i2;
+		int j1,j2;
+
+		/*Options*/
+		int verbose=bamgopts->verbose;
+
+		//  computed the number of cracked edge
+		for (k=i=0;i<nbe;i++){
+			if(edges[i].GeomEdgeHook->Cracked()) k++;
+		}
+
+		//Return if no edge is cracked
+		if(k==0) return;
+		if (verbose>4) _printf_("      number of Cracked Edges = " << k << "\n");
+
+		//Initialize Cracked edge
+		NbCrackedEdges=k;
+		CrackedEdges=new CrackedEdge[k];
+
+		//Compute number of Cracked Vertices
+		k=0;
+		NbCrackedVertices=0;
+
+		int* splitvertex=new int[nbv];
+		for (i=0;i<nbv;i++) splitvertex[i]=0;
+
+		for (i=0;i<nbe;i++){
+			if(edges[i].GeomEdgeHook->Cracked()){
+
+				//Fill edges fields of CrackedEdges
+				CrackedEdges[k  ].E =edges[i].GeomEdgeHook;
+				CrackedEdges[k++].e1=&edges[i];
+
+				//Get number of the two vertices on the edge
+				i1=GetId(edges[i][0]);
+				i2=GetId(edges[i][1]);
+				_assert_(i1>=0 && i1<nbv && i2>=0 && i2<nbv);
+				splitvertex[i1]++;
+				splitvertex[i2]++;
+
+				//If the vertex has already been flagged once, it is a cracked vertex (tip otherwise)
+				if (splitvertex[i1]==2) NbCrackedVertices++;
+				if (splitvertex[i2]==2) NbCrackedVertices++;
+
+				//The vertex cannot be marked more than twice
+				if (splitvertex[i1]==3 || splitvertex[i2]==3){
+					delete [] splitvertex;
+					_error_("Crossing rifts not supported yet");
+				}
+			}
+		}
+		_assert_(k==NbCrackedEdges);
+
+		//Add new vertices
+		if (verbose>4) _printf_("      number of Cracked Vertices = " << NbCrackedVertices << "\n");
+		if (NbCrackedVertices){
+			CrackedVertices=xNew<long>(2*NbCrackedVertices);
+			num=0;
+			for (i=0;i<nbv;i++){
+				if (splitvertex[i]==2){
+					CrackedVertices[num*2+0]=i;      //index of first vertex
+					CrackedVertices[num*2+1]=nbv+num;//index of new vertex
+					num++;
+				}
+			}
+			_assert_(num==NbCrackedVertices);
+		}
+		delete [] splitvertex;
+
+		//Now, find the triangles that hold a cracked edge
+		CreateSingleVertexToTriangleConnectivity();
+
+		long* Edgeflags=new long[NbCrackedEdges];
+		for(i=0;i<NbCrackedEdges;i++) Edgeflags[i]=0;
+
+		for(i=0;i<NbCrackedEdges;i++){
+			//Get the numbers of the 2 vertices of the crren cracked edge
+			i1=GetId((*CrackedEdges[i].e1)[0]);
+			i2=GetId((*CrackedEdges[i].e1)[1]);
+
+			//find a triangle holding the vertex i1 (first vertex of the ith cracked edge)
+			Triangle* tbegin=vertices[i1].t;
+			k=vertices[i1].IndexInTriangle;//local number of i in triangle tbegin
+			_assert_(GetId((*tbegin)[k])==GetId(vertices[i1]));
+
+			//Now, we are going to go through the adjacent triangle that hold i1 till
+			//we find one that has the cracked edge
+			AdjacentTriangle ta(tbegin,EdgesVertexTriangle[k][0]);
+			count=0;
+			do {
+				for(j=0;j<3;j++){
+					//Find the position of i1 in the triangle index
+					if (GetId((*ta.t)[j])==i1){
+						j1=j;
+						break;
+					}
+				}
+				for(j=0;j<3;j++){
+					//Check wether i2 is also in the triangle index
+					if (GetId((*ta.t)[j])==i2){
+						j2=j;
+						//Invert j1 and j2 if necessary
+						if ((j1+1)%3==j2){
+							int j3=j1;
+							j1=j2;
+							j2=j3;
+						}
+						if (Edgeflags[i]==0){
+							//first element
+							CrackedEdges[i].a=ta.t;
+							CrackedEdges[i].length=Norme2((*ta.t)[j1].r-(*ta.t)[j2].r);
+							CrackedEdges[i].normal=Orthogonal((*ta.t)[j1].r-(*ta.t)[j2].r);
+						}
+						else{
+							//Second element -> to renumber
+							CrackedEdges[i].b=ta.t;
+							CrackedEdges[i].length=Norme2((*ta.t)[j1].r-(*ta.t)[j2].r);
+							CrackedEdges[i].normal=Orthogonal((*ta.t)[j1].r-(*ta.t)[j2].r);
+						}
+						Edgeflags[i]++;
+						break;
+					}
+				}
+				//_printf_(element_renu[GetId(ta.t)] << " -> " << GetId((*ta.t)[0])+1 << " " << GetId((*ta.t)[1])+1 << " " << GetId((*ta.t)[2])+1 << ", edge [" << i1 << "->" << j1 << " " << i2 << "->" << j2 << "]\n");
+				ta = Next(ta).Adj(); 
+				if (count++>50) _error_("Maximum number of iteration exceeded");
+			}while ((tbegin != ta)); 
+		}
+
+		//Check EdgeFlag
+		for(i=0;i<NbCrackedEdges;i++){
+			if (Edgeflags[i]!=2){
+				_error_("A problem occured: at least one crack edge (number " << i+1 << ") does not belong to 2 elements");
+			}
+		}
+		delete [] Edgeflags;
+
+		//Reset BamgVertex to On
+		SetVertexFieldOn();
+
+	}
+	/*}}}*/
+	void Mesh::Echo(void) {/*{{{*/
+
+		int i;
+
+		_printf_("Mesh Echo:\n");
+		_printf_("   nbv = " << nbv << "\n");
+		_printf_("   nbt = " << nbt << "\n");
+		_printf_("   nbe = " << nbe << "\n");
+		_printf_("   nbq = " << nbq << "\n");
+		_printf_("   index:\n");
+		for (i=0;i<nbt;i++){
+			_printf_("   " << setw(4) << i+1 << ": [" 
+						<< setw(4) << (((BamgVertex *)triangles[i](0))?GetId(triangles[i][0])+1:0) << " " 
+						<< setw(4) << (((BamgVertex *)triangles[i](0))?GetId(triangles[i][1])+1:0) << " " 
+						<< setw(4) << (((BamgVertex *)triangles[i](0))?GetId(triangles[i][2])+1:0) << "]");
+		}
+		_printf_("   coordinates:\n");
+		for (i=0;i<nbv;i++){
+			_printf_("   " << setw(4) << i+1 << ": [" << vertices[i].r.x << " " << vertices[i].r.y << "]\n");
+		}
+
+	}
+	/*}}}*/
+	void Mesh::ForceBoundary() {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/ForceBoundary)*/
+
+		long int verbose=2;
+		int k=0;
+		int nbfe=0,nbswp=0,Nbswap=0;
+
+		//display
+		if (verbose > 2) _printf_("   ForceBoundary  nb of edge: " << nbe << "\n");
+
+		//check that there is no triangle with 0 determinant
+		for (int t = 0; t < nbt; t++){
+			if (!triangles[t].det) k++;
+		}
+		if (k!=0) {
+			_error_("there is " << k << " triangles of mes = 0");
+		}
+
+		//Force Edges
+		AdjacentTriangle ta(0,0);
+		for (int i = 0; i < nbe; i++){
+
+			//Force edge i
+			nbswp =  ForceEdge(edges[i][0],edges[i][1],ta);
+			if (nbswp<0) k++;
+			else Nbswap += nbswp;
+
+			if (nbswp) nbfe++;
+			if ( nbswp < 0 && k < 5){
+				_error_("Missing Edge " << i << ", v0=" << GetId(edges[i][0]) << ",v1=" << GetId(edges[i][1]));
+			}
+		}
+
+		if (k!=0) {
+			_error_("There are " << k << " lost edges, the boundary might be crossing");
+		}
+		for (int j=0;j<nbv;j++){
+			Nbswap +=  vertices[j].Optim(1,0);
+		}
+		if (verbose > 3) _printf_("      number of inforced edge = " << nbfe << ", number of swap= " << Nbswap << "\n"); 
+	}
+	/*}}}*/
+	void Mesh::FindSubDomain(int OutSide) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/FindSubDomain)*/
+
+		long int verbose=0;
+
+		if (verbose >2){
+			if (OutSide) _printf_("   Find all external sub-domain\n"); 
+			else _printf_("   Find all internal sub-domain\n");
+		  }
+		short * HeapArete = new short[nbt];
+		Triangle  **  HeapTriangle = new Triangle*  [nbt];
+		Triangle *t,*t1;
+		long k,it;
+
+		for (int itt=0;itt<nbt;itt++) 
+		 triangles[itt].link=0; // par defaut pas de couleur
+
+		long  NbSubDomTot =0;
+		for ( it=0;it<nbt;it++)  { 
+			if ( ! triangles[it].link  ) {
+				t = triangles + it;
+				NbSubDomTot++;; // new composante connexe
+				long i = 0; // niveau de la pile 
+				t->link = t ; // sd forme d'un triangle cicular link
+
+				HeapTriangle[i] =t ; 
+				HeapArete[i] = 3;
+
+				while (i >= 0) // boucle sur la pile
+				  { while ( HeapArete[i]--) // boucle sur les 3 aretes 
+					  { 
+						int na =  HeapArete[i];
+						Triangle * tc =  HeapTriangle[i]; // triangle courant
+						if( ! tc->Locked(na)) // arete non frontiere
+						  {
+							Triangle * ta = tc->TriangleAdj(na) ; // næ triangle adjacent
+							if (ta->link == 0 ) // non deja chainer => on enpile
+							  { 
+								i++;
+								ta->link = t->link ;  // on chaine les triangles
+								t->link = ta ;  // d'un meme sous domaine          
+								HeapArete[i] = 3; // pour les 3 triangles adjacents
+								HeapTriangle[i] = ta;
+							  }}
+					  } // deplie fin de boucle sur les 3 adjacences
+					i--;
+				  }          
+			}      
+		}
+
+		// supression de tous les sous domaine infini <=>  contient le sommet NULL
+		it =0;
+		nbtout = 0;
+		while (it<nbt) {
+			if (triangles[it].link) 
+			  { 
+				if (!( triangles[it](0) &&  triangles[it](1) &&  triangles[it](2) )) 
+				  {
+					// infini triangle 
+					NbSubDomTot --;
+					t=&triangles[it];
+					nbtout--;  // on fait un coup de trop. 
+					while  (t){
+						nbtout++;
+						t1=t;
+						t=t->link;
+						t1->link=0;
+					}
+				  }
+			  }   
+			it++;} // end while (it<nbt)
+			if (nbt == nbtout ||  !NbSubDomTot) {
+				delete [] HeapArete;
+				_error_("The boundary is not close: all triangles are outside");
+			}
+
+			delete [] HeapArete;
+			delete [] HeapTriangle;
+
+			if (OutSide|| !Gh.subdomains || !Gh.nbsubdomains ) 
+			  { // No geom sub domain
+				long i;
+				if (subdomains) delete [] subdomains;
+				subdomains = new SubDomain[ NbSubDomTot];
+				nbsubdomains=  NbSubDomTot;
+				for ( i=0;i<nbsubdomains;i++) {
+					subdomains[i].head=NULL;
+					subdomains[i].ReferenceNumber=i+1;
+				}
+				long * mark = new long[nbt];
+				for (it=0;it<nbt;it++)
+				 mark[it]=triangles[it].link ? -1 : -2;
+
+				it =0;
+				k = 0;
+				while (it<nbt) {
+					if (mark[it] == -1) {
+						t1 = & triangles[it];
+						t = t1->link;
+						mark[it]=k;
+						subdomains[k].head = t1;
+						do {
+							mark[GetId(t)]=k;
+							t=t->link;
+						} while (t!=t1);
+						mark[it]=k++;}
+						//    else if(mark[it] == -2 ) triangles[it].Draw(999);
+						it++;} // end white (it<nbt)
+						if (k!=nbsubdomains){
+							delete [] mark;
+							_error_("k!=nbsubdomains");
+						}
+						if(OutSide) 
+						  {
+							//  to remove all the sub domain by parity adjacents
+							//  because in this case we have only the true boundary edge
+							// so teh boundary is manifold
+							long nbk = nbsubdomains;
+							while (nbk)
+							 for (it=0;it<nbt && nbk ;it++)
+							  for (int na=0;na<3 && nbk ;na++)
+								 {
+								  Triangle *ta = triangles[it].TriangleAdj(na);
+								  long kl = ta ? mark[GetId(ta)] : -2;
+								  long kr = mark[it];
+								  if(kr !=kl) {
+									  if (kl >=0 && subdomains[kl].ReferenceNumber <0 && kr >=0 && subdomains[kr].ReferenceNumber>=0)
+										nbk--,subdomains[kr].ReferenceNumber=subdomains[kl].ReferenceNumber-1;
+									  if (kr >=0 && subdomains[kr].ReferenceNumber <0 && kl >=0 && subdomains[kl].ReferenceNumber>=0)
+										nbk--,subdomains[kl].ReferenceNumber=subdomains[kr].ReferenceNumber-1;
+									  if(kr<0 && kl >=0 && subdomains[kl].ReferenceNumber>=0)
+										nbk--,subdomains[kl].ReferenceNumber=-1;
+									  if(kl<0 && kr >=0 && subdomains[kr].ReferenceNumber>=0)
+										nbk--,subdomains[kr].ReferenceNumber=-1;
+								  }
+								 }
+							long  j=0;
+							for ( i=0;i<nbsubdomains;i++)
+							 if((-subdomains[i].ReferenceNumber) %2) { // good 
+								 if(i != j) 
+								  Exchange(subdomains[i],subdomains[j]);
+								 j++;}
+							 else{ 
+								 t= subdomains[i].head;
+								 while (t){
+									 nbtout++;
+									 t1=t;
+									 t=t->link;
+									 t1->link=0;
+								 }//while (t)
+								}
+							if(verbose>4) _printf_("      Number of removes subdomains (OutSideMesh) = " << nbsubdomains-j << "\n");
+							nbsubdomains=j;
+						  }
+
+						delete []  mark; 
+
+			  }
+			else{ // find the head for all subdomains
+				if (Gh.nbsubdomains != nbsubdomains && subdomains)
+				 delete [] subdomains, subdomains=0;
+				if (! subdomains  ) 
+				 subdomains = new SubDomain[ Gh.nbsubdomains];
+				nbsubdomains =Gh.nbsubdomains;
+				CreateSingleVertexToTriangleConnectivity();
+				long * mark = new long[nbt];
+				Edge **GeomEdgetoEdge = MakeGeomEdgeToEdge();
+
+				for (it=0;it<nbt;it++)
+				 mark[it]=triangles[it].link ? -1 : -2;
+				long inew =0;
+				for (int i=0;i<nbsubdomains;i++) {
+					GeomEdge &eg = *Gh.subdomains[i].edge;
+					subdomains[i].ReferenceNumber = Gh.subdomains[i].ReferenceNumber;
+					// by carefull is not easy to find a edge create from a GeomEdge 
+					// see routine MakeGeomEdgeToEdge
+					Edge &e = *GeomEdgetoEdge[Gh.GetId(eg)];
+					_assert_(&e);
+					BamgVertex * v0 =  e(0),*v1 = e(1);
+					Triangle *t  = v0->t;
+					int direction = Gh.subdomains[i].direction;
+					// test if ge and e is in the same direction 
+					if (((eg[0].r-eg[1].r),(e[0].r-e[1].r))<0) direction = -direction ;
+					subdomains[i].direction = direction;
+					subdomains[i].edge = &e;
+					_assert_(t && direction);
+
+					AdjacentTriangle  ta(t,EdgesVertexTriangle[v0->IndexInTriangle][0]);// previous edges
+
+					while (1) {
+						_assert_(v0==ta.EdgeVertex(1));
+						if (ta.EdgeVertex(0) == v1) { // ok we find the edge
+							if (direction>0)  
+							 subdomains[i].head=t=Adj(ta);
+							else 
+							 subdomains[i].head=t=ta;
+							if(t<triangles || t >= triangles+nbt || t->det < 0 || t->link == 0) {
+								_error_("bad definition of SubSomain " << i);
+							}
+							long it = GetId(t);
+							if (mark[it] >=0) {
+								break;
+							}
+							if(i != inew) 
+							 Exchange(subdomains[i],subdomains[inew]);
+							inew++;
+							Triangle *tt=t;
+							long kkk=0;
+							do 
+							  {
+								kkk++;
+								if (mark[GetId(tt)]>=0){
+									_error_("mark[GetId(tt)]>=0");
+								}
+								mark[GetId(tt)]=i;
+								tt=tt->link;
+							  } while (tt!=t);
+							break;
+						}
+						ta = Previous(Adj(ta));         
+						if(t == (Triangle *) ta) {
+							_error_("bad definition of SubSomain " << i);
+						}
+					}
+				}
+
+				if (inew < nbsubdomains) {
+					if (verbose>5) _printf_("WARNING: " << nbsubdomains-inew << " SubDomains are being removed\n");
+					nbsubdomains=inew;}
+
+					for (it=0;it<nbt;it++)
+					 if ( mark[it] ==-1 ) 
+					  nbtout++,triangles[it].link =0;
+					delete [] GeomEdgetoEdge;
+					delete [] mark;
+
+			  }
+			nbtout=0;
+			for (it=0;it<nbt;it++) 
+			 if(!triangles[it].link)  nbtout++;
+	}
+	/*}}}*/
+	long Mesh::GetId(const Triangle & t) const  { /*{{{*/
+		return &t - triangles;
+	}
+	/*}}}*/
+	long Mesh::GetId(const Triangle * t) const  { /*{{{*/
+		return t - triangles;
+	}
+	/*}}}*/
+	long Mesh::GetId(const BamgVertex & t) const  { /*{{{*/
+		return &t - vertices;
+	}
+	/*}}}*/
+	long Mesh::GetId(const BamgVertex * t) const  { /*{{{*/
+		return t - vertices;
+	}
+	/*}}}*/
+	long Mesh::GetId(const Edge & t) const  { /*{{{*/
+		return &t - edges;
+	}
+	/*}}}*/
+	long Mesh::GetId(const Edge * t) const  { /*{{{*/
+		return t - edges;
+	}
+	/*}}}*/
+	void Mesh::Init(long maxnbv_in) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/PreInit)*/
+
+		/* initialize random seed: */
+		srand(19999999);
+
+		/*Initialize fields*/
+		NbRef=0;
+		quadtree=NULL;
+		nbv=0;
+		nbt=0;
+		nbe=0;
+		edges=NULL;
+		nbq=0;
+		nbsubdomains=0;
+		subdomains=NULL;
+		maxnbv=maxnbv_in;
+		maxnbt=2 *maxnbv_in-2;
+		NbVertexOnBThVertex=0;
+		VertexOnBThVertex=NULL;
+		NbVertexOnBThEdge=0;
+		VertexOnBThEdge=NULL;
+		NbCrackedVertices=0;
+		CrackedVertices =NULL;
+		NbCrackedEdges =0;
+		CrackedEdges =NULL;
+		NbVerticesOnGeomVertex=0;
+		VerticesOnGeomVertex=NULL;
+		NbVerticesOnGeomEdge=0;
+		VerticesOnGeomEdge=NULL;
+
+		/*Allocate if maxnbv_in>0*/
+		if(maxnbv_in){
+			vertices=new BamgVertex[maxnbv];
+			_assert_(vertices);
+			orderedvertices=new BamgVertex* [maxnbv];
+			_assert_(orderedvertices);
+			triangles=new Triangle[maxnbt];
+			_assert_(triangles);
+		}
+		else{
+			vertices=NULL;
+			orderedvertices=NULL;
+			triangles=NULL;
+			maxnbt=0;
+		} 
+	}
+	/*}}}*/
+	void Mesh::Insert(bool random) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Insert)*/
+
+		/*Insert points in the existing Geometry*/
+
+		//Intermediary
+		int i;
+
+		/*Get options*/
+		long int verbose=2;
+
+		//Display info
+		if (verbose>2) _printf_("   Insert initial " << nbv << " vertices\n");
+
+		//Compute integer coordinates for the existing vertices
+		SetIntCoor();
+
+		/*Now we want to build a list (orderedvertices) of the vertices in a random
+		 * order. To do so, we use the following method:
+		 *
+		 * From an initial k0 in [0 nbv[ random (vertex number)
+		 * the next k (vertex number) is computed using a big
+		 * prime number (PN>>nbv) following:
+		 *
+		 * k_{i+1} = k_i + PN  [nbv]
+		 *
+		 * let's show that:
+		 *
+		 *   for all j in [0 nbv[, ∃! i in [0 nbv[ such that k_i=j
+		 *
+		 * Let's assume that there are 2 distinct j1 and j2 such that
+		 * k_j1 = k_j2
+		 *
+		 * This means that
+		 *  
+		 *  k0+j1*PN = k0+j2*PN [nbv]
+		 *  (j1-j2)*PN =0       [nbv]
+		 * since PN is a prime number larger than nbv, and nbv!=1
+		 *  j1-j2=0             [nbv]
+		 * BUT
+		 *  j1 and j2 are in [0 nbv[ which is impossible.
+		 *
+		 *  We hence have built a random list of nbv elements of
+		 *  [0 nbv[ all distincts*/
+
+		//Get Prime number
+		const long PrimeNumber= BigPrimeNumber(nbv);
+		int temp = rand(); if(!random) temp = 756804110;
+		int  k0=temp%nbv; 
+
+		//Build orderedvertices
+		for (i=0; i<nbv; i++){
+			orderedvertices[i]=&vertices[k0=(k0+PrimeNumber)%nbv];
+		}
+
+		/*Modify orderedvertices such that the first 3 vertices form a triangle*/
+
+		//get first vertex i such that [0,1,i] are not aligned
+		for (i=2; det(orderedvertices[0]->i,orderedvertices[1]->i,orderedvertices[i]->i)==0;){
+			//if i is higher than nbv, it means that all the determinants are 0,
+			//all vertices are aligned!
+			if  (++i>=nbv) _error_("all the vertices are aligned");
+		}
+		// exchange i et 2 in "orderedvertices" so that
+		// the first 3 vertices are not aligned (real triangle)
+		Exchange(orderedvertices[2], orderedvertices[i]);
+
+		/*Take the first edge formed by the first two vertices and build
+		 * the initial simple mesh from this edge and 2 boundary triangles*/
+
+		BamgVertex *v0=orderedvertices[0], *v1=orderedvertices[1];
+
+		nbt = 2;
+		triangles[0](0) = NULL;//infinite vertex
+		triangles[0](1) = v0;
+		triangles[0](2) = v1;
+		triangles[1](0) = NULL;//infinite vertex
+		triangles[1](2) = v0;
+		triangles[1](1) = v1;
+
+		//Build adjacence
+		const int e0 = OppositeEdge[0];
+		const int e1 = NextEdge[e0];
+		const int e2 = PreviousEdge[e0];
+		triangles[0].SetAdj2(e0, &triangles[1] ,e0);
+		triangles[0].SetAdj2(e1, &triangles[1] ,e2);
+		triangles[0].SetAdj2(e2, &triangles[1] ,e1);
+
+		triangles[0].det = -1;  //boundary triangle: det = -1
+		triangles[1].det = -1;  //boundary triangle: det = -1
+
+		triangles[0].SetSingleVertexToTriangleConnectivity();
+		triangles[1].SetSingleVertexToTriangleConnectivity();
+
+		triangles[0].link=&triangles[1];
+		triangles[1].link=&triangles[0];
+
+		//build quadtree
+		if (!quadtree)  quadtree = new BamgQuadtree(this,0);
+		quadtree->Add(*v0);
+		quadtree->Add(*v1);
+
+		/*Now, add the vertices One by One*/
+		long NbSwap=0;
+		if (verbose>3) _printf_("   Begining of insertion process...\n");
+
+		for (int icount=2; icount<nbv; icount++) {
+
+			//Get new vertex
+			BamgVertex *newvertex=orderedvertices[icount];
+
+			//Find the triangle in which newvertex is located
+			Icoor2 det3[3];
+			Triangle* tcvi = TriangleFindFromCoord(newvertex->i,det3); //(newvertex->i = integer coordinates)
+
+			//Add newvertex to the quadtree
+			quadtree->Add(*newvertex); 
+
+			//Add newvertex to the existing mesh
+			AddVertex(*newvertex,tcvi,det3);
+
+			//Make the mesh Delaunay around newvertex by swaping the edges
+			NbSwap += newvertex->Optim(1,0);
+		}
+
+		//Display info
+		if (verbose>3) {
+			_printf_("      NbSwap of insertion: " << NbSwap << "\n");
+			_printf_("      NbSwap/nbv:          " << NbSwap/nbv << "\n");
+		}
+	}
+	/*}}}*/
+	long Mesh::InsertNewPoints(long nbvold,long & NbTSwap,bool random) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/InsertNewPoints)*/
+
+		long int verbose=0;
+		double seuil= 1.414/2 ;// for two close point 
+		long i;
+		long NbSwap=0;
+		Icoor2 det3[3];
+
+		//number of new points
+		const long nbvnew=nbv-nbvold;
+
+		//display info if required
+		if (verbose>5) _printf_("      Try to Insert " << nbvnew << " new points\n");
+
+		//return if no new points
+		if (!nbvnew) return 0; 
+
+		/*construction of a random order*/
+		const long PrimeNumber= BigPrimeNumber(nbv)  ;
+		//remainder of the division of rand() by nbvnew
+		int  temp = rand(); if(!random) temp = 1098566905;
+		long k3 = temp%nbvnew;
+		//loop over the new points
+		for (int is3=0; is3<nbvnew; is3++){
+			long j=nbvold +(k3 = (k3+PrimeNumber)%nbvnew);
+			long i=nbvold+is3; 
+			orderedvertices[i]= vertices + j;
+			orderedvertices[i]->ReferenceNumber=i;
+		}
+
+		// for all the new point
+		long iv=nbvold;
+		for(i=nbvold;i<nbv;i++){
+			BamgVertex &vi=*orderedvertices[i];
+			vi.i=R2ToI2(vi.r);
+			vi.r=I2ToR2(vi.i);
+			double hx,hy;
+			vi.m.Box(hx,hy);
+			Icoor1 hi=(Icoor1) (hx*coefIcoor),hj=(Icoor1) (hy*coefIcoor);
+			if(!quadtree->ToClose(vi,seuil,hi,hj)){
+				// a good new point 
+				BamgVertex &vj = vertices[iv];
+				long  j=vj.ReferenceNumber; 
+				if (&vj!=orderedvertices[j]){
+					_error_("&vj!= orderedvertices[j]");
+				}
+				if(i!=j){ 
+					Exchange(vi,vj);
+					Exchange(orderedvertices[j],orderedvertices[i]);
+				}
+				vj.ReferenceNumber=0; 
+				Triangle *tcvj=TriangleFindFromCoord(vj.i,det3);
+				if (tcvj && !tcvj->link){
+					_printf_("While trying to add the following point:\n");
+					vj.Echo();
+					_printf_("BAMG determined that it was inside the following triangle, which probably lies outside of the geometric domain\n");
+					tcvj->Echo();
+					_error_("problem inserting point in InsertNewPoints (tcvj=" << tcvj << " and tcvj->link=" << tcvj->link << ")");
+				}
+				quadtree->Add(vj);
+				AddVertex(vj,tcvj,det3);
+				NbSwap += vj.Optim(1);          
+				iv++;
+			}
+			else{
+				vi.PreviousNumber = 0;
+			}
+		} 
+		if (verbose>3) {
+			_printf_("         number of new points: " << iv << "\n");
+			_printf_("         number of to close (?) points: " << nbv-iv << "\n");
+			_printf_("         number of swap after: " << NbSwap << "\n");
+		}
+		nbv = iv;
+
+		for (i=nbvold;i<nbv;i++) NbSwap += vertices[i].Optim(1);  
+		if (verbose>3) _printf_("   NbSwap=" << NbSwap << "\n");
+
+		NbTSwap +=  NbSwap ;
+		return nbv-nbvold;
+	}
+	/*}}}*/
+	Edge** Mesh::MakeGeomEdgeToEdge() {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/MakeGeomEdgeToEdge)*/
+
+		if (!Gh.nbe){
+			_error_("!Gh.nbe");
+		}
+		Edge **e= new Edge* [Gh.nbe];
+
+		long i;
+		for ( i=0;i<Gh.nbe ; i++)
+		 e[i]=NULL;
+		for ( i=0;i<nbe ; i++) 
+		  { 
+			Edge * ei = edges+i;
+			GeomEdge *GeomEdgeHook = ei->GeomEdgeHook; 
+			e[Gh.GetId(GeomEdgeHook)] = ei;    
+		  }
+		for ( i=0;i<nbe ; i++) 
+		 for (int ii=0;ii<2;ii++) { 
+			 Edge * ei = edges+i;
+			 GeomEdge *GeomEdgeHook = ei->GeomEdgeHook;
+			 int j= ii;
+			 while (!(*GeomEdgeHook)[j].Required()) { 
+				 Adj(GeomEdgeHook,j); // next geom edge
+				 j=1-j;
+				 if (e[Gh.GetId(GeomEdgeHook)])  break; // optimisation
+				 e[Gh.GetId(GeomEdgeHook)] = ei; 
+			 }
+		 }
+
+		int kk=0;
+		for ( i=0;i<Gh.nbe ; i++){
+			if (!e[i]){
+				kk++;
+				if(kk<10) _printf_("BUG: the geometrical edge " << i << " is on no edge curve\n");
+			}
+		}
+		if(kk) _error_("See above");
+
+		return e;
+	}
+	/*}}}*/
+	void Mesh::MakeQuadrangles(double costheta){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/MakeQuadrangles)*/
+
+		long int verbose=0;
+
+		if (verbose>2) _printf_("MakeQuadrangles costheta = " << costheta << "\n");
+
+		if (costheta >1) {
+			if (verbose>5) _printf_("   do nothing: costheta > 1\n");
+		}
+
+			long nbqq = (nbt*3)/2;
+			DoubleAndInt *qq = new DoubleAndInt[nbqq];
+
+			long i,ij;
+			int j;
+			long k=0;
+			for (i=0;i<nbt;i++)
+			 for (j=0;j<3;j++)
+			  if ((qq[k].q=triangles[i].QualityQuad(j))>=costheta)
+				qq[k++].i3j=i*3+j;
+			//  sort  qq
+			HeapSort(qq,k);
+
+			long kk=0;
+			for (ij=0;ij<k;ij++) { 
+				i=qq[ij].i3j/3;
+				j=(int) (qq[ij].i3j%3);
+				// optisamition no float computation  
+				if (triangles[i].QualityQuad(j,0) >=costheta) 
+				 triangles[i].SetHidden(j),kk++;
+			  }
+			nbq = kk;
+			if (verbose>2){
+				_printf_("   number of quadrilaterals    = " << nbq << "\n");
+				_printf_("   number of triangles         = " << nbt-nbtout- nbq*2 << "\n");
+				_printf_("   number of outside triangles = " << nbtout << "\n");
+			}
+			delete [] qq;
+	}
+	/*}}}*/
+	void Mesh::MakeBamgQuadtree() {  /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/MakeBamgQuadtree)*/
+		if(!quadtree) quadtree = new BamgQuadtree(this);
+	}
+	/*}}}*/
+	double Mesh::MaximalHmax() {/*{{{*/
+		return Max(pmax.x-pmin.x,pmax.y-pmin.y);
+	}
+	/*}}}*/
+	void  Mesh::MaxSubDivision(double maxsubdiv) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/MaxSubDivision)*/
+
+		long int verbose=0;
+
+		const  double maxsubdiv2 = maxsubdiv*maxsubdiv;
+		if(verbose>1) _printf_("   Limit the subdivision of a edges in the new mesh by " << maxsubdiv << "\n");
+		// for all the edges 
+		// if the len of the edge is to long 
+		long it,nbchange=0;    
+		double lmax=0;
+		for (it=0;it<nbt;it++){
+			Triangle &t=triangles[it];
+			for (int j=0;j<3;j++){
+				Triangle *ptt=t.TriangleAdj(j);
+				Triangle &tt = *ptt;
+				if ( (!ptt ||  it < GetId(tt)) && ( tt.link || t.link)){
+					BamgVertex &v0 = t[VerticesOfTriangularEdge[j][0]];
+					BamgVertex &v1 = t[VerticesOfTriangularEdge[j][1]];
+					R2 AB= (R2) v1-(R2) v0;
+					Metric M = v0;
+					double l = M(AB,AB);
+					lmax = Max(lmax,l);
+					if(l> maxsubdiv2){
+					  R2 AC = M.Orthogonal(AB);// the ortogonal vector of AB in M
+						double lc = M(AC,AC);
+						D2xD2 Rt(AB,AC);// Rt.x = AB , Rt.y = AC;
+						D2xD2 Rt1(Rt.inv());
+						D2xD2 D(maxsubdiv2,0,0,lc);
+						D2xD2 MM = Rt1*D*Rt1.t();
+						v0.m =  M = Metric(MM.x.x,MM.y.x,MM.y.y);
+						nbchange++;
+					}
+					M = v1;
+					l = M(AB,AB);
+					lmax = Max(lmax,l);
+					if(l> maxsubdiv2){
+					  R2 AC = M.Orthogonal(AB);// the ortogonal vector of AB in M
+						double lc = M(AC,AC);
+						D2xD2 Rt(AB,AC);// Rt.x = AB , Rt.y = AC;
+						D2xD2 Rt1(Rt.inv());
+						D2xD2 D(maxsubdiv2,0,0,lc);
+						D2xD2  MM = Rt1*D*Rt1.t();
+						v1.m =  M = Metric(MM.x.x,MM.y.x,MM.y.y);
+						nbchange++;
+					}
+				}
+			}
+		}
+		if(verbose>3){
+			_printf_("      number of metric changes = " << nbchange << ", maximum number of subdivision of a edges before change = " << pow(lmax,0.5) << "\n");
+		}
+	}
+	/*}}}*/
+	Metric Mesh::MetricAt(const R2 & A) const { /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/MetricAt)*/
+
+		I2 a = R2ToI2(A);
+		Icoor2 deta[3];
+		Triangle * t =TriangleFindFromCoord(a,deta);
+		if (t->det <0) { // outside
+			double ba,bb;
+			AdjacentTriangle edge= CloseBoundaryEdge(a,t,ba,bb) ;
+			return Metric(ba,*edge.EdgeVertex(0),bb,*edge.EdgeVertex(1));}
+		else { // inside
+			double   aa[3];
+			double s = deta[0]+deta[1]+deta[2];
+			aa[0]=deta[0]/s;
+			aa[1]=deta[1]/s;
+			aa[2]=deta[2]/s;
+			return Metric(aa,(*t)[0],(*t)[1],(*t)[2]);
+		}
+	}
+	/*}}}*/
+	double Mesh::MinimalHmin() {/*{{{*/
+		return 2.0/coefIcoor;
+	}
+	/*}}}*/
+	BamgVertex* Mesh::NearestVertex(Icoor1 i,Icoor1 j) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/NearestVertex)*/
+		return  quadtree->NearestVertex(i,j); 
+	} 
+	/*}}}*/
+	void  Mesh::NewPoints(Mesh & Bh,BamgOpts* bamgopts,int KeepVertices){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/NewPoints)*/
+
+		int i,j,k;
+		long NbTSwap=0;
+		long nbtold=nbt;
+		long nbvold=nbv;
+		long Headt=0;
+		long next_t;
+		long* first_np_or_next_t=new long[maxnbt];
+		Triangle* t=NULL;
+
+		/*Recover options*/
+		int verbose=bamgopts->verbose;
+
+		/*First, insert old points if requested*/
+		if(KeepVertices && (&Bh != this) && (nbv+Bh.nbv< maxnbv)){
+			if (verbose>5) _printf_("         Inserting initial mesh points\n");
+			bool pointsoutside = false;
+			for(i=0;i<Bh.nbv;i++){ 
+				BamgVertex &bv=Bh[i];
+				/*Do not insert if the point is outside*/
+				long long det3[3];
+				Triangle* tcvj=TriangleFindFromCoord(bv.i,det3);
+				if(tcvj->det<0 || !tcvj->link){
+					pointsoutside = true;
+					continue;
+				}
+				IssmDouble area_1=((bv.r.x -(*tcvj)(2)->r.x)*((*tcvj)(1)->r.y-(*tcvj)(2)->r.y) 
+						- (bv.r.y -(*tcvj)(2)->r.y)*((*tcvj)(1)->r.x-(*tcvj)(2)->r.x));
+				IssmDouble area_2=(((*tcvj)(0)->r.x -(*tcvj)(2)->r.x)*(bv.r.y -(*tcvj)(2)->r.y) 
+						- ((*tcvj)(0)->r.y -(*tcvj)(2)->r.y)*(bv.r.x -(*tcvj)(2)->r.x));
+				IssmDouble area_3 =((bv.r.x -(*tcvj)(1)->r.x)*((*tcvj)(0)->r.y-(*tcvj)(1)->r.y)
+						- (bv.r.y -(*tcvj)(1)->r.y)*((*tcvj)(0)->r.x-(*tcvj)(1)->r.x));
+				if(area_1<0 || area_2<0 || area_3<0){
+					pointsoutside = true;
+					continue;
+				}
+				if(!bv.GeomEdgeHook){
+					vertices[nbv].r              = bv.r;
+					vertices[nbv].PreviousNumber = i+1;
+					vertices[nbv++].m = bv.m;
+				}
+			}
+			if(pointsoutside) _printf_("WARNING: One or more points of the initial mesh fall outside of the geometric boundary\n");
+			Bh.CreateSingleVertexToTriangleConnectivity();     
+			InsertNewPoints(nbvold,NbTSwap,bamgopts->random);
+		}
+		else Bh.CreateSingleVertexToTriangleConnectivity();     
+
+		// generation of the list of next Triangle 
+		for(i=0;i<nbt;i++) first_np_or_next_t[i]=-(i+1);
+		// the next traingle of i is -first_np_or_next_t[i]
+
+		// Big loop (most time consuming)
+		int iter=0;
+		if (verbose>5) _printf_("         Big loop\n");
+		do {
+			/*Update variables*/
+			iter++;
+			nbtold=nbt;
+			nbvold=nbv;
+
+			/*We test all triangles*/
+			i=Headt;
+			next_t=-first_np_or_next_t[i];
+			for(t=&triangles[i];i<nbt;t=&triangles[i=next_t],next_t=-first_np_or_next_t[i]){
+
+				//check i
+				if (i<0 || i>=nbt ){
+					_error_("Index problem in NewPoints (i=" << i << " not in [0 " << nbt-1 << "])");
+				}
+				//change first_np_or_next_t[i]
+				first_np_or_next_t[i] = iter; 
+
+				//Loop over the edges of t
+				for(j=0;j<3;j++){
+					AdjacentTriangle tj(t,j);
+					BamgVertex &vA = *tj.EdgeVertex(0);
+					BamgVertex &vB = *tj.EdgeVertex(1);
+
+					//if t is a boundary triangle, or tj locked, continue
+					if (!t->link)     continue;
+					if (t->det <0)    continue;
+					if (t->Locked(j)) continue;
+
+					AdjacentTriangle tadjj = t->Adj(j);	  
+					Triangle* ta=tadjj;
+
+					//if the adjacent triangle is a boundary triangle, continur
+					if (ta->det<0) continue;	  
+
+					R2 A=vA;
+					R2 B=vB;
+					k=GetId(ta);
+
+					//if this edge has already been done, go to next edge of triangle
+					if(first_np_or_next_t[k]==iter) continue;
+
+					lIntTria.SplitEdge(Bh,A,B);
+					lIntTria.NewPoints(vertices,nbv,maxnbv);
+				} // end loop for each edge 
+			}// for triangle   
+
+			if (!InsertNewPoints(nbvold,NbTSwap,bamgopts->random)) break;
+			for (i=nbtold;i<nbt;i++) first_np_or_next_t[i]=iter;
+			Headt = nbt; // empty list 
+
+			// for all the triangle containing the vertex i
+			for (i=nbvold;i<nbv;i++){ 
+				BamgVertex*          s  = vertices + i;
+				AdjacentTriangle ta(s->t, EdgesVertexTriangle[s->IndexInTriangle][1]);
+				Triangle*        tbegin= (Triangle*) ta;
+				long kt;
+				do { 
+					kt = GetId((Triangle*) ta);
+					if (first_np_or_next_t[kt]>0){
+						first_np_or_next_t[kt]=-Headt;
+						Headt=kt;
+					}
+					if (ta.EdgeVertex(0)!=s){
+						_error_("ta.EdgeVertex(0)!=s");
+					}
+					ta = Next(Adj(ta));
+				} while ( (tbegin != (Triangle*) ta)); 
+			}
+
+		}while(nbv!=nbvold);
+		delete [] first_np_or_next_t;
+
+		long NbSwapf =0;
+		for(i=0;i<nbv;i++) NbSwapf += vertices[i].Optim(0);
+	}/*}}}*/
+	GeomEdge*   Mesh::ProjectOnCurve( Edge & BhAB, BamgVertex &  vA, BamgVertex & vB,/*{{{*/
+				double theta,BamgVertex & R,VertexOnEdge &  BR,VertexOnGeom & GR) {
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshQuad.cpp/ProjectOnCurve)*/
+
+		void *pA=0,*pB=0;
+		double tA=0,tB=0;
+		R2 A=vA,B=vB;
+		BamgVertex * pvA=&vA, * pvB=&vB;
+		if (vA.IndexInTriangle == IsVertexOnVertex){
+			pA=vA.BackgroundVertexHook;
+		}
+		else if (vA.IndexInTriangle == IsVertexOnEdge){
+			pA=vA.BackgroundEdgeHook->be;
+			tA=vA.BackgroundEdgeHook->abcisse;
+		}
+		else {
+			_error_("ProjectOnCurve On BamgVertex " << BTh.GetId(vA) << " forget call to SetVertexFieldOnBTh");
+		} 
+
+		if (vB.IndexInTriangle == IsVertexOnVertex){
+			pB=vB.BackgroundVertexHook;
+		}
+		else if(vB.IndexInTriangle == IsVertexOnEdge){
+			pB=vB.BackgroundEdgeHook->be;
+			tB=vB.BackgroundEdgeHook->abcisse;
+		}
+		else {
+			_error_("ProjectOnCurve On BamgVertex " << BTh.GetId(vB) << " forget call to SetVertexFieldOnBTh");
+		} 
+		Edge * e = &BhAB;
+		if (!pA || !pB || !e){
+			_error_("!pA || !pB || !e");
+		}
+		// be carefull the back ground edge e is on same geom edge 
+		// of the initiale edge def by the 2 vertex A B;
+		//check Is a background Mesh;   
+		if (e<BTh.edges || e>=BTh.edges+BTh.nbe){
+			_error_("e<BTh.edges || e>=BTh.edges+BTh.nbe");
+		}
+		// walk on BTh edge 
+		//not finish ProjectOnCurve with BackGround Mesh);
+		// 1 first find a back ground edge contening the vertex A
+		// 2 walk n back gound boundary to find the final vertex B
+
+		if( vA.IndexInTriangle == IsVertexOnEdge) 
+		  { // find the start edge 
+			e = vA.BackgroundEdgeHook->be;	 
+
+		  } 
+		else if (vB.IndexInTriangle == IsVertexOnEdge) 
+		  {
+			theta = 1-theta;
+			Exchange(tA,tB);
+			Exchange(pA,pB);
+			Exchange(pvA,pvB);
+			Exchange(A,B);
+			e =  vB.BackgroundEdgeHook->be;
+
+		  } 
+		else{ // do the search by walking 
+			_error_("case not supported yet");
+		}
+
+		// find the direction of walking with direction of edge and pA,PB;
+		R2 AB=B-A;
+
+		double cosE01AB = (( (R2) (*e)[1] - (R2) (*e)[0] ) , AB);
+		int kkk=0;
+		int direction = (cosE01AB>0) ? 1 : 0;
+
+		//   double l=0; // length of the edge AB
+		double abscisse = -1;
+
+		for (int step=0;step<2;step++){
+			// 2 times algo:
+			//    1 for computing the length l
+			//    2 for find the vertex 
+			int  iii;
+			BamgVertex  *v0=pvA,*v1; 
+			Edge *neee,*eee;
+			double lg =0; // length of the curve 
+			double te0;
+			// we suppose take the curve's abcisse 
+			for ( eee=e,iii=direction,te0=tA;
+						eee && ((( void*) eee) != pB) && (( void*) (v1=&((*eee)[iii]))) != pB ;
+						neee = eee->adj[iii],iii = 1-neee->Intersection(*eee),eee = neee,v0=v1,te0=1-iii ) { 
+
+				kkk=kkk+1;
+				_assert_(kkk<100);
+				_assert_(eee);
+				double lg0 = lg;
+				double dp = LengthInterpole(v0->m,v1->m,(R2) *v1 - (R2) *v0);
+				lg += dp;
+				if (step && abscisse <= lg) { // ok we find the geom edge 
+					double sss  =   (abscisse-lg0)/dp;
+					double thetab = te0*(1-sss)+ sss*iii;
+					_assert_(thetab>=0 && thetab<=1);
+					BR = VertexOnEdge(&R,eee,thetab);
+					return  Gh.ProjectOnCurve(*eee,thetab,R,GR);
+				}
+			}
+			// we find the end 
+			if (v1 != pvB){
+				if (( void*) v1 == pB)
+				 tB = iii;
+
+				double lg0 = lg;
+				_assert_(eee);
+				v1 = pvB;
+				double dp = LengthInterpole(v0->m,v1->m,(R2) *v1 - (R2) *v0);
+				lg += dp;	
+				abscisse = lg*theta;
+				if (abscisse <= lg && abscisse >= lg0 ) // small optimisation we know the lenght because end
+				  { // ok we find the geom edge 
+					double sss  =   (abscisse-lg0)/dp;
+					double thetab = te0*(1-sss)+ sss*tB;
+					_assert_(thetab>=0 && thetab<=1);
+					BR = VertexOnEdge(&R,eee,thetab);
+					return  Gh.ProjectOnCurve(*eee,thetab,R,GR);
+				  }
+			}
+			abscisse = lg*theta;
+
+		}
+		_error_("Big bug...");
+		return 0; // just for the compiler 
+	}                  
+	/*}}}*/
+	void Mesh::ReconstructExistingMesh(){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/FillHoleInMesh)*/
+
+		/*This routine reconstruct an existing mesh to make it CONVEX:
+		 * -all the holes are filled
+		 * -concave boundaries are filled
+		 * A convex mesh is required for a lot of operations. This is why every mesh
+		 * goes through this process.
+		 * This routine also generates mesh properties such as adjencies,...
+		 */
+
+		/*Intermediary*/
+		int verbose=0;
+
+		// generation of the integer coordinate
+
+		// find extrema coordinates of vertices pmin,pmax
+		long i;
+		if(verbose>2) _printf_("      Reconstruct mesh of " << nbv << " vertices\n"); 
+
+		//initialize orderedvertices
+		_assert_(orderedvertices);
+		for (i=0;i<nbv;i++) orderedvertices[i]=0;
+
+		//Initialize nbsubdomains
+		nbsubdomains =0;
+
+		/* generation of triangles adjacency*/
+
+		//First add existing edges
+		long kk =0;
+		SetOfEdges4* edge4= new SetOfEdges4(nbt*3,nbv);
+		for (i=0;i<nbe;i++){
+			kk=kk+(i==edge4->SortAndAdd(GetId(edges[i][0]),GetId(edges[i][1])));
+		}
+		if (kk != nbe){ 
+			_error_("There are " << kk-nbe << " double edges in the mesh");
+		}
+
+		//Add edges of all triangles in existing mesh
+		long* st = new long[nbt*3];
+		for (i=0;i<nbt*3;i++) st[i]=-1;
+		for (i=0;i<nbt;i++){
+			for (int j=0;j<3;j++){
+
+				//Add current triangle edge to edge4
+				long k =edge4->SortAndAdd(GetId(triangles[i][VerticesOfTriangularEdge[j][0]]),GetId(triangles[i][VerticesOfTriangularEdge[j][1]]));
+
+				long invisible=triangles[i].Hidden(j);
+
+				//If the edge has not been added to st, add it
+				if(st[k]==-1) st[k]=3*i+j;
+
+				//If the edge already exists, add adjacency
+				else if(st[k]>=0) {
+					_assert_(!triangles[i].TriangleAdj(j));
+					_assert_(!triangles[st[k]/3].TriangleAdj((int) (st[k]%3)));
+
+					triangles[i].SetAdj2(j,triangles+st[k]/3,(int)(st[k]%3));
+					if (invisible) triangles[i].SetHidden(j);
+					if (k<nbe)     triangles[i].SetLocked(j);
+
+					//Make st[k] negative so that it will throw an error message if it is found again
+					st[k]=-2-st[k]; 
+				}
+
+				//An edge belongs to 2 triangles
+				else {
+					_error_("The edge (" << GetId(triangles[i][VerticesOfTriangularEdge[j][0]]) << " , " << GetId(triangles[i][VerticesOfTriangularEdge[j][1]]) << ") belongs to more than 2 triangles");
+				}
+			}
+		}
+
+		//Display info if required
+		if(verbose>5) {
+			_printf_("         info of Mesh:\n");
+			_printf_("            - number of vertices    = " << nbv << " \n"); 
+			_printf_("            - number of triangles   = " << nbt << " \n"); 
+			_printf_("            - number of given edges = " << nbe << " \n"); 
+			_printf_("            - number of all edges   = " << edge4->nb() << "\n"); 
+			_printf_("            - Euler number 1 - nb of holes = " << nbt-edge4->nb()+nbv << "\n"); 
+		}
+
+		//check the consistency of edge[].adj and the geometrical required vertex
+		long k=0;
+		for (i=0;i<edge4->nb();i++){
+			if (st[i]>=0){ // edge alone 
+				if (i<nbe){
+					long i0=edge4->i(i);
+					orderedvertices[i0] = vertices+i0;
+					long i1=edge4->j(i);
+					orderedvertices[i1] = vertices+i1;
+				}
+				else {
+					k=k+1;
+					if (k<10) {
+						//print only 10 edges
+						_printf_("Lost boundary edges " << i << " : " << edge4->i(i) << " " << edge4->j(i) << "\n");
+					}
+					else if (k==10){
+						_printf_("Other lost boundary edges not shown...\n");
+					}
+				}
+			}
+		}
+		if(k) {
+			_error_(k << " boundary edges (from the geometry) are not defined as mesh edges");
+		}
+
+		/* mesh generation with boundary points*/
+		long nbvb=0;
+		for (i=0;i<nbv;i++){ 
+			vertices[i].t=0;
+			vertices[i].IndexInTriangle=0;
+			if (orderedvertices[i]) orderedvertices[nbvb++]=orderedvertices[i];
+		}
+
+		Triangle* savetriangles=triangles;
+		long savenbt=nbt;
+		long savemaxnbt=maxnbt;
+		SubDomain* savesubdomains=subdomains;
+		subdomains=0;
+
+		long  Nbtriafillhole=2*nbvb;
+		Triangle* triafillhole=new Triangle[Nbtriafillhole];
+		triangles = triafillhole;
+
+		nbt=2;
+		maxnbt= Nbtriafillhole;
+
+		//Find a vertex that is not aligned with vertices 0 and 1
+		for (i=2;det(orderedvertices[0]->i,orderedvertices[1]->i,orderedvertices[i]->i)==0;) 
+		 if  (++i>=nbvb) {
+			 _error_("ReconstructExistingMesh: All the vertices are aligned");
+		 }
+		//Move this vertex (i) to the 2d position in orderedvertices
+		Exchange(orderedvertices[2], orderedvertices[i]);
+
+		/*Reconstruct mesh beginning with 2 triangles*/
+		BamgVertex *  v0=orderedvertices[0], *v1=orderedvertices[1];
+
+		triangles[0](0) = NULL; // Infinite vertex
+		triangles[0](1) = v0;
+		triangles[0](2) = v1;
+
+		triangles[1](0) = NULL;// Infinite vertex
+		triangles[1](2) = v0;
+		triangles[1](1) = v1;
+		const int e0 = OppositeEdge[0];
+		const int e1 = NextEdge[e0];
+		const int e2 = PreviousEdge[e0];
+		triangles[0].SetAdj2(e0, &triangles[1] ,e0);
+		triangles[0].SetAdj2(e1, &triangles[1] ,e2);
+		triangles[0].SetAdj2(e2, &triangles[1] ,e1);
+
+		triangles[0].det = -1;  // boundary triangles
+		triangles[1].det = -1;  // boundary triangles
+
+		triangles[0].SetSingleVertexToTriangleConnectivity();
+		triangles[1].SetSingleVertexToTriangleConnectivity();
+
+		triangles[0].link=&triangles[1];
+		triangles[1].link=&triangles[0];
+
+		if (!quadtree) delete quadtree; //ReInitialise;
+		quadtree = new BamgQuadtree(this,0);
+		quadtree->Add(*v0);
+		quadtree->Add(*v1);
+
+		// vertices are added one by one
+		long NbSwap=0;
+		for (int icount=2; icount<nbvb; icount++) {
+			BamgVertex *vi  = orderedvertices[icount];
+			Icoor2 det3[3];
+			Triangle *tcvi = TriangleFindFromCoord(vi->i,det3);
+			quadtree->Add(*vi); 
+			AddVertex(*vi,tcvi,det3);
+			NbSwap += vi->Optim(1,1);
+		}
+
+		//enforce the boundary 
+		AdjacentTriangle ta(0,0);
+		long nbloss = 0,knbe=0;
+		for ( i = 0; i < nbe; i++){
+			if (st[i] >=0){ //edge alone => on border
+				BamgVertex &a=edges[i][0], &b=edges[i][1];
+				if (a.t && b.t){
+					knbe++;
+					if (ForceEdge(a,b,ta)<0) nbloss++;
+				}
+			}
+		}
+		if(nbloss) {
+			_error_("we lost " << nbloss << " existing edges other " << knbe);
+		}
+
+		FindSubDomain(1);
+		// remove all the hole 
+		// remove all the good sub domain
+		long krm =0;
+		for (i=0;i<nbt;i++){
+			if (triangles[i].link){ // remove triangles
+				krm++;
+				for (int j=0;j<3;j++){
+					AdjacentTriangle ta =  triangles[i].Adj(j);
+					Triangle &tta = *(Triangle*)ta;
+					//if edge between remove and not remove 
+					if(! tta.link){ 
+						// change the link of ta;
+						int ja = ta;
+						BamgVertex *v0= ta.EdgeVertex(0);
+						BamgVertex *v1= ta.EdgeVertex(1);
+						long k =edge4->SortAndAdd(v0?GetId(v0):nbv,v1? GetId(v1):nbv);
+
+						_assert_(st[k]>=0);
+						tta.SetAdj2(ja,savetriangles + st[k] / 3,(int) (st[k]%3));
+						ta.SetLock();
+						st[k]=-2-st[k]; 
+					}
+				}
+			}
+		}
+		long NbTfillHoll =0;
+		for (i=0;i<nbt;i++){
+			if (triangles[i].link) {
+				triangles[i]=Triangle((BamgVertex *) NULL,(BamgVertex *) NULL,(BamgVertex *) NULL);
+				triangles[i].color=-1;
+			}
+			else{
+				triangles[i].color= savenbt+ NbTfillHoll++;
+			}
+		}
+		_assert_(savenbt+NbTfillHoll<=savemaxnbt);
+
+		// copy of the outside triangles in saveMesh 
+		for (i=0;i<nbt;i++){
+			if(triangles[i].color>=0) {
+				savetriangles[savenbt]=triangles[i];
+				savetriangles[savenbt].link=0;
+				savenbt++;
+			}
+		}
+		// gestion of the adj
+		k =0;
+		Triangle * tmax = triangles + nbt;
+		for (i=0;i<savenbt;i++) { 
+			Triangle & ti = savetriangles[i];
+			for (int j=0;j<3;j++){
+				Triangle * ta = ti.TriangleAdj(j);
+				int aa = ti.NuEdgeTriangleAdj(j);
+				int lck = ti.Locked(j);
+				if (!ta) k++; // bug 
+				else if ( ta >= triangles && ta < tmax){
+					ta= savetriangles + ta->color;
+					ti.SetAdj2(j,ta,aa);
+					if(lck) ti.SetLocked(j);
+				}
+			}
+		}
+
+		// restore triangles;
+		nbt=savenbt;
+		maxnbt=savemaxnbt;
+		delete [] triangles;
+		delete [] subdomains;
+		triangles = savetriangles;
+		subdomains = savesubdomains;
+		if (k) {
+			_error_("number of triangles edges alone = " << k);
+		}
+		FindSubDomain();
+
+		delete edge4;
+		delete [] st;
+		for (i=0;i<nbv;i++) quadtree->Add(vertices[i]);
+
+		SetVertexFieldOn();
+
+		/*Check requirements consistency*/
+		for (i=0;i<nbe;i++){
+			/*If the current mesh edge is on Geometry*/
+			if(edges[i].GeomEdgeHook){
+				for(int j=0;j<2;j++){
+					/*Go through the edges adjacent to current edge (if on the same curve)*/
+					if (!edges[i].adj[j]){
+						/*The edge is on Geometry and does not have 2 adjacent edges... (not on a closed curve)*/
+						/*Check that the 2 vertices are on geometry AND required*/
+						if(!edges[i][j].GeomEdgeHook->IsRequiredVertex()){
+							_printf_("ReconstructExistingMesh error message: problem with the edge number " << i+1 << ": [" << GetId(edges[i][0])+1 << " " << GetId(edges[i][1])+1 << "]\n");
+							_printf_("This edge is on geometrical edge number " << Gh.GetId(edges[i].GeomEdgeHook)+1 << "\n");
+							if (edges[i][j].GeomEdgeHook->OnGeomVertex())
+							 _printf_("the vertex number " << GetId(edges[i][j])+1 << " of this edge is a geometric BamgVertex number " << Gh.GetId(edges[i][j].GeomEdgeHook->gv)+1 << "\n");
+							else if (edges[i][j].GeomEdgeHook->OnGeomEdge())
+							 _printf_("the vertex number " << GetId(edges[i][j])+1 << " of this edge is a geometric Edge number " << Gh.GetId(edges[i][j].GeomEdgeHook->ge)+1 << "\n");
+							else
+							 _printf_("Its pointer is " << edges[i][j].GeomEdgeHook << "\n");
+
+							_printf_("This edge is on geometry and has no adjacent edge (open curve) and one of the tip is not required\n");
+							_error_("See above (might be cryptic...)");
+						}
+					}
+				}
+			}
+		}
+	}
+	/*}}}*/
+	void Mesh::TrianglesRenumberBySubDomain(bool justcompress){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/ReNumberingTheTriangleBySubDomain)*/
+
+		long *renu= new long[nbt];
+		Triangle *t0,*t,*te=triangles+nbt;
+		long k=0,it,i,j;
+
+		for ( it=0;it<nbt;it++) 
+		 renu[it]=-1; // outside triangle 
+		for ( i=0;i<nbsubdomains;i++)
+		  { 
+			t=t0=subdomains[i].head;
+			if (!t0){ // not empty sub domain
+				_error_("!t0");
+			}
+			do { 
+				long kt = GetId(t);
+				if (kt<0 || kt >= nbt ){
+					_error_("kt<0 || kt >= nbt");
+				}
+				if (renu[kt]!=-1){
+					_error_("renu[kt]!=-1");
+				}
+				renu[kt]=k++;
+			}
+			while (t0 != (t=t->link));
+		  }
+		// take is same numbering if possible    
+		if(justcompress)
+		 for ( k=0,it=0;it<nbt;it++) 
+		  if(renu[it] >=0 ) 
+			renu[it]=k++;
+
+		// put the outside triangles at the end
+		for ( it=0;it<nbt;it++){
+			if (renu[it]==-1) renu[it]=k++;
+		}
+		if (k != nbt){
+			_error_("k != nbt");
+		}
+		// do the change on all the pointeur 
+		for ( it=0;it<nbt;it++)
+		 triangles[it].Renumbering(triangles,te,renu);
+
+		for ( i=0;i<nbsubdomains;i++)
+		 subdomains[i].head=triangles+renu[GetId(subdomains[i].head)];
+
+		// move the Triangles  without a copy of the array 
+		// be carefull not trivial code 
+		for ( it=0;it<nbt;it++) // for all sub cycles of the permutation renu
+		 if (renu[it] >= 0) // a new sub cycle
+			{ 
+			 i=it;
+			 Triangle ti=triangles[i],tj;
+			 while ( (j=renu[i]) >= 0) 
+				{ // i is old, and j is new 
+				 renu[i] = -1; // mark 
+				 tj = triangles[j]; // save new
+				 triangles[j]= ti; // new <- old
+				 i=j;     // next 
+				 ti = tj;
+				}  
+			}
+		delete [] renu;
+
+	}
+	/*}}}*/
+	void Mesh::SetIntCoor(const char * strfrom) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/SetIntCoor)*/
+
+		/*Set integer coordinate for existing vertices*/
+
+		//Get extrema coordinates of the existing vertices
+		pmin =  vertices[0].r;
+		pmax =  vertices[0].r;
+		long i;
+		for (i=0;i<nbv;i++) {
+			pmin.x = Min(pmin.x,vertices[i].r.x);
+			pmin.y = Min(pmin.y,vertices[i].r.y);
+			pmax.x = Max(pmax.x,vertices[i].r.x);
+			pmax.y = Max(pmax.y,vertices[i].r.y);
+		}
+		R2 DD = (pmax-pmin)*0.05;
+		pmin = pmin-DD;
+		pmax = pmax+DD; 
+
+		//Compute coefIcoor
+		coefIcoor= (MaxICoor)/(Max(pmax.x-pmin.x,pmax.y-pmin.y));
+		if (coefIcoor<=0){
+			_error_("coefIcoor should be positive, a problem in the geometry is likely");
+		}
+
+		// generation of integer coord  
+		for (i=0;i<nbv;i++) {
+			vertices[i].i = R2ToI2(vertices[i].r);    
+		}
+
+		// computation of the det 
+		int number_of_errors=0;
+		for (i=0;i<nbt;i++) {
+			BamgVertex* v0 = triangles[i](0);
+			BamgVertex* v1 = triangles[i](1);
+			BamgVertex* v2 = triangles[i](2);
+
+			//If this is not a boundary triangle
+			if (v0 && v1 && v2){
+
+				/*Compute determinant*/
+				triangles[i].det= det(v0->GetIntegerCoordinates(),v1->GetIntegerCoordinates(),v2->GetIntegerCoordinates());
+
+				/*Check that determinant is positive*/
+				if (triangles[i].det <=0){
+
+					/*increase number_of_errors and print error only for the first 20 triangles*/
+					number_of_errors++;
+					if (number_of_errors<20){
+						_printf_("Area of Triangle " << i+1 << " < 0 (det=" << triangles[i].det << ")\n");
+					}
+				}
+			}
+
+			//else, set as -1
+			else triangles[i].det=-1;
+		}
+
+		if (number_of_errors) _error_("Fatal error: some triangles have negative areas, see above");
+	}
+	/*}}}*/
+	void Mesh::SmoothingVertex(int nbiter,double omega ) { /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/SmoothingVertex)*/
+
+		long int verbose=0;
+		//  if quatree exist remove it end reconstruct
+		if (quadtree) delete quadtree;
+		quadtree=0;
+		CreateSingleVertexToTriangleConnectivity();
+		Triangle vide; // a triangle to mark the boundary vertex
+		Triangle   ** tstart= new Triangle* [nbv];
+		long i,j,k;
+		//   attention si Background == Triangle alors on ne peut pas utiliser la rechech rapide 
+		if ( this == & BTh)
+		 for ( i=0;i<nbv;i++)
+		  tstart[i]=vertices[i].t;     
+		else 
+		 for ( i=0;i<nbv;i++)
+		  tstart[i]=0;
+		for ( j=0;j<NbVerticesOnGeomVertex;j++ ) 
+		 tstart[ GetId(VerticesOnGeomVertex[j].meshvertex)]=&vide;
+		for ( k=0;k<NbVerticesOnGeomEdge;k++ ) 
+		 tstart[ GetId(VerticesOnGeomEdge[k].meshvertex)]=&vide;
+		if(verbose>2) _printf_("   SmoothingVertex: nb Iteration = " << nbiter << ", Omega=" << omega << "\n");
+		for (k=0;k<nbiter;k++)
+		  {
+			long i,NbSwap =0;
+			double delta =0;
+			for ( i=0;i<nbv;i++)
+			 if (tstart[i] != &vide) // not a boundary vertex 
+			  delta=Max(delta,vertices[i].Smoothing(*this,BTh,tstart[i],omega));
+			if (!nbq)
+			 for ( i=0;i<nbv;i++)
+			  if (tstart[i] != &vide) // not a boundary vertex 
+				NbSwap += vertices[i].Optim(1);
+			if (verbose>3) _printf_("      move max = " << pow(delta,0.5) << ", iteration = " << k << ", nb of swap = " << NbSwap << "\n");
+		  }
+
+		delete [] tstart;
+		if (quadtree) quadtree= new BamgQuadtree(this);
+	}
+	/*}}}*/
+	void Mesh::SmoothMetric(double raisonmax) { /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/SmoothMetric)*/
+
+		long int verbose=0;
+
+		if(raisonmax<1.1) return;
+		if(verbose > 1) _printf_("   Mesh::SmoothMetric raisonmax = " << raisonmax << "\n");
+		CreateSingleVertexToTriangleConnectivity();
+		long i,j,kch,kk,ip;
+		long *first_np_or_next_t0 = new long[nbv];
+		long *first_np_or_next_t1 = new long[nbv];
+		long Head0 =0,Head1=-1;
+		double logseuil= log(raisonmax);
+
+		for(i=0;i<nbv-1;i++)
+		 first_np_or_next_t0[i]=i+1; 
+		first_np_or_next_t0[nbv-1]=-1;// end;
+		for(i=0;i<nbv;i++)
+		 first_np_or_next_t1[i]=-1;
+		kk=0;
+		while(Head0>=0&& kk++<100){
+			kch=0;
+			for(i=Head0;i>=0;i=first_np_or_next_t0[ip=i],first_np_or_next_t0[ip]=-1) {
+				//  pour tous les triangles autour du sommet s
+				Triangle* t= vertices[i].t;
+				if (!t){
+					_error_("!t");
+				}
+				BamgVertex & vi = vertices[i];
+				AdjacentTriangle ta(t,EdgesVertexTriangle[vertices[i].IndexInTriangle][0]);
+				BamgVertex *pvj0 = ta.EdgeVertex(0);
+				while (1) {
+					ta=Previous(Adj(ta));
+					if (vertices+i != ta.EdgeVertex(1)){
+						_error_("vertices+i != ta.EdgeVertex(1)");
+					}
+					BamgVertex *pvj = (ta.EdgeVertex(0));
+					BamgVertex & vj = *pvj;
+					if(pvj){
+						j= &vj-vertices;
+						if (j<0 || j >= nbv){
+							_error_("j<0 || j >= nbv");
+						}
+						R2 Aij = (R2) vj - (R2) vi;
+						double ll =  Norme2(Aij);
+						if (0) {  
+							double hi = ll/vi.m(Aij);
+							double hj = ll/vj.m(Aij);
+							if(hi < hj)
+							  {
+								double dh=(hj-hi)/ll;
+								if (dh>logseuil) {
+									vj.m.IntersectWith(vi.m/(1 +logseuil*ll/hi));
+									if(first_np_or_next_t1[j]<0)
+									 kch++,first_np_or_next_t1[j]=Head1,Head1=j;
+								}
+							  }
+						} 
+						else
+						  {
+							double li = vi.m(Aij);
+							if( vj.m.IntersectWith(vi.m/(1 +logseuil*li)) )
+							 if(first_np_or_next_t1[j]<0) // if the metrix change 
+							  kch++,first_np_or_next_t1[j]=Head1,Head1=j;
+						  }
+					}
+					if  ( &vj ==  pvj0 ) break;
+				}
+			}
+			Head0 = Head1;
+			Head1 = -1;
+			Exchange(first_np_or_next_t0,first_np_or_next_t1);
+		}
+		if(verbose>2) _printf_("      number of iterations = " << kch << "\n"); 
+		delete [] first_np_or_next_t0;
+		delete [] first_np_or_next_t1;
+	}
+	/*}}}*/
+	long  Mesh::SplitInternalEdgeWithBorderVertices(){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/SplitInternalEdgeWithBorderVertices)*/
+
+		long NbSplitEdge=0;
+		SetVertexFieldOn();  
+		long it;
+		long nbvold=nbv;
+		long int verbose=2;
+		for (it=0;it<nbt;it++){
+			Triangle &t=triangles[it];
+			if (t.link)
+			 for (int j=0;j<3;j++)
+			  if(!t.Locked(j) && !t.Hidden(j)){
+
+				  Triangle *ptt = t.TriangleAdj(j);
+				  Triangle &tt = *ptt;
+
+				  if( ptt && tt.link && it < GetId(tt)) 
+					 { // an internal edge 
+					  BamgVertex &v0 = t[VerticesOfTriangularEdge[j][0]];
+					  BamgVertex &v1 = t[VerticesOfTriangularEdge[j][1]];
+					  if (v0.GeomEdgeHook && v1.GeomEdgeHook){
+						  R2 P= ((R2) v0 + (R2) v1)*0.5;
+						  if ( nbv<maxnbv) {
+							  vertices[nbv].r = P;
+							  vertices[nbv++].m = Metric(0.5,v0.m,0.5,v1.m);
+							  vertices[nbv].ReferenceNumber=0;
+							  vertices[nbv].DirOfSearch = NoDirOfSearch ;
+						  }
+						  NbSplitEdge++;
+					  }
+					 }
+			  }
+		}
+		CreateSingleVertexToTriangleConnectivity();    
+		if (nbvold!=nbv){
+			long  iv = nbvold;
+			long NbSwap = 0;
+			Icoor2 det3[3];  
+			for (int i=nbvold;i<nbv;i++) {// for all the new point
+				BamgVertex & vi = vertices[i];
+				vi.i = R2ToI2(vi.r);
+				vi.r = I2ToR2(vi.i);
+
+				// a good new point 
+				vi.ReferenceNumber=0; 
+				vi.DirOfSearch =NoDirOfSearch;
+				Triangle *tcvi = TriangleFindFromCoord(vi.i,det3);
+				if (tcvi && !tcvi->link) {
+					_printf_("problem inserting point in SplitInternalEdgeWithBorderVertices (tcvj && !tcvj->link)\n");
+				}
+
+				quadtree->Add(vi);
+				if (!tcvi || tcvi->det<0){// internal
+					_error_("!tcvi || tcvi->det < 0");
+				}
+				AddVertex(vi,tcvi,det3);
+				NbSwap += vi.Optim(1);          
+				iv++;
+			}
+			if (verbose>3) {
+				_printf_("   number of points: " << iv << "\n");
+				_printf_("   number of swap to  split internal edges with border vertices: " << NbSwap << "\n");
+				nbv = iv;
+			}
+		}
+		if (NbSplitEdge>nbv-nbvold) _printf_("WARNING: not enough vertices  to split all internal edges, we lost " << NbSplitEdge - ( nbv-nbvold) << " edges...\n");
+		if (verbose>2) _printf_("SplitInternalEdgeWithBorderVertices: Number of splited edge " << NbSplitEdge << "\n");
+
+		return  NbSplitEdge;
+	}
+	/*}}}*/
+	I2 Mesh::R2ToI2(const R2 & P) const {/*{{{*/
+		return  I2( (Icoor1) (coefIcoor*(P.x-pmin.x)),(Icoor1) (coefIcoor*(P.y-pmin.y)) );
+	}
+	/*}}}*/
+	R2 Mesh::I2ToR2(const I2 & P) const {/*{{{*/
+		return  R2( (double) P.x/coefIcoor+pmin.x, (double) P.y/coefIcoor+pmin.y);
+	}
+	/*}}}*/
+	Triangle * Mesh::TriangleFindFromCoord(const I2 & B,Icoor2 det3[3], Triangle *tstart) const {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/FindTriangleContening)*/
+
+		Triangle * t=0;	
+		int j,jp,jn,jj;
+		int counter;
+
+		/*Get starting triangle. Take tsart if provided*/
+		if (tstart) t=tstart;
+
+		/*Else find the closest Triangle using the quadtree*/
+		else {
+
+			/*Check that the quadtree does exist*/
+			if (!quadtree) _error_("no starting triangle provided and no quadtree available");
+
+			/*Call NearestVertex*/
+			BamgVertex *a = quadtree->NearestVertex(B.x,B.y) ;
+
+			/*Check output (Vertex a)*/
+			if (!a)    _error_("problem while trying to find nearest vertex from a given point. No output found");
+			if (!a->t) _error_("no triangle is associated to vertex number " << GetId(a)+1 << " (orphan?)");
+			_assert_(a>=vertices && a<vertices+nbv);
+
+			/*Get starting triangle*/
+			t = a->t;
+			_assert_(t>=triangles && t<triangles+nbt);
+		}
+
+		Icoor2  detop ;
+
+		/*initialize number of test triangle*/
+		counter=0; 
+
+		/*The initial triangle might be outside*/
+		while (t->det < 0){ 
+
+			/*Get a real vertex from this triangle (k0)*/
+			int k0=(*t)(0)?(((*t)(1)?((*t)(2)?-1:2):1)):0;
+			_assert_(k0>=0);// k0 the NULL vertex
+			int k1=NextVertex[k0],k2=PreviousVertex[k0];
+			det3[k0]=det(B,(*t)[k1],(*t)[k2]);
+			det3[k1]=det3[k2]=-1;     
+			if (det3[k0] > 0) // outside B 
+			 return t; 
+			t = t->TriangleAdj(OppositeEdge[k0]);
+			counter++;
+			_assert_(counter<2);
+		}
+
+		jj=0;
+		detop = det(*(*t)(VerticesOfTriangularEdge[jj][0]),*(*t)(VerticesOfTriangularEdge[jj][1]),B);
+
+		while(t->det>0){
+
+			/*Increase counter*/
+			if (++counter>=10000) _error_("Maximum number of iteration reached (threshold = " << counter << ").");
+
+			j= OppositeVertex[jj];
+			det3[j] = detop;  //det(*b,*s1,*s2);
+			jn = NextVertex[j];
+			jp = PreviousVertex[j];
+			det3[jp]= det(*(*t)(j),*(*t)(jn),B);
+			det3[jn] = t->det-det3[j] -det3[jp];
+
+			// count the number k of  det3 <0
+			int k=0,ii[3];
+			if (det3[0] < 0 ) ii[k++]=0; 
+			if (det3[1] < 0 ) ii[k++]=1;
+			if (det3[2] < 0 ) ii[k++]=2;
+			// 0 => ok
+			// 1 => go in way 1
+			// 2 => two way go in way 1 or 2 randomly
+
+			if (k==0) break;
+			if (k==2 && BinaryRand()) Exchange(ii[0],ii[1]);
+			_assert_(k<3);
+			AdjacentTriangle t1 = t->Adj(jj=ii[0]);
+			if ((t1.det() < 0 ) && (k == 2))
+			 t1 = t->Adj(jj=ii[1]);
+			t=t1;
+			j=t1;// for optimisation we now the -det[OppositeVertex[j]];
+			detop = -det3[OppositeVertex[jj]];
+			jj = j;
+		}
+
+		if (t->det<0) // outside triangle 
+		 det3[0]=det3[1]=det3[2]=-1,det3[OppositeVertex[jj]]=detop;
+		return t;
+	}
+	/*}}}*/
+	void Mesh::TriangleIntNumbering(long* renumbering){/*{{{*/
+
+		long num=0;
+		for (int i=0;i<nbt;i++){
+			if (triangles[i].det>0) renumbering[i]=num++;
+			else renumbering[i]=-1;
+		}
+		return;   
+	}
+	/*}}}*/
+	long  Mesh::TriangleReferenceList(long* reft) const {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/ConsRefTriangle)*/
+
+		Triangle *t0,*t;
+		long k=0, num;   
+
+		//initialize all triangles as -1 (outside)
+		for (int it=0;it<nbt;it++) reft[it]=-1;
+
+		//loop over all subdomains
+		for (int i=0;i<nbsubdomains;i++){ 
+
+			//first triangle of the subdomain i
+			t=t0=subdomains[i].head;
+
+			//check that the subdomain is not empty
+			if (!t0){ _error_("At least one subdomain is empty");}
+
+			//loop
+			do{
+				k++;
+
+				//get current triangle number
+				num = GetId(t);
+
+				//check that num is in [0 nbt[
+				_assert_(num>=0 && num<nbt);
+
+				//reft of this triangle is the subdomain number
+				reft[num]=i;
+
+			} while (t0 != (t=t->link));
+			//stop when all triangles of subdomains have been tagged
+
+		}
+		return k;   
+	}
+	/*}}}*/
+	void Mesh::Triangulate(double* x,double* y,int nods){/*{{{*/
+
+		int verbose=0;
+		int i;
+		Metric M1(1);
+
+		/*Initialize mesh*/
+		Init(nods);//this resets nbv to 0
+		nbv=nods;
+
+		//Vertices
+		if(verbose) _printf_("Reading vertices (" << nbv << ")\n");
+		for(i=0;i<nbv;i++){
+			vertices[i].r.x=x[i];
+			vertices[i].r.y=y[i];
+			vertices[i].ReferenceNumber=1;
+			vertices[i].DirOfSearch =NoDirOfSearch;
+			vertices[i].m=M1;
+			vertices[i].color=0;
+		}
+		maxnbt=2*maxnbv-2; // for filling The Holes and quadrilaterals 
+
+		/*Insert Vertices*/
+		Insert(true);
+	}
+	/*}}}*/
+	void Mesh::TriangulateFromGeom0(BamgOpts* bamgopts){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/GeomToTriangles0)*/
+		/*Generate mesh from geometry*/
+
+		/*Intermediaries*/
+		int                i,k;
+		int                nbcurves    = 0;
+		int                NbNewPoints,NbEdgeCurve;
+		double             lcurve,lstep,s;
+		const int          MaxSubEdge  = 10;
+
+		R2          AB;
+		GeomVertex *a, *b;
+		BamgVertex *va,*vb;
+		GeomEdge   *e;
+
+		// add a ref to GH to make sure that it is not destroyed by mistake
+		Gh.NbRef++;
+
+		/*Get options*/
+		int verbose=bamgopts->verbose;
+
+		//build background mesh flag (1 if background, else 0)
+		bool background=(&BTh != this);
+
+		/*Build VerticesOnGeomVertex*/
+
+		//Compute the number of geometrical vertices that we are going to use to mesh
+		for (i=0;i<Gh.nbv;i++){
+			if (Gh[i].Required()) NbVerticesOnGeomVertex++;
+		}
+		//allocate
+		VerticesOnGeomVertex = new VertexOnGeom[NbVerticesOnGeomVertex];  
+		if(NbVerticesOnGeomVertex >= maxnbv) _error_("too many vertices on geometry: " << NbVerticesOnGeomVertex << " >= " << maxnbv);
+		_assert_(nbv==0);
+		//Build VerticesOnGeomVertex
+		for (i=0;i<Gh.nbv;i++){
+			/* Add vertex only if required*/
+			if (Gh[i].Required()) {//Gh  vertices Required
+
+				//Add the vertex
+				_assert_(nbv<maxnbv);
+				vertices[nbv]=Gh[i];
+
+				//Add pointer from geometry (Gh) to vertex from mesh (Th)
+				Gh[i].MeshVertexHook=vertices+nbv;
+
+				//Build VerticesOnGeomVertex for current point
+				VerticesOnGeomVertex[nbv]=VertexOnGeom(*Gh[i].MeshVertexHook,Gh[i]);
+
+				//nbv increment
+				nbv++;
+			}
+		}
+
+		/*Build VerticesOnGeomEdge*/
+
+		//check that edges is still empty (Init)
+		_assert_(!edges);
+
+		/* Now we are going to create the first edges corresponding
+		 * to the one present in the geometry provided.
+		 * We proceed in 2 steps
+		 *  -step 0: we count all the edges
+		 *           we allocate the number of edges at the end of step 0
+		 *  -step 1: the edges are created */
+		for (int step=0;step<2;step++){
+
+			//initialize number of edges and number of edges max
+			long nbex=0;
+			nbe=0;
+			long NbVerticesOnGeomEdge0=NbVerticesOnGeomEdge;
+			Gh.UnMarkEdges();	
+			nbcurves=0;
+
+			//go through the edges of the geometry
+			for (i=0;i<Gh.nbe;i++){
+
+				//ei = current Geometrical edge
+				GeomEdge &ei=Gh.edges[i];   
+
+				//loop over the two vertices of the edge ei
+				for(int j=0;j<2;j++) {
+
+					/*Take only required vertices (corner->beginning of a new curve)*/
+					if (!ei.Mark() && ei[j].Required()){ 
+
+						long  nbvend=0;
+						Edge* PreviousNewEdge=NULL;
+						lstep = -1;
+
+						/*If Edge is required (do that only once for the 2 vertices)*/
+						if(ei.Required()){
+							if (j==0){
+								//do not create internal points if required (take it as is)
+								if(step==0) nbe++;
+								else{ 
+									e=&ei;
+									a=ei(0);
+									b=ei(1);
+
+									//check that edges has been allocated
+									_assert_(edges);
+									edges[nbe].v[0]=a->MeshVertexHook;
+									edges[nbe].v[1]=b->MeshVertexHook;;
+									edges[nbe].ReferenceNumber = e->ReferenceNumber;
+									edges[nbe].GeomEdgeHook = e;
+									edges[nbe].adj[0] = 0;
+									edges[nbe].adj[1] = 0;
+									nbe++;
+								}
+							}
+						}
+
+						/*If Edge is not required: we are on a curve*/
+						else {
+							for (int kstep=0;kstep<=step;kstep++){
+								//kstep=0, compute number of edges (discretize curve)
+								//kstep=1  create the points and edge
+								PreviousNewEdge=0;
+								NbNewPoints=0;
+								NbEdgeCurve=0;
+								if (nbvend>=maxnbv) _error_("maximum number of vertices too low! Check the domain outline or increase maxnbv");
+								lcurve =0;
+								s = lstep; //-1 initially, then length of each sub edge
+
+								/*reminder: i = edge number, j=[0;1] vertex index in edge*/
+								k=j;            // k = vertex index in edge (0 or 1)
+								e=&ei;          // e = reference of current edge
+								a=ei(k);        // a = pointer toward the kth vertex of the current edge
+								va = a->MeshVertexHook; // va = pointer toward mesh vertex associated
+								e->SetMark();   // Mark edge
+
+								/*Loop until we reach the end of the curve*/
+								for(;;){ 
+									k = 1-k;            // other vertx index of the curve
+									b = (*e)(k);        // b = pointer toward the other vertex of the current edge
+									AB= b->r - a->r;   // AB = vector of the current edge
+									Metric MA = background ? BTh.MetricAt(a->r) :a->m ;  //Get metric associated to A
+									Metric MB = background ? BTh.MetricAt(b->r) :b->m ;  //Get metric associated to B
+									double ledge = (MA(AB) + MB(AB))/2;                  //Get edge length in metric
+
+									/* We are now creating the mesh edges from the geometrical edge selected above.
+									 * The edge will be divided according to the metric previously computed and cannot
+									 * be divided more than 10 times (MaxSubEdge). */
+
+									//By default, there is only one subedge that is the geometrical edge itself
+									int NbSubEdge = 1;
+
+									//initialize lSubEdge, holding the length of each subedge (cannot be higher than 10)
+									double lSubEdge[MaxSubEdge];
+
+									//Build Subedges according to the edge length
+									if (ledge < 1.5){
+										//if ledge < 1.5 (between one and 2), take the edge as is
+										lSubEdge[0] = ledge;
+									}
+									//else, divide the edge
+									else {
+										//compute number of subedges (division of the edge), Maximum is 10
+										NbSubEdge = Min( MaxSubEdge, (int) (ledge +0.5));
+										/*Now, we are going to divide the edge according to the metric.
+										 * Get segment by sement along the edge.
+										 * Build lSubEdge, which holds the distance between the first vertex
+										 * of the edge and the next point on the edge according to the 
+										 * discretization (each SubEdge is AB)*/
+										R2 A,B;
+										A=a->r;
+										Metric MAs=MA,MBs;
+										ledge=0; 
+										double x =0, xstep= 1./NbSubEdge;
+										for (int kk=0; kk < NbSubEdge; kk++,A=B,MAs=MBs ) {
+											x += xstep;
+											B =  e->F(k ? x : 1-x);
+											MBs= background ? BTh.MetricAt(B) : Metric(1-x,MA,x,MB);
+											AB = A-B;
+											lSubEdge[kk]=(ledge+=(MAs(AB)+MBs(AB))/2);
+										}
+									}
+
+									double lcurveb = lcurve+ledge;
+
+									/*Now, create corresponding points*/
+									while(s>=lcurve && s<=lcurveb && nbv<nbvend){
+
+										/*Schematic of current curve
+										 *
+										 *  a                   vb                  b          // vertex
+										 *  0              ll0     ll1              ledge      // length from a
+										 *  + --- + - ... - + --S-- + --- + - ... - +          // where is S
+										 *  0              kk0     kk1              NbSubEdge  // Sub edge index
+										 *
+										 */
+
+										double ss = s-lcurve;
+
+										/*Find the SubEdge containing ss using Dichotomy*/
+										int kk0=-1,kk1=NbSubEdge-1,kkk;
+										double ll0=0,ll1=ledge,llk;
+										while (kk1-kk0>1){
+											if (ss < (llk=lSubEdge[kkk=(kk0+kk1)/2]))
+											 kk1=kkk,ll1=llk;
+											else
+											 kk0=kkk,ll0=llk;
+										}
+										_assert_(kk1!=kk0);
+
+										/*Curvilinear coordinate in [0 1] of ss in current edge*/
+										// WARNING: This is what we would do
+										// ssa = (ss-ll0)/(ll1-ll0);
+										// aa = (kk0+ssa)/NbSubEdge
+										// This is what Bamg does:
+										double sbb = (ss-ll0)/(ll1-ll0);
+										/*Curvilinear coordinate in [0 1] of ss in current curve*/
+										double bb = (kk1+sbb)/NbSubEdge;
+										double aa = 1-bb;
+
+										// new vertex on edge
+										vb = &vertices[nbv++];
+										vb->m = Metric(aa,a->m,bb,b->m);
+										vb->ReferenceNumber = e->ReferenceNumber;
+										vb->DirOfSearch =NoDirOfSearch;
+										double abcisse = k ? bb : aa;
+										vb->r =  e->F(abcisse);
+										VerticesOnGeomEdge[NbVerticesOnGeomEdge++]= VertexOnGeom(*vb,*e,abcisse);        
+
+										// to take into account the direction of the edge
+										s += lstep;
+										edges[nbe].v[0]=va;
+										edges[nbe].v[1]=vb;
+										edges[nbe].ReferenceNumber =e->ReferenceNumber;
+										edges[nbe].GeomEdgeHook = e;
+										edges[nbe].adj[0] = PreviousNewEdge;
+										if(PreviousNewEdge) PreviousNewEdge->adj[1]=&edges[nbe];
+										PreviousNewEdge=edges+nbe;
+										nbe++;
+										va = vb;
+									}
+
+									/*We just added one edge to the curve: Go to the next one*/
+									lcurve = lcurveb;
+									e->SetMark();
+									a=b;
+
+									/*If b is required, we are on a new curve->break*/
+									if (b->Required()) break;
+									int kprev=k;
+									k = e->AdjVertexIndex[kprev];// next vertices
+									e = e->Adj[kprev];
+									_assert_(e);
+								}// for(;;)
+								vb = b->MeshVertexHook;
+
+								/*Number of edges in the last disretized curve*/
+								NbEdgeCurve = Max((long) (lcurve +0.5), (long) 1);
+								/*Number of internal vertices in the last disretized curve*/
+								NbNewPoints = NbEdgeCurve-1;
+								if(!kstep){
+									NbVerticesOnGeomEdge0 += NbNewPoints;
+									nbcurves++;
+								}
+								nbvend=nbv+NbNewPoints; 
+								lstep = lcurve / NbEdgeCurve; //approximately one
+							}// end of curve --
+							if (edges) { // last edges of the curves 
+								edges[nbe].v[0]=va;
+								edges[nbe].v[1]=vb;
+								edges[nbe].ReferenceNumber = e->ReferenceNumber;
+								edges[nbe].GeomEdgeHook = e;
+								edges[nbe].adj[0] = PreviousNewEdge;
+								edges[nbe].adj[1] = 0;
+								if(PreviousNewEdge) PreviousNewEdge->adj[1] = & edges[nbe];
+								nbe++;
+							}
+							else nbe += NbEdgeCurve;
+						} // end on  curve ---
+					}
+				}
+			} // for (i=0;i<nbe;i++)
+			if(!step) {
+				_assert_(!edges);
+				_assert_(!VerticesOnGeomEdge);
+
+				edges = new Edge[nbex=nbe];
+				if(NbVerticesOnGeomEdge0) VerticesOnGeomEdge = new VertexOnGeom[NbVerticesOnGeomEdge0];
+
+				// do the vertex on a geometrical vertex
+				_assert_(VerticesOnGeomEdge || NbVerticesOnGeomEdge0==0);
+				NbVerticesOnGeomEdge0 = NbVerticesOnGeomEdge;       
+			}
+			else{
+				_assert_(NbVerticesOnGeomEdge==NbVerticesOnGeomEdge0);
+			}
+		}
+
+		//Insert points inside existing triangles
+		if (verbose>4) _printf_("      -- current number of vertices = " << nbv << "\n");
+		if (verbose>3) _printf_("      Creating initial Constrained Delaunay Triangulation...\n");
+		if (verbose>3) _printf_("         Inserting boundary points\n");
+		Insert(bamgopts->random);
+
+		//Force the boundary
+		if (verbose>3) _printf_("         Forcing boundaries\n");
+		ForceBoundary();
+
+		//Extract SubDomains
+		if (verbose>3) _printf_("         Extracting subdomains\n");
+		FindSubDomain();
+
+		if (verbose>3) _printf_("      Inserting internal points\n");
+		NewPoints(*this,bamgopts,0) ;
+		if (verbose>4) _printf_("      -- current number of vertices = " << nbv << "\n");
+	}
+	/*}}}*/
+	void Mesh::TriangulateFromGeom1(BamgOpts* bamgopts,int KeepVertices){ /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/GeomToTriangles1)*/
+
+		/*Get options*/
+		int verbose=bamgopts->verbose;
+
+		Gh.NbRef++;// add a ref to Gh
+
+		/************************************************************************* 
+		 * method in 2 steps
+		 * 1 - compute the number of new edges to allocate
+		 * 2 - construct the edges
+		 * remark:
+		 * in this part we suppose to have a background mesh with the same geometry 
+		 * 
+		 * To construct the discretization of the new mesh we have to 
+		 * rediscretize the boundary of background Mesh 
+		 * because we have only the pointeur from the background mesh to the geometry.
+		 * We need the abcisse of the background mesh vertices on geometry
+		 * so a vertex is 
+		 * 0 on GeomVertex ;
+		 * 1 on GeomEdge + abcisse
+		 * 2 internal 
+		 *************************************************************************/
+
+		//Check that background mesh and current mesh do have the same geometry
+		_assert_(&BTh.Gh==&Gh);
+		BTh.NbRef++; // add a ref to BackGround Mesh
+
+		//Initialize new mesh
+		BTh.SetVertexFieldOn();
+		int* bcurve = new int[Gh.nbcurves]; // 
+
+		/* There are 2 ways to make the loop 
+		 * 1) on the geometry 
+		 * 2) on the background mesh
+		 *  if you do the loop on geometry, we don't have the pointeur on background,
+		 *  and if you do the loop in background we have the pointeur on geometry
+		 * so do the walk on  background */
+
+		NbVerticesOnGeomVertex=0;
+		NbVerticesOnGeomEdge=0;
+
+		/*STEP 1 copy of Required vertices*/
+
+		int i; 
+		for (i=0;i<Gh.nbv;i++) if (Gh[i].Required()) NbVerticesOnGeomVertex++;
+		printf("\n");
+		if(NbVerticesOnGeomVertex >= maxnbv){
+			_error_("too many vertices on geometry: " << NbVerticesOnGeomVertex << " >= " << maxnbv);
+		}
+
+		VerticesOnGeomVertex = new VertexOnGeom[  NbVerticesOnGeomVertex];
+		VertexOnBThVertex    = new VertexOnVertex[NbVerticesOnGeomVertex];
+
+		//At this point there is NO vertex but vertices should have been allocated by Init
+		_assert_(vertices);
+		for (i=0;i<Gh.nbv;i++){
+			if (Gh[i].Required()) {//Gh vertices Required
+				vertices[nbv]  =Gh[i];
+				vertices[nbv].i=I2(0,0);
+				Gh[i].MeshVertexHook = vertices + nbv;// save Geom -> Th
+				VerticesOnGeomVertex[nbv]= VertexOnGeom(vertices[nbv],Gh[i]);
+				nbv++;
+			}
+			else Gh[i].MeshVertexHook=0;
+		} 
+		for (i=0;i<BTh.NbVerticesOnGeomVertex;i++){ 
+			VertexOnGeom &vog=BTh.VerticesOnGeomVertex[i];
+			if (vog.IsRequiredVertex()){
+				GeomVertex* gv=vog;
+				BamgVertex *bv = vog;
+				_assert_(gv->MeshVertexHook); // use of Geom -> Th
+				VertexOnBThVertex[NbVertexOnBThVertex++]=VertexOnVertex(gv->MeshVertexHook,bv);
+				gv->MeshVertexHook->m = bv->m; // for taking the metric of the background mesh
+			}
+		}
+		_assert_(NbVertexOnBThVertex==NbVerticesOnGeomVertex); /*This might be due to MaxCornerAngle too small*/
+
+		/*STEP 2: reseed boundary edges*/
+
+		//  find the begining of the curve in BTh
+		Gh.UnMarkEdges();	
+		int bfind=0;
+		for (int i=0;i<Gh.nbcurves;i++) bcurve[i]=-1; 
+
+		/*Loop over the backgrounf mesh BTh edges*/
+		for (int iedge=0;iedge<BTh.nbe;iedge++){      
+			Edge &ei = BTh.edges[iedge];
+
+			/*Loop over the 2 vertices of the current edge*/
+			for(int je=0;je<2;je++){
+
+				/* If one of the vertex is required we are in a new curve*/
+				if (ei[je].GeomEdgeHook->IsRequiredVertex()){ 
+
+					/*Get curve number*/
+					int nc=ei.GeomEdgeHook->CurveNumber;
+
+					//_printf_("Dealing with curve number " << nc << "\n");
+					//_printf_("edge on geometry is same as GhCurve? " << (ei.GeomEdgeHook==Gh.curves[nc].FirstEdge || ei.GeomEdgeHook==Gh.curves[nc].LastEdge)?"yes":"no\n");
+					//if(ei.GeomEdgeHook==Gh.curves[nc].FirstEdge || ei.GeomEdgeHook==Gh.curves[nc].LastEdge){
+					//	_printf_("Do we have the right extremity? curve first vertex -> " << ((GeomVertex *)*ei[je].GeomEdgeHook==&(*Gh.curves[nc].FirstEdge)[Gh.curves[nc].FirstVertexIndex])?"yes":"no\n");
+					//	_printf_("Do we have the right extremity? curve last  vertex -> " << ((GeomVertex *)*ei[je].GeomEdgeHook==&(*Gh.curves[nc].LastEdge)[Gh.curves[nc].LastVertexIndex])?"yes":"no\n");
+					//}
+					//BUG FIX from original bamg
+					/*Check that we are on the same edge and right vertex (0 or 1) */
+					if(ei.GeomEdgeHook==Gh.curves[nc].FirstEdge  && (GeomVertex *)*ei[je].GeomEdgeHook==&(*Gh.curves[nc].FirstEdge)[Gh.curves[nc].FirstVertexIndex]){
+						bcurve[nc]=iedge*2+je;
+						bfind++;	
+					}
+					else if ((ei.GeomEdgeHook==Gh.curves[nc].LastEdge  && (GeomVertex *)*ei[je].GeomEdgeHook==&(*Gh.curves[nc].LastEdge)[Gh.curves[nc].LastVertexIndex]) && bcurve[nc]==-1){
+						bcurve[nc]=iedge*2+je;
+						bfind++;	
+					}
+				}
+			}
+		} 
+		if (bfind!=Gh.nbcurves){
+			delete [] bcurve;
+			_error_("problem generating number of curves (" << Gh.nbcurves << " found in the geometry but " << bfind << " curve found in the mesh)");
+		}
+
+		// method in 2 + 1 step 
+		//  0.0) compute the length and the number of vertex to do allocation
+		//  1.0) recompute the length
+		//  1.1) compute the  vertex 
+
+		long nbex=0,NbVerticesOnGeomEdgex=0;
+		for (int step=0; step <2;step++){
+
+			long NbOfNewPoints=0;
+			long NbOfNewEdge=0;
+			long iedge;
+			Gh.UnMarkEdges();	
+			double L=0;
+
+			/*Go through all geometrical curve*/
+			for (int icurve=0;icurve<Gh.nbcurves;icurve++){ 
+
+				/*Get edge and vertex (index) of background mesh on this curve*/
+				iedge=bcurve[icurve]/2;
+				int jedge=bcurve[icurve]%2;
+
+				/*Get edge of Bth with index iedge*/
+				Edge &ei = BTh.edges[iedge];
+
+				/*Initialize variables*/
+				double Lstep=0;             // step between two points   (phase==1) 
+				long NbCreatePointOnCurve=0;// Nb of new points on curve (phase==1) 
+
+				/*Do phase 0 to step*/
+				for(int phase=0;phase<=step;phase++){
+
+					/*Current curve pointer*/
+					Curve *curve= Gh.curves+icurve;
+
+					/*Get index of current curve*/
+					int icurveequi= Gh.GetId(curve);
+
+					/*For phase 0, check that we are at the begining of the curve only*/
+					if(phase==0 &&  icurveequi!=icurve)  continue;
+
+					int   k0=jedge,k1;
+					Edge* pe=  BTh.edges+iedge;
+					int   iedgeequi=bcurve[icurveequi]/2;
+					int   jedgeequi=bcurve[icurveequi]%2;
+
+					int k0equi=jedgeequi,k1equi;		  
+					Edge * peequi= BTh.edges+iedgeequi;
+					GeomEdge *ongequi = peequi->GeomEdgeHook;
+
+					double sNew=Lstep;// abscisse of the new points (phase==1) 
+					L=0;// length of the curve
+					long i=0;// index of new points on the curve
+					GeomVertex * GA0 = *(*peequi)[k0equi].GeomEdgeHook;
+					BamgVertex *A0;
+					A0 = GA0->MeshVertexHook;  // the vertex in new mesh
+					BamgVertex *A1;
+					VertexOnGeom *GA1;
+					Edge* PreviousNewEdge = 0;
+
+					// New Curve phase 
+					_assert_(A0-vertices>=0 && A0-vertices<nbv);
+					if(ongequi->Required()){
+						GeomVertex *GA1 = *(*peequi)[1-k0equi].GeomEdgeHook;
+						A1 = GA1->MeshVertexHook;  //
+					}       
+					else {
+						for(;;){
+							Edge &ee=*pe; 
+							Edge &eeequi=*peequi; 
+							k1 = 1-k0; // next vertex of the edge 
+							k1equi= 1 - k0equi;
+							_assert_(pe && ee.GeomEdgeHook);
+							ee.GeomEdgeHook->SetMark();
+							BamgVertex & v0=ee[0], & v1=ee[1];
+							R2 AB=(R2)v1-(R2)v0;
+							double L0=L,LAB;
+							LAB=LengthInterpole(v0.m,v1.m,AB);
+							L+= LAB;
+
+							if (phase){
+								// computation of the new points for the given curve
+								while ((i!=NbCreatePointOnCurve) && sNew<=L) { 
+
+									//some checks
+									_assert_(sNew>=L0);
+									_assert_(LAB);
+									_assert_(vertices && nbv<maxnbv);
+									_assert_(edges && nbe<nbex);
+									_assert_(VerticesOnGeomEdge && NbVerticesOnGeomEdge<NbVerticesOnGeomEdgex);
+
+									// new vertex on edge
+									A1=vertices+nbv++;
+									GA1=VerticesOnGeomEdge+NbVerticesOnGeomEdge;
+									Edge* e = edges + nbe++;
+									double se= (sNew-L0)/LAB;
+									if (se<0 || se>=1.000000001){
+										_error_("Problem creating point on a boundary: se=" << se << " should be in [0 1]");
+									}
+									se = abscisseInterpole(v0.m,v1.m,AB,se,1);
+									if (se<0 || se>1){
+										_error_("Problem creating point on a boundary: se=" << se << " should be in [0 1]");
+									}
+									se = k1         ? se : 1. - se;
+									se = k1==k1equi ? se : 1. - se;
+									VertexOnBThEdge[NbVerticesOnGeomEdge++] = VertexOnEdge(A1,&eeequi,se); // save 
+									ongequi=Gh.ProjectOnCurve(eeequi,se,*A1,*GA1); 
+									A1->ReferenceNumber = eeequi.ReferenceNumber;
+									A1->DirOfSearch =NoDirOfSearch;
+									e->GeomEdgeHook = ongequi;
+									e->v[0]=A0;
+									e->v[1]=A1;
+									e->ReferenceNumber = eeequi.ReferenceNumber;
+									e->adj[0]=PreviousNewEdge;
+
+									if (PreviousNewEdge) PreviousNewEdge->adj[1]=e;
+									PreviousNewEdge=e;
+									A0=A1;
+									sNew += Lstep;
+									if (++i== NbCreatePointOnCurve) break;
+								}
+							}
+
+							//some checks
+							_assert_(ee.GeomEdgeHook->CurveNumber==ei.GeomEdgeHook->CurveNumber);
+							if (ee[k1].GeomEdgeHook->IsRequiredVertex()) {
+								_assert_(eeequi[k1equi].GeomEdgeHook->IsRequiredVertex());
+								GeomVertex * GA1 = *eeequi[k1equi].GeomEdgeHook;
+								A1=GA1->MeshVertexHook;// the vertex in new mesh
+								_assert_(A1-vertices>=0 && A1-vertices<nbv);
+								break;
+							}
+							if (!ee.adj[k1]) {
+								_error_("adj edge " << BTh.GetId(ee) << ", nbe=" << nbe << ", Gh.vertices=" << Gh.vertices);
+							}
+							pe = ee.adj[k1]; // next edge
+							k0 = pe->Intersection(ee); 
+							peequi= eeequi.adj[k1equi];  // next edge
+							k0equi=peequi->Intersection(eeequi);            
+						}// for(;;) end of the curve
+					}
+
+					if (phase){ // construction of the last edge
+						Edge* e=edges + nbe++;
+						e->GeomEdgeHook  = ongequi;
+						e->v[0]=A0;
+						e->v[1]=A1;
+						e->ReferenceNumber = peequi->ReferenceNumber;
+						e->adj[0]=PreviousNewEdge;
+						e->adj[1]=0;
+						if (PreviousNewEdge) PreviousNewEdge->adj[1]=e;
+						PreviousNewEdge = e;
+
+						_assert_(i==NbCreatePointOnCurve);
+					}
+
+					if (!phase)  { // 
+						long NbSegOnCurve = Max((long)(L+0.5),(long) 1);// nb of seg
+						Lstep = L/NbSegOnCurve; 
+						NbCreatePointOnCurve = NbSegOnCurve-1;
+						NbOfNewEdge += NbSegOnCurve;
+						NbOfNewPoints += NbCreatePointOnCurve;
+					}
+				}
+			}//  end of curve loop 
+
+			//Allocate memory
+			if(step==0){
+				if(nbv+NbOfNewPoints > maxnbv) {
+					_error_("too many vertices on geometry: " << nbv+NbOfNewPoints << " >= " << maxnbv);
+				}
+				edges = new Edge[NbOfNewEdge];
+				nbex = NbOfNewEdge;
+				if(NbOfNewPoints) {
+					VerticesOnGeomEdge    = new VertexOnGeom[NbOfNewPoints];
+					NbVertexOnBThEdge     = NbOfNewPoints;
+					VertexOnBThEdge       = new  VertexOnEdge[NbOfNewPoints];
+					NbVerticesOnGeomEdgex = NbOfNewPoints;
+				}
+				NbOfNewPoints =0;
+				NbOfNewEdge = 0;
+			}
+		}
+		_assert_(nbe!=0);
+		delete [] bcurve;
+
+		//Insert points inside existing triangles
+		if (verbose>4) _printf_("      -- current number of vertices = " << nbv << "\n");
+		if (verbose>3) _printf_("      Creating initial Constrained Delaunay Triangulation...\n");
+		if (verbose>3) _printf_("         Inserting boundary points\n");
+		Insert(bamgopts->random);
+
+		//Force the boundary
+		if (verbose>3) _printf_("         Forcing boundaries\n");
+		ForceBoundary();
+
+		//Extract SubDomains
+		if (verbose>3) _printf_("         Extracting subdomains\n");
+		FindSubDomain();
+
+		if (verbose>3) _printf_("      Inserting internal points\n");
+		NewPoints(BTh,bamgopts,KeepVertices) ;
+		if (verbose>4) _printf_("      -- current number of vertices = " << nbv << "\n");
+	}
+	/*}}}*/
+
+	/*Intermediary*/
+	AdjacentTriangle CloseBoundaryEdge(I2 A,Triangle *t, double &a,double &b) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/CloseBoundaryEdge)*/
+
+		int k=(*t)(0) ?  ((  (*t)(1) ? ( (*t)(2) ? -1 : 2) : 1  )) : 0;
+		int dir=0;
+		if (k<0){
+			_error_("k<0");
+		}
+		int kkk=0;  
+		Icoor2 IJ_IA,IJ_AJ;
+		AdjacentTriangle edge(t,OppositeEdge[k]);          
+		for (;;edge = dir >0 ? Next(Adj(Next(edge))) : Previous(Adj(Previous(edge)))) {  
+			kkk++;
+			if (kkk>=1000){
+				_error_("kkk>=1000");
+			}
+			BamgVertex  &vI =  *edge.EdgeVertex(0);
+			BamgVertex  &vJ =  *edge.EdgeVertex(1);
+			I2 I=vI, J=vJ, IJ= J-I;
+			IJ_IA = (IJ ,(A-I));
+			if (IJ_IA<0) {
+				if (dir>0) {a=1;b=0;return edge;}// change of signe => I
+				else {dir=-1;
+					continue;}};// go in direction i 
+					IJ_AJ = (IJ ,(J-A));
+					if (IJ_AJ<0) {
+						if(dir<0)  {a=0;b=1;return edge;}            
+						else {dir = 1;
+							continue;}}// go in direction j
+							double IJ2 = IJ_IA + IJ_AJ;
+							if (IJ2==0){
+								_error_("IJ2==0");
+							}
+							a= IJ_AJ/IJ2;
+							b= IJ_IA/IJ2;
+							return edge;
+		} 
+	}
+	/*}}}*/
+	int ForceEdge(BamgVertex &a, BamgVertex & b,AdjacentTriangle & taret)  { /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/ForceEdge)*/
+
+		int NbSwap =0;
+		if (!a.t || !b.t){ // the 2 vertex is in a mesh
+			_error_("!a.t || !b.t");
+		}
+		int k=0;
+		taret=AdjacentTriangle(0,0); // erreur 
+
+		AdjacentTriangle tta(a.t,EdgesVertexTriangle[a.IndexInTriangle][0]);
+		BamgVertex   *v1, *v2 = tta.EdgeVertex(0),*vbegin =v2;
+		// we turn around a in the  direct direction  
+
+		Icoor2 det2 = v2 ? det(*v2,a,b): -1 , det1;
+		if(v2) // normal case 
+		 det2 = det(*v2,a,b);
+		else { // no chance infini vertex try the next
+			tta= Previous(Adj(tta));
+			v2 = tta.EdgeVertex(0);
+			vbegin =v2;
+			if (!v2){
+				_error_("!v2");
+			}
+			det2 = det(*v2,a,b);
+		}
+
+		while (v2 != &b) {
+			AdjacentTriangle tc = Previous(Adj(tta));    
+			v1 = v2; 
+			v2 = tc.EdgeVertex(0);
+			det1 = det2;
+			det2 =  v2 ? det(*v2,a,b): det2; 
+
+			if((det1 < 0) && (det2 >0)) { 
+				// try to force the edge 
+				BamgVertex * va = &a, *vb = &b;
+				tc = Previous(tc);
+				if (!v1 || !v2){
+					_error_("!v1 || !v2");
+				}
+				Icoor2 detss = 0,l=0;
+				while ((SwapForForcingEdge(  va,  vb, tc, detss, det1,det2,NbSwap)))
+				 if(l++ > 10000000) {
+					 _error_("Loop in forcing Egde, nb de swap=" << NbSwap << ", nb of try swap (" << l << ") too big");
+				 }
+				BamgVertex *aa = tc.EdgeVertex(0), *bb = tc.EdgeVertex(1);
+				if (((aa == &a ) && (bb == &b)) ||((bb ==  &a ) && (aa == &b))){
+					tc.SetLock();
+					a.Optim(1,0);
+					b.Optim(1,0);
+					taret = tc;
+					return NbSwap;
+				}
+				else 
+				  {
+					taret = tc;
+					return -2; // error  boundary is crossing
+				  }
+			}
+			tta = tc;
+			k++;
+			if (k>=2000){
+				_error_("k>=2000");
+			}
+			if ( vbegin == v2 ) return -1;// error 
+		}
+
+		tta.SetLock();
+		taret=tta;
+		a.Optim(1,0);
+		b.Optim(1,0);
+		return NbSwap; 
+	}
+	/*}}}*/
+	void  swap(Triangle *t1,short a1, Triangle *t2,short a2, BamgVertex *s1,BamgVertex *s2,Icoor2 det1,Icoor2 det2){ /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/swap)*/
+		// --------------------------------------------------------------
+		// short a2=aa[a];// les 2 numero de l arete dans les 2 triangles
+		//                               
+		//               sb                     sb    
+		//             / | \                   /   \                      !
+		//         as1/  |  \                 /a2   \                     !
+		//           /   |   \               /    t2 \                    !
+		//       s1 /t1  | t2 \s2  -->   s1 /___as2___\s2                 !
+		//          \  a1|a2  /             \   as1   /  
+		//           \   |   /               \ t1    /   
+		//            \  |  / as2             \   a1/    
+		//             \ | /                   \   /     
+		//              sa                       sa   
+		//  -------------------------------------------------------------
+		int as1 = NextEdge[a1];
+		int as2 = NextEdge[a2];
+		int ap1 = PreviousEdge[a1];
+		int ap2 = PreviousEdge[a2];
+		(*t1)(VerticesOfTriangularEdge[a1][1]) = s2 ; // avant sb
+		(*t2)(VerticesOfTriangularEdge[a2][1]) = s1  ; // avant sa
+		// mise a jour des 2 adjacences externes 
+		AdjacentTriangle taas1 = t1->Adj(as1),
+							  taas2 = t2->Adj(as2),
+							  tas1(t1,as1), tas2(t2,as2),
+							  ta1(t1,a1),ta2(t2,a2);
+		// externe haut gauche
+		taas1.SetAdj2(ta2, taas1.GetAllFlag_UnSwap());
+		// externe bas droite
+		taas2.SetAdj2(ta1, taas2.GetAllFlag_UnSwap());
+		// remove the Mark  UnMarkSwap 
+		t1->SetUnMarkUnSwap(ap1);
+		t2->SetUnMarkUnSwap(ap2);
+		// interne 
+		tas1.SetAdj2(tas2);
+
+		t1->det = det1;
+		t2->det = det2;
+
+		t1->SetSingleVertexToTriangleConnectivity();
+		t2->SetSingleVertexToTriangleConnectivity();
+	} // end swap 
+	/*}}}*/
+	int SwapForForcingEdge(BamgVertex   *  & pva ,BamgVertex  * &   pvb ,AdjacentTriangle & tt1,Icoor2 & dets1, Icoor2 & detsa,Icoor2 & detsb, int & NbSwap) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/SwapForForcingEdge)*/
+		// l'arete ta coupe l'arete pva pvb
+		// de cas apres le swap sa coupe toujours
+		// on cherche l'arete suivante 
+		// on suppose que detsa >0 et detsb <0
+		// attention la routine echange pva et pvb 
+
+		if(tt1.Locked()) return 0; // frontiere croise 
+
+		AdjacentTriangle tt2 = Adj(tt1);
+		Triangle *t1=tt1,*t2=tt2;// les 2 triangles adjacent
+		short a1=tt1,a2=tt2;// les 2 numero de l arete dans les 2 triangles
+		if ( a1<0 || a1>=3 ){
+			_error_("a1<0 || a1>=3");
+		}
+
+		BamgVertex & sa= (* t1)[VerticesOfTriangularEdge[a1][0]];
+		BamgVertex & s1= (*t1)[OppositeVertex[a1]];
+		BamgVertex & s2= (*t2)[OppositeVertex[a2]];
+
+		Icoor2 dets2 = det(*pva,*pvb,s2);
+		Icoor2 det1=t1->det , det2=t2->det ;
+		Icoor2 detT = det1+det2;
+		if ((det1<=0 ) || (det2<=0)){
+			_error_("(det1<=0 ) || (det2<=0)");
+		}
+		if ( (detsa>=0) || (detsb<=0) ){ // [a,b] cut infinite line va,bb
+			_error_("(detsa>=0) || (detsb<=0)");
+		}
+		Icoor2 ndet1 = bamg::det(s1,sa,s2);
+		Icoor2 ndet2 = detT - ndet1;
+
+		int ToSwap =0; //pas de swap
+		if ((ndet1 >0) && (ndet2 >0)) 
+		  { // on peut swaper  
+			if ((dets1 <=0 && dets2 <=0) || (dets2 >=0 && detsb >=0))
+			 ToSwap =1; 
+			else // swap alleatoire 
+			 if (BinaryRand()) 
+			  ToSwap =2; 
+		  }
+		if (ToSwap) NbSwap++,
+		 bamg::swap(t1,a1,t2,a2,&s1,&s2,ndet1,ndet2);
+
+		int ret=1;
+
+		if (dets2 < 0) {// haut
+			dets1 = ToSwap ? dets1 : detsa ;
+			detsa = dets2; 
+			tt1 =  Previous(tt2) ;}
+		else if (dets2 > 0){// bas 
+			dets1 = ToSwap ? dets1 : detsb ;
+			detsb = dets2;
+			//xxxx tt1 = ToSwap ? tt1 : Next(tt2);
+			if(!ToSwap) tt1 =  Next(tt2);
+		}
+		else { // changement de direction 
+			ret = -1;
+			Exchange(pva,pvb);
+			Exchange(detsa,detsb);
+			Exchange(dets1,dets2);
+			Exchange(tt1,tt2);
+			dets1=-dets1;
+			dets2=-dets2;
+			detsa=-detsa;
+			detsb=-detsb;
+
+			if(ToSwap){
+				if (dets2 < 0) {// haut
+					dets1 = (ToSwap ? dets1 : detsa) ;
+					detsa = dets2; 
+					tt1 =  Previous(tt2) ;}
+				else if(dets2 > 0){// bas 
+					dets1 = (ToSwap ? dets1 : detsb) ;
+					detsb =  dets2;
+					if(!ToSwap) tt1 =  Next(tt2);
+				}
+				else {// on a fin ???
+					tt1 = Next(tt2);
+					ret =0;}
+			}
+
+		}
+		return ret;
+	}
+	/*}}}*/
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Mesh.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Mesh.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Mesh.h	(revision 21239)
@@ -0,0 +1,187 @@
+#ifndef _MESH_H_
+#define _MESH_H_
+
+#include "./include.h"
+#include "./BamgOpts.h"
+#include "./BamgMesh.h"
+#include "./BamgGeom.h"
+#include "./Triangle.h"
+#include "./VertexOnGeom.h"
+#include "./VertexOnVertex.h"
+#include "./VertexOnEdge.h"
+#include "./ListofIntersectionTriangles.h"
+
+namespace bamg {
+
+	class Geometry;
+	class CrackedEdge;
+	class BamgQuadtree;
+	class SubDomain;
+
+	class Mesh {
+
+		public:
+
+			Geometry                    & Gh;                    // Geometry
+			Mesh                        & BTh;                   // Background Mesh Bth== *this =>no background
+			BamgVertex                   *vertices;
+			Triangle                     *triangles;
+			Edge                         *edges;
+			BamgQuadtree                 *quadtree;
+			BamgVertex                  **orderedvertices;
+			SubDomain                    *subdomains;
+			long                          NbRef;                 // counter of ref on the this class if 0 we can delete
+			long                          maxnbv,maxnbt;         // nombre max de sommets , de triangles
+			long                          nbv,nbt,nbe,nbq;       // nb of vertices, of triangles, of edges and quadrilaterals
+			long                          nbsubdomains;
+			long                          nbtout;                // Nb of oudeside triangle
+
+			R2                            pmin,pmax;             // extrema
+			double                        coefIcoor;             // coef to integer Icoor1;
+			ListofIntersectionTriangles   lIntTria;
+
+			long                          NbVerticesOnGeomVertex;
+			VertexOnGeom                 *VerticesOnGeomVertex;
+			long                          NbVerticesOnGeomEdge;
+			VertexOnGeom                 *VerticesOnGeomEdge;
+			long                          NbVertexOnBThVertex;
+			VertexOnVertex               *VertexOnBThVertex;
+			long                          NbVertexOnBThEdge;
+			VertexOnEdge                 *VertexOnBThEdge;
+			long                          NbCrackedVertices;
+			long                         *CrackedVertices;
+			long                          NbCrackedEdges;
+			CrackedEdge                  *CrackedEdges;
+
+			//Constructors/Destructors
+			Mesh(BamgGeom* bamggeom,BamgMesh* bamgmesh,BamgOpts* bamgopts);
+			Mesh(int* index,double* x,double* y,int nods,int nels);/*MeshConvert*/
+			Mesh(double* x,double* y,int nods); /*BamgTriangulate*/
+			Mesh(Mesh &,Geometry * pGh=0,Mesh* pBTh=0,long maxnbv_in=0 ); //copy operator
+			Mesh(const Mesh &,const int *flag,const int *bb,BamgOpts* bamgopts); // truncature
+			Mesh(long maxnbv,Mesh & BT,BamgOpts* bamgopts,int keepBackVertices=1);
+			Mesh(long maxnbv,Geometry & G,BamgOpts* bamgopts);
+			~Mesh(); 
+
+			//Operators
+			const BamgVertex &operator[](long i) const { return vertices[i];  };
+			BamgVertex       &operator[](long i) { return vertices[i];        };
+			const Triangle   &operator()(long i) const { return triangles[i]; };
+			Triangle         &operator()(long  i) { return triangles[i];             };
+
+			//Methods
+			void SetIntCoor(const char * from =0);
+			double MinimalHmin();
+			double MaximalHmax();
+			I2 R2ToI2(const R2 & P) const;
+			R2 I2ToR2(const I2 & P) const;
+			void AddVertex(BamgVertex & s,Triangle * t,Icoor2 *  =0) ;
+			void Insert(bool random);
+			void Echo(void);
+			void ForceBoundary();
+			void FindSubDomain(int OutSide=0);
+			long TriangleReferenceList(long*) const;
+			void TriangleIntNumbering(long* renumbering);
+			void CrackMesh(BamgOpts* bamgopts);
+			void SmoothMetric(double raisonmax) ;
+			void BoundAnisotropy(double anisomax,double hminaniso= 1e-100) ;
+			void MaxSubDivision(double maxsubdiv);
+			Edge** MakeGeomEdgeToEdge();
+			long SplitInternalEdgeWithBorderVertices();
+			void MakeQuadrangles(double costheta);
+			void MakeBamgQuadtree();
+			void NewPoints(Mesh &,BamgOpts* bamgopts,int KeepVertices=1);
+			long InsertNewPoints(long nbvold,long & NbTSwap,bool random); 
+			void TrianglesRenumberBySubDomain(bool justcompress=false);
+			void SmoothingVertex(int =3,double=0.3);
+			Metric MetricAt (const R2 &) const;
+			GeomEdge* ProjectOnCurve( Edge & AB, BamgVertex &  A, BamgVertex & B,double theta, BamgVertex & R,VertexOnEdge & BR,VertexOnGeom & GR);
+			long GetId(const Triangle & t) const;
+			long GetId(const Triangle * t) const;
+			long GetId(const BamgVertex & t) const;
+			long GetId(const BamgVertex * t) const;
+			long GetId(const Edge & t) const;
+			long GetId(const Edge * t) const;
+			BamgVertex* NearestVertex(Icoor1 i,Icoor1 j) ;
+			Triangle* TriangleFindFromCoord(const I2 & ,Icoor2 [3],Triangle *tstart=0) const;
+			void ReadMesh(int* index,double* x,double* y,int nods,int nels);
+			void ReadMesh(BamgMesh* bamgmesh, BamgOpts* bamgopts);
+			void WriteMesh(BamgMesh* bamgmesh,BamgOpts* bamgopts);
+			void ReadMetric(const BamgOpts* bamgopts);
+			void WriteMetric(BamgOpts* bamgopts);
+			void WriteIndex(int** pindex,int* pnels);
+			void AddMetric(BamgOpts* bamgopts);
+			void BuildMetric0(BamgOpts* bamgopts);
+			void BuildMetric1(BamgOpts* bamgopts);
+			void AddGeometryMetric(BamgOpts* bamgopts);
+			void BuildGeometryFromMesh(BamgOpts* bamgopts=NULL);
+			void ReconstructExistingMesh();
+
+			//Inline methods
+			inline  void CreateSingleVertexToTriangleConnectivity(){
+				for (int i=0;i<nbv;i++) vertices[i].IndexInTriangle=0, vertices[i].t=NULL;
+				for (int i=0;i<nbt;i++) triangles[i].SetSingleVertexToTriangleConnectivity();
+			}
+			inline  void  UnMarkUnSwapTriangle(){
+				for (int i=0;i<nbt;i++)
+				 for(int j=0;j<3;j++)
+				  triangles[i].SetUnMarkUnSwap(j);
+			  }
+			inline  void  SetVertexFieldOn(){
+				for (int i=0;i<nbv;i++)                    vertices[i].GeomEdgeHook=NULL;
+				for (int j=0;j<NbVerticesOnGeomVertex;j++) VerticesOnGeomVertex[j].SetOn();
+				for (int k=0;k<NbVerticesOnGeomEdge;k++ )  VerticesOnGeomEdge[k].SetOn();
+			}	       
+			inline  void   SetVertexFieldOnBTh(){
+				for (int i=0;i<nbv;i++)                 vertices[i].GeomEdgeHook=NULL;
+				for (int j=0;j<NbVertexOnBThVertex;j++) VertexOnBThVertex[j].SetOnBTh();
+				for (int k=0;k<NbVertexOnBThEdge;k++ )  VertexOnBThEdge[k].SetOnBTh();
+			}
+
+		private:
+			void TriangulateFromGeom1(BamgOpts* bamgopts,int KeepVertices=1);// the real constructor mesh adaption
+			void TriangulateFromGeom0(BamgOpts* bamgopts);// the real constructor mesh generator
+			void Triangulate(double* x,double* y,int nods);
+			void Init(long);
+	};
+
+	/*Intermediary*/
+	AdjacentTriangle CloseBoundaryEdge(I2 ,Triangle *, double &,double &) ;
+	void  swap(Triangle *t1,short a1,
+				Triangle *t2,short a2,
+				BamgVertex *s1,BamgVertex *s2,Icoor2 det1,Icoor2 det2);
+	int SwapForForcingEdge(BamgVertex   *  & pva ,BamgVertex  * &   pvb ,
+				AdjacentTriangle & tt1,Icoor2 & dets1,
+				Icoor2 & detsa,Icoor2 & detsb, int & nbswap);
+	int ForceEdge(BamgVertex &a, BamgVertex & b,AdjacentTriangle & taret) ;
+	inline AdjacentTriangle Previous(const AdjacentTriangle & ta){
+		return AdjacentTriangle(ta.t,PreviousEdge[ta.a]);
+	}
+	inline AdjacentTriangle Next(const AdjacentTriangle & ta){
+		return AdjacentTriangle(ta.t,NextEdge[ta.a]);
+	}
+	inline  AdjacentTriangle Adj(const AdjacentTriangle & a){
+		return  a.Adj();
+	}
+	inline void Adj(GeomEdge * & on,int &i){
+		int j=i;i=on->AdjVertexIndex[i];on=on->Adj[j];
+	}
+	inline double qualite(const BamgVertex &va,const BamgVertex &vb,const BamgVertex &vc){
+		double ret; 
+		I2 ia=va,ib=vb,ic=vc;
+		I2 ab=ib-ia,bc=ic-ib,ac=ic-ia;
+		Icoor2 deta=Det(ab,ac);
+		if (deta <=0) ret = -1;
+		else {
+			double a = sqrt((double) (ac,ac)),
+					 b = sqrt((double) (bc,bc)),
+					 c = sqrt((double) (ab,ab)),
+					 p = a+b+c;
+			double h= Max(Max(a,b),c),ro=deta/p;
+			ret = ro/h;
+		}
+		return ret;
+	}
+
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Metric.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Metric.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Metric.cpp	(revision 21239)
@@ -0,0 +1,341 @@
+#include <cstdio>
+#include <string.h>
+#include <cmath>
+
+#include "Metric.h"
+#include "../shared/shared.h"
+
+using namespace std;
+
+namespace bamg {
+
+	SaveMetricInterpole  LastMetricInterpole;
+
+	/*Constructor/Destructor*/
+	Metric::Metric(double a): a11(1/(a*a)),a21(0),a22(1/(a*a)){/*{{{*/
+
+	}/*}}}*/
+	Metric::Metric(double a,double b,double c) :a11(a),a21(b),a22(c){/*{{{*/
+
+	}/*}}}*/
+	Metric::Metric(const double  a[3],const  Metric& m0, const  Metric& m1,const  Metric& m2 ){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/Metric)*/
+
+		Metric mab(a[0]*m0.a11 + a[1]*m1.a11 + a[2]*m2.a11,
+					a[0]*m0.a21 + a[1]*m1.a21 + a[2]*m2.a21,
+					a[0]*m0.a22 + a[1]*m1.a22 + a[2]*m2.a22);
+
+		EigenMetric vab(mab);
+
+		R2 v1(vab.v.x,vab.v.y);
+		R2 v2(-v1.y,v1.x);
+
+		double h1 = a[0] / m0(v1) + a[1] / m1(v1) + a[2] / m2(v1);
+		double h2 = a[0] / m0(v2) + a[1] / m1(v2) + a[2] / m2(v2);
+
+		vab.lambda1 =  1 / (h1*h1);
+		vab.lambda2 =  1 / (h2*h2);
+		*this = vab;
+	}
+	/*}}}*/
+	Metric::Metric(double  a,const  Metric& ma, double  b,const  Metric& mb) { /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/EigenMetric)*/
+
+		/*Compute metric (linear combination of ma and mb)*/
+		Metric mab(a*ma.a11+b*mb.a11,a*ma.a21+b*mb.a21,a*ma.a22+b*mb.a22);
+
+		/*Get Eigen values and vectors*/
+		EigenMetric vab(mab);
+		R2 v1(vab.v.x,vab.v.y);
+		R2 v2(-v1.y,v1.x);
+
+		/*Modify eigen values (a+b=1)*/
+		double h1 = a/ma(v1) + b/mb(v1);
+		double h2 = a/ma(v2) + b/mb(v2);
+		vab.lambda1 =  1/(h1*h1);
+		vab.lambda2 =  1/(h2*h2);
+		*this=vab;
+	}
+	/*}}}*/
+
+	/*Methods*/
+	double Metric::det() const {/*{{{*/
+		return a11*a22-a21*a21;
+	}  /*}}}*/
+	void Metric::Echo(void){/*{{{*/
+
+		_printf_("Metric:\n");
+		_printf_("   [a11 a21 a22]: [" << a11 << " " << a21 << " " << a22 << "]\n");
+
+		return;
+	}
+	/*}}}*/
+	int Metric::IntersectWith(const Metric& M2) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/IntersectWith)*/
+
+		/*Get a new metric from an existing metric (M1=this)
+		 * and a new metric given in input M2 using a 
+		 * Simultaneous Matrix Reduction:
+		 * If M1 and M2 are 2 metrics, we must build N=M1^-1 M2 (Alauzet2003 p16) 
+		 * the eigen vectors of N form a matrix P
+		 * The new metric M = M1 inter M2 is then given by:
+		 *
+		 *      -T [ max(lambda1, mu1)          0         ]  -1				 
+		 * M = P   [                                      ] P		 
+		 *         [        0            max(lambda2, mu2)] 
+		 *
+		 * where lambdai and mui can be computed using Rayleigh formula: 
+		 *    lambdai = vi' M1 vi
+		 * with vi eigen vectors of N (columns of P)
+		 */
+
+		int         change=0;
+		Metric &M1=*this;
+		D2xD2       P;
+
+		//Get P, eigen vectors of N=inv(M1) M2
+		SimultaneousMatrixReduction(*this,M2,P);
+
+		//extract the eigen vectors of P (columns)
+		R2 v1(P.x.x,P.y.x);
+		R2 v2(P.x.y,P.y.y);
+
+		//compute lambdai mui
+		double lambda1=M1(v1,v1);
+		double lambda2=M1(v2,v2);
+		double mu1=M2(v1,v1);
+		double mu2=M2(v2,v2);
+
+		//check where any change needs to be done on M1
+		if ( lambda1 < mu1 )  change=1,lambda1=mu1;
+		if ( lambda2 < mu2 )  change=1,lambda2=mu2; 
+
+		//update M1 if necessary
+		if (change) {
+			D2xD2 invP(P.inv());
+			D2xD2 D(lambda1,0,0,lambda2); 
+			D2xD2 M(invP.t()*D*invP);
+			a11=M.x.x;
+			a21=0.5*(M.x.y+M.y.x);
+			a22=M.y.y;
+		}
+		return change;
+	}
+	/*}}}*/
+	R2     Metric::mul(const R2 x)const {/*{{{*/
+		return R2(a11*x.x+a21*x.y,a21*x.x+a22*x.y);
+	}/*}}}*/
+
+	/*Intermediary*/
+	double LengthInterpole(const Metric& Ma,const  Metric& Mb, R2 AB) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/LengthInterpole)*/
+
+		double k=1./2.;
+		int level=0;
+		static int kkk=0;
+		static  Metric Ms1[32],Ms2[32];
+		static double lMs1[32],lMs2[32];
+		static double K[32];
+		double l=0,sss=0;
+		Ms1[level]=Ma;
+		Ms2[level]=Mb;
+		double sa =  Ma(AB);
+		double sb =  Mb(AB);
+		lMs1[level]=sa;
+		lMs2[level]=sb;
+		K[level]=k;
+		level++;
+		int i=0;
+		double * L= LastMetricInterpole.L, *S = LastMetricInterpole.S;
+		double  sstop = 0.1; // Max(0.6,(sa+sb)/5000);
+		while (level) {
+			level--;
+			Metric M1=Ms1[level];
+			Metric M2=Ms2[level];
+			k=K[level];
+			double s1=  lMs1[level];
+			double s2=  lMs2[level];
+
+			double s= (s1+s2)*k;
+			if( s > sstop   && level < 30 && i < 500-level ) {
+				Metric Mi(0.5,M1,0.5,M2);
+				double si = Mi(AB);
+				if( Abs((s1+s2)-(si+si)) > s1*0.001) 
+				  {
+					k=k/2;
+					// we begin by the end to walk in the correct direction from a to b
+					// due to the stack 
+					Ms1[level]=Mi;
+					Ms2[level]=M2;
+					lMs1[level]=si;
+					lMs2[level]=s2;
+					K[level]=k;
+					level++;
+					Ms1[level]=M1;
+					Ms2[level]=Mi;
+					lMs1[level]=s1;
+					lMs2[level]=si;
+					K[level]=k;
+					level++;
+				  }
+				else
+				 L[i]= l += s,S[i]=sss+=k,i++;
+			}
+			else 
+			 L[i]= l += s,S[i]=sss+=k,i++;
+		}
+		// warning for optimisation S is in [0:0.5] not in [0:1]
+		if (i>=512){
+			_error_("i>=512");
+		}
+		LastMetricInterpole.lab=l;
+		LastMetricInterpole.opt=i;
+		if (i>200 && kkk++<10) _printf_("WARNING: LengthInterpole: ( i=" << i << " l=" << l << " sss=" << sss << " ) " << sstop << "\n"); 
+		return l;
+	}
+	/*}}}*/
+	void SimultaneousMatrixReduction( Metric M1,  Metric M2, D2xD2 &V) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/ReductionSimultanee)*/
+
+		/*In this routine we must return a matrix V that is composed of the 
+		 * eigen vectors of N=inv(M1) M2.
+		 * Instead of looking at N directly, we are going to use the fact that
+		 * M1 and M2 are symmetrical, positive definite. 
+		 * The eigen values of N are given by solving
+		 *    inv(M1) M2 V = lambda V
+		 * which is equivalent to
+		 *    M2 V = lambda M1 V
+		 * and we will hence solve
+		 *    (M2 - lambda M1) V = 0
+		 */
+
+		//M1 and M2 components
+		double a11=M1.a11,a21=M1.a21,a22=M1.a22;
+		double b11=M2.a11,b21=M2.a21,b22=M2.a22;
+
+		/*To get the eigen values, we solve the following problem:
+		 *    det(M2-lambda M1) = 0
+		 *    (b11 - lambda a11)(b22-lambda a22) - (b21-lambda a21)^2
+		 * and we have the following trinome:
+		 *    a lambda^2 + b lambda + c =0
+		 * with:
+		 *    a = a11 a22 - a21 a21 (=det(M1))
+		 *    b = -a11 b22 -b11 a22 + 2 b21 a21
+		 *    c = b11 b22 - b21 b21 (=det(M2))
+		 *    */
+		const double a= a11*a22  - a21*a21;
+		const double b=-a11*b22 - b11*a22+2*b21*a21;
+		const double c=-b21*b21 + b11*b22;
+		const double bb=b*b,ac=a*c;
+		const double delta= bb-4*ac;
+
+		// first, case of a double root if:
+		//  - all the terms are very small (a??)
+		//  - or : delta is very small
+		if ( (bb + Abs(ac) < 1.0e-34 ) ||  (delta < 1.0e-6*bb) ){
+			//all vectors are eigen vectors -> choose 1,0 and 0,1
+			V= D2xD2(1,0,0,1);
+		}
+
+		//general case: two distinct roots: lambda1 and lambda2
+		else {
+
+			/*Compute eigen values*/
+			const double delta2 = sqrt(delta);
+			double lambda[2];
+			lambda[0]= (-b - delta2)/(2*a);
+			lambda[1]= (-b + delta2)/(2*a);
+
+			/*compute eigen vectors*/
+			double vp[2][2];
+			double v0,v1,v2;
+			double s0,s1;
+
+			for(int i=0;i<2;i++){
+				/*Now, one must find the eigen vectors. For that we use the 
+				 * following property of the inner product
+				 *    (Ax,b) = transp(b) Ax = transp(x) transp(A) b
+				 *           = (transp(A) b ,x)
+				 * Here we are dealing with A= M2 - lambda M1 which is symmetrical:
+				 *    for all (x,y) in R2 
+				 *       ((M2 - lambda M1)x,y)=((M2 - lambda M1)y,x)
+				 * If y is in Ker(M2 - lambda M1):
+				 *    for all x in R2
+				 *       ((M2 - lambda M1)y,x)=0
+				 * This shows that:
+				 *    Ker(M2 - lambda M1) is orthogonal to Im(M2 - lambda M1)
+				 * To find the eigen vectors, we only have to find two vectors
+				 * of the image and take their perpendicular as long as they are
+				 * not 0.
+				 * To do that, we take (1,0) and (0,1) and take the larger norm*/
+
+				//compute V = M2 - lambdai M1
+				v0 = b11 - lambda[i]*a11;
+				v1 = b21 - lambda[i]*a21;
+				v2 = b22 - lambda[i]*a22;
+
+				// compute s1=norm(V(1,0)) and s0=norm(V(0,1))
+				s0 = v0*v0 + v1*v1;
+				s1 = v1*v1 + v2*v2;
+
+				//compute vp1 = (vp1x,vp1y)
+				if(s1 < s0){
+					s0=sqrt(s0);
+					vp[0][i]=   v1/s0;
+					vp[1][i]= - v0/s0;
+				}
+				else{
+					s1=sqrt(s1);
+					vp[0][i]=   v2/s1;
+					vp[1][i]= - v1/s1;
+				}
+			}
+
+			//compute V from vp
+			V=D2xD2(vp[0][0],vp[0][1],vp[1][0],vp[1][1]);
+		}
+	}
+	/*}}}*/
+	double abscisseInterpole(const Metric& Ma,const  Metric& Mb, R2 AB,double s,int optim) { /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/abscisseInterpole)*/
+
+		if(!optim)  LengthInterpole(Ma,Mb,AB);
+		double l  = s* LastMetricInterpole.lab,r;
+		int j=LastMetricInterpole.opt-1;
+
+		double * L= LastMetricInterpole.L, *S = LastMetricInterpole.S;
+		// warning for optimisation S is the abcisse in [0:0.5]
+		// and L is le lenght 
+		if(l<=L[0]){
+			r=2*S[0]*l/L[0];
+		}
+		else if (l>=L[j]){
+			r=1;
+		}
+		else{
+			int i=0;
+			while (j-i>1){
+				int k;
+				k= (i+j)/2;
+				if(l<=L[k]){
+					j=k;// l<=L[j] 
+				}
+				else{
+					i=k; //  L[i]<l
+				}
+			};
+			if (i==j){
+				r = 2*S[i];
+			}
+			else{
+				r =  2*(S[i]*(L[j]-l)+ S[j]*(l-L[i]))/(L[j]-L[i]);
+			}
+		}
+		if (r>1 || r<0){
+			_error_("r>1 || r<0");
+		}
+		return r ;
+	}
+	/*}}}*/
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Metric.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Metric.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Metric.h	(revision 21239)
@@ -0,0 +1,135 @@
+#ifndef _METRIC_H
+#define _METRIC_H
+
+#include "./include.h"
+#include "../shared/shared.h"
+#include "R2.h"
+#include <math.h>
+
+namespace bamg {
+
+	typedef P2<double,double>    D2;
+	typedef P2xP2<double,double> D2xD2;
+
+	class Metric;
+	class EigenMetric;
+
+	class Metric{
+
+		public:
+
+			//fields
+			double a11,a21,a22;
+
+			//friends
+			friend class EigenMetric;
+
+			//functions
+			Metric():a11(0),a21(0),a22(0){};
+			Metric(const EigenMetric&);
+			Metric(double a);
+			Metric(double a,double b,double c);
+			Metric( double  a,const  Metric& ma, double  b,const  Metric& mb);
+			Metric(const double  a[3],const  Metric& m0,const  Metric& m1,const  Metric& m2 );
+			void        Echo();
+			R2          mul(const R2 x)const;
+			double      det() const;
+			int         IntersectWith(const  Metric& M2);
+			inline void Box(double &hx,double &hy) const;
+
+			/*The following functions must remain the the header file because it is called before Metric
+			 * is compiled by other classes*/
+			R2 Orthogonal(const R2 x){ return R2(-(a21*x.x+a22*x.y),a11*x.x+a21*x.y); }
+			R2 Orthogonal(const I2 x){ return R2(-(a21*x.x+a22*x.y),a11*x.x+a21*x.y); }
+
+			//operators
+			Metric operator*(double c) const {double c2=c*c;return  Metric(a11*c2,a21*c2,a22*c2);} 
+			Metric operator/(double c) const {double c2=1/(c*c);return  Metric(a11*c2,a21*c2,a22*c2);} 
+			operator D2xD2(){ return D2xD2(a11,a21,a21,a22);}
+			double  operator()(R2 x) const { return sqrt(x.x*x.x*a11+2*x.x*x.y*a21+x.y*x.y*a22);};        // length of x in metric sqrt(<Mx,x>)
+			double  operator()(R2 x,R2 y) const { return x.x*y.x*a11+(x.x*x.y+x.y*y.x)*a21+x.y*y.y*a22;};
+
+	};
+
+	class EigenMetric{
+		public:
+
+			//fields
+			double lambda1,lambda2;
+			D2     v;
+
+			//friends
+			friend  class Metric;
+
+			//functions
+			EigenMetric(const Metric& );
+			EigenMetric(double r1,double r2,const D2& vp1);
+			void   Echo();
+			void   Abs();
+			void   pow(double  p);
+			void   Min(double  a);
+			void   Max(double  a);
+			void   Minh(double h);
+			void   Maxh(double h);
+			double hmin()   const;
+			double hmax()   const;
+			double lmax()   const;
+			double lmin()   const;
+			double Aniso2() const;
+			inline void BoundAniso2(const double coef);
+
+			//operators
+			void operator *=(double coef){ lambda1*=coef;lambda2*=coef;}
+	};
+
+	class SaveMetricInterpole {
+		friend double LengthInterpole(const Metric& Ma,const  Metric& Mb, R2 AB);
+		friend double abscisseInterpole(const Metric& Ma ,const  Metric& Mb, R2 ,double s,int optim);
+		public:
+		int opt;
+		double lab;
+		double L[1024],S[1024];
+	};
+
+	extern SaveMetricInterpole  LastMetricInterpole; // for optimization 
+	//Functions
+	void  SimultaneousMatrixReduction( Metric M1,  Metric M2,D2xD2 &V);
+	double LengthInterpole(const Metric& Ma,const  Metric& Mb, R2 AB);
+	double abscisseInterpole(const Metric& Ma,const  Metric& Mb, R2 AB,double s,int optim=0);
+
+	//inlines
+	inline void  EigenMetric::BoundAniso2(const double coef){
+		if (coef<=1.00000000001){
+			if (lambda1 < lambda2)
+			 lambda1 = bamg::Max(lambda1,lambda2*coef);
+			else
+			 lambda2 = bamg::Max(lambda2,lambda1*coef);
+		}
+		else{  //TO BE CHECKED
+			if (lambda1 > lambda2)
+			 lambda1 = bamg::Min(lambda1,lambda2*coef);
+			else
+			 lambda2 = bamg::Min(lambda2,lambda1*coef);
+		}
+	}
+	inline Metric::Metric(const EigenMetric& M) {
+		double v00=M.v.x*M.v.x;
+		double v11=M.v.y*M.v.y;
+		double v01=M.v.x*M.v.y;
+		a11=v00*M.lambda1+v11*M.lambda2;
+		a21=v01*(M.lambda1-M.lambda2);
+		a22=v00*M.lambda2+v11*M.lambda1;
+	}
+	inline   void  Metric::Box(double &hx,double &hy) const {
+		double d=  a11*a22-a21*a21;
+		hx = sqrt(a22/d);
+		hy = sqrt(a11/d);
+	}
+	inline double LengthInterpole(double la,double lb) {
+		return ( Abs(la - lb) < 1.0e-6*Max3(la,lb,1.0e-20) ) ?  (la+lb)/2  : la*lb*log(la/lb)/(la-lb);
+	}
+	inline double abscisseInterpole(double la,double lb,double lab,double s){
+		return ( Abs(la - lb) <1.0e-6*Max3(la,lb,1.0e-20))  ? s : (exp(s*lab*(la-lb)/(la*lb))-1)*lb/(la-lb);
+	}
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/R2.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/R2.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/R2.h	(revision 21239)
@@ -0,0 +1,101 @@
+/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, R2.h)*/
+#ifndef _R2_H
+#define _R2_H
+
+#include <cstdio>
+#include "../shared/shared.h"
+
+namespace bamg {
+
+	template <class R,class RR> class P2{
+
+		  public:  
+
+			  //fields
+			  R x,y;
+
+			  //functions
+			  P2 () :x(0),y(0) {};
+			  P2 (R a,R b)  :x(a),y(b)  {}
+			  P2 (P2 A,P2 B) : x(B.x-A.x),y(B.y-A.y) {}
+			  void Echo() const{
+				  printf("Member of P2:\n");
+				  std::cout<<"   x: "<<x<<std::endl;
+				  std::cout<<"   y: "<<y<<std::endl;
+			  }
+			  //operators
+			  RR       operator,(const P2<R,RR> & cc) const {return  (RR) x* (RR) cc.x+(RR) y* (RR) cc.y;} //scalar product
+			  P2<R,RR> operator+(const P2<R,RR> & cc) const {return P2<R,RR>(x+cc.x,y+cc.y);}
+			  P2<R,RR> operator-(const P2<R,RR> & cc) const {return P2<R,RR>(x-cc.x,y-cc.y);}
+			  P2<R,RR> operator-()  const{return P2<R,RR>(-x,-y);}
+			  P2<R,RR> operator*(R  cc) const {return P2<R,RR>(x*cc,y*cc);}
+			  P2<R,RR> operator/(R  cc) const {return P2<R,RR>(x/cc,y/cc);}
+			  P2<R,RR> operator+=(const  P2<R,RR> & cc) {x += cc.x;y += cc.y;return *this;}
+			  P2<R,RR> operator/=(const  R r) {x /= r;y /= r;return *this;}
+			  P2<R,RR> operator*=(const  R r) {x *= r;y *= r;return *this;}
+			  P2<R,RR> operator-=(const  P2<R,RR> & cc) {x -= cc.x;y -= cc.y;return *this;}
+
+	  };
+
+	template <class R,class RR> class P2xP2{
+
+		  public:
+
+			  //fields
+			  P2<R,RR> x,y; 
+
+			  //functions
+			  P2xP2 (): x(),y()  {}
+			  P2xP2 (P2<R,RR> a,P2<R,RR> b): x(a),y(b) {}
+			  P2xP2 (P2<R,RR> a,P2<R,RR> b,P2<R,RR> c ): x(b-a),y(c-a) {}
+			  P2xP2 (R xx,R xy,R yx,R yy) :x(xx,xy),y(yx,yy) {}
+			  void Echo(){
+				  printf("Member of P2xP2:\n");
+				  printf("   x.x: %g   x.y: %g\n",x.x,x.y);
+				  printf("   y.x: %g   y.x: %g\n",y.x,y.y);
+			  }
+			  RR          det() const {return (RR) x.x* (RR) y.y - (RR) x.y * (RR) y.x;}
+			  P2xP2<R,RR> inv()  const{
+				  RR d = (*this).det(); 
+				  return P2xP2<R,RR>((R)( y.y /d) ,(R)(-x.y/d),(R)( -y.x/d) ,(R)( x.x/d) );
+			  };
+			  P2xP2<R,RR> t()  {return P2xP2<R,RR>(x.x,y.x,x.y,y.y);} //transposer 
+			  P2<R,RR>    tx() {return P2<R,RR>(x.x,y.x);} 
+			  P2<R,RR>    ty() {return P2<R,RR>(x.y,y.y);} 
+			  //Operators
+			  P2<R,RR>     operator*(const P2<R,RR>& c) const {return P2<R,RR>(x.x*c.x + x.y*c.y, y.x*c.x + y.y*c.y);}
+			  P2xP2<R,RR>  operator*(P2xP2<R,RR> c) const{
+				  return  P2xP2<R,RR>(x.x*c.x.x + x.y*c.y.x,
+							  x.x*c.x.y + x.y*c.y.y,
+							  y.x*c.x.x + y.y*c.y.x,
+							  y.x*c.x.y + y.y*c.y.y);
+			  }
+	  };  
+
+	//inline functions
+	template  <class R,class RR>  
+	  inline RR Det(const P2<R,RR> x,const P2<R,RR> y) {
+		  return (RR) x.x * (RR) y.y - (RR) x.y * (RR) y.x ;
+	  } 
+	template  <class R,class RR>  
+	  inline RR Area2 (const P2<R,RR> a,const P2<R,RR> b,const P2<R,RR> c) {
+		  return Det(b-a,c-a) ;
+	  }
+	template  <class R,class RR>  
+	  inline R Norme1 (const P2<R,RR> x) {
+		  return (Abs(x.x)+Abs(x.y)) ;
+	  } 
+	template  <class R,class RR>  
+	  inline RR Norme2_2 (const P2<R,RR> x) {
+		  return (RR)x.x*(RR)x.x + (RR)x.y*(RR)x.y ;
+	  } 
+	template  <class R,class RR>  
+	  inline RR Norme2 (const P2<R,RR> x) {
+		  return sqrt((RR)x.x*(RR)x.x + (RR)x.y*(RR)x.y) ;
+	  } 
+	template  <class R,class RR>  
+	  inline P2<R,RR> Orthogonal (const P2<R,RR> x) {
+		  return  P2<R,RR>(-x.y,x.x);
+	  } 
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/SetOfE4.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/SetOfE4.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/SetOfE4.cpp	(revision 21239)
@@ -0,0 +1,107 @@
+#include "./bamgobjects.h"
+
+using namespace std;
+namespace bamg {
+
+	/*Constructor*/
+	SetOfEdges4::SetOfEdges4(long mmx,long nnx){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, SetOfEdges4.cpp/SetOfEdges4)*/
+
+		/*Intermediary*/
+		int i;
+
+		//initialize fields
+		nx   =nnx;   //number of vertices
+		nbax =mmx;   // 3 * number of triangles
+		NbOfEdges=0;
+		head = new long [nx];
+		Edges= new IntEdge[nbax];
+
+		//initialize head (-1 everywhere)
+		i=nx;
+		while(i--) head[i]=-1;
+	}
+	/*}}}*/
+
+	/*Methods*/ 
+	long SetOfEdges4::add(long ii,long jj) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, SetOfEdges4.cpp/add)*/
+
+		/*Intermediary*/
+		int h,n;
+
+		//get n from h (usually h=ii)
+		_assert_(head);
+		n=head[h=Abs(ii)%nx];
+
+		//go through the existing edges that holds h (=ii) and check that 
+		//the edge ii jj is not already in Edge
+		while (n >= 0){
+
+			//if the edge ii jj is already in Edges, return n
+			if (ii == Edges[n].i && jj == Edges[n].j) return n;
+
+			//else go to next edge that holds ii
+			else n = Edges[n].next;
+		}
+
+		//check that nbax <=NbOfEdges
+		if (nbax <=NbOfEdges ) {
+			_error_("SetOfEdges4::add overflow: NbOfEdges=" << NbOfEdges << " > nbax=" << nbax);
+		}
+
+		//update chain
+		Edges[NbOfEdges].i=ii;
+		Edges[NbOfEdges].j=jj;
+		Edges[NbOfEdges].next= head[h];
+		head[h] = NbOfEdges;
+		return NbOfEdges ++;
+	}
+	/*}}}*/
+	long SetOfEdges4::find(long ii,long jj) { /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, SetOfEdges4.cpp/find)*/
+
+		/*Intermediary*/
+		int n;
+
+		//check that head is not empty
+		_assert_(head);
+
+		//get n from h (usually h=ii)
+		n=head[Abs(ii)%nx];
+
+		//go through the existing edges that holds h (=ii) and return position in Edge
+		while (n >= 0){
+
+			//if the edge ii jj is already in Edges, return n
+			if (ii == Edges[n].i && jj == Edges[n].j) return n;
+
+			//else go to next edge that holds ii
+			else n = Edges[n].next;
+		}
+
+		//if we reach this point, the edge does not exist return -1
+		return -1;
+	}
+	/*}}}*/
+	long SetOfEdges4::i(long k){/*{{{*/
+		return Edges[k].i;
+	}
+	/*}}}*/
+	long SetOfEdges4::j(long k){/*{{{*/
+		return Edges[k].j;
+	}
+	/*}}}*/
+	long SetOfEdges4::nb(){/*{{{*/
+		return NbOfEdges;
+	}
+	/*}}}*/
+	long SetOfEdges4::SortAndAdd (long ii,long jj) {/*{{{*/
+		return ii <=jj ? add (ii,jj)  : add (jj,ii) ;
+	}
+	/*}}}*/
+	long SetOfEdges4::SortAndFind (long ii,long jj) {/*{{{*/
+		return ii <=jj ? find (ii,jj)  : find (jj,ii) ;
+	}
+	/*}}}*/
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/SetOfE4.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/SetOfE4.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/SetOfE4.h	(revision 21239)
@@ -0,0 +1,41 @@
+#ifndef _SetOfEdge4_h
+#define _SetOfEdge4_h
+
+namespace bamg {
+
+	class SetOfEdges4;
+
+	class IntEdge{
+		friend class SetOfEdges4;
+		public:
+		long i,j;
+		long next; 
+	};
+
+	class SetOfEdges4 {
+
+		private:
+			long nx,nbax,NbOfEdges;
+			long* head; 
+			IntEdge* Edges;
+
+		public:
+
+			// Constructors
+			SetOfEdges4(long ,long);// nb Edges mx , nb de sommet 
+			~SetOfEdges4() {delete [] head; delete [] Edges;}
+
+			//operators
+			IntEdge & operator[](long k){return  Edges[k];}
+
+			//Methods
+			long add (long ii,long jj);
+			long SortAndAdd (long ii,long jj);
+			long nb();
+			long find (long ii,long jj);
+			long SortAndFind (long ii,long jj);
+			long i(long k);
+			long j(long k);
+	};
+}
+#endif 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/SubDomain.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/SubDomain.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/SubDomain.cpp	(revision 21239)
@@ -0,0 +1,27 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "SubDomain.h"
+#include "Mesh.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+
+	/*Methods*/
+	void SubDomain::Set(const Mesh & Th ,long i,Mesh & ThNew){/*{{{*/
+		*this = Th.subdomains[i];
+		if( head-Th.triangles<0 || head-Th.triangles>=Th.nbt){
+			_error_("head-Th.triangles<0 || head-Th.triangles>=Th.nbt");
+		}
+		head = ThNew.triangles + Th.GetId(head) ; 
+		if(edge-Th.edges<0 || edge-Th.edges>=Th.nbe){
+			_error_("edge-Th.edges<0 || edge-Th.edges>=Th.nbe");
+		}
+		edge = ThNew.edges+ Th.GetId(edge);
+	}
+	/*}}}*/
+
+} 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/SubDomain.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/SubDomain.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/SubDomain.h	(revision 21239)
@@ -0,0 +1,26 @@
+#ifndef _SUBDOMAIN_H_
+#define _SUBDOMAIN_H_
+
+#include "./include.h"
+#include "./Edge.h"
+
+namespace bamg {
+
+	class Triangle;
+	class Mesh;
+
+	class SubDomain {
+
+		public:
+
+			Triangle *head;
+			long      ReferenceNumber;
+			int       direction;   // -1 or 1
+			Edge     *edge;        // to geometrical
+
+			//Methods
+			void Set(const Mesh &,long,Mesh &);
+	};
+
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Triangle.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Triangle.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Triangle.cpp	(revision 21239)
@@ -0,0 +1,382 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "./bamgobjects.h"
+#include "../shared/shared.h"
+#include "./det.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+	Triangle::Triangle(void){/*{{{*/
+
+	}
+	/*}}}*/
+	Triangle::Triangle(Mesh *Th,long i,long j,long k) {/*{{{*/
+		BamgVertex *v=Th->vertices;
+		long nbv = Th->nbv;
+		if (i<0 || j<0 || k<0){
+			_error_("i<0 || j<0 || k<0");
+		}
+		if (i>=nbv || j>=nbv || k>=nbv){
+			_error_("i>=nbv || j>=nbv || k>=nbv");
+		}
+		vertices[0]=v+i;
+		vertices[1]=v+j;
+		vertices[2]=v+k;
+		adj[0]=adj[1]=adj[2]=0;
+		AdjEdgeIndex[0]=AdjEdgeIndex[1]=AdjEdgeIndex[2]=0;
+		det=0;
+	}
+	/*}}}*/
+	Triangle::Triangle(BamgVertex *v0,BamgVertex *v1,BamgVertex *v2){/*{{{*/
+		vertices[0]=v0;
+		vertices[1]=v1;
+		vertices[2]=v2;
+		adj[0]=adj[1]=adj[2]=0;
+		AdjEdgeIndex[0]=AdjEdgeIndex[1]=AdjEdgeIndex[2]=0;
+		if (v0) det=0;
+		else {
+			det=-1;
+			link=NULL;};  
+	}
+	/*}}}*/
+
+	/*Methods*/
+	AdjacentTriangle Triangle::Adj(int i)  const {/*{{{*/
+		return AdjacentTriangle(adj[i],AdjEdgeIndex[i]&3);
+	};/*}}}*/
+	double Triangle::Length() const{/*{{{*/
+
+		double l;
+
+		/*Get three vertices A,B and C*/
+		R2 A=*this->vertices[0];
+		R2 B=*this->vertices[1];
+		R2 C=*this->vertices[2];
+
+		/*Compute edges*/
+		R2 e1=B-A;
+		R2 e2=C-A;
+		R2 e3=B-C;
+
+		/*Compute edge length*/
+		l=Norme2(e1);
+		l=max(l,Norme2(e2));
+		l=max(l,Norme2(e3));
+
+		return l;
+	};/*}}}*/
+	void Triangle::Echo(void){/*{{{*/
+
+		int i;
+
+		_printf_("Triangle:\n");
+		_printf_("   vertices pointer towards three vertices\n");
+		_printf_("      vertices[0] vertices[1] vertices[2] = " << vertices[0] << " " << vertices[1] << " " << vertices[2] << "\n");
+		_printf_("   adj pointer towards three adjacent triangles\n");
+		_printf_("      adj[0] adj[1] adj[2] = " << adj[0] << " " << adj[1] << " " << adj[2] << "\n");
+		_printf_("   det (integer triangle determinant) = " << det << "\n");
+		if (link){
+			_printf_("   link (pointer toward duplicate triangle)= " << link << "\n");
+		}
+		else{
+			_printf_("   color = " << color << "\n");
+		}
+
+		_printf_("\nThree vertices:\n");
+		for(i=0;i<3;i++){
+			if (vertices[i]){
+				vertices[i]->Echo();
+			}
+			else{
+				_printf_("   vertex " << i+1 << " does not exist\n");
+			}
+		}
+
+		return;
+	}
+	/*}}}*/
+	int    Triangle::GetAllflag(int a){/*{{{*/
+		return AdjEdgeIndex[a] & 1020;
+	}/*}}}*/
+	int    Triangle::Hidden(int a)const {/*{{{*/
+		return AdjEdgeIndex[a]&16;
+	} /*}}}*/
+	int    Triangle::Locked(int a)const {/*{{{*/
+		return AdjEdgeIndex[a]&4;
+	} /*}}}*/
+	short  Triangle::NuEdgeTriangleAdj(int i) const {/*{{{*/
+		/*Number of the  adjacent edge in adj tria (make sure it is between 0 and 2*/
+		return AdjEdgeIndex[i&3]&3;
+	}/*}}}*/
+	long  Triangle::Optim(short i,int koption) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Optim)*/
+
+		// turn around (positive direction)
+		Triangle *t=this;
+		long NbSwap =0;
+		int  k = 0;
+		int  j = OppositeEdge[i];
+		int  jp= PreviousEdge[j];
+
+		// initialize tp, jp the previous triangle & edge
+		Triangle *tp=adj[jp];
+		jp = AdjEdgeIndex[jp]&3;
+		do {
+			while (t->swap(j,koption)){
+				if (k>=20000) _error_("k>=20000");
+				NbSwap++;
+				k++;
+				t=  tp->adj[jp];      // set unchange t qnd j for previous triangles
+				j=  NextEdge[tp->AdjEdgeIndex[jp]&3];
+			}
+			// end on this  Triangle 
+			tp = t;
+			jp = NextEdge[j];
+
+			t=  tp->adj[jp];      // set unchange t qnd j for previous triangles
+			j=  NextEdge[tp->AdjEdgeIndex[jp]&3];
+
+		} while( t != this);
+		return NbSwap;
+	}
+	/*}}}*/
+	Triangle* Triangle::Quadrangle(BamgVertex * & v0,BamgVertex * & v1,BamgVertex * & v2,BamgVertex * & v3) const{/*{{{*/
+		// return the other triangle of the quad if a quad or 0 if not a quat
+		Triangle * t =0;
+		if (link) {
+			int a=-1;
+			if (AdjEdgeIndex[0] & 16 ) a=0;
+			if (AdjEdgeIndex[1] & 16 ) a=1;
+			if (AdjEdgeIndex[2] & 16 ) a=2;
+			if (a>=0) {
+				t = adj[a];
+				//  if (t-this<0) return 0;
+				v2 = vertices[VerticesOfTriangularEdge[a][0]];
+				v0 = vertices[VerticesOfTriangularEdge[a][1]];
+				v1 = vertices[OppositeEdge[a]];
+				v3 = t->vertices[OppositeEdge[AdjEdgeIndex[a]&3]];
+			}
+		}
+		return t;
+	}
+	/*}}}*/
+	double   Triangle::QualityQuad(int a,int option) const{/*{{{*/
+		double q;
+		if (!link || AdjEdgeIndex[a] &4)
+		 q=  -1;
+		else {
+			Triangle * t = adj[a];
+			if (t-this<0) q=  -1;// because we do 2 times 
+			else if (!t->link ) q=  -1;
+			else if (AdjEdgeIndex[0] & 16 || AdjEdgeIndex[1] & 16  || AdjEdgeIndex[2] & 16 || t->AdjEdgeIndex[0] & 16 || t->AdjEdgeIndex[1] & 16 || t->AdjEdgeIndex[2] & 16 )
+			 q= -1;
+			else if(option){ 
+				const BamgVertex & v2 = *vertices[VerticesOfTriangularEdge[a][0]];
+				const BamgVertex & v0 = *vertices[VerticesOfTriangularEdge[a][1]];
+				const BamgVertex & v1 = *vertices[OppositeEdge[a]];
+				const BamgVertex & v3 = * t->vertices[OppositeEdge[AdjEdgeIndex[a]&3]];
+				q =  QuadQuality(v0,v1,v2,v3); // do the float part
+			}
+			else q= 1;
+		}
+		return  q;
+	}
+	/*}}}*/
+	void  Triangle::Renumbering(Triangle *tb,Triangle *te, long *renu){/*{{{*/
+
+		if (link  >=tb && link  <te) link  = tb + renu[link -tb];
+		if (adj[0] >=tb && adj[0] <te) adj[0] = tb + renu[adj[0]-tb];
+		if (adj[1] >=tb && adj[1] <te) adj[1] = tb + renu[adj[1]-tb];
+		if (adj[2] >=tb && adj[2] <te) adj[2] = tb + renu[adj[2]-tb];    
+	}/*}}}*/
+	void Triangle::Renumbering(BamgVertex *vb,BamgVertex *ve, long *renu){/*{{{*/
+		if (vertices[0] >=vb && vertices[0] <ve) vertices[0] = vb + renu[vertices[0]-vb];
+		if (vertices[1] >=vb && vertices[1] <ve) vertices[1] = vb + renu[vertices[1]-vb];
+		if (vertices[2] >=vb && vertices[2] <ve) vertices[2] = vb + renu[vertices[2]-vb];    
+	}/*}}}*/
+	void Triangle::Set(const Triangle & rec,const Mesh & Th ,Mesh & ThNew){ /*{{{*/
+		*this = rec;
+		if ( vertices[0] ) vertices[0] = ThNew.vertices +  Th.GetId(vertices[0]);
+		if ( vertices[1] ) vertices[1] = ThNew.vertices +  Th.GetId(vertices[1]);
+		if ( vertices[2] ) vertices[2] = ThNew.vertices +  Th.GetId(vertices[2]);
+		if(adj[0]) adj[0] =  ThNew.triangles + Th.GetId(adj[0]);
+		if(adj[1]) adj[1] =  ThNew.triangles + Th.GetId(adj[1]);
+		if(adj[2]) adj[2] =  ThNew.triangles + Th.GetId(adj[2]);
+		if (link  >= Th.triangles && link  < Th.triangles + Th.nbt)
+		 link = ThNew.triangles + Th.GetId(link);
+	}
+	/*}}}*/
+	void Triangle::SetAdjAdj(short a){/*{{{*/
+		// Copy all the mark 
+		a &= 3;
+		Triangle *tt=adj[a];
+		AdjEdgeIndex [a] &= 55; // remove MarkUnSwap
+		short aatt = AdjEdgeIndex[a] & 3;
+		if(tt){ 
+			tt->adj[aatt]=this;
+			tt->AdjEdgeIndex[aatt]=a + (AdjEdgeIndex[a] & 60 ) ;
+		}
+	}/*}}}*/
+	void Triangle::SetAdj2(short a,Triangle *t,short aat){/*{{{*/
+		/*For current triangle:
+		 * - a is the index of the edge were the adjency is set (in [0 2])
+		 * - t is the adjacent triangle
+		 * - aat is the index of the same edge in the adjacent triangle*/
+		adj[a]=t;
+		AdjEdgeIndex[a]=aat;
+		if(t){ //if t!=NULL add adjacent triangle to t (this)
+			t->adj[aat]=this;
+			t->AdjEdgeIndex[aat]=a;
+		}
+	}/*}}}*/
+	void Triangle::SetHidden(int a){/*{{{*/
+		//Get Adjacent Triangle number a
+		Triangle* t = adj[a];
+		//if it exist
+		//C|=D -> C=(C|D) bitwise inclusive OR
+		if(t) t->AdjEdgeIndex[AdjEdgeIndex[a] & 3] |=16;
+		AdjEdgeIndex[a] |= 16;
+	}/*}}}*/
+	void Triangle::SetLocked(int a){/*{{{*/
+		//mark the edge as on Boundary
+		Triangle * t = adj[a];
+		t->AdjEdgeIndex[AdjEdgeIndex[a] & 3] |=4;
+		AdjEdgeIndex[a] |= 4;
+	}/*}}}*/
+	void Triangle::SetMarkUnSwap(int a){/*{{{*/
+		Triangle * t = adj[a];
+		t->AdjEdgeIndex[AdjEdgeIndex[a] & 3] |=8;
+		AdjEdgeIndex[a] |=8 ;
+	}/*}}}*/
+	void Triangle::SetSingleVertexToTriangleConnectivity() { /*{{{*/
+		if (vertices[0]) (vertices[0]->t=this,vertices[0]->IndexInTriangle=0);
+		if (vertices[1]) (vertices[1]->t=this,vertices[1]->IndexInTriangle=1);
+		if (vertices[2]) (vertices[2]->t=this,vertices[2]->IndexInTriangle=2);
+	}/*}}}*/
+	void Triangle::SetUnMarkUnSwap(int a){ /*{{{*/
+		Triangle * t = adj[a];
+		t->AdjEdgeIndex[AdjEdgeIndex[a] & 3] &=55; // 23 + 32 
+		AdjEdgeIndex[a] &=55 ;
+	}/*}}}*/
+	int Triangle::swap(short a,int koption){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/swap)*/
+
+		if(a/4 !=0) return 0;// arete lock or MarkUnSwap
+
+		Triangle *t1=this,*t2=adj[a];// les 2 triangles adjacent
+		short a1=a,a2=AdjEdgeIndex[a];// les 2 numero de l arete dans les 2 triangles
+		if(a2/4 !=0) return 0; // arete lock or MarkUnSwap
+
+		BamgVertex  *sa=t1->vertices[VerticesOfTriangularEdge[a1][0]];
+		BamgVertex  *sb=t1->vertices[VerticesOfTriangularEdge[a1][1]];
+		BamgVertex  *s1=t1->vertices[OppositeVertex[a1]];
+		BamgVertex  *s2=t2->vertices[OppositeVertex[a2]];
+
+		Icoor2 det1=t1->det , det2=t2->det ;
+		Icoor2 detT = det1+det2;
+		Icoor2 detA = Abs(det1) + Abs(det2);
+		Icoor2 detMin = Min(det1,det2);
+
+		int OnSwap = 0;       
+		// si 2 triangle infini (bord) => detT = -2;
+		if (sa == 0) {// les deux triangles sont frontieres
+			det2=bamg::det(s2->i,sb->i,s1->i);
+			OnSwap = det2 >0;}
+		else if (sb == 0) { // les deux triangles sont frontieres
+			det1=bamg::det(s1->i,sa->i,s2->i);
+			OnSwap = det1 >0;}
+		else if(( s1 != 0) && (s2 != 0) ) {
+			det1 = bamg::det(s1->i,sa->i,s2->i);
+			det2 = detT - det1;
+			OnSwap = (Abs(det1) + Abs(det2)) < detA;
+
+			Icoor2 detMinNew=Min(det1,det2);
+			//     if (detMin<0 && (Abs(det1) + Abs(det2) == detA)) OnSwap=BinaryRand();// just for test   
+			if (! OnSwap &&(detMinNew>0)) {
+				OnSwap = detMin ==0;
+				if (! OnSwap) {
+					int  kopt = koption;
+					while (1)
+					 if(kopt) {
+						 // critere de Delaunay pure isotrope
+						 Icoor2 xb1 = sb->i.x - s1->i.x,
+									 x21 = s2->i.x - s1->i.x,
+									 yb1 = sb->i.y - s1->i.y,
+									 y21 = s2->i.y - s1->i.y,
+									 xba = sb->i.x - sa->i.x, 
+									 x2a = s2->i.x - sa->i.x,
+									 yba = sb->i.y - sa->i.y,
+									 y2a = s2->i.y - sa->i.y;
+						 double
+							cosb12 =  double(xb1*x21 + yb1*y21),
+									 cosba2 =  double(xba*x2a + yba*y2a) ,
+									 sinb12 = double(det2),
+									 sinba2 = double(t2->det);
+
+						 // angle b12 > angle ba2 => cotg(angle b12) < cotg(angle ba2)
+						 OnSwap =  ((double) cosb12 * (double)  sinba2) <  ((double) cosba2 * (double) sinb12);
+						 break;
+					 }
+					 else {	
+						 // critere de Delaunay anisotrope 
+						 double som;
+						 I2 AB=(I2) *sb - (I2) *sa;
+						 I2 MAB2=((I2) *sb + (I2) *sa);
+						 R2 MAB(MAB2.x*0.5,MAB2.y*0.5);
+						 I2 A1=(I2) *s1 - (I2) *sa;
+						 I2 D = (I2) * s1 - (I2) * sb ;
+						 R2 S2(s2->i.x,s2->i.y);
+						 R2 S1(s1->i.x,s1->i.y);
+							{
+							 Metric M=s1->m;
+							 R2 ABo = M.Orthogonal(AB);
+							 R2 A1o = M.Orthogonal(A1);
+							 // (A+B)+ x ABo = (S1+B)/2+ y A1 
+							 // ABo x - A1o y =  (S1+B)/2-(A+B)/2 = (S1-B)/2 = D/2
+							 double dd = Abs(ABo.x*A1o.y)+Abs(ABo.y*A1o.x);
+							 double d = (ABo.x*A1o.y - ABo.y*A1o.x)*2; // because D/2
+							 if (Abs(d) > dd*1.e-3) {
+								 R2 C(MAB+ABo*((D.x*A1o.y - D.y*A1o.x)/d));
+								 som  = M(C - S2)/M(C - S1);
+							 } else 
+								{kopt=1;continue;}
+
+							}
+							{
+							 Metric M=s2->m;
+							 R2 ABo = M.Orthogonal(AB);
+							 R2 A1o = M.Orthogonal(A1);
+							 // (A+B)+ x ABo = (S1+B)/2+ y A1 
+							 // ABo x - A1o y =  (S1+B)/2-(A+B)/2 = (S1-B)/2 = D/2 
+							 double dd = Abs(ABo.x*A1o.y)+Abs(ABo.y*A1o.x);
+							 double d = (ABo.x*A1o.y - ABo.y*A1o.x)*2; // because D/2
+							 if(Abs(d) > dd*1.e-3) {
+								 R2 C(MAB+ABo*((D.x*A1o.y - D.y*A1o.x)/d));
+								 som  += M(C - S2)/M(C -  S1);
+							 } else 
+								{kopt=1;continue;}
+							}
+						 OnSwap = som < 2;
+						 break;
+					 }
+
+				} // OnSwap 
+			} // (! OnSwap &&(det1 > 0) && (det2 > 0) )
+		}
+		if( OnSwap ) 
+		 bamg::swap(t1,a1,t2,a2,s1,s2,det1,det2);
+		else {
+			t1->SetMarkUnSwap(a1);     
+		}
+		return OnSwap;
+	}
+	/*}}}*/
+	Triangle* Triangle::TriangleAdj(int i) const {/*{{{*/
+		return adj[i&3];
+	}/*}}}*/
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Triangle.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Triangle.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/Triangle.h	(revision 21239)
@@ -0,0 +1,72 @@
+#ifndef _TRIANGLE_H_
+#define _TRIANGLE_H_
+
+#include "./include.h"
+#include "AdjacentTriangle.h"
+
+namespace bamg {
+
+	class Mesh;
+	class BamgVertex;
+	class Triangle;
+
+	class Triangle {
+
+		friend class AdjacentTriangle;
+
+		private:
+			BamgVertex *vertices[3];        // 3 vertices if t is triangle, t[i] allowed by access function, (*t)[i] if pointer
+			Triangle   *adj[3];             // 3 pointers toward the adjacent triangles
+			short       AdjEdgeIndex[3];   // edge id in the adjacent triangles. The edge number 1 is the edge number AdjEdgeIndex[1] in the Adjacent triangle 1
+
+		public: 
+			Icoor2 det; //Integer determinant (twice its area)
+			union { 
+				Triangle *link;
+				long      color;
+			};
+
+			//Constructors/Destructors
+			Triangle();
+			Triangle(Mesh *Th,long i,long j,long k);
+			Triangle(BamgVertex *v0,BamgVertex *v1,BamgVertex *v2);
+
+			//Operators
+			const BamgVertex & operator[](int i) const {return *vertices[i];};
+			BamgVertex & operator[](int i)  {return *vertices[i];};
+			const BamgVertex * operator()(int i) const {return vertices[i];};
+			BamgVertex * & operator()(int i)  {return vertices[i];};
+
+			//Methods
+			void              Echo();
+			double            Length() const;
+			int               swap(short a1,int=0);
+			long              Optim(short a,int =0);
+			int               Locked(int a)const;
+			int               Hidden(int a)const;
+			int               GetAllflag(int a);
+			double            QualityQuad(int a,int option=1) const;
+			short             NuEdgeTriangleAdj(int i) const;
+			AdjacentTriangle  Adj(int i) const;
+			Triangle         *TriangleAdj(int i) const;
+			Triangle         *Quadrangle(BamgVertex  *& v0,BamgVertex *& v1,BamgVertex *& v2,BamgVertex *& v3) const;
+			void              Renumbering(Triangle   *tb,Triangle *te, long *renu);
+			void              Renumbering(BamgVertex *vb,BamgVertex *ve, long *renu);
+			void              SetAdjAdj(short a);
+			void              SetAdj2(short a,Triangle *t,short aat);
+			void              SetSingleVertexToTriangleConnectivity();
+			void              SetHidden(int a);
+			void              SetLocked(int a);
+			void              SetMarkUnSwap(int a);
+			void              SetUnMarkUnSwap(int a);
+
+			//Inline methods
+			double qualite() ;
+			void  Set(const Triangle &,const Mesh &,Mesh &);
+			int   In(BamgVertex *v) const { return vertices[0]==v || vertices[1]==v || vertices[2]==v ;}
+			BamgVertex* GetVertex(int i){return vertices[i];}; // FIXME: this is used to avoid BamgVertex * operator()
+
+	};
+
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/VertexOnEdge.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/VertexOnEdge.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/VertexOnEdge.cpp	(revision 21239)
@@ -0,0 +1,23 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "VertexOnEdge.h"
+#include "Mesh.h"
+
+namespace bamg {
+
+	/*Methods*/
+	void VertexOnEdge::Set(const Mesh & Th ,long i,Mesh & ThNew){/*{{{*/
+		*this = Th.VertexOnBThEdge[i];  
+		v = ThNew.vertices + Th.GetId(v);
+	}
+	/*}}}*/
+	void VertexOnEdge::SetOnBTh(){/*{{{*/
+		v->BackgroundEdgeHook=this;
+		v->IndexInTriangle=IsVertexOnEdge;  
+	}
+	/*}}}*/
+
+} 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/VertexOnEdge.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/VertexOnEdge.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/VertexOnEdge.h	(revision 21239)
@@ -0,0 +1,35 @@
+#ifndef _VERTEXONEDGE_H_
+#define _VERTEXONEDGE_H_
+
+#include "./include.h"
+#include "./Edge.h"
+
+namespace bamg {
+
+	class Mesh;
+	class BamgVertex;
+
+	class VertexOnEdge {
+
+		public:
+			BamgVertex* v;
+			Edge*   be;
+			double abcisse;
+
+			//Constructors
+			VertexOnEdge(BamgVertex * w, Edge *bw,double s) :v(w),be(bw),abcisse(s) {};
+			VertexOnEdge(){};
+
+			//Operators
+			operator double () const { return abcisse;}
+			operator BamgVertex* () const { return v;}  
+			operator Edge* () const { return be;}  
+			BamgVertex & operator[](int i) const { return (*be)[i];}
+
+			//Methods
+			void SetOnBTh();
+			void Set(const Mesh &,long,Mesh &);  
+	};
+
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/VertexOnGeom.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/VertexOnGeom.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/VertexOnGeom.cpp	(revision 21239)
@@ -0,0 +1,63 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "VertexOnGeom.h"
+#include "Mesh.h"
+#include "Geometry.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+	VertexOnGeom::VertexOnGeom(){/*{{{*/
+		meshvertex=NULL;
+		curvilincoord=0;
+		gv=0;
+	} 
+	/*}}}*/
+	VertexOnGeom::VertexOnGeom(BamgVertex & m,GeomVertex &g){/*{{{*/
+		meshvertex=&m;
+		curvilincoord=-1;
+		gv=&g;
+	}
+	/*}}}*/
+	VertexOnGeom::VertexOnGeom(BamgVertex & m,GeomEdge &g,double s){/*{{{*/
+		meshvertex=&m;
+		curvilincoord=s;
+		ge=&g;
+	}
+	/*}}}*/
+
+	/*Methods*/
+	void VertexOnGeom::Set(const VertexOnGeom & rec,const Mesh & Th ,Mesh & ThNew){/*{{{*/
+		*this = rec;  
+		meshvertex = ThNew.vertices + Th.GetId(meshvertex);
+		if(gv){
+		 if (curvilincoord < 0 )
+		  gv = ThNew.Gh.vertices + Th.Gh.GetId(gv);
+		 else
+		  ge = ThNew.Gh.edges + Th.Gh.GetId(ge);
+		}
+
+	}
+	/*}}}*/
+	int VertexOnGeom::OnGeomVertex()const{/*{{{*/
+		return curvilincoord<0;
+	}
+	/*}}}*/
+	int VertexOnGeom::OnGeomEdge() const{/*{{{*/
+		return curvilincoord>=0;
+	}
+	/*}}}*/
+	int VertexOnGeom::IsRequiredVertex() {/*{{{*/
+		return ((curvilincoord<0 ? (gv?gv->Required():0):0 ));
+	}
+	/*}}}*/
+	void VertexOnGeom::SetOn(){/*{{{*/
+		meshvertex->GeomEdgeHook=this;
+		meshvertex->IndexInTriangle=IsVertexOnGeom;
+	}
+	/*}}}*/
+
+} 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/VertexOnGeom.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/VertexOnGeom.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/VertexOnGeom.h	(revision 21239)
@@ -0,0 +1,45 @@
+#ifndef _VERTEXONGEOM_H_
+#define _VERTEXONGEOM_H_
+
+#include "./include.h"
+#include "./GeomVertex.h"
+
+namespace bamg {
+
+	class Mesh;
+	class BamgVertex;
+	class GeomEdge;
+
+	class VertexOnGeom{
+
+		public:
+
+			BamgVertex* meshvertex;
+			double curvilincoord;  
+			union{ 
+				GeomVertex* gv; // if curvilincoord <0; 
+				GeomEdge*   ge; // if curvilincoord in [0..1]
+			};
+
+			//Constructors/Destructors
+			VertexOnGeom();
+			VertexOnGeom(BamgVertex & m,GeomVertex &g);
+			VertexOnGeom(BamgVertex & m,GeomEdge &g,double s);
+
+			//Operators
+			operator BamgVertex*() const  {return meshvertex;}
+			operator GeomVertex * () const  {return gv;}
+			operator GeomEdge * () const  {return ge;}
+			operator const double & () const {return curvilincoord;}
+
+			//Methods
+			int  OnGeomVertex()const;
+			int  OnGeomEdge() const;
+			int  IsRequiredVertex();
+			void SetOn();
+
+			//Inline methods
+			void Set(const VertexOnGeom&,const Mesh &,Mesh &);  
+	};
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/VertexOnVertex.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/VertexOnVertex.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/VertexOnVertex.cpp	(revision 21239)
@@ -0,0 +1,30 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "VertexOnVertex.h"
+#include "Mesh.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+	VertexOnVertex::VertexOnVertex() {/*{{{*/
+		v=NULL;
+		bv=NULL;
+	};/*}}}*/
+	VertexOnVertex::VertexOnVertex(BamgVertex * w,BamgVertex *bw) :v(w),bv(bw){/*{{{*/
+
+	}/*}}}*/
+
+	/*Methods*/
+	void VertexOnVertex::Set(const Mesh &Th ,long i,Mesh &ThNew) { /*{{{*/
+		*this = Th.VertexOnBThVertex[i];  
+		v     = ThNew.vertices + Th.GetId(v);
+	}
+	/*}}}*/
+	void VertexOnVertex::SetOnBTh(){/*{{{*/
+		v->BackgroundVertexHook=bv;v->IndexInTriangle=IsVertexOnVertex;
+	}/*}}}*/
+
+} 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/VertexOnVertex.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/VertexOnVertex.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/VertexOnVertex.h	(revision 21239)
@@ -0,0 +1,27 @@
+#ifndef _VERTEXONVERTEX_H_
+#define _VERTEXONVERTEX_H_
+
+#include "./include.h"
+#include "./BamgVertex.h"
+
+namespace bamg {
+
+	class Mesh;
+
+	class VertexOnVertex {
+
+		public:
+			BamgVertex* v;
+			BamgVertex* bv;
+
+			//Constructors
+			VertexOnVertex();
+			VertexOnVertex(BamgVertex * w,BamgVertex *bw);
+
+			//Methods
+			void SetOnBTh();
+			void Set(const Mesh &,long,Mesh &);
+	};
+
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/bamgobjects.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/bamgobjects.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/bamgobjects.h	(revision 21239)
@@ -0,0 +1,34 @@
+/* \file bamgobjects.h
+ * \brief: prototype header for all bamg related objects.
+ */
+
+#ifndef BAMG_OBJECTS_H_
+#define BAMG_OBJECTS_H_
+
+/*Bamg: */
+#include "./BamgOpts.h"
+#include "./BamgGeom.h"
+#include "./BamgMesh.h"
+#include "./Metric.h"
+#include "./DoubleAndInt.h"
+#include "./Direction.h"
+#include "./BamgVertex.h"
+#include "./AdjacentTriangle.h"
+#include "./Edge.h"
+#include "./GeomVertex.h"
+#include "./GeomEdge.h"
+#include "./Curve.h"
+#include "./Triangle.h"
+#include "./ListofIntersectionTriangles.h"
+#include "./GeomSubDomain.h"
+#include "./SubDomain.h"
+#include "./VertexOnGeom.h"
+#include "./VertexOnVertex.h"
+#include "./VertexOnEdge.h"
+#include "./CrackedEdge.h"
+#include "./Mesh.h"
+#include "./Geometry.h"
+#include "./BamgQuadtree.h"
+#include "./SetOfE4.h"
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/det.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/det.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/det.h	(revision 21239)
@@ -0,0 +1,15 @@
+#ifndef _BAMGDET_H_
+#define _BAMGDET_H_
+
+#include "./include.h"
+
+namespace bamg {
+
+	Icoor2 inline det(const I2 &a,const I2 & b,const I2 &c){
+		Icoor2 bax = b.x - a.x ,bay = b.y - a.y; 
+		Icoor2 cax = c.x - a.x ,cay = c.y - a.y; 
+		return  bax*cay - bay*cax;
+	}
+
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/include.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/include.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/include.h	(revision 21239)
@@ -0,0 +1,11 @@
+/*!\file: include.h
+ * \brief prototypes for include.h
+ */ 
+
+#ifndef _INCLUDE2_H_
+#define  _INCLUDE2_H_
+
+#include "./macros.h"
+#include "./typedefs.h"
+
+#endif //ifndef _INCLUDE2_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/macros.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/macros.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/macros.h	(revision 21239)
@@ -0,0 +1,24 @@
+#ifndef _BAMGMACROS_H
+#define _BAMGMACROS_H
+
+#include "./typedefs.h"
+
+namespace bamg {
+
+	const double Pi =3.141592653589793238462643383279502884197169399375105820974944592308;
+	const float  fPi=3.141592653589793238462643383279502884197169399375105820974944592308;
+	const  int   IsVertexOnGeom = 8;
+	const  int   IsVertexOnVertex = 16;
+	const  int   IsVertexOnEdge = 32;
+	static const short VerticesOfTriangularEdge[3][2] = {{1,2},{2,0},{0,1}};
+	static const short EdgesVertexTriangle[3][2] = {{1,2},{2,0},{0,1}};
+	static const short OppositeVertex[3] = {0,1,2};
+	static const short OppositeEdge[3] =  {0,1,2};
+	static const short NextEdge[3] = {1,2,0};
+	static const short PreviousEdge[3] = {2,0,1};
+	static const short NextVertex[3] = {1,2,0};
+	static const short PreviousVertex[3] = {2,0,1};
+	const  Icoor1 MaxICoor   = 1073741823; // 2^30-1 =111...111 (29 times one)
+}
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/typedefs.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/typedefs.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/bamg/typedefs.h	(revision 21239)
@@ -0,0 +1,17 @@
+#ifndef _BAMGTYPEDEFS_H
+#define _BAMGTYPEDEFS_H
+
+#include "./R2.h"
+
+namespace bamg {
+
+	/*Integer coordinates types*/
+	typedef int  Icoor1; 
+	typedef long long Icoor2;
+
+	/*I2 and R2*/
+	typedef P2<Icoor1,Icoor2>  I2;
+	typedef P2<double,double>  R2;
+}
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/Constraint.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/Constraint.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/Constraint.h	(revision 21239)
@@ -0,0 +1,28 @@
+/*!\file:  Constraint.h
+ * \brief abstract class for Constraint object
+ * This class is a place holder for constraints
+ * It is derived from Object, so DataSets can contain them.
+ */ 
+
+#ifndef _CONSTRAINT_H_
+#define _CONSTRAINT_H_
+
+/*Headers:*/
+/*{{{*/
+class Nodes;
+#include "../../datastructures/datastructures.h"
+#include "../../toolkits/toolkits.h"
+/*}}}*/
+
+class Constraint: public Object{
+
+	public: 
+
+		virtual      ~Constraint(){};
+		virtual void ActivatePenaltyMethod(void)=0;
+		virtual void ConstrainNode(Nodes* nodes,Parameters* parameters)=0;
+		virtual bool InAnalysis(int analysis_type)=0;
+		virtual void PenaltyDofAndValue(int* dof,IssmDouble* value,Nodes* nodes,Parameters* parameters)=0;
+
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/Constraints.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/Constraints.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/Constraints.cpp	(revision 21239)
@@ -0,0 +1,47 @@
+/*
+ * \file Constraints.cpp
+ * \brief: Implementation of Constraints class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Constraints.h"
+#include "./Constraint.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+using namespace std;
+/*}}}*/
+
+/*Numerics: */
+void Constraints::ActivatePenaltyMethod(int in_analysis){/*{{{*/
+
+	for(int i=0;i<this->Size();i++){
+		Constraint* constraint=(Constraint*)this->GetObjectByOffset(i);
+		if(constraint->InAnalysis(in_analysis)){
+			constraint->ActivatePenaltyMethod();
+		}
+	}
+
+}
+/*}}}*/
+int  Constraints::NumberOfConstraints(void){/*{{{*/
+
+	int localconstraints;
+	int numberofconstraints;
+
+	/*Get number of local constraints*/
+	localconstraints=this->Size();
+
+	/*figure out total number of constraints combining all the cpus (no clones here)*/
+	ISSM_MPI_Reduce(&localconstraints,&numberofconstraints,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&numberofconstraints,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	return numberofconstraints;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/Constraints.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/Constraints.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/Constraints.h	(revision 21239)
@@ -0,0 +1,34 @@
+#ifndef _CONTAINER_CONSTRAINTS_H_
+#define  _CONTAINER_CONSTRAINTS_H_
+
+/*forward declarations */
+#include "../../datastructures/datastructures.h"
+#include "../../shared/shared.h"
+
+/*! \brief Declaration of Constraints class. 
+ *
+ * Declaration of Constraints class for handling Single Point Constraints (SPCs).
+ * Constraints are vector lists (Containers) of Constraint objects.
+ */ 
+class Constraints: public DataSet{
+
+	public:
+
+		/*Object constructors and destructor*/
+		Constraints(){/*{{{*/
+			enum_type=ConstraintsEnum;
+			return;
+		}
+		/*}}}*/
+		~Constraints(){/*{{{*/
+			return;
+		}
+		/*}}}*/
+
+		/*numerics*/
+		void ActivatePenaltyMethod(int in_analysis);
+		int  NumberOfConstraints(void);
+
+};
+
+#endif //ifndef _CONSTRAINTS_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/SpcDynamic.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/SpcDynamic.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/SpcDynamic.cpp	(revision 21239)
@@ -0,0 +1,146 @@
+/*!\file SpcDynamic.c
+ * \brief: implementation of the SpcDynamic object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "./Constraint.h"
+#include "../../shared/shared.h"
+
+/*SpcDynamic constructors and destructor*/
+SpcDynamic::SpcDynamic(){/*{{{*/
+	return;
+}
+/*}}}*/
+SpcDynamic::SpcDynamic(int spc_sid,int spc_nodeid, int spc_dof,int spc_analysis_type){/*{{{*/
+
+	sid           = spc_sid;
+	nodeid        = spc_nodeid;
+	dof           = spc_dof;
+	value         = 0;
+	analysis_type = spc_analysis_type;
+	isset         = false;
+	penalty       = false;
+
+	return;
+}
+/*}}}*/
+SpcDynamic::~SpcDynamic(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* SpcDynamic::copy() {/*{{{*/
+
+	SpcDynamic* spcdyn = new SpcDynamic(*this); 
+
+	spcdyn->sid=this->sid;
+	spcdyn->nodeid=this->nodeid;
+	spcdyn->dof=this->dof;
+	spcdyn->value=this->value;
+	spcdyn->analysis_type=this->analysis_type;
+	spcdyn->isset=this->isset;
+
+	return (Object*) spcdyn;
+}
+/*}}}*/
+void    SpcDynamic::DeepEcho(void){/*{{{*/
+
+	this->Echo();
+	return;
+}		
+/*}}}*/
+void    SpcDynamic::Echo(void){/*{{{*/
+
+	_printf_("SpcDynamic:\n");
+	_printf_("   sid: " << sid << "\n");
+	_printf_("   nodeid: " << nodeid << "\n");
+	_printf_("   dof: " << dof << "\n");
+	_printf_("   value: " << value << "\n");
+	_printf_("   isset: " <<(isset?"true":"false") << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	return;
+}
+/*}}}*/
+int     SpcDynamic::Id(void){ return sid; }/*{{{*/
+/*}}}*/
+void    SpcDynamic::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(SpcDynamicEnum);
+
+	MARSHALLING(sid);
+	MARSHALLING(nodeid);
+	MARSHALLING(dof);
+	MARSHALLING(value);
+	MARSHALLING(analysis_type);
+	MARSHALLING(isset);
+	MARSHALLING(penalty);
+
+}
+/*}}}*/
+int     SpcDynamic::ObjectEnum(void){/*{{{*/
+
+	return SpcDynamicEnum;
+
+}
+/*}}}*/
+
+/*Constraint virtual functions definitions: */
+void SpcDynamic::ActivatePenaltyMethod(void){/*{{{*/
+	this->penalty = true;
+}
+/*}}}*/
+void SpcDynamic::ConstrainNode(Nodes* nodes,Parameters* parameters){/*{{{*/
+
+	Node* node=NULL;
+
+	/*Chase through nodes and find the node to which this SpcDynamic applys: */
+	node=(Node*)nodes->GetObjectById(NULL,nodeid);
+
+	/*Apply constraint: */
+	if(node){ //in case the spc is dealing with a node on another cpu
+
+		/*We should first check that the value has been set... (test306)*/
+		node->ApplyConstraint(dof,value);
+	}
+}
+/*}}}*/
+bool SpcDynamic::InAnalysis(int in_analysis_type){/*{{{*/
+	if (in_analysis_type==this->analysis_type) return true;
+	else return false;
+}
+/*}}}*/
+
+/*SpcDynamic functions*/
+int        SpcDynamic::GetDof(){/*{{{*/
+	return dof;
+}
+/*}}}*/
+int        SpcDynamic::GetNodeId(){/*{{{*/
+
+	return nodeid;
+}
+/*}}}*/
+IssmDouble SpcDynamic::GetValue(){/*{{{*/
+	_assert_(this->isset);
+	_assert_(!xIsNan<IssmDouble>(value));
+	return value;
+}
+/*}}}*/
+void       SpcDynamic::SetDynamicConstraint(Nodes* nodes,IssmDouble* yg_serial){/*{{{*/
+
+	int pos;
+
+	Node* node=(Node*)nodes->GetObjectById(NULL,nodeid);
+	pos=node->GetDof(dof,GsetEnum);
+
+	this->value=yg_serial[pos];
+	this->isset=true;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/SpcDynamic.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/SpcDynamic.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/SpcDynamic.h	(revision 21239)
@@ -0,0 +1,53 @@
+/*!\file SpcDynamic.h
+ * \brief: header file for spc object
+ */
+
+#ifndef _SPCDynamic_H_
+#define _SPCDynamic_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../../datastructures/datastructures.h"
+/*}}}*/
+
+class SpcDynamic: public Constraint{
+
+	private: 
+		int        sid;             /*! id, to track it */
+		int        nodeid;          /*!node id          */
+		int        dof;             /*!component        */
+		IssmDouble value;           /*value             */
+		bool       isset;
+		int        analysis_type;
+		bool       penalty;         /*Is this a penalty constraint */
+
+	public:
+
+		/*SpcDynamic constructors, destructors*/
+		SpcDynamic();
+		SpcDynamic(int sid,int nodeid, int dof,int analysis_type);
+		~SpcDynamic();
+
+		/*Object virtual functions definitions*/
+		Object *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void    Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int     ObjectEnum();
+
+		/*Constraint virtual functions definitions*/
+		void ActivatePenaltyMethod(void);
+		void ConstrainNode(Nodes* nodes,Parameters* parameters);
+		bool InAnalysis(int analysis_type);
+		void PenaltyDofAndValue(int* dof,IssmDouble* value,Nodes* nodes,Parameters* parameters){_error_("not implemented yet");};
+
+		/*SpcDynamic management*/
+		int        GetDof();
+		int        GetNodeId();
+		IssmDouble GetValue();
+		void       SetDynamicConstraint(Nodes  *nodes,IssmDouble *yg_serial);
+
+};
+
+#endif  /* _SPCStatic_H_*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/SpcStatic.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/SpcStatic.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/SpcStatic.cpp	(revision 21239)
@@ -0,0 +1,133 @@
+/*!\file SpcStatic.c
+ * \brief: implementation of the SpcStatic object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "./Constraint.h"
+#include "../../shared/shared.h"
+
+/*SpcStatic constructors and destructor*/
+SpcStatic::SpcStatic(){/*{{{*/
+	return;
+}
+/*}}}*/
+SpcStatic::SpcStatic(int spc_sid,int spc_nodeid, int spc_dof,IssmDouble spc_value,int spc_analysis_type){/*{{{*/
+
+	sid           = spc_sid;
+	nodeid        = spc_nodeid;
+	dof           = spc_dof;
+	value         = spc_value;
+	analysis_type = spc_analysis_type;
+	penalty       = false;
+
+	return;
+}
+/*}}}*/
+SpcStatic::~SpcStatic(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* SpcStatic::copy() {/*{{{*/
+	
+	SpcStatic* spcstat = new SpcStatic(*this); 
+
+	spcstat->sid=this->sid;
+	spcstat->nodeid=this->nodeid;
+	spcstat->dof=this->dof;
+	spcstat->value=this->value;
+	spcstat->analysis_type=this->analysis_type;
+
+	return (Object*) spcstat;
+}
+/*}}}*/
+void    SpcStatic::DeepEcho(void){/*{{{*/
+
+	_printf_("SpcStatic:\n");
+	_printf_("   sid: " << sid << "\n");
+	_printf_("   nodeid: " << nodeid << "\n");
+	_printf_("   dof: " << dof << "\n");
+	_printf_("   value: " << value << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	return;
+}		
+/*}}}*/
+void    SpcStatic::Echo(void){/*{{{*/
+
+	_printf_("SpcStatic:\n");
+	_printf_("   sid: " << sid << "\n");
+	_printf_("   nodeid: " << nodeid << "\n");
+	_printf_("   dof: " << dof << "\n");
+	_printf_("   value: " << value << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	return;
+}
+/*}}}*/
+int     SpcStatic::Id(void){ return sid; }/*{{{*/
+/*}}}*/
+void    SpcStatic::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(SpcStaticEnum);
+
+	MARSHALLING(sid);
+	MARSHALLING(nodeid);
+	MARSHALLING(dof);
+	MARSHALLING(value);
+	MARSHALLING(analysis_type);
+	MARSHALLING(penalty);
+
+}
+/*}}}*/
+int     SpcStatic::ObjectEnum(void){/*{{{*/
+
+	return SpcStaticEnum;
+
+}
+/*}}}*/
+
+/*Constraint virtual functions definitions: */
+void SpcStatic::ActivatePenaltyMethod(void){/*{{{*/
+	   this->penalty = true;
+}
+/*}}}*/
+void SpcStatic::ConstrainNode(Nodes* nodes,Parameters* parameters){/*{{{*/
+
+	Node* node=NULL;
+
+	/*Chase through nodes and find the node to which this SpcStatic applys: */
+	node=(Node*)nodes->GetObjectById(NULL,nodeid);
+
+	/*Apply constraint: */
+	if(node){ //in case the spc is dealing with a node on another cpu
+		node->ApplyConstraint(dof,value);
+	}
+}
+/*}}}*/
+bool SpcStatic::InAnalysis(int in_analysis_type){/*{{{*/
+	if (in_analysis_type==this->analysis_type) return true;
+	else return false;
+}
+/*}}}*/
+
+/*SpcStatic functions*/
+int        SpcStatic::GetDof(){/*{{{*/
+	return dof;
+}
+/*}}}*/
+int        SpcStatic::GetNodeId(){/*{{{*/
+
+	return nodeid;
+}
+/*}}}*/
+IssmDouble SpcStatic::GetValue(){/*{{{*/
+	_assert_(!xIsNan<IssmDouble>(value));
+	return value;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/SpcStatic.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/SpcStatic.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/SpcStatic.h	(revision 21239)
@@ -0,0 +1,52 @@
+/*!\file SpcStatic.h
+ * \brief: header file for spc object
+ */
+
+#ifndef _SPCStatic_H_
+#define _SPCStatic_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../../datastructures/datastructures.h"
+/*}}}*/
+
+class SpcStatic: public Constraint{
+
+	private: 
+		int        sid;             /*! id, to track it */
+		int        nodeid;          /*!node id          */
+		int        dof;             /*!component        */
+		IssmDouble value;           /*value             */
+		int        analysis_type;
+		bool       penalty;         /*Is this a penalty constraint */
+
+	public:
+
+		/*SpcStatic constructors, destructors:{{{*/
+		SpcStatic();
+		SpcStatic(int sid,int nodeid, int dof,IssmDouble value,int analysis_type);
+		~SpcStatic();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Constraint virtual functions definitions: {{{*/
+		void ActivatePenaltyMethod(void);
+		void   ConstrainNode(Nodes* nodes,Parameters* parameters);
+		bool   InAnalysis(int analysis_type);
+		void   PenaltyDofAndValue(int* dof,IssmDouble* value,Nodes* nodes,Parameters* parameters){_error_("not implemented yet");};
+		/*}}}*/
+		/*SpcStatic management:{{{ */
+		int    GetDof();
+		int    GetNodeId();
+		IssmDouble GetValue();
+		/*}}}*/
+
+};
+
+#endif  /* _SPCStatic_H_*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/SpcTransient.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/SpcTransient.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/SpcTransient.cpp	(revision 21239)
@@ -0,0 +1,237 @@
+/*!\file SpcTransient.c
+ * \brief: implementation of the SpcTransient object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "./Constraint.h"
+#include "shared/shared.h"
+
+/*SpcTransient constructors and destructor*/
+SpcTransient::SpcTransient(){/*{{{*/
+	penalty       = false;
+	sid           = -1;
+	nodeid        = -1;
+	dof           = -1;
+	values        = NULL;
+	times         = NULL;
+	nsteps        = -1;
+	analysis_type = -1;
+	return;
+}
+/*}}}*/
+SpcTransient::SpcTransient(int spc_sid,int spc_nodeid, int spc_dof,int spc_nsteps, IssmDouble* spc_times, IssmDouble* spc_values,int spc_analysis_type){/*{{{*/
+
+	penalty = false;
+	sid     = spc_sid;
+	nodeid  = spc_nodeid;
+	dof     = spc_dof;
+	nsteps  = spc_nsteps;
+	if(spc_nsteps){
+		values = xNew<IssmDouble>(spc_nsteps);
+		times  = xNew<IssmDouble>(spc_nsteps);
+		xMemCpy<IssmDouble>(values,spc_values,nsteps);
+		xMemCpy<IssmDouble>(times,spc_times,nsteps);
+	}
+	analysis_type=spc_analysis_type;
+	return;
+}
+/*}}}*/
+SpcTransient::~SpcTransient(){/*{{{*/
+	xDelete<IssmDouble>(times);
+	xDelete<IssmDouble>(values);
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* SpcTransient::copy() {/*{{{*/
+	return new SpcTransient(sid,nodeid,dof,nsteps,times,values,analysis_type);
+}
+/*}}}*/
+void    SpcTransient::DeepEcho(void){/*{{{*/
+	this->Echo();
+}		
+/*}}}*/
+void    SpcTransient::Echo(void){/*{{{*/
+
+	int i;
+	_printf_("SpcTransient:\n");
+	_printf_("   sid: " << sid << "\n");
+	_printf_("   nodeid: " << nodeid << "\n");
+	_printf_("   dof: " << dof << "\n");
+	_printf_("   nsteps: " << nsteps << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	_printf_("   steps|times|values\n");
+	for(i=0;i<nsteps;i++){
+		_printf_(i << "-" << times[i] << ":" << values[i] << "\n");
+	}
+	return;
+}
+/*}}}*/
+int     SpcTransient::Id(void){/*{{{*/
+	return sid;
+}
+/*}}}*/
+void    SpcTransient::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(SpcTransientEnum);
+
+	MARSHALLING(sid);
+	MARSHALLING(nodeid);
+	MARSHALLING(dof);
+	MARSHALLING(analysis_type);
+	MARSHALLING(penalty);
+	MARSHALLING(nsteps);
+	if(nsteps){
+		MARSHALLING_DYNAMIC(values,IssmDouble,nsteps);
+		MARSHALLING_DYNAMIC(times,IssmDouble,nsteps);
+	}
+	else{
+		values=NULL;
+		times=NULL;
+	}
+
+}
+/*}}}*/
+int     SpcTransient::ObjectEnum(void){/*{{{*/
+
+	return SpcTransientEnum;
+
+}
+/*}}}*/
+
+/*Constraint virtual functions definitions:*/
+void SpcTransient::ActivatePenaltyMethod(void){/*{{{*/
+	   this->penalty = true;
+}
+/*}}}*/
+void SpcTransient::ConstrainNode(Nodes* nodes,Parameters* parameters){/*{{{*/
+
+	Node       *node  = NULL;
+	IssmDouble  time  = 0.;
+	int         i;
+	IssmDouble  alpha = -1.;
+	IssmDouble  value;
+	bool        found = false;
+
+	/*Chase through nodes and find the node to which this SpcTransient applys: */
+	node=(Node*)nodes->GetObjectById(NULL,nodeid);
+
+	if(!this->penalty && node){ //in case the spc is dealing with a node on another cpu
+
+		/*Retrieve time in parameters: */
+		parameters->FindParam(&time,TimeEnum);
+
+		/*Now, go fetch value for this time: */
+		if (time<=times[0]){
+			value=values[0];
+			found=true;
+		}
+		else if (time>=times[nsteps-1]){
+			value=values[nsteps-1];
+			found=true;
+		}
+		else{
+			for(i=0;i<nsteps-1;i++){
+				if (times[i]<=time && time<times[i+1]){
+					alpha=(time-times[i])/(times[i+1]-times[i]);
+					value=(1-alpha)*values[i]+alpha*values[i+1];
+					found=true;
+					break;
+				}
+			}
+		}
+
+		if(!found)_error_("could not find time segment for constraint");
+
+		/*Apply or relax constraint: */
+		if(xIsNan<IssmDouble>(value)){
+			node->RelaxConstraint(dof);
+		}
+		else node->ApplyConstraint(dof,value);
+	}
+}
+/*}}}*/
+bool SpcTransient::InAnalysis(int in_analysis_type){/*{{{*/
+
+	if (in_analysis_type==this->analysis_type) return true;
+	else return false;
+}
+/*}}}*/
+void SpcTransient::PenaltyDofAndValue(int* pdof,IssmDouble* pvalue,Nodes* nodes,Parameters* parameters){/*{{{*/
+
+	if(!this->penalty) _error_("cannot return dof and value for non penalty constraint");
+
+	Node       *node  = NULL;
+	IssmDouble  time  = 0.;
+	int         i,gdof;
+	IssmDouble  alpha = -1.;
+	IssmDouble  value;
+	bool        found = false;
+
+	/*Chase through nodes and find the node to which this SpcTransient applys: */
+	node=(Node*)nodes->GetObjectById(NULL,nodeid);
+
+	if(node){ //in case the spc is dealing with a node on another cpu
+
+		/*Retrieve time in parameters: */
+		parameters->FindParam(&time,TimeEnum);
+
+		/*Now, go fetch value for this time: */
+		if (time<=times[0]){
+			value=values[0];
+			found=true;
+		}
+		else if (time>=times[nsteps-1]){
+			value=values[nsteps-1];
+			found=true;
+		}
+		else{
+			for(i=0;i<nsteps-1;i++){
+				if (times[i]<=time && time<times[i+1]){
+					alpha=(time-times[i])/(times[i+1]-times[i]);
+					value=(1-alpha)*values[i]+alpha*values[i+1];
+					found=true;
+					break;
+				}
+			}
+		}
+		if(!found)_error_("could not find time segment for constraint");
+
+		/*Get gdof */
+		gdof = node->GetDof(dof,GsetEnum);
+		if(xIsNan<IssmDouble>(value)){
+			gdof = -1;
+		}
+	}
+	else{
+		value = NAN;
+		gdof = -1;
+	}
+
+	/*Assign output pointers*/
+	*pdof   = gdof;
+	*pvalue = value;
+}
+/*}}}*/
+
+/*SpcTransient functions*/
+int        SpcTransient::GetDof(){/*{{{*/
+	return dof;
+}
+/*}}}*/
+int        SpcTransient::GetNodeId(){/*{{{*/
+
+	return nodeid;
+}
+/*}}}*/
+IssmDouble SpcTransient::GetValue(){/*{{{*/
+	return values[0];
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/SpcTransient.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/SpcTransient.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Constraints/SpcTransient.h	(revision 21239)
@@ -0,0 +1,54 @@
+/*!\file SpcTransient.h
+ * \brief: header file for spc object
+ */
+
+#ifndef _SPCTRANSIENT_H_
+#define _SPCTRANSIENT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../../datastructures/datastructures.h"
+/*}}}*/
+
+class SpcTransient: public Constraint{
+
+	private: 
+		int         sid;             /* id, to track it             */
+		int         nodeid;          /*node id                      */
+		int         dof;             /*component                    */
+		IssmDouble *values;          /*different values in time     */
+		IssmDouble *times;           /*different time steps         */
+		int         nsteps;          /*number of time steps         */
+		int         analysis_type;
+		bool        penalty;         /*Is this a penalty constraint */
+
+	public:
+
+		/*SpcTransient constructors, destructors:{{{*/
+		SpcTransient();
+		SpcTransient(int sid,int nodeid, int dof,int nsteps, IssmDouble* times, IssmDouble* values,int analysis_type);
+		~SpcTransient();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object* copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id(); 
+		void    Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int     ObjectEnum();
+		/*}}}*/
+		/*Constraint virtual functions definitions: {{{*/
+		void   ActivatePenaltyMethod(void);
+		void   ConstrainNode(Nodes* nodes,Parameters* parameters);
+		bool   InAnalysis(int analysis_type);
+		void   PenaltyDofAndValue(int* dof,IssmDouble* value,Nodes* nodes,Parameters* parameters);
+		/*}}}*/
+		/*SpcTransient management:{{{ */
+		int        GetDof();
+		int        GetNodeId();
+		IssmDouble GetValue();
+		/*}}}*/
+
+};
+
+#endif  /* _SPCTRANSIENT_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Contour.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Contour.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Contour.h	(revision 21239)
@@ -0,0 +1,92 @@
+/*!\file Contour.h
+ * \brief: header file for Contour object
+ */
+
+#ifndef _CONTOUR_H_
+#define _CONTOUR_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "../datastructures/datastructures.h"
+/*}}}*/
+
+template <class doubletype>
+class Contour: public Object{
+
+	public: 
+
+		int         id;
+		int         nods;     //number of vertices in the contour
+		doubletype *x;
+		doubletype *y;
+		bool        closed;   //is this contour closed?
+
+		/*Contour constructors, destructors :*/
+		Contour(){/*{{{*/
+			this->id     = 0;
+			this->nods   = 0;
+			this->x      = NULL;
+			this->y      = NULL;
+			this->closed = false;
+		}
+		/*}}}*/
+		Contour(int pid,int pnods, doubletype* px, doubletype* py,bool pclosed){/*{{{*/
+
+			this->id     = pid;
+			this->nods   = pnods;
+			this->closed = pclosed;
+			if(nods){
+				this->x=xNew<doubletype>(nods);
+				xMemCpy<doubletype>(this->x,px,nods);
+				this->y=xNew<doubletype>(nods);
+				xMemCpy<doubletype>(this->y,py,nods);
+			}
+		}
+		/*}}}*/
+		~Contour(){/*{{{*/
+			xDelete<doubletype>(this->x);
+			xDelete<doubletype>(this->y);
+		}
+		/*}}}*/
+
+		/*Object virtual function resolutoin: */
+		Object* copy() {/*{{{*/
+
+			Contour* contour = new Contour(this->id,this->nods,this->x,this->y,this->closed);
+
+			return (Object*) contour;
+		}
+		/*}}}*/
+		void DeepEcho(void){/*{{{*/
+			this->Echo();
+		}
+		/*}}}*/
+		void Echo(void){/*{{{*/
+			_printf_(" Contour: " << id << "\n");
+			_printf_("    nods: " << nods << "\n");
+			_printf_("  closed: " << (closed?"true":"false") << "\n");
+			if(nods){
+				_printf_("   x , y:\n");
+				for(int i=0;i<nods;i++){
+					_printf_(i << ": " << x[i] << " | " << y[i] << "\n");
+				}
+			}
+		}
+		/*}}}*/
+		int Id(void){/*{{{*/
+			return id;
+		}
+		/*}}}*/
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
+		int ObjectEnum(void){/*{{{*/
+			return ContourEnum;
+		}
+		/*}}}*/
+
+};
+
+#endif  /* _CONTOUR_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Contours.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Contours.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Contours.cpp	(revision 21239)
@@ -0,0 +1,64 @@
+/*
+ * \file Contours.cpp
+ * \brief: Implementation of Contours class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Contours.h"
+#include "../shared/shared.h"
+#include "./Contour.h"
+
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+Contours::Contours(){/*{{{*/
+	enum_type=ContoursEnum;
+	return;
+}
+/*}}}*/
+Contours::~Contours(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Numerics: */
+int ExpWrite(Contours* contours,char* domainname){/*{{{*/
+
+	/*I/O: */
+	FILE* fid=NULL;
+	Contour<double>* contour = NULL;
+
+	/*open domain outline file for writing: */
+	if((fid=fopen(domainname,"w"))==NULL) _error_("could not open domain file " << domainname); 
+
+	for(int counter=0;counter<contours->Size();counter++){
+		contour=(Contour<double>*)contours->GetObjectByOffset(counter);
+
+		/*Write header: */
+		fprintf(fid,"## Name:%s\n",domainname);
+		fprintf(fid,"## Icon:0\n");
+		fprintf(fid,"# Points Count	Value\n");
+		fprintf(fid,"%u %s\n",contour->nods  ,"1.");
+		fprintf(fid,"# X pos	Y pos\n");
+
+		/*Write vertices: */
+		for(int i=0;i<contour->nods;i++){
+			fprintf(fid,"%lf\t%lf\n",contour->x[i],contour->y[i]);
+		}
+
+		/*Write blank line: */
+		if(counter<contours->Size()-1) fprintf(fid,"\n");
+	}
+
+	/*close Exp file: */
+	fclose(fid);
+
+	return 1;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Contours.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Contours.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Contours.h	(revision 21239)
@@ -0,0 +1,49 @@
+/*!\brief Declaration of Contours class.
+ */ 
+
+#ifndef _CONTAINER_CONTOURS_H_
+#define  _CONTAINER_CONTOURS_H_
+
+#include "../datastructures/datastructures.h"
+#include "./Contour.h"
+
+class Contours: public DataSet{
+
+	public:
+
+		/*constructors, destructors*/
+		Contours();
+		~Contours();
+};
+
+/*Methods that relate to datasets: */
+int ExpWrite(Contours* contours,char* domainname);
+template <class doubletype> Contours* ExpRead(char* domainname){ /*{{{*/
+
+	/*intermediary: */
+	int                  nprof;
+	int                 *profnvertices = NULL;
+	doubletype         **pprofx        = NULL;
+	doubletype         **pprofy        = NULL;
+
+	/*output: */
+	Contours *domain = NULL;
+
+	/*If domainname is an empty string, return empty dataset*/
+	if (strcmp(domainname,"")==0){
+		nprof=0;
+	}
+	else{
+		ExpRead(&nprof,&profnvertices,&pprofx, &pprofy, NULL,domainname);
+	}
+
+	/*now create dataset of contours: */
+	domain=new Contours();
+
+	for(int i=0;i<nprof;i++){
+		domain->AddObject(new Contour<doubletype>(i,profnvertices[i],pprofx[i],pprofy[i],1));
+	}
+	return domain;
+} /*}}}*/
+
+#endif //ifndef _CONTOURS_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Dakota/IssmDirectApplicInterface.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Dakota/IssmDirectApplicInterface.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Dakota/IssmDirectApplicInterface.h	(revision 21239)
@@ -0,0 +1,140 @@
+/*!\file:  IssmDirectApplicInterface.* This code is only valid for Dakota versions lower than 5!
+ *
+ * \brief: derived DirectApplicInterface class declaration and implementation, taylored to the ISSM cores. 
+ * This class is registered into the interface database of Dakota, and is used to directly call ISSM cores 
+ * from Dakota. 
+ *
+ * This routine helps running ISSM and Dakota in library mode, for Dakota versions that are <=5, and which 
+ * do not really support parallelism. In library mode, Dakota does not 
+ * run as an execuatble. Its capabilities are linked into the ISSM software, and ISSM calls dakota routines 
+ * directly from the dakota library. dakota_core.cpp is the code that is in charge of calling those routines. 
+ *
+ * Prior to versions 6 and more, Dakota had its own way of running in parallel (for embarassingly parallel jobs). 
+ * We do not want that, as ISSM knows exactly how to run "really parallel" jobs that use all CPUS. To bypass Dakota's parallelism, 
+ * we overloaded the constructor for the parallel library (see the Dakota patch in the externalpackages/dakota
+ * directory). This overloaded constructor fires up Dakota serially on CPU 0 only! We take care of broadcasting 
+ * to the other CPUS, hence ISSM is running in parallel, and Dakota serially on CPU0. 
+ *
+ * Now, how does CPU 0 drive all other CPUS to carry out sensitivity analysese? By synchronizing its call to 
+ * our ISSM cores (stressbalance_core, thermal_core, transient_core, etc ...) on CPU 0 with all other CPUS. 
+ * This explains the structure of dakota_core.cpp, where cpu 0 runs Dakota, the Dakota pluggin fires up DakotaSpawnCore.cpp, 
+ * while the other CPUS are waiting for a broadcast from CPU0, once they get it, they also fire up 
+ * DakotaSpawnCore. In the end, DakotaSpawnCore is fired up on all CPUS, with CPU0 having Dakota inputs, that it will 
+ * broacast to other CPUS. 
+ *
+ * Now, how does dakota call the DakotaSpawnCore routine? The DakotaSpawnCore is embedded into the IssmDirectApplicInterface object 
+ * which is derived from the Direct Interface Dakota objct. This is the only way to run Dakota in library 
+ * mode (see their developper guide for more info). Dakota registers the IssmDirectApplicInterface object into its own 
+ * database, and calls on the embedded DakotaSpawnCore from CPU0. 
+ *
+ */ 
+
+/*Issm Configuration: {{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif 
+/*}}}*/
+
+#if !defined(_WRAPPERS_) && defined(_HAVE_DAKOTA_) && (_DAKOTA_MAJOR_ <= 5) //this only works for Dakota <=5, which had no effective parallel capabilities yet.
+
+/*Dakota include files:{{{*/
+#if (_DAKOTA_MAJOR_ < 5 || (_DAKOTA_MAJOR_ == 5 && _DAKOTA_MINOR_ < 3))
+#include <DirectApplicInterface.H>
+#include <DakotaResponse.H>
+#include <ParamResponsePair.H>
+#include <system_defs.h>
+#include <ProblemDescDB.H>
+#include <ParallelLibrary.H>
+#else
+#include <DirectApplicInterface.hpp>
+#include <DakotaResponse.hpp>
+#include <ParamResponsePair.hpp>
+#include <ProblemDescDB.hpp>
+#include <ParallelLibrary.hpp>
+#endif
+/*}}}*/
+
+int  DakotaSpawnCore(double* d_responses, int d_numresponses, double* d_variables, char** d_variables_descriptors,int d_numvariables, void* void_femmodel,int counter);
+
+/*IssmDirectApplicInterface class */
+namespace SIM {
+	class IssmDirectApplicInterface: public Dakota::DirectApplicInterface{
+		public:
+			/*these fields are used by core solutions: */
+			void *femmodel;
+			int   counter;
+			/*Constructors/Destructors*/
+			IssmDirectApplicInterface(const Dakota::ProblemDescDB& problem_db,void* in_femmodel):Dakota::DirectApplicInterface(problem_db){/*{{{*/
+				femmodel = in_femmodel;
+				counter  = 0;
+			}/*}}}*/
+			~IssmDirectApplicInterface(){/*{{{*/
+				/* Virtual destructor handles referenceCount at Interface level. */ 
+			}/*}}}*/
+		protected:
+			/*execute the input filter portion of a direct evaluation invocation*/
+			//int derived_map_if(const Dakota::String& if_name);
+			/*execute an analysis code portion of a direct evaluation invocation*/
+			int derived_map_ac(const Dakota::String& driver){/*{{{*/
+
+				int i;
+				IssmDouble* variables=NULL;
+				char** variable_descriptors=NULL;
+				char*  variable_descriptor=NULL;
+				IssmDouble* responses=NULL;
+
+				/*increae counter: */
+				counter++;
+
+				/*Before launching analysis, we need to transfer the dakota inputs into Issm 
+				 *readable variables: */
+
+				/*First, the variables: */
+				variables=xNew<IssmDouble>(numACV);
+				for(i=0;i<numACV;i++){
+					variables[i]=xC[i];
+				}
+				/*The descriptors: */
+				variable_descriptors=xNew<char*>(numACV);
+				for(i=0;i<numACV;i++){
+					std::string label=xCLabels[i];
+					variable_descriptor=xNew<char>(strlen(label.c_str())+1);
+					memcpy(variable_descriptor,label.c_str(),(strlen(label.c_str())+1)*sizeof(char));
+
+					variable_descriptors[i]=variable_descriptor;
+				}
+
+				/*Initialize responses: */
+				responses=xNewZeroInit<IssmDouble>(numFns);
+
+				/*run core solution: */
+				DakotaSpawnCore(responses,numFns, variables,variable_descriptors,numACV,femmodel,counter);
+
+				/*populate responses: */
+				for(i=0;i<numFns;i++){
+					fnVals[i]=responses[i];
+				}
+
+				/*Free ressources:*/
+				xDelete<IssmDouble>(variables);
+				for(i=0;i<numACV;i++){
+					variable_descriptor=variable_descriptors[i];
+					xDelete<char>(variable_descriptor);
+				}
+				xDelete<char*>(variable_descriptors);
+				xDelete<IssmDouble>(responses);
+
+				return 0;
+			}/*}}}*/
+			/*execute the output filter portion of a direct evaluation invocation*/
+			//int derived_map_of(const Dakota::String& of_name);
+			/*add for issm: */
+			int GetCounter(){/*{{{*/
+				return counter;
+			}/*}}}*/
+		private:
+	};
+} 
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Dakota/IssmParallelDirectApplicInterface.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Dakota/IssmParallelDirectApplicInterface.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Dakota/IssmParallelDirectApplicInterface.cpp	(revision 21239)
@@ -0,0 +1,136 @@
+/*!\file:  see IssmParallelDirectApplicInterface.h for documentation.  */ 
+
+/*Issm Configuration: {{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+/*}}}*/
+
+#if !defined(_WRAPPERS_) && defined(_HAVE_DAKOTA_) && _DAKOTA_MAJOR_ >= 6
+
+#include "../classes.h"
+#include "../../cores/cores.h"
+#include "../../modules/modules.h"
+
+namespace SIM {
+	IssmParallelDirectApplicInterface::IssmParallelDirectApplicInterface(const Dakota::ProblemDescDB& problem_db, const MPI_Comm& evaluation_comm, int argc, char** argv) :Dakota::DirectApplicInterface(problem_db){ /*{{{*/
+
+		int world_rank;
+		ISSM_MPI_Comm_rank(ISSM_MPI_COMM_WORLD,&world_rank);
+		
+		/*Build an femmodel if you are a slave, using the corresponding communicator:*/
+		if(world_rank!=0){
+			femmodel_init= new FemModel(argc,argv,evaluation_comm);
+			femmodel_init->profiler->Tag(STARTCORE);
+		}
+
+	}
+	/*}}}*/
+	IssmParallelDirectApplicInterface::~IssmParallelDirectApplicInterface(){ /*{{{*/
+
+		int world_rank;
+		ISSM_MPI_Comm_rank(ISSM_MPI_COMM_WORLD,&world_rank);
+		
+		if(world_rank!=0){
+
+			/*Wrap up: */
+			femmodel_init->profiler->Tag(FINISHCORE);
+			femmodel_init->CleanUp(); //only close file pointers on rank 0 of slave 1!
+
+			/*Delete Model: */
+			delete femmodel_init;
+		}
+	}
+	/*}}}*/
+			int IssmParallelDirectApplicInterface::derived_map_ac(const Dakota::String& ac_name){/*{{{*/
+
+				FemModel* femmodel;
+				
+				char     **responses_descriptors    = NULL;      //these are our! there are only numresponsedescriptors of them, not d_numresponses!!!
+				int        numresponsedescriptors;
+				int        solution_type;
+				bool       control_analysis         = false;
+				void     (*solutioncore)(FemModel*) = NULL;
+				bool       nodakotacore             = true;
+
+				int world_rank;
+				ISSM_MPI_Comm_rank(ISSM_MPI_COMM_WORLD,&world_rank);
+
+				/*Only have slaves work!:*/
+				if(world_rank==0)return 0;
+
+				#ifdef MPI_DEBUG
+				Cout << "eval server id" << evalServerId << " invoking " << ac_name << " within SIM::IssmParallelDirectApplicInterface." << std::endl;
+				#endif // MPI_DEBUG
+
+				int i;
+				IssmDouble* variables=NULL;
+				char** variable_descriptors=NULL;
+				char*  variable_descriptor=NULL;
+				IssmDouble* responses=NULL;
+
+				/*Before launching evaluation, we need to transfer the dakota inputs into Issm readable variables: */
+
+				/*First, the variables: */
+				variables=xNew<IssmDouble>(numACV);
+				for(i=0;i<numACV;i++){
+					variables[i]=xC[i];
+				}
+				/*The descriptors: */
+				variable_descriptors=xNew<char*>(numACV);
+				for(i=0;i<numACV;i++){
+					std::string label=xCLabels[i];
+					variable_descriptor=xNew<char>(strlen(label.c_str())+1);
+					memcpy(variable_descriptor,label.c_str(),(strlen(label.c_str())+1)*sizeof(char));
+
+					variable_descriptors[i]=variable_descriptor;
+				}
+
+				/*Initialize responses: */
+				responses=xNewZeroInit<IssmDouble>(numFns);
+
+				/*Make a copy of femmodel, so we start this new evaluation run for this specific sample with a brand 
+				 * new copy of the model, which has not been tempered with by previous evaluation runs: */
+
+				femmodel=femmodel_init->copy();
+
+				/*retrieve parameters: */
+				femmodel->parameters->FindParam(&responses_descriptors,&numresponsedescriptors,QmuResponsedescriptorsEnum);
+				femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+				femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+
+				/*Modify core inputs in objects contained in femmodel, to reflect the dakota variables inputs: */
+				InputUpdateFromDakotax(femmodel,variables,variable_descriptors,numACV);
+
+				/*Determine solution sequence: */
+				if(VerboseQmu()) _printf0_("Starting " << EnumToStringx(solution_type) << " core:\n");
+				WrapperCorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type,nodakotacore);
+
+				/*Run the core solution sequence: */
+				solutioncore(femmodel);
+
+				/*compute responses: */
+				if(VerboseQmu()) _printf0_("compute dakota responses:\n");
+				femmodel->DakotaResponsesx(responses,responses_descriptors,numresponsedescriptors,numFns);
+
+				/*populate responses: */
+				for(i=0;i<numFns;i++){
+					fnVals[i]=responses[i];
+				}
+
+				/*Free ressources:*/
+				xDelete<IssmDouble>(variables);
+				for(i=0;i<numACV;i++){
+					variable_descriptor=variable_descriptors[i];
+					xDelete<char>(variable_descriptor);
+				}
+				xDelete<char*>(variable_descriptors);
+				xDelete<IssmDouble>(responses);
+				delete femmodel;
+
+				return 0;
+			}/*}}}*/
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Dakota/IssmParallelDirectApplicInterface.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Dakota/IssmParallelDirectApplicInterface.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Dakota/IssmParallelDirectApplicInterface.h	(revision 21239)
@@ -0,0 +1,52 @@
+/*!\file:  IssmParallelDirectApplicInterface.h. This code is only valid for Dakota versions higher than 6!
+ *
+ * \brief: derived ParallelDirectApplicInterface class declaration and implementation, taylored to ISSM.
+ * This class is registered into the interface database of Dakota, and is used to directly call ISSM cores 
+ * from Dakota. 
+ *
+ * This routine helps running ISSM and Dakota in library mode, for Dakota versions that are >=6, and that fully 
+ * support parallelism.  The setup is radically different than from version <6! Now, dakota runs the show more. 
+ * The reason is that dakota now controls the parallelism in a master/slave setup, and hands over to ISSM a  bunch 
+ * of slave communicators, which are then used to run our simulations. Because ISSM is now ESMF compliant, we can 
+ * use these communicators to create separate identical FemModel instances on each slave communicator! This allows 
+ * us to scale to large jobs (think 1000's of cpus), which we split into multiple sub-slave communicators, which 
+ * run the sampling (or forward different, local reliability, optimization you name it) simulations on each slave. 
+ * 
+ * This is all bootstraped from the main issm_dakota main, (see c/main directory), which is heavily inspired on the
+ * main found in the dakota/src/library_mode.cpp code. We also have to create an ISSM code that registers into the 
+ * dakota database, which is capable of running ISSM. This is derived from the Dakota class called 
+ * ParallelDirectApplicInterface. 
+ */ 
+#ifndef _ISSMPARALLELDIRECTAPPLICINTERFACE_
+#define _ISSMPARALLELDIRECTAPPLICINTERFACE_
+
+/*Issm Configuration: {{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+/*}}}*/
+
+
+#if !defined(_WRAPPERS_) && defined(_HAVE_DAKOTA_) && _DAKOTA_MAJOR_ >= 6
+
+#include <DirectApplicInterface.hpp>
+class FemModel;
+
+namespace SIM {
+	class IssmParallelDirectApplicInterface: public Dakota::DirectApplicInterface{
+      
+		private: 
+			FemModel* femmodel_init;
+		public:
+			IssmParallelDirectApplicInterface(const Dakota::ProblemDescDB& problem_db, const MPI_Comm& evaluation_comm, int argc, char** argv);
+			~IssmParallelDirectApplicInterface();
+		protected:
+			/// execute an analysis code portion of a direct evaluation invocation
+			int derived_map_ac(const Dakota::String& ac_name);
+	};
+}
+/*}}}*/
+#endif
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Definition.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Definition.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Definition.h	(revision 21239)
@@ -0,0 +1,20 @@
+/*!\file: Definition.h: abstract class used by some objects to behave like response objects 
+ * that can be called according to a string (the output definition)
+ */ 
+
+#ifndef _DEFINITION_H_
+#define  _DEFINITION_H_
+
+/*Headers:*/
+class FemModel;
+class Definition {
+
+	public:
+		virtual       ~Definition(){};
+		virtual char*  Name()=0;
+		virtual int    DefinitionEnum()=0;
+		virtual IssmDouble  Response(FemModel*)=0;
+
+};
+
+#endif //ifndef _DEFINITION_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/DependentObject.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/DependentObject.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/DependentObject.cpp	(revision 21239)
@@ -0,0 +1,89 @@
+/*!\file DependentObject.c
+ * \brief: implementation of the DependentObject object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./classes.h"
+#include "shared/shared.h"
+#include "../modules/modules.h"
+
+/*DependentObject constructors and destructor*/
+DependentObject::DependentObject(){/*{{{*/
+	this->name=NULL;
+	this->type=0;
+	this->index=-1;
+}
+/*}}}*/
+DependentObject::DependentObject(char* in_name, int in_type,int in_index){/*{{{*/
+
+	this->name=xNew<char>(strlen(in_name)+1); xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+	this->type=in_type;
+	this->index=in_index;
+	if(in_type!=0 && in_type!=1)_error_("cannot create an DependentObject of type " << in_type);
+	if(in_type==1)_error_("not implemented yet!");
+
+}
+/*}}}*/
+DependentObject::~DependentObject(){ //destructor/*{{{*/
+	xDelete<char>(this->name);
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* DependentObject::copy(void) { /*{{{*/
+	return new DependentObject(name,type,index);
+} /*}}}*/
+void DependentObject::DeepEcho(void){/*{{{*/
+	this->Echo();
+}
+/*}}}*/
+void DependentObject::Echo(void){/*{{{*/
+
+	_printf_("DependentObject:\n");
+	_printf_("   name: " << this->name << "\n");
+	if(this->type==0)
+		_printf_("   type: scalar\n");
+	else if(this->type==1)
+		_printf_("   type: vertex\n");
+	else
+		_error_(" unknown type: " << this->type);
+	if(this->index>=0) _printf_("   index: " << this->index << "\n");
+}
+/*}}}*/
+int    DependentObject::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+int DependentObject::ObjectEnum(void){/*{{{*/
+
+	return DependentObjectEnum;
+
+}
+/*}}}*/
+
+/*DependentObject methods: */
+int  DependentObject::NumDependents(void){/*{{{*/
+
+	/*Branch according to the type of variable: */
+	if(type==0){ /*scalar:*/
+		return 1;
+	}
+	else if(type==1){ /* vector:*/
+		_error_("not implemented yet!");
+	}
+	else _error_("should not have a type of " << type);
+}
+/*}}}*/
+void  DependentObject::Responsex(IssmDouble* poutput_value,FemModel* femmodel){/*{{{*/
+
+	/*Is this some special type of response for which we need to go in the output definitions? :*/
+	if (StringToEnumx(this->name,false)==-1){
+		*poutput_value=OutputDefinitionsResponsex(femmodel,this->name);
+	}
+	else femmodel->Responsex(poutput_value,this->name);
+
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/DependentObject.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/DependentObject.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/DependentObject.h	(revision 21239)
@@ -0,0 +1,45 @@
+/*!\file: DependentObject.h
+ * \brief prototype for DependentObject.h
+ */ 
+
+#ifndef _DEPENDENTOBJECT_H_
+#define  _DEPENDENTOBJECT_H_
+
+/*{{{*/
+#include "../datastructures/datastructures.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+class FemModel;
+
+class DependentObject: public Object{
+
+	public:
+
+		char* name;
+		int type;  /*0: scalar, 1: vertex*/
+		int index;  /*0: scalar, 1: vertex*/
+
+		/*DependentObject constructors, destructors {{{*/
+		DependentObject();
+		DependentObject(char* name, int type,int index);
+		~DependentObject();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object* copy(void);
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		int   ObjectEnum();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
+		/*}}}*/
+
+		/*DependentObject methods: */
+		int  NumDependents(void);
+		void Responsex(IssmDouble* poutput_value,FemModel* femmodel);
+
+};
+#endif //ifndef _DEPENDENTOBJECT_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/DofIndexing.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/DofIndexing.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/DofIndexing.cpp	(revision 21239)
@@ -0,0 +1,320 @@
+/*!\file DofIndexing.c
+ * \brief: implementation of the DofIndexing object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <string.h>
+
+#include "./DofIndexing.h"
+#include "../shared/Numerics/types.h"
+#include "../shared/Numerics/constants.h"
+#include "../shared/io/Print/Print.h"
+#include "../shared/io/Marshalling/Marshalling.h"
+#include "../shared/Exceptions/exceptions.h"
+#include "../shared/MemOps/MemOps.h"
+#include "../shared/Enum/Enum.h"
+
+/*DofIndexing constructors and destructor*/
+DofIndexing::DofIndexing(){/*{{{*/
+
+	this->gsize    = UNDEF;
+	this->fsize    = UNDEF;
+	this->ssize    = UNDEF;
+	this->clone    = false;
+	this->active   = true;
+	this->freeze   = false;
+	this->f_set    = NULL;
+	this->s_set    = NULL;
+	this->svalues  = NULL;
+	this->doftype  = NULL;
+	this->gdoflist = NULL;
+	this->fdoflist = NULL;
+	this->sdoflist = NULL;
+
+}
+/*}}}*/
+DofIndexing::DofIndexing(int in_gsize){/*{{{*/
+
+	this->Init(in_gsize,NULL);
+
+}
+/*}}}*/
+DofIndexing::DofIndexing(DofIndexing* in){ //copy constructor/*{{{*/
+
+	this->gsize  = in->gsize;
+	this->fsize  = in->fsize;
+	this->ssize  = in->ssize;
+	this->clone  = in->clone;
+	this->active = in->active;
+	this->freeze = in->freeze;
+
+	if(this->gsize>0){
+		this->f_set=xNew<bool>(this->gsize);
+		this->s_set=xNew<bool>(this->gsize);
+		this->svalues=xNew<IssmDouble>(this->gsize);
+		if(in->doftype){
+			this->doftype=xNew<int>(this->gsize); 
+		}
+		else{
+			this->doftype=NULL;
+		}
+		this->gdoflist=xNew<int>(this->gsize); 
+	}
+	else{
+		this->f_set    = NULL;
+		this->s_set    = NULL;
+		this->svalues  = NULL;
+		this->doftype  = NULL;
+		this->gdoflist = NULL;
+	}
+	if(this->fsize>0)this->fdoflist=xNew<int>(this->fsize); else this->fdoflist=NULL;
+	if(this->ssize>0)this->sdoflist=xNew<int>(this->ssize); else this->sdoflist=NULL;
+
+	if(this->gsize>0){
+		memcpy(this->f_set,in->f_set,this->gsize*sizeof(bool));
+		memcpy(this->s_set,in->s_set,this->gsize*sizeof(bool));
+		xMemCpy<IssmDouble>(this->svalues,in->svalues,this->gsize);
+		if(this->doftype)memcpy(this->doftype,in->doftype,this->gsize*sizeof(int));
+		memcpy(this->gdoflist,in->gdoflist,this->gsize*sizeof(int));
+	}
+	if(this->fsize>0)memcpy(this->fdoflist,in->fdoflist,this->fsize*sizeof(int));
+	if(this->ssize>0)memcpy(this->sdoflist,in->sdoflist,this->ssize*sizeof(int));
+
+}
+/*}}}*/
+DofIndexing::~DofIndexing(){ //destructor/*{{{*/
+
+	if(this->f_set) xDelete<bool>(f_set); 
+	if(this->s_set) xDelete<bool>(s_set); 
+	if(this->svalues) xDelete<IssmDouble>(svalues);
+	if(this->doftype) xDelete<int>(doftype); 
+	if(this->gdoflist) xDelete<int>(gdoflist);
+	if(this->fdoflist) xDelete<int>(fdoflist);
+	if(this->sdoflist) xDelete<int>(sdoflist);
+
+}
+/*}}}*/
+DofIndexing DofIndexing::operator=( const DofIndexing& in ){/*{{{*/
+
+	this->copy(in);
+
+	return this;
+}
+/*}}}*/
+void DofIndexing::copy(const DofIndexing& in ){/*{{{*/
+
+	this->gsize  = in.gsize;
+	this->fsize  = in.fsize;
+	this->ssize  = in.ssize;
+	this->clone  = in.clone;
+	this->active = in.active;
+	this->freeze = in.freeze;
+
+	if(this->gsize>0){
+		this->f_set=xNew<bool>(this->gsize);
+		this->s_set=xNew<bool>(this->gsize);
+		this->svalues=xNew<IssmDouble>(this->gsize);
+		if(in.doftype){
+			this->doftype=xNew<int>(this->gsize);
+		}
+		else{
+			this->doftype=NULL;
+		}
+		this->gdoflist=xNew<int>(this->gsize);
+	}
+	else{
+		this->f_set    = NULL;
+		this->s_set    = NULL;
+		this->svalues  = NULL;
+		this->doftype  = NULL;
+		this->gdoflist = NULL;
+	}
+	if(this->fsize>0)this->fdoflist=xNew<int>(this->fsize); else this->fdoflist=NULL;
+	if(this->ssize>0)this->sdoflist=xNew<int>(this->ssize); else this->sdoflist=NULL;
+
+	if(this->gsize>0){
+		memcpy(this->f_set,in.f_set,this->gsize*sizeof(bool));
+		memcpy(this->s_set,in.s_set,this->gsize*sizeof(bool));
+		xMemCpy<IssmDouble>(this->svalues,in.svalues,this->gsize);
+		if(this->doftype)memcpy(this->doftype,in.doftype,this->gsize*sizeof(int));
+		memcpy(this->gdoflist,in.gdoflist,this->gsize*sizeof(int));
+	}
+	if(this->fsize>0)memcpy(this->fdoflist,in.fdoflist,this->fsize*sizeof(int));
+	if(this->ssize>0)memcpy(this->sdoflist,in.sdoflist,this->ssize*sizeof(int));
+
+	return;
+}
+/*}}}*/
+void DofIndexing::Init(int in_gsize,int* in_doftype){/*{{{*/
+
+	this->gsize = in_gsize;
+
+	/*At this point, assume this is not a clone (will be dealt with later)*/
+	this->clone = false;
+
+	/*memory allocation */
+	if(this->gsize>0){
+		this->f_set    = xNew<bool>((unsigned int)in_gsize);
+		this->s_set    = xNew<bool>((unsigned int)in_gsize);
+		this->svalues  = xNew<IssmDouble>((unsigned int)in_gsize);
+		this->gdoflist = xNew<int>((unsigned int)in_gsize);
+
+		if(in_doftype) this->doftype = xNew<int>((unsigned int)in_gsize);
+		else this->doftype = NULL;
+	}
+
+	/*Assign values assuming no Dirichlet at this point*/
+	for(int i=0;i<this->gsize;i++){
+		this->f_set[i]    = true;
+		this->s_set[i]    = false;
+		this->svalues[i]  = 0.;      //0 constraint is the default value
+		this->gdoflist[i] = UNDEF;
+
+		if(this->doftype) this->doftype[i]=in_doftype[i];
+	}
+}
+/*}}}*/
+void DofIndexing::InitSet(int setenum){/*{{{*/
+
+	int i;
+	int size=0;
+
+	/*go through sets, and figure out how many dofs belong to this set, except for g-set, 
+	 * which has already been initialized: */
+	if(setenum==FsetEnum){
+		size=0;
+		for(i=0;i<this->gsize;i++) if(f_set[i])size++;
+		this->fsize=size;
+		xDelete<int>(this->fdoflist);
+
+		if(this->fsize)
+		 this->fdoflist=xNew<int>(size);
+		else
+		 this->fdoflist=NULL;
+	}
+	else if(setenum==SsetEnum){
+		size=0;
+		for(i=0;i<this->gsize;i++) if(s_set[i])size++;
+		this->ssize=size;
+		xDelete<int>(this->sdoflist);
+
+		if(this->ssize)
+		 this->sdoflist=xNew<int>(size);
+		else
+		 this->sdoflist=NULL;
+	}
+	else _error_("set of enum type " << EnumToStringx(setenum) << " not supported yet!");
+}
+/*}}}*/
+
+/*Some of the Object functionality: */
+void DofIndexing::Activate(void){/*{{{*/
+
+	this->active = true;
+
+	/*Constrain to 0. at this point*/
+	for(int i=0;i<this->gsize;i++){
+		this->f_set[i]    = true;
+		this->s_set[i]    = false;
+		this->svalues[i]  = 0.; 
+	}
+	return;
+}
+/*}}}*/
+void DofIndexing::Deactivate(void){/*{{{*/
+	this->active = false;
+
+	/*Constrain to 0. at this point*/
+	for(int i=0;i<this->gsize;i++){
+		this->f_set[i]    = false;
+		this->s_set[i]    = true;
+		this->svalues[i]  = 0.; 
+	}
+	return;
+}
+/*}}}*/
+void DofIndexing::DeepEcho(void){/*{{{*/
+
+	int i;
+
+	_printf_("DofIndexing:\n");
+	_printf_("   gsize:  " << gsize << "\n");
+	_printf_("   fsize:  " << fsize << "\n");
+	_printf_("   ssize:  " << ssize << "\n");
+	_printf_("   clone:  " << clone << "\n");
+	_printf_("   active: " << active << "\n");
+	_printf_("   freeze: " << freeze << "\n");
+
+	_printf_("   set membership: f,s sets \n");
+	for(i=0;i<gsize;i++){
+		_printf_("      dof " << i << ": " <<(f_set[i]?"true":"false")<< " " <<(s_set[i]?"true":"false") << "\n");
+	}
+
+	_printf_("   svalues (" << this->ssize << "): |");
+	for(i=0;i<this->gsize;i++){
+		if(this->s_set[i])_printf_(" " << svalues[i] << " |");
+	}
+	_printf_("\n");
+
+	if(doftype){
+		_printf_("   doftype: |");
+		for(i=0;i<gsize;i++){
+			_printf_(" " << doftype[i] << " |");
+		}
+		_printf_("\n");
+	}
+	else _printf_("   doftype: NULL\n");
+
+	_printf_("   g_doflist (" << this->gsize << "): |");
+	for(i=0;i<this->gsize;i++){
+		_printf_(" " << gdoflist[i] << " |");
+	}
+	_printf_("\n");
+
+	_printf_("   f_doflist (" << this->fsize << "): |");
+	for(i=0;i<this->fsize;i++){
+		_printf_(" " << fdoflist[i] << " |");
+	}
+	_printf_("\n");
+
+	_printf_("   s_doflist (" << this->ssize << "): |");
+	for(i=0;i<this->ssize;i++){
+		_printf_(" " << sdoflist[i] << " |");
+	}
+	_printf_("\n");
+}		
+/*}}}*/
+void DofIndexing::Echo(void){/*{{{*/
+
+	_printf_("DofIndexing:\n");
+	_printf_("   gsize:  " << gsize << "\n");
+	_printf_("   fsize:  " << fsize << "\n");
+	_printf_("   ssize:  " << ssize << "\n");
+	_printf_("   clone:  " << clone << "\n");
+	_printf_("   active: " << active << "\n");
+	_printf_("   freeze: " << freeze << "\n");
+}
+/*}}}*/
+void DofIndexing::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING(gsize);
+	MARSHALLING(fsize);
+	MARSHALLING(ssize);
+	MARSHALLING(clone);
+	MARSHALLING(active);
+	MARSHALLING(freeze);
+	MARSHALLING_DYNAMIC(f_set,bool,gsize);
+	MARSHALLING_DYNAMIC(s_set,bool,gsize);
+	MARSHALLING_DYNAMIC(svalues,IssmDouble,gsize);
+	MARSHALLING_DYNAMIC(doftype,int,gsize);
+	MARSHALLING_DYNAMIC(gdoflist,int,gsize);
+	MARSHALLING_DYNAMIC(fdoflist,int,fsize);
+	MARSHALLING_DYNAMIC(sdoflist,int,ssize);
+
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/DofIndexing.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/DofIndexing.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/DofIndexing.h	(revision 21239)
@@ -0,0 +1,59 @@
+/*!\file: DofIndexing.h
+ * \brief prototype for DofIndexing.h
+ */ 
+
+#ifndef _DOFINDEXING_H_
+#define _DOFINDEXING_H_
+
+#include "../shared/Numerics/types.h"
+
+class DofIndexing{
+
+	public:
+
+		/*sizes: */
+		int gsize;   //number of dofs for a node
+		int fsize;   //number of dofs solver for
+		int ssize;   //number of constrained dofs
+
+		/*partitioning: */
+		bool clone;  //this node is replicated from another one
+		bool active; //Is this node active or inactive (all dofs are constrained)
+		bool freeze; //this is required for 2d solutions, we never activate nodes that are not on base
+
+		/*boundary conditions sets: */
+		bool       *f_set;     //is dof on f-set (on which we solve)
+		bool       *s_set;     //is dof on s-set (on which boundary conditions -dirichlet- are applied)
+		IssmDouble *svalues;   //list of constraint values. size g_size, for ease of use.
+
+		/*types of dofs: */
+		int        *doftype;   //approximation type of the dofs (used only for coupling), size g_size
+
+		/*list of degrees of freedom: */
+		int *gdoflist;   //dof list in g_set
+		int *fdoflist;   //dof list in f_set
+		int *sdoflist;   //dof list in s_set
+
+		/*DofIndexing constructors, destructors {{{*/
+		DofIndexing();
+		DofIndexing(int g_size);
+		void Init(int g_size,int* doftype);
+		void InitSet(int setenum);
+		DofIndexing(DofIndexing* properties);
+		~DofIndexing();
+		DofIndexing operator=(const DofIndexing& in);
+		/*}}}*/
+		/*Object like functionality: {{{*/
+		void  copy(const DofIndexing& in);
+		void  DeepEcho(void); 
+		void  Echo(void); 
+		void    Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		/*}}}*/
+		/*DofIndexing management: {{{*/
+		void Activate(void);
+		void Deactivate(void);
+		DofIndexing* Spawn(int* indices, int numindices);
+		/*}}}*/
+
+};
+#endif //ifndef _DOFINDEXING_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Element.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Element.cpp	(revision 21239)
@@ -0,0 +1,3084 @@
+/*!\file Element.cpp
+ * \brief: implementation of the Element object
+ */
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include <math.h>
+#include <stdio.h>
+#include <string.h>
+#include "../classes.h"
+#include "../../shared/shared.h"
+#include "../../modules/SurfaceMassBalancex/SurfaceMassBalancex.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+Element::Element(){/*{{{*/
+	this->id  = -1;
+	this->sid = -1;
+	this->inputs     = NULL;
+	this->nodes      = NULL;
+	this->vertices   = NULL;
+	this->material   = NULL;
+	this->matpar     = NULL;
+	this->inputs     = NULL;
+	this->parameters = NULL;
+	this->element_type_list=NULL;
+}/*}}}*/
+Element::~Element(){/*{{{*/
+	xDelete<int>(element_type_list);
+	delete inputs;
+}
+/*}}}*/
+
+/*Other*/
+void       Element::AddInput(Input* input_in){/*{{{*/
+
+	/*Call inputs method*/
+	_assert_(this->inputs);
+	this->inputs->AddInput(input_in);
+}/*}}}*/
+void       Element::ComputeLambdaS(){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble vx,vy,vz,vmag;
+	IssmDouble dvx[3],dvy[3],dvz[3],dvmag[3];
+	IssmDouble epso,epsprime; 
+	int         dim;
+	IssmDouble *xyz_list = NULL;
+
+	/*Retrieve all inputs we will be needing: */
+	this->GetVerticesCoordinates(&xyz_list);
+	parameters->FindParam(&dim,DomainDimensionEnum);
+	Input* vx_input=this->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=this->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input=NULL;
+	if(dim==3){vz_input=this->GetInput(VzEnum); _assert_(vz_input);}
+
+	/*Allocate arrays*/
+	int numvertices = this->GetNumberOfVertices();
+	IssmDouble* lambdas = xNew<IssmDouble>(numvertices);
+
+	/* Start looping on the number of vertices: */
+	Gauss* gauss=this->NewGauss();
+	for (int iv=0;iv<numvertices;iv++){
+		gauss->GaussVertex(iv);
+
+		/*Get velocity derivatives in all directions*/
+		_assert_(dim>1);
+		_assert_(vx_input);
+		vx_input->GetInputValue(&vx,gauss);
+		vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		_assert_(vy_input);
+		vy_input->GetInputValue(&vy,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+		if(dim==3){
+			_assert_(vz_input);
+			vz_input->GetInputValue(&vz,gauss);
+			vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
+		}
+		else{
+			vz = 0.;
+			dvz[0] = 0.; dvz[1] = 0.; dvz[2] = 0.;
+			dvx[2]= 0.;
+			dvy[2]= 0.;
+		}
+		/*Calculate velocity magnitude and its derivative*/
+		vmag = sqrt(vx*vx+vy*vy+vz*vz);
+		if(vmag<1e-12){
+			vmag=1e-12;
+			dvmag[0]=0;
+			dvmag[1]=0;
+			dvmag[2]=0;
+		}
+		else{
+			dvmag[0]=1./(2*sqrt(vmag))*(2*vx*dvx[0]+2*vy*dvy[0]+2*vz*dvz[0]);
+			dvmag[1]=1./(2*sqrt(vmag))*(2*vx*dvx[1]+2*vy*dvy[1]+2*vz*dvz[1]);
+			dvmag[2]=1./(2*sqrt(vmag))*(2*vx*dvx[2]+2*vy*dvy[2]+2*vz*dvz[2]);
+		}
+		EstarStrainrateQuantities(&epso,&epsprime,vx,vy,vz,vmag,&dvx[0],&dvy[0],&dvz[0],&dvmag[0]);
+		lambdas[iv]=EstarLambdaS(epso,epsprime);
+	}
+
+	/*Add Stress tensor components into inputs*/
+	this->AddInput(LambdaSEnum,lambdas,P1Enum);
+	
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(lambdas);
+
+}
+/*}}}*/
+void       Element::ComputeNewDamage(){/*{{{*/
+
+	IssmDouble *xyz_list=NULL;
+	IssmDouble  eps_xx,eps_xy,eps_yy,eps_xz,eps_yz,eps_zz,eps_eff;
+	IssmDouble  epsmin=1.e-27;
+	IssmDouble  eps_0,kappa,sigma_0,B,D,n,envelopeD;
+	int         dim,counter=0;
+	IssmDouble  k1,k2,threshold=1.e-12;
+
+	/* Retrieve parameters */
+	this->GetVerticesCoordinates(&xyz_list);
+	this->ComputeStrainRate();
+	parameters->FindParam(&dim,DomainDimensionEnum);
+	parameters->FindParam(&kappa,DamageKappaEnum);
+	parameters->FindParam(&sigma_0,DamageStressThresholdEnum);
+
+	/* Retrieve inputs */
+	Input* eps_xx_input=this->GetInput(StrainRatexxEnum); _assert_(eps_xx_input);
+	Input* eps_yy_input=this->GetInput(StrainRateyyEnum); _assert_(eps_yy_input);
+	Input* eps_xy_input=this->GetInput(StrainRatexyEnum); _assert_(eps_xy_input);
+	Input* eps_xz_input=NULL;
+	Input* eps_yz_input=NULL;
+	Input* eps_zz_input=NULL;
+	if(dim==3){
+		eps_xz_input=this->GetInput(StrainRatexzEnum); _assert_(eps_xz_input);
+		eps_yz_input=this->GetInput(StrainRateyzEnum); _assert_(eps_yz_input);
+		eps_zz_input=this->GetInput(StrainRatezzEnum); _assert_(eps_zz_input);
+	}
+
+	/* Fetch number of nodes and allocate output*/
+   int numnodes = this->GetNumberOfNodes();
+   IssmDouble* newD = xNew<IssmDouble>(numnodes);
+
+	/* Retrieve domain-dependent inputs */
+	Input* n_input=this->GetInput(MaterialsRheologyNEnum); _assert_(n_input);
+   Input* damage_input = NULL;
+   Input* B_input = NULL;
+	int domaintype;
+   parameters->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype==Domain2DhorizontalEnum){
+      damage_input = this->GetInput(DamageDbarEnum);  _assert_(damage_input);
+      B_input=this->GetInput(MaterialsRheologyBbarEnum); _assert_(B_input);
+   }
+   else{
+      damage_input = this->GetInput(DamageDEnum);   _assert_(damage_input);
+      B_input=this->GetInput(MaterialsRheologyBEnum); _assert_(B_input);
+   }
+	
+	/* Start looping on the number of nodes: */
+	Gauss* gauss=this->NewGauss();
+	for (int i=0;i<numnodes;i++){
+		gauss->GaussNode(this->GetElementType(),i);
+
+		eps_xx_input->GetInputValue(&eps_xx,gauss);
+		eps_yy_input->GetInputValue(&eps_yy,gauss);
+		eps_xy_input->GetInputValue(&eps_xy,gauss);
+		if(dim==3){
+			eps_xz_input->GetInputValue(&eps_xz,gauss);
+			eps_yz_input->GetInputValue(&eps_yz,gauss);
+			eps_zz_input->GetInputValue(&eps_zz,gauss);
+		}
+		else{eps_xz=0; eps_yz=0; eps_zz=0;}
+
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
+		eps_eff=sqrt(eps_xx*eps_xx+eps_yy*eps_yy+eps_xy*eps_xy+eps_xz*eps_xz+eps_yz*eps_yz+eps_xx*eps_yy+epsmin*epsmin);
+
+		B_input->GetInputValue(&B,gauss);
+      n_input->GetInputValue(&n,gauss);
+      damage_input->GetInputValue(&D,gauss);
+
+		/* Compute threshold strain rate from threshold stress */
+		eps_0=pow(sigma_0/B,n); 
+
+		if(eps_eff>eps_0){
+			/* Compute damage on envelope curve for existing level of effective strain rate */
+			envelopeD=1.-pow(eps_0/eps_eff,1./n)*exp(-(eps_eff-eps_0)/(eps_0*(kappa-1.)));
+
+			if(envelopeD>D){
+				newD[i]=envelopeD;
+			}
+			else newD[i]=D;
+		}
+		else newD[i]=D;
+	}
+
+	/* Add new damage input to DamageEnum and NewDamageEnum */
+	this->AddInput(NewDamageEnum,newD,this->GetElementType());
+	if(domaintype==Domain2DhorizontalEnum){
+		this->AddInput(DamageDbarEnum,newD,this->GetElementType());
+	}
+	else{
+		this->AddInput(DamageDEnum,newD,this->GetElementType());
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(newD);
+	delete gauss;
+
+}/*}}}*/
+void       Element::ComputeStrainRate(){/*{{{*/
+
+	int         dim;
+	IssmDouble *xyz_list = NULL;
+	IssmDouble  epsilon[6];
+
+	/*Retrieve all inputs we will be needing: */
+	this->GetVerticesCoordinates(&xyz_list);
+	parameters->FindParam(&dim,DomainDimensionEnum);
+	Input* vx_input=this->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=this->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input=NULL;
+	if(dim==3){vz_input=this->GetInput(VzEnum); _assert_(vz_input);}
+
+	/*Allocate arrays*/
+	int numvertices = this->GetNumberOfVertices();
+	IssmDouble* eps_xx = xNew<IssmDouble>(numvertices);
+	IssmDouble* eps_yy = xNew<IssmDouble>(numvertices);
+	IssmDouble* eps_zz = xNew<IssmDouble>(numvertices);
+	IssmDouble* eps_xy = xNew<IssmDouble>(numvertices);
+	IssmDouble* eps_xz = xNew<IssmDouble>(numvertices);
+	IssmDouble* eps_yz = xNew<IssmDouble>(numvertices);
+	IssmDouble* eps_ef = xNew<IssmDouble>(numvertices);
+
+	/* Start looping on the number of vertices: */
+	Gauss* gauss=this->NewGauss();
+	for (int iv=0;iv<numvertices;iv++){
+		gauss->GaussVertex(iv);
+
+		/*Compute strain rate viscosity and pressure: */
+		if(dim==2)
+		 this->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+		else
+		 this->StrainRateFS(&epsilon[0],xyz_list,gauss,vx_input,vy_input,vz_input);
+
+		if(dim==2){
+			 /* epsilon=[exx,eyy,exy];*/
+			eps_xx[iv]=epsilon[0]; 
+			eps_yy[iv]=epsilon[1];
+			eps_xy[iv]=epsilon[2];
+			/* eps_eff^2 = 1/2 ( exx^2 + eyy^2 + 2*exy^2 )*/
+			eps_ef[iv] = 1./sqrt(2.)*sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + 2.*epsilon[2]*epsilon[2]);
+		}
+		else{
+			/*epsilon=[exx eyy ezz exy exz eyz]*/
+			eps_xx[iv]=epsilon[0]; 
+			eps_yy[iv]=epsilon[1];
+			eps_zz[iv]=epsilon[2];
+			eps_xy[iv]=epsilon[3]; 
+			eps_xz[iv]=epsilon[4];
+			eps_yz[iv]=epsilon[5];
+			/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
+			eps_ef[iv] = sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[3]*epsilon[3] +  epsilon[4]*epsilon[4] + epsilon[5]*epsilon[5] + epsilon[0]*epsilon[1]);
+		}
+	}
+
+	/*Add Stress tensor components into inputs*/
+	this->AddInput(StrainRatexxEnum,eps_xx,P1Enum);
+	this->AddInput(StrainRatexyEnum,eps_xy,P1Enum);
+	this->AddInput(StrainRatexzEnum,eps_xz,P1Enum);
+	this->AddInput(StrainRateyyEnum,eps_yy,P1Enum);
+	this->AddInput(StrainRateyzEnum,eps_yz,P1Enum);
+	this->AddInput(StrainRatezzEnum,eps_zz,P1Enum);
+	this->AddInput(StrainRateeffectiveEnum,eps_ef,P1Enum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(eps_xx);
+	xDelete<IssmDouble>(eps_yy);
+	xDelete<IssmDouble>(eps_zz);
+	xDelete<IssmDouble>(eps_xy);
+	xDelete<IssmDouble>(eps_xz);
+	xDelete<IssmDouble>(eps_yz);
+	xDelete<IssmDouble>(eps_ef);
+
+}
+/*}}}*/
+void       Element::CoordinateSystemTransform(IssmDouble** ptransform,Node** nodes_list,int numnodes,int* cs_array){/*{{{*/
+
+	int         i,counter;
+	int         numdofs   = 0;
+	IssmDouble  norm;
+	IssmDouble *transform = NULL;
+	IssmDouble  coord_system[3][3];
+
+	/*Some checks in debugging mode*/
+	_assert_(numnodes && nodes_list);
+
+	/*Get total number of dofs*/
+	for(i=0;i<numnodes;i++){
+		switch(cs_array[i]){
+			case PressureEnum: numdofs+=1; break;
+			case XYEnum:       numdofs+=2; break;
+			case XYZEnum:      numdofs+=3; break;
+			default: _error_("Coordinate system " << EnumToStringx(cs_array[i]) << " not supported yet");
+		}
+	}
+
+	/*Allocate and initialize transform matrix*/
+	transform=xNew<IssmDouble>(numdofs*numdofs);
+	for(i=0;i<numdofs*numdofs;i++) transform[i]=0.0;
+
+	/*Create transform matrix for all nodes (x,y for 2d and x,y,z for 3d). It is a block matrix
+	 *for 3 nodes:
+
+	 *     | T1 0  0 |
+	 * Q = | 0  T2 0 |
+	 *     | 0  0  T3|
+	 *
+	 * Where T1 is the transform matrix for node 1. It is a simple copy of the coordinate system
+	 * associated to this node*/
+	counter=0;
+	for(i=0;i<numnodes;i++){
+		nodes_list[i]->GetCoordinateSystem(&coord_system[0][0]);
+		switch(cs_array[i]){
+			case PressureEnum:
+				/*DO NOT change anything*/
+				transform[(numdofs)*(counter) + counter] = 1.;
+				counter+=1;
+				break;
+			case XYEnum:
+				/*We remove the z component, we need to renormalize x and y: x=[x1 x2 0] y=[-x2 x1 0]*/
+				norm = sqrt( coord_system[0][0]*coord_system[0][0] + coord_system[1][0]*coord_system[1][0]); _assert_(norm>1.e-4);
+				transform[(numdofs)*(counter+0) + counter+0] =   coord_system[0][0]/norm;
+				transform[(numdofs)*(counter+0) + counter+1] = - coord_system[1][0]/norm;
+				transform[(numdofs)*(counter+1) + counter+0] =   coord_system[1][0]/norm;
+				transform[(numdofs)*(counter+1) + counter+1] =   coord_system[0][0]/norm;
+				counter+=2;
+				break;
+			case XYZEnum:
+				/*The 3 coordinates are changed (x,y,z)*/
+				transform[(numdofs)*(counter+0) + counter+0] = coord_system[0][0];
+				transform[(numdofs)*(counter+0) + counter+1] = coord_system[0][1];
+				transform[(numdofs)*(counter+0) + counter+2] = coord_system[0][2];
+				transform[(numdofs)*(counter+1) + counter+0] = coord_system[1][0];
+				transform[(numdofs)*(counter+1) + counter+1] = coord_system[1][1];
+				transform[(numdofs)*(counter+1) + counter+2] = coord_system[1][2];
+				transform[(numdofs)*(counter+2) + counter+0] = coord_system[2][0];
+				transform[(numdofs)*(counter+2) + counter+1] = coord_system[2][1];
+				transform[(numdofs)*(counter+2) + counter+2] = coord_system[2][2];
+				counter+=3;
+				break;
+			default:
+				_error_("Coordinate system " << EnumToStringx(cs_array[i]) << " not supported yet");
+		}
+	}
+
+	/*Assign output pointer*/
+	*ptransform=transform;
+}
+/*}}}*/
+void       Element::DeepEcho(void){/*{{{*/
+
+	_printf_(EnumToStringx(this->ObjectEnum())<<" element:\n");
+	_printf_("   id : "<<this->id <<"\n");
+	_printf_("   sid: "<<this->sid<<"\n");
+	if(vertices){
+		int numvertices = this->GetNumberOfVertices();
+		for(int i=0;i<numvertices;i++) vertices[i]->Echo();
+	}
+	else _printf_("vertices = NULL\n");
+
+	if(nodes){
+		int numnodes = this->GetNumberOfNodes();
+		for(int i=0;i<numnodes;i++) nodes[i]->DeepEcho();
+	}
+	else _printf_("nodes = NULL\n");
+
+	if (material) material->DeepEcho();
+	else _printf_("material = NULL\n");
+
+	if (matpar) matpar->DeepEcho();
+	else _printf_("matpar = NULL\n");
+
+	_printf_("   parameters\n");
+	if (parameters) parameters->DeepEcho();
+	else _printf_("parameters = NULL\n");
+
+	_printf_("   inputs\n");
+	if (inputs) inputs->DeepEcho();
+	else _printf_("inputs=NULL\n");
+
+	return;
+}
+/*}}}*/
+void       Element::DeleteInput(int input_enum){/*{{{*/
+
+	inputs->DeleteInput(input_enum);
+
+}
+/*}}}*/
+void       Element::DeleteMaterials(void){/*{{{*/
+	delete this->material;
+}/*}}}*/
+void       Element::Delta18oParameterization(void){/*{{{*/
+
+	/*Are we on the base? If not, return*/
+	if(!IsOnBase()) return;
+
+	int        numvertices = this->GetNumberOfVertices();
+
+	int        i;
+	IssmDouble* monthlytemperatures=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* monthlyprec=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* TemperaturesPresentday=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* TemperaturesLgm=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* PrecipitationsPresentday=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* tmp=xNew<IssmDouble>(numvertices);
+	IssmDouble Delta18oPresent,Delta18oLgm,Delta18oTime;
+	IssmDouble Delta18oSurfacePresent,Delta18oSurfaceLgm,Delta18oSurfaceTime;
+	IssmDouble time,yts,finaltime,time_yr;
+
+	/*Recover parameters*/
+	this->parameters->FindParam(&time,TimeEnum);
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+	this->parameters->FindParam(&finaltime,TimesteppingFinalTimeEnum);
+	time_yr=floor(time/yts)*yts;
+
+	/*Recover present day temperature and precipitation*/
+	Input* input=this->inputs->GetInput(SmbTemperaturesPresentdayEnum);    _assert_(input);
+	Input* input2=this->inputs->GetInput(SmbTemperaturesLgmEnum);          _assert_(input2);
+	Input* input3=this->inputs->GetInput(SmbPrecipitationsPresentdayEnum); _assert_(input3);
+	/*loop over vertices: */
+	Gauss* gauss=this->NewGauss();
+	for(int month=0;month<12;month++){
+		for(int iv=0;iv<numvertices;iv++){
+			gauss->GaussVertex(iv);
+			input->GetInputValue(&TemperaturesPresentday[iv*12+month],gauss,month/12.*yts);
+			input2->GetInputValue(&TemperaturesLgm[iv*12+month],gauss,month/12.*yts);
+			input3->GetInputValue(&PrecipitationsPresentday[iv*12+month],gauss,month/12.*yts);
+
+			PrecipitationsPresentday[iv*12+month]=PrecipitationsPresentday[iv*12+month]*yts;
+		}
+	}
+
+	/*Recover delta18o and Delta18oSurface at present day, lgm and at time t*/
+	this->parameters->FindParam(&Delta18oPresent,SmbDelta18oEnum,finaltime);
+	this->parameters->FindParam(&Delta18oLgm,SmbDelta18oEnum,(finaltime-(21000*yts)));
+	this->parameters->FindParam(&Delta18oTime,SmbDelta18oEnum,time);
+	this->parameters->FindParam(&Delta18oSurfacePresent,SmbDelta18oSurfaceEnum,finaltime);
+	this->parameters->FindParam(&Delta18oSurfaceLgm,SmbDelta18oSurfaceEnum,(finaltime-(21000*yts)));
+	this->parameters->FindParam(&Delta18oSurfaceTime,SmbDelta18oSurfaceEnum,time);
+
+	/*Compute the temperature and precipitation*/
+	for(int iv=0;iv<numvertices;iv++){
+		ComputeDelta18oTemperaturePrecipitation(Delta18oSurfacePresent, Delta18oSurfaceLgm, Delta18oSurfaceTime,
+					Delta18oPresent, Delta18oLgm, Delta18oTime,
+					&PrecipitationsPresentday[iv*12],
+					&TemperaturesLgm[iv*12], &TemperaturesPresentday[iv*12],
+					&monthlytemperatures[iv*12], &monthlyprec[iv*12]);
+	}
+
+	/*Update inputs*/
+	TransientInput* NewTemperatureInput = new TransientInput(SmbMonthlytemperaturesEnum);
+	TransientInput* NewPrecipitationInput = new TransientInput(SmbPrecipitationEnum);
+	for (int imonth=0;imonth<12;imonth++) {
+		for(i=0;i<numvertices;i++) tmp[i]=monthlytemperatures[i*12+imonth];
+		switch(this->ObjectEnum()){
+			case TriaEnum:  NewTemperatureInput->AddTimeInput(new TriaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case PentaEnum: NewTemperatureInput->AddTimeInput(new PentaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TetraEnum: NewTemperatureInput->AddTimeInput(new TetraInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			default: _error_("Not implemented yet");
+		}
+		for(i=0;i<numvertices;i++) tmp[i]=monthlyprec[i*12+imonth]/yts;
+		switch(this->ObjectEnum()){
+			case TriaEnum:  NewPrecipitationInput->AddTimeInput(new TriaInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case PentaEnum: NewPrecipitationInput->AddTimeInput(new PentaInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TetraEnum: NewPrecipitationInput->AddTimeInput(new TetraInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			default: _error_("Not implemented yet");
+		}
+	}
+	NewTemperatureInput->Configure(this->parameters);
+	NewPrecipitationInput->Configure(this->parameters);
+
+	this->inputs->AddInput(NewTemperatureInput);
+	this->inputs->AddInput(NewPrecipitationInput);
+
+	switch(this->ObjectEnum()){
+		case TriaEnum: break;
+		case PentaEnum:
+		case TetraEnum:
+							this->InputExtrude(SmbMonthlytemperaturesEnum,-1);
+							this->InputExtrude(SmbPrecipitationEnum,-1);
+							break;
+		default: _error_("Not implemented yet");
+	}
+
+	/*clean-up*/
+	delete gauss;
+	xDelete<IssmDouble>(monthlytemperatures);
+	xDelete<IssmDouble>(monthlyprec);
+	xDelete<IssmDouble>(TemperaturesPresentday);
+	xDelete<IssmDouble>(TemperaturesLgm);
+	xDelete<IssmDouble>(PrecipitationsPresentday);
+	xDelete<IssmDouble>(tmp);
+
+}
+/*}}}*/
+void       Element::Delta18opdParameterization(void){/*{{{*/
+	/*Are we on the base? If not, return*/
+	if(!IsOnBase()) return;
+
+	int        numvertices = this->GetNumberOfVertices();
+
+	int        i;
+	IssmDouble* monthlytemperatures=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* monthlyprec=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* TemperaturesPresentday=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* PrecipitationsPresentday=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* tmp=xNew<IssmDouble>(numvertices);
+	IssmDouble Delta18oTime;
+	IssmDouble dpermil;
+	IssmDouble time,yts,time_yr,month;
+	this->parameters->FindParam(&time,TimeEnum);
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+	time_yr=floor(time/yts)*yts;
+
+	/*Get some pdd parameters*/
+	dpermil=this->matpar->GetMaterialParameter(SmbDpermilEnum);
+
+	/*Recover present day temperature and precipitation*/
+	Input*     input=this->inputs->GetInput(SmbTemperaturesPresentdayEnum);    _assert_(input);
+	Input*     input2=this->inputs->GetInput(SmbPrecipitationsPresentdayEnum); _assert_(input2);
+	/*loop over vertices: */
+	Gauss* gauss=this->NewGauss();
+	for(int month=0;month<12;month++) {
+		for(int iv=0;iv<numvertices;iv++) {
+			gauss->GaussVertex(iv);
+			input->GetInputValue(&TemperaturesPresentday[iv*12+month],gauss,month/12.*yts);
+			input2->GetInputValue(&PrecipitationsPresentday[iv*12+month],gauss,month/12.*yts);
+
+			PrecipitationsPresentday[iv*12+month]=PrecipitationsPresentday[iv*12+month]*yts;
+		}
+	}
+
+	/*Recover interpolation parameters at time t*/
+	this->parameters->FindParam(&Delta18oTime,SmbDelta18oEnum,time);
+
+	/*Compute the temperature and precipitation*/
+	for(int iv=0;iv<numvertices;iv++){
+		ComputeD18OTemperaturePrecipitationFromPD(Delta18oTime,dpermil,
+					&PrecipitationsPresentday[iv*12], &TemperaturesPresentday[iv*12],
+					&monthlytemperatures[iv*12], &monthlyprec[iv*12]);
+	}
+
+	/*Update inputs*/
+	TransientInput* NewTemperatureInput = new TransientInput(SmbMonthlytemperaturesEnum);
+	TransientInput* NewPrecipitationInput = new TransientInput(SmbPrecipitationEnum);
+	for (int imonth=0;imonth<12;imonth++) {
+		for(i=0;i<numvertices;i++) tmp[i]=monthlytemperatures[i*12+imonth];
+		switch(this->ObjectEnum()){
+			case TriaEnum:  NewTemperatureInput->AddTimeInput(new TriaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case PentaEnum: NewTemperatureInput->AddTimeInput(new PentaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TetraEnum: NewTemperatureInput->AddTimeInput(new TetraInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			default: _error_("Not implemented yet");
+		}
+		for(i=0;i<numvertices;i++) tmp[i]=monthlyprec[i*12+imonth]/yts;
+		switch(this->ObjectEnum()){
+			case TriaEnum:  NewPrecipitationInput->AddTimeInput(new TriaInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case PentaEnum: NewPrecipitationInput->AddTimeInput(new PentaInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TetraEnum: NewPrecipitationInput->AddTimeInput(new TetraInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			default: _error_("Not implemented yet");
+		}
+	}
+	NewTemperatureInput->Configure(this->parameters);
+	NewPrecipitationInput->Configure(this->parameters);
+
+	this->inputs->AddInput(NewTemperatureInput);
+	this->inputs->AddInput(NewPrecipitationInput);
+
+	switch(this->ObjectEnum()){
+		case TriaEnum: break;
+		case PentaEnum:
+		case TetraEnum:
+							this->InputExtrude(SmbMonthlytemperaturesEnum,-1);
+							this->InputExtrude(SmbPrecipitationEnum,-1);
+							break;
+		default: _error_("Not implemented yet");
+	}
+
+	/*clean-up*/
+	delete gauss;
+	xDelete<IssmDouble>(monthlytemperatures);
+	xDelete<IssmDouble>(monthlyprec);
+	xDelete<IssmDouble>(TemperaturesPresentday);
+	xDelete<IssmDouble>(PrecipitationsPresentday);
+	xDelete<IssmDouble>(tmp);
+	
+}
+/*}}}*/
+IssmDouble Element::Divergence(void){/*{{{*/
+	/*Compute element divergence*/
+
+	/*Intermediaries*/
+	int        dim;
+	IssmDouble Jdet;
+	IssmDouble divergence=0.;
+	IssmDouble dvx[3],dvy[3],dvz[3];
+	IssmDouble *xyz_list = NULL;
+
+	/*Get inputs and parameters*/
+	this->FindParam(&dim,DomainDimensionEnum);
+	Input* vx_input = this->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input = this->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input = NULL;
+	if(dim==3){
+		vz_input = this->GetInput(VzEnum); _assert_(vz_input);
+	}
+	this->GetVerticesCoordinates(&xyz_list);
+
+	Gauss* gauss=this->NewGauss(5);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+		this->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get strain rate assuming that epsilon has been allocated*/
+		vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+		if(dim==2){
+			divergence += (dvx[0]+dvy[1])*gauss->weight*Jdet;
+		}
+		else{
+			vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
+			divergence += (dvx[0]+dvy[1]+dvz[2])*gauss->weight*Jdet;
+		}
+
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return divergence;
+}/*}}}*/
+void       Element::dViscositydBFS(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble dmudB;
+	IssmDouble epsilon3d[6];/* epsilon=[exx,eyy,exy,exy,exz,eyz];    */
+	IssmDouble epsilon2d[3];/* epsilon=[exx,eyy,exy];    */
+	IssmDouble eps_eff;
+	IssmDouble eps0=1.e-27;
+
+	if(dim==3){
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
+		this->StrainRateFS(&epsilon3d[0],xyz_list,gauss,vx_input,vy_input,vz_input);
+		eps_eff = sqrt(epsilon3d[0]*epsilon3d[0] + epsilon3d[1]*epsilon3d[1] + epsilon3d[3]*epsilon3d[3] +  epsilon3d[4]*epsilon3d[4] + epsilon3d[5]*epsilon3d[5] + epsilon3d[0]*epsilon3d[1]+eps0*eps0);
+	}
+	else{
+		/* eps_eff^2 = 1/2 ( exx^2 + eyy^2 + 2*exy^2 )*/
+		this->StrainRateSSA(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = 1./sqrt(2.)*sqrt(epsilon2d[0]*epsilon2d[0] + epsilon2d[1]*epsilon2d[1] + 2.*epsilon2d[2]*epsilon2d[2]);
+	}
+	/*Get viscosity*/
+	material->GetViscosity_B(&dmudB,eps_eff);
+
+	/*Assign output pointer*/
+	*pdmudB=dmudB;
+
+}
+/*}}}*/
+void       Element::dViscositydBHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble dmudB;
+	IssmDouble epsilon3d[5];/* epsilon=[exx,eyy,exy,exy,exz,eyz];    */
+	IssmDouble epsilon2d[2];/* epsilon=[exx,eyy,exy];    */
+	IssmDouble eps_eff;
+	IssmDouble eps0=1.e-27;
+
+	if(dim==3){
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
+		this->StrainRateHO(&epsilon3d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = sqrt(epsilon3d[0]*epsilon3d[0] + epsilon3d[1]*epsilon3d[1] + epsilon3d[2]*epsilon3d[2] + epsilon3d[3]*epsilon3d[3] +  epsilon3d[4]*epsilon3d[4] + epsilon3d[0]*epsilon3d[1]+eps0*eps0);
+	}
+	else{
+		/* eps_eff^2 = 1/2 ( exx^2 + eyy^2 + 2*exy^2 )*/
+		this->StrainRateHO2dvertical(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = 1./sqrt(2.)*sqrt(epsilon2d[0]*epsilon2d[0] + 2.*epsilon2d[1]*epsilon2d[1] + eps0*eps0);
+	}
+	/*Get viscosity*/
+	material->GetViscosity_B(&dmudB,eps_eff);
+
+	/*Assign output pointer*/
+	*pdmudB=dmudB;
+
+}
+/*}}}*/
+void       Element::dViscositydBSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble dmudB;
+	IssmDouble epsilon2d[3];/* epsilon=[exx,eyy,exy];    */
+	IssmDouble epsilon1d;   /* epsilon=[exx];    */
+	IssmDouble eps_eff;
+
+	 if(dim==2){
+		 /* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exx*eyy*/
+		 this->StrainRateSSA(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
+		 eps_eff = sqrt(epsilon2d[0]*epsilon2d[0] + epsilon2d[1]*epsilon2d[1] + epsilon2d[2]*epsilon2d[2] + epsilon2d[0]*epsilon2d[1]);
+	 }
+	 else{
+		 /* eps_eff^2 = 1/2 exx^2*/
+		 this->StrainRateSSA1d(&epsilon1d,xyz_list,gauss,vx_input);
+		 eps_eff = sqrt(epsilon1d*epsilon1d/2.);
+	 }
+
+	/*Get viscosity*/
+	material->GetViscosity_B(&dmudB,eps_eff);
+
+	/*Assign output pointer*/
+	*pdmudB=dmudB;
+
+}
+/*}}}*/
+void       Element::dViscositydDSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble dmudB;
+	IssmDouble epsilon2d[3];/* epsilon=[exx,eyy,exy];    */
+	IssmDouble epsilon1d;   /* epsilon=[exx];    */
+	IssmDouble eps_eff;
+
+	if(dim==2){
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exx*eyy*/
+		this->StrainRateSSA(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = sqrt(epsilon2d[0]*epsilon2d[0] + epsilon2d[1]*epsilon2d[1] + epsilon2d[2]*epsilon2d[2] + epsilon2d[0]*epsilon2d[1]);
+	}
+	else{
+		/* eps_eff^2 = 1/2 exx^2*/
+		this->StrainRateSSA1d(&epsilon1d,xyz_list,gauss,vx_input);
+		eps_eff = sqrt(epsilon1d*epsilon1d/2.);
+	}
+
+	/*Get viscosity*/
+	material->GetViscosity_D(&dmudB,eps_eff);
+
+	/*Assign output pointer*/
+	*pdmudB=dmudB;
+
+}
+/*}}}*/
+void       Element::Echo(void){/*{{{*/
+	_printf_(EnumToStringx(this->ObjectEnum())<<" element:\n");
+	_printf_("   id : "<<this->id <<"\n");
+	_printf_("   sid: "<<this->sid<<"\n");
+	if(vertices){
+		int numvertices = this->GetNumberOfVertices();
+		for(int i=0;i<numvertices;i++) vertices[i]->Echo();
+	}
+	else _printf_("vertices = NULL\n");
+
+	if(nodes){
+		int numnodes = this->GetNumberOfNodes();
+		for(int i=0;i<numnodes;i++) {
+			_printf_("nodes[" << i << "] = " << nodes[i]);	
+			nodes[i]->Echo();
+		}
+	}
+	else _printf_("nodes = NULL\n");
+
+	if (material) material->Echo();
+	else _printf_("material = NULL\n");
+
+	if (matpar) matpar->Echo();
+	else _printf_("matpar = NULL\n");
+
+	_printf_("   parameters\n");
+	if (parameters) parameters->Echo();
+	else _printf_("parameters = NULL\n");
+
+	_printf_("   inputs\n");
+	if (inputs) inputs->Echo();
+	else _printf_("inputs=NULL\n");
+}
+/*}}}*/
+IssmDouble Element::EnthalpyDiffusionParameter(IssmDouble enthalpy,IssmDouble pressure){/*{{{*/
+	return matpar->GetEnthalpyDiffusionParameter(enthalpy,pressure);
+}/*}}}*/
+IssmDouble Element::EnthalpyDiffusionParameterVolume(int numvertices,IssmDouble* enthalpy,IssmDouble* pressure){/*{{{*/
+	return matpar->GetEnthalpyDiffusionParameterVolume(numvertices,enthalpy,pressure);
+}/*}}}*/
+void       Element::EnthalpyToThermal(IssmDouble* ptemperature,IssmDouble* pwaterfraction,IssmDouble enthalpy,IssmDouble pressure){/*{{{*/
+	matpar->EnthalpyToThermal(ptemperature,pwaterfraction,enthalpy,pressure);
+}/*}}}*/
+void       Element::FindParam(bool* pvalue,int paramenum){/*{{{*/
+	this->parameters->FindParam(pvalue,paramenum);
+}/*}}}*/
+void       Element::FindParam(int* pvalue,int paramenum){/*{{{*/
+	this->parameters->FindParam(pvalue,paramenum);
+}/*}}}*/
+void       Element::FindParam(IssmDouble* pvalue,int paramenum){/*{{{*/
+	this->parameters->FindParam(pvalue,paramenum);
+}/*}}}*/
+void       Element::FindParam(int** pvalues,int* psize,int paramenum){/*{{{*/
+	this->parameters->FindParam(pvalues,psize,paramenum);
+}/*}}}*/
+void       Element::GetDofList(int** pdoflist,int approximation_enum,int setenum){/*{{{*/
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = this->GetNumberOfNodes();
+
+	/*First, figure out size of doflist and create it: */
+	int numberofdofs=0;
+	for(int i=0;i<numnodes;i++) numberofdofs+=nodes[i]->GetNumberOfDofs(approximation_enum,setenum);
+
+	/*Allocate output*/
+	int* doflist=xNew<int>(numberofdofs);
+
+	/*Populate: */
+	int count=0;
+	for(int i=0;i<numnodes;i++){
+		nodes[i]->GetDofList(doflist+count,approximation_enum,setenum);
+		count+=nodes[i]->GetNumberOfDofs(approximation_enum,setenum);
+	}
+
+	/*Assign output pointers:*/
+	*pdoflist=doflist;
+}
+/*}}}*/
+void       Element::GetDofListPressure(int** pdoflist,int setenum){/*{{{*/
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = this->NumberofNodesVelocity();
+	int pnumnodes = this->NumberofNodesPressure();
+
+	/*First, figure out size of doflist and create it: */
+	int numberofdofs=0;
+	for(int i=vnumnodes;i<vnumnodes+pnumnodes;i++) numberofdofs+=nodes[i]->GetNumberOfDofs(FSApproximationEnum,setenum);
+
+	/*Allocate output*/
+	int* doflist=xNew<int>(numberofdofs);
+
+	/*Populate: */
+	int count=0;
+	for(int i=vnumnodes;i<vnumnodes+pnumnodes;i++){
+		nodes[i]->GetDofList(doflist+count,FSApproximationEnum,setenum);
+		count+=nodes[i]->GetNumberOfDofs(FSApproximationEnum,setenum);
+	}
+
+	/*Assign output pointers:*/
+	*pdoflist=doflist;
+}
+/*}}}*/
+void       Element::GetDofListVelocity(int** pdoflist,int setenum){/*{{{*/
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = this->NumberofNodesVelocity();
+
+	/*First, figure out size of doflist and create it: */
+	int numberofdofs=0;
+	for(int i=0;i<numnodes;i++) numberofdofs+=nodes[i]->GetNumberOfDofs(FSvelocityEnum,setenum);
+
+	/*Allocate output*/
+	int* doflist=xNew<int>(numberofdofs);
+
+	/*Populate: */
+	int count=0;
+	for(int i=0;i<numnodes;i++){
+		nodes[i]->GetDofList(doflist+count,FSvelocityEnum,setenum);
+		count+=nodes[i]->GetNumberOfDofs(FSvelocityEnum,setenum);
+	}
+
+	/*Assign output pointers:*/
+	*pdoflist=doflist;
+}
+/*}}}*/
+Input*     Element::GetInput(int inputenum){/*{{{*/
+	return inputs->GetInput(inputenum);
+}/*}}}*/
+void       Element::GetInputListOnNodes(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue){/*{{{*/
+
+	_assert_(pvalue);
+
+	Input *input    = this->GetInput(enumtype);
+	int    numnodes = this->GetNumberOfNodes();
+
+	/* Start looping on the number of vertices: */
+	if(input){
+		Gauss* gauss=this->NewGauss();
+		for(int iv=0;iv<numnodes;iv++){
+			gauss->GaussNode(this->FiniteElement(),iv);
+			input->GetInputValue(&pvalue[iv],gauss);
+		}
+		delete gauss;
+	}
+	else{
+		for(int iv=0;iv<numnodes;iv++) pvalue[iv]=defaultvalue;
+	}
+}
+/*}}}*/
+void       Element::GetInputListOnNodes(IssmDouble* pvalue,int enumtype){/*{{{*/
+
+	_assert_(pvalue);
+
+	int    numnodes = this->GetNumberOfNodes();
+	Input *input    = this->GetInput(enumtype);
+	if(!input) _error_("Input " << EnumToStringx(enumtype) << " not found in element");
+
+	/* Start looping on the number of vertices: */
+	Gauss* gauss=this->NewGauss();
+	for(int iv=0;iv<numnodes;iv++){
+		gauss->GaussNode(this->FiniteElement(),iv);
+		input->GetInputValue(&pvalue[iv],gauss);
+	}
+	delete gauss;
+}
+/*}}}*/
+void       Element::GetInputListOnNodesVelocity(IssmDouble* pvalue,int enumtype){/*{{{*/
+
+	_assert_(pvalue);
+
+	int    numnodes = this->NumberofNodesVelocity();
+	Input *input    = this->GetInput(enumtype);
+	if(!input) _error_("Input " << EnumToStringx(enumtype) << " not found in element");
+
+	/* Start looping on the number of vertices: */
+	Gauss* gauss=this->NewGauss();
+	for(int iv=0;iv<numnodes;iv++){
+		gauss->GaussNode(this->VelocityInterpolation(),iv);
+		input->GetInputValue(&pvalue[iv],gauss);
+	}
+	delete gauss;
+}
+/*}}}*/
+void       Element::GetInputListOnVertices(IssmDouble* pvalue,int enumtype){/*{{{*/
+
+	/*Recover input*/
+	Input* input=this->GetInput(enumtype);
+	if (!input) _error_("Input " << EnumToStringx(enumtype) << " not found in element");
+
+	/*Fetch number vertices for this element*/
+	int numvertices = this->GetNumberOfVertices();
+
+	/*Checks in debugging mode*/
+	_assert_(pvalue);
+
+	/* Start looping on the number of vertices: */
+	Gauss*gauss=this->NewGauss();
+	for(int iv=0;iv<numvertices;iv++){
+		gauss->GaussVertex(iv);
+		input->GetInputValue(&pvalue[iv],gauss);
+	}
+
+	/*clean-up*/
+	delete gauss;
+}
+/*}}}*/
+void       Element::GetInputListOnVertices(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue){/*{{{*/
+
+	/*Recover input*/
+	Input* input=this->GetInput(enumtype);
+
+	/*Checks in debugging mode*/
+	_assert_(pvalue);
+
+	/*Fetch number vertices for this element*/
+	int numvertices = this->GetNumberOfVertices();
+
+	/* Start looping on the number of vertices: */
+	if (input){
+		Gauss* gauss=this->NewGauss();
+		for (int iv=0;iv<numvertices;iv++){
+			gauss->GaussVertex(iv);
+			input->GetInputValue(&pvalue[iv],gauss);
+		}
+		delete gauss;
+	}
+	else{
+		for(int iv=0;iv<numvertices;iv++) pvalue[iv]=defaultvalue;
+	}
+}
+/*}}}*/
+void       Element::GetInputLocalMinMaxOnNodes(IssmDouble* min,IssmDouble* max,IssmDouble* ug){/*{{{*/
+
+
+	/*Get number of nodes for this element*/
+	int numnodes = this->GetNumberOfNodes();
+
+	/*Some checks to avoid segmentation faults*/
+	_assert_(ug);
+	_assert_(numnodes>0);
+	_assert_(nodes);
+
+	/*Get element minimum/maximum*/
+	IssmDouble input_min = ug[nodes[0]->GetDof(0,GsetEnum)];
+	IssmDouble input_max = input_min;
+	for(int i=1;i<numnodes;i++){
+		if(ug[nodes[i]->GetDof(0,GsetEnum)] < input_min) input_min = ug[nodes[i]->GetDof(0,GsetEnum)];
+		if(ug[nodes[i]->GetDof(0,GsetEnum)] > input_max) input_max = ug[nodes[i]->GetDof(0,GsetEnum)];
+	}
+
+
+	/*Second loop to reassign min and max with local extrema*/
+	for(int i=0;i<numnodes;i++){
+		if(min[nodes[i]->GetDof(0,GsetEnum)]>input_min) min[nodes[i]->GetDof(0,GsetEnum)] = input_min;
+		if(max[nodes[i]->GetDof(0,GsetEnum)]<input_max) max[nodes[i]->GetDof(0,GsetEnum)] = input_max;
+	}
+}
+/*}}}*/
+void       Element::GetInputValue(bool* pvalue,int inputenum){/*{{{*/
+
+	Input* input=inputs->GetInput(inputenum);
+	if(!input) _error_("Input " << EnumToStringx(inputenum) << " not found in element");
+	input->GetInputValue(pvalue);
+
+}/*}}}*/
+void       Element::GetInputValue(int* pvalue,int inputenum){/*{{{*/
+
+	Input* input=inputs->GetInput(inputenum);
+	if(!input) _error_("Input " << EnumToStringx(inputenum) << " not found in element");
+	input->GetInputValue(pvalue);
+
+}/*}}}*/
+void       Element::GetInputValue(IssmDouble* pvalue,int inputenum){/*{{{*/
+
+	Input* input=inputs->GetInput(inputenum);
+	if(!input) _error_("Input " << EnumToStringx(inputenum) << " not found in element");
+	input->GetInputValue(pvalue);
+
+}/*}}}*/
+void       Element::GetInputValue(IssmDouble* pvalue,Gauss* gauss,int inputenum){/*{{{*/
+
+	Input* input=inputs->GetInput(inputenum);
+	if(!input) _error_("Input " << EnumToStringx(inputenum) << " not found in element");
+	input->GetInputValue(pvalue,gauss);
+
+}/*}}}*/
+IssmDouble Element::GetMaterialParameter(int enum_in){/*{{{*/
+
+	_assert_(this->matpar);
+	switch(enum_in){ // FIXME: change this to material
+		case MaterialsRheologyNEnum:
+			return this->material->GetN();
+		case MaterialsRheologyBEnum:
+			return this->material->GetB();
+		case MaterialsRheologyBbarEnum:
+			return this->material->GetBbar();
+		default:
+			return this->matpar->GetMaterialParameter(enum_in);
+	}
+}/*}}}*/
+void       Element::GetNodesLidList(int* lidlist){/*{{{*/
+
+	_assert_(lidlist);
+	_assert_(nodes);
+	int numnodes = this->GetNumberOfNodes();
+	for(int i=0;i<numnodes;i++){
+		lidlist[i]=nodes[i]->Lid();
+	}
+}
+/*}}}*/
+void       Element::GetNodesSidList(int* sidlist){/*{{{*/
+
+	_assert_(sidlist);
+	_assert_(nodes);
+	int numnodes = this->GetNumberOfNodes();
+	for(int i=0;i<numnodes;i++){
+		sidlist[i]=nodes[i]->Sid();
+	}
+}
+/*}}}*/
+void       Element::GetPhi(IssmDouble* phi, IssmDouble*  epsilon, IssmDouble viscosity){/*{{{*/
+	/*Compute deformational heating from epsilon and viscosity */
+
+	IssmDouble epsilon_matrix[3][3];
+	IssmDouble epsilon_eff;
+	IssmDouble epsilon_sqr[3][3];
+
+	/* Build epsilon matrix */
+	epsilon_matrix[0][0]=epsilon[0];
+	epsilon_matrix[1][0]=epsilon[3];
+	epsilon_matrix[2][0]=epsilon[4];
+	epsilon_matrix[0][1]=epsilon[3];
+	epsilon_matrix[1][1]=epsilon[1];
+	epsilon_matrix[2][1]=epsilon[5];
+	epsilon_matrix[0][2]=epsilon[4];
+	epsilon_matrix[1][2]=epsilon[5];
+	epsilon_matrix[2][2]=epsilon[2];
+
+	/* Effective value of epsilon_matrix */
+	epsilon_sqr[0][0]=epsilon_matrix[0][0]*epsilon_matrix[0][0];
+	epsilon_sqr[1][0]=epsilon_matrix[1][0]*epsilon_matrix[1][0];
+	epsilon_sqr[2][0]=epsilon_matrix[2][0]*epsilon_matrix[2][0];
+	epsilon_sqr[0][1]=epsilon_matrix[0][1]*epsilon_matrix[0][1];
+	epsilon_sqr[1][1]=epsilon_matrix[1][1]*epsilon_matrix[1][1];
+	epsilon_sqr[2][1]=epsilon_matrix[2][1]*epsilon_matrix[2][1];
+	epsilon_sqr[0][2]=epsilon_matrix[0][2]*epsilon_matrix[0][2];
+	epsilon_sqr[1][2]=epsilon_matrix[1][2]*epsilon_matrix[1][2];
+	epsilon_sqr[2][2]=epsilon_matrix[2][2]*epsilon_matrix[2][2];
+	epsilon_eff=1/sqrt(2.)*sqrt(epsilon_sqr[0][0]+epsilon_sqr[0][1]+ epsilon_sqr[0][2]+ epsilon_sqr[1][0]+ epsilon_sqr[1][1]+ epsilon_sqr[1][2]+ epsilon_sqr[2][0]+ epsilon_sqr[2][1]+ epsilon_sqr[2][2]);
+
+	/*Phi = Tr(sigma * eps) 
+	 *    = Tr(sigma'* eps)
+	 *    = 2 * eps_eff * sigma'_eff
+	 *    = 4 * mu * eps_eff ^2*/
+	*phi=4.*epsilon_eff*epsilon_eff*viscosity;
+}
+/*}}}*/
+/* void       Element::GetVectorFromInputs(Vector<IssmDouble>* vector,int input_enum){/\*{{{*\/ */
+
+/* 	/\*Fetch number vertices for this element and allocate arrays*\/ */
+/* 	int numvertices = this->GetNumberOfVertices(); */
+/* 	int*        vertexpidlist = xNew<int>(numvertices); */
+/* 	IssmDouble* values        = xNew<IssmDouble>(numvertices); */
+
+/* 	/\*Fill in values*\/ */
+/* 	this->GetVertexPidList(vertexpidlist); */
+/* 	this->GetInputListOnVertices(values,input_enum); */
+/* 	vector->SetValues(numvertices,vertexpidlist,values,INS_VAL); */
+
+/* 	/\*Clean up*\/ */
+/* 	xDelete<int>(vertexpidlist); */
+/* 	xDelete<IssmDouble>(values); */
+
+/* } */
+/* /\*}}}*\/ */
+void       Element::GetVectorFromInputs(Vector<IssmDouble>* vector,int input_enum,int type){/*{{{*/
+
+	/*Fetch number vertices for this element and allocate arrays*/
+	int         numvertices = this->GetNumberOfVertices();
+	int         numnodes    = this->GetNumberOfNodes();
+	int*        doflist     = NULL;
+	IssmDouble* values      = NULL;
+
+	switch(type){
+	case VertexPIdEnum:
+		doflist = xNew<int>(numvertices);
+		values = xNew<IssmDouble>(numvertices);
+		/*Fill in values*/
+		this->GetVertexPidList(doflist);
+		this->GetInputListOnVertices(values,input_enum);
+		vector->SetValues(numvertices,doflist,values,INS_VAL);
+		break;
+	case VertexSIdEnum:
+		doflist = xNew<int>(numvertices);
+		values = xNew<IssmDouble>(numvertices);
+		/*Fill in values*/
+		this->GetVerticesSidList(doflist);
+		this->GetInputListOnVertices(values,input_enum);
+		vector->SetValues(numvertices,doflist,values,INS_VAL);
+		break;
+	case NodesEnum:
+		doflist = xNew<int>(numnodes);
+		values = xNew<IssmDouble>(numnodes);
+		/*Fill in values*/
+		this->GetInputListOnNodes(values,input_enum);
+		this->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+		vector->SetValues(numnodes,doflist,values,INS_VAL);
+		break;
+	case NodeSIdEnum:
+		doflist = xNew<int>(numnodes);
+		values = xNew<IssmDouble>(numnodes);
+		/*Fill in values*/
+		this->GetNodesSidList(doflist);
+		this->GetInputListOnNodes(values,input_enum);
+		vector->SetValues(numnodes,doflist,values,INS_VAL);
+		break;
+	default:
+		_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
+	}
+	
+	/*Clean up*/
+	xDelete<int>(doflist);
+	xDelete<IssmDouble>(values);
+
+}
+/*}}}*/
+void       Element::GetVertexPidList(int* pidlist){/*{{{*/
+
+	int numvertices = this->GetNumberOfVertices();
+	for(int i=0;i<numvertices;i++) pidlist[i]=vertices[i]->Pid();
+
+}
+/*}}}*/
+void       Element::GetVerticesConnectivityList(int* connectivity){/*{{{*/
+
+	int numvertices = this->GetNumberOfVertices();
+	for(int i=0;i<numvertices;i++) connectivity[i]=this->vertices[i]->Connectivity();
+}
+/*}}}*/
+void       Element::GetVerticesCoordinates(IssmDouble** pxyz_list){/*{{{*/
+
+	int         numvertices = this->GetNumberOfVertices();
+	IssmDouble* xyz_list    = xNew<IssmDouble>(numvertices*3);
+	::GetVerticesCoordinates(xyz_list,this->vertices,numvertices);
+
+	*pxyz_list = xyz_list;
+
+}/*}}}*/
+void       Element::GetVerticesSidList(int* sidlist){/*{{{*/
+
+	int numvertices = this->GetNumberOfVertices();
+	for(int i=0;i<numvertices;i++) sidlist[i]=this->vertices[i]->Sid();
+}
+/*}}}*/
+IssmDouble Element::GetXcoord(IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	/*output*/
+	IssmDouble x;
+
+	/*Create list of x*/
+	int         numvertices = this->GetNumberOfVertices();
+	IssmDouble* x_list      = xNew<IssmDouble>(numvertices);
+
+	for(int i=0;i<numvertices;i++) x_list[i]=xyz_list[i*3+0];
+	ValueP1OnGauss(&x,x_list,gauss);
+
+	xDelete<IssmDouble>(x_list);
+	return x;
+}/*}}}*/
+IssmDouble Element::GetYcoord(IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	/*output*/
+	IssmDouble y;
+
+	/*Create list of y*/
+	int         numvertices = this->GetNumberOfVertices();
+	IssmDouble* y_list      = xNew<IssmDouble>(numvertices);
+
+	for(int i=0;i<numvertices;i++) y_list[i]=xyz_list[i*3+1];
+	ValueP1OnGauss(&y,y_list,gauss);
+
+	xDelete<IssmDouble>(y_list);
+	return y;
+}/*}}}*/
+IssmDouble Element::GetZcoord(IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	/*output*/
+	IssmDouble z;
+
+	/*Create list of z*/
+	int         numvertices = this->GetNumberOfVertices();
+	IssmDouble* z_list      = xNew<IssmDouble>(numvertices);
+
+	for(int i=0;i<numvertices;i++) z_list[i]=xyz_list[i*3+2];
+	ValueP1OnGauss(&z,z_list,gauss);
+
+	xDelete<IssmDouble>(z_list);
+	return z;
+}/*}}}*/
+void       Element::GradientIndexing(int* indexing,int control_index,bool onsid){/*{{{*/
+
+	/*Get number of controls*/
+	int num_controls;
+	parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+
+	/*Get number of vertices*/
+	int numvertices = this->GetNumberOfVertices();
+
+	/*get gradient indices*/
+	if(onsid){
+		for(int i=0;i<numvertices;i++){
+			indexing[i]=num_controls*this->vertices[i]->Sid() + control_index;
+		}
+	}
+	else{
+		for(int i=0;i<numvertices;i++){
+			indexing[i]=num_controls*this->vertices[i]->Pid() + control_index;
+		}
+	}
+
+}
+/*}}}*/
+bool       Element::HasNodeOnBase(){/*{{{*/
+	return (this->inputs->Max(MeshVertexonbaseEnum)>0.);
+}/*}}}*/
+bool       Element::HasNodeOnSurface(){/*{{{*/
+	return (this->inputs->Max(MeshVertexonsurfaceEnum)>0.);
+}/*}}}*/
+int        Element::Id(){/*{{{*/
+
+	return this->id;
+
+}
+/*}}}*/
+void       Element::InputChangeName(int original_enum,int new_enum){/*{{{*/
+	this->inputs->ChangeEnum(original_enum,new_enum);
+}
+/*}}}*/
+void       Element::InputCreate(IssmDouble* vector,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int code){/*{{{*/
+    
+    /*Intermediaries*/
+    int        i,t;
+    IssmDouble time;
+    
+    /*Branch on type of vector: nodal or elementary: */
+    if(vector_type==1){ //nodal vector
+        
+        int         numvertices = this->GetNumberOfVertices();
+        int        *vertexids   = xNew<int>(numvertices);
+        IssmDouble *values      = xNew<IssmDouble>(numvertices);
+        
+        /*Recover vertices ids needed to initialize inputs*/
+        _assert_(iomodel->elements);
+        for(i=0;i<numvertices;i++){
+            vertexids[i]=reCast<int>(iomodel->elements[numvertices*this->Sid()+i]); //ids for vertices are in the elements array from Matlab
+        }
+        
+        /*Are we in transient or static? */
+        if(M==iomodel->numberofvertices){
+            for(i=0;i<numvertices;i++) values[i]=vector[vertexids[i]-1];
+            this->AddInput(vector_enum,values,P1Enum);
+        }
+        else if(M==iomodel->numberofvertices+1){
+            /*create transient input: */
+            IssmDouble* times = xNew<IssmDouble>(N);
+            for(t=0;t<N;t++) times[t] = vector[(M-1)*N+t];
+            TransientInput* transientinput=new TransientInput(vector_enum,times,N);
+            for(t=0;t<N;t++){
+                for(i=0;i<numvertices;i++) values[i]=vector[N*(vertexids[i]-1)+t];
+                switch(this->ObjectEnum()){
+                    case TriaEnum:  transientinput->AddTimeInput(new TriaInput( vector_enum,values,P1Enum)); break;
+                    case PentaEnum: transientinput->AddTimeInput(new PentaInput(vector_enum,values,P1Enum)); break;
+                    case TetraEnum: transientinput->AddTimeInput(new TetraInput(vector_enum,values,P1Enum)); break;
+                    default: _error_("Not implemented yet");
+                }
+            }
+            this->inputs->AddInput(transientinput);
+            xDelete<IssmDouble>(times);
+        }
+        else _error_("nodal vector is either numberofvertices or numberofvertices+1 long. Field provided (" << EnumToStringx(vector_enum) << ") is " << M << " long");
+        
+        xDelete<IssmDouble>(values);
+        xDelete<int>(vertexids);
+    }
+    else if(vector_type==2){ //element vector
+        
+        IssmDouble value;
+        
+        /*Are we in transient or static? */
+        if(M==iomodel->numberofelements){
+            if (code==5){ //boolean
+                this->inputs->AddInput(new BoolInput(vector_enum,reCast<bool>(vector[this->Sid()])));
+            }
+            else if (code==6){ //integer
+                this->inputs->AddInput(new IntInput(vector_enum,reCast<int>(vector[this->Sid()])));
+            }
+            else if (code==7){ //IssmDouble
+                this->inputs->AddInput(new DoubleInput(vector_enum,vector[this->Sid()]));
+            }
+            else _error_("could not recognize nature of vector from code " << code);
+        }
+        else if(M==iomodel->numberofelements+1){
+            /*create transient input: */
+            IssmDouble* times = xNew<IssmDouble>(N);
+            for(t=0;t<N;t++) times[t] = vector[(M-1)*N+t];
+            TransientInput* transientinput=new TransientInput(vector_enum,times,N);
+            TriaInput* bof=NULL;
+            for(t=0;t<N;t++){
+                value=vector[N*this->Sid()+t];
+                switch(this->ObjectEnum()){
+                    case TriaEnum:  transientinput->AddTimeInput(new TriaInput( vector_enum,&value,P0Enum)); break;
+                    case PentaEnum: transientinput->AddTimeInput(new PentaInput(vector_enum,&value,P0Enum)); break;
+                    case TetraEnum: transientinput->AddTimeInput(new TetraInput(vector_enum,&value,P0Enum)); break;
+                    default: _error_("Not implemented yet");
+                }
+            }
+            this->inputs->AddInput(transientinput);
+            xDelete<IssmDouble>(times);
+        }
+        else _error_("element vector is either numberofelements or numberofelements+1 long. Field provided (" << EnumToStringx(vector_enum) << ") is " << M << " long");
+    }
+    else if(vector_type==3){ //element vector
+        
+        IssmDouble value;
+        
+        /*For right now we are static */
+        if(M==iomodel->numberofelements){
+            /*create transient input: */
+            IssmDouble* layers = xNewZeroInit<IssmDouble>(N);;
+            for(t=0;t<N;t++) layers[t] = vector[N*this->Sid()+t];
+            DoubleArrayInput* arrayinput=new DoubleArrayInput(vector_enum,layers,N);
+            this->inputs->AddInput(arrayinput);
+            xDelete<IssmDouble>(layers);
+        }
+        else _error_("element vector is either numberofelements or numberofelements+1 long. Field provided (" << EnumToStringx(vector_enum) << ") is " << M << " long");
+    }
+    else _error_("Cannot add input for vector type " << vector_type << " (not supported)");
+}
+/*}}}*/
+void       Element::InputDuplicate(int original_enum,int new_enum){/*{{{*/
+
+	if(!IsInput(original_enum)) _error_("Enum "<<EnumToStringx(original_enum)<<" is not in IsInput");
+
+	/*Call inputs method*/
+	this->inputs->DuplicateInput(original_enum,new_enum);
+
+}
+/*}}}*/
+void       Element::InputUpdateFromConstant(int constant, int name){/*{{{*/
+
+	/*Check that name is an element input*/
+	if(!IsInput(name)) _error_("Enum "<<EnumToStringx(name)<<" is not in IsInput");
+
+	/*update input*/
+	this->inputs->AddInput(new IntInput(name,constant));
+}
+/*}}}*/
+void       Element::InputUpdateFromConstant(IssmDouble constant, int name){/*{{{*/
+
+	/*Check that name is an element input*/
+	if(!IsInput(name)) return;
+
+	/*update input*/
+	this->inputs->AddInput(new DoubleInput(name,constant));
+}
+/*}}}*/
+void       Element::InputUpdateFromConstant(bool constant, int name){/*{{{*/
+
+	/*Check that name is an element input*/
+	if(!IsInput(name)) return;
+
+	/*update input*/
+	this->inputs->AddInput(new BoolInput(name,constant));
+}
+/*}}}*/
+bool       Element::IsFloating(){/*{{{*/
+
+	bool shelf;
+	int  migration_style;
+	parameters->FindParam(&migration_style,GroundinglineMigrationEnum);
+
+	if(migration_style==SubelementMigrationEnum || migration_style==SubelementMigration2Enum){ //Floating if all nodes are floating
+		if(this->inputs->Max(MaskGroundediceLevelsetEnum) <= 0.) shelf=true;
+		else shelf=false;
+	}
+	else if(migration_style==ContactEnum){
+		if(this->inputs->Max(MaskGroundediceLevelsetEnum) > 0.) shelf=false;
+		else shelf=true;
+	}
+	else if(migration_style==NoneEnum || migration_style==AggressiveMigrationEnum || migration_style==SoftMigrationEnum || migration_style==GroundingOnlyEnum){ //Floating if all nodes are floating
+		if(this->inputs->Min(MaskGroundediceLevelsetEnum) > 0.) shelf=false;
+		else shelf=true;
+	}
+	else _error_("migration_style not implemented yet");
+
+	return shelf;
+}/*}}}*/
+bool       Element::IsIceInElement(){/*{{{*/
+	return (this->inputs->Min(MaskIceLevelsetEnum)<0.);
+}
+/*}}}*/
+bool       Element::IsInput(int name){/*{{{*/
+	if (
+				name==ThicknessEnum ||
+				name==SurfaceEnum ||
+				name==BaseEnum ||
+				name==BedEnum ||
+				name==BalancethicknessThickeningRateEnum ||
+				name==BalancethicknessOmegaEnum ||
+				name==SigmaNNEnum ||
+				name==SurfaceSlopeXEnum ||
+				name==SurfaceSlopeYEnum ||
+				name==SmbMassBalanceEnum ||
+				name==SmbAccumulationEnum ||
+				name==SmbRunoffEnum ||
+				name==SmbMeltEnum ||
+				name==SmbRefreezeEnum ||
+				name==SmbEvaporationEnum ||
+				name==SmbIsInitializedEnum ||
+				name==BasalforcingsGroundediceMeltingRateEnum ||
+				name==BasalforcingsFloatingiceMeltingRateEnum ||
+				name==BasalforcingsGeothermalfluxEnum ||
+				name==SurfaceAreaEnum||
+				name==DamageDEnum ||
+				name==DamageDbarEnum ||
+				name==PressureEnum ||
+				name==VxEnum ||
+				name==VyEnum ||
+				name==VzEnum ||
+				name==VxMeshEnum ||
+				name==VyMeshEnum ||
+				name==VzMeshEnum ||
+				name==InversionVxObsEnum ||
+				name==InversionVyObsEnum ||
+				name==InversionVzObsEnum ||
+				name==TemperatureEnum ||
+				name==TemperaturePDDEnum ||
+				name==EnthalpyEnum ||
+				name==EnthalpyPicardEnum ||
+				name==WaterfractionEnum||
+				name==WatercolumnEnum || 
+				name==FrictionCoefficientEnum ||
+				name==FrictionAsEnum ||
+				name==FrictionEffectivePressureEnum ||
+				name==MaskGroundediceLevelsetEnum ||
+				name==MaskIceLevelsetEnum ||
+				name==IceMaskNodeActivationEnum ||
+				name==LevelsetfunctionSlopeXEnum ||
+				name==LevelsetfunctionSlopeYEnum ||
+				name==LevelsetfunctionPicardEnum ||
+				//name==CalvingCalvingrateEnum ||
+				name==GradientEnum ||
+				name==OldGradientEnum  ||
+				name==ConvergedEnum || 
+				name==MaterialsRheologyBEnum ||
+				name==MaterialsRheologyBbarEnum ||
+				name==MaterialsRheologyNEnum ||
+				name==MaterialsRheologyKoEnum ||
+				name==MaterialsRheologyKobarEnum ||
+				name==MaterialsRheologyEcEnum ||
+				name==MaterialsRheologyEcbarEnum ||
+				name==MaterialsRheologyEsEnum ||
+				name==MaterialsRheologyEsbarEnum ||
+				name==SealevelEnum || 
+				name==SealevelUmotionEnum || 
+				name==SealevelNmotionEnum || 
+				name==SealevelEmotionEnum || 
+				name==SealevelAbsoluteEnum || 
+				name==SealevelEustaticEnum || 
+				name==SealevelriseDeltathicknessEnum || 
+				name==GiaWEnum || 
+				name==GiadWdtEnum ||
+				name==SedimentHeadEnum ||
+				name==EplHeadEnum ||
+				name==SedimentHeadOldEnum ||
+				name==EplHeadOldEnum ||
+				name==StressIntensityFactorEnum ||
+				name==StrainRateparallelEnum ||
+				name==StrainRateperpendicularEnum ||
+				name==HydrologydcEplThicknessOldEnum ||
+				name==HydrologydcEplInitialThicknessEnum ||
+				name==HydrologydcEplThicknessEnum ||
+				name==HydrologydcMaskEplactiveNodeEnum ||
+				name==HydrologyHeadEnum ||
+	         name==HydrologyHeadOldEnum ||		
+				name==StressbalanceConvergenceNumStepsEnum || 
+				name==MeshVertexonbaseEnum 
+
+				) {
+					return true;
+				}
+	else return false;
+}
+/*}}}*/
+bool       Element::IsLandInElement(){/*{{{*/
+	return (this->inputs->Max(MaskLandLevelsetEnum)>0.);
+}
+/*}}}*/
+bool       Element::IsWaterInElement(){/*{{{*/
+	return (this->inputs->Max(MaskOceanLevelsetEnum)>0.);
+}
+/*}}}*/
+void       Element::LinearFloatingiceMeltingRate(){/*{{{*/
+
+	int numvertices      = this->GetNumberOfVertices();
+	IssmDouble  deepwaterel,upperwaterel,deepwatermelt;
+	IssmDouble* base     = xNew<IssmDouble>(numvertices);
+	IssmDouble* values   = xNew<IssmDouble>(numvertices);
+
+	parameters->FindParam(&deepwaterel,BasalforcingsDeepwaterElevationEnum);
+	parameters->FindParam(&upperwaterel,BasalforcingsUpperwaterElevationEnum);
+	parameters->FindParam(&deepwatermelt,BasalforcingsDeepwaterMeltingRateEnum);
+
+	this->GetInputListOnVertices(base,BaseEnum);
+	for(int i=0;i<numvertices;i++){
+		if(base[i]>upperwaterel)      values[i]=0;
+		else if (base[i]<deepwaterel) values[i]=deepwatermelt;
+		else values[i]=deepwatermelt*(base[i]-upperwaterel)/(deepwaterel-upperwaterel);
+	}
+
+	this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,values,P1Enum);
+	xDelete<IssmDouble>(base);
+	xDelete<IssmDouble>(values);
+
+}/*}}}*/
+void       Element::MantlePlumeGeothermalFlux(){/*{{{*/
+
+	int numvertices      = this->GetNumberOfVertices();
+	IssmDouble  mantleconductivity,nusselt,dtbg,plumeradius,topplumedepth,bottomplumedepth,plumex,plumey;
+	IssmDouble  crustthickness,uppercrustthickness,uppercrustheat,lowercrustheat;
+	IssmDouble  crustheat,plumeheat,dt,middleplumedepth,a,e,eprime,A0,lambda,Alambda,dAlambda;
+	IssmDouble  x,y,z,c;
+	IssmDouble* values   = xNew<IssmDouble>(numvertices);
+	IssmDouble *xyz_list = NULL;
+
+	parameters->FindParam(&mantleconductivity,BasalforcingsMantleconductivityEnum);
+	parameters->FindParam(&nusselt,BasalforcingsNusseltEnum);
+	parameters->FindParam(&dtbg,BasalforcingsDtbgEnum);
+	parameters->FindParam(&plumeradius,BasalforcingsPlumeradiusEnum);
+	parameters->FindParam(&topplumedepth,BasalforcingsTopplumedepthEnum);
+	parameters->FindParam(&bottomplumedepth,BasalforcingsBottomplumedepthEnum);
+	parameters->FindParam(&plumex,BasalforcingsPlumexEnum);
+	parameters->FindParam(&plumey,BasalforcingsPlumeyEnum);
+	parameters->FindParam(&crustthickness,BasalforcingsCrustthicknessEnum);
+	parameters->FindParam(&uppercrustthickness,BasalforcingsUppercrustthicknessEnum);
+	parameters->FindParam(&uppercrustheat,BasalforcingsUppercrustheatEnum);
+	parameters->FindParam(&lowercrustheat,BasalforcingsLowercrustheatEnum);
+
+	this->GetVerticesCoordinates(&xyz_list);
+	c=plumeradius;
+	a=(bottomplumedepth-topplumedepth)/2.;
+	e=pow(a*a-c*c,1./2.)/a;
+	A0=(1-pow(e,2.))/pow(e,3.)*(1./2.*log((1+e)/(1-e))-e);
+	for(int i=0;i<numvertices;i++){
+		y=xyz_list[i*3+0]-plumex;
+		z=xyz_list[i*3+1]-plumey;
+		x=-(a+topplumedepth+crustthickness);
+		lambda=(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2)))))/2;
+		dAlambda=(-8*a*pow(c,2)*x*(-2*pow(a,2)+2*pow(c,2)+sqrt(2)*sqrt((a-c)*(a+c))*sqrt(pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2))))))*(pow(a,4)*(pow(y,2)+pow(z,2))+pow(c,4)*(pow(y,2)+pow(z,2))+pow(pow(x,2)+pow(y,2)+pow(z,2),2)*(pow(x,2)+pow(y,2)+pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2)))))+pow(c,2)*(pow(x,4)-pow(x,2)*(pow(y,2)+pow(z,2))-(pow(y,2)+pow(z,2))*(2*pow(y,2)+2*pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2))))))+pow(a,2)*(-pow(x,4)+pow(x,2)*(pow(y,2)+pow(z,2))+(pow(y,2)+pow(z,2))*(-2*pow(c,2)+2*(pow(y,2)+pow(z,2))+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2))))))))/(sqrt((a-c)*(a+c))*sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2))))*pow(pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2)))),3.5)*pow(-(sqrt(2)*sqrt((a-c)*(a+c)))+sqrt(pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2))))),2)*(sqrt(2)*sqrt((a-c)*(a+c))+sqrt(pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2)))))));
+		eprime=pow((a*a-plumeradius*plumeradius)/(a*a+lambda),1./2.);
+		Alambda=(1.-e*e)/(e*e*e)*(1./2.*log((1.+eprime)/(1.-eprime))-eprime);
+		dt=dtbg-(nusselt-1.)/(1.+A0*(nusselt-1.))*(Alambda*dtbg+x*dtbg*dAlambda);
+		plumeheat=mantleconductivity*dt;
+		crustheat=uppercrustheat*uppercrustthickness+lowercrustheat*(crustthickness-uppercrustthickness);
+		values[i]=crustheat+plumeheat;
+	}
+
+	this->AddInput(BasalforcingsGeothermalfluxEnum,values,P1Enum);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(values);
+
+}/*}}}*/
+void       Element::MarshallElement(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction,int numanalyses){/*{{{*/
+	
+	_assert_(this);
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		inputs=new Inputs();
+		nodes = NULL;
+	}
+
+	MARSHALLING_ENUM(ElementEnum);
+	
+	MARSHALLING(id);
+	MARSHALLING(sid);
+	MARSHALLING(element_type);
+	MARSHALLING_DYNAMIC(element_type_list,int,numanalyses);
+	inputs->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+}
+/*}}}*/
+void       Element::MigrateGroundingLine(IssmDouble* phi_ungrounding){/*{{{*/
+
+	int         numvertices = this->GetNumberOfVertices();
+	int        i,migration_style;
+	IssmDouble bed_hydro,yts;
+	IssmDouble rho_water,rho_ice,density;
+	IssmDouble* melting = xNew<IssmDouble>(numvertices);
+	IssmDouble* phi     = xNew<IssmDouble>(numvertices);
+	IssmDouble* h       = xNew<IssmDouble>(numvertices);
+	IssmDouble* s       = xNew<IssmDouble>(numvertices);
+	IssmDouble* b       = xNew<IssmDouble>(numvertices);
+	IssmDouble* r       = xNew<IssmDouble>(numvertices);
+	IssmDouble* sl      = xNew<IssmDouble>(numvertices);
+
+	/*Recover info at the vertices: */
+	parameters->FindParam(&migration_style,GroundinglineMigrationEnum);
+	parameters->FindParam(&yts,ConstantsYtsEnum);
+	GetInputListOnVertices(&h[0],ThicknessEnum);
+	GetInputListOnVertices(&s[0],SurfaceEnum);
+	GetInputListOnVertices(&b[0],BaseEnum);
+	GetInputListOnVertices(&r[0],BedEnum);
+	GetInputListOnVertices(&sl[0],SealevelEnum);
+	GetInputListOnVertices(&phi[0],MaskGroundediceLevelsetEnum);
+	rho_water   = matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	rho_ice     = matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	density     = rho_ice/rho_water;
+
+	/*go through vertices, and update inputs, considering them to be TriaVertex type: */
+	for(i=0;i<numvertices;i++){
+		/* Contact FS*/
+		if(migration_style == ContactEnum && phi_ungrounding[vertices[i]->Pid()]<10){
+			phi[i]=phi_ungrounding[vertices[i]->Pid()]; 
+			if(phi[i]>=0.) b[i]=r[i];
+		}
+		else if(migration_style == GroundingOnlyEnum && b[i]<r[i]) b[i]=r[i];
+		/*Ice shelf: if bed below bathymetry, impose it at the bathymetry and update surface, elso do nothing */
+		else if(phi[i]<=0.){
+			if(b[i]<=r[i]){ 
+				b[i]        = r[i];
+				s[i]        = b[i]+h[i];
+			}
+		}
+		/*Ice sheet: if hydrostatic bed above bathymetry, ice sheet starts to unground, elso do nothing */
+		/*Change only if AggressiveMigration or if the ice sheet is in contact with the ocean*/
+		else{ // phi>0
+			bed_hydro=-density*h[i]+sl[i];
+			if (bed_hydro>r[i]){
+				/*Unground only if the element is connected to the ice shelf*/
+				if(migration_style==AggressiveMigrationEnum || migration_style==SubelementMigrationEnum || migration_style==SubelementMigration2Enum){
+					s[i]        = (1-density)*h[i]+sl[i];
+					b[i]        = -density*h[i]+sl[i];
+				}
+				else if(migration_style==SoftMigrationEnum && phi_ungrounding[vertices[i]->Pid()]<0.){
+					s[i]        = (1-density)*h[i]+sl[i];
+					b[i]        = -density*h[i]+sl[i];
+				}
+				else{
+					if(migration_style!=SoftMigrationEnum && migration_style!=ContactEnum && migration_style!=GroundingOnlyEnum) _error_("Error: migration should be Aggressive, Soft, Subelement, Contact or GroundingOnly");
+				}
+			}
+		}
+	}
+
+	/*Recalculate phi*/
+	for(i=0;i<numvertices;i++){
+		if(migration_style==SoftMigrationEnum){
+			bed_hydro=-density*h[i]+sl[i];
+			if(phi[i]<0. || bed_hydro<=r[i] || phi_ungrounding[vertices[i]->Pid()]<0.){
+				phi[i]=h[i]+(r[i]-sl[i])/density;
+			}
+		}
+		else if(migration_style!=ContactEnum) phi[i]=h[i]+(r[i]-sl[i])/density;
+		else{
+			/*do nothing*/
+		}
+	}
+	this->AddInput(MaskGroundediceLevelsetEnum,&phi[0],P1Enum);
+
+	/*Update inputs*/
+	this->AddInput(SurfaceEnum,&s[0],P1Enum);
+	this->AddInput(BaseEnum,&b[0],P1Enum);
+
+	/*Delete*/
+	xDelete<IssmDouble>(melting);
+	xDelete<IssmDouble>(phi);
+	xDelete<IssmDouble>(r);
+	xDelete<IssmDouble>(b);
+	xDelete<IssmDouble>(s);
+	xDelete<IssmDouble>(sl);
+	xDelete<IssmDouble>(h);
+
+}
+/*}}}*/
+void       Element::MismipFloatingiceMeltingRate(){/*{{{*/
+
+	int numvertices      = this->GetNumberOfVertices();
+	IssmDouble  meltratefactor,thresholdthickness,upperdepthmelt;
+	IssmDouble* base     = xNew<IssmDouble>(numvertices);
+	IssmDouble* bed      = xNew<IssmDouble>(numvertices);
+	IssmDouble* values   = xNew<IssmDouble>(numvertices);
+
+	parameters->FindParam(&meltratefactor,BasalforcingsMeltrateFactorEnum);
+	parameters->FindParam(&thresholdthickness,BasalforcingsThresholdThicknessEnum);
+	parameters->FindParam(&upperdepthmelt,BasalforcingsUpperdepthMeltEnum);
+
+	this->GetInputListOnVertices(base,BaseEnum);
+	this->GetInputListOnVertices(bed,BedEnum);
+	for(int i=0;i<numvertices;i++){
+		if(base[i]>upperdepthmelt){
+			values[i]=0;
+		}
+		else{
+			values[i]=meltratefactor*tanh((base[i]-bed[i])/thresholdthickness)*(upperdepthmelt-base[i]);
+		}
+	}
+
+	this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,values,P1Enum);
+	xDelete<IssmDouble>(base);
+	xDelete<IssmDouble>(bed);
+	xDelete<IssmDouble>(values);
+
+}/*}}}*/
+void       Element::MungsmtpParameterization(void){/*{{{*/
+	/*Are we on the base? If not, return*/
+	if(!IsOnBase()) return;
+
+	int        numvertices = this->GetNumberOfVertices();
+
+	int        i;
+	IssmDouble* monthlytemperatures=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* monthlyprec=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* TemperaturesPresentday=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* TemperaturesLgm=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* PrecipitationsPresentday=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* PrecipitationsLgm=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* tmp=xNew<IssmDouble>(numvertices);
+	IssmDouble TdiffTime,PfacTime;
+	IssmDouble time,yts,time_yr;
+	this->parameters->FindParam(&time,TimeEnum);
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+	time_yr=floor(time/yts)*yts;
+
+	/*Recover present day temperature and precipitation*/
+	Input*     input=this->inputs->GetInput(SmbTemperaturesPresentdayEnum);    _assert_(input);
+	Input*     input2=this->inputs->GetInput(SmbTemperaturesLgmEnum);          _assert_(input2);
+	Input*     input3=this->inputs->GetInput(SmbPrecipitationsPresentdayEnum); _assert_(input3);
+	Input*     input4=this->inputs->GetInput(SmbPrecipitationsLgmEnum);        _assert_(input4);
+	/*loop over vertices: */
+	Gauss* gauss=this->NewGauss();
+	for(int month=0;month<12;month++) {
+		for(int iv=0;iv<numvertices;iv++) {
+			gauss->GaussVertex(iv);
+			input->GetInputValue(&TemperaturesPresentday[iv*12+month],gauss,month/12.*yts);
+			input2->GetInputValue(&TemperaturesLgm[iv*12+month],gauss,month/12.*yts);
+			input3->GetInputValue(&PrecipitationsPresentday[iv*12+month],gauss,month/12.*yts);
+			input4->GetInputValue(&PrecipitationsLgm[iv*12+month],gauss,month/12.*yts);
+
+			PrecipitationsPresentday[iv*12+month]=PrecipitationsPresentday[iv*12+month]*yts;
+			PrecipitationsLgm[iv*12+month]=PrecipitationsLgm[iv*12+month]*yts;
+		}
+	}
+
+	/*Recover interpolation parameters at time t*/
+	this->parameters->FindParam(&TdiffTime,SmbTdiffEnum,time);
+	this->parameters->FindParam(&PfacTime,SmbPfacEnum,time);
+
+	/*Compute the temperature and precipitation*/
+	for(int iv=0;iv<numvertices;iv++){
+		ComputeMungsmTemperaturePrecipitation(TdiffTime,PfacTime,
+					&PrecipitationsLgm[iv*12],&PrecipitationsPresentday[iv*12],
+					&TemperaturesLgm[iv*12], &TemperaturesPresentday[iv*12],
+					&monthlytemperatures[iv*12], &monthlyprec[iv*12]);
+	}
+
+	/*Update inputs*/
+	TransientInput* NewTemperatureInput = new TransientInput(SmbMonthlytemperaturesEnum);
+	TransientInput* NewPrecipitationInput = new TransientInput(SmbPrecipitationEnum);
+	for (int imonth=0;imonth<12;imonth++) {
+		for(i=0;i<numvertices;i++) tmp[i]=monthlytemperatures[i*12+imonth];
+		switch(this->ObjectEnum()){
+			case TriaEnum:  NewTemperatureInput->AddTimeInput(new TriaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case PentaEnum: NewTemperatureInput->AddTimeInput(new PentaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TetraEnum: NewTemperatureInput->AddTimeInput(new TetraInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			default: _error_("Not implemented yet");
+		}
+		for(i=0;i<numvertices;i++) tmp[i]=monthlyprec[i*12+imonth]/yts;
+		switch(this->ObjectEnum()){
+			case TriaEnum:  NewPrecipitationInput->AddTimeInput(new TriaInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case PentaEnum: NewPrecipitationInput->AddTimeInput(new PentaInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TetraEnum: NewPrecipitationInput->AddTimeInput(new TetraInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			default: _error_("Not implemented yet");
+		}
+	}
+	NewTemperatureInput->Configure(this->parameters);
+	NewPrecipitationInput->Configure(this->parameters);
+
+	this->inputs->AddInput(NewTemperatureInput);
+	this->inputs->AddInput(NewPrecipitationInput);
+
+	switch(this->ObjectEnum()){
+		case TriaEnum: break;
+		case PentaEnum:
+		case TetraEnum:
+							this->InputExtrude(SmbMonthlytemperaturesEnum,-1);
+							this->InputExtrude(SmbPrecipitationEnum,-1);
+							break;
+		default: _error_("Not implemented yet");
+	}
+
+	/*clean-up*/
+	delete gauss;
+	xDelete<IssmDouble>(monthlytemperatures);
+	xDelete<IssmDouble>(monthlyprec);
+	xDelete<IssmDouble>(TemperaturesPresentday);
+	xDelete<IssmDouble>(TemperaturesLgm);
+	xDelete<IssmDouble>(PrecipitationsPresentday);
+	xDelete<IssmDouble>(PrecipitationsLgm);
+	xDelete<IssmDouble>(tmp);
+
+}
+/*}}}*/
+ElementMatrix* Element::NewElementMatrix(int approximation_enum){/*{{{*/
+	return new ElementMatrix(nodes,this->GetNumberOfNodes(),this->parameters,approximation_enum);
+}
+/*}}}*/
+ElementMatrix* Element::NewElementMatrixCoupling(int number_nodes,int approximation_enum){/*{{{*/
+	return new ElementMatrix(nodes,number_nodes,this->parameters,approximation_enum);
+}
+/*}}}*/
+ElementVector* Element::NewElementVector(int approximation_enum){/*{{{*/
+	return new ElementVector(nodes,this->GetNumberOfNodes(),this->parameters,approximation_enum);
+}
+/*}}}*/
+void       Element::PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm){/*{{{*/
+
+	int  numvertices = this->GetNumberOfVertices();
+
+	int        i;
+	IssmDouble* agd=xNew<IssmDouble>(numvertices); // surface mass balance
+	IssmDouble* melt=xNew<IssmDouble>(numvertices); // surface mass balance
+	IssmDouble* accu=xNew<IssmDouble>(numvertices); // surface mass balance
+	IssmDouble* monthlytemperatures=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* monthlyprec=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* yearlytemperatures=xNew<IssmDouble>(numvertices); memset(yearlytemperatures, 0., numvertices*sizeof(IssmDouble));
+	IssmDouble* tmp=xNew<IssmDouble>(numvertices);
+	IssmDouble* h=xNew<IssmDouble>(numvertices);
+	IssmDouble* s=xNew<IssmDouble>(numvertices);
+	IssmDouble* s0p=xNew<IssmDouble>(numvertices);
+	IssmDouble* s0t=xNew<IssmDouble>(numvertices);
+	IssmDouble rho_water,rho_ice,desfac,rlaps,rlapslgm;
+	IssmDouble PfacTime,TdiffTime,sealevTime;
+	IssmDouble mavg=1./12.; //factor for monthly average
+
+	/*Get material parameters :*/
+	rho_water=this->matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	rho_ice=this->matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+
+	/*Get some pdd parameters*/
+	desfac=this->matpar->GetMaterialParameter(SmbDesfacEnum);
+	rlaps=this->matpar->GetMaterialParameter(SmbRlapsEnum);
+	rlapslgm=this->matpar->GetMaterialParameter(SmbRlapslgmEnum);
+
+	/*Recover monthly temperatures and precipitation and compute the yearly mean temperatures*/
+	Input*     input=this->inputs->GetInput(SmbMonthlytemperaturesEnum); _assert_(input);
+	Input*     input2=this->inputs->GetInput(SmbPrecipitationEnum); _assert_(input2);
+	IssmDouble time,yts,time_yr;
+	this->parameters->FindParam(&time,TimeEnum);
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+	time_yr=floor(time/yts)*yts;
+
+	/*loop over vertices: */
+	Gauss* gauss=this->NewGauss();
+	for(int month=0;month<12;month++) {
+		for(int iv=0;iv<numvertices;iv++) {
+			gauss->GaussVertex(iv);
+			input->GetInputValue(&monthlytemperatures[iv*12+month],gauss,time_yr+month/12.*yts);
+			// yearlytemperatures[iv]=yearlytemperatures[iv]+monthlytemperatures[iv*12+month]*mavg; // Has to be in Kelvin
+			monthlytemperatures[iv*12+month]=monthlytemperatures[iv*12+month]-273.15; // conversion from Kelvin to celcius for PDD module
+			input2->GetInputValue(&monthlyprec[iv*12+month],gauss,time_yr+month/12.*yts);
+			monthlyprec[iv*12+month]=monthlyprec[iv*12+month]*yts;
+		}
+	}
+
+	/*Recover Pfac, Tdiff and sealev at time t:
+	 *     This parameters are used to interpolate the temperature
+	 *         and precipitaton between PD and LGM when ismungsm==1 */
+	if (ismungsm==1){
+		this->parameters->FindParam(&TdiffTime,SmbTdiffEnum,time);
+		this->parameters->FindParam(&sealevTime,SmbSealevEnum,time);
+	}
+	else {
+		TdiffTime=0;
+		sealevTime=0;
+	}
+
+	/*Recover info at the vertices: */
+	GetInputListOnVertices(&h[0],ThicknessEnum);
+	GetInputListOnVertices(&s[0],SurfaceEnum);
+	GetInputListOnVertices(&s0p[0],SmbS0pEnum);
+	GetInputListOnVertices(&s0t[0],SmbS0tEnum);
+
+	/*measure the surface mass balance*/
+	for (int iv = 0; iv<numvertices; iv++){
+		agd[iv]=PddSurfaceMassBalance(&monthlytemperatures[iv*12], &monthlyprec[iv*12],
+					pdds, pds, &melt[iv], &accu[iv], signorm, yts, h[iv], s[iv],
+					desfac, s0t[iv], s0p[iv],rlaps,rlapslgm,TdiffTime,sealevTime,
+					rho_water,rho_ice);
+	/*Get yearlytemperatures */
+		for(int month=0;month<12;month++) {
+		  yearlytemperatures[iv]=yearlytemperatures[iv]+(monthlytemperatures[iv*12+month]+273.15)*mavg; // Has to be in Kelvin
+		}
+	}
+
+	/*Update inputs*/
+	// TransientInput* NewTemperatureInput = new TransientInput(SmbMonthlytemperaturesEnum);
+	// TransientInput* NewPrecipitationInput = new TransientInput(SmbPrecipitationEnum);
+	// for (int imonth=0;imonth<12;imonth++) {
+	//   for(i=0;i<numvertices;i++) tmp[i]=monthlytemperatures[i*12+imonth];
+	//   TriaInput* newmonthinput1 = new TriaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum);
+	//   NewTemperatureInput->AddTimeInput(newmonthinput1,time+imonth/12.*yts);
+	//
+	//   for(i=0;i<numvertices;i++) tmp[i]=monthlyprec[i*12+imonth]/yts;
+	//   TriaInput* newmonthinput2 = new TriaInput(SmbPrecipitationEnum,&tmp[0],P1Enum);
+	//   NewPrecipitationInput->AddTimeInput(newmonthinput2,time+imonth/12.*yts);
+	// }
+	// NewTemperatureInput->Configure(this->parameters);
+	// NewPrecipitationInput->Configure(this->parameters);
+
+	switch(this->ObjectEnum()){
+		case TriaEnum:  
+		        // this->inputs->AddInput(new TriaInput(TemperatureEnum,&yearlytemperatures[0],P1Enum));
+		        this->inputs->AddInput(new TriaInput(TemperaturePDDEnum,&yearlytemperatures[0],P1Enum));
+			this->inputs->AddInput(new TriaInput(SmbMassBalanceEnum,&agd[0],P1Enum));
+			this->inputs->AddInput(new TriaInput(SmbAccumulationEnum,&accu[0],P1Enum));
+			this->inputs->AddInput(new TriaInput(SmbMeltEnum,&melt[0],P1Enum));
+			break;
+		case PentaEnum:
+		        if(IsOnSurface()){
+		              GetInputListOnVertices(&s[0],TemperatureEnum);
+		              yearlytemperatures[0] = s[0];
+		              yearlytemperatures[1] = s[1];
+		              yearlytemperatures[2] = s[2];
+		              this->inputs->AddInput(new PentaInput(TemperatureEnum,&yearlytemperatures[0],P1Enum));
+		        }
+		        this->inputs->AddInput(new PentaInput(SmbMassBalanceEnum,&agd[0],P1Enum));
+		        this->inputs->AddInput(new PentaInput(TemperaturePDDEnum,&yearlytemperatures[0],P1Enum));
+		        this->InputExtrude(TemperaturePDDEnum,-1);
+		        this->InputExtrude(SmbMassBalanceEnum,-1);
+		        break;
+		case TetraEnum: 
+		        if(IsOnSurface()){
+		              GetInputListOnVertices(&s[0],TemperatureEnum);
+		              yearlytemperatures[0] = s[0];
+		              yearlytemperatures[1] = s[1];
+		              yearlytemperatures[2] = s[2];
+		              this->inputs->AddInput(new TetraInput(TemperatureEnum,&yearlytemperatures[0],P1Enum));
+		        }
+		        this->inputs->AddInput(new TetraInput(SmbMassBalanceEnum,&agd[0],P1Enum));
+		        this->inputs->AddInput(new TetraInput(TemperaturePDDEnum,&yearlytemperatures[0],P1Enum));
+		        this->InputExtrude(TemperaturePDDEnum,-1);
+		        this->InputExtrude(SmbMassBalanceEnum,-1);
+		        break;
+		default: _error_("Not implemented yet");
+	}
+	// this->inputs->AddInput(NewTemperatureInput);
+	// this->inputs->AddInput(NewPrecipitationInput);
+	// this->inputs->AddInput(new TriaVertexInput(ThermalSpcTemperatureEnum,&Tsurf[0]));
+
+	//this->InputExtrude(SmbMassBalanceEnum,-1);
+	// this->InputExtrude(SmbMonthlytemperaturesEnum,-1);
+	// this->InputExtrude(SmbPrecipitationEnum,-1);
+
+	/*clean-up*/
+	delete gauss;
+	xDelete<IssmDouble>(monthlytemperatures);
+	xDelete<IssmDouble>(monthlyprec);
+	xDelete<IssmDouble>(agd);
+	xDelete<IssmDouble>(melt);
+	xDelete<IssmDouble>(accu);
+	xDelete<IssmDouble>(yearlytemperatures);
+	xDelete<IssmDouble>(h);
+	xDelete<IssmDouble>(s);
+	xDelete<IssmDouble>(s0t);
+	xDelete<IssmDouble>(s0p);
+	xDelete<IssmDouble>(tmp);
+
+}
+/*}}}*/
+IssmDouble Element::PureIceEnthalpy(IssmDouble pressure){/*{{{*/
+	return this->matpar->PureIceEnthalpy(pressure);
+}/*}}}*/
+void       Element::ResultInterpolation(int* pinterpolation,int* pnodesperelement,int* parray_size, int output_enum){/*{{{*/
+
+	/*Some intputs need to be computed, even if they are already in inputs, they might not be up to date!*/
+	switch(output_enum){
+		case ViscousHeatingEnum: this->ViscousHeatingCreateInput(); break;
+		case StressMaxPrincipalEnum: this->StressMaxPrincipalCreateInput(); break;
+		case StressTensorxxEnum: 
+		case StressTensorxyEnum: 
+		case StressTensorxzEnum: 
+		case StressTensoryyEnum: 
+		case StressTensoryzEnum: 
+		case StressTensorzzEnum: this->ComputeStressTensor(); break;
+		case StrainRatexxEnum:
+		case StrainRatexyEnum:
+		case StrainRatexzEnum:
+		case StrainRateyyEnum:
+		case StrainRateyzEnum:
+		case StrainRatezzEnum:
+		case StrainRateeffectiveEnum: this->ComputeStrainRate(); break;
+		case DeviatoricStressxxEnum: 
+		case DeviatoricStressxyEnum: 
+		case DeviatoricStressxzEnum: 
+		case DeviatoricStressyyEnum: 
+		case DeviatoricStressyzEnum: 
+		case DeviatoricStresszzEnum: 
+		case DeviatoricStresseffectiveEnum: this->ComputeDeviatoricStressTensor(); break;
+		case SigmaNNEnum: this->ComputeSigmaNN(); break;
+		case LambdaSEnum: this->ComputeLambdaS(); break;
+		case NewDamageEnum: this->ComputeNewDamage(); break;
+		case StressIntensityFactorEnum: this->StressIntensityFactor(); break;
+		case CalvingratexEnum:
+		case CalvingrateyEnum:
+		case CalvingCalvingrateEnum:
+			this->StrainRateparallel();
+			this->StrainRateperpendicular();
+			int calvinglaw;
+			this->FindParam(&calvinglaw,CalvingLawEnum);
+			switch(calvinglaw){
+				case DefaultCalvingEnum:
+					//do nothing
+					break;
+				case CalvingLevermannEnum:
+					this->CalvingRateLevermann();
+					break;
+				case CalvingDevEnum:
+					this->CalvingRateDev();
+					break;
+				default:
+					_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+			}
+			break;
+		case StrainRateparallelEnum: this->StrainRateparallel(); break;
+		case StrainRateperpendicularEnum: this->StrainRateperpendicular(); break;
+	}
+
+	/*Find input*/
+	Input* input=this->inputs->GetInput(output_enum);
+
+	/*If this input is not already in Inputs, maybe it needs to be computed?*/
+	if(!input) _error_("input "<<EnumToStringx(output_enum)<<" not found in element");
+
+	/*Assign output pointer*/
+	*pinterpolation   = input->GetResultInterpolation();
+	*pnodesperelement = input->GetResultNumberOfNodes();
+	*parray_size      = input->GetResultArraySize();
+}/*}}}*/
+void       Element::ResultToPatch(IssmDouble* values,int nodesperelement,int output_enum){/*{{{*/
+
+	Input* input=this->inputs->GetInput(output_enum);
+	if(!input) _error_("input "<<EnumToStringx(output_enum)<<" not found in element");
+
+	input->ResultToPatch(values,nodesperelement,this->Sid());
+
+} /*}}}*/
+void       Element::ResultToMatrix(IssmDouble* values,int ncols,int output_enum){/*{{{*/
+
+	Input* input=this->inputs->GetInput(output_enum);
+	if(!input) _error_("input "<<EnumToStringx(output_enum)<<" not found in element");
+
+	input->ResultToMatrix(values,ncols,this->Sid());
+
+} /*}}}*/
+void       Element::ResultToVector(Vector<IssmDouble>* vector,int output_enum){/*{{{*/
+
+	Input* input=this->inputs->GetInput(output_enum);
+	if(!input) _error_("input "<<EnumToStringx(output_enum)<<" not found in element");
+
+	switch(input->GetResultInterpolation()){
+		case P0Enum:{
+			IssmDouble  value;
+			bool        bvalue;
+			Input*      input = this->GetInput(output_enum); _assert_(input);
+			switch(input->ObjectEnum()){
+				case DoubleInputEnum:
+					input->GetInputValue(&value);
+					break;
+				case BoolInputEnum:
+					input->GetInputValue(&bvalue);
+					value=reCast<IssmDouble>(bvalue);
+					break;
+				default:
+					Gauss* gauss = this->NewGauss();
+					input->GetInputValue(&value,gauss);
+					delete gauss;
+			}
+			vector->SetValue(this->Sid(),value,INS_VAL);
+			break;
+		}
+		case P1Enum:{
+			int         numvertices = this->GetNumberOfVertices();
+			IssmDouble *values      = xNew<IssmDouble>(numvertices);
+			int        *connectivity= xNew<int>(numvertices);
+			int        *sidlist     = xNew<int>(numvertices);
+
+			this->GetVerticesSidList(sidlist);
+			this->GetVerticesConnectivityList(connectivity);
+			this->GetInputListOnVertices(values,output_enum);
+			for(int i=0;i<numvertices;i++) values[i] = values[i]/reCast<IssmDouble>(connectivity[i]);
+
+			vector->SetValues(numvertices,sidlist,values,ADD_VAL);
+
+			xDelete<IssmDouble>(values);
+			xDelete<int>(connectivity);
+			xDelete<int>(sidlist);
+			break;
+		}
+		default:
+					 _error_("interpolation "<<EnumToStringx(input->GetResultInterpolation())<<" not supported yet");
+	}
+} /*}}}*/
+void       Element::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
+
+	/*Intermediaries*/
+	const int numnodes = this->GetNumberOfNodes();
+
+	/*Output */
+	int d_nz = 0;
+	int o_nz = 0;
+
+	/*Loop over all nodes*/
+	for(int i=0;i<numnodes;i++){
+
+		if(!flags[this->nodes[i]->Lid()]){
+
+			/*flag current node so that no other element processes it*/
+			flags[this->nodes[i]->Lid()]=true;
+
+			int counter=0;
+			while(flagsindices[counter]>=0) counter++;
+			flagsindices[counter]=this->nodes[i]->Lid();
+
+			/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
+			switch(set2_enum){
+				case FsetEnum:
+					if(nodes[i]->indexing.fsize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case GsetEnum:
+					if(nodes[i]->indexing.gsize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case SsetEnum:
+					if(nodes[i]->indexing.ssize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				default: _error_("not supported");
+			}
+		}
+	}
+
+	/*Special case: 2d/3d coupling, the node of this element might be connected
+	 *to the basal element*/
+	int analysis_type,approximation,numlayers;
+	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+	if(analysis_type==StressbalanceAnalysisEnum){
+		inputs->GetInputValue(&approximation,ApproximationEnum);
+		if(approximation==SSAHOApproximationEnum || approximation==SSAFSApproximationEnum){
+			parameters->FindParam(&numlayers,MeshNumberoflayersEnum);
+			o_nz += numlayers*3;
+			d_nz += numlayers*3;
+		}
+	}
+
+	/*Assign output pointers: */
+	*pd_nz=d_nz;
+	*po_nz=o_nz;
+}
+/*}}}*/
+int        Element::Sid(){/*{{{*/
+
+	return this->sid;
+
+}
+/*}}}*/
+void       Element::SmbGemb(){/*{{{*/
+
+	/*Intermediary variables: {{{*/
+	IssmDouble isinitialized;
+	IssmDouble zTop,dzTop,zMax,zMin,zY,dzMin;
+	IssmDouble Tmean; 
+	IssmDouble C; 
+	IssmDouble Tz,Vz; 
+	IssmDouble rho_ice, rho_water,aSnow,aIce;
+	IssmDouble time,dt;
+	IssmDouble t,smb_dt;
+	IssmDouble yts;
+	IssmDouble Ta,V,dlw,dsw,P,eAir,pAir;
+	int        aIdx=0;
+	int        denIdx=0;
+	int        swIdx=0;
+	IssmDouble cldFrac,t0wet, t0dry, K;
+	IssmDouble ulw;
+	IssmDouble netSW;
+	IssmDouble netLW;
+	IssmDouble lhf, shf, dayEC;
+	IssmDouble initMass;
+	IssmDouble sumR, sumM, sumEC, sumP, sumW,sumMassAdd;
+	IssmDouble sumdz_add;
+	IssmDouble sumMass,dMass;
+	bool isgraingrowth,isalbedo,isshortwave,isthermal,isaccumulation,ismelt,isdensification,isturbulentflux;
+	IssmDouble init_scaling;
+
+	/*}}}*/
+	/*Output variables:{{{ */
+	IssmDouble* dz=NULL;
+	IssmDouble* d = NULL;
+	IssmDouble* re = NULL;
+	IssmDouble* gdn = NULL;
+	IssmDouble* gsp = NULL;
+	IssmDouble  EC = 0;
+	IssmDouble* W = NULL;
+	IssmDouble* a = NULL;
+	IssmDouble* swf=NULL;
+	IssmDouble* T = NULL;
+	IssmDouble  T_bottom;
+	IssmDouble  M;
+	IssmDouble  R; 
+	IssmDouble  mAdd;
+	IssmDouble  dz_add;
+    
+	IssmDouble* dzini=NULL;
+	IssmDouble* dini = NULL;
+	IssmDouble* reini = NULL;
+	IssmDouble* gdnini = NULL;
+	IssmDouble* gspini = NULL;
+	IssmDouble* Wini = NULL;
+	IssmDouble* aini = NULL;
+	IssmDouble* Tini = NULL;
+    
+	int         m;
+	int         count=0;
+	/*}}}*/
+
+	/*only compute SMB at the surface: */
+	if (!IsOnSurface()) return;
+
+
+	/*Retrieve material properties and parameters:{{{ */
+	rho_ice = matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	rho_water = matpar->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	parameters->FindParam(&aSnow,SmbASnowEnum);
+	parameters->FindParam(&aIce,SmbAIceEnum);
+	parameters->FindParam(&time,TimeEnum);                        /*transient core time at which we run the smb core*/
+	parameters->FindParam(&dt,TimesteppingTimeStepEnum);          /*transient core time step*/
+	parameters->FindParam(&yts,ConstantsYtsEnum);
+	parameters->FindParam(&smb_dt,SmbDtEnum);                     /*time period for the smb solution,  usually smaller than the glaciological dt*/
+	parameters->FindParam(&aIdx,SmbAIdxEnum);
+	parameters->FindParam(&denIdx,SmbDenIdxEnum);
+	parameters->FindParam(&swIdx,SmbSwIdxEnum);
+	parameters->FindParam(&cldFrac,SmbCldFracEnum);
+	parameters->FindParam(&t0wet,SmbT0wetEnum);
+	parameters->FindParam(&t0dry,SmbT0dryEnum);
+	parameters->FindParam(&K,SmbKEnum);
+	parameters->FindParam(&isgraingrowth,SmbIsgraingrowthEnum);
+	parameters->FindParam(&isalbedo,SmbIsalbedoEnum);
+	parameters->FindParam(&isshortwave,SmbIsshortwaveEnum);
+	parameters->FindParam(&isthermal,SmbIsthermalEnum);
+	parameters->FindParam(&isaccumulation,SmbIsaccumulationEnum);
+	parameters->FindParam(&ismelt,SmbIsmeltEnum);
+	parameters->FindParam(&isdensification,SmbIsdensificationEnum);
+	parameters->FindParam(&isturbulentflux,SmbIsturbulentfluxEnum);
+	parameters->FindParam(&init_scaling,SmbInitDensityScalingEnum);
+    
+	/*}}}*/
+	/*Retrieve inputs: {{{*/
+	Input* zTop_input=this->GetInput(SmbZTopEnum); _assert_(zTop_input); 
+	Input* dzTop_input=this->GetInput(SmbDzTopEnum); _assert_(dzTop_input); 
+	Input* dzMin_input=this->GetInput(SmbDzMinEnum); _assert_(dzMin_input); 
+	Input* zMax_input=this->GetInput(SmbZMaxEnum); _assert_(zMax_input); 
+	Input* zMin_input=this->GetInput(SmbZMinEnum); _assert_(zMin_input); 
+	Input* zY_input=this->GetInput(SmbZYEnum); _assert_(zY_input); 
+	Input* Tmean_input=this->GetInput(SmbTmeanEnum); _assert_(Tmean_input);
+	Input* C_input=this->GetInput(SmbCEnum); _assert_(C_input);
+	Input* Tz_input=this->GetInput(SmbTzEnum); _assert_(Tz_input);
+	Input* Vz_input=this->GetInput(SmbVzEnum); _assert_(Vz_input);
+	Input* Ta_input=this->GetInput(SmbTaEnum); _assert_(Ta_input);
+	Input* V_input=this->GetInput(SmbVEnum); _assert_(V_input);
+	Input* Dlwr_input=this->GetInput(SmbDlwrfEnum); _assert_(Dlwr_input);
+	Input* Dswr_input=this->GetInput(SmbDswrfEnum); _assert_(Dswr_input);
+	Input* P_input=this->GetInput(SmbPEnum); _assert_(P_input);
+	Input* eAir_input=this->GetInput(SmbEAirEnum); _assert_(eAir_input);
+	Input* pAir_input=this->GetInput(SmbPAirEnum); _assert_(pAir_input);
+	Input* isinitialized_input=this->GetInput(SmbIsInitializedEnum); _assert_(isinitialized_input);
+	/*Retrieve input values:*/
+	Gauss* gauss=this->NewGauss(1); gauss->GaussPoint(0);
+
+	zTop_input->GetInputValue(&zTop,gauss);
+	dzTop_input->GetInputValue(&dzTop,gauss);
+	dzMin_input->GetInputValue(&dzMin,gauss);
+	zMax_input->GetInputValue(&zMax,gauss); 
+	zMin_input->GetInputValue(&zMin,gauss); 
+	zY_input->GetInputValue(&zY,gauss);
+	Tmean_input->GetInputValue(&Tmean,gauss);
+	C_input->GetInputValue(&C,gauss);
+	Tz_input->GetInputValue(&Tz,gauss);
+	Vz_input->GetInputValue(&Vz,gauss);
+	isinitialized_input->GetInputValue(&isinitialized);
+	/*}}}*/
+
+	/*First, check that the initial structures have been setup in GEMB. If not, initialize profile variables: layer thickness dz, * density d, temperature T, etc. {{{*/
+	if(isinitialized==0.0){
+        if(VerboseSmb() && this->Sid()==0)_printf0_("smb core: Initializing grid\n");
+        //if(this->Sid()==1) for(int i=0;i<m;i++)_printf_("z[" << i << "]=" <<
+        //dz[i] << "\n");
+        
+        DoubleArrayInput* dz_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbDziniEnum)); _assert_(dz_input);
+        DoubleArrayInput* d_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbDiniEnum));_assert_(d_input);
+        DoubleArrayInput* re_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbReiniEnum));_assert_(re_input);
+        DoubleArrayInput* gdn_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbGdniniEnum));_assert_(gdn_input);
+        DoubleArrayInput* gsp_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbGspiniEnum));_assert_(gsp_input);
+        DoubleInput* EC_input= dynamic_cast<DoubleInput*>(this->GetInput(SmbECiniEnum));_assert_(EC_input);
+        DoubleArrayInput* W_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbWiniEnum));_assert_(W_input);
+        DoubleArrayInput* a_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbAiniEnum));_assert_(a_input);
+        DoubleArrayInput* T_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbTiniEnum));_assert_(T_input);
+
+        dz_input->GetValues(&dzini,&m);
+        d_input->GetValues(&dini,&m);
+        re_input->GetValues(&reini,&m);
+        gdn_input->GetValues(&gdnini,&m);
+        gsp_input->GetValues(&gspini,&m);
+        EC_input->GetInputValue(&EC);
+        W_input->GetValues(&Wini,&m);
+        a_input->GetValues(&aini,&m);
+        T_input->GetValues(&Tini,&m);
+        
+        /*Retrive the correct value of m (without the zeroes at the end)*/
+        Input* Size_input=this->GetInput(SmbSizeiniEnum); _assert_(Size_input);
+        Size_input->GetInputValue(&m);
+        
+        if(m==2){ //Snow properties are initialized with default values. Vertical grid has to be initialized too
+//            if(VerboseSmb() && this->Sid()==0)_printf0_("Snow properties initialized w DEFAULT values\n");
+            
+            /*initialize profile variables:*/
+            GembgridInitialize(&dz, &m, zTop, dzTop, zMax, zY);
+            
+            d = xNewZeroInit<IssmDouble>(m); for(int i=0;i<m;i++)d[i]=dini[0]; //ice density [kg m-3]
+            re = xNewZeroInit<IssmDouble>(m); for(int i=0;i<m;i++)re[i]=reini[0];         //set grain size to old snow [mm]
+            gdn = xNewZeroInit<IssmDouble>(m); for(int i=0;i<m;i++)gdn[i]=gdnini[0];         //set grain dentricity to old snow
+            gsp = xNewZeroInit<IssmDouble>(m); for(int i=0;i<m;i++)gsp[i]=gspini[0];         //set grain sphericity to old snow
+            W = xNewZeroInit<IssmDouble>(m); for(int i=0;i<m;i++)W[i]=Wini[0];             //set water content to zero [kg m-2]
+            a = xNewZeroInit<IssmDouble>(m); for(int i=0;i<m;i++)a[i]=aini[0];         //set albedo equal to fresh snow [fraction]
+            T = xNewZeroInit<IssmDouble>(m); for(int i=0;i<m;i++)T[i]=Tmean;         //set initial grid cell temperature to the annual mean temperature [K]
+/*            /!\ Default value of T can not be retrived from SMBgemb.m (like other snow properties) because don't know Tmean yet when set default values.
+            Default value of 0C given in SMBgemb.m is overwritten here with value of Tmean*/
+            
+            //fixed lower temperature bounday condition - T is fixed
+            T_bottom=T[m-1];
+        }
+        else{ //Retrieve snow properties from previous run. Need to provide values for all layers
+//            if(VerboseSmb() && this->Sid()==0)_printf0_("Snow properties initialized w RESTART values\n");
+            
+            dz = xNewZeroInit<IssmDouble>(m);for(int i=0;i<m;i++)dz[i]=dzini[i];
+            d = xNewZeroInit<IssmDouble>(m);for(int i=0;i<m;i++)d[i]=dini[i];
+            re = xNewZeroInit<IssmDouble>(m);for(int i=0;i<m;i++)re[i]=reini[i];
+            gdn = xNewZeroInit<IssmDouble>(m);for(int i=0;i<m;i++)gdn[i]=gdnini[i];
+            gsp = xNewZeroInit<IssmDouble>(m);for(int i=0;i<m;i++)gsp[i]=gspini[i];
+            W = xNewZeroInit<IssmDouble>(m);for(int i=0;i<m;i++)W[i]=Wini[i];
+            a = xNewZeroInit<IssmDouble>(m);for(int i=0;i<m;i++)a[i]=aini[i];
+            T = xNewZeroInit<IssmDouble>(m);for(int i=0;i<m;i++)T[i]=Tini[i];
+
+            //fixed lower temperature bounday condition - T is fixed
+            T_bottom=T[m-1];
+        }
+        
+        /*Flag the initialization:*/
+        this->AddInput(new DoubleInput(SmbIsInitializedEnum,1.0));
+    }
+    else{
+        /*Recover inputs: */
+        DoubleArrayInput* dz_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbDzEnum)); _assert_(dz_input);
+        DoubleArrayInput* d_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbDEnum));_assert_(d_input);
+        DoubleArrayInput* re_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbReEnum));_assert_(re_input);
+        DoubleArrayInput* gdn_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbGdnEnum));_assert_(gdn_input);
+        DoubleArrayInput* gsp_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbGspEnum));_assert_(gsp_input);
+        DoubleInput* EC_input= dynamic_cast<DoubleInput*>(this->GetInput(SmbECEnum));_assert_(EC_input);
+        DoubleArrayInput* W_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbWEnum));_assert_(W_input);
+        DoubleArrayInput* a_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbAEnum));_assert_(a_input);
+        DoubleArrayInput* T_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbTEnum));_assert_(T_input);
+
+        /*Recover arrays: */
+        dz_input->GetValues(&dz,&m);
+        d_input->GetValues(&d,&m);
+        re_input->GetValues(&re,&m);
+        gdn_input->GetValues(&gdn,&m);
+        gsp_input->GetValues(&gsp,&m);
+        EC_input->GetInputValue(&EC);
+        W_input->GetValues(&W,&m);
+        a_input->GetValues(&a,&m);
+        T_input->GetValues(&T,&m);
+
+        //fixed lower temperature bounday condition - T is fixed
+        T_bottom=T[m-1];
+
+    } /*}}}*/
+
+	// determine initial mass [kg]
+	initMass=0; for(int i=0;i<m;i++) initMass += dz[i]*d[i] + W[i];
+    
+        // initialize cumulative variables
+	sumR = 0; sumM = 0; sumEC = 0; sumP = 0; sumMassAdd = 0;
+	sumdz_add=0;
+
+	//before starting loop, realize that the transient core runs this smb_core at time = time +deltaT. 
+	//go back to time - deltaT: 
+	time-=dt;
+
+	/*Start loop: */
+	count=1;
+	for (t=time;t<time+dt;t=t+smb_dt){
+
+		if(VerboseSmb() && this->Sid()==0 && IssmComm::GetRank()==0)_printf0_("Time: t=" << setprecision(8) << t/365.0/24.0/3600.0 << " yr/" << (time+dt)/365.0/24.0/3600.0 << " yr" << setprecision(3) << " Step: " << count << "\n");
+
+		/*extract daily data:{{{*/
+		Ta_input->GetInputValue(&Ta,gauss,t);//screen level air temperature [K]
+		V_input->GetInputValue(&V,gauss,t);  //wind speed [m s-1]
+		Dlwr_input->GetInputValue(&dlw,gauss,t);   //downward longwave radiation flux [W m-2]
+		Dswr_input->GetInputValue(&dsw,gauss,t);   //downward shortwave radiation flux [W m-2]
+		P_input->GetInputValue(&P,gauss,t);        //precipitation [kg m-2]
+		eAir_input->GetInputValue(&eAir,gauss,t);  //screen level vapor pressure [Pa]
+		pAir_input->GetInputValue(&pAir,gauss,t);  // screen level air pressure [Pa]
+		//_printf_("Time: " << t << " Ta: " << Ta << " V: " << V << " dlw: " << dlw << " dsw: " << dsw << " P: " << P << " eAir: " << eAir << " pAir: " << pAir << "\n");
+		/*}}}*/
+
+		/*Snow grain metamorphism:*/
+		if(isgraingrowth)grainGrowth(re, gdn, gsp, T, dz, d, W, smb_dt, m, aIdx,this->Sid());
+
+		/*Snow, firn and ice albedo:*/
+		if(isalbedo)albedo(a,aIdx,re,d,cldFrac,aIce, aSnow,T,W,P,EC,t0wet,t0dry,K,smb_dt,m,this->Sid());
+		
+					
+		/*Distribution of absorbed short wave radation with depth:*/
+		if(isshortwave)shortwave(&swf, swIdx, aIdx, dsw, a[0], d, dz, re,m,this->Sid());
+		
+		/*Calculate net shortwave [W m-2]*/
+		netSW = cellsum(swf,m);
+
+		/*Thermal profile computation:*/
+		if(isthermal)thermo(&EC, T, dz, d, swf, dlw, Ta, V, eAir, pAir, W[0], smb_dt, m, Vz, Tz,this->Sid());
+
+		/*Change in thickness of top cell due to evaporation/condensation  assuming same density as top cell. 
+		 * need to fix this in case all or more of cell evaporates */
+		dz[0] = dz[0] + EC / d[0];
+		
+		/*Add snow/rain to top grid cell adjusting cell depth, temperature and density*/
+		if(isaccumulation)accumulation(&T, &dz, &d, &W, &a, &re, &gdn, &gsp, &m, Ta, P, dzMin, aSnow,this->Sid());
+
+		/*Calculate water production, M [kg m-2] resulting from snow/ice temperature exceeding 273.15 deg K
+		 * (> 0 deg C), runoff R [kg m-2] and resulting changes in density and determine wet compaction [m]*/
+		if(ismelt)melt(&M, &R, &mAdd, &dz_add, &T, &d, &dz, &W, &a, &re, &gdn, &gsp, &m, dzMin, zMax, zMin, zTop,this->Sid());
+
+		/*Allow non-melt densification and determine compaction [m]*/
+		if(isdensification)densification(d,dz, T, re, denIdx, C, smb_dt, Tmean,rho_ice,m,this->Sid());
+		
+		/*Calculate upward longwave radiation flux [W m-2] not used in energy balance. Calculated for every 
+		 * sub-time step in thermo equations*/
+		ulw = 5.67E-8 * pow(T[0],4.0);
+
+		/*Calculate net longwave [W m-2]*/
+		netLW = dlw - ulw;
+		
+		/*Calculate turbulent heat fluxes [W m-2]*/
+		if(isturbulentflux)turbulentFlux(&shf, &lhf, &dayEC, Ta, T[0], V, eAir, pAir, d[0], W[0], Vz, Tz,this->Sid());
+		
+		/*Verbose some resuls in debug mode: {{{*/
+		if(VerboseSmb() && 0){ 
+			_printf_("smb log: count[" << count << "] m[" << m << "] " 
+				<< setprecision(16)   << "T[" << cellsum(T,m)  << "] " 
+					                  << "d[" << cellsum(d,m)  << "] "
+					                  << "dz[" << cellsum(dz,m)  << "] "
+					                  << "a[" << cellsum(a,m)  << "] "
+					                  << "W[" << cellsum(W,m)  << "] "
+					                  << "re[" << cellsum(re,m)  << "] "
+					                  << "gdn[" << cellsum(gdn,m)  << "] "
+					                  << "gsp[" << cellsum(gsp,m)  << "] "
+					                  << "swf[" << netSW << "] "
+									  << "\n");
+		} /*}}}*/
+		
+		/*Sum component mass changes [kg m-2]*/
+		sumMassAdd = mAdd + sumMassAdd;
+		sumM = M + sumM;
+		sumR = R + sumR;
+		sumW = cellsum(W,m);
+		sumP = P +  sumP;
+		sumEC = sumEC + EC;  // evap (-)/cond(+)
+		sumdz_add=dz_add+sumdz_add;
+
+		/*Calculate total system mass:*/
+		sumMass=0; for(int i=0;i<m;i++) sumMass += dz[i]*d[i];
+
+		#ifndef _HAVE_ADOLC_ //we want to avoid the round operation at all cost. Not differentiable.
+		dMass = sumMass + sumR + sumW - sumP - sumEC - initMass - sumMassAdd;
+		dMass = round(dMass * 100.0)/100.0;
+
+		/*Check mass conservation:*/
+		if (dMass != 0.0) _printf_("total system mass not conserved in MB function \n");
+		#endif
+		
+		/*Check bottom grid cell T is unchanged:*/
+		if (T[m-1]!=T_bottom) _printf_("T(end)~=T_bottom" << "\n");
+		
+		/*Free ressources: */
+		xDelete<IssmDouble>(swf);
+
+		/*increase counter:*/
+		count++;
+	} //for (t=time;t<time+dt;t=t+smb_dt)
+
+	/*Save generated inputs: */
+	this->AddInput(new DoubleArrayInput(SmbDzEnum,dz,m));
+	this->AddInput(new DoubleArrayInput(SmbDEnum,d,m));
+	this->AddInput(new DoubleArrayInput(SmbReEnum,re,m));
+	this->AddInput(new DoubleArrayInput(SmbGdnEnum,gdn,m));
+	this->AddInput(new DoubleArrayInput(SmbGspEnum,gsp,m));
+	this->AddInput(new DoubleArrayInput(SmbTEnum,T,m));
+	this->AddInput(new DoubleInput(SmbECEnum,sumEC/yts));
+	this->AddInput(new DoubleArrayInput(SmbWEnum,W,m));
+	this->AddInput(new DoubleArrayInput(SmbAEnum,a,m));
+	this->AddInput(new DoubleInput(SmbMassBalanceEnum,(sumP + sumEC -sumR)/yts));
+	this->AddInput(new DoubleInput(SmbRunoffEnum,sumR/yts));
+	this->AddInput(new DoubleInput(SmbPrecipitationEnum,sumP/yts));
+	this->AddInput(new DoubleInput(SmbDz_addEnum,sumdz_add/yts));
+	this->AddInput(new DoubleInput(SmbM_addEnum,sumMassAdd/yts));
+
+	/*Free allocations:{{{*/
+	xDelete<IssmDouble>(dz);
+	xDelete<IssmDouble>(d);
+	xDelete<IssmDouble>(re);
+	xDelete<IssmDouble>(gdn);
+	xDelete<IssmDouble>(gsp);
+	xDelete<IssmDouble>(W);
+	xDelete<IssmDouble>(a);
+	xDelete<IssmDouble>(T);
+	delete gauss;
+	/*}}}*/
+}
+/*}}}*/
+void       Element::StrainRateFS(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/
+	/*Compute the 3d Strain Rate (6 components):
+	 *
+	 * epsilon=[exx eyy ezz exy exz eyz]
+	 */
+
+	/*Intermediaries*/
+	IssmDouble dvx[3];
+	IssmDouble dvy[3];
+	IssmDouble dvz[3];
+
+	/*Check that both inputs have been found*/
+	if (!vx_input || !vy_input || !vz_input){
+		_error_("Input missing. Here are the input pointers we have for vx: " << vx_input << ", vy: " << vy_input << ", vz: " << vz_input << "\n");
+	}
+
+	/*Get strain rate assuming that epsilon has been allocated*/
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+	vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
+	epsilon[0] = dvx[0];
+	epsilon[1] = dvy[1];
+	epsilon[2] = dvz[2];
+	epsilon[3] = 0.5*(dvx[1] + dvy[0]);
+	epsilon[4] = 0.5*(dvx[2] + dvz[0]);
+	epsilon[5] = 0.5*(dvy[2] + dvz[1]);
+
+}/*}}}*/
+void       Element::StrainRateHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+	/*Compute the 3d Blatter/HOStrain Rate (5 components):
+	 *
+	 * epsilon=[exx eyy exy exz eyz]
+	 *
+	 * with exz=1/2 du/dz
+	 *      eyz=1/2 dv/dz
+	 *
+	 * the contribution of vz is neglected
+	 */
+
+	/*Intermediaries*/
+	IssmDouble dvx[3];
+	IssmDouble dvy[3];
+
+	/*Check that both inputs have been found*/
+	if (!vx_input || !vy_input){
+		_error_("Input missing. Here are the input pointers we have for vx: " << vx_input << ", vy: " << vy_input << "\n");
+	}
+
+	/*Get strain rate assuming that epsilon has been allocated*/
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+	epsilon[0] = dvx[0];
+	epsilon[1] = dvy[1];
+	epsilon[2] = 0.5*(dvx[1] + dvy[0]);
+	epsilon[3] = 0.5*dvx[2];
+	epsilon[4] = 0.5*dvy[2];
+
+}/*}}}*/
+void       Element::StrainRateHO2dvertical(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+	/*Compute the 2d Blatter/HOStrain Rate (2 components):
+	 *
+	 * epsilon=[exx exz]
+	 *
+	 * with exz=1/2 du/dz
+	 *
+	 * the contribution of vz is neglected
+	 */
+
+	/*Intermediaries*/
+	IssmDouble dvx[3];
+
+	/*Check that both inputs have been found*/
+	if (!vx_input){
+		_error_("Input missing. Here are the input pointers we have for vx: " << vx_input <<"\n");
+	}
+
+	/*Get strain rate assuming that epsilon has been allocated*/
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	epsilon[0] = dvx[0];
+	epsilon[1] = 0.5*dvx[1];
+
+}/*}}}*/
+void       Element::StrainRateSSA(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble dvx[3];
+	IssmDouble dvy[3];
+
+	/*Check that both inputs have been found*/
+	if(!vx_input || !vy_input){
+		_error_("Input missing. Here are the input pointers we have for vx: " << vx_input << ", vy: " << vy_input << "\n");
+	}
+
+	/*Get strain rate assuming that epsilon has been allocated*/
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+	epsilon[0] = dvx[0];
+	epsilon[1] = dvy[1];
+	epsilon[2] = 0.5*(dvx[1] + dvy[0]);
+
+}/*}}}*/
+void       Element::StrainRateSSA1d(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble dvx[3];
+
+	/*Check that both inputs have been found*/
+	if (!vx_input){
+		_error_("Input missing. Here are the input pointers we have for vx: " << vx_input << "\n");
+	}
+
+	/*Get strain rate assuming that epsilon has been allocated*/
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	*epsilon = dvx[0];
+
+}/*}}}*/
+void       Element::StressMaxPrincipalCreateInput(void){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble *xyz_list = NULL;
+	IssmDouble  sigma_xx,sigma_yy,sigma_zz,sigma_xy,sigma_xz,sigma_yz;
+	IssmDouble  a,b,c,d,x[3],max;
+	int         dim,numroots;
+
+	/*First: get stress tensor*/
+	this->ComputeStressTensor();
+
+	/*Get domain dimension*/
+	this->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number vertices and allocate memory*/
+	int         numvertices  = this->GetNumberOfVertices();
+	IssmDouble* maxprincipal = xNew<IssmDouble>(numvertices);
+
+	/*Retrieve all inputs and parameters*/
+	this->GetVerticesCoordinatesBase(&xyz_list);
+	Input* sigma_xx_input  = this->GetInput(StressTensorxxEnum); _assert_(sigma_xx_input);
+	Input* sigma_yy_input  = this->GetInput(StressTensoryyEnum); _assert_(sigma_yy_input);
+	Input* sigma_xy_input  = this->GetInput(StressTensorxyEnum); _assert_(sigma_xy_input);
+	Input* sigma_xz_input  = NULL;
+	Input* sigma_yz_input  = NULL;
+	Input* sigma_zz_input  = NULL;
+	if(dim==3){
+		sigma_xz_input  = this->GetInput(StressTensorxzEnum); _assert_(sigma_xz_input);
+		sigma_yz_input  = this->GetInput(StressTensoryzEnum); _assert_(sigma_yz_input);
+		sigma_zz_input  = this->GetInput(StressTensorzzEnum); _assert_(sigma_zz_input);
+	}
+
+	/*loop over vertices: */
+	Gauss* gauss=this->NewGauss();
+	for (int iv=0;iv<numvertices;iv++){
+		gauss->GaussVertex(iv);
+
+		sigma_xx_input->GetInputValue(&sigma_xx,gauss);
+		sigma_yy_input->GetInputValue(&sigma_yy,gauss);
+		sigma_xy_input->GetInputValue(&sigma_xy,gauss);
+		if(dim==3){
+			sigma_xz_input->GetInputValue(&sigma_xz,gauss);
+			sigma_yz_input->GetInputValue(&sigma_yz,gauss);
+			sigma_zz_input->GetInputValue(&sigma_zz,gauss);
+		}
+
+		if(dim==2){
+			a = 0.;
+			b = 1.;
+			c = -sigma_yy -sigma_xx;
+			d = sigma_xx*sigma_yy - sigma_xy*sigma_xy;
+		}
+		else{
+			a = -1.;
+			b = sigma_xx+sigma_yy+sigma_zz;
+			c = -sigma_xx*sigma_yy -sigma_xx*sigma_zz -sigma_yy*sigma_zz + sigma_xy*sigma_xy +sigma_xz*sigma_xz +sigma_yz*sigma_yz;
+			d = sigma_xx*sigma_yy*sigma_zz - sigma_xx*sigma_yz*sigma_yz -sigma_yy*sigma_xz*sigma_xz - sigma_zz*sigma_xy*sigma_xy + 2.*sigma_xy*sigma_xz*sigma_yz;
+		}
+
+		/*Get roots of polynomials*/
+		cubic(a,b,c,d,x,&numroots);
+
+		/*Initialize maximum eigne value*/
+		if(numroots>0){
+			max = fabs(x[0]);
+		}
+		else{
+			_error_("No eigen value found");
+		}
+
+		/*Get max*/
+		for(int i=1;i<numroots;i++){
+			if(fabs(x[i])>max) max = fabs(x[i]);
+		}
+
+		maxprincipal[iv]=max;
+	}
+
+	/*Create input*/
+	this->AddInput(StressMaxPrincipalEnum,maxprincipal,P1Enum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(maxprincipal);
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+}
+/*}}}*/
+void       Element::ThermalToEnthalpy(IssmDouble* penthalpy,IssmDouble temperature,IssmDouble waterfraction,IssmDouble pressure){/*{{{*/
+	matpar->ThermalToEnthalpy(penthalpy,temperature,waterfraction,pressure);
+}/*}}}*/
+IssmDouble Element::TMeltingPoint(IssmDouble pressure){/*{{{*/
+	_assert_(matpar);
+	return this->matpar->TMeltingPoint(pressure);
+}/*}}}*/
+void       Element::TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,int transformenum){/*{{{*/
+
+	/*All nodes have the same Coordinate System*/
+	int numnodes  = this->GetNumberOfNodes();
+	int* cs_array = xNew<int>(numnodes);
+	for(int i=0;i<numnodes;i++) cs_array[i]=transformenum;
+
+	/*Call core*/
+	TransformInvStiffnessMatrixCoord(Ke,this->nodes,numnodes,cs_array);
+
+	/*Clean-up*/
+	xDelete<int>(cs_array);
+}/*}}}*/
+void       Element::TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes_list,int numnodes,int* cs_array){/*{{{*/
+
+	int         i,j;
+	int         numdofs   = 0;
+	IssmDouble *transform = NULL;
+	IssmDouble *values    = NULL;
+
+	/*Get total number of dofs*/
+	for(i=0;i<numnodes;i++){
+		switch(cs_array[i]){
+			case PressureEnum: numdofs+=1; break;
+			case XYEnum:       numdofs+=2; break;
+			case XYZEnum:      numdofs+=3; break;
+			default: _error_("Coordinate system " << EnumToStringx(cs_array[i]) << " not supported yet");
+		}
+	}
+
+	/*Copy current stiffness matrix*/
+	values=xNew<IssmDouble>(Ke->nrows*Ke->ncols);
+	for(i=0;i<Ke->nrows;i++) for(j=0;j<Ke->ncols;j++) values[i*Ke->ncols+j]=Ke->values[i*Ke->ncols+j];
+
+	/*Get Coordinate Systems transform matrix*/
+	CoordinateSystemTransform(&transform,nodes_list,numnodes,cs_array);
+
+	/*Transform matrix: R*Ke*R^T */
+	TripleMultiply(transform,numdofs,numdofs,0,
+				values,Ke->nrows,Ke->ncols,0,
+				transform,numdofs,numdofs,1,
+				&Ke->values[0],0);
+
+	/*Free Matrix*/
+	xDelete<IssmDouble>(transform);
+	xDelete<IssmDouble>(values);
+}/*}}}*/
+void       Element::TransformLoadVectorCoord(ElementVector* pe,int transformenum){/*{{{*/
+
+	/*All nodes have the same Coordinate System*/
+	int  numnodes = this->GetNumberOfNodes();
+	int* cs_array = xNew<int>(numnodes);
+	for(int i=0;i<numnodes;i++) cs_array[i]=transformenum;
+
+	/*Call core*/
+	this->TransformLoadVectorCoord(pe,this->nodes,numnodes,cs_array);
+
+	/*Clean-up*/
+	xDelete<int>(cs_array);
+}/*}}}*/
+void       Element::TransformLoadVectorCoord(ElementVector* pe,int* cs_array){/*{{{*/
+
+	this->TransformLoadVectorCoord(pe,this->nodes,this->GetNumberOfNodes(),cs_array);
+
+}/*}}}*/
+void       Element::TransformLoadVectorCoord(ElementVector* pe,Node** nodes_list,int numnodes,int* cs_array){/*{{{*/
+
+	int         i;
+	int         numdofs   = 0;
+	IssmDouble *transform = NULL;
+	IssmDouble *values    = NULL;
+
+	/*Get total number of dofs*/
+	for(i=0;i<numnodes;i++){
+		switch(cs_array[i]){
+			case PressureEnum: numdofs+=1; break;
+			case XYEnum:       numdofs+=2; break;
+			case XYZEnum:      numdofs+=3; break;
+			default: _error_("Coordinate system " << EnumToStringx(cs_array[i]) << " not supported yet");
+		}
+	}
+
+	/*Copy current load vector*/
+	values=xNew<IssmDouble>(pe->nrows);
+	for(i=0;i<pe->nrows;i++) values[i]=pe->values[i];
+
+	/*Get Coordinate Systems transform matrix*/
+	CoordinateSystemTransform(&transform,nodes_list,numnodes,cs_array);
+
+	/*Transform matrix: R^T*pe */
+	MatrixMultiply(transform,numdofs,numdofs,1,
+				values,pe->nrows,1,0,
+				&pe->values[0],0);
+
+	/*Free Matrices*/
+	xDelete<IssmDouble>(transform);
+	xDelete<IssmDouble>(values);
+}/*}}}*/
+void       Element::TransformSolutionCoord(IssmDouble* values,int transformenum){/*{{{*/
+
+	/*All nodes have the same Coordinate System*/
+	int  numnodes = this->GetNumberOfNodes();
+	int* cs_array = xNew<int>(numnodes);
+	for(int i=0;i<numnodes;i++) cs_array[i]=transformenum;
+
+	/*Call core*/
+	this->TransformSolutionCoord(values,this->nodes,numnodes,cs_array);
+
+	/*Clean-up*/
+	xDelete<int>(cs_array);
+}/*}}}*/
+void       Element::TransformSolutionCoord(IssmDouble* values,int* transformenum_list){/*{{{*/
+	this->TransformSolutionCoord(values,this->nodes,this->GetNumberOfNodes(),transformenum_list);
+}/*}}}*/
+void       Element::TransformSolutionCoord(IssmDouble* values,int numnodes,int transformenum){/*{{{*/
+
+	/*All nodes have the same Coordinate System*/
+	int* cs_array = xNew<int>(numnodes);
+	for(int i=0;i<numnodes;i++) cs_array[i]=transformenum;
+
+	/*Call core*/
+	this->TransformSolutionCoord(values,this->nodes,numnodes,cs_array);
+
+	/*Clean-up*/
+	xDelete<int>(cs_array);
+}/*}}}*/
+void       Element::TransformSolutionCoord(IssmDouble* solution,int numnodes,int* cs_array){/*{{{*/
+	this->TransformSolutionCoord(solution,this->nodes,numnodes,cs_array);
+}/*}}}*/
+void       Element::TransformSolutionCoord(IssmDouble* values,Node** nodes_list,int numnodes,int transformenum){/*{{{*/
+	/*NOT NEEDED*/
+	/*All nodes have the same Coordinate System*/
+	int* cs_array = xNew<int>(numnodes);
+	for(int i=0;i<numnodes;i++) cs_array[i]=transformenum;
+
+	/*Call core*/
+	this->TransformSolutionCoord(values,nodes_list,numnodes,cs_array);
+
+	/*Clean-up*/
+	xDelete<int>(cs_array);
+}/*}}}*/
+void       Element::TransformSolutionCoord(IssmDouble* solution,Node** nodes_list,int numnodes,int* cs_array){/*{{{*/
+
+	int         i;
+	int         numdofs   = 0;
+	IssmDouble *transform = NULL;
+	IssmDouble *values    = NULL;
+
+	/*Get total number of dofs*/
+	for(i=0;i<numnodes;i++){
+		switch(cs_array[i]){
+			case PressureEnum: numdofs+=1; break;
+			case XYEnum:       numdofs+=2; break;
+			case XYZEnum:      numdofs+=3; break;
+			default: _error_("Coordinate system " << EnumToStringx(cs_array[i]) << " not supported yet");
+		}
+	}
+
+	/*Copy current solution vector*/
+	values=xNew<IssmDouble>(numdofs);
+	for(i=0;i<numdofs;i++) values[i]=solution[i];
+
+	/*Get Coordinate Systems transform matrix*/
+	CoordinateSystemTransform(&transform,nodes_list,numnodes,cs_array);
+
+	/*Transform matrix: R*U */
+	MatrixMultiply(transform,numdofs,numdofs,0,
+				values,numdofs,1,0,
+				&solution[0],0);
+
+	/*Free Matrices*/
+	xDelete<IssmDouble>(transform);
+	xDelete<IssmDouble>(values);
+}/*}}}*/
+void       Element::TransformStiffnessMatrixCoord(ElementMatrix* Ke,int transformenum){/*{{{*/
+
+	/*All nodes have the same Coordinate System*/
+	int  numnodes = this->GetNumberOfNodes();
+	int* cs_array = xNew<int>(numnodes);
+	for(int i=0;i<numnodes;i++) cs_array[i]=transformenum;
+
+	/*Call core*/
+	this->TransformStiffnessMatrixCoord(Ke,this->nodes,numnodes,cs_array);
+
+	/*Clean-up*/
+	xDelete<int>(cs_array);
+}/*}}}*/
+void       Element::TransformStiffnessMatrixCoord(ElementMatrix* Ke,int* transformenum_list){/*{{{*/
+	this->TransformStiffnessMatrixCoord(Ke,this->nodes,this->GetNumberOfNodes(),transformenum_list);
+}/*}}}*/
+void       Element::TransformStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes_list,int numnodes,int* cs_array){/*{{{*/
+
+	int         numdofs = 0;
+	IssmDouble *transform = NULL;
+	IssmDouble *values    = NULL;
+
+	/*Get total number of dofs*/
+	for(int i=0;i<numnodes;i++){
+		switch(cs_array[i]){
+			case PressureEnum: numdofs+=1; break;
+			case XYEnum:       numdofs+=2; break;
+			case XYZEnum:      numdofs+=3; break;
+			default: _error_("Coordinate system " << EnumToStringx(cs_array[i]) << " not supported yet");
+		}
+	}
+
+	/*Copy current stiffness matrix*/
+	values=xNew<IssmDouble>(Ke->nrows*Ke->ncols);
+	for(int i=0;i<Ke->nrows*Ke->ncols;i++) values[i]=Ke->values[i];
+
+	/*Get Coordinate Systems transform matrix*/
+	CoordinateSystemTransform(&transform,nodes_list,numnodes,cs_array);
+
+	/*Transform matrix: R^T*Ke*R */
+	TripleMultiply(transform,numdofs,numdofs,1,
+				values,Ke->nrows,Ke->ncols,0,
+				transform,numdofs,numdofs,0,
+				&Ke->values[0],0);
+
+	/*Free Matrix*/
+	xDelete<IssmDouble>(transform);
+	xDelete<IssmDouble>(values);
+}/*}}}*/
+void       Element::ViscousHeatingCreateInput(void){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble phi;
+	IssmDouble viscosity;
+	IssmDouble epsilon[6];
+	IssmDouble thickness;
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number vertices and allocate memory*/
+	int         numvertices    = this->GetNumberOfVertices();
+	IssmDouble* viscousheating = xNew<IssmDouble>(numvertices);
+
+	/*Retrieve all inputs and parameters*/
+	this->GetVerticesCoordinatesBase(&xyz_list);
+	Input* vx_input        = this->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input        = this->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input        = this->GetInput(VzEnum); _assert_(vz_input);
+	Input* thickness_input = this->GetInput(ThicknessEnum); _assert_(thickness_input);
+
+	/*loop over vertices: */
+	Gauss* gauss=this->NewGauss();
+	for (int iv=0;iv<numvertices;iv++){
+		gauss->GaussVertex(iv);
+
+		thickness_input->GetInputValue(&thickness,gauss);
+
+		this->StrainRateFS(&epsilon[0],xyz_list,gauss,vx_input,vy_input,vz_input);
+		this->material->ViscosityFS(&viscosity,3,xyz_list,gauss,vx_input,vy_input,vz_input);
+		this->GetPhi(&phi,&epsilon[0],viscosity);
+
+		viscousheating[iv]=phi*thickness;
+	}
+
+	/*Create PentaVertex input, which will hold the basal friction:*/
+	this->AddInput(ViscousHeatingEnum,viscousheating,P1Enum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(viscousheating);
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Element.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Element.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Element.h	(revision 21239)
@@ -0,0 +1,309 @@
+/*!\file:  Element.h
+ * \brief abstract class for Element object
+ * This class is a place holder for the Tria and the Penta elements. 
+ * It is derived from Element, so DataSets can contain them.
+ */ 
+
+#ifndef _ELEMENT_H_
+#define _ELEMENT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../../datastructures/datastructures.h"
+#include "../../toolkits/toolkits.h"
+#include "../Update.h"
+class DataSet;
+class Parameters;
+class Parameter;
+class Elements;
+class Loads;
+class Nodes;
+class Node;
+class Vertices;
+class Vertex;
+class Materials;
+class Material;
+class Matpar;
+class Inputs;
+class Input;
+class Gauss;
+class ElementVector;
+template <class doublematrix> class Matrix;
+template <class doubletype> class Vector;
+class ElementMatrix;
+class ElementVector;
+/*}}}*/
+
+class Element: public Object,public Update{
+
+	public:
+		int          id;
+		int          sid;
+		Inputs      *inputs;
+		Node       **nodes;
+		Vertex     **vertices;
+		Material    *material;
+		Matpar      *matpar;
+		Parameters  *parameters;
+
+		int* element_type_list;
+		int  element_type;
+
+	public: 
+		/*Constructors/Destructores*/
+		Element();
+		~Element();
+
+		/*Functions*/
+		void               AddInput(Input* input_in);
+		/*bool               AllActive(void);*/
+		/*bool               AnyActive(void);*/
+		void               ComputeLambdaS(void);
+		void               ComputeNewDamage();
+		void               ComputeStrainRate();
+		void               CoordinateSystemTransform(IssmDouble** ptransform,Node** nodes,int numnodes,int* cs_array);
+		void               DeepEcho();
+		void               DeleteInput(int input_enum);
+		void               DeleteMaterials(void);
+		void               Delta18oParameterization(void);
+		void               Delta18opdParameterization(void);
+		IssmDouble         Divergence(void);
+		void               dViscositydBFS(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
+		void               dViscositydBHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void               dViscositydBSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void               dViscositydDSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void               Echo();
+		IssmDouble         EnthalpyDiffusionParameter(IssmDouble enthalpy,IssmDouble pressure);
+		IssmDouble         EnthalpyDiffusionParameterVolume(int numvertices,IssmDouble* enthalpy,IssmDouble* pressure);
+		void               EnthalpyToThermal(IssmDouble* ptemperature,IssmDouble* pwaterfraction,IssmDouble enthalpy,IssmDouble pressure);
+		void               FindParam(bool* pvalue,int paramenum);
+		void               FindParam(int* pvalue,int paramenum);
+		void               FindParam(IssmDouble* pvalue,int paramenum);
+		void               FindParam(int** pvalues,int* psize,int paramenum);
+		void	             GetDofList(int** pdoflist,int approximation_enum,int setenum);
+		void	             GetDofListPressure(int** pdoflist,int setenum);
+		void	             GetDofListVelocity(int** pdoflist,int setenum);
+		Input*             GetInput(int inputenum);
+		void               GetInputListOnNodes(IssmDouble* pvalue,int enumtype);
+		void               GetInputListOnNodes(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue);
+		void               GetInputListOnNodesVelocity(IssmDouble* pvalue,int enumtype);
+		void               GetInputListOnVertices(IssmDouble* pvalue,int enumtype);
+		void               GetInputListOnVertices(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue);
+		void               GetInputLocalMinMaxOnNodes(IssmDouble* min,IssmDouble* max,IssmDouble* ug);
+		void               GetInputValue(bool* pvalue,int enum_type);
+		void               GetInputValue(int* pvalue,int enum_type);
+		void               GetInputValue(IssmDouble* pvalue,int enum_type);
+		void               GetInputValue(IssmDouble* pvalue,Gauss* gauss,int enum_type);
+		IssmDouble         GetMaterialParameter(int enum_in);
+		void               GetNodesLidList(int* lidlist);
+		void               GetNodesSidList(int* sidlist);
+		void               GetPhi(IssmDouble* phi, IssmDouble*  epsilon, IssmDouble viscosity);
+		void               GetVectorFromInputs(Vector<IssmDouble>* vector, int name_enum, int type);
+		void	             GetVertexPidList(int* pidlist);
+		void               GetVerticesConnectivityList(int* connectivitylist);
+		void               GetVerticesCoordinates(IssmDouble** xyz_list);
+		void               GetVerticesSidList(int* sidlist);
+		IssmDouble         GetXcoord(IssmDouble* xyz_list,Gauss* gauss);
+		IssmDouble         GetYcoord(IssmDouble* xyz_list,Gauss* gauss);
+		IssmDouble         GetZcoord(IssmDouble* xyz_list,Gauss* gauss);
+		void               GradientIndexing(int* indexing,int control_index,bool onsid=false);
+		bool               HasNodeOnBase();
+		bool               HasNodeOnSurface();
+		int                Id();
+		void               InputChangeName(int enum_type,int enum_type_old);
+		void               InputCreate(IssmDouble* vector,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int code);
+		void               InputDuplicate(int original_enum,int new_enum);
+		void               InputUpdateFromConstant(IssmDouble constant, int name);
+		void               InputUpdateFromConstant(int constant, int name);
+		void               InputUpdateFromConstant(bool constant, int name);
+		bool               IsFloating(); 
+		bool               IsIceInElement();
+		bool	             IsInput(int name);
+		bool               IsLandInElement();
+		bool               IsWaterInElement();
+		void               LinearFloatingiceMeltingRate(); 
+		void               MantlePlumeGeothermalFlux(); 
+		void               MarshallElement(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction,int numanalyses);
+		void               MigrateGroundingLine(IssmDouble* sheet_ungrounding);
+		void               MismipFloatingiceMeltingRate(); 
+		void               MungsmtpParameterization(void);
+		ElementMatrix*     NewElementMatrix(int approximation_enum=NoneApproximationEnum);
+		ElementMatrix*     NewElementMatrixCoupling(int number_nodes,int approximation_enum=NoneApproximationEnum);
+		ElementVector*     NewElementVector(int approximation_enum=NoneApproximationEnum);
+		void               PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm);
+		IssmDouble         PureIceEnthalpy(IssmDouble pressure);
+		void               ResultInterpolation(int* pinterpolation,int*nodesperelement,int* parray_size, int output_enum);
+		void               ResultToPatch(IssmDouble* values,int nodesperelement,int output_enum);
+		void               ResultToMatrix(IssmDouble* values,int ncols,int output_enum);
+		void               ResultToVector(Vector<IssmDouble>* vector,int output_enum);
+		void               SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
+		int                Sid();
+		void               SmbGemb();
+		void               StrainRateFS(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
+		void               StrainRateHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void               StrainRateHO2dvertical(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void               StrainRateSSA(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void               StrainRateSSA1d(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input);
+		void               StressMaxPrincipalCreateInput(void);
+		void               ThermalToEnthalpy(IssmDouble* penthalpy,IssmDouble temperature,IssmDouble waterfraction,IssmDouble pressure);
+		IssmDouble         TMeltingPoint(IssmDouble pressure);
+		void               TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,int cs_enum);
+		void               TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int cs_enum);
+		void               TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int* cs_array);
+		void               TransformLoadVectorCoord(ElementVector* pe,int cs_enum);
+		void               TransformLoadVectorCoord(ElementVector* pe,int* cs_array);
+		void               TransformLoadVectorCoord(ElementVector* pe,Node** nodes,int numnodes,int cs_enum);
+		void               TransformLoadVectorCoord(ElementVector* pe,Node** nodes,int numnodes,int* cs_array);
+		void               TransformLoadVectorCoord(ElementVector* pe,int numnodes,int transformenum){_error_("not implemented yet");};/*Tiling only*/
+		void               TransformLoadVectorCoord(ElementVector* pe,int numnodes,int* transformenum_list){_error_("not implemented yet");};/*Tiling only*/
+		void               TransformSolutionCoord(IssmDouble* solution,int cs_enum);
+		void               TransformSolutionCoord(IssmDouble* solution,int* cs_array);
+		void               TransformSolutionCoord(IssmDouble* solution,int numnodes,int cs_enum);
+		void               TransformSolutionCoord(IssmDouble* solution,int numnodes,int* cs_array);
+		void               TransformSolutionCoord(IssmDouble* solution,Node** nodes,int numnodes,int cs_enum);
+		void               TransformSolutionCoord(IssmDouble* solution,Node** nodes,int numnodes,int* cs_array);
+		void               TransformStiffnessMatrixCoord(ElementMatrix* Ke,int cs_enum);
+		void               TransformStiffnessMatrixCoord(ElementMatrix* Ke,int* cs_array);
+		void               TransformStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int cs_enum);
+		void               TransformStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int* cs_array);
+		void               TransformStiffnessMatrixCoord(ElementMatrix* Ke,int numnodes,int* transformenum_list){_error_("not implemented yet");};/*Tiling only*/
+		void               ViscousHeatingCreateInput(void);
+
+		/*Virtual functions*/
+		virtual void       AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum)=0;
+		virtual void       AddInput(int input_enum, IssmDouble* values, int interpolation_enum)=0;
+		virtual void       AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part)=0;
+		virtual void       CalvingRateDev(void){_error_("not implemented yet");};
+		virtual void	    CalvingRateLevermann(void)=0;
+		virtual IssmDouble CharacteristicLength(void)=0;
+		virtual void       ComputeBasalStress(Vector<IssmDouble>* sigma_b)=0;
+		virtual void       ComputeDeviatoricStressTensor(void)=0;
+		virtual void       ComputeSigmaNN(void)=0;
+		virtual void       ComputeStressTensor(void)=0;
+		virtual void       Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters)=0;
+		virtual void       ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index)=0;
+		virtual void       ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum)=0;
+		virtual void       ElementResponse(IssmDouble* presponse,int response_enum)=0;
+		virtual void       ElementSizes(IssmDouble* phx,IssmDouble* phy,IssmDouble* phz)=0;
+		virtual int        FiniteElement(void)=0;
+		virtual IssmDouble FloatingArea(void)=0;
+		virtual void       FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating)=0;
+		virtual Element*   GetBasalElement(void)=0;
+		virtual int        GetElementType(void)=0;
+		virtual void       GetGroundedPart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlyfloating)=0;
+		virtual IssmDouble GetGroundedPortion(IssmDouble* xyz_list)=0;
+		virtual void       GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum)=0;
+		virtual void       GetInputValue(IssmDouble* pvalue,Node* node,int enumtype)=0;
+		virtual void       GetLevelCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum,IssmDouble level)=0;
+		virtual void       GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* levelsetvalues)=0;
+		virtual Node*      GetNode(int node_number)=0;
+		virtual int        GetNodeIndex(Node* node)=0;
+		virtual int        GetNumberOfNodes(void)=0;
+		virtual int        GetNumberOfNodes(int enum_type)=0;
+		virtual int        GetNumberOfVertices(void)=0;
+		virtual void       GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int solutionenum)=0;
+		virtual Element*   GetUpperElement(void)=0;
+		virtual void       GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,bool onsid)=0;
+		virtual void       GetVerticesCoordinatesBase(IssmDouble** xyz_list)=0;
+		virtual void       GetVerticesCoordinatesTop(IssmDouble** xyz_list)=0;
+		virtual IssmDouble GroundedArea(void)=0;
+		virtual IssmDouble IceMass(void)=0;
+		virtual IssmDouble IceVolume(void)=0;
+		virtual IssmDouble IceVolumeAboveFloatation(void)=0;
+		virtual void       InputControlUpdate(IssmDouble scalar,bool save_parameter)=0;
+		virtual void       InputDepthAverageAtBase(int enum_type,int average_enum_type)=0;
+		virtual void       InputExtrude(int input_enum,int start)=0;
+		virtual void       InputScale(int enum_type,IssmDouble scale_factor)=0;
+		virtual void       InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solution,int inputenum)=0;
+		virtual void       InputUpdateFromSolutionOneDof(IssmDouble* solution,int inputenum)=0;
+		virtual bool       IsFaceOnBoundary(void)=0;
+		virtual bool       IsIcefront(void)=0;
+		virtual bool       IsNodeOnShelfFromFlags(IssmDouble* flags)=0; 
+		virtual bool       IsOnBase()=0;
+		virtual bool       IsOnSurface()=0;
+		virtual bool       IsZeroLevelset(int levelset_enum)=0;
+		virtual void       JacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss)=0;
+		virtual void       JacobianDeterminantBase(IssmDouble* Jdet,IssmDouble* xyz_list_base,Gauss* gauss)=0;
+		virtual void       JacobianDeterminantLine(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss)=0;
+		virtual void       JacobianDeterminantSurface(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss)=0;
+		virtual void       JacobianDeterminantTop(IssmDouble* Jdet,IssmDouble* xyz_list_base,Gauss* gauss)=0;
+		virtual void       Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction)=0;
+		virtual IssmDouble Masscon(IssmDouble* levelset)=0;
+		virtual IssmDouble MassFlux(IssmDouble* segment)=0;
+		virtual IssmDouble MassFlux(IssmDouble x1,IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id)=0;
+		virtual IssmDouble MinEdgeLength(IssmDouble* xyz_list)=0;
+		virtual IssmDouble Misfit(int modelenum,int observationenum,int weightsenum)=0;
+		virtual IssmDouble MisfitArea(int weightsenum)=0;
+		virtual Gauss*     NewGauss(void)=0;
+		virtual Gauss*     NewGauss(int order)=0;
+      virtual Gauss*     NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order)=0;
+      virtual Gauss*     NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert)=0;
+      virtual Gauss*     NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order)=0;
+		virtual Gauss*     NewGaussBase(int order)=0;
+		virtual Gauss*     NewGaussLine(int vertex1,int vertex2,int order)=0;
+		virtual Gauss*     NewGaussTop(int order)=0;
+		virtual void       NodalFunctions(IssmDouble* basis,Gauss* gauss)=0;
+		virtual void       NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss)=0;
+		virtual void       NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss)=0;
+		virtual void       NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss)=0;
+		virtual void       NodalFunctionsPressure(IssmDouble* basis, Gauss* gauss)=0;
+		virtual void       NodalFunctionsP1(IssmDouble* basis,Gauss* gauss)=0;
+		virtual void       NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss)=0;
+		virtual void       NodalFunctionsP2(IssmDouble* basis,Gauss* gauss)=0;
+		virtual void       NodalFunctionsVelocity(IssmDouble* basis, Gauss* gauss)=0;
+		virtual void       NodalFunctionsTensor(IssmDouble* basis, Gauss* gauss)=0;
+		virtual int        NodalValue(IssmDouble* pvalue, int index, int natureofdataenum)=0;
+		virtual void       NormalBase(IssmDouble* normal,IssmDouble* xyz_list)=0;
+		virtual void       NormalSection(IssmDouble* normal,IssmDouble* xyz_list)=0;
+		virtual void       NormalTop(IssmDouble* normal,IssmDouble* xyz_list)=0;
+		virtual int        NumberofNodesPressure(void)=0;
+		virtual int        NumberofNodesVelocity(void)=0;
+		virtual void       PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding)=0;
+		virtual int        PressureInterpolation()=0;
+		virtual void       ReduceMatrices(ElementMatrix* Ke,ElementVector* pe)=0;
+		virtual void       ResetFSBasalBoundaryCondition()=0;
+		virtual void       ResetHooks()=0;
+		virtual void       ResetLevelsetFromSegmentlist(IssmDouble* segments,int numsegments){_error_("not implemented yet");};
+		virtual void       SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index)=0;
+		virtual void       SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters)=0;
+		virtual void       SetTemporaryElementType(int element_type_in)=0;
+	   virtual Element*   SpawnBasalElement(void)=0;
+		virtual Element*   SpawnTopElement(void)=0;
+		virtual IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa)=0;
+		virtual void	    StrainRateparallel(void)=0;
+		virtual void	    StrainRateperpendicular(void)=0;
+		virtual void	    StressIntensityFactor(void)=0;
+		virtual IssmDouble SurfaceArea(void)=0;
+		virtual int        TensorInterpolation()=0;
+		virtual IssmDouble TimeAdapt()=0;
+		virtual IssmDouble TotalFloatingBmb(void)=0;
+		virtual IssmDouble TotalGroundedBmb(void)=0;
+		virtual IssmDouble TotalSmb(void)=0;
+		virtual void       Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finite_element)=0;
+		virtual void       UpdateConstraintsExtrudeFromBase(void)=0;
+		virtual void       UpdateConstraintsExtrudeFromTop(void)=0;
+		virtual int        UpdatePotentialUngrounding(IssmDouble* potential_sheet_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf)=0;
+		virtual void       ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss)=0;
+		virtual void       ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss)=0;
+		virtual int        VelocityInterpolation()=0;
+		virtual int        VertexConnectivity(int vertexindex)=0;
+		virtual void       VerticalSegmentIndices(int** pindices,int* pnumseg)=0;
+		virtual void       ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input)=0;
+		virtual void       WriteLevelsetSegment(DataSet* segments){_error_("not implemented yet");};
+		virtual void       ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum)=0;
+
+		#ifdef _HAVE_GIA_
+		virtual void       GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y)=0;
+		#endif
+		#ifdef _HAVE_SEALEVELRISE_
+		virtual IssmDouble    GetArea3D(void)=0;
+		virtual IssmDouble    GetAreaSpherical(void)=0;
+		virtual IssmDouble    OceanAverage(IssmDouble* Sg)=0;
+		virtual IssmDouble    OceanArea(void)=0;
+		virtual void          SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea)=0;
+		virtual void          SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea)=0;
+		virtual void          SealevelriseGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* Sg,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble oceanarea,IssmDouble eartharea)=0;
+		#endif
+
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/ElementHook.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/ElementHook.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/ElementHook.cpp	(revision 21239)
@@ -0,0 +1,199 @@
+/*!\file ElementHook.c
+ * \brief: implementation of the ElementHook object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*Object constructors and destructor*/
+ElementHook::ElementHook(){/*{{{*/
+	numanalyses=UNDEF;
+	this->hnodes     = NULL;
+	this->hvertices  = NULL;
+	this->hmaterial  = NULL;
+	this->hmatpar    = NULL;
+	this->hneighbors = NULL;
+}
+/*}}}*/
+ElementHook::~ElementHook(){/*{{{*/
+
+	if(this->hnodes){
+		for(int i=0;i<this->numanalyses;i++){
+			if(this->hnodes[i]) delete this->hnodes[i]; 
+		}
+		delete [] this->hnodes;
+	}
+	delete hvertices;
+	delete hmaterial;
+	delete hmatpar;
+	delete hneighbors;
+}
+/*}}}*/
+ElementHook::ElementHook(int in_numanalyses,int element_id,int numvertices,IoModel* iomodel){/*{{{*/
+
+	/*intermediary: */
+	int matpar_id;
+	int material_id;
+
+	/*retrieve material_id: */
+	matpar_id = iomodel->numberofelements+1;
+
+	/*retrieve material_id*/
+	material_id = element_id;
+
+	/*retrieve vertices ids*/
+	int* vertex_ids = xNew<int>(numvertices);
+	for(int i=0;i<numvertices;i++){ 
+		vertex_ids[i]=reCast<int>(iomodel->elements[(element_id-1)*numvertices+i]);
+	}
+
+	this->numanalyses = in_numanalyses;
+	this->hnodes      = new Hook*[in_numanalyses];
+	this->hvertices   = new Hook(&vertex_ids[0],numvertices);
+	this->hmaterial   = new Hook(&material_id,1);
+	this->hmatpar     = new Hook(&matpar_id,1);
+	this->hneighbors  = NULL;
+
+	/*Initialize hnodes as NULL*/
+	for(int i=0;i<this->numanalyses;i++){
+		this->hnodes[i]=NULL;
+	}
+
+	/*Clean up*/
+	xDelete<int>(vertex_ids);
+
+}
+/*}}}*/
+void ElementHook::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	int i;
+	bool* hnodesi_null=NULL; /*intermediary needed*/
+	bool  hnodes_null=true; /*this could be NULL on empty constructor*/
+	bool  hneighbors_null=true; /*don't deal with hneighbors, unless explicitely asked to*/
+
+	_assert_(this);
+
+	/*preliminary, before marshall starts: */
+	if(marshall_direction==MARSHALLING_FORWARD || marshall_direction==MARSHALLING_SIZE){
+		if(this->hneighbors)hneighbors_null=false;
+		if(this->hnodes){
+			hnodes_null=false;
+			hnodesi_null=xNew<bool>(numanalyses);
+			for(i=0;i<numanalyses;i++){
+				if(this->hnodes[i])hnodesi_null[i]=false;
+				else hnodesi_null[i]=true;
+			}
+		}
+	}
+
+	/*ok, marshall operations: */
+	MARSHALLING_ENUM(ElementHookEnum);
+	MARSHALLING(numanalyses);
+	MARSHALLING(hneighbors_null);
+	MARSHALLING(hnodes_null);
+	MARSHALLING_DYNAMIC(hnodesi_null,bool,numanalyses);
+
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		
+		if (!hnodes_null)this->hnodes = new Hook*[numanalyses];
+		else this->hnodes=NULL;
+		this->hvertices   = new Hook();
+		this->hmaterial   = new Hook();
+		this->hmatpar     = new Hook();
+		if(!hneighbors_null)this->hneighbors  = new Hook();
+		else this->hneighbors=NULL;
+
+		/*Initialize hnodes: */
+		if (this->hnodes){
+			for(int i=0;i<this->numanalyses;i++){
+				if(!hnodesi_null[i])this->hnodes[i]=new Hook();
+				else this->hnodes[i]=NULL;
+			}
+		}
+	}
+
+	if (this->hnodes){ 
+		for (i=0;i<numanalyses;i++) if(this->hnodes[i])this->hnodes[i]->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	}
+	this->hvertices->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->hmaterial->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->hmatpar->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	if(this->hneighbors)this->hneighbors->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	/*Free ressources: */
+	if(hnodesi_null) xDelete<bool>(hnodesi_null);
+
+}
+/*}}}*/
+
+void ElementHook::InitHookNeighbors(int* element_ids){/*{{{*/
+	this->hneighbors=new Hook(element_ids,2);
+}
+/*}}}*/
+void ElementHook::SetHookNodes(int* node_ids,int numnodes,int analysis_counter){/*{{{*/
+	if(this->hnodes) this->hnodes[analysis_counter]= new Hook(node_ids,numnodes);
+}
+/*}}}*/
+void ElementHook::SpawnSegHook(ElementHook* triahook,int index1,int index2){/*{{{*/
+
+	triahook->numanalyses=this->numanalyses;
+
+	int indices[2];
+	indices[0]=index1;
+	indices[1]=index2;
+
+	/*Spawn nodes hook*/
+	triahook->hnodes=new Hook*[this->numanalyses];
+	for(int i=0;i<this->numanalyses;i++){
+		/*Do not do anything if Hook is empty*/
+		if (!this->hnodes[i] || this->hnodes[i]->GetNum()==0){
+			triahook->hnodes[i]=NULL;
+		}
+		else{
+			triahook->hnodes[i]=this->hnodes[i]->Spawn(indices,2);
+		}
+	}
+
+	/*do not spawn hmaterial. material will be taken care of by Tria*/
+	triahook->hmaterial=NULL;
+	triahook->hvertices=(Hook*)this->hvertices->Spawn(indices,2);
+	triahook->hmatpar=(Hook*)this->hmatpar->copy();
+}
+/*}}}*/
+void ElementHook::SpawnTriaHook(ElementHook* triahook,int index1,int index2,int index3){/*{{{*/
+
+	/*Create arrow of indices depending on location (0=base 1=surface)*/
+	int indices[3];
+	indices[0] = index1;
+	indices[1] = index2;
+	indices[2] = index3;
+
+	triahook->numanalyses=this->numanalyses;
+
+	/*Spawn nodes hook*/
+	triahook->hnodes=new Hook*[this->numanalyses];
+	for(int i=0;i<this->numanalyses;i++){
+		/*Do not do anything if Hook is empty*/
+		if (!this->hnodes[i] || this->hnodes[i]->GetNum()==0){
+			triahook->hnodes[i]=NULL;
+		}
+		else{
+			triahook->hnodes[i]=this->hnodes[i]->Spawn(indices,3);
+		}
+	}
+
+	/*do not spawn hmaterial. material will be taken care of by Penta*/
+	triahook->hmaterial=NULL;
+	triahook->hvertices=(Hook*)this->hvertices->Spawn(indices,3);
+	triahook->hmatpar=(Hook*)this->hmatpar->copy();
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/ElementHook.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/ElementHook.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/ElementHook.h	(revision 21239)
@@ -0,0 +1,33 @@
+/*!\file: ElementHook.h
+ * \brief prototypes for ElementHook.h
+ */ 
+
+#ifndef _ELEMENTHOOK_H_
+#define _ELEMENTHOOK_H_
+
+class Hook;
+class IoModel;
+
+class ElementHook{
+
+	public: 
+		int    numanalyses;   //number of analysis types
+		Hook **hnodes;        // set of nodes for each analysis type
+		Hook  *hvertices;     // vertices
+		Hook  *hmaterial;     // 1 ice material
+		Hook  *hmatpar;       // 1 material parameter
+		Hook  *hneighbors;    // 2 elements, first down, second up in 3d only
+
+		/*constructors, destructors*/
+		ElementHook();
+		ElementHook(int in_numanalyses,int material_id,int numvertices,IoModel* iomodel);
+		~ElementHook();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+
+		void InitHookNeighbors(int* element_ids);               //3d only
+		void SetHookNodes(int* node_ids,int numnodes,int analysis_counter);
+		void SpawnSegHook(ElementHook* triahook,int ndex1,int index2); //2d only
+		void SpawnTriaHook(ElementHook* triahook,int index1,int index2,int index3); //3d only
+};
+
+#endif //ifndef _ELEMENTHOOK_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Elements.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Elements.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Elements.cpp	(revision 21239)
@@ -0,0 +1,117 @@
+/*
+ * \file Elements.cpp
+ * \brief: Implementation of Elements class, derived from DataSet class
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Element.h"
+#include "./Elements.h"
+#include "../Params/Parameters.h"
+#include "../ExternalResults/Results.h"
+#include "../ExternalResults/GenericExternalResult.h"
+#include "../../toolkits/toolkits.h"
+#include "../../shared/shared.h"
+
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+Elements::Elements(){/*{{{*/
+	enum_type=MeshElementsEnum;
+	return;
+}
+/*}}}*/
+Elements::~Elements(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object management*/
+void Elements::Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Element* element=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		element=xDynamicCast<Element*>((*object));
+		element->Configure(elements,loads,nodes,vertices,materials,parameters);
+
+	}
+
+}
+/*}}}*/
+void Elements::InputDuplicate(int input_enum,int output_enum){/*{{{*/
+
+	for(int i=0;i<this->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->GetObjectByOffset(i));
+		element->InputDuplicate(input_enum,output_enum);
+	}
+}
+/*}}}*/
+int  Elements::MaxNumNodes(void){/*{{{*/
+
+	int max=0;
+	int allmax;
+	int numnodes=0;
+
+	/*Now go through all elements, and get how many nodes they own, unless they are clone nodes: */
+	for(int i=0;i<this->Size();i++){
+
+		Element* element=xDynamicCast<Element*>(this->GetObjectByOffset(i));
+		numnodes=element->GetNumberOfNodes();
+		if(numnodes>max)max=numnodes;
+	}
+
+	/*Grab max of all cpus: */
+	ISSM_MPI_Allreduce((void*)&max,(void*)&allmax,1,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
+	max=allmax;
+
+	return max;
+}
+/*}}}*/
+int  Elements::NumberOfElements(void){/*{{{*/
+
+	int local_nelem;
+	int numberofelements;
+
+	local_nelem=this->Size();
+	ISSM_MPI_Allreduce((void*)&local_nelem,(void*)&numberofelements,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
+
+	return numberofelements;
+}
+/*}}}*/
+void Elements::ResetHooks(){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Element* element=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		element=xDynamicCast<Element*>((*object));
+		element->ResetHooks();
+
+	}
+
+}
+/*}}}*/
+void Elements::SetCurrentConfiguration(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Element* element=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		element=xDynamicCast<Element*>((*object));
+		element->SetCurrentConfiguration(elements,loads,nodes,materials,parameters);
+
+	}
+
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Elements.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Elements.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Elements.h	(revision 21239)
@@ -0,0 +1,35 @@
+#ifndef _CONTAINER_ELEMENTS_H_
+#define  _CONTAINER_ELEMENTS_H_
+
+/*forward declarations */
+#include "../../datastructures/datastructures.h"
+class Materials;
+class Parameters;
+class Vertices;
+class Loads;
+class Nodes;
+class Results;
+
+/*! \brief Declaration of Elements class 
+ *
+ * Declaration of Elements class.  Elements are vector lists (Containers) of Element objects.
+ */ 
+class Elements: public DataSet{
+
+	public:
+
+		/*constructors, destructors*/
+		Elements();
+		~Elements();
+
+		/*numerics*/
+		void   Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
+		void   InputDuplicate(int input_enum,int output_enum);
+		int    MaxNumNodes(void);
+		int    NumberOfElements(void);
+		void   SetCurrentConfiguration(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
+		void   ResetHooks();
+
+};
+
+#endif //ifndef _ELEMENTS_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Penta.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Penta.cpp	(revision 21239)
@@ -0,0 +1,3542 @@
+/*!\file Penta.cpp
+ * \brief: implementation of the Penta object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMVERTICES   6
+#define NUMVERTICES2D 3
+
+/*Constructors/destructor/copy*/
+Penta::~Penta(){/*{{{*/
+	this->parameters=NULL;
+}
+/*}}}*/
+Penta::Penta(int penta_id, int penta_sid, int index, IoModel* iomodel,int nummodels)/*{{{*/
+	:ElementHook(nummodels,index+1,NUMVERTICES,iomodel){
+
+	int penta_elements_ids[2];
+
+	/*Checks in debugging mode*/
+	_assert_(iomodel->Data("md.mesh.upperelements"));
+	_assert_(iomodel->Data("md.mesh.lowerelements"));
+
+	/*id: */
+	this->id  = penta_id;
+	this->sid = penta_sid;
+
+	/*Build neighbors list*/
+	if (xIsNan<IssmDouble>(iomodel->Data("md.mesh.upperelements")[index]) || iomodel->Data("md.mesh.upperelements")[index]==-1.) penta_elements_ids[1]=this->id; //upper penta is the same penta
+	else                                    penta_elements_ids[1]=reCast<int,IssmDouble>((iomodel->Data("md.mesh.upperelements")[index]));
+	if (xIsNan<IssmDouble>(iomodel->Data("md.mesh.lowerelements")[index]) || iomodel->Data("md.mesh.lowerelements")[index]==-1.) penta_elements_ids[0]=this->id; //lower penta is the same penta
+	else                                    penta_elements_ids[0]=reCast<int,IssmDouble>((iomodel->Data("md.mesh.lowerelements")[index]));
+	this->InitHookNeighbors(penta_elements_ids);
+
+	//this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
+	this->parameters=NULL;
+
+	/*intialize inputs: */
+	this->inputs=new Inputs();
+
+	/*initialize pointers:*/
+	this->nodes             = NULL;
+	this->vertices          = NULL;
+	this->material          = NULL;
+	this->matpar            = NULL;
+	this->verticalneighbors = NULL;
+
+	/*Only allocate pointer*/
+	this->element_type_list=xNew<int>(nummodels);
+}
+/*}}}*/
+Object* Penta::copy() {/*{{{*/
+
+	int i;
+	Penta* penta=NULL;
+
+	penta=new Penta();
+
+	//deal with PentaRef mother class
+	int nanalyses = this->numanalyses;
+	if(nanalyses > 0){
+		penta->element_type_list=xNew<int>(nanalyses);
+		for(i=0;i<nanalyses;i++) {
+			if (this->element_type_list[i]) penta->element_type_list[i]=this->element_type_list[i];
+			else penta->element_type_list[i] = 0;
+		}
+	}
+	else penta->element_type_list = NULL;
+	penta->element_type=this->element_type;
+	penta->numanalyses=nanalyses;
+
+	//deal with ElementHook mother class
+	if (this->hnodes){
+		penta->hnodes=xNew<Hook*>(penta->numanalyses);
+		for(i=0;i<penta->numanalyses;i++){
+			if (this->hnodes[i]) penta->hnodes[i] = (Hook*)(this->hnodes[i]->copy());
+			else penta->hnodes[i] = NULL;
+		}
+	}
+	else penta->hnodes = NULL;
+
+	penta->hvertices = (Hook*)this->hvertices->copy();
+	penta->hmaterial = (Hook*)this->hmaterial->copy();
+	penta->hmatpar   = (Hook*)this->hmatpar->copy();
+	if (this->hneighbors) penta->hneighbors = (Hook*)(this->hneighbors->copy());
+	else penta->hneighbors = NULL;
+
+	/*deal with Tria fields: */
+	penta->id  = this->id;
+	penta->sid = this->sid;
+	if(this->inputs) penta->inputs = (Inputs*)(this->inputs->Copy());
+	else penta->inputs=new Inputs();
+
+	/*point parameters: */
+	penta->parameters=this->parameters;
+
+	/*recover objects: */
+	if (this->nodes) {
+		unsigned int num_nodes = 6;
+		penta->nodes = xNew<Node*>(num_nodes); //we cannot rely on an analysis_counter to tell us which analysis_type we are running, so we just copy the nodes.
+		for(i=0;i<num_nodes;i++) if(this->nodes[i]) penta->nodes[i]=this->nodes[i]; else penta->nodes[i] = NULL;
+	}
+	else penta->nodes = NULL;
+
+	penta->vertices = (Vertex**)this->hvertices->deliverp();
+	penta->material = (Material*)this->hmaterial->delivers();
+	penta->matpar   = (Matpar*)this->hmatpar->delivers();
+	penta->verticalneighbors = (Penta**)this->hneighbors->deliverp();
+
+	return penta;
+
+}
+/*}}}*/
+void Penta::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(PentaEnum);
+
+	/*Call parent classes: */
+	ElementHook::Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	Element::MarshallElement(pmarshalled_data,pmarshalled_data_size,marshall_direction,this->numanalyses);
+	PentaRef::Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	vertices = (Vertex**)this->hvertices->deliverp();
+	material = (Material*)this->hmaterial->delivers();
+	matpar   = (Matpar*)this->hmatpar->delivers();
+	verticalneighbors = (Penta**)this->hneighbors->deliverp();
+
+}
+/*}}}*/
+
+/*Other*/
+void       Penta::AddBasalInput(int input_enum,IssmDouble* values, int interpolation_enum){/*{{{*/
+
+	_assert_(this->inputs);
+	if(!IsOnBase()) return;
+	else{
+		if(interpolation_enum==P1Enum){
+			int        i;
+			IssmDouble extrudedvalues[NUMVERTICES];
+			Penta*     penta=NULL;
+
+			for(i=0;i<NUMVERTICES2D;i++){
+				extrudedvalues[i]=values[i];
+				extrudedvalues[i+NUMVERTICES2D]=values[i];
+			}
+			penta=this;
+			for(;;){
+				penta->inputs->AddInput(new PentaInput(input_enum,&extrudedvalues[0],P1Enum));
+				if (penta->IsOnSurface()) break;
+				penta=penta->GetUpperPenta(); _assert_(penta->Id()!=this->id);
+			}
+		}
+		else _error_("not implemented yet");
+	}
+}
+/*}}}*/
+void       Penta::AddInput(int input_enum,IssmDouble* values, int interpolation_enum){/*{{{*/
+
+	_assert_(this->inputs);
+	this->inputs->AddInput(new PentaInput(input_enum,values,interpolation_enum));
+}
+/*}}}*/
+void       Penta::AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part){/*{{{*/
+	_error_("Not supported yet!");
+}
+/*}}}*/
+void       Penta::CalvingRateLevermann(){/*{{{*/
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	GaussPenta* gauss=NULL;
+	IssmDouble  vx,vy,vel;
+	IssmDouble  strainparallel;
+	IssmDouble  propcoeff;
+	IssmDouble  strainperpendicular;
+	IssmDouble  calvingratex[NUMVERTICES];
+	IssmDouble  calvingratey[NUMVERTICES];
+	IssmDouble  calvingrate[NUMVERTICES];
+
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs and parameters we will need*/
+	Input* vx_input=inputs->GetInput(VxEnum);																		_assert_(vx_input);
+	Input* vy_input=inputs->GetInput(VyEnum);																		_assert_(vy_input);
+	Input* strainparallel_input=inputs->GetInput(StrainRateparallelEnum);								_assert_(strainparallel_input);
+	Input* strainperpendicular_input=inputs->GetInput(StrainRateperpendicularEnum);              _assert_(strainperpendicular_input);
+	Input* levermanncoeff_input=inputs->GetInput(CalvinglevermannCoeffEnum);                     _assert_(levermanncoeff_input);
+
+	/* Start looping on the number of vertices: */
+	gauss=new GaussPenta();
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		/* Get the value we need*/
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vel=vx*vx+vy*vy;
+		strainparallel_input->GetInputValue(&strainparallel,gauss);
+		strainperpendicular_input->GetInputValue(&strainperpendicular,gauss);
+		levermanncoeff_input->GetInputValue(&propcoeff,gauss);
+
+		/*Calving rate proportionnal to the positive product of the strain rate along the ice flow direction and the strain rate perpendicular to the ice flow */
+		calvingrate[iv]=propcoeff*strainparallel*strainperpendicular;	
+		if(calvingrate[iv]<0){
+			calvingrate[iv]=0;
+		}
+		calvingratex[iv]=calvingrate[iv]*vx/(sqrt(vel)+1.e-14);
+		calvingratey[iv]=calvingrate[iv]*vy/(sqrt(vel)+1.e-14);
+	}
+
+	/*Add input*/
+	this->inputs->AddInput(new PentaInput(CalvingratexEnum,&calvingratex[0],P1Enum));
+	this->inputs->AddInput(new PentaInput(CalvingrateyEnum,&calvingratey[0],P1Enum));
+	this->inputs->AddInput(new PentaInput(CalvingCalvingrateEnum,&calvingrate[0],P1Enum));
+
+	/*Clean up and return*/
+	delete gauss;
+
+}
+/*}}}*/
+void       Penta::ComputeBasalStress(Vector<IssmDouble>* sigma_b){/*{{{*/
+
+	int         i,j;
+	int         dofv[3]={0,1,2};
+	int         dofp[1]={3};
+	int         analysis_type,approximation;
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  xyz_list_tria[3][3];
+	IssmDouble  rho_ice,gravity,FSreconditioning;
+	IssmDouble  pressure,viscosity,Jdet2d;
+	IssmDouble  bed_normal[3];
+	IssmDouble  basalforce[3] = {0.};
+	IssmDouble  epsilon[6]; /* epsilon=[exx,eyy,ezz,exy,exz,eyz];*/
+	IssmDouble  stresstensor[6]={0.0};
+	IssmDouble  sigma_xx,sigma_yy,sigma_zz;
+	IssmDouble  sigma_xy,sigma_xz,sigma_yz;
+	IssmDouble  surface=0,value=0;
+	GaussPenta* gauss;
+
+	/*retrive parameters: */
+	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+	inputs->GetInputValue(&approximation,ApproximationEnum);
+
+	/*Check analysis_types*/
+	if (analysis_type!=StressbalanceAnalysisEnum) _error_("Not supported yet!");
+	if (approximation!=FSApproximationEnum) _error_("Not supported yet!");
+
+	/*retrieve some parameters: */
+	this->parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+
+	if(!IsOnBase()){
+		//put zero
+		sigma_b->SetValue(id-1,0.0,INS_VAL);
+		return;
+	}
+
+	/*recovre material parameters: */
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	gravity=matpar->GetMaterialParameter(ConstantsGEnum);
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	for(i=0;i<3;i++) for(j=0;j<3;j++) xyz_list_tria[i][j]=xyz_list[i][j];
+
+	/*Retrieve all inputs we will be needing: */
+	Input* pressure_input=inputs->GetInput(PressureEnum); _assert_(pressure_input);
+	Input* vx_input=inputs->GetInput(VxEnum);             _assert_(vx_input);
+	Input* vy_input=inputs->GetInput(VyEnum);             _assert_(vy_input);
+	Input* vz_input=inputs->GetInput(VzEnum);             _assert_(vz_input);
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=new GaussPenta(0,1,2,2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		/*Compute strain rate viscosity and pressure: */
+		this->StrainRateFS(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);
+		this->material->ViscosityFS(&viscosity,3,&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);
+		pressure_input->GetInputValue(&pressure,gauss);
+
+		/*Compute Stress*/
+		sigma_xx=2*viscosity*epsilon[0]-pressure*FSreconditioning; // sigma = nu eps - pressure
+		sigma_yy=2*viscosity*epsilon[1]-pressure*FSreconditioning;
+		sigma_zz=2*viscosity*epsilon[2]-pressure*FSreconditioning;
+		sigma_xy=2*viscosity*epsilon[3];
+		sigma_xz=2*viscosity*epsilon[4];
+		sigma_yz=2*viscosity*epsilon[5];
+
+		/*Get normal vector to the bed */
+		NormalBase(&bed_normal[0],&xyz_list_tria[0][0]);
+
+		/*basalforce*/
+		basalforce[0] += sigma_xx*bed_normal[0] + sigma_xy*bed_normal[1] + sigma_xz*bed_normal[2];
+		basalforce[1] += sigma_xy*bed_normal[0] + sigma_yy*bed_normal[1] + sigma_yz*bed_normal[2];
+		basalforce[2] += sigma_xz*bed_normal[0] + sigma_yz*bed_normal[1] + sigma_zz*bed_normal[2];
+
+		GetTriaJacobianDeterminant(&Jdet2d, &xyz_list_tria[0][0],gauss);
+		value+=sigma_zz*Jdet2d*gauss->weight;
+		surface+=Jdet2d*gauss->weight;
+	}
+	value=value/surface;
+
+	/*Add value to output*/
+	sigma_b->SetValue(id-1,value,INS_VAL);
+}
+/*}}}*/
+void       Penta::ComputeDeviatoricStressTensor(){/*{{{*/
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  viscosity;
+	IssmDouble  epsilon[6]; /* epsilon=[exx,eyy,exy];*/
+	IssmDouble  tau_xx[NUMVERTICES];
+	IssmDouble	tau_yy[NUMVERTICES];
+	IssmDouble	tau_zz[NUMVERTICES];
+	IssmDouble  tau_xy[NUMVERTICES];
+	IssmDouble	tau_xz[NUMVERTICES];
+	IssmDouble	tau_yz[NUMVERTICES];
+	IssmDouble	tau_eff[NUMVERTICES];
+	GaussPenta* gauss=NULL;
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs we will be needing: */
+	Input* vx_input=inputs->GetInput(VxEnum);             _assert_(vx_input);
+	Input* vy_input=inputs->GetInput(VyEnum);             _assert_(vy_input);
+	Input* vz_input=inputs->GetInput(VzEnum);             _assert_(vz_input);
+
+	/* Start looping on the number of vertices: */
+	gauss=new GaussPenta();
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		/*Compute strain rate viscosity and pressure: */
+		this->StrainRateFS(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);
+		this->material->ViscosityFS(&viscosity,3,&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);
+
+		/*Compute Stress*/
+		tau_xx[iv]=2*viscosity*epsilon[0]; // tau = nu eps 
+		tau_yy[iv]=2*viscosity*epsilon[1];
+		tau_zz[iv]=2*viscosity*epsilon[2];
+		tau_xy[iv]=2*viscosity*epsilon[3];
+		tau_xz[iv]=2*viscosity*epsilon[4];
+		tau_yz[iv]=2*viscosity*epsilon[5];
+
+		tau_eff[iv] = tau_xx[iv]*tau_xx[iv] + tau_yy[iv]*tau_yy[iv] + tau_zz[iv]*tau_zz[iv] +
+		  2*tau_xy[iv]*tau_xy[iv] + 2*tau_xz[iv]*tau_xz[iv] + 2*tau_yz[iv]*tau_yz[iv];
+
+		tau_eff[iv] = sqrt(tau_eff[iv]/2.);
+	}
+
+	/*Add Stress tensor components into inputs*/
+	this->inputs->AddInput(new PentaInput(DeviatoricStressxxEnum,&tau_xx[0],P1Enum));
+	this->inputs->AddInput(new PentaInput(DeviatoricStressxyEnum,&tau_xy[0],P1Enum));
+	this->inputs->AddInput(new PentaInput(DeviatoricStressxzEnum,&tau_xz[0],P1Enum));
+	this->inputs->AddInput(new PentaInput(DeviatoricStressyyEnum,&tau_yy[0],P1Enum));
+	this->inputs->AddInput(new PentaInput(DeviatoricStressyzEnum,&tau_yz[0],P1Enum));
+	this->inputs->AddInput(new PentaInput(DeviatoricStresszzEnum,&tau_zz[0],P1Enum));
+	this->inputs->AddInput(new PentaInput(DeviatoricStresseffectiveEnum,&tau_eff[0],P1Enum));
+
+	/*Clean up and return*/
+	delete gauss;
+}
+/*}}}*/
+void       Penta::ComputeStressTensor(){/*{{{*/
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  pressure,viscosity;
+	IssmDouble  epsilon[6]; /* epsilon=[exx,eyy,exy];*/
+	IssmDouble  sigma_xx[NUMVERTICES];
+	IssmDouble	sigma_yy[NUMVERTICES];
+	IssmDouble	sigma_zz[NUMVERTICES];
+	IssmDouble  sigma_xy[NUMVERTICES];
+	IssmDouble	sigma_xz[NUMVERTICES];
+	IssmDouble	sigma_yz[NUMVERTICES];
+	GaussPenta* gauss=NULL;
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs we will be needing: */
+	Input* pressure_input=inputs->GetInput(PressureEnum); _assert_(pressure_input);
+	Input* vx_input=inputs->GetInput(VxEnum);             _assert_(vx_input);
+	Input* vy_input=inputs->GetInput(VyEnum);             _assert_(vy_input);
+	Input* vz_input=inputs->GetInput(VzEnum);             _assert_(vz_input);
+
+	/* Start looping on the number of vertices: */
+	gauss=new GaussPenta();
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		/*Compute strain rate viscosity and pressure: */
+		this->StrainRateFS(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);
+		this->material->ViscosityFS(&viscosity,3,&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);
+		pressure_input->GetInputValue(&pressure,gauss);
+
+		/*Compute Stress*/
+		sigma_xx[iv]=2*viscosity*epsilon[0]-pressure; // sigma = nu eps - pressure
+		sigma_yy[iv]=2*viscosity*epsilon[1]-pressure;
+		sigma_zz[iv]=2*viscosity*epsilon[2]-pressure;
+		sigma_xy[iv]=2*viscosity*epsilon[3];
+		sigma_xz[iv]=2*viscosity*epsilon[4];
+		sigma_yz[iv]=2*viscosity*epsilon[5];
+	}
+
+	/*Add Stress tensor components into inputs*/
+	this->inputs->AddInput(new PentaInput(StressTensorxxEnum,&sigma_xx[0],P1Enum));
+	this->inputs->AddInput(new PentaInput(StressTensorxyEnum,&sigma_xy[0],P1Enum));
+	this->inputs->AddInput(new PentaInput(StressTensorxzEnum,&sigma_xz[0],P1Enum));
+	this->inputs->AddInput(new PentaInput(StressTensoryyEnum,&sigma_yy[0],P1Enum));
+	this->inputs->AddInput(new PentaInput(StressTensoryzEnum,&sigma_yz[0],P1Enum));
+	this->inputs->AddInput(new PentaInput(StressTensorzzEnum,&sigma_zz[0],P1Enum));
+
+	/*Clean up and return*/
+	delete gauss;
+}
+/*}}}*/
+void       Penta::Configure(Elements* elementsin, Loads* loadsin, Nodes* nodesin,Vertices* verticesin, Materials* materialsin, Parameters* parametersin){/*{{{*/
+
+	int analysis_counter;
+
+	/*go into parameters and get the analysis_counter: */
+	parametersin->FindParam(&analysis_counter,AnalysisCounterEnum);
+
+	/*Get Element type*/
+	this->element_type=this->element_type_list[analysis_counter];
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	if (this->hnodes[analysis_counter]) this->hnodes[analysis_counter]->configure(nodesin);
+	this->hvertices->configure(verticesin);
+	this->hmaterial->configure(materialsin);
+	this->hmatpar->configure(materialsin);
+	this->hneighbors->configure(elementsin);
+
+	/*Now, go pick up the objects inside the hooks: */
+	if (this->hnodes[analysis_counter]) this->nodes=(Node**)this->hnodes[analysis_counter]->deliverp();
+	else this->nodes=NULL;
+	this->vertices          = (Vertex**)this->hvertices->deliverp();
+	this->material          = (Material*)this->hmaterial->delivers();
+	this->matpar            = (Matpar*)this->hmatpar->delivers();
+	this->verticalneighbors = (Penta**)this->hneighbors->deliverp();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+
+	/*get inputs configured too: */
+	this->inputs->Configure(parameters);
+}
+/*}}}*/
+void       Penta::ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index){/*{{{*/
+
+	int    vertexpidlist[NUMVERTICES];
+	IssmDouble grad_list[NUMVERTICES];
+	Input* grad_input=NULL;
+	Input* input=NULL;
+
+	if(enum_type==MaterialsRheologyBbarEnum){
+		input=(Input*)inputs->GetInput(MaterialsRheologyBEnum);
+	}
+	else if(enum_type==DamageDbarEnum){
+		input=(Input*)inputs->GetInput(DamageDEnum);
+	}
+	else{
+		input=inputs->GetInput(enum_type);
+	}
+	if (!input) _error_("Input " << EnumToStringx(enum_type) << " not found");
+	if (input->ObjectEnum()!=ControlInputEnum) _error_("Input " << EnumToStringx(enum_type) << " is not a ControlInput");
+
+	GradientIndexing(&vertexpidlist[0],control_index);
+	for(int i=0;i<NUMVERTICES;i++) grad_list[i]=gradient[vertexpidlist[i]];
+	grad_input=new PentaInput(GradientEnum,grad_list,P1Enum);
+	((ControlInput*)input)->SetGradient(grad_input);
+
+}/*}}}*/
+void       Penta::ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum){/*{{{*/
+
+	Input* input=NULL;
+
+	if(control_enum==MaterialsRheologyBbarEnum){
+		input=(Input*)inputs->GetInput(MaterialsRheologyBEnum);
+	}
+	else if(control_enum==DamageDbarEnum){
+		input=(Input*)inputs->GetInput(DamageDEnum);
+	}
+	else{
+		input=inputs->GetInput(control_enum);
+	}
+	if (!input) _error_("Input " << EnumToStringx(control_enum) << " not found");
+	if (input->ObjectEnum()!=ControlInputEnum) _error_("Input " << EnumToStringx(control_enum) << " is not a ControlInput");
+
+	int         sidlist[NUMVERTICES];
+	int         connectivity[NUMVERTICES];
+	IssmPDouble values[NUMVERTICES];
+	IssmPDouble gradients[NUMVERTICES]; 
+	IssmDouble  value,gradient;
+
+	this->GetVerticesConnectivityList(&connectivity[0]);
+	this->GetVerticesSidList(&sidlist[0]);
+
+	GaussPenta* gauss=new GaussPenta();
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		((ControlInput*)input)->GetInputValue(&value,gauss);
+		((ControlInput*)input)->GetGradientValue(&gradient,gauss);
+
+		values[iv]    = reCast<IssmPDouble>(value)/reCast<IssmPDouble>(connectivity[iv]);
+		gradients[iv] = reCast<IssmPDouble>(gradient)/reCast<IssmPDouble>(connectivity[iv]);
+	}
+	delete gauss;
+
+	vector_control->SetValues(NUMVERTICES,&sidlist[0],&values[0],ADD_VAL);
+	vector_gradient->SetValues(NUMVERTICES,&sidlist[0],&gradients[0],ADD_VAL);
+
+}/*}}}*/
+void       Penta::ElementResponse(IssmDouble* presponse,int response_enum){/*{{{*/
+
+	switch(response_enum){
+		case MaterialsRheologyBbarEnum:
+			*presponse=this->material->GetBbar();
+			break;
+		case DamageDbarEnum:
+			*presponse=this->material->GetDbar();
+			break;
+		case VelEnum:
+			{
+
+				/*Get input:*/
+				IssmDouble vel;
+				Input* vel_input;
+
+				vel_input=this->inputs->GetInput(VelEnum); _assert_(vel_input);
+				vel_input->GetInputAverage(&vel);
+
+				/*Assign output pointers:*/
+				*presponse=vel;
+			}
+			break;
+		default:  
+			_error_("Response type " << EnumToStringx(response_enum) << " not supported yet!");
+	}
+
+}
+/*}}}*/
+void       Penta::ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz){/*{{{*/
+
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble xmin,ymin,zmin;
+	IssmDouble xmax,ymax,zmax;
+
+	/*Get xyz list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	xmin=xyz_list[0][0]; xmax=xyz_list[0][0];
+	ymin=xyz_list[0][1]; ymax=xyz_list[0][1];
+	zmin=xyz_list[0][2]; zmax=xyz_list[0][2];
+
+	for(int i=1;i<NUMVERTICES;i++){
+		if(xyz_list[i][0]<xmin) xmin=xyz_list[i][0];
+		if(xyz_list[i][0]>xmax) xmax=xyz_list[i][0];
+		if(xyz_list[i][1]<ymin) ymin=xyz_list[i][1];
+		if(xyz_list[i][1]>ymax) ymax=xyz_list[i][1];
+		if(xyz_list[i][2]<zmin) zmin=xyz_list[i][2];
+		if(xyz_list[i][2]>zmax) zmax=xyz_list[i][2];
+	}
+
+	*hx=xmax-xmin;
+	*hy=ymax-ymin;
+	*hz=zmax-zmin;
+}
+/*}}}*/
+int        Penta::FiniteElement(void){/*{{{*/
+	return this->element_type;
+}
+/*}}}*/
+IssmDouble Penta::FloatingArea(void){/*{{{*/
+
+	/*Intermediaries*/
+	int         domaintype;
+	IssmDouble  phi,base_area;
+	IssmDouble  xyz_list[NUMVERTICES][3];
+
+	if(!IsIceInElement() || !IsOnBase())return 0.;
+
+	/*Get problem dimension*/
+	this->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype!=Domain3DEnum) _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	phi=this->GetGroundedPortion(&xyz_list[0][0]);
+	base_area= 1./2.*fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
+
+	/*Clean up and return*/
+	return (1-phi)*base_area;
+}
+/*}}}*/
+void       Penta::FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){/*{{{*/
+
+	if(!IsOnBase()) return;
+
+	int approximation;
+	inputs->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation==HOApproximationEnum || approximation==SSAApproximationEnum || approximation==SSAHOApproximationEnum){
+		for(int i=0;i<NUMVERTICES;i++){
+			vertexgrounded->SetValue(vertices[i]->Pid(),+9999.,INS_VAL);
+			vertexfloating->SetValue(vertices[i]->Pid(),+9999.,INS_VAL);
+		}
+	}
+	else {
+		/*Intermediaries*/
+		IssmDouble* xyz_list = NULL;
+		IssmDouble  pressure,water_pressure,sigma_nn,viscosity,bed,base;
+		IssmDouble  bed_normal[3];
+		IssmDouble  epsilon[6]; /* epsilon=[exx eyy ezz exy exz eyz];*/
+		IssmDouble  surface=0,value=0;
+		bool grounded;
+
+		/* Get node coordinates and dof list: */
+		GetVerticesCoordinates(&xyz_list);
+
+		/*Retrieve all inputs we will be needing: */
+		Input* pressure_input = inputs->GetInput(PressureEnum); _assert_(pressure_input);
+		Input* base_input     = inputs->GetInput(BaseEnum);     _assert_(base_input);
+		Input* bed_input      = inputs->GetInput(BedEnum);      _assert_(bed_input);
+		Input* vx_input       = inputs->GetInput(VxEnum);       _assert_(vx_input);
+		Input* vy_input       = inputs->GetInput(VyEnum);       _assert_(vy_input);
+		Input* vz_input       = inputs->GetInput(VzEnum);       _assert_(vz_input);
+
+		/*Create gauss point in the middle of the basal edge*/
+		Gauss* gauss=NewGaussBase(1);
+		gauss->GaussPoint(0);
+
+		if(!IsFloating()){ 
+			/*Check for basal force only if grounded and touching GL*/
+			this->StrainRateFS(&epsilon[0],xyz_list,gauss,vx_input,vy_input,vz_input);
+			this->material->ViscosityFS(&viscosity,3,xyz_list,gauss,vx_input,vy_input,vz_input);
+			pressure_input->GetInputValue(&pressure, gauss);
+			base_input->GetInputValue(&base, gauss); _assert_(base<0.);
+
+			/*Compute Stress*/
+			IssmDouble sigma_xx=2.*viscosity*epsilon[0]-pressure;
+			IssmDouble sigma_yy=2.*viscosity*epsilon[1]-pressure;
+			IssmDouble sigma_zz=2.*viscosity*epsilon[2]-pressure;
+			IssmDouble sigma_xy=2.*viscosity*epsilon[3];
+			IssmDouble sigma_xz=2.*viscosity*epsilon[4];
+			IssmDouble sigma_yz=2.*viscosity*epsilon[5];
+
+			/*Get normal vector to the bed */
+			NormalBase(&bed_normal[0],xyz_list);
+
+			/*basalforce*/
+			sigma_nn = sigma_xx*bed_normal[0]*bed_normal[0] + sigma_yy*bed_normal[1]*bed_normal[1] + sigma_zz*bed_normal[2]*bed_normal[2] 
+			  + 2.*sigma_xy*bed_normal[0]*bed_normal[1] + 2.*sigma_xz*bed_normal[0]*bed_normal[2] + 2.*sigma_yz*bed_normal[1]*bed_normal[2];
+
+			/*Compute water pressure*/
+			IssmDouble rho_ice   = matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+			IssmDouble rho_water = matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+			IssmDouble gravity   = matpar->GetMaterialParameter(ConstantsGEnum);
+			water_pressure=gravity*rho_water*base;
+
+			/*Compare basal stress to water pressure and determine whether it should ground*/
+			if (sigma_nn<water_pressure) grounded=true;
+			else                         grounded=false;
+		}
+		else{
+			/*Check for basal elevation if floating*/
+			base_input->GetInputValue(&base, gauss);
+			bed_input->GetInputValue(&bed, gauss);
+			if(base<bed) grounded=true;
+			else          grounded=false;
+		}
+		for(int i=0;i<NUMVERTICES;i++){
+			if(grounded) vertexgrounded->SetValue(vertices[i]->Pid(),+1.,INS_VAL);
+			else         vertexfloating->SetValue(vertices[i]->Pid(),+1.,INS_VAL);
+		}
+
+		/*clean up*/
+		delete gauss;
+		xDelete<IssmDouble>(xyz_list);
+	}
+}
+/*}}}*/
+void       Penta::GetAreaCoordinates(IssmDouble* area_coordinates,IssmDouble* xyz_zero,IssmDouble* xyz_list,int numpoints){/*{{{*/
+	/*Computeportion of the element that is grounded*/ 
+
+	int         i,j,k;
+	IssmDouble  area_init,area_portion;
+	IssmDouble  xyz_bis[3][3];
+
+	area_init=fabs(xyz_list[1*3+0]*xyz_list[2*3+1] - xyz_list[1*3+1]*xyz_list[2*3+0] + xyz_list[0*3+0]*xyz_list[1*3+1] - xyz_list[0*3+1]*xyz_list[1*3+0] + xyz_list[2*3+0]*xyz_list[0*3+1] - xyz_list[2*3+1]*xyz_list[0*3+0])/2.;
+
+	/*Initialize xyz_list with original xyz_list of triangle coordinates*/
+	for(j=0;j<3;j++){ 
+		for(k=0;k<3;k++){
+			xyz_bis[j][k]=xyz_list[j*3+k];
+		}
+	}
+	for(i=0;i<numpoints;i++){
+		for(j=0;j<3;j++){ 
+			for(k=0;k<3;k++){
+				/*Change appropriate line*/
+				xyz_bis[j][k]=xyz_zero[i*3+k];
+			}
+
+			/*Compute area fraction*/
+			area_portion=fabs(xyz_bis[1][0]*xyz_bis[2][1] - xyz_bis[1][1]*xyz_bis[2][0] + xyz_bis[0][0]*xyz_bis[1][1] - xyz_bis[0][1]*xyz_bis[1][0] + xyz_bis[2][0]*xyz_bis[0][1] - xyz_bis[2][1]*xyz_bis[0][0])/2.;
+			*(area_coordinates+3*i+j)=area_portion/area_init;
+
+			/*Reinitialize xyz_list*/
+			for(k=0;k<3;k++){
+				/*Reinitialize xyz_list with original coordinates*/
+				xyz_bis[j][k]=xyz_list[j*3+k];
+			}
+		}
+	}
+}
+/*}}}*/
+Element*   Penta::GetBasalElement(void){/*{{{*/
+
+	/*Output*/
+	Element* element=this->GetBasalPenta();
+	return element;
+}
+/*}}}*/
+Penta*     Penta::GetBasalPenta(void){/*{{{*/
+
+	/*Output*/
+	Penta* penta=NULL;
+
+	/*Go through all pentas till the bed is reached*/
+	penta=this;
+	for(;;){
+		/*Stop if we have reached the surface, else, take lower penta*/
+		if (penta->IsOnBase()) break;
+
+		/* get lower Penta*/
+		penta=penta->GetLowerPenta();
+		_assert_(penta->Id()!=this->id);
+	}
+
+	/*return output*/
+	return penta;
+}
+/*}}}*/
+int        Penta::GetElementType(){/*{{{*/
+
+	/*return PentaRef field*/
+	return this->element_type;
+}
+/*}}}*/
+void       Penta::GetGroundedPart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlyfloating){/*{{{*/
+	/*Computeportion of the element that is grounded*/ 
+
+	bool               floating=true;
+	int                point;
+	const IssmPDouble  epsilon= 1.e-15;
+	IssmDouble         gl[NUMVERTICES];
+	IssmDouble         f1,f2;
+
+	/*Recover parameters and values*/
+	GetInputListOnVertices(&gl[0],MaskGroundediceLevelsetEnum);
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+	/*Check that not all nodes are grounded or floating*/
+	if(gl[0]>0 && gl[1]>0 && gl[2]>0){ // All grounded
+		point=0;
+		f1=1.;
+		f2=1.;
+	}
+	else if(gl[0]<0 && gl[1]<0 && gl[2]<0){ //All floating
+		point=0;
+		f1=0.;
+		f2=0.;
+	}
+	else{
+		if(gl[0]*gl[1]*gl[2]<0) floating=false;
+
+		if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+			point=2;
+			f1=gl[2]/(gl[2]-gl[0]);
+			f2=gl[2]/(gl[2]-gl[1]);
+		}
+		else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+			point=0;
+			f1=gl[0]/(gl[0]-gl[1]);
+			f2=gl[0]/(gl[0]-gl[2]);
+		}
+		else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+			point=1;
+			f1=gl[1]/(gl[1]-gl[2]);
+			f2=gl[1]/(gl[1]-gl[0]);
+		}
+	}
+	*point1=point;
+	*fraction1=f1;
+	*fraction2=f2;
+	*mainlyfloating=floating;
+}
+/*}}}*/
+IssmDouble Penta::GetGroundedPortion(IssmDouble* xyz_list){/*{{{*/
+	/*Computeportion of the element that is grounded*/ 
+
+	bool               mainlyfloating = true;
+	const IssmPDouble  epsilon= 1.e-15;
+	IssmDouble         phi,s1,s2,area_init,area_grounded;
+	IssmDouble         gl[NUMVERTICES];
+	IssmDouble         xyz_bis[NUMVERTICES2D][3];
+
+	/*Recover parameters and values*/
+	GetInputListOnVertices(&gl[0],MaskGroundediceLevelsetEnum);
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+	/*Check that not all nodes are grounded or floating*/
+	if(gl[0]>0 && gl[1]>0 && gl[2]>0){ // All grounded
+		phi=1;
+	}
+	else if(gl[0]<0 && gl[1]<0 && gl[2]<0){ //All floating
+		phi=0;
+	}
+	else{
+		/*Figure out if two nodes are floating or grounded*/
+		if(gl[0]*gl[1]*gl[2]>0) mainlyfloating=false;
+
+		if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+			/*Coordinates of point 2: same as initial point 2*/
+			xyz_bis[2][0]=xyz_list[3*2+0];
+			xyz_bis[2][1]=xyz_list[3*2+1];
+			xyz_bis[2][2]=xyz_list[3*2+2];
+
+			/*Portion of the segments*/
+			s1=gl[2]/(gl[2]-gl[1]);
+			s2=gl[2]/(gl[2]-gl[0]);
+
+			/*New point 1*/
+			xyz_bis[1][0]=xyz_list[3*2+0]+s1*(xyz_list[3*1+0]-xyz_list[3*2+0]);
+			xyz_bis[1][1]=xyz_list[3*2+1]+s1*(xyz_list[3*1+1]-xyz_list[3*2+1]);
+			xyz_bis[1][2]=xyz_list[3*2+2]+s1*(xyz_list[3*1+2]-xyz_list[3*2+2]);
+
+			/*New point 0*/
+			xyz_bis[0][0]=xyz_list[3*2+0]+s2*(xyz_list[3*0+0]-xyz_list[3*2+0]);
+			xyz_bis[0][1]=xyz_list[3*2+1]+s2*(xyz_list[3*0+1]-xyz_list[3*2+1]);
+			xyz_bis[0][2]=xyz_list[3*2+2]+s2*(xyz_list[3*0+2]-xyz_list[3*2+2]);
+		}
+		else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+			/*Coordinates of point 0: same as initial point 2*/
+			xyz_bis[0][0]=*(xyz_list+3*0+0);
+			xyz_bis[0][1]=*(xyz_list+3*0+1);
+			xyz_bis[0][2]=*(xyz_list+3*0+2);
+
+			/*Portion of the segments*/
+			s1=gl[0]/(gl[0]-gl[1]);
+			s2=gl[0]/(gl[0]-gl[2]);
+
+			/*New point 1*/
+			xyz_bis[1][0]=*(xyz_list+3*0+0)+s1*(*(xyz_list+3*1+0)-*(xyz_list+3*0+0));
+			xyz_bis[1][1]=*(xyz_list+3*0+1)+s1*(*(xyz_list+3*1+1)-*(xyz_list+3*0+1));
+			xyz_bis[1][2]=*(xyz_list+3*0+2)+s1*(*(xyz_list+3*1+2)-*(xyz_list+3*0+2));
+
+			/*New point 2*/
+			xyz_bis[2][0]=*(xyz_list+3*0+0)+s2*(*(xyz_list+3*2+0)-*(xyz_list+3*0+0));
+			xyz_bis[2][1]=*(xyz_list+3*0+1)+s2*(*(xyz_list+3*2+1)-*(xyz_list+3*0+1));
+			xyz_bis[2][2]=*(xyz_list+3*0+2)+s2*(*(xyz_list+3*2+2)-*(xyz_list+3*0+2));
+		}
+		else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+			/*Coordinates of point 1: same as initial point 2*/
+			xyz_bis[1][0]=*(xyz_list+3*1+0);
+			xyz_bis[1][1]=*(xyz_list+3*1+1);
+			xyz_bis[1][2]=*(xyz_list+3*1+2);
+
+			/*Portion of the segments*/
+			s1=gl[1]/(gl[1]-gl[0]);
+			s2=gl[1]/(gl[1]-gl[2]);
+
+			/*New point 0*/
+			xyz_bis[0][0]=*(xyz_list+3*1+0)+s1*(*(xyz_list+3*0+0)-*(xyz_list+3*1+0));
+			xyz_bis[0][1]=*(xyz_list+3*1+1)+s1*(*(xyz_list+3*0+1)-*(xyz_list+3*1+1));
+			xyz_bis[0][2]=*(xyz_list+3*1+2)+s1*(*(xyz_list+3*0+2)-*(xyz_list+3*1+2));
+
+			/*New point 2*/
+			xyz_bis[2][0]=*(xyz_list+3*1+0)+s2*(*(xyz_list+3*2+0)-*(xyz_list+3*1+0));
+			xyz_bis[2][1]=*(xyz_list+3*1+1)+s2*(*(xyz_list+3*2+1)-*(xyz_list+3*1+1));
+			xyz_bis[2][2]=*(xyz_list+3*1+2)+s2*(*(xyz_list+3*2+2)-*(xyz_list+3*1+2));
+		}
+
+		/*Compute fraction of grounded element*/
+		GetTriaJacobianDeterminant(&area_init, xyz_list,NULL);
+		GetTriaJacobianDeterminant(&area_grounded, &xyz_bis[0][0],NULL);
+		if(mainlyfloating==true) area_grounded=area_init-area_grounded;
+		phi=area_grounded/area_init;
+	}
+
+	if(phi>1. || phi<0.) _error_("Error. Problem with portion of grounded element: value should be between 0 and 1");
+
+	return phi;
+}
+/*}}}*/
+void       Penta::GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){/*{{{*/
+	
+	/* Intermediaries */
+	const int dim=3;
+	int i, dir,nrfrontnodes;
+	IssmDouble  levelset[NUMVERTICES];
+
+	/*Recover parameters and values*/
+	GetInputListOnVertices(&levelset[0],levelsetenum);
+
+	int* indicesfront = xNew<int>(NUMVERTICES);
+	/* Get basal nodes where there is no ice */
+	nrfrontnodes=0;
+	for(i=0;i<NUMVERTICES2D;i++){
+		if(levelset[i]>=0.){
+			indicesfront[nrfrontnodes]=i;
+			nrfrontnodes++;
+		}
+	}
+	_assert_(nrfrontnodes==2);
+
+	/* arrange order of basal frontnodes such that they are oriented counterclockwise */
+	if((NUMVERTICES2D+indicesfront[0]-indicesfront[1])%NUMVERTICES2D!=NUMVERTICES2D-1){
+		int index=indicesfront[0];
+		indicesfront[0]=indicesfront[1];
+		indicesfront[1]=index;
+	}	
+
+	IssmDouble* xyz_front = xNew<IssmDouble>(2*dim*nrfrontnodes);
+	/* Return basal and top front nodes */
+	for(i=0;i<nrfrontnodes;i++){
+		for(dir=0;dir<dim;dir++){
+			int ind1=i*dim+dir, ind2=(2*nrfrontnodes-1-i)*dim+dir; // vertex structure front segment: base0, base1, top1, top0
+			xyz_front[ind1]=xyz_list[dim*indicesfront[i]+dir];
+			xyz_front[ind2]=xyz_list[dim*(indicesfront[i]+NUMVERTICES2D)+dir];
+		}
+	}
+
+	*pxyz_front=xyz_front;
+
+	xDelete<int>(indicesfront);
+}/*}}}*/
+void       Penta::GetInputValue(IssmDouble* pvalue,Node* node,int enumtype){/*{{{*/
+
+	Input* input=inputs->GetInput(enumtype);
+	if(!input) _error_("No input of type " << EnumToStringx(enumtype) << " found in tria");
+
+	GaussPenta* gauss=new GaussPenta();
+	gauss->GaussVertex(this->GetNodeIndex(node));
+
+	input->GetInputValue(pvalue,gauss);
+	delete gauss;
+}
+/*}}}*/
+Penta*     Penta::GetLowerPenta(void){/*{{{*/
+
+	Penta* lower_penta=NULL;
+
+	lower_penta=(Penta*)verticalneighbors[0]; //first one (0) under, second one (1) above
+
+	return lower_penta;
+}
+/*}}}*/
+Node*      Penta::GetNode(int node_number){/*{{{*/
+	_assert_(node_number>=0); 
+	_assert_(node_number<this->NumberofNodes(this->element_type)); 
+	return this->nodes[node_number];
+}
+/*}}}*/
+int        Penta::GetNodeIndex(Node* node){/*{{{*/
+
+	_assert_(nodes);
+	int numnodes = this->NumberofNodes(this->element_type);
+
+	for(int i=0;i<numnodes;i++){
+		if(node==nodes[i]) return i;
+	}
+	_error_("Node provided not found among element nodes");
+
+}
+/*}}}*/
+int        Penta::GetNumberOfNodes(void){/*{{{*/
+	return this->NumberofNodes(this->element_type);
+}
+/*}}}*/
+int        Penta::GetNumberOfNodes(int enum_type){/*{{{*/
+	return this->NumberofNodes(enum_type);
+}
+/*}}}*/
+int        Penta::GetNumberOfVertices(void){/*{{{*/
+	return NUMVERTICES; 
+}
+/*}}}*/
+void       Penta::GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution, int enum_type){/*{{{*/
+
+	const int    numdof=NDOF1*NUMVERTICES;
+
+	int          i;
+	int*         doflist=NULL;
+	IssmDouble   values[numdof];
+	IssmDouble   enum_value;
+	GaussPenta   *gauss=NULL;
+
+	/*Get dof list: */
+	GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	Input* enum_input=inputs->GetInput(enum_type); _assert_(enum_input);
+
+	gauss=new GaussPenta();
+	for(i=0;i<NUMVERTICES;i++){
+		/*Recover temperature*/
+		gauss->GaussVertex(i);
+		enum_input->GetInputValue(&enum_value,gauss);
+		values[i]=enum_value;
+	}
+
+	/*Add value to global vector*/
+	solution->SetValues(numdof,doflist,values,INS_VAL);
+
+	/*Free ressources:*/
+	delete gauss;
+	xDelete<int>(doflist);
+}
+/*}}}*/
+Penta*     Penta::GetSurfacePenta(void){/*{{{*/
+
+	/*Output*/
+	Penta* penta=NULL;
+
+	/*Go through all pentas till the surface is reached*/
+	penta=this;
+	for(;;){
+		/*Stop if we have reached the surface, else, take upper penta*/
+		if (penta->IsOnSurface()) break;
+
+		/* get upper Penta*/
+		penta=penta->GetUpperPenta();
+		_assert_(penta->Id()!=this->id);
+	}
+
+	/*return output*/
+	return penta;
+}
+/*}}}*/
+Element*   Penta::GetUpperElement(void){/*{{{*/
+
+	/*Output*/
+	Element* upper_element=this->GetUpperPenta();
+	return upper_element;
+}
+/*}}}*/
+Penta*     Penta::GetUpperPenta(void){/*{{{*/
+
+	Penta* upper_penta=NULL;
+
+	upper_penta=(Penta*)verticalneighbors[1]; //first one (0) under, second one (1) above
+
+	return upper_penta;
+}
+/*}}}*/
+void       Penta::GetVectorFromControlInputs(Vector<IssmDouble>* vector,int control_enum,int control_index,const char* data,bool onsid){/*{{{*/
+
+	int vertexidlist[NUMVERTICES];
+
+	/*Get out if this is not an element input*/
+	if(!IsInput(control_enum)) _error_("Enum "<<EnumToStringx(control_enum)<<" is not in IsInput");
+
+	/*Prepare index list*/
+	GradientIndexing(&vertexidlist[0],control_index,onsid);
+
+	/*Get input (either in element or material)*/
+	if(control_enum==MaterialsRheologyBbarEnum) control_enum=MaterialsRheologyBEnum;
+	Input* input=inputs->GetInput(control_enum);
+	if(!input) _error_("Input " << EnumToStringx(control_enum) << " not found in element");
+
+	/*Check that it is a ControlInput*/
+	if (input->ObjectEnum()!=ControlInputEnum){
+		_error_("input " << EnumToStringx(control_enum) << " is not a ControlInput");
+	}
+
+	((ControlInput*)input)->GetVectorFromInputs(vector,&vertexidlist[0],data);
+}
+/*}}}*/
+void       Penta::GetVerticesCoordinatesBase(IssmDouble** pxyz_list){/*{{{*/
+
+	IssmDouble* xyz_list = xNew<IssmDouble>(NUMVERTICES2D*3);
+	::GetVerticesCoordinates(xyz_list,this->vertices,NUMVERTICES2D);
+
+	/*Assign output pointer*/
+	*pxyz_list = xyz_list;
+
+}/*}}}*/
+void       Penta::GetVerticesCoordinatesTop(IssmDouble** pxyz_list){/*{{{*/
+
+	IssmDouble* xyz_list = xNew<IssmDouble>(NUMVERTICES2D*3);
+	::GetVerticesCoordinates(xyz_list,&this->vertices[3],NUMVERTICES2D);
+
+	/*Assign output pointer*/
+	*pxyz_list = xyz_list;
+
+}/*}}}*/
+IssmDouble Penta::GroundedArea(void){/*{{{*/
+
+	/*Intermediaries*/
+	int         domaintype;
+	IssmDouble  phi,base_area;
+	IssmDouble  xyz_list[NUMVERTICES][3];
+
+	if(!IsIceInElement() || !IsOnBase())return 0.;
+
+	/*Get problem dimension*/
+	this->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype!=Domain3DEnum) _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	phi=this->GetGroundedPortion(&xyz_list[0][0]);
+	base_area= 1./2.*fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
+
+	/*Clean up and return*/
+	return phi*base_area;
+}
+/*}}}*/
+IssmDouble Penta::IceMass(void){/*{{{*/
+
+	IssmDouble rho_ice; 
+	
+	if(!IsIceInElement())return 0.; //do not contribute to the volume of the ice!
+
+	/*recover ice density: */
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+
+	return rho_ice*this->IceVolume();
+}
+/*}}}*/
+IssmDouble Penta::IceVolume(void){/*{{{*/
+
+	/*The volume of a troncated prism is base * 1/3 sum(length of edges)*/
+	IssmDouble base,height;
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	if(!IsIceInElement())return 0;
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*First calculate the area of the base (cross section triangle)
+	 * http://en.wikipedia.org/wiki/Pentangle
+	 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/
+	base = 1./2.*fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
+
+	/*Now get the average height*/
+	height = 1./3.*((xyz_list[3][2]-xyz_list[0][2])+(xyz_list[4][2]-xyz_list[1][2])+(xyz_list[5][2]-xyz_list[2][2]));
+
+	/*Return: */
+	return base*height;
+}
+/*}}}*/
+IssmDouble Penta::IceVolumeAboveFloatation(void){/*{{{*/
+
+	/*Volume above floatation: H + rho_water/rho_ice*bathymetry for nodes on the bed*/
+	IssmDouble rho_ice,rho_water;
+	IssmDouble base,bed,surface,bathymetry;
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	if(!IsIceInElement() || IsFloating() || !IsOnBase())return 0;
+
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	rho_water=matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*First calculate the area of the base (cross section triangle)
+	 * http://en.wikipedia.org/wiki/Pentangle
+	 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/
+	base = 1./2.*fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
+
+	/*Now get the average height above floatation*/
+	Input* surface_input    = inputs->GetInput(SurfaceEnum);    _assert_(surface_input);
+	Input* base_input        = inputs->GetInput(BaseEnum);        _assert_(base_input);
+	Input* bed_input = inputs->GetInput(BedEnum); _assert_(bed_input);
+	surface_input->GetInputAverage(&surface);
+	base_input->GetInputAverage(&bed);
+	bed_input->GetInputAverage(&bathymetry);
+
+	/*Return: */
+	return base*(surface - bed + min( rho_water/rho_ice * bathymetry, 0.) );
+}
+/*}}}*/
+void       Penta::InputControlUpdate(IssmDouble scalar,bool save_parameter){/*{{{*/
+
+	/*Intermediary*/
+	int    num_controls;
+	int*   control_type=NULL;
+	Input* input=NULL;
+
+	/*retrieve some parameters: */
+	this->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	this->parameters->FindParam(&control_type,NULL,InversionControlParametersEnum);
+
+	for(int i=0;i<num_controls;i++){
+
+		if(control_type[i]==MaterialsRheologyBbarEnum){
+			if (!IsOnBase()) goto cleanup_and_return;
+			input=(Input*)this->inputs->GetInput(MaterialsRheologyBEnum); _assert_(input);
+		}
+		else if(control_type[i]==DamageDbarEnum){
+			if (!IsOnBase()) goto cleanup_and_return;
+			input=(Input*)this->inputs->GetInput(DamageDEnum); _assert_(input);
+		}
+		else{
+			input=(Input*)this->inputs->GetInput(control_type[i]); _assert_(input);
+		}
+		if(input->ObjectEnum()!=ControlInputEnum) _error_("input " << EnumToStringx(control_type[i]) << " is not a ControlInput");
+
+		((ControlInput*)input)->UpdateValue(scalar);
+		((ControlInput*)input)->Constrain();
+		if (save_parameter) ((ControlInput*)input)->SaveValue();
+
+		if(control_type[i]==MaterialsRheologyBbarEnum){
+			this->InputExtrude(MaterialsRheologyBEnum,-1);
+		}
+		else if(control_type[i]==DamageDbarEnum){
+			this->InputExtrude(DamageDEnum,-1);
+		}
+	}
+
+	/*Clean up and return*/
+cleanup_and_return:
+	xDelete<int>(control_type);
+}
+/*}}}*/
+void       Penta::InputDepthAverageAtBase(int enum_type,int average_enum_type){/*{{{*/
+
+	int  step,i;
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  Helem_list[NUMVERTICES];
+	IssmDouble  zeros_list[NUMVERTICES]={0.0};
+	IssmDouble  p0top1_list[NUMVERTICES];
+	Penta* penta=NULL;
+	Input* original_input=NULL;
+	Input* element_integrated_input=NULL;
+	Input* total_integrated_input=NULL;
+	Input* element_thickness_input=NULL;
+	Input* total_thickness_input=NULL;
+	Input* depth_averaged_input=NULL;
+
+	/*recover parameters: */
+
+	/*Are we on the base? If not, return*/
+	if(!IsOnBase()) return;
+
+	/*OK, we are on bed. Initialize global inputs as 0*/
+	total_thickness_input =new PentaInput(ThicknessEnum,zeros_list,P1Enum);
+
+	/*Now follow all the upper element from the base to the surface to integrate the input*/
+	penta=this;
+	step =0;
+	for(;;){
+
+		/*Step1: Get original input (to be depth avegaged): */
+		original_input=(Input*)penta->inputs->GetInput(enum_type);
+		if(!original_input) _error_("could not find input with enum " << EnumToStringx(enum_type));
+
+		/*If first time, initialize total_integrated_input*/
+		if (step==0){
+			if (original_input->ObjectEnum()==PentaInputEnum)
+			 total_integrated_input=new PentaInput(average_enum_type,zeros_list,P1Enum);
+			else if (original_input->ObjectEnum()==ControlInputEnum)
+			 total_integrated_input=new PentaInput(average_enum_type,zeros_list,P1Enum);
+			else if (original_input->ObjectEnum()==DoubleInputEnum)
+			 total_integrated_input=new DoubleInput(average_enum_type,0.0);
+			else{
+			 _error_("object " << EnumToStringx(original_input->ObjectEnum()) << " not supported yet");
+			}
+		}
+
+		/*Step2: Create element thickness input*/
+		::GetVerticesCoordinates(&xyz_list[0][0],penta->vertices,NUMVERTICES);
+		for(i=0;i<3;i++){
+			Helem_list[i]=xyz_list[i+3][2]-xyz_list[i][2];
+			Helem_list[i+3]=Helem_list[i];
+		}
+		element_thickness_input=new PentaInput(ThicknessEnum,Helem_list,P1Enum);
+
+		/*Step3: Vertically integrate A COPY of the original*/
+		if(original_input->ObjectEnum()==PentaInputEnum){
+			if(((PentaInput*)original_input)->interpolation_type==P0Enum){
+				original_input->GetInputValue(&p0top1_list[i]);
+				element_integrated_input= new  PentaInput(original_input->InstanceEnum(),p0top1_list,P1Enum);
+				element_integrated_input->VerticallyIntegrate(element_thickness_input);
+			}
+			else{
+				element_integrated_input= (Input*)original_input->copy();
+				element_integrated_input->VerticallyIntegrate(element_thickness_input);
+			}
+		}
+		else{
+			element_integrated_input= (Input*)original_input->copy();
+			element_integrated_input->VerticallyIntegrate(element_thickness_input);
+		}
+
+		/*Add contributions to global inputs*/
+		total_integrated_input->AXPY(element_integrated_input,1.0);
+		total_thickness_input ->AXPY(element_thickness_input,1.0);
+
+		/*Clean up*/
+		delete element_thickness_input;
+		delete element_integrated_input;
+
+		/*Stop if we have reached the surface, else, take upper penta*/
+		if (penta->IsOnSurface()) break;
+
+		/* get upper Penta*/
+		penta=penta->GetUpperPenta();
+		_assert_(penta->Id()!=this->id);
+
+		/*increase couter*/
+		step++;
+	}
+
+	/*OK, now we only need to divide the depth integrated input by the total thickness!*/
+	depth_averaged_input=total_integrated_input->PointwiseDivide(total_thickness_input);
+	depth_averaged_input->ChangeEnum(average_enum_type);
+
+	/*Clean up*/
+	delete total_thickness_input;
+	delete total_integrated_input;
+
+	/*Finally, add to inputs*/
+	this->inputs->AddInput((Input*)depth_averaged_input);
+}
+/*}}}*/
+void       Penta::InputExtrude(int enum_type,int start){/*{{{*/
+
+	_assert_(start==-1 || start==+1);
+
+	/*Are we on the the boundary we want to be?*/
+	if(start==-1 && !IsOnBase())    return;
+	if(start==+1 && !IsOnSurface()) return;
+
+	/*Step1: Get and Extrude original input: */
+	Input* base_input=(Input*)this->inputs->GetInput(enum_type);
+	if(!base_input) _error_("could not find input with enum " << EnumToStringx(enum_type));
+	base_input->Extrude(start);
+
+	/*Stop if there is only one layer of element*/
+	if(start==-1 && this->IsOnSurface()) return;
+	if(start==+1 && this->IsOnBase())    return;
+
+	/*Step 2: this input has been extruded for this element, now follow the upper element*/
+	Penta* penta=this;
+	for(;;){
+		/*get upper/lower Penta*/
+		if(start==-1) penta=penta->GetUpperPenta();
+		else          penta=penta->GetLowerPenta();
+		_assert_(penta->Id()!=this->id);
+
+		/*Add input of the basal element to penta->inputs*/
+		Input* copy=(Input*)base_input->copy();
+		penta->inputs->AddInput((Input*)copy);
+
+		/*Stop if we have reached the surface/base*/
+		if(start==-1 && penta->IsOnSurface()) break;
+		if(start==+1 && penta->IsOnBase())    break;
+	}
+}
+/*}}}*/
+void       Penta::InputScale(int enum_type,IssmDouble scale_factor){/*{{{*/
+
+	Input* input=NULL;
+
+	/*Make a copy of the original input: */
+	input=(Input*)this->inputs->GetInput(enum_type);
+	if(!input)_error_("could not find old input with enum: " << EnumToStringx(enum_type));
+
+	/*Scale: */
+	input->Scale(scale_factor);
+}
+/*}}}*/
+void       Penta::InputUpdateFromIoModel(int index,IoModel* iomodel){ /*{{{*/
+
+	/*Intermediaries*/
+	int         i,j;
+	int         penta_vertex_ids[NUMVERTICES];
+	IssmDouble  nodeinputs[NUMVERTICES];
+	IssmDouble  cmmininputs[NUMVERTICES];
+	IssmDouble  cmmaxinputs[NUMVERTICES];
+
+	IssmDouble  yts;
+	bool    control_analysis;
+	char**  controls = NULL;
+	int     num_control_type,num_responses;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&yts,"md.constants.yts");
+	iomodel->FindConstant(&control_analysis,"md.inversion.iscontrol");
+	if(control_analysis) iomodel->FindConstant(&num_control_type,"md.inversion.num_control_parameters");
+	if(control_analysis) iomodel->FindConstant(&num_responses,"md.inversion.num_cost_functions");
+
+	/*Recover vertices ids needed to initialize inputs*/
+	_assert_(iomodel->elements);
+	for(i=0;i<NUMVERTICES;i++){ 
+		penta_vertex_ids[i]=iomodel->elements[NUMVERTICES*index+i]; //ids for vertices are in the elements array from Matlab
+	}
+
+	/*Control Inputs*/
+	if (control_analysis){
+		iomodel->FindConstant(&controls,NULL,"md.inversion.control_parameters");
+		for(i=0;i<num_control_type;i++){
+			_assert_(controls[i]);
+			int control = StringToEnumx(controls[i]);
+			switch(control){
+				case BalancethicknessThickeningRateEnum:
+					if (iomodel->Data("md.balancethickness.thickening_rate")){
+						for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data("md.balancethickness.thickening_rate")[penta_vertex_ids[j]-1];
+						for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(penta_vertex_ids[j]-1)*num_control_type+i]/yts;
+						for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(penta_vertex_ids[j]-1)*num_control_type+i]/yts;
+						this->inputs->AddInput(new ControlInput(BalancethicknessThickeningRateEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+					}
+					break;
+				case VxEnum:
+					if (iomodel->Data("md.initialization.vx")){
+						for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data("md.initialization.vx")[penta_vertex_ids[j]-1];
+						for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(penta_vertex_ids[j]-1)*num_control_type+i]/yts;
+						for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(penta_vertex_ids[j]-1)*num_control_type+i]/yts;
+						this->inputs->AddInput(new ControlInput(VxEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+					}
+					break;
+				case VyEnum:
+					if (iomodel->Data("md.initialization.vy")){
+						for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data("md.initialization.vy")[penta_vertex_ids[j]-1];
+						for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(penta_vertex_ids[j]-1)*num_control_type+i]/yts;
+						for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(penta_vertex_ids[j]-1)*num_control_type+i]/yts;
+						this->inputs->AddInput(new ControlInput(VyEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+					}
+					break;
+				case FrictionCoefficientEnum:
+					if (iomodel->Data("md.friction.coefficient")){
+						for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data("md.friction.coefficient")[penta_vertex_ids[j]-1];
+						for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(penta_vertex_ids[j]-1)*num_control_type+i];
+						for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(penta_vertex_ids[j]-1)*num_control_type+i];
+						this->inputs->AddInput(new ControlInput(FrictionCoefficientEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+					}
+					break;
+				case MaterialsRheologyBbarEnum:
+					if(iomodel->Data("md.materials.rheology_B")){
+						for(j=0;j<NUMVERTICES;j++) nodeinputs[j]=iomodel->Data("md.materials.rheology_B")[penta_vertex_ids[j]-1];
+						for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(penta_vertex_ids[j]-1)*num_control_type+i];
+						for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(penta_vertex_ids[j]-1)*num_control_type+i];
+						this->inputs->AddInput(new ControlInput(MaterialsRheologyBEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+					}
+					break;
+				case DamageDbarEnum:
+					if(iomodel->Data("md.damage.D")){
+						for(j=0;j<NUMVERTICES;j++) nodeinputs[j]=iomodel->Data("md.damage.D")[penta_vertex_ids[j]-1];
+						for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(penta_vertex_ids[j]-1)*num_control_type+i];
+						for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(penta_vertex_ids[j]-1)*num_control_type+i];
+						this->inputs->AddInput(new ControlInput(DamageDEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+					}
+					break;
+				default:
+					_error_("Control " << EnumToStringx(control) << " not implemented yet");
+			}
+		}
+		for(i=0;i<num_control_type;i++) xDelete<char>(controls[i]);
+		xDelete<char*>(controls);
+	}
+
+	/*Need to know the type of approximation for this element*/
+	if(iomodel->Data("md.flowequation.element_equation")){
+		this->inputs->AddInput(new IntInput(ApproximationEnum,IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[index]))));
+	}
+
+	/*DatasetInputs*/
+	if(control_analysis && iomodel->Data("md.inversion.cost_functions_coefficients")) {
+
+		/*Generate cost functions associated with the iomodel*/
+		char**	cost_functions			= NULL;
+		int*		cost_functions_enums = NULL;
+		int		num_cost_functions;
+
+		iomodel->FindConstant(&num_cost_functions,"md.inversion.num_cost_functions");
+		iomodel->FindConstant(&cost_functions,&num_cost_functions,"md.inversion.cost_functions");
+		if(num_cost_functions<1) _error_("No cost functions found");
+		cost_functions_enums=xNew<int>(num_cost_functions);
+		for(j=0;j<num_cost_functions;j++){ cost_functions_enums[j]=StringToEnumx(cost_functions[j]); }
+
+		/*Create inputs and add to DataSetInput*/
+		DatasetInput* datasetinput=new DatasetInput(InversionCostFunctionsCoefficientsEnum);
+		for(i=0;i<num_responses;i++){
+			for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data("md.inversion.cost_functions_coefficients")[(penta_vertex_ids[j]-1)*num_responses+i];
+			datasetinput->AddInput(new PentaInput(InversionCostFunctionsCoefficientsEnum,nodeinputs,P1Enum),cost_functions_enums[i]);
+		}
+
+		/*Add datasetinput to element inputs*/
+		this->inputs->AddInput(datasetinput);
+
+		/*Free resources*/
+		for(int j=0;j<num_cost_functions;j++) xDelete<char>(cost_functions[j]);
+		xDelete<char*>(cost_functions);
+		xDelete<int>(cost_functions_enums);
+	}
+}
+/*}}}*/
+void       Penta::InputUpdateFromSolutionOneDof(IssmDouble* solution,int enum_type){/*{{{*/
+
+	/*Intermediary*/
+	int* doflist = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(this->element_type);
+
+	/*Fetch dof list and allocate solution vector*/
+	GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values    = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(int i=0;i<numnodes;i++){
+		values[i]=solution[doflist[i]];
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Add input to the element: */
+	this->inputs->AddInput(new PentaInput(enum_type,values,P1Enum));
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<int>(doflist);
+}
+/*}}}*/
+void       Penta::InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solution,int enum_type){/*{{{*/
+
+	const int  numdof   = NDOF1*NUMVERTICES;
+	const int  numdof2d = NDOF1*NUMVERTICES2D;
+
+	IssmDouble  values[numdof];
+	int*    doflist = NULL;
+	Penta  *penta   = NULL;
+
+	/*If not on bed, return*/
+	if (!IsOnBase()) return;
+
+	/*Get dof list: */
+	GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+
+	/*Use the dof list to index into the solution vector and extrude it */
+	for(int i=0;i<numdof2d;i++){
+		values[i]         =solution[doflist[i]];
+		values[i+numdof2d]=values[i];
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Start looping over all elements above current element and update all inputs*/
+	penta=this;
+	for(;;){
+		/*Add input to the element: */
+		penta->inputs->AddInput(new PentaInput(enum_type,values,P1Enum));
+
+		/*Stop if we have reached the surface*/
+		if (penta->IsOnSurface()) break;
+
+		/* get upper Penta*/
+		penta=penta->GetUpperPenta(); _assert_(penta->Id()!=this->id);
+	}
+
+	/*Free ressources:*/
+	xDelete<int>(doflist);
+}
+/*}}}*/
+void       Penta::InputUpdateFromVector(IssmDouble* vector, int name, int type){/*{{{*/
+
+	const int   numdof         = NDOF1 *NUMVERTICES;
+	int        *doflist        = NULL;
+	IssmDouble  values[numdof];
+
+	/*Check that name is an element input*/
+	if(!IsInput(name)) _error_("Enum "<<EnumToStringx(name)<<" is not in IsInput");
+
+	switch(type){
+		case VertexPIdEnum: 
+			for (int i=0;i<NUMVERTICES;i++){
+				values[i]=vector[this->vertices[i]->Pid()];
+			}
+			/*update input*/
+			this->inputs->AddInput(new PentaInput(name,values,P1Enum));
+			return;
+
+		case VertexSIdEnum: 
+			for (int i=0;i<NUMVERTICES;i++){
+				values[i]=vector[this->vertices[i]->Sid()];
+			}
+			/*update input*/
+			this->inputs->AddInput(new PentaInput(name,values,P1Enum));
+			return;
+
+		case NodesEnum:
+			/*Get dof list: */
+			GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+
+			/*Use the dof list to index into the vector: */
+			for(int i=0;i<numdof;i++){
+				values[i]=vector[doflist[i]];
+				if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+				if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+			}
+			/*Add input to the element: */
+			this->inputs->AddInput(new PentaInput(name,values,P1Enum));
+
+			/*Free ressources:*/
+			xDelete<int>(doflist);
+			return;
+
+	  case NodeSIdEnum:
+			for(int i=0;i<NUMVERTICES;i++){
+				values[i]=vector[nodes[i]->Sid()];
+				if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+				if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+			}
+			/*Add input to the element: */
+			this->inputs->AddInput(new PentaInput(name,values,P1Enum));
+
+			/*Free ressources:*/
+			xDelete<int>(doflist);
+			return;
+
+	  default:
+			_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
+	}
+}
+/*}}}*/
+bool       Penta::IsIcefront(void){/*{{{*/
+
+	bool isicefront;
+	int i,nrice;
+   IssmDouble ls[NUMVERTICES];
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&ls[0],MaskIceLevelsetEnum);
+
+	/* If only one vertex has ice, there is an ice front here */
+	isicefront=false;
+	if(IsIceInElement()){
+		nrice=0;       
+		for(i=0;i<NUMVERTICES2D;i++)
+			if(ls[i]<0.) nrice++;
+		if(nrice==1) isicefront= true;
+	}
+	return isicefront;
+}/*}}}*/
+bool       Penta::IsNodeOnShelfFromFlags(IssmDouble* flags){/*{{{*/
+
+	int  i;
+	bool shelf=false;
+
+	for(i=0;i<NUMVERTICES;i++){
+		if (flags[vertices[i]->Pid()]<0.){
+			shelf=true;
+			break;
+		}
+	}
+	return shelf;
+}
+/*}}}*/
+bool       Penta::IsOnBase(void){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	IssmDouble sum;
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&values[0],MeshVertexonbaseEnum);
+	sum = values[0]+values[1]+values[2]+values[3]+values[4]+values[5];
+	_assert_(sum==0. || sum==3.);
+
+	if(sum==3){
+		return true;
+	}
+	else{
+		return false;
+	}
+}
+/*}}}*/
+bool       Penta::IsOnSurface(void){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	IssmDouble sum;
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&values[0],MeshVertexonsurfaceEnum);
+	sum = values[0]+values[1]+values[2]+values[3]+values[4]+values[5];
+	_assert_(sum==0. || sum==3.);
+
+	if(sum==3){
+		return true;
+	}
+	else{
+		return false;
+	}
+}
+/*}}}*/
+bool       Penta::IsZeroLevelset(int levelset_enum){/*{{{*/
+
+	bool        iszerols;
+	IssmDouble  ls[NUMVERTICES];
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&ls[0],levelset_enum);
+
+	/*If the level set has always same sign, there is no ice front here*/
+	iszerols = false;
+	if(IsIceInElement()){
+		if(ls[0]*ls[1]<0. || ls[0]*ls[2]<0. || (ls[0]*ls[1]*ls[2]==0. && ls[0]*ls[1]+ls[0]*ls[2]+ls[1]*ls[2]<=0.)){
+			iszerols = true;
+		}
+	}
+	return iszerols;
+}
+/*}}}*/
+void       Penta::JacobianDeterminant(IssmDouble* pJdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetJacobianDeterminant(pJdet,xyz_list,(GaussPenta*)gauss);
+
+}
+/*}}}*/
+void       Penta::JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetTriaJacobianDeterminant(pJdet,xyz_list_base,(GaussPenta*)gauss);
+
+}
+/*}}}*/
+void       Penta::JacobianDeterminantLine(IssmDouble* pJdet,IssmDouble* xyz_list_line,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetSegmentJacobianDeterminant(pJdet,xyz_list_line,(GaussPenta*)gauss);
+
+}
+/*}}}*/
+void       Penta::JacobianDeterminantSurface(IssmDouble* pJdet,IssmDouble* xyz_list_quad,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetQuadJacobianDeterminant(pJdet,xyz_list_quad,(GaussPenta*)gauss);
+
+}
+/*}}}*/
+void       Penta::JacobianDeterminantTop(IssmDouble* pJdet,IssmDouble* xyz_list_top,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetTriaJacobianDeterminant(pJdet,xyz_list_top,(GaussPenta*)gauss);
+
+}
+/*}}}*/
+IssmDouble Penta::MassFlux(IssmDouble* segment){/*{{{*/
+
+	IssmDouble mass_flux=0;
+
+	if(!IsOnBase()) return mass_flux;
+
+	/*Depth Averaging Vx and Vy*/
+	this->InputDepthAverageAtBase(VxEnum,VxAverageEnum);
+	this->InputDepthAverageAtBase(VyEnum,VyAverageEnum);
+
+	/*Spawn Tria element from the base of the Penta: */
+	Tria* tria=(Tria*)SpawnTria(0,1,2);
+	mass_flux=tria->MassFlux(segment);
+	delete tria->material; delete tria;
+
+	/*Delete Vx and Vy averaged*/
+	this->inputs->DeleteInput(VxAverageEnum);
+	this->inputs->DeleteInput(VyAverageEnum);
+
+	/*clean up and return*/
+	return mass_flux;
+}
+/*}}}*/
+IssmDouble Penta::MassFlux(IssmDouble x1, IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id){/*{{{*/
+
+	IssmDouble mass_flux=0;
+
+	if(!IsOnBase()) return mass_flux;
+
+	/*Depth Averaging Vx and Vy*/
+	this->InputDepthAverageAtBase(VxEnum,VxAverageEnum);
+	this->InputDepthAverageAtBase(VyEnum,VyAverageEnum);
+
+	/*Spawn Tria element from the base of the Penta: */
+	Tria* tria=(Tria*)SpawnTria(0,1,2);
+	mass_flux=tria->MassFlux(x1,y1,x2,y2,segment_id);
+	delete tria->material; delete tria;
+
+	/*Delete Vx and Vy averaged*/
+	this->inputs->DeleteInput(VxAverageEnum);
+	this->inputs->DeleteInput(VyAverageEnum);
+
+	/*clean up and return*/
+	return mass_flux;
+}
+/*}}}*/
+IssmDouble Penta::MinEdgeLength(IssmDouble* xyz_list){/*{{{*/
+	/*Return the minimum lenght of the nine egdes of the penta*/
+
+	int    i,node0,node1;
+	int    edges[9][2]={{0,1},{0,2},{1,2},{3,4},{3,5},{4,5},{0,3},{1,4},{2,5}}; //list of the nine edges
+	IssmDouble length;
+	IssmDouble minlength=-1;
+
+	for(i=0;i<9;i++){
+		/*Find the two nodes for this edge*/
+		node0=edges[i][0];
+		node1=edges[i][1];
+
+		/*Compute the length of this edge and compare it to the minimal length*/
+		length=sqrt(pow(xyz_list[node0*3+0]-xyz_list[node1*3+0],2)+pow(xyz_list[node0*3+1]-xyz_list[node1*3+1],2)+pow(xyz_list[node0*3+2]-xyz_list[node1*3+2],2));
+		if(length<minlength || minlength<0) minlength=length;
+	}
+
+	return minlength;
+}
+/*}}}*/
+Gauss*     Penta::NewGauss(void){/*{{{*/
+	return new GaussPenta();
+}
+/*}}}*/
+Gauss*     Penta::NewGauss(int order){/*{{{*/
+	return new GaussPenta(order,order);
+}
+/*}}}*/
+Gauss*     Penta::NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert){/*{{{*/
+
+	IssmDouble  area_coordinates[4][3];
+
+	GetAreaCoordinates(&area_coordinates[0][0],xyz_list_front,xyz_list,4);
+
+	return new GaussPenta(area_coordinates,order_horiz,order_vert);
+}
+/*}}}*/
+Gauss*     Penta::NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order){/*{{{*/
+	return new GaussPenta(point1,fraction1,fraction2,mainlyfloating,order);
+}
+/*}}}*/
+Gauss*     Penta::NewGaussBase(int order){/*{{{*/
+	return new GaussPenta(0,1,2,order);
+}
+/*}}}*/
+Gauss*     Penta::NewGaussLine(int vertex1,int vertex2,int order){/*{{{*/
+	return new GaussPenta(vertex1,vertex2,order);
+}
+/*}}}*/
+Gauss*     Penta::NewGaussTop(int order){/*{{{*/
+	return new GaussPenta(3,4,5,order);
+}
+/*}}}*/
+void       Penta::NodalFunctions(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctions(basis,(GaussPenta*)gauss,this->element_type);
+
+}
+/*}}}*/
+void       Penta::NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussPenta*)gauss,this->element_type);
+
+}
+/*}}}*/
+void       Penta::NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussPenta*)gauss,this->VelocityInterpolation());
+
+}
+/*}}}*/
+void       Penta::NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussPenta*)gauss,P1bubbleEnum);
+
+}
+/*}}}*/
+void       Penta::NodalFunctionsPressure(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctions(basis,(GaussPenta*)gauss,this->PressureInterpolation());
+
+}
+/*}}}*/
+void       Penta::NodalFunctionsP1(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctions(basis,(GaussPenta*)gauss,P1Enum);
+
+}
+/*}}}*/
+void       Penta::NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussPenta*)gauss,P1Enum);
+
+}
+/*}}}*/
+void       Penta::NodalFunctionsP2(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctions(basis,(GaussPenta*)gauss,P2Enum);
+
+}
+/*}}}*/
+void       Penta::NodalFunctionsVelocity(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctions(basis,(GaussPenta*)gauss,this->VelocityInterpolation());
+
+}
+/*}}}*/
+void       Penta::NodalFunctionsTensor(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctions(basis,(GaussPenta*)gauss,this->TensorInterpolation());
+
+}
+/*}}}*/
+int        Penta::NodalValue(IssmDouble* pvalue, int index, int natureofdataenum){/*{{{*/
+
+	int i;
+	int found=0;
+	IssmDouble value;
+	Input* data=NULL;
+	GaussPenta* gauss=NULL;
+
+	/*First, serarch the input: */
+	data=inputs->GetInput(natureofdataenum); 
+
+	/*figure out if we have the vertex id: */
+	found=0;
+	for(i=0;i<NUMVERTICES;i++){
+		if(index==vertices[i]->Id()){
+			/*Do we have natureofdataenum in our inputs? :*/
+			if(data){
+				/*ok, we are good. retrieve value of input at vertex :*/
+				gauss=new GaussPenta(); gauss->GaussVertex(i);
+				data->GetInputValue(&value,gauss);
+				found=1;
+				break;
+			}
+		}
+	}
+
+	delete gauss;
+	if(found)*pvalue=value;
+	return found;
+}
+/*}}}*/
+void       Penta::NormalBase(IssmDouble* bed_normal,IssmDouble* xyz_list){/*{{{*/
+
+	IssmDouble v13[3],v23[3];
+	IssmDouble normal[3];
+	IssmDouble normal_norm;
+
+	for(int i=0;i<3;i++){
+		v13[i]=xyz_list[0*3+i]-xyz_list[2*3+i];
+		v23[i]=xyz_list[1*3+i]-xyz_list[2*3+i];
+	}
+
+	normal[0]=v13[1]*v23[2]-v13[2]*v23[1];
+	normal[1]=v13[2]*v23[0]-v13[0]*v23[2];
+	normal[2]=v13[0]*v23[1]-v13[1]*v23[0];
+	normal_norm=sqrt(normal[0]*normal[0]+ normal[1]*normal[1]+ normal[2]*normal[2]);
+
+	/*Bed normal is opposite to surface normal*/
+	bed_normal[0]=-normal[0]/normal_norm;
+	bed_normal[1]=-normal[1]/normal_norm;
+	bed_normal[2]=-normal[2]/normal_norm;
+}
+/*}}}*/
+void       Penta::NormalSection(IssmDouble* normal,IssmDouble* xyz_list){/*{{{*/
+
+	/*Build unit outward pointing vector*/
+	IssmDouble AB[3];
+	IssmDouble AC[3];
+	IssmDouble norm;
+
+	AB[0]=xyz_list[1*3+0] - xyz_list[0*3+0];
+	AB[1]=xyz_list[1*3+1] - xyz_list[0*3+1];
+	AB[2]=xyz_list[1*3+2] - xyz_list[0*3+2];
+	AC[0]=xyz_list[2*3+0] - xyz_list[0*3+0];
+	AC[1]=xyz_list[2*3+1] - xyz_list[0*3+1];
+	AC[2]=xyz_list[2*3+2] - xyz_list[0*3+2];
+
+	cross(normal,AB,AC);
+	norm=sqrt(normal[0]*normal[0]+normal[1]*normal[1]+normal[2]*normal[2]);
+
+	for(int i=0;i<3;i++) normal[i]=normal[i]/norm;
+}
+/*}}}*/
+void       Penta::NormalTop(IssmDouble* top_normal,IssmDouble* xyz_list){/*{{{*/
+
+	int i;
+	IssmDouble v13[3],v23[3];
+	IssmDouble normal[3];
+	IssmDouble normal_norm;
+
+	for (i=0;i<3;i++){
+		v13[i]=xyz_list[0*3+i]-xyz_list[2*3+i];
+		v23[i]=xyz_list[1*3+i]-xyz_list[2*3+i];
+	}
+
+	normal[0]=v13[1]*v23[2]-v13[2]*v23[1];
+	normal[1]=v13[2]*v23[0]-v13[0]*v23[2];
+	normal[2]=v13[0]*v23[1]-v13[1]*v23[0];
+	normal_norm=sqrt(normal[0]*normal[0] + normal[1]*normal[1] + normal[2]*normal[2]);
+
+	top_normal[0]=normal[0]/normal_norm;
+	top_normal[1]=normal[1]/normal_norm;
+	top_normal[2]=normal[2]/normal_norm;
+}
+/*}}}*/
+int        Penta::NumberofNodesPressure(void){/*{{{*/
+	return PentaRef::NumberofNodes(this->PressureInterpolation());
+}
+/*}}}*/
+int        Penta::NumberofNodesVelocity(void){/*{{{*/
+	return PentaRef::NumberofNodes(this->VelocityInterpolation());
+}
+/*}}}*/
+int        Penta::ObjectEnum(void){/*{{{*/
+
+	return PentaEnum;
+
+}
+/*}}}*/
+void       Penta::PotentialUngrounding(Vector<IssmDouble>* potential_ungrounding){/*{{{*/
+
+	IssmDouble  h[NUMVERTICES],r[NUMVERTICES],gl[NUMVERTICES];
+	IssmDouble  bed_hydro;
+	IssmDouble  rho_water,rho_ice,density;
+
+	/*material parameters: */
+	rho_water=matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	density=rho_ice/rho_water;
+	GetInputListOnVertices(&h[0],ThicknessEnum);
+	GetInputListOnVertices(&r[0],BedEnum);
+	GetInputListOnVertices(&gl[0],MaskGroundediceLevelsetEnum);
+
+	/*go through vertices, and figure out which ones are on the ice sheet, and want to unground: */
+	for(int i=0;i<NUMVERTICES;i++){
+		/*Find if grounded vertices want to start floating*/
+		if (gl[i]>0.){
+			bed_hydro=-density*h[i];
+			if(bed_hydro>r[i]){
+				/*Vertex that could potentially unground, flag it*/
+				potential_ungrounding->SetValue(vertices[i]->Pid(),1,INS_VAL);
+			}
+		}
+	}
+}
+/*}}}*/
+int        Penta::PressureInterpolation(void){/*{{{*/
+	return PentaRef::PressureInterpolation(this->element_type);
+}
+/*}}}*/
+void       Penta::ReduceMatrices(ElementMatrix* Ke,ElementVector* pe){/*{{{*/
+
+	int analysis_type;
+	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	if(pe){
+		if(analysis_type==StressbalanceAnalysisEnum){
+			if(this->element_type==MINIcondensedEnum){
+				int approximation;
+				inputs->GetInputValue(&approximation,ApproximationEnum);
+				if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+					//Do nothing, condensation already done in PVectorCoupling
+				}
+				else{
+					int indices[3]={18,19,20};
+					pe->StaticCondensation(Ke,3,&indices[0]);
+				}
+			}
+			else if(this->element_type==P1bubblecondensedEnum){
+				int size   = nodes[6]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+				int offset = 0;
+				for(int i=0;i<6;i++) offset+=nodes[i]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+				int* indices=xNew<int>(size);
+				for(int i=0;i<size;i++) indices[i] = offset+i;
+				pe->StaticCondensation(Ke,size,indices);
+				xDelete<int>(indices);
+			}
+		}
+	}
+
+	if(Ke){
+		if(analysis_type==StressbalanceAnalysisEnum){
+			int approximation;
+			inputs->GetInputValue(&approximation,ApproximationEnum);
+			if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+				//Do nothing condensatino already done for Stokes part
+			}
+			else{
+				if(this->element_type==MINIcondensedEnum){
+					int indices[3]={18,19,20};
+					Ke->StaticCondensation(3,&indices[0]);
+				}
+				else if(this->element_type==P1bubblecondensedEnum){
+					int size   = nodes[6]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+					int offset = 0;
+					for(int i=0;i<6;i++) offset+=nodes[i]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+					int* indices=xNew<int>(size);
+					for(int i=0;i<size;i++) indices[i] = offset+i;
+					Ke->StaticCondensation(size,indices);
+					xDelete<int>(indices);
+				}
+			}
+		}
+	}
+}
+/*}}}*/
+void       Penta::ResetFSBasalBoundaryCondition(void){/*{{{*/
+
+	int          approximation;
+	int          numindices;
+	int         *indices = NULL;
+	IssmDouble   slopex,slopey,groundedice;
+	IssmDouble   xz_plane[6];
+	IssmDouble*  vertexapproximation= NULL;
+
+	/*For FS only: we want the CS to be tangential to the bedrock*/
+	inputs->GetInputValue(&approximation,ApproximationEnum);
+	if(!IsOnBase() || (approximation!=FSApproximationEnum && approximation!=SSAFSApproximationEnum &&  approximation!=HOFSApproximationEnum)) return;
+
+	/*Get number of nodes for velocity only and base*/
+	BasalNodeIndices(&numindices,&indices,this->VelocityInterpolation());
+
+	/*Get inputs*/
+	Input* slopex_input=inputs->GetInput(BedSlopeXEnum); _assert_(slopex_input);
+	Input* slopey_input=inputs->GetInput(BedSlopeYEnum); _assert_(slopey_input);
+	Input* groundedicelevelset_input=inputs->GetInput(MaskGroundediceLevelsetEnum); _assert_(groundedicelevelset_input);
+
+	/*Loop over basal nodes and update their CS*/
+	GaussPenta* gauss = new GaussPenta();
+	for(int i=0;i<numindices;i++){//FIXME
+		gauss->GaussNode(this->VelocityInterpolation(),indices[i]);
+
+		slopex_input->GetInputValue(&slopex,gauss);
+		slopey_input->GetInputValue(&slopey,gauss);
+		groundedicelevelset_input->GetInputValue(&groundedice,gauss);
+
+		/*New X axis          New Z axis*/
+		xz_plane[0]=1.;       xz_plane[3]=-slopex;  
+		xz_plane[1]=0.;       xz_plane[4]=-slopey;  
+		xz_plane[2]=slopex;   xz_plane[5]=1.;          
+
+		if(groundedice>=0){
+			if(this->nodes[indices[i]]->GetApproximation()==FSvelocityEnum){
+				this->nodes[indices[i]]->DofInSSet(2); //vz 
+			}
+			else if(this->nodes[indices[i]]->GetApproximation()==SSAFSApproximationEnum || this->nodes[indices[i]]->GetApproximation()==HOFSApproximationEnum){
+				this->nodes[indices[i]]->DofInSSet(4); //vz 
+			}
+			else _error_("Flow equation approximation"<<EnumToStringx(this->nodes[indices[i]]->GetApproximation())<<" not supported yet");
+		}
+		else{
+			if(this->nodes[indices[i]]->GetApproximation()==FSvelocityEnum){
+				this->nodes[indices[i]]->DofInFSet(2); //vz
+			}
+			else if(this->nodes[indices[i]]->GetApproximation()==SSAFSApproximationEnum || this->nodes[indices[i]]->GetApproximation()==HOFSApproximationEnum){
+				this->nodes[indices[i]]->DofInFSet(4); //vz 
+			}
+			else _error_("Flow equation approximation"<<EnumToStringx(this->nodes[indices[i]]->GetApproximation())<<" not supported yet");
+		}
+
+		XZvectorsToCoordinateSystem(&this->nodes[indices[i]]->coord_system[0][0],&xz_plane[0]);
+	}
+
+	/*cleanup*/
+	xDelete<int>(indices);
+	delete gauss;
+}
+/*}}}*/
+void       Penta::ResetHooks(){/*{{{*/
+
+	this->nodes=NULL;
+	this->vertices=NULL;
+	this->material=NULL;
+	this->matpar=NULL;
+	this->verticalneighbors=NULL;
+	this->parameters=NULL;
+
+	//deal with ElementHook mother class
+	for(int i=0;i<this->numanalyses;i++) if(this->hnodes[i]) this->hnodes[i]->reset();
+	this->hvertices->reset();
+	this->hmaterial->reset();
+	this->hmatpar->reset();
+	if(this->hneighbors) this->hneighbors->reset();
+
+}
+/*}}}*/
+void       Penta::SetClone(int* minranks){/*{{{*/
+
+	_error_("not implemented yet");
+}
+/*}}}*/
+void       Penta::SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index){/*{{{*/
+
+	IssmDouble  values[NUMVERTICES];
+	int         vertexpidlist[NUMVERTICES],control_init;
+
+	/*Specific case for depth averaged quantities*/
+	control_init=control_enum;
+	if(control_enum==MaterialsRheologyBbarEnum){
+		control_enum=MaterialsRheologyBEnum;
+		if(!IsOnBase()) return;
+	}
+	if(control_enum==DamageDbarEnum){
+		control_enum=DamageDEnum;
+		if(!IsOnBase()) return;
+	}
+
+	/*Get out if this is not an element input*/
+	if(!IsInput(control_enum)) return;
+
+	/*Prepare index list*/
+	GradientIndexing(&vertexpidlist[0],control_index);
+
+	/*Get values on vertices*/
+	for(int i=0;i<NUMVERTICES;i++){
+		values[i]=vector[vertexpidlist[i]];
+	}
+	Input* new_input = new PentaInput(control_enum,values,P1Enum);
+	Input* input=(Input*)this->inputs->GetInput(control_enum);   _assert_(input);
+	if(input->ObjectEnum()!=ControlInputEnum){
+		_error_("input " << EnumToStringx(control_enum) << " is not a ControlInput");
+	}
+
+	((ControlInput*)input)->SetInput(new_input);
+
+	if(control_init==MaterialsRheologyBbarEnum){
+		this->InputExtrude(control_enum,-1);
+	}
+	if(control_init==DamageDbarEnum){
+		this->InputExtrude(control_enum,-1);
+	}
+}
+/*}}}*/
+void       Penta::SetCurrentConfiguration(Elements* elementsin, Loads* loadsin, Nodes* nodesin, Materials* materialsin, Parameters* parametersin){/*{{{*/
+
+	/*go into parameters and get the analysis_counter: */
+	int analysis_counter;
+	parametersin->FindParam(&analysis_counter,AnalysisCounterEnum);
+
+	/*Get Element type*/
+	this->element_type=this->element_type_list[analysis_counter];
+
+	/*Pick up nodes*/
+	if(this->hnodes[analysis_counter]) this->nodes=(Node**)this->hnodes[analysis_counter]->deliverp();
+	else this->nodes=NULL;
+
+}
+/*}}}*/
+void       Penta::SetTemporaryElementType(int element_type_in){/*{{{*/
+	this->element_type=element_type_in;
+}
+/*}}}*/
+Element*   Penta::SpawnBasalElement(void){/*{{{*/
+
+	_assert_(this->IsOnBase());
+
+	switch(this->material->ObjectEnum()){
+		case MaticeEnum:
+			this->InputDepthAverageAtBase(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum);
+			if(this->material->IsDamage())this->InputDepthAverageAtBase(DamageDEnum,DamageDbarEnum);
+			break;
+		case MatestarEnum:
+			this->InputDepthAverageAtBase(MaterialsRheologyKoEnum,MaterialsRheologyKobarEnum);
+			this->InputDepthAverageAtBase(MaterialsRheologyEcEnum,MaterialsRheologyEcbarEnum);
+			this->InputDepthAverageAtBase(MaterialsRheologyEsEnum,MaterialsRheologyEsbarEnum);
+			break;
+		default:
+			_error_("not supported yet");
+	}
+	if(this->inputs->GetInput(VxEnum)) this->InputDepthAverageAtBase(VxEnum,VxAverageEnum);
+	if(this->inputs->GetInput(VyEnum)) this->InputDepthAverageAtBase(VyEnum,VyAverageEnum);
+	if(this->inputs->GetInput(CalvingratexEnum)) this->InputDepthAverageAtBase(CalvingratexEnum,CalvingratexAverageEnum);
+	if(this->inputs->GetInput(CalvingrateyEnum)) this->InputDepthAverageAtBase(CalvingrateyEnum,CalvingrateyAverageEnum);
+	Tria* tria=(Tria*)SpawnTria(0,1,2);
+	switch(this->material->ObjectEnum()){
+		case MaticeEnum:
+			this->inputs->DeleteInput(MaterialsRheologyBbarEnum);
+			this->inputs->DeleteInput(DamageDbarEnum);
+			break;
+		case MatestarEnum:
+			break;
+		default:
+			_error_("not supported yet");
+	}
+	this->inputs->DeleteInput(VxAverageEnum);
+	this->inputs->DeleteInput(VyAverageEnum);
+	this->inputs->DeleteInput(CalvingratexAverageEnum);
+	this->inputs->DeleteInput(CalvingrateyAverageEnum);
+
+	return tria;
+}
+/*}}}*/
+Element*   Penta::SpawnTopElement(void){/*{{{*/
+
+	_assert_(this->IsOnSurface());
+
+	Tria* tria=(Tria*)SpawnTria(3,4,5);
+
+	return tria;
+}
+/*}}}*/
+Tria*      Penta::SpawnTria(int index1,int index2,int index3){/*{{{*/
+
+	int analysis_counter;
+
+	/*go into parameters and get the analysis_counter: */
+	this->parameters->FindParam(&analysis_counter,AnalysisCounterEnum);
+
+	/*Create Tria*/
+	Tria* tria=new Tria();
+	tria->id=this->id;
+	tria->inputs=(Inputs*)this->inputs->SpawnTriaInputs(index1,index2,index3);
+	tria->parameters=this->parameters;
+	tria->element_type=P1Enum; //Only P1 CG for now (TO BE CHANGED)
+	this->SpawnTriaHook(xDynamicCast<ElementHook*>(tria),index1,index2,index3);
+
+	/*Spawn material*/
+	tria->material=(Material*)this->material->copy2(tria);
+
+	/*recover nodes, material and matpar: */
+	tria->nodes=(Node**)tria->hnodes[analysis_counter]->deliverp();
+	tria->vertices=(Vertex**)tria->hvertices->deliverp();
+	tria->matpar=(Matpar*)tria->hmatpar->delivers();
+
+	/*Return new Tria*/
+	return tria;
+}
+/*}}}*/
+IssmDouble Penta::StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){/*{{{*/
+	/*Compute stabilization parameter*/
+	/*kappa=thermalconductivity/(rho_ice*hearcapacity) for thermal model*/
+	/*kappa=enthalpydiffusionparameter for enthalpy model*/
+
+	IssmDouble normu;
+	IssmDouble tau_parameter;
+
+	normu=pow(pow(u,2)+pow(v,2)+pow(w,2),0.5);
+	if(normu*diameter/(3*2*kappa)<1){ 
+		tau_parameter=pow(diameter,2)/(3*2*2*kappa);
+	}
+	else tau_parameter=diameter/(2*normu);
+
+	return tau_parameter;
+}
+/*}}}*/
+void       Penta::StrainRateparallel(){/*{{{*/
+
+	IssmDouble *xyz_list = NULL;
+	IssmDouble  epsilon[6];
+	GaussPenta* gauss=NULL;
+	IssmDouble  vx,vy,vel;
+	IssmDouble  strainxx;
+	IssmDouble  strainxy;
+	IssmDouble  strainyy;
+	IssmDouble  strainparallel[NUMVERTICES];
+
+	/* Get node coordinates and dof list: */
+	this->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will need*/
+	Input* vx_input=inputs->GetInput(VxEnum);                                  _assert_(vx_input);
+	Input* vy_input=inputs->GetInput(VyEnum);                                  _assert_(vy_input);
+	Input* vz_input=inputs->GetInput(VzEnum);												_assert_(vz_input);
+
+	/* Start looping on the number of vertices: */
+	gauss=new GaussPenta();
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		/* Get the value we need*/
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vel=vx*vx+vy*vy;
+
+		/*Compute strain rate and viscosity: */
+		this->StrainRateFS(&epsilon[0],xyz_list,gauss,vx_input,vy_input,vz_input);
+		strainxx=epsilon[0];
+		strainyy=epsilon[1];
+		strainxy=epsilon[3];
+
+		/*strainparallel= Strain rate along the ice flow direction */
+		strainparallel[iv]=(vx*vx*(strainxx)+vy*vy*(strainyy)+2*vy*vx*strainxy)/(vel+1.e-14);
+	}
+
+	/*Add input*/
+	this->inputs->AddInput(new PentaInput(StrainRateparallelEnum,&strainparallel[0],P1Enum));
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+}
+/*}}}*/
+void       Penta::StrainRateperpendicular(){/*{{{*/
+
+	IssmDouble *xyz_list = NULL;
+	IssmDouble  epsilon[6];
+	GaussPenta* gauss=NULL;
+	IssmDouble  vx,vy,vel;
+	IssmDouble  strainxx;
+	IssmDouble  strainxy;
+	IssmDouble  strainyy;
+	IssmDouble  strainperpendicular[NUMVERTICES];
+
+	/* Get node coordinates and dof list: */
+	this->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will need*/
+	Input* vx_input=inputs->GetInput(VxEnum);                                  _assert_(vx_input);
+	Input* vy_input=inputs->GetInput(VyEnum);                                  _assert_(vy_input);
+	Input* vz_input=inputs->GetInput(VzEnum);												_assert_(vz_input);
+
+	/* Start looping on the number of vertices: */
+	gauss=new GaussPenta();
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		/* Get the value we need*/
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vel=vx*vx+vy*vy;
+
+		/*Compute strain rate and viscosity: */
+		this->StrainRateFS(&epsilon[0],xyz_list,gauss,vx_input,vy_input,vz_input);
+		strainxx=epsilon[0];
+		strainyy=epsilon[1];
+		strainxy=epsilon[3];
+
+		/*strainperpendicular= Strain rate perpendicular to the ice flow direction */
+		strainperpendicular[iv]=(vx*vx*(strainyy)+vy*vy*(strainxx)-2*vy*vx*strainxy)/(vel+1.e-14);
+	}
+
+	/*Add input*/
+	this->inputs->AddInput(new PentaInput(StrainRateperpendicularEnum,&strainperpendicular[0],P1Enum));
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+}
+/*}}}*/
+void       Penta::StressIntensityFactor(){/*{{{*/
+
+	/* Check if we are on the base */
+	if(!IsOnBase()) return;
+
+	IssmDouble  ki[6]={0.};
+	IssmDouble  const_grav=9.81;
+	IssmDouble  rho_ice=900;
+	IssmDouble  rho_water=1000;
+	IssmDouble  Jdet[3];
+	IssmDouble  pressure,vx,vy,vel,deviaxx,deviaxy,deviayy,water_depth,prof,stress_xx,thickness;
+
+	Penta* penta=this;
+	for(;;){
+	
+		IssmDouble  xyz_list[NUMVERTICES][3];
+		/* Get node coordinates and dof list: */
+		::GetVerticesCoordinates(&xyz_list[0][0],penta->vertices,NUMVERTICES);
+
+		///*Compute the Jacobian for the vertical integration*/
+		Jdet[0]=(xyz_list[3][2]-xyz_list[0][2])*0.5;
+		Jdet[1]=(xyz_list[4][2]-xyz_list[1][2])*0.5;
+		Jdet[2]=(xyz_list[5][2]-xyz_list[2][2])*0.5;
+	
+		/*Retrieve all inputs we will need*/
+		Input* vx_input=inputs->GetInput(VxEnum);                                  _assert_(vx_input);
+		Input* vy_input=inputs->GetInput(VyEnum);                                  _assert_(vy_input);
+		Input* vel_input=inputs->GetInput(VelEnum);                                _assert_(vel_input);
+		Input* pressure_input=inputs->GetInput(PressureEnum);                      _assert_(pressure_input);
+		Input* deviaxx_input=inputs->GetInput(DeviatoricStressxxEnum);             _assert_(deviaxx_input);
+		Input* deviaxy_input=inputs->GetInput(DeviatoricStressxyEnum);             _assert_(deviaxy_input);
+		Input* deviayy_input=inputs->GetInput(DeviatoricStressyyEnum);             _assert_(deviayy_input);
+		Input* surface_input=inputs->GetInput(SurfaceEnum);								_assert_(surface_input);
+		Input* thickness_input=inputs->GetInput(ThicknessEnum);							_assert_(thickness_input);
+		
+		/* Start looping on the number of 2D vertices: */
+		for(int ig=0;ig<3;ig++){
+			GaussPenta* gauss=new GaussPenta(ig,3+ig,11);
+			for (int iv=gauss->begin();iv<gauss->end();iv++){
+				gauss->GaussPoint(iv);
+
+				/* Get the value we need*/
+				pressure_input->GetInputValue(&pressure,gauss);
+				vx_input->GetInputValue(&vx,gauss);
+				vy_input->GetInputValue(&vy,gauss);
+				vel_input->GetInputValue(&vel,gauss);
+				deviaxx_input->GetInputValue(&deviaxx,gauss);
+				deviaxy_input->GetInputValue(&deviaxy,gauss);
+				deviayy_input->GetInputValue(&deviayy,gauss);
+				surface_input->GetInputValue(&water_depth,gauss);
+				thickness_input->GetInputValue(&thickness,gauss);
+				prof=water_depth-penta->GetZcoord(&xyz_list[0][0],gauss);
+
+				/*stress_xx= Deviatoric stress along the ice flow direction plus cryostatic pressure */
+				stress_xx=(vx*vx*(deviaxx)+vy*vy*(deviayy)+2*vy*vx*deviaxy)/(vel*vel+1.e-6);
+
+				if(prof<water_depth&prof<thickness){
+					/* Compute the local stress intensity factor*/ 
+					ki[ig]+=Jdet[ig]*gauss->weight*stress_xx*StressIntensityIntegralWeight(prof,min(water_depth,thickness),thickness);
+				}
+			}
+			delete gauss;
+		}
+			
+		/*Stop if we have reached the surface/base*/
+		if(penta->IsOnSurface()) break;
+		
+		/*get upper Penta*/
+		penta=penta->GetUpperPenta();
+		_assert_(penta->Id()!=this->id);
+	}
+
+	/*Add input*/
+	this->inputs->AddInput(new PentaInput(StressIntensityFactorEnum,&ki[0],P1Enum));
+	this->InputExtrude(StressIntensityFactorEnum,-1);
+}
+/*}}}*/
+IssmDouble Penta::SurfaceArea(void){/*{{{*/
+
+	int    approximation;
+	IssmDouble S;
+	Tria*  tria=NULL;
+
+	/*retrieve inputs :*/
+	inputs->GetInputValue(&approximation,ApproximationEnum);
+
+	/*If on water, return 0: */
+	if(!IsIceInElement())return 0;
+
+	/*Bail out if this element if:
+	 * -> Non SSA not on the surface
+	 * -> SSA (2d model) and not on bed) */
+	if ((approximation!=SSAApproximationEnum && !IsOnSurface()) || (approximation==SSAApproximationEnum && !IsOnBase())){
+		return 0;
+	}
+	else if (approximation==SSAApproximationEnum){
+
+		/*This element should be collapsed into a tria element at its base. Create this tria element, 
+		 * and compute SurfaceArea*/
+		tria=(Tria*)SpawnTria(0,1,2);
+		S=tria->SurfaceArea();
+		delete tria->material; delete tria;
+		return S;
+	}
+	else{
+
+		tria=(Tria*)SpawnTria(3,4,5);
+		S=tria->SurfaceArea();
+		delete tria->material; delete tria;
+		return S;
+	}
+}
+/*}}}*/
+IssmDouble Penta::TimeAdapt(void){/*{{{*/
+
+	int    i;
+	IssmDouble C,dx,dy,dz,dt;
+	IssmDouble maxabsvx,maxabsvy,maxabsvz;
+	IssmDouble maxx,minx,maxy,miny,maxz,minz;
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*get CFL coefficient:*/
+	this->parameters->FindParam(&C,TimesteppingCflCoefficientEnum);
+
+	/*Get for Vx and Vy, the max of abs value: */
+	maxabsvx = this->inputs->MaxAbs(VxEnum);
+	maxabsvy = this->inputs->MaxAbs(VyEnum);
+	maxabsvz = this->inputs->MaxAbs(VzEnum);
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	minx=xyz_list[0][0];
+	maxx=xyz_list[0][0];
+	miny=xyz_list[0][1];
+	maxy=xyz_list[0][1];
+	minz=xyz_list[0][2];
+	maxz=xyz_list[0][2];
+
+	for(i=1;i<NUMVERTICES;i++){
+		if (xyz_list[i][0]<minx)minx=xyz_list[i][0];
+		if (xyz_list[i][0]>maxx)maxx=xyz_list[i][0];
+		if (xyz_list[i][1]<miny)miny=xyz_list[i][1];
+		if (xyz_list[i][1]>maxy)maxy=xyz_list[i][1];
+		if (xyz_list[i][2]<minz)minz=xyz_list[i][2];
+		if (xyz_list[i][2]>maxz)maxz=xyz_list[i][2];
+	}
+	dx=maxx-minx;
+	dy=maxy-miny;
+	dz=maxz-minz;
+
+	/*CFL criterion: */
+	dt=C/(maxabsvx/dx+maxabsvy/dy+maxabsvz/dz);
+
+	return dt;
+}/*}}}*/
+IssmDouble Penta::TotalFloatingBmb(void){/*{{{*/
+
+	/*The fbmb[kg yr-1] of one element is area[m2] * melting_rate [kg m^-2 yr^-1]*/
+	int        point1;
+	bool       mainlyfloating;
+	IssmDouble fbmb=0;
+	IssmDouble rho_ice,fraction1,fraction2,floatingmelt,Jdet;
+	IssmDouble Total_Fbmb=0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	Gauss*     gauss     = NULL;
+
+   if(!IsIceInElement() || !IsOnBase())return 0;
+
+	/*Get material parameters :*/
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	Input* floatingmelt_input = this->GetInput(BasalforcingsFloatingiceMeltingRateEnum); _assert_(floatingmelt_input); 
+	Input* gllevelset_input = this->GetInput(MaskGroundediceLevelsetEnum); _assert_(gllevelset_input);
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+	/* Start  looping on the number of gaussian points: */
+	gauss = this->NewGauss(point1,fraction1,fraction2,1-mainlyfloating,3);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+		this->JacobianDeterminantBase(&Jdet,&xyz_list[0][0],gauss);
+		floatingmelt_input->GetInputValue(&floatingmelt,gauss);
+		fbmb+=floatingmelt*Jdet*gauss->weight;
+	}
+
+   Total_Fbmb=rho_ice*fbmb;	        // from volume to mass
+
+	/*Return: */
+	delete gauss;
+	return Total_Fbmb;
+}
+/*}}}*/
+IssmDouble Penta::TotalGroundedBmb(void){/*{{{*/
+
+	/*The gbmb[kg yr-1] of one element is area[m2] * gounded melting rate [kg m^-2 yr^-1]*/
+	int        point1;
+	bool       mainlyfloating;
+	IssmDouble gbmb=0;
+	IssmDouble rho_ice,fraction1,fraction2,groundedmelt,Jdet;
+	IssmDouble Total_Gbmb=0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	Gauss*     gauss     = NULL;
+
+   if(!IsIceInElement() || !IsOnBase())return 0;
+
+	/*Get material parameters :*/
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	Input* groundedmelt_input = this->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(groundedmelt_input); 
+	Input* gllevelset_input = this->GetInput(MaskGroundediceLevelsetEnum); _assert_(gllevelset_input);
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+	/* Start  looping on the number of gaussian points: */
+	gauss = this->NewGauss(point1,fraction1,fraction2,mainlyfloating,3);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+		this->JacobianDeterminantBase(&Jdet,&xyz_list[0][0],gauss);
+		groundedmelt_input->GetInputValue(&groundedmelt,gauss);
+		gbmb+=groundedmelt*Jdet*gauss->weight;
+	}
+
+   Total_Gbmb=rho_ice*gbmb;	        // from volume to mass
+
+	/*Return: */
+	delete gauss;
+	return Total_Gbmb;
+}
+/*}}}*/
+IssmDouble Penta::TotalSmb(void){/*{{{*/
+
+	/*The smb[Gt yr-1] of one element is area[m2] * smb [ m ice yr^-1] * rho_ice [kg m-3] / 1e+10^12 */
+	IssmDouble base,smb,rho_ice;
+	IssmDouble Total_Smb=0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Get material parameters :*/
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+
+	if(!IsIceInElement() || !IsOnSurface()) return 0.;
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*First calculate the area of the base (cross section triangle)
+	 * http://en.wikipedia.org/wiki/Triangle
+	 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/
+	base = 1./2. * fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
+
+	/*Now get the average SMB over the element*/
+	Input* smb_input = inputs->GetInput(SmbMassBalanceEnum); _assert_(smb_input);
+
+	smb_input->GetInputAverage(&smb);
+	Total_Smb=rho_ice*base*smb;// smb on element in kg s-1
+
+	/*Return: */
+	return Total_Smb;
+}
+/*}}}*/
+void       Penta::Update(int index,IoModel* iomodel,int analysis_counter,int analysis_type,int finiteelement_type){ /*{{{*/
+
+	/*Intermediaries*/
+	int        i;
+	int        penta_vertex_ids[6];
+	IssmDouble nodeinputs[6];
+	IssmDouble yts;
+	bool       dakota_analysis;
+	int        numnodes;
+	int*       penta_node_ids = NULL;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&yts,"md.constants.yts");
+	iomodel->FindConstant(&dakota_analysis,"md.qmu.isdakota");
+
+	/*Checks if debuging*/
+	_assert_(iomodel->elements);
+
+	/*Recover element type*/
+	this->element_type_list[analysis_counter]=finiteelement_type;
+
+	/*Recover vertices ids needed to initialize inputs*/
+	for(i=0;i<6;i++) penta_vertex_ids[i]=iomodel->elements[6*index+i]; //ids for vertices are in the elements array from Matlab
+
+	/*Recover nodes ids needed to initialize the node hook.*/
+	switch(finiteelement_type){
+		case P1Enum:
+			numnodes         = 6;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[0]=iomodel->nodecounter+iomodel->elements[6*index+0];
+			penta_node_ids[1]=iomodel->nodecounter+iomodel->elements[6*index+1];
+			penta_node_ids[2]=iomodel->nodecounter+iomodel->elements[6*index+2];
+			penta_node_ids[3]=iomodel->nodecounter+iomodel->elements[6*index+3];
+			penta_node_ids[4]=iomodel->nodecounter+iomodel->elements[6*index+4];
+			penta_node_ids[5]=iomodel->nodecounter+iomodel->elements[6*index+5];
+			break;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			numnodes         = 7;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[0]=iomodel->nodecounter+iomodel->elements[6*index+0];
+			penta_node_ids[1]=iomodel->nodecounter+iomodel->elements[6*index+1];
+			penta_node_ids[2]=iomodel->nodecounter+iomodel->elements[6*index+2];
+			penta_node_ids[3]=iomodel->nodecounter+iomodel->elements[6*index+3];
+			penta_node_ids[4]=iomodel->nodecounter+iomodel->elements[6*index+4];
+			penta_node_ids[5]=iomodel->nodecounter+iomodel->elements[6*index+5];
+			penta_node_ids[6]=iomodel->nodecounter+iomodel->numberofvertices+index+1;
+			break;
+		case P1xP2Enum:
+			numnodes         = 9;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;
+			penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;
+			penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;
+			break;
+		case P1xP3Enum:
+			numnodes         = 12;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+0]+1;
+			penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+1]+1;
+			penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+2]+1;
+			penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+0]+2;
+			penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+1]+2;
+			penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+2]+2;
+			break;
+		case P2xP1Enum:
+			numnodes         = 12;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;
+			penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;
+			penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;
+			penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;
+			penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;
+			penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;
+			break;
+		case P2xP4Enum:
+			numnodes         = 30;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0]; /*Vertex 1*/
+			penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1]; /*Vertex 2*/
+			penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2]; /*Vertex 3*/
+			penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3]; /*Vertex 4*/
+			penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4]; /*Vertex 5*/
+			penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5]; /*Vertex 6*/
+			penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+1; /*mid vertical edge 1*/
+			penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+1; /*mid vertical edge 2*/
+			penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+1; /*mid vertical edge 3*/
+			penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+3]+1; /*mid basal edge 1*/
+			penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+4]+1; /*mid basal edge 2*/
+			penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+5]+1; /*mid basal edge 3*/
+			penta_node_ids[12]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+6]+1; /*mid top edge 1*/
+			penta_node_ids[13]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+7]+1; /*mid top edge 2*/
+			penta_node_ids[14]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+8]+1; /*mid top edge 3*/
+			penta_node_ids[15]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+2; /* 1/4 vertical edge 1*/
+			penta_node_ids[16]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+2; /* 1/4 vertical edge 2*/
+			penta_node_ids[17]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+2; /* 1/4 vertical edge 3*/
+			penta_node_ids[18]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+3; /* 2/4 vertical edge 1*/
+			penta_node_ids[19]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+3; /* 2/4 vertical edge 2*/
+			penta_node_ids[20]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+3; /* 2/4 vertical edge 3*/
+			penta_node_ids[21]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+1; /* 1/4 vertical face 1*/
+			penta_node_ids[22]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+1; /* 1/4 vertical face 2*/
+			penta_node_ids[23]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+1; /* 1/4 vertical face 3*/
+			penta_node_ids[24]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+2; /* 2/4 vertical face 1*/
+			penta_node_ids[25]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+2; /* 2/4 vertical face 2*/
+			penta_node_ids[26]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+2; /* 2/4 vertical face 3*/
+			penta_node_ids[27]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+3; /* 3/4 vertical face 1*/
+			penta_node_ids[28]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+3; /* 3/4 vertical face 2*/
+			penta_node_ids[29]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+3; /* 3/4 vertical face 3*/
+			break;
+		case P2Enum:
+			numnodes         = 18;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;
+			penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;
+			penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;
+			penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;
+			penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;
+			penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;
+			penta_node_ids[12]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;
+			penta_node_ids[13]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;
+			penta_node_ids[14]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;
+			penta_node_ids[15]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1;
+			penta_node_ids[16]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1;
+			penta_node_ids[17]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1;
+			break;
+		case P2bubbleEnum: case P2bubblecondensedEnum:
+			numnodes         = 19;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;
+			penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;
+			penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;
+			penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;
+			penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;
+			penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;
+			penta_node_ids[12]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;
+			penta_node_ids[13]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;
+			penta_node_ids[14]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;
+			penta_node_ids[15]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1;
+			penta_node_ids[16]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1;
+			penta_node_ids[17]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1;
+			penta_node_ids[18]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+index+1;
+			break;
+		case P1P1Enum: case P1P1GLSEnum:
+			numnodes         = 12;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5];
+
+			penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elements[6*index+0];
+			penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elements[6*index+1];
+			penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elements[6*index+2];
+			penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elements[6*index+3];
+			penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elements[6*index+4];
+			penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elements[6*index+5];
+			break;
+		case MINIEnum: case MINIcondensedEnum:
+			numnodes         = 13;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+index+1;
+
+			penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+0];
+			penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+1];
+			penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+2];
+			penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+3];
+			penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+4];
+			penta_node_ids[12]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+5];
+			break;
+		case TaylorHoodEnum:
+			numnodes         = 24;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;
+			penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;
+			penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;
+			penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;
+			penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;
+			penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;
+			penta_node_ids[12]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;
+			penta_node_ids[13]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;
+			penta_node_ids[14]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;
+			penta_node_ids[15]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1;
+			penta_node_ids[16]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1;
+			penta_node_ids[17]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1;
+
+			penta_node_ids[18]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->elements[6*index+0];
+			penta_node_ids[19]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->elements[6*index+1];
+			penta_node_ids[20]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->elements[6*index+2];
+			penta_node_ids[21]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->elements[6*index+3];
+			penta_node_ids[22]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->elements[6*index+4];
+			penta_node_ids[23]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->elements[6*index+5];
+			break;
+		case LATaylorHoodEnum:
+			numnodes         = 18;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;
+			penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;
+			penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;
+			penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;
+			penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;
+			penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;
+			penta_node_ids[12]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;
+			penta_node_ids[13]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;
+			penta_node_ids[14]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;
+			penta_node_ids[15]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1;
+			penta_node_ids[16]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1;
+			penta_node_ids[17]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1;
+			break;
+		case OneLayerP4zEnum:
+			numnodes         = 30+6;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0]; /*Vertex 1*/
+			penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1]; /*Vertex 2*/
+			penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2]; /*Vertex 3*/
+			penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3]; /*Vertex 4*/
+			penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4]; /*Vertex 5*/
+			penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5]; /*Vertex 6*/
+			penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+1; /*mid vertical edge 1*/
+			penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+1; /*mid vertical edge 2*/
+			penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+1; /*mid vertical edge 3*/
+			penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+3]+1; /*mid basal edge 1*/
+			penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+4]+1; /*mid basal edge 2*/
+			penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+5]+1; /*mid basal edge 3*/
+			penta_node_ids[12]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+6]+1; /*mid top edge 1*/
+			penta_node_ids[13]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+7]+1; /*mid top edge 2*/
+			penta_node_ids[14]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+8]+1; /*mid top edge 3*/
+			penta_node_ids[15]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+2; /* 1/4 vertical edge 1*/
+			penta_node_ids[16]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+2; /* 1/4 vertical edge 2*/
+			penta_node_ids[17]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+2; /* 1/4 vertical edge 3*/
+			penta_node_ids[18]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+3; /* 2/4 vertical edge 1*/
+			penta_node_ids[19]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+3; /* 2/4 vertical edge 2*/
+			penta_node_ids[20]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+3; /* 2/4 vertical edge 3*/
+			penta_node_ids[21]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+1; /* 1/4 vertical face 1*/
+			penta_node_ids[22]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+1; /* 1/4 vertical face 2*/
+			penta_node_ids[23]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+1; /* 1/4 vertical face 3*/
+			penta_node_ids[24]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+2; /* 2/4 vertical face 1*/
+			penta_node_ids[25]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+2; /* 2/4 vertical face 2*/
+			penta_node_ids[26]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+2; /* 2/4 vertical face 3*/
+			penta_node_ids[27]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+3; /* 3/4 vertical face 1*/
+			penta_node_ids[28]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+3; /* 3/4 vertical face 2*/
+			penta_node_ids[29]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+3; /* 3/4 vertical face 3*/
+
+			penta_node_ids[30]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->numberoffaces+iomodel->elements[6*index+0];
+			penta_node_ids[31]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->numberoffaces+iomodel->elements[6*index+1];
+			penta_node_ids[32]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->numberoffaces+iomodel->elements[6*index+2];
+			penta_node_ids[33]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->numberoffaces+iomodel->elements[6*index+3];
+			penta_node_ids[34]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->numberoffaces+iomodel->elements[6*index+4];
+			penta_node_ids[35]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->numberoffaces+iomodel->elements[6*index+5];
+			break;
+		case CrouzeixRaviartEnum:
+			numnodes         = 25;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;
+			penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;
+			penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;
+			penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;
+			penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;
+			penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;
+			penta_node_ids[12]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;
+			penta_node_ids[13]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;
+			penta_node_ids[14]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;
+			penta_node_ids[15]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1;
+			penta_node_ids[16]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1;
+			penta_node_ids[17]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1;
+			penta_node_ids[18]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+index+1;
+
+			penta_node_ids[19]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+1;
+			penta_node_ids[20]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+2;
+			penta_node_ids[21]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+3;
+			penta_node_ids[22]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+4;
+			penta_node_ids[23]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+5;
+			penta_node_ids[24]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+6;
+			break;
+		case LACrouzeixRaviartEnum:
+			numnodes         = 19;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;
+			penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;
+			penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;
+			penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;
+			penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;
+			penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;
+			penta_node_ids[12]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;
+			penta_node_ids[13]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;
+			penta_node_ids[14]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;
+			penta_node_ids[15]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1;
+			penta_node_ids[16]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1;
+			penta_node_ids[17]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1;
+			penta_node_ids[18]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+index+1;
+			break;
+		default:
+			_error_("Finite element "<<EnumToStringx(finiteelement_type)<<" not supported yet");
+	}
+
+	/*hooks: */
+	this->SetHookNodes(penta_node_ids,numnodes,analysis_counter); this->nodes=NULL;
+	xDelete<int>(penta_node_ids);
+
+	/*Fill with IoModel*/
+	this->InputUpdateFromIoModel(index,iomodel);
+
+	/*Defaults if not provided in iomodel*/
+	switch(analysis_type){
+
+		case StressbalanceAnalysisEnum:
+			_assert_(iomodel->Data("md.flowequation.element_equation"));
+
+			if((IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[index])))==HOFSApproximationEnum){
+				/*Create VzHO and VzFS Enums*/
+				if(iomodel->Data("md.initialization.vz") && iomodel->Data("md.flowequation.borderFS")){
+					for(i=0;i<6;i++) nodeinputs[i]=iomodel->Data("md.initialization.vz")[penta_vertex_ids[i]-1]*iomodel->Data("md.flowequation.borderFS")[penta_vertex_ids[i]-1];
+					this->inputs->AddInput(new PentaInput(VzFSEnum,nodeinputs,P1Enum));
+					for(i=0;i<6;i++) nodeinputs[i]=iomodel->Data("md.initialization.vz")[penta_vertex_ids[i]-1]*(1-iomodel->Data("md.flowequation.borderFS")[penta_vertex_ids[i]-1]);
+					this->inputs->AddInput(new PentaInput(VzHOEnum,nodeinputs,P1Enum));
+				}
+				else{
+					for(i=0;i<6;i++)nodeinputs[i]=0;
+					this->inputs->AddInput(new PentaInput(VzFSEnum,nodeinputs,P1Enum));
+					this->inputs->AddInput(new PentaInput(VzHOEnum,nodeinputs,P1Enum));
+				}
+			}
+			if((IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[index])))==SSAFSApproximationEnum){
+				/*Create VzSSA and VzFS Enums*/
+				if(iomodel->Data("md.initialization.vz") && iomodel->Data("md.flowequation.borderFS")){
+					for(i=0;i<6;i++) nodeinputs[i]=iomodel->Data("md.initialization.vz")[penta_vertex_ids[i]-1]*iomodel->Data("md.flowequation.borderFS")[penta_vertex_ids[i]-1];
+					this->inputs->AddInput(new PentaInput(VzFSEnum,nodeinputs,P1Enum));
+					for(i=0;i<6;i++) nodeinputs[i]=iomodel->Data("md.initialization.vz")[penta_vertex_ids[i]-1]*(1-iomodel->Data("md.flowequation.borderFS")[penta_vertex_ids[i]-1]);
+					this->inputs->AddInput(new PentaInput(VzSSAEnum,nodeinputs,P1Enum));
+				}
+				else{
+					for(i=0;i<6;i++)nodeinputs[i]=0;
+					this->inputs->AddInput(new PentaInput(VzFSEnum,nodeinputs,P1Enum));
+					this->inputs->AddInput(new PentaInput(VzSSAEnum,nodeinputs,P1Enum));
+				}
+			}
+			break;
+		default:
+			/*No update for other solution types*/
+			break;
+	}
+}
+/*}}}*/
+void       Penta::UpdateConstraintsExtrudeFromBase(void){/*{{{*/
+
+	if(!IsOnBase()) return;
+
+	int        extrusioninput;
+	IssmDouble value,isonbase;
+
+	this->parameters->FindParam(&extrusioninput,InputToExtrudeEnum);
+	Input* input = inputs->GetInput(extrusioninput);      _assert_(extrusioninput);
+	Input* onbase = inputs->GetInput(MeshVertexonbaseEnum); _assert_(onbase);
+
+	GaussPenta* gauss=new GaussPenta();
+	for(int iv=0;iv<this->NumberofNodes(this->element_type);iv++){
+		gauss->GaussNode(this->element_type,iv);
+		onbase->GetInputValue(&isonbase,gauss);
+		if(isonbase==1.){
+			input->GetInputValue(&value,gauss);
+			this->nodes[iv]->ApplyConstraint(0,value);
+		}
+	}
+	delete gauss;
+
+}
+/*}}}*/
+void       Penta::UpdateConstraintsExtrudeFromTop(void){/*{{{*/
+
+	if(!IsOnSurface()) return;
+
+	int extrusioninput;
+	int indices[3]={3,4,5};
+	IssmDouble value;
+
+	this->parameters->FindParam(&extrusioninput,InputToExtrudeEnum);
+	Input* input = inputs->GetInput(extrusioninput); _assert_(extrusioninput);
+
+	GaussPenta* gauss=new GaussPenta();
+	for(int i=0;i<3;i++){
+		gauss->GaussNode(P1Enum,indices[i]);
+		input->GetInputValue(&value,gauss);
+		this->nodes[indices[i]]->ApplyConstraint(0,value);
+	}
+	delete gauss;
+
+}
+/*}}}*/
+int        Penta::UpdatePotentialUngrounding(IssmDouble* vertices_potentially_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf){/*{{{*/
+
+	int i;
+	int nflipped=0;
+
+	/*Go through nodes, and whoever is on the potential_ungrounding, ends up in nodes_on_iceshelf: */
+	for(i=0;i<NUMVERTICES;i++){
+		if (reCast<bool,IssmDouble>(vertices_potentially_ungrounding[vertices[i]->Pid()])){
+			vec_nodes_on_iceshelf->SetValue(vertices[i]->Pid(),-1.,INS_VAL);
+
+			/*If node was not on ice shelf, we flipped*/
+			if(nodes_on_iceshelf[vertices[i]->Pid()]>=0.){
+				nflipped++;
+			}
+		}
+	}
+	return nflipped;
+}
+/*}}}*/
+void       Penta::ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	PentaRef::GetInputDerivativeValue(dvalue,values,xyz_list,gauss,P1Enum);
+}
+/*}}}*/
+void       Penta::ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss){/*{{{*/
+	PentaRef::GetInputValue(pvalue,values,gauss,P1Enum);
+}
+/*}}}*/
+int        Penta::VelocityInterpolation(void){/*{{{*/
+	return PentaRef::VelocityInterpolation(this->element_type);
+}
+/*}}}*/
+int        Penta::VertexConnectivity(int vertexindex){/*{{{*/
+	_assert_(this->vertices);
+	return this->vertices[vertexindex]->Connectivity();
+}
+/*}}}*/
+void       Penta::VerticalSegmentIndices(int** pindices,int* pnumseg){/*{{{*/
+
+	/*output*/
+	int *indices = xNew<int>(3*2);
+	indices[0*2 + 0] = 0; indices[0*2 + 1] = 3;
+	indices[1*2 + 0] = 1; indices[1*2 + 1] = 4;
+	indices[2*2 + 0] = 2; indices[2*2 + 1] = 5;
+
+	/*Assign output pointers*/
+	*pindices = indices;
+	*pnumseg  = 3;
+}
+/*}}}*/
+void       Penta::ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble phi;
+	IssmDouble viscosity;
+	IssmDouble epsilon[6];
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->StrainRateFS(&epsilon[0],xyz_list,(GaussPenta*)gauss,vx_input,vy_input,vz_input);
+	this->material->ViscosityFS(&viscosity,3,xyz_list,(GaussPenta*)gauss,vx_input,vy_input,vz_input);
+	GetPhi(&phi,&epsilon[0],viscosity);
+
+	/*Assign output pointer*/
+	*pphi = phi;
+}
+/*}}}*/
+void       Penta::ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum){/*{{{*/
+	/*Compute portion of the element that is grounded*/ 
+
+	int         normal_orientation=0;
+	IssmDouble  s1,s2;
+	IssmDouble  levelset[NUMVERTICES];
+	IssmDouble* xyz_zero = xNew<IssmDouble>(4*3);
+
+	/*Recover parameters and values*/
+	GetInputListOnVertices(&levelset[0],levelsetenum);
+
+	if(levelset[0]*levelset[1]>0.){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+		/*Portion of the segments*/
+		s1=levelset[2]/(levelset[2]-levelset[1]);
+		s2=levelset[2]/(levelset[2]-levelset[0]);
+
+		if(levelset[2]<0.) normal_orientation=1; //orientation of quadrangle at base and top, depending on distribution of levelsetfunction
+		/*New point 1*/
+		xyz_zero[3*normal_orientation+0]=xyz_list[2*3+0]+s1*(xyz_list[1*3+0]-xyz_list[2*3+0]);
+		xyz_zero[3*normal_orientation+1]=xyz_list[2*3+1]+s1*(xyz_list[1*3+1]-xyz_list[2*3+1]);
+		xyz_zero[3*normal_orientation+2]=xyz_list[2*3+2]+s1*(xyz_list[1*3+2]-xyz_list[2*3+2]);
+
+		/*New point 0*/
+		xyz_zero[3*(1-normal_orientation)+0]=xyz_list[2*3+0]+s2*(xyz_list[0*3+0]-xyz_list[2*3+0]);
+		xyz_zero[3*(1-normal_orientation)+1]=xyz_list[2*3+1]+s2*(xyz_list[0*3+1]-xyz_list[2*3+1]);
+		xyz_zero[3*(1-normal_orientation)+2]=xyz_list[2*3+2]+s2*(xyz_list[0*3+2]-xyz_list[2*3+2]);
+
+		/*New point 3*/
+		xyz_zero[3*(2+1-normal_orientation)+0]=xyz_list[5*3+0]+s1*(xyz_list[4*3+0]-xyz_list[5*3+0]);
+		xyz_zero[3*(2+1-normal_orientation)+1]=xyz_list[5*3+1]+s1*(xyz_list[4*3+1]-xyz_list[5*3+1]);
+		xyz_zero[3*(2+1-normal_orientation)+2]=xyz_list[5*3+2]+s1*(xyz_list[4*3+2]-xyz_list[5*3+2]);
+
+		/*New point 4*/
+		xyz_zero[3*(2+normal_orientation)+0]=xyz_list[5*3+0]+s2*(xyz_list[3*3+0]-xyz_list[5*3+0]);
+		xyz_zero[3*(2+normal_orientation)+1]=xyz_list[5*3+1]+s2*(xyz_list[3*3+1]-xyz_list[5*3+1]);
+		xyz_zero[3*(2+normal_orientation)+2]=xyz_list[5*3+2]+s2*(xyz_list[3*3+2]-xyz_list[5*3+2]);
+	}
+	else if(levelset[1]*levelset[2]>0.){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+		/*Portion of the segments*/
+		s1=levelset[0]/(levelset[0]-levelset[2]);
+		s2=levelset[0]/(levelset[0]-levelset[1]);
+
+		if(levelset[0]<0.) normal_orientation=1;
+		/*New point 1*/
+		xyz_zero[3*normal_orientation+0]=xyz_list[0*3+0]+s1*(xyz_list[2*3+0]-xyz_list[0*3+0]);
+		xyz_zero[3*normal_orientation+1]=xyz_list[0*3+1]+s1*(xyz_list[2*3+1]-xyz_list[0*3+1]);
+		xyz_zero[3*normal_orientation+2]=xyz_list[0*3+2]+s1*(xyz_list[2*3+2]-xyz_list[0*3+2]);
+
+		/*New point 2*/
+		xyz_zero[3*(1-normal_orientation)+0]=xyz_list[0*3+0]+s2*(xyz_list[1*3+0]-xyz_list[0*3+0]);
+		xyz_zero[3*(1-normal_orientation)+1]=xyz_list[0*3+1]+s2*(xyz_list[1*3+1]-xyz_list[0*3+1]);
+		xyz_zero[3*(1-normal_orientation)+2]=xyz_list[0*3+2]+s2*(xyz_list[1*3+2]-xyz_list[0*3+2]);
+
+		/*New point 3*/
+		xyz_zero[3*(2+1-normal_orientation)+0]=xyz_list[3*3+0]+s1*(xyz_list[5*3+0]-xyz_list[3*3+0]);
+		xyz_zero[3*(2+1-normal_orientation)+1]=xyz_list[3*3+1]+s1*(xyz_list[5*3+1]-xyz_list[3*3+1]);
+		xyz_zero[3*(2+1-normal_orientation)+2]=xyz_list[3*3+2]+s1*(xyz_list[5*3+2]-xyz_list[3*3+2]);
+
+		/*New point 4*/
+		xyz_zero[3*(2+normal_orientation)+0]=xyz_list[3*3+0]+s2*(xyz_list[4*3+0]-xyz_list[3*3+0]);
+		xyz_zero[3*(2+normal_orientation)+1]=xyz_list[3*3+1]+s2*(xyz_list[4*3+1]-xyz_list[3*3+1]);
+		xyz_zero[3*(2+normal_orientation)+2]=xyz_list[3*3+2]+s2*(xyz_list[4*3+2]-xyz_list[3*3+2]);
+	}
+	else if(levelset[0]*levelset[2]>0.){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+		/*Portion of the segments*/
+		s1=levelset[1]/(levelset[1]-levelset[0]);
+		s2=levelset[1]/(levelset[1]-levelset[2]);
+
+		if(levelset[1]<0.) normal_orientation=1;
+		/*New point 0*/
+		xyz_zero[3*normal_orientation+0]=xyz_list[1*3+0]+s1*(xyz_list[0*3+0]-xyz_list[1*3+0]);
+		xyz_zero[3*normal_orientation+1]=xyz_list[1*3+1]+s1*(xyz_list[0*3+1]-xyz_list[1*3+1]);
+		xyz_zero[3*normal_orientation+2]=xyz_list[1*3+2]+s1*(xyz_list[0*3+2]-xyz_list[1*3+2]);
+
+		/*New point 2*/
+		xyz_zero[3*(1-normal_orientation)+0]=xyz_list[1*3+0]+s2*(xyz_list[2*3+0]-xyz_list[1*3+0]);
+		xyz_zero[3*(1-normal_orientation)+1]=xyz_list[1*3+1]+s2*(xyz_list[2*3+1]-xyz_list[1*3+1]);
+		xyz_zero[3*(1-normal_orientation)+2]=xyz_list[1*3+2]+s2*(xyz_list[2*3+2]-xyz_list[1*3+2]);
+
+		/*New point 3*/
+		xyz_zero[3*(2+1-normal_orientation)+0]=xyz_list[4*3+0]+s1*(xyz_list[3*3+0]-xyz_list[4*3+0]);
+		xyz_zero[3*(2+1-normal_orientation)+1]=xyz_list[4*3+1]+s1*(xyz_list[3*3+1]-xyz_list[4*3+1]);
+		xyz_zero[3*(2+1-normal_orientation)+2]=xyz_list[4*3+2]+s1*(xyz_list[3*3+2]-xyz_list[4*3+2]);
+
+		/*New point 4*/
+		xyz_zero[3*(2+normal_orientation)+0]=xyz_list[4*3+0]+s2*(xyz_list[5*3+0]-xyz_list[4*3+0]);
+		xyz_zero[3*(2+normal_orientation)+1]=xyz_list[4*3+1]+s2*(xyz_list[5*3+1]-xyz_list[4*3+1]);
+		xyz_zero[3*(2+normal_orientation)+2]=xyz_list[4*3+2]+s2*(xyz_list[5*3+2]-xyz_list[4*3+2]);
+	}
+	else if(levelset[0]==0. && levelset[1]==0.){ //front is on point 0 and 1
+		xyz_zero[3*0+0]=xyz_list[0*3+0];
+		xyz_zero[3*0+1]=xyz_list[0*3+1];
+		xyz_zero[3*0+2]=xyz_list[0*3+2];
+
+		/*New point 2*/
+		xyz_zero[3*1+0]=xyz_list[1*3+0];
+		xyz_zero[3*1+1]=xyz_list[1*3+1];
+		xyz_zero[3*1+2]=xyz_list[1*3+2];
+
+		/*New point 3*/
+		xyz_zero[3*2+0]=xyz_list[4*3+0];
+		xyz_zero[3*2+1]=xyz_list[4*3+1];
+		xyz_zero[3*2+2]=xyz_list[4*3+2];
+
+		/*New point 4*/
+		xyz_zero[3*3+0]=xyz_list[3*3+0];
+		xyz_zero[3*3+1]=xyz_list[3*3+1];
+		xyz_zero[3*3+2]=xyz_list[3*3+2];
+	}
+	else if(levelset[0]==0. && levelset[2]==0.){ //front is on point 0 and 1
+		xyz_zero[3*0+0]=xyz_list[2*3+0];
+		xyz_zero[3*0+1]=xyz_list[2*3+1];
+		xyz_zero[3*0+2]=xyz_list[2*3+2];
+
+		/*New point 2*/
+		xyz_zero[3*1+0]=xyz_list[0*3+0];
+		xyz_zero[3*1+1]=xyz_list[0*3+1];
+		xyz_zero[3*1+2]=xyz_list[0*3+2];
+
+		/*New point 3*/
+		xyz_zero[3*2+0]=xyz_list[3*3+0];
+		xyz_zero[3*2+1]=xyz_list[3*3+1];
+		xyz_zero[3*2+2]=xyz_list[3*3+2];
+
+		/*New point 4*/
+		xyz_zero[3*3+0]=xyz_list[5*3+0];
+		xyz_zero[3*3+1]=xyz_list[5*3+1];
+		xyz_zero[3*3+2]=xyz_list[5*3+2];
+	}
+	else if(levelset[1]==0. && levelset[2]==0.){ //front is on point 0 and 1
+		xyz_zero[3*0+0]=xyz_list[1*3+0];
+		xyz_zero[3*0+1]=xyz_list[1*3+1];
+		xyz_zero[3*0+2]=xyz_list[1*3+2];
+
+		/*New point 2*/
+		xyz_zero[3*1+0]=xyz_list[2*3+0];
+		xyz_zero[3*1+1]=xyz_list[2*3+1];
+		xyz_zero[3*1+2]=xyz_list[2*3+2];
+
+		/*New point 3*/
+		xyz_zero[3*2+0]=xyz_list[5*3+0];
+		xyz_zero[3*2+1]=xyz_list[5*3+1];
+		xyz_zero[3*2+2]=xyz_list[5*3+2];
+
+		/*New point 4*/
+		xyz_zero[3*3+0]=xyz_list[4*3+0];
+		xyz_zero[3*3+1]=xyz_list[4*3+1];
+		xyz_zero[3*3+2]=xyz_list[4*3+2];
+	}
+	else _error_("Case not covered");
+
+	/*Assign output pointer*/
+	*pxyz_zero= xyz_zero;
+}
+/*}}}*/
+
+#ifdef _HAVE_GIA_
+void       Penta::GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y){/*{{{*/
+	_error_("GIA deflection not implemented yet!");
+}
+/*}}}*/
+#endif
+
+#ifdef _HAVE_DAKOTA_
+void       Penta::InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols, int name, int type){/*{{{*/
+
+	int             i,t,row;
+	IssmDouble      time;
+	TransientInput *transientinput = NULL;
+	IssmDouble      values[6];
+
+	/*Check that name is an element input*/
+	if(!IsInput(name)) _error_("Enum "<<EnumToStringx(name)<<" is not in IsInput");
+
+	switch(type){
+
+		case VertexEnum:
+			/*Create transient input: */
+			for(t=0;t<ncols;t++){ //ncols is the number of times
+
+				/*create input values: */
+				for(i=0;i<6;i++){
+					row=this->vertices[i]->Sid();
+					values[i]=matrix[ncols*row+t];
+				}
+
+				/*time:*/
+				time=matrix[(nrows-1)*ncols+t];
+
+				if(t==0) transientinput=new TransientInput(name);
+				transientinput->AddTimeInput(new PentaInput(name,values,P1Enum),time);
+				transientinput->Configure(parameters);
+			}
+			this->inputs->AddInput(transientinput);
+			break;
+
+		default:
+			_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
+	}
+
+}
+/*}}}*/
+void       Penta::InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*{{{*/
+
+	int i,j;
+
+	/*Check that name is an element input*/
+	if(!IsInput(name)) _error_("Enum "<<EnumToStringx(name)<<" is not in IsInput");
+
+	switch(type){
+
+		case VertexEnum:
+
+			/*New PentaInput*/
+			IssmDouble values[6];
+
+			/*Get values on the 6 vertices*/
+			for (i=0;i<6;i++){
+				values[i]=vector[this->vertices[i]->Sid()]; //careful, vector of values here is not parallel distributed, but serial distributed (from a serial Dakota core!)
+			}
+
+			/*Branch on the specified type of update: */
+			switch(name){
+				case ThicknessEnum:
+					/*Update thickness + surface: assume bed is constant. On ice shelves, takes hydrostatic equilibrium*/
+					IssmDouble  thickness[6];
+					IssmDouble  thickness_init[6];
+					IssmDouble  hydrostatic_ratio[6];
+					IssmDouble  surface[6];
+					IssmDouble  bed[6];
+
+					/*retrieve inputs: */
+					GetInputListOnVertices(&thickness_init[0],ThicknessEnum);
+					GetInputListOnVertices(&hydrostatic_ratio[0],GeometryHydrostaticRatioEnum);
+					GetInputListOnVertices(&bed[0],BaseEnum);
+					GetInputListOnVertices(&surface[0],SurfaceEnum);
+
+					/*build new thickness: */
+//					for(j=0;j<6;j++)thickness[j]=values[j];
+
+					/*build new bed and surface: */
+					if (this->IsFloating()){
+						/*hydrostatic equilibrium: */
+						IssmDouble rho_ice,rho_water,di;
+						rho_ice=this->matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+						rho_water=this->matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+
+						di=rho_ice/rho_water;
+
+						/*build new thickness: */
+						for (j=0; j<6; j++) {
+						/*  for observed/interpolated/hydrostatic thickness, remove scaling from any hydrostatic thickness  */
+							if     (hydrostatic_ratio[j] >= 0.)
+								thickness[j]=values[j]-(values[j]/thickness_init[j]-1.)*hydrostatic_ratio[j]*surface[j]/(1.-di);
+						/*  for minimum thickness, don't scale  */
+							else
+								thickness[j]=thickness_init[j];
+
+						/*  check the computed thickness and update bed  */
+							if (thickness[j] < 0.)
+								thickness[j]=1./(1.-di);
+							bed[j]=surface[j]-thickness[j];
+						}
+
+//						for(j=0;j<6;j++){
+//							surface[j]=(1-di)*thickness[j];
+//							bed[j]=-di*thickness[j];
+//						}
+					}
+					else{
+						/*build new thickness: */
+						for (j=0; j<6; j++) {
+						/*  for observed thickness, use scaled value  */
+							if(hydrostatic_ratio[j] >= 0.)
+								thickness[j]=values[j];
+						/*  for minimum thickness, don't scale  */
+							else
+								thickness[j]=thickness_init[j];
+						}
+
+						/*update bed on grounded ice: */
+//						for(j=0;j<6;j++)surface[j]=bed[j]+thickness[j];
+						for(j=0;j<6;j++)bed[j]=surface[j]-thickness[j];
+					}
+
+					/*Add new inputs: */
+					this->inputs->AddInput(new PentaInput(ThicknessEnum,thickness,P1Enum));
+					this->inputs->AddInput(new PentaInput(BaseEnum,bed,P1Enum));
+					this->inputs->AddInput(new PentaInput(SurfaceEnum,surface,P1Enum));
+					break;
+
+				default:
+					this->inputs->AddInput(new PentaInput(name,values,P1Enum));
+			}
+			break;
+
+		default:
+			_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
+	}
+
+}
+/*}}}*/
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Penta.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Penta.h	(revision 21239)
@@ -0,0 +1,195 @@
+/*! \file Penta.h 
+ *  \brief: header file for penta object
+ */
+
+#ifndef _PENTA_H_
+#define _PENTA_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Element.h"
+#include "./ElementHook.h"
+#include "./PentaRef.h"
+class Object;
+class Parameters;
+class Results;
+class Inputs;
+class Input;
+class IoModel;
+class Node;
+class Material;
+class Matpar;
+class Tria;
+class ElementMatrix;
+class ElementVector;
+class GaussPenta;
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/Enum/Enum.h"
+/*}}}*/
+
+class Penta: public Element,public ElementHook,public PentaRef{
+
+	public:
+
+		Penta      **verticalneighbors;           // 2 neighbors: first one under, second one above
+
+		/*Penta constructors and destructor: {{{*/
+		Penta(){};
+		Penta(int penta_id,int penta_sid,int i, IoModel* iomodel,int nummodels);
+		~Penta();
+		/*}}}*/
+		/*Object virtual functions definitions: {{{*/
+		Object *copy();
+		void    Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int     ObjectEnum();
+		/*}}}*/
+		/*Penta routines:{{{*/
+		void           AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum);
+		void           AddInput(int input_enum, IssmDouble* values, int interpolation_enum);
+		void           AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part);
+		void           CalvingRateLevermann();
+		IssmDouble     CharacteristicLength(void){_error_("not implemented yet");};
+		void           ComputeBasalStress(Vector<IssmDouble>* sigma_b);
+		void           ComputeDeviatoricStressTensor();
+		void           ComputeSigmaNN(){_error_("not implemented yet");};
+		void           ComputeStressTensor();
+		void           Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void           ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index);
+		void           ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum);
+		ElementMatrix* CreateBasalMassMatrix(void);
+		void           ElementResponse(IssmDouble* presponse,int response_enum);
+		void           ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz);
+		int            FiniteElement(void);
+		IssmDouble     FloatingArea(void);
+		void           FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating);
+		IssmDouble     GetArea3D(void){_error_("not implemented yet!");};
+		IssmDouble     GetAreaSpherical(void){_error_("not implemented yet!");};
+		void           GetAreaCoordinates(IssmDouble *area_coordinates,IssmDouble* xyz_zero,IssmDouble* xyz_list,int numpoints);
+		Element*       GetBasalElement(void);
+		Penta*         GetBasalPenta(void);
+		int            GetElementType(void);
+		void           GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating);
+		IssmDouble     GetGroundedPortion(IssmDouble* xyz_list);
+		void           GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum);
+		void           GetInputValue(IssmDouble* pvalue,Node* node,int enumtype);
+		void           GetLevelCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum,IssmDouble level){_error_("not implemented yet");};
+		void           GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* levelsetvalues){_error_("not implemented yet");};
+		Node*          GetNode(int node_number);
+		int            GetNodeIndex(Node* node);
+		int            GetNumberOfNodes(void);
+		int            GetNumberOfNodes(int enum_type);
+		int            GetNumberOfVertices(void);
+		Penta*         GetLowerPenta(void);
+		void           GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type);
+		Penta*         GetSurfacePenta(void);
+		Element*       GetUpperElement(void);
+		Penta*         GetUpperPenta(void);
+		void           GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,bool onsid);
+		void           GetVerticesCoordinatesBase(IssmDouble** pxyz_list);
+		void           GetVerticesCoordinatesTop(IssmDouble** pxyz_list);
+		IssmDouble     GroundedArea(void);
+		IssmDouble     IceMass(void);
+		IssmDouble     IceVolume(void);
+		IssmDouble     IceVolumeAboveFloatation(void);
+		void           InputControlUpdate(IssmDouble scalar,bool save_parameter);
+		void           InputDepthAverageAtBase(int enum_type,int average_enum_type);
+		void	         InputExtrude(int enum_type,int start);
+		void           InputScale(int enum_type,IssmDouble scale_factor);
+		void           InputUpdateFromIoModel(int index, IoModel* iomodel);
+		void           InputUpdateFromSolutionOneDof(IssmDouble* solutiong,int enum_type);
+		void           InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solutiong,int enum_type);
+		void           InputUpdateFromVector(IssmDouble* vector, int name, int type);
+		bool           IsFaceOnBoundary(void){_error_("not implemented yet");};
+		bool           IsIcefront(void);
+		bool           IsNodeOnShelfFromFlags(IssmDouble* flags);
+		bool	         IsOnBase(void);
+		bool	         IsOnSurface(void);
+		bool           IsZeroLevelset(int levelset_enum);
+		void           JacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void           JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
+		void           JacobianDeterminantLine(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void           JacobianDeterminantSurface(IssmDouble*  pJdet, IssmDouble* xyz_list,Gauss* gauss);
+		void           JacobianDeterminantTop(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
+		IssmDouble     Masscon(IssmDouble* levelset){_error_("not implemented yet");};
+		IssmDouble     MassFlux(IssmDouble* segment);
+		IssmDouble     MassFlux(IssmDouble x1,IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id);
+		IssmDouble     MinEdgeLength(IssmDouble* xyz_list);
+		IssmDouble     Misfit(int modelenum,int observationenum,int weightsenum){_error_("not implemented yet");};
+		IssmDouble     MisfitArea(int weightsenum){_error_("not implemented yet");};
+		Gauss*         NewGauss(void);
+		Gauss*         NewGauss(int order);
+		Gauss*         NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order){_error_("not implemented yet");};
+		Gauss*         NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert);
+		Gauss*         NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order);
+		Gauss*         NewGaussBase(int order);
+		Gauss*         NewGaussLine(int vertex1,int vertex2,int order);
+		Gauss*         NewGaussTop(int order);
+		void           NodalFunctions(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void           NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void           NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void           NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsP1(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void           NodalFunctionsP2(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsTensor(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss);
+		void	         NormalBase(IssmDouble* bed_normal, IssmDouble* xyz_list);
+		void           NormalSection(IssmDouble* normal,IssmDouble* xyz_list);
+		void	         NormalTop(IssmDouble* bed_normal, IssmDouble* xyz_list);
+		int            NodalValue(IssmDouble* pvalue, int index, int natureofdataenum);
+		int            NumberofNodesPressure(void);
+		int            NumberofNodesVelocity(void);
+		void           PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding);
+		int            PressureInterpolation();
+		void           ReduceMatrices(ElementMatrix* Ke,ElementVector* pe);
+		void           ResetFSBasalBoundaryCondition(void);
+		void           ResetHooks();
+		void	         SetClone(int* minranks);
+		void           SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index);
+		void           SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters);
+		void           SetTemporaryElementType(int element_type_in);
+	   Element*       SpawnBasalElement(void);
+		Element*       SpawnTopElement(void);
+		Tria*	         SpawnTria(int index1,int index2,int index3);
+		IssmDouble     StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa);
+		void           StressIntensityFactor();
+		void           StrainRateparallel();
+		void           StrainRateperpendicular();
+		IssmDouble     SurfaceArea(void);
+		int            TensorInterpolation(){_error_("not implemented yet");};
+		IssmDouble     TimeAdapt();
+		IssmDouble     TotalFloatingBmb(void);
+		IssmDouble     TotalGroundedBmb(void);
+		IssmDouble     TotalSmb(void);
+		void           Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement);
+		void           UpdateConstraintsExtrudeFromBase(void);
+		void           UpdateConstraintsExtrudeFromTop(void);
+		int            UpdatePotentialUngrounding(IssmDouble* potential_sheet_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf);
+		void           ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss);
+		void           ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss);
+		int            VelocityInterpolation();
+		int            VertexConnectivity(int vertexindex);
+		void           VerticalSegmentIndices(int** pindices,int* pnumseg);
+		void           ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
+		void           ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum);
+
+		#ifdef _HAVE_DAKOTA_
+		void           InputUpdateFromMatrixDakota(IssmDouble* matrix, int nows, int ncols, int name, int type);
+		void           InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type);
+		#endif
+
+		#ifdef _HAVE_GIA_
+		void           GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y);
+		#endif
+		#ifdef _HAVE_SEALEVELRISE_
+		IssmDouble    OceanArea(void){_error_("not implemented yet!");};
+		IssmDouble    OceanAverage(IssmDouble* Sg){_error_("not implemented yet!");};
+		void    SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
+		void    SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
+		void    SealevelriseGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* Sg,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
+		#endif
+
+		/*}}}*/
+};
+#endif  /* _PENTA_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/PentaRef.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/PentaRef.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/PentaRef.cpp	(revision 21239)
@@ -0,0 +1,1165 @@
+/*!\file PentaRef.cpp
+ * \brief: implementation of the PentaRef object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMNODESP0    1
+#define NUMNODESP1    6
+#define NUMNODESP1_2d 3
+#define NUMNODESP1b   7
+#define NUMNODESP1xP2 9
+#define NUMNODESP1xP3 12
+#define NUMNODESP2xP1 12
+#define NUMNODESP2    18
+#define NUMNODESP2b   19
+#define NUMNODESP2xP4 30
+#define NUMNODESMAX   30
+
+/*Object constructors and destructor*/
+PentaRef::PentaRef(){/*{{{*/
+}
+/*}}}*/
+PentaRef::~PentaRef(){/*{{{*/
+}
+/*}}}*/
+
+/*Reference Element numerics*/
+void PentaRef::BasalNodeIndices(int* pnumindices,int** pindices,int finiteelement){/*{{{*/
+
+	/*Output*/
+	int  numindices;
+	int* indices = NULL;
+
+	switch(finiteelement){
+		case P1Enum: case P1DGEnum:
+			numindices = 3;
+			indices    = xNew<int>(numindices);
+			indices[0] = 0;
+			indices[1] = 1;
+			indices[2] = 2;
+			break;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			numindices = 3;
+			indices    = xNew<int>(numindices);
+			indices[0] = 0;
+			indices[1] = 1;
+			indices[2] = 2;
+			break;
+		case P2xP1Enum:
+			numindices = 6;
+			indices    = xNew<int>(numindices);
+			indices[0] = 0;
+			indices[1] = 1;
+			indices[2] = 2;
+			indices[3] = 6;
+			indices[4] = 7;
+			indices[5] = 8;
+			break;
+		case P1xP2Enum:
+			numindices = 3;
+			indices    = xNew<int>(numindices);
+			indices[0] = 0;
+			indices[1] = 1;
+			indices[2] = 2;
+			break;
+		case P1xP3Enum:
+			numindices = 3;
+			indices    = xNew<int>(numindices);
+			indices[0] = 0;
+			indices[1] = 1;
+			indices[2] = 2;
+			break;
+		case P2Enum:
+			numindices = 6;
+			indices    = xNew<int>(numindices);
+			indices[0] = 0;
+			indices[1] = 1;
+			indices[2] = 2;
+			indices[3] = 9;
+			indices[4] = 10;
+			indices[5] = 11;
+			break;
+		case P2bubbleEnum:
+			numindices = 6;
+			indices    = xNew<int>(numindices);
+			indices[0] = 0;
+			indices[1] = 1;
+			indices[2] = 2;
+			indices[3] = 9;
+			indices[4] = 10;
+			indices[5] = 11;
+			break;
+		case P2xP4Enum:
+			numindices = 6;
+			indices    = xNew<int>(numindices);
+			indices[0] = 0;
+			indices[1] = 1;
+			indices[2] = 2;
+			indices[3] = 9;
+			indices[4] = 10;
+			indices[5] = 11;
+			break;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+	/*Assign output pointer*/
+	*pnumindices = numindices;
+	*pindices    = indices;
+}
+/*}}}*/
+void PentaRef::GetInputDerivativeValue(IssmDouble* p, IssmDouble* plist,IssmDouble* xyz_list, Gauss* gauss,int finiteelement){/*{{{*/
+	/*From node values of parameter p (p_list[0], p_list[1], p_list[2],
+	 * p_list[3], p_list[4] and p_list[4]), return parameter derivative value at
+	 * gaussian point specified by gauss_coord:
+	 *   dp/dx=p_list[0]*dh1/dx+p_list[1]*dh2/dx+p_list[2]*dh3/dx+p_list[3]*dh4/dx+p_list[4]*dh5/dx+p_list[5]*dh6/dx;
+	 *   dp/dy=p_list[0]*dh1/dy+p_list[1]*dh2/dy+p_list[2]*dh3/dy+p_list[3]*dh4/dy+p_list[4]*dh5/dy+p_list[5]*dh6/dy;
+	 *   dp/dz=p_list[0]*dh1/dz+p_list[1]*dh2/dz+p_list[2]*dh3/dz+p_list[3]*dh4/dz+p_list[4]*dh5/dz+p_list[5]*dh6/dz;
+	 *
+	 *   p is a vector of size 3x1 already allocated.
+	 *
+	 * WARNING: For a significant gain in performance, it is better to use
+	 * static memory allocation instead of dynamic.
+	 */
+
+	/*Allocate derivatives of basis functions*/
+	IssmDouble  dbasis[3*NUMNODESMAX];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+	_assert_(numnodes<=NUMNODESMAX);
+
+	/*Get basis functions derivatives at this point*/
+	GetNodalFunctionsDerivatives(&dbasis[0],xyz_list,gauss,finiteelement);
+
+	/*Calculate parameter for this Gauss point*/
+	IssmDouble dpx=0.;
+	IssmDouble dpy=0.;
+	IssmDouble dpz=0.;
+	for(int i=0;i<numnodes;i++) dpx += dbasis[0*numnodes+i]*plist[i];
+	for(int i=0;i<numnodes;i++) dpy += dbasis[1*numnodes+i]*plist[i];
+	for(int i=0;i<numnodes;i++) dpz += dbasis[2*numnodes+i]*plist[i];
+
+	/*Assign values*/
+	p[0]=dpx;
+	p[1]=dpy;
+	p[2]=dpz;
+}
+/*}}}*/
+void PentaRef::GetInputValue(IssmDouble* pvalue,IssmDouble* plist,Gauss* gauss,int finiteelement){/*{{{*/
+	/* WARNING: For a significant gain in performance, it is better to use
+	 * static memory allocation instead of dynamic.*/
+
+	/*Allocate basis functions*/
+	IssmDouble  basis[NUMNODESMAX];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+	_assert_(numnodes<=NUMNODESMAX);
+
+	/*Get basis functions at this point*/
+	GetNodalFunctions(&basis[0],gauss,finiteelement);
+
+	/*Calculate parameter for this Gauss point*/
+	IssmDouble value =0.;
+	for(int i=0;i<numnodes;i++) value += basis[i]*plist[i];
+
+	/*Assign output pointer*/
+	*pvalue = value;
+}
+/*}}}*/
+void PentaRef::GetJacobian(IssmDouble* J, IssmDouble* xyz_list,Gauss* gauss_in){/*{{{*/
+	/*The Jacobian is constant over the element, discard the gaussian points. 
+	 * J is assumed to have been allocated of size NDOF2xNDOF2.*/
+
+	IssmDouble A1,A2,A3;  // area coordinates
+	IssmDouble xi,eta,zi; // parametric coordinates
+	IssmDouble x1,x2,x3,x4,x5,x6;
+	IssmDouble y1,y2,y3,y4,y5,y6;
+	IssmDouble z1,z2,z3,z4,z5,z6;
+	IssmDouble j_const_reciprocal; // SQRT3/12.0
+
+	/*Cast gauss to GaussPenta*/
+	_assert_(gauss_in->Enum()==GaussPentaEnum);
+	GaussPenta* gauss = xDynamicCast<GaussPenta*>(gauss_in);
+
+	/*Figure out xi,eta and zi (parametric coordinates), for this gaussian point: */
+	A1  = gauss->coord1;
+	A2  = gauss->coord2;
+	A3  = gauss->coord3;
+	xi  = A2-A1;
+	eta = SQRT3*A3;
+	zi  = gauss->coord4;
+
+	x1=xyz_list[3*0+0];
+	x2=xyz_list[3*1+0];
+	x3=xyz_list[3*2+0];
+	x4=xyz_list[3*3+0];
+	x5=xyz_list[3*4+0];
+	x6=xyz_list[3*5+0];
+
+	y1=xyz_list[3*0+1];
+	y2=xyz_list[3*1+1];
+	y3=xyz_list[3*2+1];
+	y4=xyz_list[3*3+1];
+	y5=xyz_list[3*4+1];
+	y6=xyz_list[3*5+1];
+
+	z1=xyz_list[3*0+2];
+	z2=xyz_list[3*1+2];
+	z3=xyz_list[3*2+2];
+	z4=xyz_list[3*3+2];
+	z5=xyz_list[3*4+2];
+	z6=xyz_list[3*5+2];
+
+	j_const_reciprocal=SQRT3/12;
+
+	J[NDOF3*0+0] = 0.25*(x1-x2-x4+x5)*zi+0.25*(-x1+x2-x4+x5);
+	J[NDOF3*1+0] = j_const_reciprocal*(x1+x2-2*x3-x4-x5+2*x6)*zi+j_const_reciprocal*(-x1-x2+2*x3-x4-x5+2*x6);
+	J[NDOF3*2+0] = j_const_reciprocal*(x1+x2-2*x3-x4-x5+2*x6)*eta+0.25*(x1-x2-x4+x5)*xi +0.25*(-x1+x5-x2+x4);
+
+	J[NDOF3*0+1] = 0.25*(y1-y2-y4+y5)*zi+0.25*(-y1+y2-y4+y5);
+	J[NDOF3*1+1] = j_const_reciprocal*(y1+y2-2*y3-y4-y5+2*y6)*zi+j_const_reciprocal*(-y1-y2+2*y3-y4-y5+2*y6);
+	J[NDOF3*2+1] = j_const_reciprocal*(y1+y2-2*y3-y4-y5+2*y6)*eta+0.25*(y1-y2-y4+y5)*xi+0.25*(y4-y1+y5-y2);
+
+	J[NDOF3*0+2] = 0.25*(z1-z2-z4+z5)*zi+0.25*(-z1+z2-z4+z5);
+	J[NDOF3*1+2] = j_const_reciprocal*(z1+z2-2*z3-z4-z5+2*z6)*zi+j_const_reciprocal*(-z1-z2+2*z3-z4-z5+2*z6);
+	J[NDOF3*2+2] = j_const_reciprocal*(z1+z2-2*z3-z4-z5+2*z6)*eta+0.25*(z1-z2-z4+z5)*xi+0.25*(-z1+z5-z2+z4);
+}
+/*}}}*/
+void PentaRef::GetJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*On a penta, Jacobian varies according to coordinates. We need to get the Jacobian, and take 
+	 * the determinant of it: */
+	IssmDouble J[3][3];
+
+	/*Get Jacobian*/
+	GetJacobian(&J[0][0],xyz_list,gauss);
+
+	/*Get Determinant*/
+	Matrix3x3Determinant(Jdet,&J[0][0]);
+	if(*Jdet<0) _error_("negative jacobian determinant!");
+
+}
+/*}}}*/
+void PentaRef::GetJacobianInvert(IssmDouble* Jinv, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	/*Jacobian*/
+	IssmDouble J[3][3];
+
+	/*Call Jacobian routine to get the jacobian:*/
+	GetJacobian(&J[0][0], xyz_list, gauss);
+
+	/*Invert Jacobian matrix: */
+	Matrix3x3Invert(Jinv,&J[0][0]);
+}
+/*}}}*/
+void PentaRef::GetNodalFunctions(IssmDouble* basis,Gauss* gauss_in,int finiteelement){/*{{{*/
+	/*This routine returns the values of the nodal functions  at the gaussian point.*/
+
+	_assert_(basis);
+
+	/*Cast gauss to GaussPenta*/
+	_assert_(gauss_in->Enum()==GaussPentaEnum);
+	GaussPenta* gauss = xDynamicCast<GaussPenta*>(gauss_in);
+
+	/*Get current coordinates in reference element*/
+	IssmDouble zeta=gauss->coord4;
+
+	switch(finiteelement){
+		case P0Enum: 
+			basis[0]=1.;
+			return;
+		case P1Enum: case P1DGEnum:
+			basis[0]=gauss->coord1*(1.-zeta)/2.;
+			basis[1]=gauss->coord2*(1.-zeta)/2.;
+			basis[2]=gauss->coord3*(1.-zeta)/2.;
+			basis[3]=gauss->coord1*(1.+zeta)/2.;
+			basis[4]=gauss->coord2*(1.+zeta)/2.;
+			basis[5]=gauss->coord3*(1.+zeta)/2.;
+			return;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			basis[0]=gauss->coord1*(1.-zeta)/2.;
+			basis[1]=gauss->coord2*(1.-zeta)/2.;
+			basis[2]=gauss->coord3*(1.-zeta)/2.;
+			basis[3]=gauss->coord1*(1.+zeta)/2.;
+			basis[4]=gauss->coord2*(1.+zeta)/2.;
+			basis[5]=gauss->coord3*(1.+zeta)/2.;
+			basis[6]=27.*gauss->coord1*gauss->coord2*gauss->coord3*(1.+zeta)*(1.-zeta);
+			return;
+		case P2xP1Enum:
+			/*Corner nodes*/
+			basis[ 0]=gauss->coord1*(2.*gauss->coord1-1.)*(1.-zeta)/2.;
+			basis[ 1]=gauss->coord2*(2.*gauss->coord2-1.)*(1.-zeta)/2.;
+			basis[ 2]=gauss->coord3*(2.*gauss->coord3-1.)*(1.-zeta)/2.;
+			basis[ 3]=gauss->coord1*(2.*gauss->coord1-1.)*(1.+zeta)/2.;
+			basis[ 4]=gauss->coord2*(2.*gauss->coord2-1.)*(1.+zeta)/2.;
+			basis[ 5]=gauss->coord3*(2.*gauss->coord3-1.)*(1.+zeta)/2.;
+			/*mid-sides of triangles*/
+			basis[ 6]=4.*gauss->coord3*gauss->coord2*(1.-zeta)/2.;
+			basis[ 7]=4.*gauss->coord3*gauss->coord1*(1.-zeta)/2.;
+			basis[ 8]=4.*gauss->coord1*gauss->coord2*(1.-zeta)/2.;
+			basis[ 9]=4.*gauss->coord3*gauss->coord2*(1.+zeta)/2.;
+			basis[10]=4.*gauss->coord3*gauss->coord1*(1.+zeta)/2.;
+			basis[11]=4.*gauss->coord1*gauss->coord2*(1.+zeta)/2.;
+			return;
+		case P1xP2Enum:
+			/*Corner nodes*/
+			basis[ 0]=gauss->coord1*zeta*(zeta-1.)/2.;
+			basis[ 1]=gauss->coord2*zeta*(zeta-1.)/2.;
+			basis[ 2]=gauss->coord3*zeta*(zeta-1.)/2.;
+			basis[ 3]=gauss->coord1*zeta*(zeta+1.)/2.;
+			basis[ 4]=gauss->coord2*zeta*(zeta+1.)/2.;
+			basis[ 5]=gauss->coord3*zeta*(zeta+1.)/2.;
+			/*mid-sides of quads*/
+			basis[ 6]=gauss->coord1*(1.-zeta*zeta);
+			basis[ 7]=gauss->coord2*(1.-zeta*zeta);
+			basis[ 8]=gauss->coord3*(1.-zeta*zeta);
+			return;
+		case P2Enum:
+			/*Corner nodes*/
+			basis[ 0]=gauss->coord1*(2.*gauss->coord1-1.)*zeta*(zeta-1.)/2.;
+			basis[ 1]=gauss->coord2*(2.*gauss->coord2-1.)*zeta*(zeta-1.)/2.;
+			basis[ 2]=gauss->coord3*(2.*gauss->coord3-1.)*zeta*(zeta-1.)/2.;
+			basis[ 3]=gauss->coord1*(2.*gauss->coord1-1.)*zeta*(zeta+1.)/2.;
+			basis[ 4]=gauss->coord2*(2.*gauss->coord2-1.)*zeta*(zeta+1.)/2.;
+			basis[ 5]=gauss->coord3*(2.*gauss->coord3-1.)*zeta*(zeta+1.)/2.;
+			/*mid-sides of quads*/
+			basis[ 6]=gauss->coord1*(2.*gauss->coord1-1.)*(1.-zeta*zeta);
+			basis[ 7]=gauss->coord2*(2.*gauss->coord2-1.)*(1.-zeta*zeta);
+			basis[ 8]=gauss->coord3*(2.*gauss->coord3-1.)*(1.-zeta*zeta);
+			/*mid-sides of triangles*/
+			basis[ 9]=4.*gauss->coord3*gauss->coord2*zeta*(zeta-1.)/2.;
+			basis[10]=4.*gauss->coord3*gauss->coord1*zeta*(zeta-1.)/2.;
+			basis[11]=4.*gauss->coord1*gauss->coord2*zeta*(zeta-1.)/2.;
+			basis[12]=4.*gauss->coord3*gauss->coord2*zeta*(zeta+1.)/2.;
+			basis[13]=4.*gauss->coord3*gauss->coord1*zeta*(zeta+1.)/2.;
+			basis[14]=4.*gauss->coord1*gauss->coord2*zeta*(zeta+1.)/2.;
+			/*quad faces*/
+			basis[15]=4.*gauss->coord3*gauss->coord2*(1.-zeta*zeta);
+			basis[16]=4.*gauss->coord3*gauss->coord1*(1.-zeta*zeta);
+			basis[17]=4.*gauss->coord1*gauss->coord2*(1.-zeta*zeta);
+			return;
+		case P2bubbleEnum: case P2bubblecondensedEnum:
+			/*Corner nodes*/
+			basis[ 0]=gauss->coord1*(2.*gauss->coord1-1.)*zeta*(zeta-1.)/2.;
+			basis[ 1]=gauss->coord2*(2.*gauss->coord2-1.)*zeta*(zeta-1.)/2.;
+			basis[ 2]=gauss->coord3*(2.*gauss->coord3-1.)*zeta*(zeta-1.)/2.;
+			basis[ 3]=gauss->coord1*(2.*gauss->coord1-1.)*zeta*(zeta+1.)/2.;
+			basis[ 4]=gauss->coord2*(2.*gauss->coord2-1.)*zeta*(zeta+1.)/2.;
+			basis[ 5]=gauss->coord3*(2.*gauss->coord3-1.)*zeta*(zeta+1.)/2.;
+			/*mid-sides of quads*/
+			basis[ 6]=gauss->coord1*(2.*gauss->coord1-1.)*(1.-zeta*zeta);
+			basis[ 7]=gauss->coord2*(2.*gauss->coord2-1.)*(1.-zeta*zeta);
+			basis[ 8]=gauss->coord3*(2.*gauss->coord3-1.)*(1.-zeta*zeta);
+			/*mid-sides of triangles*/
+			basis[ 9]=4.*gauss->coord3*gauss->coord2*zeta*(zeta-1.)/2.;
+			basis[10]=4.*gauss->coord3*gauss->coord1*zeta*(zeta-1.)/2.;
+			basis[11]=4.*gauss->coord1*gauss->coord2*zeta*(zeta-1.)/2.;
+			basis[12]=4.*gauss->coord3*gauss->coord2*zeta*(zeta+1.)/2.;
+			basis[13]=4.*gauss->coord3*gauss->coord1*zeta*(zeta+1.)/2.;
+			basis[14]=4.*gauss->coord1*gauss->coord2*zeta*(zeta+1.)/2.;
+			/*quad faces*/
+			basis[15]=4.*gauss->coord3*gauss->coord2*(1.-zeta*zeta);
+			basis[16]=4.*gauss->coord3*gauss->coord1*(1.-zeta*zeta);
+			basis[17]=4.*gauss->coord1*gauss->coord2*(1.-zeta*zeta);
+			/*bubble*/
+			basis[18]=27.*gauss->coord1*gauss->coord2*gauss->coord3*(1.+zeta)*(1.-zeta);
+			return;
+		case P2xP4Enum :
+			/*Corner nodes*/
+			basis[ 0]=gauss->coord1*(2.*gauss->coord1-1.)*(2./3.)*(zeta-1.)*(zeta-0.5 )*(zeta)*(zeta+0.5);
+			basis[ 1]=gauss->coord2*(2.*gauss->coord2-1.)*(2./3.)*(zeta-1.)*(zeta-0.5 )*(zeta)*(zeta+0.5);
+			basis[ 2]=gauss->coord3*(2.*gauss->coord3-1.)*(2./3.)*(zeta-1.)*(zeta-0.5 )*(zeta)*(zeta+0.5);
+			basis[ 3]=gauss->coord1*(2.*gauss->coord1-1.)*(2./3.)*(zeta-0.5)*(zeta)*(zeta+0.5)*(zeta +1.);
+			basis[ 4]=gauss->coord2*(2.*gauss->coord2-1.)*(2./3.)*(zeta-0.5)*(zeta)*(zeta+0.5)*(zeta +1.);
+			basis[ 5]=gauss->coord3*(2.*gauss->coord3-1.)*(2./3.)*(zeta-0.5)*(zeta)*(zeta+0.5)*(zeta +1.);
+			/*mid-sides of quads*/
+			basis[ 6]=gauss->coord1*(2.*gauss->coord1-1)*4.*(zeta-1.)*(zeta-0.5)*(zeta+0.5)*(zeta+1.);
+			basis[ 7]=gauss->coord2*(2.*gauss->coord2-1)*4.*(zeta-1.)*(zeta-0.5)*(zeta+0.5)*(zeta+1.);
+			basis[ 8]=gauss->coord3*(2.*gauss->coord3-1)*4.*(zeta-1.)*(zeta-0.5)*(zeta+0.5)*(zeta+1.);
+			/*mid-sides of triangles*/
+			basis[ 9]=4.*gauss->coord2*gauss->coord3*(2./3.)*(zeta-1.)*(zeta-0.5)*zeta*(zeta+0.5);
+			basis[10]=4.*gauss->coord1*gauss->coord3*(2./3.)*(zeta-1.)*(zeta-0.5)*zeta*(zeta+0.5);
+			basis[11]=4.*gauss->coord1*gauss->coord2*(2./3.)*(zeta-1.)*(zeta-0.5)*zeta*(zeta+0.5);
+			basis[12]=4.*gauss->coord2*gauss->coord3*(2./3.)*(zeta-0.5)*zeta*(zeta+0.5)*(zeta+1.);
+			basis[13]=4.*gauss->coord1*gauss->coord3*(2./3.)*(zeta-0.5)*zeta*(zeta+0.5)*(zeta+1.);
+			basis[14]=4.*gauss->coord1*gauss->coord2*(2./3.)*(zeta-0.5)*zeta*(zeta+0.5)*(zeta+1.);
+			/*quarter-sides of quads*/
+			basis[15]=gauss->coord1*(2.*gauss->coord1-1.)*(-8./3.)*(zeta-1.0)*(zeta-0.5)*zeta*(zeta+1.);
+			basis[16]=gauss->coord2*(2.*gauss->coord2-1.)*(-8./3.)*(zeta-1.0)*(zeta-0.5)*zeta*(zeta+1.);
+			basis[17]=gauss->coord3*(2.*gauss->coord3-1.)*(-8./3.)*(zeta-1.0)*(zeta-0.5)*zeta*(zeta+1.);
+			basis[18]=gauss->coord1*(2.*gauss->coord1-1.)*(-8./3.)*(zeta-1.0)*zeta*(zeta+0.5)*(zeta+1.);
+			basis[19]=gauss->coord2*(2.*gauss->coord2-1.)*(-8./3.)*(zeta-1.0)*zeta*(zeta+0.5)*(zeta+1.);
+			basis[20]=gauss->coord3*(2.*gauss->coord3-1.)*(-8./3.)*(zeta-1.0)*zeta*(zeta+0.5)*(zeta+1.);
+			/* mid-sides of interior triangles*/
+			basis[21]=4.*gauss->coord2*gauss->coord3*(-8./3.)*(zeta-1.0)*(zeta-0.5)*zeta*(zeta+1.);
+			basis[22]=4.*gauss->coord1*gauss->coord3*(-8./3.)*(zeta-1.0)*(zeta-0.5)*zeta*(zeta+1.);
+			basis[23]=4.*gauss->coord1*gauss->coord2*(-8./3.)*(zeta-1.0)*(zeta-0.5)*zeta*(zeta+1.);
+			basis[24]=4.*gauss->coord2*gauss->coord3*4.*(zeta-1.0)*(zeta-0.5)*(zeta+0.5)*(zeta+1.);
+			basis[25]=4.*gauss->coord1*gauss->coord3*4.*(zeta-1.0)*(zeta-0.5)*(zeta+0.5)*(zeta+1.);
+			basis[26]=4.*gauss->coord1*gauss->coord2*4.*(zeta-1.0)*(zeta-0.5)*(zeta+0.5)*(zeta+1.);
+			basis[27]=4.*gauss->coord2*gauss->coord3*(-8./3.)*(zeta-1.0)*zeta*(zeta+0.5)*(zeta+1.);
+			basis[28]=4.*gauss->coord1*gauss->coord3*(-8./3.)*(zeta-1.0)*zeta*(zeta+0.5)*(zeta+1.);
+			basis[29]=4.*gauss->coord1*gauss->coord2*(-8./3.)*(zeta-1.0)*zeta*(zeta+0.5)*(zeta+1.);
+			return;
+		case P1xP3Enum :
+			/*Corner nodes*/
+			basis[ 0]=-(9.)/(16.)*gauss->coord1*(zeta-1)*(zeta-1./3.)*(zeta+1./3.);	
+			basis[ 1]=-(9.)/(16.)*gauss->coord2*(zeta-1)*(zeta-1./3.)*(zeta+1./3.);	
+			basis[ 2]=-(9.)/(16.)*gauss->coord3*(zeta-1)*(zeta-1./3.)*(zeta+1./3.);	
+			basis[ 3]=(9.)/(16.)*gauss->coord1*(zeta-1./3.)*(zeta+1./3.)*(zeta+1.);
+			basis[ 4]=(9.)/(16.)*gauss->coord2*(zeta-1./3.)*(zeta+1./3.)*(zeta+1.);
+			basis[ 5]=(9.)/(16.)*gauss->coord3*(zeta-1./3.)*(zeta+1./3.)*(zeta+1.);
+			/*quarter-sides of quads*/
+			basis[ 6]=(27.)/(16.)*gauss->coord1*(zeta-1)*(zeta-1./3.)*(zeta+1.);
+			basis[ 7]=(27.)/(16.)*gauss->coord2*(zeta-1)*(zeta-1./3.)*(zeta+1.);
+			basis[ 8]=(27.)/(16.)*gauss->coord3*(zeta-1)*(zeta-1./3.)*(zeta+1.);
+			basis[ 9]=-(27.)/(16.)*gauss->coord1*(zeta-1)*(zeta+1./3.)*(zeta+1.);
+			basis[10]=-(27.)/(16.)*gauss->coord2*(zeta-1)*(zeta+1./3.)*(zeta+1.);
+			basis[11]=-(27.)/(16.)*gauss->coord3*(zeta-1)*(zeta+1./3.)*(zeta+1.);
+			return;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+}
+/*}}}*/
+void PentaRef::GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, Gauss* gauss,int finiteelement){/*{{{*/
+
+	/*This routine returns the values of the nodal functions derivatives  (with respect to the 
+	 * actual coordinate system): */
+	IssmDouble    Jinv[3][3];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+
+	/*Get nodal functions derivatives in reference triangle*/
+	IssmDouble dbasis_ref[3*NUMNODESMAX];
+	GetNodalFunctionsDerivativesReference(dbasis_ref,gauss,finiteelement);
+
+	/*Get Jacobian invert: */
+	GetJacobianInvert(&Jinv[0][0], xyz_list, gauss);
+
+	/*Build dbasis: 
+	 *
+	 * [dhi/dx]= Jinv'*[dhi/dr]
+	 * [dhi/dy]        [dhi/ds]
+	 * [dhi/dz]        [dhi/dzeta]
+	 */
+
+	for(int i=0;i<numnodes;i++){
+		dbasis[numnodes*0+i]=Jinv[0][0]*dbasis_ref[0*numnodes+i]+Jinv[0][1]*dbasis_ref[1*numnodes+i]+Jinv[0][2]*dbasis_ref[2*numnodes+i];
+		dbasis[numnodes*1+i]=Jinv[1][0]*dbasis_ref[0*numnodes+i]+Jinv[1][1]*dbasis_ref[1*numnodes+i]+Jinv[1][2]*dbasis_ref[2*numnodes+i];
+		dbasis[numnodes*2+i]=Jinv[2][0]*dbasis_ref[0*numnodes+i]+Jinv[2][1]*dbasis_ref[1*numnodes+i]+Jinv[2][2]*dbasis_ref[2*numnodes+i];
+	}
+}
+/*}}}*/
+void PentaRef::GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,Gauss* gauss_in,int finiteelement){/*{{{*/
+
+	/*This routine returns the values of the nodal functions derivatives  (with respect to the 
+	 * natural coordinate system) at the gaussian point. */
+
+	_assert_(dbasis && gauss_in);
+
+	/*Cast gauss to GaussPenta*/
+	_assert_(gauss_in->Enum()==GaussPentaEnum);
+	GaussPenta* gauss = xDynamicCast<GaussPenta*>(gauss_in);
+
+	/*Get current coordinates in reference element*/
+	IssmDouble zeta=gauss->coord4;
+
+	switch(finiteelement){
+		case P0Enum: 
+			/*Zero derivative*/
+			dbasis[NUMNODESP0*0+0]   = 0.;
+			dbasis[NUMNODESP0*1+0]   = 0.;
+			dbasis[NUMNODESP0*2+0]   = 0.;
+			return;
+		case P1Enum: case P1DGEnum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP1*0+0]   = (zeta-1.)/4.;
+			dbasis[NUMNODESP1*1+0]   = SQRT3/12.*(zeta-1.);
+			dbasis[NUMNODESP1*2+0]   = -.5*gauss->coord1;
+			/*Nodal function 2*/
+			dbasis[NUMNODESP1*0+1]   = (1.-zeta)/4.;
+			dbasis[NUMNODESP1*1+1]   = SQRT3/12.*(zeta-1);
+			dbasis[NUMNODESP1*2+1]   = -.5*gauss->coord2;
+			/*Nodal function 3*/
+			dbasis[NUMNODESP1*0+2]   = 0.;
+			dbasis[NUMNODESP1*1+2]   = SQRT3/6.*(1.-zeta);
+			dbasis[NUMNODESP1*2+2]   = -.5*gauss->coord3;
+			/*Nodal function 4*/
+			dbasis[NUMNODESP1*0+3]   = -(1.+zeta)/4.;
+			dbasis[NUMNODESP1*1+3]   = -SQRT3/12.*(1.+zeta);
+			dbasis[NUMNODESP1*2+3]   = .5*gauss->coord1;
+			/*Nodal function 5*/
+			dbasis[NUMNODESP1*0+4]   = (1.+zeta)/4.;
+			dbasis[NUMNODESP1*1+4]   = -SQRT3/12.*(1.+zeta);
+			dbasis[NUMNODESP1*2+4]   = .5*gauss->coord2;
+			/*Nodal function 6*/
+			dbasis[NUMNODESP1*0+5]   = 0.;
+			dbasis[NUMNODESP1*1+5]   = SQRT3/6.*(1.+zeta);
+			dbasis[NUMNODESP1*2+5]   = .5*gauss->coord3;
+			return;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP1b*0+0]   = (zeta-1.)/4.;
+			dbasis[NUMNODESP1b*1+0]   = SQRT3/12.*(zeta-1.);
+			dbasis[NUMNODESP1b*2+0]   = -.5*gauss->coord1;
+			/*Nodal function 2*/
+			dbasis[NUMNODESP1b*0+1]   = (1.-zeta)/4.;
+			dbasis[NUMNODESP1b*1+1]   = SQRT3/12.*(zeta-1);
+			dbasis[NUMNODESP1b*2+1]   = -.5*gauss->coord2;
+			/*Nodal function 3*/
+			dbasis[NUMNODESP1b*0+2]   = 0.;
+			dbasis[NUMNODESP1b*1+2]   = SQRT3/6.*(1.-zeta);
+			dbasis[NUMNODESP1b*2+2]   = -.5*gauss->coord3;
+			/*Nodal function 4*/
+			dbasis[NUMNODESP1b*0+3]   = -(1.+zeta)/4.;
+			dbasis[NUMNODESP1b*1+3]   = -SQRT3/12.*(1.+zeta);
+			dbasis[NUMNODESP1b*2+3]   = .5*gauss->coord1;
+			/*Nodal function 5*/
+			dbasis[NUMNODESP1b*0+4]   = (1.+zeta)/4.;
+			dbasis[NUMNODESP1b*1+4]   = -SQRT3/12.*(1.+zeta);
+			dbasis[NUMNODESP1b*2+4]   = .5*gauss->coord2;
+			/*Nodal function 6*/
+			dbasis[NUMNODESP1b*0+5]   = 0.;
+			dbasis[NUMNODESP1b*1+5]   = SQRT3/6.*(1.+zeta);
+			dbasis[NUMNODESP1b*2+5]   = .5*gauss->coord3;
+			/*Nodal function 7*/
+			dbasis[NUMNODESP1b*0+6] = 27.*(1.+zeta)*(1.-zeta)*(-.5*gauss->coord2*gauss->coord3 + .5*gauss->coord1*gauss->coord3);
+			dbasis[NUMNODESP1b*1+6] = 27.*(1.+zeta)*(1.-zeta)*SQRT3*(-1./6.*gauss->coord2*gauss->coord3 - 1./6.*gauss->coord1*gauss->coord3 +1./3.*gauss->coord1*gauss->coord2);
+			dbasis[NUMNODESP1b*2+6] = -54*gauss->coord1*gauss->coord2*gauss->coord3*zeta;
+			return;
+		case P2xP1Enum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP2xP1*0+0 ] = .5*(1.-zeta)*(-2.*gauss->coord1 + 0.5);
+			dbasis[NUMNODESP2xP1*1+0 ] = .5*(1.-zeta)*(-2.*SQRT3/3.*gauss->coord1 + SQRT3/6.);
+			dbasis[NUMNODESP2xP1*2+0 ] = -.5*gauss->coord1*(2.*gauss->coord1-1.);
+			/*Nodal function 2*/
+			dbasis[NUMNODESP2xP1*0+1 ] = .5*(1.-zeta)*(+2.*gauss->coord2 - 0.5);
+			dbasis[NUMNODESP2xP1*1+1 ] = .5*(1.-zeta)*(-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.);
+			dbasis[NUMNODESP2xP1*2+1 ] = -.5*gauss->coord2*(2.*gauss->coord2-1.);
+			/*Nodal function 3*/
+			dbasis[NUMNODESP2xP1*0+2 ] = 0.;
+			dbasis[NUMNODESP2xP1*1+2 ] = .5*(1.-zeta)*(4.*SQRT3/3.*gauss->coord3 - SQRT3/3.);
+			dbasis[NUMNODESP2xP1*2+2 ] = -.5*gauss->coord3*(2.*gauss->coord3-1.);
+			/*Nodal function 4*/
+			dbasis[NUMNODESP2xP1*0+3 ] = .5*(1.+zeta)*(-2.*gauss->coord1 + 0.5);
+			dbasis[NUMNODESP2xP1*1+3 ] = .5*(1.+zeta)*(-2.*SQRT3/3.*gauss->coord1 + SQRT3/6.);
+			dbasis[NUMNODESP2xP1*2+3 ] = .5*gauss->coord1*(2.*gauss->coord1-1.);
+			/*Nodal function 5*/
+			dbasis[NUMNODESP2xP1*0+4 ] = .5*(1.+zeta)*(+2.*gauss->coord2 - 0.5);
+			dbasis[NUMNODESP2xP1*1+4 ] = .5*(1.+zeta)*(-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.);
+			dbasis[NUMNODESP2xP1*2+4 ] = .5*gauss->coord2*(2.*gauss->coord2-1.);
+			/*Nodal function 6*/
+			dbasis[NUMNODESP2xP1*0+5 ] = 0.;
+			dbasis[NUMNODESP2xP1*1+5 ] = .5*(1.+zeta)*(4.*SQRT3/3.*gauss->coord3 - SQRT3/3.);
+			dbasis[NUMNODESP2xP1*2+5 ] = .5*gauss->coord3*(2.*gauss->coord3-1.);
+
+			/*Nodal function 7*/
+			dbasis[NUMNODESP2xP1*0+6 ] = (1.-zeta)*gauss->coord3;
+			dbasis[NUMNODESP2xP1*1+6 ] = .5*(1.-zeta)*(+4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2xP1*2+6 ] = -2.*gauss->coord3*gauss->coord2;
+			/*Nodal function 8*/
+			dbasis[NUMNODESP2xP1*0+7 ] = -(1.-zeta)*gauss->coord3;
+			dbasis[NUMNODESP2xP1*1+7 ] = .5*(1.-zeta)*(+4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2xP1*2+7 ] = -2.*gauss->coord3*gauss->coord1;
+			/*Nodal function 9*/
+			dbasis[NUMNODESP2xP1*0+8 ] = (1.-zeta)*(gauss->coord1-gauss->coord2);
+			dbasis[NUMNODESP2xP1*1+8 ] = .5*(1.-zeta)*(-2.*SQRT3/3.*(gauss->coord1+gauss->coord2));
+			dbasis[NUMNODESP2xP1*2+8 ] = -2.*gauss->coord1*gauss->coord2;
+			/*Nodal function 10*/
+			dbasis[NUMNODESP2xP1*0+9 ] = (1.+zeta)*gauss->coord3;
+			dbasis[NUMNODESP2xP1*1+9 ] = .5*(1.+zeta)*(+4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2xP1*2+9 ] = 2.*gauss->coord3*gauss->coord2;
+			/*Nodal function 11*/
+			dbasis[NUMNODESP2xP1*0+10] = -(1.+zeta)*gauss->coord3;
+			dbasis[NUMNODESP2xP1*1+10] = .5*(1.+zeta)*(+4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2xP1*2+10] = 2.*gauss->coord3*gauss->coord1;
+			/*Nodal function 12*/
+			dbasis[NUMNODESP2xP1*0+11] = (1.+zeta)*(gauss->coord1-gauss->coord2);
+			dbasis[NUMNODESP2xP1*1+11] = .5*(1.+zeta)*(-2.*SQRT3/3.*(gauss->coord1+gauss->coord2));
+			dbasis[NUMNODESP2xP1*2+11] = 2.*gauss->coord1*gauss->coord2;
+			return;
+		case P1xP2Enum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP1xP2*0+0]   = -zeta*(zeta-1.)/4.;
+			dbasis[NUMNODESP1xP2*1+0]   = -SQRT3/12.*zeta*(zeta-1.);
+			dbasis[NUMNODESP1xP2*2+0]   = .5*(2.*zeta-1.)*gauss->coord1;
+			/*Nodal function 2*/
+			dbasis[NUMNODESP1xP2*0+1]   = zeta*(zeta-1.)/4.;
+			dbasis[NUMNODESP1xP2*1+1]   = -SQRT3/12.*zeta*(zeta-1);
+			dbasis[NUMNODESP1xP2*2+1]   = .5*(2.*zeta-1.)*gauss->coord2;
+			/*Nodal function 3*/
+			dbasis[NUMNODESP1xP2*0+2]   = 0.;
+			dbasis[NUMNODESP1xP2*1+2]   = SQRT3/6.*zeta*(zeta-1.);
+			dbasis[NUMNODESP1xP2*2+2]   = .5*(2.*zeta-1.)*gauss->coord3;
+			/*Nodal function 4*/
+			dbasis[NUMNODESP1xP2*0+3]   = -zeta*(zeta+1)/4.;
+			dbasis[NUMNODESP1xP2*1+3]   = -SQRT3/12.*zeta*(zeta+1.);
+			dbasis[NUMNODESP1xP2*2+3]   = .5*(2.*zeta+1.)*gauss->coord1;
+			/*Nodal function 5*/
+			dbasis[NUMNODESP1xP2*0+4]   = zeta*(zeta+1.)/4.;
+			dbasis[NUMNODESP1xP2*1+4]   = -SQRT3/12.*zeta*(zeta+1.);
+			dbasis[NUMNODESP1xP2*2+4]   = .5*(2.*zeta+1.)*gauss->coord2;
+			/*Nodal function 6*/
+			dbasis[NUMNODESP1xP2*0+5]   = 0.;
+			dbasis[NUMNODESP1xP2*1+5]   = SQRT3/6.*zeta*(zeta+1.);
+			dbasis[NUMNODESP1xP2*2+5]   = .5*(2.*zeta+1.)*gauss->coord3;
+
+			/*Nodal function 7*/
+			dbasis[NUMNODESP1xP2*0+6 ] = -0.5*(1.-zeta*zeta);
+			dbasis[NUMNODESP1xP2*1+6 ] = -SQRT3/6.*(1.-zeta*zeta);
+			dbasis[NUMNODESP1xP2*2+6 ] = -2.*zeta*gauss->coord1;
+			/*Nodal function 8*/
+			dbasis[NUMNODESP1xP2*0+7 ] = 0.5*(1.-zeta*zeta);
+			dbasis[NUMNODESP1xP2*1+7 ] = -SQRT3/6.*(1.-zeta*zeta);
+			dbasis[NUMNODESP1xP2*2+7 ] = -2.*zeta*gauss->coord2;
+			/*Nodal function 9*/
+			dbasis[NUMNODESP1xP2*0+8 ] = 0.;
+			dbasis[NUMNODESP1xP2*1+8 ] = SQRT3/3.*(1.-zeta*zeta);
+			dbasis[NUMNODESP1xP2*2+8 ] = -2.*zeta*gauss->coord3;
+			return;
+		case P2Enum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP2*0+0 ] = .5*zeta*(zeta-1.)*(-2.*gauss->coord1 + 0.5);
+			dbasis[NUMNODESP2*1+0 ] = .5*zeta*(zeta-1.)*(-2.*SQRT3/3.*gauss->coord1 + SQRT3/6.);
+			dbasis[NUMNODESP2*2+0 ] = .5*(2.*zeta-1.)*gauss->coord1*(2.*gauss->coord1-1.);
+			/*Nodal function 2*/
+			dbasis[NUMNODESP2*0+1 ] = .5*zeta*(zeta-1.)*(+2.*gauss->coord2 - 0.5);
+			dbasis[NUMNODESP2*1+1 ] = .5*zeta*(zeta-1.)*(-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.);
+			dbasis[NUMNODESP2*2+1 ] = .5*(2.*zeta-1.)*gauss->coord2*(2.*gauss->coord2-1.);
+			/*Nodal function 3*/
+			dbasis[NUMNODESP2*0+2 ] = 0.;
+			dbasis[NUMNODESP2*1+2 ] = .5*zeta*(zeta-1.)*(4.*SQRT3/3.*gauss->coord3 - SQRT3/3.);
+			dbasis[NUMNODESP2*2+2 ] = .5*(2.*zeta-1.)*gauss->coord3*(2.*gauss->coord3-1.);
+			/*Nodal function 4*/
+			dbasis[NUMNODESP2*0+3 ] = .5*zeta*(zeta+1.)*(-2.*gauss->coord1 + 0.5);
+			dbasis[NUMNODESP2*1+3 ] = .5*zeta*(zeta+1.)*(-2.*SQRT3/3.*gauss->coord1 + SQRT3/6.);
+			dbasis[NUMNODESP2*2+3 ] = .5*(2.*zeta+1.)*gauss->coord1*(2.*gauss->coord1-1.);
+			/*Nodal function 5*/
+			dbasis[NUMNODESP2*0+4 ] = .5*zeta*(zeta+1.)*(+2.*gauss->coord2 - 0.5);
+			dbasis[NUMNODESP2*1+4 ] = .5*zeta*(zeta+1.)*(-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.);
+			dbasis[NUMNODESP2*2+4 ] = .5*(2.*zeta+1.)*gauss->coord2*(2.*gauss->coord2-1.);
+			/*Nodal function 6*/
+			dbasis[NUMNODESP2*0+5 ] = 0.;
+			dbasis[NUMNODESP2*1+5 ] = .5*zeta*(zeta+1.)*(4.*SQRT3/3.*gauss->coord3 - SQRT3/3.);
+			dbasis[NUMNODESP2*2+5 ] = .5*(2.*zeta+1.)*gauss->coord3*(2.*gauss->coord3-1.);
+
+			/*Nodal function 7*/
+			dbasis[NUMNODESP2*0+6 ] = (-2.*gauss->coord1 + 0.5)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2*1+6 ] = (-2.*SQRT3/3.*gauss->coord1 + SQRT3/6.)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2*2+6 ] = -2.*zeta*gauss->coord1*(2.*gauss->coord1-1.);
+			/*Nodal function 8*/
+			dbasis[NUMNODESP2*0+7 ] = (+2.*gauss->coord2 - 0.5)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2*1+7 ] = (-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2*2+7 ] = -2.*zeta*gauss->coord2*(2.*gauss->coord2-1.);
+			/*Nodal function 9*/
+			dbasis[NUMNODESP2*0+8 ] = 0.;
+			dbasis[NUMNODESP2*1+8 ] = (+4.*SQRT3/3.*gauss->coord3 - SQRT3/3.)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2*2+8 ] = -2.*zeta*gauss->coord3*(2.*gauss->coord3-1.);
+
+			/*Nodal function 10*/
+			dbasis[NUMNODESP2*0+9 ] = zeta*(zeta-1.)*gauss->coord3;
+			dbasis[NUMNODESP2*1+9 ] = .5*zeta*(zeta-1.)*(+4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2*2+9 ] = 2.*gauss->coord3*gauss->coord2*(2.*zeta-1.);
+			/*Nodal function 11*/
+			dbasis[NUMNODESP2*0+10] = -zeta*(zeta-1.)*gauss->coord3;
+			dbasis[NUMNODESP2*1+10] = .5*zeta*(zeta-1.)*(+4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2*2+10] = 2.*gauss->coord3*gauss->coord1*(2.*zeta-1.);
+			/*Nodal function 12*/
+			dbasis[NUMNODESP2*0+11] = zeta*(zeta-1.)*(gauss->coord1-gauss->coord2);
+			dbasis[NUMNODESP2*1+11] = .5*zeta*(zeta-1.)*(-2.*SQRT3/3.*(gauss->coord1+gauss->coord2));
+			dbasis[NUMNODESP2*2+11] = 2.*gauss->coord1*gauss->coord2*(2.*zeta-1.);
+			/*Nodal function 13*/
+			dbasis[NUMNODESP2*0+12] = zeta*(zeta+1.)*gauss->coord3;
+			dbasis[NUMNODESP2*1+12] = .5*zeta*(zeta+1.)*(+4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2*2+12] = 2.*gauss->coord3*gauss->coord2*(2.*zeta+1.);
+			/*Nodal function 14*/
+			dbasis[NUMNODESP2*0+13] = -zeta*(zeta+1.)*gauss->coord3;
+			dbasis[NUMNODESP2*1+13] = .5*zeta*(zeta+1.)*(+4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2*2+13] = 2.*gauss->coord3*gauss->coord1*(2.*zeta+1.);
+			/*Nodal function 15*/
+			dbasis[NUMNODESP2*0+14] = zeta*(zeta+1.)*(gauss->coord1-gauss->coord2);
+			dbasis[NUMNODESP2*1+14] = .5*zeta*(zeta+1.)*(-2.*SQRT3/3.*(gauss->coord1+gauss->coord2));
+			dbasis[NUMNODESP2*2+14] = 2.*gauss->coord1*gauss->coord2*(2.*zeta+1.);
+
+			/*Nodal function 16*/
+			dbasis[NUMNODESP2*0+15] = 2.*gauss->coord3*(1.-zeta*zeta);
+			dbasis[NUMNODESP2*1+15] = (1.-zeta*zeta)*(+4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2*2+15] = -2.*zeta*4.*gauss->coord3*gauss->coord2;
+			/*Nodal function 17*/
+			dbasis[NUMNODESP2*0+16] = -2.*gauss->coord3*(1.-zeta*zeta);
+			dbasis[NUMNODESP2*1+16] = (1.-zeta*zeta)*(+4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2*2+16] = -2.*zeta*4.*gauss->coord3*gauss->coord1;
+			/*Nodal function 18*/
+			dbasis[NUMNODESP2*0+17] = 2.*(gauss->coord1-gauss->coord2)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2*1+17] = (1.-zeta*zeta)*(-2.*SQRT3/3.*(gauss->coord1+gauss->coord2));
+			dbasis[NUMNODESP2*2+17] = -2.*zeta*4.*gauss->coord1*gauss->coord2;
+			return;
+		case P2bubbleEnum: case P2bubblecondensedEnum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP2b*0+0 ] = .5*zeta*(zeta-1.)*(-2.*gauss->coord1 + 0.5);
+			dbasis[NUMNODESP2b*1+0 ] = .5*zeta*(zeta-1.)*(-2.*SQRT3/3.*gauss->coord1 + SQRT3/6.);
+			dbasis[NUMNODESP2b*2+0 ] = .5*(2.*zeta-1.)*gauss->coord1*(2.*gauss->coord1-1.);
+			/*Nodal function 2*/
+			dbasis[NUMNODESP2b*0+1 ] = .5*zeta*(zeta-1.)*(+2.*gauss->coord2 - 0.5);
+			dbasis[NUMNODESP2b*1+1 ] = .5*zeta*(zeta-1.)*(-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.);
+			dbasis[NUMNODESP2b*2+1 ] = .5*(2.*zeta-1.)*gauss->coord2*(2.*gauss->coord2-1.);
+			/*Nodal function 3*/
+			dbasis[NUMNODESP2b*0+2 ] = 0.;
+			dbasis[NUMNODESP2b*1+2 ] = .5*zeta*(zeta-1.)*(4.*SQRT3/3.*gauss->coord3 - SQRT3/3.);
+			dbasis[NUMNODESP2b*2+2 ] = .5*(2.*zeta-1.)*gauss->coord3*(2.*gauss->coord3-1.);
+			/*Nodal function 4*/
+			dbasis[NUMNODESP2b*0+3 ] = .5*zeta*(zeta+1.)*(-2.*gauss->coord1 + 0.5);
+			dbasis[NUMNODESP2b*1+3 ] = .5*zeta*(zeta+1.)*(-2.*SQRT3/3.*gauss->coord1 + SQRT3/6.);
+			dbasis[NUMNODESP2b*2+3 ] = .5*(2.*zeta+1.)*gauss->coord1*(2.*gauss->coord1-1.);
+			/*Nodal function 5*/
+			dbasis[NUMNODESP2b*0+4 ] = .5*zeta*(zeta+1.)*(+2.*gauss->coord2 - 0.5);
+			dbasis[NUMNODESP2b*1+4 ] = .5*zeta*(zeta+1.)*(-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.);
+			dbasis[NUMNODESP2b*2+4 ] = .5*(2.*zeta+1.)*gauss->coord2*(2.*gauss->coord2-1.);
+			/*Nodal function 6*/
+			dbasis[NUMNODESP2b*0+5 ] = 0.;
+			dbasis[NUMNODESP2b*1+5 ] = .5*zeta*(zeta+1.)*(4.*SQRT3/3.*gauss->coord3 - SQRT3/3.);
+			dbasis[NUMNODESP2b*2+5 ] = .5*(2.*zeta+1.)*gauss->coord3*(2.*gauss->coord3-1.);
+
+			/*Nodal function 7*/
+			dbasis[NUMNODESP2b*0+6 ] = (-2.*gauss->coord1 + 0.5)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2b*1+6 ] = (-2.*SQRT3/3.*gauss->coord1 + SQRT3/6.)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2b*2+6 ] = -2.*zeta*gauss->coord1*(2.*gauss->coord1-1.);
+			/*Nodal function 8*/
+			dbasis[NUMNODESP2b*0+7 ] = (+2.*gauss->coord2 - 0.5)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2b*1+7 ] = (-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2b*2+7 ] = -2.*zeta*gauss->coord2*(2.*gauss->coord2-1.);
+			/*Nodal function 9*/
+			dbasis[NUMNODESP2b*0+8 ] = 0.;
+			dbasis[NUMNODESP2b*1+8 ] = (+4.*SQRT3/3.*gauss->coord3 - SQRT3/3.)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2b*2+8 ] = -2.*zeta*gauss->coord3*(2.*gauss->coord3-1.);
+
+			/*Nodal function 10*/
+			dbasis[NUMNODESP2b*0+9 ] = zeta*(zeta-1.)*gauss->coord3;
+			dbasis[NUMNODESP2b*1+9 ] = .5*zeta*(zeta-1.)*(+4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2b*2+9 ] = 2.*gauss->coord3*gauss->coord2*(2.*zeta-1.);
+			/*Nodal function 11*/
+			dbasis[NUMNODESP2b*0+10] = -zeta*(zeta-1.)*gauss->coord3;
+			dbasis[NUMNODESP2b*1+10] = .5*zeta*(zeta-1.)*(+4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2b*2+10] = 2.*gauss->coord3*gauss->coord1*(2.*zeta-1.);
+			/*Nodal function 12*/
+			dbasis[NUMNODESP2b*0+11] = zeta*(zeta-1.)*(gauss->coord1-gauss->coord2);
+			dbasis[NUMNODESP2b*1+11] = .5*zeta*(zeta-1.)*(-2.*SQRT3/3.*(gauss->coord1+gauss->coord2));
+			dbasis[NUMNODESP2b*2+11] = 2.*gauss->coord1*gauss->coord2*(2.*zeta-1.);
+			/*Nodal function 13*/
+			dbasis[NUMNODESP2b*0+12] = zeta*(zeta+1.)*gauss->coord3;
+			dbasis[NUMNODESP2b*1+12] = .5*zeta*(zeta+1.)*(+4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2b*2+12] = 2.*gauss->coord3*gauss->coord2*(2.*zeta+1.);
+			/*Nodal function 14*/
+			dbasis[NUMNODESP2b*0+13] = -zeta*(zeta+1.)*gauss->coord3;
+			dbasis[NUMNODESP2b*1+13] = .5*zeta*(zeta+1.)*(+4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2b*2+13] = 2.*gauss->coord3*gauss->coord1*(2.*zeta+1.);
+			/*Nodal function 15*/
+			dbasis[NUMNODESP2b*0+14] = zeta*(zeta+1.)*(gauss->coord1-gauss->coord2);
+			dbasis[NUMNODESP2b*1+14] = .5*zeta*(zeta+1.)*(-2.*SQRT3/3.*(gauss->coord1+gauss->coord2));
+			dbasis[NUMNODESP2b*2+14] = 2.*gauss->coord1*gauss->coord2*(2.*zeta+1.);
+
+			/*Nodal function 16*/
+			dbasis[NUMNODESP2b*0+15] = 2.*gauss->coord3*(1.-zeta*zeta);
+			dbasis[NUMNODESP2b*1+15] = (1.-zeta*zeta)*(+4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2b*2+15] = -2.*zeta*4.*gauss->coord3*gauss->coord2;
+			/*Nodal function 17*/
+			dbasis[NUMNODESP2b*0+16] = -2.*gauss->coord3*(1.-zeta*zeta);
+			dbasis[NUMNODESP2b*1+16] = (1.-zeta*zeta)*(+4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2b*2+16] = -2.*zeta*4.*gauss->coord3*gauss->coord1;
+			/*Nodal function 18*/
+			dbasis[NUMNODESP2b*0+17] = 2.*(gauss->coord1-gauss->coord2)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2b*1+17] = (1.-zeta*zeta)*(-2.*SQRT3/3.*(gauss->coord1+gauss->coord2));
+			dbasis[NUMNODESP2b*2+17] = -2.*zeta*4.*gauss->coord1*gauss->coord2;
+
+			/*Nodal function 19*/
+			dbasis[NUMNODESP2b*0+18] = 27.*(1.+zeta)*(1.-zeta)*(-.5*gauss->coord2*gauss->coord3 + .5*gauss->coord1*gauss->coord3);
+			dbasis[NUMNODESP2b*1+18] = 27.*(1.+zeta)*(1.-zeta)*SQRT3*(-1./6.*gauss->coord2*gauss->coord3 - 1./6.*gauss->coord1*gauss->coord3 +1./3.*gauss->coord1*gauss->coord2);
+			dbasis[NUMNODESP2b*2+18] = -54*gauss->coord1*gauss->coord2*gauss->coord3*zeta;
+			return;
+		case P2xP4Enum :
+			/*Nodal function 1*/
+			dbasis[NUMNODESP2xP4*0+0 ] = (-2* gauss->coord1 + 0.5 ) *(2./3.) *(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5) ; 
+			dbasis[NUMNODESP2xP4*1+0 ] = (-((2.*SQRT3)/(3.))*gauss->coord1 + (SQRT3/6.) )*(2./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5) ; 
+			dbasis[NUMNODESP2xP4*2+0 ] =  gauss->coord1 *(2.* gauss->coord1 -1)* 2./3.*( (2.*zeta-1)*(zeta -0.5)*(zeta +0.5) + 2.* zeta *zeta *(zeta -1.)); 
+			/*Nodal function 2*/
+			dbasis[NUMNODESP2xP4*0+1 ] = (2.*gauss->coord2 - 0.5 ) *(2./3.) *(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5) ; 
+			dbasis[NUMNODESP2xP4*1+1 ] = (-((2.*SQRT3)/(3.))*gauss->coord2 + (SQRT3/6.) )*(2./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5) ; 
+			dbasis[NUMNODESP2xP4*2+1 ] = gauss->coord2*(2.*gauss->coord2 -1.)* 2./3.* ((2.*zeta-1.)*(zeta -0.5)*(zeta +0.5) + 2. * zeta *zeta*(zeta -1.)); 
+			/*Nodal function 3*/
+			dbasis[NUMNODESP2xP4*0+2 ] = 0. ; 
+			dbasis[NUMNODESP2xP4*1+2 ] = (((4.*SQRT3)/(3.))*gauss->coord3 - (SQRT3)/(3.))*(2./3.)*(zeta -1.)*(zeta-0.5)*(zeta)*(zeta+0.5); 
+			dbasis[NUMNODESP2xP4*2+2 ] = gauss->coord3*(2.* gauss->coord3 -1.)* 2./3.*( (2.*zeta-1.)*(zeta -0.5)*(zeta +0.5) + 2.*zeta *zeta*(zeta -1.)); 
+			/*Nodal function 4*/
+			dbasis[NUMNODESP2xP4*0+3 ] = (-2.* gauss->coord1 + 0.5 ) *(2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+3 ] = (-((2.*SQRT3)/(3.)) *gauss->coord1 + (SQRT3)/(6.) ) *(2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*2+3 ] = gauss->coord1*(2.*gauss->coord1 -1.)* 2./3.*( (2.*zeta+1.)*(zeta -0.5)*(zeta +0.5) + 2.*zeta *zeta*(zeta +1.)); 
+			/*Nodal function 5*/
+			dbasis[NUMNODESP2xP4*0+4 ] = (2*gauss->coord2 - 0.5 ) *(2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+4 ] = (-((2.*SQRT3)/(3.)) *gauss->coord2 + (SQRT3/6.))*(2./3.)*(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. );
+			dbasis[NUMNODESP2xP4*2+4 ] = gauss->coord2 *(2.*gauss->coord2 -1.)* 2./3.*( (2.*zeta+1.)*(zeta -0.5)*(zeta +0.5) + 2.*zeta *zeta*(zeta +1.)); 
+			/*Nodal function 6*/
+			dbasis[NUMNODESP2xP4*0+5 ] = 0. ; 
+			dbasis[NUMNODESP2xP4*1+5 ] = (((4.*SQRT3)/(3.))*gauss->coord3 - SQRT3/3. ) *(2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*2+5 ] = gauss->coord3 *(2.*gauss->coord3 -1.)* 2./3.*( (2.*zeta+1.)*(zeta -0.5)*(zeta +0.5) + 2.*zeta *zeta*(zeta +1)); 
+			/*Nodal function 7*/
+			dbasis[NUMNODESP2xP4*0+6 ] =  (-2.* gauss->coord1 + 0.5 ) * 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*1+6 ] =  (-((2.*SQRT3)/(3.)) *gauss->coord1 + (SQRT3)/(6.) )* 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1.)  ; 
+			dbasis[NUMNODESP2xP4*2+6 ] =  gauss->coord1*(2.*gauss->coord1-1)* 4.*( 4.*zeta *zeta*zeta - (5./2.)*zeta ); 
+			/*Nodal function 8*/
+			dbasis[NUMNODESP2xP4*0+7 ] =  (2*gauss->coord2 - 0.5 )* 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*1+7 ] =  (-((2.*SQRT3)/(3.)) *gauss->coord2 + (SQRT3)/(6.)) * 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. )  ; 
+			dbasis[NUMNODESP2xP4*2+7 ] =  gauss->coord2*(2.*gauss->coord2-1)* 4.*( 4.*zeta *zeta*zeta - (5./2.)*zeta ); 
+			/*Nodal function 9*/
+			dbasis[NUMNODESP2xP4*0+8 ] = 0. ; 
+			dbasis[NUMNODESP2xP4*1+8 ] = (((4.*SQRT3)/(3.))*gauss->coord3 - SQRT3/3. ) * 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. )  ; 
+			dbasis[NUMNODESP2xP4*2+8 ] = gauss->coord3*(2.*gauss->coord3-1)* 4.*( 4.*zeta *zeta*zeta - (5./2.)*zeta ); 
+			/*Nodal function 10*/
+			dbasis[NUMNODESP2xP4*0+9 ] = 2.*gauss->coord3 * 2./3.*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5) ; 
+			dbasis[NUMNODESP2xP4*1+9 ] = (4.* SQRT3/3.* gauss->coord2- 2.*SQRT3/3. *gauss->coord3) *(2./3.) *(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5);
+			dbasis[NUMNODESP2xP4*2+9 ] = 4.* gauss->coord2 * gauss->coord3 *(2./3.)*((2.*zeta-1.)*(zeta -0.5)*(zeta +0.5) + 2.* zeta*zeta*(zeta -1.)); 
+			/*Nodal function 11*/
+			dbasis[NUMNODESP2xP4*0+10] = -2.* gauss->coord3* 2./3.*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5) ; 
+			dbasis[NUMNODESP2xP4*1+10] = (4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3) * (2./3.) *(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5);
+			dbasis[NUMNODESP2xP4*2+10] = 4.* gauss->coord3*gauss->coord1 *(2./3.)*( (2*zeta-1.)*(zeta -0.5)*(zeta +0.5) + 2* zeta * zeta*(zeta -1));
+			/*Nodal function 12*/
+			dbasis[NUMNODESP2xP4*0+11] = 2.* (gauss->coord1- gauss->coord2)* (2./3.) *(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5) ; 
+			dbasis[NUMNODESP2xP4*1+11] = -2.* SQRT3/3.*(gauss->coord2 +gauss->coord1) *(2./3.) *(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5);
+			dbasis[NUMNODESP2xP4*2+11] = 4.* gauss->coord1*gauss->coord2 *(2./3.) *( (2.*zeta-1)*(zeta -0.5)*(zeta +0.5) + 2* zeta* zeta*(zeta -1));
+			/*Nodal function 13*/
+			dbasis[NUMNODESP2xP4*0+12] = 2.* gauss->coord3 * 2./3.*(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*1+12] = (4.*SQRT3/3.* gauss->coord2 - 2.*SQRT3/3. *gauss->coord3) *(2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. );
+			dbasis[NUMNODESP2xP4*2+12] = 4.*gauss->coord2*gauss->coord3 *(2./3.)*( (2.*zeta+1.)*(zeta -0.5)*(zeta +0.5) + 2*zeta*zeta*(zeta +1.)); 
+			/*Nodal function 14*/
+			dbasis[NUMNODESP2xP4*0+13] = - 2.*gauss->coord3* 2./3.*(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*1+13] = (4.*SQRT3/3.*gauss->coord1- 2.*SQRT3/3.*gauss->coord3) * (2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. );
+			dbasis[NUMNODESP2xP4*2+13] = 4.*gauss->coord3*gauss->coord1 *(2./3.)*( (2.*zeta+1.)*(zeta -0.5)*(zeta +0.5) + 2.*zeta *zeta*(zeta +1.)); 
+			/*Nodal function 15*/
+			dbasis[NUMNODESP2xP4*0+14] = 2.* (gauss->coord1- gauss->coord2)* (2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*1+14] = -2.* SQRT3/3.*(gauss->coord2 +gauss->coord1) *(2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. );
+			dbasis[NUMNODESP2xP4*2+14] = 4.*gauss->coord1*gauss->coord2 *(2./3.)*( (2.*zeta+1.)*(zeta -0.5)*(zeta +0.5) + 2* zeta *zeta*(zeta +1.)); 
+			/*Nodal function 16*/
+			dbasis[NUMNODESP2xP4*0+15] = (-2.* gauss->coord1 + 0.5 )* (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*1+15] = (-2.*SQRT3/3. *gauss->coord1 + SQRT3/6.) * (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+15] = gauss->coord1*(2.*gauss->coord1-1) * (-8./3.)*((2.*zeta -1.)*(zeta-0.5)*(zeta +1.) +zeta*(zeta -1.)*( 2.*zeta + 0.5)); 
+			/*Nodal function 17*/
+			dbasis[NUMNODESP2xP4*0+16] = (2*gauss->coord2 - 0.5 )* (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*1+16] = (-2.*SQRT3/3. *gauss->coord2 + SQRT3/6.)* (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+16] = gauss->coord2*(2.*gauss->coord2-1) * (-8./3.)*((2.*zeta -1.)*(zeta-0.5)*(zeta +1.) +zeta *(zeta -1.)*( 2.*zeta + 0.5)); 
+			/*Nodal function 18*/
+			dbasis[NUMNODESP2xP4*0+17] = 0. ; 
+			dbasis[NUMNODESP2xP4*1+17] = (4.*SQRT3/3.*gauss->coord3 - SQRT3/3. )* (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+17] = gauss->coord3*(2*gauss->coord3-1) * (-8./3.)*((2.*zeta-1.)*(zeta-0.5)*(zeta +1.) +zeta *(zeta -1.)*( 2.*zeta + 0.5));
+			/*Nodal function 19*/
+			dbasis[NUMNODESP2xP4*0+18] = (-2.* gauss->coord1 + 0.5 ) * (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*1+18] =  (-2.*SQRT3/3. *gauss->coord1 + SQRT3/6. )* (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+18] = gauss->coord1*(2.*gauss->coord1-1) * (-8./3.)*((2.*zeta -1. ) *(zeta+0.5)* (zeta +1.) +  zeta* (zeta -1.)*( 2.*zeta + 3./2.));
+			/*Nodal function 20*/
+			dbasis[NUMNODESP2xP4*0+19] = (2*gauss->coord2 - 0.5 )* (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*1+19] = (-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.) * (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+19] = gauss->coord2*(2.*gauss->coord2-1)* (-8./3.)*((2.*zeta -1. )*(zeta+0.5)*(zeta +1.) +  zeta*(zeta -1.)*( 2.*zeta + 3./2.)); 
+			/*Nodal function 21*/
+			dbasis[NUMNODESP2xP4*0+20] = 0 ; 
+			dbasis[NUMNODESP2xP4*1+20] = (4.*SQRT3/3.*gauss->coord3 - SQRT3/3.)* (-8./3.)*(zeta - 1.)*(zeta + 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+20] = gauss->coord3*(2*gauss->coord3-1) * (-8./3.)*((2. *zeta -1. )*(zeta+0.5)*(zeta +1.) +  zeta*(zeta -1.)*( 2.*zeta + 3./2.));
+			/*Nodal function 22*/
+			dbasis[NUMNODESP2xP4*0+21] = 2. *gauss->coord3 * (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+21] = (4.* SQRT3/3.*gauss->coord2- 2.*SQRT3/3.*gauss->coord3) * (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+21] = 4.*gauss->coord2 *gauss->coord3* (-8./3.)*((2.*zeta -1. )*(zeta-0.5)*(zeta +1.) +  zeta*(zeta -1.)*( 2.*zeta + 0.5)); 
+			/*Nodal function 23*/
+			dbasis[NUMNODESP2xP4*0+22] = -2. *gauss->coord3 *( -8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+22] = (4.* SQRT3/3.*gauss->coord1- 2.*SQRT3/3.*gauss->coord3 )*(-8./3.)*(zeta -1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+22] = 4.*gauss->coord1*gauss->coord3* (-8./3.)*((2.*zeta -1. )*(zeta-0.5)*(zeta +1.) +  zeta*(zeta -1.)*( 2.*zeta + 0.5)); 
+			/*Nodal function 24*/
+			dbasis[NUMNODESP2xP4*0+23] = 2.*(gauss->coord1- gauss->coord2) * (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+23] = -2.*SQRT3/3.*(gauss->coord2+ gauss->coord1) * (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+23] = 4.*gauss->coord1*gauss->coord2* (-8./3.)*((2.*zeta -1. )* (zeta-0.5) *(zeta +1.) +  zeta* (zeta -1.)*( 2.*zeta + 0.5));
+			/*Nodal function 25*/
+			dbasis[NUMNODESP2xP4*0+24] = 2. *gauss->coord3 *4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+24] = (4.*SQRT3/3.*gauss->coord2 - 2.* SQRT3/3. *gauss->coord3) *4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+24] = 4.* gauss->coord2 * gauss->coord3* 4.*( 4.* zeta*zeta*zeta - 5./2. *zeta ); 
+			/*Nodal function 26*/
+			dbasis[NUMNODESP2xP4*0+25] = -2. *gauss->coord3*4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+25] = (4.*SQRT3/3.*gauss->coord1- 2.*SQRT3/3.*gauss->coord3 )*4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+25] = 4. * gauss->coord1 * gauss->coord3 *4.*( 4. *zeta*zeta*zeta - 5./2.* zeta );
+			/*Nodal function 27*/
+			dbasis[NUMNODESP2xP4*0+26] = 2.*( gauss->coord1-gauss->coord2) * 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+26] = -2.* SQRT3/3.*(gauss->coord1+ gauss->coord2 )*4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+26] = 4. *gauss->coord1 *gauss->coord2 *4.*( 4.* zeta*zeta*zeta - 5./2.*zeta ); 
+			/*Nodal function 28*/
+			dbasis[NUMNODESP2xP4*0+27] = 2.* gauss->coord3* (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+27] = (4.*SQRT3/3.*gauss->coord2- 2.*SQRT3/3.*gauss->coord3) * (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+27] = 4.* gauss->coord2*gauss->coord3* (-8./3.)*((2.*zeta -1. )*(zeta+0.5)*(zeta +1.) +zeta*(zeta -1.)*( 2.*zeta + 3./2.)); 
+			/*Nodal function 29*/
+			dbasis[NUMNODESP2xP4*0+28] = -2.*gauss->coord3 *(-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+28] = (4.*SQRT3/3.*gauss->coord1- 2.*SQRT3/3.*gauss->coord3) * (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+28] = 4.* gauss->coord1*gauss->coord3* (-8./3.)*((2.*zeta -1. )*(zeta+0.5)*(zeta +1.) +zeta*(zeta -1.)*( 2.*zeta + 3./2.)); 
+			/*Nodal function 30*/
+			dbasis[NUMNODESP2xP4*0+29] = 2.*(gauss->coord1-gauss->coord2)* (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+29] = -2.*SQRT3/3.*(gauss->coord1+gauss->coord2) * (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+29] = 4.* gauss->coord1*gauss->coord2 * (-8./3.)*((2.*zeta -1. )*(zeta+0.5)*(zeta +1) +zeta*(zeta -1.)*( 2.*zeta + 3./2.)); 
+			return;
+		case P1xP3Enum :
+			/*Nodal function 1*/
+			dbasis[NUMNODESP1xP3*0+0 ] =  (9./32.)*(zeta-1)*(zeta-1./3.)*(zeta+1./3.);
+			dbasis[NUMNODESP1xP3*1+0 ] = ((3.*SQRT3)/32.)*(zeta-1)*(zeta-1./3.)*(zeta+1./3.);
+			dbasis[NUMNODESP1xP3*2+0 ] =- (9./16.)* gauss->coord1 *( 2. *zeta *( zeta -1. ) + ( zeta - (1./3.) )*( zeta + (1./3.) ));
+			/*Nodal function 2*/
+			dbasis[NUMNODESP1xP3*0+1 ] = - (9./32.)*(zeta-1)*(zeta-1./3.)*(zeta+1./3.);
+			dbasis[NUMNODESP1xP3*1+1 ] = ((3.*SQRT3)/32.) *(zeta-1)*(zeta-1./3.)*(zeta+1./3.);
+			dbasis[NUMNODESP1xP3*2+1 ] =- (9./16.)*gauss->coord2 *( 2.* zeta* ( zeta -1. ) + ( zeta - (1./3.) )*( zeta + (1./3.) ));
+			/*Nodal function 3*/
+			dbasis[NUMNODESP1xP3*0+2 ] =  0.;
+			dbasis[NUMNODESP1xP3*1+2 ] = - ((3.*SQRT3)/16.)*(zeta-1)*(zeta-1./3.)*(zeta+1./3.);
+			dbasis[NUMNODESP1xP3*2+2 ] = - (9./16.)* gauss->coord3* ( 2. *zeta *( zeta -1. ) + ( zeta - (1./3.) )*( zeta + (1./3.) ));
+			/*Nodal function 4*/	 
+			dbasis[NUMNODESP1xP3*0+3 ] = -  (9./32.)*(zeta-1./3.)*(zeta+1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*1+3 ] =  -((3.*SQRT3)/32.) *(zeta-1./3.)*(zeta+1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*2+3 ] = (9./16.)* gauss->coord1*( 2.* zeta *( zeta +1. ) + ( zeta - (1./3.) )*( zeta + (1./3.) ));
+			/*Nodal function 5*/	
+			dbasis[NUMNODESP1xP3*0+4 ] =   (9./32.)* (zeta-1./3.)*(zeta+1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*1+4 ] = - ((3.*SQRT3)/32.) *(zeta-1./3.)*(zeta+1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*2+4 ] = (9./16.)* gauss->coord2* ( 2.* zeta *( zeta +1. ) + ( zeta - (1./3.) )*( zeta + (1./3.) ));
+			/*Nodal function 6*/	
+			dbasis[NUMNODESP1xP3*0+5 ] =  0.;
+			dbasis[NUMNODESP1xP3*1+5 ] =  ((3.*SQRT3)/16.)  *(zeta-1./3.)*(zeta+1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*2+5 ] =  (9./16.)* gauss->coord3 *( 2.* zeta * ( zeta  + 1. ) + ( zeta - (1./3.) )*( zeta + (1./3.) ));
+			/*Nodal function 7*/	
+			dbasis[NUMNODESP1xP3*0+6 ] = -  (27./32.) *(zeta-1)*(zeta-1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*1+6 ] = -  (9.*SQRT3/32.) *(zeta-1)*(zeta-1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*2+6 ] =  gauss->coord1*(27./16.)*( 2.* zeta *( zeta - (1./3.)) + ( zeta - 1. )*( zeta + 1. ));
+			/*Nodal function 8*/	
+			dbasis[NUMNODESP1xP3*0+7 ] =  (27./32.) *(zeta-1)*(zeta-1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*1+7 ] = -((9.*SQRT3)/32.) *(zeta-1)*(zeta-1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*2+7 ] =  gauss->coord2*(27./16.)*( 2.* zeta *( zeta - (1./3.)) + ( zeta - 1. )*( zeta + 1. ));
+			/*Nodal function 9*/	
+			dbasis[NUMNODESP1xP3*0+8 ] = 0.;
+			dbasis[NUMNODESP1xP3*1+8 ] =  ((9.*SQRT3)/16.) *(zeta-1.)*(zeta-1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*2+8 ] =  gauss->coord3*(27./16.)*( 2. *zeta *( zeta - (1./3.)) + ( zeta - 1. )*( zeta + 1. ));
+			/*Nodal function 10*/	
+			dbasis[NUMNODESP1xP3*0+9 ] = (27./32.) *(zeta-1.)*(zeta+1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*1+9 ] = ((9.*SQRT3)/32.) *(zeta-1.)*(zeta+1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*2+9 ] =  -gauss->coord1 *(27./16.)*( 2* zeta *( zeta + (1./3.)) + ( zeta - 1. )*( zeta + 1. ));
+			/*Nodal function 11*/	
+			dbasis[NUMNODESP1xP3*0+10] = - (27./32.) *(zeta-1)*(zeta+1./3.)*(zeta+1);
+			dbasis[NUMNODESP1xP3*1+10] = ((9.*SQRT3)/32.)  *(zeta-1.)*(zeta+1./3.)*(zeta+1);
+			dbasis[NUMNODESP1xP3*2+10] = -gauss->coord2 *(27./16.) *( 2.* zeta *( zeta + (1./3.)) + ( zeta - 1. )*( zeta + 1. ));
+			/*Nodal function 12*/	
+			dbasis[NUMNODESP1xP3*0+11] = 0.;
+			dbasis[NUMNODESP1xP3*1+11] = -((9.*SQRT3)/16.) *(zeta-1.)*(zeta+1./3.)*(zeta+1);
+			dbasis[NUMNODESP1xP3*2+11] = -gauss->coord3 *(27./16.)*( 2.* zeta *( zeta + (1./3.)) + ( zeta - 1. )*( zeta + 1. ));
+			return;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+}
+/*}}}*/
+void PentaRef::GetQuadJacobianDeterminant(IssmDouble* Jdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*This routine returns the values of the nodal functions  at the gaussian point.*/
+
+	IssmDouble x1,x2,x3,x4,y1,y2,y3,y4,z1,z2,z3,z4;
+
+	x1=xyz_list[0*3+0];
+	y1=xyz_list[0*3+1];
+	z1=xyz_list[0*3+2];
+	x2=xyz_list[1*3+0];
+	y2=xyz_list[1*3+1];
+	z2=xyz_list[1*3+2];
+	x3=xyz_list[2*3+0];
+	y3=xyz_list[2*3+1];
+	z3=xyz_list[2*3+2];
+	x4=xyz_list[3*3+0];
+	y4=xyz_list[3*3+1];
+	z4=xyz_list[3*3+2];
+
+	/*Jdet = (Area of the trapezoid)/(Area trapezoid ref) with AreaRef = 4*/
+	/*Area of a trabezoid = altitude * (base1 + base2)/2 */
+	*Jdet= sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)) * (z4-z1 + z3-z2)/8.;
+	if(*Jdet<0.) _error_("negative jacobian determinant!");
+
+}
+/*}}}*/
+void PentaRef::GetSegmentJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*The Jacobian determinant is constant over the element, discard the gaussian points. 
+	 * J is assumed to have been allocated of size NDOF2xNDOF2.*/
+
+	IssmDouble x1=xyz_list[3*0+0];
+	IssmDouble y1=xyz_list[3*0+1];
+	IssmDouble z1=xyz_list[3*0+2];
+	IssmDouble x2=xyz_list[3*1+0];
+	IssmDouble y2=xyz_list[3*1+1];
+	IssmDouble z2=xyz_list[3*1+2];
+
+	*Jdet=.5*sqrt(pow(x2-x1,2) + pow(y2-y1,2) + pow(z2-z1,2));
+	if(*Jdet<0) _error_("negative jacobian determinant!");
+
+}
+/*}}}*/
+void PentaRef::GetTriaJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*The Jacobian determinant is constant over the element, discard the gaussian points. 
+	 * J is assumed to have been allocated of size NDOF2xNDOF2.*/
+
+	IssmDouble x1=xyz_list[3*0+0];
+	IssmDouble y1=xyz_list[3*0+1];
+	IssmDouble z1=xyz_list[3*0+2];
+	IssmDouble x2=xyz_list[3*1+0];
+	IssmDouble y2=xyz_list[3*1+1];
+	IssmDouble z2=xyz_list[3*1+2];
+	IssmDouble x3=xyz_list[3*2+0];
+	IssmDouble y3=xyz_list[3*2+1];
+	IssmDouble z3=xyz_list[3*2+2];
+
+	/*Jdet = norm( AB ^ AC ) / (2 * area of the reference triangle), with areaRef=sqrt(3) */
+	*Jdet=SQRT3/6.*pow(pow(((y2-y1)*(z3-z1)-(z2-z1)*(y3-y1)),2)+pow(((z2-z1)*(x3-x1)-(x2-x1)*(z3-z1)),2)+pow(((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)),2),0.5);
+	if(*Jdet<0) _error_("negative jacobian determinant!");
+}
+/*}}}*/
+int  PentaRef::NumberofNodes(int finiteelement){/*{{{*/
+
+	switch(finiteelement){
+		case NoneEnum:              return 0;
+		case P0Enum:                return NUMNODESP0;
+		case P1Enum:                return NUMNODESP1;
+		case P1DGEnum:              return NUMNODESP1;
+		case P1bubbleEnum:          return NUMNODESP1b;
+		case P1bubblecondensedEnum: return NUMNODESP1b;
+		case P2Enum:                return NUMNODESP2;
+		case P2bubbleEnum:          return NUMNODESP2b;
+		case P2bubblecondensedEnum: return NUMNODESP2b;
+		case P2xP1Enum:             return NUMNODESP2xP1;
+		case P1xP2Enum:             return NUMNODESP1xP2;
+		case P2xP4Enum:             return NUMNODESP2xP4;
+		case P1xP3Enum:             return NUMNODESP1xP3;
+		case P1P1Enum:              return NUMNODESP1*2;
+		case P1P1GLSEnum:           return NUMNODESP1*2;
+		case MINIcondensedEnum:     return NUMNODESP1b+NUMNODESP1;
+		case MINIEnum:              return NUMNODESP1b+NUMNODESP1;
+		case TaylorHoodEnum:        return NUMNODESP2+NUMNODESP1;
+		case LATaylorHoodEnum:      return NUMNODESP2;
+		case OneLayerP4zEnum:       return NUMNODESP2xP4+NUMNODESP1;
+		case CrouzeixRaviartEnum:   return NUMNODESP2b+NUMNODESP1;
+		case LACrouzeixRaviartEnum: return NUMNODESP2b;
+		default:       _error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
+int  PentaRef::PressureInterpolation(int fe_stokes){/*{{{*/
+
+	switch(fe_stokes){
+		case P1P1Enum:              return P1Enum;
+		case P1P1GLSEnum:           return P1Enum;
+		case MINIcondensedEnum:     return P1Enum;
+		case MINIEnum:              return P1Enum;
+		case TaylorHoodEnum:        return P1Enum;
+		case LATaylorHoodEnum:      return NoneEnum;
+		case OneLayerP4zEnum:       return P1Enum;
+		case CrouzeixRaviartEnum:   return P1DGEnum;
+		case LACrouzeixRaviartEnum: return NoneEnum;
+		default:       _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
+void PentaRef::SurfaceNodeIndices(int* pnumindices,int** pindices,int finiteelement){/*{{{*/
+
+	/*Output*/
+	int  numindices;
+	int* indices = NULL;
+
+	switch(finiteelement){
+		case P1Enum: case P1DGEnum:
+			numindices = 3;
+			indices    = xNew<int>(numindices);
+			indices[0] = 3;
+			indices[1] = 4;
+			indices[2] = 5;
+			break;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			numindices = 3;
+			indices    = xNew<int>(numindices);
+			indices[0] = 3;
+			indices[1] = 4;
+			indices[2] = 5;
+			break;
+		case P2xP1Enum:
+			numindices = 6;
+			indices    = xNew<int>(numindices);
+			indices[0] = 3;
+			indices[1] = 4;
+			indices[2] = 5;
+			indices[3] = 9;
+			indices[4] = 10;
+			indices[5] = 11;
+			break;
+		case P1xP2Enum:
+			numindices = 3;
+			indices    = xNew<int>(numindices);
+			indices[0] = 3;
+			indices[1] = 4;
+			indices[2] = 5;
+			return;
+		case P2Enum:
+			numindices = 6;
+			indices    = xNew<int>(numindices);
+			indices[0] = 3;
+			indices[1] = 4;
+			indices[2] = 5;
+			indices[3] = 12;
+			indices[4] = 13;
+			indices[5] = 14;
+			break;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+	/*Assign output pointer*/
+	*pnumindices = numindices;
+	*pindices    = indices;
+}
+/*}}}*/
+int  PentaRef::TensorInterpolation(int fe_stokes){/*{{{*/
+
+	switch(fe_stokes){
+		case XTaylorHoodEnum:    return P1DGEnum;
+		default: _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
+int  PentaRef::VelocityInterpolation(int fe_stokes){/*{{{*/
+
+	switch(fe_stokes){
+		case P1P1Enum:              return P1Enum;
+		case P1P1GLSEnum:           return P1Enum;
+		case MINIcondensedEnum:     return P1bubbleEnum;
+		case MINIEnum:              return P1bubbleEnum;
+		case TaylorHoodEnum:        return P2Enum;
+		case LATaylorHoodEnum:      return P2Enum;
+		case OneLayerP4zEnum:       return P2xP4Enum;
+		case CrouzeixRaviartEnum:   return P2bubbleEnum;
+		case LACrouzeixRaviartEnum: return P2bubbleEnum;
+		default:       _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/PentaRef.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/PentaRef.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/PentaRef.h	(revision 21239)
@@ -0,0 +1,37 @@
+/*!\file:  PentaRef.h
+ * \brief abstract class for handling Penta oriented routines, like nodal functions, 
+ * strain rate generation, etc ...
+ */ 
+
+#ifndef _PENTAREF_H_
+#define _PENTAREF_H_
+
+class Gauss;
+class PentaRef{
+
+	public: 
+		PentaRef();
+		~PentaRef();
+
+		/*Numerics*/
+		void BasalNodeIndices(int* pnumindices,int** pindices,int finiteelement);
+		void GetInputDerivativeValue(IssmDouble* pvalues, IssmDouble* plist,IssmDouble* xyz_list, Gauss* gauss,int finiteelement);
+		void GetInputValue(IssmDouble* pvalue,IssmDouble* plist, Gauss* gauss,int finiteelement);
+		void GetJacobian(IssmDouble* J, IssmDouble* xyz_list,Gauss* gauss);
+		void GetJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void GetJacobianInvert(IssmDouble*  Jinv, IssmDouble* xyz_list,Gauss* gauss);
+		void GetLprimeFSSSA(IssmDouble* LprimeFSSSA, IssmDouble* xyz_list, Gauss* gauss);
+		void GetNodalFunctions(IssmDouble* basis, Gauss* gauss,int finiteelement);
+		void GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss,int finiteelement);
+		void GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,Gauss* gauss,int finiteelement);
+		void GetQuadJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void GetSegmentJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void GetTriaJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*do nothing */};
+		int  NumberofNodes(int finiteelement);
+		int  PressureInterpolation(int fe_stokes);
+		void SurfaceNodeIndices(int* pnumindices,int** pindices,int finiteelement);
+		int  TensorInterpolation(int fe_stokes);
+		int  VelocityInterpolation(int fe_stokes);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Seg.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Seg.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Seg.cpp	(revision 21239)
@@ -0,0 +1,291 @@
+/*!\file Seg.cpp
+ * \brief: implementation of the Segment object
+ */
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMVERTICES 2
+/*Constructors/destructor/copy*/
+Seg::Seg(int seg_id, int seg_sid, int index, IoModel* iomodel,int nummodels)/*{{{*/
+		:ElementHook(nummodels,index+1,NUMVERTICES,iomodel){
+
+			/*id: */
+			this->id  = seg_id;
+			this->sid = seg_sid;
+
+			//this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
+			this->parameters = NULL;
+
+			/*intialize inputs: */
+			this->inputs  = new Inputs();
+
+			/*initialize pointers:*/
+			this->nodes    = NULL;
+			this->vertices = NULL;
+			this->material = NULL;
+			this->matpar   = NULL;
+
+			/*Only allocate pointer*/
+			this->element_type_list=xNew<int>(nummodels);
+		}
+/*}}}*/
+Seg::~Seg(){/*{{{*/
+	this->parameters=NULL;
+}
+/*}}}*/
+Object* Seg::copy(){/*{{{*/
+
+	int i;
+	Seg* seg=NULL;
+
+	seg=new Seg();
+
+	//deal with TriaRef mother class
+	int nanalyses = this->numanalyses;
+	if(nanalyses > 0){
+		seg->element_type_list=xNew<int>(nanalyses);
+		for(i=0;i<nanalyses;i++){
+			if (this->element_type_list[i]) seg->element_type_list[i]=this->element_type_list[i];
+			else seg->element_type_list[i] = 0;
+		}
+	}
+	else seg->element_type_list = NULL;
+	seg->element_type=this->element_type;
+	seg->numanalyses=nanalyses;
+
+	//deal with ElementHook mother class
+	if (this->hnodes){
+		seg->hnodes=xNew<Hook*>(seg->numanalyses);
+		for(i=0;i<seg->numanalyses;i++){
+			if (this->hnodes[i]) seg->hnodes[i] = (Hook*)(this->hnodes[i]->copy());
+			else seg->hnodes[i] = NULL;
+		}
+	}
+	else seg->hnodes = NULL;
+
+	seg->hvertices = (Hook*)this->hvertices->copy();
+	seg->hmaterial = (Hook*)this->hmaterial->copy();
+	seg->hmatpar   = (Hook*)this->hmatpar->copy();
+	seg->hneighbors = NULL;
+
+	/*deal with Element fields: */
+	seg->id  = this->id;
+	seg->sid = this->sid;
+	if(this->inputs) seg->inputs = (Inputs*)(this->inputs->Copy());
+	else seg->inputs=new Inputs();
+
+	/*point parameters: */
+	seg->parameters=this->parameters;
+
+	/*recover objects: */
+	if (this->nodes){
+		unsigned int num_nodes = 3;
+		seg->nodes = xNew<Node*>(num_nodes); //we cannot rely on an analysis_counter to tell us which analysis_type we are running, so we just copy the nodes.
+		for(i=0;i<num_nodes;i++) if(this->nodes[i]) seg->nodes[i]=this->nodes[i]; else seg->nodes[i] = NULL;
+	}
+	else seg->nodes = NULL;
+
+	seg->vertices = (Vertex**)this->hvertices->deliverp();
+	seg->material = (Material*)this->hmaterial->delivers();
+	seg->matpar   = (Matpar*)this->hmatpar->delivers();
+
+	return seg;
+
+
+}
+/*}}}*/
+void Seg::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(SegEnum);
+
+	/*Call parent classes: */
+	ElementHook::Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	Element::MarshallElement(pmarshalled_data,pmarshalled_data_size,marshall_direction,this->numanalyses);
+	SegRef::Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	vertices = (Vertex**)this->hvertices->deliverp();
+	material = (Material*)this->hmaterial->delivers();
+	matpar   = (Matpar*)this->hmatpar->delivers();
+
+}
+/*}}}*/
+
+IssmDouble Seg::CharacteristicLength(void){/*{{{*/
+
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble x1,y1,x2,y2;
+
+	/*Get xyz list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	x1=xyz_list[0][0]; y1=xyz_list[0][1];
+	x2=xyz_list[1][0]; y2=xyz_list[1][1];
+
+	return sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
+}
+/*}}}*/
+int        Seg::FiniteElement(void){/*{{{*/
+	return this->element_type;
+}
+/*}}}*/
+void       Seg::GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){/*{{{*/
+	
+	/* Intermediaries */
+	int nrfrontnodes,index;
+	IssmDouble  levelset[NUMVERTICES];
+
+	/*Recover parameters and values*/
+	GetInputListOnVertices(&levelset[0],levelsetenum);
+	/* Get nodes where there is no ice */
+	nrfrontnodes=0;
+	for(int i=0;i<NUMVERTICES;i++){
+		if(levelset[i]>=0.){
+			index=i;
+			nrfrontnodes++;
+		}
+	}
+
+	_assert_(nrfrontnodes==1);
+
+	IssmDouble* xyz_front = xNew<IssmDouble>(3);
+
+	/* Return nodes */
+	for(int dir=0;dir<3;dir++){
+		xyz_front[dir]=xyz_list[3*index+dir];
+	}
+
+	*pxyz_front=xyz_front;
+}/*}}}*/
+int        Seg::GetNumberOfNodes(void){/*{{{*/
+	return this->NumberofNodes(this->element_type);
+}
+/*}}}*/
+int        Seg::GetNumberOfVertices(void){/*{{{*/
+	return NUMVERTICES;
+}
+/*}}}*/
+void       Seg::GetVerticesCoordinates(IssmDouble** pxyz_list){/*{{{*/
+
+	IssmDouble* xyz_list = xNew<IssmDouble>(NUMVERTICES*3);
+	::GetVerticesCoordinates(xyz_list,this->vertices,NUMVERTICES);
+
+	/*Assign output pointer*/
+	*pxyz_list = xyz_list;
+
+}/*}}}*/
+bool       Seg::IsIcefront(void){/*{{{*/
+
+	bool isicefront;
+	int i,nrice;
+	IssmDouble ls[NUMVERTICES];
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&ls[0],MaskIceLevelsetEnum);
+
+	/* If only one vertex has ice, there is an ice front here */
+	isicefront=false;
+	if(IsIceInElement()){
+		nrice=0;       
+		for(i=0;i<NUMVERTICES;i++)
+		 if(ls[i]<0.) nrice++;
+		if(nrice==1) isicefront= true;
+	}
+	return isicefront;
+}/*}}}*/
+void       Seg::JacobianDeterminant(IssmDouble* pJdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussSegEnum);
+	this->GetJacobianDeterminant(pJdet,xyz_list,(GaussSeg*)gauss);
+
+}
+/*}}}*/
+void       Seg::JacobianDeterminantSurface(IssmDouble* pJdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	*pJdet = 1.;
+
+}
+/*}}}*/
+Gauss*     Seg::NewGauss(void){/*{{{*/
+	return new GaussSeg();
+}
+/*}}}*/
+Gauss*     Seg::NewGauss(int order){/*{{{*/
+	return new GaussSeg(order);
+}
+/*}}}*/
+Gauss*     Seg::NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order){/*{{{*/
+
+	/*Output*/
+	Gauss* gauss = NULL;
+
+	if(xyz_list_front[0] == xyz_list[0]){
+		gauss = new GaussSeg(-1.);
+	}
+	else if(xyz_list_front[0] == xyz_list[3*1+0]){
+		gauss = new GaussSeg(+1.);
+	}
+	else{
+		_error_("front is not located on element edge");
+	}
+
+	return gauss;
+}
+/*}}}*/
+void       Seg::NodalFunctions(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussSegEnum);
+	this->GetNodalFunctions(basis,(GaussSeg*)gauss,this->element_type);
+
+}
+/*}}}*/
+void       Seg::NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussSegEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussSeg*)gauss,this->element_type);
+
+}
+/*}}}*/
+void       Seg::NodalFunctionsP1(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussSegEnum);
+	this->GetNodalFunctions(basis,(GaussSeg*)gauss,P1Enum);
+
+}
+/*}}}*/
+void       Seg::NodalFunctionsP2(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussSegEnum);
+	this->GetNodalFunctions(basis,(GaussSeg*)gauss,P2Enum);
+
+}
+/*}}}*/
+void       Seg::NormalSection(IssmDouble* normal,IssmDouble* xyz_list_front){/*{{{*/
+
+	IssmDouble* xyz_list = xNew<IssmDouble>(NUMVERTICES*3);
+	::GetVerticesCoordinates(xyz_list,this->vertices,NUMVERTICES);
+
+	if(xyz_list_front[0]>xyz_list[0])
+	 normal[0]= + 1.;
+	else
+	 normal[0]= - 1.;
+
+	xDelete<IssmDouble>(xyz_list);
+}
+/*}}}*/
+int        Seg::ObjectEnum(void){/*{{{*/
+
+	return SegEnum;
+
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Seg.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Seg.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Seg.h	(revision 21239)
@@ -0,0 +1,185 @@
+/*! \file Seg.h 
+ *  \brief: header file for seg object
+ */
+
+#ifndef _SEG_H_
+#define _SEG_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Element.h"
+#include "./ElementHook.h"
+#include "./SegRef.h"
+class Parameters;
+class Inputs;
+class IoModel;
+class Results;
+class Node;
+class Material;
+class Matpar;
+class ElementMatrix;
+class ElementVector;
+class Vertex;
+
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/Enum/Enum.h"
+/*}}}*/
+
+class Seg: public Element,public ElementHook,public SegRef{
+
+	public:
+
+		/*Seg constructors, destructors {{{*/
+		Seg(){};
+		Seg(int seg_id,int seg_sid,int i, IoModel* iomodel,int nummodels);
+		~Seg();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object *copy();
+		void    Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int     ObjectEnum();
+		/*}}}*/
+		/*Element virtual functions definitions: {{{*/
+		void        AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum){_error_("not implemented yet");};
+		void        AddInput(int input_enum, IssmDouble* values, int interpolation_enum){_error_("not implemented yet");};
+		void        AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part){_error_("not implemented yet");};
+		void        CalvingRateLevermann(void){_error_("not implemented yet");};
+		IssmDouble  CharacteristicLength(void);
+		void        ComputeBasalStress(Vector<IssmDouble>* sigma_b){_error_("not implemented yet");};
+		void        ComputeDeviatoricStressTensor(){_error_("not implemented yet");};
+		void        ComputeSigmaNN(){_error_("not implemented yet");};
+		void        ComputeStressTensor(){_error_("not implemented yet");};
+		void        Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters){_error_("not implemented yet");};
+		void        ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index){_error_("not implemented yet");};
+		void        ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum){_error_("not implemented yet");};
+		void        ElementResponse(IssmDouble* presponse,int response_enum){_error_("not implemented yet");};
+		void        ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz){_error_("not implemented yet");};
+		int         FiniteElement(void);
+		IssmDouble  FloatingArea(void){_error_("not implemented yet");};
+		void        FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){_error_("not implemented yet");};
+		Element*    GetBasalElement(void){_error_("not implemented yet");};
+		int         GetElementType(void){_error_("not implemented yet");};
+		void        GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating){_error_("not implemented yet");};
+		IssmDouble  GetGroundedPortion(IssmDouble* xyz_list){_error_("not implemented yet");};
+		void		   GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum);
+		void        GetInputValue(IssmDouble* pvalue,Node* node,int enumtype){_error_("not implemented yet");};
+		void		   GetLevelCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum,IssmDouble level){_error_("not implemented");};
+		void        GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* levelsetvalues){_error_("not implemented yet");};
+		Node*       GetNode(int node_number){_error_("Not implemented");};
+		int         GetNodeIndex(Node* node){_error_("not implemented yet");};
+		int         GetNumberOfNodes(void);
+		int         GetNumberOfNodes(int enum_type){_error_("not implemented yet");};
+		int         GetNumberOfVertices(void);
+		void        GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type){_error_("not implemented yet");};
+		Element*    GetUpperElement(void){_error_("not implemented yet");};
+		void        GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,bool onsid){_error_("not implemented yet");};
+		void        GetVerticesCoordinates(IssmDouble** pxyz_list);
+		void        GetVerticesCoordinatesBase(IssmDouble** pxyz_list){_error_("not implemented yet");};
+		void        GetVerticesCoordinatesTop(IssmDouble** pxyz_list){_error_("not implemented yet");};
+		IssmDouble  GroundedArea(void){_error_("not implemented yet");};
+		IssmDouble  IceMass(void){_error_("not implemented yet");};
+		IssmDouble  IceVolume(void){_error_("not implemented yet");};
+		IssmDouble  IceVolumeAboveFloatation(void){_error_("not implemented yet");};
+		void        InputControlUpdate(IssmDouble scalar,bool save_parameter){_error_("not implemented yet");};
+		void        InputDepthAverageAtBase(int enum_type,int average_enum_type){_error_("not implemented yet");};
+		void        InputExtrude(int enum_type,int start){_error_("not implemented"); /*For penta only*/};
+		void        InputScale(int enum_type,IssmDouble scale_factor){_error_("not implemented yet");};
+		void        InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
+		void        InputUpdateFromSolutionOneDof(IssmDouble* solution,int inputenum){_error_("not implemented yet");};
+		void        InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solution,int inputenum){_error_("not implemented yet");};
+		void        InputUpdateFromVector(IssmDouble* vector, int name, int type){_error_("not implemented yet");};
+		bool        IsFaceOnBoundary(void){_error_("not implemented yet");};
+		bool		   IsIcefront(void);
+		bool        IsNodeOnShelfFromFlags(IssmDouble* flags){_error_("not implemented yet");};
+		bool        IsOnBase(){_error_("not implemented yet");};
+		bool        IsOnSurface(){_error_("not implemented yet");};
+		bool        IsZeroLevelset(int levelset_enum){_error_("not implemented");};
+		void        JacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void        JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss){_error_("not implemented yet");};
+		void        JacobianDeterminantLine(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void        JacobianDeterminantSurface(IssmDouble*  pJdet, IssmDouble* xyz_list,Gauss* gauss);
+		void        JacobianDeterminantTop(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss){_error_("not implemented yet");};
+		IssmDouble  Masscon(IssmDouble* levelset){_error_("not implemented yet");};
+		IssmDouble  MassFlux(IssmDouble* segment){_error_("not implemented yet");};
+		IssmDouble  MassFlux(IssmDouble x1,IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id){_error_("not implemented yet");}
+		void        MaterialUpdateFromTemperature(void){_error_("not implemented yet");};
+		IssmDouble  MinEdgeLength(IssmDouble* xyz_list){_error_("not implemented yet");};
+		IssmDouble  Misfit(int modelenum,int observationenum,int weightsenum){_error_("not implemented yet");};
+		IssmDouble  MisfitArea(int weightsenum){_error_("not implemented yet");};
+		Gauss*      NewGauss(void);
+		Gauss*      NewGauss(int order);
+      Gauss*      NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order);
+      Gauss*      NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert){_error_("not implemented yet");};
+      Gauss*      NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order){_error_("not implemented yet");};
+		Gauss*      NewGaussBase(int order){_error_("not implemented yet");};
+		Gauss*      NewGaussLine(int vertex1,int vertex2,int order){_error_("not implemented yet");};
+		Gauss*      NewGaussTop(int order){_error_("not implemented yet");};
+		int         NodalValue(IssmDouble* pvalue, int index, int natureofdataenum){_error_("not implemented yet");};
+		void        NodalFunctions(IssmDouble* basis,Gauss* gauss);
+		void        NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void        NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void        NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void        NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");};
+		void        NodalFunctionsP1(IssmDouble* basis,Gauss* gauss);
+		void        NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void        NodalFunctionsP2(IssmDouble* basis,Gauss* gauss);
+		void        NodalFunctionsTensor(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");};
+		void        NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");};
+		void        NormalBase(IssmDouble* normal,IssmDouble* xyz_list){_error_("not implemented yet");};
+		void        NormalSection(IssmDouble* normal,IssmDouble* xyz_list);
+		void        NormalTop(IssmDouble* normal,IssmDouble* xyz_list){_error_("not implemented yet");};
+		int         NumberofNodesPressure(void){_error_("not implemented yet");};
+		int         NumberofNodesVelocity(void){_error_("not implemented yet");};
+		void        PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding){_error_("not implemented yet");};
+		int         PressureInterpolation(void){_error_("not implemented yet");};
+		void        ReduceMatrices(ElementMatrix* Ke,ElementVector* pe){_error_("not implemented yet");};
+		void        ResetFSBasalBoundaryCondition(void){_error_("not implemented yet");};
+		void        ResetHooks(){_error_("not implemented yet");};
+		void        SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index){_error_("not implemented yet");};
+		void        SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters){_error_("not implemented yet");};
+		void        SetTemporaryElementType(int element_type_in){_error_("not implemented yet");};
+	   Element*    SpawnBasalElement(void){_error_("not implemented yet");};
+		Element*    SpawnTopElement(void){_error_("not implemented yet");};
+		IssmDouble  StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){_error_("not implemented yet");};
+		void        StrainRateparallel(void){_error_("not implemented yet");};
+		void        StrainRateperpendicular(void){_error_("not implemented yet");};
+		void        StressIntensityFactor(void){_error_("not implemented yet");};
+		IssmDouble  SurfaceArea(void){_error_("not implemented yet");};
+		int         TensorInterpolation(void){_error_("not implemented yet");};
+		IssmDouble  TimeAdapt(){_error_("not implemented yet");};
+		IssmDouble  TotalFloatingBmb(void){_error_("not implemented yet");};
+		IssmDouble  TotalGroundedBmb(void){_error_("not implemented yet");};
+		IssmDouble  TotalSmb(void){_error_("not implemented yet");};
+		void        Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement){_error_("not implemented yet");};
+		void        UpdateConstraintsExtrudeFromBase(){_error_("not implemented");};
+		void        UpdateConstraintsExtrudeFromTop(){_error_("not implemented");};
+		int         UpdatePotentialUngrounding(IssmDouble* vertices_potentially_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf){_error_("not implemented yet");};
+		void        ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void        ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss){_error_("not implemented yet");};
+		int         VelocityInterpolation(void){_error_("not implemented yet");};
+		int         VertexConnectivity(int vertexindex){_error_("not implemented yet");};
+		void        VerticalSegmentIndices(int** pindices,int* pnumseg){_error_("not implemented yet");};
+		void        ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not implemented yet");};
+		void        ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented");};
+		IssmDouble     GetArea3D(void){_error_("not implemented yet!");};
+		IssmDouble     GetAreaSpherical(void){_error_("not implemented yet!");};
+
+#ifdef _HAVE_GIA_
+		void        GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y){_error_("not implemented yet");};
+#endif
+
+#ifdef _HAVE_SEALEVELRISE_
+		void    SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
+		void    SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
+		void    SealevelriseGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* Sg,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
+		IssmDouble    OceanArea(void){_error_("not implemented yet!");};
+		IssmDouble    OceanAverage(IssmDouble* Sg){_error_("not implemented yet!");};
+#endif
+
+#ifdef _HAVE_DAKOTA_
+		void        InputUpdateFromMatrixDakota(IssmDouble* matrix, int nows, int ncols, int name, int type){_error_("not implemented yet");};
+		void        InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){_error_("not implemented yet");};
+#endif
+		/*}}}*/
+};
+#endif  /* _SEG_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/SegRef.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/SegRef.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/SegRef.cpp	(revision 21239)
@@ -0,0 +1,202 @@
+/*!\file SegRef.c
+ * \brief: implementation of the SegRef object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMNODESP0  1
+#define NUMNODESP1  2
+#define NUMNODESMAX 2
+
+/*Object constructors and destructor*/
+SegRef::SegRef(){/*{{{*/
+}
+/*}}}*/
+SegRef::~SegRef(){/*{{{*/
+}
+/*}}}*/
+
+/*Reference Element numerics*/
+void SegRef::GetInputDerivativeValue(IssmDouble* p, IssmDouble* plist,IssmDouble* xyz_list, GaussSeg* gauss,int finiteelement){/*{{{*/
+
+	/*From node values of parameter p (plist[0],plist[1]), return parameter derivative value at gaussian 
+	 * point specified by gauss_basis:
+	 *   dp/dx=plist[0]*dh1/dx+plist[1]*dh2/dx
+	 *
+	 * p is a vector already allocated.
+	 *
+	 * WARNING: For a significant gain in performance, it is better to use
+	 * static memory allocation instead of dynamic.
+	 */
+
+	/*Allocate derivatives of basis functions*/
+	IssmDouble  dbasis[1*NUMNODESMAX];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+	_assert_(numnodes<=NUMNODESMAX);
+
+	/*Get basis functions derivatives at this point*/
+	GetNodalFunctionsDerivatives(&dbasis[0],xyz_list,gauss,finiteelement);
+
+	/*Calculate parameter for this Gauss point*/
+	IssmDouble dpx=0.;
+	for(int i=0;i<numnodes;i++) dpx += dbasis[0*numnodes+i]*plist[i];
+
+	/*Assign values*/
+	p[0]=dpx;
+}
+/*}}}*/
+void SegRef::GetInputValue(IssmDouble* p, IssmDouble* plist, GaussSeg* gauss,int finiteelement){/*{{{*/
+	/* WARNING: For a significant gain in performance, it is better to use
+	 * static memory allocation instead of dynamic.*/
+
+	/*Allocate basis functions*/
+	IssmDouble  basis[NUMNODESMAX];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+	_assert_(numnodes<=NUMNODESMAX);
+
+	/*Get basis functions at this point*/
+	GetNodalFunctions(&basis[0],gauss,finiteelement);
+
+	/*Calculate parameter for this Gauss point*/
+	IssmDouble value =0.;
+	for(int i=0;i<numnodes;i++) value += basis[i]*plist[i];
+
+	/*Assign output pointer*/
+	*p = value;
+}
+/*}}}*/
+void SegRef::GetJacobian(IssmDouble* J, IssmDouble* xyz_list,GaussSeg* gauss){/*{{{*/
+	/*The Jacobian is constant over the element, discard the gaussian points. 
+	 * J is assumed to have been allocated of size 1*/
+
+	IssmDouble x1=xyz_list[3*0+0];
+	IssmDouble x2=xyz_list[3*1+0];
+
+	*J=.5*fabs(x2-x1);
+}
+/*}}}*/
+void SegRef::GetJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,GaussSeg* gauss){/*{{{*/
+	/*The Jacobian determinant is constant over the element, discard the gaussian points. 
+	 * J is assumed to have been allocated of size NDOF2xNDOF2.*/
+
+	/*Call Jacobian routine to get the jacobian:*/
+	GetJacobian(Jdet, xyz_list, gauss);
+	if(*Jdet<0) _error_("negative jacobian determinant!");
+
+}
+/*}}}*/
+void SegRef::GetJacobianInvert(IssmDouble* Jinv, IssmDouble* xyz_list,GaussSeg* gauss){/*{{{*/
+
+	/*Jacobian*/
+	IssmDouble J;
+
+	/*Call Jacobian routine to get the jacobian:*/
+	GetJacobian(&J, xyz_list, gauss);
+
+	/*Invert Jacobian matrix: */
+	*Jinv = 1./J;
+}
+/*}}}*/
+void SegRef::GetNodalFunctions(IssmDouble* basis,GaussSeg* gauss,int finiteelement){/*{{{*/
+	/*This routine returns the values of the nodal functions  at the gaussian point.*/
+
+	_assert_(basis);
+
+	switch(finiteelement){
+		case P0Enum:
+			basis[0]=1.;
+			return;
+		case P1Enum: case P1DGEnum:
+			basis[0]=(1.-gauss->coord1)/2.;
+			basis[1]=(1.+gauss->coord1)/2.;
+			return;
+		case P2Enum:
+			basis[0]=(gauss->coord1-1.)*gauss->coord1/2.;
+			basis[1]=gauss->coord1*(1.+gauss->coord1)/2.;
+			basis[2]=(1.-gauss->coord1)*(1.+gauss->coord1);
+			return;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+}
+/*}}}*/
+void SegRef::GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, GaussSeg* gauss,int finiteelement){/*{{{*/
+
+	/*This routine returns the values of the nodal functions derivatives  (with respect to the 
+	 * actual coordinate system): */
+	IssmDouble    Jinv;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+
+	/*Get nodal functions derivatives in reference triangle*/
+	IssmDouble dbasis_ref[1*NUMNODESMAX];
+	GetNodalFunctionsDerivativesReference(dbasis_ref,gauss,finiteelement); 
+
+	/*Get Jacobian invert: */
+	GetJacobianInvert(&Jinv, xyz_list, gauss);
+
+	/*Build dbasis: 
+	 * [dhi/dx]= Jinv*[dhi/dr]
+	 */
+	for(int i=0;i<numnodes;i++){
+		dbasis[i] = Jinv*dbasis_ref[i];
+	}
+}
+/*}}}*/
+void SegRef::GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,GaussSeg* gauss,int finiteelement){/*{{{*/
+	/*This routine returns the values of the nodal functions derivatives  (with respect to the 
+	 * natural coordinate system) at the gaussian point. */
+
+	_assert_(dbasis && gauss);
+
+	switch(finiteelement){
+		case P0Enum:
+			/*Nodal function 1*/
+			dbasis[0] = 0.;
+			break;
+		case P1Enum: case P1DGEnum:
+			/*Nodal function 1*/
+			dbasis[0] = -0.5;
+			/*Nodal function 2*/
+			dbasis[1] = 0.5;
+			return;
+		case P2Enum:
+			/*Nodal function 1*/
+			dbasis[0] = (gauss->coord1-1.)/2. + gauss->coord1/2.;
+			dbasis[1] = (1.+gauss->coord1)/2. + gauss->coord1/2.;
+			dbasis[2] = -2.*gauss->coord1;
+			return;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+}
+/*}}}*/
+int  SegRef::NumberofNodes(int finiteelement){/*{{{*/
+
+	switch(finiteelement){
+		case P0Enum:                return NUMNODESP0;
+		case P1Enum:                return NUMNODESP1;
+		case P1DGEnum:              return NUMNODESP1;
+		default: _error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/SegRef.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/SegRef.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/SegRef.h	(revision 21239)
@@ -0,0 +1,29 @@
+
+/*!\file:  SegRef.h
+ * \brief abstract class for handling Seg oriented routines, like nodal functions, 
+ * strain rate generation, etc ...
+ */ 
+
+#ifndef _SEGREF_H_
+#define _SEGREF_H_
+
+class GaussSeg;
+
+class SegRef{
+
+	public: 
+		SegRef();
+		~SegRef();
+
+		void GetInputDerivativeValue(IssmDouble* p, IssmDouble* plist,IssmDouble* xyz_list, GaussSeg* gauss,int finiteelement);
+		void GetInputValue(IssmDouble* p, IssmDouble* plist, GaussSeg* gauss,int finiteelement);
+		void GetJacobian(IssmDouble* J, IssmDouble* xyz_list,GaussSeg* gauss);
+		void GetJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,GaussSeg* gauss);
+		void GetJacobianInvert(IssmDouble* Jinv, IssmDouble* xyz_list,GaussSeg* gauss);
+		void GetNodalFunctions(IssmDouble* basis,GaussSeg* gauss,int finiteelement);
+		void GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, GaussSeg* gauss,int finiteelement);
+		void GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,GaussSeg* gauss,int finiteelement);
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*do nothing */};
+		int  NumberofNodes(int finiteelement);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Tetra.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Tetra.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Tetra.cpp	(revision 21239)
@@ -0,0 +1,1103 @@
+/*!\file Tetra.cpp
+ * \brief: implementation of the Tetrament object
+ */
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMVERTICES 4
+
+/*Constructors/destructor/copy*/
+Tetra::Tetra(int seg_id, int seg_sid, int index, IoModel* iomodel,int nummodels)/*{{{*/
+		:ElementHook(nummodels,index+1,NUMVERTICES,iomodel){
+
+			/*id: */
+			this->id  = seg_id;
+			this->sid = seg_sid;
+
+			//this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
+			this->parameters = NULL;
+
+			/*intialize inputs: */
+			this->inputs  = new Inputs();
+
+			/*initialize pointers:*/
+			this->nodes    = NULL;
+			this->vertices = NULL;
+			this->material = NULL;
+			this->matpar   = NULL;
+
+			/*Only allocate pointer*/
+			this->element_type_list=xNew<int>(nummodels);
+		}
+/*}}}*/
+Tetra::~Tetra(){/*{{{*/
+	this->parameters=NULL;
+}
+/*}}}*/
+Object* Tetra::copy() {/*{{{*/
+
+	int i;
+	Tetra* tetra=NULL;
+
+	tetra=new Tetra();
+
+	//deal with TetraRef mother class
+	int nanalyses = this->numanalyses;
+	if(nanalyses > 0){
+		tetra->element_type_list=xNew<int>(nanalyses);
+		for(i=0;i<nanalyses;i++){
+			if (this->element_type_list[i]) tetra->element_type_list[i]=this->element_type_list[i];
+			else tetra->element_type_list[i] = 0;
+		}
+	}
+	else tetra->element_type_list = NULL;
+	tetra->element_type=this->element_type;
+	tetra->numanalyses=nanalyses;
+
+	//deal with ElementHook mother class
+	if (this->hnodes){
+		tetra->hnodes=xNew<Hook*>(tetra->numanalyses);
+		for(i=0;i<tetra->numanalyses;i++){
+			if (this->hnodes[i]) tetra->hnodes[i] = (Hook*)(this->hnodes[i]->copy());
+			else tetra->hnodes[i] = NULL;
+		}
+	}
+	else tetra->hnodes = NULL;
+
+	tetra->hvertices = (Hook*)this->hvertices->copy();
+	tetra->hmaterial = (Hook*)this->hmaterial->copy();
+	tetra->hmatpar   = (Hook*)this->hmatpar->copy();
+	tetra->hneighbors = NULL;
+
+	/*deal with Tria fields: */
+	tetra->id  = this->id;
+	tetra->sid = this->sid;
+	if(this->inputs) tetra->inputs = (Inputs*)(this->inputs->Copy());
+	else tetra->inputs=new Inputs();
+
+	/*point parameters: */
+	tetra->parameters=this->parameters;
+
+	/*recover objects: */
+	unsigned int num_nodes = 4;
+	tetra->nodes = xNew<Node*>(num_nodes); //we cannot rely on an analysis_counter to tell us which analysis_type we are running, so we just copy the nodes.
+	for(i=0;i<num_nodes;i++) if(this->nodes[i]) tetra->nodes[i]=this->nodes[i]; else tetra->nodes[i] = NULL;
+
+	tetra->vertices = (Vertex**)this->hvertices->deliverp();
+	tetra->material = (Material*)this->hmaterial->delivers();
+	tetra->matpar   = (Matpar*)this->hmatpar->delivers();
+
+	return tetra;
+}
+/*}}}*/
+void Tetra::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(TetraEnum);
+
+	/*Call parent classes: */
+	ElementHook::Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	Element::MarshallElement(pmarshalled_data,pmarshalled_data_size,marshall_direction,this->numanalyses);
+	TetraRef::Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	vertices = (Vertex**)this->hvertices->deliverp();
+	material = (Material*)this->hmaterial->delivers();
+	matpar   = (Matpar*)this->hmatpar->delivers();
+
+}
+/*}}}*/
+
+void     Tetra::AddInput(int input_enum,IssmDouble* values, int interpolation_enum){/*{{{*/
+
+	/*Call inputs method*/
+	_assert_(this->inputs);
+	this->inputs->AddInput(new TetraInput(input_enum,values,interpolation_enum));
+}
+/*}}}*/
+void     Tetra::Configure(Elements* elementsin, Loads* loadsin, Nodes* nodesin,Vertices* verticesin, Materials* materialsin, Parameters* parametersin){/*{{{*/
+
+	int analysis_counter;
+
+	/*go into parameters and get the analysis_counter: */
+	parametersin->FindParam(&analysis_counter,AnalysisCounterEnum);
+
+	/*Get Element type*/
+	this->element_type=this->element_type_list[analysis_counter];
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	if (this->hnodes[analysis_counter]) this->hnodes[analysis_counter]->configure(nodesin);
+	this->hvertices->configure(verticesin);
+	this->hmaterial->configure(materialsin);
+	this->hmatpar->configure(materialsin);
+
+	/*Now, go pick up the objects inside the hooks: */
+	if (this->hnodes[analysis_counter]) this->nodes=(Node**)this->hnodes[analysis_counter]->deliverp();
+	else this->nodes=NULL;
+	this->vertices          = (Vertex**)this->hvertices->deliverp();
+	this->material          = (Material*)this->hmaterial->delivers();
+	this->matpar            = (Matpar*)this->hmatpar->delivers();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+
+	/*get inputs configured too: */
+	this->inputs->Configure(parameters);
+}
+/*}}}*/
+void     Tetra::ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz){/*{{{*/
+
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble xmin,ymin,zmin;
+	IssmDouble xmax,ymax,zmax;
+
+	/*Get xyz list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	xmin=xyz_list[0][0]; xmax=xyz_list[0][0];
+	ymin=xyz_list[0][1]; ymax=xyz_list[0][1];
+	zmin=xyz_list[0][2]; zmax=xyz_list[0][2];
+
+	for(int i=1;i<NUMVERTICES;i++){
+		if(xyz_list[i][0]<xmin) xmin=xyz_list[i][0];
+		if(xyz_list[i][0]>xmax) xmax=xyz_list[i][0];
+		if(xyz_list[i][1]<ymin) ymin=xyz_list[i][1];
+		if(xyz_list[i][1]>ymax) ymax=xyz_list[i][1];
+		if(xyz_list[i][2]<zmin) zmin=xyz_list[i][2];
+		if(xyz_list[i][2]>zmax) zmax=xyz_list[i][2];
+	}
+
+	*hx=xmax-xmin;
+	*hy=ymax-ymin;
+	*hz=zmax-zmin;
+}
+/*}}}*/
+void     Tetra::FaceOnBaseIndices(int* pindex1,int* pindex2,int* pindex3){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	int        indices[4][3] = {{0,1,2},{0,3,1},{1,3,2},{0,2,3}};
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&values[0],MeshVertexonbaseEnum);
+
+	for(int i=0;i<4;i++){
+		if(values[indices[i][0]] == 1. && values[indices[i][1]] == 1. && values[indices[i][2]] == 1.){
+			*pindex1 = indices[i][0];
+			*pindex2 = indices[i][1];
+			*pindex3 = indices[i][2];
+			return;
+		}
+	}
+
+	_error_("Could not find 3 vertices on bed");
+}
+/*}}}*/
+void     Tetra::FaceOnFrontIndices(int* pindex1,int* pindex2,int* pindex3){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	int        indices[4][3] = {{0,1,2},{0,3,1},{1,3,2},{0,2,3}};
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&values[0],MaskIceLevelsetEnum);
+
+	for(int i=0;i<4;i++){
+		if(values[indices[i][0]] == 0. && values[indices[i][1]] == 0. && values[indices[i][2]] == 0.){
+			*pindex1 = indices[i][0];
+			*pindex2 = indices[i][1];
+			*pindex3 = indices[i][2];
+			return;
+		}
+	}
+
+	_error_("Could not find 3 vertices on bed");
+}
+/*}}}*/
+void     Tetra::FaceOnSurfaceIndices(int* pindex1,int* pindex2,int* pindex3){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	int        indices[4][3] = {{0,1,2},{0,3,1},{1,3,2},{0,2,3}};
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&values[0],MeshVertexonsurfaceEnum);
+
+	for(int i=0;i<4;i++){
+		if(values[indices[i][0]] == 1. && values[indices[i][1]] == 1. && values[indices[i][2]] == 1.){
+			*pindex1 = indices[i][0];
+			*pindex2 = indices[i][1];
+			*pindex3 = indices[i][2];
+			return;
+		}
+	}
+
+	_error_("Could not find 3 vertices on bed");
+}
+/*}}}*/
+int      Tetra::FiniteElement(void){/*{{{*/
+	return this->element_type;
+} /*}}}*/
+int      Tetra::GetElementType(){/*{{{*/
+
+	/*return TetraRef field*/
+	return this->element_type;
+}
+/*}}}*/
+void     Tetra::GetInputValue(IssmDouble* pvalue,Node* node,int enumtype){/*{{{*/
+
+	Input* input=inputs->GetInput(enumtype);
+	if(!input) _error_("No input of type " << EnumToStringx(enumtype) << " found in tria");
+
+	GaussTetra* gauss=new GaussTetra();
+	gauss->GaussVertex(this->GetNodeIndex(node));
+
+	input->GetInputValue(pvalue,gauss);
+	delete gauss;
+}
+/*}}}*/
+int      Tetra::GetNodeIndex(Node* node){/*{{{*/
+
+	_assert_(nodes);
+	int numnodes = this->NumberofNodes(this->element_type);
+
+	for(int i=0;i<numnodes;i++){
+		if(node==nodes[i]) return i;
+	}
+	_error_("Node provided not found among element nodes");
+
+}
+/*}}}*/
+int      Tetra::GetNumberOfNodes(void){/*{{{*/
+	return this->NumberofNodes(this->element_type);
+}
+/*}}}*/
+int      Tetra::GetNumberOfVertices(void){/*{{{*/
+	return NUMVERTICES;
+}
+/*}}}*/
+void     Tetra::GetVerticesCoordinatesBase(IssmDouble** pxyz_list){/*{{{*/
+
+	int        indices[3];
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Element XYZ list*/
+	::GetVerticesCoordinates(&xyz_list[0][0],this->vertices,NUMVERTICES);
+
+	/*Allocate Output*/
+	IssmDouble* xyz_list_edge = xNew<IssmDouble>(3*3);
+	this->FaceOnBaseIndices(&indices[0],&indices[1],&indices[2]);
+	for(int i=0;i<3;i++) for(int j=0;j<3;j++) xyz_list_edge[i*3+j]=xyz_list[indices[i]][j];
+
+	/*Assign output pointer*/
+	*pxyz_list = xyz_list_edge;
+
+}/*}}}*/
+void     Tetra::GetVerticesCoordinatesTop(IssmDouble** pxyz_list){/*{{{*/
+
+	int        indices[3];
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Element XYZ list*/
+	::GetVerticesCoordinates(&xyz_list[0][0],this->vertices,NUMVERTICES);
+
+	/*Allocate Output*/
+	IssmDouble* xyz_list_edge = xNew<IssmDouble>(3*3);
+	this->FaceOnSurfaceIndices(&indices[0],&indices[1],&indices[2]);
+	for(int i=0;i<3;i++) for(int j=0;j<3;j++) xyz_list_edge[i*3+j]=xyz_list[indices[i]][j];
+
+	/*Assign output pointer*/
+	*pxyz_list = xyz_list_edge;
+
+}/*}}}*/
+bool     Tetra::HasFaceOnBase(){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	IssmDouble sum;
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&values[0],MeshVertexonbaseEnum);
+	sum = values[0]+values[1]+values[2]+values[3];
+
+	_assert_(sum==0. || sum==1. || sum==2. || sum==3.);
+
+	if(sum==3){
+		return true;
+	}
+	else{
+		return false;
+	}
+}
+/*}}}*/
+bool     Tetra::HasFaceOnSurface(){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	IssmDouble sum;
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&values[0],MeshVertexonsurfaceEnum);
+	sum = values[0]+values[1]+values[2]+values[3];
+
+	_assert_(sum==0. || sum==1. || sum==2. || sum==3.);
+
+	if(sum==3){
+		return true;
+	}
+	else{
+		return false;
+	}
+}
+/*}}}*/
+void     Tetra::InputUpdateFromIoModel(int index,IoModel* iomodel){ /*{{{*/
+
+	/*Intermediaries*/
+	int         i,j;
+	int         tetra_vertex_ids[NUMVERTICES];
+	IssmDouble  nodeinputs[NUMVERTICES];
+	IssmDouble  cmmininputs[NUMVERTICES];
+	IssmDouble  cmmaxinputs[NUMVERTICES];
+
+	IssmDouble  yts;
+	bool    control_analysis;
+	char**  controls = NULL;
+	int     num_control_type,num_responses;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&yts,"md.constants.yts");
+	iomodel->FindConstant(&control_analysis,"md.inversion.iscontrol");
+	if(control_analysis) iomodel->FindConstant(&num_control_type,"md.inversion.num_control_parameters");
+	if(control_analysis) iomodel->FindConstant(&num_responses,"md.inversion.num_cost_functions");
+
+	/*Recover vertices ids needed to initialize inputs*/
+	_assert_(iomodel->elements);
+	for(i=0;i<NUMVERTICES;i++){ 
+		tetra_vertex_ids[i]=iomodel->elements[NUMVERTICES*index+i]; //ids for vertices are in the elements array from Matlab
+	}
+
+	/*Control Inputs*/
+	if (control_analysis){
+		iomodel->FindConstant(&controls,NULL,"md.inversion.control_parameters");
+		for(i=0;i<num_control_type;i++){
+			_assert_(controls[i]);
+			int control = StringToEnumx(controls[i]);
+			switch(control){
+				case BalancethicknessThickeningRateEnum:
+					if (iomodel->Data("md.balancethickness.thickening_rate")){
+						for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data("md.balancethickness.thickening_rate")[tetra_vertex_ids[j]-1];
+						for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tetra_vertex_ids[j]-1)*num_control_type+i]/yts;
+						for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tetra_vertex_ids[j]-1)*num_control_type+i]/yts;
+						this->inputs->AddInput(new ControlInput(BalancethicknessThickeningRateEnum,TetraInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+					}
+					break;
+				case VxEnum:
+					if (iomodel->Data("md.initialization.vx")){
+						for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data("md.initialization.vx")[tetra_vertex_ids[j]-1];
+						for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tetra_vertex_ids[j]-1)*num_control_type+i]/yts;
+						for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tetra_vertex_ids[j]-1)*num_control_type+i]/yts;
+						this->inputs->AddInput(new ControlInput(VxEnum,TetraInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+					}
+					break;
+				case VyEnum:
+					if (iomodel->Data("md.initialization.vy")){
+						for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data("md.initialization.vy")[tetra_vertex_ids[j]-1];
+						for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tetra_vertex_ids[j]-1)*num_control_type+i]/yts;
+						for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tetra_vertex_ids[j]-1)*num_control_type+i]/yts;
+						this->inputs->AddInput(new ControlInput(VyEnum,TetraInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+					}
+					break;
+				case FrictionCoefficientEnum:
+					if (iomodel->Data("md.friction.coefficient")){
+						for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data("md.friction.coefficient")[tetra_vertex_ids[j]-1];
+						for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tetra_vertex_ids[j]-1)*num_control_type+i];
+						for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tetra_vertex_ids[j]-1)*num_control_type+i];
+						this->inputs->AddInput(new ControlInput(FrictionCoefficientEnum,TetraInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+					}
+					break;
+				case MaterialsRheologyBbarEnum:
+					if(iomodel->Data("md.materials.rheology_B")){
+						for(j=0;j<NUMVERTICES;j++) nodeinputs[j]=iomodel->Data("md.materials.rheology_B")[tetra_vertex_ids[j]-1];
+						for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tetra_vertex_ids[j]-1)*num_control_type+i];
+						for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tetra_vertex_ids[j]-1)*num_control_type+i];
+						this->inputs->AddInput(new ControlInput(MaterialsRheologyBEnum,TetraInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+					}
+					break;
+				case DamageDbarEnum:
+					if(iomodel->Data("md.damage.D")){
+						for(j=0;j<NUMVERTICES;j++) nodeinputs[j]=iomodel->Data("md.damage.D")[tetra_vertex_ids[j]-1];
+						for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tetra_vertex_ids[j]-1)*num_control_type+i];
+						for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tetra_vertex_ids[j]-1)*num_control_type+i];
+						this->inputs->AddInput(new ControlInput(DamageDEnum,TetraInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+					}
+					break;
+				default:
+					_error_("Control " << EnumToStringx(control) << " not implemented yet");
+			}
+		}
+		for(i=0;i<num_control_type;i++) xDelete<char>(controls[i]);
+		xDelete<char*>(controls);
+	}
+
+	/*Need to know the type of approximation for this element*/
+	if(iomodel->Data("md.flowequation.element_equation")){
+		this->inputs->AddInput(new IntInput(ApproximationEnum,IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[index]))));
+	}
+
+	/*DatasetInputs*/
+	if (control_analysis && iomodel->Data("md.inversion.cost_functions_coefficients")) {
+
+		/*Generate cost functions associated with the iomodel*/
+		char**	cost_functions			= NULL;
+		int*		cost_functions_enums = NULL;
+		int		num_cost_functions;
+
+		iomodel->FindConstant(&num_cost_functions,"md.inversion.num_cost_functions");
+		iomodel->FindConstant(&cost_functions,&num_cost_functions,"md.inversion.cost_functions");
+		if(num_cost_functions<1) _error_("No cost functions found");
+		cost_functions_enums=xNew<int>(num_cost_functions);
+		for(j=0;j<num_cost_functions;j++){ cost_functions_enums[j]=StringToEnumx(cost_functions[j]); }
+
+		/*Create inputs and add to DataSetInput*/
+		DatasetInput* datasetinput=new DatasetInput(InversionCostFunctionsCoefficientsEnum);
+		for(i=0;i<num_responses;i++){
+			for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data("md.inversion.cost_functions_coefficients")[(tetra_vertex_ids[j]-1)*num_responses+i];
+			datasetinput->AddInput(new TetraInput(InversionCostFunctionsCoefficientsEnum,nodeinputs,P1Enum),cost_functions_enums[i]);
+		}
+
+		/*Add datasetinput to element inputs*/
+		this->inputs->AddInput(datasetinput);
+
+		/*Clean up cost functions*/
+		xDelete<int>(cost_functions_enums);
+		for(int j=0;j<num_cost_functions;j++) xDelete<char>(cost_functions[j]); 
+		xDelete<char*>(cost_functions);
+	}
+}
+/*}}}*/
+void     Tetra::InputUpdateFromSolutionOneDof(IssmDouble* solution,int enum_type){/*{{{*/
+
+	/*Intermediary*/
+	int* doflist = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(this->element_type);
+
+	/*Fetch dof list and allocate solution vector*/
+	GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values    = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(int i=0;i<numnodes;i++){
+		values[i]=solution[doflist[i]];
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Add input to the element: */
+	this->inputs->AddInput(new TetraInput(enum_type,values,P1Enum));
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<int>(doflist);
+}
+/*}}}*/
+bool     Tetra::IsIcefront(void){/*{{{*/
+
+	/*Retrieve all inputs and parameters*/
+	IssmDouble ls[NUMVERTICES];
+	GetInputListOnVertices(&ls[0],MaskIceLevelsetEnum);
+
+	/* If only one vertex has ice, there is an ice front here */
+	if(IsIceInElement()){
+		int nrice=0;       
+		for(int i=0;i<NUMVERTICES;i++) if(ls[i]<0.) nrice++;
+		if(nrice==1) return true;
+	}
+	return false;
+}/*}}}*/
+bool     Tetra::IsOnBase(){/*{{{*/
+	return HasFaceOnBase();
+}
+/*}}}*/
+bool     Tetra::IsOnSurface(){/*{{{*/
+	return HasFaceOnSurface();
+}
+/*}}}*/
+void     Tetra::JacobianDeterminant(IssmDouble* pJdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetJacobianDeterminant(pJdet,xyz_list,(GaussTetra*)gauss);
+
+}
+/*}}}*/
+void     Tetra::JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetJacobianDeterminantFace(pJdet,xyz_list_base,(GaussTetra*)gauss);
+
+}
+/*}}}*/
+void     Tetra::JacobianDeterminantSurface(IssmDouble* pJdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetJacobianDeterminantFace(pJdet,xyz_list,(GaussTetra*)gauss);
+
+}
+/*}}}*/
+void     Tetra::JacobianDeterminantTop(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetJacobianDeterminantFace(pJdet,xyz_list_base,(GaussTetra*)gauss);
+
+}
+/*}}}*/
+Gauss*   Tetra::NewGauss(void){/*{{{*/
+	return new GaussTetra();
+}
+/*}}}*/
+Gauss*   Tetra::NewGauss(int order){/*{{{*/
+	return new GaussTetra(order);
+}
+/*}}}*/
+Gauss*   Tetra::NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert){/*{{{*/
+	/*FIXME: this is messed up, should provide indices and not xyz_list!*/
+	int indices[3];
+	this->FaceOnFrontIndices(&indices[0],&indices[1],&indices[2]);
+	return new GaussTetra(indices[0],indices[1],indices[2],max(order_horiz,order_vert));
+}
+/*}}}*/
+Gauss*   Tetra::NewGaussBase(int order){/*{{{*/
+
+	int indices[3];
+	this->FaceOnBaseIndices(&indices[0],&indices[1],&indices[2]);
+	return new GaussTetra(indices[0],indices[1],indices[2],order);
+}
+/*}}}*/
+Gauss*   Tetra::NewGaussTop(int order){/*{{{*/
+
+	int indices[3];
+	this->FaceOnSurfaceIndices(&indices[0],&indices[1],&indices[2]);
+	return new GaussTetra(indices[0],indices[1],indices[2],order);
+}
+/*}}}*/
+void     Tetra::NodalFunctions(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetNodalFunctions(basis,(GaussTetra*)gauss,this->element_type);
+
+}
+/*}}}*/
+void     Tetra::NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussTetra*)gauss,this->element_type);
+
+}
+/*}}}*/
+void     Tetra::NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussTetra*)gauss,this->VelocityInterpolation());
+
+}
+/*}}}*/
+void     Tetra::NodalFunctionsPressure(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetNodalFunctions(basis,(GaussTetra*)gauss,this->PressureInterpolation());
+
+}
+/*}}}*/
+void     Tetra::NodalFunctionsTensor(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetNodalFunctions(basis,(GaussTetra*)gauss,this->TensorInterpolation());
+
+}
+/*}}}*/
+void     Tetra::NodalFunctionsVelocity(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetNodalFunctions(basis,(GaussTetra*)gauss,this->VelocityInterpolation());
+
+}
+/*}}}*/
+void     Tetra::NormalBase(IssmDouble* bed_normal,IssmDouble* xyz_list){/*{{{*/
+
+	IssmDouble v13[3],v23[3];
+	IssmDouble normal[3];
+	IssmDouble normal_norm;
+
+	for(int i=0;i<3;i++){
+		v13[i]=xyz_list[0*3+i]-xyz_list[2*3+i];
+		v23[i]=xyz_list[1*3+i]-xyz_list[2*3+i];
+	}
+
+	normal[0]=v13[1]*v23[2]-v13[2]*v23[1];
+	normal[1]=v13[2]*v23[0]-v13[0]*v23[2];
+	normal[2]=v13[0]*v23[1]-v13[1]*v23[0];
+	normal_norm=sqrt(normal[0]*normal[0]+ normal[1]*normal[1]+ normal[2]*normal[2]);
+
+	/*Bed normal is opposite to surface normal*/
+	bed_normal[0]=-normal[0]/normal_norm;
+	bed_normal[1]=-normal[1]/normal_norm;
+	bed_normal[2]=-normal[2]/normal_norm;
+
+	_assert_(bed_normal[2]<0.);
+}
+/*}}}*/
+void     Tetra::NormalSection(IssmDouble* normal,IssmDouble* xyz_list){/*{{{*/
+
+	/*Build unit outward pointing vector*/
+	IssmDouble AB[3];
+	IssmDouble AC[3];
+	IssmDouble norm;
+
+	AB[0]=xyz_list[1*3+0] - xyz_list[0*3+0];
+	AB[1]=xyz_list[1*3+1] - xyz_list[0*3+1];
+	AB[2]=xyz_list[1*3+2] - xyz_list[0*3+2];
+	AC[0]=xyz_list[2*3+0] - xyz_list[0*3+0];
+	AC[1]=xyz_list[2*3+1] - xyz_list[0*3+1];
+	AC[2]=xyz_list[2*3+2] - xyz_list[0*3+2];
+
+	cross(normal,AB,AC);
+	norm=sqrt(normal[0]*normal[0]+normal[1]*normal[1]+normal[2]*normal[2]);
+
+	for(int i=0;i<3;i++) normal[i]=normal[i]/norm;
+}
+/*}}}*/
+void     Tetra::NormalTop(IssmDouble* top_normal,IssmDouble* xyz_list){/*{{{*/
+
+	IssmDouble v13[3],v23[3];
+	IssmDouble normal[3];
+	IssmDouble normal_norm;
+
+	for(int i=0;i<3;i++){
+		v13[i]=xyz_list[0*3+i]-xyz_list[2*3+i];
+		v23[i]=xyz_list[1*3+i]-xyz_list[2*3+i];
+	}
+
+	normal[0]=v13[1]*v23[2]-v13[2]*v23[1];
+	normal[1]=v13[2]*v23[0]-v13[0]*v23[2];
+	normal[2]=v13[0]*v23[1]-v13[1]*v23[0];
+	normal_norm=sqrt(normal[0]*normal[0]+ normal[1]*normal[1]+ normal[2]*normal[2]);
+
+	top_normal[0]=normal[0]/normal_norm;
+	top_normal[1]=normal[1]/normal_norm;
+	top_normal[2]=normal[2]/normal_norm;
+	_assert_(top_normal[2]>0.);
+}
+/*}}}*/
+int      Tetra::NumberofNodesPressure(void){/*{{{*/
+	return TetraRef::NumberofNodes(this->PressureInterpolation());
+}
+/*}}}*/
+int      Tetra::NumberofNodesVelocity(void){/*{{{*/
+	return TetraRef::NumberofNodes(this->VelocityInterpolation());
+}
+/*}}}*/
+int      Tetra::ObjectEnum(void){/*{{{*/
+
+	return TetraEnum;
+
+}/*}}}*/
+int      Tetra::PressureInterpolation(void){/*{{{*/
+	return TetraRef::PressureInterpolation(this->element_type);
+}
+/*}}}*/
+void     Tetra::ReduceMatrices(ElementMatrix* Ke,ElementVector* pe){/*{{{*/
+
+	if(pe){
+		if(this->element_type==MINIcondensedEnum){
+			int indices[3]={12,13,14};
+			pe->StaticCondensation(Ke,3,&indices[0]);
+		}
+		else if(this->element_type==P1bubblecondensedEnum){
+			int size   = nodes[4]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int offset = 0;
+			for(int i=0;i<4;i++) offset+=nodes[i]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int* indices=xNew<int>(size);
+			for(int i=0;i<size;i++) indices[i] = offset+i;
+			pe->StaticCondensation(Ke,size,indices);
+			xDelete<int>(indices);
+		}
+	}
+
+	if(Ke){
+		if(this->element_type==MINIcondensedEnum){
+			int indices[3]={12,13,14};
+			Ke->StaticCondensation(3,&indices[0]);
+		}
+		else if(this->element_type==P1bubblecondensedEnum){
+			int size   = nodes[4]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int offset = 0;
+			for(int i=0;i<4;i++) offset+=nodes[i]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int* indices=xNew<int>(size);
+			for(int i=0;i<size;i++) indices[i] = offset+i;
+			Ke->StaticCondensation(size,indices);
+			xDelete<int>(indices);
+		}
+	}
+}
+/*}}}*/
+void     Tetra::ResetFSBasalBoundaryCondition(void){/*{{{*/
+
+	int numnodes = this->GetNumberOfNodes();
+
+	int          approximation;
+	IssmDouble*  vertexonbase= NULL;
+	IssmDouble   slopex,slopey,groundedice;
+	IssmDouble   xz_plane[6];
+
+	/*For FS only: we want the CS to be tangential to the bedrock*/
+	inputs->GetInputValue(&approximation,ApproximationEnum);
+	if(!HasNodeOnBase() ||  approximation!=FSApproximationEnum) return;
+
+	//printf("element number %i \n",this->id);
+	/*Get inputs*/
+	Input* slopex_input=inputs->GetInput(BedSlopeXEnum); _assert_(slopex_input);
+	Input* slopey_input=inputs->GetInput(BedSlopeYEnum); _assert_(slopey_input);
+	Input* groundedicelevelset_input=inputs->GetInput(MaskGroundediceLevelsetEnum); _assert_(groundedicelevelset_input);
+	vertexonbase = xNew<IssmDouble>(numnodes);
+	this->GetInputListOnNodesVelocity(&vertexonbase[0],MeshVertexonbaseEnum);
+
+	/*Loop over basal nodes and update their CS*/
+	GaussTetra* gauss = new GaussTetra();
+	for(int i=0;i<this->NumberofNodesVelocity();i++){
+
+		if(vertexonbase[i]==1){
+			gauss->GaussNode(this->VelocityInterpolation(),i);
+
+			slopex_input->GetInputValue(&slopex,gauss);
+			slopey_input->GetInputValue(&slopey,gauss);
+			groundedicelevelset_input->GetInputValue(&groundedice,gauss);
+
+			/*New X axis          New Z axis*/
+			xz_plane[0]=1.;       xz_plane[3]=-slopex;  
+			xz_plane[1]=0.;       xz_plane[4]=-slopey;  
+			xz_plane[2]=slopex;   xz_plane[5]=1.;          
+
+			if(groundedice>0){
+				if(this->nodes[i]->GetApproximation()==FSvelocityEnum){
+					this->nodes[i]->DofInSSet(2); //vz 
+				}
+				else _error_("Flow equation approximation"<<EnumToStringx(this->nodes[i]->GetApproximation())<<" not supported yet");
+			}
+			else{
+				if(this->nodes[i]->GetApproximation()==FSvelocityEnum){
+					this->nodes[i]->DofInFSet(2); //vz
+				}
+				else _error_("Flow equation approximation"<<EnumToStringx(this->nodes[i]->GetApproximation())<<" not supported yet");
+			}
+
+			XZvectorsToCoordinateSystem(&this->nodes[i]->coord_system[0][0],&xz_plane[0]);
+		}
+	}
+
+	/*cleanup*/
+	xDelete<IssmDouble>(vertexonbase);
+	delete gauss;
+}
+/*}}}*/
+void     Tetra::ResetHooks(){/*{{{*/
+
+	this->nodes=NULL;
+	this->vertices=NULL;
+	this->material=NULL;
+	this->matpar=NULL;
+	this->parameters=NULL;
+
+	//deal with ElementHook mother class
+	for(int i=0;i<this->numanalyses;i++) if(this->hnodes[i]) this->hnodes[i]->reset();
+	this->hvertices->reset();
+	this->hmaterial->reset();
+	this->hmatpar->reset();
+	if(this->hneighbors) this->hneighbors->reset();
+}
+/*}}}*/
+void     Tetra::SetCurrentConfiguration(Elements* elementsin, Loads* loadsin, Nodes* nodesin, Materials* materialsin, Parameters* parametersin){/*{{{*/
+
+	/*go into parameters and get the analysis_counter: */
+	int analysis_counter;
+	parametersin->FindParam(&analysis_counter,AnalysisCounterEnum);
+
+	/*Get Element type*/
+	this->element_type=this->element_type_list[analysis_counter];
+
+	/*Pick up nodes*/
+	if(this->hnodes[analysis_counter]) this->nodes=(Node**)this->hnodes[analysis_counter]->deliverp();
+	else this->nodes=NULL;
+
+}
+/*}}}*/
+Element* Tetra::SpawnBasalElement(void){/*{{{*/
+
+	_assert_(HasFaceOnBase());
+
+	int index1,index2,index3;
+	this->FaceOnBaseIndices(&index1,&index2,&index3);
+	return SpawnTria(index1,index2,index3);
+}/*}}}*/
+Element* Tetra::SpawnTopElement(void){/*{{{*/
+
+	_assert_(HasFaceOnSurface());
+
+	int index1,index2,index3;
+	this->FaceOnSurfaceIndices(&index1,&index2,&index3);
+	return SpawnTria(index1,index2,index3);
+}/*}}}*/
+Tria*    Tetra::SpawnTria(int index1,int index2,int index3){/*{{{*/
+
+	int analysis_counter;
+
+	/*go into parameters and get the analysis_counter: */
+	this->parameters->FindParam(&analysis_counter,AnalysisCounterEnum);
+
+	/*Create Tria*/
+	Tria* tria=new Tria();
+	tria->id=this->id;
+	tria->inputs=(Inputs*)this->inputs->SpawnTriaInputs(index1,index2,index3);
+	tria->parameters=this->parameters;
+	tria->element_type=P1Enum; //Only P1 CG for now (TO BE CHANGED)
+	this->SpawnTriaHook(xDynamicCast<ElementHook*>(tria),index1,index2,index3);
+
+	/*Spawn material*/
+	tria->material=(Material*)this->material->copy2(tria);
+
+	/*recover nodes, material and matpar: */
+	tria->nodes    = (Node**)tria->hnodes[analysis_counter]->deliverp();
+	tria->vertices = (Vertex**)tria->hvertices->deliverp();
+	tria->matpar   = (Matpar*)tria->hmatpar->delivers();
+
+	/*Return new Tria*/
+	return tria;
+}
+/*}}}*/
+int      Tetra::TensorInterpolation(void){/*{{{*/
+	return TetraRef::TensorInterpolation(this->element_type);
+}
+/*}}}*/
+void     Tetra::Update(int index,IoModel* iomodel,int analysis_counter,int analysis_type,int finiteelement_type){ /*{{{*/
+
+	/*Intermediaries*/
+	int        i;
+	int        tetra_vertex_ids[6];
+	IssmDouble nodeinputs[6];
+	IssmDouble yts;
+	bool       dakota_analysis;
+	bool       isFS;
+	int        numnodes;
+	int*       tetra_node_ids = NULL;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&yts,"md.constants.yts");
+	iomodel->FindConstant(&dakota_analysis,"md.qmu.isdakota");
+	iomodel->FindConstant(&isFS,"md.flowequation.isFS");
+
+	/*Checks if debuging*/
+	_assert_(iomodel->elements);
+
+	/*Recover element type*/
+	this->element_type_list[analysis_counter]=finiteelement_type;
+
+	/*Recover vertices ids needed to initialize inputs*/
+	for(i=0;i<4;i++) tetra_vertex_ids[i]=iomodel->elements[4*index+i]; //ids for vertices are in the elements array from Matlab
+
+	/*Recover nodes ids needed to initialize the node hook.*/
+	switch(finiteelement_type){
+		case P1Enum:
+			numnodes         = 4;
+			tetra_node_ids   = xNew<int>(numnodes);
+			tetra_node_ids[0]=iomodel->nodecounter+iomodel->elements[4*index+0];
+			tetra_node_ids[1]=iomodel->nodecounter+iomodel->elements[4*index+1];
+			tetra_node_ids[2]=iomodel->nodecounter+iomodel->elements[4*index+2];
+			tetra_node_ids[3]=iomodel->nodecounter+iomodel->elements[4*index+3];
+			break;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			numnodes         = 5;
+			tetra_node_ids   = xNew<int>(numnodes);
+			tetra_node_ids[0]=iomodel->nodecounter+iomodel->elements[4*index+0];
+			tetra_node_ids[1]=iomodel->nodecounter+iomodel->elements[4*index+1];
+			tetra_node_ids[2]=iomodel->nodecounter+iomodel->elements[4*index+2];
+			tetra_node_ids[3]=iomodel->nodecounter+iomodel->elements[4*index+3];
+			tetra_node_ids[4]=iomodel->nodecounter+iomodel->numberofvertices+index+1;
+			break;
+		case P2Enum:
+			numnodes        = 10;
+			tetra_node_ids   = xNew<int>(numnodes);
+			tetra_node_ids[0]=iomodel->nodecounter+iomodel->elements[4*index+0];
+			tetra_node_ids[1]=iomodel->nodecounter+iomodel->elements[4*index+1];
+			tetra_node_ids[2]=iomodel->nodecounter+iomodel->elements[4*index+2];
+			tetra_node_ids[3]=iomodel->nodecounter+iomodel->elements[4*index+3];
+			tetra_node_ids[4]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+0]+1;
+			tetra_node_ids[5]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+1]+1;
+			tetra_node_ids[6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+2]+1;
+			tetra_node_ids[7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+3]+1;
+			tetra_node_ids[8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+4]+1;
+			tetra_node_ids[9]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+5]+1;
+			break;
+		case MINIEnum: case MINIcondensedEnum:
+			numnodes         = 9;
+			tetra_node_ids   = xNew<int>(numnodes);
+			tetra_node_ids[0]=iomodel->nodecounter+iomodel->elements[4*index+0];
+			tetra_node_ids[1]=iomodel->nodecounter+iomodel->elements[4*index+1];
+			tetra_node_ids[2]=iomodel->nodecounter+iomodel->elements[4*index+2];
+			tetra_node_ids[3]=iomodel->nodecounter+iomodel->elements[4*index+3];
+			tetra_node_ids[4]=iomodel->nodecounter+iomodel->numberofvertices+index+1;
+
+			tetra_node_ids[5]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[4*index+0];
+			tetra_node_ids[6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[4*index+1];
+			tetra_node_ids[7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[4*index+2];
+			tetra_node_ids[8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[4*index+3];
+			break;
+		case TaylorHoodEnum:
+		case XTaylorHoodEnum:
+			numnodes        = 14;
+			tetra_node_ids  = xNew<int>(numnodes);
+			tetra_node_ids[0]=iomodel->nodecounter+iomodel->elements[4*index+0];
+			tetra_node_ids[1]=iomodel->nodecounter+iomodel->elements[4*index+1];
+			tetra_node_ids[2]=iomodel->nodecounter+iomodel->elements[4*index+2];
+			tetra_node_ids[3]=iomodel->nodecounter+iomodel->elements[4*index+3];
+			tetra_node_ids[4]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+0]+1;
+			tetra_node_ids[5]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+1]+1;
+			tetra_node_ids[6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+2]+1;
+			tetra_node_ids[7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+3]+1;
+			tetra_node_ids[8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+4]+1;
+			tetra_node_ids[9]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+5]+1;
+
+			tetra_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[4*index+0];
+			tetra_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[4*index+1];
+			tetra_node_ids[12]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[4*index+2];
+			tetra_node_ids[13]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[4*index+3];
+			break;
+		case LATaylorHoodEnum:
+			numnodes        = 10;
+			tetra_node_ids  = xNew<int>(numnodes);
+			tetra_node_ids[0]=iomodel->nodecounter+iomodel->elements[4*index+0];
+			tetra_node_ids[1]=iomodel->nodecounter+iomodel->elements[4*index+1];
+			tetra_node_ids[2]=iomodel->nodecounter+iomodel->elements[4*index+2];
+			tetra_node_ids[3]=iomodel->nodecounter+iomodel->elements[4*index+3];
+			tetra_node_ids[4]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+0]+1;
+			tetra_node_ids[5]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+1]+1;
+			tetra_node_ids[6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+2]+1;
+			tetra_node_ids[7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+3]+1;
+			tetra_node_ids[8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+4]+1;
+			tetra_node_ids[9]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+5]+1;
+			break;
+		default:
+			_error_("Finite element "<<EnumToStringx(finiteelement_type)<<" not supported yet");
+	}
+
+	/*hooks: */
+	this->SetHookNodes(tetra_node_ids,numnodes,analysis_counter); this->nodes=NULL;
+	xDelete<int>(tetra_node_ids);
+
+	/*Fill with IoModel*/
+	this->InputUpdateFromIoModel(index,iomodel);
+}
+/*}}}*/
+void     Tetra::ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss){/*{{{*/
+	TetraRef::GetInputValue(pvalue,values,gauss,P1Enum);
+}
+/*}}}*/
+int      Tetra::VelocityInterpolation(void){/*{{{*/
+	return TetraRef::VelocityInterpolation(this->element_type);
+}
+/*}}}*/
+void     Tetra::ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble phi;
+	IssmDouble viscosity;
+	IssmDouble epsilon[6];
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->StrainRateFS(&epsilon[0],xyz_list,(GaussTetra*)gauss,vx_input,vy_input,vz_input);
+	this->material->ViscosityFS(&viscosity,3,xyz_list,(GaussTetra*)gauss,vx_input,vy_input,vz_input);
+	GetPhi(&phi,&epsilon[0],viscosity);
+
+	/*Assign output pointer*/
+	*pphi = phi;
+}
+/*}}}*/
+void     Tetra::ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum){/*{{{*/
+	/*Compute portion of the element that is grounded*/ 
+
+	IssmDouble  levelset[NUMVERTICES];
+	IssmDouble* xyz_zero = xNew<IssmDouble>(3*3);
+
+	/*Recover parameters and values*/
+	GetInputListOnVertices(&levelset[0],levelsetenum);
+
+	if(levelset[0]==0. && levelset[1]==0. && levelset[2]==0.){ 
+		xyz_zero[3*0+0]=xyz_list[0*3+0];
+		xyz_zero[3*0+1]=xyz_list[0*3+1];
+		xyz_zero[3*0+2]=xyz_list[0*3+2];
+
+		/*New point 2*/
+		xyz_zero[3*1+0]=xyz_list[1*3+0];
+		xyz_zero[3*1+1]=xyz_list[1*3+1];
+		xyz_zero[3*1+2]=xyz_list[1*3+2];
+
+		/*New point 3*/
+		xyz_zero[3*2+0]=xyz_list[2*3+0];
+		xyz_zero[3*2+1]=xyz_list[2*3+1];
+		xyz_zero[3*2+2]=xyz_list[2*3+2];
+	}
+	else if(levelset[0]==0. && levelset[1]==0. && levelset[3]==0.){ 
+		xyz_zero[3*0+0]=xyz_list[0*3+0];
+		xyz_zero[3*0+1]=xyz_list[0*3+1];
+		xyz_zero[3*0+2]=xyz_list[0*3+2];
+
+		/*New point 2*/
+		xyz_zero[3*1+0]=xyz_list[1*3+0];
+		xyz_zero[3*1+1]=xyz_list[1*3+1];
+		xyz_zero[3*1+2]=xyz_list[1*3+2];
+
+		/*New point 3*/
+		xyz_zero[3*2+0]=xyz_list[3*3+0];
+		xyz_zero[3*2+1]=xyz_list[3*3+1];
+		xyz_zero[3*2+2]=xyz_list[3*3+2];
+	}
+	else if(levelset[1]==0. && levelset[2]==0. && levelset[3]==0.){ 
+		xyz_zero[3*0+0]=xyz_list[1*3+0];
+		xyz_zero[3*0+1]=xyz_list[1*3+1];
+		xyz_zero[3*0+2]=xyz_list[1*3+2];
+
+		/*New point 2*/
+		xyz_zero[3*1+0]=xyz_list[2*3+0];
+		xyz_zero[3*1+1]=xyz_list[2*3+1];
+		xyz_zero[3*1+2]=xyz_list[2*3+2];
+
+		/*New point 3*/
+		xyz_zero[3*2+0]=xyz_list[3*3+0];
+		xyz_zero[3*2+1]=xyz_list[3*3+1];
+		xyz_zero[3*2+2]=xyz_list[3*3+2];
+	}
+	else if(levelset[2]==0. && levelset[0]==0. && levelset[3]==0.){ 
+		xyz_zero[3*0+0]=xyz_list[2*3+0];
+		xyz_zero[3*0+1]=xyz_list[2*3+1];
+		xyz_zero[3*0+2]=xyz_list[2*3+2];
+
+		/*New point 2*/
+		xyz_zero[3*1+0]=xyz_list[0*3+0];
+		xyz_zero[3*1+1]=xyz_list[0*3+1];
+		xyz_zero[3*1+2]=xyz_list[0*3+2];
+
+		/*New point 3*/
+		xyz_zero[3*2+0]=xyz_list[3*3+0];
+		xyz_zero[3*2+1]=xyz_list[3*3+1];
+		xyz_zero[3*2+2]=xyz_list[3*3+2];
+	}
+	else _error_("Case not covered");
+
+	/*Assign output pointer*/
+	*pxyz_zero= xyz_zero;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Tetra.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Tetra.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Tetra.h	(revision 21239)
@@ -0,0 +1,191 @@
+/*! \file Tetra.h 
+ *  \brief: header file for seg object
+ */
+
+#ifndef _TETRA_H_
+#define _TETRA_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Element.h"
+#include "./ElementHook.h"
+#include "./TetraRef.h"
+class Parameters;
+class Inputs;
+class IoModel;
+class Results;
+class Node;
+class Material;
+class Matpar;
+class ElementMatrix;
+class ElementVector;
+class Vertex;
+
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/Enum/Enum.h"
+/*}}}*/
+
+class Tetra: public Element,public ElementHook,public TetraRef{
+
+	public:
+
+		/*Tetra constructors, destructors {{{*/
+		Tetra(){};
+		Tetra(int seg_id,int seg_sid,int i, IoModel* iomodel,int nummodels);
+		~Tetra();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object *copy();
+		void    Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int     ObjectEnum();
+		/*}}}*/
+		/*Element virtual functions definitions: {{{*/
+		void        AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum){_error_("not implemented yet");};
+		void        AddInput(int input_enum, IssmDouble* values, int interpolation_enum);
+		void        AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part){_error_("not implemented yet");};
+		void        CalvingRateLevermann(void){_error_("not implemented yet");};
+		IssmDouble  CharacteristicLength(void){_error_("not implemented yet");};
+		void        ComputeBasalStress(Vector<IssmDouble>* sigma_b){_error_("not implemented yet");};
+		void        ComputeSigmaNN(){_error_("not implemented yet");};
+		void        ComputeStressTensor(){_error_("not implemented yet");};
+		void        ComputeDeviatoricStressTensor(){_error_("not implemented yet");};
+		void        Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters);
+		void        ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index){_error_("not implemented yet");};
+		void        ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum){_error_("not implemented yet");};
+		IssmDouble  DragCoefficientAbsGradient(void){_error_("not implemented yet");};
+		void        ElementResponse(IssmDouble* presponse,int response_enum){_error_("not implemented yet");};
+		void        ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz);
+		void        FaceOnBaseIndices(int* pindex1,int* pindex2,int* pindex3);
+		void        FaceOnFrontIndices(int* pindex1,int* pindex2,int* pindex3);
+		void        FaceOnSurfaceIndices(int* pindex1,int* pindex2,int* pindex3);
+		int         FiniteElement(void);
+		IssmDouble  FloatingArea(void){_error_("not implemented yet");};
+		void        FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){_error_("not implemented yet");};
+		IssmDouble     GetArea3D(void){_error_("not implemented yet!");};
+		IssmDouble     GetAreaSpherical(void){_error_("not implemented yet!");};
+		Element*    GetBasalElement(void){_error_("not implemented yet");};
+		int         GetElementType(void);
+		void        GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating){_error_("not implemented yet");};
+		IssmDouble  GetGroundedPortion(IssmDouble* xyz_list){_error_("not implemented yet");};
+		void		   GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented yet");};
+		void        GetInputValue(IssmDouble* pvalue,Node* node,int enumtype);
+		void		   GetLevelCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum,IssmDouble level){_error_("not implemented yet");};
+		void        GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* levelsetvalues){_error_("not implemented yet");};
+		Node*       GetNode(int node_number){_error_("Not implemented");};
+		int         GetNodeIndex(Node* node);
+		int         GetNumberOfNodes(void);
+		int         GetNumberOfNodes(int enum_type){_error_("not implemented yet");};
+		int         GetNumberOfVertices(void);
+		void        GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type){_error_("not implemented yet");};
+		Element*    GetUpperElement(void){_error_("not implemented yet");};
+		void        GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,bool onsid){_error_("not implemented yet");};
+		void        GetVerticesCoordinatesBase(IssmDouble** pxyz_list);
+		void        GetVerticesCoordinatesTop(IssmDouble** pxyz_list);
+		void        GradientIndexing(int* indexing,int control_index){_error_("not implemented yet");};
+		IssmDouble  GroundedArea(void){_error_("not implemented yet");};
+		bool        HasFaceOnBase();
+		bool        HasFaceOnSurface();
+		IssmDouble  IceMass(void){_error_("not implemented yet");};
+		IssmDouble  IceVolume(void){_error_("not implemented yet");};
+		IssmDouble  IceVolumeAboveFloatation(void){_error_("not implemented yet");};
+		bool        IsFaceOnBoundary(void){_error_("not implemented yet");};
+		bool		   IsIcefront(void);
+		bool        IsNodeOnShelfFromFlags(IssmDouble* flags){_error_("not implemented yet");};
+		bool        IsOnBase();
+		bool        IsOnSurface();
+		bool        IsZeroLevelset(int levelset_enum){_error_("not implemented");};
+		void        InputControlUpdate(IssmDouble scalar,bool save_parameter){_error_("not implemented yet");};
+		void        InputDepthAverageAtBase(int enum_type,int average_enum_type){_error_("not implemented yet");};
+		void        InputExtrude(int enum_type,int start){_error_("not implemented"); /*For penta only*/};
+		void        InputScale(int enum_type,IssmDouble scale_factor){_error_("not implemented yet");};
+		void        InputUpdateFromIoModel(int index, IoModel* iomodel);
+		void        InputUpdateFromSolutionOneDof(IssmDouble* solution,int inputenum);
+		void        InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solution,int inputenum){_error_("not implemented yet");};
+		void        InputUpdateFromVector(IssmDouble* vector, int name, int type){_error_("not implemented yet");};
+		void        JacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void        JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
+		void        JacobianDeterminantLine(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void        JacobianDeterminantSurface(IssmDouble*  pJdet, IssmDouble* xyz_list,Gauss* gauss);
+		void        JacobianDeterminantTop(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
+		IssmDouble  Masscon(IssmDouble* levelset){_error_("not implemented yet");};
+		IssmDouble  MassFlux(IssmDouble* segment){_error_("not implemented yet");};
+		IssmDouble  MassFlux(IssmDouble x1,IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id){_error_("not implemented yet");}
+		void        MaterialUpdateFromTemperature(void){_error_("not implemented yet");};
+		IssmDouble  MinEdgeLength(IssmDouble* xyz_list){_error_("not implemented yet");};
+		IssmDouble  Misfit(int modelenum,int observationenum,int weightsenum){_error_("not implemented yet");};
+		IssmDouble  MisfitArea(int weightsenum){_error_("not implemented yet");};
+		Gauss*      NewGauss(void);
+		Gauss*      NewGauss(int order);
+      Gauss*      NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order){_error_("not implemented yet");};
+      Gauss*      NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert);
+      Gauss*      NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order){_error_("not implemented yet");};
+		Gauss*      NewGaussBase(int order);
+		Gauss*      NewGaussLine(int vertex1,int vertex2,int order){_error_("not implemented yet");};
+		Gauss*      NewGaussTop(int order);
+		void        NodalFunctions(IssmDouble* basis,Gauss* gauss);
+		void        NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void        NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void        NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void        NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss);
+		void        NodalFunctionsP1(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");};
+		void        NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void        NodalFunctionsP2(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");};
+		void        NodalFunctionsTensor(IssmDouble* basis,Gauss* gauss);
+		void        NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss);
+		int         NodalValue(IssmDouble* pvalue, int index, int natureofdataenum){_error_("not implemented yet");};
+		void        NormalBase(IssmDouble* normal,IssmDouble* xyz_list);
+		void        NormalSection(IssmDouble* normal,IssmDouble* xyz_list);
+		void        NormalTop(IssmDouble* normal,IssmDouble* xyz_list);
+		int         NumberofNodesPressure(void);
+		int         NumberofNodesVelocity(void);
+		void        PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding){_error_("not implemented yet");};
+		int         PressureInterpolation(void);
+		void        ResetFSBasalBoundaryCondition(void);
+		void        ResetHooks();
+		void        ReduceMatrices(ElementMatrix* Ke,ElementVector* pe);
+		void        SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index){_error_("not implemented yet");};
+		void        SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters);
+		void        SetTemporaryElementType(int element_type_in){_error_("not implemented yet");};
+	   Element*    SpawnBasalElement(void);
+		Element*    SpawnTopElement(void);
+		Tria*       SpawnTria(int index1,int index2,int index3);
+		IssmDouble  StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){_error_("not implemented yet");};
+		void        StrainRateparallel(void){_error_("not implemented yet");};
+		void        StrainRateperpendicular(void){_error_("not implemented yet");};
+		void        StressIntensityFactor(void){_error_("not implemented yet");};
+		IssmDouble  SurfaceArea(void){_error_("not implemented yet");};
+		int         TensorInterpolation(void);
+		IssmDouble  TimeAdapt(){_error_("not implemented yet");};
+		IssmDouble  TotalFloatingBmb(void){_error_("not implemented yet");};
+		IssmDouble  TotalGroundedBmb(void){_error_("not implemented yet");};
+		IssmDouble  TotalSmb(void){_error_("not implemented yet");};
+		void        Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement);
+		void        UpdateConstraintsExtrudeFromBase(){_error_("not implemented");};
+		void        UpdateConstraintsExtrudeFromTop(){_error_("not implemented");};
+		int         UpdatePotentialUngrounding(IssmDouble* vertices_potentially_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf){_error_("not implemented yet");};
+		void        ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void        ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss);
+		int         VelocityInterpolation(void);
+		int         VertexConnectivity(int vertexindex){_error_("not implemented yet");};
+		void        VerticalSegmentIndices(int** pindices,int* pnumseg){_error_("not implemented yet");};
+		void        ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
+		void        ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum);
+
+#ifdef _HAVE_GIA_
+		void        GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y){_error_("not implemented yet");};
+#endif
+#ifdef _HAVE_SEALEVELRISE_
+		void    SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
+		void    SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
+		void    SealevelriseGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* Sg,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
+		IssmDouble    OceanArea(void){_error_("not implemented yet!");};
+		IssmDouble    OceanAverage(IssmDouble* Sg){_error_("not implemented yet!");};
+#endif
+
+#ifdef _HAVE_DAKOTA_
+		void        InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){_error_("not implemented yet");};
+		void        InputUpdateFromMatrixDakota(IssmDouble* matrix, int nows, int ncols, int name, int type){_error_("not implemented yet");};
+#endif
+		/*}}}*/
+};
+#endif  /* _TETRA_H_*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/TetraRef.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/TetraRef.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/TetraRef.cpp	(revision 21239)
@@ -0,0 +1,406 @@
+/*!\file TetraRef.c
+ * \brief: implementation of the TetraRef object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMNODESP0  1
+#define NUMNODESP1  4
+#define NUMNODESP1b 5
+#define NUMNODESP2  10
+#define NUMNODESMAX 10
+
+/*Object constructors and destructor*/
+TetraRef::TetraRef(){/*{{{*/
+}
+/*}}}*/
+TetraRef::~TetraRef(){/*{{{*/
+}
+/*}}}*/
+
+/*Reference Element numerics*/
+void TetraRef::GetInputDerivativeValue(IssmDouble* p, IssmDouble* plist,IssmDouble* xyz_list, GaussTetra* gauss,int finiteelement){/*{{{*/
+	/*From node values of parameter p (p_list[0], p_list[1], p_list[2],
+	 * p_list[3], p_list[4] and p_list[4]), return parameter derivative value at
+	 * gaussian point specified by gauss_coord:
+	 *   dp/dx=p_list[0]*dh1/dx+p_list[1]*dh2/dx+p_list[2]*dh3/dx+p_list[3]*dh4/dx+p_list[4]*dh5/dx+p_list[5]*dh6/dx;
+	 *   dp/dy=p_list[0]*dh1/dy+p_list[1]*dh2/dy+p_list[2]*dh3/dy+p_list[3]*dh4/dy+p_list[4]*dh5/dy+p_list[5]*dh6/dy;
+	 *   dp/dz=p_list[0]*dh1/dz+p_list[1]*dh2/dz+p_list[2]*dh3/dz+p_list[3]*dh4/dz+p_list[4]*dh5/dz+p_list[5]*dh6/dz;
+	 *
+	 *   p is a vector of size 3x1 already allocated.
+	 *
+	 * WARNING: For a significant gain in performance, it is better to use
+	 * static memory allocation instead of dynamic.
+	 */
+
+	/*Allocate derivatives of basis functions*/
+	IssmDouble  dbasis[3*NUMNODESMAX];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+	_assert_(numnodes<=NUMNODESMAX);
+
+	/*Get basis functions derivatives at this point*/
+	GetNodalFunctionsDerivatives(&dbasis[0],xyz_list,gauss,finiteelement);
+
+	/*Calculate parameter for this Gauss point*/
+	IssmDouble dpx=0.;
+	IssmDouble dpy=0.;
+	IssmDouble dpz=0.;
+	for(int i=0;i<numnodes;i++) dpx += dbasis[0*numnodes+i]*plist[i];
+	for(int i=0;i<numnodes;i++) dpy += dbasis[1*numnodes+i]*plist[i];
+	for(int i=0;i<numnodes;i++) dpz += dbasis[2*numnodes+i]*plist[i];
+
+	/*Assign values*/
+	p[0]=dpx;
+	p[1]=dpy;
+	p[2]=dpz;
+}
+/*}}}*/
+void TetraRef::GetInputValue(IssmDouble* p, IssmDouble* plist, Gauss* gauss,int finiteelement){/*{{{*/
+	/* WARNING: For a significant gain in performance, it is better to use
+	 * static memory allocation instead of dynamic.*/
+
+	/*Allocate basis functions*/
+	IssmDouble  basis[NUMNODESMAX];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+	_assert_(numnodes<=NUMNODESMAX);
+
+	/*Get basis functions at this point*/
+	GetNodalFunctions(&basis[0],gauss,finiteelement);
+
+	/*Calculate parameter for this Gauss point*/
+	IssmDouble value =0.;
+	for(int i=0;i<numnodes;i++) value += basis[i]*plist[i];
+
+	/*Assign output pointer*/
+	*p = value;
+}
+/*}}}*/
+void TetraRef::GetJacobian(IssmDouble* J, IssmDouble* xyz_list,GaussTetra* gauss){/*{{{*/
+	/*The Jacobian is constant over the element, discard the gaussian points. 
+	 * J is assumed to have been allocated of size 1*/
+
+	IssmDouble x1=xyz_list[3*0+0];
+	IssmDouble x2=xyz_list[3*1+0];
+	IssmDouble x3=xyz_list[3*2+0];
+	IssmDouble x4=xyz_list[3*3+0];
+
+	IssmDouble y1=xyz_list[3*0+1];
+	IssmDouble y2=xyz_list[3*1+1];
+	IssmDouble y3=xyz_list[3*2+1];
+	IssmDouble y4=xyz_list[3*3+1];
+
+	IssmDouble z1=xyz_list[3*0+2];
+	IssmDouble z2=xyz_list[3*1+2];
+	IssmDouble z3=xyz_list[3*2+2];
+	IssmDouble z4=xyz_list[3*3+2];
+
+	J[NDOF3*0+0] = x2-x1;
+	J[NDOF3*0+1] = y2-y1;
+	J[NDOF3*0+2] = z2-z1;
+
+	J[NDOF3*1+0] = x3-x1;
+	J[NDOF3*1+1] = y3-y1;
+	J[NDOF3*1+2] = z3-z1;
+
+	J[NDOF3*2+0] = x4-x1;
+	J[NDOF3*2+1] = y4-y1;
+	J[NDOF3*2+2] = z4-z1;
+}
+/*}}}*/
+void TetraRef::GetJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,GaussTetra* gauss){/*{{{*/
+	/*The Jacobian determinant is constant over the element, discard the gaussian points. 
+	 * J is assumed to have been allocated of size NDOF2xNDOF2.*/
+	IssmDouble J[3][3];
+
+	/*Call Jacobian routine to get the jacobian:*/
+	GetJacobian(&J[0][0],xyz_list, gauss);
+
+	/*Get Determinant*/
+	Matrix3x3Determinant(Jdet,&J[0][0]);
+	if(*Jdet<0) _error_("negative jacobian determinant!");
+
+}
+/*}}}*/
+void TetraRef::GetJacobianDeterminantFace(IssmDouble*  Jdet, IssmDouble* xyz_list,GaussTetra* gauss){/*{{{*/
+	/*The Jacobian determinant is constant over the element, discard the gaussian points. 
+	 * J is assumed to have been allocated of size NDOF2xNDOF2.*/
+
+	IssmDouble x1=xyz_list[3*0+0];
+	IssmDouble y1=xyz_list[3*0+1];
+	IssmDouble z1=xyz_list[3*0+2];
+	IssmDouble x2=xyz_list[3*1+0];
+	IssmDouble y2=xyz_list[3*1+1];
+	IssmDouble z2=xyz_list[3*1+2];
+	IssmDouble x3=xyz_list[3*2+0];
+	IssmDouble y3=xyz_list[3*2+1];
+	IssmDouble z3=xyz_list[3*2+2];
+
+	/*Jdet = norm( AB ^ AC ) / (2 * area of the reference triangle), with areaRef=sqrt(3) */
+	*Jdet=SQRT3/6.*pow(pow(((y2-y1)*(z3-z1)-(z2-z1)*(y3-y1)),2)+pow(((z2-z1)*(x3-x1)-(x2-x1)*(z3-z1)),2)+pow(((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)),2),0.5);
+	if(*Jdet<0) _error_("negative jacobian determinant!");
+}
+/*}}}*/
+void TetraRef::GetJacobianInvert(IssmDouble* Jinv, IssmDouble* xyz_list,GaussTetra* gauss){/*{{{*/
+
+	/*Jacobian*/
+	IssmDouble J[3][3];
+
+	/*Call Jacobian routine to get the jacobian:*/
+	GetJacobian(&J[0][0], xyz_list, gauss);
+
+	/*Invert Jacobian matrix: */
+	Matrix3x3Invert(Jinv,&J[0][0]);
+}
+/*}}}*/
+void TetraRef::GetNodalFunctions(IssmDouble* basis,Gauss* gauss_in,int finiteelement){/*{{{*/
+	/*This routine returns the values of the nodal functions  at the gaussian point.*/
+
+	_assert_(basis);
+
+	/*Cast gauss to GaussTetra*/
+	_assert_(gauss_in->Enum()==GaussTetraEnum);
+	GaussTetra* gauss = xDynamicCast<GaussTetra*>(gauss_in);
+
+	switch(finiteelement){
+		case P0Enum:
+			basis[0]=1.;
+			return;
+		case P1Enum: case P1DGEnum:
+			basis[0]=gauss->coord1;
+			basis[1]=gauss->coord2;
+			basis[2]=gauss->coord3;
+			basis[3]=gauss->coord4;
+			return;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			/*Corner nodes*/
+			basis[0]=gauss->coord1;
+			basis[1]=gauss->coord2;
+			basis[2]=gauss->coord3;
+			basis[3]=gauss->coord4;
+			/*bubble*/
+			basis[4]=256.*gauss->coord1*gauss->coord2*gauss->coord3*gauss->coord4;
+			return;
+		case P2Enum:
+			/*Vertices*/
+			basis[0]=gauss->coord1*(2.*gauss->coord1-1.);
+			basis[1]=gauss->coord2*(2.*gauss->coord2-1.);
+			basis[2]=gauss->coord3*(2.*gauss->coord3-1.);
+			basis[3]=gauss->coord4*(2.*gauss->coord4-1.);
+			/*Edges*/
+			basis[4]=4.*gauss->coord2*gauss->coord3;
+			basis[5]=4.*gauss->coord1*gauss->coord3;
+			basis[6]=4.*gauss->coord1*gauss->coord2;
+			basis[7]=4.*gauss->coord2*gauss->coord4;
+			basis[8]=4.*gauss->coord3*gauss->coord4;
+			basis[9]=4.*gauss->coord1*gauss->coord4;
+			return;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+}
+/*}}}*/
+void TetraRef::GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, GaussTetra* gauss,int finiteelement){/*{{{*/
+
+	/*This routine returns the values of the nodal functions derivatives  (with respect to the 
+	 * actual coordinate system): */
+	IssmDouble    Jinv[3][3];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+
+	/*Get nodal functions derivatives in reference triangle*/
+	IssmDouble dbasis_ref[3*NUMNODESMAX];
+	GetNodalFunctionsDerivativesReference(dbasis_ref,gauss,finiteelement); 
+
+	/*Get Jacobian invert: */
+	GetJacobianInvert(&Jinv[0][0], xyz_list, gauss);
+
+	/*Build dbasis: 
+	 *
+	 * [dhi/dx]= Jinv'*[dhi/dr]
+	 * [dhi/dy]        [dhi/ds]
+	 * [dhi/dz]        [dhi/dzeta]
+	 */
+
+	for(int i=0;i<numnodes;i++){
+		dbasis[numnodes*0+i]=Jinv[0][0]*dbasis_ref[0*numnodes+i]+Jinv[0][1]*dbasis_ref[1*numnodes+i]+Jinv[0][2]*dbasis_ref[2*numnodes+i];
+		dbasis[numnodes*1+i]=Jinv[1][0]*dbasis_ref[0*numnodes+i]+Jinv[1][1]*dbasis_ref[1*numnodes+i]+Jinv[1][2]*dbasis_ref[2*numnodes+i];
+		dbasis[numnodes*2+i]=Jinv[2][0]*dbasis_ref[0*numnodes+i]+Jinv[2][1]*dbasis_ref[1*numnodes+i]+Jinv[2][2]*dbasis_ref[2*numnodes+i];
+	}
+}
+/*}}}*/
+void TetraRef::GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,GaussTetra* gauss,int finiteelement){/*{{{*/
+	/*This routine returns the values of the nodal functions derivatives  (with respect to the 
+	 * natural coordinate system) at the gaussian point. */
+
+	_assert_(dbasis && gauss);
+
+	switch(finiteelement){
+		case P0Enum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP0*0+0] = 0.;
+			dbasis[NUMNODESP0*1+0] = 0.;
+			dbasis[NUMNODESP0*2+0] = 0.;
+			return;
+		case P1Enum: case P1DGEnum:
+			dbasis[NUMNODESP1*0+0] = -1.;
+			dbasis[NUMNODESP1*1+0] = -1.;
+			dbasis[NUMNODESP1*2+0] = -1.;
+
+			dbasis[NUMNODESP1*0+1] = 1.;
+			dbasis[NUMNODESP1*1+1] = 0.;
+			dbasis[NUMNODESP1*2+1] = 0.;
+
+			dbasis[NUMNODESP1*0+2] = 0.;
+			dbasis[NUMNODESP1*1+2] = 1.;
+			dbasis[NUMNODESP1*2+2] = 0.;
+
+			dbasis[NUMNODESP1*0+3] = 0.;
+			dbasis[NUMNODESP1*1+3] = 0.;
+			dbasis[NUMNODESP1*2+3] = 1.;
+			return;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			dbasis[NUMNODESP1b*0+0] = -1.;
+			dbasis[NUMNODESP1b*1+0] = -1.;
+			dbasis[NUMNODESP1b*2+0] = -1.;
+
+			dbasis[NUMNODESP1b*0+1] = 1.;
+			dbasis[NUMNODESP1b*1+1] = 0.;
+			dbasis[NUMNODESP1b*2+1] = 0.;
+
+			dbasis[NUMNODESP1b*0+2] = 0.;
+			dbasis[NUMNODESP1b*1+2] = 1.;
+			dbasis[NUMNODESP1b*2+2] = 0.;
+
+			dbasis[NUMNODESP1b*0+3] = 0.;
+			dbasis[NUMNODESP1b*1+3] = 0.;
+			dbasis[NUMNODESP1b*2+3] = 1.;
+
+			dbasis[NUMNODESP1b*0+4] = 256.*(-gauss->coord2*gauss->coord3*gauss->coord4+gauss->coord1*gauss->coord3*gauss->coord4);
+			dbasis[NUMNODESP1b*1+4] = 256.*(-gauss->coord2*gauss->coord3*gauss->coord4+gauss->coord1*gauss->coord2*gauss->coord4);
+			dbasis[NUMNODESP1b*2+4] = 256.*(-gauss->coord2*gauss->coord3*gauss->coord4+gauss->coord1*gauss->coord2*gauss->coord3);
+			return;
+		case P2Enum:
+			dbasis[NUMNODESP2*0+0] = -4.*gauss->coord1+1.;
+			dbasis[NUMNODESP2*1+0] = -4.*gauss->coord1+1.;
+			dbasis[NUMNODESP2*2+0] = -4.*gauss->coord1+1.;
+
+			dbasis[NUMNODESP2*0+1] = 4.*gauss->coord2-1.;
+			dbasis[NUMNODESP2*1+1] = 0.;
+			dbasis[NUMNODESP2*2+1] = 0.;
+
+			dbasis[NUMNODESP2*0+2] = 0.;
+			dbasis[NUMNODESP2*1+2] = 4.*gauss->coord3-1.;
+			dbasis[NUMNODESP2*2+2] = 0.;
+
+			dbasis[NUMNODESP2*0+3] = 0.;
+			dbasis[NUMNODESP2*1+3] = 0.;
+			dbasis[NUMNODESP2*2+3] = 4.*gauss->coord4-1.;
+
+			dbasis[NUMNODESP2*0+4] = 4.*gauss->coord3;
+			dbasis[NUMNODESP2*1+4] = 4.*gauss->coord2;
+			dbasis[NUMNODESP2*2+4] = 0.;
+
+			dbasis[NUMNODESP2*0+5] = -4.*gauss->coord3;
+			dbasis[NUMNODESP2*1+5] = 4.*(gauss->coord1-gauss->coord3);
+			dbasis[NUMNODESP2*2+5] = -4.*gauss->coord3;
+
+			dbasis[NUMNODESP2*0+6] = 4.*(gauss->coord1-gauss->coord2);
+			dbasis[NUMNODESP2*1+6] = -4.*gauss->coord2;
+			dbasis[NUMNODESP2*2+6] = -4.*gauss->coord2;
+
+			dbasis[NUMNODESP2*0+7] = 4.*gauss->coord4;
+			dbasis[NUMNODESP2*1+7] = 0.;
+			dbasis[NUMNODESP2*2+7] = 4.*gauss->coord2;
+
+			dbasis[NUMNODESP2*0+8] = 0.;
+			dbasis[NUMNODESP2*1+8] = 4.*gauss->coord4;
+			dbasis[NUMNODESP2*2+8] = 4.*gauss->coord3;
+
+			dbasis[NUMNODESP2*0+9] = -4.*gauss->coord4;
+			dbasis[NUMNODESP2*1+9] = -4.*gauss->coord4;
+			dbasis[NUMNODESP2*2+9] = 4.*(gauss->coord1-gauss->coord4);
+			return;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+}
+/*}}}*/
+int  TetraRef::NumberofNodes(int finiteelement){/*{{{*/
+
+	switch(finiteelement){
+		case P0Enum:                return NUMNODESP0;
+		case P1Enum:                return NUMNODESP1;
+		case P1DGEnum:              return NUMNODESP1;
+		case P1bubbleEnum:          return NUMNODESP1b;
+		case P1bubblecondensedEnum: return NUMNODESP1b;
+		case P2Enum:                return NUMNODESP2;
+		case P1P1Enum:              return NUMNODESP1*2;
+		case P1P1GLSEnum:           return NUMNODESP1*2;
+		case MINIcondensedEnum:     return NUMNODESP1b+NUMNODESP1;
+		case MINIEnum:              return NUMNODESP1b+NUMNODESP1;
+		case TaylorHoodEnum:        return NUMNODESP2+NUMNODESP1;
+		case LATaylorHoodEnum:      return NUMNODESP2;
+		case XTaylorHoodEnum:       return NUMNODESP2+NUMNODESP1;
+		default: _error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
+int  TetraRef::PressureInterpolation(int fe_stokes){/*{{{*/
+
+	switch(fe_stokes){
+		case P1P1Enum:          return P1Enum;
+		case P1P1GLSEnum:       return P1Enum;
+		case MINIcondensedEnum: return P1Enum;
+		case MINIEnum:          return P1Enum;
+		case TaylorHoodEnum:    return P1Enum;
+		case LATaylorHoodEnum:  return NoneEnum;
+		case XTaylorHoodEnum:   return P1Enum;
+		default:       _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet");
+	}
+
+	return -1;
+}/*}}}*/
+int  TetraRef::TensorInterpolation(int fe_stokes){/*{{{*/
+	/*This routine returns the values of the nodal functions  at the gaussian point.*/
+
+	switch(fe_stokes){
+		case XTaylorHoodEnum: return P1DGEnum;
+		default: _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet");
+	}
+}
+/*}}}*/
+int  TetraRef::VelocityInterpolation(int fe_stokes){/*{{{*/
+
+	switch(fe_stokes){
+		case P1P1Enum:          return P1Enum;
+		case P1P1GLSEnum:       return P1Enum;
+		case MINIcondensedEnum: return P1bubbleEnum;
+		case MINIEnum:          return P1bubbleEnum;
+		case TaylorHoodEnum:    return P2Enum;
+		case LATaylorHoodEnum:  return P2Enum;
+		case XTaylorHoodEnum:   return P2Enum;
+		default:       _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/TetraRef.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/TetraRef.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/TetraRef.h	(revision 21239)
@@ -0,0 +1,33 @@
+
+/*!\file:  TetraRef.h
+ * \brief abstract class for handling Tetra oriented routines, like nodal functions, 
+ * strain rate generation, etc ...
+ */ 
+
+#ifndef _TETRAREF_H_
+#define _TETRAREF_H_
+
+class GaussTetra;
+
+class TetraRef{
+
+	public: 
+		TetraRef();
+		~TetraRef();
+
+		void GetInputDerivativeValue(IssmDouble* p, IssmDouble* plist,IssmDouble* xyz_list, GaussTetra* gauss,int finiteelement);
+		void GetInputValue(IssmDouble* p, IssmDouble* plist, Gauss* gauss,int finiteelement);
+		void GetJacobian(IssmDouble* J, IssmDouble* xyz_list,GaussTetra* gauss);
+		void GetJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,GaussTetra* gauss);
+		void GetJacobianDeterminantFace(IssmDouble*  Jdet, IssmDouble* xyz_list,GaussTetra* gauss);
+		void GetJacobianInvert(IssmDouble* Jinv, IssmDouble* xyz_list,GaussTetra* gauss);
+		void GetNodalFunctions(IssmDouble* basis,Gauss* gauss_in,int finiteelement);
+		void GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, GaussTetra* gauss,int finiteelement);
+		void GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,GaussTetra* gauss,int finiteelement);
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*do nothing */};
+		int  NumberofNodes(int finiteelement);
+		int  PressureInterpolation(int fe_stokes);
+		int  TensorInterpolation(int fe_stokes);
+		int  VelocityInterpolation(int fe_stokes);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Tria.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Tria.cpp	(revision 21239)
@@ -0,0 +1,4210 @@
+/*!\file Tria.cpp
+ * \brief: implementation of the Tria object
+ */
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include "../classes.h"
+#include "../../shared/shared.h"
+#ifdef _HAVE_GIA_
+#include "../../modules/GiaDeflectionCorex/GiaDeflectionCorex.h"
+#endif
+/*}}}*/
+
+/*Element macros*/
+#define NUMVERTICES   3
+#define NUMVERTICES1D 2
+
+/*Constructors/destructor/copy*/
+Tria::Tria(int tria_id, int tria_sid, int index, IoModel* iomodel,int nummodels)/*{{{*/
+	:ElementHook(nummodels,index+1,NUMVERTICES,iomodel){
+
+		/*id: */
+		this->id  = tria_id;
+		this->sid = tria_sid;
+
+		//this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
+		this->parameters = NULL;
+
+		/*intialize inputs: */
+		this->inputs  = new Inputs();
+
+		/*initialize pointers:*/
+		this->nodes    = NULL;
+		this->vertices = NULL;
+		this->material = NULL;
+		this->matpar   = NULL;
+		if(nummodels>0){
+			this->element_type_list=xNew<int>(nummodels);
+			for(int i=0;i<nummodels;i++) this->element_type_list[i] = 0;
+		}
+		else this->element_type_list = NULL;
+
+}
+/*}}}*/
+Tria::~Tria(){/*{{{*/
+	this->parameters=NULL;
+}
+/*}}}*/
+Object* Tria::copy() {/*{{{*/
+
+	int i;
+	Tria* tria=NULL;
+
+	tria=new Tria();
+
+	//deal with TriaRef mother class
+	int nanalyses = this->numanalyses;
+	if(nanalyses > 0){
+		tria->element_type_list=xNew<int>(nanalyses);
+		for(i=0;i<nanalyses;i++){
+			if (this->element_type_list[i]) tria->element_type_list[i]=this->element_type_list[i];
+			else tria->element_type_list[i] = 0;
+		}
+	}
+	else tria->element_type_list = NULL;
+	tria->element_type=this->element_type;
+	tria->numanalyses=nanalyses;
+
+	//deal with ElementHook mother class
+	if (this->hnodes){
+		tria->hnodes=xNew<Hook*>(tria->numanalyses);
+		for(i=0;i<tria->numanalyses;i++){
+			if (this->hnodes[i]) tria->hnodes[i] = (Hook*)(this->hnodes[i]->copy());
+			else tria->hnodes[i] = NULL;
+		}
+	}
+	else tria->hnodes = NULL;
+
+	tria->hvertices = (Hook*)this->hvertices->copy();
+	tria->hmaterial = (Hook*)this->hmaterial->copy();
+	tria->hmatpar   = (Hook*)this->hmatpar->copy();
+	tria->hneighbors = NULL;
+
+	/*deal with Tria fields: */
+	tria->id  = this->id;
+	tria->sid = this->sid;
+	if(this->inputs) tria->inputs = (Inputs*)(this->inputs->Copy());
+	else tria->inputs=new Inputs();
+
+	/*point parameters: */
+	tria->parameters=this->parameters;
+
+	/*recover objects: */
+	if (this->nodes){
+		unsigned int num_nodes = 3;
+		tria->nodes = xNew<Node*>(num_nodes); //we cannot rely on an analysis_counter to tell us which analysis_type we are running, so we just copy the nodes.
+		for(i=0;i<num_nodes;i++) if(this->nodes[i]) tria->nodes[i]=this->nodes[i]; else tria->nodes[i] = NULL;
+	}
+	else tria->nodes = NULL;
+	
+	tria->vertices = (Vertex**)this->hvertices->deliverp();
+	tria->material = (Material*)this->hmaterial->delivers();
+	tria->matpar   = (Matpar*)this->hmatpar->delivers();
+
+	return tria;
+}
+/*}}}*/
+void Tria::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+	
+	MARSHALLING_ENUM(TriaEnum);
+	
+	/*Call parent classes: */
+	ElementHook::Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	Element::MarshallElement(pmarshalled_data,pmarshalled_data_size,marshall_direction,this->numanalyses);
+	TriaRef::Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	vertices = (Vertex**)this->hvertices->deliverp();
+	material = (Material*)this->hmaterial->delivers();
+	matpar   = (Matpar*)this->hmatpar->delivers();
+
+}
+/*}}}*/
+
+/*Other*/
+void       Tria::AddBasalInput(int input_enum,IssmDouble* values, int interpolation_enum){/*{{{*/
+
+	/*Call inputs method*/
+	_assert_(this->inputs);
+	
+	int domaintype;
+	parameters->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			this->inputs->AddInput(new TriaInput(input_enum,values,interpolation_enum));
+			break;
+		case Domain2DverticalEnum:{
+			if(interpolation_enum==P1Enum){
+				IssmDouble values2[NUMVERTICES]={0.};
+				int        numindices;
+				int       *indices = NULL;
+				int        index = this->EdgeOnBaseIndex();
+				NodeOnEdgeIndices(&numindices,&indices,index,this->FiniteElement());
+				for(int i=0;i<numindices;i++){
+					values2[indices[i]] = values[i];
+				}
+				this->inputs->AddInput(new TriaInput(input_enum,values2,interpolation_enum));
+				xDelete<int>(indices);
+			}
+			else _error_("not implemented yet");
+			}
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+}
+/*}}}*/
+void       Tria::AddInput(int input_enum,IssmDouble* values, int interpolation_enum){/*{{{*/
+
+	/*Call inputs method*/
+	_assert_(this->inputs);
+	this->inputs->AddInput(new TriaInput(input_enum,values,interpolation_enum));
+}
+/*}}}*/
+void       Tria::AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part){/*{{{*/
+
+	bool       already = false;
+	int        i,j;
+	int        partition[NUMVERTICES];
+	int        offsetsid[NUMVERTICES];
+	int        offsetdof[NUMVERTICES];
+	IssmDouble area;
+	IssmDouble mean;
+
+	/*First, get the area: */
+	area=this->GetArea();
+
+	/*Figure out the average for this element: */
+	this->GetVerticesSidList(&offsetsid[0]);
+	this->GetVertexPidList(&offsetdof[0]);
+	mean=0;
+	for(i=0;i<NUMVERTICES;i++){
+		partition[i]=reCast<int>(qmu_part[offsetsid[i]]);
+		mean=mean+1.0/NUMVERTICES*vertex_response[offsetdof[i]];
+	}
+
+	/*Add contribution: */
+	for(i=0;i<NUMVERTICES;i++){
+		already=false;
+		for(j=0;j<i;j++){
+			if (partition[i]==partition[j]){
+				already=true;
+				break;
+			}
+		}
+		if(!already){
+			partition_contributions->SetValue(partition[i],mean*area,ADD_VAL);
+			partition_areas->SetValue(partition[i],area,ADD_VAL);
+		};
+	}
+}
+/*}}}*/
+void       Tria::CalvingRateDev(){/*{{{*/
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  epsilon[3]; /* epsilon=[exx,eyy,exy];*/
+	IssmDouble  calvingratex[NUMVERTICES];
+	IssmDouble  calvingratey[NUMVERTICES];
+	IssmDouble  calvingrate[NUMVERTICES];
+	IssmDouble  lambda1,lambda2,ex,ey,vx,vy,vel;
+	IssmDouble  sigma_vm,sigma_max,epse_2,groundedice;
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs and parameters we will need*/
+	Input* vx_input = inputs->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input = inputs->GetInput(VyEnum); _assert_(vy_input);
+	Input* gr_input = inputs->GetInput(MaskGroundediceLevelsetEnum); _assert_(gr_input);
+	IssmDouble  B   = this->GetMaterialParameter(MaterialsRheologyBbarEnum);
+	IssmDouble  n   = this->GetMaterialParameter(MaterialsRheologyNEnum);
+
+	/* Start looping on the number of vertices: */
+	GaussTria* gauss=new GaussTria();
+	for(int iv=0;iv<NUMVERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		/*Get velocity components and thickness*/
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		gr_input->GetInputValue(&groundedice,gauss);
+		vel=sqrt(vx*vx+vy*vy)+1.e-14;
+
+		/*Compute strain rate and viscosity: */
+		this->StrainRateSSA(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);
+
+		/*Get Eigen values*/
+		Matrix2x2Eigen(&lambda1,&lambda2,&ex,&ey,epsilon[0],epsilon[2],epsilon[1]);
+		_assert_(!xIsNan<IssmDouble>(lambda1));
+		_assert_(!xIsNan<IssmDouble>(lambda2));
+
+		/*Process Eigen values (only account for extension)*/
+		lambda1 = max(lambda1,0.);
+		lambda2 = max(lambda2,0.);
+
+		/*Calculate sigma_vm*/
+		epse_2    = 1./2. *(lambda1*lambda1 + lambda2*lambda2);
+		sigma_vm  = sqrt(3.) * B * pow(epse_2,1./(2.*n));
+		//sigma_max = 125.e+3;
+		sigma_max = 350.e+3;
+		sigma_max = 450.e+3;
+		sigma_max = 800.e+3; //too much
+		//sigma_max = 700.e+3;
+		//sigma_max = 670.e+3;
+		//sigma_max = 550.e+3;
+		sigma_max = 750.e+3; //too high
+		sigma_max = 850.e+3; //too low
+		sigma_max = 800.e+3; //IUGG previous test
+		sigma_max = 1000.e+3; //850 seems small
+
+		if(groundedice<0) sigma_max=200.e+3;
+
+		/*Assign values*/
+		calvingratex[iv]=vx*sigma_vm/sigma_max;
+		calvingratey[iv]=vy*sigma_vm/sigma_max;
+		calvingrate[iv]=sqrt(calvingratex[iv]*calvingratex[iv] + calvingratey[iv]*calvingratey[iv]);
+	}
+
+	/*Add input*/
+	this->inputs->AddInput(new TriaInput(CalvingratexEnum,&calvingratex[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(CalvingrateyEnum,&calvingratey[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(CalvingCalvingrateEnum,&calvingrate[0],P1Enum));
+
+	/*Clean up and return*/
+	delete gauss;
+}
+/*}}}*/
+void       Tria::CalvingRateLevermann(){/*{{{*/
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	GaussTria* gauss=NULL;
+	IssmDouble  vx,vy,vel;
+	IssmDouble  strainparallel;
+	IssmDouble  propcoeff;
+	IssmDouble  strainperpendicular;
+	IssmDouble  calvingratex[NUMVERTICES];
+	IssmDouble  calvingratey[NUMVERTICES];
+	IssmDouble  calvingrate[NUMVERTICES];
+
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs and parameters we will need*/
+	Input* vx_input=inputs->GetInput(VxEnum);																		_assert_(vx_input);
+	Input* vy_input=inputs->GetInput(VyEnum);																		_assert_(vy_input);
+	Input* strainparallel_input=inputs->GetInput(StrainRateparallelEnum);								_assert_(strainparallel_input);
+	Input* strainperpendicular_input=inputs->GetInput(StrainRateperpendicularEnum);					_assert_(strainperpendicular_input);
+	Input* levermanncoeff_input=inputs->GetInput(CalvinglevermannCoeffEnum);                     _assert_(levermanncoeff_input);
+
+	/* Start looping on the number of vertices: */
+	gauss=new GaussTria();
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		/* Get the value we need*/
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vel=vx*vx+vy*vy;
+		strainparallel_input->GetInputValue(&strainparallel,gauss);
+		strainperpendicular_input->GetInputValue(&strainperpendicular,gauss);
+		levermanncoeff_input->GetInputValue(&propcoeff,gauss);
+
+		/*Calving rate proportionnal to the positive product of the strain rate along the ice flow direction and the strain rate perpendicular to the ice flow */
+		calvingrate[iv]=propcoeff*strainparallel*strainperpendicular;
+		if(calvingrate[iv]<0){
+			calvingrate[iv]=0;
+		}
+		calvingratex[iv]=calvingrate[iv]*vx/(sqrt(vel)+1.e-14);
+		calvingratey[iv]=calvingrate[iv]*vy/(sqrt(vel)+1.e-14);
+	}
+
+	/*Add input*/
+	this->inputs->AddInput(new TriaInput(CalvingratexEnum,&calvingratex[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(CalvingrateyEnum,&calvingratey[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(CalvingCalvingrateEnum,&calvingrate[0],P1Enum));
+
+	/*Clean up and return*/
+	delete gauss;
+
+}
+/*}}}*/
+IssmDouble Tria::CharacteristicLength(void){/*{{{*/
+
+	return sqrt(2*this->GetArea());
+}
+/*}}}*/
+void       Tria::ComputeBasalStress(Vector<IssmDouble>* eps){/*{{{*/
+	_error_("Not Implemented yet");
+}
+/*}}}*/
+void       Tria::ComputeDeviatoricStressTensor(){/*{{{*/
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  viscosity;
+	IssmDouble  epsilon[3]; /* epsilon=[exx,eyy,exy];*/
+	IssmDouble  tau_xx[NUMVERTICES];
+	IssmDouble	tau_yy[NUMVERTICES];
+	IssmDouble	tau_zz[NUMVERTICES]={0,0,0};
+	IssmDouble  tau_xy[NUMVERTICES];
+	IssmDouble	tau_xz[NUMVERTICES]={0,0,0};
+	IssmDouble	tau_yz[NUMVERTICES]={0,0,0};
+	IssmDouble  tau_e[NUMVERTICES];
+	GaussTria*  gauss=NULL;
+	int domaintype,dim=2;
+
+	/*Get approximation*/
+	int approximation;
+	inputs->GetInputValue(&approximation,ApproximationEnum);
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs we will be needing: */
+	this->FindParam(&domaintype,DomainTypeEnum);
+	Input* vx_input=inputs->GetInput(VxEnum);             _assert_(vx_input);
+	Input* vy_input=inputs->GetInput(VyEnum);             _assert_(vy_input);
+
+	/* Start looping on the number of vertices: */
+	gauss=new GaussTria();
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		/*Compute strain rate and viscosity: */
+		this->StrainRateSSA(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);
+		switch(approximation){
+			case SSAApproximationEnum:
+				this->material->ViscositySSA(&viscosity,dim,&xyz_list[0][0],gauss,vx_input,vy_input);
+				break;
+			case HOApproximationEnum:
+				this->material->ViscosityHO(&viscosity,dim,&xyz_list[0][0],gauss,vx_input,vy_input);
+				break;
+			case FSApproximationEnum:
+				this->material->ViscosityFS(&viscosity,dim,&xyz_list[0][0],gauss,vx_input,vy_input,NULL);
+				break;
+			default:
+				_error_("not supported yet");
+		}
+
+		/*Compute Stress*/
+		tau_xx[iv]=2*viscosity*epsilon[0]; // tau = nu eps
+		tau_yy[iv]=2*viscosity*epsilon[1];
+		tau_xy[iv]=2*viscosity*epsilon[2];
+		tau_e[iv]=1/sqrt(2)*sqrt(pow(tau_xx[iv],2)+pow(tau_yy[iv],2)+2*pow(tau_xy[iv],2));
+	}
+
+	/*Add Stress tensor components into inputs*/
+	this->inputs->AddInput(new TriaInput(DeviatoricStressxxEnum,&tau_xx[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(DeviatoricStressxyEnum,&tau_xy[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(DeviatoricStressxzEnum,&tau_xz[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(DeviatoricStressyyEnum,&tau_yy[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(DeviatoricStressyzEnum,&tau_yz[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(DeviatoricStresszzEnum,&tau_zz[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(DeviatoricStresseffectiveEnum,&tau_e[0],P1Enum));
+
+	/*Clean up and return*/
+	delete gauss;
+}
+/*}}}*/
+void       Tria::ComputeSigmaNN(){/*{{{*/
+
+	if(!IsOnBase()){
+		IssmDouble sigma_nn[3]={0.};
+		this->inputs->AddInput(new TriaInput(SigmaNNEnum,&sigma_nn[0],P1Enum));
+		return;
+	}
+	else{
+		IssmDouble* xyz_list=NULL;
+		IssmDouble *xyz_list_base=NULL;
+		IssmDouble  pressure,viscosity;
+		IssmDouble  sigma_nn[3];
+		IssmDouble  sigma_xx,sigma_xy,sigma_yy;
+		IssmDouble  epsilon[3]; /* epsilon=[exx,eyy,exy];*/
+		IssmDouble  base_normal[2]; 
+		int domaintype,dim=2;
+
+		/* Get node coordinates and dof list: */
+		GetVerticesCoordinates(&xyz_list);
+	   GetVerticesCoordinatesBase(&xyz_list_base);
+
+		/*Retrieve all inputs we will be needing: */
+		this->FindParam(&domaintype,DomainTypeEnum);
+		if(domaintype==Domain2DhorizontalEnum) _error_("stress tensor calculation not supported for mesh of type " <<EnumToStringx(domaintype)<<", extrude mesh or call ComputeDeviatoricStressTensor");
+		Input* pressure_input=inputs->GetInput(PressureEnum); _assert_(pressure_input);
+		Input* vx_input=inputs->GetInput(VxEnum);             _assert_(vx_input);
+		Input* vy_input=inputs->GetInput(VyEnum);             _assert_(vy_input);
+
+		/* Start looping on the number of vertices: */
+		Gauss* gauss = this->NewGauss();
+		for(int i=0;i<NUMVERTICES;i++){
+			gauss->GaussNode(P1Enum,i);
+
+			/*Compute strain rate viscosity and pressure: */
+			this->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+			this->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,NULL);
+			pressure_input->GetInputValue(&pressure,gauss);
+
+			/*Compute Stress*/
+			sigma_xx=2*viscosity*epsilon[0]-pressure; // sigma = nu eps - pressure
+			sigma_yy=2*viscosity*epsilon[1]-pressure;
+			sigma_xy=2*viscosity*epsilon[2];
+
+			/*Get normal vector to the bed */
+			NormalBase(&base_normal[0],xyz_list_base);
+
+			/*Compute sigma_nn*/
+			sigma_nn[i]=sigma_xx*base_normal[0]*base_normal[0] + 2*sigma_xy*base_normal[0]*base_normal[1] + sigma_yy*base_normal[1]*base_normal[1];
+		}
+
+		/*Add Stress tensor components into inputs*/
+		this->inputs->AddInput(new TriaInput(SigmaNNEnum,&sigma_nn[0],P1Enum));
+
+		/*Clean up and return*/
+		xDelete<IssmDouble>(xyz_list);
+		xDelete<IssmDouble>(xyz_list_base);
+		delete gauss;
+	}
+}
+/*}}}*/
+void       Tria::ComputeStressTensor(){/*{{{*/
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  pressure,viscosity;
+	IssmDouble  epsilon[3]; /* epsilon=[exx,eyy,exy];*/
+	IssmDouble  sigma_xx[NUMVERTICES];
+	IssmDouble	sigma_yy[NUMVERTICES];
+	IssmDouble	sigma_zz[NUMVERTICES]={0,0,0};
+	IssmDouble  sigma_xy[NUMVERTICES];
+	IssmDouble	sigma_xz[NUMVERTICES]={0,0,0};
+	IssmDouble	sigma_yz[NUMVERTICES]={0,0,0};
+	GaussTria*  gauss=NULL;
+	int domaintype,dim=2;
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs we will be needing: */
+	this->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype==Domain2DhorizontalEnum) _error_("stress tensor calculation not supported for mesh of type " <<EnumToStringx(domaintype)<<", extrude mesh or call ComputeDeviatoricStressTensor");
+	Input* pressure_input=inputs->GetInput(PressureEnum); _assert_(pressure_input);
+	Input* vx_input=inputs->GetInput(VxEnum);             _assert_(vx_input);
+	Input* vy_input=inputs->GetInput(VyEnum);             _assert_(vy_input);
+
+	/* Start looping on the number of vertices: */
+	gauss=new GaussTria();
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		/*Compute strain rate viscosity and pressure: */
+		this->StrainRateSSA(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);
+		this->material->ViscositySSA(&viscosity,dim,&xyz_list[0][0],gauss,vx_input,vy_input);
+		pressure_input->GetInputValue(&pressure,gauss);
+
+		/*Compute Stress*/
+		sigma_xx[iv]=2*viscosity*epsilon[0]-pressure; // sigma = nu eps - pressure
+		sigma_yy[iv]=2*viscosity*epsilon[1]-pressure;
+		sigma_xy[iv]=2*viscosity*epsilon[2];
+	}
+
+	/*Add Stress tensor components into inputs*/
+	this->inputs->AddInput(new TriaInput(StressTensorxxEnum,&sigma_xx[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(StressTensorxyEnum,&sigma_xy[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(StressTensorxzEnum,&sigma_xz[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(StressTensoryyEnum,&sigma_yy[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(StressTensoryzEnum,&sigma_yz[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(StressTensorzzEnum,&sigma_zz[0],P1Enum));
+
+	/*Clean up and return*/
+	delete gauss;
+}
+/*}}}*/
+void       Tria::Configure(Elements* elementsin, Loads* loadsin,Nodes* nodesin,Vertices *verticesin,Materials* materialsin, Parameters* parametersin){/*{{{*/
+
+	/*go into parameters and get the analysis_counter: */
+	int analysis_counter;
+	parametersin->FindParam(&analysis_counter,AnalysisCounterEnum);
+
+	/*Get Element type*/
+	if (this->element_type_list) this->element_type=this->element_type_list[analysis_counter];
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	if(this->hnodes){
+		if (this->hnodes[analysis_counter]) this->hnodes[analysis_counter]->configure(nodesin);
+		else this->hnodes[analysis_counter] = NULL;
+	}
+	else this->hnodes = NULL; 
+	this->hvertices->configure(verticesin);
+	this->hmaterial->configure(materialsin);
+	this->hmatpar->configure(materialsin);
+
+	/*Now, go pick up the objects inside the hooks: */
+	if(this->hnodes && this->hnodes[analysis_counter]) this->nodes=(Node**)this->hnodes[analysis_counter]->deliverp();
+	else this->nodes=NULL;
+	this->vertices = (Vertex**)this->hvertices->deliverp();
+	this->material = (Material*)this->hmaterial->delivers();
+	this->matpar   = (Matpar*)this->hmatpar->delivers();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+
+	/*get inputs configured too: */
+	this->inputs->Configure(this->parameters);
+
+}
+/*}}}*/
+void       Tria::ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index){/*{{{*/
+
+	int    vertexpidlist[NUMVERTICES];
+	IssmDouble grad_list[NUMVERTICES];
+	Input* grad_input=NULL;
+
+	Input* input=inputs->GetInput(enum_type);
+	if (!input) _error_("Input " << EnumToStringx(enum_type) << " not found");
+	if (input->ObjectEnum()!=ControlInputEnum) _error_("Input " << EnumToStringx(enum_type) << " is not a ControlInput");
+
+	GradientIndexing(&vertexpidlist[0],control_index);
+	for(int i=0;i<NUMVERTICES;i++) grad_list[i]=gradient[vertexpidlist[i]];
+	grad_input=new TriaInput(GradientEnum,grad_list,P1Enum);
+
+	((ControlInput*)input)->SetGradient(grad_input);
+
+}/*}}}*/
+void       Tria::ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum){/*{{{*/
+
+	Input* input=inputs->GetInput(control_enum);
+	if (!input) _error_("Input " << EnumToStringx(control_enum) << " not found");
+	if (input->ObjectEnum()!=ControlInputEnum) _error_("Input " << EnumToStringx(control_enum) << " is not a ControlInput");
+
+	int         sidlist[NUMVERTICES];
+	int         connectivity[NUMVERTICES];
+	IssmPDouble values[NUMVERTICES];
+	IssmPDouble gradients[NUMVERTICES]; 
+	IssmDouble  value,gradient;
+
+	this->GetVerticesConnectivityList(&connectivity[0]);
+	this->GetVerticesSidList(&sidlist[0]);
+
+	GaussTria* gauss=new GaussTria();
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		((ControlInput*)input)->GetInputValue(&value,gauss);
+		((ControlInput*)input)->GetGradientValue(&gradient,gauss);
+
+		values[iv]    = reCast<IssmPDouble>(value)/reCast<IssmPDouble>(connectivity[iv]);
+		gradients[iv] = reCast<IssmPDouble>(gradient)/reCast<IssmPDouble>(connectivity[iv]);
+	}
+	delete gauss;
+
+	vector_control->SetValues(NUMVERTICES,&sidlist[0],&values[0],ADD_VAL);
+	vector_gradient->SetValues(NUMVERTICES,&sidlist[0],&gradients[0],ADD_VAL);
+
+}/*}}}*/
+int        Tria::EdgeOnBaseIndex(void){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	int        indices[3][2] = {{1,2},{2,0},{0,1}};
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&values[0],MeshVertexonbaseEnum);
+
+	for(int i=0;i<3;i++){
+		if(values[indices[i][0]] == 1. && values[indices[i][1]] == 1.){
+			return i;
+		}
+	}
+
+	_printf_("list of vertices on bed: "<<values[0]<<" "<<values[1]<<" "<<values[2]);
+	_error_("Could not find 2 vertices on bed");
+}
+/*}}}*/
+void       Tria::EdgeOnBaseIndices(int* pindex1,int* pindex2){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	int        indices[3][2] = {{1,2},{2,0},{0,1}};
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&values[0],MeshVertexonbaseEnum);
+
+	for(int i=0;i<3;i++){
+		if(values[indices[i][0]] == 1. && values[indices[i][1]] == 1.){
+			*pindex1 = indices[i][0];
+			*pindex2 = indices[i][1];
+			return;
+		}
+	}
+
+	_printf_("list of vertices on bed: "<<values[0]<<" "<<values[1]<<" "<<values[2]);
+	_error_("Could not find 2 vertices on bed");
+}
+/*}}}*/
+int        Tria::EdgeOnSurfaceIndex(void){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	int        indices[3][2] = {{1,2},{2,0},{0,1}};
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&values[0],MeshVertexonsurfaceEnum);
+
+	for(int i=0;i<3;i++){
+		if(values[indices[i][0]] == 1. && values[indices[i][1]] == 1.){
+			return i;
+		}
+	}
+
+	_printf_("list of vertices on surface: "<<values[0]<<" "<<values[1]<<" "<<values[2]);
+	_error_("Could not find 2 vertices on surface");
+}
+/*}}}*/
+void       Tria::EdgeOnSurfaceIndices(int* pindex1,int* pindex2){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	int        indices[3][2] = {{1,2},{2,0},{0,1}};
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&values[0],MeshVertexonsurfaceEnum);
+
+	for(int i=0;i<3;i++){
+		if(values[indices[i][0]] == 1. && values[indices[i][1]] == 1.){
+			*pindex1 = indices[i][0];
+			*pindex2 = indices[i][1];
+			return;
+		}
+	}
+
+	_printf_("list of vertices on surface: "<<values[0]<<" "<<values[1]<<" "<<values[2]);
+	_error_("Could not find 2 vertices on surface");
+}
+/*}}}*/
+void       Tria::ElementResponse(IssmDouble* presponse,int response_enum){/*{{{*/
+
+	switch(response_enum){
+		case MaterialsRheologyBbarEnum:
+			*presponse=this->material->GetBbar();
+			break;
+
+		case VelEnum:{
+
+			/*Get input:*/
+			IssmDouble vel;
+			Input* vel_input;
+
+			vel_input=this->inputs->GetInput(VelEnum); _assert_(vel_input);
+			vel_input->GetInputAverage(&vel);
+
+			/*Assign output pointers:*/
+			*presponse=vel;}
+			break;
+		default:  
+			_error_("Response type " << EnumToStringx(response_enum) << " not supported yet!");
+	}
+
+}
+/*}}}*/
+void       Tria::ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz){/*{{{*/
+
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble xmin,ymin;
+	IssmDouble xmax,ymax;
+
+	/*Get xyz list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	xmin=xyz_list[0][0]; xmax=xyz_list[0][0];
+	ymin=xyz_list[0][1]; ymax=xyz_list[0][1];
+
+	for(int i=1;i<NUMVERTICES;i++){
+		if(xyz_list[i][0]<xmin) xmin=xyz_list[i][0];
+		if(xyz_list[i][0]>xmax) xmax=xyz_list[i][0];
+		if(xyz_list[i][1]<ymin) ymin=xyz_list[i][1];
+		if(xyz_list[i][1]>ymax) ymax=xyz_list[i][1];
+	}
+
+	*hx=xmax-xmin;
+	*hy=ymax-ymin;
+	*hz=0.;
+}
+/*}}}*/
+int        Tria::FiniteElement(void){/*{{{*/
+	return this->element_type;
+}
+/*}}}*/
+IssmDouble Tria::FloatingArea(void){/*{{{*/
+
+	/*Intermediaries*/
+	int         domaintype;
+	IssmDouble  phi;
+	IssmDouble *xyz_list  = NULL;
+
+	if(!IsIceInElement())return 0.;
+
+	/*Get problem dimension*/
+	this->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype!=Domain2DhorizontalEnum && domaintype!=Domain3DEnum) _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+
+	this->GetVerticesCoordinates(&xyz_list);
+	phi=this->GetGroundedPortion(xyz_list);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	return (1-phi)*this->GetArea();
+}
+/*}}}*/
+void       Tria::FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){/*{{{*/
+
+	if(!IsOnBase()) return;
+
+	int approximation;
+	inputs->GetInputValue(&approximation,ApproximationEnum);
+
+	if(approximation==HOApproximationEnum || approximation==SSAApproximationEnum || approximation==SSAHOApproximationEnum){
+		for(int i=0;i<NUMVERTICES;i++){
+			vertexgrounded->SetValue(vertices[i]->Pid(),+9999.,INS_VAL);
+			vertexfloating->SetValue(vertices[i]->Pid(),+9999.,INS_VAL);
+		}
+	}
+	else{
+		/*Intermediaries*/
+		IssmDouble* xyz_list = NULL;
+		IssmDouble* xyz_list_base = NULL;
+		IssmDouble  pressure,water_pressure,sigma_nn,viscosity,bed,base;
+		IssmDouble  bed_normal[2];
+		IssmDouble  epsilon[3]; /* epsilon=[exx,eyy,exy];*/
+		IssmDouble  surface=0,value=0;
+		bool grounded;
+
+		/* Get node coordinates and dof list: */
+		GetVerticesCoordinates(&xyz_list);
+		GetVerticesCoordinatesBase(&xyz_list_base);
+
+		/*Retrieve all inputs we will be needing: */
+		Input* pressure_input = inputs->GetInput(PressureEnum); _assert_(pressure_input);
+		Input* base_input     = inputs->GetInput(BaseEnum);     _assert_(base_input);
+		Input* bed_input      = inputs->GetInput(BedEnum);      _assert_(bed_input);
+		Input* vx_input       = inputs->GetInput(VxEnum);       _assert_(vx_input);
+		Input* vy_input       = inputs->GetInput(VyEnum);       _assert_(vy_input);
+
+		/*Create gauss point in the middle of the basal edge*/
+		Gauss* gauss=NewGaussBase(1);
+		gauss->GaussPoint(0);
+
+		if(!IsFloating()){ 
+			/*Check for basal force only if grounded and touching GL*/
+			//		if(this->inputs->Min(MaskGroundediceLevelsetEnum)==0.){
+			this->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+			this->material->ViscosityFS(&viscosity,2,xyz_list,gauss,vx_input,vy_input,NULL);
+			pressure_input->GetInputValue(&pressure, gauss);
+			base_input->GetInputValue(&base, gauss); 
+
+			/*Compute Stress*/
+			IssmDouble sigma_xx=2.*viscosity*epsilon[0]-pressure;
+			IssmDouble sigma_yy=2.*viscosity*epsilon[1]-pressure;
+			IssmDouble sigma_xy=2.*viscosity*epsilon[2];
+
+			/*Get normal vector to the bed */
+			NormalBase(&bed_normal[0],xyz_list_base);
+
+			/*basalforce*/
+			sigma_nn = sigma_xx*bed_normal[0]*bed_normal[0] + sigma_yy*bed_normal[1]*bed_normal[1] + 2.*sigma_xy*bed_normal[0]*bed_normal[1];
+
+			/*Compute water pressure*/
+			IssmDouble rho_ice   = matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+			IssmDouble rho_water = matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+			IssmDouble gravity   = matpar->GetMaterialParameter(ConstantsGEnum);
+			water_pressure=gravity*rho_water*base;
+
+			/*Compare basal stress to water pressure and determine whether it should ground*/
+			if (sigma_nn<water_pressure) grounded=true;
+			else                         grounded=false;
+		}
+		else{
+			/*Check for basal elevation if floating*/
+			base_input->GetInputValue(&base, gauss);
+			bed_input->GetInputValue(&bed, gauss);
+			if(base<bed) grounded=true;
+			else         grounded=false;
+		}
+		for(int i=0;i<NUMVERTICES;i++){
+			if(grounded) vertexgrounded->SetValue(vertices[i]->Pid(),+1.,INS_VAL);
+			else         vertexfloating->SetValue(vertices[i]->Pid(),+1.,INS_VAL);
+		}
+
+		/*clean up*/
+		delete gauss;
+		xDelete<IssmDouble>(xyz_list);
+		xDelete<IssmDouble>(xyz_list_base);
+	}
+}
+/*}}}*/
+IssmDouble Tria::GetArea(void){/*{{{*/
+
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble x1,y1,x2,y2,x3,y3;
+
+	/*Get xyz list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	x1=xyz_list[0][0]; y1=xyz_list[0][1];
+	x2=xyz_list[1][0]; y2=xyz_list[1][1];
+	x3=xyz_list[2][0]; y3=xyz_list[2][1];
+
+	_assert_(x2*y3 - y2*x3 + x1*y2 - y1*x2 + x3*y1 - y3*x1>0);
+	return (x2*y3 - y2*x3 + x1*y2 - y1*x2 + x3*y1 - y3*x1)/2;
+}
+/*}}}*/
+IssmDouble Tria::GetArea3D(void){/*{{{*/
+
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble x1,y1,z1,x2,y2,z2,x3,y3,z3;
+	IssmDouble detm1,detm2,detm3;
+
+	/*Get xyz list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	x1=xyz_list[0][0]; y1=xyz_list[0][1]; z1=xyz_list[0][2];
+	x2=xyz_list[1][0]; y2=xyz_list[1][1]; z2=xyz_list[1][2];
+	x3=xyz_list[2][0]; y3=xyz_list[2][1]; z3=xyz_list[2][2];
+
+	detm1=x1*y2 - x2*y1 - x1*y3 + x3*y1 + x2*y3 - x3*y2;
+	detm2=y1*z2 - y2*z1 - y1*z3 + y3*z1 + y2*z3 - y3*z2;
+	detm3=x2*z1 - x1*z2 + x1*z3 - x3*z1 - x2*z3 + x3*z2;
+
+	return sqrt(pow(detm1,2) + pow(detm2,2) + pow(detm3,2))/2;
+}
+/*}}}*/
+IssmDouble Tria::GetAreaIce(void){/*{{{*/
+
+	/*return area of element covered by ice*/
+	/*Intermediaries*/
+	int numiceverts;
+	IssmDouble area_fraction;
+	IssmDouble s[2]; // s:fraction of intersected triangle edges that lie inside ice
+	int* indices=NULL;
+
+	this->GetLevelsetIntersection(&indices, &numiceverts, s, MaskIceLevelsetEnum, 0.);
+
+	switch (numiceverts){
+		case 0: // no vertex has ice: element is ice free
+			area_fraction=0.;
+			break;
+		case 1: // one vertex has ice: get area of triangle
+			area_fraction=s[0]*s[1];
+			break;
+		case 2: // two vertices have ice: get area of quadrangle
+			area_fraction=s[0]+s[1]-s[0]*s[1];
+			break;
+		case NUMVERTICES: // all vertices have ice: return triangle area
+			area_fraction=1.;
+			break;
+		default:
+			_error_("Wrong number of ice vertices in Tria::GetAreaIce!");
+			break;
+	}
+	_assert_((area_fraction>=0.) && (area_fraction<=1.));
+
+	xDelete<int>(indices);
+	return area_fraction*this->GetArea();
+}/*}}}*/
+IssmDouble Tria::GetAreaSpherical(void){/*{{{*/
+
+	bool spherical=true;
+	IssmDouble llr_list[NUMVERTICES][3];
+	IssmDouble x1,y1,z1,x2,y2,z2,x3,y3,z3;
+	IssmDouble arc12,arc23,arc31,semi_peri,excess; 
+
+	/*retrieve coordinates: lat,long,radius */
+	::GetVerticesCoordinates(&llr_list[0][0],vertices,NUMVERTICES,spherical);
+	x1=llr_list[0][0]/180*PI; y1=llr_list[0][1]/180*PI; z1=llr_list[0][2];
+	x2=llr_list[1][0]/180*PI; y2=llr_list[1][1]/180*PI; z2=llr_list[1][2];
+	x3=llr_list[2][0]/180*PI; y3=llr_list[2][1]/180*PI; z3=llr_list[2][2];
+
+	/*compute great circle distance between vertices */
+	arc12=2.*asin(sqrt(pow(sin((x2-x1)/2),2.0)+cos(x1)*cos(x2)*pow(sin((y2-y1)/2),2)));
+	arc23=2.*asin(sqrt(pow(sin((x3-x2)/2),2.0)+cos(x2)*cos(x3)*pow(sin((y3-y2)/2),2)));
+	arc31=2.*asin(sqrt(pow(sin((x1-x3)/2),2.0)+cos(x3)*cos(x1)*pow(sin((y1-y3)/2),2)));
+
+	/*semi parameter */ 
+	semi_peri=(arc12+arc23+arc31)/2; 
+
+	/*spherical excess */
+	excess=4.*atan(sqrt(tan(semi_peri/2)*tan((semi_peri-arc12)/2)*tan((semi_peri-arc23)/2)*tan((semi_peri-arc31)/2))); 
+
+	/*area = excess*radius^2 */
+	return excess*pow((z1+z2+z3)/3,2); 
+}
+/*}}}*/
+void       Tria::GetAreaCoordinates(IssmDouble* area_coordinates,IssmDouble* xyz_zero,IssmDouble* xyz_list,int numpoints){/*{{{*/
+	/*Computeportion of the element that is grounded*/ 
+
+	int         i,j,k;
+	IssmDouble  area_init,area_portion;
+	IssmDouble  xyz_bis[NUMVERTICES][3];
+
+	area_init=GetArea();
+
+	/*Initialize xyz_list with original xyz_list of triangle coordinates*/
+	for(j=0;j<3;j++){ 
+		for(k=0;k<3;k++){
+			xyz_bis[j][k]=xyz_list[j*3+k];
+		}
+	}
+	for(i=0;i<numpoints;i++){
+		for(j=0;j<3;j++){ 
+			for(k=0;k<3;k++){
+				/*Change appropriate line*/
+				xyz_bis[j][k]=xyz_zero[i*3+k];
+			}
+
+			/*Compute area fraction*/
+			area_portion=fabs(xyz_bis[1][0]*xyz_bis[2][1] - xyz_bis[1][1]*xyz_bis[2][0] + xyz_bis[0][0]*xyz_bis[1][1] - xyz_bis[0][1]*xyz_bis[1][0] + xyz_bis[2][0]*xyz_bis[0][1] - xyz_bis[2][1]*xyz_bis[0][0])/2.;
+			*(area_coordinates+3*i+j)=area_portion/area_init;
+
+			/*Reinitialize xyz_list*/
+			for(k=0;k<3;k++){
+				/*Reinitialize xyz_list with original coordinates*/
+				xyz_bis[j][k]=xyz_list[j*3+k];
+			}
+		}
+	}
+}
+/*}}}*/
+int        Tria::GetElementType(){/*{{{*/
+
+	/*return TriaRef field*/
+	return this->element_type;
+
+}
+/*}}}*/
+void       Tria::GetGroundedPart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlyfloating){/*{{{*/
+	/*Computeportion of the element that is grounded*/ 
+
+	bool               floating=true;
+	int                point;
+	const IssmPDouble  epsilon= 1.e-15;
+	IssmDouble         gl[NUMVERTICES];
+	IssmDouble         f1,f2;
+
+	/*Recover parameters and values*/
+	GetInputListOnVertices(&gl[0],MaskGroundediceLevelsetEnum);
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+	/*Check that not all nodes are grounded or floating*/
+	if(gl[0]>0 && gl[1]>0 && gl[2]>0){ // All grounded
+		point=0;
+		f1=1.;
+		f2=1.;
+	}
+	else if(gl[0]<0 && gl[1]<0 && gl[2]<0){ //All floating
+		point=0;
+		f1=0.;
+		f2=0.;
+	}
+	else{
+		if(gl[0]*gl[1]*gl[2]<0) floating=false;
+
+		if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+			point=2;
+			f1=gl[2]/(gl[2]-gl[0]);
+			f2=gl[2]/(gl[2]-gl[1]);
+		}
+		else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+			point=0;
+			f1=gl[0]/(gl[0]-gl[1]);
+			f2=gl[0]/(gl[0]-gl[2]);
+		}
+		else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+			point=1;
+			f1=gl[1]/(gl[1]-gl[2]);
+			f2=gl[1]/(gl[1]-gl[0]);
+		}
+	}
+	*point1=point;
+	*fraction1=f1;
+	*fraction2=f2;
+	*mainlyfloating=floating;
+}
+/*}}}*/
+IssmDouble Tria::GetGroundedPortion(IssmDouble* xyz_list){/*{{{*/
+	/*Computeportion of the element that is grounded*/ 
+
+	bool              mainlyfloating = true;
+	int               domaintype,index1,index2;
+	const IssmPDouble epsilon        = 1.e-15;
+	IssmDouble        phi,s1,s2,area_init,area_grounded;
+	IssmDouble        gl[NUMVERTICES];
+	IssmDouble        xyz_bis[3][3];
+
+	/*Recover parameters and values*/
+	parameters->FindParam(&domaintype,DomainTypeEnum);
+	GetInputListOnVertices(&gl[0],MaskGroundediceLevelsetEnum);
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+	if(domaintype==Domain2DverticalEnum){
+		this->EdgeOnBaseIndices(&index1,&index2);
+		if(gl[index1]>0 && gl[index2]>0) phi=1; // All grounded
+		else if(gl[index1]<0 && gl[index2]<0) phi=0; // All floating
+		else if(gl[index1]<0 && gl[index2]>0){ //index2 grounded
+			phi=1./(1.-gl[index1]/gl[index2]);
+		}
+		else if(gl[index2]<0 && gl[index1]>0){ //index1 grounded
+			phi=1./(1.-gl[index2]/gl[index1]);
+		}
+
+	}
+	else if(domaintype==Domain2DhorizontalEnum || domaintype==Domain3DEnum){
+		/*Check that not all nodes are grounded or floating*/
+		if(gl[0]>0 && gl[1]>0 && gl[2]>0){ // All grounded
+			phi=1;
+		}
+		else if(gl[0]<0 && gl[1]<0 && gl[2]<0){ //All floating
+			phi=0;
+		}
+		else{
+			/*Figure out if two nodes are floating or grounded*/
+			if(gl[0]*gl[1]*gl[2]>0) mainlyfloating=false;
+
+			if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+				/*Coordinates of point 2: same as initial point 2*/
+				xyz_bis[2][0]=*(xyz_list+3*2+0);
+				xyz_bis[2][1]=*(xyz_list+3*2+1);
+				xyz_bis[2][2]=*(xyz_list+3*2+2);
+
+				/*Portion of the segments*/
+				s1=gl[2]/(gl[2]-gl[1]);
+				s2=gl[2]/(gl[2]-gl[0]);
+
+				/*New point 1*/
+				xyz_bis[1][0]=*(xyz_list+3*2+0)+s1*(*(xyz_list+3*1+0)-*(xyz_list+3*2+0));
+				xyz_bis[1][1]=*(xyz_list+3*2+1)+s1*(*(xyz_list+3*1+1)-*(xyz_list+3*2+1));
+				xyz_bis[1][2]=*(xyz_list+3*2+2)+s1*(*(xyz_list+3*1+2)-*(xyz_list+3*2+2));
+
+				/*New point 0*/
+				xyz_bis[0][0]=*(xyz_list+3*2+0)+s2*(*(xyz_list+3*0+0)-*(xyz_list+3*2+0));
+				xyz_bis[0][1]=*(xyz_list+3*2+1)+s2*(*(xyz_list+3*0+1)-*(xyz_list+3*2+1));
+				xyz_bis[0][2]=*(xyz_list+3*2+2)+s2*(*(xyz_list+3*0+2)-*(xyz_list+3*2+2));
+			}
+			else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+				/*Coordinates of point 0: same as initial point 2*/
+				xyz_bis[0][0]=*(xyz_list+3*0+0);
+				xyz_bis[0][1]=*(xyz_list+3*0+1);
+				xyz_bis[0][2]=*(xyz_list+3*0+2);
+
+				/*Portion of the segments*/
+				s1=gl[0]/(gl[0]-gl[1]);
+				s2=gl[0]/(gl[0]-gl[2]);
+
+				/*New point 1*/
+				xyz_bis[1][0]=*(xyz_list+3*0+0)+s1*(*(xyz_list+3*1+0)-*(xyz_list+3*0+0));
+				xyz_bis[1][1]=*(xyz_list+3*0+1)+s1*(*(xyz_list+3*1+1)-*(xyz_list+3*0+1));
+				xyz_bis[1][2]=*(xyz_list+3*0+2)+s1*(*(xyz_list+3*1+2)-*(xyz_list+3*0+2));
+
+				/*New point 2*/
+				xyz_bis[2][0]=*(xyz_list+3*0+0)+s2*(*(xyz_list+3*2+0)-*(xyz_list+3*0+0));
+				xyz_bis[2][1]=*(xyz_list+3*0+1)+s2*(*(xyz_list+3*2+1)-*(xyz_list+3*0+1));
+				xyz_bis[2][2]=*(xyz_list+3*0+2)+s2*(*(xyz_list+3*2+2)-*(xyz_list+3*0+2));
+			}
+			else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+				/*Coordinates of point 1: same as initial point 2*/
+				xyz_bis[1][0]=*(xyz_list+3*1+0);
+				xyz_bis[1][1]=*(xyz_list+3*1+1);
+				xyz_bis[1][2]=*(xyz_list+3*1+2);
+
+				/*Portion of the segments*/
+				s1=gl[1]/(gl[1]-gl[0]);
+				s2=gl[1]/(gl[1]-gl[2]);
+
+				/*New point 0*/
+				xyz_bis[0][0]=*(xyz_list+3*1+0)+s1*(*(xyz_list+3*0+0)-*(xyz_list+3*1+0));
+				xyz_bis[0][1]=*(xyz_list+3*1+1)+s1*(*(xyz_list+3*0+1)-*(xyz_list+3*1+1));
+				xyz_bis[0][2]=*(xyz_list+3*1+2)+s1*(*(xyz_list+3*0+2)-*(xyz_list+3*1+2));
+
+				/*New point 2*/
+				xyz_bis[2][0]=*(xyz_list+3*1+0)+s2*(*(xyz_list+3*2+0)-*(xyz_list+3*1+0));
+				xyz_bis[2][1]=*(xyz_list+3*1+1)+s2*(*(xyz_list+3*2+1)-*(xyz_list+3*1+1));
+				xyz_bis[2][2]=*(xyz_list+3*1+2)+s2*(*(xyz_list+3*2+2)-*(xyz_list+3*1+2));
+			}
+
+			/*Compute fraction of grounded element*/
+			GetJacobianDeterminant(&area_init, xyz_list,NULL);
+			GetJacobianDeterminant(&area_grounded, &xyz_bis[0][0],NULL);
+			if(mainlyfloating==true) area_grounded=area_init-area_grounded;
+			phi=area_grounded/area_init;
+		}
+	}
+	else _error_("mesh type "<<EnumToStringx(domaintype)<<"not supported yet ");
+
+	if(phi>1 || phi<0) _error_("Error. Problem with portion of grounded element: value should be between 0 and 1");
+
+	return phi;
+}
+/*}}}*/
+void       Tria::GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){/*{{{*/
+	
+	/* Intermediaries */
+	int i, dir,nrfrontnodes;
+	IssmDouble  levelset[NUMVERTICES];
+
+	/*Recover parameters and values*/
+	GetInputListOnVertices(&levelset[0],levelsetenum);
+
+	int* indicesfront = xNew<int>(NUMVERTICES);
+	/* Get nodes where there is no ice */
+	nrfrontnodes=0;
+	for(i=0;i<NUMVERTICES;i++){
+		if(levelset[i]>=0.){
+			indicesfront[nrfrontnodes]=i;
+			nrfrontnodes++;
+		}
+	}
+
+	_assert_(nrfrontnodes==2);
+
+	/* arrange order of frontnodes such that they are oriented counterclockwise */
+	if((NUMVERTICES+indicesfront[0]-indicesfront[1])%NUMVERTICES!=NUMVERTICES-1){
+		int index=indicesfront[0];
+		indicesfront[0]=indicesfront[1];
+		indicesfront[1]=index;
+	}	
+
+	IssmDouble* xyz_front = xNew<IssmDouble>(3*nrfrontnodes);
+	/* Return nodes */
+	for(i=0;i<nrfrontnodes;i++){
+		for(dir=0;dir<3;dir++){
+			xyz_front[3*i+dir]=xyz_list[3*indicesfront[i]+dir];
+		}
+	}
+
+	*pxyz_front=xyz_front;
+
+	xDelete<int>(indicesfront);
+}/*}}}*/
+void       Tria::GetInputValue(IssmDouble* pvalue,Node* node,int enumtype){/*{{{*/
+
+	Input* input=inputs->GetInput(enumtype);
+	if(!input) _error_("No input of type " << EnumToStringx(enumtype) << " found in tria");
+
+	GaussTria* gauss=new GaussTria();
+	gauss->GaussVertex(this->GetNodeIndex(node));
+
+	input->GetInputValue(pvalue,gauss);
+	delete gauss;
+}
+/*}}}*/
+void       Tria::GetLevelCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum,IssmDouble level){/*{{{*/
+
+	/* Intermediaries */
+	int i, dir,nrfrontnodes;
+	IssmDouble  levelset[NUMVERTICES];
+
+	/*Recover parameters and values*/
+	GetInputListOnVertices(&levelset[0],levelsetenum);
+
+	int* indicesfront = xNew<int>(NUMVERTICES);
+	/* Get nodes where there is no ice */
+	nrfrontnodes=0;
+	for(i=0;i<NUMVERTICES;i++){
+		if(levelset[i]==level){
+			indicesfront[nrfrontnodes]=i;
+			nrfrontnodes++;
+		}
+	}
+
+	_assert_(nrfrontnodes==2);
+
+	/* arrange order of frontnodes such that they are oriented counterclockwise */
+	if((NUMVERTICES+indicesfront[0]-indicesfront[1])%NUMVERTICES!=NUMVERTICES-1){
+		int index=indicesfront[0];
+		indicesfront[0]=indicesfront[1];
+		indicesfront[1]=index;
+	}	
+
+	IssmDouble* xyz_front = xNew<IssmDouble>(3*nrfrontnodes);
+	/* Return nodes */
+	for(i=0;i<nrfrontnodes;i++){
+		for(dir=0;dir<3;dir++){
+			xyz_front[3*i+dir]=xyz_list[3*indicesfront[i]+dir];
+		}
+	}
+
+	*pxyz_front=xyz_front;
+
+	xDelete<int>(indicesfront);
+}/*}}}*/
+void			Tria::GetLevelsetIntersection(int** pindices, int* pnumiceverts, IssmDouble* fraction, int levelset_enum, IssmDouble level){/*{{{*/
+	
+	/* GetLevelsetIntersection computes: 
+	 * 1. indices of element, sorted in [iceverts, noiceverts] in counterclockwise fashion,
+	 * 2. fraction of intersected triangle edges intersected by levelset, lying below level*/
+
+	/*Intermediaries*/
+	int i, numiceverts, numnoiceverts;
+	int ind0, ind1, lastindex;
+	int indices_ice[NUMVERTICES],indices_noice[NUMVERTICES];
+	IssmDouble lsf[NUMVERTICES];
+	int* indices = xNew<int>(NUMVERTICES);
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&lsf[0],levelset_enum);
+
+	/* Determine distribution of ice over element.
+	 * Exploit: ice/no-ice parts are connected, so find starting vertex of segment*/
+	lastindex=0;
+	for(i=0;i<NUMVERTICES;i++){ // go backwards along vertices, and check for sign change
+		ind0=(NUMVERTICES-i)%NUMVERTICES;
+		ind1=(ind0-1+NUMVERTICES)%NUMVERTICES;
+		if((lsf[ind0]-level)*(lsf[ind1]-level)<=0.){ // levelset has been crossed, find last index belonging to segment
+			if(lsf[ind1]==level) //if levelset intersects 2nd vertex, choose this vertex as last
+				lastindex=ind1;
+			else
+				lastindex=ind0;
+			break;
+		}
+	}
+
+	numiceverts=0;
+	numnoiceverts=0;
+	for(i=0;i<NUMVERTICES;i++){
+		ind0=(lastindex+i)%NUMVERTICES;
+		if(lsf[i]<=level){
+			indices_ice[numiceverts]=i;
+			numiceverts++;
+		}
+		else{
+			indices_noice[numnoiceverts]=i;
+			numnoiceverts++;
+		}
+	}
+	//merge indices 
+	for(i=0;i<numiceverts;i++){indices[i]=indices_ice[i];}
+	for(i=0;i<numnoiceverts;i++){indices[numiceverts+i]=indices_noice[i];}
+
+	switch (numiceverts){
+		case 0: // no vertex has ice: element is ice free, no intersection
+			for(i=0;i<2;i++)
+				fraction[i]=0.;
+			break;
+		case 1: // one vertex has ice:
+			for(i=0;i<2;i++){
+				fraction[i]=(level-lsf[indices[0]])/(lsf[indices[numiceverts+i]]-lsf[indices[0]]);
+			}
+			break;
+		case 2: // two vertices have ice: fraction is computed from first ice vertex to last in CCW fashion
+			for(i=0;i<2;i++){
+				fraction[i]=(level-lsf[indices[i]])/(lsf[indices[numiceverts]]-lsf[indices[i]]);
+			}
+			break;
+		case NUMVERTICES: // all vertices have ice: return triangle area
+			for(i=0;i<2;i++)
+				fraction[i]=1.;
+			break;
+		default:
+			_error_("Wrong number of ice vertices in Tria::GetLevelsetIntersection!");
+			break;
+	}
+
+	*pindices=indices;
+	*pnumiceverts=numiceverts;
+}
+/*}}}*/
+void       Tria::GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* gl){/*{{{*/
+	
+	/*Computeportion of the element that has a positive levelset*/ 
+
+	bool               negative=true;
+	int                point;
+	const IssmPDouble  epsilon= 1.e-15;
+	IssmDouble         f1,f2;
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+	/*Check that not all nodes are positive or negative*/
+	if(gl[0]>0 && gl[1]>0 && gl[2]>0){ // All positive
+		point=0;
+		f1=1.;
+		f2=1.;
+	}
+	else if(gl[0]<0 && gl[1]<0 && gl[2]<0){ //All negative
+		point=0;
+		f1=0.;
+		f2=0.;
+	}
+	else{
+		if(gl[0]*gl[1]*gl[2]<0) negative=false;
+
+		if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+			point=2;
+			f1=gl[2]/(gl[2]-gl[0]);
+			f2=gl[2]/(gl[2]-gl[1]);
+		}
+		else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+			point=0;
+			f1=gl[0]/(gl[0]-gl[1]);
+			f2=gl[0]/(gl[0]-gl[2]);
+		}
+		else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+			point=1;
+			f1=gl[1]/(gl[1]-gl[2]);
+			f2=gl[1]/(gl[1]-gl[0]);
+		}
+	}
+	*point1=point;
+	*fraction1=f1;
+	*fraction2=f2;
+	*mainlynegative=negative;
+}
+/*}}}*/
+Node*      Tria::GetNode(int node_number){/*{{{*/
+	_assert_(node_number>=0); 
+	_assert_(node_number<this->NumberofNodes(this->element_type)); 
+	return this->nodes[node_number];
+
+}/*}}}*/
+int        Tria::GetNodeIndex(Node* node){/*{{{*/
+
+	_assert_(nodes);
+	for(int i=0;i<NUMVERTICES;i++){
+		if(node==nodes[i])
+		 return i;
+	}
+	_error_("Node provided not found among element nodes");
+}
+/*}}}*/
+int        Tria::GetNumberOfNodes(void){/*{{{*/
+	if (this->nodes) return this->NumberofNodes(this->element_type);
+	else return 0;
+}
+/*}}}*/
+int        Tria::GetNumberOfNodes(int enum_type){/*{{{*/
+	return this->NumberofNodes(enum_type);
+}
+/*}}}*/
+int        Tria::GetNumberOfVertices(void){/*{{{*/
+	return NUMVERTICES;
+}
+/*}}}*/
+void       Tria::GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution, int enum_type){/*{{{*/
+
+	int        *doflist = NULL;
+	IssmDouble  value;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(this->element_type);
+
+	/*Fetch dof list and allocate solution vector*/
+	GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values = xNew<IssmDouble>(numnodes);
+
+	/*Get inputs*/
+	Input* enum_input=inputs->GetInput(enum_type); _assert_(enum_input);
+
+	/*Ok, we have the values, fill in the array: */
+	GaussTria* gauss=new GaussTria();
+	for(int i=0;i<numnodes;i++){
+		gauss->GaussNode(this->element_type,i);
+
+		enum_input->GetInputValue(&value,gauss);
+		values[i]=value;
+	}
+
+	solution->SetValues(numnodes,doflist,values,INS_VAL);
+
+	/*Free ressources:*/
+	xDelete<int>(doflist);
+	xDelete<IssmDouble>(values);
+	delete gauss;
+}
+/*}}}*/
+void       Tria::GetVectorFromControlInputs(Vector<IssmDouble>* vector,int control_enum,int control_index,const char* data,bool onsid){/*{{{*/
+
+	int vertexidlist[NUMVERTICES];
+	Input *input=NULL;
+
+	/*Get out if this is not an element input*/
+	if(!IsInput(control_enum)) _error_("Enum "<<EnumToStringx(control_enum)<<" is not in IsInput");
+
+	/*Prepare index list*/
+	GradientIndexing(&vertexidlist[0],control_index,onsid);
+
+	/*Get input (either in element or material)*/
+	input=(Input*)this->inputs->GetInput(control_enum);   _assert_(input);
+
+	/*Check that it is a ControlInput*/
+	if (input->ObjectEnum()!=ControlInputEnum){
+		_error_("input " << EnumToStringx(control_enum) << " is not a ControlInput");
+	}
+
+	((ControlInput*)input)->GetVectorFromInputs(vector,&vertexidlist[0],data);
+}
+/*}}}*/
+void       Tria::GetVerticesCoordinatesBase(IssmDouble** pxyz_list){/*{{{*/
+
+	int        indices[2];
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Element XYZ list*/
+	::GetVerticesCoordinates(&xyz_list[0][0],this->vertices,NUMVERTICES);
+
+	/*Allocate Output*/
+	IssmDouble* xyz_list_edge = xNew<IssmDouble>(2*3);
+	this->EdgeOnBaseIndices(&indices[0],&indices[1]);
+	for(int i=0;i<2;i++) for(int j=0;j<2;j++) xyz_list_edge[i*3+j]=xyz_list[indices[i]][j];
+
+	/*Assign output pointer*/
+	*pxyz_list = xyz_list_edge;
+
+}/*}}}*/
+void       Tria::GetVerticesCoordinatesTop(IssmDouble** pxyz_list){/*{{{*/
+
+	int        indices[2];
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Element XYZ list*/
+	::GetVerticesCoordinates(&xyz_list[0][0],this->vertices,NUMVERTICES);
+
+	/*Allocate Output*/
+	IssmDouble* xyz_list_edge = xNew<IssmDouble>(2*3);
+	this->EdgeOnSurfaceIndices(&indices[0],&indices[1]);
+	for(int i=0;i<2;i++) for(int j=0;j<2;j++) xyz_list_edge[i*3+j]=xyz_list[indices[i]][j];
+
+	/*Assign output pointer*/
+	*pxyz_list = xyz_list_edge;
+
+}/*}}}*/
+IssmDouble Tria::GroundedArea(void){/*{{{*/
+
+	/*Intermediaries*/
+	int         domaintype;
+	IssmDouble  phi;
+	IssmDouble *xyz_list  = NULL;
+
+	if(!IsIceInElement())return 0.;
+
+	/*Get problem dimension*/
+	this->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype!=Domain2DhorizontalEnum && domaintype!=Domain3DEnum) _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+
+	this->GetVerticesCoordinates(&xyz_list);
+	phi=this->GetGroundedPortion(xyz_list);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	return phi*this->GetArea();
+}
+/*}}}*/
+bool       Tria::HasEdgeOnBase(){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	IssmDouble sum;
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&values[0],MeshVertexonbaseEnum);
+	sum = values[0]+values[1]+values[2];
+
+	_assert_(sum==0. || sum==1. || sum==2.);
+
+	if(sum==3.)  _error_("Two edges on bed not supported yet...");
+
+	if(sum>1.){
+		return true;
+	}
+	else{
+		return false;
+	}
+}
+/*}}}*/
+bool       Tria::HasEdgeOnSurface(){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	IssmDouble sum;
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&values[0],MeshVertexonsurfaceEnum);
+	sum = values[0]+values[1]+values[2];
+
+	_assert_(sum==0. || sum==1. || sum==2.);
+
+	if(sum==3.)  _error_("Two edges on surface not supported yet...");
+
+	if(sum>1.){
+		return true;
+	}
+	else{
+		return false;
+	}
+}
+/*}}}*/
+IssmDouble Tria::IceMass(void){/*{{{*/
+
+	IssmDouble rho_ice; 
+	
+	if(!IsIceInElement())return 0.; //do not contribute to the volume of the ice!
+
+	/*recover ice density: */
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+
+	return rho_ice*this->IceVolume();
+}
+/*}}}*/
+IssmDouble Tria::IceVolume(void){/*{{{*/
+
+	/*The volume of a truncated prism is area_base * 1/numedges sum(length of edges)*/
+
+	/*Intermediaries*/
+	int i, numiceverts;
+	IssmDouble area_base,surface,base,Haverage;
+	IssmDouble Haux[NUMVERTICES], surfaces[NUMVERTICES], bases[NUMVERTICES];
+	IssmDouble s[2]; // s:fraction of intersected triangle edges, that lies inside ice
+	int* indices=NULL;
+	IssmDouble* H=NULL;
+
+	if(!IsIceInElement())return 0.;
+
+	int domaintype;
+	parameters->FindParam(&domaintype,DomainTypeEnum);
+
+	if(false && IsIcefront()){
+		area_base=this->GetAreaIce();
+		//Assumption: linear ice thickness profile on element. 
+		//Hence ice thickness at intersection of levelset function with triangle edge is linear interpolation of ice thickness at vertices.
+		this->GetLevelsetIntersection(&indices, &numiceverts, s, MaskIceLevelsetEnum, 0.);
+		GetInputListOnVertices(&surfaces[0],SurfaceEnum);
+		GetInputListOnVertices(&bases[0],BaseEnum);
+		for(i=0;i<NUMVERTICES;i++) Haux[i]= surfaces[indices[i]]-bases[indices[i]]; //sort thicknesses in ice/noice
+		int numthk=numiceverts+2;
+		H=xNew<IssmDouble>(numthk);
+		switch(numiceverts){
+			case 1: // average over triangle 
+				H[0]=Haux[0];
+				H[1]=Haux[0]+s[0]*(Haux[1]-Haux[0]);
+				H[2]=Haux[0]+s[1]*(Haux[2]-Haux[0]);
+				break;
+			case 2: // average over quadrangle
+				H[0]=Haux[0];
+				H[1]=Haux[1];
+				H[2]=Haux[0]+s[0]*(Haux[2]-Haux[0]);
+				H[3]=Haux[1]+s[1]*(Haux[2]-Haux[1]);
+				break;
+			default:
+				_error_("Number of ice covered vertices wrong in Tria::IceVolume()");
+				break;
+		}
+		Haverage=0.;
+		for(i=0;i<numthk;i++)	Haverage+=H[i];
+		Haverage/=IssmDouble(numthk);
+	}
+	else{
+		/*First get back the area of the base*/
+		area_base=this->GetArea();
+
+		/*Now get the average height*/
+		Input* surface_input = inputs->GetInput(SurfaceEnum); _assert_(surface_input);
+		Input* base_input     = inputs->GetInput(BaseEnum);     _assert_(base_input);
+		surface_input->GetInputAverage(&surface);
+		base_input->GetInputAverage(&base);
+		Haverage=surface-base;
+	}
+
+	/*Cleanup & return: */
+	xDelete<int>(indices);
+	xDelete<IssmDouble>(H);
+
+	if(domaintype==Domain2DverticalEnum){
+	  return area_base;
+	}
+	else{
+	  return area_base*Haverage;
+	}
+}
+/*}}}*/
+IssmDouble Tria::IceVolumeAboveFloatation(void){/*{{{*/
+
+	/*The volume above floatation: H + rho_water/rho_ice * bathymetry */
+	IssmDouble rho_ice,rho_water;
+	IssmDouble base,surface,bed,bathymetry;
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	if(!IsIceInElement() || IsFloating())return 0;
+
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	rho_water=matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*First calculate the area of the base (cross section triangle)
+	 * http://en.wikipedia.org/wiki/Triangle
+	 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/
+	base = 1./2. * fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
+
+	/*Now get the average height and bathymetry*/
+	Input* surface_input    = inputs->GetInput(SurfaceEnum);    _assert_(surface_input);
+	Input* base_input        = inputs->GetInput(BaseEnum);        _assert_(base_input);
+	Input* bed_input = inputs->GetInput(BedEnum); _assert_(bed_input);
+	surface_input->GetInputAverage(&surface);
+	base_input->GetInputAverage(&bed);
+	bed_input->GetInputAverage(&bathymetry);
+	
+	/*Return: */
+	return base*(surface-bed+min(rho_water/rho_ice*bathymetry,0.));
+}
+/*}}}*/
+void       Tria::InputControlUpdate(IssmDouble scalar,bool save_parameter){/*{{{*/
+
+	/*Intermediary*/
+	int    num_controls;
+	int*   control_type=NULL;
+	Input* input=NULL;
+
+	/*retrieve some parameters: */
+	this->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	this->parameters->FindParam(&control_type,NULL,InversionControlParametersEnum);
+
+	for(int i=0;i<num_controls;i++){
+		input=(Input*)this->inputs->GetInput(control_type[i]);   _assert_(input);
+		if (input->ObjectEnum()!=ControlInputEnum){
+			_error_("input " << EnumToStringx(control_type[i]) << " is not a ControlInput");
+		}
+
+		((ControlInput*)input)->UpdateValue(scalar);
+		((ControlInput*)input)->Constrain();
+		if (save_parameter) ((ControlInput*)input)->SaveValue();
+
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(control_type);
+}
+/*}}}*/
+void       Tria::InputDepthAverageAtBase(int enum_type,int average_enum_type){/*{{{*/
+
+	/*New input*/
+	Input* oldinput=NULL;
+	Input* newinput=NULL;
+
+	/*copy input of enum_type*/
+	oldinput=(Input*)this->inputs->GetInput(enum_type);
+	if(!oldinput)_error_("could not find old input with enum: " << EnumToStringx(enum_type));
+	newinput=(Input*)oldinput->copy();
+
+	/*Assign new name (average)*/
+	newinput->ChangeEnum(average_enum_type);
+
+	/*Add new input to current element*/
+	this->inputs->AddInput((Input*)newinput);
+}
+/*}}}*/
+void       Tria::InputScale(int enum_type,IssmDouble scale_factor){/*{{{*/
+
+	Input* input=NULL;
+
+	/*Make a copy of the original input: */
+	input=(Input*)this->inputs->GetInput(enum_type);
+	if(!input)_error_("could not find old input with enum: " << EnumToStringx(enum_type));
+
+	/*Scale: */
+	input->Scale(scale_factor);
+}
+/*}}}*/
+void       Tria::InputUpdateFromIoModel(int index, IoModel* iomodel){ //i is the element index/*{{{*/
+
+	/*Intermediaries*/
+	int        i,j;
+	int        tria_vertex_ids[3];
+	IssmDouble nodeinputs[3];
+	IssmDouble cmmininputs[3];
+	IssmDouble cmmaxinputs[3];
+	bool       control_analysis   = false;
+	int        num_control_type,num_responses;
+	char**     controls = NULL;
+	IssmDouble yts;
+
+	/*Get parameters: */
+	iomodel->FindConstant(&yts,"md.constants.yts"); 
+	iomodel->FindConstant(&control_analysis,"md.inversion.iscontrol");
+	if(control_analysis) iomodel->FindConstant(&num_control_type,"md.inversion.num_control_parameters");
+	if(control_analysis) iomodel->FindConstant(&num_responses,"md.inversion.num_cost_functions");
+
+	/*Recover vertices ids needed to initialize inputs*/
+	for(i=0;i<3;i++){ 
+		tria_vertex_ids[i]=reCast<int>(iomodel->elements[3*index+i]); //ids for vertices are in the elements array from Matlab
+	}
+
+	/*Need to know the type of approximation for this element*/
+	if(iomodel->Data("md.flowequation.element_equation")){
+		this->inputs->AddInput(new IntInput(ApproximationEnum,IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[index]))));
+	}
+
+	/*Control Inputs*/
+	if (control_analysis){
+		iomodel->FindConstant(&controls,NULL,"md.inversion.control_parameters");
+		for(i=0;i<num_control_type;i++){
+			_assert_(controls[i]);
+			int control = StringToEnumx(controls[i]);
+			switch(control){
+				case BalancethicknessThickeningRateEnum:
+					if (iomodel->Data("md.balancethickness.thickening_rate")){
+						for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data("md.balancethickness.thickening_rate")[tria_vertex_ids[j]-1];
+						for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;
+						for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;
+						this->inputs->AddInput(new ControlInput(BalancethicknessThickeningRateEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+					}
+					break;
+				case VxEnum:
+					if (iomodel->Data("md.initialization.vx")){
+						for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data("md.initialization.vx")[tria_vertex_ids[j]-1];
+						for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;
+						for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;
+						this->inputs->AddInput(new ControlInput(VxEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+					}
+					break;
+				case VyEnum:
+					if (iomodel->Data("md.initialization.vy")){
+						for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data("md.initialization.vy")[tria_vertex_ids[j]-1];
+						for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;
+						for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;
+						this->inputs->AddInput(new ControlInput(VyEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+					}
+					break;
+				case ThicknessEnum:
+					if(iomodel->Data("md.geometry.thickness")){
+						for(j=0;j<NUMVERTICES;j++) nodeinputs[j]=iomodel->Data("md.geometry.thickness")[tria_vertex_ids[j]-1];
+						for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];
+						for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];
+						this->inputs->AddInput(new ControlInput(ThicknessEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+					}
+					break;
+				case FrictionCoefficientEnum:
+					if (iomodel->Data("md.friction.coefficient")){
+						for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data("md.friction.coefficient")[tria_vertex_ids[j]-1];
+						for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];
+						for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];
+						this->inputs->AddInput(new ControlInput(FrictionCoefficientEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+					}
+					break;
+				case MaterialsRheologyBbarEnum:
+					if(iomodel->Data("md.materials.rheology_B")){
+						for(j=0;j<NUMVERTICES;j++) nodeinputs[j]=iomodel->Data("md.materials.rheology_B")[tria_vertex_ids[j]-1];
+						for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];
+						for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];
+						this->inputs->AddInput(new ControlInput(MaterialsRheologyBbarEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+					}
+					break;
+				case DamageDbarEnum:
+					if(iomodel->Data("md.damage.D")){
+						for(j=0;j<NUMVERTICES;j++) nodeinputs[j]=iomodel->Data("md.damage.D")[tria_vertex_ids[j]-1];
+						for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];
+						for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];
+						this->inputs->AddInput(new ControlInput(DamageDbarEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+					}
+					break;
+				default:
+					_error_("Control " << EnumToStringx(control) << " not implemented yet");
+			}
+		}
+		for(i=0;i<num_control_type;i++) xDelete<char>(controls[i]);
+		xDelete<char*>(controls);
+	}
+
+	/*DatasetInputs*/
+	if (control_analysis && iomodel->Data("md.inversion.cost_functions_coefficients")){
+	
+		/*Generate cost functions associated with the iomodel*/
+		char**	cost_functions			= NULL;
+		int*		cost_functions_enums = NULL;
+		int		num_cost_functions;
+
+		iomodel->FindConstant(&num_cost_functions,"md.inversion.num_cost_functions");
+		iomodel->FindConstant(&cost_functions,&num_cost_functions,"md.inversion.cost_functions");
+		if(num_cost_functions<1) _error_("No cost functions found");
+		cost_functions_enums=xNew<int>(num_cost_functions);
+		for(j=0;j<num_cost_functions;j++){ cost_functions_enums[j]=StringToEnumx(cost_functions[j]); }
+
+		/*Create inputs and add to DataSetInput*/
+		DatasetInput* datasetinput=new DatasetInput(InversionCostFunctionsCoefficientsEnum);
+		for(i=0;i<num_responses;i++){
+			for(j=0;j<3;j++)nodeinputs[j]=iomodel->Data("md.inversion.cost_functions_coefficients")[(tria_vertex_ids[j]-1)*num_responses+i];
+			datasetinput->AddInput(new TriaInput(InversionCostFunctionsCoefficientsEnum,nodeinputs,P1Enum),cost_functions_enums[i]);
+		}
+
+		/*Add datasetinput to element inputs*/
+		this->inputs->AddInput(datasetinput);
+
+		/*Clean up cost functions*/
+		xDelete<int>(cost_functions_enums);
+		for(int j=0;j<num_cost_functions;j++) xDelete<char>(cost_functions[j]);
+		xDelete<char*>(cost_functions);
+	}
+}
+/*}}}*/
+void       Tria::InputUpdateFromSolutionOneDof(IssmDouble* solution,int enum_type){/*{{{*/
+
+	/*Intermediary*/
+	int* doflist = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(this->element_type);
+
+	/*Fetch dof list and allocate solution vector*/
+	GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values    = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(int i=0;i<numnodes;i++){
+		values[i]=solution[doflist[i]];
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Add input to the element: */
+	this->inputs->AddInput(new TriaInput(enum_type,values,P1Enum));
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<int>(doflist);
+}
+/*}}}*/
+void       Tria::InputUpdateFromVector(IssmDouble* vector, int name, int type){/*{{{*/
+
+	/*Check that name is an element input*/
+	if(!IsInput(name)) _error_("Enum "<<EnumToStringx(name)<<" is not in IsInput");
+
+	int         numnodes;
+	int        *doflist = NULL;
+	IssmDouble *values  = NULL;
+
+	switch(type){
+	case VertexPIdEnum: 
+		values = xNew<IssmDouble>(NUMVERTICES);
+		for(int i=0;i<NUMVERTICES;i++){
+			values[i]=vector[this->vertices[i]->Pid()];
+		}
+		/*update input*/
+		this->inputs->AddInput(new TriaInput(name,values,P1Enum));
+		break;
+
+	case VertexSIdEnum: 
+		values = xNew<IssmDouble>(NUMVERTICES);
+		for(int i=0;i<NUMVERTICES;i++){
+			values[i]=vector[this->vertices[i]->Sid()];
+		}
+		/*update input*/
+		this->inputs->AddInput(new TriaInput(name,values,P1Enum));
+		break;
+
+	case NodesEnum:
+		/*Get number of nodes and dof list: */
+		numnodes = this->NumberofNodes(this->element_type);
+		values   = xNew<IssmDouble>(numnodes);
+		GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+
+		for(int i=0;i<numnodes;i++){
+			values[i]=vector[doflist[i]];
+			if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in vector");
+			if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in vector");
+		}
+		this->inputs->AddInput(new TriaInput(name,values,this->element_type));
+		break;
+
+	case NodeSIdEnum:
+		/*Get number of nodes and dof list: */
+		numnodes = this->NumberofNodes(this->element_type);
+		values   = xNew<IssmDouble>(numnodes);
+
+		for(int i=0;i<numnodes;i++){
+			values[i]=vector[nodes[i]->Sid()];
+			if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in vector");
+			if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in vector");
+		}
+		this->inputs->AddInput(new TriaInput(name,values,this->element_type));
+		break;
+
+	default:
+		_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
+	}
+
+	/*Clean-up*/
+	xDelete<int>(doflist);
+	xDelete<IssmDouble>(values);
+
+}
+/*}}}*/
+bool       Tria::IsFaceOnBoundary(void){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	IssmDouble sum;
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&values[0],MeshVertexonboundaryEnum);
+	sum = values[0]+values[1]+values[2];
+
+	_assert_(sum==0. || sum==1. || sum==2.);
+
+	if(sum==3.)  _error_("Two edges on boundary not supported yet...");
+
+	if(sum>1.){
+		return true;
+	}
+	else{
+		return false;
+	}
+}/*}}}*/
+bool       Tria::IsIcefront(void){/*{{{*/
+
+	bool isicefront;
+	int i,nrice;
+   IssmDouble ls[NUMVERTICES];
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&ls[0],MaskIceLevelsetEnum);
+
+	/* If only one vertex has ice, there is an ice front here */
+	isicefront=false;
+	if(IsIceInElement()){
+		nrice=0;       
+		for(i=0;i<NUMVERTICES;i++)
+			if(ls[i]<0.) nrice++;
+		if(nrice==1) isicefront= true;
+	}
+	return isicefront;
+}/*}}}*/
+bool       Tria::IsNodeOnShelfFromFlags(IssmDouble* flags){/*{{{*/
+
+	int  i;
+	bool shelf=false;
+
+	for(i=0;i<NUMVERTICES;i++){
+		if (flags[vertices[i]->Pid()]<0.){
+			shelf=true;
+			break;
+		}
+	}
+	return shelf;
+}
+/*}}}*/
+bool       Tria::IsOnBase(){/*{{{*/
+
+	int domaintype;
+	this->parameters->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:
+			return HasEdgeOnBase();
+		case Domain2DhorizontalEnum:
+			return true;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}
+/*}}}*/
+bool       Tria::IsOnSurface(){/*{{{*/
+
+	int domaintype;
+	this->parameters->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:
+			return HasEdgeOnSurface();
+		case Domain2DhorizontalEnum:
+			return true;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}
+/*}}}*/
+bool       Tria::IsZeroLevelset(int levelset_enum){/*{{{*/
+
+	bool iszerols;
+	IssmDouble ls[NUMVERTICES];
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&ls[0],levelset_enum);
+
+	/*If the level set is awlays <0, there is no ice front here*/
+	iszerols= false;
+	if(IsIceInElement()){
+		if(ls[0]*ls[1]<0. || ls[0]*ls[2]<0. || (ls[0]*ls[1]*ls[2]==0. && ls[0]*ls[1]+ls[0]*ls[2]+ls[1]*ls[2]<=0.)){
+			iszerols = true;
+		}
+	}
+
+	return iszerols;
+}
+/*}}}*/
+void       Tria::JacobianDeterminant(IssmDouble* pJdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetJacobianDeterminant(pJdet,xyz_list,(GaussTria*)gauss);
+
+}
+/*}}}*/
+void       Tria::JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetSegmentJacobianDeterminant(pJdet,xyz_list_base,(GaussTria*)gauss);
+
+}
+/*}}}*/
+void       Tria::JacobianDeterminantSurface(IssmDouble* pJdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetSegmentJacobianDeterminant(pJdet,xyz_list,(GaussTria*)gauss);
+
+}
+/*}}}*/
+void       Tria::JacobianDeterminantTop(IssmDouble* pJdet,IssmDouble* xyz_list_top,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetSegmentJacobianDeterminant(pJdet,xyz_list_top,(GaussTria*)gauss);
+
+}
+/*}}}*/
+IssmDouble Tria::Masscon(IssmDouble* levelset){ /*{{{*/
+
+
+	/*intermediary: */
+	IssmDouble* values=NULL;
+	Input*      thickness_input=NULL;
+	IssmDouble  thickness;
+	IssmDouble  weight;
+	IssmDouble  Jdet;
+	IssmDouble  volume;
+	IssmDouble  rho_ice;
+	IssmDouble* xyz_list=NULL;
+	int         point1;
+	IssmDouble  fraction1,fraction2;
+	bool        mainlynegative=true;
+	
+	/*Output:*/
+	volume=0;
+
+	/* Get node coordinates and dof list: */
+	GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve inputs required:*/
+	thickness_input=this->GetInput(ThicknessEnum); _assert_(thickness_input);
+	
+	/*Retrieve material parameters: */
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+
+	/*Retrieve values of the levelset defining the masscon: */
+	values = xNew<IssmDouble>(NUMVERTICES);
+	for(int i=0;i<NUMVERTICES;i++){
+		values[i]=levelset[this->vertices[i]->Sid()];
+	}
+		
+	/*Ok, use the level set values to figure out where we put our gaussian points:*/
+	this->GetLevelsetPositivePart(&point1,&fraction1,&fraction2,&mainlynegative,values);
+	Gauss* gauss = this->NewGauss(point1,fraction1,fraction2,mainlynegative,4);
+
+	volume=0;
+
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		this->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		thickness_input->GetInputValue(&thickness, gauss);
+
+		volume+=thickness*gauss->weight*Jdet;
+	}
+
+	/* clean up and Return: */
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(values);
+	delete gauss;
+	return rho_ice*volume;
+}
+/*}}}*/
+IssmDouble Tria::MassFlux(IssmDouble x1, IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id){/*{{{*/
+
+	int        domaintype;
+	IssmDouble mass_flux=0.;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble normal[2];
+	IssmDouble length,rho_ice;
+	IssmDouble h1,h2;
+	IssmDouble vx1,vx2,vy1,vy2;
+	GaussTria* gauss_1=NULL;
+	GaussTria* gauss_2=NULL;
+
+	/*Get material parameters :*/
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+
+	/*First off, check that this segment belongs to this element: */
+	if (segment_id!=this->id)_error_("error message: segment with id " << segment_id << " does not belong to element with id:" << this->id);
+
+	/*Get xyz list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*get area coordinates of 0 and 1 locations: */
+	gauss_1=new GaussTria();
+	gauss_1->GaussFromCoords(x1,y1,&xyz_list[0][0]);
+	gauss_2=new GaussTria();
+	gauss_2->GaussFromCoords(x2,y2,&xyz_list[0][0]);
+
+	normal[0]=cos(atan2(x1-x2,y2-y1));
+	normal[1]=sin(atan2(x1-x2,y2-y1));
+
+	length=sqrt(pow(x2-x1,2)+pow(y2-y1,2));
+
+	Input* thickness_input=inputs->GetInput(ThicknessEnum); _assert_(thickness_input);
+	this->parameters->FindParam(&domaintype,DomainTypeEnum);
+	Input* vx_input=NULL;
+	Input* vy_input=NULL;
+	if(domaintype==Domain2DhorizontalEnum){
+		vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);
+		vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);
+	}
+	else{
+		vx_input=inputs->GetInput(VxAverageEnum); _assert_(vx_input);
+		vy_input=inputs->GetInput(VyAverageEnum); _assert_(vy_input);
+	}
+
+	thickness_input->GetInputValue(&h1, gauss_1);
+	thickness_input->GetInputValue(&h2, gauss_2);
+	vx_input->GetInputValue(&vx1,gauss_1);
+	vx_input->GetInputValue(&vx2,gauss_2);
+	vy_input->GetInputValue(&vy1,gauss_1);
+	vy_input->GetInputValue(&vy2,gauss_2);
+
+	mass_flux= rho_ice*length*(  
+				(ONETHIRD*(h1-h2)*(vx1-vx2)+0.5*h2*(vx1-vx2)+0.5*(h1-h2)*vx2+h2*vx2)*normal[0]+
+				(ONETHIRD*(h1-h2)*(vy1-vy2)+0.5*h2*(vy1-vy2)+0.5*(h1-h2)*vy2+h2*vy2)*normal[1]
+				);
+
+	/*clean up and return:*/
+	delete gauss_1;
+	delete gauss_2;
+	return mass_flux;
+}
+/*}}}*/
+IssmDouble Tria::MassFlux(IssmDouble* segment){/*{{{*/
+
+	int        domaintype;
+	IssmDouble mass_flux=0.;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble normal[2];
+	IssmDouble length,rho_ice;
+	IssmDouble x1,y1,x2,y2,h1,h2;
+	IssmDouble vx1,vx2,vy1,vy2;
+	GaussTria* gauss_1=NULL;
+	GaussTria* gauss_2=NULL;
+
+	/*Get material parameters :*/
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+
+	/*First off, check that this segment belongs to this element: */
+	if (reCast<int>(*(segment+4))!=this->id)_error_("error message: segment with id " << reCast<int>(*(segment+4)) << " does not belong to element with id:" << this->id);
+
+	/*Recover segment node locations: */
+	x1=*(segment+0); y1=*(segment+1); x2=*(segment+2); y2=*(segment+3);
+
+	/*Get xyz list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*get area coordinates of 0 and 1 locations: */
+	gauss_1=new GaussTria();
+	gauss_1->GaussFromCoords(x1,y1,&xyz_list[0][0]);
+	gauss_2=new GaussTria();
+	gauss_2->GaussFromCoords(x2,y2,&xyz_list[0][0]);
+
+	normal[0]=cos(atan2(x1-x2,y2-y1));
+	normal[1]=sin(atan2(x1-x2,y2-y1));
+
+	length=sqrt(pow(x2-x1,2)+pow(y2-y1,2));
+
+	Input* thickness_input=inputs->GetInput(ThicknessEnum); _assert_(thickness_input);
+	this->parameters->FindParam(&domaintype,DomainTypeEnum);
+	Input* vx_input=NULL;
+	Input* vy_input=NULL;
+	if(domaintype==Domain2DhorizontalEnum){
+		vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);
+		vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);
+	}
+	else{
+		vx_input=inputs->GetInput(VxAverageEnum); _assert_(vx_input);
+		vy_input=inputs->GetInput(VyAverageEnum); _assert_(vy_input);
+	}
+
+	thickness_input->GetInputValue(&h1, gauss_1);
+	thickness_input->GetInputValue(&h2, gauss_2);
+	vx_input->GetInputValue(&vx1,gauss_1);
+	vx_input->GetInputValue(&vx2,gauss_2);
+	vy_input->GetInputValue(&vy1,gauss_1);
+	vy_input->GetInputValue(&vy2,gauss_2);
+
+	mass_flux= rho_ice*length*(  
+				(ONETHIRD*(h1-h2)*(vx1-vx2)+0.5*h2*(vx1-vx2)+0.5*(h1-h2)*vx2+h2*vx2)*normal[0]+
+				(ONETHIRD*(h1-h2)*(vy1-vy2)+0.5*h2*(vy1-vy2)+0.5*(h1-h2)*vy2+h2*vy2)*normal[1]
+				);
+
+	/*clean up and return:*/
+	delete gauss_1;
+	delete gauss_2;
+	return mass_flux;
+}
+/*}}}*/
+IssmDouble Tria::Misfit(int modelenum,int observationenum,int weightsenum){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble model,observation,weight;
+	IssmDouble Jdet;
+	IssmDouble Jelem = 0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	GaussTria *gauss = NULL;
+
+	/*If on water, return 0: */
+	if(!IsIceInElement())return 0;
+
+	/*Retrieve all inputs we will be needing: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	Input* model_input=inputs->GetInput(modelenum);   _assert_(model_input);
+	Input* observation_input=inputs->GetInput(observationenum);_assert_(observation_input);
+	Input* weights_input     =inputs->GetInput(weightsenum);     _assert_(weights_input);
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=new GaussTria(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		/* Get Jacobian determinant: */
+		GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss);
+
+		/*Get parameters at gauss point*/
+		model_input->GetInputValue(&model,gauss);
+		observation_input->GetInputValue(&observation,gauss);
+		weights_input->GetInputValue(&weight,gauss);
+
+		/*compute misfit between model and observation */
+		Jelem+=0.5*(model-observation)*(model-observation)*Jdet*weight*gauss->weight;
+	}
+
+	/* clean up and Return: */
+	delete gauss;
+	return Jelem;
+}
+/*}}}*/
+IssmDouble Tria::MisfitArea(int weightsenum){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble weight;
+	IssmDouble Jdet;
+	IssmDouble Jelem = 0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	GaussTria *gauss = NULL;
+
+	/*If on water, return 0: */
+	if(!IsIceInElement())return 0;
+
+	/*Retrieve all inputs we will be needing: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	Input* weights_input     =inputs->GetInput(weightsenum);     _assert_(weights_input);
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=new GaussTria(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		/* Get Jacobian determinant: */
+		GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss);
+
+		/*Get parameters at gauss point*/
+		weights_input->GetInputValue(&weight,gauss);
+
+		/*compute misfit between model and observation */
+		Jelem+=Jdet*weight*gauss->weight;
+	}
+
+	/* clean up and Return: */
+	delete gauss;
+	return Jelem;
+}
+/*}}}*/
+Gauss*     Tria::NewGauss(void){/*{{{*/
+	return new GaussTria();
+}
+/*}}}*/
+Gauss*     Tria::NewGauss(int order){/*{{{*/
+	return new GaussTria(order);
+}
+/*}}}*/
+Gauss*     Tria::NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order){/*{{{*/
+
+	IssmDouble  area_coordinates[2][3];
+	GetAreaCoordinates(&area_coordinates[0][0],xyz_list_front,xyz_list,2);
+	return new GaussTria(area_coordinates,order);
+}
+/*}}}*/
+Gauss*     Tria::NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order){/*{{{*/
+
+	return new GaussTria(point1,fraction1,fraction2,mainlyfloating,order);
+}
+/*}}}*/
+Gauss*     Tria::NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert){/*{{{*/
+
+	IssmDouble  area_coordinates[2][3];
+	GetAreaCoordinates(&area_coordinates[0][0],xyz_list_front,xyz_list,2);
+	return new GaussTria(area_coordinates,order_vert);
+}
+/*}}}*/
+Gauss*     Tria::NewGaussBase(int order){/*{{{*/
+
+	int indices[2];
+	this->EdgeOnBaseIndices(&indices[0],&indices[1]);
+	return new GaussTria(indices[0],indices[1],order);
+}
+/*}}}*/
+Gauss*     Tria::NewGaussTop(int order){/*{{{*/
+
+	int indices[2];
+	this->EdgeOnSurfaceIndices(&indices[0],&indices[1]);
+	return new GaussTria(indices[0],indices[1],order);
+}
+/*}}}*/
+void       Tria::NodalFunctions(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetNodalFunctions(basis,(GaussTria*)gauss,this->element_type);
+
+}
+/*}}}*/
+void       Tria::NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussTria*)gauss,this->element_type);
+
+}
+/*}}}*/
+void       Tria::NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussTria*)gauss,this->VelocityInterpolation());
+
+}
+/*}}}*/
+void       Tria::NodalFunctionsPressure(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetNodalFunctions(basis,(GaussTria*)gauss,this->PressureInterpolation());
+
+}
+/*}}}*/
+void       Tria::NodalFunctionsP1(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetNodalFunctions(basis,(GaussTria*)gauss,P1Enum);
+
+}
+/*}}}*/
+void       Tria::NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussTria*)gauss,P1Enum);
+
+}
+/*}}}*/
+void       Tria::NodalFunctionsP2(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetNodalFunctions(basis,(GaussTria*)gauss,P2Enum);
+
+}
+/*}}}*/
+void       Tria::NodalFunctionsTensor(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetNodalFunctions(basis,(GaussTria*)gauss,this->TensorInterpolation());
+
+}
+/*}}}*/
+void       Tria::NodalFunctionsVelocity(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetNodalFunctions(basis,(GaussTria*)gauss,this->VelocityInterpolation());
+
+}
+/*}}}*/
+int        Tria::NodalValue(IssmDouble* pvalue, int index, int natureofdataenum){/*{{{*/
+
+	int         found = 0;
+	IssmDouble  value;
+	Input      *data  = NULL;
+	GaussTria  *gauss = NULL;
+
+	/*First, serarch the input: */
+	data=inputs->GetInput(natureofdataenum); 
+
+	/*figure out if we have the vertex id: */
+	found=0;
+	for(int i=0;i<NUMVERTICES;i++){
+		if(index==vertices[i]->Sid()){
+			/*Do we have natureofdataenum in our inputs? :*/
+			if(data){
+				/*ok, we are good. retrieve value of input at vertex :*/
+				gauss=new GaussTria(); gauss->GaussVertex(i);
+				data->GetInputValue(&value,gauss);
+				found=1;
+				break;
+			}
+		}
+	}
+
+	/*clean-up*/
+	delete gauss;
+
+	if(found)*pvalue=value;
+	return found;
+}
+/*}}}*/
+void       Tria::NormalBase(IssmDouble* bed_normal,IssmDouble* xyz_list){/*{{{*/
+
+	/*Build unit outward pointing vector*/
+	IssmDouble vector[2];
+	IssmDouble norm;
+
+	vector[0]=xyz_list[1*3+0] - xyz_list[0*3+0];
+	vector[1]=xyz_list[1*3+1] - xyz_list[0*3+1];
+
+	norm=sqrt(vector[0]*vector[0] + vector[1]*vector[1]);
+
+	bed_normal[0]= + vector[1]/norm;
+	bed_normal[1]= - vector[0]/norm;
+	_assert_(bed_normal[1]<0); 
+}
+/*}}}*/
+void       Tria::NormalSection(IssmDouble* normal,IssmDouble* xyz_list){/*{{{*/
+
+	/*Build unit outward pointing vector*/
+	IssmDouble vector[2];
+	IssmDouble norm;
+
+	vector[0]=xyz_list[1*3+0] - xyz_list[0*3+0];
+	vector[1]=xyz_list[1*3+1] - xyz_list[0*3+1];
+
+	norm=sqrt(vector[0]*vector[0] + vector[1]*vector[1]);
+
+	normal[0]= + vector[1]/norm;
+	normal[1]= - vector[0]/norm;
+}
+/*}}}*/
+void       Tria::NormalTop(IssmDouble* top_normal,IssmDouble* xyz_list){/*{{{*/
+
+	/*Build unit outward pointing vector*/
+	int index1,index2;
+	IssmDouble vector[2];
+	IssmDouble norm;
+
+	this->EdgeOnSurfaceIndices(&index1,&index2);
+	vector[0]=xyz_list[1*3+0] - xyz_list[0*3+0];
+	vector[1]=xyz_list[1*3+1] - xyz_list[0*3+1];
+
+	norm=sqrt(vector[0]*vector[0] + vector[1]*vector[1]);
+
+	top_normal[0]= + vector[1]/norm;
+	top_normal[1]= - vector[0]/norm;
+	_assert_(top_normal[1]>0); 
+}
+/*}}}*/
+int        Tria::ObjectEnum(void){/*{{{*/
+
+	return TriaEnum;
+
+}
+/*}}}*/
+int        Tria::NumberofNodesPressure(void){/*{{{*/
+	return TriaRef::NumberofNodes(this->PressureInterpolation());
+}
+/*}}}*/
+int        Tria::NumberofNodesVelocity(void){/*{{{*/
+	return TriaRef::NumberofNodes(this->VelocityInterpolation());
+}
+/*}}}*/
+void       Tria::PotentialUngrounding(Vector<IssmDouble>* potential_ungrounding){/*{{{*/
+
+	IssmDouble  h[NUMVERTICES],r[NUMVERTICES],gl[NUMVERTICES];
+	IssmDouble  bed_hydro;
+	IssmDouble  rho_water,rho_ice,density;
+
+	/*material parameters: */
+	rho_water=matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	density=rho_ice/rho_water;
+	GetInputListOnVertices(&h[0],ThicknessEnum);
+	GetInputListOnVertices(&r[0],BedEnum);
+	GetInputListOnVertices(&gl[0],MaskGroundediceLevelsetEnum);
+
+	/*go through vertices, and figure out which ones are grounded and want to unground: */
+	for(int i=0;i<NUMVERTICES;i++){
+		/*Find if grounded vertices want to start floating*/
+		if (gl[i]>0.){
+			bed_hydro=-density*h[i];
+			if(bed_hydro>r[i]){
+				/*Vertex that could potentially unground, flag it*/
+				potential_ungrounding->SetValue(vertices[i]->Pid(),1,INS_VAL);
+			}
+		}
+	}
+}
+/*}}}*/
+int        Tria::PressureInterpolation(void){/*{{{*/
+	return TriaRef::PressureInterpolation(this->element_type);
+}
+/*}}}*/
+void       Tria::ReduceMatrices(ElementMatrix* Ke,ElementVector* pe){/*{{{*/
+
+	/*Static condensation if requested*/
+	if(pe){
+		if(this->element_type==MINIcondensedEnum){
+			int indices[2]={6,7};
+			pe->StaticCondensation(Ke,2,&indices[0]);
+		}
+		else if(this->element_type==P1bubblecondensedEnum){
+			int size   = nodes[3]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int offset = 0;
+			for(int i=0;i<3;i++) offset+=nodes[i]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int* indices=xNew<int>(size);
+			for(int i=0;i<size;i++) indices[i] = offset+i;
+			pe->StaticCondensation(Ke,size,indices);
+			xDelete<int>(indices);
+		}
+	}
+
+	if(Ke){
+		if(this->element_type==MINIcondensedEnum){
+			int indices[2]={6,7};
+			Ke->StaticCondensation(2,&indices[0]);
+		}
+		else if(this->element_type==P1bubblecondensedEnum){
+			int size   = nodes[3]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int offset = 0;
+			for(int i=0;i<3;i++) offset+=nodes[i]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int* indices=xNew<int>(size);
+			for(int i=0;i<size;i++) indices[i] = offset+i;
+			Ke->StaticCondensation(size,indices);
+			xDelete<int>(indices);
+		}
+	}
+
+
+}
+/*}}}*/
+void       Tria::ResetFSBasalBoundaryCondition(void){/*{{{*/
+
+	int numnodes = this->NumberofNodesVelocity();
+
+	int          approximation;
+	IssmDouble*  vertexonbase= NULL;
+	IssmDouble   slope,groundedice;
+	IssmDouble   xz_plane[6];
+
+	/*For FS only: we want the CS to be tangential to the bedrock*/
+	inputs->GetInputValue(&approximation,ApproximationEnum);
+	if(!HasNodeOnBase() ||  approximation!=FSApproximationEnum) return;
+
+	/*Get inputs*/
+	Input* slope_input=inputs->GetInput(BedSlopeXEnum);                             _assert_(slope_input);
+	Input* groundedicelevelset_input=inputs->GetInput(MaskGroundediceLevelsetEnum); _assert_(groundedicelevelset_input);
+	vertexonbase = xNew<IssmDouble>(numnodes);
+	this->GetInputListOnNodesVelocity(&vertexonbase[0],MeshVertexonbaseEnum);
+
+	/*Loop over basal nodes and update their CS*/
+	GaussTria* gauss = new GaussTria();
+	for(int i=0;i<this->NumberofNodesVelocity();i++){
+
+		if(vertexonbase[i]==1){
+			gauss->GaussNode(this->VelocityInterpolation(),i);
+			slope_input->GetInputValue(&slope,gauss);
+			groundedicelevelset_input->GetInputValue(&groundedice,gauss);
+			IssmDouble theta = atan(slope);
+
+			/*New X axis                  New Z axis*/
+			xz_plane[0]=cos(theta);       xz_plane[3]=0.;  
+			xz_plane[1]=sin(theta);       xz_plane[4]=0.;  
+			xz_plane[2]=0.;               xz_plane[5]=1.;          
+
+			if(groundedice>=0){
+				this->nodes[i]->DofInSSet(1); //vy
+			}
+			else{
+				this->nodes[i]->DofInFSet(1); //vy
+			}
+
+			XZvectorsToCoordinateSystem(&this->nodes[i]->coord_system[0][0],&xz_plane[0]);
+		}
+	}
+
+	/*cleanup*/
+	xDelete<IssmDouble>(vertexonbase);
+	delete gauss;
+}
+/*}}}*/
+void       Tria::ResetHooks(){/*{{{*/
+
+	this->nodes=NULL;
+	this->vertices=NULL;
+	this->material=NULL;
+	this->matpar=NULL;
+	this->parameters=NULL;
+
+	//deal with ElementHook mother class
+	for(int i=0;i<this->numanalyses;i++) if(this->hnodes[i]) this->hnodes[i]->reset();
+	this->hvertices->reset();
+	this->hmaterial->reset();
+	this->hmatpar->reset();
+	if(this->hneighbors) this->hneighbors->reset();
+
+}
+/*}}}*/
+void       Tria::ResetLevelsetFromSegmentlist(IssmDouble* segments,int numsegments){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble d,xn,yn;
+
+	/*Get current levelset and vertex coordinates*/
+	IssmDouble ls[NUMVERTICES];
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	GetInputListOnVertices(&ls[0],MaskIceLevelsetEnum);
+	InputDuplicate(MaskIceLevelsetEnum,PressureEnum);
+
+	/*Get distance from list of segments and reset ls*/
+	for(int j=0;j<NUMVERTICES;j++){
+		IssmDouble dmin = 1.e+50;
+		for(int i=0;i<numsegments;i++){
+			IssmDouble x = xyz_list[j][0];
+			IssmDouble y = xyz_list[j][1];
+			IssmDouble l2 = (segments[4*i+2]-segments[4*i+0])*(segments[4*i+2]-segments[4*i+0]) + (segments[4*i+3]-segments[4*i+1])*(segments[4*i+3]-segments[4*i+1]);
+
+			/*Segment has a length of 0*/
+			if(l2==0.){
+				d = (x-segments[4*i+0])*(x-segments[4*i+0])+(y-segments[4*i+1])*(y-segments[4*i+1]);
+				if(d<dmin) dmin = d;
+				continue;
+			}
+
+			/*Consider the line extending the segment, parameterized as v + t (w - v).
+			 *We find projection of point p onto the line.
+			 *It falls where t = [(p-v) . (w-v)] / |w-v|^2*/
+			IssmDouble t = ((x-segments[4*i+0])*(segments[4*i+2]-segments[4*i+0]) + (y-segments[4*i+1])*(segments[4*i+3]-segments[4*i+1]))/l2;
+			if(t < 0.0){
+				// Beyond the 'v' end of the segment
+				d = (x-segments[4*i+0])*(x-segments[4*i+0])+(y-segments[4*i+1])*(y-segments[4*i+1]);
+			}
+			else if (t > 1.0){
+				// Beyond the 'w' end of the segment
+				d = (x-segments[4*i+2])*(x-segments[4*i+2])+(y-segments[4*i+3])*(y-segments[4*i+3]);
+			}
+			else{
+				// Projection falls on the segment
+				xn = segments[4*i+0] + t * (segments[4*i+2] - segments[4*i+0]);
+				yn = segments[4*i+1] + t * (segments[4*i+3] - segments[4*i+1]);
+				d = (x-xn)*(x-xn)+(y-yn)*(y-yn);
+			}
+
+			if(d<dmin) dmin = d;
+		}
+
+		/*Update signed distance*/
+		dmin = sqrt(dmin);
+		if(dmin>10000) dmin=10000;
+		if(ls[j]>0){
+			ls[j] = dmin;
+		}
+		else{
+			ls[j] = - dmin;
+		}
+	}
+
+	/*Update Levelset*/
+	this->inputs->AddInput(new TriaInput(MaskIceLevelsetEnum,&ls[0],P1Enum));
+}
+/*}}}*/
+void       Tria::SetClone(int* minranks){/*{{{*/
+
+	_error_("not implemented yet");
+}
+/*}}}*/
+void       Tria::SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index){/*{{{*/
+
+	IssmDouble  values[NUMVERTICES];
+	int         vertexpidlist[NUMVERTICES],control_init;
+
+
+	/*Get Domain type*/
+	int domaintype;
+	parameters->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Specific case for depth averaged quantities*/
+	control_init=control_enum;
+	if(domaintype==Domain2DverticalEnum){
+		if(control_enum==MaterialsRheologyBbarEnum){
+			control_enum=MaterialsRheologyBEnum;
+			if(!IsOnBase()) return;
+		}
+		if(control_enum==DamageDbarEnum){
+			control_enum=DamageDEnum;
+			if(!IsOnBase()) return;
+		}
+	}
+
+	/*Get out if this is not an element input*/
+	if(!IsInput(control_enum)) return;
+
+	/*Prepare index list*/
+	GradientIndexing(&vertexpidlist[0],control_index);
+
+	/*Get values on vertices*/
+	for(int i=0;i<NUMVERTICES;i++){
+		values[i]=vector[vertexpidlist[i]];
+	}
+	Input* new_input = new TriaInput(control_enum,values,P1Enum);
+	Input* input     = (Input*)this->inputs->GetInput(control_enum);   _assert_(input);
+	if(input->ObjectEnum()!=ControlInputEnum){
+		_error_("input " << EnumToStringx(control_enum) << " is not a ControlInput");
+	}
+
+	((ControlInput*)input)->SetInput(new_input);
+}
+/*}}}*/
+void       Tria::SetCurrentConfiguration(Elements* elementsin, Loads* loadsin, Nodes* nodesin, Materials* materialsin, Parameters* parametersin){/*{{{*/
+
+	/*go into parameters and get the analysis_counter: */
+	int analysis_counter;
+	parametersin->FindParam(&analysis_counter,AnalysisCounterEnum);
+
+	/*Get Element type*/
+	if(this->element_type_list) this->element_type=this->element_type_list[analysis_counter];
+
+	/*Pick up nodes*/
+	if(this->hnodes && this->hnodes[analysis_counter]){
+		this->nodes=(Node**)this->hnodes[analysis_counter]->deliverp();
+	}
+
+}
+/*}}}*/
+Element*   Tria::SpawnBasalElement(void){/*{{{*/
+
+	int index1,index2;
+	int domaintype;
+
+	this->parameters->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			return this;
+		case Domain2DverticalEnum:
+			_assert_(HasEdgeOnBase());
+			this->EdgeOnBaseIndices(&index1,&index2);
+			return SpawnSeg(index1,index2);
+		default:
+			_error_("not implemented yet");
+	}
+}
+/*}}}*/
+Seg*       Tria::SpawnSeg(int index1,int index2){/*{{{*/
+
+	int analysis_counter;
+
+	/*go into parameters and get the analysis_counter: */
+	this->parameters->FindParam(&analysis_counter,AnalysisCounterEnum);
+
+	/*Create Seg*/
+	Seg* seg=new Seg();
+	seg->id=this->id;
+	seg->inputs=(Inputs*)this->inputs->SpawnSegInputs(index1,index2);
+	seg->parameters=this->parameters;
+	seg->element_type=P1Enum; //Only P1 CG for now (TO BE CHANGED)
+	this->SpawnSegHook(xDynamicCast<ElementHook*>(seg),index1,index2);
+
+	/*Spawn material*/
+	seg->material=(Material*)this->material->copy2(seg);
+
+	/*recover nodes, material and matpar: */
+	seg->nodes    = (Node**)seg->hnodes[analysis_counter]->deliverp();
+	seg->vertices = (Vertex**)seg->hvertices->deliverp();
+	seg->matpar   = (Matpar*)seg->hmatpar->delivers();
+
+	/*Return new Seg*/
+	return seg;
+}
+/*}}}*/
+Element*   Tria::SpawnTopElement(void){/*{{{*/
+
+	int index1,index2;
+	int domaintype;
+
+	this->parameters->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			return this;
+		case Domain2DverticalEnum:
+			_assert_(HasEdgeOnSurface());
+			this->EdgeOnSurfaceIndices(&index1,&index2);
+			return SpawnSeg(index2,index1); //reverse order
+		default:
+			_error_("not implemented yet");
+	}
+}
+/*}}}*/
+void       Tria::StrainRateparallel(){/*{{{*/
+
+	IssmDouble *xyz_list = NULL;
+	IssmDouble  epsilon[3];
+	GaussTria* gauss=NULL;
+	IssmDouble  vx,vy,vel;
+	IssmDouble  strainxx;
+	IssmDouble  strainxy;
+	IssmDouble  strainyy;
+	IssmDouble  strainparallel[NUMVERTICES];
+
+	/* Get node coordinates and dof list: */
+	this->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will need*/
+	Input* vx_input=inputs->GetInput(VxEnum);                                  _assert_(vx_input);
+	Input* vy_input=inputs->GetInput(VyEnum);                                  _assert_(vy_input);
+
+	/* Start looping on the number of vertices: */
+	gauss=new GaussTria();
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		/* Get the value we need*/
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vel=vx*vx+vy*vy;
+
+		/*Compute strain rate viscosity and pressure: */
+		this->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+		strainxx=epsilon[0];
+		strainyy=epsilon[1];
+		strainxy=epsilon[2];
+
+		/*strainparallel= Strain rate along the ice flow direction */
+		strainparallel[iv]=(vx*vx*(strainxx)+vy*vy*(strainyy)+2*vy*vx*strainxy)/(vel+1.e-14);
+	}
+
+	/*Add input*/
+	this->inputs->AddInput(new TriaInput(StrainRateparallelEnum,&strainparallel[0],P1Enum));
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+}
+/*}}}*/
+void       Tria::StrainRateperpendicular(){/*{{{*/
+
+	IssmDouble *xyz_list = NULL;
+	GaussTria* gauss=NULL;
+	IssmDouble  epsilon[3];
+	IssmDouble  vx,vy,vel;
+	IssmDouble  strainxx;
+	IssmDouble  strainxy;
+	IssmDouble  strainyy;
+	IssmDouble  strainperpendicular[NUMVERTICES];
+
+	/* Get node coordinates and dof list: */
+	this->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will need*/
+	Input* vx_input=inputs->GetInput(VxEnum);                                  _assert_(vx_input);
+	Input* vy_input=inputs->GetInput(VyEnum);                                  _assert_(vy_input);
+
+	/* Start looping on the number of vertices: */
+	gauss=new GaussTria();
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		/* Get the value we need*/
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vel=vx*vx+vy*vy;
+
+		/*Compute strain rate viscosity and pressure: */
+		this->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+		strainxx=epsilon[0];
+		strainyy=epsilon[1];
+		strainxy=epsilon[2];
+
+		/*strainperpendicular= Strain rate perpendicular to the ice flow direction */
+		strainperpendicular[iv]=(vx*vx*(strainyy)+vy*vy*(strainxx)-2*vy*vx*strainxy)/(vel+1.e-14);
+	}
+
+	/*Add input*/
+	this->inputs->AddInput(new TriaInput(StrainRateperpendicularEnum,&strainperpendicular[0],P1Enum));
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+}
+/*}}}*/
+IssmDouble Tria::SurfaceArea(void){/*{{{*/
+
+	IssmDouble S;
+	IssmDouble normal[3];
+	IssmDouble v13[3],v23[3];
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*If on water, return 0: */
+	if(!IsIceInElement()) return 0.;
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	for(int i=0;i<3;i++){
+		v13[i]=xyz_list[0][i]-xyz_list[2][i];
+		v23[i]=xyz_list[1][i]-xyz_list[2][i];
+	}
+
+	normal[0]=v13[1]*v23[2]-v13[2]*v23[1];
+	normal[1]=v13[2]*v23[0]-v13[0]*v23[2];
+	normal[2]=v13[0]*v23[1]-v13[1]*v23[0];
+
+	S = 0.5 * sqrt(normal[0]*normal[0] + normal[1]*normal[1] + normal[2]*normal[2]);
+
+	/*Return: */
+	return S;
+}
+/*}}}*/
+int        Tria::TensorInterpolation(void){/*{{{*/
+	return TriaRef::TensorInterpolation(this->element_type);
+}
+/*}}}*/
+IssmDouble Tria::TimeAdapt(void){/*{{{*/
+
+	/*intermediary: */
+	int    i;
+	IssmDouble C,dt;
+	IssmDouble dx,dy;
+	IssmDouble maxx,minx;
+	IssmDouble maxy,miny;
+	IssmDouble maxabsvx,maxabsvy;
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*get CFL coefficient:*/
+	this->parameters->FindParam(&C,TimesteppingCflCoefficientEnum);
+
+	/*Get for Vx and Vy, the max of abs value: */
+	maxabsvx = this->inputs->MaxAbs(VxEnum);
+	maxabsvy = this->inputs->MaxAbs(VyEnum);
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	minx=xyz_list[0][0];
+	maxx=xyz_list[0][0];
+	miny=xyz_list[0][1];
+	maxy=xyz_list[0][1];
+
+	for(i=1;i<NUMVERTICES;i++){
+		if (xyz_list[i][0]<minx)minx=xyz_list[i][0];
+		if (xyz_list[i][0]>maxx)maxx=xyz_list[i][0];
+		if (xyz_list[i][1]<miny)miny=xyz_list[i][1];
+		if (xyz_list[i][1]>maxy)maxy=xyz_list[i][1];
+	}
+	dx=maxx-minx;
+	dy=maxy-miny;
+
+	/*CFL criterion: */
+	dt=C/(maxabsvx/dx+maxabsvy/dy);
+
+	return dt;
+}
+/*}}}*/
+IssmDouble Tria::TotalFloatingBmb(void){/*{{{*/
+
+	/*The fbmb[kg yr-1] of one element is area[m2] * melting_rate [kg m^-2 yr^-1]*/
+	int        point1;
+	bool       mainlyfloating;
+	IssmDouble fbmb=0;
+	IssmDouble rho_ice,fraction1,fraction2,floatingmelt,Jdet;
+	IssmDouble Total_Fbmb=0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	Gauss*     gauss     = NULL;
+
+   if(!IsIceInElement())return 0;
+
+	/*Get material parameters :*/
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	Input* floatingmelt_input = this->GetInput(BasalforcingsFloatingiceMeltingRateEnum); _assert_(floatingmelt_input); 
+	Input* gllevelset_input = this->GetInput(MaskGroundediceLevelsetEnum); _assert_(gllevelset_input);
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+	/* Start  looping on the number of gaussian points: */
+	gauss = this->NewGauss(point1,fraction1,fraction2,1-mainlyfloating,3);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+		this->JacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		floatingmelt_input->GetInputValue(&floatingmelt,gauss);
+		fbmb+=floatingmelt*Jdet*gauss->weight;
+	}
+
+   Total_Fbmb=rho_ice*fbmb;	        // from volume to mass
+
+	/*Return: */
+	delete gauss;
+	return Total_Fbmb;
+}
+/*}}}*/
+IssmDouble Tria::TotalGroundedBmb(void){/*{{{*/
+
+	/*The gbmb[kg yr-1] of one element is area[m2] * gounded melting rate [kg m^-2 yr^-1]*/
+	int        point1;
+	bool       mainlyfloating;
+	IssmDouble gbmb=0;
+	IssmDouble rho_ice,fraction1,fraction2,groundedmelt,Jdet;
+	IssmDouble Total_Gbmb=0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	Gauss*     gauss     = NULL;
+
+   if(!IsIceInElement())return 0;
+
+	/*Get material parameters :*/
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	Input* groundedmelt_input = this->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(groundedmelt_input); 
+	Input* gllevelset_input = this->GetInput(MaskGroundediceLevelsetEnum); _assert_(gllevelset_input);
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+	/* Start  looping on the number of gaussian points: */
+	gauss = this->NewGauss(point1,fraction1,fraction2,mainlyfloating,2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+		this->JacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		groundedmelt_input->GetInputValue(&groundedmelt,gauss);
+		gbmb+=groundedmelt*Jdet*gauss->weight;
+	}
+
+   Total_Gbmb=rho_ice*gbmb;	        // from volume to mass
+
+	/*Return: */
+	delete gauss;
+	return Total_Gbmb;
+}
+/*}}}*/
+IssmDouble Tria::TotalSmb(void){/*{{{*/
+
+	/*The smb[kg yr-1] of one element is area[m2] * smb [kg m^-2 yr^-1]*/
+	IssmDouble base,smb,rho_ice;
+	IssmDouble Total_Smb=0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Get material parameters :*/
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+
+   if(!IsIceInElement())return 0;
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*First calculate the area of the base (cross section triangle)
+	 * http://en.wikipedia.org/wiki/Triangle
+	 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/
+	base = 1./2. * fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));	// area of element in m2
+
+	/*Now get the average SMB over the element*/
+	Input* smb_input = inputs->GetInput(SmbMassBalanceEnum); _assert_(smb_input);
+	smb_input->GetInputAverage(&smb);																								// average smb on element in m ice s-1
+   Total_Smb=rho_ice*base*smb;																											// smb on element in kg s-1
+
+	/*Return: */
+	return Total_Smb;
+}
+/*}}}*/
+void       Tria::Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finiteelement_type){/*{{{*/
+
+	/*Intermediaries*/
+	int  numnodes;
+	int* tria_node_ids = NULL;
+
+	/*Checks if debuging*/
+	_assert_(iomodel->elements);
+
+	/*Recover element type*/
+	this->element_type_list[analysis_counter]=finiteelement_type;
+
+	/*Recover nodes ids needed to initialize the node hook.*/
+	switch(finiteelement_type){
+		case P1Enum:
+			numnodes        = 3;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->nodecounter+iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->nodecounter+iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->nodecounter+iomodel->elements[3*index+2];
+			break;
+		case P1DGEnum:
+			numnodes        = 3;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->nodecounter+3*index+1;
+			tria_node_ids[1]=iomodel->nodecounter+3*index+2;
+			tria_node_ids[2]=iomodel->nodecounter+3*index+3;
+			break;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			numnodes        = 4;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->nodecounter+iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->nodecounter+iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->nodecounter+iomodel->elements[3*index+2];
+			tria_node_ids[3]=iomodel->nodecounter+iomodel->numberofvertices+index+1;
+			break;
+		case P2Enum:
+			numnodes        = 6;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->nodecounter+iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->nodecounter+iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->nodecounter+iomodel->elements[3*index+2];
+			tria_node_ids[3]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1;
+			tria_node_ids[4]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1;
+			tria_node_ids[5]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;
+			break;
+		case P2bubbleEnum: case P2bubblecondensedEnum:
+			numnodes        = 7;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->nodecounter+iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->nodecounter+iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->nodecounter+iomodel->elements[3*index+2];
+			tria_node_ids[3]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1;
+			tria_node_ids[4]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1;
+			tria_node_ids[5]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;
+			tria_node_ids[6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+index+1;
+			break;
+		case P1P1Enum: case P1P1GLSEnum:
+			numnodes        = 6;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->nodecounter+iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->nodecounter+iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->nodecounter+iomodel->elements[3*index+2];
+
+			tria_node_ids[3]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elements[3*index+0];
+			tria_node_ids[4]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elements[3*index+1];
+			tria_node_ids[5]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elements[3*index+2];
+			break;
+		case MINIEnum: case MINIcondensedEnum:
+			numnodes       = 7;
+			tria_node_ids  = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->nodecounter+iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->nodecounter+iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->nodecounter+iomodel->elements[3*index+2];
+			tria_node_ids[3]=iomodel->nodecounter+iomodel->numberofvertices+index+1;
+
+			tria_node_ids[4]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[3*index+0];
+			tria_node_ids[5]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[3*index+1];
+			tria_node_ids[6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[3*index+2];
+			break;
+		case TaylorHoodEnum:
+		case XTaylorHoodEnum:
+			numnodes        = 9;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->nodecounter+iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->nodecounter+iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->nodecounter+iomodel->elements[3*index+2];
+			tria_node_ids[3]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1;
+			tria_node_ids[4]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1;
+			tria_node_ids[5]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;
+
+			tria_node_ids[6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[3*index+0];
+			tria_node_ids[7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[3*index+1];
+			tria_node_ids[8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[3*index+2];
+			break;
+		case LATaylorHoodEnum:
+			numnodes        = 6;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->nodecounter+iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->nodecounter+iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->nodecounter+iomodel->elements[3*index+2];
+			tria_node_ids[3]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1;
+			tria_node_ids[4]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1;
+			tria_node_ids[5]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;
+			break;
+		case CrouzeixRaviartEnum:
+			numnodes        = 10;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->nodecounter+iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->nodecounter+iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->nodecounter+iomodel->elements[3*index+2];
+			tria_node_ids[3]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1;
+			tria_node_ids[4]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1;
+			tria_node_ids[5]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;
+			tria_node_ids[6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+index+1;
+
+			tria_node_ids[7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+3*index+1;
+			tria_node_ids[8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+3*index+2;
+			tria_node_ids[9]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+3*index+3;
+			break;
+		case LACrouzeixRaviartEnum:
+			numnodes        = 7;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->nodecounter+iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->nodecounter+iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->nodecounter+iomodel->elements[3*index+2];
+			tria_node_ids[3]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1;
+			tria_node_ids[4]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1;
+			tria_node_ids[5]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;
+			tria_node_ids[6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+index+1;
+			break;
+		default:
+			_error_("Finite element "<<EnumToStringx(finiteelement_type)<<" not supported yet");
+	}
+
+	/*hooks: */
+	this->SetHookNodes(tria_node_ids,numnodes,analysis_counter); this->nodes=NULL;
+	xDelete<int>(tria_node_ids);
+
+	/*Fill with IoModel*/
+	this->InputUpdateFromIoModel(index,iomodel);
+}
+/*}}}*/
+void       Tria::UpdateConstraintsExtrudeFromBase(void){/*{{{*/
+
+	if(!HasEdgeOnBase()) return;
+
+	int        extrusioninput;
+	IssmDouble value,isonbase;
+
+	this->parameters->FindParam(&extrusioninput,InputToExtrudeEnum);
+	Input* input = inputs->GetInput(extrusioninput);      _assert_(input);
+	Input* onbase = inputs->GetInput(MeshVertexonbaseEnum); _assert_(onbase);
+
+	GaussTria* gauss=new GaussTria();
+	for(int iv=0;iv<this->NumberofNodes(this->element_type);iv++){
+		gauss->GaussNode(this->element_type,iv);
+		onbase->GetInputValue(&isonbase,gauss);
+		if(isonbase==1.){
+			input->GetInputValue(&value,gauss);
+			this->nodes[iv]->ApplyConstraint(0,value);
+		}
+	}
+	delete gauss;
+
+}
+/*}}}*/
+void       Tria::UpdateConstraintsExtrudeFromTop(void){/*{{{*/
+
+	if(!HasEdgeOnSurface()) return;
+
+	int extrusioninput;
+	int indices[2];
+	IssmDouble value;
+
+	this->parameters->FindParam(&extrusioninput,InputToExtrudeEnum);
+	Input* input = inputs->GetInput(extrusioninput); _assert_(input);
+	this->EdgeOnSurfaceIndices(&indices[0],&indices[1]);
+
+	GaussTria* gauss=new GaussTria();
+	for(int i=0;i<2;i++){
+		gauss->GaussNode(P1Enum,indices[i]);
+		input->GetInputValue(&value,gauss);
+		this->nodes[indices[i]]->ApplyConstraint(0,value);
+	}
+	delete gauss;
+
+}
+/*}}}*/
+int        Tria::UpdatePotentialUngrounding(IssmDouble* vertices_potentially_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf){/*{{{*/
+
+	int i;
+	int nflipped=0;
+
+	/*Go through nodes, and whoever is on the potential_ungrounding, ends up in nodes_on_iceshelf: */
+	for(i=0;i<3;i++){
+		if (reCast<bool>(vertices_potentially_ungrounding[vertices[i]->Pid()])){
+			vec_nodes_on_iceshelf->SetValue(vertices[i]->Pid(),-1.,INS_VAL);
+
+			/*If node was not on ice shelf, we flipped*/
+			if(nodes_on_iceshelf[vertices[i]->Pid()]>=0.){
+				nflipped++;
+			}
+		}
+	}
+	return nflipped;
+}
+/*}}}*/
+void       Tria::ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	TriaRef::GetInputDerivativeValue(dvalue,values,xyz_list,gauss,P1Enum);
+}
+/*}}}*/
+void       Tria::ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss){/*{{{*/
+	TriaRef::GetInputValue(pvalue,values,gauss,P1Enum);
+}
+/*}}}*/
+int        Tria::VelocityInterpolation(void){/*{{{*/
+	return TriaRef::VelocityInterpolation(this->element_type);
+}
+/*}}}*/
+int        Tria::VertexConnectivity(int vertexindex){/*{{{*/
+	_assert_(this->vertices);
+	return this->vertices[vertexindex]->Connectivity();
+}
+/*}}}*/
+void       Tria::WriteLevelsetSegment(DataSet* segments){/*{{{*/
+
+	if(!this->IsZeroLevelset(MaskIceLevelsetEnum)) return;
+
+	IssmDouble* xyz_list_zero = NULL;
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],this->vertices,NUMVERTICES);
+	this->ZeroLevelsetCoordinates(&xyz_list_zero,&xyz_list[0][0], MaskIceLevelsetEnum);
+	if(xyz_list_zero){
+		IssmDouble x[2];
+		IssmDouble y[2];
+		x[0] = xyz_list_zero[0*3 + 0]; x[1] = xyz_list_zero[1*3 + 0];
+		y[0] = xyz_list_zero[0*3 + 1]; y[1] = xyz_list_zero[1*3 + 1];
+		segments->AddObject(new Contour<IssmDouble>(segments->Size()+1,2,&x[0],&y[0],false));
+	}
+	xDelete<IssmDouble>(xyz_list_zero);
+
+//	IssmDouble ls[NUMVERTICES];
+//	IssmDouble  xyz_list[NUMVERTICES][3];
+//
+//	if(IsIceInElement()){
+//
+//		/*Retrieve all inputs and parameters*/
+//		GetInputListOnVertices(&ls[0],levelset_enum);
+//
+//		/*If the level set is awlays <0, there is no ice front here*/
+//		bool iszerols= false;
+//		if(IsIceInElement()){
+//			if(ls[0]*ls[1]<0. || ls[0]*ls[2]<0. || (ls[0]*ls[1]*ls[2]==0. && ls[0]*ls[1]+ls[0]*ls[2]+ls[1]*ls[2]<=0.)){
+//				iszerols = true;
+//			}
+//		}
+//
+//		if(iszerols){
+//			/*OK we have one segment!*/
+//			::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+//			int count = 0;
+//			IssmDouble x[2];
+//			IssmDouble y[2];
+//
+//			for(int i=0;i<NUMVERTICES,i++){
+//				int index1 = i;
+//				int index1 = (i+1)%3;
+//				if(ls[index1]<=0 && ls[index2]>=0){
+//
+//				}
+//
+//			}
+//			Contour* segment = new Contour<IssmDouble>(segment->Size()+1,2,x,y,false);
+//		}
+//
+//	}
+//
+//	_error_("STOP");
+}
+/*}}}*/
+void       Tria::ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum){/*{{{*/
+	/* Return coordinates where levelset intersects element edges.
+	 * Attention: In case that no intersection exists, NULL pointer is returned.*/
+
+	/*Intermediaries*/
+	const int dim=3;
+	int numiceverts;
+	int i, n, e, counter;
+	IssmDouble s[2];
+	int* indices=NULL;
+	IssmDouble* xyz_zero=NULL;
+
+	this->GetLevelsetIntersection(&indices, &numiceverts, s,levelsetenum,0.);
+	
+	//TODO: check if for 2 iceverts front segment is oriented in CCW way
+	
+	if(numiceverts>0) xyz_zero=xNew<IssmDouble>(2*dim);
+	if((numiceverts>0)&&(numiceverts<NUMVERTICES)){
+		counter=0;
+		for(i=0;i<numiceverts;i++){	// iterate over ice vertices
+			for(n=numiceverts;n<NUMVERTICES;n++){ // iterate over no-ice vertices
+				for(e=0;e<dim;e++){ // spatial direction
+					int ind_ice		=dim*indices[i]+e;
+					int ind_noice	=dim*indices[n]+e;
+					int ind			=dim*counter+e;
+					xyz_zero[ind]=xyz_list[ind_ice]+s[counter]*(xyz_list[ind_noice]-xyz_list[ind_ice]);
+				}
+				counter++;
+			}
+		}
+	}
+	else if(numiceverts==NUMVERTICES){ //NUMVERTICES ice vertices: calving front lies on element edge
+		IssmDouble lsf[NUMVERTICES];
+		this->GetInputListOnVertices(&lsf[0],levelsetenum);
+		counter=0;
+		for(i=0;i<NUMVERTICES;i++){
+			if(lsf[indices[i]]==0.){
+				for(e=0;e<dim;e++)	xyz_zero[dim*counter+e]=xyz_list[dim*indices[i]+e];
+				counter++;
+			}
+			if(counter==2) break;
+		}
+	}
+	_assert_(counter==2);
+
+	/*Cleanup & return*/
+	xDelete<int>(indices);
+	*pxyz_zero=xyz_zero;
+}
+/*}}}*/
+
+#ifdef _HAVE_GIA_
+void       Tria::GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x, IssmDouble* y){/*{{{*/
+
+	int i;
+	int gsize;
+	IssmDouble xi,yi,ri,re,area;
+	IssmDouble x0,y0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*thickness averages: */
+	IssmDouble* hes=NULL;
+	IssmDouble* times=NULL;
+	IssmDouble  currenttime;
+	int         numtimes;
+	Input* thickness_input=NULL;
+
+	/*gia solution parameters:*/
+	int cross_section_shape=0;
+
+	/*gia material parameters: */
+	IssmDouble lithosphere_shear_modulus;
+	IssmDouble lithosphere_density;
+	IssmDouble mantle_shear_modulus;
+	IssmDouble mantle_density;
+	Input* mantle_viscosity_input=NULL;
+	IssmDouble mantle_viscosity;
+	Input* lithosphere_thickness_input=NULL;
+	IssmDouble lithosphere_thickness;
+
+	/*ice properties: */
+	IssmDouble rho_ice;
+
+	/*constants: */
+	IssmDouble yts;
+
+	/*output: */
+	IssmDouble  wi;
+	IssmDouble  dwidt;
+
+	/*arguments to GiaDeflectionCorex: */
+	GiaDeflectionCoreArgs arguments;
+
+	/*how many dofs are we working with here? */
+	this->parameters->FindParam(&gsize,MeshNumberofverticesEnum);
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+
+	/*recover gia solution parameters: */
+	this->parameters->FindParam(&cross_section_shape,GiaCrossSectionShapeEnum);
+
+	/*what time is it? :*/
+	this->parameters->FindParam(&currenttime,TimeEnum);
+
+	/*recover material parameters: */
+	lithosphere_shear_modulus=matpar->GetMaterialParameter(MaterialsLithosphereShearModulusEnum);
+	lithosphere_density=matpar->GetMaterialParameter(MaterialsLithosphereDensityEnum);
+	mantle_shear_modulus=matpar->GetMaterialParameter(MaterialsMantleShearModulusEnum);
+	mantle_density=matpar->GetMaterialParameter(MaterialsMantleDensityEnum);
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+
+	/*pull thickness averages: */
+	thickness_input=inputs->GetInput(ThicknessEnum); 
+	if (!thickness_input)_error_("thickness input needed to compute gia deflection!");
+	thickness_input->GetInputUpToCurrentTimeAverages(&hes,&times,&numtimes,currenttime);
+
+	/*recover mantle viscosity: */
+	mantle_viscosity_input=inputs->GetInput(GiaMantleViscosityEnum);
+	if (!mantle_viscosity_input)_error_("mantle viscosity input needed to compute gia deflection!");
+	mantle_viscosity_input->GetInputAverage(&mantle_viscosity);
+
+	/*recover lithosphere thickness: */
+	lithosphere_thickness_input=inputs->GetInput(GiaLithosphereThicknessEnum);
+	if (!lithosphere_thickness_input)_error_("lithosphere thickness input needed to compute gia deflection!");
+	lithosphere_thickness_input->GetInputAverage(&lithosphere_thickness);
+
+	/*pull area of this Tria: */
+	area=this->GetArea();
+
+	/*element radius: */
+	re=sqrt(area/PI);
+
+	/*figure out gravity center of our element: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	x0=(xyz_list[0][0]+xyz_list[1][0]+xyz_list[2][0])/3.0;
+	y0=(xyz_list[0][1]+xyz_list[1][1]+xyz_list[2][1])/3.0;
+
+	/*start loading GiaDeflectionCore arguments: */
+	arguments.re=re;
+	arguments.hes=hes;
+	arguments.times=times;
+	arguments.numtimes=numtimes;
+	arguments.currenttime=currenttime;
+	arguments.lithosphere_shear_modulus=lithosphere_shear_modulus;
+	arguments.lithosphere_density=lithosphere_density;
+	arguments.mantle_shear_modulus=mantle_shear_modulus;
+	arguments.mantle_viscosity=mantle_viscosity;
+	arguments.mantle_density=mantle_density;
+	arguments.lithosphere_thickness=lithosphere_thickness;
+	arguments.rho_ice=rho_ice;
+	arguments.idisk=this->id;
+	arguments.iedge=cross_section_shape;
+	arguments.yts=yts;
+
+	for(i=0;i<gsize;i++){
+		/*compute distance from the center of the tria to the vertex i: */
+		xi=x[i]; yi=y[i];
+		ri=sqrt(pow(xi-x0,2)+pow(yi-y0,2));
+
+		/*load ri onto arguments for this vertex i: */
+		arguments.ri=ri;
+
+		/*for this Tria, compute contribution to rebound at vertex i: */
+		GiaDeflectionCorex(&wi,&dwidt,&arguments);
+
+		/*plug value into solution vector: */
+		wg->SetValue(i,wi,ADD_VAL);
+		dwgdt->SetValue(i,dwidt,ADD_VAL);
+
+	}
+
+	/*Free ressources: */
+	xDelete<IssmDouble>(hes);
+	xDelete<IssmDouble>(times);
+
+	return;
+}
+/*}}}*/
+#endif
+
+#ifdef _HAVE_SEALEVELRISE_
+IssmDouble    Tria::OceanArea(void){ /*{{{*/
+
+	if(IsWaterInElement()) return GetAreaSpherical();
+	else return 0;
+
+}
+/*}}}*/
+IssmDouble Tria::OceanAverage(IssmDouble* Sg){ /*{{{*/
+
+	if(IsWaterInElement()){
+		
+		IssmDouble area;
+
+		/*Compute area of element:*/
+		area=GetAreaSpherical();
+
+		/*Average Sg over vertices:*/
+		IssmDouble Sg_avg=0; for(int i=0;i<NUMVERTICES;i++) Sg_avg+=Sg[this->vertices[i]->Sid()]/NUMVERTICES;
+
+		/*return: */
+		return area*Sg_avg;
+	}
+	else return 0;
+
+}
+/*}}}*/
+void    Tria::SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){ /*{{{*/
+
+	/*diverse:*/
+	int gsize;
+	bool spherical=true;
+	IssmDouble llr_list[NUMVERTICES][3];
+	IssmDouble area;
+	IssmDouble I;  //change in ice thickness or water level(Farrel and Clarke, Equ. 4)
+	IssmDouble rho;
+	IssmDouble late,longe,re;
+	IssmDouble lati,longi,ri;
+
+	/*elastic green function:*/
+	IssmDouble* G_elastic_precomputed=NULL;
+	int         M;
+
+	/*ice properties: */
+	IssmDouble rho_ice,rho_water,rho_earth;
+
+	/*Initialize eustatic component: do not skip this step :):*/
+	IssmDouble eustatic = 0.;
+
+	/*Computational flags:*/
+	bool computerigid = true;
+	bool computeelastic= true;
+	
+	/*early return if we are not on an ice cap:*/
+	if(!(this->inputs->Max(MaskIceLevelsetEnum)<0)){
+		*peustatic=0; //do not forget to assign this pointer, otherwise, global eustatic will be garbage!
+		return;
+	}
+
+	/*recover material parameters: */
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	rho_water=matpar->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	rho_earth=matpar->GetMaterialParameter(MaterialsEarthDensityEnum);
+
+	/*recover love numbers and computational flags: */
+	this->parameters->FindParam(&computerigid,SealevelriseRigidEnum);
+	this->parameters->FindParam(&computeelastic,SealevelriseElasticEnum);
+
+	/*recover elastic green function:*/
+	if(computeelastic){
+		DoubleVecParam* parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelriseGElasticEnum)); 
+		_assert_(parameter);
+		parameter->GetParameterValueByPointer(&G_elastic_precomputed,&M);
+	}
+
+	/*how many dofs are we working with here? */
+	this->parameters->FindParam(&gsize,MeshNumberofverticesEnum);
+
+	/* Where is the centroid of this element?:{{{*/
+	
+	/*retrieve coordinates: */
+	::GetVerticesCoordinates(&llr_list[0][0],this->vertices,NUMVERTICES,spherical);
+	
+	IssmDouble minlong=400;
+	IssmDouble maxlong=-20;
+	for (int i=0;i<NUMVERTICES;i++){
+		llr_list[i][0]=(90-llr_list[i][0]);
+		if(llr_list[i][1]<0)llr_list[i][1]=180+(180+llr_list[i][1]);
+		if(llr_list[i][1]>maxlong)maxlong=llr_list[i][1];
+		if(llr_list[i][1]<minlong)minlong=llr_list[i][1];
+	}
+	if(minlong==0 && maxlong>180){
+		if (llr_list[0][1]==0)llr_list[0][1]=360;
+		if (llr_list[1][1]==0)llr_list[1][1]=360;
+		if (llr_list[2][1]==0)llr_list[2][1]=360;
+	}
+	
+	// correction at the north pole
+	if(llr_list[0][0]==0)llr_list[0][1]=(llr_list[1][1]+llr_list[2][1])/2.0;
+	if(llr_list[1][0]==0)llr_list[1][1]=(llr_list[0][1]+llr_list[2][1])/2.0;
+	if(llr_list[2][0]==0)llr_list[2][1]=(llr_list[0][1]+llr_list[1][1])/2.0;
+			
+	//correction at the south pole
+	if(llr_list[0][0]==180)llr_list[0][1]=(llr_list[1][1]+llr_list[2][1])/2.0;
+	if(llr_list[1][0]==180)llr_list[1][1]=(llr_list[0][1]+llr_list[2][1])/2.0;
+	if(llr_list[2][0]==180)llr_list[2][1]=(llr_list[0][1]+llr_list[1][1])/2.0;
+
+	late=(llr_list[0][0]+llr_list[1][0]+llr_list[2][0])/3.0;
+	longe=(llr_list[0][1]+llr_list[1][1]+llr_list[2][1])/3.0;
+
+	late=90-late; 
+	if(longe>180)longe=(longe-180)-180;
+
+	late=late/180*PI;
+	longe=longe/180*PI;
+	/*}}}*/
+
+	/*Compute area of element:*/
+	area=GetAreaSpherical();
+
+	/*Compute ice thickness change: */
+	Input*	deltathickness_input=inputs->GetInput(SealevelriseDeltathicknessEnum); 
+	if (!deltathickness_input)_error_("delta thickness input needed to compute sea level rise!");
+	deltathickness_input->GetInputAverage(&I);
+
+	/*Compute eustatic compoent:*/
+	_assert_(oceanarea>0.);
+	eustatic += rho_ice*area*I/(oceanarea*rho_water); 
+
+	if(computeelastic | computerigid){
+		int* indices=xNew<int>(gsize);
+		IssmDouble* values=xNew<IssmDouble>(gsize);
+		IssmDouble alpha;
+		IssmDouble delPhi,delLambda;
+		for(int i=0;i<gsize;i++){
+			indices[i]=i;
+
+			IssmDouble G_rigid=0;  //do not remove =0!
+			IssmDouble G_elastic=0;  //do not remove =0!
+
+			/*Compute alpha angle between centroid and current vertex : */
+			lati=latitude[i]/180*PI; longi=longitude[i]/180*PI;
+
+		   delPhi=fabs(lati-late); delLambda=fabs(longi-longe);
+			alpha=2.*asin(sqrt(pow(sin(delPhi/2),2.0)+cos(lati)*cos(late)*pow(sin(delLambda/2),2)));
+
+			//Rigid earth gravitational perturbation:
+			if(computerigid)G_rigid=1.0/2.0/sin(alpha/2.0);
+
+			//Elastic component  (from Eq 17 in Adhikari et al, GMD 2015)
+			if(computeelastic){
+				int index=reCast<int,IssmDouble>(alpha/PI*reCast<IssmDouble,int>(M-1));
+				G_elastic += G_elastic_precomputed[index];
+			}
+
+			/*Add all components to the pSgi or pSgo solution vectors:*/
+			values[i]=3*rho_ice/rho_earth*area/eartharea*I*(G_rigid+G_elastic);
+		}
+		pSgi->SetValues(gsize,indices,values,ADD_VAL);
+		
+		/*free ressources:*/
+		xDelete<IssmDouble>(values);
+		xDelete<int>(indices);
+	}
+	
+	/*Assign output pointer:*/
+	_assert_(!xIsNan<IssmDouble>(eustatic));
+	_assert_(!xIsInf<IssmDouble>(eustatic));
+	*peustatic=eustatic;
+	return;
+}
+/*}}}*/
+void    Tria::SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){ /*{{{*/
+
+	/*diverse:*/
+	int gsize;
+	bool spherical=true;
+	IssmDouble llr_list[NUMVERTICES][3];
+	IssmDouble area;
+	IssmDouble S;  //change in water water level(Farrel and Clarke, Equ. 4)
+	IssmDouble late,longe,re;
+	IssmDouble lati,longi,ri;
+	IssmDouble minlong=400;
+	IssmDouble maxlong=-20;
+
+	/*precomputed elastic green functions:*/
+	IssmDouble* G_elastic_precomputed = NULL;
+	int         M;
+	
+	/*computation of Green functions:*/
+	IssmDouble* G_elastic= NULL;
+	IssmDouble* G_rigid= NULL;
+
+	/*optimization:*/
+	bool store_green_functions=false;
+
+	/*ice properties: */
+	IssmDouble rho_ice,rho_water,rho_earth;
+
+	/*Computational flags:*/
+	bool computerigid = true;
+	bool computeelastic= true;
+
+	/*early return if we are not on the ocean:*/
+	if (!IsWaterInElement())return;
+
+	/*recover computational flags: */
+	this->parameters->FindParam(&computerigid,SealevelriseRigidEnum);
+	this->parameters->FindParam(&computeelastic,SealevelriseElasticEnum);
+	
+	/*early return if rigid or elastic not requested:*/
+	if(!computerigid && !computeelastic) return;
+
+	/*recover material parameters: */
+	rho_water=matpar->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	rho_earth=matpar->GetMaterialParameter(MaterialsEarthDensityEnum);
+
+	/*how many dofs are we working with here? */
+	this->parameters->FindParam(&gsize,MeshNumberofverticesEnum);
+
+	/*From Sg_old, recover water sea level rise:*/
+	S=0; for(int i=0;i<NUMVERTICES;i++) S+=Sg_old[this->vertices[i]->Sid()]/NUMVERTICES;
+
+	/*Compute area of element:*/
+	area=GetAreaSpherical();
+
+	/* Where is the centroid of this element?:{{{*/
+	::GetVerticesCoordinates(&llr_list[0][0],this->vertices,NUMVERTICES,spherical);
+
+	minlong=400; maxlong=-20;
+	for (int i=0;i<NUMVERTICES;i++){
+		llr_list[i][0]=(90-llr_list[i][0]);
+		if(llr_list[i][1]<0)llr_list[i][1]=180+(180+llr_list[i][1]);
+		if(llr_list[i][1]>maxlong)maxlong=llr_list[i][1];
+		if(llr_list[i][1]<minlong)minlong=llr_list[i][1];
+	}
+	if(minlong==0 && maxlong>180){
+		if (llr_list[0][1]==0)llr_list[0][1]=360;
+		if (llr_list[1][1]==0)llr_list[1][1]=360;
+		if (llr_list[2][1]==0)llr_list[2][1]=360;
+	}
+
+	// correction at the north pole
+	if(llr_list[0][0]==0)llr_list[0][1]=(llr_list[1][1]+llr_list[2][1])/2.0;
+	if(llr_list[1][0]==0)llr_list[1][1]=(llr_list[0][1]+llr_list[2][1])/2.0;
+	if(llr_list[2][0]==0)llr_list[2][1]=(llr_list[0][1]+llr_list[1][1])/2.0;
+
+	//correction at the south pole
+	if(llr_list[0][0]==180)llr_list[0][1]=(llr_list[1][1]+llr_list[2][1])/2.0;
+	if(llr_list[1][0]==180)llr_list[1][1]=(llr_list[0][1]+llr_list[2][1])/2.0;
+	if(llr_list[2][0]==180)llr_list[2][1]=(llr_list[0][1]+llr_list[1][1])/2.0;
+
+	late=(llr_list[0][0]+llr_list[1][0]+llr_list[2][0])/3.0;
+	longe=(llr_list[0][1]+llr_list[1][1]+llr_list[2][1])/3.0;
+
+	late=90-late; 
+	if(longe>180)longe=(longe-180)-180;
+
+	late=late/180*PI;
+	longe=longe/180*PI;
+	/*}}}*/
+	
+	if(computeelastic){
+	
+		/*recover elastic green function:*/
+		DoubleVecParam* parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelriseGElasticEnum)); _assert_(parameter);
+		parameter->GetParameterValueByPointer(&G_elastic_precomputed,&M);
+
+		/*initialize G_elastic:*/
+		G_elastic=xNewZeroInit<IssmDouble>(gsize);
+	}
+	if(computerigid) G_rigid=xNewZeroInit<IssmDouble>(gsize);
+
+	int* indices=xNew<int>(gsize);
+	IssmDouble* values=xNewZeroInit<IssmDouble>(gsize);
+	IssmDouble alpha;
+	IssmDouble delPhi,delLambda;
+
+	for(int i=0;i<gsize;i++){
+
+		indices[i]=i; 
+
+		/*Compute alpha angle between centroid and current vertex : */
+		lati=latitude[i]/180*PI; longi=longitude[i]/180*PI;
+
+		delPhi=fabs(lati-late); delLambda=fabs(longi-longe);
+		alpha=2.*asin(sqrt(pow(sin(delPhi/2),2.0)+cos(lati)*cos(late)*pow(sin(delLambda/2),2)));
+
+		//Rigid earth gravitational perturbation:
+		if(computerigid){ 
+			G_rigid[i]=1.0/2.0/sin(alpha/2.0); 
+			values[i]+=3*rho_water/rho_earth*area/eartharea*S*G_rigid[i];
+		}
+
+		//Elastic component  (from Eq 17 in Adhikari et al, GMD 2015)
+		if(computeelastic){
+			int index=reCast<int,IssmDouble>(alpha/PI*(M-1));
+			G_elastic[i] += G_elastic_precomputed[index];
+			values[i]+=3*rho_water/rho_earth*area/eartharea*S*G_elastic[i];
+		}
+	}
+	
+	pSgo->SetValues(gsize,indices,values,ADD_VAL);
+
+	/*free ressources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<int>(indices);
+
+	/*Free ressources:*/
+	if(computeelastic) xDelete<IssmDouble>(G_elastic);
+	if(computerigid) xDelete<IssmDouble>(G_rigid);
+
+	return;
+}
+/*}}}*/
+void    Tria::SealevelriseGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* Sg,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble oceanarea,IssmDouble eartharea){ /*{{{*/
+
+	/*diverse:*/
+	int gsize;
+	bool spherical=true;
+	IssmDouble llr_list[NUMVERTICES][3];
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble area;
+	IssmDouble I, S;		//change in relative ice thickness and sea level
+	IssmDouble late,longe,re;
+	IssmDouble lati,longi,ri;
+	IssmDouble rho_ice,rho_water,rho_earth;
+	IssmDouble minlong=400;
+	IssmDouble maxlong=-20;
+
+	/*precomputed elastic green functions:*/
+	IssmDouble* U_elastic_precomputed = NULL;
+	IssmDouble* H_elastic_precomputed = NULL;
+	int         M;
+	
+	/*computation of Green functions:*/
+	IssmDouble* U_elastic= NULL;
+	IssmDouble* N_elastic= NULL;
+	IssmDouble* E_elastic= NULL;
+
+	/*optimization:*/
+	bool store_green_functions=false;
+
+	/*computational flags:*/
+	bool computerigid = true;
+	bool computeelastic= true;
+
+	/*early return if we are not on the ocean or on an ice cap:*/
+	if(!(this->inputs->Max(MaskIceLevelsetEnum)<0) && !IsWaterInElement()) return; 
+
+	/*recover computational flags: */
+	this->parameters->FindParam(&computerigid,SealevelriseRigidEnum);
+	this->parameters->FindParam(&computeelastic,SealevelriseElasticEnum);
+	
+	/*early return if elastic not requested:*/
+	if(!computeelastic) return;
+
+	/*recover material parameters: */
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	rho_water=matpar->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	rho_earth=matpar->GetMaterialParameter(MaterialsEarthDensityEnum);
+
+	/*how many dofs are we working with here? */
+	this->parameters->FindParam(&gsize,MeshNumberofverticesEnum);
+
+	/*compute area of element:*/
+	area=GetAreaSpherical();
+
+	/*element centroid (spherical): */
+	/* Where is the centroid of this element?:{{{*/
+	::GetVerticesCoordinates(&llr_list[0][0],this->vertices,NUMVERTICES,spherical);
+
+	minlong=400; maxlong=-20;
+	for (int i=0;i<NUMVERTICES;i++){
+		llr_list[i][0]=(90-llr_list[i][0]);
+		if(llr_list[i][1]<0)llr_list[i][1]=180+(180+llr_list[i][1]);
+		if(llr_list[i][1]>maxlong)maxlong=llr_list[i][1];
+		if(llr_list[i][1]<minlong)minlong=llr_list[i][1];
+	}
+	if(minlong==0 && maxlong>180){
+		if (llr_list[0][1]==0)llr_list[0][1]=360;
+		if (llr_list[1][1]==0)llr_list[1][1]=360;
+		if (llr_list[2][1]==0)llr_list[2][1]=360;
+	}
+
+	// correction at the north pole
+	if(llr_list[0][0]==0)llr_list[0][1]=(llr_list[1][1]+llr_list[2][1])/2.0;
+	if(llr_list[1][0]==0)llr_list[1][1]=(llr_list[0][1]+llr_list[2][1])/2.0;
+	if(llr_list[2][0]==0)llr_list[2][1]=(llr_list[0][1]+llr_list[1][1])/2.0;
+
+	//correction at the south pole
+	if(llr_list[0][0]==180)llr_list[0][1]=(llr_list[1][1]+llr_list[2][1])/2.0;
+	if(llr_list[1][0]==180)llr_list[1][1]=(llr_list[0][1]+llr_list[2][1])/2.0;
+	if(llr_list[2][0]==180)llr_list[2][1]=(llr_list[0][1]+llr_list[1][1])/2.0;
+
+	late=(llr_list[0][0]+llr_list[1][0]+llr_list[2][0])/3.0;
+	longe=(llr_list[0][1]+llr_list[1][1]+llr_list[2][1])/3.0;
+
+	late=90-late; 
+	if(longe>180)longe=(longe-180)-180;
+
+	late=late/180*PI;
+	longe=longe/180*PI;
+	/*}}}*/
+
+	/*figure out gravity center of our element (Cartesian): */
+	IssmDouble x_element, y_element, z_element; 
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	x_element=(xyz_list[0][0]+xyz_list[1][0]+xyz_list[2][0])/3.0;
+	y_element=(xyz_list[0][1]+xyz_list[1][1]+xyz_list[2][1])/3.0;
+	z_element=(xyz_list[0][2]+xyz_list[1][2]+xyz_list[2][2])/3.0;
+
+	/*recover elastic Green's functions for displacement:*/
+	DoubleVecParam* U_parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelriseUElasticEnum)); _assert_(U_parameter);
+	DoubleVecParam* H_parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelriseHElasticEnum)); _assert_(H_parameter);
+	U_parameter->GetParameterValueByPointer(&U_elastic_precomputed,&M);
+	H_parameter->GetParameterValueByPointer(&H_elastic_precomputed,&M);
+
+	/*From Sg, recover water sea level rise:*/
+	S=0; for(int i=0;i<NUMVERTICES;i++) S+=Sg[this->vertices[i]->Sid()]/NUMVERTICES;
+	
+	/*Compute ice thickness change: */
+	Input*	deltathickness_input=inputs->GetInput(SealevelriseDeltathicknessEnum); 
+	if (!deltathickness_input)_error_("delta thickness input needed to compute sea level rise!");
+	deltathickness_input->GetInputAverage(&I);
+		
+	/*initialize: */
+	U_elastic=xNewZeroInit<IssmDouble>(gsize);
+	N_elastic=xNewZeroInit<IssmDouble>(gsize);
+	E_elastic=xNewZeroInit<IssmDouble>(gsize);
+
+	int* indices=xNew<int>(gsize);
+	IssmDouble* U_values=xNewZeroInit<IssmDouble>(gsize);
+	IssmDouble* N_values=xNewZeroInit<IssmDouble>(gsize);
+	IssmDouble* E_values=xNewZeroInit<IssmDouble>(gsize);
+	IssmDouble alpha;
+	IssmDouble delPhi,delLambda;
+	IssmDouble dx, dy, dz, x, y, z; 
+	IssmDouble N_azim, E_azim;
+
+	for(int i=0;i<gsize;i++){
+
+		indices[i]=i; 
+
+		/*Compute alpha angle between centroid and current vertex: */
+		lati=latitude[i]/180*PI; longi=longitude[i]/180*PI;
+
+		delPhi=fabs(lati-late); delLambda=fabs(longi-longe);
+		alpha=2.*asin(sqrt(pow(sin(delPhi/2),2.0)+cos(lati)*cos(late)*pow(sin(delLambda/2),2)));
+
+		/*Compute azimuths, both north and east components: */
+		x = xx[i]; y = yy[i]; z = zz[i]; 
+		if(latitude[i]==90){
+			x=1e-12; y=1e-12; 
+		}
+		if(latitude[i]==-90){
+			x=1e-12; y=1e-12; 
+		}
+		dx = x_element-x; dy = y_element-y; dz = z_element-z; 
+		N_azim = (-z*x*dx-z*y*dy+(pow(x,2)+pow(y,2))*dz) /pow((pow(x,2)+pow(y,2))*(pow(x,2)+pow(y,2)+pow(z,2))*(pow(dx,2)+pow(dy,2)+pow(dz,2)),0.5);
+		E_azim = (-y*dx+x*dy) /pow((pow(x,2)+pow(y,2))*(pow(dx,2)+pow(dy,2)+pow(dz,2)),0.5);
+		
+		/*Elastic component  (from Eq 17 in Adhikari et al, GMD 2015): */
+		int index=reCast<int,IssmDouble>(alpha/PI*(M-1));
+		U_elastic[i] += U_elastic_precomputed[index];
+		N_elastic[i] += H_elastic_precomputed[index]*N_azim;
+		E_elastic[i] += H_elastic_precomputed[index]*E_azim;
+
+		/*Add all components to the pUp solution vectors:*/
+		if(this->inputs->Max(MaskIceLevelsetEnum)<0){
+			U_values[i]+=3*rho_ice/rho_earth*area/eartharea*I*U_elastic[i];
+			N_values[i]+=3*rho_ice/rho_earth*area/eartharea*I*N_elastic[i];
+			E_values[i]+=3*rho_ice/rho_earth*area/eartharea*I*E_elastic[i];
+		}
+		else if(IsWaterInElement()) {
+			U_values[i]+=3*rho_water/rho_earth*area/eartharea*S*U_elastic[i];
+			N_values[i]+=3*rho_water/rho_earth*area/eartharea*S*N_elastic[i];
+			E_values[i]+=3*rho_water/rho_earth*area/eartharea*S*E_elastic[i];
+		}
+	}
+	pUp->SetValues(gsize,indices,U_values,ADD_VAL);
+	pNorth->SetValues(gsize,indices,N_values,ADD_VAL);
+	pEast->SetValues(gsize,indices,E_values,ADD_VAL);
+
+	/*free ressources:*/
+	xDelete<int>(indices); 
+	xDelete<IssmDouble>(U_values); xDelete<IssmDouble>(N_values); xDelete<IssmDouble>(E_values);
+	xDelete<IssmDouble>(U_elastic); xDelete<IssmDouble>(N_elastic); xDelete<IssmDouble>(E_elastic);
+
+	return;
+}
+/*}}}*/
+#endif
+
+#ifdef _HAVE_DAKOTA_
+void       Tria::InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols, int name, int type){/*{{{*/
+
+	int             i,t,row;
+	IssmDouble      time;
+	TransientInput *transientinput = NULL;
+	IssmDouble      values[3];
+
+	/*Check that name is an element input*/
+	if(!IsInput(name)) _error_("Enum "<<EnumToStringx(name)<<" is not in IsInput");
+
+	switch(type){
+
+		case VertexEnum:
+			/*Create transient input: */
+			for(t=0;t<ncols;t++){ //ncols is the number of times
+
+				/*create input values: */
+				for(i=0;i<3;i++){
+					row=this->vertices[i]->Sid();
+					values[i]=matrix[ncols*row+t];
+				}
+
+				/*time:*/
+				time=matrix[(nrows-1)*ncols+t];
+
+				if(t==0) transientinput=new TransientInput(name);
+				transientinput->AddTimeInput(new TriaInput(name,values,P1Enum),time);
+				transientinput->Configure(parameters);
+			}
+			this->inputs->AddInput(transientinput);
+			break;
+
+		default:
+			_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
+	}
+
+}
+/*}}}*/
+void       Tria::InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*{{{*/
+
+	int i,j;
+
+	/*Check that name is an element input*/
+	if(!IsInput(name)) _error_("Enum "<<EnumToStringx(name)<<" is not in IsInput");
+
+	switch(type){
+
+		case VertexEnum:
+
+			/*New TriaInput*/
+			IssmDouble values[3];
+
+			/*Get values on the 3 vertices*/
+			for (i=0;i<3;i++){
+				values[i]=vector[this->vertices[i]->Sid()]; //careful, vector of values here is not parallel distributed, but serial distributed (from a serial Dakota core!)
+			}
+
+			/*Branch on the specified type of update: */
+			switch(name){
+				case ThicknessEnum:
+					IssmDouble  thickness[3];
+					IssmDouble  thickness_init[3];
+					IssmDouble  hydrostatic_ratio[3];
+					IssmDouble  surface[3];
+					IssmDouble  bed[3];
+
+					/*retrieve inputs: */
+					GetInputListOnVertices(&thickness_init[0],ThicknessEnum);
+					GetInputListOnVertices(&hydrostatic_ratio[0],GeometryHydrostaticRatioEnum);
+					GetInputListOnVertices(&bed[0],BaseEnum);
+					GetInputListOnVertices(&surface[0],SurfaceEnum);
+
+					/*build new bed and surface: */
+					if (this->IsFloating()){
+						/*hydrostatic equilibrium: */
+						IssmDouble rho_ice,rho_water,di;
+						rho_ice   = this->matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+						rho_water = this->matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+						di        = rho_ice/rho_water;
+
+						/*build new thickness: */
+						for (j=0; j<3; j++) {
+							/*  for observed/interpolated/hydrostatic thickness, remove scaling from any hydrostatic thickness  */
+							if (hydrostatic_ratio[j] >= 0.)
+								thickness[j]=values[j]-(values[j]/thickness_init[j]-1.)*hydrostatic_ratio[j]*surface[j]/(1.-di);
+							/*  for minimum thickness, don't scale  */
+							else
+								thickness[j]=thickness_init[j];
+
+							/*  check the computed thickness and update bed*/
+							if (thickness[j] < 0.) thickness[j]=1./(1.-di);
+							bed[j]=surface[j]-thickness[j];
+						}
+					}
+					else{
+						/*build new thickness: */
+						for (j=0; j<3; j++) {
+							/*  for observed thickness, use scaled value  */
+							if (hydrostatic_ratio[j] >= 0.)
+								thickness[j]=values[j];
+							/*  for minimum thickness, don't scale  */
+							else
+								thickness[j]=thickness_init[j];
+						}
+
+						/*update bed on grounded ice: */
+						for(j=0;j<3;j++)bed[j]=surface[j]-thickness[j];
+					}
+
+					/*Add new inputs: */
+					this->inputs->AddInput(new TriaInput(ThicknessEnum,thickness,P1Enum));
+					this->inputs->AddInput(new TriaInput(BaseEnum,bed,P1Enum));
+					this->inputs->AddInput(new TriaInput(SurfaceEnum,surface,P1Enum));
+
+					break;
+				case MaterialsRheologyBEnum:
+					this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,values,P1Enum));
+					break;
+				default:
+					this->inputs->AddInput(new TriaInput(name,values,P1Enum));
+			}
+			break;
+
+		default:
+			_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
+	}
+
+}
+/*}}}*/
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Tria.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/Tria.h	(revision 21239)
@@ -0,0 +1,206 @@
+/*! \file Tria.h 
+ *  \brief: header file for tria object
+ */
+
+#ifndef _TRIA_H_
+#define _TRIA_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Element.h"
+#include "./ElementHook.h"
+#include "./TriaRef.h"
+class Parameters;
+class Inputs;
+class IoModel;
+class Results;
+class Node;
+class Material;
+class Matpar;
+class Seg;
+class ElementMatrix;
+class ElementVector;
+class Vertex;
+class GaussTria;
+
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/Enum/Enum.h"
+/*}}}*/
+
+class Tria: public Element,public ElementHook,public TriaRef{
+
+	public:
+
+		/*Tria constructors, destructors {{{*/
+		Tria(){};
+		Tria(int tria_id,int tria_sid,int i, IoModel* iomodel,int nummodels);
+		~Tria();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object *copy();
+		void    Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int     ObjectEnum();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{*/
+		#ifdef _HAVE_DAKOTA_
+		void  InputUpdateFromMatrixDakota(IssmDouble* matrix, int nows, int ncols, int name, int type);
+		void  InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type);
+		#endif
+		void  InputUpdateFromIoModel(int index, IoModel* iomodel);
+		void  InputUpdateFromVector(IssmDouble* vector, int name, int type);
+		/*}}}*/
+		/*Element virtual functions definitions: {{{*/
+		void        AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part);
+		void			CalvingRateDev();
+		void			CalvingRateLevermann();
+		IssmDouble  CharacteristicLength(void);
+		void        ComputeBasalStress(Vector<IssmDouble>* sigma_b);
+		void        ComputeDeviatoricStressTensor();
+		void        ComputeSigmaNN();
+		void        ComputeStressTensor();
+		void        ComputeSurfaceNormalVelocity();
+		void        Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters);
+		void        ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index);
+		void        ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum);
+		int         EdgeOnBaseIndex();
+		void        EdgeOnBaseIndices(int* pindex1,int* pindex);
+		int         EdgeOnSurfaceIndex();
+		void        EdgeOnSurfaceIndices(int* pindex1,int* pindex);
+		void        ElementResponse(IssmDouble* presponse,int response_enum);
+		void        ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz);
+		int         FiniteElement(void);
+		IssmDouble  FloatingArea(void);
+		void        FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating);
+		Element*    GetBasalElement(void){_error_("not implemented yet");};
+		void        GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* levelsetvalues);
+		void        GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating);
+		IssmDouble  GetGroundedPortion(IssmDouble* xyz_list);
+		void	      GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum);
+		void	      GetLevelCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum,IssmDouble level);
+		int         GetNodeIndex(Node* node);
+		int         GetNumberOfNodes(void);
+		int         GetNumberOfNodes(int enum_type);
+		int         GetNumberOfVertices(void);
+		void        GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type);
+		Element*    GetUpperElement(void){_error_("not implemented yet");};
+		void        GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,bool onsid);
+		void        GetVerticesCoordinatesBase(IssmDouble** pxyz_list);
+		void        GetVerticesCoordinatesTop(IssmDouble** pxyz_list);
+		IssmDouble  GroundedArea(void);
+		bool        HasEdgeOnBase();
+		bool        HasEdgeOnSurface();
+		IssmDouble  IceMass(void);
+		IssmDouble  IceVolume(void);
+		IssmDouble  IceVolumeAboveFloatation(void);
+		void        InputControlUpdate(IssmDouble scalar,bool save_parameter);
+		void        InputDepthAverageAtBase(int enum_type,int average_enum_type);
+		void        InputExtrude(int enum_type,int start){_error_("not implemented"); /*For penta only*/};
+		void        InputScale(int enum_type,IssmDouble scale_factor);
+		bool	   	IsFaceOnBoundary(void);
+		bool	   	IsIcefront(void);
+		bool        IsNodeOnShelfFromFlags(IssmDouble* flags);
+		bool        IsOnBase();
+		bool        IsOnSurface();
+		bool        IsZeroLevelset(int levelset_enum);
+		IssmDouble  Masscon(IssmDouble* levelset);
+		IssmDouble  MassFlux(IssmDouble* segment);
+		IssmDouble  MassFlux(IssmDouble x1,IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id);
+		void        MaterialUpdateFromTemperature(void){_error_("not implemented yet");};
+		IssmDouble  Misfit(int modelenum,int observationenum,int weightsenum);
+		IssmDouble  MisfitArea(int weightsenum);
+		int         NodalValue(IssmDouble* pvalue, int index, int natureofdataenum);
+		int         NumberofNodesPressure(void);
+		int         NumberofNodesVelocity(void);
+		void        PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding);
+		int         PressureInterpolation();
+		void        ReduceMatrices(ElementMatrix* Ke,ElementVector* pe);
+		void        ResetFSBasalBoundaryCondition(void);
+		void        ResetHooks();
+		void        ResetLevelsetFromSegmentlist(IssmDouble* segments,int numsegments);
+		void        SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index);
+		void        SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters);
+	   Element*    SpawnBasalElement(void);
+		Element*    SpawnTopElement(void);
+		void			StrainRateparallel();
+		void			StrainRateperpendicular();
+		void        StressIntensityFactor(void){_error_("not implemented yet");};
+		IssmDouble  SurfaceArea(void);
+		int         TensorInterpolation();
+		IssmDouble  TimeAdapt();
+		IssmDouble  TotalFloatingBmb(void);
+		IssmDouble  TotalGroundedBmb(void);
+		IssmDouble  TotalSmb(void);
+		void        Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement);
+		int         UpdatePotentialUngrounding(IssmDouble* vertices_potentially_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf);
+		void        ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss);
+		void        ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss);
+		int         VelocityInterpolation();
+		int         VertexConnectivity(int vertexindex);
+		void        VerticalSegmentIndices(int** pindices,int* pnumseg){_error_("not implemented yet");};
+		void			WriteLevelsetSegment(DataSet* segments);
+		void        ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum);
+
+		#ifdef _HAVE_GIA_
+		void   GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y);
+		#endif
+		#ifdef _HAVE_SEALEVELRISE_
+		IssmDouble OceanArea(void);
+		IssmDouble OceanAverage(IssmDouble* Sg);
+		void    SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea);
+		void    SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea);
+		void    SealevelriseGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* Sg,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble oceanarea,IssmDouble eartharea);
+		#endif
+		/*}}}*/
+		/*Tria specific routines:{{{*/
+		void           AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum);
+		void           AddInput(int input_enum, IssmDouble* values, int interpolation_enum);
+		IssmDouble     GetArea(void);
+		IssmDouble 	   GetArea3D(void);
+		IssmDouble 	   GetAreaIce(void);
+		IssmDouble 	   GetAreaSpherical(void);
+		void           GetAreaCoordinates(IssmDouble *area_coordinates,IssmDouble* xyz_zero,IssmDouble* xyz_list,int numpoints);
+		int            GetElementType(void);
+		void           GetInputValue(IssmDouble* pvalue,Node* node,int enumtype);
+		void		GetLevelsetIntersection(int** pindices, int* pnumiceverts, IssmDouble* fraction, int levelset_enum, IssmDouble level);
+		void           GetMaterialInputValue(IssmDouble* pvalue,Node* node,int enumtype);
+		Node*          GetNode(int node_number);
+		void	         InputUpdateFromSolutionOneDof(IssmDouble* solution,int enum_type);
+		void	         InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solution,int enum_type){_error_("not implemented yet");};
+		void           JacobianDeterminant(IssmDouble*  pJdet, IssmDouble* xyz_list,Gauss* gauss);
+		void           JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
+		void           JacobianDeterminantLine(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void           JacobianDeterminantSurface(IssmDouble*  pJdet, IssmDouble* xyz_list,Gauss* gauss);
+		void           JacobianDeterminantTop(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
+		IssmDouble     MinEdgeLength(IssmDouble* xyz_list){_error_("not implemented yet");};
+		Gauss*         NewGauss(void);
+		Gauss*         NewGauss(int order);
+      Gauss*         NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order);
+      Gauss*         NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order);
+      Gauss*         NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert);
+		Gauss*         NewGaussBase(int order);
+		Gauss*         NewGaussLine(int vertex1,int vertex2,int order){_error_("not implemented yet");};
+		Gauss*         NewGaussTop(int order);
+		void           NodalFunctions(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void           NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void           NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void           NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsP1(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void           NodalFunctionsP2(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsTensor(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss);
+		void           NormalBase(IssmDouble* normal,IssmDouble* xyz_list);
+		void           NormalSection(IssmDouble* normal,IssmDouble* xyz_list);
+		void           NormalTop(IssmDouble* normal,IssmDouble* xyz_list);
+		void	         SetClone(int* minranks);
+		void           SetTemporaryElementType(int element_type_in){_error_("not implemented yet");};
+		Seg*	         SpawnSeg(int index1,int index2);
+		IssmDouble     StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){_error_("not implemented yet");};
+		void           UpdateConstraintsExtrudeFromBase(void);
+		void           UpdateConstraintsExtrudeFromTop(void);
+		void           ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not implemented yet");};
+		/*}}}*/
+
+};
+#endif  /* _TRIA_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/TriaRef.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/TriaRef.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/TriaRef.cpp	(revision 21239)
@@ -0,0 +1,539 @@
+/*!\file TriaRef.c
+ * \brief: implementation of the TriaRef object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMNODESP0  1
+#define NUMNODESP1  3
+#define NUMNODESP1b 4
+#define NUMNODESP2  6
+#define NUMNODESP2b 7
+#define NUMNODESMAX 7
+
+/*Object constructors and destructor*/
+TriaRef::TriaRef(){/*{{{*/
+}
+/*}}}*/
+TriaRef::~TriaRef(){/*{{{*/
+}
+/*}}}*/
+
+/*Reference Element numerics*/
+void TriaRef::GetInputDerivativeValue(IssmDouble* p, IssmDouble* plist,IssmDouble* xyz_list, Gauss* gauss,int finiteelement){/*{{{*/
+	/*From node values of parameter p (plist[0],plist[1],plist[2]), return parameter derivative value at gaussian 
+	 * point specified by gauss_basis:
+	 *   dp/dx=plist[0]*dh1/dx+plist[1]*dh2/dx+plist[2]*dh3/dx
+	 *   dp/dx=plist[0]*dh1/dx+plist[1]*dh2/dx+plist[2]*dh3/dx
+	 *
+	 * p is a vector already allocated.
+	 *
+	 * WARNING: For a significant gain in performance, it is better to use
+	 * static memory allocation instead of dynamic.
+	 */
+
+	/*Allocate derivatives of basis functions*/
+	IssmDouble  dbasis[2*NUMNODESMAX];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+	_assert_(numnodes<=NUMNODESMAX);
+
+	/*Get basis functions derivatives at this point*/
+	GetNodalFunctionsDerivatives(&dbasis[0],xyz_list,gauss,finiteelement);
+
+	/*Calculate parameter for this Gauss point*/
+	IssmDouble dpx=0.;
+	IssmDouble dpy=0.;
+	for(int i=0;i<numnodes;i++) dpx += dbasis[0*numnodes+i]*plist[i];
+	for(int i=0;i<numnodes;i++) dpy += dbasis[1*numnodes+i]*plist[i];
+
+	/*Assign values*/
+	p[0]=dpx;
+	p[1]=dpy;
+
+}
+/*}}}*/
+void TriaRef::GetInputValue(IssmDouble* p, IssmDouble* plist, Gauss* gauss,int finiteelement){/*{{{*/
+	/* WARNING: For a significant gain in performance, it is better to use
+	 * static memory allocation instead of dynamic.*/
+
+	/*Allocate basis functions*/
+	IssmDouble  basis[NUMNODESMAX];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+	_assert_(numnodes<=NUMNODESMAX);
+
+	/*Get basis functions at this point*/
+	GetNodalFunctions(&basis[0],gauss,finiteelement);
+
+	/*Calculate parameter for this Gauss point*/
+	IssmDouble value =0.;
+	for(int i=0;i<numnodes;i++) value += basis[i]*plist[i];
+
+	/*Assign output pointer*/
+	*p = value;
+}
+/*}}}*/
+void TriaRef::GetJacobian(IssmDouble* J, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*The Jacobian is constant over the element, discard the gaussian points. 
+	 * J is assumed to have been allocated of size NDOF2xNDOF2.*/
+
+	IssmDouble x1 = xyz_list[3*0+0];
+	IssmDouble y1 = xyz_list[3*0+1];
+	IssmDouble x2 = xyz_list[3*1+0];
+	IssmDouble y2 = xyz_list[3*1+1];
+	IssmDouble x3 = xyz_list[3*2+0];
+	IssmDouble y3 = xyz_list[3*2+1];
+
+	J[2*0+0] = 0.5*(x2-x1);
+	J[2*1+0] = SQRT3/6.0*(2*x3-x1-x2);
+	J[2*0+1] = 0.5*(y2-y1);
+	J[2*1+1] = SQRT3/6.0*(2*y3-y1-y2);
+}
+/*}}}*/
+void TriaRef::GetJacobianDeterminant(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*The Jacobian determinant is constant over the element, discard the gaussian points. 
+	 * J is assumed to have been allocated of size NDOF2xNDOF2.*/
+	IssmDouble J[2][2];
+
+	/*Get Jacobian*/
+	GetJacobian(&J[0][0],xyz_list,gauss);
+
+	/*Get Determinant*/
+	Matrix2x2Determinant(Jdet,&J[0][0]);
+	if(*Jdet<0) _error_("negative jacobian determinant!");
+
+}
+/*}}}*/
+void TriaRef::GetJacobianInvert(IssmDouble*  Jinv, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	/*Jacobian*/
+	IssmDouble J[2][2];
+
+	/*Call Jacobian routine to get the jacobian:*/
+	GetJacobian(&J[0][0], xyz_list, gauss);
+
+	/*Invert Jacobian matrix: */
+	Matrix2x2Invert(Jinv,&J[0][0]);
+
+}
+/*}}}*/
+void TriaRef::GetNodalFunctions(IssmDouble* basis,Gauss* gauss_in,int finiteelement){/*{{{*/
+	/*This routine returns the values of the nodal functions  at the gaussian point.*/
+
+	_assert_(basis);
+
+	/*Cast gauss to GaussTria*/
+	_assert_(gauss_in->Enum()==GaussTriaEnum);
+	GaussTria* gauss = xDynamicCast<GaussTria*>(gauss_in);
+
+	switch(finiteelement){
+		case NoneEnum:
+			return;
+		case P0Enum:
+			basis[0]=1.;
+			return;
+		case P1Enum: case P1DGEnum:
+			basis[0]=gauss->coord1;
+			basis[1]=gauss->coord2;
+			basis[2]=gauss->coord3;
+			return;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			/*Corner nodes*/
+			basis[0]=gauss->coord1;
+			basis[1]=gauss->coord2;
+			basis[2]=gauss->coord3;
+			/*bubble*/
+			basis[3]=27.*gauss->coord1*gauss->coord2*gauss->coord3;
+			return;
+		case P2Enum:
+			/*Corner nodes*/
+			basis[0]=gauss->coord1*(2.*gauss->coord1-1.);
+			basis[1]=gauss->coord2*(2.*gauss->coord2-1.);
+			basis[2]=gauss->coord3*(2.*gauss->coord3-1.);
+			/*Mid-sides*/
+			basis[3]=4.*gauss->coord3*gauss->coord2;
+			basis[4]=4.*gauss->coord3*gauss->coord1;
+			basis[5]=4.*gauss->coord1*gauss->coord2;
+			return;
+		case P2bubbleEnum: case P2bubblecondensedEnum:
+			/*Corner nodes*/
+			basis[0]=gauss->coord1*(2.*gauss->coord1-1.);
+			basis[1]=gauss->coord2*(2.*gauss->coord2-1.);
+			basis[2]=gauss->coord3*(2.*gauss->coord3-1.);
+			/*Mid-sides*/
+			basis[3]=4.*gauss->coord3*gauss->coord2;
+			basis[4]=4.*gauss->coord3*gauss->coord1;
+			basis[5]=4.*gauss->coord1*gauss->coord2;
+			/*bubble*/
+			basis[6]=27.*gauss->coord1*gauss->coord2*gauss->coord3;
+			return;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+}
+/*}}}*/
+void TriaRef::GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, Gauss* gauss,int finiteelement){/*{{{*/
+
+	/*This routine returns the values of the nodal functions derivatives  (with respect to the 
+	 * actual coordinate system): */
+	IssmDouble    Jinv[2][2];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+
+	/*Get nodal functions derivatives in reference triangle*/
+	IssmDouble dbasis_ref[2*NUMNODESMAX];
+	GetNodalFunctionsDerivativesReference(dbasis_ref,gauss,finiteelement); 
+
+	/*Get Jacobian invert: */
+	GetJacobianInvert(&Jinv[0][0], xyz_list, gauss);
+
+	/*Build dbasis: 
+	 * [dhi/dx]= Jinv*[dhi/dr]
+	 * [dhi/dy]       [dhi/ds]
+	 */
+	for(int i=0;i<numnodes;i++){
+		dbasis[numnodes*0+i] = Jinv[0][0]*dbasis_ref[0*numnodes+i]+Jinv[0][1]*dbasis_ref[1*numnodes+i];
+		dbasis[numnodes*1+i] = Jinv[1][0]*dbasis_ref[0*numnodes+i]+Jinv[1][1]*dbasis_ref[1*numnodes+i];
+	}
+
+}
+/*}}}*/
+void TriaRef::GetSegmentBFlux(IssmDouble* B,Gauss* gauss, int index1,int index2,int finiteelement){/*{{{*/
+	/*Compute B  matrix. B=[phi1 phi2 -phi3 -phi4]
+	 *
+	 * and phi1=phi3 phi2=phi4
+	 *
+	 * We assume B has been allocated already, of size: 1x4
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+
+	/*Get nodal functions*/
+	IssmDouble* basis=xNew<IssmDouble>(numnodes);
+	GetNodalFunctions(basis,gauss,finiteelement);
+
+	/*Build B for this segment*/
+	B[0] = +basis[index1];
+	B[1] = +basis[index2];
+	B[2] = -basis[index1];
+	B[3] = -basis[index2];
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(basis);
+}
+/*}}}*/
+void TriaRef::GetSegmentBprimeFlux(IssmDouble* Bprime,Gauss* gauss, int index1,int index2,int finiteelement){/*{{{*/
+	/*Compute Bprime  matrix. Bprime=[phi1 phi2 phi3 phi4]
+	 *
+	 * and phi1=phi3 phi2=phi4
+	 *
+	 * We assume Bprime has been allocated already, of size: 1x4
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+
+	/*Get nodal functions*/
+	IssmDouble* basis=xNew<IssmDouble>(numnodes);
+	GetNodalFunctions(basis,gauss,finiteelement);
+
+	/*Build B'*/
+	Bprime[0] = basis[index1];
+	Bprime[1] = basis[index2];
+	Bprime[2] = basis[index1];
+	Bprime[3] = basis[index2];
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(basis);
+}
+/*}}}*/
+void TriaRef::GetSegmentJacobianDeterminant(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*The Jacobian determinant is constant over the element, discard the gaussian points. 
+	 * J is assumed to have been allocated*/
+
+	IssmDouble x1 = xyz_list[3*0+0];
+	IssmDouble y1 = xyz_list[3*0+1];
+	IssmDouble x2 = xyz_list[3*1+0];
+	IssmDouble y2 = xyz_list[3*1+1];
+
+	*Jdet = .5*sqrt(pow(x2-x1,2) + pow(y2-y1,2));
+	if(*Jdet<0) _error_("negative jacobian determinant!");
+
+}
+/*}}}*/
+void TriaRef::GetSegmentNodalFunctions(IssmDouble* basis,Gauss* gauss,int index1,int index2,int finiteelement){/*{{{*/
+	/*This routine returns the values of the nodal functions  at the gaussian point.*/
+
+	_assert_(index1>=0 && index1<3);
+	_assert_(index2>=0 && index2<3);
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+
+	/*Get nodal functions*/
+	IssmDouble* triabasis=xNew<IssmDouble>(numnodes);
+	GetNodalFunctions(triabasis,gauss,finiteelement);
+
+	switch(finiteelement){
+		case P1Enum: case P1DGEnum:
+			basis[0]=triabasis[index1];
+			basis[1]=triabasis[index2];
+			xDelete<IssmDouble>(triabasis);
+			return;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			basis[0]=triabasis[index1];
+			basis[1]=triabasis[index2];
+			xDelete<IssmDouble>(triabasis);
+			return;
+		case P2Enum:
+			_assert_(index2<index1);
+			basis[0]=triabasis[index1];
+			basis[1]=triabasis[index2];
+			basis[2]=triabasis[3+index2-1];
+			xDelete<IssmDouble>(triabasis);
+			return;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+	/*Clean up*/
+	xDelete<IssmDouble>(triabasis);
+}
+/*}}}*/
+void TriaRef::GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,Gauss* gauss_in,int finiteelement){/*{{{*/
+	/*This routine returns the values of the nodal functions derivatives  (with respect to the 
+	 * natural coordinate system) at the gaussian point. */
+
+	_assert_(dbasis && gauss_in);
+
+	/*Cast gauss to GaussTria*/
+	_assert_(gauss_in->Enum()==GaussTriaEnum);
+	GaussTria* gauss = xDynamicCast<GaussTria*>(gauss_in);
+
+	switch(finiteelement){
+		case P0Enum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP0*0+0] = 0.;
+			dbasis[NUMNODESP0*1+0] = 0.;
+			return;
+		case P1Enum: case P1DGEnum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP1*0+0] = -0.5;
+			dbasis[NUMNODESP1*1+0] = -SQRT3/6.;
+			/*Nodal function 2*/
+			dbasis[NUMNODESP1*0+1] = 0.5;
+			dbasis[NUMNODESP1*1+1] = -SQRT3/6.;
+			/*Nodal function 3*/
+			dbasis[NUMNODESP1*0+2] = 0;
+			dbasis[NUMNODESP1*1+2] = SQRT3/3.;
+			return;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP1b*0+0] = -0.5;
+			dbasis[NUMNODESP1b*1+0] = -SQRT3/6.;
+			/*Nodal function 2*/
+			dbasis[NUMNODESP1b*0+1] = 0.5;
+			dbasis[NUMNODESP1b*1+1] = -SQRT3/6.;
+			/*Nodal function 3*/
+			dbasis[NUMNODESP1b*0+2] = 0;
+			dbasis[NUMNODESP1b*1+2] = SQRT3/3.;
+			/*Nodal function 4*/
+			dbasis[NUMNODESP1b*0+3] = 27.*(-.5*gauss->coord2*gauss->coord3 + .5*gauss->coord1*gauss->coord3);
+			dbasis[NUMNODESP1b*1+3] = 27.*SQRT3*(-1./6.*gauss->coord2*gauss->coord3 - 1./6.*gauss->coord1*gauss->coord3 +1./3.*gauss->coord1*gauss->coord2);
+			return;
+		case P2Enum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP2*0+0] = -2.*gauss->coord1 + 0.5;
+			dbasis[NUMNODESP2*1+0] = -2.*SQRT3/3.*gauss->coord1 + SQRT3/6.;
+			/*Nodal function 2*/
+			dbasis[NUMNODESP2*0+1] = +2.*gauss->coord2 - 0.5;
+			dbasis[NUMNODESP2*1+1] = -2.*SQRT3/3.*gauss->coord2 + SQRT3/6.;
+			/*Nodal function 3*/
+			dbasis[NUMNODESP2*0+2] = 0.;
+			dbasis[NUMNODESP2*1+2] = +4.*SQRT3/3.*gauss->coord3 - SQRT3/3.;
+			/*Nodal function 4*/
+			dbasis[NUMNODESP2*0+3] = +2.*gauss->coord3;
+			dbasis[NUMNODESP2*1+3] = +4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3;
+			/*Nodal function 5*/
+			dbasis[NUMNODESP2*0+4] = -2.*gauss->coord3;
+			dbasis[NUMNODESP2*1+4] = +4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3;
+			/*Nodal function 6*/
+			dbasis[NUMNODESP2*0+5] = 2.*(gauss->coord1-gauss->coord2);
+			dbasis[NUMNODESP2*1+5] = -2.*SQRT3/3.*(gauss->coord1+gauss->coord2);
+			return;
+		case P2bubbleEnum: case P2bubblecondensedEnum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP2b*0+0] = -2.*gauss->coord1 + 0.5;
+			dbasis[NUMNODESP2b*1+0] = -2.*SQRT3/3.*gauss->coord1 + SQRT3/6.;
+			/*Nodal function 2*/
+			dbasis[NUMNODESP2b*0+1] = +2.*gauss->coord2 - 0.5;
+			dbasis[NUMNODESP2b*1+1] = -2.*SQRT3/3.*gauss->coord2 + SQRT3/6.;
+			/*Nodal function 3*/
+			dbasis[NUMNODESP2b*0+2] = 0.;
+			dbasis[NUMNODESP2b*1+2] = +4.*SQRT3/3.*gauss->coord3 - SQRT3/3.;
+			/*Nodal function 4*/
+			dbasis[NUMNODESP2b*0+3] = +2.*gauss->coord3;
+			dbasis[NUMNODESP2b*1+3] = +4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3;
+			/*Nodal function 5*/
+			dbasis[NUMNODESP2b*0+4] = -2.*gauss->coord3;
+			dbasis[NUMNODESP2b*1+4] = +4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3;
+			/*Nodal function 6*/
+			dbasis[NUMNODESP2b*0+5] = 2.*(gauss->coord1-gauss->coord2);
+			dbasis[NUMNODESP2b*1+5] = -2.*SQRT3/3.*(gauss->coord1+gauss->coord2);
+			/*Nodal function 7*/
+			dbasis[NUMNODESP2b*0+6] = 27.*(-.5*gauss->coord2*gauss->coord3 + .5*gauss->coord1*gauss->coord3);
+			dbasis[NUMNODESP2b*1+6] = 27.*SQRT3*(-1./6.*gauss->coord2*gauss->coord3 - 1./6.*gauss->coord1*gauss->coord3 +1./3.*gauss->coord1*gauss->coord2);
+			return;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+}
+/*}}}*/
+void TriaRef::NodeOnEdgeIndices(int* pnumindices,int** pindices,int index,int finiteelement){/*{{{*/
+
+	/*Output*/
+	int  numindices;
+	int* indices = NULL;
+
+	switch(finiteelement){
+		case P1Enum: case P1DGEnum: case P1bubbleEnum: case P1bubblecondensedEnum:
+			numindices = 2;
+			indices    = xNew<int>(numindices);
+			switch(index){
+				case 0:
+					indices[0] = 1;
+					indices[1] = 2;
+					break;
+				case 1:
+					indices[0] = 2;
+					indices[1] = 0;
+					break;
+				case 2:
+					indices[0] = 0;
+					indices[1] = 1;
+					break;
+				default:
+					_error_("Edge index provided ("<<index<<") is not between 0 and 2");
+			}
+			break;
+		case P2Enum:
+			numindices = 3;
+			indices    = xNew<int>(numindices);
+			switch(index){
+				case 0:
+					indices[0] = 1;
+					indices[1] = 2;
+					indices[2] = 3;
+					break;
+				case 1:
+					indices[0] = 2;
+					indices[1] = 0;
+					indices[2] = 4;
+					break;
+				case 2:
+					indices[0] = 0;
+					indices[1] = 1;
+					indices[2] = 5;
+					break;
+				default:
+					_error_("Edge index provided ("<<index<<") is not between 0 and 2");
+			}
+			break;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+	/*Assign output pointer*/
+	*pnumindices = numindices;
+	*pindices    = indices;
+}
+/*}}}*/
+int  TriaRef::NumberofNodes(int finiteelement){/*{{{*/
+
+	switch(finiteelement){
+		case NoneEnum:                return 0;
+		case P0Enum:                  return NUMNODESP0;
+		case P1Enum:                  return NUMNODESP1;
+		case P1DGEnum:                return NUMNODESP1;
+		case P1bubbleEnum:            return NUMNODESP1b;
+		case P1bubblecondensedEnum:   return NUMNODESP1b;
+		case P2Enum:                  return NUMNODESP2;
+		case P2bubbleEnum:            return NUMNODESP2b;
+		case P2bubblecondensedEnum:   return NUMNODESP2b;
+		case P1P1Enum:                return NUMNODESP1*2;
+		case P1P1GLSEnum:             return NUMNODESP1*2;
+		case MINIcondensedEnum:       return NUMNODESP1b+NUMNODESP1;
+		case MINIEnum:                return NUMNODESP1b+NUMNODESP1;
+		case TaylorHoodEnum:          return NUMNODESP2+NUMNODESP1;
+		case LATaylorHoodEnum:        return NUMNODESP2;
+		case XTaylorHoodEnum:         return NUMNODESP2+NUMNODESP1;
+		case CrouzeixRaviartEnum:     return NUMNODESP2b+NUMNODESP1;
+		case LACrouzeixRaviartEnum:   return NUMNODESP2b;
+		default: _error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
+int  TriaRef::PressureInterpolation(int fe_stokes){/*{{{*/
+
+	switch(fe_stokes){
+		case P1P1Enum:              return P1Enum;
+		case P1P1GLSEnum:           return P1Enum;
+		case MINIcondensedEnum:     return P1Enum;
+		case MINIEnum:              return P1Enum;
+		case TaylorHoodEnum:        return P1Enum;
+		case LATaylorHoodEnum:      return NoneEnum;
+		case XTaylorHoodEnum:       return P1Enum;
+		case CrouzeixRaviartEnum:   return P1DGEnum;
+		case LACrouzeixRaviartEnum: return NoneEnum;
+		default:       _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
+int  TriaRef::TensorInterpolation(int fe_stokes){/*{{{*/
+	/*This routine returns the values of the nodal functions  at the gaussian point.*/
+
+	switch(fe_stokes){
+		case XTaylorHoodEnum: return P1DGEnum;
+		default: _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet");
+	}
+}
+/*}}}*/
+int  TriaRef::VelocityInterpolation(int fe_stokes){/*{{{*/
+
+	switch(fe_stokes){
+		case P1P1Enum:              return P1Enum;
+		case P1P1GLSEnum:           return P1Enum;
+		case MINIcondensedEnum:     return P1bubbleEnum;
+		case MINIEnum:              return P1bubbleEnum;
+		case TaylorHoodEnum:        return P2Enum;
+		case LATaylorHoodEnum:      return P2Enum;
+		case XTaylorHoodEnum:       return P2Enum;
+		case CrouzeixRaviartEnum:   return P2bubbleEnum;
+		case LACrouzeixRaviartEnum: return P2bubbleEnum;
+		default:       _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/TriaRef.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/TriaRef.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Elements/TriaRef.h	(revision 21239)
@@ -0,0 +1,38 @@
+/*!\file:  TriaRef.h
+ * \brief abstract class for handling Tria oriented routines, like nodal functions, 
+ * strain rate generation, etc ...
+ */ 
+
+#ifndef _TRIAREF_H_
+#define _TRIAREF_H_
+
+class Gauss;
+
+class TriaRef{
+
+	public: 
+		TriaRef();
+		~TriaRef();
+
+		/*Numerics*/
+		void GetInputDerivativeValue(IssmDouble* pp, IssmDouble* plist,IssmDouble* xyz_list, Gauss* gauss,int finiteelement);
+		void GetInputValue(IssmDouble* pp, IssmDouble* plist, Gauss* gauss,int finiteelement);
+		void GetJacobian(IssmDouble* J, IssmDouble* xyz_list,Gauss* gauss);
+		void GetJacobianDeterminant(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void GetJacobianInvert(IssmDouble*  Jinv, IssmDouble* xyz_list,Gauss* gauss);
+		void GetNodalFunctions(IssmDouble* basis,Gauss* gauss,int finiteelement);
+		void GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, Gauss* gauss,int finiteelement);
+		void GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,Gauss* gauss,int finiteelement);
+		void GetSegmentBFlux(IssmDouble* B,Gauss* gauss, int index1,int index2,int finiteelement);
+		void GetSegmentBprimeFlux(IssmDouble* Bprime,Gauss* gauss, int index1,int index2,int finiteelement);
+		void GetSegmentJacobianDeterminant(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void GetSegmentNodalFunctions(IssmDouble* basis,Gauss* gauss, int index1,int index2,int finiteelement);
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*do nothing */};
+		void NodeOnEdgeIndices(int* pnumindices,int** pindices,int index,int finiteelement);
+		int  NumberofNodes(int finiteelement);
+		int  PressureInterpolation(int fe_stokes);
+		int  TensorInterpolation(int fe_stokes);
+		int  VelocityInterpolation(int fe_stokes);
+
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/ExternalResults/ExternalResult.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/ExternalResults/ExternalResult.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/ExternalResults/ExternalResult.h	(revision 21239)
@@ -0,0 +1,32 @@
+/*!\file:  ExternalResult.h
+ * \brief abstract class for ExternalResult object
+ */ 
+
+#ifndef _EXTERNALRESULT_H_
+#define _EXTERNALRESULT_H_
+
+/*Headers:*/
+/*{{{*/
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../datastructures/datastructures.h"
+#include "../Node.h"
+/*}}}*/
+
+class ExternalResult: public Object{
+
+	public: 
+
+		virtual         ~ExternalResult(){};
+		virtual int    GetResultEnum(void)=0;
+		virtual char*  GetResultName(void)=0;
+		virtual int    GetStep(void)=0;
+		virtual double GetValue(void)=0;
+		virtual void   WriteData(FILE* fid,bool io_gather)=0;
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/ExternalResults/GenericExternalResult.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/ExternalResults/GenericExternalResult.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/ExternalResults/GenericExternalResult.h	(revision 21239)
@@ -0,0 +1,647 @@
+/*! \file GenericExternalResult.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _GENERIC_EXTERNAL_RESULT_
+#define _GENERIC_EXTERNAL_RESULT_
+
+/*Headers:{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <cstring>
+#include "./ExternalResult.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+template <class ResultType> 
+class GenericExternalResult: public ExternalResult {
+
+	private: 
+		int        id;
+		char*      result_name;
+		ResultType value;
+		int        M;
+		int        N;
+		int        step;
+		IssmDouble time;
+
+	public:
+		/*Diverse: must be in front, as it is used in what follows*/
+		void GenericEcho(void){/*{{{*/
+			_printf_("   id          : " << this->id << "\n");
+			_printf_("   result_name : " << this->result_name<< "\n");
+			_printf_("   step        : " << this->step << "\n");
+			_printf_("   time        : " << this->time << "\n");
+		}
+		/*}}}*/
+		void GenericWriteData(FILE* fid){/*{{{*/ 
+
+			IssmPDouble  passiveDouble;
+
+			/*First write name: */
+			int length=(strlen(this->result_name)+1)*sizeof(char);
+			fwrite(&length,sizeof(int),1,fid);
+			fwrite(this->result_name,length,1,fid);
+
+			/*Now write time and step: */
+			passiveDouble=reCast<IssmPDouble>(time);
+			fwrite(&passiveDouble,sizeof(IssmPDouble),1,fid);
+			fwrite(&step,sizeof(int),1,fid);
+		} /*}}}*/
+		void GenericMarshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+
+			MARSHALLING_ENUM(this->ObjectEnum());
+
+			bool isnull=true;
+			if(marshall_direction==MARSHALLING_FORWARD || marshall_direction == MARSHALLING_SIZE) if(value) isnull=false;
+
+			MARSHALLING(id);
+			MARSHALLING(result_name);
+			MARSHALLING(isnull)
+			if (!isnull) MARSHALLING(value) else value=0;
+			MARSHALLING(step);
+			MARSHALLING(time);
+
+		}  /*}}}*/
+
+		/*GenericExternalResult constructors and  destructors*/
+		GenericExternalResult(){ /*{{{*/
+			id          = 0;
+			result_name = NULL;
+			M           = 0;
+			N           = 0;
+			step        = 0;
+			time        = 0;
+			value       = NULL;
+		} /*}}}*/
+		GenericExternalResult(int in_id, int in_enum_type,ResultType in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/
+			_error_("template GenericExternalResult(int in_id, int in_enum_type,double* in_values, int in_M,int in_N,int in_step,IssmDouble in_time) not implemented for this ResultType\n");
+		}
+/*}}}*/
+		GenericExternalResult(int in_id,const char* name_in,ResultType in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/
+			_error_("template GenericExternalResult(int in_id, int in_enum_type,double* in_values, int in_M,int in_N,int in_step,IssmDouble in_time) not implemented for this ResultType\n");
+		}
+		/*}}}*/
+		GenericExternalResult(int in_id, int in_enum_type,ResultType in_value,int in_step, IssmDouble in_time){ /*{{{*/
+			id        = in_id;
+			value     = in_value;
+			step      = in_step;
+			time      = in_time;
+			M         = 1;
+			N         = 1;
+
+			/*Convert enum to name*/
+			EnumToStringx(&this->result_name,in_enum_type);
+		}
+		/*}}}*/
+		GenericExternalResult(int in_id, int in_enum_type,ResultType in_value){ /*{{{*/
+			id        = in_id;
+			value     = in_value;
+			step      = UNDEF;
+			time      = UNDEF;
+			M         = 1;
+			N         = 1;
+
+			/*Convert enum to name*/
+			EnumToStringx(&this->result_name,in_enum_type);
+		}
+		/*}}}*/
+		GenericExternalResult(int in_id,const char* in_result_name,ResultType in_value,int in_step, IssmDouble in_time){ /*{{{*/
+			id        = in_id;
+			value     = in_value;
+			step      = in_step;
+			time      = in_time;
+			M         = 1;
+			N         = 1;
+
+			/*Copy name*/
+			this->result_name = xNew<char>(strlen(in_result_name)+1);
+			xMemCpy<char>(this->result_name,in_result_name,strlen(in_result_name)+1);
+		}
+		/*}}}*/
+		~GenericExternalResult(){ /*{{{*/
+			xDelete<char>(result_name);
+		} /*}}}*/
+
+		/*Object virtual functions definitions:*/
+		Object* copy(void) { /*{{{*/
+			return new GenericExternalResult<ResultType>(this->id,this->result_name,this->value,this->step,this->time);
+		} /*}}}*/
+		void Echo(void){ /*{{{*/
+			this->DeepEcho();
+		}
+		/*}}}*/
+		void DeepEcho(void){ /*{{{*/
+			_error_("template DeepEcho not implemented for this ResultType\n");
+		}
+		/*}}}*/
+		int Id(void){ /*{{{*/ 
+			return -1; 
+		} /*}}}*/
+		int ObjectEnum(void){ /*{{{*/
+			_error_("template ObjectEnum not implemented for this ResultType\n");
+		} /*}}}*/
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
+
+		/*GenericExternalResult management: */
+void  WriteData(FILE* fid,bool io_gather){ /*{{{*/
+
+	int     my_rank;
+	int     type;
+	int     size;
+	IssmPDouble  passiveDouble;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	/*return if now on cpu 0: */
+	if(my_rank)return;
+
+	/*use generic part, same for all ResultTypes: */
+	this->GenericWriteData(fid);
+
+	/*writing a IssmPDouble for Matlab or Python to post-process, type is 1, size is 1: */
+	type=1;
+	size=1;
+	fwrite(&type,sizeof(int),1,fid);
+	fwrite(&size,sizeof(int),1,fid);
+
+	/*cast to a IssmPDouble: */
+	passiveDouble=reCast<IssmPDouble>(value);
+	fwrite(&passiveDouble,size*sizeof(IssmPDouble),1,fid);
+
+} /*}}}*/
+char* GetResultName(void){ /*{{{*/
+		char* name = xNew<char>(strlen(this->result_name)+1);
+		xMemCpy<char>(name,this->result_name,strlen(this->result_name)+1);
+		return name;
+} /*}}}*/
+int GetResultEnum(void){ /*{{{*/
+		return StringToEnumx(this->result_name,false);
+} /*}}}*/
+int   GetStep(void){ /*{{{*/
+	return this->step;
+} /*}}}*/
+double GetValue(void){ /*{{{*/
+	/*Only supported by IssmPDouble result, error out by default*/
+	_error_("not supported for this type of result");
+} /*}}}*/
+double* GetValues(void){ /*{{{*/
+	/*Only supported by IssmPDouble* result, error out by default*/
+	_error_("not supported for this type of result");
+} /*}}}*/
+};
+
+/*Specific instantiations for bool: */
+template <> inline void GenericExternalResult<bool>::DeepEcho(void){ /*{{{*/
+
+	_printf_("GenericExternalResult<bool>:\n");
+	this->GenericEcho();
+	_printf_("   value: " <<(this->value?"true":"false") << "\n");
+
+} /*}}}*/
+template <> inline int GenericExternalResult<bool>::ObjectEnum(void){ /*{{{*/
+	return BoolExternalResultEnum;
+} /*}}}*/
+template <> inline void GenericExternalResult<bool>::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+
+	this->GenericMarshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+}  /*}}}*/
+
+/*Specific instantiations for int: */
+template <> inline void GenericExternalResult<int>::DeepEcho(void){ /*{{{*/
+
+	_printf_("GenericExternalResult<int>:\n");
+	this->GenericEcho();
+	_printf_("   value: " << this->value << "\n");
+
+} /*}}}*/
+template <> inline int GenericExternalResult<int>::ObjectEnum(void){ /*{{{*/
+	return IntExternalResultEnum;
+} /*}}}*/
+template <> inline void GenericExternalResult<int>::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+
+	this->GenericMarshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+}  /*}}}*/
+
+/*Specific instantiations for double: */
+template <> inline void GenericExternalResult<double>::DeepEcho(void){ /*{{{*/
+
+	_printf_("GenericExternalResult<double>:\n");
+	this->GenericEcho();
+	_printf_("   value: " << this->value << "\n");
+
+} /*}}}*/
+template <> inline int GenericExternalResult<double>::ObjectEnum(void){ /*{{{*/
+	return DoubleExternalResultEnum;
+} /*}}}*/
+template <> inline double GenericExternalResult<double>::GetValue(void){ /*{{{*/
+	return value;
+} /*}}}*/
+template <> inline void GenericExternalResult<double>::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+
+	this->GenericMarshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+}  /*}}}*/
+
+/*Specific instantiations for char*: */
+template <> inline GenericExternalResult<char*>::GenericExternalResult(int in_id, int in_enum_type,char* in_value,int in_step, IssmDouble in_time){ /*{{{*/
+
+	id = in_id;
+	value = xNew<char>(strlen(in_value)+1);
+	xMemCpy<char>(value,in_value,(strlen(in_value)+1));
+	step  = in_step;
+	time  = in_time;
+	M     = 1;
+	N     = 1;
+
+	/*Convert enum to name*/
+	EnumToStringx(&this->result_name,in_enum_type);
+
+} /*}}}*/
+template <> inline GenericExternalResult<char*>::GenericExternalResult(int in_id, int in_enum_type,char* in_value){ /*{{{*/
+
+	id = in_id;
+	value = xNew<char>(strlen(in_value)+1);
+	xMemCpy<char>(value,in_value,(strlen(in_value)+1));
+	step = UNDEF;  
+	time  = UNDEF;
+
+	/*Convert enum to name*/
+	EnumToStringx(&this->result_name,in_enum_type);
+
+} /*}}}*/
+template <> inline GenericExternalResult<char*>::~GenericExternalResult(){ /*{{{*/
+	xDelete<char>(result_name);
+	xDelete<char>(value);
+} /*}}}*/
+template <> inline void GenericExternalResult<char*>::DeepEcho(void){ /*{{{*/
+
+	_printf_("GenericExternalResult<char*>:\n");
+	this->GenericEcho();
+	_printf_("   value: " << this->value << "\n");
+
+} /*}}}*/
+template <> inline void GenericExternalResult<char*>::WriteData(FILE* fid,bool io_gather){ /*{{{*/
+
+	int     my_rank;
+	int     type;
+	int     length;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	/*return if now on cpu 0: */
+	if(my_rank)return;
+
+	/*use generic part, same for all ResultTypes: */
+	this->GenericWriteData(fid);
+
+	/*writing a string, type is 2: */
+	type=2;
+	fwrite(&type,sizeof(int),1,fid);
+
+	length=(strlen(this->value)+1)*sizeof(char);
+	fwrite(&length,sizeof(int),1,fid);
+	fwrite(this->value,length,1,fid);
+}
+/*}}}*/
+template <> inline int GenericExternalResult<char*>::ObjectEnum(void){ /*{{{*/
+	return StringExternalResultEnum;
+} /*}}}*/
+template <> inline void GenericExternalResult<char*>::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+
+	int size;
+
+	if(marshall_direction==MARSHALLING_FORWARD || marshall_direction == MARSHALLING_SIZE)size=strlen(value)+1;
+
+	MARSHALLING(id);
+	MARSHALLING(result_name);
+	MARSHALLING(size);
+	MARSHALLING_DYNAMIC(value,char,size);
+	MARSHALLING(step);
+	MARSHALLING(time);
+
+}  /*}}}*/
+
+/*Specific instantiations for IssmPDouble*: */
+template <> inline GenericExternalResult<IssmPDouble*>::GenericExternalResult(int in_id, int in_enum_type,IssmPDouble* in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/
+
+	id = in_id;
+	M  = in_M;
+	N  = in_N;
+
+	EnumToStringx(&this->result_name,in_enum_type);
+
+	step = in_step;
+	time = in_time;
+
+	/*Copy result in values*/
+	if(M*N){
+		value=xNew<IssmPDouble>(M*N);
+		xMemCpy<IssmPDouble>(value,in_values,M*N);
+	}
+	else value=NULL;
+}
+/*}}}*/
+template <> inline GenericExternalResult<IssmPDouble*>::GenericExternalResult(int in_id,const char* in_result_name,IssmPDouble* in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/
+
+	id = in_id;
+	M  = in_M;
+	N  = in_N;
+
+	/*Copy name*/
+	this->result_name = xNew<char>(strlen(in_result_name)+1);
+	xMemCpy<char>(this->result_name,in_result_name,strlen(in_result_name)+1);
+
+	step = in_step;
+	time = in_time;
+
+	/*Copy result in values*/
+	if(M*N){
+		value=xNew<IssmPDouble>(M*N);
+		xMemCpy<IssmPDouble>(value,in_values,M*N);
+	}
+	else value=NULL;
+}
+/*}}}*/
+template <> inline GenericExternalResult<IssmPDouble*>::GenericExternalResult(int in_id, int in_enum_type,IssmPDouble* in_value,int in_step, IssmDouble in_time){ /*{{{*/
+	_error_("you cannot initialize a GenericExternalResult<IssmPDouble*> without providing the dimensions of the matrix! Please use a more appropriate constructor!");
+} /*}}}*/
+template <> inline GenericExternalResult<IssmPDouble*>::~GenericExternalResult(){ /*{{{*/
+	xDelete<char>(result_name);
+	xDelete<IssmPDouble>(value);
+} /*}}}*/
+template <> inline void GenericExternalResult<IssmPDouble*>::Echo(void){ /*{{{*/
+
+	_printf_("GenericExternalResult<IssmPDouble*>:\n");
+	this->GenericEcho();
+	_printf_("   matrix size: " << this->M << "-" << this->N << "\n");
+
+} /*}}}*/
+template <> inline void GenericExternalResult<IssmPDouble*>::DeepEcho(void){ /*{{{*/
+
+	int i,j;
+
+	_printf_("GenericExternalResult<IssmPDouble*>:\n");
+	this->GenericEcho();
+
+	_printf_("   matrix size: " << this->M << "-" << this->N << "\n");
+	for (i=0;i<this->M;i++){  
+		_printf_("   [ ");
+		for (j=0;j<this->N;j++){
+			_printf_( " " << setw(11) << setprecision (5) << this->value[i*this->N+j]);
+		}  
+		_printf_(" ]\n");
+	}  
+
+} /*}}}*/
+template <> inline Object* GenericExternalResult<IssmPDouble*>::copy(void){ /*{{{*/
+	return new GenericExternalResult<IssmPDouble*>(this->id,StringToEnumx(this->result_name),this->value,this->M,this->N,this->step,this->time);
+} /*}}}*/
+template <> inline void GenericExternalResult<IssmPDouble*>::WriteData(FILE* fid,bool io_gather){ /*{{{*/
+
+	int     my_rank;
+	int     type;
+	int     rows,cols;
+	char   *name    = NULL;
+	IssmPDouble passiveDouble;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	if(io_gather){
+		/*we are gathering the data on cpu 0, don't write on other cpus: */
+		if(my_rank) return;
+	}
+
+	/*First write enum: */
+	int length=(strlen(this->result_name)+1)*sizeof(char);
+	fwrite(&length,sizeof(int),1,fid);
+	fwrite(this->result_name,length,1,fid);
+
+	/*Now write time and step: */
+	passiveDouble=reCast<IssmPDouble>(time);
+	fwrite(&passiveDouble,sizeof(IssmPDouble),1,fid);
+	fwrite(&step,sizeof(int),1,fid);
+
+	/*writing a IssmDouble array, type is 3:*/
+	type=3;
+	fwrite(&type,sizeof(int),1,fid);
+	rows=this->M;
+	fwrite(&rows,sizeof(int),1,fid);
+	cols=this->N;
+	fwrite(&cols,sizeof(int),1,fid);
+	fwrite(value,cols*rows*sizeof(IssmPDouble),1,fid);
+
+}
+/*}}}*/
+template <> inline int GenericExternalResult<IssmPDouble*>::ObjectEnum(void){ /*{{{*/
+	return DoubleMatExternalResultEnum;
+} /*}}}*/
+template <> inline double* GenericExternalResult<IssmPDouble*>::GetValues(void){ /*{{{*/
+	return value;
+} /*}}}*/
+template <> inline void GenericExternalResult<IssmPDouble*>::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+
+	MARSHALLING_ENUM(this->ObjectEnum());
+
+	MARSHALLING(id);
+	MARSHALLING(result_name);
+	MARSHALLING(M);
+	MARSHALLING(N);
+	MARSHALLING_DYNAMIC(value,IssmPDouble,M*N);
+	MARSHALLING(step);
+	MARSHALLING(time);
+
+}  /*}}}*/
+
+/*Specific instantiations for IssmDouble*: */
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)  //We hook off this specific specialization when not running ADOLC, otherwise we get a redeclaration with the next specialization. 
+template <> inline void GenericExternalResult<IssmDouble*>::WriteData(FILE* fid,bool io_gather){ /*{{{*/
+
+	int     i;
+	int     my_rank;
+	int     type;
+	int     rows,cols;
+	char   *name    = NULL;
+	IssmPDouble passiveDouble;
+	IssmPDouble* passiveDoubles;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	if(io_gather){
+		/*we are gathering the data on cpu 0, don't write on other cpus: */
+		if(my_rank) return;
+	}
+
+	/*First write enum: */
+	int length=(strlen(this->result_name)+1)*sizeof(char);
+	fwrite(&length,sizeof(int),1,fid);
+	fwrite(this->result_name,length,1,fid);
+
+	/*Now write time and step: */
+	passiveDouble=reCast<IssmPDouble>(time);
+	fwrite(&passiveDouble,sizeof(IssmPDouble),1,fid);
+	fwrite(&step,sizeof(int),1,fid);
+
+	/*writing a IssmDouble array, type is 3:*/
+	type=3;
+	fwrite(&type,sizeof(int),1,fid);
+	rows=this->M;
+	fwrite(&rows,sizeof(int),1,fid);
+	cols=this->N;
+	fwrite(&cols,sizeof(int),1,fid);
+
+	passiveDoubles=xNew<IssmPDouble>(this->M*this->N);
+	for (i=0;i<this->M*this->N;i++)passiveDoubles[i]=reCast<IssmPDouble>(value[i]);
+	fwrite(passiveDoubles,cols*rows*sizeof(IssmPDouble),1,fid);
+	xDelete<IssmPDouble>(passiveDoubles);
+
+}
+/*}}}*/
+#endif
+
+/*Specifics instantiations for Vector*/
+template <> inline GenericExternalResult<Vector<IssmPDouble>*>::GenericExternalResult(int in_id, int in_enum_type,Vector<IssmPDouble>* in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/
+	_error_("instanciation not correct");
+}
+/*}}}*/
+template <> inline GenericExternalResult<Vector<IssmPDouble>*>::GenericExternalResult(int in_id, int in_enum_type,Vector<IssmPDouble>* in_value,int in_step, IssmDouble in_time){ /*{{{*/
+	id = in_id;
+	M  = 0;
+	N  = 0;
+
+	/*Convert enum to name*/
+	EnumToStringx(&this->result_name,in_enum_type);
+
+	step = in_step;
+	time = in_time;
+
+	value = in_value;
+} /*}}}*/
+template <> inline GenericExternalResult<Vector<IssmPDouble>*>::~GenericExternalResult(){ /*{{{*/
+	xDelete<char>(this->result_name);
+	delete value;
+} /*}}}*/
+template <> inline void GenericExternalResult<Vector<IssmPDouble>*>::Echo(void){ /*{{{*/
+
+	_printf_("GenericExternalResult<Vector<IssmPDouble>*>:\n");
+	this->GenericEcho();
+	this->value->Echo();
+
+} /*}}}*/
+template <> inline void GenericExternalResult<Vector<IssmPDouble>*>::DeepEcho(void){ /*{{{*/
+
+	this->Echo();
+
+} /*}}}*/
+template <> inline Object* GenericExternalResult<Vector<IssmPDouble>*>::copy(void){ /*{{{*/
+	return new GenericExternalResult<Vector<IssmPDouble>*>(this->id,StringToEnumx(this->result_name),this->value,this->step,this->time);
+} /*}}}*/
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)  //We hook off this specific specialization when not running ADOLC, otherwise we get a redeclaration with the next specialization. 
+template <> inline void GenericExternalResult<Vector<IssmPDouble>*>::WriteData(FILE* fid,bool io_gather){ /*{{{*/
+
+	char *name   = NULL;
+	int   length,rows,cols=1;
+
+	if(!io_gather){
+		_error_("not supported yet");
+	}
+
+	/*Serialize vector*/
+	IssmPDouble* serialvalues = this->value->ToMPISerial();
+	this->value->GetSize(&rows);
+
+	if(IssmComm::GetRank()==0){
+		/*First write name: */
+		length=(strlen(this->result_name)+1)*sizeof(char);
+		fwrite(&length,sizeof(int),1,fid);
+		fwrite(this->result_name,length,1,fid);
+
+		/*Now write time and step: */
+		IssmPDouble passiveDouble=reCast<IssmPDouble>(time);
+		fwrite(&passiveDouble,sizeof(IssmPDouble),1,fid);
+		fwrite(&step,sizeof(int),1,fid);
+
+		/*writing a IssmDouble array, type is 3:*/
+		int type=3;
+		fwrite(&type,sizeof(int),1,fid);
+		fwrite(&rows,sizeof(int),1,fid);
+		fwrite(&cols,sizeof(int),1,fid);
+		fwrite(serialvalues,cols*rows*sizeof(IssmPDouble),1,fid);
+	}
+
+	/*Clean up*/
+	xDelete<IssmPDouble>(serialvalues);
+
+}
+/*}}}*/
+#endif
+template <> inline int GenericExternalResult<Vector<IssmPDouble>*>::ObjectEnum(void){ /*{{{*/
+	return NoneEnum;
+	/*???? FIXME*/
+} /*}}}*/
+
+/*Specifics instantiations for Vector<IssmDouble>*/
+template <> inline void GenericExternalResult<Vector<IssmDouble>*>::WriteData(FILE* fid,bool io_gather){ /*{{{*/
+
+	int i;
+	char *name   = NULL;
+	int   length,rows,cols=1;
+	IssmDouble*  serialvalues = NULL;
+	IssmPDouble* pserialvalues = NULL;
+
+	if(!io_gather){
+		_error_("not supported yet");
+	}
+
+	/*Serialize vector*/
+	serialvalues = this->value->ToMPISerial();
+	this->value->GetSize(&rows);
+	
+	pserialvalues=xNew<IssmPDouble>(rows);
+	for(i=0;i<rows;i++)pserialvalues[i]=reCast<IssmPDouble>(serialvalues[i]);
+
+	if(IssmComm::GetRank()==0){
+		/*First write name: */
+		length=(strlen(this->result_name)+1)*sizeof(char);
+		fwrite(&length,sizeof(int),1,fid);
+		fwrite(this->result_name,length,1,fid);
+
+		/*Now write time and step: */
+		IssmPDouble passiveDouble=reCast<IssmPDouble>(time);
+		fwrite(&passiveDouble,sizeof(IssmPDouble),1,fid);
+		fwrite(&step,sizeof(int),1,fid);
+
+		/*writing a IssmDouble array, type is 3:*/
+		int type=3;
+		fwrite(&type,sizeof(int),1,fid);
+		fwrite(&rows,sizeof(int),1,fid);
+		fwrite(&cols,sizeof(int),1,fid);
+		fwrite(pserialvalues,cols*rows*sizeof(IssmPDouble),1,fid);
+	}
+
+	/*Clean up*/
+	xDelete<IssmPDouble>(pserialvalues);
+	xDelete<IssmDouble>(serialvalues);
+
+}
+/*}}}*/
+template <> inline void GenericExternalResult<Vector<IssmDouble>*>::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+
+	_error_("GenericExternalResult instantiated for type Vector<IssmDouble>* called " << result_name << " not implemented yet");
+
+}  /*}}}*/
+
+#endif  /* _EXTERNAL_RESULTOBJECT_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/ExternalResults/Results.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/ExternalResults/Results.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/ExternalResults/Results.cpp	(revision 21239)
@@ -0,0 +1,107 @@
+/*
+ * \file Results.cpp
+ * \brief: Implementation of the Results class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Results.h"
+#include "./ExternalResult.h"
+#include "../../shared/shared.h"
+#include "../Params/Parameters.h"
+
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+Results::Results(){/*{{{*/
+	enum_type=ResultsEnum;
+	return;
+}
+/*}}}*/
+Results::~Results(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object management*/
+int Results::AddResult(ExternalResult* in_result){/*{{{*/
+
+	/*First, go through dataset of inputs and check whether any input 
+	 * with the same name is already in. If so, erase the corresponding 
+	 * object before adding this new one: */
+
+	/*In debugging mode, check that the input is not a NULL pointer*/
+	_assert_(in_result);
+
+	for(int i=0;i<this->Size();i++){
+		ExternalResult* result=xDynamicCast<ExternalResult*>(this->GetObjectByOffset(i));
+
+		if(result->GetStep()==in_result->GetStep()){
+			char*    result_name =    result->GetResultName();
+			char* in_result_name = in_result->GetResultName();
+			if(strcmp(in_result_name,result_name)==0){
+
+				this->DeleteObject(result);
+				xDelete<char>(result_name);
+				xDelete<char>(in_result_name);
+				break;
+			}
+			xDelete<char>(result_name);
+			xDelete<char>(in_result_name);
+		}
+	}
+	this->AddObject(in_result);
+
+	return 1;
+}
+/*}}}*/
+int Results::DeleteResult(int result_enum,int result_step){/*{{{*/
+
+	for(int i=0;i<this->Size();i++){
+		ExternalResult* result=xDynamicCast<ExternalResult*>(this->GetObjectByOffset(i));
+
+		if(result->GetStep()==result_step){
+			if(strcmp(result->GetResultName(),EnumToStringx(result_enum))==0){
+				this->DeleteObject(result);
+				break;
+			}
+		}
+	}
+
+	return 1;
+}
+/*}}}*/
+ExternalResult* Results::FindResult(int result_enum){/*{{{*/
+
+	for(int i=0;i<this->Size();i++){
+		ExternalResult* result=xDynamicCast<ExternalResult*>(this->GetObjectByOffset(i));
+
+		if(result->GetResultEnum()==result_enum){
+			return result;
+		}
+	}
+	return NULL;
+}
+/*}}}*/
+void Results::Write(Parameters* parameters){/*{{{*/
+
+	FILE       *fid  = NULL;
+	bool        io_gather;
+
+	/*Recover file descriptor: */
+	parameters->FindParam(&fid,OutputFilePointerEnum);
+	parameters->FindParam(&io_gather,SettingsIoGatherEnum);
+
+	for(int i=0;i<this->Size();i++){
+		ExternalResult* result=xDynamicCast<ExternalResult*>(this->GetObjectByOffset(i));
+		result->WriteData(fid,io_gather);
+	}
+
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/ExternalResults/Results.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/ExternalResults/Results.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/ExternalResults/Results.h	(revision 21239)
@@ -0,0 +1,28 @@
+#ifndef _CONTAINER_RESULTS_H_
+#define _CONTAINER_RESULTS_H_
+
+#include "../../datastructures/datastructures.h"
+
+/*forward declarations */
+class Parameters;
+class ExternalResult;
+
+/*!\brief Declaration of Results class.
+ *
+ * Declaration of Results class.  Results are vector lists (Containers) of Result objects.
+ */ 
+class Results: public DataSet{
+
+	public:
+
+		/*constructors, destructors*/
+		Results();
+		~Results();
+
+		/*Mehthos*/
+		int AddResult(ExternalResult* result);
+		int DeleteResult(int result_enum,int result_step);
+		ExternalResult* FindResult(int result_enum);
+		void Write(Parameters* parameters);
+};
+#endif //ifndef _RESULTS_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/FemModel.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/FemModel.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/FemModel.cpp	(revision 21239)
@@ -0,0 +1,2729 @@
+/*!\file FemModel.cpp
+ * \brief: implementation of the FemModel object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include "../cores/cores.h"
+#include "../shared/io/io.h"
+#include "./classes.h"
+#include "./modules/modules.h"
+#include "../shared/Enum/Enum.h"
+
+#include "../analyses/analyses.h"
+
+/*module includes: {{{*/
+#include "../modules/ModelProcessorx/ModelProcessorx.h"
+#include "../modules/VerticesDofx/VerticesDofx.h"
+#include "../modules/SpcNodesx/SpcNodesx.h"
+#include "../modules/ConfigureObjectsx/ConfigureObjectsx.h"
+#include "../modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.h"
+#include "../modules/GetVectorFromInputsx/GetVectorFromInputsx.h"
+#include "../modules/InputUpdateFromVectorx/InputUpdateFromVectorx.h"
+#include "../modules/NodesDofx/NodesDofx.h"
+#include "../modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.h"
+#include "../modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.h"
+#include "../modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.h"
+#include "../modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.h"
+#include "../modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.h"
+#include "../modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.h"
+#include "../modules/ThicknessAlongGradientx/ThicknessAlongGradientx.h"
+#include "../modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.h"
+#include "../modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.h"
+#include "../modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.h"
+#include "../modules/NodalValuex/NodalValuex.h"
+#include "../modules/GetVectorFromInputsx/GetVectorFromInputsx.h"
+#include "../modules/AverageOntoPartitionx/AverageOntoPartitionx.h"
+/*}}}*/
+
+/*Object constructors and destructor*/
+FemModel::FemModel(int argc,char** argv,ISSM_MPI_Comm incomm,bool trace){/*{{{*/
+
+	/*configuration: */
+	int  solution_type;
+	int  ierr;
+
+	/*File names*/
+	char *lockfilename   = NULL;
+	char *binfilename    = NULL;
+	char *outbinfilename = NULL;
+	char *petscfilename  = NULL;
+	char *restartfilename  = NULL;
+	char *rootpath       = NULL;
+
+	/*First things first, store the communicator, and set it as a global variable: */
+	IssmComm::SetComm(incomm);
+
+	/*Now, initialize PETSC: */
+	#ifdef _HAVE_PETSC_
+	PETSC_COMM_WORLD=incomm;
+	ierr=PetscInitialize(&argc,&argv,(char*)0,"");  if(ierr) _error_("Could not initialize Petsc");
+	#endif
+
+	/*Start profiler: */
+	this->profiler=new Profiler();
+	profiler->Tag(START);
+
+	/*From command line arguments, retrieve different filenames needed to create the FemModel: */
+	ProcessArguments(&solution_type,&binfilename,&outbinfilename,&petscfilename,&lockfilename,&restartfilename,&rootpath,argc,argv);
+
+	/*Create femmodel from input files: */
+	profiler->Tag(STARTINIT);
+	this->InitFromFiles(rootpath,binfilename,outbinfilename,petscfilename,lockfilename,restartfilename, solution_type,trace,NULL);
+	profiler->Tag(FINISHINIT);
+
+	/*Save communicator in the parameters dataset: */
+	this->parameters->AddObject(new GenericParam<ISSM_MPI_Comm>(incomm,FemModelCommEnum));
+
+	/*Free resources */
+	xDelete<char>(lockfilename);
+	xDelete<char>(binfilename);
+	xDelete<char>(outbinfilename);
+	xDelete<char>(petscfilename);
+	xDelete<char>(restartfilename);
+	xDelete<char>(rootpath);
+
+}
+/*}}}*/
+FemModel::FemModel(char* rootpath, char* inputfilename, char* outputfilename, char* toolkitsfilename, char* lockfilename, char* restartfilename, ISSM_MPI_Comm incomm, int solution_type,IssmPDouble* X){ /*{{{*/
+
+	bool traceon=true;
+	this->profiler=NULL; /*avoid leak, as we are not using the profiler ever in ad control run. */
+	
+	/*Store the communicator, but do not set it as a global variable, as this has already 
+	 * been done by the FemModel that called this copy constructor: */
+	IssmComm::SetComm(incomm);
+
+	/*Create femmodel from input files, with trace activated: */
+	profiler->Tag(STARTINIT);
+	this->InitFromFiles(rootpath,inputfilename,outputfilename,toolkitsfilename,lockfilename,restartfilename, solution_type,traceon,X);
+	profiler->Tag(FINISHINIT);
+	
+	/*Save communicator in the parameters dataset: */
+	this->parameters->AddObject(new GenericParam<ISSM_MPI_Comm>(incomm,FemModelCommEnum));
+
+}
+/*}}}*/
+FemModel::~FemModel(){/*{{{*/
+
+	/*Intermediary*/
+	FILE *output_fid;
+	char *outbinfilename = NULL;
+	char *lockfilename   = NULL;
+
+	#ifndef _HAVE_JAVASCRIPT_
+	if(this->parameters->Exist(OutputFileNameEnum)) this->parameters->FindParam(&outbinfilename,OutputFileNameEnum);
+	if(this-parameters->Exist(LockFileNameEnum)) this->parameters->FindParam(&lockfilename,LockFileNameEnum);
+	#endif
+
+	/*Delete all the datasets: */
+	if(analysis_type_list)xDelete<int>(analysis_type_list);
+	if(outbinfilename)xDelete<char>(outbinfilename);
+	if(lockfilename)xDelete<char>(lockfilename);
+	if(elements)delete elements;
+	if(nodes)delete nodes;
+	if(vertices)delete vertices;
+	if(constraints)delete constraints;
+	if(loads)delete loads;
+	if(materials)delete materials;
+	if(parameters)delete parameters;
+	if(results)delete results;
+
+	/*Now delete: */
+	if(profiler)delete profiler;
+	
+	
+}
+/*}}}*/
+
+/*Object management*/
+void FemModel::CheckPoint(void){/*{{{*/
+
+	FILE* restartfid=NULL;
+	char* restartfilename = NULL;
+	int   femmodel_size;
+	char* femmodel_buffer=NULL;
+	char* femmodel_buffer_ini=NULL;
+
+	/*First, recover the name of the restart file: */
+	parameters->FindParam(&restartfilename,RestartFileNameEnum);
+	
+	/*Open file for writing: */
+	restartfid=pfopen(restartfilename,"wb");
+
+	/*Initialize: */
+	femmodel_size=0;
+
+	/*Create buffer to hold marshalled femmodel: */
+	this->Marshall(NULL,&femmodel_size,MARSHALLING_SIZE);
+	femmodel_buffer=xNew<char>(femmodel_size); 
+	/*Keep track of initial position of femmodel_buffer: */
+	femmodel_buffer_ini=femmodel_buffer;
+	
+	/*Marshall:*/
+	this->Marshall(&femmodel_buffer,NULL,MARSHALLING_FORWARD);
+
+	/*Reset position of buffer: */
+	femmodel_buffer=femmodel_buffer_ini;
+
+	/*write buffer: */
+	fwrite(femmodel_buffer,femmodel_size,sizeof(char),restartfid);
+
+	/*Done, close file :*/
+	pfclose(restartfid,restartfilename);
+
+	/*Free ressources: */
+	xDelete<char>(femmodel_buffer);
+	xDelete<char>(restartfilename);
+
+}
+/*}}}*/
+void FemModel::CleanUp(void){/*{{{*/
+
+	/*Intermediary*/
+	char *lockfilename   = NULL;
+	bool  waitonlock     = false;
+
+
+	/*Write lock file if requested: */
+	this->parameters->FindParam(&waitonlock,SettingsWaitonlockEnum);
+	this->parameters->FindParam(&lockfilename,LockFileNameEnum);
+	if(waitonlock){
+		_printf0_("write lock file:\n");
+		WriteLockFile(lockfilename);
+	}
+
+	/*Before we delete the profiler, report statistics for this run: */
+	profiler->Tag(FINISH);  //final tagging
+	_printf0_("\n");
+	_printf0_("   "<<setw(40)<<left<<"FemModel initialization elapsed time:"<<profiler->DeltaTime(STARTINIT,FINISHINIT) << "\n");
+	_printf0_("   "<<setw(40)<<left<<"Core solution elapsed time:"<<profiler->DeltaTime(STARTCORE,FINISHCORE) << "\n");
+	_printf0_("\n");
+	_printf0_("   Total elapsed time: "
+				<<profiler->DeltaTimeModHour(START,FINISH)<<" hrs "
+				<<profiler->DeltaTimeModMin(START,FINISH)<<" min "
+				<<profiler->DeltaTimeModSec(START,FINISH)<<" sec"
+				);
+	_printf0_("\n");
+
+	/*Finalize PETSC for this model: */
+	#ifdef _HAVE_PETSC_
+	_printf0_("closing PETSc\n");
+	PetscFinalize();
+	#endif
+
+	/*Clean up*/
+	xDelete<char>(lockfilename);
+} /*}}}*/
+FemModel* FemModel::copy(void){/*{{{*/
+
+	FemModel* output=NULL;
+	int       i;
+	int       analysis_type;
+
+	output=new FemModel(*this); //Use default copy constructor.
+
+	output->nummodels = this->nummodels;
+	output->solution_type = this->solution_type;
+	output->analysis_counter = this->analysis_counter;
+
+	/*Now, deep copy arrays: */
+	output->analysis_type_list=xNew<int>(nummodels);
+	xMemCpy<int>(output->analysis_type_list,this->analysis_type_list,this->nummodels);
+
+	output->profiler=static_cast<Profiler*>(this->profiler->copy());
+
+	output->loads=static_cast<Loads*>(this->loads->Copy());
+	output->materials=static_cast<Materials*>(this->materials->Copy());
+	output->parameters=static_cast<Parameters*>(this->parameters->Copy());
+	output->constraints=static_cast<Constraints*>(this->constraints->Copy());
+	output->results=static_cast<Results*>(this->results->Copy());
+
+	output->nodes=static_cast<Nodes*>(this->nodes->Copy());
+	output->vertices=static_cast<Vertices*>(this->vertices->Copy());
+	output->elements=static_cast<Elements*>(this->elements->Copy());
+
+	/*reset hooks for elements, loads and nodes: */
+	output->elements->ResetHooks();
+	output->loads->ResetHooks();
+	output->materials->ResetHooks();
+
+	/*do the post-processing of the datasets to get an FemModel that can actually run analyses: */
+	for(i=0;i<nummodels;i++){
+		analysis_type=output->analysis_type_list[i];
+		output->SetCurrentConfiguration(analysis_type);
+		if(i==0) VerticesDofx(output->vertices,output->parameters); //only call once, we only have one set of vertices
+		SpcNodesx(output->nodes,output->constraints,output->parameters,analysis_type);
+		NodesDofx(output->nodes,output->parameters,analysis_type);
+		ConfigureObjectsx(output->elements,output->loads,output->nodes,output->vertices,output->materials,output->parameters);
+	}
+
+	/*Reset current configuration: */
+	analysis_type=output->analysis_type_list[analysis_counter];
+	output->SetCurrentConfiguration(analysis_type);
+
+	return output;
+}
+/*}}}*/
+void FemModel::Echo(void){/*{{{*/
+
+	_printf_("FemModel echo: \n");
+	_printf_("   number of fem models: " << nummodels << "\n");
+	_printf_("   analysis_type_list: \n");
+	for(int i=0;i<nummodels;i++)_printf_("     " << i << ": " << EnumToStringx(analysis_type_list[i]) << "\n");
+	_printf_("   current analysis_type: \n");
+	_printf_("     " << analysis_counter << ": " << EnumToStringx(analysis_type_list[analysis_counter]) << "\n");
+
+}
+/*}}}*/
+void FemModel::InitFromFiles(char* rootpath, char* inputfilename, char* outputfilename, char* toolkitsfilename, char* lockfilename, char* restartfilename, const int in_solution_type,bool trace,IssmPDouble* X){/*{{{*/
+
+	/*intermediary*/
+	FILE *IOMODEL            = NULL;
+	FILE *toolkitsoptionsfid = NULL;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Open input file descriptor on cpu 0: */
+	if(my_rank==0) IOMODEL = pfopen0(inputfilename ,"rb");
+
+	/*Open toolkits file: */
+	toolkitsoptionsfid=pfopen(toolkitsfilename,"r");
+
+	/*Now, go create FemModel:*/
+	this->InitFromFids(rootpath,IOMODEL,toolkitsoptionsfid,in_solution_type,trace,X);
+
+	/*Close input file and toolkits file descriptors: */
+	if(my_rank==0) pfclose(IOMODEL,inputfilename);
+	pfclose(toolkitsoptionsfid,toolkitsfilename);
+
+	/*Now save all of these file names into parameters, you never know when you might need them: */
+	this->parameters->AddObject(new StringParam(ToolkitsFileNameEnum,toolkitsfilename));
+	this->parameters->AddObject(new StringParam(RootPathEnum,rootpath));
+	this->parameters->AddObject(new StringParam(InputFileNameEnum,inputfilename));
+	this->parameters->AddObject(new StringParam(OutputFileNameEnum,outputfilename));
+	this->parameters->AddObject(new StringParam(LockFileNameEnum,lockfilename));
+	this->parameters->AddObject(new StringParam(RestartFileNameEnum,restartfilename));
+
+}/*}}}*/
+void FemModel::InitFromFids(char* rootpath, FILE* IOMODEL, FILE* toolkitsoptionsfid, int in_solution_type, bool trace, IssmPDouble* X){/*{{{*/
+	
+	/*Initialize internal data: */
+	this->solution_type    = in_solution_type;
+	this->analysis_counter = nummodels-1;   //point to last analysis_type carried out.
+	this->results          = new Results(); //not initialized by CreateDataSets
+	
+	/*create IoModel */
+	IoModel* iomodel = new IoModel(IOMODEL,in_solution_type,trace,X);
+
+	/*Figure out what analyses are activated for this solution*/
+	SolutionAnalysesList(&this->analysis_type_list,&this->nummodels,iomodel,this->solution_type);
+
+	/*create datasets for all analyses*/
+	ModelProcessorx(&this->elements,&this->nodes,&this->vertices,&this->materials,&this->constraints,&this->loads,&this->parameters,iomodel,toolkitsoptionsfid,rootpath,this->solution_type,this->nummodels,this->analysis_type_list);
+
+	/*do the post-processing of the datasets to get an FemModel that can actually run analyses: */
+	for(int i=0;i<nummodels;i++){
+
+		if(VerboseMProcessor()) _printf0_("   Processing finite element model of analysis " << EnumToStringx(analysis_type_list[i]) << ":\n");
+		this->SetCurrentConfiguration(analysis_type_list[i]);
+
+		if(VerboseMProcessor()) _printf0_("      configuring element and loads\n");
+		ConfigureObjectsx(elements, loads, nodes, vertices, materials,parameters);
+		
+		if(i==0){
+			if(VerboseMProcessor()) _printf0_("      creating vertex PIDs\n");
+			VerticesDofx(vertices,parameters); 
+
+			if(VerboseMProcessor()) _printf0_("      detecting active vertices\n");
+			GetMaskOfIceVerticesLSMx(this);
+		}
+
+		if(VerboseMProcessor()) _printf0_("      resolving node constraints\n");
+		SpcNodesx(nodes,constraints,parameters,analysis_type_list[i]); 
+
+		if(VerboseMProcessor()) _printf0_("      creating nodal degrees of freedom\n");
+		NodesDofx(nodes,parameters,analysis_type_list[i]);
+	}
+
+	/*Clean up*/
+	delete iomodel;
+}/*}}}*/
+void FemModel::Marshall(char** pmarshalled_data, int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	int       i;
+	int       analysis_type;
+
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		delete this->loads;
+		delete this->materials;
+		delete this->parameters;
+		delete this->constraints;
+		delete this->results;
+		delete this->nodes;
+		delete this->vertices;
+		delete this->elements;
+		xDelete<int>(this->analysis_type_list);
+
+		this->loads       = new Loads();
+		this->materials   = new Materials();
+		this->parameters  = new Parameters();
+		this->constraints = new Constraints();
+		this->results     = new Results();
+		this->nodes       = new Nodes();
+		this->vertices    = new Vertices();
+		this->elements    = new Elements();
+	}
+
+	MARSHALLING_ENUM(FemModelEnum);
+
+	MARSHALLING(solution_type);
+	MARSHALLING(analysis_counter);
+	MARSHALLING(nummodels);
+	MARSHALLING_DYNAMIC(analysis_type_list,int,nummodels);
+
+	this->loads->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->materials->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->parameters->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->constraints->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->results->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->nodes->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->vertices->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->elements->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		/*reset hooks for elements, loads and nodes:*/
+		this->elements->ResetHooks();
+		this->loads->ResetHooks();
+		this->materials->ResetHooks();
+
+		/*do the post-processing of the datasets to get an FemModel that can actually run analyses:*/
+		for(i=0;i<nummodels;i++){
+			analysis_type=this->analysis_type_list[i];
+			SetCurrentConfiguration(analysis_type);
+			if(i==0) VerticesDofx(this->vertices,this->parameters); //only call once, we only have one set of vertices
+			SpcNodesx(this->nodes,this->constraints,this->parameters,analysis_type);
+			NodesDofx(this->nodes,this->parameters,analysis_type);
+			ConfigureObjectsx(this->elements,this->loads,this->nodes,this->vertices,this->materials,this->parameters);
+		}
+
+		//Reset current configuration:
+		analysis_type=this->analysis_type_list[analysis_counter];
+		SetCurrentConfiguration(analysis_type);
+	}
+
+}
+/*}}}*/
+void FemModel::Restart(){ /*{{{*/
+
+	FILE* restartfid=NULL;
+	char* restartfilename = NULL;
+	int   femmodel_size=0; 
+	int   fread_return=0; 
+	char* femmodel_buffer=NULL;
+	char* femmodel_buffer_ini=NULL;
+
+	/*First, recover the name of the restart file: */
+	parameters->FindParam(&restartfilename,RestartFileNameEnum);
+
+	/*Now, figure out whether this file actually exists!: */
+	restartfid=pfopen(restartfilename,"r",false);
+
+	if(restartfid==NULL){
+		xDelete<char>(restartfilename);
+		return; //could not find the file, so no restart possible.
+	}
+
+	/*Print banner*/
+	_printf0_("                                                                    \n");
+	_printf0_("====================================================================\n");
+	_printf0_("                         RESTART DETECTED                           \n");
+	_printf0_("                                                                    \n");
+	_printf0_("  Restart file: "<<restartfilename<<"                               \n");
+	_printf0_("====================================================================\n");
+	_printf0_("                                                                    \n");
+
+	/*Figure out size of buffer to be read: */
+	fseek(restartfid, 0L, SEEK_END); 
+	femmodel_size = ftell(restartfid);
+	fseek(restartfid, 0L, SEEK_SET);
+
+	/*Allocate buffer: */
+	femmodel_buffer=xNew<char>(femmodel_size); 
+
+	/*Read buffer from file: */
+	fread_return=fread(femmodel_buffer,femmodel_size,sizeof(char),restartfid); if(fread_return!=1)_error_("error reading the buffer from marshalled file!");
+	femmodel_buffer_ini=femmodel_buffer; //keep track of the initial position, so as to free later.
+
+	/*Create new FemModel by demarshalling the buffer: */
+	this->Marshall(&femmodel_buffer,NULL,MARSHALLING_BACKWARD);
+
+	/*Reset position of buffer: */
+	femmodel_buffer=femmodel_buffer_ini;
+
+	/*Done, close file :*/
+	pfclose(restartfid,restartfilename);
+
+	/*Free ressources: */
+	xDelete<char>(restartfilename);
+	xDelete<char>(femmodel_buffer);
+}/*}}}*/
+void FemModel::SetCurrentConfiguration(int configuration_type,int analysis_type){/*{{{*/
+
+	/*Use configuration_type to setup the analysis counter, the configurations of objects etc ... but use 
+	 * analysis_type to drive the element numerics. This allows for use of 1 configuration_type for several 
+	 * analyses. For example: do a SurfaceSlopeX, SurfaceSlopeY, BedSlopeX and BedSlopeY analysis using the 
+	 * Slope configuration.*/
+	int found=-1;
+	for(int i=0;i<nummodels;i++){
+	
+		if (analysis_type_list[i]==configuration_type){
+			found=i;
+			break;
+		}
+	}
+	if(found!=-1) analysis_counter=found;
+	else _error_("Could not find alias for analysis_type " << EnumToStringx(configuration_type) << " in list of FemModel analyses");
+
+	/*Now, plug analysis_counter and analysis_type inside the parameters: */
+	this->parameters->SetParam(analysis_counter,AnalysisCounterEnum);
+	this->parameters->SetParam(analysis_type,AnalysisTypeEnum);
+	this->parameters->SetParam(configuration_type,ConfigurationTypeEnum);
+
+	/*configure elements, loads and nodes, for this new analysis: */
+	this->elements->SetCurrentConfiguration(elements,loads, nodes,vertices, materials,parameters);
+	this->loads->SetCurrentConfiguration(elements, loads, nodes,vertices, materials,parameters);
+
+	/*take care of toolkits options, that depend on this analysis type (present only after model processor)*/
+	if(this->parameters->Exist(ToolkitsOptionsStringsEnum)){
+		ToolkitsOptionsFromAnalysis(this->parameters,analysis_type);
+		if(VerboseSolver()) _printf0_("      toolkits Options set for analysis type: " << EnumToStringx(analysis_type) << "\n");
+	}
+
+}
+/*}}}*/
+void FemModel::SetCurrentConfiguration(int configuration_type){/*{{{*/
+	this->SetCurrentConfiguration(configuration_type,configuration_type);
+}
+/*}}}*/
+void  FemModel::SolutionAnalysesList(int** panalyses,int* pnumanalyses,IoModel* iomodel,int solutiontype){/*{{{*/
+
+	/*output: */
+	int  numanalyses = 0;
+	int* analyses=NULL;
+
+	/*Intermediaries*/
+	const int MAXANALYSES = 30;
+	int   analyses_temp[MAXANALYSES];
+
+	/*Analyses lists*/
+	switch(solutiontype){
+
+		case StressbalanceSolutionEnum:{
+			bool isSIA,isFS;
+			int  fe_FS;
+			iomodel->FindConstant(&fe_FS,"md.flowequation.fe_FS");
+			iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
+			iomodel->FindConstant(&isFS,"md.flowequation.isFS");
+			analyses_temp[numanalyses++]=StressbalanceAnalysisEnum;
+			analyses_temp[numanalyses++]=StressbalanceVerticalAnalysisEnum;
+			if(isSIA){
+				analyses_temp[numanalyses++]=StressbalanceSIAAnalysisEnum;
+			}
+			analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
+			analyses_temp[numanalyses++]=ExtrudeFromBaseAnalysisEnum;
+			analyses_temp[numanalyses++]=DepthAverageAnalysisEnum;
+			if(fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum){
+				analyses_temp[numanalyses++]=UzawaPressureAnalysisEnum;
+			}
+			}
+			break;
+
+		case SteadystateSolutionEnum:{
+			bool isSIA,isenthalpy;
+			iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
+			iomodel->FindConstant(&isenthalpy,"md.thermal.isenthalpy");
+			analyses_temp[numanalyses++]=StressbalanceAnalysisEnum;
+			analyses_temp[numanalyses++]=StressbalanceVerticalAnalysisEnum;
+			if(isSIA){
+				analyses_temp[numanalyses++]=StressbalanceSIAAnalysisEnum;
+			}
+			if(isenthalpy){
+				analyses_temp[numanalyses++]=EnthalpyAnalysisEnum;
+			}
+			else{
+				analyses_temp[numanalyses++]=ThermalAnalysisEnum;
+				analyses_temp[numanalyses++]=MeltingAnalysisEnum;
+			}
+			analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
+			}
+			break;
+
+		case ThermalSolutionEnum:{
+			bool isenthalpy;
+			iomodel->FindConstant(&isenthalpy,"md.thermal.isenthalpy");
+			if(isenthalpy){
+				analyses_temp[numanalyses++]=EnthalpyAnalysisEnum;
+			}
+			else{
+				analyses_temp[numanalyses++]=ThermalAnalysisEnum;
+				analyses_temp[numanalyses++]=MeltingAnalysisEnum;
+			}
+			}
+			break;
+
+		case HydrologySolutionEnum:
+			analyses_temp[numanalyses++]=HydrologyShreveAnalysisEnum;
+			analyses_temp[numanalyses++]=HydrologyDCInefficientAnalysisEnum;
+			analyses_temp[numanalyses++]=HydrologyDCEfficientAnalysisEnum;
+			analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
+			analyses_temp[numanalyses++]=L2ProjectionEPLAnalysisEnum;
+			break;
+
+		case MasstransportSolutionEnum:
+			analyses_temp[numanalyses++]=DepthAverageAnalysisEnum;
+			analyses_temp[numanalyses++]=SmbAnalysisEnum;
+			analyses_temp[numanalyses++]=MasstransportAnalysisEnum;
+			analyses_temp[numanalyses++]=ExtrudeFromBaseAnalysisEnum;
+			break;
+
+		case BalancethicknessSolutionEnum:
+			analyses_temp[numanalyses++]=BalancethicknessAnalysisEnum;
+			break;
+
+		case Balancethickness2SolutionEnum:
+			analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
+			analyses_temp[numanalyses++]=SmoothAnalysisEnum;
+			analyses_temp[numanalyses++]=Balancethickness2AnalysisEnum;
+			break;
+
+		case BalancethicknessSoftSolutionEnum:
+			analyses_temp[numanalyses++]=BalancethicknessAnalysisEnum;
+			break;
+
+		case BalancevelocitySolutionEnum:
+			analyses_temp[numanalyses++]=BalancevelocityAnalysisEnum;
+			analyses_temp[numanalyses++]=SmoothAnalysisEnum;
+			break;
+
+		case SurfaceSlopeSolutionEnum:
+			analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
+			break;
+
+		case BedSlopeSolutionEnum:
+			analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
+			break;
+
+		case GiaSolutionEnum:
+			analyses_temp[numanalyses++]=GiaAnalysisEnum;
+			break;
+		
+		case SealevelriseSolutionEnum:
+			analyses_temp[numanalyses++]=SealevelriseAnalysisEnum;
+			break;
+
+		case SmbSolutionEnum:
+			analyses_temp[numanalyses++]=SmbAnalysisEnum;
+			break;
+
+		case DamageEvolutionSolutionEnum:
+			analyses_temp[numanalyses++]=DamageEvolutionAnalysisEnum;
+			break;
+
+		case TransientSolutionEnum:{
+			bool isSIA,isFS,isthermal,isenthalpy,ismasstransport,isgroundingline,isstressbalance,ismovingfront,ishydrology,isdamage,issmb,isslr,isgia;
+			iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
+			iomodel->FindConstant(&isFS,"md.flowequation.isFS");
+			iomodel->FindConstant(&isthermal,"md.transient.isthermal");
+			iomodel->FindConstant(&isenthalpy,"md.thermal.isenthalpy");
+			iomodel->FindConstant(&ismovingfront,"md.transient.ismovingfront");
+			iomodel->FindConstant(&ismasstransport,"md.transient.ismasstransport");
+			iomodel->FindConstant(&isstressbalance,"md.transient.isstressbalance");
+			iomodel->FindConstant(&isgroundingline,"md.transient.isgroundingline");
+			iomodel->FindConstant(&isdamage,"md.transient.isdamageevolution");
+			iomodel->FindConstant(&ishydrology,"md.transient.ishydrology");
+			iomodel->FindConstant(&issmb,"md.transient.issmb");
+			iomodel->FindConstant(&isslr,"md.transient.isslr");
+			iomodel->FindConstant(&isgia,"md.transient.isgia");
+			if(isstressbalance){
+				int  fe_FS;
+				iomodel->FindConstant(&fe_FS,"md.flowequation.fe_FS");
+				analyses_temp[numanalyses++]=StressbalanceAnalysisEnum;
+				analyses_temp[numanalyses++]=StressbalanceVerticalAnalysisEnum;
+				if(isSIA){
+					analyses_temp[numanalyses++]=StressbalanceSIAAnalysisEnum;
+				}
+				analyses_temp[numanalyses++]=DepthAverageAnalysisEnum;
+				if(fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum){
+					analyses_temp[numanalyses++]=UzawaPressureAnalysisEnum;
+				}
+			}
+			if(isthermal && iomodel->domaintype==Domain3DEnum){
+				if(isenthalpy){
+					analyses_temp[numanalyses++]=EnthalpyAnalysisEnum;
+				}
+				else{
+					analyses_temp[numanalyses++]=ThermalAnalysisEnum;
+					analyses_temp[numanalyses++]=MeltingAnalysisEnum;
+				}
+			}
+			if(ismasstransport || isgroundingline){
+				analyses_temp[numanalyses++]=MasstransportAnalysisEnum;
+			}
+			if(issmb) analyses_temp[numanalyses++]=SmbAnalysisEnum;
+			if(ismovingfront){
+				analyses_temp[numanalyses++]=ExtrapolationAnalysisEnum;
+				analyses_temp[numanalyses++]=LevelsetAnalysisEnum;
+			}
+			if(ishydrology){
+				analyses_temp[numanalyses++]=HydrologyShreveAnalysisEnum;
+				analyses_temp[numanalyses++]=HydrologySommersAnalysisEnum;
+				analyses_temp[numanalyses++]=HydrologyDCInefficientAnalysisEnum;
+				analyses_temp[numanalyses++]=HydrologyDCEfficientAnalysisEnum;
+				analyses_temp[numanalyses++]=L2ProjectionEPLAnalysisEnum;
+			}
+			if(isdamage){
+				analyses_temp[numanalyses++]=DamageEvolutionAnalysisEnum;
+			}
+			if(isslr){
+				analyses_temp[numanalyses++]=SealevelriseAnalysisEnum;
+			}
+			if(isgia){
+				analyses_temp[numanalyses++]=GiaAnalysisEnum;
+			}
+
+			if(iomodel->domaintype==Domain2DverticalEnum || iomodel->domaintype==Domain3DEnum){
+				analyses_temp[numanalyses++]=ExtrudeFromBaseAnalysisEnum;
+				analyses_temp[numanalyses++]=ExtrudeFromTopAnalysisEnum;
+				analyses_temp[numanalyses++]=FreeSurfaceBaseAnalysisEnum;
+				analyses_temp[numanalyses++]=FreeSurfaceTopAnalysisEnum;
+			}
+			analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
+			}
+			break;
+
+		default:
+			_error_("solution type: " << EnumToStringx(solutiontype) << " not supported yet!");
+			break;
+	}
+
+	/*Copy analyses from temp to output*/
+	_assert_(numanalyses<MAXANALYSES);
+	analyses=xNew<int>(numanalyses);
+	for(int i=0;i<numanalyses;i++) analyses[i]=analyses_temp[i];
+
+	/*Assign output pointers:*/
+	if(pnumanalyses) *pnumanalyses=numanalyses;
+	if(panalyses)    *panalyses=analyses;
+	else              xDelete<int>(analyses);
+}/*}}}*/
+void FemModel::Solve(void){/*{{{*/
+
+	/*profiling: */
+	bool profiling = false;
+	IssmDouble solution_time;
+	IssmDouble solution_flops;
+	IssmDouble solution_memory;
+
+	/*solution: */
+	int solution_type;
+	void (*solutioncore)(FemModel*)=NULL; //core solution function pointer
+
+	_printf0_("call computational core:\n");
+
+	/*Retrieve solution_type from parameters: */
+	parameters->FindParam(&solution_type,SolutionTypeEnum);
+
+	/*Figure out which solution core we are going to run with the current solution type: */
+	WrapperCorePointerFromSolutionEnum(&solutioncore,this->parameters,solution_type);
+
+	/*run solution core: */
+	profiler->Tag(STARTCORE);   
+	solutioncore(this); 
+	profiler->Tag(FINISHCORE);
+
+	/*run AD core if needed: */
+	profiler->Tag(STARTADCORE); 
+	ad_core(this);      
+	profiler->Tag(FINISHADCORE);
+
+	/*some profiling results for the core: */
+	parameters->FindParam(&profiling,DebugProfilingEnum);
+	if(profiling){
+
+		solution_time=profiler->DeltaTime(STARTCORE,FINISHCORE);
+		solution_flops=profiler->DeltaFlops(STARTCORE,FINISHCORE);
+		solution_memory=profiler->Memory(FINISHCORE);
+
+		_printf0_("Core solution elapsed time    : " << solution_time   << " Seconds\n");
+		_printf0_("Core solution number of flops : " << solution_flops  << " Flops\n");
+		_printf0_("Core solution memory used     : " << solution_memory << " Bytes\n");
+
+		/*Add to results: */
+		results->AddObject(new GenericExternalResult<IssmDouble>(results->Size()+1, ProfilingSolutionTimeEnum,  solution_time));
+		results->AddObject(new GenericExternalResult<IssmDouble>(results->Size()+1, ProfilingCurrentMemEnum,  solution_memory));
+		results->AddObject(new GenericExternalResult<IssmDouble>(results->Size()+1, ProfilingCurrentFlopsEnum, solution_flops));
+
+		#ifdef _HAVE_ADOLC_
+		solution_time=profiler->DeltaTime(STARTADCORE,FINISHADCORE);
+		solution_flops=profiler->DeltaFlops(STARTADCORE,FINISHADCORE);
+		solution_memory=profiler->Memory(FINISHADCORE);
+
+		_printf0_("AD Solution elapsed time    : " << solution_time   << " Seconds\n");
+		_printf0_("AD Solution number of flops : " << solution_flops  << " Flops\n");
+		_printf0_("AD Solution memory used     : " << solution_memory << " Bytes\n");
+		#endif
+
+	}
+}
+/*}}}*/
+
+/*Modules:*/
+void FemModel::BalancethicknessMisfitx(IssmDouble* presponse){/*{{{*/
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	IssmDouble  weight,vx,vy,H,dvx[2],dvy[2],dH[2];
+	IssmDouble  temp,Jdet,dhdt,groundedice_melting,surface_mass_balance;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble  dp[3];
+
+	/*Compute Misfit: */
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+
+		/*If on water, return 0: */
+		if(!element->IsIceInElement()) continue;
+
+		/* Get node coordinates*/
+		element->GetVerticesCoordinates(&xyz_list);
+		Input* weights_input                   = element->GetInput(InversionCostFunctionsCoefficientsEnum);   _assert_(weights_input);
+		Input* thickness_input                 = element->GetInput(ThicknessEnum); _assert_(thickness_input);
+		Input* vx_input                        = element->GetInput(VxEnum);                                  _assert_(vx_input);
+		Input* vy_input                        = element->GetInput(VyEnum);                                  _assert_(vy_input);
+		Input* surface_mass_balance_input      = element->GetInput(SmbMassBalanceEnum);          _assert_(surface_mass_balance_input);
+		Input* groundedice_melting_input       = element->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(groundedice_melting_input);
+		Input* dhdt_input                      = element->GetInput(BalancethicknessThickeningRateEnum);      _assert_(dhdt_input);
+
+		/* Start  looping on the number of gaussian points: */
+		Gauss* gauss=element->NewGauss(2);
+		for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+			gauss->GaussPoint(ig);
+
+			/* Get Jacobian determinant: */
+			element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+			/*Get all parameters at gaussian point*/
+			weights_input->GetInputValue(&weight,gauss,BalancethicknessMisfitEnum);
+			thickness_input->GetInputValue(&H, gauss);
+			thickness_input->GetInputDerivativeValue(&dH[0],xyz_list,gauss);
+			surface_mass_balance_input->GetInputValue(&surface_mass_balance,gauss);
+			groundedice_melting_input->GetInputValue(&groundedice_melting,gauss);
+			dhdt_input->GetInputValue(&dhdt,gauss);
+			vx_input->GetInputValue(&vx,gauss);
+			vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+			vy_input->GetInputValue(&vy,gauss);
+			vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+
+			/*Balance thickness soft constraint J = 1/2 (div(Hv)-a)^2*/
+			temp  = vx*dH[0]+vy*dH[1]+H*(dvx[0]+dvy[1]) - (surface_mass_balance-groundedice_melting-dhdt);
+			J    +=weight*1/2*temp*temp*Jdet*gauss->weight;
+		}
+
+		/*clean up and Return: */
+		xDelete<IssmDouble>(xyz_list);
+		delete gauss;
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*presponse=J;
+
+}/*}}}*/
+void FemModel::CalvingRateDevx(){/*{{{*/
+
+	for(int i=0;i<elements->Size();i++){
+		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
+		element->CalvingRateDev();
+	}
+}
+/*}}}*/
+void FemModel::CalvingRateLevermannx(){/*{{{*/
+
+	for(int i=0;i<elements->Size();i++){
+		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
+		element->CalvingRateLevermann();
+	}
+}
+/*}}}*/
+void FemModel::CostFunctionx(IssmDouble* pJ,IssmDouble** pJlist,int* pn){/*{{{*/
+
+	/*Intermediary*/
+	int      num_responses;
+	int     *responses      = NULL;
+	Results *cost_functions = NULL;
+
+	/*Recover parameters*/
+	parameters->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	parameters->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+
+	/*Get the value of all cost functions*/
+	this->RequestedOutputsx(&cost_functions,responses,num_responses);
+
+	/*Get and add all contributions one by one*/
+	IssmDouble  J=0;
+	IssmDouble* Jlist = xNew<IssmDouble>(num_responses);
+	for(int i=0;i<num_responses;i++){
+		ExternalResult* result=(ExternalResult*)cost_functions->GetObjectByOffset(i);
+		Jlist[i] = reCast<IssmDouble>(result->GetValue());
+		J       += Jlist[i];
+	}
+	_assert_(cost_functions->Size()==num_responses);
+
+	/*Assign output pointers: */
+	delete cost_functions;
+	xDelete<int>(responses);
+	if(pJ)     *pJ     = J;
+	if(pJlist) *pJlist = Jlist;
+	else        xDelete<IssmDouble>(Jlist);
+	if(pn)     *pn     = num_responses;
+}
+/*}}}*/
+void FemModel::DeviatoricStressx(){/*{{{*/
+
+	for(int i=0;i<elements->Size();i++){
+		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
+		element->ComputeDeviatoricStressTensor();
+	}
+}
+/*}}}*/
+void FemModel::Divergencex(IssmDouble* pdiv){/*{{{*/
+
+	IssmDouble local_divergence=0;
+	IssmDouble total_divergence;
+
+	for(int i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		local_divergence+=element->Divergence();
+	}
+	ISSM_MPI_Reduce(&local_divergence,&total_divergence,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_divergence,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pdiv=total_divergence;
+
+}/*}}}*/
+void FemModel::ElementOperationx(void (Element::*function)(void)){ /*{{{*/
+
+	for(int i=0;i<elements->Size();i++){
+		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
+		(element->*function)();
+	}
+
+}
+/*}}}*/
+void FemModel::ElementResponsex(IssmDouble* presponse,int response_enum){/*{{{*/
+
+	int found=0;
+	int sumfound=0;
+	int cpu_found=-1;
+	int index;
+	IssmDouble response;
+	Element* element=NULL;
+
+	/*retrieve element we are interested in: */
+	this->parameters->FindParam(&index,IndexEnum);
+	int my_rank=IssmComm::GetRank();
+
+	/*now, go through our elements, and retrieve the one with this id: index: */
+	for(int i=0;i<this->elements->Size();i++){
+		element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		if (element->Id()==index){
+			found=1;
+			cpu_found=my_rank;
+			break;
+		}
+	}
+
+	/*Broadcast whether we found the element: */
+	ISSM_MPI_Allreduce ( &found,&sumfound,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
+	if(!sumfound)_error_("could not find material with id" << index << " to compute ElementResponse");
+
+	/*Ok, we found the element, compute responseocity: */
+	if(my_rank==cpu_found){
+		element->ElementResponse(&response,response_enum);
+	}
+
+	/*Broadcast and plug into response: */
+	ISSM_MPI_Allreduce ( &cpu_found,&cpu_found,1,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
+	ISSM_MPI_Bcast(&response,1,ISSM_MPI_DOUBLE,cpu_found,IssmComm::GetComm()); 
+
+	/*Assign output pointers: */
+	*presponse=response;
+
+}/*}}}*/
+void FemModel::FloatingAreax(IssmDouble* pV){/*{{{*/
+
+	IssmDouble local_floating_area= 0;
+	IssmDouble total_floating_area;
+
+	for(int i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		local_floating_area+=element->FloatingArea();
+	}
+	ISSM_MPI_Reduce(&local_floating_area,&total_floating_area,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_floating_area,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pV=total_floating_area;
+
+}/*}}}*/
+void FemModel::GetInputLocalMinMaxOnNodesx(IssmDouble** pmin,IssmDouble** pmax,IssmDouble* ug){/*{{{*/
+
+	/*Get vector sizes for current configuration*/
+	int configuration_type;
+	this->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	int numnodes = this->nodes->NumberOfNodes(configuration_type);
+
+	/*Initialize output vectors*/
+	IssmDouble* uLmin_local = xNew<IssmDouble>(numnodes);
+	IssmDouble* uLmax_local = xNew<IssmDouble>(numnodes);
+	IssmDouble* uLmin = xNew<IssmDouble>(numnodes);
+	IssmDouble* uLmax = xNew<IssmDouble>(numnodes);
+	for(int i=0;i<numnodes;i++){
+		uLmin_local[i] = +1.e+50;
+		uLmax_local[i] = -1.e+50;
+	}
+
+	for(int i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		element->GetInputLocalMinMaxOnNodes(uLmin_local,uLmax_local,ug);
+	}
+
+	/*Synchronize all CPUs*/
+	ISSM_MPI_Allreduce((void*)uLmin_local,(void*)uLmin,numnodes,ISSM_MPI_DOUBLE,ISSM_MPI_MIN,IssmComm::GetComm());
+	ISSM_MPI_Allreduce((void*)uLmax_local,(void*)uLmax,numnodes,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,IssmComm::GetComm());
+	xDelete<IssmDouble>(uLmin_local);
+	xDelete<IssmDouble>(uLmax_local);
+
+	/*Assign output pointers: */
+	*pmin=uLmin;
+	*pmax=uLmax;
+
+}/*}}}*/
+void FemModel::GroundedAreax(IssmDouble* pV){/*{{{*/
+
+	IssmDouble local_grounded_area= 0;
+	IssmDouble total_grounded_area;
+
+	for(int i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		local_grounded_area+=element->GroundedArea();
+	}
+	ISSM_MPI_Reduce(&local_grounded_area,&total_grounded_area,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_grounded_area,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pV=total_grounded_area;
+
+}/*}}}*/
+void FemModel::IceMassx(IssmDouble* pM){/*{{{*/
+
+	IssmDouble local_ice_mass = 0;
+	IssmDouble total_ice_mass;
+
+	for(int i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		local_ice_mass+=element->IceMass();
+	}
+	ISSM_MPI_Reduce(&local_ice_mass,&total_ice_mass,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_ice_mass,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pM=total_ice_mass;
+
+}/*}}}*/
+void FemModel::IceVolumeAboveFloatationx(IssmDouble* pV){/*{{{*/
+
+	IssmDouble local_ice_volume_af = 0;
+	IssmDouble total_ice_volume_af;
+
+	for(int i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		local_ice_volume_af+=element->IceVolumeAboveFloatation();
+	}
+	ISSM_MPI_Reduce(&local_ice_volume_af,&total_ice_volume_af,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_ice_volume_af,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pV=total_ice_volume_af;
+
+}/*}}}*/
+void FemModel::IceVolumex(IssmDouble* pV){/*{{{*/
+
+	IssmDouble local_ice_volume = 0;
+	IssmDouble total_ice_volume;
+
+	for(int i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		local_ice_volume+=element->IceVolume();
+	}
+	ISSM_MPI_Reduce(&local_ice_volume,&total_ice_volume,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_ice_volume,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pV=total_ice_volume;
+
+}/*}}}*/
+void FemModel::MassFluxx(IssmDouble* pmass_flux){/*{{{*/
+
+	int          i,j;
+	Element     *element       = NULL;
+	int          element_id;
+	bool         ispresent     = false;
+	IssmDouble   mass_flux     = 0;
+	IssmDouble   all_mass_flux = 0;
+	int          counter;
+	IssmDouble **array         = NULL;
+	int          M;
+	int         *mdims_array   = NULL;
+	int         *ndims_array   = NULL;
+	IssmDouble  *segments      = NULL;
+	int          num_segments;
+
+	/*First, figure out which segment to compute our mass flux on. Start with retrieving qmu_mass_flux_segments: */
+	this->parameters->FindParam(&ispresent,MassFluxSegmentsPresentEnum);
+	if(!ispresent)_error_("no mass flux segments available!");
+	this->parameters->FindParam(&array,&M,&mdims_array,&ndims_array,MassFluxSegmentsEnum);
+
+	/*Retrieve index of segments being used for MassFlux computation: */
+	parameters->FindParam(&counter,IndexEnum);
+
+	/*retrieve segments from array: */
+	segments     = array[counter-1]; //matlab to "C" indexing
+	num_segments = mdims_array[counter-1];
+
+	/*Go through segments, and then elements, and figure out which elements belong to a segment. 
+	 * When we find one, use the element to compute the mass flux on the segment: */
+	for(i=0;i<num_segments;i++){
+		element_id=reCast<int,IssmDouble>(*(segments+5*i+4));
+		for(j=0;j<elements->Size();j++){
+			element=(Element*)this->elements->GetObjectByOffset(j);
+			if (element->Id()==element_id){
+				/*We found the element which owns this segment, use it to compute the mass flux: */
+				mass_flux+=element->MassFlux(segments+5*i+0);
+				break;
+			}
+		}
+	}
+
+	ISSM_MPI_Allreduce ( (void*)&mass_flux,(void*)&all_mass_flux,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+	mass_flux=all_mass_flux;
+
+	/*Free ressources:*/
+	for(i=0;i<M;i++){
+		IssmDouble* matrix=array[i];
+		xDelete<IssmDouble>(matrix);
+	}
+	xDelete<int>(mdims_array);
+	xDelete<int>(ndims_array);
+	xDelete<IssmDouble*>(array);
+
+	/*Assign output pointers: */
+	*pmass_flux=mass_flux;
+
+}/*}}}*/
+void FemModel::MaxAbsVxx(IssmDouble* pmaxabsvx){/*{{{*/
+
+	int i;
+	IssmDouble maxabsvx;
+	IssmDouble node_maxabsvx;
+	IssmDouble element_maxabsvx;
+
+	/*Go through elements, and request velocity: */
+	maxabsvx=-INFINITY;
+	for(i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		element_maxabsvx=element->inputs->MaxAbs(VxEnum);
+		if(element_maxabsvx>maxabsvx) maxabsvx=element_maxabsvx;
+	}
+
+	/*Figure out maximum across the cluster: */
+	ISSM_MPI_Reduce(&maxabsvx,&node_maxabsvx,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_maxabsvx,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());   
+	maxabsvx=node_maxabsvx;
+
+	/*Assign output pointers:*/
+	*pmaxabsvx=maxabsvx;
+
+}/*}}}*/
+void FemModel::MaxAbsVyx(IssmDouble* pmaxabsvy){/*{{{*/
+
+	int i;
+	IssmDouble maxabsvy;
+	IssmDouble node_maxabsvy;
+	IssmDouble element_maxabsvy;
+
+	/*Go through elements, and request velocity: */
+	maxabsvy=-INFINITY;
+	for(i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		element_maxabsvy=element->inputs->MaxAbs(VyEnum);
+		if(element_maxabsvy>maxabsvy) maxabsvy=element_maxabsvy;
+	}
+
+	/*Figure out maximum across the cluster: */
+	ISSM_MPI_Reduce(&maxabsvy,&node_maxabsvy,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_maxabsvy,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());   
+	maxabsvy=node_maxabsvy;
+
+	/*Assign output pointers:*/
+	*pmaxabsvy=maxabsvy;
+
+}/*}}}*/
+void FemModel::MaxAbsVzx(IssmDouble* pmaxabsvz){/*{{{*/
+
+	int i;
+	IssmDouble maxabsvz;
+	IssmDouble node_maxabsvz;
+	IssmDouble element_maxabsvz;
+
+	/*Go through elements, and request velocity: */
+	maxabsvz=-INFINITY;
+	for(i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		element_maxabsvz=element->inputs->MaxAbs(VzEnum);
+		if(element_maxabsvz>maxabsvz) maxabsvz=element_maxabsvz;
+	}
+
+	/*Figure out maximum across the cluster: */
+	ISSM_MPI_Reduce(&maxabsvz,&node_maxabsvz,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_maxabsvz,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());   
+	maxabsvz=node_maxabsvz;
+
+	/*Assign output pointers:*/
+	*pmaxabsvz=maxabsvz;
+
+}/*}}}*/
+void FemModel::MaxDivergencex(IssmDouble* pdiv){/*{{{*/
+
+	IssmDouble local_divergence;
+	IssmDouble node_max_divergence;
+	IssmDouble max_divergence = -INFINITY;
+
+	for(int i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		local_divergence=element->Divergence();
+		if(fabs(local_divergence)>max_divergence) max_divergence=fabs(local_divergence);
+	}
+	ISSM_MPI_Reduce(&max_divergence,&node_max_divergence,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_max_divergence,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	max_divergence=node_max_divergence;
+
+	/*Assign output pointers: */
+	*pdiv=max_divergence;
+
+}/*}}}*/
+void FemModel::MaxVelx(IssmDouble* pmaxvel){/*{{{*/
+
+	int i;
+	IssmDouble maxvel;
+	IssmDouble node_maxvel;
+	IssmDouble element_maxvel;
+
+	/*Go through elements, and request velocity: */
+	maxvel=-INFINITY;
+	for(i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		element_maxvel = element->inputs->Max(VelEnum);
+		if(element_maxvel>maxvel) maxvel=element_maxvel;
+	}
+
+	/*Figure out maximum across the cluster: */
+	ISSM_MPI_Reduce(&maxvel,&node_maxvel,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_maxvel,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());   
+	maxvel=node_maxvel;
+
+	/*Assign output pointers:*/
+	*pmaxvel=maxvel;
+
+}/*}}}*/
+void FemModel::MaxVxx(IssmDouble* pmaxvx){/*{{{*/
+
+	int i;
+	IssmDouble maxvx;
+	IssmDouble node_maxvx;
+	IssmDouble element_maxvx;
+
+	/*Go through elements, and request velocity: */
+	maxvx=-INFINITY;
+	for(i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		element_maxvx = element->inputs->Max(VxEnum);
+		if(element_maxvx>maxvx) maxvx=element_maxvx;
+	}
+
+	/*Figure out maximum across the cluster: */
+	ISSM_MPI_Reduce(&maxvx,&node_maxvx,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_maxvx,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());   
+	maxvx=node_maxvx;
+
+	/*Assign output pointers:*/
+	*pmaxvx=maxvx;
+
+}/*}}}*/
+void FemModel::MaxVyx(IssmDouble* pmaxvy){/*{{{*/
+
+	int i;
+	IssmDouble maxvy;
+	IssmDouble node_maxvy;
+	IssmDouble element_maxvy;
+
+	/*Go through elements, and request velocity: */
+	maxvy=-INFINITY;
+	for(i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		element_maxvy = element->inputs->Max(VyEnum);
+		if(element_maxvy>maxvy) maxvy=element_maxvy;
+	}
+
+	/*Figure out maximum across the cluster: */
+	ISSM_MPI_Reduce(&maxvy,&node_maxvy,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_maxvy,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());   
+	maxvy=node_maxvy;
+
+	/*Assign output pointers:*/
+	*pmaxvy=maxvy;
+
+}/*}}}*/
+void FemModel::MaxVzx(IssmDouble* pmaxvz){/*{{{*/
+
+	int i;
+	IssmDouble maxvz;
+	IssmDouble node_maxvz;
+	IssmDouble element_maxvz;
+
+	/*Go through elements, and request velocity: */
+	maxvz=-INFINITY;
+	for(i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		element_maxvz = element->inputs->Max(VzEnum);
+		if(element_maxvz>maxvz) maxvz=element_maxvz;
+	}
+
+	/*Figure out maximum across the cluster: */
+	ISSM_MPI_Reduce(&maxvz,&node_maxvz,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_maxvz,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());   
+	maxvz=node_maxvz;
+
+	/*Assign output pointers:*/
+	*pmaxvz=maxvz;
+
+}/*}}}*/
+void FemModel::MinVelx(IssmDouble* pminvel){/*{{{*/
+
+	int i;
+	IssmDouble minvel;
+	IssmDouble node_minvel;
+	IssmDouble element_minvel;
+
+	/*Go through elements, and request velocity: */
+	minvel=INFINITY;
+	for(i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		element_minvel = element->inputs->Min(VelEnum);
+		if(element_minvel<minvel) minvel=element_minvel;
+	}
+
+	/*Figure out minimum across the cluster: */
+	ISSM_MPI_Reduce(&minvel,&node_minvel,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_minvel,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());   
+	minvel=node_minvel;
+
+	/*Assign output pointers:*/
+	*pminvel=minvel;
+
+}/*}}}*/
+void FemModel::MinVxx(IssmDouble* pminvx){/*{{{*/
+
+	int i;
+	IssmDouble minvx;
+	IssmDouble node_minvx;
+	IssmDouble element_minvx;
+
+	/*Go through elements, and request velocity: */
+	minvx=INFINITY;
+	for(i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		element_minvx = element->inputs->Min(VxEnum);
+		if(element_minvx<minvx) minvx=element_minvx;
+	}
+
+	/*Figure out minimum across the cluster: */
+	ISSM_MPI_Reduce(&minvx,&node_minvx,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_minvx,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());   
+	minvx=node_minvx;
+
+	/*Assign output pointers:*/
+	*pminvx=minvx;
+
+}/*}}}*/
+void FemModel::MinVyx(IssmDouble* pminvy){/*{{{*/
+
+	int i;
+	IssmDouble minvy;
+	IssmDouble node_minvy;
+	IssmDouble element_minvy;
+
+	/*Go through elements, and request velocity: */
+	minvy=INFINITY;
+	for(i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		element_minvy = element->inputs->Min(VyEnum);
+		if(element_minvy<minvy) minvy=element_minvy;
+	}
+
+	/*Figure out minimum across the cluster: */
+	ISSM_MPI_Reduce(&minvy,&node_minvy,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_minvy,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());   
+	minvy=node_minvy;
+
+	/*Assign output pointers:*/
+	*pminvy=minvy;
+
+}/*}}}*/
+void FemModel::MinVzx(IssmDouble* pminvz){/*{{{*/
+
+	int i;
+	IssmDouble minvz;
+	IssmDouble node_minvz;
+	IssmDouble element_minvz;
+
+	/*Go through elements, and request velocity: */
+	minvz=INFINITY;
+	for(i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		element_minvz = element->inputs->Min(VzEnum);
+		if(element_minvz<minvz) minvz=element_minvz;
+	}
+
+	/*Figure out minimum across the cluster: */
+	ISSM_MPI_Reduce(&minvz,&node_minvz,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_minvz,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());   
+	minvz=node_minvz;
+
+	/*Assign output pointers:*/
+	*pminvz=minvz;
+
+}/*}}}*/
+void FemModel::OutputControlsx(Results **presults){/*{{{*/
+
+	/*parameters: */
+	int         num_controls,step;
+	IssmDouble  time;
+	int        *control_type = NULL;
+
+	/*recover results*/
+	Results* results = *presults;
+	if(!results) results = new Results();
+
+	/*Get list of Controls*/
+	this->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	this->parameters->FindParam(&control_type,NULL,InversionControlParametersEnum);
+	this->parameters->FindParam(&step,StepEnum);
+	this->parameters->FindParam(&time,TimeEnum);
+
+	for(int i=0;i<num_controls;i++){
+
+		int control_enum = control_type[i];
+		int gradient_enum;
+
+		switch(i){
+			case 0: gradient_enum = Gradient1Enum; break;
+			case 1: gradient_enum = Gradient2Enum; break;
+			case 2: gradient_enum = Gradient3Enum; break;
+			default: _error_("more than 3 controls not implemented yet");
+		}
+
+		/*Allocate vector*/
+		Vector<IssmPDouble> *vector_control  = new Vector<IssmPDouble>(this->vertices->NumberOfVertices());
+		Vector<IssmPDouble> *vector_gradient = new Vector<IssmPDouble>(this->vertices->NumberOfVertices());
+
+		/*Fill in vector*/
+		for(int j=0;j<elements->Size();j++){
+			Element* element=(Element*)elements->GetObjectByOffset(j);
+			element->ControlToVectors(vector_control,vector_gradient,control_enum);
+		}
+		vector_control->Assemble();
+		vector_gradient->Assemble();
+
+		results->AddResult(new GenericExternalResult<Vector<IssmPDouble>*>(results->Size()+1,control_enum,vector_control ,step,time));
+		results->AddResult(new GenericExternalResult<Vector<IssmPDouble>*>(results->Size()+1,gradient_enum,vector_gradient,step,time));
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(control_type);
+}
+/*}}}*/
+void FemModel::RequestedDependentsx(void){/*{{{*/
+
+	bool        isautodiff      = false;
+	IssmDouble  output_value;
+
+	int         num_dependents;
+	IssmPDouble *dependents;
+	DataSet*    dependent_objects=NULL;
+	int my_rank=IssmComm::GetRank();
+
+	/*AD mode on?: */
+	parameters->FindParam(&isautodiff,AutodiffIsautodiffEnum);
+
+	if(isautodiff){
+		#ifdef _HAVE_ADOLC_
+		parameters->FindParam(&num_dependents,AutodiffNumDependentsEnum);
+		parameters->FindParam(&dependent_objects,AutodiffDependentObjectsEnum);
+		if(num_dependents){
+			dependents=xNew<IssmPDouble>(num_dependents);
+
+			/*Go through our dependent variables, and compute the response:*/
+			for(int i=0;i<dependent_objects->Size();i++){
+				DependentObject* dep=(DependentObject*)dependent_objects->GetObjectByOffset(i);
+				dep->Responsex(&output_value,this);
+				if (my_rank==0) {
+					output_value>>=dependents[i];
+				}
+			}
+		}
+		delete dependent_objects;
+		if(num_dependents)xDelete<IssmPDouble>(dependents);
+		#else
+		_error_("Should not be requesting dependents when an AD library is not available!");
+		#endif
+	}
+}
+/*}}}*/
+void FemModel::RequestedOutputsx(Results **presults,char** requested_outputs, int numoutputs, bool save_results){/*{{{*/
+
+	/*Intermediaries*/
+	bool        isvec,results_on_nodes;
+	int         step,output_enum;
+	IssmDouble  time;
+	IssmDouble  double_result;
+	const char *output_string = NULL;
+
+	/*recover results*/
+	Results* results = *presults;
+	if(!results) results = new Results();
+
+	/*Get time and step*/
+	parameters->FindParam(&step,StepEnum);
+	parameters->FindParam(&time,TimeEnum);
+	parameters->FindParam(&results_on_nodes,SettingsResultsOnNodesEnum);
+
+	/*Go through all requested output*/
+	for(int i=0;i<numoutputs;i++){
+
+		output_string = requested_outputs[i];
+		output_enum   = StringToEnumx(output_string,false);
+		isvec         = false;
+
+		/*If string is not an enum, it is defined in output definitions*/
+		if(output_enum<0){
+			double_result = OutputDefinitionsResponsex(this,output_string);
+			if(save_results){
+				results->AddResult(new GenericExternalResult<IssmPDouble>(results->Size()+1,output_string,reCast<IssmPDouble>(double_result),step,time));
+				continue;
+			}
+		}
+		else{
+			/*last chance for the output definition, if the enum is one of Outputdefinition[1-10]Enum:*/
+			if(output_enum>=Outputdefinition1Enum && output_enum <=Outputdefinition10Enum){
+				double_result = OutputDefinitionsResponsex(this,output_enum);
+				if(save_results){
+					results->AddResult(new GenericExternalResult<IssmPDouble>(results->Size()+1,output_string,reCast<IssmPDouble>(double_result),step,time));
+					continue;
+				}
+			}
+			else{
+				switch(output_enum){
+
+					/*Scalar output*/
+					case DivergenceEnum:               this->Divergencex(&double_result);               break;
+					case MaxDivergenceEnum:            this->MaxDivergencex(&double_result);            break;
+					case IceMassEnum:                  this->IceMassx(&double_result);                  break;
+					case IceVolumeEnum:                this->IceVolumex(&double_result);                break;
+					case IceVolumeAboveFloatationEnum: this->IceVolumeAboveFloatationx(&double_result); break;
+					case GroundedAreaEnum:             this->GroundedAreax(&double_result);             break;
+					case FloatingAreaEnum:             this->FloatingAreax(&double_result);             break;
+					case MinVelEnum:                   this->MinVelx(&double_result);                   break;
+					case MaxVelEnum:                   this->MaxVelx(&double_result);                   break;
+					case MinVxEnum:                    this->MinVxx(&double_result);                    break;
+					case MaxVxEnum:                    this->MaxVxx(&double_result);                    break;
+					case MaxAbsVxEnum:                 this->MaxAbsVxx(&double_result);                 break;
+					case MinVyEnum:                    this->MinVyx(&double_result);                    break;
+					case MaxVyEnum:                    this->MaxVyx(&double_result);                    break;
+					case MaxAbsVyEnum:                 this->MaxAbsVyx(&double_result);                 break;
+					case MinVzEnum:                    this->MinVzx(&double_result);                    break;
+					case MaxVzEnum:                    this->MaxVzx(&double_result);                    break;
+					case MaxAbsVzEnum:                 this->MaxAbsVzx(&double_result);                 break;
+					case MassFluxEnum:                 this->MassFluxx(&double_result);                 break;
+					case TotalFloatingBmbEnum:         this->TotalFloatingBmbx(&double_result);         break;
+					case TotalGroundedBmbEnum:         this->TotalGroundedBmbx(&double_result);         break;
+					case TotalSmbEnum:                 this->TotalSmbx(&double_result);                 break;
+
+			   /*Scalar control output*/
+				case SurfaceAbsVelMisfitEnum:       SurfaceAbsVelMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);        break;
+				case SurfaceRelVelMisfitEnum:       SurfaceRelVelMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);        break;
+				case SurfaceLogVelMisfitEnum:       SurfaceLogVelMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);        break;
+				case SurfaceLogVxVyMisfitEnum:      SurfaceLogVxVyMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);       break;
+				case SurfaceAverageVelMisfitEnum:   SurfaceAverageVelMisfitx(&double_result,this);                                                  break;
+				case ThicknessAbsMisfitEnum:        ThicknessAbsMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);         break;
+				case ThicknessAbsGradientEnum:      this->ThicknessAbsGradientx(&double_result);                                                    break;
+				case ThicknessAlongGradientEnum:    ThicknessAlongGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);     break;
+				case ThicknessAcrossGradientEnum:   ThicknessAcrossGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);    break;
+				case ThicknessPositiveEnum:         this->ThicknessPositivex(&double_result);                                                       break;
+				case RheologyBbarAbsGradientEnum:   RheologyBbarAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);    break;
+				case RheologyBAbsGradientEnum:      RheologyBAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);       break;
+				case DragCoefficientAbsGradientEnum:DragCoefficientAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters); break;
+				case BalancethicknessMisfitEnum:    BalancethicknessMisfitx(&double_result);                                                        break;
+				case SurfaceAbsMisfitEnum:          SurfaceAbsMisfitx(&double_result); break;
+
+				   /*Vector */
+					default:
+
+						/*Vector layout*/
+						int interpolation,nodesperelement,size,nlines,ncols,array_size;
+						int rank_interpolation=-1,rank_nodesperelement=-1,rank_arraysize=-1,max_rank_arraysize=0;
+						bool isarray=false;
+
+						/*Get interpolation (and compute input if necessary)*/
+						for(int j=0;j<elements->Size();j++){
+							Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(j));
+							element->ResultInterpolation(&rank_interpolation,&rank_nodesperelement,&rank_arraysize,output_enum);
+							if (rank_arraysize>max_rank_arraysize)max_rank_arraysize=rank_arraysize;
+						}
+						rank_arraysize=max_rank_arraysize;
+
+						/*Broadcast for cpus that do not have any elements*/
+						ISSM_MPI_Reduce(&rank_interpolation,&interpolation,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
+						ISSM_MPI_Reduce(&rank_nodesperelement,&nodesperelement,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
+						ISSM_MPI_Reduce(&rank_arraysize,&array_size,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
+						ISSM_MPI_Bcast(&interpolation,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+						ISSM_MPI_Bcast(&nodesperelement,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+						ISSM_MPI_Bcast(&array_size,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+						
+						if(results_on_nodes){
+
+							/*Allocate matrices*/
+							int         nbe       = this->elements->NumberOfElements();
+							IssmDouble* values    = xNewZeroInit<IssmDouble>(nbe*nodesperelement);
+							IssmDouble* allvalues = xNew<IssmDouble>(nbe*nodesperelement);
+
+							/*Fill-in matrix*/
+							for(int j=0;j<elements->Size();j++){
+								Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(j));
+								element->ResultToPatch(values,nodesperelement,output_enum);
+							}
+
+							/*Gather from all cpus*/
+							ISSM_MPI_Allreduce((void*)values,(void*)allvalues,nbe*nodesperelement,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+							xDelete<IssmDouble>(values);
+
+							if(save_results)results->AddResult(new GenericExternalResult<IssmDouble*>(results->Size()+1,output_enum,allvalues,nbe,nodesperelement,step,time));
+							xDelete<IssmDouble>(allvalues);
+
+						}
+						else{
+
+							/*Allocate vector depending on interpolation*/
+							switch(interpolation){
+								case P0Enum: isarray = false; size = this->elements->NumberOfElements(); break;
+								case P1Enum: isarray = false; size = this->vertices->NumberOfVertices(); break;
+								case P0ArrayEnum: isarray = true; nlines = this->elements->NumberOfElements(); ncols= array_size; break;
+								default:     _error_("Interpolation "<<EnumToStringx(interpolation)<<" not supported yet");
+
+							}
+							if (!isarray){
+								Vector<IssmDouble> *vector_result = new Vector<IssmDouble>(size);
+
+								/*Fill in vector*/
+								for(int j=0;j<elements->Size();j++){
+									Element* element=(Element*)elements->GetObjectByOffset(j);
+									element->ResultToVector(vector_result,output_enum);
+								}
+								vector_result->Assemble();
+
+								if(save_results)results->AddResult(new GenericExternalResult<Vector<IssmDouble>*>(results->Size()+1,output_enum,vector_result,step,time));
+							}
+							else{
+								IssmDouble* values    = xNewZeroInit<IssmDouble>(nlines*ncols);
+								IssmDouble* allvalues = xNew<IssmDouble>(nlines*ncols);
+								
+								/*Fill-in matrix*/
+								for(int j=0;j<elements->Size();j++){
+									Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(j));
+									element->ResultToMatrix(values,ncols, output_enum);
+								}
+								/*Gather from all cpus*/
+								ISSM_MPI_Allreduce((void*)values,(void*)allvalues,ncols*nlines,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+								xDelete<IssmDouble>(values);
+								
+								if(save_results)results->AddResult(new GenericExternalResult<IssmDouble*>(results->Size()+1,output_enum,allvalues,nlines,ncols,step,time));
+								xDelete<IssmDouble>(allvalues);
+							}
+						}
+						isvec = true;
+						break;
+				}
+			}
+
+		}
+
+		/*Add result to Results*/
+		if(!isvec && save_results){
+			results->AddResult(new GenericExternalResult<IssmPDouble>(results->Size()+1,output_string,reCast<IssmPDouble>(double_result),step,time));
+		}
+	}
+
+	/*Assign pointer and clean up*/
+	*presults = results;
+}
+/*}}}*/
+void FemModel::RequestedOutputsx(Results **presults,int* requested_outputs, int numoutputs,bool save_results){/*{{{*/
+
+	/*Convert list of enums to list of string*/
+	char** enumlist = xNew<char*>(numoutputs);
+	for(int i=0;i<numoutputs;i++){
+		EnumToStringx(&enumlist[i],requested_outputs[i]);
+	}
+
+	/*Call main module*/
+	this->RequestedOutputsx(presults,enumlist,numoutputs,save_results);
+
+	/*clean up and return*/
+	for(int i=0;i<numoutputs;i++) xDelete<char>(enumlist[i]);
+	xDelete<char*>(enumlist);
+	return;
+}
+/*}}}*/
+void FemModel::ResetLevelset(void){/*{{{*/
+
+	/*recover my_rank:*/
+	int my_rank   = IssmComm::GetRank();
+	int num_procs = IssmComm::GetSize();
+
+	/*1: go throug all elements of this partition and figure out how many
+	 * segments we have (corresopnding to levelset = 0)*/
+	DataSet* segments=new DataSet();
+	for(int i=0;i<elements->Size();i++){
+		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
+		element->WriteLevelsetSegment(segments);
+	}
+
+	/*2: now get the segments from all partitions*/
+	int  segcount=segments->Size();
+	int* allsegcount=xNew<int>(num_procs);
+	ISSM_MPI_Gather(&segcount,1,ISSM_MPI_INT,allsegcount,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	ISSM_MPI_Bcast(allsegcount,num_procs,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/* Every cpu should start its own dof count at the end of the dofcount from cpu-1*/
+	int numseg_offset=0;
+	int numseg=0;
+	for(int i=0;i<my_rank;  i++) numseg_offset+=allsegcount[i];
+	for(int i=0;i<num_procs;i++) numseg+=allsegcount[i];
+	IssmDouble* segmentlist    = xNewZeroInit<IssmDouble>(4*numseg);
+	IssmDouble* allsegmentlist = xNewZeroInit<IssmDouble>(4*numseg);
+	for(int i=0;i<segments->Size();i++){
+		Contour<IssmDouble>* segment=(Contour<IssmDouble>*)segments->GetObjectByOffset(i);
+		_assert_(segment->nods == 2);
+		segmentlist[(numseg_offset+i)*4 + 0] = segment->x[0];
+		segmentlist[(numseg_offset+i)*4 + 1] = segment->y[0];
+		segmentlist[(numseg_offset+i)*4 + 2] = segment->x[1];
+		segmentlist[(numseg_offset+i)*4 + 3] = segment->y[1];
+	}
+	ISSM_MPI_Allreduce((void*)segmentlist,(void*)allsegmentlist,4*numseg,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+	delete segments;
+	xDelete<IssmDouble>(segmentlist);
+	xDelete<int>(allsegcount);
+
+	/*3: update levelset for all elements*/
+	for(int i=0;i<elements->Size();i++){
+		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
+		element->ResetLevelsetFromSegmentlist(allsegmentlist,numseg);
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(allsegmentlist);
+
+}
+/*}}}*/
+void FemModel::Responsex(IssmDouble* responses,const char* response_descriptor){/*{{{*/
+
+	int response_descriptor_enum=StringToEnumx(response_descriptor);
+	this->Responsex(responses, response_descriptor_enum);
+
+}
+/*}}}*/
+void FemModel::Responsex(IssmDouble* responses,int response_descriptor_enum){/*{{{*/
+
+	switch (response_descriptor_enum){
+
+		case DivergenceEnum:               this->Divergencex(responses); break;
+		case MaxDivergenceEnum:            this->MaxDivergencex(responses); break;
+		case IceMassEnum:                  this->IceMassx(responses); break;
+		case IceVolumeEnum:                this->IceVolumex(responses); break;
+		case IceVolumeAboveFloatationEnum: this->IceVolumeAboveFloatationx(responses); break;
+		case GroundedAreaEnum:             this->GroundedAreax(responses); break;
+		case FloatingAreaEnum:             this->FloatingAreax(responses); break;
+		case MinVelEnum:                   this->MinVelx(responses); break;
+		case MaxVelEnum:                   this->MaxVelx(responses); break;
+		case MinVxEnum:                    this->MinVxx(responses); break;
+		case MaxVxEnum:                    this->MaxVxx(responses); break;
+		case MaxAbsVxEnum:                 this->MaxAbsVxx(responses); break;
+		case MinVyEnum:                    this->MinVyx(responses); break;
+		case MaxVyEnum:                    this->MaxVyx(responses); break;
+		case MaxAbsVyEnum:                 this->MaxAbsVyx(responses); break;
+		case MinVzEnum:                    this->MinVzx(responses); break;
+		case MaxVzEnum:                    this->MaxVzx(responses); break;
+		case MaxAbsVzEnum:                 this->MaxAbsVzx(responses); break;
+		case MassFluxEnum:                 this->MassFluxx(responses); break;
+		case SurfaceAbsVelMisfitEnum:      SurfaceAbsVelMisfitx(responses, elements,nodes, vertices, loads, materials,parameters); break;
+		case SurfaceRelVelMisfitEnum:      SurfaceRelVelMisfitx(responses, elements,nodes, vertices, loads, materials,parameters); break;
+		case SurfaceLogVelMisfitEnum:      SurfaceLogVelMisfitx(responses, elements,nodes, vertices, loads, materials,parameters); break;
+		case SurfaceLogVxVyMisfitEnum:     SurfaceLogVxVyMisfitx(responses, elements,nodes, vertices, loads, materials,parameters); break;
+		case SurfaceAverageVelMisfitEnum:  SurfaceAverageVelMisfitx(responses,this); break;
+		case ThicknessAbsMisfitEnum:       ThicknessAbsMisfitx(responses, elements,nodes, vertices, loads, materials, parameters); break;
+		case ThicknessAbsGradientEnum:     this->ThicknessAbsGradientx(responses); break;
+		case ThicknessAlongGradientEnum:   ThicknessAlongGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break;
+		case ThicknessAcrossGradientEnum:  ThicknessAcrossGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break;
+		case RheologyBbarAbsGradientEnum:  RheologyBbarAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break;
+		case DragCoefficientAbsGradientEnum:DragCoefficientAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break;
+		case BalancethicknessMisfitEnum:   BalancethicknessMisfitx(responses); break;
+		case TotalFloatingBmbEnum:			  this->TotalFloatingBmbx(responses); break;
+		case TotalGroundedBmbEnum:			  this->TotalGroundedBmbx(responses); break;
+		case TotalSmbEnum:					  this->TotalSmbx(responses); break;
+		case MaterialsRheologyBbarEnum:    this->ElementResponsex(responses,MaterialsRheologyBbarEnum); break;
+		case VelEnum:                      this->ElementResponsex(responses,VelEnum); break;
+		case FrictionCoefficientEnum:      NodalValuex(responses, FrictionCoefficientEnum,elements,nodes, vertices, loads, materials, parameters); break;
+		default: _error_("response descriptor \"" << EnumToStringx(response_descriptor_enum) << "\" not supported yet!"); break; 
+	}
+
+}
+/*}}}*/
+void FemModel::StrainRateparallelx(){/*{{{*/
+
+	for(int i=0;i<elements->Size();i++){
+		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
+		element->StrainRateparallel();
+	}
+}
+/*}}}*/
+void FemModel::StrainRateperpendicularx(){/*{{{*/
+
+	for(int i=0;i<elements->Size();i++){
+		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
+		element->StrainRateperpendicular();
+	}
+}
+/*}}}*/
+void FemModel::StressIntensityFactorx(){/*{{{*/
+
+	/*Update input for basal element only*/
+	for(int i=0;i<elements->Size();i++){
+		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
+		element->StressIntensityFactor();
+	}
+}
+	/*}}}*/
+void FemModel::SurfaceAbsMisfitx(IssmDouble* presponse){/*{{{*/
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	IssmDouble  surface,surfaceobs,weight;
+	IssmDouble  Jdet;
+	IssmDouble* xyz_list = NULL;
+
+	/*Compute Misfit: */
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+
+		/*If on water, return 0: */
+		if(!element->IsIceInElement()) continue;
+
+		/* Get node coordinates*/
+		element->GetVerticesCoordinates(&xyz_list);
+
+		 /*Retrieve all inputs we will be needing: */
+		 Input* weights_input   =element->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+		 Input* surface_input   =element->GetInput(SurfaceEnum);                            _assert_(surface_input);
+		 Input* surfaceobs_input=element->GetInput(InversionSurfaceObsEnum);                _assert_(surfaceobs_input);
+
+		 /* Start  looping on the number of gaussian points: */
+		 Gauss* gauss=element->NewGauss(2);
+		 for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+			 gauss->GaussPoint(ig);
+
+			 /* Get Jacobian determinant: */
+			 element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+			 /*Get all parameters at gaussian point*/
+			 weights_input->GetInputValue(&weight,gauss,SurfaceAbsMisfitEnum);
+			 surface_input->GetInputValue(&surface,gauss);
+			 surfaceobs_input->GetInputValue(&surfaceobs,gauss);
+
+			 /*Compute SurfaceAbsMisfitEnum*/
+			 J+=0.5*(surface-surfaceobs)*(surface-surfaceobs)*weight*Jdet*gauss->weight;
+		 }
+		 delete gauss;
+		 xDelete<IssmDouble>(xyz_list);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*presponse=J;
+
+}/*}}}*/
+void FemModel::ThicknessAbsGradientx( IssmDouble* pJ){/*{{{*/
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	IssmDouble  thickness,thicknessobs,weight;
+	IssmDouble  Jdet;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble  dp[3];
+
+	/*Compute Misfit: */
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+
+		/*If on water, return 0: */
+		if(!element->IsIceInElement()) continue;
+
+		/* Get node coordinates*/
+		element->GetVerticesCoordinates(&xyz_list);
+
+		/*Retrieve all inputs we will be needing: */
+		Input* weights_input   =element->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+		Input* thickness_input =element->GetInput(ThicknessEnum);                          _assert_(thickness_input);
+
+		/* Start  looping on the number of gaussian points: */
+		Gauss* gauss=element->NewGauss(2);
+		for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+			gauss->GaussPoint(ig);
+
+			/* Get Jacobian determinant: */
+			element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+			/*Get all parameters at gaussian point*/
+			weights_input->GetInputValue(&weight,gauss,ThicknessAbsGradientEnum);
+			thickness_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+
+			/*Tikhonov regularization: J = 1/2 ((dp/dx)^2 + (dp/dy)^2) */ 
+			J+=weight*1/2*(dp[0]*dp[0]+dp[1]*dp[1])*Jdet*gauss->weight;
+		}
+
+		/*clean up and Return: */
+		xDelete<IssmDouble>(xyz_list);
+		delete gauss;
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+/*}}}*/
+void FemModel::ThicknessPositivex(IssmDouble* pJ){/*{{{*/
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	IssmDouble  thickness,weight;
+	IssmDouble  Jdet;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble  H;
+
+	/*Compute Misfit: */
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+
+		/*If on water, return 0: */
+		if(!element->IsIceInElement()) continue;
+
+		/* Get node coordinates*/
+		element->GetVerticesCoordinates(&xyz_list);
+
+		/*Retrieve all inputs we will be needing: */
+		Input* weights_input   =element->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+		Input* thickness_input =element->GetInput(ThicknessEnum);                          _assert_(thickness_input);
+
+		/* Start  looping on the number of gaussian points: */
+		Gauss* gauss=element->NewGauss(2);
+		for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+			gauss->GaussPoint(ig);
+
+			/* Get Jacobian determinant: */
+			element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+			/*Get all parameters at gaussian point*/
+			weights_input->GetInputValue(&weight,gauss,ThicknessPositiveEnum);
+			thickness_input->GetInputValue(&H,gauss);
+
+			/*int min(H,0)^2 */
+			if(H<=0){
+				J+=weight*H*H*Jdet*gauss->weight;
+			}
+		}
+
+		/*clean up and Return: */
+		xDelete<IssmDouble>(xyz_list);
+		delete gauss;
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+/*}}}*/
+void FemModel::TimeAdaptx(IssmDouble* pdt){/*{{{*/
+
+	int      i;
+
+	/*output: */
+	IssmDouble   dt;
+
+	/*intermediary: */
+	Element *element     = NULL;
+	IssmDouble   min_dt      = 0;
+	IssmDouble   node_min_dt = 0;
+
+	/*Go through elements, and figure out the minimum of the time steps for each element (using CFL criterion): */
+	element=(Element*)elements->GetObjectByOffset(0); min_dt=element->TimeAdapt();
+
+	for (i=1;i<elements->Size();i++){
+		element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		dt=element->TimeAdapt();
+		if(dt<min_dt)min_dt=dt;
+	}
+
+	/*Figure out minimum across the cluster: */
+	ISSM_MPI_Reduce (&min_dt,&node_min_dt,1,ISSM_MPI_DOUBLE,ISSM_MPI_MIN,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_min_dt,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	min_dt=node_min_dt;
+
+	/*Assign output pointers:*/
+	*pdt=min_dt;
+}
+/*}}}*/
+void FemModel::TotalFloatingBmbx(IssmDouble* pFbmb){/*{{{*/
+
+	IssmDouble local_fbmb = 0;
+	IssmDouble total_fbmb;
+
+	for(int i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		local_fbmb+=element->TotalFloatingBmb();
+	}
+	ISSM_MPI_Reduce(&local_fbmb,&total_fbmb,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_fbmb,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pFbmb=total_fbmb;
+
+}/*}}}*/
+void FemModel::TotalGroundedBmbx(IssmDouble* pGbmb){/*{{{*/
+
+	IssmDouble local_gbmb = 0;
+	IssmDouble total_gbmb;
+
+	for(int i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		local_gbmb+=element->TotalGroundedBmb();
+	}
+	ISSM_MPI_Reduce(&local_gbmb,&total_gbmb,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_gbmb,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pGbmb=total_gbmb;
+
+}/*}}}*/
+void FemModel::TotalSmbx(IssmDouble* pSmb){/*{{{*/
+
+	IssmDouble local_smb = 0;
+	IssmDouble total_smb;
+
+	for(int i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		local_smb+=element->TotalSmb();
+	}
+	ISSM_MPI_Reduce(&local_smb,&total_smb,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_smb,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pSmb=total_smb;
+
+}/*}}}*/
+void FemModel::UpdateConstraintsExtrudeFromBasex(void){ /*{{{*/
+
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		element->UpdateConstraintsExtrudeFromBase();
+	}
+
+}
+/*}}}*/
+void FemModel::UpdateConstraintsExtrudeFromTopx(void){ /*{{{*/
+
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		element->UpdateConstraintsExtrudeFromTop();
+	}
+
+}
+/*}}}*/
+void FemModel::UpdateConstraintsx(void){ /*{{{*/
+
+	IssmDouble time;
+	int        analysis_type;
+
+	/*retrieve parameters: */
+	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+	parameters->FindParam(&time,TimeEnum);
+
+	/*start module: */
+	if(VerboseModule()) _printf0_("   Updating constraints and active domain of analysis " << EnumToStringx(analysis_type)  << " for time: " << time << "\n");
+
+	Analysis* analysis= EnumToAnalysis(analysis_type);
+	analysis->UpdateConstraints(this);
+	delete analysis;
+	
+	/*Second, constraints might be time dependent: */
+	SpcNodesx(nodes,constraints,parameters,analysis_type); 
+
+	/*Now, update degrees of freedoms: */
+	NodesDofx(nodes,parameters,analysis_type);
+
+}
+/*}}}*/
+int  FemModel::UpdateVertexPositionsx(void){ /*{{{*/
+
+	IssmDouble         *surface = NULL;
+	IssmDouble         *bed     = NULL;
+			
+	if(VerboseSolution()) _printf0_("   updating vertices positions\n");
+
+	/*get vertex vectors for bed and thickness: */
+	GetVectorFromInputsx(&surface  ,this, SurfaceEnum,VertexPIdEnum);
+	GetVectorFromInputsx(&bed      ,this, BaseEnum,   VertexPIdEnum);
+
+	/*Allocate vector*/
+	Vector<IssmDouble> *vx=new Vector<IssmDouble>(vertices->NumberOfVertices());
+	Vector<IssmDouble> *vy=new Vector<IssmDouble>(vertices->NumberOfVertices());
+	Vector<IssmDouble> *vz=new Vector<IssmDouble>(vertices->NumberOfVertices());
+
+	/*Update verices new geometry: */
+	for(int i=0;i<vertices->Size();i++){
+		Vertex* vertex=(Vertex*)vertices->GetObjectByOffset(i);
+		vertex->UpdatePosition(vx,vy,vz,parameters,surface,bed);
+	}
+
+	/*Assemble mesh velocity*/
+	vx->Assemble();
+	vy->Assemble();
+	vz->Assemble();
+
+	/*Update element inputs*/
+	InputUpdateFromVectorx(this,vx,VxMeshEnum,VertexPIdEnum);
+	InputUpdateFromVectorx(this,vy,VyMeshEnum,VertexPIdEnum);
+	InputUpdateFromVectorx(this,vz,VzMeshEnum,VertexPIdEnum);
+
+	/*Free ressources:*/
+	delete vx;
+	delete vy;
+	delete vz;
+	xDelete<IssmDouble>(bed);
+	xDelete<IssmDouble>(surface);
+	return 1;
+}
+/*}}}*/
+#ifdef  _HAVE_DAKOTA_
+void FemModel::DakotaResponsesx(double* d_responses,char** responses_descriptors,int numresponsedescriptors,int d_numresponses){/*{{{*/
+
+	int        i,j;
+	int        my_rank;
+
+	/*intermediary: */
+	char   root[50];
+	int    index;
+	int    npart;
+	double femmodel_response;
+	int    flag;
+	double *vertex_response   = NULL;
+	double *qmu_response      = NULL;
+	double *responses_pointer = NULL;
+
+	/*retrieve npart: */
+	parameters->FindParam(&npart,QmuNumberofpartitionsEnum);
+	my_rank=IssmComm::GetRank();
+
+	/*save the d_responses pointer: */
+	responses_pointer=d_responses;
+
+	//watch out, we have more d_numresponses than numresponsedescriptors, because the responses have been expanded if they were scaled. 
+	//because we don't know the d_responses descriptors (the scaled ones) we can't key off them, so we will key off the responses_descriptors: */
+
+	for(i=0;i<numresponsedescriptors;i++){
+
+		flag=DescriptorIndex(root,&index,responses_descriptors[i]);
+
+		if(flag==ScaledEnum){
+
+			/*this response was scaled. pick up the response from the inputs: */
+			GetVectorFromInputsx(&vertex_response,this, StringToEnumx(root),VertexPIdEnum);
+
+			/*Now, average it onto the partition nodes: */
+			AverageOntoPartitionx(&qmu_response,elements,nodes,vertices,loads,materials,parameters,vertex_response);
+
+			/*Copy onto our dakota responses: */
+			if(my_rank==0){
+				/*plug response: */
+				for(j=0;j<npart;j++)responses_pointer[j]=qmu_response[j];
+
+				/*increment response_pointer :*/
+				responses_pointer+=npart;
+			}
+
+			/*Free ressources:*/
+			xDelete<double>(vertex_response);
+			xDelete<double>(qmu_response);
+
+		}
+		else if (flag==IndexedEnum){
+
+			/*indexed response: plug index into parameters and call response module: */
+			parameters->SetParam(index,IndexEnum);
+
+			this->Responsex(&femmodel_response,root);
+
+			if(my_rank==0){
+				/*plug response: */
+				responses_pointer[0]=femmodel_response;
+
+				/*increment response_pointer :*/
+				responses_pointer++;
+			}
+		}
+		else if (flag==NodalEnum){
+			_error_("nodal response functions not supported yet!");
+
+			/*increment response_pointer :*/
+			responses_pointer++;
+		}
+		else if (flag==RegularEnum){
+
+			/*perfectly normal response function: */
+			this->Responsex(&femmodel_response,root);
+
+			if(my_rank==0){
+				/*plug response: */
+				responses_pointer[0]=femmodel_response;
+
+				/*increment response_pointer :*/
+				responses_pointer++;
+			}
+		}
+		else _error_("flag type " << flag << " not supported yet for response analysis");
+	}
+
+	/*Synthesize echo: {{{*/
+	if(my_rank==0){
+		_printf_("   responses: " << d_numresponses << ": ");
+		for(i=0;i<d_numresponses-1;i++)_printf_(d_responses[i] << "|");
+		_printf_(d_responses[d_numresponses-1]);
+		_printf_("\n");
+	}
+	/*}}}*/
+
+}
+/*}}}*/
+#endif
+#ifdef _HAVE_GIA_
+void FemModel::Deflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt, IssmDouble* x, IssmDouble* y){ /*{{{*/
+
+	/*Go through elements, and add contribution from each element to the deflection vector wg:*/
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		element->GiaDeflection(wg,dwgdt, x,y);
+	}
+}
+/*}}}*/
+#endif
+#ifdef _HAVE_SEALEVELRISE_
+void FemModel::SealevelriseEustatic(Vector<IssmDouble>* pSgi, IssmDouble* peustatic, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius) { /*{{{*/
+
+	/*serialized vectors:*/
+	IssmDouble  eustatic       = 0.;
+	IssmDouble  eustatic_cpu   = 0.;
+	IssmDouble  eustatic_cpu_e = 0.;
+	IssmDouble  oceanarea      = 0.;
+	IssmDouble  oceanarea_cpu  = 0.;
+	IssmDouble  eartharea      = 0.;
+	IssmDouble  eartharea_cpu  = 0.;
+	int         ns,nsmax;
+	
+	/*Go through elements, and add contribution from each element to the deflection vector wg:*/
+	ns = elements->Size();
+
+	/*First, figure out the area of the ocean, which is needed to compute the eustatic component: */
+	for(int i=0;i<ns;i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		oceanarea_cpu += element->OceanArea();
+		eartharea_cpu += element->GetAreaSpherical();
+	}
+	ISSM_MPI_Reduce (&oceanarea_cpu,&oceanarea,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&oceanarea,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	_assert_(oceanarea>0.);
+
+	ISSM_MPI_Reduce (&eartharea_cpu,&eartharea,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&eartharea,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Figure out max of ns: */
+	ISSM_MPI_Reduce(&ns,&nsmax,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
+	ISSM_MPI_Bcast(&nsmax,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Call the sea level rise core: */
+	for(int i=0;i<nsmax;i++){
+		if(i<ns){
+		
+			if(VerboseConvergence())if(i%100==0)_printf0_("\r" << "      convolution progress: " << (double)i/(double)ns*100 << "%  ");
+		
+			Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+			element->SealevelriseEustatic(pSgi,&eustatic_cpu_e,latitude,longitude,radius,oceanarea,eartharea);
+			eustatic_cpu+=eustatic_cpu_e;
+		}
+		if(i%100==0)pSgi->Assemble();
+	}
+	if(VerboseConvergence())_printf0_("\n");
+		
+	/*One last time: */
+	pSgi->Assemble();
+
+	/*Sum all eustatic components from all cpus:*/
+	ISSM_MPI_Reduce (&eustatic_cpu,&eustatic,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&eustatic,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	_assert_(!xIsNan<IssmDouble>(eustatic));
+
+	/*Assign output pointers:*/
+	*peustatic=eustatic;
+
+}
+/*}}}*/
+void FemModel::SealevelriseNonEustatic(Vector<IssmDouble>* pSgo, Vector<IssmDouble>* pSg_old, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, bool verboseconvolution){/*{{{*/
+
+	/*serialized vectors:*/
+	IssmDouble* Sg_old=NULL;
+	
+	IssmDouble  oceanarea=0;
+	IssmDouble  oceanarea_cpu=0;
+	IssmDouble  eartharea=0;
+	IssmDouble  eartharea_cpu=0;
+
+	int         ns,nsmax;
+	
+	/*Serialize vectors from previous iteration:*/
+	Sg_old=pSg_old->ToMPISerial();
+
+	/*Go through elements, and add contribution from each element to the deflection vector wg:*/
+	ns = elements->Size();
+	
+	/*First, figure out the area of the ocean, which is needed to compute the eustatic component: */
+	for(int i=0;i<ns;i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		oceanarea_cpu += element->OceanArea();
+		eartharea_cpu += element->GetAreaSpherical();
+	}
+	ISSM_MPI_Reduce (&oceanarea_cpu,&oceanarea,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&oceanarea,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	
+	ISSM_MPI_Reduce (&eartharea_cpu,&eartharea,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&eartharea,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Figure out max of ns: */
+	ISSM_MPI_Reduce(&ns,&nsmax,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
+	ISSM_MPI_Bcast(&nsmax,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Call the sea level rise core: */
+	for(int i=0;i<nsmax;i++){
+		if(i<ns){
+
+			if(verboseconvolution)if(VerboseConvergence())if(i%100==0)_printf_("\r" << "      convolution progress: " << (double)i/(double)ns*100 << "%   ");
+
+			Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+			element->SealevelriseNonEustatic(pSgo, Sg_old,latitude,longitude,radius,oceanarea,eartharea);
+		}
+		if(i%100==0)pSgo->Assemble();
+	}
+	if(verboseconvolution)if(VerboseConvergence())_printf_("\n");
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(Sg_old);
+}
+/*}}}*/
+void FemModel::SealevelriseGeodetic(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pSg, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){/*{{{*/
+
+	/*serialized vectors:*/
+	IssmDouble* Sg=NULL;
+	
+	IssmDouble  oceanarea=0;
+	IssmDouble  oceanarea_cpu=0;
+	IssmDouble  eartharea=0;
+	IssmDouble  eartharea_cpu=0;
+
+	int         ns,nsmax;
+	
+	/*Serialize vectors from previous iteration:*/
+	Sg=pSg->ToMPISerial();
+
+	/*Go through elements, and add contribution from each element to the deflection vector wg:*/
+	ns = elements->Size();
+	
+	/*First, figure out the area of the ocean, which is needed to compute the eustatic component: */
+	for(int i=0;i<ns;i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		oceanarea_cpu += element->OceanArea();
+		eartharea_cpu += element->GetAreaSpherical();
+	}
+	ISSM_MPI_Reduce (&oceanarea_cpu,&oceanarea,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&oceanarea,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	
+	ISSM_MPI_Reduce (&eartharea_cpu,&eartharea,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&eartharea,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Figure out max of ns: */
+	ISSM_MPI_Reduce(&ns,&nsmax,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
+	ISSM_MPI_Bcast(&nsmax,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Call the sea level rise core: */
+	for(int i=0;i<nsmax;i++){
+		if(i<ns){
+			Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+			element->SealevelriseGeodetic(pUp,pNorth,pEast,Sg,latitude,longitude,radius,xx,yy,zz,oceanarea,eartharea);
+		}
+		if(i%100==0){
+			pUp->Assemble();
+			pNorth->Assemble();
+			pEast->Assemble();
+		}
+	}
+	
+	/*One last time: */
+	pUp->Assemble();
+	pNorth->Assemble();
+	pEast->Assemble();
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(Sg);
+	xDelete<IssmDouble>(latitude);
+	xDelete<IssmDouble>(longitude);
+	xDelete<IssmDouble>(radius);
+	xDelete<IssmDouble>(xx);
+	xDelete<IssmDouble>(yy);
+	xDelete<IssmDouble>(zz);
+}
+/*}}}*/
+IssmDouble FemModel::SealevelriseOceanAverage(Vector<IssmDouble>* Sg) { /*{{{*/
+
+	IssmDouble* Sg_serial=NULL;
+	IssmDouble  oceanvalue,oceanvalue_cpu;
+	IssmDouble  oceanarea,oceanarea_cpu;
+
+	/*Serialize vectors from previous iteration:*/
+	Sg_serial=Sg->ToMPISerial();
+
+	/*Initialize:*/
+	oceanvalue_cpu=0;
+	oceanarea_cpu=0;
+
+	/*Go through elements, and add contribution from each element and divide by overall ocean area:*/
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		oceanarea_cpu += element->OceanArea();
+		oceanvalue_cpu += element->OceanAverage(Sg_serial);
+	}
+	ISSM_MPI_Reduce (&oceanarea_cpu,&oceanarea,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&oceanarea,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	
+	ISSM_MPI_Reduce (&oceanvalue_cpu,&oceanvalue,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&oceanvalue,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(Sg_serial);
+	
+	return oceanvalue/oceanarea;
+}
+/*}}}*/
+#endif
+void FemModel::HydrologyEPLupdateDomainx(IssmDouble* pEplcount){ /*{{{*/
+
+	Vector<IssmDouble>* mask							= NULL;
+	Vector<IssmDouble>* recurence  				= NULL;
+	Vector<IssmDouble>* active						= NULL;
+	IssmDouble*         serial_mask				= NULL;
+	IssmDouble*         serial_rec  			= NULL;
+	IssmDouble*         serial_active			= NULL;
+	IssmDouble*         old_active        = NULL;
+	int*                eplzigzag_counter =	NULL;
+	int                 eplflip_lock;
+	
+	HydrologyDCEfficientAnalysis* effanalysis =  new HydrologyDCEfficientAnalysis();
+	HydrologyDCInefficientAnalysis* inefanalysis =  new HydrologyDCInefficientAnalysis();
+
+	/*Step 1: update mask, the mask might be extended by residual and/or using downstream sediment head*/
+	mask=new Vector<IssmDouble>(this->nodes->NumberOfNodes(HydrologyDCEfficientAnalysisEnum));
+	recurence=new Vector<IssmDouble>(this->nodes->NumberOfNodes(HydrologyDCEfficientAnalysisEnum));
+	this->parameters->FindParam(&eplzigzag_counter,NULL,EplZigZagCounterEnum); 
+	this->parameters->FindParam(&eplflip_lock,HydrologydcEplflipLockEnum); 
+	GetVectorFromInputsx(&old_active,this,HydrologydcMaskEplactiveNodeEnum,NodeSIdEnum);
+	
+	for (int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		effanalysis->HydrologyEPLGetMask(mask,recurence,eplzigzag_counter,element);
+	}
+	/*check for changes and increment zigzag counter, change the mask if necessary*/
+	recurence->Assemble();
+	serial_rec=recurence->ToMPISerial();
+	for (int i=0;i<nodes->Size();i++){
+		Node* node=xDynamicCast<Node*>(nodes->GetObjectByOffset(i));
+		if(serial_rec[node->Sid()]==1.)eplzigzag_counter[node->Lid()] ++;
+		if(eplzigzag_counter[node->Lid()]>eplflip_lock & eplflip_lock!=0){
+			mask->SetValue(node->Sid(),old_active[node->Sid()],INS_VAL);
+		}
+	}
+
+	
+	this->parameters->SetParam(eplzigzag_counter,this->nodes->Size(),EplZigZagCounterEnum);
+	/*Assemble and serialize*/
+	mask->Assemble();
+	serial_mask=mask->ToMPISerial();	
+	
+	xDelete<int>(eplzigzag_counter);
+	xDelete<IssmDouble>(serial_rec);
+	xDelete<IssmDouble>(old_active);
+	delete mask;
+	delete recurence;
+
+	/*Update Mask*/
+	InputUpdateFromVectorx(this,serial_mask,HydrologydcMaskEplactiveNodeEnum,NodeSIdEnum);
+	xDelete<IssmDouble>(serial_mask);
+	inefanalysis->ElementizeEplMask(this);
+	/*Step 2: update node activity. If one element is connected to mask=1, all nodes are active*/
+	active=new Vector<IssmDouble>(nodes->NumberOfNodes(HydrologyDCEfficientAnalysisEnum));
+	for (int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		effanalysis->HydrologyEPLGetActive(active,element);
+	}
+
+	/*Assemble and serialize*/
+	active->Assemble();
+	serial_active=active->ToMPISerial();
+	delete active;
+
+	/*Update node activation accordingly*/
+	int counter =0;
+	for (int i=0;i<nodes->Size();i++){
+		Node* node=xDynamicCast<Node*>(nodes->GetObjectByOffset(i));
+		if(node->InAnalysis(HydrologyDCEfficientAnalysisEnum)){
+			if(serial_active[node->Sid()]==1.){
+				node->Activate();
+				if(!node->IsClone()) counter++;
+			}
+			else{
+				node->Deactivate();
+			}
+		}
+	}
+	xDelete<IssmDouble>(serial_active);
+	delete effanalysis;
+	delete inefanalysis;
+	int sum_counter;
+	ISSM_MPI_Reduce(&counter,&sum_counter,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&sum_counter,1,ISSM_MPI_INT,0,IssmComm::GetComm());                
+	counter=sum_counter;
+	*pEplcount = counter;
+	if(VerboseSolution()) _printf0_("   Number of active nodes in EPL layer: "<< counter <<"\n");
+
+	/*Update dof indexings*/
+	this->UpdateConstraintsx();
+
+}
+/*}}}*/
+void FemModel::UpdateConstraintsL2ProjectionEPLx(IssmDouble* pL2count){ /*{{{*/
+
+	Vector<IssmDouble>* active        = NULL;
+	IssmDouble*         serial_active = NULL;
+	HydrologyDCEfficientAnalysis* effanalysis = new HydrologyDCEfficientAnalysis();
+
+	/*update node activity. If one element is connected to mask=1, all nodes are active*/
+	active=new Vector<IssmDouble>(nodes->NumberOfNodes(HydrologyDCEfficientAnalysisEnum));
+	for (int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		effanalysis->HydrologyEPLGetActive(active,element);
+	}
+
+	/*Assemble and serialize*/
+	active->Assemble();
+	serial_active=active->ToMPISerial();
+	delete active;
+	delete effanalysis;
+
+	/*Update node activation accordingly*/
+	int counter =0;
+	for (int i=0;i<nodes->Size();i++){
+		Node* node=xDynamicCast<Node*>(nodes->GetObjectByOffset(i));
+		if(node->InAnalysis(L2ProjectionEPLAnalysisEnum)){
+			if(serial_active[node->Sid()]==1.){
+				node->Activate();
+				if(!node->IsClone()) counter++;
+			}
+			else{
+				node->Deactivate();
+			}
+		}
+	}
+	xDelete<IssmDouble>(serial_active);
+	int sum_counter;
+	ISSM_MPI_Reduce(&counter,&sum_counter,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&sum_counter,1,ISSM_MPI_INT,0,IssmComm::GetComm());                
+	counter=sum_counter;
+	*pL2count = counter;
+	if(VerboseSolution()) _printf0_("   Number of active nodes L2 Projection: "<< counter <<"\n");
+}
+/*}}}*/
+#ifdef _HAVE_JAVASCRIPT_ 
+FemModel::FemModel(IssmDouble* buffer, int buffersize, char* toolkits, char* solution, char* modelname,ISSM_MPI_Comm incomm, bool trace){ /*{{{*/
+	/*configuration: */
+	int  solution_type;
+	int  ierr;
+
+	/*First things first, store the communicator, and set it as a global variable: */
+	IssmComm::SetComm(incomm);
+
+	/*Start profiler: */
+	this->profiler=new Profiler();
+	profiler->Tag(START);
+
+	/*From command line arguments, retrieve different filenames needed to create the FemModel: */
+	solution_type=StringToEnumx(solution);
+	
+	/*Create femmodel from input files: */
+	profiler->Tag(STARTINIT);
+	this->InitFromBuffers((char*)buffer,buffersize,toolkits, solution_type,trace,NULL);
+	profiler->Tag(FINISHINIT);
+	
+	/*Save communicator in the parameters dataset: */
+	this->parameters->AddObject(new GenericParam<ISSM_MPI_Comm>(incomm,FemModelCommEnum));
+
+}
+/*}}}*/
+void FemModel::CleanUpJs(char** poutput, size_t* psize){/*{{{*/
+
+	/*Intermediary*/
+	FILE *output_fid;
+	GenericParam<char**>* outputbufferparam=NULL;
+	GenericParam<size_t*>* outputbuffersizeparam=NULL;
+	char** poutputbuffer;
+	size_t* poutputbuffersize;
+
+	
+	/*Before we delete the profiler, report statistics for this run: */
+	profiler->Tag(FINISH);  //final tagging
+	_printf0_("\n");
+	_printf0_("   "<<setw(40)<<left<<"FemModel initialization elapsed time:"<<profiler->DeltaTime(STARTINIT,FINISHINIT) << "\n");
+	_printf0_("   "<<setw(40)<<left<<"Core solution elapsed time:"<<profiler->DeltaTime(STARTCORE,FINISHCORE) << "\n");
+	_printf0_("\n");
+	_printf0_("   Total elapsed time: "
+				<<profiler->DeltaTimeModHour(START,FINISH)<<" hrs "
+				<<profiler->DeltaTimeModMin(START,FINISH)<<" min "
+				<<profiler->DeltaTimeModSec(START,FINISH)<<" sec"
+				);
+	_printf0_("\n");
+	
+	/*Before we close the output file, recover the buffer and size:*/
+	outputbufferparam = xDynamicCast<GenericParam<char**>*>(this->parameters->FindParamObject(OutputBufferPointerEnum));
+	poutputbuffer=outputbufferparam->GetParameterValue();
+	outputbuffersizeparam = xDynamicCast<GenericParam<size_t*>*>(this->parameters->FindParamObject(OutputBufferSizePointerEnum));
+	poutputbuffersize=outputbuffersizeparam->GetParameterValue();
+
+	/*Assign output values: */
+	*poutput=*poutputbuffer;
+	*psize=*poutputbuffersize;
+}
+/*}}}*/
+void FemModel::InitFromBuffers(char* buffer, int buffersize, char* toolkits, int in_solution_type, bool trace, IssmPDouble* X){/*{{{*/
+
+	/*intermediary*/
+	FILE       *IOMODEL = NULL;
+	FILE       *toolkitsoptionsfid = NULL;
+	FILE       *output_fid = NULL;
+	int         my_rank;
+	size_t      outputsize;
+	char       *outputbuffer;
+	const char *rootpath = "";   //needed for Dakota runs only, which we won't do here.
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	/*Open input file descriptor on cpu 0: */
+	if(my_rank==0) IOMODEL = fmemopen((void*)buffer, buffersize, "rb");
+
+	/*Open toolkits file descriptor: */
+	toolkitsoptionsfid=fmemopen((void*)toolkits, strlen(toolkits)+1, "r");
+
+	/*Now, go create FemModel:*/
+	this->InitFromFids((char*)rootpath,IOMODEL,toolkitsoptionsfid,in_solution_type,trace,X);
+
+	/*Close input file and toolkits file descriptors: */
+	if(my_rank==0) fclose(IOMODEL);
+	fclose(toolkitsoptionsfid);
+
+	/*Open output file once for all and add output file descriptor to parameters*/
+	output_fid=open_memstream(&outputbuffer,&outputsize); 
+	if(output_fid==NULL)_error_("could not initialize output stream");
+	this->parameters->SetParam(output_fid,OutputFilePointerEnum);
+	this->parameters->AddObject(new GenericParam<char**>(&outputbuffer,OutputBufferPointerEnum));
+	this->parameters->AddObject(new GenericParam<size_t*>(&outputsize,OutputBufferSizePointerEnum));
+
+}/*}}}*/
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/FemModel.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/FemModel.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/FemModel.h	(revision 21239)
@@ -0,0 +1,137 @@
+/*
+ * FemModel.h: 
+ */
+
+#ifndef _FEMMODEL_H_
+#define _FEMMODEL_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../toolkits/toolkits.h"
+class DataSet;
+class Parameters;
+class NodeSets;
+class Nodes;
+class Vertices;
+class Results;
+class Constraints;
+class Loads;
+class Materials;
+class Profiler;
+class Elements;
+/*}}}*/
+
+class FemModel {
+
+	/*no private members, as we need access to these datasets quite often!:*/
+
+	public:
+
+		int          analysis_counter;     //counter into analysis_type_list
+		int         *analysis_type_list;   //list of analyses this femmodel is going to carry out
+		int          nummodels;
+		int          solution_type;
+
+		Profiler*    profiler;             //keep time, cpu and mem statistics while we are running.
+
+		Constraints *constraints;          //one set of constraints. each constraint knows which analysis_type it handles
+		Elements    *elements;             //elements (one set for all analyses)
+		Loads       *loads;                //one set of constraints. each constraint knows which analysis_type it handles
+		Materials   *materials;            //one set of materials, for each element
+		Nodes       *nodes;                //one set of nodes
+		Parameters  *parameters;           //one set of parameters, independent of the analysis_type
+		Results     *results;              //results that cannot be fit into the elements 
+		Vertices    *vertices;             //one set of vertices
+
+		/*constructors, destructors: */
+		FemModel(int argc,char** argv,ISSM_MPI_Comm comm_init,bool trace=false);
+		FemModel(char* rootpath, char* inputfilename, char* outputfilename, char* toolkitsfilename, char* lockfilename, char* restartfilename, ISSM_MPI_Comm incomm, int solution_type,IssmPDouble* X);
+		~FemModel();
+
+		/*Methods:*/
+		void CheckPoint(void);
+		void CleanUp(void);
+		FemModel* copy();
+		void Echo();
+		void InitFromFiles(char* rootpath, char* inputfilename, char* outputfilename, char* petscfilename, char* lockfilename, char* restartfilename, const int solution_type,bool trace,IssmPDouble* X=NULL);
+		void InitFromFids(char* rootpath, FILE* IOMODEL, FILE* toolkitsoptionsfid, int in_solution_type, bool trace, IssmPDouble* X=NULL);
+		void Marshall(char** pmarshalled_data, int* pmarshalled_data_size, int marshall_direction);
+		void Restart(void);
+		void SetCurrentConfiguration(int configuration_type);
+		void SetCurrentConfiguration(int configuration_type,int analysis_type);
+		void SolutionAnalysesList(int** panalyses,int* pnumanalyses,IoModel* iomodel,int solutiontype);
+		void Solve(void);
+
+		/*Modules*/ 
+		void BalancethicknessMisfitx(IssmDouble* pV);
+		void CalvingRateDevx();
+		void CalvingRateLevermannx();
+		void DeviatoricStressx();
+		void Divergencex(IssmDouble* pdiv);
+		void ElementOperationx(void (Element::*function)(void));
+		void ElementResponsex(IssmDouble* presponse,int response_enum);
+		void FloatingAreax(IssmDouble* pV);
+		void GetInputLocalMinMaxOnNodesx(IssmDouble** pmin,IssmDouble** pmax,IssmDouble* ug);
+		void GroundedAreax(IssmDouble* pV);
+		void IceMassx(IssmDouble* pV);
+		void IceVolumex(IssmDouble* pV);
+		void IceVolumeAboveFloatationx(IssmDouble* pV);
+		void MassFluxx(IssmDouble* presponse);
+		void MaxAbsVxx(IssmDouble* presponse);
+		void MaxAbsVyx(IssmDouble* presponse);
+		void MaxAbsVzx(IssmDouble* presponse);
+		void MaxDivergencex(IssmDouble* pdiv);
+		void MaxVelx(IssmDouble* presponse);
+		void MaxVxx(IssmDouble* presponse);
+		void MaxVyx(IssmDouble* presponse);
+		void MaxVzx(IssmDouble* presponse);
+		void MinVelx(IssmDouble* presponse);
+		void MinVxx(IssmDouble* presponse);
+		void MinVyx(IssmDouble* presponse);
+		void MinVzx(IssmDouble* presponse);
+		void ResetLevelset();
+		void StrainRateparallelx();
+		void StrainRateperpendicularx();
+		void StressIntensityFactorx();
+		void TotalFloatingBmbx(IssmDouble* pFbmb);
+		void TotalGroundedBmbx(IssmDouble* pGbmb);
+		void TotalSmbx(IssmDouble* pSmb);
+		#ifdef  _HAVE_DAKOTA_
+		void DakotaResponsesx(double* d_responses,char** responses_descriptors,int numresponsedescriptors,int d_numresponses);
+		#endif
+		void CostFunctionx(IssmDouble* pJ,IssmDouble** pJlist,int* pn);
+		void OutputControlsx(Results **presults);
+		void RequestedDependentsx(void);
+		void RequestedOutputsx(Results **presults,char** requested_outputs, int numoutputs,bool save_results=true);
+		void RequestedOutputsx(Results **presults,int* requested_outputs, int numoutputs,bool save_results=true);
+		void Responsex(IssmDouble* presponse,int response_descriptor_enum);
+		void Responsex(IssmDouble* presponse,const char* response_descriptor);
+		void SurfaceAbsMisfitx( IssmDouble* pJ);
+		void ThicknessAbsGradientx( IssmDouble* pJ);
+		void ThicknessPositivex(IssmDouble* pJ);
+		#ifdef _HAVE_GIA_
+		void Deflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt, IssmDouble* x, IssmDouble* y);
+		#endif
+		#ifdef _HAVE_SEALEVELRISE_
+		void SealevelriseEustatic(Vector<IssmDouble>* pSgi, IssmDouble* peustatic, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius);
+		void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo, Vector<IssmDouble>* pSg_old, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius,bool verboseconvolution);
+		void SealevelriseGeodetic(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pSg_old, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz); 
+		IssmDouble SealevelriseOceanAverage(Vector<IssmDouble>* Sg);
+		#endif
+		void HydrologyEPLupdateDomainx(IssmDouble* pEplcount);
+		void TimeAdaptx(IssmDouble* pdt);
+		void UpdateConstraintsExtrudeFromBasex();
+		void UpdateConstraintsExtrudeFromTopx();
+		void UpdateConstraintsL2ProjectionEPLx(IssmDouble* pL2count);
+		void UpdateConstraintsx(void);
+		int  UpdateVertexPositionsx(void);
+
+		#ifdef _HAVE_JAVASCRIPT_
+		FemModel(IssmDouble* buffer, int buffersize, char* toolkits, char* solution, char* modelname,ISSM_MPI_Comm incomm, bool trace=false);
+		void CleanUpJs(char** poutput, size_t* psize);
+		void InitFromBuffers(char* buffer, int buffersize, char* toolkits, int solution_type,bool trace,IssmPDouble* X=NULL);
+		#endif
+};
+		
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/GiaDeflectionCoreArgs.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/GiaDeflectionCoreArgs.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/GiaDeflectionCoreArgs.h	(revision 21239)
@@ -0,0 +1,40 @@
+/*!\file:  GiaDeflectionCoreArgs.h
+ * \brief place holder for arguments to the GiaDeflectionCoreArgs routine
+ */ 
+
+#ifndef _GIADEFLECTIONCOREARGS_H_
+#define _GIADEFLECTIONCOREARGS_H_
+
+struct GiaDeflectionCoreArgs{
+
+	/*inputs: */
+	IssmDouble currenttime; 
+	IssmDouble* hes; //loading history (in ice thickness)
+	int numtimes; //loading history length
+	IssmDouble ri; //radial distance from center of disk to vertex  i
+	IssmDouble re; //radius of disk
+	IssmDouble* times; //loading history times
+
+	/*gia material parameters: */
+	IssmDouble lithosphere_density;
+	IssmDouble lithosphere_shear_modulus;
+	IssmDouble lithosphere_thickness;
+	IssmDouble mantle_density;
+	IssmDouble mantle_shear_modulus;
+	IssmDouble mantle_viscosity;
+
+	/*gia solution parameters: */
+	int iedge;
+
+	/*ice properties: */
+	IssmDouble rho_ice;
+
+	/*constants: */
+	IssmDouble yts;
+
+	/*debug info: */
+	int        idisk; //id of the element we are running the gia code in.
+
+};
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Hook.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Hook.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Hook.cpp	(revision 21239)
@@ -0,0 +1,255 @@
+/*!\file Hook.cpp
+ * \brief: implementation of the Hook object: see Hook.h for more explanations.
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include "./classes.h"
+#include "../shared/Enum/Enum.h"
+#include "../shared/shared.h"
+
+/*Constructor/Destructors*/
+Hook::Hook(){/*{{{*/
+	this->num     = 0;
+	this->objects = NULL;
+	this->ids     = NULL;
+	this->offsets = NULL;
+}
+/*}}}*/
+Hook::Hook(int* in_ids, int in_num){/*{{{*/
+
+	/*Get number of objects to hook*/
+	this->num=in_num;
+
+	/*Get out if num=0*/
+	if (this->num<=0){
+		/*Empty hook*/
+		this->ids     = NULL;
+		this->objects = NULL;
+		this->offsets = NULL;
+		this->num = 0;
+	}
+	else{
+		/*Allocate: */
+		this->objects=xNew<Object*>(in_num);
+		this->ids=xNew<int>(in_num);
+		this->offsets=xNew<int>(in_num);
+
+		/*Copy ids: */
+		for(int i=0;i<this->num;i++){
+			this->ids[i]     = in_ids[i];
+			this->objects[i] = NULL;
+			this->offsets[i] = 0;
+		}
+	}
+}
+/*}}}*/
+Hook::~Hook(){/*{{{*/
+	xDelete<Object*>(this->objects);
+	xDelete<int>(this->ids);
+	xDelete<int>(this->offsets);
+}
+/*}}}*/
+
+/*Some of the Object functionality: */
+Object* Hook::copy(void){/*{{{*/
+
+	/*output: */
+	Hook* output=NULL;
+
+	/*initalize output: */
+	output=new Hook(this->ids,this->num);
+
+	for(int i=0;i<output->num;i++){
+		output->objects[i] = this->objects[i];
+		output->offsets[i] = this->offsets[i];
+	}
+
+	return (Object*)output;
+}
+/*}}}*/
+void Hook::DeepEcho(void){/*{{{*/
+
+	int i;
+	if (num){
+		_printf_("   Hook: \n");
+		_printf_("      num=" << this->num << "\n");
+		_printf_("      ids: ");
+		for (i=0;i<this->num;i++) _printf_(this->ids[i] << " ");
+		_printf_("\n");
+		_printf_("      offsets: ");
+		for (i=0;i<this->num;i++) _printf_(this->offsets[i] << " ");
+		_printf_("\n");
+		if (!objects) _printf_("      warning: object not hooked yet\n");
+		else{
+			_printf_("      objects:\n   ");
+			for (i=0;i<this->num;i++){
+				_printf_("         object " << i << "\n");
+				if(objects[i]) objects[i]->DeepEcho();
+				else           _printf_("            no object hooked yet (not configured)\n");
+			}
+		}
+	}
+	else{
+		_printf_("   Hook: num=0 \n");
+	}
+}
+/*}}}*/
+void Hook::Echo(void){/*{{{*/
+	_assert_(this);
+	int i;
+	if (num){
+		_printf_("   Hook: \n");
+		_printf_("      num=" << this->num << "\n");
+		_printf_("      ids: ");
+		for(i=0;i<this->num;i++) _printf_(this->ids[i] << " ");
+		_printf_("\n");
+		_printf_("      offsets: ");
+		for (i=0;i<this->num;i++) _printf_(this->offsets[i] << " ");
+		_printf_("\n");
+	}
+	else{
+		_printf_("   Hook: num=0 \n");
+	}
+}
+/*}}}*/
+void Hook::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	if(marshall_direction==MARSHALLING_BACKWARD) reset();
+
+	MARSHALLING_ENUM(HookEnum);
+	MARSHALLING(num);
+	if (num<=0){
+		/*Empty hook*/
+		this->ids     = NULL;
+		this->objects = NULL;
+		this->offsets = NULL;
+		this->num = 0;
+	}
+	else{
+		MARSHALLING_DYNAMIC(ids,int,num);
+		MARSHALLING_DYNAMIC(offsets,int,num);
+		MARSHALLING_DYNAMIC(objects,Object*,num);
+	}
+
+}
+/*}}}*/
+
+/*Hook management: */
+void Hook::configure(DataSet* dataset){/*{{{*/
+
+	/*intermediary: */
+	Object* object=NULL;
+	int i;
+
+	/*Checks if debugging mode*/
+	_assert_(this->num==0 || this->ids!=NULL);
+
+	for(i=0;i<this->num;i++){
+
+		/*is this object id -1? If so, drop this search, it was not requested: */
+		if (this->ids[i]==-1) continue;
+
+		/*Check whether existing this->objects are correct: */
+		if(this->objects[i]){
+			if(this->objects[i]->Id()==this->ids[i]) continue; //this node is good.
+			else this->objects[i]=NULL; //this node was incorrect, reset it.
+		}
+
+		/*May be the object this->offsets into this->objects are valid?: */
+		if(this->offsets[i]!=UNDEF){
+			/* Look at the this->offsets[i]'th node in the nodes dataset. If it has the correct id, 
+			 * we are good: */
+			object=(Object*)dataset->GetObjectByOffset(this->offsets[i]);
+			if (object->Id()==this->ids[i]){
+				this->objects[i]=object;
+				continue;
+			}
+			else this->offsets[i]=UNDEF; //object offset was wrong, reset it.
+		}
+		else this->offsets[i]=UNDEF;
+
+		/*Now, for this->objects that did not get resolved, and for which we have no offset, chase them in the dataset, by id: */
+		if(this->objects[i]==NULL){
+			this->objects[i]=xDynamicCast<Object*>(dataset->GetObjectById(this->offsets+i,this->ids[i])); //remember the offset for later on.
+			/*check the id is correct!: */
+			if (this->objects[i]->Id()!=this->ids[i]) _error_("wrong id: " << this->objects[i]->Id() << " vs " << this->ids[i] << "  in resolved pointer!");
+		}
+	}
+}
+/*}}}*/
+Object** Hook::deliverp(void){/*{{{*/
+	return objects;
+}
+/*}}}*/
+Object* Hook::delivers(void){/*{{{*/
+
+	/*first, check that we only have one T object in our object list: */
+	if (this->num!=1) _error_("trying to deliver a single hook object when hook holds " << this->num << " objects" << "\n");
+
+	/*check NULL: */
+	if (this->objects==NULL) _error_("hook is not pointing to any object, objects pointer is NULL");
+
+	return *objects;
+}
+
+/*}}}*/
+int Hook::GetNum(void){/*{{{*/
+	return this->num;
+}
+/*}}}*/
+int* Hook::Ids(void){/*{{{*/
+	return this->ids;
+}
+/*}}}*/
+void Hook::reset(){/*{{{*/
+
+	/*intermediary: */
+	Object* object=NULL;
+	int i;
+
+	for(i=0;i<this->num;i++){
+			this->objects[i]=NULL; //reset this node.
+	}
+}
+/*}}}*/
+Hook* Hook::Spawn(int* indices, int numindices){/*{{{*/
+
+	/*output: */
+	Hook* output=NULL;
+
+	/*allocate: */
+	output=new Hook();
+
+	/*If this Hook is empty, simply return*/
+	if(this->num==0){
+		output->num=0;
+		return output;
+	}
+
+	/*Else, check that we are requesting a half of num*/
+	if(numindices>this->num) _error_("Cannot spawn hook with " << numindices << " objects from a Hook of " << this->num << " objects");
+
+	/*go pickup the correct objects, ids and offsets :*/
+	output->num=numindices;
+	if(output->num<1) _error_("Trying to spawn an empty ElementProperties!");
+
+	output->objects = xNew<Object*>(output->num);
+	output->ids     = xNew<int>(output->num);
+	output->offsets = xNew<int>(output->num);
+
+	for(int i=0;i<output->num;i++){
+		output->objects[i] = this->objects[indices[i]];
+		output->ids[i]     = this->ids[indices[i]];
+		output->offsets[i] = this->offsets[indices[i]];
+	}
+
+	return output;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Hook.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Hook.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Hook.h	(revision 21239)
@@ -0,0 +1,49 @@
+/*!\file Hook.h
+ * \brief: header file for hook object.
+ * A hook is a class  that can store the id, offset, and object corresponding to this id and offset into a dataset.
+ * For example, an element has a hook to its nodes. A node has a hook to its vertex.  The hook abstracts the need for having
+ * ids and offsets (necesarry for proper configuration of an object) in our objects. 
+ */
+
+#ifndef _HOOK_H_
+#define _HOOK_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../datastructures/datastructures.h"
+/*}}}*/
+
+class Hook{
+
+	private: 
+
+		int     *ids;       //list of object ids, to go look for them in datasets.
+		int      num;       //number of objects being hooked onto
+		Object **objects;   //list of object pointers
+		int     *offsets;   //list of object offsets into datasets, to speed up lookup.
+
+	public:
+
+		/*Hook constructors, destructors: {{{*/
+		Hook();
+		Hook(int* ids, int num);
+		~Hook();
+		/*}}}*/
+		/*Object like functionality:{{{*/
+		Object*    copy(void);
+		void       DeepEcho(void);
+		void       Echo(void);
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		/*}}}*/
+		/*Hook management: {{{*/
+		void       configure(DataSet* dataset);
+		Object**   deliverp(void); //deliver all objects
+		Object*    delivers(void); //single object deliver
+		int        GetNum(void);
+		int*       Ids(void);
+		void       reset(void);
+		Hook*      Spawn(int* indices, int numindices);
+		/*}}}*/
+};
+
+#endif  /* _HOOK_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/BoolInput.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/BoolInput.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/BoolInput.cpp	(revision 21239)
@@ -0,0 +1,159 @@
+/*!\file BoolInput.c
+ * \brief: implementation of the BoolInput object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+
+/*BoolInput constructors and destructor*/
+BoolInput::BoolInput(){/*{{{*/
+	return;
+}
+/*}}}*/
+BoolInput::BoolInput(int in_enum_type,bool in_value){/*{{{*/
+
+	enum_type=in_enum_type;
+	value=in_value;
+}
+/*}}}*/
+BoolInput::~BoolInput(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* BoolInput::copy() {/*{{{*/
+
+	return new BoolInput(this->enum_type,this->value);
+
+}
+/*}}}*/
+void BoolInput::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(15)<<"   BoolInput "<<setw(25)<<left<<EnumToStringx(this->enum_type)<<" "<<(value?"true":"false") << "\n");
+}
+/*}}}*/
+void BoolInput::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  BoolInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void BoolInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(BoolInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(value);
+
+}
+/*}}}*/
+int  BoolInput::ObjectEnum(void){/*{{{*/
+
+	return BoolInputEnum;
+
+}
+/*}}}*/
+
+/*BoolInput management*/
+int BoolInput::InstanceEnum(void){/*{{{*/
+
+	return this->enum_type;
+
+}
+/*}}}*/
+Input* BoolInput::SpawnSegInput(int index1,int index2){/*{{{*/
+
+		/*output*/
+		BoolInput* outinput=new BoolInput();
+
+		/*only copy current value*/
+		outinput->enum_type=this->enum_type;
+		outinput->value=this->value;
+
+		/*Assign output*/
+		return outinput;
+
+}
+/*}}}*/
+Input* BoolInput::SpawnTriaInput(int index1,int index2,int index3){/*{{{*/
+
+		/*output*/
+		BoolInput* outinput=new BoolInput();
+
+		/*only copy current value*/
+		outinput->enum_type=this->enum_type;
+		outinput->value=this->value;
+
+		/*Assign output*/
+		return outinput;
+
+}
+/*}}}*/
+
+/*Object functions*/
+void BoolInput::AXPY(Input* xinput,IssmDouble scalar){/*{{{*/
+
+	BoolInput*  xboolinput=NULL;
+
+	/*xinput is of the same type, so cast it: */
+	xboolinput=(BoolInput*)xinput;
+
+	/*Carry out the AXPY operation depending on type:*/
+	switch(xinput->ObjectEnum()){
+
+		case BoolInputEnum:
+			this->value=reCast<bool,IssmDouble>(this->value+scalar*xboolinput->value);
+			return;
+
+		default:
+			_error_("not implemented yet");
+	}
+
+}
+/*}}}*/
+void BoolInput::ChangeEnum(int newenumtype){/*{{{*/
+	this->enum_type=newenumtype;
+}
+/*}}}*/
+void BoolInput::Configure(Parameters* parameters){/*{{{*/
+	/*do nothing: */
+}
+/*}}}*/
+void BoolInput::Extrude(int start){/*{{{*/
+
+	/*do nothing*/
+	return;
+}
+/*}}}*/
+void BoolInput::GetInputValue(bool* pvalue){/*{{{*/
+	*pvalue=value;
+}
+/*}}}*/
+void BoolInput::GetInputValue(int* pvalue){_error_("not supported yet!");}/*{{{*/
+/*}}}*/
+void BoolInput::GetInputValue(IssmDouble* pvalue){_error_("not supported yet!");}/*{{{*/
+/*}}}*/
+void BoolInput::GetInputValue(IssmDouble* pvalue,Gauss* gauss){_error_("not supported yet!");}/*{{{*/
+/*}}}*/
+void BoolInput::GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist){/*{{{*/
+
+	_error_("not supporte yet!");
+
+}
+/*}}}*/
+void BoolInput::Scale(IssmDouble scale_factor){/*{{{*/
+	/*a bool cannot be scaled: */
+}
+/*}}}*/
+void BoolInput::SquareMin(IssmDouble* psquaremin,Parameters* parameters){/*{{{*/
+	/*square of a bool is the bool itself: */
+	*psquaremin=value;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/BoolInput.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/BoolInput.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/BoolInput.h	(revision 21239)
@@ -0,0 +1,75 @@
+/*! \file BoolInput.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _BOOLINPUT_H_
+#define _BOOLINPUT_H_
+
+/*Headers:*/
+#include "./Input.h"
+
+class BoolInput: public Input{
+
+	public:
+		/*just hold 3 values for 3 vertices: */
+		int  enum_type;
+		bool value;
+
+		/*BoolInput constructors, destructors: {{{*/
+		BoolInput();
+		BoolInput(int enum_type,bool value);
+		~BoolInput();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int     ObjectEnum();
+		/*}}}*/
+		/*BoolInput management: {{{*/
+		void AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");};
+		void Configure(Parameters* parameters);
+		int  GetResultArraySize(void){return 1;};
+		int  GetResultInterpolation(void){return P0Enum;};
+		int  GetResultNumberOfNodes(void){return 1;};
+		int   InstanceEnum();
+		Input* PointwiseDivide(Input* inputB){_error_("not implemented yet");};
+		Input* PointwiseMin(Input* inputB){_error_("not implemented yet");};
+		Input* PointwiseMax(Input* inputB){_error_("not implemented yet");};
+		Input* SpawnSegInput(int index1,int index2);
+		Input* SpawnTriaInput(int index1,int index2,int index3);
+		void ResultToPatch(IssmDouble* values,int nodesperelement,int sid){_error_("not supported yet");};
+		/*}}}*/
+		/*numerics: {{{*/
+		void AXPY(Input* xinput,IssmDouble scalar);
+		void ChangeEnum(int newenumtype);
+		void Constrain(IssmDouble cm_min, IssmDouble cm_max){_error_("Constrain not implemented for booleans");};
+		void ConstrainMin(IssmDouble minimum){_error_("not implemented yet");};
+		void Extrude(int start);
+		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
+		void GetInputAverage(IssmDouble* pvalue){_error_("not implemented yet");};
+		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, Gauss* gauss){_error_("not implemented yet");};
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
+		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
+		void GetInputValue(bool* pvalue);
+		void GetInputValue(int* pvalue);
+		void GetInputValue(IssmDouble* pvalue);
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss);
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss,IssmDouble time){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss ,int index){_error_("not implemented yet");};
+		void GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist);
+		IssmDouble InfinityNorm(void){_error_("InfinityNorm not implemented for booleans");};
+		IssmDouble Max(void){_error_("Max not implemented for booleans");};
+		IssmDouble MaxAbs(void){_error_("Max not implemented for booleans");};
+		IssmDouble Min(void){_error_("Min not implemented for booleans");};
+		IssmDouble MinAbs(void){_error_("Min not implemented for booleans");};
+		void Scale(IssmDouble scale_factor);
+		void Set(IssmDouble setvalue){_error_("Set not implemented yet");};
+		void SquareMin(IssmDouble* psquaremin, Parameters* parameters);
+		void VerticallyIntegrate(Input* thickness_input){_error_("not supported yet");};
+		/*}}}*/
+
+};
+#endif  /* _BOOLINPUT_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/ControlInput.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/ControlInput.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/ControlInput.cpp	(revision 21239)
@@ -0,0 +1,286 @@
+/*!\file ControlInput.c
+ * \brief: implementation of the ControlInput object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+
+/*ControlInput constructors and destructor*/
+ControlInput::ControlInput(){/*{{{*/
+	control_id  = 0;
+	values      = NULL;
+	savedvalues = NULL;
+	minvalues   = NULL;
+	maxvalues   = NULL;
+	gradient    = NULL;
+}
+/*}}}*/
+ControlInput::ControlInput(int in_enum_type,int enum_input,IssmDouble* pvalues,IssmDouble* pmin,IssmDouble* pmax,int id){/*{{{*/
+
+	control_id=id;
+	enum_type=in_enum_type;
+
+	switch(enum_input){
+		case TriaInputEnum:
+			values     =new TriaInput(enum_type,pvalues,P1Enum);
+			savedvalues=new TriaInput(enum_type,pvalues,P1Enum);
+			minvalues  =new TriaInput(enum_type,pmin,P1Enum);
+			maxvalues  =new TriaInput(enum_type,pmax,P1Enum);
+			break;
+		case PentaInputEnum:
+			values     =new PentaInput(enum_type,pvalues,P1Enum);
+			savedvalues=new PentaInput(enum_type,pvalues,P1Enum);
+			minvalues  =new PentaInput(enum_type,pmin,P1Enum);
+			maxvalues  =new PentaInput(enum_type,pmax,P1Enum);
+			break;
+		default:
+			_error_("Input of Enum " << EnumToStringx(enum_input) << " not supported yet by ControlInput");
+	}
+	gradient   =NULL;
+}
+/*}}}*/
+ControlInput::~ControlInput(){/*{{{*/
+	delete values;
+	delete savedvalues;
+	delete minvalues;
+	delete maxvalues;
+	delete gradient;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* ControlInput::copy() {/*{{{*/
+
+	ControlInput* output=NULL;
+
+	output = new ControlInput();
+	output->enum_type=this->enum_type;
+	output->control_id=this->control_id;
+
+	if(values)      output->values      = xDynamicCast<Input*>(this->values->copy());
+	if(savedvalues) output->savedvalues = xDynamicCast<Input*>(this->savedvalues->copy());
+	if(minvalues)   output->minvalues   = xDynamicCast<Input*>(this->minvalues->copy());
+	if(maxvalues)   output->maxvalues   = xDynamicCast<Input*>(this->maxvalues->copy());
+	if(gradient)    output->gradient    = xDynamicCast<Input*>(this->gradient->copy());
+
+	return output;
+}
+/*}}}*/
+void ControlInput::DeepEcho(void){/*{{{*/
+
+	_printf_("ControlInput:\n");
+	_printf_(setw(15)<<"   ControlInput "<<setw(25)<<left<<EnumToStringx(this->enum_type)<<"\n");
+	_printf_("---values: \n");     if (values)      values->Echo();
+	_printf_("---savedvalues: \n");if (savedvalues) savedvalues->Echo();
+	_printf_("---minvalues: \n");  if (minvalues)   minvalues->Echo();
+	_printf_("---maxvalues: \n");  if (maxvalues)   maxvalues->Echo();
+	_printf_("---gradient: \n");   if (gradient)    gradient->Echo();
+}
+/*}}}*/
+void ControlInput::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  ControlInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void ControlInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(ControlInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(control_id);
+
+	if (marshall_direction == MARSHALLING_BACKWARD){
+		switch(enum_type){
+			case TriaInputEnum:
+				values     =new TriaInput();
+				savedvalues=new TriaInput();
+				minvalues  =new TriaInput();
+				maxvalues  =new TriaInput();
+				gradient   =new TriaInput();
+				break;
+			case PentaInputEnum:
+				values     =new PentaInput();
+				savedvalues=new PentaInput();
+				minvalues  =new PentaInput();
+				maxvalues  =new PentaInput();
+				gradient   =new PentaInput();
+				break;
+			default:
+				_error_("Input of Enum " << EnumToStringx(enum_type) << " not supported yet by ControlInput");
+		}
+	}
+	if(values) this->values->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	if(savedvalues) this->savedvalues->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	if(minvalues) this->minvalues->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	if(maxvalues) this->maxvalues->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	if(gradient) this->gradient->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+}
+/*}}}*/
+int  ControlInput::ObjectEnum(void){/*{{{*/
+
+	return ControlInputEnum;
+
+}
+/*}}}*/
+
+/*ControlInput management*/
+int ControlInput::InstanceEnum(void){/*{{{*/
+
+	return this->enum_type;
+
+}
+/*}}}*/
+
+/*Object functions*/
+void ControlInput::AXPY(Input* xinput,IssmDouble scalar){/*{{{*/
+	values->AXPY(xinput,scalar);
+}/*}}}*/
+void ControlInput::Configure(Parameters* parameters){/*{{{*/
+	/*do nothing: */
+}
+/*}}}*/
+void ControlInput::Constrain(void){/*{{{*/
+
+	Input* newvalues=NULL;
+
+	newvalues=this->values->PointwiseMin(maxvalues);
+	delete values; this->values=newvalues;
+	newvalues=this->values->PointwiseMax(minvalues);
+	delete values; this->values=newvalues;
+}/*}}}*/
+void ControlInput::Constrain(IssmDouble min, IssmDouble max){/*{{{*/
+	   values->Constrain(min,max);
+}/*}}}*/
+void ControlInput::Extrude(int start){/*{{{*/
+	values->Extrude(start);
+	savedvalues->Extrude(start);
+	//gradient->Extrude();
+}/*}}}*/
+void ControlInput::GetGradient(Vector<IssmDouble>* gradient_vec,int* doflist){/*{{{*/
+	if(gradient) gradient->GetVectorFromInputs(gradient_vec,doflist);
+}/*}}}*/
+void ControlInput::GetGradientValue(IssmDouble* pvalue,Gauss* gauss){/*{{{*/
+	gradient->GetInputValue(pvalue,gauss);
+}/*}}}*/
+void ControlInput::GetInputAverage(IssmDouble* pvalue){/*{{{*/
+	values->GetInputAverage(pvalue);
+}/*}}}*/
+void ControlInput::GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, Gauss* gauss){/*{{{*/
+	values->GetInputDerivativeValue(derivativevalues,xyz_list,gauss);
+}/*}}}*/
+void ControlInput::GetInputValue(bool* pvalue){/*{{{*/
+	values->GetInputValue(pvalue);
+}/*}}}*/
+void ControlInput::GetInputValue(int* pvalue){/*{{{*/
+	values->GetInputValue(pvalue);
+}/*}}}*/
+void ControlInput::GetInputValue(IssmDouble* pvalue){/*{{{*/
+	values->GetInputValue(pvalue);
+}/*}}}*/
+void ControlInput::GetInputValue(IssmDouble* pvalue,Gauss* gauss){/*{{{*/
+	values->GetInputValue(pvalue,gauss);
+}/*}}}*/
+int  ControlInput::GetResultInterpolation(void){/*{{{*/
+
+	return values->GetResultInterpolation();
+
+}
+/*}}}*/
+int  ControlInput::GetResultNumberOfNodes(void){/*{{{*/
+
+	return values->GetResultNumberOfNodes();
+
+}
+/*}}}*/
+void ControlInput::GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist){/*{{{*/
+	values->GetVectorFromInputs(vector,doflist);
+}/*}}}*/
+void ControlInput::GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist,const char* data){/*{{{*/
+	 if(strcmp(data,"value")==0){
+		 _assert_(values);
+		 values->GetVectorFromInputs(vector,doflist);
+	 }
+	 else if (strcmp(data,"lowerbound")==0){
+		 _assert_(minvalues);
+		 minvalues->GetVectorFromInputs(vector,doflist);
+	 }
+	 else if (strcmp(data,"upperbound")==0){
+		 _assert_(maxvalues);
+		 maxvalues->GetVectorFromInputs(vector,doflist);
+	 }
+	 else if (strcmp(data,"gradient")==0){
+		 _assert_(gradient);
+		 gradient->GetVectorFromInputs(vector,doflist);
+	 }
+	 else{
+		 _error_("Data " << data << " not supported yet");
+	 }
+}/*}}}*/
+IssmDouble ControlInput::Min(void){/*{{{*/
+
+	return values->Min();
+
+}
+/*}}}*/
+void ControlInput::SaveValue(void){/*{{{*/
+	if(!values) _error_("Values of " << EnumToStringx(this->enum_type) << " not found");
+
+	if(savedvalues) delete this->savedvalues;
+	this->savedvalues=xDynamicCast<Input*>(this->values->copy());
+}/*}}}*/
+void ControlInput::ScaleGradient(IssmDouble scaling_factor){/*{{{*/
+	if(!gradient) _error_("Gradient of ControlInput " << EnumToStringx(enum_type) << " not found");
+	gradient->Scale(scaling_factor);
+}/*}}}*/
+void ControlInput::SetGradient(Input* gradient_in){/*{{{*/
+
+	/*Get enum for current gradient*/
+	switch(this->control_id){
+		case 1:
+			gradient_in->ChangeEnum(Gradient1Enum);
+			break;
+		case 2:
+			gradient_in->ChangeEnum(Gradient2Enum);
+			break;
+		case 3:
+			gradient_in->ChangeEnum(Gradient3Enum);
+			break;
+		default:
+			_error_("more than 3 controls not implemented yet (Gradient " << this->control_id << " was requested). EnumDefinitions.h needs to be updated.");
+	}
+
+	/*Delete old gradient and assign new gradient*/
+	if(gradient) delete gradient;
+	gradient=gradient_in;
+
+}/*}}}*/
+void ControlInput::SetInput(Input* in_input){/*{{{*/
+
+	delete values; this->values=in_input;
+	this->SaveValue(); //because this is what SpawnResult saves FIXME
+
+}/*}}}*/
+Input* ControlInput::SpawnSegInput(int index1,int index2){/*{{{*/
+	return values->SpawnSegInput(index1,index2);
+}/*}}}*/
+Input* ControlInput::SpawnTriaInput(int index1,int index2,int index3){/*{{{*/
+	return values->SpawnTriaInput(index1,index2,index3);
+}/*}}}*/
+void ControlInput::UpdateValue(IssmDouble scalar){/*{{{*/
+	if(!gradient)    _error_("Gradient of " << EnumToStringx(this->enum_type) << " not found");
+	if(!savedvalues) _error_("Values of " << EnumToStringx(this->enum_type) << " not found");
+
+	if(values) delete this->values;
+	this->values=xDynamicCast<Input*>(this->savedvalues->copy());
+	this->values->AXPY(gradient,scalar);
+}/*}}}*/
+void ControlInput::VerticallyIntegrate(Input* thickness_input){/*{{{*/
+	values->VerticallyIntegrate(thickness_input);
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/ControlInput.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/ControlInput.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/ControlInput.h	(revision 21239)
@@ -0,0 +1,92 @@
+/*! \file ControlInput.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _CONTROLINPUT_H_
+#define _CONTROLINPUT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Input.h"
+class Gauss;
+class Gauss;
+/*}}}*/
+
+class ControlInput: public Input{
+
+	public:
+		int    control_id;
+		int    enum_type;
+		Input* gradient;
+		Input* maxvalues;
+		Input* minvalues;
+		Input* savedvalues;
+		Input* values;
+
+		/*ControlInput constructors, destructors: {{{*/
+		ControlInput();
+		ControlInput(int enum_type,int enum_input,IssmDouble* pvalues,IssmDouble* pmin,IssmDouble* pmax,int id);
+		~ControlInput();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*ControlInput management: {{{*/
+		void AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");};
+		void Configure(Parameters* parameters);
+		Input* PointwiseDivide(Input* inputB){_error_("not implemented yet");};
+		Input* PointwiseMax(Input* inputB){_error_("not implemented yet");};
+		Input* PointwiseMin(Input* inputB){_error_("not implemented yet");};
+		int    InstanceEnum();
+		Input* SpawnSegInput(int index1,int index2);
+		Input* SpawnTriaInput(int index1,int index2,int index3);
+		/*}}}*/
+		/*numerics: {{{*/
+		void AXPY(Input* xinput,IssmDouble scalar);
+		void Constrain(void);
+		void Constrain(IssmDouble min,IssmDouble max);
+		void ConstrainMin(IssmDouble minimum){_error_("not implemented yet");};
+		void ChangeEnum(int newenumtype){_error_("not implemented yet");};
+		void Extrude(int start);
+		void GetGradient(Vector<IssmDouble>* gradient_vec,int* doflist);
+		void GetGradientValue(IssmDouble* pvalue,Gauss* gauss);
+		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
+		void GetInputAverage(IssmDouble* pvalue);
+		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss);
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
+		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
+		void GetInputValue(bool* pvalue);
+		void GetInputValue(int* pvalue);
+		void GetInputValue(IssmDouble* pvalue);
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss);
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss,IssmDouble time){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss ,int index){_error_("not implemented yet");};
+		int  GetResultArraySize(void){return 1;};
+		int  GetResultInterpolation(void);
+		int  GetResultNumberOfNodes(void);
+		void GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist,const char* data);
+		void GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist);
+		IssmDouble InfinityNorm(void){_error_("not implemented yet");};
+		IssmDouble Max(void){_error_("not implemented yet");};
+		IssmDouble MaxAbs(void){_error_("not implemented yet");};
+		IssmDouble Min(void);
+		IssmDouble MinAbs(void){_error_("not implemented yet");};
+		void ResultToPatch(IssmDouble* values,int nodesperelement,int sid){_error_("not supported yet");};
+		void SaveValue(void);
+		void Scale(IssmDouble scale_factor){_error_("not implemented yet");};
+		void ScaleGradient(IssmDouble scale);
+		void Set(IssmDouble setvalue){_error_("Set not implemented yet");};
+		void SetGradient(Input* gradient_in);
+		void SetInput(Input* in_input);
+		void SquareMin(IssmDouble* psquaremin,Parameters* parameters){_error_("not implemented yet");};
+		void UpdateValue(IssmDouble scalar);
+		void VerticallyIntegrate(Input* thickness_input);
+		/*}}}*/
+
+};
+#endif  /* _CONTROLINPUT_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/DatasetInput.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/DatasetInput.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/DatasetInput.cpp	(revision 21239)
@@ -0,0 +1,174 @@
+/*!\file DatasetInput.c
+ * \brief: implementation of the datasetinput object
+ */
+/*Headers{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*DatasetInput constructors and destructor*/
+DatasetInput::DatasetInput(){/*{{{*/
+	enum_type = UNDEF;
+	inputs    = NULL;
+	numids    = 0;
+	ids       = NULL;
+}
+/*}}}*/
+DatasetInput::DatasetInput(int in_enum_type){/*{{{*/
+
+	enum_type = in_enum_type;
+	numids    = 0;
+	inputs    = new Inputs();
+	ids       = NULL;
+}
+/*}}}*/
+DatasetInput::~DatasetInput(){/*{{{*/
+	xDelete<int>(this->ids);
+	delete inputs;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* DatasetInput::copy() {/*{{{*/
+
+	DatasetInput* output=NULL;
+
+	output = new DatasetInput();
+	output->enum_type=this->enum_type;
+	output->numids=this->numids;
+	output->ids=xNew<int>(output->numids);
+	xMemCpy(output->ids,this->ids,output->numids);
+	output->inputs=static_cast<Inputs*>(this->inputs->Copy());
+
+	return (Object*)output;
+}
+/*}}}*/
+void DatasetInput::DeepEcho(void){/*{{{*/
+
+	_printf_("DatasetInput:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   numids:"<< this->numids<< "\n");
+	_printf_("      ids: ");
+	for(int i=0;i<this->numids;i++) _printf_(this->ids[i]<<" ");
+	_printf_("\n");
+	_printf_("   inputs: \n"); inputs->Echo();
+}
+/*}}}*/
+void DatasetInput::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int    DatasetInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void DatasetInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(DatasetInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(numids);
+	MARSHALLING_DYNAMIC(ids,int,numids)
+	if (marshall_direction == MARSHALLING_BACKWARD) inputs = new Inputs();
+	inputs->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+}
+/*}}}*/
+int DatasetInput::ObjectEnum(void){/*{{{*/
+
+	return DatasetInputEnum;
+
+}
+/*}}}*/
+Input* DatasetInput::SpawnSegInput(int index1,int index2){/*{{{*/
+
+	/*output*/
+	DatasetInput* outinput=NULL;
+
+	/*Create new Datasetinput (copy of current input)*/
+	outinput=new DatasetInput();
+	outinput->enum_type=this->enum_type;
+	outinput->inputs=xDynamicCast<Inputs*>(this->inputs->SpawnSegInputs(index1,index2));
+	outinput->numids=this->numids;
+	outinput->ids=xNew<int>(this->numids);
+	xMemCpy(outinput->ids,this->ids,this->numids);
+
+	/*Assign output*/
+	return outinput;
+}
+/*}}}*/
+Input* DatasetInput::SpawnTriaInput(int index1,int index2,int index3){/*{{{*/
+
+	/*output*/
+	DatasetInput* outinput=NULL;
+
+	/*Create new Datasetinput (copy of current input)*/
+	outinput=new DatasetInput();
+	outinput->enum_type=this->enum_type;
+	outinput->inputs=xDynamicCast<Inputs*>(this->inputs->SpawnTriaInputs(index1,index2,index3));
+	outinput->numids=this->numids;
+	outinput->ids=xNew<int>(this->numids);
+	xMemCpy(outinput->ids,this->ids,this->numids);
+
+	/*Assign output*/
+	return outinput;
+}
+/*}}}*/
+
+/*DatasetInput management*/
+void DatasetInput::AddInput(Input* input,int id){/*{{{*/
+
+	_assert_(this->numids == this->inputs->Size());
+
+	int *old_ids = NULL;
+
+	if(this->numids>0){
+		old_ids=xNew<int>(this->numids);
+		xMemCpy(old_ids,this->ids,this->numids);
+		xDelete<int>(this->ids);
+	}
+
+	this->numids=this->numids+1;
+	this->ids=xNew<int>(this->numids);
+
+	if(this->numids>1){
+		xMemCpy(this->ids,old_ids,this->numids-1);
+		xDelete<int>(old_ids);
+	}
+
+	/*go ahead and plug: */
+	this->ids[this->numids-1]=id;
+	inputs->AddObject(input);
+
+	_assert_(this->numids == this->inputs->Size());
+}
+/*}}}*/
+int DatasetInput::InstanceEnum(void){/*{{{*/
+
+	return this->enum_type;
+
+}
+/*}}}*/
+
+/*Object functions*/
+void DatasetInput::Configure(Parameters* parameters){/*{{{*/
+	/*do nothing: */
+}
+/*}}}*/
+void DatasetInput::GetInputValue(IssmDouble* pvalue,Gauss* gauss,int id){/*{{{*/
+
+	int  offset = -1;
+	_assert_(this->numids == this->inputs->Size());
+
+	/*Get requested input within dataset*/
+	for(int i=0;i<this->numids;i++) if(this->ids[i]==id) offset=i;
+	if(offset<0) _error_("Could not find input of id "<<id );
+
+	Input* input=xDynamicCast<Input*>(this->inputs->GetObjectByOffset(offset));
+	input->GetInputValue(pvalue,gauss);
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/DatasetInput.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/DatasetInput.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/DatasetInput.h	(revision 21239)
@@ -0,0 +1,87 @@
+/*! \file DatasetInput.h 
+ *  \brief: header file for datasetinput object
+ */
+
+#ifndef _DATASETINPUT_H_
+#define _DATASETINPUT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Input.h"
+class Gauss;
+class Gauss;
+/*}}}*/
+
+class DatasetInput: public Input{
+
+	public:
+		int     enum_type;
+		int     numids;
+		Inputs *inputs;
+		int    *ids;
+
+		/*DatasetInput constructors, destructors: {{{*/
+		DatasetInput();
+		DatasetInput(int enum_type);
+		~DatasetInput();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*DatasetInput management: {{{*/
+		void   AddInput(Input* input,int id);
+		void AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");};
+		void Configure(Parameters* parameters);
+		int    InstanceEnum();
+		Input* PointwiseDivide(Input* inputB){_error_("not implemented yet");};
+		Input* PointwiseMin(Input* inputB){_error_("not implemented yet");};
+		Input* PointwiseMax(Input* inputB){_error_("not implemented yet");};
+		Input* SpawnSegInput(int index1,int index2);
+		Input* SpawnTriaInput(int index1,int index2,int index3);
+		/*}}}*/
+		/*numerics: {{{*/
+		void AXPY(Input* xinput,IssmDouble scalar){_error_("not implemented yet");};
+		void ChangeEnum(int newenumtype){_error_("not implemented yet");};
+		void Constrain(void){_error_("not implemented yet");};
+		void Constrain(IssmDouble min,IssmDouble max){_error_("not implemented yet");};
+		void ConstrainMin(IssmDouble minimum){_error_("not implemented yet");};
+		void Extrude(int start){_error_("not implemented yet");};
+		void GetGradient(Vector<IssmDouble>* gradient_vec,int* doflist){_error_("not implemented yet");};
+		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
+		void GetInputAverage(IssmDouble* pvalue){_error_("not implemented yet");};
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
+		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void GetInputValue(bool* pvalue){_error_("not implemented yet");};
+		void GetInputValue(int* pvalue){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss,IssmDouble time){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss ,int index);
+		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
+		int GetResultArraySize(void){_error_("not implemented yet");};
+		int GetResultInterpolation(void){_error_("not implemented yet");};
+		int GetResultNumberOfNodes(void){_error_("not implemented yet");};
+		void GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist){_error_("not implemented yet");};
+		IssmDouble InfinityNorm(void){_error_("not implemented yet");};
+		IssmDouble Max(void){_error_("not implemented yet");};
+		IssmDouble MaxAbs(void){_error_("not implemented yet");};
+		IssmDouble Min(void){_error_("not implemented yet");};
+		IssmDouble MinAbs(void){_error_("not implemented yet");};
+		void ResultToPatch(IssmDouble* values,int nodesperelement,int sid){_error_("not supported yet");};
+		void SaveValue(void){_error_("not implemented yet");};
+		void Scale(IssmDouble scale_factor){_error_("not implemented yet");};
+		void ScaleGradient(IssmDouble scale){_error_("not implemented yet");};
+		void Set(IssmDouble setvalue){_error_("Set not implemented yet");};
+		void SetGradient(Input* gradient_in){_error_("not implemented yet");};
+		void SquareMin(IssmDouble* psquaremin,Parameters* parameters){_error_("not implemented yet");};
+		void UpdateValue(IssmDouble scalar){_error_("not implemented yet");};
+		void VerticallyIntegrate(Input* thickness_input){_error_("not implemented yet");};
+		/*}}}*/
+
+};
+#endif  /* _DATASETINPUT_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/DoubleArrayInput.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/DoubleArrayInput.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/DoubleArrayInput.cpp	(revision 21239)
@@ -0,0 +1,114 @@
+/*!\file DoubleArrayInput.c
+ * \brief: implementation of the DoubleArrayInput object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+
+/*DoubleArrayInput constructors and destructor*/
+DoubleArrayInput::DoubleArrayInput(){/*{{{*/
+	return;
+}
+/*}}}*/
+DoubleArrayInput::DoubleArrayInput(int in_enum_type,IssmDouble* in_values,  int in_m){/*{{{*/
+
+	enum_type=in_enum_type;
+	m=in_m;
+	values=xNew<IssmDouble>(m);
+	xMemCpy<IssmDouble>(values,in_values,m);
+
+}
+/*}}}*/
+DoubleArrayInput::~DoubleArrayInput(){/*{{{*/
+
+	if(values)xDelete<IssmDouble>(values);
+
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* DoubleArrayInput::copy() {/*{{{*/
+
+	return new DoubleArrayInput(this->enum_type,this->values,this->m);
+
+}
+/*}}}*/
+void DoubleArrayInput::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(15)<<"   DoubleArrayInput "<<setw(25)<<left<<EnumToStringx(this->enum_type)<<" Size: " << m << "\n");
+	for (int i=0;i<m;i++) _printf_(setw(20) << this->values[i]<<"\n");
+
+}
+/*}}}*/
+void DoubleArrayInput::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int DoubleArrayInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void DoubleArrayInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(DoubleArrayInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(m);
+	MARSHALLING_DYNAMIC(this->values,IssmDouble,m);
+}
+/*}}}*/
+int DoubleArrayInput::ObjectEnum(void){/*{{{*/
+
+	return DoubleArrayInputEnum;
+
+}
+/*}}}*/
+
+/*DoubleArrayInput management*/
+void DoubleArrayInput::GetValues(IssmDouble** pvalues, int *pm){ /*{{{*/
+
+	/*output: */
+	IssmDouble*  outvalues= NULL;
+
+	outvalues=xNew<IssmDouble>(m);
+
+	xMemCpy<IssmDouble>(outvalues,values,m);
+
+	/*assign output pointers: */
+	*pm=m;
+	*pvalues=outvalues;
+}
+/*}}}*/
+int DoubleArrayInput::InstanceEnum(void){/*{{{*/
+
+	return this->enum_type;
+
+}
+/*}}}*/
+void DoubleArrayInput::ResultToMatrix(IssmDouble* values,int ncols,int sid){/*{{{*/
+
+	int ncols_local = this->GetResultArraySize();
+
+	/*Some checks*/
+	_assert_(values);
+	_assert_(ncols_local<=ncols);
+
+	/*Fill in arrays*/
+	for(int i=0;i<ncols_local;i++) values[sid*ncols + i] = this->values[i];
+}
+/*}}}*/
+
+/*Object functions*/
+void DoubleArrayInput::ChangeEnum(int newenumtype){/*{{{*/
+	this->enum_type=newenumtype;
+}
+/*}}}*/
+void DoubleArrayInput::Configure(Parameters* parameters){/*{{{*/
+	/*do nothing: */
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/DoubleArrayInput.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/DoubleArrayInput.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/DoubleArrayInput.h	(revision 21239)
@@ -0,0 +1,77 @@
+/*! \file DoubleArrayInput.h 
+ *  \brief: header file for vector type input object
+ */
+
+#ifndef _DOUBLE_ARRAY_INPUT_H_
+#define _DOUBLE_ARRAY_INPUT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Input.h"
+/*}}}*/
+
+class DoubleArrayInput: public Input{
+
+	public:
+		int    enum_type;
+		IssmDouble* values; /*vector*/
+		int         m; /*size of vector*/
+
+		/*DoubleArrayInput constructors, destructors: {{{*/
+		DoubleArrayInput();
+		DoubleArrayInput(int enum_type,IssmDouble* values, int m);
+		~DoubleArrayInput();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*DoubleArrayInput management: {{{*/
+		void Configure(Parameters* parameters);
+		void GetValues(IssmDouble** pvalues,int* pm);
+		int  GetResultArraySize(void){return m;};
+		int  GetResultInterpolation(void){return P0ArrayEnum;};
+		int  GetResultNumberOfNodes(void){return 1;};
+		int   InstanceEnum();
+		Input* PointwiseDivide(Input* inputB){_error_("not implemented yet");};
+		Input* PointwiseMax(Input* inputB){_error_("not implemented yet");};
+		Input* PointwiseMin(Input* inputB){_error_("not implemented yet");};
+		void ResultToMatrix(IssmDouble* values,int ncols,int sid);
+		Input* SpawnSegInput(int index1,int index2){_error_("not implemented yet");};
+		Input* SpawnTriaInput(int index1,int index2,int index3){_error_("not implemented yet");};
+		/*}}}*/
+		/*numerics: {{{*/
+		void AXPY(Input* xinput,IssmDouble scalar){_error_("not implemented yet");};
+		void ChangeEnum(int newenumtype);
+		void Constrain(IssmDouble cm_min, IssmDouble cm_max){_error_("not implemented yet");};
+		void ConstrainMin(IssmDouble minimum){_error_("not implemented yet");};
+		void Extrude(int start){_error_("not supported yet");};
+		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
+		void GetInputAverage(IssmDouble* pvalue){_error_("not implemented yet");};
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
+		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void GetInputValue(bool* pvalue){_error_("not implemented yet");};
+		void GetInputValue(int* pvalue){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss,IssmDouble time){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss ,int index){_error_("not implemented yet");};
+		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
+		void GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist){_error_("not implemented yet");};
+		IssmDouble InfinityNorm(void){_error_("not implemented yet");};
+		IssmDouble Max(void){_error_("not implemented yet");};
+		IssmDouble MaxAbs(void){_error_("not implemented yet");};
+		IssmDouble Min(void){_error_("not implemented yet");};
+		IssmDouble MinAbs(void){_error_("not implemented yet");};
+		void Scale(IssmDouble scale_factor){_error_("not implemented yet");};
+		void Set(IssmDouble setvalue){_error_("Set not implemented yet");};
+		void SquareMin(IssmDouble* psquaremin,Parameters* parameters){_error_("not implemented yet");};
+		void VerticallyIntegrate(Input* thickness_input){_error_("not implemented yet");};
+		/*}}}*/
+
+};
+#endif  /* _DOUBLE_ARRAY_INPUT_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/DoubleInput.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/DoubleInput.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/DoubleInput.cpp	(revision 21239)
@@ -0,0 +1,273 @@
+/*!\file DoubleInput.c
+ * \brief: implementation of the DoubleInput object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+
+/*DoubleInput constructors and destructor*/
+DoubleInput::DoubleInput(){/*{{{*/
+	return;
+}
+/*}}}*/
+DoubleInput::DoubleInput(int in_enum_type,IssmDouble in_value){/*{{{*/
+
+	enum_type=in_enum_type;
+	value=in_value;
+}
+/*}}}*/
+DoubleInput::~DoubleInput(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* DoubleInput::copy() {/*{{{*/
+
+	return new DoubleInput(this->enum_type,this->value);
+
+}
+/*}}}*/
+void DoubleInput::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(15)<<"   DoubleInput "<<setw(25)<<left<<EnumToStringx(this->enum_type)<<" "<<this->value<<"\n");
+}
+/*}}}*/
+void DoubleInput::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int    DoubleInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void DoubleInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(DoubleInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(value);
+
+}
+/*}}}*/
+int DoubleInput::ObjectEnum(void){/*{{{*/
+
+	return DoubleInputEnum;
+
+}
+/*}}}*/
+
+/*DoubleInput management*/
+int DoubleInput::InstanceEnum(void){/*{{{*/
+
+	return this->enum_type;
+
+}
+/*}}}*/
+Input* DoubleInput::SpawnSegInput(int index1,int index2){/*{{{*/
+
+	/*output*/
+	DoubleInput* outinput=new DoubleInput();
+
+	/*only copy current value*/
+	outinput->enum_type=this->enum_type;
+	outinput->value=this->value;
+
+	/*Assign output*/
+	return outinput;
+
+}
+/*}}}*/
+Input* DoubleInput::SpawnTriaInput(int index1,int index2,int index3){/*{{{*/
+
+	/*output*/
+	DoubleInput* outinput=new DoubleInput();
+
+	/*only copy current value*/
+	outinput->enum_type=this->enum_type;
+	outinput->value=this->value;
+
+	/*Assign output*/
+	return outinput;
+
+}
+/*}}}*/
+
+/*Object functions*/
+void DoubleInput::AXPY(Input* xinput,IssmDouble scalar){/*{{{*/
+
+	DoubleInput*  xIssmDoubleinput=NULL;
+
+	/*xinput is of the same type, so cast it: */
+	xIssmDoubleinput=(DoubleInput*)xinput;
+
+	/*Carry out the AXPY operation depending on type:*/
+	switch(xinput->ObjectEnum()){
+
+		case DoubleInputEnum:
+			this->value=this->value+scalar*xIssmDoubleinput->value;
+			return;
+
+		default:
+			_error_("not implemented yet");
+	}
+
+}
+/*}}}*/
+void DoubleInput::ChangeEnum(int newenumtype){/*{{{*/
+	this->enum_type=newenumtype;
+}
+/*}}}*/
+void DoubleInput::Configure(Parameters* parameters){/*{{{*/
+	/*do nothing: */
+}
+/*}}}*/
+void DoubleInput::Constrain(IssmDouble cm_min, IssmDouble cm_max){/*{{{*/
+
+	if(!xIsNan<IssmDouble>(cm_min)) if (this->value<cm_min)this->value=cm_min;
+	if(!xIsNan<IssmDouble>(cm_max)) if (this->value>cm_max)this->value=cm_max;
+
+}
+/*}}}*/
+void DoubleInput::ConstrainMin(IssmDouble minimum){/*{{{*/
+	if (value<minimum) value=minimum;
+}
+/*}}}*/
+void DoubleInput::GetInputAverage(IssmDouble* pvalue){/*{{{*/
+	*pvalue=value;
+}
+/*}}}*/
+void DoubleInput::GetInputValue(bool* pvalue){/*{{{*/
+	_error_("Double input of enum " << EnumToStringx(enum_type) << " cannot return a boolean");
+
+}
+/*}}}*/
+void DoubleInput::GetInputValue(int* pvalue){/*{{{*/
+	_error_("Double input of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return an integer");
+
+}
+/*}}}*/
+void DoubleInput::GetInputValue(IssmDouble* pvalue){/*{{{*/
+
+	/*return value*/
+	*pvalue=value;
+}
+/*}}}*/
+void DoubleInput::GetInputValue(IssmDouble* pvalue,Gauss* gauss){*pvalue=this->value;}/*{{{*/
+/*}}}*/
+void DoubleInput::GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist){/*{{{*/
+
+	_error_("not supporte yet!");
+
+}
+/*}}}*/
+IssmDouble DoubleInput::Max(void){/*{{{*/
+	return this->value;
+}
+/*}}}*/
+IssmDouble DoubleInput::MaxAbs(void){/*{{{*/
+	return fabs(this->value);
+}
+/*}}}*/
+IssmDouble DoubleInput::Min(void){/*{{{*/
+	return this->value;
+}
+/*}}}*/
+IssmDouble DoubleInput::MinAbs(void){/*{{{*/
+	return fabs(this->value);
+}
+/*}}}*/
+Input* DoubleInput::PointwiseDivide(Input* inputB){/*{{{*/
+
+	/*Ouput*/
+	DoubleInput* outinput=NULL;
+
+	/*Intermediaries*/
+	IssmDouble       Bvalue;
+
+	/*Check that inputB is of the same type*/
+	inputB->GetInputAverage(&Bvalue);
+
+	/*Create new DoubleInput*/
+	outinput=new DoubleInput(this->enum_type,this->value/Bvalue);
+
+	/*Return output pointer*/
+	return outinput;
+
+}
+/*}}}*/
+Input* DoubleInput::PointwiseMax(Input* input){/*{{{*/
+
+	/*Ouput*/
+	DoubleInput* outinput=NULL;
+
+	/*Intermediaries*/
+	IssmDouble       max;
+
+	/*Check that inputB is of the same type*/
+	if (input->Max() > this->Max()) max=input->Max();
+	else max=this->Max();
+
+	/*Create new DoubleInput*/
+	outinput=new DoubleInput(this->enum_type,max);
+
+	/*Return output pointer*/
+	return outinput;
+
+}
+/*}}}*/
+Input* DoubleInput::PointwiseMin(Input* input){/*{{{*/
+
+	/*Ouput*/
+	DoubleInput* outinput=NULL;
+
+	/*Intermediaries*/
+	IssmDouble       min;
+
+	/*Check that inputB is of the same type*/
+	if (input->Min() < this->Min()) min=input->Min();
+	else min=this->Min();
+
+	/*Create new DoubleInput*/
+	outinput=new DoubleInput(this->enum_type,min);
+
+	/*Return output pointer*/
+	return outinput;
+
+}
+/*}}}*/
+void DoubleInput::Scale(IssmDouble scale_factor){/*{{{*/
+	value=value*scale_factor;
+}
+/*}}}*/
+void DoubleInput::SquareMin(IssmDouble* psquaremin,Parameters* parameters){/*{{{*/
+
+	/*square min of a IssmDouble is the square of the IssmDouble itself: */
+	*psquaremin=pow(value,2);
+}
+/*}}}*/
+void DoubleInput::VerticallyIntegrate(Input* thickness_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble thickness_value;
+
+	/*Check that input provided is a thickness*/
+	if (thickness_input->InstanceEnum()!=ThicknessEnum) _error_("Input provided is not a Thickness (enum_type is " << EnumToStringx(thickness_input->InstanceEnum()) << ")");
+
+	/*vertically integrate depending on type:*/
+	switch(thickness_input->ObjectEnum()){
+
+		case PentaInputEnum:
+			thickness_input->GetInputAverage(&thickness_value);
+			this->value=this->value*thickness_value;
+			return;
+
+		default:
+			_error_("not implemented yet");
+	}
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/DoubleInput.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/DoubleInput.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/DoubleInput.h	(revision 21239)
@@ -0,0 +1,78 @@
+/*! \file DoubleInput.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _DOUBLEINPUT_H_
+#define _DOUBLEINPUT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Input.h"
+class Gauss;
+class Gauss;
+/*}}}*/
+
+class DoubleInput: public Input{
+
+	public:
+		int    enum_type;
+		IssmDouble value;
+
+		/*DoubleInput constructors, destructors: {{{*/
+		DoubleInput();
+		DoubleInput(int enum_type,IssmDouble value);
+		~DoubleInput();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*DoubleInput management: {{{*/
+		void AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");};
+		void Configure(Parameters* parameters);
+		int  GetResultArraySize(void){return 1;};
+		int  GetResultInterpolation(void){return P0Enum;};
+		int  GetResultNumberOfNodes(void){return 1;};
+		int   InstanceEnum();
+		Input* PointwiseDivide(Input* inputB);
+		Input* PointwiseMax(Input* inputB);
+		Input* PointwiseMin(Input* inputB);
+		void ResultToPatch(IssmDouble* values,int nodesperelement,int sid){_error_("not supported yet");};
+		Input* SpawnSegInput(int index1,int index2);
+		Input* SpawnTriaInput(int index1,int index2,int index3);
+		/*}}}*/
+		/*numerics: {{{*/
+		void AXPY(Input* xinput,IssmDouble scalar);
+		void ChangeEnum(int newenumtype);
+		void Constrain(IssmDouble cm_min, IssmDouble cm_max);
+		void ConstrainMin(IssmDouble minimum);
+		void Extrude(int start){_error_("not supported yet");};
+		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
+		void GetInputAverage(IssmDouble* pvalue);
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
+		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void GetInputValue(bool* pvalue);
+		void GetInputValue(int* pvalue);
+		void GetInputValue(IssmDouble* pvalue);
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss);
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss,IssmDouble time){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss ,int index){_error_("not implemented yet");};
+		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
+		void GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist);
+		IssmDouble InfinityNorm(void){_error_("not implemented yet");};
+		IssmDouble Max(void);
+		IssmDouble MaxAbs(void);
+		IssmDouble Min(void);
+		IssmDouble MinAbs(void);
+		void Scale(IssmDouble scale_factor);
+		void Set(IssmDouble setvalue){_error_("Set not implemented yet");};
+		void SquareMin(IssmDouble* psquaremin,Parameters* parameters);
+		void VerticallyIntegrate(Input* thickness_input);
+		/*}}}*/
+
+};
+#endif  /* _DOUBLEINPUT_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/Input.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/Input.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/Input.h	(revision 21239)
@@ -0,0 +1,68 @@
+/*!\file:  Input.h
+ * \brief abstract class for Input object
+ */ 
+
+#ifndef _INPUT_H_
+#define _INPUT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../../datastructures/datastructures.h"
+#include "../../shared/shared.h"
+class Node;
+class Gauss;
+class Gauss;
+class GaussSeg;
+class Parameters;
+class Gauss;
+template <class doubletype> class Vector;
+/*}}}*/
+
+class Input: public Object{
+
+	public: 
+
+		virtual        ~Input(){};
+
+		virtual void ChangeEnum(int newenumtype)=0;
+		virtual void Configure(Parameters* parameters)=0;
+		virtual void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes)=0;
+		virtual void GetInputAverage(IssmDouble* pvalue)=0;
+		virtual void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list)=0;
+		virtual void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, Gauss* gauss)=0;
+		virtual void GetInputValue(bool* pvalue)=0;
+		virtual void GetInputValue(int* pvalue)=0;
+		virtual void GetInputValue(IssmDouble* pvalue)=0;
+		virtual void GetInputValue(IssmDouble* pvalue,Gauss* gauss)=0;
+		virtual void GetInputValue(IssmDouble* pvalue,Gauss* gauss,IssmDouble time)=0;
+		virtual void GetInputValue(IssmDouble* pvalue,Gauss* gauss,int index)=0;
+		virtual void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime)=0;
+		virtual int  InstanceEnum()=0; 
+
+		virtual void   AXPY(Input* xinput,IssmDouble scalar)=0;
+		virtual void   Constrain(IssmDouble cm_min, IssmDouble cm_max)=0;
+		virtual void   ConstrainMin(IssmDouble minimum)=0;
+		virtual void   Extrude(int start)=0;
+		virtual void   GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist)=0;
+		virtual IssmDouble InfinityNorm(void)=0;
+		virtual IssmDouble Max(void)=0;
+		virtual IssmDouble MaxAbs(void)=0;
+		virtual IssmDouble Min(void)=0;
+		virtual IssmDouble MinAbs(void)=0;
+		virtual void   Scale(IssmDouble scale_factor)=0;
+		virtual void   Set(IssmDouble setvalue)=0;
+		virtual void   SquareMin(IssmDouble* psquaremin,Parameters* parameters)=0;
+		virtual void   VerticallyIntegrate(Input* thickness_input)=0;
+
+		virtual int  GetResultArraySize(void)=0;
+		virtual int  GetResultInterpolation(void)=0;
+		virtual int  GetResultNumberOfNodes(void)=0;
+		virtual Input* PointwiseDivide(Input* inputB)=0;
+		virtual Input* PointwiseMax(Input* inputmax)=0;
+		virtual Input* PointwiseMin(Input* inputmin)=0;
+		virtual Input* SpawnSegInput(int index1,int index2)=0;
+		virtual Input* SpawnTriaInput(int index1,int index2,int index3)=0;
+		virtual void ResultToMatrix(IssmDouble* values,int ncols,int sid){_error_("not supported yet");};
+		virtual void ResultToPatch(IssmDouble* values,int nodesperelement,int sid){_error_("not supported yet");}; 
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/Inputs.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/Inputs.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/Inputs.cpp	(revision 21239)
@@ -0,0 +1,431 @@
+/*
+ * \file Inputs.c
+ * \brief: implementation of the Inputs class, derived from DataSet class
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Input.h"
+#include "./Inputs.h"
+#include "../../shared/shared.h"
+
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+Inputs::Inputs(){/*{{{*/
+	return;
+}
+/*}}}*/
+Inputs::~Inputs(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object management*/
+int  Inputs::AddInput(Input* in_input){/*{{{*/
+
+	/*First, go through dataset of inputs and check whether any input 
+	 * with the same name is already in. If so, erase the corresponding 
+	 * object before adding this new one: */
+	vector<Object*>::iterator object;
+	Input* input=NULL;
+
+	/*In debugging mode, check that the input is not a NULL pointer*/
+	_assert_(in_input);
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		input=xDynamicCast<Input*>(*object);
+
+		if (input->InstanceEnum()==in_input->InstanceEnum()){
+			this->DeleteObject(input);
+			break;
+		}
+	}
+	this->AddObject(in_input);
+
+	return 1;
+}
+/*}}}*/
+void  Inputs::AXPY(int inputy_enum, IssmDouble scalar, int inputx_enum){/*{{{*/
+
+	/*Find x and y inputs: */
+	Input* xinput=xDynamicCast<Input*>(this->GetInput(inputx_enum));
+	Input* yinput=xDynamicCast<Input*>(this->GetInput(inputy_enum));
+
+	/*some checks: */
+	if(!xinput) _error_("input " << EnumToStringx(inputx_enum) << " could not be found!");
+	if(!yinput) _error_("input " << EnumToStringx(inputy_enum) << " could not be found!");
+
+	/*Apply AXPY: */
+	yinput->AXPY(xinput,scalar);
+}
+/*}}}*/
+void  Inputs::ChangeEnum(int oldenumtype,int newenumtype){/*{{{*/
+
+	/*Go through dataset of inputs and look for input with 
+	 * same enum as input enum, once found, just change its name */
+	vector<Object*>::iterator object;
+	Input* input=NULL;
+
+	/*Delete existing input of newenumtype if it exists*/
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+		input=xDynamicCast<Input*>(*object);
+
+		if (input->InstanceEnum()==newenumtype){
+			this->DeleteObject(input);
+			break;
+		}
+	}
+
+	/*Change enum_type of input of oldenumtype*/
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		input=xDynamicCast<Input*>(*object);
+
+		if (input->InstanceEnum()==oldenumtype){
+			input->ChangeEnum(newenumtype);
+			break;
+		}
+	}
+}
+/*}}}*/
+void Inputs::Configure(Parameters* parameters){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Input* input=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		input=xDynamicCast<Input*>(*object);
+		input->Configure(parameters);
+
+	}
+
+}
+/*}}}*/
+void  Inputs::ConstrainMin(int constrain_enum, IssmDouble minimum){/*{{{*/
+
+	/*Find x and y inputs: */
+	Input* constrain_input=xDynamicCast<Input*>(this->GetInput(constrain_enum));
+
+	/*some checks: */
+	if(!constrain_input) _error_("input " << EnumToStringx(constrain_enum) << " could not be found!");
+
+	/*Apply ContrainMin: */
+	constrain_input->ConstrainMin(minimum);
+}
+/*}}}*/
+int  Inputs::DeleteInput(int enum_type){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Input* input=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		input=xDynamicCast<Input*>(*object);
+
+		if (input->InstanceEnum()==enum_type){
+			this->DeleteObject(input);
+			break;
+		}
+	}
+
+	return 1;
+
+}
+/*}}}*/
+void  Inputs::DuplicateInput(int original_enum,int new_enum){/*{{{*/
+
+	/*Make a copy of the original input: */
+	Input* original=xDynamicCast<Input*>(this->GetInput(original_enum));
+	if(!original)_error_("could not find input with enum: " << EnumToStringx(original_enum)); 
+	Input* copy=xDynamicCast<Input*>(original->copy());
+
+	/*Change copy enum to reinitialized_enum: */
+	copy->ChangeEnum(new_enum);
+
+	/*Add copy into inputs, it will wipe off the one already there: */
+	this->AddInput(xDynamicCast<Input*>(copy));
+}
+/*}}}*/
+Input* Inputs::GetInput(int enum_name){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Input* input=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		input=xDynamicCast<Input*>(*object);
+
+		if (input->InstanceEnum()==enum_name){
+			return input;
+		}
+	}
+	return NULL;
+}
+/*}}}*/
+void Inputs::GetInputAverage(IssmDouble* pvalue,int enum_type){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Input* input=NULL;
+	bool   found=false;
+
+	/*Go through inputs and check whether any input with the same name is already in: */
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		input=xDynamicCast<Input*>(*object);
+		if (input->InstanceEnum()==enum_type){
+			found=true;
+			break;
+		}
+	}
+
+	if (!found){
+		/*we could not find an input with the correct enum type. No defaults values were provided, 
+		 * error out: */
+		_error_("could not find input with enum type " << enum_type << " (" << EnumToStringx(enum_type) << ")");
+	}
+
+	/*Ok, we have an input if we made it here, request the input to return the value: */
+	input->GetInputAverage(pvalue);
+
+}
+/*}}}*/
+void Inputs::GetInputValue(bool* pvalue,int enum_type){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Input* input=NULL;
+	bool   found=false;
+
+	/*Go through inputs and check whether any input with the same name is already in: */
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		input=xDynamicCast<Input*>(*object);
+		if (input->InstanceEnum()==enum_type){
+			found=true;
+			break;
+		}
+	}
+
+	if (!found){
+		/*we could not find an input with the correct enum type. No defaults values were provided, 
+		 * error out: */
+		_error_("could not find input with enum type " << enum_type << " (" << EnumToStringx(enum_type) << ")");
+	}
+
+	/*Ok, we have an input if we made it here, request the input to return the value: */
+	input->GetInputValue(pvalue);
+
+}
+/*}}}*/
+void Inputs::GetInputValue(int* pvalue,int enum_type){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Input* input=NULL;
+	bool   found=false;
+
+	/*Go through inputs and check whether any input with the same name is already in: */
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		input=xDynamicCast<Input*>(*object);
+		if (input->InstanceEnum()==enum_type){
+			found=true;
+			break;
+		}
+	}
+
+	if (!found){
+		/*we could not find an input with the correct enum type. No defaults values were provided, 
+		 * error out: */
+		_error_("could not find input with enum type " << enum_type << " (" << EnumToStringx(enum_type) << ")");
+	}
+
+	/*Ok, we have an input if we made it here, request the input to return the value: */
+	input->GetInputValue(pvalue);
+
+}
+/*}}}*/
+void Inputs::GetInputValue(IssmDouble* pvalue,int enum_type){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Input* input=NULL;
+	bool   found=false;
+
+	/*Go through inputs and check whether any input with the same name is already in: */
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		input=xDynamicCast<Input*>(*object); 
+		if (input->InstanceEnum()==enum_type){
+			found=true;
+			break;
+		}
+	}
+
+	if (!found){
+		/*we could not find an input with the correct enum type. No defaults values were provided, 
+		 * error out: */
+		_error_("could not find input with enum type " << enum_type << " (" << EnumToStringx(enum_type) << ")");
+	}
+
+	/*Ok, we have an input if we made it here, request the input to return the value: */
+	input->GetInputValue(pvalue);
+
+}
+/*}}}*/
+IssmDouble Inputs::InfinityNorm(int enumtype){/*{{{*/
+
+	/*Output*/
+	IssmDouble norm;
+
+	/*Get input*/
+	Input* input=xDynamicCast<Input*>(this->GetInput(enumtype));
+
+	/*Apply ContrainMin: */
+	if (input){
+		norm=input->InfinityNorm();
+	}
+	else{
+		norm=0;
+	}
+
+	/*Return output*/
+	return norm;
+}
+/*}}}*/
+IssmDouble Inputs::Max(int enumtype){/*{{{*/
+
+	/*Output*/
+	IssmDouble max;
+
+	/*Get input*/
+	Input* input=xDynamicCast<Input*>(this->GetInput(enumtype));
+
+	/*Apply ContrainMin: */
+	if (input){
+		max=input->Max();
+	}
+	else{
+		_error_("Input " << EnumToStringx(enumtype) << " not found");
+	}
+
+	/*Return output*/
+	return max;
+}
+/*}}}*/
+IssmDouble Inputs::MaxAbs(int enumtype){/*{{{*/
+
+	/*Output*/
+	IssmDouble max;
+
+	/*Get input*/
+	Input* input=xDynamicCast<Input*>(this->GetInput(enumtype));
+
+	/*Apply ContrainMin: */
+	if (input){
+		max=input->MaxAbs();
+	}
+	else{
+		_error_("Input " << EnumToStringx(enumtype) << " not found");
+	}
+
+	/*Return output*/
+	return max;
+}
+/*}}}*/
+IssmDouble Inputs::Min(int enumtype){/*{{{*/
+
+	/*Output*/
+	IssmDouble min;
+
+	/*Get input*/
+	Input* input=xDynamicCast<Input*>(this->GetInput(enumtype));
+
+	/*Apply ContrainMin: */
+	if (input){
+		min=input->Min();
+	}
+	else{
+		_error_("Input " << EnumToStringx(enumtype) << " not found");
+	}
+
+	/*Return output*/
+	return min;
+}
+/*}}}*/
+IssmDouble Inputs::MinAbs(int enumtype){/*{{{*/
+
+	/*Output*/
+	IssmDouble min;
+
+	/*Get input*/
+	Input* input=xDynamicCast<Input*>(this->GetInput(enumtype));
+
+	/*Apply ContrainMin: */
+	if (input){
+		min=input->MinAbs();
+	}
+	else{
+		_error_("Input " << EnumToStringx(enumtype) << " not found");
+	}
+
+	/*Return output*/
+	return min;
+}
+/*}}}*/
+Inputs* Inputs::SpawnSegInputs(int index1,int index2){/*{{{*/
+
+	/*Intermediary*/
+	vector<Object*>::iterator object;
+	Input* inputin=NULL;
+	Input* inputout=NULL;
+
+	/*Output*/
+	Inputs* newinputs=new Inputs();
+
+	/*Go through inputs and call Spawn function*/
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		/*Create new input*/
+		inputin=xDynamicCast<Input*>(*object);
+		inputout=inputin->SpawnSegInput(index1,index2);
+
+		/*Add input to new inputs*/
+		newinputs->AddObject(inputout);
+	}
+
+	/*Assign output pointer*/
+	return newinputs;
+}
+/*}}}*/
+Inputs* Inputs::SpawnTriaInputs(int index1,int index2,int index3){/*{{{*/
+
+	/*Intermediary*/
+	vector<Object*>::iterator object;
+	Input* inputin=NULL;
+	Input* inputout=NULL;
+
+	/*Output*/
+	Inputs* newinputs=new Inputs();
+
+	/*Go through inputs and call Spawn function*/
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		/*Create new input*/
+		inputin=xDynamicCast<Input*>(*object);
+		inputout=inputin->SpawnTriaInput(index1,index2,index3);
+
+		/*Add input to new inputs*/
+		newinputs->AddObject(inputout);
+	}
+
+	/*Assign output pointer*/
+	return newinputs;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/Inputs.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/Inputs.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/Inputs.h	(revision 21239)
@@ -0,0 +1,49 @@
+#ifndef _CONTAINER_INPUTS_H_
+#define _CONTAINER_INPUTS_H_
+
+/*forward declarations */
+class Parameters;
+class Input;
+
+#include "../../datastructures/datastructures.h"
+#include "../../shared/shared.h"
+
+/*! \brief Declaration of Inputs class.
+ *
+ * Declaration of Inputs class.  Inputs are vector lists (Containers) of Input objects.
+ */ 
+class Inputs: public DataSet{
+
+	public:
+
+		/*constructors, destructors*/
+		Inputs();
+		~Inputs();
+
+		/*numerics*/
+		int         AddInput(Input* in_input);
+		void        AXPY(int inputy_enum, IssmDouble scalar, int inputx_enum);
+		void        ChangeEnum(int enumtype,int new_enumtype);
+		void        Configure(Parameters* parameters);
+		void        ConstrainMin(int constrain_enum, IssmDouble minimum);
+		int         DeleteInput(int enum_type);
+		void        DuplicateInput(int original_enum,int new_enum);
+		Input*      GetInput(int enum_name);
+		void        GetInputAverage(IssmDouble* pvalue, int enum_type);
+		void        GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void        GetInputValue(bool* pvalue,int enum_type);
+		void        GetInputValue(int* pvalue,int enum_type);
+		void        GetInputValue(IssmDouble* pvalue,int enum_type);
+		IssmDouble  InfinityNorm(int enumtype);
+		IssmDouble  Max(int enumtype);
+		IssmDouble  MaxAbs(int enumtype);
+		IssmDouble  Min(int enumtype);
+		IssmDouble  MinAbs(int enumtype);
+		Inputs*     SpawnSegInputs(int index1,int index2);
+		Inputs*     SpawnSegInputs(int position);
+		Inputs*     SpawnTriaInputs(int position);//TO BE REMOVED (replaced by the other one)
+		Inputs*     SpawnTriaInputs(int index1,int index2,int index3);
+
+};
+
+#endif //ifndef _INPUTS_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/IntInput.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/IntInput.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/IntInput.cpp	(revision 21239)
@@ -0,0 +1,164 @@
+/*!\file IntInput.c
+ * \brief: implementation of the IntInput object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+
+/*IntInput constructors and destructor*/
+IntInput::IntInput(){/*{{{*/
+	return;
+}
+/*}}}*/
+IntInput::IntInput(int in_enum_type,IssmInt in_value){/*{{{*/
+
+	enum_type=in_enum_type;
+	value=in_value;
+}
+/*}}}*/
+IntInput::~IntInput(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* IntInput::copy() {/*{{{*/
+
+	return new IntInput(this->enum_type,this->value);
+
+}
+/*}}}*/
+void IntInput::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(15)<<"   IntInput "<<setw(25)<<left<<EnumToStringx(this->enum_type)<<" "<<this->value<<"\n");
+}
+/*}}}*/
+int  IntInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void IntInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(IntInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(value);
+
+}
+/*}}}*/
+int  IntInput::ObjectEnum(void){/*{{{*/
+
+	return IntInputEnum;
+
+}
+/*}}}*/
+
+/*IntInput management*/
+void IntInput::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int IntInput::InstanceEnum(void){/*{{{*/
+
+	return this->enum_type;
+
+}
+/*}}}*/
+Input* IntInput::SpawnSegInput(int index1,int index2){/*{{{*/
+
+	/*output*/
+	IntInput* outinput=new IntInput();
+
+	/*only copy current value*/
+	outinput->enum_type=this->enum_type;
+	outinput->value=this->value;
+
+	/*Assign output*/
+	return outinput;
+}
+/*}}}*/
+Input* IntInput::SpawnTriaInput(int index1,int index2,int index3){/*{{{*/
+
+	/*output*/
+	IntInput* outinput=new IntInput();
+
+	/*only copy current value*/
+	outinput->enum_type=this->enum_type;
+	outinput->value=this->value;
+
+	/*Assign output*/
+	return outinput;
+}
+/*}}}*/
+
+/*Object functions*/
+void IntInput::AXPY(Input* xinput,IssmDouble scalar){/*{{{*/
+
+	IssmDouble dvalue;
+	IntInput*  xintinput=NULL;
+
+	/*xinput is of the same type, so cast it: */
+	xintinput=(IntInput*)xinput;
+
+	/*Carry out the AXPY operation depending on type:*/
+	switch(xinput->ObjectEnum()){
+
+		case IntInputEnum:
+			dvalue=(IssmDouble)this->value+scalar*(IssmDouble)xintinput->value;
+			this->value=reCast<int>(dvalue);
+			return;
+
+		default:
+			_error_("not implemented yet");
+	}
+
+}
+/*}}}*/
+void IntInput::ChangeEnum(int newenumtype){/*{{{*/
+	this->enum_type=newenumtype;
+}
+/*}}}*/
+void IntInput::Configure(Parameters* parameters){/*{{{*/
+	/*do nothing: */
+}
+/*}}}*/
+void IntInput::Constrain(IssmDouble cm_min, IssmDouble cm_max){/*{{{*/
+
+	if(!xIsNan<IssmDouble>(cm_min)) if (this->value<cm_min)this->value=reCast<int>(cm_min);
+	if(!xIsNan<IssmDouble>(cm_max)) if (this->value>cm_max)this->value=reCast<int>(cm_max);
+
+}
+/*}}}*/
+void IntInput::GetInputValue(bool* pvalue){_error_("not supported yet!");}/*{{{*/
+/*}}}*/
+void IntInput::GetInputValue(int* pvalue){/*{{{*/
+	*pvalue=value;
+}
+/*}}}*/
+void IntInput::GetInputValue(IssmDouble* pvalue){/*{{{*/
+	_error_("IntInput cannot return a IssmDouble in parallel");
+}
+/*}}}*/
+void IntInput::GetInputValue(IssmDouble* pvalue,Gauss* gauss){_error_("not supported yet!");}/*{{{*/
+/*}}}*/
+void IntInput::GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist){/*{{{*/
+
+	_error_("not supporte yet!");
+
+}
+/*}}}*/
+void IntInput::Scale(IssmDouble scale_factor){/*{{{*/
+	IssmDouble dvalue=(IssmDouble)value*scale_factor;
+	value=reCast<int>(dvalue);
+}
+/*}}}*/
+void IntInput::SquareMin(IssmDouble* psquaremin,Parameters* parameters){/*{{{*/
+
+	/*square min of an integer is the square of the integer itself: */
+	*psquaremin=pow((IssmDouble)value,2);
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/IntInput.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/IntInput.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/IntInput.h	(revision 21239)
@@ -0,0 +1,79 @@
+/*! \file IntInput.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _INTINPUT_H_
+#define _INTINPUT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Input.h"
+class Gauss;
+class Gauss;
+/*}}}*/
+
+class IntInput: public Input{
+
+	public:
+		/*just hold 3 values for 3 vertices: */
+		int    enum_type;
+		IssmInt value;
+
+		/*IntInput constructors, destructors: {{{*/
+		IntInput();
+		IntInput(int enum_type,IssmInt value);
+		~IntInput();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*IntInput management: {{{*/
+		void AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");};
+		void Configure(Parameters* parameters);
+		int  GetResultArraySize(void){return 1;};
+		int  GetResultInterpolation(void){return P0Enum;};
+		int  GetResultNumberOfNodes(void){return 1;};
+		int   InstanceEnum();
+		Input* PointwiseDivide(Input* inputB){_error_("not implemented yet");};
+		Input* PointwiseMax(Input* inputB){_error_("not implemented yet");};
+		Input* PointwiseMin(Input* inputB){_error_("not implemented yet");};
+		void ResultToPatch(IssmDouble* values,int nodesperelement,int sid){_error_("not supported yet");};
+		Input* SpawnSegInput(int index1,int index2);
+		Input* SpawnTriaInput(int index1,int index2,int index3);
+		/*}}}*/
+		/*numerics: {{{*/
+		void AXPY(Input* xinput,IssmDouble scalar);
+		void ChangeEnum(int newenumtype);
+		void Constrain(IssmDouble cm_min, IssmDouble cm_max);
+		void ConstrainMin(IssmDouble minimum){_error_("not implemented yet");};
+		void Extrude(int start){_error_("not supported yet");};
+		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
+		void GetInputAverage(IssmDouble* pvalue){_error_("not implemented yet");};
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
+		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void GetInputValue(bool* pvalue);
+		void GetInputValue(int* pvalue);
+		void GetInputValue(IssmDouble* pvalue);
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss);
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss,IssmDouble time){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss ,int index){_error_("not implemented yet");};
+		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
+		void GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist);
+		IssmDouble InfinityNorm(void){_error_("InfinityNorm not implemented for integers");};
+		IssmDouble Max(void){_error_("Max not implemented for integers");};
+		IssmDouble MaxAbs(void){_error_("Max not implemented for integers");};
+		IssmDouble Min(void){_error_("Min not implemented for integers");};
+		IssmDouble MinAbs(void){_error_("Min not implemented for integers");};
+		void Scale(IssmDouble scale_factor);
+		void Set(IssmDouble setvalue){_error_("Set not implemented yet");};
+		void SquareMin(IssmDouble* psquaremin,Parameters* parameters);
+		void VerticallyIntegrate(Input* thickness_input){_error_("not supported yet");};
+		/*}}}*/
+
+};
+#endif  /* _INTINPUT_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/PentaInput.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/PentaInput.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/PentaInput.cpp	(revision 21239)
@@ -0,0 +1,452 @@
+/*!\file PentaInput.c
+ * \brief: implementation of the PentaInput object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+
+/*PentaInput constructors and destructor*/
+PentaInput::PentaInput(){/*{{{*/
+	values = NULL;
+}
+/*}}}*/
+PentaInput::PentaInput(int in_enum_type,IssmDouble* in_values,int interpolation_type_in){/*{{{*/
+
+	/*Set Enum*/
+	this->enum_type=in_enum_type;
+	this->interpolation_type=interpolation_type_in;
+
+	int numnodes = this->NumberofNodes(this->interpolation_type);
+
+	/*Set values*/
+	if (numnodes > 0){
+		this->values=xNew<IssmDouble>((unsigned int)numnodes);
+		for(int i=0;i<numnodes;i++) values[i]=in_values[i];
+	}
+	else{
+		this->values = NULL;
+	}
+
+}
+/*}}}*/
+PentaInput::~PentaInput(){/*{{{*/
+	xDelete<IssmDouble>(this->values);
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* PentaInput::copy() {/*{{{*/
+
+	return new PentaInput(this->enum_type,this->values,this->interpolation_type);
+
+}
+/*}}}*/
+void PentaInput::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(15)<<"   PentaInput "<<setw(25)<<left<<EnumToStringx(this->enum_type)<<" [");
+	for(int i=0;i<this->NumberofNodes(this->interpolation_type);i++) _printf_(" "<<this->values[i]);
+	_printf_("]\n");
+}
+/*}}}*/
+void PentaInput::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  PentaInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void PentaInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(PentaInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(interpolation_type);
+
+	int numnodes = this->NumberofNodes(this->interpolation_type);
+	if(numnodes > 0){
+		MARSHALLING_DYNAMIC(this->values,IssmDouble,numnodes)
+	}
+	else this->values = NULL;
+}
+/*}}}*/
+int  PentaInput::ObjectEnum(void){/*{{{*/
+
+	return PentaInputEnum;
+
+}
+/*}}}*/
+
+/*PentaInput management*/
+int  PentaInput::GetResultInterpolation(void){/*{{{*/
+
+	if(this->interpolation_type==P0Enum){
+		return P0Enum;
+	}
+	return P1Enum;
+
+}
+/*}}}*/
+int  PentaInput::GetResultNumberOfNodes(void){/*{{{*/
+
+	return this->NumberofNodes(this->interpolation_type);;
+
+}
+/*}}}*/
+int PentaInput::InstanceEnum(void){/*{{{*/
+
+	return this->enum_type;
+
+}
+/*}}}*/
+void PentaInput::ResultToPatch(IssmDouble* values,int nodesperelement,int sid){/*{{{*/
+
+	int numnodes = this->NumberofNodes(this->interpolation_type);
+
+	/*Some checks*/
+	_assert_(values);
+	_assert_(numnodes==nodesperelement);
+
+	/*Fill in arrays*/
+	for(int i=0;i<numnodes;i++) values[sid*numnodes + i] = this->values[i];
+}
+/*}}}*/
+Input* PentaInput::SpawnSegInput(int index1,int index2){/*{{{*/
+
+	_error_("not supported");
+}
+/*}}}*/
+Input* PentaInput::SpawnTriaInput(int index1,int index2,int index3){/*{{{*/
+
+	/*output*/
+	TriaInput* outinput=NULL;
+
+	if(this->interpolation_type==P0Enum){ 
+		outinput=new TriaInput(this->enum_type,&this->values[0],P0Enum);
+	}
+	else{
+		/*Assume P1 interpolation only for now*/
+		IssmDouble newvalues[3]; 
+
+		/*Create array of indices depending on location (0=base 1=surface)*/
+		int indices[3];
+		indices[0] = index1;
+		indices[1] = index2;
+		indices[2] = index3;
+
+		/*Create new input*/
+		for(int i=0;i<3;i++){
+			_assert_(indices[i]>=0 && indices[i]<6);
+			newvalues[i]=this->values[indices[i]];
+		}
+		outinput=new TriaInput(this->enum_type,&newvalues[0],P1Enum);
+	}
+
+	/*Assign output*/
+	return outinput;
+}
+/*}}}*/
+
+/*Object functions*/
+void PentaInput::ChangeEnum(int newenumtype){/*{{{*/
+	this->enum_type=newenumtype;
+}
+/*}}}*/
+void PentaInput::GetInputAverage(IssmDouble* pvalue){/*{{{*/
+
+	int        numnodes  = this->NumberofNodes(this->interpolation_type);
+	IssmDouble numnodesd = reCast<int,IssmDouble>(numnodes);
+	IssmDouble value     = 0.;
+
+	for(int i=0;i<numnodes;i++) value+=values[i];
+	value = value/numnodesd;
+
+	*pvalue=value;
+}
+/*}}}*/
+void PentaInput::GetInputDerivativeValue(IssmDouble* p, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	/*Call PentaRef function*/
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	PentaRef::GetInputDerivativeValue(p,&values[0],xyz_list,(GaussPenta*)gauss,this->interpolation_type);
+}
+/*}}}*/
+void PentaInput::GetInputValue(IssmDouble* pvalue){/*{{{*/
+
+	if(this->interpolation_type==P0Enum){
+		pvalue=&values[0];
+	}
+	else _error_("not implemented yet");
+}
+/*}}}*/
+void PentaInput::GetInputValue(IssmDouble* pvalue,Gauss* gauss){/*{{{*/
+
+	/*Call PentaRef function*/
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	PentaRef::GetInputValue(pvalue,&values[0],(GaussPenta*)gauss,this->interpolation_type);
+
+}
+/*}}}*/
+
+/*Intermediary*/
+void PentaInput::AXPY(Input* xinput,IssmDouble scalar){/*{{{*/
+
+	const int numnodes=this->NumberofNodes(this->interpolation_type);
+	PentaInput* xpentainput=NULL;
+
+	/*If xinput is a ControlInput, take its values directly*/
+	if(xinput->ObjectEnum()==ControlInputEnum){
+		xinput=((ControlInput*)xinput)->values;
+	}
+
+	/*xinput is of the same type, so cast it: */
+	if(xinput->ObjectEnum()!=PentaInputEnum)
+	  _error_("Operation not permitted because xinput is of type " << EnumToStringx(xinput->ObjectEnum()));
+	xpentainput=(PentaInput*)xinput;
+	if(xpentainput->interpolation_type!=this->interpolation_type) _error_("Operation not permitted because xinput is of type " << EnumToStringx(xpentainput->interpolation_type));
+
+	/*Carry out the AXPY operation depending on type:*/
+	for(int i=0;i<numnodes;i++)this->values[i]=this->values[i]+scalar*xpentainput->values[i];
+
+}
+/*}}}*/
+void PentaInput::Configure(Parameters* parameters){/*{{{*/
+	/*do nothing: */
+}
+/*}}}*/
+void PentaInput::Constrain(IssmDouble cm_min, IssmDouble cm_max){/*{{{*/
+
+	int i;
+	const int numnodes=this->NumberofNodes(this->interpolation_type);
+
+	if(!xIsNan<IssmDouble>(cm_min)) for(i=0;i<numnodes;i++)if (this->values[i]<cm_min)this->values[i]=cm_min;
+	if(!xIsNan<IssmDouble>(cm_max)) for(i=0;i<numnodes;i++)if (this->values[i]>cm_max)this->values[i]=cm_max;
+
+}
+/*}}}*/
+void PentaInput::ConstrainMin(IssmDouble minimum){/*{{{*/
+
+	int numnodes = this->NumberofNodes(this->interpolation_type);
+	for(int i=0;i<numnodes;i++) if (values[i]<minimum) values[i]=minimum;
+}
+/*}}}*/
+void PentaInput::Extrude(int start){/*{{{*/
+
+	switch(this->interpolation_type){
+		case P1Enum:
+			if(start==-1){
+				for(int i=0;i<3;i++) this->values[3+i]=this->values[i];
+			}
+			else{
+				for(int i=0;i<3;i++) this->values[i]  =this->values[3+i];
+			}
+			break;
+		default:
+			_error_("not supported yet for type "<<EnumToStringx(this->interpolation_type));
+	}
+}
+/*}}}*/
+void PentaInput::GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist){/*{{{*/
+	const int numvertices=6;
+	vector->SetValues(numvertices,doflist,this->values,INS_VAL);
+} /*}}}*/
+IssmDouble PentaInput::InfinityNorm(void){/*{{{*/
+
+	/*Output*/
+	IssmDouble norm=0.;
+	int numnodes=this->NumberofNodes(this->interpolation_type);
+
+	for(int i=0;i<numnodes;i++) if(fabs(values[i])>norm) norm=fabs(values[i]);
+	return norm;
+}
+/*}}}*/
+IssmDouble PentaInput::Max(void){/*{{{*/
+
+	int  numnodes=this->NumberofNodes(this->interpolation_type);
+	IssmDouble max=values[0];
+
+	for(int i=1;i<numnodes;i++){
+		if(values[i]>max) max=values[i];
+	}
+	return max;
+}
+/*}}}*/
+IssmDouble PentaInput::MaxAbs(void){/*{{{*/
+
+	int  numnodes=this->NumberofNodes(this->interpolation_type);
+	IssmDouble max=fabs(values[0]);
+
+	for(int i=1;i<numnodes;i++){
+		if(fabs(values[i])>max) max=fabs(values[i]);
+	}
+	return max;
+}
+/*}}}*/
+IssmDouble PentaInput::Min(void){/*{{{*/
+
+	const int  numnodes=this->NumberofNodes(this->interpolation_type);
+	IssmDouble min=values[0];
+
+	for(int i=1;i<numnodes;i++){
+		if(values[i]<min) min=values[i];
+	}
+	return min;
+}
+/*}}}*/
+IssmDouble PentaInput::MinAbs(void){/*{{{*/
+
+	const int  numnodes=this->NumberofNodes(this->interpolation_type);
+	IssmDouble min=fabs(values[0]);
+
+	for(int i=1;i<numnodes;i++){
+		if(fabs(values[i])<min) min=fabs(values[i]);
+	}
+	return min;
+}
+/*}}}*/
+Input* PentaInput::PointwiseDivide(Input* inputB){/*{{{*/
+
+	/*Ouput*/
+	PentaInput* outinput=NULL;
+
+	/*Intermediaries*/
+	PentaInput *xinputB  = NULL;
+	const int   numnodes = this->NumberofNodes(this->interpolation_type);
+
+	/*Check that inputB is of the same type*/
+	if(inputB->ObjectEnum()!=PentaInputEnum)     _error_("Operation not permitted because inputB is of type " << EnumToStringx(inputB->ObjectEnum()));
+	xinputB=(PentaInput*)inputB;
+	if(xinputB->interpolation_type!=this->interpolation_type) _error_("Operation not permitted because inputB is of type " << EnumToStringx(xinputB->interpolation_type));
+
+	/*Allocate intermediary*/
+	IssmDouble* AdotBvalues=xNew<IssmDouble>(numnodes);
+
+	/*Create point wise sum*/
+	for(int i=0;i<numnodes;i++){
+		_assert_(xinputB->values[i]!=0);
+		AdotBvalues[i]=this->values[i]/xinputB->values[i];
+	}
+
+	/*Create new Penta vertex input (copy of current input)*/
+	outinput=new PentaInput(this->enum_type,AdotBvalues,this->interpolation_type);
+
+	/*Return output pointer*/
+	xDelete<IssmDouble>(AdotBvalues);
+	return outinput;
+
+}
+/*}}}*/
+Input* PentaInput::PointwiseMax(Input* inputB){/*{{{*/
+
+	/*Ouput*/
+	PentaInput* outinput=NULL;
+
+	/*Intermediaries*/
+	int         i;
+	PentaInput  *xinputB   = NULL;
+	const int   numnodes  = this->NumberofNodes(this->interpolation_type);
+	IssmDouble *maxvalues = xNew<IssmDouble>(numnodes);
+
+	/*Check that inputB is of the same type*/
+	if(inputB->ObjectEnum()!=PentaInputEnum) _error_("Operation not permitted because inputB is of type " << EnumToStringx(inputB->ObjectEnum()));
+	xinputB=(PentaInput*)inputB;
+	if(xinputB->interpolation_type!=this->interpolation_type) _error_("Operation not permitted because inputB is of type " << EnumToStringx(xinputB->interpolation_type));
+
+	/*Create point wise max*/
+	for(i=0;i<numnodes;i++){
+		if(this->values[i] < xinputB->values[i]) maxvalues[i]=xinputB->values[i];
+		else maxvalues[i]=this->values[i];
+	}
+
+	/*Create new Penta vertex input (copy of current input)*/
+	outinput=new PentaInput(this->enum_type,&maxvalues[0],this->interpolation_type);
+
+	/*Return output pointer*/
+	xDelete<IssmDouble>(maxvalues);
+	return outinput;
+}
+/*}}}*/
+Input* PentaInput::PointwiseMin(Input* inputB){/*{{{*/
+
+	/*Ouput*/
+	PentaInput* outinput=NULL;
+
+	/*Intermediaries*/
+	int         i;
+	PentaInput  *xinputB   = NULL;
+	const int   numnodes  = this->NumberofNodes(this->interpolation_type);
+	IssmDouble *minvalues = xNew<IssmDouble>(numnodes);
+
+	/*Check that inputB is of the same type*/
+	if(inputB->ObjectEnum()!=PentaInputEnum)       _error_("Operation not permitted because inputB is of type " << EnumToStringx(inputB->ObjectEnum()));
+	xinputB=(PentaInput*)inputB;
+	if(xinputB->interpolation_type!=this->interpolation_type) _error_("Operation not permitted because inputB is of type " << EnumToStringx(xinputB->interpolation_type));
+
+	/*Create point wise min*/
+	for(i=0;i<numnodes;i++){
+		if(this->values[i] > xinputB->values[i]) minvalues[i]=xinputB->values[i];
+		else minvalues[i]=this->values[i];
+	}
+
+	/*Create new Penta vertex input (copy of current input)*/
+	outinput=new PentaInput(this->enum_type,&minvalues[0],this->interpolation_type);
+
+	/*Return output pointer*/
+	xDelete<IssmDouble>(minvalues);
+	return outinput;
+}
+/*}}}*/
+void PentaInput::Scale(IssmDouble scale_factor){/*{{{*/
+
+	const int numnodes=this->NumberofNodes(this->interpolation_type);
+	for(int i=0;i<numnodes;i++)values[i]=values[i]*scale_factor;
+}
+/*}}}*/
+void PentaInput::SquareMin(IssmDouble* psquaremin,Parameters* parameters){/*{{{*/
+
+	int        numnodes=this->NumberofNodes(this->interpolation_type);
+	IssmDouble squaremin;
+
+	/*Now, figure out minimum of valuescopy: */
+	squaremin=pow(this->values[0],2);
+	for(int i=1;i<numnodes;i++){
+		if(pow(this->values[i],2)<squaremin)squaremin=pow(this->values[i],2);
+	}
+	/*Assign output pointers:*/
+	*psquaremin=squaremin;
+}
+/*}}}*/
+void PentaInput::VerticallyIntegrate(Input* thickness_input){/*{{{*/
+
+	IssmDouble thickness;
+	IssmDouble value=0.;
+
+	/*Check that input provided is a thickness*/
+	if (thickness_input->InstanceEnum()!=ThicknessEnum) _error_("Input provided is not a Thickness (enum_type is " << EnumToStringx(thickness_input->InstanceEnum()) << ")");
+
+	/*vertically integrate depending on type (and use P1 interpolation from now on)*/
+	switch(this->interpolation_type){
+		case P1Enum:
+		case P1bubbleEnum:
+		case P2Enum:
+			  {
+				this->interpolation_type=P1Enum;
+				GaussPenta *gauss=new GaussPenta();
+				for(int iv=0;iv<3;iv++){
+					gauss->GaussVertex(iv);
+					thickness_input->GetInputValue(&thickness,gauss);
+					this->values[iv]=0.5*(this->values[iv]+this->values[iv+3]) * thickness;
+					this->values[iv+3]=this->values[iv];
+				}
+				delete gauss;
+				return; 
+			  }
+		default:
+			_error_("not supported yet for type "<<EnumToStringx(this->interpolation_type));
+	}
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/PentaInput.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/PentaInput.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/PentaInput.h	(revision 21239)
@@ -0,0 +1,78 @@
+/*! \file PentaInput.h 
+ *  \brief: header file for PentaInput object
+ */
+
+#ifndef _PENTAINPUT_H_
+#define _PENTAINPUT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Input.h"
+#include "../Elements/PentaRef.h"
+class Gauss;
+class Gauss;
+/*}}}*/
+
+class PentaInput: public Input, public PentaRef{
+
+	public:
+		int         enum_type;
+		int         interpolation_type;
+		IssmDouble* values;
+
+		/*PentaInput constructors, destructors*/
+		PentaInput();
+		PentaInput(int enum_type,IssmDouble* values,int element_type_in);
+		~PentaInput();
+
+		/*Object virtual functions definitions */
+		Object *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int     ObjectEnum();
+
+		/*PentaInput management*/
+		int   InstanceEnum();
+		Input* PointwiseDivide(Input* inputB);
+		Input* PointwiseMin(Input* inputB);
+		Input* PointwiseMax(Input* inputB);
+		int  GetResultInterpolation(void);
+		int  GetResultNumberOfNodes(void);
+		int  GetResultArraySize(void){return 1;};
+		void ResultToPatch(IssmDouble* values,int nodesperelement,int sid);
+		void AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");};
+		void Configure(Parameters* parameters);
+		/*numerics*/
+		void AXPY(Input* xinput,IssmDouble scalar);
+		void ChangeEnum(int newenumtype);
+		void Constrain(IssmDouble cm_min, IssmDouble cm_max);
+		void ConstrainMin(IssmDouble minimum);
+		void Extrude(int start);
+		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
+		void GetInputAverage(IssmDouble* pvalue);
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
+		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss);
+		void GetInputValue(bool* pvalue){_error_("not implemented yet");};
+		void GetInputValue(int* pvalue){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue);
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss);
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss,IssmDouble time){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss ,int index){_error_("not implemented yet");};
+		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
+		void GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist);
+		IssmDouble InfinityNorm(void);
+		IssmDouble Max(void);
+		IssmDouble MaxAbs(void);
+		IssmDouble Min(void);
+		IssmDouble MinAbs(void);
+		void Scale(IssmDouble scale_factor);
+		void Set(IssmDouble setvalue){_error_("Set not implemented yet");};
+		Input* SpawnTriaInput(int index1,int index2,int index3);
+		Input* SpawnSegInput(int index1,int index2);
+		void SquareMin(IssmDouble* psquaremin,Parameters* parameters);
+		void VerticallyIntegrate(Input* thickness_input);
+
+};
+#endif  /* _PENTAINPUT_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/SegInput.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/SegInput.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/SegInput.cpp	(revision 21239)
@@ -0,0 +1,126 @@
+/*!\file SegInput.c
+ * \brief: implementation of the SegInput object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+
+/*SegInput constructors and destructor*/
+SegInput::SegInput(){/*{{{*/
+	values = NULL;
+}
+/*}}}*/
+SegInput::SegInput(int in_enum_type,IssmDouble* in_values,int interpolation_type_in){/*{{{*/
+
+	/*Set Enum*/
+	enum_type=in_enum_type;
+	this->interpolation_type=interpolation_type_in;
+
+	/*Set values*/
+	this->values=xNew<IssmDouble>(this->NumberofNodes(this->interpolation_type));
+	for(int i=0;i<this->NumberofNodes(this->interpolation_type);i++) values[i]=in_values[i];
+}
+/*}}}*/
+SegInput::~SegInput(){/*{{{*/
+	xDelete<IssmDouble>(this->values);
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* SegInput::copy() {/*{{{*/
+
+	return new SegInput(this->enum_type,this->values,this->interpolation_type);
+
+}
+/*}}}*/
+void SegInput::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(15)<<"   SegInput "<<setw(25)<<left<<EnumToStringx(this->enum_type)<<" [");
+	for(int i=0;i<this->NumberofNodes(this->interpolation_type);i++) _printf_(" "<<this->values[i]);
+	_printf_("]\n");
+}
+/*}}}*/
+void SegInput::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  SegInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void SegInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(SegInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(interpolation_type);
+
+	int numnodes = this->NumberofNodes(this->interpolation_type);
+	if(numnodes > 0){
+		MARSHALLING_DYNAMIC(this->values,IssmDouble,numnodes)
+	}
+	else this->values = NULL;
+}
+/*}}}*/
+int  SegInput::ObjectEnum(void){/*{{{*/
+
+	return SegInputEnum;
+
+}
+/*}}}*/
+
+/*SegInput management*/
+int SegInput::InstanceEnum(void){/*{{{*/
+
+	return this->enum_type;
+
+}
+/*}}}*/
+
+/*Object functions*/
+void SegInput::Configure(Parameters* parameters){/*{{{*/
+	/*do nothing: */
+}
+/*}}}*/
+void SegInput::GetInputAverage(IssmDouble* pvalue){/*{{{*/
+
+	int        numnodes  = this->NumberofNodes(this->interpolation_type);
+	IssmDouble numnodesd = reCast<int,IssmDouble>(numnodes);
+	IssmDouble value     = 0.;
+
+	for(int i=0;i<numnodes;i++) value+=values[i];
+	value = value/numnodesd;
+
+	*pvalue=value;
+}
+/*}}}*/
+void SegInput::GetInputDerivativeValue(IssmDouble* p, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	/*Call SegRef function*/
+	_assert_(gauss->Enum()==GaussSegEnum);
+	SegRef::GetInputDerivativeValue(p,&values[0],xyz_list,(GaussSeg*)gauss,this->interpolation_type);
+}
+/*}}}*/
+void SegInput::GetInputValue(IssmDouble* pvalue,Gauss* gauss){/*{{{*/
+
+	/*Call SegRef function*/
+	_assert_(gauss->Enum()==GaussSegEnum);
+	SegRef::GetInputValue(pvalue,&values[0],(GaussSeg*)gauss,this->interpolation_type);
+
+}
+/*}}}*/
+IssmDouble SegInput::Min(void){/*{{{*/
+
+	const int  numnodes=this->NumberofNodes(this->interpolation_type);
+	IssmDouble min=values[0];
+
+	for(int i=1;i<numnodes;i++){
+		if(values[i]<min) min=values[i];
+	}
+	return min;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/SegInput.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/SegInput.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/SegInput.h	(revision 21239)
@@ -0,0 +1,79 @@
+/*! \file SegInput.h 
+ *  \brief: header file for SegInput object
+ */
+
+#ifndef _SEGINPUT_H_
+#define _SEGINPUT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Input.h"
+#include "../Elements/SegRef.h"
+class GaussSeg;
+class Gauss;
+/*}}}*/
+
+class SegInput: public Input,public SegRef{
+
+	public:
+		int         enum_type;
+		int         interpolation_type;
+		IssmDouble* values;
+
+		/*SegInput constructors, destructors*/
+		SegInput();
+		SegInput(int enum_type,IssmDouble* values,int element_type_in);
+		~SegInput();
+
+		/*Object virtual functions definitions*/
+		Object *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int     ObjectEnum();
+
+		/*SegInput management:*/
+		void   AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");};
+		void   Configure(Parameters* parameters);
+		int  GetResultArraySize(void){_error_("not implemented");};
+		int  GetResultInterpolation(void){_error_("not implemented");};
+		int  GetResultNumberOfNodes(void){_error_("not implemented");};
+		int    InstanceEnum();
+		Input* PointwiseDivide(Input* inputB){_error_("not supported yet");};
+		Input* PointwiseMax(Input* inputB){_error_("not supported yet");};
+		Input* PointwiseMin(Input* inputB){_error_("not supported yet");};
+		void ResultToPatch(IssmDouble* values,int nodesperelement,int sid){_error_("not supported yet");};
+		Input* SpawnSegInput(int index1,int index2){_error_("not implemented yet");};
+		Input* SpawnTriaInput(int index1,int index2,int index3){_error_("not supported yet");};
+
+		/*numerics*/
+		void AXPY(Input* xinput,IssmDouble scalar){_error_("not implemented yet");};
+		void ChangeEnum(int newenumtype){_error_("not implemented yet");};
+		void Constrain(IssmDouble cm_min, IssmDouble cm_max){_error_("not implemented yet");};
+		void ConstrainMin(IssmDouble minimum){_error_("not implemented yet");};
+		void Extrude(int start){_error_("not supported yet");};
+		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
+		void GetInputAverage(IssmDouble* pvalue);
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
+		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss);
+		void GetInputValue(bool* pvalue){_error_("not implemented yet");}
+		void GetInputValue(int* pvalue){_error_("not implemented yet");}
+		void GetInputValue(IssmDouble* pvalue){_error_("not implemented yet");}
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss);
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss,IssmDouble time){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss ,int index){_error_("not implemented yet");};
+		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
+		void GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist){_error_("not implemented yet");};
+		IssmDouble InfinityNorm(void){_error_("not implemented yet");};
+		IssmDouble Max(void){_error_("not implemented yet");};
+		IssmDouble MaxAbs(void){_error_("not implemented yet");};
+		IssmDouble Min(void);
+		IssmDouble MinAbs(void){_error_("not implemented yet");};
+		void Scale(IssmDouble scale_factor){_error_("not implemented yet");};
+		void Set(IssmDouble setvalue){_error_("not implemented yet");};
+		void SquareMin(IssmDouble* psquaremin,Parameters* parameters){_error_("not implemented yet");};
+		void VerticallyIntegrate(Input* thickness_input){_error_("not supported yet");};
+
+};
+#endif  /* _SEGINPUT_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/TetraInput.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/TetraInput.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/TetraInput.cpp	(revision 21239)
@@ -0,0 +1,433 @@
+/*!\file TetraInput.c
+ * \brief: implementation of the TetraInput object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+
+/*TetraInput constructors and destructor*/
+TetraInput::TetraInput(){/*{{{*/
+	values = NULL;
+}
+/*}}}*/
+TetraInput::TetraInput(int in_enum_type,IssmDouble* in_values,int interpolation_type_in){/*{{{*/
+
+	/*Set Enum*/
+	this->enum_type=in_enum_type;
+	this->interpolation_type=interpolation_type_in;
+
+	int numnodes = this->NumberofNodes(this->interpolation_type);
+
+	/*Set values*/
+	if (numnodes > 0){
+		this->values=xNew<IssmDouble>((unsigned int)numnodes);
+		for(int i=0;i<numnodes;i++) values[i]=in_values[i];
+	}
+	else{
+		this->values = NULL;
+	}
+
+}
+/*}}}*/
+TetraInput::~TetraInput(){/*{{{*/
+	xDelete<IssmDouble>(this->values);
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* TetraInput::copy() {/*{{{*/
+
+	return new TetraInput(this->enum_type,this->values,this->interpolation_type);
+
+}
+/*}}}*/
+void TetraInput::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(15)<<"   TetraInput "<<setw(25)<<left<<EnumToStringx(this->enum_type)<<" [");
+	for(int i=0;i<this->NumberofNodes(this->interpolation_type);i++) _printf_(" "<<this->values[i]);
+	_printf_("] ("<<EnumToStringx(this->interpolation_type)<<")\n");
+}
+/*}}}*/
+void TetraInput::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  TetraInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void TetraInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(TetraInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(interpolation_type);
+
+	int numnodes = this->NumberofNodes(this->interpolation_type);
+	if(numnodes > 0){
+		MARSHALLING_DYNAMIC(this->values,IssmDouble,numnodes)
+	}
+	else this->values = NULL;
+}
+/*}}}*/
+int  TetraInput::ObjectEnum(void){/*{{{*/
+
+	return TetraInputEnum;
+
+}
+/*}}}*/
+
+/*TetraInput management*/
+int TetraInput::InstanceEnum(void){/*{{{*/
+
+	return this->enum_type;
+
+}
+/*}}}*/
+int  TetraInput::GetResultInterpolation(void){/*{{{*/
+
+	if(this->interpolation_type==P0Enum){
+		return P0Enum;
+	}
+	return P1Enum;
+
+}
+/*}}}*/
+int  TetraInput::GetResultNumberOfNodes(void){/*{{{*/
+
+	return this->NumberofNodes(this->interpolation_type);
+
+}
+/*}}}*/
+void TetraInput::ResultToPatch(IssmDouble* values,int nodesperelement,int sid){/*{{{*/
+
+	int numnodes = this->NumberofNodes(this->interpolation_type);
+
+	/*Some checks*/
+	_assert_(values);
+	_assert_(numnodes==nodesperelement);
+
+	/*Fill in arrays*/
+	for(int i=0;i<numnodes;i++) values[sid*numnodes + i] = this->values[i];
+}
+/*}}}*/
+
+/*Object functions*/
+void TetraInput::ChangeEnum(int newenumtype){/*{{{*/
+	this->enum_type=newenumtype;
+}
+/*}}}*/
+void TetraInput::GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){/*{{{*/
+
+	IssmDouble* outvalues=NULL;
+	IssmDouble* times=NULL;
+	int         numtimes;
+
+	/*this is not a transient forcing, so we only have 1 value, steady state: */
+	numtimes=1;
+	outvalues=xNew<IssmDouble>(1);
+	times=xNew<IssmDouble>(1);
+
+	this->GetInputAverage(&outvalues[0]);
+	times[0]=0.; /*we don't have a time*/
+
+	*pvalues=outvalues;
+	*ptimes=times;
+	*pnumtimes=numtimes;
+}
+/*}}}*/
+void TetraInput::GetInputAverage(IssmDouble* pvalue){/*{{{*/
+
+	int        numnodes  = this->NumberofNodes(this->interpolation_type);
+	IssmDouble numnodesd = reCast<int,IssmDouble>(numnodes);
+	IssmDouble value     = 0.;
+
+	for(int i=0;i<numnodes;i++) value+=values[i];
+	value = value/numnodesd;
+
+	*pvalue=value;
+}
+/*}}}*/
+void TetraInput::GetInputDerivativeValue(IssmDouble* p, IssmDouble* xyz_list, Gauss* gauss){/*{{{*/
+
+	/*Call TetraRef function*/
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	TetraRef::GetInputDerivativeValue(p,&values[0],xyz_list,(GaussTetra*)gauss,this->interpolation_type);
+}
+/*}}}*/
+void TetraInput::GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){/*{{{*/
+
+	IssmDouble* outvalues=NULL;
+	IssmDouble* times=NULL;
+	int         numtimes;
+
+	/*this is not a transient forcing, so we only have 1 value, steady state: */
+	numtimes=1;
+	outvalues=xNew<IssmDouble>(1);
+	times=xNew<IssmDouble>(1);
+
+	this->GetInputAverage(&outvalues[0]);
+	times[0]=currenttime; /*we don't have a time*/
+
+	*pvalues=outvalues;
+	*ptimes=times;
+	*pnumtimes=numtimes;
+}
+/*}}}*/
+void TetraInput::GetInputValue(IssmDouble* pvalue,Gauss* gauss){/*{{{*/
+
+	/*Call TetraRef function*/
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	TetraRef::GetInputValue(pvalue,&values[0],(GaussTetra*)gauss,this->interpolation_type);
+
+}
+/*}}}*/
+Input* TetraInput::SpawnTriaInput(int index1,int index2,int index3){/*{{{*/
+
+	/*output*/
+	TriaInput* outinput=NULL;
+
+	if(this->interpolation_type==P0Enum){ 
+		outinput=new TriaInput(this->enum_type,&this->values[0],P0Enum);
+	}
+	else{
+		/*Assume P1 interpolation only for now*/
+		IssmDouble newvalues[3]; 
+
+		/*Create array of indices depending on location (0=base 1=surface)*/
+		int indices[3];
+		indices[0] = index1;
+		indices[1] = index2;
+		indices[2] = index3;
+
+		/*Create new input*/
+		for(int i=0;i<3;i++){
+			_assert_(indices[i]>=0 && indices[i]<4);
+			newvalues[i]=this->values[indices[i]];
+		}
+		outinput=new TriaInput(this->enum_type,&newvalues[0],P1Enum);
+	}
+
+	/*Assign output*/
+	return outinput;
+}
+/*}}}*/
+
+/*Intermediary*/
+void TetraInput::AXPY(Input* xinput,IssmDouble scalar){/*{{{*/
+
+	const int numnodes=this->NumberofNodes(this->interpolation_type);
+	TetraInput*  xtriainput=NULL;
+
+	/*xinput is of the same type, so cast it: */
+	if(xinput->ObjectEnum()!=TetraInputEnum) _error_("Operation not permitted because xinput is of type " << EnumToStringx(xinput->ObjectEnum()));
+	xtriainput=(TetraInput*)xinput;
+	if(xtriainput->interpolation_type!=this->interpolation_type) _error_("Operation not permitted because xinput is of type " << EnumToStringx(xinput->ObjectEnum()));
+
+	/*Carry out the AXPY operation depending on type:*/
+	for(int i=0;i<numnodes;i++)this->values[i]=this->values[i]+scalar*xtriainput->values[i];
+
+}
+/*}}}*/
+void TetraInput::Configure(Parameters* parameters){/*{{{*/
+	/*do nothing: */
+}
+/*}}}*/
+void TetraInput::Constrain(IssmDouble cm_min, IssmDouble cm_max){/*{{{*/
+
+	int i;
+	const int numnodes=this->NumberofNodes(this->interpolation_type);
+
+	if(!xIsNan<IssmDouble>(cm_min)) for(i=0;i<numnodes;i++)if (this->values[i]<cm_min)this->values[i]=cm_min;
+	if(!xIsNan<IssmDouble>(cm_max)) for(i=0;i<numnodes;i++)if (this->values[i]>cm_max)this->values[i]=cm_max;
+
+}
+/*}}}*/
+void TetraInput::ConstrainMin(IssmDouble minimum){/*{{{*/
+
+	int numnodes = this->NumberofNodes(this->interpolation_type);
+	for(int i=0;i<numnodes;i++) if (values[i]<minimum) values[i]=minimum;
+}
+/*}}}*/
+void TetraInput::GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist){/*{{{*/
+	const int numvertices=4;
+	vector->SetValues(numvertices,doflist,this->values,INS_VAL);
+} /*}}}*/
+IssmDouble TetraInput::InfinityNorm(void){/*{{{*/
+
+	/*Output*/
+	IssmDouble norm=0.;
+	int numnodes=this->NumberofNodes(this->interpolation_type);
+
+	for(int i=0;i<numnodes;i++) if(fabs(values[i])>norm) norm=fabs(values[i]);
+	return norm;
+}
+/*}}}*/
+IssmDouble TetraInput::MinAbs(void){/*{{{*/
+
+	const int  numnodes=this->NumberofNodes(this->interpolation_type);
+	IssmDouble min=fabs(values[0]);
+
+	for(int i=1;i<numnodes;i++){
+		if(fabs(values[i])<min) min=fabs(values[i]);
+	}
+	return min;
+}
+/*}}}*/
+IssmDouble TetraInput::Max(void){/*{{{*/
+
+	int  numnodes=this->NumberofNodes(this->interpolation_type);
+	IssmDouble max=values[0];
+
+	for(int i=1;i<numnodes;i++){
+		if(values[i]>max) max=values[i];
+	}
+	return max;
+}
+/*}}}*/
+IssmDouble TetraInput::MaxAbs(void){/*{{{*/
+
+	int  numnodes=this->NumberofNodes(this->interpolation_type);
+	IssmDouble max=fabs(values[0]);
+
+	for(int i=1;i<numnodes;i++){
+		if(fabs(values[i])>max) max=fabs(values[i]);
+	}
+	return max;
+}
+/*}}}*/
+IssmDouble TetraInput::Min(void){/*{{{*/
+
+	const int  numnodes=this->NumberofNodes(this->interpolation_type);
+	IssmDouble min=values[0];
+
+	for(int i=1;i<numnodes;i++){
+		if(values[i]<min) min=values[i];
+	}
+	return min;
+}
+/*}}}*/
+Input* TetraInput::PointwiseDivide(Input* inputB){/*{{{*/
+
+	/*Ouput*/
+	TetraInput* outinput=NULL;
+
+	/*Intermediaries*/
+	TetraInput *xinputB  = NULL;
+	const int   numnodes = this->NumberofNodes(this->interpolation_type);
+
+	/*Check that inputB is of the same type*/
+	if(inputB->ObjectEnum()!=TetraInputEnum)     _error_("Operation not permitted because inputB is of type " << EnumToStringx(inputB->ObjectEnum()));
+	xinputB=(TetraInput*)inputB;
+	if(xinputB->interpolation_type!=this->interpolation_type) _error_("Operation not permitted because inputB is of type " << EnumToStringx(xinputB->interpolation_type));
+
+	/*Allocate intermediary*/
+	IssmDouble* AdotBvalues=xNew<IssmDouble>(numnodes);
+
+	/*Create point wise division*/
+	for(int i=0;i<numnodes;i++){
+		_assert_(xinputB->values[i]!=0);
+		AdotBvalues[i]=this->values[i]/xinputB->values[i];
+	}
+
+	/*Create new Tetra vertex input (copy of current input)*/
+	outinput=new TetraInput(this->enum_type,AdotBvalues,this->interpolation_type);
+
+	/*Return output pointer*/
+	xDelete<IssmDouble>(AdotBvalues);
+	return outinput;
+
+}
+/*}}}*/
+Input* TetraInput::PointwiseMax(Input* inputB){/*{{{*/
+
+	/*Ouput*/
+	TetraInput* outinput=NULL;
+
+	/*Intermediaries*/
+	int         i;
+	TetraInput  *xinputB   = NULL;
+	const int   numnodes  = this->NumberofNodes(this->interpolation_type);
+	IssmDouble *maxvalues = xNew<IssmDouble>(numnodes);
+
+	/*Check that inputB is of the same type*/
+	if(inputB->ObjectEnum()!=TetraInputEnum) _error_("Operation not permitted because inputB is of type " << EnumToStringx(inputB->ObjectEnum()));
+	xinputB=(TetraInput*)inputB;
+	if(xinputB->interpolation_type!=this->interpolation_type) _error_("Operation not permitted because inputB is of type " << EnumToStringx(xinputB->interpolation_type));
+
+	/*Create point wise max*/
+	for(i=0;i<numnodes;i++){
+		if(this->values[i] < xinputB->values[i]) maxvalues[i]=xinputB->values[i];
+		else maxvalues[i]=this->values[i];
+	}
+
+	/*Create new Tetra vertex input (copy of current input)*/
+	outinput=new TetraInput(this->enum_type,&maxvalues[0],this->interpolation_type);
+
+	/*Return output pointer*/
+	xDelete<IssmDouble>(maxvalues);
+	return outinput;
+
+}
+/*}}}*/
+Input* TetraInput::PointwiseMin(Input* inputB){/*{{{*/
+
+	/*Ouput*/
+	TetraInput* outinput=NULL;
+
+	/*Intermediaries*/
+	int         i;
+	TetraInput  *xinputB   = NULL;
+	const int   numnodes  = this->NumberofNodes(this->interpolation_type);
+	IssmDouble *minvalues = xNew<IssmDouble>(numnodes);
+
+	/*Check that inputB is of the same type*/
+	if(inputB->ObjectEnum()!=TetraInputEnum)       _error_("Operation not permitted because inputB is of type " << EnumToStringx(inputB->ObjectEnum()));
+	xinputB=(TetraInput*)inputB;
+	if(xinputB->interpolation_type!=this->interpolation_type) _error_("Operation not permitted because inputB is of type " << EnumToStringx(xinputB->interpolation_type));
+
+	/*Create point wise min*/
+	for(i=0;i<numnodes;i++){
+		if(this->values[i] > xinputB->values[i]) minvalues[i]=xinputB->values[i];
+		else minvalues[i]=this->values[i];
+	}
+
+	/*Create new Tetra vertex input (copy of current input)*/
+	outinput=new TetraInput(this->enum_type,&minvalues[0],this->interpolation_type);
+
+	/*Return output pointer*/
+	xDelete<IssmDouble>(minvalues);
+	return outinput;
+
+}
+/*}}}*/
+void TetraInput::Scale(IssmDouble scale_factor){/*{{{*/
+
+	const int numnodes=this->NumberofNodes(this->interpolation_type);
+	for(int i=0;i<numnodes;i++)values[i]=values[i]*scale_factor;
+}
+/*}}}*/
+void TetraInput::Set(IssmDouble setvalue){/*{{{*/
+
+	const int numnodes=this->NumberofNodes(this->interpolation_type);
+	for(int i=0;i<numnodes;i++)values[i]=setvalue;
+}
+/*}}}*/
+void TetraInput::SquareMin(IssmDouble* psquaremin,Parameters* parameters){/*{{{*/
+
+	int        numnodes=this->NumberofNodes(this->interpolation_type);
+	IssmDouble squaremin;
+
+	/*Now, figure out minimum of valuescopy: */
+	squaremin=pow(this->values[0],2);
+	for(int i=1;i<numnodes;i++){
+		if(pow(this->values[i],2)<squaremin)squaremin=pow(this->values[i],2);
+	}
+	/*Assign output pointers:*/
+	*psquaremin=squaremin;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/TetraInput.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/TetraInput.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/TetraInput.h	(revision 21239)
@@ -0,0 +1,79 @@
+/*! \file TetraInput.h 
+ *  \brief: header file for TetraInput object
+ */
+
+#ifndef _TETRAINPUT_H_
+#define _TETRAINPUT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Input.h"
+#include "../Elements/TetraRef.h"
+class Gauss;
+class Gauss;
+/*}}}*/
+
+class TetraInput: public Input,public TetraRef{
+
+	public:
+		int         enum_type;
+		int         interpolation_type;
+		IssmDouble* values;
+
+		/*TetraInput constructors, destructors*/
+		TetraInput();
+		TetraInput(int enum_type,IssmDouble* values,int element_type_in);
+		~TetraInput();
+
+		/*Object virtual functions definitions*/
+		Object *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int     ObjectEnum();
+
+		/*TetraInput management:*/
+		void   AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");};
+		void   Configure(Parameters* parameters);
+		int    GetResultArraySize(void){return 1;};
+		int    GetResultInterpolation(void);
+		int    GetResultNumberOfNodes(void);
+		int    InstanceEnum();
+		Input* PointwiseDivide(Input* inputB);
+		Input* PointwiseMax(Input* inputB);
+		Input* PointwiseMin(Input* inputB);
+		void   ResultToPatch(IssmDouble* values,int nodesperelement,int sid);
+		Input* SpawnSegInput(int index1,int index2){_error_("not supported yet");};
+		Input* SpawnTriaInput(int index1,int index2,int index3);
+
+		/*numerics*/
+		void AXPY(Input* xinput,IssmDouble scalar);
+		void ChangeEnum(int newenumtype);
+		void Constrain(IssmDouble cm_min, IssmDouble cm_max);
+		void ConstrainMin(IssmDouble minimum);
+		void Extrude(int start){_error_("not supported yet");};
+		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes);
+		void GetInputAverage(IssmDouble* pvalue);
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
+		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss);
+		void GetInputValue(bool* pvalue){_error_("not implemented yet");}
+		void GetInputValue(int* pvalue){_error_("not implemented yet");}
+		void GetInputValue(IssmDouble* pvalue){_error_("not implemented yet");}
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss);
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss,IssmDouble time){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss,int index){_error_("not implemented yet");};
+		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime);
+		void GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist);
+		IssmDouble InfinityNorm(void);
+		IssmDouble Max(void);
+		IssmDouble MaxAbs(void);
+		IssmDouble Min(void);
+		IssmDouble MinAbs(void);
+		void Scale(IssmDouble scale_factor);
+		void Set(IssmDouble setvalue);
+		void SquareMin(IssmDouble* psquaremin,Parameters* parameters);
+		void VerticallyIntegrate(Input* thickness_input){_error_("not supported yet");};
+
+};
+#endif  /* _TETRAINPUT_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/TransientInput.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/TransientInput.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/TransientInput.cpp	(revision 21239)
@@ -0,0 +1,553 @@
+/*!\file TransientInput.c
+ * \brief: implementation of the TransientInput object
+ */
+/*Headers{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*TransientInput constructors and destructor*/
+TransientInput::TransientInput(){/*{{{*/
+
+	enum_type=UNDEF;
+	inputs=NULL;
+	this->numtimesteps=0;
+	this->parameters=NULL;
+	this->timesteps=NULL;
+
+}
+/*}}}*/
+TransientInput::TransientInput(int in_enum_type)/*{{{*/
+{
+	/*Set Enum*/
+	enum_type=in_enum_type;
+
+	/*Allocate values and timesteps, and copy: */
+	this->numtimesteps=0;
+	this->timesteps=NULL;
+	inputs = new Inputs();
+	this->parameters=NULL;
+
+}
+/*}}}*/
+TransientInput::TransientInput(int in_enum_type,IssmDouble* timesin,int N){/*{{{*/
+
+	/*Set Enum*/
+	enum_type=in_enum_type;
+
+	/*Allocate values and timesteps, and copy: */
+	this->numtimesteps=N;
+	this->timesteps=xNew<IssmDouble>(N);
+	xMemCpy(this->timesteps,timesin,N);
+
+	inputs = new Inputs();
+	this->parameters=NULL;
+}
+/*}}}*/
+TransientInput::~TransientInput(){/*{{{*/
+	xDelete(this->timesteps);
+	this->timesteps=NULL;
+	this->numtimesteps=0;
+	parameters=NULL;
+	delete this->inputs;
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* TransientInput::copy() {/*{{{*/
+
+	TransientInput* output=NULL;
+
+	output = new TransientInput();
+	output->enum_type=this->enum_type;
+	output->numtimesteps=this->numtimesteps;
+	output->timesteps=xNew<IssmDouble>(this->numtimesteps);
+	xMemCpy(output->timesteps,this->timesteps,this->numtimesteps);
+	output->inputs=static_cast<Inputs*>(this->inputs->Copy());
+	output->parameters=this->parameters;
+
+	return (Object*)output;
+
+}
+/*}}}*/
+void TransientInput::DeepEcho(void){/*{{{*/
+
+	int i;
+
+	_printf_("TransientInput:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   numtimesteps: " << this->numtimesteps << "\n");
+	_printf_("---inputs: \n"); 
+	for(i=0;i<this->numtimesteps;i++){
+		_printf_("   time: " << this->timesteps[i]<<"  ");
+		((Input*)this->inputs->GetObjectByOffset(i))->Echo();
+	}
+}
+/*}}}*/
+void TransientInput::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  TransientInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void TransientInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	if (marshall_direction == MARSHALLING_BACKWARD) inputs = new Inputs();
+
+	MARSHALLING_ENUM(TransientInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(numtimesteps);
+	MARSHALLING_DYNAMIC(this->timesteps,IssmDouble,numtimesteps);
+	inputs->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+}
+/*}}}*/
+int  TransientInput::ObjectEnum(void){/*{{{*/
+
+	return TransientInputEnum;
+
+}
+/*}}}*/
+
+/*TransientInput management*/
+int TransientInput::InstanceEnum(void){/*{{{*/
+
+	return this->enum_type;
+
+}
+/*}}}*/
+Input* TransientInput::SpawnSegInput(int index1,int index2){/*{{{*/
+
+	/*output*/
+	TransientInput* outinput=NULL;
+
+	/*Create new Transientinput (copy of current input)*/
+	outinput=new TransientInput();
+	outinput->enum_type=this->enum_type;
+	outinput->numtimesteps=this->numtimesteps;
+	outinput->timesteps=xNew<IssmDouble>(this->numtimesteps);
+	xMemCpy(outinput->timesteps,this->timesteps,this->numtimesteps);
+	outinput->inputs=(Inputs*)this->inputs->SpawnSegInputs(index1,index2);
+	outinput->parameters=this->parameters;
+
+	/*Assign output*/
+	return outinput;
+
+}
+/*}}}*/
+Input* TransientInput::SpawnTriaInput(int index1,int index2,int index3){/*{{{*/
+
+	/*output*/
+	TransientInput* outinput=NULL;
+
+	/*Create new Transientinput (copy of current input)*/
+	outinput=new TransientInput();
+	outinput->enum_type=this->enum_type;
+	outinput->numtimesteps=this->numtimesteps;
+	outinput->timesteps=xNew<IssmDouble>(this->numtimesteps);
+	xMemCpy(outinput->timesteps,this->timesteps,this->numtimesteps);
+	outinput->inputs=(Inputs*)this->inputs->SpawnTriaInputs(index1,index2,index3);
+	outinput->parameters=this->parameters;
+
+	/*Assign output*/
+	return outinput;
+
+}
+/*}}}*/
+
+/*Object functions*/
+void TransientInput::ChangeEnum(int newenumtype){/*{{{*/
+	this->enum_type=newenumtype;
+}
+/*}}}*/
+void TransientInput::GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){/*{{{*/
+
+	int i;
+	IssmDouble* times=NULL;
+	IssmDouble* values=NULL;
+
+	/*allocate: */
+	times=xNew<IssmDouble>(this->numtimesteps);
+	values=xNew<IssmDouble>(this->numtimesteps);
+
+	for(i=0;i<numtimesteps;i++){
+		Input* input=(Input*)this->inputs->GetObjectByOffset(i);
+		input->GetInputAverage(values+i);
+		times[i]=this->timesteps[i];
+	}
+
+	*pvalues=values;
+	*ptimes=times;
+	*pnumtimes=numtimesteps;
+}
+/*}}}*/
+void TransientInput::GetInputAverage(IssmDouble* pvalue){/*{{{*/
+
+	IssmDouble time;
+
+	/*First, recover current time from parameters: */
+	parameters->FindParam(&time,TimeEnum);
+
+	/*Retrieve interpolated values for this time step: */
+	Input* input=GetTimeInput(time);
+
+	/*Call input function*/
+	input->GetInputAverage(pvalue);
+
+	delete input;
+
+}
+/*}}}*/
+void TransientInput::GetInputDerivativeValue(IssmDouble* p, IssmDouble* xyz_list, Gauss* gauss){/*{{{*/
+
+	IssmDouble time;
+
+	/*First, recover current time from parameters: */
+	parameters->FindParam(&time,TimeEnum);
+
+	/*Retrieve interpolated values for this time step: */
+	Input* input=GetTimeInput(time);
+
+	/*Call input function*/
+	input->GetInputDerivativeValue(p,xyz_list,gauss);
+
+	delete input;
+}
+/*}}}*/
+void TransientInput::GetInputValue(IssmDouble* pvalue,Gauss* gauss){/*{{{*/
+	IssmDouble time;
+
+	/*First, recover current time from parameters: */
+	this->parameters->FindParam(&time,TimeEnum);
+
+	/*Retrieve interpolated values for this time step: */
+	Input* input=GetTimeInput(time);
+
+	/*Call input function*/
+	input->GetInputValue(pvalue,gauss);
+
+	delete input;
+}
+/*}}}*/
+void TransientInput::GetInputValue(IssmDouble* pvalue,Gauss* gauss,IssmDouble time){/*{{{*/
+
+	/*Retrieve interpolated values for this time step: */
+	Input* input=GetTimeInput(time);
+
+	/*Call input function*/
+	input->GetInputValue(pvalue,gauss);
+
+	delete input;
+}
+/*}}}*/
+void TransientInput::GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){/*{{{*/
+
+	int         i;
+	IssmDouble *times  = NULL;
+	IssmDouble *values = NULL;
+	int         numsteps;
+	bool        iscurrenttime_included = false;
+
+	/*Figure out how many time steps we are going to return: */
+	numsteps=0;
+	for(i=0;i<numtimesteps;i++){
+		if(this->timesteps[i]==currenttime)iscurrenttime_included=true;
+		if (this->timesteps[i]>currenttime)break;
+		else numsteps++;
+	}
+	if(iscurrenttime_included==false)numsteps++;
+
+	/*allocate: */
+	times=xNew<IssmDouble>(numsteps);
+	values=xNew<IssmDouble>(numsteps);
+
+	for(i=0;i<numsteps;i++){
+
+		if((iscurrenttime_included==false) && (i==(numsteps-1))){
+
+			/*Retrieve interpolated values for current time step: */
+			Input* input=GetTimeInput(currenttime);
+			input->GetInputAverage(values+i);
+			times[i]=currenttime;
+		}
+		else{
+			Input* input=(Input*)this->inputs->GetObjectByOffset(i);
+			input->GetInputAverage(values+i);
+			times[i]=this->timesteps[i];
+		}
+	}
+
+	*pvalues=values;
+	*ptimes=times;
+	*pnumtimes=numtimesteps;
+}
+/*}}}*/
+
+/*Intermediary*/
+void TransientInput::AddTimeInput(Input* input,IssmDouble time){/*{{{*/
+
+	/*insert values at time step: */
+	if (this->numtimesteps>0 && time<=this->timesteps[this->numtimesteps-1]) _error_("timestep values must increase sequentially");
+
+	//copy timesteps, add the new time, delete previous timesteps, and add the new input: inputs->AddObject(input);
+	IssmDouble* old_timesteps=NULL;
+
+	if (this->numtimesteps > 0){
+		old_timesteps=xNew<IssmDouble>(this->numtimesteps);
+		xMemCpy(old_timesteps,this->timesteps,this->numtimesteps);
+		xDelete(this->timesteps);
+	}
+
+	this->numtimesteps=this->numtimesteps+1;
+	this->timesteps=xNew<IssmDouble>(this->numtimesteps);
+
+	if (this->numtimesteps > 1){
+		xMemCpy(this->timesteps,old_timesteps,this->numtimesteps-1);
+		xDelete(old_timesteps);
+	}
+
+	/*go ahead and plug: */
+	this->timesteps[this->numtimesteps-1]=time;
+	inputs->AddObject(input);
+
+}
+/*}}}*/
+void TransientInput::AddTimeInput(Input* input){/*{{{*/
+
+	_assert_(this->inputs->Size()<this->numtimesteps);
+	inputs->AddObject(input);
+
+}
+/*}}}*/
+void TransientInput::Configure(Parameters* parameters){/*{{{*/
+	this->parameters=parameters;
+}
+/*}}}*/
+void TransientInput::Extrude(int start){/*{{{*/
+
+	for(int i=0;i<this->numtimesteps;i++){
+		((Input*)this->inputs->GetObjectByOffset(i))->Extrude(start);
+	}
+}
+/*}}}*/
+int  TransientInput::GetResultArraySize(void){/*{{{*/
+
+	return 1;
+}
+/*}}}*/
+int  TransientInput::GetResultInterpolation(void){/*{{{*/
+
+	IssmDouble time;
+	int        output;
+
+	parameters->FindParam(&time,TimeEnum);
+	Input* input=GetTimeInput(time);
+	output = input->GetResultInterpolation();
+
+	/*Clean up and return*/
+	delete input;
+	return output;
+
+}
+/*}}}*/
+int  TransientInput::GetResultNumberOfNodes(void){/*{{{*/
+
+	IssmDouble time;
+	int        output;
+
+	parameters->FindParam(&time,TimeEnum);
+	Input* input=GetTimeInput(time);
+	output = input->GetResultNumberOfNodes();
+
+	/*Clean up and return*/
+	delete input;
+	return output;
+
+}
+/*}}}*/
+Input* TransientInput::GetTimeInput(IssmDouble intime){/*{{{*/
+
+	IssmDouble deltat;
+	IssmDouble alpha1,alpha2;
+	int        found;
+	int        offset;
+	bool       interp;
+
+	/*First, recover interp bool: */
+	this->parameters->FindParam(&interp,TimesteppingInterpForcingsEnum);
+
+	Input *input  = NULL;
+	Input *input1 = NULL;
+	Input *input2 = NULL;
+
+	/*go through the timesteps, and figure out which interval we 
+	 *fall within. Then interpolate the values on this interval: */
+	found=binary_search(&offset,intime,this->timesteps,this->numtimesteps);
+	if(!found) _error_("Input not found (is TransientInput sorted ?)");
+
+	if (offset==-1){
+		/*get values for the first time: */
+		_assert_(intime<this->timesteps[0]);
+		input=(Input*)((Input*)this->inputs->GetObjectByOffset(0))->copy();
+	}
+	else if(offset==(this->numtimesteps-1) || !interp){
+		/*get values for the last time: */
+		_assert_(intime>=this->timesteps[offset]);
+		input=(Input*)((Input*)this->inputs->GetObjectByOffset(offset))->copy();
+	}
+	else {
+		/*get values between two times [offset:offset+1[, Interpolate linearly*/
+		_assert_(intime>=this->timesteps[offset] && intime<this->timesteps[offset+1]);
+		deltat=this->timesteps[offset+1]-this->timesteps[offset];
+		alpha2=(intime-this->timesteps[offset])/deltat;
+		alpha1=(1.0-alpha2);
+
+		input1=(Input*)this->inputs->GetObjectByOffset(offset); 
+		input2=(Input*)this->inputs->GetObjectByOffset(offset+1);
+
+		input=(Input*)input1->copy();
+		input->Scale(alpha1);
+		input->AXPY(input2,alpha2);
+	}
+
+	/*Assign output pointer*/
+	return input;
+}
+/*}}}*/
+void TransientInput::GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist){/*{{{*/
+
+	IssmDouble time;
+
+	/*First, recover current time from parameters: */
+	parameters->FindParam(&time,TimeEnum);
+
+	/*Retrieve interpolated values for this time step: */
+	Input* input=GetTimeInput(time);
+
+	/*Call input function*/
+	input->GetVectorFromInputs(vector,doflist);
+
+	delete input;
+
+} /*}}}*/
+IssmDouble TransientInput::InfinityNorm(void){/*{{{*/
+
+	IssmDouble time;
+	IssmDouble infnorm;
+
+	/*First, recover current time from parameters: */
+	parameters->FindParam(&time,TimeEnum);
+
+   /*Retrieve interpolated values for this time step: */
+	Input* input=GetTimeInput(time);
+
+	/*Call input function*/
+	infnorm=input->InfinityNorm();
+
+	/*Clean-up and return*/
+	delete input;
+	return infnorm;
+}
+/*}}}*/
+IssmDouble TransientInput::Max(void){/*{{{*/
+
+	IssmDouble time;
+	IssmDouble max;
+
+	/*First, recover current time from parameters: */
+	parameters->FindParam(&time,TimeEnum);
+
+   /*Retrieve interpolated values for this time step: */
+	Input* input=GetTimeInput(time);
+
+	/*Call input function*/
+	max=input->Max();
+
+	delete input;
+
+	return max;
+}
+/*}}}*/
+IssmDouble TransientInput::MaxAbs(void){/*{{{*/
+
+	IssmDouble time;
+	IssmDouble maxabs;
+
+	/*First, recover current time from parameters: */
+	parameters->FindParam(&time,TimeEnum);
+
+	/*Retrieve interpolated values for this time step: */
+	Input* input=GetTimeInput(time);
+
+	/*Call input function*/
+	maxabs=input->MaxAbs();
+
+	/*Clean-up and return*/
+	delete input;
+	return maxabs;
+
+}
+/*}}}*/
+IssmDouble TransientInput::Min(void){/*{{{*/
+
+	IssmDouble time;
+	IssmDouble min;
+
+	/*First, recover current time from parameters: */
+	parameters->FindParam(&time,TimeEnum);
+
+   /*Retrieve interpolated values for this time step: */
+	Input* input=GetTimeInput(time);
+
+	/*Call input function*/
+	min=input->Min();
+
+	/*Clean-up and return*/
+	delete input;
+	return min;
+
+}
+/*}}}*/
+IssmDouble TransientInput::MinAbs(void){/*{{{*/
+
+	IssmDouble time;
+	IssmDouble minabs;
+
+	/*First, recover current time from parameters: */
+	parameters->FindParam(&time,TimeEnum);
+
+	/*Retrieve interpolated values for this time step: */
+	Input* input=GetTimeInput(time);
+
+	/*Call input function*/
+	minabs=input->MinAbs();
+
+	/*Clean-up and return*/
+	delete input;
+	return minabs;
+}
+/*}}}*/
+void TransientInput::SquareMin(IssmDouble* psquaremin,Parameters* parameters){/*{{{*/
+
+	IssmDouble time;
+
+	/*First, recover current time from parameters: */
+	parameters->FindParam(&time,TimeEnum);
+
+   /*Retrieve interpolated values for this time step: */
+	Input* input=GetTimeInput(time);
+
+	/*Call input function*/
+	input->SquareMin(psquaremin,parameters);
+
+	delete input;
+
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/TransientInput.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/TransientInput.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/TransientInput.h	(revision 21239)
@@ -0,0 +1,86 @@
+/*! \file TransientInput.h 
+ *  \brief: header file for transientinput object
+ */
+
+#ifndef _TRANSIENTINPUT_H_
+#define _TRANSIENTINPUT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Input.h"
+class Gauss;
+class Parameters;
+class Gauss;
+/*}}}*/
+
+class TransientInput: public Input{
+
+	public:
+		int         enum_type;
+		int         numtimesteps;
+		Inputs     *inputs;
+		IssmDouble *timesteps;
+		Parameters *parameters;     //to find current time.
+
+		/*TransientInput constructors, destructors: {{{*/
+		TransientInput();
+		TransientInput(int enum_type);
+		TransientInput(int in_enum_type,IssmDouble* times,int N);
+		~TransientInput();
+		void AddTimeInput(Input* input,IssmDouble time);
+		void AddTimeInput(Input* input);
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		Object* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*TransientInput management: {{{*/
+		void Configure(Parameters* parameters);
+		int  GetResultArraySize(void);
+		int  GetResultInterpolation(void);
+		int  GetResultNumberOfNodes(void);
+		int    InstanceEnum();
+		Input* PointwiseDivide(Input* input_in){_error_("not implemented yet");};
+		Input* PointwiseMax(Input* input_in){_error_("not implemented yet");};
+		Input* PointwiseMin(Input* input_in){_error_("not implemented yet");};
+		void ResultToPatch(IssmDouble* values,int nodesperelement,int sid){_error_("not supported yet");};
+		Input* SpawnSegInput(int index1,int index2);
+		Input* SpawnTriaInput(int index1,int index2,int index3);
+		/*}}}*/
+		/*numerics: {{{*/
+		void AXPY(Input* xforcing,IssmDouble scalar){_error_("not implemented yet");};
+		void ChangeEnum(int newenumtype);
+		void Constrain(IssmDouble cm_min, IssmDouble cm_max){_error_("not implemented yet");};
+		void ConstrainMin(IssmDouble minimum){_error_("not implemented yet");};
+		void Extrude(int start);
+		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes);
+		void GetInputAverage(IssmDouble* pvalue);
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
+		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss);
+		void GetInputValue(bool* pvalue){_error_("not implemented yet");};
+		void GetInputValue(int* pvalue){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss);
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss,IssmDouble time);
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss ,int index){_error_("not implemented yet");};
+		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime);
+		Input* GetTimeInput(IssmDouble time);
+		void GetTimeValues(IssmDouble* values,IssmDouble time){_error_("not implemented yet");};
+		void GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist);
+		IssmDouble InfinityNorm(void);
+		IssmDouble Max(void);
+		IssmDouble MaxAbs(void);
+		IssmDouble Min(void);
+		IssmDouble MinAbs(void);
+		void Scale(IssmDouble scale_factor){_error_("not implemented yet");};
+		void Set(IssmDouble setvalue){_error_("Set not implemented yet");};
+		void SquareMin(IssmDouble* psquaremin,Parameters* parameters);
+		void VerticallyIntegrate(Input* thickness_forcing){_error_("not supported yet");};
+		/*}}}*/
+
+};
+#endif  /* _TRANSIENTINPUT_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/TriaInput.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/TriaInput.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/TriaInput.cpp	(revision 21239)
@@ -0,0 +1,466 @@
+/*!\file TriaInput.c
+ * \brief: implementation of the TriaInput object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+
+/*TriaInput constructors and destructor*/
+TriaInput::TriaInput(){/*{{{*/
+	values = NULL;
+}
+/*}}}*/
+TriaInput::TriaInput(int in_enum_type,IssmDouble* in_values,int interpolation_type_in){/*{{{*/
+
+	/*Set Enum*/
+	this->enum_type=in_enum_type;
+	this->interpolation_type=interpolation_type_in;
+
+	int numnodes = this->NumberofNodes(this->interpolation_type);
+
+	/*Set values*/
+	if (numnodes > 0){
+		this->values=xNew<IssmDouble>((unsigned int)numnodes);
+		for(int i=0;i<numnodes;i++) values[i]=in_values[i];
+	}
+	else{
+		this->values = NULL;
+	}
+}
+/*}}}*/
+TriaInput::~TriaInput(){/*{{{*/
+	xDelete<IssmDouble>(this->values);
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* TriaInput::copy() {/*{{{*/
+
+	return new TriaInput(this->enum_type,this->values,this->interpolation_type);
+
+}
+/*}}}*/
+void TriaInput::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(15)<<"   TriaInput "<<setw(25)<<left<<EnumToStringx(this->enum_type)<<" [");
+	for(int i=0;i<this->NumberofNodes(this->interpolation_type);i++) _printf_(" "<<this->values[i]);
+	_printf_("] ("<<EnumToStringx(this->interpolation_type)<<")\n");
+}
+/*}}}*/
+void TriaInput::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  TriaInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void TriaInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(TriaInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(interpolation_type);
+
+	int numnodes = this->NumberofNodes(this->interpolation_type);
+	if(numnodes > 0){
+		MARSHALLING_DYNAMIC(this->values,IssmDouble,numnodes)
+	}
+	else this->values = NULL;
+}
+/*}}}*/
+int  TriaInput::ObjectEnum(void){/*{{{*/
+
+	return TriaInputEnum;
+
+}
+/*}}}*/
+
+/*TriaInput management*/
+int TriaInput::InstanceEnum(void){/*{{{*/
+
+	return this->enum_type;
+
+}
+/*}}}*/
+int  TriaInput::GetResultArraySize(void){/*{{{*/
+
+	return 1;
+
+}
+/*}}}*/
+int  TriaInput::GetResultInterpolation(void){/*{{{*/
+
+	if(this->interpolation_type==P0Enum){
+		return P0Enum;
+	}
+	return P1Enum;
+
+}
+/*}}}*/
+int  TriaInput::GetResultNumberOfNodes(void){/*{{{*/
+
+	return this->NumberofNodes(this->interpolation_type);
+
+}
+/*}}}*/
+void TriaInput::ResultToPatch(IssmDouble* values,int nodesperelement,int sid){/*{{{*/
+
+	int numnodes = this->NumberofNodes(this->interpolation_type);
+
+	/*Some checks*/
+	_assert_(values);
+	_assert_(numnodes==nodesperelement);
+
+	/*Fill in arrays*/
+	for(int i=0;i<numnodes;i++) values[sid*numnodes + i] = this->values[i];
+}
+/*}}}*/
+Input* TriaInput::SpawnSegInput(int index1,int index2){/*{{{*/
+
+	/*output*/
+	SegInput* outinput=NULL;
+
+	if(this->interpolation_type==P0Enum){ 
+		outinput=new SegInput(this->enum_type,&this->values[0],P0Enum);
+	}
+	else{
+		/*Assume P1 interpolation only for now*/
+		IssmDouble newvalues[2];
+
+		/*Create array of indices depending on location (0=base 1=surface)*/
+		newvalues[0]=this->values[index1];
+		newvalues[1]=this->values[index2];
+
+		/*Create new Seg input*/
+		outinput=new SegInput(this->enum_type,&newvalues[0],P1Enum);
+	}
+
+	/*Assign output*/
+	return outinput;
+
+}
+/*}}}*/
+Input* TriaInput::SpawnTriaInput(int index1,int index2,int index3){/*{{{*/
+
+	/*output*/
+	TriaInput* outinput=NULL;
+
+	/*Create new Tria input (copy of current input)*/
+	outinput=new TriaInput(this->enum_type,&this->values[0],this->interpolation_type);
+
+	/*Assign output*/
+	return outinput;
+
+}
+/*}}}*/
+
+/*Object functions*/
+void TriaInput::ChangeEnum(int newenumtype){/*{{{*/
+	this->enum_type=newenumtype;
+}
+/*}}}*/
+void TriaInput::GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){/*{{{*/
+
+	IssmDouble* outvalues=NULL;
+	IssmDouble* times=NULL;
+	int         numtimes;
+
+	/*this is not a transient forcing, so we only have 1 value, steady state: */
+	numtimes=1;
+	outvalues=xNew<IssmDouble>(1);
+	times=xNew<IssmDouble>(1);
+
+	this->GetInputAverage(&outvalues[0]);
+	times[0]=0.; /*we don't have a time*/
+
+	*pvalues=outvalues;
+	*ptimes=times;
+	*pnumtimes=numtimes;
+}
+/*}}}*/
+void TriaInput::GetInputAverage(IssmDouble* pvalue){/*{{{*/
+
+	int        numnodes  = this->NumberofNodes(this->interpolation_type);
+	IssmDouble numnodesd = reCast<int,IssmDouble>(numnodes);
+	IssmDouble value     = 0.;
+
+	for(int i=0;i<numnodes;i++) value+=values[i];
+	value = value/numnodesd;
+
+	*pvalue=value;
+}
+/*}}}*/
+void TriaInput::GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){/*{{{*/
+
+	int        numnodes  = this->NumberofNodes(this->interpolation_type);
+	IssmDouble numnodesd = reCast<int,IssmDouble>(numnodes);
+	IssmDouble dvalue[3];
+
+	derivativevalues[0] = 0.;
+	derivativevalues[1] = 0.;
+
+	GaussTria* gauss=new GaussTria();
+	for(int iv=0;iv<numnodes;iv++){
+		gauss->GaussNode(this->interpolation_type,iv);
+		this->GetInputDerivativeValue(&dvalue[0],xyz_list,gauss);
+
+		derivativevalues[0] += dvalue[0]/numnodesd;
+		derivativevalues[1] += dvalue[1]/numnodesd;
+	}
+	delete gauss;
+}
+/*}}}*/
+void TriaInput::GetInputDerivativeValue(IssmDouble* p, IssmDouble* xyz_list, Gauss* gauss){/*{{{*/
+
+	/*Call TriaRef function*/
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	TriaRef::GetInputDerivativeValue(p,&values[0],xyz_list,(GaussTria*)gauss,this->interpolation_type);
+}
+/*}}}*/
+void TriaInput::GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){/*{{{*/
+
+	IssmDouble* outvalues=NULL;
+	IssmDouble* times=NULL;
+	int         numtimes;
+
+	/*this is not a transient forcing, so we only have 1 value, steady state: */
+	numtimes=1;
+	outvalues=xNew<IssmDouble>(1);
+	times=xNew<IssmDouble>(1);
+
+	this->GetInputAverage(&outvalues[0]);
+	times[0]=currenttime; /*we don't have a time*/
+
+	*pvalues=outvalues;
+	*ptimes=times;
+	*pnumtimes=numtimes;
+}
+/*}}}*/
+void TriaInput::GetInputValue(IssmDouble* pvalue,Gauss* gauss){/*{{{*/
+
+	/*Call TriaRef function*/
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	TriaRef::GetInputValue(pvalue,&values[0],(GaussTria*)gauss,this->interpolation_type);
+
+}
+/*}}}*/
+
+/*Intermediary*/
+void TriaInput::AXPY(Input* xinput,IssmDouble scalar){/*{{{*/
+
+	const int numnodes=this->NumberofNodes(this->interpolation_type);
+	TriaInput*  xtriainput=NULL;
+
+	/*xinput is of the same type, so cast it: */
+	if(xinput->ObjectEnum()!=TriaInputEnum) _error_("Operation not permitted because xinput is of type " << EnumToStringx(xinput->ObjectEnum()));
+	xtriainput=(TriaInput*)xinput;
+	if(xtriainput->interpolation_type!=this->interpolation_type) _error_("Operation not permitted because xinput is of type " << EnumToStringx(xinput->ObjectEnum()));
+
+	/*Carry out the AXPY operation depending on type:*/
+	for(int i=0;i<numnodes;i++)this->values[i]=this->values[i]+scalar*xtriainput->values[i];
+
+}
+/*}}}*/
+void TriaInput::Configure(Parameters* parameters){/*{{{*/
+	/*do nothing: */
+}
+/*}}}*/
+void TriaInput::Constrain(IssmDouble cm_min, IssmDouble cm_max){/*{{{*/
+
+	int i;
+	const int numnodes=this->NumberofNodes(this->interpolation_type);
+
+	if(!xIsNan<IssmDouble>(cm_min)) for(i=0;i<numnodes;i++)if (this->values[i]<cm_min)this->values[i]=cm_min;
+	if(!xIsNan<IssmDouble>(cm_max)) for(i=0;i<numnodes;i++)if (this->values[i]>cm_max)this->values[i]=cm_max;
+
+}
+/*}}}*/
+void TriaInput::ConstrainMin(IssmDouble minimum){/*{{{*/
+
+	int numnodes = this->NumberofNodes(this->interpolation_type);
+	for(int i=0;i<numnodes;i++) if (values[i]<minimum) values[i]=minimum;
+}
+/*}}}*/
+void TriaInput::GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist){/*{{{*/
+	const int numvertices=3;
+	vector->SetValues(numvertices,doflist,this->values,INS_VAL);
+} /*}}}*/
+IssmDouble TriaInput::InfinityNorm(void){/*{{{*/
+
+	/*Output*/
+	IssmDouble norm=0.;
+	int numnodes=this->NumberofNodes(this->interpolation_type);
+
+	for(int i=0;i<numnodes;i++) if(fabs(values[i])>norm) norm=fabs(values[i]);
+	return norm;
+}
+/*}}}*/
+IssmDouble TriaInput::Max(void){/*{{{*/
+
+	int  numnodes=this->NumberofNodes(this->interpolation_type);
+	IssmDouble max=values[0];
+
+	for(int i=1;i<numnodes;i++){
+		if(values[i]>max) max=values[i];
+	}
+	return max;
+}
+/*}}}*/
+IssmDouble TriaInput::MaxAbs(void){/*{{{*/
+
+	int  numnodes=this->NumberofNodes(this->interpolation_type);
+	IssmDouble max=fabs(values[0]);
+
+	for(int i=1;i<numnodes;i++){
+		if(fabs(values[i])>max) max=fabs(values[i]);
+	}
+	return max;
+}
+/*}}}*/
+IssmDouble TriaInput::Min(void){/*{{{*/
+
+	const int  numnodes=this->NumberofNodes(this->interpolation_type);
+	IssmDouble min=values[0];
+
+	for(int i=1;i<numnodes;i++){
+		if(values[i]<min) min=values[i];
+	}
+	return min;
+}
+/*}}}*/
+IssmDouble TriaInput::MinAbs(void){/*{{{*/
+
+	const int  numnodes=this->NumberofNodes(this->interpolation_type);
+	IssmDouble min=fabs(values[0]);
+
+	for(int i=1;i<numnodes;i++){
+		if(fabs(values[i])<min) min=fabs(values[i]);
+	}
+	return min;
+}
+/*}}}*/
+Input* TriaInput::PointwiseMax(Input* inputB){/*{{{*/
+
+	/*Ouput*/
+	TriaInput* outinput=NULL;
+
+	/*Intermediaries*/
+	int         i;
+	TriaInput  *xinputB   = NULL;
+	const int   numnodes  = this->NumberofNodes(this->interpolation_type);
+	IssmDouble *maxvalues = xNew<IssmDouble>(numnodes);
+
+	/*Check that inputB is of the same type*/
+	if(inputB->ObjectEnum()!=TriaInputEnum) _error_("Operation not permitted because inputB is of type " << EnumToStringx(inputB->ObjectEnum()));
+	xinputB=(TriaInput*)inputB;
+	if(xinputB->interpolation_type!=this->interpolation_type) _error_("Operation not permitted because inputB is of type " << EnumToStringx(xinputB->interpolation_type));
+
+	/*Create point wise max*/
+	for(i=0;i<numnodes;i++){
+		if(this->values[i] < xinputB->values[i]) maxvalues[i]=xinputB->values[i];
+		else maxvalues[i]=this->values[i];
+	}
+
+	/*Create new Tria vertex input (copy of current input)*/
+	outinput=new TriaInput(this->enum_type,&maxvalues[0],this->interpolation_type);
+
+	/*Return output pointer*/
+	xDelete<IssmDouble>(maxvalues);
+	return outinput;
+
+}
+/*}}}*/
+Input* TriaInput::PointwiseMin(Input* inputB){/*{{{*/
+
+	/*Ouput*/
+	TriaInput* outinput=NULL;
+
+	/*Intermediaries*/
+	int         i;
+	TriaInput  *xinputB   = NULL;
+	const int   numnodes  = this->NumberofNodes(this->interpolation_type);
+	IssmDouble *minvalues = xNew<IssmDouble>(numnodes);
+
+	/*Check that inputB is of the same type*/
+	if(inputB->ObjectEnum()!=TriaInputEnum)       _error_("Operation not permitted because inputB is of type " << EnumToStringx(inputB->ObjectEnum()));
+	xinputB=(TriaInput*)inputB;
+	if(xinputB->interpolation_type!=this->interpolation_type) _error_("Operation not permitted because inputB is of type " << EnumToStringx(xinputB->interpolation_type));
+
+	/*Create point wise min*/
+	for(i=0;i<numnodes;i++){
+		if(this->values[i] > xinputB->values[i]) minvalues[i]=xinputB->values[i];
+		else minvalues[i]=this->values[i];
+	}
+
+	/*Create new Tria vertex input (copy of current input)*/
+	outinput=new TriaInput(this->enum_type,&minvalues[0],this->interpolation_type);
+
+	/*Return output pointer*/
+	xDelete<IssmDouble>(minvalues);
+	return outinput;
+
+}
+/*}}}*/
+Input* TriaInput::PointwiseDivide(Input* inputB){/*{{{*/
+
+	/*Ouput*/
+	TriaInput* outinput=NULL;
+
+	/*Intermediaries*/
+	TriaInput *xinputB  = NULL;
+	const int   numnodes = this->NumberofNodes(this->interpolation_type);
+
+	/*Check that inputB is of the same type*/
+	if(inputB->ObjectEnum()!=TriaInputEnum)     _error_("Operation not permitted because inputB is of type " << EnumToStringx(inputB->ObjectEnum()));
+	xinputB=(TriaInput*)inputB;
+	if(xinputB->interpolation_type!=this->interpolation_type) _error_("Operation not permitted because inputB is of type " << EnumToStringx(xinputB->interpolation_type));
+
+	/*Allocate intermediary*/
+	IssmDouble* AdotBvalues=xNew<IssmDouble>(numnodes);
+
+	/*Create point wise division*/
+	for(int i=0;i<numnodes;i++){
+		_assert_(xinputB->values[i]!=0);
+		AdotBvalues[i]=this->values[i]/xinputB->values[i];
+	}
+
+	/*Create new Tria vertex input (copy of current input)*/
+	outinput=new TriaInput(this->enum_type,AdotBvalues,this->interpolation_type);
+
+	/*Return output pointer*/
+	xDelete<IssmDouble>(AdotBvalues);
+	return outinput;
+
+}
+/*}}}*/
+void TriaInput::Scale(IssmDouble scale_factor){/*{{{*/
+
+	const int numnodes=this->NumberofNodes(this->interpolation_type);
+	for(int i=0;i<numnodes;i++)values[i]=values[i]*scale_factor;
+}
+/*}}}*/
+void TriaInput::Set(IssmDouble setvalue){/*{{{*/
+
+	const int numnodes=this->NumberofNodes(this->interpolation_type);
+	for(int i=0;i<numnodes;i++)values[i]=setvalue;
+}
+/*}}}*/
+void TriaInput::SquareMin(IssmDouble* psquaremin,Parameters* parameters){/*{{{*/
+
+	int        numnodes=this->NumberofNodes(this->interpolation_type);
+	IssmDouble squaremin;
+
+	/*Now, figure out minimum of valuescopy: */
+	squaremin=pow(this->values[0],2);
+	for(int i=1;i<numnodes;i++){
+		if(pow(this->values[i],2)<squaremin)squaremin=pow(this->values[i],2);
+	}
+	/*Assign output pointers:*/
+	*psquaremin=squaremin;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/TriaInput.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/TriaInput.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Inputs/TriaInput.h	(revision 21239)
@@ -0,0 +1,79 @@
+/*! \file TriaInput.h 
+ *  \brief: header file for TriaInput object
+ */
+
+#ifndef _TRIAINPUT_H_
+#define _TRIAINPUT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Input.h"
+#include "../Elements/TriaRef.h"
+class Gauss;
+class Gauss;
+/*}}}*/
+
+class TriaInput: public Input,public TriaRef{
+
+	public:
+		int         enum_type;
+		int         interpolation_type;
+		IssmDouble* values;
+
+		/*TriaInput constructors, destructors*/
+		TriaInput();
+		TriaInput(int enum_type,IssmDouble* values,int element_type_in);
+		~TriaInput();
+
+		/*Object virtual functions definitions*/
+		Object *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int     ObjectEnum();
+
+		/*TriaInput management:*/
+		void   AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");};
+		void   Configure(Parameters* parameters);
+		int    GetResultArraySize(void);
+		int    GetResultInterpolation(void);
+		int    GetResultNumberOfNodes(void);
+		int    InstanceEnum();
+		Input* PointwiseDivide(Input* inputB);
+		Input* PointwiseMax(Input* inputB);
+		Input* PointwiseMin(Input* inputB);
+		void   ResultToPatch(IssmDouble* values,int nodesperelement,int sid);
+		Input* SpawnSegInput(int index1,int index2);
+		Input* SpawnTriaInput(int index1,int index2,int index3);
+
+		/*numerics*/
+		void AXPY(Input* xinput,IssmDouble scalar);
+		void ChangeEnum(int newenumtype);
+		void Constrain(IssmDouble cm_min, IssmDouble cm_max);
+		void ConstrainMin(IssmDouble minimum);
+		void Extrude(int start){_error_("not supported yet");};
+		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes);
+		void GetInputAverage(IssmDouble* pvalue);
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list);
+		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss);
+		void GetInputValue(bool* pvalue){_error_("not implemented yet");}
+		void GetInputValue(int* pvalue){_error_("not implemented yet");}
+		void GetInputValue(IssmDouble* pvalue){_error_("not implemented yet (Input is "<<EnumToStringx(this->enum_type)<<")");}//{_error_("not implemented yet");}
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss);
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss,IssmDouble time){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss,int index){_error_("not implemented yet");};
+		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime);
+		void GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist);
+		IssmDouble InfinityNorm(void);
+		IssmDouble Max(void);
+		IssmDouble MaxAbs(void);
+		IssmDouble Min(void);
+		IssmDouble MinAbs(void);
+		void Scale(IssmDouble scale_factor);
+		void Set(IssmDouble setvalue);
+		void SquareMin(IssmDouble* psquaremin,Parameters* parameters);
+		void VerticallyIntegrate(Input* thickness_input){_error_("not supported yet");};
+
+};
+#endif  /* _TRIAINPUT_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/IoModel.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/IoModel.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/IoModel.cpp	(revision 21239)
@@ -0,0 +1,2527 @@
+/*! \file IoModel.cpp
+ * \brief  file containing the methods that will help in processing the input data coming 
+ * into ISSM, from Matlab, or through a binary file opened for reading.
+ */
+
+/*CODES:
+ * 1: boolean constant
+ * 2: integer constant
+ * 3: IssmDouble constant
+ * 5: boolean vector
+ * 6: int vector
+ * 7: IssmDouble vector*/
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+#include "./classes.h"
+#include "../shared/io/io.h"
+#include "../shared/shared.h"
+
+/*IoConstant class and methods*/
+IoConstant::IoConstant(){/*{{{*/
+	this->isindependent = false;
+	this->name          = NULL;
+	this->constant      = NULL;
+}
+/*}}}*/
+IoConstant::~IoConstant(){/*{{{*/
+	xDelete<char>(this->name);
+	delete this->constant;
+}
+/*}}}*/
+IoConstant::IoConstant(bool value,const char* name_in){/*{{{*/
+	this->isindependent = false;
+	this->constant      = new BoolParam(0,value);
+
+	_assert_(name_in);
+	int len=strlen(name_in);
+	this->name=xNew<char>(len+1);
+	memcpy(this->name,name_in,(len+1)*sizeof(char));
+}
+/*}}}*/
+IoConstant::IoConstant(int value,const char* name_in){/*{{{*/
+	this->isindependent = false;
+	this->constant      = new IntParam(0,value);
+
+	_assert_(name_in);
+	int len=strlen(name_in);
+	this->name=xNew<char>(len+1);
+	memcpy(this->name,name_in,(len+1)*sizeof(char));
+}
+/*}}}*/
+IoConstant::IoConstant(IssmDouble value,const char* name_in){/*{{{*/
+	this->isindependent = false;
+	this->constant      = new DoubleParam(0,value);
+
+	_assert_(name_in);
+	int len=strlen(name_in);
+	this->name=xNew<char>(len+1);
+	memcpy(this->name,name_in,(len+1)*sizeof(char));
+}
+/*}}}*/
+IoConstant::IoConstant(char* value,const char* name_in){/*{{{*/
+	this->isindependent = false;
+	this->constant      = new StringParam(0,value);
+
+	_assert_(name_in);
+	int len=strlen(name_in);
+	this->name=xNew<char>(len+1);
+	memcpy(this->name,name_in,(len+1)*sizeof(char));
+}
+/*}}}*/
+IoConstant::IoConstant(char** value,int numstrings,const char* name_in){/*{{{*/
+	this->isindependent = false;
+	this->constant      = new StringArrayParam(0,value,numstrings);
+
+	_assert_(name_in);
+	int len=strlen(name_in);
+	this->name=xNew<char>(len+1);
+	memcpy(this->name,name_in,(len+1)*sizeof(char));
+}
+/*}}}*/
+
+/*IoData class and methods*/
+IoData::IoData(){/*{{{*/
+	this->isindependent = false;
+	this->name          = NULL;
+	this->code          = -1;
+	this->layout        = -1;
+	this->M             = 0;
+	this->N             = 0;
+	this->data          = NULL;
+}
+/*}}}*/
+IoData::~IoData(){/*{{{*/
+	xDelete<char>(this->name);
+	xDelete<IssmDouble>(this->data);
+}
+/*}}}*/
+IoData::IoData(IssmDouble* matrix,int code_in,int layout_in,int M_in,int N_in,const char* name_in){/*{{{*/
+	this->isindependent = false;
+	this->code          = code_in;
+	this->layout        = layout_in;
+	this->M             = M_in;
+	this->N             = N_in;
+	this->data          = matrix; /*do not copy*/
+	_assert_(code_in==5 ||  code_in==6 || code_in==7);
+
+	_assert_(name_in);
+	int len=strlen(name_in);
+	this->name=xNew<char>(len+1);
+	memcpy(this->name,name_in,(len+1)*sizeof(char));
+}
+/*}}}*/
+
+/*IoModel constructors/destructors*/
+IoModel::IoModel(){/*{{{*/
+
+	this->fid=NULL;
+	this->solution_enum=-1;
+
+	this->my_elements=NULL;
+	this->my_vertices=NULL;
+
+	this->domaintype=-1;
+	this->domaindim=-1;
+	this->meshelementtype=-1;
+	this->numberofvertices=-1;
+	this->numberofelements=-1;
+	this->numberoffaces=-1;
+	this->numberofedges=-1;
+	this->facescols=-1;
+	this->elements=NULL;
+	this->faces=NULL;
+	this->edges=NULL;
+	this->elementtofaceconnectivity      =NULL;
+	this->elementtoedgeconnectivity      =NULL;
+	this->singlenodetoelementconnectivity=NULL;
+	this->numbernodetoelementconnectivity=NULL;
+
+	this->nodecounter=0;
+	this->loadcounter=0;
+	this->constraintcounter=0;
+}
+/*}}}*/
+IoModel::IoModel(FILE* iomodel_handle,int solution_enum_in,bool trace,IssmPDouble* X){/*{{{*/
+
+	bool autodiff=false;
+	bool iscontrol=false;
+	
+	/*First, keep track of the file handle: */
+	this->fid=iomodel_handle;
+
+	/*Check that Enums are Synchronized*/
+	this->CheckFile();
+
+	/*Keep track of solution*/
+	this->solution_enum = solution_enum_in;
+
+	/*If we are running in AD mode, we need to start the trace and declare our independent variables now, 
+	 *and prevent them from being erased during successive calls to iomodel->FetchConstants, iomodel->FetchData and 
+	 iomodel->DeleteData:*/
+	this->StartTrace(trace);
+	this->DeclareIndependents(trace,X);
+
+	/*Initialize and read constants:*/
+	this->FetchConstants(); /*this routine goes through the input file, and fetches bool, int, IssmDouble and string only, nothing memory intensive*/
+
+	/*Is this an autodiff run?*/
+	this->FindConstant(&autodiff,"md.autodiff.isautodiff");
+	this->FindConstant(&iscontrol,"md.inversion.iscontrol");
+	if(trace){
+		autodiff=true;
+	}
+	else{
+		if(autodiff && !iscontrol)
+		 autodiff=true;
+		else
+		 autodiff=false;
+	}
+	this->AddConstant(new IoConstant(autodiff,"md.autodiff.isautodiff"));
+
+	/*Initialize permanent data: */
+	this->my_elements = NULL;
+	this->my_vertices = NULL;
+
+	FindConstant(&this->domaintype,"md.mesh.domain_type");
+	FindConstant(&this->meshelementtype,"md.mesh.elementtype");
+
+	FetchData(&this->domaindim,"md.mesh.domain_dimension");
+	FetchData(&this->numberofvertices,"md.mesh.numberofvertices");
+	FetchData(&this->numberofelements,"md.mesh.numberofelements");
+	FetchData(&this->elements,NULL,NULL,"md.mesh.elements");
+	this->facescols                       = -1;
+	this->faces                           = NULL;
+	this->edges                           = NULL;
+	this->elementtofaceconnectivity       = NULL;
+	this->elementtoedgeconnectivity       = NULL;
+	this->singlenodetoelementconnectivity = NULL;
+	this->numbernodetoelementconnectivity = NULL;
+
+	this->nodecounter=0;
+	this->loadcounter=0;
+	this->constraintcounter=0;
+}
+/*}}}*/
+IoModel::~IoModel(){/*{{{*/
+
+	/*Delete constants*/
+	vector<IoConstant*>::iterator iter1;
+	for(iter1=constants.begin();iter1<constants.end();iter1++){
+		delete *iter1;
+	}
+	this->constants.clear();
+
+	/*Delete data*/
+	vector<IoData*>::iterator iter2;
+	for(iter2=data.begin();iter2<data.end();iter2++){
+		#if defined(_ISSM_DEBUG_)
+		if(!(*iter2)->isindependent){
+			_printf0_("WARNING: IoData \"" << (*iter2)->name << "\" has not been freed (DeleteData has not been called)\n");
+		}
+		#endif
+		delete *iter2;
+	}
+	this->data.clear();
+
+	xDelete<bool>(this->my_elements);
+	xDelete<int>(this->my_vertices);
+
+	xDelete<int>(this->elements);
+	xDelete<int>(this->faces);
+	xDelete<int>(this->edges);
+	xDelete<int>(this->elementtofaceconnectivity);
+	xDelete<int>(this->elementtoedgeconnectivity);
+	xDelete<int>(this->singlenodetoelementconnectivity);
+	xDelete<int>(this->numbernodetoelementconnectivity);
+}
+/*}}}*/
+
+/*IoModel methods*/
+void  IoModel::AddConstant(IoConstant* in_constant){/*{{{*/
+
+	_assert_(in_constant);
+
+	/*Go through dataset of constant and check whether it already exists */
+	vector<IoConstant*>::iterator iter;
+
+	for(iter=constants.begin();iter<constants.end();iter++){
+		if(strcmp((*iter)->name,in_constant->name)==0){
+			delete in_constant;
+			return;
+		}
+	}
+
+	this->constants.push_back(in_constant);
+}
+/*}}}*/
+void  IoModel::AddConstantIndependent(IoConstant* in_constant){/*{{{*/
+
+	_assert_(in_constant);
+
+	/*Set constant as independent*/
+	in_constant->isindependent = true;
+
+	/*Add to constnats*/
+	this->AddConstant(in_constant);
+}
+/*}}}*/
+void  IoModel::AddData(IoData* in_data){/*{{{*/
+
+	_assert_(in_data);
+
+	/*Go through dataset of data and check whether it already exists */
+	vector<IoData*>::iterator iter;
+
+	for(iter=data.begin();iter<data.end();iter++){
+		if(strcmp((*iter)->name,in_data->name)==0){
+			delete in_data;
+			return;
+		}
+	}
+
+	this->data.push_back(in_data);
+}
+/*}}}*/
+void  IoModel::AddDataIndependent(IoData* in_data){/*{{{*/
+
+	_assert_(in_data);
+
+	/*Set data as independent*/
+	in_data->isindependent = true;
+
+	/*Add to constnats*/
+	this->AddData(in_data);
+}
+/*}}}*/
+void  IoModel::CheckFile(void){/*{{{*/
+
+	bool        found;
+	int         record_enum,record_length,record_name_size;
+	char       *record_name = NULL;
+	const char *mddot = "md.";
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Check that some fields have been allocated*/
+	_assert_(this->fid || my_rank);
+
+	/*Go find in the binary file, the position of the data we want to fetch: */
+	if(my_rank==0){ //cpu 0
+
+		/*First set FILE* position to the beginning of the file: */
+		fseek(this->fid,0,SEEK_SET);
+
+		for(;;){
+			/*Read size of first string name: */
+			if(fread(&record_name_size,sizeof(int),1,fid)==0){
+				/*we have reached the end of the file. break: */
+				xDelete<char>(record_name);
+				break;
+			}
+			if(record_name_size<3 || record_name_size>80){
+				_error_("error while looking in binary file. Found a string of size "<<record_name_size);
+			}
+
+			/*Allocate string of correct size: */
+			record_name=xNew<char>(record_name_size+1);
+			record_name[record_name_size]='\0';
+
+			/*Read record_name: */
+			if(fread(record_name,record_name_size*sizeof(char),1,fid)==0){
+				/*we have reached the end of the file. break: */
+				found=false;
+				xDelete<char>(record_name);
+				break;
+			}
+			if(strncmp(record_name,mddot,3)!=0){
+				_error_("error while reading binary file: record does not start with \"md.\": "<<record_name);
+			}
+
+			/*Have we found the last string?*/
+			if(strncmp(record_name,"md.EOF",6)==0){
+				found = true;
+				xDelete<char>(record_name);
+				break;
+			}
+
+			/*Go to next Enum*/
+			if(fread(&record_length,sizeof(int),1,fid)!=1) _error_("Could not read record_length");
+			fseek(fid,record_length,SEEK_CUR);
+			xDelete<char>(record_name);
+		}
+		if(!found){
+			_printf0_("\n");
+			_printf0_("=========================================================================\n");
+			_printf0_(" Marshalled file is corrupted                                            \n");
+			_printf0_("                                                                         \n");
+			_printf0_("   * Last record found is : \n");
+			_printf0_("     the corresponding model field has probably been marshalled          \n");
+			_printf0_("     incorrectly                                                         \n");
+			_printf0_("                                                                         \n");
+			_printf0_("=========================================================================\n");
+			_printf0_("\n");
+			_error_("Binary file corrupted (See error message above)");
+		}
+	}
+}
+/*}}}*/
+Param* IoModel::CopyConstantObject(const char* constant_name,int param_enum){/*{{{*/
+
+	/*Intermediary*/
+	vector<IoConstant*>::iterator iter;
+
+	for(iter=constants.begin();iter<constants.end();iter++){
+		IoConstant* ioconstant=*iter;
+
+		if(strcmp(ioconstant->name,constant_name)==0){
+			Param* output = ioconstant->constant->copy();
+			output->SetEnum(param_enum);
+			return output;
+		}
+	}
+
+	_error_("Constant \"" << constant_name << "\" not found in iomodel");
+	return NULL;
+}
+/*}}}*/
+IssmDouble* IoModel::Data(const char* data_name){/*{{{*/
+
+	/*Intermediary*/
+	vector<IoData*>::iterator iter;
+
+	for(iter=data.begin();iter<data.end();iter++){
+		IoData* iodata=*iter;
+		if(strcmp(iodata->name,data_name)==0) return iodata->data;
+	}
+
+	return NULL;
+}
+/*}}}*/
+void  IoModel::DeclareIndependents(bool trace,IssmPDouble* X){/*{{{*/
+
+	bool autodiff,iscontrol;
+	int  num_independent_objects,temp;
+	int  Xcount=0;
+
+	char** names = NULL;
+	int *types = NULL;
+
+	/*Initialize array detecting whether data[i] is an independent AD mode variable: */
+	this->FetchData(&autodiff,"md.autodiff.isautodiff");
+	this->FetchData(&iscontrol,"md.inversion.iscontrol");
+	
+	if(trace || (autodiff && !iscontrol)){
+
+		#ifdef _HAVE_ADOLC_
+		this->FetchData(&num_independent_objects,"md.autodiff.num_independent_objects");
+		if(num_independent_objects){
+			this->FetchData(&names,&temp,"md.autodiff.independent_object_names");
+			_assert_(temp==num_independent_objects);
+			this->FetchData(&types,NULL,NULL,"md.autodiff.independent_object_types");
+
+			/*create independent objects, and at the same time, fetch the corresponding independent variables, 
+			 *and declare them as such in ADOLC: */
+			for(int i=0;i<num_independent_objects;i++){
+
+				if(types[i]==0){
+					/*Scalar*/
+					this->FetchIndependentConstant(&Xcount,X,names[i]);
+				}
+				else if(types[i]==1){
+					/* vector:*/
+					this->FetchIndependentData(&Xcount,X,names[i]);
+				}
+				else{
+					_error_("Independent cannot be of size " << types[i]);
+				}
+			}
+			for(int i=0;i<num_independent_objects;i++) xDelete<char>(names[i]);
+			xDelete<char*>(names);
+			xDelete<int>(types);
+		}
+		#else
+		/*if we asked for AD computations, we have a problem!: */
+		_error_("Cannot carry out AD mode computations without support of ADOLC compiled in!");
+		#endif
+	}
+}
+/*}}}*/
+void  IoModel::DeleteData(int num,...){/*{{{*/
+
+	/*Intermediaries*/
+	va_list     ap;
+	char       *data_name = NULL;
+	const char *mddot     = "md.";
+	vector<IoData *>::iterator iter;
+
+	/*Go through the entire list of data and delete the corresponding data from the iomodel-data dataset: */
+	va_start(ap,num);
+	for(int i=0;i<num;i++){
+		data_name=va_arg(ap,char*);
+
+		if(strncmp(data_name,mddot,3)!=0) _error_("String provided does not start with \"md.\" ("<<data_name<<")");
+
+		for(iter=data.begin();iter<data.end();iter++){
+			IoData* iodata=*iter;
+			if(strcmp(iodata->name,data_name)==0 && !iodata->isindependent){
+				delete *iter;
+				this->data.erase(iter);
+				break;
+			}
+		}
+	}
+	va_end(ap);
+} /*}}}*/
+void  IoModel::DeleteData(IssmDouble* vector_in,const char* data_name){/*{{{*/
+
+	vector<IoData*>::iterator iter;
+
+	/*do not do anything if pointer is NULL*/
+	if(!vector_in) return;
+
+	/*do not delete if this is an independent variable*/
+	for(iter=data.begin();iter<data.end();iter++){
+		IoData* iodata=*iter;
+		if(strcmp(iodata->name,data_name)==0 && iodata->isindependent){
+			return;
+		}
+	}
+
+	/*Go ahead and delete*/
+	xDelete<IssmDouble>(vector_in);
+} /*}}}*/
+void  IoModel::DeleteData(char*** pstringarray, int numstrings,const char* data_name){/*{{{*/
+
+	char** stringarray=*pstringarray;
+	
+	if(numstrings){
+		for(int i=0;i<numstrings;i++){
+			char* string=stringarray[i]; 
+			xDelete<char>(string);
+		}
+		xDelete<char*>(stringarray);
+	}
+	*pstringarray=NULL;
+} /*}}}*/
+void  IoModel::FetchConstants(void){/*{{{*/
+
+	/*record descriptions; */
+	const char* mddot = "md.";
+	char* record_name = NULL;
+	int   record_name_size;
+	int record_length;
+	int record_code; //1 to 7 number
+
+	/*records: */
+	int          booleanint  = 0;
+	int          integer     = 0;
+	IssmPDouble  pscalar     = 0;
+	IssmDouble   scalar      = 0;
+	char        *string      = NULL;
+	char       **strings     = NULL;
+	int          string_size,numstrings;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Check that some fields have been allocated*/
+	_assert_(this->fid || my_rank);
+
+	/*Go find in the binary file, the position of the data we want to fetch: */
+	if(my_rank==0){ //cpu 0{{{
+
+		/*First set FILE* position to the beginning of the file: */
+		fseek(this->fid,0,SEEK_SET);
+
+		/*Now march through file looking for the correct data identifiers (bool,int,IssmDouble or string): */
+		for(;;){
+
+			/*Read size of first string name: */
+			if(fread(&record_name_size,sizeof(int),1,fid)==0){
+				/*we have reached the end of the file. break: */
+				record_code=0; //0 means bailout
+				ISSM_MPI_Bcast(&record_code,1,ISSM_MPI_INT,0,IssmComm::GetComm());  /*tell others cpus we are bailing: */
+				break;
+			}
+			if(record_name_size<3 || record_name_size>80){
+				_error_("error while looking in binary file. Found a string of size "<<record_name_size);
+			}
+
+			/*Allocate string of correct size: */
+			record_name=xNew<char>(record_name_size+1);
+			record_name[record_name_size]='\0';
+
+			/*Read record_name: */
+			if(fread(record_name,record_name_size*sizeof(char),1,fid)==0){
+				_error_("Could not read record name");
+			}
+			if(strncmp(record_name,mddot,3)!=0){
+				_error_("error while reading binary file: record does not start with \"md.\": "<<record_name);
+			}
+
+			/* Read the record length and the data type code: */
+			if(fread(&record_length,sizeof(int),1,this->fid)!=1) _error_("Cound not read record_length");
+			if(fread(&record_code  ,sizeof(int),1,this->fid)!=1) _error_("Cound not read record_code");
+
+			/*Tell other cpus what we are doing: */
+			ISSM_MPI_Bcast(&record_code,1,ISSM_MPI_INT,0,IssmComm::GetComm());  /*tell other cpus what we are going to do: */
+
+			/*Tell other cpus the name of the data, then branch according to the data type: */
+			ISSM_MPI_Bcast(&record_name_size,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+			ISSM_MPI_Bcast(record_name,record_name_size,ISSM_MPI_CHAR,0,IssmComm::GetComm()); 
+			ISSM_MPI_Bcast(&record_length,1,ISSM_MPI_INT,0,IssmComm::GetComm());  
+
+			switch(record_code){
+				case 1: 
+					/*Read the boolean and broadcast it to other cpus:*/
+					if(fread(&booleanint,sizeof(int),1,this->fid)!=1) _error_("could not read boolean ");
+					ISSM_MPI_Bcast(&booleanint,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+					/*create BoolParam: */
+					this->AddConstant(new IoConstant((bool)booleanint,record_name)); //cast to boolean
+
+					break;
+				case 2:
+					/*Read the integer and broadcast it to other cpus:*/
+					if(fread(&integer,sizeof(int),1,this->fid)!=1) _error_("could not read integer ");
+					
+					/*Convert codes to Enums if needed*/
+					if(strcmp(record_name,"md.smb.model")==0) integer = IoCodeToEnumSMB(integer);
+					if(strcmp(record_name,"md.basalforcings.model")==0) integer = IoCodeToEnumBasal(integer);
+					if(strcmp(record_name,"md.calving.law")==0) integer = IoCodeToEnumCalving(integer);
+					if(strcmp(record_name,"md.hydrology.model")==0) integer = IoCodeToEnumHydrology(integer);
+					if(strcmp(record_name,"md.materials.type")==0) integer = IoCodeToEnumMaterials(integer);
+
+					/*Broadcast to other cpus*/
+					ISSM_MPI_Bcast(&integer,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+					/*create IntParam: */
+					this->AddConstant(new IoConstant(integer,record_name));
+
+					break;
+				case 3:
+					  {
+						/*IssmDouble, check whether it is already there (from "declare independents")*/
+						bool exists = false;
+						vector<IoConstant*>::iterator iter;
+						for(iter=constants.begin();iter<constants.end();iter++){
+							IoConstant* ioconstant=*iter;
+							if(strcmp(ioconstant->name,record_name)==0){
+								exists = true;
+								break;
+							}
+						}
+						if(!exists){
+							if(fread(&pscalar,sizeof(IssmPDouble),1,this->fid)!=1) _error_("could not read scalar ");
+							ISSM_MPI_Bcast(&pscalar,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm()); 
+							scalar=pscalar;
+
+							/*create DoubleParam: */
+							this->AddConstant(new IoConstant(scalar,record_name));
+						}
+					  }
+					break;
+				case 4: 
+					/*We have to read a string from disk. First read the dimensions of the string, then the string: */
+					if(fread(&string_size,sizeof(int),1,this->fid)!=1) _error_("could not read length of string ");
+					ISSM_MPI_Bcast(&string_size,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+					if(string_size){
+						string=xNew<char>(string_size+1);
+						string[string_size]='\0';
+
+						/*Read string, then broadcast: */
+						if(fread(string,string_size*sizeof(char),1,this->fid)!=1)_error_(" could not read string ");
+						ISSM_MPI_Bcast(string,string_size,ISSM_MPI_CHAR,0,IssmComm::GetComm()); 
+					}
+					else{
+						string=xNew<char>(1);
+						string[0]='\0';
+					}
+					/*Convert strings to enums if needed*/
+					if(strcmp(record_name,"md.flowequation.fe_SSA")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.flowequation.fe_HO")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.flowequation.fe_FS")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.groundingline.migration")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.masstransport.hydrostatic_adjustment")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.materials.rheology_law")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.damage.elementinterp")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.mesh.domain_type")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.mesh.elementtype")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else {
+						/*Add string to parameters: */
+						this->AddConstant(new IoConstant(string,record_name));
+					}
+
+					/*Free string*/
+					xDelete<char>(string);
+					break;
+				case 5: 
+				case 6: 
+				case 7: 
+				case 8: 
+					/*We are not interested in this record, too memory intensive. Skip it: */
+					/*skip: */
+					fseek(fid,-sizeof(int),SEEK_CUR); //backtrak 1 integer
+					fseek(fid,record_length,SEEK_CUR);
+					break;
+				case 9: 
+					/*String Array*/
+					if(fread(&numstrings,sizeof(int),1,fid)!=1) _error_("could not read length of string array");
+					ISSM_MPI_Bcast(&numstrings,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+					/*Now allocate string array: */
+					if(numstrings){
+						strings=xNew<char*>(numstrings);
+						for(int i=0;i<numstrings;i++)strings[i]=NULL;
+
+						/*Go through strings, and read: */
+						for(int i=0;i<numstrings;i++){
+
+							if(fread(&string_size,sizeof(int),1,fid)!=1) _error_("could not read length of string ");
+							ISSM_MPI_Bcast(&string_size,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+							if(string_size){
+								string=xNew<char>((string_size+1));
+								string[string_size]='\0';
+								if(fread(string,string_size*sizeof(char),1,fid)!=1)_error_(" could not read string ");
+								ISSM_MPI_Bcast(string,string_size,ISSM_MPI_CHAR,0,IssmComm::GetComm()); 
+							}
+							else{
+								string=xNew<char>(1);
+								string[0]='\0';
+							}
+							strings[i]=string;
+						}
+					}
+
+					/*Add strings to parameters: */
+					this->AddConstant(new IoConstant(strings,numstrings,record_name));
+
+					/*Free string*/
+					for(int i=0;i<numstrings;i++) xDelete<char>(strings[i]);
+					xDelete<char*>(strings);
+					break;
+				default: 
+					_error_("unknown record type:" << record_code); 
+					break;
+			}
+			xDelete<char>(record_name);
+		}
+	} //}}}
+	else{ //cpu ~0 {{{
+		for(;;){ //wait on cpu 0
+			ISSM_MPI_Bcast(&record_code,1,ISSM_MPI_INT,0,IssmComm::GetComm());  /*get from cpu 0 what we are going to do: */
+			if(record_code==0){
+				break; //we are done, break from the loop
+			}
+			else{
+				ISSM_MPI_Bcast(&record_name_size,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+				_assert_(record_name_size);
+				record_name=xNew<char>((record_name_size+1)); record_name[record_name_size]='\0';
+				ISSM_MPI_Bcast(record_name,record_name_size,ISSM_MPI_CHAR,0,IssmComm::GetComm()); 
+				ISSM_MPI_Bcast(&record_length,1,ISSM_MPI_INT,0,IssmComm::GetComm());  
+				switch(record_code){
+					case 1: 
+						/*boolean. get it from cpu 0 */
+						ISSM_MPI_Bcast(&booleanint,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+						/*create BoolParam: */
+						this->AddConstant(new IoConstant((bool)booleanint,record_name)); //cast to a boolean
+						break;
+
+					case 2:
+						/*integer. get it from cpu 0 */
+						ISSM_MPI_Bcast(&integer,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+						/*create IntParam: */
+						this->AddConstant(new IoConstant(integer,record_name));
+						break;
+					case 3:
+						/*scalar. get it from cpu 0 */
+						  {
+							/*IssmDouble, check whether it is already there (from "declare independents")*/
+							bool exists = false;
+							vector<IoConstant*>::iterator iter;
+							for(iter=constants.begin();iter<constants.end();iter++){
+								IoConstant* ioconstant=*iter;
+								if(strcmp(ioconstant->name,record_name)==0){
+									exists = true;
+									break;
+								}
+							}
+							if(!exists){
+								ISSM_MPI_Bcast(&pscalar,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+								scalar=pscalar;
+								/*create DoubleParam: */
+								this->AddConstant(new IoConstant(scalar,record_name));
+							}
+						  }
+						break;
+					case 4: 
+						ISSM_MPI_Bcast(&string_size,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+						if(string_size){
+							string=xNew<char>((string_size+1));
+							string[string_size]='\0';
+
+							/*Read string from cpu 0: */
+							ISSM_MPI_Bcast(string,string_size,ISSM_MPI_CHAR,0,IssmComm::GetComm()); 
+						}
+						else{
+							string=xNew<char>(1);
+							string[0]='\0';
+						}
+
+						if(strcmp(record_name,"md.flowequation.fe_SSA")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.flowequation.fe_HO")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.flowequation.fe_FS")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.groundingline.migration")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.masstransport.hydrostatic_adjustment")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.materials.rheology_law")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.damage.elementinterp")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.mesh.domain_type")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.mesh.elementtype")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else {
+							/*Add string to parameters: */
+							this->AddConstant(new IoConstant(string,record_name));
+						}
+
+						/*Free string*/
+						xDelete<char>(string);
+						break;
+					case 5: break; //do nothing. not interested in this type of data, which is memory intensive.
+					case 6: break; //do nothing. not interested in this type of data, which is memory intensive.
+					case 7: break; //do nothing. not interested in this type of data, which is memory intensive.
+					case 8: break; //do nothing. not interested in this type of data, which is memory intensive.
+					case 9:
+							  ISSM_MPI_Bcast(&numstrings,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+							  /*Now allocate string array: */
+							  if(numstrings){
+								  strings=xNew<char*>(numstrings);
+								  for(int i=0;i<numstrings;i++)strings[i]=NULL;
+
+								  /*Go through strings, and read: */
+								  for(int i=0;i<numstrings;i++){
+
+									  ISSM_MPI_Bcast(&string_size,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+									  if(string_size){
+										  string=xNew<char>((string_size+1));
+										  string[string_size]='\0';
+										  ISSM_MPI_Bcast(string,string_size,ISSM_MPI_CHAR,0,IssmComm::GetComm()); 
+									  }
+									  else{
+										  string=xNew<char>(1);
+										  string[0]='\0';
+									  }
+									  strings[i]=string;
+								  }
+							  }
+
+							  /*Add strings to parameters: */
+							  this->AddConstant(new IoConstant(strings,numstrings,record_name));
+
+							  /*Free string*/
+							  for(int i=0;i<numstrings;i++) xDelete<char>(strings[i]);
+							  xDelete<char*>(strings);
+							  break;
+					default: 
+							  _error_("unknown record type:" << record_code); 
+							  break;
+				}
+				xDelete<char>(record_name);
+			}
+		}
+	} //}}}
+}/*}}}*/
+void  IoModel::FetchData(bool* pboolean,const char* data_name){/*{{{*/
+
+	/*output: */
+	int   booleanint;
+	int   code;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,data_name);
+
+	if(code!=1)_error_("expecting a boolean for \"" << data_name<<"\"");
+
+	/*We have to read a boolean from disk. */
+	if(my_rank==0){  
+		if(fread(&booleanint,sizeof(int),1,fid)!=1) _error_("could not read boolean ");
+	}
+	ISSM_MPI_Bcast(&booleanint,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+	/*cast to bool: */
+	/*Assign output pointers: */
+	*pboolean=(bool)booleanint;
+
+}
+/*}}}*/
+void  IoModel::FetchData(int* pinteger,const char* data_name){/*{{{*/
+
+	/*output: */
+	int   integer;
+	int   code;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,data_name);
+
+	if(code!=2)_error_("expecting an integer for \"" << data_name<<"\"");
+
+	/*We have to read a integer from disk. First read the dimensions of the integer, then the integer: */
+	if(my_rank==0){  
+		if(fread(&integer,sizeof(int),1,fid)!=1) _error_("could not read integer ");
+	}
+
+	ISSM_MPI_Bcast(&integer,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+	/*Assign output pointers: */
+	*pinteger=integer;
+}
+/*}}}*/
+void  IoModel::FetchData(IssmDouble* pscalar,const char* data_name){/*{{{*/
+
+	/*output: */
+	IssmPDouble   scalar;
+	int      code;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,data_name);
+
+	if(code!=3)_error_("expecting a IssmDouble for \""<<data_name<<"\"");
+
+	/*We have to read a scalar from disk. First read the dimensions of the scalar, then the scalar: */
+	if(my_rank==0){
+		if(fread(&scalar,sizeof(IssmPDouble),1,fid)!=1)_error_("could not read scalar ");
+	}
+	ISSM_MPI_Bcast(&scalar,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm()); 
+
+	/*Assign output pointers: */
+	*pscalar=scalar;
+
+}
+/*}}}*/
+void  IoModel::FetchData(char** pstring,const char* data_name){/*{{{*/
+
+	/*output: */
+	char* string=NULL;
+	int   string_size;
+	int code=0;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+	
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,data_name);
+
+	if(code!=4)_error_("expecting a string for \""<<data_name<<"\"");
+
+	/*Now fetch: */
+
+	/*We have to read a string from disk. First read the dimensions of the string, then the string: */
+	if(my_rank==0){  
+		if(fread(&string_size,sizeof(int),1,fid)!=1) _error_("could not read length of string ");
+	}
+
+	ISSM_MPI_Bcast(&string_size,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+	/*Now allocate string: */
+	if(string_size){
+		string=xNew<char>((string_size+1));
+		string[string_size]='\0';
+
+		/*Read string on node 0, then broadcast: */
+		if(my_rank==0){  
+			if(fread(string,string_size*sizeof(char),1,fid)!=1)_error_(" could not read string ");
+		}
+		ISSM_MPI_Bcast(string,string_size,ISSM_MPI_CHAR,0,IssmComm::GetComm()); 
+	}
+	else{
+		string=xNew<char>(1);
+		string[0]='\0';
+	}
+
+	/*Assign output pointers: */
+	*pstring=string;
+}
+/*}}}*/
+void  IoModel::FetchData(char*** pstrings,int* pnumstrings,const char* data_name){/*{{{*/
+
+	/*output: */
+	char** strings = NULL;
+	char*  string  = NULL;
+	int    numstrings;
+	int    string_size;
+	int    code;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,data_name);
+
+	if(code!=9)_error_("expecting a string array for \""<<data_name<<"\"");
+
+	/*Now fetch: */
+
+	if(my_rank==0){  
+		if(fread(&numstrings,sizeof(int),1,fid)!=1) _error_("could not read length of string array");
+	}
+	ISSM_MPI_Bcast(&numstrings,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+	/*Now allocate string array: */
+	if(numstrings){
+		strings=xNew<char*>(numstrings);
+		for(int i=0;i<numstrings;i++) strings[i]=NULL;
+
+		/*Go through strings, and read: */
+		for(int i=0;i<numstrings;i++){
+
+			if(my_rank==0){  
+				if(fread(&string_size,sizeof(int),1,fid)!=1) _error_("could not read length of string ");
+			}
+			ISSM_MPI_Bcast(&string_size,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+			if(string_size){
+				string=xNew<char>((string_size+1));
+				string[string_size]='\0';
+				if(my_rank==0){  
+					if(fread(string,string_size*sizeof(char),1,fid)!=1)_error_(" could not read string ");
+				}
+				ISSM_MPI_Bcast(string,string_size,ISSM_MPI_CHAR,0,IssmComm::GetComm()); 
+			}
+			else{
+				string=xNew<char>(1);
+				string[0]='\0';
+			}
+			strings[i]=string;
+		}
+	}
+
+	/*Assign output pointers: */
+	*pstrings = strings;
+	if(pnumstrings) *pnumstrings = numstrings;
+}
+/*}}}*/
+void  IoModel::FetchData(int** pmatrix,int* pM,int* pN,const char* data_name){/*{{{*/
+	int i,j;
+
+	/*output: */
+	int M,N;
+	IssmPDouble* matrix=NULL;
+	int*    integer_matrix=NULL;
+	int code=0;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,data_name);
+
+	if(code!=5 && code!=6 && code!=7)_error_("expecting a IssmDouble, integer or boolean matrix for \""<<data_name<<"\""<<" (Code is "<<code<<")");
+
+	/*Now fetch: */
+
+	/*We have to read a matrix from disk. First read the dimensions of the matrix, then the whole matrix: */
+	/*numberofelements: */
+	if(my_rank==0){  
+		if(fread(&M,sizeof(int),1,fid)!=1) _error_("could not read number of rows for matrix ");
+	}
+
+	ISSM_MPI_Bcast(&M,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+	if(my_rank==0){  
+		if(fread(&N,sizeof(int),1,fid)!=1) _error_("could not read number of columns for matrix ");
+	}
+	ISSM_MPI_Bcast(&N,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Now allocate matrix: */
+	if(M*N){
+		matrix=xNew<IssmPDouble>(M*N);
+
+		/*Read matrix on node 0, then broadcast: */
+		if(my_rank==0){  
+			if(fread(matrix,M*N*sizeof(IssmPDouble),1,fid)!=1) _error_("could not read matrix ");
+		}
+
+		ISSM_MPI_Bcast(matrix,M*N,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm()); 
+	}
+
+	/*Now cast to integer: */
+	if(M*N){
+		integer_matrix=xNew<int>(M*N);
+		for (i=0;i<M;i++){
+			for (j=0;j<N;j++){
+				integer_matrix[i*N+j]=(int)matrix[i*N+j];
+			}
+		}
+	}
+	else{
+		integer_matrix=NULL;
+	}
+	/*Free ressources:*/
+	xDelete<IssmPDouble>(matrix);
+
+	/*Assign output pointers: */
+	*pmatrix=integer_matrix;
+	if (pM)*pM=M;
+	if (pN)*pN=N;
+
+}
+/*}}}*/
+void  IoModel::FetchData(IssmDouble** pmatrix,int* pM,int* pN,const char* data_name){/*{{{*/
+
+	/*First, look if has already been loaded (might be an independent variable)*/
+	vector<IoData*>::iterator iter;
+	for(iter=data.begin();iter<data.end();iter++){
+		IoData* iodata=*iter;
+		if(strcmp(iodata->name,data_name)==0){
+			*pmatrix=iodata->data;
+			if(pM) *pM=iodata->M;
+			if(pN) *pN=iodata->N;
+			return;
+		}
+	}
+	 
+	/*output: */
+	int          M,N;
+	IssmPDouble *matrix = NULL;
+	int          code   = 0;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,data_name);
+	if(code!=5 && code!=6 && code!=7)_error_("expecting a IssmDouble, integer or boolean matrix for \""<<data_name<<"\""<<" (Code is "<<code<<")");
+
+	/*Now fetch: */
+
+	/*We have to read a matrix from disk. First read the dimensions of the matrix, then the whole matrix: */
+	/*numberofelements: */
+	if(my_rank==0){
+		if(fread(&M,sizeof(int),1,fid)!=1) _error_("could not read number of rows for matrix ");
+	}
+	ISSM_MPI_Bcast(&M,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+	if(my_rank==0){  
+		if(fread(&N,sizeof(int),1,fid)!=1) _error_("could not read number of columns for matrix ");
+	}
+	ISSM_MPI_Bcast(&N,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+	/*Now allocate matrix: */
+	if(M*N){
+		matrix=xNew<IssmPDouble>(M*N);
+
+		/*Read matrix on node 0, then broadcast: */
+		if(my_rank==0){  
+			if(fread(matrix,M*N*sizeof(IssmPDouble),1,fid)!=1) _error_("could not read matrix ");
+		}
+		ISSM_MPI_Bcast(matrix,M*N,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm()); 
+
+		*pmatrix=xNew<IssmDouble>(M*N);
+		for(int i=0;i<M*N;++i) (*pmatrix)[i]=matrix[i];
+		xDelete<IssmPDouble>(matrix);
+	}
+	else
+	  *pmatrix=NULL;
+	/*Assign output pointers: */
+	if(pM) *pM=M;
+	if(pN) *pN=N;
+}
+/*}}}*/
+void  IoModel::FetchData(IssmDouble*** pmatrices,int** pmdims,int** pndims, int* pnumrecords,const char* data_name){/*{{{*/
+
+	int i;
+	/*output: */
+	IssmDouble** matrices=NULL;
+	int*     mdims=NULL;
+	int*     ndims=NULL;
+	int      numrecords=0;
+
+	/*intermediary: */
+	int     M, N;
+	IssmPDouble *matrix = NULL;
+	int     code;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,data_name);
+	if(code!=8)_error_("expecting a IssmDouble mat array for \""<<data_name<<"\"");
+
+	/*Now fetch: */
+	if(my_rank==0){  
+		if(fread(&numrecords,sizeof(int),1,fid)!=1) _error_("could not read number of records in matrix array ");
+	}
+	ISSM_MPI_Bcast(&numrecords,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+	if(numrecords){
+
+		/*Allocate matrices :*/
+		matrices=xNew<IssmDouble*>(numrecords);
+		mdims=xNew<int>(numrecords);
+		ndims=xNew<int>(numrecords);
+
+		for(i=0;i<numrecords;i++){
+			matrices[i]=NULL;
+			mdims[i]=0;
+			ndims[i]=0;
+		}
+
+		/*Loop through records and fetch matrix: */
+		for(i=0;i<numrecords;i++){
+
+			if(my_rank==0){  
+				if(fread(&M,sizeof(int),1,fid)!=1) _error_("could not read number of rows in " << i << "th matrix of matrix array");
+			}
+			ISSM_MPI_Bcast(&M,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+			if(my_rank==0){  
+				if(fread(&N,sizeof(int),1,fid)!=1) _error_("could not read number of columns in " << i << "th matrix of matrix array");
+			}
+			ISSM_MPI_Bcast(&N,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+			/*Now allocate matrix: */
+			if(M*N){
+				matrix=xNew<IssmPDouble>(M*N);
+
+				/*Read matrix on node 0, then broadcast: */
+				if(my_rank==0){  
+					if(fread(matrix,M*N*sizeof(IssmPDouble),1,fid)!=1) _error_("could not read matrix ");
+				}
+
+				ISSM_MPI_Bcast(matrix,M*N,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm()); 
+				matrices[i]=xNew<IssmDouble>(M*N);
+				for (int j=0;j<M*N;++j) {matrices[i][j]=matrix[j];}
+				xDelete<IssmPDouble>(matrix);
+			}
+			else
+			  matrices[i]=NULL;
+			/*Assign: */
+			mdims[i]=M;
+			ndims[i]=N;
+		}
+	}
+
+	/*Assign output pointers: */
+	*pmatrices=matrices;
+	*pmdims=mdims;
+	*pndims=ndims;
+	*pnumrecords=numrecords;
+}
+/*}}}*/
+void  IoModel::FetchData(Options* options,const char* lastnonoption){/*{{{*/
+
+	/*record descriptions; */
+	const char* mddot = "md.";
+	char* record_name = NULL;
+	int   record_name_size;
+	int   record_length;
+	int   record_code; 
+
+	/*records: */
+	IssmDouble   scalar = 0;
+	char        *string = NULL;
+	int          string_size;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Go find in the binary file, the position of the data we want to fetch: */
+	if(my_rank==0){
+		fseek(fid,0,SEEK_SET);
+		for(;;){
+			/*Read size of first string name: */
+			if(fread(&record_name_size,sizeof(int),1,fid)==0) _error_("could not read record_name");
+			if(record_name_size<3 || record_name_size>80) _error_("error while looking in binary file. Found a string of size "<<record_name_size);
+
+			/*Allocate string of correct size: */
+			record_name=xNew<char>(record_name_size+1);
+			record_name[record_name_size]='\0';
+
+			/*Read record_name: */
+			if(fread(record_name,record_name_size*sizeof(char),1,fid)==0)_error_("Could not find field "<<lastnonoption);
+			if(strncmp(record_name,mddot,3)!=0) _error_("error while reading binary file: record does not start with \"md.\": "<<record_name);
+
+			/*Is this the record sought for? : */
+			if(strcmp(record_name,lastnonoption)==0){
+				if(fread(&record_length,sizeof(int),1,fid)!=1) _error_("Could not read record_length");
+				fseek(fid,record_length,SEEK_CUR);
+				xDelete<char>(record_name);
+				break;
+			}
+			else{
+				if(fread(&record_length,sizeof(int),1,fid)!=1) _error_("Could not read record_length");
+				fseek(fid,record_length,SEEK_CUR);
+				xDelete<char>(record_name);
+			}
+		}
+	}
+
+	/*Go find in the binary file, the position of the data we want to fetch: */
+	if(my_rank==0){ //cpu 0{{{
+
+		/*Now march through file looking for the correct data identifiers (bool,int,IssmDouble or string): */
+		for(;;){
+
+			/*Read size of first string name: */
+			if(fread(&record_name_size,sizeof(int),1,fid)==0){
+				/*we have reached the end of the file. break: */
+				record_code=0; //0 means bailout
+				ISSM_MPI_Bcast(&record_code,1,ISSM_MPI_INT,0,IssmComm::GetComm());  /*tell others cpus we are bailing: */
+				break;
+			}
+			if(record_name_size<3 || record_name_size>80){
+				_error_("error while looking in binary file. Found a string of size "<<record_name_size);
+			}
+
+			/*Allocate string of correct size: */
+			record_name=xNew<char>(record_name_size+1);
+			record_name[record_name_size]='\0';
+
+			/*Read record_name: */
+			if(fread(record_name,record_name_size*sizeof(char),1,fid)==0){
+				_error_("Could not read record name");
+			}
+			if(strncmp(record_name,mddot,3)!=0){
+				_error_("error while reading binary file: record does not start with \"md.\": "<<record_name);
+			}
+			if(strcmp(record_name,"md.EOF")==0){
+				xDelete<char>(record_name);
+				record_code=0; //0 means bailout
+				ISSM_MPI_Bcast(&record_code,1,ISSM_MPI_INT,0,IssmComm::GetComm());  /*tell others cpus we are bailing: */
+				break;
+			}
+
+			/* Read the record length and the data type code: */
+			if(fread(&record_length,sizeof(int),1,this->fid)!=1) _error_("Cound not read record_length");
+			if(fread(&record_code  ,sizeof(int),1,this->fid)!=1) _error_("Cound not read record_code");
+
+			/*Tell other cpus what we are doing: */
+			ISSM_MPI_Bcast(&record_code,1,ISSM_MPI_INT,0,IssmComm::GetComm());  /*tell other cpus what we are going to do: */
+
+			/*Tell other cpus the name of the data, then branch according to the data type: */
+			ISSM_MPI_Bcast(&record_name_size,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+			ISSM_MPI_Bcast(record_name,record_name_size,ISSM_MPI_CHAR,0,IssmComm::GetComm()); 
+			ISSM_MPI_Bcast(&record_length,1,ISSM_MPI_INT,0,IssmComm::GetComm());  
+
+			switch(record_code){
+				case 3:
+					  {
+						if(fread(&scalar,sizeof(IssmPDouble),1,this->fid)!=1) _error_("could not read scalar ");
+						ISSM_MPI_Bcast(&scalar,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm()); 
+						GenericOption<IssmDouble>* option = new GenericOption<IssmDouble>();
+						char* optionname=xNew<char>(strlen(record_name)-3+1);
+						xMemCpy(optionname,&record_name[3],strlen(record_name)-3+1);
+						option->value = scalar;
+						option->name  = optionname;
+						option->numel = 1;
+						option->ndims = 1;
+						option->size  = NULL;
+						options->AddOption(option);
+					  }
+					break;
+				case 4: 
+					  {
+					/*We have to read a string from disk. First read the dimensions of the string, then the string: */
+					if(fread(&string_size,sizeof(int),1,this->fid)!=1) _error_("could not read length of string ");
+					ISSM_MPI_Bcast(&string_size,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+					if(string_size){
+						string=xNew<char>(string_size+1);
+						string[string_size]='\0';
+
+						/*Read string, then broadcast: */
+						if(fread(string,string_size*sizeof(char),1,this->fid)!=1)_error_(" could not read string ");
+						ISSM_MPI_Bcast(string,string_size,ISSM_MPI_CHAR,0,IssmComm::GetComm()); 
+					}
+					else{
+						string=xNew<char>(1);
+						string[0]='\0';
+					}
+
+					/*Add string to parameters: */
+					GenericOption<char*>* option = new GenericOption<char*>();
+					char* optionname=xNew<char>(strlen(record_name)-3+1);
+					xMemCpy(optionname,&record_name[3],strlen(record_name)-3+1);
+					option->value = string;
+					option->name  = optionname;
+					option->numel = 1;
+					option->ndims = 1;
+					option->size  = NULL;
+					options->AddOption(option);
+
+					  }
+					break;
+				default: 
+					_error_("record type not supported:" << record_code); 
+					break;
+			}
+			xDelete<char>(record_name);
+		}
+	} //}}}
+	else{ //cpu ~0 {{{
+		for(;;){ //wait on cpu 0
+			ISSM_MPI_Bcast(&record_code,1,ISSM_MPI_INT,0,IssmComm::GetComm());  /*get from cpu 0 what we are going to do: */
+			if(record_code==0){
+				break; //we are done, break from the loop
+			}
+			else{
+				ISSM_MPI_Bcast(&record_name_size,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+				_assert_(record_name_size);
+				record_name=xNew<char>((record_name_size+1)); record_name[record_name_size]='\0';
+				ISSM_MPI_Bcast(record_name,record_name_size,ISSM_MPI_CHAR,0,IssmComm::GetComm()); 
+				ISSM_MPI_Bcast(&record_length,1,ISSM_MPI_INT,0,IssmComm::GetComm());  
+				switch(record_code){
+					case 3:
+						  {
+							if(fread(&scalar,sizeof(IssmPDouble),1,this->fid)!=1) _error_("could not read scalar ");
+							ISSM_MPI_Bcast(&scalar,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm()); 
+							char* optionname=xNew<char>(strlen(record_name)-3+1);
+							xMemCpy(optionname,&record_name[3],strlen(record_name)-3+1);
+							GenericOption<IssmDouble>* option = new GenericOption<IssmDouble>();
+							option->value = scalar;
+							option->name  = optionname;
+							option->numel = 1;
+							option->ndims = 1;
+							option->size  = NULL;
+							options->AddOption(option);
+						  }
+						break;
+					case 4: 
+						  {
+						/*We have to read a string from disk. First read the dimensions of the string, then the string: */
+						if(fread(&string_size,sizeof(int),1,this->fid)!=1) _error_("could not read length of string ");
+						ISSM_MPI_Bcast(&string_size,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+						if(string_size){
+							string=xNew<char>(string_size+1);
+							string[string_size]='\0';
+
+							/*Read string, then broadcast: */
+							if(fread(string,string_size*sizeof(char),1,this->fid)!=1)_error_(" could not read string ");
+							ISSM_MPI_Bcast(string,string_size,ISSM_MPI_CHAR,0,IssmComm::GetComm()); 
+						}
+						else{
+							string=xNew<char>(1);
+							string[0]='\0';
+						}
+
+						/*Add string to parameters: */
+						char* optionname=xNew<char>(strlen(record_name)-3+1);
+						xMemCpy(optionname,&record_name[3],strlen(record_name)-3+1);
+						GenericOption<char*>* option = new GenericOption<char*>();
+						option->value = string;
+						option->name  = optionname;
+						option->numel = 1;
+						option->ndims = 1;
+						option->size  = NULL;
+						options->AddOption(option);
+						  }
+						break;
+					default: 
+						_error_("record type not supported:" << record_code); 
+						break;
+				}
+
+			}
+		}
+	} //}}}
+
+}
+/*}}}*/
+void  IoModel::FetchData(int num,...){/*{{{*/
+
+	va_list     ap;
+	int         code,layout;
+	IssmDouble *matrix   = NULL;
+	char*       data_name;
+	int         M,N;
+	bool        exists;
+	const char *mddot     = "md.";
+	vector<IoData*>::iterator iter;
+
+	/*Go through the entire list of names and fetch the corresponding data. Add it to the iomodel->data dataset. Everything
+	 *we fetch is a IssmDouble* : */
+
+	va_start(ap,num);
+	for(int i=0; i<num; i++){
+
+		data_name=va_arg(ap,char*);
+		if(strncmp(data_name,mddot,3)!=0) _error_("String provided does not start with \"md.\" ("<<data_name<<")");
+
+		exists = false;
+
+		for(iter=data.begin();iter<data.end();iter++){
+			IoData* iodata=*iter;
+			if(strcmp(iodata->name,data_name)==0){
+				/*Already there, no need to fetch it*/
+				_assert_(iodata->isindependent);
+				exists = true;
+				break;
+			}
+		}
+
+		if(exists){
+			/*this data has already been checked out! Continue: */
+			continue;
+		}
+		else{
+			/*Add to this->data: */
+			this->SetFilePointerToData(&code,&layout,data_name);
+			this->FetchData(&matrix,&M,&N,data_name);
+			this->AddData(new IoData(matrix,code,layout,M,N,data_name));
+		}
+	}
+	va_end(ap);
+}
+/*}}}*/
+void  IoModel::FetchDataToInput(Elements* elements,const char* vector_name,int input_enum,IssmDouble default_value){/*{{{*/
+
+	/*First, look whether it is not already loaded in this->data*/
+	vector<IoData*>::iterator iter;
+	for(iter=data.begin();iter<data.end();iter++){
+		IoData* iodata=*iter;
+		if(strcmp(iodata->name,vector_name)==0){
+			_assert_(iodata->code==7);
+			for(int i=0;i<elements->Size();i++){
+				Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+				element->InputCreate(iodata->data,this,iodata->M,iodata->N,iodata->layout,input_enum,iodata->code);//we need i to index into elements.
+			}
+			return;
+		}
+	}
+
+	/*intermediary: */
+	int         code,vector_layout;
+	IssmDouble *doublearray = NULL;
+	int         M,N;
+
+	/*First of, find the record for the name, and get code  of data type: */
+	this->SetFilePointerToData(&code, &vector_layout,vector_name);
+
+	/*Defaulting only supported for double arrays*/
+	if(code!=7) _error_(vector_name<<" is not a double array");
+
+	this->FetchData(&doublearray,&M,&N,vector_name);
+
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		if(!doublearray) element->AddInput(input_enum,&default_value,P0Enum); 
+		else             element->InputCreate(doublearray,this,M,N,vector_layout,input_enum,code);//we need i to index into elements.
+	}
+
+	/*Free ressources*/
+	xDelete<IssmDouble>(doublearray);
+}
+/*}}}*/
+void  IoModel::FetchDataToInput(Elements* elements,const char* vector_name,int input_enum){/*{{{*/
+
+	/*First, look whether it is not already loaded in this->data*/
+	vector<IoData*>::iterator iter;
+	for(iter=data.begin();iter<data.end();iter++){
+		IoData* iodata=*iter;
+		if(strcmp(iodata->name,vector_name)==0){
+			for(int i=0;i<elements->Size();i++){
+				Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+				element->InputCreate(iodata->data,this,iodata->M,iodata->N,iodata->layout,input_enum,iodata->code);//we need i to index into elements.
+			}
+			return;
+		}
+	}
+
+	/*intermediary: */
+	int     i;
+	int     code,vector_layout;
+
+	/*variables being fetched: */
+	bool        boolean;
+	int         integer;
+	IssmDouble  scalar;
+	char       *string           = NULL;
+	IssmDouble *doublearray = NULL;
+	int         M,N;
+
+	/*First of, find the record for the name, and get code  of data type: */
+	this->SetFilePointerToData(&code, &vector_layout,vector_name);
+
+	switch(code){
+		case 1: //boolean constant
+			this->FetchData(&boolean,vector_name);
+			for(i=0;i<elements->Size();i++){
+				Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+				element->InputUpdateFromConstant(boolean,input_enum);
+			}
+			break;
+		case 2: //integer constant
+			this->FetchData(&integer,vector_name);
+			for(i=0;i<elements->Size();i++){
+				Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+				element->InputUpdateFromConstant(integer,input_enum);
+			}
+			break;
+		case 3: //IssmDouble constant
+			this->FetchData(&scalar,vector_name);
+			for(i=0;i<elements->Size();i++){
+				Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+				element->InputUpdateFromConstant(scalar,input_enum);
+			}
+			break; 
+		case 5: //boolean vector
+			this->FetchData(&doublearray,&M,&N,vector_name); //we still have a doublearray, because it might include times in transient mode
+			if(!doublearray) _error_("\""<<vector_name<<"\" not found in binary file");
+			for(i=0;i<elements->Size();i++){
+				Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+				element->InputCreate(doublearray,this,M,N,vector_layout,input_enum,code);//we need i to index into elements.
+			}
+			break;
+		case 6: //int vector
+			this->FetchData(&doublearray,&M,&N,vector_name); //we still have a doublearray, because it might include times in transient mode
+			if(!doublearray) _error_("\""<<vector_name<<"\" not found in binary file");
+			for(i=0;i<elements->Size();i++){
+				Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+				element->InputCreate(doublearray,this,M,N,vector_layout,input_enum,code);//we need i to index into elements.
+			}
+			break;
+		case 7: //IssmDouble vector
+			this->FetchData(&doublearray,&M,&N,vector_name);
+			if(!doublearray) _error_("\""<<vector_name<<"\" not found in binary file");
+			for(i=0;i<elements->Size();i++){
+				Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+				element->InputCreate(doublearray,this,M,N,vector_layout,input_enum,code);//we need i to index into elements.
+			}
+			break;
+		default:
+			_error_("data code " << code << " not supported yet (detected while processing \""<<vector_name<<"\")");
+			break;
+	}
+	/*Free ressources*/
+	xDelete<IssmDouble>(doublearray);
+	xDelete<char>(string);
+}
+/*}}}*/
+void  IoModel::FetchIndependentConstant(int* pXcount,IssmPDouble* X,const char* constant_name){/*{{{*/
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*recover Xcount if X is not NULL:*/
+	int Xcount = 0;
+	if(X) Xcount=*pXcount;
+
+	#ifdef _HAVE_ADOLC_ //cannot come here unless you are running AD mode, from DeclaredIndependents:
+
+	/*output: */
+	IssmPDouble  pscalar;
+	IssmDouble   scalar; //same as pscalar, except it's an ADOLC independent variable
+	int          code;
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,constant_name);
+	if(code!=3) _error_("expecting a IssmDouble for \"" << constant_name<<"\"");
+
+	/*We have to read a scalar from disk. First read the dimensions of the scalar, then the scalar: */
+	if(my_rank==0){
+		if(fread(&pscalar,sizeof(IssmPDouble),1,fid)!=1)_error_("could not read scalar ");
+
+		/*Now, before we even broadcast this to other nodes, declare the scalar  as an independent variable!. If we 
+		 *have been supplied an X vector, use it instead of what we just read: */
+		if(X){
+			scalar<<=X[Xcount];
+		}
+		else{
+			scalar<<=pscalar;
+		}
+	}
+
+	ISSM_MPI_Bcast(&scalar,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm()); 
+	this->AddConstantIndependent(new IoConstant(scalar,constant_name));
+
+	/*increment offset into X vector, now that we have read 1 value:*/
+	Xcount++; *pXcount=Xcount;
+	#endif
+}
+/*}}}*/
+void  IoModel::FetchIndependentData(int* pXcount,IssmPDouble* X,const char* data_name){/*{{{*/
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*recover Xcount if X is not NULL:*/
+	int Xcount = 0;
+	if(X) Xcount=*pXcount;
+
+	#ifdef _HAVE_ADOLC_ //cannot come here unless you are running AD mode, from DeclaredIndependents:
+
+	/*Intermediaries*/
+	int M,N;
+	IssmPDouble* buffer=NULL; //a buffer to read the data from disk
+	IssmDouble* matrix=NULL; //our independent variable
+	int code,layout;
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,&layout,data_name);
+	if((code!=5) && (code!=6) && (code!=7))_error_("expecting a IssmDouble, integer or boolean matrix for \"" << data_name<<"\"");
+
+	/*We have to read a matrix from disk. First read the dimensions of the matrix, then the whole matrix: */
+	/*numberofelements: */
+	if(my_rank==0){  
+		if(fread(&M,sizeof(int),1,fid)!=1) _error_("could not read number of rows for matrix ");
+	}
+	ISSM_MPI_Bcast(&M,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+	if(my_rank==0){  
+		if(fread(&N,sizeof(int),1,fid)!=1) _error_("could not read number of columns for matrix ");
+	}
+	ISSM_MPI_Bcast(&N,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+	/*Now allocate matrix: */
+	if(M*N){
+		buffer=xNew<IssmPDouble>(M*N);
+		matrix=xNew<IssmDouble>(M*N);
+
+		/*Read matrix on node 0, then broadcast: */
+		if(my_rank==0){  
+			if(fread(buffer,M*N*sizeof(IssmPDouble),1,fid)!=1) _error_("could not read matrix ");
+
+			/*Now, before we even broadcast this to other nodes, declare the whole matrix as a independent variable!
+			  If we have been supplied an X vector, use it instead of what we just read: */
+			if(X){
+				for(int i=0;i<M*N;i++) matrix[i]<<=X[Xcount+i];  /*<<= ADOLC overloaded operator to declare independent*/
+			}
+			else{
+				for(int i=0;i<M*N;i++) matrix[i]<<=buffer[i];
+			}
+		}
+		ISSM_MPI_Bcast(matrix,M*N,ISSM_MPI_DOUBLE,0,IssmComm::GetComm()); 
+
+		xDelete<IssmPDouble>(buffer);
+	}
+	else _error_("cannot declare the independent variable \"" << data_name <<  "\" if it's empty!");
+
+	/*Add to data as independent*/
+	this->AddDataIndependent(new IoData(matrix,code,layout,M,N,data_name));
+
+	/*increment offset into X vector, now that we have read M*N values:*/
+	Xcount+=M*N; *pXcount=Xcount;
+	#endif
+}
+/*}}}*/
+void  IoModel::FetchMultipleData(char*** pstrings,int* pnumstrings,const char* data_name){/*{{{*/
+
+	int  num_instances;
+
+	/*output: */
+	int    numstrings = 0;
+	char **strings    = NULL;
+
+	/*intermediary: */
+	char   *string         = NULL;
+	int     string_size;
+	int    *codes          = NULL;
+	int    *code           = NULL;
+	fpos_t *file_positions = NULL;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Get file pointers to beginning of the data (multiple instances of it): */
+	file_positions=this->SetFilePointersToData(&codes,NULL,&num_instances,data_name);
+
+	if(num_instances){
+		strings=xNew<char*>(num_instances);
+
+		for(int i=0;i<num_instances;i++){
+
+			if(my_rank==0){
+				/*check we are indeed finding a string, not something else: */
+				if(codes[i]!=4)_error_("expecting a string for \""<<data_name<<"\"");
+		
+				/*We have to read a string from disk. First read the dimensions of the string, then the string: */
+				fsetpos(fid,file_positions+i);
+				if(fread(&string_size,sizeof(int),1,fid)!=1) _error_("could not read length of string ");
+			}
+
+			ISSM_MPI_Bcast(&string_size,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+			/*Now allocate string: */
+			if(string_size){
+				string=xNew<char>((string_size+1));
+				string[string_size]='\0';
+
+				/*Read string on node 0, then broadcast: */
+				if(my_rank==0){
+					if(fread(string,string_size*sizeof(char),1,fid)!=1)_error_(" could not read string ");
+				}
+				ISSM_MPI_Bcast(string,string_size,ISSM_MPI_CHAR,0,IssmComm::GetComm()); 
+			}
+			else{
+				string=xNew<char>(1);
+				string[0]='\0';
+			}
+			strings[i]=string;
+		}
+	}
+	/*Free ressources:*/
+	xDelete<int>(codes);
+	xDelete<fpos_t>(file_positions);
+	
+	/*Assign output pointers: */
+	*pstrings=strings;
+	*pnumstrings=num_instances;
+}
+/*}}}*/
+void  IoModel::FetchMultipleData(int** pvector, int* pnum_instances,const char* data_name){/*{{{*/
+
+	int     num_instances;
+	fpos_t* file_positions=NULL;
+
+	/*output: */
+	int* vector=NULL;
+
+	/*intermediary: */
+	int          integer;
+	int         *codes   = NULL;
+	int          code;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+	
+	/*Get file pointers to beginning of the data (multiple instances of it): */
+	file_positions=this->SetFilePointersToData(&codes,NULL,&num_instances,data_name);
+
+	if(num_instances){
+
+		/*Allocate vector :*/
+		vector=xNew<int>(num_instances);
+
+		for(int i=0;i<num_instances;i++){
+
+			if(my_rank==0){
+				code=codes[i];
+
+				if(code!=2)_error_("expecting an integer for \""<<data_name<<"\"");
+				
+				/*We have to read a integer from disk. First read the dimensions of the integer, then the integer: */
+				fsetpos(fid,file_positions+i);
+				if(my_rank==0){  
+					if(fread(&integer,sizeof(int),1,fid)!=1) _error_("could not read integer ");
+				}
+			}
+			ISSM_MPI_Bcast(&integer,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+			/*Assign: */
+			vector[i]=integer;
+		}
+	}
+			
+	/*Free ressources:*/
+	xDelete<fpos_t>(file_positions);
+	xDelete<int>(codes);
+
+	/*Assign output pointers: */
+	*pvector=vector;
+	*pnum_instances=num_instances;
+}
+/*}}}*/
+void  IoModel::FetchMultipleData(IssmDouble** pvector, int* pnum_instances,const char* data_name){/*{{{*/
+
+	int     num_instances;
+	fpos_t* file_positions=NULL;
+
+	/*output: */
+	IssmDouble* vector=NULL;
+
+	/*intermediary: */
+	IssmPDouble          scalar;
+	int         *codes   = NULL;
+	int          code;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+	
+	/*Get file pointers to beginning of the data (multiple instances of it): */
+	file_positions=this->SetFilePointersToData(&codes,NULL,&num_instances,data_name);
+
+	if(num_instances){
+
+		/*Allocate vector :*/
+		vector=xNew<IssmDouble>(num_instances);
+
+		for(int i=0;i<num_instances;i++){
+
+			if(my_rank==0){
+				code=codes[i];
+
+				if(code!=3)_error_("expecting a double for \""<<data_name<<"\"");
+				
+				/*We have to read a double from disk: */
+				fsetpos(fid,file_positions+i);
+				if(my_rank==0){  
+					if(fread(&scalar,sizeof(IssmPDouble),1,fid)!=1) _error_("could not read scalar ");
+				}
+			}
+			ISSM_MPI_Bcast(&scalar,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm()); 
+
+			/*Assign: */
+			vector[i]=scalar;
+		}
+	}
+			
+	/*Free ressources:*/
+	xDelete<fpos_t>(file_positions);
+	xDelete<int>(codes);
+
+	/*Assign output pointers: */
+	*pvector=vector;
+	*pnum_instances=num_instances;
+}
+/*}}}*/
+void  IoModel::FetchMultipleData(IssmDouble*** pmatrices,int** pmdims,int** pndims, int* pnumrecords,const char* data_name){/*{{{*/
+
+	int     num_instances;
+	fpos_t* file_positions=NULL;
+
+	/*output: */
+	IssmDouble **matrices = NULL;
+	int         *mdims    = NULL;
+	int         *ndims    = NULL;
+
+	/*intermediary: */
+	int          M, N;
+	IssmPDouble *pmatrix = NULL;
+	IssmDouble  *matrix  = NULL;
+	int         *codes   = NULL;
+	int          code;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+	
+	/*Get file pointers to beginning of the data (multiple instances of it): */
+	file_positions=this->SetFilePointersToData(&codes,NULL,&num_instances,data_name);
+
+	if(num_instances){
+
+		/*Allocate matrices :*/
+		matrices=xNew<IssmDouble*>(num_instances);
+		mdims=xNew<int>(num_instances);
+		ndims=xNew<int>(num_instances);
+
+		for(int i=0;i<num_instances;i++){
+
+			if(my_rank==0){
+				code=codes[i];
+
+				if((code!=5) && (code!=6) && (code!=7))_error_("expecting a IssmDouble, integer or boolean matrix for \""<<data_name<<"\"");
+
+				/*We have to read a matrix from disk. First read the dimensions of the matrix, then the whole matrix: */
+				/*numberofelements: */
+				fsetpos(fid,file_positions+i);
+				if(fread(&M,sizeof(int),1,fid)!=1) _error_("could not read number of rows for matrix ");
+			}
+			ISSM_MPI_Bcast(&M,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+			if(my_rank==0){  
+				if(fread(&N,sizeof(int),1,fid)!=1) _error_("could not read number of columns for matrix ");
+			}
+			ISSM_MPI_Bcast(&N,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+
+			/*Now allocate matrix: */
+			if(M*N){
+				pmatrix=xNew<IssmPDouble>(M*N);
+
+				/*Read matrix on node 0, then broadcast: */
+				if(my_rank==0){  
+					if(fread(pmatrix,M*N*sizeof(IssmPDouble),1,fid)!=1) _error_("could not read matrix ");
+				}
+				ISSM_MPI_Bcast(pmatrix,M*N,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm()); 
+
+				//if(this->independents[data_enum]){ FIXME
+				//	/*this data has already been checked out! So cancel all that we've done here, and return 
+				//	 * the data[data_enum] directly: */
+				//	matrix=this->data[data_enum];
+				//}
+				//else{
+					matrix=xNew<IssmDouble>(M*N);
+					for (int i=0;i<M*N;++i) matrix[i]=pmatrix[i];
+				//}
+				xDelete<IssmPDouble>(pmatrix);
+			}
+			else
+				matrix=NULL;
+			
+			
+			/*Assign: */
+			mdims[i]=M;
+			matrices[i]=matrix;
+			ndims[i]=N;
+		}
+	}
+			
+	/*Free ressources:*/
+	xDelete<fpos_t>(file_positions);
+	xDelete<int>(codes);
+
+	/*Assign output pointers: */
+	*pmatrices=matrices;
+	if(pmdims){
+		*pmdims=mdims;
+	}
+	else{
+		xDelete<int>(mdims);
+	}
+	if(pndims){
+		*pndims=ndims;
+	}
+	else{
+		xDelete<int>(ndims);
+	}
+	*pnumrecords=num_instances;
+}
+/*}}}*/
+void  IoModel::FetchMultipleData(int*** pmatrices,int** pmdims,int** pndims, int* pnumrecords,const char* data_name){/*{{{*/
+
+	int     num_instances;
+	fpos_t* file_positions=NULL;
+
+	/*output: */
+	int        **matrices = NULL;
+	int         *mdims    = NULL;
+	int         *ndims    = NULL;
+
+	/*intermediary: */
+	int          M, N;
+	IssmPDouble *pmatrix = NULL;
+	IssmDouble  *matrix  = NULL;
+	int         *integer_matrix=NULL;
+	int         *codes   = NULL;
+	int          code;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+	
+	/*Get file pointers to beginning of the data (multiple instances of it): */
+	file_positions=this->SetFilePointersToData(&codes,NULL,&num_instances,data_name);
+
+	if(num_instances){
+
+		/*Allocate matrices :*/
+		matrices=xNew<int*>(num_instances);
+		mdims=xNew<int>(num_instances);
+		ndims=xNew<int>(num_instances);
+
+		for(int i=0;i<num_instances;i++){
+
+			if(my_rank==0){
+				code=codes[i];
+
+				if((code!=5) && (code!=6) && (code!=7))_error_("expecting a IssmDouble, integer or boolean matrix for \""<<data_name<<"\"");
+
+				/*We have to read a matrix from disk. First read the dimensions of the matrix, then the whole matrix: */
+				/*numberofelements: */
+				fsetpos(fid,file_positions+i);
+				if(fread(&M,sizeof(int),1,fid)!=1) _error_("could not read number of rows for matrix ");
+			}
+			ISSM_MPI_Bcast(&M,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+			if(my_rank==0){  
+				if(fread(&N,sizeof(int),1,fid)!=1) _error_("could not read number of columns for matrix ");
+			}
+			ISSM_MPI_Bcast(&N,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+
+			/*Now allocate matrix: */
+			if(M*N){
+				pmatrix=xNew<IssmPDouble>(M*N);
+				integer_matrix=xNew<int>(M*N);
+
+				/*Read matrix on node 0, then broadcast: */
+				if(my_rank==0){  
+					if(fread(pmatrix,M*N*sizeof(IssmPDouble),1,fid)!=1) _error_("could not read matrix ");
+				}
+				ISSM_MPI_Bcast(pmatrix,M*N,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm()); 
+
+				//if(this->independents[data_enum]){ FIXME
+				//	/*this data has already been checked out! So cancel all that we've done here, and return 
+				//	 * the data[data_enum] directly: */
+				//	matrix=this->data[data_enum];
+				//	for (int i=0;i<M*N;++i) integer_matrix[i]=reCast<int>(matrix[i]);
+				//}
+				//else{
+					for (int i=0;i<M*N;++i) integer_matrix[i]=pmatrix[i];
+				//}
+				xDelete<IssmPDouble>(pmatrix);
+			}
+			else
+				integer_matrix=NULL;
+			
+			
+			/*Assign: */
+			mdims[i]=M;
+			matrices[i]=integer_matrix;
+			ndims[i]=N;
+		}
+	}
+			
+	/*Free ressources:*/
+	xDelete<fpos_t>(file_positions);
+	xDelete<int>(codes);
+
+	/*Assign output pointers: */
+	*pmatrices=matrices;
+	if(pmdims){
+		*pmdims=mdims;
+	}
+	else{
+		xDelete<int>(mdims);
+	}
+	if(pndims){
+		*pndims=ndims;
+	}
+	else{
+		xDelete<int>(ndims);
+	}
+	*pnumrecords=num_instances;
+}
+/*}}}*/
+void  IoModel::FillIndependents(IssmDouble* xp){/*{{{*/
+
+	_assert_(xp);
+
+	/*Initialize local num ind*/
+	int local_num_ind = 0;
+
+	/*Process constants*/
+	for(vector<IoConstant*>::iterator iter=constants.begin();iter<constants.end();iter++){
+		if((*iter)->isindependent){
+			(*iter)->constant->GetParameterValue(&xp[local_num_ind]);
+			local_num_ind += 1;
+		}
+	}
+
+	/*Process data*/
+	for(vector<IoData*>::iterator iter=data.begin();iter<data.end();iter++){
+		if((*iter)->isindependent){
+			for(int i=0;i<(*iter)->M*(*iter)->N;i++){
+				xp[local_num_ind+i] = (*iter)->data[i];
+			}
+			local_num_ind += (*iter)->M*(*iter)->N;
+		}
+	}
+
+	_assert_(local_num_ind == this->NumIndependents());
+}
+/*}}}*/
+void  IoModel::FindConstant(bool* pvalue,const char* constant_name){/*{{{*/
+
+	/*Intermediary*/
+	vector<IoConstant*>::iterator iter;
+
+	for(iter=constants.begin();iter<constants.end();iter++){
+		IoConstant* ioconstant=*iter;
+
+		if(strcmp(ioconstant->name,constant_name)==0){
+			ioconstant->constant->GetParameterValue(pvalue);
+			return;
+		}
+	}
+
+	for(vector<IoConstant*>::iterator iter=constants.begin();iter<constants.end();iter++) (*iter)->constant->Echo();
+	_error_("Could not find constant \""<<constant_name<<"\"");
+}
+/*}}}*/
+void  IoModel::FindConstant(int* pvalue,const char* constant_name){/*{{{*/
+
+	/*Intermediary*/
+	vector<IoConstant*>::iterator iter;
+
+	for(iter=constants.begin();iter<constants.end();iter++){
+		IoConstant* ioconstant=*iter;
+
+		if(strcmp(ioconstant->name,constant_name)==0){
+			ioconstant->constant->GetParameterValue(pvalue);
+			return;
+		}
+	}
+
+	_error_("Could not find constant \""<<constant_name <<"\"");
+}
+/*}}}*/
+void  IoModel::FindConstant(IssmDouble* pvalue,const char* constant_name){/*{{{*/
+
+	/*Intermediary*/
+	vector<IoConstant*>::iterator iter;
+
+	for(iter=constants.begin();iter<constants.end();iter++){
+		IoConstant* ioconstant=*iter;
+
+		if(strcmp(ioconstant->name,constant_name)==0){
+			ioconstant->constant->GetParameterValue(pvalue);
+			return;
+		}
+	}
+
+	_error_("Could not find constant \""<<constant_name <<"\"");
+}
+/*}}}*/
+void  IoModel::FindConstant(char** pvalue,const char* constant_name){/*{{{*/
+
+	/*Intermediary*/
+	vector<IoConstant*>::iterator iter;
+
+	for(iter=constants.begin();iter<constants.end();iter++){
+		IoConstant* ioconstant=*iter;
+
+		if(strcmp(ioconstant->name,constant_name)==0){
+			ioconstant->constant->GetParameterValue(pvalue);
+			return;
+		}
+	}
+
+	_error_("Could not find constant \""<<constant_name <<"\"");
+}
+/*}}}*/
+void  IoModel::FindConstant(char*** pvalue,int* psize,const char* constant_name){/*{{{*/
+
+	/*Intermediary*/
+	vector<IoConstant*>::iterator iter;
+
+	for(iter=constants.begin();iter<constants.end();iter++){
+		IoConstant* ioconstant=*iter;
+
+		if(strcmp(ioconstant->name,constant_name)==0){
+			ioconstant->constant->GetParameterValue(pvalue,psize);
+			return;
+		}
+	}
+
+	_error_("Could not find constant \""<<constant_name <<"\"");
+}
+/*}}}*/
+int   IoModel::NumIndependents(void){/*{{{*/
+
+	/*Initialize output*/
+	int num_independents = 0;
+
+	/*Process constants*/
+	for(vector<IoConstant*>::iterator iter=constants.begin();iter<constants.end();iter++){
+		if((*iter)->isindependent){
+			num_independents+= 1;
+		}
+	}
+
+	/*Process data*/
+	for(vector<IoData*>::iterator iter=data.begin();iter<data.end();iter++){
+		if((*iter)->isindependent){
+			num_independents+= (*iter)->M*(*iter)->N;
+		}
+	}
+
+	/*return*/
+	return num_independents;
+}
+/*}}}*/
+fpos_t* IoModel::SetFilePointersToData(int** pcodes,int** pvector_types, int* pnum_instances,const char* data_name){/*{{{*/
+
+	int     found          = 0;
+	const char* mddot = "md.";
+	char* record_name = NULL;
+	int   record_name_size;
+	int     record_length;
+	int     record_code;           //1 to 7 number
+	int     vector_type;           //1 to 7 number
+	int    *vector_types   = NULL;
+	int    *codes          = NULL;
+	int     num_instances  = 0;
+	int     counter;
+	fpos_t *file_positions = NULL;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+	_assert_(strncmp(data_name,mddot,3)==0);
+
+	/*Go find in the binary file, the data we want to fetch and count the number of 
+	 * instances it appears: */
+	if(my_rank==0){
+
+		/*First set FILE* position to the beginning of the file: */
+		fseek(fid,0,SEEK_SET);
+
+		/*Now march through file looking for the correct data identifier: */
+		for(;;){
+			/*Read size of first string name: */
+			if(fread(&record_name_size,sizeof(int),1,fid)==0){
+				/*we have reached the end of the file. break: */
+				xDelete<char>(record_name);
+				break;
+			}
+			if(record_name_size<3 || record_name_size>80){
+				_error_("error while looking in binary file. Found a string of size "<<record_name_size);
+			}
+
+			/*Allocate string of correct size: */
+			record_name=xNew<char>(record_name_size+1);
+			record_name[record_name_size]='\0';
+
+			/*Read record_name: */
+			if(fread(record_name,record_name_size*sizeof(char),1,fid)==0){
+				break;
+			}
+			if(strncmp(record_name,mddot,3)!=0){
+				_error_("error while reading binary file: record does not start with \"md.\": "<<record_name);
+			}
+
+			/*Is this the record sought for? : */
+			if(strcmp(record_name,data_name)==0) num_instances++;
+
+			/*Read the record length, and use it to skip the record: */
+			if(fread(&record_length,sizeof(int),1,fid)!=1) _error_("Could not read record_length");
+			fseek(fid,record_length,SEEK_CUR);
+			xDelete<char>(record_name);
+		}
+
+		/*Ok, initialize the number of file handles we are going to return: */
+		if(num_instances){
+			file_positions = xNew<fpos_t>(num_instances);
+			codes          = xNew<int>(num_instances);
+			vector_types   = xNew<int>(num_instances);
+		}
+	
+		/*Reset FILE* position to the beginning of the file, and start again, this time saving the data information 
+		 * as we find it: */
+		counter=0;
+		fseek(fid,0,SEEK_SET);
+
+		for(;;){
+			/*Read size of first string name: */
+			if(fread(&record_name_size,sizeof(int),1,fid)==0){
+				/*we have reached the end of the file. break: */
+				break;
+			}
+			if(record_name_size<3 || record_name_size>80){
+				_error_("error while looking in binary file. Found a string of size "<<record_name_size);
+			}
+
+			/*Allocate string of correct size: */
+			record_name=xNew<char>(record_name_size+1);
+			record_name[record_name_size]='\0';
+
+			/*Read record_name: */
+			if(fread(record_name,record_name_size*sizeof(char),1,fid)==0){
+				/*we have reached the end of the file. break: */
+				xDelete<char>(record_name);
+				break;
+			}
+			if(strncmp(record_name,mddot,3)!=0){
+				_error_("error while reading binary file: record does not start with \"md.\": "<<record_name);
+			}
+
+			/*Is this the record sought for? : */
+			if(strcmp(record_name,data_name)==0){
+				/*Ok, we have found the correct string. Pass the record length, and read data type code: */
+				fseek(fid,sizeof(int),SEEK_CUR);
+				if(fread(&record_code,sizeof(int),1,fid)!=1) _error_("Could not read record_code");
+
+				/*if record_code points to a vector, get its type (nodal or elementary): */
+				if(5<=record_code && record_code<=7){
+					if(fread(&vector_type,sizeof(int),1,fid)!=1) _error_("Could not read vector_type");
+				}
+				codes[counter]        = record_code;
+				vector_types[counter] = vector_type;
+				fgetpos(fid,file_positions+counter);
+				
+				/*backup and skip over the record, as we have more work to do: */
+				if(5<=record_code && record_code<=7) fseek(fid,-sizeof(int),SEEK_CUR);
+				fseek(fid,-sizeof(int),SEEK_CUR);
+				fseek(fid,-sizeof(int),SEEK_CUR);
+				
+				/*increment counter: */
+				counter++;
+			}
+
+			/*Read the record length, and use it to skip this record, as it has already been processed: */
+			if(fread(&record_length,sizeof(int),1,fid)!=1) _error_("Could not read record_length");
+			/*skip: */
+			fseek(fid,record_length,SEEK_CUR);
+			xDelete<char>(record_name);
+		}
+	}
+
+	/*Broadcast data: */
+	ISSM_MPI_Bcast(&num_instances,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+	/*Assign output pointers:*/
+	*pcodes         = codes;
+	*pnum_instances = num_instances;
+	if(pvector_types){
+		*pvector_types=vector_types;
+	}
+	else{
+		xDelete<int>(vector_types);
+	}
+	return file_positions;
+}
+/*}}}*/
+FILE* IoModel::SetFilePointerToData(int* pcode,int* pvector_type,const char* data_name){/*{{{*/
+
+	int my_rank;
+
+	int found  = 0;
+	const char* mddot = "md.";
+	char* record_name = NULL;
+	int   record_name_size;
+	int record_length;
+	int record_code;       //1 to 7 number
+	int vector_type   = 0; //nodal or elementary
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+	_assert_(strncmp(data_name,mddot,3)==0);
+
+	/*Go find in the binary file, the position of the data we want to fetch: */
+	if(my_rank==0){
+
+		/*First set FILE* position to the beginning of the file: */
+		fseek(fid,0,SEEK_SET);
+
+		/*Now march through file looking for the correct data identifier: */
+		for(;;){
+			/*Read size of first string name: */
+			if(fread(&record_name_size,sizeof(int),1,fid)==0){
+				/*we have reached the end of the file. break: */
+				xDelete<char>(record_name);
+				break;
+			}
+			if(record_name_size<3 || record_name_size>80){
+				_error_("error while looking in binary file. Found a string of size "<<record_name_size);
+			}
+
+			/*Allocate string of correct size: */
+			record_name=xNew<char>(record_name_size+1);
+			record_name[record_name_size]='\0';
+
+			/*Read record_name: */
+			if(fread(record_name,record_name_size*sizeof(char),1,fid)==0){
+				/*we have reached the end of the file. break: */
+				found=0;
+				xDelete<char>(record_name);
+				break;
+			}
+			if(strncmp(record_name,mddot,3)!=0){
+				_error_("error while reading binary file: record does not start with \"md.\": "<<record_name);
+			}
+
+			/*Is this the record sought for? : */
+			if(strcmp(record_name,data_name)==0){
+				/*Ok, we have found the correct string. Pass the record length, and read data type code: */
+				fseek(fid,sizeof(int),SEEK_CUR);
+				if(fread(&record_code,sizeof(int),1,fid)!=1) _error_("Could not read record_code");
+
+				/*if record_code points to a vector, get its type (nodal or elementary): */
+				if(5<=record_code && record_code<=7){
+					if(fread(&vector_type,sizeof(int),1,fid)!=1) _error_("Could not read vector_type");
+				}
+				found=1;
+				xDelete<char>(record_name);
+				break;
+			}
+			else{
+				/*This is not the correct string, read the record length, and use it to skip this record: */
+				if(fread(&record_length,sizeof(int),1,fid)!=1) _error_("Could not read record_length");
+				/*skip: */
+				fseek(fid,record_length,SEEK_CUR);
+				xDelete<char>(record_name);
+			}
+		}
+	}
+	ISSM_MPI_Bcast(&found,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+	if(!found)_error_("could not find data with name \"" << data_name << "\" in binary file");
+
+	/*Broadcast code and vector type: */
+	ISSM_MPI_Bcast(&record_code,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+	ISSM_MPI_Bcast(&vector_type,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+	/*Assign output pointers:*/
+	*pcode=record_code;
+	if(pvector_type)*pvector_type=vector_type;
+
+	return fid;
+}
+/*}}}*/
+void  IoModel::StartTrace(bool trace){/*{{{*/
+
+	bool autodiff = false;
+	bool iscontrol = false;
+	bool keep=false;
+	IssmDouble gcTriggerRatio;
+	IssmDouble gcTriggerMaxSize;
+	IssmDouble obufsize;
+	IssmDouble lbufsize;
+	IssmDouble cbufsize;
+	IssmDouble tbufsize;
+
+	int my_rank=IssmComm::GetRank();
+
+	this->FetchData(&autodiff,"md.autodiff.isautodiff");
+	this->FetchData(&iscontrol,"md.inversion.iscontrol");
+
+	if(trace || (autodiff && !iscontrol)){
+		#ifdef _HAVE_ADOLC_
+		/*Retrieve parameters: */
+		this->FetchData(&keep,"md.autodiff.keep");
+		int keepTaylors=keep?1:0;
+		this->FetchData(&gcTriggerRatio,"md.autodiff.gcTriggerRatio");
+		this->FetchData(&gcTriggerMaxSize,"md.autodiff.gcTriggerMaxSize");
+		this->FetchData(&obufsize,"md.autodiff.obufsize");
+		this->FetchData(&lbufsize,"md.autodiff.lbufsize");
+		this->FetchData(&cbufsize,"md.autodiff.cbufsize");
+		this->FetchData(&tbufsize,"md.autodiff.tbufsize");
+
+		/*Set garbage collection parameters: */
+		setStoreManagerControl(reCast<IssmPDouble>(gcTriggerRatio),reCast<size_t>(gcTriggerMaxSize));
+
+		/*Start trace: */
+		int skipFileDeletion=1;
+		trace_on(my_rank,keepTaylors,reCast<size_t>(obufsize),reCast<size_t>(lbufsize),reCast<size_t>(cbufsize),reCast<size_t>(tbufsize),skipFileDeletion);
+		#endif
+	}
+
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/IoModel.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/IoModel.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/IoModel.h	(revision 21239)
@@ -0,0 +1,142 @@
+/* \file IoModel.h
+ * \brief  Header file defining the IoModel structure that will help in processing the input data coming 
+ * into ISSM, from Matlab, or through a binary file opened for reading.
+ * \sa IoModel.cpp
+ */
+
+#ifndef _IOMODEL_H
+#define _IOMODEL_H
+
+#include "../shared/Enum/Enum.h"
+#include <vector>
+
+class Parameters;
+class Elements;
+class Param;
+class Option;
+
+class IoConstant { /*holds single IssmDouble, int, bool and char from input*/
+	public:
+		Param* constant; 
+		bool   isindependent;
+		char*  name;
+
+		~IoConstant();
+		IoConstant();
+		IoConstant(bool value,const char* name_in);
+		IoConstant(int value,const char* name_in);
+		IoConstant(IssmDouble value,const char* name_in);
+		IoConstant(char* value,const char* name_in);
+		IoConstant(char** value,int numstrings,const char* name_in);
+};
+
+class IoData { /*holds temporary data (array), memory intensive*/
+	public:
+		int         code;
+		IssmDouble* data;
+		bool        isindependent;
+		int         layout;
+		int         M,N;
+		char*       name;
+
+		~IoData();
+		IoData();
+		IoData(IssmDouble* matrix,int code,int layout_in,int M,int N,const char* name_in);
+};
+
+class IoModel {
+
+	private: 
+		std::vector<IoConstant*> constants; //this dataset holds all IssmDouble, int, bool and char from input
+		std::vector<IoData*>     data;      //this dataset holds temporary data, memory intensive
+
+		/*for AD mode: to keep track of our independent variables we fetch:*/
+		//bool    *independents;
+		//DataSet *independent_objects;
+
+	public:
+		/*pointer to input file*/
+		FILE *fid;
+
+		/*Solution*/
+		int   solution_enum;
+
+		/*Partitioning*/
+		bool *my_elements;
+		int  *my_vertices;
+
+		/*Mesh properties and connectivity tables*/
+		int  domaindim;
+		int  domaintype;
+		int *elements;
+		int *edges;
+		int *elementtoedgeconnectivity;
+		int *elementtofaceconnectivity;
+		int *faces;
+		int  facescols;
+		int  meshelementtype;
+		int *numbernodetoelementconnectivity;
+		int  numberofedges;
+		int  numberofelements;
+		int  numberoffaces;
+		int  numberofvertices;
+		int *singlenodetoelementconnectivity;
+
+		/*Data to synchronize through low level object drivers: */
+		int constraintcounter;   //keep track of how many constraints are being created in each analysis
+		int loadcounter;         //keep track of how many loads are being created in each analysis
+		int nodecounter;         //keep track of how many nodes are being created in each analysis
+
+		/*Methods*/
+		~IoModel();
+		IoModel();
+		IoModel(FILE* iomodel_handle,int solution_enum_in,bool trace,IssmPDouble* X);
+
+		/*NEW*/
+		void        AddConstant(IoConstant* constant_in);
+		void        AddConstantIndependent(IoConstant* constant_in);
+		void        AddData(IoData* data_in);
+		void        AddDataIndependent(IoData* data_in);
+		void        FetchIndependentConstant(int* pXcount,IssmPDouble* X,const char* name);
+		void        FetchIndependentData(int* pXcount,IssmPDouble* X,const char* name);
+		void        FillIndependents(IssmDouble* xp);
+		void        FindConstant(bool* pvalue,const char* constant_name);
+		void        FindConstant(int* pvalue,const char* constant_name);
+		void        FindConstant(IssmDouble* pvalue,const char* constant_name);
+		void        FindConstant(char **pvalue,const char* constant_name);
+		void        FindConstant(char ***pvalue,int* psize,const char* constant_name);
+		int         NumIndependents();
+
+		/*Input/Output*/
+		void        CheckFile(void);
+		Param      *CopyConstantObject(const char* constant_name,int param_enum);
+		IssmDouble *Data(const char* data_name);
+		void        DeclareIndependents(bool trace,IssmPDouble* X);
+		void        DeleteData(int num,...);
+		void        DeleteData(IssmDouble* vector,const char* data_name);
+		void        DeleteData(char*** pstringarray, int numstrings,const char* data_name);
+		void        FetchConstants(void);
+		void        FetchData(bool* pboolean,const char* data_name);
+		void        FetchData(int* pinteger,const char* data_name);
+		void        FetchData(IssmDouble* pscalar,const char* data_name);
+		void        FetchData(char** pstring,const char* data_name);
+		void        FetchData(char*** pstrings,int* pnumstrings,const char* data_name);
+		void        FetchData(int** pmatrix,int* pM,int* pN,const char* data_name);
+		void        FetchData(IssmDouble**  pscalarmatrix,int* pM,int* pN,const char* data_name);
+		void        FetchData(IssmDouble*** pmatrixarray,int** pmdims,int** pndims, int* pnumrecords,const char* data_name);
+		void        FetchData(Options *options,const char* data_name);
+		void        FetchData(int num,...);
+		void        FetchDataToInput(Elements* elements,const char* vector_name,int input_enum);
+		void        FetchDataToInput(Elements* elements,const char* vector_name,int input_enum,IssmDouble default_value);
+		void        FetchIndependent(const char* dependent_name);
+		void        FetchMultipleData(char***   pstringarray,int* pnumstrings,const char* data_name);
+		void        FetchMultipleData(IssmDouble*** pmatrixarray,int** pmdims,int** pndims, int* pnumrecords,const char* data_name);
+		void        FetchMultipleData(int*** pmatrices,int** pmdims,int** pndims, int* pnumrecords,const char* data_name);
+		void        FetchMultipleData(int** pvector, int* pnum_instances,const char* data_name);
+		void        FetchMultipleData(IssmDouble** pvector, int* pnum_instances,const char* data_name);
+		fpos_t*     SetFilePointersToData(int** pcodes,int** pvector_types, int* pnum_instances, const char* data_name);
+		FILE*       SetFilePointerToData(int* pcode,int* pvector_type, const char* data_name);
+		void        StartTrace(bool trace);
+};
+
+#endif  /* _IOMODEL_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Friction.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Friction.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Friction.cpp	(revision 21239)
@@ -0,0 +1,659 @@
+/*!\file Friction.c
+ * \brief: implementation of the Friction object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+/*}}}*/	
+
+/*Constructors/destructors*/
+Friction::Friction(){/*{{{*/
+	this->element=NULL;
+	this->dim=0;
+	this->law=0;
+
+}
+/*}}}*/
+Friction::Friction(Element* element_in,int dim_in){/*{{{*/
+
+	this->element=element_in;
+	this->dim=dim_in;
+	element_in->FindParam(&this->law,FrictionLawEnum);
+}
+/*}}}*/
+Friction::~Friction(){/*{{{*/
+}
+/*}}}*/
+
+/*methods: */
+void Friction::Echo(void){/*{{{*/
+	_printf_("Friction:\n");
+	_printf_("   dim: " << this->dim<< "\n");
+}
+/*}}}*/
+void Friction::GetAlphaComplement(IssmDouble* palpha_complement, Gauss* gauss){/*{{{*/
+
+	switch(this->law){
+		case 1:
+			GetAlphaViscousComplement(palpha_complement,gauss);
+			break;
+		case 3:
+			GetAlphaHydroComplement(palpha_complement,gauss);
+			break;
+		case 4:
+			GetAlphaTempComplement(palpha_complement,gauss);
+			break;
+	  default:
+			_error_("not supported");
+	}
+
+}/*}}}*/
+void Friction::GetAlphaHydroComplement(IssmDouble* palpha_complement, Gauss* gauss){/*{{{*/
+
+	/*diverse: */
+	int         CoupledFlag;
+	IssmDouble  q_exp;
+	IssmDouble  C_param;
+	IssmDouble  As;
+	IssmDouble  Neff;
+	IssmDouble  n;
+	IssmDouble  alpha;
+	IssmDouble  Chi,Gamma;
+	IssmDouble  vx,vy,vz,vmag;
+	IssmDouble  alpha_complement;
+
+	/*Recover parameters: */
+	element->GetInputValue(&q_exp,FrictionQEnum);
+	element->GetInputValue(&C_param,FrictionCEnum);
+
+	element->GetInputValue(&As,gauss,FrictionAsEnum);
+	element->GetInputValue(&n,gauss,MaterialsRheologyNEnum);
+	element->parameters->FindParam(&CoupledFlag,FrictionCouplingEnum);
+
+	if (CoupledFlag==1){
+		element->GetInputValue(&Neff,gauss,EffectivePressureEnum);
+	}
+	else{
+		element->GetInputValue(&Neff,gauss,FrictionEffectivePressureEnum);
+	}
+
+	if(Neff<0)Neff=0;
+
+	//We need the velocity magnitude to evaluate the basal stress:
+	switch(dim){
+		case 1:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			vmag=sqrt(vx*vx);
+			break;
+		case 2:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			element->GetInputValue(&vy,gauss,VyEnum);
+			vmag=sqrt(vx*vx+vy*vy);
+			break;
+		case 3:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			element->GetInputValue(&vy,gauss,VyEnum);
+			element->GetInputValue(&vz,gauss,VzEnum);
+			vmag=sqrt(vx*vx+vy*vy+vz*vz);
+			break;
+		default:
+			_error_("not supported");
+	}
+	//	vmag=100./(3600.*24.*365.);
+
+	if (q_exp==1){
+		alpha=1;
+	}
+	else{
+		alpha=(pow(q_exp-1,q_exp-1))/pow(q_exp,q_exp);
+	}
+	Chi   = vmag/(pow(C_param,n)*pow(Neff,n)*As);
+	Gamma = (Chi/(1.+alpha*pow(Chi,q_exp)));
+	/*Check to prevent dividing by zero if vmag==0*/
+	if(vmag==0.) alpha_complement=0.;
+	else	if(Neff==0.) alpha_complement=0.;
+	else	alpha_complement=-(C_param*Neff/(n*vmag)) *
+					pow(Gamma,((1.-n)/n)) *
+					(Gamma/As - (alpha*q_exp*pow(Chi,q_exp-1.)* Gamma * Gamma/As));
+
+	_assert_(!xIsNan<IssmDouble>(alpha_complement));
+	/*Assign output pointers:*/
+	*palpha_complement=alpha_complement;
+}
+/*}}}*/
+void Friction::GetAlphaTempComplement(IssmDouble* palpha_complement, Gauss* gauss){/*{{{*/
+	/*Here, we want to parameterize the friction as a function of temperature
+	 *
+	 * alpha2 = alpha2_viscous * 1/f(T)
+	 *
+	 * where f(T) = exp((T-Tpmp)/gamma)
+	 */
+
+	/*Intermediaries: */
+	IssmDouble  f,T,pressure,Tpmp,gamma;
+	IssmDouble  alpha_complement;
+
+	/*Get viscous part*/
+	this->GetAlphaViscousComplement(&alpha_complement,gauss);
+
+	/*Get pressure melting point (Tpmp) for local pressure and get current temperature*/
+	element->GetInputValue(&T,gauss,TemperatureEnum);
+	element->GetInputValue(&pressure,gauss,PressureEnum);
+	Tpmp = element->TMeltingPoint(pressure);
+
+	/*Compute scaling parameter*/
+	element->parameters->FindParam(&gamma,FrictionGammaEnum);
+	alpha_complement = alpha_complement/ exp((T-Tpmp)/gamma);
+
+	/*Assign output pointers:*/
+	*palpha_complement=alpha_complement;
+}/*}}}*/
+void Friction::GetAlphaViscousComplement(IssmDouble* palpha_complement, Gauss* gauss){/*{{{*/
+
+	/* FrictionGetAlpha2 computes alpha2= drag^2 * Neff ^r * vel ^s, with Neff=rho_ice*g*thickness+rho_ice*g*bed, r=q/p and s=1/p. 
+	 * FrictionGetAlphaComplement is used in control methods on drag, and it computes: 
+	 * alpha_complement= Neff ^r * vel ^s*/
+
+	/*diverse: */
+	IssmDouble  r,s;
+	IssmDouble  vx,vy,vz,vmag;
+	IssmDouble  drag_p,drag_q;
+	IssmDouble  Neff;
+	IssmDouble  drag_coefficient;
+	IssmDouble  bed,thickness,sealevel;
+	IssmDouble  alpha_complement;
+
+	/*Recover parameters: */
+	element->GetInputValue(&drag_p,FrictionPEnum);
+	element->GetInputValue(&drag_q,FrictionQEnum);
+	element->GetInputValue(&thickness, gauss,ThicknessEnum);
+	element->GetInputValue(&bed, gauss,BaseEnum);
+	element->GetInputValue(&sealevel, gauss,SealevelEnum);
+	element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
+	IssmDouble rho_water   = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	IssmDouble rho_ice     = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble gravity     = element->GetMaterialParameter(ConstantsGEnum);
+
+	//compute r and q coefficients: */
+	r=drag_q/drag_p;
+	s=1./drag_p;
+
+	//From bed and thickness, compute effective pressure when drag is viscous:
+	Neff=gravity*(rho_ice*thickness+rho_water*(bed-sealevel));
+	if(Neff<0)Neff=0;
+
+	//We need the velocity magnitude to evaluate the basal stress:
+	switch(dim){
+		case 1:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			vmag=sqrt(vx*vx);
+			break;
+		case 2:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			element->GetInputValue(&vy,gauss,VyEnum);
+			vmag=sqrt(vx*vx+vy*vy);
+			break;
+		case 3:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			element->GetInputValue(&vy,gauss,VyEnum);
+			element->GetInputValue(&vz,gauss,VzEnum);
+			vmag=sqrt(vx*vx+vy*vy+vz*vz);
+			break;
+		default:
+			_error_("not supported");
+	}
+
+	/*Check to prevent dividing by zero if vmag==0*/
+	if(vmag==0. && (s-1.)<0.) alpha_complement=0.;
+	else alpha_complement=pow(Neff,r)*pow(vmag,(s-1));_assert_(!xIsNan<IssmDouble>(alpha_complement));
+
+	/*Assign output pointers:*/
+	*palpha_complement=alpha_complement;
+}
+/*}}}*/
+void Friction::GetAlpha2(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	switch(this->law){
+		case 1:
+			GetAlpha2Viscous(palpha2,gauss);
+			break;
+		case 2:
+			GetAlpha2Weertman(palpha2,gauss);
+			break;
+		case 3:
+			GetAlpha2Hydro(palpha2,gauss);
+			break;
+		case 4:
+			GetAlpha2Temp(palpha2,gauss);
+			break;
+		case 5:
+			GetAlpha2WaterLayer(palpha2,gauss);
+			break;
+		case 6:
+			GetAlpha2WeertmanTemp(palpha2,gauss);
+			break;
+		case 7:
+			GetAlpha2Coulomb(palpha2,gauss);
+			break;
+		case 8:
+			GetAlpha2Sommers(palpha2,gauss);
+			break;
+	  default:
+			_error_("Friction law "<< this->law <<" not supported");
+	}
+
+}/*}}}*/
+void Friction::GetAlpha2Coulomb(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	/*This routine calculates the basal friction coefficient 
+	  alpha2= drag^2 * Neff ^r * | vel | ^(s-1), with Neff=rho_ice*g*thickness+rho_ice*g*base, r=q/p and s=1/p**/
+
+	/*diverse: */
+	IssmDouble  r,s;
+	IssmDouble  drag_p, drag_q;
+	IssmDouble  Neff;
+	IssmDouble  thickness,base,bed,floatation_thickness,sealevel;
+	IssmDouble  vx,vy,vz,vmag;
+	IssmDouble  drag_coefficient,drag_coefficient_coulomb;
+	IssmDouble  alpha2,alpha2_coulomb;
+
+	/*Recover parameters: */
+	element->GetInputValue(&drag_p,FrictionPEnum);
+	element->GetInputValue(&drag_q,FrictionQEnum);
+	element->GetInputValue(&thickness, gauss,ThicknessEnum);
+	element->GetInputValue(&base, gauss,BaseEnum);
+	element->GetInputValue(&sealevel, gauss,SealevelEnum);
+	element->GetInputValue(&bed, gauss,BedEnum);
+	element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
+	element->GetInputValue(&drag_coefficient_coulomb, gauss,FrictionCoefficientcoulombEnum);
+	IssmDouble rho_water        = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	IssmDouble rho_ice          = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble gravity          = element->GetMaterialParameter(ConstantsGEnum);
+
+	//compute r and q coefficients: */
+	r=drag_q/drag_p;
+	s=1./drag_p;
+
+	//From base and thickness, compute effective pressure when drag is viscous:
+	Neff=gravity*(rho_ice*thickness+rho_water*(base-sealevel));
+	if(Neff<0)Neff=0;
+
+	switch(dim){
+		case 1:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			vmag=sqrt(vx*vx);
+			break;
+		case 2:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			element->GetInputValue(&vy,gauss,VyEnum);
+			vmag=sqrt(vx*vx+vy*vy);
+			break;
+		case 3:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			element->GetInputValue(&vy,gauss,VyEnum);
+			element->GetInputValue(&vz,gauss,VzEnum);
+			vmag=sqrt(vx*vx+vy*vy+vz*vz);
+			break;
+		default:
+			_error_("not supported");
+	}
+
+	/*Check to prevent dividing by zero if vmag==0*/
+	if(vmag==0. && (s-1.)<0.) alpha2=0.;
+	else alpha2=drag_coefficient*drag_coefficient*pow(Neff,r)*pow(vmag,(s-1.));
+
+	floatation_thickness=0;
+	if(bed<0) floatation_thickness=-rho_water/rho_ice*bed;
+	if(vmag==0.) alpha2_coulomb=0.;
+	else alpha2_coulomb=drag_coefficient_coulomb*drag_coefficient_coulomb*rho_water*gravity*(thickness-floatation_thickness)/vmag;
+
+	if(alpha2_coulomb<alpha2) alpha2=alpha2_coulomb;
+
+	_assert_(!xIsNan<IssmDouble>(alpha2));
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+void Friction::GetAlpha2Hydro(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	/*This routine calculates the basal friction coefficient 
+		Based on Gagliardini 2007, needs a good effective pressure computation
+		Not tested so far so use at your own risks
+	  alpha2= NeffC[Chi/(1+alpha*Chi^q)]^(1/n)*1/vel  with
+		-Chi=|vel|/(C^n*Neff^n*As)
+		-alpha=(q-1)^(q-1)/q^q */
+
+	/*diverse: */
+	int         CoupledFlag;
+	IssmDouble  q_exp;
+	IssmDouble  C_param;
+	IssmDouble  As;
+
+	IssmDouble  Neff;
+	IssmDouble  n;
+
+	IssmDouble  alpha;
+	IssmDouble  Chi,Gamma;
+
+	IssmDouble  vx,vy,vz,vmag;
+	IssmDouble  alpha2;
+
+	/*Recover parameters: */
+	element->GetInputValue(&q_exp,FrictionQEnum);
+	element->GetInputValue(&C_param,FrictionCEnum);
+	element->GetInputValue(&As,gauss,FrictionAsEnum);
+	element->GetInputValue(&n,gauss,MaterialsRheologyNEnum);
+	
+	element->parameters->FindParam(&CoupledFlag,FrictionCouplingEnum);
+	if (CoupledFlag==1){
+		element->GetInputValue(&Neff,gauss,EffectivePressureEnum);
+	}
+	else{
+		element->GetInputValue(&Neff,gauss,FrictionEffectivePressureEnum);
+	}
+		
+	if(Neff<0)Neff=0;
+
+	switch(dim){
+		case 1:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			vmag=sqrt(vx*vx);
+			break;
+		case 2:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			element->GetInputValue(&vy,gauss,VyEnum);
+			vmag=sqrt(vx*vx+vy*vy);
+			break;
+		case 3:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			element->GetInputValue(&vy,gauss,VyEnum);
+			element->GetInputValue(&vz,gauss,VzEnum);
+			vmag=sqrt(vx*vx+vy*vy+vz*vz);
+			break;
+		default:
+			_error_("not supported");
+	}
+
+	//	vmag=100./(3600.*24.*365.);
+	//compute alpha and Chi coefficients: */
+	if (q_exp==1){
+		alpha=1;
+	}
+	else{
+		alpha=(pow(q_exp-1,q_exp-1))/pow(q_exp,q_exp);
+	}
+	Chi=vmag/(pow(C_param,n)*pow(Neff,n)*As);
+	Gamma=(Chi/(1. + alpha * pow(Chi,q_exp)));
+	/*Check to prevent dividing by zero if vmag==0*/
+	if(vmag==0.) alpha2=0.; 
+	else	if (Neff==0) alpha2=0.0;
+	else	alpha2=Neff * C_param * pow(Gamma,1./n) * 1/vmag;
+
+	_assert_(!xIsNan<IssmDouble>(alpha2));
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+void Friction::GetAlpha2Sommers(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	/* FrictionGetAlpha2 computes alpha2= drag^2 * Neff, with Neff=rho_ice*g*thickness+rho_ice*g*(head-bed)*/
+
+	/*diverse: */
+	IssmDouble  pressure_ice,pressure_water;
+	IssmDouble  Neff;
+	IssmDouble  drag_coefficient;
+	IssmDouble  bed,thickness,head,sealevel;
+	IssmDouble  alpha2;
+
+	/*Recover parameters: */
+	element->GetInputValue(&thickness, gauss,ThicknessEnum);
+	element->GetInputValue(&bed, gauss,BaseEnum);
+	element->GetInputValue(&head, gauss,HydrologyHeadEnum);
+	element->GetInputValue(&sealevel, gauss,SealevelEnum);
+	element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
+	IssmDouble rho_water   = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	IssmDouble rho_ice     = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble gravity     = element->GetMaterialParameter(ConstantsGEnum);
+
+	//From bed and thickness, compute effective pressure when drag is viscous:
+	pressure_ice   = rho_ice*gravity*thickness;
+	pressure_water = rho_water*gravity*(head-bed+sealevel);
+	Neff=pressure_ice-pressure_water;
+	if(Neff<0.) Neff=0.;
+
+	alpha2=drag_coefficient*drag_coefficient*Neff;
+	_assert_(!xIsNan<IssmDouble>(alpha2));
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}
+/*}}}*/
+void Friction::GetAlpha2Temp(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+	/*Here, we want to parameterize the friction as a function of temperature
+	 *
+	 * alpha2 = alpha2_viscous * 1/f(T)
+	 *
+	 * where f(T) = exp((T-Tpmp)/gamma)
+	 */
+
+	/*Intermediaries: */
+	IssmDouble  f,T,pressure,Tpmp,gamma;
+	IssmDouble  alpha2;
+
+	/*Get viscous part*/
+	this->GetAlpha2Viscous(&alpha2,gauss);
+
+	/*Get pressure melting point (Tpmp) for local pressure and get current temperature*/
+	element->GetInputValue(&T,gauss,TemperatureEnum);
+	element->GetInputValue(&pressure,gauss,PressureEnum);
+	Tpmp = element->TMeltingPoint(pressure);
+
+	/*Compute scaling parameter*/
+	element->parameters->FindParam(&gamma,FrictionGammaEnum);
+	alpha2 = alpha2 / exp((T-Tpmp)/gamma);
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+void Friction::GetAlpha2Viscous(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	/*This routine calculates the basal friction coefficient 
+	  alpha2= drag^2 * Neff ^r * | vel | ^(s-1), with Neff=rho_ice*g*thickness+rho_ice*g*bed, r=q/p and s=1/p**/
+
+	/*diverse: */
+	IssmDouble  r,s;
+	IssmDouble  drag_p, drag_q;
+	IssmDouble  Neff;
+	IssmDouble  thickness,base,sealevel;
+	IssmDouble  vx,vy,vz,vmag;
+	IssmDouble  drag_coefficient;
+	IssmDouble  alpha2;
+
+	/*Recover parameters: */
+	element->GetInputValue(&drag_p,FrictionPEnum);
+	element->GetInputValue(&drag_q,FrictionQEnum);
+	element->GetInputValue(&thickness, gauss,ThicknessEnum);
+	element->GetInputValue(&base, gauss,BaseEnum);
+	element->GetInputValue(&sealevel, gauss,SealevelEnum);
+	element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
+	IssmDouble rho_water   = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	IssmDouble rho_ice     = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble gravity     = element->GetMaterialParameter(ConstantsGEnum);
+
+	//compute r and q coefficients: */
+	r=drag_q/drag_p;
+	s=1./drag_p;
+
+	//From base and thickness, compute effective pressure when drag is viscous:
+	Neff=gravity*(rho_ice*thickness+rho_water*(base-sealevel));
+	if(Neff<0)Neff=0;
+
+	switch(dim){
+		case 1:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			vmag=sqrt(vx*vx);
+			break;
+		case 2:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			element->GetInputValue(&vy,gauss,VyEnum);
+			vmag=sqrt(vx*vx+vy*vy);
+			break;
+		case 3:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			element->GetInputValue(&vy,gauss,VyEnum);
+			element->GetInputValue(&vz,gauss,VzEnum);
+			vmag=sqrt(vx*vx+vy*vy+vz*vz);
+			break;
+		default:
+			_error_("not supported");
+	}
+
+	/*Check to prevent dividing by zero if vmag==0*/
+	if(vmag==0. && (s-1.)<0.) alpha2=0.;
+	else alpha2=drag_coefficient*drag_coefficient*pow(Neff,r)*pow(vmag,(s-1.));
+	_assert_(!xIsNan<IssmDouble>(alpha2));
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+void Friction::GetAlpha2WaterLayer(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	/*This routine calculates the basal friction coefficient 
+	  alpha2= drag^2 * Neff ^r * | vel | ^(s-1), with Neff=rho_ice*g*thickness+rho_ice*g*bed, r=q/p and s=1/p**/
+
+	/*diverse: */
+	IssmDouble  r,s;
+	IssmDouble  drag_p, drag_q;
+	IssmDouble  Neff,F;
+	IssmDouble  thickness,bed,sealevel;
+	IssmDouble  vx,vy,vz,vmag;
+	IssmDouble  drag_coefficient,water_layer;
+	IssmDouble  alpha2;
+
+	/*Recover parameters: */
+	element->parameters->FindParam(&F,FrictionFEnum);
+	element->GetInputValue(&drag_p,FrictionPEnum);
+	element->GetInputValue(&drag_q,FrictionQEnum);
+	element->GetInputValue(&thickness, gauss,ThicknessEnum);
+	element->GetInputValue(&bed, gauss,BaseEnum);
+	element->GetInputValue(&sealevel, gauss,SealevelEnum);
+	element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
+	element->GetInputValue(&water_layer, gauss,FrictionWaterLayerEnum);
+	IssmDouble rho_water   = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	IssmDouble rho_ice     = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble gravity     = element->GetMaterialParameter(ConstantsGEnum);
+
+	//compute r and q coefficients: */
+	r=drag_q/drag_p;
+	s=1./drag_p;
+
+	//From bed and thickness, compute effective pressure when drag is viscous:
+	if(bed>0) bed=0;
+	if(water_layer==0) Neff=gravity*rho_ice*thickness+gravity*rho_water*(bed-sealevel);
+	else if(water_layer>0) Neff=gravity*rho_ice*thickness*F;
+	else _error_("negative water layer thickness");
+	if(Neff<0) Neff=0;
+
+	switch(dim){
+		case 1:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			vmag=sqrt(vx*vx);
+			break;
+		case 2:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			element->GetInputValue(&vy,gauss,VyEnum);
+			vmag=sqrt(vx*vx+vy*vy);
+			break;
+		case 3:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			element->GetInputValue(&vy,gauss,VyEnum);
+			element->GetInputValue(&vz,gauss,VzEnum);
+			vmag=sqrt(vx*vx+vy*vy+vz*vz);
+			break;
+		default:
+			_error_("not supported");
+	}
+
+	/*Check to prevent dividing by zero if vmag==0*/
+	if(vmag==0. && (s-1.)<0.) alpha2=0.;
+	else alpha2=drag_coefficient*drag_coefficient*pow(Neff,r)*pow(vmag,(s-1.));
+	_assert_(!xIsNan<IssmDouble>(alpha2));
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+void Friction::GetAlpha2Weertman(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	/*This routine calculates the basal friction coefficient alpha2= C^-1/m |v|^(1/m-1) */
+
+	/*diverse: */
+	IssmDouble  C,m;
+	IssmDouble  vx,vy,vz,vmag;
+	IssmDouble  alpha2;
+
+	/*Recover parameters: */
+	element->GetInputValue(&C,gauss,FrictionCEnum);
+	element->GetInputValue(&m,FrictionMEnum);
+
+	switch(dim){
+		case 1:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			vmag=sqrt(vx*vx);
+			break;
+		case 2:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			element->GetInputValue(&vy,gauss,VyEnum);
+			vmag=sqrt(vx*vx+vy*vy);
+			break;
+		case 3:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			element->GetInputValue(&vy,gauss,VyEnum);
+			element->GetInputValue(&vz,gauss,VzEnum);
+			vmag=sqrt(vx*vx+vy*vy+vz*vz);
+			break;
+		default:
+			_error_("not supported");
+	}
+
+	/*Check to prevent dividing by zero if vmag==0*/
+	if(vmag==0. && (1./m-1.)<0.) alpha2=0.;
+	else alpha2=pow(C,-1./m)*pow(vmag,(1./m-1.));
+	_assert_(!xIsNan<IssmDouble>(alpha2));
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+void Friction::GetAlpha2WeertmanTemp(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+	/*Here, we want to parameterize the friction as a function of temperature
+	 *
+	 * alpha2 = alpha2_weertman * 1/f(T)
+	 *
+	 * where f(T) = exp((T-Tpmp)/gamma)
+	 */
+
+	/*Intermediaries: */
+	IssmDouble  f,T,pressure,Tpmp,gamma;
+	IssmDouble  alpha2;
+
+	/*Get viscous part*/
+	this->GetAlpha2Weertman(&alpha2,gauss);
+
+	/*Get pressure melting point (Tpmp) for local pressure and get current temperature*/
+	element->GetInputValue(&T,gauss,TemperatureEnum);
+	element->GetInputValue(&pressure,gauss,PressureEnum);
+	Tpmp = element->TMeltingPoint(pressure);
+
+	/*Compute scaling parameter*/
+	element->parameters->FindParam(&gamma,FrictionGammaEnum);
+	alpha2 = alpha2 / exp((T-Tpmp)/gamma);
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Friction.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Friction.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Friction.h	(revision 21239)
@@ -0,0 +1,46 @@
+/*!\file Friction.h
+ * \brief: header file for friction object
+ */
+
+#ifndef _FRICTION_H_
+#define _FRICTION_H_
+
+/*Headers:*/
+/*{{{*/
+class Inputs;
+class Matpar;
+class GaussPenta;
+class GaussTria;
+/*}}}*/
+
+class Friction{
+
+	public:
+		int analysis_type;
+
+		Element* element;
+		int      dim;
+		int      law;
+
+		/*methods: */
+		Friction();
+		Friction(Element* element_in,int dim_in);
+		~Friction();
+
+		void  Echo(void);
+		void  GetAlphaComplement(IssmDouble* alpha_complement,Gauss* gauss);
+		void  GetAlphaHydroComplement(IssmDouble* alpha_complement,Gauss* gauss);
+		void  GetAlphaTempComplement(IssmDouble* alpha_complement,Gauss* gauss);
+		void  GetAlphaViscousComplement(IssmDouble* alpha_complement,Gauss* gauss);
+		void  GetAlpha2(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2Coulomb(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2Hydro(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2Sommers(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2Temp(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2Viscous(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2WaterLayer(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2Weertman(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2WeertmanTemp(IssmDouble* palpha2,Gauss* gauss);
+};
+
+#endif  /* _FRICTION_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Load.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Load.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Load.h	(revision 21239)
@@ -0,0 +1,43 @@
+/*!\file:  Load.h
+ * \brief abstract class for Load object
+ * This class is a place holder for the Icefront  and the Penpair loads.
+ * It is derived from Load, so DataSets can contain them.
+ */ 
+
+#ifndef _LOAD_H_
+#define _LOAD_H_
+
+/*Headers:*/
+class Node;
+template <class doublematrix> class Matrix;
+template <class doubletype> class Vector;
+class Elements;
+class Loads;
+class Nodes;
+class Vertices;
+class Materials;
+class Parameters;
+#include "../../datastructures/datastructures.h"
+#include "../Update.h"
+
+class Load: public Object,public Update{
+
+	public: 
+		virtual       ~Load(){};
+		virtual void  Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters)=0;
+		virtual void  CreateJacobianMatrix(Matrix<IssmDouble>* Jff)=0;
+		virtual void  CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs)=0;
+		virtual void  CreatePVector(Vector<IssmDouble>* pf)=0;
+		virtual void  GetNodesLidList(int* lidlist)=0;
+		virtual void  GetNodesSidList(int* sidlist)=0;
+		virtual int   GetNumberOfNodes(void)=0;
+		virtual bool  InAnalysis(int analysis_type)=0;
+		virtual bool  IsPenalty(void)=0;
+		virtual void  PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax)=0;
+		virtual void  PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs, IssmDouble kmax)=0;
+		virtual void  PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax)=0;
+		virtual void  ResetHooks()=0;
+		virtual void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters)=0;
+		virtual void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum)=0;
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Loads.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Loads.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Loads.cpp	(revision 21239)
@@ -0,0 +1,181 @@
+/*
+ * \file Loads.cpp
+ * \brief: Implementation of Loads class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <vector>
+#include <functional>
+#include <algorithm>
+
+#include "../../shared/io/Comm/IssmComm.h"
+#include "./Loads.h"
+#include "./Load.h"
+
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+Loads::Loads(){/*{{{*/
+	enum_type=LoadsEnum;
+	return;
+}
+/*}}}*/
+Loads::~Loads(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Numerics:*/
+void Loads::Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Load* load=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		load=xDynamicCast<Load*>(*object);
+		load->Configure(elements,loads,nodes,vertices,materials,parameters);
+
+	}
+
+}
+/*}}}*/
+bool Loads::IsPenalty(int analysis_type){/*{{{*/
+
+	int ispenalty=0;
+	int allispenalty=0;
+
+	/*Now go through all loads, and get how many nodes they own, unless they are clone nodes: */
+	for(int i=0;i<this->Size();i++){
+
+		Load* load=xDynamicCast<Load*>(this->GetObjectByOffset(i));
+		if (load->InAnalysis(analysis_type)){
+			if(load->IsPenalty()) ispenalty++;
+		}
+	}
+
+	/*Grab sum of all cpus: */
+	ISSM_MPI_Allreduce((void*)&ispenalty,(void*)&allispenalty,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
+	ispenalty=allispenalty;
+
+	if(ispenalty)
+	 return true;
+	else
+	 return false;
+}
+/*}}}*/
+int  Loads::MaxNumNodes(int analysis_type){/*{{{*/
+
+	int max=0;
+	int allmax;
+	int numnodes=0;
+
+	/*Now go through all loads, and get how many nodes they own, unless they are clone nodes: */
+	for(int i=0;i<this->Size();i++){
+
+		Load* load=xDynamicCast<Load*>(this->GetObjectByOffset(i));
+		if (load->InAnalysis(analysis_type)){
+			numnodes=load->GetNumberOfNodes();
+			if(numnodes>max)max=numnodes;
+		}
+	}
+
+	/*Grab max of all cpus: */
+	ISSM_MPI_Allreduce((void*)&max,(void*)&allmax,1,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
+	max=allmax;
+
+	return max;
+}
+/*}}}*/
+int  Loads::NumberOfLoads(void){/*{{{*/
+
+	int localloads;
+	int numberofloads;
+
+	/*Get number of local loads*/
+	localloads=this->Size();
+
+	/*figure out total number of loads combining all the cpus (no clones here)*/
+	ISSM_MPI_Reduce(&localloads,&numberofloads,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&numberofloads,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	return numberofloads;
+}
+/*}}}*/
+int  Loads::NumberOfLoads(int analysis_type){/*{{{*/
+
+	int localloads = 0;
+	int numberofloads;
+
+	/*Get number of local loads*/
+	for(int i=0;i<this->Size();i++){
+
+		Load* load=xDynamicCast<Load*>(this->GetObjectByOffset(i));
+
+		/*Check that this load corresponds to our analysis currently being carried out: */
+		if (load->InAnalysis(analysis_type)) localloads++;
+	}
+
+	/*figure out total number of loads combining all the cpus (no clones here)*/
+	ISSM_MPI_Reduce(&localloads,&numberofloads,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&numberofloads,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	return numberofloads;
+}
+/*}}}*/
+void Loads::ResetHooks(){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Load* load=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		load=xDynamicCast<Load*>((*object));
+		load->ResetHooks();
+
+	}
+
+}
+/*}}}*/
+void Loads::SetCurrentConfiguration(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Load* load=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		load=xDynamicCast<Load*>(*object);
+		load->SetCurrentConfiguration(elements,loads,nodes,vertices,materials,parameters);
+
+	}
+
+}
+/*}}}*/
+int  Loads::Size(void){/*{{{*/
+
+	return this->DataSet::Size();
+}
+/*}}}*/
+int  Loads::Size(int analysis_type){/*{{{*/
+
+	int localloads = 0;
+
+	/*Get number of local loads*/
+	for(int i=0;i<this->Size();i++){
+
+		Load* load=xDynamicCast<Load*>(this->GetObjectByOffset(i));
+
+		/*Check that this load corresponds to our analysis currently being carried out: */
+		if (load->InAnalysis(analysis_type)) localloads++;
+	}
+
+	return localloads;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Loads.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Loads.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Loads.h	(revision 21239)
@@ -0,0 +1,37 @@
+#ifndef _CONTAINER_LOADS_H_
+#define  _CONTAINER_LOADS_H_
+
+/*forward declarations */
+#include "../../datastructures/datastructures.h"
+class Materials;
+class Parameters;
+class Elements;
+class Vertices;
+class Nodes;
+
+/*!\brief Declaration of Loads class.
+ *
+ * Declaration of Loads class.  Loads are vector lists (Containers) of Load objects.
+ */ 
+class Loads: public DataSet{
+
+	public:
+
+		/*constructors, destructors*/
+		Loads();
+		~Loads();
+
+		/*numerics*/
+		void  Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
+		bool  IsPenalty(int analysis);
+		int   MaxNumNodes(int analysis);
+		int   NumberOfLoads(void);
+		int   NumberOfLoads(int analysis);
+		void  ResetHooks();
+		void  SetCurrentConfiguration(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
+		int   Size(int analysis);
+		int   Size(void);
+
+};
+
+#endif //ifndef _LOADS_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Moulin.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Moulin.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Moulin.cpp	(revision 21239)
@@ -0,0 +1,405 @@
+/*!\file Moulin.c
+ * \brief: implementation of the Moulin object
+ */
+
+/*Headers*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+#include "../../analyses/analyses.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMVERTICES   1
+
+/*Moulin constructors and destructor*/
+Moulin::Moulin(){/*{{{*/
+	this->parameters=NULL;
+	this->hnode=NULL;
+	this->node=NULL;
+	this->helement=NULL;
+	this->element=NULL;
+	this->hmatpar=NULL;
+	this->matpar=NULL;
+}
+/*}}}*/
+Moulin::Moulin(int id, int index, IoModel* iomodel, int in_analysis_type){ //i is the element index/*{{{*/
+
+	int pengrid_node_id;
+	int pengrid_matpar_id;
+	int pengrid_element_id;
+
+	/*Some checks if debugging activated*/
+	_assert_(iomodel->singlenodetoelementconnectivity);
+	_assert_(index>=0 && index<iomodel->numberofvertices);
+	_assert_(id);
+
+	/*id: */
+	this->id=id;
+	this->analysis_type=in_analysis_type;
+
+	/*hooks: */
+	pengrid_node_id=iomodel->nodecounter+index+1;
+	pengrid_element_id=iomodel->singlenodetoelementconnectivity[index];
+	_assert_(pengrid_element_id);
+	pengrid_matpar_id=iomodel->numberofelements+1; //refers to the constant material parameters object
+
+	this->hnode=new Hook(&pengrid_node_id,1);
+	this->helement=new Hook(&pengrid_element_id,1);
+	this->hmatpar=new Hook(&pengrid_matpar_id,1);
+
+	//this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
+	this->parameters=NULL;
+	this->node=NULL;
+	this->element=NULL;
+	this->matpar=NULL;
+}
+/*}}}*/
+Moulin::~Moulin(){/*{{{*/
+	delete hnode;
+	delete helement;
+	delete hmatpar;
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Moulin::copy() {/*{{{*/
+
+	Moulin* pengrid=NULL;
+
+	pengrid=new Moulin();
+
+	/*copy fields: */
+	pengrid->id=this->id;
+	pengrid->analysis_type=this->analysis_type;
+
+	/*point parameters: */
+	pengrid->parameters=this->parameters;
+
+	/*now deal with hooks and objects: */
+	pengrid->hnode=(Hook*)this->hnode->copy();
+	pengrid->hmatpar=(Hook*)this->hmatpar->copy();
+	pengrid->helement=(Hook*)this->helement->copy();
+
+	/*corresponding fields*/
+	pengrid->node  =(Node*)pengrid->hnode->delivers();
+	pengrid->matpar =(Matpar*)pengrid->hmatpar->delivers();
+	pengrid->element=(Element*)pengrid->helement->delivers();
+
+	return pengrid;
+}
+/*}}}*/
+void    Moulin::DeepEcho(void){/*{{{*/
+
+	_printf_("Moulin:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	hnode->DeepEcho();
+	helement->DeepEcho();
+	hmatpar->DeepEcho();
+	_printf_("   parameters\n");
+	parameters->DeepEcho();
+}
+/*}}}*/
+void    Moulin::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int     Moulin::Id(void){ return id; }/*{{{*/
+/*}}}*/
+void    Moulin::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	_assert_(this);
+
+	/*ok, marshall operations: */
+	MARSHALLING_ENUM(MoulinEnum);
+	MARSHALLING(id);
+	MARSHALLING(analysis_type);
+
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		this->hnode      = new Hook();
+		this->helement   = new Hook();
+		this->hmatpar    = new Hook();
+	}
+
+	this->hnode->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->helement->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->hmatpar->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	/*corresponding fields*/
+	node   =(Node*)this->hnode->delivers();
+	matpar =(Matpar*)this->hmatpar->delivers();
+	element=(Element*)this->helement->delivers();
+}
+/*}}}*/
+int     Moulin::ObjectEnum(void){/*{{{*/
+
+	return MoulinEnum;
+}
+/*}}}*/
+
+/*Load virtual functions definitions:*/
+void  Moulin::Configure(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+	/*Take care of hooking up all objects for this load, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	hnode->configure(nodesin);
+	helement->configure(elementsin);
+	hmatpar->configure(materialsin);
+
+	/*Get corresponding fields*/
+	node=(Node*)hnode->delivers();
+	element=(Element*)helement->delivers();
+	matpar=(Matpar*)hmatpar->delivers();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+}
+/*}}}*/
+void  Moulin::CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs){/*{{{*/
+
+	/*No loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Moulin::CreatePVector(Vector<IssmDouble>* pf){/*{{{*/
+
+	ElementVector* pe=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		
+	case HydrologySommersAnalysisEnum:
+		pe = this->CreatePVectorHydrologySommers();
+		break;
+	case HydrologyDCInefficientAnalysisEnum:
+		pe = CreatePVectorHydrologyDCInefficient();
+		break;
+	case HydrologyDCEfficientAnalysisEnum:
+		pe = CreatePVectorHydrologyDCEfficient();
+		break;
+	default:
+		_error_("Don't know why we should be here");
+		/*No loads applied, do nothing: */
+		return;
+	}
+	if(pe){
+		pe->AddToGlobal(pf);
+		delete pe;
+	}
+
+}
+/*}}}*/
+void  Moulin::GetNodesLidList(int* lidlist){/*{{{*/
+
+	_assert_(lidlist);
+	_assert_(node);
+
+	lidlist[0]=node->Lid();
+}
+/*}}}*/
+void  Moulin::GetNodesSidList(int* sidlist){/*{{{*/
+
+	_assert_(sidlist);
+	_assert_(node);
+
+	sidlist[0]=node->Sid();
+}
+/*}}}*/
+int   Moulin::GetNumberOfNodes(void){/*{{{*/
+
+	return NUMVERTICES;
+}
+/*}}}*/
+bool  Moulin::InAnalysis(int in_analysis_type){/*{{{*/
+	if (in_analysis_type==this->analysis_type)return true;
+	else return false;
+}
+/*}}}*/
+bool  Moulin::IsPenalty(void){/*{{{*/
+	return true;
+}
+/*}}}*/
+void  Moulin::PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs,IssmDouble kmax){/*{{{*/
+
+	/*Don't do anything for now*/
+
+}
+/*}}}*/
+void  Moulin::PenaltyCreatePVector(Vector<IssmDouble>* pf,IssmDouble kmax){/*{{{*/
+
+	/*Don't do anything for now*/
+}
+/*}}}*/
+void  Moulin::ResetHooks(){/*{{{*/
+
+	this->node=NULL;
+	this->element=NULL;
+	this->matpar=NULL;
+	this->parameters=NULL;
+
+	/*Get Element type*/
+	this->hnode->reset();
+	this->helement->reset();
+	this->hmatpar->reset();
+
+}
+/*}}}*/
+void  Moulin::SetCurrentConfiguration(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+}
+/*}}}*/
+void  Moulin::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
+
+	/*Output */
+	int d_nz = 0;
+	int o_nz = 0;
+
+	if(!flags[this->node->Lid()]){
+
+		/*flag current node so that no other element processes it*/
+		flags[this->node->Lid()]=true;
+
+		int counter=0;
+		while(flagsindices[counter]>=0) counter++;
+		flagsindices[counter]=this->node->Lid();
+
+		/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
+		switch(set2_enum){
+			case FsetEnum:
+				if(node->indexing.fsize){
+					if(this->node->IsClone())
+					 o_nz += 1;
+					else
+					 d_nz += 1;
+				}
+				break;
+			case GsetEnum:
+				if(node->indexing.gsize){
+					if(this->node->IsClone())
+					 o_nz += 1;
+					else
+					 d_nz += 1;
+				}
+				break;
+			case SsetEnum:
+				if(node->indexing.ssize){
+					if(this->node->IsClone())
+					 o_nz += 1;
+					else
+					 d_nz += 1;
+				}
+				break;
+			default: _error_("not supported");
+		}
+	}
+
+	/*Assign output pointers: */
+	*pd_nz=d_nz;
+	*po_nz=o_nz;
+}
+/*}}}*/
+
+/*Update virtual functions definitions:*/
+void  Moulin::InputUpdateFromConstant(IssmDouble constant, int name){/*{{{*/
+	/*Nothing*/
+}
+/*}}}*/
+void  Moulin::InputUpdateFromConstant(int constant, int name){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Moulin::InputUpdateFromConstant(bool constant, int name){/*{{{*/
+
+	/*Don't do anything for now*/
+}
+/*}}}*/
+void  Moulin::InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols, int name, int type){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Moulin::InputUpdateFromVector(IssmDouble* vector, int name, int type){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Moulin::InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+
+ElementVector* Moulin::CreatePVectorHydrologySommers(void){/*{{{*/
+
+	/*If this node is not the master node (belongs to another partition of the
+	 * mesh), don't add the moulin input a second time*/
+	if(node->IsClone()) return NULL;
+
+	IssmDouble moulin_load;
+
+	/*Initialize Element matrix*/
+	ElementVector* pe=new ElementVector(&node,1,this->parameters);
+
+	this->element->GetInputValue(&moulin_load,node,HydrologyMoulinInputEnum);
+	pe->values[0]=moulin_load;
+
+	/*Clean up and return*/
+	return pe;
+}
+/*}}}*/
+ElementVector* Moulin::CreatePVectorHydrologyDCInefficient(void){/*{{{*/
+
+	/*If this node is not the master node (belongs to another partition of the
+	 * mesh), don't add the moulin input a second time*/
+	if(node->IsClone()) return NULL;
+	bool isefficientlayer;
+	IssmDouble moulin_load,dt;
+	IssmDouble epl_active;
+
+	/*Initialize Element matrix*/
+	ElementVector* pe=new ElementVector(&node,1,this->parameters);
+
+	this->element->GetInputValue(&moulin_load,node,HydrologydcBasalMoulinInputEnum);
+	parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+	parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum);
+	// Test version input in EPL when active
+	if(isefficientlayer){
+		this->element->GetInputValue(&epl_active,node,HydrologydcMaskEplactiveNodeEnum);
+		if(reCast<bool>(epl_active)){
+			pe->values[0]=moulin_load*0.0;
+		}
+		else{
+			pe->values[0]=moulin_load*dt;
+		}
+	}
+	else{
+		pe->values[0]=moulin_load*dt;
+	}
+	/*Clean up and return*/
+	return pe;
+ }
+/*}}}*/
+ElementVector* Moulin::CreatePVectorHydrologyDCEfficient(void){/*{{{*/
+
+	/*If this node is not the master node (belongs to another partition of the
+	 * mesh), don't add the moulin input a second time*/
+	if(node->IsClone()) return NULL;
+	if(!this->node->IsActive()) return NULL;
+	IssmDouble moulin_load,dt;
+	ElementVector* pe=new ElementVector(&node,1,this->parameters);
+	
+	this->element->GetInputValue(&moulin_load,node,HydrologydcBasalMoulinInputEnum);
+	parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+	
+	pe->values[0]=moulin_load*dt;
+	/*Clean up and return*/
+	return pe;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Moulin.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Moulin.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Moulin.h	(revision 21239)
@@ -0,0 +1,87 @@
+/*!\file Moulin.h
+ * \brief: header file for pengrid object */
+
+#ifndef _MOULIN_H_
+#define _MOULIN_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./Load.h"
+class Hook;
+class Inputs;
+class Parameters;
+class IoModel;
+/*}}}*/
+
+class Moulin: public Load{
+
+	private: 
+
+		int id;
+		int analysis_type;
+
+		/*Hooks*/
+		Hook* hnode;  //hook to 1 node
+		Hook* helement;  //hook to 1 element
+		Hook* hmatpar; //hook to 1 matpar
+
+		/*Corresponding fields*/
+		Node    *node;
+		Element *element;
+		Matpar  *matpar;
+
+		Parameters* parameters; //pointer to solution parameters
+
+	public:
+
+		/*Moulin constructors, destructors {{{*/
+		Moulin();
+		Moulin(int index, int id, IoModel* iomodel,int analysis_type);
+		~Moulin();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{*/
+		void  InputUpdateFromConstant(IssmDouble constant, int name);
+		void  InputUpdateFromConstant(int constant, int name);
+		void  InputUpdateFromConstant(bool constant, int name);
+		void  InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
+		void  InputUpdateFromMatrixDakota(IssmDouble* matrix ,int nrows, int ncols, int name, int type);
+		void  InputUpdateFromVector(IssmDouble* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type);
+		/*}}}*/
+		/*Load virtual functions definitions: {{{*/
+		void  Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void  CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
+		void  CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
+		void  CreatePVector(Vector<IssmDouble>* pf);
+		void  GetNodesSidList(int* sidlist);
+		void  GetNodesLidList(int* lidlist);
+		int   GetNumberOfNodes(void);
+		bool  InAnalysis(int analysis_type);
+		bool  IsPenalty(void);
+		void  PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){_error_("Not implemented yet");};
+		void  PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
+		void  PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
+		void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
+		void  ResetHooks();
+		/*}}}*/
+
+		ElementVector* CreatePVectorHydrologySommers(void);
+		ElementVector* CreatePVectorHydrologyDCInefficient(void);
+		ElementVector* CreatePVectorHydrologyDCEfficient(void);
+};
+
+#endif  /* _MOULIN_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Neumannflux.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Neumannflux.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Neumannflux.cpp	(revision 21239)
@@ -0,0 +1,391 @@
+/*!\file Neumannflux.c
+ * \brief: implementation of the Neumannflux object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "shared/shared.h"
+#include "../classes.h"
+/*}}}*/	
+
+/*Load macros*/
+#define NUMVERTICES 2
+#define NUMNODES_BOUNDARY 2
+
+/*Neumannflux constructors and destructor*/
+Neumannflux::Neumannflux(){/*{{{*/
+	this->parameters = NULL;
+	this->helement   = NULL;
+	this->element    = NULL;
+	this->hnodes     = NULL;
+	this->hvertices  = NULL;
+	this->nodes      = NULL;
+}
+/*}}}*/
+Neumannflux::Neumannflux(int neumannflux_id,int i,IoModel* iomodel,int* segments,int in_analysis_type){/*{{{*/
+
+
+	/*Some sanity checks*/
+	_assert_(segments);
+
+	/*neumannflux constructor data: */
+	int neumannflux_elem_id;
+	int neumannflux_vertex_ids[2];
+	int neumannflux_node_ids[2];
+
+	/*1: Get vertices ids*/
+	neumannflux_vertex_ids[0]=segments[3*i+0];
+	neumannflux_vertex_ids[1]=segments[3*i+1];
+
+	/*2: Get the ids of the nodes*/
+	neumannflux_node_ids[0]=iomodel->nodecounter+neumannflux_vertex_ids[0];
+	neumannflux_node_ids[1]=iomodel->nodecounter+neumannflux_vertex_ids[1];
+
+	/*Get element id*/
+	neumannflux_elem_id = segments[3*i+2];
+
+	/*Ok, we have everything to build the object: */
+	this->id=neumannflux_id;
+	this->analysis_type=in_analysis_type;
+
+	/*Hooks: */
+	this->hnodes    =new Hook(&neumannflux_node_ids[0],2);
+	this->hvertices =new Hook(&neumannflux_vertex_ids[0],2);
+	this->helement  =new Hook(&neumannflux_elem_id,1);
+
+	//this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
+	this->parameters=NULL;
+	this->element=NULL;
+	this->nodes=NULL;
+}
+/*}}}*/
+Neumannflux::~Neumannflux(){/*{{{*/
+	this->parameters=NULL;
+	delete helement;
+	delete hnodes;
+	delete hvertices;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Neumannflux::copy() {/*{{{*/
+
+	Neumannflux* neumannflux=NULL;
+
+	neumannflux=new Neumannflux();
+
+	/*copy fields: */
+	neumannflux->id=this->id;
+	neumannflux->analysis_type=this->analysis_type;
+
+	/*point parameters: */
+	neumannflux->parameters=this->parameters;
+
+	/*now deal with hooks and objects: */
+	neumannflux->hnodes    = (Hook*)this->hnodes->copy();
+	neumannflux->hvertices = (Hook*)this->hvertices->copy();
+	neumannflux->helement  = (Hook*)this->helement->copy();
+
+	/*corresponding fields*/
+	neumannflux->nodes    = (Node**)neumannflux->hnodes->deliverp();
+	neumannflux->vertices = (Vertex**)neumannflux->hvertices->deliverp();
+	neumannflux->element  = (Element*)neumannflux->helement->delivers();
+
+	return neumannflux;
+}
+/*}}}*/
+void    Neumannflux::DeepEcho(void){/*{{{*/
+
+	_printf_("Neumannflux:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	hnodes->DeepEcho();
+	hvertices->DeepEcho();
+	helement->DeepEcho();
+	_printf_("   parameters\n");
+	if(parameters)
+	 parameters->DeepEcho();
+	else
+	 _printf_("      NULL\n");
+}		
+/*}}}*/
+void    Neumannflux::Echo(void){/*{{{*/
+	_printf_("Neumannflux:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	hnodes->Echo();
+	hvertices->Echo();
+	helement->Echo();
+	_printf_("   parameters: " << parameters << "\n");
+}
+/*}}}*/
+int     Neumannflux::Id(void){/*{{{*/
+	return id;
+}
+/*}}}*/
+void    Neumannflux::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	_assert_(this);
+
+	/*ok, marshall operations: */
+	MARSHALLING_ENUM(NeumannfluxEnum);
+	MARSHALLING(id);
+	MARSHALLING(analysis_type);
+
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		this->hnodes      = new Hook();
+		this->hvertices   = new Hook();
+		this->helement    = new Hook();
+	}
+
+	this->hnodes->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->helement->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->hvertices->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	/*corresponding fields*/
+	nodes    =(Node**)this->hnodes->deliverp();
+	vertices =(Vertex**)this->hvertices->deliverp();
+	element  =(Element*)this->helement->delivers();
+
+}
+/*}}}*/
+int     Neumannflux::ObjectEnum(void){/*{{{*/
+
+	return NeumannfluxEnum;
+
+}
+/*}}}*/
+
+/*Load virtual functions definitions:*/
+void  Neumannflux::Configure(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	hnodes->configure((DataSet*)nodesin);
+	hvertices->configure((DataSet*)verticesin);
+	helement->configure((DataSet*)elementsin);
+
+	/*Initialize hooked fields*/
+	this->nodes    = (Node**)hnodes->deliverp();
+	this->vertices = (Vertex**)hvertices->deliverp();
+	this->element  = (Element*)helement->delivers();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+}
+/*}}}*/
+void  Neumannflux::CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs){/*{{{*/
+
+	/*recover some parameters*/
+	ElementMatrix* Ke=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	/*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */
+	switch(analysis_type){
+		case HydrologySommersAnalysisEnum:
+			/*Nothing!*/
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global matrix*/
+	if(Ke){
+		Ke->AddToGlobal(Kff,Kfs);
+		delete Ke;
+	}
+
+}
+/*}}}*/
+void  Neumannflux::CreatePVector(Vector<IssmDouble>* pf){/*{{{*/
+
+	/*recover some parameters*/
+	ElementVector* pe=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		case HydrologySommersAnalysisEnum:
+			pe=CreatePVectorHydrologySommers();
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global matrix*/
+	if(pe){
+		pe->AddToGlobal(pf);
+		delete pe;
+	}
+
+}
+/*}}}*/
+void  Neumannflux::GetNodesLidList(int* lidlist){/*{{{*/
+
+	_assert_(lidlist);
+	_assert_(nodes);
+
+	for(int i=0;i<NUMNODES_BOUNDARY;i++) lidlist[i]=nodes[i]->Lid();
+}
+/*}}}*/
+void  Neumannflux::GetNodesSidList(int* sidlist){/*{{{*/
+
+	_assert_(sidlist);
+	_assert_(nodes);
+
+	for(int i=0;i<NUMNODES_BOUNDARY;i++) sidlist[i]=nodes[i]->Sid();
+}
+/*}}}*/
+int   Neumannflux::GetNumberOfNodes(void){/*{{{*/
+
+	return NUMNODES_BOUNDARY;
+}
+/*}}}*/
+bool  Neumannflux::InAnalysis(int in_analysis_type){/*{{{*/
+	if (in_analysis_type==this->analysis_type) return true;
+	else return false;
+}
+/*}}}*/
+bool  Neumannflux::IsPenalty(void){/*{{{*/
+	return false;
+}
+/*}}}*/
+void  Neumannflux::PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs,IssmDouble kmax){/*{{{*/
+
+	/*No stiffness loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Neumannflux::PenaltyCreatePVector(Vector<IssmDouble>* pf,IssmDouble kmax){/*{{{*/
+
+	/*No penalty loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Neumannflux::ResetHooks(){/*{{{*/
+
+	this->nodes=NULL;
+	this->vertices=NULL;
+	this->element=NULL;
+	this->parameters=NULL;
+
+	/*Get Element type*/
+	this->hnodes->reset();
+	this->hvertices->reset();
+	this->helement->reset();
+
+}
+/*}}}*/
+void  Neumannflux::SetCurrentConfiguration(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+}
+/*}}}*/
+void  Neumannflux::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
+
+	/*Output */
+	int d_nz = 0;
+	int o_nz = 0;
+
+	/*Loop over all nodes*/
+	for(int i=0;i<this->GetNumberOfNodes();i++){
+
+		if(!flags[this->nodes[i]->Lid()]){
+
+			/*flag current node so that no other element processes it*/
+			flags[this->nodes[i]->Lid()]=true;
+
+			int counter=0;
+			while(flagsindices[counter]>=0) counter++;
+			flagsindices[counter]=this->nodes[i]->Lid();
+
+			/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
+			switch(set2_enum){
+				case FsetEnum:
+					if(nodes[i]->indexing.fsize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case GsetEnum:
+					if(nodes[i]->indexing.gsize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case SsetEnum:
+					if(nodes[i]->indexing.ssize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				default: _error_("not supported");
+			}
+		}
+	}
+
+	/*Assign output pointers: */
+	*pd_nz=d_nz;
+	*po_nz=o_nz;
+}
+/*}}}*/
+
+/*Neumannflux management*/
+ElementVector* Neumannflux::CreatePVectorHydrologySommers(void){/*{{{*/
+
+	/* constants*/
+	const int numdof=2;
+
+	/* Intermediaries*/
+	IssmDouble Jdet,flux;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble basis[numdof];
+
+	/*Initialize Load Vector and return if necessary*/
+	Tria*  tria=(Tria*)element;
+	_assert_(tria->FiniteElement()==P1Enum); 
+	if(!tria->IsIceInElement() || tria->IsFloating()) return NULL;
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe=new ElementVector(nodes,NUMNODES_BOUNDARY,this->parameters);
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	Input* flux_input = tria->inputs->GetInput(HydrologyNeumannfluxEnum);  _assert_(flux_input); 
+
+	/*Check wether it is an inflow or outflow BC (0 is the middle of the segment)*/
+	int index1=tria->GetNodeIndex(nodes[0]);
+	int index2=tria->GetNodeIndex(nodes[1]);
+
+	/* Start  looping on the number of gaussian points: */
+	GaussTria* gauss=new GaussTria(index1,index2,2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		tria->GetSegmentJacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		tria->GetSegmentNodalFunctions(&basis[0],gauss,index1,index2,tria->FiniteElement());
+		flux_input->GetInputValue(&flux,gauss);
+
+		for(int i=0;i<numdof;i++) pe->values[i] += gauss->weight*Jdet*flux*basis[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	return pe;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Neumannflux.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Neumannflux.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Neumannflux.h	(revision 21239)
@@ -0,0 +1,80 @@
+/*!\file Neumannflux.h
+ * \brief: header file for icefront object
+ */
+
+#ifndef _NEUMANNFLUX_H_
+#define _NEUMANNFLUX_H_
+
+/*Headers:*/
+#include "./Load.h"
+class Hook;
+class Parameters;
+class IoModel;
+class Element;
+class Vertex;
+class ElementMatrix;
+class ElementVector;
+
+class Neumannflux: public Load {
+
+	public: 
+		int id;
+		int analysis_type;
+
+		/*Hooks*/
+		Hook *helement;
+		Hook *hnodes;
+		Hook *hvertices;
+
+		/*Corresponding fields*/
+		Element     *element;
+		Vertex     **vertices;
+		Node       **nodes;
+		Parameters  *parameters;
+
+		/*Neumannflux constructors,destructors {{{*/
+		Neumannflux();
+		Neumannflux(int numericalflux_id,int i,IoModel* iomodel,int* segments,int analysis_type);
+		~Neumannflux();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int     ObjectEnum();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{*/
+		void InputUpdateFromConstant(IssmDouble constant, int name){/*Do nothing*/};
+		void InputUpdateFromConstant(int constant, int name){/*Do nothing*/};
+		void InputUpdateFromConstant(bool constant, int name){/*Do nothing*/};
+		void InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
+		void InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols, int name, int type){/*Do nothing*/}
+		void InputUpdateFromVector(IssmDouble* vector, int name, int type){/*Do nothing*/}
+		void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*Do nothing*/}
+		/*}}}*/
+		/*Load virtual functions definitions: {{{*/
+		void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
+		void CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
+		void CreatePVector(Vector<IssmDouble>* pf);
+		void GetNodesLidList(int* lidlist);
+		void GetNodesSidList(int* sidlist);
+		int  GetNumberOfNodes(void);
+		bool InAnalysis(int analysis_type);
+		bool IsPenalty(void);
+		void PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){_error_("Not implemented yet");};
+		void PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
+		void PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
+		void ResetHooks();
+		void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
+		/*}}}*/
+		/*Neumannflux management:{{{*/
+		ElementVector* CreatePVectorHydrologySommers(void);
+		/*}}}*/
+
+};
+
+#endif  /* _NEUMANNFLUX_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Numericalflux.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Numericalflux.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Numericalflux.cpp	(revision 21239)
@@ -0,0 +1,957 @@
+/*!\file Numericalflux.c
+ * \brief: implementation of the Numericalflux object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "shared/shared.h"
+#include "../classes.h"
+/*}}}*/	
+
+/*Load macros*/
+#define NUMVERTICES 2
+#define NUMNODES_INTERNAL 4
+#define NUMNODES_BOUNDARY 2
+
+/*Numericalflux constructors and destructor*/
+Numericalflux::Numericalflux(){/*{{{*/
+	this->parameters = NULL;
+	this->helement   = NULL;
+	this->element    = NULL;
+	this->hnodes     = NULL;
+	this->hvertices  = NULL;
+	this->nodes      = NULL;
+}
+/*}}}*/
+Numericalflux::Numericalflux(int numericalflux_id,int i,int index,IoModel* iomodel, int in_analysis_type){/*{{{*/
+
+	/* Intermediary */
+	int  j;
+	int  pos1,pos2,pos3,pos4;
+	int  num_nodes;
+
+	/*numericalflux constructor data: */
+	int   numericalflux_elem_ids[2];
+	int   numericalflux_vertex_ids[2];
+	int   numericalflux_node_ids[4];
+	int   numericalflux_type;
+
+	/*Get edge*/
+	int i1 = iomodel->faces[4*index+0];
+	int i2 = iomodel->faces[4*index+1];
+	int e1 = iomodel->faces[4*index+2];
+	int e2 = iomodel->faces[4*index+3];
+
+	/*First, see wether this is an internal or boundary edge (if e2=-1)*/
+	if(e2==-1){
+		/* Boundary edge, only one element */
+		num_nodes=2;
+		numericalflux_type=BoundaryEnum;
+		numericalflux_elem_ids[0]=e1;
+	}
+	else{
+		/* internal edge: connected to 2 elements */
+		 num_nodes=4;
+		numericalflux_type=InternalEnum;
+		numericalflux_elem_ids[0]=e1;
+		numericalflux_elem_ids[1]=e2;
+	}
+
+	/*1: Get vertices ids*/
+	numericalflux_vertex_ids[0]=i1;
+	numericalflux_vertex_ids[1]=i2;
+
+	/*2: Get node ids*/
+	if (numericalflux_type==InternalEnum){
+
+		/*Now, we must get the nodes of the 4 nodes located on the edge*/
+
+		/*2: Get the column where these ids are located in the index*/
+		pos1=pos2=pos3=pos4=UNDEF;
+		for(j=0;j<3;j++){
+			if(iomodel->elements[3*(e1-1)+j]==i1) pos1=j+1;
+			if(iomodel->elements[3*(e1-1)+j]==i2) pos2=j+1;
+			if(iomodel->elements[3*(e2-1)+j]==i1) pos3=j+1;
+			if(iomodel->elements[3*(e2-1)+j]==i2) pos4=j+1;
+		}
+		_assert_(pos1!=UNDEF && pos2!=UNDEF && pos3!=UNDEF && pos4!=UNDEF);
+
+		/*3: We have the id of the elements and the position of the vertices in the index
+		 * we can compute their dofs!*/
+		numericalflux_node_ids[0]=iomodel->nodecounter+3*(e1-1)+pos1;
+		numericalflux_node_ids[1]=iomodel->nodecounter+3*(e1-1)+pos2;
+		numericalflux_node_ids[2]=iomodel->nodecounter+3*(e2-1)+pos3;
+		numericalflux_node_ids[3]=iomodel->nodecounter+3*(e2-1)+pos4;
+	}
+	else{
+
+		/*2: Get the column where these ids are located in the index*/
+		pos1=pos2=UNDEF;
+		for(j=0;j<3;j++){
+			if(iomodel->elements[3*(e1-1)+j]==i1) pos1=j+1;
+			if(iomodel->elements[3*(e1-1)+j]==i2) pos2=j+1;
+		}
+		_assert_(pos1!=UNDEF && pos2!=UNDEF);
+
+		/*3: We have the id of the elements and the position of the vertices in the index
+		 * we can compute their dofs!*/
+		numericalflux_node_ids[0]=iomodel->nodecounter+3*(e1-1)+pos1;
+		numericalflux_node_ids[1]=iomodel->nodecounter+3*(e1-1)+pos2;
+	}
+
+	/*Ok, we have everything to build the object: */
+	this->id=numericalflux_id;
+	this->analysis_type=in_analysis_type;
+	this->flux_type = numericalflux_type;
+
+	/*Hooks: */
+	this->hnodes    =new Hook(numericalflux_node_ids,num_nodes);
+	this->hvertices =new Hook(&numericalflux_vertex_ids[0],2);
+	this->helement  =new Hook(numericalflux_elem_ids,1); // take only the first element for now
+
+	//this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
+	this->parameters=NULL;
+	this->element=NULL;
+	this->nodes=NULL;
+}
+/*}}}*/
+Numericalflux::~Numericalflux(){/*{{{*/
+	this->parameters=NULL;
+	delete helement;
+	delete hnodes;
+	delete hvertices;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Numericalflux::copy() {/*{{{*/
+
+	Numericalflux* numericalflux=NULL;
+
+	numericalflux=new Numericalflux();
+
+	/*copy fields: */
+	numericalflux->id=this->id;
+	numericalflux->analysis_type=this->analysis_type;
+	numericalflux->flux_type=this->flux_type;
+
+	/*point parameters: */
+	numericalflux->parameters=this->parameters;
+
+	/*now deal with hooks and objects: */
+	numericalflux->hnodes    = (Hook*)this->hnodes->copy();
+	numericalflux->hvertices = (Hook*)this->hvertices->copy();
+	numericalflux->helement  = (Hook*)this->helement->copy();
+
+	/*corresponding fields*/
+	numericalflux->nodes    = (Node**)numericalflux->hnodes->deliverp();
+	numericalflux->vertices = (Vertex**)numericalflux->hvertices->deliverp();
+	numericalflux->element  = (Element*)numericalflux->helement->delivers();
+
+	return numericalflux;
+}
+/*}}}*/
+void    Numericalflux::DeepEcho(void){/*{{{*/
+
+	_printf_("Numericalflux:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	_printf_("   flux_type: " << this->flux_type<< "\n");
+	hnodes->DeepEcho();
+	hvertices->DeepEcho();
+	helement->DeepEcho();
+	_printf_("   parameters\n");
+	if(parameters)
+	 parameters->DeepEcho();
+	else
+	 _printf_("      NULL\n");
+}		
+/*}}}*/
+void    Numericalflux::Echo(void){/*{{{*/
+	_printf_("Numericalflux:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	_printf_("   flux_type: " << this->flux_type<< "\n");
+	hnodes->Echo();
+	hvertices->Echo();
+	helement->Echo();
+	_printf_("   parameters: " << parameters << "\n");
+}
+/*}}}*/
+int     Numericalflux::Id(void){/*{{{*/
+	return id;
+}
+/*}}}*/
+void    Numericalflux::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	_assert_(this);
+
+	/*ok, marshall operations: */
+	MARSHALLING_ENUM(NumericalfluxEnum);
+	MARSHALLING(id);
+	MARSHALLING(analysis_type);
+	MARSHALLING(flux_type);
+
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		this->hnodes      = new Hook();
+		this->hvertices   = new Hook();
+		this->helement    = new Hook();
+	}
+
+	this->hnodes->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->helement->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->hvertices->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	/*corresponding fields*/
+	nodes    =(Node**)this->hnodes->deliverp();
+	vertices =(Vertex**)this->hvertices->deliverp();
+	element  =(Element*)this->helement->delivers();
+
+}
+/*}}}*/
+int     Numericalflux::ObjectEnum(void){/*{{{*/
+
+	return NumericalfluxEnum;
+
+}
+/*}}}*/
+
+/*Load virtual functions definitions:*/
+void  Numericalflux::Configure(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	hnodes->configure((DataSet*)nodesin);
+	hvertices->configure((DataSet*)verticesin);
+	helement->configure((DataSet*)elementsin);
+
+	/*Initialize hooked fields*/
+	this->nodes    = (Node**)hnodes->deliverp();
+	this->vertices = (Vertex**)hvertices->deliverp();
+	this->element  = (Element*)helement->delivers();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+}
+/*}}}*/
+void  Numericalflux::CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs){/*{{{*/
+
+	/*recover some parameters*/
+	ElementMatrix* Ke=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	/*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */
+	switch(analysis_type){
+		case MasstransportAnalysisEnum:
+			Ke=CreateKMatrixMasstransport();
+			break;
+		case BalancethicknessAnalysisEnum:
+			Ke=CreateKMatrixBalancethickness();
+			break;
+		case AdjointBalancethicknessAnalysisEnum:
+			Ke=CreateKMatrixAdjointBalancethickness();
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global matrix*/
+	if(Ke){
+		Ke->AddToGlobal(Kff,Kfs);
+		delete Ke;
+	}
+
+}
+/*}}}*/
+void  Numericalflux::CreatePVector(Vector<IssmDouble>* pf){/*{{{*/
+
+	/*recover some parameters*/
+	ElementVector* pe=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		case MasstransportAnalysisEnum:
+			pe=CreatePVectorMasstransport();
+			break;
+		case BalancethicknessAnalysisEnum:
+			pe=CreatePVectorBalancethickness();
+			break;
+		case AdjointBalancethicknessAnalysisEnum:
+			pe=CreatePVectorAdjointBalancethickness();
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global matrix*/
+	if(pe){
+		pe->AddToGlobal(pf);
+		delete pe;
+	}
+
+}
+/*}}}*/
+void  Numericalflux::GetNodesLidList(int* lidlist){/*{{{*/
+
+	_assert_(lidlist);
+	_assert_(nodes);
+
+	switch(this->flux_type){
+		case InternalEnum:
+			for(int i=0;i<NUMNODES_INTERNAL;i++) lidlist[i]=nodes[i]->Lid();
+			return;
+		case BoundaryEnum:
+			for(int i=0;i<NUMNODES_BOUNDARY;i++) lidlist[i]=nodes[i]->Lid();
+			return;
+		default:
+			_error_("Numericalflux type " << EnumToStringx(this->flux_type) << " not supported yet");
+	}
+}
+/*}}}*/
+void  Numericalflux::GetNodesSidList(int* sidlist){/*{{{*/
+
+	_assert_(sidlist);
+	_assert_(nodes);
+
+	switch(this->flux_type){
+		case InternalEnum:
+			for(int i=0;i<NUMNODES_INTERNAL;i++) sidlist[i]=nodes[i]->Sid();
+			return;
+		case BoundaryEnum:
+			for(int i=0;i<NUMNODES_BOUNDARY;i++) sidlist[i]=nodes[i]->Sid();
+			return;
+		default:
+			_error_("Numericalflux type " << EnumToStringx(this->flux_type) << " not supported yet");
+	}
+}
+/*}}}*/
+int   Numericalflux::GetNumberOfNodes(void){/*{{{*/
+
+	switch(this->flux_type){
+		case InternalEnum:
+			return NUMNODES_INTERNAL;
+		case BoundaryEnum:
+			return NUMNODES_BOUNDARY;
+		default:
+			_error_("Numericalflux type " << EnumToStringx(this->flux_type) << " not supported yet");
+	}
+
+}
+/*}}}*/
+bool  Numericalflux::InAnalysis(int in_analysis_type){/*{{{*/
+	if (in_analysis_type==this->analysis_type) return true;
+	else return false;
+}
+/*}}}*/
+bool  Numericalflux::IsPenalty(void){/*{{{*/
+	return false;
+}
+/*}}}*/
+void  Numericalflux::PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs,IssmDouble kmax){/*{{{*/
+
+	/*No stiffness loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Numericalflux::PenaltyCreatePVector(Vector<IssmDouble>* pf,IssmDouble kmax){/*{{{*/
+
+	/*No penalty loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Numericalflux::ResetHooks(){/*{{{*/
+
+	this->nodes=NULL;
+	this->vertices=NULL;
+	this->element=NULL;
+	this->parameters=NULL;
+
+	/*Get Element type*/
+	this->hnodes->reset();
+	this->hvertices->reset();
+	this->helement->reset();
+
+}
+/*}}}*/
+void  Numericalflux::SetCurrentConfiguration(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+}
+/*}}}*/
+void  Numericalflux::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
+
+	/*Output */
+	int d_nz = 0;
+	int o_nz = 0;
+
+	/*Loop over all nodes*/
+	for(int i=0;i<this->GetNumberOfNodes();i++){
+
+		if(!flags[this->nodes[i]->Lid()]){
+
+			/*flag current node so that no other element processes it*/
+			flags[this->nodes[i]->Lid()]=true;
+
+			int counter=0;
+			while(flagsindices[counter]>=0) counter++;
+			flagsindices[counter]=this->nodes[i]->Lid();
+
+			/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
+			switch(set2_enum){
+				case FsetEnum:
+					if(nodes[i]->indexing.fsize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case GsetEnum:
+					if(nodes[i]->indexing.gsize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case SsetEnum:
+					if(nodes[i]->indexing.ssize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				default: _error_("not supported");
+			}
+		}
+	}
+
+	/*Assign output pointers: */
+	*pd_nz=d_nz;
+	*po_nz=o_nz;
+}
+/*}}}*/
+
+/*Numericalflux management*/
+ElementMatrix* Numericalflux::CreateKMatrixAdjointBalancethickness(void){/*{{{*/
+
+	switch(this->flux_type){
+		case InternalEnum:
+			return CreateKMatrixAdjointBalancethicknessInternal();
+		case BoundaryEnum:
+			return CreateKMatrixAdjointBalancethicknessBoundary();
+		default:
+			_error_("type not supported yet");
+	}
+}
+/*}}}*/
+ElementMatrix* Numericalflux::CreateKMatrixAdjointBalancethicknessBoundary(void){/*{{{*/
+
+	ElementMatrix* Ke=CreateKMatrixBalancethicknessBoundary();
+	if(Ke) Ke->Transpose();
+	return Ke;
+}
+/*}}}*/
+ElementMatrix* Numericalflux::CreateKMatrixAdjointBalancethicknessInternal(void){/*{{{*/
+
+	ElementMatrix* Ke=CreateKMatrixBalancethicknessInternal();
+	if (Ke) Ke->Transpose();
+	return Ke;
+}
+/*}}}*/
+ElementMatrix* Numericalflux::CreateKMatrixBalancethickness(void){/*{{{*/
+
+	switch(this->flux_type){
+		case InternalEnum:
+			return CreateKMatrixBalancethicknessInternal();
+		case BoundaryEnum:
+			return CreateKMatrixBalancethicknessBoundary();
+		default:
+			_error_("type not supported yet");
+	}
+}
+/*}}}*/
+ElementMatrix* Numericalflux::CreateKMatrixBalancethicknessBoundary(void){/*{{{*/
+
+	/* constants*/
+	const int numdof=NDOF1*NUMNODES_BOUNDARY;
+
+	/* Intermediaries*/
+	int        i,j,ig,index1,index2;
+	IssmDouble     DL,Jdet,vx,vy,mean_vx,mean_vy,UdotN;
+	IssmDouble     xyz_list[NUMVERTICES][3];
+	IssmDouble     normal[2];
+	IssmDouble     L[numdof];
+	IssmDouble     Ke_g[numdof][numdof];
+	GaussTria *gauss;
+
+	/*Initialize Element matrix and return if necessary*/
+	ElementMatrix* Ke = NULL;
+	Tria*  tria=(Tria*)element;
+	if(!tria->IsIceInElement()) return NULL;
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	Input* vxaverage_input=tria->inputs->GetInput(VxEnum);
+	Input* vyaverage_input=tria->inputs->GetInput(VyEnum);
+	GetNormal(&normal[0],xyz_list);
+
+	/*Check wether it is an inflow or outflow BC (0 is the middle of the segment)*/
+	index1=tria->GetNodeIndex(nodes[0]);
+	index2=tria->GetNodeIndex(nodes[1]);
+
+	gauss=new GaussTria();
+	gauss->GaussEdgeCenter(index1,index2);
+	vxaverage_input->GetInputValue(&mean_vx,gauss);
+	vyaverage_input->GetInputValue(&mean_vy,gauss);
+	delete gauss;
+
+	UdotN=mean_vx*normal[0]+mean_vy*normal[1];
+	if (UdotN<=0){
+		return NULL; /*(u,n)<0 -> inflow, PenaltyCreatePVector will take care of it*/
+	}
+	else{
+		Ke=new ElementMatrix(nodes,NUMNODES_BOUNDARY,this->parameters);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=new GaussTria(index1,index2,2);
+	for(ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		tria->GetSegmentNodalFunctions(&L[0],gauss,index1,index2,tria->FiniteElement());
+
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+		UdotN=vx*normal[0]+vy*normal[1];
+		tria->GetSegmentJacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		DL=gauss->weight*Jdet*UdotN;
+
+		TripleMultiply(&L[0],1,numdof,1,
+					&DL,1,1,0,
+					&L[0],1,numdof,0,
+					&Ke_g[0][0],0);
+
+		for(i=0;i<numdof;i++) for(j=0;j<numdof;j++) Ke->values[i*numdof+j]+=Ke_g[i][j];
+	} 
+
+	/*Clean up and return*/
+	delete gauss;
+	return Ke;
+}
+/*}}}*/
+ElementMatrix* Numericalflux::CreateKMatrixBalancethicknessInternal(void){/*{{{*/
+
+	/* constants*/
+	const int numdof=NDOF1*NUMNODES_INTERNAL;
+
+	/* Intermediaries*/
+	int        i,j,ig,index1,index2;
+	IssmDouble     DL1,DL2,Jdet,vx,vy,UdotN;
+	IssmDouble     xyz_list[NUMVERTICES][3];
+	IssmDouble     normal[2];
+	IssmDouble     B[numdof];
+	IssmDouble     Bprime[numdof];
+	IssmDouble     Ke_g1[numdof][numdof];
+	IssmDouble     Ke_g2[numdof][numdof];
+	GaussTria *gauss;
+
+	/*Initialize Element matrix and return if necessary*/
+	Tria*  tria=(Tria*)element;
+	if(!tria->IsIceInElement()) return NULL;
+	ElementMatrix* Ke=new ElementMatrix(nodes,NUMNODES_INTERNAL,this->parameters);
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	Input* vxaverage_input=tria->inputs->GetInput(VxEnum);
+	Input* vyaverage_input=tria->inputs->GetInput(VyEnum);
+	GetNormal(&normal[0],xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	index1=tria->GetNodeIndex(nodes[0]);
+	index2=tria->GetNodeIndex(nodes[1]);
+	gauss=new GaussTria(index1,index2,2);
+	for(ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		tria->GetSegmentBFlux(&B[0],gauss,index1,index2,tria->FiniteElement());
+		tria->GetSegmentBprimeFlux(&Bprime[0],gauss,index1,index2,tria->FiniteElement());
+
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+		UdotN=vx*normal[0]+vy*normal[1];
+		tria->GetSegmentJacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		DL1=gauss->weight*Jdet*UdotN/2;
+		DL2=gauss->weight*Jdet*fabs(UdotN)/2;
+
+		TripleMultiply(&B[0],1,numdof,1,
+					&DL1,1,1,0,
+					&Bprime[0],1,numdof,0,
+					&Ke_g1[0][0],0);
+		TripleMultiply(&B[0],1,numdof,1,
+					&DL2,1,1,0,
+					&B[0],1,numdof,0,
+					&Ke_g2[0][0],0);
+
+		for(i=0;i<numdof;i++) for(j=0;j<numdof;j++) Ke->values[i*numdof+j]+=Ke_g1[i][j];
+		for(i=0;i<numdof;i++) for(j=0;j<numdof;j++) Ke->values[i*numdof+j]+=Ke_g2[i][j];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	return Ke;
+}
+/*}}}*/
+ElementMatrix* Numericalflux::CreateKMatrixMasstransport(void){/*{{{*/
+
+	switch(this->flux_type){
+		case InternalEnum:
+			return CreateKMatrixMasstransportInternal();
+		case BoundaryEnum:
+			return CreateKMatrixMasstransportBoundary();
+		default:
+			_error_("type not supported yet");
+	}
+}
+/*}}}*/
+ElementMatrix* Numericalflux::CreateKMatrixMasstransportBoundary(void){/*{{{*/
+
+	/* constants*/
+	const int numdof=NDOF1*NUMNODES_BOUNDARY;
+
+	/* Intermediaries*/
+	int        i,j,ig,index1,index2;
+	IssmDouble     DL,Jdet,dt,vx,vy,mean_vx,mean_vy,UdotN;
+	IssmDouble     xyz_list[NUMVERTICES][3];
+	IssmDouble     normal[2];
+	IssmDouble     L[numdof];
+	IssmDouble     Ke_g[numdof][numdof];
+	GaussTria *gauss;
+
+	/*Initialize Element matrix and return if necessary*/
+	ElementMatrix* Ke = NULL;
+	Tria*  tria=(Tria*)element;
+	if(!tria->IsIceInElement()) return NULL;
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input* vxaverage_input=tria->inputs->GetInput(VxEnum); _assert_(vxaverage_input);
+	Input* vyaverage_input=tria->inputs->GetInput(VyEnum); _assert_(vyaverage_input);
+	GetNormal(&normal[0],xyz_list);
+
+	/*Check wether it is an inflow or outflow BC (0 is the middle of the segment)*/
+	index1=tria->GetNodeIndex(nodes[0]);
+	index2=tria->GetNodeIndex(nodes[1]);
+
+	gauss=new GaussTria();
+	gauss->GaussEdgeCenter(index1,index2);
+	vxaverage_input->GetInputValue(&mean_vx,gauss);
+	vyaverage_input->GetInputValue(&mean_vy,gauss);
+	delete gauss;
+
+	UdotN=mean_vx*normal[0]+mean_vy*normal[1];
+	if (UdotN<=0){
+		return NULL; /*(u,n)<0 -> inflow, PenaltyCreatePVector will take care of it*/
+	}
+	else{
+		Ke=new ElementMatrix(nodes,NUMNODES_BOUNDARY,this->parameters);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=new GaussTria(index1,index2,2);
+	for(ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		tria->GetSegmentNodalFunctions(&L[0],gauss,index1,index2,tria->FiniteElement());
+
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+		UdotN=vx*normal[0]+vy*normal[1];
+		tria->GetSegmentJacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		DL=gauss->weight*Jdet*dt*UdotN;
+
+		TripleMultiply(&L[0],1,numdof,1,
+					&DL,1,1,0,
+					&L[0],1,numdof,0,
+					&Ke_g[0][0],0);
+
+		for(i=0;i<numdof;i++) for(j=0;j<numdof;j++) Ke->values[i*numdof+j]+=Ke_g[i][j];
+	} 
+
+	/*Clean up and return*/
+	delete gauss;
+	return Ke;
+}
+/*}}}*/
+ElementMatrix* Numericalflux::CreateKMatrixMasstransportInternal(void){/*{{{*/
+
+	/* constants*/
+	const int numdof=NDOF1*NUMNODES_INTERNAL;
+
+	/* Intermediaries*/
+	int        i,j,ig,index1,index2;
+	IssmDouble     DL1,DL2,Jdet,dt,vx,vy,UdotN;
+	IssmDouble     xyz_list[NUMVERTICES][3];
+	IssmDouble     normal[2];
+	IssmDouble     B[numdof];
+	IssmDouble     Bprime[numdof];
+	IssmDouble     Ke_g1[numdof][numdof];
+	IssmDouble     Ke_g2[numdof][numdof];
+	GaussTria *gauss;
+
+	/*Initialize Element matrix and return if necessary*/
+	Tria*  tria=(Tria*)element;
+	if(!tria->IsIceInElement()) return NULL;
+	ElementMatrix* Ke=new ElementMatrix(nodes,NUMNODES_INTERNAL,this->parameters);
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input* vxaverage_input=tria->inputs->GetInput(VxEnum);
+	Input* vyaverage_input=tria->inputs->GetInput(VyEnum);
+	GetNormal(&normal[0],xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	index1=tria->GetNodeIndex(nodes[0]);
+	index2=tria->GetNodeIndex(nodes[1]);
+	gauss=new GaussTria(index1,index2,2);
+	for(ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		tria->GetSegmentBFlux(&B[0],gauss,index1,index2,tria->FiniteElement());
+		tria->GetSegmentBprimeFlux(&Bprime[0],gauss,index1,index2,tria->FiniteElement());
+
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+		UdotN=vx*normal[0]+vy*normal[1];
+		tria->GetSegmentJacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		DL1=gauss->weight*Jdet*dt*UdotN/2;
+		DL2=gauss->weight*Jdet*dt*fabs(UdotN)/2;
+
+		TripleMultiply(&B[0],1,numdof,1,
+					&DL1,1,1,0,
+					&Bprime[0],1,numdof,0,
+					&Ke_g1[0][0],0);
+		TripleMultiply(&B[0],1,numdof,1,
+					&DL2,1,1,0,
+					&B[0],1,numdof,0,
+					&Ke_g2[0][0],0);
+
+		for(i=0;i<numdof;i++) for(j=0;j<numdof;j++) Ke->values[i*numdof+j]+=Ke_g1[i][j];
+		for(i=0;i<numdof;i++) for(j=0;j<numdof;j++) Ke->values[i*numdof+j]+=Ke_g2[i][j];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	return Ke;
+}
+/*}}}*/
+ElementVector* Numericalflux::CreatePVectorAdjointBalancethickness(void){/*{{{*/
+
+	/*No PVector for the Adjoint*/
+	return NULL;
+}
+/*}}}*/
+ElementVector* Numericalflux::CreatePVectorBalancethickness(void){/*{{{*/
+
+	switch(this->flux_type){
+		case InternalEnum:
+			return CreatePVectorBalancethicknessInternal();
+		case BoundaryEnum:
+			return CreatePVectorBalancethicknessBoundary();
+		default:
+			_error_("type not supported yet");
+	}
+}
+/*}}}*/
+ElementVector* Numericalflux::CreatePVectorBalancethicknessBoundary(void){/*{{{*/
+
+	/* constants*/
+	const int numdof=NDOF1*NUMNODES_BOUNDARY;
+
+	/* Intermediaries*/
+	int        i,ig,index1,index2;
+	IssmDouble DL,Jdet,vx,vy,mean_vx,mean_vy,UdotN,thickness;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble normal[2];
+	IssmDouble L[numdof];
+	GaussTria *gauss;
+
+	/*Initialize Load Vector and return if necessary*/
+	ElementVector* pe = NULL;
+	Tria*  tria=(Tria*)element;
+	if(!tria->IsIceInElement()) return NULL;
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	Input* vxaverage_input=tria->inputs->GetInput(VxEnum); _assert_(vxaverage_input); 
+	Input* vyaverage_input=tria->inputs->GetInput(VyEnum); _assert_(vyaverage_input);
+	Input* thickness_input=tria->inputs->GetInput(ThicknessEnum); _assert_(thickness_input);
+	GetNormal(&normal[0],xyz_list);
+
+	/*Check wether it is an inflow or outflow BC (0 is the middle of the segment)*/
+	index1=tria->GetNodeIndex(nodes[0]);
+	index2=tria->GetNodeIndex(nodes[1]);
+
+	gauss=new GaussTria();
+	gauss->GaussEdgeCenter(index1,index2);
+	vxaverage_input->GetInputValue(&mean_vx,gauss);
+	vyaverage_input->GetInputValue(&mean_vy,gauss);
+	delete gauss;
+	UdotN=mean_vx*normal[0]+mean_vy*normal[1];
+	if (UdotN>0){
+		return NULL; /*(u,n)>0 -> outflow, PenaltyCreateKMatrix will take care of it*/
+	}
+	else{
+		pe=new ElementVector(nodes,NUMNODES_BOUNDARY,this->parameters);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=new GaussTria(index1,index2,2);
+	for(ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		tria->GetSegmentNodalFunctions(&L[0],gauss,index1,index2,tria->FiniteElement());
+
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+		thickness_input->GetInputValue(&thickness,gauss);
+
+		UdotN=vx*normal[0]+vy*normal[1];
+		tria->GetSegmentJacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		DL= - gauss->weight*Jdet*UdotN*thickness;
+
+		for(i=0;i<numdof;i++) pe->values[i] += DL*L[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	return pe;
+}
+/*}}}*/
+ElementVector* Numericalflux::CreatePVectorBalancethicknessInternal(void){/*{{{*/
+
+	/*Nothing added to PVector*/
+	return NULL;
+
+}
+/*}}}*/
+ElementVector* Numericalflux::CreatePVectorMasstransport(void){/*{{{*/
+
+	switch(this->flux_type){
+		case InternalEnum:
+			return CreatePVectorMasstransportInternal();
+		case BoundaryEnum:
+			return CreatePVectorMasstransportBoundary();
+		default:
+			_error_("type not supported yet");
+	}
+}
+/*}}}*/
+ElementVector* Numericalflux::CreatePVectorMasstransportBoundary(void){/*{{{*/
+
+	/* constants*/
+	const int numdof=NDOF1*NUMNODES_BOUNDARY;
+
+	/* Intermediaries*/
+	int        i,ig,index1,index2;
+	IssmDouble     DL,Jdet,dt,vx,vy,mean_vx,mean_vy,UdotN,thickness;
+	IssmDouble     xyz_list[NUMVERTICES][3];
+	IssmDouble     normal[2];
+	IssmDouble     L[numdof];
+	GaussTria *gauss;
+
+	/*Initialize Load Vector and return if necessary*/
+	ElementVector* pe = NULL;
+	Tria*  tria=(Tria*)element;
+	if(!tria->IsIceInElement()) return NULL;
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input* vxaverage_input   =tria->inputs->GetInput(VxEnum);                     _assert_(vxaverage_input); 
+	Input* vyaverage_input   =tria->inputs->GetInput(VyEnum);                     _assert_(vyaverage_input);
+	Input* spcthickness_input=tria->inputs->GetInput(MasstransportSpcthicknessEnum); _assert_(spcthickness_input);
+	GetNormal(&normal[0],xyz_list);
+
+	/*Check wether it is an inflow or outflow BC (0 is the middle of the segment)*/
+	index1=tria->GetNodeIndex(nodes[0]);
+	index2=tria->GetNodeIndex(nodes[1]);
+
+	gauss=new GaussTria();
+	gauss->GaussEdgeCenter(index1,index2);
+	vxaverage_input->GetInputValue(&mean_vx,gauss);
+	vyaverage_input->GetInputValue(&mean_vy,gauss);
+	delete gauss;
+
+	UdotN=mean_vx*normal[0]+mean_vy*normal[1];
+	if (UdotN>0){
+		return NULL; /*(u,n)>0 -> outflow, PenaltyCreateKMatrix will take care of it*/
+	}
+	else{
+		pe=new ElementVector(nodes,NUMNODES_BOUNDARY,this->parameters);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=new GaussTria(index1,index2,2);
+	for(ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		tria->GetSegmentNodalFunctions(&L[0],gauss,index1,index2,tria->FiniteElement());
+
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+		spcthickness_input->GetInputValue(&thickness,gauss);
+		if(xIsNan<IssmDouble>(thickness)) _error_("Cannot weakly apply constraint because NaN was provided");
+
+		UdotN=vx*normal[0]+vy*normal[1];
+		tria->GetSegmentJacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		DL= - gauss->weight*Jdet*dt*UdotN*thickness;
+
+		for(i=0;i<numdof;i++) pe->values[i] += DL*L[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	return pe;
+}
+/*}}}*/
+ElementVector* Numericalflux::CreatePVectorMasstransportInternal(void){/*{{{*/
+
+	/*Nothing added to PVector*/
+	return NULL;
+
+}
+/*}}}*/
+void           Numericalflux::GetNormal(IssmDouble* normal,IssmDouble xyz_list[4][3]){/*{{{*/
+
+	/*Build unit outward pointing vector*/
+	IssmDouble vector[2];
+	IssmDouble norm;
+
+	vector[0]=xyz_list[1][0] - xyz_list[0][0];
+	vector[1]=xyz_list[1][1] - xyz_list[0][1];
+
+	norm=sqrt(pow(vector[0],2.0)+pow(vector[1],2.0));
+
+	normal[0]= + vector[1]/norm;
+	normal[1]= - vector[0]/norm;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Numericalflux.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Numericalflux.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Numericalflux.h	(revision 21239)
@@ -0,0 +1,97 @@
+/*!\file Numericalflux.h
+ * \brief: header file for icefront object
+ */
+
+#ifndef _NUMERICALFLUX_H_
+#define _NUMERICALFLUX_H_
+
+/*Headers:*/
+#include "./Load.h"
+class Hook;
+class Parameters;
+class IoModel;
+class Element;
+class Vertex;
+class ElementMatrix;
+class ElementVector;
+
+class Numericalflux: public Load {
+
+	public: 
+		int id;
+		int analysis_type;
+		int flux_type;
+
+		/*Hooks*/
+		Hook *helement;
+		Hook *hnodes;
+		Hook *hvertices;
+
+		/*Corresponding fields*/
+		Element     *element;
+		Vertex     **vertices;
+		Node       **nodes;
+		Parameters  *parameters;
+
+		/*Numericalflux constructors,destructors {{{*/
+		Numericalflux();
+		Numericalflux(int numericalflux_id,int i,int index,IoModel* iomodel,int analysis_type);
+		~Numericalflux();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int     ObjectEnum();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{*/
+		void InputUpdateFromConstant(IssmDouble constant, int name){/*Do nothing*/};
+		void InputUpdateFromConstant(int constant, int name){/*Do nothing*/};
+		void InputUpdateFromConstant(bool constant, int name){_error_("Not implemented yet!");}
+		void InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
+		void InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols, int name, int type){/*Do nothing*/}
+		void InputUpdateFromVector(IssmDouble* vector, int name, int type){/*Do nothing*/}
+		void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*Do nothing*/}
+		/*}}}*/
+		/*Load virtual functions definitions: {{{*/
+		void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
+		void CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
+		void CreatePVector(Vector<IssmDouble>* pf);
+		void GetNodesLidList(int* lidlist);
+		void GetNodesSidList(int* sidlist);
+		int  GetNumberOfNodes(void);
+		bool InAnalysis(int analysis_type);
+		bool IsPenalty(void);
+		void PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){_error_("Not implemented yet");};
+		void PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
+		void PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
+		void ResetHooks();
+		void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
+		/*}}}*/
+		/*Numericalflux management:{{{*/
+		ElementMatrix* CreateKMatrixAdjointBalancethickness(void);
+		ElementMatrix* CreateKMatrixAdjointBalancethicknessBoundary(void);
+		ElementMatrix* CreateKMatrixAdjointBalancethicknessInternal(void);
+		ElementMatrix* CreateKMatrixBalancethickness(void);
+		ElementMatrix* CreateKMatrixBalancethicknessBoundary(void);
+		ElementMatrix* CreateKMatrixBalancethicknessInternal(void);
+		ElementMatrix* CreateKMatrixMasstransport(void);
+		ElementMatrix* CreateKMatrixMasstransportBoundary(void);
+		ElementMatrix* CreateKMatrixMasstransportInternal(void);
+		ElementVector* CreatePVectorAdjointBalancethickness(void);
+		ElementVector* CreatePVectorBalancethickness(void);
+		ElementVector* CreatePVectorBalancethicknessBoundary(void);
+		ElementVector* CreatePVectorBalancethicknessInternal(void);
+		ElementVector* CreatePVectorMasstransport(void);
+		ElementVector* CreatePVectorMasstransportBoundary(void);
+		ElementVector* CreatePVectorMasstransportInternal(void);
+		void           GetNormal(IssmDouble* normal,IssmDouble xyz_list[4][3]);
+		/*}}}*/
+
+};
+
+#endif  /* _NUMERICALFLUX_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Pengrid.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Pengrid.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Pengrid.cpp	(revision 21239)
@@ -0,0 +1,694 @@
+/*!\file Pengrid.c
+ * \brief: implementation of the Pengrid object
+ */
+
+/*Headers*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+#include "../../analyses/analyses.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMVERTICES   1
+
+/*Pengrid constructors and destructor*/
+Pengrid::Pengrid(){/*{{{*/
+	this->parameters=NULL;
+	this->hnode=NULL;
+	this->node=NULL;
+	this->helement=NULL;
+	this->element=NULL;
+	this->hmatpar=NULL;
+	this->matpar=NULL;
+
+	/*not active, not zigzagging: */
+	active=0;
+	zigzag_counter=0;
+
+}
+/*}}}*/
+Pengrid::Pengrid(int id, int index, IoModel* iomodel, int in_analysis_type){ //i is the element index/*{{{*/
+
+	int pengrid_node_id;
+	int pengrid_matpar_id;
+	int pengrid_element_id;
+
+	/*Some checks if debugging activated*/
+	_assert_(iomodel->singlenodetoelementconnectivity);
+	_assert_(index>=0 && index<iomodel->numberofvertices);
+	_assert_(id);
+
+	/*id: */
+	this->id=id;
+	this->analysis_type=in_analysis_type;
+
+	/*hooks: */
+	pengrid_node_id=iomodel->nodecounter+index+1;
+	pengrid_element_id=iomodel->singlenodetoelementconnectivity[index];
+	_assert_(pengrid_element_id);
+	pengrid_matpar_id=iomodel->numberofelements+1; //refers to the constant material parameters object
+
+	this->hnode=new Hook(&pengrid_node_id,1);
+	this->helement=new Hook(&pengrid_element_id,1);
+	this->hmatpar=new Hook(&pengrid_matpar_id,1);
+
+	//this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
+	this->parameters=NULL;
+	this->node=NULL;
+	this->element=NULL;
+	this->matpar=NULL;
+
+	//let's not forget internals
+	this->active=0;
+	this->zigzag_counter=0;
+
+}
+/*}}}*/
+Pengrid::~Pengrid(){/*{{{*/
+	delete hnode;
+	delete helement;
+	delete hmatpar;
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Pengrid::copy() {/*{{{*/
+
+	Pengrid* pengrid=NULL;
+
+	pengrid=new Pengrid();
+
+	/*copy fields: */
+	pengrid->id=this->id;
+	pengrid->analysis_type=this->analysis_type;
+
+	/*point parameters: */
+	pengrid->parameters=this->parameters;
+
+	/*now deal with hooks and objects: */
+	pengrid->hnode=(Hook*)this->hnode->copy();
+	pengrid->hmatpar=(Hook*)this->hmatpar->copy();
+	pengrid->helement=(Hook*)this->helement->copy();
+
+	/*corresponding fields*/
+	pengrid->node  =(Node*)pengrid->hnode->delivers();
+	pengrid->matpar =(Matpar*)pengrid->hmatpar->delivers();
+	pengrid->element=(Element*)pengrid->helement->delivers();
+
+	//let's not forget internals
+	pengrid->active=this->active=0;
+	pengrid->zigzag_counter=this->zigzag_counter=0;
+
+	return pengrid;
+
+}
+/*}}}*/
+void    Pengrid::DeepEcho(void){/*{{{*/
+
+	_printf_("Pengrid:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	hnode->DeepEcho();
+	helement->DeepEcho();
+	hmatpar->DeepEcho();
+	_printf_("   active " << this->active << "\n");
+	_printf_("   zigzag_counter " << this->zigzag_counter << "\n");
+	_printf_("   parameters\n");
+	parameters->DeepEcho();
+}
+/*}}}*/
+void    Pengrid::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int     Pengrid::Id(void){ return id; }/*{{{*/
+/*}}}*/
+void    Pengrid::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	_assert_(this);
+
+	/*ok, marshall operations: */
+	MARSHALLING_ENUM(PengridEnum);
+	MARSHALLING(id);
+	MARSHALLING(analysis_type);
+
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		this->hnode      = new Hook();
+		this->helement   = new Hook();
+		this->hmatpar    = new Hook();
+	}
+
+	this->hnode->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->helement->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->hmatpar->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	/*corresponding fields*/
+	node   =(Node*)this->hnode->delivers();
+	matpar =(Matpar*)this->hmatpar->delivers();
+	element=(Element*)this->helement->delivers();
+
+	MARSHALLING(active);
+	MARSHALLING(zigzag_counter);
+
+}
+/*}}}*/
+int     Pengrid::ObjectEnum(void){/*{{{*/
+
+	return PengridEnum;
+}
+/*}}}*/
+
+/*Load virtual functions definitions:*/
+void  Pengrid::Configure(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+	/*Take care of hooking up all objects for this load, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	hnode->configure(nodesin);
+	helement->configure(elementsin);
+	hmatpar->configure(materialsin);
+
+	/*Get corresponding fields*/
+	node=(Node*)hnode->delivers();
+	element=(Element*)helement->delivers();
+	matpar=(Matpar*)hmatpar->delivers();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+}
+/*}}}*/
+void  Pengrid::CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs){/*{{{*/
+
+	/*No loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Pengrid::CreatePVector(Vector<IssmDouble>* pf){/*{{{*/
+	/*No loads applied, do nothing, originaly used for moulin input: */
+	return;
+	
+}
+/*}}}*/
+void  Pengrid::GetNodesLidList(int* lidlist){/*{{{*/
+
+	_assert_(lidlist);
+	_assert_(node);
+
+	lidlist[0]=node->Lid();
+}
+/*}}}*/
+void  Pengrid::GetNodesSidList(int* sidlist){/*{{{*/
+
+	_assert_(sidlist);
+	_assert_(node);
+
+	sidlist[0]=node->Sid();
+}
+/*}}}*/
+int   Pengrid::GetNumberOfNodes(void){/*{{{*/
+
+	return NUMVERTICES;
+}
+/*}}}*/
+bool  Pengrid::InAnalysis(int in_analysis_type){/*{{{*/
+	if (in_analysis_type==this->analysis_type)return true;
+	else return false;
+}
+/*}}}*/
+bool  Pengrid::IsPenalty(void){/*{{{*/
+	return true;
+}
+/*}}}*/
+void  Pengrid::PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs,IssmDouble kmax){/*{{{*/
+
+	/*Retrieve parameters: */
+	ElementMatrix* Ke=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		case ThermalAnalysisEnum:
+			Ke=PenaltyCreateKMatrixThermal(kmax);
+			break;
+		case MeltingAnalysisEnum:
+			Ke=PenaltyCreateKMatrixMelting(kmax);
+			break;
+		case HydrologyDCInefficientAnalysisEnum:
+			Ke=PenaltyCreateKMatrixHydrologyDCInefficient(kmax);
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global matrix*/
+	if(Ke){
+		Ke->AddToGlobal(Kff,Kfs);
+		delete Ke;
+	}
+}
+/*}}}*/
+void  Pengrid::PenaltyCreatePVector(Vector<IssmDouble>* pf,IssmDouble kmax){/*{{{*/
+
+	/*Retrieve parameters: */
+	ElementVector* pe=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		case ThermalAnalysisEnum:
+			pe=PenaltyCreatePVectorThermal(kmax);
+			break;
+		case MeltingAnalysisEnum:
+			pe=PenaltyCreatePVectorMelting(kmax);
+			break;
+		case StressbalanceAnalysisEnum: case AdjointHorizAnalysisEnum:
+			break;
+		case HydrologyDCInefficientAnalysisEnum:
+			pe=PenaltyCreatePVectorHydrologyDCInefficient(kmax);
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global Vector*/
+	if(pe){
+		pe->AddToGlobal(pf);
+		delete pe;
+	}
+}
+/*}}}*/
+void  Pengrid::ResetHooks(){/*{{{*/
+
+	this->node=NULL;
+	this->element=NULL;
+	this->matpar=NULL;
+	this->parameters=NULL;
+
+	/*Get Element type*/
+	this->hnode->reset();
+	this->helement->reset();
+	this->hmatpar->reset();
+
+}
+/*}}}*/
+void  Pengrid::SetCurrentConfiguration(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+}
+/*}}}*/
+void  Pengrid::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
+
+	/*Output */
+	int d_nz = 0;
+	int o_nz = 0;
+
+	if(!flags[this->node->Lid()]){
+
+		/*flag current node so that no other element processes it*/
+		flags[this->node->Lid()]=true;
+
+		int counter=0;
+		while(flagsindices[counter]>=0) counter++;
+		flagsindices[counter]=this->node->Lid();
+
+		/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
+		switch(set2_enum){
+			case FsetEnum:
+				if(node->indexing.fsize){
+					if(this->node->IsClone())
+					 o_nz += 1;
+					else
+					 d_nz += 1;
+				}
+				break;
+			case GsetEnum:
+				if(node->indexing.gsize){
+					if(this->node->IsClone())
+					 o_nz += 1;
+					else
+					 d_nz += 1;
+				}
+				break;
+			case SsetEnum:
+				if(node->indexing.ssize){
+					if(this->node->IsClone())
+					 o_nz += 1;
+					else
+					 d_nz += 1;
+				}
+				break;
+			default: _error_("not supported");
+		}
+	}
+
+	/*Assign output pointers: */
+	*pd_nz=d_nz;
+	*po_nz=o_nz;
+}
+/*}}}*/
+
+/*Update virtual functions definitions:*/
+void  Pengrid::InputUpdateFromConstant(IssmDouble constant, int name){/*{{{*/
+	/*Nothing*/
+}
+/*}}}*/
+void  Pengrid::InputUpdateFromConstant(int constant, int name){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Pengrid::InputUpdateFromConstant(bool constant, int name){/*{{{*/
+
+	switch(name){
+
+		case ResetPenaltiesEnum:
+			if (constant) zigzag_counter=0;
+			return;
+
+	}
+}
+/*}}}*/
+void  Pengrid::InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols, int name, int type){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Pengrid::InputUpdateFromVector(IssmDouble* vector, int name, int type){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Pengrid::InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+
+/*Pengrid management:*/
+void           Pengrid::ConstraintActivate(int* punstable){/*{{{*/
+
+	int analysis_type;
+
+	/*Retrieve parameters: */
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+	case StressbalanceAnalysisEnum:
+		/*No penalty to check*/
+		return;
+	case ThermalAnalysisEnum:
+		ConstraintActivateThermal(punstable);
+		break;
+	case MeltingAnalysisEnum:
+		/*No penalty to check*/
+		return;
+	case HydrologyDCInefficientAnalysisEnum:
+		ConstraintActivateHydrologyDCInefficient(punstable);
+		break;
+	default:
+		_error_("analysis: " << EnumToStringx(analysis_type) << " not supported yet");
+	}
+}
+/*}}}*/
+void           Pengrid::ConstraintActivateHydrologyDCInefficient(int* punstable){/*{{{*/
+
+	//   The penalty is stable if it doesn't change during two consecutive iterations.   
+	int        unstable=0;
+	int        new_active;
+	int        penalty_lock;
+	IssmDouble pressure;
+	IssmDouble h;
+	IssmDouble h_max;	
+	HydrologyDCInefficientAnalysis* inefanalysis = NULL;
+
+	/*check that pengrid is not a clone (penalty to be added only once)*/
+	if(node->IsClone()){
+		unstable=0;
+		*punstable=unstable;
+		return;
+	}
+	if(!element->IsOnBase()){
+		unstable=0;
+		active=0;
+		*punstable=unstable;
+		return;
+	}
+
+	/*Get sediment water head h*/
+	inefanalysis = new HydrologyDCInefficientAnalysis();
+	element->GetInputValue(&h,node,SedimentHeadEnum);
+	inefanalysis->GetHydrologyDCInefficientHmax(&h_max,element,node);
+	parameters->FindParam(&penalty_lock,HydrologydcPenaltyLockEnum);
+
+	if (h>h_max){
+	 new_active=1;
+	}
+	else{
+	 new_active=0;
+	}
+
+	if(this->active==new_active){
+		unstable=0;
+	}
+	else{
+		unstable=1;
+		if(penalty_lock)zigzag_counter++;
+	}
+
+	/*If penalty keeps zigzagging more than penalty_lock times: */
+	if(penalty_lock){
+		if(zigzag_counter>penalty_lock){
+			unstable=0;
+			active=1;
+		}
+	}
+	/*Set penalty flag*/
+	this->active=new_active;
+
+	/*Assign output pointers:*/
+	delete inefanalysis;
+	*punstable=unstable;
+}
+/*}}}*/
+void           Pengrid::ConstraintActivateThermal(int* punstable){/*{{{*/
+
+	//   The penalty is stable if it doesn't change during to successive iterations.   
+	IssmDouble pressure;
+	IssmDouble temperature;
+	IssmDouble t_pmp;
+	int        new_active;
+	int        unstable=0;
+	int        penalty_lock;
+
+	/*recover pointers: */
+	Penta* penta=(Penta*)element;
+
+	/*check that pengrid is not a clone (penalty to be added only once)*/
+	if (node->IsClone()){
+		unstable=0;
+		*punstable=unstable;
+		return;
+	}
+
+	//First recover pressure and temperature values, using the element: */
+	penta->GetInputValue(&pressure,node,PressureEnum);
+	penta->GetInputValue(&temperature,node,TemperaturePicardEnum);
+
+	//Recover our data:
+	parameters->FindParam(&penalty_lock,ThermalPenaltyLockEnum);
+
+	//Compute pressure melting point
+	t_pmp=matpar->TMeltingPoint(pressure);
+
+	//Figure out if temperature is over melting_point, in which case, this penalty needs to be activated.
+
+	if (temperature>t_pmp){
+		new_active=1;
+	}
+	else{
+		new_active=0;
+	}
+
+	//Figure out stability of this penalty
+	if (active==new_active){
+		unstable=0;
+	}
+	else{
+		unstable=1;
+		if(penalty_lock)zigzag_counter++;
+	}
+
+	/*If penalty keeps zigzagging more than 5 times: */
+	if(penalty_lock){
+		if(zigzag_counter>penalty_lock){
+			unstable=0;
+			active=1;
+		}
+	}
+
+	//Set penalty flag
+	active=new_active;
+
+	//*Assign output pointers:*/
+	*punstable=unstable;
+}
+/*}}}*/
+ElementMatrix* Pengrid::PenaltyCreateKMatrixHydrologyDCInefficient(IssmDouble kmax){/*{{{*/
+	IssmDouble    penalty_factor;
+
+	/*Retrieve parameters*/
+	parameters->FindParam(&penalty_factor,HydrologydcPenaltyFactorEnum);
+
+	/*Initialize Element matrix and return if necessary*/
+	if(!this->active) return NULL;
+	ElementMatrix* Ke=new ElementMatrix(&node,NUMVERTICES,this->parameters);
+
+	Ke->values[0]=kmax*pow(10.,penalty_factor);
+
+	/*Clean up and return*/
+	return Ke;
+}
+/*}}}*/
+ElementMatrix* Pengrid::PenaltyCreateKMatrixMelting(IssmDouble kmax){/*{{{*/
+
+	IssmDouble pressure,temperature,t_pmp;
+	IssmDouble penalty_factor;
+
+	Penta* penta=(Penta*)element;
+
+	/*check that pengrid is not a clone (penalty to be added only once)*/
+	if (node->IsClone()) return NULL;
+	ElementMatrix* Ke=new ElementMatrix(&node,1,this->parameters);
+
+	/*Retrieve all parameters*/
+	penta->GetInputValue(&pressure,node,PressureEnum);
+	penta->GetInputValue(&temperature,node,TemperatureEnum);
+	parameters->FindParam(&penalty_factor,ThermalPenaltyFactorEnum);
+
+	/*Compute pressure melting point*/
+	t_pmp=matpar->GetMaterialParameter(MaterialsMeltingpointEnum)-matpar->GetMaterialParameter(MaterialsBetaEnum)*pressure;
+
+	/*Add penalty load*/
+	if (temperature<t_pmp){ //If T<Tpmp, there must be no melting. Therefore, melting should be  constrained to 0 when T<Tpmp, instead of using spcs, use penalties
+		Ke->values[0]=kmax*pow(10.,penalty_factor);
+	}
+
+	/*Clean up and return*/
+	return Ke;
+}
+/*}}}*/
+ElementMatrix* Pengrid::PenaltyCreateKMatrixThermal(IssmDouble kmax){/*{{{*/
+
+	IssmDouble    penalty_factor;
+
+	/*Initialize Element matrix and return if necessary*/
+	if(!this->active) return NULL;
+	ElementMatrix* Ke=new ElementMatrix(&node,NUMVERTICES,this->parameters);
+
+	/*recover parameters: */
+	parameters->FindParam(&penalty_factor,ThermalPenaltyFactorEnum);
+
+	Ke->values[0]=kmax*pow(10.,penalty_factor);
+
+	/*Clean up and return*/
+	return Ke;
+}
+/*}}}*/
+ElementVector* Pengrid::PenaltyCreatePVectorHydrologyDCInefficient(IssmDouble kmax){/*{{{*/
+
+	IssmDouble h_max;
+	IssmDouble penalty_factor;
+	HydrologyDCInefficientAnalysis* inefanalysis = NULL;
+
+	/*Initialize Element matrix and return if necessary*/
+	if(!this->active) return NULL;
+	ElementVector* pe=new ElementVector(&node,1,this->parameters);
+	inefanalysis = new HydrologyDCInefficientAnalysis();
+
+	/*Retrieve parameters*/
+	parameters->FindParam(&penalty_factor,HydrologydcPenaltyFactorEnum);
+
+	/*Get h_max and compute penalty*/
+	inefanalysis->GetHydrologyDCInefficientHmax(&h_max,element,node);
+
+	pe->values[0]=kmax*pow(10.,penalty_factor)*h_max;
+
+	/*Clean up and return*/
+	delete inefanalysis;
+	return pe;
+}
+/*}}}*/
+ElementVector* Pengrid::PenaltyCreatePVectorMelting(IssmDouble kmax){/*{{{*/
+
+	IssmDouble pressure;
+	IssmDouble temperature;
+	IssmDouble melting_offset;
+	IssmDouble t_pmp;
+	IssmDouble dt,penalty_factor;
+
+	/*recover pointers: */
+	Penta* penta=(Penta*)element;
+
+	/*check that pengrid is not a clone (penalty to be added only once)*/
+	if (node->IsClone()) return NULL;
+	ElementVector* pe=new ElementVector(&node,NUMVERTICES,this->parameters);
+
+	/*Retrieve all parameters*/
+	penta->GetInputValue(&pressure,node,PressureEnum);
+	penta->GetInputValue(&temperature,node,TemperatureEnum);
+	parameters->FindParam(&melting_offset,MeltingOffsetEnum);
+	parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+	parameters->FindParam(&penalty_factor,ThermalPenaltyFactorEnum);
+
+	/*Compute pressure melting point*/
+	t_pmp=matpar->GetMaterialParameter(MaterialsMeltingpointEnum)-matpar->GetMaterialParameter(MaterialsBetaEnum)*pressure;
+
+	/*Add penalty load
+	  This time, the penalty must have the same value as the one used for the thermal computation
+	  so that the corresponding melting can be computed correctly
+	  In the thermal computation, we used kmax=melting_offset, and the same penalty_factor*/
+	if (temperature<t_pmp){ //%no melting
+		pe->values[0]=0;
+	}
+	else{
+		if (reCast<bool>(dt)) pe->values[0]=melting_offset*pow(10.,penalty_factor)*(temperature-t_pmp)/dt;
+		else    pe->values[0]=melting_offset*pow(10.,penalty_factor)*(temperature-t_pmp);
+	}
+
+	/*Clean up and return*/
+	return pe;
+}
+/*}}}*/
+ElementVector* Pengrid::PenaltyCreatePVectorThermal(IssmDouble kmax){/*{{{*/
+
+	IssmDouble pressure;
+	IssmDouble t_pmp;
+	IssmDouble penalty_factor;
+
+	Penta* penta=(Penta*)element;
+
+	/*Initialize Element matrix and return if necessary*/
+	if(!this->active) return NULL;
+	ElementVector* pe=new ElementVector(&node,1,this->parameters);
+
+	/*Retrieve all parameters*/
+	penta->GetInputValue(&pressure,node,PressureEnum);
+	parameters->FindParam(&penalty_factor,ThermalPenaltyFactorEnum);
+
+	/*Compute pressure melting point*/
+	t_pmp=matpar->GetMaterialParameter(MaterialsMeltingpointEnum)-matpar->GetMaterialParameter(MaterialsBetaEnum)*pressure;
+
+	pe->values[0]=kmax*pow(10.,penalty_factor)*t_pmp;
+
+	/*Clean up and return*/
+	return pe;
+}
+/*}}}*/
+void           Pengrid::ResetConstraint(void){/*{{{*/
+	active         = 0;
+	zigzag_counter = 0;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Pengrid.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Pengrid.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Pengrid.h	(revision 21239)
@@ -0,0 +1,100 @@
+/*!\file Pengrid.h
+ * \brief: header file for pengrid object */
+
+#ifndef _PENGRID_H_
+#define _PENGRID_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./Load.h"
+class Hook;
+class Inputs;
+class Parameters;
+class IoModel;
+/*}}}*/
+
+class Pengrid: public Load{
+
+	private: 
+
+		int        id;
+		int        analysis_type;
+
+		/*Hooks*/
+		Hook* hnode;  //hook to 1 node
+		Hook* helement;  //hook to 1 element
+		Hook* hmatpar; //hook to 1 matpar
+
+		/*Corresponding fields*/
+		Node    *node;
+		Element *element;
+		Matpar  *matpar;
+
+		Parameters* parameters; //pointer to solution parameters
+
+		/*internals: */
+		int active;
+		int zigzag_counter;
+
+	public:
+
+		/*Pengrid constructors, destructors {{{*/
+		Pengrid();
+		Pengrid(int index, int id, IoModel* iomodel,int analysis_type);
+		~Pengrid();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{*/
+		void  InputUpdateFromConstant(IssmDouble constant, int name);
+		void  InputUpdateFromConstant(int constant, int name);
+		void  InputUpdateFromConstant(bool constant, int name);
+		void  InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
+		void  InputUpdateFromMatrixDakota(IssmDouble* matrix ,int nrows, int ncols, int name, int type);
+		void  InputUpdateFromVector(IssmDouble* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type);
+		/*}}}*/
+		/*Load virtual functions definitions: {{{*/
+		void  Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void  CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
+		void  CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
+		void  CreatePVector(Vector<IssmDouble>* pf);
+		void  GetNodesLidList(int* lidlist);
+		void  GetNodesSidList(int* sidlist);
+		int   GetNumberOfNodes(void);
+		bool  InAnalysis(int analysis_type);
+		bool  IsPenalty(void);
+		void  PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){_error_("Not implemented yet");};
+		void  PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
+		void  PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
+		void  ResetHooks();
+		void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
+		/*}}}*/
+		/*Pengrid management {{{*/
+		void				ConstraintActivate(int* punstable);
+		void           ConstraintActivateHydrologyDCInefficient(int* punstable);
+		void           ConstraintActivateThermal(int* punstable);
+		ElementMatrix* PenaltyCreateKMatrixHydrologyDCInefficient(IssmDouble kmax);
+		ElementMatrix* PenaltyCreateKMatrixMelting(IssmDouble kmax);
+		ElementMatrix* PenaltyCreateKMatrixThermal(IssmDouble kmax);
+		ElementVector* PenaltyCreatePVectorHydrologyDCInefficient(IssmDouble kmax);
+		ElementVector* PenaltyCreatePVectorMelting(IssmDouble kmax);
+		ElementVector* PenaltyCreatePVectorThermal(IssmDouble kmax);
+		void  ResetConstraint(void);
+		/*}}}*/
+
+};
+
+#endif  /* _PENGRID_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Penpair.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Penpair.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Penpair.cpp	(revision 21239)
@@ -0,0 +1,410 @@
+/*!\file Penpair.c
+ * \brief: implementation of the Penpair object
+ */
+
+/*Headers*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMVERTICES 2
+
+/*Penpair constructors and destructor*/
+Penpair::Penpair(){/*{{{*/
+
+	this->hnodes=NULL;
+	this->nodes=NULL;
+	this->parameters=NULL;
+	return;
+}
+/*}}}*/
+Penpair::Penpair(int penpair_id, int* penpair_node_ids,int in_analysis_type){/*{{{*/
+
+	this->id=penpair_id;
+	this->analysis_type=in_analysis_type;
+	this->hnodes=new Hook(penpair_node_ids,2);
+	this->parameters=NULL;
+	this->nodes=NULL;
+
+	return;
+}
+/*}}}*/
+Penpair::~Penpair(){/*{{{*/
+	delete hnodes;
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Penpair::copy() {/*{{{*/
+
+	Penpair* penpair=NULL;
+
+	penpair=new Penpair();
+
+	/*copy fields: */
+	penpair->id=this->id;
+	penpair->analysis_type=this->analysis_type;
+
+	/*now deal with hooks and objects: */
+	penpair->hnodes=(Hook*)this->hnodes->copy();
+	penpair->nodes =(Node**)penpair->hnodes->deliverp();
+
+	/*point parameters: */
+	penpair->parameters=this->parameters;
+
+	return penpair;
+
+}
+/*}}}*/
+void    Penpair::DeepEcho(void){/*{{{*/
+
+	_printf_("Penpair:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	hnodes->DeepEcho();
+
+	return;
+}		
+/*}}}*/
+void    Penpair::Echo(void){/*{{{*/
+
+	_printf_("Penpair:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	hnodes->Echo();
+
+	return;
+}
+/*}}}*/
+int     Penpair::Id(void){ return id; }/*{{{*/
+/*}}}*/
+void    Penpair::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	_assert_(this);
+
+	/*ok, marshall operations: */
+	MARSHALLING_ENUM(PenpairEnum);
+	MARSHALLING(id);
+	MARSHALLING(analysis_type);
+
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		this->hnodes = new Hook();
+	}
+	this->hnodes->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	/*corresponding fields*/
+	nodes = (Node**)this->hnodes->deliverp();
+
+}
+/*}}}*/
+int     Penpair::ObjectEnum(void){/*{{{*/
+
+	return PenpairEnum;
+}
+/*}}}*/
+
+/*Load virtual functions definitions:*/
+void  Penpair::Configure(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	hnodes->configure((DataSet*)nodesin);
+
+	/*Initialize hooked fields*/
+	this->nodes  =(Node**)hnodes->deliverp();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+
+}
+/*}}}*/
+void  Penpair::CreateJacobianMatrix(Matrix<IssmDouble>* Jff){/*{{{*/
+	this->CreateKMatrix(Jff,NULL);
+}
+/*}}}*/
+void  Penpair::CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs){/*{{{*/
+	/*If you code this piece, don't forget that a penalty will be inactive if it is dealing with clone nodes*/
+	/*No loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Penpair::CreatePVector(Vector<IssmDouble>* pf){/*{{{*/
+
+	/*No loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Penpair::GetNodesLidList(int* lidlist){/*{{{*/
+
+	_assert_(lidlist);
+	_assert_(nodes);
+
+	for(int i=0;i<NUMVERTICES;i++) lidlist[i]=nodes[i]->Lid();
+}
+/*}}}*/
+void  Penpair::GetNodesSidList(int* sidlist){/*{{{*/
+
+	_assert_(sidlist);
+	_assert_(nodes);
+
+	for(int i=0;i<NUMVERTICES;i++) sidlist[i]=nodes[i]->Sid();
+}
+/*}}}*/
+int   Penpair::GetNumberOfNodes(void){/*{{{*/
+
+	return NUMVERTICES;
+}
+/*}}}*/
+bool  Penpair::InAnalysis(int in_analysis_type){/*{{{*/
+	if (in_analysis_type==this->analysis_type)return true;
+	else return false;
+}
+/*}}}*/
+bool  Penpair::IsPenalty(void){/*{{{*/
+	return true;
+}
+/*}}}*/
+void  Penpair::PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){/*{{{*/
+	this->PenaltyCreateKMatrix(Jff,NULL,kmax);
+}
+/*}}}*/
+void  Penpair::PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs,IssmDouble kmax){/*{{{*/
+
+	/*Retrieve parameters: */
+	ElementMatrix* Ke=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		case StressbalanceAnalysisEnum:
+			Ke=PenaltyCreateKMatrixStressbalanceHoriz(kmax);
+			break;
+		case MasstransportAnalysisEnum:
+			Ke=PenaltyCreateKMatrixMasstransport(kmax);
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global Vector*/
+	if(Ke){
+		Ke->AddToGlobal(Kff,Kfs);
+		delete Ke;
+	}
+}
+/*}}}*/
+void  Penpair::PenaltyCreatePVector(Vector<IssmDouble>* pf,IssmDouble kmax){/*{{{*/
+	/*No loads applied, do nothing: */
+	return;
+}
+/*}}}*/
+void  Penpair::ResetHooks(){/*{{{*/
+
+	this->nodes=NULL;
+	this->parameters=NULL;
+
+	/*Get Element type*/
+	this->hnodes->reset();
+
+}
+/*}}}*/
+void  Penpair::SetCurrentConfiguration(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+}
+/*}}}*/
+void  Penpair::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
+
+	/*Output */
+	int d_nz = 0;
+	int o_nz = 0;
+
+	/*Loop over all nodes*/
+	for(int i=0;i<NUMVERTICES;i++){
+
+		if(!flags[this->nodes[i]->Lid()]){
+
+			/*flag current node so that no other element processes it*/
+			flags[this->nodes[i]->Lid()]=true;
+
+			int counter=0;
+			while(flagsindices[counter]>=0) counter++;
+			flagsindices[counter]=this->nodes[i]->Lid();
+
+			/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
+			switch(set2_enum){
+				case FsetEnum:
+					if(nodes[i]->indexing.fsize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case GsetEnum:
+					if(nodes[i]->indexing.gsize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case SsetEnum:
+					if(nodes[i]->indexing.ssize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				default: _error_("not supported");
+			}
+		}
+	}
+
+	/*Assign output pointers: */
+	*pd_nz=d_nz;
+	*po_nz=o_nz;
+}
+/*}}}*/
+
+/*Update virtual functions definitions:*/
+void  Penpair::InputUpdateFromConstant(IssmDouble constant, int name){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Penpair::InputUpdateFromConstant(int constant, int name){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Penpair::InputUpdateFromConstant(bool constant, int name){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Penpair::InputUpdateFromVector(IssmDouble* vector, int name, int type){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+
+/*Penpair management:*/
+ElementMatrix* Penpair::PenaltyCreateKMatrixMasstransport(IssmDouble kmax){/*{{{*/
+
+	const int numdof=NUMVERTICES*NDOF1;
+	IssmDouble penalty_factor;
+
+	/*Initialize Element vector and return if necessary*/
+	ElementMatrix* Ke=new ElementMatrix(nodes,NUMVERTICES,this->parameters);
+
+	/*recover parameters: */
+	parameters->FindParam(&penalty_factor,MasstransportPenaltyFactorEnum);
+
+	//Create elementary matrix: add penalty to 
+	Ke->values[0*numdof+0]=+kmax*pow(10.,penalty_factor);
+	Ke->values[0*numdof+1]=-kmax*pow(10.,penalty_factor);
+	Ke->values[1*numdof+0]=-kmax*pow(10.,penalty_factor);
+	Ke->values[1*numdof+1]=+kmax*pow(10.,penalty_factor);
+
+	/*Clean up and return*/
+	return Ke;
+}
+/*}}}*/
+ElementMatrix* Penpair::PenaltyCreateKMatrixStressbalanceFS(IssmDouble kmax){/*{{{*/
+
+	int        numdof,numdof2,N;
+	IssmDouble penalty_offset;
+
+	/*Initialize Element vector and return if necessary*/
+	ElementMatrix* Ke=new ElementMatrix(nodes,NUMVERTICES,this->parameters,FSvelocityEnum);
+
+	/*recover parameters: */
+	parameters->FindParam(&penalty_offset,StressbalancePenaltyFactorEnum);
+
+	/*Get number of dof for these two nodes*/
+	numdof =this->nodes[0]->GetNumberOfDofs(FSApproximationEnum,GsetEnum);
+	numdof2=this->nodes[1]->GetNumberOfDofs(FSApproximationEnum,GsetEnum);
+	N=NUMVERTICES*numdof;
+
+	/*Add penalty to Element matrix*/
+	for(int i=0;i<numdof;i++){
+		Ke->values[         i*N+i       ]=+kmax*pow(10.,penalty_offset);
+		Ke->values[         i*N+numdof+i]=-kmax*pow(10.,penalty_offset);
+		Ke->values[(numdof+i)*N+i       ]=-kmax*pow(10.,penalty_offset);
+		Ke->values[(numdof+i)*N+numdof+i]=+kmax*pow(10.,penalty_offset);
+	}
+
+	/*Clean up and return*/
+	return Ke;
+}
+/*}}}*/
+ElementMatrix* Penpair::PenaltyCreateKMatrixStressbalanceHoriz(IssmDouble kmax){/*{{{*/
+
+	int    approximation0=nodes[0]->GetApproximation();
+	int    approximation1=nodes[1]->GetApproximation();
+
+	switch(approximation0){
+		case SSAApproximationEnum:
+			switch(approximation1){
+				case SSAApproximationEnum: return PenaltyCreateKMatrixStressbalanceSSAHO(kmax); 
+				case HOApproximationEnum:   return PenaltyCreateKMatrixStressbalanceSSAHO(kmax); 
+				default: _error_("Approximation "<<EnumToStringx(approximation1)<<" not supported yet");
+			}
+		case HOApproximationEnum:
+			switch(approximation1){
+				case SSAApproximationEnum: return PenaltyCreateKMatrixStressbalanceSSAHO(kmax); 
+				case HOApproximationEnum:   return PenaltyCreateKMatrixStressbalanceSSAHO(kmax); 
+				default: _error_("Approximation "<<EnumToStringx(approximation1)<<" not supported yet");
+			}
+		case FSvelocityEnum:
+			switch(approximation1){
+				case FSvelocityEnum: return PenaltyCreateKMatrixStressbalanceFS(kmax); 
+				case NoneApproximationEnum: return   PenaltyCreateKMatrixStressbalanceFS(kmax); 
+				default: _error_("Approximation "<<EnumToStringx(approximation1)<<" not supported yet");
+			}
+		case NoneApproximationEnum:
+			switch(approximation1){
+				case FSvelocityEnum: return PenaltyCreateKMatrixStressbalanceFS(kmax); 
+				case NoneApproximationEnum: return   PenaltyCreateKMatrixStressbalanceFS(kmax); 
+			}
+		default: _error_("Approximation "<<EnumToStringx(approximation0)<<" not supported yet");
+	}
+}
+/*}}}*/
+ElementMatrix* Penpair::PenaltyCreateKMatrixStressbalanceSSAHO(IssmDouble kmax){/*{{{*/
+
+	int        numdof,numdof2,N;
+	IssmDouble penalty_offset;
+
+	/*Initialize Element vector and return if necessary*/
+	ElementMatrix* Ke=new ElementMatrix(nodes,NUMVERTICES,this->parameters);
+
+	/*recover parameters: */
+	parameters->FindParam(&penalty_offset,StressbalancePenaltyFactorEnum);
+
+	/*Get number of dof for these two nodes*/
+	numdof =this->nodes[0]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+	numdof2=this->nodes[1]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+	_assert_(numdof==numdof2);
+	N=NUMVERTICES*numdof;
+
+	/*Add penalty to Element matrix*/
+	for(int i=0;i<numdof;i++){
+		Ke->values[         i*N+i       ]=+kmax*pow(10.,penalty_offset);
+		Ke->values[         i*N+numdof+i]=-kmax*pow(10.,penalty_offset);
+		Ke->values[(numdof+i)*N+i       ]=-kmax*pow(10.,penalty_offset);
+		Ke->values[(numdof+i)*N+numdof+i]=+kmax*pow(10.,penalty_offset);
+	}
+
+	/*Clean up and return*/
+	return Ke;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Penpair.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Penpair.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Penpair.h	(revision 21239)
@@ -0,0 +1,74 @@
+/*!\file Penpair.h
+ * \brief: header file for penpair object */
+
+#ifndef _PENPAIR_H_
+#define _PENPAIR_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Load.h"
+#include "../Node.h"
+#include "../Elements/Element.h"
+
+class Element;
+/*}}}*/
+
+class Penpair: public Load{
+
+	private: 
+		int          id;
+		int          analysis_type;
+		Hook        *hnodes;          //hook to 2 nodes
+		Node       **nodes;
+		Parameters  *parameters;      //pointer to solution parameters
+
+	public:
+
+		/*Penpair constructors, destructors: {{{*/
+		Penpair();
+		Penpair(int penpair_id,int* penpair_node_ids,int analysis_type);
+		~Penpair();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object* copy();
+		void     DeepEcho();
+		void     Echo();
+		int      Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int      ObjectEnum();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{*/
+		void  InputUpdateFromConstant(IssmDouble constant, int name);
+		void  InputUpdateFromConstant(int constant, int name);
+		void  InputUpdateFromConstant(bool constant, int name);
+		void  InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
+		void  InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrow, int ncols,int name, int type){_error_("Not implemented yet!");}
+		void  InputUpdateFromVector(IssmDouble* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){_error_("Not implemented yet!");}
+		/*}}}*/
+			/*Load virtual functions definitions: {{{*/
+		void  Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void  CreateJacobianMatrix(Matrix<IssmDouble>* Jff);
+		void  CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
+		void  CreatePVector(Vector<IssmDouble>* pf);
+		void  GetNodesLidList(int* lidlist);
+		void  GetNodesSidList(int* sidlist);
+		int   GetNumberOfNodes(void);
+		bool  InAnalysis(int analysis_type);
+		bool  IsPenalty(void);
+		void  PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax);
+		void  PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff,Matrix<IssmDouble>* Kfs,IssmDouble kmax);
+		void  PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
+		void  ResetHooks();
+		void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
+		/*}}}*/
+			/*Penpair management: {{{*/
+		ElementMatrix* PenaltyCreateKMatrixMasstransport(IssmDouble kmax);
+		ElementMatrix* PenaltyCreateKMatrixStressbalanceFS(IssmDouble kmax);
+		ElementMatrix* PenaltyCreateKMatrixStressbalanceHoriz(IssmDouble kmax);
+		ElementMatrix* PenaltyCreateKMatrixStressbalanceSSAHO(IssmDouble kmax);
+		/*}}}*/
+};
+
+#endif  /* _PENPAIR_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Riftfront.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Riftfront.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Riftfront.cpp	(revision 21239)
@@ -0,0 +1,709 @@
+/*!\file Riftfront.cpp
+ * \brief: implementation of the Riftfront object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "shared/shared.h"
+#include "modules/ModelProcessorx/ModelProcessorx.h"
+#include "../classes.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMVERTICES 2
+
+/*Riftfront constructors and destructor*/
+Riftfront::Riftfront(){/*{{{*/
+	this->parameters=NULL;
+	this->hnodes=NULL;
+	this->helements=NULL;
+	this->hmatpar=NULL;
+	this->nodes=NULL;
+	this->elements=NULL;
+	this->matpar=NULL;
+}
+/*}}}*/
+Riftfront::Riftfront(int riftfront_id,int i, IoModel* iomodel,int riftfront_analysis_type){/*{{{*/
+
+	/*data: */
+	const int RIFTINFOSIZE = 12;
+	int    riftfront_node_ids[2];
+	int    riftfront_elem_ids[2];
+	int    riftfront_matpar_id;
+	IssmDouble riftfront_friction;
+	IssmDouble riftfront_fractionincrement;
+	int    penalty_lock;
+
+	/*intermediary: */
+	int el1    ,el2;
+	int node1  ,node2;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&penalty_lock,"md.stressbalance.rift_penalty_lock");
+
+	/*Ok, retrieve all the data needed to add a penalty between the two nodes: */
+	el1=reCast<int,IssmDouble>(*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+2));
+	el2=reCast<int,IssmDouble>(*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+3)) ;
+
+	node1=reCast<int,IssmDouble>(*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+0));
+	node2=reCast<int,IssmDouble>(*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+1));
+
+	/*id: */
+	this->id=riftfront_id;
+	this->analysis_type=riftfront_analysis_type;
+
+	/*hooks: */
+	riftfront_node_ids[0]=iomodel->nodecounter+node1;
+	riftfront_node_ids[1]=iomodel->nodecounter+node2;
+	riftfront_elem_ids[0]=el1;
+	riftfront_elem_ids[1]=el2;
+	riftfront_matpar_id=iomodel->numberofelements+1; //matlab indexing
+
+	/*Hooks: */
+	this->hnodes=new Hook(riftfront_node_ids,2);
+	this->helements=new Hook(riftfront_elem_ids,2);
+	this->hmatpar=new Hook(&riftfront_matpar_id,1);
+
+	/*computational parameters: */
+	this->active=0;
+	this->frozen=0;
+	this->counter=0;
+	this->prestable=0;
+	this->penalty_lock=penalty_lock;
+	this->material_converged=0;
+	this->normal[0]=*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+4);
+	this->normal[1]=*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+5);
+	this->length=*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+6);
+	this->fraction=*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+9);
+	this->state=reCast<int,IssmDouble>(*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+11));
+
+	//intialize properties
+	this->type=SegmentRiftfrontEnum;
+	this->fill = IoRiftfillToEnum(reCast<int,IssmDouble>(*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+7)));
+	this->friction=*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+8);
+	this->fractionincrement=*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+10);
+	this->shelf=reCast<bool,IssmDouble>(iomodel->Data("md.mask.groundedice_levelset")[node1-1]<0.);
+
+	//parameters and hooked fields: we still can't point to them, they may not even exist. Configure will handle this.
+	this->parameters=NULL;
+	this->nodes= NULL;
+	this->elements= NULL;
+	this->matpar= NULL;
+
+}
+/*}}}*/
+Riftfront::~Riftfront(){/*{{{*/
+	this->parameters=NULL;
+	delete hnodes;
+	delete helements;
+	delete hmatpar;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Riftfront::copy() {/*{{{*/
+
+	Riftfront* riftfront=NULL;
+
+	riftfront=new Riftfront();
+
+	/*copy fields: */
+	riftfront->id=this->id;
+	riftfront->analysis_type=this->analysis_type;
+	riftfront->type=this->type;
+	riftfront->fill=this->fill;
+	riftfront->friction=this->friction;
+	riftfront->fractionincrement=this->fractionincrement;
+	riftfront->shelf=this->shelf;
+
+	/*point parameters: */
+	riftfront->parameters=this->parameters;
+
+	/*now deal with hooks and objects: */
+	riftfront->hnodes=(Hook*)this->hnodes->copy();
+	riftfront->helements=(Hook*)this->helements->copy();
+	riftfront->hmatpar=(Hook*)this->hmatpar->copy();
+
+	/*corresponding fields*/
+	riftfront->nodes   =(Node**)riftfront->hnodes->deliverp();
+	riftfront->elements=(Element**)riftfront->helements->deliverp();
+	riftfront->matpar  =(Matpar*)riftfront->hmatpar->delivers();
+
+	/*internal data: */
+	riftfront->penalty_lock=this->penalty_lock;
+	riftfront->active=this->active;
+	riftfront->frozen=this->frozen;
+	riftfront->state=this->state;
+	riftfront->counter=this->counter;
+	riftfront->prestable=this->prestable;
+	riftfront->material_converged=this->material_converged;
+	riftfront->normal[0]=this->normal[0];
+	riftfront->normal[1]=this->normal[1];
+	riftfront->length=this->length;
+	riftfront->fraction=this->fraction;
+
+	return riftfront;
+
+}
+/*}}}*/
+void    Riftfront::DeepEcho(void){/*{{{*/
+
+	_printf_("Riftfront:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	hnodes->DeepEcho();
+	helements->DeepEcho();
+	hmatpar->DeepEcho();
+	_printf_("   parameters\n");
+	if(parameters)parameters->DeepEcho();
+}
+/*}}}*/
+void    Riftfront::Echo(void){/*{{{*/
+
+	_printf_("Riftfront:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	_printf_("   hnodes: " << hnodes << "\n");
+	_printf_("   helements: " << helements << "\n");
+	_printf_("   hmatpar: " << hmatpar << "\n");
+	_printf_("   parameters: " << parameters << "\n");
+	_printf_("   internal parameters: \n");
+	_printf_("   normal: " << normal[0] << "|" << normal[1] << "\n");
+	_printf_("   length: " << length << "\n");
+	_printf_("   penalty_lock: " << penalty_lock << "\n");
+	_printf_("   active: " <<(active ? "true":"false") << "\n");
+	_printf_("   counter: " << counter << "\n");
+	_printf_("   prestable: " << (prestable ? "true":"false") << "\n");
+	_printf_("   material_converged: " << (material_converged ? "true":"false") << "\n");
+	_printf_("   fill: " << fill << "\n");
+	_printf_("   friction: " << friction << "\n");
+	_printf_("   fraction: " << fraction << "\n");
+	_printf_("   fractionincrement: " << fractionincrement << "\n");
+	_printf_("   state: " << state << "\n");
+	_printf_("   frozen: " << (frozen ? "true":"false") << "\n");
+
+}
+/*}}}*/
+int     Riftfront::Id(void){ return id; }/*{{{*/
+/*}}}*/
+void    Riftfront::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	_assert_(this);
+
+	/*ok, marshall operations: */
+	MARSHALLING_ENUM(RiftfrontEnum);
+	MARSHALLING(id);
+	MARSHALLING(analysis_type);
+	MARSHALLING(type);
+	MARSHALLING(fill);
+	MARSHALLING(friction);
+	MARSHALLING(fractionincrement);
+	MARSHALLING(shelf);
+
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		this->hnodes      = new Hook();
+		this->hmatpar     = new Hook();
+		this->helements   = new Hook();
+	}
+
+	this->hnodes->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->hmatpar->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->helements->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	/*corresponding fields*/
+	nodes     =(Node**)this->hnodes->deliverp();
+	matpar    =(Matpar*)this->hmatpar->delivers();
+	elements  =(Element**)this->helements->deliverp();
+
+	MARSHALLING(penalty_lock);
+	MARSHALLING(active);
+	MARSHALLING(frozen);
+	MARSHALLING(state);
+	MARSHALLING(counter);
+	MARSHALLING(prestable);
+	MARSHALLING(material_converged);
+	MARSHALLING(normal[0]);
+	MARSHALLING(normal[1]);
+	MARSHALLING(length);
+	MARSHALLING(fraction);
+
+}
+/*}}}*/
+int     Riftfront::ObjectEnum(void){/*{{{*/
+
+	return RiftfrontEnum;
+
+}
+/*}}}*/
+
+/*Update virtual functions definitions:*/
+void  Riftfront::InputUpdateFromConstant(bool constant,int name){/*{{{*/
+}
+/*}}}*/
+void  Riftfront::InputUpdateFromConstant(IssmDouble constant,int name){/*{{{*/
+
+}
+/*}}}*/
+void  Riftfront::InputUpdateFromVector(IssmDouble* vector, int name, int type){/*{{{*/
+
+	/*Nothing to update*/
+
+}
+/*}}}*/
+
+/*Load virtual functions definitions:*/
+void  Riftfront::Configure(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/	
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	hnodes->configure(nodesin);
+	helements->configure(elementsin);
+	hmatpar->configure(materialsin);
+
+	/*Initialize hooked fields*/
+	this->nodes   =(Node**)hnodes->deliverp();
+	this->elements=(Element**)helements->deliverp();
+	this->matpar  =(Matpar*)hmatpar->delivers();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+
+}
+/*}}}*/
+void  Riftfront::CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs){/*{{{*/
+	/*do nothing: */
+	return;
+}
+/*}}}*/
+void  Riftfront::CreatePVector(Vector<IssmDouble>* pf){/*{{{*/
+	/*do nothing: */
+	return;
+}
+/*}}}*/
+void  Riftfront::GetNodesLidList(int* lidlist){/*{{{*/
+
+	_assert_(lidlist);
+	_assert_(nodes);
+
+	for(int i=0;i<NUMVERTICES;i++) lidlist[i]=nodes[i]->Lid();
+}
+/*}}}*/
+void  Riftfront::GetNodesSidList(int* sidlist){/*{{{*/
+
+	_assert_(sidlist);
+	_assert_(nodes);
+
+	for(int i=0;i<NUMVERTICES;i++) sidlist[i]=nodes[i]->Sid();
+}
+/*}}}*/
+int   Riftfront::GetNumberOfNodes(void){/*{{{*/
+
+	return NUMVERTICES;
+}
+/*}}}*/
+bool  Riftfront::InAnalysis(int in_analysis_type){/*{{{*/
+	if (in_analysis_type==this->analysis_type) return true;
+	else return false;
+}
+/*}}}*/
+bool  Riftfront::IsPenalty(void){/*{{{*/
+	return true;
+}
+/*}}}*/
+void  Riftfront::PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs,IssmDouble kmax){/*{{{*/
+
+	/*Retrieve parameters: */
+	ElementMatrix* Ke=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		case StressbalanceAnalysisEnum:
+			Ke=PenaltyCreateKMatrixStressbalanceHoriz(kmax);
+			break;
+		case AdjointHorizAnalysisEnum:
+			Ke=PenaltyCreateKMatrixStressbalanceHoriz(kmax);
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global Vector*/
+	if(Ke){
+		Ke->AddToGlobal(Kff,Kfs);
+		delete Ke;
+	}
+}
+/*}}}*/
+void  Riftfront::PenaltyCreatePVector(Vector<IssmDouble>* pf,IssmDouble kmax){/*{{{*/
+
+	/*Retrieve parameters: */
+	ElementVector* pe=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		case StressbalanceAnalysisEnum:
+			pe=PenaltyCreatePVectorStressbalanceHoriz(kmax);
+			break;
+		case AdjointHorizAnalysisEnum:
+			/*No penalty applied on load vector*/
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global Vector*/
+	if(pe){
+		pe->AddToGlobal(pf);
+		delete pe;
+	}
+}
+/*}}}*/
+void  Riftfront::ResetHooks(){/*{{{*/
+
+	this->nodes=NULL;
+	this->elements=NULL;
+	this->matpar=NULL;
+	this->parameters=NULL;
+
+	/*Get Element type*/
+	this->hnodes->reset();
+	this->helements->reset();
+	this->hmatpar->reset();
+
+}
+/*}}}*/
+void  Riftfront::SetCurrentConfiguration(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+}
+/*}}}*/
+void  Riftfront::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
+
+	/*Output */
+	int d_nz = 0;
+	int o_nz = 0;
+
+	/*Loop over all nodes*/
+	for(int i=0;i<NUMVERTICES;i++){
+
+		if(!flags[this->nodes[i]->Lid()]){
+
+			/*flag current node so that no other element processes it*/
+			flags[this->nodes[i]->Lid()]=true;
+
+			int counter=0;
+			while(flagsindices[counter]>=0) counter++;
+			flagsindices[counter]=this->nodes[i]->Lid();
+
+			/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
+			switch(set2_enum){
+				case FsetEnum:
+					if(nodes[i]->indexing.fsize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case GsetEnum:
+					if(nodes[i]->indexing.gsize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case SsetEnum:
+					if(nodes[i]->indexing.ssize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				default: _error_("not supported");
+			}
+		}
+	}
+
+	/*Assign output pointers: */
+	*pd_nz=d_nz;
+	*po_nz=o_nz;
+}
+/*}}}*/
+
+/*Riftfront numerics*/
+ElementMatrix* Riftfront::PenaltyCreateKMatrixStressbalanceHoriz(IssmDouble kmax){/*{{{*/
+
+	const int   numdof = NDOF2*NUMVERTICES;
+	IssmDouble  thickness;
+	IssmDouble  h[2];
+	IssmDouble  penalty_offset;
+
+	/*Objects: */
+	Tria       *tria1               = NULL;
+	Tria       *tria2               = NULL;
+
+	/*enum of element? */
+	if(elements[0]->ObjectEnum()!=TriaEnum)_error_("only Tria element allowed for Riftfront load!");
+	tria1=(Tria*)elements[0];
+	tria2=(Tria*)elements[1];
+
+	/*Initialize Element Matrix*/
+	if(!this->active) return NULL;
+	ElementMatrix* Ke=new ElementMatrix(nodes,NUMVERTICES,this->parameters);
+
+	/*Get some parameters: */
+	this->parameters->FindParam(&penalty_offset,StressbalancePenaltyFactorEnum);
+	tria1->GetInputValue(&h[0],nodes[0],ThicknessEnum);
+	tria2->GetInputValue(&h[1],nodes[1],ThicknessEnum);
+	if (h[0]!=h[1])_error_("different thicknesses not supported for rift fronts");
+	thickness=h[0];
+
+	/*There is contact, we need to constrain the normal velocities (zero penetration), and the 
+	 *contact slip friction. */
+
+	/*From Peter Wriggers book (Computational Contact Mechanics, p191): */
+	Ke->values[0*numdof+0]+= +pow(normal[0],2)*kmax*pow(10,penalty_offset);
+	Ke->values[0*numdof+1]+= +normal[0]*normal[1]*kmax*pow(10,penalty_offset);
+	Ke->values[0*numdof+2]+= -pow(normal[0],2)*kmax*pow(10,penalty_offset);
+	Ke->values[0*numdof+3]+= -normal[0]*normal[1]*kmax*pow(10,penalty_offset);
+
+	Ke->values[1*numdof+0]+= +normal[0]*normal[1]*kmax*pow(10,penalty_offset);
+	Ke->values[1*numdof+1]+= +pow(normal[1],2)*kmax*pow(10,penalty_offset);
+	Ke->values[1*numdof+2]+= -normal[0]*normal[1]*kmax*pow(10,penalty_offset);
+	Ke->values[1*numdof+3]+= -pow(normal[1],2)*kmax*pow(10,penalty_offset);
+
+	Ke->values[2*numdof+0]+= -pow(normal[0],2)*kmax*pow(10,penalty_offset);
+	Ke->values[2*numdof+1]+= -normal[0]*normal[1]*kmax*pow(10,penalty_offset);
+	Ke->values[2*numdof+2]+= +pow(normal[0],2)*kmax*pow(10,penalty_offset);
+	Ke->values[2*numdof+3]+= +normal[0]*normal[1]*kmax*pow(10,penalty_offset);
+
+	Ke->values[3*numdof+0]+= -normal[0]*normal[1]*kmax*pow(10,penalty_offset);
+	Ke->values[3*numdof+1]+= -pow(normal[1],2)*kmax*pow(10,penalty_offset);
+	Ke->values[3*numdof+2]+= +normal[0]*normal[1]*kmax*pow(10,penalty_offset);
+	Ke->values[3*numdof+3]+= +pow(normal[1],2)*kmax*pow(10,penalty_offset);
+
+	/*Now take care of the friction: of type sigma=frictiontangent_velocity2-tangent_velocity1)*/
+
+	Ke->values[0*numdof+0]+= +pow(normal[1],2)*thickness*length*friction;
+	Ke->values[0*numdof+1]+= -normal[0]*normal[1]*thickness*length*friction;
+	Ke->values[0*numdof+2]+= -pow(normal[1],2)*thickness*length*friction;
+	Ke->values[0*numdof+3]+= +normal[0]*normal[1]*thickness*length*friction;
+
+	Ke->values[1*numdof+0]+= -normal[0]*normal[1]*thickness*length*friction;
+	Ke->values[1*numdof+1]+= +pow(normal[0],2)*thickness*length*friction;
+	Ke->values[1*numdof+2]+= +normal[0]*normal[1]*thickness*length*friction;
+	Ke->values[1*numdof+3]+= -pow(normal[0],2)*thickness*length*friction;
+
+	Ke->values[2*numdof+0]+= -pow(normal[1],2)*thickness*length*friction;
+	Ke->values[2*numdof+1]+= +normal[0]*normal[1]*thickness*length*friction;
+	Ke->values[2*numdof+2]+= +pow(normal[1],2)*thickness*length*friction;
+	Ke->values[2*numdof+3]+= -normal[0]*normal[1]*thickness*length*friction;
+
+	Ke->values[3*numdof+0]+= +normal[0]*normal[1]*thickness*length*friction;
+	Ke->values[3*numdof+1]+= -pow(normal[0],2)*thickness*length*friction;
+	Ke->values[3*numdof+2]+= -normal[0]*normal[1]*thickness*length*friction;
+	Ke->values[3*numdof+3]+= +pow(normal[0],2)*thickness*length*friction;
+
+	/*Clean up and return*/
+	return Ke;
+}
+/*}}}*/
+ElementVector* Riftfront::PenaltyCreatePVectorStressbalanceHoriz(IssmDouble kmax){/*{{{*/
+
+	int        j;
+	IssmDouble rho_ice;
+	IssmDouble rho_water;
+	IssmDouble gravity;
+	IssmDouble thickness;
+	IssmDouble h[2];
+	IssmDouble bed;
+	IssmDouble b[2];
+	IssmDouble pressure;
+	IssmDouble pressure_litho;
+	IssmDouble pressure_air;
+	IssmDouble pressure_melange;
+	IssmDouble pressure_water;
+
+	/*Objects: */
+	Tria *tria1 = NULL;
+	Tria *tria2 = NULL;
+
+	/*enum of element? */
+	if(elements[0]->ObjectEnum()!=TriaEnum)_error_("only Tria element allowed for Riftfront load!");
+	tria1=(Tria*)elements[0];
+	tria2=(Tria*)elements[1];
+
+	/*Initialize Element Matrix*/
+	if(this->active) return NULL; /*The penalty is active. No loads implied here.*/
+	ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters);
+
+	/*Get some inputs: */
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	rho_water=matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	gravity=matpar->GetMaterialParameter(ConstantsGEnum);
+	tria1->GetInputValue(&h[0],nodes[0],ThicknessEnum);
+	tria2->GetInputValue(&h[1],nodes[1],ThicknessEnum);
+	if (h[0]!=h[1])_error_("different thicknesses not supported for rift fronts");
+	thickness=h[0];
+	tria1->GetInputValue(&b[0],nodes[0],BaseEnum);
+	tria2->GetInputValue(&b[1],nodes[1],BaseEnum);
+	if (b[0]!=b[1])_error_("different beds not supported for rift fronts");
+	bed=b[0];
+
+	/*Ok, this rift is opening. We should put loads on both sides of the rift flanks. Because we are dealing with contact mechanics, 
+	 * and we want to avoid zigzagging of the loads, we want lump the loads onto nodes, not onto surfaces between nodes.:*/
+
+	/*Ok, to compute the pressure, we are going to need material properties, thickness and bed for the two nodes. We assume those properties to 
+	 * be the same across the rift.: */
+
+	/*Ok, now compute the pressure (in norm) that is being applied to the flanks, depending on the type of fill: */
+	if(fill==WaterEnum){
+		if(shelf){
+			/*We are on an ice shelf, hydrostatic equilibrium is used to determine the pressure for water fill: */
+			pressure=rho_ice*gravity*pow(thickness,2)/2.- rho_water*gravity*pow(bed,2)/2.; 
+		}
+		else{
+			//We are on an icesheet, we assume the water column fills the entire front: */
+			pressure=rho_ice*gravity*pow(thickness,2)/2.- rho_water*gravity*pow(thickness,2)/2.; 
+		}
+	}
+	else if(fill==AirEnum){
+		pressure=rho_ice*gravity*pow(thickness,2)/2.;   //icefront on an ice sheet, pressure imbalance ice vs air.
+	}
+	else if(fill==IceEnum){ //icefront finding itself against another icefront (pressure imbalance is fully compensated, ice vs ice)
+		pressure=0;
+	}
+	else if(fill==MelangeEnum){ //icefront finding itself against another icefront (pressure imbalance is fully compensated, ice vs ice)
+
+		if(!shelf) _error_("fill type " << fill << " not supported on ice sheets yet.");
+
+		pressure_litho=rho_ice*gravity*pow(thickness,2)/2.;
+		pressure_air=0;
+		pressure_melange=rho_ice*gravity*pow(fraction*thickness,2)/2.;
+		pressure_water=1.0/2.0*rho_water*gravity*  ( pow(bed,2.0)-pow(rho_ice/rho_water*fraction*thickness,2.0) );
+
+		pressure=pressure_litho-pressure_air-pressure_melange-pressure_water;
+	}
+	else{
+		_error_("fill type " << fill << " not supported yet.");
+	}
+
+	/*Ok, add contribution to first node, along the normal i==0: */
+	for (j=0;j<2;j++){
+		pe->values[j]+=pressure*normal[j]*length;
+	}
+
+	/*Add contribution to second node, along the opposite normal: i==1 */
+	for (j=0;j<2;j++){
+		pe->values[2+j]+= -pressure*normal[j]*length;
+	}	
+
+	/*Clean up and return*/
+	return pe;
+}
+/*}}}*/
+#define _ZIGZAGCOUNTER_
+int    Riftfront::Constrain(int* punstable){/*{{{*/
+
+	IssmDouble  penetration;
+	bool        activate;
+	int         unstable;
+	IssmDouble  vx1;
+	IssmDouble  vy1;
+	IssmDouble  vx2;
+	IssmDouble  vy2;
+
+	/*Objects: */
+	Tria  *tria1 = NULL;
+	Tria  *tria2 = NULL;
+
+	/*enum of element? */
+	if(elements[0]->ObjectEnum()!=TriaEnum)_error_("only Tria element allowed for Riftfront load!");
+
+	/*recover elements on both side of rift: */
+	tria1=(Tria*)elements[0];
+	tria2=(Tria*)elements[1];
+
+	/*Is this constraint frozen? In which case we don't touch: */
+	if (this->frozen){
+		*punstable=0;
+		return 1;
+	}
+
+	/*Is this rift segment state specified by user input? :*/
+	if (this->state==OpenEnum || this->state==ClosedEnum){
+
+		if(this->state==OpenEnum)this->active=0;
+		if(this->state==ClosedEnum)this->active=1;
+
+		/*this segment is like frozen, no instability here: */
+		*punstable=0;
+		return 1;
+	}
+
+	/*First recover velocity: */
+	tria1->GetInputValue(&vx1,nodes[0],VxEnum);
+	tria2->GetInputValue(&vx2,nodes[1],VxEnum);
+	tria1->GetInputValue(&vy1,nodes[0],VyEnum);
+	tria2->GetInputValue(&vy2,nodes[1],VyEnum);
+
+	/*Node 1 faces node 2, compute penetration of 2 into 1 (V2-V1).N (with N normal vector, and V velocity vector: */
+	penetration=(vx2-vx1)*normal[0]+(vy2-vy1)*normal[1];
+
+	/*activation: */
+	if(penetration<0)activate=true;
+	else  activate=false;
+
+	/*Here, we try to avoid zigzaging. When a penalty activates and deactivates for more than penalty_lock times, 
+	 * we increase the fraction of melange:*/
+	if(this->counter>this->penalty_lock){
+		/*reset counter: */
+		this->counter=0;
+		/*increase melange fraction: */
+		this->fraction+=fractionincrement;
+		if (this->fraction>1)this->fraction=1.;
+		//_printf_("riftfront " << this->Id() << " fraction: " << this->fraction << "\n");
+	}
+
+	//Figure out stability of this penalty
+	if(this->active==activate){
+		unstable=0;
+	}
+	else{
+		unstable=1;
+		this->counter++;
+	}
+
+	//Set penalty flag
+	this->active=activate;
+
+	//if ((penetration>0) && (this->active==1))_printf_("Riftfront " << Id() << " wants to be released\n");
+
+	/*assign output pointer: */
+	*punstable=unstable;
+	return 1;
+}
+/*}}}*/
+void   Riftfront::FreezeConstraints(void){/*{{{*/
+
+	/*Just set frozen flag to 1: */
+	this->frozen=1;
+
+}
+/*}}}*/
+bool   Riftfront::IsFrozen(void){/*{{{*/
+
+	/*Just set frozen flag to 1: */
+	if(this->frozen)return 1;
+	else return 0;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Riftfront.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Riftfront.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Loads/Riftfront.h	(revision 21239)
@@ -0,0 +1,100 @@
+/*!\file Riftfront.h
+ * \brief: header file for riftfront object
+ */
+
+#ifndef _RIFTFRONT_H_
+#define _RIFTFRONT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Load.h"
+class Hook;
+class Parameters;
+class IoModel;
+/*}}}*/
+
+class Riftfront: public Load {
+
+	public:
+		int		id;
+		int     analysis_type;
+
+		/*properties*/
+		int        type;
+		int        fill;
+		IssmDouble friction;
+		IssmDouble fractionincrement;
+		bool       shelf;
+
+		/*hooks: */
+		Hook* hnodes;
+		Hook* helements;
+		Hook* hmatpar;
+
+		/*Corresponding fields*/
+		Matpar   *matpar;
+		Node    **nodes;
+		Element **elements;
+
+		/*computational: */
+		int         penalty_lock;
+		bool        active;
+		bool        frozen;
+		int         counter;
+		bool        prestable;
+		bool        material_converged;
+		IssmDouble  normal[2];
+		IssmDouble  length;
+		IssmDouble  fraction;
+		int         state;
+
+		Parameters *parameters;           //pointer to solution parameters
+
+		/*Riftfrontconstructors,destructors: {{{*/
+		Riftfront();
+		Riftfront(int riftfront_id,int i, IoModel* iomodel,int analysis_type);
+		~Riftfront();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object*  copy();
+		void     DeepEcho();
+		void     Echo();
+		int      Id(); 
+		void		Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int      ObjectEnum();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{*/
+		void    InputUpdateFromConstant(IssmDouble constant, int name);
+		void    InputUpdateFromConstant(int constant, int name){_error_("Not implemented yet!");}
+		void    InputUpdateFromConstant(bool constant, int name);
+		void    InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
+		void    InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows,int ncols, int name, int type){_error_("Not implemented yet!");}
+		void    InputUpdateFromVector(IssmDouble* vector, int name, int type);
+		void    InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){_error_("Not implemented yet!");}
+		/*}}}*/
+		/*Load virtual functions definitions: {{{*/
+		void  Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void  CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
+		void  CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
+		void  CreatePVector(Vector<IssmDouble>* pf);
+		void  GetNodesLidList(int* lidlist);
+		void  GetNodesSidList(int* sidlist);
+		int   GetNumberOfNodes(void);
+		bool  InAnalysis(int analysis_type);
+		bool  IsPenalty(void);
+		void  PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){_error_("Not implemented yet");};
+		void  PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
+		void  PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
+		void  ResetHooks();
+		void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
+		/*}}}*/
+		/*Riftfront specific routines: {{{*/
+		int            Constrain(int* punstable);
+		void           FreezeConstraints(void);
+		bool           IsFrozen(void);
+		ElementMatrix* PenaltyCreateKMatrixStressbalanceHoriz(IssmDouble kmax);
+		ElementVector* PenaltyCreatePVectorStressbalanceHoriz(IssmDouble kmax);
+		/*}}}*/
+};
+#endif  /* _RIFTFRONT_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Masscon.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Masscon.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Masscon.h	(revision 21239)
@@ -0,0 +1,117 @@
+/*!\file Masscon.h
+ * \brief: header file for Masscon object
+ */
+
+#ifndef _MASSCON_H_
+#define _MASSCON_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Definition.h"
+#include "../datastructures/datastructures.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "../classes/Params/Parameters.h"
+/*}}}*/
+
+class Masscon: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		char*       name;
+		IssmDouble* levelset;
+		int         M;
+		
+		/*Masscon constructors, destructors :*/
+		Masscon(){/*{{{*/
+
+			this->definitionenum = -1;
+			this->name = NULL;
+			this->levelset=NULL;
+			this->M=0;
+
+		}
+		/*}}}*/
+		Masscon(char* in_name, int in_definitionenum, IssmDouble* levelsetin, int Min){ /*{{{*/
+
+			this->definitionenum=in_definitionenum;
+			this->name   = xNew<char>(strlen(in_name)+1);
+			xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+			this->levelset   = xNew<IssmDouble>(Min);
+			xMemCpy<IssmDouble>(this->levelset, levelsetin, Min);
+
+			this->M=Min;
+
+		}
+		/*}}}*/
+		~Masscon(){/*{{{*/
+			if(this->name)xDelete(this->name); 
+			if(this->levelset)xDelete(this->levelset);
+		}
+		/*}}}*/
+		/*Object virtual function resolutoin: */
+		Object* copy() {/*{{{*/
+			Masscon* mf = new Masscon(this->name,this->definitionenum,this->levelset,this->M);
+			return (Object*) mf;
+		}
+		/*}}}*/
+		void DeepEcho(void){/*{{{*/
+			this->Echo();
+		}
+		/*}}}*/
+		void Echo(void){/*{{{*/
+			_printf_(" Masscon: " << this->name << " " << this->definitionenum << "\n");
+			_printf_("    levelset: " << this->levelset << "\n");
+			_printf_("    M: " << this->M << "\n");
+		}
+		/*}}}*/
+		int Id(void){/*{{{*/
+			return -1;
+		}
+		/*}}}*/
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
+		int ObjectEnum(void){/*{{{*/
+			return MassconEnum;
+		}
+		/*}}}*/
+		/*Definition virtual function resolutoin: */
+		int DefinitionEnum(){/*{{{*/
+
+			return this->definitionenum;
+		}
+		/*}}}*/
+		char* Name(){/*{{{*/
+
+			char* name2=xNew<char>(strlen(this->name)+1);
+			xMemCpy(name2,this->name,strlen(this->name)+1);
+
+			return name2;
+		}
+		/*}}}*/
+		 IssmDouble Response(FemModel* femmodel){/*{{{*/
+
+			 int i;
+			 IssmDouble mass_t=0.;
+			 IssmDouble all_mass_t=0.;
+
+
+			 for(i=0;i<femmodel->elements->Size();i++){
+				 Element* element=(Element*)femmodel->elements->GetObjectByOffset(i);
+				 mass_t+=element->Masscon(this->levelset);
+			 }
+
+			 ISSM_MPI_Allreduce ( (void*)&mass_t,(void*)&all_mass_t,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+			 mass_t=all_mass_t;
+			 
+			 return mass_t;
+		 }
+			/*}}}*/
+};
+
+#endif  /* _MASSCON_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Massconaxpby.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Massconaxpby.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Massconaxpby.h	(revision 21239)
@@ -0,0 +1,121 @@
+/*!\file Massconaxpby.h
+ * \brief: header file for Massconaxpby object
+ */
+
+#ifndef _MASSCON_AXPBY_H_
+#define _MASSCON_AXPBY_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Definition.h"
+#include "../datastructures/datastructures.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "../classes/Params/Parameters.h"
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,const char* output_string);
+/*}}}*/
+class Massconaxpby: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		char*       name;
+		char*       namex;
+		char*       namey;
+		IssmDouble  alpha;
+		IssmDouble  beta;
+		
+		/*Massconaxpby constructors, destructors :*/
+		Massconaxpby(){/*{{{*/
+
+			this->definitionenum = -1;
+			this->name = NULL;
+			this->namex = NULL;
+			this->namey = NULL;
+			this->alpha=UNDEF;
+			this->beta=UNDEF;
+
+		}
+		/*}}}*/
+		Massconaxpby(char* in_name,int in_definitionenum, char* in_namex, char* in_namey, IssmDouble in_alpha,IssmDouble in_beta){ /*{{{*/
+
+			this->definitionenum = in_definitionenum;
+			this->name   = xNew<char>(strlen(in_name)+1);
+			xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+			this->namex   = xNew<char>(strlen(in_namex)+1);
+			xMemCpy<char>(this->namex,in_namex,strlen(in_namex)+1);
+			
+			this->namey   = xNew<char>(strlen(in_namey)+1);
+			xMemCpy<char>(this->namey,in_namey,strlen(in_namey)+1);
+
+			this->alpha=in_alpha;
+			this->beta=in_beta;
+
+		}
+		/*}}}*/
+		~Massconaxpby(){/*{{{*/
+			if(this->name)xDelete(this->name); 
+			if(this->namex)xDelete(this->namex); 
+			if(this->namey)xDelete(this->namey); 
+		}
+		/*}}}*/
+		/*Object virtual function resolutoin: */
+		Object* copy() {/*{{{*/
+			Massconaxpby* mf = new Massconaxpby(this->name,this->definitionenum,this->namex,this->namey, this->alpha, this->beta);
+			return (Object*) mf;
+		}
+		/*}}}*/
+		void DeepEcho(void){/*{{{*/
+			this->Echo();
+		}
+		/*}}}*/
+		void Echo(void){/*{{{*/
+			_printf_(" Massconaxpby: " << this->name << " " << this->definitionenum << "\n");
+			_printf_("    namex: " << this->namex << "\n");
+			_printf_("    namey: " << this->namey << "\n");
+			_printf_("    alpha: " << this->alpha << "\n");
+			_printf_("    beta: " << this->beta << "\n");
+		}
+		/*}}}*/
+		int Id(void){/*{{{*/
+			return -1;
+		}
+		/*}}}*/
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
+		int ObjectEnum(void){/*{{{*/
+			return MassconaxpbyEnum;
+		}
+		/*}}}*/
+		/*Definition virtual function resolutoin: */
+		int DefinitionEnum(){/*{{{*/
+
+			return this->definitionenum;
+		}
+		/*}}}*/
+		char* Name(){/*{{{*/
+
+			char* name2=xNew<char>(strlen(this->name)+1);
+			xMemCpy(name2,this->name,strlen(this->name)+1);
+
+			return name2;
+		}
+		/*}}}*/
+		 IssmDouble Response(FemModel* femmodel){/*{{{*/
+
+			 IssmDouble xresponse,yresponse;
+
+			 /*Get response from both masscons: */
+			 xresponse=OutputDefinitionsResponsex(femmodel,this->namex);
+			 yresponse=OutputDefinitionsResponsex(femmodel,this->namey);
+
+			 return this->alpha*xresponse+this->beta*yresponse;
+		 }
+			/*}}}*/
+};
+
+#endif  /* _MASSCON_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Massfluxatgate.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Massfluxatgate.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Massfluxatgate.h	(revision 21239)
@@ -0,0 +1,168 @@
+/*!\file Massfluxatgate.h
+ * \brief: header file for Massfluxatgate object
+ */
+
+#ifndef _MASSFLUXATGATE_H_
+#define _MASSFLUXATGATE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Definition.h"
+#include "../datastructures/datastructures.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+/*}}}*/
+
+template <class doubletype> 
+class Massfluxatgate: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		char*       name;
+		int         numsegments;
+		doubletype *x1;
+		doubletype *y1;
+		doubletype *x2;
+		doubletype *y2;
+		int*        elements;
+
+		/*Massfluxatgate constructors, destructors :*/
+		Massfluxatgate(){/*{{{*/
+			this->definitionenum        = -1;
+			this->name        = 0;
+			this->numsegments = 0;
+			this->segments    = 0;
+		}
+		/*}}}*/
+		Massfluxatgate(char* in_name, int in_definitionenum, int in_numsegments, doubletype* in_segments) {/*{{{*/
+			
+			int i;
+
+			this->definitionenum=in_definitionenum;
+
+			this->name   = xNew<char>(strlen(in_name)+1);
+			xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+			this->numsegments=in_numsegments;
+
+			if(this->numsegments){
+				this->x1=xNew<doubletype>(this->numsegments);
+				this->x2=xNew<doubletype>(this->numsegments);
+				this->y1=xNew<doubletype>(this->numsegments);
+				this->y2=xNew<doubletype>(this->numsegments);
+				this->elements=xNew<int>(this->numsegments);
+
+				for(i=0;i<this->numsegments;i++){
+					this->x1[i]=in_segments[5*i+0];
+					this->y1[i]=in_segments[5*i+1];
+					this->x2[i]=in_segments[5*i+2];
+					this->y2[i]=in_segments[5*i+3];
+					this->elements[i]=reCast<int,doubletype>(in_segments[5*i+4]);
+				}
+			}
+		}
+		/*}}}*/
+		Massfluxatgate(char* in_name, int in_definitionenum, int in_numsegments, doubletype* in_x1, doubletype* in_y1, doubletype* in_x2, doubletype* in_y2,int* in_elements){/*{{{*/
+
+			this->definitionenum=in_definitionenum;
+			this->name   = xNew<char>(strlen(in_name)+1);
+			xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+			this->numsegments=in_numsegments;
+
+			if(this->numsegments){
+				this->x1=xNew<doubletype>(this->numsegments); xMemCpy<doubletype>(this->x1,in_x1,this->numsegments);
+				this->y1=xNew<doubletype>(this->numsegments); xMemCpy<doubletype>(this->y1,in_y1,this->numsegments);
+				this->x2=xNew<doubletype>(this->numsegments); xMemCpy<doubletype>(this->x2,in_x2,this->numsegments);
+				this->y2=xNew<doubletype>(this->numsegments); xMemCpy<doubletype>(this->y2,in_y2,this->numsegments);
+				this->elements=xNew<int>(this->numsegments); xMemCpy<int>(this->elements,in_elements,this->numsegments);
+				
+			}
+		}
+		/*}}}*/
+		~Massfluxatgate(){/*{{{*/
+			xDelete<doubletype>(this->x1);
+			xDelete<doubletype>(this->y1);
+			xDelete<doubletype>(this->x2);
+			xDelete<doubletype>(this->y2);
+			xDelete<int>(this->elements);
+			xDelete<char>(this->name);
+		}
+		/*}}}*/
+
+		/*Object virtual function resolutoin: */
+		Object* copy() {/*{{{*/
+			return new Massfluxatgate(this->name,this->definitionenum,this->numsegments,this->x1,this->y1,this->x2,this->y2,this->elements); 
+		}
+		/*}}}*/
+		void DeepEcho(void){/*{{{*/
+			this->Echo();
+		}
+		/*}}}*/
+		void Echo(void){/*{{{*/
+			_printf_(" Massfluxatgate: " << name << " " << this->definitionenum << "\n");
+			_printf_("    numsegments: " << numsegments << "\n");
+			if(numsegments){
+				_printf_("   element: x1, y1, x2, y2:\n");
+				for(int i=0;i<numsegments;i++){
+					_printf_(elements[i] << " " << x1[i] << " " << y1[i] << " " << x2[i] << " " << y2[i] << "\n");
+				}
+			}
+		}
+		/*}}}*/
+		int Id(void){/*{{{*/
+			return -1;
+		}
+		/*}}}*/
+		int ObjectEnum(void){/*{{{*/
+			return MassfluxatgateEnum;
+		}
+		/*}}}*/
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
+		/*Definition virtual function resolutoin: */
+		int DefinitionEnum(){/*{{{*/
+
+			return this->definitionenum;
+		}
+		/*}}}*/
+		char* Name(){/*{{{*/
+
+			char* name2=xNew<char>(strlen(this->name)+1);
+			xMemCpy(name2,this->name,strlen(this->name)+1);
+
+			return name2;
+		}
+		/*}}}*/
+		 IssmDouble Response(FemModel* femmodel){/*{{{*/
+
+			int          i,j;
+			Element     *element       = NULL;
+			IssmDouble mass_flux     = 0;
+			IssmDouble all_mass_flux = 0;
+
+			/*Go through segments, and then elements, and figure out which elements belong to a segment. 
+			 * When we find one, use the element to compute the mass flux on the segment: */
+			for(i=0;i<numsegments;i++){
+				for(j=0;j<femmodel->elements->Size();j++){
+					element=(Element*)femmodel->elements->GetObjectByOffset(j);
+					if (element->Id()==this->elements[i]){
+						/*We found the element which owns this segment, use it to compute the mass flux: */
+						mass_flux+=element->MassFlux(x1[i],y1[i],x2[i],y2[i],elements[i]);
+						break;
+					}
+				}
+			}
+
+			ISSM_MPI_Allreduce ( (void*)&mass_flux,(void*)&all_mass_flux,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+			mass_flux=all_mass_flux;
+			return mass_flux;
+		}
+			/*}}}*/
+};
+
+#endif  /* _MASSFLUXATGATE_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Material.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Material.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Material.h	(revision 21239)
@@ -0,0 +1,56 @@
+/*!\file:  Material.h
+ * \brief abstract class for Material object
+ */ 
+
+#ifndef _MATERIAL_H_
+#define _MATERIAL_H_
+
+/*Headers:*/
+/*{{{*/
+class Inputs;
+template <class doubletype> class Vector;
+#include "../../datastructures/datastructures.h"
+#include "../Update.h"
+class Element;
+class Elements;
+class Gauss;
+class Input;
+/*}}}*/
+
+class Material: public Object,public Update{
+
+	public: 
+		virtual ~Material(){};
+		/*WARNING: input should not be public but it is an easy way to update B from T (using UpdateFromSolution) from Pentas*/
+
+		/*Numerics*/
+		virtual void       Configure(Elements* elements)=0;
+		virtual Material*  copy2(Element* element)=0;
+		virtual IssmDouble GetA()=0;
+		virtual IssmDouble GetAbar()=0;
+		virtual IssmDouble GetB()=0;
+		virtual IssmDouble GetBbar()=0;
+		virtual IssmDouble GetD()=0;
+		virtual IssmDouble GetDbar()=0;
+		virtual IssmDouble GetN()=0;
+		virtual void       GetViscosity(IssmDouble* pviscosity,IssmDouble epseff)=0;
+		virtual void       GetViscosityBar(IssmDouble* pviscosity,IssmDouble epseff)=0;
+		virtual void       GetViscosityComplement(IssmDouble* pviscosity_complement, IssmDouble* pepsilon)=0;
+		virtual void       GetViscosityDComplement(IssmDouble* pviscosity_complement, IssmDouble* pepsilon)=0;
+		virtual void       GetViscosityDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* pepsilon)=0;
+		virtual void       GetViscosity_B(IssmDouble* pviscosity,IssmDouble epseff)=0;
+		virtual void       GetViscosity_D(IssmDouble* pviscosity,IssmDouble epseff)=0;
+		virtual void       GetViscosity2dDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* pepsilon)=0;
+		virtual bool       IsDamage()=0;
+		virtual void       ResetHooks()=0;
+
+		virtual void       ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input)=0;
+		virtual void       ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon)=0;
+		virtual void       ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input)=0;
+		virtual void       ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon)=0;
+		virtual void       ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf)=0;
+		virtual void       ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input)=0;
+		virtual void       ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon)=0;
+
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Materials.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Materials.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Materials.cpp	(revision 21239)
@@ -0,0 +1,59 @@
+/*
+ * \file Materials.cpp
+ * \brief: Implementation of Materials class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Materials.h"
+#include "./Material.h"
+#include "../../shared/shared.h"
+
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+Materials::Materials(){/*{{{*/
+	enum_type=MaterialsEnum;
+	return;
+}
+/*}}}*/
+Materials::~Materials(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object management*/
+void Materials::Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Material* material=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		material=xDynamicCast<Material*>(*object);
+		material->Configure(elements);
+
+	}
+
+}
+/*}}}*/
+void Materials::ResetHooks(){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Material* material=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		material=xDynamicCast<Material*>((*object));
+		material->ResetHooks();
+
+	}
+
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Materials.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Materials.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Materials.h	(revision 21239)
@@ -0,0 +1,30 @@
+#ifndef _CONTAINER_MATERIALS_H_
+#define  _CONTAINER_MATERIALS_H_
+
+/*forward declarations */
+#include "../../datastructures/datastructures.h"
+class Parameters;
+class Elements;
+class Vertices;
+class Loads;
+class Nodes;
+
+/*! \brief Declaration of Materials class.
+ *
+ * Declaration of Materials class.  Materials are vector lists (Containers) of Material objects.
+ */ 
+class Materials: public DataSet{
+
+	public:
+
+		/*constructors, destructors*/
+		Materials();
+		~Materials();
+
+		/*numerics*/
+		void  Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
+		void  ResetHooks();
+
+};
+
+#endif //ifndef _MATERIALS_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Matestar.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Matestar.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Matestar.cpp	(revision 21239)
@@ -0,0 +1,443 @@
+/*!\file Matestar.c
+ * \brief: implementation of the Matestar object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Matestar.h"
+#include "./Materials.h"
+#include "../Inputs/Input.h"
+#include "../Inputs/Inputs.h"
+#include "../Inputs/TriaInput.h"
+#include "../Inputs/PentaInput.h"
+#include "../Inputs/ControlInput.h"
+#include "../Elements/Element.h"
+#include "../Elements/Tria.h"
+#include "../Elements/Penta.h"
+#include "../Params/Parameters.h"
+#include "../Vertex.h"
+#include "../Hook.h"
+#include "../Node.h"
+#include "../IoModel.h"
+#include "../../shared/shared.h"
+
+/*Matestar constructors and destructor*/
+Matestar::Matestar(){/*{{{*/
+	this->helement=NULL;
+	this->element=NULL;
+	return;
+}
+/*}}}*/
+Matestar::Matestar(int matestar_mid,int index, IoModel* iomodel){/*{{{*/
+
+	/*Intermediaries:*/
+	int    matestar_eid;
+
+	/*Initialize id*/
+	this->mid=matestar_mid;
+
+	/*Hooks: */
+	matestar_eid=index+1;
+	this->helement=new Hook(&matestar_eid,1);
+	this->element=NULL;
+
+	return;
+}
+/*}}}*/
+Matestar::~Matestar(){/*{{{*/
+	delete helement;
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object*   Matestar::copy() {/*{{{*/
+
+	/*Output*/
+	Matestar* matestar=NULL;
+
+	/*Initialize output*/
+	matestar=new Matestar();
+
+	/*copy fields: */
+	matestar->mid=this->mid;
+	matestar->helement=(Hook*)this->helement->copy();
+	matestar->element =(Element*)this->helement->delivers();
+
+	return matestar;
+}
+/*}}}*/
+Material* Matestar::copy2(Element* element_in) {/*{{{*/
+
+	/*Output*/
+	Matestar* matestar=NULL;
+
+	/*Initialize output*/
+	matestar=new Matestar();
+
+	/*copy fields: */
+	matestar->mid=this->mid;
+	matestar->helement=(Hook*)this->helement->copy();
+	matestar->element =element_in;
+
+	return matestar;
+}
+/*}}}*/
+void      Matestar::DeepEcho(void){/*{{{*/
+
+	_printf_("Matestar:\n");
+	_printf_("   mid: " << mid << "\n");
+	_printf_("   element:\n");
+	helement->Echo();
+}		
+/*}}}*/
+void      Matestar::Echo(void){/*{{{*/
+
+	_printf_("Matestar:\n");
+	_printf_("   mid: " << mid << "\n");
+	_printf_("   element:\n");
+	helement->Echo();
+}
+/*}}}*/
+int       Matestar::Id(void){ return mid; }/*{{{*/
+/*}}}*/
+void      Matestar::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	if(marshall_direction==MARSHALLING_BACKWARD)helement=new Hook(); 
+	
+	MARSHALLING_ENUM(MatestarEnum);
+	MARSHALLING(mid);
+	this->helement->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->element=(Element*)this->helement->delivers();
+
+}
+/*}}}*/
+int       Matestar::ObjectEnum(void){/*{{{*/
+
+	return MatestarEnum;
+
+}
+/*}}}*/
+
+/*Matestar management*/
+void  Matestar::Configure(Elements* elementsin){/*{{{*/
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	helement->configure((DataSet*)elementsin);
+	this->element  = (Element*)helement->delivers();
+}
+/*}}}*/
+IssmDouble Matestar::GetA(){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+IssmDouble Matestar::GetAbar(){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+IssmDouble Matestar::GetB(){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+IssmDouble Matestar::GetBbar(){/*{{{*/
+
+	_error_("not implemented yet");
+}
+/*}}}*/
+IssmDouble Matestar::GetD(){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+IssmDouble Matestar::GetDbar(){/*{{{*/
+
+	_error_("not implemented yet");
+}
+/*}}}*/
+IssmDouble Matestar::GetN(){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+void  Matestar::GetViscosity(IssmDouble* pviscosity,IssmDouble eps_eff){/*{{{*/
+	_error_("not implemented yet");
+	/*From a string tensor and a material object, return viscosity, using Glen's flow law.
+								(1-D) B
+	  viscosity= -------------------------
+						  2 eps_eff ^[(n-1)/n]
+
+	  where viscosity is the viscotiy, B the flow law parameter , eps_eff is the effective strain rate
+	  and n the flow law exponent.
+
+	  If eps_eff = 0 , it means this is the first time SystemMatrices is being run, and we 
+	  return 10^14, initial viscosity.
+	  */
+
+	/*output: */
+	IssmDouble viscosity;
+
+	/*Intermediary: */
+	IssmDouble B,D=0.,n;
+
+	/*Get B and n*/
+	B=GetB(); _assert_(B>0.);
+	n=GetN(); _assert_(n>0.);
+
+	if (n==1.){
+		/*Linear Viscous behavior (Newtonian fluid) viscosity=B/2: */
+		viscosity=(1.-D)*B/2.;
+	}
+	else{
+
+		/*if no strain rate, return maximum viscosity*/
+		if(eps_eff==0.){
+			viscosity = 1.e+14/2.;
+			//viscosity = B;
+			//viscosity=2.5*pow(10.,17);
+		}
+
+		else{
+			viscosity=(1.-D)*B/(2.*pow(eps_eff,(n-1.)/n));
+		}
+	}
+
+	/*Checks in debugging mode*/
+	if(viscosity<=0) _error_("Negative viscosity");
+
+	/*Return: */
+	*pviscosity=viscosity;
+}
+/*}}}*/
+void  Matestar::GetViscosityBar(IssmDouble* pviscosity,IssmDouble eps_eff){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+void  Matestar::GetViscosityComplement(IssmDouble* pviscosity_complement, IssmDouble* epsilon){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+void  Matestar::GetViscosityDComplement(IssmDouble* pviscosity_complement, IssmDouble* epsilon){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+void  Matestar::GetViscosityDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* epsilon){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+IssmDouble Matestar::GetViscosityGeneral(IssmDouble ko,IssmDouble Ec, IssmDouble Es,IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble viscosity;
+	IssmDouble E,lambdas;
+	IssmDouble epso,epsprime_norm;
+	IssmDouble vmag,dvmag[3];
+
+	/*Calculate velocity magnitude and its derivative*/
+	vmag = sqrt(vx*vx+vy*vy+vz*vz);
+	if(vmag<1e-12){
+		dvmag[0]=0;
+		dvmag[1]=0;
+		dvmag[2]=0;
+	}
+	else{
+		dvmag[0]=1./(2*sqrt(vmag))*(2*vx*dvx[0]+2*vy*dvy[0]+2*vz*dvz[0]);
+		dvmag[1]=1./(2*sqrt(vmag))*(2*vx*dvx[1]+2*vy*dvy[1]+2*vz*dvz[1]);
+		dvmag[2]=1./(2*sqrt(vmag))*(2*vx*dvx[2]+2*vy*dvy[2]+2*vz*dvz[2]);
+	}
+
+	EstarStrainrateQuantities(&epso,&epsprime_norm,vx,vy,vz,vmag,dvx,dvy,dvz,&dvmag[0]);
+	lambdas=EstarLambdaS(epso,epsprime_norm);
+
+	/*Get total enhancement factor E(lambdas)*/
+	E = Ec + (Es-Ec)*lambdas*lambdas;
+
+	/*Compute viscosity*/
+	_assert_(E>0.); 
+	_assert_(ko>0.); 
+	_assert_(epso>0.); 
+	viscosity = 1./(2*pow(ko*E*epso*epso,1./3.));
+
+	/*Assign output pointer*/
+	return viscosity;
+}
+/*}}}*/
+void  Matestar::GetViscosity_B(IssmDouble* pdmudB,IssmDouble eps_eff){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+void  Matestar::GetViscosity_D(IssmDouble* pdmudD,IssmDouble eps_eff){/*{{{*/
+	 _error_("not implemented yet");
+}
+/*}}}*/
+void  Matestar::GetViscosity2dDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* epsilon){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+void  Matestar::InputUpdateFromConstant(IssmDouble constant, int name){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Matestar::InputUpdateFromConstant(int constant, int name){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Matestar::InputUpdateFromConstant(bool constant, int name){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Matestar::InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols,int name, int type){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Matestar::InputUpdateFromVector(IssmDouble* vector, int name, int type){/*{{{*/
+
+}
+/*}}}*/
+void  Matestar::InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*{{{*/
+
+}
+/*}}}*/
+bool Matestar::IsDamage(){/*{{{*/
+
+	_error_("not implemented yet");
+}
+/*}}}*/
+void  Matestar::ResetHooks(){/*{{{*/
+
+	this->element=NULL;
+
+	/*Get Element type*/
+	this->helement->reset();
+
+}
+/*}}}*/
+void  Matestar::SetCurrentConfiguration(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+}
+/*}}}*/
+void  Matestar::ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble vx,vy,vz;
+	IssmDouble dvx[3],dvy[3],dvz[3];
+	IssmDouble ko,Ec,Es;
+
+	/*Get velocity derivatives in all directions*/
+	_assert_(dim>1);
+	_assert_(vx_input);
+	vx_input->GetInputValue(&vx,gauss);
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	_assert_(vy_input);
+	vy_input->GetInputValue(&vy,gauss);
+	vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+	if(dim==3){
+		_assert_(vz_input);
+		vz_input->GetInputValue(&vz,gauss);
+		vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
+	}
+	else{
+		vz = 0.;
+		dvz[0] = 0.; dvz[1] = 0.; dvz[2] = 0.;
+	}
+
+	/*Get enhancement factors and ko*/
+	Input* ec_input = element->inputs->GetInput(MaterialsRheologyEcEnum); _assert_(ec_input);
+	Input* es_input = element->inputs->GetInput(MaterialsRheologyEsEnum); _assert_(es_input);
+	Input* ko_input = element->inputs->GetInput(MaterialsRheologyKoEnum); _assert_(ko_input);
+	ec_input->GetInputValue(&Ec,gauss);
+	es_input->GetInputValue(&Es,gauss);
+	ko_input->GetInputValue(&ko,gauss);
+
+	/*Compute viscosity*/
+	*pviscosity=GetViscosityGeneral(ko,Ec,Es,vx,vy,vz,&dvx[0],&dvy[0],&dvz[0]);
+}
+/*}}}*/
+void  Matestar::ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/
+	this->GetViscosityDerivativeEpsSquare(pmu_prime,epsilon);
+}/*}}}*/
+void  Matestar::ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble vx,vy,vz;
+	IssmDouble dvx[3],dvy[3],dvz[3];
+	IssmDouble ko,Ec,Es;
+
+	/*Get velocity derivatives in all directions*/
+	_assert_(dim==2 || dim==3);
+	_assert_(vx_input);
+	vx_input->GetInputValue(&vx,gauss);
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	if(dim==3){
+		_assert_(vy_input);
+		vy_input->GetInputValue(&vy,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+	}
+	else{
+		dvx[2] = 0.;
+		vy = 0.;
+		dvy[0] = 0.; dvy[1] = 0.; dvy[2] = 0.;
+	}
+	vz = 0.;
+	dvz[0] = 0.; dvz[1] = 0.; dvz[2] = -dvx[0]-dvy[1];
+
+	/*Get enhancement factors and ko*/
+	Input* ec_input = element->inputs->GetInput(MaterialsRheologyEcEnum); _assert_(ec_input);
+	Input* es_input = element->inputs->GetInput(MaterialsRheologyEsEnum); _assert_(es_input);
+	Input* ko_input = element->inputs->GetInput(MaterialsRheologyKoEnum); _assert_(ko_input);
+	ec_input->GetInputValue(&Ec,gauss);
+	es_input->GetInputValue(&Es,gauss);
+	ko_input->GetInputValue(&ko,gauss);
+
+	/*Compute viscosity*/
+	*pviscosity=GetViscosityGeneral(ko,Ec,Es,vx,vy,vz,&dvx[0],&dvy[0],&dvz[0]);
+}/*}}}*/
+void  Matestar::ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void  Matestar::ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surface_input){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void  Matestar::ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+	/*Intermediaries*/
+	IssmDouble vx,vy,vz;
+	IssmDouble dvx[3],dvy[3],dvz[3];
+	IssmDouble ko,Ec,Es;
+
+	/*Get velocity derivatives in all directions*/
+	_assert_(dim==1 || dim==2);
+	_assert_(vx_input);
+	vx_input->GetInputValue(&vx,gauss);
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	if(dim==2){
+		_assert_(vy_input);
+		vy_input->GetInputValue(&vy,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+	}
+	else{
+		dvx[1] = 0.;
+		dvx[2] = 0.;
+		vy = 0.;
+		dvy[0] = 0.; dvy[1] = 0.; dvy[2] = 0.;
+	}
+	dvx[2] = 0.;
+	dvy[2] = 0.;
+	vz = 0.;
+	dvz[0] = 0.; dvz[1] = 0.; dvz[2] = -dvx[0]-dvy[1];
+
+	/*Get enhancement factors and ko*/
+	Input* ec_input = element->inputs->GetInput(MaterialsRheologyEcbarEnum); _assert_(ec_input);
+	Input* es_input = element->inputs->GetInput(MaterialsRheologyEsbarEnum); _assert_(es_input);
+	Input* ko_input = element->inputs->GetInput(MaterialsRheologyKobarEnum); _assert_(ko_input);
+	ec_input->GetInputValue(&Ec,gauss);
+	es_input->GetInputValue(&Es,gauss);
+	ko_input->GetInputValue(&ko,gauss);
+
+	/*Compute viscosity*/
+	*pviscosity=GetViscosityGeneral(ko,Ec,Es,vx,vy,vz,&dvx[0],&dvy[0],&dvz[0]);
+}/*}}}*/
+void  Matestar::ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Matestar.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Matestar.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Matestar.h	(revision 21239)
@@ -0,0 +1,87 @@
+/*!\file Matestar.h
+ * \brief: header file for matice object
+ */
+
+#ifndef MATESTAR_H_
+#define MATESTAR_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Material.h"
+#include "../Hook.h"
+class IoModel;
+class Elements;
+class Element;
+class Loads;
+class Nodes;
+class Vertices;
+class Materials;
+class Parameters;
+class Gauss;
+class Input;
+/*}}}*/
+
+class Matestar: public Material{
+
+	private: 
+		int      mid;
+		Hook    *helement;
+		Element *element;
+
+	public:
+		/*Matestar constructors, destructors: {{{*/
+		Matestar();
+		Matestar(int mid,int i, IoModel* iomodel);
+		~Matestar();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Update virtual funictions definitions: {{{*/
+		void  InputUpdateFromConstant(IssmDouble constant, int name);
+		void  InputUpdateFromConstant(int constant, int name);
+		void  InputUpdateFromConstant(bool constant, int name);
+		void  InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented");};
+		void  InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrow, int ncols, int name, int type);
+		void  InputUpdateFromVector(IssmDouble* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type);
+		/*}}}*/
+		/*Material virtual functions resolution: {{{*/
+		void   Configure(Elements* elements);
+		Material*  copy2(Element* element);
+		void       GetViscosity(IssmDouble* pviscosity, IssmDouble eps_eff);
+		void       GetViscosityBar(IssmDouble* pviscosity, IssmDouble eps_eff);
+		void       GetViscosityComplement(IssmDouble* pviscosity_complement, IssmDouble* pepsilon);
+		void       GetViscosityDComplement(IssmDouble*, IssmDouble*);
+		void       GetViscosityDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* pepsilon);
+		void       GetViscosity_B(IssmDouble* pviscosity, IssmDouble eps_eff);
+		void       GetViscosity_D(IssmDouble* pviscosity, IssmDouble eps_eff);
+		void       GetViscosity2dDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* pepsilon);
+		IssmDouble GetA();
+		IssmDouble GetAbar();
+		IssmDouble GetB();
+		IssmDouble GetBbar();
+		IssmDouble GetD();
+		IssmDouble GetDbar();
+		IssmDouble GetN();
+		bool       IsDamage();
+		void       ResetHooks();
+		void       SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+
+		void       ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
+		void       ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon);
+		void       ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void       ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon);
+		void       ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf);
+		void       ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void       ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon);
+		/*}}}*/
+		IssmDouble GetViscosityGeneral(IssmDouble ko,IssmDouble Ec, IssmDouble Es,IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz);
+};
+
+#endif  /* _MATESTAR_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Matice.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Matice.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Matice.cpp	(revision 21239)
@@ -0,0 +1,747 @@
+/*!\file Matice.c
+ * \brief: implementation of the Matice object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Matice.h"
+#include "./Materials.h"
+#include "../Inputs/Input.h"
+#include "../Inputs/Inputs.h"
+#include "../Inputs/TriaInput.h"
+#include "../Inputs/PentaInput.h"
+#include "../Inputs/ControlInput.h"
+#include "../Elements/Element.h"
+#include "../Elements/Tria.h"
+#include "../Elements/Penta.h"
+#include "../Params/Parameters.h"
+#include "../Vertex.h"
+#include "../Hook.h"
+#include "../Node.h"
+#include "../IoModel.h"
+#include "../../shared/shared.h"
+
+/*Matice constructors and destructor*/
+Matice::Matice(){/*{{{*/
+	this->helement=NULL;
+	this->element=NULL;
+	this->isdamaged=false;
+	return;
+}
+/*}}}*/
+Matice::Matice(int matice_mid,int index, IoModel* iomodel){/*{{{*/
+
+	/*Intermediaries:*/
+	int    matice_eid;
+
+	/*Initialize id*/
+	this->mid=matice_mid;
+
+	/*Hooks: */
+	matice_eid=index+1;
+	this->helement=new Hook(&matice_eid,1);
+	this->element=NULL;
+
+	 /*Other perporties*/
+   int    materialtype;
+   iomodel->FindConstant(&materialtype,"md.materials.type");
+   if(materialtype==MatdamageiceEnum) this->isdamaged = true;
+   else if(materialtype==MaticeEnum) this->isdamaged = false;
+   else _error_("Material type not recognized");
+
+	return;
+
+}
+/*}}}*/
+Matice::~Matice(){/*{{{*/
+	delete helement;
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object*   Matice::copy() {/*{{{*/
+
+	/*Output*/
+	Matice* matice=NULL;
+
+	/*Initialize output*/
+	matice=new Matice();
+
+	/*copy fields: */
+	matice->mid=this->mid;
+	matice->helement=(Hook*)this->helement->copy();
+	matice->element =(Element*)this->helement->delivers();
+	matice->isdamaged = this->isdamaged;
+
+	return matice;
+}
+/*}}}*/
+Material* Matice::copy2(Element* element_in) {/*{{{*/
+
+	/*Output*/
+	Matice* matice=NULL;
+
+	/*Initialize output*/
+	matice=new Matice();
+
+	/*copy fields: */
+	matice->mid=this->mid;
+	matice->helement=(Hook*)this->helement->copy();
+	matice->element =element_in;
+	matice->isdamaged = this->isdamaged;
+
+	return matice;
+}
+/*}}}*/
+void      Matice::DeepEcho(void){/*{{{*/
+
+	_printf_("Matice:\n");
+	_printf_("   mid: " << mid << "\n");
+	_printf_("   element:\n");
+	helement->Echo();
+}		
+/*}}}*/
+void      Matice::Echo(void){/*{{{*/
+
+	_printf_("Matice:\n");
+	_printf_("   mid: " << mid << "\n");
+	_printf_("   element:\n");
+	helement->Echo();
+}
+/*}}}*/
+int       Matice::Id(void){ return mid; }/*{{{*/
+/*}}}*/
+void      Matice::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	if(marshall_direction==MARSHALLING_BACKWARD)helement=new Hook(); 
+	
+	MARSHALLING_ENUM(MaticeEnum);
+	MARSHALLING(mid);
+	MARSHALLING(isdamaged);
+	this->helement->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->element=(Element*)this->helement->delivers();
+
+}
+/*}}}*/
+int       Matice::ObjectEnum(void){/*{{{*/
+
+	return MaticeEnum;
+
+}
+/*}}}*/
+
+/*Matice management*/
+void  Matice::Configure(Elements* elementsin){/*{{{*/
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	helement->configure((DataSet*)elementsin);
+	this->element  = (Element*)helement->delivers();
+}
+/*}}}*/
+IssmDouble Matice::GetA(){/*{{{*/
+	/*
+	 * A = 1/B^n
+	 */
+
+	IssmDouble B,n;
+
+	element->inputs->GetInputAverage(&B,MaterialsRheologyBEnum);
+	n=this->GetN();
+
+	return pow(B,-n);
+}
+/*}}}*/
+IssmDouble Matice::GetAbar(){/*{{{*/
+	/*
+	 * A = 1/B^n
+	 */
+
+	IssmDouble B,n;
+
+	element->inputs->GetInputAverage(&B,MaterialsRheologyBbarEnum);
+	n=this->GetN();
+
+	return pow(B,-n);
+}
+/*}}}*/
+IssmDouble Matice::GetB(){/*{{{*/
+
+	/*Output*/
+	IssmDouble B;
+
+	element->inputs->GetInputAverage(&B,MaterialsRheologyBEnum);
+	return B;
+}
+/*}}}*/
+IssmDouble Matice::GetBbar(){/*{{{*/
+
+	/*Output*/
+	IssmDouble Bbar;
+
+	element->inputs->GetInputAverage(&Bbar,MaterialsRheologyBbarEnum);
+	return Bbar;
+}
+/*}}}*/
+IssmDouble Matice::GetD(){/*{{{*/
+
+	_assert_(this->isdamaged);
+	/*Output*/
+	IssmDouble D;
+	if(this->isdamaged)element->inputs->GetInputAverage(&D,DamageDEnum);
+	return D;
+}
+/*}}}*/
+IssmDouble Matice::GetDbar(){/*{{{*/
+
+	_assert_(this->isdamaged);
+	/*Output*/
+	IssmDouble Dbar;
+	if(this->isdamaged)element->inputs->GetInputAverage(&Dbar,DamageDbarEnum);
+	return Dbar;
+}
+/*}}}*/
+IssmDouble Matice::GetN(){/*{{{*/
+
+	/*Output*/
+	IssmDouble n;
+
+	element->inputs->GetInputAverage(&n,MaterialsRheologyNEnum);
+	return n;
+}
+/*}}}*/
+bool Matice::IsDamage(){/*{{{*/
+
+	return this->isdamaged;
+}
+/*}}}*/
+void  Matice::GetViscosity(IssmDouble* pviscosity,IssmDouble eps_eff){/*{{{*/
+	/*From a string tensor and a material object, return viscosity, using Glen's flow law.
+								(1-D) B
+	  viscosity= -------------------------
+						  2 eps_eff ^[(n-1)/n]
+
+	  where viscosity is the viscotiy, B the flow law parameter , eps_eff is the effective strain rate
+	  and n the flow law exponent.
+
+	  If eps_eff = 0 , it means this is the first time SystemMatrices is being run, and we 
+	  return 10^14, initial viscosity.
+	  */
+
+	/*output: */
+	IssmDouble viscosity;
+
+	/*Intermediary: */
+	IssmDouble B,D=0.,n;
+
+	/*Get B and n*/
+	B=GetB(); _assert_(B>0.);
+	n=GetN(); _assert_(n>0.);
+	if(this->isdamaged){
+		D=GetD();
+		_assert_(D>=0. && D<1.);
+	}
+
+	if (n==1.){
+		/*Linear Viscous behavior (Newtonian fluid) viscosity=B/2: */
+		viscosity=(1.-D)*B/2.;
+	}
+	else{
+
+		/*if no strain rate, return maximum viscosity*/
+		if(eps_eff==0.){
+			viscosity = 1.e+14/2.;
+			//viscosity = B;
+			//viscosity=2.5*pow(10.,17);
+		}
+
+		else{
+			viscosity=(1.-D)*B/(2.*pow(eps_eff,(n-1.)/n));
+		}
+	}
+
+	/*Checks in debugging mode*/
+	if(viscosity<=0) _error_("Negative viscosity");
+
+	/*Return: */
+	*pviscosity=viscosity;
+}
+/*}}}*/
+void  Matice::GetViscosityBar(IssmDouble* pviscosity,IssmDouble eps_eff){/*{{{*/
+	/*From a string tensor and a material object, return viscosity, using Glen's flow law.
+								(1-D) B
+	  viscosity= -------------------------
+						  2 eps_eff ^[(n-1)/n]
+
+	  where B the flow law parameter, eps_eff is the effective strain rate and n the flow law exponent.
+
+	  If eps_eff = 0 , it means this is the first time SystemMatrices is being run, and we 
+	  return 10^14, initial viscosity.
+	  */
+
+	/*output: */
+	IssmDouble viscosity;
+
+	/*Intermediary: */
+	IssmDouble B,D=0.,n;
+
+	/*Get B and n*/
+	B=GetBbar(); _assert_(B>0.);
+	n=GetN();    _assert_(n>0.);
+	if(this->isdamaged){
+		D=GetDbar();
+		_assert_(D>=0. && D<1.);
+	}
+
+	if (n==1.){
+		/*Linear Viscous behavior (Newtonian fluid) viscosity=B/2: */
+		viscosity=(1.-D)*B/2.;
+	}
+	else{
+
+		/*if no strain rate, return maximum viscosity*/
+		if(eps_eff==0.){
+			viscosity = 1.e+14/2.;
+			//viscosity=2.5*pow(10.,17);
+		}
+
+		else{
+			viscosity=(1.-D)*B/(2.*pow(eps_eff,(n-1.)/n));
+		}
+	}
+
+	/*Checks in debugging mode*/
+	if(viscosity<=0) _error_("Negative viscosity");
+
+	/*Return: */
+	*pviscosity=viscosity;
+}
+/*}}}*/
+void  Matice::GetViscosityComplement(IssmDouble* pviscosity_complement, IssmDouble* epsilon){/*{{{*/
+	/*Return viscosity accounting for steady state power law creep [Thomas and SSA, 1982]: 
+	 *
+	 *  										                (1-D)
+	 * viscosity= -------------------------------------------------------------------
+	 *  				  2[ exx^2+eyy^2+exx*eyy+exy^2+exz^2+eyz^2 ]^[(n-1)/2n]
+	 *
+	 * If epsilon is NULL, it means this is the first time Gradjb is being run, and we 
+	 * return mu20, initial viscosity.
+	 */
+
+	/*output: */
+	IssmDouble viscosity_complement;
+
+	/*input strain rate: */
+	IssmDouble exx,eyy,exy;
+
+	/*Intermediary value A and exponent e: */
+	IssmDouble A,e;
+	IssmDouble D=0.,n;
+
+	/*Get D and n*/
+	if(this->isdamaged){
+		D=GetDbar(); /* GetD()? */
+		_assert_(D>=0. && D<1.);
+	}
+	n=GetN();
+
+	if(epsilon){
+		exx=*(epsilon+0);
+		eyy=*(epsilon+1);
+		exy=*(epsilon+2);
+
+		/*Build viscosity: mu2=(1-D)/(2*A^e) */
+		A=pow(exx,2)+pow(eyy,2)+pow(exy,2)+exx*eyy;
+		if(A==0){
+			/*Maximum viscosity_complement for 0 shear areas: */
+			viscosity_complement=2.25*pow(10.,17);
+		}
+		else{
+			e=(n-1)/(2*n);
+
+			viscosity_complement=(1-D)/(2*pow(A,e));
+		}
+	}
+	else{
+		viscosity_complement=4.5*pow(10.,17);
+	}
+
+	/*Checks in debugging mode*/
+	_assert_(D>=0 && D<1);
+	_assert_(n>0);
+	_assert_(viscosity_complement>0);
+
+	/*Return: */
+	*pviscosity_complement=viscosity_complement;
+}
+/*}}}*/
+void  Matice::GetViscosityDComplement(IssmDouble* pviscosity_complement, IssmDouble* epsilon){/*{{{*/
+	/*Return viscosity derivative for control method d(mu)/dD: 
+	 *
+	 *  										               B 
+	 * dviscosity= - -------------------------------------------------------------------
+	 *  				  2[ exx^2+eyy^2+exx*eyy+exy^2+exz^2+eyz^2 ]^[(n-1)/2n]
+	 *
+	 * If epsilon is NULL, it means this is the first time Gradjb is being run, and we 
+	 * return mu20, initial viscosity.
+	 */
+
+	/*output: */
+	IssmDouble viscosity_complement;
+
+	/*input strain rate: */
+	IssmDouble exx,eyy,exy;
+
+	/*Intermediary value A and exponent e: */
+	IssmDouble A,e;
+	IssmDouble B,n;
+
+	/*Get B and n*/
+	B=GetBbar();
+	n=GetN();
+
+	if(epsilon){
+		exx=*(epsilon+0);
+		eyy=*(epsilon+1);
+		exy=*(epsilon+2);
+
+		/*Build viscosity: mu2=B/(2*A^e) */
+		A=pow(exx,2)+pow(eyy,2)+pow(exy,2)+exx*eyy;
+		if(A==0){
+			/*Maximum viscosity_complement for 0 shear areas: */
+			viscosity_complement=- 2.25*pow(10.,17);
+		}
+		else{
+			e=(n-1)/(2*n);
+
+			viscosity_complement=- B/(2*pow(A,e));
+		}
+	}
+	else{
+		viscosity_complement=- 4.5*pow(10.,17);
+	}
+
+	/*Checks in debugging mode*/
+	_assert_(B>0);
+	_assert_(n>0);
+	_assert_(viscosity_complement<0);
+
+	/*Return: */
+	*pviscosity_complement=viscosity_complement;
+}
+/*}}}*/
+void  Matice::GetViscosityDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* epsilon){/*{{{*/
+
+	/*output: */
+	IssmDouble mu_prime;
+	IssmDouble mu,n,eff2;
+
+	/*input strain rate: */
+	IssmDouble exx,eyy,exy,exz,eyz;
+
+
+	if((epsilon[0]==0) && (epsilon[1]==0) && (epsilon[2]==0) && 
+				(epsilon[3]==0) && (epsilon[4]==0)){
+		mu_prime=0.5*pow(10.,14);
+	}
+	else{
+
+		/*Retrive strain rate components: */
+		exx=epsilon[0];
+		eyy=epsilon[1];
+		exy=epsilon[2];
+		exz=epsilon[3];
+		eyz=epsilon[4];
+		eff2 = exx*exx + eyy*eyy + exx*eyy + exy*exy + exz*exz + eyz*eyz;
+
+		GetViscosity(&mu,sqrt(eff2));
+		n=GetN();
+		mu_prime=(1.-n)/(2.*n) * mu/eff2;
+	}
+
+	/*Assign output pointers:*/
+	*pmu_prime=mu_prime;
+}
+/*}}}*/
+void  Matice::GetViscosity_B(IssmDouble* pdmudB,IssmDouble eps_eff){/*{{{*/
+
+	/*output: */
+	IssmDouble dmudB;
+
+	/*Intermediary: */
+	IssmDouble D=0.,n;
+
+	/*Get B and n*/
+	n=GetN(); _assert_(n>0.);
+	if(this->isdamaged){
+		D=GetD();
+		_assert_(D>=0. && D<1.);
+	}
+
+	if(n==1.){
+		/*Linear Viscous behavior (Newtonian fluid) dmudB=B/2: */
+		dmudB=(1.-D)/2.;
+	}
+	else{
+		if(eps_eff==0.) dmudB = 0.;
+		else            dmudB = (1.-D)/(2.*pow(eps_eff,(n-1.)/n));
+	}
+
+	/*Return: */
+	*pdmudB=dmudB;
+}
+/*}}}*/
+void  Matice::GetViscosity_D(IssmDouble* pdmudD,IssmDouble eps_eff){/*{{{*/
+
+	/*output: */
+	IssmDouble dmudD;
+
+	/*Intermediary: */
+	IssmDouble n,B;
+
+	/*Get B and n*/
+	n=GetN(); _assert_(n>0.);
+	B=GetBbar();
+	_assert_(this->isdamaged);
+
+	if(n==1.){
+		/*Linear Viscous behavior (Newtonian fluid) dmudB=B/2: */
+		dmudD=-B/2.;
+	}
+	else{
+		if(eps_eff==0.) dmudD = 0.;
+		else            dmudD = -B/(2.*pow(eps_eff,(n-1.)/n));
+	}
+
+	/*Return: */
+	*pdmudD=dmudD;
+}
+/*}}}*/
+void  Matice::GetViscosity2dDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* epsilon){/*{{{*/
+
+	/*output: */
+	IssmDouble mu_prime;
+	IssmDouble mu,n,eff2;
+
+	/*input strain rate: */
+	IssmDouble exx,eyy,exy;
+
+	if((epsilon[0]==0) && (epsilon[1]==0) && (epsilon[2]==0)){
+		mu_prime=0.5*pow(10.,14);
+	}
+	else{
+		/*Retrive strain rate components: */
+		exx=epsilon[0];
+		eyy=epsilon[1];
+		exy=epsilon[2];
+		eff2 = exx*exx + eyy*eyy + exx*eyy + exy*exy ;
+
+		GetViscosityBar(&mu,sqrt(eff2));
+		n=GetN();
+		mu_prime=(1.-n)/(2.*n)*mu/eff2;
+	}
+
+	/*Assign output pointers:*/
+	*pmu_prime=mu_prime;
+}
+/*}}}*/
+void  Matice::InputUpdateFromConstant(IssmDouble constant, int name){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Matice::InputUpdateFromConstant(int constant, int name){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Matice::InputUpdateFromConstant(bool constant, int name){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Matice::InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols,int name, int type){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Matice::InputUpdateFromVector(IssmDouble* vector, int name, int type){/*{{{*/
+
+}
+/*}}}*/
+void  Matice::InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*{{{*/
+
+}
+/*}}}*/
+void  Matice::ResetHooks(){/*{{{*/
+
+	this->element=NULL;
+
+	/*Get Element type*/
+	this->helement->reset();
+
+}
+/*}}}*/
+void  Matice::SetCurrentConfiguration(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+}
+/*}}}*/
+void  Matice::ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/
+	/*The effective strain rate is defined in Paterson 3d Ed p 91 eq 9,
+	 * and Cuffey p 303 eq 8.18:
+	 *
+	 *  2 eps_eff^2 = eps_xx^2 + eps_yy^2 + eps_zz^2 + 2(eps_xy^2 + eps_xz^2 + eps_yz^2)
+	 *
+	 *  or
+	 *
+	 *  eps_eff = 1/sqrt(2) sqrt( \sum_ij eps_ij^2 )
+	 *
+	 *          = 1/sqrt(2) ||eps||_F
+	 *
+	 *  where ||.||_F is the Frobenius norm */
+
+	/*Intermediaries*/
+	IssmDouble viscosity;
+	IssmDouble epsilon3d[6]; /* epsilon=[exx,eyy,ezz,exy,exz,eyz];*/
+	IssmDouble epsilon2d[3]; /* epsilon=[exx,eyy,exy];            */
+	IssmDouble eps_eff;
+	IssmDouble eps0=1.e-27;
+
+	if(dim==3){
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
+		element->StrainRateFS(&epsilon3d[0],xyz_list,gauss,vx_input,vy_input,vz_input);
+		eps_eff = sqrt(epsilon3d[0]*epsilon3d[0] + epsilon3d[1]*epsilon3d[1] + epsilon3d[3]*epsilon3d[3] +  epsilon3d[4]*epsilon3d[4] + epsilon3d[5]*epsilon3d[5] + epsilon3d[0]*epsilon3d[1]+eps0*eps0);
+	}
+	else{
+		/* eps_eff^2 = 1/2 ( exx^2 + eyy^2 + 2*exy^2 )*/
+		element->StrainRateSSA(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = 1./sqrt(2.)*sqrt(epsilon2d[0]*epsilon2d[0] + epsilon2d[1]*epsilon2d[1] + 2.*epsilon2d[2]*epsilon2d[2]);
+	}
+
+	/*Get viscosity*/
+	this->GetViscosity(&viscosity,eps_eff);
+
+	/*Assign output pointer*/
+	*pviscosity=viscosity;
+}
+/*}}}*/
+void  Matice::ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/
+	this->GetViscosityDerivativeEpsSquare(pmu_prime,epsilon);
+}/*}}}*/
+void  Matice::ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble viscosity;
+	IssmDouble epsilon3d[5];/* epsilon=[exx,eyy,exy,exz,eyz];*/
+	IssmDouble epsilon2d[2];/* epsilon=[exx,exy];            */
+	IssmDouble eps_eff;
+
+	if(dim==3){
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
+		element->StrainRateHO(&epsilon3d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = sqrt(epsilon3d[0]*epsilon3d[0] + epsilon3d[1]*epsilon3d[1] + epsilon3d[2]*epsilon3d[2] +  epsilon3d[3]*epsilon3d[3] + epsilon3d[4]*epsilon3d[4] + epsilon3d[0]*epsilon3d[1]);
+	}
+	else{
+		/* eps_eff^2 = 1/2 (2*exx^2 + 2*exy^2 ) (since eps_zz = - eps_xx)*/
+		element->StrainRateHO2dvertical(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = 1./sqrt(2.)*sqrt(2*epsilon2d[0]*epsilon2d[0] + 2*epsilon2d[1]*epsilon2d[1]);
+	}
+
+	/*Get viscosity*/
+	this->GetViscosity(&viscosity,eps_eff);
+	_assert_(!xIsNan<IssmDouble>(viscosity));
+
+	/*Assign output pointer*/
+	*pviscosity=viscosity;
+}/*}}}*/
+void  Matice::ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/
+	this->GetViscosityDerivativeEpsSquare(pmu_prime,epsilon);
+}/*}}}*/
+void  Matice::ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surface_input){/*{{{*/
+	/*Compute the L1L2 viscosity
+	 *
+	 *      1
+	 * mu = - A^-1 (sigma'_e)^(1-n)
+	 *      2
+	 *
+	 * sigma'_e^2 = |sigma'_//|^2 + |sigma'_perp|^2 (see Perego 2012 eq. 17,18)
+	 *
+	 * L1L2 assumptions:
+	 *
+	 * (1) |eps_b|_// = A (|sigma'_//|^2 + |sigma'_perp|^2)^((n-1)/2) |sigma'_//|
+	 * (2) |sigma'_perp|^2 = |rho g (s-z) grad(s)|^2
+	 *
+	 * Assuming that n = 3, we have a polynom of degree 3 to solve (the only unkown is X=|sigma'_//|)
+	 *
+	 * A X^3 + A |rho g (s-z) grad(s)|^2 X - |eps_b|_// = 0     */
+
+	IssmDouble z,s,viscosity,p,q,delta;
+	IssmDouble tau_perp,tau_par,eps_b,A;
+	IssmDouble epsilon[5];   /*exx eyy exy exz eyz*/
+	IssmDouble slope[3];
+
+	/*Check that both inputs have been found*/
+	if (!vx_input || !vy_input || !surface_input) _error_("Input missing");
+
+	/*Get tau_perp*/
+	surface_input->GetInputValue(&s,gauss);
+	surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+	z=this->element->GetZcoord(xyz_list,gauss);
+	tau_perp = element->matpar->GetMaterialParameter(MaterialsRhoIceEnum) * element->matpar->GetMaterialParameter(ConstantsGEnum) * fabs(s-z)*sqrt(slope[0]*slope[0]+slope[1]*slope[1]);
+
+	/* Get eps_b*/
+	element->StrainRateHO(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+	eps_b = sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[0]*epsilon[1] + epsilon[2]*epsilon[2]);
+	if(eps_b==0.){
+		*pviscosity = 2.5e+17;
+		return;
+	}
+
+	/*Get A*/
+	_assert_(this->GetN()==3.0);
+	A=this->GetA();
+
+	/*Solve for tau_perp (http://fr.wikipedia.org/wiki/Méthode_de_Cardan)*/
+	p     = tau_perp *tau_perp;
+	q     = - eps_b/A;
+	delta = q *q + p*p*p*4./27.;
+	_assert_(delta>0);
+	tau_par = pow(0.5*(-q+sqrt(delta)),1./3.) - pow(0.5*(q+sqrt(delta)),1./3.);
+
+	/*Viscosity*/
+	viscosity = 1./(2.*A*(tau_par*tau_par + tau_perp*tau_perp));
+	_assert_(!xIsNan(viscosity));
+	_assert_(viscosity > 0.);
+
+	/*Assign output pointer*/
+	*pviscosity = viscosity;
+}/*}}}*/
+void  Matice::ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble viscosity;
+	IssmDouble epsilon2d[3];/* epsilon=[exx,eyy,exy];    */
+	IssmDouble epsilon1d;   /* epsilon=[exx];    */
+	IssmDouble eps_eff;
+
+	if(dim==2){
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exx*eyy*/
+		element->StrainRateSSA(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = sqrt(epsilon2d[0]*epsilon2d[0] + epsilon2d[1]*epsilon2d[1] + epsilon2d[2]*epsilon2d[2] + epsilon2d[0]*epsilon2d[1]);
+	}
+	else{
+		/* eps_eff^2 = exx^2*/
+		element->StrainRateSSA1d(&epsilon1d,xyz_list,gauss,vx_input);
+		eps_eff = fabs(epsilon1d);
+	}
+
+	/*Get viscosity*/
+	this->GetViscosityBar(&viscosity,eps_eff);
+
+	/*Assign output pointer*/
+	*pviscosity=viscosity;
+}/*}}}*/
+void  Matice::ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/
+	this->GetViscosity2dDerivativeEpsSquare(pmu_prime,epsilon);
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Matice.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Matice.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Matice.h	(revision 21239)
@@ -0,0 +1,87 @@
+/*!\file Matice.h
+ * \brief: header file for matice object
+ */
+
+#ifndef MATICE_H_
+#define MATICE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Material.h"
+#include "../Hook.h"
+class IoModel;
+class Elements;
+class Element;
+class Loads;
+class Nodes;
+class Vertices;
+class Materials;
+class Parameters;
+class Gauss;
+class Input;
+/*}}}*/
+
+class Matice: public Material{
+
+	private: 
+		int      mid;
+		bool     isdamaged;
+		Hook    *helement;
+		Element *element;
+
+	public:
+		/*Matice constructors, destructors: {{{*/
+		Matice();
+		Matice(int mid,int i, IoModel* iomodel);
+		~Matice();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Update virtual funictions definitions: {{{*/
+		void  InputUpdateFromConstant(IssmDouble constant, int name);
+		void  InputUpdateFromConstant(int constant, int name);
+		void  InputUpdateFromConstant(bool constant, int name);
+		void  InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented");};
+		void  InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrow, int ncols, int name, int type);
+		void  InputUpdateFromVector(IssmDouble* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type);
+		/*}}}*/
+		/*Material virtual functions resolution: {{{*/
+		void   Configure(Elements* elements);
+		Material*  copy2(Element* element);
+		void       GetViscosity(IssmDouble* pviscosity, IssmDouble eps_eff);
+		void       GetViscosityBar(IssmDouble* pviscosity, IssmDouble eps_eff);
+		void       GetViscosityComplement(IssmDouble* pviscosity_complement, IssmDouble* pepsilon);
+		void       GetViscosityDComplement(IssmDouble*, IssmDouble*);
+		void       GetViscosityDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* pepsilon);
+		void       GetViscosity_B(IssmDouble* pviscosity, IssmDouble eps_eff);
+		void       GetViscosity_D(IssmDouble* pviscosity, IssmDouble eps_eff);
+		void       GetViscosity2dDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* pepsilon);
+		IssmDouble GetA();
+		IssmDouble GetAbar();
+		IssmDouble GetB();
+		IssmDouble GetBbar();
+		IssmDouble GetD();
+		IssmDouble GetDbar();
+		IssmDouble GetN();
+		bool       IsDamage();
+		void       ResetHooks();
+		void       SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+
+		void       ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
+		void       ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon);
+		void       ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void       ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon);
+		void       ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf);
+		void       ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void       ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon);
+		/*}}}*/
+};
+
+#endif  /* _MATICE_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Matpar.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Matpar.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Matpar.cpp	(revision 21239)
@@ -0,0 +1,565 @@
+/*!\file Matpar.c
+ * \brief: implementation of the Matpar object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+
+/*Matpar constructors and destructor*/
+Matpar::Matpar(){/*{{{*/
+	return;
+}
+/*}}}*/
+Matpar::Matpar(int matpar_mid, IoModel* iomodel){/*{{{*/
+
+	rho_ice                   = 0;
+	rho_water                 = 0;
+	rho_freshwater            = 0;
+	mu_water                  = 0;
+	heatcapacity              = 0;
+	thermalconductivity       = 0;
+	temperateiceconductivity  = 0;
+	latentheat                = 0;
+	beta                      = 0;
+	meltingpoint              = 0;
+	referencetemperature      = 0;
+	mixed_layer_capacity      = 0;
+	thermal_exchange_velocity = 0;
+	g                         = 0;
+	omega                     = 0;
+	desfac                    = 0;
+	rlaps                     = 0;
+	rlapslgm                  = 0;
+	dpermil                   = 0;
+
+	albedo_snow               = 0;
+	albedo_ice                = 0;
+
+	sediment_compressibility  = 0;
+	sediment_porosity         = 0;
+	sediment_thickness        = 0;
+	water_compressibility     = 0;
+
+	epl_compressibility       = 0;
+	epl_porosity              = 0;
+	epl_init_thickness        = 0;
+	epl_colapse_thickness     = 0;
+	epl_max_thickness         = 0;
+	epl_conductivity          = 0;
+
+	lithosphere_shear_modulus = 0;
+	lithosphere_density       = 0;
+	mantle_shear_modulus      = 0;
+	mantle_density            = 0;
+	
+	earth_density             = 0;
+
+	poisson                   = 0;
+	young_modulus             = 0;
+	ridging_exponent          = 0;
+	cohesion                  = 0;
+	internal_friction_coef    = 0;
+	compression_coef          = 0;
+	traction_coef             = 0;
+	time_relaxation_stress    = 0;
+	time_relaxation_damage    = 0;
+
+	bool isefficientlayer;
+	int  hydrology_model,smb_model,materials_type;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+	iomodel->FindConstant(&smb_model,"md.smb.model");
+	iomodel->FindConstant(&materials_type,"md.materials.type");
+
+	this->mid = matpar_mid;
+
+	switch(materials_type){
+		case MaticeEnum:
+		case MatdamageiceEnum:
+		case MatestarEnum:
+			iomodel->FindConstant(&this->rho_ice,"md.materials.rho_ice");
+			iomodel->FindConstant(&this->rho_water,"md.materials.rho_water");
+			iomodel->FindConstant(&this->rho_freshwater,"md.materials.rho_freshwater");
+			iomodel->FindConstant(&this->mu_water,"md.materials.mu_water");
+			iomodel->FindConstant(&this->heatcapacity,"md.materials.heatcapacity");
+			iomodel->FindConstant(&this->thermalconductivity,"md.materials.thermalconductivity");
+			iomodel->FindConstant(&this->temperateiceconductivity,"md.materials.temperateiceconductivity");
+			iomodel->FindConstant(&this->latentheat,"md.materials.latentheat");
+			iomodel->FindConstant(&this->beta,"md.materials.beta");
+			iomodel->FindConstant(&this->meltingpoint,"md.materials.meltingpoint");
+			iomodel->FindConstant(&this->referencetemperature,"md.constants.referencetemperature");
+			iomodel->FindConstant(&this->mixed_layer_capacity,"md.materials.mixed_layer_capacity");
+			iomodel->FindConstant(&this->thermal_exchange_velocity,"md.materials.thermal_exchange_velocity");
+			iomodel->FindConstant(&this->g,"md.constants.g");
+
+			switch(smb_model){
+				case SMBforcingEnum:
+					/*Nothing to add*/
+					break;
+				case SMBgembEnum:
+					iomodel->FindConstant(&this->albedo_ice,"md.smb.aIce");
+					iomodel->FindConstant(&this->albedo_snow,"md.smb.aSnow");
+					break;
+				case SMBpddEnum:
+					iomodel->FindConstant(&this->desfac,"md.smb.desfac");
+					iomodel->FindConstant(&this->rlaps,"md.smb.rlaps");
+					iomodel->FindConstant(&this->rlapslgm,"md.smb.rlapslgm");
+					break;
+				case SMBd18opddEnum:
+					iomodel->FindConstant(&this->desfac,"md.smb.desfac");
+					iomodel->FindConstant(&this->rlaps,"md.smb.rlaps");
+					iomodel->FindConstant(&this->rlapslgm,"md.smb.rlapslgm");
+					iomodel->FindConstant(&this->dpermil,"md.smb.dpermil");					
+				case SMBgradientsEnum:
+					break;
+					/*Nothing to add*/
+					break;
+				case SMBhenningEnum:
+					/*Nothing to add*/
+					break;
+				case SMBcomponentsEnum:
+					/*Nothing to add*/
+					break;
+				case SMBmeltcomponentsEnum:
+					/*Nothing to add*/
+					break;
+				default:
+					_error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
+			}
+			if(hydrology_model==HydrologydcEnum){
+				iomodel->FindConstant(&this->sediment_compressibility,"md.hydrology.sediment_compressibility");
+				iomodel->FindConstant(&this->sediment_porosity,"md.hydrology.sediment_porosity");
+				iomodel->FindConstant(&this->sediment_thickness,"md.hydrology.sediment_thickness");
+				iomodel->FindConstant(&this->water_compressibility,"md.hydrology.water_compressibility");
+				iomodel->FindConstant(&isefficientlayer,"md.hydrology.isefficientlayer");
+
+				if(isefficientlayer){
+					iomodel->FindConstant(&this->epl_compressibility,"md.hydrology.epl_compressibility");
+					iomodel->FindConstant(&this->epl_porosity,"md.hydrology.epl_porosity");
+					iomodel->FindConstant(&this->epl_init_thickness,"md.hydrology.epl_initial_thickness");
+					iomodel->FindConstant(&this->epl_colapse_thickness,"md.hydrology.epl_colapse_thickness");
+					iomodel->FindConstant(&this->epl_max_thickness,"md.hydrology.epl_max_thickness");
+					iomodel->FindConstant(&this->epl_conductivity,"md.hydrology.epl_conductivity");
+				}
+			}
+			else if(hydrology_model==HydrologyshreveEnum){
+				/*Nothing to add*/
+			}
+			else if(hydrology_model==HydrologysommersEnum){
+				/*Nothing to add*/
+			}
+			else{
+				_error_("Hydrology model "<<EnumToStringx(hydrology_model)<<" not supported yet");
+			}
+
+			/*gia: */
+			iomodel->FindConstant(&this->lithosphere_shear_modulus,"md.materials.lithosphere_shear_modulus");
+			iomodel->FindConstant(&this->lithosphere_density,"md.materials.lithosphere_density");
+			iomodel->FindConstant(&this->mantle_shear_modulus,"md.materials.mantle_shear_modulus");
+			iomodel->FindConstant(&this->mantle_density,"md.materials.mantle_density");
+
+			/*slr:*/
+			iomodel->FindConstant(&this->earth_density,"md.materials.earth_density");
+
+			break;
+		default:
+			_error_("Material "<< EnumToStringx(materials_type) <<" not supported yet");
+	}
+}
+/*}}}*/
+Matpar::~Matpar(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Matpar::copy() {/*{{{*/
+
+	/*Output*/
+	Matpar* matpar;
+
+	/*Initialize output*/
+	matpar=new Matpar(*this);
+
+	/*copy fields: */
+	matpar->mid=this->mid;
+	matpar->rho_ice=this->rho_ice;
+	matpar->rho_water=this->rho_water;
+	matpar->rho_freshwater=this->rho_freshwater;
+	matpar->mu_water=this->mu_water;
+	matpar->heatcapacity=this->heatcapacity;
+	matpar->thermalconductivity=this->thermalconductivity;
+	matpar->temperateiceconductivity=this->temperateiceconductivity;
+	matpar->latentheat=this->latentheat;
+	matpar->beta=this->beta;
+	matpar->meltingpoint=this->meltingpoint;
+	matpar->referencetemperature=this->referencetemperature;
+	matpar->mixed_layer_capacity=this->mixed_layer_capacity;
+	matpar->thermal_exchange_velocity=this->thermal_exchange_velocity;
+	matpar->g=this->g;
+	matpar->desfac=this->desfac;
+	matpar->rlaps=this->rlaps;
+	matpar->rlapslgm=this->rlapslgm;
+	matpar->dpermil=this->dpermil;
+
+	matpar->sediment_compressibility=this->sediment_compressibility;
+	matpar->sediment_porosity=this->sediment_porosity;
+	matpar->sediment_thickness=this->sediment_thickness;
+	matpar->water_compressibility=this->water_compressibility;
+
+	matpar->epl_compressibility=this->epl_compressibility;
+	matpar->epl_porosity=this->epl_porosity;
+	matpar->epl_init_thickness=this->epl_init_thickness;
+	matpar->epl_colapse_thickness=this->epl_colapse_thickness;
+	matpar->epl_max_thickness=this->epl_max_thickness;
+	matpar->epl_conductivity=this->epl_conductivity;
+
+	matpar->lithosphere_shear_modulus=this->lithosphere_shear_modulus;
+	matpar->lithosphere_density=this->lithosphere_density;
+	matpar->mantle_shear_modulus=this->mantle_shear_modulus;
+	matpar->mantle_density=this->mantle_density;
+	
+	matpar->earth_density=this->earth_density;
+
+	return matpar;
+}
+/*}}}*/
+void Matpar::DeepEcho(void){/*{{{*/
+
+	this->Echo();
+}		
+/*}}}*/
+void Matpar::Echo(void){/*{{{*/
+
+	_printf_("Matpar:\n");
+	_printf_("   mid: " << mid << "\n");
+	_printf_("   rho_ice: " << rho_ice << "\n");
+	_printf_("   rho_water: " << rho_water << "\n");
+	_printf_("   rho_freshwater: " << rho_freshwater << "\n");
+	_printf_("   mu_water: " << mu_water << "\n");
+	_printf_("   heatcapacity: " << heatcapacity << "\n");
+	_printf_("   thermalconductivity: " << thermalconductivity << "\n");
+	_printf_("   temperateiceconductivity: " << temperateiceconductivity << "\n");
+	_printf_("   latentheat: " << latentheat << "\n");
+	_printf_("   beta: " << beta << "\n");
+	_printf_("   meltingpoint: " << meltingpoint << "\n");
+	_printf_("   referencetemperature: " << referencetemperature << "\n");
+	_printf_("   mixed_layer_capacity: " << mixed_layer_capacity << "\n");
+	_printf_("   thermal_exchange_velocity: " << thermal_exchange_velocity << "\n");
+	_printf_("   g: " << g << "\n");
+	_printf_("   desfac: " << desfac << "\n");
+	_printf_("   rlaps: " << rlaps << "\n");
+	_printf_("   rlapslgm: " << rlapslgm << "\n");
+	_printf_("   dpermil: " << dpermil << "\n");
+	return;
+}
+/*}}}*/
+int  Matpar::Id(void){ return mid; }/*{{{*/
+/*}}}*/
+void Matpar::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(MatparEnum);
+
+	MARSHALLING(mid);
+	MARSHALLING(rho_ice);
+	MARSHALLING(rho_water);
+	MARSHALLING(rho_freshwater);
+	MARSHALLING(mu_water);
+	MARSHALLING(heatcapacity);
+	MARSHALLING(thermalconductivity);
+	MARSHALLING(temperateiceconductivity);
+	MARSHALLING(latentheat);
+	MARSHALLING(beta);
+	MARSHALLING(meltingpoint);
+	MARSHALLING(referencetemperature);
+	MARSHALLING(mixed_layer_capacity);
+	MARSHALLING(thermal_exchange_velocity);
+	MARSHALLING(g);
+	MARSHALLING(omega);
+	MARSHALLING(desfac);
+	MARSHALLING(rlaps);
+	MARSHALLING(rlapslgm);
+	MARSHALLING(dpermil);
+
+	//hydrology Dual Porous Continuum:
+	MARSHALLING(sediment_compressibility);
+	MARSHALLING(sediment_porosity);
+	MARSHALLING(sediment_thickness);
+	MARSHALLING(water_compressibility);
+
+	MARSHALLING(epl_compressibility);
+	MARSHALLING(epl_porosity);
+	MARSHALLING(epl_init_thickness);
+	MARSHALLING(epl_colapse_thickness);
+	MARSHALLING(epl_max_thickness);
+	MARSHALLING(epl_conductivity);
+
+	//gia:
+	MARSHALLING(lithosphere_shear_modulus);
+	MARSHALLING(lithosphere_density);
+	MARSHALLING(mantle_shear_modulus);
+	MARSHALLING(mantle_density);
+	
+	//slr:
+	MARSHALLING(earth_density);
+
+	//Sea ice:
+	MARSHALLING(poisson);
+	MARSHALLING(young_modulus);
+	MARSHALLING(ridging_exponent);
+	MARSHALLING(cohesion);
+	MARSHALLING(internal_friction_coef);
+	MARSHALLING(compression_coef);
+	MARSHALLING(traction_coef);
+	MARSHALLING(time_relaxation_stress);
+	MARSHALLING(time_relaxation_damage);
+
+}
+/*}}}*/
+int  Matpar::ObjectEnum(void){/*{{{*/
+
+	return MatparEnum;
+
+}
+/*}}}*/
+
+/*Update virtual functions definitions:*/
+void   Matpar::InputUpdateFromConstant(IssmDouble constant, int name){/*{{{*/
+
+	switch(name){
+		case MaterialsRhoIceEnum:
+			this->rho_ice=constant;
+			break;
+		case MaterialsRhoSeawaterEnum:
+			this->rho_water=constant;
+			break;
+		case MaterialsRhoFreshwaterEnum:
+			this->rho_freshwater=constant;
+			break;
+		case MaterialsMuWaterEnum:
+			this->mu_water=constant;
+			break;
+		case MaterialsHeatcapacityEnum:
+			this->heatcapacity=constant;
+			break;
+	  	case MaterialsThermalconductivityEnum:
+			this->thermalconductivity=constant;
+			break;
+	  	case MaterialsTemperateiceconductivityEnum:
+			this->temperateiceconductivity=constant;
+			break;
+		case  MaterialsLatentheatEnum:
+			this->latentheat=constant;
+			break;
+		case  MaterialsBetaEnum:
+			this->beta=constant;
+			break;
+		case  MaterialsMeltingpointEnum:
+			this->meltingpoint=constant;
+			break;
+		case  ConstantsReferencetemperatureEnum:
+			this->referencetemperature=constant;
+			break;
+		case  MaterialsMixedLayerCapacityEnum:
+			this->mixed_layer_capacity=constant;
+			break;
+		case  MaterialsThermalExchangeVelocityEnum:
+			this->thermalconductivity=constant;
+			break;
+		case  ConstantsGEnum:
+			this->g=constant;
+			break;
+		case  SmbDesfacEnum:
+			this->desfac=constant;
+			break;
+		case SmbRlapsEnum:
+			this->rlaps=constant;
+			break;
+		case SmbRlapslgmEnum:
+			this->rlapslgm=constant;
+			break;
+		case  SmbDpermilEnum:
+			this->dpermil=constant;
+			break;
+		default: 
+			break;
+	}
+
+}
+/*}}}*/
+void   Matpar::InputUpdateFromConstant(int constant, int name){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void   Matpar::InputUpdateFromConstant(bool constant, int name){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Matpar::InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols,int name, int type){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void   Matpar::InputUpdateFromVector(IssmDouble* vector, int name, int type){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void   Matpar::InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+
+/*Matpar management: */
+void       Matpar::Configure(Elements* elementsin){/*{{{*/
+
+	/*nothing done yet!*/
+
+}
+/*}}}*/
+void       Matpar::EnthalpyToThermal(IssmDouble* ptemperature,IssmDouble* pwaterfraction,IssmDouble enthalpy,IssmDouble pressure){/*{{{*/
+
+	/*Ouput*/
+	IssmDouble temperature,waterfraction;
+
+	if(enthalpy<PureIceEnthalpy(pressure)){
+		temperature=referencetemperature+enthalpy/heatcapacity;
+		waterfraction=0.;
+	}
+	else{
+		temperature=TMeltingPoint(pressure);
+		waterfraction=(enthalpy-PureIceEnthalpy(pressure))/latentheat;
+	}
+
+	/*Assign output pointers:*/
+	*pwaterfraction=waterfraction;
+	*ptemperature=temperature;
+}
+/*}}}*/
+IssmDouble Matpar::GetEnthalpyDiffusionParameter(IssmDouble enthalpy,IssmDouble pressure){/*{{{*/
+	if (enthalpy<PureIceEnthalpy(pressure))
+		return thermalconductivity/heatcapacity;
+	else
+		return temperateiceconductivity/heatcapacity;
+}
+/*}}}*/
+IssmDouble Matpar::GetEnthalpyDiffusionParameterVolume(int numvertices,IssmDouble* enthalpy,IssmDouble* pressure){/*{{{*/
+
+	int         iv;
+	IssmDouble  lambda;                 // fraction of cold ice
+	IssmDouble  kappa,kappa_c,kappa_t;  //enthalpy conductivities
+	IssmDouble  Hc,Ht;
+	IssmDouble* PIE   = xNew<IssmDouble>(numvertices);
+	IssmDouble* dHpmp = xNew<IssmDouble>(numvertices);
+
+	for(iv=0; iv<numvertices; iv++){
+		PIE[iv]=PureIceEnthalpy(pressure[iv]);
+		dHpmp[iv]=enthalpy[iv]-PIE[iv];
+	}
+
+	bool allequalsign=true;
+	if(dHpmp[0]<0)
+		for(iv=1; iv<numvertices;iv++) allequalsign=(allequalsign && (dHpmp[iv]<0));
+	else
+		for(iv=1; iv<numvertices;iv++) allequalsign=(allequalsign && (dHpmp[iv]>=0));
+
+	if(allequalsign){
+		kappa=GetEnthalpyDiffusionParameter(enthalpy[0], pressure[0]);
+	}
+	else {
+		/* return harmonic mean of thermal conductivities, weighted by fraction of cold/temperate ice,
+		 cf Patankar 1980, pp44 */
+		kappa_c=GetEnthalpyDiffusionParameter(PureIceEnthalpy(0.)-1.,0.);
+		kappa_t=GetEnthalpyDiffusionParameter(PureIceEnthalpy(0.)+1.,0.);
+		Hc=0.; Ht=0.;
+		for(iv=0; iv<numvertices;iv++){
+			if(enthalpy[iv]<PIE[iv])
+			 Hc+=(PIE[iv]-enthalpy[iv]);
+			else
+			 Ht+=(enthalpy[iv]-PIE[iv]);
+		}
+		_assert_((Hc+Ht)>0.);
+		lambda = Hc/(Hc+Ht);
+		kappa  = 1./(lambda/kappa_c + (1.-lambda)/kappa_t);
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(PIE);
+	xDelete<IssmDouble>(dHpmp);
+	return kappa;
+}
+/*}}}*/
+IssmDouble Matpar::GetMaterialParameter(int enum_in){/*{{{*/
+
+	switch(enum_in){
+		case MaterialsRhoIceEnum:                    return this->rho_ice;
+		case MaterialsRhoSeawaterEnum:               return this->rho_water;
+		case MaterialsRhoFreshwaterEnum:             return this->rho_freshwater;
+		case MaterialsMuWaterEnum:                   return this->mu_water;
+		case MaterialsHeatcapacityEnum:              return this->heatcapacity;
+		case MaterialsThermalconductivityEnum:       return this->thermalconductivity;
+		case MaterialsTemperateiceconductivityEnum:  return this->temperateiceconductivity;
+		case MaterialsLatentheatEnum:                return this->latentheat;
+		case MaterialsBetaEnum:                      return this->beta;
+		case MaterialsMeltingpointEnum:              return this->meltingpoint;
+		case ConstantsReferencetemperatureEnum:      return this->referencetemperature;
+		case MaterialsMixedLayerCapacityEnum:        return this->mixed_layer_capacity;
+		case MaterialsThermalExchangeVelocityEnum:   return this->thermal_exchange_velocity;
+		case HydrologydcSedimentPorosityEnum:        return this->sediment_porosity;
+		case HydrologydcSedimentThicknessEnum:       return this->sediment_thickness;
+		case HydrologydcSedimentCompressibilityEnum: return this->sediment_compressibility;
+		case HydrologydcEplPorosityEnum:             return this->epl_porosity;
+		case HydrologydcEplCompressibilityEnum:      return this->epl_compressibility;
+		case HydrologydcEplConductivityEnum:         return this->epl_conductivity;
+		case HydrologydcEplInitialThicknessEnum:     return this->epl_init_thickness;
+		case HydrologydcEplColapseThicknessEnum:     return this->epl_colapse_thickness;
+		case HydrologydcEplMaxThicknessEnum:         return this->epl_max_thickness;
+		case HydrologydcWaterCompressibilityEnum:    return this->water_compressibility;
+		case ConstantsGEnum:                         return this->g;
+		case SmbDesfacEnum:              return this->desfac;
+		case SmbRlapsEnum:               return this->rlaps;
+		case SmbRlapslgmEnum:            return this->rlapslgm;
+		case SmbDpermilEnum:             return this->dpermil;
+		case MaterialsLithosphereShearModulusEnum:   return this->lithosphere_shear_modulus;
+		case MaterialsLithosphereDensityEnum:        return this->lithosphere_density;
+		case MaterialsMantleDensityEnum:             return this->mantle_density;
+		case MaterialsMantleShearModulusEnum:        return this->mantle_shear_modulus;
+		case MaterialsEarthDensityEnum:              return this->earth_density;
+		default: _error_("Enum "<<EnumToStringx(enum_in)<<" not supported yet");
+	}
+
+}
+/*}}}*/
+IssmDouble Matpar::PureIceEnthalpy(IssmDouble pressure){/*{{{*/
+	return heatcapacity*(TMeltingPoint(pressure)-referencetemperature);
+}
+/*}}}*/
+void       Matpar::ResetHooks(){/*{{{*/
+
+	//Nothing to be done
+	return;
+}
+/*}}}*/
+void       Matpar::ThermalToEnthalpy(IssmDouble * penthalpy,IssmDouble temperature,IssmDouble waterfraction,IssmDouble pressure){/*{{{*/
+
+	/*Ouput*/
+	IssmDouble enthalpy;
+
+	if(temperature<TMeltingPoint(pressure)){
+		enthalpy=heatcapacity*(temperature-referencetemperature);
+	}
+	else{
+		enthalpy=PureIceEnthalpy(pressure)+latentheat*waterfraction;
+	}
+
+	/*Assign output pointers:*/
+	*penthalpy=enthalpy;
+}
+/*}}}*/
+IssmDouble Matpar::TMeltingPoint(IssmDouble pressure){/*{{{*/
+	return meltingpoint-beta*pressure;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Matpar.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Matpar.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Materials/Matpar.h	(revision 21239)
@@ -0,0 +1,138 @@
+/*!\file Matpar.h
+ * \brief: header file for matpar object
+ */
+
+#ifndef _MATPAR_H_
+#define _MATPAR_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Material.h"
+class IoModel;
+/*}}}*/
+
+class Matpar: public Material{
+
+	private: 
+		int	      mid;
+		IssmDouble  rho_ice; 
+		IssmDouble  rho_water;
+		IssmDouble  rho_freshwater;
+		IssmDouble  mu_water;
+		IssmDouble  heatcapacity;
+		IssmDouble  thermalconductivity;
+		IssmDouble  temperateiceconductivity;
+		IssmDouble  latentheat;
+		IssmDouble  beta;
+		IssmDouble  meltingpoint;
+		IssmDouble  referencetemperature;
+		IssmDouble  mixed_layer_capacity;
+		IssmDouble  thermal_exchange_velocity;
+		IssmDouble  g;
+		IssmDouble  omega;
+		IssmDouble  desfac;
+		IssmDouble  rlaps;
+		IssmDouble  rlapslgm;
+		IssmDouble  dpermil;
+
+		/*albedo: */
+		IssmDouble albedo_ice;
+		IssmDouble albedo_snow;
+
+		/*hydrology Dual Porous Continuum: */	 
+		IssmDouble  sediment_compressibility;
+		IssmDouble  sediment_porosity;	 
+		IssmDouble  sediment_thickness;
+		IssmDouble  water_compressibility;
+
+		IssmDouble  epl_compressibility;
+		IssmDouble  epl_porosity;
+		IssmDouble  epl_init_thickness;
+		IssmDouble  epl_colapse_thickness;
+		IssmDouble  epl_max_thickness;
+		IssmDouble  epl_conductivity;	 
+
+		/*gia: */
+		IssmDouble lithosphere_shear_modulus;
+		IssmDouble lithosphere_density;
+		IssmDouble mantle_shear_modulus;
+		IssmDouble mantle_density;
+
+		/*slr:*/
+		IssmDouble earth_density;
+
+		/*Sea ice*/
+		IssmDouble poisson;
+		IssmDouble young_modulus;
+		IssmDouble ridging_exponent;
+		IssmDouble cohesion;
+		IssmDouble internal_friction_coef;
+		IssmDouble compression_coef;
+		IssmDouble traction_coef;
+		IssmDouble time_relaxation_stress;
+		IssmDouble time_relaxation_damage;
+
+	public:
+		Matpar();
+		Matpar(int matpar_id, IoModel* iomodel);
+		~Matpar();
+
+		/*Object virtual functions definitions:{{{ */
+		Object *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int     ObjectEnum();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{*/
+		void   InputUpdateFromConstant(IssmDouble constant, int name);
+		void   InputUpdateFromConstant(int constant, int name);
+		void   InputUpdateFromConstant(bool constant, int name);
+		void   InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented");};
+		void   InputUpdateFromMatrixDakota(IssmDouble* matrix,int nrows,int ncols, int name, int type);
+		void   InputUpdateFromVector(IssmDouble* vector, int name, int type);
+		void   InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type);
+		/*}}}*/
+		/*Material virtual functions resolution: {{{*/
+		Material*  copy2(Element* element){_error_("not implemented");};
+		void       Configure(Elements* elements);
+		void       GetViscosity(IssmDouble* pviscosity,IssmDouble eps_eff){_error_("not supported");};
+		void       GetViscosityBar(IssmDouble* pviscosity,IssmDouble eps_eff){_error_("not supported");};
+		void       GetViscosityComplement(IssmDouble* pviscosity_complement, IssmDouble* pepsilon){_error_("not supported");};
+		void       GetViscosityDComplement(IssmDouble* pviscosity_complement, IssmDouble* pepsilon){_error_("not supported");};
+		void       GetViscosityDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* pepsilon){_error_("not supported");};
+		void       GetViscosity_B(IssmDouble* pviscosity,IssmDouble eps_eff){_error_("not supported");};
+		void       GetViscosity_D(IssmDouble* pviscosity,IssmDouble eps_eff){_error_("not supported");};
+		void       GetViscosity2dDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* pepsilon){_error_("not supported");};
+		IssmDouble GetA(){_error_("not supported");};
+		IssmDouble GetAbar(){_error_("not supported");};
+		IssmDouble GetB(){_error_("not supported");};
+		IssmDouble GetBbar(){_error_("not supported");};
+		IssmDouble GetD(){_error_("not supported");};
+		IssmDouble GetDbar(){_error_("not supported");};
+		IssmDouble GetN(){_error_("not supported");};
+		bool       IsDamage(){_error_("not supported");};
+		void       ResetHooks();
+
+		void       ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not supported");};
+		void       ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){_error_("not supported");};
+		void       ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not supported");};
+		void       ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){_error_("not supported");};
+		void       ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf){_error_("not supported");};
+		void       ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not supported");};
+		void       ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){_error_("not supported");};
+		/*}}}*/
+		/*Numerics: {{{*/
+		void       EnthalpyToThermal(IssmDouble* ptemperature,IssmDouble* pwaterfraction,IssmDouble enthalpy,IssmDouble pressure);
+		IssmDouble GetEnthalpyDiffusionParameter(IssmDouble enthalpy,IssmDouble pressure);
+		IssmDouble GetEnthalpyDiffusionParameterVolume(int numvertices,IssmDouble* enthalpy,IssmDouble* pressure);
+		IssmDouble GetMaterialParameter(int in_enum); 
+		IssmDouble PureIceEnthalpy(IssmDouble pressure);
+		void       ThermalToEnthalpy(IssmDouble* penthalpy,IssmDouble temperature,IssmDouble waterfraction,IssmDouble pressure);
+		IssmDouble TMeltingPoint(IssmDouble pressure);
+		/*}}}*/
+
+};
+
+#endif  /* _MATPAR_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Misfit.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Misfit.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Misfit.h	(revision 21239)
@@ -0,0 +1,198 @@
+/*!\file Misfit.h
+ * \brief: header file for Misfit object
+ */
+
+#ifndef _MISFIT_H_
+#define _MISFIT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Definition.h"
+#include "../datastructures/datastructures.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "../modules/SurfaceAreax/SurfaceAreax.h"
+#include "../classes/Params/Parameters.h"
+#include "../classes/Inputs/Input.h"
+#include "../classes/gauss/Gauss.h"
+/*}}}*/
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum);
+
+class Misfit: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		bool        local;     
+		int         model_enum;
+		char*       name;
+		int         observation_enum;
+		char*       timeinterpolation;
+		int         weights_enum;
+		
+		int         lock; // if lock is on, we just return the value stored in "misfit".  this is used so we don't compute misfit past the final_time
+		IssmDouble  misfit; //value carried over in time.
+		
+		/*Misfit constructors, destructors :*/
+		Misfit(){/*{{{*/
+
+			this->definitionenum = -1;
+			this->name = NULL;
+			this->model_enum = UNDEF;
+			this->observation_enum = UNDEF;
+			this->weights_enum = UNDEF;
+			this->timeinterpolation=NULL;
+			this->local=true;
+			this->misfit=0;
+			this->lock=0;
+
+		}
+		/*}}}*/
+		Misfit(char* in_name, int in_definitionenum, int in_model_enum, int in_observation_enum, char* in_timeinterpolation, bool in_local, int in_weights_enum){/*{{{*/
+
+			this->definitionenum=in_definitionenum;
+			
+			this->name		= xNew<char>(strlen(in_name)+1);
+			xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+			this->timeinterpolation = xNew<char>(strlen(in_timeinterpolation)+1);
+			xMemCpy<char>(this->timeinterpolation,in_timeinterpolation,strlen(in_timeinterpolation)+1);
+						
+			this->model_enum=in_model_enum;
+			this->observation_enum=in_observation_enum;
+			this->weights_enum=in_weights_enum;
+			this->local=in_local;
+			
+			this->misfit=0;
+			this->lock=0;
+		}
+		/*}}}*/
+		~Misfit(){/*{{{*/
+			if(this->name)xDelete(this->name);
+			if(this->timeinterpolation)xDelete(this->timeinterpolation);
+			this->misfit=0;
+			this->lock=0;
+		}
+		/*}}}*/
+		/*Object virtual function resolutoin: */
+		Object* copy() {/*{{{*/
+			Misfit* mf = new Misfit(this->name,this->definitionenum, this->model_enum,this->observation_enum,this->timeinterpolation,this->local,this->weights_enum);
+			mf->misfit=this->misfit;
+			mf->lock=this->lock;
+			return (Object*) mf;
+		}
+		/*}}}*/
+		void DeepEcho(void){/*{{{*/
+			this->Echo();
+		}
+		/*}}}*/
+		void Echo(void){/*{{{*/
+			_printf_(" Misfit: " << name << " " << this->definitionenum << "\n");
+			_printf_("    model_enum: " << model_enum << " " << EnumToStringx(model_enum) << "\n");
+			_printf_("    observation_enum: " << observation_enum << " " << EnumToStringx(observation_enum) << "\n");
+			_printf_("    weights_enum: " << weights_enum << " " << EnumToStringx(weights_enum) << "\n");
+			_printf_("    timeinterpolation: " << timeinterpolation << "\n");
+			_printf_("    local: " << local << "\n");
+		}
+		/*}}}*/
+		int Id(void){/*{{{*/
+			return -1;
+		}
+		/*}}}*/
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
+		int ObjectEnum(void){/*{{{*/
+			return MisfitEnum;
+		}
+		/*}}}*/
+		/*Definition virtual function resolutoin: */
+		int DefinitionEnum(){/*{{{*/
+			return this->definitionenum;
+		}
+		/*}}}*/
+		char* Name(){/*{{{*/
+			char* name2=xNew<char>(strlen(this->name)+1);
+			xMemCpy(name2,this->name,strlen(this->name)+1);
+
+			return name2;
+		}
+		/*}}}*/
+		 IssmDouble Response(FemModel* femmodel){/*{{{*/
+				 
+			 /*diverse: */
+			 IssmDouble time,starttime,finaltime;
+			 IssmDouble dt;
+			 
+			 /*recover time parameters: */
+			 femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum);
+			 femmodel->parameters->FindParam(&finaltime,TimesteppingFinalTimeEnum);
+			 femmodel->parameters->FindParam(&time,TimeEnum);
+			 femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+
+			 if (this->local){ /*local computation: {{{*/
+
+				 int i;
+				 IssmDouble misfit_t=0.;
+				 IssmDouble all_misfit_t=0.;
+				 IssmDouble area_t=0.;
+				 IssmDouble all_area_t;
+
+			
+				 /*If we are locked, return time average: */
+				 if(this->lock)return misfit/(time-starttime);
+
+				 for(i=0;i<femmodel->elements->Size();i++){
+					 Element* element=(Element*)femmodel->elements->GetObjectByOffset(i);
+					 misfit_t+=element->Misfit(model_enum,observation_enum,weights_enum);
+					 area_t+=element->MisfitArea(weights_enum);
+				 }
+
+				 ISSM_MPI_Allreduce ( (void*)&misfit_t,(void*)&all_misfit_t,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+				 ISSM_MPI_Allreduce ( (void*)&area_t,(void*)&all_area_t,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+				 area_t=all_area_t;
+				 misfit_t=all_misfit_t;
+				 
+				 /*Divide by surface area if not nill!: */
+				 if (area_t!=0) misfit_t=misfit_t/area_t;
+
+				 /*Add this time's contribution to curent misfit: */
+				 misfit+=dt*misfit_t;
+
+				 /*Do we lock? i.e. are we at final_time? :*/
+				 if(time==finaltime)this->lock=1;
+
+				 /*What we return is the value of misfit / time: */
+				 return misfit/(time-starttime);
+			 } /*}}}*/
+			 else{ /*global computation: {{{ */
+				 
+				 IssmDouble model, observation;
+				 
+				 /*If we are locked, return time average: */
+				 if(this->lock)return misfit/(time-starttime);
+
+				 /*First, the global  model response: */
+				 model=OutputDefinitionsResponsex(femmodel,this->model_enum);
+				 /*Now, the observation is buried inside the elements, go fish it in the first element (cludgy, needs fixing): */
+				 Element* element=(Element*)femmodel->elements->GetObjectByOffset(0); _assert_(element);
+				 Input* input = element->GetInput(observation_enum); _assert_(input);
+				 input->GetInputAverage(&observation);
+				 
+				 /*Add this time's contribution to curent misfit: */
+				 misfit+=dt*(model-observation);
+				 
+				 /*Do we lock? i.e. are we at final_time? :*/
+				 if(time==finaltime)this->lock=1;
+				 
+				 /*What we return is the value of misfit / time: */
+				 return misfit/(time-starttime);
+			 } /*}}}*/
+
+		 }
+			/*}}}*/
+};
+
+#endif  /* _MISFIT_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Nodalvalue.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Nodalvalue.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Nodalvalue.h	(revision 21239)
@@ -0,0 +1,117 @@
+/*!\file Nodalvalue.h
+ * \brief: header file for Nodalvalue object
+ */
+
+#ifndef _NODALVALUE_H_
+#define _NODALVALUE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Definition.h"
+#include "../datastructures/datastructures.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "../modules/SurfaceAreax/SurfaceAreax.h"
+#include "../classes/Params/Parameters.h"
+#include "../classes/Inputs/Input.h"
+#include "../classes/gauss/Gauss.h"
+/*}}}*/
+
+void NodalValuex( IssmDouble* pnodalvalue, int natureofdataenum,Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum);
+
+class Nodalvalue: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		int         model_enum;
+		char*       name;
+		int         node;
+		
+		/*Nodalvalue constructors, destructors :*/
+		Nodalvalue(){/*{{{*/
+
+			this->definitionenum = -1;
+			this->name = NULL;
+			this->model_enum = UNDEF;
+			this->node = -1;
+
+		}
+		/*}}}*/
+		Nodalvalue(char* in_name, int in_definitionenum, int in_model_enum, int in_node){/*{{{*/
+
+			this->definitionenum=in_definitionenum;
+			this->name   = xNew<char>(strlen(in_name)+1);
+			xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+			this->model_enum=in_model_enum;
+			this->node=in_node;
+		}
+		/*}}}*/
+		~Nodalvalue(){/*{{{*/
+			if(this->name)xDelete(this->name);
+		}
+		/*}}}*/
+		/*Object virtual function resolutoin: */
+		Object* copy() {/*{{{*/
+			Nodalvalue* mf = new Nodalvalue(this->name,this->definitionenum, this->model_enum,this->node);
+			return (Object*) mf;
+		}
+		/*}}}*/
+		void DeepEcho(void){/*{{{*/
+			this->Echo();
+		}
+		/*}}}*/
+		void Echo(void){/*{{{*/
+			_printf_(" Nodalvalue: " << name << " " << this->definitionenum << "\n");
+			_printf_("    model_enum: " << model_enum << " " << EnumToStringx(model_enum) << "\n");
+			_printf_("    node: " << node << "\n");
+		}
+		/*}}}*/
+		int Id(void){/*{{{*/
+			return -1;
+		}
+		/*}}}*/
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
+		int ObjectEnum(void){/*{{{*/
+			return NodalvalueEnum;
+		}
+		/*}}}*/
+		/*Definition virtual function resolutoin: */
+		int DefinitionEnum(){/*{{{*/
+
+			return this->definitionenum;
+		}
+		/*}}}*/
+		char* Name(){/*{{{*/
+
+			char* name2=xNew<char>(strlen(this->name)+1);
+			xMemCpy(name2,this->name,strlen(this->name)+1);
+
+			return name2;
+		}
+		/*}}}*/
+		 IssmDouble Response(FemModel* femmodel){/*{{{*/
+			
+			 /*output:*/
+			 IssmDouble value;
+
+			 /*set index, which will be used by the NodalValue module: */
+			 femmodel->parameters->SetParam(node,IndexEnum);
+
+			 /*call Nodalvalue:*/
+			 NodalValuex(&value, model_enum, femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, 
+					 femmodel->materials, femmodel->parameters);
+
+			 /*done:*/
+			 return value;
+		 }
+		 /*}}}*/
+};
+
+#endif  /* _NODALVALUE_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Node.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Node.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Node.cpp	(revision 21239)
@@ -0,0 +1,914 @@
+/*!\file Node.c
+ * \brief: implementation of the Node object
+ */
+
+/*Include files: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./classes.h"
+#include "shared/shared.h"
+#include "modules/ModelProcessorx/ModelProcessorx.h"
+#include "../analyses/analyses.h"
+/*}}}*/
+
+/*Node constructors and destructors:*/
+Node::Node(){/*{{{*/
+	this->approximation=0;
+}
+/*}}}*/
+Node::Node(int node_id,int node_sid,int node_lid,int io_index, IoModel* iomodel,int analysis_enum,int in_approximation){/*{{{*/
+
+	/*Intermediary*/
+	int k,l;
+	int *doftypes = NULL;
+
+	/*id: */
+	this->id            = node_id;
+	this->sid           = node_sid;
+	this->lid           = node_lid;
+	this->analysis_enum = analysis_enum;
+
+	/*Initialize coord_system: Identity matrix by default*/
+	for(k=0;k<3;k++) for(l=0;l<3;l++) this->coord_system[k][l]=0.0;
+	for(k=0;k<3;k++) this->coord_system[k][k]=1.0;
+
+	/*indexing:*/
+	this->indexingupdate = true;
+
+	Analysis* analysis = EnumToAnalysis(analysis_enum);
+	int numdofs        = analysis->DofsPerNode(&doftypes,iomodel->domaintype,in_approximation);
+	indexing.Init(numdofs,doftypes);
+	xDelete<int>(doftypes);
+	delete analysis;
+
+	if(analysis_enum==StressbalanceAnalysisEnum)
+	 this->approximation=in_approximation;
+	else
+	 this->approximation=0;
+
+	/*Stressbalance Horiz*/
+	if(analysis_enum==StressbalanceAnalysisEnum){
+
+		/*Coordinate system provided, convert to coord_system matrix*/
+		_assert_(iomodel->Data("md.stressbalance.referential")); 
+		XZvectorsToCoordinateSystem(&this->coord_system[0][0],&iomodel->Data("md.stressbalance.referential")[io_index*6]);
+		_assert_(sqrt( coord_system[0][0]*coord_system[0][0] + coord_system[1][0]*coord_system[1][0]) >1.e-4);
+
+		if(iomodel->domaintype!=Domain2DhorizontalEnum & iomodel->domaintype!=Domain3DsurfaceEnum){
+			/*We have a  3d mesh, we may have collapsed elements, hence dead nodes. Freeze them out: */
+			_assert_(iomodel->Data("md.mesh.vertexonbase")); 
+			_assert_(iomodel->Data("md.flowequation.vertex_equation"));
+			if(in_approximation==SSAApproximationEnum && !reCast<int>(iomodel->Data("md.mesh.vertexonbase")[io_index])){
+				this->HardDeactivate();
+			}
+			if(in_approximation==L1L2ApproximationEnum && !reCast<int>(iomodel->Data("md.mesh.vertexonbase")[io_index])){
+				this->HardDeactivate();
+			}
+			if(in_approximation==SSAHOApproximationEnum && reCast<int>(iomodel->Data("md.flowequation.borderSSA")[io_index])){
+				if(!reCast<int>(iomodel->Data("md.mesh.vertexonbase")[io_index])){
+					this->HardDeactivate();
+				}
+			}
+			if(in_approximation==SSAFSApproximationEnum && reCast<int>(iomodel->Data("md.flowequation.borderSSA")[io_index])){
+				if(!reCast<int>(iomodel->Data("md.mesh.vertexonbase")[io_index])){
+					for(k=0;k<=1;k++) this->FreezeDof(k);
+				}
+			}
+		}
+		/*spc all nodes on SIA*/
+		if(in_approximation==SIAApproximationEnum){
+			this->HardDeactivate();
+		}
+	}
+
+	/*2d solutions in 3d, we need to constrain all the nodes that are not on base*/
+	if(
+				analysis_enum==FreeSurfaceBaseAnalysisEnum || 
+				analysis_enum==MasstransportAnalysisEnum || 
+				analysis_enum==MeltingAnalysisEnum || 
+				analysis_enum==L2ProjectionBaseAnalysisEnum || 
+				analysis_enum==BalancethicknessAnalysisEnum ||
+				analysis_enum==HydrologyDCInefficientAnalysisEnum ||
+				analysis_enum==HydrologyDCEfficientAnalysisEnum ||
+				analysis_enum==LevelsetAnalysisEnum
+				){
+		if(iomodel->domaintype!=Domain2DhorizontalEnum & iomodel->domaintype!=Domain3DsurfaceEnum & iomodel->domaintype!=Domain3DsurfaceEnum){
+			/*On a 3d mesh, we may have collapsed elements, hence dead nodes. Freeze them out: */
+			_assert_(iomodel->Data("md.mesh.vertexonbase"));
+			if(!(reCast<bool>(iomodel->Data("md.mesh.vertexonbase")[io_index]))){
+				this->HardDeactivate();
+			}
+		}
+	}
+	if(
+				analysis_enum==FreeSurfaceTopAnalysisEnum
+				){
+		if(iomodel->domaintype!=Domain2DhorizontalEnum){
+			/*On a 3d mesh, we may have collapsed elements, hence dead nodes. Freeze them out: */
+			_assert_(iomodel->Data("md.mesh.vertexonsurface"));
+			if(!(reCast<bool>(iomodel->Data("md.mesh.vertexonsurface")[io_index]))){
+				this->HardDeactivate();
+			}
+		}
+	}
+
+}
+/*}}}*/
+Node::~Node(){/*{{{*/
+	return;
+}
+/*}}}*/
+Object* Node::copy(void){/*{{{*/
+
+	int k,l;
+
+	/*output: */
+	Node* output=NULL;
+
+	/*initalize output: */
+	output=new Node();
+
+	/*id: */
+	output->id  = this->id;
+	output->sid = this->sid;
+	output->lid = this->lid;
+	output->analysis_enum = this->analysis_enum;
+	output->approximation = this->approximation;
+
+	/*Initialize coord_system: */
+	for(k=0;k<3;k++) for(l=0;l<3;l++) output->coord_system[k][l]=this->coord_system[k][l];
+
+	/*indexing:*/
+	output->indexingupdate = this->indexingupdate;
+	output->indexing.copy(this->indexing);
+
+	return (Object*)output; 
+}
+/*}}}*/
+void Node::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(NodeEnum);
+	MARSHALLING(id);
+	MARSHALLING(sid);
+	MARSHALLING(lid);
+	MARSHALLING(indexingupdate);
+	indexing.Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	MARSHALLING(analysis_enum);
+	MARSHALLING_ARRAY(coord_system,IssmDouble,9);
+
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+void Node::DeepEcho(void){/*{{{*/
+
+	_printf_("Node:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   sid: " << sid << "\n");
+	_printf_("   analysis_enum: " << EnumToStringx(analysis_enum) << "\n");
+	_printf_("   approximation: " << EnumToStringx(approximation) << "\n");
+	_printf_("   indexingupdate: " << indexingupdate << "\n");
+	indexing.DeepEcho();
+
+}
+/*}}}*/
+void Node::Echo(void){/*{{{*/
+
+	_printf_("Node:\n");
+	_printf_("   id : " << id << "\n");
+	_printf_("   sid: " << sid << "\n");
+	_printf_("   analysis_enum: " << EnumToStringx(analysis_enum) << "\n");
+	_printf_("   approximation: " << EnumToStringx(approximation) << "\n");
+	_printf_("   indexingupdate: " << indexingupdate << "\n");
+	indexing.Echo();
+
+}
+/*}}}*/
+int  Node::Id(void){ return id; }/*{{{*/
+/*}}}*/
+int  Node::ObjectEnum(void){/*{{{*/
+
+	return NodeEnum;
+
+}
+/*}}}*/
+
+/*Node management:*/
+void Node::GetCoordinateSystem(IssmDouble* coord_system_out){/*{{{*/
+
+	/*Copy coord_system*/
+	for(int k=0;k<3;k++) for(int l=0;l<3;l++) coord_system_out[3*k+l]=this->coord_system[k][l];
+
+}
+/*}}}*/
+int  Node::GetDof(int dofindex,int setenum){/*{{{*/
+
+	_assert_(!this->indexingupdate);
+	if(setenum==GsetEnum){
+		_assert_(dofindex>=0 && dofindex<indexing.gsize);
+		return indexing.gdoflist[dofindex];
+	}
+	else if(setenum==FsetEnum){
+		_assert_(dofindex>=0 && dofindex<indexing.fsize);
+		return indexing.fdoflist[dofindex];
+	}
+	else if(setenum==SsetEnum){
+		_assert_(dofindex>=0 && dofindex<indexing.ssize);
+		return indexing.sdoflist[dofindex];
+	}
+	else _error_("set of enum type " << EnumToStringx(setenum) << " not supported yet!");
+
+} /*}}}*/
+void Node::GetDofList(int* outdoflist,int approximation_enum,int setenum){/*{{{*/
+	int i;
+	int count=0;
+	int count2=0;
+
+	_assert_(!this->indexingupdate);
+
+	if(approximation_enum==NoneApproximationEnum){
+		if(setenum==GsetEnum)for(i=0;i<this->indexing.gsize;i++) outdoflist[i]=indexing.gdoflist[i];
+		if(setenum==FsetEnum)for(i=0;i<this->indexing.fsize;i++) outdoflist[i]=indexing.fdoflist[i];
+		if(setenum==SsetEnum)for(i=0;i<this->indexing.ssize;i++) outdoflist[i]=indexing.sdoflist[i];
+	}
+	else{
+
+		if(setenum==GsetEnum){
+			if(indexing.doftype){
+				count=0;
+				for(i=0;i<this->indexing.gsize;i++){
+					if(indexing.doftype[i]==approximation_enum){
+						outdoflist[count]=indexing.gdoflist[i];
+						count++;
+					}
+				}
+				_assert_(count); //at least one dof should be the approximation requested
+			}
+			else for(i=0;i<this->indexing.gsize;i++) outdoflist[i]=indexing.gdoflist[i];
+		}
+		else if(setenum==FsetEnum){
+			if(indexing.doftype){
+				count=0;
+				count2=0;
+				for(i=0;i<this->indexing.gsize;i++){
+					if(indexing.f_set[i]){
+						if(indexing.doftype[i]==approximation_enum){
+							outdoflist[count]=indexing.fdoflist[count2];
+							count++;
+						}
+						count2++;
+					}
+				}
+			}
+			else for(i=0;i<this->indexing.fsize;i++) outdoflist[i]=indexing.fdoflist[i];
+		}
+		else if(setenum==SsetEnum){
+			if(indexing.doftype){
+				count=0;
+				count2=0;
+				for(i=0;i<this->indexing.gsize;i++){
+					if(indexing.s_set[i]){
+						if(indexing.doftype[i]==approximation_enum){
+							outdoflist[count]=indexing.sdoflist[count2];
+							count++;
+						}
+						count2++;
+					}
+				}
+			}
+			else for(i=0;i<this->indexing.ssize;i++) outdoflist[i]=indexing.sdoflist[i];
+		}
+		else _error_("set of enum type " << EnumToStringx(setenum) << " not supported yet!");
+	}
+}
+/*}}}*/
+void Node::GetLocalDofList(int* outdoflist,int approximation_enum,int setenum){/*{{{*/
+	int i;
+	int count=0;
+	int count2=0;
+
+	_assert_(!this->indexingupdate);
+
+	if(approximation_enum==NoneApproximationEnum){
+		if(setenum==GsetEnum)for(i=0;i<this->indexing.gsize;i++) outdoflist[i]=i;
+		else if(setenum==FsetEnum){
+			count=0;
+			for(i=0;i<this->indexing.gsize;i++){
+				if(indexing.f_set[i]){
+					outdoflist[count]=i;
+					count++;
+				}
+			}
+		}
+		else if(setenum==SsetEnum){
+			count=0;
+			for(i=0;i<this->indexing.gsize;i++){
+				if(indexing.s_set[i]){
+					outdoflist[count]=i;
+					count++;
+				}
+			}
+		}
+		else _error_("set of enum type " << EnumToStringx(setenum) << " not supported yet!");
+	}
+	else{
+
+		if(setenum==GsetEnum){
+			if(indexing.doftype){
+				count=0;
+				for(i=0;i<this->indexing.gsize;i++){
+					if(indexing.doftype[i]==approximation_enum){
+						outdoflist[count]=count;
+						count++;
+					}
+				}
+				_assert_(count);
+			}
+			else for(i=0;i<this->indexing.gsize;i++) outdoflist[i]=i;
+		}
+		else if(setenum==FsetEnum){
+
+			if(indexing.doftype){
+				count=0;
+				count2=0;
+				for(i=0;i<this->indexing.gsize;i++){
+					if(indexing.doftype[i]==approximation_enum){
+						if(indexing.f_set[i]){
+							outdoflist[count]=count2;
+							count++;
+						}
+						count2++;
+					}
+				}
+				_assert_(count2);
+			}
+			else{
+
+				count=0;
+				for(i=0;i<this->indexing.gsize;i++){
+					if(indexing.f_set[i]){
+						outdoflist[count]=i;
+						count++;
+					}
+				}
+			}
+		}
+		else if(setenum==SsetEnum){
+			if(indexing.doftype){
+				count=0;
+				count2=0;
+				for(i=0;i<this->indexing.gsize;i++){
+					if(indexing.doftype[i]==approximation_enum){
+						if(indexing.s_set[i]){
+							outdoflist[count]=count2;
+							count++;
+						}
+						count2++;
+					}
+				}
+				_assert_(count2);
+			}
+			else{
+				count=0;
+				for(i=0;i<this->indexing.gsize;i++){
+					if(indexing.s_set[i]){
+						outdoflist[count]=i;
+						count++;
+					}
+				}
+			}
+		}
+		else _error_("set of enum type " << EnumToStringx(setenum) << " not supported yet!");
+	}
+}
+/*}}}*/
+bool Node::InAnalysis(int in_analysis_enum){/*{{{*/
+	if (in_analysis_enum==this->analysis_enum) return true;
+	else return false;
+}
+/*}}}*/
+int  Node::Lid(void){/*{{{*/
+	return lid; 
+}
+/*}}}*/
+int  Node::Sid(void){/*{{{*/
+	return sid; 
+}
+/*}}}*/
+
+/*Node numerics:*/
+void Node::Activate(void){/*{{{*/
+
+	if(!IsActive() && !this->indexing.freeze){
+		this->indexingupdate = true;
+		indexing.Activate();
+	}
+
+}
+/*}}}*/
+void Node::ApplyConstraint(int dof,IssmDouble value){/*{{{*/
+
+	/*Dof should be added in the s set, describing which 
+	 * dofs are constrained to a certain value (dirichlet boundary condition*/
+	DofInSSet(dof);
+	this->indexing.svalues[dof]=value;
+}
+/*}}}*/
+void Node::CreateNodalConstraints(Vector<IssmDouble>* ys){/*{{{*/
+
+	int i;
+	IssmDouble* values=NULL;
+	int count;
+
+	/*Recover values for s set and plug them in constraints vector: */
+	if(this->indexing.ssize){
+		values=xNew<IssmDouble>(this->indexing.ssize);
+		count=0;
+		for(i=0;i<this->indexing.gsize;i++){
+			if(this->indexing.s_set[i]){
+				values[count]=this->indexing.svalues[i];
+				_assert_(!xIsNan<IssmDouble>(values[count]));
+				count++;
+			}
+		}
+
+		/*Add values into constraint vector: */
+		ys->SetValues(this->indexing.ssize,this->indexing.sdoflist,values,INS_VAL);
+	}
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(values);
+
+}
+/*}}}*/
+void Node::Deactivate(void){/*{{{*/
+
+	if(IsActive() && !this->indexing.freeze){
+		this->indexingupdate = true;
+		indexing.Deactivate();
+	}
+
+}
+/*}}}*/
+void Node::DofInFSet(int dof){/*{{{*/
+
+	/*Put dof for this node into the f set (ie, this dof will NOT be constrained 
+	 * to a fixed value during computations. */
+	_assert_(dof<this->indexing.gsize);
+
+	if(this->indexing.f_set[dof] == 0){
+		if(this->indexing.freeze) _error_("Cannot change dof of frozen node");
+		this->indexingupdate = true;
+		this->indexing.f_set[dof]=1; 
+		this->indexing.s_set[dof]=0;
+	}
+}
+/*}}}*/
+void Node::DofInSSet(int dof){/*{{{*/
+
+	/*Put dof for this node into the s set (ie, this dof will be constrained 
+	 * to a fixed value during computations. */
+	_assert_(dof<this->indexing.gsize);
+
+	if(this->indexing.f_set[dof] == 1){
+		//if(this->indexing.freeze) _error_("Cannot change dof of frozen node");
+		this->indexingupdate = true;
+		this->indexing.f_set[dof]=0; //n splits into f (for which we solve) and s (single point constraints)
+		this->indexing.s_set[dof]=1;
+	}
+}
+/*}}}*/
+void Node::FreezeDof(int dof){/*{{{*/
+
+	DofInSSet(dof); //with 0 displacement for this dof.
+	//FIXME: for now we don't want this element to change so we use freeze
+	this->indexing.freeze =true;
+
+}
+/*}}}*/
+int  Node::GetApproximation(){/*{{{*/
+
+	return approximation;
+}
+/*}}}*/
+int  Node::GetNumberOfDofs(int approximation_enum,int setenum){/*{{{*/
+
+	/*Get number of degrees of freedom in a node, for a certain set (g,f or s-set)
+	 *and for a certain approximation type: */
+
+	int i;
+	int numdofs=0;
+
+	if(approximation_enum==NoneApproximationEnum){
+		if      (setenum==GsetEnum) numdofs=this->indexing.gsize;
+		else if (setenum==FsetEnum) numdofs=this->indexing.fsize;
+		else if (setenum==SsetEnum) numdofs=this->indexing.ssize;
+		else _error_("set of enum type " << EnumToStringx(setenum) << " not supported yet!");
+	}
+	else{
+		if(setenum==GsetEnum){
+			if(this->indexing.doftype){
+				numdofs=0;
+				for(i=0;i<this->indexing.gsize;i++){
+					if(this->indexing.doftype[i]==approximation_enum) numdofs++;
+				}
+			}
+			else numdofs=this->indexing.gsize;
+		}
+		else if (setenum==FsetEnum){
+			if(this->indexing.doftype){
+				numdofs=0;
+				for(i=0;i<this->indexing.gsize;i++){
+					if((this->indexing.doftype[i]==approximation_enum) && (this->indexing.f_set[i])) numdofs++;
+				}
+			}
+			else numdofs=this->indexing.fsize;
+		}
+		else if (setenum==SsetEnum){
+			if(this->indexing.doftype){
+			numdofs=0;
+				for(i=0;i<this->indexing.gsize;i++){
+					if((this->indexing.doftype[i]==approximation_enum) && (this->indexing.s_set[i])) numdofs++;
+				}
+			}
+			else numdofs=this->indexing.ssize;
+		}
+		else _error_("set of enum type " << EnumToStringx(setenum) << " not supported yet!");
+	}
+	return numdofs;
+}
+/*}}}*/
+void Node::HardDeactivate(void){/*{{{*/
+
+	this->indexing.Deactivate();
+	this->indexing.freeze =true;
+
+}
+/*}}}*/
+bool Node::IsActive(void){/*{{{*/
+
+	return indexing.active;
+
+}
+/*}}}*/
+int  Node::IsClone(){/*{{{*/
+
+	return indexing.clone;
+
+}
+/*}}}*/
+void Node::ReindexingDone(void){/*{{{*/
+
+	this->indexingupdate = false;
+
+}
+/*}}}*/
+void Node::RelaxConstraint(int dof){/*{{{*/
+
+	/*Dof should be added to the f-set, and taken out of the s-set:*/
+	DofInFSet(dof);
+	this->indexing.svalues[dof]=0.;
+}
+/*}}}*/
+bool Node::RequiresDofReindexing(void){/*{{{*/
+
+	return this->indexingupdate;
+
+}
+/*}}}*/
+void Node::VecMerge(Vector<IssmDouble>* ug, IssmDouble* vector_serial,int setenum){/*{{{*/
+
+	IssmDouble *values  = NULL;
+	int        *indices = NULL;
+	int         count   = 0;
+	int         i;
+
+	if(setenum==FsetEnum){
+		if(this->indexing.fsize){
+			indices=xNew<int>(this->indexing.fsize);
+ 			values=xNew<IssmDouble>(this->indexing.fsize);
+
+			for(i=0;i<this->indexing.gsize;i++){
+				if(this->indexing.f_set[i]){
+					_assert_(vector_serial);
+					values[count]=vector_serial[this->indexing.fdoflist[count]];
+					indices[count]=this->indexing.gdoflist[i];
+					count++;
+				}
+			}
+
+			/*Add values into ug: */
+			ug->SetValues(this->indexing.fsize,indices,values,INS_VAL);
+		}
+	}
+	else if(setenum==SsetEnum){
+		if(this->indexing.ssize){
+			indices=xNew<int>(this->indexing.ssize);
+			values=xNew<IssmDouble>(this->indexing.ssize);
+
+			for(i=0;i<this->indexing.gsize;i++){
+				if(this->indexing.s_set[i]){
+					_assert_(vector_serial);
+					values[count]=vector_serial[this->indexing.sdoflist[count]];
+					indices[count]=this->indexing.gdoflist[i];
+					count++;
+				}
+			}
+
+			/*Add values into ug: */
+			ug->SetValues(this->indexing.ssize,indices,values,INS_VAL);
+		}
+	}
+	else _error_("VecMerge can only merge from the s or f-set onto the g-set!");
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<int>(indices);
+}
+/*}}}*/
+void Node::VecReduce(Vector<IssmDouble>* vector, IssmDouble* ug_serial,int setenum){/*{{{*/
+
+	IssmDouble* values=NULL;
+	int     count=0;
+	int     i;
+
+	if(setenum==FsetEnum){
+		if(this->indexing.fsize){
+ 			values=xNew<IssmDouble>(this->indexing.fsize);
+
+			for(i=0;i<this->indexing.gsize;i++){
+				if(this->indexing.f_set[i]){
+					_assert_(ug_serial);
+					values[count]=ug_serial[this->indexing.gdoflist[i]];
+					count++;
+				}
+			}
+
+			/*Add values into ug: */
+			vector->SetValues(this->indexing.fsize,this->indexing.fdoflist,values,INS_VAL);
+		}
+	}
+	else if(setenum==SsetEnum){
+		if(this->indexing.ssize){
+			values=xNew<IssmDouble>(this->indexing.ssize);
+
+			for(i=0;i<this->indexing.gsize;i++){
+				if(this->indexing.s_set[i]){
+					_assert_(ug_serial);
+					values[count]=ug_serial[this->indexing.gdoflist[i]];
+					count++;
+				}
+			}
+
+			/*Add values into ug: */
+			vector->SetValues(this->indexing.ssize,this->indexing.sdoflist,values,INS_VAL);
+		}
+	}
+	else _error_("VecReduce can only merge from the s or f-set onto the g-set!");
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(values);
+}
+/*}}}*/
+
+/* indexing routines:*/
+void Node::DistributeDofs(int* pdofcount,int setenum){/*{{{*/
+
+	int i;
+	int dofcount;
+
+	dofcount=*pdofcount;
+
+	/*Initialize: */
+	if(setenum==FsetEnum) this->indexing.InitSet(setenum);
+	if(setenum==SsetEnum) this->indexing.InitSet(setenum);
+
+	/*For clone nodfs, don't distribute dofs, we will get them from another cpu in UpdateCloneDofs!*/
+	if(indexing.clone){
+		return;
+	}
+
+	/*This node should distribute dofs for setenum set (eg, f_set or s_set), go ahead: */
+	if(setenum==GsetEnum){
+		for(i=0;i<this->indexing.gsize;i++){
+			indexing.gdoflist[i]=dofcount+i;
+		}
+		dofcount+=this->indexing.gsize;
+	}
+	else if(setenum==FsetEnum){
+		for(i=0;i<this->indexing.fsize;i++){
+			indexing.fdoflist[i]=dofcount+i;
+		}
+		dofcount+=this->indexing.fsize;
+	}
+	else if(setenum==SsetEnum){
+		for(i=0;i<this->indexing.ssize;i++){
+			indexing.sdoflist[i]=dofcount+i;
+		}
+		dofcount+=this->indexing.ssize;
+	}
+	else _error_("set of enum type " << EnumToStringx(setenum) << " not supported yet!");
+
+	/*Assign output pointers: */
+	*pdofcount=dofcount;
+}
+/*}}}*/
+void Node::OffsetDofs(int dofcount,int setenum){/*{{{*/
+
+	int i;
+
+	if(indexing.clone){
+		/*This node is a clone, don't off_set the dofs!: */
+		return;
+	}
+
+	/*This node should off_set the dofs, go ahead: */
+	if(setenum==GsetEnum){
+		for(i=0;i<this->indexing.gsize;i++) indexing.gdoflist[i]+=dofcount;
+	}
+	else if(setenum==FsetEnum){
+		for(i=0;i<this->indexing.fsize;i++) indexing.fdoflist[i]+=dofcount;
+	}
+	else if(setenum==SsetEnum){
+		for(i=0;i<this->indexing.ssize;i++) indexing.sdoflist[i]+=dofcount;
+	}
+	else _error_("set of enum type " << EnumToStringx(setenum) << " not supported yet!");
+}
+/*}}}*/
+void Node::SetClone(int* minranks){/*{{{*/
+
+	int my_rank;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	if (minranks[sid]==my_rank){
+		indexing.clone=false;
+	}
+	else{
+		/*!there is a cpu with lower rank that has the same node, 
+		therefore, I am a clone*/
+		indexing.clone=true;	
+	}
+}
+/*}}}*/
+void Node::ShowTrueDofs(int* truedofs, int ncols,int setenum){/*{{{*/
+
+	int j;
+
+	/*Are we a clone? : */
+	if(indexing.clone) return;
+
+	/*Ok, we are not a clone, just plug our dofs into truedofs: */
+	switch(setenum){
+		case GsetEnum:
+			for(j=0;j<this->indexing.gsize;j++) truedofs[ncols*sid+j]=indexing.gdoflist[j];
+			break;
+		case FsetEnum:
+			for(j=0;j<this->indexing.fsize;j++) truedofs[ncols*sid+j]=indexing.fdoflist[j];
+			break;
+		case SsetEnum:
+			for(j=0;j<this->indexing.ssize;j++) truedofs[ncols*sid+j]=indexing.sdoflist[j];
+			break;
+		default:
+			_error_("set of enum type " << EnumToStringx(setenum) << " not supported yet!");
+	}
+
+}
+/*}}}*/
+void Node::UpdateCloneDofs(int* alltruedofs,int ncols,int setenum){/*{{{*/
+
+	int j;
+
+	/*If we are not a clone, don't update, we already have dofs!: */
+	if(!indexing.clone)return;
+
+	/*Ok, we are a clone node, but we did not create the dofs for this node.
+	 *Therefore, our doflist is garbage right now. Go pick it up in the alltruedofs: */
+	switch(setenum){
+		case GsetEnum:
+			for(j=0;j<this->indexing.gsize;j++) indexing.gdoflist[j]=alltruedofs[ncols*sid+j];
+			break;
+		case FsetEnum:
+			for(j=0;j<this->indexing.fsize;j++) indexing.fdoflist[j]=alltruedofs[ncols*sid+j];
+			break;
+		case SsetEnum:
+			for(j=0;j<this->indexing.ssize;j++) indexing.sdoflist[j]=alltruedofs[ncols*sid+j];
+			break;
+		default:
+			_error_("set of enum type " << EnumToStringx(setenum) << " not supported yet!");
+	}
+}
+/*}}}*/
+
+/*Methods inherent to Node: */
+int* GetGlobalDofList(Node** nodes,int numnodes,int setenum,int approximation){/*{{{*/
+
+	int  i,numdof,count;
+	int* ndof_list=NULL;
+	int *doflist = NULL;
+
+	if(numnodes){
+
+		/*Allocate:*/
+		ndof_list=xNew<int>(numnodes);
+
+		/*First, figure out size of doflist: */
+		numdof=0;
+		for(i=0;i<numnodes;i++){
+			ndof_list[i]=nodes[i]->GetNumberOfDofs(approximation,setenum);
+			numdof+=ndof_list[i];
+		}
+
+		if(numdof){
+			/*Allocate: */
+			doflist=xNew<int>(numdof);
+
+			/*Populate: */
+			count=0;
+			for(i=0;i<numnodes;i++){
+				nodes[i]->GetDofList(&doflist[count],approximation,setenum);
+				count+=ndof_list[i];
+			}
+		}
+		else doflist=NULL;
+	}
+	/*Free ressources:*/
+	xDelete<int>(ndof_list);
+
+	return doflist;
+}
+/*}}}*/
+int* GetLocalDofList(Node** nodes,int numnodes,int setenum,int approximation){ /*{{{*/
+
+	int  i,j,count,numdof,numgdof;
+	int* ndof_list=NULL;
+	int* ngdof_list_cumulative=NULL;
+	int *doflist = NULL;
+
+	if(numnodes){
+		/*allocate: */
+		ndof_list=xNew<int>(numnodes);
+		ngdof_list_cumulative=xNew<int>(numnodes);
+
+		/*Get number of dofs per node, and total for this given set*/
+		numdof=0;
+		numgdof=0;
+		for(i=0;i<numnodes;i++){
+
+			/*Cumulative list= number of dofs before node i*/
+			ngdof_list_cumulative[i]=numgdof;
+
+			/*Number of dofs for node i for given set and for the g set*/
+			ndof_list[i]=nodes[i]->GetNumberOfDofs(approximation,setenum);
+			numgdof    +=nodes[i]->GetNumberOfDofs(approximation,GsetEnum);
+			numdof     +=ndof_list[i];
+		}
+
+		if(numdof){
+			/*Allocate: */
+			doflist=xNew<int>(numdof);
+
+			/*Populate: */
+			count=0;
+			for(i=0;i<numnodes;i++){
+				nodes[i]->GetLocalDofList(&doflist[count],approximation,setenum);
+				count+=ndof_list[i];
+			}
+
+			/*We now have something like: [0 1 0 2 1 2]. Offset by gsize, to get something like: [0 1 2 4 6 7]:*/
+			count=0;
+			for(i=0;i<numnodes;i++){
+				for(j=0;j<ndof_list[i];j++){
+					doflist[count+j]+=ngdof_list_cumulative[i];
+				}
+				count+=ndof_list[i];
+			}
+		}
+		else doflist=NULL;
+	}
+
+	/*Free ressources:*/
+	xDelete<int>(ndof_list);
+	xDelete<int>(ngdof_list_cumulative);
+
+	/*CLean-up and return*/
+	return doflist;
+}
+/*}}}*/
+int GetNumberOfDofs(Node** nodes,int numnodes,int setenum,int approximation){/*{{{*/
+
+	/*output: */
+	int numberofdofs=0;
+
+	for(int i=0;i<numnodes;i++){
+		numberofdofs+=nodes[i]->GetNumberOfDofs(approximation,setenum);
+	}
+
+	return numberofdofs;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Node.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Node.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Node.h	(revision 21239)
@@ -0,0 +1,94 @@
+/*!\file Node.h
+ * \brief: header file for node object
+ */
+
+#ifndef _NODE_H_
+#define _NODE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../datastructures/datastructures.h"
+#include "../shared/shared.h"
+#include "./DofIndexing.h"
+#include "./Update.h"
+class  Inputs;
+class  Hook;
+class  IoModel;
+class  DataSet;
+class  Vertices;
+template <class doubletype> class  Vector;
+template <class doubletype> class  Matrix;
+class ElementVector;
+class ElementMatrix;
+/*}}}*/
+
+class Node: public Object{
+
+	private:
+		int approximation; //For ice flow models, we need to know what ice flow approximation is employed on this node
+
+	public: 
+
+		int id;    // unique arbitrary id.
+		int sid;   // "serial" id (rank of this node if the dataset was serial on 1 cpu)
+		int lid;   // "local"  id (rank of this node in current partition)
+
+		int          analysis_enum;
+		IssmDouble   coord_system[3][3];
+		bool         indexingupdate;
+		DofIndexing  indexing;
+
+		/*Node constructors, destructors*/
+		Node();
+		Node(int node_id,int node_sid,int node_lid,int io_index, IoModel* iomodel,int analysis_enum,int approximation_in);
+		~Node();
+
+		/*Object virtual functions definitions:*/
+		Object *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void    Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int     ObjectEnum();
+
+		/*Node numerical routines*/
+		void  Activate(void);
+		void  ApplyConstraint(int dof,IssmDouble value);
+		void  CreateNodalConstraints(Vector<IssmDouble>* ys);
+		void  Deactivate(void);
+		void  DistributeDofs(int* pdofcount,int setenum);
+		void  DofInFSet(int dof);
+		void  DofInSSet(int dof);
+		void  FreezeDof(int dof);
+		int   GetApproximation();
+		void  GetCoordinateSystem(IssmDouble* coord_system_out);
+		int   GetDof(int dofindex,int setenum);
+		void  GetDofList(int* poutdoflist,int approximation_enum,int setenum);
+		void  GetLocalDofList(int* poutdoflist,int approximation_enum,int setenum);
+		int   GetNumberOfDofs(int approximation_enum,int setenum);
+		void  HardDeactivate(void);
+		bool  InAnalysis(int analysis_enum);
+		bool  IsActive(void);
+		int   IsClone();
+		int   IsFloating();
+		int   IsGrounded();
+		int   Lid(void); 
+		void  OffsetDofs(int dofcount,int setenum);
+		void  ReindexingDone(void);
+		void  RelaxConstraint(int dof);
+		bool  RequiresDofReindexing(void);
+		void  SetClone(int* minranks);
+		void  SetCurrentConfiguration(DataSet* nodes,Vertices* vertices);
+		void  ShowTrueDofs(int* truerows,int ncols,int setenum);
+		int   Sid(void); 
+		void  UpdateCloneDofs(int* alltruerows,int ncols,int setenum);
+		void  VecMerge(Vector<IssmDouble>* ug, IssmDouble* vector_serial,int setenum);
+		void  VecReduce(Vector<IssmDouble>* vector, IssmDouble* ug_serial,int setnum);
+};
+
+/*Methods inherent to Node: */
+int* GetGlobalDofList(Node** nodes,int numnodes,int setenum,int approximation);
+int* GetLocalDofList(Node** nodes,int numnodes,int setenum,int approximation);
+int  GetNumberOfDofs(Node** nodes,int numnodes,int setenum,int approximation);
+
+#endif  /* _NODE_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Nodes.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Nodes.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Nodes.cpp	(revision 21239)
@@ -0,0 +1,358 @@
+/*
+ * \file Nodes.cpp
+ * \brief: Implementation of Nodes class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../shared/io/Comm/IssmComm.h"
+#include "./Nodes.h"
+#include "./Node.h"
+
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+Nodes::Nodes(){/*{{{*/
+	enum_type=NodesEnum;
+	return;
+}
+/*}}}*/
+Nodes::~Nodes(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Numerics*/
+void  Nodes::DistributeDofs(int analysis_type,int setenum){/*{{{*/
+
+	int  i;
+	int  dofcount=0;
+	int  maxdofspernode=0;
+	int* alldofcount=NULL;
+	int* truedofs=NULL;
+	int* alltruedofs=NULL;
+	int  numnodes=0;
+
+	/*recover my_rank:*/
+	int my_rank   = IssmComm::GetRank();
+	int num_procs = IssmComm::GetSize();
+
+	/*some check: */
+	_assert_(setenum==GsetEnum || setenum==FsetEnum || setenum==SsetEnum);
+
+	/*Go through objects, and distribute dofs locally, from 0 to numberofdofsperobject*/
+	for(i=0;i<this->Size();i++){
+		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
+
+		/*Check that this node corresponds to our analysis currently being carried out: */
+		if(node->InAnalysis(analysis_type)){
+			node->DistributeDofs(&dofcount,setenum);
+		}
+	}
+
+	/* Now every object has distributed dofs, but locally, and with a dof count starting from 
+	 * 0. This means the dofs between all the cpus are not unique. We now offset the dofs of eache
+	 * cpus by the total last dofs of the previus cpu, starting from 0.
+	 * First: get number of dofs for each cpu*/
+	alldofcount=xNew<int>(num_procs);
+	ISSM_MPI_Gather(&dofcount,1,ISSM_MPI_INT,alldofcount,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	ISSM_MPI_Bcast(alldofcount,num_procs,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/* Every cpu should start its own dof count at the end of the dofcount from cpu-1*/
+	dofcount=0;
+	for(i=0;i<my_rank;i++){
+		dofcount+=alldofcount[i];
+	}
+	for(i=0;i<this->Size();i++){
+		/*Check that this node corresponds to our analysis currently being carried out: */
+		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
+		if (node->InAnalysis(analysis_type)){
+			node->OffsetDofs(dofcount,setenum);
+		}
+	}
+
+	/* Finally, remember that cpus may have skipped some objects, because they were clones. For every 
+	 * object that is not a clone, tell them to show their dofs, so that later on, they can get picked 
+	 * up by their clones: */
+	maxdofspernode=this->MaxNumDofs(analysis_type,setenum);
+	numnodes=this->NumberOfNodes(analysis_type);
+	if(numnodes*maxdofspernode){
+		truedofs=   xNewZeroInit<int>(numnodes*maxdofspernode); //initialize to 0, so that we can pick up the max
+		alltruedofs=xNewZeroInit<int>(numnodes*maxdofspernode);
+	}
+
+	for(i=0;i<this->Size();i++){
+		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
+		if (node->InAnalysis(analysis_type)){
+			node->ShowTrueDofs(truedofs,maxdofspernode,setenum);//give maxdofspernode, column size, so that nodes can index into truedofs
+		}
+	}
+
+	ISSM_MPI_Allreduce((void*)truedofs,(void*)alltruedofs,numnodes*maxdofspernode,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
+
+	/* Now every cpu knows the true dofs of everyone else that is not a clone*/
+	for(i=0;i<this->Size();i++){
+		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
+		if (node->InAnalysis(analysis_type)){
+			node->UpdateCloneDofs(alltruedofs,maxdofspernode,setenum);
+		}
+	}
+
+	/*Update indexingupdateflag*/
+	for(i=0;i<this->Size();i++){
+		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
+		if (node->InAnalysis(analysis_type)){
+			node->ReindexingDone();
+		}
+	}
+
+	/* Free ressources: */
+	xDelete<int>(alldofcount);
+	xDelete<int>(truedofs);
+	xDelete<int>(alltruedofs);
+}
+/*}}}*/
+void  Nodes::FlagClones(int analysis_type){/*{{{*/
+
+	int i;
+	int num_procs;
+	int numnodes;
+
+	/*recover num_procs: */
+	num_procs=IssmComm::GetSize();
+
+	/*Figure out number of nodes for this analysis: */
+	numnodes=this->NumberOfNodes(analysis_type);
+
+	/*Allocate ranks: */
+	int* ranks    = xNew<int>(numnodes);
+	int* minranks = xNew<int>(numnodes);
+	for(i=0;i<numnodes;i++)ranks[i]=num_procs; //no cpu can have rank num_procs. This is the maximum limit.
+
+	/*Now go through all our objects and ask them to report to who they belong (which rank): */
+	Ranks(ranks,analysis_type);
+
+	/*We need to take the minimum rank for each vertex, and every cpu needs to get that result. That way, 
+	 * when we start building the dof list for all vertexs, a cpu can check whether its vertex already has been 
+	 * dealt with by another cpu. We take the minimum because we are going to manage dof assignment in increasing 
+	 * order of cpu rank. This is also why we initialized this array to num_procs.*/
+	ISSM_MPI_Allreduce((void*)ranks,(void*)minranks,numnodes,ISSM_MPI_INT,ISSM_MPI_MIN,IssmComm::GetComm());
+
+	/*Now go through all objects, and use minranks to flag which objects are cloned: */
+	for(i=0;i<this->Size();i++){
+
+		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
+
+		/*Check that this node corresponds to our analysis currently being carried out: */
+		if (node->InAnalysis(analysis_type)){
+
+			/*For this object, decide whether it is a clone: */
+			node->SetClone(minranks);
+		}
+	}
+
+	/*Free ressources: */
+	xDelete<int>(ranks); 
+	xDelete<int>(minranks);
+
+}
+/*}}}*/
+int   Nodes::MaximumId(){/*{{{*/
+
+	int max=-1;
+	int id,allmax;
+
+	/*Now go through all nodes, and get how many dofs they own, unless they are clone nodes: */
+	if(!sorted){
+		for(int i=0;i<this->Size();i++){
+			Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
+			id=node->Id();
+			if(id>max)max=id;
+		}
+	}
+	else{
+		if(this->Size()==0){
+			max = 0;
+		}
+		else{
+			Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(this->Size()-1));
+			max = node->Id();
+		}
+	}
+
+	/*Grab max of all cpus: */
+	ISSM_MPI_Allreduce((void*)&max,(void*)&allmax,1,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
+	max=allmax;
+
+	return max;
+}
+/*}}}*/
+int   Nodes::MaxNumDofs(int analysis_type,int setenum){/*{{{*/
+
+	int max=0;
+	int allmax,numdofs;
+
+	/*Now go through all nodes, and get how many dofs they own, unless they are clone nodes: */
+	for(int i=0;i<this->Size();i++){
+
+		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
+
+		/*Check that this node corresponds to our analysis currently being carried out: */
+		if (node->InAnalysis(analysis_type)){
+
+			numdofs=node->GetNumberOfDofs(NoneApproximationEnum,setenum);
+			if(numdofs>max)max=numdofs;
+		}
+	}
+
+	/*Grab max of all cpus: */
+	ISSM_MPI_Allreduce((void*)&max,(void*)&allmax,1,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
+	max=allmax;
+
+	return max;
+}
+/*}}}*/
+int   Nodes::NumberOfDofs(int analysis_type,int setenum){/*{{{*/
+
+	int   allnumdofs;
+
+	/*Get number of dofs on current cpu (excluding clones)*/
+	int numdofs=this->NumberOfDofsLocal(analysis_type,setenum);
+
+	/*Gather from all cpus: */
+	ISSM_MPI_Allreduce ( (void*)&numdofs,(void*)&allnumdofs,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
+	return allnumdofs;
+}
+/*}}}*/
+int   Nodes::NumberOfDofsLocal(int analysis_type,int setenum){/*{{{*/
+
+	int   numdofs=0;
+
+	/*Now go through all nodes, and get how many dofs they own, unless they are clone nodes: */
+	for(int i=0;i<this->Size();i++){
+
+		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
+
+		/*Check that this node corresponds to our analysis currently being carried out: */
+		if (node->InAnalysis(analysis_type)){
+
+			/*Ok, this object is a node, ask it to plug values into partition: */
+			if (!node->IsClone()){
+				numdofs+=node->GetNumberOfDofs(NoneApproximationEnum,setenum);
+			}
+		}
+	}
+
+	return numdofs;
+}
+/*}}}*/
+int   Nodes::NumberOfNodes(void){/*{{{*/
+
+	/*Careful! only use once all clones have been setup for all nodes!: */
+
+	int numnodes=0;
+	int allnumnodes=0;
+
+	/*Now go through all nodes, and get how many dofs they own, unless they are clone nodes: */
+	for(int i=0;i<this->Size();i++){
+		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
+
+		/*Ok, this object is a node, ask it to plug values into partition: */
+		if (!node->IsClone()) numnodes++;
+	}
+
+	/*Gather from all cpus: */
+	ISSM_MPI_Allreduce ( (void*)&numnodes,(void*)&allnumnodes,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
+
+	return allnumnodes;
+}
+/*}}}*/
+int   Nodes::NumberOfNodes(int analysis_type){/*{{{*/
+
+	int i;
+
+	int max_sid=-1;
+	int sid;
+	int node_max_sid;
+
+	for(i=0;i<this->Size();i++){
+
+		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
+
+		/*Check that this node corresponds to our analysis currently being carried out: */
+		if (node->InAnalysis(analysis_type)){
+
+			sid=node->Sid();
+			if (sid>max_sid)max_sid=sid;
+		}
+	}
+
+	ISSM_MPI_Reduce (&max_sid,&node_max_sid,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_max_sid,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	max_sid=node_max_sid;
+
+	/*sid starts at 0*/
+	max_sid++;
+
+	/*return*/
+	return max_sid;
+}
+/*}}}*/
+void  Nodes::Ranks(int* ranks,int analysis_type){/*{{{*/
+
+	int my_rank;
+	int sid;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	/*Go through nodes, and for each object, report it cpu: */
+	for(int i=0;i<this->Size();i++){
+
+		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
+
+		/*Check that this node corresponds to our analysis currently being carried out: */
+		if (node->InAnalysis(analysis_type)){
+			/*Plug rank into ranks, according to sid: */
+			sid=node->Sid();
+			ranks[sid]=my_rank; 
+		}
+	}
+}
+/*}}}*/
+bool Nodes::RequiresDofReindexing(int analysis_type){/*{{{*/
+
+	int flag = 0;
+	int allflag;
+
+	/*Now go through all nodes, and get how many dofs they own, unless they are clone nodes: */
+	for(int i=0;i<this->Size();i++){
+
+		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
+
+		/*Check that this node corresponds to our analysis currently being carried out: */
+		if(node->InAnalysis(analysis_type)){
+			if(node->RequiresDofReindexing()){
+				flag = 1;
+				break;
+			}
+		}
+	}
+
+	/*Grab max of all cpus: */
+	ISSM_MPI_Allreduce((void*)&flag,(void*)&allflag,1,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
+
+	if(allflag){
+		return true;
+	}
+	else{
+		return false;
+	}
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Nodes.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Nodes.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Nodes.h	(revision 21239)
@@ -0,0 +1,40 @@
+#ifndef _CONTAINER_NODES_H_
+#define  _CONTAINER_NODES_H_
+
+#include "../datastructures/datastructures.h"
+class Parameters;
+class Elements;
+class Vertices;
+class Loads;
+class Nodes;
+class Materials;
+
+/*!\brief Declaration of Nodes class.
+ *
+ * Declaration of Nodes class.  Nodes are vector lists of objects (Containers) of Node objects.
+ * Node objects are the degrees of freedom (DOFs) for a particular analysis type (not to be 
+ * confused with a vertex, which defines the (x,y,z) location of a point).
+ */ 
+class Nodes: public DataSet{
+
+	public:
+
+		/*constructors, destructors*/
+		Nodes();
+		~Nodes();
+
+		/*numerics*/
+		void  DistributeDofs(int analysis_type,int SETENUM);
+		void  FlagClones(int analysis_type);
+		int   MaximumId(void);
+		int   MaxNumDofs(int analysis_type,int setenum);
+		int   NumberOfDofs(int analysis_type,int setenum);
+		int   NumberOfDofsLocal(int analysis_type,int setenum);
+		int   NumberOfNodes(int analysis_type);
+		int   NumberOfNodes(void);
+		void  Ranks(int* ranks,int analysis_type);
+		bool  RequiresDofReindexing(int analysis_type);
+
+};
+
+#endif //ifndef _NODES_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Options/GenericOption.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Options/GenericOption.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Options/GenericOption.h	(revision 21239)
@@ -0,0 +1,143 @@
+/*! \file GenericOption.h 
+ *  \brief: header file for generic option object
+ */
+
+#ifndef _GENERIC_OPTION_
+#define _GENERIC_OPTION_
+
+/*Headers:{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <cstring>
+#include "../../shared/shared.h"
+#include "../../datastructures/datastructures.h"
+#include "./OptionUtilities.h"
+/*}}}*/
+
+template <class OptionType> 
+class GenericOption: public Option {
+
+	public:
+
+		char       *name;
+		OptionType  value;
+
+		int         numel;   //in case OptionType is an array
+		int         ndims;   //in case OptionType is a multi-dimensional array: */
+		int        *size;
+
+		/*GenericOption constructors, destructors*/
+		GenericOption(){ /*{{{*/
+
+			name   = NULL;
+			numel  = 0;
+			ndims  = 0;
+			size   = NULL;
+
+		} /*}}}*/
+		~GenericOption(){ /*{{{*/
+
+			if(name)   xDelete<char>(name);
+			if(size)   xDelete<int>(size);
+
+		} /*}}}*/
+
+		/*Object virtual functions definitions:*/
+		Object* copy(){/*{{{*/
+			_error_("Not implemented yet");
+		};/*}}}*/
+		void DeepEcho(){ /*{{{*/
+
+			char  indent[81]="";
+			this->DeepEcho(indent);
+
+		} /*}}}*/
+		void DeepEcho(char* indent){ /*{{{*/
+
+			char  cstr[81];
+			bool  flag=true;
+
+			if(flag) _printf0_(indent << "         name: \"" << name << "\"\n");
+			if(flag) _printf0_(indent << "         numel: " << numel << "\n");
+			if(flag) _printf0_(indent << "         ndims: " << ndims << "\n");
+			if(size){
+				StringFromSize(cstr,size,ndims);
+				if(flag) _printf0_(indent << "          size: " << cstr << "\n");
+			}
+			else if(flag) _printf0_(indent << "          size: [empty]\n");
+			_printf_(indent << "         value: " << value << "\n");;
+		} /*}}}*/
+		void Echo(){ /*{{{*/
+
+			this->DeepEcho();
+
+		} /*}}}*/
+		int  Id(){/*{{{*/
+			_error_("Not implemented yet");
+		};/*}}}*/
+		int  ObjectEnum(){/*{{{*/
+			return GenericOptionEnum;
+		};/*}}}*/
+
+		/*GenericOption functions: */
+		void  Get(OptionType* pvalue){/*{{{*/
+			*pvalue=value; 
+		};/*}}}*/
+		char* Name(){/*{{{*/
+			return name;
+		};/*}}}*/
+		int   NDims(){/*{{{*/
+			return ndims;
+		};/*}}}*/
+		int   NumEl(){/*{{{*/
+			return numel;
+		};/*}}}*/
+		int*  Size(){/*{{{*/
+			return size;
+		};/*}}}*/
+};
+
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)  //We hook off this specific specialization when not running ADOLC, otherwise we get a redeclaration with the next specialization. 
+template <> inline void GenericOption<IssmPDouble*>::Get(IssmPDouble** pvalue){ /*{{{*/
+
+	/*Copy vector*/
+	IssmPDouble* outvalue=xNew<IssmPDouble>(this->NumEl());
+	for(int i=0;i<this->NumEl();i++) outvalue[i]=this->value[i];
+
+	/*Assign output pointer*/
+	*pvalue=outvalue;
+} /*}}}*/
+#endif
+template <> inline void GenericOption<IssmDouble*>::Get(IssmDouble** pvalue){ /*{{{*/
+
+	/*Copy vector*/
+	IssmDouble* outvalue=xNew<IssmDouble>(this->NumEl());
+	for(int i=0;i<this->NumEl();i++) outvalue[i]=this->value[i];
+
+	/*Assign output pointer*/
+	*pvalue=outvalue;
+} /*}}}*/
+template <> inline void GenericOption<char*>::Get(char** pvalue){ /*{{{*/
+
+	int   stringsize=strlen(this->value)+1;
+	char* outstring=xNew<char>(stringsize);
+	xMemCpy<char>(outstring,this->value,stringsize);
+
+	*pvalue=outstring;
+} 
+/*}}}*/
+
+/*Special destructors when there is a pointer*/
+template <> inline GenericOption<char*>::~GenericOption(){ /*{{{*/
+
+	if(name)   xDelete<char>(name);
+	if(size)   xDelete<int>(size);
+	if(value)  xDelete<char>(value);
+} 
+/*}}}*/
+
+#endif  /* _OPTIONOBJECT_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Options/Option.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Options/Option.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Options/Option.h	(revision 21239)
@@ -0,0 +1,38 @@
+/*! \file Option.h 
+ *  \brief: header file for option abstract object
+ */
+
+#ifndef _OPTIONOBJECT_H_
+#define _OPTIONOBJECT_H_
+
+/*Headers:{{{*/
+#include "../../shared/shared.h"
+#include "../../datastructures/datastructures.h"
+/*}}}*/
+
+class Option: public Object {
+
+	public:
+
+		/*Option constructors, destructors*/
+		Option(){};
+		~Option(){};
+
+		/*Object virtual functions definitions*/
+		Object       *copy(){_error_("Not implemented yet"); };
+		virtual void  DeepEcho()= 0;
+		virtual void  DeepEcho(char  *indent)=0;
+		virtual void  Echo()= 0;
+		int           Id(){_error_("Not implemented yet"); };
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
+		int           ObjectEnum(){return OptionEnum;              };
+
+
+		/*virtual functions: */
+		virtual char* Name()=0;
+		virtual int   NDims()=0;
+		virtual int   NumEl()=0;
+		virtual int*  Size()=0;
+
+};
+#endif  /* _OPTIONOBJECT_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Options/OptionUtilities.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Options/OptionUtilities.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Options/OptionUtilities.cpp	(revision 21239)
@@ -0,0 +1,104 @@
+/*!\file OptionUtilities.cpp
+ * \brief: implementation of the options utilities
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+int ColumnWiseDimsFromIndex(int* dims,int index,int* size,int ndims){/*{{{*/
+
+	int   i;
+	int   aprod=1;
+
+	/*check for index too large  */
+	for (i=0;i<ndims;i++) aprod*=size[i];
+	if (index >= aprod) _error_("Index " << index << " exceeds number of elements " << aprod << ".");
+
+	/*calculate the dimensions (being careful of integer division)  */
+	for (i=ndims-1; i>=0; i--) {
+		aprod=reCast<int>(((IssmPDouble)aprod+0.5)/(IssmPDouble)size[i]);
+		dims[i]=(int)floor(((IssmPDouble)index+0.5)/(IssmPDouble)aprod);
+		index-=dims[i]*aprod;
+	}
+
+	return(0);
+}/*}}}*/
+int IndexFromColumnWiseDims(int* dims, int* size, int ndims) {/*{{{*/
+
+	int   i;
+	int   index=0;
+
+	/*check for any dimension too large  */
+	for (i=0;i<ndims;i++){
+		if (dims[i] >= size[i]) _error_("Dimension " << i << " of " << dims[i] << " exceeds size of " << size[i] << ".");
+	}
+
+	/*calculate the index  */
+	for (i=ndims-1; i>=0; i--){
+		index*=size[i];
+		index+=dims[i];
+	}
+
+	return(index);
+}/*}}}*/
+int IndexFromRowWiseDims(int* dims, int* size, int ndims) {/*{{{*/
+
+	int   i;
+	int   index=0;
+
+	/*check for any dimension too large  */
+	for (i=0; i<ndims; i++){
+		if (dims[i] >= size[i]) _error_("Dimension " << i << " of " << dims[i] << " exceeds size of " << size[i] << ".");
+	}
+
+	/*calculate the index  */
+	for (i=0; i<ndims; i++) {
+		index*=size[i];
+		index+=dims[i];
+	}
+
+	return(index);
+}/*}}}*/
+int RowWiseDimsFromIndex(int* dims, int index, int* size, int ndims) {/*{{{*/
+
+	int   i;
+	int   aprod=1;
+
+	/*check for index too large  */
+	for (i=0; i<ndims; i++) aprod*=size[i];
+	if (index >= aprod) _error_("Index " << index << " exceeds number of elements " << aprod << ".");
+
+	/*calculate the dimensions (being careful of integer division)  */
+	for (i=0; i<ndims; i++) {
+		aprod=(int)(((IssmPDouble)aprod+0.5)/(IssmPDouble)size[i]);
+		dims[i]=(int)floor(((IssmPDouble)index+0.5)/(IssmPDouble)aprod);
+		index-=dims[i]*aprod;
+	}
+
+	return(0);
+}/*}}}*/
+int StringFromDims(char* cstr, int* dims, int ndims) {/*{{{*/
+
+	sprintf(&cstr[0],"[");
+	for(int i=0; i<ndims-1; i++) sprintf(&cstr[strlen(cstr)],"%d,",dims[i]);
+	sprintf(&cstr[strlen(cstr)],"%d]",dims[ndims-1]);
+
+	return(0);
+}/*}}}*/
+int StringFromSize(char* cstr, int* size, int ndims) {/*{{{*/
+
+	sprintf(&cstr[0],"[");
+	for(int i=0; i<ndims-1; i++) sprintf(&cstr[strlen(cstr)],"%dx",size[i]);
+	sprintf(&cstr[strlen(cstr)],"%d]",size[ndims-1]);
+
+	return(0);
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Options/OptionUtilities.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Options/OptionUtilities.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Options/OptionUtilities.h	(revision 21239)
@@ -0,0 +1,22 @@
+/*! \file OptionUtilities.h 
+ *  \brief: header file for option object utilities
+ */
+
+#ifndef _OPTIONUTILITIES_H_
+#define _OPTIONUTILITIES_H_
+
+/*Headers:{{{*/
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/Enum/Enum.h"
+
+#include "./Option.h"
+/*}}}*/
+
+int ColumnWiseDimsFromIndex(int* dims, int index, int* size, int ndims);
+int IndexFromColumnWiseDims(int* dims, int* size, int ndims);
+int IndexFromRowWiseDims(int* dims, int* size, int ndims);
+int RowWiseDimsFromIndex(int* dims, int index, int* size, int ndims);
+int StringFromDims(char* cstr, int* dims, int ndims);
+int StringFromSize(char* cstr, int* size, int ndims);
+
+#endif  /* _OPTIONUTILITIES_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Options/Options.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Options/Options.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Options/Options.cpp	(revision 21239)
@@ -0,0 +1,120 @@
+/*
+ * \file Options.cpp
+ * \brief: Implementation of Options class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <vector>
+#include <algorithm>
+#include <cstring>
+
+#include "./Options.h"
+#include "../../datastructures/datastructures.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*Object constructors and destructor*/
+Options::Options(){/*{{{*/
+	return;
+}
+/*}}}*/
+Options::~Options(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object management*/
+int  Options::AddOption(Option* in_option){/*{{{*/
+
+	char* name=NULL;
+
+	vector<Object*>::iterator object;
+	Option* option=NULL;
+
+	/*In debugging mode, check that the option is not a NULL pointer*/
+	_assert_(in_option);
+
+	/*Also, check the option name*/
+	name=in_option->Name();
+
+	if(!name) _error_("input option has an empty name");
+	if(strchr(name,'.')) _error_("Option \"" << name << "\" has a protected character \".\"");
+	if(strchr(name,'[')) _error_("Option \"" << name << "\" has a protected character \"[\"");
+	if(strchr(name,']')) _error_("Option \"" << name << "\" has a protected character \"]\"");
+
+	/*Finally, check that no option of the same name already exists in the dataset*/
+	for(object=objects.begin();object<objects.end();object++){
+
+		option=xDynamicCast<Option*>(*object);
+		if (!strcmp(option->Name(),name)){
+			_error_("Options \"" << name << "\" found multiple times");
+			break;
+		}
+	}
+
+	/*OK, all checks went well, add option to dataset*/
+	this->AddObject(in_option);
+
+	return 1;
+}
+/*}}}*/
+Option* Options::GetOption(const char* name){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Option* option=NULL;
+
+	/*Go through options and find option: */
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		option=xDynamicCast<Option*>(*object);
+		//option=(Option*)(*object); //C-like cast
+		/*There is a crash on some machines (Einar Olason) that needs to be fixed*/
+		if(!option){
+			_printf_("The dynamic_cast from Object* to Option* is failing.\n");
+			_printf_("\n");
+			_printf_("A quick qorkaround consists of using a C-like cast\n");
+			_printf_("\n");
+			_printf_("Open Options.cpp and change the dynamic_cast in Options::GetOption by a C-like cast\n");
+			//_printf_("Open Options.h and replace the dynamic_cast of all the Get functions to C-like cats\n");
+			_printf_("\n");
+			_error_("Make the fix above and recompile ISSM");
+		}
+
+		if (!strncmp(name,option->Name(),strlen(option->Name()))){
+
+			/*OK, now do we have a complete name? If not, it is a cell or a structure, we need to go further*/
+			if(!strcmp(name,option->Name())){
+				return option;
+			}
+			else{
+				/*If the object is a Cell, recursive call to its options*/ 
+				if(option->ObjectEnum()==OptionCellEnum){
+					GenericOption<Options*>* celloption=(GenericOption<Options*>*)option;
+					return celloption->value->GetOption(name);
+				}
+				/*If the object is a Struct loop over its size and recursive call*/
+				else if(option->ObjectEnum()==OptionStructEnum){
+					for(int i=0;i<option->NumEl();i++){
+						GenericOption<Options**>* structoption=(GenericOption<Options**>*)option;
+						_assert_(structoption->value[i]);
+						return structoption->value[i]->GetOption(name);
+					}
+				}
+				/*Else: not supported*/
+				else{
+					_error_("Cannot recover field \"" << name << "\" for an option of type " << EnumToStringx(option->ObjectEnum()));
+				}
+			}
+		}
+	}
+
+	/*Option not found return NULL pointer*/
+	return NULL;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Options/Options.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Options/Options.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Options/Options.h	(revision 21239)
@@ -0,0 +1,108 @@
+#ifndef _CONTAINER_OPTIONS_H_
+#define _CONTAINER_OPTIONS_H_
+
+/*forward declarations */
+class Option;
+#include "../../datastructures/datastructures.h"
+#include "./GenericOption.h"
+
+/*!\brief Declaration of Options class. 
+ * 
+ * Declaration of Options class.  Options are vector lists (Containers) of Option objects.
+ */ 
+class Options: public DataSet{
+
+	public:
+
+		/*constructors, destructors*/
+		Options();
+		~Options();
+
+		/*numerics*/
+		int  AddOption(Option* in_oobject);
+		Option* GetOption(const char* name);
+
+		template <class OptionType> void Get(OptionType* pvalue,const char* name){ /*{{{*/
+
+			/*Get option*/
+			GenericOption<OptionType>* genericoption=xDynamicCast<GenericOption<OptionType>*>(GetOption(name));
+
+			/*If the pointer is not NULL, the option has been found*/
+			if(genericoption){
+				genericoption->Get(pvalue);
+			}
+			/*Else, the Option does not exist, no default provided*/
+			else{
+				_error_("option of name \"" << name << "\" not found, and no default value has been provided");
+			}
+		}
+		/*}}}*/
+		template <class OptionType> void Get(OptionType* pvalue,int* pnumel, const char* name){ /*{{{*/
+
+			/*Get option*/
+			GenericOption<OptionType>* genericoption=xDynamicCast<GenericOption<OptionType>*>(GetOption(name));
+
+			/*If the pointer is not NULL, the option has been found*/
+			if(genericoption){
+				genericoption->Get(pvalue);
+				*pnumel=genericoption->NumEl();
+			}
+			/*Else, the Option does not exist, no default provided*/
+			else{
+				_error_("option of name \"" << name << "\" not found, and no default value has been provided");
+			}
+		}
+		/*}}}*/
+		template <class OptionType> void Get(OptionType* pvalue,const char* name,OptionType default_value){ /*{{{*/
+
+			/*Get option*/
+			GenericOption<OptionType>* genericoption=xDynamicCast<GenericOption<OptionType>*>(GetOption(name));
+
+			/*If the pointer is not NULL, the option has been found*/
+			if(genericoption){
+				genericoption->Get(pvalue);
+			}
+			else{
+				if(GetOption(name)) _printf_("WARNING: option "<<name<<" found but fetched format not consistent, defaulting...\n");
+				*pvalue=default_value;
+			}
+		}
+		/*}}}*/
+		template <class OptionType> void Get(OptionType* pvalue,int* pnumel, const char* name,OptionType default_value){ /*{{{*/
+
+			/*Get option*/
+			GenericOption<OptionType>* genericoption=xDynamicCast<GenericOption<OptionType>*>(GetOption(name));
+
+			/*If the pointer is not NULL, the option has been found*/
+			if(genericoption){
+				genericoption->Get(pvalue);
+				*pnumel=genericoption->NumEl();
+			}
+			else{
+				*pvalue=default_value;
+			}
+		}
+		/*}}}*/
+
+};
+
+#endif //ifndef _INPUTS_H_
+
+template <> inline void Options::Get(char** pvalue,const char* name,char* default_value){ /*{{{*/
+
+	/*Get option*/
+	GenericOption<char*>* genericoption=xDynamicCast<GenericOption<char*>*>(GetOption(name));
+
+	/*If the pointer is not NULL, the option has been found*/
+	if(genericoption){
+		genericoption->Get(pvalue);
+	}
+	else{
+		/*Make a copy*/
+		int   stringsize=strlen(default_value)+1;
+		char* outstring=xNew<char>(stringsize);
+		xMemCpy<char>(outstring,default_value,stringsize);
+		*pvalue=outstring;
+	}
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/BoolParam.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/BoolParam.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/BoolParam.cpp	(revision 21239)
@@ -0,0 +1,65 @@
+/*!\file BoolParam.c
+ * \brief: implementation of the BoolParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+/*BoolParam constructors and destructor*/
+BoolParam::BoolParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+BoolParam::BoolParam(int in_enum_type,bool in_value){/*{{{*/
+
+	enum_type=in_enum_type;
+	value=in_value;
+}
+/*}}}*/
+BoolParam::~BoolParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* BoolParam::copy() {/*{{{*/
+
+	return new BoolParam(this->enum_type,this->value);
+
+}
+/*}}}*/
+void BoolParam::DeepEcho(void){/*{{{*/
+	_printf_(setw(22)<<"   BoolParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" "<<(value?"true":"false")<<"\n");
+}
+/*}}}*/
+void BoolParam::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int    BoolParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void BoolParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(BoolParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(value);
+
+}
+/*}}}*/
+int BoolParam::ObjectEnum(void){/*{{{*/
+
+	return BoolParamEnum;
+
+}
+/*}}}*/
+		
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/BoolParam.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/BoolParam.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/BoolParam.h	(revision 21239)
@@ -0,0 +1,74 @@
+/*! \file BoolParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _BOOLPARAM_H_
+#define _BOOLPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class BoolParam: public Param{
+
+	public:
+		/*just hold 3 values for 3 vertices: */
+		int enum_type;
+		bool value;
+
+		/*BoolParam constructors, destructors: {{{*/
+		BoolParam();
+		BoolParam(int enum_type,bool value);
+		~BoolParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){*pbool=value;}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){this->value=boolean;}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an int");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmPDouble");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(int* pintarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		/*}}}*/
+};
+#endif  /* _BOOLPARAM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DataSetParam.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DataSetParam.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DataSetParam.cpp	(revision 21239)
@@ -0,0 +1,75 @@
+/*!\file DataSetParam.c
+ * \brief: implementation of the DataSetParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+/*DataSetParam constructors and destructor*/
+DataSetParam::DataSetParam(){/*{{{*/
+	value=NULL;
+	return;
+}
+/*}}}*/
+DataSetParam::DataSetParam(int in_enum_type,DataSet* in_value){/*{{{*/
+
+	enum_type=in_enum_type;
+	value=in_value->Copy();;
+}
+/*}}}*/
+DataSetParam::~DataSetParam(){/*{{{*/
+	delete value;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* DataSetParam::copy() {/*{{{*/
+
+	return new DataSetParam(this->enum_type,this->value);
+
+}
+/*}}}*/
+void DataSetParam::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(22)<<"   DataSetParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" ----- begin\n");
+	this->value->Echo();
+	_printf_(setw(22)<<"   DataSetParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" ----- end\n");
+}
+/*}}}*/
+void DataSetParam::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int    DataSetParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void DataSetParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	if(marshall_direction==MARSHALLING_BACKWARD)value=new DataSet();
+	
+	MARSHALLING_ENUM(DataSetParamEnum);
+	MARSHALLING(enum_type);
+	value->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+}
+/*}}}*/
+int DataSetParam::ObjectEnum(void){/*{{{*/
+
+	return DataSetParamEnum;
+
+}
+/*}}}*/
+
+/*DataSetParam virtual functions definitions: */
+void DataSetParam::GetParameterValue(DataSet** pdataset){/*{{{*/
+	*pdataset=value->Copy();
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DataSetParam.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DataSetParam.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DataSetParam.h	(revision 21239)
@@ -0,0 +1,76 @@
+/*! \file DataSetParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _DATASETPARAM_H_
+#define _DATASETPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class DataSetParam: public Param{
+
+	private: 
+		int   enum_type;
+
+	public:
+		DataSet* value;
+
+		/*DataSetParam constructors, destructors: {{{*/
+		DataSetParam();
+		DataSetParam(int enum_type,DataSet* dataset);
+		~DataSetParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){  _error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(FILE** pfile){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a file pointer");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("DataSet param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(DataSet** pdataset);
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a file pointer");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(int* pintarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(DataSet* dataset){_error_("DataSet param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a DataSet yet");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("DataSet param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold an array of matrices");}
+		/*}}}*/
+};
+#endif  /* _INTPARAM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleMatArrayParam.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleMatArrayParam.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleMatArrayParam.cpp	(revision 21239)
@@ -0,0 +1,235 @@
+/*!\file DoubleMatArrayParam.c
+ * \brief: implementation of the DoubleMatArrayParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+/*DoubleMatArrayParam constructors and destructor*/
+DoubleMatArrayParam::DoubleMatArrayParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+DoubleMatArrayParam::DoubleMatArrayParam(int in_enum_type,IssmDouble** in_array, int in_M, int* in_mdim_array, int* in_ndim_array){/*{{{*/
+
+	int i;
+	IssmDouble* matrix=NULL;
+	int     m,n;
+
+	enum_type=in_enum_type;
+	M=in_M;
+	if(M){
+		array=xNew<IssmDouble*>(M);
+		mdim_array=xNew<int>(M);
+		ndim_array=xNew<int>(M);
+
+		for(i=0;i<M;i++){
+			m=in_mdim_array[i]; 
+			n=in_ndim_array[i];
+
+			mdim_array[i]=m;
+			ndim_array[i]=n;
+
+			if(m*n){
+				matrix=xNew<IssmDouble>(m*n);
+				xMemCpy<IssmDouble>(matrix,in_array[i],m*n);
+			}
+			else{
+				matrix=NULL;
+			}
+			array[i]=matrix;
+		}
+	}
+	else{
+		array=NULL;
+		mdim_array=NULL;
+		ndim_array=NULL;
+	}
+}
+/*}}}*/
+DoubleMatArrayParam::~DoubleMatArrayParam(){/*{{{*/
+
+	int i;
+	IssmDouble* matrix=NULL;
+
+	xDelete<int>(mdim_array);
+	xDelete<int>(ndim_array);
+
+	for(i=0;i<M;i++){
+		matrix=array[i];
+		xDelete<IssmDouble>(matrix);
+	}
+
+	xDelete<IssmDouble*>(array);
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* DoubleMatArrayParam::copy() {/*{{{*/
+
+	return new DoubleMatArrayParam(this->enum_type,this->array, this->M, this->mdim_array,this->ndim_array);
+
+}
+/*}}}*/
+void DoubleMatArrayParam::DeepEcho(void){/*{{{*/
+
+	int i,j,k;
+	int m,n;
+	IssmDouble* matrix=NULL;
+
+	_printf_("DoubleMatArrayParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   array size: " << this->M << "\n");
+	for(i=0;i<M;i++){
+		_printf_("   array " << i << " (" << mdim_array[i] << "x" << ndim_array[i] << "):\n");
+		matrix=array[i];
+		m=mdim_array[i];
+		n=ndim_array[i];
+
+		for(j=0;j<m;j++){
+			_printf_("   ");
+			for(k=0;k<n;k++)_printf_(*(matrix+n*j+k) << " ");
+			_printf_("\n");
+		}
+	}
+}
+/*}}}*/
+void DoubleMatArrayParam::Echo(void){/*{{{*/
+
+	_printf_("DoubleMatArrayParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   array size: " << this->M << "\n");
+	_printf_("   array pointer: " << this->array << "\n");
+
+}
+/*}}}*/
+int    DoubleMatArrayParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void DoubleMatArrayParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(DoubleMatArrayParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(M);
+	if(M){
+		MARSHALLING_DYNAMIC(mdim_array,int,M);
+		MARSHALLING_DYNAMIC(ndim_array,int,M);
+		if(marshall_direction==MARSHALLING_BACKWARD && M) array=xNew<IssmDouble*>(M);
+		for(int i=0;i<M;i++){
+			MARSHALLING_DYNAMIC(array[i],IssmDouble,mdim_array[i]*ndim_array[i]);
+		}
+	}
+	else{
+		array=NULL;
+		mdim_array=NULL;
+		ndim_array=NULL;
+	}
+
+}
+/*}}}*/
+int DoubleMatArrayParam::ObjectEnum(void){/*{{{*/
+
+	return DoubleMatArrayParamEnum;
+
+}
+/*}}}*/
+
+/*DoubleMatArrayParam virtual functions definitions: */
+void  DoubleMatArrayParam::GetParameterValue(IssmDouble*** pout_array, int* pout_M,int** pout_mdim_array, int** pout_ndim_array){/*{{{*/
+
+	int i,m,n;
+	IssmDouble* matrix=NULL;
+	IssmDouble* out_matrix=NULL;
+
+	/*output: */
+	IssmDouble** out_array=NULL;
+	int      out_M;
+	int*     out_mdim_array=NULL;
+	int*     out_ndim_array=NULL;
+
+	out_M=this->M;
+	if(out_M){
+		out_array=xNew<IssmDouble*>(M);
+		out_mdim_array=xNew<int>(M);
+		out_ndim_array=xNew<int>(M);
+
+		xMemCpy<int>(out_mdim_array,this->mdim_array,M);
+		xMemCpy<int>(out_ndim_array,this->ndim_array,M);
+
+		for(i=0;i<this->M;i++){
+			matrix=this->array[i];
+			m=this->mdim_array[i];
+			n=this->ndim_array[i];
+
+			if(m*n){
+				out_matrix=xNew<IssmDouble>(m*n);
+				xMemCpy<IssmDouble>(out_matrix,matrix,m*n);
+			}
+			else{
+				out_matrix=NULL;
+			}
+			out_array[i]=out_matrix;
+		}
+	}
+	else{
+		out_array=NULL;
+		out_matrix=NULL;
+		out_ndim_array=NULL;
+	}
+
+	/*Assign output pointers:*/
+	if(pout_M) *pout_M=out_M;
+	if(pout_mdim_array) *pout_mdim_array=out_mdim_array;
+	if(pout_ndim_array) *pout_ndim_array=out_ndim_array;
+	*pout_array=out_array;
+
+}
+/*}}}*/
+void  DoubleMatArrayParam::SetValue(IssmDouble** in_array, int in_M, int* in_mdim_array, int* in_ndim_array){/*{{{*/
+
+	int i,m,n;
+	IssmDouble* in_matrix=NULL;
+	IssmDouble* matrix=NULL;
+
+	/*avoid leak: */
+	xDelete<int>(mdim_array);
+	xDelete<int>(ndim_array);
+	for(i=0;i<M;i++){
+		matrix=array[i];
+		xDelete<IssmDouble>(matrix);
+	}
+	xDelete<IssmDouble*>(array);
+
+	/*copy data: */
+	this->M=in_M;
+	this->array=xNew<IssmDouble*>(M);
+	this->mdim_array=xNew<int>(M);
+	this->ndim_array=xNew<int>(M);
+
+	xMemCpy<int>(this->mdim_array,in_mdim_array,M);
+	xMemCpy<int>(this->ndim_array,in_ndim_array,M);
+
+	for(i=0;i<M;i++){
+		in_matrix=in_array[i];
+		m=in_mdim_array[i];
+		n=in_ndim_array[i];
+
+		matrix=xNew<IssmDouble>(m*n);
+		xMemCpy<IssmDouble>(matrix,in_matrix,m*n);
+
+		this->array[i]=matrix;
+	}
+
+}
+/*}}}*/
+		
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleMatArrayParam.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleMatArrayParam.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleMatArrayParam.h	(revision 21239)
@@ -0,0 +1,77 @@
+/*! \file DoubleMatArrayParam.h 
+ *  \brief: header file for object holding an array of serial matrices
+ */
+
+#ifndef _DOUBLEMATARRAYPARAM_H_
+#define _DOUBLEMATARRAYPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class DoubleMatArrayParam: public Param{
+
+	private: 
+		int          enum_type;
+		IssmDouble **array;        //array of matrices
+		int          M;            //size of array
+		int         *mdim_array;   //m-dimensions of matrices in the array
+		int         *ndim_array;   //n-dimensions -f matrices in the array
+
+	public:
+		/*DoubleMatArrayParam constructors, destructors: {{{*/
+		DoubleMatArrayParam();
+		DoubleMatArrayParam(int enum_type,IssmDouble** array, int M, int* mdim_array, int* ndim_array);
+		~DoubleMatArrayParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << "cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << "cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << "cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << "cannot return an array of integers");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << "cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << "cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << "cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << "cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << "cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims);
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << "cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << "cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << "cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a IssmDouble vec array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a IssmDouble mat array");}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a int vec array");}
+		void  SetValue(int* intarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a int mat array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Bool param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array);
+		/*}}}*/
+};
+#endif  /* _DOUBLEMATARRAYPARAM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleMatParam.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleMatParam.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleMatParam.cpp	(revision 21239)
@@ -0,0 +1,124 @@
+/*!\file DoubleMatParam.c
+ * \brief: implementation of the DoubleMatParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+/*DoubleMatParam constructors and destructor*/
+DoubleMatParam::DoubleMatParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+DoubleMatParam::DoubleMatParam(int in_enum_type,IssmDouble* in_value, int in_M,int in_N){/*{{{*/
+
+	enum_type=in_enum_type;
+	M=in_M;
+	N=in_N;
+
+	value=xNew<IssmDouble>(M*N);
+	xMemCpy<IssmDouble>(value,in_value,M*N);
+}
+/*}}}*/
+DoubleMatParam::~DoubleMatParam(){/*{{{*/
+	xDelete<IssmDouble>(value);
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+void DoubleMatParam::Echo(void){/*{{{*/
+
+	_printf_("DoubleMatParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   matrix size: " << this->M << "x" << this->N << "\n");
+
+}
+/*}}}*/
+void DoubleMatParam::DeepEcho(void){/*{{{*/
+
+	int i,j;
+
+	_printf_("DoubleMatParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   matrix size: " << this->M << "x" << this->N << "\n");
+	for(i=0;i<this->M;i++){
+		for(j=0;j<this->N;j++){
+			_printf_(i << " " << j << " " << *(this->value+N*i+j) << "\n");
+		}
+	}
+}
+/*}}}*/
+int    DoubleMatParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+int DoubleMatParam::ObjectEnum(void){/*{{{*/
+
+	return DoubleMatParamEnum;
+
+}
+/*}}}*/
+Param* DoubleMatParam::copy() {/*{{{*/
+
+	return new DoubleMatParam(this->enum_type,this->value,this->M,this->N);
+
+}
+/*}}}*/
+void DoubleMatParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(DoubleMatParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(M);
+	MARSHALLING(N);
+	MARSHALLING_DYNAMIC(value,IssmDouble,M*N);
+}
+/*}}}*/
+
+/*DoubleMatParam virtual functions definitions: */
+void  DoubleMatParam::GetParameterValue(IssmDouble** pIssmDoublearray,int* pM,int* pN){/*{{{*/
+	IssmDouble* output=NULL;
+
+	output=xNew<IssmDouble>(M*N);
+	xMemCpy<IssmDouble>(output,value,M*N);
+
+	/*Assign output pointers:*/
+	if(pM) *pM=M;
+	if(pN) *pN=N;
+	*pIssmDoublearray=output;
+}
+/*}}}*/
+void  DoubleMatParam::GetParameterValue(int** pintarray,int* pM,int* pN){/*{{{*/
+	_error_("DoubleMat of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return an array of int");
+}
+/*}}}*/
+void  DoubleMatParam::SetValue(IssmDouble* IssmDoublearray,int in_M,int in_N){/*{{{*/
+
+	/*avoid leak: */
+	xDelete<IssmDouble>(this->value);
+
+	this->value=xNew<IssmDouble>(in_M*in_N);
+	xMemCpy<IssmDouble>(this->value,IssmDoublearray,in_M*in_N);
+
+	this->M=in_M;
+	this->N=in_N;
+}
+/*}}}*/
+
+/*DoubleMatParam specific routines:*/
+void  DoubleMatParam::GetParameterValueByPointer(IssmDouble** pIssmDoublearray,int* pM,int* pN){/*{{{*/
+	
+	/*Assign output pointers:*/
+	if(pM) *pM=M;
+	if(pN) *pN=N;
+	*pIssmDoublearray=value;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleMatParam.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleMatParam.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleMatParam.h	(revision 21239)
@@ -0,0 +1,79 @@
+/*! \file DoubleMatParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _DOUBLEMATPARAM_H_
+#define _DOUBLEMATPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class DoubleMatParam: public Param{
+
+	protected: 
+		int         enum_type;
+		IssmDouble *value;
+		int         M;
+		int         N;
+
+	public:
+		/*DoubleMatParam constructors, destructors: {{{*/
+		DoubleMatParam();
+		DoubleMatParam(int enum_type,IssmDouble* value,int M,int N);
+		~DoubleMatParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		void  Echo();
+		void  DeepEcho();
+		int   Id(); 
+		int   ObjectEnum();
+		Param* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		int   InstanceEnum(){return enum_type;}
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN);
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM,int* pN);
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble vec array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M,int N);
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int vec array");}
+		void  SetValue(int* intarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int mat array");};
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		/*}}}*/
+		/*DoubleMatParam specific routines:{{{*/
+		void  GetParameterValueByPointer(IssmDouble** pIssmDoublearray,int* pM,int* pN);
+		/*}}}*/
+};
+#endif  /* _DOUBLEMATPARAM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleParam.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleParam.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleParam.cpp	(revision 21239)
@@ -0,0 +1,88 @@
+/*!\file DoubleParam.c
+ * \brief: implementation of the DoubleParam object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+
+/*DoubleParam constructors and destructor*/
+DoubleParam::DoubleParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+DoubleParam::DoubleParam(int in_enum_type,IssmDouble in_value){/*{{{*/
+
+	enum_type=in_enum_type;
+	value=in_value;
+}
+/*}}}*/
+DoubleParam::~DoubleParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* DoubleParam::copy() {/*{{{*/
+
+	return new DoubleParam(this->enum_type,this->value);
+
+}
+/*}}}*/
+void DoubleParam::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(22)<<"   DoubleParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" "<<this->value<<"\n");
+}
+/*}}}*/
+void DoubleParam::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  DoubleParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void DoubleParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(DoubleParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(value);
+
+}
+/*}}}*/
+int  DoubleParam::ObjectEnum(void){/*{{{*/
+
+	return DoubleParamEnum;
+
+}
+/*}}}*/
+
+/*DoubleParam virtual functions definitions: */
+void DoubleParam::GetParameterValue(int* pinteger){/*{{{*/
+	_error_("Double param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return an integer");
+}
+/*}}}*/
+void DoubleParam::GetParameterValue(bool* pbool){/*{{{*/
+	_error_("Double param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return an bool");
+}
+/*}}}*/
+void DoubleParam::GetParameterValue(int** pintarray,int* pM){/*{{{*/
+	_error_("Double param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return an array of integers");
+}
+/*}}}*/
+void DoubleParam::GetParameterValue(int** pintarray,int* pM,int* pN){/*{{{*/
+	_error_("Double param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return an array of integers");
+}
+/*}}}*/
+void DoubleParam::GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){/*{{{*/
+	_error_("Double param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return an array of IssmDouble");
+}
+/*}}}*/
+void DoubleParam::GetParameterValue(IssmDouble** pIssmDoublearray,int* pM,int* pN){/*{{{*/
+	_error_("Double param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return an array of IssmDouble");
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleParam.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleParam.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleParam.h	(revision 21239)
@@ -0,0 +1,75 @@
+/*! \file DoubleParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _DOUBLEPARAM_H_
+#define _DOUBLEPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class DoubleParam: public Param{
+
+	private: 
+		/*just hold 3 values for 3 vertices: */
+		int        enum_type;
+		IssmDouble value;
+
+	public:
+		/*DoubleParam constructors, destructors: {{{*/
+		DoubleParam();
+		DoubleParam(int enum_type,IssmDouble value);
+		~DoubleParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool);
+		void  GetParameterValue(int* pinteger);
+		void  GetParameterValue(int** pintarray,int* pM);
+		void  GetParameterValue(int** pintarray,int* pM,int* pN);
+		void  GetParameterValue(IssmDouble* pIssmDouble){*pIssmDouble=value;}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM);
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN);
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){this->value=(IssmDouble)boolean;}
+		void  SetValue(int integer){this->value=(IssmDouble)integer;}
+		void  SetValue(IssmDouble scalar){this->value=(IssmDouble)scalar;}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(int* pintarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		/*}}}*/
+};
+#endif  /* _DOUBLEPARAM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleTransientMatParam.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleTransientMatParam.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleTransientMatParam.cpp	(revision 21239)
@@ -0,0 +1,19 @@
+/*!\file DoubleTransientMatParam.c
+ * \brief: implementation of the DoubleTransientMatParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+DoubleTransientMatParam::DoubleTransientMatParam(int in_enum_type,IssmDouble* in_value, int in_M,int in_N):DoubleMatParam(in_enum_type,in_value,in_M,in_N){/*{{{*/
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleTransientMatParam.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleTransientMatParam.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleTransientMatParam.h	(revision 21239)
@@ -0,0 +1,27 @@
+/*! \file DoubleTransientMatParam.h 
+ *  \brief: header file for DoubleTransientMatParam object
+ */
+
+#ifndef _DOUBLETRANSIENTMATPARAM_H_
+#define _DOUBLETRANSIENTMATPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class DoubleTransientMatParam: public DoubleMatParam{
+
+	public:
+		/*DoubleTransientMatParam constructors, destructors: {{{*/
+		DoubleTransientMatParam(int enum_type,IssmDouble* value,int M,int N);
+		/*}}}*/
+};
+#endif  /* _DOUBLETRANSIENTMATPARAM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleVecParam.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleVecParam.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleVecParam.cpp	(revision 21239)
@@ -0,0 +1,131 @@
+/*!\file DoubleVecParam.c
+ * \brief: implementation of the DoubleVecParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+/*DoubleVecParam constructors and destructor*/
+DoubleVecParam::DoubleVecParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+DoubleVecParam::DoubleVecParam(int in_enum_type,IssmDouble* in_values, int in_M){/*{{{*/
+
+	enum_type=in_enum_type;
+	M=in_M;
+
+	if(M){
+		values=xNew<IssmDouble>(M);
+		xMemCpy<IssmDouble>(values,in_values,M);
+	}
+	else values=NULL;
+}
+/*}}}*/
+DoubleVecParam::~DoubleVecParam(){/*{{{*/
+	xDelete<IssmDouble>(values);
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* DoubleVecParam::copy() {/*{{{*/
+
+	return new DoubleVecParam(this->enum_type,this->values,this->M);
+
+}
+/*}}}*/
+void DoubleVecParam::DeepEcho(void){/*{{{*/
+	_printf_(setw(22)<<"   DoubleVecParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" "<<"[");
+	for(int i=0;i<this->M;i++) _printf_(" "<< this->values[i]);
+	_printf_("\n");
+}
+/*}}}*/
+void DoubleVecParam::Echo(void){/*{{{*/
+
+	_printf_(setw(22)<<"   DoubleVecParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" size: "<<this->M<<"\n");
+
+}
+/*}}}*/
+int    DoubleVecParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void DoubleVecParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(DoubleVecParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(M);
+	MARSHALLING_DYNAMIC(values,IssmDouble,M);
+
+}
+/*}}}*/
+int DoubleVecParam::ObjectEnum(void){/*{{{*/
+
+	return DoubleVecParamEnum;
+
+}
+/*}}}*/
+
+/*DoubleVecParam virtual functions definitions: */
+void  DoubleVecParam::GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){/*{{{*/
+	IssmDouble* output=NULL;
+	int M;
+
+	M=this->M;
+	output=xNew<IssmDouble>(M);
+	xMemCpy<IssmDouble>(output,values,M);
+
+	/*Assign output pointers:*/
+	if(pM) *pM=M;
+	*pIssmDoublearray=output;
+}
+/*}}}*/
+void  DoubleVecParam::GetParameterValue(IssmDouble** pIssmDoublearray,int* pM,int* pN){/*{{{*/
+	IssmDouble* output=NULL;
+	int M;
+	int N;
+
+	N=1;
+	M=this->M;
+	output=xNew<IssmDouble>(M);
+	xMemCpy<IssmDouble>(output,values,M);
+
+	/*Assign output pointers:*/
+	if(pM) *pM=M;
+	if(pN) *pN=N;
+	*pIssmDoublearray=output;
+}
+/*}}}*/
+void  DoubleVecParam::GetParameterValue(int** pintarray,int* pM){/*{{{*/
+	_error_("DoubleVec param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return an array of int");
+}
+/*}}}*/
+void  DoubleVecParam::SetValue(IssmDouble* IssmDoublearray,int in_M){/*{{{*/
+
+	/*avoid leak: */
+	xDelete<IssmDouble>(this->values);
+
+	this->values=xNew<IssmDouble>(in_M);
+	xMemCpy<IssmDouble>(this->values,IssmDoublearray,in_M);
+
+	this->M=in_M;
+}
+/*}}}*/
+
+/*DoubleVecParam specific routines:*/
+void  DoubleVecParam::GetParameterValueByPointer(IssmDouble** pIssmDoublearray,int* pM){/*{{{*/
+	
+	/*Assign output pointers:*/
+	if(pM) *pM=M;
+	*pIssmDoublearray=values;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleVecParam.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleVecParam.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/DoubleVecParam.h	(revision 21239)
@@ -0,0 +1,79 @@
+/*! \file DoubleVecParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _DOUBLEVECPARAM_H_
+#define _DOUBLEVECPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class DoubleVecParam: public Param{
+
+	private: 
+		int         enum_type;
+		IssmDouble *values;
+		int         M;
+
+	public:
+		/*DoubleVecParam constructors, destructors: {{{*/
+		DoubleVecParam();
+		DoubleVecParam(int enum_type,IssmDouble* values,int M);
+		~DoubleVecParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param virtual functions definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM);
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");};
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM);
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN);
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M);
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble mat array");}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int mat array");};
+		void  SetValue(int* pintarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int mat array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		/*}}}*/
+		/*DoubleVecParam specific routines:{{{*/
+		void  GetParameterValueByPointer(IssmDouble** pIssmDoublearray,int* pM);
+		/*}}}*/
+
+};
+#endif  /* _DOUBLEVECPARAM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/FileParam.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/FileParam.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/FileParam.cpp	(revision 21239)
@@ -0,0 +1,66 @@
+/*!\file FileParam.c
+ * \brief: implementation of the FileParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+/*FileParam constructors and destructor*/
+FileParam::FileParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+FileParam::FileParam(int in_enum_type,FILE* in_value){/*{{{*/
+
+	enum_type=in_enum_type;
+	value=in_value;
+}
+/*}}}*/
+FileParam::~FileParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* FileParam::copy() {/*{{{*/
+
+	return new FileParam(this->enum_type,this->value);
+
+}
+/*}}}*/
+void FileParam::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(22)<<"   FileParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" "<<this->value<<"\n");
+}
+/*}}}*/
+void FileParam::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  FileParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void FileParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(FileParamEnum);
+	MARSHALLING(enum_type);
+	MARSHALLING(value);
+
+	if(marshall_direction==MARSHALLING_BACKWARD) value=NULL; //meaningless file pointer!
+
+}
+/*}}}*/
+int  FileParam::ObjectEnum(void){/*{{{*/
+
+	return FileParamEnum;
+
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/FileParam.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/FileParam.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/FileParam.h	(revision 21239)
@@ -0,0 +1,74 @@
+/*! \file FileParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _FILEPARAM_H_
+#define _FILEPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class FileParam: public Param{
+
+	private: 
+		int   enum_type;
+		FILE* value;
+
+	public:
+		/*FileParam constructors, destructors: {{{*/
+		FileParam();
+		FileParam(int enum_type,FILE* fid);
+		~FileParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){  _error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("File param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){*pfid=value;};
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(int* pintarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("File param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("File param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold an array of matrices");}
+		/*}}}*/
+};
+#endif  /* _INTPARAM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/GenericParam.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/GenericParam.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/GenericParam.h	(revision 21239)
@@ -0,0 +1,101 @@
+/*
+ * GenericParam.h
+ *
+ *  Created on: Aug 29, 2012
+ *      Author: utke
+ */
+
+#ifndef GENERICPARAM_H_
+#define GENERICPARAM_H_
+
+/*Headers:*/
+#ifdef HAVE_CONFIG_H
+        #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./Param.h"
+#include "../../shared/shared.h"
+
+/**
+ * here we have a class that holds an instance of P
+ * but because it should live side by side with
+ * the other instances derived from Param it - unfortunately -
+ * inherits all the accessors that are useless in this context
+ */
+template <class P> class GenericParam: public Param{
+
+        private:
+                P myP;
+                int myEnumVal;
+
+        public:
+                /*GenericParam constructors, destructors: {{{*/
+                GenericParam(int enumVal) : myEnumVal(enumVal){};
+                GenericParam(P Pin, int enumVal) : myP(Pin),myEnumVal(enumVal){};
+                ~GenericParam(){};
+                /*}}}*/
+                /*Object virtual functions definitions:{{{ */
+                // unfortunately,  having to implement such a printer method implies
+                // that any structured P must provide the friend << operator
+                Param* copy() { return new GenericParam<P>(*this); };
+                void  DeepEcho() {
+                  _printf_("GenericParam:\n");
+                  _printf_("   enum:  " << myEnumVal << " (" << EnumToStringx(myEnumVal) << ")\n");
+                  _printf_("   value: " << myP << "\n");;
+                }
+                void  Echo() {DeepEcho();};
+                int   Id(){ return -1; };
+
+                // the "copy"  has to implement the base class abstract function
+                // but I would prefer to drop this not to hide a "new" in here because
+                // it does not clarify  ownership of the newed up instance...
+                // use the default copy constructor instead
+					 void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){
+						 _printf_("   WARNING: parameter "<<EnumToStringx(this->myEnumVal)<<" is a GenericParam and cannot be marshalled\n");
+						 /*Nothing for now*/
+					 }
+                int   ObjectEnum() {return GenericParamEnum;};
+
+                /*}}}*/
+                /*Param vritual function definitions: {{{*/
+                P& GetParameterValue() { return myP;}
+                const P& GetParameterValue()const { return myP;};
+                int   InstanceEnum(){return myEnumVal;}
+
+                // none of these apply ...
+                void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a bool");}
+                void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return an integer");}
+                void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return an array of integers");}
+                void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return an array of integers");}
+                void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a IssmDouble");}
+                void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a IssmDouble for a given time");}
+                void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a string");}
+                void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a string array");}
+                void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a IssmDouble array");}
+                void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a IssmDouble array");}
+                void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a matrix array");}
+                void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a Vec");}
+                void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a Mat");}
+                void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a FILE");}
+				void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a DataSet");}
+
+					 void  SetEnum(int enum_in){this->myEnumVal = enum_in;};
+                void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold a bool");}
+                void  SetValue(int integer){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold an integer");}
+                void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold an int array");}
+                void  SetValue(int* intarray,int M,int N){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold an int array");}
+                void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold an IssmDouble");}
+                void  SetValue(char* string){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold a string");}
+                void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold a string array");}
+                void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold a IssmDouble array");}
+                void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold a IssmDouble array");}
+                void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold a Vec");}
+                void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold a Mat");}
+                void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold a FILE");}
+                void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold an array of matrices");}
+
+                /*}}}*/
+};
+
+#endif /* GENERICPARAM_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/IntMatParam.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/IntMatParam.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/IntMatParam.cpp	(revision 21239)
@@ -0,0 +1,110 @@
+/*!\file IntMatParam.c
+ * \brief: implementation of the IntMatParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+/*IntMatParam constructors and destructor*/
+IntMatParam::IntMatParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+IntMatParam::IntMatParam(int in_enum_type,int* in_value, int in_M,int in_N){/*{{{*/
+
+	enum_type=in_enum_type;
+	M=in_M;
+	N=in_N;
+
+	value=xNew<int>(M*N);
+	xMemCpy<int>(value,in_value,M*N);
+}
+/*}}}*/
+IntMatParam::~IntMatParam(){/*{{{*/
+	xDelete<int>(value);
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* IntMatParam::copy() {/*{{{*/
+
+	return new IntMatParam(this->enum_type,this->value,this->M,this->N);
+
+}
+/*}}}*/
+void IntMatParam::DeepEcho(void){/*{{{*/
+
+	int i,j;
+
+	_printf_("IntMatParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   matrix size: " << this->M << "x" << this->N << "\n");
+	for(i=0;i<this->M;i++){
+		for(j=0;j<this->N;j++){
+			_printf_("(" << i << "," << j << ") " << *(this->value+N*i+j) << "\n");
+		}
+	}
+}
+/*}}}*/
+void IntMatParam::Echo(void){/*{{{*/
+
+	_printf_("IntMatParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   matrix size: " << this->M << "x" << this->N << "\n");
+
+}
+/*}}}*/
+int  IntMatParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void IntMatParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(IntMatParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(M);
+	MARSHALLING(N);
+	MARSHALLING_DYNAMIC(value,int,M*N);
+}
+/*}}}*/
+int  IntMatParam::ObjectEnum(void){/*{{{*/
+
+	return IntMatParamEnum;
+
+}
+/*}}}*/
+
+/*IntMatParam virtual functions definitions: */
+void  IntMatParam::GetParameterValue(int** pintarray,int* pM,int* pN){/*{{{*/
+	int* output=NULL;
+
+	output=xNew<int>(M*N);
+	xMemCpy<int>(output,value,M*N);
+
+	/*Assign output pointers:*/
+	if(pM) *pM=M;
+	if(pN) *pN=N;
+	*pintarray=output;
+}
+/*}}}*/
+void  IntMatParam::SetValue(int* intarray,int in_M,int in_N){/*{{{*/
+
+	/*avoid leak: */
+	xDelete<int>(this->value);
+
+	this->value=xNew<int>(in_M*in_N);
+	xMemCpy<int>(this->value,intarray,in_M*in_N);
+
+	this->M=in_M;
+	this->N=in_N;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/IntMatParam.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/IntMatParam.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/IntMatParam.h	(revision 21239)
@@ -0,0 +1,76 @@
+/*! \file IntMatParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _INTMATPARAM_H_
+#define _INTMATPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class IntMatParam: public Param{
+
+	private: 
+		int enum_type;
+		int* value;
+		int M;
+		int N;
+
+	public:
+		/*IntMatParam constructors, destructors: {{{*/
+		IntMatParam();
+		IntMatParam(int enum_type,int* value,int M,int N);
+		~IntMatParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN);
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");};
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble vec array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble vec array");};
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int vec array");};
+		void  SetValue(int* intarray,int M,int N);
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		/*}}}*/
+};
+#endif  /* _INTMATPARAM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/IntParam.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/IntParam.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/IntParam.cpp	(revision 21239)
@@ -0,0 +1,66 @@
+/*!\file IntParam.c
+ * \brief: implementation of the IntParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*IntParam constructors and destructor*/
+IntParam::IntParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+IntParam::IntParam(int in_enum_type,IssmInt in_value){/*{{{*/
+
+	enum_type=in_enum_type;
+	value=in_value;
+}
+/*}}}*/
+IntParam::~IntParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* IntParam::copy() {/*{{{*/
+
+	return new IntParam(this->enum_type,this->value);
+
+}
+/*}}}*/
+void IntParam::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(22)<<"   IntParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" "<<this->value<<"\n");
+}
+/*}}}*/
+void IntParam::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  IntParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void IntParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(IntParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(value);
+
+}
+/*}}}*/
+int  IntParam::ObjectEnum(void){/*{{{*/
+
+	return IntParamEnum;
+
+}
+/*}}}*/
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/IntParam.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/IntParam.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/IntParam.h	(revision 21239)
@@ -0,0 +1,75 @@
+/*! \file IntParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _INTPARAM_H_
+#define _INTPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class IntParam: public Param{
+
+	private: 
+		/*just hold 3 values for 3 vertices: */
+		int enum_type;
+		IssmInt value;
+
+	public:
+		/*IntParam constructors, destructors: {{{*/
+		IntParam();
+		IntParam(int enum_type,IssmInt value);
+		~IntParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){*pinteger=value;}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a bool");}
+		void  SetValue(int integer){this->value=integer;}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an int array");}
+		void  SetValue(int* intarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an int array");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmDouble");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		/*}}}*/
+};
+#endif  /* _INTPARAM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/IntVecParam.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/IntVecParam.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/IntVecParam.cpp	(revision 21239)
@@ -0,0 +1,128 @@
+/*!\file IntVecParam.c
+ * \brief: implementation of the IntVecParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*IntVecParam constructors and destructor*/
+IntVecParam::IntVecParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+IntVecParam::IntVecParam(int in_enum_type,int* in_values, int in_M){/*{{{*/
+
+	enum_type=in_enum_type;
+	M=in_M;
+
+	if(M){
+		values=xNew<int>(M);
+		xMemCpy<int>(values,in_values,M);
+	}
+	else values=NULL;
+}
+/*}}}*/
+IntVecParam::IntVecParam(int in_enum_type,IssmDouble* in_values, int in_M){/*{{{*/
+
+	enum_type=in_enum_type;
+	M=in_M;
+
+	if(M){
+		values=xNew<int>(M);
+		for(int i=0;i<in_M;i++) values[i]=reCast<int>(in_values[i]);
+	}
+	else values=NULL;
+}
+/*}}}*/
+IntVecParam::~IntVecParam(){/*{{{*/
+	xDelete<int>(values);
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* IntVecParam::copy() {/*{{{*/
+
+	return new IntVecParam(this->enum_type,this->values,this->M);
+
+}
+/*}}}*/
+void IntVecParam::DeepEcho(void){/*{{{*/
+
+	int i;
+
+	_printf_("IntVecParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   vector size: " << this->M << "\n");
+	for(i=0;i<this->M;i++){
+		_printf_(i << " " << this->values[i] << "\n");
+	}
+}
+/*}}}*/
+void IntVecParam::Echo(void){/*{{{*/
+
+	_printf_("IntVecParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   vector size: " << this->M << "\n");
+
+}
+/*}}}*/
+int  IntVecParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void IntVecParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(IntVecParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(M);
+	if(M) { 
+		MARSHALLING_DYNAMIC(values,int,M);
+	}
+	else values=NULL;
+
+}
+/*}}}*/
+int  IntVecParam::ObjectEnum(void){/*{{{*/
+
+	return IntVecParamEnum;
+
+}
+/*}}}*/
+
+/*IntVecParam virtual functions definitions: */
+void  IntVecParam::GetParameterValue(int** pintarray,int* pM){/*{{{*/
+	int* output=NULL;
+
+	if(M){
+		output=xNew<int>(M);
+		xMemCpy<int>(output,values,M);
+	}
+
+	/*Assign output pointers:*/
+	if(pM) *pM=M;
+	*pintarray=output;
+}
+/*}}}*/
+void  IntVecParam::SetValue(int* intarray,int in_M){/*{{{*/
+
+	/*avoid leak: */
+	xDelete<int>(this->values);
+
+	if(in_M){
+		this->values=xNew<int>(in_M);
+		xMemCpy<int>(this->values,intarray,in_M);
+	}
+	else this->values=NULL;
+
+	this->M=in_M;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/IntVecParam.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/IntVecParam.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/IntVecParam.h	(revision 21239)
@@ -0,0 +1,76 @@
+/*! \file IntVecParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _INTVECPARAM_H_
+#define _INTVECPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class IntVecParam: public Param{
+
+	private: 
+		int enum_type;
+		int* values;
+		int M;
+
+	public:
+		/*IntVecParam constructors, destructors: {{{*/
+		IntVecParam();
+		IntVecParam(int enum_type,int* values,int M);
+		IntVecParam(int enum_type,IssmDouble* values,int M);
+		~IntVecParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param virtual functions definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM);
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array (maybe in serial?)");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble mat array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble mat array");}
+		void  SetValue(int* intarray,int M);
+		void  SetValue(int* pintarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int mat array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		/*}}}*/
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/MatrixParam.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/MatrixParam.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/MatrixParam.cpp	(revision 21239)
@@ -0,0 +1,85 @@
+/*!\file MatrixParam.c
+ * \brief: implementation of the MatrixParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*MatrixParam constructors and destructor*/
+MatrixParam::MatrixParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+MatrixParam::MatrixParam(int in_enum_type,Matrix<IssmDouble>* in_value){/*{{{*/
+
+	enum_type=in_enum_type;
+	value=NULL;
+
+	if(in_value){
+		value=in_value->Duplicate();
+	}
+}
+/*}}}*/
+MatrixParam::~MatrixParam(){/*{{{*/
+	delete value;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* MatrixParam::copy() {/*{{{*/
+
+	return new MatrixParam(this->enum_type,this->value);
+
+}
+/*}}}*/
+void MatrixParam::DeepEcho(void){/*{{{*/
+
+	_printf_("MatrixParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	this->value->Echo();
+}
+/*}}}*/
+void MatrixParam::Echo(void){/*{{{*/
+
+	_printf_("MatrixParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+
+}
+/*}}}*/
+int  MatrixParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+int MatrixParam::ObjectEnum(void){/*{{{*/
+
+	return MatrixParamEnum;
+
+}
+/*}}}*/
+
+/*MatrixParam virtual functions definitions: */
+void  MatrixParam::GetParameterValue(Matrix<IssmDouble>** poutput){/*{{{*/
+	Matrix<IssmDouble>* output=NULL;
+
+	if(value){
+		output=value->Duplicate();
+	}
+	*poutput=output;
+}
+/*}}}*/
+void  MatrixParam::SetValue(Matrix<IssmDouble>* matrix){/*{{{*/
+
+	/*avoid leak: */
+	delete value;
+
+	/*copy: */
+	value=matrix->Duplicate();
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/MatrixParam.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/MatrixParam.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/MatrixParam.h	(revision 21239)
@@ -0,0 +1,75 @@
+/*! \file MatrixParam.h 
+ *  \brief: header file for MatrixParam object
+ */
+
+#ifndef _MATRIXPARAM_H_
+#define _MATRIXPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class MatrixParam: public Param{
+
+	private: 
+		/*just hold 3 values for 3 vertices: */
+		int enum_type;
+		Matrix<IssmDouble>* value;
+
+	public:
+		/*MatrixParam constructors, destructors: {{{*/
+		MatrixParam();
+		MatrixParam(int enum_type,Matrix<IssmDouble>* value);
+		~MatrixParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** poutput);
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(int* pintarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat);
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		/*}}}*/
+};
+#endif  /* _MATRIXPARAM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/Param.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/Param.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/Param.h	(revision 21239)
@@ -0,0 +1,63 @@
+/*!\file:  Param.h
+ * \brief abstract class for Param object
+ */ 
+
+#ifndef _PARAM_H_
+#define _PARAM_H_
+
+/*Headers:*/
+/*{{{*/
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../datastructures/datastructures.h"
+#include "../Node.h"
+/*}}}*/
+
+class Param{
+
+	public: 
+		virtual        ~Param(){};
+
+		/*Virtual functions:*/
+		virtual Param* copy()=0;
+		virtual void  Echo()=0;
+		virtual void  GetParameterValue(bool* pbool)=0;
+		virtual void  GetParameterValue(int* pinteger)=0;
+		virtual void  GetParameterValue(int** pintarray,int* pM)=0;
+		virtual void  GetParameterValue(int** pintarray,int* pM,int* pN)=0;
+		virtual void  GetParameterValue(IssmDouble* pIssmDouble)=0;
+		virtual void  GetParameterValue(IssmDouble* pdouble,IssmDouble time)=0;
+		virtual void  GetParameterValue(char** pstring)=0;
+		virtual void  GetParameterValue(char*** pstringarray,int* pM)=0;
+		virtual void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM)=0;
+		virtual void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM,int* pN)=0;
+		virtual void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims)=0;
+		virtual void  GetParameterValue(Vector<IssmDouble>** pvec)=0;
+		virtual void  GetParameterValue(Matrix<IssmDouble>** pmat)=0;
+		virtual void  GetParameterValue(FILE** pfid)=0;
+		virtual void  GetParameterValue(DataSet** pdataset)=0;
+		virtual int   InstanceEnum()=0;
+		virtual void Marshall(char** pmarshalled_data, int* pmarshalled_data_size, int marshall_direction)=0;
+		virtual int   ObjectEnum()=0;
+
+		virtual void  SetEnum(int enum_in)=0;
+		virtual void  SetValue(bool boolean)=0;
+		virtual void  SetValue(int integer)=0;
+		virtual void  SetValue(IssmDouble scalar)=0;
+		virtual void  SetValue(char* string)=0;
+		virtual void  SetValue(char** stringarray,int M)=0;
+		virtual void  SetValue(IssmDouble* IssmDoublearray,int M)=0;
+		virtual void  SetValue(IssmDouble* pIssmDoublearray,int M,int N)=0;
+		virtual void  SetValue(int* intarray,int M)=0;
+		virtual void  SetValue(int* pintarray,int M,int N)=0;
+		virtual void  SetValue(Vector<IssmDouble>* vec)=0;
+		virtual void  SetValue(Matrix<IssmDouble>* mat)=0;
+		virtual void  SetValue(FILE* fid)=0;
+		virtual void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array)=0;
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/Parameters.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/Parameters.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/Parameters.cpp	(revision 21239)
@@ -0,0 +1,663 @@
+/*
+ * \file Parameters.cpp
+ * \brief: Implementation of the Parameters class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <vector>
+#include <functional>
+#include <algorithm>
+#include <iostream>
+
+#include "./Parameters.h"
+#include "./Param.h"
+
+#include "./BoolParam.h"
+#include "./DoubleMatParam.h"
+#include "./DataSetParam.h"
+#include "./DoubleParam.h"
+#include "./DoubleVecParam.h"
+#include "./IntParam.h"
+#include "./IntVecParam.h"
+#include "./IntMatParam.h"
+#include "./FileParam.h"
+#include "./MatrixParam.h"
+#include "./VectorParam.h"
+#include "./StringArrayParam.h"
+#include "./StringParam.h"
+#include "./DoubleMatArrayParam.h"
+#include "./TransientParam.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+Parameters::Parameters(){/*{{{*/
+	for(int i=0;i<NUMPARAMS;i++) this->params[i] = NULL;
+	return;
+}
+/*}}}*/
+Parameters::~Parameters(){/*{{{*/
+	for(int i=0;i<NUMPARAMS;i++){
+		if(this->params[i]) delete this->params[i];
+	}
+	return;
+}
+/*}}}*/
+
+void Parameters::AddObject(Param* newparam){/*{{{*/
+
+	/*Get Enum from Param*/
+	_assert_(newparam);
+	int param_enum = newparam->InstanceEnum();
+
+	/*Get index in array*/
+	#ifdef _ISSM_DEBUG_
+	if(param_enum<=ParametersSTARTEnum) _error_("Enum "<<EnumToStringx(param_enum)<<" should appear after ParametersSTARTEnum");
+	if(param_enum>=ParametersENDEnum)   _error_("Enum "<<EnumToStringx(param_enum)<<" should appear before ParametersENDEnum");
+	#endif
+	int index = param_enum - ParametersSTARTEnum -1;
+
+	/*Delete param if it already exists*/
+	if(this->params[index]){
+		delete this->params[index];
+		this->params[index] = NULL;
+	}
+
+	/*Add param to array*/
+	this->params[index] = newparam;
+}
+/*}}}*/
+Parameters* Parameters::Copy(void){/*{{{*/
+
+	Parameters* output = new Parameters();
+
+	for(int i=0;i<NUMPARAMS;i++){
+		if(this->params[i]){
+			output->params[i]=this->params[i]->copy();
+		}
+	}
+
+	return output;
+}
+/*}}}*/
+void Parameters::DeepEcho(void){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+void Parameters::Echo(void){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+void Parameters::Marshall(char** pmarshalled_data, int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+
+	int obj_enum=-1;
+	int num_params=0;
+
+	MARSHALLING_ENUM(ParametersEnum);
+
+	if(marshall_direction==MARSHALLING_FORWARD || marshall_direction==MARSHALLING_SIZE){
+
+		/*Marshall num_params first*/
+		for(int i=0;i<NUMPARAMS;i++){
+			if(this->params[i]) num_params++;
+		}
+		MARSHALLING(num_params);
+
+		/*Marshall Parameters one by one now*/
+		for(int i=0;i<NUMPARAMS;i++){
+			if(this->params[i]){
+				obj_enum = this->params[i]->ObjectEnum();
+				MARSHALLING(obj_enum);
+				this->params[i]->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+			}
+		}
+	}
+	else{
+
+		/*Get number of params marshalled*/
+		MARSHALLING(num_params);
+
+		/*Recover parameters one by one*/
+		for(int i=0;i<num_params;i++){
+
+			/*Recover enum of object first: */
+			MARSHALLING(obj_enum); 
+
+			if(obj_enum==DoubleParamEnum){
+				DoubleParam* doubleparam=NULL;
+				doubleparam=new DoubleParam();
+				doubleparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(doubleparam);
+			}
+			else if(obj_enum==IntParamEnum){
+				IntParam* intparam=NULL;
+				intparam=new IntParam();
+				intparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(intparam);
+			}
+			else if(obj_enum==IntMatParamEnum){
+				IntMatParam* intmparam=NULL;
+				intmparam=new IntMatParam();
+				intmparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(intmparam);
+			}
+			else if(obj_enum==IntVecParamEnum){
+				IntVecParam* intvparam=NULL;
+				intvparam=new IntVecParam();
+				intvparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(intvparam);
+			}
+			else if(obj_enum==BoolParamEnum){
+				BoolParam* boolparam=NULL;
+				boolparam=new BoolParam();
+				boolparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(boolparam);
+			}
+			else if(obj_enum==DataSetParamEnum){
+				DataSetParam* dsparam=NULL;
+				dsparam=new DataSetParam();
+				dsparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(dsparam);
+			}
+			else if(obj_enum==DoubleMatArrayParamEnum){
+				DoubleMatArrayParam* dmaparam=NULL;
+				dmaparam=new DoubleMatArrayParam();
+				dmaparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(dmaparam);
+			}
+			else if(obj_enum==DoubleMatParamEnum){
+				DoubleMatParam* dmparam=NULL;
+				dmparam=new DoubleMatParam();
+				dmparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(dmparam);
+			}
+			else if(obj_enum==DoubleVecParamEnum){
+				DoubleVecParam* dvparam=NULL;
+				dvparam=new DoubleVecParam();
+				dvparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(dvparam);
+			}
+			else if(obj_enum==FileParamEnum){
+				FileParam* fileparam=NULL;
+				fileparam=new FileParam();
+				fileparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				delete fileparam;
+				/* No need to add this object, the pointer is not valid             
+					The FemModel should reset all FileParams in the restart function */
+			}
+			else if(obj_enum==StringParamEnum){
+				StringParam* sparam=NULL;
+				sparam=new StringParam();
+				sparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(sparam);
+			}
+			else if(obj_enum==StringArrayParamEnum){
+				StringArrayParam* saparam=NULL;
+				saparam=new StringArrayParam();
+				saparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(saparam);
+			}
+			else if(obj_enum==TransientParamEnum){
+				TransientParam* transparam=NULL;
+				transparam=new TransientParam();
+				transparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(transparam);
+			}
+			else if(obj_enum==GenericParamEnum){
+				/*Skip for now (we don't want to Marhsall Comms*/
+			}
+		}
+	}
+}
+/*}}}*/
+
+/*Object management*/
+void Parameters::Delete(int param_enum){/*{{{*/
+
+	_assert_(param_enum>ParametersSTARTEnum);
+	_assert_(param_enum<ParametersENDEnum);
+
+	int index = param_enum - ParametersSTARTEnum -1;
+	if(this->params[index]){
+		delete this->params[index];
+		this->params[index] = NULL;
+	}
+
+	return;
+}
+/*}}}*/
+bool Parameters::Exist(int param_enum){/*{{{*/
+
+	_assert_(param_enum>ParametersSTARTEnum);
+	_assert_(param_enum<ParametersENDEnum);
+
+	int index = param_enum - ParametersSTARTEnum -1;
+	if(this->params[index]) return true;
+
+	return false;
+}
+/*}}}*/
+void Parameters::FindParam(bool* pbool,int param_enum){ _assert_(this);/*{{{*/
+
+	_assert_(param_enum>ParametersSTARTEnum);
+	_assert_(param_enum<ParametersENDEnum);
+
+	int index = param_enum - ParametersSTARTEnum -1;
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pbool);
+}
+/*}}}*/
+void Parameters::FindParam(int* pinteger,int param_enum){ _assert_(this);/*{{{*/
+
+	_assert_(param_enum>ParametersSTARTEnum);
+	_assert_(param_enum<ParametersENDEnum);
+
+	int index = param_enum - ParametersSTARTEnum -1;
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pinteger);
+}
+/*}}}*/
+void Parameters::FindParam(IssmDouble* pscalar,int param_enum){ _assert_(this);/*{{{*/
+
+	_assert_(param_enum>ParametersSTARTEnum);
+	_assert_(param_enum<ParametersENDEnum);
+
+	int index = param_enum - ParametersSTARTEnum -1;
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pscalar);
+}
+/*}}}*/
+void Parameters::FindParam(IssmDouble* pscalar, int param_enum,IssmDouble time){ _assert_(this);/*{{{*/
+
+	_assert_(param_enum>ParametersSTARTEnum);
+	_assert_(param_enum<ParametersENDEnum);
+
+	int index = param_enum - ParametersSTARTEnum -1;
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pscalar,time);
+}
+/*}}}*/
+void Parameters::FindParam(char** pstring,int param_enum){ _assert_(this);/*{{{*/
+
+	_assert_(param_enum>ParametersSTARTEnum);
+	_assert_(param_enum<ParametersENDEnum);
+
+	int index = param_enum - ParametersSTARTEnum -1;
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pstring);
+
+}
+/*}}}*/
+void Parameters::FindParam(char*** pstringarray,int* pM,int param_enum){ _assert_(this);/*{{{*/
+
+	_assert_(param_enum>ParametersSTARTEnum);
+	_assert_(param_enum<ParametersENDEnum);
+
+	int index = param_enum - ParametersSTARTEnum -1;
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pstringarray,pM);
+}
+/*}}}*/
+void Parameters::FindParam(int** pintarray,int* pM, int param_enum){ _assert_(this);/*{{{*/
+
+	_assert_(param_enum>ParametersSTARTEnum);
+	_assert_(param_enum<ParametersENDEnum);
+
+	int index = param_enum - ParametersSTARTEnum -1;
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pintarray,pM);
+
+}
+/*}}}*/
+void Parameters::FindParam(int** pintarray,int* pM,int *pN,int param_enum){ _assert_(this);/*{{{*/
+
+	_assert_(param_enum>ParametersSTARTEnum);
+	_assert_(param_enum<ParametersENDEnum);
+
+	int index = param_enum - ParametersSTARTEnum -1;
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pintarray,pM,pN);
+
+}
+/*}}}*/
+void Parameters::FindParam(IssmDouble** pIssmDoublearray,int* pM, int param_enum){ _assert_(this);/*{{{*/
+
+	_assert_(param_enum>ParametersSTARTEnum);
+	_assert_(param_enum<ParametersENDEnum);
+
+	int index = param_enum - ParametersSTARTEnum -1;
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pIssmDoublearray,pM);
+}
+/*}}}*/
+void Parameters::FindParam(IssmDouble** pIssmDoublearray,int* pM, int* pN,int param_enum){ _assert_(this);/*{{{*/
+
+	_assert_(param_enum>ParametersSTARTEnum);
+	_assert_(param_enum<ParametersENDEnum);
+
+	int index = param_enum - ParametersSTARTEnum -1;
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pIssmDoublearray,pM,pN);
+}
+/*}}}*/
+void Parameters::FindParam(IssmDouble*** parray,int* pM,int** pmdims_array,int** pndims_array,int param_enum){ _assert_(this);/*{{{*/
+
+	_assert_(param_enum>ParametersSTARTEnum);
+	_assert_(param_enum<ParametersENDEnum);
+
+	int index = param_enum - ParametersSTARTEnum -1;
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(parray,pM,pmdims_array,pndims_array);
+}
+/*}}}*/
+void Parameters::FindParam(Vector<IssmDouble>** pvec,int param_enum){ _assert_(this);/*{{{*/
+
+	_assert_(param_enum>ParametersSTARTEnum);
+	_assert_(param_enum<ParametersENDEnum);
+
+	int index = param_enum - ParametersSTARTEnum -1;
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pvec);
+}
+/*}}}*/
+void Parameters::FindParam(Matrix<IssmDouble>** pmat,int param_enum){ _assert_(this);/*{{{*/
+
+	_assert_(param_enum>ParametersSTARTEnum);
+	_assert_(param_enum<ParametersENDEnum);
+
+	int index = param_enum - ParametersSTARTEnum -1;
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pmat);
+}
+/*}}}*/
+void Parameters::FindParam(FILE** pfid,int param_enum){ _assert_(this);/*{{{*/
+
+	_assert_(param_enum>ParametersSTARTEnum);
+	_assert_(param_enum<ParametersENDEnum);
+
+	int index = param_enum - ParametersSTARTEnum -1;
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pfid);
+}
+/*}}}*/
+void Parameters::FindParam(DataSet** pdataset,int param_enum){ /*{{{*/
+	_assert_(this);
+
+	_assert_(param_enum>ParametersSTARTEnum);
+	_assert_(param_enum<ParametersENDEnum);
+
+	int index = param_enum - ParametersSTARTEnum -1;
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pdataset);
+}
+/*}}}*/
+
+void   Parameters::SetParam(bool boolean,int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(boolean); //already exists, just set it.
+	else this->AddObject(new BoolParam(enum_type,boolean)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(int integer,int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(integer); //already exists, just set it.
+	else this->AddObject(new IntParam(enum_type,integer)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(IssmDouble scalar,int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(scalar); //already exists, just set it.
+	else this->AddObject(new DoubleParam(enum_type,scalar)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(char* string,int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(string); //already exists, just set it.
+	else this->AddObject(new StringParam(enum_type,string)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(char** stringarray,int M, int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(stringarray,M); //already exists, just set it.
+	else this->AddObject(new StringArrayParam(enum_type,stringarray,M)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(IssmDouble* IssmDoublearray,int M, int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(IssmDoublearray,M); //already exists, just set it.
+	else this->AddObject(new DoubleVecParam(enum_type,IssmDoublearray,M)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(IssmDouble* IssmDoublearray,int M, int N, int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(IssmDoublearray,M,N); //already exists, just set it.
+	else this->AddObject(new DoubleMatParam(enum_type,IssmDoublearray,M,N)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(int* intarray,int M, int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(intarray,M); //already exists, just set it.
+	else this->AddObject(new IntVecParam(enum_type,intarray,M)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(int* intarray,int M, int N, int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(intarray,M,N); //already exists, just set it.
+	else this->AddObject(new IntMatParam(enum_type,intarray,M,N)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(Vector<IssmDouble>* vector,int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(vector); //already exists, just set it.
+	else this->AddObject(new VectorParam(enum_type,vector)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(Matrix<IssmDouble>* matrix,int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(matrix); //already exists, just set it.
+	else this->AddObject(new MatrixParam(enum_type,matrix)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(FILE* fid,int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(fid); //already exists, just set it.
+	else this->AddObject(new FileParam(enum_type,fid)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(DataSet* dataset,int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(dataset); //already exists, just set it.
+	else this->AddObject(new DataSetParam(enum_type,dataset)); //just add the new parameter.
+}
+/*}}}*/
+
+Param* Parameters::FindParamObject(int param_enum){/*{{{*/
+
+	#ifdef _ISSM_DEBUG_
+	if(param_enum<=ParametersSTARTEnum) _error_("Enum "<<EnumToStringx(param_enum)<<" should appear after ParametersSTARTEnum");
+	if(param_enum>=ParametersENDEnum)   _error_("Enum "<<EnumToStringx(param_enum)<<" should appear before ParametersENDEnum");
+	#endif
+
+	int index = param_enum - ParametersSTARTEnum -1;
+	return this->params[index];
+}
+/*}}}*/
+
+/*Methods relating to parameters: */
+char* OptionsFromAnalysis(Parameters* parameters,int analysis_type){ /*{{{*/
+
+	/* figure out ISSM options for current analysis, return a string. */ 
+
+	/*output: */
+	char*   outstring=NULL;
+
+	/*intermediary: */
+	int          dummy;
+	IssmDouble  *analyses    = NULL;
+	char       **strings     = NULL;
+	char        *string      = NULL;
+	int          numanalyses;
+	int          found       = -1;
+	int          i;
+
+	numanalyses=0;
+	parameters->FindParam(&strings,&numanalyses,ToolkitsOptionsStringsEnum);
+
+	parameters->FindParam(&analyses,&dummy,ToolkitsOptionsAnalysesEnum);
+
+	if(numanalyses==0)return NULL; //we did not find petsc options, don't bother.
+
+	/*ok, go through analyses and figure out if it corresponds to our analysis_type: */
+	for(i=0;i<numanalyses;i++){
+		if(analyses[i]==analysis_type){
+			found=i;
+			break;
+		}
+	}
+	if(found==-1){
+		/*still haven't found a list of petsc options, go find the default one, for analysis type DefaultAnalysisEnum: */
+		for(i=0;i<numanalyses;i++){
+			if(analyses[i]==DefaultAnalysisEnum){
+				found=i;
+				break;
+			}
+		}
+	}
+	if (found==-1){
+		_error_("could find neither a default analysis nor analysis " << EnumToStringx(analysis_type));
+	}
+
+	/*ok, grab the option string: */
+	outstring=xNew<char>(strlen(strings[found])+1);
+	strcpy(outstring,strings[found]);
+
+	/*Free ressources*/
+	xDelete<IssmDouble>(analyses);
+	for(i=0;i<numanalyses;i++){
+		string=strings[i];
+		xDelete<char>(string);
+	}
+	xDelete<char*>(strings);
+	return outstring;
+} 
+/*}}}*/
+void ToolkitsOptionsFromAnalysis(Parameters* parameters,int analysis_type){ /*{{{*/
+
+	/*!\file:  ToolkitsOptionsFromAnalysis.cpp
+	 * \brief: for each analysis, setup the issmoptions string. 
+	 * This is mainly for the case where we run our toolkits using petsc. In this case, we need to 
+	 * plug our toolkits options directly into the petsc options database. This is the case for each analysis type 
+	 * and parameters
+	 */ 
+
+	char* options=NULL;
+
+	/*Recover first the options string for this analysis: */
+	options=OptionsFromAnalysis(parameters,analysis_type);
+
+	/*Initialize our Toolkit Options: */
+	ToolkitOptions::Init(options);
+
+	#ifdef _HAVE_PETSC_
+		/*In case we are using PETSC, we do not rely on issmoptions. Instead, we dump issmoptions into the Petsc 
+		 * options database: */
+
+		#if _PETSC_MAJOR_ == 2 
+		PetscOptionsDestroy();
+		PetscOptionsCreate();
+		//PetscOptionsCheckInitial_Private();
+		//PetscOptionsCheckInitial_Components();
+		PetscOptionsSetFromOptions();
+		PetscOptionsInsertMultipleString(options); //our patch
+		#else
+		#if (_PETSC_MINOR_>=7)
+		PetscOptionsSetFromOptions(NULL);
+		PetscOptionsClear(NULL);
+		#else
+		PetscOptionsSetFromOptions();
+		PetscOptionsClear();
+		#endif
+		//PetscOptionsSetFromOptions();
+		PetscOptionsInsertMultipleString(options); //our patch
+		#endif
+
+	#endif
+
+	xDelete<char>(options);
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/Parameters.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/Parameters.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/Parameters.h	(revision 21239)
@@ -0,0 +1,76 @@
+#ifndef _CONTAINER_PARAMETERS_H_
+#define  _CONTAINER_PARAMETERS_H_
+#include <stdio.h>
+
+/*forward declarations */
+class Param;
+class DataSet;
+template <class doublematrix> class Matrix;
+template <class doubletype> class Vector;
+#include "../../shared/shared.h"
+
+#define NUMPARAMS ParametersENDEnum - ParametersSTARTEnum -1
+
+/*!\brief Declaration of Parameters class.  
+ *
+ * Declaration of Parameters class.  Parameters are a static array of Parameter objects.
+ */ 
+class Parameters{
+
+	private:
+		Param* params[NUMPARAMS];
+
+	public:
+
+		/*constructors, destructors*/ 
+		Parameters();
+		~Parameters();
+
+		/*numerics*/
+		void  AddObject(Param* newparam);
+		Parameters* Copy(void);
+		void  DeepEcho();
+		void  Echo();
+		void  Delete(int enum_type);
+		bool  Exist(int enum_type);
+		void  Marshall(char** pmarshalled_data, int* pmarshalled_data_size, int marshall_direction);
+
+		void  FindParam(bool* pinteger,int enum_type);
+		void  FindParam(int* pinteger,int enum_type);
+		void  FindParam(IssmDouble* pscalar, int enum_type);
+		void  FindParam(IssmDouble* pscalar, int enum_type,IssmDouble time);
+		void  FindParam(char** pstring,int enum_type);
+		void  FindParam(char*** pstringarray,int* pM,int enum_type);
+		void  FindParam(int** pintarray,int* pM,int enum_type);
+		void  FindParam(int** pintarray,int* pM,int* PN,int enum_type);
+		void  FindParam(IssmDouble** pIssmDoublearray,int* pM,int enum_type);
+		void  FindParam(IssmDouble** pIssmDoublearray,int* pM,int* pN,int enum_type);
+		void  FindParam(IssmDouble*** parray,int* pM, int** pmdims_array,int** pndims_array,int enum_type);
+		void  FindParam(Vector<IssmDouble>** pvec,int enum_type);
+		void  FindParam(Matrix<IssmDouble>** pmat,int enum_type);
+		void  FindParam(FILE** pfid,int enum_type);
+		void  FindParam(DataSet** pdataset, int enum_type);
+
+		void  SetParam(bool boolean,int enum_type);
+		void  SetParam(int integer,int enum_type);
+		void  SetParam(IssmDouble scalar, int enum_type);
+		void  SetParam(char* string,int enum_type);
+		void  SetParam(char** stringarray,int M,int enum_type);
+		void  SetParam(IssmDouble* IssmDoublearray,int M,int enum_type);
+		void  SetParam(IssmDouble* IssmDoublearray,int M,int N,int enum_type);
+		void  SetParam(int* intarray,int M,int enum_type);
+		void  SetParam(int* intarray,int M,int N,int enum_type);
+		void  SetParam(Vector<IssmDouble>* vec,int enum_type);
+		void  SetParam(Matrix<IssmDouble>* mat,int enum_type);
+		void  SetParam(FILE* fid,int enum_type);
+		void  SetParam(DataSet* dataset,int enum_type);
+
+		Param* FindParamObject(int enum_type);
+
+};
+
+/*Methods relating to parameters: */
+char *OptionsFromAnalysis(Parameters *parameters,int analysis_type);
+void  ToolkitsOptionsFromAnalysis(Parameters* parameters,int analysis_type);
+
+#endif //ifndef _PARAMETERS_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/StringArrayParam.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/StringArrayParam.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/StringArrayParam.cpp	(revision 21239)
@@ -0,0 +1,168 @@
+/*!\file StringArrayParam.c
+ * \brief: implementation of the StringArrayParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*StringArrayParam constructors and destructor*/
+StringArrayParam::StringArrayParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+StringArrayParam::StringArrayParam(int in_enum_type,char** in_values, int in_numstrings){/*{{{*/
+
+	int i;
+	int size;
+
+	enum_type=in_enum_type;
+	numstrings=in_numstrings;
+
+	if(numstrings){
+		value=xNew<char*>(numstrings);
+		for(i=0;i<numstrings;i++){
+			char* string=NULL;
+			size=strlen(in_values[i])+1;
+			string=xNew<char>(size);
+			xMemCpy<char>(string,in_values[i],size);
+			value[i]=string;
+		}
+	}
+	else value=NULL;
+
+}
+/*}}}*/
+StringArrayParam::~StringArrayParam(){/*{{{*/
+
+	int i;
+
+	char* string=NULL;
+	for(i=0;i<this->numstrings;i++){
+		string=value[i];
+		xDelete<char>(string);
+	}
+	xDelete<char*>(value);
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* StringArrayParam::copy() {/*{{{*/
+
+	return new StringArrayParam(this->enum_type,this->value,this->numstrings);
+
+}
+/*}}}*/
+void StringArrayParam::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(22)<<"   StringArrayParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" {");
+	for(int i=0;i<this->numstrings;i++) _printf_(" '"<<this->value[i]<<"'");
+	_printf_("}\n");
+}
+/*}}}*/
+void StringArrayParam::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int    StringArrayParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void StringArrayParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	int* sizes=NULL;
+
+	if(marshall_direction==MARSHALLING_FORWARD || marshall_direction==MARSHALLING_SIZE){
+		if(numstrings)sizes=xNew<int>(numstrings);
+		for(int i=0;i<numstrings;i++)sizes[i]=strlen(value[i])+1;
+	}	
+
+	MARSHALLING_ENUM(StringArrayParamEnum);
+	
+	MARSHALLING(enum_type);
+	MARSHALLING(numstrings);
+
+	if(numstrings){
+		MARSHALLING_DYNAMIC(sizes,int,numstrings);
+		if(marshall_direction==MARSHALLING_BACKWARD) value=xNew<char*>(numstrings);
+		for(int i=0;i<numstrings;i++)MARSHALLING_DYNAMIC(value[i],char,sizes[i]);
+	}
+	else value=NULL;
+
+	//cleanup sizes array
+	if(sizes) xDelete<int>(sizes);
+
+}
+/*}}}*/
+int StringArrayParam::ObjectEnum(void){/*{{{*/
+
+	return StringArrayParamEnum;
+
+}
+/*}}}*/
+
+/*StringArrayParam virtual functions definitions: */
+void  StringArrayParam::GetParameterValue(char*** pstringarray,int* pM){/*{{{*/
+
+	int   i;
+	char** outstrings=NULL;
+	int   M;
+	char* string=NULL;
+	char* string2=NULL;
+	int   stringsize;
+
+	M=this->numstrings;
+	if(this->numstrings){
+		outstrings=xNew<char*>(this->numstrings);
+
+		for(i=0;i<this->numstrings;i++){
+			string=this->value[i];
+			stringsize=strlen(string)+1;
+
+			string2=xNew<char>(stringsize);
+			xMemCpy<char>(string2,string,stringsize);
+
+			outstrings[i]=string2;
+		}
+	}
+	else outstrings=NULL;
+
+	/*Assign output pointers:*/
+	if(pM) *pM=M;
+	*pstringarray=outstrings;
+}
+/*}}}*/
+void  StringArrayParam::SetValue(char** stringarray,int M){/*{{{*/
+
+	int   i;
+	char *string     = NULL;
+	char *string2    = NULL;
+	int   stringsize;
+
+	/*first, avoid leak: */
+	for(i=0;i<this->numstrings;i++){
+		string=this->value[i];
+		xDelete<char>(string);
+	}
+	xDelete<char*>(this->value);
+
+	/*copy: */
+	this->numstrings=M;
+	this->value=xNew<char*>(this->numstrings);
+	for(i=0;i<this->numstrings;i++){
+		string=stringarray[i];
+		stringsize=strlen(string)+1;
+
+		string2=xNew<char>(stringsize);
+		xMemCpy<char>(string2,string,stringsize);
+
+		this->value[i]=string2;
+	}
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/StringArrayParam.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/StringArrayParam.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/StringArrayParam.h	(revision 21239)
@@ -0,0 +1,75 @@
+/*! \file StringArrayParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _STRINGARRAYPARAM_H_
+#define _STRINGARRAYPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class StringArrayParam: public Param{
+
+	private: 
+		int      enum_type;
+		char**   value;
+		int      numstrings;
+
+	public:
+		/*StringArrayParam constructors, destructors: {{{*/
+		StringArrayParam();
+		StringArrayParam(int enum_type,char** values, int numstrings);
+		~StringArrayParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM);
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Vec param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M);
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(int* pintarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		/*}}}*/
+};
+#endif  /* _STRINGARRAYPARAM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/StringParam.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/StringParam.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/StringParam.cpp	(revision 21239)
@@ -0,0 +1,100 @@
+/*!\file StringParam.c
+ * \brief: implementation of the StringParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*StringParam constructors and destructor*/
+StringParam::StringParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+StringParam::StringParam(int in_enum_type,char* in_value){/*{{{*/
+
+	enum_type=in_enum_type;
+	value=xNew<char>(strlen(in_value)+1);
+	xMemCpy<char>(value,in_value,(strlen(in_value)+1));
+
+}
+/*}}}*/
+StringParam::~StringParam(){/*{{{*/
+	xDelete<char>(value);
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* StringParam::copy() {/*{{{*/
+
+	return new StringParam(this->enum_type,this->value);
+
+}
+/*}}}*/
+void StringParam::DeepEcho(void){/*{{{*/
+	_printf_(setw(22)<<"   StringParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" "<<this->value<<"\n");
+}
+/*}}}*/
+void StringParam::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int    StringParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void StringParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	int size;
+
+	if(marshall_direction==MARSHALLING_FORWARD || marshall_direction == MARSHALLING_SIZE)size=strlen(value)+1;
+	
+	MARSHALLING_ENUM(StringParamEnum);
+	MARSHALLING(enum_type);
+	MARSHALLING(size);
+	MARSHALLING_DYNAMIC(value,char,size);
+
+}
+/*}}}*/
+int StringParam::ObjectEnum(void){/*{{{*/
+
+	return StringParamEnum;
+
+}
+/*}}}*/
+
+/*StringParam virtual functions definitions: */
+void  StringParam::GetParameterValue(char** pstring){/*{{{*/
+
+	char* outstring=NULL;
+	int   stringsize;
+
+	stringsize=strlen(this->value)+1;
+
+	outstring=xNew<char>(stringsize);
+	xMemCpy<char>(outstring,this->value,stringsize);
+
+	*pstring=outstring;
+
+}
+/*}}}*/
+void  StringParam::SetValue(char* string){/*{{{*/
+
+	int   stringsize;
+
+	/*avoid leak: */
+	xDelete<char>(this->value);
+
+	/*copy: */
+	stringsize=strlen(string)+1;
+	this->value=xNew<char>(stringsize);
+	xMemCpy<char>(this->value,string,stringsize);
+
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/StringParam.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/StringParam.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/StringParam.h	(revision 21239)
@@ -0,0 +1,75 @@
+/*! \file StringParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _STRINGPARAM_H_
+#define _STRINGPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class StringParam: public Param{
+
+	private: 
+		/*just hold 3 values for 3 vertices: */
+		int   enum_type;
+		char *value;
+
+	public:
+		/*StringParam constructors, destructors: {{{*/
+		StringParam();
+		StringParam(int enum_type,char* value);
+		~StringParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring);
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Bool param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a scalar");}
+		void  SetValue(char* string);
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(int* pintarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		/*}}}*/
+};
+#endif  /* _STRINGPARAM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/TransientParam.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/TransientParam.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/TransientParam.cpp	(revision 21239)
@@ -0,0 +1,136 @@
+/*!\file TransientParam.c
+ * \brief: implementation of the TransientParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*TransientParam constructors and destructor*/
+TransientParam::TransientParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+TransientParam::TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,int in_N){/*{{{*/
+
+	_assert_(in_values && in_time);
+
+	enum_type=in_enum_type;
+	N=in_N;
+	interpolation=interpolation_on;
+
+	values=xNew<IssmDouble>(N);
+	xMemCpy<IssmDouble>(values,in_values,N);
+
+	timesteps=xNew<IssmDouble>(N);
+	xMemCpy<IssmDouble>(timesteps,in_time,N);
+}
+/*}}}*/
+TransientParam::~TransientParam(){/*{{{*/
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(timesteps);
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* TransientParam::copy() {/*{{{*/
+
+	return new TransientParam(this->enum_type,this->values,this->timesteps,this->interpolation,this->N);
+
+}
+/*}}}*/
+void TransientParam::DeepEcho(void){/*{{{*/
+
+	_printf_("TransientParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   size: " << this->N << "\n");
+	for(int i=0;i<this->N;i++){
+		_printf_(   "time: " << this->timesteps[i] << " value: " << this->values[i] << "\n");
+	}
+}
+/*}}}*/
+void TransientParam::Echo(void){/*{{{*/
+
+	_printf_("TransientParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   size: " << this->N << "\n");
+
+}
+/*}}}*/
+int  TransientParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void TransientParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(TransientParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(interpolation);
+	MARSHALLING(N);
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		values=xNew<IssmDouble>(N);
+		timesteps=xNew<IssmDouble>(N);
+	}
+	MARSHALLING_ARRAY(values,IssmDouble,N);
+	MARSHALLING_ARRAY(timesteps,IssmDouble,N);
+
+}
+/*}}}*/
+int  TransientParam::ObjectEnum(void){/*{{{*/
+
+	return TransientParamEnum;
+
+}
+/*}}}*/
+
+/*TransientParam virtual functions definitions: */
+void  TransientParam::GetParameterValue(IssmDouble* pdouble,IssmDouble time){/*{{{*/
+
+	IssmDouble output;
+	bool   found;
+
+	/*Ok, we have the time, go through the timesteps, and figure out which interval we 
+	 *fall within. Then interpolate the values on this interval: */
+	if(time<this->timesteps[0]){
+		/*get values for the first time: */
+		output=this->values[0];
+		found=true;
+	}
+	else if(time>this->timesteps[this->N-1] || !interpolation){
+		/*get values for the last time: */
+		output=this->values[this->N-1];
+		found=true;
+	}
+	else{
+		/*Find which interval we fall within: */
+		for(int i=0;i<this->N;i++){
+			if(time==this->timesteps[i]){
+				/*We are right on one step time: */
+				output=this->values[i];
+				found=true;
+				break; //we are done with the time interpolation.
+			}
+			else{
+				if(this->timesteps[i]<time && time<this->timesteps[i+1]){
+					/*ok, we have the interval ]i:i+1[. Interpolate linearly for now: */
+					IssmDouble deltat=this->timesteps[i+1]-this->timesteps[i];
+					IssmDouble alpha=(time-this->timesteps[i])/deltat;
+					output=(1.0-alpha)*this->values[i] + alpha*this->values[i+1];
+					found=true;
+					break;
+				}
+				else continue; //keep looking on the next interval
+			}
+		}
+	}
+	if(!found)_error_("did not find time interval on which to interpolate values");
+	*pdouble=output;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/TransientParam.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/TransientParam.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/TransientParam.h	(revision 21239)
@@ -0,0 +1,77 @@
+/*! \file TransientParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _TRANSIENTPARAM_H_
+#define _TRANSIENTPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class TransientParam: public Param{
+
+	protected: 
+		int         enum_type;
+		int         N;
+		bool        interpolation;
+		IssmDouble *values;
+		IssmDouble *timesteps;
+
+	public:
+		/*TransientParam constructors, destructors: {{{*/
+		TransientParam();
+		TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,int in_N);
+		~TransientParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a array of integers");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time);
+		void  GetParameterValue(char** pstring){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM,int* pN){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a IssmDouble vec array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M,int N){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(int* intarray,int M){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a int vec array");}
+		void  SetValue(int* intarray,int M,int N){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a int mat array");};
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		/*}}}*/
+};
+#endif  /* _TRANSIENTPARAM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/VectorParam.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/VectorParam.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/VectorParam.cpp	(revision 21239)
@@ -0,0 +1,89 @@
+/*!\file VectorParam.c
+ * \brief: implementation of the VectorParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*VectorParam constructors and destructor*/
+VectorParam::VectorParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+VectorParam::VectorParam(int in_enum_type,Vector<IssmDouble>* in_value){/*{{{*/
+
+	enum_type=in_enum_type;
+
+	value=NULL;
+
+	if(in_value){
+		value=in_value->Duplicate();
+		in_value->Copy(value);
+	}
+}
+/*}}}*/
+VectorParam::~VectorParam(){/*{{{*/
+	delete value;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* VectorParam::copy() {/*{{{*/
+
+	return new VectorParam(this->enum_type,this->value);
+
+}
+/*}}}*/
+void VectorParam::DeepEcho(void){/*{{{*/
+
+	_printf_("VectorParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	value->Echo();
+}
+/*}}}*/
+void VectorParam::Echo(void){/*{{{*/
+
+	_printf_("VectorParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+
+}
+/*}}}*/
+int    VectorParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+int VectorParam::ObjectEnum(void){/*{{{*/
+
+	return VectorParamEnum;
+
+}
+/*}}}*/
+
+/*VectorParam virtual functions definitions: */
+void  VectorParam::GetParameterValue(Vector<IssmDouble>** poutput){/*{{{*/
+	Vector<IssmDouble>*  output=NULL;
+
+	if(value){
+		output=value->Duplicate();
+		value->Copy(output);
+	}
+	*poutput=output;
+}
+/*}}}*/
+void  VectorParam::SetValue(Vector<IssmDouble>* vector){/*{{{*/
+
+	/*avoid leak: */
+	delete value;
+
+	/*copy: */
+	value=vector->Duplicate();
+	vector->Copy(value);
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/VectorParam.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/VectorParam.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Params/VectorParam.h	(revision 21239)
@@ -0,0 +1,75 @@
+/*! \file VectorParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _VECTORPARAM_H_
+#define _VECTORPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class VectorParam: public Param{
+
+	private: 
+		/*just hold 3 values for 3 vertices: */
+		int enum_type;
+		Vector<IssmDouble>* value;
+
+	public:
+		/*VectorParam constructors, destructors: {{{*/
+		VectorParam();
+		VectorParam(int enum_type,Vector<IssmDouble>* value);
+		~VectorParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(Vector<IssmDouble>** poutput);
+		void  GetParameterValue(FILE** pfid){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a IssmDouble array");}
+		void  SetValue(int* intarray,int M){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a int array");}
+		void  SetValue(int* pintarray,int M,int N){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a int array");}
+		void  SetValue(Vector<IssmDouble>* vec);
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		/*}}}*/
+};
+#endif  /* _VECTORPARAM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Profiler.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Profiler.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Profiler.cpp	(revision 21239)
@@ -0,0 +1,188 @@
+/*!\file Profiler.c
+ * \brief: implementation of the Profiler object
+ */
+
+/*Include files: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Profiler.h"
+#include "./Params/DoubleParam.h"
+#include "../toolkits/toolkits.h"
+/*}}}*/
+
+/*Profiler constructors and destructors:*/
+Profiler::Profiler(){/*{{{*/
+	for(int i=0;i<MAXIMUMSIZE;i++){
+		this->time[i]  =NAN;
+		this->flops[i] =NAN;
+		this->memory[i]=NAN;
+	}
+} /*}}}*/
+Profiler::~Profiler(){/*{{{*/
+	/*Nothing to delete, everything is statically allocated*/
+} /*}}}*/
+Object* Profiler::copy(){/*{{{*/
+	/*First do simple copy: */
+	Profiler* output=new Profiler();
+
+	for(int i=0;i<MAXIMUMSIZE;i++){
+		output->time[i]  =this->time[i];
+		output->flops[i] =this->flops[i];
+		output->memory[i]=this->memory[i];
+	}
+
+	return (Object*)output;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+void Profiler::DeepEcho(void){/*{{{*/
+
+	this->Echo();
+
+}
+/*}}}*/
+void Profiler::Echo(void){/*{{{*/
+
+	_printf_("Profiler:\n");
+	for(int i=0;i<MAXIMUMSIZE;i++){
+		_printf_("    Tag "<<i<<":\n");
+		_printf_("       flops:  "<<this->flops[i]<<"\n");
+		_printf_("       memory: "<<this->memory[i]<<"\n");
+		_printf_("       time:   "<<this->time[i]<<"\n");
+	}
+
+}
+/*}}}*/
+int  Profiler::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void Profiler::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	IssmDouble* pointer = NULL;
+
+	MARSHALLING_ENUM(ProfilerEnum);
+	pointer = &this->time[0];
+	MARSHALLING_DYNAMIC(pointer,IssmDouble,MAXIMUMSIZE);
+	pointer = &this->flops[0];
+	MARSHALLING_DYNAMIC(pointer,IssmDouble,MAXIMUMSIZE);
+	pointer = &this->memory[0];
+	MARSHALLING_DYNAMIC(pointer,IssmDouble,MAXIMUMSIZE);
+
+} /*}}}*/
+int  Profiler::ObjectEnum(void){/*{{{*/
+
+	return ProfilerEnum;
+
+}
+/*}}}*/
+
+/*Profiler routines:*/
+IssmDouble  Profiler::DeltaFlops(int inittag, int finaltag){/*{{{*/
+
+	/*Get initial flops*/
+	_assert_(inittag>=0); 
+	_assert_(inittag<MAXIMUMSIZE); 
+	if(xIsNan<IssmDouble>(this->flops[inittag])) _error_("Tag not set");
+	IssmDouble init = this->flops[inittag];
+
+	/*Get final flops*/
+	_assert_(finaltag>=0); 
+	_assert_(finaltag<MAXIMUMSIZE); 
+	if(xIsNan<IssmDouble>(this->flops[finaltag])) _error_("Tag not set");
+	IssmDouble final = this->flops[finaltag];
+
+	return final-init;
+}
+/*}}}*/
+IssmDouble  Profiler::DeltaTime(int inittag, int finaltag){/*{{{*/
+
+	/*Get initial time*/
+	_assert_(inittag>=0); 
+	_assert_(inittag<MAXIMUMSIZE); 
+	if(xIsNan<IssmDouble>(this->time[inittag])) _error_("Tag "<<inittag<<" not set");
+	IssmDouble init = this->time[inittag];
+
+	/*Get final time*/
+	_assert_(finaltag>=0); 
+	_assert_(finaltag<MAXIMUMSIZE); 
+	if(xIsNan<IssmDouble>(this->time[finaltag])) _error_("Tag "<<finaltag<<" not set");
+	IssmDouble final = this->time[finaltag];
+
+	#ifdef _HAVE_MPI_
+	return final-init;
+	#else
+	return (final-init)/CLOCKS_PER_SEC;
+	#endif
+}
+/*}}}*/
+int Profiler::DeltaTimeModHour(int inittag, int finishtag){/*{{{*/
+
+	IssmDouble delta = this->DeltaTime(inittag,finishtag);
+	return int((reCast<int,IssmDouble>(delta))/3600);
+
+}
+/*}}}*/
+int Profiler::DeltaTimeModMin(int inittag, int finishtag){/*{{{*/
+
+	IssmDouble delta = this->DeltaTime(inittag,finishtag);
+	return int(int(reCast<int,IssmDouble>(delta))%3600/60);
+}
+/*}}}*/
+int Profiler::DeltaTimeModSec(int inittag, int finishtag){/*{{{*/
+
+	IssmDouble delta = this->DeltaTime(inittag,finishtag);
+	return int(reCast<int,IssmDouble>(delta)%60);
+}
+/*}}}*/
+IssmDouble  Profiler::Memory(int tag){/*{{{*/
+
+	/*Get initial flops*/
+	_assert_(tag>=0); 
+	_assert_(tag<MAXIMUMSIZE); 
+	if(xIsNan<IssmDouble>(this->flops[tag])) _error_("Tag not set");
+	return this->memory[tag];
+}
+/*}}}*/
+void  Profiler::Tag(int tagenum,bool dontmpisync){/*{{{*/
+
+	IssmDouble t;
+	IssmDouble f;
+	IssmDouble m;
+
+	/*If mpisync requested, make sure all the cpus are at the same point 
+	 *in the execution: */
+	if(!dontmpisync){
+		ISSM_MPI_Barrier(IssmComm::GetComm()); 
+	}
+
+	/*Capture time: */
+	#ifdef _HAVE_MPI_
+	t=ISSM_MPI_Wtime();
+	#else
+	t=(IssmPDouble)clock();
+	#endif
+
+	/*Capture flops: */
+	#ifdef _HAVE_PETSC_
+		PetscGetFlops(&f);
+		PetscMemoryGetCurrentUsage(&m);
+	#else
+		/*do nothing for now:*/
+	#endif
+
+	/*Plug into this->time: */
+	_assert_(tagenum>=0); 
+	_assert_(tagenum<MAXIMUMSIZE); 
+	if(!xIsNan<IssmDouble>(this->time[tagenum])) _error_("Tag already exists");
+	this->time[tagenum]  = t;
+	if(!xIsNan<IssmDouble>(this->flops[tagenum])) _error_("Tag already exists");
+	this->flops[tagenum] = f;
+	if(!xIsNan<IssmDouble>(this->memory[tagenum])) _error_("Tag already exists");
+	this->memory[tagenum]= m;
+
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Profiler.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Profiler.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Profiler.h	(revision 21239)
@@ -0,0 +1,56 @@
+/*!\file Profiler.h
+ * \brief: header file for node object
+ */
+
+#ifndef _PROFILER_H_
+#define _PROFILER_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../datastructures/datastructures.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+class DoubleParam;
+
+#define START 0
+#define STARTINIT 1
+#define FINISHINIT 2
+#define STARTCORE 3
+#define FINISHCORE 4
+#define STARTADCORE 5
+#define FINISHADCORE 6
+#define FINISH 7
+#define MAXIMUMSIZE 8 
+
+class Profiler: public Object{
+
+	public: 
+		IssmDouble flops[MAXIMUMSIZE];
+		IssmDouble memory[MAXIMUMSIZE];
+		IssmDouble time[MAXIMUMSIZE];
+
+		/*Profiler constructors, destructors {{{*/
+		Profiler();
+		~Profiler();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		int     ObjectEnum();
+		/*}}}*/
+		/*Profiler routines {{{*/
+		IssmDouble  DeltaFlops(int inittag, int finaltag);
+		IssmDouble  DeltaTime(int inittag, int finaltag);
+		int     DeltaTimeModHour(int inittag, int finaltag);
+		int     DeltaTimeModMin(int inittag, int finaltag);
+		int     DeltaTimeModSec(int inittag, int finaltag);
+		IssmDouble  Memory(int tag);
+		void    Tag(int tagenum,bool dontmpisync=false);
+		/*}}}*/
+};
+
+#endif  /* _PROFILER_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/RiftStruct.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/RiftStruct.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/RiftStruct.cpp	(revision 21239)
@@ -0,0 +1,94 @@
+/*!\file RiftStruct.c
+ * \brief: implementation of the RiftStruct object
+ */
+
+#include "./classes.h"
+#include "../shared/Enum/Enum.h"
+#include "../shared/shared.h"
+
+/*RiftStruct constructors and destructor*/
+RiftStruct::RiftStruct(void){/*{{{*/
+
+	this->numrifts             = 0;
+	this->riftsnumsegments     = NULL;
+	this->riftssegments        = NULL;
+	this->riftsnumpairs        = NULL;
+	this->riftspairs           = NULL;
+	this->riftsnumpenaltypairs = NULL;
+	this->riftspenaltypairs    = NULL;
+	this->riftstips            = NULL;
+	this->state                = NULL;
+
+}/*}}}*/
+RiftStruct::RiftStruct(int numrifts_in,int *riftsnumsegments_in,int**riftssegments_in,int *riftsnumpairs_in,int**riftspairs_in,int *riftsnumpenaltypairs_in,double **riftspenaltypairs_in,int * riftstips_in){/*{{{*/
+
+	int i;
+
+	/*numrifts*/
+	this->numrifts = numrifts_in;
+	if(!numrifts_in) return;
+
+	/*riftsnumsegments*/
+	_assert_(riftsnumsegments_in);
+	this->riftsnumsegments=xNew<int>(numrifts_in);
+	xMemCpy<int>(this->riftsnumsegments,riftsnumsegments_in,numrifts_in);
+
+	/*riftssegments*/
+	_assert_(riftssegments_in);
+	this->riftssegments=xNew<int*>(numrifts_in);
+	for(i=0;i<numrifts_in;i++){
+		this->riftssegments[i]=xNew<int>(riftsnumsegments_in[i]*3);
+		xMemCpy<int>(this->riftssegments[i],riftssegments_in[i],riftsnumsegments_in[i]*3);
+	}
+
+	/*riftsnumpairs*/
+	_assert_(riftsnumpairs_in);
+	this->riftsnumpairs=xNew<int>(numrifts_in);
+	xMemCpy<int>(this->riftsnumpairs,riftsnumpairs_in,numrifts_in);
+
+	/*riftspairs*/
+	_assert_(riftspairs_in);
+	this->riftspairs=xNew<int*>(numrifts_in);
+	for(i=0;i<numrifts_in;i++){
+		this->riftspairs[i]=xNew<int>(riftsnumpairs_in[i]*2);
+		xMemCpy<int>(this->riftspairs[i],riftspairs_in[i],riftsnumpairs_in[i]*2);
+	}
+
+	/*riftsnumpenaltypairs*/
+	_assert_(riftsnumpenaltypairs_in);
+	this->riftsnumpenaltypairs=xNew<int>(numrifts_in);
+	xMemCpy<int>(this->riftsnumpenaltypairs,riftsnumpenaltypairs_in,numrifts_in);
+
+	/*riftspenaltypairs*/
+	_assert_(riftspenaltypairs_in);
+	this->riftspenaltypairs=xNew<double*>(numrifts_in);
+	for(i=0;i<numrifts_in;i++){
+		this->riftspenaltypairs[i]=xNew<double>(riftsnumpenaltypairs_in[i]*7);
+		xMemCpy<double>(this->riftspenaltypairs[i],riftspenaltypairs_in[i],riftsnumpenaltypairs_in[i]*7);
+	}
+
+	/*riftstips*/
+	_assert_(riftstips_in);
+	this->riftstips=xNew<int>(2*numrifts_in);
+	xMemCpy<int>(this->riftstips,riftstips_in,2*numrifts_in);
+
+	/*state*/
+	this->state=xNew<double*>(numrifts_in);
+	for(i=0;i<numrifts_in;i++){
+		this->state[i]=xNew<double>(riftsnumpenaltypairs_in[i]);
+		for(int j=0;j<riftsnumpenaltypairs_in[i];j++) (this->state[i])[j]=FreeEnum;
+	}
+
+}/*}}}*/
+RiftStruct::~RiftStruct(void){/*{{{*/
+
+	xDelete<int>(this->riftsnumsegments);
+	xDelete<int*>(this->riftssegments);
+	xDelete<int>(this->riftsnumpairs);
+	xDelete<int*>(this->riftspairs);
+	xDelete<int>(this->riftsnumpenaltypairs);
+	xDelete<double*>(this->riftspenaltypairs);
+	xDelete<int>(this->riftstips);
+	xDelete<double*>(this->state);
+
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/RiftStruct.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/RiftStruct.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/RiftStruct.h	(revision 21239)
@@ -0,0 +1,26 @@
+/*!\file:  RiftStruct.h
+ * \brief place holder for Rift Structure in mex module
+ */ 
+
+#ifndef _RIFTSTRUCT_H_
+#define _RIFTSTRUCT_H_
+
+class RiftStruct{
+
+	public:
+		int      numrifts;
+		int    **riftspairs;
+		double **riftspenaltypairs;
+		int     *riftsnumpairs;
+		int     *riftsnumpenaltypairs;
+		int     *riftsnumsegments;
+		int    **riftssegments;
+		int     *riftstips;
+		double **state;
+
+		RiftStruct();
+		RiftStruct(int numrifts_in,int *riftsnumsegments_in,int **riftssegments_in,int *riftsnumpairs_in,int **riftspairs_in,int *riftsnumpenaltypairs_in,double **riftspenaltypairs_in,int* riftstips_in);
+		~RiftStruct();
+};
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Segment.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Segment.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Segment.h	(revision 21239)
@@ -0,0 +1,80 @@
+/*!\file Segment.h
+ * \brief: header file for node object
+ */
+
+#ifndef _SEGMENT_H_
+#define _SEGMENT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../datastructures/datastructures.h"
+#include "../shared/Numerics/constants.h"
+/*}}}*/
+
+template <class doubletype> 
+class Segment: public Object{
+
+	public:
+		int        eid;
+		doubletype x1;
+		doubletype y1;
+		doubletype x2;
+		doubletype y2;
+
+		/*Segment constructors, destructors :*/
+		Segment(){/*{{{*/
+			this->eid = UNDEF;
+			this->x1  = UNDEF;
+			this->y1  = UNDEF;
+			this->x2  = UNDEF;
+			this->y2  = UNDEF;
+		}
+		/*}}}*/
+		Segment(int segment_eid, doubletype segment_x1,doubletype segment_y1,doubletype segment_x2, doubletype segment_y2){/*{{{*/
+
+			this->eid = segment_eid;
+			this->x1  = segment_x1;
+			this->y1  = segment_y1;
+			this->x2  = segment_x2;
+			this->y2  = segment_y2;
+
+		}
+		/*}}}*/
+		~Segment(){/*{{{*/
+		}
+		/*}}}*/
+
+		/*Object virtual functions definitions:*/
+		Object* copy() {/*{{{*/
+			return new Segment(this->eid,this->x1,this->y1,this->x2,this->y2);
+		}
+		/*}}}*/
+		void DeepEcho(void){/*{{{*/
+			this->Echo();
+		}
+		/*}}}*/
+		void Echo(void){/*{{{*/
+
+			_printf_("Segment:\n");
+			_printf_("   eid: " << eid << "\n");
+			_printf_("   node 1: " << this->x1 << "|" << this->y1 << "\n");
+			_printf_("   node 2: " << this->x2 << "|" << this->y2 << "\n");
+
+		}
+		/*}}}*/
+		int    Id(void){ return eid; }/*{{{*/
+		/*}}}*/
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
+		int ObjectEnum(void){/*{{{*/
+
+			return SegmentEnum;
+
+		}
+		/*}}}*/
+
+};
+
+#endif  /* _SEGMENT_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Update.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Update.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Update.h	(revision 21239)
@@ -0,0 +1,28 @@
+/*!\file: Update.h: abstract class used by some objects to update their properties
+ * \brief prototypes for Update.h
+ */ 
+
+#ifndef _UPDATE_H_
+#define  _UPDATE_H_
+
+/*Headers:*/
+#include "../shared/shared.h"
+class IoModel;
+
+class Update{
+
+	public:
+
+		virtual void  InputUpdateFromConstant(IssmDouble constant, int name)=0;
+		virtual void  InputUpdateFromConstant(int constant, int name)=0;
+		virtual void  InputUpdateFromConstant(bool constant, int name)=0;
+		#ifdef _HAVE_DAKOTA_
+		virtual void  InputUpdateFromMatrixDakota(IssmDouble* matrix, int rows, int ncols, int name, int type)=0;
+		virtual void  InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type)=0;
+		#endif
+		virtual void  InputUpdateFromIoModel(int index, IoModel* iomodel)=0;
+		virtual void  InputUpdateFromVector(IssmDouble* vector, int name, int type)=0;
+
+};
+
+#endif //ifndef _UPDATE_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Vertex.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Vertex.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Vertex.cpp	(revision 21239)
@@ -0,0 +1,299 @@
+/*!\file Vertex.c
+ * \brief: implementation of the Vertex object
+ */
+
+/*Include files: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <string.h>
+#include "classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+/*Vertex constructors and destructor:*/
+Vertex::Vertex(){/*{{{*/
+	return;
+}
+/*}}}*/
+Vertex::Vertex(int vertex_id, int vertex_sid,int i, IoModel* iomodel){/*{{{*/
+
+	this->id           = vertex_id;
+	this->sid          = vertex_sid;
+	this->pid          = UNDEF;
+
+	_assert_(iomodel->Data("md.mesh.x") && iomodel->Data("md.mesh.y") && iomodel->Data("md.mesh.z"));
+	this->x            = iomodel->Data("md.mesh.x")[i];
+	this->y            = iomodel->Data("md.mesh.y")[i];
+	this->z            = iomodel->Data("md.mesh.z")[i];
+	this->domaintype     = iomodel->domaintype;
+
+	switch(iomodel->domaintype){
+		case Domain3DEnum:
+			_assert_(iomodel->Data("md.geometry.base") && iomodel->Data("md.geometry.thickness"));
+			this->sigma = (iomodel->Data("md.mesh.z")[i]-iomodel->Data("md.geometry.base")[i])/(iomodel->Data("md.geometry.thickness")[i]);
+			break;
+		case Domain3DsurfaceEnum:
+			this->latitute     = iomodel->Data("md.mesh.lat")[i];
+			this->longitude    = iomodel->Data("md.mesh.long")[i];
+			this->R            = iomodel->Data("md.mesh.r")[i];
+			break;
+		case Domain2DhorizontalEnum:
+			this->sigma = 0.;
+			break;
+		case Domain2DverticalEnum:
+			_assert_(iomodel->Data("md.geometry.base") && iomodel->Data("md.geometry.thickness"));
+			this->sigma = (iomodel->Data("md.mesh.y")[i]-iomodel->Data("md.geometry.base")[i])/(iomodel->Data("md.geometry.thickness")[i]);
+			break;
+	}
+
+	_assert_(iomodel->numbernodetoelementconnectivity);
+	this->connectivity = iomodel->numbernodetoelementconnectivity[i];
+
+}
+/*}}}*/
+Vertex::~Vertex(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Vertex::copy() {/*{{{*/
+
+	return new Vertex(*this); 
+
+}
+/*}}}*/
+void Vertex::DeepEcho(void){/*{{{*/
+	this->Echo();
+}
+/*}}}*/
+void Vertex::Echo(void){/*{{{*/
+
+	_printf_("Vertex:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   sid: " << sid << "\n");
+	_printf_("   pid: " << pid << "\n");
+	_printf_("   x: " << x << "\n");
+	_printf_("   y: " << y << "\n");
+	_printf_("   z: " << z << "\n");
+	_printf_("   sigma: " << sigma << "\n");
+	_printf_("   connectivity: " << connectivity << "\n");
+	_printf_("   clone: " << clone << "\n");
+
+	return;
+}
+/*}}}*/
+int Vertex::Id(void){ return id; }/*{{{*/
+/*}}}*/
+void Vertex::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(VertexEnum);
+	MARSHALLING(clone);
+	MARSHALLING(domaintype);
+	MARSHALLING(id);
+	MARSHALLING(sid);
+	MARSHALLING(pid);
+	MARSHALLING(x);
+	MARSHALLING(y);
+	MARSHALLING(z);
+	MARSHALLING(sigma);
+	MARSHALLING(connectivity);
+
+}
+/*}}}*/
+int Vertex::ObjectEnum(void){/*{{{*/
+
+	return VertexEnum;
+
+}
+/*}}}*/
+
+/*Vertex management: */
+int        Vertex::Connectivity(void){return connectivity;}/*{{{*/
+/*}}}*/
+void       Vertex::DistributePids(int* ppidcount){/*{{{*/
+
+	/*retrieve current pid*/
+	int pidcount=*ppidcount;
+
+	/*This vertex is a clone! Don't distribute pids, it will get them from another cpu!*/
+	if(this->clone) return;
+
+	/*This vertex should distribute its pid*/
+	this->pid=pidcount;
+	pidcount++;
+
+	/*Assign output pointers: */
+	*ppidcount=pidcount;
+}
+/*}}}*/
+IssmDouble Vertex::GetLatitude(){/*{{{*/
+	return this->latitute;
+}
+/*}}}*/
+IssmDouble Vertex::GetLongitude(){/*{{{*/
+	return this->longitude;
+}
+/*}}}*/
+IssmDouble Vertex::GetRadius(){/*{{{*/
+	return this->R;
+}
+/*}}}*/
+IssmDouble Vertex::GetX(){/*{{{*/
+	return this->x;
+}
+/*}}}*/
+IssmDouble Vertex::GetY(){/*{{{*/
+	return this->y;
+}
+/*}}}*/
+IssmDouble Vertex::GetZ(){/*{{{*/
+	return this->z;
+}
+/*}}}*/
+void       Vertex::OffsetPids(int pidcount){/*{{{*/
+
+	/*This vertex is a clone, don't offset the pids*/
+	if(this->clone) return;
+
+	/*This vertex should offset his pid, go ahead: */
+	this->pid+=pidcount;
+}
+/*}}}*/
+int        Vertex::Pid(void){ return pid; }/*{{{*/
+/*}}}*/
+void       Vertex::SetClone(int* minranks){/*{{{*/
+
+	int my_rank;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	if (minranks[this->sid]==my_rank){
+		this->clone=false;
+	}
+	else{
+		/*!there is a cpu with lower rank that has the same vertex, 
+		therefore, I am a clone*/
+		this->clone=true;
+	}
+
+}
+/*}}}*/
+void       Vertex::ShowTruePids(int* truepids){/*{{{*/
+
+	/*Are we a clone? : */
+	if(this->clone)return;
+
+	/*Ok, we are not a clone, just plug our pid into truepids: */
+	truepids[this->sid]=this->pid;
+}
+/*}}}*/
+int        Vertex::Sid(void){ return sid; }/*{{{*/
+/*}}}*/
+void       Vertex::ToXYZ(Matrix<IssmDouble>* matrix){/*{{{*/
+
+	IssmDouble xyz[3];
+	int        indices[3];
+
+	if (this->clone==true) return;
+
+	xyz[0]=x;
+	xyz[1]=y; 
+	xyz[2]=z;
+	indices[0]=0;
+	indices[1]=1; 
+	indices[2]=2;
+
+	matrix->SetValues(1,&sid,3,&indices[0],&xyz[0],INS_VAL);
+}
+/*}}}*/
+void       Vertex::UpdateClonePids(int* alltruepids){/*{{{*/
+
+	/*If we are not a clone, don't update, we already have pids: */
+	if(!this->clone)return;
+
+	/*Ok, we are a clone node, but we did not create the pid for this vertex 
+	 * Therefore, our pid is garbage right now. Go pick it up in the alltruepids: */
+	this->pid=alltruepids[this->sid];
+}
+/*}}}*/
+void       Vertex::UpdatePosition(Vector<IssmDouble>* vx,Vector<IssmDouble>* vy,Vector<IssmDouble>* vz,Parameters* parameters,IssmDouble* surface,IssmDouble* bed){/*{{{*/
+
+	IssmDouble oldy,newy,vely;
+	IssmDouble oldz,newz,velz;
+	IssmDouble dt;
+
+	/*Get time stepping*/
+	parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+
+	/*sigma remains constant. z=bed+sigma*thickness*/
+	switch(this->domaintype){
+		case Domain2DhorizontalEnum:
+			/*Nothing*/
+			return;
+		case Domain2DverticalEnum:
+			oldy = this->y;
+			newy = bed[this->pid]+sigma*(surface[this->pid] - bed[this->pid]);
+			vely = (newy-oldy)/dt;
+			this->y = newy;
+			vy->SetValue(this->pid,vely,INS_VAL);
+			_assert_(!xIsNan<IssmDouble>(vely));
+			return;
+		case Domain3DEnum:
+			oldz = this->z;
+			newz = bed[this->pid]+sigma*(surface[this->pid] - bed[this->pid]);
+			velz = (newz-oldz)/dt;
+			this->z = newz;
+			vz->SetValue(this->pid,velz,INS_VAL);
+			_assert_(!xIsNan<IssmDouble>(velz));
+			return;
+		default:
+			_error_("not implemented");
+	}
+}
+/*}}}*/
+void       Vertex::VertexCoordinates(Vector<IssmDouble>* vx,Vector<IssmDouble>* vy,Vector<IssmDouble>* vz, bool spherical){/*{{{*/
+
+	if (this->clone==true) return;
+
+	if(!spherical){
+		vx->SetValue(this->sid,this->x,INS_VAL);
+		vy->SetValue(this->sid,this->y,INS_VAL);
+		vz->SetValue(this->sid,this->z,INS_VAL);
+	}
+	else{
+		vx->SetValue(this->sid,this->latitute,INS_VAL);
+		vy->SetValue(this->sid,this->longitude,INS_VAL);
+		vz->SetValue(this->sid,this->R,INS_VAL);
+	}
+
+	return;
+}
+/*}}}*/
+
+/*Methods relating to Vertex, but not internal methods: */
+void GetVerticesCoordinates(IssmDouble* xyz,Vertex** vertices, int numvertices,bool spherical){ /*{{{*/
+
+	_assert_(vertices);
+	_assert_(xyz);
+
+	if(!spherical){
+		for(int i=0;i<numvertices;i++) {
+			xyz[i*3+0]=vertices[i]->GetX();
+			xyz[i*3+1]=vertices[i]->GetY();
+			xyz[i*3+2]=vertices[i]->GetZ();
+		}
+	}
+	else{
+		for(int i=0;i<numvertices;i++) {
+			xyz[i*3+0]=vertices[i]->GetLatitude();
+			xyz[i*3+1]=vertices[i]->GetLongitude();
+			xyz[i*3+2]=vertices[i]->GetRadius();
+		}
+	}
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Vertex.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Vertex.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Vertex.h	(revision 21239)
@@ -0,0 +1,73 @@
+/*! \file Vertex.h 
+ *  \brief: header file for vertex object
+ */
+
+#ifndef _VERTEX_H_
+#define _VERTEX_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./classes.h"
+#include "../shared/Exceptions/exceptions.h"
+#include "../toolkits/toolkits.h"
+template <class doubletype> class Vector;
+template <class doubletype> class Matrix;
+class Parameters;
+class IoModel;
+/*}}}*/
+
+class Vertex: public Object{
+
+	public: 
+		bool       clone;
+		int        domaintype;
+		int        id;           // random index
+		int        sid;          // "serial" id (rank of this vertex if the dataset was on 1 cpu)
+		int        pid;          // "parallel" id
+		IssmDouble x;
+		IssmDouble y;
+		IssmDouble z;
+		IssmDouble latitute;
+		IssmDouble longitude;
+		IssmDouble R;
+		IssmDouble sigma;        //sigma coordinate: (z-bed)/thickness
+		int        connectivity; //number of vertices connected to this vertex
+
+		/*Vertex constructors, destructors {{{*/
+		Vertex();
+		Vertex(int id, int sid, int i, IoModel* iomodel);
+		~Vertex();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		void  Echo();
+		void  DeepEcho();
+		int   Id(); 
+		int   ObjectEnum();
+		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+
+		/*}}}*/
+		/*Vertex management:*/ 
+		int        Connectivity(void); 
+		void       DistributePids(int* ppidcount);
+		IssmDouble GetLatitude(void); 
+		IssmDouble GetLongitude(void); 
+		IssmDouble GetRadius(void); 
+		IssmDouble GetX(void); 
+		IssmDouble GetY(void); 
+		IssmDouble GetZ(void); 
+		void       OffsetPids(int pidcount);
+		int        Pid(void); 
+		void       SetClone(int* minranks);
+		void       ShowTruePids(int* borderpids);
+		int        Sid(void); 
+		void       ToXYZ(Matrix<IssmDouble>* matrix);
+		void       UpdateClonePids(int* allborderpids);
+		void       UpdatePosition(Vector<IssmDouble>* vx,Vector<IssmDouble>* vy,Vector<IssmDouble>* vz,Parameters* parameters,IssmDouble* thickness,IssmDouble* bed);
+		void       VertexCoordinates(Vector<IssmDouble>* vx,Vector<IssmDouble>* vy,Vector<IssmDouble>* vz,bool spherical=false);
+};
+
+/*Methods relating to Vertex object: */
+void GetVerticesCoordinates(IssmDouble* xyz,Vertex** vertices, int numvertices,bool spherical=false);
+
+#endif  /* _VERTEX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Vertices.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Vertices.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Vertices.cpp	(revision 21239)
@@ -0,0 +1,221 @@
+/*
+ * \file Vertices.cpp
+ * \brief: Implementation of Vertices class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <vector>
+#include <functional>
+#include <algorithm>
+#include <iostream>
+
+#include "./Vertices.h"
+#include "../shared/shared.h"
+#include "./Vertex.h"
+
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+Vertices::Vertices(){/*{{{*/
+	enum_type=VerticesEnum;
+	return;
+}
+/*}}}*/
+Vertices::~Vertices(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Numerics management*/
+void  Vertices::DistributePids(int numberofobjects){/*{{{*/
+
+	int num_procs;
+	int my_rank;
+
+	int  i;
+	int  pidcount    = 0;
+	int *allpidcount = NULL;
+	int *truepids    = NULL;
+	int *alltruepids = NULL;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+	num_procs=IssmComm::GetSize();
+
+	/*Go through objects, and distribute pids locally, from 0 to numberofpidsperobject*/
+	for (i=0;i<this->Size();i++){
+		Vertex* vertex=xDynamicCast<Vertex*>(this->GetObjectByOffset(i));
+		vertex->DistributePids(&pidcount);
+	}
+
+	/* Now every object has distributed pids, but locally, and with a pid count starting from 
+	 * 0. This means the pids between all the cpus are not unique. We now offset the pids of each
+	 * cpus by the total last pids of the previus cpu, starting from 0.
+	 * First: get number of pids for each cpu*/
+	allpidcount=xNew<int>(num_procs);
+	ISSM_MPI_Gather(&pidcount,1,ISSM_MPI_INT,allpidcount,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	ISSM_MPI_Bcast(allpidcount,num_procs,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/* Every cpu should start its own pid count at the end of the pidcount from cpu-1*/
+	pidcount=0;
+	if(my_rank!=0){
+		for(i=0;i<my_rank;i++){
+			pidcount+=allpidcount[i];
+		}
+	}
+	for (i=0;i<this->Size();i++){
+		Vertex* vertex=xDynamicCast<Vertex*>(this->GetObjectByOffset(i));
+		vertex->OffsetPids(pidcount);
+	}
+
+	/* Finally, remember that cpus may have skipped some objects, because they were clones. For every 
+	 * object that is not a clone, tell them to show their pids, so that later on, they can get picked 
+	 * up by their clones: */
+	truepids   =xNewZeroInit<int>(numberofobjects);
+	alltruepids=xNewZeroInit<int>(numberofobjects);
+	for (i=0;i<this->Size();i++){
+		Vertex* vertex=xDynamicCast<Vertex*>(this->GetObjectByOffset(i));
+		vertex->ShowTruePids(truepids);
+	}
+	ISSM_MPI_Allreduce((void*)truepids,(void*)alltruepids,numberofobjects,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
+
+	/* Now every cpu knows the true pids of everyone else that is not a clone*/
+	for(i=0;i<this->Size();i++){
+		Vertex* vertex=xDynamicCast<Vertex*>(this->GetObjectByOffset(i));
+		vertex->UpdateClonePids(alltruepids);
+	}
+
+	/* Free ressources: */
+	xDelete<int>(allpidcount);
+	xDelete<int>(truepids);
+	xDelete<int>(alltruepids);
+}
+/*}}}*/
+void  Vertices::FlagClones(int numberofobjects){/*{{{*/
+
+	int i;
+	int num_procs;
+
+	int* ranks=NULL;
+	int* minranks=NULL;
+
+	/*recover num_procs:*/
+	num_procs=IssmComm::GetSize();
+
+	/*Allocate ranks: */
+	ranks=xNew<int>(numberofobjects);
+	minranks=xNew<int>(numberofobjects);
+
+	for(i=0;i<numberofobjects;i++)ranks[i]=num_procs; //no cpu can have rank num_procs. This is the maximum limit.
+
+	/*Now go through all our objects and ask them to report to who they belong (which rank): */
+	Ranks(ranks);
+
+	/*We need to take the minimum rank for each vertex, and every cpu needs to get that result. That way, 
+	 * when we start building the dof list for all vertexs, a cpu can check whether its vertex already has been 
+	 * dealt with by another cpu. We take the minimum because we are going to manage dof assignment in increasing 
+	 * order of cpu rank. This is also why we initialized this array to num_procs.*/
+	ISSM_MPI_Allreduce ( (void*)ranks,(void*)minranks,numberofobjects,ISSM_MPI_INT,ISSM_MPI_MIN,IssmComm::GetComm());
+
+	/*Now go through all objects, and use minranks to flag which objects are cloned: */
+	for(i=0;i<this->Size();i++){
+		/*For this object, decide whether it is a clone: */
+		Vertex* vertex=xDynamicCast<Vertex*>(this->GetObjectByOffset(i));
+		vertex->SetClone(minranks);
+	}
+
+	/*Free ressources: */
+	xDelete<int>(ranks); 
+	xDelete<int>(minranks);
+
+}
+/*}}}*/
+int Vertices::NumberOfVertices(void){/*{{{*/
+
+	int i,sid;
+	int max_sid=0;
+	int vertex_max_sid;
+
+	for(i=0;i<this->Size();i++){
+		Vertex* vertex=xDynamicCast<Vertex*>(this->GetObjectByOffset(i));
+		sid=vertex->Sid();
+		if (sid>max_sid)max_sid=sid;
+	}
+
+	ISSM_MPI_Reduce (&max_sid,&vertex_max_sid,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&vertex_max_sid,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	max_sid=vertex_max_sid;
+
+	/*sid starts at 0*/
+	max_sid++;
+
+	/*return:*/
+	return max_sid;
+}
+/*}}}*/
+void   Vertices::Ranks(int* ranks){/*{{{*/
+
+	int my_rank;
+	int        sid;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	/*Go through a dataset, and for each object, report it cpu: */
+	for(int i=0;i<this->Size();i++){
+		/*Plug rank into ranks, according to id: */
+		Vertex* vertex=xDynamicCast<Vertex*>(this->GetObjectByOffset(i));
+		sid=vertex->Sid();
+		ranks[sid]=my_rank; 
+	}
+}
+/*}}}*/
+IssmDouble* Vertices::ToXYZ(void){/*{{{*/
+
+	/*intermediary: */
+	int i;
+	int my_rank;
+	int num_vertices;
+
+	/*output: */
+	Matrix<IssmDouble>* xyz = NULL;
+	IssmDouble* xyz_serial=NULL;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	/*First, figure out number of vertices: */
+	num_vertices=this->NumberOfVertices();
+
+	/*Now, allocate matrix to hold all the vertices x,y and z values: */
+	xyz= new Matrix<IssmDouble>(num_vertices,3);
+
+	/*Go through vertices, and for each vertex, object, report it cpu: */
+	for(i=0;i<this->Size();i++){
+
+		/*let vertex fill matrix: */
+		Vertex* vertex=xDynamicCast<Vertex*>(this->GetObjectByOffset(i));
+		vertex->ToXYZ(xyz);
+	}
+
+	/*Assemble:*/
+	xyz->Assemble();
+
+	/*gather on cpu 0: */
+	xyz_serial=xyz->ToSerial();
+
+	/*free ressources: */
+	delete xyz;
+	if(my_rank!=0)delete xyz_serial;
+
+	/*return matrix: */
+	return xyz_serial;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Vertices.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Vertices.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/Vertices.h	(revision 21239)
@@ -0,0 +1,30 @@
+#ifndef _CONTAINER_VERTICES_H_
+#define  _CONTAINER_VERTICES_H_
+
+/*forward declarations */
+#include "../datastructures/datastructures.h"
+#include "../shared/shared.h"
+
+/*!\brief Declaration of Vertices class.
+ *
+ * Declaration of Vertices class.  Vertices are vector lists (Containers) of Vertex objects.
+ * A vertex is a set of (x,y,z) coordinates defining the location of points in the mesh (not
+ * to be confused with a node, which is a degree of freedom (DOF) for a particular analysis).
+ */ 
+class Vertices: public DataSet{
+
+	public:
+
+		/*constructors, destructors:*/ 
+		Vertices();
+		~Vertices();
+
+		/*numerics:*/
+		void  DistributePids(int numberofnodes);
+		void  FlagClones(int numberofnodes);
+		int   NumberOfVertices(void);
+		void  Ranks(int* ranks);
+		IssmDouble* ToXYZ(void);
+};
+
+#endif //ifndef _VERTICES_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/classes.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/classes.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/classes.h	(revision 21239)
@@ -0,0 +1,131 @@
+/* \file classes.h
+ * \brief: prototype header for all classes used in ISSM.
+ */
+
+#ifndef _ALL_CLASSES_H_
+#define _ALL_CLASSES_H_
+
+/*Objects: */
+#include "./Contour.h"
+#include "./Vertices.h"
+#include "./Vertex.h"
+#include "./Nodes.h"
+#include "./Contours.h"
+#include "./Node.h"
+#include "./Profiler.h"
+#include "./DependentObject.h"
+#include "./Segment.h"
+#include "./Massfluxatgate.h"
+#include "./Misfit.h"
+#include "./Nodalvalue.h"
+#include "./Masscon.h"
+#include "./Massconaxpby.h"
+
+/*Constraints: */
+#include "./Constraints/Constraints.h"
+#include "./Constraints/Constraint.h"
+#include "./Constraints/SpcStatic.h"
+#include "./Constraints/SpcTransient.h"
+#include "./Constraints/SpcDynamic.h"
+
+/*Loads: */
+#include "./Loads/Loads.h"
+#include "./Loads/Load.h"
+#include "./Loads/Friction.h"
+#include "./Loads/Numericalflux.h"
+#include "./Loads/Neumannflux.h"
+#include "./Loads/Riftfront.h"
+#include "./Loads/Penpair.h"
+#include "./Loads/Pengrid.h"
+#include "./Loads/Moulin.h"
+
+/*Elements: */
+#include "./Elements/Elements.h"
+#include "./Elements/Element.h"
+#include "./Elements/Penta.h"
+#include "./Elements/PentaRef.h"
+#include "./Elements/Seg.h"
+#include "./Elements/SegRef.h"
+#include "./Elements/Tria.h"
+#include "./Elements/TriaRef.h"
+#include "./Elements/Tetra.h"
+#include "./Elements/TetraRef.h"
+#include "./Elements/ElementHook.h"
+
+/*Option parsing objects: */
+#include "./Options/Option.h"
+#include "./Options/Options.h"
+#include "./Options/GenericOption.h"
+#include "./Options/OptionUtilities.h"
+
+/*Inputs: */
+#include "./Inputs/Inputs.h"
+#include "./Inputs/Input.h"
+#include "./Inputs/BoolInput.h"
+#include "./Inputs/DoubleInput.h"
+#include "./Inputs/DoubleArrayInput.h"
+#include "./Inputs/IntInput.h"
+#include "./Inputs/TetraInput.h"
+#include "./Inputs/PentaInput.h"
+#include "./Inputs/TriaInput.h"
+#include "./Inputs/SegInput.h"
+#include "./Inputs/ControlInput.h"
+#include "./Inputs/DatasetInput.h"
+#include "./Inputs/TransientInput.h"
+
+/*ExternalResults: */
+#include "./ExternalResults/Results.h"
+#include "./ExternalResults/ExternalResult.h"
+#include "./ExternalResults/GenericExternalResult.h"
+
+/*Materials: */
+#include "./Materials/Materials.h"
+#include "./Materials/Material.h"
+#include "./Materials/Matice.h"
+#include "./Materials/Matestar.h"
+#include "./Materials/Matpar.h"
+
+/*Params: */
+#include "./Params/GenericParam.h"
+#include "./Params/BoolParam.h"
+#include "./Params/DoubleMatParam.h"
+#include "./Params/DoubleTransientMatParam.h"
+#include "./Params/DoubleMatArrayParam.h"
+#include "./Params/DoubleParam.h"
+#include "./Params/DoubleVecParam.h"
+#include "./Params/IntParam.h"
+#include "./Params/IntVecParam.h"
+#include "./Params/IntMatParam.h"
+#include "./Params/FileParam.h"
+#include "./Params/Parameters.h"
+#include "./Params/Param.h"
+#include "./Params/MatrixParam.h"
+#include "./Params/VectorParam.h"
+#include "./Params/StringArrayParam.h"
+#include "./Params/StringParam.h"
+#include "./Params/TransientParam.h"
+#include "./Params/DataSetParam.h"
+
+/*matrix: */
+#include "./matrix/matrixobjects.h"
+
+/*gauss: */
+#include "./gauss/gaussobjects.h"
+
+/*kriging: */
+#include "./kriging/krigingobjects.h"
+
+/*dakota:*/
+#include "./Dakota/IssmDirectApplicInterface.h"
+#include "./Dakota/IssmParallelDirectApplicInterface.h"
+
+/*diverse: */
+#include "./Hook.h"
+#include "./DofIndexing.h"
+#include "./IoModel.h"
+#include "./Update.h"
+#include "./FemModel.h"
+#include "./GiaDeflectionCoreArgs.h"
+#include "./RiftStruct.h"
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/Gauss.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/Gauss.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/Gauss.h	(revision 21239)
@@ -0,0 +1,24 @@
+/*!\file Gauss.h
+ * \brief: header file for vvirtual Gauss object
+ */
+
+#ifndef _GAUSS_H_
+#define _GAUSS_H_
+
+class Gauss{
+
+	public: 
+		IssmDouble   weight;
+
+		virtual        ~Gauss(){};
+		virtual int  begin(void)=0;
+		virtual void Echo(void)=0;
+		virtual int  end(void)=0;
+		virtual int  Enum(void)=0;
+		virtual void GaussNode(int finitelement,int iv)=0;
+		virtual void GaussPoint(int ig)=0;
+		virtual void GaussVertex(int iv)=0;
+		virtual void SynchronizeGaussBase(Gauss* gauss)=0;
+
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussPenta.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussPenta.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussPenta.cpp	(revision 21239)
@@ -0,0 +1,760 @@
+/*!\file GaussPenta.c
+ * \brief: implementation of the GaussPenta object
+ */
+
+#include "./GaussPenta.h"
+#include "./GaussTria.h"
+#include "../../shared/io/Print/Print.h"
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/MemOps/MemOps.h"
+#include "../../shared/Numerics/recast.h"
+#include "../../shared/Enum/Enum.h"
+#include "../../shared/Numerics/GaussPoints.h"
+#include "../../shared/Numerics/constants.h"
+
+/*GaussPenta constructors and destructors:*/
+GaussPenta::GaussPenta(){/*{{{*/
+
+	numgauss=-1;
+
+	weights=NULL;
+	coords1=NULL;
+	coords2=NULL;
+	coords3=NULL;
+	coords4=NULL;
+
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+	coord4=UNDEF;
+}
+/*}}}*/
+GaussPenta::GaussPenta(int order_horiz,int order_vert){/*{{{*/
+
+	/*Intermediaries*/
+	int     ighoriz,igvert;
+	int     numgauss_horiz;
+	int     numgauss_vert;
+	IssmDouble *coords1_horiz = NULL;
+	IssmDouble *coords2_horiz = NULL;
+	IssmDouble *coords3_horiz = NULL;
+	IssmDouble *weights_horiz  = NULL;
+	double *coords_vert = NULL;
+	double *weights_vert   = NULL;
+
+	/*Get gauss points*/
+	GaussLegendreTria(&numgauss_horiz,&coords1_horiz,&coords2_horiz,&coords3_horiz,&weights_horiz,order_horiz);
+	GaussLegendreLinear(&coords_vert,&weights_vert,order_vert);
+	numgauss_vert=order_vert;
+
+	/*Allocate GaussPenta fields*/
+	numgauss=numgauss_horiz*numgauss_vert;
+	coords1=xNew<IssmDouble>(numgauss);
+	coords2=xNew<IssmDouble>(numgauss);
+	coords3=xNew<IssmDouble>(numgauss);
+	coords4=xNew<IssmDouble>(numgauss);
+	weights=xNew<IssmDouble>(numgauss);
+
+	/*Combine Horizontal and vertical points*/
+	for (ighoriz=0; ighoriz<numgauss_horiz; ighoriz++){
+		for (igvert=0; igvert<numgauss_vert; igvert++){
+			coords1[numgauss_vert*ighoriz+igvert]=coords1_horiz[ighoriz];
+			coords2[numgauss_vert*ighoriz+igvert]=coords2_horiz[ighoriz];
+			coords3[numgauss_vert*ighoriz+igvert]=coords3_horiz[ighoriz];
+			coords4[numgauss_vert*ighoriz+igvert]=coords_vert[igvert];
+			weights[numgauss_vert*ighoriz+igvert]=weights_horiz[ighoriz]*weights_vert[igvert];
+		}
+	}
+
+	/*Initialize static fields as undefinite*/
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+	coord4=UNDEF;
+
+	/*Clean up*/
+	xDelete<IssmDouble>(coords1_horiz);
+	xDelete<IssmDouble>(coords2_horiz);
+	xDelete<IssmDouble>(coords3_horiz);
+	xDelete<double>(coords_vert);
+	xDelete<IssmDouble>(weights_horiz);
+	xDelete<double>(weights_vert);
+}
+/*}}}*/
+GaussPenta::GaussPenta(int index1, int index2,int order){/*{{{*/
+
+	/*Intermediaties*/
+	double *seg_coords  = NULL;
+	double *seg_weights = NULL;
+	int     i;
+
+	/*Get Segment gauss points*/
+	numgauss=order;
+	GaussLegendreLinear(&seg_coords,&seg_weights,numgauss);
+
+	/*Allocate GaussPenta fields*/
+	coords1=xNew<IssmDouble>(numgauss);
+	coords2=xNew<IssmDouble>(numgauss);
+	coords3=xNew<IssmDouble>(numgauss);
+	coords4=xNew<IssmDouble>(numgauss);
+	weights=xNew<IssmDouble>(numgauss);
+
+	if(index1==0 && index2==3){
+		for(i=0;i<numgauss;i++) coords1[i]=1.0;
+		for(i=0;i<numgauss;i++) coords2[i]=0.0;
+		for(i=0;i<numgauss;i++) coords3[i]=0.0;
+		for(i=0;i<numgauss;i++) coords4[i]=seg_coords[i];
+		for(i=0;i<numgauss;i++) weights[i]=seg_weights[i];
+	}
+	else if (index1==1 && index2==4){
+		for(i=0;i<numgauss;i++) coords1[i]=0.0;
+		for(i=0;i<numgauss;i++) coords2[i]=1.0;
+		for(i=0;i<numgauss;i++) coords3[i]=0.0;
+		for(i=0;i<numgauss;i++) coords4[i]=seg_coords[i];
+		for(i=0;i<numgauss;i++) weights[i]=seg_weights[i];
+	}
+	else if (index1==2 && index2==5){
+		for(i=0;i<numgauss;i++) coords1[i]=0.0;
+		for(i=0;i<numgauss;i++) coords2[i]=0.0;
+		for(i=0;i<numgauss;i++) coords3[i]=1.0;
+		for(i=0;i<numgauss;i++) coords4[i]=seg_coords[i];
+		for(i=0;i<numgauss;i++) weights[i]=seg_weights[i];
+	}
+	else{
+		_error_("Penta not supported yet");
+	}
+
+	/*Initialize static fields as undefined*/
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+	coord4=UNDEF;
+
+	/*clean up*/
+	xDelete<double>(seg_coords);
+	xDelete<double>(seg_weights);
+
+}
+/*}}}*/
+GaussPenta::GaussPenta(int index1, int index2, int index3, int order){/*{{{*/
+
+	/*Basal Tria*/
+	if(index1==0 && index2==1 && index3==2){
+
+		/*Get GaussTria*/
+		GaussLegendreTria(&numgauss,&coords1,&coords2,&coords3,&weights,order);
+
+		/*compute z coordinate*/
+		coords4=xNew<IssmDouble>(numgauss);
+		for(int i=0;i<numgauss;i++) coords4[i]=-1.0;
+	}
+	/*Upper surface Tria*/
+	else if(index1==3 && index2==4 && index3==5){
+
+		/*Get GaussTria*/
+		GaussLegendreTria(&numgauss,&coords1,&coords2,&coords3,&weights,order);
+
+		/*compute z coordinate*/
+		coords4=xNew<IssmDouble>(numgauss);
+		for(int i=0;i<numgauss;i++) coords4[i]=1.0;
+	}
+	else{
+		_error_("Tria not supported yet");
+	}
+
+}
+/*}}}*/
+GaussPenta::GaussPenta(int index1, int index2, int index3, int index4,int order_horiz,int order_vert){/*{{{*/
+
+	/*Intermediaties*/
+	double *seg_horiz_coords  = NULL;
+	double *seg_horiz_weights = NULL;
+	double *seg_vert_coords   = NULL;
+	double *seg_vert_weights  = NULL;
+	int     i,j;
+
+	/*get the gauss points using the product of two line rules*/
+	GaussLegendreLinear(&seg_horiz_coords,&seg_horiz_weights,order_horiz);
+	GaussLegendreLinear(&seg_vert_coords, &seg_vert_weights, order_vert);
+
+	/*Allocate GaussPenta fields*/
+	numgauss=order_horiz*order_vert;
+	coords1=xNew<IssmDouble>(numgauss);
+	coords2=xNew<IssmDouble>(numgauss);
+	coords3=xNew<IssmDouble>(numgauss);
+	coords4=xNew<IssmDouble>(numgauss);
+	weights=xNew<IssmDouble>(numgauss);
+
+	/*Quads: get the gauss points using the product of two line rules  */
+	if(index1==0 && index2==1 && index3==4 && index4==3){
+		for(i=0;i<order_horiz;i++){
+			for(j=0;j<order_vert;j++){
+				coords1[i*order_vert+j]=  0.5*(1-seg_horiz_coords[i]);
+				coords2[i*order_vert+j]=1-0.5*(1-seg_horiz_coords[i]);
+				coords3[i*order_vert+j]=0.0;
+				coords4[i*order_vert+j]=seg_vert_coords[j];
+				weights[i*order_vert+j]=seg_horiz_weights[i]*seg_vert_weights[j];
+			}
+		}
+	}
+	else if(index1==1 && index2==2 && index3==5 && index4==4){
+		for(i=0;i<order_horiz;i++){
+			for(j=0;j<order_vert;j++){
+				coords1[i*order_vert+j]=0.0;
+				coords2[i*order_vert+j]=  0.5*(1-seg_horiz_coords[i]);
+				coords3[i*order_vert+j]=1-0.5*(1-seg_horiz_coords[i]);
+				coords4[i*order_vert+j]=seg_vert_coords[j];
+				weights[i*order_vert+j]=seg_horiz_weights[i]*seg_vert_weights[j];
+			}
+		}
+	}
+	else if(index1==2 && index2==0 && index3==3 && index4==5){
+		for(i=0;i<order_horiz;i++){
+			for(j=0;j<order_vert;j++){
+				coords1[i*order_vert+j]=1-0.5*(1-seg_horiz_coords[i]);
+				coords2[i*order_vert+j]=0.0;
+				coords3[i*order_vert+j]=  0.5*(1-seg_horiz_coords[i]);
+				coords4[i*order_vert+j]=seg_vert_coords[j];
+				weights[i*order_vert+j]=seg_horiz_weights[i]*seg_vert_weights[j];
+			}
+		}
+	}
+	else{
+		_error_("Tria not supported yet (user provided indices " << index1 << " " << index2 << " " << index3 << " " << index4 << ")");
+	}
+
+	/*clean-up*/
+	xDelete<double>(seg_horiz_coords);
+	xDelete<double>(seg_horiz_weights);
+	xDelete<double>(seg_vert_coords);
+	xDelete<double>(seg_vert_weights);
+}
+/*}}}*/
+GaussPenta::GaussPenta(int index,IssmDouble r1,IssmDouble r2,bool mainlyfloating,int order){/*{{{*/
+
+	/*
+	 *  ^ 
+	 *  |
+	 * 1|\
+	 *  |  \
+	 *  |    \
+	 *  |      \
+	 *  |        \
+	 *  |          \
+	 *  |    +(x,y)  \
+	 *  |              \
+	 *  +---------------+-->
+	 *  0               1
+	 *
+	 */
+	int         ig;
+	IssmDouble x,y;
+	IssmDouble xy_list[3][2];
+
+	if(mainlyfloating){
+		/*Get gauss points*/
+		GaussLegendreTria(&this->numgauss,&this->coords1,&this->coords2,&this->coords3,&this->weights,order);
+
+		xy_list[0][0]=0;  xy_list[0][1]=0; 
+		xy_list[1][0]=r1; xy_list[1][1]=0; 
+		xy_list[2][0]=0;  xy_list[2][1]=r2; 
+
+		for(ig=0;ig<this->numgauss;ig++){
+			x = this->coords1[ig]*xy_list[0][0] + this->coords2[ig]*xy_list[1][0] + this->coords3[ig]*xy_list[2][0];
+			y = this->coords1[ig]*xy_list[0][1] + this->coords2[ig]*xy_list[1][1] + this->coords3[ig]*xy_list[2][1];
+
+			switch(index){
+				case 0:
+					this->coords1[ig] = 1.-x-y;
+					this->coords2[ig] = x;
+					this->coords3[ig] = y;
+					break;
+				case 1:
+					this->coords1[ig] = y;
+					this->coords2[ig] = 1.-x-y;
+					this->coords3[ig] = x;
+					break;
+				case 2:
+					this->coords1[ig] = x;
+					this->coords2[ig] = y;
+					this->coords3[ig] = 1.-x-y;
+					break;
+				default:
+					_error_("index "<<index<<" not supported yet");
+			}
+			this->weights[ig] = this->weights[ig]*r1*r2;
+		}
+		this->coords4=xNew<IssmDouble>(numgauss);
+		for(ig=0;ig<numgauss;ig++) this->coords4[ig]=-1.0;
+	}
+	else{
+		/*Double number of gauss points*/
+		GaussPenta *gauss1    = NULL;
+		GaussPenta *gauss2    = NULL;
+		gauss1=new GaussPenta(0,1,2,order);
+		gauss2=new GaussPenta(0,1,2,order);
+
+		xy_list[0][0]=r1; xy_list[0][1]=0; 
+		xy_list[1][0]=0;  xy_list[1][1]=1.; 
+		xy_list[2][0]=0;  xy_list[2][1]=r2; 
+
+			//gauss1->Echo();
+		for(ig=0;ig<gauss1->numgauss;ig++){
+			x = gauss1->coords1[ig]*xy_list[0][0] + gauss1->coords2[ig]*xy_list[1][0] + gauss1->coords3[ig]*xy_list[2][0];
+			y = gauss1->coords1[ig]*xy_list[0][1] + gauss1->coords2[ig]*xy_list[1][1] + gauss1->coords3[ig]*xy_list[2][1];
+
+			switch(index){
+				case 0:
+					gauss1->coords1[ig] = 1.-x-y;
+					gauss1->coords2[ig] = x;
+					gauss1->coords3[ig] = y;
+					break;
+				case 1:
+					gauss1->coords1[ig] = y;
+					gauss1->coords2[ig] = 1.-x-y;
+					gauss1->coords3[ig] = x;
+					break;
+				case 2:
+					gauss1->coords1[ig] = x;
+					gauss1->coords2[ig] = y;
+					gauss1->coords3[ig] = 1.-x-y;
+					break;
+				default:
+					_error_("index "<<index<<" not supported yet");
+			}
+			gauss1->weights[ig] = gauss1->weights[ig]*r1*(1-r2);
+		}
+			//gauss1->Echo();
+		xy_list[0][0]=r1; xy_list[0][1]=0; 
+		xy_list[1][0]=1.; xy_list[1][1]=0; 
+		xy_list[2][0]=0;  xy_list[2][1]=1.; 
+
+			//gauss2->Echo();
+		for(ig=0;ig<gauss2->numgauss;ig++){
+			x = gauss2->coords1[ig]*xy_list[0][0] + gauss2->coords2[ig]*xy_list[1][0] + gauss2->coords3[ig]*xy_list[2][0];
+			y = gauss2->coords1[ig]*xy_list[0][1] + gauss2->coords2[ig]*xy_list[1][1] + gauss2->coords3[ig]*xy_list[2][1];
+
+			switch(index){
+				case 0:
+					gauss2->coords1[ig] = 1.-x-y;
+					gauss2->coords2[ig] = x;
+					gauss2->coords3[ig] = y;
+					break;
+				case 1:
+					gauss2->coords1[ig] = y;
+					gauss2->coords2[ig] = 1.-x-y;
+					gauss2->coords3[ig] = x;
+					break;
+				case 2:
+					gauss2->coords1[ig] = x;
+					gauss2->coords2[ig] = y;
+					gauss2->coords3[ig] = 1.-x-y;
+					break;
+				default:
+					_error_("index "<<index<<" not supported yet");
+			}
+			gauss2->weights[ig] = gauss2->weights[ig]*(1-r1);
+		}
+
+		this->numgauss = gauss1->numgauss + gauss2->numgauss;
+		this->coords1=xNew<IssmDouble>(this->numgauss);
+		this->coords2=xNew<IssmDouble>(this->numgauss);
+		this->coords3=xNew<IssmDouble>(this->numgauss);
+		this->coords4=xNew<IssmDouble>(this->numgauss);
+		this->weights=xNew<IssmDouble>(this->numgauss);
+
+		for(ig=0;ig<gauss1->numgauss;ig++){ // Add the first triangle gauss points
+			this->coords1[ig]=gauss1->coords1[ig];
+			this->coords2[ig]=gauss1->coords2[ig];
+			this->coords3[ig]=gauss1->coords3[ig];
+			this->coords4[ig]=gauss1->coords4[ig];
+			this->weights[ig]=gauss1->weights[ig];
+		}
+		for(ig=0;ig<gauss2->numgauss;ig++){ // Add the second triangle gauss points
+			this->coords1[gauss1->numgauss+ig]=gauss2->coords1[ig];
+			this->coords2[gauss1->numgauss+ig]=gauss2->coords2[ig];
+			this->coords3[gauss1->numgauss+ig]=gauss2->coords3[ig];
+			this->coords4[gauss1->numgauss+ig]=gauss2->coords4[ig];
+			this->weights[gauss1->numgauss+ig]=gauss2->weights[ig];
+		}
+
+		/*Delete gauss points*/
+		delete gauss1;
+		delete gauss2;
+	}
+
+	/*Initialize static fields as undefined*/
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+	coord4=UNDEF;
+}
+/*}}}*/
+GaussPenta::GaussPenta(IssmDouble area_coordinates[4][3],int order_horiz,int order_vert){/*{{{*/
+
+	/*Intermediaties*/
+	IssmPDouble *seg_horiz_coords  = NULL;
+	IssmPDouble *seg_horiz_weights = NULL;
+	IssmPDouble *seg_vert_coords   = NULL;
+	IssmPDouble *seg_vert_weights  = NULL;
+
+	/*get the gauss points using the product of two line rules*/
+	GaussLegendreLinear(&seg_horiz_coords,&seg_horiz_weights,order_horiz);
+	GaussLegendreLinear(&seg_vert_coords, &seg_vert_weights, order_vert);
+
+	/*Allocate GaussPenta fields*/
+	numgauss=order_horiz*order_vert;
+	coords1=xNew<IssmDouble>(numgauss);
+	coords2=xNew<IssmDouble>(numgauss);
+	coords3=xNew<IssmDouble>(numgauss);
+	coords4=xNew<IssmDouble>(numgauss);
+	weights=xNew<IssmDouble>(numgauss);
+
+	/*Quads: get the gauss points using the product of two line rules  */
+	for(int i=0;i<order_horiz;i++){
+		for(int j=0;j<order_vert;j++){
+			coords1[i*order_vert+j]=0.5*(area_coordinates[0][0]+area_coordinates[1][0]) + 0.5*seg_horiz_coords[i]*(area_coordinates[1][0]-area_coordinates[0][0]);
+			coords2[i*order_vert+j]=0.5*(area_coordinates[0][1]+area_coordinates[1][1]) + 0.5*seg_horiz_coords[i]*(area_coordinates[1][1]-area_coordinates[0][1]);
+			coords3[i*order_vert+j]=0.5*(area_coordinates[0][2]+area_coordinates[1][2]) + 0.5*seg_horiz_coords[i]*(area_coordinates[1][2]-area_coordinates[0][2]);
+			coords4[i*order_vert+j]=seg_vert_coords[j];
+			weights[i*order_vert+j]=seg_horiz_weights[i]*seg_vert_weights[j];
+		}
+	}
+
+	/*clean-up*/
+	xDelete<IssmPDouble>(seg_horiz_coords);
+	xDelete<IssmPDouble>(seg_horiz_weights);
+	xDelete<IssmPDouble>(seg_vert_coords);
+	xDelete<IssmPDouble>(seg_vert_weights);
+}
+/*}}}*/
+GaussPenta::~GaussPenta(){/*{{{*/
+	xDelete<IssmDouble>(weights);
+	xDelete<IssmDouble>(coords1);
+	xDelete<IssmDouble>(coords2);
+	xDelete<IssmDouble>(coords3);
+	xDelete<IssmDouble>(coords4);
+}
+/*}}}*/
+
+/*Methods*/
+int GaussPenta::begin(void){/*{{{*/
+
+	/*Check that this has been initialized*/
+	_assert_(numgauss>0);
+	_assert_(weights);
+	_assert_(coords1);
+	_assert_(coords2);
+	_assert_(coords3);
+	_assert_(coords4);
+
+	/*return first gauss index*/
+	return 0;
+}
+/*}}}*/
+void GaussPenta::Echo(void){/*{{{*/
+
+	_printf_("GaussPenta:\n");
+	_printf_("   numgauss: " << numgauss << "\n");
+
+	if (weights){
+	 _printf_("   weights = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << weights[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("weights = NULL\n");
+	if (coords1){
+	 _printf_("   coords1 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords1[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("coords1 = NULL\n");
+	if (coords2){
+	 _printf_("   coords2 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords2[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("coords2 = NULL\n");
+	if (coords3){
+	 _printf_("   coords3 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords3[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("coords3 = NULL\n");
+	if (coords4){
+		_printf_("   coords4 = ["); 
+		for(int i=0;i<numgauss;i++) _printf_(" " << coords4[i] << "\n");
+		_printf_("]\n");
+	}
+	else _printf_("coords4 = NULL\n");
+
+	_printf_("   weight = " << weight << "\n");
+	_printf_("   coord1 = " << coord1 << "\n");
+	_printf_("   coord2 = " << coord2 << "\n");
+	_printf_("   coord3 = " << coord3 << "\n");
+	_printf_("   coord4 = " << coord4 << "\n");
+
+}
+/*}}}*/
+int GaussPenta::end(void){/*{{{*/
+
+	/*Check that this has been initialized*/
+	_assert_(numgauss>0);
+	_assert_(weights);
+	_assert_(coords1);
+	_assert_(coords2);
+	_assert_(coords3);
+	_assert_(coords4);
+
+	/*return last gauss index +1*/
+	return numgauss;
+}
+/*}}}*/
+int GaussPenta::Enum(void){/*{{{*/
+	return GaussPentaEnum;
+}
+/*}}}*/
+void GaussPenta::GaussFaceTria(int index1, int index2, int index3, int order){/*{{{*/
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	/*Basal Tria*/
+	if(index1==0 && index2==1 && index3==2){
+		GaussLegendreTria(&numgauss,&coords1,&coords2,&coords3,&weights,order);
+		coords4=xNew<IssmDouble>(numgauss);
+		for(int i=0;i<numgauss;i++) coords4[i]=-1.0;
+	}
+	else{
+		_error_("Tria not supported yet");
+	}
+
+}
+/*}}}*/
+void GaussPenta::GaussPoint(int ig){/*{{{*/
+
+	/*Check input in debugging mode*/
+	 _assert_(ig>=0 && ig< numgauss);
+
+	 /*update static arrays*/
+	 weight=weights[ig];
+	 coord1=coords1[ig];
+	 coord2=coords2[ig];
+	 coord3=coords3[ig];
+	 coord4=coords4[ig];
+
+}
+/*}}}*/
+void GaussPenta::GaussNode(int finiteelement,int iv){/*{{{*/
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	/*update static arrays*/
+	switch(finiteelement){
+		case P1Enum: case P1DGEnum:
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
+				case 3: coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
+				case 4: coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
+				case 5: coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
+				default: _error_("node index should be in [0 5]");
+			}
+			break;
+		case P1xP2Enum: 
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
+				case 3: coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
+				case 4: coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
+				case 5: coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
+
+				case 6: coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
+				case 7: coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
+				case 8: coord1=0.; coord2=0.; coord3=1.; coord4=0.; break;
+				default: _error_("node index should be in [0 8]");
+			}
+			break;
+		case P1xP3Enum: 
+			switch(iv){
+				case 0 : coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
+				case 1 : coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
+				case 2 : coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
+				case 3 : coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
+				case 4 : coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
+				case 5 : coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
+
+				case 6 : coord1=1.; coord2=0.; coord3=0.; coord4=-1./3.; break;
+				case 7 : coord1=0.; coord2=1.; coord3=0.; coord4=-1./3.; break;
+				case 8 : coord1=0.; coord2=0.; coord3=1.; coord4=-1./3.; break;
+				case 9 : coord1=1.; coord2=0.; coord3=0.; coord4=+1./3.; break;
+				case 10: coord1=0.; coord2=1.; coord3=0.; coord4=+1./3.; break;
+				case 11: coord1=0.; coord2=0.; coord3=1.; coord4=+1./3.; break;
+				default: _error_("node index should be in [0 11]");
+			}
+			break;
+		case P2xP1Enum: 
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
+				case 3: coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
+				case 4: coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
+				case 5: coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
+
+				case  6: coord1=0.; coord2=.5; coord3=.5; coord4=-1.;break;
+				case  7: coord1=.5; coord2=0.; coord3=.5; coord4=-1.;break;
+				case  8: coord1=.5; coord2=.5; coord3=0.; coord4=-1.;break;
+				case  9: coord1=0.; coord2=.5; coord3=.5; coord4=+1.;break;
+				case 10: coord1=.5; coord2=0.; coord3=.5; coord4=+1.;break;
+				case 11: coord1=.5; coord2=.5; coord3=0.; coord4=+1.;break;
+				default: _error_("node index should be in [0 11]");
+			}
+			break;
+		case P1bubbleEnum:  case P1bubblecondensedEnum:
+			switch(iv){
+				case 0: coord1=1.;    coord2=0.;    coord3=0.;    coord4=-1.; break;
+				case 1: coord1=0.;    coord2=1.;    coord3=0.;    coord4=-1.; break;
+				case 2: coord1=0.;    coord2=0.;    coord3=1.;    coord4=-1.; break;
+				case 3: coord1=1.;    coord2=0.;    coord3=0.;    coord4=+1.; break;
+				case 4: coord1=0.;    coord2=1.;    coord3=0.;    coord4=+1.; break;
+				case 5: coord1=0.;    coord2=0.;    coord3=1.;    coord4=+1.; break;
+				case 6: coord1=1./3.; coord2=1./3.; coord3=1./3.; coord4=0.;  break;
+				default: _error_("node index should be in [0 6]");
+			}
+			break;
+		case P2Enum:
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
+				case 3: coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
+				case 4: coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
+				case 5: coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
+
+				case 6: coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
+				case 7: coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
+				case 8: coord1=0.; coord2=0.; coord3=1.; coord4=0.; break;
+
+				case  9: coord1=0.; coord2=.5; coord3=.5; coord4=-1.;break;
+				case 10: coord1=.5; coord2=0.; coord3=.5; coord4=-1.;break;
+				case 11: coord1=.5; coord2=.5; coord3=0.; coord4=-1.;break;
+				case 12: coord1=0.; coord2=.5; coord3=.5; coord4=+1.;break;
+				case 13: coord1=.5; coord2=0.; coord3=.5; coord4=+1.;break;
+				case 14: coord1=.5; coord2=.5; coord3=0.; coord4=+1.;break;
+
+				case 15: coord1=0.; coord2=.5; coord3=.5; coord4=0.;break;
+				case 16: coord1=.5; coord2=0.; coord3=.5; coord4=0.;break;
+				case 17: coord1=.5; coord2=.5; coord3=0.; coord4=0.;break;
+				default: _error_("node index should be in [0 17]");
+			}
+			break;
+		case P2bubbleEnum: case P2bubblecondensedEnum:
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
+				case 3: coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
+				case 4: coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
+				case 5: coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
+
+				case 6: coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
+				case 7: coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
+				case 8: coord1=0.; coord2=0.; coord3=1.; coord4=0.; break;
+
+				case  9: coord1=0.; coord2=.5; coord3=.5; coord4=-1.;break;
+				case 10: coord1=.5; coord2=0.; coord3=.5; coord4=-1.;break;
+				case 11: coord1=.5; coord2=.5; coord3=0.; coord4=-1.;break;
+				case 12: coord1=0.; coord2=.5; coord3=.5; coord4=+1.;break;
+				case 13: coord1=.5; coord2=0.; coord3=.5; coord4=+1.;break;
+				case 14: coord1=.5; coord2=.5; coord3=0.; coord4=+1.;break;
+
+				case 15: coord1=0.; coord2=.5; coord3=.5; coord4=0.;break;
+				case 16: coord1=.5; coord2=0.; coord3=.5; coord4=0.;break;
+				case 17: coord1=.5; coord2=.5; coord3=0.; coord4=0.;break;
+
+				case 18: coord1=1./3.; coord2=1./3.; coord3=1./3.; coord4=0.;  break;
+				default: _error_("node index should be in [0 18]");
+			}
+			break;
+		case P2xP4Enum:
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
+				case 3: coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
+				case 4: coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
+				case 5: coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
+
+				case 6: coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
+				case 7: coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
+				case 8: coord1=0.; coord2=0.; coord3=1.; coord4=0.; break;
+
+				case  9: coord1=0.; coord2=.5; coord3=.5; coord4=-1.;break;
+				case 10: coord1=.5; coord2=0.; coord3=.5; coord4=-1.;break;
+				case 11: coord1=.5; coord2=.5; coord3=0.; coord4=-1.;break;
+				case 12: coord1=0.; coord2=.5; coord3=.5; coord4=+1.;break;
+				case 13: coord1=.5; coord2=0.; coord3=.5; coord4=+1.;break;
+				case 14: coord1=.5; coord2=.5; coord3=0.; coord4=+1.;break;
+
+				case 15: coord1=1.; coord2=0.; coord3=0.; coord4=-.5; break;
+				case 16: coord1=0.; coord2=1.; coord3=0.; coord4=-.5; break;
+				case 17: coord1=0.; coord2=0.; coord3=1.; coord4=-.5; break;
+				case 18: coord1=1.; coord2=0.; coord3=0.; coord4=+.5; break;
+				case 19: coord1=0.; coord2=1.; coord3=0.; coord4=+.5; break;
+				case 20: coord1=0.; coord2=0.; coord3=1.; coord4=+.5; break;
+
+				case 21: coord1=0.; coord2=.5; coord3=.5; coord4=-.5;break;
+				case 22: coord1=.5; coord2=0.; coord3=.5; coord4=-.5;break;
+				case 23: coord1=.5; coord2=.5; coord3=0.; coord4=-.5;break;
+				case 24: coord1=0.; coord2=.5; coord3=.5; coord4=0.;break;
+				case 25: coord1=.5; coord2=0.; coord3=.5; coord4=0.;break;
+				case 26: coord1=.5; coord2=.5; coord3=0.; coord4=0.;break;
+				case 27: coord1=0.; coord2=.5; coord3=.5; coord4=+.5;break;
+				case 28: coord1=.5; coord2=0.; coord3=.5; coord4=+.5;break;
+				case 29: coord1=.5; coord2=.5; coord3=0.; coord4=+.5;break;
+				default: _error_("node index should be in [0 29]");
+			}
+			break;
+		default: _error_("Finite element "<<EnumToStringx(finiteelement)<<" not supported");
+	}
+
+}
+/*}}}*/
+void GaussPenta::GaussVertex(int iv){/*{{{*/
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	/*update static arrays*/
+	switch(iv){
+		case 0: coord1=1.; coord2=0.; coord3=0.; coord4= -1.; break;
+		case 1: coord1=0.; coord2=1.; coord3=0.; coord4= -1.; break;
+		case 2: coord1=0.; coord2=0.; coord3=1.; coord4= -1.; break;
+		case 3: coord1=1.; coord2=0.; coord3=0.; coord4= +1.; break;
+		case 4: coord1=0.; coord2=1.; coord3=0.; coord4= +1.; break;
+		case 5: coord1=0.; coord2=0.; coord3=1.; coord4= +1.; break;
+		default: _error_("vertex index should be in [0 5]");
+
+	}
+
+}
+/*}}}*/
+void GaussPenta::SynchronizeGaussBase(Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	GaussTria* gauss_tria = xDynamicCast<GaussTria*>(gauss);
+
+	gauss_tria->coord1=this->coord1;
+	gauss_tria->coord2=this->coord2;
+	gauss_tria->coord3=this->coord3;
+	gauss_tria->weight=UNDEF;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussPenta.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussPenta.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussPenta.h	(revision 21239)
@@ -0,0 +1,52 @@
+/*!\file GaussPenta.h
+ * \brief: header file for node object
+ */
+
+#ifndef _GAUSSPENTA_H_
+#define _GAUSSPENTA_H_
+
+/*Headers:*/
+#include "../../shared/Numerics/types.h"
+#include "./Gauss.h"
+class GaussTria;
+
+class GaussPenta: public Gauss{
+
+	private:
+		int numgauss;
+		IssmDouble* weights;
+		IssmDouble* coords1;
+		IssmDouble* coords2;
+		IssmDouble* coords3;
+		IssmDouble* coords4;
+
+	public:
+		IssmDouble coord1;
+		IssmDouble coord2;
+		IssmDouble coord3;
+		IssmDouble coord4;
+
+	public:
+
+		/*GaussPenta constructors, destructors*/
+		GaussPenta();
+		GaussPenta(int order_horiz,int order_vert);
+		GaussPenta(int index1, int index2,int order);
+		GaussPenta(int index1, int index2, int index3, int order);
+		GaussPenta(int index1, int index2, int index3, int index4,int order_horiz,int order_vert);
+		GaussPenta(int index,IssmDouble r1, IssmDouble r2,bool maintlyfloating,int order);
+		GaussPenta(IssmDouble area_coordinates[4][3],int order_horiz,int order_vert);
+		~GaussPenta();
+
+		/*Methods*/
+		int  begin(void);
+		void Echo(void);
+		int  end(void);
+		int  Enum(void);
+		void GaussFaceTria(int index1, int index2, int index3, int order);
+		void GaussNode(int finitelement,int iv);
+		void GaussPoint(int ig);
+		void GaussVertex(int iv);
+		void SynchronizeGaussBase(Gauss* gauss);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussSeg.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussSeg.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussSeg.cpp	(revision 21239)
@@ -0,0 +1,169 @@
+/*!\file GaussSeg.c
+ * \brief: implementation of the GaussSeg object
+ */
+
+#include "./GaussSeg.h"
+#include "../../shared/io/Print/Print.h"
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/MemOps/MemOps.h"
+#include "../../shared/Enum/Enum.h"
+#include "../../shared/Numerics/GaussPoints.h"
+#include "../../shared/Numerics/constants.h"
+
+/*GaussSeg constructors and destructors:*/
+GaussSeg::GaussSeg(){/*{{{*/
+
+	numgauss=-1;
+
+	weights=NULL;
+	coords1=NULL;
+
+	weight=UNDEF;
+	coord1=UNDEF;
+}
+/*}}}*/
+GaussSeg::GaussSeg(int order){/*{{{*/
+
+	IssmPDouble* pcoords1=NULL;
+	IssmPDouble* pweights=NULL;
+
+	/*Get gauss points*/
+	this->numgauss = order;
+	GaussLegendreLinear(&pcoords1,&pweights,order);
+	
+	this->coords1=xNew<IssmDouble>(numgauss);
+	this->weights=xNew<IssmDouble>(numgauss);
+
+	/*cast : */
+	for(int i=0;i<numgauss;i++){
+		this->coords1[i]=pcoords1[i];
+		this->weights[i]=pweights[i];
+	}
+
+	/*Free ressources: */
+	xDelete<IssmPDouble>(pcoords1);
+	xDelete<IssmPDouble>(pweights);
+
+	/*Initialize static fields as undefinite*/
+	weight=UNDEF;
+	coord1=UNDEF;
+}
+/*}}}*/
+GaussSeg::GaussSeg(IssmDouble position){/*{{{*/
+
+	/*Get gauss points*/
+	this->numgauss = 1;
+	this->coords1=xNew<IssmDouble>(numgauss);
+	this->weights=xNew<IssmDouble>(numgauss);
+
+	/*cast : */
+	_assert_(position>=-1. && position<=+1.);
+	this->coords1[0]=position;
+	this->weights[0]=1.;
+
+	/*Initialize static fields as undefinite*/
+	weight=UNDEF;
+	coord1=UNDEF;
+}
+/*}}}*/
+GaussSeg::~GaussSeg(){/*{{{*/
+	xDelete<IssmDouble>(weights);
+	xDelete<IssmDouble>(coords1);
+}
+/*}}}*/
+
+/*Methods*/
+int GaussSeg::begin(void){/*{{{*/
+
+	/*Check that this has been initialized*/
+	_assert_(numgauss>0);
+	_assert_(weights);
+	_assert_(coords1);
+
+	/*return first gauss index*/
+	return 0;
+}
+/*}}}*/
+void GaussSeg::Echo(void){/*{{{*/
+
+	_printf_("GaussSeg:\n");
+	_printf_("   numgauss: " << numgauss << "\n");
+
+	if (weights){
+	 _printf_("   weights = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << weights[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("weights = NULL\n");
+	if (coords1){
+	 _printf_("   coords1 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords1[i] << "\n");
+	 _printf_("]\n");
+	}
+	_printf_("   weight = " << weight << "\n");
+	_printf_("   coord1 = " << coord1 << "\n");
+
+}
+/*}}}*/
+int GaussSeg::end(void){/*{{{*/
+
+	/*Check that this has been initialized*/
+	_assert_(numgauss>0);
+	_assert_(weights);
+	_assert_(coords1);
+
+	/*return last gauss index +1*/
+	return numgauss;
+}
+/*}}}*/
+int GaussSeg::Enum(void){/*{{{*/
+	return GaussSegEnum;
+}
+/*}}}*/
+void GaussSeg::GaussPoint(int ig){/*{{{*/
+
+	/*Check input in debugging mode*/
+	 _assert_(ig>=0 && ig< numgauss);
+
+	 /*update static arrays*/
+	 weight=weights[ig];
+	 coord1=coords1[ig];
+}
+/*}}}*/
+void GaussSeg::GaussNode(int finiteelement,int iv){/*{{{*/
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	/*update static arrays*/
+	switch(finiteelement){
+		case P1Enum: case P1DGEnum:
+			switch(iv){
+				case 0: coord1=-1.; break;
+				case 1: coord1=+1.; break;
+				default: _error_("node index should be in [0 1]");
+			}
+			break;
+		default: _error_("Finite element "<<EnumToStringx(finiteelement)<<" not supported");
+	}
+
+}
+/*}}}*/
+void GaussSeg::GaussVertex(int iv){/*{{{*/
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	/*update static arrays*/
+	switch(iv){
+		case 0: coord1=-1.; break;
+		case 1: coord1=+1.; break;
+		default: _error_("vertex index should be in [0 1]");
+	}
+}
+/*}}}*/
+void GaussSeg::SynchronizeGaussBase(Gauss* gauss){/*{{{*/
+
+	_error_("not supported");
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussSeg.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussSeg.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussSeg.h	(revision 21239)
@@ -0,0 +1,40 @@
+/*!\file GaussSeg.h
+ * \brief: header file for node object
+ */
+
+#ifndef _GAUSSSEG_H_
+#define _GAUSSSEG_H_
+
+/*Headers:*/
+#include "../../shared/Numerics/types.h"
+#include "./Gauss.h"
+
+class GaussSeg: public Gauss{
+
+	private:
+		int numgauss;
+		IssmDouble* weights;
+		IssmDouble* coords1;
+
+	public:
+		IssmDouble coord1;
+
+	public:
+
+		/*GaussSeg constructors, destructors*/
+		GaussSeg();
+		GaussSeg(int order);
+		GaussSeg(IssmDouble position);
+		~GaussSeg();
+
+		/*Methods*/
+		int  begin(void);
+		void Echo(void);
+		int  end(void);
+		int  Enum(void);
+		void GaussPoint(int ig);
+		void GaussNode(int finitelement,int iv);
+		void GaussVertex(int iv);
+		void SynchronizeGaussBase(Gauss* gauss);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussTetra.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussTetra.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussTetra.cpp	(revision 21239)
@@ -0,0 +1,254 @@
+/*!\file GaussTetra.c
+ * \brief: implementation of the GaussTetra object
+ */
+
+#include <math.h>
+#include "./GaussTetra.h"
+#include "../../shared/io/Print/Print.h"
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/MemOps/MemOps.h"
+#include "../../shared/Enum/Enum.h"
+#include "../../shared/Numerics/GaussPoints.h"
+#include "../../shared/Numerics/constants.h"
+
+/*GaussTetra constructors and destructors:*/
+GaussTetra::GaussTetra(){/*{{{*/
+
+	numgauss=-1;
+
+	weights=NULL;
+	coords1=NULL;
+	coords2=NULL;
+	coords3=NULL;
+	coords4=NULL;
+
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+	coord4=UNDEF;
+}
+/*}}}*/
+GaussTetra::GaussTetra(int order){/*{{{*/
+
+	/*Get gauss points*/
+	GaussLegendreTetra(&numgauss,&coords1,&coords2,&coords3,&coords4,&weights,order);
+
+	/*Rescale weights if necessary*/
+	IssmDouble sumweights = 0.;
+	for(int i=0;i<numgauss;i++) sumweights += this->weights[i];
+	if(sumweights==1.){
+		for(int i=0;i<numgauss;i++) this->weights[i] = this->weights[i]/6.; /*rescale volume to 1/6*/
+	}
+
+	/*Check final weights in debugging mode*/
+	#ifdef _ISSM_DEBUG_
+	sumweights = 0.; for(int i=0;i<numgauss;i++) sumweights += this->weights[i];
+	_assert_(sumweights>1./6.-1e-10);
+	_assert_(sumweights<1./6.+1e-10);
+	#endif
+
+	/*Initialize static fields as undefinite*/
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+}
+/*}}}*/
+GaussTetra::GaussTetra(int index1,int index2,int index3,int order){/*{{{*/
+
+	/*Basal Tria*/
+	if(index1==0 && index2==1 && index3==2){
+		GaussLegendreTria(&numgauss,&coords1,&coords2,&coords3,&weights,order);
+		coords4=xNew<IssmDouble>(numgauss);
+		for(int i=0;i<numgauss;i++) coords4[i]=0.;
+	}
+	else if(index1==0 && index2==3 && index3==1){
+		GaussLegendreTria(&numgauss,&coords1,&coords2,&coords4,&weights,order);
+		coords3=xNew<IssmDouble>(numgauss);
+		for(int i=0;i<numgauss;i++) coords3[i]=0.;
+	}
+	else if(index1==1 && index2==3 && index3==2){
+		GaussLegendreTria(&numgauss,&coords2,&coords3,&coords4,&weights,order);
+		coords1=xNew<IssmDouble>(numgauss);
+		for(int i=0;i<numgauss;i++) coords1[i]=0.;
+	}
+	else if(index1==0 && index2==2 && index3==3){
+		GaussLegendreTria(&numgauss,&coords1,&coords3,&coords4,&weights,order);
+		coords2=xNew<IssmDouble>(numgauss);
+		for(int i=0;i<numgauss;i++) coords2[i]=0.;
+	}
+	else{
+		_error_(index1 <<" "<<index2 <<" "<<index3 <<" Not supported yet");
+	}
+}
+/*}}}*/
+GaussTetra::~GaussTetra(){/*{{{*/
+	xDelete<IssmDouble>(weights);
+	xDelete<IssmDouble>(coords1);
+	xDelete<IssmDouble>(coords2);
+	xDelete<IssmDouble>(coords3);
+	xDelete<IssmDouble>(coords4);
+}
+/*}}}*/
+
+/*Methods*/
+int GaussTetra::begin(void){/*{{{*/
+
+	/*Check that this has been initialized*/
+	_assert_(numgauss>0);
+	_assert_(weights);
+	_assert_(coords1);
+	_assert_(coords2);
+	_assert_(coords3);
+	_assert_(coords4);
+
+	/*return first gauss index*/
+	return 0;
+}
+/*}}}*/
+void GaussTetra::Echo(void){/*{{{*/
+
+	_printf_("GaussTetra:\n");
+	_printf_("   numgauss: " << numgauss << "\n");
+
+	if (weights){
+	 _printf_("   weights = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << weights[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("weights = NULL\n");
+	if (coords1){
+	 _printf_("   coords1 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords1[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("coords1 = NULL\n");
+	if (coords2){
+	 _printf_("   coords2 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords2[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("coords2 = NULL\n");
+	if (coords3){
+	 _printf_("   coords3 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords3[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("coords3 = NULL\n");
+	if (coords4){
+		_printf_("   coords4 = ["); 
+		for(int i=0;i<numgauss;i++) _printf_(" " << coords4[i] << "\n");
+		_printf_("]\n");
+	}
+	else _printf_("coords4 = NULL\n");
+
+	_printf_("   weight = " << weight << "\n");
+	_printf_("   coord1 = " << coord1 << "\n");
+	_printf_("   coord2 = " << coord2 << "\n");
+	_printf_("   coord3 = " << coord3 << "\n");
+	_printf_("   coord4 = " << coord4 << "\n");
+
+}
+/*}}}*/
+int GaussTetra::end(void){/*{{{*/
+
+	/*Check that this has been initialized*/
+	_assert_(numgauss>0);
+	_assert_(weights);
+	_assert_(coords1);
+	_assert_(coords2);
+	_assert_(coords3);
+	_assert_(coords4);
+
+	/*return last gauss index +1*/
+	return numgauss;
+}
+/*}}}*/
+int GaussTetra::Enum(void){/*{{{*/
+	return GaussTetraEnum;
+}
+/*}}}*/
+void GaussTetra::GaussPoint(int ig){/*{{{*/
+
+	/*Check input in debugging mode*/
+	 _assert_(ig>=0 && ig< numgauss);
+
+	 /*update static arrays*/
+	 weight=weights[ig];
+	 coord1=coords1[ig];
+	 coord2=coords2[ig];
+	 coord3=coords3[ig];
+	 coord4=coords4[ig];
+
+}
+/*}}}*/
+void GaussTetra::GaussNode(int finiteelement,int iv){/*{{{*/
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	/*update static arrays*/
+	switch(finiteelement){
+		case P1Enum: case P1DGEnum:
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; coord4=0.; break;
+				case 3: coord1=0.; coord2=0.; coord3=0.; coord4=1.; break;
+				default: _error_("node index should be in [0 3]");
+			}
+			break;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; coord4=0.; break;
+				case 3: coord1=0.; coord2=0.; coord3=0.; coord4=1.; break;
+				case 4: coord1=1./4.; coord2=1./4.; coord3=1./4.; coord4=1./4.; break;
+				default: _error_("node index should be in [0 4]");
+			}
+			break;
+		case P2Enum:
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; coord4=0.; break;
+				case 3: coord1=0.; coord2=0.; coord3=0.; coord4=1.; break;
+
+				case 4: coord1=0.; coord2=.5; coord3=.5; coord4=0.; break;
+				case 5: coord1=.5; coord2=0.; coord3=.5; coord4=0.; break;
+				case 6: coord1=.5; coord2=.5; coord3=0.; coord4=0.; break;
+				case 7: coord1=.5; coord2=0.; coord3=0.; coord4=.5; break;
+				case 8: coord1=0.; coord2=.5; coord3=0.; coord4=.5; break;
+				case 9: coord1=0.; coord2=0.; coord3=.5; coord4=.5; break;
+				default: _error_("node index should be in [0 9]");
+			}
+			break;
+		default: _error_("Finite element "<<EnumToStringx(finiteelement)<<" not supported");
+	}
+
+}
+/*}}}*/
+void GaussTetra::GaussVertex(int iv){/*{{{*/
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	/*update static arrays*/
+	switch(iv){
+		case 0: coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
+		case 1: coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
+		case 2: coord1=0.; coord2=0.; coord3=1.; coord4=0.; break;
+		case 3: coord1=0.; coord2=0.; coord3=0.; coord4=1.; break;
+		default: _error_("vertex index should be in [0 3]");
+
+	}
+
+}
+/*}}}*/
+void GaussTetra::SynchronizeGaussBase(Gauss* gauss){/*{{{*/
+
+	_error_("not supported");
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussTetra.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussTetra.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussTetra.h	(revision 21239)
@@ -0,0 +1,46 @@
+/*!\file GaussTetra.h
+ * \brief: header file for node object
+ */
+
+#ifndef _GAUSSTETRA_H_
+#define _GAUSSTETRA_H_
+
+/*Headers:*/
+#include "../../shared/Numerics/types.h"
+#include "./Gauss.h"
+
+class GaussTetra: public Gauss{
+
+	private:
+		int numgauss;
+		IssmDouble* weights;
+		IssmDouble* coords1;
+		IssmDouble* coords2;
+		IssmDouble* coords3;
+		IssmDouble* coords4;
+
+	public:
+		IssmDouble coord1;
+		IssmDouble coord2;
+		IssmDouble coord3;
+		IssmDouble coord4;
+
+	public:
+
+		/*GaussTetra constructors, destructors*/
+		GaussTetra();
+		GaussTetra(int order);
+		GaussTetra(int index1,int index2,int index3,int order);
+		~GaussTetra();
+
+		/*Methods*/
+		int  begin(void);
+		void Echo(void);
+		int  end(void);
+		int  Enum(void);
+		void GaussPoint(int ig);
+		void GaussNode(int finitelement,int iv);
+		void GaussVertex(int iv);
+		void SynchronizeGaussBase(Gauss* gauss);
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussTria.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussTria.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussTria.cpp	(revision 21239)
@@ -0,0 +1,512 @@
+/*!\file GaussTria.c
+ * \brief: implementation of the GaussTria object
+ */
+
+#include "./GaussTria.h"
+#include "../../shared/shared.h"
+
+/*GaussTria constructors and destructors:*/
+GaussTria::GaussTria(){/*{{{*/
+
+	numgauss=-1;
+
+	weights=NULL;
+	coords1=NULL;
+	coords2=NULL;
+	coords3=NULL;
+
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+}
+/*}}}*/
+GaussTria::GaussTria(int order){/*{{{*/
+
+	/*Get gauss points*/
+	GaussLegendreTria(&numgauss,&coords1,&coords2,&coords3,&weights,order);
+
+	/*Initialize static fields as undefinite*/
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+
+}
+/*}}}*/
+GaussTria::GaussTria(int index1,int index2,int order){/*{{{*/
+
+	/*Intermediaties*/
+	IssmPDouble *seg_coords  = NULL;
+	IssmPDouble *seg_weights = NULL;
+	IssmDouble  a1,b1,c1,a2,b2,c2;
+
+	/*Get Segment gauss points*/
+	numgauss=order;
+	GaussLegendreLinear(&seg_coords,&seg_weights,numgauss);
+
+	/*Allocate GaussTria fields*/
+	coords1=xNew<IssmDouble>(numgauss);
+	coords2=xNew<IssmDouble>(numgauss);
+	coords3=xNew<IssmDouble>(numgauss);
+	weights=xNew<IssmDouble>(numgauss);
+
+	/*Figure out coords of index1 (a1,b1,c1) and index2 (a2,b2,c2)*/
+	if(index1==0){
+		a1=1; b1=0; c1=0;
+	}
+	else if(index1==1){
+		a1=0; b1=1; c1=0;
+	}
+	else if(index1==2){
+		a1=0; b1=0; c1=1;
+	}
+	else{
+		_error_("First indice provided is not supported yet (user provided " << index1 << ")");
+	}
+	if(index2==0){
+		a2=1; b2=0; c2=0;
+	}
+	else if(index2==1){
+		a2=0; b2=1; c2=0;
+	}
+	else if(index2==2){
+		a2=0; b2=0; c2=1;
+	}
+	else{
+	 _error_("Second indice provided is not supported yet (user provided " << index2 << " )");
+	}
+
+	/*Build Triangle Gauss point*/
+	for(int i=0;i<numgauss;i++){
+		coords1[i]=0.5*(a1+a2) + 0.5*seg_coords[i]*(a2-a1);
+		coords2[i]=0.5*(b1+b2) + 0.5*seg_coords[i]*(b2-b1);
+		coords3[i]=0.5*(c1+c2) + 0.5*seg_coords[i]*(c2-c1);
+		weights[i]=seg_weights[i];
+	}
+
+	/*Initialize static fields as undefined*/
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+
+	/*clean up*/
+	xDelete<double>(seg_coords);
+	xDelete<double>(seg_weights);
+}
+/*}}}*/
+GaussTria::GaussTria(IssmDouble area_coordinates[2][3],int order){/*{{{*/
+
+	/*Intermediaties*/
+	IssmPDouble *seg_coords  = NULL;
+	IssmPDouble *seg_weights = NULL;
+
+	/*Get Segment gauss points*/
+	numgauss=order;
+	GaussLegendreLinear(&seg_coords,&seg_weights,numgauss);
+
+	/*Allocate GaussTria fields*/
+	coords1=xNew<IssmDouble>(numgauss);
+	coords2=xNew<IssmDouble>(numgauss);
+	coords3=xNew<IssmDouble>(numgauss);
+	weights=xNew<IssmDouble>(numgauss);
+
+	/*Build Triangle Gauss point*/
+	for(int i=0;i<numgauss;i++){
+		coords1[i]=0.5*(area_coordinates[0][0]+area_coordinates[1][0]) + 0.5*seg_coords[i]*(area_coordinates[1][0]-area_coordinates[0][0]);
+		coords2[i]=0.5*(area_coordinates[0][1]+area_coordinates[1][1]) + 0.5*seg_coords[i]*(area_coordinates[1][1]-area_coordinates[0][1]);
+		coords3[i]=0.5*(area_coordinates[0][2]+area_coordinates[1][2]) + 0.5*seg_coords[i]*(area_coordinates[1][2]-area_coordinates[0][2]);
+		weights[i]=seg_weights[i];
+	}
+
+	/*Initialize static fields as undefined*/
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+
+	/*clean up*/
+	xDelete<IssmPDouble>(seg_coords);
+	xDelete<IssmPDouble>(seg_weights);
+}
+/*}}}*/
+GaussTria::GaussTria(int index,IssmDouble r1,IssmDouble r2,bool mainlyfloating,int order){/*{{{*/
+
+	/*
+	 *  ^ 
+	 *  |
+	 * 1|\
+	 *  |  \
+	 *  |    \
+	 *  |      \
+	 *  |        \
+	 *  |          \
+	 *  |    +(x,y)  \
+	 *  |              \
+	 *  +---------------+-->
+	 *  0               1
+	 *
+	 */
+	int         ig;
+	IssmDouble x,y;
+	IssmDouble xy_list[3][2];
+
+	if(mainlyfloating){
+		/*Get gauss points*/
+		GaussLegendreTria(&this->numgauss,&this->coords1,&this->coords2,&this->coords3,&this->weights,order);
+
+		xy_list[0][0]=0;  xy_list[0][1]=0; 
+		xy_list[1][0]=r1; xy_list[1][1]=0; 
+		xy_list[2][0]=0;  xy_list[2][1]=r2; 
+
+		for(ig=0;ig<this->numgauss;ig++){
+			x = this->coords1[ig]*xy_list[0][0] + this->coords2[ig]*xy_list[1][0] + this->coords3[ig]*xy_list[2][0];
+			y = this->coords1[ig]*xy_list[0][1] + this->coords2[ig]*xy_list[1][1] + this->coords3[ig]*xy_list[2][1];
+
+			switch(index){
+				case 0:
+					this->coords1[ig] = 1.-x-y;
+					this->coords2[ig] = x;
+					this->coords3[ig] = y;
+					break;
+				case 1:
+					this->coords1[ig] = y;
+					this->coords2[ig] = 1.-x-y;
+					this->coords3[ig] = x;
+					break;
+				case 2:
+					this->coords1[ig] = x;
+					this->coords2[ig] = y;
+					this->coords3[ig] = 1.-x-y;
+					break;
+				default:
+					_error_("index "<<index<<" not supported yet");
+			}
+			this->weights[ig] = this->weights[ig]*r1*r2;
+		}
+	}
+	else{
+		/*Double number of gauss points*/
+		GaussTria *gauss1    = NULL;
+		GaussTria *gauss2    = NULL;
+		gauss1=new GaussTria(order);
+		gauss2=new GaussTria(order);
+
+		xy_list[0][0]=r1; xy_list[0][1]=0; 
+		xy_list[1][0]=0;  xy_list[1][1]=1.; 
+		xy_list[2][0]=0;  xy_list[2][1]=r2; 
+
+			//gauss1->Echo();
+		for(ig=0;ig<gauss1->numgauss;ig++){
+			x = gauss1->coords1[ig]*xy_list[0][0] + gauss1->coords2[ig]*xy_list[1][0] + gauss1->coords3[ig]*xy_list[2][0];
+			y = gauss1->coords1[ig]*xy_list[0][1] + gauss1->coords2[ig]*xy_list[1][1] + gauss1->coords3[ig]*xy_list[2][1];
+
+			switch(index){
+				case 0:
+					gauss1->coords1[ig] = 1.-x-y;
+					gauss1->coords2[ig] = x;
+					gauss1->coords3[ig] = y;
+					break;
+				case 1:
+					gauss1->coords1[ig] = y;
+					gauss1->coords2[ig] = 1.-x-y;
+					gauss1->coords3[ig] = x;
+					break;
+				case 2:
+					gauss1->coords1[ig] = x;
+					gauss1->coords2[ig] = y;
+					gauss1->coords3[ig] = 1.-x-y;
+					break;
+				default:
+					_error_("index "<<index<<" not supported yet");
+			}
+			gauss1->weights[ig] = gauss1->weights[ig]*r1*(1-r2);
+		}
+			//gauss1->Echo();
+		xy_list[0][0]=r1; xy_list[0][1]=0; 
+		xy_list[1][0]=1.; xy_list[1][1]=0; 
+		xy_list[2][0]=0;  xy_list[2][1]=1.; 
+
+			//gauss2->Echo();
+		for(ig=0;ig<gauss2->numgauss;ig++){
+			x = gauss2->coords1[ig]*xy_list[0][0] + gauss2->coords2[ig]*xy_list[1][0] + gauss2->coords3[ig]*xy_list[2][0];
+			y = gauss2->coords1[ig]*xy_list[0][1] + gauss2->coords2[ig]*xy_list[1][1] + gauss2->coords3[ig]*xy_list[2][1];
+
+			switch(index){
+				case 0:
+					gauss2->coords1[ig] = 1.-x-y;
+					gauss2->coords2[ig] = x;
+					gauss2->coords3[ig] = y;
+					break;
+				case 1:
+					gauss2->coords1[ig] = y;
+					gauss2->coords2[ig] = 1.-x-y;
+					gauss2->coords3[ig] = x;
+					break;
+				case 2:
+					gauss2->coords1[ig] = x;
+					gauss2->coords2[ig] = y;
+					gauss2->coords3[ig] = 1.-x-y;
+					break;
+				default:
+					_error_("index "<<index<<" not supported yet");
+			}
+			gauss2->weights[ig] = gauss2->weights[ig]*(1-r1);
+		}
+
+		this->numgauss = gauss1->numgauss + gauss2->numgauss;
+		this->coords1=xNew<IssmDouble>(this->numgauss);
+		this->coords2=xNew<IssmDouble>(this->numgauss);
+		this->coords3=xNew<IssmDouble>(this->numgauss);
+		this->weights=xNew<IssmDouble>(this->numgauss);
+
+		for(ig=0;ig<gauss1->numgauss;ig++){ // Add the first triangle gauss points
+			this->coords1[ig]=gauss1->coords1[ig];
+			this->coords2[ig]=gauss1->coords2[ig];
+			this->coords3[ig]=gauss1->coords3[ig];
+			this->weights[ig]=gauss1->weights[ig];
+		}
+		for(ig=0;ig<gauss2->numgauss;ig++){ // Add the second triangle gauss points
+			this->coords1[gauss1->numgauss+ig]=gauss2->coords1[ig];
+			this->coords2[gauss1->numgauss+ig]=gauss2->coords2[ig];
+			this->coords3[gauss1->numgauss+ig]=gauss2->coords3[ig];
+			this->weights[gauss1->numgauss+ig]=gauss2->weights[ig];
+		}
+
+		/*Delete gauss points*/
+		delete gauss1;
+		delete gauss2;
+	}
+
+	/*Initialize static fields as undefined*/
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+}
+/*}}}*/
+GaussTria::~GaussTria(){/*{{{*/
+	xDelete<IssmDouble>(weights);
+	xDelete<IssmDouble>(coords3);
+	xDelete<IssmDouble>(coords2);
+	xDelete<IssmDouble>(coords1);
+
+}
+/*}}}*/
+
+/*Methods*/
+int GaussTria::begin(void){/*{{{*/
+
+	/*Check that this has been initialized*/
+	_assert_(numgauss>0);
+	_assert_(weights);
+	_assert_(coords1);
+	_assert_(coords2);
+	_assert_(coords3);
+
+	/*return first gauss index*/
+	return 0;
+}
+/*}}}*/
+void GaussTria::Echo(void){/*{{{*/
+
+	_printf_("GaussTria:\n");
+	_printf_("   numgauss: " << numgauss << "\n");
+
+	if (weights){
+	 _printf_("   weights = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << weights[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("weights = NULL\n");
+	if (coords1){
+	 _printf_("   coords1 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords1[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("coords1 = NULL\n");
+	if (coords2){
+	 _printf_("   coords2 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords2[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("coords2 = NULL\n");
+	if (coords3){
+	 _printf_("   coords3 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords3[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("coords3 = NULL\n");
+
+	_printf_("   weight = " << weight << "\n");
+	_printf_("   coord1 = " << coord1 << "\n");
+	_printf_("   coord2 = " << coord2 << "\n");
+	_printf_("   coord3 = " << coord3 << "\n");
+
+}
+/*}}}*/
+int GaussTria::end(void){/*{{{*/
+
+	/*Check that this has been initialized*/
+	_assert_(numgauss>0);
+	_assert_(weights);
+	_assert_(coords1);
+	_assert_(coords2);
+	_assert_(coords3);
+
+	/*return last gauss index +1*/
+	return numgauss;
+}
+/*}}}*/
+int GaussTria::Enum(void){/*{{{*/
+	return GaussTriaEnum;
+}
+/*}}}*/
+void GaussTria::GaussEdgeCenter(int index1,int index2){/*{{{*/
+
+	int     index3;
+
+	/*Reverse index1 and 2 if necessary*/
+	if (index1>index2){
+		index3=index1; index1=index2; index2=index3;
+	}
+
+	/*update static arrays*/
+	if (index1==0 && index2==1){
+		coord1=0.5;
+		coord2=0.5;
+		coord3=0.0;
+	}
+	else if (index1==0 && index2==2){
+		coord1=0.5;
+		coord2=0.0;
+		coord3=0.5;
+	}
+	else if (index1==1 && index2==2){
+		coord1=0.0;
+		coord2=0.5;
+		coord3=0.5;
+	}
+	else
+	 _error_("The 2 indices provided are not supported yet (user provided " << index1 << " and " << index2 << ")");
+
+}
+/*}}}*/
+void GaussTria::GaussFromCoords(IssmDouble x,IssmDouble y,IssmDouble* xyz_list){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble    area = 0;
+	IssmDouble    x1,y1,x2,y2,x3,y3;
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	x1=*(xyz_list+3*0+0); y1=*(xyz_list+3*0+1);
+	x2=*(xyz_list+3*1+0); y2=*(xyz_list+3*1+1);
+	x3=*(xyz_list+3*2+0); y3=*(xyz_list+3*2+1);
+
+	area=(x2*y3 - y2*x3 + x1*y2 - y1*x2 + x3*y1 - y3*x1)/2;
+
+	/*Get first area coordinate = det(x-x3  x2-x3 ; y-y3   y2-y3)/area*/
+	coord1=((x-x3)*(y2-y3)-(x2-x3)*(y-y3))/area;
+
+	/*Get second area coordinate = det(x1-x3  x-x3 ; y1-y3   y-y3)/area*/
+	coord2=((x1-x3)*(y-y3)-(x-x3)*(y1-y3))/area;
+
+	/*Get third  area coordinate 1-area1-area2: */
+	coord3=1-coord1-coord2;
+
+}
+/*}}}*/
+void GaussTria::GaussPoint(int ig){/*{{{*/
+
+	/*Check input in debugging mode*/
+	 _assert_(ig>=0 && ig< numgauss);
+
+	 /*update static arrays*/
+	 weight=weights[ig];
+	 coord1=coords1[ig];
+	 coord2=coords2[ig];
+	 coord3=coords3[ig];
+
+}
+/*}}}*/
+void GaussTria::GaussNode(int finiteelement,int iv){/*{{{*/
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	/*update static arrays*/
+	switch(finiteelement){
+		case P0Enum:
+			switch(iv){
+				case 0: coord1=1./3.; coord2=1./3.; coord3=1./3.; break;
+				default: _error_("node index should be 0");
+			}
+			break;
+		case P1Enum: case P1DGEnum:
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; break;
+				default: _error_("node index should be in [0 2]");
+			}
+			break;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			switch(iv){
+				case 0: coord1=1.;    coord2=0.;    coord3=0.;    break;
+				case 1: coord1=0.;    coord2=1.;    coord3=0.;    break;
+				case 2: coord1=0.;    coord2=0.;    coord3=1.;    break;
+				case 3: coord1=1./3.; coord2=1./3.; coord3=1./3.; break;
+				default: _error_("node index should be in [0 3]");
+			}
+			break;
+		case P2Enum:
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; break;
+				case 3: coord1=0.; coord2=.5; coord3=.5; break;
+				case 4: coord1=.5; coord2=0.; coord3=.5; break;
+				case 5: coord1=.5; coord2=.5; coord3=0.; break;
+				default: _error_("node index should be in [0 5]");
+			}
+			break;
+		case P2bubbleEnum: case P2bubblecondensedEnum:
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; break;
+				case 3: coord1=0.; coord2=.5; coord3=.5; break;
+				case 4: coord1=.5; coord2=0.; coord3=.5; break;
+				case 5: coord1=.5; coord2=.5; coord3=0.; break;
+				case 6: coord1=1./3.; coord2=1./3.; coord3=1./3.; break;
+				default: _error_("node index should be in [0 6]");
+			}
+			break;
+		default: _error_("Finite element "<<EnumToStringx(finiteelement)<<" not supported");
+	}
+
+}
+/*}}}*/
+void GaussTria::GaussVertex(int iv){/*{{{*/
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	/*update static arrays*/
+	switch(iv){
+		case 0: coord1=1.; coord2=0.; coord3=0.; break;
+		case 1: coord1=0.; coord2=1.; coord3=0.; break;
+		case 2: coord1=0.; coord2=0.; coord3=1.; break;
+		default: _error_("vertex index should be in [0 2]");
+	}
+
+}
+/*}}}*/
+void GaussTria::SynchronizeGaussBase(Gauss* gauss){/*{{{*/
+
+	_error_("not supported");
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussTria.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussTria.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/GaussTria.h	(revision 21239)
@@ -0,0 +1,48 @@
+/*!\file GaussTria.h
+ * \brief: header file for node object
+ */
+
+#ifndef _GAUSSTRIA_H_
+#define _GAUSSTRIA_H_
+
+/*Headers:*/
+#include "../../shared/Numerics/types.h"
+#include "./Gauss.h"
+
+class GaussTria: public Gauss{
+
+	private:
+		int numgauss;
+		IssmDouble* weights;
+		IssmDouble* coords1;
+		IssmDouble* coords2;
+		IssmDouble* coords3;
+
+	public:
+		IssmDouble coord1;
+		IssmDouble coord2;
+		IssmDouble coord3;
+
+	public:
+
+		/*GaussTria constructors, destructors*/
+		GaussTria();
+		GaussTria(int order);
+		GaussTria(int index1,int index2,int order);
+		GaussTria(int index,IssmDouble r1, IssmDouble r2,bool maintlyfloating,int order);
+		GaussTria(IssmDouble area_coordinates[2][3],int order);
+		~GaussTria();
+
+		/*Methods*/
+		int  begin(void);
+		void Echo(void);
+		int  end(void);
+		int  Enum(void);
+		void GaussEdgeCenter(int index1,int index2);
+		void GaussFromCoords(IssmDouble x1,IssmDouble y1,IssmDouble* xyz_list);
+		void GaussPoint(int ig);
+		void GaussNode(int finitelement,int iv);
+		void GaussVertex(int iv);
+		void SynchronizeGaussBase(Gauss* gauss);
+};
+#endif  /* _GAUSSTRIA_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/gaussobjects.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/gaussobjects.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/gauss/gaussobjects.h	(revision 21239)
@@ -0,0 +1,14 @@
+/* \file gaussobjects.h
+ * \brief: prototype header for all gauss related objects
+ */
+
+#ifndef ALL_GAUSS_OBJECTS_H_
+#define ALL_GAUSS_OBJECTS_H_
+
+#include "./Gauss.h"
+#include "./GaussSeg.h"
+#include "./GaussTria.h"
+#include "./GaussTetra.h"
+#include "./GaussPenta.h"
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Covertree.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Covertree.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Covertree.cpp	(revision 21239)
@@ -0,0 +1,430 @@
+#include "../classes.h"
+#include <set>
+#include <algorithm>
+
+	/*Constructors/Destructors*/
+Covertree::Covertree(int maxLevel,const std::vector<Observation>& points){/*{{{*/
+	this->base = 2.;
+	_root=NULL;
+	_numNodes=0;
+	_maxLevel=maxLevel;//ceilf(log(maxDist)/log(base));
+	_minLevel=_maxLevel-1;
+	std::vector<Observation>::const_iterator it;
+	for(it=points.begin(); it!=points.end(); ++it) {
+		this->insert(*it);//adds data to the covertree object
+	}
+}/*}}}*/
+Covertree::~Covertree(){/*{{{*/
+	if(_root==NULL) return;
+	//Get all of the root's children (from any level),
+	//delete the root, repeat for each of the children
+	std::vector<CoverTreeNode*> nodes;
+	nodes.push_back(_root);
+	while(!nodes.empty()) {
+		CoverTreeNode* byeNode = nodes[0];
+		nodes.erase(nodes.begin());
+		std::vector<CoverTreeNode*> children = byeNode->getAllChildren();
+		nodes.insert(nodes.begin(),children.begin(),children.end());
+		delete byeNode;
+	}   
+}/*}}}*/
+
+	/*Methods*/
+std::pair<double, Covertree::CoverTreeNode*>		Covertree::distance(const Observation& p, const std::vector<CoverTreeNode*>& Q){/*{{{*/
+	double minDist = 1.e+50;
+	CoverTreeNode* minNode;
+	std::vector<CoverTreeNode*>::const_iterator it;
+	for(it=Q.begin();it!=Q.end();++it) {
+		double dist = p.distance((*it)->getObservation());
+		if(dist < minDist) {
+			minDist = dist;
+			minNode = *it;
+		}
+	}
+	return std::make_pair(minDist,minNode);  
+}/*}}}*/
+int Covertree::get_numberofobs(){/*{{{*/
+	return _numNodes;
+}/*}}}*/
+void   Covertree::insert(const Observation& newObservation){/*{{{*/
+	if(_root==NULL) {
+		_root = new CoverTreeNode(newObservation);
+		_numNodes=1;
+		return;
+	}
+	//TODO: this is pretty inefficient, there may be a better way
+	//to check if the node already exists...
+	CoverTreeNode* n = kNearestNodes(newObservation,1)[0];
+	if(newObservation.distance(n->getObservation())==0.0) {
+		n->addObservation(newObservation);
+	} else {
+		//insert_rec acts under the assumption that there are no nodes with
+		//distance 0 to newObservation in the cover tree (the previous lines check it)
+		insert_rec(newObservation,
+					std::vector<distNodePair>
+					(1,std::make_pair(_root->distance(newObservation),_root)),
+					_maxLevel);
+	}
+}/*}}}*/
+bool		Covertree::insert_rec(const Observation& p, const std::vector<distNodePair>& Qi, const int& level){/*{{{*/
+	std::vector<std::pair<double, CoverTreeNode*> > Qj;
+	double sep = pow(base,level);
+	double minDist = 1.e+50;
+	std::pair<double,CoverTreeNode*> minQiDist(1.e+50,NULL);
+	std::vector<std::pair<double, CoverTreeNode*> >::const_iterator it;
+	for(it=Qi.begin(); it!=Qi.end(); ++it) {
+		if(it->first<minQiDist.first) minQiDist = *it;
+		if(it->first<minDist) minDist=it->first;
+		if(it->first<=sep) Qj.push_back(*it);
+		std::vector<CoverTreeNode*> children = it->second->getChildren(level);
+		std::vector<CoverTreeNode*>::const_iterator it2;
+		for(it2=children.begin();it2!=children.end();++it2) {
+			double d = p.distance((*it2)->getObservation());
+			if(d<minDist) minDist = d;
+			if(d<=sep) {
+				Qj.push_back(std::make_pair(d,*it2));
+			}
+		}
+	}
+	//std::cout << "level: " << level << ", sep: " << sep << ", dist: " << minQDist.first << "\n";
+	if(minDist > sep) {
+		return true;
+	} else {
+		bool found = insert_rec(p,Qj,level-1);
+		//distNodePair minQiDist = distance(p,Qi);
+		if(found && minQiDist.first <= sep) {
+			if(level-1<_minLevel) _minLevel=level-1;
+			minQiDist.second->addChild(level,
+						new CoverTreeNode(p));
+			//std::cout << "parent is ";
+			//minQiDist.second->getObservation().print();
+			_numNodes++;
+			return false;
+		} else {
+			return found;
+		}
+	}
+}/*}}}*/
+std::vector<Covertree::CoverTreeNode*> Covertree::kNearestNodes(const Observation& p, const unsigned int& k) const{/*{{{*/
+	if(_root==NULL) return std::vector<CoverTreeNode*>();
+	//maxDist is the kth nearest known point to p, and also the farthest
+	//point from p in the set minNodes defined below.
+	double maxDist = p.distance(_root->getObservation());
+	//minNodes stores the k nearest known points to p.
+	std::set<distNodePair> minNodes;
+
+	minNodes.insert(std::make_pair(maxDist,_root));
+	std::vector<distNodePair> Qj(1,std::make_pair(maxDist,_root));
+	for(int level = _maxLevel; level>=_minLevel;level--) {
+		std::vector<distNodePair>::const_iterator it;
+		int size = Qj.size();
+		for(int i=0; i<size; i++) {
+			std::vector<CoverTreeNode*> children =
+			  Qj[i].second->getChildren(level);
+			std::vector<CoverTreeNode*>::const_iterator it2;
+			for(it2=children.begin(); it2!=children.end(); ++it2) {
+				double d = p.distance((*it2)->getObservation());
+				if(d < maxDist || minNodes.size() < k) {
+					minNodes.insert(std::make_pair(d,*it2));
+					//--minNodes.end() gives us an iterator to the greatest
+					//element of minNodes.
+					if(minNodes.size() > k) minNodes.erase(--minNodes.end());
+					maxDist = (--minNodes.end())->first;
+				}
+				Qj.push_back(std::make_pair(d,*it2));
+			}
+		}
+		double sep = maxDist + pow(base, level);
+		size = Qj.size();
+		for(int i=0; i<size; i++) {
+			if(Qj[i].first > sep) {
+				//quickly removes an element from a vector w/o preserving order.
+				Qj[i]=Qj.back();
+				Qj.pop_back();
+				size--; i--;
+			}
+		}
+	}
+	std::vector<CoverTreeNode*> kNN;
+	std::set<distNodePair>::const_iterator it;
+	for(it=minNodes.begin();it!=minNodes.end();++it) {
+		kNN.push_back(it->second);
+	}
+	return kNN;
+}/*}}}*/
+std::vector<Observation> Covertree::kNearestNeighbors(const Observation& p, const unsigned int& k) const{/*{{{*/
+	if(_root==NULL) return std::vector<Observation>();
+	std::vector<CoverTreeNode*> v = kNearestNodes(p, k);
+	std::vector<Observation> kNN;
+	std::vector<CoverTreeNode*>::const_iterator it;
+	for(it=v.begin();it!=v.end();++it) {
+		const std::vector<Observation>& p = (*it)->getObservations();
+		kNN.insert(kNN.end(),p.begin(),p.end());
+		if(kNN.size() >= k) break;
+	}
+	return kNN;
+}/*}}}*/
+void   Covertree::print() const{/*{{{*/
+	int d = _maxLevel-_minLevel+1;
+	std::vector<CoverTreeNode*> Q;
+	Q.push_back(_root);
+	for(int i=0;i<d;i++) {
+		std::cout << "LEVEL " << _maxLevel-i << "\n";
+		std::vector<CoverTreeNode*>::const_iterator it;
+		for(it=Q.begin();it!=Q.end();++it) {
+			(*it)->getObservation().print();
+			std::vector<CoverTreeNode*>
+			  children = (*it)->getChildren(_maxLevel-i);
+			std::vector<CoverTreeNode*>::const_iterator it2;
+			for(it2=children.begin();it2!=children.end();++it2) {
+				std::cout << "  ";
+				(*it2)->getObservation().print();
+			}
+		}
+		std::vector<CoverTreeNode*> newQ;
+		for(it=Q.begin();it!=Q.end();++it) {
+			std::vector<CoverTreeNode*>
+			  children = (*it)->getChildren(_maxLevel-i);
+			newQ.insert(newQ.end(),children.begin(),children.end());
+		}
+		Q.insert(Q.end(),newQ.begin(),newQ.end());
+		std::cout << "\n\n";
+	}
+}/*}}}*/
+void   Covertree::remove(const Observation& p){/*{{{*/
+	//Most of this function's code is for the special case of removing the root
+	if(_root==NULL) return;
+	bool removingRoot=_root->hasObservation(p);
+	if(removingRoot && !_root->isSingle()) {
+		_root->removeObservation(p);
+		return;
+	}
+	CoverTreeNode* newRoot=NULL;
+	if(removingRoot) {
+		if(_numNodes==1) {
+			//removing the last node...
+			delete _root;
+			_numNodes--;
+			_root=NULL;
+			return;
+		} else {
+			for(int i=_maxLevel;i>_minLevel;i--) {
+				if(!(_root->getChildren(i).empty())) {
+					newRoot = _root->getChildren(i).back();
+					_root->removeChild(i,newRoot);
+					break;
+				}
+			}
+		}
+	}
+	std::map<int, std::vector<distNodePair> > coverSets;
+	coverSets[_maxLevel].push_back(std::make_pair(_root->distance(p),_root));
+	if(removingRoot)
+	 coverSets[_maxLevel].push_back(std::make_pair(newRoot->distance(p),newRoot));
+	bool multi = false;
+	remove_rec(p,coverSets,_maxLevel,multi);
+	if(removingRoot) {
+		delete _root;
+		_numNodes--;
+		_root=newRoot;
+	}
+}/*}}}*/
+void   Covertree::remove_rec(const Observation& p, std::map<int,std::vector<distNodePair> >& coverSets, int level, bool& multi){/*{{{*/
+	std::vector<distNodePair>& Qi = coverSets[level];
+	std::vector<distNodePair>& Qj = coverSets[level-1];
+	double minDist = 1.e+50;
+	CoverTreeNode* minNode = _root;
+	CoverTreeNode* parent = 0;
+	double sep = pow(base, level);
+	std::vector<distNodePair>::const_iterator it;
+	//set Qj to be all children q of Qi such that p.distance(q)<=sep
+	//and also keep track of the minimum distance from p to a node in Qj
+	//note that every node has itself as a child, but the
+	//getChildren function only returns non-self-children.
+	for(it=Qi.begin();it!=Qi.end();++it) {
+		std::vector<CoverTreeNode*> children = it->second->getChildren(level);
+		double dist = it->first;
+		if(dist<minDist) {
+			minDist = dist;
+			minNode = it->second;
+		}
+		if(dist <= sep) {
+			Qj.push_back(*it);
+		}
+		std::vector<CoverTreeNode*>::const_iterator it2;
+		for(it2=children.begin();it2!=children.end();++it2) {
+			dist = p.distance((*it2)->getObservation());
+			if(dist<minDist) {
+				minDist = dist;
+				minNode = *it2;
+				if(dist == 0.0) parent = it->second;
+			}
+			if(dist <= sep) {
+				Qj.push_back(std::make_pair(dist,*it2));
+			}
+		}
+	}
+	if(level>_minLevel) remove_rec(p,coverSets,level-1,multi);
+	if(minNode->hasObservation(p)) {
+		//the multi flag indicates the point we removed is from a
+		//node containing multiple points, and we have removed it,
+		//so we don't need to do anything else.
+		if(multi) return;
+		if(!minNode->isSingle()) {
+			minNode->removeObservation(p);
+			multi=true;
+			return;
+		}
+		if(parent!=NULL) parent->removeChild(level, minNode);
+		std::vector<CoverTreeNode*> children = minNode->getChildren(level-1);
+		std::vector<distNodePair>& Q = coverSets[level-1];
+		if(Q.size()==1 && Q[0].second==minNode) {
+			Q.pop_back();
+		} else {
+			for(unsigned int i=0;i<Q.size();i++) {
+				if(Q[i].second==minNode) {
+					Q[i]=Q.back();
+					Q.pop_back();
+					break;
+				}
+			}
+		}
+		std::vector<CoverTreeNode*>::const_iterator it;
+		for(it=children.begin();it!=children.end();++it) {
+			int i = level-1;
+			Observation q = (*it)->getObservation();
+			double minDQ = 1.e+50;
+			CoverTreeNode* minDQNode = NULL;
+			double sep = pow(base,i);
+			bool br=false;
+			while(true) {
+				std::vector<distNodePair>&
+				  Q = coverSets[i];
+				std::vector<distNodePair>::const_iterator it2;
+				minDQ = 1.e+50;
+				for(it2=Q.begin();it2!=Q.end();++it2) {
+					double d = q.distance(it2->second->getObservation());
+					if(d<minDQ) {
+						minDQ = d;
+						minDQNode = it2->second;
+						if(d <=sep) {
+							br=true;
+							break;
+						}
+					}
+				}
+				minDQ=1.e+50;
+				if(br) break;
+				Q.push_back(std::make_pair((*it)->distance(p),*it));
+				i++;
+				sep = pow(base,i);
+			}
+			//minDQNode->getObservation().print();
+			//std::cout << " is level " << i << " parent of ";
+			//(*it)->getObservation().print();
+			if (minDQNode != NULL)
+			 minDQNode->addChild(i,*it);
+		}
+		if(parent!=NULL) {
+			delete minNode;
+			_numNodes--;
+		}
+	}
+}/*}}}*/
+
+void   Covertree::CoverTreeNode::addChild(int level, CoverTreeNode* p){/*{{{*/
+	_childMap[level].push_back(p);
+}/*}}}*/
+void   Covertree::CoverTreeNode::addObservation(const Observation& p){/*{{{*/
+	if(find(_observations.begin(), _observations.end(), p) == _observations.end())
+	 _observations.push_back(p);
+}/*}}}*/
+Covertree::CoverTreeNode::CoverTreeNode(const Observation& p) {/*{{{*/
+	_observations.push_back(p);
+}/*}}}*/
+double Covertree::CoverTreeNode::distance(const CoverTreeNode& p) const{/*{{{*/
+	return _observations[0].distance(p.getObservation());
+}/*}}}*/
+std::vector<Covertree::CoverTreeNode*> Covertree::CoverTreeNode::getAllChildren() const{/*{{{*/
+	std::vector<CoverTreeNode*> children;
+	std::map<int,std::vector<CoverTreeNode*> >::const_iterator it;
+	for(it=_childMap.begin();it!=_childMap.end();++it) {
+		children.insert(children.end(), it->second.begin(), it->second.end());
+	}
+	return children;
+}/*}}}*/
+std::vector<Covertree::CoverTreeNode*> Covertree::CoverTreeNode::getChildren(int level) const{/*{{{*/
+	std::map<int,std::vector<CoverTreeNode*> >::const_iterator
+	  it = _childMap.find(level);
+	if(it!=_childMap.end()) {
+		return it->second;
+	}
+	return std::vector<CoverTreeNode*>();
+}/*}}}*/
+const Observation& Covertree::CoverTreeNode::getObservation() const{/*{{{*/
+	return _observations[0]; 
+}/*}}}*/
+Covertree::CoverTreeNode* Covertree::getRoot() const{/*{{{*/
+	return _root;
+}/*}}}*/
+bool   Covertree::CoverTreeNode::hasObservation(const Observation& p) const{/*{{{*/
+	return find(_observations.begin(), _observations.end(), p) != _observations.end();
+}/*}}}*/
+bool   Covertree::CoverTreeNode::isSingle() const{/*{{{*/
+	return _observations.size() == 1;
+}/*}}}*/
+bool   Covertree::isValidTree() const {/*{{{*/
+	if(_numNodes==0)
+	 return _root==NULL;
+
+	std::vector<CoverTreeNode*> nodes;
+	nodes.push_back(_root);
+	for(int i=_maxLevel;i>_minLevel;i--) {
+		double sep = pow(base,i);
+		std::vector<CoverTreeNode*>::const_iterator it, it2;
+		//verify separation invariant of cover tree: for each level,
+		//every point is farther than base^level away
+		for(it=nodes.begin(); it!=nodes.end(); ++it) {
+			for(it2=nodes.begin(); it2!=nodes.end(); ++it2) {
+				double dist=(*it)->distance((*it2)->getObservation());
+				if(dist<=sep && dist!=0.0) {
+					std::cout << "Level " << i << " Separation invariant failed.\n";
+					return false;
+				}
+			}
+		}
+		std::vector<CoverTreeNode*> allChildren;
+		for(it=nodes.begin(); it!=nodes.end(); ++it) {        
+			std::vector<CoverTreeNode*> children = (*it)->getChildren(i);
+			//verify covering tree invariant: the children of node n at level
+			//i are no further than base^i away
+			for(it2=children.begin(); it2!=children.end(); ++it2) {
+				double dist = (*it2)->distance((*it)->getObservation());
+				if(dist>sep) {
+					std::cout << "Level" << i << " covering tree invariant failed.n";
+					return false;
+				}
+			}
+			allChildren.insert
+			  (allChildren.end(),children.begin(),children.end());
+		}
+		nodes.insert(nodes.begin(),allChildren.begin(),allChildren.end());
+	}
+	return true;
+}/*}}}*/
+void   Covertree::CoverTreeNode::removeChild(int level, CoverTreeNode* p){/*{{{*/
+	std::vector<CoverTreeNode*>& v = _childMap[level];
+	for(unsigned int i=0;i<v.size();i++) {
+		if(v[i]==p) {
+			v[i]=v.back();
+			v.pop_back();
+			break;
+		}
+	}
+}/*}}}*/
+void   Covertree::CoverTreeNode::removeObservation(const Observation& p){/*{{{*/
+	std::vector<Observation>::iterator it =
+	  find(_observations.begin(), _observations.end(), p);
+	if(it != _observations.end())
+	 _observations.erase(it);
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Covertree.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Covertree.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Covertree.h	(revision 21239)
@@ -0,0 +1,121 @@
+
+#ifndef _COVERTREE_H
+#define _COVERTREE_H
+
+#include <map>
+class Observation;
+
+class Covertree{
+
+	/* Cover tree node. Consists of arbitrarily many points P, as long as they
+	 * have distance 0 to each other. Keeps track of its children.  */
+	class CoverTreeNode{
+		private:
+			//_childMap[i] is a vector of the node's children at level i
+			std::map<int,std::vector<CoverTreeNode*> > _childMap;
+			//_observations is all of the points with distance 0 which are not equal.
+			std::vector<Observation> _observations;
+		public:
+			CoverTreeNode(const Observation& o);
+			/**
+			 * Returns the children of the node at level i. Note that this means
+			 * the children exist in cover set i-1, not level i.
+			 *
+			 * Does not include the node itself, though technically every node
+			 * has itself as a child in a cover tree.
+			 */
+			void addChild(int level, CoverTreeNode* p);
+			void addObservation(const Observation& o);
+			double distance(const CoverTreeNode& p) const;
+			bool   isSingle() const;
+			bool   hasObservation(const Observation& o) const;
+			std::vector<CoverTreeNode*> getChildren(int level) const;
+			const Observation& getObservation() const;
+			const std::vector<Observation>& getObservations() { return _observations; }
+			void removeChild(int level, CoverTreeNode* p);
+			void removeObservation(const Observation& o);
+
+			/**
+			 * Return every child of the node from any level. This is handy for
+			 * the destructor.
+			 */
+			std::vector<CoverTreeNode*> getAllChildren() const;
+	  }; // CoverTreeNode class
+	private:
+	typedef std::pair<double, CoverTreeNode*> distNodePair;
+
+	CoverTreeNode *_root;
+	unsigned int   _numNodes;
+	int            _maxLevel;   //base^_maxLevel should be the max distance
+	//between any 2 points
+	int            _minLevel;   //A level beneath which there are no more new nodes.
+
+	/* Finds the node in Q with the minimum distance to p. Returns a pair
+	 * consisting of this node and the distance.  */
+	distNodePair distance(const Observation& p,const std::vector<CoverTreeNode*>& Q);
+	/**
+	 * Recursive implementation of the insert algorithm (see paper).
+	 */
+	bool insert_rec(const Observation& p, const std::vector<distNodePair>& Qi,const int& level);
+
+	std::vector<CoverTreeNode*> kNearestNodes(const Observation& o, const unsigned int& k) const;
+	void remove_rec(const Observation& p, std::map<int,std::vector<distNodePair> >& coverSets, int level, bool& multi);
+
+	public:
+	double base;
+
+	/**
+	 * Constructs a cover tree which begins with all points in points.
+	 *
+	 * maxDist should be the maximum distance that any two points
+	 * can have between each other. IE p.distance(q) < maxDist for all
+	 * p,q that you will ever try to insert. The cover tree may be invalid
+	 * if an inaccurate maxDist is given.
+	 */
+
+	Covertree(int maxDist,const std::vector<Observation>& points=std::vector<Observation>()); 
+	~Covertree();
+
+	/**
+	 * Insert newPoint into the cover tree. If newPoint is already present,
+	 * (that is, newPoint==p for some p already in the tree), then the tree
+	 * is unchanged. If p.distance(newPoint)==0.0 but newPoint!=p, then
+	 * newPoint WILL be inserted and both points may be returned in k-nearest-
+	 * neighbor searches.
+	 */
+	void insert(const Observation& newObservation);
+
+	/**
+	 * Just for testing/debugging. Returns true iff the cover tree satisfies the
+	 * the covering tree invariants (every node in level i is greater than base^i
+	 * distance from every other node, and every node in level i is less than
+	 * or equal to base^i distance from its children). See the cover tree
+	 * papers for details.
+	 */
+	bool isValidTree() const;
+
+
+	/**
+	 * Remove point p from the cover tree. If p is not present in the tree,
+	 * it will remain unchanged. Otherwise, this will remove exactly one
+	 * point q from the tree satisfying p==q.
+	 */
+	void remove(const Observation& p);
+
+	/**
+	 * Returns the k nearest points to p in order (the 0th element of the vector
+	 * is closest to p, 1th is next, etc). It may return greater than k points
+	 * if there is a tie for the kth place.
+	 */
+	std::vector<Observation> kNearestNeighbors(const Observation& p, const unsigned int& k) const;
+
+	int get_numberofobs();
+
+	CoverTreeNode* getRoot() const;
+
+	/**
+	 * Print the cover tree.
+	 */
+	void print() const;
+};
+#endif //_COVERTREE_H
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/ExponentialVariogram.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/ExponentialVariogram.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/ExponentialVariogram.cpp	(revision 21239)
@@ -0,0 +1,89 @@
+/*!\file ExponentialVariogram.c
+ * \brief: implementation of the ExponentialVariogram object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+
+/*ExponentialVariogram constructors and destructor*/
+ExponentialVariogram::ExponentialVariogram(){/*{{{*/
+	this->nugget = 0.2;
+	this->sill   = 1;
+	this->range  = SQRT3;
+	return;
+}
+/*}}}*/
+ExponentialVariogram::ExponentialVariogram(Options* options){/*{{{*/
+
+	/*Defaults*/
+	this->nugget = 0.2;
+	this->sill   = 1;
+	this->range  = SQRT3;
+
+	/*Overwrite from options*/
+	if(options->GetOption("nugget")) options->Get(&this->nugget,"nugget");
+	if(options->GetOption("sill"))   options->Get(&this->sill,"sill");
+	if(options->GetOption("range"))  options->Get(&this->range,"range");
+
+	/*Checks*/
+	if(nugget==sill) _error_("nugget and sill cannot be equal (constant semivariogram not allowed)");
+}
+/*}}}*/
+ExponentialVariogram::~ExponentialVariogram(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* ExponentialVariogram::copy(void){/*{{{*/
+	   return new ExponentialVariogram(*this);
+}
+/*}}}*/
+void ExponentialVariogram::Echo(void){/*{{{*/
+	_printf_("ExponentialVariogram\n");
+	_printf_("   nugget: " << this->nugget << "\n");
+	_printf_("   sill  : " << this->sill << "\n");
+	_printf_("   range : " << this->range << "\n");
+}
+/*}}}*/
+
+/*Variogram function*/
+double ExponentialVariogram::Covariance(double deltax,double deltay){/*{{{*/
+	/*The covariance can be deduced from the variogram from the following
+	 * relationship:
+	 *    2 gamma = C(x,x) + C(y,y) -2 C(x,y)
+	 * so
+	 *    C(h) = sill - gamma                                            */
+	double h,a,cova;
+
+	/*Calculate length*/
+	h=sqrt(deltax*deltax + deltay*deltay);
+
+	/*If h is too small, return sill*/
+	if(h<0.0000001) return sill;
+
+	/*compute covariance*/
+	a     = 1./3.;
+	cova = (sill-nugget)*exp(-h/(a*range));
+	return cova;
+}
+/*}}}*/
+double ExponentialVariogram::SemiVariogram(double deltax,double deltay){/*{{{*/
+	/*http://en.wikipedia.org/wiki/Variogram*/
+	double h,a,gamma;
+
+	/*Calculate length*/
+	h=sqrt(deltax*deltax + deltay*deltay);
+
+	/*return semi-variogram*/
+	a     = 1./3.;
+	gamma = (sill-nugget)*(1-exp(-h/(a*range))) + nugget;
+	return gamma;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/ExponentialVariogram.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/ExponentialVariogram.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/ExponentialVariogram.h	(revision 21239)
@@ -0,0 +1,36 @@
+/*! \file ExponentialVariogram.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _EXPONENTIALVARIOGRAM_H_
+#define _EXPONENTIALVARIOGRAM_H_
+
+/*Headers:*/
+#include "./Variogram.h"
+
+class ExponentialVariogram: public Variogram{
+
+	public:
+		double nugget; //The height of the jump of the semivariogram at the discontinuity at the origin
+		double sill;   //Limit of the variogram tending to infinity lag distances
+		double range;  //The distance in which the difference of the variogram from the sill becomes negligible
+
+		/*ExponentialVariogram constructors, destructors*/
+		ExponentialVariogram();
+		ExponentialVariogram(Options* options);
+		~ExponentialVariogram();
+
+		/*Object virtual functions definitions*/
+		Object* copy();
+		void  DeepEcho(){_error_("Not implemented yet");};
+		void  Echo();
+		int   Id(){_error_("Not implemented yet");}; 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
+		int   ObjectEnum(){_error_("Not implemented yet");};
+
+
+		/*Variogram functions*/
+		double Covariance(double deltax,double deltay);
+		double SemiVariogram(double deltax,double deltay);
+};
+#endif  /* _EXPONENTIALVARIOGRAM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/GaussianVariogram.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/GaussianVariogram.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/GaussianVariogram.cpp	(revision 21239)
@@ -0,0 +1,93 @@
+/*!\file GaussianVariogram.c
+ * \brief: implementation of the GaussianVariogram object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+
+/*GaussianVariogram constructors and destructor*/
+GaussianVariogram::GaussianVariogram(){/*{{{*/
+	this->nugget = 0.2;
+	this->sill   = 1;
+	this->range  = SQRT3;
+	return;
+}
+/*}}}*/
+GaussianVariogram::GaussianVariogram(Options* options){/*{{{*/
+
+	/*Defaults*/
+	this->nugget = 0.2;
+	this->sill   = 1;
+	this->range  = SQRT3;
+
+	/*Overwrite from options*/
+	if(options->GetOption("nugget")) options->Get(&this->nugget,"nugget");
+	if(options->GetOption("sill"))   options->Get(&this->sill,"sill");
+	if(options->GetOption("range"))  options->Get(&this->range,"range");
+
+	/*Checks*/
+	if(nugget==sill) _error_("nugget and sill cannot be equal (constant semivariogram not allowed)");
+}
+/*}}}*/
+GaussianVariogram::~GaussianVariogram(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* GaussianVariogram::copy(void){/*{{{*/
+	   return new GaussianVariogram(*this);
+}
+/*}}}*/
+void GaussianVariogram::Echo(void){/*{{{*/
+	_printf_("GaussianVariogram\n");
+	_printf_("   nugget: " << this->nugget << "\n");
+	_printf_("   sill  : " << this->sill << "\n");
+	_printf_("   range : " << this->range << "\n");
+}
+/*}}}*/
+
+/*Variogram function*/
+double GaussianVariogram::Covariance(double deltax,double deltay){/*{{{*/
+	/*The covariance can be deduced from the variogram from the following
+	 * relationship:
+	 *    2 gamma = C(x,x) + C(y,y) -2 C(x,y)
+	 * so
+	 *    C(h) = sill - gamma                                            */
+	double h2,a,cova;
+
+	/*Calculate length square*/
+	h2=deltax*deltax + deltay*deltay;
+
+	/*If h is too small, return sill*/
+	if(h2<0.0000001) return sill;
+
+	/*compute covariance*/
+	a     = 1./3.;
+	cova = (sill-nugget)*exp(-h2/(a*range*range));
+
+	return cova;
+}
+/*}}}*/
+double GaussianVariogram::SemiVariogram(double deltax,double deltay){/*{{{*/
+	/*http://en.wikipedia.org/wiki/Variogram*/
+	double h2,a,gamma;
+
+	/*Calculate length square*/
+	h2=deltax*deltax + deltay*deltay;
+
+	/*return semi-variogram*/
+	a     = 1./3.;
+	gamma = (sill-nugget)*(1.-exp(-h2/(a*range*range))) + nugget;
+
+	//if(h2>1000*1000) _printf_("gamma = " << gamma << " h= " << sqrt(h2) << "\n");
+	_printf_("h = " << sqrt(h2) << " gamma = " << gamma << "\n");
+	return gamma;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/GaussianVariogram.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/GaussianVariogram.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/GaussianVariogram.h	(revision 21239)
@@ -0,0 +1,36 @@
+/*! \file GaussianVariogram.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _GAUSSIANVARIOGRAM_H_
+#define _GAUSSIANVARIOGRAM_H_
+
+/*Headers:*/
+#include "./Variogram.h"
+class Options;
+
+class GaussianVariogram: public Variogram{
+
+	public:
+		double nugget; //The height of the jump of the semivariogram at the discontinuity at the origin
+		double sill;   //Limit of the variogram tending to infinity lag distances
+		double range;  //The distance in which the difference of the variogram from the sill becomes negligible
+
+		/*GaussianVariogram constructors, destructors*/
+		GaussianVariogram();
+		GaussianVariogram(Options* options);
+		~GaussianVariogram();
+
+		/*Object virtual functions definitions*/
+		Object* copy();
+		void  DeepEcho(){_error_("Not implemented yet");};
+		void  Echo();
+		int   Id(){_error_("Not implemented yet");}; 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
+		int   ObjectEnum(){_error_("Not implemented yet");};
+
+		/*Variogram functions*/
+		double Covariance(double deltax,double deltay);
+		double SemiVariogram(double deltax,double deltay);
+};
+#endif  /* _GAUSSIANVARIOGRAM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Observation.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Observation.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Observation.cpp	(revision 21239)
@@ -0,0 +1,94 @@
+/*!\file Observation.c
+ * \brief: implementation of the Observation object
+ */
+
+#include <stdlib.h>
+#include <cmath>
+#include <utility>
+#include "../classes.h"
+
+/*Observation constructors and destructor*/
+Observation::Observation(){/*{{{*/
+	return;
+}
+/*}}}*/
+Observation::Observation(double x_in,double y_in,int xi_in,int yi_in,int index_in,double value_in){/*{{{*/
+
+	this->x      = x_in;
+	this->y      = y_in;
+	this->xi     = xi_in;
+	this->yi     = yi_in;
+	this->index  = index_in;
+	this->value  = value_in;
+	this->weight = 1.;
+
+}
+/*}}}*/
+Observation::Observation(double x_in, double y_in,double value_in){
+	this->x = x_in;
+	this->y = y_in;
+	this->value = value_in;
+
+	this->xi     = 0;
+	this->yi     = 0;
+	this->index  = 0;
+	this->weight = 0.;
+}
+Observation::~Observation(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Observation::copy(void){/*{{{*/
+
+	Observation* observation = new Observation(this->x,this->y,this->xi,this->yi,this->index,this->value);
+
+	observation->weight = this->weight;
+
+	return (Object*) observation;
+
+}
+/*}}}*/
+void Observation::Echo(void){/*{{{*/
+
+	_printf_("Observation\n");
+	_printf_("   index : " << this->index << "\n");
+	_printf_("   x     : " << this->x << "\n");
+	_printf_("   y     : " << this->y << "\n");
+	_printf_("   xi    : \n"); printbinary(this->xi); _printf_("\n");
+	_printf_("   yi    : \n"); printbinary(this->yi); _printf_("\n");
+	_printf_("   weight: " << this->weight << "\n");
+	_printf_("   value : " << this->value << "\n");
+}
+/*}}}*/
+
+/*Observations functions*/
+void Observation::WriteXYObs(double* px,double* py,double* pobs){/*{{{*/
+	*px   = this->x;
+	*py   = this->y;
+	*pobs = this->value;
+}
+/*}}}*/
+
+/*Covertree*/
+bool Observation::operator==(const Observation& ob) const{/*{{{*/
+	return (ob.x == this->x && ob.y == this->y && ob.value == this->value);
+}/*}}}*/
+double Observation::distance(const Observation& ob) const{/*{{{*/
+	return std::sqrt( (std::pow( (ob.x - this->x), 2 ) + std::pow((ob.y - this->y), 2) ));
+}
+/*}}}*/
+void Observation::print(void) const{/*{{{*/
+
+	_printf_("Observation\n");
+	_printf_("   x     : " << this->x << "\n");
+	_printf_("   y     : " << this->y << "\n");
+	_printf_("   value : " << this->value << "\n");
+}
+/*}}}*/
+void Observation::WriteXYObs(const Observation& ob, double* px, double* py, double* pobs){/*{{{*/
+    *px   = ob.x;
+    *py   = ob.y;
+    *pobs = ob.value;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Observation.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Observation.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Observation.h	(revision 21239)
@@ -0,0 +1,40 @@
+/*! \file Observation.h 
+ *  \brief: header file for Observation object
+ */
+
+#ifndef _OBSERVATION_H_
+#define _OBSERVATION_H_
+
+#include "../../datastructures/datastructures.h"
+
+class Observation: public Object{
+
+	public:
+		double x,y;
+		int    xi,yi;
+		int    index;
+		double weight;
+		double value;
+
+		/*Observation constructors, destructors*/
+		Observation();
+		Observation(double x_in,double y_in,int xi_in,int yi_in,int index_in,double value_in);
+		Observation(double x_in,double y_in,double value_in);
+		~Observation();
+
+		/*Object virtual functions definitions*/
+		bool operator==(const Observation& ob) const;
+		Object *copy();
+		void    DeepEcho()  {_error_("Not implemented yet"); };
+		double  distance(const Observation& ob) const;
+		void    Echo();
+		int     Id()        {_error_("Not implemented yet"); };
+		void    print() const;
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		int     ObjectEnum(){_error_("Not implemented yet"); };
+
+		/*Management*/
+		void WriteXYObs(const Observation& ob, double* px, double* py, double* pobs);
+		void WriteXYObs(double* px,double* py,double* pobs);
+};
+#endif  /* _OBSERVATION_*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Observations.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Observations.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Observations.cpp	(revision 21239)
@@ -0,0 +1,740 @@
+/*
+ * \file Observations.cpp
+ * \brief: Implementation of Observations class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <vector>
+#include <functional>
+#include <algorithm>
+#include <iostream>
+
+#include "../Options/Options.h"
+#include "./Observations.h"
+#include "./Observation.h"
+#include "../../datastructures/datastructures.h"
+#include "../../shared/shared.h"
+
+#include "./Quadtree.h"
+#include "./Covertree.h"
+#include "./Variogram.h"
+#include "../../toolkits/toolkits.h"
+
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+Observations::Observations(){/*{{{*/
+	this->treetype  = 0;
+	this->quadtree  = NULL;
+	this->covertree = NULL;
+	return;
+}
+/*}}}*/
+Observations::Observations(IssmPDouble* observations_list,IssmPDouble* x,IssmPDouble* y,int n,Options* options){/*{{{*/
+
+	/*Check that there are observations*/
+	if(n<=0) _error_("No observation found");
+
+	/*Get tree type (FIXME)*/
+	IssmDouble dtree = 0.;
+	options->Get(&dtree,"treetype",1.);
+	this->treetype = reCast<int>(dtree);
+	switch(this->treetype){
+		case 1:
+			this->covertree = NULL;
+			this->InitQuadtree(observations_list,x,y,n,options);
+			break;
+		case 2:
+			this->quadtree = NULL;
+			this->InitCovertree(observations_list,x,y,n,options);
+			break;
+		default:
+			_error_("Tree type "<<this->treetype<<" not supported yet (1: quadtree, 2: covertree)");
+	}
+}
+/*}}}*/
+Observations::~Observations(){/*{{{*/
+	switch(this->treetype){
+		case 1:
+			delete this->quadtree;
+			break;
+		case 2:
+			delete this->covertree;
+			break;
+		default:
+			_error_("Tree type "<<this->treetype<<" not supported yet (1: quadtree, 2: covertree)");
+	}
+	return;
+}
+/*}}}*/
+
+/*Initialize data structures*/
+void Observations::InitCovertree(IssmPDouble* observations_list,IssmPDouble* x,IssmPDouble* y,int n,Options* options){/*{{{*/
+
+	/*Intermediaries*/
+	 IssmPDouble  minspacing,mintrimming,maxtrimming;
+
+	/*Checks*/
+	_assert_(n);
+
+	/*Get trimming limits*/
+	options->Get(&mintrimming,"mintrimming",-1.e+21);
+	options->Get(&maxtrimming,"maxtrimming",+1.e+21);
+	options->Get(&minspacing,"minspacing",0.01);
+	if(minspacing<=0) _error_("minspacing must > 0");
+
+	/*Get maximum distance between 2 points
+	 *  maxDist should be the maximum distance that any two points
+	 *  can have between each other. IE p.distance(q) < maxDist for all
+	 *  p,q that you will ever try to insert. The cover tree may be invalid
+	 *  if an inaccurate maxDist is given.*/
+	IssmPDouble xmin = x[0];
+	IssmPDouble xmax = x[0];
+	IssmPDouble ymin = y[0];
+	IssmPDouble ymax = y[0];
+	for(int i=1;i<n;i++){
+		if(x[i]<xmin) xmin=x[i];
+		if(x[i]>xmax) xmax=x[i];
+		if(y[i]<ymin) ymin=y[i];
+		if(y[i]>ymax) ymax=y[i];
+	}
+	IssmPDouble maxDist = sqrt(pow(xmax-xmin,2)+pow(ymax-ymin,2));
+	IssmPDouble base    = 2.;
+	int         maxdepth = ceilf(log(maxDist)/log(base));
+
+	 _printf0_("Generating covertree with a maximum depth " <<  maxdepth <<"... ");
+    this->covertree=new Covertree(maxdepth);
+
+    for(int i=0;i<n;i++){
+
+		/*First check limits*/
+		if(observations_list[i]>maxtrimming) continue;
+		if(observations_list[i]<mintrimming) continue;
+
+		/*Second, check that this observation is not too close from another one*/
+		Observation newobs = Observation(x[i],y[i],observations_list[i]);
+		if(i>0 && this->covertree->getRoot()){
+			/*Get closest obs and see if it is too close*/
+			std::vector<Observation> kNN=(this->covertree->kNearestNeighbors(newobs,1));
+			Observation oldobs = (*kNN.begin());
+			if(oldobs.distance(newobs)<minspacing) continue;
+		}
+
+		this->covertree->insert(newobs);
+    }
+	 _printf0_("done\n");
+}
+/*}}}*/
+void Observations::InitQuadtree(IssmPDouble* observations_list,IssmPDouble* x,IssmPDouble* y,int n,Options* options){/*{{{*/
+
+	/*Intermediaries*/
+	int          i,maxdepth,level,counter,index;
+	int          xi,yi;
+	IssmPDouble  xmin,xmax,ymin,ymax;
+	IssmPDouble  offset,minlength,minspacing,mintrimming,maxtrimming;
+	Observation *observation = NULL;
+
+	/*Checks*/
+	_assert_(n);
+
+	/*Get extrema*/
+	xmin=x[0]; ymin=y[0];
+	xmax=x[0]; ymax=y[0];
+	for(i=1;i<n;i++){
+		xmin=min(xmin,x[i]); ymin=min(ymin,y[i]);
+		xmax=max(xmax,x[i]); ymax=max(ymax,y[i]);
+	}
+	offset=0.05*(xmax-xmin); xmin-=offset; xmax+=offset;
+	offset=0.05*(ymax-ymin); ymin-=offset; ymax+=offset;
+
+	/*Get trimming limits*/
+	options->Get(&mintrimming,"mintrimming",-1.e+21);
+	options->Get(&maxtrimming,"maxtrimming",+1.e+21);
+	options->Get(&minspacing,"minspacing",0.01);
+	if(minspacing<=0) _error_("minspacing must > 0");
+
+	/*Get Minimum box size*/
+	if(options->GetOption("boxlength")){
+		options->Get(&minlength,"boxlength");
+		if(minlength<=0)_error_("boxlength should be a positive number");
+		maxdepth=reCast<int,IssmPDouble>(log(max(xmax-xmin,ymax-ymin)/minlength +1)/log(2.0));
+	}
+	else{
+		maxdepth = 30;
+		minlength=max(xmax-xmin,ymax-ymin)/IssmPDouble((1L<<maxdepth)-1);
+	}
+
+	/*Initialize Quadtree*/
+	_printf0_("Generating quadtree with a maximum box size " << minlength << " (depth=" << maxdepth << ")... ");
+	this->quadtree = new Quadtree(xmin,xmax,ymin,ymax,maxdepth);
+
+	/*Add observations one by one*/
+	counter = 0;
+	for(i=0;i<n;i++){
+
+		/*First check limits*/
+		if(observations_list[i]>maxtrimming) continue;
+		if(observations_list[i]<mintrimming) continue;
+
+		/*Second, check that this observation is not too close from another one*/
+		this->quadtree->ClosestObs(&index,x[i],y[i]);
+		if(index>=0){
+			observation=xDynamicCast<Observation*>(this->GetObjectByOffset(index));
+			if(pow(observation->x-x[i],2)+pow(observation->y-y[i],2) < minspacing) continue;
+		}
+
+		this->quadtree->IntergerCoordinates(&xi,&yi,x[i],y[i]);
+		this->quadtree->QuadtreeDepth2(&level,xi,yi);
+		if((int)level <= maxdepth){
+			observation = new Observation(x[i],y[i],xi,yi,counter++,observations_list[i]);
+			this->quadtree->Add(observation);
+			this->AddObject(observation);
+		}
+		else{
+			/*We need to average with the current observations*/
+			this->quadtree->AddAndAverage(x[i],y[i],observations_list[i]);
+		}
+	}
+	_printf0_("done\n");
+	_printf0_("Initial number of observations: " << n << "\n");
+	_printf0_("  Final number of observations: " << this->quadtree->NbObs << "\n");
+}
+/*}}}*/
+
+/*Methods*/
+void Observations::ClosestObservation(IssmPDouble *px,IssmPDouble *py,IssmPDouble *pobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius){/*{{{*/
+
+	switch(this->treetype){
+		case 1:
+			this->ClosestObservationQuadtree(px,py,pobs,x_interp,y_interp,radius);
+			break;
+		case 2:
+			this->ClosestObservationCovertree(px,py,pobs,x_interp,y_interp,radius);
+			break;
+		default:
+			_error_("Tree type "<<this->treetype<<" not supported yet (1: quadtree, 2: covertree)");
+	}
+
+}/*}}}*/
+void Observations::ClosestObservationCovertree(IssmPDouble *px,IssmPDouble *py,IssmPDouble *pobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius){/*{{{*/
+
+	IssmPDouble hmin  = UNDEF;
+
+	if(this->covertree->getRoot()){
+		/*Get closest obs and see if it is too close*/
+		Observation newobs = Observation(x_interp,y_interp,0.);
+		std::vector<Observation> kNN=(this->covertree->kNearestNeighbors(newobs,1));
+		Observation observation = (*kNN.begin());
+		hmin = observation.distance(newobs);
+		if(hmin<=radius){
+			*px   = observation.x;
+			*py   = observation.y;
+			*pobs = observation.value;
+			return;
+		}
+	}
+
+	*px   = UNDEF;
+	*py   = UNDEF;
+	*pobs = UNDEF;
+}/*}}}*/
+void Observations::ClosestObservationQuadtree(IssmPDouble *px,IssmPDouble *py,IssmPDouble *pobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius){/*{{{*/
+
+	/*Output and Intermediaries*/
+	int          nobs,i,index;
+	IssmPDouble  hmin,h2,hmin2;
+	int         *indices      = NULL;
+	Observation *observation  = NULL;
+
+	/*If radius is not provided or is 0, return all observations*/
+	if(radius==0) radius=this->quadtree->root->length;
+
+	/*First, find closest point in Quadtree (fast but might not be the true closest obs)*/
+	this->quadtree->ClosestObs(&index,x_interp,y_interp);
+	if(index>=0){
+		observation=xDynamicCast<Observation*>(this->GetObjectByOffset(index));
+		hmin = sqrt((observation->x-x_interp)*(observation->x-x_interp) + (observation->y-y_interp)*(observation->y-y_interp));
+		if(hmin<radius) radius=hmin;
+	}
+
+	/*Find all observations that are in radius*/
+	this->quadtree->RangeSearch(&indices,&nobs,x_interp,y_interp,radius);
+	for (i=0;i<nobs;i++){
+		observation=xDynamicCast<Observation*>(this->GetObjectByOffset(indices[i]));
+		h2 = (observation->x-x_interp)*(observation->x-x_interp) + (observation->y-y_interp)*(observation->y-y_interp);
+		if(i==0){
+			hmin2 = h2;
+			index = indices[i];
+		}
+		else{
+			if(h2<hmin2){
+				hmin2 = h2;
+				index = indices[i];
+			}
+		}
+	}  
+
+	/*Assign output pointer*/
+	if(nobs || hmin==radius){
+		observation=xDynamicCast<Observation*>(this->GetObjectByOffset(index));
+		*px   = observation->x;
+		*py   = observation->y;
+		*pobs = observation->value;
+	}
+	else{
+		*px   = UNDEF;
+		*py   = UNDEF;
+		*pobs = UNDEF;
+	}
+	xDelete<int>(indices);
+
+}/*}}}*/
+void Observations::Distances(IssmPDouble* distances,IssmPDouble *x,IssmPDouble *y,int n,IssmPDouble radius){/*{{{*/
+
+	IssmPDouble xi,yi,obs;
+
+	for(int i=0;i<n;i++){
+		this->ClosestObservation(&xi,&yi,&obs,x[i],y[i],radius);
+		if(xi==UNDEF && yi==UNDEF){
+		 distances[i]=UNDEF;
+		}
+		else{
+		 distances[i]=sqrt( (x[i]-xi)*(x[i]-xi) + (y[i]-yi)*(y[i]-yi) );
+		}
+	}
+}/*}}}*/
+void Observations::ObservationList(IssmPDouble **px,IssmPDouble **py,IssmPDouble **pobs,int* pnobs){/*{{{*/
+
+	/*Output and Intermediaries*/
+	int          nobs;
+	IssmPDouble *x            = NULL;
+	IssmPDouble *y            = NULL;
+	IssmPDouble *obs          = NULL;
+	Observation *observation  = NULL;
+
+	nobs = this->Size();
+
+	if(nobs){
+		x   = xNew<IssmPDouble>(nobs);
+		y   = xNew<IssmPDouble>(nobs);
+		obs = xNew<IssmPDouble>(nobs);
+		for(int i=0;i<this->Size();i++){
+			observation=xDynamicCast<Observation*>(this->GetObjectByOffset(i));
+			observation->WriteXYObs(&x[i],&y[i],&obs[i]);
+		}
+	}
+
+	/*Assign output pointer*/
+	*px=x;
+	*py=y;
+	*pobs=obs;
+	*pnobs=nobs;
+}/*}}}*/
+void Observations::ObservationList(IssmPDouble **px,IssmPDouble **py,IssmPDouble **pobs,int* pnobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int maxdata){/*{{{*/
+
+	switch(this->treetype){
+		case 1:
+			this->ObservationListQuadtree(px,py,pobs,pnobs,x_interp,y_interp,radius,maxdata);
+			break;
+		case 2:
+			this->ObservationListCovertree(px,py,pobs,pnobs,x_interp,y_interp,radius,maxdata);
+			break;
+		default:
+			_error_("Tree type "<<this->treetype<<" not supported yet (1: quadtree, 2: covertree)");
+	}
+}/*}}}*/
+void Observations::ObservationListCovertree(double **px,double **py,double **pobs,int* pnobs,double x_interp,double y_interp,double radius,int maxdata){/*{{{*/
+
+	double *x            = NULL;
+	double *y            = NULL;
+	double *obs          = NULL;
+	Observation observation=Observation(x_interp,y_interp,0.);
+	std::vector<Observation> kNN;
+
+	kNN=(this->covertree->kNearestNeighbors(observation, maxdata));
+	//cout << "kNN's size: " << kNN.size() << " (maxdata = " <<maxdata<<")"<<endl;
+
+	//kNN is sort from closest to farthest neighbor
+	//searches for the first neighbor that is out of radius
+	//deletes and resizes the kNN vector
+	vector<Observation>::iterator it;
+	if(radius>0.){
+		for (it = kNN.begin(); it != kNN.end(); ++it) {
+			//(*it).print();
+			//cout << "\n" << (*it).distance(observation) << endl;
+			if ((*it).distance(observation) > radius) {
+				break;
+			}
+		}
+		kNN.erase(it, kNN.end());
+	}
+
+	/*Allocate vectors*/
+	x   = new double[kNN.size()];
+	y   = new double[kNN.size()];
+	obs = new double[kNN.size()];
+
+	/*Loop over all observations and fill in x, y and obs*/
+	int i = 0;
+	for(it = kNN.begin(); it != kNN.end(); ++it) {
+		(*it).WriteXYObs((*it), &x[i], &y[i], &obs[i]);
+		i++;
+	}
+
+	*px=x;
+	*py=y;
+	*pobs=obs;
+	*pnobs = kNN.size();
+}/*}}}*/
+void Observations::ObservationListQuadtree(IssmPDouble **px,IssmPDouble **py,IssmPDouble **pobs,int* pnobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int maxdata){/*{{{*/
+
+	/*Output and Intermediaries*/
+	bool         stop;
+	int          nobs,tempnobs,i,j,k,n,counter;
+	IssmPDouble  h2,radius2;
+	int         *indices      = NULL;
+	int         *tempindices  = NULL;
+	IssmPDouble *dists        = NULL;
+	IssmPDouble *x            = NULL;
+	IssmPDouble *y            = NULL;
+	IssmPDouble *obs          = NULL;
+	Observation *observation  = NULL;
+
+	/*If radius is not provided or is 0, return all observations*/
+	if(radius==0.) radius=this->quadtree->root->length*2.;
+
+	/*Compute radius square*/
+	radius2 = radius*radius;
+
+	/*Find all observations that are in radius*/
+	this->quadtree->RangeSearch(&tempindices,&tempnobs,x_interp,y_interp,radius);
+	if(tempnobs){
+		indices = xNew<int>(tempnobs);
+		dists   = xNew<IssmPDouble>(tempnobs);
+	}
+	nobs = 0;
+	for(i=0;i<tempnobs;i++){
+		observation=xDynamicCast<Observation*>(this->GetObjectByOffset(tempindices[i]));
+		h2 = (observation->x-x_interp)*(observation->x-x_interp) + (observation->y-y_interp)*(observation->y-y_interp);
+
+		if(nobs==maxdata && h2>radius2) continue;
+		if(nobs<maxdata){
+			indices[nobs]   = tempindices[i];
+			dists[nobs]     = h2;
+			nobs++;
+		}
+		if(nobs==1) continue;
+
+		/*Sort all dists up to now*/
+		n=nobs-1;
+		stop = false;
+		for(k=0;k<n-1;k++){
+			if(h2<dists[k]){
+				counter=1;
+				for(int jj=k;jj<n;jj++){
+					j  = n-counter;
+					dists[j+1]   = dists[j];
+					indices[j+1] = indices[j];
+					counter++;
+				}
+				dists[k]   = h2;
+				indices[k] = tempindices[i];
+				stop = true;
+				break;
+			}
+			if(stop) break;
+		}
+	}  
+	xDelete<IssmPDouble>(dists);
+	xDelete<int>(tempindices);
+
+	if(nobs){
+		/*Allocate vectors*/
+		x   = xNew<IssmPDouble>(nobs);
+		y   = xNew<IssmPDouble>(nobs);
+		obs = xNew<IssmPDouble>(nobs);
+
+		/*Loop over all observations and fill in x, y and obs*/
+		for(i=0;i<nobs;i++){
+			observation=xDynamicCast<Observation*>(this->GetObjectByOffset(indices[i]));
+			observation->WriteXYObs(&x[i],&y[i],&obs[i]);
+		}
+	}
+
+	/*Assign output pointer*/
+	xDelete<int>(indices);
+	*px=x;
+	*py=y;
+	*pobs=obs;
+	*pnobs=nobs;
+}/*}}}*/
+void Observations::InterpolationIDW(IssmPDouble *pprediction,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int mindata,int maxdata,IssmPDouble power){/*{{{*/
+
+	/*Intermediaries*/
+	int         i,n_obs;
+	IssmPDouble prediction;
+	IssmPDouble numerator,denominator,h,weight;
+	IssmPDouble *x   = NULL;
+	IssmPDouble *y   = NULL;
+	IssmPDouble *obs = NULL;
+
+	/*Some checks*/
+	_assert_(maxdata>0);
+	_assert_(pprediction);
+	_assert_(power>0);
+
+	/*Get list of observations for current point*/
+	this->ObservationList(&x,&y,&obs,&n_obs,x_interp,y_interp,radius,maxdata);
+
+	/*If we have less observations than mindata, return UNDEF*/
+	if(n_obs<mindata){
+		prediction = UNDEF; 
+	}
+	else{
+		numerator   = 0.;
+		denominator = 0.;
+		for(i=0;i<n_obs;i++){
+			h = sqrt( (x[i]-x_interp)*(x[i]-x_interp) + (y[i]-y_interp)*(y[i]-y_interp));
+			if (h<0.0000001){
+				numerator   = obs[i];
+				denominator = 1.;
+				break;
+			}
+			weight = 1./pow(h,power);
+			numerator   += weight*obs[i];
+			denominator += weight;
+		}
+		prediction = numerator/denominator; 
+	}
+
+	/*clean-up*/
+	*pprediction = prediction;
+	xDelete<IssmPDouble>(x);
+	xDelete<IssmPDouble>(y);
+	xDelete<IssmPDouble>(obs);
+}/*}}}*/
+void Observations::InterpolationKriging(IssmPDouble *pprediction,IssmPDouble *perror,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int mindata,int maxdata,Variogram* variogram){/*{{{*/
+
+	/*Intermediaries*/
+	int           i,j,n_obs;
+	IssmPDouble   prediction,error;
+	IssmPDouble  *x      = NULL;
+	IssmPDouble  *y      = NULL;
+	IssmPDouble  *obs    = NULL;
+	IssmPDouble  *Lambda = NULL;
+
+	/*Some checks*/
+	_assert_(mindata>0 && maxdata>0);
+	_assert_(pprediction && perror);
+
+	/*Get list of observations for current point*/
+	this->ObservationList(&x,&y,&obs,&n_obs,x_interp,y_interp,radius,maxdata);
+
+	/*If we have less observations than mindata, return UNDEF*/
+	if(n_obs<mindata){
+		*pprediction = -999.0; 
+		*perror      = -999.0; 
+		return;
+	}
+
+	/*Allocate intermediary matrix and vectors*/
+	IssmPDouble* A = xNew<IssmPDouble>((n_obs+1)*(n_obs+1));
+	IssmPDouble* B = xNew<IssmPDouble>(n_obs+1);
+
+	IssmDouble unbias = variogram->Covariance(0.,0.);
+	/*First: Create semivariogram matrix for observations*/
+	for(i=0;i<n_obs;i++){
+		//printf("%g %g ==> %g\n",x[i],y[i],sqrt(pow(x[i]-x_interp,2)+pow(y[i]-y_interp,2)));
+		for(j=0;j<=i;j++){
+			A[i*(n_obs+1)+j] = variogram->Covariance(x[i]-x[j],y[i]-y[j]);
+			A[j*(n_obs+1)+i] = A[i*(n_obs+1)+j];
+		}
+		A[i*(n_obs+1)+n_obs] = unbias;
+		//A[i*(n_obs+1)+n_obs] = 1.;
+	}
+	for(i=0;i<n_obs;i++) A[n_obs*(n_obs+1)+i]=unbias;
+	//for(i=0;i<n_obs;i++) A[n_obs*(n_obs+1)+i]=1.;
+	A[n_obs*(n_obs+1)+n_obs] = 0.;
+
+	/*Get semivariogram vector associated to this location*/
+	for(i=0;i<n_obs;i++) B[i] = variogram->Covariance(x[i]-x_interp,y[i]-y_interp);
+	B[n_obs] = unbias;
+	//B[n_obs] = 1.;
+
+	/*Solve the three linear systems*/
+#if _HAVE_GSL_
+	DenseGslSolve(&Lambda,A,B,n_obs+1);    // Gamma^-1 Z
+#else
+	_error_("GSL is required");
+#endif
+
+	/*Compute predictor*/
+	prediction = 0.;
+	for(i=0;i<n_obs;i++) prediction += Lambda[i]*obs[i];
+
+	/*Compute error (GSLIB p15 eq II.14)*/
+	error = variogram->Covariance(0.,0.)*(1. - Lambda[n_obs]);;
+	for(i=0;i<n_obs;i++) error += -Lambda[i]*B[i];
+
+	/*clean-up*/
+	*pprediction = prediction;
+	*perror = error;
+	xDelete<IssmPDouble>(x);
+	xDelete<IssmPDouble>(y);
+	xDelete<IssmPDouble>(obs);
+	xDelete<IssmPDouble>(A);
+	xDelete<IssmPDouble>(B);
+	xDelete<IssmPDouble>(Lambda);
+}/*}}}*/
+void Observations::InterpolationNearestNeighbor(IssmPDouble *pprediction,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius){/*{{{*/
+
+	/*Intermediaries*/
+	IssmPDouble x,y,obs;
+
+	/*Get clostest observation*/
+	this->ClosestObservation(&x,&y,&obs,x_interp,y_interp,radius);
+
+	/*Assign output pointer*/
+	*pprediction = obs;
+}/*}}}*/
+void Observations::InterpolationV4(IssmPDouble *pprediction,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int mindata,int maxdata){/*{{{*/
+	/* Reference:  David T. Sandwell, Biharmonic spline interpolation of GEOS-3
+	 * and SEASAT altimeter data, Geophysical Research Letters, 2, 139-142,
+	 * 1987.  Describes interpolation using value or gradient of value in any
+	 * dimension.*/
+
+	/*Intermediaries*/
+	int         i,j,n_obs;
+	IssmPDouble prediction,h;
+	IssmPDouble *x       = NULL;
+	IssmPDouble *y       = NULL;
+	IssmPDouble *obs     = NULL;
+	IssmPDouble *Green   = NULL;
+	IssmPDouble *weights = NULL;
+	IssmPDouble *g       = NULL;
+
+	/*Some checks*/
+	_assert_(maxdata>0);
+	_assert_(pprediction);
+
+	/*Get list of observations for current point*/
+	this->ObservationList(&x,&y,&obs,&n_obs,x_interp,y_interp,radius,maxdata);
+
+	/*If we have less observations than mindata, return UNDEF*/
+	if(n_obs<mindata || n_obs<2){
+		prediction = UNDEF; 
+	}
+	else{
+
+		/*Allocate intermediary matrix and vectors*/
+		Green = xNew<IssmPDouble>(n_obs*n_obs);
+		g     = xNew<IssmPDouble>(n_obs);
+
+		/*First: distance vector*/
+		for(i=0;i<n_obs;i++){
+			h = sqrt( (x[i]-x_interp)*(x[i]-x_interp) + (y[i]-y_interp)*(y[i]-y_interp) );
+			if(h>0){
+				g[i] = h*h*(log(h)-1.);
+			}
+			else{
+				g[i] = 0.;
+			}
+		}
+
+		/*Build Green function matrix*/
+		for(i=0;i<n_obs;i++){
+			for(j=0;j<=i;j++){
+				h = sqrt( (x[i]-x[j])*(x[i]-x[j]) + (y[i]-y[j])*(y[i]-y[j]) );
+				if(h>0){
+					Green[j*n_obs+i] = h*h*(log(h)-1.);
+				}
+				else{
+					Green[j*n_obs+i] = 0.;
+				}
+				Green[i*n_obs+j] = Green[j*n_obs+i];
+			}
+			/*Zero diagonal (should be done already, but just in case)*/
+			Green[i*n_obs+i] = 0.;
+		}
+
+		/*Compute weights*/
+#if _HAVE_GSL_
+		DenseGslSolve(&weights,Green,obs,n_obs); // Green^-1 obs
+#else
+		_error_("GSL is required");
+#endif
+
+		/*Interpolate*/
+		prediction = 0;
+		for(i=0;i<n_obs;i++) prediction += weights[i]*g[i];
+
+	}
+
+	/*clean-up*/
+	*pprediction = prediction;
+	xDelete<IssmPDouble>(x);
+	xDelete<IssmPDouble>(y);
+	xDelete<IssmPDouble>(obs);
+	xDelete<IssmPDouble>(Green);
+	xDelete<IssmPDouble>(g);
+	xDelete<IssmPDouble>(weights);
+}/*}}}*/
+void Observations::QuadtreeColoring(IssmPDouble* A,IssmPDouble *x,IssmPDouble *y,int n){/*{{{*/
+
+	if(this->treetype!=1) _error_("Tree type is not quadtree");
+	int xi,yi,level;
+
+	for(int i=0;i<n;i++){
+		this->quadtree->IntergerCoordinates(&xi,&yi,x[i],y[i]);
+		this->quadtree->QuadtreeDepth(&level,xi,yi);
+		A[i]=(IssmPDouble)level;
+	}
+
+}/*}}}*/
+void Observations::Variomap(IssmPDouble* gamma,IssmPDouble *x,int n){/*{{{*/
+
+	/*Output and Intermediaries*/
+	int          i,j,k;
+	IssmPDouble  distance;
+	Observation *observation1 = NULL;
+	Observation *observation2 = NULL;
+
+	IssmPDouble *counter = xNew<IssmPDouble>(n);
+	for(j=0;j<n;j++) counter[j] = 0.0;
+	for(j=0;j<n;j++) gamma[j]   = 0.0;
+
+	for(i=0;i<this->Size();i++){
+		observation1=xDynamicCast<Observation*>(this->GetObjectByOffset(i));
+
+		for(j=i+1;j<this->Size();j++){
+			observation2=xDynamicCast<Observation*>(this->GetObjectByOffset(j));
+
+			distance=sqrt(pow(observation1->x - observation2->x,2) + pow(observation1->y - observation2->y,2));
+			if(distance>x[n-1]) continue;
+
+			int index = int(distance/(x[1]-x[0]));
+			if(index>n-1) index = n-1;
+			if(index<0)   index = 0;
+
+			gamma[index]   += 1./2.*pow(observation1->value - observation2->value,2);
+			counter[index] += 1.;
+		}
+	}
+
+	/*Normalize semivariogram*/
+	gamma[0]=0.;
+	for(k=0;k<n;k++){
+		if(counter[k]) gamma[k] = gamma[k]/counter[k];
+	}
+
+	/*Assign output pointer*/
+	xDelete<IssmPDouble>(counter);
+}/*}}}*/
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Observations.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Observations.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Observations.h	(revision 21239)
@@ -0,0 +1,51 @@
+#ifndef _CONTAINER_OBSERVATIONS_H_
+#define  _CONTAINER_OBSERVATIONS_H_
+
+class Quadtree;
+class Covertree;
+class Variogram;
+class Options;
+#include "../../datastructures/datastructures.h"
+#include "../../shared/shared.h"
+
+/*!\brief Declaration of Observations class.
+ *
+ * Declaration of Observations class.  Observations are vector lists (Containers) of Observation objects.
+ */ 
+
+class Observations: public DataSet{
+
+	private:
+		int        treetype;
+		Quadtree*  quadtree;
+		Covertree* covertree;
+
+	public:
+
+		/*constructors, destructors*/
+		Observations();
+		Observations(IssmDouble* observations_list,IssmDouble* x,IssmDouble* y,int n,Options* options);
+		~Observations();
+
+		/*Initialize data structures*/
+		void InitCovertree(IssmDouble* observations_list,IssmDouble* x,IssmDouble* y,int n,Options* options);
+		void InitQuadtree(IssmDouble* observations_list,IssmDouble* x,IssmDouble* y,int n,Options* options);
+
+		/*Methods*/
+		void ClosestObservation(IssmDouble *px,IssmDouble *py,IssmDouble *pobs,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius);
+		void ClosestObservationCovertree(IssmDouble *px,IssmDouble *py,IssmDouble *pobs,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius);
+		void ClosestObservationQuadtree(IssmDouble *px,IssmDouble *py,IssmDouble *pobs,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius);
+		void Distances(IssmPDouble* distances,IssmPDouble *x,IssmPDouble *y,int n,IssmPDouble radius);
+		void InterpolationIDW(IssmDouble *pprediction,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int mindata,int maxdata,IssmDouble power);
+		void InterpolationV4(IssmDouble *pprediction,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int mindata,int maxdata);
+		void InterpolationKriging(IssmDouble *pprediction,IssmDouble *perror,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int mindata,int maxdata,Variogram* variogram);
+		void InterpolationNearestNeighbor(IssmDouble *pprediction,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius);
+		void ObservationList(IssmDouble **px,IssmDouble **py,IssmDouble **pobs,int* pnobs);
+		void ObservationList(IssmDouble **px,IssmDouble **py,IssmDouble **pobs,int* pnobs,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int maxdata);
+		void ObservationListCovertree(IssmDouble **px,IssmDouble **py,IssmDouble **pobs,int* pnobs,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int maxdata);
+		void ObservationListQuadtree(IssmDouble **px,IssmDouble **py,IssmDouble **pobs,int* pnobs,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int maxdata);
+		void QuadtreeColoring(IssmDouble* A,IssmDouble *x,IssmDouble *y,int n);
+		void Variomap(IssmDouble* gamma,IssmDouble *x,int n);
+
+};
+#endif //ifndef _OBSERVATIONS_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/PowerVariogram.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/PowerVariogram.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/PowerVariogram.cpp	(revision 21239)
@@ -0,0 +1,88 @@
+/*!\file PowerVariogram.c
+ * \brief: implementation of the PowerVariogram object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+
+/*PowerVariogram constructors and destructor*/
+PowerVariogram::PowerVariogram(){/*{{{*/
+	this->nugget = 0.2;
+	this->slope  = 1.;
+	this->power  = 1.;
+	return;
+}
+/*}}}*/
+PowerVariogram::PowerVariogram(Options* options){/*{{{*/
+
+	/*Defaults*/
+	this->nugget = 0.2;
+	this->slope  = 1.;
+	this->power  = 1.;
+
+	/*Overwrite from options*/
+	if(options->GetOption("nugget")) options->Get(&this->nugget,"nugget");
+	if(options->GetOption("slope"))  options->Get(&this->slope,"slope");
+	if(options->GetOption("power"))  options->Get(&this->power,"power");
+
+	/*Checks*/
+	if(power<=0 || power>=2) _error_("power must be betwwen 0 and 2 (0 < power < 2)");
+	if(slope<=0) _error_("slope must be positive");
+}
+/*}}}*/
+PowerVariogram::~PowerVariogram(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* PowerVariogram::copy(void){/*{{{*/
+	   return new PowerVariogram(*this);
+}
+/*}}}*/
+void PowerVariogram::Echo(void){/*{{{*/
+	_printf_("PowerVariogram\n");
+	_printf_("   nugget: " << this->nugget << "\n");
+	_printf_("   slope : " << this->slope << "\n");
+	_printf_("   power : " << this->power << "\n");
+}
+/*}}}*/
+
+/*Variogram function*/
+double PowerVariogram::Covariance(double deltax,double deltay){/*{{{*/
+	/*The covariance can be deduced from the variogram from the following
+	 * relationship:
+	 *    2 gamma = C(x,x) + C(y,y) -2 C(x,y)
+	 * so
+	 *    C(h) = sill - gamma                                            */
+	double h,cova;
+
+	/*Calculate length square*/
+	h=sqrt(deltax*deltax + deltay*deltay);
+
+	/*return covariance*/
+	cova = 9999. - this->slope*pow(h,this->power);
+
+	return cova;
+}
+/*}}}*/
+double PowerVariogram::SemiVariogram(double deltax,double deltay){/*{{{*/
+	/*http://en.wikipedia.org/wiki/Variogram*/
+	double h,gamma;
+
+	/*Calculate length square*/
+	h=sqrt(deltax*deltax + deltay*deltay);
+
+	/*return semi-variogram*/
+	gamma = this->nugget + this->slope*pow(h,this->power);
+
+	//if(h>1000) _printf_("gamma = " << gamma << " h=" << h << "\n");
+	return gamma;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/PowerVariogram.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/PowerVariogram.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/PowerVariogram.h	(revision 21239)
@@ -0,0 +1,36 @@
+/*! \file PowerVariogram.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _POWERVARIOGRAM_H_
+#define _POWERVARIOGRAM_H_
+
+/*Headers:*/
+#include "./Variogram.h"
+
+class PowerVariogram: public Variogram{
+
+	public:
+		double nugget; //The height of the jump of the semivariogram at the discontinuity at the origin
+		double slope;  
+		double power; 
+
+		/*PowerVariogram constructors, destructors*/
+		PowerVariogram();
+		PowerVariogram(Options* options);
+		~PowerVariogram();
+
+		/*Object virtual functions definitions*/
+		Object* copy();
+		void  DeepEcho(){_error_("Not implemented yet");};
+		void  Echo();
+		int   Id(){_error_("Not implemented yet");}; 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
+		int   ObjectEnum(){_error_("Not implemented yet");};
+
+
+		/*Variogram functions*/
+		double Covariance(double deltax,double deltay);
+		double SemiVariogram(double deltax,double deltay);
+};
+#endif  /* _POWERVARIOGRAM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Quadtree.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Quadtree.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Quadtree.cpp	(revision 21239)
@@ -0,0 +1,599 @@
+#include "../classes.h"
+
+/*DOCUMENTATION What is a Quadtree? {{{
+ * A Quadtree is a very simple way to group vertices according
+ * to their locations. A square that holds all the points of the mesh
+ * (or the geometry) is divided into 4 boxes. As soon as one box
+ * hold more than 4 vertices, it is divided into 4 new boxes, etc...
+ * There cannot be more than MAXDEEP (=30) subdivision.
+ * This process is like a Dichotomy in dimension 2
+ *
+ *  + - -  -    - -    -    - - + -   - + - + - + - -     - - +
+ *  |                           |       |   | X |             |
+ *                                      + - + - +
+ *  |                           |       |   |   |             |
+ *                              + -   - + - + - +             +
+ *  |                           |       |       |             |
+ *                         
+ *  |                           |       |       |             |
+ *  + - -  -    - -    -    - - + -   - + -   - + - -     - - +
+ *  |                           |               |             |
+ *                         
+ *  |                           |               |             |
+ *                         
+ *  |                           |               |             |
+ *  |                           |               |             |
+ *  + - -  -    - -    -    - - + -   -   -   - + - -     - - +
+ *  |                           |                             |
+ *                         
+ *  |                           |                             |
+ *                         
+ *  |                           |                             |
+ *                         
+ *  |                           |                             |
+ *  |                           |                             |
+ *  |                           |                             |
+ *  |                           |                             |
+ *  |                           |                             |
+ *  + - -  -    - -    -    - - + -   -   -   -   - -     - - +
+ *
+ * The coordinate system used in a quadtree are integers to avoid
+ * round-off errors. The vertex in the lower left box has the coordinates
+ * (0 0) 
+ * The upper right vertex has the follwing coordinates:
+ * 2^30 -1           2^30 -1        in decimal
+ * 0 1 1 1 .... 1    0 1 1 1 .... 1 in binary
+ *  \--   29  --/     \--   29  --/
+ * Using binaries is therefore very easy to locate a vertex in a box:
+ * we just need to look at the bits from the left to the right (See ::Add)
+ }}}*/
+/*MACROS {{{*/
+/* 
+ * 
+ *    J    j
+ *    ^    ^
+ *    |    | +--------+--------+
+ *    |    | |        |        |
+ * 1X |    | |   2    |   3    |
+ *    |    | |        |        |
+ *    |    | +--------+--------+
+ *    |    | |        |        |
+ * 0X |    | |   0    |   1    |
+ *    |    | |        |        |
+ *    |    | +--------+--------+
+ *    |    +-----------------------> i
+ *    |         
+ *    |----------------------------> I
+ *              X0        X1  
+ *
+ * box 0 -> I=0 J=0 IJ=00  = 0
+ * box 1 -> I=1 J=0 IJ=01  = 1
+ * box 2 -> I=0 J=1 IJ=10  = 2
+ * box 3 -> I=1 J=1 IJ=11  = 3
+ */
+//IJ(i,j,l) returns the box number of i and j with respect to l
+//if !j&l and !i&l -> 0 (box zero: lower left )
+//if !j&l and  i&l -> 1 (box one:  lower right)
+//if  j&l and !i&l -> 2 (box two:  upper left )
+//if  j&l and  i&l -> 3 (box three:upper right)
+#define IJ(i,j,l)  ((j&l) ? ((i&l) ? 3:2 ) :((i&l) ? 1:0 ))
+/*}}}*/
+
+	/*Constructors/Destructors*/
+Quadtree::Quadtree(){/*{{{*/
+	_error_("Constructor not supported");
+
+}
+/*}}}*/
+Quadtree::Quadtree(double xmin,double xmax,double ymin,double ymax,int maxdepth){/*{{{*/
+
+	/*Intermediaries*/
+	double length;
+
+	/*Initialize fields*/
+	this->MaxDepth=maxdepth;
+	this->NbQuadtreeBox=0;
+	this->NbObs=0;
+
+	/*Create container*/
+	this->boxcontainer=new DataSet();
+
+	/*Create Root, pointer toward the main box*/
+	length=max(xmax-xmin,ymax-ymin);
+	this->root=NewQuadtreeBox(xmin+length/2,ymin+length/2,length);
+}
+/*}}}*/
+	Quadtree::~Quadtree(){/*{{{*/
+
+		delete boxcontainer;
+		root=NULL;
+
+	}
+	/*}}}*/
+
+	/*Methods*/
+void  Quadtree::Add(Observation* observation){/*{{{*/
+
+	/*Intermediaries*/
+	int          xi,yi,ij,level,levelbin;
+	QuadtreeBox **pbox    = NULL; // pointer toward current box b
+	QuadtreeBox **pmaster = NULL; // pointer toward master of b
+	QuadtreeBox  *box     = NULL; // current box b
+	QuadtreeBox  *slave   = NULL; // suslaveox of b (if necessary)
+	Observation  *obs[4];
+
+	/*Get integer coodinates*/
+	xi = observation->xi;
+	yi = observation->yi;
+
+	/*Initialize levels*/
+	level    = 0;
+	levelbin = (1L<<this->MaxDepth);// = 2^30
+
+	/*Get inital box (the largest)*/
+	pmaster = &root;
+	pbox    = &root;
+
+	/*Find the smallest box where the observation is located*/
+	while((box=*pbox) && (box->nbitems<0)){ 
+
+		/*Go down one level (levelbin = 00100 -> 00010)*/
+		levelbin>>=1; level+=1; _assert_(level<this->MaxDepth);
+
+		/*Get next box according to the bit value (levelbin)*/
+		pmaster = pbox;
+		pbox    = &box->box[IJ(xi,yi,levelbin)];
+	}
+	_assert_(levelbin>0);
+
+	/*Now, try to add the vertex, if the box is full (nbitems=4), we have to divide it in 4 new boxes*/
+	while((box=*pbox) && (box->nbitems==4)){
+
+		/*Copy the 4 observation in the current Quadtreebox*/
+		obs[0] = box->obs[0];
+		obs[1] = box->obs[1];
+		obs[2] = box->obs[2];
+		obs[3] = box->obs[3];
+
+		/*set nbitems as -1 (now holding boxes instead of observations)*/
+		box->nbitems = -1;
+		box->box[0]  = NULL;
+		box->box[1]  = NULL;
+		box->box[2]  = NULL;
+		box->box[3]  = NULL;
+
+		/*Go down one level (levelbin = 00010 -> 00001)*/
+		levelbin>>=1; level+=1; _assert_(level<this->MaxDepth);
+
+		/*Put the four observations in the new boxes*/
+		for (int k=0;k<4;k++){
+
+			/*Get box for observation number k*/
+			ij    = IJ(obs[k]->xi,obs[k]->yi,levelbin);
+			slave = box->box[ij];
+			if(!slave){
+				box->box[ij] = NewQuadtreeBox(box,ij);
+				slave        = box->box[ij];
+			}
+			slave->obs[slave->nbitems++] = obs[k];
+		}
+
+		/*Get the suslaveox where the current observation is located*/
+		ij      = IJ(xi,yi,levelbin);
+		pmaster = pbox;
+		pbox    = &box->box[ij];
+	}
+
+	/*alloc the QuadtreeBox if necessary and add current observation*/
+	box = *pbox;
+	if(!box){
+		ij  = IJ(xi,yi,levelbin);
+		box = *pbox = NewQuadtreeBox(*pmaster,ij);
+	}
+	box->obs[box->nbitems++]=observation;
+	NbObs++;
+
+}/*}}}*/
+void Quadtree::AddAndAverage(double x,double y,double value){/*{{{*/
+
+	QuadtreeBox **pbox = NULL;
+	QuadtreeBox  *box  = NULL;
+	int           xi,yi;
+	int           levelbin;
+	int           index;
+	double        length,length2;
+
+	/*Get integer coodinates*/
+	this->IntergerCoordinates(&xi,&yi,x,y);
+
+	/*Initialize level*/
+	levelbin = (1L<<this->MaxDepth);// = 2^30
+
+	/*Get inital box (the largest)*/
+	pbox=&root;
+
+	/*Find the smallest box where this point is located*/
+	while((box=*pbox) && (box->nbitems<0)){ 
+		levelbin>>=1;
+		pbox = &box->box[IJ(xi,yi,levelbin)];
+	}
+
+	/*Add obervation in this box (should be full)*/
+	if(box && box->nbitems==4){
+		index  = 0;
+		length = pow(box->obs[0]->x - x,2) + pow(box->obs[0]->y - y,2);
+		for(int i=1;i<4;i++){
+			length2 = pow(box->obs[i]->x - x,2) + pow(box->obs[i]->y - y,2);
+			if(length2<length){
+				index  = i;
+				length = length2;
+			}
+		}
+
+		/*We found the closest observation, now average observation (do not change xi and yi to avoid round off errors*/
+		box->obs[index]->x = (box->obs[index]->weight*box->obs[index]->x + x)/(box->obs[index]->weight+1.);
+		box->obs[index]->y = (box->obs[index]->weight*box->obs[index]->y + y)/(box->obs[index]->weight+1.);
+		box->obs[index]->xi= int((box->obs[index]->weight*double(box->obs[index]->xi) + double(xi))/(box->obs[index]->weight+1.));
+		box->obs[index]->yi= int((box->obs[index]->weight*double(box->obs[index]->yi) + double(yi))/(box->obs[index]->weight+1.));
+		box->obs[index]->value   = (box->obs[index]->weight*box->obs[index]->value + value)/(box->obs[index]->weight+1.);
+		box->obs[index]->weight += 1.;
+	}
+	else{
+		_error_("Box is not full");
+	}
+}/*}}}*/
+void Quadtree::ClosestObs(int *pindex,double x,double y){/*{{{*/
+
+	QuadtreeBox **pbox = NULL;
+	QuadtreeBox  *box  = NULL;
+	int           xi,yi;
+	int           levelbin;
+	int           index = -1;
+	double        length,length2;
+
+	/*Get integer coodinates*/
+	this->IntergerCoordinates(&xi,&yi,x,y);
+
+	/*Initialize level*/
+	levelbin = (1L<<this->MaxDepth);// = 2^30
+
+	/*Get inital box (the largest)*/
+	pbox=&root;
+
+	/*Find the smallest box where this point is located*/
+	while((box=*pbox) && (box->nbitems<0)){ 
+		levelbin>>=1;
+		pbox = &box->box[IJ(xi,yi,levelbin)];
+	}
+
+	/*Add obervation in this box (should be full)*/
+	if(box && box->nbitems>0){
+		index  = box->obs[0]->index;
+		length = pow(box->obs[0]->x - x,2) + pow(box->obs[0]->y - y,2);
+		for(int i=1;i<box->nbitems;i++){
+			length2 = pow(box->obs[i]->x - x,2) + pow(box->obs[i]->y - y,2);
+			if(length2<length){
+				index  = box->obs[i]->index;
+				length = length2;
+			}
+		}
+	}
+
+	*pindex=index;
+}/*}}}*/
+void  Quadtree::DeepEcho(void){/*{{{*/
+
+	_printf_("Quadtree:\n");
+	_printf_("   MaxDepth      = " << this->MaxDepth << "\n");
+	_printf_("   NbQuadtreeBox = " << this->NbQuadtreeBox << "\n");
+	_printf_("   NbObs         = " << this->NbObs << "\n");
+	_printf_("   root          = " << this->root << "\n");
+	boxcontainer->Echo();
+
+}/*}}}*/
+void  Quadtree::Echo(void){/*{{{*/
+
+	_printf_("Quadtree:\n");
+	_printf_("   MaxDepth      = " << this->MaxDepth << "\n");
+	_printf_("   NbQuadtreeBox = " << this->NbQuadtreeBox << "\n");
+	_printf_("   NbObs         = " << this->NbObs << "\n");
+	_printf_("   root          = " << this->root << "\n");
+
+}/*}}}*/
+void  Quadtree::IntergerCoordinates(int *xi,int *yi,double x,double y){/*{{{*/
+
+	/*Intermediaries*/
+	double coefficient;
+	double xmin,ymin;
+
+	/*Checks in debugging mode*/
+	_assert_(xi && yi);
+	_assert_(this->root);
+
+	/*coeffIcoor is the coefficient used for integer coordinates:
+	 *                (x-xmin)
+	 * xi = (2^30 -1) --------- 
+	 *                 length
+	 * coefficient = (2^30 -1)/length
+	 */
+	coefficient = double((1L<<this->MaxDepth)-1)/(this->root->length);
+	xmin        = this->root->xcenter - this->root->length/2;
+	ymin        = this->root->ycenter - this->root->length/2;
+
+	*xi=int(coefficient*(x - xmin));
+	*yi=int(coefficient*(y - ymin));
+}/*}}}*/
+Quadtree::QuadtreeBox* Quadtree::NewQuadtreeBox(double xcenter,double ycenter,double length){/*{{{*/
+
+	/*Output*/
+	QuadtreeBox* newbox=NULL;
+
+	/*Create and initialize a new box*/
+	newbox=new QuadtreeBox();
+	newbox->nbitems=0;
+	newbox->xcenter=xcenter;
+	newbox->ycenter=ycenter;
+	newbox->length=length;
+	newbox->box[0]=NULL;
+	newbox->box[1]=NULL;
+	newbox->box[2]=NULL;
+	newbox->box[3]=NULL;
+
+	/*Add to container*/
+	this->boxcontainer->AddObject(newbox);
+	NbQuadtreeBox++;
+
+	/*currentbox now points toward next quadtree box*/
+	return newbox;
+}/*}}}*/
+Quadtree::QuadtreeBox* Quadtree::NewQuadtreeBox(QuadtreeBox* master,int index){/*{{{*/
+
+	/*Output*/
+	QuadtreeBox* newbox=NULL;
+
+	/*Checks in debugging mode*/
+	_assert_(master);
+
+	/*Create and initialize a new box*/
+	newbox=new QuadtreeBox();
+	newbox->nbitems=0;
+	newbox->box[0]=NULL;
+	newbox->box[1]=NULL;
+	newbox->box[2]=NULL;
+	newbox->box[3]=NULL;
+	switch(index){
+		case 0:
+			newbox->xcenter=master->xcenter - master->length/4;
+			newbox->ycenter=master->ycenter - master->length/4;
+			break;
+		case 1:
+			newbox->xcenter=master->xcenter + master->length/4;
+			newbox->ycenter=master->ycenter - master->length/4;
+			break;
+		case 2:
+			newbox->xcenter=master->xcenter - master->length/4;
+			newbox->ycenter=master->ycenter + master->length/4;
+			break;
+		case 3:
+			newbox->xcenter=master->xcenter + master->length/4;
+			newbox->ycenter=master->ycenter + master->length/4;
+			break;
+		default:
+			_error_("Case " << index << " not supported");
+	}
+	newbox->length=master->length/2;
+
+	/*Add to container*/
+	this->boxcontainer->AddObject(newbox);
+	NbQuadtreeBox++;
+
+	/*currentbox now points toward next quadtree box*/
+	return newbox;
+}/*}}}*/
+void Quadtree::RangeSearch(int **pindices,int *pnobs,double x,double y,double range){/*{{{*/
+
+	/*Intermediaries*/
+	int  nobs;
+	int *indices = NULL;
+
+	/*Allocate indices (maximum by default*/
+	if(this->NbObs) indices = xNew<int>(this->NbObs);
+	nobs = 0;
+
+	if(this->root) this->root->RangeSearch(indices,&nobs,x,y,range);
+
+	/*Clean-up and return*/
+	*pnobs=nobs;
+	*pindices=indices;
+
+}/*}}}*/
+void Quadtree::QuadtreeDepth(int* A,int xi,int yi){/*{{{*/
+
+	QuadtreeBox **pbox = NULL;
+	QuadtreeBox  *box  = NULL;
+	int           level,levelbin;
+
+	/*Initialize levels*/
+	level    = 0;
+	levelbin = (1L<<this->MaxDepth);// = 2^30
+
+	/*Get inital box (the largest)*/
+	pbox=&root;
+
+	/*Find the smallest box where this point is located*/
+	while((box=*pbox) && (box->nbitems<0)){ 
+
+		levelbin>>=1; level+=1; _assert_(level<this->MaxDepth);
+
+		pbox = &box->box[IJ(xi,yi,levelbin)];
+	}
+	if(box && box->nbitems>0){
+		/*This box is not empty, add one level*/
+		level+=1;
+	}
+
+	*A=level;
+}/*}}}*/
+void Quadtree::QuadtreeDepth2(int* A,int xi,int yi){/*{{{*/
+
+	QuadtreeBox **pbox = NULL;
+	QuadtreeBox  *box  = NULL;
+	int           level,levelbin;
+
+	/*Initialize levels*/
+	level    = 0;
+	levelbin = (1L<<this->MaxDepth);// = 2^30
+
+	/*Get inital box (the largest)*/
+	pbox=&root;
+
+	/*Find the smallest box where this point is located*/
+	while((box=*pbox) && (box->nbitems<0)){ 
+
+		levelbin>>=1; level+=1; 
+
+		pbox = &box->box[IJ(xi,yi,levelbin)];
+	}
+	if(box && box->nbitems>0){
+		/*This box is not empty, add one level*/
+		level+=1;
+	}
+
+	/*If we were to add the vertex, get level*/
+	if(box && box->nbitems==4){
+		int ij;
+		bool flag=true;
+		while(flag){
+
+			levelbin>>=1; level+=1;
+			if(level>this->MaxDepth){
+				level+=1;
+				break;
+			}
+
+			/*loop over the four observations*/
+			ij=IJ(box->obs[0]->xi,box->obs[0]->yi,levelbin);
+			for (int k=1;k<4;k++){
+				if(IJ(box->obs[k]->xi,box->obs[k]->yi,levelbin) != ij){
+					flag = false;
+				}
+			}
+			if(IJ(xi,yi,levelbin)!=ij){
+				flag = false;
+			}
+		}
+	}
+
+	*A=level;
+}/*}}}*/
+
+/*QuadtreeBox methos*/
+Object* Quadtree::QuadtreeBox::copy(void){/*{{{*/
+
+	   QuadtreeBox* qtreebox = new QuadtreeBox(*this);
+
+		for (int i=0; i<4; ++i){
+			if(this->box[i]) qtreebox->box[i] = reinterpret_cast<QuadtreeBox*>(this->box[i]->copy());
+			else qtreebox->box[i] = NULL;
+		}
+		for (int i=0; i<4; ++i){
+			if(this->obs[i]) qtreebox->obs[i] = reinterpret_cast<Observation*>(this->obs[i]->copy());
+			else qtreebox->obs[i] = NULL;
+		}
+
+		return (Object*) qtreebox;
+}
+/*}}}*/
+void  Quadtree::QuadtreeBox::Echo(void){/*{{{*/
+
+	_printf_("QuadtreeBox:\n");
+	_printf_("   nbitems = " << this->nbitems << "\n");
+	_printf_("   xcenter = " << this->xcenter << "\n");
+	_printf_("   ycenter = " << this->ycenter << "\n");
+	_printf_("   length  = " << this->length << "\n");
+
+}/*}}}*/
+int Quadtree::QuadtreeBox::IsWithinRange(double x,double y,double range){/*{{{*/
+
+	/*Return 0 if the 2 boxes do not overlap*/
+	if(this->xcenter+this->length/2 < x-range) return 0;
+	if(this->xcenter-this->length/2 > x+range) return 0;
+	if(this->ycenter+this->length/2 < y-range) return 0;
+	if(this->ycenter-this->length/2 > y+range) return 0;
+
+	/*Return 2 if the this box is included in the range*/
+	if(this->xcenter+this->length/2 <= x+range &&
+		this->ycenter+this->length/2 <= y+range &&
+		this->xcenter-this->length/2 >= x-range &&
+		this->ycenter-this->length/2 >= y-range) return 2;
+
+	/*This is a simple overlap*/
+	return 1;
+
+}/*}}}*/
+void Quadtree::QuadtreeBox::RangeSearch(int* indices,int *pnobs,double x,double y,double range){/*{{{*/
+
+	/*Intermediaries*/
+	int i,nobs;
+
+	/*Recover current number of observations*/
+	nobs = *pnobs;
+
+	switch(this->IsWithinRange(x,y,range)){
+		case 0:
+			/*If this box is not within range, return*/
+			break;
+		case 2:
+			/*This box is included in range*/
+			this->WriteObservations(indices,&nobs);
+			break;
+		case 1:
+			/*This box is partly included*/
+			if(this->nbitems>0){
+				/*If this box has only observations, add indices that are within range*/
+				for(i=0;i<this->nbitems;i++){
+					if(fabs(this->obs[i]->x-x) <= range && fabs(this->obs[i]->y-y) <= range){
+						indices[nobs++]=this->obs[i]->index;
+					}
+				}
+			}
+			else{
+				/*This box points toward boxes*/
+				if(this->box[0]) this->box[0]->RangeSearch(indices,&nobs,x,y,range);
+				if(this->box[1]) this->box[1]->RangeSearch(indices,&nobs,x,y,range);
+				if(this->box[2]) this->box[2]->RangeSearch(indices,&nobs,x,y,range);
+				if(this->box[3]) this->box[3]->RangeSearch(indices,&nobs,x,y,range);
+			}
+			break;
+		default:
+			_error_("Case " << this->IsWithinRange(x,y,range) << " not supported");
+	}
+
+	/*Assign output pointers: */
+	*pnobs=nobs;
+}/*}}}*/
+void Quadtree::QuadtreeBox::WriteObservations(int* indices,int *pnobs){/*{{{*/
+
+	/*Intermediaries*/
+	int i,nobs;
+
+	/*Recover current number of observations*/
+	nobs = *pnobs;
+
+	if(this->nbitems>0){
+		/*If this box has only observations, add all indices*/
+		for(i=0;i<this->nbitems;i++){
+			indices[nobs++]=this->obs[i]->index;
+		}
+	}
+	else{
+		/*This box points toward boxes, */
+		if(this->box[0]) this->box[0]->WriteObservations(indices,&nobs);
+		if(this->box[1]) this->box[1]->WriteObservations(indices,&nobs);
+		if(this->box[2]) this->box[2]->WriteObservations(indices,&nobs);
+		if(this->box[3]) this->box[3]->WriteObservations(indices,&nobs);
+	}
+
+	/*Assign output pointers: */
+	*pnobs=nobs;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Quadtree.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Quadtree.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Quadtree.h	(revision 21239)
@@ -0,0 +1,67 @@
+
+#ifndef _QUADTREE_H
+#define _QUADTREE_H
+
+class Observation;
+
+class Quadtree{
+
+	private:
+		/* A quadtree box contains up to 4 points (locations). 4 new quadtree boxes are
+		 * created if a fifth point is added to the same box. A Quadtree box is therefore
+		 * composed of EITHER:
+		 * - up to 4 vertices
+		 * - 4 "sub" quadtree boxes*/
+
+		class QuadtreeBox: public Object{ 
+			public:
+				int    nbitems; // number of current vertices in the box
+				double xcenter; // x position of the center (double)
+				double ycenter; // x position of the center (double)
+				double length;  // width of the box
+				union{
+					QuadtreeBox *box[4];
+					Observation *obs[4];
+				};
+
+				/*Object functions (Needed because the Quadtree uses a Container*/
+				Object *copy();
+				void    DeepEcho()  {_error_("not implemented yet"); };
+				void    Echo();
+				int     Id()        {_error_("not implemented yet"); };
+				void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+				int     ObjectEnum(){_error_("not implemented yet"); };
+
+
+				/*Methods*/
+				int          IsWithinRange(double  x,double y,double range);
+				void         RangeSearch(int *indices,int *pnobs,double x,double y,double range);
+				void         WriteObservations(int *indices,int *pnobs);
+
+		};
+
+		/*Quadtree private Fields*/
+		DataSet* boxcontainer;
+
+	public:
+		int          MaxDepth;          // maximum number of subdivision
+		QuadtreeBox *root;              // main box
+		int          NbQuadtreeBox;     // total number of boxes
+		int          NbObs;             // number of points
+
+		Quadtree();
+		Quadtree(double xmin,double xmax,double ymin,double ymax,int maxdepth_in);
+		~Quadtree();
+		void         Add(Observation *observation);
+		void         AddAndAverage(double x,double y,double value);
+		void         ClosestObs(int *pindex,double x,double y);
+		void         DeepEcho(void);
+		void         Echo(void);
+		void         IntergerCoordinates(int *xi,int *yi,double x,double y);
+		QuadtreeBox *NewQuadtreeBox(double xcenter,double ycenter,double length);
+		QuadtreeBox *NewQuadtreeBox(QuadtreeBox* master,int index);
+		void         QuadtreeDepth(int *A,int xi,int yi);
+		void         QuadtreeDepth2(int *A,int xi,int yi);
+		void         RangeSearch(int **pindices,int *pnobs,double x,double y,double range);
+};
+#endif //_QUADTREE_H
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/SphericalVariogram.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/SphericalVariogram.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/SphericalVariogram.cpp	(revision 21239)
@@ -0,0 +1,92 @@
+/*!\file SphericalVariogram.c
+ * \brief: implementation of the SphericalVariogram object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+
+/*SphericalVariogram constructors and destructor*/
+SphericalVariogram::SphericalVariogram(){/*{{{*/
+	this->nugget = 0.2;
+	this->sill   = 1;
+	this->range  = SQRT3;
+	return;
+}
+/*}}}*/
+SphericalVariogram::SphericalVariogram(Options* options){/*{{{*/
+
+	/*Defaults*/
+	this->nugget = 0.2;
+	this->sill   = 1;
+	this->range  = SQRT3;
+
+	/*Overwrite from options*/
+	if(options->GetOption("nugget")) options->Get(&this->nugget,"nugget");
+	if(options->GetOption("sill"))   options->Get(&this->sill,"sill");
+	if(options->GetOption("range"))  options->Get(&this->range,"range");
+
+	/*Checks*/
+	if(nugget==sill) _error_("nugget and sill cannot be equal (constant semivariogram not allowed)");
+}
+/*}}}*/
+SphericalVariogram::~SphericalVariogram(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* SphericalVariogram::copy(void){/*{{{*/
+	return new SphericalVariogram(*this);
+}
+/*}}}*/
+void SphericalVariogram::Echo(void){/*{{{*/
+	_printf_("SphericalVariogram\n");
+	_printf_("   nugget: " << this->nugget << "\n");
+	_printf_("   sill  : " << this->sill << "\n");
+	_printf_("   range : " << this->range << "\n");
+}
+/*}}}*/
+
+/*Variogram function*/
+double SphericalVariogram::Covariance(double deltax,double deltay){/*{{{*/
+	/*The covariance can be deduced from the variogram from the following
+	 * relationship:
+	 *    2 gamma = C(x,x) + C(y,y) -2 C(x,y)
+	 * so
+	 *    C(h) = sill - gamma                                            */
+	double h,cova;
+
+	/*Calculate length square*/
+	h=sqrt(deltax*deltax + deltay*deltay);
+
+	/*return covariance*/
+	if(h<=range)
+	 cova = (sill-nugget)*(1 - (3*h)/(2*range) + pow(h,3)/(2*pow(range,3)) );
+	else
+	 cova = 0.;
+
+	return cova;
+}
+/*}}}*/
+double SphericalVariogram::SemiVariogram(double deltax,double deltay){/*{{{*/
+	/*http://en.wikipedia.org/wiki/Variogram*/
+	double h,gamma;
+
+	/*Calculate length square*/
+	h=sqrt(deltax*deltax + deltay*deltay);
+
+	/*return semi-variogram*/
+	if(h<=range)
+	 gamma = (sill-nugget)*( (3*h)/(2*range) - pow(h,3)/(2*pow(range,3)) ) + nugget;
+	else
+	 gamma = sill;
+
+	return gamma;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/SphericalVariogram.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/SphericalVariogram.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/SphericalVariogram.h	(revision 21239)
@@ -0,0 +1,36 @@
+/*! \file SphericalVariogram.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _SPHERICALVARIOGRAM_H_
+#define _SPHERICALVARIOGRAM_H_
+
+/*Headers:*/
+#include "./Variogram.h"
+
+class SphericalVariogram: public Variogram{
+
+	public:
+		double nugget; //The height of the jump of the semivariogram at the discontinuity at the origin
+		double sill;   //Limit of the variogram tending to infinity lag distances
+		double range;  //The distance in which the difference of the variogram from the sill becomes negligible
+
+		/*SphericalVariogram constructors, destructors*/
+		SphericalVariogram();
+		SphericalVariogram(Options* options);
+		~SphericalVariogram();
+
+		/*Object virtual functions definitions*/
+		Object* copy();
+		void  DeepEcho(){_error_("Not implemented yet");};
+		void  Echo();
+		int   Id(){_error_("Not implemented yet");}; 
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
+		int   ObjectEnum(){_error_("Not implemented yet");};
+
+
+		/*Variogram functions*/
+		double Covariance(double deltax,double deltay);
+		double SemiVariogram(double deltax,double deltay);
+};
+#endif  /* _SPHERICALVARIOGRAM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Variogram.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Variogram.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/Variogram.h	(revision 21239)
@@ -0,0 +1,18 @@
+/*!\file:  Variogram.h
+ * \brief abstract class for Variogram object
+ */ 
+
+#ifndef _VARIOGRAM_H_
+#define _VARIOGRAM_H_
+
+#include "../../datastructures/datastructures.h"
+
+class Variogram: public Object{
+
+	public: 
+		virtual ~Variogram(){};
+		virtual double Covariance(double deltax,double deltay)=0;
+		virtual double SemiVariogram(double deltax,double deltay)=0;
+
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/krigingobjects.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/krigingobjects.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/kriging/krigingobjects.h	(revision 21239)
@@ -0,0 +1,19 @@
+/* \file krigingobjects.h
+ * \brief: prototype header for all kriging objects.
+ */
+
+#ifndef KRIGING_OBJECTS_H_
+#define KRIGING_OBJECTS_H_
+
+/*Kriging*/
+#include "./Variogram.h"
+#include "./GaussianVariogram.h"
+#include "./ExponentialVariogram.h"
+#include "./SphericalVariogram.h"
+#include "./PowerVariogram.h"
+#include "./Quadtree.h"
+#include "./Covertree.h"
+#include "./Observation.h"
+#include "./Observations.h"
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/matrix/ElementMatrix.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/matrix/ElementMatrix.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/matrix/ElementMatrix.cpp	(revision 21239)
@@ -0,0 +1,626 @@
+/*!\file ElementMatrix.cpp
+ * \brief: implementation of the ElementMatrix object, used to plug values from element into global stiffness matrix
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*ElementMatrix constructors and destructor*/
+ElementMatrix::ElementMatrix(){/*{{{*/
+
+	this->nrows=0;
+	this->ncols=0;
+	this->values=NULL;
+	this->dofsymmetrical=false;
+
+	this->row_fsize=0;
+	this->row_flocaldoflist=NULL;
+	this->row_fglobaldoflist=NULL;
+	this->row_ssize=0;
+	this->row_slocaldoflist=NULL;
+	this->row_sglobaldoflist=NULL;
+
+	this->col_fsize=0;
+	this->col_flocaldoflist=NULL;
+	this->col_fglobaldoflist=NULL;
+	this->col_ssize=0;
+	this->col_slocaldoflist=NULL;
+	this->col_sglobaldoflist=NULL;
+
+}
+/*}}}*/
+ElementMatrix::ElementMatrix(ElementMatrix* Ke){/*{{{*/
+
+	if(!Ke) _error_("Input Element Matrix is a NULL pointer");
+	this->Init(Ke);
+	return;
+}
+/*}}}*/
+ElementMatrix::ElementMatrix(ElementMatrix* Ke1, ElementMatrix* Ke2){/*{{{*/
+
+	/*intermediaries*/
+	int i,j,counter;
+	int gsize,fsize,ssize;
+	int* P=NULL;
+	bool found;
+
+	/*If one of the two matrix is NULL, we copy the other one*/
+	if(!Ke1 && !Ke2){
+		_error_("Two input element matrices are NULL");
+	}
+	else if(!Ke1){
+		this->Init(Ke2);
+		return;
+	}
+	else if(!Ke2){
+		this->Init(Ke1);
+		return;
+	}
+
+	/*General Case: Ke1 and Ke2 are not empty*/
+	if(!Ke1->dofsymmetrical || !Ke2->dofsymmetrical) _error_("merging 2 non dofsymmetrical matrices not implemented yet");
+
+	/*Initialize itransformation matrix Ke[P[i]] = Ke2[i]*/
+	P=xNew<int>(Ke2->nrows);
+
+	/*1: Get the new numbering of Ke2 and get size of the new matrix*/
+	gsize=Ke1->nrows;
+	for(i=0;i<Ke2->nrows;i++){
+		found=false;
+		for(j=0;j<Ke1->nrows;j++){
+			if(Ke2->gglobaldoflist[i]==Ke1->gglobaldoflist[j]){
+				found=true; P[i]=j; break;
+			}
+		}
+		if(!found){
+			P[i]=gsize; gsize++;
+		}
+	}
+
+	/*2: Initialize static fields*/
+	this->nrows=gsize;
+	this->ncols=gsize;
+	this->dofsymmetrical=true;
+
+	/*Gset and values*/
+	this->gglobaldoflist=xNew<int>(this->nrows);
+	this->values=xNewZeroInit<IssmDouble>(this->nrows*this->ncols);
+	for(i=0;i<Ke1->nrows;i++){
+		for(j=0;j<Ke1->ncols;j++){
+			this->values[i*this->ncols+j] += Ke1->values[i*Ke1->ncols+j];
+		}
+		this->gglobaldoflist[i]=Ke1->gglobaldoflist[i];
+	}
+	for(i=0;i<Ke2->nrows;i++){
+		for(j=0;j<Ke2->ncols;j++){
+			this->values[P[i]*this->ncols+P[j]] += Ke2->values[i*Ke2->ncols+j];
+		}
+		this->gglobaldoflist[P[i]]=Ke2->gglobaldoflist[i];
+	}
+
+	/*Fset*/
+	fsize=Ke1->row_fsize;
+	for(i=0;i<Ke2->row_fsize;i++){
+		if(P[Ke2->row_flocaldoflist[i]] >= Ke1->nrows) fsize++;
+	}
+	this->row_fsize=fsize;
+	if(fsize){
+		this->row_flocaldoflist =xNew<int>(fsize);
+		this->row_fglobaldoflist=xNew<int>(fsize);
+		for(i=0;i<Ke1->row_fsize;i++){
+			this->row_flocaldoflist[i] =Ke1->row_flocaldoflist[i];
+			this->row_fglobaldoflist[i]=Ke1->row_fglobaldoflist[i];
+		}
+		counter=Ke1->row_fsize;
+		for(i=0;i<Ke2->row_fsize;i++){
+			if(P[Ke2->row_flocaldoflist[i]] >= Ke1->nrows){
+				this->row_flocaldoflist[counter] =P[Ke2->row_flocaldoflist[i]];
+				this->row_fglobaldoflist[counter]=Ke2->row_fglobaldoflist[i];
+				counter++;
+			}
+		}
+	}
+	else{
+		this->row_flocaldoflist=NULL;
+		this->row_fglobaldoflist=NULL;
+	}
+
+	/*Sset*/
+	ssize=Ke1->row_ssize;
+	for(i=0;i<Ke2->row_ssize;i++){
+		if(P[Ke2->row_slocaldoflist[i]] >= Ke1->nrows) ssize++;
+	}
+	this->row_ssize=ssize;
+	if(ssize){
+		this->row_slocaldoflist =xNew<int>(ssize);
+		this->row_sglobaldoflist=xNew<int>(ssize);
+		for(i=0;i<Ke1->row_ssize;i++){
+			this->row_slocaldoflist[i] =Ke1->row_slocaldoflist[i];
+			this->row_sglobaldoflist[i]=Ke1->row_sglobaldoflist[i];
+		}
+		counter=Ke1->row_ssize;
+		for(i=0;i<Ke2->row_ssize;i++){
+			if(P[Ke2->row_slocaldoflist[i]] >= Ke1->nrows){
+				this->row_slocaldoflist[counter] =P[Ke2->row_slocaldoflist[i]];
+				this->row_sglobaldoflist[counter]=Ke2->row_sglobaldoflist[i];
+				counter++;
+			}
+		}
+	}
+	else{
+		this->row_slocaldoflist=NULL;
+		this->row_sglobaldoflist=NULL;
+	}
+
+	/*don't do cols, we can pick them up from the rows: */
+	this->col_fsize=0;
+	this->col_flocaldoflist=NULL;
+	this->col_fglobaldoflist=NULL;
+	this->col_ssize=0;
+	this->col_slocaldoflist=NULL;
+	this->col_sglobaldoflist=NULL;
+
+	/*clean-up*/
+	xDelete<int>(P);
+}
+/*}}}*/
+ElementMatrix::ElementMatrix(ElementMatrix* Ke1, ElementMatrix* Ke2,ElementMatrix* Ke3){/*{{{*/
+
+	/*Concatenate all matrices*/
+	ElementMatrix* Ke12 =new ElementMatrix(Ke1,Ke2);
+	ElementMatrix* Ke123=new ElementMatrix(Ke12,Ke3);
+
+	/*Initialize current object with this matrix*/
+	this->Init(Ke123);
+
+	/*clean-up*/
+	delete Ke12;
+	delete Ke123;
+}
+/*}}}*/
+ElementMatrix::ElementMatrix(Node** nodes,int numnodes,Parameters* parameters,int approximation){/*{{{*/
+
+	/*get Matrix size and properties*/
+	this->dofsymmetrical=true;
+	this->nrows=GetNumberOfDofs(nodes,numnodes,GsetEnum,approximation);
+	this->ncols=this->nrows;
+
+	/*fill values with 0: */
+	this->values=xNewZeroInit<IssmDouble>(this->nrows*this->ncols);
+
+	/*g list*/
+	this->gglobaldoflist=GetGlobalDofList(nodes,numnodes,GsetEnum,approximation);
+
+	/*get dof lists for f and s set: */
+	this->row_fsize=GetNumberOfDofs(nodes,numnodes,FsetEnum,approximation);
+	this->row_flocaldoflist =GetLocalDofList( nodes,numnodes,FsetEnum,approximation);
+	this->row_fglobaldoflist=GetGlobalDofList(nodes,numnodes,FsetEnum,approximation);
+	this->row_ssize=GetNumberOfDofs(nodes,numnodes,SsetEnum,approximation);
+	this->row_slocaldoflist =GetLocalDofList( nodes,numnodes,SsetEnum,approximation);
+	this->row_sglobaldoflist=GetGlobalDofList(nodes,numnodes,SsetEnum,approximation);
+
+	/*Because this matrix is "dofsymmetrical" don't do cols, we can pick them up from the rows: */
+	this->col_fsize=0;
+	this->col_flocaldoflist=NULL;
+	this->col_fglobaldoflist=NULL;
+	this->col_ssize=0;
+	this->col_slocaldoflist=NULL;
+	this->col_sglobaldoflist=NULL;
+}
+/*}}}*/
+ElementMatrix::~ElementMatrix(){/*{{{*/
+
+	xDelete<IssmDouble>(this->values);
+	xDelete<int>(this->gglobaldoflist);
+	xDelete<int>(this->row_flocaldoflist);
+	xDelete<int>(this->row_fglobaldoflist);
+	xDelete<int>(this->row_slocaldoflist);
+	xDelete<int>(this->row_sglobaldoflist);
+	xDelete<int>(this->col_flocaldoflist);
+	xDelete<int>(this->col_fglobaldoflist);
+	xDelete<int>(this->col_slocaldoflist);
+	xDelete<int>(this->col_sglobaldoflist);
+}
+/*}}}*/
+
+/*ElementMatrix specific routines: */
+void ElementMatrix::AddDiagonalToGlobal(Vector<IssmDouble>* pf){/*{{{*/
+
+	IssmDouble* localvalues=NULL;
+
+	/*Check that pf is not NULL*/
+	_assert_(pf); 
+
+	/*In debugging mode, check consistency (no NaN, and values not too big)*/
+	this->CheckConsistency();
+
+	if(this->dofsymmetrical){
+		/*only use row dofs to add values into global matrices: */
+
+		if(this->row_fsize){
+			/*first, retrieve values that are in the f-set from the g-set values matrix: */
+			localvalues=xNew<IssmDouble>(this->row_fsize);
+			for(int i=0;i<this->row_fsize;i++){
+				localvalues[i] = this->values[this->ncols*this->row_flocaldoflist[i]+ this->row_flocaldoflist[i]];
+			}
+
+			/*add local values into global  matrix, using the fglobaldoflist: */
+			pf->SetValues(this->row_fsize,this->row_fglobaldoflist,localvalues,ADD_VAL);
+
+			/*Free ressources:*/
+			xDelete<IssmDouble>(localvalues);
+		}
+	}
+	else{
+		_error_("non dofsymmetrical matrix AddToGlobal routine not support yet!");
+	}
+
+}
+/*}}}*/
+void ElementMatrix::AddToGlobal(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs){/*{{{*/
+
+	int i,j;
+	IssmDouble* localvalues=NULL;
+
+	/*Check that Kff has been alocated in debugging mode*/
+	_assert_(Kff);
+
+	/*If Kfs is not provided, call the other function*/
+	if(!Kfs){
+		this->AddToGlobal(Kff);
+		return;
+	}
+
+	/*In debugging mode, check consistency (no NaN, and values not too big)*/
+	this->CheckConsistency();
+
+	if(this->dofsymmetrical){
+		/*only use row dofs to add values into global matrices: */
+
+		if(this->row_fsize){
+			/*first, retrieve values that are in the f-set from the g-set values matrix: */
+			localvalues=xNew<IssmDouble>(this->row_fsize*this->row_fsize);
+			for(i=0;i<this->row_fsize;i++){
+				for(j=0;j<this->row_fsize;j++){
+					localvalues[this->row_fsize*i+j]=this->values[this->ncols*this->row_flocaldoflist[i]+this->row_flocaldoflist[j]];
+				}
+			}
+
+			/*add local values into global  matrix, using the fglobaldoflist: */
+			Kff->SetValues(this->row_fsize,this->row_fglobaldoflist,this->row_fsize,this->row_fglobaldoflist,localvalues,ADD_VAL);
+
+			/*Free ressources:*/
+			xDelete<IssmDouble>(localvalues);
+		}
+
+		if((this->row_ssize!=0) && (this->row_fsize!=0)){
+			/*first, retrieve values that are in the f and s-set from the g-set values matrix: */
+			localvalues=xNew<IssmDouble>(this->row_fsize*this->row_ssize);
+			for(i=0;i<this->row_fsize;i++){
+				for(j=0;j<this->row_ssize;j++){
+					localvalues[this->row_ssize*i+j]=this->values[this->ncols*this->row_flocaldoflist[i]+this->row_slocaldoflist[j]];
+				}
+			}
+			/*add local values into global  matrix, using the fglobaldoflist: */
+			Kfs->SetValues(this->row_fsize,this->row_fglobaldoflist,this->row_ssize,this->row_sglobaldoflist,localvalues,ADD_VAL);
+
+			/*Free ressources:*/
+			xDelete<IssmDouble>(localvalues);
+		}
+	}
+	else{
+		_error_("non dofsymmetrical matrix AddToGlobal routine not support yet!");
+	}
+
+}
+/*}}}*/
+void ElementMatrix::AddToGlobal(Matrix<IssmDouble>* Jff){/*{{{*/
+
+	int i,j;
+	IssmDouble* localvalues=NULL;
+
+	/*Check that Jff is not NULL*/
+	_assert_(Jff); 
+
+	/*In debugging mode, check consistency (no NaN, and values not too big)*/
+	this->CheckConsistency();
+
+	if(this->dofsymmetrical){
+		/*only use row dofs to add values into global matrices: */
+
+		if(this->row_fsize){
+			/*first, retrieve values that are in the f-set from the g-set values matrix: */
+			localvalues=xNew<IssmDouble>(this->row_fsize*this->row_fsize);
+			for(i=0;i<this->row_fsize;i++){
+				for(j=0;j<this->row_fsize;j++){
+					*(localvalues+this->row_fsize*i+j)=*(this->values+this->ncols*this->row_flocaldoflist[i]+this->row_flocaldoflist[j]);
+				}
+			}
+			/*add local values into global  matrix, using the fglobaldoflist: */
+			Jff->SetValues(this->row_fsize,this->row_fglobaldoflist,this->row_fsize,this->row_fglobaldoflist,localvalues,ADD_VAL);
+
+			/*Free ressources:*/
+			xDelete<IssmDouble>(localvalues);
+		}
+
+	}
+	else{
+		_error_("non dofsymmetrical matrix AddToGlobal routine not support yet!");
+	}
+
+}
+/*}}}*/
+void ElementMatrix::CheckConsistency(void){/*{{{*/
+	/*Check element matrix values, only in debugging mode*/
+	#ifdef _ISSM_DEBUG_ 
+	for (int i=0;i<this->nrows;i++){
+		for(int j=0;j<this->ncols;j++){
+			if (xIsNan<IssmDouble>(this->values[i*this->ncols+j])) _error_("NaN found in Element Matrix");
+			if (xIsInf<IssmDouble>(this->values[i*this->ncols+j])) _error_("Inf found in Element Matrix");
+			if (fabs(this->values[i*this->ncols+j])>1.e+50) _error_("Element Matrix values exceeds 1.e+50");
+		}
+	}
+	#endif
+}
+/*}}}*/
+void ElementMatrix::Echo(void){/*{{{*/
+
+	int i,j;
+	_printf_("Element Matrix echo:\n");
+	_printf_("   nrows: " << this->nrows << "\n");
+	_printf_("   ncols: " << this->ncols << "\n");
+	_printf_("   dofsymmetrical: " << (dofsymmetrical?"true":"false") << "\n");
+
+	_printf_("   values:\n");
+	for(i=0;i<nrows;i++){
+		_printf_(setw(4) << right << i << ": ");
+		for(j=0;j<ncols;j++) _printf_( " " << setw(11) << setprecision (5) << right << values[i*ncols+j]);
+		_printf_("\n");
+	}
+
+	_printf_("   gglobaldoflist (" << gglobaldoflist << "): ");
+	if(gglobaldoflist) for(i=0;i<nrows;i++) _printf_(" " << gglobaldoflist[i]); _printf_("\n");
+
+	_printf_("   row_fsize: " << row_fsize << "\n");
+	_printf_("   row_flocaldoflist  (" << row_flocaldoflist << "): ");
+	if(row_flocaldoflist) for(i=0;i<row_fsize;i++) _printf_(" " << row_flocaldoflist[i] ); _printf_(" \n");
+	_printf_("   row_fglobaldoflist  (" << row_fglobaldoflist << "): ");
+	if(row_fglobaldoflist) for(i=0;i<row_fsize;i++)_printf_(" " << row_fglobaldoflist[i]); _printf_(" \n");
+
+	_printf_("   row_ssize: " << row_ssize << "\n");
+	_printf_("   row_slocaldoflist  (" << row_slocaldoflist << "): ");
+	if(row_slocaldoflist) for(i=0;i<row_ssize;i++) _printf_(" " << row_slocaldoflist[i] ); _printf_(" \n");
+	_printf_("   row_sglobaldoflist  (" << row_sglobaldoflist << "): ");
+	if(row_sglobaldoflist) for(i=0;i<row_ssize;i++)_printf_(" " << row_sglobaldoflist[i]); _printf_(" \n");
+
+	if(!dofsymmetrical){
+		_printf_("   col_fsize: " << col_fsize << "\n");
+		_printf_("   col_flocaldoflist  (" << col_flocaldoflist << "): ");
+		if(col_flocaldoflist) for(i=0;i<col_fsize;i++) _printf_(" " << col_flocaldoflist[i] ); _printf_(" \n");
+		_printf_("   col_fglobaldoflist  (" << col_fglobaldoflist << "): ");
+		if(col_fglobaldoflist) for(i=0;i<col_fsize;i++)_printf_(" " << col_fglobaldoflist[i]); _printf_(" \n");
+
+		_printf_("   col_ssize: " << col_ssize << "\n");
+		_printf_("   col_slocaldoflist  (" << col_slocaldoflist << "): ");
+		if(col_slocaldoflist) for(i=0;i<col_ssize;i++) _printf_(" " << col_slocaldoflist[i] ); _printf_(" \n");
+		_printf_("   col_sglobaldoflist  (" << col_sglobaldoflist << "): ");
+		if(col_sglobaldoflist) for(i=0;i<col_ssize;i++)_printf_(" " << col_sglobaldoflist[i]); _printf_(" \n");
+	}
+}
+/*}}}*/
+void ElementMatrix::Init(ElementMatrix* Ke){/*{{{*/
+
+	_assert_(Ke);
+	_assert_(this);
+
+	this->nrows =Ke->nrows;
+	this->ncols =Ke->ncols;
+	this->dofsymmetrical=Ke->dofsymmetrical;
+
+	this->values=xNew<IssmDouble>(this->nrows*this->ncols);
+	xMemCpy<IssmDouble>(this->values,Ke->values,this->nrows*this->ncols);
+
+	this->gglobaldoflist=xNew<int>(this->nrows);
+	xMemCpy<int>(this->gglobaldoflist,Ke->gglobaldoflist,this->nrows);
+
+	this->row_fsize=Ke->row_fsize;
+	if(this->row_fsize){
+		this->row_flocaldoflist=xNew<int>(this->row_fsize);
+		xMemCpy<int>(this->row_flocaldoflist,Ke->row_flocaldoflist,this->row_fsize);
+		this->row_fglobaldoflist=xNew<int>(this->row_fsize);
+		xMemCpy<int>(this->row_fglobaldoflist,Ke->row_fglobaldoflist,this->row_fsize);
+	}
+	else{
+		this->row_flocaldoflist=NULL;
+		this->row_fglobaldoflist=NULL;
+	}
+
+	this->row_ssize=Ke->row_ssize;
+	if(this->row_ssize){
+		this->row_slocaldoflist=xNew<int>(this->row_ssize);
+		xMemCpy<int>(this->row_slocaldoflist,Ke->row_slocaldoflist,this->row_ssize);
+		this->row_sglobaldoflist=xNew<int>(this->row_ssize);
+		xMemCpy<int>(this->row_sglobaldoflist,Ke->row_sglobaldoflist,this->row_ssize);
+	}
+	else{
+		this->row_slocaldoflist=NULL;
+		this->row_sglobaldoflist=NULL;
+	}
+
+	this->col_fsize=Ke->col_fsize;
+	if(this->col_fsize){
+		this->col_flocaldoflist=xNew<int>(this->col_fsize);
+		xMemCpy<int>(this->col_flocaldoflist,Ke->col_flocaldoflist,this->col_fsize);
+		this->col_fglobaldoflist=xNew<int>(this->col_fsize);
+		xMemCpy<int>(this->col_fglobaldoflist,Ke->col_fglobaldoflist,this->col_fsize);
+	}
+	else{
+		this->col_flocaldoflist=NULL;
+		this->col_fglobaldoflist=NULL;
+	}
+
+	this->col_ssize=Ke->col_ssize;
+	if(this->col_ssize){
+		this->col_slocaldoflist=xNew<int>(this->col_ssize);
+		xMemCpy<int>(this->col_slocaldoflist,Ke->col_slocaldoflist,this->col_ssize);
+		this->col_sglobaldoflist=xNew<int>(this->col_ssize);
+		xMemCpy<int>(this->col_sglobaldoflist,Ke->col_sglobaldoflist,this->col_ssize);
+	}
+	else{
+		this->col_slocaldoflist=NULL;
+		this->col_sglobaldoflist=NULL;
+	}
+}
+/*}}}*/
+void ElementMatrix::Lump(void){/*{{{*/
+
+	if(!dofsymmetrical) _error_("not supported yet");
+
+	for(int i=0;i<this->nrows;i++){
+		for(int j=0;j<this->ncols;j++){
+			if(i!=j){
+				this->values[i*this->ncols+i] += this->values[i*this->ncols+j];
+				this->values[i*this->ncols+j]  = 0.;
+			}
+		}
+	}
+
+	return;
+}
+/*}}}*/
+void ElementMatrix::Transpose(void){/*{{{*/
+
+	/*Intermediaries*/
+	ElementMatrix* Ke_copy=new ElementMatrix(this);
+
+	/*Update sizes*/
+	this->nrows=Ke_copy->ncols;
+	this->ncols=Ke_copy->nrows;
+
+	/*Transpose values*/
+	for (int i=0;i<this->nrows;i++) for(int j=0;j<this->ncols;j++) this->values[i*this->ncols+j]=Ke_copy->values[j*Ke_copy->ncols+i];
+
+	/*Transpose indices*/
+	if(!dofsymmetrical){
+		_error_("not supported yet");
+	}
+
+	/*Clean up and return*/
+	delete Ke_copy;
+	return;
+}
+/*}}}*/
+void ElementMatrix::StaticCondensation(int bsize,int* bindices){/*{{{*/
+	/* 
+	 * | Kii  Kib | | Ui |    |Fi|
+	 * | Kbi  Kbb | | Ub |  = |Fb|
+	 *
+	 * Kii Ui + Kib Ub = Fi
+	 * Kbi Ui + Kbb Ub = Fb
+	 *
+	 * We want to remove Ub from the equation:
+	 *
+	 * Kii Ui + Kib inv(Kbb) (Fb - Kbi Ui) = Fi
+	 *
+	 * which gives:
+	 *
+	 * (Kii - Kib inv(Kbb) Kbi) Ui = Fi - Kib inv(Kbb) Fb
+	 */
+
+	/*Checks in debugging mode*/
+	_assert_(this->nrows==this->ncols && bsize>0 && bsize<this->ncols && this->values); 
+
+	/*Intermediaries*/
+	int         counter,i,j,isize;
+	IssmDouble *Kii         = NULL;
+	IssmDouble *Kib         = NULL;
+	IssmDouble *Kbi         = NULL;
+	IssmDouble *Kbb         = NULL;
+	IssmDouble *Kbbinv      = NULL;
+	IssmDouble *Ktemp       = NULL;
+	int        *iindices    = NULL;
+	bool        flag;
+
+	/*Get new sizes and indices*/
+	isize    = this->nrows - bsize;
+	iindices = xNew<int>(isize);
+	counter  = 0;
+	for(i=0;i<this->nrows;i++){
+		flag = true;
+		for(j=0;j<bsize;j++){
+			if(i==bindices[j]){
+				flag = false;
+				break;
+			}
+		}
+		if(flag){
+			_assert_(counter<isize);
+			iindices[counter++] = i;
+		}
+	}
+	_assert_(counter == isize);
+
+	/*Get submatrices*/
+	Kii = xNew<IssmDouble>(isize*isize);
+	Kib = xNew<IssmDouble>(isize*bsize);
+	Kbi = xNew<IssmDouble>(bsize*isize);
+	Kbb = xNew<IssmDouble>(bsize*bsize);
+	for(i=0;i<isize;i++) for(j=0;j<isize;j++) Kii[i*isize+j] = this->values[iindices[i]*this->ncols + iindices[j]];
+	for(i=0;i<isize;i++) for(j=0;j<bsize;j++) Kib[i*bsize+j] = this->values[iindices[i]*this->ncols + bindices[j]];
+	for(i=0;i<bsize;i++) for(j=0;j<isize;j++) Kbi[i*isize+j] = this->values[bindices[i]*this->ncols + iindices[j]];
+	for(i=0;i<bsize;i++) for(j=0;j<bsize;j++) Kbb[i*bsize+j] = this->values[bindices[i]*this->ncols + bindices[j]];
+
+	/*Invert Kbb*/
+	Kbbinv = xNew<IssmDouble>(bsize*bsize);
+	switch(bsize){
+		case 1:
+			Kbbinv[0] = 1./Kbb[0];
+			break;
+		case 2:
+			Matrix2x2Invert(Kbbinv,Kbb);
+			break;
+		case 3:
+			Matrix3x3Invert(Kbbinv,Kbb);
+			break;
+		default:
+			MatrixInverse(Kbbinv,bsize,bsize,NULL,0,NULL);
+			break;
+	}
+
+	/*Calculate  Kib inv(Kbb) Kbi*/
+	Ktemp = xNew<IssmDouble>(isize*isize);
+	TripleMultiply(Kib,isize,bsize,0, Kbbinv,bsize,bsize,0, Kbi,bsize,isize,0, Ktemp,0);
+
+	/*New Ke*/
+	for(i=0;i<isize*isize;i++) Ktemp[i] = Kii[i] - Ktemp[i];
+
+	/*Update matrix values*/
+	for(i=0;i<this->nrows*this->ncols;i++) this->values[i]=0.;
+	for(i=0;i<isize;i++){
+		for(j=0;j<isize;j++){
+			this->values[iindices[i]*this->ncols + iindices[j]] = Ktemp[i*isize+j];
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(Kii);
+	xDelete<IssmDouble>(Kib);
+	xDelete<IssmDouble>(Kbi);
+	xDelete<IssmDouble>(Kbb);
+	xDelete<IssmDouble>(Kbbinv);
+	xDelete<IssmDouble>(Ktemp);
+	xDelete<int>(iindices);
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/matrix/ElementMatrix.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/matrix/ElementMatrix.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/matrix/ElementMatrix.h	(revision 21239)
@@ -0,0 +1,70 @@
+/*!\file:  ElementMatrix.h
+ * \brief container for information needed to plug element matrix generated by elements 
+ * into the Kff and Kfs global matrices. 
+ * This object will hold the element matrix on the g-set, the local as well as global 
+ * dof lists in the f and s sets.
+ */ 
+
+#ifndef _ELEMENT_MATRIX_H_
+#define _ELEMENT_MATRIX_H_
+
+/*Headers:*/
+#include "../../datastructures/datastructures.h"
+#include "../../toolkits/toolkits.h"
+#include "../../shared/shared.h"
+class Node;
+template <class doublematrix> class Matrix;
+class Parameters;
+
+class ElementMatrix{
+
+	public:
+
+		int      nrows;
+		int      ncols;
+		bool     dofsymmetrical;
+		IssmDouble*  values;
+
+		//gset
+		int*     gglobaldoflist;
+
+		/*row wise: */
+		//fset
+		int      row_fsize;
+		int*     row_flocaldoflist;
+		int*     row_fglobaldoflist;
+		//sset
+		int      row_ssize;
+		int*     row_slocaldoflist;
+		int*     row_sglobaldoflist;
+
+		/*column wise: */
+		//fset
+		int      col_fsize;
+		int*     col_flocaldoflist;
+		int*     col_fglobaldoflist;
+		//sset
+		int      col_ssize;
+		int*     col_slocaldoflist;
+		int*     col_sglobaldoflist;
+
+		/*ElementMatrix constructors, destructors*/
+		ElementMatrix();
+		ElementMatrix(ElementMatrix* Ke);
+		ElementMatrix(ElementMatrix* Ke1,ElementMatrix* Ke2);
+		ElementMatrix(ElementMatrix* Ke1,ElementMatrix* Ke2,ElementMatrix* Ke3);
+		ElementMatrix(Node** nodes,int numnodes,Parameters* parameters,int approximation=NoneApproximationEnum);
+		~ElementMatrix();
+
+		/*ElementMatrix specific routines*/
+		void AddDiagonalToGlobal(Vector<IssmDouble>* pf);
+		void AddToGlobal(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
+		void AddToGlobal(Matrix<IssmDouble>* Jff);
+		void CheckConsistency(void);
+		void Echo(void);
+		void Init(ElementMatrix* Ke);
+		void Lump(void);
+		void StaticCondensation(int numindices,int* indices);
+		void Transpose(void);
+};
+#endif //#ifndef _ELEMENT_MATRIX_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/matrix/ElementVector.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/matrix/ElementVector.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/matrix/ElementVector.cpp	(revision 21239)
@@ -0,0 +1,367 @@
+/*!\file ElementVector.cpp
+ * \brief: implementation of the ElementVector object, used to plug values from element into global load
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*ElementVector constructors and destructor*/
+ElementVector::ElementVector(){/*{{{*/
+
+	this->nrows=0;
+	this->values=NULL;
+	this->fsize=0;
+	this->flocaldoflist=NULL;
+	this->fglobaldoflist=NULL;
+
+}
+/*}}}*/
+ElementVector::ElementVector(ElementVector* pe1, ElementVector* pe2){/*{{{*/
+
+	/*intermediaries*/
+	int i,j,counter;
+	int gsize,fsize;
+	int* P=NULL;
+	bool found;
+
+	/*If one of the two matrix is NULL, we copy the other one*/
+	if(!pe1 && !pe2){
+		_error_("Two input element matrices are NULL");
+	}
+	else if(!pe1){
+		this->Init(pe2);
+		return;
+	}
+	else if(!pe2){
+		this->Init(pe1);
+		return;
+	}
+
+	/*Initialize itransformation matrix pe[P[i]] = pe2[i]*/
+	P=xNew<int>(pe2->nrows);
+
+	/*1: Get the new numbering of pe2 and get size of the new matrix*/
+	gsize=pe1->nrows;
+	for(i=0;i<pe2->nrows;i++){
+		found=false;
+		for(j=0;j<pe1->nrows;j++){
+			if(pe2->gglobaldoflist[i]==pe1->gglobaldoflist[j]){
+				found=true; P[i]=j; break;
+			}
+		}
+		if(!found){
+			P[i]=gsize; gsize++;
+		}
+	}
+
+	/*2: Initialize static fields*/
+	this->nrows=gsize;
+
+	/*Gset and values*/
+	this->gglobaldoflist=xNew<int>(this->nrows);
+	this->values=xNewZeroInit<IssmDouble>(this->nrows);
+	for(i=0;i<pe1->nrows;i++){
+		this->values[i] += pe1->values[i];
+		this->gglobaldoflist[i]=pe1->gglobaldoflist[i];
+	}
+	for(i=0;i<pe2->nrows;i++){
+		this->values[P[i]] += pe2->values[i];
+		this->gglobaldoflist[P[i]]=pe2->gglobaldoflist[i];
+	}
+
+	/*Fset*/
+	fsize=pe1->fsize;
+	for(i=0;i<pe2->fsize;i++){
+		if(P[pe2->flocaldoflist[i]] >= pe1->nrows) fsize++;
+	}
+	this->fsize=fsize;
+	if(fsize){
+		this->flocaldoflist =xNew<int>(fsize);
+		this->fglobaldoflist=xNew<int>(fsize);
+		for(i=0;i<pe1->fsize;i++){
+			this->flocaldoflist[i] =pe1->flocaldoflist[i];
+			this->fglobaldoflist[i]=pe1->fglobaldoflist[i];
+		}
+		counter=pe1->fsize;
+		for(i=0;i<pe2->fsize;i++){
+			if(P[pe2->flocaldoflist[i]] >= pe1->nrows){
+				this->flocaldoflist[counter] =P[pe2->flocaldoflist[i]];
+				this->fglobaldoflist[counter]=pe2->fglobaldoflist[i];
+				counter++;
+			}
+		}
+	}
+	else{
+		this->flocaldoflist=NULL;
+		this->fglobaldoflist=NULL;
+	}
+
+	/*clean-up*/
+	xDelete<int>(P);
+}
+/*}}}*/
+ElementVector::ElementVector(ElementVector* pe1, ElementVector* pe2,ElementVector* pe3){/*{{{*/
+
+	/*Concatenate all matrices*/
+	ElementVector* pe12 =new ElementVector(pe1,pe2);
+	ElementVector* pe123=new ElementVector(pe12,pe3);
+
+	/*Initialize current object with this matrix*/
+	this->Init(pe123);
+
+	/*clean-up*/
+	delete pe12;
+	delete pe123;
+}
+/*}}}*/
+ElementVector::ElementVector(Node** nodes,int numnodes,Parameters* parameters,int approximation){/*{{{*/
+
+	/*get Vector size and properties*/
+	this->nrows=GetNumberOfDofs(nodes,numnodes,GsetEnum,approximation);
+
+	/*fill values with 0: */
+	this->values=xNewZeroInit<IssmDouble>(this->nrows);
+
+	/*g list*/
+	this->gglobaldoflist=GetGlobalDofList(nodes,numnodes,GsetEnum,approximation);
+
+	/*Get fsize*/
+	this->fsize=GetNumberOfDofs(nodes,numnodes,FsetEnum,approximation);
+	this->flocaldoflist =GetLocalDofList( nodes,numnodes,FsetEnum,approximation);
+	this->fglobaldoflist=GetGlobalDofList(nodes,numnodes,FsetEnum,approximation);
+}
+/*}}}*/
+ElementVector::~ElementVector(){/*{{{*/
+
+	xDelete<IssmDouble>(this->values);
+	xDelete<int>(this->gglobaldoflist);
+	xDelete<int>(this->flocaldoflist);
+	xDelete<int>(this->fglobaldoflist);
+}
+/*}}}*/
+
+/*ElementVector specific routines: */
+void ElementVector::AddToGlobal(Vector<IssmDouble>* pf){/*{{{*/
+
+	int i;
+	IssmDouble* localvalues=NULL;
+
+	/*In debugging mode, check consistency (no NaN, and values not too big)*/
+	this->CheckConsistency();
+
+	if(this->fsize){
+		/*first, retrieve values that are in the f-set from the g-set values vector: */
+		localvalues=xNew<IssmDouble>(this->fsize);
+		for(i=0;i<this->fsize;i++){
+			localvalues[i]=this->values[this->flocaldoflist[i]];
+		}
+		/*add local values into global  vector, using the fglobaldoflist: */
+		pf->SetValues(this->fsize,this->fglobaldoflist,localvalues,ADD_VAL);
+
+		/*Free ressources:*/
+		xDelete<IssmDouble>(localvalues);
+	}
+
+}
+/*}}}*/
+void ElementVector::CheckConsistency(void){/*{{{*/
+	/*Check element matrix values, only in debugging mode*/
+#ifdef _ISSM_DEBUG_ 
+	for (int i=0;i<this->nrows;i++){
+		if (xIsNan<IssmDouble>(this->values[i])) _error_("NaN found in Element Vector");
+		if (xIsInf<IssmDouble>(this->values[i])) _error_("Inf found in Element Vector");
+		if (fabs( this->values[i])>1.e+50) _error_("Element Vector values exceeds 1.e+50");
+	}
+#endif
+}
+/*}}}*/
+void ElementVector::Echo(void){/*{{{*/
+
+	int i;
+
+	_printf_("Element Vector echo:\n");
+	_printf_("   nrows: " << nrows << "\n");
+	_printf_("   values:\n");
+	for(i=0;i<nrows;i++){
+		_printf_(setw(4) << right << i << ": " << setw(10) << values[i] << "\n");
+	}
+
+	_printf_("   gglobaldoflist (" << gglobaldoflist << "): ");
+	if(gglobaldoflist) for(i=0;i<nrows;i++) _printf_(" " << gglobaldoflist[i] );
+	_printf_(" \n");
+
+	_printf_("   fsize: " << fsize << "\n");
+	_printf_("   flocaldoflist  (" << flocaldoflist << "): ");
+	if(flocaldoflist) for(i=0;i<fsize;i++) _printf_(" " << flocaldoflist[i] );
+	_printf_(" \n");
+	_printf_("   fglobaldoflist (" << fglobaldoflist << "): ");
+	if(fglobaldoflist) for(i=0;i<fsize;i++) _printf_(" " << fglobaldoflist[i] );
+	_printf_(" \n");
+}
+/*}}}*/
+void ElementVector::Init(ElementVector* pe){/*{{{*/
+
+	_assert_(pe);
+
+	this->nrows =pe->nrows;
+
+	this->values=xNew<IssmDouble>(this->nrows);
+	xMemCpy<IssmDouble>(this->values,pe->values,this->nrows);
+
+	this->gglobaldoflist=xNew<int>(this->nrows);
+	xMemCpy<int>(this->gglobaldoflist,pe->gglobaldoflist,this->nrows);
+
+	this->fsize=pe->fsize;
+	if(this->fsize){
+		this->flocaldoflist=xNew<int>(this->fsize);
+		xMemCpy<int>(this->flocaldoflist,pe->flocaldoflist,this->fsize);
+		this->fglobaldoflist=xNew<int>(this->fsize);
+		xMemCpy<int>(this->fglobaldoflist,pe->fglobaldoflist,this->fsize);
+	}
+	else{
+		this->flocaldoflist=NULL;
+		this->fglobaldoflist=NULL;
+	}
+}
+/*}}}*/
+void ElementVector::InsertIntoGlobal(Vector<IssmDouble>* pf){/*{{{*/
+
+	int i;
+	IssmDouble* localvalues=NULL;
+
+	if(this->fsize){
+		/*first, retrieve values that are in the f-set from the g-set values vector: */
+		localvalues=xNew<IssmDouble>(this->fsize);
+		for(i=0;i<this->fsize;i++){
+			localvalues[i]=this->values[this->flocaldoflist[i]];
+		}
+		/*add local values into global  vector, using the fglobaldoflist: */
+		pf->SetValues(this->fsize,this->fglobaldoflist,localvalues,INS_VAL);
+
+		/*Free ressources:*/
+		xDelete<IssmDouble>(localvalues);
+	}
+
+}
+/*}}}*/
+void ElementVector::SetValue(IssmDouble scalar){/*{{{*/
+
+	int i;
+
+	for(i=0;i<this->nrows;i++)this->values[i]=scalar;
+
+}
+/*}}}*/
+void ElementVector::StaticCondensation(ElementMatrix* Ke,int bsize,int* bindices){/*{{{*/
+	/* 
+	 * | Kii  Kib | | Ui |    |Fi|
+	 * | Kbi  Kbb | | Ub |  = |Fb|
+	 *
+	 * Kii Ui + Kib Ub = Fi
+	 * Kbi Ui + Kbb Ub = Fb
+	 *
+	 * We want to remove Ub from the equation:
+	 *
+	 * Kii Ui + Kib inv(Kbb) (Fb - Kbi Ui) = Fi
+	 *
+	 * which gives:
+	 *
+	 * (Kii - Kib inv(Kbb) Kbi) Ui = Fi - Kib inv(Kbb) Fb
+	 */
+
+	/*Checks in debugging mode*/
+	_assert_(bsize>0 && bsize<this->nrows && this->values && Ke); 
+	_assert_(Ke->nrows==Ke->ncols && this->nrows==Ke->nrows);
+
+	/*Intermediaries*/
+	int         counter,i,j,isize;
+	IssmDouble *Fb          = NULL;
+	IssmDouble *Fi          = NULL;
+	IssmDouble *Kib         = NULL;
+	IssmDouble *Kbb         = NULL;
+	IssmDouble *Kbbinv      = NULL;
+	IssmDouble *Ftemp       = NULL;
+	int        *iindices    = NULL;
+	bool        flag;
+
+	/*Get new sizes and indices*/
+	isize    = this->nrows - bsize;
+	iindices = xNew<int>(isize);
+	counter  = 0;
+	for(i=0;i<this->nrows;i++){
+		flag = true;
+		for(j=0;j<bsize;j++){
+			if(i==bindices[j]){
+				flag = false;
+				break;
+			}
+		}
+		if(flag){
+			_assert_(counter<isize);
+			iindices[counter++] = i;
+		}
+	}
+	_assert_(counter == isize);
+
+	/*Get submatrices*/
+	Kib = xNew<IssmDouble>(isize*bsize);
+	Kbb = xNew<IssmDouble>(bsize*bsize);
+	Fb  = xNew<IssmDouble>(bsize);
+	Fi  = xNew<IssmDouble>(isize);
+	for(i=0;i<isize;i++) for(j=0;j<bsize;j++) Kib[i*bsize+j] = Ke->values[iindices[i]*Ke->ncols + bindices[j]];
+	for(i=0;i<bsize;i++) for(j=0;j<bsize;j++) Kbb[i*bsize+j] = Ke->values[bindices[i]*Ke->ncols + bindices[j]];
+	for(i=0;i<bsize;i++) Fb[i] = this->values[bindices[i]];
+	for(i=0;i<isize;i++) Fi[i] = this->values[iindices[i]];
+
+	/*Invert Kbb*/
+	Kbbinv = xNew<IssmDouble>(bsize*bsize);
+	switch(bsize){
+		case 1:
+			Kbbinv[0] = 1./Kbb[0];
+			break;
+		case 2:
+			Matrix2x2Invert(Kbbinv,Kbb);
+			break;
+		case 3:
+			Matrix3x3Invert(Kbbinv,Kbb);
+			break;
+		default:
+			MatrixInverse(Kbbinv,bsize,bsize,NULL,0,NULL);
+			break;
+	}
+
+	/*Calculate  Kib inv(Kbb) Fb*/
+	Ftemp = xNew<IssmDouble>(isize);
+	TripleMultiply(Kib,isize,bsize,0, Kbbinv,bsize,bsize,0, Fb,bsize,1,0, Ftemp,0);
+
+	/*New Pe*/
+	for(i=0;i<isize;i++) Ftemp[i] = Fi[i] - Ftemp[i];
+
+	/*Update matrix values*/
+	for(i=0;i<this->nrows;i++) this->values[i]=0.;
+	for(i=0;i<isize;i++){
+		this->values[iindices[i]] = Ftemp[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(Kib);
+	xDelete<IssmDouble>(Kbb);
+	xDelete<IssmDouble>(Kbbinv);
+	xDelete<IssmDouble>(Fb);
+	xDelete<IssmDouble>(Fi);
+	xDelete<IssmDouble>(Ftemp);
+	xDelete<int>(iindices);
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/matrix/ElementVector.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/matrix/ElementVector.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/matrix/ElementVector.h	(revision 21239)
@@ -0,0 +1,50 @@
+/*!\file:  ElementVector.h
+ * \brief container for information needed to plug element vector generated by elements 
+ * into the pf global load vector. 
+ * This object will hold the element vector on the g-set, the local as well as global 
+ * dof lists in the f set
+ */ 
+
+#ifndef _ELEMENT_VECTOR_H_
+#define _ELEMENT_VECTOR_H_
+
+/*Headers:*/
+#include "../../datastructures/datastructures.h"
+#include "../../toolkits/toolkits.h"
+#include "../../shared/shared.h"
+class Node;
+template <class doubletype> class Vector;
+class Parameters;
+class ElementMatrix;
+
+class ElementVector{
+
+	public:
+		int         nrows;
+		IssmDouble* values;
+
+		//gset
+		int* gglobaldoflist;
+
+		//fset
+		int  fsize;
+		int* flocaldoflist;
+		int* fglobaldoflist;
+
+		/*ElementVector constructors, destructors*/
+		ElementVector();
+		ElementVector(ElementVector* pe1,ElementVector* pe2);
+		ElementVector(ElementVector* pe1,ElementVector* pe2,ElementVector* pe3);
+		ElementVector(Node** nodes,int numnodes,Parameters* parameters,int approximation=NoneApproximationEnum);
+		~ElementVector();
+
+		/*ElementVector specific routines*/
+		void AddToGlobal(Vector<IssmDouble>* pf);
+		void CheckConsistency(void);
+		void Echo(void);
+		void Init(ElementVector* pe);
+		void InsertIntoGlobal(Vector<IssmDouble>* pf);
+		void SetValue(IssmDouble scalar);
+		void StaticCondensation(ElementMatrix* Ke,int numindices,int* indices);
+};
+#endif //#ifndef _ELEMENT_VECTOR_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/matrix/matrixobjects.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/matrix/matrixobjects.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/classes/matrix/matrixobjects.h	(revision 21239)
@@ -0,0 +1,12 @@
+/* \file matrixobjects.h
+ * \brief: prototype header for all matrix objects.
+ */
+
+#ifndef ALL_MATRIX_OBJECTS_H_
+#define ALL_MATRIX_OBJECTS_H_
+
+/*Numerics:*/
+#include "./ElementMatrix.h"
+#include "./ElementVector.h"
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/AdjointCorePointerFromSolutionEnum.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/AdjointCorePointerFromSolutionEnum.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/AdjointCorePointerFromSolutionEnum.cpp	(revision 21239)
@@ -0,0 +1,49 @@
+/*!\file:  AdjointCorePointerFromSolutionEnum.cpp
+ * \brief: return type of analyses, number of analyses and core solution function.
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void AdjointCorePointerFromSolutionEnum(void (**padjointcore)(FemModel*),int solutiontype){
+
+	/*output: */
+	void (*adjointcore)(FemModel*)=NULL;
+
+	switch(solutiontype){
+
+		case StressbalanceSolutionEnum:
+			adjointcore=&adjointstressbalance_core;
+			break;
+		case SteadystateSolutionEnum:
+			adjointcore=&adjointstressbalance_core;
+			break;
+		case BalancethicknessSolutionEnum:
+			adjointcore=&adjointbalancethickness_core;
+			break;
+		case Balancethickness2SolutionEnum:
+			adjointcore=&adjointbalancethickness2_core;
+			break;
+		case BalancethicknessSoftSolutionEnum:
+			adjointcore=&dummy_core;
+			break;
+		default:
+			_error_("No adjoint has been implemented for solution " << EnumToStringx(solutiontype) << " yet");
+			break;
+	}
+
+	/*Assign output pointer:*/
+	_assert_(padjointcore);
+	*padjointcore=adjointcore;
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/CorePointerFromSolutionEnum.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/CorePointerFromSolutionEnum.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/CorePointerFromSolutionEnum.cpp	(revision 21239)
@@ -0,0 +1,82 @@
+/*!\file:  CorePointerFromSolutionEnum.cpp
+ * \brief: return type of analyses, number of analyses and core solution function.
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void CorePointerFromSolutionEnum(void (**psolutioncore)(FemModel*),Parameters* parameters,int solutiontype){
+
+	/*output: */
+	void (*solutioncore)(FemModel*)=NULL;
+
+	switch(solutiontype){
+
+		case StressbalanceSolutionEnum:
+			solutioncore=&stressbalance_core;
+			break;
+		case SteadystateSolutionEnum:
+			solutioncore=&steadystate_core;
+			break;
+		case ThermalSolutionEnum:
+			solutioncore=&thermal_core;
+			break;
+		case BalancethicknessSolutionEnum:
+			solutioncore=&balancethickness_core;
+			break;
+		case Balancethickness2SolutionEnum:
+			solutioncore=&balancethickness2_core;
+			break;
+		case BalancethicknessSoftSolutionEnum:
+			solutioncore=&dummy_core;
+			break;
+		case BalancevelocitySolutionEnum:
+			solutioncore=&balancevelocity_core;
+			break;
+		case HydrologySolutionEnum:
+			solutioncore=&hydrology_core;
+			break;
+		case SurfaceSlopeSolutionEnum:
+			solutioncore=&surfaceslope_core;
+			break;
+		case BedSlopeSolutionEnum:
+			solutioncore=&bedslope_core;
+			break;
+		case TransientSolutionEnum:
+			solutioncore=&transient_core;
+			break;
+		case MasstransportSolutionEnum:
+			solutioncore=&masstransport_core;
+			break;
+		case SealevelriseSolutionEnum:
+			solutioncore=&sealevelrise_core;
+			break;
+		case GiaSolutionEnum:
+			#if _HAVE_GIA_
+			solutioncore=&gia_core;
+			#else
+			_error_("ISSM not compiled with Gia capability");
+			#endif
+			break;
+		case DamageEvolutionSolutionEnum:
+			solutioncore=&damage_core;
+			break;
+		default:
+			_error_("solution type: " << EnumToStringx(solutiontype) << " not supported yet!");
+			break;
+	}
+
+	/*Assign output pointer:*/
+	_assert_(psolutioncore);
+	*psolutioncore=solutioncore;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/ProcessArguments.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/ProcessArguments.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/ProcessArguments.cpp	(revision 21239)
@@ -0,0 +1,45 @@
+/*!\file:  ProcessArguments.cpp
+ * \brief: process arguments
+ */ 
+
+#include <stdio.h>
+#include <cstring>
+
+#include "../shared/shared.h"
+
+void ProcessArguments(int* solution_type,char** pbinfilename,char** poutbinfilename,char** ptoolkitsfilename,char** plockfilename,char** prestartfilename, char** prootpath, int argc,char **argv){
+
+	/*Check input arguments*/
+	if(argc<2) _error_("Usage error: no solution requested");
+	if(argc<3) _error_("Usage error: missing execution directory");
+	if(argc<4) _error_("Usage error: missing model name");
+
+	/*Get some arguments*/
+	*solution_type = StringToEnumx(argv[1]);
+	char* rootpatharg = argv[2];
+	char* modelname   = argv[3];
+
+	/*Recover myrank and length of string "my_rank" */
+	int my_rank     = IssmComm::GetRank();
+	int rank_length = (my_rank == 0 ? 1 : (int)(log10(static_cast<double>(my_rank))+1)); 
+
+	/*Create rootpath from argument*/
+	char* rootpath = xNew<char>(strlen(rootpatharg)+2); sprintf(rootpath,"%s/",rootpatharg);
+
+	/*Create all file paths*/
+	char* binfilename      = xNew<char>(strlen(rootpath)+strlen(modelname)+strlen(".bin")      +1); sprintf(binfilename,   "%s%s%s",rootpath,modelname,".bin");
+	char* outbinfilename   = xNew<char>(strlen(rootpath)+strlen(modelname)+strlen(".outbin")   +1); sprintf(outbinfilename,"%s%s%s",rootpath,modelname,".outbin");
+	char* toolkitsfilename = xNew<char>(strlen(rootpath)+strlen(modelname)+strlen(".toolkits") +1); sprintf(toolkitsfilename,"%s%s%s",rootpath,modelname,".toolkits");
+	char* lockfilename     = xNew<char>(strlen(rootpath)+strlen(modelname)+strlen(".lock")     +1); sprintf(lockfilename,  "%s%s%s",rootpath,modelname,".lock");
+	char* restartfilename  = xNew<char>(strlen(rootpath)+strlen(modelname)+strlen(".rst.")+rank_length+1);
+	sprintf(restartfilename,"%s%s%s%i",rootpath,modelname,".rst.",my_rank);
+
+	/*Clean up and assign output pointer*/
+	*pbinfilename=binfilename;
+	*poutbinfilename=outbinfilename;
+	*ptoolkitsfilename=toolkitsfilename;
+	*plockfilename=lockfilename;
+	*prestartfilename=restartfilename;
+	*prootpath=rootpath;
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/ResetBoundaryConditions.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/ResetBoundaryConditions.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/ResetBoundaryConditions.cpp	(revision 21239)
@@ -0,0 +1,27 @@
+/*!\file: ResetBoundaryConditions.cpp
+ * \brief: change boundary conditions of a model, using a solution vector from another analysis
+ */ 
+
+#include "../classes/classes.h"
+#include "../modules/modules.h"
+#include "../shared/io/io.h"
+
+void ResetBoundaryConditions(FemModel* femmodel, int analysis_type){
+
+	/*variables: */
+	Vector<IssmDouble>* yg = NULL;
+
+	if(VerboseSolution()) _printf0_("   updating boundary conditions...\n");
+
+	/*set current analysis: */
+	femmodel->SetCurrentConfiguration(analysis_type);
+
+	/*retrieve boundary conditions from element inputs :*/
+	GetSolutionFromInputsx(&yg,femmodel);
+
+	/*update spcs using this new vector of constraints: */
+	UpdateDynamicConstraintsx(femmodel->constraints,femmodel->nodes,femmodel->parameters,yg);
+
+	/*Free ressources:*/
+	delete yg;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/WrapperCorePointerFromSolutionEnum.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/WrapperCorePointerFromSolutionEnum.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/WrapperCorePointerFromSolutionEnum.cpp	(revision 21239)
@@ -0,0 +1,59 @@
+/*!\file:  WrapperCorePointerFromSolutionEnum.cpp
+ * \brief: return type of analyses, number of analyses and core solution function.
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void WrapperCorePointerFromSolutionEnum(void (**psolutioncore)(FemModel*),Parameters* parameters,int solutiontype,bool nodakotacore){
+
+	/*output: */
+	void (*solutioncore)(FemModel*)=NULL;
+
+	/*parameters: */
+	bool control_analysis;
+	bool dakota_analysis;
+	int  inversiontype;
+
+	/* retrieve some parameters that tell us whether wrappers are allowed, or whether we return 
+	 * a pure core. Wrappers can be dakota_core (which samples many solution_cores) or control_core (which 
+	 * carries out adjoint based inversion on a certain core: */
+	parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
+	parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+	parameters->FindParam(&inversiontype,InversionTypeEnum);
+
+	if(nodakotacore)dakota_analysis=false;
+
+	if(dakota_analysis){
+		#ifdef _HAVE_DAKOTA_
+		solutioncore=dakota_core;
+		#else
+		_error_("ISSM was not compiled with dakota support, cannot carry out dakota analysis!");
+		#endif
+	}
+	else if(control_analysis){
+		switch(inversiontype){
+			case 0: solutioncore=control_core; break;
+			case 1: solutioncore=controltao_core; break;
+			case 2: solutioncore=controlm1qn3_core; break;
+			case 3: solutioncore=controlvalidation_core; break;
+			case 4: solutioncore=controlad_core; break;
+			default: _error_("control type not supported");
+		}
+	}
+	else CorePointerFromSolutionEnum(&solutioncore,parameters,solutiontype);  /*This means we retrieve a core solution that is not a wrapper*/
+
+	/*Assign output pointer:*/
+	_assert_(psolutioncore);
+	*psolutioncore=solutioncore;
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/ad_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/ad_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/ad_core.cpp	(revision 21239)
@@ -0,0 +1,329 @@
+/*!\file ad_core
+ * \brief: compute outputs from the AD mode,  using our dependents and independents, and drivers available in Adolc.
+ */
+
+/*Includes: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <set>
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+/*}}}*/
+
+void ad_core(FemModel* femmodel){
+
+	/*diverse: */
+	int     i;
+	int     dummy;
+	int     num_dependents=0;
+	int     num_independents=0;
+	bool    isautodiff       = false;
+	char   *driver           = NULL;
+	size_t  tape_stats[15];
+
+	/*state variables: */
+	IssmDouble *axp = NULL;
+	double     *xp  = NULL;
+	int my_rank=IssmComm::GetRank();
+
+	/*AD mode on?: */
+	femmodel->parameters->FindParam(&isautodiff,AutodiffIsautodiffEnum);
+
+	if(isautodiff){
+
+		#ifdef _HAVE_ADOLC_
+			if(VerboseAutodiff())_printf0_("   start ad core\n");
+
+			/*First, stop tracing: */
+			trace_off();
+			
+			/*Print tape statistics so that user can kill this run if something is off already:*/
+			if(VerboseAutodiff()){ /*{{{*/
+				tapestats(my_rank,tape_stats); //reading of tape statistics
+				int commSize=IssmComm::GetSize();
+				int *sstats=new int[7];
+				sstats[0]=tape_stats[NUM_OPERATIONS];
+				sstats[1]=tape_stats[OP_FILE_ACCESS];
+				sstats[2]=tape_stats[NUM_LOCATIONS];
+				sstats[3]=tape_stats[LOC_FILE_ACCESS];
+				sstats[4]=tape_stats[NUM_VALUES];
+				sstats[5]=tape_stats[VAL_FILE_ACCESS];
+				sstats[6]=tape_stats[TAY_STACK_SIZE];
+				int *rstats=NULL;
+				if (my_rank==0) rstats=new int[commSize*7];
+				ISSM_MPI_Gather(sstats,7,ISSM_MPI_INT,rstats,7,ISSM_MPI_INT,0,IssmComm::GetComm());
+				if (my_rank==0) {
+					int offset=50;
+					int rOffset=(commSize/10)+1;
+					_printf_("   ADOLC statistics: \n");
+					_printf_("     "<<setw(offset)<<left<<"#independents: " <<setw(12)<<right<<tape_stats[NUM_INDEPENDENTS] << "\n");
+					_printf_("     "<<setw(offset)<<left<<"#dependents: " <<setw(12)<<right<<tape_stats[NUM_DEPENDENTS] << "\n");
+					_printf_("     "<<setw(offset)<<left<<"max #live active variables: " <<setw(12)<<right<<tape_stats[NUM_MAX_LIVES] << "\n");
+					_printf_("     operations: entry size "<< sizeof(unsigned char) << " Bytes \n");
+					_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffObufsizeEnum) " <<setw(12)<<right<<tape_stats[OP_BUFFER_SIZE] << "\n");
+					for (int r=0;r<commSize;++r)
+					_printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+0] << (rstats[r*7+1]?" ->file":"") << "\n");
+					_printf_("     locations: entry size " << sizeof(locint) << " Bytes\n");
+					_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffLbufsizeEnum) " <<setw(12)<<right<<tape_stats[LOC_BUFFER_SIZE] << "\n");
+					for (int r=0;r<commSize;++r)
+					_printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+2] << (rstats[r*7+3]?" ->file":"") << "\n");
+					_printf_("     constant values: entry size " << sizeof(double) << " Bytes\n");
+					_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffCbufsizeEnum) " <<setw(12)<<right<<tape_stats[VAL_BUFFER_SIZE] << "\n");
+					for (int r=0;r<commSize;++r)
+					_printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+4] << (rstats[r*7+5]?" ->file":"") << "\n");
+					_printf_("     Taylor stack: entry size " << sizeof(revreal) << " Bytes\n");
+					_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffTbufsizeEnum) " <<setw(12)<<right<<tape_stats[TAY_BUFFER_SIZE] << "\n");
+					for (int r=0;r<commSize;++r)
+					_printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+6] << (rstats[r*7+6]>tape_stats[TAY_BUFFER_SIZE]?" ->file":"") << "\n");
+					delete []rstats;
+				}
+				delete [] sstats;
+			} /*}}}*/
+
+			/*retrieve parameters: */
+			femmodel->parameters->FindParam(&num_dependents,AutodiffNumDependentsEnum);
+			femmodel->parameters->FindParam(&num_independents,AutodiffNumIndependentsEnum);
+	
+			/*if no dependents, no point in running a driver: */
+			if(!(num_dependents*num_independents)) return;
+
+			/*for adolc to run in parallel, we 0 out on rank~=0:*/
+			if (my_rank!=0){
+				num_dependents=0; num_independents=0;
+			}
+			
+			/*retrieve state variable: */
+			femmodel->parameters->FindParam(&axp,&dummy,AutodiffXpEnum);
+
+			/* driver argument */
+			xp=xNew<double>(num_independents);
+			for(i=0;i<num_independents;i++){
+				xp[i]=reCast<double,IssmDouble>(axp[i]);
+			}
+
+			/*get the EDF pointer:*/
+			ext_diff_fct *anEDF_for_solverx_p=xDynamicCast<GenericParam<Adolc_edf> * >(femmodel->parameters->FindParamObject(AdolcParamEnum))->GetParameterValue().myEDF_for_solverx_p;
+
+			/*Branch according to AD driver: */
+			femmodel->parameters->FindParam(&driver,AutodiffDriverEnum);
+
+
+			if (strcmp(driver,"fos_forward")==0){ /*{{{*/
+
+				int     anIndepIndex;
+				double *tangentDir         = NULL;
+				double *jacTimesTangentDir = NULL;
+				double *theOutput          = NULL;
+
+				/*retrieve direction index: */
+				femmodel->parameters->FindParam(&anIndepIndex,AutodiffFosForwardIndexEnum);
+
+				if (anIndepIndex<0 || anIndepIndex>=num_independents) _error_("index value for AutodiffFosForwardIndexEnum should be in [0,num_independents-1]");
+
+				tangentDir=xNewZeroInit<double>(num_independents);
+				tangentDir[anIndepIndex]=1.0;
+
+				jacTimesTangentDir=xNew<double>(num_dependents);
+				theOutput=xNew<double>(num_dependents);
+
+				/*set the forward method function pointer: */
+#ifdef _HAVE_GSL_
+				anEDF_for_solverx_p->fos_forward=EDF_fos_forward_for_solverx;
+#endif
+
+
+				/*call driver: */
+				fos_forward(my_rank,num_dependents,num_independents, 0, xp, tangentDir, theOutput, jacTimesTangentDir );
+
+				/*add to results*/
+				femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,jacTimesTangentDir,num_dependents,1,0,0.0));
+
+				/*free resources :*/
+				xDelete(theOutput);
+				xDelete(jacTimesTangentDir);
+				xDelete(tangentDir);
+			} /*}}}*/
+			else if ((strcmp(driver,"fov_forward")==0) || (strcmp(driver,"fov_forward_all")==0)){ /*{{{*/
+
+				int      tangentDirNum;
+				int      dummy;
+				int     *indepIndices  = NULL;
+				double **jacTimesSeed  = NULL;
+				double **seed          = NULL;
+				double  *theOutput     = NULL;
+				std::set<unsigned int> anIndexSet;
+
+				/*retrieve directions:*/
+				if (strcmp(driver,"fov_forward_all")==0){
+					tangentDirNum=num_independents;
+					indepIndices=xNewZeroInit<int>(tangentDirNum);
+					for(i=0;i<num_independents;i++)indepIndices[i]=1;
+				}
+				else{
+					femmodel->parameters->FindParam(&indepIndices,&tangentDirNum,&dummy,AutodiffFovForwardIndicesEnum);
+				}
+
+				/*Some checks: */
+				if (tangentDirNum<1 || tangentDirNum>num_independents) _error_("tangentDirNum should be in [1,num_independents]");
+
+				/* full Jacobian or Jacobian projection:*/
+				jacTimesSeed=xNew<double>(num_dependents,tangentDirNum);
+
+				/*set the forward method function pointers: */
+#ifdef _HAVE_GSL_
+				anEDF_for_solverx_p->fov_forward=EDF_fov_forward_for_solverx;
+#endif
+				// anEDF_for_solverx_p->fov_reverse=EDF_fov_reverse_for_solverx;
+
+
+				/*seed matrix: */
+				seed=xNewZeroInit<double>(num_independents,tangentDirNum);
+
+				/*collect indices in a set to prevent accidental duplicates as long as we don't do compression:*/
+				for (int i=0; i<tangentDirNum; ++i) {
+					/* make sure the index is in range*/
+					if (indepIndices[i]>num_independents) {
+						_error_("indepIndices values must be in [0,num_independents-1]");
+					}
+					if (anIndexSet.find(indepIndices[i])!=anIndexSet.end()) {
+						_error_("duplicate indepIndices values are not allowed until we implement Jacobian decompression");
+					}
+					anIndexSet.insert(indepIndices[i]);
+					/* now populate the seed matrix from the set of independent indices;
+					 * simple setup with a single 1.0 per column and at most a single 1.0 per row*/
+					seed[indepIndices[i]][i]=1.0;
+				}
+
+				/*allocate output: */
+				theOutput=xNew<double>(num_dependents);
+
+				/*call driver: */
+				fov_forward(my_rank,num_dependents,num_independents, tangentDirNum, xp, seed, theOutput, jacTimesSeed );
+				/*Free resources: */
+				xDelete(theOutput);
+				xDelete(indepIndices);
+				xDelete(seed);
+
+				/*add to results: */
+				femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,*jacTimesSeed,num_dependents*tangentDirNum,1,0,0.0));
+
+				/*Free resources: */
+				xDelete(jacTimesSeed);
+				xDelete(indepIndices);
+			} /*}}}*/
+			else if (strcmp(driver,"fos_reverse")==0) { /*{{{*/
+
+				int     aDepIndex=0;
+				double *aWeightVector=NULL;
+				double *weightVectorTimesJac=NULL;
+
+				/*retrieve direction index: */
+				femmodel->parameters->FindParam(&aDepIndex,AutodiffFosReverseIndexEnum);
+				aWeightVector=xNewZeroInit<double>(num_dependents);
+				if (my_rank==0) {
+					if (aDepIndex<0 || aDepIndex>=num_dependents) _error_("index value for AutodiffFosReverseIndexEnum should be in [0,num_dependents-1]");
+					aWeightVector[aDepIndex]=1.0;
+				}
+				weightVectorTimesJac=xNew<double>(num_independents);
+
+				/*set the forward method function pointer: */
+#ifdef _HAVE_GSL_
+				anEDF_for_solverx_p->fos_reverse=EDF_fos_reverse_for_solverx;
+#endif
+#ifdef _HAVE_MUMPS_
+				anEDF_for_solverx_p->fos_reverse_iArr=fos_reverse_mumpsSolveEDF;
+#endif
+
+
+				/*call driver: */
+				fos_reverse(my_rank,num_dependents,num_independents, aWeightVector, weightVectorTimesJac );
+
+				/*add to results*/
+				femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,weightVectorTimesJac,num_independents,1,0,0.0));
+
+				/*free resources :*/
+				xDelete(weightVectorTimesJac);
+				xDelete(aWeightVector);
+			} /*}}}*/
+			else if ((strcmp(driver,"fov_reverse")==0) || (strcmp(driver,"fov_reverse_all")==0)){ /*{{{*/
+
+				int* depIndices=NULL;
+				int weightNum;
+				int dummy;
+				double **weightsTimesJac=NULL;
+				double **weights=NULL;
+				std::set<unsigned int> anIndexSet;
+
+				/*retrieve directions:*/
+				if (strcmp(driver,"fov_reverse_all")==0){
+					weightNum=num_dependents;
+					depIndices=xNewZeroInit<int>(weightNum);
+					for(i=0;i<num_dependents;i++)depIndices[i]=1;
+				}
+				else{
+					femmodel->parameters->FindParam(&depIndices,&weightNum,&dummy,AutodiffFovForwardIndicesEnum);
+				}
+
+				/*Some checks: */
+				if (weightNum<1 || weightNum>num_dependents) _error_("tangentDirNum should be in [1,num_dependents]");
+
+				/* full Jacobian or Jacobian projection:*/
+				weightsTimesJac=xNew<double>(weightNum,num_independents);
+
+				/*set the forward method function pointers: */
+				#ifdef _HAVE_GSL_
+				anEDF_for_solverx_p->fov_reverse=EDF_fov_reverse_for_solverx;
+				#endif
+
+
+				/*seed matrix: */
+				weights=xNewZeroInit<double>(weightNum,num_dependents);
+
+				/*collect indices in a set to prevent accidental duplicates as long as we don't do compression:*/
+				for (int i=0; i<weightNum; ++i) {
+					/* make sure the index is in range*/
+					if (depIndices[i]>num_dependents) {
+						_error_("depIndices values must be in [0,num_dependents-1]");
+					}
+					if (anIndexSet.find(depIndices[i])!=anIndexSet.end()) {
+						_error_("duplicate depIndices values are not allowed until we implement Jacobian decompression");
+					}
+					anIndexSet.insert(depIndices[i]);
+					/* now populate the seed matrix from the set of independent indices;
+					 * simple setup with a single 1.0 per column and at most a single 1.0 per row*/
+					weights[depIndices[i]][i]=1.0;
+				}
+
+				/*call driver: */
+				fov_reverse(my_rank,num_dependents,num_independents, weightNum, weights, weightsTimesJac );
+
+				/*add to results: */
+				femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,*weightsTimesJac,weightNum*num_independents,1,0,0.0));
+
+				/*Free resources: */
+				xDelete(weights);
+				xDelete(weightsTimesJac);
+				xDelete(depIndices);
+			} /*}}}*/
+			else _error_("driver: " << driver << " not yet supported!");
+
+
+			if(VerboseAutodiff())_printf0_("   end AD core\n");
+
+			/*Free resources: */
+			xDelete(xp);
+			xDelete(axp); 
+			xDelete(driver);
+		#else
+			_error_("Should not be requesting AD drivers when an AD library is not available!");
+		#endif
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/adgradient_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/adgradient_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/adgradient_core.cpp	(revision 21239)
@@ -0,0 +1,188 @@
+/*!\file adgradient_core
+ * \brief: compute gradient for all scalar depenendents, then sum them up as output. This relies mainly on the fos_reverse 
+ * driver, hence the incapacity to merge this with ad_core.cpp.
+ */
+
+/*Includes: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <set>
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+/*}}}*/
+
+void adgradient_core(FemModel* femmodel){
+
+	/*diverse: */
+	int     i;
+	int     dummy;
+	int     num_dependents=0;
+	int     num_dependents_old=0;
+	int     num_independents=0;
+	bool    isautodiff       = false;
+	int     aDepIndex=0;
+	int     my_rank=IssmComm::GetRank();
+
+	/*state variables: */
+	IssmDouble *axp = NULL;
+	IssmPDouble     *xp  = NULL;
+
+	/*intermediary: */
+	IssmPDouble *aWeightVector=NULL;
+	IssmPDouble *weightVectorTimesJac=NULL;
+	
+	/*output: */
+	IssmPDouble *totalgradient=NULL;
+
+	/*AD mode on?: */
+	femmodel->parameters->FindParam(&isautodiff,AutodiffIsautodiffEnum);
+
+	if(isautodiff){
+
+		#ifdef _HAVE_ADOLC_
+			if(VerboseAutodiff())_printf0_("   start ad core\n"); 
+
+			/*First, stop tracing: */
+			trace_off();
+			
+			if(VerboseAutodiff()){ /*{{{*/
+				size_t  tape_stats[15];
+				tapestats(my_rank,tape_stats); //reading of tape statistics
+				int commSize=IssmComm::GetSize();
+				int *sstats=new int[7];
+				sstats[0]=tape_stats[NUM_OPERATIONS];
+				sstats[1]=tape_stats[OP_FILE_ACCESS];
+				sstats[2]=tape_stats[NUM_LOCATIONS];
+				sstats[3]=tape_stats[LOC_FILE_ACCESS];
+				sstats[4]=tape_stats[NUM_VALUES];
+				sstats[5]=tape_stats[VAL_FILE_ACCESS];
+				sstats[6]=tape_stats[TAY_STACK_SIZE];
+				int *rstats=NULL;
+				if (my_rank==0) rstats=new int[commSize*7];
+				ISSM_MPI_Gather(sstats,7,ISSM_MPI_INT,rstats,7,ISSM_MPI_INT,0,IssmComm::GetComm());
+				if (my_rank==0) {
+					int offset=50;
+					int rOffset=(commSize/10)+1;
+					_printf_("   ADOLC statistics: \n");
+					_printf_("     "<<setw(offset)<<left<<"#independents: " <<setw(12)<<right<<tape_stats[NUM_INDEPENDENTS] << "\n");
+					_printf_("     "<<setw(offset)<<left<<"#dependents: " <<setw(12)<<right<<tape_stats[NUM_DEPENDENTS] << "\n");
+					_printf_("     "<<setw(offset)<<left<<"max #live active variables: " <<setw(12)<<right<<tape_stats[NUM_MAX_LIVES] << "\n");
+					_printf_("     operations: entry size "<< sizeof(unsigned char) << " Bytes \n");
+					_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffObufsizeEnum) " <<setw(12)<<right<<tape_stats[OP_BUFFER_SIZE] << "\n");
+					for (int r=0;r<commSize;++r)
+					_printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+0] << (rstats[r*7+1]?" ->file":"") << "\n");
+					_printf_("     locations: entry size " << sizeof(locint) << " Bytes\n");
+					_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffLbufsizeEnum) " <<setw(12)<<right<<tape_stats[LOC_BUFFER_SIZE] << "\n");
+					for (int r=0;r<commSize;++r)
+					_printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+2] << (rstats[r*7+3]?" ->file":"") << "\n");
+					_printf_("     constant values: entry size " << sizeof(double) << " Bytes\n");
+					_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffCbufsizeEnum) " <<setw(12)<<right<<tape_stats[VAL_BUFFER_SIZE] << "\n");
+					for (int r=0;r<commSize;++r)
+					_printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+4] << (rstats[r*7+5]?" ->file":"") << "\n");
+					_printf_("     Taylor stack: entry size " << sizeof(revreal) << " Bytes\n");
+					_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffTbufsizeEnum) " <<setw(12)<<right<<tape_stats[TAY_BUFFER_SIZE] << "\n");
+					for (int r=0;r<commSize;++r)
+					_printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+6] << (rstats[r*7+6]>tape_stats[TAY_BUFFER_SIZE]?" ->file":"") << "\n");
+					delete []rstats;
+			}
+			delete [] sstats;
+		} /*}}}*/
+		
+			/*retrieve parameters: */
+			femmodel->parameters->FindParam(&num_dependents,AutodiffNumDependentsEnum);
+			femmodel->parameters->FindParam(&num_independents,AutodiffNumIndependentsEnum);
+			
+			/*if no dependents, no point in running a driver: */
+			if(!(num_dependents*num_independents)) return;
+
+			/*for adolc to run in parallel, we 0 out on rank~=0. But we still keep track of num_dependents:*/
+			num_dependents_old=num_dependents;
+			if (my_rank!=0){
+				num_dependents=0; num_independents=0;
+			}
+			
+			/*retrieve state variable: */
+			femmodel->parameters->FindParam(&axp,&dummy,AutodiffXpEnum);
+			
+			/* driver argument */
+			xp=xNew<double>(num_independents);
+			for(i=0;i<num_independents;i++){
+				xp[i]=reCast<double,IssmDouble>(axp[i]);
+			}
+
+			/*get the EDF pointer:*/
+			ext_diff_fct *anEDF_for_solverx_p=xDynamicCast<GenericParam<Adolc_edf> * >(femmodel->parameters->FindParamObject(AdolcParamEnum))->GetParameterValue().myEDF_for_solverx_p;
+
+			/* these are always needed regardless of the interpreter */
+			anEDF_for_solverx_p->dp_x=xNew<double>(anEDF_for_solverx_p->max_n);
+			anEDF_for_solverx_p->dp_y=xNew<double>(anEDF_for_solverx_p->max_m);
+
+			/* Ok, now we are going to call the fos_reverse in a loop on the index, from 0 to num_dependents, so 
+			 * as to generate num_dependents gradients: */
+
+			/*Initialize outputs: */
+			totalgradient=xNewZeroInit<IssmPDouble>(num_independents);
+			
+			for(aDepIndex=0;aDepIndex<num_dependents_old;aDepIndex++){
+
+				/*initialize direction index in the weights vector: */
+				aWeightVector=xNewZeroInit<IssmPDouble>(num_dependents);
+				if (my_rank==0) aWeightVector[aDepIndex]=1.0;
+				
+				/*initialize output gradient: */
+				weightVectorTimesJac=xNew<IssmPDouble>(num_independents);
+
+				/*set the forward method function pointer: */
+				#ifdef _HAVE_GSL_
+				anEDF_for_solverx_p->fos_reverse=EDF_fos_reverse_for_solverx;
+				#endif
+				#ifdef _HAVE_MUMPS_
+				anEDF_for_solverx_p->fos_reverse_iArr=fos_reverse_mumpsSolveEDF;
+				#endif
+
+				anEDF_for_solverx_p->dp_U=xNew<IssmPDouble>(anEDF_for_solverx_p->max_m);
+				anEDF_for_solverx_p->dp_Z=xNew<IssmPDouble>(anEDF_for_solverx_p->max_n);
+
+				/*call driver: */
+				fos_reverse(my_rank,num_dependents,num_independents, aWeightVector, weightVectorTimesJac );
+
+				/*Add to totalgradient: */
+				if(my_rank==0)for(i=0;i<num_independents;i++)totalgradient[i]+=weightVectorTimesJac[i];
+
+				/*free resources :*/
+				xDelete(weightVectorTimesJac);
+				xDelete(aWeightVector);
+			}
+		
+			/*add totalgradient to results*/
+			femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,totalgradient,num_independents,1,1,0.0));
+
+			if(VerboseAutodiff())_printf0_("   end ad core\n");
+			
+			/* delete the allocated space for the parameters and free ressources:{{{*/
+			xDelete(anEDF_for_solverx_p->dp_x);
+			xDelete(anEDF_for_solverx_p->dp_X);
+			xDelete(anEDF_for_solverx_p->dpp_X);
+			xDelete(anEDF_for_solverx_p->dp_y);
+			xDelete(anEDF_for_solverx_p->dp_Y);
+			xDelete(anEDF_for_solverx_p->dpp_Y);
+			xDelete(anEDF_for_solverx_p->dp_U);
+			xDelete(anEDF_for_solverx_p->dpp_U);
+			xDelete(anEDF_for_solverx_p->dp_Z);
+			xDelete(anEDF_for_solverx_p->dpp_Z);
+			xDelete(xp);
+			xDelete(totalgradient);
+			xDelete(axp); /*}}}*/
+		#else
+			_error_("Should not be requesting AD drivers when an AD library is not available!");
+		#endif
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/adjointbalancethickness2_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/adjointbalancethickness2_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/adjointbalancethickness2_core.cpp	(revision 21239)
@@ -0,0 +1,39 @@
+/*!\file:  adjointbalancethickness2_core.cpp
+ * \brief compute inverse method adjoint state
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void adjointbalancethickness2_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool save_results;
+
+	/*retrieve parameters:*/
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+
+	/*compute thickness2 */
+	if(VerboseSolution()) _printf0_("   computing thickness2\n");
+	femmodel->SetCurrentConfiguration(Balancethickness2AnalysisEnum);
+	solutionsequence_linear(femmodel);
+
+	/*Call SurfaceAreax, because some it might be needed by PVector*/
+	SurfaceAreax(NULL,femmodel);
+
+	/*compute adjoint*/
+	if(VerboseSolution()) _printf0_("   computing adjoint\n");
+	femmodel->SetCurrentConfiguration(Balancethickness2AnalysisEnum,AdjointBalancethickness2AnalysisEnum);
+	solutionsequence_adjoint_linear(femmodel);
+
+	/*Save results*/
+	if(save_results || true){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		int outputs[1] = {AdjointEnum};
+		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],1);
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/adjointbalancethickness_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/adjointbalancethickness_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/adjointbalancethickness_core.cpp	(revision 21239)
@@ -0,0 +1,39 @@
+/*!\file:  adjointbalancethickness_core.cpp
+ * \brief compute inverse method adjoint state
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void adjointbalancethickness_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool save_results;
+
+	/*retrieve parameters:*/
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+
+	/*compute thickness */
+	if(VerboseSolution()) _printf0_("   computing thickness\n");
+	femmodel->SetCurrentConfiguration(BalancethicknessAnalysisEnum);
+	solutionsequence_linear(femmodel);
+
+	/*Call SurfaceAreax, because some it might be needed by PVector*/
+	SurfaceAreax(NULL,femmodel);
+
+	/*compute adjoint*/
+	if(VerboseSolution()) _printf0_("   computing adjoint\n");
+	femmodel->SetCurrentConfiguration(BalancethicknessAnalysisEnum,AdjointBalancethicknessAnalysisEnum);
+	solutionsequence_adjoint_linear(femmodel);
+
+	/*Save results*/
+	if(save_results){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		int outputs[1] = {AdjointEnum};
+		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],1);
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/adjointstressbalance_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/adjointstressbalance_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/adjointstressbalance_core.cpp	(revision 21239)
@@ -0,0 +1,67 @@
+/*!\file:  adjointstressbalance_core.cpp
+ * \brief compute inverse method adjoint state
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void adjointstressbalance_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool isFS;
+	bool save_results;
+	bool conserve_loads   = true;
+	int fe_FS;
+
+	/*retrieve parameters:*/
+	femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&fe_FS,FlowequationFeFSEnum);
+
+	/*Compute velocities*/
+	if(VerboseSolution()) _printf0_("   computing velocities\n");
+	femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+
+	if(VerboseSolution()) _printf0_("   computing velocities\n");
+	femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+	if(isFS){
+		if (fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum)
+		 solutionsequence_la(femmodel);
+		else
+		 solutionsequence_nonlinear(femmodel,conserve_loads); 
+	}
+	else{
+		solutionsequence_nonlinear(femmodel,conserve_loads); 
+	}
+
+	/*Call SurfaceAreax, because some it might be needed by PVector*/
+	SurfaceAreax(NULL,femmodel);
+
+	/*Compute adjoint*/
+	if(VerboseSolution()) _printf0_("   computing adjoint\n");
+	femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum,AdjointHorizAnalysisEnum);
+	solutionsequence_adjoint_linear(femmodel);
+
+	/*Save results*/
+	if(save_results || true){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		if(isFS){
+			if(fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum){
+				int outputs[2] = {AdjointxEnum,AdjointyEnum};
+				femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
+			}
+			else{
+				int outputs[3] = {AdjointxEnum,AdjointyEnum,AdjointpEnum};
+				femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3);
+			}
+		}
+		else{
+			int outputs[2] = {AdjointxEnum,AdjointyEnum};
+			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
+		}
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/balancethickness2_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/balancethickness2_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/balancethickness2_core.cpp	(revision 21239)
@@ -0,0 +1,44 @@
+/*!\file: balancethickness_core.cpp
+ * \brief: core of the balancethickness solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void balancethickness2_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool        save_results;
+	IssmDouble  l = 3.;
+
+	/*recover parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+
+	if(VerboseSolution()) _printf0_("computing smooth surface slopes:\n");
+	//femmodel->parameters->SetParam(l,SmoothThicknessMultiplierEnum);
+	//femmodel->SetCurrentConfiguration(SmoothAnalysisEnum);
+	//femmodel->parameters->SetParam(SurfaceSlopeXEnum,InputToSmoothEnum);
+	//solutionsequence_linear(femmodel);
+	//femmodel->parameters->SetParam(SurfaceSlopeYEnum,InputToSmoothEnum);
+	//solutionsequence_linear(femmodel);
+	surfaceslope_core(femmodel);
+
+	if(VerboseSolution()) _printf0_("call computational core:\n");
+	femmodel->SetCurrentConfiguration(Balancethickness2AnalysisEnum);
+	solutionsequence_linear(femmodel);
+	//solutionsequence_nonlinear(femmodel,false);
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		const int numoutputs = 6;
+		int outputs[numoutputs] = {SurfaceEnum,SurfaceSlopeXEnum,SurfaceSlopeYEnum,VxEnum,VyEnum,VelEnum};
+		//const int numoutputs = 4;
+		//int outputs[numoutputs] = {SurfaceEnum,VxEnum,VyEnum,VelEnum};
+		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],numoutputs);
+	}
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/balancethickness_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/balancethickness_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/balancethickness_core.cpp	(revision 21239)
@@ -0,0 +1,32 @@
+/*!\file: balancethickness_core.cpp
+ * \brief: core of the balancethickness solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void balancethickness_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool save_results;
+
+	/*activate formulation: */
+	femmodel->SetCurrentConfiguration(BalancethicknessAnalysisEnum);
+
+	/*recover parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+
+	if(VerboseSolution()) _printf0_("call computational core:\n");
+	solutionsequence_linear(femmodel);
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		int outputs = ThicknessEnum;
+		femmodel->RequestedOutputsx(&femmodel->results,&outputs,1);
+	}
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/balancevelocity_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/balancevelocity_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/balancevelocity_core.cpp	(revision 21239)
@@ -0,0 +1,39 @@
+/*!\file: balancevelocity_core.cpp
+ * \brief: core of the balancevelocity solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void balancevelocity_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool        save_results;
+	IssmDouble  l = 8.;
+
+	/*recover parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+
+	if(VerboseSolution()) _printf0_("computing smooth driving stress:\n");
+	femmodel->parameters->SetParam(l,SmoothThicknessMultiplierEnum);
+	femmodel->SetCurrentConfiguration(SmoothAnalysisEnum);
+	femmodel->parameters->SetParam(DrivingStressXEnum,InputToSmoothEnum);
+	solutionsequence_linear(femmodel);
+	femmodel->parameters->SetParam(DrivingStressYEnum,InputToSmoothEnum);
+	solutionsequence_linear(femmodel);
+
+	if(VerboseSolution()) _printf0_("call computational core:\n");
+	femmodel->SetCurrentConfiguration(BalancevelocityAnalysisEnum);
+	solutionsequence_linear(femmodel);
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		int outputs[3] = {DrivingStressXEnum,DrivingStressYEnum,VelEnum};
+		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3);
+	}
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/bedslope_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/bedslope_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/bedslope_core.cpp	(revision 21239)
@@ -0,0 +1,47 @@
+/*!\file: bedslope_core.cpp
+ * \brief: core of the slope solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void bedslope_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool save_results;
+	int  domaintype;
+
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+
+	if(VerboseSolution()) _printf0_("   computing slope\n");
+
+	/*Call on core computations: */
+	femmodel->SetCurrentConfiguration(L2ProjectionBaseAnalysisEnum);
+
+	femmodel->parameters->SetParam(BedSlopeXEnum,InputToL2ProjectEnum);
+	solutionsequence_linear(femmodel);
+
+	if(domaintype!=Domain2DverticalEnum){
+		femmodel->parameters->SetParam(BedSlopeYEnum,InputToL2ProjectEnum);
+		solutionsequence_linear(femmodel);
+	}
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		if(domaintype!=Domain2DverticalEnum){
+			int outputs[2] = {BedSlopeXEnum,BedSlopeYEnum};
+			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
+		}
+		else{
+			int outputs[1] = {BedSlopeXEnum};
+			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],1);
+		}
+	}
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/control_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/control_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/control_core.cpp	(revision 21239)
@@ -0,0 +1,265 @@
+/*!\file: control_core.cpp
+ * \brief: core of the control solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+/*Local prototypes*/
+/*{{{*/
+IssmDouble FormFunction(IssmDouble* X,void* usr);
+IssmDouble FormFunctionGradient(IssmDouble** pG,IssmDouble* X,void* usr);
+typedef struct {
+	FemModel* femmodel;
+	int       nsize;
+} AppCtx;
+/*}}}*/
+
+void control_core(FemModel* femmodel){/*{{{*/
+
+	/*parameters: */
+	int         num_controls,nsize,nsteps;
+	int         solution_type;
+	bool        isFS,dakota_analysis;
+	int        *control_type  = NULL;
+	int        *maxiter       = NULL;
+	IssmDouble *cm_jump       = NULL;
+	IssmDouble *J             = NULL;
+
+	/*Solution and Adjoint core pointer*/
+	void (*solutioncore)(FemModel*) = NULL;
+	void (*adjointcore)(FemModel*)  = NULL;
+
+	/*Recover parameters used throughout the solution*/
+	femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	femmodel->parameters->FindParam(&control_type,NULL,InversionControlParametersEnum);
+	femmodel->parameters->FindParam(&nsteps,InversionNstepsEnum);
+	femmodel->parameters->FindParam(&maxiter,NULL,InversionMaxiterPerStepEnum);
+	femmodel->parameters->FindParam(&cm_jump,NULL,InversionStepThresholdEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
+	femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
+	femmodel->parameters->SetParam(false,SaveResultsEnum);
+
+	/*out of solution_type, figure out solution core and adjoint function pointer*/
+	CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
+	AdjointCorePointerFromSolutionEnum(&adjointcore,solution_type);
+
+	/*Launch once a complete solution to set up all inputs*/
+	if(VerboseControl()) _printf0_("   preparing initial solution\n");
+	if(isFS) solutioncore(femmodel);
+
+	/*Get initial guess*/
+	Vector<IssmDouble> *Xpetsc = NULL;
+	GetVectorFromControlInputsx(&Xpetsc,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"value");
+	IssmDouble* X0 = Xpetsc->ToMPISerial();
+	Xpetsc->GetSize(&nsize);
+	delete Xpetsc;
+
+	/*Initialize some of the BrentSearch arguments: */
+	OptPars optpars;
+	optpars.xmin    = 0; 
+	optpars.xmax    = 1;
+	optpars.nsteps  = nsteps;
+	optpars.nsize   = nsize;
+	optpars.maxiter = maxiter;
+	optpars.cm_jump = cm_jump;
+
+	/*Initialize function argument*/
+	AppCtx usr;
+	usr.femmodel = femmodel;
+	usr.nsize    = nsize;
+
+	/*Call Brent optimization*/
+	BrentSearch(&J,optpars,X0,&FormFunction,&FormFunctionGradient,(void*)&usr);
+
+	if(VerboseControl()) _printf0_("   preparing final solution\n");
+	IssmDouble  *XL = NULL;
+	IssmDouble  *XU = NULL;
+	GetVectorFromControlInputsx(&XL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"lowerbound");
+	GetVectorFromControlInputsx(&XU,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"upperbound");
+	for(long i=0;i<nsize;i++){
+		if(X0[i]>XU[i]) X0[i]=XU[i];
+		if(X0[i]<XL[i]) X0[i]=XL[i];
+	}
+	xDelete<IssmDouble>(XU);
+	xDelete<IssmDouble>(XL);
+	SetControlInputsFromVectorx(femmodel,X0);
+	femmodel->parameters->SetParam(true,SaveResultsEnum);
+	solutioncore(femmodel);
+
+	/*some results not computed by steadystate_core or stressbalance_core: */
+	if(!dakota_analysis){ //do not save this if we are running the control core from a qmu run!
+		femmodel->OutputControlsx(&femmodel->results);
+
+		#ifdef _HAVE_ADOLC_
+		IssmPDouble* J_passive=xNew<IssmPDouble>(nsteps);
+		for(int i=0;i<nsteps;i++) J_passive[i]=reCast<IssmPDouble>(J[i]);
+		femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,J_passive,nsteps,1,0,0));
+		xDelete<IssmPDouble>(J_passive);
+		#else
+		femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,J,nsteps,1,0,0));
+		#endif
+	}
+
+	/*Free ressources: */
+	xDelete<int>(control_type);
+	xDelete<int>(maxiter);
+	xDelete<IssmDouble>(cm_jump);
+	xDelete<IssmDouble>(J);
+	xDelete<IssmDouble>(X0);
+}/*}}}*/
+IssmDouble FormFunction(IssmDouble* X,void* usrvoid){/*{{{*/
+
+	/*output: */
+	IssmDouble J;
+
+	/*parameters: */
+	int        solution_type,analysis_type,num_responses;
+	bool       conserve_loads = true;
+	AppCtx*    usr = (AppCtx*)usrvoid;
+	FemModel  *femmodel  = usr->femmodel;
+	int        nsize     = usr->nsize;
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+
+	/*Constrain input vector*/
+	IssmDouble  *XL = NULL;
+	IssmDouble  *XU = NULL;
+	GetVectorFromControlInputsx(&XL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"lowerbound");
+	GetVectorFromControlInputsx(&XU,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"upperbound");
+	for(long i=0;i<nsize;i++){
+		if(X[i]>XU[i]) X[i]=XU[i];
+		if(X[i]<XL[i]) X[i]=XL[i];
+	}
+
+	/*Update control input*/
+	SetControlInputsFromVectorx(femmodel,X);
+
+	/*solve forward: */
+	switch(solution_type){
+		case SteadystateSolutionEnum:
+			femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+			stressbalance_core(femmodel);	//We need a 3D velocity!! (vz is required for the next thermal run)
+			break;
+		case StressbalanceSolutionEnum:
+			femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+			solutionsequence_nonlinear(femmodel,conserve_loads); 
+			break;
+		case BalancethicknessSolutionEnum:
+			femmodel->SetCurrentConfiguration(BalancethicknessAnalysisEnum);
+			solutionsequence_linear(femmodel); 
+			break;
+		case BalancethicknessSoftSolutionEnum:
+			/*NOTHING*/
+			break;
+		case Balancethickness2SolutionEnum:
+			femmodel->SetCurrentConfiguration(Balancethickness2AnalysisEnum);
+			solutionsequence_linear(femmodel); 
+			break;
+		default:
+			_error_("Solution " << EnumToStringx(solution_type) << " not implemented yet");
+	}
+
+	/*Compute misfit for this velocity field.*/
+	IssmDouble* Jlist = NULL;
+	femmodel->CostFunctionx(&J,&Jlist,NULL);
+	_printf0_("f(x) = "<<setw(12)<<setprecision(7)<<J<<"  |  ");
+	for(int i=0;i<num_responses;i++) _printf0_(" "<<setw(12)<<setprecision(7)<<Jlist[i]);
+	_printf0_("\n");
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(XU);
+	xDelete<IssmDouble>(XL);
+	xDelete<IssmDouble>(Jlist);
+	return J;
+}/*}}}*/
+IssmDouble FormFunctionGradient(IssmDouble** pG,IssmDouble* X,void* usrvoid){/*{{{*/
+
+	/*output: */
+	IssmDouble J;
+
+	/*parameters: */
+	void (*adjointcore)(FemModel*)=NULL;
+	int         solution_type,analysis_type,num_responses,num_controls,numvertices;
+	bool        conserve_loads = true;
+	IssmDouble *scalar_list    = NULL;
+	IssmDouble *Jlist          = NULL;
+	IssmDouble *G              = NULL;
+	IssmDouble *norm_list      = NULL;
+	AppCtx     *usr            = (AppCtx*)usrvoid;
+	FemModel   *femmodel       = usr->femmodel;
+	int         nsize          = usr->nsize;
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	femmodel->parameters->FindParam(&scalar_list,NULL,NULL,InversionGradientScalingEnum);
+	femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);   _assert_(num_controls);
+	numvertices=femmodel->vertices->NumberOfVertices();
+
+	/*Constrain input vector*/
+	IssmDouble  *XL = NULL;
+	IssmDouble  *XU = NULL;
+	GetVectorFromControlInputsx(&XL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"lowerbound");
+	GetVectorFromControlInputsx(&XU,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"upperbound");
+	for(long i=0;i<nsize;i++){
+		if(X[i]>XU[i]) X[i]=XU[i];
+		if(X[i]<XL[i]) X[i]=XL[i];
+	}
+
+	/*Update control input*/
+	SetControlInputsFromVectorx(femmodel,X);
+
+	/*Compute new temperature at this point*/
+	if(solution_type==SteadystateSolutionEnum) steadystate_core(femmodel);
+
+	/*Compute Adjoint*/
+	AdjointCorePointerFromSolutionEnum(&adjointcore,solution_type);
+	adjointcore(femmodel);
+
+	/*Compute gradient*/
+	Gradjx(&G,&norm_list,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+
+	/*Compute scaling factor*/
+	IssmDouble scalar = scalar_list[0]/norm_list[0];
+	for(int i=1;i<num_controls;i++) scalar=min(scalar,scalar_list[i]/norm_list[i]);
+
+	/*Constrain Gradient*/
+	for(int i=0;i<num_controls;i++){
+		for(int j=0;j<numvertices;j++){
+			G[i*numvertices+j] = scalar*G[i*numvertices+j];
+		}
+	}
+
+	for(long i=0;i<nsize;i++){
+		if(X[i]>=XU[i]) G[i]=0.;
+		if(X[i]<=XL[i]) G[i]=0.;
+	}
+
+	/*Needed for output results*/
+	ControlInputSetGradientx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,G);
+
+	/*Compute misfit for this velocity field.*/
+	femmodel->CostFunctionx(&J,&Jlist,NULL);
+	_printf0_("f(x) = "<<setw(12)<<setprecision(7)<<J<<"  |  ");
+	for(int i=0;i<num_responses;i++) _printf0_(" "<<setw(12)<<setprecision(7)<<Jlist[i]);
+	_printf0_("\n");
+
+	/*Clean-up and return*/
+	xDelete<IssmDouble>(XU);
+	xDelete<IssmDouble>(XL);
+	xDelete<IssmDouble>(norm_list);
+	xDelete<IssmDouble>(scalar_list);
+	xDelete<IssmDouble>(Jlist);
+	*pG = G;
+	return J;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/controlad_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/controlad_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/controlad_core.cpp	(revision 21239)
@@ -0,0 +1,333 @@
+/*!\file: controlad_core.cpp
+ * \brief: core of the ad control solution 
+ */ 
+
+#include <config.h>
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+#if defined (_HAVE_M1QN3_)  & defined (_HAVE_ADOLC_)
+/*m1qn3 prototypes {{{*/
+extern "C" void *ctonbe_; // DIS mode : Conversion
+extern "C" void *ctcabe_; // DIS mode : Conversion
+extern "C" void *euclid_; // Scalar product
+typedef void (*SimulFunc) (long* indic,long* n, double* x, double* pf,double* g,long [],float [],void* dzs);
+extern "C" void m1qn3_ (void f(long* indic,long* n, double* x, double* pf,double* g,long [],float [],void* dzs),
+			void **, void **, void **,
+			long *, double [], double *, double [], double*, double *,
+			double *, char [], long *, long *, long *, long *, long *, long *, long [], double [], long *,
+			long *, long *, long [], float [],void* );
+
+/*Cost function prototype*/
+void simulad(long* indic,long* n,double* X,double* pf,double* G,long izs[1],float rzs[1],void* dzs);
+FemModel* presimulad(int* pintn, double** pX, FemModel* femmodel);
+void postsimulad(long* indic,long* n,double* X,double* pf,double* G,long izs[1],float rzs[1],void* dzs);
+/*}}}*/
+void controlad_core(FemModel* femmodel){ /*{{{*/
+
+	/*Intermediaries*/
+	FemModel*    femmodelad=NULL;
+	int          i;
+	long         omode;
+	IssmPDouble  f,dxmin,gttol;
+	IssmDouble   dxmind,gttold; 
+	int          maxsteps,maxiter;
+	int          intn,solution_type;
+	IssmPDouble  *X  = NULL;
+	IssmDouble   *Xd  = NULL;
+	IssmPDouble  *G  = NULL;
+
+	/*Recover some parameters*/
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&maxsteps,InversionMaxstepsEnum);
+	femmodel->parameters->FindParam(&maxiter,InversionMaxiterEnum);
+	femmodel->parameters->FindParam(&dxmind,InversionDxminEnum); dxmin=reCast<IssmPDouble>(dxmind);
+	femmodel->parameters->FindParam(&gttold,InversionGttolEnum); gttol=reCast<IssmPDouble>(gttold);
+	femmodel->parameters->SetParam(false,SaveResultsEnum);
+
+	/*Initialize M1QN3 parameters*/
+	if(VerboseControl())_printf0_("   Initialize M1QN3 parameters\n");
+	SimulFunc costfuncion  = &simulad;  /*Cost function address*/
+	void**    prosca       = &euclid_;  /*Dot product function (euclid is the default)*/
+	char      normtype[]   = "dfn";     /*Norm type: dfn = scalar product defined by prosca*/
+	long      izs[5];                   /*Arrays used by m1qn3 subroutines*/
+	long      iz[5];                    /*Integer m1qn3 working array of size 5*/
+	float     rzs[1];                   /*Arrays used by m1qn3 subroutines*/
+	long      impres       = 0;         /*verbosity level*/
+	long      imode[3]     = {0};       /*scaling and starting mode, 0 by default*/
+	long      indic        = 4;         /*compute f and g*/
+	long      reverse      = 0;         /*reverse or direct mode*/
+	long      io           = 6;         /*Channel number for the output*/
+
+	/*Optimization criterions*/
+	long niter = long(maxsteps); /*Maximum number of iterations*/
+	long nsim  = long(maxiter);/*Maximum number of function calls*/
+
+	/*Run the first part of simulad, in order to get things started!:*/
+	femmodelad=presimulad(&intn,&X,femmodel);
+
+	/*Get problem dimension and initialize gradient: */
+	long n = long(intn);
+	G = xNew<IssmPDouble>(n);
+
+	/*Allocate m1qn3 working arrays (see doc)*/
+	long      m   = 100;
+	long      ndz = 4*n+m*(2*n+1);
+	double*   dz  = xNew<double>(ndz);
+
+	if(VerboseControl())_printf0_("   Computing initial solution\n");
+	_printf0_("\n");
+	_printf0_("Cost function f(x)   | Gradient norm |g(x)| |  List of contributions\n");
+	_printf0_("____________________________________________________________________\n");
+
+	//run post simular phase, to fire up the control optimization
+	postsimulad(&indic,&n,X,&f,G,izs,rzs,(void*)femmodelad); 
+	double f1=f;
+
+	m1qn3_(costfuncion,prosca,&ctonbe_,&ctcabe_,
+				&n,X,&f,G,&dxmin,&f1,
+				&gttol,normtype,&impres,&io,imode,&omode,&niter,&nsim,iz,dz,&ndz,
+				&reverse,&indic,izs,rzs,(void*)femmodel);
+
+	switch(int(omode)){
+		case 0:  _printf0_("   Stop requested (indic = 0)\n"); break;
+		case 1:  _printf0_("   Convergence reached (gradient satisfies stopping criterion)\n"); break;
+		case 2:  _printf0_("   Bad initialization\n"); break;
+		case 3:  _printf0_("   Line search failure\n"); break;
+		case 4:  _printf0_("   Maximum number of iterations exceeded\n");break;
+		case 5:  _printf0_("   Maximum number of function calls exceeded\n"); break;
+		case 6:  _printf0_("   stopped on dxmin during line search\n"); break;
+		case 7:  _printf0_("   <g,d> > 0  or  <y,s> <0\n"); break;
+		default: _printf0_("   Unknown end condition\n");
+	}
+	
+	/*Save results:*/
+	femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,G,n,1,0,0.0));
+	femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffXpEnum,X,intn,1,0,0.0));
+
+	/*Clean-up and return*/
+	xDelete<double>(G);
+	xDelete<double>(X);
+	xDelete<double>(dz);
+}/*}}}*/
+FemModel* presimulad(int* pintn, double** pX, FemModel* femmodel){ /*{{{*/
+
+	/*Intermediaries:*/
+	char* rootpath=NULL;
+	char* inputfilename=NULL;
+	char* outputfilename=NULL;
+	char* toolkitsfilename=NULL;
+	char* lockfilename=NULL;
+	char* restartfilename=NULL;
+	int         solution_type;
+	IssmDouble    pfd;
+	IssmDouble*   Xd=NULL;
+	int           intn;
+	IssmPDouble*   X=NULL;
+	int            i;
+	
+	/*Now things get complicated. The femmodel we recovered did not initialize an AD trace, so we can't compute gradients with it. We are going to recreate 
+	 *a new femmodel, identical in all aspects to the first one, with trace on though, which will allow us to run the forward mode and get the gradient 
+	 in one run of the solution core. So first recover the filenames required for the FemModel constructor, then call a new ad tailored constructor:*/
+	femmodel->parameters->FindParam(&rootpath,RootPathEnum);
+	femmodel->parameters->FindParam(&inputfilename,InputFileNameEnum);
+	femmodel->parameters->FindParam(&outputfilename,OutputFileNameEnum);
+	femmodel->parameters->FindParam(&toolkitsfilename,ToolkitsFileNameEnum);
+	femmodel->parameters->FindParam(&lockfilename,LockFileNameEnum);
+	femmodel->parameters->FindParam(&restartfilename,RestartFileNameEnum);
+
+	femmodel=new FemModel(rootpath, inputfilename, outputfilename, toolkitsfilename, lockfilename, restartfilename,IssmComm::GetComm(), femmodel->solution_type,NULL);
+
+	
+	/*Get initial guess:*/
+	femmodel->parameters->FindParam(&Xd,&intn,AutodiffXpEnum);
+	X=xNew<IssmPDouble>(intn); for(i=0;i<intn;i++) X[i]=reCast<IssmPDouble>(Xd[i]); 
+
+	xDelete<char>(rootpath);
+	xDelete<char>(inputfilename);
+	xDelete<char>(outputfilename);
+	xDelete<char>(toolkitsfilename);
+	xDelete<char>(lockfilename);
+	xDelete<char>(restartfilename);
+	xDelete<IssmDouble>(Xd);
+
+	*pintn=intn;
+	*pX=X;
+
+	return femmodel;
+
+} /*}}}*/
+void postsimulad(long* indic,long* n,double* X,double* pf,double* G,long izs[1],float rzs[1],void* dzs){ /*{{{*/
+
+	/*Intermediaries:*/
+	char* rootpath=NULL;
+	char* inputfilename=NULL;
+	char* outputfilename=NULL;
+	char* toolkitsfilename=NULL;
+	char* lockfilename=NULL;
+	IssmPDouble* G2=NULL;
+	int         solution_type;
+	FemModel   *femmodel  =  NULL;
+	IssmDouble    pfd;
+	int            i;
+	
+	/*Recover Femmodel*/
+	femmodel  = (FemModel*)dzs;
+
+	/*Recover number of cost functions responses*/
+	int num_responses;
+	femmodel->parameters->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+
+	/*Recover some parameters*/
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+
+	/*Compute solution:*/
+	void (*solutioncore)(FemModel*)=NULL;
+	CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
+	solutioncore(femmodel);
+
+	/*Compute objective function*/
+	IssmDouble* Jlist = NULL;
+	femmodel->CostFunctionx(&pfd,&Jlist,NULL); *pf=reCast<IssmPDouble>(pfd);
+	_printf0_("f(x) = "<<setw(12)<<setprecision(7)<<*pf<<"  |  ");
+	
+	/*Compute gradient using AD. Gradient is in the results after the ad_core is called*/
+	adgradient_core(femmodel); 
+
+	if(IssmComm::GetRank()==0){
+		IssmPDouble* G_temp=NULL;
+		GenericExternalResult<IssmPDouble*>* gradient=(GenericExternalResult<IssmPDouble*>*)femmodel->results->FindResult(AutodiffJacobianEnum); _assert_(gradient);
+		G_temp=gradient->GetValues();
+		/*copy onto G2, to avoid a leak: */
+		G2=xNew<IssmPDouble>(*n); 
+		xMemCpy<IssmPDouble>(G2,G_temp,*n);
+	}
+	else G2=xNew<IssmPDouble>(*n);
+
+	/*MPI broadcast results:*/
+	ISSM_MPI_Bcast(G2,*n,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+	
+	/*Send gradient to m1qn3 core: */
+	for(long i=0;i<*n;i++) G[i] = G2[i];
+	
+	/*Constrain X and G*/
+	IssmDouble  Gnorm = 0.;
+	for(long i=0;i<*n;i++) Gnorm += G[i]*G[i];
+	Gnorm = sqrt(Gnorm);
+
+	/*Print info*/
+	_printf0_("       "<<setw(12)<<setprecision(7)<<Gnorm<<" |");
+	for(int i=0;i<num_responses;i++) _printf0_(" "<<setw(12)<<setprecision(7)<<Jlist[i]);
+	_printf0_("\n");
+
+	/*Clean-up and return*/
+	xDelete<IssmDouble>(Jlist);
+	xDelete<IssmPDouble>(G2);
+	
+	xDelete<char>(rootpath);
+	xDelete<char>(inputfilename);
+	xDelete<char>(outputfilename);
+	xDelete<char>(toolkitsfilename);
+	xDelete<char>(lockfilename);
+
+} /*}}}*/
+void simulad(long* indic,long* n,double* X,double* pf,double* G,long izs[1],float rzs[1],void* dzs){ /*{{{*/
+
+	/*Intermediaries:*/
+	char* rootpath=NULL;
+	char* inputfilename=NULL;
+	char* outputfilename=NULL;
+	char* toolkitsfilename=NULL;
+	char* lockfilename=NULL;
+	char* restartfilename=NULL;
+	IssmPDouble* G2=NULL;
+	int         solution_type;
+	FemModel   *femmodel  =  NULL;
+	FemModel   *femmodelad  = NULL;
+	IssmDouble    pfd;
+	int            i;
+	
+	/*Recover Femmodel*/
+	femmodel  = (FemModel*)dzs;
+
+	/*Recover number of cost functions responses*/
+	int num_responses;
+	femmodel->parameters->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+
+	/*Now things get complicated. The femmodel we recovered did not initialize an AD trace, so we can't compute gradients with it. We are going to recreate 
+	 *a new femmodel, identical in all aspects to the first one, with trace on though, which will allow us to run the forward mode and get the gradient 
+	 in one run of the solution core. So first recover the filenames required for the FemModel constructor, then call a new ad tailored constructor:*/
+	femmodel->parameters->FindParam(&rootpath,RootPathEnum);
+	femmodel->parameters->FindParam(&inputfilename,InputFileNameEnum);
+	femmodel->parameters->FindParam(&outputfilename,OutputFileNameEnum);
+	femmodel->parameters->FindParam(&toolkitsfilename,ToolkitsFileNameEnum);
+	femmodel->parameters->FindParam(&lockfilename,LockFileNameEnum);
+	femmodel->parameters->FindParam(&restartfilename,RestartFileNameEnum);
+
+	femmodelad=new FemModel(rootpath, inputfilename, outputfilename, toolkitsfilename, lockfilename, restartfilename,IssmComm::GetComm(), femmodel->solution_type,X);
+	femmodel=femmodelad; //We can do this, because femmodel is being called from outside, not by reference, so we won't erase it
+	
+	/*Recover some parameters*/
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+
+	/*Compute solution:*/
+	void (*solutioncore)(FemModel*)=NULL;
+	CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
+	solutioncore(femmodel);
+
+	/*Compute objective function*/
+	IssmDouble* Jlist = NULL;
+	femmodel->CostFunctionx(&pfd,&Jlist,NULL); *pf=reCast<IssmPDouble>(pfd);
+	_printf0_("f(x) = "<<setw(12)<<setprecision(7)<<*pf<<"  |  ");
+	
+	/*Compute gradient using AD. Gradient is in the results after the ad_core is called*/
+	adgradient_core(femmodel); 
+
+	if(IssmComm::GetRank()==0){
+		IssmPDouble* G_temp=NULL;
+		GenericExternalResult<IssmPDouble*>* gradient=(GenericExternalResult<IssmPDouble*>*)femmodel->results->FindResult(AutodiffJacobianEnum); _assert_(gradient);
+		G_temp=gradient->GetValues();
+		/*copy onto G2, to avoid a leak: */
+		G2=xNew<IssmPDouble>(*n); 
+		xMemCpy<IssmPDouble>(G2,G_temp,*n);
+	}
+	else G2=xNew<IssmPDouble>(*n);
+
+	/*MPI broadcast results:*/
+	ISSM_MPI_Bcast(G2,*n,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+	
+	/*Send gradient to m1qn3 core: */
+	for(long i=0;i<*n;i++) G[i] = G2[i];
+	
+	/*Recover Gnorm: */
+	IssmDouble  Gnorm = 0.;
+	for(int i=0;i<*n;i++) Gnorm += G[i]*G[i];
+	Gnorm = sqrt(Gnorm);
+
+	/*Print info*/
+	_printf0_("       "<<setw(12)<<setprecision(7)<<Gnorm<<" |");
+	for(int i=0;i<num_responses;i++) _printf0_(" "<<setw(12)<<setprecision(7)<<Jlist[i]);
+	_printf0_("\n");
+
+	/*Clean-up and return*/
+	xDelete<IssmDouble>(Jlist);
+	xDelete<IssmPDouble>(G2);
+	
+	xDelete<char>(rootpath);
+	xDelete<char>(inputfilename);
+	xDelete<char>(outputfilename);
+	xDelete<char>(toolkitsfilename);
+	xDelete<char>(lockfilename);
+	xDelete<char>(restartfilename);
+	if(femmodelad)delete femmodelad;
+
+} /*}}}*/
+#else
+void controlad_core(FemModel* femmodel){ /*{{{*/
+	_error_("AD and/or M1QN3 not installed");
+}/*}}}*/
+#endif //_HAVE_M1QN3_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/controlm1qn3_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/controlm1qn3_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/controlm1qn3_core.cpp	(revision 21239)
@@ -0,0 +1,257 @@
+/*!\file: controlm1qn3_core.cpp
+ * \brief: core of the control solution 
+ */ 
+
+#include <config.h>
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+#if defined (_HAVE_M1QN3_) & !defined(_HAVE_ADOLC_)
+/*m1qn3 prototypes*/
+extern "C" void *ctonbe_; // DIS mode : Conversion
+extern "C" void *ctcabe_; // DIS mode : Conversion
+extern "C" void *euclid_; // Scalar product
+typedef void (*SimulFunc) (long* indic,long* n, double* x, double* pf,double* g,long [],float [],void* dzs);
+extern "C" void m1qn3_ (void f(long* indic,long* n, double* x, double* pf,double* g,long [],float [],void* dzs),
+			void **, void **, void **,
+			long *, double [], double *, double [], double*, double *,
+			double *, char [], long *, long *, long *, long *, long *, long *, long [], double [], long *,
+			long *, long *, long [], float [],void* );
+
+/*Cost function prototype*/
+void simul(long* indic,long* n,double* X,double* pf,double* G,long izs[1],float rzs[1],void* dzs);
+
+void controlm1qn3_core(FemModel* femmodel){
+
+	/*Intermediaries*/
+	long         omode;
+	double       f,dxmin,gttol; 
+	int          maxsteps,maxiter;
+	int          intn,numberofvertices,num_controls,solution_type;
+	IssmDouble  *scaling_factors = NULL;
+	IssmDouble  *X  = NULL;
+	IssmDouble  *G  = NULL;
+
+	/*Recover some parameters*/
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	femmodel->parameters->FindParam(&maxsteps,InversionMaxstepsEnum);
+	femmodel->parameters->FindParam(&maxiter,InversionMaxiterEnum);
+	femmodel->parameters->FindParam(&dxmin,InversionDxminEnum);
+	femmodel->parameters->FindParam(&gttol,InversionGttolEnum);
+	femmodel->parameters->FindParam(&scaling_factors,NULL,InversionControlScalingFactorsEnum);
+	femmodel->parameters->SetParam(false,SaveResultsEnum);
+	numberofvertices=femmodel->vertices->NumberOfVertices();
+
+	/*Initialize M1QN3 parameters*/
+	if(VerboseControl())_printf0_("   Initialize M1QN3 parameters\n");
+	SimulFunc costfuncion  = &simul;    /*Cost function address*/
+	void**    prosca       = &euclid_;  /*Dot product function (euclid is the default)*/
+	char      normtype[]   = "dfn";     /*Norm type: dfn = scalar product defined by prosca*/
+	long      izs[5];                   /*Arrays used by m1qn3 subroutines*/
+	long      iz[5];                    /*Integer m1qn3 working array of size 5*/
+	float     rzs[1];                   /*Arrays used by m1qn3 subroutines*/
+	long      impres       = 0;         /*verbosity level*/
+	long      imode[3]     = {0};       /*scaling and starting mode, 0 by default*/
+	long      indic        = 4;         /*compute f and g*/
+	long      reverse      = 0;         /*reverse or direct mode*/
+	long      io           = 6;         /*Channel number for the output*/
+
+	/*Optimization criterions*/
+	long niter = long(maxsteps); /*Maximum number of iterations*/
+	long nsim  = long(maxiter);/*Maximum number of function calls*/
+
+	/*Get initial guess*/
+	Vector<IssmDouble> *Xpetsc = NULL;
+	GetVectorFromControlInputsx(&Xpetsc,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"value");
+	X = Xpetsc->ToMPISerial();
+	Xpetsc->GetSize(&intn);
+	delete Xpetsc;
+	_assert_(intn==numberofvertices*num_controls);
+
+	/*Get problem dimension and initialize gradient and initial guess*/
+	long n = long(intn);
+	G = xNew<double>(n);
+
+	/*Scale control for M1QN3*/
+	for(int i=0;i<numberofvertices;i++){
+		for(int c=0;c<num_controls;c++){
+			int index = num_controls*i+c;
+			X[index] = X[index]/scaling_factors[c];
+		}
+	}
+
+	/*Allocate m1qn3 working arrays (see doc)*/
+	long      m   = 100;
+	long      ndz = 4*n+m*(2*n+1);
+	double*   dz  = xNew<double>(ndz);
+
+	if(VerboseControl())_printf0_("   Computing initial solution\n");
+	_printf0_("\n");
+	_printf0_("Cost function f(x)   | Gradient norm |g(x)| |  List of contributions\n");
+	_printf0_("____________________________________________________________________\n");
+
+	/*Initialize Gradient and cost function of M1QN3*/
+	indic = 4; //adjoint and gradient required
+	simul(&indic,&n,X,&f,G,izs,rzs,(void*)femmodel);
+
+	/*Estimation of the expected decrease in f during the first iteration*/
+	double df1=f;
+
+	/*Call M1QN3 solver*/
+	m1qn3_(costfuncion,prosca,&ctonbe_,&ctcabe_,
+				&n,X,&f,G,&dxmin,&df1,
+				&gttol,normtype,&impres,&io,imode,&omode,&niter,&nsim,iz,dz,&ndz,
+				&reverse,&indic,izs,rzs,(void*)femmodel);
+
+	switch(int(omode)){
+		case 0:  _printf0_("   Stop requested (indic = 0)\n"); break;
+		case 1:  _printf0_("   Convergence reached (gradient satisfies stopping criterion)\n"); break;
+		case 2:  _printf0_("   Bad initialization\n"); break;
+		case 3:  _printf0_("   Line search failure\n"); break;
+		case 4:  _printf0_("   Maximum number of iterations exceeded\n");break;
+		case 5:  _printf0_("   Maximum number of function calls exceeded\n"); break;
+		case 6:  _printf0_("   stopped on dxmin during line search\n"); break;
+		case 7:  _printf0_("   <g,d> > 0  or  <y,s> <0\n"); break;
+		default: _printf0_("   Unknown end condition\n");
+	}
+
+	/*Constrain solution vector*/
+	IssmDouble  *XL = NULL;
+	IssmDouble  *XU = NULL;
+	GetVectorFromControlInputsx(&XL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"lowerbound");
+	GetVectorFromControlInputsx(&XU,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"upperbound");
+	for(int i=0;i<numberofvertices;i++){
+		for(int c=0;c<num_controls;c++){
+			int index = num_controls*i+c;
+			X[index] = X[index]*scaling_factors[c];
+			if(X[index]>XU[index]) X[index]=XU[index];
+			if(X[index]<XL[index]) X[index]=XL[index];
+		}
+	}
+	SetControlInputsFromVectorx(femmodel,X);
+	ControlInputSetGradientx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,G);
+	femmodel->OutputControlsx(&femmodel->results);
+	femmodel->results->AddObject(new GenericExternalResult<double>(femmodel->results->Size()+1,JEnum,f));
+
+	/*Finalize*/
+	if(VerboseControl()) _printf0_("   preparing final solution\n");
+	femmodel->parameters->SetParam(true,SaveResultsEnum);
+	void (*solutioncore)(FemModel*)=NULL;
+	CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
+	solutioncore(femmodel);
+
+	/*Clean-up and return*/
+	xDelete<double>(G);
+	xDelete<double>(X);
+	xDelete<double>(dz);
+	xDelete<double>(XU);
+	xDelete<double>(XL);
+	xDelete<double>(scaling_factors);
+}
+
+/*Cost function definition*/
+void simul(long* indic,long* n,double* X,double* pf,double* G,long izs[1],float rzs[1],void* dzs){
+
+	/*Recover Femmodel*/
+	int         solution_type;
+	FemModel   *femmodel  = (FemModel*)dzs;
+
+	/*Recover number of cost functions responses*/
+	int num_responses,num_controls,numberofvertices;
+	IssmDouble* scaling_factors = NULL;
+	femmodel->parameters->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	femmodel->parameters->FindParam(&scaling_factors,NULL,InversionControlScalingFactorsEnum);
+	numberofvertices=femmodel->vertices->NumberOfVertices();
+
+	/*Constrain input vector*/
+	IssmDouble  *XL = NULL;
+	IssmDouble  *XU = NULL;
+	GetVectorFromControlInputsx(&XL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"lowerbound");
+	GetVectorFromControlInputsx(&XU,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"upperbound");
+	for(int i=0;i<numberofvertices;i++){
+		for(int c=0;c<num_controls;c++){
+			int index = num_controls*i+c;
+			X[index] = X[index]*scaling_factors[c];
+			if(X[index]>XU[index]) X[index]=XU[index];
+			if(X[index]<XL[index]) X[index]=XL[index];
+		}
+	}
+
+	/*Update control input*/
+	SetControlInputsFromVectorx(femmodel,X);
+
+	/*Recover some parameters*/
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+
+	/*Compute solution and adjoint*/
+	void (*solutioncore)(FemModel*)=NULL;
+	void (*adjointcore)(FemModel*)=NULL;
+	CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
+	solutioncore(femmodel);
+
+	/*Compute objective function*/
+	IssmDouble* Jlist = NULL;
+	femmodel->CostFunctionx(pf,&Jlist,NULL);
+	_printf0_("f(x) = "<<setw(12)<<setprecision(7)<<*pf<<"  |  ");
+
+	if(*indic==0){
+		/*dry run, no gradient required*/
+
+		/*Retrieve objective functions independently*/
+		_printf0_("            N/A |\n");
+		for(int i=0;i<num_responses;i++) _printf0_(" "<<setw(12)<<setprecision(7)<<Jlist[i]);
+		_printf0_("\n");
+
+		xDelete<IssmDouble>(Jlist);
+		xDelete<IssmDouble>(XU);
+		xDelete<IssmDouble>(XL);
+		return;
+	}
+
+	/*Compute Adjoint*/
+	AdjointCorePointerFromSolutionEnum(&adjointcore,solution_type);
+	adjointcore(femmodel);
+
+	/*Compute gradient*/
+	IssmDouble* G2 = NULL;
+	Gradjx(&G2,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+	for(long i=0;i<*n;i++) G[i] = -G2[i];
+	xDelete<IssmDouble>(G2);
+
+	/*Constrain Gradient*/
+	IssmDouble  Gnorm = 0.;
+	for(int i=0;i<numberofvertices;i++){
+		for(int c=0;c<num_controls;c++){
+			int index = num_controls*i+c;
+			if(X[index]>=XU[index]) G[index]=0.;
+			if(X[index]<=XL[index]) G[index]=0.;
+			G[index] = G[index]*scaling_factors[c];
+			X[index] = X[index]/scaling_factors[c];
+			Gnorm += G[index]*G[index];
+		}
+	}
+	Gnorm = sqrt(Gnorm);
+
+	/*Print info*/
+	_printf0_("       "<<setw(12)<<setprecision(7)<<Gnorm<<" |");
+	for(int i=0;i<num_responses;i++) _printf0_(" "<<setw(12)<<setprecision(7)<<Jlist[i]);
+	_printf0_("\n");
+
+	/*Clean-up and return*/
+	xDelete<IssmDouble>(Jlist);
+	xDelete<IssmDouble>(XU);
+	xDelete<IssmDouble>(XL);
+	xDelete<IssmDouble>(scaling_factors);
+}
+
+#else
+void controlm1qn3_core(FemModel* femmodel){
+	_error_("M1QN3 not installed");
+}
+#endif //_HAVE_M1QN3_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/controltao_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/controltao_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/controltao_core.cpp	(revision 21239)
@@ -0,0 +1,216 @@
+/*!\file: control_core.cpp
+ * \brief: core of the control solution 
+ */ 
+#include <config.h>
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+#if defined (_HAVE_TAO_)
+#if defined (_HAVE_PETSC_) && (_PETSC_MAJOR_ == 3 && _PETSC_MINOR_ < 5)
+#include <tao.h>
+#else
+#include <petsctao.h>
+#endif
+
+/*Local prototype*/
+#if defined (_HAVE_PETSC_) && (_PETSC_MAJOR_ == 3 && _PETSC_MINOR_ < 5)
+int FormFunctionGradient(TaoSolver,Vec,IssmDouble*,Vec,void*);
+int IssmMonitor(TaoSolver,void*);
+#else
+int FormFunctionGradient(Tao,Vec,IssmDouble*,Vec,void*);
+int IssmMonitor(Tao,void*);
+#endif
+typedef struct {
+	FemModel* femmodel;
+	double*   J;
+} AppCtx;
+
+void controltao_core(FemModel* femmodel){
+
+	/*TAO*/
+	int                 ierr;
+	int                 num_controls,solution_type;
+	int                 maxsteps,maxiter;
+	IssmDouble          gatol,grtol,gttol;
+	AppCtx              user;
+	#if defined (_HAVE_PETSC_) && (_PETSC_MAJOR_ == 3 && _PETSC_MINOR_ < 5)
+	TaoSolver           tao = 0;
+	#else
+	Tao                 tao = 0;
+	#endif
+	int                *control_list = NULL;
+	char               *algorithm    = NULL;
+	Vector<IssmDouble> *X            = NULL;
+	Vector<IssmDouble> *G            = NULL;
+	Vector<IssmDouble> *XL           = NULL;
+	Vector<IssmDouble> *XU           = NULL;
+
+	/*Initialize TAO*/
+	#if defined (_HAVE_PETSC_) && (_PETSC_MAJOR_ == 3 && _PETSC_MINOR_ < 5)
+	int argc; char **args=NULL;
+	PetscGetArgs(&argc,&args);
+	ierr = TaoInitialize(&argc,&args,(char*)0,"");
+	if(ierr) _error_("Could not initialize Tao");
+	#endif
+
+	/*Recover some parameters*/
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	femmodel->parameters->FindParam(&control_list,NULL,InversionControlParametersEnum);
+	femmodel->parameters->FindParam(&maxsteps,InversionMaxstepsEnum);
+	femmodel->parameters->FindParam(&maxiter,InversionMaxiterEnum);
+	femmodel->parameters->FindParam(&gatol,InversionGatolEnum);
+	femmodel->parameters->FindParam(&grtol,InversionGrtolEnum);
+	femmodel->parameters->FindParam(&gttol,InversionGttolEnum);
+	femmodel->parameters->FindParam(&algorithm,InversionAlgorithmEnum);
+	femmodel->parameters->SetParam(false,SaveResultsEnum);
+
+	/*Prepare Toolkit*/
+	ToolkitsOptionsFromAnalysis(femmodel->parameters,DefaultAnalysisEnum);
+
+	/*Initialize TAO*/
+	TaoCreate(IssmComm::GetComm(),&tao);
+	if(VerboseControl()) _printf0_("   Initializing the Toolkit for Advanced Optimization (TAO)\n");
+	TaoSetFromOptions(tao);
+	TaoSetType(tao,algorithm);
+
+	/*Prepare all TAO parameters*/
+	TaoSetMonitor(tao,IssmMonitor,&user,NULL);
+	TaoSetMaximumFunctionEvaluations(tao,maxiter);
+	TaoSetMaximumIterations(tao,maxsteps);
+	#if (_PETSC_MAJOR_==3) && (_PETSC_MINOR_<7)
+	TaoSetTolerances(tao,0,0,gatol,grtol,gttol);
+	#else
+	TaoSetTolerances(tao,gatol,grtol,gttol);
+	#endif
+
+	GetVectorFromControlInputsx(&X, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"value");
+	GetVectorFromControlInputsx(&XL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"lowerbound");
+	GetVectorFromControlInputsx(&XU,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"upperbound");
+	TaoSetInitialVector(tao,X->pvector->vector);
+	TaoSetVariableBounds(tao,XL->pvector->vector,XU->pvector->vector);
+	delete XL;
+	delete XU;
+
+	user.J=xNewZeroInit<double>(maxiter+5);
+	user.femmodel=femmodel;
+	TaoSetObjectiveAndGradientRoutine(tao,FormFunctionGradient,(void*)&user); 
+
+	/*Solver optimization problem*/
+	if(VerboseControl()) _printf0_("   Starting optimization\n");
+	TaoSolve(tao);
+	TaoView(tao,PETSC_VIEWER_STDOUT_WORLD);
+
+	/*Save results*/
+	TaoGetSolutionVector(tao,&X->pvector->vector);
+	G=new Vector<IssmDouble>(0); VecFree(&G->pvector->vector);
+	TaoGetGradientVector(tao,&G->pvector->vector);
+	SetControlInputsFromVectorx(femmodel,X);
+	ControlInputSetGradientx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,G);
+	femmodel->OutputControlsx(&femmodel->results);
+	femmodel->results->AddObject(new GenericExternalResult<double*>(femmodel->results->Size()+1,JEnum,user.J,maxiter+3,1,0,0));
+
+	/*Finalize*/
+	if(VerboseControl()) _printf0_("   preparing final solution\n");
+	femmodel->parameters->SetParam(true,SaveResultsEnum);
+	void (*solutioncore)(FemModel*)=NULL;
+	CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
+	solutioncore(femmodel);
+
+	/*Clean up and return*/
+	xDelete<int>(control_list);
+	xDelete<char>(algorithm);
+	xDelete<double>(user.J);
+	delete X;
+	TaoDestroy(&tao);
+	#if defined (_HAVE_PETSC_) && (_PETSC_MAJOR_ == 3 && _PETSC_MINOR_ < 5)
+	TaoFinalize();
+	#endif
+	G->pvector->vector = NULL;
+	delete G;
+}
+
+#if defined (_HAVE_PETSC_) && (_PETSC_MAJOR_ == 3 && _PETSC_MINOR_ < 5)
+int FormFunctionGradient(TaoSolver tao, Vec Xpetsc, IssmDouble *fcn,Vec G,void *uservoid){
+#else
+int FormFunctionGradient(Tao tao, Vec Xpetsc, IssmDouble *fcn,Vec G,void *uservoid){
+#endif
+
+	/*Retreive arguments*/
+	int                  solution_type;
+	AppCtx              *user            = (AppCtx *)uservoid;
+	FemModel            *femmodel        = user->femmodel;
+	Vector<IssmDouble>  *gradient        = NULL;
+	Vector<IssmDouble>  *X               = NULL;
+
+	/*Convert input to Vec*/
+	X=new Vector<IssmDouble>(Xpetsc);
+
+	/*Set new variable*/
+	//VecView(X,PETSC_VIEWER_STDOUT_WORLD);
+	SetControlInputsFromVectorx(femmodel,X);
+	delete X;
+
+	/*Recover some parameters*/
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+
+	/*Compute solution and adjoint*/
+	void (*solutioncore)(FemModel*)=NULL;
+	void (*adjointcore)(FemModel*)=NULL;
+	CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
+	AdjointCorePointerFromSolutionEnum(&adjointcore,solution_type);
+	solutioncore(femmodel);
+	adjointcore(femmodel);
+
+	/*Compute objective function*/
+	femmodel->CostFunctionx(fcn,NULL,NULL);
+
+	/*Compute gradient*/
+	Gradjx(&gradient,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+	VecCopy(gradient->pvector->vector,G); delete gradient;
+	VecScale(G,-1.);
+
+	/*Clean-up and return*/
+	return 0;
+}
+#if defined (_HAVE_PETSC_) && (_PETSC_MAJOR_ == 3 && _PETSC_MINOR_ < 5)
+int IssmMonitor(TaoSolver tao, void *userCtx){
+#else
+int IssmMonitor(Tao tao, void *userCtx){
+#endif
+
+	int         its,num_responses;
+	IssmDouble  f,gnorm,cnorm,xdiff;
+	AppCtx     *user      = (AppCtx *)userCtx;
+	FemModel   *femmodel  = user->femmodel;
+	int        *responses = NULL;
+
+	femmodel->parameters->FindParam(&responses,&num_responses,InversionCostFunctionsEnum);
+
+	TaoGetSolutionStatus(tao, &its, &f, &gnorm, &cnorm, &xdiff, NULL);
+	if(its==0) _printf0_("Iter       Function      Residual  |  List of contributions\n");
+	if(its==0) _printf0_("___________________________________________________________\n");
+	_printf0_(setw(4)<<its<<"   "<<setw(12)<<setprecision(7)<<f<<"  "<<setw(12)<<setprecision(7)<<gnorm<<"  | ");
+	user->J[its]=f;
+
+	/*Retrieve objective functions independently*/
+	for(int i=0;i<num_responses;i++){
+		femmodel->Responsex(&f,EnumToStringx(responses[i]));
+		_printf0_(" "<<setw(12)<<setprecision(7)<<f);
+	}
+	_printf0_("\n");
+
+	/*Clean-up and return*/
+	xDelete<int>(responses);
+	return 0;
+}
+
+#else
+void controltao_core(FemModel* femmodel){
+	_error_("TAO not installed or PETSc version not supported");
+}
+#endif //_HAVE_TAO_ 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/controlvalidation_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/controlvalidation_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/controlvalidation_core.cpp	(revision 21239)
@@ -0,0 +1,106 @@
+/*!\file: controlvalidation_core.cpp
+ * \brief: core of the control solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+void controlvalidation_core(FemModel* femmodel){
+
+	int         solution_type,n;
+	int         num_responses;
+	IssmDouble  j0,j,yts;
+	IssmDouble  Ialpha,exponent,alpha;
+	IssmDouble* scaling_factors = NULL;
+	IssmDouble* jlist = NULL;
+	IssmDouble *G = NULL;
+	IssmDouble *X = NULL;
+	IssmDouble *X0= NULL;
+
+	/*Solution and Adjoint core pointer*/
+	void (*solutioncore)(FemModel*) = NULL;
+	void (*adjointcore)(FemModel*)  = NULL;
+
+	/*Recover parameters used throughout the solution*/
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->SetParam(false,SaveResultsEnum);
+	femmodel->parameters->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	femmodel->parameters->FindParam(&yts,ConstantsYtsEnum);
+	femmodel->parameters->FindParam(&scaling_factors,NULL,InversionControlScalingFactorsEnum);
+
+	/*Get initial guess*/
+	Vector<IssmDouble> *Xpetsc = NULL;
+	GetVectorFromControlInputsx(&Xpetsc,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"value");
+	Xpetsc->GetSize(&n);
+	X0 = Xpetsc->ToMPISerial();
+	delete Xpetsc;
+
+	/*Allocate current vector*/
+	X = xNew<IssmDouble>(n);
+
+	/*out of solution_type, figure out solution core and adjoint function pointer*/
+	CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
+	AdjointCorePointerFromSolutionEnum(&adjointcore,solution_type);
+
+	if(VerboseControl()) _printf0_("   Compute Initial solution\n");
+	solutioncore(femmodel);
+	if(VerboseControl()) _printf0_("   Compute Adjoint\n");
+	adjointcore(femmodel);
+
+	if(VerboseControl()) _printf0_("   Compute Initial cost function\n");
+	femmodel->CostFunctionx(&j0,&jlist,NULL);
+	_printf0_("Initial cost function J(x) = "<<setw(12)<<setprecision(7)<<j0<<"\n");
+	xDelete<IssmDouble>(jlist);
+
+	if(VerboseControl()) _printf0_("   Compute Gradient\n");
+	Gradjx(&G,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+	for(int i=0;i<n;i++) G[i] = -G[i];
+
+	/*Allocate output*/
+	int num = 26;
+	IssmDouble* output = xNew<IssmDouble>(2*num);
+
+	/*Start loop*/
+	_printf0_("       alpha      Ialpha \n");
+	_printf0_("_________________________\n");
+	for(int m=0;m<num;m++){
+
+		/*Create new vector*/
+		alpha    = pow(2.,-m);
+		for(int i=0;i<n;i++) X[i] = X0[i] + alpha*scaling_factors[0];
+
+		/*Calculate j(k+alpha delta k) */
+		SetControlInputsFromVectorx(femmodel,X);
+		solutioncore(femmodel);
+		femmodel->CostFunctionx(&j,NULL,NULL);
+
+		IssmDouble Den = 0.;
+		for(int i=0;i<n;i++) Den += alpha* G[i] * scaling_factors[0];
+		Ialpha = fabs((j - j0)/Den - 1.);
+
+		_printf0_(" " << setw(11) << setprecision (5)<<alpha<<" " << setw(11) << setprecision (5)<<Ialpha<<"\n");
+		output[m*2+0] = alpha;
+		output[m*2+1] = Ialpha;
+	}
+
+	/*output*/
+	#ifdef _HAVE_ADOLC_
+	IssmPDouble* J_passive=xNew<IssmPDouble>(2*num);
+	for(int i=0;i<2*num;i++) J_passive[i]=reCast<IssmPDouble>(output[i]);
+	femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,J_passive,num,2,0,0));
+	xDelete<IssmPDouble>(J_passive);
+	#else
+	femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,output,num,2,0,0));
+	#endif
+	ControlInputSetGradientx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,G);
+	femmodel->OutputControlsx(&femmodel->results);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(output);
+	xDelete<IssmDouble>(G);
+	xDelete<IssmDouble>(X);
+	xDelete<IssmDouble>(X0);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/cores.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/cores.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/cores.h	(revision 21239)
@@ -0,0 +1,72 @@
+/*
+ * cores.h: 
+ */
+
+#ifndef _CORES_H_
+#define _CORES_H_
+
+/*forward declarations: */
+class FemModel;
+class Parameters;
+template <class doubletype> class Matrix;
+template <class doubletype> class Vector;
+
+#include "../shared/io/Comm/IssmComm.h"
+#include "../shared/Numerics/types.h"
+
+/*cores: */
+void adjointstressbalance_core(FemModel* femmodel);
+void adjointbalancethickness_core(FemModel* femmodel);
+void adjointbalancethickness2_core(FemModel* femmodel);
+void stressbalance_core(FemModel* femmodel);
+void hydrology_core(FemModel* femmodel);
+void thermal_core(FemModel* femmodel);
+void surfaceslope_core(FemModel* femmodel);
+void levelsetfunctionslope_core(FemModel* femmodel);
+void movingfront_core(FemModel* femmodel);
+void bedslope_core(FemModel* femmodel);
+void meshdeformation_core(FemModel* femmodel);
+void control_core(FemModel* femmodel);
+void controltao_core(FemModel* femmodel);
+void controlm1qn3_core(FemModel* femmodel);
+void controlad_core(FemModel* femmodel);
+void controlvalidation_core(FemModel* femmodel);
+void masstransport_core(FemModel* femmodel);
+void depthaverage_core(FemModel* femmodel);
+void extrudefrombase_core(FemModel* femmodel);
+void extrudefromtop_core(FemModel* femmodel);
+void balancethickness_core(FemModel* femmodel);
+void balancethickness2_core(FemModel* femmodel);
+void balancevelocity_core(FemModel* femmodel);
+void slopecompute_core(FemModel* femmodel);
+void steadystate_core(FemModel* femmodel);
+void transient_core(FemModel* femmodel);
+void dakota_core(FemModel* femmodel);
+void ad_core(FemModel* femmodel);
+void adgradient_core(FemModel* femmodel);
+void dummy_core(FemModel* femmodel);
+void gia_core(FemModel* femmodel);
+void smb_core(FemModel* femmodel);
+void damage_core(FemModel* femmodel);
+void sealevelrise_core(FemModel* femmodel);
+Vector<IssmDouble>* sealevelrise_core_eustatic(FemModel* femmodel);
+Vector<IssmDouble>* sealevelrise_core_noneustatic(FemModel* femmodel,Vector<IssmDouble>* Sg_eustatic);
+IssmDouble objectivefunction(IssmDouble search_scalar,FemModel* femmodel);
+
+//optimization
+int GradJSearch(IssmDouble* search_vector,FemModel* femmodel,int step);
+
+//diverse
+void ProcessArguments(int* solution,char** pbinname,char** poutbinname,char** ptoolkitsname,char** plockname,char** prestartname, char** prootpath,int argc,char **argv);
+void WriteLockFile(char* filename);
+void ResetBoundaryConditions(FemModel* femmodel, int analysis_type);
+void PrintBanner(void);
+void TransferForcing(FemModel* femmodel,int forcingenum);
+void TransferSealevel(FemModel* femmodel,int forcingenum);
+
+//solution configuration
+void CorePointerFromSolutionEnum(void (**psolutioncore)(FemModel*),Parameters* parameters,int solutiontype);
+void WrapperCorePointerFromSolutionEnum(void (**psolutioncore)(FemModel*),Parameters* parameters,int solutiontype,bool nodakotacore=false);
+void AdjointCorePointerFromSolutionEnum(void (**padjointcore)(FemModel*),int solutiontype);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/dakota_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/dakota_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/dakota_core.cpp	(revision 21239)
@@ -0,0 +1,313 @@
+/*!\file:  dakota_core.cpp
+ * \brief: wrapper to the Dakota capabilities. qmu fires up Dakota, and registers a Dakota Pluggin
+ * which will be in charge of running the solution sequences repeteadly, to garner statistics. 
+ *
+ * This routine deals with running ISSM and Dakota in library mode. In library mode, Dakota does not 
+ * run as an execuatble. Its capabilities are linked into the ISSM software. ISSM calls dakota routines 
+ * directly from the dakota library. qmu.cpp is the code that is in charge of calling those routines. 
+ *
+ * Dakota has its own way of running in parallel (for embarassingly parallel jobs). We do not want that, 
+ * as ISSM knows exactly how to run "really parallel" jobs that use all CPUS. To bypass Dakota's parallelism, 
+ * we overloaded the constructor for the parallel library (see the Dakota patch in the externalpackages/dakota
+ * directory). This overloaded constructor fires up Dakota serially on CPU 0 only! We take care of broadcasting 
+ * to the other CPUS, hence ISSM is running in parallel, and Dakota serially on CPU0. 
+ *
+ * Now, how does CPU 0 drive all other CPUS to carry out sensitivity analysese? By synchronizing its call to 
+ * our ISSM cores (stressbalance_core, thermal_core, transient_core, etc ...) on CPU 0 with all other CPUS. 
+ * This explains the structure of qmu.cpp, where cpu 0 runs Dakota, the Dakota pluggin fires up DakotaSpawnCore.cpp, 
+ * while the other CPUS are waiting for a broadcast from CPU0, once they get it, they also fire up 
+ * DakotaSpawnCore. In the end, DakotaSpawnCore is fired up on all CPUS, with CPU0 having Dakota inputs, that it will 
+ * broacast to other CPUS. 
+ *
+ * Now, how does dakota call the DakotaSpawnCore routine? The DakotaSpawnCore is embedded into the DakotaPlugin object 
+ * which is derived from the Direct Interface Dakota objct. This is the only way to run Dakota in library 
+ * mode (see their developper guide for more info). Dakota registers the DakotaPlugin object into its own 
+ * database, and calls on the embedded DakotaSpawnCore from CPU0. 
+ *
+ */ 
+
+ /* \brief: run core ISSM solution using Dakota inputs coming from CPU 0.
+ * \sa qmu.cpp DakotaPlugin.cpp
+ *
+ * This routine needs to be understood simultaneously with qmu.cpp and DakotaPlugin. 
+ * DakotaSpawnCoreParallel is called by all CPUS, with CPU 0 holding Dakota variable values, along 
+ * with variable descriptors. 
+ *
+ * DakotaSpawnCoreParallel takes care of broadcasting the variables and their descriptors across the MPI 
+ * ring. Once this is done, we use the variables to modify the inputs for the solution core. 
+ * For ex, if "rho_ice" is provided, for ex 920, we include "rho_ice" in the inputs, then 
+ * call the core with the modified inputs. This is the way we get Dakota to explore the parameter 
+ * spce of the core. 
+ *
+ * Once the core is called, we process the results of the core, and using the processed results, 
+ * we compute response functions. The responses are computed on all CPUS, but they are targeted 
+ * for CPU 0, which will get these values back to the Dakota engine. 
+ *
+ */ 
+
+/*include config: {{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+/*}}}*/
+
+/*include ISSM files: */
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../shared/shared.h"
+#include "../classes/classes.h"
+#include "../modules/modules.h"
+
+#if defined(_HAVE_DAKOTA_) && (_DAKOTA_MAJOR_ <= 5) //this only works for Dakota <=5, which had no effective parallel capabilities yet.
+/*Dakota include files:{{{*/
+#if (_DAKOTA_MAJOR_ < 5 || (_DAKOTA_MAJOR_ == 5 && _DAKOTA_MINOR_ < 3))
+#include <ParallelLibrary.H>
+#include <ProblemDescDB.H>
+#include <DakotaStrategy.H>
+#include <DakotaModel.H>
+#include <DakotaInterface.H>
+#else
+#include <ParallelLibrary.hpp>
+#include <ProblemDescDB.hpp>
+#include <DakotaStrategy.hpp>
+#include <DakotaModel.hpp>
+#include <DakotaInterface.hpp>
+#endif
+/*}}}*/
+
+void DakotaFree(double** pvariables,char*** pvariables_descriptors,char*** presponses_descriptors,int numvariables,int numresponses){ /*{{{*/
+
+	/*\brief DakotaFree: free allocations on other cpus, not done by Dakota.*/
+
+	int i;
+	int my_rank;
+
+	double  *variables             = NULL;
+	char   **variables_descriptors = NULL;
+	char   **responses_descriptors = NULL;
+	char    *string                = NULL;
+
+	/*recover pointers: */
+	variables=*pvariables;
+	variables_descriptors=*pvariables_descriptors;
+	responses_descriptors=*presponses_descriptors;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	/*Free variables and variables_descriptors only on cpu !=0*/
+	if(my_rank!=0){
+		xDelete<double>(variables);
+		for(i=0;i<numvariables;i++){
+			string=variables_descriptors[i];
+			xDelete<char>(string);
+		}
+		xDelete<char*>(variables_descriptors);
+	}
+
+	//responses descriptors on every cpu
+	for(i=0;i<numresponses;i++){
+		string=responses_descriptors[i];
+		xDelete<char>(string);
+	}
+	//rest of dynamic allocations.
+	xDelete<char*>(responses_descriptors);
+
+	/*Assign output pointers:*/
+	*pvariables=variables;
+	*pvariables_descriptors=variables_descriptors;
+	*presponses_descriptors=responses_descriptors;
+} /*}}}*/
+void DakotaMPI_Bcast(double** pvariables, char*** pvariables_descriptors,int* pnumvariables, int* pnumresponses){ /*{{{*/
+
+	/* * \brief: broadcast variables_descriptors, variables, numvariables and numresponses
+	 * from cpu 0 to all other cpus.
+	 */ 
+
+	int i;
+	int my_rank;
+
+	/*inputs and outputs: */
+	double* variables=NULL;
+	char**  variables_descriptors=NULL;
+	int     numvariables;
+	int     numresponses;
+
+	/*intermediary: */
+	char* string=NULL;
+	int   string_length;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	/*recover inputs from pointers: */
+	variables=*pvariables;
+	variables_descriptors=*pvariables_descriptors;
+	numvariables=*pnumvariables;
+	numresponses=*pnumresponses;
+
+	/*numvariables: */
+	ISSM_MPI_Bcast(&numvariables,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+	/*variables:*/
+	if(my_rank!=0)variables=xNew<double>(numvariables);
+	ISSM_MPI_Bcast(variables,numvariables,MPI_DOUBLE,0,IssmComm::GetComm()); 
+
+	/*variables_descriptors: */
+	if(my_rank!=0){
+		variables_descriptors=xNew<char*>(numvariables);
+	}
+	for(i=0;i<numvariables;i++){
+		if(my_rank==0){
+			string=variables_descriptors[i];
+			string_length=(strlen(string)+1)*sizeof(char);
+		}
+		ISSM_MPI_Bcast(&string_length,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+		if(my_rank!=0)string=xNew<char>(string_length);
+		ISSM_MPI_Bcast(string,string_length,ISSM_MPI_CHAR,0,IssmComm::GetComm()); 
+		if(my_rank!=0)variables_descriptors[i]=string;
+	}
+
+	/*numresponses: */
+	ISSM_MPI_Bcast(&numresponses,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+	/*Assign output pointers:*/
+	*pnumvariables=numvariables;
+	*pvariables=variables;
+	*pvariables_descriptors=variables_descriptors;
+	*pnumresponses=numresponses;
+} /*}}}*/
+int  DakotaSpawnCore(double* d_responses, int d_numresponses, double* d_variables, char** d_variables_descriptors,int d_numvariables, void* void_femmodel,int counter){ /*{{{*/
+
+	/*Notice the d_, which prefixes anything that is being provided to us by the Dakota pluggin. Careful. some things are ours, some are dakotas!: */
+
+	char     **responses_descriptors    = NULL;      //these are our! there are only numresponsedescriptors of them, not d_numresponses!!!
+	int        numresponsedescriptors;
+	int        solution_type;
+	bool       control_analysis         = false;
+	void     (*solutioncore)(FemModel*) = NULL;
+	FemModel  *femmodel                 = NULL;
+	bool       nodakotacore             = true;
+
+	/*If counter==-1 on cpu0, it means that the dakota runs are done. In which case, bail out and return 0: */
+	ISSM_MPI_Bcast(&counter,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+	if(counter==-1)return 0;
+
+	/*cast void_femmodel to FemModel, and at the same time, make a copy, so we start this new core run for this specific sample 
+	 *with a brand new copy of the model, which has not been tempered with by previous dakota runs: */
+	femmodel=(reinterpret_cast<FemModel*>(void_femmodel))->copy();
+
+	/*retrieve parameters: */
+	femmodel->parameters->FindParam(&responses_descriptors,&numresponsedescriptors,QmuResponsedescriptorsEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+
+	if(VerboseQmu()) _printf0_("qmu iteration: " << counter << "\n");
+
+	/* only cpu 0, running dakota is providing us with variables and variables_descriptors and numresponses: broadcast onto other cpus: */
+	DakotaMPI_Bcast(&d_variables,&d_variables_descriptors,&d_numvariables,&d_numresponses);
+
+	/*Modify core inputs in objects contained in femmodel, to reflect the dakota variables inputs: */
+	InputUpdateFromDakotax(femmodel,d_variables,d_variables_descriptors,d_numvariables);
+
+	/*Determine solution sequence: */
+	if(VerboseQmu()) _printf0_("Starting " << EnumToStringx(solution_type) << " core:\n");
+	WrapperCorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type,nodakotacore);
+
+	/*Run the core solution sequence: */
+	solutioncore(femmodel);
+
+	/*compute responses: */
+	if(VerboseQmu()) _printf0_("compute dakota responses:\n");
+	femmodel->DakotaResponsesx(d_responses,responses_descriptors,numresponsedescriptors,d_numresponses);
+
+	/*Free ressources:*/
+	DakotaFree(&d_variables,&d_variables_descriptors,&responses_descriptors, d_numvariables, numresponsedescriptors);
+
+	/*Avoid leaks here: */
+	delete femmodel;
+
+	return 1; //this is critical! do not return 0, otherwise, dakota_core will stop running!
+} 
+/*}}}*/
+void dakota_core(FemModel* femmodel){  /*{{{*/
+
+
+	int                my_rank;
+	char              *dakota_input_file  = NULL;
+	char              *dakota_output_file = NULL;
+	char              *dakota_error_file  = NULL;
+	Dakota::ModelLIter ml_iter;
+
+	/*Recover dakota_input_file, dakota_output_file and dakota_error_file, in the parameters dataset in parallel */
+	femmodel->parameters->FindParam(&dakota_input_file,QmuInNameEnum);
+	femmodel->parameters->FindParam(&dakota_output_file,QmuOutNameEnum);
+	femmodel->parameters->FindParam(&dakota_error_file,QmuErrNameEnum);
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	if(my_rank==0){
+
+		// Instantiate/initialize the parallel library and problem description
+		// database objects.
+		char* dakotamode=xNew<char>(strlen("serial")+1);
+		xMemCpy<char>(dakotamode,"serial",strlen("serial")+1);
+		Dakota::ParallelLibrary parallel_lib(dakotamode); //use our own ISSM Dakota library mode constructor, which only fires up Dakota on CPU 0. 
+		Dakota::ProblemDescDB problem_db(parallel_lib); 
+		xDelete<char>(dakotamode);
+
+		// Manage input file parsing, output redirection, and restart processing
+		// without a CommandLineHandler.  This version relies on parsing of an
+		// input file.
+		problem_db.manage_inputs(dakota_input_file);
+		// specify_outputs_restart() is only necessary if specifying non-defaults
+		parallel_lib.specify_outputs_restart(dakota_output_file,dakota_error_file,NULL,NULL);
+
+		// Instantiate the Strategy object (which instantiates all Model and
+		// Iterator objects) using the parsed information in problem_db.
+		Dakota::Strategy selected_strategy(problem_db);
+
+		// convenience function for iterating over models and performing any
+		// interface plug-ins
+		Dakota::ModelList& models = problem_db.model_list();
+
+		for (ml_iter = models.begin(); ml_iter != models.end(); ml_iter++) {
+
+			Dakota::Interface& interface = ml_iter->interface();
+
+			//set DB nodes to the existing Model specification
+			problem_db.set_db_model_nodes(ml_iter->model_id());
+
+			// Serial case: plug in derived Interface object without an analysisComm
+			interface.assign_rep(new SIM::IssmDirectApplicInterface(problem_db,(void*)femmodel), false);
+		}
+
+		// Execute the strategy
+		problem_db.lock(); // prevent run-time DB queries
+		selected_strategy.run_strategy();
+
+		//Warn other cpus that we are done running the dakota iterator, by setting the counter to -1:
+		DakotaSpawnCore(NULL,0, NULL,NULL,0,femmodel,-1);
+
+	}
+	else{
+
+		for(;;){
+			if(!DakotaSpawnCore(NULL,0, NULL,NULL,0,femmodel,0))break; //counter came in at -1 on cpu0, bail out.
+		}
+	}
+
+	/*Free ressources:*/
+	xDelete<char>(dakota_input_file);
+	xDelete<char>(dakota_error_file);
+	xDelete<char>(dakota_output_file);
+
+} /*}}}*/
+#else
+void dakota_core(FemModel* femmodel){ 
+	_error_("dakota_core for versions of Dakota >=6 should not be used anymore! Use instead the issm_dakota  executable!");
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/damage_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/damage_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/damage_core.cpp	(revision 21239)
@@ -0,0 +1,51 @@
+/* 
+ * \brief: damage_core.cpp: core for the damage solution
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void damage_core(FemModel* femmodel){
+
+	/*intermediary*/
+	bool   save_results;
+	bool   dakota_analysis     = false;
+	int    solution_type,stabilization;
+	int    numoutputs          = 0; 
+	char   **requested_outputs = NULL;
+
+			
+	//first recover parameters common to all solutions
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&numoutputs,DamageEvolutionNumRequestedOutputsEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,DamageEvolutionRequestedOutputsEnum);
+	femmodel->parameters->FindParam(&stabilization,DamageStabilizationEnum);
+
+	if(VerboseSolution()) _printf0_("   computing damage\n");
+	Damagex(femmodel); /* optionally calculate damage analytically first */
+	femmodel->SetCurrentConfiguration(DamageEvolutionAnalysisEnum);
+	if(stabilization==4){
+		solutionsequence_fct(femmodel);
+	}
+	else{
+		solutionsequence_linear(femmodel);
+	}
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+	}
+
+	/*Free resources:*/	
+	if(numoutputs){
+		for(int i=0;i<numoutputs;i++){
+			xDelete<char>(requested_outputs[i]);
+		} 
+		xDelete<char*>(requested_outputs);
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/depthaverage_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/depthaverage_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/depthaverage_core.cpp	(revision 21239)
@@ -0,0 +1,38 @@
+/*!\file: depthaverage_core.cpp
+ * \brief: core of the extrusion solution
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../modules/modules.h"
+
+void depthaverage_core(FemModel* femmodel){
+
+	/*Intermediaries*/
+	int domaintype,elementtype;
+
+	if(VerboseSolution()) _printf0_("depth averaging solution...\n");
+
+	/*Get parameters*/
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&elementtype,MeshElementtypeEnum);
+
+	/*If this is a 2D horizontal domain, return (no need to extrude)*/
+	if(domaintype==Domain2DhorizontalEnum) return;
+
+	/*Special method for Penta, otherwise call solution sequence*/
+	if(elementtype==PentaEnum){
+		int inputenum,input_average_enum;
+		femmodel->parameters->FindParam(&inputenum,InputToDepthaverageInEnum);
+		femmodel->parameters->FindParam(&input_average_enum,InputToDepthaverageOutEnum);
+		InputDepthAverageAtBasex(femmodel,inputenum,input_average_enum);
+	}
+	else{
+		/*Call on core computations: */
+		femmodel->SetCurrentConfiguration(DepthAverageAnalysisEnum);
+		solutionsequence_linear(femmodel);
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/dummy_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/dummy_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/dummy_core.cpp	(revision 21239)
@@ -0,0 +1,11 @@
+/*!\file: dummy_core.cpp
+ * \brief: dummy core (nothing done)
+ */ 
+
+class FemModel;
+
+void dummy_core(FemModel* femmodel){
+
+	/*We do not do anything*/
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/extrudefrombase_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/extrudefrombase_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/extrudefrombase_core.cpp	(revision 21239)
@@ -0,0 +1,37 @@
+/*!\file: extrudefrombase_core.cpp
+ * \brief: core of the extrusion solution
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../modules/modules.h"
+
+void extrudefrombase_core(FemModel* femmodel){
+
+	/*Intermediaries*/
+	int elementtype,domaintype;
+
+	if(VerboseSolution()) _printf0_("extruding solution from base...\n");
+
+	/*Get parameters*/
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&elementtype,MeshElementtypeEnum);
+
+	/*If this is a 2D horizontal domain, return (no need to extrude)*/
+	if(domaintype==Domain2DhorizontalEnum) return;
+
+	/*Special method for Penta, otherwise call solution sequence*/
+	if(elementtype==PentaEnum){
+		int inputenum; femmodel->parameters->FindParam(&inputenum,InputToExtrudeEnum);
+		InputExtrudex(femmodel,inputenum,-1);
+	}
+	else{
+		/*Call on core computations: */
+		femmodel->SetCurrentConfiguration(ExtrudeFromBaseAnalysisEnum);
+		femmodel->UpdateConstraintsExtrudeFromBasex();
+		solutionsequence_linear(femmodel);
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/extrudefromtop_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/extrudefromtop_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/extrudefromtop_core.cpp	(revision 21239)
@@ -0,0 +1,37 @@
+/*!\file: extrudefromtop_core.cpp
+ * \brief: core of the extrusion solution
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../modules/modules.h"
+
+void extrudefromtop_core(FemModel* femmodel){
+
+	/*Intermediaries*/
+	int elementtype,domaintype;
+
+	if(VerboseSolution()) _printf0_("extruding solution from top...\n");
+
+	/*Get parameters*/
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&elementtype,MeshElementtypeEnum);
+
+	/*If this is a 2D horizontal domain, return (no need to extrude)*/
+	if(domaintype==Domain2DhorizontalEnum) return;
+
+	/*Special method for Penta, otherwise call solution sequence*/
+	if(elementtype==PentaEnum){
+		int inputenum; femmodel->parameters->FindParam(&inputenum,InputToExtrudeEnum);
+		InputExtrudex(femmodel,inputenum,+1);
+	}
+	else{
+		/*Call on core computations: */
+		femmodel->SetCurrentConfiguration(ExtrudeFromTopAnalysisEnum);
+		femmodel->UpdateConstraintsExtrudeFromTopx();
+		solutionsequence_linear(femmodel);
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/gia_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/gia_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/gia_core.cpp	(revision 21239)
@@ -0,0 +1,60 @@
+/*!\file: gia_core.cpp
+ * \brief: core of the GIA solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+void gia_core(FemModel* femmodel){
+
+	Vector<IssmDouble> *wg    = NULL;
+	Vector<IssmDouble> *dwdtg = NULL;
+	IssmDouble          *x    = NULL;
+	IssmDouble          *y    = NULL;
+
+	/*parameters: */
+	bool save_results;
+	int  gsize;
+	int  configuration_type;
+
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+
+	if(VerboseSolution()) _printf0_("   computing GIA\n");
+
+	/*Call on core computations: */
+	femmodel->SetCurrentConfiguration(GiaAnalysisEnum);
+
+	/*Figure out size of g-set deflection vector and allocate solution vector: */
+	gsize      = femmodel->nodes->NumberOfDofs(configuration_type,GsetEnum);
+	wg = new Vector<IssmDouble>(gsize);
+	dwdtg = new Vector<IssmDouble>(gsize);
+
+	/*first, recover x and y vectors from vertices: */
+	VertexCoordinatesx(&x,&y,NULL,femmodel->vertices); //no need for z coordinate
+
+	/*call the main module: */
+	femmodel->Deflection(wg,dwdtg,x,y);
+
+	/*assemble vector: */
+	wg->Assemble();
+	dwdtg->Assemble();
+
+	InputUpdateFromVectorx(femmodel,wg,GiaWEnum,VertexSIdEnum);
+	InputUpdateFromVectorx(femmodel,dwdtg,GiadWdtEnum,VertexSIdEnum);
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		int outputs[2] = {GiaWEnum,GiadWdtEnum};
+		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
+	}
+	
+	xDelete<IssmDouble>(x);
+	xDelete<IssmDouble>(y);
+
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/hydrology_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/hydrology_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/hydrology_core.cpp	(revision 21239)
@@ -0,0 +1,104 @@
+/*!\file: hydrology_core.cpp
+ * \brief: core of the hydrology solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void hydrology_core(FemModel* femmodel){
+
+	/*intermediary*/
+	int  hydrology_model;
+	bool save_results;
+	bool modify_loads=true;
+	bool isefficientlayer;
+
+	/*first recover parameters common to all solutions*/
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&hydrology_model,HydrologyModelEnum);
+	
+	if(VerboseSolution()) _printf0_("   computing water heads\n");
+			
+	/*first compute slopes: */
+	if (hydrology_model==HydrologyshreveEnum){
+		surfaceslope_core(femmodel);
+		bedslope_core(femmodel);
+	}
+
+	/*Using the Shreve based Model*/
+	if (hydrology_model==HydrologyshreveEnum){
+		if(VerboseSolution()) _printf0_("   computing water column\n");
+		femmodel->SetCurrentConfiguration(HydrologyShreveAnalysisEnum);
+		solutionsequence_nonlinear(femmodel,modify_loads);
+		
+		/*transfer water column thickness to old water column thickness: */
+		InputDuplicatex(femmodel,WatercolumnEnum,WaterColumnOldEnum);
+		
+		if(save_results){
+			if(VerboseSolution()) _printf0_("   saving results \n");
+			int outputs[3] = {WatercolumnEnum,HydrologyWaterVxEnum,HydrologyWaterVyEnum};
+			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3);
+			
+			/*unload results*/
+			if(VerboseSolution()) _printf0_("   saving temporary results\n");
+			OutputResultsx(femmodel);
+		}
+	}
+
+	/*Using the double continuum model*/
+	else if (hydrology_model==HydrologydcEnum){
+		InputDuplicatex(femmodel,SedimentHeadEnum,SedimentHeadOldEnum);
+		femmodel->parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum);
+		if (isefficientlayer){
+			InputDuplicatex(femmodel,EplHeadEnum,EplHeadOldEnum);
+			InputDuplicatex(femmodel,HydrologydcEplThicknessEnum,HydrologydcEplThicknessOldEnum);
+		}
+		
+		/*Proceed now to heads computations*/
+		solutionsequence_hydro_nonlinear(femmodel);
+
+		if(save_results){
+			if(VerboseSolution()) _printf0_("   saving results \n");
+			if(isefficientlayer){
+				int outputs[9] = {SedimentHeadEnum,SedimentHeadResidualEnum,EplHeadEnum,HydrologydcMaskEplactiveNodeEnum,HydrologydcMaskEplactiveEltEnum,EplHeadSlopeXEnum,EplHeadSlopeYEnum,HydrologydcEplThicknessEnum,EffectivePressureEnum};
+				femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],9);
+			}
+			else{
+				int outputs[3] = {SedimentHeadEnum,SedimentHeadResidualEnum,EffectivePressureEnum};
+				femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3);
+			}
+			/*unload results*/
+			if(VerboseSolution()) _printf0_("   saving temporary results\n");
+			OutputResultsx(femmodel);
+		}
+	}
+
+	else if (hydrology_model==HydrologysommersEnum){	
+		femmodel->SetCurrentConfiguration(HydrologySommersAnalysisEnum);	
+      InputDuplicatex(femmodel,HydrologyHeadEnum,HydrologyHeadOldEnum);	
+		solutionsequence_nonlinear(femmodel,modify_loads); 
+		if(VerboseSolution()) _printf0_("   updating gap height\n");
+		HydrologySommersAnalysis* analysis = new HydrologySommersAnalysis();
+		analysis->UpdateGapHeight(femmodel);
+		delete analysis;
+		
+		if(save_results){
+			if(VerboseSolution()) _printf0_("   saving results \n");
+			int outputs[3] = {HydrologyHeadEnum,HydrologyGapHeightEnum,EffectivePressureEnum};
+			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3);
+			
+			/*unload results*/
+			if(VerboseSolution()) _printf0_("   saving temporary results\n");
+			OutputResultsx(femmodel);
+		}
+	}
+
+	else{
+		_error_("Hydrology model "<< EnumToStringx(hydrology_model) <<" not supported yet");
+	}
+}
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/levelsetfunctionslope_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/levelsetfunctionslope_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/levelsetfunctionslope_core.cpp	(revision 21239)
@@ -0,0 +1,52 @@
+/*!\file: levelsetfunctionslope_core.cpp
+ * \brief: core of the slope solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../modules/modules.h"
+
+void levelsetfunctionslope_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool save_results;
+	int  domaintype;
+
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+
+	if(VerboseSolution()) _printf0_("computing slope of levelset function...\n");
+
+	/*Call on core computations: */
+	femmodel->SetCurrentConfiguration(L2ProjectionBaseAnalysisEnum);
+
+	femmodel->parameters->SetParam(LevelsetfunctionSlopeXEnum,InputToL2ProjectEnum);
+	solutionsequence_linear(femmodel);
+
+	if(domaintype!=Domain2DverticalEnum){
+		femmodel->parameters->SetParam(LevelsetfunctionSlopeYEnum,InputToL2ProjectEnum);
+		solutionsequence_linear(femmodel);
+	}
+	if(domaintype==Domain2DverticalEnum){
+	      femmodel->parameters->SetParam(LevelsetfunctionSlopeXEnum,InputToExtrudeEnum);
+		extrudefrombase_core(femmodel);
+	}
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("saving results:\n");
+		if(domaintype!=Domain2DverticalEnum){
+			int outputs[2] = {LevelsetfunctionSlopeXEnum,LevelsetfunctionSlopeYEnum};
+			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
+
+		}
+		else{
+			int outputs = LevelsetfunctionSlopeXEnum;
+			femmodel->RequestedOutputsx(&femmodel->results,&outputs,1);
+		}
+	}
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/masstransport_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/masstransport_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/masstransport_core.cpp	(revision 21239)
@@ -0,0 +1,83 @@
+/*!\file: masstransport_core.cpp
+ * \brief: core of the masstransport solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void masstransport_core(FemModel* femmodel){
+
+	/*parameters: */
+	int    numoutputs,domaintype;
+	bool   save_results;
+	bool   isFS,isfreesurface,dakota_analysis;
+	int    solution_type,stabilization;
+	char** requested_outputs = NULL;
+
+	/*activate configuration*/
+	femmodel->SetCurrentConfiguration(MasstransportAnalysisEnum);
+
+	/*recover parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
+	femmodel->parameters->FindParam(&isfreesurface,MasstransportIsfreesurfaceEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&numoutputs,MasstransportNumRequestedOutputsEnum);
+	femmodel->parameters->FindParam(&stabilization,MasstransportStabilizationEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,MasstransportRequestedOutputsEnum);
+			
+	if(VerboseSolution()) _printf0_("   computing mass transport\n");
+
+	/*Transport mass or free surface*/
+	if(isFS && isfreesurface){
+		if(VerboseSolution()) _printf0_("   call free surface computational core\n");
+		femmodel->SetCurrentConfiguration(FreeSurfaceBaseAnalysisEnum);
+		solutionsequence_linear(femmodel);
+		femmodel->parameters->SetParam(BaseEnum,InputToExtrudeEnum);
+		extrudefrombase_core(femmodel);
+
+		femmodel->SetCurrentConfiguration(FreeSurfaceTopAnalysisEnum);
+		solutionsequence_linear(femmodel);
+		femmodel->parameters->SetParam(SurfaceEnum,InputToExtrudeEnum);
+		extrudefromtop_core(femmodel);
+	}
+	else{
+		if(VerboseSolution()) _printf0_("   call computational core\n");
+		femmodel->parameters->SetParam(VxEnum,InputToDepthaverageInEnum);
+		femmodel->parameters->SetParam(VxAverageEnum,InputToDepthaverageOutEnum);
+		depthaverage_core(femmodel);
+		if(domaintype!=Domain2DverticalEnum){
+			femmodel->parameters->SetParam(VyEnum,InputToDepthaverageInEnum);
+			femmodel->parameters->SetParam(VyAverageEnum,InputToDepthaverageOutEnum);
+			depthaverage_core(femmodel);
+		}
+		femmodel->SetCurrentConfiguration(MasstransportAnalysisEnum);
+		if(stabilization==4){
+			solutionsequence_fct(femmodel);
+		}
+		else{
+			solutionsequence_linear(femmodel);
+		}
+		femmodel->parameters->SetParam(ThicknessEnum,InputToExtrudeEnum);
+		extrudefrombase_core(femmodel);
+		femmodel->parameters->SetParam(BaseEnum,InputToExtrudeEnum);
+		extrudefrombase_core(femmodel);
+		femmodel->parameters->SetParam(SurfaceEnum,InputToExtrudeEnum);
+		extrudefrombase_core(femmodel);
+	}
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+	}
+
+	if(solution_type==MasstransportSolutionEnum)femmodel->RequestedDependentsx();
+
+	/*Free ressources:*/
+	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/meshdeformation_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/meshdeformation_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/meshdeformation_core.cpp	(revision 21239)
@@ -0,0 +1,30 @@
+/*!\file: meshdeformation_core.cpp
+ * \brief: core of the slope solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../modules/modules.h"
+
+void meshdeformation_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool save_results;
+
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+
+	if(VerboseSolution()) _printf0_("computing mesh deformation (elasticity)...\n");
+
+	/*Call on core computations: */
+	femmodel->SetCurrentConfiguration(MeshdeformationAnalysisEnum);
+	solutionsequence_linear(femmodel);
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("saving results:\n");
+	}
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/movingfront_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/movingfront_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/movingfront_core.cpp	(revision 21239)
@@ -0,0 +1,86 @@
+/*!\file: levelset_core.cpp
+ * \brief: levelset-module to update the ice domain
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../modules/modules.h"
+
+void movingfront_core(FemModel* femmodel){
+
+	/* intermediaries */
+	bool save_results,isstressbalance,ismasstransport,isthermal,isenthalpy,islevelset,ismovingfront;
+	int  domaintype, num_extrapol_vars, index,reinit_frequency,step;
+	int* extrapol_vars=NULL;
+	Analysis  *analysis=NULL;
+
+	/* recover parameters */
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&isstressbalance,TransientIsstressbalanceEnum);
+	femmodel->parameters->FindParam(&ismasstransport,TransientIsmasstransportEnum);
+	femmodel->parameters->FindParam(&isthermal,TransientIsthermalEnum);
+	femmodel->parameters->FindParam(&ismovingfront,TransientIsmovingfrontEnum);
+	femmodel->parameters->FindParam(&reinit_frequency,LevelsetReinitFrequencyEnum);
+	femmodel->parameters->FindParam(&step,StepEnum);
+	if(isthermal && domaintype==Domain3DEnum) femmodel->parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);
+
+	if(!ismovingfront) return;
+
+	/* start the work from here */
+	Calvingx(femmodel);
+	if(VerboseSolution()) _printf0_("   computing level set transport\n");
+
+	/* smoothen slope of lsf for computation of normal on ice domain*/
+	levelsetfunctionslope_core(femmodel);
+
+	/* determine variables for extrapolation */
+	num_extrapol_vars=0;
+	if(isstressbalance) num_extrapol_vars+=2;
+	if(ismasstransport) num_extrapol_vars+=1;
+	if(isthermal && domaintype==Domain3DEnum) num_extrapol_vars+=1;
+	extrapol_vars=xNew<int>(num_extrapol_vars);
+	index=0;
+	if(isstressbalance){
+		extrapol_vars[index]=VxEnum; index++;
+		extrapol_vars[index]=VyEnum; index++;
+	}
+	if(ismasstransport){extrapol_vars[index]=ThicknessEnum; index++;}
+	if(isthermal && domaintype==Domain3DEnum){
+		if(isenthalpy){extrapol_vars[index]=EnthalpyEnum;}
+		else{extrapol_vars[index]=TemperatureEnum;}
+		index++;
+	}
+
+	/* extrapolate */
+	analysis = new ExtrapolationAnalysis();
+	for(int iv=0;iv<num_extrapol_vars;iv++){
+		femmodel->parameters->SetParam(extrapol_vars[iv],ExtrapolationVariableEnum); 
+		analysis->Core(femmodel);
+	}
+	xDelete<int>(extrapol_vars);
+	delete analysis;	
+
+	/* solve level set equation */
+	analysis = new LevelsetAnalysis();
+	analysis->Core(femmodel);
+	delete analysis;
+
+	/*Reset levelset if needed*/
+	if(reinit_frequency && (step%reinit_frequency==0)){
+		if(VerboseSolution()) _printf0_("   reinitializing level set\n");
+		femmodel->ResetLevelset();
+	}
+
+	/* update vertices included for next calculation */
+	GetMaskOfIceVerticesLSMx(femmodel);
+
+	/* add computation domain mask to outputs */
+	if(save_results){
+		int outputs[1] = {IceMaskNodeActivationEnum};
+		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],1);
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/sealevelrise_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/sealevelrise_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/sealevelrise_core.cpp	(revision 21239)
@@ -0,0 +1,360 @@
+/*!\file: sealevelrise_core.cpp
+ * \brief: core of the SLR solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void sealevelrise_core(FemModel* femmodel){ /*{{{*/
+
+	Vector<IssmDouble> *Sg    = NULL;
+	Vector<IssmDouble> *Sg_absolute  = NULL; 
+	Vector<IssmDouble> *Sg_eustatic  = NULL; 
+	Vector<IssmDouble> *U_radial  = NULL; 
+	Vector<IssmDouble> *U_north   = NULL; 
+	Vector<IssmDouble> *U_east    = NULL; 
+	bool save_results,isslr,iscoupler;
+	int configuration_type;
+	int solution_type;
+	int        numoutputs        = 0;
+	char     **requested_outputs = NULL;
+	
+	/*additional parameters: */
+	int  gsize;
+	bool spherical=true;
+	IssmDouble          *latitude   = NULL;
+	IssmDouble          *longitude  = NULL;
+	IssmDouble          *radius     = NULL;
+	IssmDouble          *xx     = NULL;
+	IssmDouble          *yy     = NULL;
+	IssmDouble          *zz     = NULL;
+
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&isslr,TransientIsslrEnum);
+	femmodel->parameters->FindParam(&iscoupler,TransientIscouplerEnum);
+
+	/*first, recover lat,long and radius vectors from vertices: */
+	VertexCoordinatesx(&latitude,&longitude,&radius,femmodel->vertices,spherical); 
+
+	/*recover x,y,z vectors from vertices: */
+	VertexCoordinatesx(&xx,&yy,&zz,femmodel->vertices); 
+
+	/*Figure out size of g-set deflection vector and allocate solution vector: */
+	gsize      = femmodel->nodes->NumberOfDofs(configuration_type,GsetEnum);
+
+	/*several cases here, depending on value of iscoupler and isslr: 
+	solution_type == SealevelriseSolutionEnum)       we are running sea level rise core (no coupler)
+	( !iscoupler & !isslr)       we are not interested in being here :) 
+	( !iscoupler & isslr)        we are running in uncoupled mode
+	( iscoupler & isslr)         we are running in coupled mode, and better be earth
+	( iscoupler & !isslr)        we are running in coupled mode, and better be an ice cap
+	*/
+
+	if(solution_type==SealevelriseSolutionEnum){
+		isslr=1;
+		iscoupler=0;
+	}
+
+	/*early return: */
+	if( !iscoupler & !isslr) return;  //we are not interested in being here :) 
+
+	/*In what follows we assume we are all running slr, either in coupled, or uncoupled mode:*/
+	if(VerboseSolution()) _printf0_("   computing sea level rise\n");
+
+	/*set configuration: */
+	if(isslr)femmodel->SetCurrentConfiguration(SealevelriseAnalysisEnum);
+
+	/*transfer deltathickness forcing from ice caps to earth model: */
+	if(iscoupler) TransferForcing(femmodel,SealevelriseDeltathicknessEnum);
+
+	/*call sea-level rise sub cores:*/
+	if(isslr){
+		Sg_eustatic=sealevelrise_core_eustatic(femmodel); //generalized eustatic (Farrel and Clark, Eq 4, 1st, 3rd and 4rd terms on the RHS.
+
+		Sg=sealevelrise_core_noneustatic(femmodel,Sg_eustatic); //ocean loading tems  (2nd and 5th terms on the RHS of Farrel and Clark)
+		
+		/*get results into elements:*/
+		//InputUpdateFromSolutionx(femmodel,Sg);		// from Eric 
+		InputUpdateFromVectorx(femmodel,Sg,SealevelEnum,VertexSIdEnum);
+
+		/*compute other geodetic signatures, such as absolute sea level chagne, components of 3-D crustal motion: */
+		/*Initialize:*/
+		U_radial = new Vector<IssmDouble>(gsize);
+		U_north = new Vector<IssmDouble>(gsize);
+		U_east = new Vector<IssmDouble>(gsize);
+		Sg_absolute = new Vector<IssmDouble>(gsize); 
+		
+		/*call the geodetic main modlule:*/ 
+		femmodel->SealevelriseGeodetic(U_radial,U_north,U_east,Sg,latitude,longitude,radius,xx,yy,zz); 
+
+		/*compute: absolute sea level change = relative sea level change + vertical motion*/
+		Sg->Copy(Sg_absolute); Sg_absolute->AXPY(U_radial,1); 
+		
+		/*get results into elements:*/
+		InputUpdateFromVectorx(femmodel,U_radial,SealevelUmotionEnum,VertexSIdEnum);	// radial displacement 
+		InputUpdateFromVectorx(femmodel,U_north,SealevelNmotionEnum,VertexSIdEnum);	// north motion 
+		InputUpdateFromVectorx(femmodel,U_east,SealevelEmotionEnum,VertexSIdEnum);		// east motion 
+		InputUpdateFromVectorx(femmodel,Sg_absolute,SealevelAbsoluteEnum,VertexSIdEnum);
+		
+		if(save_results){
+			if(VerboseSolution()) _printf0_("   saving results\n");
+			femmodel->parameters->FindParam(&requested_outputs,&numoutputs,SealevelriseRequestedOutputsEnum);
+			femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+		}
+			
+		if(solution_type==SealevelriseSolutionEnum)femmodel->RequestedDependentsx();
+
+		/*Free ressources:*/	
+		delete Sg;
+		delete Sg_eustatic;
+		delete U_radial;
+		delete U_north;
+		delete U_east;
+		delete Sg_absolute;
+		if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+	}
+
+	/*transfer sea-level back to ice caps: */
+	if(iscoupler)TransferSealevel(femmodel,SealevelEnum);
+} 
+/*}}}*/
+void TransferForcing(FemModel* femmodel,int forcingenum){ /*{{{*/
+
+	/*forcing being transferred from models to earth: */
+	IssmDouble** forcings=NULL;
+	IssmDouble*  forcing=NULL; 
+	Vector<IssmDouble>* forcingglobal=NULL; 
+	int*         nvs=NULL;
+	
+	/*transition vectors:*/
+	IssmDouble** transitions=NULL;
+	int          ntransitions; 
+	int*         transitions_m=NULL;
+	int*         transitions_n=NULL;
+	int          nv;
+	
+	/*communicators:*/
+	ISSM_MPI_Comm tocomm;
+	ISSM_MPI_Comm* fromcomms=NULL;
+	ISSM_MPI_Status status;
+	int         my_rank;
+	int         modelid,earthid;
+	int         nummodels;
+
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&modelid,ModelIdEnum);
+	femmodel->parameters->FindParam(&earthid,EarthIdEnum);
+	femmodel->parameters->FindParam(&nummodels,NumModelsEnum);
+	my_rank=IssmComm::GetRank();
+	
+	/*retrieve the inter communicators that will be used to send data from each ice cap to the earth: */
+	if(modelid==earthid){
+		GenericParam<ISSM_MPI_Comm*>* parcoms = dynamic_cast<GenericParam<ISSM_MPI_Comm*>*>(femmodel->parameters->FindParamObject(IcecapToEarthCommEnum));
+		if(!parcoms)_error_("TransferForcing error message: could not find IcecapToEarthComm communicator");
+		fromcomms=parcoms->GetParameterValue();
+	}
+	else {
+		GenericParam<ISSM_MPI_Comm>* parcom = dynamic_cast<GenericParam<ISSM_MPI_Comm>*>(femmodel->parameters->FindParamObject(IcecapToEarthCommEnum));
+		if(!parcom)_error_("TransferForcing error message: could not find IcecapToEarthComm communicator");
+		tocomm=parcom->GetParameterValue();
+	}
+
+	/*For each icecap, retrieve the forcing vector that will be sent to the earth model: */
+	if(modelid!=earthid){
+		nv=femmodel->vertices->NumberOfVertices();
+		GetVectorFromInputsx(&forcing,femmodel,forcingenum,VertexSIdEnum);
+	}
+
+	/*Send the forcing to the earth model:{{{*/
+	if(my_rank==0){
+		if(modelid==earthid){
+			forcings=xNew<IssmDouble*>(nummodels-1);
+			nvs=xNew<int>(nummodels-1);
+			for(int i=0;i<earthid;i++){
+				ISSM_MPI_Recv(nvs+i, 1, ISSM_MPI_INT, 0,i, fromcomms[i], &status);
+				forcings[i]=xNew<IssmDouble>(nvs[i]);
+				ISSM_MPI_Recv(forcings[i], nvs[i], ISSM_MPI_DOUBLE, 0,i, fromcomms[i], &status);
+			}
+			
+		}
+		else{
+			ISSM_MPI_Send(&nv, 1, ISSM_MPI_INT, 0, modelid, tocomm);
+			ISSM_MPI_Send(forcing, nv, ISSM_MPI_DOUBLE, 0, modelid, tocomm);
+		}
+	}
+	/*}}}*/
+
+	/*On the earth model, consolidate all the forcings into one, and update the elements dataset accordingly: {{{*/
+	if(modelid==earthid){
+		
+		/*Out of all the delta thicknesses, build one delta thickness vector made of all the ice cap contributions. 
+		 *First, build the global delta thickness vector in the earth model: */
+		nv=femmodel->vertices->NumberOfVertices();
+		forcingglobal= new Vector<IssmDouble>(nv);
+
+		/*Retrieve transition vectors, used to plug from each ice cap into the global forcing:*/
+		femmodel->parameters->FindParam(&transitions,&ntransitions,&transitions_m,&transitions_n,SealevelriseTransitionsEnum);
+
+		if(ntransitions!=earthid)_error_("TransferForcing error message: number of transition vectors is not equal to the number of icecaps!");
+
+		/*Go through all the delta thicknesses coming from each ice cap: */
+		if(my_rank==0){
+			for(int i=0;i<earthid;i++){
+
+				IssmDouble* forcingfromcap= forcings[i]; //careful, this only exists on rank 0 of the earth model!
+				IssmDouble* transition=transitions[i];
+				int         M=transitions_m[i];
+
+				/*build index to plug values: */
+				int*        index=xNew<int>(M); for(int i=0;i<M;i++)index[i]=reCast<int>(transition[i])-1; //matlab indexing!
+
+
+				/*We are going to plug this vector into the earth model, at the right vertices corresponding to this particular 
+				 * ice cap: */
+				forcingglobal->SetValues(M,index,forcingfromcap,INS_VAL);
+				xDelete<int>(index);
+			}
+		}
+
+		/*Assemble vector:*/
+		forcingglobal->Assemble();
+		
+		/*Plug into elements:*/
+		InputUpdateFromVectorx(femmodel,forcingglobal,forcingenum,VertexSIdEnum);
+	} 
+	/*}}}*/
+
+	/*Free ressources:{{{*/
+	if(forcings){
+		for(int i=0;i<nummodels-1;i++){
+			IssmDouble* temp=forcings[i]; xDelete<IssmDouble>(temp);
+		}
+		xDelete<IssmDouble*>(forcings);
+	}
+	if(forcing)xDelete<IssmDouble>(forcing);
+	if(forcingglobal)delete forcingglobal;
+	if(transitions){
+		for(int i=0;i<earthid;i++){
+			IssmDouble* temp=transitions[i];
+			xDelete<IssmDouble>(temp);
+		}
+		xDelete<IssmDouble*>(transitions);
+		xDelete<int>(transitions_m);
+		xDelete<int>(transitions_n);
+	}
+	if(nvs)xDelete<int>(nvs);
+	/*}}}*/
+
+} /*}}}*/
+void TransferSealevel(FemModel* femmodel,int forcingenum){ /*{{{*/
+
+	/*forcing being transferred from earth to ice caps: */
+	IssmDouble*  forcing=NULL; 
+	IssmDouble*  forcingglobal=NULL; 
+	
+	/*transition vectors:*/
+	IssmDouble** transitions=NULL;
+	int          ntransitions; 
+	int*         transitions_m=NULL;
+	int*         transitions_n=NULL;
+	int          nv;
+	
+	/*communicators:*/
+	ISSM_MPI_Comm fromcomm;
+	ISSM_MPI_Comm* tocomms=NULL;
+	ISSM_MPI_Status status;
+	int         my_rank;
+	int         modelid,earthid;
+	int         nummodels;
+	int         numcoms;
+
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&modelid,ModelIdEnum);
+	femmodel->parameters->FindParam(&earthid,EarthIdEnum);
+	femmodel->parameters->FindParam(&nummodels,NumModelsEnum);
+	my_rank=IssmComm::GetRank();
+	
+	/*retrieve the inter communicators that will be used to send data from earth to ice caps:*/
+	if(modelid==earthid){
+		GenericParam<ISSM_MPI_Comm*>* parcoms = dynamic_cast<GenericParam<ISSM_MPI_Comm*>*>(femmodel->parameters->FindParamObject(IcecapToEarthCommEnum));
+		if(!parcoms)_error_("TransferSealevel error message: could not find IcecapToEarthComm communicator");
+		tocomms=parcoms->GetParameterValue();
+		//femmodel->parameters->FindParam((int**)(&tocomms),&numcoms,IcecapToEarthCommEnum);
+	}
+	else{
+		GenericParam<ISSM_MPI_Comm>* parcom = dynamic_cast<GenericParam<ISSM_MPI_Comm>*>(femmodel->parameters->FindParamObject(IcecapToEarthCommEnum));
+		if(!parcom)_error_("TransferSealevel error message: could not find IcecapToEarthComm communicator");
+		fromcomm=parcom->GetParameterValue();
+		//femmodel->parameters->FindParam((int*)(&fromcomm), IcecapToEarthCommEnum);
+	}
+
+
+	/*Retrieve sea-level on earth model: */
+	if(modelid==earthid){
+		nv=femmodel->vertices->NumberOfVertices();
+		GetVectorFromInputsx(&forcingglobal,femmodel,forcingenum,VertexSIdEnum);
+	}
+
+	/*Send the forcing to the ice caps:{{{*/
+	if(my_rank==0){
+		
+		if(modelid==earthid){
+			
+			/*Retrieve transition vectors, used to figure out global forcing contribution to each ice cap's own elements: */
+			femmodel->parameters->FindParam(&transitions,&ntransitions,&transitions_m,&transitions_n,SealevelriseTransitionsEnum);
+			
+			if(ntransitions!=earthid)_error_("TransferSeaLevel error message: number of transition vectors is not equal to the number of icecaps!");
+
+			for(int i=0;i<earthid;i++){
+				nv=transitions_m[i];
+				forcing=xNew<IssmDouble>(nv);
+				IssmDouble* transition=transitions[i];
+				for(int j=0;j<nv;j++){
+					forcing[j]=forcingglobal[reCast<int>(transition[j])-1];
+				}
+				ISSM_MPI_Send(&nv, 1, ISSM_MPI_INT, 0, i, tocomms[i]);
+				ISSM_MPI_Send(forcing, nv, ISSM_MPI_DOUBLE, 0, i, tocomms[i]);
+			}
+		}
+		else{
+			ISSM_MPI_Recv(&nv, 1, ISSM_MPI_INT, 0, modelid, fromcomm, &status);
+			forcing=xNew<IssmDouble>(nv);
+			ISSM_MPI_Recv(forcing, nv, ISSM_MPI_DOUBLE, 0, modelid, fromcomm, &status);
+		}
+	}
+	/*}}}*/
+
+	/*On each ice cap, spread the forcing across cpus, and update the elements dataset accordingly: {{{*/
+	if(modelid!=earthid){
+
+		ISSM_MPI_Bcast(&nv,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+		if(my_rank!=0)forcing=xNew<IssmDouble>(nv);
+		ISSM_MPI_Bcast(forcing,nv,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+		/*Plug into elements:*/
+		InputUpdateFromVectorx(femmodel,forcing,forcingenum,VertexSIdEnum);
+	} 
+	/*}}}*/
+
+	/*Free ressources:{{{*/
+	if(forcingglobal)xDelete<IssmDouble>(forcingglobal);
+	if(forcing)xDelete<IssmDouble>(forcing);
+	if(transitions){
+		for(int i=0;i<ntransitions;i++){
+			IssmDouble* temp=transitions[i];
+			xDelete<IssmDouble>(temp);
+		}
+		xDelete<IssmDouble*>(transitions);
+		xDelete<int>(transitions_m);
+		xDelete<int>(transitions_n);
+	}
+	/*}}}*/
+
+} /*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/sealevelrise_core_eustatic.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/sealevelrise_core_eustatic.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/sealevelrise_core_eustatic.cpp	(revision 21239)
@@ -0,0 +1,59 @@
+/*!\file: sealevelrise_core_eustatic.cpp
+ * \brief: eustatic core of the SLR solution (terms that are constant with respect to sea-level)
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+Vector<IssmDouble>* sealevelrise_core_eustatic(FemModel* femmodel){
+
+	Vector<IssmDouble> *Sgi    = NULL;
+	IssmDouble          Sgi_oceanaverage   = 0;
+
+	/*parameters: */
+	int  configuration_type;
+	int  gsize;
+	bool spherical=true;
+	IssmDouble *latitude  = NULL;
+	IssmDouble *longitude = NULL;
+	IssmDouble *radius    = NULL;
+
+	/*outputs:*/
+	IssmDouble eustatic;
+
+	/*recover parameters:*/
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+
+	/*first, recover lat,long and radius vectors from vertices: */
+	VertexCoordinatesx(&latitude,&longitude,&radius,femmodel->vertices,spherical); 
+
+	/*Figure out size of g-set deflection vector and allocate solution vector: */
+	gsize = femmodel->nodes->NumberOfDofs(configuration_type,GsetEnum);
+	
+	/*Initialize:*/
+	Sgi = new Vector<IssmDouble>(gsize);
+
+	/*call the eustatic main module: */
+	femmodel->SealevelriseEustatic(Sgi,&eustatic, latitude, longitude, radius); //this computes 
+
+	/*we need to average Sgi over the ocean: RHS term  4 in Eq.4 of Farrel and clarke. Only the elements can do that: */
+	Sgi_oceanaverage=femmodel->SealevelriseOceanAverage(Sgi);
+
+	/*Sg is the sum of the pure eustatic component (term 3) and the contribution from the perturbation to the graviation potential due to the 
+	 * presence of ice (terms 1 and 4 in Eq.4 of Farrel and Clarke):*/
+	Sgi->Shift(-eustatic-Sgi_oceanaverage);
+
+	/*save eustatic value for results: */
+	femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,SealevelEustaticEnum,-eustatic));
+
+	/*clean up and return:*/
+	xDelete<IssmDouble>(latitude);
+	xDelete<IssmDouble>(longitude);
+	xDelete<IssmDouble>(radius);
+	return Sgi;
+}
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/sealevelrise_core_noneustatic.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/sealevelrise_core_noneustatic.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/sealevelrise_core_noneustatic.cpp	(revision 21239)
@@ -0,0 +1,155 @@
+/*!\file: sealevelrise_core_noneustatic.cpp //this computes the contributions from Eq.4 of Farrel and Clarke, rhs terms 2 and 5.
+ * \brief: non eustatic core of the SLR solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void slrconvergence(bool* pconverged, Vector<IssmDouble>* Sg,Vector<IssmDouble>* Sg_old,IssmDouble eps_rel,IssmDouble eps_abs);
+
+Vector<IssmDouble>* sealevelrise_core_noneustatic(FemModel* femmodel,Vector<IssmDouble>* Sg_eustatic){ /*{{{*/
+
+	Vector<IssmDouble> *Sg    = NULL;
+	Vector<IssmDouble> *Sg_old    = NULL;
+
+	Vector<IssmDouble> *Sgo    = NULL; //ocean convolution of the perturbation to gravity potential.
+	IssmDouble          Sgo_oceanaverage = 0;  //average of Sgo over the ocean.
+
+	/*parameters: */
+	int count;
+	bool save_results;
+	int  gsize;
+	int  configuration_type;
+	bool spherical=true;
+	bool converged=true;
+	bool verboseconvolution=true;
+	int max_nonlinear_iterations;
+	IssmDouble           eps_rel;
+	IssmDouble           eps_abs;
+	IssmDouble          *latitude    = NULL;
+	IssmDouble          *longitude    = NULL;
+	IssmDouble          *radius    = NULL;
+	IssmDouble           eustatic;
+
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&max_nonlinear_iterations,SealevelriseMaxiterEnum);
+	femmodel->parameters->FindParam(&eps_rel,SealevelriseReltolEnum);
+	femmodel->parameters->FindParam(&eps_abs,SealevelriseAbstolEnum);
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+
+	/*first, recover lat,long and radius vectors from vertices: */
+	VertexCoordinatesx(&latitude,&longitude,&radius,femmodel->vertices,spherical); 
+
+	/*Figure out size of g-set deflection vector and allocate solution vector: */
+	gsize = femmodel->nodes->NumberOfDofs(configuration_type,GsetEnum);
+	
+	/*Initialize:*/
+	Sg = new Vector<IssmDouble>(gsize);
+	Sg->Assemble();
+	Sg_eustatic->Copy(Sg);  //first initialize Sg with the eustatic component computed in sealevelrise_core_eustatic.
+
+	Sg_old = new Vector<IssmDouble>(gsize);
+	Sg_old->Assemble();
+
+	count=1;
+	converged=false;
+	
+	/*Start loop: */
+	for(;;){
+
+		//save pointer to old sea level rise
+		delete Sg_old; Sg_old=Sg; 
+
+		/*Initialize solution vector: */
+		Sg  = new Vector<IssmDouble>(gsize); Sg->Assemble();
+		Sgo = new Vector<IssmDouble>(gsize); Sgo->Assemble();
+
+		/*call the non eustatic module: */
+		femmodel->SealevelriseNonEustatic(Sgo, Sg_old, latitude, longitude, radius,verboseconvolution);
+	
+		/*assemble solution vector: */
+		Sgo->Assemble(); 
+
+		/*we need to average Sgo over the ocean: RHS term  5 in Eq.4 of Farrel and clarke. Only the elements can do that: */
+		Sgo_oceanaverage=femmodel->SealevelriseOceanAverage(Sgo);
+	
+		/*Sg is the sum of the eustatic term, and the ocean terms: */
+		Sg_eustatic->Copy(Sg); Sg->AXPY(Sgo,1); 
+		Sg->Shift(-Sgo_oceanaverage);
+
+		/*convergence criterion:*/
+		slrconvergence(&converged,Sg,Sg_old,eps_rel,eps_abs);
+
+		/*Increase count: */
+		count++;
+		if(converged==true){
+			break;
+		}
+		if(count>=max_nonlinear_iterations){
+			_printf0_("   maximum number of nonlinear iterations (" << max_nonlinear_iterations << ") exceeded\n"); 
+			converged=true;
+			break;
+		}	
+		
+		/*some minor verbosing adjustment:*/
+		if(count>1)verboseconvolution=false;
+		
+	}
+	if(VerboseConvergence()) _printf0_("\n   total number of iterations: " << count-1 << "\n");
+
+	xDelete<IssmDouble>(latitude);
+	xDelete<IssmDouble>(longitude);
+	xDelete<IssmDouble>(radius);
+	delete Sg_old;
+
+	return Sg;
+} /*}}}*/
+
+void slrconvergence(bool* pconverged, Vector<IssmDouble>* Sg,Vector<IssmDouble>* Sg_old,IssmDouble eps_rel,IssmDouble eps_abs){ /*{{{*/
+	
+	bool converged=true;
+	IssmDouble ndS,nS; 
+	Vector<IssmDouble> *dSg    = NULL;
+
+	//compute norm(du) and norm(u) if requested
+	dSg=Sg_old->Duplicate(); Sg_old->Copy(dSg); dSg->AYPX(Sg,-1.0);
+	ndS=dSg->Norm(NORM_TWO); 
+	
+	if(!xIsNan<IssmDouble>(eps_rel)){
+		nS=Sg_old->Norm(NORM_TWO);
+	}
+
+	if (xIsNan<IssmDouble>(ndS) || xIsNan<IssmDouble>(nS)) _error_("convergence criterion is NaN!");
+
+	//clean up
+	delete dSg;
+
+	//print
+	if(!xIsNan<IssmDouble>(eps_rel)){
+		if((ndS/nS)<eps_rel){
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "      convergence criterion: norm(dS)/norm(S)" << ndS/nS*100 << " < " << eps_rel*100 << " %\n");
+		}
+		else{ 
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "      convergence criterion: norm(dS)/norm(S)" << ndS/nS*100 << " > " << eps_rel*100 << " %\n");
+			converged=false;
+		}
+	}
+	if(!xIsNan<IssmDouble>(eps_abs)){
+		if(ndS<eps_abs){
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "      convergence criterion: norm(dS)" << ndS << " < " << eps_abs << " \n");
+		}
+		else{ 
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "      convergence criterion: norm(dS)" << ndS << " > " << eps_abs << " \n");
+			converged=false;
+		}
+	}
+
+	/*assign output*/
+	*pconverged=converged;
+
+} /*}}}*/
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/smb_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/smb_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/smb_core.cpp	(revision 21239)
@@ -0,0 +1,47 @@
+/*!\file: smb_core.cpp
+ * \brief: core of the smb solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void smb_core(FemModel* femmodel){
+
+	/*parameters: */
+	Analysis* analysis=NULL;
+	int    smb_model;
+	int    numoutputs;
+	bool   save_results;
+	int    solution_type;
+	char** requested_outputs = NULL;
+
+	/*activate configuration*/
+	femmodel->SetCurrentConfiguration(SmbAnalysisEnum);
+
+	/*recover parameters: */
+	femmodel->parameters->FindParam(&smb_model,SmbEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&numoutputs,SmbNumRequestedOutputsEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,SmbRequestedOutputsEnum);
+			
+	if(VerboseSolution()) _printf0_("   computing smb \n");
+ 
+	analysis = new SmbAnalysis();
+	analysis->Core(femmodel);
+	delete analysis;
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+	}
+
+	if(solution_type==SmbSolutionEnum)femmodel->RequestedDependentsx();
+
+	/*Free ressources:*/
+	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/steadystate_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/steadystate_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/steadystate_core.cpp	(revision 21239)
@@ -0,0 +1,130 @@
+/*!\file: steadystate_core.cpp
+ * \brief: core of the steadystate solution 
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+/*Local prototypes*/
+bool steadystateconvergence(Vector<IssmDouble>* tg,Vector<IssmDouble>* tg_old,Vector<IssmDouble>* ug,Vector<IssmDouble>* ug_old,IssmDouble reltol);
+
+void steadystate_core(FemModel* femmodel){
+
+	/*intermediary: */
+	int step; 
+	Vector<IssmDouble>* ug     = NULL;
+	Vector<IssmDouble>* ug_old = NULL;
+	Vector<IssmDouble>* tg     = NULL;
+	Vector<IssmDouble>* tg_old = NULL;
+
+	/*parameters: */
+	bool        save_results,isenthalpy;
+	int         maxiter;
+	IssmDouble  reltol;
+	int         numoutputs        = 0;
+	char** requested_outputs = NULL;
+
+	/* recover parameters:*/
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&maxiter,SteadystateMaxiterEnum);
+	femmodel->parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);
+	femmodel->parameters->FindParam(&reltol,SteadystateReltolEnum);
+	femmodel->parameters->SetParam(false,SaveResultsEnum);
+	femmodel->parameters->FindParam(&numoutputs,SteadystateNumRequestedOutputsEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,SteadystateRequestedOutputsEnum);
+
+	/*intialize counters: */
+	step=1;
+
+	for(;;){
+
+		/* Compute first velocity, then temperature due to high sensitivity of temperature to velocity. */
+		if(VerboseSolution()) _printf0_("\n======================================================\n");
+		if(VerboseSolution()) _printf0_("   computing velocity and temperature for step: " << step << "\n");
+		if(VerboseSolution()) _printf0_("====================================================\n");
+
+		if(VerboseSolution()) _printf0_("\n   -- computing new velocity -- \n\n");
+		stressbalance_core(femmodel);
+		GetSolutionFromInputsx(&ug,femmodel);
+
+		if(VerboseSolution()) _printf0_("\n   -- computing new temperature --\n\n");
+		thermal_core(femmodel);
+		if(!isenthalpy)femmodel->SetCurrentConfiguration(ThermalAnalysisEnum);/*Could be MeltingAnalysis...*/
+		GetSolutionFromInputsx(&tg,femmodel);
+
+		if(step>1){
+			if(VerboseSolution()) _printf0_("   checking steadystate convergence\n");
+			if(steadystateconvergence(tg,tg_old,ug,ug_old,reltol)) break;
+		}
+		if(step>maxiter){
+			if(VerboseSolution()) _printf0_("   maximum number steadystate iterations " << maxiter << " reached\n");
+			break;
+		}
+
+		/*update results and increase counter*/
+		delete tg_old;tg_old=tg;
+		delete ug_old;ug_old=ug;
+		step++;
+	}
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+	}
+
+	/*Free ressources:*/
+	delete tg_old;
+	delete ug_old;
+	delete tg;
+	delete ug;	
+	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+}
+bool steadystateconvergence(Vector<IssmDouble>* tg,Vector<IssmDouble>* tg_old,Vector<IssmDouble>* ug,Vector<IssmDouble>* ug_old,IssmDouble reltol){
+
+	/*Output*/
+	bool converged = true;
+
+	/*Intermediary*/
+	Vector<IssmDouble>* dug    = NULL;
+	Vector<IssmDouble>* dtg    = NULL;
+	IssmDouble          ndt,nt;
+	IssmDouble          ndu,nu;
+
+	/*compute norm(du)/norm(u)*/
+	dug=ug_old->Duplicate(); ug_old->Copy(dug); dug->AYPX(ug,-1.0);
+	ndu=dug->Norm(NORM_TWO); nu=ug_old->Norm(NORM_TWO);
+	if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error_("convergence criterion is NaN!");
+	if((ndu/nu)<reltol){
+		if(VerboseConvergence()) _printf0_("\n"<<setw(50)<<left<<"   Velocity convergence: norm(du)/norm(u)"<<ndu/nu*100<<" < "<<reltol*100<<" %\n");
+	}
+	else{ 
+		if(VerboseConvergence()) _printf0_("\n"<<setw(50)<<left<<"   Velocity convergence: norm(du)/norm(u)"<<ndu/nu*100<<" > "<<reltol*100<<" %\n");
+		converged=false;
+	}
+
+	/*compute norm(dt)/norm(t)*/
+	dtg=tg_old->Duplicate(); tg_old->Copy(dtg); dtg->AYPX(tg,-1.0);
+	ndt=dtg->Norm(NORM_TWO); nt=tg_old->Norm(NORM_TWO);
+	if (xIsNan<IssmDouble>(ndt) || xIsNan<IssmDouble>(nt)) _error_("convergence criterion is NaN!");
+	if((ndt/nt)<reltol){
+		if(VerboseConvergence()) _printf0_(setw(50)<<left<<"   Temperature convergence: norm(dt)/norm(t)"<<ndt/nt*100<<" < "<<reltol*100<<" %\n");
+	}
+	else{ 
+		if(VerboseConvergence()) _printf0_(setw(50)<<left<<"   Temperature convergence: norm(dt)/norm(t)"<<ndt/nt*100<<" > "<<reltol*100<<" %\n");
+		converged=false;
+	}
+
+	/*clean up and return*/
+	delete dtg;
+	delete dug;
+	return converged;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/stressbalance_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/stressbalance_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/stressbalance_core.cpp	(revision 21239)
@@ -0,0 +1,86 @@
+/*!\file: stressbalance_core.cpp
+ * \brief: core of the stressbalance solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../analyses/analyses.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void stressbalance_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool       dakota_analysis;
+	int        domaintype;
+	bool       isSIA,isSSA,isL1L2,isHO,isFS;
+	bool       save_results;
+	int        solution_type;
+	int        numoutputs        = 0;
+	char     **requested_outputs = NULL;
+	Analysis  *analysis          = NULL;
+			
+
+	/* recover parameters:*/
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&isSIA,FlowequationIsSIAEnum);
+	femmodel->parameters->FindParam(&isSSA,FlowequationIsSSAEnum);
+	femmodel->parameters->FindParam(&isL1L2,FlowequationIsL1L2Enum);
+	femmodel->parameters->FindParam(&isHO,FlowequationIsHOEnum);
+	femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&numoutputs,StressbalanceNumRequestedOutputsEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,StressbalanceRequestedOutputsEnum);
+	
+	if(VerboseSolution()) _printf0_("   computing new velocity\n");
+
+	/*Compute slopes if necessary */
+	if(isSIA || (isFS && domaintype==Domain2DverticalEnum)) surfaceslope_core(femmodel);
+	if(isFS){
+		bedslope_core(femmodel);
+		femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+		ResetFSBasalBoundaryConditionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+	}
+
+	/*Compute SIA velocities*/
+	if(isSIA){
+
+		/*Take the last velocity into account so that the velocity on the SSA domain is not zero*/
+		if(isSSA || isL1L2 || isHO ) ResetBoundaryConditions(femmodel,StressbalanceSIAAnalysisEnum);
+
+		analysis = new StressbalanceSIAAnalysis();
+		analysis->Core(femmodel);
+		delete analysis;
+
+		/*Reset velocities for other ice flow models*/
+		if(isSSA || isL1L2 || isHO) ResetBoundaryConditions(femmodel,StressbalanceAnalysisEnum);
+	}
+
+	/*Compute stressbalance for SSA L1L2 HO and FS*/
+	if(isSSA || isL1L2 || isHO || isFS){
+		analysis = new StressbalanceAnalysis();
+		analysis->Core(femmodel);
+		delete analysis;
+	}
+
+	/*Compute vertical velocities*/
+	if (domaintype==Domain3DEnum && (isSIA || isSSA || isL1L2 || isHO)){
+		analysis = new StressbalanceVerticalAnalysis();
+		analysis->Core(femmodel);
+		delete analysis;
+	}
+
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+	}
+
+	if(solution_type==StressbalanceSolutionEnum)femmodel->RequestedDependentsx();
+
+	/*Free ressources:*/	
+	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/surfaceslope_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/surfaceslope_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/surfaceslope_core.cpp	(revision 21239)
@@ -0,0 +1,52 @@
+/*!\file: surfaceslope_core.cpp
+ * \brief: core of the slope solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../modules/modules.h"
+
+void surfaceslope_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool save_results;
+	int  domaintype;
+
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+
+	if(VerboseSolution()) _printf0_("computing slope...\n");
+
+	/*Call on core computations: */
+	femmodel->SetCurrentConfiguration(L2ProjectionBaseAnalysisEnum);
+
+	femmodel->parameters->SetParam(SurfaceSlopeXEnum,InputToL2ProjectEnum);
+	solutionsequence_linear(femmodel);
+
+	if(domaintype!=Domain2DverticalEnum){
+		femmodel->parameters->SetParam(SurfaceSlopeYEnum,InputToL2ProjectEnum);
+		solutionsequence_linear(femmodel);
+	}
+	if(domaintype==Domain2DverticalEnum){
+		femmodel->parameters->SetParam(SurfaceSlopeXEnum,InputToExtrudeEnum);
+		extrudefrombase_core(femmodel);
+	}
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("saving results:\n");
+		if(domaintype!=Domain2DverticalEnum){
+			int outputs[2] = {SurfaceSlopeXEnum,SurfaceSlopeYEnum};
+			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
+
+		}
+		else{
+			int outputs = SurfaceSlopeXEnum;
+			femmodel->RequestedOutputsx(&femmodel->results,&outputs,1);
+		}
+	}
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/thermal_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/thermal_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/thermal_core.cpp	(revision 21239)
@@ -0,0 +1,55 @@
+/*!\file: thermal_core.cpp
+ * \brief: core of the thermal solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../analyses/analyses.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void thermal_core(FemModel* femmodel){
+
+	/*intermediary*/
+	bool   save_results,isenthalpy;
+	bool   dakota_analysis;
+	int    solution_type,numoutputs;
+	char** requested_outputs = NULL;
+	EnthalpyAnalysis * enthalpy_analysis = NULL;
+
+	/*first recover parameters common to all solutions*/
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);
+	femmodel->parameters->FindParam(&numoutputs,ThermalNumRequestedOutputsEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,ThermalRequestedOutputsEnum);
+
+	/*Calculate geothermalflux*/
+	GeothermalFluxx(femmodel);
+
+	if(isenthalpy){
+		enthalpy_analysis = new EnthalpyAnalysis();
+		enthalpy_analysis->Core(femmodel);
+		delete enthalpy_analysis;
+	}
+	else{
+		if(VerboseSolution()) _printf0_("   computing temperatures\n");
+		femmodel->SetCurrentConfiguration(ThermalAnalysisEnum);
+		solutionsequence_thermal_nonlinear(femmodel);
+
+		if(VerboseSolution()) _printf0_("   computing melting\n");
+		femmodel->SetCurrentConfiguration(MeltingAnalysisEnum);
+		solutionsequence_linear(femmodel);
+	}
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+	}
+
+	/*Free ressources:*/	
+	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/transient_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/transient_core.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/transient_core.cpp	(revision 21239)
@@ -0,0 +1,167 @@
+/*!\file: transient_3d_core.cpp
+ * \brief: core of the transient_3d solution 
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <float.h>
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void transient_core(FemModel* femmodel){
+
+	/*parameters: */
+	IssmDouble finaltime,dt,yts;
+	bool       isstressbalance,ismasstransport,issmb,isFS,isthermal,isgroundingline,isgia,isslr,iscoupler,ismovingfront,isdamageevolution,ishydrology;
+	bool       save_results,dakota_analysis;
+	bool       time_adapt;
+	int        output_frequency;
+	int        recording_frequency;
+	int        domaintype,groundingline_migration,smb_model;
+	int        numoutputs;
+	Analysis  *analysis          = NULL;
+	char     **requested_outputs = NULL;
+
+	/*intermediary: */
+	int        step;
+	IssmDouble time;
+
+	/*first, figure out if there was a check point, if so, do a reset of the FemModel* femmodel structure. */
+	femmodel->parameters->FindParam(&recording_frequency,SettingsRecordingFrequencyEnum);
+	if(recording_frequency) femmodel->Restart();
+
+	/*then recover parameters common to all solutions*/
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&step,StepEnum);
+	femmodel->parameters->FindParam(&time,TimeEnum);
+	femmodel->parameters->FindParam(&finaltime,TimesteppingFinalTimeEnum);
+	femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+	femmodel->parameters->FindParam(&yts,ConstantsYtsEnum);
+	femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
+	femmodel->parameters->FindParam(&output_frequency,SettingsOutputFrequencyEnum);
+	femmodel->parameters->FindParam(&time_adapt,TimesteppingTimeAdaptEnum);
+	femmodel->parameters->FindParam(&isstressbalance,TransientIsstressbalanceEnum);
+	femmodel->parameters->FindParam(&ismasstransport,TransientIsmasstransportEnum);
+	femmodel->parameters->FindParam(&issmb,TransientIssmbEnum);
+	femmodel->parameters->FindParam(&isthermal,TransientIsthermalEnum);
+	femmodel->parameters->FindParam(&isgia,TransientIsgiaEnum);
+	femmodel->parameters->FindParam(&isslr,TransientIsslrEnum);
+	femmodel->parameters->FindParam(&iscoupler,TransientIscouplerEnum);
+	femmodel->parameters->FindParam(&isgroundingline,TransientIsgroundinglineEnum);
+	femmodel->parameters->FindParam(&ismovingfront,TransientIsmovingfrontEnum);
+	femmodel->parameters->FindParam(&isdamageevolution,TransientIsdamageevolutionEnum);
+	femmodel->parameters->FindParam(&ishydrology,TransientIshydrologyEnum);
+	femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
+	if(isgroundingline) femmodel->parameters->FindParam(&groundingline_migration,GroundinglineMigrationEnum);
+	femmodel->parameters->FindParam(&numoutputs,TransientNumRequestedOutputsEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,TransientRequestedOutputsEnum);
+
+	while(time < finaltime - (yts*DBL_EPSILON)){ //make sure we run up to finaltime.
+		/*Increment*/
+		if(time_adapt){
+			femmodel->TimeAdaptx(&dt);
+			if(time+dt>finaltime) dt=finaltime-time;
+			femmodel->parameters->SetParam(dt,TimesteppingTimeStepEnum);
+		}
+		step+=1;
+		time+=dt;
+		femmodel->parameters->SetParam(time,TimeEnum);
+		femmodel->parameters->SetParam(step,StepEnum);
+
+		if(VerboseSolution()) _printf0_("iteration " << step << "/" << floor((finaltime-time)/dt)+step << "  time [yr]: " << setprecision(4) << time/yts << " (time step: " << dt/yts << ")\n");
+		if(step%output_frequency==0 || (time >= finaltime - (yts*DBL_EPSILON)) || step==1)
+		 save_results=true;
+		else
+		 save_results=false;
+		femmodel->parameters->SetParam(save_results,SaveResultsEnum);
+
+		if(isthermal && domaintype==Domain3DEnum){ 
+			if(issmb){
+				femmodel->parameters->FindParam(&smb_model,SmbEnum);
+				if(smb_model==SMBpddEnum) ResetBoundaryConditions(femmodel,ThermalAnalysisEnum);
+				if(smb_model==SMBd18opddEnum) ResetBoundaryConditions(femmodel,ThermalAnalysisEnum);
+			}
+			if(VerboseSolution()) _printf0_("   computing thermal regime\n");
+			thermal_core(femmodel);
+		}
+
+		if(ishydrology) hydrology_core(femmodel);
+
+		if(isstressbalance) stressbalance_core(femmodel);
+
+		if(isdamageevolution) damage_core(femmodel);
+
+		if(ismovingfront)	movingfront_core(femmodel);
+
+		/* from here on, prepare geometry for next time step*/
+		if(issmb)smb_core(femmodel);
+
+		if(ismasstransport){
+			masstransport_core(femmodel);
+			femmodel->UpdateVertexPositionsx();
+		}
+		
+		if(isgroundingline){
+			if(VerboseSolution()) _printf0_("   computing new grounding line position\n");
+			GroundinglineMigrationx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+
+			femmodel->parameters->SetParam(MaskGroundediceLevelsetEnum,InputToExtrudeEnum);
+			extrudefrombase_core(femmodel);
+			femmodel->parameters->SetParam(BaseEnum,InputToExtrudeEnum);
+			extrudefrombase_core(femmodel);
+			femmodel->parameters->SetParam(SurfaceEnum,InputToExtrudeEnum);
+			extrudefrombase_core(femmodel);
+				
+			if(save_results){
+				int outputs[3] = {SurfaceEnum,BaseEnum,MaskGroundediceLevelsetEnum};
+				femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3);
+			}
+		}
+
+		/*Calculate new basal melting on floating ice*/
+		FloatingiceMeltingRatex(femmodel);
+		
+		if(isgia){
+			if(VerboseSolution()) _printf0_("   computing glacial isostatic adjustment\n");
+			#ifdef _HAVE_GIA_
+			gia_core(femmodel);
+			#else
+			_error_("ISSM was not compiled with gia capabilities. Exiting");
+			#endif
+		}
+
+		/*Sea level rise: */
+		if(isslr | iscoupler) sealevelrise_core(femmodel);
+
+		/*unload results*/
+		if(VerboseSolution()) _printf0_("   computing requested outputs\n");
+		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs,save_results);
+		if(isgroundingline && (groundingline_migration==SubelementMigrationEnum || groundingline_migration==SubelementMigration2Enum)){
+			int outputs[1] = {MaskGroundediceLevelsetEnum};
+			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],1,save_results);
+		}
+		
+		if(save_results){
+			if(VerboseSolution()) _printf0_("   saving temporary results\n");
+			OutputResultsx(femmodel);
+		}
+
+		if(recording_frequency && (step%recording_frequency==0)){
+			if(VerboseSolution()) _printf0_("   checkpointing model \n");
+			femmodel->CheckPoint();
+		}
+	}
+
+	femmodel->RequestedDependentsx();
+
+	/*Free ressources:*/	
+	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/datastructures/DataSet.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/datastructures/DataSet.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/datastructures/DataSet.cpp	(revision 21239)
@@ -0,0 +1,455 @@
+/*
+ * \file DataSet.cpp
+ * \brief: Implementation of DataSet class
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <cstring>
+#include <vector>
+#include <functional>
+#include <algorithm>
+#include <iostream>
+
+#include "../datastructures/datastructures.h"
+#include "../shared/shared.h"
+#include "../classes/classes.h"
+
+using namespace std;
+/*}}}*/
+
+/*Constructors/Destructors*/
+DataSet::DataSet(){/*{{{*/
+
+	sorted=0;
+	numsorted=0;
+	presorted=0;
+	enum_type=-1;
+	sorted_ids=NULL;
+	id_offsets=NULL;
+
+}
+/*}}}*/
+DataSet::DataSet(int dataset_enum){/*{{{*/
+	enum_type=dataset_enum;
+
+	sorted=0;
+	numsorted=0;
+	presorted=0;
+	sorted_ids=NULL;
+	id_offsets=NULL;
+
+}
+/*}}}*/
+DataSet* DataSet::Copy(void){/*{{{*/
+
+	vector<Object*>::iterator obj;
+	Object* object_copy=NULL;
+
+	DataSet* copy=new DataSet(this->enum_type);
+
+	copy->sorted=this->sorted;
+	copy->numsorted=this->numsorted;
+	copy->presorted=this->presorted;
+
+	/*Now we need to deep copy the objects: */
+	for ( obj=this->objects.begin() ; obj < this->objects.end(); obj++ ){
+		/*Call copy on object: */
+		object_copy = (*obj)->copy();
+		copy->AddObject(object_copy);
+	}
+
+	/*Build id_offsets and sorted_ids*/
+	int objsize = this->numsorted;
+	if(this->sorted && objsize>0 && this->id_offsets){	
+		/*Allocate new ids*/
+		copy->id_offsets=xNew<int>(objsize);
+		xMemCpy<int>(copy->id_offsets,this->id_offsets,objsize);
+	}
+	else copy->id_offsets=NULL;
+	if(this->sorted && objsize>0 && this->sorted_ids){
+		/*Allocate new ids*/
+		copy->sorted_ids=xNew<int>(objsize);
+		xMemCpy<int>(copy->sorted_ids,this->sorted_ids,objsize);
+	}
+	else copy->sorted_ids=NULL;
+
+	return copy;
+}
+/*}}}*/
+DataSet::~DataSet(){/*{{{*/
+	clear();
+	xDelete<int>(sorted_ids);
+	xDelete<int>(id_offsets);
+}
+/*}}}*/
+
+/*Specific methods*/
+void  DataSet::Marshall(char** pmarshalled_data, int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+	
+	vector<Object*>::iterator obj;
+	int obj_size=0;
+	int obj_enum=0;
+	int i;
+
+	if(marshall_direction==MARSHALLING_FORWARD || marshall_direction==MARSHALLING_SIZE){
+		obj_size=objects.size();
+	}
+	else{
+		clear();
+	}
+
+	MARSHALLING_ENUM(DataSetEnum);
+	MARSHALLING(enum_type);
+	MARSHALLING(sorted);
+	MARSHALLING(presorted);
+	MARSHALLING(numsorted);
+
+	/*Now branch according to direction of marshalling: */
+	if(marshall_direction==MARSHALLING_FORWARD || marshall_direction==MARSHALLING_SIZE){
+		if(!(this->sorted && numsorted>0 && this->id_offsets)){
+			sorted_ids=NULL;
+			id_offsets=NULL;
+		  }
+		MARSHALLING_DYNAMIC(sorted_ids,int,numsorted);
+		MARSHALLING_DYNAMIC(id_offsets,int,numsorted);
+		MARSHALLING(obj_size);
+
+		/*Go through our objects, and marshall them into the buffer: */
+		for( obj=this->objects.begin() ; obj < this->objects.end(); obj++ ){
+			obj_enum=(*obj)->ObjectEnum();
+			MARSHALLING(obj_enum);
+			(*obj)->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+		}
+	}
+	else{
+
+		MARSHALLING_DYNAMIC(sorted_ids,int,numsorted);
+		MARSHALLING_DYNAMIC(id_offsets,int,numsorted);
+		if (!(this->sorted && numsorted>0)){
+		 sorted_ids=NULL;
+		 id_offsets=NULL;
+		}
+		MARSHALLING(obj_size);
+
+		/*This is the heart of the demashalling method. We have a buffer coming
+		 in, and we are supposed to create a dataset out of it. No such thing
+		 as class orientation for buffers, we need to key off the enum of each
+		 object stored in the buffer. */
+		for(i=0;i<obj_size;i++){
+
+			/*Recover enum of object first: */
+			MARSHALLING(obj_enum); 
+
+			/*Giant case statement to spin-up the right object, and demarshall into it the information 
+			 *stored in the buffer: */
+			if(obj_enum==NodeEnum){
+				Node* node=NULL;
+				node=new Node();
+				node->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(node);
+			}
+			else if(obj_enum==VertexEnum){
+				Vertex* vertex=NULL;
+				vertex=new Vertex();
+				vertex->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(vertex);
+			}
+			else if(obj_enum==MaticeEnum){
+				Matice* matice=NULL;
+				matice=new Matice();
+				matice->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(matice);
+			}
+			else if(obj_enum==MatparEnum){
+				Matpar* matpar=NULL;
+				matpar=new Matpar();
+				matpar->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(matpar);
+			}
+			else if(obj_enum==SpcStaticEnum){
+				SpcStatic* spcstatic=NULL;
+				spcstatic=new SpcStatic();
+				spcstatic->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(spcstatic);
+			}
+			else if(obj_enum==SpcDynamicEnum){
+				SpcDynamic* spcdynamic=NULL;
+				spcdynamic=new SpcDynamic();
+				spcdynamic->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(spcdynamic);
+			}
+			else if(obj_enum==SpcTransientEnum){
+				SpcTransient* spctransient=NULL;
+				spctransient=new SpcTransient();
+				spctransient->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(spctransient);
+			}
+			else if(obj_enum==TriaEnum){
+				Tria* tria=NULL;
+				tria=new Tria();
+				tria->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(tria);
+			}
+			else if(obj_enum==PentaEnum){
+				Penta* penta=NULL;
+				penta=new Penta();
+				penta->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(penta);
+			}
+			else if(obj_enum==TetraEnum){
+				Tetra* tetra=NULL;
+				tetra=new Tetra();
+				tetra->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(tetra);
+			}
+			else if(obj_enum==SegEnum){
+				Seg* seg=NULL;
+				seg=new Seg();
+				seg->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(seg);
+			}
+			else if(obj_enum==BoolInputEnum){
+				BoolInput* boolinput=NULL;
+				boolinput=new BoolInput();
+				boolinput->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(boolinput);
+			}
+			else if(obj_enum==DoubleInputEnum){
+				DoubleInput* doubleinput=NULL;
+				doubleinput=new DoubleInput();
+				doubleinput->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(doubleinput);
+			}
+			else if(obj_enum==IntInputEnum){
+				IntInput* intinput=NULL;
+				intinput=new IntInput();
+				intinput->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(intinput);
+			}
+			else if(obj_enum==ControlInputEnum){
+				ControlInput* cinput=NULL;
+				cinput=new ControlInput();
+				cinput->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(cinput);
+			}
+			else if(obj_enum==TransientInputEnum){
+				TransientInput* transinput=NULL;
+				transinput=new TransientInput();
+				transinput->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(transinput);
+			}
+			else if(obj_enum==TriaInputEnum){
+				TriaInput* triainput=NULL;
+				triainput=new TriaInput();
+				triainput->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(triainput);
+			}
+			else if(obj_enum==PentaInputEnum){
+				PentaInput* pentainput=NULL;
+				pentainput=new PentaInput();
+				pentainput->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(pentainput);
+			}
+			else if(obj_enum==TetraInputEnum){
+				TetraInput* tetrainput=NULL;
+				tetrainput=new TetraInput();
+				tetrainput->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(tetrainput);
+			}
+			else if(obj_enum==SegInputEnum){
+				SegInput* seginput=NULL;
+				seginput=new SegInput();
+				seginput->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(seginput);
+			}
+			else if(obj_enum==RiftfrontEnum){
+				Riftfront* rift=NULL;
+				rift=new Riftfront();
+				rift->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(rift);
+			}
+			else if(obj_enum==NumericalfluxEnum){
+				Numericalflux* numflux=NULL;
+				numflux=new Numericalflux();
+				numflux->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(numflux);
+			}
+			else if(obj_enum==PengridEnum){
+				Pengrid* pengrid=NULL;
+				pengrid=new Pengrid();
+				pengrid->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(pengrid);
+			}
+			else if(obj_enum==PenpairEnum){
+				Penpair* penpair=NULL;
+				penpair=new Penpair();
+				penpair->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(penpair);
+			}
+			else _error_("could not recognize enum type: " << obj_enum << ": " << EnumToStringx(obj_enum) ); 
+		}
+	}
+}
+/*}}}*/
+int   DataSet::AddObject(Object* object){/*{{{*/
+
+	_assert_(this);
+	objects.push_back(object);
+
+	return 1;
+}
+/*}}}*/
+void  DataSet::clear(){/*{{{*/
+
+/*  use reverse_iterator for efficiency in matlab memory manager
+	(keeping old code in case it needs to revert back)  */
+
+//	vector<Object*>::iterator object;
+	vector<Object*>::reverse_iterator object;
+
+//	for ( object=objects.begin() ; object < objects.end(); object++ ){
+//		delete (*object);
+//	}
+	for ( object=objects.rbegin() ; object < objects.rend(); object++ ){
+		delete (*object);
+	}
+	objects.clear();
+}
+/*}}}*/
+int   DataSet::DeleteObject(Object* object){/*{{{*/
+
+	vector<Object*>::iterator iterator;
+
+	if(object){
+		iterator = find(objects.begin(), objects.end(),object);
+		delete *iterator;
+		objects.erase(iterator);
+	}
+
+	return 1;
+
+}
+/*}}}*/
+void  DataSet::DeepEcho(){/*{{{*/
+
+	vector<Object*>::iterator object;
+
+	_assert_(this);
+
+	_printf0_("DataSet echo: " << objects.size() << " objects\n");
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		/*Call deep echo on object: */
+		(*object)->DeepEcho();
+
+	}
+}
+/*}}}*/
+void  DataSet::Echo(){/*{{{*/
+
+	vector<Object*>::iterator object;
+
+	_assert_(this);
+
+	_printf0_("DataSet echo: " << objects.size() << " objects\n");
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		/*Call echo on object: */
+		(*object)->Echo();
+
+	}
+	return;
+}
+/*}}}*/
+int   DataSet::GetEnum(){/*{{{*/
+	return enum_type;
+}
+/*}}}*/
+int   DataSet::GetEnum(int offset){/*{{{*/
+
+	return objects[offset]->ObjectEnum();
+
+}
+/*}}}*/
+Object* DataSet::GetObjectByOffset(int offset){/*{{{*/
+
+	/*Check index in debugging mode*/
+	_assert_(this!=NULL);
+	_assert_(offset>=0);
+	_assert_(offset<this->Size());
+
+	return objects[offset];
+
+}
+/*}}}*/
+Object* DataSet::GetObjectById(int* poffset,int eid){/*{{{*/
+
+	int id_offset;
+	int offset;
+
+	_assert_(this);
+	if(!sorted || objects.size()>numsorted)_error_("trying to binary search on a non-sorted dataset!");
+
+	/*Carry out a binary search on the sorted_ids: */
+	if(!binary_search(&id_offset,eid,sorted_ids,objects.size())){
+		_error_("could not find object with id " << eid << " in DataSet " << EnumToStringx(enum_type));
+	}
+
+	/*Convert  the id offset into sorted offset: */
+	offset=id_offsets[id_offset];
+
+	/*Assign output pointers if requested:*/
+	if(poffset)*poffset=offset;
+
+	/*Return object at offset position in objects :*/
+	return objects[offset];
+}
+/*}}}*/
+void  DataSet::Presort(){/*{{{*/
+
+	/*vector of objects is already sorted, just allocate the sorted ids and their
+	 * offsets:*/
+	if(objects.size()){
+
+		/*Delete existing ids*/
+		if(sorted_ids) xDelete<int>(sorted_ids);
+		if(id_offsets) xDelete<int>(id_offsets);
+
+		/*Allocate new ids*/
+		sorted_ids=xNew<int>(objects.size());
+		id_offsets=xNew<int>(objects.size());
+
+		/*Build id_offsets and sorted_ids*/
+		for(int i=0;i<objects.size();i++){
+			id_offsets[i]=i;
+			sorted_ids[i]=objects[i]->Id();
+		}
+	}
+
+	/*set sorted flag: */
+	numsorted=objects.size();
+	sorted=1;
+}
+/*}}}*/
+int   DataSet::Size(void){/*{{{*/
+	_assert_(this!=NULL);
+
+	return objects.size();
+}
+/*}}}*/
+void  DataSet::Sort(){/*{{{*/
+
+	/*Only sort if we are not already sorted: */
+	if(!sorted){
+		_error_("not implemented yet!");
+	}
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/datastructures/DataSet.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/datastructures/DataSet.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/datastructures/DataSet.h	(revision 21239)
@@ -0,0 +1,55 @@
+#ifndef _CONTAINER_DATASET_H_
+#define _CONTAINER_DATASET_H_
+
+#include <vector>
+#include <cstring>
+
+/*forward declarations */
+class Object;
+
+/*! \brief Declaration of DataSet class
+ *
+ * Declaration of DataSet class.  A DataSet is a Container of Objects.
+ */
+class DataSet{
+
+	public: 
+
+		/*internals: */
+		std::vector<Object*> objects;
+
+		/*type of dataset: */
+		int             enum_type;
+
+		/*sorting: */
+		int             sorted;
+		int             presorted;
+		int             numsorted;
+		int*            sorted_ids;
+		int*            id_offsets;
+
+		/*constructors, destructors*/
+		DataSet();
+		DataSet(int enum_type);
+		~DataSet();
+		void  Marshall(char** pmarshalled_data, int* pmarshalled_data_size, int marshall_direction);
+
+		/*management*/
+		int      GetEnum();
+		int      GetEnum(int offset);
+		void     Echo();
+		void     DeepEcho();
+		int      AddObject(Object *object);
+		int      DeleteObject(int id);
+		int      Size();
+		void     clear();
+		Object  *GetObjectByOffset(int  offset);
+		Object  *GetObjectById(int *poffset,int eid);
+		void     Presort();
+		void     Sort();
+		DataSet *Copy(void);
+		int      DeleteObject(Object *object);
+
+};
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/datastructures/Object.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/datastructures/Object.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/datastructures/Object.h	(revision 21239)
@@ -0,0 +1,26 @@
+/*
+ * Object.h:
+ * \brief prototype for abstract Object class
+ * \file Object.h
+ * This prototype describes the Object class. This is an abstract class, parent 
+ * to any other objects (Quad, Tria, Node , etc ...), that can be included in a 
+ * DataSet.
+ */
+
+#ifndef _OBJECT_H_
+#define _OBJECT_H_
+
+class Object {
+
+	public: 
+
+		virtual       ~Object(){};
+		virtual void  Echo()=0;
+		virtual void  DeepEcho()=0;
+		virtual int   Id()=0;
+		virtual int   ObjectEnum()=0;
+		virtual Object* copy()=0;
+		virtual void Marshall(char** pmarshalled_data, int* pmarshalled_data_size, int marshall_direction)=0;
+
+};
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/datastructures/datastructures.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/datastructures/datastructures.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/datastructures/datastructures.h	(revision 21239)
@@ -0,0 +1,11 @@
+/* \file datastructures.h
+ * \brief: header file for all datastructures  routines.
+ */
+
+#ifndef _DATA_STRUCTURES_H_
+#define _DATA_STRUCTURES_H_
+
+#include "./DataSet.h"
+#include "./Object.h"
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KMLFileReadUtils.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KMLFileReadUtils.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KMLFileReadUtils.cpp	(revision 21239)
@@ -0,0 +1,711 @@
+/*!\file KMLFileUtils.cpp
+ * \brief: utilities for kml file reading.
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KMLFileReadUtils.h"
+#include "./KML_Object.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+char* KMLFileToken(FILE* fid,/*{{{*/
+				   int* pncom=NULL,char*** ppcom=NULL){
+
+/*  get the next token (tag or field) in the file  */
+
+	bool    inew=1,itag=0,ifield=0;
+	int     c;
+	int     ibuf=0,buflen=1024,bufblk=1024;
+	char    *buffer=NULL,*bufferc=NULL,**pcom2=NULL;
+
+	buffer=xNew<char>(buflen);
+	buffer[0]='\0';
+
+/*  read kml file character-by-character  */
+
+//  note that fgets includes newline
+//	fgets(buffer,buflen,fid);
+
+	while ((c=getc(fid)) != EOF) {
+		/*  ignore leading blanks  */
+		if (inew && isspace(c))
+			continue;
+
+		/*  distinguish between tag or field  */
+		if (!itag && !ifield) {
+
+			/*  distinguish between tag or comment  */
+			if (c == '<') {
+				ungetc(c,fid);
+				if (!(bufferc=KMLFileTokenComment(fid))) {
+					c=getc(fid);
+					itag=1;
+				}
+				else {
+					if (pncom && ppcom) {
+						(*pncom)++;
+						pcom2=xNew<char*>(*pncom);
+						memcpy(pcom2,*ppcom,(*pncom-1)*sizeof(char*));
+						xDelete<char*>(*ppcom);
+						*ppcom=pcom2;
+						pcom2=NULL;
+//						*ppcom=(char **) xrealloc(*ppcom,*pncom*sizeof(char*));
+						(*ppcom)[*pncom-1]=bufferc;
+					}
+					else
+						xDelete<char>(bufferc);
+					inew=1;
+					continue;
+				}
+			}
+			else
+				ifield=1;
+			inew=0;
+			KMLFileTokenBuffer(&buffer,&ibuf,&buflen,
+							   c,
+							   bufblk);
+		}
+
+		/*  accumulate tag, not including newlines  */
+		else if (itag) {
+			if (c != '\n') {
+				inew=0;
+				KMLFileTokenBuffer(&buffer,&ibuf,&buflen,
+								   c,
+								   bufblk);
+				if (c == '>')
+					break;
+			}
+			else
+				inew=1;
+		}
+
+		/*  accumulate field, including newlines  */
+		else if (ifield) {
+			/*  distinguish between another tag or comment  */
+			if (c == '<') {
+				ungetc(c,fid);
+				if (!(bufferc=KMLFileTokenComment(fid)))
+					break;
+				else
+					if (pncom && ppcom) {
+						(*pncom)++;
+						pcom2=xNew<char*>(*pncom);
+						memcpy(pcom2,*ppcom,(*pncom-1)*sizeof(char*));
+						xDelete<char*>(*ppcom);
+						*ppcom=pcom2;
+						pcom2=NULL;
+//						*ppcom=(char **) xrealloc(*ppcom,*pncom*sizeof(char*));
+						(*ppcom)[*pncom-1]=bufferc;
+					}
+					else
+						xDelete<char>(bufferc);
+			}
+			else {
+				inew=0;
+				KMLFileTokenBuffer(&buffer,&ibuf,&buflen,
+								   c,
+								   bufblk);
+				if (c == '\n')
+					inew=1;
+			}
+		}
+
+	}
+
+/*  remove trailing blanks or newline  */
+
+	while (ibuf > 0)
+		if (isspace(buffer[ibuf-1]))
+			ibuf--;
+		else {
+			buffer[ibuf]='\0';
+			break;
+		}
+
+//	if      (itag)
+//		_printf0_("tag buffer (length=" << ibuf << "):\n");
+//	else if (ifield)
+//		_printf0_("field buffer (length=" << ibuf << "):\n");
+//	_printf0_(buffer << "\n");
+
+	if (!ibuf)
+		xDelete<char>(buffer);
+
+	return(buffer);
+}
+/*}}}*/
+char* KMLFileTokenComment(FILE* fid){/*{{{*/
+
+/*  check for comment in the file and read it  */
+
+	bool    inew=1;
+	int     i;
+	int     c;
+	int     ibuf=0,buflen=1024,bufblk=1024;
+	char*   buffer=NULL;
+
+	buffer=xNew<char>(buflen);
+	buffer[0]='\0';
+
+/*  read kml file character-by-character  */
+
+	while ((c=getc(fid)) != EOF) {
+		/*  ignore leading blanks  */
+		if (inew && isspace(c))
+			continue;
+
+		inew=0;
+		KMLFileTokenBuffer(&buffer,&ibuf,&buflen,
+						   c,
+						   bufblk);
+
+		/*  check for comment  */
+		if (ibuf <= 4) {
+			if ((ibuf == 1 && buffer[0] != '<') ||
+				(ibuf == 2 && buffer[1] != '!') ||
+				(ibuf == 3 && buffer[2] != '-') ||
+				(ibuf == 4 && buffer[3] != '-')) {
+				for (i=ibuf-1; i>=0; i--)
+					ungetc(buffer[i],fid);
+				xDelete<char>(buffer);
+				return(buffer);
+			}
+		}
+
+		/*  accumulate comment, including newlines  */
+		else
+			if (buffer[ibuf-3]=='-' && buffer[ibuf-2]=='-' && buffer[ibuf-1]=='>')
+				break;
+	}
+
+/*  remove trailing blanks or newline  */
+
+	while (ibuf > 0)
+		if (isspace(buffer[ibuf-1]))
+			ibuf--;
+		else {
+			buffer[ibuf]='\0';
+			break;
+		}
+
+//	_printf0_("comment buffer (length=" << ibuf << "):\n");
+//	_printf0_(buffer << "\n");
+
+	if (!ibuf)
+		xDelete<char>(buffer);
+
+	return(buffer);
+}
+/*}}}*/
+void KMLFileTokenBuffer(char** pbuffer,int* pibuf,int* pbuflen,/*{{{*/
+						int c,
+						int bufblk){
+
+/*  add the specified character to the token buffer  */
+
+	char*   buffer2=NULL;
+
+/*  check buffer length and realloc if necessary  */
+
+	if (*pibuf+2 > *pbuflen) {
+		*pbuflen+=bufblk;
+		buffer2=xNew<char>(*pbuflen);
+		memcpy(buffer2,*pbuffer,(*pbuflen-bufblk)*sizeof(char));
+		xDelete<char>(*pbuffer);
+		*pbuffer=buffer2;
+		buffer2=NULL;
+//		*pbuffer=(char *) xrealloc(*pbuffer,*pbuflen*sizeof(char));
+	}
+
+/*  add character and terminator  */
+
+	(*pbuffer)[(*pibuf)++]=c;
+	(*pbuffer)[ *pibuf   ]='\0';
+
+	return;
+}
+/*}}}*/
+char* KMLFileTagName(char* pname,/*{{{*/
+					 char* ktag){
+
+	return(KMLFileTagName(pname,NULL,0,
+						  ktag));
+}
+/*}}}*/
+char* KMLFileTagName(char* pname,int *m,int maxlen,/*{{{*/
+					 char* ktag){
+
+/*  for the given tag buffer, read and store the name  */
+
+	char*   ktagi;
+	char*   ktokn;
+
+	if (strncmp(&ktag[0],"<"        ,1) || strncmp(&ktag[strlen(ktag)-1],">",1))
+		_error_("KMLFileTagName -- Missing tag delimiters in " << ktag << ".\n");
+
+/*  strtok modifies ktag, so work on copy  */
+
+	ktagi=xNew<char>(strlen(ktag)+1);
+	memcpy(ktagi,ktag,(strlen(ktag)+1)*sizeof(char));
+
+/*  skip opening delimeter and find subsequent blank or closing delimiter  */
+
+	ktokn=strtok(ktagi,"< >");
+//	_printf0_("KMLFileTagName -- initial token=\"" << ktokn << "\".\n");
+
+	if (!pname) {
+		if (maxlen)
+			pname=xNew<char>(maxlen       +1);
+		else
+			pname=xNew<char>(strlen(ktokn)+1);
+	}
+
+	if (maxlen && (maxlen < strlen(ktokn))) {
+		_printf0_("KMLFileTagName -- string field too short for " << ktag << ".\n");
+		_printf0_("KMLFileTagName -- \"" << ktokn << "\" truncated to " << maxlen << " characters.\n");
+		strncpy(pname,ktokn,maxlen);
+	}
+	else
+		memcpy(pname,ktokn,(strlen(ktokn)+1)*sizeof(char));
+
+	xDelete<char>(ktagi);
+
+	if (m)
+		*m=strlen(pname);
+
+	return(pname);
+}
+/*}}}*/
+int KMLFileTagAttrib(KML_Object* kobj,/*{{{*/
+					 char* ktag){
+
+/*  for the given tag buffer, read and store the attributes  */
+
+	char*   ktagi;
+	char*   ktokn;
+	char*   ktokv;
+	char    quote[]={'\"','\0'};
+	int     isolo=0;
+
+/*  strtok modifies ktag, so work on copy  */
+
+	ktagi=xNew<char>(strlen(ktag)+1);
+	memcpy(ktagi,ktag,(strlen(ktag)+1)*sizeof(char));
+
+/*  loop through tag to find all attributes  */
+
+	/*  return first non blank and move past subsequent blank  */
+	ktokn=strtok(ktagi," ");
+//	_printf0_("KMLFileTagAttrib -- initial token=\"" << ktokn << "\".\n");
+
+	/*  return next non " =?/>" and move past subsequent " =?/>"  */
+	while((ktokn=strtok(NULL," =?/>"))){
+
+		/*  return next non quote and move past subsequent quote  */
+		ktokv=strtok(NULL,quote);
+//		_printf0_("KMLFileTagAttrib -- attribute " << ktokn << "=\"" << ktokv << "\".\n");
+
+/*  add the attribute to the dataset  */
+
+		if (kobj)
+			kobj->AddAttrib(ktokn,ktokv);
+	}
+
+	xDelete<char>(ktagi);
+
+/*  check for xml declaration, dtd declaration, or solo tag  */
+
+	if ((!strncmp(&ktag[0],"<?"       ,2) && !strncmp(&ktag[strlen(ktag)-2],"?>",2)) ||
+		(!strncmp(&ktag[0],"<!DOCTYPE",9) && !strncmp(&ktag[strlen(ktag)-1], ">",1)) ||
+		(!strncmp(&ktag[0],"<"        ,1) && !strncmp(&ktag[strlen(ktag)-2],"/>",2)))
+		isolo=1;
+//	_printf0_("KMLFileTagAttrib -- isolo=" << isolo << ".\n");
+
+	return(isolo);
+}
+/*}}}*/
+int KMLFileTokenParse(int* pival,/*{{{*/
+					  char* ktag,
+					  FILE* fid){
+
+	char*   kstr;
+
+/*  get next token and convert to appropriate format  */
+
+	if (!(kstr=KMLFileToken(fid,
+							NULL,NULL)) ||
+		(kstr[0] == '<'))
+		_error_("KMLFileTokenParse -- Missing integer field for " << ktag << ".\n");
+
+	sscanf(kstr,"%d",pival);
+	xDelete<char>(kstr);
+
+/*  get additional token and compare to closing tag  */
+
+	if(ktag){
+		if (!(kstr=KMLFileToken(fid,
+								NULL,NULL)) ||
+			(kstr[0] != '<') ||
+			(kstr[1] != '/') ||
+			(strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
+		  {_error_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
+		else{
+			xDelete<char>(kstr);
+		}
+	}
+
+//	_printf0_("KMLFileTokenParse -- " << ktag << "=" << *pival << ".\n");
+
+	return(0);
+}
+/*}}}*/
+int KMLFileTokenParse(bool* pbval, char* ktag, FILE* fid){/*{{{*/
+
+	int     ival;
+	char*   kstr;
+
+/*  get next token and convert to appropriate format  */
+
+	if (!(kstr=KMLFileToken(fid,
+							NULL,NULL)) ||
+		(kstr[0] == '<'))
+	  {_error_("KMLFileTokenParse -- Missing bool field for " << ktag << ".\n");}
+
+	sscanf(kstr,"%d",&ival);
+	*pbval=(bool)ival;
+	xDelete<char>(kstr);
+
+/*  get additional token and compare to closing tag  */
+
+	if(ktag){
+		if (!(kstr=KMLFileToken(fid,
+								NULL,NULL)) ||
+			(kstr[0] != '<') ||
+			(kstr[1] != '/') ||
+			(strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
+		  {_error_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
+		else
+			xDelete<char>(kstr);
+	}
+
+//	_printf0_("KMLFileTokenParse -- " << ktag << "=" << (*pbval ? "true" : "false") << ".\n");
+
+	return(0);
+}
+/*}}}*/
+char* KMLFileTokenParse(char* pstr,/*{{{*/
+						char* ktag,
+						FILE* fid){
+
+	return(KMLFileTokenParse(pstr,NULL,0,
+							 ktag,
+							 fid));
+}
+/*}}}*/
+char* KMLFileTokenParse(char* pstr,int *m,int maxlen,/*{{{*/
+						char* ktag,
+						FILE* fid){
+
+	char*   kstr;
+
+/*  get next token and allocate if necessary  */
+
+	if (!(kstr=KMLFileToken(fid,
+							NULL,NULL)) ||
+		(kstr[0] == '<'))
+		_error_("KMLFileTokenParse -- Missing string field for " << ktag << ".\n");
+
+	if (!pstr) {
+		if (maxlen)
+			pstr=xNew<char>(maxlen      +1);
+		else
+			pstr=xNew<char>(strlen(kstr)+1);
+	}
+
+	if (maxlen && (maxlen < strlen(kstr))) {
+		_printf0_("KMLFileTokenParse -- string field too short for " << ktag << ".\n");
+		_printf0_("KMLFileTokenParse -- \"" << kstr << "\" truncated to " << maxlen << " characters.\n");
+		strncpy(pstr,kstr,maxlen);
+	}
+	else
+		memcpy(pstr,kstr,(strlen(kstr)+1)*sizeof(char));
+
+	xDelete<char>(kstr);
+
+	if (m)
+		*m=strlen(pstr);
+
+/*  get additional token and compare to closing tag  */
+
+	if(ktag){
+		if (!(kstr=KMLFileToken(fid,
+								NULL,NULL)) ||
+			(kstr[0] != '<') ||
+			(kstr[1] != '/') ||
+			(strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
+		  {_error_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
+		else
+			xDelete<char>(kstr);
+	}
+
+//	_printf0_("KMLFileTokenParse -- " << ktag << "=\"" << pstr << "\".\n");
+
+	return(pstr);
+}
+/*}}}*/
+int KMLFileTokenParse(float* pfval,/*{{{*/
+					  char* ktag,
+					  FILE* fid){
+
+	char*   kstr;
+
+/*  get next token and convert to appropriate format  */
+
+	if (!(kstr=KMLFileToken(fid,
+							NULL,NULL)) ||
+		(kstr[0] == '<'))
+	  {_error_("KMLFileTokenParse -- Missing integer field for " << ktag << ".\n");}
+
+	sscanf(kstr,"%g",pfval);
+	xDelete<char>(kstr);
+
+/*  get additional token and compare to closing tag  */
+
+	if(ktag){
+		if (!(kstr=KMLFileToken(fid,
+								NULL,NULL)) ||
+			(kstr[0] != '<') ||
+			(kstr[1] != '/') ||
+			(strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
+		  {_error_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
+		else
+			xDelete<char>(kstr);
+	}
+
+//	_printf0_("KMLFileTokenParse -- " << ktag << "=" << *pfval << ".\n");
+
+	return(0);
+}
+/*}}}*/
+int KMLFileTokenParse(double* pdval,/*{{{*/
+					  char* ktag,
+					  FILE* fid){
+
+	char*   kstr;
+
+/*  get next token and convert to appropriate format  */
+
+	if (!(kstr=KMLFileToken(fid,
+							NULL,NULL)) ||
+		(kstr[0] == '<'))
+		_error_("KMLFileTokenParse -- Missing integer field for " << ktag << ".\n");
+
+	sscanf(kstr,"%lg",pdval);
+	xDelete<char>(kstr);
+
+/*  get additional token and compare to closing tag  */
+
+	if(ktag){
+		if (!(kstr=KMLFileToken(fid,
+								NULL,NULL)) ||
+			(kstr[0] != '<') ||
+			(kstr[1] != '/') ||
+			(strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
+		  {_error_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
+		else
+			xDelete<char>(kstr);
+	}
+
+//	_printf0_("KMLFileTokenParse -- " << ktag << "=" << *pdval << ".\n");
+
+	return(0);
+}
+/*}}}*/
+int KMLFileTokenParse(double **pdval,int* m,int maxlen,/*{{{*/
+					  char* ktag,
+					  FILE* fid){
+
+	int     i=-1;
+	char*   kstr;
+	char*   ktok;
+	double* dval2=NULL;
+	char    delim[]={' ',',','\f','\n','\r','\t','\v','\0'};
+
+/*  get next token and allocate if necessary  */
+
+	if (!(kstr=KMLFileToken(fid,
+							NULL,NULL)) ||
+		(kstr[0] == '<'))
+		_error_("KMLFileTokenParse -- Missing double [m] field for " << ktag << ".\n");
+
+	if(!*pdval){
+		if (maxlen)
+			*pdval=xNew<IssmPDouble>(maxlen            );
+		else
+			*pdval=xNew<IssmPDouble>((strlen(kstr)+1)/2);
+	}
+
+/*  loop through string to get all values  */
+
+	ktok=strtok(kstr,delim);
+	while (ktok) {
+		i++;
+		if (maxlen && (maxlen < i+1))
+			_error_("KMLFileTokenParse -- Double [m] field too short for " << ktag << ".\n");
+		sscanf(ktok,"%lg",&((*pdval)[i]));
+		ktok=strtok(NULL,delim);
+	}
+	xDelete<char>(kstr);
+
+	if (!maxlen)
+		dval2=xNew<double>(i+1);
+		memcpy(dval2,*pdval,(i+1)*sizeof(double));
+		xDelete<double>(*pdval);
+		*pdval=dval2;
+		dval2=NULL;
+//		*pdval=(double *) xrealloc(*pdval,(i+1)*sizeof(double));
+
+	if (m)
+		*m=i+1;
+
+/*  get additional token and compare to closing tag  */
+
+	if(ktag){
+		if (!(kstr=KMLFileToken(fid,
+								NULL,NULL)) ||
+			(kstr[0] != '<') ||
+			(kstr[1] != '/') ||
+			(strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
+		  {_error_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
+		else
+			xDelete<char>(kstr);
+	}
+
+//	_printf0_("KMLFileTokenParse -- " << ktag << "=...\n");
+//	for (j=0; j<=i; j++)
+//		_printf0_("   [" << j << "]: " << (*pdval)[j] << "g\n");
+
+	return(0);
+}
+/*}}}*/
+int KMLFileTokenParse(double **pdval,int* m,int n,int maxlen,/*{{{*/
+					  char* ktag,
+					  FILE* fid){
+
+	int     i=-1,j=-1;
+	char*   kstr;
+	char*   ktok;
+	double* dval2=NULL;
+	char    delim[]={' ',',','\f','\n','\r','\t','\v','\0'};
+
+/*  get next token and allocate if necessary  */
+
+	if (!(kstr=KMLFileToken(fid,
+							NULL,NULL)) ||
+		(kstr[0] == '<'))
+		_error_("KMLFileTokenParse -- Missing double [m x n] field for " << ktag << ".\n");
+
+	if(!*pdval){
+		if (maxlen)
+			*pdval=xNew<IssmPDouble>(maxlen*n          );
+		else
+			*pdval=xNew<IssmPDouble>((strlen(kstr)+1)/2);
+	}
+
+/*  loop through string to get all values  */
+
+	ktok=strtok(kstr,delim);
+	while (ktok) {
+		i++;
+		if (maxlen && (maxlen*n < i+1))
+			_error_("KMLFileTokenParse -- Double [m x n] field too short for " << ktag << ".\n");
+		j=(j+1) % n;
+		sscanf(ktok,"%lg",&((*pdval)[i]));
+		ktok=strtok(NULL,delim);
+	}
+	xDelete<char>(kstr);
+
+	if (!maxlen)
+		dval2=xNew<double>((i+1)*n);
+		memcpy(dval2,*pdval,((i+1)*n)*sizeof(double));
+		xDelete<double>(*pdval);
+		*pdval=dval2;
+		dval2=NULL;
+//		*pdval=(double *) xrealloc(*pdval,((i+1)*n)*sizeof(double));
+
+	if (m)
+		*m=((i+1)+(n-1))/n;
+
+	if ((i+1) % n)
+		_printf0_("KMLFileTokenParse -- Double [m x n] field for " << ktag << " does not have multiple of n values.\n");
+
+/*  get additional token and compare to closing tag  */
+
+	if(ktag){
+		if (!(kstr=KMLFileToken(fid,
+								NULL,NULL)) ||
+			(kstr[0] != '<') ||
+			(kstr[1] != '/') ||
+			(strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
+		  {_error_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
+		else
+			xDelete<char>(kstr);
+	}
+
+//	_printf0_("KMLFileTokenParse -- " << ktag << "=...\n");
+//	for (j=0; j<=i; j++)
+//		_printf0_("   [" << j << "]: " << (*pdval)[j] << "g\n");
+
+	return(0);
+}
+/*}}}*/
+int KMLFileTagSkip(char* ktag, FILE* fid){/*{{{*/
+
+	char*   kstr;
+
+/*  note that tags of the same type can be nested inside each other, so for each
+	opening tag, must find corresponding closing tag  */
+
+	_printf0_("KMLFileTagSkip -- input tag " << ktag << ".\n");
+
+/*  if next token is a closing tag, compare to input  */
+
+	while((kstr=KMLFileToken(fid,NULL,NULL))){
+		if((kstr[0] == '<') && (kstr[1] == '/') && (!strncmp(&(kstr[2]),&(ktag[1]),(strcspn(ktag," >")-1)/sizeof(char)))){
+			_printf0_("KMLFileTagSkip -- closing tag " << kstr << ".\n");
+			xDelete<char>(kstr);
+			return(0);
+		}
+
+/*  if next token is an opening tag, call recursively  */
+
+		else if ((kstr[0] == '<') &&
+				 (kstr[1] != '/')) {
+			_printf0_("KMLFileTagSkip -- opening tag " << kstr << ".\n");
+			KMLFileTagSkip(kstr,
+						   fid);
+		}
+
+/*  if next token is a closing tag, error out  */
+
+		else if ((kstr[0] == '<') &&
+				 (kstr[1] == '/')) {
+			_error_("KMLFileTagSkip -- Unexpected closing tag " << kstr << ".\n");
+		}
+
+		xDelete<char>(kstr);
+	}
+
+	_error_("KMLFileTokenParse -- Corresponding closing tag for " << ktag << " not found.\n");
+
+	return(0);
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KMLFileReadUtils.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KMLFileReadUtils.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KMLFileReadUtils.h	(revision 21239)
@@ -0,0 +1,31 @@
+/*!\file:  KMLFileReadUtils.h
+ * \brief: header file for kml file reading utilities.
+ */ 
+
+#ifndef _KMLFILEREADUTILS_H
+#define _KMLFILEREADUTILS_H
+
+/*Headers:{{{*/
+#include "../shared/shared.h"
+#include "../datastructures/datastructures.h"
+class KML_Object;
+/*}}}*/
+
+/* local prototypes: */
+char* KMLFileToken(FILE* fid, int* pncom,char*** ppcom);
+char* KMLFileTokenComment(FILE* fid);
+void KMLFileTokenBuffer(char** pbuffer,int* pibuf,int* pbuflen, int c, int bufblk);
+char* KMLFileTagName(char* pname, char* ktag);
+char* KMLFileTagName(char* pname,int *m,int maxlen, char* ktag);
+int KMLFileTagAttrib(KML_Object* kobj, char* ktag);
+int KMLFileTokenParse(int* pival, char* ktag, FILE* fid);
+int KMLFileTokenParse(bool* pbval, char* ktag, FILE* fid);
+char* KMLFileTokenParse(char* pstr, char* ktag, FILE* fid);
+char* KMLFileTokenParse(char* pstr,int *m,int maxlen, char* ktag, FILE* fid);
+int KMLFileTokenParse(float* pfval, char* ktag, FILE* fid);
+int KMLFileTokenParse(double* pdval, char* ktag, FILE* fid);
+int KMLFileTokenParse(double **pdval,int* m,int maxlen, char* ktag, FILE* fid);
+int KMLFileTokenParse(double **pdval,int* m,int n,int maxlen, char* ktag, FILE* fid);
+int KMLFileTagSkip(char* ktag, FILE* fid);
+
+#endif  /* _KMLFILEREADUTILS_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Attribute.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Attribute.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Attribute.cpp	(revision 21239)
@@ -0,0 +1,118 @@
+/*!\file KML_Attribute.cpp
+ * \brief: implementation of the kml_attribute object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Attribute.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Attribute::KML_Attribute(){/*{{{*/
+
+	name      =NULL;
+	value     =NULL;
+
+}
+/*}}}*/
+KML_Attribute::~KML_Attribute(){/*{{{*/
+
+	if (name      ) xDelete<char>(name);
+	if (value     ) xDelete<char>(value);
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Attribute::Echo(){/*{{{*/
+
+	int   i;
+	bool  flag=true;
+
+	if(flag) _printf0_("    ");
+	for (i=0;i<10-strlen(name);i++)
+		if(flag) _printf0_(" ");
+	if(flag) _printf0_(name << ": \"" << value << "\"\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Attribute::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Attribute::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Attribute::DeepEcho(const char* indent){/*{{{*/
+
+	int   i;
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "    ");
+	for (i=0;i<10-strlen(name);i++)
+		if(flag) _printf0_(" ");
+	if(flag) _printf0_(name << ": \"" << value << "\"\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Attribute::Write(FILE* filout,const char* indent){/*{{{*/
+
+//  attributes always written in keyword line of kml_object
+
+	fprintf(filout,"%s%s=\"%s\"",indent,name,value);
+
+	return;
+}
+/*}}}*/
+void  KML_Attribute::Read(FILE* fid,char* kstr){/*{{{*/
+
+//  attributes always read in keyword line of kml_object
+
+	;
+
+	return;
+}
+/*}}}*/
+void  KML_Attribute::Alloc(const char* namei,const char* valuei){/*{{{*/
+
+	name =xNew<char>(strlen(namei )+1);
+	memcpy(name,namei,(strlen(namei)+1)*sizeof(char));
+
+	value=xNew<char>(strlen(valuei)+1);
+	memcpy(value,valuei,(strlen(valuei)+1)*sizeof(char));
+
+	return;
+}
+/*}}}*/
+void  KML_Attribute::Add(DataSet* attrib){/*{{{*/
+
+	attrib->AddObject((Object*)this);
+
+	return;
+}
+/*}}}*/
+void  KML_Attribute::Get(char** pvalueo,char* deflt){/*{{{*/
+
+	if (!value || !strlen(value)) {
+		*pvalueo=xNew<char>(strlen(deflt)+1);
+		memcpy(*pvalueo,deflt,(strlen(deflt)+1)*sizeof(char));
+	}
+	else {
+		*pvalueo=xNew<char>(strlen(value)+1);
+		memcpy(*pvalueo,value,(strlen(value)+1)*sizeof(char));
+	}
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Attribute.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Attribute.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Attribute.h	(revision 21239)
@@ -0,0 +1,42 @@
+/*! \file KML_Attribute.h 
+ *  \brief: header file for kml_attribute object
+ */
+
+#ifndef _KML_ATTRIBUTE_H_
+#define _KML_ATTRIBUTE_H_
+
+/*Headers:{{{*/
+#include "../shared/shared.h"
+#include "../datastructures/datastructures.h"
+/*}}}*/
+
+class KML_Attribute: public Object {
+
+	public:
+
+		char* name;
+		char* value;
+
+		/*KML_Attribute constructors, destructors {{{*/
+		KML_Attribute();
+		~KML_Attribute();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		virtual void  Echo();
+		virtual void  DeepEcho();
+		virtual void  DeepEcho(const char* indent);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+		/*virtual functions: */
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  Alloc(const char* namei,const char* valuei);
+		void  Add(DataSet* attrib);
+		void  Get(char** pvalueo,char* deflt);
+
+};
+#endif  /* _KML_ATTRIBUTE_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_ColorStyle.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_ColorStyle.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_ColorStyle.cpp	(revision 21239)
@@ -0,0 +1,99 @@
+/*!\file KML_ColorStyle.cpp
+ * \brief: implementation of the kml_colorstyle abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_ColorStyle.h"
+#include "./KML_SubStyle.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_ColorStyle::KML_ColorStyle(){/*{{{*/
+
+	strcpy(color     ,"ffffffff");
+	strcpy(colormode ,"normal");
+
+}
+/*}}}*/
+KML_ColorStyle::~KML_ColorStyle(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_ColorStyle::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	KML_SubStyle::Echo();
+
+	if(flag) _printf0_("         color: " << color << "\n");
+	if(flag) _printf0_("     colormode: " << colormode << "\n");
+
+	return;
+}
+/*}}}*/
+void  KML_ColorStyle::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_ColorStyle::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_ColorStyle::DeepEcho(const char* indent){/*{{{*/
+
+	bool  flag=true;
+
+	KML_SubStyle::DeepEcho(indent);
+
+	if(flag) _printf0_(indent << "         color: " << color << "\n");
+	if(flag) _printf0_(indent << "     colormode: " << colormode << "\n");
+}
+/*}}}*/
+void  KML_ColorStyle::Write(FILE* filout,const char* indent){/*{{{*/
+
+	KML_SubStyle::Write(filout,indent);
+
+	if (color     && strlen(color))
+		fprintf(filout,"%s  <color>%s</color>\n",indent,color);
+	if (colormode && strlen(colormode))
+		fprintf(filout,"%s  <colorMode>%s</colorMode>\n",indent,colormode);
+
+	return;
+}
+/*}}}*/
+void  KML_ColorStyle::Read(FILE* fid,char* kstr){/*{{{*/
+
+/*  process field within opening and closing tags  */
+
+	if      (!strncmp(kstr,"</ColorStyle",12))
+		return;
+	else if (!strncmp(kstr,"</",2))
+	  {_error_("KML_ColorStyle::Read -- Unexpected closing tag " << kstr);}
+	else if (strncmp(kstr,"<",1))
+	  {_error_("KML_ColorStyle::Read -- Unexpected field \"" << kstr << "\"");}
+
+	else if (!strcmp(kstr,"<color>"))
+		KMLFileTokenParse( color     ,NULL,KML_COLORSTYLE_COLOR_LENGTH, kstr, fid);
+	else if (!strcmp(kstr,"<colorMode>"))
+		KMLFileTokenParse( colormode ,NULL,KML_COLORSTYLE_COLORMODE_LENGTH, kstr, fid);
+
+	else if (!strncmp(kstr,"<",1))
+		KML_SubStyle::Read(fid,kstr);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_ColorStyle.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_ColorStyle.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_ColorStyle.h	(revision 21239)
@@ -0,0 +1,42 @@
+/*! \file KML_ColorStyle.h 
+ *  \brief: header file for kml_colorstyle abstract object
+ */
+
+#ifndef _KML_COLORSTYLE_H_
+#define _KML_COLORSTYLE_H_
+
+#define KML_COLORSTYLE_COLOR_LENGTH      8
+#define KML_COLORSTYLE_COLORMODE_LENGTH  6
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_SubStyle.h"
+/*}}}*/
+
+class KML_ColorStyle: public KML_SubStyle {
+
+	public:
+
+		char  color[KML_COLORSTYLE_COLOR_LENGTH+1];
+		char  colormode[KML_COLORSTYLE_COLORMODE_LENGTH+1];
+
+		/*KML_ColorStyle constructors, destructors {{{*/
+		KML_ColorStyle();
+		~KML_ColorStyle();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		void  Demarshall(char** pmarshalled_dataset){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_COLORSTYLE_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Comment.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Comment.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Comment.cpp	(revision 21239)
@@ -0,0 +1,103 @@
+/*!\file KML_Comment.cpp
+ * \brief: implementation of the kml_comment object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Comment.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Comment::KML_Comment(){/*{{{*/
+
+	value     =NULL;
+
+}
+/*}}}*/
+KML_Comment::~KML_Comment(){/*{{{*/
+
+	if (value     ) xDelete<char>(value);
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Comment::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("    ");
+	if(flag) _printf0_(value << "\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Comment::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Comment::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Comment::DeepEcho(const char* indent){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "    ");
+	if(flag) _printf0_(value << "\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Comment::Write(FILE* filout,const char* indent){/*{{{*/
+
+	if (strncmp(&value[0]              ,"<!--",4))
+		fprintf(filout,"%s<!--\n",indent);
+	fprintf(filout,"%s  %s\n",indent,value);
+	if (strncmp(&value[strlen(value)-3],"-->" ,3))
+		fprintf(filout,"%s-->\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Comment::Read(FILE* fid,char* kstr){/*{{{*/
+
+//  comments always read as part of KMLFileToken
+
+	;
+
+	return;
+}
+/*}}}*/
+void  KML_Comment::Alloc(const char* valuei){/*{{{*/
+
+	value=xNew<char>(strlen(valuei)+1);
+	memcpy(value,valuei,(strlen(valuei)+1)*sizeof(char));
+
+	return;
+}
+/*}}}*/
+void  KML_Comment::Add(DataSet* commnt){/*{{{*/
+
+	commnt->AddObject((Object*)this);
+
+	return;
+}
+/*}}}*/
+void  KML_Comment::Get(char** pvalueo){/*{{{*/
+
+	*pvalueo=xNew<char>(strlen(value)+1);
+	memcpy(*pvalueo,value,(strlen(value)+1)*sizeof(char));
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Comment.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Comment.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Comment.h	(revision 21239)
@@ -0,0 +1,43 @@
+/*! \file KML_Comment.h 
+ *  \brief: header file for kml_comment object
+ */
+
+#ifndef _KML_COMMENT_H_
+#define _KML_COMMENT_H_
+
+/*Headers:{{{*/
+#include "../shared/shared.h"
+#include "../datastructures/datastructures.h"
+class DataSet;
+/*}}}*/
+
+class KML_Comment: public Object {
+
+	public:
+
+		char* name;
+		char* value;
+
+		/*KML_Comment constructors, destructors {{{*/
+		KML_Comment();
+		~KML_Comment();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		virtual void  Echo();
+		virtual void  DeepEcho();
+		virtual void  DeepEcho(const char* indent);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+		/*virtual functions: */
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  Alloc(const char* valuei);
+		void  Add(DataSet* commnt);
+		void  Get(char** pvalueo);
+
+};
+#endif  /* _KML_COMMENT_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Container.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Container.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Container.cpp	(revision 21239)
@@ -0,0 +1,160 @@
+/*!\file KML_Container.cpp
+ * \brief: implementation of the kml_container abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Placemark.h"
+#include "./KML_Document.h"
+#include "./KML_GroundOverlay.h"
+#include "./KML_Folder.h"
+#include "./KML_Object.h"
+#include "./KML_Container.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Container::KML_Container(){/*{{{*/
+
+	feature   =new DataSet;
+
+}
+/*}}}*/
+KML_Container::~KML_Container(){/*{{{*/
+
+	if (feature) {
+		delete feature;
+		feature   =NULL;
+	}
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Container::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	KML_Feature::Echo();
+
+	if(flag) _printf0_("       feature: (size=" << feature->Size() << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Container::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Container::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Container::DeepEcho(const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+	bool  flag=true;
+
+	KML_Feature::DeepEcho(indent);
+
+/*  loop over the features for the container  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+	if (feature->Size())
+		for (i=0; i<feature->Size(); i++) {
+			if(flag) _printf0_(indent << "       feature: -------- begin [" << i << "] --------\n");
+			((KML_Feature *)feature->GetObjectByOffset(i))->DeepEcho(indent2);
+			if(flag) _printf0_(indent << "       feature: --------  end  [" << i << "] --------\n");
+		}
+	else
+		if(flag) _printf0_(indent << "       feature: [empty]\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Container::Write(FILE* filout,const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+
+	KML_Feature::Write(filout,indent);
+
+/*  loop over the features for the container  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+
+	strcat(indent2,"  ");
+
+	for (i=0; i<feature->Size(); i++)
+		((KML_Feature *)feature->GetObjectByOffset(i))->Write(filout,indent2);
+
+	return;
+}
+/*}}}*/
+void  KML_Container::Read(FILE* fid,char* kstr){/*{{{*/
+
+	KML_Object*  kobj;
+
+/*  process field within opening and closing tags  */
+
+	if      (!strncmp(kstr,"</Container",11)) {
+		xDelete<char>(kstr);
+		return;
+	}
+	else if (!strncmp(kstr,"</",2))
+	  {_error_("KML_Container::Read -- Unexpected closing tag " << kstr );}
+	else if (strncmp(kstr,"<",1))
+	  {_error_("KML_Container::Read -- Unexpected field \"" << kstr << "\"");}
+
+	else if (!strncmp(kstr,"<Placemark",10)) {
+		kobj=(KML_Object*)new KML_Placemark();
+		kobj->Read(fid,kstr);
+		feature   ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<Folder", 7)) {
+		kobj=(KML_Object*)new KML_Folder();
+		kobj->Read(fid,kstr);
+		feature   ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<Document", 9)) {
+		kobj=(KML_Object*)new KML_Document();
+		kobj->Read(fid,kstr);
+		feature   ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<GroundOverlay",14)) {
+		kobj=(KML_Object*)new KML_GroundOverlay();
+		kobj->Read(fid,kstr);
+		feature   ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<",1))
+		KML_Feature::Read(fid,kstr);
+
+	return;
+}
+/*}}}*/
+void  KML_Container::WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp){/*{{{*/
+
+	int   i;
+
+/*  loop over the features for the container  */
+
+	for (i=0; i<feature->Size(); i++)
+		((KML_Object *)feature->GetObjectByOffset(i))->WriteExp(fid,nstr,sgn,cm,sp);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Container.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Container.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Container.h	(revision 21239)
@@ -0,0 +1,39 @@
+/*! \file KML_Container.h 
+ *  \brief: header file for kml_container abstract object
+ */
+
+#ifndef _KML_CONTAINER_H_
+#define _KML_CONTAINER_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Feature.h"
+class DataSet;
+/*}}}*/
+
+class KML_Container: public KML_Feature {
+
+	public:
+
+		DataSet* feature;
+
+		/*KML_Container constructors, destructors {{{*/
+		KML_Container();
+		~KML_Container();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_CONTAINER_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Document.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Document.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Document.cpp	(revision 21239)
@@ -0,0 +1,114 @@
+/*!\file KML_Document.cpp
+ * \brief: implementation of the kml_document object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Document.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Document::KML_Document(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+KML_Document::~KML_Document(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Document::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_Document:\n");
+	KML_Container::Echo();
+
+	return;
+}
+/*}}}*/
+void  KML_Document::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Document::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Document::DeepEcho(const char* indent){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_Document:\n");
+	KML_Container::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Document::Write(FILE* filout,const char* indent){/*{{{*/
+
+	fprintf(filout,"%s<Document",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Container::Write(filout,indent);
+
+	fprintf(filout,"%s</Document>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Document::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))) {
+		if      (!strncmp(kstri,"</Document",10)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_Document::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_Document::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Container::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for (ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Document.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Document.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Document.h	(revision 21239)
@@ -0,0 +1,36 @@
+/*! \file KML_Document.h 
+ *  \brief: header file for kml_document object
+ */
+
+#ifndef _KML_DOCUMENT_H_
+#define _KML_DOCUMENT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Container.h"
+class KML_Feature;
+/*}}}*/
+
+class KML_Document: public KML_Container {
+
+	public:
+
+		/*KML_Document constructors, destructors {{{*/
+		KML_Document();
+		~KML_Document();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_DOCUMENT_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Feature.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Feature.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Feature.cpp	(revision 21239)
@@ -0,0 +1,178 @@
+/*!\file KML_Feature.cpp
+ * \brief: implementation of the kml_feature abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../shared/shared.h"
+/*}}}*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Feature.h"
+#include "./KML_Style.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Feature::KML_Feature(){/*{{{*/
+
+	memcpy(name,"",(strlen("")+1)*sizeof(char));
+
+	visibility=true;
+	open      =false;
+	memcpy(snippet,"",(strlen("")+1)*sizeof(char));
+	memcpy(descript,"",(strlen("")+1)*sizeof(char));
+	memcpy(styleurl,"",(strlen("")+1)*sizeof(char));
+	style     =new DataSet;
+
+}
+/*}}}*/
+KML_Feature::~KML_Feature(){/*{{{*/
+
+	if (style) {
+		delete style;
+		style     =NULL;
+	}
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Feature::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	KML_Object::Echo();
+
+	if(flag) _printf0_("          name: \"" << name << "\"\n");
+	if(flag) _printf0_("    visibility: " << (visibility ? "true" : "false") << "\n");
+	if(flag) _printf0_("          open: " << (open ? "true" : "false") << "\n");
+	if(flag) _printf0_("       snippet: \"" << snippet << "\"\n");
+	if(flag) _printf0_("      descript: \"" << descript << "\"\n");
+	if(flag) _printf0_("      styleurl: \"" << styleurl << "\"\n");
+	if(flag) _printf0_("         style: (size=" << style->Size() << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Feature::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Feature::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Feature::DeepEcho(const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+	bool  flag=true;
+
+	KML_Object::DeepEcho(indent);
+
+	if(flag) _printf0_(indent << "          name: \"" << name << "\"\n");
+	if(flag) _printf0_(indent << "    visibility: " << (visibility ? "true" : "false") << "\n");
+	if(flag) _printf0_(indent << "          open: " << (open ? "true" : "false") << "\n");
+	if(flag) _printf0_(indent << "       snippet: \"" << snippet << "\"\n");
+	if(flag) _printf0_(indent << "      descript: \"" << descript << "\"\n");
+	if(flag) _printf0_(indent << "      styleurl: \"" << styleurl << "\"\n");
+
+/*  loop over any styles for the feature  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+	if (style->Size())
+		for (i=0; i<style->Size(); i++) {
+			if(flag) _printf0_(indent << "         style: -------- begin [" << i << "] --------\n");
+			((KML_Style *)style->GetObjectByOffset(i))->DeepEcho(indent2);
+			if(flag) _printf0_(indent << "         style: --------  end  [" << i << "] --------\n");
+		}
+	else
+		if(flag) _printf0_(indent << "         style: [empty]\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Feature::Write(FILE* filout,const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+
+	KML_Object::Write(filout,indent);
+
+	if (name     && strlen(name))
+		fprintf(filout,"%s  <name>%s</name>\n",indent,name);
+	fprintf(filout,"%s  <visibility>%d</visibility>\n",indent,(visibility ? 1 : 0));
+	fprintf(filout,"%s  <open>%d</open>\n",indent,(open ? 1 : 0));
+	if (snippet  && strlen(snippet))
+		fprintf(filout,"%s  <Snippet maxLines=\"2\">%s</Snippet>\n",indent,snippet);
+	if (descript && strlen(descript))
+		fprintf(filout,"%s  <description>%s</description>\n",indent,descript);
+	if (styleurl && strlen(styleurl))
+		fprintf(filout,"%s  <styleUrl>%s</styleUrl>\n",indent,styleurl);
+
+/*  loop over any styles for the feature  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+
+	strcat(indent2,"  ");
+
+    for (i=0; i<style->Size(); i++)
+        ((KML_Style *)style->GetObjectByOffset(i))->Write(filout,indent2);
+
+	return;
+}
+/*}}}*/
+void  KML_Feature::Read(FILE* fid,char* kstr){/*{{{*/
+
+	KML_Object*  kobj;
+
+/*  process field within opening and closing tags  */
+
+	if      (!strncmp(kstr,"</Feature", 9))
+		return;
+	else if (!strncmp(kstr,"</",2))
+	  {_error_("KML_Feature::Read -- Unexpected closing tag " << kstr);}
+	else if (strncmp(kstr,"<",1))
+	  {_error_("KML_Feature::Read -- Unexpected field \"" << kstr << "\"");}
+
+	else if (!strncmp(kstr,"<Style", 6)) {
+		kobj=(KML_Object*)new KML_Style();
+		kobj->Read(fid,kstr);
+		style     ->AddObject((Object*)kobj);
+	}
+
+	else if (!strcmp(kstr,"<name>"))
+		KMLFileTokenParse( name      ,NULL,KML_FEATURE_NAME_LENGTH, kstr, fid);
+	else if (!strcmp(kstr,"<visibility>"))
+		KMLFileTokenParse(&visibility, kstr, fid);
+	else if (!strcmp(kstr,"<open>"))
+		KMLFileTokenParse(&open      , kstr, fid);
+	else if (!strncmp(kstr,"<snippet", 8))
+		KMLFileTokenParse( snippet   ,NULL,KML_FEATURE_SNIPPET_LENGTH, kstr, fid);
+	else if (!strcmp(kstr,"<description>"))
+		KMLFileTokenParse( descript  ,NULL,KML_FEATURE_DESCRIPT_LENGTH, kstr, fid);
+	else if (!strcmp(kstr,"<styleUrl>"))
+		KMLFileTokenParse( styleurl  ,NULL,KML_FEATURE_STYLEURL_LENGTH, kstr, fid);
+
+	else if (!strncmp(kstr,"<",1))
+		KML_Object::Read(fid,kstr);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Feature.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Feature.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Feature.h	(revision 21239)
@@ -0,0 +1,50 @@
+/*! \file KML_Feature.h 
+ *  \brief: header file for kml_feature abstract object
+ */
+
+#ifndef _KML_FEATURE_H_
+#define _KML_FEATURE_H_
+
+#define KML_FEATURE_NAME_LENGTH         80
+#define KML_FEATURE_SNIPPET_LENGTH     160
+#define KML_FEATURE_DESCRIPT_LENGTH   3200
+#define KML_FEATURE_STYLEURL_LENGTH     80
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Object.h"
+class KML_Style;
+class DataSet;
+/*}}}*/
+
+class KML_Feature: public KML_Object {
+
+	public:
+
+		char  name[KML_FEATURE_NAME_LENGTH+1];
+		bool  visibility;
+		bool  open;
+		char  snippet[KML_FEATURE_SNIPPET_LENGTH+1];
+		char  descript[KML_FEATURE_DESCRIPT_LENGTH+1];
+		char  styleurl[KML_FEATURE_STYLEURL_LENGTH+1];
+		DataSet* style;
+
+		/*KML_Feature constructors, destructors {{{*/
+		KML_Feature();
+		~KML_Feature();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_FEATURE_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_File.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_File.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_File.cpp	(revision 21239)
@@ -0,0 +1,126 @@
+/*!\file KML_File.cpp
+ * \brief: implementation of the kml_file object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_File.h" 
+#include "./KML_Object.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_File::KML_File(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+KML_File::~KML_File(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_File::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_File:\n");
+	KML_Object::Echo();
+
+	return;
+}
+/*}}}*/
+void  KML_File::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_File::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_File::DeepEcho(const char* indent){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_File:\n");
+	KML_Object::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_File::Write(FILE* filout,const char* indent){/*{{{*/
+
+	fprintf(filout,"%s<kml",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Object::Write(filout,indent);
+
+	fprintf(filout,"%s</kml>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_File::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</kml", 5)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_File::Read -- Unexpected closing tag " << kstri << ".");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_File::Read -- Unexpected field \"" << kstri << "\"");}
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Object::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(; ncom>0; ncom--) xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
+void  KML_File::WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp){/*{{{*/
+
+	int   i;
+
+/*  loop over the kml objects for the file  */
+
+	for (i=0; i<kmlobj->Size(); i++)
+		((KML_Object *)kmlobj->GetObjectByOffset(i))->WriteExp(fid,nstr,sgn,cm,sp);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_File.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_File.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_File.h	(revision 21239)
@@ -0,0 +1,38 @@
+/*! \file KML_File.h 
+ *  \brief: header file for kml_file object
+ */
+
+#ifndef _KML_FILE_H_
+#define _KML_FILE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+
+#include "./KML_Feature.h"
+class DataSet;
+/*}}}*/
+
+class KML_File: public KML_Object {
+
+	public:
+
+		/*KML_File constructors, destructors {{{*/
+		KML_File();
+		~KML_File();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_FILE_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Folder.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Folder.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Folder.cpp	(revision 21239)
@@ -0,0 +1,113 @@
+/*!\file KML_Folder.cpp
+ * \brief: implementation of the kml_folder object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Folder.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Folder::KML_Folder(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+KML_Folder::~KML_Folder(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Folder::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_Folder:\n");
+	KML_Container::Echo();
+
+	return;
+}
+/*}}}*/
+void  KML_Folder::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Folder::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Folder::DeepEcho(const char* indent){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_Folder:\n");
+	KML_Container::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Folder::Write(FILE* filout,const char* indent){/*{{{*/
+
+	fprintf(filout,"%s<Folder",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Container::Write(filout,indent);
+
+	fprintf(filout,"%s</Folder>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Folder::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</Folder", 8)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_Folder::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_Folder::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Container::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for (ncom=ncom; ncom>0; ncom--) xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Folder.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Folder.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Folder.h	(revision 21239)
@@ -0,0 +1,36 @@
+/*! \file KML_Folder.h 
+ *  \brief: header file for kml_folder object
+ */
+
+#ifndef _KML_FOLDER_H_
+#define _KML_FOLDER_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Container.h"
+class KML_Feature;
+/*}}}*/
+
+class KML_Folder: public KML_Container {
+
+	public:
+
+		/*KML_Folder constructors, destructors {{{*/
+		KML_Folder();
+		~KML_Folder();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_FOLDER_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Geometry.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Geometry.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Geometry.cpp	(revision 21239)
@@ -0,0 +1,79 @@
+/*!\file KML_Geometry.cpp
+ * \brief: implementation of the kml_geometry abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Geometry.h"
+#include "./KML_Object.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Geometry::KML_Geometry(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+KML_Geometry::~KML_Geometry(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Geometry::Echo(){/*{{{*/
+
+	this->KML_Object::Echo();
+
+	return;
+}
+/*}}}*/
+void  KML_Geometry::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Geometry::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Geometry::DeepEcho(const char* indent){/*{{{*/
+
+	this->KML_Object::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Geometry::Write(FILE* filout,const char* indent){/*{{{*/
+
+	KML_Object::Write(filout,indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Geometry::Read(FILE* fid,char* kstr){/*{{{*/
+
+/*  process field within opening and closing tags  */
+
+	if      (!strncmp(kstr,"</Geometry",10))
+		return;
+	else if (!strncmp(kstr,"</",2))
+	  {_error_("KML_Geometry::Read -- Unexpected closing tag " << kstr << ".\n");}
+	else if (strncmp(kstr,"<",1))
+	  {_error_("KML_Geometry::Read -- Unexpected field \"" << kstr << "\".\n");}
+
+	else if (!strncmp(kstr,"<",1))
+		KML_Object::Read(fid,kstr);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Geometry.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Geometry.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Geometry.h	(revision 21239)
@@ -0,0 +1,35 @@
+/*! \file KML_Geometry.h 
+ *  \brief: header file for kml_geometry abstract object
+ */
+
+#ifndef _KML_GEOMETRY_H_
+#define _KML_GEOMETRY_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Object.h"
+/*}}}*/
+
+class KML_Geometry: public KML_Object {
+
+	public:
+
+		/*KML_Geometry constructors, destructors {{{*/
+		KML_Geometry();
+		~KML_Geometry();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_GEOMETRY_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_GroundOverlay.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_GroundOverlay.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_GroundOverlay.cpp	(revision 21239)
@@ -0,0 +1,154 @@
+/*!\file KML_GroundOverlay.cpp
+ * \brief: implementation of the kml_groundoverlay object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Object.h"
+#include "./KML_LatLonBox.h"
+#include "./KML_GroundOverlay.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_GroundOverlay::KML_GroundOverlay(){/*{{{*/
+
+	altitude  = 0.;
+	memcpy(altmode,"clampToGround",(strlen("clampToGround")+1)*sizeof(char));
+
+	llbox     =NULL;
+
+}
+/*}}}*/
+KML_GroundOverlay::~KML_GroundOverlay(){/*{{{*/
+
+	if (llbox) {
+		delete llbox;
+		llbox     =NULL;
+	}
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_GroundOverlay::Echo(){/*{{{*/
+
+	_printf_("KML_GroundOverlay:\n");
+	KML_Overlay::Echo();
+
+	_printf_("         altitude: " << altitude << "\n");
+	_printf_("          altmode: " << altmode << "\n");
+	_printf_("            llbox: " << llbox << "\n");
+}
+/*}}}*/
+void  KML_GroundOverlay::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_GroundOverlay::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_GroundOverlay::DeepEcho(const char* indent){/*{{{*/
+
+	char  indent2[81];
+
+	_printf_(indent << "KML_GroundOverlay:\n");
+	KML_Overlay::DeepEcho(indent);
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+	_printf_(indent<<"      altitude: " << altitude << "\n");
+	_printf_(indent<<"       altmode: " << altmode << "\n");
+	if (llbox)
+	 llbox->DeepEcho(indent2);
+	else
+	 _printf_(indent<<"         llbox: " << llbox << "\n");
+}
+/*}}}*/
+void  KML_GroundOverlay::Write(FILE* filout,const char* indent){/*{{{*/
+
+	char  indent2[81];
+
+	fprintf(filout,"%s<GroundOverlay",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Overlay::Write(filout,indent);
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+
+	strcat(indent2,"  ");
+
+	fprintf(filout,"%s  <altitude>%0.16g</altitude>\n",indent,altitude);
+	fprintf(filout,"%s  <altitudeMode>%s</altitudeMode>\n",indent,altmode);
+	if (llbox)
+		llbox->Write(filout,indent2);
+
+	fprintf(filout,"%s</GroundOverlay>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_GroundOverlay::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</GroundOverlay",15)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_GroundOverlay::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_GroundOverlay::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strcmp(kstri,"<altitude>"))
+			KMLFileTokenParse(&altitude  ,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<altitudeMode>"))
+			KMLFileTokenParse( altmode   ,NULL,KML_GROUNDOVERLAY_ALTMODE_LENGTH,
+							  kstri,
+							  fid);
+		else if (!strncmp(kstri,"<LatLonBox",10)) {
+			llbox     =new KML_LatLonBox();
+			llbox     ->Read(fid,kstri);
+		}
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Overlay::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_GroundOverlay.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_GroundOverlay.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_GroundOverlay.h	(revision 21239)
@@ -0,0 +1,42 @@
+/*! \file KML_GroundOverlay.h 
+ *  \brief: header file for kml_groundoverlay object
+ */
+
+#ifndef _KML_GROUNDOVERLAY_H_
+#define _KML_GROUNDOVERLAY_H_
+
+#define KML_GROUNDOVERLAY_ALTMODE_LENGTH    18
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Overlay.h"
+class KML_LatLonBox;
+/*}}}*/
+
+class KML_GroundOverlay: public KML_Overlay {
+
+	public:
+
+		double altitude;
+		char  altmode[KML_GROUNDOVERLAY_ALTMODE_LENGTH+1];
+		KML_LatLonBox* llbox;
+
+		/*KML_GroundOverlay constructors, destructors {{{*/
+		KML_GroundOverlay();
+		~KML_GroundOverlay();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_GROUNDOVERLAY_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Icon.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Icon.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Icon.cpp	(revision 21239)
@@ -0,0 +1,170 @@
+/*!\file KML_Icon.cpp
+ * \brief: implementation of the kml_feature abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Icon.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Icon::KML_Icon(){/*{{{*/
+
+	strcpy(href      ,"");
+	strcpy(refmode   ,"onChange");
+	refint    = 4.;
+	strcpy(vrefmode  ,"never");
+	vreftime  = 4.;
+	vboundsc  = 1.;
+	strcpy(vformat   ,"");
+	strcpy(hquery    ,"");
+
+}
+/*}}}*/
+KML_Icon::~KML_Icon(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Icon::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_Icon:\n");
+	KML_Object::Echo();
+
+	if(flag) _printf0_("          href: \"" << href << "\"\n");
+	if(flag) _printf0_("       refmode: \"" << refmode << "\"\n");
+	if(flag) _printf0_("        refint: " << refint << "\n");
+	if(flag) _printf0_("      vrefmode: \"" << vrefmode << "\"\n");
+	if(flag) _printf0_("      vreftime: " << vreftime << "\n");
+	if(flag) _printf0_("      vboundsc: " << vboundsc << "\n");
+	if(flag) _printf0_("       vformat: \"" << vformat << "\"\n");
+	if(flag) _printf0_("        hquery: \"" << hquery << "\"\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Icon::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Icon::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Icon::DeepEcho(const char* indent){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_Icon:\n");
+	KML_Object::DeepEcho(indent);
+
+	if(flag) _printf0_(indent << "          href: \"" << href << "\"\n");
+	if(flag) _printf0_(indent << "       refmode: \"" << refmode << "\"\n");
+	if(flag) _printf0_(indent << "        refint: " << refint << "\n");
+	if(flag) _printf0_(indent << "      vrefmode: \"" << vrefmode << "\"\n");
+	if(flag) _printf0_(indent << "      vreftime: " << vreftime << "\n");
+	if(flag) _printf0_(indent << "      vboundsc: " << vboundsc << "\n");
+	if(flag) _printf0_(indent << "       vformat: \"" << vformat << "\"\n");
+	if(flag) _printf0_(indent << "        hquery: \"" << hquery << "\"\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Icon::Write(FILE* filout,const char* indent){/*{{{*/
+
+	fprintf(filout,"%s<Icon",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Object::Write(filout,indent);
+
+	if (href     && strlen(href))
+		fprintf(filout,"%s  <href>%s</href>\n",indent,href);
+	if (refmode  && strlen(refmode))
+		fprintf(filout,"%s  <refreshMode>%s</refreshMode>\n",indent,refmode);
+	fprintf(filout,"%s  <refreshInterval>%g</refreshInterval>\n",indent,refint);
+	if (vrefmode && strlen(vrefmode))
+		fprintf(filout,"%s  <viewRefreshMode>%s</viewRefreshMode>\n",indent,vrefmode);
+	fprintf(filout,"%s  <viewRefreshTime>%g</viewRefreshTime>\n",indent,vreftime);
+	fprintf(filout,"%s  <viewBoundScale>%g</viewBoundScale>\n",indent,vboundsc);
+	if (vformat  && strlen(vformat))
+		fprintf(filout,"%s  <viewFormat>%s</viewFormat>\n",indent,vformat);
+	if (hquery   && strlen(hquery))
+		fprintf(filout,"%s  <httpQuery>%s</httpQuery>\n",indent,hquery);
+
+	fprintf(filout,"%s</Icon>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Icon::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</Icon", 6)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_Icon::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_Icon::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strcmp(kstri,"<href>"))
+			KMLFileTokenParse( href      ,NULL,KML_ICON_HREF_LENGTH, kstri, fid);
+		else if (!strcmp(kstri,"<refreshMode>"))
+			KMLFileTokenParse( refmode   ,NULL,KML_ICON_REFMODE_LENGTH, kstri, fid);
+		else if (!strcmp(kstri,"<refreshInterval>"))
+			KMLFileTokenParse(&refint    , kstri, fid);
+		else if (!strcmp(kstri,"<viewRefreshMode>"))
+			KMLFileTokenParse( vrefmode  ,NULL,KML_ICON_VREFMODE_LENGTH, kstri, fid);
+		else if (!strcmp(kstri,"<viewRefreshTime>"))
+			KMLFileTokenParse(&vreftime  , kstri, fid);
+		else if (!strcmp(kstri,"<viewBoundScale>"))
+			KMLFileTokenParse(&vboundsc  , kstri, fid);
+		else if (!strcmp(kstri,"<viewFormat>"))
+			KMLFileTokenParse( vformat   ,NULL,KML_ICON_VFORMAT_LENGTH, kstri, fid);
+		else if (!strcmp(kstri,"<httpQuery>"))
+			KMLFileTokenParse( hquery    ,NULL,KML_ICON_HQUERY_LENGTH, kstri, fid);
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Object::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Icon.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Icon.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Icon.h	(revision 21239)
@@ -0,0 +1,50 @@
+/*! \file KML_Icon.h 
+ *  \brief: header file for kml_icon object
+ */
+
+#ifndef _KML_ICON_H_
+#define _KML_ICON_H_
+
+#define KML_ICON_HREF_LENGTH      800
+#define KML_ICON_REFMODE_LENGTH    10
+#define KML_ICON_VREFMODE_LENGTH    9
+#define KML_ICON_VFORMAT_LENGTH   800
+#define KML_ICON_HQUERY_LENGTH    800
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Object.h"
+/*}}}*/
+
+class KML_Icon: public KML_Object {
+
+	public:
+
+		char  href[KML_ICON_HREF_LENGTH+1];
+		char  refmode[KML_ICON_REFMODE_LENGTH+1];
+		float refint;
+		char  vrefmode[KML_ICON_VREFMODE_LENGTH+1];
+		float vreftime;
+		float vboundsc;
+		char  vformat[KML_ICON_VFORMAT_LENGTH+1];
+		char  hquery[KML_ICON_HQUERY_LENGTH+1];
+
+		/*KML_Icon constructors, destructors {{{*/
+		KML_Icon();
+		~KML_Icon();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_ICON_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LatLonBox.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LatLonBox.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LatLonBox.cpp	(revision 21239)
@@ -0,0 +1,149 @@
+/*!\file KML_LatLonBox.cpp
+ * \brief: implementation of the kml_feature abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_LatLonBox.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_LatLonBox::KML_LatLonBox(){/*{{{*/
+
+	north     = 0.;
+	south     = 0.;
+	east      = 0.;
+	west      = 0.;
+	rotation  = 0.;
+
+}
+/*}}}*/
+KML_LatLonBox::~KML_LatLonBox(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_LatLonBox::Echo(){/*{{{*/
+
+	_printf_("KML_LatLonBox:\n");
+	KML_Object::Echo();
+
+	_printf_("         north: " << north << "\n");
+	_printf_("         south: " << south << "\n");
+	_printf_("          east: " << east << "\n");
+	_printf_("          west: " << west << "\n");
+	_printf_("      rotation: " << rotation << "\n");
+}
+/*}}}*/
+void  KML_LatLonBox::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_LatLonBox::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_LatLonBox::DeepEcho(const char* indent){/*{{{*/
+
+	_printf_(indent << "KML_LatLonBox:\n");
+	KML_Object::DeepEcho(indent);
+
+	_printf_("         north: " << north << "\n");
+	_printf_("         south: " << south << "\n");
+	_printf_("          east: " << east << "\n");
+	_printf_("          west: " << west << "\n");
+	_printf_("      rotation: " << rotation << "\n");
+}
+/*}}}*/
+void  KML_LatLonBox::Write(FILE* filout,const char* indent){/*{{{*/
+
+	fprintf(filout,"%s<LatLonBox",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Object::Write(filout,indent);
+
+	fprintf(filout,"%s  <north>%0.16g</north>\n",indent,north);
+	fprintf(filout,"%s  <south>%0.16g</south>\n",indent,south);
+	fprintf(filout,"%s  <east>%0.16g</east>\n",indent,east);
+	fprintf(filout,"%s  <west>%0.16g</west>\n",indent,west);
+	fprintf(filout,"%s  <rotation>%0.16g</rotation>\n",indent,rotation);
+
+	fprintf(filout,"%s</LatLonBox>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_LatLonBox::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</LatLonBox",11)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_LatLonBox::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_LatLonBox::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strcmp(kstri,"<north>"))
+			KMLFileTokenParse(&north     ,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<south>"))
+			KMLFileTokenParse(&south     ,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<east>"))
+			KMLFileTokenParse(&east      ,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<west>"))
+			KMLFileTokenParse(&west      ,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<rotation>"))
+			KMLFileTokenParse(&rotation  ,
+							  kstri,
+							  fid);
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Object::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for (ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LatLonBox.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LatLonBox.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LatLonBox.h	(revision 21239)
@@ -0,0 +1,41 @@
+/*! \file KML_LatLonBox.h 
+ *  \brief: header file for kml_latlonbox object
+ */
+
+#ifndef _KML_LATLONBOX_H_
+#define _KML_LATLONBOX_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Object.h"
+/*}}}*/
+
+class KML_LatLonBox: public KML_Object {
+
+	public:
+
+		double north;
+		double south;
+		double east;
+		double west;
+		double rotation;
+
+		/*KML_LatLonBox constructors, destructors {{{*/
+		KML_LatLonBox();
+		~KML_LatLonBox();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_LATLONBOX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LineString.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LineString.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LineString.cpp	(revision 21239)
@@ -0,0 +1,222 @@
+/*!\file KML_LineString.cpp
+ * \brief: implementation of the kml_linestring object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_LineString.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_LineString::KML_LineString(){/*{{{*/
+
+	extrude   =false;
+	tessellate=false;
+	memcpy(altmode,"clampToGround",(strlen("clampToGround")+1)*sizeof(char));
+
+	ncoord    =0;
+	coords    =NULL;
+
+}
+/*}}}*/
+KML_LineString::~KML_LineString(){/*{{{*/
+
+	if (coords) xDelete<double>(coords);
+
+	coords    =NULL;
+	ncoord    =0;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_LineString::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_LineString:\n");
+	KML_Geometry::Echo();
+
+	if(flag) _printf0_("       extrude: " << (extrude ? "true" : "false") << "\n");
+	if(flag) _printf0_("    tessellate: " << (tessellate ? "true" : "false") << "\n");
+	if(flag) _printf0_("       altmode: \"" << altmode << "\"\n");
+	if(flag) _printf0_("        coords: (ncoord=" << ncoord << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_LineString::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_LineString::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_LineString::DeepEcho(const char* indent){/*{{{*/
+
+	int   i;
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_LineString:\n");
+	KML_Geometry::DeepEcho(indent);
+
+	if(flag) _printf0_(indent << "       extrude: " << (extrude ? "true" : "false") << "\n");
+	if(flag) _printf0_(indent << "    tessellate: " << (tessellate ? "true" : "false") << "\n");
+	if(flag) _printf0_(indent << "       altmode: \"" << altmode << "\"\n");
+	if(flag) _printf0_(indent << "        coords: (ncoord=" << ncoord << ")\n");
+	for (i=0; i<ncoord; i++)
+		if(flag) _printf0_(indent << "                (" << coords[3*i+0] << "," << coords[3*i+1] << "," << coords[3*i+2] << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_LineString::Write(FILE* filout,const char* indent){/*{{{*/
+
+	int   i;
+
+	fprintf(filout,"%s<LineString",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Geometry::Write(filout,indent);
+
+	fprintf(filout,"%s  <extrude>%d</extrude>\n",indent,(extrude ? 1 : 0));
+	fprintf(filout,"%s  <tessellate>%d</tessellate>\n",indent,(tessellate ? 1 : 0));
+	fprintf(filout,"%s  <altitudeMode>%s</altitudeMode>\n",indent,altmode);
+	fprintf(filout,"%s  <coordinates>\n",indent);
+
+/*  loop over the coordinates for the linestring  */
+
+	for (i=0; i<ncoord; i++)
+		fprintf(filout,"%s    %0.16g,%0.16g,%0.16g\n",indent, coords[3*i+0],coords[3*i+1],coords[3*i+2]);
+
+	fprintf(filout,"%s  </coordinates>\n",indent);
+	fprintf(filout,"%s</LineString>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_LineString::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</LineString",12)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_LineString::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_LineString::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strcmp(kstri,"<extrude>"))
+			KMLFileTokenParse(&extrude   ,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<tessellate>"))
+			KMLFileTokenParse(&tessellate,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<altitudeMode>"))
+			KMLFileTokenParse( altmode   ,NULL,KML_LINESTRING_ALTMODE_LENGTH,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<coordinates>"))
+			KMLFileTokenParse(&coords    ,&ncoord    ,0,
+							  kstri,
+							  fid);
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Geometry::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for (ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
+void  KML_LineString::WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp){/*{{{*/
+
+	int     i;
+	double  *lat,*lon,*x,*y;
+	char    nstr2[81];
+
+/*  extract latitude and longitude into vectors  */
+
+	lat=xNew<IssmPDouble>(ncoord);
+	lon=xNew<IssmPDouble>(ncoord);
+	for (i=0; i<ncoord; i++) {
+		lon[i]=coords[3*i+0];
+		lat[i]=coords[3*i+1];
+	}
+
+/*  convert latitude and longitude to x and y  */
+
+	x  =xNew<IssmPDouble>(ncoord);
+	y  =xNew<IssmPDouble>(ncoord);
+	if (sgn) {
+		Ll2xyx(x,y,lat,lon,ncoord,sgn,cm,sp);
+	}
+	else {
+		memcpy(x,lon,ncoord*sizeof(IssmDouble));
+		memcpy(y,lat,ncoord*sizeof(IssmDouble));
+	}
+
+/*  write header  */
+
+	memcpy(nstr2,nstr,(strlen(nstr)+1)*sizeof(char));
+
+	for (i=0; i<strlen(nstr2); i++)
+		if ((nstr2[i] == ' ') || (nstr2[i] == '\t'))
+			nstr2[i]='_';
+	fprintf(fid,"## Name:%s\n",nstr2);
+	fprintf(fid,"## Icon:0\n");
+	fprintf(fid,"# Points Count	Value\n");
+    fprintf(fid,"%u	%s\n",ncoord  ,"1.");
+	fprintf(fid,"# X pos	Y pos\n");
+
+/*  write vertices  */
+
+	for (i=0; i<ncoord; i++)
+	    fprintf(fid,"%lf\t%lf\n",x[i],y[i]);
+
+/*  write blank line  */
+
+	fprintf(fid,"\n");
+
+	xDelete<IssmPDouble>(y);
+	xDelete<IssmPDouble>(x);
+	xDelete<IssmPDouble>(lon);
+	xDelete<IssmPDouble>(lat);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LineString.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LineString.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LineString.h	(revision 21239)
@@ -0,0 +1,44 @@
+/*! \file KML_LineString.h 
+ *  \brief: header file for kml_linestring object
+ */
+
+#ifndef _KML_LINESTRING_H_
+#define _KML_LINESTRING_H_
+
+#define KML_LINESTRING_ALTMODE_LENGTH    18
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Geometry.h"
+/*}}}*/
+
+class KML_LineString: public KML_Geometry {
+
+	public:
+
+		bool    extrude;
+		bool    tessellate;
+		char    altmode[KML_LINESTRING_ALTMODE_LENGTH+1];
+		int     ncoord;
+		double *coords;
+
+		/*KML_LineString constructors, destructors {{{*/
+		KML_LineString();
+		~KML_LineString();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_LINESTRING_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LineStyle.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LineStyle.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LineStyle.cpp	(revision 21239)
@@ -0,0 +1,125 @@
+/*!\file KML_LineStyle.cpp
+ * \brief: implementation of the kml_linestyle object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_LineStyle.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_LineStyle::KML_LineStyle(){/*{{{*/
+
+	width     =1.;
+
+}
+/*}}}*/
+KML_LineStyle::~KML_LineStyle(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_LineStyle::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_LineStyle:\n");
+	KML_ColorStyle::Echo();
+
+	if(flag) _printf0_("         width: " << width << "\n");
+
+	return;
+}
+/*}}}*/
+void  KML_LineStyle::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_LineStyle::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_LineStyle::DeepEcho(const char* indent){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_LineStyle:\n");
+	KML_ColorStyle::DeepEcho(indent);
+
+	if(flag) _printf0_(indent << "         width: " << width << "\n");
+
+	return;
+}
+/*}}}*/
+void  KML_LineStyle::Write(FILE* filout,const char* indent){/*{{{*/
+
+	fprintf(filout,"%s<LineStyle",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_ColorStyle::Write(filout,indent);
+
+	fprintf(filout,"%s  <width>%g</width>\n",indent,width);
+
+	fprintf(filout,"%s</LineStyle>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_LineStyle::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</LineStyle",11)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_LineStyle::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_LineStyle::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strcmp(kstri,"<width>"))
+			KMLFileTokenParse(&width     ,
+							  kstri,
+							  fid);
+
+		else if (!strncmp(kstri,"<",1))
+			KML_ColorStyle::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LineStyle.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LineStyle.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LineStyle.h	(revision 21239)
@@ -0,0 +1,37 @@
+/*! \file KML_LineStyle.h 
+ *  \brief: header file for kml_linestyle object
+ */
+
+#ifndef _KML_LINESTYLE_H_
+#define _KML_LINESTYLE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_ColorStyle.h"
+/*}}}*/
+
+class KML_LineStyle: public KML_ColorStyle {
+
+	public:
+
+		float width;
+
+		/*KML_LineStyle constructors, destructors {{{*/
+		KML_LineStyle();
+		~KML_LineStyle();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_LINESTYLE_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LinearRing.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LinearRing.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LinearRing.cpp	(revision 21239)
@@ -0,0 +1,216 @@
+/*!\file KML_LinearRing.cpp
+ * \brief: implementation of the kml_linearring object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_LinearRing.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_LinearRing::KML_LinearRing(){/*{{{*/
+
+	extrude   =false;
+	tessellate=false;
+	memcpy(altmode,"clampToGround",(strlen("clampToGround")+1)*sizeof(char));
+
+	ncoord    =0;
+	coords    =NULL;
+
+}
+/*}}}*/
+KML_LinearRing::~KML_LinearRing(){/*{{{*/
+
+	if (coords) xDelete<double>(coords);
+
+	coords    =NULL;
+	ncoord    =0;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_LinearRing::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_LinearRing:\n");
+	KML_Geometry::Echo();
+
+	if(flag) _printf0_("       extrude: " << (extrude ? "true" : "false") << "\n");
+	if(flag) _printf0_("    tessellate: " << (tessellate ? "true" : "false") << "\n");
+	if(flag) _printf0_("       altmode: \"" << altmode << "\"\n");
+	if(flag) _printf0_("        coords: (ncoord=" << ncoord << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_LinearRing::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_LinearRing::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_LinearRing::DeepEcho(const char* indent){/*{{{*/
+
+	int   i;
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_LinearRing:\n");
+	KML_Geometry::DeepEcho(indent);
+
+	if(flag) _printf0_(indent << "       extrude: " << (extrude ? "true" : "false") << "\n");
+	if(flag) _printf0_(indent << "    tessellate: " << (tessellate ? "true" : "false") << "\n");
+	if(flag) _printf0_(indent << "       altmode: \"" << altmode << "\"\n");
+	if(flag) _printf0_(indent << "        coords: (ncoord=" << ncoord << ")\n");
+	for (i=0; i<ncoord; i++)
+		if(flag)_printf_(indent << "                (" <<coords[3*i+0] << "," <<coords[3*i+1] << "," <<coords[3*i+2] << ")\n\n");
+
+	return;
+}
+/*}}}*/
+void  KML_LinearRing::Write(FILE* filout,const char* indent){/*{{{*/
+
+	int   i;
+
+	fprintf(filout,"%s<LinearRing",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Geometry::Write(filout,indent);
+
+	fprintf(filout,"%s  <extrude>%d</extrude>\n",indent,(extrude ? 1 : 0));
+	fprintf(filout,"%s  <tessellate>%d</tessellate>\n",indent,(tessellate ? 1 : 0));
+	fprintf(filout,"%s  <altitudeMode>%s</altitudeMode>\n",indent,altmode);
+	fprintf(filout,"%s  <coordinates>\n",indent);
+
+/*  loop over the coordinates for the linearring  */
+
+	for (i=0; i<ncoord; i++)
+		fprintf(filout,"%s    %0.16g,%0.16g,%0.16g\n",indent,coords[3*i+0],coords[3*i+1],coords[3*i+2]);
+
+	fprintf(filout,"%s  </coordinates>\n",indent);
+	fprintf(filout,"%s</LinearRing>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_LinearRing::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char  *kstri = NULL;
+	int    ncom  = 0;
+	char **pcom  = NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,kstr)) return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid,&ncom,&pcom))){
+		if (!strncmp(kstri,"</LinearRing",12)){
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_LinearRing::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_LinearRing::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strcmp(kstri,"<extrude>"))
+			KMLFileTokenParse(&extrude,kstri,fid);
+		else if (!strcmp(kstri,"<tessellate>"))
+			KMLFileTokenParse(&tessellate,kstri,fid);
+		else if (!strcmp(kstri,"<altitudeMode>"))
+			KMLFileTokenParse(altmode,NULL,KML_LINEARRING_ALTMODE_LENGTH,kstri,fid);
+		else if (!strcmp(kstri,"<coordinates>"))
+			KMLFileTokenParse(&coords,&ncoord,3,0,kstri,fid);
+		else if (!strncmp(kstri,"<",1))
+			KML_Geometry::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
+void  KML_LinearRing::WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp){/*{{{*/
+
+	int     i;
+	double  *lat,*lon,*x,*y;
+	char    nstr2[81];
+
+/*  extract latitude and longitude into vectors  */
+
+	lat=xNew<IssmPDouble>(ncoord);
+	lon=xNew<IssmPDouble>(ncoord);
+	for (i=0; i<ncoord; i++) {
+		lon[i]=coords[3*i+0];
+		lat[i]=coords[3*i+1];
+	}
+
+/*  convert latitude and longitude to x and y  */
+
+	x  =xNew<IssmPDouble>(ncoord);
+	y  =xNew<IssmPDouble>(ncoord);
+	if (sgn) {
+		Ll2xyx(x,y,lat,lon,ncoord,sgn,cm,sp);
+	}
+	else {
+		memcpy(x,lon,ncoord*sizeof(IssmDouble));
+		memcpy(y,lat,ncoord*sizeof(IssmDouble));
+	}
+
+/*  write header  */
+
+	memcpy(nstr2,nstr,(strlen(nstr)+1)*sizeof(char));
+
+	for (i=0; i<strlen(nstr2); i++)
+		if ((nstr2[i] == ' ') || (nstr2[i] == '\t'))
+			nstr2[i]='_';
+	fprintf(fid,"## Name:%s\n",nstr2);
+	fprintf(fid,"## Icon:0\n");
+	fprintf(fid,"# Points Count	Value\n");
+	if ((lat[ncoord-1] != lat[0]) || (lon[ncoord-1] != lon[0]))
+	    fprintf(fid,"%u	%s\n",ncoord+1,"1.");
+	else
+	    fprintf(fid,"%u	%s\n",ncoord  ,"1.");
+	fprintf(fid,"# X pos	Y pos\n");
+
+/*  write vertices, making sure ring is closed  */
+
+	for (i=0; i<ncoord; i++)
+	    fprintf(fid,"%lf\t%lf\n",x[i],y[i]);
+	if ((lat[ncoord-1] != lat[0]) || (lon[ncoord-1] != lon[0]))
+	    fprintf(fid,"%lf\t%lf\n",x[0],y[0]);
+
+/*  write blank line  */
+
+	fprintf(fid,"\n");
+
+	xDelete<double>(y);
+	xDelete<double>(x);
+	xDelete<double>(lon);
+	xDelete<double>(lat);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LinearRing.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LinearRing.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_LinearRing.h	(revision 21239)
@@ -0,0 +1,44 @@
+/*! \file KML_LinearRing.h 
+ *  \brief: header file for kml_linearring object
+ */
+
+#ifndef _KML_LINEARRING_H_
+#define _KML_LINEARRING_H_
+
+#define KML_LINEARRING_ALTMODE_LENGTH    18
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Geometry.h"
+/*}}}*/
+
+class KML_LinearRing: public KML_Geometry {
+
+	public:
+
+		bool     extrude;
+		bool     tessellate;
+		char     altmode[KML_LINEARRING_ALTMODE_LENGTH+1];
+		int      ncoord;
+		double  *coords;
+
+		/*KML_LinearRing constructors, destructors {{{*/
+		KML_LinearRing();
+		~KML_LinearRing();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_LINEARRING_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_MultiGeometry.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_MultiGeometry.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_MultiGeometry.cpp	(revision 21239)
@@ -0,0 +1,195 @@
+/*!\file KML_MultiGeometry.cpp
+ * \brief: implementation of the kml_multigeometry object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Object.h"
+#include "./KML_Point.h"
+#include "./KML_Polygon.h"
+#include "./KML_LineString.h"
+#include "./KML_LinearRing.h"
+#include "./KMLFileReadUtils.h"
+#include "./KML_MultiGeometry.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_MultiGeometry::KML_MultiGeometry(){/*{{{*/
+
+	geometry  =new DataSet;
+
+}
+/*}}}*/
+KML_MultiGeometry::~KML_MultiGeometry(){/*{{{*/
+
+	if (geometry) {
+		delete geometry;
+		geometry  =NULL;
+	}
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_MultiGeometry::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_Multigeometry:\n");
+	KML_Geometry::Echo();
+
+	if(flag) _printf0_("      geometry: (size=" << geometry->Size() << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_MultiGeometry::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_MultiGeometry::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_MultiGeometry::DeepEcho(const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_Multigeometry:\n");
+	KML_Geometry::DeepEcho(indent);
+
+/*  loop over the geometry elements for the multigeometry  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+	if (geometry->Size())
+		for (i=0; i<geometry->Size(); i++) {
+			if(flag) _printf0_(indent << "      geometry: -------- begin [" << i << "] --------\n");
+			((KML_Geometry *)geometry->GetObjectByOffset(i))->DeepEcho(indent2);
+			if(flag) _printf0_(indent << "      geometry: --------  end  [" << i << "] --------\n");
+		}
+	else
+		if(flag) _printf0_(indent << "      geometry: [empty]\n");
+
+	return;
+}
+/*}}}*/
+void  KML_MultiGeometry::Write(FILE* filout,const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+
+	fprintf(filout,"%s<MultiGeometry",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Geometry::Write(filout,indent);
+
+/*  loop over the geometry elements for the multigeometry  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+
+	strcat(indent2,"  ");
+
+	for (i=0; i<geometry->Size(); i++)
+		((KML_Geometry *)geometry->GetObjectByOffset(i))->Write(filout,indent2);
+
+	fprintf(filout,"%s</MultiGeometry>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_MultiGeometry::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+	KML_Object*  kobj;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</MultiGeometry",15)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_MultiGeometry::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_MultiGeometry::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strncmp(kstri,"<Point", 6)) {
+			kobj=(KML_Object*)new KML_Point();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<LineString",11)) {
+			kobj=(KML_Object*)new KML_LineString();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<LinearRing",11)) {
+			kobj=(KML_Object*)new KML_LinearRing();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<Polygon", 8)) {
+			kobj=(KML_Object*)new KML_Polygon();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<MultiGeometry",14)) {
+			kobj=(KML_Object*)new KML_MultiGeometry();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Geometry::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
+void  KML_MultiGeometry::WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp){/*{{{*/
+
+	int   i;
+
+/*  loop over the geometry elements for the multigeometry  */
+
+	for (i=0; i<geometry->Size(); i++)
+		((KML_Object *)geometry->GetObjectByOffset(i))->WriteExp(fid,nstr,sgn,cm,sp);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_MultiGeometry.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_MultiGeometry.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_MultiGeometry.h	(revision 21239)
@@ -0,0 +1,40 @@
+/*! \file KML_MultiGeometry.h 
+ *  \brief: header file for kml_multigeometry object
+ */
+
+#ifndef _KML_MULTIGEOMETRY_H_
+#define _KML_MULTIGEOMETRY_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Geometry.h"
+class KML_Geometry;
+class DataSet;
+/*}}}*/
+
+class KML_MultiGeometry: public KML_Geometry {
+
+	public:
+
+		DataSet* geometry;
+
+		/*KML_MultiGeometry constructors, destructors {{{*/
+		KML_MultiGeometry();
+		~KML_MultiGeometry();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_MULTIGEOMETRY_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Object.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Object.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Object.cpp	(revision 21239)
@@ -0,0 +1,340 @@
+/*!\file KML_Object.cpp
+ * \brief: implementation of the kml_object abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Object.h"
+#include "./KML_Attribute.h"
+#include "./KML_Comment.h"
+#include "./KML_Unknown.h"
+#include "./KML_LatLonBox.h"
+#include "./KML_Icon.h"
+#include "./KML_MultiGeometry.h"
+#include "./KML_Document.h"
+#include "./KML_LinearRing.h"
+#include "./KML_LineStyle.h"
+#include "./KML_LineString.h"
+#include "./KML_PolyStyle.h"
+#include "./KML_Polygon.h"
+#include "./KML_Point.h"
+#include "./KML_GroundOverlay.h"
+#include "./KML_Placemark.h"
+#include "./KML_Folder.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Object::KML_Object(){/*{{{*/
+
+	attrib    =new DataSet;
+	commnt    =new DataSet;
+	kmlobj    =new DataSet;
+
+}
+/*}}}*/
+KML_Object::~KML_Object(){/*{{{*/
+
+	if (attrib) {
+		delete attrib;
+		attrib    =NULL;
+	}
+	if (commnt) {
+		delete commnt;
+		commnt    =NULL;
+	}
+	if (kmlobj) {
+		delete kmlobj;
+		kmlobj    =NULL;
+	}
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Object::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("        attrib: (size=" << attrib->Size() << ")\n");
+	if(flag) _printf0_("        commnt: (size=" << commnt->Size() << ")\n");
+	if(flag) _printf0_("        kmlobj: (size=" << kmlobj->Size() << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Object::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Object::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Object::DeepEcho(const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+	bool  flag=true;
+
+/*  loop over the attributes for the object  */
+
+	if (attrib->Size())
+		for (i=0; i<attrib->Size(); i++) {
+			((KML_Attribute *)attrib->GetObjectByOffset(i))->DeepEcho(indent);
+		}
+	else
+		if(flag) _printf0_(indent << "        attrib: [empty]\n");
+
+/*  loop over the comments for the object  */
+
+	if (commnt->Size())
+		for (i=0; i<commnt->Size(); i++) {
+			((KML_Comment *)commnt->GetObjectByOffset(i))->DeepEcho(indent);
+		}
+	else
+		if(flag) _printf0_(indent << "        commnt: [empty]\n");
+
+/*  loop over the unknown objects for the object  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+	if (kmlobj->Size())
+		for (i=0; i<kmlobj->Size(); i++) {
+            if(flag) _printf0_(indent << "        kmlobj: -------- begin [" << i << "] --------\n");
+			((KML_Unknown *)kmlobj->GetObjectByOffset(i))->DeepEcho(indent2);
+            if(flag) _printf0_(indent << "        kmlobj: --------  end  [" << i << "] --------\n");
+		}
+	else
+		if(flag) _printf0_(indent << "        kmlobj: [empty]\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Object::Write(FILE* filout,const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+
+//  attributes always written in keyword line of derived classes
+//  comments always written after keyword line of derived classes
+
+/*  loop over the unknown objects for the object  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+	if (kmlobj->Size())
+		for (i=0; i<kmlobj->Size(); i++) {
+			((KML_Unknown *)kmlobj->GetObjectByOffset(i))->Write(filout,indent2);
+		}
+
+	return;
+}
+/*}}}*/
+void  KML_Object::Read(FILE* fid,char* kstr){/*{{{*/
+
+	KML_Object*  kobj;
+
+/*  process field within opening and closing tags  */
+
+	if      (!strncmp(kstr,"</Object", 8))
+		return;
+	else if (!strncmp(kstr,"</",2))
+	  {_error_("KML_Object::Read -- Unexpected closing tag " << kstr << ".\n");}
+	else if (strncmp(kstr,"<",1))
+	  {_error_("KML_Object::Read -- Unexpected field \"" << kstr << "\".\n");}
+
+	else if (!strncmp(kstr,"<Placemark",10)) {
+		kobj=(KML_Object*)new KML_Placemark();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<Folder", 7)) {
+		kobj=(KML_Object*)new KML_Folder();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<Document", 9)) {
+		kobj=(KML_Object*)new KML_Document();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<GroundOverlay",14)) {
+		kobj=(KML_Object*)new KML_GroundOverlay();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<LatLonBox",10)) {
+		kobj=(KML_Object*)new KML_LatLonBox();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<Icon", 5)) {
+		kobj=(KML_Object*)new KML_Icon();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<Point", 6)) {
+		kobj=(KML_Object*)new KML_Point();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<LineString",11)) {
+		kobj=(KML_Object*)new KML_LineString();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<LinearRing",11)) {
+		kobj=(KML_Object*)new KML_LinearRing();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<Polygon", 8)) {
+		kobj=(KML_Object*)new KML_Polygon();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<MultiGeometry",14)) {
+		kobj=(KML_Object*)new KML_MultiGeometry();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+//	else if (!strncmp(kstr,"<IconStyle",10)) {
+//		kobj=(KML_Object*)new KML_IconStyle();
+//		kobj->Read(fid,kstr);
+//		kmlobj    ->AddObject((Object*)kobj);
+//	}
+
+//	else if (!strncmp(kstr,"<LabelStyle",11)) {
+//		kobj=(KML_Object*)new KML_LabelStyle();
+//		kobj->Read(fid,kstr);
+//		kmlobj    ->AddObject((Object*)kobj);
+//	}
+
+	else if (!strncmp(kstr,"<LineStyle",10)) {
+		kobj=(KML_Object*)new KML_LineStyle();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<PolyStyle",10)) {
+		kobj=(KML_Object*)new KML_PolyStyle();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+//	else if (!strncmp(kstr,"<BalloonStyle",13)) {
+//		kobj=(KML_Object*)new KML_BalloonStyle();
+//		kobj->Read(fid,kstr);
+//		kmlobj    ->AddObject((Object*)kobj);
+//	}
+
+//	else if (!strncmp(kstr,"<ListStyle",10)) {
+//		kobj=(KML_Object*)new KML_ListStyle();
+//		kobj->Read(fid,kstr);
+//		kmlobj    ->AddObject((Object*)kobj);
+//	}
+
+	else if (!strncmp(kstr,"<",1)) {
+		_printf0_("KML_Object::Read -- Unrecognized opening tag " << kstr << ".\n");
+//		KMLFileTagSkip(kstr,
+//					   fid);
+		kobj=(KML_Object*)new KML_Unknown();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	return;
+}
+/*}}}*/
+void  KML_Object::WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp){/*{{{*/
+
+	;
+
+	return;
+}
+/*}}}*/
+void  KML_Object::AddAttrib(const char* name,const char* value){/*{{{*/
+
+	KML_Attribute* katt=NULL;
+
+	katt=new KML_Attribute();
+	katt->Alloc(name,value);
+	katt->Add(attrib);
+
+	return;
+}
+/*}}}*/
+void  KML_Object::WriteAttrib(FILE* filout,const char* indent){/*{{{*/
+
+//  attributes always written in keyword line of kml_object
+
+/*  loop over any attributes for the object  */
+
+	if (attrib->Size())
+		for (int i=0; i<attrib->Size(); i++)
+			((KML_Attribute *)attrib->GetObjectByOffset(i))->Write(filout,indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Object::AddCommnt(int ncom,char** pcom){/*{{{*/
+
+	int   i;
+	KML_Comment* kcom=NULL;
+
+	for (i=0; i<ncom; i++) {
+		kcom=new KML_Comment();
+		kcom->Alloc(pcom[i]);
+		kcom->Add(commnt);
+	}
+
+	return;
+}
+/*}}}*/
+void  KML_Object::AddCommnt(char* value){/*{{{*/
+
+	KML_Comment* kcom=NULL;
+
+	kcom=new KML_Comment();
+	kcom->Alloc(value);
+	kcom->Add(commnt);
+
+	return;
+}
+/*}}}*/
+void  KML_Object::WriteCommnt(FILE* filout,const char* indent){/*{{{*/
+
+	int   i;
+
+//  comments always written after keyword line of kml_object
+
+/*  loop over any comments for the object  */
+
+	if (commnt->Size())
+		for (i=0; i<commnt->Size(); i++)
+			((KML_Comment *)commnt->GetObjectByOffset(i))->Write(filout,indent);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Object.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Object.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Object.h	(revision 21239)
@@ -0,0 +1,46 @@
+/*! \file KML_Object.h 
+ *  \brief: header file for kml_object abstract object
+ */
+
+#ifndef _KML_OBJECT_H_
+#define _KML_OBJECT_H_
+
+/*Headers:{{{*/
+#include "../shared/shared.h"
+#include "../datastructures/datastructures.h"
+/*}}}*/
+
+class KML_Object: public Object {
+
+	public:
+
+		DataSet* attrib;
+		DataSet* commnt;
+		DataSet* kmlobj;
+
+		/*KML_Object constructors, destructors {{{*/
+		KML_Object();
+		~KML_Object();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		virtual void  Echo();
+		virtual void  DeepEcho();
+		virtual void  DeepEcho(const char* indent);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+		/*virtual functions: */
+		virtual void  Write(FILE* fid,const char* indent)=0;
+		virtual void  Read(FILE* fid,char* kstr)=0;
+		virtual void  WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp);
+		virtual void  AddAttrib(const char* name,const char* value);
+		virtual void  WriteAttrib(FILE* fid,const char* indent);
+		virtual void  AddCommnt(int ncom,char** pcom);
+		virtual void  AddCommnt(char* value);
+		virtual void  WriteCommnt(FILE* fid,const char* indent);
+
+};
+#endif  /* _KML_OBJECT_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Overlay.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Overlay.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Overlay.cpp	(revision 21239)
@@ -0,0 +1,125 @@
+/*!\file KML_Overlay.cpp
+ * \brief: implementation of the kml_overlay abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KMLFileReadUtils.h"
+#include "./KML_Overlay.h"
+#include "./KML_Icon.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Overlay::KML_Overlay(){/*{{{*/
+
+	strcpy(color     ,"ffffffff");
+	memcpy(color,"ffffffff",(strlen("ffffffff")+1)*sizeof(char));
+
+	draword   = 0;
+	icon      =NULL;
+
+}
+/*}}}*/
+KML_Overlay::~KML_Overlay(){/*{{{*/
+
+	if (icon) {
+		delete icon;
+		icon      =NULL;
+	}
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Overlay::Echo(){/*{{{*/
+
+	KML_Feature::Echo();
+	_printf0_("         color: \"" << color << "\"\n");
+	_printf0_("       draword: " << draword << "\n");
+	_printf0_("          icon: " << icon << "\n");
+}
+/*}}}*/
+void  KML_Overlay::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Overlay::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Overlay::DeepEcho(const char* indent){/*{{{*/
+
+	char  indent2[81];
+	KML_Feature::DeepEcho(indent);
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+	_printf0_(indent << "         color: " << color << "\n");
+	_printf0_(indent << "       draword: " << draword << "\n");
+	if (icon)
+		icon->DeepEcho(indent2);
+	else
+		_printf0_(indent << "          icon: " << icon << "\n");
+}
+/*}}}*/
+void  KML_Overlay::Write(FILE* filout,const char* indent){/*{{{*/
+
+	char  indent2[81];
+
+	KML_Feature::Write(filout,indent);
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+
+	strcat(indent2,"  ");
+
+	if (color     && strlen(color))
+		fprintf(filout,"%s  <color>%s</color>\n",indent,color);
+	fprintf(filout,"%s  <drawOrder>%d</drawOrder>\n",indent,draword);
+	if (icon)
+		icon->Write(filout,indent2);
+
+	return;
+}
+/*}}}*/
+void  KML_Overlay::Read(FILE* fid,char* kstr){/*{{{*/
+
+/*  process field within opening and closing tags  */
+
+	if      (!strncmp(kstr,"</Overlay", 9)) {
+		xDelete<char>(kstr);
+		return;
+	}
+	else if (!strncmp(kstr,"</",2))
+	  {_error_("KML_Overlay::Read -- Unexpected closing tag " << kstr << ".\n");}
+	else if (strncmp(kstr,"<",1))
+	  {_error_("KML_Overlay::Read -- Unexpected field \"" << kstr << "\".\n");}
+
+	else if (!strcmp(kstr,"<color>"))
+		KMLFileTokenParse( color     ,NULL,KML_OVERLAY_COLOR_LENGTH,
+						  kstr,
+						  fid);
+	else if (!strcmp(kstr,"<drawOrder>"))
+		KMLFileTokenParse(&draword   ,
+						  kstr,
+						  fid);
+
+	else if (!strncmp(kstr,"<Icon", 5)) {
+		icon      =new KML_Icon();
+		icon      ->Read(fid,kstr);
+	}
+
+	else if (!strncmp(kstr,"<",1))
+		KML_Feature::Read(fid,kstr);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Overlay.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Overlay.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Overlay.h	(revision 21239)
@@ -0,0 +1,42 @@
+/*! \file KML_Overlay.h 
+ *  \brief: header file for kml_overlay abstract object
+ */
+
+#ifndef _KML_OVERLAY_H_
+#define _KML_OVERLAY_H_
+
+#define KML_OVERLAY_COLOR_LENGTH  8
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Feature.h"
+class KML_Icon;
+/*}}}*/
+
+class KML_Overlay: public KML_Feature {
+
+	public:
+
+		char  color[KML_OVERLAY_COLOR_LENGTH+1];
+		int   draword;
+		KML_Icon* icon;
+
+		/*KML_Overlay constructors, destructors {{{*/
+		KML_Overlay();
+		~KML_Overlay();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_OVERLAY_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Placemark.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Placemark.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Placemark.cpp	(revision 21239)
@@ -0,0 +1,203 @@
+/*!\file KML_Placemark.cpp
+ * \brief: implementation of the kml_placemark object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KMLFileReadUtils.h"
+#include "./KML_Geometry.h"
+#include "./KML_Point.h"
+#include "./KML_LineString.h"
+#include "./KML_Polygon.h"
+#include "./KML_MultiGeometry.h"
+#include "./KML_LinearRing.h"
+#include "./KML_Placemark.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Placemark::KML_Placemark(){/*{{{*/
+
+	geometry  =new DataSet;
+
+}
+/*}}}*/
+KML_Placemark::~KML_Placemark(){/*{{{*/
+
+	if (geometry) {
+		delete geometry;
+		geometry  =NULL;
+	}
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Placemark::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_Placemark:\n");
+	KML_Feature::Echo();
+
+	if(flag) _printf0_("      geometry: (size=" << geometry->Size() << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Placemark::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Placemark::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Placemark::DeepEcho(const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_Placemark:\n");
+	KML_Feature::DeepEcho(indent);
+
+/*  loop over the geometry elements for the placemark  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+	if (geometry->Size())
+		for (i=0; i<geometry->Size(); i++) {
+			if(flag) _printf0_(indent << "      geometry: -------- begin [" << i << "] --------\n");
+			((KML_Geometry *)geometry->GetObjectByOffset(i))->DeepEcho(indent2);
+			if(flag) _printf0_(indent << "      geometry: --------  end  [" << i << "] --------\n");
+		}
+	else
+		if(flag) _printf0_(indent << "      geometry: [empty]\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Placemark::Write(FILE* filout,const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+
+	fprintf(filout,"%s<Placemark",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Feature::Write(filout,indent);
+
+/*  loop over the geometry elements for the placemark  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+
+	strcat(indent2,"  ");
+
+	for (i=0; i<geometry->Size(); i++)
+		((KML_Geometry *)geometry->GetObjectByOffset(i))->Write(filout,indent2);
+
+	fprintf(filout,"%s</Placemark>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Placemark::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+	KML_Object*  kobj;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</Placemark",11)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_Placemark::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_Placemark::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strncmp(kstri,"<Point", 6)) {
+			kobj=(KML_Object*)new KML_Point();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<LineString",11)) {
+			kobj=(KML_Object*)new KML_LineString();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<LinearRing",11)) {
+			kobj=(KML_Object*)new KML_LinearRing();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<Polygon", 8)) {
+			kobj=(KML_Object*)new KML_Polygon();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<MultiGeometry",14)) {
+			kobj=(KML_Object*)new KML_MultiGeometry();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Feature::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
+void  KML_Placemark::WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp){/*{{{*/
+
+	int   i;
+	char  nstr2[81];
+
+/*  loop over the geometry elements for the placemark  */
+
+	for (i=0; i<geometry->Size(); i++) {
+		if (strlen(nstr))
+			sprintf(nstr2,"%s %s",nstr,name);
+		else
+			sprintf(nstr2,"%s",name);
+
+		((KML_Object *)geometry->GetObjectByOffset(i))->WriteExp(fid,nstr2,sgn,cm,sp);
+	}
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Placemark.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Placemark.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Placemark.h	(revision 21239)
@@ -0,0 +1,40 @@
+/*! \file KML_Placemark.h 
+ *  \brief: header file for kml_placemark object
+ */
+
+#ifndef _KML_PLACEMARK_H_
+#define _KML_PLACEMARK_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Feature.h"
+class KML_Geometry;
+class DataSet;
+/*}}}*/
+
+class KML_Placemark: public KML_Feature {
+
+	public:
+
+		DataSet* geometry;
+
+		/*KML_Placemark constructors, destructors {{{*/
+		KML_Placemark();
+		~KML_Placemark();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_PLACEMARK_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Point.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Point.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Point.cpp	(revision 21239)
@@ -0,0 +1,185 @@
+/*!\file KML_Point.cpp
+ * \brief: implementation of the kml_point object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Point.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Point::KML_Point(){/*{{{*/
+
+	extrude   =false;
+	memcpy(altmode,"clampToGround",(strlen("clampToGround")+1)*sizeof(char));
+
+	coords[0] = 0.;
+	coords[1] = 0.;
+	coords[2] = 0.;
+
+}
+/*}}}*/
+KML_Point::~KML_Point(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Point::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_Point:\n");
+	KML_Geometry::Echo();
+
+	if(flag) _printf0_("       extrude: " << (extrude ? "true" : "false") << "\n");
+	if(flag) _printf0_("       altmode: \"" << altmode << "\"\n");
+	if(flag) _printf0_("        coords: (" << coords[0] << "," << coords[1] << "," << coords[2] << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Point::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Point::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Point::DeepEcho(const char* indent){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_Point:\n");
+	KML_Geometry::DeepEcho(indent);
+
+	if(flag) _printf0_(indent << "       extrude: " << (extrude ? "true" : "false") << "\n");
+	if(flag) _printf0_(indent << "       altmode: \"" << altmode << "\"\n");
+	if(flag) _printf0_(indent << "        coords: (" << coords[0] << "," << coords[1] << "," << coords[2] << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Point::Write(FILE* filout,const char* indent){/*{{{*/
+
+	fprintf(filout,"%s<Point",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Geometry::Write(filout,indent);
+
+	fprintf(filout,"%s  <extrude>%d</extrude>\n",indent,(extrude ? 1 : 0));
+	fprintf(filout,"%s  <altitudeMode>%s</altitudeMode>\n",indent,altmode);
+	fprintf(filout,"%s  <coordinates>%0.16g,%0.16g,%0.16g</coordinates>\n",
+			indent,coords[0],coords[1],coords[2]);
+
+	fprintf(filout,"%s</Point>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Point::Read(FILE* fid,char* kstr){/*{{{*/
+
+	double*      pcoords=&coords[0];
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</Point", 7)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_Point::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_Point::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strcmp(kstri,"<extrude>"))
+			KMLFileTokenParse(&extrude   , kstri, fid);
+		else if (!strcmp(kstri,"<altitudeMode>"))
+			KMLFileTokenParse( altmode   ,NULL,KML_POINT_ALTMODE_LENGTH, kstri, fid);
+		else if (!strcmp(kstri,"<coordinates>"))
+			KMLFileTokenParse(&pcoords   ,NULL,3, kstri, fid);
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Geometry::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
+void  KML_Point::WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp){/*{{{*/
+
+	int     i;
+	double  lat,lon,x,y;
+	char    nstr2[81];
+
+/*  extract latitude and longitude  */
+
+	lon=coords[0];
+	lat=coords[1];
+
+/*  convert latitude and longitude to x and y  */
+
+	if (sgn) {
+		Ll2xyx(&x,&y,&lat,&lon,1,sgn,cm,sp);
+	}
+	else {
+		memcpy(&x,&lon,1*sizeof(IssmDouble));
+		memcpy(&y,&lat,1*sizeof(IssmDouble));
+	}
+
+/*  write header  */
+
+	memcpy(nstr2,nstr,(strlen(nstr)+1)*sizeof(char));
+
+	for (i=0; i<strlen(nstr2); i++)
+		if ((nstr2[i] == ' ') || (nstr2[i] == '\t'))
+			nstr2[i]='_';
+	fprintf(fid,"## Name:%s\n",nstr2);
+	fprintf(fid,"## Icon:0\n");
+	fprintf(fid,"# Points Count	Value\n");
+    fprintf(fid,"%u	%s\n",1,"1.");
+	fprintf(fid,"# X pos	Y pos\n");
+
+/*  write vertex  */
+
+    fprintf(fid,"%lf\t%lf\n",x,y);
+
+/*  write blank line  */
+
+	fprintf(fid,"\n");
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Point.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Point.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Point.h	(revision 21239)
@@ -0,0 +1,42 @@
+/*! \file KML_Point.h 
+ *  \brief: header file for kml_point object
+ */
+
+#ifndef _KML_POINT_H_
+#define _KML_POINT_H_
+
+#define KML_POINT_ALTMODE_LENGTH    18
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Geometry.h"
+/*}}}*/
+
+class KML_Point: public KML_Geometry {
+
+	public:
+
+		bool  extrude;
+		char  altmode[KML_POINT_ALTMODE_LENGTH+1];
+		double coords[3];
+
+		/*KML_Point constructors, destructors {{{*/
+		KML_Point();
+		~KML_Point();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_POINT_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_PolyStyle.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_PolyStyle.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_PolyStyle.cpp	(revision 21239)
@@ -0,0 +1,135 @@
+/*!\file KML_PolyStyle.cpp
+ * \brief: implementation of the kml_polystyle object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Object.h"
+#include "./KML_ColorStyle.h"
+#include "./KML_PolyStyle.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_PolyStyle::KML_PolyStyle(){/*{{{*/
+
+	fill      =true;
+	outline   =true;
+
+}
+/*}}}*/
+KML_PolyStyle::~KML_PolyStyle(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_PolyStyle::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_PolyStyle:\n");
+	KML_ColorStyle::Echo();
+
+	if(flag) _printf0_("          fill: " << fill << "\n");
+	if(flag) _printf0_("       outline: " << outline << "\n");
+
+	return;
+}
+/*}}}*/
+void  KML_PolyStyle::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_PolyStyle::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_PolyStyle::DeepEcho(const char* indent){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_PolyStyle:\n");
+	KML_ColorStyle::DeepEcho(indent);
+
+	if(flag) _printf0_(indent << "          fill: " << fill << "\n");
+	if(flag) _printf0_(indent << "       outline: " << outline << "\n");
+
+	return;
+}
+/*}}}*/
+void  KML_PolyStyle::Write(FILE* filout,const char* indent){/*{{{*/
+
+	fprintf(filout,"%s<PolyStyle",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_ColorStyle::Write(filout,indent);
+
+	fprintf(filout,"%s  <fill>%d</fill>\n",indent,fill);
+	fprintf(filout,"%s  <outline>%d</outline>\n",indent,outline);
+
+	fprintf(filout,"%s</PolyStyle>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_PolyStyle::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</PolyStyle",11)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_PolyStyle::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_PolyStyle::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strcmp(kstri,"<fill>"))
+			KMLFileTokenParse(&fill      ,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<outline>"))
+			KMLFileTokenParse(&outline   ,
+							  kstri,
+							  fid);
+
+		else if (!strncmp(kstri,"<",1))
+			KML_ColorStyle::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_PolyStyle.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_PolyStyle.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_PolyStyle.h	(revision 21239)
@@ -0,0 +1,38 @@
+/*! \file KML_PolyStyle.h 
+ *  \brief: header file for kml_polystyle object
+ */
+
+#ifndef _KML_POLYSTYLE_H_
+#define _KML_POLYSTYLE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_ColorStyle.h"
+/*}}}*/
+
+class KML_PolyStyle: public KML_ColorStyle {
+
+	public:
+
+		int   fill;
+		int   outline;
+
+		/*KML_PolyStyle constructors, destructors {{{*/
+		KML_PolyStyle();
+		~KML_PolyStyle();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_POLYSTYLE_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Polygon.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Polygon.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Polygon.cpp	(revision 21239)
@@ -0,0 +1,283 @@
+/*!\file KML_Polygon.cpp
+ * \brief: implementation of the kml_polygon object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_LinearRing.h"
+#include "./KMLFileReadUtils.h"
+#include "./KML_Polygon.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Polygon::KML_Polygon(){/*{{{*/
+
+	extrude   =false;
+	tessellate=false;
+	memcpy(altmode,"clampToGround",(strlen("clampToGround")+1)*sizeof(char));
+
+	outer     =new DataSet;
+	inner     =new DataSet;
+
+}
+/*}}}*/
+KML_Polygon::~KML_Polygon(){/*{{{*/
+
+	if (inner) {
+		delete inner;
+		inner     =NULL;
+	}
+
+	if (outer) {
+		delete outer;
+		outer     =NULL;
+	}
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Polygon::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_Polygon:\n");
+	KML_Geometry::Echo();
+
+	if(flag) _printf0_("       extrude: " << (extrude ? "true" : "false") << "\n");
+	if(flag) _printf0_("    tessellate: " << (tessellate ? "true" : "false") << "\n");
+	if(flag) _printf0_("       altmode: \"" << altmode << "\"\n");
+	if(flag) _printf0_("         outer: (size=" << outer->Size() << ")\n");
+	if(flag) _printf0_("         inner: (size=" << inner->Size() << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Polygon::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Polygon::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Polygon::DeepEcho(const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_Polygon:\n");
+	KML_Geometry::DeepEcho(indent);
+
+	if(flag) _printf0_(indent << "       extrude: " << (extrude ? "true" : "false") << "\n");
+	if(flag) _printf0_(indent << "    tessellate: " << (tessellate ? "true" : "false") << "\n");
+	if(flag) _printf0_(indent << "       altmode: \"" << altmode << "\"\n");
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+	if (outer->Size())
+		for (i=0; i<outer->Size(); i++) {
+			if(flag) _printf0_(indent << "         outer: -------- begin [" << i << "] --------\n");
+			((KML_LinearRing *)outer->GetObjectByOffset(i))->DeepEcho(indent2);
+			if(flag) _printf0_(indent << "         outer: --------  end  [" << i << "] --------\n");
+		}
+	else
+		if(flag) _printf0_(indent << "         outer: [empty]\n");
+
+	if (inner->Size())
+		for (i=0; i<inner->Size(); i++) {
+			if(flag) _printf0_(indent << "         inner: -------- begin [" << i << "] --------\n");
+			((KML_LinearRing *)inner->GetObjectByOffset(i))->DeepEcho(indent2);
+			if(flag) _printf0_(indent << "         inner: --------  end  [" << i << "] --------\n");
+		}
+	else
+		if(flag) _printf0_(indent << "         inner: [empty]\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Polygon::Write(FILE* filout,const char* indent){/*{{{*/
+
+	int   i;
+	char  indent4[81];
+
+	fprintf(filout,"%s<Polygon",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Geometry::Write(filout,indent);
+
+	fprintf(filout,"%s  <extrude>%d</extrude>\n",indent,(extrude ? 1 : 0));
+	fprintf(filout,"%s  <tessellate>%d</tessellate>\n",indent,(tessellate ? 1 : 0));
+	fprintf(filout,"%s  <altitudeMode>%s</altitudeMode>\n",indent,altmode);
+
+	memcpy(indent4,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent4,"    ");
+
+/*  check outer boundary for the polygon  */
+
+	fprintf(filout,"%s  <outerBoundaryIs>\n",indent);
+	if (outer->Size())
+		((KML_LinearRing *)outer->GetObjectByOffset(0))->Write(filout,indent4);
+	fprintf(filout,"%s  </outerBoundaryIs>\n",indent);
+
+/*  loop over any inner boundaries for the polygon  */
+
+	for (i=0; i<inner->Size(); i++) {
+		fprintf(filout,"%s  <innerBoundaryIs>\n",indent);
+		((KML_LinearRing *)inner->GetObjectByOffset(i))->Write(filout,indent4);
+		fprintf(filout,"%s  </innerBoundaryIs>\n",indent);
+	}
+
+	fprintf(filout,"%s</Polygon>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Polygon::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	char*        kstrj;
+	int          ncom=0;
+	char**       pcom=NULL;
+	KML_Object*  kobj;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</Polygon", 9)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_Polygon::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_Polygon::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strcmp(kstri,"<extrude>"))
+			KMLFileTokenParse(&extrude   ,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<tessellate>"))
+			KMLFileTokenParse(&tessellate,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<altitudeMode>"))
+			KMLFileTokenParse( altmode   ,NULL,KML_POLYGON_ALTMODE_LENGTH,
+							  kstri,
+							  fid);
+
+		else if (!strcmp(kstri,"<outerBoundaryIs>"))
+
+/*  loop over and process fields within outer boundary  */
+
+			while((kstrj=KMLFileToken(fid, &ncom,&pcom))){
+				if      (!strncmp(kstrj,"</outerBoundaryIs",17)) {
+					xDelete<char>(kstrj);
+					break;
+				}
+				else if (!strncmp(kstrj,"</",2))
+				  {_error_("KML_Polygon::Read -- Unexpected closing tag " << kstrj << ".\n");}
+				else if (strncmp(kstrj,"<",1))
+				  {_error_("KML_Polygon::Read -- Unexpected field \"" << kstrj << "\".\n");}
+
+				else if (!strncmp(kstrj,"<LinearRing",11)) {
+					kobj=(KML_Object*)new KML_LinearRing();
+					kobj->Read(fid,kstrj);
+					outer     ->AddObject((Object*)kobj);
+				}
+
+				else if (!strncmp(kstrj,"<",1))
+					KML_Geometry::Read(fid,kstrj);
+
+				xDelete<char>(kstrj);
+			}
+
+		else if (!strcmp(kstri,"<innerBoundaryIs>"))
+
+/*  loop over and process fields within inner boundaries  */
+
+			while((kstrj=KMLFileToken(fid, &ncom,&pcom))){
+				if      (!strncmp(kstrj,"</innerBoundaryIs",17)) {
+					xDelete<char>(kstrj);
+					break;
+				}
+				else if (!strncmp(kstrj,"</",2))
+				  {_error_("KML_Polygon::Read -- Unexpected closing tag " << kstrj << ".\n");}
+				else if (strncmp(kstrj,"<",1))
+				  {_error_("KML_Polygon::Read -- Unexpected field \"" << kstrj << "\".\n");}
+
+				else if (!strncmp(kstrj,"<LinearRing",11)) {
+					kobj=(KML_Object*)new KML_LinearRing();
+					kobj->Read(fid,kstrj);
+					inner     ->AddObject((Object*)kobj);
+				}
+
+				else if (!strncmp(kstrj,"<",1))
+					KML_Geometry::Read(fid,kstrj);
+
+				xDelete<char>(kstrj);
+			}
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Geometry::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
+void  KML_Polygon::WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp){/*{{{*/
+
+	int   i;
+	char  nstr2[81];
+
+/*  check outer boundary for the polygon  */
+
+	if (outer->Size()) {
+		if (strlen(nstr))
+			sprintf(nstr2,"%s (outer)",nstr);
+		else
+			sprintf(nstr2,"(outer)");
+
+		((KML_LinearRing *)outer->GetObjectByOffset(0))->WriteExp(fid,nstr2,sgn,cm,sp);
+	}
+
+/*  loop over any inner boundaries for the polygon  */
+
+	for (i=0; i<inner->Size(); i++) {
+		if (strlen(nstr))
+			sprintf(nstr2,"%s (inner %d of %d)",nstr,i+1,inner->Size());
+		else
+			sprintf(nstr2,"(inner %d of %d)",i+1,inner->Size());
+
+		((KML_LinearRing *)inner->GetObjectByOffset(i))->WriteExp(fid,nstr2,sgn,cm,sp);
+	}
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Polygon.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Polygon.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Polygon.h	(revision 21239)
@@ -0,0 +1,46 @@
+/*! \file KML_Polygon.h 
+ *  \brief: header file for kml_polygon object
+ */
+
+#ifndef _KML_POLYGON_H_
+#define _KML_POLYGON_H_
+
+#define KML_POLYGON_ALTMODE_LENGTH    18
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Geometry.h"
+class KML_LinearRing;
+class DataSet;
+/*}}}*/
+
+class KML_Polygon: public KML_Geometry {
+
+	public:
+
+		bool  extrude;
+		bool  tessellate;
+		char  altmode[KML_POLYGON_ALTMODE_LENGTH+1];
+		DataSet* outer;
+		DataSet* inner;
+
+		/*KML_Polygon constructors, destructors {{{*/
+		KML_Polygon();
+		~KML_Polygon();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_POLYGON_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Style.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Style.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Style.cpp	(revision 21239)
@@ -0,0 +1,229 @@
+/*!\file KML_Style.cpp
+ * \brief: implementation of the kml_style object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KMLFileReadUtils.h"
+#include "./KML_LineStyle.h"
+#include "./KML_PolyStyle.h"
+#include "./KML_Style.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Style::KML_Style(){/*{{{*/
+
+	icon      =NULL;
+	label     =NULL;
+	line      =NULL;
+	poly      =NULL;
+	balloon   =NULL;
+	list      =NULL;
+
+}
+/*}}}*/
+KML_Style::~KML_Style(){/*{{{*/
+
+	if (list) {
+//		delete list;
+		list      =NULL;
+	}
+	if (balloon) {
+//		delete balloon;
+		balloon   =NULL;
+	}
+	if (poly) {
+		delete poly;
+		poly      =NULL;
+	}
+	if (line) {
+		delete line;
+		line      =NULL;
+	}
+	if (label) {
+//		delete label;
+		label     =NULL;
+	}
+	if (icon) {
+//		delete icon;
+		icon      =NULL;
+	}
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Style::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_Style:\n");
+	KML_StyleSelector::Echo();
+
+	if(flag) _printf0_("          icon: " << icon << "\n");
+	if(flag) _printf0_("         label: " << label << "\n");
+	if(flag) _printf0_("          line: " << line << "\n");
+	if(flag) _printf0_("          poly: " << poly << "\n");
+	if(flag) _printf0_("       balloon: " << balloon << "\n");
+	if(flag) _printf0_("          list: " << list << "\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Style::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Style::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Style::DeepEcho(const char* indent){/*{{{*/
+
+	char  indent2[81];
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_Style:\n");
+	KML_StyleSelector::DeepEcho(indent);
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+//	if (icon)
+//		icon->DeepEcho(indent2);
+//	else
+		if(flag) _printf0_(indent << "          icon: " << icon << "\n");
+//	if (label)
+//		label->DeepEcho(indent2);
+//	else
+		if(flag) _printf0_(indent << "         label: " << label << "\n");
+	if (line)
+		line->DeepEcho(indent2);
+	else
+		if(flag) _printf0_(indent << "          line: " << line << "\n");
+	if (poly)
+		poly->DeepEcho(indent2);
+	else
+		if(flag) _printf0_(indent << "          poly: " << poly << "\n");
+//	if (balloon)
+//		balloon->DeepEcho(indent2);
+//	else
+		if(flag) _printf0_(indent << "       balloon: " << balloon << "\n");
+//	if (list)
+//		list->DeepEcho(indent2);
+//	else
+		if(flag) _printf0_(indent << "          list: " << list << "\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Style::Write(FILE* filout,const char* indent){/*{{{*/
+
+	char  indent2[81];
+
+	fprintf(filout,"%s<Style",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_StyleSelector::Write(filout,indent);
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+
+	strcat(indent2,"  ");
+
+//	if (icon)
+//		icon->Write(filout,indent2);
+//	if (label)
+//		label->Write(filout,indent2);
+	if (line)
+		line->Write(filout,indent2);
+	if (poly)
+		poly->Write(filout,indent2);
+//	if (balloon)
+//		balloon->Write(filout,indent2);
+//	if (list)
+//		list->Write(filout,indent2);
+
+	fprintf(filout,"%s</Style>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Style::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</Style", 7)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_Style::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_Style::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+//		else if (!strncmp(kstri,"<IconStyle",10)) {
+//			icon      =new KML_IconStyle();
+//			icon      ->Read(fid,kstri);
+//		}
+
+//		else if (!strncmp(kstri,"<LabelStyle",11)) {
+//			label     =new KML_LabelStyle();
+//			label     ->Read(fid,kstri);
+//		}
+
+		else if (!strncmp(kstri,"<LineStyle",10)) {
+			line      =new KML_LineStyle();
+			line      ->Read(fid,kstri);
+		}
+
+		else if (!strncmp(kstri,"<PolyStyle",10)) {
+			poly      =new KML_PolyStyle();
+			poly      ->Read(fid,kstri);
+		}
+
+//		else if (!strncmp(kstri,"<BalloonStyle",13)) {
+//			balloon   =new KML_BalloonStyle();
+//			balloon   ->Read(fid,kstri);
+//		}
+
+//		else if (!strncmp(kstri,"<ListStyle",10)) {
+//			list      =new KML_ListStyle();
+//			list      ->Read(fid,kstri);
+//		}
+
+		else if (!strncmp(kstri,"<",1))
+			KML_StyleSelector::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Style.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Style.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Style.h	(revision 21239)
@@ -0,0 +1,44 @@
+/*! \file KML_Style.h 
+ *  \brief: header file for kml_style object
+ */
+
+#ifndef _KML_STYLE_H_
+#define _KML_STYLE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_StyleSelector.h"
+class KML_LineStyle;
+class KML_PolyStyle;
+/*}}}*/
+
+class KML_Style: public KML_StyleSelector {
+
+	public:
+
+		void* icon;
+		void* label;
+		KML_LineStyle* line;
+		KML_PolyStyle* poly;
+		void* balloon;
+		void* list;
+
+		/*KML_Style constructors, destructors {{{*/
+		KML_Style();
+		~KML_Style();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_STYLE_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_StyleSelector.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_StyleSelector.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_StyleSelector.cpp	(revision 21239)
@@ -0,0 +1,79 @@
+/*!\file KML_StyleSelector.cpp
+ * \brief: implementation of the kml_styleselector abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Object.h"
+#include "./KML_StyleSelector.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_StyleSelector::KML_StyleSelector(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+KML_StyleSelector::~KML_StyleSelector(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_StyleSelector::Echo(){/*{{{*/
+
+	KML_Object::Echo();
+
+	return;
+}
+/*}}}*/
+void  KML_StyleSelector::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_StyleSelector::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_StyleSelector::DeepEcho(const char* indent){/*{{{*/
+
+	KML_Object::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_StyleSelector::Write(FILE* filout,const char* indent){/*{{{*/
+
+	KML_Object::Write(filout,indent);
+
+	return;
+}
+/*}}}*/
+void  KML_StyleSelector::Read(FILE* fid,char* kstr){/*{{{*/
+
+/*  process field within opening and closing tags  */
+
+	if      (!strncmp(kstr,"</StyleSelector",15))
+		return;
+	else if (!strncmp(kstr,"</",2))
+	  {_error_("KML_StyleSelector::Read -- Unexpected closing tag " << kstr << ".\n");}
+	else if (strncmp(kstr,"<",1))
+	  {_error_("KML_StyleSelector::Read -- Unexpected field \"" << kstr << "\".\n");}
+
+	else if (!strncmp(kstr,"<",1))
+		KML_Object::Read(fid,kstr);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_StyleSelector.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_StyleSelector.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_StyleSelector.h	(revision 21239)
@@ -0,0 +1,35 @@
+/*! \file KML_StyleSelector.h 
+ *  \brief: header file for kml_styleselector abstract object
+ */
+
+#ifndef _KML_STYLESELECTOR_H_
+#define _KML_STYLESELECTOR_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Object.h"
+/*}}}*/
+
+class KML_StyleSelector: public KML_Object {
+
+	public:
+
+		/*KML_StyleSelector constructors, destructors {{{*/
+		KML_StyleSelector();
+		~KML_StyleSelector();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_STYLESELECTOR_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_SubStyle.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_SubStyle.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_SubStyle.cpp	(revision 21239)
@@ -0,0 +1,79 @@
+/*!\file KML_SubStyle.cpp
+ * \brief: implementation of the kml_substyle abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_SubStyle.h"
+#include "./KML_Object.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_SubStyle::KML_SubStyle(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+KML_SubStyle::~KML_SubStyle(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_SubStyle::Echo(){/*{{{*/
+
+	KML_Object::Echo();
+
+	return;
+}
+/*}}}*/
+void  KML_SubStyle::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_SubStyle::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_SubStyle::DeepEcho(const char* indent){/*{{{*/
+
+	KML_Object::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_SubStyle::Write(FILE* filout,const char* indent){/*{{{*/
+
+	KML_Object::Write(filout,indent);
+
+	return;
+}
+/*}}}*/
+void  KML_SubStyle::Read(FILE* fid,char* kstr){/*{{{*/
+
+/*  process field within opening and closing tags  */
+
+	if      (!strncmp(kstr,"</SubStyle",10))
+		return;
+	else if (!strncmp(kstr,"</",2))
+	  {_error_("KML_SubStyle::Read -- Unexpected closing tag " << kstr << ".\n");}
+	else if (strncmp(kstr,"<",1))
+	  {_error_("KML_SubStyle::Read -- Unexpected field \"" << kstr << "\".\n");}
+
+	else if (!strncmp(kstr,"<",1))
+		KML_Object::Read(fid,kstr);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_SubStyle.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_SubStyle.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_SubStyle.h	(revision 21239)
@@ -0,0 +1,35 @@
+/*! \file KML_SubStyle.h 
+ *  \brief: header file for kml_substyle abstract object
+ */
+
+#ifndef _KML_SUBSTYLE_H_
+#define _KML_SUBSTYLE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Object.h"
+/*}}}*/
+
+class KML_SubStyle: public KML_Object {
+
+	public:
+
+		/*KML_SubStyle constructors, destructors {{{*/
+		KML_SubStyle();
+		~KML_SubStyle();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_SUBSTYLE_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Unknown.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Unknown.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Unknown.cpp	(revision 21239)
@@ -0,0 +1,185 @@
+/*!\file KML_Unknown.cpp
+ * \brief: implementation of the kml_unknown object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KMLFileReadUtils.h"
+#include "./KML_Unknown.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Unknown::KML_Unknown(){/*{{{*/
+
+	name      =NULL;
+	value     =NULL;
+
+}
+/*}}}*/
+KML_Unknown::~KML_Unknown(){/*{{{*/
+
+	if (name      ) xDelete<char>(name);
+	if (value     ) xDelete<char>(value);
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Unknown::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_Unknown " << name << ":\n");
+	KML_Object::Echo();
+
+	if(value){
+		if(flag) _printf0_("         value: \"" << value << "\"\n");
+	}
+	else{
+		if(flag) _printf0_("         value: [none]\n");
+	}
+
+	return;
+}
+/*}}}*/
+void  KML_Unknown::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Unknown::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Unknown::DeepEcho(const char* indent){/*{{{*/
+
+	char*        valuei;
+	char*        vtoken;
+	char         nl[]={'\n','\0'};
+	bool         flag=true;
+
+	if(flag) _printf0_(indent << "KML_Unknown " << name << ":\n");
+	KML_Object::DeepEcho(indent);
+
+	if (value     ) {
+		valuei=xNew<char>(strlen(value)+1);
+		memcpy(valuei,value,(strlen(value)+1)*sizeof(char)); 
+
+		vtoken=strtok(valuei,nl);
+		if(flag) _printf0_(indent << "         value: \"" << vtoken);
+
+		while((vtoken=strtok(NULL,nl)))
+			if(flag) _printf0_("\n" << indent << "                 " << vtoken);
+		if(flag) _printf0_("\"\n");
+
+		xDelete<char>(valuei);
+	}
+    else
+        if(flag) _printf0_(indent << "         value: [none]\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Unknown::Write(FILE* filout,const char* indent){/*{{{*/
+
+	char*        valuei;
+	char*        vtoken;
+	char         nl[]={'\n','\0'};
+
+	fprintf(filout,"%s<%s",indent,name);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	if (value     ) {
+		valuei=xNew<char>(strlen(value)+1);
+		memcpy(valuei,value,(strlen(value)+1)*sizeof(char)); 
+
+		vtoken=strtok(valuei,nl);
+		fprintf(filout,"%s  %s\n",indent,vtoken);
+
+		while((vtoken=strtok(NULL,nl)))
+			fprintf(filout,"%s  %s\n",indent,vtoken);
+
+		xDelete<char>(valuei);
+	}
+
+	KML_Object::Write(filout,indent);
+
+	fprintf(filout,"%s</%s>\n",indent,name);
+
+	return;
+}
+/*}}}*/
+void  KML_Unknown::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	char*        value2=NULL;
+	int          ncom=0;
+	char**       pcom=NULL;
+	char         nl[]={'\n','\0'};
+
+/*  get object name  */
+
+	name=KMLFileTagName(NULL,
+						kstr);
+//	_printf0_("KML_Unknown::Read -- opening name=" << name << ".\n");
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+//		_printf0_("KML_Unknown::Read -- kstri=" << kstri << ".\n");
+		if      (!strncmp(&kstri[0],"</", 2) &&
+				 !strncmp(&kstri[2],name,strlen(name))) {
+//			_printf0_("KML_Unknown::Read -- closing name=" << name << ".\n");
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_Unknown::Read -- Unexpected closing tag " << kstri << ".\n");}
+
+		else if (strncmp(kstri,"<",1)) {
+			if (value) {
+				value2=xNew<char>(strlen(value)+1+strlen(kstri)+1);
+				memcpy(value2,value,(strlen(value)+1)*sizeof(char));
+				xDelete<char>(value);
+				value=value2;
+				value2=NULL;
+//				value=(char *) xrealloc(value,(strlen(value)+1+strlen(kstri)+1)*sizeof(char));
+				strcat(value,nl);
+				strcat(value,kstri);
+			}
+			else {
+				value=xNew<char>(strlen(kstri)+1);
+				memcpy(value,kstri,(strlen(kstri)+1)*sizeof(char));
+			}
+		}
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Object::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Unknown.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Unknown.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/KML_Unknown.h	(revision 21239)
@@ -0,0 +1,38 @@
+/*! \file KML_Unknown.h 
+ *  \brief: header file for kml_unknown object
+ */
+
+#ifndef _KML_UNKNOWN_H_
+#define _KML_UNKNOWN_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Object.h"
+/*}}}*/
+
+class KML_Unknown: public KML_Object {
+
+	public:
+
+		char* name;
+		char* value;
+
+		/*KML_Unknown constructors, destructors {{{*/
+		KML_Unknown();
+		~KML_Unknown();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_UNKNOWN_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/kmlobjects.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/kmlobjects.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/kml/kmlobjects.h	(revision 21239)
@@ -0,0 +1,37 @@
+/* \file kmlobjects.h
+ * \brief: prototype header for all kml related objects.
+ */
+
+#ifndef KML_OBJECTS_H_
+#define KML_OBJECTS_H_
+
+/*KML parsing objects: */
+#include "./KML_Attribute.h"
+#include "./KML_Comment.h"
+#include "./KML_ColorStyle.h"
+#include "./KML_Container.h"
+#include "./KML_Document.h"
+#include "./KML_Feature.h"
+#include "./KML_File.h"
+#include "./KML_Folder.h"
+#include "./KML_Geometry.h"
+#include "./KML_GroundOverlay.h"
+#include "./KML_Icon.h"
+#include "./KML_LatLonBox.h"
+#include "./KML_LinearRing.h"
+#include "./KML_LineString.h"
+#include "./KML_LineStyle.h"
+#include "./KML_MultiGeometry.h"
+#include "./KML_Object.h"
+#include "./KML_Overlay.h"
+#include "./KML_Point.h"
+#include "./KML_Placemark.h"
+#include "./KML_Polygon.h"
+#include "./KML_PolyStyle.h"
+#include "./KML_Style.h"
+#include "./KML_StyleSelector.h"
+#include "./KML_SubStyle.h"
+#include "./KML_Unknown.h"
+#include "./KMLFileReadUtils.h"
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/EnvironmentFinalize.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/EnvironmentFinalize.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/EnvironmentFinalize.cpp	(revision 21239)
@@ -0,0 +1,25 @@
+/*!\file:  EnvironmentFinalize.cpp
+ * \brief: finalize Petsc, MPI, you name it
+ */ 
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "../toolkits/toolkits.h"
+#include "../shared/shared.h"
+
+void EnvironmentFinalize(void){
+
+	int my_rank;
+
+	/*Make sure we are all here*/
+	ISSM_MPI_Barrier(ISSM_MPI_COMM_WORLD);
+
+	/*Print closing statement*/
+	ISSM_MPI_Comm_rank(ISSM_MPI_COMM_WORLD,&my_rank);
+	if(!my_rank) printf("closing MPI\n");
+
+	/*Finalize: */
+	ISSM_MPI_Finalize();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/EnvironmentInit.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/EnvironmentInit.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/EnvironmentInit.cpp	(revision 21239)
@@ -0,0 +1,35 @@
+/*!\file:  EnvironmentInit.cpp
+ * \brief: initialize Petsc, MPI, you name it
+ */ 
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include <stdio.h>
+#include "../toolkits/toolkits.h"
+
+ISSM_MPI_Comm EnvironmentInit(int argc,char** argv){
+
+	/*Output*/
+	ISSM_MPI_Comm comm = 0;
+
+	/*Initialize MPI environment: */
+	#if defined(_HAVE_MPI_)
+	ISSM_MPI_Init(&argc,&argv);
+	comm = ISSM_MPI_COMM_WORLD;
+	#else
+	comm = 1; //bogus number for comm, which does not exist anyway.
+	#endif
+
+	/*Print Banner*/
+	int my_rank = 0;
+	ISSM_MPI_Comm_rank(comm,&my_rank);
+	if(!my_rank) printf("\n");
+	if(!my_rank) printf("%s version  %s\n",PACKAGE_NAME,PACKAGE_VERSION);
+	if(!my_rank) printf("(website: %s contact: %s)\n",PACKAGE_URL,PACKAGE_BUGREPORT);
+	if(!my_rank) printf("\n");
+
+	/*Return communicator*/
+	return comm;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/esmfbinders.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/esmfbinders.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/esmfbinders.cpp	(revision 21239)
@@ -0,0 +1,157 @@
+/*!\file:  esmfbinder.cpp
+ * \brief: ESMF binders for ISSM. Binders developed initially for the GEOS-5 framework.
+ */ 
+
+
+#include "./issm.h"
+
+/*GCM specific declarations:*/
+const int GCMForcingNumTerms = 1;
+const int GCMForcingTerms[GCMForcingNumTerms]= { SMBgcmEnum}; 
+
+const int ISSMOutputNumTerms = 1;
+const int ISSMOutputTerms[ISSMOutputNumTerms]= { SurfaceEnum };
+
+extern "C" {
+
+	FemModel *femmodel;
+
+	void InitializeISSM(int argc, char** argv, int** pelementsonlocalrank, int* pnumberofelements, ISSM_MPI_Comm comm_init){ /*{{{*/
+
+		int numberofelements;
+		int* elementsonlocalrank=NULL;
+
+		/*Initialize femmodel from arguments provided command line: */
+		femmodel = new FemModel(argc,argv,comm_init);
+
+		/*Figure out the partition for elements, and return: */
+		numberofelements=femmodel->elements->NumberOfElements();
+
+		elementsonlocalrank=xNewZeroInit<int>(numberofelements); 
+		for (int i=0;i<femmodel->elements->Size();i++){
+			Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i));
+			elementsonlocalrank[element->Sid()]=1;
+		}
+
+		/*Some specific code here for the binding: */
+		femmodel->parameters->SetParam(SMBgcmEnum,SmbEnum); //bypass SMB model, will be provided by GCM!
+	
+		/*Restart file: */
+		femmodel->Restart();
+
+		/*Assign output pointers: */
+		*pnumberofelements=numberofelements;
+		*pelementsonlocalrank=elementsonlocalrank;
+
+	} /*}}}*/
+	void RunISSM(IssmDouble dt, IssmDouble* gcmforcings, IssmDouble* issmoutputs){ /*{{{*/
+
+		int numberofelements;
+		IssmDouble yts;
+		IssmDouble rho_ice;
+		IssmDouble area;
+		IssmDouble start_time,final_time;
+
+		/*Figure out number of elements: */
+		numberofelements=femmodel->elements->Size();
+
+		/*Fetch some necessary constants: */
+		femmodel->parameters->FindParam(&yts,ConstantsYtsEnum);
+
+		/*Setup gcm forcings as element-wise input: {{{ */
+		for (int f=0;f<GCMForcingNumTerms;f++){
+
+			int forcing_type=GCMForcingTerms[f];
+
+			for (int i=0;i<femmodel->elements->Size();i++){
+				Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i));
+
+				switch(forcing_type){
+					case SMBgcmEnum:
+						/*{{{*/
+						{
+
+						/*Recover rho_ice: */
+						rho_ice=element->matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+
+						/*Recover area of element: */
+						area=element->SurfaceArea();
+
+						/*Recover smb forcing from the gcm forcings: */
+						IssmDouble smbforcing=*(gcmforcings+f*numberofelements+i); 
+
+						/*Convert to SI. The smbforcing from GEOS-5 in kg/s, and we transform it into m/s: */
+						smbforcing=smbforcing/(rho_ice*area);
+
+						/*Add into the element as new forcing :*/
+						element->inputs->AddInput(new DoubleInput(SmbMassBalanceEnum,smbforcing));
+
+						}
+						/*}}}*/
+						break; 
+					default: 
+						{ _error_("Unknown forcing type " << forcing_type << "\n"); }
+						break;
+				}
+			}
+		}
+
+		/*}}}*/
+
+		/*Retrieve ISSM outputs and pass them back to the Gcm : {{{*/
+		for (int f=0;f<ISSMOutputNumTerms;f++){
+
+			int output_type=ISSMOutputTerms[f];
+
+			for (int i=0;i<femmodel->elements->Size();i++){
+				Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i));
+
+				switch(output_type){
+					case SurfaceEnum:
+						/*{{{*/
+						{
+
+						IssmDouble surface;
+						
+						/*Recover surface from the ISSM element: */
+						Input* surface_input = element->GetInput(SurfaceEnum); _assert_(surface_input);
+						surface_input->GetInputAverage(&surface);
+			
+						*(issmoutputs+f*numberofelements+i) = surface;
+
+						}
+						/*}}}*/
+						break; 
+					default: 
+						{ _error_("Unknown output type " << output_type << "\n"); }
+						break;
+				}
+			}
+		}
+
+		/*}}}*/
+
+		/*Before running, setup the time interval: */
+		femmodel->parameters->FindParam(&start_time,TimeEnum);
+		final_time=start_time+dt;
+		femmodel->parameters->SetParam(final_time,TimesteppingFinalTimeEnum); //we are bypassing ISSM's initial final time!
+
+		/*Now, run: */
+		femmodel->Solve();
+
+		/*For the next time around, save the final time as start time */
+		femmodel->parameters->SetParam(final_time,TimeEnum);
+	} /*}}}*/
+	void FinalizeISSM(){ /*{{{*/
+
+		/*Output results: */
+		OutputResultsx(femmodel);
+			
+		/*Check point: */
+		femmodel->CheckPoint();
+
+		/*Wrap up: */
+		delete femmodel; femmodel=NULL;
+	} /*}}}*/
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/globals.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/globals.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/globals.h	(revision 21239)
@@ -0,0 +1,21 @@
+/*!\file global.h:
+ * \brief: these are the global variables always needed. 
+ */
+
+#ifndef _GLOBALS_H_
+#define _GLOBALS_H_
+#include "../shared/io/Comm/IssmComm.h"
+#include "../toolkits/ToolkitOptions.h"
+
+/*Communicators: */
+#ifndef _DO_NOT_LOAD_GLOBALS_ 
+ISSM_MPI_Comm IssmComm::comm;
+bool IssmComm::parallel;
+
+/*String that is used to characterize our toolkits, ends up in Petsc Options
+ * database if we use Petsc. Can also be used to characterize the ISSM toolkit,
+ * often used when Petsc is not allowed*/
+char* ToolkitOptions::toolkitoptions;
+#endif
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/issm.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/issm.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/issm.cpp	(revision 21239)
@@ -0,0 +1,38 @@
+/*!\file:  issm.cpp
+ * \brief: ISSM main program
+ */ 
+
+#include "./issm.h"
+
+int main(int argc,char **argv){
+
+	/*Initialize exception trapping: */
+	ExceptionTrapBegin();
+
+	/*Initialize environment (MPI, PETSC, MUMPS, etc ...)*/
+	ISSM_MPI_Comm comm_init=EnvironmentInit(argc,argv);
+
+	/*Initialize femmodel from arguments provided command line: */
+	FemModel *femmodel = new FemModel(argc,argv,comm_init);
+
+	/*Solve: */
+	femmodel->Solve();
+
+	/*Output results: */
+	OutputResultsx(femmodel);
+
+	/*Wrap up: */
+	femmodel->CleanUp();
+
+	/*Delete Model: */
+	delete femmodel;
+
+	/*Finalize environment:*/
+	EnvironmentFinalize();
+
+	/*Finalize exception trapping: */
+	ExceptionTrapEnd();
+
+	/*Return unix success: */
+	return 0; 
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/issm.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/issm.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/issm.h	(revision 21239)
@@ -0,0 +1,26 @@
+/*!\file: issm.h
+ * \brief prototype wrapper for issm.h
+ */ 
+
+#ifndef _ISSM_H_
+#define _ISSM_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./globals.h" //only include this header file once!
+#include "../shared/shared.h"
+#include "../classes/classes.h"
+#include "../toolkits/toolkits.h"
+#include "../cores/cores.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../modules/modules.h"
+
+/*Environment*/
+ISSM_MPI_Comm EnvironmentInit(int argc,char** argv);
+void EnvironmentFinalize(void);
+
+#endif //ifndef _ISSM_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/issm.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/issm.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/issm.js	(revision 21239)
@@ -0,0 +1,20 @@
+function issm(binaryin){
+/*issm 
+	   usage: var output = issm(input);
+	      where: input is a typed array buffer created by marshall and output 
+		  is a binary buffer to be read by loadresultsfromcluster.
+*/
+
+	//input
+	var dbinary=new Float64Array(binaryin); var nb=dbinary.length * dbinary.BYTES_PER_ELEMENT;
+	var dbinaryPtr= Module._malloc(nb); var binHeap = new Uint8Array(Module.HEAPU8.buffer,dbinaryPtr,nb);
+	binHeap.set(new Uint8Array(dbinary.buffer)); var binary=binHeap.byteOffset;
+
+	//Declare TriMesh module: 
+	issm= Module.cwrap('main','number',['number','number']);
+	
+	//Call issm:
+	var output = issm(binary, 'null');
+	
+	return output;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/issm_dakota.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/issm_dakota.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/issm_dakota.cpp	(revision 21239)
@@ -0,0 +1,92 @@
+/*!\file:  issm_dakota.cpp
+ * \brief: ISSM DAKOTA main program
+ */ 
+
+#include "./issm.h"
+
+/*Dakota includes: */
+#if defined(_HAVE_DAKOTA_) && _DAKOTA_MAJOR_ >= 6
+#include "ParallelLibrary.hpp"
+#include "ProblemDescDB.hpp"
+#include "LibraryEnvironment.hpp"
+#include "DakotaModel.hpp"
+#include "DakotaInterface.hpp"
+#endif
+
+int main(int argc,char **argv){
+
+
+	#if defined(_HAVE_DAKOTA_) && _DAKOTA_MAJOR_ >= 6
+
+	bool parallel=true;
+	char* dakota_input_file=NULL;
+	char* dakota_output_file = NULL;
+	char* dakota_error_file = NULL;
+
+	/*Define MPI_DEBUG in dakota_global_defs.cpp to cause a hold here*/
+	Dakota::mpi_debug_hold();
+
+	/*Initialize MPI: */
+	ISSM_MPI_Init(&argc, &argv); // initialize MPI
+	
+	/*Recover file name for dakota input file:*/
+	dakota_input_file=xNew<char>((strlen(argv[2])+strlen(argv[3])+strlen(".qmu.in")+2));
+	sprintf(dakota_input_file,"%s/%s%s",argv[2],argv[3],".qmu.in");
+	
+	dakota_output_file=xNew<char>((strlen(argv[2])+strlen(argv[3])+strlen(".qmu.out")+2));
+	sprintf(dakota_output_file,"%s/%s%s",argv[2],argv[3],".qmu.out");
+
+	dakota_error_file=xNew<char>((strlen(argv[2])+strlen(argv[3])+strlen(".qmu.err")+2));
+	sprintf(dakota_error_file,"%s/%s%s",argv[2],argv[3],".qmu.err");
+
+	/* Parse input and construct Dakota LibraryEnvironment, performing input data checks*/
+	Dakota::ProgramOptions opts;
+	opts.input_file(dakota_input_file);
+	opts.output_file(dakota_output_file);
+	opts.error_file(dakota_error_file);
+
+	/* Defaults constructs the MPIManager, which assumes COMM_WORLD*/
+	Dakota::LibraryEnvironment env(opts);
+
+	/* get the list of all models matching the specified model, interface, driver:*/
+	Dakota::ModelList filt_models = env.filtered_model_list("single", "direct", "matlab");
+	if (filt_models.empty()) {
+		Cerr << "Error: no parallel interface plugin performed.  Check compatibility "
+			<< "between parallel\n       configuration and selected analysis_driver."
+			<< std::endl;
+		Dakota::abort_handler(-1);
+	}
+	
+	Dakota::ProblemDescDB& problem_db = env.problem_description_db();
+	Dakota::ModelLIter ml_iter;
+	size_t model_index = problem_db.get_db_model_node(); // for restoration
+	for (ml_iter = filt_models.begin(); ml_iter != filt_models.end(); ++ml_iter) {
+		// set DB nodes to input specification for this Model
+		problem_db.set_db_model_nodes(ml_iter->model_id());
+
+		Dakota::Interface& model_interface = ml_iter->derived_interface();
+
+		// Parallel case: plug in derived Interface object with an analysisComm.
+		// Note: retrieval and passing of analysisComm is necessary only if
+		// parallel operations will be performed in the derived constructor.
+
+		// retrieve the currently active analysisComm from the Model.  In the most
+		// general case, need an array of Comms to cover all Model configurations.
+		const MPI_Comm& analysis_comm = ml_iter->analysis_comm();
+
+		// don't increment ref count since no other envelope shares this letter
+		model_interface.assign_rep(new
+				SIM::IssmParallelDirectApplicInterface(problem_db, analysis_comm, argc, argv), false);
+	}
+	problem_db.set_db_model_nodes(model_index);            // restore
+
+	/* Execute the environment:*/
+	env.execute();
+
+	/*Return unix success: */
+	return 0; 
+	#else 
+	Cout <<  "ISSM Dakota  executable was compiled without support of Dakota! Will just return now!" << "\n";
+	return 1;
+	#endif
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/issm_slr.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/issm_slr.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/issm_slr.cpp	(revision 21239)
@@ -0,0 +1,134 @@
+/*!\file:  issm_slr.cpp
+ * \brief: ISSM SLR main program. 
+ */ 
+
+#include "./issm.h"
+
+int main(int argc,char **argv){
+
+	/*diverse:*/
+	int    nummodels;
+	int*   commsizes=NULL;
+	int*   rankzeros=NULL;
+	char** dirnames=NULL;
+	char** modelnames=NULL;
+	int    modelid; 
+	int    earthid; 
+	int    my_rank;
+	int    count=0;
+	ISSM_MPI_Comm worldcomm;
+	ISSM_MPI_Comm modelcomm;
+	ISSM_MPI_Comm toearthcomm;
+	ISSM_MPI_Comm* fromicecomms=NULL;
+
+	/*Initialize exception trapping: */
+	ExceptionTrapBegin();
+
+	/*Initialize environment (MPI, PETSC, MUMPS, etc ...)*/
+	worldcomm=EnvironmentInit(argc,argv);
+	
+	/*What is my rank?:*/
+	ISSM_MPI_Comm_rank(worldcomm,&my_rank);
+
+	/*How many models are we going to run (along with description and number of dedicated cores):{{{*/
+	nummodels=(int) strtol(argv[4], (char **)NULL, 10);
+	commsizes=xNew<int>(nummodels);
+	dirnames=xNew<char*>(nummodels);
+	modelnames=xNew<char*>(nummodels);
+	rankzeros=xNew<int>(nummodels);
+	for(int i=0;i<nummodels;i++){
+		char* string=NULL;
+		
+		string=xNew<char>(strlen(argv[5+3*i])+1);
+		xMemCpy<char>(string,argv[5+3*i],strlen(argv[5+3*i])+1);
+		dirnames[i]=string;
+		
+		string=xNew<char>(strlen(argv[5+3*i+1])+1);
+		xMemCpy<char>(string,argv[5+3*i+1],strlen(argv[5+3*i+1])+1);
+		modelnames[i]=string;
+
+		commsizes[i]=(int) strtol(argv[5+3*i+2], (char **)NULL, 10);
+	}
+
+	/*Figure out which model each cpu will belong to: */
+	count=0;
+	for(int i=0;i<nummodels;i++){
+		if(my_rank>=count && my_rank<(count+commsizes[i])){
+			modelid=i;
+			break;
+		}
+		count+=commsizes[i];
+	} 
+	/*Buil array of who is rank 0 of their own group:*/
+	count=0;
+	for(int i=0;i<nummodels;i++){
+		rankzeros[i]=count;
+		count+=commsizes[i];
+	}
+	/*}}}*/
+
+	/*Split world into sub-communicators for each and every model:*/
+	ISSM_MPI_Comm_split(worldcomm,modelid, my_rank, &modelcomm);
+
+	/*Build inter communicators:*/
+	earthid=nummodels-1; //last model to be provided in the argument list if the earth model.
+	if(modelid==earthid){
+		fromicecomms=xNew<ISSM_MPI_Comm>(nummodels-1);
+		for(int i=0;i<earthid;i++){
+			ISSM_MPI_Intercomm_create( modelcomm, 0, worldcomm, rankzeros[i], i, fromicecomms+i); //communicate from local erth comm 9rank 0) to ice comm (rank 0) using modelid tag.
+		}
+	}
+	else{
+		ISSM_MPI_Intercomm_create( modelcomm, 0, worldcomm, rankzeros[earthid], modelid, &toearthcomm); //communicate from local ice comm (rank 0) to earth comm (rank 0) using modelid tag.
+	}
+
+	/*Supply specific argc and argv for each sub-communicator (corresponding to each  model specificatiions):{{{*/
+	char** arguments=xNew<char*>(4);
+	arguments[0]=xNew<char>(strlen(argv[0])+1); xMemCpy<char>(arguments[0],argv[0],strlen(argv[0])+1); //executable name
+	arguments[1]=xNew<char>(strlen(argv[1])+1); xMemCpy<char>(arguments[1],argv[1],strlen(argv[1])+1); //solution name
+	arguments[2]=xNew<char>(strlen(argv[5+3*modelid])+1); xMemCpy<char>(arguments[2],argv[5+3*modelid],strlen(argv[5+3*modelid])+1); //directory name
+	arguments[3]=xNew<char>(strlen(argv[5+3*modelid+1])+1); xMemCpy<char>(arguments[3],argv[5+3*modelid+1],strlen(argv[5+3*modelid+1])+1); //model name
+	/*}}}*/
+
+	/*Initialize femmodel from arguments provided command line: */
+	FemModel *femmodel = new FemModel(4,arguments,modelcomm);
+	
+	/*Now that the models are initialized, keep communicator information in the parameters datasets of each model: */
+	femmodel->parameters->AddObject(new GenericParam<ISSM_MPI_Comm>(worldcomm,WorldCommEnum));
+	femmodel->parameters->AddObject(new IntParam(NumModelsEnum,nummodels));
+	femmodel->parameters->AddObject(new IntParam(ModelIdEnum,modelid));
+	femmodel->parameters->AddObject(new IntParam(EarthIdEnum,earthid));
+	if(modelid==earthid) femmodel->parameters->AddObject(new GenericParam<ISSM_MPI_Comm*>(fromicecomms,IcecapToEarthCommEnum));
+	else femmodel->parameters->AddObject(new GenericParam<ISSM_MPI_Comm>(toearthcomm,IcecapToEarthCommEnum));
+
+	/*Solve: */
+	femmodel->Solve();
+
+	/*Output results: */
+	OutputResultsx(femmodel);
+
+	/*Wrap up: */
+	femmodel->CleanUp();
+
+	/*Delete Model: */
+	delete femmodel;
+
+	/*Finalize environment:*/
+	EnvironmentFinalize();
+
+	/*Finalize exception trapping: */
+	ExceptionTrapEnd();
+
+	/*Free ressources:*/
+	xDelete<int>(commsizes);
+	for(int i=0;i<nummodels;i++){
+		char* string=NULL;
+		string=dirnames[i]; xDelete<char>(string);
+		string=modelnames[i]; xDelete<char>(string);
+	}
+	xDelete<char*>(dirnames);
+	xDelete<char*>(modelnames);
+
+	/*Return unix success: */
+	return 0; 
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/kriging.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/kriging.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/main/kriging.cpp	(revision 21239)
@@ -0,0 +1,166 @@
+/*!\file:  kriging.cpp
+ * \brief: kriging main parallel program
+ */ 
+
+#include "./issm.h"
+
+/*Local prototypes*/
+void ProcessArguments2(char** pbinfilename,char** poutbinfilename,char** plockfilename,char** prootpath,int argc,char **argv);
+void ProcessInputfile(IssmDouble **px,IssmDouble **py,IssmDouble **pdata,int *pnobs,IssmDouble **px_interp,IssmDouble **py_interp,int *pninterp,Options **poptions,FILE* fid);
+
+int main(int argc,char **argv){
+
+	/*I/O: */
+	FILE *output_fid = NULL;
+	FILE *input_fid  = NULL;
+
+	/*File names*/
+	char *lockfilename   = NULL;
+	char *binfilename    = NULL;
+	char *outbinfilename = NULL;
+	char *rootpath       = NULL;
+
+	/*Input*/
+	int         ninterp,nobs;
+	IssmDouble *x        = NULL;
+	IssmDouble *y        = NULL;
+	IssmDouble *data     = NULL;
+	IssmDouble *x_interp = NULL;
+	IssmDouble *y_interp = NULL;
+	Options    *options  = NULL;
+
+	/*Output*/
+	IssmDouble *predictions = NULL;
+	IssmDouble *error       = NULL;
+
+	/*Initialize exception trapping: */
+	ExceptionTrapBegin();
+
+	/*Initialize environment (MPI, PETSC, MUMPS, etc ...)*/
+	ISSM_MPI_Comm comm=EnvironmentInit(argc,argv);
+	IssmComm::SetComm(comm);
+
+	ProcessArguments2(&binfilename,&outbinfilename,&lockfilename,&rootpath,argc,argv);
+
+	/*Process input files*/
+	input_fid=pfopen(binfilename,"rb");
+	ProcessInputfile(&x,&y,&data,&nobs,&x_interp,&y_interp,&ninterp,&options,input_fid);
+	pfclose(input_fid,binfilename);
+
+	_printf0_("call computational core:\n");
+	pKrigingx(&predictions,&error,x,y,data,nobs,x_interp,y_interp,ninterp,options);
+
+	_printf0_("write results to disk:\n");
+	Results *results = new Results();
+	if(IssmComm::GetRank()==0){
+		output_fid=pfopen0(outbinfilename,"wb");
+		results->AddObject(new GenericExternalResult<double*>(results->Size()+1,"predictions",predictions,ninterp,1,1,0));
+		results->AddObject(new GenericExternalResult<double*>(results->Size()+1,"error",error,ninterp,1,1,0));
+		for(int i=0;i<results->Size();i++){
+			ExternalResult* result=xDynamicCast<ExternalResult*>(results->GetObjectByOffset(i));
+			result->WriteData(output_fid,1);
+		}
+		pfclose(output_fid,outbinfilename);
+	}
+
+	/*Close output and toolkits options file and write lock file if requested*/
+	_printf0_("write lock file:\n");
+	WriteLockFile(lockfilename);
+
+	/*Free ressources */
+	xDelete<char>(lockfilename);
+	xDelete<char>(binfilename);
+	xDelete<char>(outbinfilename);
+	xDelete<char>(rootpath);
+	xDelete<IssmDouble>(x);
+	xDelete<IssmDouble>(y);
+	xDelete<IssmDouble>(data);
+	xDelete<IssmDouble>(x_interp);
+	xDelete<IssmDouble>(y_interp);
+	xDelete<IssmDouble>(predictions);
+	xDelete<IssmDouble>(error);
+	delete options;
+	delete results;
+
+	/*Finalize environment:*/
+	EnvironmentFinalize();
+
+	/*Finalize exception trapping: */
+	ExceptionTrapEnd();
+
+	return 0; //unix success return;
+}
+
+void ProcessArguments2(char** pbinfilename,char** poutbinfilename,char** plockfilename,char** prootpath,int argc,char **argv){
+	char *modelname      = NULL;
+	char *binfilename    = NULL;
+	char *outbinfilename = NULL;
+	char *lockfilename   = NULL;
+	char *rootpatharg    = NULL;
+	char *rootpath       = NULL;
+
+	if(argc<1)_error_("Usage error: no execution path provided");
+	if(argc<2)_error_("Usage error: missing model name");
+
+	rootpatharg=argv[1];
+	if(strcmp(strstr(rootpatharg,"/"),"/")!=0){ 
+		rootpath       = xNew<char>(strlen(rootpatharg)+2); sprintf(rootpath,"%s/",rootpatharg);
+	}  
+	else{
+		rootpath       = xNew<char>(strlen(rootpatharg)+1); sprintf(rootpath,"%s",rootpatharg);
+	} 
+
+	modelname=argv[2];
+	if(strstr(modelname,rootpath)==NULL){
+		binfilename    = xNew<char>(strlen(rootpath)+strlen(modelname)+strlen(".bin")   +1); sprintf(binfilename,   "%s%s%s",rootpath,modelname,".bin");
+		outbinfilename = xNew<char>(strlen(rootpath)+strlen(modelname)+strlen(".outbin")+1); sprintf(outbinfilename,"%s%s%s",rootpath,modelname,".outbin");
+		lockfilename   = xNew<char>(strlen(rootpath)+strlen(modelname)+strlen(".lock")  +1); sprintf(lockfilename,  "%s%s%s",rootpath,modelname,".lock");
+	}
+	else{
+		binfilename    = xNew<char>(strlen(modelname)+strlen(".bin")   +1); sprintf(binfilename,   "%s%s",modelname,".bin");
+		outbinfilename = xNew<char>(strlen(modelname)+strlen(".outbin")+1); sprintf(outbinfilename,"%s%s",modelname,".outbin");
+		lockfilename   = xNew<char>(strlen(modelname)+strlen(".lock")  +1); sprintf(lockfilename,  "%s%s",modelname,".lock");
+	}
+
+	/*Clean up and assign output pointer*/
+	*pbinfilename=binfilename;
+	*poutbinfilename=outbinfilename;
+	*plockfilename=lockfilename;
+	*prootpath=rootpath;
+}
+
+void ProcessInputfile(IssmDouble **px,IssmDouble **py,IssmDouble **pdata,int *pnobs,IssmDouble **px_interp,IssmDouble **py_interp,int *pninterp,Options **poptions,FILE* fid){
+
+	int         ninterp    ,nobs;
+	IssmDouble *x        = NULL;
+	IssmDouble *y        = NULL;
+	IssmDouble *data     = NULL;
+	IssmDouble *x_interp = NULL;
+	IssmDouble *y_interp = NULL;
+	Options    *options  = NULL;
+
+	int      M,N;
+	IoModel* iomodel = new IoModel();
+	iomodel->fid=fid;
+	iomodel->CheckFile();
+	iomodel->FetchData(&x,&M,&N,"md.x");        nobs=M*N;
+	iomodel->FetchData(&y,&M,&N,"md.y");        _assert_(M*N==nobs);
+	iomodel->FetchData(&data,&M,&N,"md.data");     _assert_(M*N==nobs);
+	iomodel->FetchData(&x_interp,&M,&N,"md.x_interp"); ninterp=M*N;
+	iomodel->FetchData(&y_interp,&M,&N,"md.y_interp"); _assert_(M*N==ninterp);
+
+	/*Read options*/
+	options = new Options();
+	iomodel->FetchData(options,"md.y_interp");
+
+	/*Assign output pointer*/
+	*px        = x;
+	*py        = y;
+	*pdata     = data;
+	*pnobs     = nobs;
+	*px_interp = x_interp;
+	*py_interp = y_interp;
+	*pninterp  = ninterp;
+	*poptions  = options;
+	delete iomodel;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp	(revision 21239)
@@ -0,0 +1,282 @@
+/*!\file AllocateSystemMatricesx
+ * \brief retrieve vector from inputs in elements
+ */
+
+#include "./AllocateSystemMatricesx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void AllocateSystemMatricesx(Matrix<IssmDouble>** pKff,Matrix<IssmDouble>** pKfs,Vector<IssmDouble>** pdf,Vector<IssmDouble>** ppf,FemModel* femmodel){
+
+	/*Intermediary*/
+	int  fsize,ssize,flocalsize,slocalsize;
+	int  connectivity, numberofdofspernode;
+	int  configuration_type;
+	int  m,n,M,N;
+	int *d_nnz = NULL;
+	int *o_nnz = NULL;
+
+	/*output*/
+	Matrix<IssmDouble> *Kff  = NULL;
+	Matrix<IssmDouble> *Kfs  = NULL;
+	Vector<IssmDouble> *pf   = NULL;
+	Vector<IssmDouble> *df   = NULL;
+
+	bool oldalloc=false;
+	char* toolkittype=NULL;
+
+	/*retrieve parameters: */
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	femmodel->parameters->FindParam(&connectivity,MeshAverageVertexConnectivityEnum);
+
+	/*retrieve node info*/
+	fsize      = femmodel->nodes->NumberOfDofs(configuration_type,FsetEnum);
+	ssize      = femmodel->nodes->NumberOfDofs(configuration_type,SsetEnum);
+	flocalsize = femmodel->nodes->NumberOfDofsLocal(configuration_type,FsetEnum);
+	slocalsize = femmodel->nodes->NumberOfDofsLocal(configuration_type,SsetEnum);
+
+	numberofdofspernode=femmodel->nodes->MaxNumDofs(configuration_type,GsetEnum);
+
+	/*if our matrices are coming from issm, we don't do dynamic allocation like Petsc 
+	 * does, and this routine is essentially useless. Force standard alloc in this case: */
+	toolkittype=ToolkitOptions::GetToolkitType();
+
+	if(oldalloc){
+		if(pKff) Kff=new Matrix<IssmDouble>(fsize,fsize,connectivity,numberofdofspernode);
+		if(pKfs) Kfs=new Matrix<IssmDouble>(fsize,ssize,connectivity,numberofdofspernode);
+		if(pdf)  df =new Vector<IssmDouble>(fsize);
+		if(ppf)  pf =new Vector<IssmDouble>(fsize);
+	}
+	else{
+		if(pKff){
+			m=flocalsize; n=flocalsize; /*local  sizes*/
+			M=fsize;      N=fsize;      /*global sizes*/
+			if(strcmp(toolkittype,"issm")==0){
+				Kff=new Matrix<IssmDouble>(m,n,M,N,NULL,NULL);
+			}
+			else{
+				MatrixNonzeros(&d_nnz,&o_nnz,femmodel,FsetEnum,FsetEnum);
+				Kff=new Matrix<IssmDouble>(m,n,M,N,d_nnz,o_nnz);
+				xDelete<int>(d_nnz);
+				xDelete<int>(o_nnz);
+			}
+		}
+		if(pKfs){
+			m=flocalsize; n=slocalsize; /*local  sizes*/
+			M=fsize;      N=ssize;      /*global sizes*/
+			if(strcmp(toolkittype,"issm")==0){
+				Kfs=new Matrix<IssmDouble>(m,n,M,N,NULL,NULL);
+			}
+			else{
+				MatrixNonzeros(&d_nnz,&o_nnz,femmodel,FsetEnum,SsetEnum);
+				Kfs=new Matrix<IssmDouble>(m,n,M,N,d_nnz,o_nnz);
+				xDelete<int>(d_nnz);
+				xDelete<int>(o_nnz);
+			}
+		}
+		if(pdf) df =new Vector<IssmDouble>(flocalsize,fsize);
+		if(ppf) pf =new Vector<IssmDouble>(flocalsize,fsize);
+	}
+	
+	/*Free ressources: */
+	xDelete<char>(toolkittype);
+
+	/*Allocate output pointers*/
+	if(pKff) *pKff = Kff;
+	if(pKfs) *pKfs = Kfs;
+	if(pdf)  *pdf  = df;
+	if(ppf)  *ppf  = pf;
+}
+
+void MatrixNonzeros(int** pd_nnz,int** po_nnz,FemModel* femmodel,int set1enum,int set2enum){
+
+	/*Intermediary*/
+	int      i,j,k,index,offset,count;
+	int      configuration_type;
+	int      d_nz,o_nz;
+	Element *element            = NULL;
+	Load    *load               = NULL;
+	int     *head_e             = NULL;
+	int     *next_e             = NULL;
+	int     *count2offset_e     = NULL;
+	int     *head_l             = NULL;
+	int     *next_l             = NULL;
+	int     *count2offset_l     = NULL;
+	int     *lidlist            = NULL;
+
+	/*output*/
+	int *d_nnz = NULL;
+	int *o_nnz = NULL;
+
+	/*retrive parameters: */
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+
+	/*Get vector size and number of nodes*/
+	int numnodes            = femmodel->nodes->NumberOfNodes(configuration_type);
+	int localnumnodes       = femmodel->nodes->Size();
+	int numberofdofspernode = femmodel->nodes->MaxNumDofs(configuration_type,GsetEnum);
+	int M                   = femmodel->nodes->NumberOfDofs(configuration_type,set1enum);
+	int N                   = femmodel->nodes->NumberOfDofs(configuration_type,set2enum);
+	int m                   = femmodel->nodes->NumberOfDofsLocal(configuration_type,set1enum);
+	int n                   = femmodel->nodes->NumberOfDofsLocal(configuration_type,set2enum);
+	int numnodesperelement  = femmodel->elements->MaxNumNodes();
+	int numnodesperload     = femmodel->loads->MaxNumNodes(configuration_type);
+
+	/*First, we are building chaining vectors so that we know what nodes are
+	 * connected to what elements. These vectors are such that:
+	 *   for(int i=head[id];i!=-1;i=next[i])
+	 * will loop over all the elements that are connected to the node number
+	 * id*/
+	head_e         = xNew<int>(localnumnodes); for(i=0;i<localnumnodes;i++) head_e[i]=-1;
+	next_e         = xNew<int>(femmodel->elements->Size()*numnodesperelement);
+	count2offset_e = xNew<int>(femmodel->elements->Size()*numnodesperelement);
+
+	k=0;
+	for(i=0;i<femmodel->elements->Size();i++){
+		element = xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		lidlist = xNew<int>(element->GetNumberOfNodes());
+		element->GetNodesLidList(lidlist);
+
+		for(j=0;j<element->GetNumberOfNodes();j++){
+			index = lidlist[j];
+			_assert_(index>=0 && index<numnodes);
+
+			count2offset_e[k]=i;
+			next_e[k]=head_e[index];
+			head_e[index]=k++;
+		}
+		for(j=0;j<numnodesperelement-element->GetNumberOfNodes();j++) k++;
+
+		xDelete<int>(lidlist);
+	}
+
+	/*Chain for loads*/
+	head_l         = xNew<int>(localnumnodes); for(i=0;i<localnumnodes;i++) head_l[i]=-1;
+	next_l         = xNew<int>(femmodel->loads->Size(configuration_type)*numnodesperload);
+	count2offset_l = xNew<int>(femmodel->loads->Size(configuration_type)*numnodesperload);
+	k=0;
+	for(i=0;i<femmodel->loads->Size();i++){
+		load = xDynamicCast<Load*>(femmodel->loads->GetObjectByOffset(i));
+		if(!load->InAnalysis(configuration_type)) continue;
+		lidlist = xNew<int>(load->GetNumberOfNodes());
+		load->GetNodesLidList(lidlist);
+
+		for(j=0;j<load->GetNumberOfNodes();j++){
+			index = lidlist[j];
+			_assert_(index>=0 && index<numnodes);
+
+			count2offset_l[k]=i;
+			next_l[k]=head_l[index];
+			head_l[index]=k++;
+		}
+		for(j=0;j<numnodesperload-load->GetNumberOfNodes();j++) k++;
+
+		xDelete<int>(lidlist);
+	}
+
+	/*OK now count number of dofs and flag each nodes for each node i*/
+	bool *flags                  = xNew<bool>(localnumnodes);
+	int  *flagsindices           = xNew<int>(localnumnodes);
+	int  *d_connectivity         = xNewZeroInit<int>(numnodes);
+	int  *o_connectivity         = xNewZeroInit<int>(numnodes);
+	int  *connectivity_clone     = xNewZeroInit<int>(numnodes);
+	int  *all_connectivity_clone = xNewZeroInit<int>(numnodes);
+
+	/*Resetting flags to false at eahc iteration takes a lot of time, so we keep track of the flags
+	 * to reset in flagsindices, initialized with -1*/
+	for(i = 0;i<localnumnodes;i++) flags[i]        = false;
+	for(i = 0;i<localnumnodes;i++) flagsindices[i] = -1;
+
+	/*Create connectivity vector*/
+	for(i=0;i<femmodel->nodes->Size();i++){
+		Node* node=xDynamicCast<Node*>(femmodel->nodes->GetObjectByOffset(i));
+		if(node->InAnalysis(configuration_type)){
+
+			/*Reinitialize flags to false*/
+			j=0;
+			while(true){
+				if(flagsindices[j]>=0){
+					flags[flagsindices[j]] = false;
+					flagsindices[j]        = -1;
+					j++;
+				}
+				else{
+					break;
+				}
+			}
+
+			//for(j=0;j<localnumnodes;j++) flags[j]=false;
+
+			/*Loop over elements that hold node number i*/
+			//if(head_e[node->Lid()]==-1 && head_l[node->Lid()]==-1){
+			//	printf("[%i] vertex %i\n",IssmComm::GetRank(),node->Lid()+1);
+			//}
+			for(j=head_e[node->Lid()];j!=-1;j=next_e[j]){
+				offset=count2offset_e[j];
+				element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(offset));
+				element->SetwiseNodeConnectivity(&d_nz,&o_nz,node,flags,flagsindices,set1enum,set2enum);
+				if(node->IsClone()){
+					connectivity_clone[node->Sid()]+=d_nz+o_nz;
+				}
+				else{
+					d_connectivity[node->Sid()]+=d_nz;
+					o_connectivity[node->Sid()]+=o_nz;
+				}
+			}
+			for(j=head_l[node->Lid()];j!=-1;j=next_l[j]){
+				offset=count2offset_l[j];
+				load=xDynamicCast<Load*>(femmodel->loads->GetObjectByOffset(offset));
+				load->SetwiseNodeConnectivity(&d_nz,&o_nz,node,flags,flagsindices,set1enum,set2enum);
+				if(node->IsClone()){
+					connectivity_clone[node->Sid()]+=d_nz+o_nz;
+				}
+				else{
+					d_connectivity[node->Sid()]+=d_nz;
+					o_connectivity[node->Sid()]+=o_nz;
+				}
+			}
+		}
+	}
+	xDelete<bool>(flags);
+	xDelete<int>(flagsindices);
+	xDelete<int>(count2offset_e);
+	xDelete<int>(head_e);
+	xDelete<int>(next_e);
+	xDelete<int>(count2offset_l);
+	xDelete<int>(head_l);
+	xDelete<int>(next_l);
+
+	/*sum over all cpus*/
+	ISSM_MPI_Allreduce((void*)connectivity_clone,(void*)all_connectivity_clone,numnodes,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
+	xDelete<int>(connectivity_clone);
+
+	if(set1enum==FsetEnum){
+		count=0;
+		d_nnz=xNew<int>(m);
+		o_nnz=xNew<int>(m);
+		for(i=0;i<femmodel->nodes->Size();i++){
+			Node* node=xDynamicCast<Node*>(femmodel->nodes->GetObjectByOffset(i));
+			if(node->InAnalysis(configuration_type) && !node->IsClone()){
+				for(j=0;j<node->indexing.fsize;j++){
+					_assert_(count<m);
+					d_nnz[count]=numberofdofspernode*(d_connectivity[node->Sid()] + all_connectivity_clone[node->Sid()]);
+					o_nnz[count]=numberofdofspernode*(o_connectivity[node->Sid()] + all_connectivity_clone[node->Sid()]);
+					if(d_nnz[count]>n)   d_nnz[count]=n;
+					if(o_nnz[count]>N-n) o_nnz[count]=N-n;
+					count++;
+				}
+			}
+		}
+		_assert_(m==count);
+	}
+	else{
+		_error_("STOP not implemented");
+	}
+	xDelete<int>(d_connectivity);
+	xDelete<int>(o_connectivity);
+	xDelete<int>(all_connectivity_clone);
+
+	/*Allocate ouptput pointer*/
+	*pd_nnz=d_nnz;
+	*po_nnz=o_nnz;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  AllocateSystemMatricesx.h
+*/ 
+
+#ifndef _ALLOCATESYSTEMMATRICESX_H
+#define _ALLOCATESYSTEMMATRICESX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void AllocateSystemMatricesx(Matrix<IssmDouble>** pKff,Matrix<IssmDouble>** pKfs,Vector<IssmDouble>** pdf,Vector<IssmDouble>** ppf,FemModel* femmodel);
+void MatrixNonzeros(int** pd_nnz,int** po_nnz,FemModel* femmodel,int set1enum,int set2enum);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/AverageOntoPartitionx/AverageOntoPartitionx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/AverageOntoPartitionx/AverageOntoPartitionx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/AverageOntoPartitionx/AverageOntoPartitionx.cpp	(revision 21239)
@@ -0,0 +1,65 @@
+/*!\file AverageOntoPartitionx
+ * \brief: average vertex vector values onto a sub-partition of the vertices
+ * used by scaled responses in Qmu analysis. See DakotaResponses module.
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./AverageOntoPartitionx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void AverageOntoPartitionx(double** paverage, Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,double* vertex_response){
+
+	int     dummy;
+	int     npart;
+	double *qmu_part  = NULL;
+
+	/*output: */
+	Vector<IssmDouble>* partition_contributions=NULL;
+	Vector<IssmDouble>* partition_areas=NULL;
+	Vector<IssmDouble>* vec_average=NULL;
+	double* average=NULL;
+
+	/*First, recover qmu partition of vertices: */
+	parameters->FindParam(&qmu_part,&dummy,QmuPartitionEnum);
+
+	/*Some parameters: */
+	parameters->FindParam(&npart,QmuNumberofpartitionsEnum);
+
+	/*average onto the separate areas. The result will be a npart sized vector. */
+
+	/*allocate: */
+	partition_contributions=new Vector<IssmDouble>(npart);
+	partition_areas=new Vector<IssmDouble>(npart);
+	vec_average=new Vector<IssmDouble>(npart);
+
+	/*loop on each element, and add contribution of the element to the partition (surface weighted average): */
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		element->AverageOntoPartition(partition_contributions,partition_areas,vertex_response,qmu_part);
+	}
+
+	/*Assemble: */
+	partition_contributions->Assemble();
+	partition_areas->Assemble();
+
+	/*We have the partition_areas and the partition_contributions for each partition -> compute the surfae weighted average: */
+	vec_average->PointwiseDivide(partition_contributions,partition_areas);
+
+	/*serialize:*/
+	average=vec_average->ToMPISerial();
+
+	/*Free ressources:*/
+	xDelete<double>(qmu_part);
+	delete partition_contributions;
+	delete partition_areas;
+	delete vec_average;
+
+	/*Assign output pointers:*/
+	*paverage=average;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/AverageOntoPartitionx/AverageOntoPartitionx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/AverageOntoPartitionx/AverageOntoPartitionx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/AverageOntoPartitionx/AverageOntoPartitionx.h	(revision 21239)
@@ -0,0 +1,12 @@
+/*!\file:  AverageOntoPartitionx.h
+ * \brief header file for averaging  dakota responses onto a vertices partition
+ */ 
+
+#ifndef _AVERAGEONTOPARTITIONXX_H
+#define _AVERAGEONTOPARTITIONXX_H
+
+#include "../../classes/classes.h"
+
+void AverageOntoPartitionx(double** average, Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,double* vertex_response);
+
+#endif  /* _AVERAGEONTOPARTITIONXX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/BamgConvertMeshx/BamgConvertMeshx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/BamgConvertMeshx/BamgConvertMeshx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/BamgConvertMeshx/BamgConvertMeshx.cpp	(revision 21239)
@@ -0,0 +1,29 @@
+/*!\file BamgConvertMeshx
+ */
+
+#include "./BamgConvertMeshx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../bamg/bamgobjects.h"
+
+using namespace bamg;
+using namespace std;
+
+int BamgConvertMeshx(BamgMesh* bamgmesh,BamgGeom* bamggeom,int* index,double* x,double* y,int nods,int nels){
+
+	/*Options*/
+	BamgOpts* bamgopts=new BamgOpts();
+
+	/*read mesh*/
+	Mesh Th(index,x,y,nods,nels); 
+
+	/*write mesh and geometry*/
+	Th.Gh.WriteGeometry(bamggeom,bamgopts);
+	Th.WriteMesh(bamgmesh,bamgopts);
+
+	/*clean up and return*/
+	delete bamgopts;
+	return 1;
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/BamgConvertMeshx/BamgConvertMeshx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/BamgConvertMeshx/BamgConvertMeshx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/BamgConvertMeshx/BamgConvertMeshx.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  BamgConvertMeshx.h
+ * \brief header file for Bamg module
+ */ 
+
+#ifndef _BAMGCONVERTMESHX_H
+#define _BAMGCONVERTMESHX_H
+
+#include "../../classes/classes.h"
+#include "../../bamg/bamgobjects.h"
+
+/* local prototypes: */
+int BamgConvertMeshx(BamgMesh* bamgmesh,BamgGeom* bamggeom,int* index,double* x,double* y,int nods,int nels);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/BamgTriangulatex/BamgTriangulatex.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/BamgTriangulatex/BamgTriangulatex.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/BamgTriangulatex/BamgTriangulatex.cpp	(revision 21239)
@@ -0,0 +1,21 @@
+/*!\file BamgTriangulatex
+ */
+
+#include "./BamgTriangulatex.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "../../bamg/bamgobjects.h"
+
+using namespace bamg;
+using namespace std;
+
+int BamgTriangulatex(int** pindex,int* pnels,double* x,double* y,int nods){
+
+	Mesh Th(x,y,nods);
+	Th.WriteIndex(pindex,pnels);
+	//delete &Th;
+	return 0;
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/BamgTriangulatex/BamgTriangulatex.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/BamgTriangulatex/BamgTriangulatex.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/BamgTriangulatex/BamgTriangulatex.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  BamgTriangulatex.h
+ * \brief header file for Bamg module
+ */ 
+
+#ifndef _BAMGTRIANGULATEX_H
+#define _BAMGTRIANGULATEX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+int BamgTriangulatex(int** pindex,int* pnels,double* x,double* y,int nods);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Bamgx/Bamgx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Bamgx/Bamgx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Bamgx/Bamgx.cpp	(revision 21239)
@@ -0,0 +1,211 @@
+/*!\file Bamgx
+ * \brief: use Bamg capabilities.
+ */
+#include "./Bamgx.h"
+#include "../../bamg/bamgobjects.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+using namespace bamg;
+using namespace std;
+
+int Bamgx(BamgMesh* bamgmesh_out,BamgGeom* bamggeom_out,BamgMesh* bamgmesh_in,BamgGeom* bamggeom_in,BamgOpts* bamgopts){
+
+	/*Bamg options*/
+	int    maxnbv;
+	double coef;
+	int    verbosity;
+	int    nbsmooth;
+
+	/*intermediary*/
+	int i;
+	int noerr=1;
+	double costheta=2;
+	double hminaniso=1e-100; 
+	Mesh* Thr=NULL;
+	Mesh* Thb=NULL;
+
+	/*Bamg options*/
+	nbsmooth =bamgopts->nbsmooth;
+	coef     =bamgopts->coeff;
+	maxnbv   =bamgopts->maxnbv;
+	verbosity=bamgopts->verbose;
+
+	// no metric -> no smoothing 
+	if (bamgopts->metric==NULL) nbsmooth=0; 
+
+	/*If no mesh in input, generate one*/
+	if(bamgmesh_in->TrianglesSize[0]==0){
+		/*Mesh generation {{{*/
+
+		//Step1: generate geometry Gh
+		if (verbosity>0) _printf_("Construction of a mesh from a given geometry\n");
+		if (verbosity>1) _printf_("   Processing geometry...\n");
+		Geometry Gh(bamggeom_in,bamgopts);
+
+		//get hmin and hmax from geometry to generate the metric
+		bamgopts->hmin = Max(bamgopts->hmin,Gh.MinimalHmin());
+		bamgopts->hmax = Min(bamgopts->hmax,Gh.MaximalHmax());
+
+		//build metric using geometry
+		if (verbosity>1) _printf_("   Generating Metric...\n");
+		for(i=0;i<Gh.nbv;i++){
+			Metric M=Gh[i];
+			EigenMetric Vp(M/coef);
+			Vp.Maxh(bamgopts->hmax);
+			Vp.Minh(bamgopts->hmin);
+			Gh.vertices[i].m = Vp;
+		}
+
+		//generate mesh
+		if (verbosity>1) _printf_("   Generating Mesh...\n");
+		Mesh Th(maxnbv,Gh,bamgopts);
+
+		//Split corners if requested
+		if(bamgopts->splitcorners) Th.SplitInternalEdgeWithBorderVertices();
+
+		//Renumbering
+		Th.TrianglesRenumberBySubDomain();
+
+		//Crack mesh if requested
+		if(bamgopts->Crack) Th.CrackMesh(bamgopts);
+
+		//Build output
+		if (verbosity>1) _printf_("   Write Mesh...\n");
+		Th.WriteMesh(bamgmesh_out,bamgopts);
+		if (verbosity>1) _printf_("   Write Geometry...\n");
+		Gh.WriteGeometry(bamggeom_out,bamgopts);
+
+		//clean up
+	//	delete &Th;
+	//	delete &Gh;
+		/*}}}*/
+	}
+	else{
+		/*Anisotropic mesh adaptation {{{*/
+
+		// read background mesh 
+		if (verbosity>0) _printf_("Anisotropic mesh adaptation\n");
+		if (verbosity>1) _printf_("   Processing initial mesh and geometry...\n");
+		Mesh BTh(bamggeom_in,bamgmesh_in,bamgopts); 
+
+		//Make Quadtree from background mesh
+		BTh.MakeBamgQuadtree();
+
+		//Bound hmin and hmax
+		bamgopts->hmin=Max(bamgopts->hmin,BTh.MinimalHmin());
+		bamgopts->hmax=Min(bamgopts->hmax,BTh.MaximalHmax());
+
+		//Generate initial metric
+		if (bamgopts->metric){
+			if (verbosity>1) _printf_("   Processing Metric...\n");
+			BTh.ReadMetric(bamgopts);
+		}
+		else { 
+			if (verbosity>1) _printf_("   Generating initial Metric...\n");
+			Metric Mhmax(bamgopts->hmax);
+			for (int iv=0;iv<BTh.nbv;iv++) BTh[iv].m = Mhmax;
+		}
+
+		//use present fields to generate metric if present
+		if (bamgopts->field){
+			if (verbosity>1) _printf_("   Merge metric with field provided...\n");
+			BTh.AddMetric(bamgopts);
+		}
+
+		// change using hVertices if provided
+		if(bamgopts->hVertices && bamgopts->hVerticesSize[0]==BTh.nbv){
+			if (verbosity>1) _printf_("   Merging Metric with hVertices...\n");
+			for (i=0;i<BTh.nbv;i++){
+				if (!xIsNan<IssmPDouble>(bamgopts->hVertices[i])){
+					BTh[i].m=Metric((float)bamgopts->hVertices[i]);
+				}
+			}
+		}
+
+		// change using hminVertices if provided
+		if (bamgopts->hminVertices){
+			if (verbosity>1) _printf_("   Merging Metric with hminVertices...\n");
+			for (i=0;i<BTh.nbv;i++){
+				if (!xIsNan<IssmPDouble>(bamgopts->hminVertices[i])){
+					Metric M=BTh.vertices[i].m;
+					EigenMetric Vp(M/coef);
+					Vp.Minh(bamgopts->hminVertices[i]);
+					BTh.vertices[i].m=Vp;
+				}
+			}
+		}
+
+		// change using hmaxVertices if provided
+		if (bamgopts->hmaxVertices){
+			if (verbosity>1) _printf_("   Merging Metric with hmaxVertices...\n");
+			for (i=0;i<BTh.nbv;i++){
+				if (!xIsNan<IssmPDouble>(bamgopts->hmaxVertices[i])){
+					Metric M=BTh.vertices[i].m;
+					EigenMetric Vp(M/coef);
+					Vp.Maxh(bamgopts->hmaxVertices[i]);
+					BTh.vertices[i].m=Vp;
+				}
+			}
+		}
+
+		//Add geometry metric if provided
+		if(bamgopts->geometricalmetric) BTh.AddGeometryMetric(bamgopts);
+
+		//Smoothe metric
+		BTh.SmoothMetric(bamgopts->gradation);
+
+		//Control element subdivision
+		BTh.MaxSubDivision(bamgopts->maxsubdiv);
+
+		//Bound anisotropy
+		BTh.BoundAnisotropy(bamgopts->anisomax,hminaniso);
+
+		//Build new mesh
+		if (verbosity>1) _printf_("   Generating Mesh...\n");
+		Thr=&BTh,Thb=0;
+		Mesh & Th( *(0 ?  new Mesh(*Thr,&Thr->Gh,Thb,maxnbv) :  new Mesh(maxnbv,BTh,bamgopts,bamgopts->KeepVertices)));
+		if (Thr != &BTh) delete Thr;
+
+		//Make quadrangle if requested
+		if(costheta<=1.0) Th.MakeQuadrangles(costheta);
+		//if () Th.SplitElement(2);
+
+		//Split corners if requested
+		if(bamgopts->splitcorners) Th.SplitInternalEdgeWithBorderVertices();
+
+		//Renumber by subdomain
+		Th.TrianglesRenumberBySubDomain();
+
+		//Smooth vertices
+		if(nbsmooth>0) Th.SmoothingVertex(nbsmooth,bamgopts->omega);
+
+		//display info
+		if(verbosity>0) {
+			if (Th.nbt-Th.nbtout-Th.nbq*2){
+				_printf_("   new number of triangles = " << (Th.nbt-Th.nbtout-Th.nbq*2) << "\n");
+			}
+			if (Th.nbq ){
+				_printf_("   new number of quads = " << Th.nbq << "\n");
+			}
+		}
+
+		//Build output
+		if (verbosity>1) _printf_("   Write Mesh...\n");
+		Th.WriteMesh(bamgmesh_out,bamgopts);
+		if (verbosity>1) _printf_("   Write Geometry...\n");
+		Th.Gh.WriteGeometry(bamggeom_out,bamgopts);
+		if (verbosity>1) _printf_("   Write Metric...\n");
+		BTh.WriteMetric(bamgopts);
+
+		/*clean up*/
+		delete &Th;
+		//delete &BTh;
+		/*}}}*/
+	}
+
+	/*No error return*/
+	if (verbosity>1) _printf_("   Exiting Bamg.\n");
+	return noerr;
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Bamgx/Bamgx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Bamgx/Bamgx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Bamgx/Bamgx.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  Bamgx.h
+ * \brief header file for Bamg module
+ */ 
+
+#ifndef _BAMGX_H
+#define _BAMGX_H
+
+#include "../../bamg/bamgobjects.h"
+
+/* local prototypes: */
+int     Bamgx(BamgMesh* bamgmesh_out,BamgGeom* bamggeom_out,BamgMesh* bamgmesh_in,BamgGeom* bamggeom_in,BamgOpts* bamgopts);
+
+#endif  /* _BAMGX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Calvingx/Calvingx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Calvingx/Calvingx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Calvingx/Calvingx.cpp	(revision 21239)
@@ -0,0 +1,33 @@
+/*!\file Calvingx
+ * \brief: compute inverse method gradient
+ */
+
+#include "./Calvingx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void Calvingx(FemModel* femmodel){
+
+	/*Recover Calving law Enum*/
+	int calvinglaw;
+	femmodel->parameters->FindParam(&calvinglaw,CalvingLawEnum);
+
+	/*Calculate calving rate*/
+	switch(calvinglaw){
+		case DefaultCalvingEnum:
+		case CalvingMinthicknessEnum:
+			break;
+		case CalvingLevermannEnum:
+			if(VerboseModule()) _printf0_("   computing Levermann's calving rate\n");
+			femmodel->StrainRateparallelx();
+			femmodel->StrainRateperpendicularx();
+			femmodel->CalvingRateLevermannx();
+			break;
+		case CalvingDevEnum:
+			femmodel->CalvingRateDevx();
+			femmodel->ElementOperationx(&Element::CalvingRateDev);
+			break;
+		default:
+			_error_("Caving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Calvingx/Calvingx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Calvingx/Calvingx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Calvingx/Calvingx.h	(revision 21239)
@@ -0,0 +1,10 @@
+#ifndef _CALVINGX_H
+#define _CALVINGX_H
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+/* local prototypes: */
+void Calvingx(FemModel* femmodel);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Chacox/Chacox.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Chacox/Chacox.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Chacox/Chacox.cpp	(revision 21239)
@@ -0,0 +1,184 @@
+/* This software was developed by Bruce Hendrickson and Robert Leland   *
+ * at Sandia National Laboratories under US Department of Energy        *
+ * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */
+
+#include "./Chacox.h"
+
+int Chacox(
+	int       nvtxs,		/* number of vertices in graph */
+	int      *start,		/* start of edge list for each vertex */
+	int      *adjacency,	/* edge list data */
+	int      *vwgts,		/* weights for all vertices */
+	float    *ewgts,		/* weights for all edges */
+	float    *x,
+	float    *y,
+	float    *z,			/* coordinates for inertial method */
+	short    *assignment,	/* set number of each vtx (length nvtxs+1) */
+	double   options[10],	/* architecture and partitioning options */
+	int      *nparts,		/* number of parts options */
+	double   *goal			/* desired set sizes */
+)
+{
+	#ifdef _HAVE_CHACO_ //only works if Chaco library has been compiled in.
+
+	extern int     Using_Main;                   /* is main routine being called?                */
+	extern char   *PARAMS_FILENAME;              /* name of file with parameter updates          */
+	extern double  EIGEN_TOLERANCE;              /* tolerance for eigen calculations             */
+	extern int     OUTPUT_ASSIGN;                /* whether to write assignment to file          */
+	extern int     DEBUG_MEMORY;                 /* debug memory allocation and freeing?         */
+	extern int     DEBUG_TRACE;                  /* trace main execution path                    */
+	extern int     DEBUG_PARAMS;                 /* debug flag for reading parameters            */
+	extern long    RANDOM_SEED;                  /* seed for random number generators            */
+	extern int     ECHO;                         /* controls amount of output                    */
+	extern int     PROMPT;                       /* prompt for input or not?                     */
+	extern int     PRINT_HEADERS;                /* print lines for output sections?             */
+	extern int     MATCH_TYPE;                   /* matching routine to call                     */
+	extern double  input_time;                   /* times data file input                        */
+	extern double  start_time;                   /* time partitioning starts                     */
+	FILE          *params_file;                  /* file with parameter value updates            */
+	int            global_method;                /* global partitioning method                   */
+	int            local_method;                 /* local partitioning method                    */
+	double         eigtol;                       /* tolerance in eigenvector calculation         */
+	int            ndims;                        /* dimension of recursive partitioning          */
+	int            architecture;                 /* 0 => hypercube, d => d-dimensional mesh      */
+	int            ndims_tot;                    /* total number of cube dimensions to divide    */
+	int            mesh_dims[3];                 /* dimensions of mesh of processors             */
+	long           seed;                         /* for random graph mutations                   */
+	int            rqi_flag;                     /* use RQI/Symmlq eigensolver?                  */
+	int            vmax;                         /* if so, how many vertices to coarsen down to? */
+	char           outassignname[NAME_LENGTH];   /* assignment output file name                  */
+	char           outfilename[NAME_LENGTH];     /* name of output file                          */
+	char          *outassignptr;                 /* name or null pointer for output assignment   */
+	char          *outfileptr;                   /* name or null pointer for output file         */
+	int            nprocs;                       /* number of processors being divided into      */
+	double         time;                         /* timing marker                                */
+	int            flag;                         /* return code from input routines              */
+	double        *smalloc();                    /* safe version of malloc                       */
+	//double       seconds();                    /* returns elapsed time in seconds              */
+	/*int sfree(), interface(), affirm();
+	void input_queries()  , smalloc_stats(), read_params(), clear_timing();  */
+
+	int i,tvwgt;
+	double tgoal;
+
+	if (DEBUG_TRACE > 0) {
+		_printf_("<Entering main>\n");
+	}
+
+	if (PRINT_HEADERS) {
+		_printf_("\n                    Chaco 2.0\n");
+		_printf_("          Sandia National Laboratories\n\n");
+	}
+
+	Using_Main = TRUE;
+	params_file = fopen(PARAMS_FILENAME, "r");
+	if (params_file == NULL && DEBUG_PARAMS > 1) {
+		printf("Parameter file `%s' not found; using default parameters.\n",PARAMS_FILENAME);
+	}
+
+	start_time = time = chaco_seconds();
+
+	read_params(params_file);
+
+	flag = input_parse(outassignname, outfilename,
+			  &architecture, &ndims_tot, mesh_dims,
+			  &global_method, &local_method, &rqi_flag, &vmax, &ndims, &nprocs,
+			  options, nparts);
+	if (flag)
+		return(flag);
+
+	if (OUTPUT_ASSIGN > 0)
+		outassignptr = outassignname;
+	else
+		outassignptr = NULL;
+
+	if (ECHO < 0)
+		outfileptr = outfilename;
+	else
+		outfileptr = NULL;
+
+	if ((int)options[OPT_VWGTS] && vwgts) {
+		printf("%s -- Applying weights for %d vertices.\n",__FUNCT__,nvtxs);
+		tvwgt = 0;
+		for (i=0; i<nvtxs; i++)
+			tvwgt += vwgts[i];
+	}
+	else {
+		tvwgt = nvtxs;
+		if      ( (int)options[OPT_VWGTS] && !vwgts)
+			printf("%s -- Vertex weight flag=%d, but no vertex weights specified.\n",__FUNCT__,(int)options[OPT_VWGTS]);
+		else if (!(int)options[OPT_VWGTS] &&  vwgts)
+			printf("%s -- Vertex weight flag=%d, so specified vertex weights ignored.\n",__FUNCT__,(int)options[OPT_VWGTS]);
+	}
+
+	if ((int)options[OPT_EWGTS] && ewgts) {
+		printf("%s -- Applying weights for %d edges.\n",
+			   __FUNCT__,start[nvtxs]/2);
+	}
+	else {
+		if      ( (int)options[OPT_EWGTS] && !ewgts)
+			printf("%s -- Edge weight flag=%d, but no edge weights specified.\n",__FUNCT__,(int)options[OPT_EWGTS]);
+		else if (!(int)options[OPT_EWGTS] &&  ewgts)
+			printf("%s -- Edge weight flag=%d, so specified edge weights ignored.\n",__FUNCT__,(int)options[OPT_EWGTS]);
+	}
+
+    if (goal) {
+        printf("%s -- Applying goals for %d sets.\n",
+               __FUNCT__,nprocs);
+        tgoal = 0.;
+        for (i=0; i<nprocs; i++)
+            tgoal += goal[i];
+        for (i=0; i<nprocs; i++)
+            goal[i] *= (double)tvwgt/tgoal;
+    }
+
+	input_time += chaco_seconds() - time;
+
+	if (options[OPT_EIGTOL] > 0)
+		eigtol = options[OPT_EIGTOL];
+	else
+		eigtol = EIGEN_TOLERANCE;
+	if ((int)options[OPT_SEED] > 0)
+		seed = (int)options[OPT_SEED];
+	else
+		seed = RANDOM_SEED;
+
+/*  Chaco numbers vertices from 1 and the Matlab sparse data structure
+	numbers rows from 0, so increment the row indices for each column. */
+
+	for (i=0; i<start[nvtxs]; adjacency[i++]++);
+
+	printf("\n%s -- Calling Chaco interface:\n\n",__FUNCT__);
+	flag = interface(nvtxs, start, adjacency,
+		  ((int)options[OPT_VWGTS] && vwgts ? vwgts : NULL),
+		  ((int)options[OPT_EWGTS] && ewgts ? ewgts : NULL),
+		  x, y, z,
+		  outassignptr, outfileptr,
+		  assignment,
+		  architecture, ndims_tot, mesh_dims, goal,
+		  global_method, local_method, rqi_flag, vmax, ndims,
+		  eigtol, seed);
+	printf("\n%s -- Chaco interface returning flag=%d.\n",__FUNCT__,flag);
+
+/*  Reset adjacency matrix in case calling function needs it.  */
+
+	for (i=0; i<start[nvtxs]; adjacency[i++]--);
+
+	if (DEBUG_MEMORY > 0) {
+		_printf_("\n");
+		smalloc_stats();
+	}
+
+	if (params_file != NULL)
+		fclose(params_file);
+
+	if (DEBUG_TRACE > 1) {
+		_printf_("<Leaving main>\n");
+	}
+
+	return(0);
+
+	#else //ifdef _HAVE_CHACO_
+	return (0);
+	#endif
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Chacox/Chacox.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Chacox/Chacox.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Chacox/Chacox.h	(revision 21239)
@@ -0,0 +1,45 @@
+/*!\file:  Chacoxx.h
+ * \brief header file for Chaco partitioner
+ */ 
+
+#ifndef _CHACOX_H
+#define _CHACOX_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+
+#ifdef _HAVE_CHACO_ //only works if dakota library has been compiled in.
+
+#include "chaco.h"
+
+#define    OPT_GLOBAL    0
+#define    OPT_LOCAL     1
+#define    OPT_VWGTS     2
+#define    OPT_EWGTS     3
+#define    OPT_ARCH      4
+#define    OPT_NDIMS     5
+#define    OPT_VMAX      6
+#define    OPT_RQI       7
+#define    OPT_EIGTOL    8
+#define    OPT_SEED      9
+
+#endif
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+int Chacox( int nvtxs, int *start, int *adjacency,int *vwgts, float *ewgts, float *x, float *y, float *z, short *assignment, double  options[10], int *nparts, double *goal);
+int input_parse( char *outassignname, char *outfilename, int *architecture, int *ndims_tot, int mesh_dims[3], int *global_method, int *local_method, 
+		int *rqi_flag, int *vmax, int *ndims, int *nprocs, double options[10], int *nparts);
+double    chaco_seconds(void);
+
+#undef __FUNCT__ 
+#define __FUNCT__  "Chacox"
+
+#endif  /* _CHACOX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Chacox/chaco_seconds.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Chacox/chaco_seconds.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Chacox/chaco_seconds.cpp	(revision 21239)
@@ -0,0 +1,36 @@
+/*This is needed, because the chaco library defines a "C" function seconds that conflicts with the Metis version.: */
+
+#ifdef _INTEL_WIN_
+#include   <time.h>
+#else
+#include   <sys/time.h>
+#include   <sys/resource.h>
+#endif
+
+double chaco_seconds(void){
+
+	double    curtime;
+
+#ifdef RUSAGE_SELF
+
+/* This timer is faster and more robust (if it exists). */
+    struct rusage rusage;
+    /*int getrusage(); commenting this out. not sure why it's there anymore
+	 *as it clobbers the prototype int getrusag(int target,rusage* results) which 
+	 *is defined in the <sys/time.h> and <sys/resource.h> header files. Leaving it 
+	 *for reference in case we have a problem here in the future*/
+
+    getrusage(RUSAGE_SELF, &rusage);
+    curtime = ((rusage.ru_utime.tv_sec + rusage.ru_stime.tv_sec) +
+	    1.0e-6 * (rusage.ru_utime.tv_usec + rusage.ru_stime.tv_usec));
+
+#else
+
+/* ANSI timer, but lower resolution & wraps around after ~36 minutes. */
+
+    curtime = clock()/((double) CLOCKS_PER_SEC);
+
+#endif
+
+    return (curtime);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Chacox/input_parse.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Chacox/input_parse.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Chacox/input_parse.cpp	(revision 21239)
@@ -0,0 +1,258 @@
+/*!\file:  input_parse.cpp
+ * \brief  needed by Chacox.cpp
+ */ 
+
+#include "./Chacox.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "input_parse"
+
+int      input_parse(
+	char     *outassignname,	/* name of assignment output file */
+	char     *outfilename,		/* name of file for outputing run results */
+	int      *architecture,		/* 0=> hypercube, d=> d-dimensional mesh */
+	int      *ndims_tot,		/* target number of hypercube dimensions */
+	int       mesh_dims[3],		/* mesh dimensions */
+	int      *global_method,	/* what global partitioning strategy to use? */
+	int      *local_method,		/* what local refinement strategy to use? */
+	int      *rqi_flag,		/* should I use multilevel eigensolver? */
+	int      *vmax,			/* if so, how far should I coarsen? */
+	int      *ndims,		/* number of divisions at each stage */
+	int      *nprocs,		/* number of processors being divided into */
+	double   options[10],	/* architecture and partitioning options */
+	int      *nparts		/* number of parts options */
+)
+{
+
+	#ifdef _HAVE_CHACO_ //only works if Chaco library has been compiled in.
+
+	extern int SEQUENCE;	/* sequence instead of partition graph? */
+	extern int ARCHITECTURE;	/* 0=> hypercube, d=> d-dimensional mesh */
+	extern int OUTPUT_ASSIGN;	/* write assignments to file? */
+	extern int ECHO;		/* copy input to screen? results to file? */
+	extern int DEBUG_TRACE;	/* trace main execution path */
+	extern int PROMPT;		/* prompt for input? */
+	extern int MATCH_TYPE;      /* max-matching routine to call */
+	int       eigensolver;	/* which kind of eigensolver to use */
+
+	if (DEBUG_TRACE > 0) {
+		_printf_("<Entering input_parse>\n");
+	}
+
+	if (PROMPT) {
+		_printf_("Parallel machine architecture:\n");
+		_printf_("  (0) Hypercube\n");
+		_printf_("  (1) One-dimensional mesh\n");
+		_printf_("  (2) Two-dimensional mesh\n");
+		_printf_("  (3) Three-dimensional mesh\n");
+	}
+	*architecture = (int)options[OPT_ARCH];
+	if (*architecture < 0 || *architecture > 3) {
+		printf("%s -- Architecture %d must be between 0 and 3.\n",__FUNCT__,*architecture);
+		return(-1);
+	}
+
+	/* Name output assignment file. */
+	if (PROMPT)
+		_printf_("Assignment output file: ");
+	outassignname = NULL;
+
+	/* Name output results file. */
+	if (PROMPT)
+		_printf_("File name for saving run results: ");
+	outfilename = NULL;
+
+	/* Initialize the method flags */
+	*rqi_flag = 0;
+	*global_method = 0;
+
+	/* Get global method, if any. */
+	if (SEQUENCE) {
+		*global_method = 2;
+	}
+	else {
+		if (PROMPT) {
+			_printf_("Global partitioning method:\n");
+			_printf_("  (1) Multilevel-KL\n");
+			_printf_("  (2) Spectral\n");
+			_printf_("  (3) Inertial\n");
+			_printf_("  (4) Linear\n");
+			_printf_("  (5) Random\n");
+			_printf_("  (6) Scattered\n");
+			_printf_("  (7) Read-from-file\n");
+		}
+		*global_method = (int)options[OPT_GLOBAL];
+		if (*global_method < 1 || *global_method > 7) {
+			printf("%s -- Global method %d must be between 1 and 7.\n",__FUNCT__,*global_method);
+			return(-1);
+		}
+	}
+
+	if (*global_method == 7) {	/* Name and open input assignment file. */
+		if (PROMPT)
+			_printf_("Assignment input file: ");
+	}
+
+	else if (*global_method == 3) {
+		if (PROMPT)
+			_printf_("Geometry input file name: ");
+	}
+
+	else if (*global_method == 2) {
+		if (PROMPT) {
+			_printf_("Eigensolver:\n");
+			_printf_("  (1) Multilevel RQI/Symmlq\n");
+			_printf_("  (2) Lanczos\n"); 
+		}
+		eigensolver = (int)options[OPT_RQI];
+		if (eigensolver < 0 || eigensolver > 2) {
+			printf("%s -- RQI/Symmlq flag %d must be between 0 and 2.\n",__FUNCT__,eigensolver);
+			return(-1);
+		}
+		if (eigensolver == 1) {
+			if (MATCH_TYPE == 5) {	/* geometric matching */
+				if (PROMPT)
+					_printf_("Geometry input file name: ");
+			}
+			*rqi_flag = 1;
+			if (PROMPT)
+				_printf_("Number of vertices to coarsen down to: ");
+			*vmax = (int)options[OPT_VMAX];
+			if (*vmax <= 0) {
+				printf("%s -- Vmax %d must be greater then 0.\n",__FUNCT__,*vmax);
+				return(-1);
+			}
+		}
+		else if (eigensolver == 0 || eigensolver == 2) {
+			*rqi_flag = 0;
+		}
+	}
+
+	else if (*global_method == 1) {
+		if (MATCH_TYPE == 5) {		/* geometric matching */
+			if (PROMPT)
+				_printf_("Geometry input file name: ");
+		}
+		if (PROMPT)
+			_printf_("Number of vertices to coarsen down to: ");
+		*vmax = (int)options[OPT_VMAX];
+		if (*vmax <= 0) {
+			printf("%s -- Vmax %d must be greater then 0.\n",__FUNCT__,*vmax);
+			return(-1);
+		}
+	}
+
+	if (SEQUENCE) {
+		*local_method = 2;
+		if (*architecture == 0) {
+			*ndims_tot = 1;
+		}
+		else if (*architecture > 0) {
+			mesh_dims[0] = 2;
+			mesh_dims[1] = mesh_dims[2] = 1;
+		}
+		*ndims = 1;
+		goto End_Label;
+	}
+
+	/* Get local method, if any */
+	*local_method = 0;
+	if (*global_method == 1)
+		*local_method = 1;
+	else {
+		if (PROMPT) {
+			_printf_("Local refinement method:\n");
+			_printf_("  (1) Kernighan-Lin\n");
+			_printf_("  (2) None\n");
+		}
+		*local_method = (int)options[OPT_LOCAL];
+		if (*local_method < 1 || *local_method > 2) {
+			printf("%s -- Local method %d must be 1 and 2.\n",__FUNCT__,*local_method);
+			return(-1);
+		}
+	}
+
+	/* Now learn about the parallel architecture. */
+	if (*architecture == 0) {
+	/* Get total number of hypercube dimensions in which to partition. */
+		*ndims_tot = 0;
+		if (PROMPT)
+			_printf_("Total number of target hypercube dimensions: ");
+		*ndims_tot = nparts[0];
+		if (*ndims_tot < 1) {
+			_printf_(" Number of divisions must be at least 1\n");
+			printf("%s -- Number of divisions %d must be at least 1.\n",
+				   __FUNCT__,nparts[0]);
+			return(-1);
+		}
+		*nprocs = 1 << (*ndims_tot);
+	}
+
+	else {			/* Get dimensions of mesh. */
+		mesh_dims[1] = mesh_dims[2] = 1;
+		if (*architecture == 2) {
+			if (PROMPT)
+				_printf_("X and Y extent of of 2-D mesh: ");
+			mesh_dims[0] = nparts[0];
+			mesh_dims[1] = nparts[1];
+		}
+		else if (*architecture == 3) {
+			if (PROMPT)
+				_printf_("X, Y and Z extent of 3-D mesh: ");
+			mesh_dims[0] = nparts[0];
+			mesh_dims[1] = nparts[1];
+			mesh_dims[2] = nparts[2];
+		}
+		else {			/* Anything else => 1-D mesh */
+			if (PROMPT)
+				_printf_("Size of 1-D mesh: ");
+			mesh_dims[0] = nparts[0];
+			*architecture = 1;
+		}
+		*nprocs = mesh_dims[0] * mesh_dims[1] * mesh_dims[2];
+	}
+
+	/* Get number of dimensions in which to partition at each level. */
+	*ndims = 0;
+	if (*nprocs <= 3) {
+		*ndims = 1;
+	}
+	else if (*nprocs <= 7) {
+		if (PROMPT) {
+			_printf_("Partitioning dimension: \n");
+			_printf_("  (1) Bisection\n");
+			_printf_("  (2) Quadrisection\n");
+		}
+		*ndims = (int)options[OPT_NDIMS];
+		if (*ndims < 1 || *ndims > 2) {
+			printf("%s -- Ndims %d must be 1 or 2 for %d processors.\n",__FUNCT__,*ndims,*nprocs);
+			return(-1);
+		}
+	}
+	else {
+		if (PROMPT) {
+			_printf_("Partitioning dimension: \n");
+			_printf_("  (1) Bisection\n");
+			_printf_("  (2) Quadrisection\n");
+			_printf_("  (3) Octasection\n");
+		}
+		*ndims = (int)options[OPT_NDIMS];
+		if (*ndims < 1 || *ndims > 3) {
+			printf("%s -- Ndims %d must be between 1 and 3 for %d processors.\n",__FUNCT__,*ndims,*nprocs);
+			return(-1);
+		}
+	}
+End_Label: 
+
+	if (*global_method == 1 || *rqi_flag) {
+		if (*vmax < 2 * (1 << *ndims)) {
+			*vmax = 2 * (1 << *ndims);
+		}
+	}
+
+	return(0);
+
+	#else //#ifdef _HAVE_CHACO_ 
+	return(0);
+	#endif
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Chacox/user_params.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Chacox/user_params.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Chacox/user_params.cpp	(revision 21239)
@@ -0,0 +1,144 @@
+/* This software was developed by Bruce Hendrickson and Robert Leland   *
+ * at Sandia National Laboratories under US Department of Energy        *
+ * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */
+
+/* Modified by John Gilbert 25 Aug 1995 for Matlab mex-file interface   */
+/* Modified by Tim Davis, July 6, 1998, for Matlab 5.1 interface, and */
+/* a more picky compiler (cc) that complains about duplicate global */
+/* declarations. */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_CHACO_ //only works if dakota library has been compiled in.
+
+#include "params.h"
+
+#define  TRUE  1
+#define  FALSE 0
+
+/* Input and ouput control parameters */
+
+int       CHECK_INPUT = TRUE;	 /* Check input for consistency? (TRUE/FALSE) */
+int       ECHO = 0;		 /* Print input/param options? to file? (-2..2) */
+int       OUTPUT_METRICS = 0;	 /* Controls displaying of results (-2..2) */
+int       OUTPUT_TIME = 0;	 /* At what level to display timings (0..2) */
+int       OUTPUT_ASSIGN = FALSE; /* Write assignments to file? (TRUE/FALSE) */
+int       OUT_ASSIGN_INV = FALSE;/* If so, use inverse form? (TRUE/FALSE) */
+int       IN_ASSIGN_INV = FALSE; /* Input file in inverse form? (TRUE/FALSE) */
+int       PROMPT = FALSE;	 /* Prompt for input? (TRUE/FALSE) */
+int       PRINT_HEADERS = FALSE; /* Print pretty output headers (TRUE/FALSE) */
+
+/* Eigenvector calculation parameters */
+
+int       LANCZOS_TYPE = 3;	/* type of Lanczos to use */
+				/* 1 => full orthog, 2 => full inverse operator */
+				/* 3 =>  selective orthogonalization */
+double    EIGEN_TOLERANCE = 1e-3;	/* Numerical eigen-tolerance */
+double    SRESTOL = -1.;		/* Rel resid tol on T evec; autoset if <= 0 */
+int       LANCZOS_SO_INTERVAL = 10;	/* Itns. between SO orthog checks; set >= 2 */
+int       LANCZOS_MAXITNS = -1;		/* Max Lanczos its; autoset if <= 0 */
+double    BISECTION_SAFETY = 10;	/* Divides Lanczos bisection tol */
+int       LANCZOS_CONVERGENCE_MODE = 0;	/* Lanczos convergence test type: */
+					/* 0=> residual,  1=> partition */
+int       RQI_CONVERGENCE_MODE = 1;	/* RQI convergence test type: */
+					/* 0=> residual,  1=> partition */
+int       LANCZOS_SO_PRECISION = 2;	/* 2 => double Lanczos, 1 => float */
+int       WARNING_EVECS = 2;	/* Warnings in eigenvector generation (0..3) */
+double    WARNING_ORTHTOL = 2;	/* Warning if Ares and bjitol have this ratio */
+double    WARNING_MISTOL = 100;	/* Warning if Ares and bjitol have this ratio */
+int       LANCZOS_TIME = FALSE;	/* Detailed Lanczos times? (TRUE/FALSE) */
+int       TIME_KERNELS = FALSE;	/* Time numerical kernels? (TRUE/FALSE) */
+
+/* Other parameters for spectral methods */
+
+int       MAKE_CONNECTED = TRUE;/* Connect graph if using spectral method? */
+int       PERTURB = TRUE;	/* Randomly perturb matrix in spectral method? */
+int       NPERTURB = 2;		/* If so, how many edges to modify? */
+double    PERTURB_MAX = 3.0e-3;	/* Largest value for perturbation */
+int       MAPPING_TYPE = 1;	/* How to map from eigenvectors to partition */
+				/* 0 => cut at origin, 1 => min-cost assign */
+int       COARSE_NLEVEL_RQI = 2;/* # levels between RQI calls in uncoarsening */
+int       OPT3D_NTRIES = 5;	/* # local opts to look for global min in opt3d */
+
+/* Kernighan--Lin/Fiduccia--Mattheyses parameters */
+
+int       KL_METRIC = 2;	/* KL interset cost: 1=>cuts, 2=>hops */
+int       KL_RANDOM = TRUE;	/* Use randomness in Kernighan-Lin? (TRUE/FALSE)*/
+int       KL_BAD_MOVES = 20;	/* Number of unhelpful moves in a row allowed */
+int       KL_NTRIES_BAD = 1;	/* # unhelpful passes before quitting KL */
+int       KL_UNDO_LIST = TRUE;	/* Only resort changed vtxs? (TRUE/FALSE) */
+double    KL_IMBALANCE = 0.0;	/* Fractional imbalance allowed by KL */
+
+/* Coarsening parameters */
+
+double    COARSEN_RATIO_MIN = .7;  /* Min vtx reduction each coarsen stage */
+int       COARSE_NLEVEL_KL = 2;	   /* # levels between KL calls in uncoarsening */
+int       MATCH_TYPE = 1;	   /* Type of contraction matching (1..4) */
+int       HEAVY_MATCH = FALSE;	   /* Encourage heavy match edges? (TRUE/FALSE) */
+int       COARSE_KL_BOTTOM = TRUE; /* Force KL at lowest level (TRUE/FALSE) */
+int       COARSEN_VWGTS = TRUE;	   /* Sum vtx weights in coarsening? (TRUE/FALSE) */
+int       COARSEN_EWGTS = TRUE;	   /* Sum edge weights in coarsening? (TRUE/FALSE) */
+int       KL_ONLY_BNDY = TRUE;	   /* Start moving vtxs on boundary? (TRUE/FALSE) */
+
+/* Parameters for post-processing options */
+
+int       REFINE_PARTITION = FALSE;	/* Postprocess to improve cuts? */
+int       INTERNAL_VERTICES = FALSE;	/* ... to up internal vtxs? (TRUE/FALSE) */
+int       REFINE_MAP = FALSE;		/* ... to reduce hops? (TRUE/FALSE) */
+
+/* Architecture and simulator parameters */
+
+int       ARCHITECTURE = 0;	/* 0=> hypercube, d=> d-dimensional mesh (0..3)*/
+
+/* Modified by Tim Davis:  remove duplicate definitions */
+#ifdef DUPLICATE_DEFINITIONS_REMOVED
+int       SIMULATOR = 0;	/* Run simulator? In what mode? */
+int       SIMULATION_ITNS = 1;	/* # iterations simulator is to imitate. */
+int       PERCENTAGE_OUTPUT = FALSE;	/* Output in percent? (TRUE/FALSE) */
+double    CUT_COST = 0.0;	/* Communication cost of a cut-edge. */
+double    HOP_COST = 0.0;	/* Communication cost of a hop. */
+double    BDY_COST = 0.0;	/* Cost associated with boundary vertices.  */
+double    BDY_HOP_COST = 0.0;	/* Cost associated with boundary hops. */
+double    STARTUP_COST = 0.0;	/* Communication cost of a message startup. */
+	/* Note: nCUBE2 startup: 112e-6, per byte: 4.6e-6, buffering 5.6e-6 */
+	/* Intel Paragon startup: 70e-6, per byte: 5.3e-8 */
+#endif
+
+/* Miscellaneous parameters */
+
+int       TERM_PROP = FALSE;	/* Invoke terminal propagation? (TRUE/FALSE) */
+double    CUT_TO_HOP_COST = 1;	/* ..if so, relative importance of cuts/hops */
+int       SEQUENCE = FALSE;	/* Only do spectral ordering? (TRUE/FALSE) */
+char      SEQ_FILENAME[NAME_LENGTH] = "Sequence.out";	/* If so, file name */
+long      RANDOM_SEED = 7654321L;	/* Seed for random number generator */
+int       NSQRTS = 1000;	/* # square roots to precompute if coarsening */
+int       MAKE_VWGTS = FALSE;	/* Make vtx weights degrees+1? (TRUE/FALSE) */
+int       FREE_GRAPH = FALSE;	/* Free input graph data? (TRUE/FALSE) */
+char     *PARAMS_FILENAME = "User_Params";	/* File of parameter changes */
+
+/* Parameters that control debugging output */
+
+int       DEBUG_EVECS = 0;	/* Debug flag for eigenvector generation (0..5) */
+int       DEBUG_KL = 0;		/* Debug flag for Kernighan-Lin (0..3) */
+int       DEBUG_INERTIAL = 0;	/* Debug flag for inertial method (0..1) */
+int       DEBUG_CONNECTED = 0;	/* Debug flag for connected components (0..1) */
+int       DEBUG_PERTURB = 0;	/* Debug flag for matrix perturbation (0..1) */
+int       DEBUG_ASSIGN = 0;	/* Debug flag for assignment to sets (0..1) */
+int       DEBUG_OPTIMIZE = 0;	/* Debug flag for optimization/rotation (0..2) */
+int       DEBUG_BPMATCH = 0;	/* Debug flag for bipartite matching code (0..2) */
+int       DEBUG_COARSEN = 0;	/* Debug flag for coarsening/uncoarsening (0..1) */
+int       DEBUG_MEMORY = 0;	/* Debug flag for smalloc/sfree (0..3) */
+int       DEBUG_INPUT = 0;	/* Debug flag for having read input files (0..1) */
+int       DEBUG_PARAMS = 1;	/* Debug flag for reading parameter file (0..2) */
+int       DEBUG_INTERNAL = 0;	/* Debug flag for internal vertices (0..2) */
+int       DEBUG_REFINE_PART = 0;/* Debug flag for refine partition (0..1) */
+int       DEBUG_REFINE_MAP = 0;	/* Debug flag for refining mapping (0..1) */
+int       DEBUG_SIMULATOR = 0;	/* Debug flag for comm simulator (0..2) */
+int       DEBUG_TRACE = 0;	/* Trace main execution path (0..2) */
+int       DEBUG_MACH_PARAMS = 0;/* Print computed machine params? (0..1) */
+
+#endif //ifdef _HAVE_CHACO_ 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.cpp	(revision 21239)
@@ -0,0 +1,42 @@
+/*!\file ConfigureObjectsx
+ * \brief: configure objects in elements and loads to link in with nodes
+ */
+
+#include "./ConfigureObjectsx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+
+int	ConfigureObjectsx( Elements* elements, Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters){
+
+	/*Intermediary*/
+	int       i;
+	int       noerr = 1;
+	int       configuration_type;
+	Element  *element            = NULL;
+	Load     *load               = NULL;
+	Material *material           = NULL;
+
+	/*Get analysis type: */
+	parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+
+	if(VerboseMProcessor()) _printf0_("      Configuring elements...\n");
+	for(i=0;i<elements->Size();i++){
+		element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		element->Configure(elements,loads,nodes,vertices,materials,parameters);
+	}
+	if(VerboseMProcessor()) _printf0_("      Configuring loads...\n");
+	for(i=0;i<loads->Size();i++){
+		load=(Load*)loads->GetObjectByOffset(i);
+		if (load->InAnalysis(configuration_type)){
+			load->Configure(elements,loads,nodes,vertices,materials,parameters);
+		}
+	}
+	if(VerboseMProcessor()) _printf0_("      Configuring materials...\n");
+	for(i=0;i<materials->Size();i++){
+		material=(Material*)materials->GetObjectByOffset(i);
+		material->Configure(elements);
+	}
+	return noerr;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  ConfigureObjectsx.h
+ * \brief header file for degree of freedoms distribution routines.
+ */ 
+
+#ifndef _CONFIGUREOBJECTSX_H
+#define _CONFIGUREOBJECTSX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+int ConfigureObjectsx( Elements* elements, Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials, Parameters* parameters);
+
+#endif  /* _CONFIGUREOBJECTSX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ConstraintsStatex/ConstraintsStateLocal.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ConstraintsStatex/ConstraintsStateLocal.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ConstraintsStatex/ConstraintsStateLocal.h	(revision 21239)
@@ -0,0 +1,23 @@
+/*!\file:  ConstraintsStateLocal.h
+ * \brief local header files
+ */ 
+
+#ifndef _CONSTRAINTSSTATELOCAL_H
+#define _CONSTRAINTSSTATELOCAL_H
+
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../classes/classes.h"
+
+/*rifts module: */
+void RiftConstraintsState(int* pconverged, int* pnum_unstable_constraints,Loads* loads,int min_mechanical_constraints,int analysis_type);
+void RiftConstrain(int* pnum_unstable_constraints,Loads* loads,int analysis_type);
+int  RiftIsFrozen(Loads* loads,int analysis_type);
+void RiftFreezeConstraints(Loads* loads,int analysis_type);
+
+#endif  /* _CONSTRAINTSSTATEX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ConstraintsStatex/ConstraintsStatex.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ConstraintsStatex/ConstraintsStatex.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ConstraintsStatex/ConstraintsStatex.cpp	(revision 21239)
@@ -0,0 +1,53 @@
+/*!\file ConstraintsStatex
+ * \brief: set up penalty constraints on loads
+ */
+
+#include "./ConstraintsStatex.h"
+#include "./ConstraintsStateLocal.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void ConstraintsStatex(int* pconverged, int* pnum_unstable_constraints,FemModel* femmodel){
+
+	/*output: */
+	int converged                     = 1;
+	int num_unstable_constraints      = 0;
+	int min_mechanical_constraints    = 0;
+	int  unstable                     = 0;
+	int  sum_num_unstable_constraints = 0;
+	int analysis_type;
+
+	/*Display message*/
+	if(VerboseModule()) _printf0_("   Constraining penalties\n");
+
+	/*recover parameters: */
+	femmodel->parameters->FindParam(&min_mechanical_constraints,StressbalanceRiftPenaltyThresholdEnum);
+	femmodel->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	/*Rift penalties first*/
+	if(RiftIsPresent(femmodel->loads,analysis_type)){
+		RiftConstraintsState(&converged,&num_unstable_constraints,femmodel->loads,min_mechanical_constraints,analysis_type);
+	}
+
+	/*Deal with pengrid*/
+	for(int i=0;i<femmodel->loads->Size();i++){
+		Load* load=(Load*)femmodel->loads->GetObjectByOffset(i);
+		if(load->InAnalysis(analysis_type)){
+			if(load->ObjectEnum()==PengridEnum){
+				Pengrid* pengrid=(Pengrid*)load;
+				pengrid->ConstraintActivate(&unstable);
+				num_unstable_constraints += unstable;
+			}
+		}
+	}
+	ISSM_MPI_Reduce(&num_unstable_constraints,&sum_num_unstable_constraints,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&sum_num_unstable_constraints,1,ISSM_MPI_INT,0,IssmComm::GetComm());                
+	num_unstable_constraints=sum_num_unstable_constraints;
+
+	/*Have we converged? : */
+	if(num_unstable_constraints) converged=0;
+
+	/*Assign output pointers: */
+	*pconverged                = converged;
+	*pnum_unstable_constraints = num_unstable_constraints;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ConstraintsStatex/ConstraintsStatex.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ConstraintsStatex/ConstraintsStatex.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ConstraintsStatex/ConstraintsStatex.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  ConstraintsStatex.h
+ * \brief header file for penalty constraints module
+ */ 
+
+#ifndef _CONSTRAINTSSTATEX_H
+#define _CONSTRAINTSSTATEX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+int  RiftIsPresent(Loads* loads,int analysis_type);
+void ConstraintsStatex(int* pconverged, int* pnum_unstable_constraints,FemModel* femmodel);
+
+#endif  /* _CONSTRAINTSSTATEX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ConstraintsStatex/RiftConstraintsState.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ConstraintsStatex/RiftConstraintsState.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ConstraintsStatex/RiftConstraintsState.cpp	(revision 21239)
@@ -0,0 +1,160 @@
+/*!\file RiftConstraintsState.cpp
+ * \brief: manage penalties for rifts 
+ */
+
+#include "./ConstraintsStateLocal.h"
+#include "../../shared/shared.h"
+
+#define _ZIGZAGCOUNTER_
+
+/*current module: */
+/*RiftIsPresent(Loads* loads,int configuration_type){{{*/
+int RiftIsPresent(Loads* loads,int configuration_type){
+
+	int i;
+
+	int found=0;
+	int mpi_found=0;
+
+	/*go though loads, and figure out if one of the loads is a Riftfront: */
+	for (i=0;i<loads->Size();i++){
+		Load* load=(Load*)loads->GetObjectByOffset(i);
+		if(load->InAnalysis(configuration_type)){
+			if(RiftfrontEnum==loads->GetEnum(i)){
+				found=1;
+				break;
+			}
+		}
+	}
+
+	ISSM_MPI_Reduce (&found,&mpi_found,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&mpi_found,1,ISSM_MPI_INT,0,IssmComm::GetComm());                
+	found=mpi_found;
+
+	return found;
+}
+/*}}}*/
+/*RiftConstraintsState(int* pconverged, int* pnum_unstable_constraints,Loads* loads,int min_mechanical_constraints,int configuration_type){{{*/
+void RiftConstraintsState(int* pconverged, int* pnum_unstable_constraints,Loads* loads,int min_mechanical_constraints,int configuration_type){
+
+	int num_unstable_constraints=0;
+	int converged=0;
+
+	RiftConstrain(&num_unstable_constraints,loads,configuration_type);
+	if(num_unstable_constraints==0)converged=1;
+
+	if(RiftIsFrozen(loads,configuration_type)){
+		converged=1;
+		num_unstable_constraints=0;
+	}
+	else if(num_unstable_constraints<=min_mechanical_constraints){
+		if(VerboseModule()) _printf0_("   freezing constraints\n");
+		RiftFreezeConstraints(loads,configuration_type);
+	}
+
+	/*Assign output pointers: */
+	*pconverged=converged;
+	*pnum_unstable_constraints=num_unstable_constraints;
+}
+/*}}}*/
+/*RiftConstrain(int* pnum_unstable_constraints,Loads* loads,int configuration_type){{{*/
+void RiftConstrain(int* pnum_unstable_constraints,Loads* loads,int configuration_type){
+
+	int			i;
+
+	/* generic object pointer: */
+	Riftfront* riftfront=NULL;
+	Load*      load=NULL;
+
+	int unstable;
+	int sum_num_unstable_constraints;
+	int num_unstable_constraints=0;	
+
+	/*Enforce constraints: */
+	for (i=0;i<loads->Size();i++){
+
+		if (RiftfrontEnum==loads->GetEnum(i)){
+
+			load=(Load*)loads->GetObjectByOffset(i);
+			if(load->InAnalysis(configuration_type)){
+
+				riftfront=(Riftfront*)load;
+
+				riftfront->Constrain(&unstable);
+
+				num_unstable_constraints+=unstable;
+			}
+		}
+	}
+
+	ISSM_MPI_Reduce (&num_unstable_constraints,&sum_num_unstable_constraints,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&sum_num_unstable_constraints,1,ISSM_MPI_INT,0,IssmComm::GetComm());                
+	num_unstable_constraints=sum_num_unstable_constraints;
+
+	/*Assign output pointers: */
+	*pnum_unstable_constraints=num_unstable_constraints;
+
+}
+/*}}}*/
+/*RiftIsFrozen(Loads* loads,int configuration_type){{{*/
+int RiftIsFrozen(Loads* loads,int configuration_type){
+
+	int			i;
+
+	/* generic object pointer: */
+	Load*      load=NULL;
+	Riftfront* riftfront=NULL;
+	int found=0;
+	int mpi_found=0;
+
+	/*Enforce constraints: */
+	for (i=0;i<loads->Size();i++){
+
+		if (RiftfrontEnum==loads->GetEnum(i)){
+
+			load=(Load*)loads->GetObjectByOffset(i);
+			if(load->InAnalysis(configuration_type)){
+
+				riftfront=(Riftfront*)load;
+				if (riftfront->IsFrozen()){
+					found=1;
+					break;
+				}
+			}
+		}
+	}
+
+	/*Is there just one found? that would mean we have frozen! : */
+	ISSM_MPI_Reduce (&found,&mpi_found,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&mpi_found,1,ISSM_MPI_INT,0,IssmComm::GetComm());                
+	found=mpi_found;
+
+	return found;
+}
+/*}}}*/
+/*RiftFreezeConstraints(Loads* loads,int configuration_type){{{*/
+void RiftFreezeConstraints(Loads* loads,int configuration_type){
+
+	int			i;
+
+	/* generic object pointer: */
+	Load*      load=NULL;
+	Riftfront* riftfront=NULL;
+
+	/*Enforce constraints: */
+	for (i=0;i<loads->Size();i++){
+
+		if (RiftfrontEnum==loads->GetEnum(i)){
+
+			load=(Load*)loads->GetObjectByOffset(i);
+			if(load->InAnalysis(configuration_type)){
+
+				riftfront=(Riftfront*)load;
+				riftfront->FreezeConstraints();
+			}
+
+		}
+	}
+
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ContourToMeshx/ContourToMeshx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ContourToMeshx/ContourToMeshx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ContourToMeshx/ContourToMeshx.cpp	(revision 21239)
@@ -0,0 +1,49 @@
+/*! \file  ContourToMeshx.c
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./ContourToMeshx.h"
+
+int ContourToMeshx(double** pin_nod,double** pin_elem, double* index, double* x, double* y,Contours* contours,char* interptype,int nel,int nods, int edgevalue) {
+
+	/*Contour:*/
+	double value;
+
+	/*output: */
+	double*  in_nod;
+	double*  in_elem;
+	in_nod   = xNewZeroInit<double>(nods);
+	in_elem  = xNewZeroInit<double>(nel);
+
+	/*initialize thread parameters: */
+	ContourToMeshxThreadStruct gate;
+	gate.contours  = contours;
+	gate.nods      = nods;
+	gate.edgevalue = edgevalue;
+	gate.in_nod    = in_nod;
+	gate.x         = x;
+	gate.y         = y;
+
+	/*launch the thread manager with ContourToMeshxt as a core: */
+	LaunchThread(ContourToMeshxt,(void*)&gate,_NUMTHREADS_);
+
+	/*Take care of the case where an element interpolation has been requested: */
+	if ((strcmp(interptype,"element")==0) || (strcmp(interptype,"element and node")==0)){
+		for(int n=0;n<nel;n++){
+			if ( (in_nod[ (int)*(index+3*n+0) -1] == 1) && (in_nod[ (int)*(index+3*n+1) -1] == 1) && (in_nod[ (int)*(index+3*n+2) -1] == 1) ){
+				value=1.; in_elem[n]=value;
+			}
+		}
+	}
+
+	/*Assign output pointers: */
+	*pin_nod=in_nod;
+	*pin_elem=in_elem;
+
+	return 1;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ContourToMeshx/ContourToMeshx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ContourToMeshx/ContourToMeshx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ContourToMeshx/ContourToMeshx.h	(revision 21239)
@@ -0,0 +1,28 @@
+/*
+	ContourToMeshx.h
+*/
+
+#ifndef _CONTOURTOMESHX_H
+#define _CONTOURTOMESHX_H
+
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+
+/*threading: */
+typedef struct{
+
+	Contours *contours;
+	int       nods;
+	int       edgevalue;
+	double   *in_nod;
+	double   *x;
+	double   *y;
+
+} ContourToMeshxThreadStruct;
+
+/* local prototypes: */
+int ContourToMeshx(double** pin_nods,double** pin_elem, double* index, double* x, double* y,Contours* contours,char* interptype,int nel,int nods, int edgevalue);
+
+void* ContourToMeshxt(void* vContourToMeshxThreadStruct);
+
+#endif /* _CONTOURTOMESHX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ContourToMeshx/ContourToMeshxt.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ContourToMeshx/ContourToMeshxt.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ContourToMeshx/ContourToMeshxt.cpp	(revision 21239)
@@ -0,0 +1,44 @@
+/*!\file:  ContourToMeshxt.cpp
+ * \brief  "thread" core code for interpolating values from a structured grid.
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./ContourToMeshx.h"
+
+void* ContourToMeshxt(void* vpthread_handle){
+
+	/*gate variables :*/
+	ContourToMeshxThreadStruct *gate        = NULL;
+	pthread_handle             *handle      = NULL;
+	int  i,i1,i0;
+
+	/*recover handle and gate: */
+	handle          = (pthread_handle*)vpthread_handle;
+	gate            = (ContourToMeshxThreadStruct*)handle->gate;
+	int my_thread   = handle->id;
+	int num_threads = handle->num;
+
+	/*recover parameters :*/
+	Contours* contours  = gate->contours;
+	int       nods      = gate->nods;
+	int       edgevalue = gate->edgevalue;
+	double   *in_nod    = gate->in_nod;
+	double   *x         = gate->x;
+	double   *y         = gate->y;
+
+	/*distribute indices across threads :*/
+	PartitionRange(&i0,&i1,nods,num_threads,my_thread);
+
+	/*Loop through all contours: */
+	for (i=0;i<contours->Size();i++){
+		Contour<double>* contour=(Contour<double>*)contours->GetObjectByOffset(i);
+		IsInPoly(in_nod,contour->x,contour->y,contour->nods,x,y,i0,i1,edgevalue);
+	}
+
+	return NULL;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ContourToNodesx/ContourToNodesx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ContourToNodesx/ContourToNodesx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ContourToNodesx/ContourToNodesx.cpp	(revision 21239)
@@ -0,0 +1,51 @@
+/*! \file  ContourToNodesx.c
+ */
+
+#include "./ContourToNodesx.h"
+
+int ContourToNodesx(IssmPDouble** pflags,double* x, double* y, int nods, Contour<IssmPDouble>** contours,int numcontours,int edgevalue){
+
+	int i;
+
+	/*Contour:*/
+	Contour<IssmPDouble>* contouri=NULL;
+	int      numnodes;
+	double*  xc=NULL;
+	double*  yc=NULL;
+
+	/*output: */
+	IssmPDouble* flags=NULL;
+	flags=xNew<IssmPDouble>(nods);
+
+	/*Loop through all contours: */
+	for (i=0;i<numcontours;i++){
+		contouri=*(contours+i);
+		numnodes=contouri->nods;
+		xc=contouri->x;
+		yc=contouri->y;
+		IsInPoly(flags,xc,yc,numnodes,x,y,0,nods,edgevalue);
+	}
+
+	/*Assign output pointers: */
+	*pflags=flags;
+	return 1;
+}
+
+int ContourToNodesx(IssmPDouble** pflags,double* x, double* y, int nods, Contours* contours, int edgevalue){
+
+	/*output: */
+	IssmPDouble* flags=NULL;
+	flags=xNewZeroInit<IssmPDouble>(nods);
+
+	/*Loop through all contours: */
+	if(contours){
+		for(int i=0;i<contours->Size();i++){
+			Contour<IssmPDouble>* contour=(Contour<IssmPDouble>*)contours->GetObjectByOffset(i);
+			IsInPoly(flags,contour->x,contour->y,contour->nods,x,y,0,nods,edgevalue);
+		}
+	}
+
+	/*Assign output pointers: */
+	*pflags=flags;
+	return 1;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ContourToNodesx/ContourToNodesx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ContourToNodesx/ContourToNodesx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ContourToNodesx/ContourToNodesx.h	(revision 21239)
@@ -0,0 +1,15 @@
+/*
+	ContourToNodesx.h
+*/
+
+#ifndef _CONTOURTONODESX_H
+#define _CONTOURTONODESX_H
+
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+int ContourToNodesx(IssmPDouble** pflags,double* x, double* y, int nods, Contour<IssmPDouble>** contours,int numcontours,int edgevalue);
+int ContourToNodesx(IssmPDouble** pflags,double* x, double* y, int nods, Contours* contours, int edgevalue);
+
+#endif /* _CONTOURTONODESX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ControlInputSetGradientx/ControlInputSetGradientx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ControlInputSetGradientx/ControlInputSetGradientx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ControlInputSetGradientx/ControlInputSetGradientx.cpp	(revision 21239)
@@ -0,0 +1,40 @@
+/*!\file ControlInputSetGradientx
+ * \brief retrieve gradient from inputs in elements
+ */
+
+#include "./ControlInputSetGradientx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void ControlInputSetGradientx(Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,IssmDouble* gradient){
+
+	/*Intermediaries*/
+	int  num_controls;
+	int *control_type = NULL;
+
+	/*Retrieve some parameters*/
+	parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	parameters->FindParam(&control_type,NULL,InversionControlParametersEnum);
+
+	for(int i=0;i<num_controls;i++){
+		for(int j=0;j<elements->Size();j++){
+			Element* element=(Element*)elements->GetObjectByOffset(j);
+			element->ControlInputSetGradient(gradient,control_type[i],i);
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(control_type);
+
+}
+void ControlInputSetGradientx(Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,Vector<IssmDouble>* gradient){
+
+	/*Serialize gradient*/
+	IssmDouble* serial_gradient=NULL;
+	serial_gradient=gradient->ToMPISerial();
+
+	ControlInputSetGradientx(elements,nodes,vertices, loads, materials, parameters,serial_gradient);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(serial_gradient);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ControlInputSetGradientx/ControlInputSetGradientx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ControlInputSetGradientx/ControlInputSetGradientx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ControlInputSetGradientx/ControlInputSetGradientx.h	(revision 21239)
@@ -0,0 +1,12 @@
+/*!\file:  ControlInputSetGradientx.h
+ */ 
+
+#ifndef _CONTROLINPUTSSETGRADIENTX_H
+#define _CONTROLINPUTSSETGRADIENTX_H
+
+#include "../../classes/classes.h"
+
+void	ControlInputSetGradientx(Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials,  Parameters* parameters,IssmDouble* gradient);
+void	ControlInputSetGradientx(Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials,  Parameters* parameters,Vector<IssmDouble>* gradient);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/CoordinateSystemTransformx/CoordinateSystemTransformx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/CoordinateSystemTransformx/CoordinateSystemTransformx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/CoordinateSystemTransformx/CoordinateSystemTransformx.cpp	(revision 21239)
@@ -0,0 +1,40 @@
+/*!\file TriMeshx
+ * \brief: x code for TriMesh mesher
+ */
+
+/*Header files*/
+#include "./CoordinateSystemTransformx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include <proj_api.h>
+
+void CoordinateSystemTransformx(IssmDouble** px_dest,IssmDouble** py_dest,IssmDouble* x_src,IssmDouble* y_src,int size,const char* str_src,const char* str_dst){
+
+#if !defined(_HAVE_PROJ4_)
+	_error_("proj.4 has not been installed");
+#else
+
+	/*Allocate output and initialize values as src*/
+	_assert_(size>0);
+	IssmDouble* x_dest = xNew<IssmDouble>(size);
+	IssmDouble* y_dest = xNew<IssmDouble>(size);
+	for(int i=0;i<size;i++){
+		x_dest[i] = x_src[i];
+		y_dest[i] = y_src[i];
+	}
+
+	/*Create proj.4 projection objects for src and dst*/
+	projPJ pj_src  = pj_init_plus(str_src);
+	projPJ pj_dst  = pj_init_plus(str_dst);
+	if(!pj_src) _error_("Failed to initialize PROJ.4 with source projection \""    <<str_src<<"\"\n");
+	if(!pj_dst) _error_("Failed to initialize PROJ.4 with destination projection\""<<str_dst<<"\"\n");
+
+	/*Perform transformation*/
+	int p = pj_transform(pj_src,pj_dst,size,1,x_dest,y_dest,NULL);
+	if(p!=0) _error_("Reprojection failed, PROJ.4 error code: "<<p<<"\n");
+
+	/*Output : */
+	*px_dest=x_dest;
+	*py_dest=y_dest;
+#endif
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/CoordinateSystemTransformx/CoordinateSystemTransformx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/CoordinateSystemTransformx/CoordinateSystemTransformx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/CoordinateSystemTransformx/CoordinateSystemTransformx.h	(revision 21239)
@@ -0,0 +1,11 @@
+/*!\file:  CoordinateSystemTransformx.h
+ */ 
+
+#ifndef _CORRDSYSTRANFER_
+#define _CORRDSYSTRANFER_
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void CoordinateSystemTransformx(IssmDouble** px_dest,IssmDouble** py_dest,IssmDouble* x_src,IssmDouble* y_src,int size,const char* str_src,const char* str_dst);
+#endif  
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.cpp	(revision 21239)
@@ -0,0 +1,47 @@
+/*!\file CreateJacobianMatrixx
+ * \brief retrieve vector from inputs in elements
+ */
+
+#include "./CreateJacobianMatrixx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../AllocateSystemMatricesx/AllocateSystemMatricesx.h"
+
+void CreateJacobianMatrixx(Matrix<IssmDouble>** pJff,FemModel* femmodel,IssmDouble kmax){
+
+	int      i;
+	int      configuration_type,analysisenum;
+	Element *element = NULL;
+	Load    *load    = NULL;
+	Matrix<IssmDouble>* Jff = NULL;
+
+	/*Checks*/
+	_assert_(femmodel && femmodel->nodes && femmodel->elements);
+
+	/*Recover some parameters*/
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	femmodel->parameters->FindParam(&analysisenum,AnalysisTypeEnum);
+	Analysis* analysis = EnumToAnalysis(analysisenum);
+
+	/*Initialize Jacobian Matrix*/
+	AllocateSystemMatricesx(&Jff,NULL,NULL,NULL,femmodel);
+
+	/*Create and assemble matrix*/
+	for(i=0;i<femmodel->elements->Size();i++){
+		element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		ElementMatrix* Je = analysis->CreateJacobianMatrix(element);
+		if(Je) Je->AddToGlobal(Jff);
+		delete Je;
+	}
+	for (i=0;i<femmodel->loads->Size();i++){
+		load=(Load*)femmodel->loads->GetObjectByOffset(i);
+		if(load->InAnalysis(configuration_type)) load->CreateJacobianMatrix(Jff);
+		if(load->InAnalysis(configuration_type)) load->PenaltyCreateJacobianMatrix(Jff,kmax);
+	}
+	Jff->Assemble();
+
+	/*Assign output pointer*/
+	delete analysis;
+	*pJff=Jff;
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  CreateJacobianMatrixx.h
+*/ 
+
+#ifndef _CREATEJACOBIANMATRIXX_H
+#define _CREATEJACOBIANMATRIXX_H
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+/* local prototypes: */
+void CreateJacobianMatrixx(Matrix<IssmDouble>** pJff,FemModel* femmodel,IssmDouble kmax);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/CreateNodalConstraintsx/CreateNodalConstraintsx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/CreateNodalConstraintsx/CreateNodalConstraintsx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/CreateNodalConstraintsx/CreateNodalConstraintsx.cpp	(revision 21239)
@@ -0,0 +1,45 @@
+/*!\file CreateNodalConstraintsx
+ * \brief: establish degrees of freedom for all nodes, and return partitioning vector. Do only once.
+ */
+
+#include "./CreateNodalConstraintsx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void CreateNodalConstraintsx( Vector<IssmDouble>** pys, Nodes* nodes,int configuration_type){
+
+	bool  oldalloc  = false;
+
+	/*output: */
+	Vector<IssmDouble>* ys=NULL;
+	int ssize;
+	int slocalsize;
+
+	if(VerboseModule()) _printf0_("   Create nodal constraints\n");
+
+	/*figure out how many dofs we have: */
+	ssize=nodes->NumberOfDofs(configuration_type,SsetEnum);
+	slocalsize = nodes->NumberOfDofsLocal(configuration_type,SsetEnum);
+
+	/*allocate:*/
+	if(oldalloc)
+	 ys=new Vector<IssmDouble>(ssize);
+	else
+	 ys=new Vector<IssmDouble>(slocalsize,ssize);
+
+	/*go through all nodes, and for the ones corresponding to this configuration_type, fill the 
+	 * constraints vector with the constraint values: */
+	for(int i=0;i<nodes->Size();i++){
+		Node* node=(Node*)nodes->GetObjectByOffset(i);
+		if (node->InAnalysis(configuration_type)){
+			node->CreateNodalConstraints(ys);
+		}
+	}
+
+	/*Assemble: */
+	ys->Assemble();
+
+	/*Assign output pointers: */
+	*pys=ys;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/CreateNodalConstraintsx/CreateNodalConstraintsx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/CreateNodalConstraintsx/CreateNodalConstraintsx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/CreateNodalConstraintsx/CreateNodalConstraintsx.h	(revision 21239)
@@ -0,0 +1,12 @@
+/*!\file:  CreateNodalConstraintsx.h
+ */ 
+
+#ifndef _CREATENODALCONSTRAINTSX_H
+#define _CREATENODALCONSTRAINTSX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void CreateNodalConstraintsx( Vector<IssmDouble>** pys, Nodes* nodes,int configuration_type);
+
+#endif  /* _CREATENODALCONSTRAINTSX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Damagex/Damagex.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Damagex/Damagex.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Damagex/Damagex.cpp	(revision 21239)
@@ -0,0 +1,29 @@
+/*!\file Damagex
+ * \brief: compute damage
+ */
+
+#include "./Damagex.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void Damagex(FemModel* femmodel){
+
+	/*Recover Damage law Enum*/
+	int damagelaw;
+	femmodel->parameters->FindParam(&damagelaw,DamageLawEnum);
+
+	/*Calculate damage*/
+	switch(damagelaw){
+		case 0:
+			if(VerboseModule()) _printf0_("   computing damage analytically\n");
+			femmodel->ElementOperationx(&Element::ComputeNewDamage);
+			break;
+		case 1:
+		case 2:
+			if(VerboseModule()) _printf0_("   computing damage using source term in advection scheme\n");
+			/* Damage calculated using source term in DamageEvolutionAnalysis */
+			break;
+		default:
+			_error_("Damage law "<<EnumToStringx(damagelaw)<<" not implemented yet");
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Damagex/Damagex.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Damagex/Damagex.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Damagex/Damagex.h	(revision 21239)
@@ -0,0 +1,10 @@
+#ifndef _DAMAGEX_H
+#define _DAMAGEX_H
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+/* local prototypes: */
+void Damagex(FemModel* femmodel);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.cpp	(revision 21239)
@@ -0,0 +1,35 @@
+/*! \file  DistanceToMaskBoundaryx.c
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./DistanceToMaskBoundaryx.h"
+
+int DistanceToMaskBoundaryx(IssmDouble** pdistance,IssmDouble* x, IssmDouble* y, IssmDouble* mask, int nods) {
+
+	/*output: */
+	IssmDouble*  distance;
+
+	/*initialize: */
+	distance=xNew<IssmDouble>(nods);
+
+	/*initialize thread parameters: */
+	DistanceToMaskBoundaryxThreadStruct gate;
+	gate.distance    = distance;
+	gate.x         = x;
+	gate.y         = y;
+	gate.mask         = mask;
+	gate.nods      = nods;
+
+	/*launch the thread manager with DistanceToMaskBoundaryxt as a core: */
+	LaunchThread(DistanceToMaskBoundaryxt,(void*)&gate,_NUMTHREADS_);
+
+	/*Assign output pointers: */
+	*pdistance=distance;
+
+	return 1;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.h	(revision 21239)
@@ -0,0 +1,27 @@
+/*
+	DistanceToMaskBoundaryx.h
+*/
+
+#ifndef _DISTANCETOMASKBOUNDARYX_H
+#define _DISTANCETOMASKBOUNDARYX_H
+
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+
+/*threading: */
+typedef struct{
+
+	int       nods;
+	IssmDouble   *distance;
+	IssmDouble   *x;
+	IssmDouble   *y;
+	IssmDouble   *mask;
+
+} DistanceToMaskBoundaryxThreadStruct;
+
+/* local prototypes: */
+int DistanceToMaskBoundaryx(IssmDouble** pdistance,IssmDouble* x, IssmDouble* y, IssmDouble* mask, int nods);
+
+void* DistanceToMaskBoundaryxt(void* vDistanceToMaskBoundaryxThreadStruct);
+
+#endif /* _DISTANCETOMASKBOUNDARYX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryxt.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryxt.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryxt.cpp	(revision 21239)
@@ -0,0 +1,80 @@
+/*!\file:  DistanceToMaskBoundaryxt.cpp
+ * \brief  "thread" core code 
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./DistanceToMaskBoundaryx.h"
+
+void* DistanceToMaskBoundaryxt(void* vpthread_handle){
+
+	/*gate variables :*/
+	DistanceToMaskBoundaryxThreadStruct *gate        = NULL;
+	pthread_handle             *handle      = NULL;
+	int  i,j,i0,i1;
+
+	/*recover handle and gate: */
+	handle          = (pthread_handle*)vpthread_handle;
+	gate            = (DistanceToMaskBoundaryxThreadStruct*)handle->gate;
+	int my_thread   = handle->id;
+	int num_threads = handle->num;
+
+	/*recover parameters :*/
+	int       nods      = gate->nods;
+	IssmDouble   *distance    = gate->distance;
+	IssmDouble   *x         = gate->x;
+	IssmDouble   *y         = gate->y;
+	IssmDouble   *mask         = gate->mask;
+
+	/*distribute indices across threads :*/
+	PartitionRange(&i0,&i1,nods,num_threads,my_thread);
+
+	/*Loop through vertices: */
+	for(i=i0;i<i1;i++){
+
+		IssmDouble d0=pow(10.,10);
+
+		IssmDouble xi,yi;
+		
+		//recover vertex position: 
+		xi=x[i];  yi=y[i];
+
+		//figure out if we are inside the mask, or outside: 
+		if(mask[i]==1){
+			//we are inside, look for nearest vertex that is outside the mask: 
+			for(j=0;j<nods;j++){
+				if(j==i)continue;
+				if (mask[j]==0){
+					IssmDouble xj,yj,deltaphi,deltalambda,d;
+					xj=x[j]; yj=y[j];
+					/*figure  out the distance to xi,yi in lat,long mode, using the greatest circle distance:*/
+					deltaphi=fabs(xj-xi); deltalambda=fabs(yj-yi);
+					d=2*asin(sqrt(pow(sin(deltaphi/2),2)+cos(xi)*cos(xj)*pow(sin(deltalambda/2),2)));
+					if(d<d0)d0=d;
+				}
+			}
+			distance[i]=d0;
+		}
+		else{
+			//we are outside, look for nearest vertex that is inside the mask: 
+			for(j=0;j<nods;j++){
+				if(j==i)continue;
+				if (mask[j]==1){
+					IssmDouble xj,yj,deltaphi,deltalambda,d;
+					xj=x[j]; yj=y[j];
+					/*figure  out the distance to xi,yi in lat,long mode, using the greatest circle distance:*/
+					deltaphi=fabs(xj-xi); deltalambda=fabs(yj-yi);
+					d=2*asin(sqrt(pow(sin(deltaphi/2),2)+cos(xi)*cos(xj)*pow(sin(deltalambda/2),2)));
+					if(d<d0)d0=d;
+				}
+			}
+			distance[i]=d0;
+		}
+	}
+
+	return NULL;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.cpp	(revision 21239)
@@ -0,0 +1,88 @@
+/*!\file DragCoefficientAbsGradientx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./DragCoefficientAbsGradientx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void DragCoefficientAbsGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		J+=DragCoefficientAbsGradient(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble DragCoefficientAbsGradient(Element* element){
+
+	int         domaintype,numcomponents;
+	IssmDouble  Jelem=0.;
+	IssmDouble  misfit,Jdet;
+	IssmDouble  dp[2],weight;
+	IssmDouble* xyz_list      = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnBase()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn basal element*/
+	Element* basalelement = element->SpawnBasalElement();
+
+	/* Get node coordinates*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	Input* weights_input=basalelement->GetInput(InversionCostFunctionsCoefficientsEnum);   _assert_(weights_input);
+	Input* drag_input   =basalelement->GetInput(FrictionCoefficientEnum); _assert_(drag_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		/* Get Jacobian determinant: */
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,DragCoefficientAbsGradientEnum);
+		drag_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+
+		/*Compute Tikhonov regularization J = 1/2 ((dp/dx)^2 + (dp/dy)^2) */
+		Jelem+=weight*.5*dp[0]*dp[0]*Jdet*gauss->weight;
+		if(numcomponents==2) Jelem+=weight*.5*dp[1]*dp[1]*Jdet*gauss->weight;
+
+	}
+
+	/*clean up and Return: */
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  DragCoefficientAbsGradientx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _DRAGCOEFFABSGRADX_H
+#define _DRAGCOEFFABSGRADX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void DragCoefficientAbsGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble DragCoefficientAbsGradient(Element* element);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ElementConnectivityx/ElementConnectivityx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ElementConnectivityx/ElementConnectivityx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ElementConnectivityx/ElementConnectivityx.cpp	(revision 21239)
@@ -0,0 +1,89 @@
+/*!\file ElementConnectivityx
+ * \brief: compute element connectivity table, using node connectivity table and elements.
+ *
+ * For each element, we want to know which neighbouring elements it connects to (fully, via an entire segment, not by a node).
+ * We use the nodeconnectivity to speed up the computation. The nodeconnectivity gives us for each node of the element, 
+ * all the neighbouring elements of this node, which are good candidates to be neighbours of the element itself.
+ * For now, only triangular elements, ie 3 neighbours max per element.
+ */
+
+#include "./ElementConnectivityx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+int hascommondedge(int* element1,int* element2);
+
+void ElementConnectivityx(int** pelementconnectivity,int* elements, int nels,int* nodeconnectivity, int nods, int width){
+
+	int i,j,k,n;
+
+	/*intermediary: */
+	int    maxels;
+	int  connectedelement;
+	int    connectedelementindex;
+	int    node;
+	int    index;
+	int    num_elements;
+
+	/*maxels: */
+	maxels=width-1;
+
+	/*Allocate connectivity: */
+	int* elementconnectivity=xNewZeroInit<int>(nels*3);
+
+	/*Go through all elements, and for each element, go through its nodes, to get the neighbouring elements. 
+	 * Once we get the neighbouring elements, figure out if they share a segment with the current element. If so, 
+	 * plug them in the connectivity, unless they are already there.: */
+	for(n=0;n<nels;n++){
+
+		//element=n+1; //matlab indexing
+
+		for(i=0;i<3;i++){
+
+			node=elements[n*3+i]; //already matlab indexed, elements comes directly from the workspace.
+			index=node-1;
+
+			num_elements=nodeconnectivity[width*index+maxels]; //retrieve number of elements already  plugged into the connectivity of this node.
+
+			for(j=0;j<num_elements;j++){
+
+				/*for each element connected to node, figure out if it has a commond edge with element: */
+				connectedelement=nodeconnectivity[width*index+j];
+				connectedelementindex=connectedelement-1; //go from matlab indexing to c indexing.
+
+				if(hascommondedge(&elements[n*3+0],&elements[connectedelementindex*3+0])){
+					/*Ok, this connected element has a commond edge  with element, plug it into elementconnectivity, unless 
+					 *it is already there: */
+
+					for(k=0;k<3;k++){
+						if(elementconnectivity[3*n+k]==0){
+							elementconnectivity[3*n+k]=connectedelement;
+							break;
+						}
+						else{
+							if(connectedelement==elementconnectivity[3*n+k]) break;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	/*Assign output pointers: */
+	*pelementconnectivity=elementconnectivity;
+}
+
+int hascommondedge(int* el1,int* el2){
+
+	int count=0;
+	for(int i=0;i<3;i++){
+		for(int j=0;j<3;j++){
+			if(el1[i]==el2[j]) count++;
+		}
+	}
+	if(count==2)
+	 return 1;
+	else
+	 return 0;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ElementConnectivityx/ElementConnectivityx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ElementConnectivityx/ElementConnectivityx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ElementConnectivityx/ElementConnectivityx.h	(revision 21239)
@@ -0,0 +1,11 @@
+/*!\file:  ElementConnectivityx.h
+ * \brief header file for element connectivity computation
+ */ 
+
+#ifndef _ELEMENTCONNECTIVITYX_H
+#define _ELEMENTCONNECTIVITYX_H
+
+/* local prototypes: */
+void	ElementConnectivityx(int** pelementconnectivity,int* elements,int nels,int* nodeconnectivity, int nods, int width);
+
+#endif  /* _ELEMENTCONNECTIVITYX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Exp2Kmlx/Exp2Kmlx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Exp2Kmlx/Exp2Kmlx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Exp2Kmlx/Exp2Kmlx.cpp	(revision 21239)
@@ -0,0 +1,292 @@
+/*!\file Exp2Kmlx
+ * \brief exp to kml conversion routines.
+ */
+
+#include "./Exp2Kmlx.h"
+#include "../../shared/shared.h"
+#include "../../kml/kmlobjects.h"
+#include "../../toolkits/toolkits.h"
+
+int Exp2Kmlx(char* filexp,char* filkml,int sgn,bool holes){
+
+	double  cm,sp;
+
+	Xy2lldef(&cm,&sp,sgn);
+	return(Exp2Kmlx(filexp,filkml,sgn,cm,sp,holes));
+}
+
+int Exp2Kmlx(char* filexp,char* filkml,int sgn,double cm,double sp,bool holes){
+
+	int      i        ,j,iret=0;
+	int      lwidth = 1;
+	double   popac  = 0.50;
+	int      nprof;
+	int     *pnvert = NULL;
+	double **pprofx = NULL,**pprofy=NULL;
+	bool    *closed = NULL;
+	double  *lat    = NULL, *lon=NULL;
+
+	char    indent[81]="";
+	KML_File*          kfile =NULL;
+	KML_Document*      kdoc  =NULL;
+	KML_Style*         kstyle=NULL;
+	KML_LineStyle*     klsty =NULL;
+	KML_PolyStyle*     kpsty =NULL;
+	KML_Folder*        kfold =NULL;
+	KML_Placemark*     kplace=NULL;
+	KML_Polygon*       kpoly =NULL;
+	KML_LinearRing*    kring =NULL;
+	KML_LineString*    kline =NULL;
+	KML_Point*         kpoint=NULL;
+
+	FILE*   fid=NULL;
+
+	clock_t clock0,clock1;
+	time_t  time0, time1;
+
+	clock0=clock();
+	time0 =time(NULL);
+	_printf0_("\nExp2Kmlx Module -- " << ctime(&time0));
+
+	/*read exp file  */
+
+	if (!ExpRead(&nprof,&pnvert,&pprofx,&pprofy,&closed,filexp))
+		_error_("Error reading exp file.");
+	_printf0_("Exp2Kmlx -- Reading " << nprof << " exp profiles from file \"" << filexp << "\".\n");
+//	for (i=0; i<nprof; i++)
+//		_printf_("i=" << i << "; nvert=" << pnvert[i] << ", closed=" << closed[i] << "\n");
+
+/*  construct kml file  */
+
+	kfile =new KML_File();
+	kfile->AddAttrib("xmlns","http://www.opengis.net/kml/2.2");
+
+/*  construct kml document  */
+
+	kdoc  =new KML_Document();
+	sprintf(kdoc->name      ,"Exp2Kmlx Module -- %s",ctime(&time0));
+	kdoc->open      =1;
+
+/*  construct style templates for defaults  */
+
+	klsty =new KML_LineStyle();
+	sprintf(klsty->color     ,"ff000000");
+	sprintf(klsty->colormode ,"normal");
+	klsty->width     =lwidth;
+	kpsty =new KML_PolyStyle();
+	sprintf(kpsty->color     ,"%02xffffff",(int)floor(popac*255+0.5));
+	sprintf(kpsty->colormode ,"random");
+	kstyle=new KML_Style();
+	kstyle->AddAttrib("id","BlackLineRandomPoly");
+	kstyle->line      =klsty;
+	kstyle->poly      =kpsty;
+	(kdoc->style     )->AddObject((Object*)kstyle);
+
+	klsty =new KML_LineStyle();
+	sprintf(klsty->color     ,"ff000000");
+	sprintf(klsty->colormode ,"normal");
+	klsty->width     =lwidth;
+	kpsty =new KML_PolyStyle();
+	sprintf(kpsty->color     ,"00ffffff");
+	sprintf(kpsty->colormode ,"random");
+	kstyle=new KML_Style();
+	kstyle->AddAttrib("id","BlackLineEmptyPoly");
+	kstyle->line      =klsty;
+	kstyle->poly      =kpsty;
+	(kdoc->style     )->AddObject((Object*)kstyle);
+
+	klsty =new KML_LineStyle();
+	sprintf(klsty->color     ,"%02xffffff",(int)floor(popac*255+0.5));
+	sprintf(klsty->colormode ,"random");
+	klsty->width     =lwidth*2;
+	kpsty =new KML_PolyStyle();
+	sprintf(kpsty->color     ,"00ffffff");
+	sprintf(kpsty->colormode ,"random");
+	kstyle=new KML_Style();
+	kstyle->AddAttrib("id","RandomLineEmptyPoly");
+	kstyle->line      =klsty;
+	kstyle->poly      =kpsty;
+	(kdoc->style     )->AddObject((Object*)kstyle);
+
+/*  construct kml folder for polygons  */
+
+	kfold =new KML_Folder();
+	sprintf(kfold->name      ,"Profiles translated from file \"%s\".",filexp);
+	kfold->open      =1;
+
+/*  polygon with multiple holes  */
+
+	if (holes && nprof && (pnvert[0] <= 1 || pprofx[0][pnvert[0]-1] != pprofx[0][0] || pprofy[0][pnvert[0]-1] != pprofy[0][0])) {
+		_printf0_("Warning -- Outer profile is not closed, so \"holes\" option will be ignored.\n");
+		holes=false;
+	}
+
+	if (holes) {
+		i=0;
+		kplace=new KML_Placemark();
+		sprintf(kplace->name      ,"Polygon with Holes");
+		kplace->visibility=true;
+		sprintf(kplace->styleurl  ,"#BlackLineRandomPoly");
+
+		kpoly =new KML_Polygon();
+		kring =new KML_LinearRing();
+
+		kring->ncoord    =pnvert[i]-1;
+		lat=xNew<double>(kring->ncoord);
+		lon=xNew<double>(kring->ncoord);
+		Xy2llx(lat,lon,pprofx[i],pprofy[i],kring->ncoord,sgn,cm,sp);
+		kring->coords=xNew<double>(kring->ncoord*3);
+		for (j=0; j<kring->ncoord; j++) {
+			kring->coords[3*j+0]=lon[j];
+			kring->coords[3*j+1]=lat[j];
+			kring->coords[3*j+2]=0.;
+		}
+		xDelete<double>(lon);
+		xDelete<double>(lat);
+
+		(kpoly ->outer     )->AddObject((Object*)kring);
+		kring =NULL;
+
+		for (i=1; i<nprof; i++) {
+			if (pnvert[i] <= 1 || pprofx[i][pnvert[i]-1] != pprofx[i][0] || pprofy[i][pnvert[i]-1] != pprofy[i][0]) {
+				_printf0_("Warning -- Inner profile " << i+1 << " is not closed with \"holes\" specified, so it will be ignored.\n");
+				continue;
+			}
+
+			kring =new KML_LinearRing();
+
+			kring->ncoord    =pnvert[i]-1;
+			lat=xNew<double>(kring->ncoord);
+			lon=xNew<double>(kring->ncoord);
+			Xy2llx(lat,lon,pprofx[i],pprofy[i],kring->ncoord,sgn,cm,sp);
+			kring->coords    =xNew<double>(kring->ncoord*3);
+			for (j=0; j<kring->ncoord; j++) {
+				kring->coords[3*j+0]=lon[j];
+				kring->coords[3*j+1]=lat[j];
+				kring->coords[3*j+2]=0.;
+			}
+			xDelete<double>(lon);
+			xDelete<double>(lat);
+
+			(kpoly ->inner     )->AddObject((Object*)kring);
+			kring =NULL;
+		}
+
+		(kplace->geometry  )->AddObject((Object*)kpoly);
+		kpoly =NULL;
+		(kfold ->feature   )->AddObject((Object*)kplace);
+		kplace=NULL;
+	}
+
+/*  multiple polygons or linestrings  */
+
+	else {
+		for (i=0; i<nprof; i++) {
+			kplace=new KML_Placemark();
+
+			if     (pnvert[i] > 1 && pprofx[i][pnvert[i]-1] == pprofx[i][0] && pprofy[i][pnvert[i]-1] == pprofy[i][0]) {
+				sprintf(kplace->name      ,"Polygon %d",i+1);
+				kplace->visibility=true;
+				sprintf(kplace->styleurl  ,"#BlackLineRandomPoly");
+
+				kpoly =new KML_Polygon();
+				kring =new KML_LinearRing();
+
+				kring->ncoord    =pnvert[i]-1;
+				lat=xNew<double>(kring->ncoord);
+				lon=xNew<double>(kring->ncoord);
+				Xy2llx(lat,lon,pprofx[i],pprofy[i],kring->ncoord,sgn,cm,sp);
+				kring->coords    =xNew<double>(kring->ncoord*3);
+				for (j=0; j<kring->ncoord; j++) {
+					kring->coords[3*j+0]=lon[j];
+					kring->coords[3*j+1]=lat[j];
+					kring->coords[3*j+2]=0.;
+				}
+				xDelete<double>(lon);
+				xDelete<double>(lat);
+
+				(kpoly ->outer     )->AddObject((Object*)kring);
+				kring =NULL;
+
+				(kplace->geometry  )->AddObject((Object*)kpoly);
+				kpoly =NULL;
+			}
+
+			else if (pnvert[i] > 1) {
+				sprintf(kplace->name      ,"LineString %d",i+1);
+				kplace->visibility=true;
+				sprintf(kplace->styleurl  ,"#RandomLineEmptyPoly");
+
+				kline =new KML_LineString();
+
+				kline->ncoord    =pnvert[i];
+				lat=xNew<double>(kline->ncoord);
+				lon=xNew<double>(kline->ncoord);
+				Xy2llx(lat,lon,pprofx[i],pprofy[i],kline->ncoord,sgn,cm,sp);
+				kline->coords    =xNew<double>(kline->ncoord*3);
+				for (j=0; j<kline->ncoord; j++) {
+					kline->coords[3*j+0]=lon[j];
+					kline->coords[3*j+1]=lat[j];
+					kline->coords[3*j+2]=0.;
+				}
+				xDelete<double>(lon);
+				xDelete<double>(lat);
+
+				(kplace->geometry  )->AddObject((Object*)kline);
+				kline =NULL;
+			}
+
+			else if (pnvert[i]) {
+				sprintf(kplace->name      ,"Point %d",i+1);
+				kplace->visibility=true;
+				sprintf(kplace->styleurl  ,"#RandomLineEmptyPoly");
+				int one=1;
+
+				kpoint=new KML_Point();
+
+				lat=xNew<double>(one);
+				lon=xNew<double>(one);
+				Xy2llx(lat,lon,pprofx[i],pprofy[i],1,sgn,cm,sp);
+				kpoint->coords[0]=lon[0];
+				kpoint->coords[1]=lat[0];
+				kpoint->coords[2]=0.;
+				xDelete<double>(lon);
+				xDelete<double>(lat);
+
+				(kplace->geometry  )->AddObject((Object*)kpoint);
+				kpoint =NULL;
+			}
+
+			(kfold ->feature   )->AddObject((Object*)kplace);
+			kplace=NULL;
+		}
+	}
+
+/*  assemble the rest of the kml hierarchy  */
+
+	(kdoc ->feature   )->AddObject((Object*)kfold);
+	kfold=NULL;
+	(kfile->kmlobj    )->AddObject((Object*)kdoc);
+	kdoc =NULL;
+
+/*  write kml file  */
+
+	_printf0_("Exp2Kmlx -- Writing kml document to file \"" << filkml << "\".\n");
+	fid=fopen(filkml,"w");
+	fprintf(fid,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+	kfile->Write(fid,indent);
+	fclose(fid);
+
+	delete kfile;
+	for (i=nprof-1; i>=0; i--) {
+		xDelete<double>(pprofy[i]);
+		xDelete<double>(pprofx[i]);
+	}
+	xDelete<int>(pnvert);
+
+	clock1=clock();
+	time1 =time(NULL);
+	_printf_("Exp2Kmlx Module -- " <<((double)(clock1-clock0))/CLOCKS_PER_SEC << " CPU seconds; " <<difftime(time1,time0) << " elapsed seconds.\n\n\n");
+
+	return(iret);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Exp2Kmlx/Exp2Kmlx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Exp2Kmlx/Exp2Kmlx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Exp2Kmlx/Exp2Kmlx.h	(revision 21239)
@@ -0,0 +1,15 @@
+/*!\file:  Exp2Kmlx.h
+ * \brief header file for exp to kml conversion routines.
+ */ 
+
+#ifndef _EXP2KMLX_H
+#define _EXP2KMLX_H
+
+#include <float.h>    /*  DBL_MAX  */
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+int Exp2Kmlx(char* filexp,char* filkml,int sgn,bool holes);
+int Exp2Kmlx(char* filexp,char* filkml,int sgn,double cm,double sp,bool holes);
+
+#endif  /* _EXP2KMLX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ExpToLevelSetx/ExpToLevelSetx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ExpToLevelSetx/ExpToLevelSetx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ExpToLevelSetx/ExpToLevelSetx.cpp	(revision 21239)
@@ -0,0 +1,36 @@
+/*! \file  ExpToLevelSetx.c
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./ExpToLevelSetx.h"
+
+int ExpToLevelSetx(double** pdistance,double* x, double* y, int nods, Contours* contours){
+
+	/*Contour:*/
+	double value;
+
+	/*output: */
+	double*  distance;
+	distance   = xNewZeroInit<double>(nods);
+
+	/*initialize thread parameters: */
+	ExpToLevelSetxThreadStruct gate;
+	gate.contours  = contours;
+	gate.nods      = nods;
+	gate.distance    = distance;
+	gate.x         = x;
+	gate.y         = y;
+
+	/*launch the thread manager with ExpToLevelSetxt as a core: */
+	LaunchThread(ExpToLevelSetxt,(void*)&gate,_NUMTHREADS_);
+
+	/*Assign output pointers: */
+	*pdistance=distance;
+
+	return 1;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ExpToLevelSetx/ExpToLevelSetx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ExpToLevelSetx/ExpToLevelSetx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ExpToLevelSetx/ExpToLevelSetx.h	(revision 21239)
@@ -0,0 +1,27 @@
+/*
+	ExpToLevelSetx.h
+*/
+
+#ifndef _EXPTOLEVELSETX_H
+#define _EXPTOLEVELSETX_H
+
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+
+/*threading: */
+typedef struct{
+
+	Contours *contours;
+	int       nods;
+	double   *distance;
+	double   *x;
+	double   *y;
+
+} ExpToLevelSetxThreadStruct;
+
+/* local prototypes: */
+int ExpToLevelSetx(double** pdistance,double* x, double* y,int nods, Contours* contours);
+
+void* ExpToLevelSetxt(void* vExpToLevelSetxThreadStruct);
+
+#endif /* _EXPTOLEVELSETX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ExpToLevelSetx/ExpToLevelSetxt.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ExpToLevelSetx/ExpToLevelSetxt.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ExpToLevelSetx/ExpToLevelSetxt.cpp	(revision 21239)
@@ -0,0 +1,104 @@
+/*!\file:  ExpToLevelSetxt.cpp
+ * \brief  "thread" core code for figuring out level set value from a contour and a cloud of points.
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Include files: {{{*/
+#include "./ExpToLevelSetx.h"
+double minimum_distance(double x1, double y1, double x2, double y2, double x0, double y0);
+void ContourToLevelSet(double* distance,double* contourx, double* contoury, int contournods, double* x, double* y, int i0, int i10);
+/*}}}*/
+
+void* ExpToLevelSetxt(void* vpthread_handle){
+
+	/*gate variables :*/
+	ExpToLevelSetxThreadStruct *gate        = NULL;
+	pthread_handle             *handle      = NULL;
+	int  i,i1,i0;
+
+	/*recover handle and gate: */
+	handle          = (pthread_handle*)vpthread_handle;
+	gate            = (ExpToLevelSetxThreadStruct*)handle->gate;
+	int my_thread   = handle->id;
+	int num_threads = handle->num;
+
+	/*recover parameters :*/
+	Contours* contours  = gate->contours;
+	int       nods      = gate->nods;
+	double   *distance    = gate->distance;
+	double   *x         = gate->x;
+	double   *y         = gate->y;
+
+	/*distribute indices across threads :*/
+	PartitionRange(&i0,&i1,nods,num_threads,my_thread);
+
+	/*Loop through all contours: */
+	for (i=0;i<contours->Size();i++){
+		Contour<double>* contour=(Contour<double>*)contours->GetObjectByOffset(i);
+		ContourToLevelSet(distance,contour->x,contour->y,contour->nods,x,y,i0,i1);
+	}
+
+	return NULL;
+}
+
+void ContourToLevelSet(double* dist,double* contourx, double* contoury, int contournods, double* x, double* y, int i0, int i1){/*{{{*/
+	int i,j;
+	double x0,y0;
+	double x1,y1;
+	double x2,y2;
+	double mind;
+	
+	for(i=i0;i<i1;i++){
+		x0=x[i]; y0=y[i];
+
+		/*Figure out distance from (x0,y0) to contour: */
+		mind=INFINITY;
+		for (j=0;j<contournods-1;j++){
+			x1=contourx[j]; y1=contoury[j];
+			x2=contourx[j+1]; y2=contoury[j+1];
+			mind=min(mind,minimum_distance(x1,y1,x2,y2,x0,y0));
+		}
+		dist[i]=mind;
+	}
+
+}
+double ddistance(double x1,double y1,double x2,double y2){
+	return sqrt(pow(x2-x1,2)+pow(y2-y1,2));
+}
+double ddot(double x1, double y1, double x2, double y2){
+	return x1*x2+y1*y2;
+}
+
+bool isPointLeftOfRay(double x, double y, double raySx, double raySy, double rayEx, double rayEy) {
+	  return (y-raySy)*(rayEx-raySx)
+		    >      (x-raySx)*(rayEy-raySy); 
+}
+
+double minimum_distance(double x1, double y1, double x2, double y2, double x0, double y0){
+	
+	// Return minimum distance between line segment [(x1,y1) (x2,y2)] and point (x0,y0) (v=(x1,y1), w=(x2,y2) and p=(x0,y0)
+	double projectionx; 
+	double projectiony; 
+	double l2;
+	double t;
+
+	l2 = pow(x2-x1,2)+pow(y2-y1,2); // i.e. |w-v|^2 -  avoid a sqrt
+
+	if (l2 == 0.0) return ddistance(x0,y0, x1,y1); // v == w case
+	// Consider the line extending the segment, parameterized as v + t (w - v).
+	//         // We find projection of point p onto the line. 
+	//           // It falls where t = [(p-v) . (w-v)] / |w-v|^2
+	t = ddot(x0-x1,y0-y1, x2-x1, y2-y1) / l2;
+	if (t < 0.0) return ddistance(x0,y0, x1, y1);       // Beyond the 'v' end of the segment
+	else if (t > 1.0) return ddistance(x0,y0, x2,y2);  // Beyond the 'w' end of the segment
+	
+	projectionx= x1 + t* (x2-x1);  // Projection falls on the segment
+	projectiony= y1 + t* (y2-y1);
+	return ddistance(x0, y0, projectionx, projectiony);
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp	(revision 21239)
@@ -0,0 +1,52 @@
+/*!\file FloatingiceMeltingRatex
+ * \brief: calculates Floating ice melting rate
+ */
+
+#include "./FloatingiceMeltingRatex.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void FloatingiceMeltingRatex(FemModel* femmodel){/*{{{*/
+
+	/*Intermediaties*/
+	int  basalforcing_model;
+
+	/*First, get SMB model from parameters*/
+	femmodel->parameters->FindParam(&basalforcing_model,BasalforcingsEnum);
+
+	/*branch to correct module*/
+	switch(basalforcing_model){
+		case FloatingMeltRateEnum:
+		case MantlePlumeGeothermalFluxEnum:
+			/*Nothing to be done*/
+			break;
+		case LinearFloatingMeltRateEnum:
+			if(VerboseSolution())_printf0_("	call Linear Floating melting rate module\n");
+			LinearFloatingiceMeltingRatex(femmodel);
+			break;
+		case MismipFloatingMeltRateEnum:
+			if(VerboseSolution())_printf0_("	call Mismip Floating melting rate module\n");
+			MismipFloatingiceMeltingRatex(femmodel);
+			break;
+		default:
+			_error_("Basal forcing model "<<EnumToStringx(basalforcing_model)<<" not supported yet");
+	}
+
+}/*}}}*/
+
+void LinearFloatingiceMeltingRatex(FemModel* femmodel){/*{{{*/
+
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->LinearFloatingiceMeltingRate();
+	}
+
+}/*}}}*/
+void MismipFloatingiceMeltingRatex(FemModel* femmodel){/*{{{*/
+
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->MismipFloatingiceMeltingRate();
+	}
+
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.h	(revision 21239)
@@ -0,0 +1,15 @@
+/*!\file:  FloatingiceMeltingRatex.h
+ * \brief header file for Floatingice melting rate
+ */ 
+
+#ifndef _FloatingiceMeltingRatex_H
+#define _FloatingiceMeltingRatex_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void FloatingiceMeltingRatex(FemModel* femmodel);
+void LinearFloatingiceMeltingRatex(FemModel* femmodel);
+void MismipFloatingiceMeltingRatex(FemModel* femmodel);
+
+#endif  /* _FloatingiceMeltingRatex_H*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GeothermalFluxx/GeothermalFluxx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GeothermalFluxx/GeothermalFluxx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GeothermalFluxx/GeothermalFluxx.cpp	(revision 21239)
@@ -0,0 +1,41 @@
+/*!\file GeothermalFluxx
+ * \brief: calculates Geothermal heat flux 
+ */
+
+#include "./GeothermalFluxx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void GeothermalFluxx(FemModel* femmodel){/*{{{*/
+
+	/*Intermediaties*/
+	int  basalforcing_model;
+
+	/*First, get SMB model from parameters*/
+	femmodel->parameters->FindParam(&basalforcing_model,BasalforcingsEnum);
+
+	/*branch to correct module*/
+	switch(basalforcing_model){
+		case FloatingMeltRateEnum:
+		case MismipFloatingMeltRateEnum:
+		case LinearFloatingMeltRateEnum:
+			/*Nothing to be done*/
+			break;
+		case MantlePlumeGeothermalFluxEnum:
+			if(VerboseSolution())_printf0_("	call Mantle Plume Geothermal Flux module\n");
+			MantlePlumeGeothermalFluxx(femmodel);
+			break;
+		default:
+			_error_("Basal forcing model "<<EnumToStringx(basalforcing_model)<<" not supported yet");
+	}
+
+}/*}}}*/
+
+void MantlePlumeGeothermalFluxx(FemModel* femmodel){/*{{{*/
+
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->MantlePlumeGeothermalFlux();
+	}
+
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GeothermalFluxx/GeothermalFluxx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GeothermalFluxx/GeothermalFluxx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GeothermalFluxx/GeothermalFluxx.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  GeothermalFluxx.h
+ * \brief header file for Geothermal flux
+ */ 
+
+#ifndef _GeothermalFluxx_H
+#define _GeothermalFluxx_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void GeothermalFluxx(FemModel* femmodel);
+void MantlePlumeGeothermalFluxx(FemModel* femmodel);
+
+#endif  /* _GeothermalFluxx_H*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp	(revision 21239)
@@ -0,0 +1,44 @@
+/*!\file GetSolutionFromInputsx
+ * \brief: update datasets using  parameter inputs
+ */
+
+#include "./GetSolutionFromInputsx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void GetSolutionFromInputsx(Vector<IssmDouble>** psolution,FemModel* femmodel){
+
+	/*intermediary: */
+	int      gsize;
+	int      configuration,analysisenum;
+
+	/*output: */
+	Vector<IssmDouble>* solution=NULL;
+
+	if(VerboseModule()) _printf0_("   Get solution from inputs\n");
+
+	/*retrive parameters: */
+	femmodel->parameters->FindParam(&configuration,ConfigurationTypeEnum);
+	femmodel->parameters->FindParam(&analysisenum,AnalysisTypeEnum);
+
+	/*Get size of vector: */
+	gsize=femmodel->nodes->NumberOfDofs(configuration,GsetEnum);
+	if(gsize==0) _error_("Allocating a Vec of size 0 as gsize=0 for configuration "<<EnumToStringx(configuration));
+
+	/*Initialize solution: */
+	solution=new Vector<IssmDouble>(gsize);
+
+	/*Go through elements and plug solution: */
+	Analysis* analysis = EnumToAnalysis(analysisenum);
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		analysis->GetSolutionFromInputs(solution,element);
+	}
+	delete analysis;
+
+	/*Assemble vector: */
+	solution->Assemble();
+
+	/*Assign output pointers:*/
+	*psolution=solution;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  GetSolutionFromInputsx.h
+ * \brief header file for updating datasets from inputs
+ */ 
+
+#ifndef _GETSOLUTIONFROMINPUTSXX_H
+#define _GETSOLUTIONFROMINPUTSXX_H
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+/* local prototypes: */
+void GetSolutionFromInputsx(Vector<IssmDouble>** psolution,FemModel* femmodel);
+
+#endif  /* _GETSOLUTIONFROMINPUTSXX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.cpp	(revision 21239)
@@ -0,0 +1,52 @@
+/*!\file GetVectorFromControlInputsx
+ * \brief retrieve vector from inputs in elements
+ */
+
+#include "./GetVectorFromControlInputsx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void GetVectorFromControlInputsx(Vector<IssmDouble>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,const char* data,bool onsid){
+
+	int  num_controls;
+	int *control_type = NULL;
+	Vector<IssmDouble>*  vector=NULL;
+
+	/*Retrieve some parameters*/
+	parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	parameters->FindParam(&control_type,NULL,InversionControlParametersEnum);
+
+	/*Allocate and populate gradient*/
+	vector=new Vector<IssmDouble>(num_controls*vertices->NumberOfVertices());
+
+	for(int i=0;i<num_controls;i++){
+		for(int j=0;j<elements->Size();j++){
+			Element* element=(Element*)elements->GetObjectByOffset(j);
+			element->GetVectorFromControlInputs(vector,control_type[i],i,data,onsid);
+		}
+	}
+
+	vector->Assemble();
+
+	/*Assign output pointers:*/
+	xDelete<int>(control_type);
+	*pvector=vector;
+}
+
+void GetVectorFromControlInputsx( IssmDouble** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, const char* data,bool onsid){
+
+	/*output: */
+	IssmDouble* vector=NULL;
+
+	/*intermediary: */
+	Vector<IssmDouble>* vec_vector=NULL;
+
+	GetVectorFromControlInputsx( &vec_vector, elements,nodes, vertices, loads, materials, parameters,data,onsid);
+	vector=vec_vector->ToMPISerial();
+
+	/*Free ressources:*/
+	delete vec_vector;
+
+	/*Assign output pointers:*/
+	*pvector=vector;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  GetVectorFromControlInputsx.h
+ */ 
+
+#ifndef _GETVECTORFROMCONTROLINPUTSXX_H
+#define _GETVECTORFROMCONTROLINPUTSXX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void	GetVectorFromControlInputsx( Vector<IssmDouble>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials,  Parameters* parameters,const char* data="value",bool onsid=false);
+void	GetVectorFromControlInputsx( IssmDouble** pvector, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials,  Parameters* parameters,const char* data="value",bool onsid=false);
+
+#endif  /* _GETVECTORFROMCONTROLINPUTSXX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp	(revision 21239)
@@ -0,0 +1,52 @@
+/*!\file GetVectorFromInputsx
+ * \brief retrieve vector from inputs in elements
+ */
+
+#include "./GetVectorFromInputsx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void GetVectorFromInputsx(Vector<IssmDouble>** pvector,FemModel* femmodel,int name,int type){
+
+	int i;
+	Vector<IssmDouble>* vector=NULL;
+
+	switch(type){
+	case VertexPIdEnum: case VertexSIdEnum:
+		vector=new Vector<IssmDouble>(femmodel->vertices->NumberOfVertices());
+		break;
+	case NodesEnum:case NodeSIdEnum:
+		vector=new Vector<IssmDouble>(femmodel->nodes->NumberOfNodes());
+		break;
+	default:
+			_error_("vector type: " << EnumToStringx(type) << " not supported yet!");
+	}
+	/*Look up in elements*/
+	for(i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->GetVectorFromInputs(vector,name,type);
+	}
+
+	vector->Assemble();
+
+	/*Assign output pointers:*/
+	*pvector=vector;
+}
+
+void GetVectorFromInputsx(IssmDouble** pvector,FemModel* femmodel,int name, int type){
+
+	/*output: */
+	IssmDouble* vector=NULL;
+
+	/*intermediary: */
+	Vector<IssmDouble>* vec_vector=NULL;
+
+	GetVectorFromInputsx(&vec_vector,femmodel,name,type);
+	vector=vec_vector->ToMPISerial();
+
+	/*Free ressources:*/
+	delete vec_vector;
+
+	/*Assign output pointers:*/
+	*pvector=vector;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  GetVectorFromInputsx.h
+ */ 
+
+#ifndef _GETVECTORFROMINPUTSXX_H
+#define _GETVECTORFROMINPUTSXX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void	GetVectorFromInputsx( Vector<IssmDouble>** pvector,FemModel* femmodel,int name,int type);
+void	GetVectorFromInputsx( IssmDouble** pvector,FemModel* femmodel,int name,int type);
+
+#endif  /* _GETVECTORFROMINPUTSXX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp	(revision 21239)
@@ -0,0 +1,171 @@
+/*!\file GiaDeflectionCorex
+ * \brief: GIA solution from Erik Ivins. 
+ * Compute deflection wi from a single disk of radius re, load history hes for 
+ * numtimes time steps. 
+ */
+
+#include "./GiaDeflectionCorex.h"
+
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../InputUpdateFromConstantx/InputUpdateFromConstantx.h"
+
+/*External blocks: {{{*/
+struct blockp{
+	double pset[7];
+};
+
+struct blocko{
+	double rhoi;
+};
+
+struct blockrad{
+	double distrad; 
+};
+
+struct blocks{
+	double aswokm_w; 
+	double aswokm_dwdt; 
+};
+
+extern "C" { 
+	int distme_(int* pNtime,int* pNtimp,int* pNtimm,double* time,double* bi,double* dmi,double* zhload);
+
+	int what0_(int* piedge,int* pNtimp,int* pNtimm,double* time,double* bi,double* dmi);
+	extern struct blockp blockp_;
+	extern struct blocko blocko_;
+	extern struct blockrad blockrad_;
+	extern struct blocks blocks_;
+}
+
+/*}}}*/
+
+void GiaDeflectionCorex( IssmDouble* pwi, IssmDouble* pdwidt, GiaDeflectionCoreArgs* arguments){
+
+	/*intermediary: */
+	int i;
+
+	/*output: */
+	IssmDouble wi=0;
+	IssmDouble dwidt=0;
+
+	/*inputs: {{{*/
+	/*constant: */
+	int idisk=1; // disk #
+	IssmDouble yts;
+
+	/*coming from the model structure, runtime configurable:*/
+	/*gia solution parameters: */
+	int iedge=0; 
+
+	/*gia inputs: */
+	IssmDouble ri; //radial distance from center of disk to vertex  i
+	IssmDouble re; //radius of disk
+	IssmDouble* hes; //loading history (in ice thickness)
+	IssmDouble* times; //loading history times
+	int numtimes; //loading history length
+	IssmDouble currenttime;
+	int Ntime; // number of times with load history 
+	int Ntimm; // Ntime-1 : for slope/y-cept of load segments 
+	int Ntimp; // Ntime+1 : for evaluation time  
+	IssmDouble* blockt_time=NULL;
+	IssmDouble* blockt_bi=NULL;
+	IssmDouble* blockt_dmi=NULL;
+	IssmDouble* blocky_zhload=NULL;
+
+	/*gia material parameters: */
+	IssmDouble lithosphere_shear_modulus;
+	IssmDouble lithosphere_density;
+	IssmDouble mantle_shear_modulus;
+	IssmDouble mantle_viscosity;
+	IssmDouble mantle_density;
+	IssmDouble lithosphere_thickness;
+
+	/*ice properties: */
+	IssmDouble rho_ice;
+
+	/*some debug info: */
+	int disk_id;
+
+/*}}}*/
+
+	/*Recover material parameters and loading history: see GiaDeflectionCoreArgs for more details {{{*/
+	ri                        = arguments->ri;
+	re                        = arguments->re;
+	hes                       = arguments->hes;
+	times                     = arguments->times;
+	numtimes                  = arguments->numtimes;
+	currenttime               = arguments->currenttime;
+	lithosphere_shear_modulus = arguments->lithosphere_shear_modulus;
+	lithosphere_density       = arguments->lithosphere_density;
+	mantle_shear_modulus      = arguments->mantle_shear_modulus;
+	mantle_viscosity          = arguments->mantle_viscosity;
+	mantle_density            = arguments->mantle_density;
+	lithosphere_thickness     = arguments->lithosphere_thickness;
+	rho_ice                   = arguments->rho_ice;
+	disk_id                   = arguments->idisk;
+	iedge                     = arguments->iedge;
+	yts                       = arguments->yts;
+
+	/*}}}*/
+
+	/*Modify inputs to match naruse code: */
+	Ntime=numtimes;
+	Ntimm=Ntime-1;
+	Ntimp=Ntime+1;
+
+	/*Prepare block inputs for fortran distme and what0 routines of the naruse code: {{{*/
+	/*Now, let's set pset from the data that we got in input to GiaDeflectionCorex: */
+	blockp_.pset[0]=lithosphere_thickness;
+	blockp_.pset[1]=mantle_viscosity;
+	blockp_.pset[2]=lithosphere_shear_modulus;
+	blockp_.pset[3]=mantle_shear_modulus;
+	blockp_.pset[4]=lithosphere_density;
+	blockp_.pset[5]=mantle_density;
+	blockp_.pset[6]=re;
+	blocko_.rhoi=rho_ice; 
+
+	/*loading history: */
+	blocky_zhload=xNew<IssmDouble>(Ntime);
+	for(i=0;i<Ntime;i++){
+	blocky_zhload[i]=hes[i];
+	}
+
+	/*times in kyr: */
+	blockt_time=xNew<IssmDouble>(Ntimp);
+	for (i=0;i<Ntimp;i++){
+		blockt_time[i]=times[i]/1000.0/yts; 
+		if(i==numtimes-1)blockt_time[i]=times[numtimes-1]/1000.0/yts; // final loading time, same as evaluation time
+		if(i==numtimes)blockt_time[i]=times[numtimes-1]/1000.0/yts;   // evaluation time
+	}
+
+	/*bi: */
+	blockt_bi=xNew<IssmDouble>(Ntimm);
+
+	/*dmi: */
+	blockt_dmi=xNew<IssmDouble>(Ntimm);
+
+	/*radial distance of i-th element: */
+	blockrad_.distrad=ri/1000.0; // in km
+	/*}}}*/
+
+	/*Call distme driver: */
+	distme_(&Ntime,&Ntimp,&Ntimm,blockt_time,blockt_bi,blockt_dmi,blocky_zhload); 
+
+	/*Call what0 driver: */
+	what0_(&iedge,&Ntimp,&Ntimm,blockt_time,blockt_bi,blockt_dmi); 
+
+	/*output solution: */
+	wi = blocks_.aswokm_w;
+	dwidt = blocks_.aswokm_dwdt;
+	*pwi=wi;
+	*pdwidt=dwidt;
+
+	/*Free ressources: */
+	xDelete<IssmDouble>(blockt_time);
+	xDelete<IssmDouble>(blockt_bi);
+	xDelete<IssmDouble>(blockt_dmi);
+	xDelete<IssmDouble>(blocky_zhload);
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  GiaDeflectionCorex.h
+ * \brief header file for ...
+ */ 
+
+#ifndef _GIADEFLECTIONCOREX_H
+#define _GIADEFLECTIONCOREX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void GiaDeflectionCorex( IssmDouble* pwi, IssmDouble* pdwidt, GiaDeflectionCoreArgs* arguments);
+
+#endif  /* _GIADEFLECTIONCOREX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/distme.f
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/distme.f	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/distme.f	(revision 21239)
@@ -0,0 +1,73 @@
+      subroutine distme(Ntime,Ntimp,Ntimm,time,bi,dmi,zhload)
+      implicit double precision (a-h,o-y)
+      integer Ntime,Ntimp,Ntimm
+      parameter (Nafter=1)
+      double precision pset(7)
+      double precision time(Ntimp),dmi(Ntimm),bi(Ntimm),dumbt(Ntimp)
+      double precision hload(Ntime),qpat(Ntime),qt(Ntime)
+      double precision zhload(Ntime),rhoi,distrad
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      common /blockp/ pset
+      common /blockrad/ distrad 
+      common /blocko/ rhoi
+      data g /9.832186d0/, yearco /3.15576d7/, eradm/6.371d6/
+      data dpi /3.1415926535897932d0/, dzero/0.0d0/
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c The units of time(Ntimp) are ka and the height of the load in meters.
+c The slope, then for example, is in units of meters per ka.
+c Note that "dumbt( )" is designed to perserve the initial "time( )" variable.
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      do 776 k = 1, Ntimp
+      dumbt(k) = time(k)
+  776 continue
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      do 39 itime = 1, Ntime
+      hload(itime) = dble( zhload(itime) )
+   39 continue
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c now set up a piece-wise history: bi() = y-intercept 
+c                                 dmi() = slope 
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      do 70 i = 2, Ntime
+      dmi(i-1) = ( hload(i) - hload(i-1) )/( dumbt(i)  - dumbt(i-1) )
+      bi(i-1) = hload(i-1) - ( dmi(i)*dumbt(i-1) )  
+   70 continue
+c      write(6,*) zhload(1,1), zhload(1,2) 
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c With pset(6) in mks units, lets convert the piecewise linear formulas
+c for the time-dependent ice load heights to dimensionless values w.r.t. time.
+c (tfact is in seconds)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      tfact = pset(2)/pset(4)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c get all times as dimensionless 
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      do 20 jt = 1, Nafter
+      time(Ntime + jt) = ( dumbt(Ntime + jt) * yearco * 1.0d3 ) / tfact
+   20 continue
+      do 75 ind = 1, Ntimm 
+      dmi(ind) =  dmi(ind) / (( yearco * 1.0d3 ) / tfact )
+   75 continue
+      do 77 j = 1, Ntime 
+      time(j) = ( dumbt(j) * yearco * 1.0d3 ) / tfact
+   77 continue
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c create an incremental load in Pa and non-dimensionalized:
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      do 80 iq = 1, Ntime
+      qpat(iq) = hload(iq)*rhoi*g
+      qt(iq) = qpat(iq) / pset(4)
+   80 continue
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c As the final step in this routine, create a dimensionless stress load from
+c qp.  Here we'll use bi( ) and dmi( ) vectors with dimensionless time.  Then
+c qp (and it's piece-wise decomposition) is ready for the direct dimensionless
+c integrals for the inverse Laplace transform and inverse Hankel transform
+c without further mutiplicative factors.
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      do 85 i = 2, Ntime
+      dmi(i-1) = ( qt(i) - qt(i-1) )/( time(i)  - time(i-1) )
+      bi(i-1) = qt(i-1) - ( dmi(i-1)*time(i-1) )  
+   85 continue
+  999 return
+      end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/freed.f
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/freed.f	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/freed.f	(revision 21239)
@@ -0,0 +1,222 @@
+      subroutine freed(r2,u2,r1,u1,h,zk,e1,e2,e4,b0,b1,a2,a1,a0,decay
+     1,amps)        
+      implicit double precision (a-h,o-z)
+      double precision decay(2),amps(5)
+      double precision ac0,ac1,ac2,ac3,ac4,ac5,ac6,ac7,ac8,ac9,ac10,
+     1ac11
+      common /blockz/ zkp
+      data zero /0.0d0/, g /9.832186d0/
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c Given the inputs to this subroutine(r2 through zk in the call
+c statement above), the outputs are coefficients of "s" that
+c are crucial to the Laplace transform inversion. From b0 and b1
+c we can compute the decay poles (or eigenvalues).    
+c 
+c  This is NOT true in our case, though. - SA
+c  NOTE IN THE CODE THAT A CALL TO THIS SUBROUTINE NEED NOT
+c  BE MADE AT EACH TIME STEP --- BUT WILL HAVE TO BE CALLED
+c  IN THE NUMERICAL INTEGRATION FOR COMPUTING THE INVERSE HANKEL
+c  TRANSFORM  ****
+c
+c Each term should be returned as dimensionless 
+c h => length   u2 => stress     taumx2 => time
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      zkp2 = zkp*zkp
+      ur = u1/u2
+      ghu2 = (g*h) / u2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac0 dimensional units are stress times l^-2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac0 = 4.0d0*ur*zkp2*( 1.0d0 + e4 +
+     1    2.0d0*e2*(1.0d0 + 2.0d0*zkp2) )
+c    DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac1 dimensional units are stress times l^-2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac1 = 2.0d0*r1*ghu2*zkp*(1.0d0 - e4 + 4.0d0*zkp*e2)
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac2 dimensional units are stress^2 times l^-2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac2 = 8.0d0*ur*ur*(-1.0d0 + e1)*
+     1                     (1.0d0 + e1)*(1.0d0 + e2)*zkp2
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac3  dimensional units are stress^2 times l^-2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac3 =
+     1   2.0d0*zkp*ghu2*ur*((r1 + r2)*(1.0d0 + e4) + 
+     2       2.0d0*(r2 - r1)*e2*( 1.0d0 + 2.0d0*zkp2 ))
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac4 dimensional units are stress^2 times l^-2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac4 = ghu2*ghu2*r1*(r2 - r1)*
+     1      (1.0d0 - e4 + 4.0d0*zkp*e2)
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac5 dimensional units are stress^3 times l^-2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac5 = 
+     1    4.0d0*zkp2*ur*ur*ur*(1.0d0 - e2 - 2.0d0*e1*zkp)*
+     2                (1.0d0 - e2 + 2.0d0*e1*zkp)
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac6 dimensional units are stress^3 times l^-2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac6 =
+     1   2.0d0*zkp*ur*ur*(1.0d0 - e4
+     2               - 4.0d0*e2*zkp)*ghu2*r2
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac7 dimensional units are stress^3 times l^-2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac7 =
+     1 ur * ( ( (1.0d0 - e1)*(1.0d0 + e1) )**2)*r1*(r2 - r1)
+     2 * ( ghu2*ghu2 )
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac8 dimensional units are stress^0 times l^-1
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac8 = -2.0d0*zkp*(1.0d0 + e2*(1.0d0 + 2.0d0*zkp*(1.0d0 + zkp))) 
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac9 dimensional units are stress^1 times l^-1
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac9 = 
+     1  ( 4.0d0*zkp*u1 -
+     2 g*h*(r2 - r1)*(1.0d0 + e2*(1.0d0 + 2.0d0*zkp*(1.0d0 + zkp)))
+     3    ) / u2
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac10 dimensional units are stress^2 times l^-1
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac10 =
+     1   -2.0d0*zkp*ur*ur*( 1.0d0 - e2
+     2  - 2.0d0*zkp*e2*(1.0d0 + zkp) )
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac11 dimensional units are stress^2 times l^-1
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac11 =
+     1 ghu2*ur*(r2 - r1)*(1.0d0 - e2*(1.0d0 + 2.0d0*zkp))
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c Other functions may be found in file "apcw0.record"
+c (Nov. 9 1996)
+c The following is a Mathematica version of the isolation of the
+c  coefficeints of the L transform variable s in the denominator.  
+c  Here is where the set-up is performed to obtain the "free decay"
+c  times (with the Hankel transform variable "zk" embedded.  Note that
+c  some greater efficency could be achieved by further simplifying the
+c  combinations of "acn" functions which are now a series of function
+c  subroutines in the fortran code.  The corresponding Mathematica
+c  session is "twolayer.Linversion" dated Nov. 23, 1996.
+c
+c In[59]:=
+c Together[%]
+c Out[59]=
+c    ac2 + ac3 - ac4 + 2 ac5 - 2 ac6 + 2 ac7
+c ---------------------------------------------
+c ac0 - ac1 + ac2 + ac3 - ac4 + ac5 - ac6 + ac7
+c In[61]:=
+c Simplify[Coefficient[els,s^2]]
+c Out[61]=
+c 1
+c In[65]:=
+c eslnos =
+c ac5/(ac0 - ac1 + ac2 + ac3 - ac4 + ac5 - ac6 + ac7) - 
+c    ac6/(ac0 - ac1 + ac2 + ac3 - ac4 + ac5 - ac6 + ac7) + 
+c 
+c   ac7/(ac0 - ac1 + ac2 + ac3 - ac4 + ac5 - ac6 + ac7)
+c    
+c Out[65]=
+c                      ac5
+c --------------------------------------------- - 
+c ac0 - ac1 + ac2 + ac3 - ac4 + ac5 - ac6 + ac7
+c 
+c                        ac6
+c  --------------------------------------------- + 
+c   ac0 - ac1 + ac2 + ac3 - ac4 + ac5 - ac6 + ac7
+c 
+c                        ac7
+c  ---------------------------------------------
+c  ac0 - ac1 + ac2 + ac3 - ac4 + ac5 - ac6 + ac7
+c In[66]:=
+c Simplify[%]
+c Out[66]=
+c                ac5 - ac6 + ac7
+c ---------------------------------------------
+c ac0 - ac1 + ac2 + ac3 - ac4 + ac5 - ac6 + ac7
+c
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c a common denominator factor is: bc
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      bc =  (   ac0 - ac1 +
+     1                     ac2 + ac3
+     2                                 - ac4 + ac5 -
+     3           ac6 + ac7  )
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c b1: Denominator coefficent of s:
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      b1 =
+     1  (  ac2 + ac3
+     2               - ac4 + ( 2.0d0 * ac5 )
+     3                                       - ( 2.0d0 * ac6 )
+     4                                       + ( 2.0d0 * ac7 )   ) / bc
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c b0: Denominator coefficent of s^0:
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      b0 =
+     1 (  ac5 - ac6 +
+     2                 ac7  ) / bc
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c the eigenvaules are just the solution of the quadratic in s:
+c so return as "decay"
+c  *** Note that the decay times are defined as positive ***
+c      if a negative inverse decay time is returned there is an error!
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      sb1 = b1*b1
+      fb0 = 4.0d0*b0
+      diff =  sb1 - fb0          
+      if(diff.le.zero) go to 25
+      rs =  dsqrt( diff )          
+      decay(1) = -( - b1 - rs ) / 2.0d0
+      decay(2) = -( - b1 + rs ) / 2.0d0          
+      go to 26
+   25 idgen = 100
+      go to 9990
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c and for the numerator part of the quadratic s dependence
+c the Mathematica session is:
+c
+c Out[14]=
+c                                                                      2
+c ac10 + ac11 + (2 ac10 + 2 ac11 + ac9) s + (ac10 + ac11 + ac8 + ac9) s
+c----------------------------------------------------------------------
+c            ac0 - ac1 + ac2 + ac3 - ac4 + ac5 - ac6 + ac7
+c
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+   26 a0 = ( ac10 + ac11 ) / bc
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      a1 = ( 2.0d0*( ac10 + ac11 )
+     1                             + ac9 )  / bc
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      a2 =  (ac10 + ac11
+     1                   + ac8 + ac9) / bc
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c and the following terms are the amplitudes of the inverse Laplace
+c transform solution for the non-q part.  (See the boxed equation on
+c page 4 of the Nov. 23 1996 notes.)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      decdif = 1.0d0/(decay(2) - decay(1))
+      amps(1) = -decdif*( decay(1) * ( a1 - a2*decay(1) ) - a0 )
+      amps(2) =  decdif*( decay(2) * ( a1 - a2*decay(2) ) - a0 )
+      amps(3) = a2
+      amps(4) = - decay(1) * amps(1) 
+      amps(5) = - decay(2) * amps(2)
+      go to 999
+ 9990 write(6,998) idgen
+  998 format(' idgen val ** fatal error ** degenerate e.v.'/1h ,1p,1i12) 
+  999 return
+      end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/ojrule.f
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/ojrule.f	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/ojrule.f	(revision 21239)
@@ -0,0 +1,63 @@
+      subroutine ojrule(dk,bcin_w,bcin_dwdt)
+      implicit double precision(a-h,o-z)
+      parameter (nhank = 1024)
+      double precision yvalue_w(nhank),yvalue_dwdt(nhank)
+      double precision bcin_w(nhank),bcin_dwdt(nhank)
+      double precision wok_w,wok_dwdt,rpos
+      double precision swok_w,swok_dwdt
+      double precision pset(7)
+      double precision aswokm_w,aswokm_dwdt,distrad
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      common /blockrad/ distrad
+      common /blockp/ pset
+      common /blocks/ aswokm_w,aswokm_dwdt
+      data zero /0.0d0/, one /1.0d0/, two /2.0d0/, three /3.0d0/,
+     1rescal/ 1.0d0/
+      data yearco /3.15576d7/
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      bath = dk / three
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c rpos should be normalized wrt lithosphere thickness 
+c give r is normalized dist_rad :: r == dist_rad / h
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      r = distrad / (pset(1) / 1.0d3)
+      rpos = r 
+      ak = zero
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c form the yvalue's for the Simpson's rule formulas
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      do 425 ik = 1, nhank
+      ak = ak + dk
+      rak = ak * r
+      rarg = dbesj0( rak )
+      yvalue_w(ik) = bcin_w(ik) * rarg
+      yvalue_dwdt(ik) = bcin_dwdt(ik) * rarg
+  425 continue
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c correct to end point val. in Simp. Rule
+c      yvalue(nhank) = bcin(nhank) * rarg / two
+c find the area under the curve using the Simpson's rule formulas
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      sumde_w = zero
+      sumde_dwdt = zero
+      do 300 int = 1, nhank
+      intp1 = int + 1
+      ide = 2 + ( (-1)**intp1 + 1 )
+      fide = dfloat(ide)
+      sumde_w = ( fide * yvalue_w(int) ) + sumde_w
+      sumde_dwdt = ( fide * yvalue_dwdt(int) ) + sumde_dwdt
+  300 continue
+      wok_w = bath * sumde_w
+      wok_dwdt = bath * sumde_dwdt
+      
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      hscale = sngl(pset(1))
+      hsckm = hscale / 1.0e3
+      swok_w = hscale * sngl(wok_w)
+      aswokm_w = swok_w
+      swok_dwdt = (hscale * yearco * 1.0e3 * sngl(wok_dwdt))
+     1                  * ( sngl(pset(4))/ sngl(pset(2)) )
+      aswokm_dwdt = swok_dwdt
+      return
+
+      end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/pwise.f
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/pwise.f	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/pwise.f	(revision 21239)
@@ -0,0 +1,42 @@
+      subroutine pwise(t,ta,tb,xi1,xi2,xi3,xi4,slope,ycept,decay,
+     1bhaq_w,bhaq_dwdt)
+      implicit double precision (a-h,o-z)
+      double precision decay(2)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c This subroutine retrieves the convolution for the ith linear piece-wise
+c q hat function (the load shape or Bessel function part having
+c been removed) with the free-decay solution. (see notes of
+c 12-31-96 "Convolution in time").  The convolution is returned as "bhaq".
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      tbt = tb - t
+      tat = ta - t
+      gat1 = tat * decay(1)
+      gat2 = tat * decay(2)
+      gbt1 = tbt * decay(1)
+      gbt2 = tbt * decay(2)
+      ea1 = dexp(gat1)
+      ea2 = dexp(gat2)
+      eb1 = dexp(gbt1)
+      eb2 = dexp(gbt2)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c define xit1 term:
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      xit1 =(ycept/decay(1)) * (eb1 - ea1) -
+     1(slope/(decay(1)*decay(1))) *
+     2                            ( (1.0d0 - tb*decay(1))*eb1 
+     3                            - (1.0d0 - ta*decay(1))*ea1 )
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c define xit2 term:
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      xit2 =(ycept/decay(2)) * (eb2 - ea2) -
+     1(slope/(decay(2)*decay(2))) *
+     2                            ( (1.0d0 - tb*decay(2))*eb2 
+     3                            - (1.0d0 - ta*decay(2))*ea2 )
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c add terms for the i-th interval contribution. 
+c ABOVE IS THE NON-DEGENERATE CASE
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      bhaq_w = (xi1 * xit1) + (xi2 * xit2)    
+      bhaq_dwdt = (xi3 * xit1) + (xi4 * xit2)    
+      return
+      end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/qwise.f
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/qwise.f	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/qwise.f	(revision 21239)
@@ -0,0 +1,65 @@
+      subroutine qwise(t,ta,qjadon,xi0,xi1,xi2,xi3,xi4,slope,ycept,
+     1decay,bhaq_w,bhaq_dwdt)
+      implicit double precision (a-h,o-z)
+      double precision decay(2)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c This subroutine retrieves the convolution for the J-th linear piece-wise
+c q hat function (the load shape or Bessel function part having been removed)
+c with the free-decay solution. (see notes of 3-27-97 "convo.ice" Mathematica
+c session).  The convolution is returned as "bhaq".
+c
+c  THIS ROUTINE REPLACES pwise.f ONLY FOR t <  time(Ntime) *
+c  (such that the load is still in place at time t).       *
+c
+c Note irate = 1 case has to be applied to the linear term only (freed.f applies
+c this correction to exponential terms)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      xg1 = xi1/(decay(1)*decay(1))
+      xg2 = xi2/(decay(2)*decay(2))
+      xg3 = xi3/(decay(1)*decay(1))
+      xg4 = xi4/(decay(2)*decay(2))
+      gb1 = decay(1)*ycept
+      gb2 = decay(2)*ycept
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c define xit0 term:
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      xit0_w = (xi0 + qjadon) * ( ( slope * t ) + ycept )
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c define xit1 term:
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      xit1_w = xg1 * (
+     1              gb1 + slope * ( ( t * decay(1) ) - 1.0d0 )
+     2          - ( gb1 + slope * ( ( ta * decay(1) ) - 1.0d0 ))
+     3                                   * dexp( decay(1) * (ta - t) )
+     4                       )
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c define xit2 term:
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      xit2_w = xg2 * (
+     1              gb2 + slope * ( ( t * decay(2) ) - 1.0d0 )
+     2          - ( gb2 + slope * ( ( ta * decay(2) ) - 1.0d0 ) )
+     3                                   * dexp( decay(2) * (ta - t) )
+     4                       )
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c And the rate equivalents:
+c (sign switch due to freed.f already
+c having corrected in x1t, x2t pass).
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      xit0_dwdt = (xi0 + qjadon) * slope 
+      xit1_dwdt =-xg3 * (
+     1              slope  
+     2     + ( gb1 + slope * ( ( ta * decay(1) ) - 1.0d0 ))
+     3                                   * dexp( decay(1) * (ta - t) )
+     4                       )
+      xit2_dwdt =-xg4 * (
+     1              slope 
+     2     + ( gb2 + slope * ( ( ta * decay(2) ) - 1.0d0 ))
+     3                                   * dexp( decay(2) * (ta - t) )
+     4                       )
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c add terms for the J-th (and final) interval contribution.
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      bhaq_w = xit0_w + xit1_w + xit2_w
+      bhaq_dwdt = xit0_dwdt + xit1_dwdt + xit2_dwdt
+      return
+      end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/stot.f
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/stot.f	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/stot.f	(revision 21239)
@@ -0,0 +1,79 @@
+      subroutine stot(ikval,qjadon,fltng_w,fltng_dwdt,Ntimp,Ntimm,
+     1time,bi,dmi)
+      implicit double precision (a-h,o-z)
+      integer Ntimp,Ntimm
+      parameter (Nafter = 1)
+      parameter (nhank = 1024)
+      double precision decay(2)
+      double precision pset(7)
+      double precision time(Ntimp),bi(Ntimm),dmi(Ntimm)
+      double precision dekay1(nhank),dekay2(nhank),amp0(nhank),
+     1amp1(nhank),amp2(nhank),amp3(nhank),amp4(nhank)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      common /blockm/ dekay1,dekay2,amp0,amp1,amp2,amp3,amp4
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c  This subroutine returns the inverse Laplace transform to the
+c  time-domain for the vertical displacement at time t for Hankel wavenumber
+c  ikval.  (In general this routine needs to be called nhank times).
+c  The main derivation uses the Faltung theorem of Laplace transforms.
+c  (1-1-97)  NEW CASE OF 3-27-97 IS FOR t(Ntime + i) < t(Ntime) OR IN OTHER
+c  WORDS, THE LOAD STILL IN PLACE AT t.  OPTION CALL to qwise.f
+c  PERFORMS THIS. 
+c 
+c  A theory for the degenerate case was worked out but has been removed
+c  as an option from this code.
+c
+c  Definition of tspan: nondimensional time span backwards form present
+c                       when this routine is first called the dimensional
+c                       equivalent might be say tspan = 12 ka, then 11 and
+c                       then finally tspan = 0.
+c  Additional note for r.s.l calculations: the routines qwise and pwise
+c  are identical to the previous case for computations of present-day only
+c  vertical deformation field.
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      decay(1) = dekay1(ikval)
+      decay(2) = dekay2(ikval)
+      xi0 = amp0(ikval)
+      xi1 = amp1(ikval)
+      xi2 = amp2(ikval)
+      xi3 = amp3(ikval)
+      xi4 = amp4(ikval)
+
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c note that tspan must be updated in the calling routine "what0.f"
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      t = time(Ntimp)
+      sumb_w = 0.0d0
+      sumb_dwdt = 0.0d0
+      ta = time(1)
+      tb = time(2)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      do 97 i = 1,Ntimm
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c note that this "if" prevents adding load
+c segments of "future" times when computing
+c an r.s.l. history (10-06-98).
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      if(t.lt.ta) go to 97
+      slope=dmi(i)
+      ycept=bi(i)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      if( t . gt . ta . and . t . le . tb) go to 38
+      call pwise(t,ta,tb,xi1,xi2,xi3,xi4,slope,ycept,decay,
+     1bhaq_w,bhaq_dwdt)
+      go to 39
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c Note that qwise is employed only for the J-th Q hat term when t for
+c evaluation still has to consider the load itself
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+   38 call qwise(t,ta,qjadon,xi0,xi1,xi2,xi3,xi4,slope,ycept,decay,
+     1bhaq_w,bhaq_dwdt)
+   39 sumb_w = bhaq_w + sumb_w
+      sumb_dwdt = bhaq_dwdt + sumb_dwdt
+      ta = time(i + 1)
+      tb = time(i + 2)
+   97 continue
+      fltng_w = sumb_w
+      fltng_dwdt = sumb_dwdt
+      return
+      end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/what0.f
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/what0.f	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GiaDeflectionCorex/what0.f	(revision 21239)
@@ -0,0 +1,127 @@
+      subroutine what0(iedge,Ntimp,Ntimm,time,bi,dmi)
+      implicit double precision (a-h,o-z)
+      integer Ntimp,Ntimm
+      parameter (nhank = 1024)
+      parameter (N = nhank/2)
+      double precision dekay1(nhank),dekay2(nhank),amp0(nhank),
+     1amp1(nhank),amp2(nhank),amp3(nhank),amp4(nhank),
+     1zksam(nhank),zksamp(nhank)
+      double precision decay(2),pset(7),amps(5),
+     1decta(2),dyri1(nhank),dyri2(nhank),sna(nhank)
+      double precision cinner_w(nhank),cinner_dwdt(nhank)
+      double precision bcin_w(nhank),bcin_dwdt(nhank)
+      double precision time(Ntimp),bi(Ntimm),dmi(Ntimm)
+      integer maxk
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      common /blockp/ pset
+      common /blockz/ zkp
+      common /blockm/ dekay1,dekay2,amp0,amp1,amp2,amp3,amp4
+      data yearco /3.15576d7/, pi /3.1415926535897932384d0/
+      data g /9.832186d0/, four /4.d0/, two /2.0d0/,
+     1 one /1.0d0/, zero/0.0d0/ , maxk/64/
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      twopi = two * pi
+      r2 = pset(6)
+      u2 = pset(4)
+      r1 = pset(5)
+      u1 = pset(3)
+      h  = pset(1)
+      urat = u1/u2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c  alphap is dimensionless disk radius
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      alphap = pset(7)/pset(1)
+      twoap = two * alphap
+      rghm = ( r1 * g * h * alphap ) / (two * u2)
+      taumx = pset(2)/pset(4)
+      tmxyr = taumx / yearco
+c
+      dfac = dfloat(nhank)/dfloat(maxk)
+      endk = dfloat(nhank)/dfac
+      dk = endk/dfloat(nhank)
+c
+      ak = zero
+      do 7000 ik = 1,nhank
+      ak = ak + dk
+      zkp = ak
+      pikn = (6.371d6 * zkp) / h
+      zkd = pikn / 6.371d6
+c
+      zkp2 = 2.0d0 * zkp
+      zkp4 = 4.0d0 * zkp
+      e1 = dexp(zkp)
+      e2 = dexp(zkp2)
+      e4 = dexp(zkp4)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      call freed(r2,u2,r1,u1,h,zkd,e1,e2,e4,b0,b1,a2,a1,a0,decay,amps)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      decta(1) = decay(1)/tmxyr
+      decta(2) = decay(2)/tmxyr
+      dyri1(ik) = decta(1)
+      dyri2(ik) = decta(2)
+      sna(ik) = pikn
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c Form vectors for full construction in pwise.f and stot.f
+c Note that freed will produce decay spectra defined as positive, 
+c ie. negative decay must reinsert a minus sign.
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      dekay1(ik) = decay(1)
+      dekay2(ik) = decay(2)
+      amp0(ik) = amps(3)  
+      amp1(ik) = amps(1)  
+      amp2(ik) = amps(2)  
+      amp3(ik) = amps(4)  
+      amp4(ik) = amps(5)  
+      zksam(ik) = zkd
+      zksamp(ik) = zkp
+ 7000 continue
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c The following looped call sets up the free solution convolved with the
+c load function q hat.  Note that the returned vector set "cinner" is the
+c inner-most part of the arguement of the inverse Hankel trans. integral.
+c It is time-dependent and the loop is for the k-dependancy. The time for
+c calculation is given in the vector "time(Ntimp)" in the routine stot.f that is
+c called below. Note that the sign on cinner(ik) below is for a load directed
+c downward.   ** For iedge = 1 assume sq. edge load and for iedge = 2 assume an
+c elliptical cross section.  Note loops 8500,8000 and 9500,9000 for the two
+c cases, respectively.
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+   49 go to (8499,9499), iedge
+ 8499 do 8000 ik = 1, nhank
+      xakap = zksamp(ik)*alphap
+      diku = xakap * urat
+      pref = diku / ( diku + rghm )
+      qjadon = one / ( four * zksamp(ik) * urat )
+      call stot(ik,qjadon,fltng_w,fltng_dwdt,Ntimp,Ntimm,time,bi,dmi)
+      cinner_w(ik) = - fltng_w * pref * twoap
+      cinner_dwdt(ik) = - fltng_dwdt * pref * twoap
+      bcin_w(ik) = cinner_w(ik) * dbesj1(xakap)
+      bcin_dwdt(ik) = cinner_dwdt(ik) * dbesj1(xakap)
+ 8000 continue
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c "ojrule.f" computes the inverse Hankel trasform with a simple
+c Simpson's rule.  The routine "ojrule" is buliding a set of solutions stored
+c in common "blocks" in r or "asrpos(nrv) ", and computed rate or displacement
+c for each of N3G disks in "aswokm(nrv,N3G)" . 
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      call ojrule(dk,bcin_w,bcin_dwdt)
+      go to 999
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+ 9499 do 9000 ik = 1, nhank
+      xakap = zksamp(ik)*alphap
+      oxakap = one/xakap
+      diku = xakap * urat
+      pref = diku / ( diku + rghm )
+      qjadon = one / ( four * zksamp(ik) * urat )
+      call stot(ik,qjadon,fltng_w,fltng_dwdt,Ntimp,Ntimm,time,bi,dmi)
+      cinner_w(ik) = - fltng_w * pref * twoap
+      cinner_dwdt(ik) = - fltng_dwdt * pref * twoap
+      bcin_w(ik) = cinner_w(ik) * oxakap * ( dsin(xakap) * oxakap
+     1 - dcos(xakap) )
+      bcin_dwdt(ik) = cinner_dwdt(ik) * oxakap * ( dsin(xakap) * oxakap
+     1 - dcos(xakap) )
+ 9000 continue
+      call ojrule(dk,bcin_w,bcin_dwdt)
+  999 return
+
+      end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Gradjx/Gradjx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Gradjx/Gradjx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Gradjx/Gradjx.cpp	(revision 21239)
@@ -0,0 +1,89 @@
+/*!\file Gradjx
+ * \brief: compute inverse method gradient
+ */
+
+#include "./Gradjx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void Gradjx(Vector<IssmDouble>** pgradient,IssmDouble** pnorm_list, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters){
+
+	int          numberofvertices;
+	int          num_controls,analysisenum;
+	IssmDouble   norm_inf;
+	IssmDouble  *norm_list     = NULL;
+	int     *control_type  = NULL;
+	Vector<IssmDouble>  *gradient      = NULL;
+	Vector<IssmDouble> **gradient_list = NULL;
+
+	/*Display message*/
+	if(VerboseModule()) _printf0_("   Computing cost function gradient\n");
+
+	/*retrieve some parameters: */
+	parameters->FindParam(&num_controls,InversionNumControlParametersEnum);   _assert_(num_controls);
+	parameters->FindParam(&control_type,NULL,InversionControlParametersEnum);
+	numberofvertices=vertices->NumberOfVertices();
+
+	/*Get current analysis*/
+	parameters->FindParam(&analysisenum,AnalysisTypeEnum);
+	Analysis* analysis = EnumToAnalysis(analysisenum);
+
+	/*Allocate gradient_list */
+	gradient_list = xNew<Vector<IssmDouble>*>(num_controls);
+	norm_list = xNew<IssmDouble>(num_controls);
+	for(int i=0;i<num_controls;i++){
+		gradient_list[i]=new Vector<IssmDouble>(num_controls*numberofvertices);
+	}
+	gradient=new Vector<IssmDouble>(num_controls*numberofvertices);
+
+	/*Compute all gradient_list*/
+	for(int i=0;i<num_controls;i++){
+		for(int j=0;j<elements->Size();j++){
+			Element* element=(Element*)elements->GetObjectByOffset(j);
+			analysis->GradientJ(gradient_list[i],element,control_type[i],i);
+		}
+		gradient_list[i]->Assemble();
+		norm_list[i]=gradient_list[i]->Norm(NORM_INF);
+	}
+
+	/*Add all gradient_list together*/
+	for(int i=0;i<num_controls;i++){
+		gradient->AXPY(gradient_list[i],1.0);
+		delete gradient_list[i];
+	}
+
+	/*Check that gradient is clean*/
+	norm_inf=gradient->Norm(NORM_INF);
+	if(norm_inf<=0)                 _error_("||dJ/dk|| = 0    gradient norm is zero");
+	if(xIsNan<IssmDouble>(norm_inf))_error_("||dJ/dk|| = NaN  gradient norm is NaN");
+
+	/*Clean-up and assign output pointer*/
+	delete analysis;
+	xDelete<Vector<IssmDouble>*>(gradient_list);
+	xDelete<int>(control_type);
+	if(pnorm_list){
+		*pnorm_list=norm_list;
+	}
+	else{
+		xDelete<IssmDouble>(norm_list);
+	}
+	if(pgradient)  *pgradient=gradient;
+
+}
+void Gradjx(IssmDouble** pgradient,IssmDouble** pnorm_list, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters){
+
+	/*output: */
+	IssmDouble* gradient=NULL;
+
+	/*intermediary: */
+	Vector<IssmDouble>* vec_gradient=NULL;
+
+	Gradjx(&vec_gradient,pnorm_list,elements,nodes, vertices,loads,materials,parameters);
+	gradient=vec_gradient->ToMPISerial();
+
+	/*Free ressources:*/
+	delete vec_gradient;
+
+	/*Assign output pointers:*/
+	*pgradient=gradient;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Gradjx/Gradjx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Gradjx/Gradjx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Gradjx/Gradjx.h	(revision 21239)
@@ -0,0 +1,15 @@
+/*!\file:  Gradjx.h
+ * \brief header file for inverse methods gradient computation
+ */ 
+
+#ifndef _GRADJX_H
+#define _GRADJX_H
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+/* local prototypes: */
+void Gradjx(Vector<IssmDouble>** pgrad_g,IssmDouble** pgrad_norm,Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters);
+void Gradjx(IssmDouble** pgrad_g,IssmDouble** pgrad_norm,Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters);
+
+#endif  /* _GRADJX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp	(revision 21239)
@@ -0,0 +1,193 @@
+/*!\file GroundinglineMigrationx
+ * \brief: migration grounding line position.
+ */
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "./GroundinglineMigrationx.h"
+
+void GroundinglineMigrationx(Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters){
+
+	int                 migration_style,analysis_type;
+	IssmDouble         *vertices_potentially_ungrounding = NULL;
+	IssmDouble         *phi_ungrounding                  = NULL;
+	Element            *element                          = NULL;
+
+
+	/*retrieve parameters: */
+	parameters->FindParam(&migration_style,GroundinglineMigrationEnum);
+	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	if(migration_style==NoneEnum) return;
+	
+	if(VerboseModule()) _printf0_("   Migrating grounding line\n");
+
+	/*Set toolkit to default*/
+	ToolkitsOptionsFromAnalysis(parameters,DefaultAnalysisEnum);
+
+	switch(migration_style){
+		case SoftMigrationEnum:
+			/*Create flag for grounded vertices above the hydrostatic equilibrium: */
+			vertices_potentially_ungrounding=PotentialUngrounding(elements,vertices,parameters);
+			/*propagate ice shelf into connex areas of the ice sheet that potentially want to unground: */
+			phi_ungrounding=PropagateFloatingiceToGroundedNeighbors(elements,nodes,vertices,parameters,vertices_potentially_ungrounding);
+			break;
+		case ContactEnum:
+			phi_ungrounding=ContactFSLevelset(elements,vertices);
+			break;
+		case AggressiveMigrationEnum:
+		case SubelementMigrationEnum:
+		case SubelementMigration2Enum:
+		case GroundingOnlyEnum:
+			/*Nothing additional to do here, MigrateGroundingLine takes care of everything*/
+			break;
+		default:
+			_error_("Grounding line migration "<<EnumToStringx(migration_style) << " not supported yet!");
+	}
+
+	/*Migrate grounding line : */
+	for(int i=0;i<elements->Size();i++){
+		element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		element->MigrateGroundingLine(phi_ungrounding);
+	}
+
+	/*free ressouces: */
+	xDelete<IssmDouble>(vertices_potentially_ungrounding);
+	xDelete<IssmDouble>(phi_ungrounding);
+}
+
+IssmDouble*    ContactFSLevelset(Elements* elements,Vertices* vertices){ /*{{{*/
+
+	Vector<IssmDouble>* vertexgrounded = NULL;
+	Vector<IssmDouble>* vertexfloating = NULL;
+	IssmDouble*  serial_vertexgrounded = NULL;
+	IssmDouble*  serial_vertexfloating = NULL;
+	IssmDouble*  phi                   = NULL;
+
+	/*Initialize vector with number of vertices*/
+	int numberofvertices = vertices->NumberOfVertices();
+	vertexgrounded = new Vector<IssmDouble>(numberofvertices);
+	vertexfloating = new Vector<IssmDouble>(numberofvertices);
+	phi            = xNew<IssmDouble>(numberofvertices);
+
+	/*Fill vector vertices_potentially_floating: */
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		element->FSContactMigration(vertexgrounded,vertexfloating);
+	}
+
+	/*Assemble vector and serialize */
+	vertexgrounded->Assemble();
+	vertexfloating->Assemble();
+	serial_vertexgrounded=vertexgrounded->ToMPISerial();
+	serial_vertexfloating=vertexfloating->ToMPISerial();
+	for(int i=0;i<numberofvertices;i++){
+			if (serial_vertexgrounded[i]==1. && serial_vertexfloating[i]==1.) phi[i]=0.;
+			else if (serial_vertexgrounded[i]==1) phi[i]=1;
+			else if (serial_vertexfloating[i]==1) phi[i]=-1;
+			else if (serial_vertexgrounded[i]>10) phi[i]=9999;
+			else phi[i]=-9999;
+	}
+
+	/*free ressouces and return: */
+	delete vertexgrounded;
+	delete vertexfloating;
+	xDelete<IssmDouble>(serial_vertexgrounded);
+	xDelete<IssmDouble>(serial_vertexfloating);
+
+	return phi;
+}
+/*}}}*/
+IssmDouble*    PotentialUngrounding(Elements* elements,Vertices* vertices,Parameters* parameters){ /*{{{*/
+
+	int                 i,numberofvertices;
+	IssmDouble*         vertices_potentially_ungrounding      = NULL;
+	Vector<IssmDouble>* vec_vertices_potentially_ungrounding  = NULL;
+	Element*            element                               = NULL;
+
+	/*Initialize vector with number of vertices*/
+	numberofvertices=vertices->NumberOfVertices();
+	vec_vertices_potentially_ungrounding=new Vector<IssmDouble>(numberofvertices); //grounded vertex that could start floating
+
+	/*Fill vector vertices_potentially_floating: */
+	for(i=0;i<elements->Size();i++){
+		element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		element->PotentialUngrounding(vec_vertices_potentially_ungrounding);
+	}
+
+	/*Assemble vector and serialize */
+	vec_vertices_potentially_ungrounding->Assemble();
+	vertices_potentially_ungrounding=vec_vertices_potentially_ungrounding->ToMPISerial();
+
+	/*free ressouces and return: */
+	delete vec_vertices_potentially_ungrounding;
+	return vertices_potentially_ungrounding;
+}
+/*}}}*/
+IssmDouble*    PropagateFloatingiceToGroundedNeighbors(Elements* elements,Nodes* nodes,Vertices* vertices,Parameters* parameters,IssmDouble* vertices_potentially_ungrounding){ /*{{{*/
+	int                 i,analysis_type;
+	int                 nflipped,local_nflipped;
+	IssmDouble*         phi                                  = NULL;
+	IssmDouble*         elements_neighboring_floatingce      = NULL;
+	Vector<IssmDouble>* vec_elements_neighboring_floatingice = NULL;
+	Vector<IssmDouble>* vec_phi                              = NULL;
+	Element*            element                               = NULL;
+
+	/*recover parameters: */
+	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	/*recover vec_phi*/
+	vec_phi=new Vector<IssmDouble>(vertices->NumberOfVertices());
+	for(i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		element->GetVectorFromInputs(vec_phi,MaskGroundediceLevelsetEnum,VertexPIdEnum);
+	}
+	vec_phi->Assemble();
+	phi=vec_phi->ToMPISerial();
+
+	nflipped=1; //bootstrap
+	while(nflipped){
+
+		/*Vector of size number of elements*/
+		vec_elements_neighboring_floatingice=new Vector<IssmDouble>(elements->NumberOfElements(),true);
+
+		/*Figure out if any of the nodes of the element will be floating -> elements neighbouting the floating ice*/
+		for(i=0;i<elements->Size();i++){
+			element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+			vec_elements_neighboring_floatingice->SetValue(element->Sid(),element->IsNodeOnShelfFromFlags(phi)?1.0:0.0,INS_VAL);
+		}
+
+		/*Assemble vector and serialize: */
+		vec_elements_neighboring_floatingice->Assemble();
+		elements_neighboring_floatingce=vec_elements_neighboring_floatingice->ToMPISerial();
+
+		/*Go through elements_neighboring_floatingce, and update vector of the nodes that will start floating*/
+		local_nflipped=0;
+		for(i=0;i<elements->Size();i++){
+			element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+			if(reCast<int,IssmDouble>(elements_neighboring_floatingce[element->Sid()])){
+				local_nflipped+=element->UpdatePotentialUngrounding(vertices_potentially_ungrounding,vec_phi,phi);
+			}
+		}
+		vec_phi->Assemble();
+
+		ISSM_MPI_Allreduce(&local_nflipped,&nflipped,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
+		if(VerboseConvergence()) _printf0_("   Additional number of vertices allowed to unground: " << nflipped << "\n");
+
+		/*Avoid leaks: */
+		xDelete<IssmDouble>(elements_neighboring_floatingce);
+		xDelete<IssmDouble>(phi);
+
+		/*Assemble and serialize:*/
+		delete vec_elements_neighboring_floatingice;
+		phi=vec_phi->ToMPISerial();
+	}
+
+	/*Free ressources:*/
+	delete vec_phi;
+	xDelete<IssmDouble>(elements_neighboring_floatingce);
+
+	return phi;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.h	(revision 21239)
@@ -0,0 +1,18 @@
+/*!\file:  GroundinglineMigrationx.h
+ * \brief header file for Grounding Line Migration
+ */ 
+
+#ifndef _GROUNDINGLINEMIGRATIONX_H
+#define _GROUNDINGLINEMIGRATIONX_H
+
+class Elements;
+class Vertices;
+class Nodes;
+class Parameters;
+
+/* local prototypes: */
+void         GroundinglineMigrationx(Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters);
+IssmDouble*  ContactFSLevelset(Elements* elements,Vertices* vertices);
+IssmDouble*  PotentialUngrounding(Elements* elements,Vertices* vertices,Parameters* parameters);
+IssmDouble*  PropagateFloatingiceToGroundedNeighbors(Elements* elements,Nodes* nodes,Vertices* vertices,Parameters* parameters,IssmDouble* vertices_potentially_ungrounding);
+#endif  /* _GROUNDINGLINEMIGRATIONX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.cpp	(revision 21239)
@@ -0,0 +1,15 @@
+/*!\file InputDepthAverageAtBasex
+ * \brief: extrude input
+ */
+
+#include "./InputDepthAverageAtBasex.h"
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+#include "../../toolkits/toolkits.h"
+
+void InputDepthAverageAtBasex(FemModel* femmodel,int original_enum, int new_enum){
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->InputDepthAverageAtBase(original_enum,new_enum);
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  InputDepthAverageAtBasex.h
+ * \brief header file for field extrusion
+ */ 
+
+#ifndef _INPUTDEPTHAVERAGEATBASEX_H
+#define _INPUTDEPTHAVERAGEATBASEX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void InputDepthAverageAtBasex(FemModel* femmodel,int reinitialized_enum, int original_enum);
+
+#endif  /* _INPUTDUPLICATEX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputDuplicatex/InputDuplicatex.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputDuplicatex/InputDuplicatex.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputDuplicatex/InputDuplicatex.cpp	(revision 21239)
@@ -0,0 +1,16 @@
+/*!\file InputDuplicatex
+ * \brief: duplicte  an input inside the elements, onto another, and wipe it off.
+ */
+
+#include "./InputDuplicatex.h"
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+#include "../../toolkits/toolkits.h"
+
+void InputDuplicatex(FemModel* femmodel,int original_enum, int new_enum){
+	/*Go through elemnets, and ask to reinitialie the input: */
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->InputDuplicate(original_enum,new_enum);
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputDuplicatex/InputDuplicatex.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputDuplicatex/InputDuplicatex.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputDuplicatex/InputDuplicatex.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  InputDuplicatex.h
+ * \brief header file for field extrusion
+ */ 
+
+#ifndef _INPUTDUPLICATEX_H
+#define _INPUTDUPLICATEX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void InputDuplicatex(FemModel* femmodel,int reinitialized_enum, int original_enum);
+
+#endif  /* _INPUTDUPLICATEX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputExtrudex/InputExtrudex.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputExtrudex/InputExtrudex.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputExtrudex/InputExtrudex.cpp	(revision 21239)
@@ -0,0 +1,15 @@
+/*!\file InputExtrudex
+ * \brief: extrude input
+ */
+
+#include "./InputExtrudex.h"
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+#include "../../toolkits/toolkits.h"
+
+void InputExtrudex(FemModel* femmodel,int input_enum,int start){
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->InputExtrude(input_enum,start);
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputExtrudex/InputExtrudex.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputExtrudex/InputExtrudex.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputExtrudex/InputExtrudex.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  InputExtrudex.h
+ * \brief header file for field extrusion
+ */ 
+
+#ifndef _INPUTEXTRUDEX_H
+#define _INPUTEXTRUDEX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void InputExtrudex(FemModel* femmodel,int input_enum,int start);
+
+#endif  /* _INPUTDUPLICATEX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromConstantx/InputUpdateFromConstantx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromConstantx/InputUpdateFromConstantx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromConstantx/InputUpdateFromConstantx.cpp	(revision 21239)
@@ -0,0 +1,83 @@
+/*!\file InputUpdateFromConstantx
+ * \brief: update datasets using  parameter inputs
+ */
+
+#include "./InputUpdateFromConstantx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void InputUpdateFromConstantx(FemModel* femmodel,bool constant, int name){
+
+	int i;
+	if(VerboseModule()) _printf0_("   Input updates from constant\n");
+
+	/*Elements and loads drive the update: */
+	for(i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->InputUpdateFromConstant(constant,name);
+	}
+
+	for(i=0;i<femmodel->loads->Size();i++){
+		Load* load=(Load*)femmodel->loads->GetObjectByOffset(i);
+		load->InputUpdateFromConstant(constant,name);
+	}
+
+	for(i=0;i<femmodel->materials->Size();i++){
+		Material* material=(Material*)femmodel->materials->GetObjectByOffset(i);
+		material->InputUpdateFromConstant(constant,name);
+	}
+}
+void InputUpdateFromConstantx(FemModel* femmodel,int constant, int name){
+
+	int i;
+	if(VerboseModule()) _printf0_("   Input updates from constant\n");
+
+	/*Elements and loads drive the update: */
+	for(i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->InputUpdateFromConstant(constant,name);
+	}
+
+	for(i=0;i<femmodel->loads->Size();i++){
+		Load* load=(Load*)femmodel->loads->GetObjectByOffset(i);
+		load->InputUpdateFromConstant(constant,name);
+	}
+
+	for(i=0;i<femmodel->materials->Size();i++){
+		Material* material=(Material*)femmodel->materials->GetObjectByOffset(i);
+		material->InputUpdateFromConstant(constant,name);
+	}
+}
+void InputUpdateFromConstantx(FemModel* femmodel,IssmDouble constant, int name){
+
+	int i;
+	if(VerboseModule()) _printf0_("   Input updates from constant\n");
+
+	/*Elements and loads drive the update: */
+	for(i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->InputUpdateFromConstant(constant,name);
+	}
+
+	for(i=0;i<femmodel->loads->Size();i++){
+		Load* load=(Load*)femmodel->loads->GetObjectByOffset(i);
+		load->InputUpdateFromConstant(constant,name);
+	}
+
+	for(i=0;i<femmodel->materials->Size();i++){
+		Material* material=(Material*)femmodel->materials->GetObjectByOffset(i);
+		material->InputUpdateFromConstant(constant,name);
+	}
+
+}
+void InputUpdateFromConstantx(Elements* elements,IssmDouble constant, int name){
+
+	int i;
+	if(VerboseModule()) _printf0_("   Input updates from constant\n");
+
+	/*Elements and loads drive the update: */
+	for(i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		element->InputUpdateFromConstant(constant,name);
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromConstantx/InputUpdateFromConstantx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromConstantx/InputUpdateFromConstantx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromConstantx/InputUpdateFromConstantx.h	(revision 21239)
@@ -0,0 +1,16 @@
+/*!\file:  InputUpdateFromConstantx.h
+ * \brief header file for updating datasets from inputs
+ */ 
+
+#ifndef _UPDATEINPUTSFROMCONSTANTXX_H
+#define _UPDATEINPUTSFROMCONSTANTXX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void InputUpdateFromConstantx(FemModel* femmodel,bool       constant,int name);
+void InputUpdateFromConstantx(FemModel* femmodel,int        constant,int name);
+void InputUpdateFromConstantx(FemModel* femmodel,IssmDouble constant,int name);
+void InputUpdateFromConstantx(Elements* elements,IssmDouble constant,int name);
+
+#endif  /* _UPDATEINPUTSFROMCONSTANTXX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp	(revision 21239)
@@ -0,0 +1,108 @@
+/*!\file InputUpdateFromDakotax
+ * \brief: update datasets using  parameter inputs
+ */
+
+#include "./InputUpdateFromDakotax.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.h"
+#include "../InputUpdateFromConstantx/InputUpdateFromConstantx.h"
+#include "../InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h"
+
+void InputUpdateFromDakotax(FemModel* femmodel,double* variables,char* *variables_descriptors,int numvariables){
+
+	int     i,j,k,l;
+	int     dummy;
+
+	int     numberofvertices;
+	int     nrows;
+	int     ncols;
+	int     npart;
+	double *qmu_part  = NULL;
+
+	double *distributed_values = NULL;
+	double *parameter          = NULL;
+	char   *descriptor         = NULL;
+	char    root[50]; //root name of variable, ex: DragCoefficent, RhoIce, etc ...
+
+	/*retrieve parameters: */
+	femmodel->parameters->FindParam(&npart,QmuNumberofpartitionsEnum);
+	femmodel->parameters->FindParam(&qmu_part,&dummy,QmuPartitionEnum);
+	numberofvertices=femmodel->vertices->NumberOfVertices();
+
+	/*Go through all dakota descriptors, ex: "rho_ice","thermal_conductivity","thickness1","thickness2", etc ..., and 
+	 * for each descriptor, take the variable value and plug it into the inputs: */
+
+	for(i=0;i<numvariables;i++){
+
+		descriptor=variables_descriptors[i];
+
+		/*From descriptor, figure out if the variable is scaled, indexed, nodal, or just a simple variable: */
+		if (strncmp(descriptor,"scaled_",7)==0){
+
+			/*Variable is scaled. Determine root name of variable (ex: scaled_DragCoefficient_1 -> DragCoefficient). Allocate distributed_values and fill the 
+			 * distributed_values with the next npart variables: */
+
+			//strcpy(root,strstr(descriptor,"_")+1); *strstr(root,"_")='\0';
+			memcpy(root,strstr(descriptor,"_")+1,(strlen(strstr(descriptor,"_")+1)+1)*sizeof(char));
+			*strstr(root,"_")='\0';
+
+			distributed_values=xNew<double>(npart);
+			for(j=0;j<npart;j++){
+				distributed_values[j]=variables[i+j];
+			}
+
+			/*Now, pick up the parameter corresponding to root: */
+			femmodel->parameters->FindParam(&parameter,&nrows,&ncols,StringToEnumx(root));
+
+			/*We've got the parameter, we need to update it using qmu_part (a partitioning vector), 
+			 * and the distributed_values. Two cases: we either have a nrows=numberofvertices, in 
+			 * which case our parameter is a vector, or nrows=numberofvertices+1, in which case, 
+			 * our parameter is a transient vector. Deal with both cases accordingly: */
+			for(k=0;k<numberofvertices;k++){
+				for(l=0;l<ncols;l++){
+					*(parameter+ncols*k+l)=*(parameter+ncols*k+l)*distributed_values[(int)qmu_part[k]];
+				}
+			}
+
+			#ifdef _DEBUG_
+				PetscSynchronizedPrintf(IssmComm::GetComm(),"Parameter matrix:");
+				PetscSynchronizedFlush(IssmComm::GetComm());
+				for(l=0;l<ncols;l++){
+					PetscSynchronizedPrintf(IssmComm::GetComm()," time %i\n",l);
+					PetscSynchronizedFlush(IssmComm::GetComm());
+
+					for(k=0;k<numberofvertices;k++){
+						PetscSynchronizedPrintf(IssmComm::GetComm()," node %i value %g\n",k+1,*(parameter+k*ncols+l));
+						PetscSynchronizedFlush(IssmComm::GetComm());
+					}
+				}
+				PetscSynchronizedPrintf(IssmComm::GetComm()," descriptor: %s root %s enum: %i\n",descriptor,root,StringToEnumx(root));
+				PetscSynchronizedFlush(IssmComm::GetComm());
+			#endif
+
+			/*Update inputs using the parameter matrix: */
+			InputUpdateFromMatrixDakotax(femmodel, parameter, nrows,ncols,StringToEnumx(root), VertexEnum);
+
+			/*increment i to skip the distributed values just collected: */
+			i+=npart-1; //careful, the for loop will add 1.
+
+			/*Free allocations: */
+			xDelete<double>(parameter);
+			xDelete<double>(distributed_values);
+		}
+		else if (strncmp(descriptor,"indexed_",8)==0){
+			_error_("indexed variables not supported yet!");
+		}
+		else if (strncmp(descriptor,"nodal_",8)==0){
+			_error_("nodal variables not supported yet!");
+		}
+		else{
+			/*Ok, standard variable, just update inputs using the variable: */
+			InputUpdateFromConstantx(femmodel,variables[i],StringToEnumx(descriptor));
+		}
+	}
+
+	/*Free ressources:*/
+	xDelete<double>(qmu_part);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.h	(revision 21239)
@@ -0,0 +1,12 @@
+/*!\file:  InputUpdateFromDakotax.h
+ * \brief header file for updating datasets from inputs
+ */ 
+
+#ifndef _INPUTUPDATEFROMDAKOTAXX_H
+#define _INPUTUPDATEFROMDAKOTAXX_H
+
+#include "../../classes/classes.h"
+
+void  InputUpdateFromDakotax(FemModel* femmodel,double* variables,char* *variables_descriptors,int numvariables);
+
+#endif  /* _INPUTUPDATEFROMDAKOTAXX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp	(revision 21239)
@@ -0,0 +1,34 @@
+/*!\file InputUpdateFromMatrixDakotax
+ * \brief: update datasets using  parameter inputs
+ */
+
+#include "./InputUpdateFromMatrixDakotax.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h"
+
+void InputUpdateFromMatrixDakotax(FemModel* femmodel,double* matrix,int nrows,int ncols, int name, int type){
+
+	int i;
+	int numberofvertices;
+
+	numberofvertices=femmodel->vertices->NumberOfVertices();
+
+	if((ncols==1) && (nrows==numberofvertices)) InputUpdateFromVectorDakotax(femmodel,matrix,name,type);
+	else{
+
+		/*Update elements, nodes, loads and materials from inputs: */
+		for(i=0;i<femmodel->elements->Size();i++){
+			Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+			element->InputUpdateFromMatrixDakota(matrix,nrows,ncols,name,type);
+		}
+		for(i=0;i<femmodel->loads->Size();i++){
+			Load* load=(Load*)femmodel->loads->GetObjectByOffset(i);
+			load->InputUpdateFromMatrixDakota(matrix,nrows,ncols,name,type);
+		}
+		for(i=0;i<femmodel->materials->Size();i++){
+			Material* material=(Material*)femmodel->materials->GetObjectByOffset(i);
+			material->InputUpdateFromMatrixDakota(matrix,nrows,ncols,name,type);
+		}
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  InputUpdateFromMatrixDakotax.h
+ * \brief header file for updating datasets from inputs
+ */ 
+
+#ifndef _UPDATEINPUTSFROMMATRIXDAKOTAXX_H
+#define _UPDATEINPUTSFROMMATRIXDAKOTAXX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void InputUpdateFromMatrixDakotax(FemModel* femmodel,double* matrix,int nrows,int ncols, int name, int type);
+
+#endif  /* _UPDATEINPUTSFROMMATRIXDAKOTAXX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.cpp	(revision 21239)
@@ -0,0 +1,36 @@
+/*!\file InputUpdateFromSolutionx
+ * \brief: update datasets using  parameter inputs
+ */
+
+#include "./InputUpdateFromSolutionx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void InputUpdateFromSolutionx(FemModel* femmodel,Vector<IssmDouble>* solution){
+
+	/*Serialize solution, so that elements can index into it on every CPU: */
+	IssmDouble* serial_solution=solution->ToMPISerial();
+
+	/*Call overloaded form of InputUpdateFromSolutionx: */
+	InputUpdateFromSolutionx(femmodel,serial_solution);
+
+	/*cleanup and return*/
+	xDelete<IssmDouble>(serial_solution);
+}
+
+void InputUpdateFromSolutionx(FemModel* femmodel,IssmDouble* solution){
+
+	/*retrive parameters: */
+	int analysisenum;
+	femmodel->parameters->FindParam(&analysisenum,AnalysisTypeEnum);
+
+	/*Display message*/
+	if(VerboseModule()) _printf0_("   Updating inputs from solution\n");
+
+	Analysis* analysis = EnumToAnalysis(analysisenum);
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		analysis->InputUpdateFromSolution(solution,element);
+	}
+	delete analysis;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.h	(revision 21239)
@@ -0,0 +1,15 @@
+/*!\file:  InputUpdateFromSolutionx.h
+ * \brief header file for updating datasets from inputs
+ */ 
+
+#ifndef _UPDATEINPUTSFROMSOLUTIONXX_H
+#define _UPDATEINPUTSFROMSOLUTIONXX_H
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+/* local prototypes: */
+void	InputUpdateFromSolutionx(FemModel* femmodel,Vector<IssmDouble>* solution);
+void  InputUpdateFromSolutionx(FemModel* femmodel,IssmDouble* solution);
+
+#endif  /* _UPDATEINPUTSFROMSOLUTIONXX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp	(revision 21239)
@@ -0,0 +1,35 @@
+/*!\file InputUpdateFromVectorDakotax
+ * \brief: update datasets using  parameter inputs
+ */
+
+#include "./InputUpdateFromVectorDakotax.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void InputUpdateFromVectorDakotax(FemModel* femmodel,Vector<IssmDouble>* vector, int name, int type){
+
+	IssmDouble* serial_vector=vector->ToMPISerial();
+	InputUpdateFromVectorDakotax(femmodel,serial_vector,name, type);
+
+	/*Free ressources:*/
+	xDelete<double>(serial_vector);
+}
+
+void InputUpdateFromVectorDakotax(FemModel* femmodel,IssmDouble* vector, int name, int type){
+
+	int i;
+
+	/*Update elements, nodes, loads and materials from inputs: */
+	for(i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->InputUpdateFromVectorDakota(vector,name,type);
+	}
+	for(i=0;i<femmodel->loads->Size();i++){
+		Load* load=(Load*)femmodel->loads->GetObjectByOffset(i);
+		load->InputUpdateFromVectorDakota(vector,name,type);
+	}
+	for(i=0;i<femmodel->materials->Size();i++){
+		Material* material=(Material*)femmodel->materials->GetObjectByOffset(i);
+		material->InputUpdateFromVectorDakota(vector,name,type);
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  InputUpdateFromVectorDakotax.h
+ * \brief header file for updating datasets from inputs
+ */ 
+
+#ifndef _UPDATEINPUTSFROMVECTORDAKOTAXX_H
+#define _UPDATEINPUTSFROMVECTORDAKOTAXX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void	InputUpdateFromVectorDakotax(FemModel* femmodel,Vector<IssmDouble>* vector, int name,int type);
+void	InputUpdateFromVectorDakotax(FemModel* femmodel,IssmDouble* vector, int name,int type);
+
+#endif  /* _UPDATEINPUTSFROMVECTORDAKOTAXX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp	(revision 21239)
@@ -0,0 +1,33 @@
+/*!\file InputUpdateFromVectorx
+ * \brief: update datasets using  parameter inputs
+ */
+
+#include "./InputUpdateFromVectorx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void InputUpdateFromVectorx(FemModel* femmodel,Vector<IssmDouble>* vector, int name, int type){
+
+	IssmDouble* serial_vector=vector->ToMPISerial();
+	InputUpdateFromVectorx(femmodel,serial_vector,name,type);
+	xDelete<IssmDouble>(serial_vector);
+}
+
+void InputUpdateFromVectorx(FemModel* femmodel,IssmDouble* vector, int name, int type){
+
+	int i;
+
+	/*Update elements, nodes, loads and materials from inputs: */
+	for(i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->InputUpdateFromVector(vector,name,type);
+	}
+	for(i=0;i<femmodel->loads->Size();i++){
+		Load* load=(Load*)femmodel->loads->GetObjectByOffset(i);
+		load->InputUpdateFromVector(vector,name,type);
+	}
+	for(i=0;i<femmodel->materials->Size();i++){
+		Material* material=(Material*)femmodel->materials->GetObjectByOffset(i);
+		material->InputUpdateFromVector(vector,name,type);
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromVectorx/InputUpdateFromVectorx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromVectorx/InputUpdateFromVectorx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InputUpdateFromVectorx/InputUpdateFromVectorx.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  InputUpdateFromVectorx.h
+ * \brief header file for updating datasets from inputs
+ */ 
+
+#ifndef _UPDATEINPUTSFROMVECTORXX_H
+#define _UPDATEINPUTSFROMVECTORXX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void	InputUpdateFromVectorx(FemModel* femmodel,Vector<IssmDouble>* vector, int name,int type);
+void	InputUpdateFromVectorx(FemModel* femmodel,IssmDouble* vector, int name,int type);
+
+#endif  /* _UPDATEINPUTSFROMVECTORXX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp	(revision 21239)
@@ -0,0 +1,315 @@
+/*!\file:  InterpFromGridToMeshx.cpp
+ * \brief  "c" core code for interpolating values from a structured grid.
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <cstring>
+#include "./InterpFromGridToMeshx.h"
+#include "../../shared/shared.h"
+#include "../../shared/io/io.h"
+
+/*InterpFromGridToMeshx{{{*/
+int InterpFromGridToMeshx(IssmSeqVec<IssmPDouble>** pdata_mesh,double* x_in, int x_rows, double* y_in, int y_rows, double* data, int M, int N, double* x_mesh, double* y_mesh, int nods,double default_value,const char* interptype){
+
+	/*output: */
+	IssmSeqVec<IssmPDouble>* data_mesh=NULL;
+
+	/*Intermediary*/
+	double* x=NULL;
+	double* y=NULL;
+	int     i;
+
+	/*Some checks on arguments: */
+	if ((M<2) || (N<2) || (nods<=0)){
+		_error_("nothing to be done according to the dimensions of input matrices and vectors.");
+	}
+	if (x_in[1]-x_in[0]<0){
+		_error_("x coordinate vector should be increasing.\n   use Matlab's command x=flipud(x), also flip the data matrix data=fliplr(data)");
+	}
+	if (y_in[1]-y_in[0]<0){
+		_error_("y coordinate vector should be increasing.\n   use Matlab's command y=flipud(y), also flip the data matrix data=flipud(data)");
+	}
+
+	/*Allocate output vector: */
+	data_mesh=new IssmSeqVec<IssmPDouble>(nods);
+
+	/*Find out what kind of coordinates (x_in,y_in) have been given is input*/
+	if(N==(x_rows-1) && M==(y_rows-1)){
+
+		/*The coordinates given in input describe the contour of each pixel. Take the center of each pixel*/
+		x=xNew<double>(N);
+		y=xNew<double>(M);
+		for(i=0;i<N;i++) x[i]=(x_in[i]+x_in[i+1])/2.;
+		for(i=0;i<M;i++) y[i]=(y_in[i]+y_in[i+1])/2.;
+		x_rows=x_rows-1;
+		y_rows=y_rows-1;
+	}
+	else if (N==x_rows && M==y_rows){
+
+		/*The coordinates given in input describe the center each pixel. Keep them*/
+		x=xNew<double>(N);
+		y=xNew<double>(M);
+		for(i=0;i<N;i++) x[i]=x_in[i];
+		for(i=0;i<M;i++) y[i]=y_in[i];
+	}
+	else{
+		_error_("x and y vectors length should be 1 or 0 more than data number of rows.");
+	}
+
+	/*initialize thread parameters: */
+	InterpFromGridToMeshxThreadStruct gate;
+	gate.x_mesh        = x_mesh;
+	gate.y_mesh        = y_mesh;
+	gate.x_rows        = x_rows;
+	gate.y_rows        = y_rows;
+	gate.x             = x;
+	gate.y             = y;
+	gate.nods          = nods;
+	gate.data_mesh     = data_mesh;
+	gate.data          = data;
+	gate.default_value = default_value;
+	gate.interp        = interptype;
+	gate.M             = M;
+	gate.N             = N;
+
+	/*launch the thread manager with InterpFromGridToMeshxt as a core: */
+	LaunchThread(InterpFromGridToMeshxt,(void*)&gate,_NUMTHREADS_);
+	_printf_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+
+	/*Assign output pointers:*/
+	*pdata_mesh=data_mesh;
+	return 1;
+}
+/*}}}*/
+/*InterpFromGridToMeshxt {{{*/
+void* InterpFromGridToMeshxt(void* vpthread_handle){
+
+	/*gate variables :*/
+	InterpFromGridToMeshxThreadStruct *gate    = NULL;
+	pthread_handle                    *handle  = NULL;
+	int my_thread;
+	int num_threads;
+	int i0,i1;
+
+	/*intermediary: */
+	int    i,m,n;
+	double x_grid;
+	double y_grid;
+	double data_value;
+	double x1,x2,y1,y2;
+	double Q11,Q12,Q21,Q22;
+
+	/*recover handle and gate: */
+	handle=(pthread_handle*)vpthread_handle;
+	gate=(InterpFromGridToMeshxThreadStruct*)handle->gate;
+	my_thread=handle->id;
+	num_threads=handle->num;
+
+	/*recover parameters :*/
+	double *x_mesh                = gate->x_mesh;
+	double *y_mesh                = gate->y_mesh;
+	int     x_rows                = gate->x_rows;
+	int     y_rows                = gate->y_rows;
+	double *x                     = gate->x;
+	double *y                     = gate->y;
+	int     nods                  = gate->nods;
+	IssmSeqVec<IssmPDouble>*data_mesh = gate->data_mesh;
+	double *data                  = gate->data;
+	double  default_value         = gate->default_value;
+	const char* interptype        = gate->interp;
+	int     M                     = gate->M;
+	int     N                     = gate->N;
+
+	bool debug = M*N>1? true:false;
+
+	/*partition loop across threads: */
+	PartitionRange(&i0,&i1,nods,num_threads,my_thread);
+	for (i=i0;i<i1;i++) {
+
+		if(debug && my_thread==0)
+		 _printf_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(i-i0)/double(i1-i0)*100<<"%   ");
+		x_grid=*(x_mesh+i);
+		y_grid=*(y_mesh+i);
+
+		/*Find indices m and n into y and x, for which  y(m)<=y_grids<=y(m+1) and x(n)<=x_grid<=x(n+1)*/
+		if(findindices(&n,&m,x,x_rows, y,y_rows, x_grid,y_grid)){
+
+			/*    Q12             Q22
+			 * y2 x---------+-----x
+			 *    |         |     |
+			 *    |         |P    |
+			 *    |---------+-----|
+			 *    |         |     |
+			 *    |         |     |
+			 * y1 x---------+-----x Q21
+			 *    x1                 x2       
+			 *
+			 */
+			x1=x[n]; x2=x[n+1];
+			y1=y[m]; y2=y[m+1];
+			Q11=data[m*N+n];
+			Q12=data[(m+1)*N+n];
+			Q21=data[m*N+n+1];
+			Q22=data[(m+1)*N+n+1];
+
+			if(strcmp(interptype,"triangle")==0){
+				data_value=triangleinterp(x1,x2,y1,y2,Q11,Q12,Q21,Q22,x_grid,y_grid);
+			}
+			else if(strcmp(interptype,"bilinear")==0){
+				data_value=bilinearinterp(x1,x2,y1,y2,Q11,Q12,Q21,Q22,x_grid,y_grid);
+			}
+			else if(strcmp(interptype,"nearest")==0){
+				data_value=nearestinterp(x1,x2,y1,y2, Q11,Q12,Q21,Q22,x_grid,y_grid);
+			}
+			else{
+				_printf_("Interpolation " << interptype << " not supported yet (supported intepolations are: triangle, bilinear and nearest)\n");
+				return NULL; /*WARNING: no error because it would blow up the multithreading!*/
+			}
+			if(xIsNan<IssmPDouble>(data_value)) data_value=default_value;
+		}
+		else{
+			data_value=default_value;
+		}
+
+		data_mesh->SetValue(i,data_value,INS_VAL);
+	}
+
+	return NULL;
+}/*}}}*/
+
+/*findindices {{{*/
+bool findindices(int* pn,int* pm,double* x,int x_rows, double* y,int y_rows, double xgrid,double ygrid){
+
+	bool foundx=false,foundy=false;
+	int m=-1,n=-1;
+	int i;
+
+	for (i=0;i<x_rows-1;i++){
+		if ((x[i]<=xgrid) && (xgrid<x[i+1])){
+			n=i;
+			foundx=true;
+			break;
+		}
+	}
+	if(xgrid==x[x_rows-1]){
+		n=x_rows-2;
+		foundx=true;
+	}
+
+	for (i=0;i<y_rows-1;i++){
+		if ((y[i]<=ygrid) && (ygrid<y[i+1])){
+			m=i;
+			foundy=true;
+			break;
+		}
+	}
+	if(ygrid==y[y_rows-1]){
+		m=y_rows-2;
+		foundy=true;
+	}
+
+	/*Assign output pointers:*/
+	*pm=m; *pn=n;
+	return (foundx && foundy);
+}/*}}}*/
+/*triangleinterp{{{*/
+double triangleinterp(double x1,double x2,double y1,double y2,double Q11,double Q12,double Q21,double Q22,double x,double y){
+	/*split the rectangle in 2 triangle and
+	 * use Lagrange P1 interpolation
+	 *       
+	 *   +3----+2,3' Q12----Q22
+	 *   |    /|     |    /|
+	 *   |   / |     |   / |
+	 *   |  /  |     |  /  |
+	 *   | /   |     | /   |
+	 *   |/    |     |/    |
+	 *   1-----2'    Q11---Q21        */
+
+	/*Intermediaries*/
+	double area,area_1,area_2,area_3;
+
+	/*Checks*/
+	_assert_(x2>x1 && y2>y1);
+	_assert_(x<=x2 && x>=x1 && y<=y2 && y>=y1);
+
+	/*area of the rectangle*/
+	area=(x2-x1)*(y2-y1);
+
+	/*is it the upper left triangle?*/
+	if ((x-x1)/(x2-x1)<(y-y1)/(y2-y1)){
+
+		area_1=((y2-y)*(x2-x1))/area;
+		area_2=((x-x1)*(y2-y1))/area;
+		area_3=1-area_1-area_2;
+
+		return area_1*Q11+area_2*Q22+area_3*Q12;
+	}
+	else {
+
+		area_1=((y-y1)*(x2-x1))/area;
+		area_2=((x2-x)*(y2-y1))/area;
+		area_3=1-area_1-area_2;
+
+		return area_1*Q22+area_2*Q11+area_3*Q21;
+	}
+}/*}}}*/
+/*bilinearinterp{{{*/
+double bilinearinterp(double x1,double x2,double y1,double y2,double Q11,double Q12,double Q21,double Q22,double x,double y){
+	/*Bilinear  interpolation: (http://en.wikipedia.org/wiki/Bilinear_interpolation) */
+
+	/*    Q12    R2        Q22
+	 * y2 x------x---------x
+	 *    |      |         |
+	 *    |      |         |
+	 *    |      +P        |
+	 *    |      |         |
+	 *    |Q11   R1        Q21
+	 * y1 x------x---------x
+	 *    x1               x2
+	 *
+	 */
+
+	/*Checks*/
+	_assert_(x2>x1 && y2>y1);
+	_assert_(x<=x2 && x>=x1 && y<=y2 && y>=y1);
+
+	return 
+	  +Q11*(x2-x)*(y2-y)/((x2-x1)*(y2-y1))
+	  +Q21*(x-x1)*(y2-y)/((x2-x1)*(y2-y1))
+	  +Q12*(x2-x)*(y-y1)/((x2-x1)*(y2-y1))
+	  +Q22*(x-x1)*(y-y1)/((x2-x1)*(y2-y1));
+}
+/*}}}*/
+/*nearestinterp{{{*/
+double nearestinterp(double x1,double x2,double y1,double y2,double Q11,double Q12,double Q21,double Q22,double x,double y){
+	/*Nearest neighbor interpolation*/
+
+	/*    Q12             Q22
+	 * y2 x--------x---------x
+	 *    |        |         |
+	 *    |        |  xP     |
+	 * ym |--------+---------|
+	 *    |        |         |
+	 *    |        |         |
+	 * y1 x--------x---------x Q21
+	 *    x1       xm        x2 
+	 *
+	 */
+	/*Checks*/
+	_assert_(x2>x1 && y2>y1);
+	_assert_(x<=x2 && x>=x1 && y<=y2 && y>=y1);
+
+	double xm=(x2-x1)/2;
+	double ym=(y2-y1)/2;
+
+	if (x<xm && y<ym) return Q11;
+	if (x<xm && y>ym) return Q12;
+	if (x>xm && y<ym) return Q21;
+	else return Q22;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromGridToMeshx/InterpFromGridToMeshx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromGridToMeshx/InterpFromGridToMeshx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromGridToMeshx/InterpFromGridToMeshx.h	(revision 21239)
@@ -0,0 +1,36 @@
+/*!\file InterpFromGridToMeshx.h
+ * \brief: header file for Data interpolation routines.
+ */
+
+#ifndef _INTERPFROMGRIDTOMESHX_H
+#define _INTERPFROMGRIDTOMESHX_H
+
+#include "../../classes/classes.h"
+#include "../../toolkits/toolkits.h"
+#include "../../shared/shared.h"
+
+/*threading: */
+typedef struct{
+	double*             x;
+	int                 x_rows;
+	double*             y;
+	int                 y_rows;
+	double*             data;
+	double              default_value;
+	const char*         interp;
+	int                 M;
+	int                 N;
+	int                 nods;
+	double*             x_mesh;
+	double*             y_mesh;
+	IssmSeqVec<IssmPDouble>* data_mesh;
+} InterpFromGridToMeshxThreadStruct;
+
+int    InterpFromGridToMeshx(IssmSeqVec<IssmPDouble>** pdata_mesh,double* x, int x_rows, double* y, int y_rows, double* data, int M, int N, double* x_mesh, double* y_mesh, int nods, double default_value, const char* interptype);
+void*  InterpFromGridToMeshxt(void* vInterpFromGridToMeshxThreadStruct);
+bool   findindices(int* pn,int* pm,double* x,int x_rows, double* y,int y_rows, double xgrid,double ygrid);
+double triangleinterp(double x1,double x2,double y1,double y2,double Q11,double Q12,double Q21,double Q22,double x,double y);
+double bilinearinterp(double x1,double x2,double y1,double y2,double Q11,double Q12,double Q21,double Q22,double x,double y);
+double nearestinterp(double x1,double x2,double y1,double y2,double Q11,double Q12,double Q21,double Q22,double x,double y);
+
+#endif /* _INTERPFROMGRIDTOMESHX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dx.cpp	(revision 21239)
@@ -0,0 +1,105 @@
+/*!\file:  InterpFromMesh2dx.cpp
+ * \brief  "c" core code for interpolating values from a structured grid.
+ */ 
+
+#include "./InterpFromMesh2dx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "../ContourToNodesx/ContourToNodesx.h"
+
+int InterpFromMesh2dx(IssmSeqVec<IssmPDouble>** pdata_prime,
+			double* index_data, double* x_data, double* y_data, int nods_data,int nels_data, double* data, int data_length,
+			double* x_prime, double* y_prime, int nods_prime,
+			double* default_values,int num_default_values,Contour<IssmPDouble>** contours,int numcontours){
+
+	/*Output*/
+	IssmSeqVec<IssmPDouble>* data_prime=NULL;
+
+	/*Intermediary*/
+	int    i;
+	int    interpolation_type;
+	bool   debug;
+	double xmin,xmax;
+	double ymin,ymax;
+
+	/*contours: */
+	double *incontour     = NULL;
+
+	/*some checks*/
+	if (nels_data<1 || nods_data<3 || nods_prime==0){
+		_error_("nothing to be done according to the mesh given in input");
+	}
+
+	/*Set debug to 1 if there are lots of elements*/
+	debug=(bool)((double)nels_data*(double)nods_prime >= pow((double)10,(double)9));
+
+	/*figure out what kind of interpolation is needed*/
+	if (data_length==nods_data){
+		interpolation_type=1;
+	}
+	else if (data_length==nels_data){
+		interpolation_type=2;
+	}
+	else{
+		_error_("length of vector data not supported yet. It should be of length (number of nodes) or (number of elements)!");
+	}
+
+	if((numcontours) && (interpolation_type==2)){
+		_error_("element interpolation_type with contours not supported yet!");
+	}
+
+	/*Get prime mesh extrema coordinates*/
+	xmin=x_prime[0]; xmax=x_prime[0];ymin=y_prime[0]; ymax=y_prime[0];
+	for (i=1;i<nods_prime;i++){
+		if (x_prime[i]<xmin) xmin=x_prime[i];
+		if (x_prime[i]>xmax) xmax=x_prime[i];
+		if (y_prime[i]<ymin) ymin=y_prime[i];
+		if (y_prime[i]>ymax) ymax=y_prime[i];
+	}
+
+	/*Initialize output*/
+	data_prime=new IssmSeqVec<IssmPDouble>(nods_prime);
+	if(num_default_values){
+		if(num_default_values==1)for (i=0;i<nods_prime;i++) data_prime->SetValue(i,default_values[0],INS_VAL);
+		else for (i=0;i<nods_prime;i++) data_prime->SetValue(i,default_values[i],INS_VAL);
+	}
+
+	/*Build indices of contour: */
+	if(numcontours){
+		ContourToNodesx( &incontour,x_prime,y_prime,nods_prime,contours,numcontours,1);
+	}
+	else{
+		 incontour=xNew<double>(nods_prime);
+		 for (i=0;i<nods_prime;i++) incontour[i]=1.0;
+	}
+
+	/*initialize thread parameters: */
+	InterpFromMesh2dxThreadStruct gate;
+	gate.interpolation_type = interpolation_type;
+	gate.debug              = debug;
+	gate.nels_data          = nels_data;
+	gate.index_data         = index_data;
+	gate.x_data             = x_data;
+	gate.y_data             = y_data;
+	gate.data               = data;
+	gate.xmin               = xmin;
+	gate.xmax               = xmax;
+	gate.ymin               = ymin;
+	gate.ymax               = ymax;
+	gate.nods_prime         = nods_prime;
+	gate.data_prime         = data_prime;
+	gate.x_prime            = x_prime;
+	gate.y_prime            = y_prime;
+	gate.default_values     = default_values;
+	gate.num_default_values = num_default_values;
+	gate.incontour          = incontour;
+
+	/*launch the thread manager with InterpFromGridToMeshxt as a core: */
+	LaunchThread(InterpFromMesh2dxt,(void*)&gate,_NUMTHREADS_);
+
+	/*Assign output pointers:*/
+	 xDelete<double>(incontour);
+	*pdata_prime=data_prime;
+	return 1;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dx.h	(revision 21239)
@@ -0,0 +1,38 @@
+/*!\file InterpFromMesh2dx.h
+ * \brief: header file for Data interpolation routines.
+ */
+
+#ifndef _INTERPFROMMESH2DX_H
+#define _INTERPFROMMESH2DX_H
+
+#include "../../classes/classes.h"
+#include "../../toolkits/toolkits.h"
+
+/*threading: */
+typedef struct{
+
+	int                 interpolation_type;
+	bool                debug;
+	int                 nels_data;
+	double              *index_data;
+	double              *x_data;
+	double              *y_data;
+	double              *data;
+	double              xmin,xmax;
+	double              ymin,ymax;
+	int                 nods_prime;
+	IssmSeqVec<IssmPDouble> *data_prime;
+	double              *x_prime;
+	double              *y_prime;
+	double              *default_values;
+	int                 num_default_values;
+	double              *incontour;
+
+} InterpFromMesh2dxThreadStruct;
+
+int InterpFromMesh2dx(IssmSeqVec<IssmPDouble>** pdata_prime,double* index_data, double* x_data, double* y_data, int nods_data,int nels_data, double* data, int data_length, double* x_prime, double* y_prime, int nods_prime,
+		double* default_values,int num_default_values,Contour<IssmPDouble>** contours,int numcontours);
+
+void* InterpFromMesh2dxt(void* vInterpFromMesh2dxThreadStruct);
+
+#endif /* _INTERPFROMMESH2DX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dxt.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dxt.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dxt.cpp	(revision 21239)
@@ -0,0 +1,103 @@
+/*!\file:  InterpFromMesh2dxt.cpp
+ * \brief  thread core for InterpFromMesh2dxt code
+ */ 
+
+#include "./InterpFromMesh2dx.h"
+#include "../../shared/shared.h"
+
+void* InterpFromMesh2dxt(void* vpthread_handle){
+
+	/*intermediary: */
+	int     i0,i1,i,j;
+	double  area,area_1,area_2,area_3;
+	double  data_value;
+
+	/*recover handle and gate: */
+	pthread_handle                *handle      = (pthread_handle*)vpthread_handle;
+	InterpFromMesh2dxThreadStruct *gate        = (InterpFromMesh2dxThreadStruct*)handle->gate;
+	int                            my_thread   = handle->id;
+	int                            num_threads = handle->num;
+
+	/*recover parameters :*/
+	int     interpolation_type      = gate->interpolation_type;
+	bool    debug                   = gate->debug;
+	int     nels_data               = gate->nels_data;
+	double *index_data              = gate->index_data;
+	double *x_data                  = gate->x_data;
+	double *y_data                  = gate->y_data;
+	double *data                    = gate->data;
+	double  xmin                    = gate->xmin;
+	double  xmax                    = gate->xmax;
+	double  ymin                    = gate->ymin;
+	double  ymax                    = gate->ymax;
+	int     nods_prime              = gate->nods_prime;
+	IssmSeqVec<IssmPDouble>* data_prime = gate->data_prime;
+	double *x_prime                 = gate->x_prime;
+	double *y_prime                 = gate->y_prime;
+	double *default_values          = gate->default_values;
+	int     num_default_values      = gate->num_default_values;
+	double *incontour               = gate->incontour;
+
+	/*partition loop across threads: */
+	PartitionRange(&i0,&i1,nels_data,num_threads,my_thread);
+
+	/*Loop over the elements*/
+	for(i=i0;i<i1;i++){
+
+		/*display current iteration*/
+		if (debug && my_thread==0 && fmod((double)i,(double)100)==0)
+		 _printf_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(i-i0)/double(i1-i0)*100<<"%   ");
+
+		/*if there is no point inside the domain, go to next iteration*/
+		if ( (x_data[(int)index_data[3*i+0]-1]<xmin) && (x_data[(int)index_data[3*i+1]-1]<xmin) && (x_data[(int)index_data[3*i+2]-1]<xmin)) continue;
+		if ( (x_data[(int)index_data[3*i+0]-1]>xmax) && (x_data[(int)index_data[3*i+1]-1]>xmax) && (x_data[(int)index_data[3*i+2]-1]>xmax)) continue;
+		if ( (y_data[(int)index_data[3*i+0]-1]<ymin) && (y_data[(int)index_data[3*i+1]-1]<ymin) && (y_data[(int)index_data[3*i+2]-1]<ymin)) continue;
+		if ( (y_data[(int)index_data[3*i+0]-1]>ymax) && (y_data[(int)index_data[3*i+1]-1]>ymax) && (y_data[(int)index_data[3*i+2]-1]>ymax)) continue;
+
+		/*get area of the current element (Jacobian = 2 * area)*/
+		//area =x2 * y3 - y2*x3 + x1 * y2 - y1 * x2 + x3 * y1 - y3 * x1;
+		area=x_data[(int)index_data[3*i+1]-1]*y_data[(int)index_data[3*i+2]-1]-y_data[(int)index_data[3*i+1]-1]*x_data[(int)index_data[3*i+2]-1]
+		  +  x_data[(int)index_data[3*i+0]-1]*y_data[(int)index_data[3*i+1]-1]-y_data[(int)index_data[3*i+0]-1]*x_data[(int)index_data[3*i+1]-1]
+		  +  x_data[(int)index_data[3*i+2]-1]*y_data[(int)index_data[3*i+0]-1]-y_data[(int)index_data[3*i+2]-1]*x_data[(int)index_data[3*i+0]-1];
+
+		/*loop over the prime nodes*/
+		for (j=0;j<nods_prime;j++){
+
+			if(incontour[j]){
+
+				/*Get first area coordinate = det(x-x3  x2-x3 ; y-y3   y2-y3)/area*/
+				area_1=((x_prime[j]-x_data[(int)index_data[3*i+2]-1])*(y_data[(int)index_data[3*i+1]-1]-y_data[(int)index_data[3*i+2]-1]) 
+						-  (y_prime[j]-y_data[(int)index_data[3*i+2]-1])*(x_data[(int)index_data[3*i+1]-1]-x_data[(int)index_data[3*i+2]-1]))/area;
+				/*Get second area coordinate =det(x1-x3  x-x3 ; y1-y3   y-y3)/area*/
+				area_2=((x_data[(int)index_data[3*i+0]-1]-x_data[(int)index_data[3*i+2]-1])*(y_prime[j]-y_data[(int)index_data[3*i+2]-1]) 
+						- (y_data[(int)index_data[3*i+0]-1]-y_data[(int)index_data[3*i+2]-1])*(x_prime[j]-x_data[(int)index_data[3*i+2]-1]))/area;
+				/*Get third area coordinate = 1-area1-area2*/
+				area_3=1-area_1-area_2;
+
+				/*is the current point in the current element?*/
+				if (area_1>=0 && area_2>=0 && area_3>=0){
+
+					/*Yes ! compute the value on the point*/
+					if (interpolation_type==1){
+						/*nodal interpolation*/
+						data_value=area_1*data[(int)index_data[3*i+0]-1]+area_2*data[(int)index_data[3*i+1]-1]+area_3*data[(int)index_data[3*i+2]-1];
+					}
+					else{
+						/*element interpolation*/
+						data_value=data[i];
+					}
+					if (xIsNan<IssmPDouble>(data_value)){
+						if(num_default_values==1) data_value=default_values[0];
+						else data_value=default_values[j];
+					}
+
+					/*insert value and go to the next point*/
+					data_prime->SetValue(j,data_value,INS_VAL);
+				}
+			}
+		}
+	}
+	if(debug && my_thread==0)
+	 _printf_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+	return NULL;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMeshToGridx/InterpFromMeshToGridx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMeshToGridx/InterpFromMeshToGridx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMeshToGridx/InterpFromMeshToGridx.cpp	(revision 21239)
@@ -0,0 +1,178 @@
+/*!\file:  InterpFromMeshToGridx.cpp
+ * \brief  "c" core code for interpolating values from a structured grid.
+ */ 
+
+#include "./InterpFromMeshToGridx.h"
+#include "../../shared/shared.h"
+
+void InterpFromMeshToGridx(double** px_m,double** py_m,double** pgriddata,double* index_mesh, double* x_mesh, double* y_mesh, int nods,int nels, double* data_mesh, int data_length, double xmin,double ymax,double xposting,double yposting,int nlines,int ncols,double default_value) {
+
+	/*Output*/
+	double* griddata=NULL;
+	double* x_grid=NULL;
+	double* y_grid=NULL;
+
+	/*Intermediary*/
+	int    i,j,n;
+	int    i1,i2,j1,j2;
+	int    interpolation_type;
+	bool   debug;
+	int    xflip,yflip;
+	double area;
+	double area_1,area_2,area_3;
+	double x_tria_min,y_tria_min;
+	double x_tria_max,y_tria_max;
+	double x_grid_min,y_grid_min;
+	double x_grid_max,y_grid_max;
+	double data_value;
+
+	/*some checks*/
+	if (nels<1 || nods<3 || nlines<1 || ncols<1 || xposting==0 || yposting==0){
+		_error_("nothing to be done according to the mesh given in input");
+	}
+
+	/*figure out what kind of interpolation is needed*/
+	if (data_length==nods){
+		interpolation_type=1;
+	}
+	else if (data_length==nels){
+		interpolation_type=2;
+	}
+	else{
+		_error_("length of vector data not supported yet. It should be of length (number of nodes) or (number of elements)!");
+	}
+
+	/*First, allocate pointers: */
+	griddata=xNewZeroInit<double>(nlines*ncols);
+	x_grid=xNewZeroInit<double>(ncols);
+	y_grid=xNewZeroInit<double>(nlines);
+
+	/*Set debug to 1 if there are lots of elements*/
+	debug=(bool)((double)ncols*nlines*nels >= 5*pow(10.,10.));
+
+	/*Initialize coordintes and griddata*/
+	for(i=0;i<nlines;i++){
+		for(j=0;j<ncols; j++){
+			griddata[i*ncols+j]=default_value;
+		}
+	}
+	/*figure out if x or y are flipped*/
+	if (xposting<0) xflip=1;
+	else xflip=0;
+	if (yposting<0) yflip=1;
+	else yflip=0;
+
+	/*Get extreme coordinates of the grid*/
+	if (xflip){
+		for(i=0;i<ncols; i++) x_grid[ncols-1-i] = xmin - xposting*i;
+		x_grid_min=x_grid[ncols-1];
+		x_grid_max=x_grid[0];
+	}
+	else{
+		for(i=0;i<ncols; i++) x_grid[i]= xmin + xposting*i;
+		x_grid_min=x_grid[0];
+		x_grid_max=x_grid[ncols-1];
+	}
+	if (yflip){
+		for(i=0;i<nlines;i++) y_grid[i] = ymax + yposting*i;
+		y_grid_min=y_grid[nlines-1];
+		y_grid_max=y_grid[0];
+	}
+	else{
+		for(i=0;i<nlines;i++) y_grid[nlines-1-i]= ymax - yposting*i;
+		y_grid_min=y_grid[0];
+		y_grid_max=y_grid[nlines-1];
+	}
+
+	/*Loop over the elements*/
+	for (n=0;n<nels;n++){
+
+		/*display current iteration*/
+		if (debug && fmod((double)n,(double)100)==0)
+		 _printf_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(n)/double(nels)*100<<"%   ");
+
+		/*Get extrema coordinates of current elements*/
+		x_tria_min=x_mesh[(int)index_mesh[3*n+0]-1]; x_tria_max=x_tria_min;
+		y_tria_min=y_mesh[(int)index_mesh[3*n+0]-1]; y_tria_max=y_tria_min;
+		for (i=1;i<3;i++){
+			if(x_mesh[(int)index_mesh[3*n+i]-1]<x_tria_min) x_tria_min=x_mesh[(int)index_mesh[3*n+i]-1];
+			if(x_mesh[(int)index_mesh[3*n+i]-1]>x_tria_max) x_tria_max=x_mesh[(int)index_mesh[3*n+i]-1];
+			if(y_mesh[(int)index_mesh[3*n+i]-1]<y_tria_min) y_tria_min=y_mesh[(int)index_mesh[3*n+i]-1];
+			if(y_mesh[(int)index_mesh[3*n+i]-1]>y_tria_max) y_tria_max=y_mesh[(int)index_mesh[3*n+i]-1];
+		}
+
+		/*if the current triangle is not in the grid, continue*/
+		if ( (x_tria_min>x_grid_max) || (x_tria_max<x_grid_min) || (y_tria_min>y_grid_max) || (y_tria_max<y_grid_min) ) continue;
+
+		/*Get indices i and j that form a square around the currant triangle*/
+		if (yflip){
+			i1=max(0,       (int)floor((y_tria_max-y_grid_max)/yposting)-1);
+			i2=min(nlines-1,(int)ceil((y_tria_min-y_grid_max)/yposting));
+		}
+		else{
+			i1=max(0,       (int)floor((y_tria_min-y_grid_min)/yposting)-1);
+			i2=min(nlines-1,(int)ceil((y_tria_max-y_grid_min)/yposting));
+		}
+		if (xflip){
+			j1=max(0,      (int)floor((x_tria_max-x_grid_max)/xposting)-1);
+			j2=min(ncols-1,(int)ceil((x_tria_min-x_grid_max)/xposting));
+		}
+		else{
+			j1=max(0,      (int)floor((x_tria_min-x_grid_min)/xposting)-1);
+			j2=min(ncols-1,(int)ceil((x_tria_max-x_grid_min)/xposting));
+		}
+
+		/*get area of the current element (Jacobian = 2 * area)*/
+		//area =x2 * y3 - y2*x3 + x1 * y2 - y1 * x2 + x3 * y1 - y3 * x1;
+		area=x_mesh[(int)index_mesh[3*n+1]-1]*y_mesh[(int)index_mesh[3*n+2]-1]-y_mesh[(int)index_mesh[3*n+1]-1]*x_mesh[(int)index_mesh[3*n+2]-1]
+		  +  x_mesh[(int)index_mesh[3*n+0]-1]*y_mesh[(int)index_mesh[3*n+1]-1]-y_mesh[(int)index_mesh[3*n+0]-1]*x_mesh[(int)index_mesh[3*n+1]-1]
+		  +  x_mesh[(int)index_mesh[3*n+2]-1]*y_mesh[(int)index_mesh[3*n+0]-1]-y_mesh[(int)index_mesh[3*n+2]-1]*x_mesh[(int)index_mesh[3*n+0]-1];
+
+		/*Go through x_grid and y_grid and interpolate if necessary*/
+		for (i=i1;i<=i2;i++){
+
+			//exit if y not between y_tria_min and y_tria_max
+			if((y_grid[i]>y_tria_max) || (y_grid[i]<y_tria_min)) continue;
+
+			for(j=j1;j<=j2; j++){
+
+				//exit if x not between x_tria_min and x_tria_max
+				if((x_grid[j]>x_tria_max) || (x_grid[j]<x_tria_min)) continue;
+
+				/*Get first area coordinate = det(x-x3  x2-x3 ; y-y3   y2-y3)/area*/
+				area_1=((x_grid[j]-x_mesh[(int)index_mesh[3*n+2]-1])*(y_mesh[(int)index_mesh[3*n+1]-1]-y_mesh[(int)index_mesh[3*n+2]-1]) 
+							-  (y_grid[i]-y_mesh[(int)index_mesh[3*n+2]-1])*(x_mesh[(int)index_mesh[3*n+1]-1]-x_mesh[(int)index_mesh[3*n+2]-1]))/area;
+				/*Get second area coordinate =det(x1-x3  x-x3 ; y1-y3   y-y3)/area*/
+				area_2=((x_mesh[(int)index_mesh[3*n+0]-1]-x_mesh[(int)index_mesh[3*n+2]-1])*(y_grid[i]-y_mesh[(int)index_mesh[3*n+2]-1]) 
+							- (y_mesh[(int)index_mesh[3*n+0]-1]-y_mesh[(int)index_mesh[3*n+2]-1])*(x_grid[j]-x_mesh[(int)index_mesh[3*n+2]-1]))/area;
+				/*Get third area coordinate = 1-area1-area2*/
+				area_3=1-area_1-area_2;
+
+				/*is the current point in the current element?*/
+				if (area_1>-10e-12 && area_2>-10e-12 && area_3>-10e-12){
+
+					/*Yes ! compute the value on the point*/
+					if (interpolation_type==1){
+						/*nodal interpolation*/
+						data_value=area_1*data_mesh[(int)index_mesh[3*n+0]-1]+area_2*data_mesh[(int)index_mesh[3*n+1]-1]+area_3*data_mesh[(int)index_mesh[3*n+2]-1];
+					}
+					else{
+						/*element interpolation*/
+						data_value=data_mesh[n];
+					}
+					if (xIsNan<IssmDouble>(data_value)) data_value=default_value;
+
+					/*insert value and go to the next point*/
+					griddata[i*ncols+j]=data_value;
+				}
+			}
+		}
+	}
+	if (debug)
+	 _printf_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+
+	/*Assign output pointers:*/
+	*pgriddata=griddata;
+	*px_m=x_grid;
+	*py_m=y_grid;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMeshToGridx/InterpFromMeshToGridx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMeshToGridx/InterpFromMeshToGridx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMeshToGridx/InterpFromMeshToGridx.h	(revision 21239)
@@ -0,0 +1,12 @@
+/*!\file InterpFromMeshToGridx.h
+ * \brief: header file for Data interpolation routines.
+ */
+
+#ifndef _INTERPFROMMESHTOGRIDX_H
+#define _INTERPFROMMESHTOGRIDX_H
+
+#include "../../toolkits/toolkits.h"
+
+void InterpFromMeshToGridx(double** px_m,double** py_m,double** pgriddata,double* index_mesh, double* x_mesh, double* y_mesh, int nods,int nels, double* data_mesh, int data_length, double xmin,double ymax,double xposting,double yposting,int nlines,int ncols,double default_value);
+
+#endif /* _INTERPFROMMESHTOGRIDX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp	(revision 21239)
@@ -0,0 +1,162 @@
+/*!\file InterpFromMeshToMesh2dx
+ */
+
+#include "./InterpFromMeshToMesh2dx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "../../bamg/bamgobjects.h"
+
+using namespace bamg;
+using namespace std;
+
+int InterpFromMeshToMesh2dx(double** pdata_interp,int* index_data,double* x_data,double* y_data,int nods_data,int nels_data,
+			double* data,int M_data,int N_data,double* x_interp,double* y_interp,int N_interp,Options* options){
+
+	/*Output*/
+	double* data_interp=NULL;
+
+	/*Intermediary*/
+	double xmin,xmax,ymin,ymax;
+	bool   isdefault;
+	double defaultvalue;
+	R2     r;
+	I2     I;
+	int    i,j;
+	int    it;
+	int    i0,i1,i2;
+	double areacoord[3];
+	double aa,bb;
+	Icoor2 dete[3];
+
+	/*Checks*/
+	if (M_data!=nods_data && M_data!=nels_data){
+		_error_("data provided should have either " << nods_data << " or " << nels_data << " lines (not " << M_data << ")");
+	}
+
+	/*Get default*/
+	if(options->GetOption("default")){
+		isdefault=true;
+		options->Get(&defaultvalue,"default");
+	}
+	else{
+		isdefault=false;
+	}
+
+	/*Initialize output*/
+	data_interp=xNew<double>(N_interp*N_data);
+
+	/*read background mesh*/
+	Mesh* Th=new Mesh(index_data,x_data,y_data,nods_data,nels_data); 
+
+	/*Get reference number (for subdomains)*/
+	long* reft = xNew<long>(Th->nbt);
+	Th->TriangleReferenceList(reft);
+	Th->CreateSingleVertexToTriangleConnectivity();
+
+	/*Get domain boundaries*/
+	xmin=x_data[0]; ymin=y_data[0];
+	xmax=x_data[0]; ymax=y_data[0];
+	for(i=1;i<nods_data;i++){
+		if(x_data[i]<xmin) xmin=x_data[i];
+		if(x_data[i]>xmax) xmax=x_data[i];
+		if(y_data[i]<ymin) ymin=y_data[i];
+		if(y_data[i]>ymax) ymax=y_data[i];
+	}
+
+	/*Loop over output nodes*/
+	for(i=0;i<N_interp;i++){
+		//if(i%100==0) _printf_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(i)/double(N_interp)*100.<<"%   ");
+
+		if(isdefault){
+			if(x_interp[i]<xmin || x_interp[i]>xmax || y_interp[i]<ymin || y_interp[i]>ymax){
+				for(j=0;j<N_data;j++) data_interp[i*N_data+j]=defaultvalue;
+				continue;
+			}
+		}
+
+		/*Get current point coordinates*/
+		r.x=x_interp[i]; r.y=y_interp[i];
+		I2 I=Th->R2ToI2(r);
+
+		/*Find triangle holding r/I*/
+		Triangle &tb=*Th->TriangleFindFromCoord(I,dete);
+
+		/*point inside convex*/
+		if (tb.det>0){ 
+
+			/*Area coordinates*/
+			areacoord[0]= (double) dete[0]/tb.det;
+			areacoord[1]= (double) dete[1]/tb.det;
+			areacoord[2]= (double) dete[2]/tb.det;
+			/*3 vertices of the triangle*/
+			i0=Th->GetId(tb[0]);
+			i1=Th->GetId(tb[1]);
+			i2=Th->GetId(tb[2]);
+			/*triangle number*/
+			it=Th->GetId(tb);
+
+			/*Inside convex but outside mesh*/
+			if (reft[it]<0 && isdefault){
+				for(j=0;j<N_data;j++) data_interp[i*N_data+j]=defaultvalue;
+				continue;
+			}
+		}
+		//external point
+		else{
+			if(isdefault){
+				for(j=0;j<N_data;j++) data_interp[i*N_data+j]=defaultvalue;
+				continue;
+			}
+			else{
+				//Get closest adjacent triangle (inside the mesh)
+				AdjacentTriangle ta=CloseBoundaryEdge(I,&tb,aa,bb).Adj();
+				int k=ta;
+				Triangle &tc=*(Triangle*)ta;
+				//Area coordinate
+				areacoord[VerticesOfTriangularEdge[k][1]] = aa;
+				areacoord[VerticesOfTriangularEdge[k][0]] = bb;
+				areacoord[OppositeVertex[k]] = 1 - aa -bb;
+				//3 vertices of the triangle
+				i0=Th->GetId(tc[0]);
+				i1=Th->GetId(tc[1]);
+				i2=Th->GetId(tc[2]);
+				//triangle number
+				it=Th->GetId(tc);
+			}
+		}
+
+		if (M_data==nods_data){
+			for (j=0;j<N_data;j++){
+				data_interp[i*N_data+j]=areacoord[0]*data[N_data*i0+j]+areacoord[1]*data[N_data*i1+j]+areacoord[2]*data[N_data*i2+j];
+			}
+		}
+		else{
+			/*For the P0 implementation*/
+			/*If we fall outside of the convex or outside of the mesh, return NaN*/
+			if(tb.det<0 || reft[it]<0){
+				for (j=0;j<N_data;j++){
+					data_interp[i*N_data+j]=NAN;
+				}
+			}
+			else{
+				if(it<0 || it>=nels_data){
+					_error_("Triangle number " << it << " not in [0 " << nels_data
+								<< "], report bug to developers (interpolation point: " <<x_interp[i]<<" "<<y_interp[i]<<")");
+				}
+				for (j=0;j<N_data;j++){
+
+					data_interp[i*N_data+j]=data[N_data*it+j];
+				}
+			}
+		}
+	}
+	//if(N_interp>=100) _printf_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+
+	/*clean-up and return*/
+	delete Th;
+	xDelete<long>(reft);
+	*pdata_interp=data_interp;
+	return 1;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  InterpFromMeshToMesh2dx.h
+ * \brief header file for Bamg module
+ */ 
+
+#ifndef _INTERPFROMMESHTOMESH2DX_H
+#define _INTERPFROMMESHTOMESH2DX_H
+
+#include "../../classes/classes.h"
+
+int InterpFromMeshToMesh2dx(double** pdata_interp,int* index_data,double* x_data,double* y_data,int nods_data,int nels_data,
+			double* data,int M_data,int N_data,double* x_interp,double* y_interp,int N_interp,Options* options);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.cpp	(revision 21239)
@@ -0,0 +1,139 @@
+/*!\file:  InterpFromMeshToMesh3dx.cpp
+ * \brief  "c" core code for interpolating values from a structured grid.
+ */ 
+
+#include "./InterpFromMeshToMesh3dx.h"
+#include "../../shared/shared.h"
+
+int InterpFromMeshToMesh3dx( IssmSeqVec<IssmPDouble>** pdata_prime,double* index_data, double* x_data, double* y_data, double* z_data, int nods_data,int nels_data, double* data, int data_length, double* x_prime, double* y_prime, double* z_prime, int nods_prime,double default_value) {
+
+	/*Output*/
+	IssmSeqVec<IssmPDouble>* data_prime=NULL;
+
+	/*Intermediary*/
+	int i,j;
+	int interpolation_type;
+	bool debug;
+	double area;
+	double area_1,area_2,area_3;
+	double zeta,bed,surface;
+	double data_value;
+	double x_prime_min,x_prime_max;
+	double y_prime_min,y_prime_max;
+	double x_tria_min,y_tria_min;
+	double x_tria_max,y_tria_max;
+
+	/*some checks*/
+	if (nels_data<1 || nods_data<6 || nods_prime==0){
+		_error_("nothing to be done according to the mesh given in input");
+	}
+
+	/*Set debug to 1 if there are lots of elements*/
+	debug=(bool)((double)nels_data*(double)nods_prime >= pow((double)10,(double)9));
+
+	/*figure out what kind of interpolation is needed*/
+	if (data_length==nods_data){
+		interpolation_type=1;
+	}
+	else if (data_length==nels_data){
+		interpolation_type=2;
+	}
+	else{
+		_error_("length of vector data not supported yet. It should be of length (number of nodes) or (number of elements)!");
+	}
+
+	/*Get prime mesh extrema coordinates*/
+	x_prime_min=x_prime[0]; x_prime_max=x_prime[0];y_prime_min=y_prime[0]; y_prime_max=y_prime[0];
+	for (i=1;i<nods_prime;i++){
+		if (x_prime[i]<x_prime_min) x_prime_min=x_prime[i];
+		if (x_prime[i]>x_prime_max) x_prime_max=x_prime[i];
+		if (y_prime[i]<y_prime_min) y_prime_min=y_prime[i];
+		if (y_prime[i]>y_prime_max) y_prime_max=y_prime[i];
+	}
+
+	/*Initialize output*/
+	data_prime=new IssmSeqVec<IssmPDouble>(nods_prime);
+	for (i=0;i<nods_prime;i++) data_prime->SetValue(i,default_value,INS_VAL);
+
+	/*Loop over the elements*/
+	for (i=0;i<nels_data;i++){
+
+		/*display current iteration*/
+		if (debug && fmod((double)i,(double)100)==0)
+		 _printf_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(i)/double(nels_data)*100<<"%   ");
+
+		/*Get extrema coordinates of current elements*/
+		x_tria_min=x_data[(int)index_data[6*i+0]-1]; x_tria_max=x_tria_min;
+		y_tria_min=y_data[(int)index_data[6*i+0]-1]; y_tria_max=y_tria_min;
+		for (j=1;j<3;j++){
+			if(x_data[(int)index_data[6*i+j]-1]<x_tria_min) x_tria_min=x_data[(int)index_data[6*i+j]-1];
+			if(x_data[(int)index_data[6*i+j]-1]>x_tria_max) x_tria_max=x_data[(int)index_data[6*i+j]-1];
+			if(y_data[(int)index_data[6*i+j]-1]<y_tria_min) y_tria_min=y_data[(int)index_data[6*i+j]-1];
+			if(y_data[(int)index_data[6*i+j]-1]>y_tria_max) y_tria_max=y_data[(int)index_data[6*i+j]-1];
+		}
+
+		/*if there is no point inside the domain, go to next iteration*/
+		if ( x_prime_max < x_tria_min ) continue; 
+		if ( x_prime_min > x_tria_max ) continue; 
+		if ( y_prime_max < y_tria_min ) continue; 
+		if ( y_prime_min > y_tria_max ) continue; 
+
+		/*get area of the current element (Jacobian = 2 * area)*/
+		//area =x2 * y3 - y2*x3 + x1 * y2 - y1 * x2 + x3 * y1 - y3 * x1;
+		area=x_data[(int)index_data[6*i+1]-1]*y_data[(int)index_data[6*i+2]-1]-y_data[(int)index_data[6*i+1]-1]*x_data[(int)index_data[6*i+2]-1]
+		  +  x_data[(int)index_data[6*i+0]-1]*y_data[(int)index_data[6*i+1]-1]-y_data[(int)index_data[6*i+0]-1]*x_data[(int)index_data[6*i+1]-1]
+		  +  x_data[(int)index_data[6*i+2]-1]*y_data[(int)index_data[6*i+0]-1]-y_data[(int)index_data[6*i+2]-1]*x_data[(int)index_data[6*i+0]-1];
+
+		/*loop over the prime nodes*/
+		for (j=0;j<nods_prime;j++){
+
+			/*if the current point is not in the triangle, continue*/
+			if ( x_prime[j] < x_tria_min ) continue; 
+			if ( x_prime[j] > x_tria_max ) continue; 
+			if ( y_prime[j] < y_tria_min ) continue; 
+			if ( y_prime[j] > y_tria_max ) continue; 
+
+			/*Get first area coordinate = det(x-x3  x2-x3 ; y-y3   y2-y3)/area*/
+			area_1=((x_prime[j]-x_data[(int)index_data[6*i+2]-1])*(y_data[(int)index_data[6*i+1]-1]-y_data[(int)index_data[6*i+2]-1]) 
+						-  (y_prime[j]-y_data[(int)index_data[6*i+2]-1])*(x_data[(int)index_data[6*i+1]-1]-x_data[(int)index_data[6*i+2]-1]))/area;
+			/*Get second area coordinate =det(x1-x3  x-x3 ; y1-y3   y-y3)/area*/
+			area_2=((x_data[(int)index_data[6*i+0]-1]-x_data[(int)index_data[6*i+2]-1])*(y_prime[j]-y_data[(int)index_data[6*i+2]-1]) 
+						- (y_data[(int)index_data[6*i+0]-1]-y_data[(int)index_data[6*i+2]-1])*(x_prime[j]-x_data[(int)index_data[6*i+2]-1]))/area;
+			/*Get third area coordinate = 1-area1-area2*/
+			area_3=1-area_1-area_2;
+
+			/*is the current point in the current 2d element?*/
+			if (area_1>=0 && area_2>=0 && area_3>=0){
+
+				/*compute bottom and top height of the element at this 2d position*/
+				bed    =area_1*z_data[(int)index_data[6*i+0]-1]+area_2*z_data[(int)index_data[6*i+1]-1]+area_3*z_data[(int)index_data[6*i+2]-1];
+				surface=area_1*z_data[(int)index_data[6*i+3]-1]+area_2*z_data[(int)index_data[6*i+4]-1]+area_3*z_data[(int)index_data[6*i+5]-1];
+
+				/*Compute zeta*/
+				zeta=2*(z_prime[j]-bed)/(surface-bed)-1;
+
+				if (zeta >=-1 && zeta<=1){
+					if (interpolation_type==1){
+						/*nodal interpolation*/
+						data_value=(1-zeta)/2*(area_1*data[(int)index_data[6*i+0]-1]+area_2*data[(int)index_data[6*i+1]-1]+area_3*data[(int)index_data[6*i+2]-1]) 
+						  +        (1+zeta)/2*(area_1*data[(int)index_data[6*i+3]-1]+area_2*data[(int)index_data[6*i+4]-1]+area_3*data[(int)index_data[6*i+5]-1]);
+					}
+					else{
+						/*element interpolation*/
+						data_value=data[i];
+					}
+					if (xIsNan<IssmPDouble>(data_value)) data_value=default_value;
+
+					/*insert value and go to the next point*/
+					data_prime->SetValue(j,data_value,INS_VAL);
+				}
+			}
+		}
+	}
+	if (debug)
+	 _printf_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+
+	/*Assign output pointers:*/
+	*pdata_prime=data_prime;
+	return 1;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file InterpFromMeshToMesh3dx.h
+ * \brief: header file for Data interpolation routines.
+ */
+
+#ifndef _INTERPFROMMESHTOMESH3DX_H
+#define _INTERPFROMMESHTOMESH3DX_H
+
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+
+int InterpFromMeshToMesh3dx(IssmSeqVec<IssmPDouble>** pdata_prime,double* index_data, double* x_data, double* y_data, double* z_data, int nods_data,int nels_data, double* data, int data_length, double* x_prime, double* y_prime, double* z_prime, int nods_prime,double default_value);
+
+#endif /* _INTERPFROMMESHTOMESH3DX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp	(revision 21239)
@@ -0,0 +1,594 @@
+/*!\file IoModelToConstraintsx
+ * \brief: used in ModelProcessor, to retrieve a nodal vector  and to create corresponding constraints using Constraints objects
+ */
+
+#include "./IoModelToConstraintsx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../ModelProcessorx/ModelProcessorx.h"
+
+void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,const char* spc_name,int analysis_type,int finite_element,int dof){
+
+	/*intermediary: */
+	int         code,vector_layout;
+	IssmDouble *spcdata = NULL;
+	int         M,N;
+
+	/*First of, find the record for the enum, and get code  of data type: */
+	iomodel->SetFilePointerToData(&code, &vector_layout,spc_name);
+	if(code!=7)_error_("expecting a IssmDouble vector for constraints " << spc_name);
+	if(vector_layout!=1)_error_("expecting a nodal vector for constraints " << spc_name);
+
+	/*Fetch vector:*/
+	iomodel->FetchData(&spcdata,&M,&N,spc_name);
+
+	/*Call IoModelToConstraintsx*/
+	IoModelToConstraintsx(constraints,iomodel,spcdata,M,N,analysis_type,finite_element,dof);
+
+	/*Clean up*/
+	xDelete<IssmDouble>(spcdata);
+}
+void IoModelToDynamicConstraintsx(Constraints* constraints,IoModel* iomodel,const char* spc_name,int analysis_type,int finite_element,int dof){
+
+	/*intermediary: */
+	int         code,vector_layout;
+	IssmDouble *spcdata = NULL;
+	int         M,N;
+
+	/*First of, find the record for the enum, and get code  of data type: */
+	iomodel->SetFilePointerToData(&code, &vector_layout,spc_name);
+	if(code!=7)_error_("expecting a IssmDouble vector for constraints " << spc_name);
+	if(vector_layout!=1)_error_("expecting a nodal vector for constraints " << spc_name);
+
+	/*Fetch vector:*/
+	iomodel->FetchData(&spcdata,&M,&N,spc_name);
+
+	/*Call IoModelToConstraintsx*/
+	IoModelToDynamicConstraintsx(constraints,iomodel,spcdata,M,N,analysis_type,finite_element,dof);
+
+	/*Clean up*/
+	xDelete<IssmDouble>(spcdata);
+}
+
+void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof){/*{{{*/
+
+	/*intermediary: */
+	int         i,j,count,elementnbv,numfacevertices;
+	IssmDouble  value;
+	IssmDouble *times            = NULL;
+	IssmDouble *values           = NULL;
+	bool        spcpresent       = false;
+
+	/*Higher-order finite elements*/
+	int   v1,v2;
+	bool *my_edges = NULL;
+	bool *my_faces = NULL;
+	bool *boundaryedge = NULL;
+
+	switch(finite_element){
+		case P1Enum: 
+			/*Nothing else to do*/
+			break;
+		case P1bubbleEnum:
+			switch(iomodel->meshelementtype){
+				case TriaEnum:  elementnbv = 3; break;
+				case TetraEnum: elementnbv = 4; break;
+				case PentaEnum: elementnbv = 6; break;
+				default: _error_("mesh type not supported yet");
+			}
+			break;
+		case P1bubblecondensedEnum: 
+			/*Nothing else to do*/
+			break;
+		case P1xP2Enum:
+			EdgesPartitioning(&my_edges,iomodel);
+			break;
+		case P1xP3Enum:
+			EdgesPartitioning(&my_edges,iomodel);
+			break;
+		case P2xP1Enum:
+			EdgesPartitioning(&my_edges,iomodel);
+			break;
+		case P2Enum:
+			EdgesPartitioning(&my_edges,iomodel);
+	      if(iomodel->meshelementtype==PentaEnum){
+				FacesPartitioning(&my_faces,iomodel);
+			}
+			EdgeOnBoundaryFlags(&boundaryedge,iomodel);
+			break;
+		case P2bubbleEnum:
+			EdgesPartitioning(&my_edges,iomodel);
+			if(iomodel->meshelementtype==PentaEnum){
+				FacesPartitioning(&my_faces,iomodel);
+			}
+			EdgeOnBoundaryFlags(&boundaryedge,iomodel);
+			switch(iomodel->meshelementtype){
+				case TriaEnum:  elementnbv = 3; break;
+				case TetraEnum: elementnbv = 4; break;
+				case PentaEnum: elementnbv = 6; break;
+				default: _error_("mesh type not supported yet");
+			}
+			break;
+		case P2xP4Enum:
+			EdgesPartitioning(&my_edges,iomodel);
+			FacesPartitioning(&my_faces,iomodel);
+			break;
+		default:
+			_error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet");
+	}
+
+	count=0;
+	if(M==iomodel->numberofvertices){
+		switch(finite_element){
+			case P1Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				break;
+			case P2Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofedges;i++){
+					if(my_edges[i] && boundaryedge[i]){
+						v1 = iomodel->edges[3*i+0]-1;
+						v2 = iomodel->edges[3*i+1]-1;
+						if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,
+											dof,(spcdata[v1]+spcdata[v2])/2.,analysis_type));
+							count++;
+						}
+					}
+				}
+				if(iomodel->meshelementtype==PentaEnum){
+					for(i=0;i<iomodel->numberoffaces;i++){
+						if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
+							if(my_faces[i]){
+								numfacevertices = iomodel->faces[i*iomodel->facescols+3];
+								value=0.;
+								for(j=0;j<numfacevertices;j++){
+									value += spcdata[iomodel->faces[i*iomodel->facescols+4+j] -1];
+								}
+								value = value/reCast<IssmDouble>(numfacevertices);
+								if(!xIsNan<IssmDouble>(value)){
+									constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,
+													iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1,
+													dof,value,analysis_type));
+									count++;
+								}
+							}
+						}
+					}
+				}
+				break;
+			case P2bubbleEnum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofedges;i++){
+					if(my_edges[i] && boundaryedge[i]){
+						v1 = iomodel->edges[3*i+0]-1;
+						v2 = iomodel->edges[3*i+1]-1;
+						if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,
+											dof,(spcdata[v1]+spcdata[v2])/2.,analysis_type));
+							count++;
+						}
+					}
+				}
+				if(iomodel->meshelementtype==PentaEnum){
+					for(i=0;i<iomodel->numberoffaces;i++){
+						if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
+							if(my_faces[i]){
+								numfacevertices = iomodel->faces[i*iomodel->facescols+3];
+								value=0.;
+								for(j=0;j<numfacevertices;j++){
+									value += spcdata[iomodel->faces[i*iomodel->facescols+4+j] -1];
+								}
+								value = value/reCast<IssmDouble>(numfacevertices);
+								if(!xIsNan<IssmDouble>(value)){
+									constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,
+													iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1,
+													dof,value,analysis_type));
+									count++;
+								}
+							}
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofelements;i++){
+					if(iomodel->my_elements[i]){
+						value = spcdata[iomodel->elements[i*elementnbv+0]-1];
+						for(j=1;j<elementnbv;j++) value += spcdata[iomodel->elements[i*elementnbv+j]-1];
+						value = value/reCast<IssmDouble,int>(elementnbv+0);
+						if(!xIsNan<IssmDouble>(value)){
+							int nodeid = iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1;
+							if(iomodel->meshelementtype==PentaEnum){
+								nodeid += iomodel->numberoffaces;
+							}
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,nodeid,dof,value,analysis_type));
+							count++;
+						}
+					}
+				}
+				break;
+			case P2xP4Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofedges;i++){
+					if(iomodel->edges[i*3+2]==2){/*Vertical edges*/
+						if(my_edges[i]){
+							v1 = iomodel->edges[3*i+0]-1;
+							v2 = iomodel->edges[3*i+1]-1;
+							if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
+								constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+3*i+1,
+												dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type));
+								constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+2,iomodel->nodecounter+iomodel->numberofvertices+3*i+2,
+												dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type));
+								constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+3,iomodel->nodecounter+iomodel->numberofvertices+3*i+3,
+												dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type));
+								count=count+3;
+							}
+						}
+					}
+					if(iomodel->edges[i*3+2]==1){/*Horizontal edges*/
+						if(my_edges[i]){
+							v1 = iomodel->edges[3*i+0]-1;
+							v2 = iomodel->edges[3*i+1]-1;
+							if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
+								constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+3*i+1,
+												dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type));
+								count=count+1;
+							}
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberoffaces;i++){
+					if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
+						if(my_faces[i]){
+							numfacevertices = iomodel->faces[i*iomodel->facescols+3];
+							value=0.;
+							for(j=0;j<numfacevertices;j++){
+								value += spcdata[iomodel->faces[i*iomodel->facescols+4+j] -1];
+							}
+							value = value/reCast<IssmDouble>(numfacevertices);
+							if(!xIsNan<IssmDouble>(value)){
+								constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,
+												iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*i+1,
+												dof,value,analysis_type));
+								constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+2,
+												iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*i+2,
+												dof,value,analysis_type));
+								constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+3,
+												iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*i+3,
+												dof,value,analysis_type));
+								count=count+3;
+							}
+						}
+					}
+				}
+				break;
+			case P1bubbleEnum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofelements;i++){
+					if(iomodel->my_elements[i]){
+						value = spcdata[iomodel->elements[i*elementnbv+0]-1];
+						for(j=1;j<elementnbv;j++) value += spcdata[iomodel->elements[i*elementnbv+j]-1];
+						value = value/reCast<IssmDouble,int>(elementnbv+0);
+						if(!xIsNan<IssmDouble>(value)){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,
+											dof,value,analysis_type));
+							count++;
+						}
+					}
+				}
+				break;
+			case P1bubblecondensedEnum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				break;
+			case P1xP2Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofedges;i++){
+					if(iomodel->edges[i*3+2]==2){
+						if(my_edges[i]){
+							v1 = iomodel->edges[3*i+0]-1;
+							v2 = iomodel->edges[3*i+1]-1;
+							if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
+								constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,
+												dof,(spcdata[v1]+spcdata[v2])/2.,analysis_type));
+								count++;
+							}
+						}
+					}
+				}
+				break;
+			case P1xP3Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofedges;i++){
+					if(iomodel->edges[i*3+2]==2){
+						if(my_edges[i]){
+							v1 = iomodel->edges[3*i+0]-1;
+							v2 = iomodel->edges[3*i+1]-1;
+							if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
+								constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+2*i+1,
+												dof,2./3.*spcdata[v1]+1./3.*spcdata[v2],analysis_type));
+								constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+2,iomodel->nodecounter+iomodel->numberofvertices+2*i+2,
+												dof,1./3.*spcdata[v1]+2./3.*spcdata[v2],analysis_type));
+								count=count+2;
+							}
+						}
+					}
+				}
+				break;
+			case P2xP1Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofedges;i++){
+					if(iomodel->edges[i*3+2]!=2){
+						if(my_edges[i]){
+							v1 = iomodel->edges[3*i+0]-1;
+							v2 = iomodel->edges[3*i+1]-1;
+							if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
+								constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,
+												dof,(spcdata[v1]+spcdata[v2])/2.,analysis_type));
+								count++;
+							}
+						}
+					}
+				}
+				break;
+			default:
+				_error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet");
+		}
+	}
+	else if (M==(iomodel->numberofvertices+1)){
+		/*transient: create transient SpcTransient objects. Same logic, except we need to retrieve 
+		 * various times and values to initialize an SpcTransient object: */
+
+		/*figure out times: */
+		times=xNew<IssmDouble>(N);
+		for(j=0;j<N;j++) times[j]=spcdata[(M-1)*N+j];
+
+		switch(finite_element){
+			case P1Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+
+						/*figure out times and values: */
+						values=xNew<IssmDouble>(N);
+						spcpresent=false;
+						for(j=0;j<N;j++){
+							values[j]=spcdata[i*N+j];
+							if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
+						}
+
+						if(spcpresent){
+							constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,N,times,values,analysis_type));
+							count++;
+						}
+						xDelete<IssmDouble>(values);
+					}
+				}
+				break;
+			case P2Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+
+						/*figure out times and values: */
+						values=xNew<IssmDouble>(N);
+						spcpresent=false;
+						for(j=0;j<N;j++){
+							values[j]=spcdata[i*N+j];
+							if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
+						}
+
+						if(spcpresent){
+							constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,N,times,values,analysis_type));
+							count++;
+						}
+						xDelete<IssmDouble>(values);
+					}
+				}
+				for(i=0;i<iomodel->numberofedges;i++){
+					if(my_edges[i]){
+						v1 = iomodel->edges[3*i+0]-1;
+						v2 = iomodel->edges[3*i+1]-1;
+						values=xNew<IssmDouble>(N);
+						spcpresent=false;
+						for(j=0;j<N;j++){
+							values[j]=(spcdata[v1*N+j]+spcdata[v2*N+j])/2.;
+							if(!xIsNan<IssmDouble>(values[j])) spcpresent=true; //NaN means no spc by default
+						}
+						if(spcpresent){
+							constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,dof,
+											N,times,values,analysis_type));
+							count++;
+						}
+						xDelete<IssmDouble>(values);
+					}
+				}
+				break;
+			case P1xP2Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+
+						/*figure out times and values: */
+						values=xNew<IssmDouble>(N);
+						spcpresent=false;
+						for(j=0;j<N;j++){
+							values[j]=spcdata[i*N+j];
+							if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
+						}
+
+						if(spcpresent){
+							constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,N,times,values,analysis_type));
+							count++;
+						}
+						xDelete<IssmDouble>(values);
+					}
+				}
+				for(i=0;i<iomodel->numberofedges;i++){
+					if(iomodel->edges[i*3+2]==2){
+						if(my_edges[i]){
+							v1 = iomodel->edges[3*i+0]-1;
+							v2 = iomodel->edges[3*i+1]-1;
+							values=xNew<IssmDouble>(N);
+							spcpresent=false;
+							for(j=0;j<N;j++){
+								values[j]=(spcdata[v1*N+j]+spcdata[v2*N+j])/2.;
+								if(!xIsNan<IssmDouble>(values[j])) spcpresent=true; //NaN means no spc by default
+							}
+							if(spcpresent){
+								constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,dof,
+												N,times,values,analysis_type));
+								count++;
+							}
+							xDelete<IssmDouble>(values);
+						}
+					}
+				}
+				break;
+			case P2xP1Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+
+						/*figure out times and values: */
+						values=xNew<IssmDouble>(N);
+						spcpresent=false;
+						for(j=0;j<N;j++){
+							values[j]=spcdata[i*N+j];
+							if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
+						}
+
+						if(spcpresent){
+							constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,N,times,values,analysis_type));
+							count++;
+						}
+						xDelete<IssmDouble>(values);
+					}
+				}
+				for(i=0;i<iomodel->numberofedges;i++){
+					if(iomodel->edges[i*3+2]!=2){
+						if(my_edges[i]){
+							v1 = iomodel->edges[3*i+0]-1;
+							v2 = iomodel->edges[3*i+1]-1;
+							values=xNew<IssmDouble>(N);
+							spcpresent=false;
+							for(j=0;j<N;j++){
+								values[j]=(spcdata[v1*N+j]+spcdata[v2*N+j])/2.;
+								if(!xIsNan<IssmDouble>(values[j])) spcpresent=true; //NaN means no spc by default
+							}
+							if(spcpresent){
+								constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,dof,
+												N,times,values,analysis_type));
+								count++;
+							}
+							xDelete<IssmDouble>(values);
+						}
+					}
+				}
+				break;
+			default:
+				_error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet");
+		}
+	}
+	else{
+		_error_("Size of spc field not supported");
+	}
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(times);
+	xDelete<IssmDouble>(values);
+	xDelete<bool>(my_edges);
+	xDelete<bool>(my_faces);
+	xDelete<bool>(boundaryedge);
+}/*}}}*/
+void IoModelToDynamicConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof){/*{{{*/
+
+	/*intermediary: */
+	int i,count;
+
+	switch(finite_element){
+		case P1Enum: 
+			/*Nothing else to do*/
+			break;
+		default:
+			_error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet");
+	}
+
+	count=0;
+	if(M==iomodel->numberofvertices){
+		switch(finite_element){
+			case P1Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,analysis_type));
+							count++;
+						}
+					}
+				}
+				break;
+			default:
+				_error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet");
+		}
+	}
+	else{
+		_error_("Size of spc field not supported");
+	}
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.h	(revision 21239)
@@ -0,0 +1,15 @@
+/*!\file:  IoModelToConstraintsx.h
+ */ 
+
+#ifndef _IOMODEL_TO_CONSTRAINTS_H_
+#define _IOMODEL_TO_CONSTRAINTS_H_
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,const char* spc_name,int analysis_type,int finite_element,int dof=0);
+void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof=0);
+void IoModelToDynamicConstraintsx(Constraints* constraints,IoModel* iomodel,const char* spc_name,int analysis_type,int finite_element,int dof=0);
+void IoModelToDynamicConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof=0);
+
+#endif  /* _IOMODELTOELEMENTINPUTX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/KMLFileReadx/KMLFileReadx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/KMLFileReadx/KMLFileReadx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/KMLFileReadx/KMLFileReadx.cpp	(revision 21239)
@@ -0,0 +1,61 @@
+/*!\file KMLFileReadx.cpp
+ */
+
+#include "./KMLFileReadx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+KML_Object* KMLFileReadx(FILE* fid){
+
+	char*   kstr;
+	KML_File*      kxml=NULL;
+	KML_File*      kdtd=NULL;
+	KML_File*      kfil=NULL;
+
+	clock_t clock0,clock1;
+	time_t  time0, time1;
+
+	clock0=clock();
+	time0 =time(NULL);
+	_printf0_("\nKMLFileReadx Module -- " << ctime(&time0));
+
+/*  read kml file  */
+
+	while((kstr=KMLFileToken(fid, NULL,NULL))){
+		if      (!strncmp(kstr,"<?xml"    ,5)) {
+			kxml=new KML_File();
+			KMLFileTagAttrib(kxml,
+							 kstr);
+		}
+		else if (!strncmp(kstr,"<!DOCTYPE",9)) {
+			kdtd=new KML_File();
+			KMLFileTagAttrib(kdtd,
+							 kstr);
+		}
+		else if (!strncmp(kstr,"<kml"     ,4)) {
+			kfil=new KML_File();
+			kfil->Read(fid,kstr);
+//			kfil->DeepEcho();
+		}
+
+//		_printf0_(kstr << "\n");
+		xDelete<char>(kstr);
+	}
+
+	if (kxml) {
+		_printf0_("XML declaration:\n");
+		kxml->DeepEcho("  ");
+		delete kxml;
+	}
+	if (kdtd) {
+		_printf0_("DTD declaration (not yet implemented):\n");
+		kdtd->DeepEcho("  ");
+		delete kdtd;
+	}
+
+	clock1=clock();
+	time1 =time(NULL);
+	_printf_("KMLFileReadx Module -- " <<((double)(clock1-clock0))/CLOCKS_PER_SEC << " CPU seconds; " <<difftime(time1,time0) << " elapsed seconds.\n\n\n");
+
+	return(kfil);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/KMLFileReadx/KMLFileReadx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/KMLFileReadx/KMLFileReadx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/KMLFileReadx/KMLFileReadx.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  KMLFileReadx.h
+ * \brief header file for kml mesh writer routines.
+ */ 
+
+#ifndef _KMLFILEREADX_H
+#define _KMLFILEREADX_H
+
+#include <float.h>    /*  DBL_MAX  */
+#include "../../kml/kmlobjects.h"
+
+/* local prototypes: */
+KML_Object* KMLFileReadx(FILE* fid);
+
+#endif  /* _KMLFILEREADX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/KMLMeshWritex/KMLMeshWritex.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/KMLMeshWritex/KMLMeshWritex.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/KMLMeshWritex/KMLMeshWritex.cpp	(revision 21239)
@@ -0,0 +1,356 @@
+/*!\file KMLMeshWritex
+ */
+
+#include "./KMLMeshWritex.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void KMLMeshWritex(int* ierror,char* name,char* notes,int* elem,int melem,int nelem,int* nodecon,int mncon,int nncon,double* lat, double* lng,int* part,double* data, int mdata, int ndata,double* cmap, int mcmap, int ncmap,FILE* fid){
+
+	int                 i,j,k,ipt=0,jpt=0,nnodes;
+	int                 mxepg      = 25;
+	int                 lwidth     = 1;
+	double              popac      = 0.50;
+	char                indent[81] = " ";
+	char                cstr[81];
+	double             *edata = NULL;
+	bool ncfree=false, edfree=false;
+	KML_Document       *kdoc = NULL;
+	KML_Style          *kstyle;
+	KML_LineStyle      *klsty;
+	KML_PolyStyle      *kpsty;
+
+	clock_t clock0,clock1,clock0a,clock0b,clock0c;
+	time_t  time0, time1, time0a, time0b, time0c;
+
+	clock0=clock();
+	time0 =time(NULL);
+	_printf0_("\nKMLMeshWritex Module -- " << ctime(&time0));
+
+/*  construct kml document  */
+
+	kdoc=new KML_Document();
+	sprintf(kdoc->name      ,"ISSM Mesh: %s",name);
+	kdoc->open      =1;
+	sprintf(kdoc->descript  ,"%s",notes);
+
+/*  write style templates for defaults and for each color of the matlab
+	colormap (note that matlab colormap format is rgb, where each varies
+	from 0 to 1, whereas the kml color format is aabbggrr, where each
+	varies from 00 to ff.)  */
+
+	klsty=new KML_LineStyle();
+	sprintf(klsty->color     ,"ff000000");
+	sprintf(klsty->colormode ,"normal");
+	klsty->width     =lwidth;
+	kpsty=new KML_PolyStyle();
+	sprintf(kpsty->color     ,"%02xffffff",(int)floor(popac*255+0.5));
+	sprintf(kpsty->colormode ,"random");
+	kstyle=new KML_Style();
+	kstyle->AddAttrib("id","BlackLineRandomPoly");
+	kstyle->line      =klsty;
+	kstyle->poly      =kpsty;
+	(kdoc->style     )->AddObject((Object*)kstyle);
+
+	klsty=new KML_LineStyle();
+	sprintf(klsty->color     ,"ff000000");
+	sprintf(klsty->colormode ,"normal");
+	klsty->width     =lwidth;
+	kpsty=new KML_PolyStyle();
+	sprintf(kpsty->color     ,"00ffffff");
+	sprintf(kpsty->colormode ,"random");
+	kstyle=new KML_Style();
+	kstyle->AddAttrib("id","BlackLineEmptyPoly");
+	kstyle->line      =klsty;
+	kstyle->poly      =kpsty;
+	(kdoc->style     )->AddObject((Object*)kstyle);
+
+	klsty=new KML_LineStyle();
+	sprintf(klsty->color     ,"ff0000ff");
+	sprintf(klsty->colormode ,"normal");
+	klsty->width     =lwidth;
+	kpsty=new KML_PolyStyle();
+	sprintf(kpsty->color     ,"%02x0000ff",(int)floor(popac*255+0.5));
+	sprintf(kpsty->colormode ,"random");
+	kstyle=new KML_Style();
+	kstyle->AddAttrib("id","RedLineRedPoly");
+	kstyle->line      =klsty;
+	kstyle->poly      =kpsty;
+	(kdoc->style     )->AddObject((Object*)kstyle);
+
+	if (cmap) {
+		_printf0_("Writing " << mcmap << " Matlab colors as KML style templates.\n");
+		ipt=0;
+		for (i=0; i<mcmap; i++) {
+			klsty=new KML_LineStyle();
+//			sprintf(klsty->color     ,"ff000000");
+			sprintf(klsty->color     ,"%02x%02x%02x%02x",
+					(int)255,
+					(int)floor(cmap[ipt+2]*255+0.5),
+					(int)floor(cmap[ipt+1]*255+0.5),
+					(int)floor(cmap[ipt  ]*255+0.5));
+			sprintf(klsty->colormode ,"normal");
+			klsty->width     =lwidth;
+			kpsty=new KML_PolyStyle();
+			sprintf(kpsty->color     ,"%02x%02x%02x%02x",
+					(int)floor(popac*255+0.5),
+					(int)floor(cmap[ipt+2]*255+0.5),
+					(int)floor(cmap[ipt+1]*255+0.5),
+					(int)floor(cmap[ipt  ]*255+0.5));
+			sprintf(kpsty->colormode ,"normal");
+			kstyle=new KML_Style();
+			sprintf(cstr,"MatlabColor%d",i+1);
+			kstyle->AddAttrib("id",cstr);
+			kstyle->line      =klsty;
+			kstyle->poly      =kpsty;
+			(kdoc->style     )->AddObject((Object*)kstyle);
+			ipt+=ncmap;
+		}
+	}
+//	kdoc->DeepEcho();
+
+/*  create the node connectivity table, if necessary
+	(noting that rows do not need to be sorted, since the elements
+	are consecutively numbered)  */
+
+	if (!nodecon) {
+		_printf0_("Creating the node connectivity table.\n");
+		nncon=mxepg+1;
+		nodecon=xNewZeroInit<int>(mncon*nncon);
+		ncfree=true;
+
+		jpt=0;
+		for (i=0; i<melem; i++) {
+			for (j=0; j<nelem; j++) {
+				if (elem[jpt]) {
+					ipt=(elem[jpt]-1)*nncon;
+					if (nodecon[ipt+(nncon-1)] < mxepg) {
+						nodecon[ipt+nodecon[ipt+(nncon-1)]]=i+1;
+						nodecon[ipt+(nncon-1)]++;
+					}
+					else
+						_error_("Nodal connectivity table needs more than specified " << mxepg << " columns.\n");
+				}
+				jpt++;
+			}
+		}
+	}
+
+/*  average nodal data to element data, if necessary
+	(noting that multiple columns of data are handled here, but not
+	yet below)  */
+
+	if (data) {
+		if      (mdata == melem)
+			edata=data;
+
+		else if (mdata == mncon) {
+			_printf0_("Averaging nodal data to element data.\n");
+			edata=xNewZeroInit<double>(melem*ndata);
+			edfree=true;
+
+			ipt=0;
+			jpt=0;
+			for (i=0; i<melem; i++) {
+				nnodes=0;
+				for (j=0; j<nelem; j++) {
+					if (elem[jpt]) {
+						for (k=0; k<ndata; k++)
+							edata[ipt+k]+=data[(elem[jpt]-1)*ndata+k];
+						nnodes++;
+					}
+					jpt++;
+				}
+				if (nnodes)
+					for (k=0; k<ndata; k++)
+						edata[ipt+k]/=(double)nnodes;
+				ipt+=ndata;
+			}
+		}
+
+		else
+			_error_("Data matrix has incorrect number of " << mdata << " rows.\n");
+	}
+
+/*  write folder for mesh  */
+
+	(kdoc ->feature   )->AddObject((Object*)KMLMeshElem(elem,melem,nelem,
+														nodecon,mncon,nncon,
+														lat,lng,
+														edata,
+														cmap,mcmap,ncmap));
+
+	if(edfree) xDelete<double>(edata);
+	if(ncfree) xDelete<int>(nodecon);
+	clock0a=clock();
+	time0a =time(NULL);
+	_printf_("  Constructed kml document -- " << ((double)(clock0a-clock0))/CLOCKS_PER_SEC << " CPU seconds; " << difftime(time0a,time0) << " elapsed seconds.\n\n\n");
+
+/*  write kml file  */
+
+	_printf0_("Writing kml document to file.\n");
+	fprintf(fid,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+	fprintf(fid,"<kml xmlns=\"http://www.opengis.net/kml/2.2\">\n");
+	kdoc->Write(fid,indent);
+	fprintf(fid,"</kml>\n");
+	clock0b=clock();
+	time0b =time(NULL);
+	_printf_("  Wrote kml file -- " << ((double)(clock0b-clock0a))/CLOCKS_PER_SEC << " CPU seconds; " << difftime(time0b,time0a) << " elapsed seconds.\n\n\n");
+
+	_printf0_("Deleting kml document.\n");
+	delete kdoc;
+	clock0c=clock();
+	time0c =time(NULL);
+	_printf_("  Deleted kml document -- " << ((double)(clock0c-clock0b))/CLOCKS_PER_SEC << " CPU seconds; " << difftime(time0c,time0b) << " elapsed seconds.\n\n\n");
+
+	clock1=clock();
+	time1 =time(NULL);
+	_printf_("KMLMeshWritex Module -- " << ((double)(clock1-clock0))/CLOCKS_PER_SEC << " CPU seconds; " << difftime(time1,time0) << " elapsed seconds.\n\n\n");
+
+	return;
+}
+
+KML_Folder* KMLMeshElem(int* elem,int melem,int nelem,
+						int* nodecon,int mncon,int nncon,
+						double* lat, double* lng,
+						double* edata,
+						double* cmap, int mcmap, int ncmap){
+
+	int     i,j,ipt=0;
+	double  alt=0;
+	double  cmin= DBL_MAX,
+			cmax=-DBL_MAX;
+	int     imap;
+	KML_Folder*     kfold =NULL;
+	KML_Placemark*  kplace=NULL;
+	KML_Polygon*    kpoly =NULL;
+	KML_LinearRing* kring =NULL;
+
+/*  write folder for mesh  */
+
+	kfold=new KML_Folder();
+//	sprintf(kfold->name      ,"Mesh");
+	sprintf(kfold->name      ,"ISSM Targets");
+	kfold->visibility=1;
+//	sprintf(kfold->descript  ,"Elements=%d, Nodes=%d",melem,mncon);
+	sprintf(kfold->descript  ,"campaign{\n");
+	strcat(kfold->descript  ,"  evaluator ClaspTargetEvaluator;\n");
+	strcat(kfold->descript  ,"  solver IssmSolver;\n");
+	strcat(kfold->descript  ,"  spacecraft airplane ClaspSpacecraft(\n");
+	strcat(kfold->descript  ,"    dutyCycleDuration=0,\n");
+	strcat(kfold->descript  ,"    dutyCycleOnDuration=0,\n");
+	strcat(kfold->descript  ,"    memoryInit=15000,\n");
+	strcat(kfold->descript  ,"    memoryLimit=40000000,\n");
+	strcat(kfold->descript  ,"    maxDataCollectionRate=27,\n");
+	strcat(kfold->descript  ,"    maxDataDownlinkRate=10);\n");
+	strcat(kfold->descript  ,"\n");
+	strcat(kfold->descript  ,"  //sensor names\n");
+	strcat(kfold->descript  ,"  sensor qqp_swath = 2,102,1002,1102;\n");
+	strcat(kfold->descript  ,"\n");
+	strcat(kfold->descript  ,"  //sensor ids to modes\n");
+	strcat(kfold->descript  ,"  low_bandwidth_single_pol = 2,102,1002,1102;\n");
+	strcat(kfold->descript  ,"  single_pol = 2,102,1002,1102;\n");
+	strcat(kfold->descript  ,"  dual_pol = 2,102,1002,1102;\n");
+	strcat(kfold->descript  ,"  quad_pol = 2,102,1002,1102;\n");
+	strcat(kfold->descript  ,"\n");
+	strcat(kfold->descript  ,"  //LRAD\n");
+	strcat(kfold->descript  ,"  //Note all targets are \"ascending right\"-- i.e. mode=2\n");
+	strcat(kfold->descript  ,"  left = 1002,1102;\n");
+	strcat(kfold->descript  ,"  right = 2,102;\n");
+	strcat(kfold->descript  ,"  ascending = 2,1002;\n");
+	strcat(kfold->descript  ,"  descending = 102,1102;\n");
+	strcat(kfold->descript  ,"\n");
+	strcat(kfold->descript  ,"  //data rates\n");
+	strcat(kfold->descript  ,"  low_bandwidth_single_pol datarate = 0.896;\n");
+	strcat(kfold->descript  ,"  single_pol datarate = 4.214;\n");
+	strcat(kfold->descript  ,"  dual_pol datarate = 8.428;\n");
+	strcat(kfold->descript  ,"  quad_pol datarate = 16.856;\n");
+	strcat(kfold->descript  ,"\n");
+	strcat(kfold->descript  ,"  //mode domination relationships\n");
+	strcat(kfold->descript  ,"  quad_pol dominates low_bandwidth_single_pol;\n");
+	strcat(kfold->descript  ,"  quad_pol dominates single_pol;\n");
+	strcat(kfold->descript  ,"  quad_pol dominates dual_pol;\n");
+	strcat(kfold->descript  ,"  dual_pol dominates low_bandwidth_single_pol;\n");
+	strcat(kfold->descript  ,"  dual_pol dominates single_pol;\n");
+	strcat(kfold->descript  ,"  single_pol dominates low_bandwidth_single_pol;\n");
+	strcat(kfold->descript  ,"\n");
+	strcat(kfold->descript  ,"  //sensor styles\n");
+	strcat(kfold->descript  ,"  2 0xff00ffff 0xff000000;\n");
+	strcat(kfold->descript  ,"  102 0x7f00ffff 0xff00ffff;\n");
+	strcat(kfold->descript  ,"  1002 0xffffff00 0xffffff00;\n");
+	strcat(kfold->descript  ,"  1102 0x7fffff00 0xffffff00;\n");
+	strcat(kfold->descript  ,"\n");
+	strcat(kfold->descript  ,"  //discipline styles\n");
+	strcat(kfold->descript  ,"  deformation 0xff006090 0xff006090 0xff0000ff 0xff1010ff;\n");
+	strcat(kfold->descript  ,"  vegetation  0xff00ff00 0xff00ff00 0xff0000ff 0xff0020ff;\n");
+	strcat(kfold->descript  ,"  ice         0xffff0000 0xffff0000 0xff0000ff 0xff2000ff;\n");
+	strcat(kfold->descript  ,"}");
+
+	if (edata)
+		for (i=0; i<melem; i++) {
+			if (edata[i] < cmin)
+				cmin=edata[i];
+			if (edata[i] > cmax)
+				cmax=edata[i];
+		}
+
+/*  write each element as a polygon placemark  */
+
+	_printf0_("Writing " << melem << " tria elements as KML polygons.\n");
+
+	for (i=0; i<melem; i++) {
+		kplace=new KML_Placemark();
+		sprintf(kplace->name      ,"Element %d",(i+1));
+		kplace->visibility=1;
+		if (edata) {
+//			sprintf(kplace->descript  ,"Element data: %g",edata[i]);
+			sprintf(kplace->descript  ,"campaign{\n  deformation 1 %g quad_pol ascending right asap;\n}",edata[i]);
+			imap = (int)floor((edata[i]-cmin)/(cmax-cmin)*mcmap+0.5)+1;
+			if      ((imap >= 1) && (imap <= mcmap))
+				sprintf(kplace->styleurl  ,"#MatlabColor%d",imap);
+			else if (edata[i] == cmax)
+				sprintf(kplace->styleurl  ,"#MatlabColor%d",mcmap);
+			else
+				sprintf(kplace->styleurl  ,"#BlackLineEmptyPoly");
+		}
+		else {
+			sprintf(kplace->descript  ,"");
+			sprintf(kplace->styleurl  ,"#BlackLineRandomPoly");
+		}
+//		kplace->DeepEcho();
+
+		kpoly=new KML_Polygon();
+		kpoly->extrude   =1;
+		sprintf(kpoly->altmode   ,"clampToGround");
+//		kpoly->DeepEcho();
+
+		kring=new KML_LinearRing();
+		kring->ncoord    =nelem+1;
+		kring->coords =xNew<double>((nelem+1)*3);
+
+/*  write the nodal coordinates as a linear ring  */
+
+		for (j=0; j<nelem; j++) {
+			kring->coords[3*j+0]=lng[elem[ipt]-1];
+			kring->coords[3*j+1]=lat[elem[ipt]-1];
+			kring->coords[3*j+2]=alt;
+			ipt++;
+		}
+		kring->coords[3*nelem+0]=kring->coords[3*0+0];
+		kring->coords[3*nelem+1]=kring->coords[3*0+1];
+		kring->coords[3*nelem+2]=kring->coords[3*0+2];
+//		kring->DeepEcho();
+
+/*  assemble the linear ring into polygon into placemark into folder  */
+
+		(kpoly ->outer   )->AddObject((Object*)kring);
+		(kplace->geometry)->AddObject((Object*)kpoly);
+		(kfold ->feature )->AddObject((Object*)kplace);
+
+//		if (!(int)fmod((double)(i+1),1000))
+//			_printf0_("  " << (i+1) << " tria elements written.\n");
+	}
+	_printf0_("  " << melem << " tria elements written.\n");
+
+	return(kfold);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/KMLMeshWritex/KMLMeshWritex.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/KMLMeshWritex/KMLMeshWritex.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/KMLMeshWritex/KMLMeshWritex.h	(revision 21239)
@@ -0,0 +1,29 @@
+/*!\file:  KMLMeshWritex.h
+ * \brief header file for kml mesh writer routines.
+ */ 
+
+#ifndef _KMLMESHWRITEX_H
+#define _KMLMESHWRITEX_H
+
+#include <float.h>    /*  DBL_MAX  */
+#include "../../kml/kmlobjects.h"
+
+/* local prototypes: */
+void KMLMeshWritex(int* ierror,
+				   char* name,
+				   char* notes,
+				   int* elem,int melem,int nelem,
+				   int* nodecon,int mncon,int nncon,
+				   double* lat, double* lng,
+				   int* part,
+				   double* data, int mdata, int ndata,
+				   double* cmap, int mcmap, int ncmap,
+				   FILE* fid);
+
+KML_Folder* KMLMeshElem(int* elem,int melem,int nelem,
+						int* nodecon,int mncon,int nncon,
+						double* lat, double* lng,
+						double* edata,
+						double* cmap, int mcmap, int ncmap);
+
+#endif  /* _KMLMESHWRITEX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/KMLOverlayx/KMLOverlayx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/KMLOverlayx/KMLOverlayx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/KMLOverlayx/KMLOverlayx.cpp	(revision 21239)
@@ -0,0 +1,92 @@
+/*!\file KMLOverlayx
+ */
+
+#include "./KMLOverlayx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../kml/kmlobjects.h"
+
+void KMLOverlayx(int* ierror,
+				 double* lataxis, double* longaxis,
+				 int nimages, char** pimages,
+				 FILE* fid){
+
+	int     i;
+	char    indent[81]="";
+	KML_File*          kfile=NULL;
+	KML_Document*      kdoc=NULL;
+	KML_Folder*        kfold=NULL;
+	KML_GroundOverlay* kgover=NULL;
+	KML_Icon*          kicon=NULL;
+	KML_LatLonBox*     kllbox=NULL;
+
+	clock_t clock0,clock1;
+	time_t  time0, time1;
+
+	clock0=clock();
+	time0 =time(NULL);
+	_printf0_("\nKMLOverlayx Module -- " << ctime(&time0));
+
+/*  construct kml file  */
+
+	kfile=new KML_File();
+	kfile->AddAttrib("xmlns","http://www.opengis.net/kml/2.2");
+
+/*  construct kml document  */
+
+	kdoc=new KML_Document();
+	sprintf(kdoc->name      ,"Ground Overlays from ISSM");
+	kdoc->open      =1;
+
+/*  construct kml folder for overlays  */
+
+	kfold=new KML_Folder();
+	sprintf(kfold->name      ,"Ground Overlays");
+	kfold->open      =1;
+
+/*  construct ground overlay, icon, and lat/long box for each image  */
+
+	for (i=0; i<nimages; i++) {
+		kgover=new KML_GroundOverlay();
+		sprintf(kgover->name      ,"%s",pimages[i]);
+		kgover->visibility=0;
+
+		kicon=new KML_Icon();
+		sprintf(kicon->href      ,"%s",pimages[i]);
+		kgover->icon      =kicon;
+		kicon=NULL;
+
+		kllbox=new KML_LatLonBox();
+		kllbox->north     =lataxis[1];
+		kllbox->south     =lataxis[0];
+		kllbox->east      =longaxis[1];
+		kllbox->west      =longaxis[0];
+		kllbox->rotation  = 0.;
+		kgover->llbox     =kllbox;
+		kllbox=NULL;
+
+		(kfold->feature   )->AddObject((Object*)kgover);
+		kgover=NULL;
+	}
+
+/*  assemble the rest of the kml hierarchy  */
+
+	(kdoc->feature   )->AddObject((Object*)kfold);
+	kfold=NULL;
+	(kfile->kmlobj    )->AddObject((Object*)kdoc);
+	kdoc=NULL;
+
+/*  write kml file  */
+
+	_printf0_("Writing kml document to file.\n");
+	fprintf(fid,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+	kfile->Write(fid,indent);
+
+	delete kfile;
+
+	clock1=clock();
+	time1 =time(NULL);
+	_printf_("KMLOverlayx Module -- " << ((double)(clock1-clock0))/CLOCKS_PER_SEC << " CPU seconds; " << difftime(time1,time0) << " elapsed seconds.\n\n\n");
+
+	return;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/KMLOverlayx/KMLOverlayx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/KMLOverlayx/KMLOverlayx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/KMLOverlayx/KMLOverlayx.h	(revision 21239)
@@ -0,0 +1,17 @@
+/*!\file:  KMLOverlayx.h
+ * \brief header file for kml file overlay routines.
+ */ 
+
+#ifndef _KMLOVERLAYX_H
+#define _KMLOVERLAYX_H
+
+#include <float.h>    /*  DBL_MAX  */
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void KMLOverlayx(int* ierror,
+				 double* lataxis, double* longaxis,
+				 int nimages, char** pimages,
+				 FILE* fid);
+
+#endif  /* _KMLOVERLAYX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Kml2Expx/Kml2Expx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Kml2Expx/Kml2Expx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Kml2Expx/Kml2Expx.cpp	(revision 21239)
@@ -0,0 +1,53 @@
+/*!\file Kml2Expx
+ * \brief kml to exp conversion routines.
+ */
+
+#include "./Kml2Expx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../KMLFileReadx/KMLFileReadx.h"
+
+int Kml2Expx(char* filkml,char* filexp,int sgn){
+
+	double  cm,sp;
+	Ll2xydef(&cm,&sp,sgn);
+
+	return(Kml2Expx(filkml,filexp,sgn,cm,sp));
+}
+
+int Kml2Expx(char* filkml,char* filexp,int sgn,double cm,double sp){
+
+	int         iret   = 0;
+	KML_Object *kobj   = NULL;
+	FILE       *fidi   = NULL;
+	FILE       *fido   = NULL;
+	clock_t     clock0,clock1;
+	time_t      time0 ,time1;
+
+	clock0=clock();
+	time0 =time(NULL);
+	_printf0_("\nKml2Expx Module -- " << ctime(&time0));
+
+	/*read kml file*/
+	fidi=fopen(filkml,"r");
+	if (!(kobj=KMLFileReadx(fidi)))
+	 _error_("Error reading kml file.");
+	fclose(fidi);
+
+	/*open exp file*/
+	_printf0_("Writing exp profiles to file.\n");
+	fido=fopen(filexp,"w");
+
+	/*write the polygons and linestrings  */
+	kobj->WriteExp(fido,"",sgn,cm,sp);
+
+	/*close exp file  */
+	fclose(fido);
+	delete kobj;
+
+	clock1=clock();
+	time1 =time(NULL);
+	_printf_("Kml2Expx Module -- " << ((double)(clock1-clock0))/CLOCKS_PER_SEC << " CPU seconds; " << difftime(time1,time0) << " elapsed seconds.\n\n\n");
+
+	return(iret);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Kml2Expx/Kml2Expx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Kml2Expx/Kml2Expx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Kml2Expx/Kml2Expx.h	(revision 21239)
@@ -0,0 +1,17 @@
+/*!\file:  Kml2Expx.h
+ * \brief header file for kml to exp conversion routines.
+ */ 
+
+#ifndef _KML2EXPX_H
+#define _KML2EXPX_H
+
+#include <float.h>    /*  DBL_MAX  */
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+int Kml2Expx(char* filkml,char* filexp,
+			 int sgn);
+int Kml2Expx(char* filkml,char* filexp,
+			 int sgn,double cm,double sp);
+
+#endif  /* _KML2EXPX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Krigingx/Krigingx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Krigingx/Krigingx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Krigingx/Krigingx.cpp	(revision 21239)
@@ -0,0 +1,423 @@
+/*!\file:  Kriging.cpp
+ * \brief  "c" core code for Kriging
+ */ 
+
+#include "./Krigingx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "../modules.h"
+#ifdef _HAVE_GSL_
+#include <gsl/gsl_linalg.h>
+#endif
+int   Krigingx(double** ppredictions,double **perror,double* obs_x, double* obs_y, double* obs_list, int obs_length,double* x_interp,double* y_interp,int n_interp,Options* options){/*{{{*/
+
+	/*output*/
+	double *predictions = NULL;
+	double *error       = NULL;
+
+	/*Intermediaries*/
+	int           mindata,maxdata;
+	double        dmindata,dmaxdata,dnumthreads; //FIXME (Options come as double but we want to retrive integers)
+	double        radius;
+	char         *output       = NULL;
+	Variogram    *variogram    = NULL;
+	Observations *observations = NULL;
+
+	/*threading: */
+	KrigingxThreadStruct gate;
+	int num = _NUMTHREADS_;
+
+	/*Get Variogram from Options*/
+	ProcessVariogram(&variogram,options);
+	options->Get(&radius,"searchradius",0.);
+	options->Get(&dmindata,"mindata",1.);  mindata=int(dmindata);//FIXME (Options come as double but we want to retrive integers)
+	options->Get(&dmaxdata,"maxdata",50.); maxdata=int(dmaxdata);//FIXME (Options come as double but we want to retrive integers)
+	options->Get(&dnumthreads,"numthreads",double(num)); num=int(dnumthreads);//FIXME (Options come as double but we want to retrive integers)
+
+	/*Process observation dataset*/
+	observations=new Observations(obs_list,obs_x,obs_y,obs_length,options);
+
+	/*Allocate output*/
+	predictions =xNewZeroInit<double>(n_interp);
+	error       =xNewZeroInit<double>(n_interp);
+
+	/*Get output*/
+	options->Get(&output,"output",(char*)"prediction");
+
+	if(strcmp(output,"quadtree")==0){
+		observations->QuadtreeColoring(predictions,x_interp,y_interp,n_interp);
+	}
+	else if(strcmp(output,"variomap")==0){
+		observations->Variomap(predictions,x_interp,n_interp);
+	}
+	else if(strcmp(output,"distance")==0){
+		/*initialize thread parameters: */
+		gate.n_interp     = n_interp;
+		gate.x_interp     = x_interp;
+		gate.y_interp     = y_interp;
+		gate.radius       = radius;
+		gate.mindata      = mindata;
+		gate.maxdata      = maxdata;
+		gate.variogram    = variogram;
+		gate.observations = observations;
+		gate.predictions  = predictions;
+		gate.error        = error;
+		gate.numdone      = xNewZeroInit<int>(num);
+
+		/*launch the thread manager with Krigingxt as a core: */
+		LaunchThread(Distancest,(void*)&gate,num);
+		xDelete<int>(gate.numdone);
+	}
+	else if(strcmp(output,"delaunay")==0){
+		int nobs,nel;
+		double *x     = NULL;
+		double *y     = NULL;
+		double *data  = NULL;
+		int    *index = NULL;
+
+		observations->ObservationList(&x,&y,&data,&nobs);
+
+		_printf_("Generation Delaunay Triangulation\n");
+		BamgTriangulatex(&index,&nel,x,y,nobs);
+
+		_printf_("Interpolating\n");
+		xDelete<double>(predictions);
+		InterpFromMeshToMesh2dx(&predictions,index,x,y,nobs,nel,data,nobs,1,x_interp,y_interp,n_interp,options);
+		xDelete<double>(x);
+		xDelete<double>(y);
+		xDelete<double>(data);
+		xDelete<int>(index);
+	}
+	else if(strcmp(output,"nearestneighbor")==0){
+		/*initialize thread parameters: */
+		gate.n_interp     = n_interp;
+		gate.x_interp     = x_interp;
+		gate.y_interp     = y_interp;
+		gate.radius       = radius;
+		gate.mindata      = mindata;
+		gate.maxdata      = maxdata;
+		gate.variogram    = variogram;
+		gate.observations = observations;
+		gate.predictions  = predictions;
+		gate.error        = error;
+		gate.numdone      = xNewZeroInit<int>(num);
+
+		/*launch the thread manager with Krigingxt as a core: */
+		LaunchThread(NearestNeighbort,(void*)&gate,num);
+		_printf_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+		xDelete<int>(gate.numdone);
+	}
+	else if(strcmp(output,"idw")==0){ //Inverse distance weighting
+		double power;
+		options->Get(&power,"power",2.);
+		/*initialize thread parameters: */
+		gate.n_interp     = n_interp;
+		gate.x_interp     = x_interp;
+		gate.y_interp     = y_interp;
+		gate.radius       = radius;
+		gate.mindata      = mindata;
+		gate.maxdata      = maxdata;
+		gate.variogram    = variogram;
+		gate.observations = observations;
+		gate.predictions  = predictions;
+		gate.error        = error;
+		gate.numdone      = xNewZeroInit<int>(num);
+		gate.power        = power;
+
+		/*launch the thread manager with Krigingxt as a core: */
+		LaunchThread(idwt,(void*)&gate,num);
+		_printf_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+		xDelete<int>(gate.numdone);
+	}
+	else if(strcmp(output,"v4")==0){ //Inverse distance weighting
+#if !defined(_HAVE_GSL_)
+		_error_("GSL is required for v4 interpolation");
+#endif
+		/*initialize thread parameters: */
+		gate.n_interp     = n_interp;
+		gate.x_interp     = x_interp;
+		gate.y_interp     = y_interp;
+		gate.radius       = radius;
+		gate.mindata      = mindata;
+		gate.maxdata      = maxdata;
+		gate.variogram    = variogram;
+		gate.observations = observations;
+		gate.predictions  = predictions;
+		gate.error        = error;
+		gate.numdone      = xNewZeroInit<int>(num);
+
+		/*launch the thread manager with Krigingxt as a core: */
+		LaunchThread(v4t,(void*)&gate,num);
+		_printf_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+		xDelete<int>(gate.numdone);
+	}
+	else if(strcmp(output,"prediction")==0){
+#if !defined(_HAVE_GSL_)
+		_error_("GSL is required for v4 interpolation");
+#endif
+
+		/*initialize thread parameters: */
+		gate.n_interp     = n_interp;
+		gate.x_interp     = x_interp;
+		gate.y_interp     = y_interp;
+		gate.radius       = radius;
+		gate.mindata      = mindata;
+		gate.maxdata      = maxdata;
+		gate.variogram    = variogram;
+		gate.observations = observations;
+		gate.predictions  = predictions;
+		gate.error        = error;
+		gate.numdone      = xNewZeroInit<int>(num);
+
+		/*launch the thread manager with Krigingxt as a core: */
+		LaunchThread(Krigingxt,(void*)&gate,num);
+		_printf_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+		xDelete<int>(gate.numdone);
+	}
+	else{
+		_error_("output '" << output << "' not supported yet");
+	}
+
+	/*clean-up and Assign output pointer*/
+	delete variogram;
+	delete observations;
+	xDelete<char>(output);
+	*ppredictions = predictions;
+	*perror       = error;
+	return 1;
+}/*}}}*/
+void* Krigingxt(void* vpthread_handle){/*{{{*/
+
+	/*gate variables :*/
+	KrigingxThreadStruct *gate        = NULL;
+	pthread_handle       *handle      = NULL;
+	int my_thread;
+	int num_threads;
+	int i0,i1;
+
+	/*recover handle and gate: */
+	handle      = (pthread_handle*)vpthread_handle;
+	gate        = (KrigingxThreadStruct*)handle->gate;
+	my_thread   = handle->id;
+	num_threads = handle->num;
+
+	/*recover parameters :*/
+	int           n_interp     = gate->n_interp;
+	double       *x_interp     = gate->x_interp;
+	double       *y_interp     = gate->y_interp;
+	double        radius       = gate->radius;
+	int           mindata      = gate->mindata;
+	int           maxdata      = gate->maxdata;
+	Variogram    *variogram    = gate->variogram;
+	Observations *observations = gate->observations;
+	double       *predictions  = gate->predictions;
+	double       *error        = gate->error;
+	int          *numdone      = gate->numdone;
+
+	/*partition loop across threads: */
+	PartitionRange(&i0,&i1,n_interp,num_threads,my_thread);
+	for(int idx=i0;idx<i1;idx++){
+
+		/*Print info*/
+		numdone[my_thread]=idx-i0;
+		if(my_thread==0){
+			int alldone=numdone[0];
+			for(int i=1;i<num_threads;i++) alldone+=numdone[i];
+			_printf_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(alldone)/double(n_interp)*100.<<"%   ");
+		}
+
+		/*Kriging interpolation*/
+		observations->InterpolationKriging(&predictions[idx],&error[idx],x_interp[idx],y_interp[idx],radius,mindata,maxdata,variogram);
+	}
+
+	return NULL;
+}/*}}}*/
+void* NearestNeighbort(void* vpthread_handle){/*{{{*/
+
+	/*gate variables :*/
+	KrigingxThreadStruct *gate        = NULL;
+	pthread_handle       *handle      = NULL;
+	int my_thread;
+	int num_threads;
+	int i0,i1;
+
+	/*recover handle and gate: */
+	handle      = (pthread_handle*)vpthread_handle;
+	gate        = (KrigingxThreadStruct*)handle->gate;
+	my_thread   = handle->id;
+	num_threads = handle->num;
+
+	/*recover parameters :*/
+	int           n_interp     = gate->n_interp;
+	double       *x_interp     = gate->x_interp;
+	double       *y_interp     = gate->y_interp;
+	double        radius       = gate->radius;
+	int           mindata      = gate->mindata;
+	int           maxdata      = gate->maxdata;
+	Variogram    *variogram    = gate->variogram;
+	Observations *observations = gate->observations;
+	double       *predictions  = gate->predictions;
+	double       *error        = gate->error;
+	int          *numdone      = gate->numdone;
+
+	/*partition loop across threads: */
+	PartitionRange(&i0,&i1,n_interp,num_threads,my_thread);
+	for(int idx=i0;idx<i1;idx++){
+
+		/*Print info*/
+		numdone[my_thread]=idx-i0;
+		if(my_thread==0){
+			int alldone=numdone[0];
+			for(int i=1;i<num_threads;i++) alldone+=numdone[i];
+			_printf_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(alldone)/double(n_interp)*100.<<"%   ");
+		}
+
+		observations->InterpolationNearestNeighbor(&predictions[idx],x_interp[idx],y_interp[idx],radius);
+	}
+
+	return NULL;
+}/*}}}*/
+void* idwt(void* vpthread_handle){/*{{{*/
+
+	/*gate variables :*/
+	KrigingxThreadStruct *gate        = NULL;
+	pthread_handle       *handle      = NULL;
+	int my_thread;
+	int num_threads;
+	int i0,i1;
+
+	/*recover handle and gate: */
+	handle      = (pthread_handle*)vpthread_handle;
+	gate        = (KrigingxThreadStruct*)handle->gate;
+	my_thread   = handle->id;
+	num_threads = handle->num;
+
+	/*recover parameters :*/
+	int           n_interp     = gate->n_interp;
+	double       *x_interp     = gate->x_interp;
+	double       *y_interp     = gate->y_interp;
+	double        radius       = gate->radius;
+	int           mindata      = gate->mindata;
+	int           maxdata      = gate->maxdata;
+	Variogram    *variogram    = gate->variogram;
+	Observations *observations = gate->observations;
+	double       *predictions  = gate->predictions;
+	double       *error        = gate->error;
+	int          *numdone      = gate->numdone;
+	double        power        = gate->power;
+
+	/*partition loop across threads: */
+	PartitionRange(&i0,&i1,n_interp,num_threads,my_thread);
+	for(int idx=i0;idx<i1;idx++){
+
+		/*Print info*/
+		numdone[my_thread]=idx-i0;
+		if(my_thread==0){
+			int alldone=numdone[0];
+			for(int i=1;i<num_threads;i++) alldone+=numdone[i];
+			_printf_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(alldone)/double(n_interp)*100.<<"%   ");
+		}
+
+		observations->InterpolationIDW(&predictions[idx],x_interp[idx],y_interp[idx],radius,mindata,maxdata,power);
+	}
+	return NULL;
+}/*}}}*/
+void* v4t(void* vpthread_handle){/*{{{*/
+
+	/*gate variables :*/
+	KrigingxThreadStruct *gate        = NULL;
+	pthread_handle       *handle      = NULL;
+	int my_thread;
+	int num_threads;
+	int i0,i1;
+
+	/*recover handle and gate: */
+	handle      = (pthread_handle*)vpthread_handle;
+	gate        = (KrigingxThreadStruct*)handle->gate;
+	my_thread   = handle->id;
+	num_threads = handle->num;
+
+	/*recover parameters :*/
+	int           n_interp     = gate->n_interp;
+	double       *x_interp     = gate->x_interp;
+	double       *y_interp     = gate->y_interp;
+	double        radius       = gate->radius;
+	int           mindata      = gate->mindata;
+	int           maxdata      = gate->maxdata;
+	Variogram    *variogram    = gate->variogram;
+	Observations *observations = gate->observations;
+	double       *predictions  = gate->predictions;
+	double       *error        = gate->error;
+	int          *numdone      = gate->numdone;
+
+	/*partition loop across threads: */
+	PartitionRange(&i0,&i1,n_interp,num_threads,my_thread);
+	for(int idx=i0;idx<i1;idx++){
+
+		/*Print info*/
+		numdone[my_thread]=idx-i0;
+		if(my_thread==0){
+			int alldone=numdone[0];
+			for(int i=1;i<num_threads;i++) alldone+=numdone[i];
+			_printf_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(alldone)/double(n_interp)*100.<<"%   ");
+		}
+
+		observations->InterpolationV4(&predictions[idx],x_interp[idx],y_interp[idx],radius,mindata,maxdata);
+	}
+	return NULL;
+}/*}}}*/
+void* Distancest(void* vpthread_handle){/*{{{*/
+
+	/*gate variables :*/
+	KrigingxThreadStruct *gate        = NULL;
+	pthread_handle       *handle      = NULL;
+	int my_thread;
+	int num_threads;
+	int i0,i1;
+
+	/*recover handle and gate: */
+	handle      = (pthread_handle*)vpthread_handle;
+	gate        = (KrigingxThreadStruct*)handle->gate;
+	my_thread   = handle->id;
+	num_threads = handle->num;
+
+	/*recover parameters :*/
+	int           n_interp     = gate->n_interp;
+	double       *x_interp     = gate->x_interp;
+	double       *y_interp     = gate->y_interp;
+	double        radius       = gate->radius;
+	int           mindata      = gate->mindata;
+	int           maxdata      = gate->maxdata;
+	Variogram    *variogram    = gate->variogram;
+	Observations *observations = gate->observations;
+	double       *predictions  = gate->predictions;
+	double       *error        = gate->error;
+	int          *numdone      = gate->numdone;
+
+	/*partition loop across threads: */
+	PartitionRange(&i0,&i1,n_interp,num_threads,my_thread);
+	observations->Distances(&predictions[i0],&x_interp[i0],&y_interp[i0],i1-i0,radius);
+	return NULL;
+}/*}}}*/
+
+void ProcessVariogram(Variogram **pvariogram,Options* options){/*{{{*/
+
+	/*Intermediaries*/
+	Variogram* variogram = NULL;
+	char      *model     = NULL;
+
+	if(options->GetOption("model")){
+		options->Get(&model,"model");
+		if     (strcmp(model,"gaussian")==0)    variogram = new GaussianVariogram(options);
+		else if(strcmp(model,"exponential")==0) variogram = new ExponentialVariogram(options);
+		else if(strcmp(model,"spherical")==0)   variogram = new SphericalVariogram(options);
+		else if(strcmp(model,"power")==0)       variogram = new PowerVariogram(options);
+		else _error_("variogram " << model << " not supported yet (list of supported variogram: gaussian, exponential, spherical and power)");
+	}
+	else variogram = new GaussianVariogram(options);
+
+	/*Assign output pointer*/
+	xDelete<char>(model);
+	*pvariogram = variogram;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Krigingx/Krigingx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Krigingx/Krigingx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Krigingx/Krigingx.h	(revision 21239)
@@ -0,0 +1,40 @@
+/*!\file Kriging.h
+ * \brief: header file for Kriging
+ */
+
+#ifndef _KRIGINGX_H
+#define _KRIGINGX_H
+
+#include "../../classes/classes.h"
+#include "../../toolkits/toolkits.h"
+
+class Observations;
+class Variogram;
+
+int  Krigingx(double** ppredictions,double **perror,double* x, double* y, double* observations, int n_obs,double* x_interp,double* y_interp,int n_interp,Options* options);
+int  pKrigingx(double** ppredictions,double **perror,double* x, double* y, double* observations, int n_obs,double* x_interp,double* y_interp,int n_interp,Options* options);
+void ProcessVariogram(Variogram **pvariogram,Options* options);
+void ProcessVariogram2(Variogram **pvariogram,Options* options);
+
+/*threading: */
+typedef struct{
+	int           n_interp;
+	double       *x_interp;
+	double       *y_interp;
+	double        radius;
+	int           mindata;
+	int           maxdata;
+	Variogram    *variogram;
+	Observations *observations;
+	double       *predictions;
+	double       *error;
+	int          *numdone;
+	double        power;//for idw
+}KrigingxThreadStruct;
+
+void* Krigingxt(void*);
+void* NearestNeighbort(void*);
+void* idwt(void*);
+void* v4t(void*);
+void* Distancest(void*);
+#endif /* _KRIGINGX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Krigingx/pKrigingx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Krigingx/pKrigingx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Krigingx/pKrigingx.cpp	(revision 21239)
@@ -0,0 +1,177 @@
+/*!\file:  Kriging.cpp
+ * \brief  "c" core code for Kriging
+ */ 
+
+#include "./Krigingx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "../../shared/io/io.h"
+
+int pKrigingx(double** ppredictions,double **perror,double* obs_x, double* obs_y, double* obs_list, int obs_length,double* x_interp,double* y_interp,int n_interp,Options* options){/*{{{*/
+
+#ifdef _HAVE_MPI_
+	int num_procs;
+	int my_rank;
+
+	/*output*/
+	double *predictions = NULL;
+	double *error       = NULL;
+
+	/*Intermediaries*/
+	int           mindata,maxdata;
+	double        dmindata,dmaxdata;
+	double        radius;
+	char         *output       = NULL;
+	Variogram    *variogram    = NULL;
+	Observations *observations = NULL;
+
+	/*timing*/
+	double   start, finish;
+	double   start_core, finish_core;
+	double   start_init, finish_init;
+
+	/*Get my_rank: */
+	my_rank=IssmComm::GetRank();
+	num_procs=IssmComm::GetSize();
+
+	/*Get some Options*/
+	ISSM_MPI_Barrier(ISSM_MPI_COMM_WORLD); start=ISSM_MPI_Wtime();
+	options->Get(&radius,"searchradius",0.);
+
+	options->Get(&dmindata,"mindata",1.);  mindata=int(dmindata);//FIXME (Options come as double but we want to retrive integers)
+	options->Get(&dmaxdata,"maxdata",50.); maxdata=int(dmaxdata);//FIXME (Options come as double but we want to retrive integers)
+
+	/*Process observation dataset*/
+	ISSM_MPI_Barrier(ISSM_MPI_COMM_WORLD); start_init=ISSM_MPI_Wtime();
+	observations=new Observations(obs_list,obs_x,obs_y,obs_length,options);
+	ISSM_MPI_Barrier(ISSM_MPI_COMM_WORLD); finish_init=ISSM_MPI_Wtime();
+
+	/*Allocate output*/
+	predictions =xNewZeroInit<double>(n_interp);
+	error       =xNewZeroInit<double>(n_interp);
+
+	/*Get output*/
+	options->Get(&output,"output",(char*)"prediction");
+
+	ISSM_MPI_Barrier(ISSM_MPI_COMM_WORLD); start_core=ISSM_MPI_Wtime( );
+	if(strcmp(output,"quadtree")==0){
+		observations->QuadtreeColoring(predictions,x_interp,y_interp,n_interp);
+	}
+	else if(strcmp(output,"variomap")==0){
+		observations->Variomap(predictions,x_interp,n_interp);
+	}
+	else if(strcmp(output,"prediction")==0){
+
+		/*Process Variogram*/
+		ProcessVariogram2(&variogram,options);
+
+		/*partition loop across threads: */
+		for(int idx=my_rank;idx<n_interp;idx+=num_procs){
+			_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<double(idx)/double(n_interp)*100.<<"%  \n");
+			observations->InterpolationKriging(&predictions[idx],&error[idx],x_interp[idx],y_interp[idx],radius,mindata,maxdata,variogram);
+		}
+		_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<100.<<"%  \n");
+
+		double *sumpredictions =xNew<double>(n_interp);
+		double *sumerror       =xNew<double>(n_interp);
+		ISSM_MPI_Allreduce(predictions,sumpredictions,n_interp,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		ISSM_MPI_Allreduce(error,sumerror,n_interp,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		xDelete<double>(error); error=sumerror;
+		xDelete<double>(predictions); predictions=sumpredictions;
+	}
+	else if(strcmp(output,"v4")==0){
+
+		/*partition loop across threads: */
+		for(int idx=my_rank;idx<n_interp;idx+=num_procs){
+			_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<double(idx)/double(n_interp)*100.<<"%  \n");
+			observations->InterpolationV4(&predictions[idx],x_interp[idx],y_interp[idx],radius,mindata,maxdata);
+		}
+		_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<100.<<"%  \n");
+
+		double *sumpredictions =xNew<double>(n_interp);
+		ISSM_MPI_Allreduce(predictions,sumpredictions,n_interp,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		xDelete<double>(predictions); predictions=sumpredictions;
+	}
+	else if(strcmp(output,"nearestneighbor")==0){
+
+		/*partition loop across threads: */
+		for(int idx=my_rank;idx<n_interp;idx+=num_procs){
+			_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<double(idx)/double(n_interp)*100.<<"%  \n");
+			observations->InterpolationNearestNeighbor(&predictions[idx],x_interp[idx],y_interp[idx],radius);
+		}
+		_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<100.<<"%  \n");
+
+		double *sumpredictions =xNew<double>(n_interp);
+		ISSM_MPI_Allreduce(predictions,sumpredictions,n_interp,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		xDelete<double>(predictions); predictions=sumpredictions;
+	}
+	else if(strcmp(output,"distance")==0){
+
+		/*partition loop across threads: */
+		for(int idx=my_rank;idx<n_interp;idx+=num_procs){
+			_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<double(idx)/double(n_interp)*100.<<"%  \n");
+			observations->Distances(&predictions[idx],&x_interp[idx],&y_interp[idx],1,radius);
+		}
+		_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<100.<<"%  \n");
+
+		double *sumpredictions =xNew<double>(n_interp);
+		ISSM_MPI_Allreduce(predictions,sumpredictions,n_interp,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		xDelete<double>(predictions); predictions=sumpredictions;
+	}
+	else if(strcmp(output,"idw")==0){
+		double power;
+		options->Get(&power,"power",2.);
+
+		/*partition loop across threads: */
+		for(int idx=my_rank;idx<n_interp;idx+=num_procs){
+			_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<double(idx)/double(n_interp)*100.<<"%  \n");
+			observations->InterpolationIDW(&predictions[idx],x_interp[idx],y_interp[idx],radius,mindata,maxdata,power);
+		}
+		_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<100.<<"%  \n");
+
+		double *sumpredictions =xNew<double>(n_interp);
+		ISSM_MPI_Allreduce(predictions,sumpredictions,n_interp,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		xDelete<double>(predictions); predictions=sumpredictions;
+	}
+	else{
+		_error_("output '" << output << "' not supported yet");
+	}
+	ISSM_MPI_Barrier(ISSM_MPI_COMM_WORLD); finish_core=ISSM_MPI_Wtime( );
+
+	/*clean-up and Assign output pointer*/
+	delete variogram;
+	delete observations;
+	xDelete<char>(output);
+	*ppredictions = predictions;
+	*perror       = error;
+
+	ISSM_MPI_Barrier(ISSM_MPI_COMM_WORLD); finish=ISSM_MPI_Wtime( );
+	_printf0_("\n   " << setw(34) << left << "Observation fitering elapsed time: " << finish_init-start_init << " seconds  \n\n");
+	_printf0_("   " << setw(34) << left << "Kriging prediction elapsed time: " << finish_core-start_core << " seconds  \n\n");
+	_printf0_("\n   " << "Total elapsed time " << int((finish-start)/3600) << " hrs " << int(int(finish-start)%3600/60) << " min " << int(finish-start)%60 << " sec\n\n\n");
+	return 1;
+#else
+	_error_("MPI not available");
+#endif
+}/*}}}*/
+void ProcessVariogram2(Variogram **pvariogram,Options* options){/*{{{*/
+
+	/*Intermediaries*/
+	Variogram* variogram = NULL;
+	char      *model     = NULL;
+
+	if(options->GetOption("model")){
+		options->Get(&model,"model");
+		if     (strcmp(model,"gaussian")==0)    variogram = new GaussianVariogram(options);
+		else if(strcmp(model,"exponential")==0) variogram = new ExponentialVariogram(options);
+		else if(strcmp(model,"spherical")==0)   variogram = new SphericalVariogram(options);
+		else if(strcmp(model,"power")==0)       variogram = new PowerVariogram(options);
+		else _error_("variogram " << model << " not supported yet (list of supported variogram: gaussian, exponential, spherical and power)");
+	}
+	else variogram = new GaussianVariogram(options);
+
+	/*Assign output pointer*/
+	xDelete<char>(model);
+	*pvariogram = variogram;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp	(revision 21239)
@@ -0,0 +1,50 @@
+/*!\file Mergesolutionfromftogx
+ * \brief merge solution back from f set into g set
+ */
+
+#include "../VecMergex/VecMergex.h"
+#include "../../shared/io/io.h"
+#include "./Mergesolutionfromftogx.h"
+
+void	Mergesolutionfromftogx( Vector<IssmDouble>** pug, Vector<IssmDouble>* uf, Vector<IssmDouble>* ys, Nodes* nodes, Parameters* parameters, bool flag_ys0){
+
+	/*output: */
+	Vector<IssmDouble>* ug=NULL;
+
+	/*intermediary: */
+	int configuration_type;
+	int gsize,fsize,ssize;
+
+	/*Display message*/
+	if(VerboseModule()) _printf0_("   Merging solution vector from fset to gset\n");
+
+	/*first, get gsize, fsize and ssize: */
+	parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	gsize=nodes->NumberOfDofs(configuration_type,GsetEnum);
+	fsize=nodes->NumberOfDofs(configuration_type,FsetEnum);
+	ssize=nodes->NumberOfDofs(configuration_type,SsetEnum);
+
+	/*serialize uf and ys: those two vectors will be indexed by the nodes, who are the only ones 
+	 *that know which values should be plugged into ug and where: */
+	if(ssize){
+		if(flag_ys0){
+			ys->Set(0.0);
+		}
+	}
+
+	/*initialize ug: */
+	ug=new Vector<IssmDouble>(gsize);
+
+	/*Merge f set back into g set: */
+	if(fsize){
+		VecMergex(ug,uf,nodes,parameters,FsetEnum);
+	}
+
+	/*Merge s set back into g set: */
+	if(ssize){
+		VecMergex(ug,ys,nodes,parameters,SsetEnum);
+	}
+
+	/*Assign correct pointer*/
+	*pug=ug;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  Mergesolutionfromftogx.h
+ * \brief merge solution back from f set into g set
+ */ 
+
+#ifndef _MERGESOLUTIONFROMFTOGX_H
+#define _MERGESOLUTIONFROMFTOGX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void	Mergesolutionfromftogx( Vector<IssmDouble>** pug, Vector<IssmDouble>* uf, Vector<IssmDouble>* ys, Nodes* nodes, Parameters* parameters, bool flag_ys0=false);
+
+#endif  /* _MERGESOLUTIONFROMFTOGX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/MeshPartitionx/MeshPartitionx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/MeshPartitionx/MeshPartitionx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/MeshPartitionx/MeshPartitionx.h	(revision 21239)
@@ -0,0 +1,126 @@
+/*!\file:  MeshPartitionx.h
+ * \brief  header file for partitioning module.
+ */ 
+
+#ifndef _MESHPARTITIONX_H
+#define _MESHPARTITIONX_H
+
+#include "../../shared/shared.h"
+
+/* local prototypes: */
+template <class doubletype> 
+int MeshPartitionx(int** pepart, int** pnpart, int numberofelements,int numberofnodes,int* elements,
+		int numberofelements2d,int numberofnodes2d,doubletype* elements2d,int numlayers,int elements_width, int meshelementtype,int num_procs){
+
+	int noerr=1;
+	int i,j;
+
+	/*Metis partitioning: */
+	int* epart=NULL;
+	int* npart=NULL;
+	int* index=NULL;
+
+	int* epart2d=NULL;
+	int* npart2d=NULL;
+	int* index2d=NULL;
+	int  count=0;
+
+	int  etype=1; //tria mesh see metis/Programs/Io.c
+	int  etype2d=1; //tria mesh see metis/Programs/Io.c
+	int  numflag=0;
+	int  edgecut=1;
+
+	switch(meshelementtype){
+		case TriaEnum:
+		case TetraEnum:
+			epart=xNew<int>(numberofelements);
+			npart=xNew<int>(numberofnodes);
+			index=xNew<int>(elements_width*numberofelements);
+			for (i=0;i<numberofelements;i++){
+				for (j=0;j<elements_width;j++){
+					*(index+elements_width*i+j)=(*(elements+elements_width*i+j))-1; //-1 for C indexing in Metis
+				}
+			}
+
+			/*Partition using Metis:*/
+			if (num_procs>1){
+#ifdef _HAVE_METIS_
+				METIS_PartMeshNodalPatch(&numberofelements,&numberofnodes, index, &etype, &numflag, &num_procs, &edgecut, epart, npart);
+#else
+				_error_("metis has not beed installed. Cannot run with more than 1 cpu");
+#endif
+			}
+			else if (num_procs==1){
+				/*METIS does not know how to deal with one cpu only!*/
+				for (i=0;i<numberofelements;i++) epart[i]=0;
+				for (i=0;i<numberofnodes;i++)    npart[i]=0;
+			}
+			else _error_("At least one processor is required");
+			break;
+		case PentaEnum:
+			/*We have a 3d mesh, made of a regularly extruded 2d mesh. We first partition the 2d mesh, then we extrude the partition: */
+
+			/*First build concatenated 2d mesh  from 2d_coll and 2d_noncoll: */
+			epart2d=xNew<int>(numberofelements2d);
+			npart2d=xNew<int>(numberofnodes2d); 
+			index2d=xNew<int>(3*numberofelements2d);
+
+			for (i=0;i<numberofelements2d;i++){
+				for (j=0;j<3;j++){
+					*(index2d+3*i+j)=reCast<int>(*(elements2d+3*i+j))-1; //-1 for C indexing in Metis
+				}
+			}
+
+			/*Partition using Metis:*/
+			if (num_procs>1){
+#ifdef _HAVE_METIS_
+				METIS_PartMeshNodalPatch(&numberofelements2d,&numberofnodes2d, index2d, &etype2d, &numflag, &num_procs, &edgecut, epart2d, npart2d);
+#else
+				_error_("metis has not beed installed. Cannot run with more than 1 cpu");
+#endif
+			}
+			else if (num_procs==1){
+				/*METIS does not know how to deal with one cpu only!*/
+				for (i=0;i<numberofelements2d;i++) epart2d[i]=0;
+				for (i=0;i<numberofnodes2d;i++)    npart2d[i]=0;
+			}
+			else _error_("At least one processor is required");
+
+			/*Extrude epart2d to epart, using numlayers: */
+			epart=xNew<int>(numberofelements);
+
+			count=0;
+			for(i=0;i<(numlayers-1);i++){
+				for(j=0;j<numberofelements2d;j++){
+					epart[count]=epart2d[j];
+					count++;
+				}
+			}
+
+			/*Extrude npart2d to npart, using numlayers: */
+			npart=xNew<int>(numberofnodes);
+
+			count=0;
+			for(i=0;i<(numlayers);i++){
+				for(j=0;j<numberofnodes2d;j++){
+					npart[count]=npart2d[j];
+					count++;
+				}
+			}
+			break;
+		default:
+			_error_("mesh type "<<EnumToStringx(meshelementtype)<<" not supported yet");
+	}
+
+	/*Assign output pointer:*/
+	*pepart=epart;
+	*pnpart=npart;
+
+	/*Free ressources: */
+	xDelete<int>(index);
+	xDelete<int>(epart2d);
+	xDelete<int>(npart2d);
+	xDelete<int>(index2d);
+	return noerr;
+}
+#endif /* _MESHPARTITIONX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp	(revision 21239)
@@ -0,0 +1,418 @@
+/*! \file  MeshProfileIntersectionx.c
+ */
+
+#include "./MeshProfileIntersectionx.h"
+
+void MeshProfileIntersectionx(double** psegments, int* pnumsegs, int* index, double* x, double* y, int nel, int nods,  Contour<IssmPDouble>** contours,int numcontours){/*{{{*/
+
+	int i,j,k;
+
+	/*Contour:*/
+	Contour<IssmPDouble>* contouri=NULL;
+	int      numnodes;
+	double*  xc=NULL;
+	double*  yc=NULL;
+
+	/*output: */
+	double* segments=NULL;
+	int     numsegs;
+
+	/*intermediary: */
+	double** allsegments=NULL;
+	double*  segmentsi=NULL;
+	int*     allnumsegs=NULL;
+	int      numsegsi;
+	int      count;
+
+	/*Allocate: */
+	allsegments=xNew<double*>(numcontours);
+	allnumsegs=xNew<int>(numcontours);
+
+	/*Loop through all contours: */
+	for (i=0;i<numcontours;i++){
+
+		/*retrieve contour info: */
+		contouri=*(contours+i);
+		numnodes=contouri->nods;
+		xc=contouri->x;
+		yc=contouri->y;
+
+		/*determine segmentsi and numsegsi for this contour and the mesh intersection: */
+		MeshSegmentsIntersection(&segmentsi,&numsegsi,index,x,y,nel,nods,xc,yc,numnodes);
+
+		/*save segmentsi: */
+		allsegments[i]=segmentsi;
+		allnumsegs[i]=numsegsi;
+	}
+
+	/*total number of segments? */
+	numsegs=0;
+	for(i=0;i<numcontours;i++)numsegs+=allnumsegs[i];
+
+	/*Out of all segments, create one common array of segments: */
+	segments=xNew<double>(5*numsegs);
+	count=0;
+	for(i=0;i<numcontours;i++){
+
+		segmentsi=allsegments[i];
+		numsegsi=allnumsegs[i];
+
+		for(j=0;j<numsegsi;j++){
+			for(k=0;k<5;k++){
+				*(segments+count*5+k)=*(segmentsi+j*5+k);
+			}
+			count++;
+		}
+	}
+
+	/*Assign output pointers:*/
+	*psegments=segments;
+	*pnumsegs=numsegs;
+}/*}}}*/
+void MeshSegmentsIntersection(double** psegments, int* pnumsegs,int* index, double* x, double* y, int nel, int nods, double* xc, double* yc, int numnodes){/*{{{*/
+
+	int      i,j;
+
+	/*output: */
+	double* segments=NULL;
+	int     numsegs;
+
+	/*intermediary: */
+	DataSet* segments_dataset=NULL;
+	double   xnodes[3];
+	double   ynodes[3];
+
+	/*We don't know how many segments  we are going to get, so have a dynamic container: */
+	segments_dataset=new DataSet();
+
+	/*Go through elements, and call ElementSegmentsIntersection routine: */
+	for(i=0;i<nel;i++){
+		for(j=0;j<3;j++){
+			xnodes[j]=x[*(index+3*i+j)];
+			ynodes[j]=y[*(index+3*i+j)];
+		}
+		ElementSegmentsIntersection(segments_dataset,i,xnodes,ynodes,xc,yc,numnodes);
+	}
+
+	/*Using the segments_dataset dataset, create segments: */
+	numsegs=segments_dataset->Size();
+	segments=xNew<double>(5*numsegs);
+	for(i=0;i<numsegs;i++){
+		Segment<double>* segment=(Segment<double>*)segments_dataset->GetObjectByOffset(i);
+
+		/*x1,y1,x2,y2 then element_id: */
+		segments[5*i+0]=segment->x1;
+		segments[5*i+1]=segment->y1;
+		segments[5*i+2]=segment->x2;
+		segments[5*i+3]=segment->y2;
+		segments[5*i+4]=(double)segment->eid;
+	}
+
+	/*Free ressources:*/
+	delete segments_dataset;
+
+	/*Assign output pointers:*/
+	*psegments=segments;
+	*pnumsegs=numsegs;
+}/*}}}*/
+
+/*Utilities*/
+void ElementSegmentsIntersection(DataSet* segments_dataset,int el, double* xnodes,double* ynodes,double* xc,double* yc,int numnodes){/*{{{*/
+
+	double xsegment[2];
+	double ysegment[2];
+
+	/*Loop through contour: */
+	for(int i=0;i<numnodes-1;i++){
+		xsegment[0]=xc[i];
+		xsegment[1]=xc[i+1];
+		ysegment[0]=yc[i];
+		ysegment[1]=yc[i+1];
+		/*if (el==318 && i==9){
+			_printf_("contour: " << i << " " << xsegment[0] << " " << ysegment[0] << " " << xsegment[1] << " " << ysegment[1] 
+				<< " " << xnodes[0] << " " << xnodes[1] << " " << xnodes[2] << " " << ynodes[0] << " " << ynodes[1] << " " << 
+				ynodes[2] << "\n");
+		}*/
+		ElementSegment(segments_dataset,el, i, xnodes,ynodes,xsegment,ysegment);
+	}
+}/*}}}*/
+void ElementSegment(DataSet* segments_dataset,int el, int contouri, double* xnodes,double* ynodes,double* xsegment,double* ysegment){/*{{{*/
+
+	/*We have a tria element (xnodes,ynodes) and a segment (xsegment,ysegment). Find whether they intersect. 
+	 * If they do, create a Segment object with the intersection, and add to segments_dataset dataset: */
+
+	double alpha1,alpha2;
+	double beta1,beta2;
+	double gamma1,gamma2;
+
+	int    edge1,edge2,edge3;
+
+	double xel[2],yel[2];
+	double coord1,coord2;
+	double xfinal[2],yfinal[2];
+
+	/*edge 1: */
+	xel[0]=xnodes[0];  yel[0]=ynodes[0]; xel[1]=xnodes[1];  yel[1]=ynodes[1];
+	edge1=SegmentIntersect(&alpha1,&alpha2, xel,yel,xsegment,ysegment); //alpha1: segment coordinate of intersection. alpha2: same thing for second interesection if it exists (colinear edges)
+
+	/*edge 2: */
+	xel[0]=xnodes[1];  yel[0]=ynodes[1]; xel[1]=xnodes[2];  yel[1]=ynodes[2];
+	edge2=SegmentIntersect(&beta1,&beta2, xel,yel,xsegment,ysegment);
+
+	/*edge 3: */
+	xel[0]=xnodes[2];  yel[0]=ynodes[2]; xel[1]=xnodes[0];  yel[1]=ynodes[0];
+	edge3=SegmentIntersect(&gamma1,&gamma2, xel,yel,xsegment,ysegment);
+
+	/*edge can be either IntersectEnum (one and only one intersection between the edge and the segment), ColinearEnum (edge and segment are collinear) and SeparateEnum (no intersection): */
+		
+	/*if (el==318 && contouri==9){
+		_printf_(edge1 << " " << edge2 << " " << edge3 << " "  << alpha1 << " " << alpha2 << " " << beta1 << " " << beta2 << " " << gamma1 << " " << gamma2 << " " << xsegment[0] << " "  << xsegment[1] << " " << ysegment[0] << " " << ysegment[1] << " " << xnodes[0] << " " << xnodes[1] << " " << xnodes[2] << " " << ynodes[0] << " " << ynodes[1] << " " << ynodes[2]);
+	
+	_printf_("Bool" << (edge1==IntersectEnum) || (edge2==IntersectEnum) || (edge3==IntersectEnum));
+	}*/
+
+	if(    (edge1==IntersectEnum) && (edge2==IntersectEnum) && (edge3==IntersectEnum)   ){
+
+		/*This can only be the case if the segment intersected through one vertex, meaning a pair from alpha1, beta1 or gamma1  is 0:*/
+		if (alpha1!=0 && alpha1!=1){
+			/*The vertex opposite edge 1 was intersected:*/
+			xfinal[0]=xsegment[0]+alpha1*(xsegment[1]-xsegment[0]);
+			yfinal[0]=ysegment[0]+alpha1*(ysegment[1]-ysegment[0]);
+			xfinal[1]=xnodes[2];
+			yfinal[1]=ynodes[2];
+		}
+		else if (beta1!=0 && beta1!=1){
+			/*The vertex opposite edge 2 was intersected:*/
+			xfinal[0]=xsegment[0]+beta1*(xsegment[1]-xsegment[0]);
+			yfinal[0]=ysegment[0]+beta1*(ysegment[1]-ysegment[0]);
+			xfinal[1]=xnodes[0];
+			yfinal[1]=ynodes[0];
+		}
+		else if (gamma1!=0 && gamma1!=1){
+			/*The vertex opposite edge 3 was intersected:*/
+			xfinal[0]=xsegment[0]+gamma1*(xsegment[1]-xsegment[0]);
+			yfinal[0]=ysegment[0]+gamma1*(ysegment[1]-ysegment[0]);
+			xfinal[1]=xnodes[1];
+			yfinal[1]=ynodes[1];
+		}
+		segments_dataset->AddObject(new  Segment<double>(el+1,xfinal[0],yfinal[0],xfinal[1],yfinal[1]));
+
+		
+		/*This case is impossible: not quite! */
+		//_printf_(alpha1 << " " << alpha2 << " " << beta1 << " " << beta2 << " " << gamma1 << " " << gamma2 << " " << xsegment[0] << " "  << xsegment[1] << " " << ysegment[0] << " " << ysegment[1] << " " << xnodes[0] << " " << xnodes[1] << " " << xnodes[2] << " " << ynodes[0] << " " << ynodes[1] << " " << ynodes[2]);
+		/* _error_("error: a line cannot go through 3 different vertices!");*/
+	}
+	else if(    ((edge1==IntersectEnum) && (edge2==IntersectEnum)) || ((edge2==IntersectEnum) && (edge3==IntersectEnum)) || ((edge3==IntersectEnum) && (edge1==IntersectEnum))   ){
+
+		/*segment interscts 2 opposite edges of our triangle, at 2 segment coordinates, pick up the lowest (coord1) and highest (coord2): */
+		if((edge1==IntersectEnum) && (edge2==IntersectEnum)) {coord1=min(alpha1,beta1); coord2=max(alpha1,beta1);}
+		if((edge2==IntersectEnum) && (edge3==IntersectEnum)) {coord1=min(beta1,gamma1); coord2=max(beta1,gamma1);}
+		if((edge3==IntersectEnum) && (edge1==IntersectEnum)) {coord1=min(gamma1,alpha1); coord2=max(gamma1,alpha1);}
+
+		/*check this segment did not intersect at a vertex of the tria: */
+		if(coord1!=coord2){
+
+			xfinal[0]=xsegment[0]+coord1*(xsegment[1]-xsegment[0]);
+			xfinal[1]=xsegment[0]+coord2*(xsegment[1]-xsegment[0]);
+			yfinal[0]=ysegment[0]+coord1*(ysegment[1]-ysegment[0]);
+			yfinal[1]=ysegment[0]+coord2*(ysegment[1]-ysegment[0]);
+
+			segments_dataset->AddObject(new  Segment<double>(el+1,xfinal[0],yfinal[0],xfinal[1],yfinal[1]));
+		}
+		else{
+			/*the segment intersected at the vertex, do not bother with this "0" length segment!:*/
+		}
+	}
+	else if(  (edge1==IntersectEnum) || (edge2==IntersectEnum) || (edge3==IntersectEnum)   ){
+	
+		/*if (el==318 && contouri==9){
+			_printf_("hello" <<  " NodeInElement 0 " << (NodeInElement(xnodes,ynodes,xsegment[0],ysegment[0])) <<  " NodeInElement 1 " << (NodeInElement(xnodes,ynodes,xsegment[1],ysegment[1])));
+		}*/
+
+		/*segment intersect only 1 edge. Figure out where the first point in the segment is, inside or outside the element, 
+		 * this will decide the coordinate: */
+		if (NodeInElement(xnodes,ynodes,xsegment[0],ysegment[0])){
+			coord1=0;
+			if(edge1==IntersectEnum){coord2=alpha1;}
+			if(edge2==IntersectEnum){coord2=beta1;}
+			if(edge3==IntersectEnum){coord2=gamma1;}
+		}
+		else if (NodeInElement(xnodes,ynodes,xsegment[1],ysegment[1])){
+			if(edge1==IntersectEnum){coord1=alpha1;}
+			if(edge2==IntersectEnum){coord1=beta1;}
+			if(edge3==IntersectEnum){coord1=gamma1;}
+			coord2=1.0;
+		}
+		else{
+			double tolerance=1e-10;
+			/*Ok, we have an issue here. Probably one of the segments' end is on a vertex, within a certain tolerance!*/
+			if (IsIdenticalNode(xnodes[0],ynodes[0],xsegment[0],ysegment[0],tolerance) ||
+				IsIdenticalNode(xnodes[1],ynodes[1],xsegment[0],ysegment[0],tolerance) ||
+				IsIdenticalNode(xnodes[2],ynodes[2],xsegment[0],ysegment[0],tolerance)){
+				
+				/*ok, segments[0] is common to one of our vertices: */
+				coord1=0;
+				if(edge1==IntersectEnum){coord2=alpha1;}
+				if(edge2==IntersectEnum){coord2=beta1;}
+				if(edge3==IntersectEnum){coord2=gamma1;}
+			}
+			else if (IsIdenticalNode(xnodes[0],ynodes[0],xsegment[1],ysegment[1],tolerance) ||
+				     IsIdenticalNode(xnodes[1],ynodes[1],xsegment[1],ysegment[1],tolerance) ||
+				     IsIdenticalNode(xnodes[2],ynodes[2],xsegment[1],ysegment[1],tolerance)){
+
+				/*ok, segments[1] is common to one of our vertices: */
+				//if (el==318 && contouri==9){ _printf_("ok2" << "\n"); }
+				if(edge1==IntersectEnum){coord1=alpha1;}
+				if(edge2==IntersectEnum){coord1=beta1;}
+				if(edge3==IntersectEnum){coord1=gamma1;}
+				coord2=1.0;
+			}
+		}
+
+		xfinal[0]=xsegment[0]+coord1*(xsegment[1]-xsegment[0]);
+		xfinal[1]=xsegment[0]+coord2*(xsegment[1]-xsegment[0]);
+		yfinal[0]=ysegment[0]+coord1*(ysegment[1]-ysegment[0]);
+		yfinal[1]=ysegment[0]+coord2*(ysegment[1]-ysegment[0]);
+
+		segments_dataset->AddObject(new  Segment<double>(el+1,xfinal[0],yfinal[0],xfinal[1],yfinal[1]));
+	}
+	else{
+		/*No interesections, but the segment might be entirely inside this triangle!: */
+		if ( (NodeInElement(xnodes,ynodes,xsegment[0],ysegment[0])) && (NodeInElement(xnodes,ynodes,xsegment[1],ysegment[1])) ){
+			segments_dataset->AddObject(new  Segment<double>(el+1,xsegment[0],ysegment[0],xsegment[1],ysegment[1]));
+		}
+	}
+}/*}}}*/
+bool NodeInElement(double* xnodes, double* ynodes, double x, double y){/*{{{*/
+
+	double x1,y1;
+	double x2,y2;
+	double x3,y3;
+	double lambda1,lambda2,lambda3;
+	double det;
+
+	x1=xnodes[0];
+	x2=xnodes[1];
+	x3=xnodes[2];
+	y1=ynodes[0];
+	y2=ynodes[1];
+	y3=ynodes[2];
+
+	/*compute determinant: */
+	det=x1*y2-x1*y3-x3*y2-x2*y1+x2*y3+x3*y1;
+
+	/*area coordinates: */
+	lambda1=((y2-y3)*(x-x3)+(x3-x2)*(y-y3))/det;
+	lambda2=((y3-y1)*(x-x3)+(x1-x3)*(y-y3))/det;
+	lambda3=1-lambda1-lambda2;
+
+	if( ((lambda1<=1) && (lambda1>=0)) && ((lambda2<=1) && (lambda2>=0)) && ((lambda3<=1) && (lambda3>=0))  )return true;
+	else return false;
+
+}/*}}}*/
+int SegmentIntersect(double* palpha, double* pbeta, double* x1, double* y1, double* x2, double* y2){/*{{{*/
+
+	/*See ISSM_DIR/src/m/utils/Geometry/SegIntersect.m for matlab routine from which we take this routine: */
+
+	/*output: */
+	double alpha=-1;
+	double beta=-1;
+
+	double xA,xB,xC,xD,yA,yB,yC,yD;
+	double O2A[2],O2B[2],O1C[2],O1D[2];
+	double n1[2],n2[2];
+	double test1, test2, test3, test4;
+	double det;
+	double O2O1[2];
+	double pO1A,pO1B,pO1C,pO1D;
+
+	xA=x1[0]; yA=y1[0];
+	xB=x1[1]; yB=y1[1];
+	xC=x2[0]; yC=y2[0];
+	xD=x2[1]; yD=y2[1];
+
+	O2A[0]=xA -(xD/2+xC/2); O2A[1]=yA -(yD/2+yC/2);
+	O2B[0]=xB -(xD/2+xC/2); O2B[1]=yB -(yD/2+yC/2);
+	O1C[0]=xC -(xA/2+xB/2); O1C[1]=yC -(yA/2+yB/2);
+	O1D[0]=xD -(xA/2+xB/2); O1D[1]=yD -(yA/2+yB/2);
+
+	n1[0]=yA-yB; n1[1]=xB-xA;  //normal vector to segA
+	n2[0]=yC-yD; n2[1]=xD-xC;  //normal vector to segB
+
+	test1=n2[0]*O2A[0]+n2[1]*O2A[1];
+	test2=n2[0]*O2B[0]+n2[1]*O2B[1];
+
+	if (test1*test2>0){
+		return SeparateEnum;
+	}
+
+	test3=n1[0]*O1C[0]+n1[1]*O1C[1];
+	test4=n1[0]*O1D[0]+n1[1]*O1D[1];
+
+	if (test3*test4>0){
+		return SeparateEnum;
+	}
+
+	/*If colinear: */
+	det=n1[0]*n2[1]-n2[0]*n1[1];
+
+	if(test1*test2==0 && test3*test4==0 && det==0){
+
+		//projection on the axis O1O2
+		O2O1[0]=(xA/2+xB/2)-(xD/2+xC/2);
+		O2O1[1]=(yA/2+yB/2)-(yD/2+yC/2);
+
+		pO1A=O2O1[0]*(O2A[0]-O2O1[0])+O2O1[1]*(O2A[1]-O2O1[1]);
+		pO1B=O2O1[0]*(O2B[0]-O2O1[0])+O2O1[1]*(O2B[1]-O2O1[1]);
+		pO1C=O2O1[0]*O1C[0]+O2O1[1]*O1C[1];
+		pO1D=O2O1[0]*O1D[0]+O2O1[1]*O1D[1];
+
+		//test if one point is included in the other segment (->intersects=true)
+		if ((pO1C-pO1A)*(pO1D-pO1A)<0){
+			alpha=0; beta=0;
+			*palpha=alpha;*pbeta=beta;
+			return ColinearEnum;
+		}
+		if ((pO1C-pO1B)*(pO1D-pO1B)<0){
+			alpha=0; beta=0;
+			*palpha=alpha;*pbeta=beta;
+			return ColinearEnum;
+		}
+		if ((pO1A-pO1C)*(pO1B-pO1C)<0){
+			alpha=0; beta=0;
+			*palpha=alpha;*pbeta=beta;
+			return ColinearEnum;
+		}
+		if ((pO1A-pO1D)*(pO1B-pO1D)<0){
+			alpha=0; beta=0;
+			*palpha=alpha;*pbeta=beta;
+			return ColinearEnum;
+		}
+
+		//test if the 2 segments have the same middle (->intersects=true)
+		if(O2O1[0]==0 && O2O1[1]){
+			alpha=0; beta=0;
+			*palpha=alpha;*pbeta=beta;
+			return ColinearEnum;
+		}
+
+		//if we are here, both segments are colinear, but do not interset:
+		alpha=-1; beta=-1;
+		*palpha=alpha;*pbeta=beta;
+		return SeparateEnum;
+	}
+
+	/*if we are here, both segments intersect. Determine where in the segment coordinate 
+	 * system: */
+	beta=-1;
+	alpha=-(xA*yB-xC*yB+yC*xB-yC*xA+xC*yA-yA*xB)/(-xD*yB+xD*yA+xC*yB-xC*yA-yD*xA+yD*xB+yC*xA-yC*xB); //from intersect.m in formal calculus
+
+	*palpha=alpha;*pbeta=beta;
+	return IntersectEnum;
+}/*}}}*/
+bool IsIdenticalNode(double x1, double y1, double x2, double y2, double tolerance){ /*{{{*/
+
+	if (sqrt(pow(x1-x2,2.0) + pow(y1-y2,2))<tolerance)return true;
+	else return false;
+
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.h	(revision 21239)
@@ -0,0 +1,20 @@
+/*
+	MeshProfileIntersectionx.h
+*/
+
+#ifndef _MESHPROFILEINTERSECTIONX_H
+#define _MESHPROFILEINTERSECTIONX_H
+
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void MeshProfileIntersectionx(double** psegments, int* pnumseg, int* index, double* x, double* y, int nel, int nods,  Contour<IssmPDouble>** contours,int numcontours);
+void MeshSegmentsIntersection(double** psegments, int* pnumsegs,int* index, double* x, double* y, int nel, int nods, double* xc, double* yc, int numnodes);
+void ElementSegmentsIntersection(DataSet* segments_dataset,int el, double* xnodes,double* ynodes,double* xc,double* yc,int numnodes);
+void ElementSegment(DataSet* segments_dataset,int el,int contouri, double* xnodes,double* ynodes,double* xsegment,double* ysegment);
+int  SegmentIntersect(double* palpha, double* pbeta, double* x1, double* y1, double* x2, double* y2);
+bool NodeInElement(double* xnodes, double* ynodes, double x, double y);
+bool IsIdenticalNode(double x1, double y1, double x2, double y2, double tolerance);
+
+#endif /* _MESHPROFILEINTERSECTIONX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp	(revision 21239)
@@ -0,0 +1,147 @@
+/*!\file: CreateParametersAutodiff.cpp
+ * \brief driver for creating parameters dataset, for autodiff analysis.
+ */ 
+
+#include "../../../toolkits/toolkits.h"
+#include "../../../classes/classes.h"
+#include "../../../shared/shared.h"
+#include "../ModelProcessorx.h"
+
+void CreateParametersAutodiff(Parameters* parameters,IoModel* iomodel){
+
+	int         i;
+	bool        isautodiff;
+	int         num_dependent_objects;
+	int         num_dep=0;
+	char**      names=NULL;
+	int*        types=NULL;
+	int         dummy;
+	char*       autodiff_driver=NULL;
+	int*        indices=NULL;
+	int         num_indices;
+	char* options=NULL;
+
+	IssmDouble* xp=NULL;
+	IssmDouble* xp_backup=NULL;
+	int         num_ind,local_num_ind;
+	DataSet*    dependent_objects=NULL;
+
+	/*retrieve some parameters: */
+	iomodel->FindConstant(&isautodiff,"md.autodiff.isautodiff");
+
+	#ifdef _HAVE_ADOLC_
+		/*initialize a placeholder to store solver pointers: {{{*/
+		GenericParam<Adolc_edf> *theAdolcEDF_p=new GenericParam<Adolc_edf>(AdolcParamEnum);
+
+		/*Solver pointers depend on what type of solver we are implementing: */
+		options=OptionsFromAnalysis(parameters,DefaultAnalysisEnum); //options database is not filled in yet, use default.
+		ToolkitOptions::Init(options);
+
+		switch(IssmSolverTypeFromToolkitOptions()){
+			case MumpsEnum:{
+				#ifdef _HAVE_MUMPS_
+				theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p=reg_ext_fct(mumpsSolveEDF);
+				#else
+				_error_("requesting mumps solver without MUMPS being compiled in!");
+				#endif
+				break;
+							}
+			case GslEnum: {
+				#ifdef _HAVE_GSL_
+				theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p=reg_ext_fct(EDF_for_solverx);
+				#else
+				_error_("requesting GSL solver without GSL being compiled in!");
+				#endif
+			    break;
+						  }
+			default:
+				_error_("solver type not supported yet!");
+		}
+
+		// to save some space:
+		// we know we won't use adolc inside of  the solver:
+		theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p->nestedAdolc=false;
+		// the solution vector is just allocated and doesn't have a meaningful prior value
+		theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p->dp_y_priorRequired=false;
+		// the solver wrapper makes sure the matrix and the right hand side don't change
+		theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p->dp_x_changes=false;
+		parameters->AddObject(theAdolcEDF_p);
+
+		/*Free ressources: */
+		xDelete<char>(options);
+		/*}}}*/
+
+	if(isautodiff){
+		/*Copy some parameters from IoModel to parameters dataset: {{{*/
+		parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.keep",AutodiffKeepEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.obufsize",AutodiffObufsizeEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.cbufsize",AutodiffCbufsizeEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.lbufsize",AutodiffLbufsizeEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.tbufsize",AutodiffTbufsizeEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.gcTriggerRatio",AutodiffGcTriggerRatioEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.gcTriggerMaxSize",AutodiffGcTriggerMaxSizeEnum));
+		/*}}}*/
+		/*retrieve driver: {{{*/
+		iomodel->FindConstant(&autodiff_driver,"md.autodiff.driver");
+		parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.driver",AutodiffDriverEnum));
+
+		if(strcmp(autodiff_driver,"fos_forward")==0){
+			parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.fos_forward_index",AutodiffFosForwardIndexEnum));
+		}
+		else if(strcmp(autodiff_driver,"fos_reverse")==0){
+			parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.fos_reverse_index",AutodiffFosReverseIndexEnum));
+		}
+		else if(strcmp(autodiff_driver,"fov_forward")==0){
+			/*Retrieve list of indices: */
+			iomodel->FetchData(&indices,&num_indices,&dummy,"md.autodiff.fov_forward_indices");
+			parameters->AddObject(new IntMatParam(AutodiffFovForwardIndicesEnum,indices,num_indices,1));
+			xDelete<int>(indices);
+		}
+		xDelete<char>(autodiff_driver);
+		/*}}}*/
+		/*Deal with dependents first: {{{*/
+		iomodel->FindConstant(&num_dependent_objects,"md.autodiff.num_dependent_objects");
+		dependent_objects=new DataSet();
+		num_dep=0;
+
+		if(num_dependent_objects){
+			iomodel->FindConstant(&names,&dummy,"md.autodiff.dependent_object_names");
+			iomodel->FetchData(&types,&dummy,&dummy,"md.autodiff.dependent_object_types");
+			iomodel->FetchData(&indices,&dummy,&dummy,"md.autodiff.dependent_object_indices");
+
+			for(i=0;i<num_dependent_objects;i++){
+				DependentObject* dep=new DependentObject(names[i],types[i],indices[i]);
+				dependent_objects->AddObject(dep);
+				num_dep+=dep->NumDependents();
+			}
+
+			/*Free ressources:*/
+			for(i=0;i<num_dependent_objects;i++){
+				char* string=names[i]; xDelete<char>(string);
+			}
+			xDelete<char*>(names);
+			xDelete<int>(types);
+			xDelete<int>(indices);
+		}
+		parameters->AddObject(new DataSetParam(AutodiffDependentObjectsEnum,dependent_objects));
+		parameters->AddObject(new IntParam(AutodiffNumDependentsEnum,num_dep));
+
+		delete dependent_objects;
+		/*}}}*/
+		/*Deal with independents: {{{*/
+
+		/*Independents have already been recovered in iomodel->DeclareIndependents. Just do some more processing. 
+		 *In particular, figure out num_independents, and create the state vector xp, or size num_independents x 1 :*/
+		num_ind=iomodel->NumIndependents();
+		parameters->AddObject(new IntParam(AutodiffNumIndependentsEnum,num_ind));
+
+		if(num_ind){
+			xp=xNew<IssmDouble>(num_ind);
+			iomodel->FillIndependents(xp);
+			parameters->AddObject(new DoubleVecParam(AutodiffXpEnum,xp,num_ind));
+			xDelete<IssmDouble>(xp);
+		}
+		/*}}}*/
+	}
+	#endif
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 21239)
@@ -0,0 +1,122 @@
+/*!\file: CreateParametersControl.cpp
+ * \brief driver for creating parameters dataset, for control analysis.
+ */ 
+
+#include "../../../toolkits/toolkits.h"
+#include "../../../classes/classes.h"
+#include "../../../shared/shared.h"
+#include "../ModelProcessorx.h"
+
+void CreateParametersControl(Parameters* parameters,IoModel* iomodel,int solution_type){/*{{{*/
+
+	bool        control_analysis;
+	int         inversiontype;
+	int         nsteps;
+	int         num_controls;
+	int         num_costfunc;
+	char**      controls      = NULL;
+	int        *maxiter       = NULL;
+	char**      cm_responses  = NULL;
+	IssmDouble *cm_jump       = NULL;
+	IssmDouble *optscal       = NULL;
+	IssmDouble *control_scaling_factors = NULL;
+
+	/*retrieve some parameters: */
+	iomodel->FindConstant(&control_analysis,"md.inversion.iscontrol");
+	iomodel->FindConstant(&inversiontype,"md.inversion.type");
+
+	if(control_analysis){
+
+		/*How many controls and how many responses?*/
+		parameters->AddObject(iomodel->CopyConstantObject("md.inversion.num_control_parameters",InversionNumControlParametersEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.inversion.num_cost_functions",InversionNumCostFunctionsEnum));
+
+		/*What solution type?*/
+		if(solution_type==SteadystateSolutionEnum){
+			parameters->AddObject(new BoolParam(ControlSteadyEnum,true));
+		}
+		else{
+			parameters->AddObject(new BoolParam(ControlSteadyEnum,false));
+		}
+
+		/*recover controls and convert to Enums*/
+		iomodel->FindConstant(&controls,&num_controls,"md.inversion.control_parameters");
+		if(num_controls<1) _error_("no controls found");
+		int* control_enums=xNew<int>(num_controls);
+		for(int i=0;i<num_controls;i++){
+			control_enums[i]=StringToEnumx(controls[i]);
+			xDelete<char>(controls[i]);
+		}
+		xDelete<char*>(controls);
+		parameters->AddObject(new IntVecParam(InversionControlParametersEnum,control_enums,num_controls));
+
+		iomodel->FindConstant(&cm_responses,&num_costfunc,"md.inversion.cost_functions");
+		if(num_costfunc<1) _error_ ("no cost functions found");
+		int* costfunc_enums=xNew<int>(num_costfunc);
+		for(int i=0;i<num_costfunc;i++){
+			costfunc_enums[i]=StringToEnumx(cm_responses[i]);
+			xDelete<char>(cm_responses[i]);
+		}
+		xDelete<char*>(cm_responses);
+		parameters->AddObject(new IntVecParam(InversionCostFunctionsEnum,costfunc_enums,num_costfunc));
+		
+		xDelete<int>(control_enums);
+		xDelete<int>(costfunc_enums);
+
+		/*Inversion type specifics*/
+		switch(inversiontype){
+			case 0:/*Brent Search*/
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.incomplete_adjoint",InversionIncompleteAdjointEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.nsteps",InversionNstepsEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.cost_function_threshold",InversionCostFunctionThresholdEnum));
+				iomodel->FetchData(&cm_jump,&nsteps,NULL,"md.inversion.step_threshold");
+				iomodel->FetchData(&optscal,NULL,NULL,"md.inversion.gradient_scaling");
+				iomodel->FetchData(&maxiter,NULL,NULL,"md.inversion.maxiter_per_step");
+				parameters->AddObject(new DoubleMatParam(InversionGradientScalingEnum,optscal,nsteps,num_controls));
+				parameters->AddObject(new DoubleVecParam(InversionStepThresholdEnum,cm_jump,nsteps));
+				parameters->AddObject(new IntVecParam(InversionMaxiterPerStepEnum,maxiter,nsteps));
+				break;
+			case 1:/*TAO*/
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.incomplete_adjoint",InversionIncompleteAdjointEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.fatol",InversionFatolEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.frtol",InversionFrtolEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.gatol",InversionGatolEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.grtol",InversionGrtolEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.gttol",InversionGttolEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.maxsteps",InversionMaxstepsEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.maxiter",InversionMaxiterEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.algorithm",InversionAlgorithmEnum));
+				break;
+			case 2:/*M1QN3*/
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.incomplete_adjoint",InversionIncompleteAdjointEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.dxmin",InversionDxminEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.gttol",InversionGttolEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.maxsteps",InversionMaxstepsEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.maxiter",InversionMaxiterEnum));
+				iomodel->FetchData(&control_scaling_factors,NULL,NULL,"md.inversion.control_scaling_factors");
+				parameters->AddObject(new DoubleVecParam(InversionControlScalingFactorsEnum,control_scaling_factors,num_controls));
+				break;
+			case 3:/*Validation*/
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.incomplete_adjoint",InversionIncompleteAdjointEnum));
+				iomodel->FetchData(&control_scaling_factors,NULL,NULL,"md.inversion.control_scaling_factors");
+				parameters->AddObject(new DoubleVecParam(InversionControlScalingFactorsEnum,control_scaling_factors,num_controls));
+				break;
+			case 4:/*M1QN3 AD*/
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.dxmin",InversionDxminEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.gttol",InversionGttolEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.maxsteps",InversionMaxstepsEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.maxiter",InversionMaxiterEnum));
+				iomodel->FetchData(&control_scaling_factors,NULL,NULL,"md.inversion.control_scaling_factors");
+				parameters->AddObject(new DoubleVecParam(InversionControlScalingFactorsEnum,control_scaling_factors,num_controls));
+				break;
+			default:
+				_error_("not supported");
+		}
+
+		xDelete<int>(control_enums);
+		xDelete<int>(maxiter);
+		xDelete<IssmDouble>(control_scaling_factors);
+		iomodel->DeleteData(cm_jump,"md.inversion.step_threshold");
+		iomodel->DeleteData(optscal,"md.inversion.gradient_scaling");
+	}
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp	(revision 21239)
@@ -0,0 +1,124 @@
+/*
+ * UpdateElementsAndMaterialsControl:
+ */
+
+#include "../../../toolkits/toolkits.h"
+#include "../../../classes/classes.h"
+#include "../../../shared/shared.h"
+#include "../../MeshPartitionx/MeshPartitionx.h"
+#include "../ModelProcessorx.h"
+
+void	UpdateElementsAndMaterialsControl(Elements* elements,Materials* materials, IoModel* iomodel){
+
+	/*Intermediary*/
+	bool       control_analysis;
+	int        control,cost_function,domaintype;
+	int        num_controls,num_cost_functions;
+	Element   *element          = NULL;
+	Material  *material         = NULL;
+	int       *control_enums    = NULL;
+	char     **controls         = NULL;
+	char     **cost_functions   = NULL;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&control_analysis,"md.inversion.iscontrol");
+	if(control_analysis) iomodel->FindConstant(&num_controls,"md.inversion.num_control_parameters");
+
+	/*Now, return if no control*/
+	if(!control_analysis) return;
+
+	/*Process controls and convert from string to enums*/
+	iomodel->FindConstant(&controls,&num_controls,"md.inversion.control_parameters");
+	if(num_controls<1) _error_("no controls found");
+	control_enums=xNew<int>(num_controls);
+	for(int i=0;i<num_controls;i++){
+		control_enums[i]=StringToEnumx(controls[i]);
+	}
+
+	/*Process cost functions and convert from string to enums*/
+	iomodel->FindConstant(&num_cost_functions,"md.inversion.num_cost_functions");
+	iomodel->FindConstant(&cost_functions,&num_cost_functions,"md.inversion.cost_functions");
+	if(num_cost_functions<1) _error_("No cost functions found");
+	int* cost_function_enums=xNew<int>(num_cost_functions);
+	for(int i=0;i<num_cost_functions;++i){
+		cost_function_enums[i]=StringToEnumx(cost_functions[i]);
+	}
+
+	iomodel->FetchData(3,"md.inversion.cost_functions_coefficients","md.inversion.min_parameters","md.inversion.max_parameters");
+	
+	/*Fetch Observations */
+	iomodel->FindConstant(&domaintype,"md.mesh.domain_type");
+	for(int i=0;i<num_cost_functions;i++){
+		cost_function=cost_function_enums[i];
+		if(     cost_function==ThicknessAbsMisfitEnum) iomodel->FetchDataToInput(elements,"md.inversion.thickness_obs",InversionThicknessObsEnum);
+		else if(cost_function==SurfaceAbsMisfitEnum)   iomodel->FetchDataToInput(elements,"md.inversion.surface_obs",InversionSurfaceObsEnum);
+		else if(cost_function==SurfaceAbsVelMisfitEnum
+			  || cost_function==SurfaceRelVelMisfitEnum
+			  || cost_function==SurfaceLogVelMisfitEnum
+			  || cost_function==SurfaceLogVxVyMisfitEnum
+			  || cost_function==SurfaceAverageVelMisfitEnum){
+			iomodel->FetchDataToInput(elements,"md.inversion.vx_obs",InversionVxObsEnum);
+			if(domaintype!=Domain2DverticalEnum) iomodel->FetchDataToInput(elements,"md.inversion.vy_obs",InversionVyObsEnum); 
+		}
+	}
+
+	for(int i=0;i<num_controls;i++){
+		control = control_enums[i];
+		switch(control){
+			/*List of supported controls*/
+			case BalancethicknessThickeningRateEnum:      iomodel->FetchData(1,"md.balancethickness.thickening_rate"); break;
+			case VxEnum:                                  iomodel->FetchData(1,"md.initialization.vx"); break;
+			case VyEnum:                                  iomodel->FetchData(1,"md.initialization.vy"); break;
+			case ThicknessEnum:                           iomodel->FetchData(1,"md.geometry.thickness"); break;
+			case FrictionCoefficientEnum:                 iomodel->FetchData(1,"md.friction.coefficient"); break;
+			case FrictionAsEnum:                          iomodel->FetchData(1,"md.friction.As"); break;
+			case BalancethicknessApparentMassbalanceEnum: iomodel->FetchData(1,"md.balancethickness.apparent_massbalance"); break;
+			case BalancethicknessOmegaEnum:               iomodel->FetchData(1,"md.balancethickness.omega"); break;
+			case MaterialsRheologyBEnum:                  iomodel->FetchData(1,"md.materials.rheology_B"); break;
+			/*Special cases*/
+			case MaterialsRheologyBbarEnum: iomodel->FetchData(1,"md.materials.rheology_B"); break;
+			case DamageDbarEnum:            iomodel->FetchData(1,"md.damage.D");            break;
+			default:
+				_error_("Control " << EnumToStringx(control) << " not implemented yet");
+		}
+	}
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			element=(Element*)elements->GetObjectByOffset(counter);
+			element->InputUpdateFromIoModel(i,iomodel); //we need i to index into elements.
+			counter++;
+		}
+	}
+
+	/*Free data: */
+	for(int i=0;i<num_controls;i++){
+		switch(control_enums[i]){
+			/*List of supported controls*/
+			case BalancethicknessThickeningRateEnum:      iomodel->DeleteData(1,"md.balancethickness.thickening_rate"); break;
+			case VxEnum:                                  iomodel->DeleteData(1,"md.initialization.vx"); break;
+			case VyEnum:                                  iomodel->DeleteData(1,"md.initialization.vy"); break;
+			case ThicknessEnum:                           iomodel->DeleteData(1,"md.geometry.thickness"); break;
+			case FrictionCoefficientEnum:                 iomodel->DeleteData(1,"md.friction.coefficient"); break;
+			case FrictionAsEnum:                          iomodel->DeleteData(1,"md.friction.As"); break;
+			case BalancethicknessApparentMassbalanceEnum: iomodel->DeleteData(1,"md.balancethickness.apparent_massbalance"); break;
+			case BalancethicknessOmegaEnum:               iomodel->DeleteData(1,"md.balancethickness.omega"); break;
+			case MaterialsRheologyBEnum:                  iomodel->DeleteData(1,"md.materials.rheology_B"); break;
+			/*Special cases*/
+			case MaterialsRheologyBbarEnum: iomodel->DeleteData(1,"md.materials.rheology_B"); break;
+			case DamageDbarEnum:            iomodel->DeleteData(1,"md.damage.D");            break;
+			default:
+				_error_("Control " << EnumToStringx(control_enums[i]) << " not implemented yet");
+		}
+	}
+
+	iomodel->DeleteData(3,"md.inversion.cost_functions_coefficients","md.inversion.min_parameters","md.inversion.max_parameters");
+	xDelete<int>(control_enums);
+	xDelete<int>(cost_function_enums);
+	for(int i=0;i<num_cost_functions;i++) xDelete<char>(cost_functions[i]);
+	xDelete<char*>(cost_functions);
+	for(int i=0;i<num_controls;i++) xDelete<char>(controls[i]);
+	xDelete<char*>(controls);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateEdges.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateEdges.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateEdges.cpp	(revision 21239)
@@ -0,0 +1,234 @@
+/*!\file:  CreateEdges.cpp
+ * \brief: create edges from 2d mesh
+ */ 
+
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "./ModelProcessorx.h"
+
+void CreateEdges(IoModel* iomodel){/*{{{*/
+
+	/*If edges are already present, exit*/
+	if(iomodel->edges) return;
+
+	/*Check Iomodel properties*/
+	if(iomodel->numberofvertices<3) _error_("not enough elements in mesh");
+	_assert_(iomodel->elements);
+
+	/*Intermediaries*/
+	bool exist;
+	int  i,j,v1,v2,v3;
+	int  maxnbe,nbe,elementnbe,elementnbv;
+	int *elementedges         = NULL;
+	int *elementedges_markers = NULL;
+
+	/*Mesh dependent variables*/
+	switch(iomodel->meshelementtype){
+		case TriaEnum:
+			elementnbv = 3;
+			elementnbe = 3;
+			elementedges         = xNew<int>(elementnbe*2);
+			elementedges_markers = xNew<int>(elementnbe);
+			elementedges[2*0+0] = 1; elementedges[2*0+1] = 2; elementedges_markers[0] = 1;
+			elementedges[2*1+0] = 2; elementedges[2*1+1] = 0; elementedges_markers[1] = 1;
+			elementedges[2*2+0] = 0; elementedges[2*2+1] = 1; elementedges_markers[2] = 1;
+			break;
+		case TetraEnum:
+			elementnbv = 4;
+			elementnbe = 6;
+			elementedges         = xNew<int>(elementnbe*2);
+			elementedges_markers = xNew<int>(elementnbe);
+			elementedges[2*0+0] = 1; elementedges[2*0+1] = 2; elementedges_markers[0] = 1;
+			elementedges[2*1+0] = 0; elementedges[2*1+1] = 2; elementedges_markers[1] = 1;
+			elementedges[2*2+0] = 0; elementedges[2*2+1] = 1; elementedges_markers[2] = 1;
+			elementedges[2*3+0] = 1; elementedges[2*3+1] = 3; elementedges_markers[3] = 1;
+			elementedges[2*4+0] = 2; elementedges[2*4+1] = 3; elementedges_markers[4] = 1;
+			elementedges[2*5+0] = 0; elementedges[2*5+1] = 3; elementedges_markers[5] = 1;
+			break;
+		case PentaEnum:
+			elementnbv = 6;
+			elementnbe = 9;
+			elementedges         = xNew<int>(elementnbe*2);
+			elementedges_markers = xNew<int>(elementnbe);
+			elementedges[2*0+0] = 0; elementedges[2*0+1] = 3; elementedges_markers[0] = 2;
+			elementedges[2*1+0] = 1; elementedges[2*1+1] = 4; elementedges_markers[1] = 2;
+			elementedges[2*2+0] = 2; elementedges[2*2+1] = 5; elementedges_markers[2] = 2;
+			elementedges[2*3+0] = 1; elementedges[2*3+1] = 2; elementedges_markers[3] = 1;
+			elementedges[2*4+0] = 2; elementedges[2*4+1] = 0; elementedges_markers[4] = 1;
+			elementedges[2*5+0] = 0; elementedges[2*5+1] = 1; elementedges_markers[5] = 1;
+			elementedges[2*6+0] = 4; elementedges[2*6+1] = 5; elementedges_markers[6] = 1;
+			elementedges[2*7+0] = 5; elementedges[2*7+1] = 3; elementedges_markers[7] = 1;
+			elementedges[2*8+0] = 3; elementedges[2*8+1] = 4; elementedges_markers[8] = 1;
+			break;
+		default:
+		_error_("mesh dimension not supported yet");
+	}
+
+	/*Maximum number of edges*/
+	maxnbe = elementnbe*iomodel->numberofelements;
+
+	/*Initialize intermediaries*/
+	int *edgestemp                 = xNew<int>(maxnbe*3);                             /*format: [vertex1 vertex2 marker]       */
+	int *element_edge_connectivity = xNew<int>(iomodel->numberofelements*elementnbe); /*format: [edge1 edge2 ... edgen] */
+
+	/*Initialize chain*/
+	int* head_minv = xNew<int>(iomodel->numberofvertices);
+	int* next_edge = xNew<int>(maxnbe);
+	for(i=0;i<iomodel->numberofvertices;i++) head_minv[i]=-1;
+
+	/*Initialize number of edges*/
+	nbe = 0;
+
+	for(i=0;i<iomodel->numberofelements;i++){
+		for(j=0;j<elementnbe;j++){
+
+			/*Get the two indices of the edge number j of the ith element*/
+			v1 = iomodel->elements[i*elementnbv+elementedges[2*j+0]]-1; _assert_(v1>=0 & v1<iomodel->numberofvertices);
+			v2 = iomodel->elements[i*elementnbv+elementedges[2*j+1]]-1; _assert_(v2>=0 & v2<iomodel->numberofvertices);
+
+			/*v1 and v2 must be sorted*/
+			if(v2<v1){
+				v3=v2; v2=v1; v1=v3;
+			}
+
+			/*This edge a priori has not been processed yet*/
+			exist = false;
+
+			/*Go through all processed edges connected to v1 and check whether we have seen this edge yet*/
+			for(int e=head_minv[v1]; e!=-1; e=next_edge[e]){
+				if(edgestemp[e*3+1]==v2+1){
+					exist = true;
+					element_edge_connectivity[i*elementnbe+j]=e;
+					break;
+				}
+			}
+
+			/*If this edge is new, add it to the lists*/
+			if(!exist){
+				_assert_(nbe<maxnbe);
+
+				/*Update edges*/
+				edgestemp[nbe*3+0] = v1+1;
+				edgestemp[nbe*3+1] = v2+1;
+				edgestemp[nbe*3+2] = elementedges_markers[j];
+
+				/*Update Connectivity*/
+				element_edge_connectivity[i*elementnbe+j]=nbe;
+
+				/*Update chain*/
+				next_edge[nbe] = head_minv[v1];
+				head_minv[v1]  = nbe;
+
+				/*Increase number of edges*/
+				nbe++;
+			}
+		}
+	}
+
+	/*Clean up*/
+	xDelete<int>(head_minv);
+	xDelete<int>(next_edge);
+	xDelete<int>(elementedges_markers);
+
+	/*Create final edges*/
+	int* edges = xNew<int>(nbe*3); /*format: [vertex1 vertex2 marker]*/
+	for(int i=0;i<3*nbe;i++) edges[i] = edgestemp[i];
+
+	/*Clean up*/
+	xDelete<int>(edgestemp);
+	xDelete<int>(elementedges);
+
+	/*Assign output pointers*/
+	iomodel->edges                     = edges;
+	iomodel->elementtoedgeconnectivity = element_edge_connectivity;
+	iomodel->numberofedges             = nbe;
+}/*}}}*/
+void EdgeOnBoundaryFlags(bool** pflags,IoModel* iomodel){/*{{{*/
+
+	/*Intermediaries*/
+	bool isv1,isv2;
+	int  facenbv,v1,v2;
+	int  id_edge,id_element;
+	int  elementnbe;
+
+	/*Mesh dependent variables*/
+	switch(iomodel->meshelementtype){
+		case TriaEnum:  elementnbe = 3; break;
+		case TetraEnum: elementnbe = 6; break;
+		case PentaEnum: elementnbe = 9; break;
+		default:        _error_("mesh dimension not supported yet");
+	}
+
+	/*Get edges and allocate output*/
+	if(!iomodel->edges) CreateEdges(iomodel);
+	bool* flags = xNewZeroInit<bool>(iomodel->numberofedges);
+
+	if(iomodel->domaindim==2){
+
+		/*Count how many times an edge is found in elementtoedgeconnectivity*/
+		int* counter = xNewZeroInit<int>(iomodel->numberofedges);
+		for(int i=0;i<iomodel->numberofelements;i++){
+			for(int j=0;j<elementnbe;j++){
+				counter[iomodel->elementtoedgeconnectivity[elementnbe*i+j]] += 1;
+			}
+		}
+
+		/*Now, loop over the egdes, whenever it is not connected to a second element, the edge is on boundary*/
+		for(int i=0;i<iomodel->numberofedges;i++){
+			if(counter[i]==1) flags[i]=true;
+		}
+
+		/*Clean up*/
+		xDelete<int>(counter);
+	}
+	else if(iomodel->domaindim==3){
+
+		/*Get faces*/
+		if(!iomodel->faces) CreateFaces(iomodel);
+
+		/*Now, loop over the faces, whenever it is not connected to a second element, all edges are on boundary*/
+		for(int id_face=0;id_face<iomodel->numberoffaces;id_face++){
+
+			if(iomodel->faces[id_face*iomodel->facescols+1]==-1){
+
+				/*The face is connected to the element e only*/
+				id_element = iomodel->faces[id_face*iomodel->facescols+0]-1;
+				facenbv    = iomodel->faces[id_face*iomodel->facescols+3];
+
+				/*Get all edges for this element*/
+				for(int edge = 0; edge<elementnbe; edge++){
+
+					id_edge     = iomodel->elementtoedgeconnectivity[elementnbe*id_element+edge];
+					v1          = iomodel->edges[id_edge*3+0];
+					v2          = iomodel->edges[id_edge*3+1];
+
+					/*Test if v1 is in the face*/
+					isv1=false;
+					for(int i=0;i<facenbv;i++){
+						if(iomodel->faces[id_face*iomodel->facescols+4+i] == v1){
+							isv1 = true; break;
+						}
+					}
+					if(!isv1) continue;
+
+					/*test if v2 is in the face*/
+					isv2=false;
+					for(int i=0;i<facenbv;i++){
+						if(iomodel->faces[id_face*iomodel->facescols+4+i] == v2){
+							isv2 = true; break;
+						}
+					}
+
+					/*If v1 and v2 are found, this edge is on boundary*/
+					if(isv2) flags[id_edge] = true;
+				}
+			}
+		}
+	}
+	else{
+		_error_("dimension not supported");
+	}
+
+	/*Clean up and return*/
+	*pflags = flags;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 21239)
@@ -0,0 +1,124 @@
+/*
+ * CreateElementsNodesAndMaterialsStressbalanceHoriz.c:
+ */
+
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "./ModelProcessorx.h"
+
+void CreateElementsVerticesAndMaterials(Elements* elements,Vertices* vertices,Materials* materials,IoModel* iomodel,const int nummodels){
+
+	/*Intermediary*/
+	int i;
+	int materials_type;
+	bool control_analysis;
+	bool dakota_analysis;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&control_analysis,"md.inversion.iscontrol");
+	iomodel->FindConstant(&dakota_analysis,"md.qmu.isdakota");
+	iomodel->FindConstant(&materials_type,"md.materials.type");
+
+	/*Did we already create the elements? : */
+	_assert_(elements->Size()==0);
+
+	/*Create elements*/
+	if(control_analysis)iomodel->FetchData(2,"md.inversion.min_parameters","md.inversion.max_parameters");
+	switch(iomodel->meshelementtype){
+		case TriaEnum:
+			for(i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]) elements->AddObject(new Tria(i+1,i,i,iomodel,nummodels));
+			}
+			break;
+		case TetraEnum:
+			for(i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]) elements->AddObject(new Tetra(i+1,i,i,iomodel,nummodels));
+			}
+			break;
+		case PentaEnum:
+			iomodel->FetchData(2,"md.mesh.upperelements","md.mesh.lowerelements");
+			for(i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]) elements->AddObject(new Penta(i+1,i,i,iomodel,nummodels));
+			}
+			break;
+		default:
+			_error_("Mesh not supported yet");
+	}
+
+	/*Create materials*/
+	switch(materials_type){
+		case MaticeEnum:
+			iomodel->FetchDataToInput(elements,"md.materials.rheology_B",MaterialsRheologyBEnum);
+			iomodel->FetchDataToInput(elements,"md.materials.rheology_n",MaterialsRheologyNEnum);
+			for (i=0;i<iomodel->numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matice(i+1,i,iomodel));
+			switch(iomodel->domaindim){
+				case 2:
+					elements->InputDuplicate(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum);
+					break;
+				case 3:
+					break;
+				default:
+					_error_("Mesh not supported yet");
+			}
+			break;
+		case MatdamageiceEnum:
+			iomodel->FetchDataToInput(elements,"md.materials.rheology_B",MaterialsRheologyBEnum);
+			iomodel->FetchDataToInput(elements,"md.materials.rheology_n",MaterialsRheologyNEnum);
+			iomodel->FetchDataToInput(elements,"md.damage.D",DamageDEnum);
+			for (i=0;i<iomodel->numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matice(i+1,i,iomodel));
+			switch(iomodel->domaindim){
+				case 2:
+					elements->InputDuplicate(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum);
+					elements->InputDuplicate(DamageDEnum,DamageDbarEnum);
+					break;
+				case 3:
+					break;
+				default:
+					_error_("Mesh not supported yet");
+			}
+			break;
+		case MatestarEnum:
+			iomodel->FetchDataToInput(elements,"md.materials.rheology_ko",MaterialsRheologyKoEnum);
+			iomodel->FetchDataToInput(elements,"md.materials.rheology_Ec",MaterialsRheologyEcEnum);
+			iomodel->FetchDataToInput(elements,"md.materials.rheology_Es",MaterialsRheologyEsEnum);
+			for(i=0;i<iomodel->numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matestar(i+1,i,iomodel));
+			switch(iomodel->domaindim){
+				case 2:
+					elements->InputDuplicate(MaterialsRheologyKoEnum,MaterialsRheologyKobarEnum);
+					elements->InputDuplicate(MaterialsRheologyEcEnum,MaterialsRheologyEcbarEnum);
+					elements->InputDuplicate(MaterialsRheologyEsEnum,MaterialsRheologyEsbarEnum);
+					break;
+				case 3:
+					break;
+				default:
+					_error_("Mesh not supported yet");
+			}
+			break;
+		default:
+			_error_("Materials "<<EnumToStringx(materials_type)<<" not supported");
+	}
+
+	/*Free data: */
+	iomodel->DeleteData(7,"md.mesh.upperelements","md.mesh.lowerelements","md.material.rheology_B",
+				"md.material.rheology_n","md.damage.D","md.inversion.min_parameters","md.inversion.max_parameters");
+
+	/*Add new constant material property to materials, at the end: */
+	materials->AddObject(new Matpar(iomodel->numberofelements+1,iomodel));//put it at the end of the materials
+
+	/*Create vertices: */
+
+	/*Fetch data:*/
+	iomodel->FetchData(6,"md.mesh.x","md.mesh.y","md.mesh.z","md.geometry.base","md.geometry.thickness","md.mask.ice_levelset");
+	if (iomodel->domaintype == Domain3DsurfaceEnum) iomodel->FetchData(3,"md.mesh.lat","md.mesh.long","md.mesh.r");
+	
+	CreateNumberNodeToElementConnectivity(iomodel);
+
+	for(i=0;i<iomodel->numberofvertices;i++){
+		if(iomodel->my_vertices[i]) vertices->AddObject(new Vertex(i+1,i,i,iomodel));
+	}
+
+	/*Free data: */
+	iomodel->DeleteData(6,"md.mesh.x","md.mesh.y","md.mesh.z","md.geometry.base","md.geometry.thickness","md.mask.ice_levelset");
+	if (iomodel->domaintype == Domain3DsurfaceEnum) iomodel->DeleteData(3,"md.mesh.lat","md.mesh.long","md.mesh.r");
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateFaces.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateFaces.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateFaces.cpp	(revision 21239)
@@ -0,0 +1,262 @@
+/*!\file:  CreateFaces.cpp
+ * \brief: create faces from 2d mesh
+ */ 
+
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "./ModelProcessorx.h"
+
+void CreateFaces(IoModel* iomodel){/*{{{*/
+
+	/*If faces are already present, exit*/
+	if(iomodel->faces) return;
+
+	/*Some checks*/
+	if(iomodel->numberofvertices<3) _error_("not enough elements in mesh");
+	_assert_(iomodel->elements);
+
+	/*Check Iomodel properties*/
+	if(iomodel->domaintype==Domain2DhorizontalEnum || iomodel->domaintype==Domain2DverticalEnum){
+		/*Keep going*/
+	}
+	else if(iomodel->domaintype==Domain3DEnum){
+		CreateFaces3d(iomodel);
+		return;
+	}
+	else{
+		_error_("mesh dimension not supported yet");
+	}
+
+	/*Intermediaries*/
+	bool exist;
+	int  i,j,v1,v2,v3;
+	int  maxnbf,nbf;
+
+	/*Maximum number of faces*/
+	maxnbf = 3*iomodel->numberofelements;
+
+	/*Initialize intermediaries*/
+	int*  facestemp = xNew<int>(maxnbf*4);         /*format: [vertex1 vertex2 element1 element2]                */
+	bool* exchange  = xNewZeroInit<bool>(maxnbf);  /*Faces are ordered, we need to keep track of vertex swapping*/
+	for(i=0;i<maxnbf;i++) facestemp[i*4+3]=-1;     /*Initialize last column of faces as -1 (boundary edge)      */
+
+	/*Initialize chain*/
+	int* head_minv = xNew<int>(iomodel->numberofvertices);
+	int* next_face = xNew<int>(maxnbf);
+	for(i=0;i<iomodel->numberofvertices;i++) head_minv[i]=-1;
+
+	/*Initialize number of faces*/
+	nbf = 0;
+
+	for(i=0;i<iomodel->numberofelements;i++){
+		for(j=0;j<3;j++){
+
+			/*Get the two indices of the edge number j of the ith triangle*/
+			v1 = iomodel->elements[i*3+j];
+			if(j==2)
+			 v2 = iomodel->elements[i*3+0];
+			else
+			 v2 = iomodel->elements[i*3+j+1];
+
+			/*v1 and v2 must be sorted*/
+			if(v2<v1){
+				v3=v2; v2=v1; v1=v3;
+			}
+
+			/*This edge a priori has not been processed yet*/
+			exist = false;
+
+			/*Go through all processed faces connected to v1 and check whether we have seen this edge yet*/
+			_assert_(v1>=0 && v1<iomodel->numberofvertices);
+			for(int e=head_minv[v1]; e!=-1; e=next_face[e]){
+				if(facestemp[e*4+1]==v2){
+					exist = true;
+					facestemp[e*4+3]=i+1;
+					break;
+				}
+			}
+
+			/*If this edge is new, add it to the lists*/
+			if(!exist){
+				_assert_(nbf<maxnbf);
+
+				/*Update faces*/
+				facestemp[nbf*4+0] = v1;
+				facestemp[nbf*4+1] = v2;
+				facestemp[nbf*4+2] = i+1;
+				if(v1!=iomodel->elements[i*3+j]) exchange[nbf]=true;
+
+				/*Update chain*/
+				next_face[nbf] = head_minv[v1];
+				head_minv[v1]  = nbf;
+
+				/*Increase number of faces*/
+				nbf++;
+			}
+		}
+	}
+
+	/*Clean up*/
+	xDelete<int>(head_minv);
+	xDelete<int>(next_face);
+
+	/*Create final faces*/
+	int* faces = xNew<int>(nbf*4); /*vertex1 vertex2 element1 element2*/
+	for(int i=0;i<nbf;i++){
+		if(exchange[i]){
+			faces[i*4+0]=facestemp[i*4+1];
+			faces[i*4+1]=facestemp[i*4+0];
+		}
+		else{
+			faces[i*4+0]=facestemp[i*4+0];
+			faces[i*4+1]=facestemp[i*4+1];
+		}
+		faces[i*4+2]=facestemp[i*4+2];
+		faces[i*4+3]=facestemp[i*4+3];
+	}
+	xDelete<int>(facestemp);
+	xDelete<bool>(exchange);
+
+	/*Assign output pointers*/
+	iomodel->faces         = faces;
+	iomodel->numberoffaces = nbf;
+}/*}}}*/
+void CreateFaces3d(IoModel* iomodel){/*{{{*/
+
+	/*Intermediaries*/
+	bool exist;
+	int  i,j,k,v0,cols,facescols;
+	int  maxnbf,nbf,elementnbf,elementnbv,facenbv,facemaxnbv;
+	int *elementfaces         = NULL;
+	int *elementfaces_markers = NULL;
+
+	/*Mesh specific face indexing per element*/
+	switch(iomodel->meshelementtype){
+		case PentaEnum:
+			elementnbv = 6; /*Number of vertices per element*/
+			elementnbf = 5; /*Number of faces per element*/
+			facemaxnbv = 4; /*Maximum number of vertices per face*/
+			cols       = facemaxnbv + 1;
+			elementfaces         = xNew<int>(elementnbf*cols);
+			elementfaces_markers = xNew<int>(elementnbf);
+			/*2 triangles*/
+			elementfaces_markers[0] = 1;
+			elementfaces_markers[1] = 1;
+			elementfaces[cols*0+0] = 3; elementfaces[cols*0+1] = 0;  elementfaces[cols*0+2] = 1; elementfaces[cols*0+3] = 2;
+			elementfaces[cols*1+0] = 3; elementfaces[cols*1+1] = 3;  elementfaces[cols*1+2] = 4; elementfaces[cols*1+3] = 5;
+			/*3 quads*/
+			elementfaces_markers[2] = 2;
+			elementfaces_markers[3] = 2;
+			elementfaces_markers[4] = 2;
+			elementfaces[cols*2+0] = 4; elementfaces[cols*2+1] = 1;  elementfaces[cols*2+2] = 2; elementfaces[cols*2+3] = 5;  elementfaces[cols*2+4] = 4;
+			elementfaces[cols*3+0] = 4; elementfaces[cols*3+1] = 2;  elementfaces[cols*3+2] = 0; elementfaces[cols*3+3] = 3;  elementfaces[cols*3+4] = 5;
+			elementfaces[cols*4+0] = 4; elementfaces[cols*4+1] = 0;  elementfaces[cols*4+2] = 1; elementfaces[cols*4+3] = 4;  elementfaces[cols*4+4] = 3;
+			break;
+		case TetraEnum:
+			elementnbv = 4; /*Number of vertices per element*/
+			elementnbf = 4; /*Number of faces per element*/
+			facemaxnbv = 3; /*Maximum number of vertices per face*/
+			cols       = facemaxnbv + 1;
+			elementfaces         = xNew<int>(elementnbf*cols);
+			elementfaces_markers = xNew<int>(elementnbf);
+			/*4 triangles*/
+			elementfaces_markers[0] = 1;
+			elementfaces_markers[1] = 1;
+			elementfaces_markers[2] = 1;
+			elementfaces_markers[3] = 1;
+			elementfaces[cols*0+0] = 3; elementfaces[cols*0+1] = 0;  elementfaces[cols*0+2] = 1; elementfaces[cols*0+3] = 2;
+			elementfaces[cols*1+0] = 3; elementfaces[cols*1+1] = 0;  elementfaces[cols*1+2] = 3; elementfaces[cols*1+3] = 1;
+			elementfaces[cols*2+0] = 3; elementfaces[cols*2+1] = 1;  elementfaces[cols*2+2] = 3; elementfaces[cols*2+3] = 2;
+			elementfaces[cols*3+0] = 3; elementfaces[cols*3+1] = 0;  elementfaces[cols*3+2] = 2; elementfaces[cols*3+3] = 3;
+			break;
+		default:
+		_error_("mesh "<< EnumToStringx(iomodel->meshelementtype) <<" not supported");
+	}
+
+	/*Allocate connectivity*/
+	int *element_face_connectivity = xNew<int>(iomodel->numberofelements*elementnbf); /*format: [face1 face2 ...] */
+
+	/*Maximum number of faces for initial allocation*/
+	maxnbf     = elementnbf*iomodel->numberofelements;
+	facescols  = 4+facemaxnbv; _assert_(facescols>6);
+
+	/*Initialize intermediaries*/
+	int* facestemp = xNew<int>(maxnbf*facescols);        /*format: [element1 element2 marker nbv vertex1 vertex2 vertex3 ...]    */
+	for(i=0;i<maxnbf;i++) facestemp[i*facescols+1]=-1;   /*Initialize second column of faces as -1 (boundary face)               */
+
+	/*Initialize chain*/
+	int* head_minv = xNew<int>(iomodel->numberofvertices);
+	int* next_face = xNew<int>(maxnbf);
+	for(i=0;i<iomodel->numberofvertices;i++) head_minv[i]=-1;
+
+	/*Initialize number of faces and list of vertex indices*/
+	nbf = 0;
+	int* v = xNew<int>(facemaxnbv);
+
+	for(i=0;i<iomodel->numberofelements;i++){
+		for(j=0;j<elementnbf;j++){
+
+			/*Get indices of current face*/
+			facenbv = elementfaces[cols*j+0];
+			for(k=0;k<facenbv;k++){
+				v[k] = iomodel->elements[i*elementnbv + elementfaces[cols*j+k+1]] - 1;
+			}
+
+			/*Sort list of vertices*/
+			HeapSort(v,elementfaces[cols*j+0]);
+			v0 = v[0]; _assert_(v0>=0 && v0<iomodel->numberofvertices);
+
+			/*This face a priori has not been processed yet*/
+			exist = false;
+
+			/*Go through all processed faces connected to v0 and check whether we have seen this face yet*/
+			for(int f=head_minv[v0]; f!=-1; f=next_face[f]){
+				if(facestemp[f*facescols+5]==v[1]+1 && facestemp[f*facescols+6]==v[2]+1){
+					exist = true;
+					facestemp[f*facescols+1]=i+1;
+					element_face_connectivity[i*elementnbf+j]=f;
+					break;
+				}
+			}
+
+			/*If this face is new, add it to the lists*/
+			if(!exist){
+				_assert_(nbf<maxnbf);
+
+				/*Update faces*/
+				facestemp[nbf*facescols+0] = i+1;
+				facestemp[nbf*facescols+2] = elementfaces_markers[j];
+				facestemp[nbf*facescols+3] = facenbv;
+				for(k=0;k<facenbv;k++) facestemp[nbf*facescols+4+k] = v[k]+1;
+
+				/*Update Connectivity*/
+				element_face_connectivity[i*elementnbf+j]=nbf;
+
+				/*Update chain*/
+				next_face[nbf] = head_minv[v0];
+				head_minv[v0]  = nbf;
+
+				/*Increase number of faces*/
+				nbf++;
+			}
+		}
+	}
+
+	/*Clean up*/
+	xDelete<int>(head_minv);
+	xDelete<int>(next_face);
+	xDelete<int>(v);
+	xDelete<int>(elementfaces);
+	xDelete<int>(elementfaces_markers);
+
+	/*Create final faces (now that we have the correct size)*/
+	int* faces = xNew<int>(nbf*facescols);
+	xMemCpy<int>(faces,facestemp,nbf*facescols);
+	xDelete<int>(facestemp);
+
+	/*Assign output pointers*/
+	iomodel->faces                     = faces;
+	iomodel->numberoffaces             = nbf;
+	iomodel->facescols                 = facescols;
+	iomodel->elementtofaceconnectivity = element_face_connectivity;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateNodes.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateNodes.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateNodes.cpp	(revision 21239)
@@ -0,0 +1,585 @@
+/*
+ * CreateNodes.c:
+ */
+
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "../MeshPartitionx/MeshPartitionx.h"
+#include "./ModelProcessorx.h"
+
+void CreateNodes(Nodes* nodes, IoModel* iomodel,int analysis,int finite_element,int approximation){
+
+	/*Intermediaries*/
+	int   i,j,counter,vnodes,lid=0;
+	int   numberoffaces,elementnbv;
+	int   id0 = iomodel->nodecounter;
+	bool *my_faces = NULL;
+	bool *my_edges = NULL;
+	bool *my_nodes = NULL;
+	Node *node     = NULL;
+
+	switch(finite_element){
+		case P1Enum:
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
+				}
+			}
+			break;
+
+		case P1DGEnum:
+			NodesPartitioning(&my_nodes,iomodel->my_elements,iomodel->my_vertices,iomodel,false);
+			for(i=0;i<iomodel->numberofelements;i++){
+				for(j=0;j<3;j++){
+					if(my_nodes[3*i+j]){ 
+						nodes->AddObject(new Node(id0+3*i+j+1,id0+3*i+j,lid++,iomodel->elements[+3*i+j]-1,iomodel,analysis,approximation));
+
+					}
+				}
+			}
+			break;
+
+		case P1bubbleEnum:
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
+				}
+			}
+			for(i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]){
+					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,approximation));
+				}
+			}
+			break;
+
+		case P1bubblecondensedEnum:
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
+				}
+			}
+			for(i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]){
+					node = new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,approximation);
+					node->HardDeactivate();
+					nodes->AddObject(node);
+				}
+			}
+			break;
+
+		case P1xP2Enum:
+			EdgesPartitioning(&my_edges,iomodel);
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
+				}
+			}
+
+			counter = iomodel->numberofvertices;
+			for(i=0;i<iomodel->numberofedges;i++){
+				if(iomodel->edges[i*3+2]==2){
+					if(my_edges[i]){
+						node = new Node(id0+iomodel->numberofvertices+i+1,counter+1,lid++,0,iomodel,analysis,approximation);
+						nodes->AddObject(node);
+					}
+					counter++;
+				}
+			}
+			break;
+
+		case P1xP3Enum:
+			EdgesPartitioning(&my_edges,iomodel);
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
+				}
+			}
+
+			counter = iomodel->numberofvertices;
+			for(i=0;i<iomodel->numberofedges;i++){
+				if(iomodel->edges[i*3+2]==2){
+					if(my_edges[i]){
+						node = new Node(id0+iomodel->numberofvertices+2*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
+						nodes->AddObject(node);
+						node = new Node(id0+iomodel->numberofvertices+2*i+2,counter+2,lid++,0,iomodel,analysis,approximation);
+						nodes->AddObject(node);
+					}
+					counter=counter+2;
+				}
+			}
+			break;
+
+		case P2xP1Enum:
+			EdgesPartitioning(&my_edges,iomodel);
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
+				}
+			}
+
+			counter = iomodel->numberofvertices;
+			for(i=0;i<iomodel->numberofedges;i++){
+				if(iomodel->edges[i*3+2]!=2){
+					if(my_edges[i]){
+						node = new Node(id0+iomodel->numberofvertices+i+1,counter+1,lid++,0,iomodel,analysis,approximation);
+						nodes->AddObject(node);
+					}
+					counter++;
+				}
+			}
+			break;
+
+		case P2Enum:
+			EdgesPartitioning(&my_edges,iomodel);
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
+				}
+			}
+			for(i=0;i<iomodel->numberofedges;i++){
+				if(my_edges[i]){
+					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,approximation));
+				}
+			}
+			id0 = id0+iomodel->numberofvertices+iomodel->numberofedges;
+	      if(iomodel->meshelementtype==PentaEnum){
+				FacesPartitioning(&my_faces,iomodel);
+				for(i=0;i<iomodel->numberoffaces;i++){
+					if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
+						if(my_faces[i]){
+							node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,iomodel,analysis,approximation);
+							nodes->AddObject(node);
+						}
+					}
+					else if(iomodel->faces[i*iomodel->facescols+2]==1){/*Triangular base/top*/
+						/*Nothing*/
+					}
+					else{
+						_error_("not supported");
+					}
+				}
+			}
+			break;
+		case P2bubbleEnum:
+			EdgesPartitioning(&my_edges,iomodel);
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
+				}
+			}
+			for(i=0;i<iomodel->numberofedges;i++){
+				if(my_edges[i]){
+					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,approximation));
+				}
+			}
+			id0 = id0+iomodel->numberofvertices+iomodel->numberofedges;
+			if(iomodel->meshelementtype==PentaEnum){
+				FacesPartitioning(&my_faces,iomodel);
+				for(i=0;i<iomodel->numberoffaces;i++){
+					if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
+						if(my_faces[i]){
+							node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,iomodel,analysis,approximation);
+							nodes->AddObject(node);
+						}
+					}
+					else if(iomodel->faces[i*iomodel->facescols+2]==1){/*Triangular base/top*/
+						/*Nothing*/
+					}
+					else{
+						_error_("not supported");
+					}
+				}
+				id0 = id0+iomodel->numberoffaces;
+			}
+			for(i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]){
+					nodes->AddObject(new Node(id0+i+1,id0-iomodel->nodecounter+i,lid++,0,iomodel,analysis,approximation));
+				}
+			}
+			break;
+		case P2xP4Enum:
+			EdgesPartitioning(&my_edges,iomodel);
+			FacesPartitioning(&my_faces,iomodel);
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
+				}
+			}
+			counter = iomodel->numberofvertices;
+			for(i=0;i<iomodel->numberofedges;i++){
+				if(iomodel->edges[i*3+2]==2){/*Vertical edges*/
+					if(my_edges[i]){
+						node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
+						nodes->AddObject(node);
+						node = new Node(id0+iomodel->numberofvertices+3*i+2,counter+2,lid++,0,iomodel,analysis,approximation);
+						nodes->AddObject(node);
+						node = new Node(id0+iomodel->numberofvertices+3*i+3,counter+3,lid++,0,iomodel,analysis,approximation);
+						nodes->AddObject(node);
+					}
+					counter=counter+3;
+				}
+				else if(iomodel->edges[i*3+2]==1){/*Horizontal edges*/
+					if(my_edges[i]){
+						node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
+						nodes->AddObject(node);
+					}
+					counter=counter+1;
+				}
+				else{
+					_error_("not supported");
+				}
+			}
+			id0 = id0+iomodel->numberofvertices+3*iomodel->numberofedges;
+			for(i=0;i<iomodel->numberoffaces;i++){
+				if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
+					if(my_faces[i]){
+						node = new Node(id0+3*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
+						nodes->AddObject(node);
+						node = new Node(id0+3*i+2,counter+2,lid++,0,iomodel,analysis,approximation);
+						nodes->AddObject(node);
+						node = new Node(id0+3*i+3,counter+3,lid++,0,iomodel,analysis,approximation);
+						nodes->AddObject(node);
+					}
+					counter=counter+3;
+				}
+				else if(iomodel->faces[i*iomodel->facescols+2]==1){/*Triangular base/top*/
+					/*Nothing*/
+				}
+				else{
+					_error_("not supported");
+				}
+			}
+			break;
+
+		/*Stokes elements*/
+		case P1P1Enum:
+			_assert_(approximation==FSApproximationEnum);
+			/*P1 velocity*/
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum));
+				}
+			}
+			/*P1 pressure*/
+			vnodes = id0+iomodel->numberofvertices;
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+i,lid++,i,iomodel,analysis,FSpressureEnum));
+				}
+			}
+			break;
+		case P1P1GLSEnum:
+			_assert_(approximation==FSApproximationEnum);
+			/*P1 velocity*/
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum));
+				}
+			}
+			/*P1 pressure*/
+			vnodes = id0+iomodel->numberofvertices;
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+i,lid++,i,iomodel,analysis,FSpressureEnum));
+				}
+			}
+			break;
+		case MINIcondensedEnum:
+			_assert_(approximation==FSApproximationEnum);
+			/*P1+ velocity (bubble statically condensed)*/
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum));
+				}
+			}
+			for(i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]){
+					node = new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,FSvelocityEnum);
+					node->HardDeactivate();
+					nodes->AddObject(node);
+				}
+			}
+			/*P1 pressure*/
+			vnodes = id0+iomodel->numberofvertices+iomodel->numberofelements;
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,i,iomodel,analysis,FSpressureEnum));
+				}
+			}
+			break;
+		case MINIEnum:
+			_assert_(approximation==FSApproximationEnum);
+			/*P1+ velocity*/
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum));
+				}
+			}
+			for(i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]){
+					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,FSvelocityEnum));
+				}
+			}
+			/*P1 pressure*/
+			vnodes = id0+iomodel->numberofvertices+iomodel->numberofelements;
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,i,iomodel,analysis,FSpressureEnum));
+				}
+			}
+			break;
+		case TaylorHoodEnum:
+		case XTaylorHoodEnum:
+			_assert_(approximation==FSApproximationEnum);
+			/*P2 velocity*/
+			EdgesPartitioning(&my_edges,iomodel);
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum));
+				}
+			}
+			for(i=0;i<iomodel->numberofedges;i++){
+				if(my_edges[i]){
+					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,FSvelocityEnum));
+				}
+			}
+			id0 = id0+iomodel->numberofvertices+iomodel->numberofedges;
+	      if(iomodel->meshelementtype==PentaEnum){
+				FacesPartitioning(&my_faces,iomodel);
+				for(i=0;i<iomodel->numberoffaces;i++){
+					if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
+						if(my_faces[i]){
+							node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,iomodel,analysis,FSvelocityEnum);
+							nodes->AddObject(node);
+						}
+					}
+					else if(iomodel->faces[i*iomodel->facescols+2]==1){/*Triangular base/top*/
+						/*Nothing*/
+					}
+					else{
+						_error_("not supported");
+					}
+				}
+			}
+
+			/*P1 pressure*/
+	      if(iomodel->meshelementtype==PentaEnum){
+				numberoffaces=iomodel->numberoffaces;
+			}
+			else{
+				numberoffaces=0;
+			}
+			vnodes = id0+numberoffaces;
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+iomodel->numberofedges+numberoffaces+i,lid++,i,iomodel,analysis,FSpressureEnum));
+				}
+			}
+			break;
+		case LATaylorHoodEnum:
+			_assert_(approximation==FSApproximationEnum);
+			/*P2 velocity*/
+			EdgesPartitioning(&my_edges,iomodel);
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum));
+				}
+			}
+			for(i=0;i<iomodel->numberofedges;i++){
+				if(my_edges[i]){
+					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,FSvelocityEnum));
+				}
+			}
+			id0 = id0+iomodel->numberofvertices+iomodel->numberofedges;
+	      if(iomodel->meshelementtype==PentaEnum){
+				FacesPartitioning(&my_faces,iomodel);
+				for(i=0;i<iomodel->numberoffaces;i++){
+					if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
+						if(my_faces[i]){
+							node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,iomodel,analysis,FSvelocityEnum);
+							nodes->AddObject(node);
+						}
+					}
+					else if(iomodel->faces[i*iomodel->facescols+2]==1){/*Triangular base/top*/
+						/*Nothing*/
+					}
+					else{
+						_error_("not supported");
+					}
+				}
+			}
+
+			/*No pressure*/
+			break;
+		case OneLayerP4zEnum:
+			_assert_(approximation==FSApproximationEnum);
+			EdgesPartitioning(&my_edges,iomodel);
+			FacesPartitioning(&my_faces,iomodel);
+			/*P2xP4 velocity*/
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum));
+				}
+			}
+			counter = iomodel->numberofvertices;
+			for(i=0;i<iomodel->numberofedges;i++){
+				if(iomodel->edges[i*3+2]==2){/*Vertical edges*/
+					if(my_edges[i]){
+						node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,iomodel,analysis,FSvelocityEnum);
+						nodes->AddObject(node);
+						node = new Node(id0+iomodel->numberofvertices+3*i+2,counter+2,lid++,0,iomodel,analysis,FSvelocityEnum);
+						nodes->AddObject(node);
+						node = new Node(id0+iomodel->numberofvertices+3*i+3,counter+3,lid++,0,iomodel,analysis,FSvelocityEnum);
+						nodes->AddObject(node);
+					}
+					counter=counter+3;
+				}
+				else if(iomodel->edges[i*3+2]==1){/*Horizontal edges*/
+					if(my_edges[i]){
+						node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,iomodel,analysis,FSvelocityEnum);
+						nodes->AddObject(node);
+					}
+					counter=counter+1;
+				}
+				else{
+					_error_("not supported");
+				}
+			}
+			id0 = id0+iomodel->numberofvertices+3*iomodel->numberofedges;
+			for(i=0;i<iomodel->numberoffaces;i++){
+				if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
+					if(my_faces[i]){
+						node = new Node(id0+3*i+1,counter+1,lid++,0,iomodel,analysis,FSvelocityEnum);
+						nodes->AddObject(node);
+						node = new Node(id0+3*i+2,counter+2,lid++,0,iomodel,analysis,FSvelocityEnum);
+						nodes->AddObject(node);
+						node = new Node(id0+3*i+3,counter+3,lid++,0,iomodel,analysis,FSvelocityEnum);
+						nodes->AddObject(node);
+					}
+					counter=counter+3;
+				}
+				else if(iomodel->faces[i*iomodel->facescols+2]==1){/*Triangular base/top*/
+					/*Nothing*/
+				}
+				else{
+					_error_("not supported");
+				}
+			}
+
+			/*P1 pressure*/
+			vnodes = id0+3*iomodel->numberoffaces;
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(vnodes+i+1,counter+1,lid++,i,iomodel,analysis,FSpressureEnum));
+				}
+				counter++;
+			}
+			break;
+		case CrouzeixRaviartEnum:
+			_assert_(approximation==FSApproximationEnum);
+			/*P2b velocity*/
+			EdgesPartitioning(&my_edges,iomodel);
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum));
+				}
+			}
+			for(i=0;i<iomodel->numberofedges;i++){
+				if(my_edges[i]){
+					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,FSvelocityEnum));
+				}
+			}
+			id0 = id0+iomodel->numberofvertices+iomodel->numberofedges;
+			if(iomodel->meshelementtype==PentaEnum){
+				FacesPartitioning(&my_faces,iomodel);
+				for(i=0;i<iomodel->numberoffaces;i++){
+					if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
+						if(my_faces[i]){
+							node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,iomodel,analysis,FSvelocityEnum);
+							nodes->AddObject(node);
+						}
+					}
+					else if(iomodel->faces[i*iomodel->facescols+2]==1){/*Triangular base/top*/
+						/*Nothing*/
+					}
+					else{
+						_error_("not supported");
+					}
+				}
+				id0 = id0+iomodel->numberoffaces;
+			}
+			for(i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]){
+					nodes->AddObject(new Node(id0+i+1,id0-iomodel->nodecounter+i,lid++,0,iomodel,analysis,FSvelocityEnum));
+				}
+			}
+
+			/*P1 DG pressure*/
+			vnodes = id0+iomodel->numberofelements;
+			switch(iomodel->meshelementtype){
+				case TriaEnum:  elementnbv = 3; break;
+				case TetraEnum: elementnbv = 4; break;
+				case PentaEnum: elementnbv = 6; break;
+				default:        _error_("mesh dimension not supported yet");
+			}
+			for(i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]){
+					for(j=0;j<elementnbv;j++){
+						nodes->AddObject(new Node(vnodes+elementnbv*i+j+1,vnodes-iomodel->nodecounter+elementnbv*i+j,lid++,iomodel->elements[+elementnbv*i+j]-1,iomodel,analysis,FSpressureEnum));
+
+					}
+				}
+			}
+			break;
+		case LACrouzeixRaviartEnum:
+			_assert_(approximation==FSApproximationEnum);
+			/*P2b velocity*/
+			EdgesPartitioning(&my_edges,iomodel);
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum));
+				}
+			}
+			for(i=0;i<iomodel->numberofedges;i++){
+				if(my_edges[i]){
+					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,FSvelocityEnum));
+				}
+			}
+			id0 = id0+iomodel->numberofvertices+iomodel->numberofedges;
+			if(iomodel->meshelementtype==PentaEnum){
+				FacesPartitioning(&my_faces,iomodel);
+				for(i=0;i<iomodel->numberoffaces;i++){
+					if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
+						if(my_faces[i]){
+							node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,iomodel,analysis,FSvelocityEnum);
+							nodes->AddObject(node);
+						}
+					}
+					else if(iomodel->faces[i*iomodel->facescols+2]==1){/*Triangular base/top*/
+						/*Nothing*/
+					}
+					else{
+						_error_("not supported");
+					}
+				}
+				id0 = id0+iomodel->numberoffaces;
+			}
+			for(i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]){
+					nodes->AddObject(new Node(id0+i+1,id0-iomodel->nodecounter+i,lid++,0,iomodel,analysis,FSvelocityEnum));
+				}
+			}
+
+			/*No pressure*/
+			break;
+
+		default:
+			_error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet");
+	}
+
+	/*Clean up*/
+	xDelete<bool>(my_faces);
+	xDelete<bool>(my_edges);
+	xDelete<bool>(my_nodes);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp	(revision 21239)
@@ -0,0 +1,56 @@
+/*!\file:  CreateNumberNodeToElementConnectivity.cpp
+ * \brief: create connectivity table
+ */ 
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+#include "../../shared/io/io.h"
+#include "./ModelProcessorx.h"
+
+void CreateNumberNodeToElementConnectivity(IoModel* iomodel){
+
+	/*Intermediary*/
+	int i,j;
+	int vertexid;
+	int elementswidth;
+
+	/*output*/
+	int* connectivity=NULL;
+
+	/*Check that this has not been done yet*/
+	if(iomodel->numbernodetoelementconnectivity) return;
+
+	/*Some checks if debugging*/
+	_assert_(iomodel->numberofvertices);
+	_assert_(iomodel->numberofelements);
+	_assert_(iomodel->elements);
+
+	/*Allocate ouput*/
+	connectivity=xNewZeroInit<int>(iomodel->numberofvertices);
+
+	/*Get element width*/
+	switch(iomodel->meshelementtype){
+		case TriaEnum:  elementswidth=3; break;
+		case TetraEnum: elementswidth=4; break;
+		case PentaEnum: elementswidth=6; break;
+		default:                   _error_("mesh not supported yet");
+	}
+
+	/*Create connectivity table*/
+	for (i=0;i<iomodel->numberofelements;i++){
+		for (j=0;j<elementswidth;j++){
+			vertexid=iomodel->elements[elementswidth*i+j];
+			_assert_(vertexid>0 && vertexid-1<iomodel->numberofvertices);
+			connectivity[vertexid-1]+=1;
+		}
+	}
+
+	/*Assign to iomodel*/
+	iomodel->numbernodetoelementconnectivity=connectivity;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp	(revision 21239)
@@ -0,0 +1,257 @@
+/*!\file: CreateParametersOutputDefinitions.cpp
+ * \brief driver for creating output definitions dataset, and including it into the parameters dataset
+ */ 
+
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "./ModelProcessorx.h"
+
+void CreateOutputDefinitions(Elements* elements, Parameters* parameters,IoModel* iomodel){
+
+	int i,j;
+	
+	DataSet*     output_definitions      = NULL;
+	int*         output_definition_enums = NULL;
+	int          num_output_definitions;
+
+	/*Create output_definitions dataset: */
+	output_definitions=new DataSet();
+
+	char** out_strings = NULL;
+	iomodel->FetchData(&out_strings,&num_output_definitions,"md.outputdefinition.list");
+	if(num_output_definitions>0){
+		output_definition_enums=xNew<int>(num_output_definitions);
+		for(int i=0;i<num_output_definitions;i++){
+			output_definition_enums[i]=StringToEnumx(out_strings[i]);
+		}
+	}
+	// free data
+	for(int i=0;i<num_output_definitions;i++) xDelete<char>(out_strings[i]);
+	xDelete<char*>(out_strings);
+
+	if(num_output_definitions){
+		for (i=0;i<num_output_definitions;i++){
+			if (output_definition_enums[i]==MassfluxatgateEnum){
+				/*Deal with mass flux gates:{{{ */
+
+				/*massfluxatgate variables: */
+				int          temp,numgates;
+				char       **gatenames           = NULL;
+				char		  **gatedefinitionstrings = NULL;
+				IssmDouble **gatesegments        = NULL;
+				int         *gatesegments_M      = NULL;
+
+				/*Fetch segments and names: */
+				iomodel->FetchMultipleData(&gatenames,&numgates,                     "md.massfluxatgate.name");
+				iomodel->FetchMultipleData(&gatedefinitionstrings,&temp,             "md.massfluxatgate.definitionstring"); _assert_(temp==numgates);
+				iomodel->FetchMultipleData(&gatesegments,&gatesegments_M,NULL,&temp, "md.massfluxatgate.segments");       _assert_(temp==numgates);
+
+				for(j=0;j<numgates;j++){
+					output_definitions->AddObject(new Massfluxatgate<IssmDouble>(gatenames[j],StringToEnumx(gatedefinitionstrings[j]),gatesegments_M[j],gatesegments[j]));
+				}
+				/*Free ressources:*/
+				for(j=0;j<numgates;j++){
+					char*       string = gatenames[j];    xDelete<char>(string);
+					IssmDouble* gate   = gatesegments[j]; xDelete<IssmDouble>(gate);
+				}
+				xDelete<char*>(gatenames);
+				xDelete<IssmDouble*>(gatesegments);
+				xDelete<int>(gatesegments_M);
+				xDelete<char*>(gatedefinitionstrings);
+				/*}}}*/
+			}
+			else if (output_definition_enums[i]==MisfitEnum){
+				/*Deal with misfits: {{{*/
+				
+				/*misfit variables: */
+				int          nummisfits;
+				char**       misfit_name_s						= NULL;    
+				char**		 misfit_definitionstring_s		= NULL;    
+				char**       misfit_model_string_s			= NULL;
+				IssmDouble** misfit_observation_s			= NULL;
+				char**		 misfit_observation_string_s	= NULL;
+				int*         misfit_observation_M_s			= NULL;
+				int*         misfit_observation_N_s			= NULL;
+				int*         misfit_local_s					= NULL;
+				char**       misfit_timeinterpolation_s	= NULL;
+				IssmDouble** misfit_weights_s					= NULL;
+				int*         misfit_weights_M_s				= NULL;
+				int*         misfit_weights_N_s				= NULL;
+				char**       misfit_weights_string_s		= NULL;
+
+				/*Fetch name, model_string, observation, observation_string, etc ... (see src/m/classes/misfit.m): */
+				iomodel->FetchMultipleData(&misfit_name_s,&nummisfits,                                                        "md.misfit.name");
+				iomodel->FetchMultipleData(&misfit_definitionstring_s,&nummisfits,                                            "md.misfit.definitionstring");
+				iomodel->FetchMultipleData(&misfit_model_string_s,&nummisfits,                                                "md.misfit.model_string");
+				iomodel->FetchMultipleData(&misfit_observation_s,&misfit_observation_M_s,&misfit_observation_N_s,&nummisfits, "md.misfit.observation");
+				iomodel->FetchMultipleData(&misfit_observation_string_s,&nummisfits,                                          "md.misfit.observation_string");
+				iomodel->FetchMultipleData(&misfit_timeinterpolation_s,&nummisfits,                                           "md.misfit.timeinterpolation");
+				iomodel->FetchMultipleData(&misfit_local_s,&nummisfits,                                                       "md.misfit.local");
+				iomodel->FetchMultipleData(&misfit_weights_s,&misfit_weights_M_s,&misfit_weights_N_s,&nummisfits,             "md.misfit.weights");
+				iomodel->FetchMultipleData(&misfit_weights_string_s,&nummisfits,                                              "md.misfit.weights_string");
+
+				for(j=0;j<nummisfits;j++){
+
+					/*First create a misfit object for that specific string (misfit_model_string_s[j]):*/
+					output_definitions->AddObject(new Misfit(misfit_name_s[j],StringToEnumx(misfit_definitionstring_s[j]),StringToEnumx(misfit_model_string_s[j]),StringToEnumx(misfit_observation_string_s[j]),misfit_timeinterpolation_s[j],(bool)misfit_local_s[j],StringToEnumx(misfit_weights_string_s[j])));
+
+					/*Now, for this particular misfit object, make sure we plug into the elements: the observation, and the weights.*/
+					for(int k=0;k<elements->Size();k++){
+						Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(k));
+						element->InputCreate(misfit_observation_s[j], iomodel,misfit_observation_M_s[j],misfit_observation_N_s[j],1,StringToEnumx(misfit_observation_string_s[j]),7);
+						element->InputCreate(misfit_weights_s[j], iomodel,misfit_weights_M_s[j],misfit_weights_N_s[j],1,StringToEnumx(misfit_weights_string_s[j]),7);
+					}
+
+				}
+
+				/*Free ressources:*/
+				for(j=0;j<nummisfits;j++){
+					char* string=NULL;
+					IssmDouble* matrix = NULL;
+
+					string = misfit_definitionstring_s[j];		xDelete<char>(string);
+					string = misfit_observation_string_s[j];	xDelete<char>(string);
+					string = misfit_model_string_s[j];			xDelete<char>(string);
+					string = misfit_weights_string_s[j];		xDelete<char>(string);
+					string = misfit_name_s[j];    xDelete<char>(string);
+					string = misfit_timeinterpolation_s[j];    xDelete<char>(string);
+					matrix = misfit_observation_s[j]; xDelete<IssmDouble>(matrix);
+					matrix = misfit_weights_s[j]; xDelete<IssmDouble>(matrix);
+				}
+				xDelete<char*>(misfit_name_s);
+				xDelete<char*>(misfit_model_string_s);
+				xDelete<char*>(misfit_definitionstring_s);
+				xDelete<IssmDouble*>(misfit_observation_s);
+				xDelete<char*>(misfit_observation_string_s);
+				xDelete<int>(misfit_observation_M_s);
+				xDelete<int>(misfit_observation_N_s);
+				xDelete<int>(misfit_local_s);
+				xDelete<char*>(misfit_timeinterpolation_s);
+				xDelete<IssmDouble*>(misfit_weights_s);
+				xDelete<int>(misfit_weights_M_s);
+				xDelete<int>(misfit_weights_N_s);
+				xDelete<char*>(misfit_weights_string_s);
+				/*}}}*/
+			}
+			else if (output_definition_enums[i]==NodalvalueEnum){
+				/*Deal with nodal values: {{{*/
+				
+				/*nodal value variables: */
+				int          numnodalvalues;
+				char**       nodalvalue_name_s             = NULL;    
+				int*         nodalvalue_definitionenums_s             = NULL;    
+				int*         nodalvalue_model_enum_s        = NULL;
+				int*         nodalvalue_node_s = NULL;
+
+				/*Fetch name, model_enum, etc ... (see src/m/classes/nodalvalue.m): */
+				iomodel->FetchMultipleData(&nodalvalue_name_s,&numnodalvalues,            "md.nodalvalue.name");
+				iomodel->FetchMultipleData(&nodalvalue_definitionenums_s,&numnodalvalues, "md.nodalvalue.definitionenum");
+				iomodel->FetchMultipleData(&nodalvalue_model_enum_s,&numnodalvalues,      "md.nodalvalue.model_enum");
+				iomodel->FetchMultipleData(&nodalvalue_node_s,&numnodalvalues,            "md.nodalvalue.node");
+
+				for(j=0;j<numnodalvalues;j++){
+
+					/*First create a nodalvalue object for that specific enum (nodalvalue_model_enum_s[j]):*/
+					output_definitions->AddObject(new Nodalvalue(nodalvalue_name_s[j],nodalvalue_definitionenums_s[j],nodalvalue_model_enum_s[j],nodalvalue_node_s[j]-1)); //-1 because matlab to c indexing.
+				}
+					
+				/*Free ressources:*/
+				for(j=0;j<numnodalvalues;j++){
+					char* string=NULL;
+					IssmDouble* matrix = NULL;
+					string = nodalvalue_name_s[j];    xDelete<char>(string);
+				}
+				xDelete<char*>(nodalvalue_name_s);
+				xDelete<int>(nodalvalue_model_enum_s);
+				xDelete<int>(nodalvalue_definitionenums_s);
+				xDelete<int>(nodalvalue_node_s);
+				/*}}}*/
+			}
+			else if (output_definition_enums[i]==MassconEnum){
+				/*Deal with masscons: {{{*/
+
+				/*masscon variables: */
+				int          nummasscons;
+				char**       masscon_name_s					= NULL;    
+				int*         masscon_definitionenum_s		= NULL;    
+				IssmDouble** masscon_levelset_s           = NULL;
+				int*         masscon_levelset_M_s			= NULL;
+				int*         masscon_levelset_N_s			= NULL;
+
+				/*Fetch name and levelset, etc ... (see src/m/classes/masscon.m): */
+				iomodel->FetchMultipleData(&masscon_name_s,&nummasscons,                                                "md.masscon.name");
+				iomodel->FetchMultipleData(&masscon_definitionenum_s,&nummasscons,                                      "md.masscon.definitionenum");
+				iomodel->FetchMultipleData(&masscon_levelset_s,&masscon_levelset_M_s,&masscon_levelset_N_s,&nummasscons,"md.masscon.levelset");
+				for(j=0;j<nummasscons;j++){
+
+					/*Create a masscon object: */
+					output_definitions->AddObject(new Masscon(masscon_name_s[j],masscon_definitionenum_s[j],masscon_levelset_s[j],masscon_levelset_M_s[j]));
+
+				}
+
+				/*Free ressources:*/
+				for(j=0;j<nummasscons;j++){
+					char* string=NULL;
+					IssmDouble* matrix = NULL;
+
+					string = masscon_name_s[j];    xDelete<char>(string);
+					matrix = masscon_levelset_s[j]; xDelete<IssmDouble>(matrix);
+				}
+				xDelete<char*>(masscon_name_s);
+				xDelete<IssmDouble*>(masscon_levelset_s);
+				xDelete<int>(masscon_levelset_M_s);
+				xDelete<int>(masscon_levelset_N_s);
+				xDelete<int>(masscon_definitionenum_s);
+				/*}}}*/
+			}
+			else if (output_definition_enums[i]==MassconaxpbyEnum){
+				/*Deal with masscon combinations: {{{*/
+				
+				/*masscon variables: */
+				char**       masscon_name_s             = NULL;    
+				int*         masscon_definitionenum_s             = NULL;    
+				char**       masscon_namex_s             = NULL;    
+				char**       masscon_namey_s             = NULL;    
+				IssmDouble*  masscon_alpha_s     = NULL;
+				IssmDouble*  masscon_beta_s     = NULL;
+				int          num;
+
+				/*Fetch names and multiplicators, etc ... (see src/m/classes/masscon_axpby.m): */
+				iomodel->FetchMultipleData(&masscon_name_s,&num,          "md.massconaxpby.name");
+				iomodel->FetchMultipleData(&masscon_definitionenum_s,&num,"md.massconaxpby.definitionenum");
+				iomodel->FetchMultipleData(&masscon_namex_s,&num,         "md.massconaxpby.namex");
+				iomodel->FetchMultipleData(&masscon_namey_s,&num,         "md.massconaxpby.namey");
+				iomodel->FetchMultipleData(&masscon_alpha_s,&num,         "md.massconaxpby.alpha");
+				iomodel->FetchMultipleData(&masscon_beta_s,&num,          "md.massconaxpby.beta");
+				for(j=0;j<num;j++){
+
+					/*Create a masscon axpyb object: */
+					output_definitions->AddObject(new Massconaxpby(masscon_name_s[j],masscon_definitionenum_s[j],masscon_namex_s[j],masscon_namey_s[j],masscon_alpha_s[j],masscon_beta_s[j]));
+
+				}
+
+				/*Free ressources:*/
+				for(j=0;j<num;j++){
+					char* string=NULL;
+					string = masscon_name_s[j];    xDelete<char>(string);
+					string = masscon_namex_s[j];    xDelete<char>(string);
+					string = masscon_namey_s[j];    xDelete<char>(string);
+				}
+				xDelete<char*>(masscon_name_s);
+				xDelete<char*>(masscon_namex_s);
+				xDelete<char*>(masscon_namey_s);
+				xDelete<int>(masscon_definitionenum_s);
+				xDelete<IssmDouble>(masscon_alpha_s);
+				xDelete<IssmDouble>(masscon_beta_s);
+				/*}}}*/
+			}
+			else _error_("output definition enum " << output_definition_enums[i] << " not supported yet!");
+		}
+	}
+	parameters->AddObject(new DataSetParam(OutputdefinitionEnum,output_definitions));
+
+	/*Free ressources:*/
+	delete output_definitions;
+	xDelete<int>(output_definition_enums);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 21239)
@@ -0,0 +1,238 @@
+/*!\file: CreateParameters.cpp
+ * \brief general driver for creating parameters dataset
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "../MeshPartitionx/MeshPartitionx.h"
+#include "../ParseToolkitsOptionsx/ParseToolkitsOptionsx.h"
+#include "./ModelProcessorx.h"
+
+void CreateParameters(Parameters* parameters,IoModel* iomodel,char* rootpath,FILE* toolkitsoptionsfid,const int solution_type){
+
+	int         i,j,m,k;
+	int         numoutputs,materialtype,smb_model,basalforcing_model;
+	char**      requestedoutputs = NULL;
+	IssmDouble  time;
+
+	/*parameters for mass flux:*/
+	int          mass_flux_num_profiles     = 0;
+	bool         qmu_mass_flux_present      = false;
+	bool         autodiff_mass_flux_present = false;
+	bool         mass_flux_present          = false;
+	IssmDouble **array                      = NULL;
+	int         *mdims_array                = NULL;
+	int         *ndims_array                = NULL;
+	IssmDouble  *temp_matrix                = NULL;
+	int          temp_m,temp_n;
+	IssmDouble  *matrix                     = NULL;
+	int          count;
+
+	IssmDouble *temp = NULL;
+	IssmDouble  yts;
+	int         N,M;
+
+	/*Copy some constants from iomodel */
+	parameters->AddObject(iomodel->CopyConstantObject("md.mesh.domain_type",DomainTypeEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.mesh.domain_dimension",DomainDimensionEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.settings.output_frequency",SettingsOutputFrequencyEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.settings.recording_frequency",SettingsRecordingFrequencyEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.constants.yts",ConstantsYtsEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.start_time",TimesteppingStartTimeEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.final_time",TimesteppingFinalTimeEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.time_adapt",TimesteppingTimeAdaptEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.time_step",TimesteppingTimeStepEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.cfl_coefficient",TimesteppingCflCoefficientEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.interp_forcings",TimesteppingInterpForcingsEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.settings.lowmem",SettingsLowmemEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.debug.profiling",DebugProfilingEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.mesh.average_vertex_connectivity",MeshAverageVertexConnectivityEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.settings.waitonlock",SettingsWaitonlockEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.mesh.numberofelements",MeshNumberofelementsEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.mesh.numberofvertices",MeshNumberofverticesEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.settings.results_on_nodes",SettingsResultsOnNodesEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.settings.io_gather",SettingsIoGatherEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.isautodiff",AutodiffIsautodiffEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.qmu.isdakota",QmuIsdakotaEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.inversion.iscontrol",InversionIscontrolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.inversion.type",InversionTypeEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.calving.law",CalvingLawEnum));
+	{/*This is specific to ice...*/
+		parameters->AddObject(iomodel->CopyConstantObject("md.mesh.elementtype",MeshElementtypeEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.steadystate.reltol",SteadystateReltolEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.steadystate.maxiter",SteadystateMaxiterEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.constants.referencetemperature",ConstantsReferencetemperatureEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.groundingline.migration",GroundinglineMigrationEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isstressbalance",TransientIsstressbalanceEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.ismasstransport",TransientIsmasstransportEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.issmb",TransientIssmbEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isthermal",TransientIsthermalEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isgroundingline",TransientIsgroundinglineEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isgia",TransientIsgiaEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isdamageevolution",TransientIsdamageevolutionEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.ishydrology",TransientIshydrologyEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.ismovingfront",TransientIsmovingfrontEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isslr",TransientIsslrEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.iscoupler",TransientIscouplerEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.materials.rheology_law",MaterialsRheologyLawEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.gia.cross_section_shape",GiaCrossSectionShapeEnum));
+
+		/*For stress balance only*/
+		parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isFS",FlowequationIsFSEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.rift_penalty_threshold",StressbalanceRiftPenaltyThresholdEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.maxiter",StressbalanceMaxiterEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.restol",StressbalanceRestolEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.reltol",StressbalanceReltolEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.abstol",StressbalanceAbstolEnum));
+		if(iomodel->domaintype==Domain3DEnum)
+		 parameters->AddObject(iomodel->CopyConstantObject("md.mesh.numberoflayers",MeshNumberoflayersEnum));
+	}
+
+	
+	/*Basal forcing parameters*/
+	parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.model",BasalforcingsEnum));
+	iomodel->FindConstant(&basalforcing_model,"md.basalforcings.model");
+	switch(basalforcing_model){
+		case FloatingMeltRateEnum:
+			/*Nothing to add to parameters*/
+			break;
+		case LinearFloatingMeltRateEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.deepwater_melting_rate",BasalforcingsDeepwaterMeltingRateEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.deepwater_elevation",BasalforcingsDeepwaterElevationEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.upperwater_elevation",BasalforcingsUpperwaterElevationEnum));
+			break;
+		case MismipFloatingMeltRateEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.threshold_thickness",BasalforcingsThresholdThicknessEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.upperdepth_melt",BasalforcingsUpperdepthMeltEnum));
+			break;
+		case MantlePlumeGeothermalFluxEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.mantleconductivity",BasalforcingsMantleconductivityEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.nusselt",BasalforcingsNusseltEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.dtbg",BasalforcingsDtbgEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.plumeradius",BasalforcingsPlumeradiusEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.topplumedepth",BasalforcingsTopplumedepthEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.bottomplumedepth",BasalforcingsBottomplumedepthEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.plumex",BasalforcingsPlumexEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.plumey",BasalforcingsPlumeyEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.crustthickness",BasalforcingsCrustthicknessEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.uppercrustthickness",BasalforcingsUppercrustthicknessEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.uppercrustheat",BasalforcingsUppercrustheatEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.lowercrustheat",BasalforcingsLowercrustheatEnum));
+			break;
+		default:
+			_error_("Basal forcing model "<<EnumToStringx(smb_model)<<" not supported yet");
+	}
+
+	/*some parameters that did not come with the iomodel: */
+	parameters->AddObject(new IntParam(SolutionTypeEnum,solution_type));
+
+	iomodel->FindConstant(&time,"md.timestepping.start_time");
+	parameters->AddObject(new DoubleParam(TimeEnum,time));  
+	parameters->AddObject(new IntParam(StepEnum,0));  
+
+	/*By default, save all results*/
+	parameters->AddObject(new BoolParam(SaveResultsEnum,true));
+
+	/*Requested outputs */
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.transient.requested_outputs");
+	parameters->AddObject(new IntParam(TransientNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(TransientRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.transient.requested_outputs");
+
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.steadystate.requested_outputs");
+	parameters->AddObject(new IntParam(SteadystateNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(SteadystateRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.steadystate.requested_outputs");
+
+	iomodel->FindConstant(&materialtype,"md.materials.type");
+	if(materialtype==MatdamageiceEnum){
+		iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.damage.requested_outputs");
+		parameters->AddObject(new IntParam(DamageEvolutionNumRequestedOutputsEnum,numoutputs));
+		if(numoutputs)parameters->AddObject(new StringArrayParam(DamageEvolutionRequestedOutputsEnum,requestedoutputs,numoutputs));
+		iomodel->DeleteData(&requestedoutputs,numoutputs,"md.damage.requested_outputs");
+	}
+
+	/*Deal with mass flux segments: {{{*/
+	iomodel->FetchData(&qmu_mass_flux_present,"md.qmu.mass_flux_segments_present");
+	iomodel->FetchData(&autodiff_mass_flux_present,"md.autodiff.mass_flux_segments_present");
+
+	if(qmu_mass_flux_present || autodiff_mass_flux_present)mass_flux_present=true;
+	else mass_flux_present=false;
+	parameters->AddObject(new BoolParam(MassFluxSegmentsPresentEnum,mass_flux_present));
+
+	if(mass_flux_present){
+
+		/*Fetch the mass flux segments necessary to compute the mass fluxes.  Build a DoubleMatArrayParam object out of them: */ 
+		iomodel->FetchData(&array,&mdims_array,&ndims_array,&mass_flux_num_profiles,"md.qmu.mass_flux_segments");
+		if(mass_flux_num_profiles==0)_error_("mass_flux_num_profiles is 0, when MassFlux computations were requested!");
+
+		/*Go through segments, and extract those that belong to this cpu: */
+		for(i=0;i<mass_flux_num_profiles;i++){
+			temp_matrix=array[i];
+			temp_m=mdims_array[i];
+			temp_n=ndims_array[i];
+			_assert_(temp_n==5);
+
+			m=0;
+			for(j=0;j<temp_m;j++){
+				if (  iomodel->my_elements[reCast<int>(*(temp_matrix+5*j+4))-1] )m++;
+			}
+			if(m){
+				matrix=xNewZeroInit<IssmDouble>(5*m);
+				count=0;
+				for(j=0;j<temp_m;j++){
+					if (iomodel->my_elements[reCast<int>(*(temp_matrix+5*j+4))-1]){
+						for(k=0;k<5;k++)*(matrix+5*count+k)=*(temp_matrix+5*j+k);
+						count++;
+					}
+				}
+			}
+			else{
+				matrix=NULL;
+			}
+
+			/*Assign: */
+			array[i]=matrix;
+			mdims_array[i]=m;
+			ndims_array[i]=5;
+
+			/*Free temporary matrix: */
+			xDelete<IssmDouble>(temp_matrix);
+		}
+
+		/*Ok, we have an array of segments, different on every cpu. Create a DoubleMatArrayParam object with it: */
+		parameters->AddObject(new DoubleMatArrayParam(MassFluxSegmentsEnum,array,mass_flux_num_profiles,mdims_array,ndims_array));
+
+		/*Free data: */
+		for(i=0;i<mass_flux_num_profiles;i++){
+			IssmDouble* matrix=array[i];
+			xDelete<IssmDouble>(matrix);
+		}
+		xDelete<int>(mdims_array); 
+		xDelete<int>(ndims_array);
+		xDelete<IssmDouble*>(array);
+	}
+	/*}}}*/
+
+	/*Before returning, create parameters in case we are running Qmu or control types runs: */
+	CreateParametersControl(parameters,iomodel,solution_type);
+
+	#ifdef _HAVE_DAKOTA_
+	CreateParametersDakota(parameters,iomodel,rootpath);
+	#endif
+
+	/*Now, deal with toolkits options, which need to be put into the parameters dataset: */
+	ParseToolkitsOptionsx(parameters,toolkitsoptionsfid);
+
+ 	#ifdef _HAVE_ADOLC_
+	CreateParametersAutodiff(parameters,iomodel);
+	#endif
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp	(revision 21239)
@@ -0,0 +1,53 @@
+/*!\file:  CreateSingleNodeToElementConnectivity.cpp
+ * \brief: create connectivity table
+ */ 
+
+#include "../../shared/shared.h"
+#include "../../shared/io/io.h"
+#include "../../classes/classes.h"
+#include "./ModelProcessorx.h"
+
+void CreateSingleNodeToElementConnectivity(IoModel* iomodel){
+
+	/*Intermediary*/
+	int vertexid;
+	int elementswidth;
+
+	/*output*/
+	int* connectivity=NULL;
+
+	/*Return if connectivity already present*/
+	if(iomodel->singlenodetoelementconnectivity) return;
+
+	/*Some checks if debugging*/
+	_assert_(iomodel->numberofvertices);
+	_assert_(iomodel->numberofelements);
+	_assert_(iomodel->my_elements);
+	_assert_(iomodel->elements);
+
+	/*Allocate ouput*/
+	connectivity=xNewZeroInit<int>(iomodel->numberofvertices);
+
+	/*Get element width*/
+	switch(iomodel->meshelementtype){
+		case TriaEnum:  elementswidth=3; break;
+		case PentaEnum: elementswidth=6; break;
+		case TetraEnum: elementswidth=4; break;
+		default:  _error_("mesh type "<<EnumToStringx(iomodel->domaintype)<<" not supported yet");
+	}
+
+	/*Create connectivity table*/
+	for(int i=0;i<iomodel->numberofelements;i++){
+		/*!! in parallel we do not want the vertex to be connected to an element that is not in its partition!!*/
+		if(iomodel->my_elements[i]){
+			for(int j=0;j<elementswidth;j++){
+				vertexid=iomodel->elements[elementswidth*i+j];
+				_assert_(vertexid>0 && vertexid-1<iomodel->numberofvertices);
+				connectivity[vertexid-1]=i+1;
+			}
+		}
+	}
+
+	/*Assign to iomodel*/
+	iomodel->singlenodetoelementconnectivity=connectivity;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp	(revision 21239)
@@ -0,0 +1,128 @@
+/*!\file: CreateParametersDakota.cpp
+ * \brief general driver for creating parameters dataset
+ */ 
+
+#include "../../../toolkits/toolkits.h"
+#include "../../../classes/classes.h"
+#include "../../../shared/shared.h"
+#include "../../MeshPartitionx/MeshPartitionx.h"
+#include "../ModelProcessorx.h"
+
+void CreateParametersDakota(Parameters* parameters,IoModel* iomodel,char* rootpath){
+
+	/*variable declarations*/
+	int          i;
+	int         *part                   = NULL;
+	double      *dpart                  = NULL;
+	char       **responsedescriptors    = NULL;
+	int          numresponsedescriptors;
+	char       **variabledescriptors    = NULL;
+	int          numvariabledescriptors;
+	char        *descriptor             = NULL;
+	double      *dakota_parameter       = NULL;
+
+	//qmu files
+	char *qmuinname  = NULL;
+	char *qmuerrname = NULL;
+	char *qmuoutname = NULL;
+
+	//descriptors:
+	char tag[50];
+
+	bool  dakota_analysis   = false;
+	char *name              = NULL;
+	int   numberofresponses;
+	int   nrows,ncols;
+
+	/*recover parameters: */
+	iomodel->FindConstant(&dakota_analysis,"md.qmu.isdakota");
+
+	if(dakota_analysis){
+
+		iomodel->FindConstant(&name,"md.miscellaneous.name");
+		iomodel->FindConstant(&numberofresponses,"md.qmu.numberofresponses");
+
+		/*name of qmu input, error and output files*/
+		qmuinname=xNew<char>((strlen(rootpath)+strlen(name)+strlen(".qmu.in")+1));
+		sprintf(qmuinname,"%s%s%s",rootpath,name,".qmu.in");
+		parameters->AddObject(new   StringParam(QmuInNameEnum,qmuinname));
+
+		qmuoutname=xNew<char>((strlen(rootpath)+strlen(name)+strlen(".qmu.out")+1));
+		sprintf(qmuoutname,"%s%s%s",rootpath,name,".qmu.out");
+		parameters->AddObject(new   StringParam(QmuOutNameEnum,qmuoutname));
+
+		qmuerrname=xNew<char>((strlen(rootpath)+strlen(name)+strlen(".qmu.err")+1));
+		sprintf(qmuerrname,"%s%s%s",rootpath,name,".qmu.err");
+		parameters->AddObject(new   StringParam(QmuErrNameEnum,qmuerrname));
+
+		/*Fetch variable descriptors*/
+		iomodel->FindConstant(&variabledescriptors,&numvariabledescriptors,"md.qmu.variabledescriptors");
+
+		/*Ok, we have all the variable descriptors. Build a parameter with it: */
+		parameters->AddObject(new StringArrayParam(QmuVariabledescriptorsEnum,variabledescriptors,numvariabledescriptors));
+
+		/*Fetch response descriptors*/
+		iomodel->FindConstant(&responsedescriptors,&numresponsedescriptors,"md.qmu.responsedescriptors");
+
+		/*Ok, we have all the response descriptors. Build a parameter with it: */
+		parameters->AddObject(new StringArrayParam(QmuResponsedescriptorsEnum,responsedescriptors,numresponsedescriptors));
+		parameters->AddObject(new    IntParam(QmuNumberofresponsesEnum,numberofresponses));
+
+		/*Deal with partitioning*/
+		/*partition vertices in iomodel->qmu_npart parts, unless a partition is already present: */
+		parameters->AddObject(iomodel->CopyConstantObject("md.qmu.numberofpartitions",QmuNumberofpartitionsEnum));
+		iomodel->FetchData(&dpart,NULL,NULL,"md.qmu.partition");
+		if(!dpart){
+			/*Partition elements and vertices and nodes: */
+			ElementsAndVerticesPartitioning(&iomodel->my_elements,&iomodel->my_vertices,iomodel);
+
+			dpart=xNew<double>(iomodel->numberofvertices);
+			for(i=0;i<iomodel->numberofvertices;i++)dpart[i]=iomodel->my_vertices[i];
+		}
+		parameters->AddObject(new DoubleVecParam(QmuPartitionEnum,dpart,iomodel->numberofvertices));
+
+		/*Deal with data needed because of qmu variables*/
+		for(i=0;i<numvariabledescriptors;i++){
+			if (strncmp(variabledescriptors[i],"scaled_",7)==0){
+				/*Ok, we are dealing with a variable that is distributed over nodes. Recover the name of the variable (ex: scaled_Thickness): */
+				sscanf(variabledescriptors[i],"scaled_%s",tag);
+
+				/*Get field name and input enum from tag*/
+				char* fieldname  = NULL;
+				int   param_enum = -1;
+				FieldAndEnumFromCode(&param_enum,&fieldname,tag);
+
+				/*Recover data: */
+				iomodel->FetchData(&dakota_parameter,&nrows,&ncols,fieldname);
+				if(nrows==iomodel->numberofvertices){
+					parameters->AddObject(new DoubleMatParam(param_enum,dakota_parameter,nrows,ncols));
+				}
+				else{
+					parameters->AddObject(new DoubleTransientMatParam(param_enum,dakota_parameter,nrows,ncols));
+				}
+				xDelete<double>(dakota_parameter);
+				xDelete<char>(fieldname);
+			}
+		}
+
+		/*clean-up*/
+		for(i=0;i<numresponsedescriptors;i++){
+			descriptor=responsedescriptors[i];
+			xDelete<char>(descriptor);
+		}
+		xDelete<char*>(responsedescriptors);
+		for(i=0;i<numvariabledescriptors;i++){
+			descriptor=variabledescriptors[i];
+			xDelete<char>(descriptor);
+		}
+		xDelete<char*>(variabledescriptors);
+		xDelete<int>(part);
+		xDelete<double>(dpart);
+		xDelete<char>(qmuinname);
+		xDelete<char>(qmuerrname);
+		xDelete<char>(qmuoutname);
+	}
+
+	/*Free data*/
+	xDelete<char>(name);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/Dakota/UpdateElementsAndMaterialsDakota.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/Dakota/UpdateElementsAndMaterialsDakota.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/Dakota/UpdateElementsAndMaterialsDakota.cpp	(revision 21239)
@@ -0,0 +1,18 @@
+/*
+ * UpdateElementsAndMaterialsControl:
+ */
+
+#include "../../../toolkits/toolkits.h"
+#include "../../../classes/classes.h"
+#include "../../../shared/shared.h"
+#include "../../MeshPartitionx/MeshPartitionx.h"
+#include "../ModelProcessorx.h"
+
+void	UpdateElementsAndMaterialsDakota(Elements* elements,Materials* materials, IoModel* iomodel){
+
+	/*recover parameters: */
+	bool dakota_analysis;
+	iomodel->FindConstant(&dakota_analysis,"md.qmu.isdakota");
+
+	if(dakota_analysis) iomodel->FetchDataToInput(elements,"md.geometry.hydrostatic_ratio",GeometryHydrostaticRatioEnum,0.);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/EdgesPartitioning.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/EdgesPartitioning.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/EdgesPartitioning.cpp	(revision 21239)
@@ -0,0 +1,40 @@
+/*!\file:  EdgesPartitioning.cpp
+ * \brief: partition elements and nodes and vertices
+ */ 
+
+#include <string.h>
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "./ModelProcessorx.h"
+
+void EdgesPartitioning(bool** pmy_edges,IoModel* iomodel){
+
+	/*Intermediaries*/
+	int elementnbe;
+
+	/*Get edges and elements*/
+	CreateEdges(iomodel);
+	_assert_(iomodel->elementtoedgeconnectivity);
+
+	/*Mesh dependent variables*/
+	switch(iomodel->meshelementtype){
+		case TriaEnum:  elementnbe = 3; break;
+		case TetraEnum: elementnbe = 6; break;
+		case PentaEnum: elementnbe = 9; break;
+		default: _error_("mesh dimension not supported yet");
+	}
+
+	/*output: */
+	bool* my_edges=xNewZeroInit<bool>(iomodel->numberofedges);
+
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			for(int j=0;j<elementnbe;j++){
+				my_edges[iomodel->elementtoedgeconnectivity[i*elementnbe+j]] = true;
+			}
+		}
+	}
+
+	/*Free data and assign output pointers */
+	*pmy_edges=my_edges;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp	(revision 21239)
@@ -0,0 +1,138 @@
+/*!\file:  ElementsAndVerticesPartitioning.cpp
+ * \brief: partition elements and nodes and vertices
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <string.h>
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "../MeshPartitionx/MeshPartitionx.h"
+#include "../ModelProcessorx/ModelProcessorx.h"
+
+void  ElementsAndVerticesPartitioning(bool** pmy_elements, int** pmy_vertices, IoModel* iomodel){
+
+	int i,j;
+
+	const int RIFTINFOSIZE = 12;
+	int numberofelements2d;
+	int numberofvertices2d;
+	int numlayers;
+	int numrifts;
+	int numvertex_pairing;
+
+	/*output: */
+	bool *my_elements = NULL;
+	int  *my_vertices = NULL;
+
+	/*intermediary: */
+	int        *epart          = NULL; //element partitioning.
+	int        *npart          = NULL; //node partitioning.
+	int         elements_width;        //number of columns in elements (2d->3, 3d->6)
+	int         el1,el2;
+	int        *elements2d     = NULL;
+	int        *vertex_pairing = NULL;
+	IssmDouble *riftinfo       = NULL;
+
+	/*Get my_rank:*/
+	int my_rank   = IssmComm::GetRank();
+	int num_procs = IssmComm::GetSize();
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&numrifts,"md.rifts.numrifts");
+
+	/*First, check that partitioning has not yet been carryed out. Just check whether my_elements pointers is not already assigned a value: */
+	if(*pmy_elements)return;
+
+	/*Number of vertices per elements, needed to correctly retrieve data: */
+	/*Determine parallel partitioning of elements: we use Metis for now. First load the data, then partition*/
+	switch(iomodel->meshelementtype){
+		case TriaEnum:
+			elements_width=3;
+			numberofelements2d = 0;
+			numberofvertices2d = 0;
+			numlayers          = 0;
+			break;
+		case TetraEnum:
+			elements_width=4;
+			numberofelements2d = 0;
+			numberofvertices2d = 0;
+			numlayers          = 0;
+			break;
+		case PentaEnum:
+			elements_width=6;
+			iomodel->FetchData(&elements2d,NULL,NULL,"md.mesh.elements2d");
+			iomodel->FindConstant(&numberofelements2d,"md.mesh.numberofelements2d");
+			iomodel->FindConstant(&numberofvertices2d,"md.mesh.numberofvertices2d");
+			iomodel->FindConstant(&numlayers,"md.mesh.numberoflayers");
+			break;
+		default:
+			_error_("mesh elements "<< EnumToStringx(iomodel->meshelementtype) <<" not supported yet");
+	}
+
+	MeshPartitionx(&epart,&npart,iomodel->numberofelements,iomodel->numberofvertices,iomodel->elements,numberofelements2d,numberofvertices2d,elements2d,numlayers,elements_width,iomodel->meshelementtype,num_procs);
+
+	/*Free elements2d: */
+	xDelete<int>(elements2d);
+
+	/*Deal with rifts, they have to be included into one partition only, not several: */
+	if(numrifts){
+		iomodel->FetchData(&riftinfo,&numrifts,NULL,"md.rifts.riftstruct");
+		for(i=0;i<numrifts;i++){
+			el1=reCast<int>(*(riftinfo+RIFTINFOSIZE*i+2))-1; //matlab indexing to c indexing
+			el2=reCast<int>(*(riftinfo+RIFTINFOSIZE*i+3))-1; //matlab indexing to c indexing
+			epart[el2]=epart[el1]; //ensures that this pair of elements will be in the same partition, as well as the corresponding vertices;
+		}
+		iomodel->DeleteData(riftinfo,"md.rifts.riftstruct");
+	}
+
+	/*Used later on: */
+	my_vertices=xNewZeroInit<int>(iomodel->numberofvertices);
+	my_elements=xNewZeroInit<bool>(iomodel->numberofelements);
+
+	/*Start figuring out, out of the partition, which elements belong to this cpu: */
+	for(i=0;i<iomodel->numberofelements;i++){
+
+		/*!All elements have been partitioned above, only deal with elements for this cpu: */
+		if(my_rank==epart[i]){ 
+			my_elements[i]=true;
+			/*Now that we are here, we can also start building the list of vertices belonging to this cpu partition: we use 
+			 *the  element index to do this. For each element n, we know index[n][0:2] holds the indices (matlab indexing) 
+			 into the vertices coordinates. If we start plugging 1 into my_vertices for each index[n][i] (i=0:2), then my_vertices 
+			 will hold which vertices belong to this partition*/
+			for(j=0;j<elements_width;j++){
+				my_vertices[iomodel->elements[elements_width*i+j]-1]=1;
+			}
+		}
+	}
+
+	/*We might have vertex_pairing in which case, some vertices have to be cloned:
+	 * penpair has 2 nodes that are poointing toward 2 vertices.
+	 * The 2 vertices must be in the same cpu as the penpair*/
+	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.stressbalance.vertex_pairing");
+	for(i=0;i<numvertex_pairing;i++){
+		if(my_vertices[vertex_pairing[2*i+0]-1] && !my_vertices[vertex_pairing[2*i+1]-1]){
+			my_vertices[vertex_pairing[2*i+1]-1]=2; //to know that these elements are not on the partition
+		}
+	}
+	xDelete<int>(vertex_pairing);
+	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.masstransport.vertex_pairing");
+	for(i=0;i<numvertex_pairing;i++){
+		if(my_vertices[vertex_pairing[2*i+0]-1] && !my_vertices[vertex_pairing[2*i+1]-1]){
+			my_vertices[vertex_pairing[2*i+1]-1]=2; //to know that these elements are not on the partition
+		}
+	}
+	xDelete<int>(vertex_pairing);
+
+	/*Free ressources:*/
+	xDelete<int>(npart);
+	xDelete<int>(epart);
+
+	/*Assign output pointers:*/
+	*pmy_elements=my_elements;
+	*pmy_vertices=my_vertices;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/FacesPartitioning.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/FacesPartitioning.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/FacesPartitioning.cpp	(revision 21239)
@@ -0,0 +1,47 @@
+/*!\file:  FacesPartitioning.cpp
+ * \brief: partition elements and nodes and vertices
+ */ 
+
+#include <string.h>
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "./ModelProcessorx.h"
+
+void FacesPartitioning(bool** pmy_faces,IoModel* iomodel){
+
+	/*Intermediaries*/
+	int elementnbf;
+
+	/*Get faces and elements*/
+	CreateFaces(iomodel);
+	_assert_(iomodel->elementtofaceconnectivity);
+
+	/*Mesh dependent variables*/
+	if(iomodel->domaintype==Domain2DhorizontalEnum){
+		elementnbf = 3;
+	}
+	else if(iomodel->domaintype==Domain2DverticalEnum){
+		elementnbf = 3;
+	}
+	else if(iomodel->domaintype==Domain3DEnum){
+		elementnbf = 5;
+	}
+	else{
+		_error_("mesh dimension not supported yet");
+	}
+	/*output: */
+	bool* my_faces=xNewZeroInit<bool>(iomodel->numberoffaces);
+
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			for(int j=0;j<elementnbf;j++){
+				_assert_(iomodel->elementtofaceconnectivity[i*elementnbf+j] >= 0);
+				_assert_(iomodel->elementtofaceconnectivity[i*elementnbf+j] <  iomodel->numberoffaces);
+				my_faces[iomodel->elementtofaceconnectivity[i*elementnbf+j]] = true;
+			}
+		}
+	}
+
+	/*Free data and assign output pointers */
+	*pmy_faces=my_faces;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 21239)
@@ -0,0 +1,102 @@
+/*!\file ModelProcessorx
+ * \brief: create datasets using input binary file and a set of requested analyses
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "./ModelProcessorx.h"
+
+void ModelProcessorx(Elements** pelements, Nodes** pnodes, Vertices** pvertices, Materials** pmaterials, Constraints** pconstraints, Loads** ploads, Parameters** pparameters,IoModel* iomodel,FILE* toolkitfile, char* rootpath,const int solution_enum,const int nummodels,const int* analysis_enum_list){
+
+	int   i,analysis_enum,verbose;
+
+	/*Initialize datasets*/
+	Elements    *elements    = new Elements();
+	Nodes       *nodes       = new Nodes();
+	Vertices    *vertices    = new Vertices();
+	Materials   *materials   = new Materials();
+	Constraints *constraints = new Constraints();
+	Loads       *loads       = new Loads();
+	Parameters  *parameters  = new Parameters();
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&verbose,"md.verbose");
+	SetVerbosityLevel(verbose);
+
+	if(VerboseMProcessor()) _printf0_("   starting model processor \n");
+
+	/*Partition Elements and Nodes*/
+	ElementsAndVerticesPartitioning(&iomodel->my_elements,&iomodel->my_vertices,iomodel);
+
+	/*Create elements, vertices and materials, independent of analysis_enum: */
+	CreateElementsVerticesAndMaterials(elements,vertices,materials,iomodel,nummodels);
+
+	/*Create Parameters*/
+	CreateParameters(parameters,iomodel,rootpath,toolkitfile,solution_enum);
+
+	for(i=0;i<nummodels;i++){
+
+		analysis_enum=analysis_enum_list[i];
+		parameters->AddObject(new IntParam(AnalysisCounterEnum,i));
+
+		if(VerboseMProcessor()) _printf0_("   creating datasets for analysis " << EnumToStringx(analysis_enum) << "\n");
+		Analysis* analysis = EnumToAnalysis(analysis_enum);
+		analysis->UpdateParameters(parameters,iomodel,solution_enum,analysis_enum);
+		analysis->CreateNodes(nodes,iomodel);
+		analysis->CreateConstraints(constraints,iomodel);
+		analysis->CreateLoads(loads,iomodel);
+		analysis->UpdateElements(elements,iomodel,i,analysis_enum);
+		delete analysis;
+
+
+		/* Update counters, because we have created more nodes, loads and
+		 * constraints, and ids for objects created in next call to CreateDataSets
+		 * will need to start at the end of the updated counters: */
+		if(nodes->Size()) iomodel->nodecounter = nodes->MaximumId();
+		iomodel->loadcounter       = loads->NumberOfLoads();
+		iomodel->constraintcounter = constraints->NumberOfConstraints();
+
+		/*Make sure nodecounter is at least 0 (if no node exists, maxid will be -1*/
+		_assert_(iomodel->nodecounter>=0);
+	}
+
+	/*Solution specific updates*/
+	UpdateElementsAndMaterialsControl(elements,materials,iomodel);
+	#ifdef _HAVE_DAKOTA_
+	UpdateElementsAndMaterialsDakota(elements,materials,iomodel);
+	#endif
+	if(solution_enum==TransientSolutionEnum){
+		UpdateElementsTransient(elements,parameters,iomodel,analysis_enum);
+	}
+
+	/*Output definitions dataset: */
+	CreateOutputDefinitions(elements,parameters,iomodel);
+
+	/* Sort datasets:
+	 * All our datasets are already ordered by ids. Set presort flag so that
+	 * later on, when sorting is requested on these datasets, it will not be
+	 * redone: */
+	elements->Presort();
+	nodes->Presort();
+	vertices->Presort();
+	loads->Presort();
+	materials->Presort();
+
+	constraints->Presort();
+	if(VerboseMProcessor()) _printf0_("   done with model processor \n");
+
+	/*Assign output pointers:*/
+	*pelements    = elements;
+	*pnodes       = nodes;
+	*pvertices    = vertices;
+	*pmaterials   = materials;
+	*pconstraints = constraints;
+	*ploads       = loads;
+	*pparameters  = parameters;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/ModelProcessorx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 21239)
@@ -0,0 +1,40 @@
+/* \file ModelProcessorx.h
+ * \brief  Header file for model processor
+ */
+
+#ifndef _MODEL_PROCESSORX_H_
+#define _MODEL_PROCESSORX_H_
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+void ModelProcessorx(Elements** pelements, Nodes** pnodes, Vertices** pvertices, Materials** pmaterials, Constraints** pconstraints, Loads** ploads, Parameters** pparameters,IoModel* iomodel,FILE* toolkitfile, char* rootpath,const int solution_type,const int nummodels,const int* analysis_type_listh);
+
+/*Creation of fem datasets: general drivers*/
+void CreateElementsVerticesAndMaterials(Elements* elements,Vertices* vertices,Materials* materials, IoModel* iomodel,const int nummodels);
+void CreateParameters(Parameters*parameters,IoModel* iomodel,char* rootpath,FILE* toolkitfile,const int solution_type);
+void CreateParametersAutodiff(Parameters* parameters,IoModel* iomodel);
+void CreateParametersControl(Parameters* parameters,IoModel* iomodel,int solution_type);
+void CreateParametersDakota(Parameters* parameters,IoModel* iomodel,char* rootpath);
+void CreateOutputDefinitions(Elements* elements, Parameters* parameters,IoModel* iomodel);
+void UpdateElementsAndMaterialsControl(Elements* elements,Materials* materials, IoModel* iomodel);
+void UpdateElementsAndMaterialsDakota(Elements* elements,Materials* materials, IoModel* iomodel);
+void UpdateElementsTransient(Elements* elements,Parameters* parameters,IoModel* iomodel,int analysis_type);
+void CreateNodes(Nodes*nodes, IoModel* iomodel,int analysis,int finite_element,int approximation=NoneApproximationEnum);
+
+/*partitioning: */
+void ElementsAndVerticesPartitioning(bool** pmy_elements, int** pmy_vertices, IoModel* iomodel);
+void NodesPartitioning(bool** pmy_nodes,bool* my_elements, int* my_vertices,  IoModel* iomodel, bool continuous);
+void FacesPartitioning(bool** pmy_faces,IoModel* iomodel);
+void EdgesPartitioning(bool** pmy_edges,IoModel* iomodel);
+
+/*Mesh properties*/
+void CreateEdges(IoModel* iomodel);
+void CreateFaces(IoModel* iomodel);
+void CreateFaces3d(IoModel* iomodel);
+void EdgeOnBoundaryFlags(bool** pflags,IoModel* iomodel);
+
+/*Connectivity*/
+void CreateSingleNodeToElementConnectivity(IoModel* iomodel);
+void CreateNumberNodeToElementConnectivity(IoModel* iomodel);
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/NodesPartitioning.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/NodesPartitioning.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/NodesPartitioning.cpp	(revision 21239)
@@ -0,0 +1,133 @@
+/*!\file:  NodesPartitioning.cpp
+ * \brief: partition elements and nodes and vertices
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <string.h>
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "../MeshPartitionx/MeshPartitionx.h"
+#include "../ModelProcessorx/ModelProcessorx.h"
+
+void  DiscontinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, int* my_vertices, IoModel* iomodel);
+void  ContinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, int* my_vertices, IoModel* iomodel);
+
+void  NodesPartitioning(bool** pmy_nodes,bool* my_elements, int* my_vertices, IoModel* iomodel, bool continuous){
+
+	if(continuous==true)
+		ContinuousGalerkinNodesPartitioning(pmy_nodes,my_elements, my_vertices, iomodel);
+	else
+		DiscontinuousGalerkinNodesPartitioning(pmy_nodes,my_elements, my_vertices, iomodel);
+}
+
+void  ContinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, int* my_vertices, IoModel* iomodel){
+
+	/*output: */
+	bool* my_nodes=xNew<bool>(iomodel->numberofvertices);
+	for(int i=0;i<iomodel->numberofvertices;i++) my_nodes[i]=(bool)my_vertices[i];
+
+	/*Assign output pointers:*/
+	*pmy_nodes=my_nodes;
+}
+
+void  DiscontinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, int* my_vertices, IoModel* iomodel){
+
+	/* Each element has it own nodes (as many as vertices) + additional nodes
+	 * from neighboring elements for each face. This yields to a very different
+	 * partition for the nodes and the vertices. The vertices are similar to
+	 * continuous galerkin, but the nodes partitioning involves faces, which
+	 * messes up sorting of ids. */
+
+	/*Intermediaries*/
+	int  i,i1,i2;
+	int  e1,e2;
+	int  pos;
+
+	/*Get faces and elements*/
+	CreateEdges(iomodel);
+
+	/*Build discontinuous node partitioning
+	 *  - there are three nodes per element (discontinous)
+	 *  - for each element present of each partition, its three nodes will be in this partition
+	 *  - the faces require the dofs of the 2 nodes of each elements sharing the face.
+	 *    if the 2 elements sharing the face are on 2 different cpus, we must duplicate
+	 *    the two nodes that are not on the cpus so that the face can access the dofs of
+	 *    all its 4 nodes
+	 */
+
+	/*Allocate*/
+	bool* my_nodes=xNewZeroInit<bool>(3*iomodel->numberofelements);
+
+	/*First: add all the nodes of all the elements belonging to this cpu*/
+	if(iomodel->domaintype==Domain2DhorizontalEnum || iomodel->domaintype==Domain2DverticalEnum){
+		for (i=0;i<iomodel->numberofelements;i++){
+			if (my_elements[i]){
+				my_nodes[3*i+0]=true;
+				my_nodes[3*i+1]=true;
+				my_nodes[3*i+2]=true;
+			}
+		}
+	}
+	else{
+		_error_("not implemented yet");
+	}
+
+	/*Second: add all missing nodes*/
+
+	/*Get faces and elements*/
+	CreateFaces(iomodel);
+
+	if(iomodel->domaintype==Domain2DhorizontalEnum){
+		/*!All elements have been partitioned above, only create elements for this CPU: */
+		for(int i=0;i<iomodel->numberoffaces;i++){
+
+			/*Get left and right elements*/
+			e1=iomodel->faces[4*i+2]-1; //faces are [node1 node2 elem1 elem2]
+			e2=iomodel->faces[4*i+3]-1; //faces are [node1 node2 elem1 elem2]
+
+			/* 1) If the element e1 is in the current partition
+			 * 2) and if the face of the element is shared by another element (internal face)
+			 * 3) and if this element is not in the same partition:
+			 * we must clone the nodes on this partition so that the loads (Numericalflux)
+			 * will have access to their properties (dofs,...)*/
+			if(my_elements[e1] && e2!=-2 && !my_elements[e2]){
+
+				/*1: Get vertices ids*/
+				i1=iomodel->faces[4*i+0];
+				i2=iomodel->faces[4*i+1];
+
+				/*2: Get the column where these ids are located in the index*/
+				pos=UNDEF;
+				for(int j=0;j<3;j++){
+					if(iomodel->elements[3*e2+j]==i1) pos=j;
+				}
+
+				/*3: We have the id of the elements and the position of the vertices in the index
+				 * we can now create the corresponding nodes:*/
+				if(pos==0){
+					my_nodes[e2*3+0]=true;
+					my_nodes[e2*3+2]=true;
+				}
+				else if(pos==1){
+					my_nodes[e2*3+1]=true;
+					my_nodes[e2*3+0]=true;
+				}
+				else if(pos==2){
+					my_nodes[e2*3+2]=true;
+					my_nodes[e2*3+1]=true;
+				}
+				else{
+					_error_("Problem in faces creation");
+				}
+			}
+		}
+	}
+
+	/*Free data and assign output pointers */
+	*pmy_nodes=my_nodes;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp	(revision 21239)
@@ -0,0 +1,19 @@
+/*
+ * UpdateElementsTransient:
+ */
+
+#include "../../../toolkits/toolkits.h"
+#include "../../../classes/classes.h"
+#include "../../../shared/shared.h"
+#include "../../MeshPartitionx/MeshPartitionx.h"
+#include "../ModelProcessorx.h"
+
+void	UpdateElementsTransient(Elements* elements, Parameters* parameters,IoModel* iomodel,int analysis_type){
+
+	bool isgroundingline;
+	parameters->FindParam(&isgroundingline,TransientIsgroundinglineEnum);
+
+	if(isgroundingline){
+		iomodel->FetchDataToInput(elements,"md.geometry.bed",BedEnum);
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/NodalValuex/NodalValuex.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/NodalValuex/NodalValuex.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/NodalValuex/NodalValuex.cpp	(revision 21239)
@@ -0,0 +1,42 @@
+/*!\file NodalValuex
+ * \brief: compute value at certain node
+ */
+
+#include "./NodalValuex.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void NodalValuex( IssmDouble* pnodalvalue, int natureofdataenum,Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters){
+
+	IssmDouble value;
+	int        index;
+	int        found,sumfound,cpu_found,cpu;
+
+	/*retrieve element we are interested in: */
+	parameters->FindParam(&index,IndexEnum);
+
+	/*This is the vertex id for which we want to collect the data. Go through elements, and for each 
+	 *element, figure out  if they hold the vertex, and the data. If so, return it: */
+	cpu_found=-1;
+	found=0;
+	
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		found=element->NodalValue(&value,index,natureofdataenum);
+		if(found){
+			cpu_found=IssmComm::GetRank();
+			break;
+		}
+	}
+
+	/*Broadcast whether we found the element: */
+	ISSM_MPI_Allreduce(&found,&sumfound,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
+	if(!sumfound)_error_("could not find element with vertex with id " << index << " to compute nodal value " << EnumToStringx(natureofdataenum));
+
+	/*Broadcast and plug into response: */
+	ISSM_MPI_Allreduce ( &cpu_found,&cpu,1,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
+	ISSM_MPI_Bcast(&value,1,ISSM_MPI_DOUBLE,cpu,IssmComm::GetComm()); 
+
+	*pnodalvalue=value;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/NodalValuex/NodalValuex.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/NodalValuex/NodalValuex.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/NodalValuex/NodalValuex.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  NodalValuex.h
+ * \brief header file for NodalValuex
+ */ 
+
+#ifndef _NODALVALUEX_H
+#define _NODALVALUEX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void NodalValuex( IssmDouble* pnodalvalue, int natureofdataenum,Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+
+#endif  /* _NODALVALUEX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/NodeConnectivityx/NodeConnectivityx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/NodeConnectivityx/NodeConnectivityx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/NodeConnectivityx/NodeConnectivityx.cpp	(revision 21239)
@@ -0,0 +1,73 @@
+/*!\file NodeConnectivityx
+ * \brief: compute node connectivity table, using elements connectivity table.
+ *
+ * For each node, we want to know how many elements are connected to this element, and which they are. 
+ * Given that the 2d meshes we create in ISSM are triangular for now, and they are delaunay conforming, 
+ * each triangle has a minimum angle of 30 degrees, which implies a connectivity <=6. We therefore return 
+ * a nods x 7 connectivity table, with the 7'th column giving us the number of elements connected to each 
+ * row node, and the first 6 columns giving us the elements numbers. 
+ * Amend that: sounds like some triangles get up to 9 connectivity. Take 10 to be on the safe side.
+ * In order to be compatible with matlab output, the connectivity table is given in matlab indexing (starts at 1).
+ */
+
+#include "./NodeConnectivityx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void	NodeConnectivityx(int** pconnectivity,int* pwidth,int* elements, int nels, int nods){
+
+	int i,j,n;
+	const int maxels=50;
+	const int width=maxels+1;
+
+	/*intermediary: */
+	int     node;
+	int     index;
+	int     num_elements;
+	int     already_plugged=0;
+	int element;
+
+	/*Allocate connectivity: */
+	int* connectivity=xNewZeroInit<int>(nods*width);
+
+	/*Go through all elements, and for each elements, plug into the connectivity, all the nodes. 
+	 * If nodes are already plugged into the connectivity, skip them.: */
+	for(n=0;n<nels;n++){
+
+		element=n+1; //matlab indexing
+
+		for(i=0;i<3;i++){
+
+			node=elements[n*3+i]; //already matlab indexed, elements comes directly from the workspace.
+			index=node-1;
+
+			num_elements=connectivity[width*index+maxels]; //retrieve number of elements already  plugged into the connectivity of this node.
+
+			already_plugged=0;
+			for(j=0;j<num_elements;j++){
+				if (element==*(connectivity+width*index+j)){
+					already_plugged=1;
+					break;
+				}
+			}
+			if(already_plugged)break;
+
+			/*this elements is not yet plugged  into the connectivity for this node, do it, and increase counter: */
+			connectivity[width*index+num_elements]=element;
+			connectivity[width*index+maxels]=num_elements+1;
+
+		}
+	}
+
+	/*Last check: is the number of elements on last column of the connectivity superior to maxels? If so, then error out and 
+	 * warn the user to increase the connectivity width: */
+	for(i=0;i<nods;i++){
+		if (*(connectivity+width*i+maxels)>maxels)
+		 _error_("max connectivity width reached (" << *(connectivity+width*i+maxels) << ")! increase width of connectivity table");
+	}
+
+	/*Assign output pointers: */
+	*pconnectivity=connectivity;
+	*pwidth=width;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/NodeConnectivityx/NodeConnectivityx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/NodeConnectivityx/NodeConnectivityx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/NodeConnectivityx/NodeConnectivityx.h	(revision 21239)
@@ -0,0 +1,11 @@
+/*!\file:  NodeConnectivityx.h
+ * \brief header file for node connectivity computation
+ */ 
+
+#ifndef _NODECONNECTIVITYX_H
+#define _NODECONNECTIVITYX_H
+
+/* local prototypes: */
+void	NodeConnectivityx(int** pconnectivity,int* pwidth,int* elements,int nels, int nods);
+
+#endif  /* _NODECONNECTIVITYX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/NodesDofx/NodesDofx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/NodesDofx/NodesDofx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/NodesDofx/NodesDofx.cpp	(revision 21239)
@@ -0,0 +1,31 @@
+/*!\file NodesDofx
+ * \brief: establish degrees of freedom for all nodes
+ */
+
+#include "./NodesDofx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void NodesDofx(Nodes* nodes, Parameters* parameters,int configuration_type){
+
+	/*Do we have any nodes for this analysis type? :*/
+	if(!nodes->NumberOfNodes(configuration_type)) return;
+
+	/*Do we really need to update dof indexings*/
+	if(!nodes->RequiresDofReindexing(configuration_type)) return;
+
+	if(VerboseModule()) _printf0_("   Renumbering degrees of freedom\n");
+
+	/*Ensure that only for each cpu, the partition border nodes only will be taken into account once 
+	 * across the cluster. To do so, we flag all the clone nodes: */
+	nodes->FlagClones(configuration_type);
+
+	/*Go through all nodes, and build degree of freedom lists. Each node gets a fixed number of dofs. When 
+	 *a  node has already been distributed dofs on one cpu, all other cpus with the same node cannot distribute it 
+	 *anymore. Use clone field to be sure of that: */
+	nodes->DistributeDofs(configuration_type,GsetEnum);
+	nodes->DistributeDofs(configuration_type,FsetEnum);
+	nodes->DistributeDofs(configuration_type,SsetEnum);
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/NodesDofx/NodesDofx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/NodesDofx/NodesDofx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/NodesDofx/NodesDofx.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  NodesDofx.h
+ * \brief header file for degree of freedoms distribution routines.
+ */ 
+
+#ifndef _NODESDOFX_H
+#define _NODESDOFX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void NodesDofx(Nodes* nodes, Parameters* parameters,int analysis_type);
+
+#endif  /* _NODESDOFX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/OutputDefinitionsResponsex/OutputDefinitionsResponsex.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/OutputDefinitionsResponsex/OutputDefinitionsResponsex.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/OutputDefinitionsResponsex/OutputDefinitionsResponsex.cpp	(revision 21239)
@@ -0,0 +1,64 @@
+/*!\file OutputDefinitionsResponsex
+ * \brief retrieve vector from inputs in elements
+ */
+
+#include "./OutputDefinitionsResponsex.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,const char* output_string){
+
+	/*Ok, go find the output definitions dataset in the parameters, where our responses are hiding: */
+	DataSet* output_definitions=((DataSetParam*)femmodel->parameters->FindParamObject(OutputdefinitionEnum))->value;
+
+	/*Now, go through the output definitions, and retrieve the object which corresponds to our requested response, output_string: */
+	for(int i=0;i<output_definitions->Size();i++){
+		Definition* definition=dynamic_cast<Definition*>(output_definitions->GetObjectByOffset(i));
+
+		char* name = definition->Name();
+		if(strcmp(name,output_string)==0){
+
+			/*This is the object that we have been chasing for. compute the response and return: */
+			IssmDouble return_value=definition->Response(femmodel);
+		
+			/*cleanup: */
+			xDelete<char>(name);
+
+			/*return:*/
+			return return_value;
+		}
+		xDelete<char>(name);
+	}
+	
+	/*If we are here, did not find the definition for this response, not good!: */
+	_error_("Could not find the response for output definition " << output_string << " because could not find the definition itself!");
+
+}
+
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum){
+
+	/*Ok, go find the output definitions dataset in the parameters, where our responses are hiding: */
+	DataSet* output_definitions=((DataSetParam*)femmodel->parameters->FindParamObject(OutputdefinitionEnum))->value;
+
+	/*Now, go through the output definitions, and retrieve the object which corresponds to our requested response, output_enum: */
+	for(int i=0;i<output_definitions->Size();i++){
+		
+		//Definition* definition=xDynamicCast<Definition*>(output_definitions->GetObjectByOffset(i));
+		Definition* definition=dynamic_cast<Definition*>(output_definitions->GetObjectByOffset(i));
+
+		int en = definition->DefinitionEnum();
+		if(en==output_enum){
+
+			/*This is the object that we have been chasing for. compute the response and return: */
+			IssmDouble return_value=definition->Response(femmodel);
+		
+			/*return:*/
+			return return_value;
+		}
+	}
+	
+	/*If we are here, did not find the definition for this response, not good!: */
+	_error_("Could not find the response for output definition " << output_enum << " because could not find the definition itself!");
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/OutputDefinitionsResponsex/OutputDefinitionsResponsex.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/OutputDefinitionsResponsex/OutputDefinitionsResponsex.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/OutputDefinitionsResponsex/OutputDefinitionsResponsex.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  OutputDefinitionsResponsexx.h
+*/ 
+
+#ifndef _OUTPUTDEFINITIONSRESPONSEXX_H
+#define _OUTPUTDEFINITIONSRESPONSEXX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,const char* output_string);
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum);
+
+#endif  /* _OUTPUTDEFINITIONSRESPONSEXX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/OutputResultsx/OutputResultsx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 21239)
@@ -0,0 +1,89 @@
+/*!\file:  OutputResultsx.cpp
+ * \brief: go through our finite elements, and see what results they have stored within. 
+ * Then output them into serialized patch arrays, and dump to disk.
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include "./OutputResultsx.h"
+#include "../../shared/io/io.h"
+#include "../../classes/classes.h"
+
+void OutputResultsx(FemModel* femmodel){
+
+	int         my_rank;
+	FILE       *fid                     = NULL;
+	char       *outputfilename          = NULL;
+	char        cpu_outputfilename[100];        //easier to convert an integer with sprintf
+	bool        io_gather;
+	int         solutiontype;
+	char*       solutiontypestring      = NULL;
+	bool        dakota_analysis         = false;
+
+	/*retrieve parameters: */
+	femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	if(dakota_analysis){
+		//no need to output anything, Dakota analysis has different outputs
+		return; 
+	}
+
+	/*Results do not include the type of solution being run	. In parallel, we output results to a filename, 
+	 *therefore, we need to include the solutiontype into the filename: */
+	if(my_rank==0){
+		femmodel->parameters->FindParam(&solutiontype,SolutionTypeEnum);
+		EnumToStringx(&solutiontypestring,solutiontype);
+		femmodel->results->AddResult(new GenericExternalResult<char*>(femmodel->results->Size()+1,SolutionTypeEnum,solutiontypestring));
+		xDelete<char>(solutiontypestring);
+	}
+
+	/*Now, open file for writing*/
+	_assert_(!femmodel->parameters->Exist(OutputFilePointerEnum));
+	femmodel->parameters->FindParam(&outputfilename,OutputFileNameEnum);
+	femmodel->parameters->FindParam(&io_gather,SettingsIoGatherEnum);
+
+#ifdef _HAVE_JAVASCRIPT_
+	femmodel->parameters->FindParam(&fid,OutputFilePointerEnum);
+#else
+
+	if(io_gather){
+		/*Just open the file for output on cpu 0. We are gathering the data on cpu 0 from all other cpus: */
+		if(my_rank==0) fid=pfopen0(outputfilename ,"ab+");
+	}
+	else{
+		/*We are opening different  files for output on all cpus. Append the  rank to the filename, and open: */
+		sprintf(cpu_outputfilename,"%s.%i",outputfilename,my_rank);
+		fid=pfopen(cpu_outputfilename ,"ab+");
+	}
+
+	/*Add file pointer in parameters for further calls to OutputResultsx: */
+	femmodel->parameters->SetParam(fid,OutputFilePointerEnum);
+#endif
+
+	/*Write results to disk: */
+	femmodel->results->Write(femmodel->parameters);
+
+	femmodel->parameters->Delete(OutputFilePointerEnum);
+
+	/*Delete and reinitialize results, in parallel: */
+	femmodel->results->clear();
+
+#ifndef _HAVE_JAVASCRIPT_
+	/*Close output file? :*/
+	if(io_gather){
+		if(my_rank==0) pfclose(fid,outputfilename);
+	}
+	else pfclose(fid,cpu_outputfilename);
+#endif
+
+	/*Clean up and return*/
+	xDelete<char>(outputfilename);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/OutputResultsx/OutputResultsx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/OutputResultsx/OutputResultsx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/OutputResultsx/OutputResultsx.h	(revision 21239)
@@ -0,0 +1,18 @@
+/*!\file:  OutputResultsx.h
+ * \brief header file for outputing results
+ */ 
+
+#ifndef _OUTPUTRESULTSX_H
+#define _OUTPUTRESULTSX_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../classes/classes.h"
+
+void OutputResultsx(FemModel* femmodel);
+
+#endif  /* _OUTPUTRESULTS_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.cpp	(revision 21239)
@@ -0,0 +1,124 @@
+/*!\file ParseToolkitsOptionsx
+ * * \brief: parse options present in a petsc file, and create petsc options 
+ * objects accordingly. This will be used to drive the behaviour of Toolkits for 
+ * each analysis type.
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <cstring>
+
+#include "./ParseToolkitsOptionsx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void ParseToolkitsOptionsx(Parameters* parameters,FILE* fid){
+
+	char line [1000];
+	int my_rank;
+	int i;
+
+	/*intermediary: */
+	IssmDouble* analyses=NULL;
+	char** strings=NULL;
+	int numanalyses;
+	char* string=NULL;
+	char* newstring=NULL;
+	char* catstring=NULL;
+	int   stringlength;
+
+	/*Get my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	if(my_rank==0){
+
+		/*Now, go through lines and figure out how many analyses we have: */
+		numanalyses=0;
+		while ( fgets(line, sizeof line, fid) ){
+			/*skip comments and empty lines: */
+			if ((line[0]=='%') || (line[0]=='\n') || (line[0]==' ') || (line[0]=='\t') || (line[0]=='\r'))continue;
+			/*ok, first time, we should get an analysis enum, starting with a +: */
+			if (line[0]=='+')numanalyses++;
+			else continue;
+		}
+
+		/*Now, allocate analyses and strings: */
+		analyses=xNew<IssmDouble>(numanalyses);
+		strings=xNew<char*>(numanalyses);
+		for(i=0;i<numanalyses;i++)strings[i]=NULL; 
+
+		/*Go back to beginning of file:*/
+		fseek(fid,0,SEEK_SET);
+		numanalyses=0;
+		while ( fgets(line, sizeof line, fid) ){
+
+			/*skip comments and empty lines: */
+			if ((line[0]=='%') || (line[0]=='\n') || (line[0]==' ') || (line[0]=='\t') || (line[0]=='\r'))continue;
+
+			/*Get rid of end of line: */
+			line[strlen(line)-1]='\0';
+
+			if (line[0]=='+'){ /*this is the analysis line: */
+				analyses[numanalyses]=StringToEnumx(&line[1]);  //skip the '+'
+				numanalyses++;
+			}
+			else{ /*this is an option corresponding to analysis numanalyses-1. Add it 
+			to the already existing options*/
+				if(strings[numanalyses-1]==NULL){
+					string=xNew<char>((strlen(line)+1)); 
+					xMemCpy<char>(string,line,(strlen(line)+1));
+
+					strings[numanalyses-1]=string;
+				}
+				else{
+					string=strings[numanalyses-1];
+					newstring=xNew<char>((strlen(line)+1));
+					xMemCpy<char>(newstring,line,(strlen(line)+1));
+
+					/*concatenate:*/
+					catstring=xNew<char>(strlen(string)+1+strlen(newstring)+1+1); //fit in a space " "
+					xMemCpy<char>(catstring,string,(strlen(string)+1));
+
+					strcat(catstring," ");
+					strcat(catstring,newstring);
+					strings[numanalyses-1]=catstring;
+					xDelete<char>(newstring);
+					xDelete<char>(string);
+				}
+			}
+		}
+	}
+
+	/*Ok, broadcast to other cpus: */
+	ISSM_MPI_Bcast(&numanalyses,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	if(my_rank!=0){
+		analyses=xNew<IssmDouble>(numanalyses);
+		strings=xNew<char*>(numanalyses);
+	}
+	ISSM_MPI_Bcast(analyses,numanalyses,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	for(i=0;i<numanalyses;i++){
+		char* string=strings[i];
+		if(my_rank==0){
+			if(string==NULL) _error_("PETSc options for analysis " << EnumToStringx(reCast<int>(analyses[i])) << " have been declared but were not found");
+		}
+		if(my_rank==0)stringlength=(strlen(string)+1)*sizeof(char);
+		ISSM_MPI_Bcast(&stringlength,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+		if(my_rank!=0)string=xNew<char>(stringlength);
+		ISSM_MPI_Bcast(string,stringlength,ISSM_MPI_CHAR,0,IssmComm::GetComm());
+		if(my_rank!=0)strings[i]=string;
+	}
+
+	/*Ok, out of strings and analyses and numanalyses, create parameters, and plug them into parameters container: */
+	parameters->AddObject(new StringArrayParam(ToolkitsOptionsStringsEnum,strings,numanalyses));
+	parameters->AddObject(new DoubleVecParam(ToolkitsOptionsAnalysesEnum,analyses,numanalyses));
+
+	/*Clean up and return*/
+	for(i=0;i<numanalyses;i++) xDelete<char>(strings[i]);
+	xDelete<char*>(strings);
+	xDelete<IssmDouble>(analyses);
+	return;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  ParseToolkitsOptionsx.h
+ * \brief header file for parsing petsc options file
+ */ 
+
+#ifndef _PARSEPETSCOPTIONSX_H
+#define _PARSEPETSCOPTIONSX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void ParseToolkitsOptionsx(Parameters* parameters, FILE* petscoptionsfid);
+
+#endif  /* _PARSEPETSCOPTIONSX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.cpp	(revision 21239)
@@ -0,0 +1,34 @@
+/*! \file  PointCloudFindNeighborsx.c
+ */
+
+#include "./PointCloudFindNeighborsx.h"
+
+int PointCloudFindNeighborsx(IssmSeqVec<IssmPDouble>** pflags,double* x, double* y, int nods, double mindistance,double multithread){
+
+	/*output: */
+	IssmSeqVec<IssmPDouble>* flags=NULL;
+	flags=new IssmSeqVec<IssmPDouble>(nods);
+
+	/*threading: */
+	int num=_NUMTHREADS_;
+	if(!multithread)num=1;
+
+	/*initialize thread parameters: */
+	PointCloudFindNeighborsThreadStruct gate;
+	gate.x           = x;
+	gate.y           = y;
+	gate.nods        = nods;
+	gate.mindistance = mindistance;
+	gate.flags       = flags;
+
+	/*launch the thread manager with InterpFromGridToMeshxt as a core: */
+	LaunchThread(PointCloudFindNeighborsxt,(void*)&gate,num);
+
+	/*Assemble vector: */
+	flags->Assemble();
+
+	/*Assign output pointers: */
+	*pflags=flags;
+
+	return 1;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.h	(revision 21239)
@@ -0,0 +1,27 @@
+/*
+	PointCloudFindNeighborsx.h
+*/
+
+#ifndef _POINTCLOUDFLAGNEIGHBORSX_H
+#define _POINTCLOUDFLAGNEIGHBORSX_H
+
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+int PointCloudFindNeighborsx(IssmSeqVec<IssmPDouble>** pflags,double* x, double* y, int nods, double mindistance,double multithread);
+
+/*threading: */
+typedef struct{
+
+	double* x;
+	double* y;
+	int nods;
+	double mindistance;
+	IssmSeqVec<IssmPDouble>* flags;
+
+} PointCloudFindNeighborsThreadStruct;
+
+void* PointCloudFindNeighborsxt(void* vPointCloudFindNeighborsThreadStruct);
+
+#endif /* _POINTCLOUDFLAGNEIGHBORSX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp	(revision 21239)
@@ -0,0 +1,78 @@
+/*!\file:  PointCloudFindNeighborst.cpp
+ * \brief  thread core for PointCloudFindNeighborst code
+ */ 
+
+#include "./PointCloudFindNeighborsx.h"
+#include "../../shared/shared.h"
+
+void* PointCloudFindNeighborsxt(void* vpthread_handle){
+
+	/*gate variables :*/
+	PointCloudFindNeighborsThreadStruct* gate=NULL;
+	pthread_handle* handle=NULL;
+	int     my_thread;
+	int     num_threads;
+	double* x;
+	double* y;
+	int     nods;
+	double  mindistance;
+	IssmSeqVec<IssmPDouble>*     flags;
+
+	/*recover handle and gate: */
+	handle=(pthread_handle*)vpthread_handle;
+	gate=(PointCloudFindNeighborsThreadStruct*)handle->gate;
+	my_thread=handle->id;
+	num_threads=handle->num;
+
+	/*recover parameters :*/
+	x=gate->x;
+	y=gate->y;
+	nods=gate->nods;
+	mindistance=gate->mindistance;
+	flags=gate->flags;
+
+	/*intermediary: */
+	int i,j;
+	int i0,i1;
+	double distance;
+	bool* already=NULL;
+
+	/*allocate: */
+	already=xNewZeroInit<bool>(nods);
+
+	/*partition loop across threads: */
+	PartitionRange(&i0,&i1,nods,num_threads,my_thread);
+
+	/*Loop over the nodes*/
+	for (i=i0;i<i1;i++){
+
+		/*display current iteration*/
+		if (my_thread==0 && fmod((double)i,(double)100)==0)
+		 _printf_("\r      loop progress: "<<setw(6)<<setprecision(2)<<double(i-i0)/double(i1-i0)*100<<"%   ");
+
+		distance=mindistance+100; //make sure initialization respects min distance criterion.
+		for (j=0;j<nods;j++){
+
+			/*skip himself: */
+			if (j==i)continue;
+			distance=sqrt(pow(x[i]-x[j],2)+ pow(y[i]-y[j],2));
+
+			if(distance<=mindistance){
+
+				/*insert value and go to the next point*/
+				if(!already[i]) flags->SetValue(i,1,INS_VAL);
+				if(!already[j]) flags->SetValue(j,2,INS_VAL);
+				already[i]=true;
+				already[j]=true;
+				break;
+			}
+		}
+	}
+	if (my_thread==0)
+	 _printf_("\r      loop progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+
+	/*Free ressources:*/
+	xDelete<bool>(already);
+
+	return NULL;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.cpp	(revision 21239)
@@ -0,0 +1,36 @@
+/*!\file PropagateFlagsFromConnectivityx
+ */
+
+#include "./PropagateFlagsFromConnectivityx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void RecursivePropagation(double* pool, double* connectivity,int index, double* flags);
+
+void PropagateFlagsFromConnectivityx( double* pool, double* connectivity,int index, double* flags){
+
+	/*Call recursive propagation routine: */
+	RecursivePropagation(pool, connectivity,index, flags);
+}
+
+void RecursivePropagation(double* pool, double* connectivity, int index, double* flags){
+
+	int i;
+	int newel;
+
+	/*if this element (index) belongs to the pool already, skip: */
+	if(pool[index-1])return;
+
+	/*if this element does not belong to the flags set, skip: */
+	if(flags[index-1]==0)return;
+
+	/*put this element (index), which belongs to the flags, into the pool: */
+	pool[index-1]=1;
+
+	/*now, propagate recursively using connectivity of this element: */
+	for(i=0;i<3;i++){
+		newel=(int)*(connectivity+(index-1)*3+i);
+		RecursivePropagation(pool, connectivity, newel, flags);
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.h	(revision 21239)
@@ -0,0 +1,12 @@
+/*!\file:  PropagateFlagsFromConnectivityx.h
+ */ 
+
+#ifndef _PROPAGATEFLAGSFROMCONNECTIVITYX_H
+#define _PROPAGATEFLAGSFROMCONNECTIVITYX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void PropagateFlagsFromConnectivityx( double* pool, double* connectivity,int index, double* flags);
+
+#endif  /* _PROPAGATEFLAGSFROMCONNECTIVITYX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Reduceloadx/Reduceloadx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Reduceloadx/Reduceloadx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Reduceloadx/Reduceloadx.cpp	(revision 21239)
@@ -0,0 +1,59 @@
+/*!\file Reduceloadx
+ * \brief reduce loads (wring out boundary conditions)
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Reduceloadx.h"
+#include "../../shared/io/io.h"
+
+void	Reduceloadx( Vector<IssmDouble>* pf, Matrix<IssmDouble>* Kfs, Vector<IssmDouble>* y_s,bool flag_ys0){
+
+	/*intermediary*/
+	Vector<IssmDouble>*     y_s0   = NULL;
+	Vector<IssmDouble>*     Kfsy_s = NULL;
+	int         Kfsm,Kfsn;
+	int         global_m,global_n;
+	bool        fromlocalsize = true;
+	bool        oldalloc  = false;
+
+	if(VerboseModule()) _printf0_("   Dirichlet lifting applied to load vector\n");
+
+	Kfs->GetSize(&global_m,&global_n);
+	if(pf && global_m*global_n){
+
+		/*Some checks in debugging mode*/
+		_assert_(y_s);
+
+		/*pf = pf - Kfs * y_s;*/
+		Kfs->GetLocalSize(&Kfsm,&Kfsn);
+		if(oldalloc)
+		 Kfsy_s=new Vector<IssmDouble>(Kfsm,fromlocalsize);
+		else
+		 Kfsy_s=new Vector<IssmDouble>(Kfsm,global_m);
+
+		if (flag_ys0){
+
+			/*Create y_s0, full of 0: */
+			y_s0=y_s->Duplicate();
+			y_s0->Set(0.0);
+			y_s0->Assemble();
+
+			Kfs->MatMult(y_s0,Kfsy_s);
+		}
+		else{
+			Kfs->MatMult(y_s,Kfsy_s);
+		}
+
+		pf->AXPY(Kfsy_s,-1.);
+	}
+
+	/*Free ressources and return*/
+	delete y_s0;
+	delete Kfsy_s;
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Reduceloadx/Reduceloadx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Reduceloadx/Reduceloadx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Reduceloadx/Reduceloadx.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  Reduceloadx.h
+ * \brief reduce loads (wring out boundary conditions)
+ */ 
+
+#ifndef _REDUCELOADX_H
+#define _REDUCELOADX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void	Reduceloadx( Vector<IssmDouble>* pf, Matrix<IssmDouble>* Kfs, Vector<IssmDouble>* ys,bool flag_ys0=false);
+
+#endif  /* _REDUCELOADX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp	(revision 21239)
@@ -0,0 +1,66 @@
+/*!\file Reducevectorgtofx
+ * \brief reduce petsc vector from g set to s set (free dofs), using the nodeset partitioning 
+ * vectors.
+ */
+
+#include "./Reducevectorgtofx.h"
+
+void Reducevectorgtofx(Vector<IssmDouble>** puf, Vector<IssmDouble>* ug, Nodes* nodes,Parameters* parameters){
+
+	/*output: */
+	Vector<IssmDouble>* uf=NULL;
+
+	/*variables: */
+	int         configuration_type;
+	int         fsize;
+	IssmDouble *ug_serial = NULL;
+	bool        oldalloc  = false;
+
+	if(VerboseModule()) _printf0_("   Reduce vector from g to f set\n");
+
+	/*first figure out fsize: */
+	parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	fsize=nodes->NumberOfDofs(configuration_type,FsetEnum);
+
+	int    analysis_type;
+	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+	int flocalsize = nodes->NumberOfDofsLocal(analysis_type,FsetEnum);
+
+	if(fsize==0){
+		uf=NULL;
+	}
+	else{
+		/*allocate: */
+		if(oldalloc)
+		 uf=new Vector<IssmDouble>(fsize);
+		else
+		 uf=new Vector<IssmDouble>(flocalsize,fsize);
+
+		if(nodes->NumberOfNodes(configuration_type)){ 
+
+			/*serialize ug, so nodes can index into it: */
+			ug_serial=ug->ToMPISerial();
+
+			/*Go through all nodes, and ask them to retrieve values from ug, and plug them into uf: */
+			for(int i=0;i<nodes->Size();i++){
+
+				Node* node=(Node*)nodes->GetObjectByOffset(i);
+
+				/*Check that this node corresponds to our analysis currently being carried out: */
+				if (node->InAnalysis(configuration_type)){
+
+					/*For this object, reduce values for enum set Fset: */
+					node->VecReduce(uf,ug_serial,FsetEnum);
+				}
+			}
+		}
+		/*Assemble vector: */
+		uf->Assemble();
+	}
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(ug_serial);
+
+	/*Assign output pointers:*/
+	*puf=uf;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  Reducevectorgtofx.h
+ * \brief reduce petsc vector from g set to f set (free dofs), using the nodeset partitioning 
+ * vectors.
+ */ 
+
+#ifndef _REDUCEVECTORGTOFX_H
+#define _REDUCEVECTORGTOFX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void Reducevectorgtofx(Vector<IssmDouble>** puf, Vector<IssmDouble>* ug, Nodes* nodes,Parameters* parameters);
+
+#endif  /* _REDUCEVECTORGTOFX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ResetConstraintsx/ResetConstraintsx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ResetConstraintsx/ResetConstraintsx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ResetConstraintsx/ResetConstraintsx.cpp	(revision 21239)
@@ -0,0 +1,40 @@
+/*!\file ResetConstraintsx
+ * \brief: reset thermal penalties
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./ResetConstraintsx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../ConstraintsStatex/ConstraintsStatex.h"
+
+void ResetConstraintsx(FemModel* femmodel){
+
+	/*Display message*/
+	if(VerboseModule()) _printf0_("   Resetting penalties\n");
+
+	/*recover parameters: */
+	int analysis_type;
+	femmodel->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	/*Deal with rift first*/
+	if(RiftIsPresent(femmodel->loads,analysis_type)){
+		_error_("rift constraints reset not supported yet!");
+	}
+
+	/*Reset pengrid to inactive mode*/
+	for(int i=0;i<femmodel->loads->Size();i++){
+		Load* load=(Load*)femmodel->loads->GetObjectByOffset(i);
+		if(load->InAnalysis(analysis_type)){
+			if(load->ObjectEnum()==PengridEnum){
+				Pengrid* pengrid=(Pengrid*)load;
+				pengrid->ResetConstraint();
+			}
+		}
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ResetConstraintsx/ResetConstraintsx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ResetConstraintsx/ResetConstraintsx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ResetConstraintsx/ResetConstraintsx.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  ResetConstraintsx.h
+ * \brief header file for penalty constraints module
+ */ 
+
+#ifndef _RESETCONSTRAINTSX_H
+#define _RESETCONSTRAINTSX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void ResetConstraintsx(FemModel* femmodel);
+
+#endif  /* _RESETCONSTRAINTSX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ResetFSBasalBoundaryConditionx/ResetFSBasalBoundaryConditionx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ResetFSBasalBoundaryConditionx/ResetFSBasalBoundaryConditionx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ResetFSBasalBoundaryConditionx/ResetFSBasalBoundaryConditionx.cpp	(revision 21239)
@@ -0,0 +1,18 @@
+/*!\file ResetFSBasalBoundaryConditionx
+ * \brief: reset coordinate system for full-FS: tangential to the bedrock
+ */
+
+#include "./ResetFSBasalBoundaryConditionx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void ResetFSBasalBoundaryConditionx(Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads,Materials* materials,Parameters* parameters){
+
+	Element *element = NULL;
+
+	for (int i=0;i<elements->Size();i++){
+		element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		element->ResetFSBasalBoundaryCondition();
+	}
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ResetFSBasalBoundaryConditionx/ResetFSBasalBoundaryConditionx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ResetFSBasalBoundaryConditionx/ResetFSBasalBoundaryConditionx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ResetFSBasalBoundaryConditionx/ResetFSBasalBoundaryConditionx.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  ResetFSBasalBoundaryConditionx.h
+ * \brief header file for reset coordinate system module
+ */ 
+
+#ifndef _RESETFSBASALBOUNDARYCONDITIONX_H
+#define _RESETFSBASALBOUNDARYCONDITIONX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void ResetFSBasalBoundaryConditionx(Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads,Materials* materials,  Parameters* parameters); 
+
+#endif  /* _RESETFSBASALBOUNDARYCONDITIONX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/RheologyBAbsGradientx/RheologyBAbsGradientx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/RheologyBAbsGradientx/RheologyBAbsGradientx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/RheologyBAbsGradientx/RheologyBAbsGradientx.cpp	(revision 21239)
@@ -0,0 +1,79 @@
+/*!\file RheologyBAbsGradientx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./RheologyBAbsGradientx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void RheologyBAbsGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		J+=RheologyBAbsGradient(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble RheologyBAbsGradient(Element* element){
+
+	int         domaintype,numcomponents;
+	IssmDouble  Jelem=0.;
+	IssmDouble  misfit,Jdet;
+	IssmDouble  dp[3],weight;
+	IssmDouble* xyz_list      = NULL;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/* Get node coordinates*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	Input* weights_input=element->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* rheologyb_input=element->GetInput(MaterialsRheologyBEnum);                  _assert_(rheologyb_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		/* Get Jacobian determinant: */
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,RheologyBAbsGradientEnum);
+		rheologyb_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+
+		/*Tikhonov regularization: J = 1/2 ((dp/dx)^2 + (dp/dy)^2) */ 
+		Jelem+=weight*1/2*(dp[0]*dp[0] + dp[1]*dp[1])*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/RheologyBAbsGradientx/RheologyBAbsGradientx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/RheologyBAbsGradientx/RheologyBAbsGradientx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/RheologyBAbsGradientx/RheologyBAbsGradientx.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  RheologyBAbsGradientx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _RHEOLOGYBGRADIENTX_H
+#define _RHEOLOGYBGRADIENTX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void RheologyBAbsGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble RheologyBAbsGradient(Element* element);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.cpp	(revision 21239)
@@ -0,0 +1,86 @@
+/*!\file RheologyBbarAbsGradientx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./RheologyBbarAbsGradientx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void RheologyBbarAbsGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		J+=RheologyBbarAbsGradient(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble RheologyBbarAbsGradient(Element* element){
+
+	int         domaintype,numcomponents;
+	IssmDouble  Jelem=0.;
+	IssmDouble  misfit,Jdet;
+	IssmDouble  dp[2],weight;
+	IssmDouble* xyz_list      = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnBase()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn basal element*/
+	Element* basalelement = element->SpawnBasalElement();
+
+	/* Get node coordinates*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	Input* weights_input=basalelement->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* rheologyb_input=basalelement->GetInput(MaterialsRheologyBbarEnum);                  _assert_(rheologyb_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		/* Get Jacobian determinant: */
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,RheologyBbarAbsGradientEnum);
+		rheologyb_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+
+		/*Tikhonov regularization: J = 1/2 ((dp/dx)^2 + (dp/dy)^2) */ 
+		Jelem+=weight*1/2*(dp[0]*dp[0] + dp[1]*dp[1])*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  RheologyBbarAbsGradientx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _RHEOLOGYBBARGRADIENTX_H
+#define _RHEOLOGYBBARGRADIENTX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void RheologyBbarAbsGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble RheologyBbarAbsGradient(Element* element);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Scotchx/Scotchx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Scotchx/Scotchx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Scotchx/Scotchx.cpp	(revision 21239)
@@ -0,0 +1,344 @@
+/* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS
+**
+** This file is part of the Scotch software package for static mapping,
+** graph partitioning and sparse matrix ordering.
+**
+** This software is governed by the CeCILL-C license under French law
+** and abiding by the rules of distribution of free software. You can
+** use, modify and/or redistribute the software under the terms of the
+** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
+** URL: "http://www.cecill.info".
+** 
+** As a counterpart to the access to the source code and rights to copy,
+** modify and redistribute granted by the license, users are provided
+** only with a limited warranty and the software's author, the holder of
+** the economic rights, and the successive licensors have only limited
+** liability.
+** 
+** In this respect, the user's attention is drawn to the risks associated
+** with loading, using, modifying and/or developing or reproducing the
+** software by the user in light of its specific status of free software,
+** that may mean that it is complicated to manipulate, and that also
+** therefore means that it is reserved for developers and experienced
+** professionals having in-depth computer knowledge. Users are therefore
+** encouraged to load and test the software's suitability as regards
+** their requirements in conditions enabling the security of their
+** systems and/or data to be ensured and, more generally, to use and
+** operate it in the same conditions as regards security.
+** 
+** The fact that you are presently reading this means that you have had
+** knowledge of the CeCILL-C license and that you accept its terms.
+*/
+/************************************************************/
+/**                                                        **/
+/**   NAME       : gmap.c                                  **/
+/**                                                        **/
+/**   AUTHOR     : Francois PELLEGRINI                     **/
+/**                                                        **/
+/**   FUNCTION   : Part of a graph mapping software.       **/
+/**                This module contains the main function. **/
+/**                                                        **/
+/**   DATES      : # Version 0.0  : from : 05 jan 1993     **/
+/**                                 to     12 may 1993     **/
+/**                # Version 1.1  : from : 15 oct 1993     **/
+/**                                 to     15 oct 1993     **/
+/**                # Version 1.3  : from : 06 apr 1994     **/
+/**                                 to     18 may 1994     **/
+/**                # Version 2.0  : from : 06 jun 1994     **/
+/**                                 to     17 nov 1994     **/
+/**                # Version 2.1  : from : 07 apr 1995     **/
+/**                                 to     18 jun 1995     **/
+/**                # Version 3.0  : from : 01 jul 1995     **/
+/**                                 to     02 oct 1995     **/
+/**                # Version 3.1  : from : 07 nov 1995     **/
+/**                                 to     25 apr 1996     **/
+/**                # Version 3.2  : from : 24 sep 1996     **/
+/**                                 to     26 may 1998     **/
+/**                # Version 3.3  : from : 19 oct 1998     **/
+/**                                 to   : 30 mar 1999     **/
+/**                # Version 3.4  : from : 03 feb 2000     **/
+/**                                 to   : 03 feb 2000     **/
+/**                # Version 4.0  : from : 16 jan 2004     **/
+/**                                 to   : 27 dec 2004     **/
+/**                # Version 5.0  : from : 23 dec 2007     **/
+/**                                 to   : 18 jun 2008     **/
+/**                                                        **/
+/************************************************************/
+
+#include "./Scotchx.h"
+
+int
+gmapx (
+  int                 (**pmaptabi)[2],
+  int                 argcm,
+  char                *argvm[],
+  int                 nvi,
+  int                 ne2i,
+  int                 *ir,
+  int                 *jc,
+  int                 *vli,
+  int                 *vwi,
+  int                 *ewi,
+  char                archtyp[],
+  int                 nai,
+  int                 *api)
+{ 
+#ifdef _HAVE_SCOTCH_ //only works if Scotch library has been compiled in.
+
+  SCOTCH_Graph        grafdat;                    /* Source graph            */
+  SCOTCH_Num          grafflag;                   /* Source graph properties */
+  SCOTCH_Arch         archdat;                    /* Target architecture     */
+  SCOTCH_Strat        stradat;                    /* Mapping strategy        */
+  SCOTCH_Mapping      mapdat;                     /* Mapping data            */
+  Clock               runtime[2];                 /* Timing variables        */
+  SCOTCH_Num          nvert =0;
+  SCOTCH_Num          nedge2=0;
+  SCOTCH_Num*         adjir  =NULL;
+  SCOTCH_Num*         adjjc  =NULL;
+  SCOTCH_Num*         vertlab=NULL;
+  SCOTCH_Num*         vertwgt=NULL;
+  SCOTCH_Num*         edgewgt=NULL;
+  SCOTCH_Num          napar =0;
+  SCOTCH_Num*         archpar=NULL;
+  SCOTCH_Num          (*maptab)[2]=NULL;
+  int                 (*maptabi)[2]=NULL;
+  int                 flagval;
+  int                 i,j,k;
+
+/*  reset static variables from previous runs (jes, 4/27/10)  */
+
+  C_partNbr = 2;        /* Default number of parts     */
+  C_paraNum = 0;        /* Number of parameters        */
+  C_paraNbr = 0;        /* No parameters for mapping   */
+  C_fileNum = 0;        /* Number of file in arg list  */
+  C_fileNbr = 4;        /* Number of files for mapping */
+  for (i=0; i<C_FILENBR; i++) {
+    C_fileTab[i].name = "-";
+    C_fileTab[i].pntr = NULL;
+    if (i < 2)
+      C_fileTab[i].mode = "r";
+    else
+      C_fileTab[i].mode = "w";
+  }
+
+/*  convert input arguments to scotch data types  */
+
+  nvert =(SCOTCH_Num)nvi;
+  nedge2=(SCOTCH_Num)ne2i;
+
+  if (ir && jc) {
+    adjir = (SCOTCH_Num *) malloc(nedge2*sizeof(SCOTCH_Num));
+    for (i=0; i<nedge2; i++)
+      adjir[i]=(SCOTCH_Num)ir[i];
+    adjjc = (SCOTCH_Num *) malloc((nvert+1)*sizeof(SCOTCH_Num));
+    for (i=0; i<(nvert+1); i++)
+      adjjc[i]=(SCOTCH_Num)jc[i];
+  }
+
+  if (vli) {
+    vertlab = (SCOTCH_Num *) malloc(nvert*sizeof(SCOTCH_Num));
+    for (i=0; i<nvert; i++)
+      vertlab[i]=(SCOTCH_Num)vli[i];
+  }
+
+  if (vwi) {
+    vertwgt = (SCOTCH_Num *) malloc(nvert*sizeof(SCOTCH_Num));
+    for (i=0; i<nvert; i++)
+      vertwgt[i]=(SCOTCH_Num)vwi[i];
+  }
+
+  if (ewi) {
+    edgewgt = (SCOTCH_Num *) malloc(nedge2*sizeof(SCOTCH_Num));
+    for (i=0; i<nedge2; i++)
+      edgewgt[i]=(SCOTCH_Num)ewi[i];
+  }
+
+  napar =(SCOTCH_Num)nai;
+
+  if (api) {
+    archpar = (SCOTCH_Num *) malloc(nai*sizeof(SCOTCH_Num));
+    for (i=0; i<nai; i++)
+      archpar[i]=(SCOTCH_Num)api[i];
+  }
+
+/*  start scotch processing  */
+
+  flagval = C_FLAGNONE;                           /* Default behavior */
+  i = strlen (argvm[0]);
+  if ((i >= 5) && (strncmp (argvm[0] + i - 5, "gpart", 5) == 0)) {
+    flagval |= C_FLAGPART;
+    C_paraNbr = 1;                                /* One more parameter       */
+    C_fileNbr = 3;                                /* One less file to provide */
+    errorProg ("gpart");
+  }
+  else
+    errorProg ("gmap");
+
+  intRandResetStatic ();
+  intRandInit ();
+
+  if ((argcm >= 2) && (argvm[1][0] == '?')) {       /* If need for help */
+    usagePrint (stdout, C_usageList);
+    return     (0);
+  }
+
+  grafflag = 0;                                   /* Use vertex and edge weights  */
+  SCOTCH_stratInit (&stradat);                    /* Set default mapping strategy */
+
+  for (i = 0; i < C_FILENBR; i ++)                /* Set default stream pointers */
+    C_fileTab[i].pntr = (C_fileTab[i].mode[0] == 'r') ? stdin : stdout;
+  for (i = 1; i < argcm; i ++) {                   /* Loop for all option codes                        */
+    if ((argvm[i][0] != '-') || (argvm[i][1] == '\0') || (argvm[i][1] == '.')) { /* If found a file name */
+      if (C_paraNum < C_paraNbr) {                /* If number of parameters not reached              */
+        if ((C_partNbr = atoi (argvm[i])) < 1)     /* Get the number of parts                          */
+          errorPrint ("main: invalid number of parts (\"%s\")", argvm[i]);
+        C_paraNum ++;
+        continue;                                 /* Process the other parameters */
+      }
+      if (C_fileNum < C_fileNbr)                  /* A file name has been given */
+        C_fileTab[C_fileNum ++].name = argvm[i];
+      else
+        errorPrint ("main: too many file names given");
+    }
+    else {                                        /* If found an option name */
+      switch (argvm[i][1]) {
+        case 'H' :                                /* Give the usage message */
+        case 'h' :
+          usagePrint (stdout, C_usageList);
+          return     (0);
+        case 'M' :
+        case 'm' :
+          SCOTCH_stratExit (&stradat);
+          SCOTCH_stratInit (&stradat);
+          SCOTCH_stratGraphMap (&stradat, &argvm[i][2]);
+          break;
+        case 'S' :
+        case 's' :                                /* Source graph parameters */
+          for (j = 2; argvm[i][j] != '\0'; j ++) {
+            switch (argvm[i][j]) {
+              case 'E' :
+              case 'e' :
+                grafflag |= 2;                    /* Do not load edge weights */
+                break;
+              case 'V' :
+              case 'v' :
+                grafflag |= 1;                    /* Do not load vertex weights */
+                break;
+              default :
+                errorPrint ("main: invalid source graph option (\"%c\")", argvm[i][j]);
+            }
+          }
+          break;
+        case 'V' :
+          fprintf (stderr, "gmap/gpart, version %s - F. Pellegrini\n", SCOTCH_VERSION);
+          fprintf (stderr, "Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS, France\n");
+          fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n");
+          return  (0);
+        case 'v' :                                /* Output control info */
+          for (j = 2; argvm[i][j] != '\0'; j ++) {
+            switch (argvm[i][j]) {
+              case 'M' :
+              case 'm' :
+                flagval |= C_FLAGVERBMAP;
+                break;
+              case 'S' :
+              case 's' :
+                flagval |= C_FLAGVERBSTR;
+                break;
+              case 'T' :
+              case 't' :
+                flagval |= C_FLAGVERBTIM;
+                break;
+              default :
+                errorPrint ("main: unprocessed parameter \"%c\" in \"%s\"", argvm[i][j], argvm[i]);
+            }
+          }
+          break;
+        default :
+          errorPrint ("main: unprocessed option (\"%s\")", argvm[i]);
+      }
+    }
+  }
+  if ((flagval && C_FLAGPART) != 0) {              /* If program run as the partitioner            */
+    C_fileTab[3].name = C_fileTab[2].name;        /* Put provided file names at their right place */
+    C_fileTab[2].name = C_fileTab[1].name;
+    C_fileTab[1].name = "-";
+  }
+
+  fileBlockOpen (C_fileTab, C_FILENBR);           /* Open all files */
+
+  clockInit  (&runtime[0]);
+  clockStart (&runtime[0]);
+
+  SCOTCH_graphInit (&grafdat);                    /* Create graph structure         */
+  SCOTCH_graphLoad (&grafdat, C_filepntrsrcinp, -1, grafflag, nvert, nedge2, adjir, adjjc, vertlab, vertwgt, edgewgt); /* Read source graph */
+
+  SCOTCH_archInit (&archdat);                     /* Create architecture structure          */
+  if ((flagval & C_FLAGPART) != 0)                /* If program run as the partitioner      */
+    SCOTCH_archCmplt (&archdat, C_partNbr);       /* Create a complete graph of proper size */
+  else
+    SCOTCH_archLoad (&archdat, C_filepntrtgtinp, archtyp, napar, archpar); /* Read target architecture */
+
+  clockStop  (&runtime[0]);                       /* Get input time */
+  clockInit  (&runtime[1]);
+  clockStart (&runtime[1]);
+
+  SCOTCH_graphMapInit    (&grafdat, &mapdat, &archdat, NULL);
+  SCOTCH_graphMapCompute (&grafdat, &mapdat, &stradat); /* Perform mapping */
+
+  clockStop  (&runtime[1]);                       /* Get computation time */
+  clockStart (&runtime[0]);
+
+  SCOTCH_graphMapSave (&nvert, &maptab, &grafdat, &mapdat, C_filepntrmapout); /* Write mapping */
+
+/*  convert output arguments from scotch data types  */
+
+  if (maptab) {
+    *pmaptabi = (int (*)[2]) malloc(nvert*2*sizeof(int));
+    maptabi  = *pmaptabi;
+    for (j=0; j<2; j++)
+      for (i=0; i<nvert; i++)
+          maptabi[i][j]=(int)maptab[i][j];
+    free(maptab);
+  }
+
+  clockStop (&runtime[0]);                        /* Get output time */
+
+  if (flagval && C_FLAGVERBSTR) {
+    fprintf (C_filepntrlogout, "S\tStrat=");
+    SCOTCH_stratSave (&stradat, C_filepntrlogout);
+    putc ('\n', C_filepntrlogout);
+  }
+  if (flagval && C_FLAGVERBTIM) {
+    fprintf (C_filepntrlogout, "T\tMapping\t\t%g\nT\tI/O\t\t%g\nT\tTotal\t\t%g\n",
+             (double) clockVal (&runtime[1]),
+             (double) clockVal (&runtime[0]),
+             (double) clockVal (&runtime[0]) +
+             (double) clockVal (&runtime[1]));
+  }
+  if (flagval && C_FLAGVERBMAP)
+    SCOTCH_graphMapView (&grafdat, &mapdat, C_filepntrlogout);
+
+  fileBlockClose (C_fileTab, C_FILENBR);          /* Always close explicitely to end eventual (un)compression tasks */
+
+  SCOTCH_graphMapExit (&grafdat, &mapdat);
+  SCOTCH_graphExit    (&grafdat);
+  SCOTCH_stratExit    (&stradat);
+  SCOTCH_archExit     (&archdat);
+
+  if (archpar) free(archpar);
+  if (edgewgt) free(edgewgt);
+  if (vertwgt) free(vertwgt);
+  if (vertlab) free(vertlab);
+  if (adjjc) free(adjjc);
+  if (adjir) free(adjir);
+
+#ifdef COMMON_PTHREAD
+  pthread_exit ((void *) 0);                      /* Allow potential (un)compression tasks to complete */
+#endif /* COMMON_PTHREAD */
+  return (0);
+
+#else //#ifdef _HAVE_SCOTCH_ 
+  return(0);
+#endif
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Scotchx/Scotchx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Scotchx/Scotchx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Scotchx/Scotchx.h	(revision 21239)
@@ -0,0 +1,67 @@
+/*!\file:  Scotchxx.h
+ * \brief header file for Scotch partitioner
+ */ 
+
+#ifndef _SCOTCHX_H
+#define _SCOTCHX_H
+
+#undef __FUNCT__ 
+#define __FUNCT__  "Scotchx"
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include "../../classes/classes.h"
+
+#ifdef _HAVE_SCOTCH_ //only works if scotch library has been compiled in.
+
+	#define GMAP
+
+	#include "scotch_module.h"
+	#include "scotch_common.h"
+	#include "scotch.h"
+	#include "scotch_gmap.h"
+
+	/*
+	**  The static variables.
+	*/
+
+	static int                  C_partNbr = 2;        /* Default number of parts     */
+	static int                  C_paraNum = 0;        /* Number of parameters        */
+	static int                  C_paraNbr = 0;        /* No parameters for mapping   */
+	static int                  C_fileNum = 0;        /* Number of file in arg list  */
+	static int                  C_fileNbr = 4;        /* Number of files for mapping */
+	static File                 C_fileTab[C_FILENBR] = { /* File array               */
+								  { "-", NULL, "r" },
+								  { "-", NULL, "r" },
+								  { "-", NULL, "w" },
+								  { "-", NULL, "w" } };
+
+	static const char *         C_usageList[] = {     /* Usage */
+	  "gmap [<input source file> [<input target file> [<output mapping file> [<output log file>]]]] <options>",
+	  "gpart [<nparts>] [<input source file> [<output mapping file> [<output log file>]]] <options>",
+	  "  -h         : Display this help",
+	  "  -m<strat>  : Set mapping strategy (see user's manual)",
+	  "  -s<obj>    : Force unity weights on <obj>:",
+	  "                 e  : edges",
+	  "                 v  : vertices",
+	  "  -V         : Print program version and copyright",
+	  "  -v<verb>   : Set verbose mode to <verb>:",
+	  "                 m  : mapping information",
+	  "                 s  : strategy information",
+	  "                 t  : timing information",
+	  "",
+	  "See default strategy with option '-vs'",
+	  NULL };
+
+#endif
+
+/* local prototypes: */
+int gmapx ( int (**pmaptabi)[2], int argcm, char *argvm[], int nvi, int ne2i, int *ir, int *jc, int *vli, int *vwi, int *ewi, char archtyp[], int nai, int *api);
+
+#endif  /* _SCOTCHX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp	(revision 21239)
@@ -0,0 +1,100 @@
+/*!\file GetMaskOfIceVerticesLSMx 
+ * \brief: Return a mask for all the vertices determining whether the node should be active or not. 
+ */
+
+#include "./SetActiveNodesLSMx.h"
+
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../modules.h"
+
+void SetActiveNodesLSMx(FemModel* femmodel){/*{{{*/
+	/* activate/deactivate nodes for levelset method according to IceMaskNodeActivation */
+
+	/* intermediaries */
+	bool solvein2d=false;
+	int i,in,domaintype,analysis_type;
+	Elements* elements = femmodel->elements;
+
+	/* find parameters */
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+
+	for(i=0;i<elements->Size();i++){
+		Element    *element  = xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		int         numnodes = element->GetNumberOfNodes();
+		IssmDouble *mask     = xNew<IssmDouble>(numnodes);
+		// include switch for elements with multiple different sets of nodes
+		switch(element->GetElementType()){
+			case MINIEnum:case MINIcondensedEnum:
+			case TaylorHoodEnum:case XTaylorHoodEnum:case LATaylorHoodEnum:
+			case CrouzeixRaviartEnum:case LACrouzeixRaviartEnum:case OneLayerP4zEnum:{
+				Input* input=element->GetInput(IceMaskNodeActivationEnum);
+				if(!input) _error_("Input " << EnumToStringx(IceMaskNodeActivationEnum) << " not found in element");
+
+				/* Start looping on the number of vertices: */
+				Gauss* gauss=element->NewGauss();
+				for(int iv=0;iv<element->NumberofNodesVelocity();iv++){
+					gauss->GaussNode(element->VelocityInterpolation(),iv);
+					input->GetInputValue(&mask[iv],gauss);
+				}
+				for(int iv=0;iv<element->NumberofNodesPressure();iv++){
+					gauss->GaussNode(element->PressureInterpolation(),iv);
+					input->GetInputValue(&mask[element->NumberofNodesVelocity()+iv],gauss);
+				}
+				delete gauss;
+				break;
+			}
+			default:
+				element->GetInputListOnNodes(&mask[0],IceMaskNodeActivationEnum);
+				break;
+		}
+
+		for(in=0;in<numnodes;in++){
+			Node* node=element->GetNode(in);
+			if(mask[in]==1.){
+				node->Activate();
+			}
+			else {
+				node->Deactivate();
+			}
+		}
+
+		xDelete<IssmDouble>(mask);
+	}
+}/*}}}*/
+void GetMaskOfIceVerticesLSMx(FemModel* femmodel){/*{{{*/
+
+	/* Intermediaries */
+	int i;
+
+	/*Initialize vector with number of vertices*/
+	int numvertices=femmodel->vertices->NumberOfVertices();
+	Vector<IssmDouble>* vec_mask_ice=new Vector<IssmDouble>(numvertices); //vertices that have ice at next time step
+	/*Fill vector with values: */
+	for(i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		SetMaskOfIceElement(vec_mask_ice, element);
+	}
+
+	/*Assemble vector and serialize */
+	vec_mask_ice->Assemble();
+	IssmDouble* mask_ice=vec_mask_ice->ToMPISerial();
+	InputUpdateFromVectorx(femmodel,mask_ice,IceMaskNodeActivationEnum,VertexSIdEnum);
+
+	/*Clean up and return*/
+	delete vec_mask_ice;
+	xDelete<IssmDouble>(mask_ice);
+
+}/*}}}*/
+void SetMaskOfIceElement(Vector<IssmDouble>* vec_mask_ice, Element* element){/*{{{*/
+
+	/* Intermediaries */
+	int numvertices = element->GetNumberOfVertices();
+	
+	if(element->IsIceInElement()){
+		for(int i = 0;i<numvertices;i++){
+			vec_mask_ice->SetValue(element->vertices[i]->Sid(),1.,INS_VAL);
+		}
+	}
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  SetActiveNodesLSMx.h
+ * \brief header file for updating single point constraints  for next time step
+ */ 
+
+#ifndef _SETACTIVENODESLSMX_H
+#define _SETACTIVENODESLSMX_H
+
+#include "../../classes/classes.h"
+
+void SetActiveNodesLSMx(FemModel* femmodel);
+void GetMaskOfIceVerticesLSMx(FemModel* femmodel);
+void SetMaskOfIceElement(Vector<IssmDouble>* vec_mask_ice, Element* element);
+#endif  /* _UPDATESPCSX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.cpp	(revision 21239)
@@ -0,0 +1,33 @@
+/*!\file SetControlInputsFromVectorx
+ * \brief retrieve vector from inputs in elements
+ */
+
+#include "./SetControlInputsFromVectorx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void SetControlInputsFromVectorx(FemModel* femmodel,IssmDouble* vector){
+
+	int  num_controls;
+	int *control_type = NULL;
+
+	/*Retrieve some parameters*/
+	femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	femmodel->parameters->FindParam(&control_type,NULL,InversionControlParametersEnum);
+
+	for(int i=0;i<num_controls;i++){
+		for(int j=0;j<femmodel->elements->Size();j++){
+			Element* element=(Element*)femmodel->elements->GetObjectByOffset(j);
+			element->SetControlInputsFromVector(vector,control_type[i],i);
+		}
+	}
+
+	xDelete<int>(control_type);
+}
+
+void SetControlInputsFromVectorx(FemModel* femmodel,Vector<IssmDouble>* vector){
+
+	IssmDouble* serial_vector=vector->ToMPISerial();
+	SetControlInputsFromVectorx(femmodel,serial_vector);
+	xDelete<IssmDouble>(serial_vector);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  SetControlInputsFromVectorx.h
+ */ 
+
+#ifndef _SETCONTROLINPUTSXFROMVECTOR_H
+#define _SETCONTROLINPUTSXFROMVECTOR_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void SetControlInputsFromVectorx(FemModel* femmodel,Vector<IssmDouble>* vector);
+void SetControlInputsFromVectorx(FemModel* femmodel,IssmDouble* vector);
+
+#endif 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Shp2Kmlx/Shp2Kmlx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Shp2Kmlx/Shp2Kmlx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Shp2Kmlx/Shp2Kmlx.cpp	(revision 21239)
@@ -0,0 +1,594 @@
+/*!\file Shp2Kmlx
+ * \brief shp to kml conversion routines.
+ */
+
+#include "./Shp2Kmlx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../kml/kmlobjects.h"
+
+int Shp2Kmlx(char* filshp,char* filkml,int sgn){
+
+	#ifdef _HAVE_SHAPELIB_ //only works if Shapelib library has been compiled in.
+
+	double  cm,sp;
+	Xy2lldef(&cm,&sp,sgn);
+
+	return(Shp2Kmlx(filshp,filkml,sgn,cm,sp));
+
+	#else //ifdef _HAVE_SHAPELIB_
+	return 0;
+	#endif
+}
+
+int Shp2Kmlx(char* filshp,char* filkml,int sgn,double cm,double sp){
+
+	#ifdef _HAVE_SHAPELIB_ //only works if Shapelib library has been compiled in.
+
+	int     i,j,k,iret=0;
+	int     lwidth=1;
+	double  popac=0.50;
+	int     nshape,ncoord;
+	double  cpsum;
+	int     *pstype = NULL, *pnpart=NULL,**ppstrt=NULL,**pptype=NULL,*pnvert=NULL;
+	double **pshapx = NULL,**pshapy=NULL,**pshapz=NULL,**pshapm=NULL;
+	double  *lat    = NULL, *lon=NULL;
+
+	SHPHandle   hSHP;
+	int     nShapeType, nEntities, iPart, bValidate = 0,nInvalidCount=0;
+	const char  *pszPlus;
+	double  adfMinBound[4], adfMaxBound[4];
+
+	char    indent[81]="";
+	KML_File          *kfile  = NULL;
+	KML_Document      *kdoc   = NULL;
+	KML_Style         *kstyle = NULL;
+	KML_LineStyle     *klsty  = NULL;
+	KML_PolyStyle     *kpsty  = NULL;
+	KML_Folder        *kfold  = NULL;
+	KML_Placemark     *kplace = NULL;
+	KML_MultiGeometry *kmulti = NULL;
+	KML_Polygon       *kpoly  = NULL;
+	KML_LinearRing    *kring  = NULL;
+	KML_LineString    *kline  = NULL;
+	KML_Point         *kpoint = NULL;
+	FILE              *fid    = NULL;
+
+	clock_t clock0,clock1;
+	time_t  time0, time1;
+
+	clock0=clock();
+	time0 =time(NULL);
+	_printf0_("\nShp2Kmlx Module -- " << ctime(&time0));
+
+/*  note that much of the following code is taken from shpdump.c in shapelib.  */
+
+/*  open shp/shx files  */
+
+	hSHP = SHPOpen( filshp, "rb" );
+	if (!hSHP) _error_("Error opening shp/shx files.");
+
+/*  read header and print out file bounds  */
+
+	SHPGetInfo( hSHP, &nEntities, &nShapeType, adfMinBound, adfMaxBound );
+
+	printf( "Shapefile Type: %s   # of Shapes: %d\n\n",
+			SHPTypeName( nShapeType ), nEntities );
+
+	printf( "File Bounds: (%12.3f,%12.3f,%g,%g)\n"
+			"         to  (%12.3f,%12.3f,%g,%g)\n",
+			adfMinBound[0],
+			adfMinBound[1],
+			adfMinBound[2],
+			adfMinBound[3],
+			adfMaxBound[0],
+			adfMaxBound[1],
+			adfMaxBound[2],
+			adfMaxBound[3] );
+
+	nshape=nEntities;
+	pstype=xNew<int>(nshape);
+	pnpart=xNew<int>(nshape);
+	ppstrt=xNew<int*>(nshape);
+	pptype=xNew<int*>(nshape);
+	pnvert=xNew<int>(nshape);
+	pshapx=xNew<double*>(nshape);
+	pshapy=xNew<double*>(nshape);
+	pshapz=xNew<double*>(nshape);
+	pshapm=xNew<double*>(nshape);
+
+	/* loop over the list of shapes  */
+	for(i=0;i<nEntities;i++ ){
+		SHPObject   *psShape;
+
+	psShape = SHPReadObject( hSHP, i );
+
+	printf( "\nShape:%d (%s)  nVertices=%d, nParts=%d\n"
+				"  Bounds:(%12.3f,%12.3f, %g, %g)\n"
+				"      to (%12.3f,%12.3f, %g, %g)\n",
+			i, SHPTypeName(psShape->nSHPType),
+				psShape->nVertices, psShape->nParts,
+				psShape->dfXMin, psShape->dfYMin,
+				psShape->dfZMin, psShape->dfMMin,
+				psShape->dfXMax, psShape->dfYMax,
+				psShape->dfZMax, psShape->dfMMax );
+
+	pstype[i]=psShape->nSHPType;
+	pnpart[i]=psShape->nParts;
+	if (pnpart[i]) {
+		ppstrt[i]=xNew<int>(pnpart[i]);
+		pptype[i]=xNew<int>(pnpart[i]);
+	}
+	else {
+		ppstrt[i]=NULL;
+		pptype[i]=NULL;
+	}
+	pnvert[i]=psShape->nVertices;
+	if (pnvert[i]) {
+		pshapx[i]=xNew<double>(pnvert[i]);
+		pshapy[i]=xNew<double>(pnvert[i]);
+		pshapz[i]=xNew<double>(pnvert[i]);
+		pshapm[i]=xNew<double>(pnvert[i]);
+	}
+	else {
+		pshapx[i]=NULL;
+		pshapy[i]=NULL;
+		pshapz[i]=NULL;
+		pshapm[i]=NULL;
+	}
+
+	for( j = 0, iPart = 1; j < psShape->nVertices; j++ )
+	{
+			const char  *pszPartType = "";
+
+			if( j == 0 && psShape->nParts > 0 )
+			{
+				pszPartType = SHPPartTypeName( psShape->panPartType[0] );
+				ppstrt[i][0]=psShape->panPartStart[0];
+				pptype[i][0]=psShape->panPartType[0];
+			}
+
+		if( iPart < psShape->nParts
+				&& psShape->panPartStart[iPart] == j )
+		{
+				pszPartType = SHPPartTypeName( psShape->panPartType[iPart] );
+				ppstrt[i][iPart]=psShape->panPartStart[iPart];
+				pptype[i][iPart]=psShape->panPartType[iPart];
+		iPart++;
+		pszPlus = "+";
+		}
+		else
+			pszPlus = " ";
+
+//		printf("   %s (%12.3f,%12.3f, %g, %g) %s \n",
+//				   pszPlus,
+//				   psShape->padfX[j],
+//				   psShape->padfY[j],
+//				   psShape->padfZ[j],
+//				   psShape->padfM[j],
+//				   pszPartType );
+
+		pshapx[i][j]=psShape->padfX[j];
+		pshapy[i][j]=psShape->padfY[j];
+		pshapz[i][j]=psShape->padfZ[j];
+		pshapm[i][j]=psShape->padfM[j];
+	}
+
+		if( bValidate )
+		{
+			int nAltered = SHPRewindObject( hSHP, psShape );
+
+			if( nAltered > 0 )
+			{
+				printf( "  %d rings wound in the wrong direction.\n",
+						nAltered );
+				nInvalidCount++;
+			}
+		}
+
+		SHPDestroyObject( psShape );
+	}
+
+/*  close shp/shx files  */
+
+	SHPClose( hSHP );
+
+/*  construct kml file  */
+
+	kfile =new KML_File();
+	kfile->AddAttrib("xmlns","http://www.opengis.net/kml/2.2");
+
+/*  construct kml document  */
+
+	kdoc  =new KML_Document();
+	sprintf(kdoc->name      ,"Shp2Kmlx Module -- %s",ctime(&time0));
+	kdoc->open      =1;
+
+/*  construct style templates for defaults  */
+
+	klsty =new KML_LineStyle();
+	sprintf(klsty->color     ,"ff000000");
+	sprintf(klsty->colormode ,"normal");
+	klsty->width     =lwidth;
+	kpsty =new KML_PolyStyle();
+	sprintf(kpsty->color     ,"%02xffffff",(int)floor(popac*255+0.5));
+	sprintf(kpsty->colormode ,"random");
+	kstyle=new KML_Style();
+	kstyle->AddAttrib("id","BlackLineRandomPoly");
+	kstyle->line      =klsty;
+	kstyle->poly      =kpsty;
+	(kdoc->style     )->AddObject((Object*)kstyle);
+
+	klsty =new KML_LineStyle();
+	sprintf(klsty->color     ,"ff000000");
+	sprintf(klsty->colormode ,"normal");
+	klsty->width     =lwidth;
+	kpsty =new KML_PolyStyle();
+	sprintf(kpsty->color     ,"00ffffff");
+	sprintf(kpsty->colormode ,"random");
+	kstyle=new KML_Style();
+	kstyle->AddAttrib("id","BlackLineEmptyPoly");
+	kstyle->line      =klsty;
+	kstyle->poly      =kpsty;
+	(kdoc->style     )->AddObject((Object*)kstyle);
+
+	klsty =new KML_LineStyle();
+	sprintf(klsty->color     ,"%02xffffff",(int)floor(popac*255+0.5));
+	sprintf(klsty->colormode ,"random");
+	klsty->width     =lwidth*2;
+	kpsty =new KML_PolyStyle();
+	sprintf(kpsty->color     ,"00ffffff");
+	sprintf(kpsty->colormode ,"random");
+	kstyle=new KML_Style();
+	kstyle->AddAttrib("id","RandomLineEmptyPoly");
+	kstyle->line      =klsty;
+	kstyle->poly      =kpsty;
+	(kdoc->style     )->AddObject((Object*)kstyle);
+
+/*  construct kml folder for shapes  */
+
+	kfold =new KML_Folder();
+	sprintf(kfold->name      ,"Shapefile: %s  Type: %s  nShapes: %d",
+			filshp, SHPTypeName( nShapeType ), nEntities );
+	kfold->open      =1;
+
+/*  loop over the list of shapes  */
+
+	for (i=0; i<nshape; i++) {
+
+/*  null type  */
+
+		if      (pstype[i] == SHPT_NULL) {
+			;
+		}
+
+/*  point types  */
+
+		else if (pstype[i] == SHPT_POINT ||
+			  	 pstype[i] == SHPT_POINTZ ||
+			 	 pstype[i] == SHPT_POINTM) {
+			kplace=new KML_Placemark();
+
+			sprintf(kplace->name      ,"Shape:%d (%s)  nVertices=%d, nParts=%d",
+					i,SHPTypeName(pstype[i]),pnvert[i],pnpart[i]);
+			kplace->visibility=true;
+			sprintf(kplace->styleurl  ,"#RandomLineEmptyPoly");
+
+			if (pnpart[i] > 0)
+				_printf_("Warning -- Shape "<< i << " of type \"" << SHPTypeName( pstype[i] ) << "\" should not have " << pnpart[i] << " > 0 parts.\n\n");
+			if (pnvert[i] > 1)
+				_printf_("Warning -- Shape " << i << " of type \"" << SHPTypeName( pstype[i] ) << "\" should not have " << pnpart[i] << " > 1 vertices.\n\n");
+
+			kpoint=new KML_Point();
+
+			lat=xNew<double>(pnvert[i]);
+			lon=xNew<double>(pnvert[i]);
+			if (sgn) {
+				Xy2llx(lat,lon,pshapx[i],pshapy[i],pnvert[i],sgn,cm,sp);
+			}
+			else  {
+				memcpy(lon,pshapx[i],pnvert[i]*sizeof(double));
+				memcpy(lat,pshapy[i],pnvert[i]*sizeof(double));
+			}
+
+			kpoint->coords[0]=lon      [0];
+			kpoint->coords[1]=lat      [0];
+			kpoint->coords[2]=pshapz[i][0];
+
+			xDelete<double>(lon);
+			xDelete<double>(lat);
+
+			(kplace->geometry  )->AddObject((Object*)kpoint);
+			kpoint=NULL;
+			(kfold ->feature   )->AddObject((Object*)kplace);
+			kplace=NULL;
+		}
+
+/*  polyline types  */
+
+		else if (pstype[i] == SHPT_ARC ||
+				 pstype[i] == SHPT_ARCZ ||
+				 pstype[i] == SHPT_ARCM) {
+			kplace=new KML_Placemark();
+
+			sprintf(kplace->name      ,"Shape:%d (%s)  nVertices=%d, nParts=%d",
+					i,SHPTypeName(pstype[i]),pnvert[i],pnpart[i]);
+			kplace->visibility=true;
+			sprintf(kplace->styleurl  ,"#RandomLineEmptyPoly");
+
+/*  create a multigeometry to hold all the lines  */
+
+			kmulti=new KML_MultiGeometry();
+
+/*  convert to lat/lon, if necessary  */
+
+			lat=xNew<double>(pnvert[i]);
+			lon=xNew<double>(pnvert[i]);
+			if (sgn) {
+				Xy2llx(lat,lon,pshapx[i],pshapy[i],pnvert[i],sgn,cm,sp);
+			}
+			else  {
+				memcpy(lon,pshapx[i],pnvert[i]*sizeof(double));
+				memcpy(lat,pshapy[i],pnvert[i]*sizeof(double));
+			}
+
+/*  loop over the lines  */
+
+			for (j=0; j<pnpart[i]; j++) {
+				kline =new KML_LineString();
+
+				kline->ncoord    =(j<pnpart[i]-1 ? ppstrt[i][j+1]-ppstrt[i][j] : pnvert[i]-ppstrt[i][j]);
+				kline->coords    =xNew<double>(kline->ncoord*3);
+				for (k=0; k<kline->ncoord; k++) {
+					kline->coords[3*k+0]=lon      [ppstrt[i][j]+k];
+					kline->coords[3*k+1]=lat      [ppstrt[i][j]+k];
+					kline->coords[3*k+2]=pshapz[i][ppstrt[i][j]+k];
+				}
+				(kmulti->geometry  )->AddObject((Object*)kline);
+				kline = NULL;
+			}
+
+			xDelete<double>(lon);
+			xDelete<double>(lat);
+
+			(kplace->geometry)->AddObject((Object*)kmulti);
+			kmulti=NULL;
+			(kfold ->feature )->AddObject((Object*)kplace);
+			kplace=NULL;
+		}
+
+/*  polygon types  */
+
+		else if (pstype[i] == SHPT_POLYGON ||
+				 pstype[i] == SHPT_POLYGONZ ||
+				 pstype[i] == SHPT_POLYGONM) {
+
+/*  the shp format specifies that outer rings are cw, while inner rings are ccw.  there
+	may be multiple outer rings and inner rings in any order.  the kml format specifies
+	all rings are ccw (right-hand rule).  there may be only one outer ring with multiple
+	inner rings, and rings are differentiated by keyword.
+
+	at least for now, assume that each cw ring forms a new kml polygon, and each ccw
+	ring forms an inner ring for the most recent outer ring.  a more elaborate solution
+	would be for each inner ring to search in which outer ring it occurs.  */
+
+			kplace=new KML_Placemark();
+
+			sprintf(kplace->name      ,"Shape:%d (%s)  nVertices=%d, nParts=%d",
+					i,SHPTypeName(pstype[i]),pnvert[i],pnpart[i]);
+			kplace->visibility=true;
+			sprintf(kplace->styleurl  ,"#BlackLineRandomPoly");
+
+/*  create a multigeometry to hold all the polygons  */
+
+			kmulti=new KML_MultiGeometry();
+
+/*  convert to lat/lon, if necessary  */
+
+			lat=xNew<double>(pnvert[i]);
+			lon=xNew<double>(pnvert[i]);
+			if (sgn) {
+				Xy2llx(lat,lon,pshapx[i],pshapy[i],pnvert[i],sgn,cm,sp);
+			}
+			else  {
+				memcpy(lon,pshapx[i],pnvert[i]*sizeof(double));
+				memcpy(lat,pshapy[i],pnvert[i]*sizeof(double));
+			}
+
+/*  loop over the polygons  */
+
+			for (j=0; j<pnpart[i]; j++) {
+
+/*  check if polygon is ccw or cw by computing sum of cross products (twice the area)  */
+
+				ncoord=(j<pnpart[i]-1 ? ppstrt[i][j+1]-ppstrt[i][j] : pnvert[i]-ppstrt[i][j]);
+				cpsum =0.;
+
+				for (k=ppstrt[i][j]; k<ppstrt[i][j]+ncoord-1; k++)
+					cpsum +=pshapx[i][k]*pshapy[i][k+1         ]-pshapy[i][k]*pshapx[i][k+1         ];
+				cpsum +=pshapx[i][k]*pshapy[i][ppstrt[i][j]]-pshapy[i][k]*pshapx[i][ppstrt[i][j]];
+
+/*  outer ring (cw) (allow exception for single-part shapes)  */
+
+				if (cpsum < 0 || pnpart[i] == 1) {
+					if (kpoly) {
+						(kmulti->geometry  )->AddObject((Object*)kpoly);
+						kpoly =NULL;
+					}
+
+/*  create a new polygon from the outer ring (reversing cw to ccw)  */
+
+					kpoly =new KML_Polygon();
+					kring =new KML_LinearRing();
+
+					kring->ncoord    =(j<pnpart[i]-1 ? ppstrt[i][j+1]-ppstrt[i][j] : pnvert[i]-ppstrt[i][j]);
+					kring->coords    =xNew<double>(kring->ncoord*3);
+					if (cpsum < 0)
+						for (k=0; k<kring->ncoord; k++) {
+							kring->coords[3*(kring->ncoord-1-k)+0]=lon      [ppstrt[i][j]+k];
+							kring->coords[3*(kring->ncoord-1-k)+1]=lat      [ppstrt[i][j]+k];
+							kring->coords[3*(kring->ncoord-1-k)+2]=pshapz[i][ppstrt[i][j]+k];
+						}
+					else
+						for (k=0; k<kring->ncoord; k++) {
+							kring->coords[3*k+0]=lon      [ppstrt[i][j]+k];
+							kring->coords[3*k+1]=lat      [ppstrt[i][j]+k];
+							kring->coords[3*k+2]=pshapz[i][ppstrt[i][j]+k];
+						}
+
+					(kpoly ->outer     )->AddObject((Object*)kring);
+					kring =NULL;
+				}
+
+/*  inner ring (ccw)  */
+
+				else {
+					if (!kpoly) {
+						_printf_("Warning -- Shape " << i << " of type \"" << SHPTypeName( pstype[i] ) << "\", part " << j << ", expected to be outer loop (cw).\n\n");
+						continue;
+					}
+
+/*  add the inner ring to the current polygon  */
+
+					kring =new KML_LinearRing();
+
+					kring->ncoord    =(j<pnpart[i]-1 ? ppstrt[i][j+1]-ppstrt[i][j] : pnvert[i]-ppstrt[i][j]);
+					kring->coords    =xNew<double>(kring->ncoord*3);
+					for (k=0; k<kring->ncoord; k++) {
+						kring->coords[3*k+0]=lon      [ppstrt[i][j]+k];
+						kring->coords[3*k+1]=lat      [ppstrt[i][j]+k];
+						kring->coords[3*k+2]=pshapz[i][ppstrt[i][j]+k];
+					}
+
+					(kpoly ->inner     )->AddObject((Object*)kring);
+					kring =NULL;
+				}
+			}
+
+			if (kpoly) {
+				(kmulti->geometry  )->AddObject((Object*)kpoly);
+				kpoly =NULL;
+			}
+
+			xDelete<double>(lon);
+			xDelete<double>(lat);
+
+			(kplace->geometry  )->AddObject((Object*)kmulti);
+			kmulti=NULL;
+			(kfold ->feature   )->AddObject((Object*)kplace);
+			kplace=NULL;
+		}
+
+/*  multipoint types  */
+
+		else if (pstype[i] == SHPT_MULTIPOINT ||
+				 pstype[i] == SHPT_MULTIPOINTZ ||
+				 pstype[i] == SHPT_MULTIPOINTM) {
+			kplace=new KML_Placemark();
+
+			sprintf(kplace->name      ,"Shape:%d (%s)  nVertices=%d, nParts=%d",
+					i,SHPTypeName(pstype[i]),pnvert[i],pnpart[i]);
+			kplace->visibility=true;
+			sprintf(kplace->styleurl  ,"#RandomLineEmptyPoly");
+
+			if (pnpart[i] > 0)
+				_printf_("Warning -- Shape " << i << " of type \"" << SHPTypeName( pstype[i] ) << "\" should not have " << pnpart[i] << " > 0 parts.\n\n");
+
+/*  create a multigeometry to hold all the points  */
+
+			kmulti=new KML_MultiGeometry();
+
+/*  convert to lat/lon, if necessary  */
+
+			lat=xNew<double>(pnvert[i]);
+			lon=xNew<double>(pnvert[i]);
+			if (sgn) {
+				Xy2llx(lat,lon,pshapx[i],pshapy[i],pnvert[i],sgn,cm,sp);
+			}
+			else  {
+				memcpy(lon,pshapx[i],pnvert[i]*sizeof(double));
+				memcpy(lat,pshapy[i],pnvert[i]*sizeof(double));
+			}
+
+/*  loop over the points  */
+
+			for (j=0; j<pnvert[i]; j++) {
+				kpoint=new KML_Point();
+
+				kpoint->coords[0]=lon      [j];
+				kpoint->coords[1]=lat      [j];
+				kpoint->coords[2]=pshapz[i][j];
+
+				(kmulti->geometry  )->AddObject((Object*)kpoint);
+				kpoint=NULL;
+			}
+
+			xDelete<double>(lon);
+			xDelete<double>(lat);
+
+			(kplace->geometry  )->AddObject((Object*)kmulti);
+			kmulti=NULL;
+			(kfold ->feature   )->AddObject((Object*)kplace);
+			kplace=NULL;
+		}
+
+/*  multipatch types  */
+
+		else if (pstype[i] == SHPT_MULTIPATCH) {
+			_printf_("Warning -- Shape " << i << " of type \"" << SHPTypeName( pstype[i] ) << "\" will be ignored.\n\n");
+			continue;
+		}
+
+/*  unknown type  */
+
+		else {
+			_printf_("Warning -- Shape " << i << " of type \"" << SHPTypeName( pstype[i] ) << "\" will be ignored.\n\n");
+		}
+	}
+
+/*  assemble the rest of the kml hierarchy  */
+
+	(kdoc ->feature   )->AddObject((Object*)kfold);
+	kfold=NULL;
+	(kfile->kmlobj    )->AddObject((Object*)kdoc);
+	kdoc =NULL;
+
+/*  write kml file  */
+
+	_printf0_("Writing kml document to file.\n");
+	fid=fopen(filkml,"w");
+	fprintf(fid,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+	kfile->Write(fid,indent);
+	fclose(fid);
+
+	delete kfile;
+	for (i=nshape-1; i>=0; i--) {
+		xDelete<double>((pshapm[i]));
+		xDelete<double>((pshapz[i]));
+		xDelete<double>((pshapy[i]));
+		xDelete<double>((pshapx[i]));
+	}
+	xDelete<double*>(pshapm);
+	xDelete<double*>(pshapz);
+	xDelete<double*>(pshapy);
+	xDelete<double*>(pshapx);
+	xDelete<int>(pnvert);
+	for (i=nshape-1; i>=0; i--) {
+		xDelete<int>((pptype[i]));
+		xDelete<int>((ppstrt[i]));
+	}
+	xDelete<int*>(pptype);
+	xDelete<int*>(ppstrt);
+	xDelete<int>(pnpart);
+	xDelete<int>(pstype);
+
+	clock1=clock();
+	time1 =time(NULL);
+	_printf_("Shp2Kmlx Module -- " << ((double)(clock1-clock0))/CLOCKS_PER_SEC << " CPU seconds; " << difftime(time1,time0) << " elapsed seconds.\n\n\n");
+
+	return(iret);
+
+	#else //ifdef _HAVE_SHAPELIB_
+	return 0;
+	#endif
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Shp2Kmlx/Shp2Kmlx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Shp2Kmlx/Shp2Kmlx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Shp2Kmlx/Shp2Kmlx.h	(revision 21239)
@@ -0,0 +1,26 @@
+/*!\file:  Shp2Kmlx.h
+ * \brief header file for shp to kml conversion routines.
+ */ 
+
+#ifndef _SHP2KMLX_H
+#define _SHP2KMLX_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_SHAPELIB_ //only works if Shapelib library has been compiled in.
+
+#include "shapefil.h"
+
+#endif
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+int Shp2Kmlx(char* filshp,char* filkml, int sgn);
+int Shp2Kmlx(char* filshp,char* filkml, int sgn,double cm,double sp);
+
+#endif  /* _SHP2KMLX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Solverx/Solverx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Solverx/Solverx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Solverx/Solverx.cpp	(revision 21239)
@@ -0,0 +1,33 @@
+/*!\file Solverx
+ * \brief solver
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Solverx.h"
+#include "../../shared/shared.h"
+
+void	Solverx(Vector<IssmDouble>** puf, Matrix<IssmDouble>* Kff, Vector<IssmDouble>* pf, Vector<IssmDouble>* uf0,Vector<IssmDouble>* df, Parameters* parameters){
+
+	/*intermediary: */
+	Solver<IssmDouble> *solver=NULL;
+
+	/*output: */
+	Vector<IssmDouble> *uf=NULL;
+
+	if(VerboseModule()) _printf0_("   Solving matrix system\n");
+
+	/*Initialize solver: */
+	solver=new Solver<IssmDouble>(Kff,pf,uf0,df,parameters);
+
+	/*Solve:*/
+	uf=solver->Solve();
+
+	/*clean up and assign output pointers:*/
+	delete solver;
+	*puf=uf;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Solverx/Solverx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Solverx/Solverx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/Solverx/Solverx.h	(revision 21239)
@@ -0,0 +1,19 @@
+/*!\file:  Solverx.h
+ * \brief solver
+ */ 
+
+#ifndef _SOLVERX_H
+#define _SOLVERX_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../toolkits/toolkits.h"
+
+/* local prototypes: */
+void	Solverx(Vector<IssmDouble>** puf, Matrix<IssmDouble>* Kff, Vector<IssmDouble>* pf, Vector<IssmDouble>* uf0,Vector<IssmDouble>* df, Parameters* parameters);
+
+#endif  /* _SOLVERX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SpcNodesx/SpcNodesx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SpcNodesx/SpcNodesx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SpcNodesx/SpcNodesx.cpp	(revision 21239)
@@ -0,0 +1,24 @@
+/*!\file SpcNodesx
+ * \brief: establish single point constraints on all nodes, as well as constraints vector.
+ */
+
+#include "./SpcNodesx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void SpcNodesx(Nodes* nodes,Constraints* constraints,Parameters* parameters, int analysis_type){
+
+	for(int i=0;i<constraints->Size();i++){
+
+		Constraint* constraint=(Constraint*)constraints->GetObjectByOffset(i);
+
+		/*Check this constraint belongs to this analysis: */
+		if(constraint->InAnalysis(analysis_type)){
+
+			/*Ok, apply constraint onto corresponding node: */
+			constraint->ConstrainNode(nodes,parameters);
+		}
+	}
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SpcNodesx/SpcNodesx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SpcNodesx/SpcNodesx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SpcNodesx/SpcNodesx.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  SpcNodesx.h
+ * \brief header file for node single point constraints
+ */ 
+
+#ifndef _SPCNODESX_H
+#define _SPCNODESX_H
+
+#include "../../classes/classes.h"
+#include "../../toolkits/toolkits.h"
+
+/* local prototypes: */
+void SpcNodesx(Nodes* nodes, Constraints* constraints,Parameters* parameters,int analysis_type);
+
+#endif  /* _SPCNODESX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp	(revision 21239)
@@ -0,0 +1,108 @@
+/*!\file SurfaceAbsVelMisfitx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./SurfaceAbsVelMisfitx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void SurfaceAbsVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		J+=SurfaceAbsVelMisfit(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble SurfaceAbsVelMisfit(Element* element){
+
+	int        domaintype,numcomponents;
+	IssmDouble Jelem=0.;
+	IssmDouble misfit,Jdet;
+	IssmDouble vx,vy,vxobs,vyobs,weight;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnSurface()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn surface element*/
+	Element* topelement = element->SpawnTopElement();
+
+	/* Get node coordinates*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	Input* weights_input=topelement->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* vx_input     =topelement->GetInput(VxEnum);                                 _assert_(vx_input);
+	Input* vxobs_input  =topelement->GetInput(InversionVxObsEnum);                     _assert_(vxobs_input);
+	Input* vy_input     = NULL;
+	Input* vyobs_input  = NULL;
+	if(numcomponents==2){
+		vy_input    =topelement->GetInput(VyEnum);              _assert_(vy_input);
+		vyobs_input =topelement->GetInput(InversionVyObsEnum);  _assert_(vyobs_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		/* Get Jacobian determinant: */
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,SurfaceAbsVelMisfitEnum);
+		vx_input->GetInputValue(&vx,gauss);
+		vxobs_input->GetInputValue(&vxobs,gauss);
+		if(numcomponents==2){
+			vy_input->GetInputValue(&vy,gauss);
+			vyobs_input->GetInputValue(&vyobs,gauss);
+		}
+
+		/*Compute SurfaceAbsVelMisfitEnum:
+		 *
+		 *      1  [           2              2 ]
+		 * J = --- | (u - u   )  +  (v - v   )  |
+		 *      2  [       obs            obs   ]
+		 *
+		 */
+		misfit=0.5*(vx-vxobs)*(vx-vxobs);
+		if(numcomponents==2) misfit+=0.5*(vy-vyobs)*(vy-vyobs);
+
+		/*Add to cost function*/
+		Jelem+=misfit*weight*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	if(domaintype!=Domain2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  SurfaceAbsVelMisfitx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _SURFACEABSVELMISFITX_H
+#define _SURFACEABSVELMISFITX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void SurfaceAbsVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble SurfaceAbsVelMisfit(Element* element);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceAreax/SurfaceAreax.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceAreax/SurfaceAreax.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceAreax/SurfaceAreax.cpp	(revision 21239)
@@ -0,0 +1,36 @@
+/*!\file SurfaceAreax
+ * \brief: compute Surface area
+ */
+
+#include "./SurfaceAreax.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../InputUpdateFromConstantx/InputUpdateFromConstantx.h"
+
+void SurfaceAreax(IssmDouble* pS,FemModel* femmodel){
+
+	/*Intermediary*/
+	Element* element=NULL;
+
+	/*output: */
+	IssmDouble S = 0.;
+	IssmDouble S_sum;
+
+	/*Compute gradients: */
+	for(int i=0;i<femmodel->elements->Size();i++){
+		element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		S+=element->SurfaceArea();
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+ 	ISSM_MPI_Reduce (&S,&S_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&S_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm()); 
+	S=S_sum;
+
+	/*add surface area to element inputs:*/
+	InputUpdateFromConstantx(femmodel,S,SurfaceAreaEnum);
+
+	/*Assign output pointers: */
+	if(pS) *pS=S;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceAreax/SurfaceAreax.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceAreax/SurfaceAreax.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceAreax/SurfaceAreax.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  SurfaceAreax.h
+ * \brief header file for ...
+ */ 
+
+#ifndef _SURFACEAREAX_H
+#define _SURFACEAREAX_H
+
+#include "../../shared/shared.h"
+class FemModel;
+
+/* local prototypes: */
+void SurfaceAreax(IssmDouble* pS,FemModel* femmodel);
+
+#endif  /* _SURFACEAREAX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp	(revision 21239)
@@ -0,0 +1,119 @@
+/*!\file SurfaceAverageVelMisfitx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./SurfaceAverageVelMisfitx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../SurfaceAreax/SurfaceAreax.h"
+
+void SurfaceAverageVelMisfitx(IssmDouble* pJ,FemModel* femmodel){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		J+=SurfaceAverageVelMisfit(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble SurfaceAverageVelMisfit(Element* element){
+
+	int        domaintype,numcomponents;
+	IssmDouble Jelem=0.;
+	IssmDouble misfit,S,Jdet;
+	IssmDouble vx,vy,vxobs,vyobs,weight;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnSurface()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:
+			numcomponents   = 1;
+			break;
+		case Domain3DEnum:
+			numcomponents   = 2;
+			break;
+		case Domain2DhorizontalEnum:
+			numcomponents   = 2;
+			break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn surface element*/
+	Element* topelement = element->SpawnTopElement();
+
+	/* Get node coordinates*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	topelement->GetInputValue(&S,SurfaceAreaEnum);
+	Input* weights_input=topelement->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* vx_input     =topelement->GetInput(VxEnum);                                 _assert_(vx_input);
+	Input* vxobs_input  =topelement->GetInput(InversionVxObsEnum);                     _assert_(vxobs_input);
+	Input* vy_input     = NULL;
+	Input* vyobs_input  = NULL;
+	if(numcomponents==2){
+		vy_input    =topelement->GetInput(VyEnum);              _assert_(vy_input);
+		vyobs_input =topelement->GetInput(InversionVyObsEnum);  _assert_(vyobs_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(3);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		/* Get Jacobian determinant: */
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,SurfaceAverageVelMisfitEnum);
+		vx_input->GetInputValue(&vx,gauss);
+		vxobs_input->GetInputValue(&vxobs,gauss);
+		if(numcomponents==2){
+			vy_input->GetInputValue(&vy,gauss);
+			vyobs_input->GetInputValue(&vyobs,gauss);
+		}
+
+		/*Compute SurfaceAverageVelMisfitEnum:
+		 *
+		 *      1                    2              2
+		 * J = ---  sqrt(  (u - u   )  +  (v - v   )  )
+		 *      S                obs            obs
+		 */
+		if(numcomponents==1){
+			misfit=1/S*(vx-vxobs)*(vx-vxobs);
+		}
+		else{
+			misfit=1/S*sqrt( pow(vx-vxobs,2) + pow(vy-vyobs,2));
+		}
+
+		/*Add to cost function*/
+		Jelem+=misfit*weight*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	if(domaintype!=Domain2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  SurfaceAverageVelMisfitx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _SURFACEAVERAGEVELMISFITX_H
+#define _SURFACEAVERAGEVELMISFITX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void SurfaceAverageVelMisfitx(IssmDouble* pJ,FemModel* femmodel);
+IssmDouble SurfaceAverageVelMisfit(Element* element);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp	(revision 21239)
@@ -0,0 +1,118 @@
+/*!\file SurfaceLogVelMisfitx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./SurfaceLogVelMisfitx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void SurfaceLogVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		J+=SurfaceLogVelMisfit(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble SurfaceLogVelMisfit(Element* element){
+
+	int        domaintype,numcomponents;
+	IssmDouble Jelem=0.;
+	IssmDouble epsvel=2.220446049250313e-16;
+	IssmDouble meanvel=3.170979198376458e-05; /*1000 m/yr*/
+	IssmDouble velocity_mag,obs_velocity_mag;
+	IssmDouble misfit,Jdet;
+	IssmDouble vx,vy,vxobs,vyobs,weight;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnSurface()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn surface element*/
+	Element* topelement = element->SpawnTopElement();
+
+	/* Get node coordinates*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	Input* weights_input=topelement->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* vx_input     =topelement->GetInput(VxEnum);                                 _assert_(vx_input);
+	Input* vxobs_input  =topelement->GetInput(InversionVxObsEnum);                     _assert_(vxobs_input);
+	Input* vy_input     = NULL;
+	Input* vyobs_input  = NULL;
+	if(numcomponents==2){
+		vy_input    =topelement->GetInput(VyEnum);              _assert_(vy_input);
+		vyobs_input =topelement->GetInput(InversionVyObsEnum);  _assert_(vyobs_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		/* Get Jacobian determinant: */
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,SurfaceLogVelMisfitEnum);
+		vx_input->GetInputValue(&vx,gauss);
+		vxobs_input->GetInputValue(&vxobs,gauss);
+		if(numcomponents==2){
+			vy_input->GetInputValue(&vy,gauss);
+			vyobs_input->GetInputValue(&vyobs,gauss);
+		}
+
+		/*Compute SurfaceLogVelMisfit:
+		 *                 [        vel + eps     ] 2
+		 * J = 4 \bar{v}^2 | log ( -----------  ) |  
+		 *                 [       vel   + eps    ]
+		 *                            obs
+		 */
+		if(numcomponents==1){
+			velocity_mag    =fabs(vx)+epsvel;
+			obs_velocity_mag=fabs(vxobs)+epsvel;
+		}
+		else{
+			velocity_mag    =sqrt(vx*vx+vy*vy)+epsvel;
+			obs_velocity_mag=sqrt(vxobs*vxobs+vyobs*vyobs)+epsvel;
+		}
+
+		misfit=4*pow(meanvel,2)*pow(log(velocity_mag/obs_velocity_mag),2);
+
+		/*Add to cost function*/
+		Jelem+=misfit*weight*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	if(domaintype!=Domain2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  SurfaceLogVelMisfitx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _SURFACELOGVELMISFITX_H
+#define _SURFACELOGVELMISFITX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void SurfaceLogVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble SurfaceLogVelMisfit(Element* element);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp	(revision 21239)
@@ -0,0 +1,117 @@
+/*!\file SurfaceLogVxVyMisfitx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./SurfaceLogVxVyMisfitx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void SurfaceLogVxVyMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		J+=SurfaceLogVxVyMisfit(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble SurfaceLogVxVyMisfit(Element* element){
+
+	int        domaintype,numcomponents;
+	IssmDouble Jelem=0.;
+	IssmDouble epsvel=2.220446049250313e-16;
+	IssmDouble meanvel=3.170979198376458e-05; /*1000 m/yr*/
+	IssmDouble misfit,Jdet;
+	IssmDouble vx,vy,vxobs,vyobs,weight;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnSurface()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn surface element*/
+	Element* topelement = element->SpawnTopElement();
+
+	/* Get node coordinates*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	Input* weights_input=topelement->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* vx_input     =topelement->GetInput(VxEnum);                                 _assert_(vx_input);
+	Input* vxobs_input  =topelement->GetInput(InversionVxObsEnum);                     _assert_(vxobs_input);
+	Input* vy_input     = NULL;
+	Input* vyobs_input  = NULL;
+	if(numcomponents==2){
+		vy_input    =topelement->GetInput(VyEnum);              _assert_(vy_input);
+		vyobs_input =topelement->GetInput(InversionVyObsEnum);  _assert_(vyobs_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		/* Get Jacobian determinant: */
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,SurfaceLogVxVyMisfitEnum);
+		vx_input->GetInputValue(&vx,gauss);
+		vxobs_input->GetInputValue(&vxobs,gauss);
+		if(numcomponents==2){
+			vy_input->GetInputValue(&vy,gauss);
+			vyobs_input->GetInputValue(&vyobs,gauss);
+		}
+
+		/*Compute SurfaceRelVelMisfit:
+		 *
+		 *      1            [        |u| + eps     2          |v| + eps     2  ]
+		 * J = --- \bar{v}^2 | log ( -----------  )   +  log ( -----------  )   |  
+		 *      2            [       |u    |+ eps              |v    |+ eps     ]
+		 *                              obs                       obs
+		 */
+
+		if(numcomponents==1){
+			misfit=0.5*meanvel*meanvel*pow(log((fabs(vx)+epsvel)/(fabs(vxobs)+epsvel)),2);
+		}
+		else{
+			misfit=0.5*meanvel*meanvel*(
+						pow(log((fabs(vx)+epsvel)/(fabs(vxobs)+epsvel)),2) +
+						pow(log((fabs(vy)+epsvel)/(fabs(vyobs)+epsvel)),2) );
+		}
+
+		/*Add to cost function*/
+		Jelem+=misfit*weight*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	if(domaintype!=Domain2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  SurfaceLogVxVyMisfitx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _SURFACELOGVXVYMISFITX_H
+#define _SURFACELOGVXVYMISFITX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void SurfaceLogVxVyMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble SurfaceLogVxVyMisfit(Element* element);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceMassBalancex/Gembx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceMassBalancex/Gembx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceMassBalancex/Gembx.cpp	(revision 21239)
@@ -0,0 +1,1992 @@
+/*!\file GEMB module from Alex Gardner.
+ * \brief: calculates SMB 
+ */
+
+#include "./SurfaceMassBalancex.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+const double Pi = 3.141592653589793;
+
+void Gembx(FemModel* femmodel){  /*{{{*/
+
+	for(int i=0;i<femmodel->elements->Size();i++){
+        Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+        element->SmbGemb();
+	}
+
+} /*}}}*/
+void GembgridInitialize(IssmDouble** pdz, int* psize, IssmDouble zTop, IssmDouble dzTop, IssmDouble zMax, IssmDouble zY){ /*{{{*/
+
+	/* This file sets up the initial grid spacing and total grid depth.  The
+	grid structure is set as constant grid length 'dzTop' for the top
+	'zTop' meters of the model grid. Bellow 'zTop' the gid length increases
+	linearly with depth */
+
+	/*intermediary:*/
+	IssmDouble dgpTop;
+	int gpTop, gpBottom;
+	int i;
+	IssmDouble gp0,z0;
+	IssmDouble* dzT=NULL;
+	IssmDouble* dzB=NULL;
+
+	/*output: */
+	int m;
+	IssmDouble* dz=NULL;
+
+	//----------------------Calculate Grid Lengths------------------------------
+	//calculate number of top grid points
+	dgpTop = zTop/dzTop;
+
+	//check to see if the top grid cell structure length (dzTop) goes evenly 
+	//into specified top structure depth (zTop). Also make sure top grid cell
+	//structure length (dzTop) is greater than 5 cm
+	#ifndef _HAVE_ADOLC_  //avoid the round operation check!
+	if (dgpTop != round(dgpTop)){ 
+		_error_("top grid cell structure length does not go evenly into specified top structure depth, adjust dzTop or zTop");
+	}
+	#endif
+	if(dzTop < 0.05){
+		_printf_("initial top grid cell length (dzTop) is < 0.05 m");
+	}
+	gpTop=reCast<int,IssmDouble>(dgpTop);
+
+	//initialize top grid depth vector
+	dzT = xNew<IssmDouble>(gpTop); 
+	for (i=0;i<gpTop;i++)dzT[i]=dzTop;
+
+	//bottom grid cell depth = x*zY^(cells from to structure)
+	//figure out the number of grid points in the bottom vector (not known a priori)
+	gp0 = dzTop;
+	z0 = zTop;
+	gpBottom = 0;
+	while (zMax > z0){
+		gp0= gp0 * zY;
+		z0 = z0 + gp0;
+		gpBottom++;
+	}
+	//initialize bottom vectors
+	dzB = xNewZeroInit<IssmDouble>(gpBottom);
+	gp0 = dzTop;
+	z0 = zTop;
+	for(i=0;i<gpBottom;i++){
+		gp0=gp0*zY;
+		dzB[i]=gp0;
+	}
+
+	//combine top and bottom dz vectors
+	dz = xNew<IssmDouble>(gpTop+gpBottom);
+	for(i=0;i<gpTop;i++){
+		dz[i]=dzT[i];
+	}
+	for(i=0;i<gpBottom;i++){
+		dz[gpTop+i]=dzB[i];
+	}
+
+	/*Free ressouces:*/
+	xDelete(dzT);
+	xDelete(dzB);
+	
+	//---------NEED TO IMPLEMENT A PROPER GRID STRECHING ALGORITHM------------
+
+	/*assign ouput pointers: */
+	*pdz=dz; 
+	*psize=gpTop+gpBottom;
+} /*}}}*/ 
+IssmDouble Marbouty(IssmDouble T, IssmDouble d, IssmDouble dT){ /*{{{*/
+
+	// calculates grain growth according to Fig. 9 of Marbouty, 1980
+	// ------NO GRAIN GROWTH FOR d > 400 kg m-3 because H is set to zero------
+	// ---------------this is a major limitation of the model-------------------
+
+	// initialize
+	IssmDouble F = 0, H=0, G=0;
+	const IssmDouble E = 0.09;        //[mm d-1] model time growth constant E
+	// convert T from K to ºC
+	T = T - 273.15;
+
+	// temperature coefficient F
+	if(T>-6.0) F =  0.7 + ((T/-6.0) * 0.3);
+	if(T<=-6.0 && T>-22.0) F =  1 - ((T+6.0)/-16.0 * 0.8);
+	if(T<=-22.0 && T>-40.0) F =  0.2 - ((T+22.0)/-18.0 * 0.2);
+
+	// density coefficient F
+	if(d<150.0) H=1.0;
+
+	if(d>=150.0 & d<400.0) H = 1 - ((d-150.0)/250.0);
+
+	// temperature gradient coefficient G
+	if(dT >= 0.16 && dT < 0.25) G = ((dT - 0.16)/0.09) * 0.1;
+	if(dT >= 0.25 && dT < 0.4)  G = 0.1 + (((dT - 0.25)/0.15) * 0.57);
+	if(dT >= 0.4  && dT < 0.5)  G = 0.67 + (((dT - 0.4)/0.1) * 0.23);
+	if(dT >= 0.5  && dT < 0.7)  G = 0.9 + (((dT - 0.5)/0.2) * 0.1);
+	if(dT >= .7              )  G = 1.0;
+
+	// grouped coefficient Q
+	return F*H*G*E;
+
+} /*}}}*/
+void grainGrowth(IssmDouble* re, IssmDouble* gdn, IssmDouble* gsp, IssmDouble* T,IssmDouble* dz,IssmDouble* d, IssmDouble* W,IssmDouble smb_dt,int m,int aIdx,int sid){ /*{{{*/
+
+	/*Created by: Alex S. Gardner, University of Alberta
+
+	 *Description*: models the effective snow grain size
+
+	 *Reference:*
+	 DENDRITIC SNOW METAMORPHISM:
+	 Brun, E., P. David, M. Sudul, and G. Brunot, 1992: A numerical model to
+	 simulate snow-cover stratigraphy for operational avalanche forecasting.
+	 Journal of Glaciology, 38, 13-22.
+
+	 NONDENDRITIC SNOW METAMORPHISM:
+	 Dry snow metamorphism:
+	 Marbouty, D., 1980: An experimental study of temperature-gradient
+	 metamorphism. Journal of Glaciology, 26, 303-312.
+
+	 WET SNOW METAMORPHISM:
+	 Brun, E., 1989: Investigation on wet-snow metamorphism in respect of
+	 liquid-water content. Annals of Glaciology, 13, 22-26.
+
+	 INPUTS
+	 * T: grid cell temperature [k]
+	 * dz: grid cell depth [m]
+	 * d: grid cell density [kg m-3]
+	 * W: water content [kg/m^2]
+	 * re: effective grain size [mm]
+	 * gdn: grain dentricity
+	 * gsp: grain sphericity
+	 * dt: time step of input data [s]
+
+	 OUTPUTS
+	 * re: effective grain size [mm]
+	 * gdn: grain dentricity
+	 * gsp: grain sphericity*/
+
+	/*intermediary: */
+	IssmDouble  dt;
+	IssmDouble* gsz=NULL;
+	IssmDouble* dT=NULL;
+	IssmDouble* zGPC=NULL;
+	IssmDouble* lwc=NULL;
+	IssmDouble  Q=0;
+
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   grain growth module\n");
+	
+	/*only when aIdx = 1 or 2 do we run grainGrowth: */
+	if(aIdx!=1 & aIdx!=2){
+		/*come out as we came in: */
+		return;
+	}
+
+	/*Figure out grain size from effective grain radius: */
+	gsz=xNew<IssmDouble>(m); for(int i=0;i<m;i++)gsz[i]=re[i]*2.0;
+
+	/*Convert dt from seconds to day: */
+	dt=smb_dt/86400.0;
+
+	/*Determine liquid-water content in percentage: */
+	lwc=xNew<IssmDouble>(m); for(int i=0;i<m;i++)lwc[i]= W[i] / (d[i]*dz[i])*100.0;
+
+	//set maximum water content by mass to 9 percent (Brun, 1980)
+	for(int i=0;i<m;i++)if(lwc[i]>9.0) lwc[i]=9.0;
+
+
+	/* Calculate temperature gradiant across grid cells 
+	 * Returns the avereage gradient across the upper and lower grid cell */
+
+	//initialize
+	dT=xNewZeroInit<IssmDouble>(m); 
+
+	//depth of grid point center from surface
+	zGPC=xNewZeroInit<IssmDouble>(m);  
+	for(int i=0;i<m;i++){
+		for (int j=0;j<=i;j++) zGPC[i]+=dz[j];
+		zGPC[i]-=dz[i]/2;
+	}
+
+	// Take forward differences on left and right edges
+	dT[0] = (T[1] - T[0])/(zGPC[1]-zGPC[0]);
+	dT[m-1] = (T[m-1] - T[m-2])/(zGPC[m-1]-zGPC[m-2]);
+
+	//Take centered differences on interior points
+	for(int i=1;i<m-1;i++) dT[i] = (T[i+1]-T[i-1])/(zGPC[i+1]-zGPC[i-1]);
+
+	// take absolute value of temperature gradient
+	for(int i=0;i<m;i++)dT[i]=fabs(dT[i]);
+	
+	/*Snow metamorphism. Depends on value of snow dendricity and wetness of the snowpack: */
+	for(int i=0;i<m;i++){
+		if (gdn[i]>0){
+
+			//_printf_("Dendritic dry snow metamorphism\n");
+
+			//index for dentricity > 0 and T gradients < 5 degC m-1 and >= 5 degC m-1
+			if(dT[i]<5.0){
+				//determine coefficients
+				IssmDouble A = - 2e8 * exp(-6e3 / T[i]) * dt;
+				IssmDouble B = 1e9 * exp(-6e3 / T[i]) * dt;
+				//new dentricity and sphericity for dT < 5 degC m-1
+				gdn[i] += A;
+				gsp[i] += B;
+			}
+			else{
+				// new dendricity and sphericity for dT >= 5 degC m-1
+
+				//determine coefficients
+				IssmDouble C = (-2e8 * exp(-6e3 / T[i]) * dt) * pow(dT[i],.4);
+				gdn[i] +=C;
+				gsp[i] +=C;
+			}
+
+			// wet snow metamorphism
+			if(W[i]>0.0){
+
+				//_printf_("D}ritic wet snow metamorphism\n");
+
+				//determine coefficient
+				IssmDouble D = (1.0/16.0) * pow(lwc[i],3.0) * dt;
+
+				// new dendricity and sphericity for wet snow
+				gdn[i] -= D;
+				gsp[i] += D;
+			}
+
+			// dendricity and sphericity can not be > 1 or < 0
+			if (gdn[i]<0.0)gdn[i]=0.0;
+			if (gsp[i]<0.0)gsp[i]=0.0;
+			if (gdn[i]>1.0)gdn[i]=1.0;
+			if (gsp[i]>1.0)gsp[i]=1.0;
+
+			// determine new grain size (mm)
+			gsz[i] = 0.1 + (1-gdn[i])*0.25 + (0.5-gsp[i])*0.1;
+
+		}
+		else{
+
+			/*Dry snow metamorphism (Marbouty, 1980) grouped model coefficinets
+			 *from Marbouty, 1980: Figure 9*/
+
+			//_printf_("Nond}ritic snow metamorphism\n");
+			Q = Marbouty(T[i],d[i],dT[i]);
+
+			// calculate grain growth
+			gsz[i] += Q* dt;
+
+			//Wet snow metamorphism (Brun, 1989)
+			if(W[i]>0.0){
+				//_printf_("Nond}ritic wet snow metamorphism\n");
+				//wet rate of change coefficient
+				IssmDouble E = 1.28e-8 + (4.22e-10 * pow(lwc[i],3.0))* (dt *86400.0);   // [mm^3 s^-1]
+
+				// calculate change in grain volume and convert to grain size
+				gsz[i] = 2.0 * pow(3.0/(Pi * 4.0)*((4.0/ 3.0)*Pi*pow(gsz[i]/2.0,3.0) + E),1.0/3.0);
+
+			}
+
+			// grains with sphericity == 1 can not have grain sizes > 2 mm (Brun, 1992)
+			if (gsp[i]==1.0 && gsz[i]>2.0) gsz[i]=2.0;
+
+			// grains with sphericity == 0 can not have grain sizes > 5 mm (Brun, 1992)
+			if (gsp[i]!=1.0 && gsz[i]>5.0) gsz[i]=5.0;
+		}
+
+		//convert grain size back to effective grain radius: 
+		re[i]=gsz[i]/2.0;
+	}
+	
+	/*Free ressources:*/
+	xDelete<IssmDouble>(gsz);
+	xDelete<IssmDouble>(dT);
+	xDelete<IssmDouble>(zGPC);
+	xDelete<IssmDouble>(lwc);
+
+}  /*}}}*/
+void albedo(IssmDouble* a, int aIdx, IssmDouble* re, IssmDouble* d, IssmDouble cldFrac, IssmDouble aIce, IssmDouble aSnow, IssmDouble* TK, IssmDouble* W, IssmDouble P, IssmDouble EC, IssmDouble t0wet, IssmDouble t0dry, IssmDouble K, IssmDouble dt, int m,int sid) { /*{{{*/
+
+	//// Calculates Snow, firn and ice albedo as a function of:
+	//   1 : effective grain radius (Gardner & Sharp, 2009)
+	//   2 : effective grain radius (Brun et al., 2009)
+	//   3 : density and cloud amount (Greuell & Konzelmann, 1994)
+	//   4 : exponential time decay & wetness (Bougamont & Bamber, 2005)
+
+	//// Inputs
+	// aIdx      = albedo method to use
+
+	// Methods 1 & 2
+	//   re      = surface effective grain radius [mm]
+
+	// Methods 3
+	//   d       = snow surface density [kg m-3]
+	//   n       = cloud amount
+	//   aIce    = albedo of ice
+	//   aSnow   = albedo of fresh snow
+
+	// Methods 4
+	//   aIce    = albedo of ice
+	//   aSnow   = albedo of fresh snow
+	//   a       = grid cell albedo from prevous time step;
+	//   T       = grid cell temperature [k]
+	//   W       = pore water [kg]
+	//   P       = precipitation [mm w.e.] or [kg m-3]
+	//   EC      = surface evaporation (-) condensation (+) [kg m-2]
+	//   t0wet   = time scale for wet snow (15-21.9) [d]
+	//   t0dry   = warm snow timescale [15] [d]
+	//   K       = time scale temperature coef. (7) [d]
+	//   dt      = time step of input data [s]
+
+	//// Output
+	//   a       = grid cell albedo 
+
+	//// Usage 
+	// Method 1
+	// a = albedo(1, 0.1); 
+
+	// Method 4
+	// a = albedo(4, [], [], [], 0.48, 0.85, [0.8 0.5 ... 0.48], ...
+	//   [273 272.5 ... 265], [0 0.001 ... 0], 0, 0.01, 15, 15, 7, 3600)
+
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   albedo module\n");
+        
+	//some constants:
+	const IssmDouble dSnow = 300;   // density of fresh snow [kg m-3]       
+	const IssmDouble dIce = 910;    // density of ice [kg m-3]
+
+	if(aIdx==1){ 
+        //function of effective grain radius
+        
+        //convert effective radius to specific surface area [cm2 g-1]
+        IssmDouble S = 3.0 / (.091 * re[0]);
+        
+        //determine broadband albedo
+        a[0]= 1.48 - pow(S,-.07);
+	}
+	else if(aIdx==2){
+		
+        // Spectral fractions  (Lefebre et al., 2003)
+        // [0.3-0.8um 0.8-1.5um 1.5-2.8um]
+        
+        IssmDouble sF[3] = {0.606, 0.301, 0.093};
+        
+        // convert effective radius to grain size in meters
+        IssmDouble gsz = (re[0] * 2) / 1000.0;
+        
+        // spectral range:
+        // 0.3 - 0.8um
+        IssmDouble a0 = fmin(0.98, 1 - 1.58 *pow(gsz,0.5));
+        // 0.8 - 1.5um
+        IssmDouble a1 = fmax(0, 0.95 - 15.4 *pow(gsz,0.5));
+        // 1.5 - 2.8um
+        IssmDouble a2 = fmax(0.127, 0.88 + 346.3*gsz - 32.31*pow(gsz,0.5));
+        
+        // broadband surface albedo
+        a[0] = sF[0]*a0 + sF[1]*a1 + sF[2]*a2;
+
+	}
+	else if(aIdx==3){
+		
+        // a as a function of density
+        
+        // calculate albedo
+        a[0] = aIce + (d[0] - dIce)*(aSnow - aIce) / (dSnow - dIce) + (0.05 * (cldFrac - 0.5));
+	}
+	else if(aIdx==4){
+		
+        // exponential time decay & wetness
+        
+        // change in albedo with time:
+        //   (d_a) = (a - a_old)/(t0)
+        // where: t0 = timescale for albedo decay
+        
+        dt = dt / 86400;    // convert from [s] to [d]
+        
+        // initialize variables
+        IssmDouble* t0=xNew<IssmDouble>(m);
+        IssmDouble* T=xNew<IssmDouble>(m);
+        IssmDouble* t0warm=xNew<IssmDouble>(m);
+        IssmDouble* d_a=xNew<IssmDouble>(m);
+        
+        // specify constants
+        // a_wet = 0.15;        // water albedo (0.15)
+        // a_new = aSnow        // new snow albedo (0.64 - 0.89)
+        // a_old = aIce;        // old snow/ice albedo (0.27-0.53)
+        // t0_wet = t0wet;      // time scale for wet snow (15-21.9) [d]
+        // t0_dry = t0dry;      // warm snow timescale [15] [d]
+        // K = 7                // time scale temperature coef. (7) [d]
+        // W0 = 300;            // 200 - 600 [mm]
+        const IssmDouble z_snow = 15;            // 16 - 32 [mm]
+        
+        // determine timescale for albedo decay
+        for(int i=0;i<m;i++)if(W[i]>0)t0[i]=t0wet; // wet snow timescale
+        for(int i=0;i<m;i++)T[i]=TK[i] - 273.15; // change T from K to degC
+        for(int i=0;i<m;i++) t0warm[i]= fabs(T[i]) * K + t0dry; //// 'warm' snow timescale
+        for(int i=0;i<m;i++)if(W[i]==0.0 && T[i]>=-10)t0[i]= t0warm[i];
+        for(int i=0;i<m;i++)if(T[i]<-10) t0[i] =  10 * K + t0dry; // 'cold' snow timescale
+        
+        // calculate new albedo
+        for(int i=0;i<m;i++)d_a[i] = (a[i] - aIce) / t0[i] * dt;           // change in albedo
+        for(int i=0;i<m;i++)a[i] -= d_a[i];                            // new albedo
+        
+        // modification of albedo due to thin layer of snow or solid
+        // condensation (deposition) at the surface surface
+        
+        // check if condensation occurs & if it is deposited in solid phase
+        if ( EC > 0 && T[0] < 0) P = P + (EC/dSnow) * 1000;  // add cond to precip [mm]
+        
+        a[0] = aSnow - (aSnow - a[0]) * exp(-P/z_snow);
+        
+        //----------THIS NEEDS TO BE IMPLEMENTED AT A LATER DATE------------
+        // modification of albedo due to thin layer of water on the surface
+        // a_surf = a_wet - (a_wet - a_surf) * exp(-W_surf/W0);
+
+        /*Free ressources:*/
+        xDelete<IssmDouble>(t0);
+        xDelete<IssmDouble>(T);
+        xDelete<IssmDouble>(t0warm);
+        xDelete<IssmDouble>(d_a);
+
+	}
+	else _error_("albedo method switch should range from 1 to 4!");
+	
+	// Check for erroneous values
+	if (a[0] > 1) _printf_("albedo > 1.0\n");
+	else if (a[0] < 0) _printf_("albedo is negative\n");
+	else if (xIsNan(a[0])) _error_("albedo == NAN\n");
+}  /*}}}*/
+void thermo(IssmDouble* pEC, IssmDouble* T, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlwrf, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble Ws, IssmDouble dt0, int m, IssmDouble Vz, IssmDouble Tz,int sid) { /*{{{*/
+
+	/* ENGLACIAL THERMODYNAMICS*/
+	 
+	/* Description: 
+	   computes new temperature profile accounting for energy absorption and 
+	   thermal diffusion.*/
+
+	// INPUTS
+	//  T: grid cell temperature [k]
+	//  dz: grid cell depth [m]
+	//  d: grid cell density [kg m-3]
+	//  swf: shortwave radiation fluxes [W m-2]
+	//  dlwrf: downward longwave radiation fluxes [W m-2]
+	//  Ta: 2 m air temperature
+	//  V:  wind velocity [m s-1]
+	//  eAir: screen level vapor pressure [Pa]
+	//  Ws: surface water content [kg]
+	//  dt0: time step of input data [s]
+	//  elev: surface elevation [m a.s.l.] 
+	//  Vz: air temperature height above surface [m]
+	//  Tz: wind height above surface [m]
+
+	// OUTPUTS
+	// T: grid cell temperature [k]
+	// EC: evaporation/condensation [kg]
+	
+	/*intermediary: */
+	IssmDouble* K = NULL;
+	IssmDouble* KU = NULL;
+	IssmDouble* KD = NULL;
+	IssmDouble* KP = NULL;
+	IssmDouble* Au = NULL;
+	IssmDouble* Ad = NULL;
+	IssmDouble* Ap = NULL;
+	IssmDouble* Nu = NULL;
+	IssmDouble* Nd = NULL;
+	IssmDouble* Np = NULL;
+	IssmDouble* dzU = NULL;
+	IssmDouble* dzD = NULL;
+	IssmDouble* sw = NULL;
+	IssmDouble* dT_sw = NULL;
+	IssmDouble* lw = NULL;
+	IssmDouble* T0 = NULL;
+	IssmDouble* Tu = NULL;
+	IssmDouble* Td = NULL;
+
+	IssmDouble  z0;	
+	IssmDouble  dt;
+	IssmDouble max_fdt=0;
+	IssmDouble  Ts=0;
+	IssmDouble  L;
+	IssmDouble  eS;
+	IssmDouble  Ri=0;
+	IssmDouble  coefM;
+	IssmDouble  coefH;
+	IssmDouble An;
+	IssmDouble C;
+	IssmDouble shf;
+	IssmDouble SB;
+	IssmDouble CI; 
+	IssmDouble ds;
+	IssmDouble dAir;
+	IssmDouble TCs;
+	IssmDouble lhf;
+	IssmDouble EC_day;
+	IssmDouble dT_turb;
+	IssmDouble turb;
+	IssmDouble ulw;
+	IssmDouble dT_ulw;
+	IssmDouble dlw;
+	IssmDouble dT_dlw;
+	
+	/*outputs:*/
+	IssmDouble EC;
+
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   thermal module\n");
+
+	// INITIALIZE
+	CI = 2102;          // heat capacity of snow/ice (J kg-1 k-1)
+	// CA = 1005;                  // heat capacity of air (J kg-1 k-1)
+	// LF = 0.3345E6;              // latent heat of fusion(J kg-1)
+	// LV = 2.495E6;               // latent heat of vaporization(J kg-1)
+	// dIce = 910;                 // density of ice [kg m-3]
+	// dSnow = 300;                // density of snow [kg m-3]
+	SB = 5.67E-8;       // Stefan-Boltzmann constant [W m-2 K-4]
+
+	ds = d[0];      // density of top grid cell
+
+	// calculated air density [kg/m3]
+	dAir = 0.029 * pAir /(8.314 * Ta);
+
+	// thermal capacity of top grid cell [J/k]
+	TCs = d[0]*dz[0]*CI; 
+
+	//initialize Evaporation - Condenstation 
+	EC = 0;
+	
+	// check if all SW applied to surface or distributed throught subsurface
+	// swIdx = length(swf) > 1
+
+	// SURFACE ROUGHNESS (Bougamont, 2006)
+	// wind/temperature surface roughness height [m]
+	if (ds < 910 && Ws == 0) z0 = 0.00012;       // 0.12 mm for dry snow
+	else if (ds >= 910) z0 = 0.0032;             // 3.2 mm for ice
+	else z0 = 0.0013;                            // 1.3 mm for wet snow
+
+	// if V = 0 goes to infinity therfore if V = 0 change
+	if(V<.01)V=.01;
+	
+	// Bulk-transfer coefficient for turbulent fluxes
+	An =  pow(0.4,2) / pow(log(Tz/z0),2);     // Bulk-transfer coefficient
+	C = An * dAir * V;                        // shf & lhf common coefficient
+
+	// THERMAL CONDUCTIVITY (Sturm, 1997: J. Glaciology)
+	// calculate new K profile [W m-1 K-1]
+
+	// initialize conductivity
+	K= xNewZeroInit<IssmDouble>(m);
+
+	// for snow and firn (density < 910 kg m-3) (Sturn et al, 1997)
+	for(int i=0;i<m;i++) if(d[i]<910) K[i] = 0.138 - 1.01E-3 * d[i] + 3.233E-6 * (pow(d[i],2));
+
+	// for ice (density >= 910 kg m-3)
+	for(int i=0;i<m;i++) if(d[i]>=910) K[i] = 9.828 * exp(-5.7E-3*T[i]);
+
+	// THERMAL DIFFUSION COEFFICIENTS
+ 
+	// A discretization scheme which truncates the Taylor-Series expansion
+	// after the 3rd term is used. See Patankar 1980, Ch. 3&4
+ 
+	// discretized heat equation:
+ 
+	//                 Tp = (Au*Tu° + Ad*Td° + (Ap-Au-Ad)Tp° + S) / Ap
+ 
+	// where neighbor coefficients Au, Ap, & Ad are
+ 
+	//                   Au = [dz_u/2KP + dz_p/2KE]^-1
+	//                   Ad = [dz_d/2KP + dz_d/2KD]^-1 
+	//                   Ap = d*CI*dz/Dt 
+
+	// and u & d represent grid points up and down from the center grid point 
+	// p and // u & d represent grid points up and down from the center grid 
+	// point p and ° identifies previous time step values. S is a source term.
+
+	// u, d, and p conductivities
+	KU = xNew<IssmDouble>(m);
+	KD = xNew<IssmDouble>(m);
+	KP = xNew<IssmDouble>(m);
+	
+	KU[0] = UNDEF;
+	KD[m-1] = UNDEF;
+	for(int i=1;i<m;i++) KU[i]= K[i-1];
+	for(int i=0;i<m-1;i++) KD[i] = K[i+1];
+	for(int i=0;i<m;i++) KP[i] = K[i];
+
+	// determine u, d & p cell widths
+	dzU = xNew<IssmDouble>(m);
+	dzD = xNew<IssmDouble>(m);
+	dzU[0]=UNDEF;
+	dzD[m-1]=UNDEF;
+	
+	for(int i=1;i<m;i++) dzU[i]= dz[i-1];
+	for(int i=0;i<m-1;i++) dzD[i] = dz[i+1];
+
+	// determine minimum acceptable delta t (diffusion number > 1/2) [s]
+	dt=1e12; 
+	for(int i=0;i<m;i++)dt = fmin(dt,CI * pow(dz[i],2) * d[i]  / (3 * K[i]));
+
+	// smallest possible even integer of 60 min where diffusion number > 1/2
+	// must go evenly into one hour or the data frequency if it is smaller
+
+	// all integer factors of the number of second in a day (86400 [s])
+	int f[45] = {1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 30, 36, 40, 45, 48, 50, 60,
+    72, 75, 80, 90, 100, 120, 144, 150, 180, 200, 225, 240, 300, 360, 400, 450, 600, 720, 900, 1200, 1800, 3600};
+
+	// return the min integer factor that is < dt
+	max_fdt=f[0];
+	for(int i=0;i<45;i++){
+		if (f[i]<dt)if(f[i]>=max_fdt)max_fdt=f[i];
+	}
+	dt=max_fdt;
+	
+	// determine mean (harmonic mean) of K/dz for u, d, & p
+	Au = xNew<IssmDouble>(m);
+	Ad = xNew<IssmDouble>(m);
+	Ap = xNew<IssmDouble>(m);
+	for(int i=0;i<m;i++){
+		Au[i] = pow((dzU[i]/2/KP[i] + dz[i]/2/KU[i]),-1);
+		Ad[i] = pow((dzD[i]/2/KP[i] + dz[i]/2/KD[i]),-1);
+		Ap[i] = (d[i]*dz[i]*CI)/dt;
+	}
+	
+	// create "neighbor" coefficient matrix
+	Nu = xNew<IssmDouble>(m);
+	Nd = xNew<IssmDouble>(m);
+	Np = xNew<IssmDouble>(m);
+	for(int i=0;i<m;i++){
+		Nu[i] = Au[i] / Ap[i];
+		Nd[i] = Ad[i] / Ap[i];
+		Np[i]= 1 - Nu[i] - Nd[i];
+	}
+	
+	// specify boundary conditions: constant flux at bottom
+	Nu[m-1] = 0;
+	Np[m-1] = 1;
+	
+	// zero flux at surface
+	Np[0] = 1 - Nd[0];
+	
+	// Create neighbor arrays for diffusion calculations instead of a tridiagonal matrix
+	Nu[0] = 0;
+	Nd[m-1] = 0;
+	
+	/* RADIATIVE FLUXES*/
+
+	// energy supplied by shortwave radiation [J]
+	sw = xNew<IssmDouble>(m);
+	for(int i=0;i<m;i++) sw[i]= swf[i] * dt;
+	
+	// temperature change due to SW
+	dT_sw = xNew<IssmDouble>(m);
+	for(int i=0;i<m;i++) dT_sw[i]= sw[i] / (CI * d[i] * dz[i]);
+
+	// Upward longwave radiation flux is calculated from the snow surface
+	// temperature which is set equal to the average temperature of the
+	// top grid cells.
+
+	// energy supplied by downward longwave radiation to the top grid cell [J]
+	dlw = dlwrf * dt;
+
+	// temperature change due to dlw_surf
+	dT_dlw = dlw / TCs;
+
+	// PREALLOCATE ARRAYS BEFORE LOOP FOR IMPROVED PERFORMANCE
+	T0 = xNewZeroInit<IssmDouble>(m+2);
+	Tu=xNew<IssmDouble>(m);
+	Td=xNew<IssmDouble>(m);
+
+	/* CALCULATE ENERGY SOURCES AND DIFFUSION FOR EVERY TIME STEP [dt]*/
+	for (IssmDouble i=1;i<=dt0;i+=dt){
+
+		// PART OF ENERGY CONSERVATION CHECK
+		// store initial temperature
+		//T_init = T;
+    
+		// calculate temperature of snow surface (Ts)
+		// when incoming SW radition is allowed to penetrate the surface,
+		// the modeled energy balance becomes very sensitive to how Ts is
+		// calculated.  The estimated enegy balance & melt are significanly
+		// less when Ts is taken as the mean of the x top grid cells.
+		Ts = (T[0] + T[1])/2;
+		Ts = fmin(273.15,Ts);    // don't allow Ts to exceed 273.15 K (0°C)
+		
+		//TURBULENT HEAT FLUX
+    
+		// MoninObukhov Stability Correction
+		// Reference:
+		// Ohmura, A., 1982: Climate and Energy-Balance on the Arctic Tundra.
+		// Journal of Climatology, 2, 65-84.
+
+		// calculate the Bulk Richardson Number (Ri)
+		Ri = (2*9.81* (Vz - z0) * (Ta - Ts)) / ((Ta + Ts)* pow(V,2.0));
+		
+		// calculate Monin-Obukhov stability factors 'coefM' and 'coefH'
+    
+		// do not allow Ri to exceed 0.19
+		Ri = fmin(Ri, 0.19);
+
+		// calculate momentum 'coefM' stability factor
+		if (Ri > 0){
+			// if stable
+			coefM = 1/(1-5.2*Ri);
+		}
+		else {
+			coefM =pow (1-18*Ri,-0.25);
+		}
+		
+		// calculate heat/wind 'coef_H' stability factor
+		if (Ri < -0.03) coefH = 1.3 * coefM;
+		else coefH = coefM;
+		
+		//// Sensible Heat
+		// calculate the sensible heat flux [W m-2](Patterson, 1998)
+		shf = C * 1005 * (Ta - Ts);
+
+		// adjust using MoninObukhov stability theory
+		shf = shf / (coefM * coefH);
+
+		//// Latent Heat
+		// determine if snow pack is melting & calcualte surface vapour pressure over ice or liquid water
+		if (Ts >= 273.15){
+			L = 2.495E6;
+
+			// for an ice surface Murphy and Koop, 2005 [Equation 7]
+			eS = exp(9.550426 - 5723.265/Ts + 3.53068 * log(Ts) - 0.00728332 * Ts);
+		}
+		else{
+			L = 2.8295E6; // latent heat of sublimation for liquid surface (assume liquid on surface when Ts == 0 deg C)
+			// Wright (1997), US Meteorological Handbook from Murphy and Koop, 2005 Appendix A
+			eS = 611.21 * exp(17.502 * (Ts - 273.15) / (240.97 + Ts - 273.15));
+		}
+		
+		// Latent heat flux [W m-2]
+		lhf = C * L * (eAir - eS) * 0.622 / pAir;
+		
+		// adjust using MoninObukhov stability theory (if lhf '+' then there is energy and mass gained at the surface, 
+		// if '-' then there is mass and energy loss at the surface.
+		lhf = lhf / (coefM * coefH);
+
+		//mass loss (-)/acreation(+) due to evaporation/condensation [kg]
+		EC_day = lhf * 86400 / L;
+
+		// temperature change due turbulent fluxes
+		turb = (shf + lhf)* dt;
+		dT_turb = turb  / TCs;
+
+		// upward longwave contribution
+		ulw = - SB * pow(Ts,4.0) * dt;
+		dT_ulw = ulw / TCs;
+		
+		// new grid point temperature
+    
+		//SW penetrates surface
+		for(int j=0;j<m;j++) T[j] = T[j] + dT_sw[j];
+		T[0] = T[0] + dT_dlw + dT_ulw + dT_turb;
+		
+		// temperature diffusion
+		for(int j=0;j<m;j++)T0[1+j]=T[j];
+		for(int j=0;j<m;j++) Tu[j] = T0[j];
+		for(int j=0;j<m;j++) Td[j] = T0[2+j];
+		for(int j=0;j<m;j++) T[j] = (Np[j] * T[j]) + (Nu[j] * Tu[j]) + (Nd[j] * Td[j]);
+		
+		// calculate cumulative evaporation (+)/condensation(-)
+		EC = EC + (EC_day/86400)*dt;
+    
+		/* CHECK FOR ENERGY (E) CONSERVATION [UNITS: J]
+		//energy flux across lower boundary (energy supplied by underling ice)
+		base_flux = Ad(-1)*(T_init()-T_init(-1)) * dt;
+
+		E_used = sum((T - T_init) * (d*dz*CI));
+		E_sup = ((sum(swf)  * dt) + dlw + ulw + turb + base_flux);
+
+		E_diff = E_used - E_sup;
+
+		if abs(E_diff) > 1E-6 || isnan(E_diff)
+		disp(T(1))
+		_error_("energy not conserved in thermodynamics equations");
+		*/
+	}
+	
+	/*Free ressources:*/
+	xDelete<IssmDouble>(K);
+	xDelete<IssmDouble>(KU);
+	xDelete<IssmDouble>(KD);
+	xDelete<IssmDouble>(KP);
+	xDelete<IssmDouble>(Au);
+	xDelete<IssmDouble>(Ad);
+	xDelete<IssmDouble>(Ap);
+	xDelete<IssmDouble>(Nu);
+	xDelete<IssmDouble>(Nd);
+	xDelete<IssmDouble>(Np);
+	xDelete<IssmDouble>(dzU);
+	xDelete<IssmDouble>(dzD);
+	xDelete<IssmDouble>(sw);
+	xDelete<IssmDouble>(dT_sw);
+	xDelete<IssmDouble>(lw);
+	xDelete<IssmDouble>(T0);
+	xDelete<IssmDouble>(Tu);
+	xDelete<IssmDouble>(Td);
+
+
+	/*Assign output pointers:*/
+	*pEC=EC;
+
+}  /*}}}*/
+void shortwave(IssmDouble** pswf, int swIdx, int aIdx, IssmDouble dsw, IssmDouble as, IssmDouble* d, IssmDouble* dz, IssmDouble* re, int m, int sid){ /*{{{*/
+
+	// DISTRIBUTES ABSORBED SHORTWAVE RADIATION WITHIN SNOW/ICE
+
+	// swIdx = 0 : all absorbed SW energy is assigned to the top grid cell
+
+	// swIdx = 1 : absorbed SW is distributed with depth as a function of:
+	//   1 : snow density (taken from Bassford, 2004)
+	//   2 : grain size in 3 spectral bands (Brun et al., 1992)
+
+	// Inputs
+	//   swIdx   = shortwave allowed to penetrate surface (0 = No, 1 = Yes)
+	//   aIdx    = method for calculating albedo (1-4)
+	//   dsw     = downward shortwave radiative flux [w m-2]
+	//   as      = surface albedo
+	//   d       = grid cell density [kg m-3]
+	//   dz      = grid cell depth [m]
+	//   re      = grid cell effective grain radius [mm]
+
+	// Outputs
+	//   swf     = absorbed shortwave radiation [W m-2]
+	//
+	
+	/*outputs: */
+	IssmDouble* swf=NULL;
+
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   shortwave module\n");
+
+	/*Initialize and allocate: */
+	swf=xNewZeroInit<IssmDouble>(m);
+
+
+	// SHORTWAVE FUNCTION
+	if (swIdx == 0) {// all sw radation is absorbed in by the top grid cell
+        
+		// calculate surface shortwave radiation fluxes [W m-2]
+		swf[0] = (1 - as) * dsw;
+	}
+	else{ // sw radation is absorbed at depth within the glacier
+
+		if (aIdx == 2){    // function of effective radius (3 spectral bands)
+
+			IssmDouble * gsz=NULL;
+			IssmDouble * B1_cum=NULL;
+			IssmDouble * B2_cum=NULL;
+			IssmDouble* h =NULL;
+			IssmDouble* B1 =NULL;
+			IssmDouble* B2 =NULL;
+			IssmDouble* exp1 = NULL;
+			IssmDouble* exp2 = NULL;
+			IssmDouble*  Qs1 = NULL;
+			IssmDouble*  Qs2 = NULL;
+
+			// convert effective radius [mm] to grain size [m]
+			gsz=xNew<IssmDouble>(m);
+			for(int i=0;i<m;i++) gsz[i]= (re[i] * 2) / 1000;
+
+			// Spectral fractions [0.3-0.8um 0.8-1.5um 1.5-2.8um]
+			// (Lefebre et al., 2003)
+			IssmDouble sF[3] = {0.606, 0.301, 0.093};
+
+			// initialize variables
+			B1_cum=xNew<IssmDouble>(m+1);
+			B2_cum=xNew<IssmDouble>(m+1);
+			for(int i=0;i<m+1;i++){
+				B1_cum[i]=1;
+				B2_cum[i]=1;
+			}
+
+
+			// spectral albedos:
+			// 0.3 - 0.8um
+			IssmDouble a0 = fmin(0.98, 1 - 1.58 *pow(gsz[0],0.5));
+			// 0.8 - 1.5um
+			IssmDouble a1 = fmax(0, 0.95 - 15.4 *pow(gsz[0],0.5));
+			// 1.5 - 2.8um
+			IssmDouble a2 = fmax(0.127, 0.88 + 346.3*gsz[0] - 32.31*pow(gsz[0],0.5));
+
+			// separate net shortwave radiative flux into spectral ranges
+			IssmDouble swfS[3];
+			swfS[0] = (sF[0] * dsw) * (1 - a0);
+			swfS[1] = (sF[1] * dsw) * (1 - a1);
+			swfS[2] = (sF[2] * dsw) * (1 - a2);
+
+			// absorption coeficient for spectral range:
+			h =xNew<IssmDouble>(m);
+			B1 =xNew<IssmDouble>(m);
+			B2 =xNew<IssmDouble>(m);
+			for(int i=0;i<m;i++) h[i]= d[i] /(pow(gsz[i],0.5));
+			for(int i=0;i<m;i++) B1[i] = .0192 * h[i];                 // 0.3 - 0.8um
+			for(int i=0;i<m;i++) B2[i]= .1098 * h[i];                 // 0.8 - 1.5um
+			// B3 = +inf                     // 1.5 - 2.8um
+
+			// cumulative extinction factors
+			exp1 = xNew<IssmDouble>(m); 
+			exp2 = xNew<IssmDouble>(m); 
+			for(int i=0;i<m;i++) exp1[i]=exp(-B1[i]*dz[i]);
+			for(int i=0;i<m;i++) exp2[i]=exp(-B2[i]*dz[i]);
+
+			for(int i=0;i<m;i++){
+				IssmDouble cum1=exp1[0];
+				IssmDouble cum2=exp2[0];
+				for(int j=1;j<=i;j++){
+					cum1 = cum1*exp1[j];
+					cum2 = cum2*exp2[j];
+				}
+				B1_cum[i+1]=cum1;
+				B2_cum[i+1]=cum2;
+			}
+
+
+			// flux across grid cell boundaries
+			Qs1 = xNew<IssmDouble>(m+1);
+			Qs2 = xNew<IssmDouble>(m+1);
+			for(int i=0;i<m+1;i++){
+				Qs1[i] = swfS[0] * B1_cum[i];
+				Qs2[i] = swfS[1] * B2_cum[i];
+			}
+
+			// net energy flux to each grid cell
+			for(int i=0;i<m;i++) swf[i]= (Qs1[i]-Qs1[i+1]) + (Qs2[i]-Qs2[i+1]);
+
+			// add flux absorbed at surface
+			swf[0] = swf[0]+ swfS[2];
+
+			/*Free ressources: */
+			xDelete<IssmDouble>(gsz);
+			xDelete<IssmDouble>(B1_cum);
+			xDelete<IssmDouble>(B2_cum);
+			xDelete<IssmDouble>(h);
+			xDelete<IssmDouble>(B1);
+			xDelete<IssmDouble>(B2);
+			xDelete<IssmDouble>(exp1);
+			xDelete<IssmDouble>(exp2);
+			xDelete<IssmDouble>(Qs1);
+			xDelete<IssmDouble>(Qs2);
+			
+			
+		}
+		else{  //function of grid cell density
+
+			/*intermediary: */
+			IssmDouble* B_cum = NULL;
+			IssmDouble* exp_B = NULL;
+			IssmDouble* Qs    = NULL;
+			IssmDouble* B    = NULL;
+
+			// fraction of sw radiation absorbed in top grid cell (wavelength > 0.8um)
+			IssmDouble SWs = 0.36;
+
+			// SWs and SWss coefficients need to be better constranted. Greuell
+			// and Konzelmann 1994 used SWs = 0.36 and SWss = 0.64 as this the
+			// the // of SW radiation with wavelengths > and < 800 nm
+			// respectively.  This, however, may not account for the fact that
+			// the albedo of wavelengths > 800 nm has a much lower albedo.
+
+			// calculate surface shortwave radiation fluxes [W m-2]
+			IssmDouble swf_s = SWs * (1 - as) * dsw;
+
+			// calculate surface shortwave radiation fluxes [W m-2]
+			IssmDouble swf_ss = (1-SWs) * (1 - as) * dsw;
+
+			// SW allowed to penetrate into snowpack
+			IssmDouble Bs = 10;    // snow SW extinction coefficient [m-1] (Bassford,2006)
+			IssmDouble Bi = 1.3;   // ice SW extinction coefficient [m-1] (Bassford,2006)
+
+			// calculate extinction coefficient B [m-1] vector
+			B=xNew<IssmDouble>(m);
+			for(int i=0;i<m;i++) B[i] = Bs + (300 - d[i]) * ((Bs - Bi)/(910 - 300));
+
+			// cumulative extinction factor
+			B_cum = xNew<IssmDouble>(m+1);
+			exp_B = xNew<IssmDouble>(m);
+			for(int i=0;i<m;i++)exp_B[i]=exp(-B[i]*dz[i]);
+
+			B_cum[0]=1;
+			for(int i=0;i<m;i++){
+				IssmDouble cum_B=exp_B[0];
+				for(int j=1;j<=i;j++) cum_B=cum_B*exp_B[j];
+				B_cum[i+1]=  cum_B;
+			}
+
+			// flux across grid cell boundaries
+			Qs=xNew<IssmDouble>(m+1);
+			for(int i=0;i<m+1;i++) Qs[i] = swf_ss * B_cum[i];
+
+			// net energy flux to each grid cell
+			for(int i=0;i<m;i++) swf[i] = (Qs[i]-Qs[i+1]);
+
+			// add flux absorbed at surface
+			swf[0] += swf_s;
+
+			/*Free ressources:*/
+			xDelete<IssmDouble>(B_cum);
+			xDelete<IssmDouble>(exp_B);
+			xDelete<IssmDouble>(Qs);
+			xDelete<IssmDouble>(B);
+		}
+	}
+	/*Assign output pointers: */
+	*pswf=swf;
+
+} /*}}}*/ 
+void accumulation(IssmDouble** pT, IssmDouble** pdz, IssmDouble** pd, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pm, IssmDouble T_air, IssmDouble P, IssmDouble dzMin, IssmDouble aSnow, int sid){ /*{{{*/
+
+	// Adds precipitation and deposition to the model grid
+
+	// Author: Alex Gardner, University of Alberta
+	// Date last modified: JAN, 2008
+
+	/* Description:
+	   adjusts the properties of the top grid cell to account for accumulation
+	   T_air & T = Air and top grid cell temperatures [K]
+	   dz = topgrid cell length [m]
+	   d = density of top grid gell [kg m-3]
+	   P = precipitation [mm w.e.] or [kg m-3]
+	   re = effective grain radius [mm]
+	   gdn = grain dentricity
+	   gsp = grain sphericity*/
+
+	// MAIN FUNCTION
+	// specify constants
+	const IssmDouble dIce = 910;     // density of ice [kg m-3]
+	const IssmDouble dSnow = 150;    // density of snow [kg m-3]
+	const IssmDouble reNew = 0.1;    // new snow grain size [mm]
+	const IssmDouble gdnNew = 1;     // new snow dendricity 
+	const IssmDouble gspNew = 0.5;   // new snow sphericity 
+
+	/*intermediary: */
+	IssmDouble* mInit=NULL;
+	bool        top=true;
+	IssmDouble  mass, massinit, mass_diff;
+
+	/*output: */
+	IssmDouble* T=NULL;
+	IssmDouble* dz=NULL;
+	IssmDouble* d=NULL;
+	IssmDouble* W=NULL;
+	IssmDouble* a=NULL;
+	IssmDouble* re=NULL;
+	IssmDouble* gdn=NULL;
+	IssmDouble* gsp=NULL;
+	int         m;
+
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   accumulation module\n");
+
+	/*Recover pointers: */
+	T=*pT;
+	dz=*pdz;
+	d=*pd;
+	W=*pW;
+	a=*pa;
+	re=*pre;
+	gdn=*pgdn;
+	gsp=*pgsp;
+	m=*pm;
+
+	// determine initial mass
+	mInit=xNew<IssmDouble>(m);
+	for(int i=0;i<m;i++) mInit[i]= d[i] * dz[i];
+	massinit=0; for(int i=0;i<m;i++)massinit+=mInit[i];
+
+	if (P > 0){
+			
+
+		if (T_air <= 273.15){ // if snow
+
+			IssmDouble  z_snow = P/dSnow;               // depth of snow
+
+			// if snow depth is greater than specified min dz, new cell created
+			if (z_snow > dzMin){
+
+				newcell(&T,T_air,top,m); //new cell T
+				newcell(&dz,z_snow,top,m); //new cell dz
+				newcell(&d,dSnow,top,m); //new cell d
+				newcell(&W,0,top,m); //new cell W
+				newcell(&a,aSnow,top,m); //new cell a
+				newcell(&re,reNew,top,m); //new cell grain size
+				newcell(&gdn,gdnNew,top,m); //new cell grain dendricity
+				newcell(&gsp,gspNew,top,m); //new cell grain sphericity
+				m=m+1;
+			}
+			else { // if snow depth is less than specified minimum dz snow
+
+				IssmDouble mass = mInit[0] + P;         // grid cell adjust mass
+
+				dz[0] = dz[0] + P/dSnow;    // adjust grid cell depth      
+				d[0] = mass / dz[0];    // adjust grid cell density
+
+				// adjust variables as a linearly weighted function of mass
+				// adjust temperature (assume P is same temp as air)
+				T[0] = (T_air * P + T[0] * mInit[0])/mass;
+
+				// adjust a, re, gdn & gsp
+				a[0] = (aSnow * P + a[0] * mInit[0])/mass;
+				re[0] = (reNew * P + re[0] * mInit[0])/mass;
+				gdn[0] = (gdnNew * P + gdn[0] * mInit[0])/mass;
+				gsp[0] = (gspNew * P + gsp[0] * mInit[0])/mass;
+			}
+		}
+		else{ // if rain    
+
+			/*rain is added by increasing the mass and temperature of the ice
+			  of the top grid cell.  Temperatures are set artifically high to
+			  account for the latent heat of fusion.  This is the same as
+			  directly adding liquid water to the the snow pack surface but
+			  makes the numerics easier.*/
+
+			IssmDouble LF = 0.3345E6;  // latent heat of fusion(J kg-1)
+			IssmDouble CI = 2102;      // specific heat capacity of snow/ice (J kg-1 k-1)
+
+			// grid cell adjust mass
+			mass = mInit[0] + P;
+
+			// adjust temperature
+			// liquid: must account for latent heat of fusion
+			T[0] = (P *(T_air + LF/CI) + T[0] * mInit[0]) / mass;
+
+			// adjust grid cell density
+			d[0] = mass / dz[0];
+
+			// if d > the density of ice, d = dIce
+			if (d[0] > dIce){
+				d[0] = dIce;           // adjust d
+				dz[0] = mass / d[0];    // dz is adjusted to conserve mass
+			}
+		}
+
+		// check for conservation of mass
+		mass=0; for(int i=0;i<m;i++)mass+=d[i]*dz[i]; 
+
+		mass_diff = mass - massinit - P;
+		
+		#ifndef _HAVE_ADOLC_  //avoid round operation. only check in forward mode.
+		mass_diff = round(mass_diff * 100)/100;
+		if (mass_diff > 0) _error_("mass not conserved in accumulation function");
+		#endif
+
+	}
+	/*Free ressources:*/
+	if(mInit)xDelete<IssmDouble>(mInit);
+
+	/*Assign output pointers:*/
+	*pT=T;
+	*pdz=dz;
+	*pd=d;
+	*pW=W;
+	*pa=a;
+	*pre=re;
+	*pgdn=gdn;
+	*pgsp=gsp;
+	*pm=m;
+} /*}}}*/
+void melt(IssmDouble* pM, IssmDouble* pR, IssmDouble* pmAdd, IssmDouble* pdz_add, IssmDouble** pT, IssmDouble** pd, IssmDouble** pdz, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pn, IssmDouble dzMin, IssmDouble zMax, IssmDouble zMin, IssmDouble zTop, int sid){ /*{{{*/
+
+	//// MELT ROUTINE
+
+	// Description:
+	// computes the quantity of meltwater due to snow temperature in excess of
+	// 0 deg C, determines pore water content and adjusts grid spacing
+
+	/*intermediary:*/
+	IssmDouble* m=NULL;
+	IssmDouble* maxF=NULL;
+	IssmDouble* dW=NULL;
+	IssmDouble* exsW=NULL;
+	IssmDouble* exsT=NULL;
+	IssmDouble* surpT=NULL;
+	IssmDouble* surpE=NULL;
+	IssmDouble* F=NULL;
+	IssmDouble* flxDn=NULL;
+	IssmDouble  ER=0;
+	IssmDouble* EI=NULL;
+	IssmDouble* EW=NULL;
+	IssmDouble* M=NULL;
+	int*       D=NULL;
+	
+	IssmDouble sumM;
+	IssmDouble sumER;
+	IssmDouble addE;
+	IssmDouble mSum0;
+	IssmDouble sumE0;
+	IssmDouble mSum1;
+	IssmDouble sumE1;
+	IssmDouble dE;
+	IssmDouble dm;
+	IssmDouble X;
+	IssmDouble Wi;
+    
+	IssmDouble Ztot;
+	IssmDouble T_bot;
+	IssmDouble m_bot;
+	IssmDouble dz_bot;
+	IssmDouble d_bot;
+	IssmDouble W_bot;
+	IssmDouble a_bot;
+	IssmDouble re_bot;
+	IssmDouble gdn_bot;
+	IssmDouble gsp_bot;
+	bool        top=false;
+    
+	IssmDouble* Zcum=NULL;
+	IssmDouble* dzMin2=NULL;
+	IssmDouble zY2=1.025;
+	bool lastCellFlag;
+	int X1=0;
+	int X2=0;
+    
+	int        D_size;
+
+	/*outputs:*/
+	IssmDouble  mAdd;
+	IssmDouble dz_add;
+	IssmDouble  Rsum;
+	IssmDouble* T=*pT;
+	IssmDouble* d=*pd;
+	IssmDouble* dz=*pdz;
+	IssmDouble* W=*pW;
+	IssmDouble* a=*pa;
+	IssmDouble* re=*pre;
+	IssmDouble* gdn=*pgdn;
+	IssmDouble* gsp=*pgsp;
+	int         n=*pn;
+	IssmDouble* R=0;
+	
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   melt module\n");
+
+	//// INITIALIZATION
+
+	/*Allocations: */
+	M=xNewZeroInit<IssmDouble>(n); 
+	maxF=xNew<IssmDouble>(n); 
+	dW=xNew<IssmDouble>(n); 
+
+	// specify constants
+	const IssmDouble CtoK = 273.15;  // clecius to Kelvin conversion
+	const IssmDouble CI = 2102;      // specific heat capacity of snow/ice (J kg-1 k-1)
+	const IssmDouble LF = 0.3345E6;  // latent heat of fusion(J kg-1)
+	const IssmDouble dPHC = 830;     // pore hole close off density[kg m-3]
+	const IssmDouble dIce = 910;     // density of ice [kg m-3]
+
+	// store initial mass [kg] and energy [J]
+	m=xNew<IssmDouble>(n); for(int i=0;i<n;i++) m[i] = dz[i]* d[i];                    // grid cell mass [kg]
+	EI=xNew<IssmDouble>(n); for(int i=0;i<n;i++)EI[i] = m[i] * T[i] * CI;               // initial enegy of snow/ice
+	EW=xNew<IssmDouble>(n); for(int i=0;i<n;i++)EW[i]= W[i] * (LF + CtoK * CI);     // initial enegy of water
+
+	mSum0 = cellsum(W,n) + cellsum(m,n);        // total mass [kg]
+	sumE0 = cellsum(EI,n) + cellsum(EW,n);      // total energy [J]
+
+	// initialize melt and runoff scalars
+	Rsum = 0;       // runoff [kg]
+	sumM = 0;       // total melt [kg]
+	mAdd = 0;       // mass added/removed to/from base of model [kg]
+	addE = 0;       // energy added/removed to/from base of model [J]
+	dz_add=0;      // thickness of the layer added/removed to/from base of model [m]
+
+	// calculate temperature excess above 0 deg C
+	exsT=xNewZeroInit<IssmDouble>(n);
+	for(int i=0;i<n;i++) exsT[i]= fmax(0, T[i] - CtoK);        // [K] to [°C]
+
+	// new grid point center temperature, T [K]
+	for(int i=0;i<n;i++) T[i]-=exsT[i];
+
+	// specify irreducible water content saturation [fraction]
+	const IssmDouble Swi = 0.07;                     // assumed constant after Colbeck, 1974
+
+	//// REFREEZE PORE WATER
+	// check if any pore water
+	if (cellsum(W,n) > 0){
+		if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("      pore water refreeze\n");
+		// calculate maximum freeze amount, maxF [kg]
+		for(int i=0;i<n;i++) maxF[i] = fmax(0, -((T[i] - CtoK) * m[i] * CI) / LF);
+
+		// freeze pore water and change snow/ice properties
+		for(int i=0;i<n;i++) dW[i] = fmin(maxF[i], W[i]);    // freeze mass [kg]   
+		for(int i=0;i<n;i++) W[i] -= dW[i];                                            // pore water mass [kg]
+		for(int i=0;i<n;i++) m[i] += dW[i];                                            // new mass [kg]
+		for(int i=0;i<n;i++) d[i] = m[i] / dz[i];                                    // density [kg m-3]   
+		for(int i=0;i<n;i++) T[i] = T[i] + (dW[i]*(LF+(CtoK - T[i])*CI)/(m[i]*CI));      // temperature [K]
+
+		// if pore water froze in ice then adjust d and dz thickness
+		for(int i=0;i<n;i++)if(d[i]>dIce)d[i]=dIce;
+		for(int i=0;i<n;i++) dz[i]= m[i]/d[i];
+	}
+
+	// squeeze water from snow pack
+	exsW=xNew<IssmDouble>(n); 
+	for(int i=0;i<n;i++){
+		Wi= (910 - d[i]) * Swi * (m[i] / d[i]);        // irreducible water content [kg]
+		exsW[i] = fmax(0, W[i] - Wi);                  // water "squeezed" from snow [kg]
+	}
+
+	//// MELT, PERCOLATION AND REFREEZE
+
+	// run melt algorithm if there is melt water or excess pore water
+	if ((cellsum(exsT,n) > 0) || (cellsum(exsW,n) > 0)){
+		// _printf_(""MELT OCCURS");
+		// check to see if thermal energy exceeds energy to melt entire cell
+		// if so redistribute temperature to lower cells (temperature surplus)
+		// (maximum T of snow before entire grid cell melts is a constant
+		// LF/CI = 159.1342)
+		surpT=xNew<IssmDouble>(n); for(int i=0;i<n;i++)surpT[i] = fmax(0, exsT [i]- 159.1342);
+        
+		if (cellsum(surpT,n) > 0 ){
+			// _printf_("T Surplus");
+			// calculate surplus energy
+			surpE=xNew<IssmDouble>(n); for(int i=0;i<n;i++)surpE[i] = surpT[i] * CI * m[i];
+            
+			int i = 0;
+			while (cellsum(surpE,n) > 0){
+				// use surplus energy to increase the temperature of lower cell
+				T[i+1] = surpE[i]/m[i+1]/CI + T[i+1];
+                
+				exsT[i+1] = fmax(0, T[i+1] - CtoK) + exsT[i+1];
+				T[i+1] = fmin(CtoK, T[i+1]);
+                
+				surpT[i+1] = fmax(0, exsT[i+1] - 159.1342);
+				surpE[i+1] = surpT[i+1] * CI * m[i+1];
+                
+				// adjust current cell properties (again 159.1342 is the max T)
+				exsT[i] = 159.1342;
+				surpE[i] = 0;
+				i = i + 1;
+			}
+		}
+
+		// convert temperature excess to melt [kg]
+		for(int i=0;i<n;i++) M[i] = exsT[i] * d[i] * dz[i] * CI / LF;      // melt
+		sumM = cellsum(M,n);                                               // total melt [kg]
+
+		// calculate maximum refreeze amount, maxF [kg]
+		for(int i=0;i<n;i++)maxF[i] = fmax(0, -((T[i] - CtoK) * d[i] * dz[i] * CI)/ LF);
+
+		// initialize refreeze, runoff, flxDn and dW vectors [kg]
+ 		IssmDouble* F = xNewZeroInit<IssmDouble>(n);
+		IssmDouble* R=xNewZeroInit<IssmDouble>(n);
+
+		for(int i=0;i<n;i++)dW[i] = 0;
+		flxDn=xNewZeroInit<IssmDouble>(n+1); for(int i=0;i<n;i++)flxDn[i+1]=F[i];
+
+		// determine the deepest grid cell where melt/pore water is generated
+		X = 0;
+		for(int i=n-1;i>=0;i--){
+			if(M[i]>0 || reCast<int,IssmDouble>(exsW[i])){
+				X=i;
+				break;
+			}
+		}
+
+		//// meltwater percolation
+		for(int i=0;i<n;i++){
+			// calculate total melt water entering cell
+			IssmDouble inM = M[i]+ flxDn[i];
+
+			// break loop if there is no meltwater and if depth is > mw_depth
+			if (inM == 0 && i > X){
+				break;
+			}
+
+			// if reaches impermeable ice layer all liquid water runs off (R)
+			else if (d[i] >= dIce){  // dPHC = pore hole close off [kg m-3]
+				// _printf_("ICE LAYER");
+				// no water freezes in this cell
+				// no water percolates to lower cell
+				// cell ice temperature & density do not change
+
+				m[i] = m[i] - M[i];                     // mass after melt
+				Wi = (910-d[i]) * Swi * (m[i]/d[i]);    // irreducible water 
+				dW[i] = fmin(inM, Wi - W[i]);            // change in pore water
+				R[i] = fmax(0, inM - dW[i]);             // runoff
+			}
+			// check if no energy to refreeze meltwater
+			else if (maxF[i] == 0){
+				// _printf_("REFREEZE == 0");
+				// no water freezes in this cell
+				// cell ice temperature & density do not change
+
+				m[i] = m[i] - M[i];                     // mass after melt
+				Wi = (910-d[i]) * Swi * (m[i]/d[i]);    // irreducible water 
+				dW[i] = fmin(inM, Wi-W[i]);              // change in pore water
+				flxDn[i+1] = fmax(0, inM-dW[i]);         // meltwater out
+				F[i] = 0;                               // no freeze 
+			}
+			// some or all meltwater refreezes
+			else{
+				// change in density density and temperature
+				// _printf_("MELT REFREEZE");
+				//-----------------------melt water-----------------------------
+				IssmDouble dz_0 = m[i]/d[i];          
+				IssmDouble dMax = (dIce - d[i])*dz_0;              // d max = dIce
+				IssmDouble F1 = fmin(fmin(inM,dMax),maxF[i]);         // maximum refreeze               
+				m[i] = m[i] + F1;                       // mass after refreeze
+				d[i] = m[i]/dz_0;
+
+				//-----------------------pore water-----------------------------
+				Wi = (910-d[i])* Swi * dz_0;            // irreducible water 
+				dW[i] = fmin(inM - F1, Wi-W[i]);         // change in pore water
+				if (-dW[i]>W[i] ){
+					dW[i]= W[i];
+				}
+				IssmDouble F2 = 0;                                 
+
+				if (dW[i] < 0){                         // excess pore water
+					dMax = (dIce - d[i])*dz_0;          // maximum refreeze                                             
+					IssmDouble maxF2 = fmin(dMax, maxF[i]-F1);      // maximum refreeze
+					F2 = fmin(-dW[i], maxF2);            // pore water refreeze
+					m[i] = m[i] + F2;                   // mass after refreeze
+					d[i] = m[i]/dz_0;
+				}
+
+				flxDn[i+1] = inM - F1 - dW[i] - F2;     // meltwater out        
+				T[i] = T[i] + ((F1+F2)*(LF+(CtoK - T[i])*CI)/(m[i]*CI));// change in temperature
+
+
+				// check if an ice layer forms 
+				if (d[i] == dIce){
+					// _printf_("ICE LAYER FORMS");
+					// excess water runs off
+					R[i] = flxDn[i+1];
+					// no water percolates to lower cell
+					flxDn[i+1] = 0;
+				}
+			}
+		}
+
+
+		//// GRID CELL SPACING AND MODEL DEPTH
+		for(int i=0;i<n;i++)if (W[i] < 0) _error_("negative pore water generated in melt equations");
+		
+		// delete all cells with zero mass
+		// adjust pore water
+		for(int i=0;i<n;i++)W[i] += dW[i];
+
+		// delete all cells with zero mass
+		D_size=0; for(int i=0;i<n;i++)if(m[i]!=0)D_size++; D=xNew<int>(D_size);
+		D_size=0; for(int i=0;i<n;i++)if(m[i]!=0){ D[D_size] = i; D_size++;}
+		
+		celldelete(&m,n,D,D_size);
+		celldelete(&W,n,D,D_size);
+		celldelete(&d,n,D,D_size);
+		celldelete(&T,n,D,D_size);
+		celldelete(&a,n,D,D_size);
+		celldelete(&re,n,D,D_size);
+		celldelete(&gdn,n,D,D_size);
+		celldelete(&gsp,n,D,D_size);
+		celldelete(&EI,n,D,D_size);
+		celldelete(&EW,n,D,D_size);
+		celldelete(&R,n,D,D_size);
+		n=D_size;
+		xDelete<int>(D);
+	
+		// calculate new grid lengths
+		for(int i=0;i<n;i++)dz[i] = m[i] / d[i];
+
+		//calculate Rsum:
+		Rsum=cellsum(R,n);
+
+		/*Free ressources:*/
+		xDelete<IssmDouble>(F);
+		xDelete<IssmDouble>(R);
+	}
+    
+	//Merging of cells as they are burried under snow.
+	Zcum=xNew<IssmDouble>(n);
+	dzMin2=xNew<IssmDouble>(n);
+    
+	Zcum[0]=dz[0]; // Compute a cumulative depth vector
+    
+	for (int i=1;i<n;i++){
+		Zcum[i]=Zcum[i-1]+dz[i];
+	}
+    
+	for (int i=0;i<n;i++){
+		if (Zcum[i]<=zTop){
+			dzMin2[i]=dzMin;
+		}
+		else{
+			dzMin2[i]=zY2*dzMin2[i-1];
+		}
+	}
+
+	// check if depth is too small
+	X = 0;
+	for(int i=n-1;i>=0;i--){
+		if(dz[i]<dzMin2[i]){
+			X=i;
+			break;
+		}
+	}
+    
+	//Last cell has to be treated separately if has to be merged (no underlying cell so need to merge with overlying cell)
+	if(X==n-1){
+		lastCellFlag = true;
+		X = X-1;
+	}
+	else{
+		lastCellFlag = false;
+	}
+
+	for (int i = 0; i<=X;i++){
+		if (dz [i] < dzMin2[i]){                              // merge top cells
+			// _printf_("dz > dzMin * 2')
+			// adjust variables as a linearly weighted function of mass
+			IssmDouble m_new = m[i] + m[i+1];
+			T[i+1] = (T[i]*m[i] + T[i+1]*m[i+1]) / m_new;
+			a[i+1] = (a[i]*m[i] + a[i+1]*m[i+1]) / m_new;
+			re[i+1] = (re[i]*m[i] + re[i+1]*m[i+1]) / m_new;
+			gdn[i+1] = (gdn[i]*m[i] + gdn[i+1]*m[i+1]) / m_new;
+			gsp[i+1] = (gsp[i]*m[i] + gsp[i+1]*m[i+1]) / m_new;
+            
+			// merge with underlying grid cell and delete old cell
+			dz [i+1] = dz[i] + dz[i+1];                 // combine cell depths
+			d[i+1] = m_new / dz[i+1];                   // combine top densities
+			W[i+1] = W[i+1] + W[i];                     // combine liquid water
+			m[i+1] = m_new;                             // combine top masses
+            
+			// set cell to 99999 for deletion
+			m[i] = 99999;
+		}
+	}
+
+	//If last cell has to be merged
+	if(lastCellFlag){
+         //find closest cell to merge with
+		for(int i=n-2;i>=0;i--){
+			if(m[i]!=99999){
+				X2=i;
+				X1=n-1;
+				break;
+			}
+		}
+        
+		// adjust variables as a linearly weighted function of mass
+		IssmDouble m_new = m[X2] + m[X1];
+		T[X1] = (T[X2]*m[X2] + T[X1]*m[X1]) / m_new;
+		a[X1] = (a[X2]*m[X2] + a[X1]*m[X1]) / m_new;
+		re[X1] = (re[X2]*m[X2] + re[X1]*m[X1]) / m_new;
+		gdn[X1] = (gdn[X2]*m[X2] + gdn[X1]*m[X1]) / m_new;
+		gsp[X1] = (gsp[X2]*m[X2] + gsp[X1]*m[X1]) / m_new;
+        
+		// merge with underlying grid cell and delete old cell
+  		dz [X1] = dz[X2] + dz[X1];                 // combine cell depths
+		d[X1] = m_new / dz[X1];                   // combine top densities
+ 		W[X1] = W[X1] + W[X2];                     // combine liquid water
+		m[X1] = m_new;                             // combine top masses
+        
+		// set cell to 99999 for deletion
+		m[X2] = 99999;
+	}
+
+	// delete combined cells
+	D_size=0; for(int i=0;i<n;i++)if(m[i]!=99999)D_size++; D=xNew<int>(D_size); 
+	D_size=0; for(int i=0;i<n;i++)if(m[i]!=99999){ D[D_size] = i; D_size++;}
+
+	celldelete(&m,n,D,D_size);
+	celldelete(&W,n,D,D_size);
+	celldelete(&dz,n,D,D_size);
+	celldelete(&d,n,D,D_size);
+	celldelete(&T,n,D,D_size);
+	celldelete(&a,n,D,D_size);
+	celldelete(&re,n,D,D_size);
+	celldelete(&gdn,n,D,D_size);
+	celldelete(&gsp,n,D,D_size);
+	celldelete(&EI,n,D,D_size);
+	celldelete(&EW,n,D,D_size);
+	n=D_size;
+	xDelete<int>(D);
+    
+	// check if any of the top 10 cell depths are too large
+	X=0;
+	for(int i=9;i>=0;i--){
+		if(dz[i]> 2* dzMin){
+			X=i;
+			break;
+		}
+	}
+	
+	int i=0;
+	while(i<=X){
+		if (dz [i] > dzMin *2){
+
+				// _printf_("dz > dzMin * 2");
+				// split in two
+				cellsplit(&dz, n, i,.5);
+				cellsplit(&W, n, i,.5);
+				cellsplit(&m, n, i,.5);
+				cellsplit(&T, n, i,1.0);
+				cellsplit(&d, n, i,1.0);
+				cellsplit(&a, n, i,1.0);
+				cellsplit(&EI, n, i,1.0);
+				cellsplit(&EW, n, i,1.0);
+				cellsplit(&re, n, i,1.0);
+				cellsplit(&gdn, n, i,1.0);
+				cellsplit(&gsp, n, i,1.0);
+				n++;
+				X=X+1;
+		}
+		else i++;
+	}
+
+	//// CORRECT FOR TOTAL MODEL DEPTH
+	// WORKS FINE BUT HAS BEEN DISABLED FOR CONVIENCE OF MODEL OUTPUT
+	// INTERPRETATION
+	// // calculate total model depth
+	Ztot = cellsum(dz,n);
+    
+	if (Ztot < zMin){
+		// printf("Total depth < zMin %f \n", Ztot);
+		// mass and energy to be added
+		mAdd = m[n-1]+W[n-1];
+		addE = T[n-1]*m[n-1]*CI;
+        
+		// add a grid cell of the same size and temperature to the bottom
+		dz_bot=dz[n-1];
+		T_bot=T[n-1];
+		W_bot=W[n-1];
+		m_bot=m[n-1];
+		d_bot=d[n-1];
+		a_bot=a[n-1];
+		re_bot=re[n-1];
+		gdn_bot=gdn[n-1];
+		gsp_bot=gsp[n-1];
+        
+		dz_add=dz_bot;
+        
+		newcell(&dz,dz_bot,top,n);
+		newcell(&T,T_bot,top,n);
+		newcell(&W,W_bot,top,n);
+		newcell(&m,m_bot,top,n);
+		newcell(&d,d_bot,top,n);
+		newcell(&a,a_bot,top,n);
+		newcell(&re,re_bot,top,n);
+		newcell(&gdn,gdn_bot,top,n);
+		newcell(&gsp,gsp_bot,top,n);
+		n=n+1;
+	}
+	else if (Ztot > zMax){
+		// printf("Total depth > zMax %f \n", Ztot);
+		// mass and energy loss
+		mAdd = -(m[n-1]+W[n-1]);
+		addE = -(T[n-1]*m[n-1]*CI);
+		dz_add=-(dz[n-1]);
+        
+		// add a grid cell of the same size and temperature to the bottom
+		D_size=n-1;
+		D=xNew<int>(D_size);
+        
+		for(int i=0;i<n-1;i++) D[i]=i;
+		celldelete(&dz,n,D,D_size);
+		celldelete(&T,n,D,D_size);
+		celldelete(&W,n,D,D_size);
+		celldelete(&m,n,D,D_size);
+		celldelete(&d,n,D,D_size);
+		celldelete(&a,n,D,D_size);
+		celldelete(&re,n,D,D_size);
+		celldelete(&gdn,n,D,D_size);
+		celldelete(&gsp,n,D,D_size);
+		n=D_size;
+		xDelete<int>(D);
+        
+	}
+
+	//// CHECK FOR MASS AND ENERGY CONSERVATION
+
+	// calculate final mass [kg] and energy [J]
+	sumER = Rsum * (LF + CtoK * CI);
+	for(int i=0;i<n;i++)EI[i] = m[i] * T[i] * CI;
+	for(int i=0;i<n;i++)EW[i] = W[i] * (LF + CtoK * CI);
+
+	mSum1 = cellsum(W,n) + cellsum(m,n) + Rsum;
+	sumE1 = cellsum(EI,n) + cellsum(EW,n);
+
+	/*checks: */
+	for(int i=0;i<n;i++) if (W[i]<0) _error_("negative pore water generated in melt equations\n");
+	
+	/*only in forward mode! avoid round in AD mode as it is not differentiable: */
+	#ifndef _HAVE_ADOLC_
+	dm = round(mSum0 - mSum1 + mAdd);
+	dE = round(sumE0 - sumE1 - sumER +  addE);
+	if (dm !=0  || dE !=0) _error_("mass or energy are not conserved in melt equations\n"
+			<< "dm: " << dm << " dE: " << dE << "\n");
+	#endif
+	
+	/*Free ressources:*/
+	if(m)xDelete<IssmDouble>(m);
+	if(EI)xDelete<IssmDouble>(EI);
+	if(EW)xDelete<IssmDouble>(EW);
+	if(maxF)xDelete<IssmDouble>(maxF);
+	if(dW)xDelete<IssmDouble>(dW);
+	if(exsW)xDelete<IssmDouble>(exsW);
+	if(exsT)xDelete<IssmDouble>(exsT);
+	if(surpT)xDelete<IssmDouble>(surpT);
+	if(surpE)xDelete<IssmDouble>(surpE);
+	if(flxDn)xDelete<IssmDouble>(flxDn);
+	if(D)xDelete<int>(D);
+	if(M)xDelete<IssmDouble>(M);
+ 	xDelete<IssmDouble>(Zcum);
+	xDelete<IssmDouble>(dzMin2);
+    
+	/*Assign output pointers:*/
+	*pM=sumM;
+	*pR=Rsum;
+	*pmAdd=mAdd;
+	*pdz_add=dz_add;
+
+	*pT=T;
+	*pd=d;
+	*pdz=dz;
+	*pW=W;
+	*pa=a;
+	*pre=re;
+	*pgdn=gdn;
+	*pgsp=gsp;
+	*pn=n;
+
+} /*}}}*/ 
+void densification(IssmDouble* d,IssmDouble* dz, IssmDouble* T, IssmDouble* re, int denIdx, IssmDouble C, IssmDouble dt, IssmDouble Tmean,IssmDouble dIce, int m, int sid){ /*{{{*/
+
+	//// THIS NEEDS TO BE DOUBLE CHECKED AS THERE SEAMS TO BE LITTLE DENSIFICATION IN THE MODEL OUTOUT [MAYBE COMPATION IS COMPNSATED FOR BY TRACES OF SNOW???]
+
+	//// FUNCTION INFO
+
+	// Author: Alex Gardner, University of Alberta
+	// Date last modified: FEB, 2008 
+
+	// Description: 
+	//   computes the densification of snow/firn using the emperical model of
+	//   Herron and Langway (1980) or the semi-emperical model of Anthern et al.
+	//   (2010)
+
+	// Inputs:
+	//   denIdx = densification model to use:
+	//       1 = emperical model of Herron and Langway (1980)
+	//       2 = semi-imerical model of Anthern et al. (2010)
+	//       3 = physical model from Appendix B of Anthern et al. (2010)
+	//   d   = initial snow/firn density [kg m-3]
+	//   T   = temperature [K]
+	//   dz  = grid cell size [m]
+	//   C   = average accumulation rate [kg m-2 yr-1]
+	//   dt  = time lapsed [s]
+	//   re  = effective grain radius [mm];
+	//   Ta  = mean annual temperature                                          
+
+	// Reference: 
+	// Herron and Langway (1980), Anthern et al. (2010)
+
+	//// FOR TESTING
+	// denIdx = 2;
+	// d = 800;
+	// T = 270;
+	// dz = 0.005;
+	// C = 200;
+	// dt = 60*60;
+	// re = 0.7;
+	// Tmean = 273.15-18;
+
+	//// MAIN FUNCTION
+	// specify constants
+	dt      = dt / 86400;  // convert from [s] to [d]
+	// R     = 8.314        // gas constant [mol-1 K-1]
+	// Ec    = 60           // activation energy for self-diffusion of water
+	//                      // molecules through the ice tattice [kJ mol-1]
+	// Eg    = 42.4         // activation energy for grain growth [kJ mol-1]
+
+	/*intermediary: */
+	IssmDouble c0,c1,H;
+	
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   densification module\n");
+
+	// initial mass
+	IssmDouble* mass_init = xNew<IssmDouble>(m);for(int i=0;i<m;i++) mass_init[i]=d[i] * dz[i];
+	
+	/*allocations and initialization of overburden pressure and factor H: */
+	IssmDouble* cumdz = xNew<IssmDouble>(m-1);
+	cumdz[0]=dz[0];
+	for(int i=1;i<m-1;i++)cumdz[i]=cumdz[i-1]+dz[i];
+
+	IssmDouble* obp = xNew<IssmDouble>(m);
+	obp[0]=0;
+	for(int i=1;i<m;i++)obp[i]=cumdz[i-1]*d[i-1];
+	
+	// calculate new snow/firn density for:
+	//   snow with densities <= 550 [kg m-3]
+	//   snow with densities > 550 [kg m-3]
+		
+	
+	for(int i=0;i<m;i++){
+		switch (denIdx){
+			case 1: // Herron and Langway (1980)
+				c0 = (11 * exp(-10160 / (T[i] * 8.314))) * C/1000;
+				c1 = (575 * exp(-21400 / (T[i]* 8.314))) * pow(C/1000,.5);
+				break;
+			case 2: // Arthern et al. (2010) [semi-emperical]
+				// common variable
+				// NOTE: Ec=60000, Eg=42400 (i.e. should be in J not kJ)
+				H = exp((-60000./(T[i] * 8.314)) + (42400./(Tmean * 8.314))) * (C * 9.81);
+				c0 = 0.07 * H;
+				c1 = 0.03 * H;
+				break;
+
+			case 3: // Arthern et al. (2010) [physical model eqn. B1]
+
+				// common variable
+				H = exp((-60/(T[i] * 8.314))) * obp[i] / pow(re[i]/1000,2.0);
+				c0 = 9.2e-9 * H;
+				c1 = 3.7e-9 * H;
+				break;
+
+			case 4: // Li and Zwally (2004)
+				c0 = (C/dIce) * (139.21 - 0.542*Tmean)*8.36*pow(273.15 - T[i],-2.061);
+				c1 = c0;
+				break;
+
+			case 5: // Helsen et al. (2008)
+				// common variable
+				c0 = (C/dIce) * (76.138 - 0.28965*Tmean)*8.36*pow(273.15 - T[i],-2.061);
+				c1 = c0;
+				break;
+		}
+
+		// new snow density
+		if(d[i] <= 550) d[i] = d[i] + (c0 * (dIce - d[i]) / 365 * dt);
+		else            d[i] = d[i] + (c1 * (dIce - d[i]) / 365 * dt);
+
+		//disp((num2str(nanmean(c0 .* (dIce - d(idx)) / 365 * dt))))
+
+		// do not allow densities to exceed the density of ice
+		if(d[i]>dIce)d[i]=dIce;
+
+		// calculate new grid cell length
+		dz[i] = mass_init[i] / d[i];
+	}
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(mass_init);
+	xDelete<IssmDouble>(cumdz);
+	xDelete<IssmDouble>(obp);
+
+} /*}}}*/
+void turbulentFlux(IssmDouble* pshf, IssmDouble* plhf, IssmDouble* pEC, IssmDouble Ta, IssmDouble Ts, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble ds, IssmDouble Ws, IssmDouble Vz, IssmDouble Tz, int sid){ /*{{{*/
+
+	//// TURBULENT HEAT FLUX
+
+	// Description: 
+	// computed the surface sensible and latent heat fluxes [W m-2], this
+	// function also calculated the mass loss/acreation due to
+	// condensation/evaporation [kg]
+
+	// Reference: 
+	// Dingman, 2002.
+
+	//// INPUTS:
+	//   Ta: 2m air temperature [K]
+	//   Ts: snow/firn/ice surface temperature [K]
+	//   V: wind speed [m s^-^1]
+	//   eAir: screen level vapor pressure [Pa]
+	//   pAir: surface pressure [Pa]
+	//   ds: surface density [kg/m^3]
+	//   Ws: surface liquid water content [kg/m^2]
+	//   Vz: height above ground at which wind (V) eas sampled [m]
+	//   Tz: height above ground at which temperature (T) was sampled [m]
+
+	//// FUNCTION INITILIZATION 
+
+	// CA = 1005;                    // heat capacity of air (J kg-1 k-1)
+	// LF = 0.3345E6;                // latent heat of fusion(J kg-1)
+	// LV = 2.495E6;                 // latent heat of vaporization(J kg-1)
+	// dIce = 910;                   // density of ice [kg m-3]
+	
+	/*intermediary:*/
+	IssmDouble d_air;
+	IssmDouble Ri;
+	IssmDouble z0;
+	IssmDouble coef_M,coef_H;
+	IssmDouble An, C;
+	IssmDouble L, eS;
+
+	/*output: */
+	IssmDouble shf, lhf, EC;
+	
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   turbulentFlux module\n");
+
+	// calculated air density [kg/m3]
+	d_air = 0.029 * pAir /(8.314 * Ta);
+
+	//// Determine Surface Roughness
+	// Bougamont, 2006
+	// wind/temperature surface roughness height [m]
+	if (ds < 910 && Ws == 0) z0 = 0.00012;               // 0.12 mm for dry snow
+	else if (ds >= 910) z0 = 0.0032;                // 3.2 mm for ice 
+	else z0 = 0.0013;                // 1.3 mm for wet snow
+
+	//// MoninObukhov Stability Correction
+	// Reference:
+	// Ohmura, A., 1982: Climate and Energy-Balance on the Arctic Tundra.
+	// Journal of Climatology, 2, 65-84.
+
+	// if V = 0 goes to infinity therfore if V = 0 change
+	if(V< .01) V=.01;
+
+	// calculate the Bulk Richardson Number (Ri)
+	Ri = (2*9.81* (Vz - z0) * (Ta - Ts)) / ((Ta + Ts)* pow(V,2));
+
+	// calculate MoninObukhov stability factors 'coef_M' and 'coef_H'
+
+	// do not allow Ri to exceed 0.19
+	if(Ri>.19)Ri= 0.19;
+
+	// calculate momentum 'coef_M' stability factor
+	if (Ri > 0) coef_M = pow(1-5.2*Ri,-1); // if stable
+	else coef_M = pow(1-18*Ri,-0.25);
+
+	// calculate heat/wind 'coef_H' stability factor
+	if (Ri < -0.03) coef_H = 1.3 * coef_M;
+	else coef_H = coef_M;
+		
+	//// Bulk-transfer coefficient
+	An =  pow(0.4,2) / pow(log(Tz/z0),2);     // Bulk-transfer coefficient
+	C = An * d_air * V;             // shf & lhf common coefficient
+
+	//// Sensible Heat
+	// calculate the sensible heat flux [W m-2](Patterson, 1998)
+	shf = C * 1005 * (Ta - Ts);
+
+	// adjust using MoninObukhov stability theory
+	shf = shf / (coef_M * coef_H);
+
+	//// Latent Heat
+	// determine if snow pack is melting & calcualte surface vapour pressure
+	// over ice or liquid water
+	if (Ts >= 273.15){
+		L = 2.495E6;
+
+		// for an ice surface Murphy and Koop, 2005 [Equation 7]
+		eS = exp(9.550426 - 5723.265/Ts + 3.53068 * log(Ts)- 0.00728332 * Ts);
+	}
+	else{
+		L = 2.8295E6; // latent heat of sublimation
+		// for liquid surface (assume liquid on surface when Ts == 0 deg C)
+		// Wright (1997), US Meteorological Handbook from Murphy and Koop,
+		// 2005 Apendix A
+		eS = 611.21 * exp(17.502 * (Ts - 273.15) / (240.97 + Ts - 273.15));
+	}
+
+	// Latent heat flux [W m-2]
+	lhf = C * L * (eAir - eS) * 0.622 / pAir;
+
+	// adjust using MoninObukhov stability theory (if lhf '+' then there is
+	// energy and mass gained at the surface, if '-' then there is mass and 
+	// energy loss at the surface. 
+	lhf = lhf / (coef_M * coef_H);
+
+	// mass loss (-)/acreation(+) due to evaporation/condensation [kg]
+	EC = lhf * 86400 / L;
+
+	/*assign output poitners: */
+	*pshf=shf;
+	*plhf=lhf;
+	*pEC=EC;
+
+} /*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp	(revision 21239)
@@ -0,0 +1,342 @@
+/*!\file SurfaceMassBalancex
+ * \brief: calculates SMB 
+ */
+
+#include "./SurfaceMassBalancex.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+
+void SmbGradientsx(FemModel* femmodel){/*{{{*/
+
+	// void SurfaceMassBalancex(hd,agd,ni){
+	//    INPUT parameters: ni: working size of arrays
+	//    INPUT: surface elevation (m): hd(NA)
+	//    OUTPUT: mass-balance (m/yr ice): agd(NA)
+	int v;
+	IssmDouble rho_water;                   // density of fresh water
+	IssmDouble rho_ice;                     // density of ice
+
+	/*Loop over all the elements of this partition*/
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+
+		/*Allocate all arrays*/
+		int         numvertices = element->GetNumberOfVertices();
+		IssmDouble* Href        = xNew<IssmDouble>(numvertices); // reference elevation from which deviations are used to calculate the SMB adjustment
+		IssmDouble* Smbref      = xNew<IssmDouble>(numvertices); // reference SMB to which deviations are added
+		IssmDouble* b_pos       = xNew<IssmDouble>(numvertices); // Hs-SMB relation parameter
+		IssmDouble* b_neg       = xNew<IssmDouble>(numvertices); // Hs-SMB relation paremeter
+		IssmDouble* s           = xNew<IssmDouble>(numvertices); // surface elevation (m)
+		IssmDouble* smb         = xNew<IssmDouble>(numvertices);
+
+		/*Recover SmbGradients*/
+		element->GetInputListOnVertices(Href,SmbHrefEnum);
+		element->GetInputListOnVertices(Smbref,SmbSmbrefEnum);
+		element->GetInputListOnVertices(b_pos,SmbBPosEnum);
+		element->GetInputListOnVertices(b_neg,SmbBNegEnum);
+
+		/*Recover surface elevation at vertices: */
+		element->GetInputListOnVertices(s,SurfaceEnum);
+
+		/*Get material parameters :*/
+		rho_ice=element->matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+		rho_water=element->matpar->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+
+		// loop over all vertices
+		for(v=0;v<numvertices;v++){
+			if(Smbref[v]>0){
+				smb[v]=Smbref[v]+b_pos[v]*(s[v]-Href[v]);
+			}
+			else{
+				smb[v]=Smbref[v]+b_neg[v]*(s[v]-Href[v]);
+			}
+			smb[v]=smb[v]/1000*rho_water/rho_ice;      // SMB in m/y ice
+		}  //end of the loop over the vertices
+
+		/*Add input to element and Free memory*/
+		element->AddInput(SmbMassBalanceEnum,smb,P1Enum);
+		xDelete<IssmDouble>(Href);
+		xDelete<IssmDouble>(Smbref);
+		xDelete<IssmDouble>(b_pos);
+		xDelete<IssmDouble>(b_neg);
+		xDelete<IssmDouble>(s);
+		xDelete<IssmDouble>(smb);
+	}
+
+}/*}}}*/
+void Delta18oParameterizationx(FemModel* femmodel){/*{{{*/
+
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->Delta18oParameterization();
+	}
+
+}/*}}}*/
+void MungsmtpParameterizationx(FemModel* femmodel){/*{{{*/
+
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->MungsmtpParameterization();
+	}
+
+}/*}}}*/
+void Delta18opdParameterizationx(FemModel* femmodel){/*{{{*/
+
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->Delta18opdParameterization();
+	}
+
+}/*}}}*/
+void PositiveDegreeDayx(FemModel* femmodel){/*{{{*/
+
+	// void PositiveDegreeDayx(hd,vTempsea,vPrec,agd,Tsurf,ni){
+	//    note "v" prefix means 12 monthly means, ie time dimension
+	//    INPUT parameters: ni: working size of arrays
+	//    INPUT: surface elevation (m): hd(NA)
+	//    monthly mean surface sealevel temperature (degrees C): vTempsea(NA
+	//    ,NTIME) 
+	//    monthly mean precip rate (m/yr water equivalent): vPrec(NA,NTIME)
+	//    OUTPUT: mass-balance (m/yr ice): agd(NA)
+	//    mean annual surface temperature (degrees C): Tsurf(NA)
+
+	int    i, it, jj, itm;
+	IssmDouble DT = 0.02, sigfac, snormfac;
+	IssmDouble signorm = 5.5;      // signorm : sigma of the temperature distribution for a normal day 
+	IssmDouble siglim;       // sigma limit for the integration which is equal to 2.5 sigmanorm
+	IssmDouble signormc = signorm - 0.5;     // sigma of the temperature distribution for cloudy day
+	IssmDouble siglimc, siglim0, siglim0c;
+	IssmDouble tstep, tsint, tint, tstepc;
+	int    NPDMAX = 1504, NPDCMAX = 1454;
+	//IssmDouble pdds[NPDMAX]={0}; 
+	//IssmDouble pds[NPDCMAX]={0};
+	IssmDouble pddt, pd ; // pd : snow/precip fraction, precipitation falling as snow
+	IssmDouble PDup, PDCUT = 2.0;    // PDcut: rain/snow cutoff temperature (C)
+	IssmDouble tstar; // monthly mean surface temp
+
+	bool ismungsm;
+
+	IssmDouble *pdds    = NULL;
+	IssmDouble *pds     = NULL;
+	Element    *element = NULL;
+
+	pdds=xNew<IssmDouble>(NPDMAX+1); 
+	pds=xNew<IssmDouble>(NPDCMAX+1); 
+
+	// Get ismungsm parameter
+	femmodel->parameters->FindParam(&ismungsm,SmbIsmungsmEnum);
+
+	/* initialize PDD (creation of a lookup table)*/
+	tstep    = 0.1;
+	tsint    = tstep*0.5;
+	sigfac   = -1.0/(2.0*pow(signorm,2));
+	snormfac = 1.0/(signorm*sqrt(2.0*acos(-1.0)));
+	siglim   = 2.5*signorm;
+	siglimc  = 2.5*signormc;
+	siglim0  = siglim/DT + 0.5;
+	siglim0c = siglimc/DT + 0.5;
+	PDup     = siglimc+PDCUT;
+
+	itm = reCast<int,IssmDouble>((2*siglim/DT + 1.5));
+
+	if(itm >= NPDMAX) _error_("increase NPDMAX in massBalance.cpp");
+	for(it = 0; it < itm; it++){  
+		//    tstar = REAL(it)*DT-siglim;
+		tstar = it*DT-siglim;
+		tint = tsint;
+		pddt = 0.;
+		for ( jj = 0; jj < 600; jj++){
+			if (tint > (tstar+siglim)){break;}
+			pddt = pddt + tint*exp(sigfac*(pow((tint-tstar),2)))*tstep;
+			tint = tint+tstep;
+		}
+		pdds[it] = pddt*snormfac;
+	}
+	pdds[itm+1] = siglim + DT;
+
+	//*********compute PD(T) : snow/precip fraction. precipitation falling as snow
+	tstepc   = 0.1;
+	tsint    = PDCUT-tstepc*0.5;
+	signormc = signorm - 0.5;
+	sigfac   = -1.0/(2.0*pow(signormc,2));
+	snormfac = 1.0/(signormc*sqrt(2.0*acos(-1.0)));
+	siglimc  = 2.5*signormc ;
+	itm = reCast<int,IssmDouble>((PDCUT+2.*siglimc)/DT + 1.5);
+	if(itm >= NPDCMAX) _error_("increase NPDCMAX in p35com");
+	for(it = 0; it < itm; it++ ){
+		tstar = it*DT-siglimc;
+		//    tstar = REAL(it)*DT-siglimc;
+		tint = tsint;          // start against upper bound
+		pd = 0.;
+		for (jj = 0; jj < 600; jj++){
+			if (tint<(tstar-siglimc)) {break;}
+			pd = pd + exp(sigfac*(pow((tint-tstar),2)))*tstepc;
+			tint = tint-tstepc;
+		}
+		pds[it] = pd*snormfac;  // gaussian integral lookup table for snow fraction
+	}
+	pds[itm+1] = 0.;
+	//     *******END initialize PDD
+
+	for(i=0;i<femmodel->elements->Size();i++){
+		element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->PositiveDegreeDay(pdds,pds,signorm,ismungsm);
+	}
+	/*free ressouces: */
+	xDelete<IssmDouble>(pdds);
+	xDelete<IssmDouble>(pds);
+}/*}}}*/
+void SmbHenningx(FemModel* femmodel){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble  z_critical = 1675.;
+	IssmDouble  dz = 0;
+	IssmDouble  a = -15.86;
+	IssmDouble  b = 0.00969;
+	IssmDouble  c = -0.235;
+	IssmDouble  f = 1.;
+	IssmDouble  g = -0.0011;
+	IssmDouble  h = -1.54e-5;
+	IssmDouble  smb,smbref,anomaly,yts,z;
+    
+    /* Get constants */
+    femmodel->parameters->FindParam(&yts,ConstantsYtsEnum);
+    /*iomodel->FindConstant(&yts,"md.constants.yts");*/
+    /*this->parameters->FindParam(&yts,ConstantsYtsEnum);*/
+    /*Mathieu original*/
+    /*IssmDouble  smb,smbref,z;*/
+    
+	/*Loop over all the elements of this partition*/
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+
+		/*Get reference SMB (uncorrected) and allocate all arrays*/
+		int         numvertices = element->GetNumberOfVertices();
+		IssmDouble* surfacelist = xNew<IssmDouble>(numvertices);
+		IssmDouble* smblistref  = xNew<IssmDouble>(numvertices);
+		IssmDouble* smblist     = xNew<IssmDouble>(numvertices);
+		element->GetInputListOnVertices(surfacelist,SurfaceEnum);
+		element->GetInputListOnVertices(smblistref,SmbSmbrefEnum);
+
+		/*Loop over all vertices of element and correct SMB as a function of altitude z*/
+		for(int v=0;v<numvertices;v++){
+
+			/*Get vertex elevation, anoma smb*/
+			z      = surfacelist[v];
+			anomaly = smblistref[v];
+
+            /* Henning edited acc. to Riannes equations*/
+            /* Set SMB maximum elevation, if dz = 0 -> z_critical = 1675 */
+            z_critical = z_critical + dz;
+            
+            /* Calculate smb acc. to the surface elevation z */
+            if(z<z_critical){
+				smb = a + b*z + c;
+			}
+			else{
+			  smb = (a + b*z)*(f + g*(z-z_critical) + h*(z-z_critical)*(z-z_critical)) + c;
+			}
+            
+			/* Compute smb including anomaly,
+				correct for number of seconds in a year [s/yr]*/
+			smb = smb/yts + anomaly;
+
+
+			/*Update array accordingly*/
+			smblist[v] = smb;
+
+		}
+
+		/*Add input to element and Free memory*/
+		element->AddInput(SmbMassBalanceEnum,smblist,P1Enum);
+		xDelete<IssmDouble>(surfacelist);
+		xDelete<IssmDouble>(smblistref);
+		xDelete<IssmDouble>(smblist);
+	}
+
+}/*}}}*/
+void SmbComponentsx(FemModel* femmodel){/*{{{*/
+
+	// void SmbComponentsx(acc,evap,runoff,ni){
+	//    INPUT parameters: ni: working size of arrays
+	//    INPUT: surface accumulation (m/yr water equivalent): acc
+	//    surface evaporation (m/yr water equivalent): evap
+	//    surface runoff (m/yr water equivalent): runoff
+	//    OUTPUT: mass-balance (m/yr ice): agd(NA)
+	int v;
+
+	/*Loop over all the elements of this partition*/
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+
+		/*Allocate all arrays*/
+		int         numvertices = element->GetNumberOfVertices();
+		IssmDouble* acc         = xNew<IssmDouble>(numvertices); 
+		IssmDouble* evap        = xNew<IssmDouble>(numvertices);
+		IssmDouble* runoff      = xNew<IssmDouble>(numvertices); 
+		IssmDouble* smb         = xNew<IssmDouble>(numvertices);
+
+		/*Recover Smb Components*/
+		element->GetInputListOnVertices(acc,SmbAccumulationEnum);
+		element->GetInputListOnVertices(evap,SmbEvaporationEnum);
+		element->GetInputListOnVertices(runoff,SmbRunoffEnum);
+
+		// loop over all vertices
+		for(v=0;v<numvertices;v++){
+			smb[v]=acc[v]-evap[v]-runoff[v];
+		}  //end of the loop over the vertices
+
+		/*Add input to element and Free memory*/
+		element->AddInput(SmbMassBalanceEnum,smb,P1Enum);
+		xDelete<IssmDouble>(acc);
+		xDelete<IssmDouble>(evap);
+		xDelete<IssmDouble>(runoff);
+		xDelete<IssmDouble>(smb);
+	}
+
+}/*}}}*/
+void SmbMeltComponentsx(FemModel* femmodel){/*{{{*/
+
+	// void SmbMeltComponentsx(acc,evap,melt,refreeze,ni){
+	//    INPUT parameters: ni: working size of arrays
+	//    INPUT: surface accumulation (m/yr water equivalent): acc
+	//    surface evaporation (m/yr water equivalent): evap
+	//    surface melt (m/yr water equivalent): melt
+	//    refreeze of surface melt (m/yr water equivalent): refreeze
+	//    OUTPUT: mass-balance (m/yr ice): agd(NA)
+	int v;
+
+	/*Loop over all the elements of this partition*/
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+
+		/*Allocate all arrays*/
+		int         numvertices = element->GetNumberOfVertices();
+		IssmDouble* acc         = xNew<IssmDouble>(numvertices);
+		IssmDouble* evap        = xNew<IssmDouble>(numvertices); 
+		IssmDouble* melt        = xNew<IssmDouble>(numvertices);
+		IssmDouble* refreeze    = xNew<IssmDouble>(numvertices);
+		IssmDouble* smb         = xNew<IssmDouble>(numvertices);
+
+		/*Recover Smb Components*/
+		element->GetInputListOnVertices(acc,SmbAccumulationEnum);
+		element->GetInputListOnVertices(evap,SmbEvaporationEnum);
+		element->GetInputListOnVertices(melt,SmbMeltEnum);
+		element->GetInputListOnVertices(refreeze,SmbRefreezeEnum);
+
+		// loop over all vertices
+		for(v=0;v<numvertices;v++){
+			smb[v]=acc[v]-evap[v]-melt[v]+refreeze[v];
+		}  //end of the loop over the vertices
+
+		/*Add input to element and Free memory*/
+		element->AddInput(SmbMassBalanceEnum,smb,P1Enum);
+		xDelete<IssmDouble>(acc);
+		xDelete<IssmDouble>(evap);
+		xDelete<IssmDouble>(melt);
+		xDelete<IssmDouble>(refreeze);
+		xDelete<IssmDouble>(smb);
+	}
+
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h	(revision 21239)
@@ -0,0 +1,33 @@
+/*!\file:  SurfaceMassBalancex.h
+ * \brief header file for SMB
+ */ 
+
+#ifndef _SurfaceMassBalancex_H
+#define _SurfaceMassBalancex_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void SurfaceMassBalancex(FemModel* femmodel);
+void SmbGradientsx(FemModel* femmodel);
+void Delta18oParameterizationx(FemModel* femmodel);
+void MungsmtpParameterizationx(FemModel* femmodel);
+void Delta18opdParameterizationx(FemModel* femmodel);
+void PositiveDegreeDayx(FemModel* femmodel);
+void SmbHenningx(FemModel* femmodel);
+void SmbComponentsx(FemModel* femmodel);
+void SmbMeltComponentsx(FemModel* femmodel); 
+
+/*GEMB: */
+void       Gembx(FemModel* femmodel);
+void       GembgridInitialize(IssmDouble** pdz, int* psize, IssmDouble zTop, IssmDouble dzTop, IssmDouble zMax, IssmDouble zY); 
+IssmDouble Marbouty(IssmDouble T, IssmDouble d, IssmDouble dT);
+void grainGrowth(IssmDouble* pre, IssmDouble* pgdn, IssmDouble* pgsp, IssmDouble* T,IssmDouble* dz,IssmDouble* d, IssmDouble* W,IssmDouble smb_dt,int m,int aIdx, int sid);
+void albedo(IssmDouble* a,int aIdx, IssmDouble* re, IssmDouble* d, IssmDouble cldFrac, IssmDouble aIce, IssmDouble aSnow, IssmDouble* T, IssmDouble* W, IssmDouble P, IssmDouble EC, IssmDouble t0wet, IssmDouble t0dry, IssmDouble K, IssmDouble dt,int m, int sid);
+void shortwave(IssmDouble** pswf, int swIdx, int aIdx, IssmDouble dsw, IssmDouble as, IssmDouble* d, IssmDouble* dz, IssmDouble* re, int m, int sid);
+void thermo(IssmDouble* pEC, IssmDouble* T, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlw, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble Ws, IssmDouble dt0, int m, IssmDouble Vz, IssmDouble Tz, int sid);
+void accumulation(IssmDouble** pT, IssmDouble** pdz, IssmDouble** pd, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pm, IssmDouble Ta, IssmDouble P, IssmDouble dzMin, IssmDouble aSnow, int sid); 
+void melt(IssmDouble* pM, IssmDouble* pR, IssmDouble* pmAdd, IssmDouble* pdz_add, IssmDouble** pT, IssmDouble** pd, IssmDouble** pdz, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pn, IssmDouble dzMin, IssmDouble zMax, IssmDouble zMin, IssmDouble zTop, int sid);
+void densification(IssmDouble* d,IssmDouble* dz, IssmDouble* T, IssmDouble* re, int denIdx, IssmDouble C, IssmDouble dt, IssmDouble Tmean,IssmDouble rho_ice,int m, int sid);
+void turbulentFlux(IssmDouble* pshf, IssmDouble* plhf, IssmDouble* pEC, IssmDouble Ta, IssmDouble Ts, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble ds, IssmDouble Ws, IssmDouble Vz, IssmDouble Tz, int sid);
+#endif  /* _SurfaceMassBalancex_H*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp	(revision 21239)
@@ -0,0 +1,118 @@
+/*!\file SurfaceRelVelMisfitx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./SurfaceRelVelMisfitx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void SurfaceRelVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		J+=SurfaceRelVelMisfit(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble SurfaceRelVelMisfit(Element* element){
+
+	int        domaintype,numcomponents;
+	IssmDouble Jelem=0.;
+	IssmDouble misfit,Jdet,scalex,scaley;
+	IssmDouble epsvel=2.220446049250313e-16;
+	IssmDouble meanvel=3.170979198376458e-05; /*1000 m/yr*/
+	IssmDouble vx,vy,vxobs,vyobs,weight;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnSurface()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn surface element*/
+	Element* topelement = element->SpawnTopElement();
+
+	/* Get node coordinates*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	Input* weights_input=topelement->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* vx_input     =topelement->GetInput(VxEnum);                                 _assert_(vx_input);
+	Input* vxobs_input  =topelement->GetInput(InversionVxObsEnum);                     _assert_(vxobs_input);
+	Input* vy_input     = NULL;
+	Input* vyobs_input  = NULL;
+	if(numcomponents==2){
+		vy_input    =topelement->GetInput(VyEnum);              _assert_(vy_input);
+		vyobs_input =topelement->GetInput(InversionVyObsEnum);  _assert_(vyobs_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(4);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		/* Get Jacobian determinant: */
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,SurfaceRelVelMisfitEnum);
+		vx_input->GetInputValue(&vx,gauss);
+		vxobs_input->GetInputValue(&vxobs,gauss);
+		if(numcomponents==2){
+			vy_input->GetInputValue(&vy,gauss);
+			vyobs_input->GetInputValue(&vyobs,gauss);
+		}
+
+		/*Compute SurfaceRelVelMisfit:
+		 *                        
+		 *      1  [     \bar{v}^2             2   \bar{v}^2              2 ]
+		 * J = --- | -------------  (u - u   ) + -------------  (v - v   )  |
+		 *      2  [  (u   + eps)^2       obs    (v   + eps)^2       obs    ]
+		 *              obs                        obs                      
+		 */
+
+		if(numcomponents==2){
+			scalex=pow(meanvel/(vxobs+epsvel),2); if(vxobs==0)scalex=0;
+			scaley=pow(meanvel/(vyobs+epsvel),2); if(vyobs==0)scaley=0;
+			misfit=0.5*(scalex*pow((vx-vxobs),2)+scaley*pow((vy-vyobs),2));
+		}
+		else{
+			scalex=pow(meanvel/(vxobs+epsvel),2); if(vxobs==0)scalex=0;
+			misfit=0.5*(scalex*pow((vx-vxobs),2));
+		}
+
+		/*Add to cost function*/
+		Jelem+=misfit*weight*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	if(domaintype!=Domain2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  SurfaceRelVelMisfitx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _SURFACERELVELMISFITX_H
+#define _SURFACERELVELMISFITX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void SurfaceRelVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble SurfaceRelVelMisfit(Element* element);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SystemMatricesx/SystemMatricesx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SystemMatricesx/SystemMatricesx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SystemMatricesx/SystemMatricesx.cpp	(revision 21239)
@@ -0,0 +1,137 @@
+/*!\file SystemMatricesx
+ * \brief retrieve vector from inputs in elements
+ */
+
+#include "./SystemMatricesx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../AllocateSystemMatricesx/AllocateSystemMatricesx.h"
+
+void SystemMatricesx(Matrix<IssmDouble>** pKff, Matrix<IssmDouble>** pKfs, Vector<IssmDouble>** ppf, Vector<IssmDouble>** pdf, IssmDouble* pkmax,FemModel* femmodel){
+
+	/*intermediary: */
+	int      i,M,N;
+	int      configuration_type,analysisenum;
+	Element *element = NULL;
+	Load    *load    = NULL;
+
+	/*output: */
+	Matrix<IssmDouble> *Kff  = NULL;
+	Matrix<IssmDouble> *Kfs  = NULL;
+	Vector<IssmDouble> *pf   = NULL;
+	Vector<IssmDouble> *df   = NULL;
+	IssmDouble          kmax = 0;
+
+	/*Display message*/
+	if(VerboseModule()) _printf0_("   Generating matrices");
+
+	/*retrieve parameters: */
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	femmodel->parameters->FindParam(&analysisenum,AnalysisTypeEnum);
+	Analysis* analysis = EnumToAnalysis(analysisenum);
+
+	/*Check if there are penalties*/
+	bool ispenalty = femmodel->loads->IsPenalty(configuration_type);
+
+	/*First, we might need to do a dry run to get kmax if penalties are employed*/
+	if(ispenalty){
+
+		/*Allocate Kff_temp*/
+		Matrix<IssmDouble> *Kff_temp = NULL;
+		AllocateSystemMatricesx(&Kff_temp,NULL,NULL,NULL,femmodel);
+
+		/*Get complete stiffness matrix without penalties*/
+		for (i=0;i<femmodel->elements->Size();i++){
+			element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+			ElementMatrix* Ke = analysis->CreateKMatrix(element);
+			ElementVector* pe = analysis->CreatePVector(element);
+			element->ReduceMatrices(Ke,pe);
+			if(Ke) Ke->AddToGlobal(Kff_temp,NULL);
+			delete Ke;
+			delete pe;
+		}
+
+		for (i=0;i<femmodel->loads->Size();i++){
+			load=xDynamicCast<Load*>(femmodel->loads->GetObjectByOffset(i));
+			if(load->InAnalysis(configuration_type)) load->CreateKMatrix(Kff_temp,NULL);
+		}
+		Kff_temp->Assemble();
+
+		/*Now, figure out maximum value of stiffness matrix, so that we can penalize it correctly: */
+		kmax=Kff_temp->Norm(NORM_INF);
+		delete Kff_temp;
+	}
+
+	/*Allocate stiffness matrices and load vector*/
+	AllocateSystemMatricesx(&Kff,&Kfs,&df,&pf,femmodel);
+
+	/*Display size*/
+	if(VerboseModule()){
+		Kff->GetSize(&M,&N);
+		_printf0_(" (Kff stiffness matrix size: "<<M<<" x "<<N<<")\n");
+	}
+
+	/*Fill stiffness matrix and load vector from elements*/
+	for (i=0;i<femmodel->elements->Size();i++){
+		element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		ElementMatrix* Ke = analysis->CreateKMatrix(element);
+		ElementVector* pe = analysis->CreatePVector(element);
+		element->ReduceMatrices(Ke,pe);
+		if(Ke) Ke->AddToGlobal(Kff,Kfs);
+		if(pe){
+			pe->AddToGlobal(pf);
+		}
+		delete Ke;
+		delete pe;
+	}
+
+	/*Fill stiffness matrix and load vector from loads*/
+	for(i=0;i<femmodel->loads->Size();i++){
+		load=xDynamicCast<Load*>(femmodel->loads->GetObjectByOffset(i));
+		if(load->InAnalysis(configuration_type)){
+			load->CreateKMatrix(Kff,Kfs);
+			load->CreatePVector(pf);
+		}
+	}
+
+	/*Now deal with penalties (only in loads)*/
+	if(ispenalty){
+		for (i=0;i<femmodel->loads->Size();i++){
+			load=xDynamicCast<Load*>(femmodel->loads->GetObjectByOffset(i));
+			if(load->InAnalysis(configuration_type)){
+				load->PenaltyCreateKMatrix(Kff,Kfs,kmax);
+				load->PenaltyCreatePVector(pf,kmax);
+			}
+		}
+	}
+
+	/*Create dof vector for stiffness matrix preconditioning*/
+	if(pdf){
+		for(i=0;i<femmodel->elements->Size();i++){
+			element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+			ElementVector* de=analysis->CreateDVector(element);
+			if(de) de->InsertIntoGlobal(df);
+			delete de;
+		}
+	}
+
+	/*Assemble matrices and vector*/
+	Kff->Assemble();
+	Kfs->Assemble();
+	pf->Assemble();
+	df->Assemble();
+	//Kff->AllocationInfo();
+	//Kfs->AllocationInfo();
+
+	/*cleanu up and assign output pointers: */
+	delete analysis;
+	if(pKff) *pKff=Kff;
+	else      delete Kff;
+	if(pKfs) *pKfs=Kfs;
+	else      delete Kfs;
+	if(ppf)  *ppf=pf;
+	else      delete pf;
+	if(pdf)  *pdf=df;
+	else      delete df;
+	if(pkmax) *pkmax=kmax;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SystemMatricesx/SystemMatricesx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SystemMatricesx/SystemMatricesx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/SystemMatricesx/SystemMatricesx.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  SystemMatricesx.h
+*/ 
+
+#ifndef _SYSTEMMATRICESX_H
+#define _SYSTEMMATRICESX_H
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+/* local prototypes: */
+void SystemMatricesx(Matrix<IssmDouble>** pKff, Matrix<IssmDouble>** pKfs, Vector<IssmDouble>** ppf, Vector<IssmDouble>** pdf, IssmDouble* pkmax,FemModel* femmodel);
+
+#endif  /* _SYSTEMMATRICESX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.cpp	(revision 21239)
@@ -0,0 +1,71 @@
+/*!\file ThicknessAbsMisfitx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./ThicknessAbsMisfitx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void ThicknessAbsMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		J+=ThicknessAbsMisfit(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble ThicknessAbsMisfit(Element* element){
+
+	IssmDouble  thickness,thicknessobs,weight;
+	IssmDouble  Jelem=0.;
+	IssmDouble  misfit,Jdet;
+	IssmDouble* xyz_list = NULL;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/* Get node coordinates*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	Input* weights_input     =element->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* thickness_input   =element->GetInput(ThicknessEnum);                          _assert_(thickness_input);
+	Input* thicknessobs_input=element->GetInput(InversionThicknessObsEnum);              _assert_(thicknessobs_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		/* Get Jacobian determinant: */
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,ThicknessAbsMisfitEnum);
+		thickness_input->GetInputValue(&thickness,gauss);
+		thicknessobs_input->GetInputValue(&thicknessobs,gauss);
+
+		/*Compute ThicknessAbsMisfitEnum*/
+		Jelem+=0.5*(thickness-thicknessobs)*(thickness-thicknessobs)*weight*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  ThicknessAbsMisfitx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _THICKNESSABSMISFITX_H
+#define _THICKNESSABSMISFITX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void ThicknessAbsMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble ThicknessAbsMisfit(Element* element);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.cpp	(revision 21239)
@@ -0,0 +1,79 @@
+/*!\file ThicknessAcrossGradientx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./ThicknessAcrossGradientx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void ThicknessAcrossGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		J+=ThicknessAcrossGradient(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble ThicknessAcrossGradient(Element* element){
+
+	IssmDouble  thickness,thicknessobs,weight;
+	IssmDouble  Jelem=0.;
+	IssmDouble  misfit,Jdet;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble  dp[3];
+	IssmDouble  vx,vy,vel;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/* Get node coordinates*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	Input* weights_input   =element->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* thickness_input =element->GetInput(ThicknessEnum);                          _assert_(thickness_input);
+	Input* vx_input        =element->GetInput(VxEnum);                                 _assert_(vx_input);
+	Input* vy_input        =element->GetInput(VyEnum);                                 _assert_(vy_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		/* Get Jacobian determinant: */
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,ThicknessAcrossGradientEnum);
+		thickness_input->GetInputValue(&thickness,gauss);
+		thickness_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vel = sqrt(vx*vx+vy*vy);
+		vx  = vx/(vel+1.e-9);
+		vy  = vy/(vel+1.e-9);
+
+		/*J = 1/2 ( -vy*dH/dx + vx*dH/dy )^2 */
+		Jelem+=weight*1/2*(-vy*dp[0] + vx*dp[1])*(-vy*dp[0] + vx*dp[1])*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  ThicknessAcrossGradientx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _THICKNESSACROSSGRADIENT_H
+#define _THICKNESSACROSSGRADIENT_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void ThicknessAcrossGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble ThicknessAcrossGradient(Element* element);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ThicknessAlongGradientx/ThicknessAlongGradientx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ThicknessAlongGradientx/ThicknessAlongGradientx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ThicknessAlongGradientx/ThicknessAlongGradientx.cpp	(revision 21239)
@@ -0,0 +1,79 @@
+/*!\file ThicknessAlongGradientx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./ThicknessAlongGradientx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void ThicknessAlongGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		J+=ThicknessAlongGradient(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble ThicknessAlongGradient(Element* element){
+
+	IssmDouble  thickness,thicknessobs,weight;
+	IssmDouble  Jelem=0.;
+	IssmDouble  misfit,Jdet;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble  dp[3];
+	IssmDouble  vx,vy,vel;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/* Get node coordinates*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	Input* weights_input   =element->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* thickness_input =element->GetInput(ThicknessEnum);                          _assert_(thickness_input);
+	Input* vx_input        =element->GetInput(VxEnum);                                 _assert_(vx_input);
+	Input* vy_input        =element->GetInput(VyEnum);                                 _assert_(vy_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		/* Get Jacobian determinant: */
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,ThicknessAlongGradientEnum);
+		thickness_input->GetInputValue(&thickness,gauss);
+		thickness_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vel = sqrt(vx*vx+vy*vy);
+		vx  = vx/(vel+1.e-9);
+		vy  = vy/(vel+1.e-9);
+
+		/*J = 1/2 ( vx*dH/dx + vy*dH/dy )^2 */
+		Jelem+=weight*1/2*(vx*dp[0] + vy*dp[1])*(vx*dp[0] + vy*dp[1])*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ThicknessAlongGradientx/ThicknessAlongGradientx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ThicknessAlongGradientx/ThicknessAlongGradientx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ThicknessAlongGradientx/ThicknessAlongGradientx.h	(revision 21239)
@@ -0,0 +1,14 @@
+/*!\file:  ThicknessAlongGradientx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _THICKNESSALONGGRADIENT_H
+#define _THICKNESSALONGGRADIENT_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void ThicknessAlongGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble ThicknessAlongGradient(Element* element);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.cpp	(revision 21239)
@@ -0,0 +1,78 @@
+/*!\file:  TriMeshProcessRifts.cpp
+ * \brief split a mesh where a rift (or fault) is present
+ */ 
+
+#include "./TriMeshProcessRiftsx.h"
+#include "../../classes/RiftStruct.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void TriMeshProcessRiftsx(int** pindex, int* pnel,double** px,double** py,int* pnods,int** psegments,int** psegmentmarkers,int *pnum_seg,RiftStruct **priftstruct){
+
+	/*Output*/
+	int      numrifts,numrifts0;
+	int     *riftsnumsegments     = NULL;
+	int    **riftssegments        = NULL;
+	int     *riftsnumpairs        = NULL;
+	int    **riftspairs           = NULL;
+	int     *riftstips            = NULL;
+	double **riftspenaltypairs    = NULL;
+	int     *riftsnumpenaltypairs = NULL;
+
+	/*Recover initial mesh*/
+	int     nel            = *pnel;
+	int    *index          = *pindex;
+	double *x              = *px;
+	double *y              = *py;
+	int     nods           = *pnods;
+	int    *segments       = *psegments;
+	int    *segmentmarkers = *psegmentmarkers;
+	int     num_seg        = *pnum_seg;
+
+	/*Intermediary*/
+	int     riftflag;
+
+	/*First, do some fixing on the existing mesh: we do not want any element belonging entirely to the segment list (ie: 
+	 *all the nodes of this element belong to the segments (tends to happen when there are corners: */
+	RemoveCornersFromRifts(&index,&nel,&x,&y,&nods,segments,segmentmarkers,num_seg);
+
+	/*Figure out if we have rifts, and how many: */
+	IsRiftPresent(&riftflag,&numrifts0,segmentmarkers,num_seg);
+
+	if(!riftflag) _error_("No rift present in mesh");
+
+	/*Split mesh*/
+	SplitMeshForRifts(&nel,&index,&nods,&x,&y,&num_seg,&segments,&segmentmarkers);
+
+	/*Order segments so that their normals point outside the domain: */
+	OrderSegments(&segments,num_seg, index,nel);
+
+	/*We do not want to output segments mixed with rift segments: wring out the rifts from the segments, using the 
+	 *segmentmarkerlist:*/
+	SplitRiftSegments(&segments,&segmentmarkers,&num_seg,&numrifts,&riftsnumsegments,&riftssegments,numrifts0,nods,nel);
+
+	/*Using rift segments, associate rift faces in pairs, each pair face representing opposite flanks of the rifts facing one another directly: */
+	PairRiftElements(&riftsnumpairs,&riftspairs,numrifts,riftsnumsegments,riftssegments,x,y);
+
+	/*Order rifts so that they start from one tip, go to the other tip, and back: */
+	OrderRifts(&riftstips,riftssegments,riftspairs,numrifts,riftsnumsegments,x,y,nods,nel);
+
+	/*Create penalty pairs, used by Imp: */
+	PenaltyPairs(&riftspenaltypairs,&riftsnumpenaltypairs,numrifts,riftssegments,riftsnumsegments,riftspairs,riftstips,x,y);
+
+	/*Create Riftstruct*/
+	RiftStruct* riftstruct = new RiftStruct(numrifts,riftsnumsegments,riftssegments,riftsnumpairs,riftspairs,riftsnumpenaltypairs,riftspenaltypairs,riftstips);
+
+	/*Assign output pointers for mesh*/
+	*pnel            = nel;
+	*pindex          = index;
+	*px              = x;
+	*py              = y;
+	*pnods           = nods;
+	*psegments       = segments;
+	*psegmentmarkers = segmentmarkers;
+	*pnum_seg        = num_seg;
+
+	/*Assign output pointers for rifts*/
+	*priftstruct = riftstruct;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.h	(revision 21239)
@@ -0,0 +1,12 @@
+/*!\file:  TriMeshProcessRiftsx.h
+ * \brief header file for TriMeshProcessRifts module
+ */ 
+
+#ifndef _TRIMESHPROCESSRIFTX_H
+#define _TRIMESHPROCESSRIFTX_H
+
+class RiftStruct;
+
+void TriMeshProcessRiftsx(int** pindex,int* pnel,double** px,double** py,int* pnods,int** psegments,int** psegmentmarkers,int *pnum_seg,RiftStruct **priftstruct);
+
+#endif  /* _TRIMESHPROCESSRIFTX_H*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/TriMeshx/TriMeshx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/TriMeshx/TriMeshx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/TriMeshx/TriMeshx.cpp	(revision 21239)
@@ -0,0 +1,201 @@
+/*!\file TriMeshx
+ * \brief: x code for TriMesh mesher
+ */
+
+/*Header files: {{{*/
+#include "./TriMeshx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+/*ANSI_DECLARATORS needed to call triangle library: */
+#if defined(_HAVE_TRIANGLE_)
+	#ifndef ANSI_DECLARATORS
+	#define ANSI_DECLARATORS
+	#endif
+	#include "triangle.h"
+	#undef ANSI_DECLARATORS
+#endif
+/*}}}*/
+
+void TriMeshx(int** pindex,IssmPDouble** px,IssmPDouble** py,int** psegments,int** psegmentmarkerlist,int* pnels,int* pnods, int* pnsegs,Contours* domain,Contours* rifts,double area){
+
+#if !defined(_HAVE_TRIANGLE_)
+	_error_("triangle has not been installed");
+#else
+	/*indexing: */
+	int i,j;
+
+	/*output: */
+	int    *index             = NULL;
+	double *x                 = NULL;
+	double *y                 = NULL;
+	int    *segments          = NULL;
+	int    *segmentmarkerlist = NULL;
+
+	/*intermediary: */
+	int counter,counter2,backcounter;
+	Contour<IssmPDouble> *contour = NULL;
+
+	/* Triangle structures needed to call Triangle library routines: */
+	struct triangulateio in,out;
+	char   options[256];
+
+	/*Create initial triangulation to call triangulate(). First number of points:*/
+	in.numberofpoints=0;
+	for (i=0;i<domain->Size();i++){
+		contour=(Contour<IssmPDouble>*)domain->GetObjectByOffset(i);
+		in.numberofpoints+=contour->nods-1;
+	}
+	for (i=0;i<rifts->Size();i++){
+		contour=(Contour<IssmPDouble>*)rifts->GetObjectByOffset(i);
+		in.numberofpoints+=contour->nods;
+	}
+
+	/*number of point attributes: */
+	in.numberofpointattributes=1;
+
+	/*fill in the point list: */
+	in.pointlist = xNew<REAL>(in.numberofpoints*2);
+
+	counter=0;
+	for (i=0;i<domain->Size();i++){
+		contour=(Contour<IssmPDouble>*)domain->GetObjectByOffset(i);
+		for (j=0;j<contour->nods-1;j++){
+			in.pointlist[2*counter+0]=contour->x[j];
+			in.pointlist[2*counter+1]=contour->y[j];
+			counter++;
+		}
+	}
+	for (i=0;i<rifts->Size();i++){
+		contour=(Contour<IssmPDouble>*)rifts->GetObjectByOffset(i);
+		for (j=0;j<contour->nods;j++){
+			in.pointlist[2*counter+0]=contour->x[j];
+			in.pointlist[2*counter+1]=contour->y[j];
+			counter++;
+		}
+	}
+
+	/*fill in the point attribute list: */
+	in.pointattributelist = xNew<REAL>(in.numberofpoints*in.numberofpointattributes);
+	for (i=0;i<in.numberofpoints;i++) in.pointattributelist[i] = 0.0;
+
+	/*fill in the point marker list: */
+	in.pointmarkerlist = xNew<int>(in.numberofpoints);
+	for(i=0;i<in.numberofpoints;i++) in.pointmarkerlist[i] = 0;
+
+	/*Build segments. First figure out number of segments: holes and closed outlines have as many segments as vertices: */
+	in.numberofsegments=0;
+	for (i=0;i<domain->Size();i++){
+		contour=(Contour<IssmPDouble>*)domain->GetObjectByOffset(i);
+		in.numberofsegments+=contour->nods-1;
+	}
+	for(i=0;i<rifts->Size();i++){
+		contour=(Contour<IssmPDouble>*)rifts->GetObjectByOffset(i);
+		/*for rifts, we have one less segment as we have vertices*/
+		in.numberofsegments+=contour->nods-1;
+	}
+
+	in.segmentlist = xNew<int>(in.numberofsegments*2);
+	in.segmentmarkerlist = xNewZeroInit<int>(in.numberofsegments);
+	counter=0;
+	backcounter=0;
+	for (i=0;i<domain->Size();i++){
+		contour=(Contour<IssmPDouble>*)domain->GetObjectByOffset(i);
+		for (j=0;j<contour->nods-2;j++){
+			in.segmentlist[2*counter+0]=counter;
+			in.segmentlist[2*counter+1]=counter+1;
+			in.segmentmarkerlist[counter]=0;
+			counter++;
+		}
+		/*Close this profile: */
+		 in.segmentlist[2*counter+0]=counter;
+		 in.segmentlist[2*counter+1]=backcounter;
+		 in.segmentmarkerlist[counter]=0;
+		 counter++;
+		 backcounter=counter;
+	}
+	counter2=counter;
+	for (i=0;i<rifts->Size();i++){
+		contour=(Contour<IssmPDouble>*)rifts->GetObjectByOffset(i);
+		for (j=0;j<(contour->nods-1);j++){
+			in.segmentlist[2*counter2+0]=counter;
+			in.segmentlist[2*counter2+1]=counter+1;
+			in.segmentmarkerlist[counter2]=2+i;
+			counter2++;
+			counter++;
+		}
+		counter++;
+	}
+
+	/*Build regions: */
+	in.numberofregions = 0;
+
+	/*Build holes: */
+	in.numberofholes = domain->Size()-1; /*everything is a hole, but for the first profile.*/
+	if(in.numberofholes){
+		in.holelist = xNew<REAL>(in.numberofholes*2);
+		for (i=0;i<domain->Size()-1;i++){
+			contour=(Contour<IssmPDouble>*)domain->GetObjectByOffset(i+1);
+			GridInsideHole(&in.holelist[2*i+0],&in.holelist[2*i+1],contour->nods-1,contour->x,contour->y);
+		}
+	}
+
+	/* Make necessary initializations so that Triangle can return a triangulation in `out': */
+	out.pointlist             = (REAL*)NULL;
+	out.pointattributelist    = (REAL*)NULL;
+	out.pointmarkerlist       = (int *)NULL;
+	out.trianglelist          = (int *)NULL;
+	out.triangleattributelist = (REAL*)NULL;
+	out.neighborlist          = (int *)NULL;
+	out.segmentlist           = (int *)NULL;
+	out.segmentmarkerlist     = (int *)NULL;
+	out.edgelist              = (int *)NULL;
+	out.edgemarkerlist        = (int *)NULL;
+
+	/* Triangulate the points:.  Switches are chosen to read and write a  */
+	/*   PSLG (p), preserve the convex hull (c), number everything from  */
+	/*   zero (z), assign a regional attribute to each element (A), and  */
+	/*   produce an edge list (e), a Voronoi diagram (v), and a triangle */
+	/*   neighbor list (n).                                              */
+	sprintf(options,"%s%lf","pQzDq30ia",area); /*replace V by Q to quiet down the logging*/
+	triangulate(options, &in, &out, NULL);
+	/*report(&out, 0, 1, 1, 1, 1, 0);*/
+
+	/*Allocate index, x and y: */
+	index=xNew<int>(3*out.numberoftriangles);
+	x=xNew<double>(out.numberofpoints);
+	y=xNew<double>(out.numberofpoints);
+	segments=xNew<int>(3*out.numberofsegments);
+	segmentmarkerlist=xNew<int>(out.numberofsegments);
+
+	for (i = 0; i< out.numberoftriangles; i++) {
+		for (j = 0; j < out.numberofcorners; j++) {
+			index[3*i+j]=(int)out.trianglelist[i*out.numberofcorners+j]+1;
+		}
+	}
+	for (i = 0; i< out.numberofpoints; i++){
+		x[i]=(double)out.pointlist[i*2+0];
+		y[i]=(double)out.pointlist[i*2+1];
+	}
+	for (i = 0; i<out.numberofsegments;i++){
+		segments[3*i+0]=(int)out.segmentlist[i*2+0]+1;
+		segments[3*i+1]=(int)out.segmentlist[i*2+1]+1;
+		segmentmarkerlist[i]=(int)out.segmentmarkerlist[i];
+	}
+
+	/*Associate elements with segments: */
+	AssociateSegmentToElement(&segments,out.numberofsegments,index,out.numberoftriangles);
+
+	/*Order segments so that their normals point outside the domain: */
+	OrderSegments(&segments,out.numberofsegments, index,out.numberoftriangles);
+
+	/*Output : */
+	*pindex=index;
+	*px=x;
+	*py=y;
+	*psegments=segments;
+	*psegmentmarkerlist=segmentmarkerlist;
+	*pnels=out.numberoftriangles;
+	*pnods=out.numberofpoints;
+	*pnsegs=out.numberofsegments;
+#endif
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/TriMeshx/TriMeshx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/TriMeshx/TriMeshx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/TriMeshx/TriMeshx.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  TriMeshx.h
+ * \brief header file for TriMeshx module
+ */ 
+
+#ifndef _TRIMESHX_H_
+#define _TRIMESHX_H_
+
+#include <string.h>
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void TriMeshx(int** pindex,IssmPDouble** px,IssmPDouble** py,int** psegments,int** psegmentmarkerlist,int* pnels,int* pnods, int* pnseg,Contours* domain,Contours* rifts,double area);
+#endif  /* _TRIMESHX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.cpp	(revision 21239)
@@ -0,0 +1,35 @@
+/*!\file UpdateDynamicConstraintsx
+ * \brief module to update single point constraints  out of new spc vector, for next time step.
+ */
+
+#include "./UpdateDynamicConstraintsx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void UpdateDynamicConstraintsx(Constraints* constraints,Nodes* nodes,Parameters* parameters,Vector<IssmDouble>* yg){
+
+	int configuration_type;
+	IssmDouble* yg_serial=NULL;
+
+	/*Get current configuration*/
+	parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+
+	/*serialize yg, so nodes can index into it: */
+	yg_serial=yg->ToMPISerial();
+
+	for(int i=0;i<constraints->Size();i++){
+
+		Constraint* constraint=(Constraint*)constraints->GetObjectByOffset(i);
+
+		/*Check this constraint belongs to this analysis: */
+		if(constraint->InAnalysis(configuration_type) && constraint->ObjectEnum()==SpcDynamicEnum){
+
+			((SpcDynamic*)constraint)->SetDynamicConstraint(nodes,yg_serial);
+
+		}
+	}
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(yg_serial);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.h	(revision 21239)
@@ -0,0 +1,12 @@
+/*!\file:  UpdateDynamicConstraintsx.h
+ * \brief header file for updating single point constraints  for next time step
+ */ 
+
+#ifndef _UPDATEDYNAMICCONSTRAINTSXX_H
+#define _UPDATEDYNAMICCONSTRAINTSXX_H
+
+#include "../../classes/classes.h"
+
+void UpdateDynamicConstraintsx(Constraints* constraints,Nodes* nodes,Parameters* parameters,Vector<IssmDouble>* yg);
+
+#endif  /* _UPDATESPCSX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/VecMergex/VecMergex.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/VecMergex/VecMergex.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/VecMergex/VecMergex.cpp	(revision 21239)
@@ -0,0 +1,43 @@
+/*!\file VecMergex
+ * \brief: merge one vector into another
+ */
+
+#include "./VecMergex.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+void VecMergex(Vector<IssmDouble>* ug, Vector<IssmDouble>* uf, Nodes* nodes, Parameters* parameters, int SetEnum){
+
+	/*variables: */
+	int i;
+	int configuration_type;
+	IssmDouble* uf_serial=NULL;
+
+	/*retrieve parameters: */
+	parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+
+	/*serialize uf: */
+	uf_serial=uf->ToMPISerial();
+
+	/*Do we have any nodes for this configuration? :*/
+	if(nodes->NumberOfNodes(configuration_type)){ 
+
+		/*yes. Go through all nodes, and ask them to retrieve values from uf, and plug them into ug: */
+		for(i=0;i<nodes->Size();i++){
+
+			Node* node=(Node*)nodes->GetObjectByOffset(i);
+
+			/*Check that this node corresponds to our configuration currently being carried out: */
+			if (node->InAnalysis(configuration_type)){
+
+				/*For this object, merge values for enum set SetEnum: */
+				node->VecMerge(ug,uf_serial,SetEnum);
+			}
+		}
+	}
+	/*Free ressources:*/
+	xDelete<IssmDouble>(uf_serial);
+
+	/*Assemble vector: */
+	ug->Assemble();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/VecMergex/VecMergex.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/VecMergex/VecMergex.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/VecMergex/VecMergex.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  VecMergex.h
+ * \brief header file for merging one vector into another
+ */ 
+
+#ifndef _VECMERGEX_H
+#define _VECMERGEX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void VecMergex(Vector<IssmDouble>* ug, Vector<IssmDouble>* uf, Nodes* nodes, Parameters* parameters, int SetEnum);
+
+#endif  /* _VECMERGEX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.cpp	(revision 21239)
@@ -0,0 +1,61 @@
+/*!\file VertexCoordinatesx
+ * \brief: compute a vector x,y and z of vertex coordinates by 
+ * marching through all our vertices. 
+ */
+
+#include "./VertexCoordinatesx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void VertexCoordinatesx( IssmDouble** px, IssmDouble** py, IssmDouble** pz, Vertices* vertices,bool spherical) {
+
+	/*output: */
+	IssmDouble* x=NULL;
+	IssmDouble* y=NULL;
+	IssmDouble* z=NULL;
+
+	Vector<IssmDouble>* vx=NULL;
+	Vector<IssmDouble>* vy=NULL;
+	Vector<IssmDouble>* vz=NULL;
+
+	/*intermediary: */
+	int  numberofvertices;
+	int  i;
+
+	/*figure out how many vertices we have: */
+	numberofvertices=vertices->NumberOfVertices();
+
+	vx=new Vector<IssmDouble>(numberofvertices);
+	vy=new Vector<IssmDouble>(numberofvertices);
+	vz=new Vector<IssmDouble>(numberofvertices);
+
+	/*march through our vertices: */
+	for(i=0;i<vertices->Size();i++){
+		Vertex* vertex=(Vertex*)vertices->GetObjectByOffset(i);
+		vertex->VertexCoordinates(vx,vy,vz,spherical);
+	}
+
+	/*Assemble*/
+	vx->Assemble();
+	vy->Assemble();
+	vz->Assemble();
+
+	/*serialize: */
+	x=vx->ToMPISerial();
+	y=vy->ToMPISerial();
+	z=vz->ToMPISerial();
+
+	/*Free ressources: */
+	delete vx;
+	delete vy;
+	delete vz;
+
+	/*output: */
+	if (px)*px=x;
+	else xDelete<IssmDouble>(x);
+	if (py)*py=y;
+	else xDelete<IssmDouble>(y);
+	if (pz)*pz=z;
+	else xDelete<IssmDouble>(z);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.h	(revision 21239)
@@ -0,0 +1,12 @@
+/*!\file:  VertexCoordinatesx.h
+ */ 
+
+#ifndef _VERTEX_COORDINATESX_H
+#define _VERTEX_COORDINATESX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void VertexCoordinatesx( IssmDouble** px, IssmDouble** py, IssmDouble** pz, Vertices* vertices,bool spherical=false);
+
+#endif  /* _VERTEX_COORDINATESX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/VerticesDofx/VerticesDofx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/VerticesDofx/VerticesDofx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/VerticesDofx/VerticesDofx.cpp	(revision 21239)
@@ -0,0 +1,25 @@
+/*!\file VerticesDofx
+ * \brief: establish degrees of freedom for all vertices: */
+
+#include "./VerticesDofx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void VerticesDofx( Vertices* vertices, Parameters* parameters) {
+
+	/*intermediary: */
+	int  numberofvertices;
+
+	/*figure out how many vertices we have: */
+	numberofvertices=vertices->NumberOfVertices();
+
+	/*Ensure that only for each cpu, the partition border vertices only will be
+	 * taken into account once across the cluster. To do so, we flag all the
+	 * clone vertices: */
+	vertices->FlagClones(numberofvertices);
+
+	/*Go through all vertices and distribute pids*/
+	vertices->DistributePids(numberofvertices); 
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/VerticesDofx/VerticesDofx.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/VerticesDofx/VerticesDofx.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/VerticesDofx/VerticesDofx.h	(revision 21239)
@@ -0,0 +1,13 @@
+/*!\file:  VerticesDofx.h
+ * \brief header file for degree of freedoms distribution routines.
+ */ 
+
+#ifndef _VERTICESDOFX_H
+#define _VERTICESDOFX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void VerticesDofx( Vertices* vertices, Parameters* parameters);
+
+#endif  /* _VERTICESDOFX_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/modules.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/modules.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/modules.h	(revision 21239)
@@ -0,0 +1,98 @@
+/*! \file modules.h: 
+ *  \brief header file for all the ISSM modules
+ */
+
+#ifndef _ISSM_MODULES_H_
+#define _ISSM_MODULES_H_
+
+/*Modules: */
+#include "./AllocateSystemMatricesx/AllocateSystemMatricesx.h"
+#include "./AverageOntoPartitionx/AverageOntoPartitionx.h"
+#include "./Bamgx/Bamgx.h"
+#include "./BamgConvertMeshx/BamgConvertMeshx.h"
+#include "./BamgTriangulatex/BamgTriangulatex.h"
+#include "./Calvingx/Calvingx.h"
+#include "./Chacox/Chacox.h"
+#include "./ConfigureObjectsx/ConfigureObjectsx.h"
+#include "./ContourToMeshx/ContourToMeshx.h"
+#include "./ContourToNodesx/ContourToNodesx.h"
+#include "./ControlInputSetGradientx/ControlInputSetGradientx.h"
+#include "./CreateNodalConstraintsx/CreateNodalConstraintsx.h"
+#include "./CreateJacobianMatrixx/CreateJacobianMatrixx.h"
+#include "./Damagex/Damagex.h"
+#include "./DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.h"
+#include "./DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.h"
+#include "./ExpToLevelSetx/ExpToLevelSetx.h"
+#include "./ElementConnectivityx/ElementConnectivityx.h"
+#include "./GeothermalFluxx/GeothermalFluxx.h"
+#include "./GetSolutionFromInputsx/GetSolutionFromInputsx.h"
+#include "./GetVectorFromInputsx/GetVectorFromInputsx.h"
+#include "./GetVectorFromControlInputsx/GetVectorFromControlInputsx.h"
+#include "./GiaDeflectionCorex/GiaDeflectionCorex.h"
+#include "./SetControlInputsFromVectorx/SetControlInputsFromVectorx.h"
+#include "./SetActiveNodesLSMx/SetActiveNodesLSMx.h"
+#include "./Gradjx/Gradjx.h"
+#include "./GroundinglineMigrationx/GroundinglineMigrationx.h"
+#include "./InputDepthAverageAtBasex/InputDepthAverageAtBasex.h"
+#include "./InputDuplicatex/InputDuplicatex.h"
+#include "./InputExtrudex/InputExtrudex.h"
+#include "./InterpFromMesh2dx/InterpFromMesh2dx.h"
+#include "./InterpFromGridToMeshx/InterpFromGridToMeshx.h"
+#include "./InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.h"
+#include "./InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.h"
+#include "./InterpFromMeshToGridx/InterpFromMeshToGridx.h"
+#include "./InputUpdateFromConstantx/InputUpdateFromConstantx.h"
+#include "./InputUpdateFromSolutionx/InputUpdateFromSolutionx.h"
+#include "./InputUpdateFromDakotax/InputUpdateFromDakotax.h"
+#include "./InputUpdateFromVectorx/InputUpdateFromVectorx.h"
+#include "./InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h"
+#include "./InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.h"
+#include "./IoModelToConstraintsx/IoModelToConstraintsx.h"
+#include "./KMLFileReadx/KMLFileReadx.h"
+#include "./KMLMeshWritex/KMLMeshWritex.h"
+#include "./KMLOverlayx/KMLOverlayx.h"
+#include "./Exp2Kmlx/Exp2Kmlx.h"
+#include "./Kml2Expx/Kml2Expx.h"
+#include "./Krigingx/Krigingx.h"
+#include "./FloatingiceMeltingRatex/FloatingiceMeltingRatex.h"
+#include "./Mergesolutionfromftogx/Mergesolutionfromftogx.h"
+#include "./MeshPartitionx/MeshPartitionx.h"
+#include "./MeshProfileIntersectionx/MeshProfileIntersectionx.h"
+#include "./SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.h"
+#include "./SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.h"
+#include "./SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.h"
+#include "./SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.h"
+#include "./SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.h"
+#include "./ModelProcessorx/ModelProcessorx.h"
+#include "./ParseToolkitsOptionsx/ParseToolkitsOptionsx.h"
+#include "./NodalValuex/NodalValuex.h"
+#include "./NodeConnectivityx/NodeConnectivityx.h"
+#include "./NodesDofx/NodesDofx.h"
+#include "./OutputDefinitionsResponsex/OutputDefinitionsResponsex.h"
+#include "./OutputResultsx/OutputResultsx.h"
+#include "./ConstraintsStatex/ConstraintsStatex.h"
+#include "./PointCloudFindNeighborsx/PointCloudFindNeighborsx.h"
+#include "./PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.h"
+#include "./Reduceloadx/Reduceloadx.h"
+#include "./Reducevectorgtofx/Reducevectorgtofx.h"
+#include "./ResetConstraintsx/ResetConstraintsx.h"
+#include "./ResetFSBasalBoundaryConditionx/ResetFSBasalBoundaryConditionx.h"
+#include "./RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.h"
+#include "./RheologyBAbsGradientx/RheologyBAbsGradientx.h"
+#include "./Scotchx/Scotchx.h"
+#include "./Shp2Kmlx/Shp2Kmlx.h"
+#include "./SurfaceMassBalancex/SurfaceMassBalancex.h"
+#include "./Solverx/Solverx.h"
+#include "./SystemMatricesx/SystemMatricesx.h"
+#include "./SpcNodesx/SpcNodesx.h"
+#include "./SurfaceAreax/SurfaceAreax.h"
+#include "./TriMeshx/TriMeshx.h"
+#include "./TriMeshProcessRiftsx/TriMeshProcessRiftsx.h"
+#include "./ThicknessAbsMisfitx/ThicknessAbsMisfitx.h"
+#include "./ThicknessAlongGradientx/ThicknessAlongGradientx.h"
+#include "./ThicknessAcrossGradientx/ThicknessAcrossGradientx.h"
+#include "./UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.h"
+#include "./VerticesDofx/VerticesDofx.h"
+#include "./VertexCoordinatesx/VertexCoordinatesx.h"
+#include "./VecMergex/VecMergex.h"
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/Abs.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/Abs.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/Abs.h	(revision 21239)
@@ -0,0 +1,9 @@
+#ifndef _BAMGABS_H_
+#define _BAMGABS_H_
+
+namespace bamg {
+
+	template<class T> inline T Abs (const T &a){return a <0 ? -a : a;}
+
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/BigPrimeNumber.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/BigPrimeNumber.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/BigPrimeNumber.cpp	(revision 21239)
@@ -0,0 +1,34 @@
+#include "./Abs.h"
+#include "./extrema.h"
+
+namespace bamg {
+
+	long BigPrimeNumber(long n){
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/AGoodNumberPrimeWith)*/
+
+		/*list of big prime numbers*/
+		const long BigPrimeNumber[] ={ 567890359L,
+			567890431L,  567890437L,  567890461L,  567890471L,
+			567890483L,  567890489L,  567890497L,  567890507L,
+			567890591L,  567890599L,  567890621L,  567890629L , 0};
+
+		/*initialize o and pi*/
+		long o  = 0;
+		long pi = BigPrimeNumber[1];
+
+		/*loop until BigPrimeNumber[i]==0 (end of BigPrimeNumber)*/
+		for (int i=0; BigPrimeNumber[i]; i++){
+
+			/*compute r, remainder of the division of BigPrimeNumber[i] by n*/
+			long r = BigPrimeNumber[i] % n;
+
+			/*compute oo = min ( r , n-r , |n - 2r|, |n-3r|)*/
+			long oo = Min(Min(r,n-r),Min(Abs(n-2*r),Abs(n-3*r)));
+			if(o < oo){
+				o  = oo;
+				pi = BigPrimeNumber[i];
+			}
+		}
+		return pi; 
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/BigPrimeNumber.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/BigPrimeNumber.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/BigPrimeNumber.h	(revision 21239)
@@ -0,0 +1,9 @@
+#ifndef _BIGPRIMENUMBER_H_
+#define _BIGPRIMENUMBER_H_
+
+namespace bamg {
+
+	long BigPrimeNumber(long n);
+
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/BinaryRand.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/BinaryRand.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/BinaryRand.h	(revision 21239)
@@ -0,0 +1,18 @@
+#ifndef _BINARYRAND_H_
+#define _BINARYRAND_H_
+
+#include <cstdlib>
+
+/*Return 1 or 0 randomly*/
+inline int BinaryRand(){
+	#ifdef RAND_MAX
+		/*RAND_MAX is defined by stdlib.h and is usually 32767*/
+		const long HalfRandMax = RAND_MAX/2;
+		return rand() < HalfRandMax;
+	#else
+		/*For sun machines, RAND_MAX is not defined, use 2^24*/
+		return rand() & 16384;
+	#endif
+} 
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/Exchange.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/Exchange.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/Exchange.h	(revision 21239)
@@ -0,0 +1,6 @@
+#ifndef _EXCHANGE_H_
+#define _EXCHANGE_H_
+
+template<class T> inline void Exchange (T &a,T &b) {T c=a;a=b;b=c;}
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/HeapSort.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/HeapSort.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/HeapSort.h	(revision 21239)
@@ -0,0 +1,92 @@
+#ifndef _HEAPSORT_H_
+#define _HEAPSORT_H_
+
+/*Sort a list of size n*/
+template<class T> inline void  HeapSort(T *c,long n){ /*{{{*/
+
+	/*Intermediaries*/
+	int i,j,l,r;
+	T   crit;
+
+	/*return if size <=1*/
+	if(n<=1) return;
+
+	/*Initialize variables*/
+	l=n/2+1; 
+	r=n;
+	c--; //the array must starts at 1 and not 0 
+
+	/*Sorting algorithm*/
+	for(;;){
+		if(l<=1){
+			crit   = c[r];
+			c[r--] = c[1];
+			if(r==1){
+				c[1]=crit; 
+				return;
+			}
+		}
+		else{
+			crit = c[--l]; 
+		}
+		j=l;
+		for(;;){
+			i = j;
+			j = 2*j;
+			if  (j>r){c[i]=crit;break;}
+			if ((j<r) && (c[j] < c[j+1])) j++;//c[j+1]> c[j] -> take j+1 instead of j (larger value)
+			if (crit < c[j]) c[i]=c[j];       //c[j]  > crit -> put this large value in i(<j)
+			else{c[i]=crit;break;}            //c[j]  < crit -> put crit in i (<j)
+		}
+	}
+}
+/*}}}*/
+
+/*Sort a list of size n and returns ordering*/
+template<class T> inline void  HeapSort(int** porder,T* c,int n){ /*{{{*/
+
+	/*Intermediaries*/
+	int  i,j,l,r;
+	T    crit;
+	int  pos;
+	int* order = NULL;
+
+	/*return if size <=1*/
+	if(n<=1) return;
+
+	/*Initialize variables*/
+	l=n/2+1; 
+	r=n;
+	c--; //the array must starts at 1 and not 0 
+	order = new int[n];
+	for(i=0;i<n;i++) order[i]=i+1;
+
+	/*Sorting algorithm*/
+	for(;;){
+		if(l<=1){
+			crit  =c[r]; pos=order[r];
+			c[r--]=c[1]; order[r+1]=order[1];
+			if (r==1){
+				c[1]=crit; order[1]=pos;
+				order++;
+				*porder=order;
+				return;
+			}
+		}
+		else  {crit=c[--l]; pos=order[l];}
+		j=l;
+		for(;;){
+			i=j;
+			j=2*j;
+			if  (j>r) {c[i]=crit;order[i]=pos;break;}
+			if ((j<r) && (c[j] < c[j+1]))j++;
+			if (crit < c[j]) {c[i]=c[j];order[i]=order[j];}
+			else{c[i]=crit;order[i]=pos;break;}
+		}
+	}
+
+	/*Make cppcheck happy*/
+	*porder=order;
+}/*}}}*/
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/OppositeAngle.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/OppositeAngle.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/OppositeAngle.h	(revision 21239)
@@ -0,0 +1,12 @@
+#ifndef _OPPOSITEANGLE_H_
+#define _OPPOSITEANGLE_H_
+
+#include "../Numerics/constants.h"
+
+/*Return the opposite angle modulo 2 Pi*/
+namespace bamg {
+	inline float  OppositeAngle(float  a){return a<0 ? PI+a:a-PI;}
+	inline double OppositeAngle(double a){return a<0 ?  PI+a:a- PI;}
+}
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/extrema.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/extrema.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/extrema.h	(revision 21239)
@@ -0,0 +1,13 @@
+#ifndef _EXTREMA_H_
+#define _EXTREMA_H_
+
+namespace bamg {
+
+	template<class T> inline T Min (const T &a,const T &b){return a < b ? a : b;}
+	template<class T> inline T Max (const T &a,const T & b){return a > b ? a : b;}
+	template<class T> inline T Max3 (const T &a,const T & b,const T & c){return Max(Max(a,b),c);}
+	template<class T> inline T Min3 (const T &a,const T & b,const T & c){return Min(Min(a,b),c);}
+
+}
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/shared.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/shared.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Bamg/shared.h	(revision 21239)
@@ -0,0 +1,16 @@
+/* \file shared.h
+ * \brief: header file for all shared  routines.
+ */
+
+#ifndef _SHAREDBamg_H_
+#define _SHAREDBamg_H_
+
+#include "Abs.h"
+#include "BigPrimeNumber.h"
+#include "BinaryRand.h"
+#include "Exchange.h"
+#include "extrema.h"
+#include "HeapSort.h"
+#include "OppositeAngle.h"
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/Arrhenius.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/Arrhenius.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/Arrhenius.cpp	(revision 21239)
@@ -0,0 +1,51 @@
+/* \file Arrhenius.cpp
+ * \brief figure out B of ice for a certain temperature
+ */
+
+#include <math.h>
+#include "../Numerics/types.h"
+#include "../Exceptions/exceptions.h"
+
+IssmDouble Arrhenius(IssmDouble temperature,IssmDouble depth,IssmDouble n){
+	/*Use EISMINT Parameterization for the rheology: Payne2000
+	 *
+	 *  A(T*) = A0 exp(-Q/RT*)
+	 *
+	 *  A0 constant of proportionality
+	 *     = 3.61 * 10^-13   if T*<263.15K
+	 *     = 1.73 * 10^3     if T*>263.15K
+	 *  Q  Activation energy for creep
+	 *     = 6.0  * 10^4     if T*<263.15K
+	 *     = 13.9 * 10^4     if T*>263.15K
+	 *  R  Universal gas constant
+	 *     = 8.314
+	 *  T* Absolute temperature corrected for the dependence of Tpmp on P
+	 *     = T - beta (s-z)
+	 *
+	 *  Convert A to B :  B = A^(-1/n) */
+
+	/*Some physical constants (Payne2000)*/
+	IssmDouble beta=8.66*1.e-4;
+	IssmDouble R=8.314;
+
+	/*Intermediaries*/
+	IssmDouble A,B,Tstar;
+
+	/*convert temperature to absolute temperature*/
+	_assert_(depth>0);
+	Tstar=temperature-beta*depth;
+	_assert_(Tstar>0);
+
+	/*Get A*/
+	if(Tstar<263.15){
+		A=3.61e-13*exp(  -6.e+4/(R*Tstar));
+	}
+	else{
+		A=1.73e+3 *exp(-13.9e+4/(R*Tstar));
+	}
+
+	/*Convert to B*/
+	B=pow(A,-1./n);
+
+	return B;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/BuddJacka.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/BuddJacka.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/BuddJacka.cpp	(revision 21239)
@@ -0,0 +1,55 @@
+/* \file BuddJacka.cpp
+ * \brief figure out B of ice for a certain temperature
+ *	  INPUT function B=BuddJacka(temperature)
+ *    where rigidity (in s^(1/3)Pa) is the flow law paramter in the flow law sigma=B*e(1/3) (Budd and Jacka, 1989). 
+ */
+#include <math.h>
+
+#include "../Numerics/types.h"
+
+IssmDouble BuddJacka(IssmDouble temperature){
+
+	/*output: */
+	IssmDouble B,T;
+
+	/*Switch to celsius from Kelvin: */
+	T=temperature-273.15;
+	if(T<=-40.){
+		B=1e8*(-0.000237326134296*pow(T+50.,3)+ 0.017054655749852*pow(T+50.,2)-0.496435984007500*(T+50.)+7.670967258739796);
+	}
+	else if(-40.<T & T<=-35.){
+	 B=1e8*(-0.000237326134296*pow(T+40.,3)+ 0.009934871720961*pow(T+40.,2)-0.226540709299368*(T+40.)+4.174746859353635);
+	}
+	else if(-35.<T & T<=-30.){
+		B=1e8*(-0.000293001369376*pow(T+35.,3)+ 0.006374979706516*pow(T+35.,2)-0.144991452161983*(T+35.)+3.260749339093782);
+	}
+	else if(-30.<T & T<=-25.){
+		B=1e8*(-0.000053702836500*pow(T+30.,3)+ 0.001979959165871*pow(T+30.,2)-0.103216757800049*(T+30.)+2.658541399774723);
+	}
+	else if(-25.<T & T<=-20.){
+		B=1e8*( 0.000006906867543*pow(T+25.,3)+ 0.001174416618375*pow(T+25.,2)-0.087444878878821*(T+25.)+2.185243735358781);
+	}
+	else if(-20.<T & T<=-15.){
+		B=1e8*(-0.000015460250554*pow(T+20.,3)+ 0.001278019631513*pow(T+20.,2)-0.075182697629382*(T+20.)+1.778243114866868);
+	}
+	else if(-15.<T & T<=-10.){
+		B=1e8*(-0.000110386100241*pow(T+15.,3)+ 0.001046115873209*pow(T+15.,2)-0.063562020105772*(T+15.)+1.432347586188582);
+	}
+	else if(-10.<T & T<=-5.){
+		B=1e8*(-0.000108595885218*pow(T+10.,3)+-0.000609675630408*pow(T+10.,2)-0.061379818891767*(T+10.)+1.126892119959808);
+	}
+	else if(-5.<T & T<=-2.){
+		B=1e8*( 0.000173187986430*pow(T+5.,3)+-0.002238613908676*pow(T+5.,2)-0.075621266587187*(T+5. )+0.791176649088537);
+	}
+	else if(-2.<T & T<=-1.){
+		B=1e8*( 0.000429499435151*pow(T+2.,3)+-0.000679922030808*pow(T+2.,2)-0.084376874405640*(T+2. )+0.548841399782495);
+	}
+	else if(-1.<T){
+		B=1e8*( 0.000429499435151*pow(T+1.,3)+ 0.000608576274646*pow(T+1.,2)-0.084448220161802*(T+1. )+0.464214102781199);
+	}
+
+	/*B cannot be negative!*/
+	if(B<0) B=1.e+6;
+
+	return B;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp	(revision 21239)
@@ -0,0 +1,31 @@
+/* file:  ComputeTemperaturePrecipitationfrom018.cpp
+ Scale present day monthly precipitation and temperature fields
+ along the NGRIP oxygen isotope record.
+ */
+
+#include "./elements.h"
+#include "../Numerics/numerics.h"
+
+void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,
+					       IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
+					       IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout){
+  
+  IssmDouble monthlytemperaturestmp[12],monthlyprectmp[12];
+  IssmDouble deltaTemp;
+  
+  /* Constants */
+  // dpermil = 2.4;/*degrees C per mil*/
+  
+  /*Create Delta Temp to be applied to monthly temps and used in precip scaling*/
+  deltaTemp = dpermil * (d018+34.83);   
+    
+  for (int imonth = 0; imonth<12; imonth++){
+    
+    monthlytemperaturestmp[imonth] = TemperaturePresentday[imonth] + deltaTemp;
+    monthlyprectmp[imonth] = PrecipitationPresentday[imonth]*exp((0.169/dpermil)*deltaTemp);
+    
+    /*Assign output pointer*/
+    *(monthlytemperaturesout+imonth) = monthlytemperaturestmp[imonth];
+    *(monthlyprecout+imonth) = monthlyprectmp[imonth];
+  }
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/ComputeDelta18oTemperaturePrecipitation.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/ComputeDelta18oTemperaturePrecipitation.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/ComputeDelta18oTemperaturePrecipitation.cpp	(revision 21239)
@@ -0,0 +1,30 @@
+/* file:  ComputeTemperaturePrecipitation.cpp
+   Compute the temperature and precipitation at time t from 
+   the data at present day and delta18O
+ */
+
+#include "./elements.h"
+#include "../Numerics/numerics.h"
+
+void ComputeDelta18oTemperaturePrecipitation(IssmDouble Delta18oSurfacePresent, IssmDouble Delta18oSurfaceLgm, IssmDouble Delta18oSurfaceTime,
+				     IssmDouble Delta18oPresent, IssmDouble Delta18oLgm, IssmDouble Delta18oTime, 
+				     IssmDouble* PrecipitationsPresentday,
+				     IssmDouble* TemperaturesLgm, IssmDouble* TemperaturesPresentday, 
+				     IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout){
+
+  IssmDouble monthlytemperaturestmp[12],monthlyprectmp[12];
+  IssmDouble delta18oLapseRate=-6.2*pow(10.,-3);
+  IssmDouble glacialindex; // used to vary present day temperature
+
+  glacialindex = (Delta18oTime-Delta18oPresent-delta18oLapseRate*(Delta18oSurfaceTime-Delta18oSurfacePresent))
+    /(Delta18oLgm-Delta18oPresent-delta18oLapseRate*(Delta18oSurfaceLgm-Delta18oSurfacePresent)); // Tarasov 2004 paper
+
+  for (int imonth = 0; imonth<12; imonth++){
+    monthlytemperaturestmp[imonth] = glacialindex*TemperaturesLgm[imonth] + (1.-glacialindex)*TemperaturesPresentday[imonth];
+    monthlyprectmp[imonth] = PrecipitationsPresentday[imonth];
+
+    /*Assign output pointer*/
+    *(monthlytemperaturesout+imonth) = monthlytemperaturestmp[imonth];
+    *(monthlyprecout+imonth) = monthlyprectmp[imonth];
+  }
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/ComputeMungsmTemperaturePrecipitation.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/ComputeMungsmTemperaturePrecipitation.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/ComputeMungsmTemperaturePrecipitation.cpp	(revision 21239)
@@ -0,0 +1,31 @@
+/* file:  ComputeMungsmTemperaturePrecipitation.cpp
+   Compute the temperature and precipitation at time t from 
+   the data at present day and lgm.
+   The interpolation is done from some factors extracted from the MUNGSM
+ */
+
+#include "./elements.h"
+#include "../Numerics/numerics.h"
+
+void ComputeMungsmTemperaturePrecipitation(IssmDouble TdiffTime, IssmDouble PfacTime,
+					   IssmDouble* PrecipitationsLgm, IssmDouble* PrecipitationsPresentday,
+					   IssmDouble* TemperaturesLgm, IssmDouble* TemperaturesPresentday,
+					   IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout){ 
+
+  IssmDouble monthlytemperaturestmp[12],monthlyprectmp[12];
+  IssmDouble tdiffh;  
+
+
+  for (int imonth = 0; imonth<12; imonth++){
+    tdiffh = TdiffTime*( TemperaturesLgm[imonth] - TemperaturesPresentday[imonth] );
+    monthlytemperaturestmp[imonth] = tdiffh + TemperaturesPresentday[imonth] ;
+
+    monthlyprectmp[imonth] =min(1.5, PrecipitationsPresentday[imonth] * pow(PrecipitationsLgm[imonth],PfacTime));   // [m/yr]
+
+    /*Assign output pointer*/
+    *(monthlytemperaturesout+imonth) = monthlytemperaturestmp[imonth];
+    *(monthlyprecout+imonth) = monthlyprectmp[imonth];
+  }
+  // printf(" tempera %f\n",monthlytemperaturestmp[1]);
+}
+ 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/Cuffey.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/Cuffey.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/Cuffey.cpp	(revision 21239)
@@ -0,0 +1,57 @@
+/* \file Cuffey.cpp
+ * \brief figure out B of ice for a certain temperature
+ *	  INPUT function B=Cuffey(temperature)
+ *    where rigidigty (in s^(1/3)Pa) is the flow law paramter in the flow law sigma=B*e(1/3) (Cuffey, p75). 
+ */
+
+#include <math.h>
+
+#include "../Numerics/types.h"
+
+IssmDouble Cuffey(IssmDouble temperature){
+
+	/*output: */
+	IssmDouble B,T;
+
+	/*Switch to celsius from Kelvin: */
+	T=temperature-273.15;
+
+	if(T<=-45.0){
+		B=1.e+8*(-0.000396645116301*pow(T+50.,3)+ 0.013345579471334*pow(T+50.,2) -0.356868703259105*(T+50.)+7.272363035371383);
+	}
+	else if((T>=-45.0) && (T<=-40.0)){
+		B=1.e+8*(-0.000396645116301*pow(T+45.,3)+ 0.007395902726819*pow(T+45.,2) -0.253161292268336*(T+45.)+5.772078366321591);
+	}
+	else if((T>=-40.0) && (T<=-35.0)){
+		B=1.e+8*(0.000408322072669*pow(T+40.,3)+  0.001446225982305*pow(T+40.,2)  -0.208950648722716*(T+40.)+4.641588833612773);
+	}
+	else if((T>=-35.0) && (T<=-30.0)){
+		B=1.e+8*(-0.000423888728124*pow(T+35.,3)+ 0.007571057072334*pow(T+35.,2)  -0.163864233449525*(T+35.)+3.684031498640382);
+	}
+	else if((T>=-30.0) && (T<=-25.0)){
+		B=1.e+8*(0.000147154327025*pow(T+30.,3)+ 0.001212726150476*pow(T+30.,2) -0.119945317335478*(T+30.)+3.001000667185614);
+	}
+	else if((T>=-25.0) && (T<=-20.0)){
+		B=1.e+8*(-0.000193435838672*pow(T+25.,3)+ 0.003420041055847*pow(T+25.,2)  -0.096781481303861*(T+25.)+2.449986525148220);
+	}
+	else if((T>=-20.0) && (T<=-15.0)){
+		B=1.e+8*(0.000219771255067*pow(T+20.,3)+  0.000518503475772*pow(T+20.,2)  -0.077088758645767*(T+20.)+2.027400665191131);
+	}
+	else if((T>=-15.0) && (T<=-10.0)){
+		B=1.e+8*(-0.000653438900191*pow(T+15.,3)+ 0.003815072301777*pow(T+15.,2)  -0.055420879758021*(T+15.)+1.682390865739973);
+	}
+	else if((T>=-10.0) && (T<=-5.0)){
+		B=1.e+8*(0.000692439419762*pow(T+10.,3) -0.005986511201093 *pow(T+10.,2) -0.066278074254598*(T+10.)+1.418983411970382);
+	}
+	else if((T>=-5.0) && (T<=-2.0)){
+		B=1.e+8*(-0.000132282004110*pow(T+5.,3) +0.004400080095332*pow(T+5.,2)    -0.074210229783403*(T+5.)+ 1.024485188140279);
+	}
+	else{
+		B=1.e+8*(-0.000132282004110*pow(T+2.,3) +0.003209542058346*pow(T+2.,2)    -0.051381363322371*(T+2.)+ 0.837883605537096);
+	}
+
+	/*B cannot be negative!*/
+	if(B<0) B=1.e+6;
+
+	return B;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/CuffeyTemperate.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/CuffeyTemperate.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/CuffeyTemperate.cpp	(revision 21239)
@@ -0,0 +1,15 @@
+/* \file CuffeyTemperate.cpp
+ * \brief figure out B of ice for a certain temperature and waterfraction
+ *	  INPUT function B=Cuffey(temperature, waterfraction)
+ *    where rigidity (in s^(1/3)Pa) is the flow law parameter in the flow law sigma=B*e(1/3) (Cuffey, p75). 
+ */
+
+#include <math.h>
+#include "./elements.h"
+#include "../Numerics/numerics.h"
+
+IssmDouble CuffeyTemperate(IssmDouble temperature, IssmDouble waterfraction, IssmDouble stressexp){
+
+	return Cuffey(temperature)*pow(1+181.25*max(0., min(0.01, waterfraction)), -1./stressexp); 
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/DrainageFunctionWaterfraction.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/DrainageFunctionWaterfraction.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/DrainageFunctionWaterfraction.cpp	(revision 21239)
@@ -0,0 +1,44 @@
+/*!\file DrainageFunctionWaterfraction.cpp
+ * \brief: drain excess water fraction
+ */
+
+#include <math.h>
+#include "../Numerics/types.h"
+#include "../Exceptions/exceptions.h"
+
+IssmDouble DrainageFunctionWaterfraction(IssmDouble waterfraction, IssmDouble dt=0.){
+	/* DrainageFunctionWaterfraction returns how much of the waterfraction is drained per year */
+	_assert_(waterfraction>=0.);
+	_assert_(dt>=0.);
+
+	IssmDouble w0=0.01, w1=0.02, w2=0.03;
+	IssmDouble yts=365.*24.*60.*60.;
+	IssmDouble Dret, D0=0., D1=0.005/yts, D2=0.05/yts;
+
+	/*get drainage function value*/
+	if((w0==w1)||(w1==w2)||(w0==w2))
+		_error_("Error: equal ordinates in DrainageFunctionWaterfraction -> division by zero. Abort");
+	
+	if(waterfraction<=w0)
+		Dret=D0;
+	else if((waterfraction>w0) && (waterfraction<=w1))
+		Dret=(D1-D0)/(w1-w0)*(waterfraction-w0)+D0;
+	else if((waterfraction>w1) && (waterfraction<=w2))
+		Dret=(D2-D1)/(w2-w1)*(waterfraction-w1)+D1;
+	else 
+		Dret=D2;
+
+	/*drain only up to w0*/
+	if(dt==0.){
+		if((waterfraction>w0) && (waterfraction-Dret*yts<w0))
+			return waterfraction-w0;
+		else
+			return Dret*yts;
+	}
+	else{
+		if((waterfraction>w0) && (waterfraction-dt*Dret<w0))
+			return (waterfraction-w0)/dt;
+		else
+			return Dret;
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/EstarComponents.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/EstarComponents.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/EstarComponents.cpp	(revision 21239)
@@ -0,0 +1,129 @@
+#include <math.h>
+#include "../Numerics/types.h"
+#include "../Exceptions/exceptions.h"
+#include "./elements.h"
+void EstarStrainrateQuantities(IssmDouble *pepso, IssmDouble *pepsprime_norm, IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble vmag,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz,IssmDouble* dvmag){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble omega[3];
+	IssmDouble nrsp[3],nrsp_norm;
+	IssmDouble eps[3][3],epso;
+	IssmDouble epsprime[3],epsprime_norm;
+
+	/*Get omega, correction for rigid body rotation*/
+	EstarOmega(&omega[0],vx,vy,vz,vmag,dvx,dvy,dvz,dvmag);
+
+	/*Non-rotating shear plane*/
+	nrsp[0] =  vy*omega[2] - vz*omega[1];
+	nrsp[1] =  vz*omega[0] - vx*omega[2];
+	nrsp[2] =  vx*omega[1] - vy*omega[0];
+
+	/*Normalize*/
+	nrsp_norm = sqrt(nrsp[0]*nrsp[0] + nrsp[1]*nrsp[1] + nrsp[2]*nrsp[2]);
+	if(nrsp_norm==0){
+		nrsp[0] = 0.;
+		nrsp[1] = 0.;
+		nrsp[2] = 1.;
+	}
+	else{
+		nrsp[0] =nrsp[0]/nrsp_norm;
+		nrsp[1] =nrsp[1]/nrsp_norm;
+		nrsp[2] =nrsp[2]/nrsp_norm;
+	}
+
+	/*Build strain rate tensor*/
+	eps[0][0] = dvx[0];             eps[0][1] = .5*(dvx[1]+dvy[0]); eps[0][2] = .5*(dvx[2]+dvz[0]);
+	eps[1][0] = .5*(dvx[1]+dvy[0]); eps[1][1] = dvy[1];             eps[1][2] = .5*(dvy[2]+dvz[1]);
+	eps[2][0] = .5*(dvx[2]+dvz[0]); eps[2][1] = .5*(dvy[2]+dvz[1]); eps[2][2] = dvz[2];
+
+	/*octahedral strain rate*/
+	epso = 0.;
+	for(int i=0;i<3;i++) for(int j=0;j<3;j++) epso += eps[i][j]*eps[i][j];
+	if(epso==0.) epso=1.e-14;
+	epso=sqrt(epso)/sqrt(3.);
+
+	/*Compute the shear strain rate on the non ratating shear plane*/
+	epsprime[0]=0.;
+	epsprime[1]=0.;
+	epsprime[2]=0.;
+	/*term #1: eps'.n */
+	for(int i=0;i<3;i++){
+		for(int j=0;j<3;j++){
+			epsprime[i] += eps[i][j]*nrsp[j];
+		}
+	}
+	/*term #2: ((eps'.n).n)n */
+	for(int i=0;i<3;i++){
+		for(int j=0;j<3;j++){
+			for(int k=0;k<3;k++){
+				epsprime[j] += -nrsp[i]*eps[i][k]*nrsp[k]*nrsp[j];
+			}
+		}
+	}
+	/*term #3: ((eps'.n).omega)omega */
+	for(int i=0;i<3;i++){
+		for(int j=0;j<3;j++){
+			for(int k=0;k<3;k++){
+				epsprime[j] += -nrsp[i]*eps[i][k]*omega[k]*omega[j];
+			}
+		}
+	}
+
+	/*Get norm of epsprime*/
+	epsprime_norm = sqrt(epsprime[0]*epsprime[0] + epsprime[1]*epsprime[1] + epsprime[2]*epsprime[2]);
+	
+	/*Assign output pointers*/
+	*pepso=epso;
+	*pepsprime_norm=epsprime_norm;
+}/*}}}*/
+void EstarOmega(IssmDouble* omega,IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble vmag,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz, IssmDouble* dvmag){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble omega_norm;
+	IssmDouble omega_rigid[3];
+
+	/*Create vorticity vector*/
+	_assert_(dvx && dvy && dvz && dvmag);
+	if(vmag<1e-12)vmag=1e-12;
+
+	/*Create vorticity vector, corrected for rigid body rotation
+	 * \overline{\omega} =\omega - \omega_rigid
+	 *                   =\nabla\times{\bf v} - 2*U*\kappa*\hat{b};
+	 *                   =\nabla\times{\bf v} - (2*{\bf v}\times(({\bf v}\cdot\nabla)*{\bf v}))/U^2
+	 * check the magnitude of the second term -- if it is small, then the two
+	 * vorticities (omega and first term in omega) are approx. equal
+	 *
+	 * */
+	omega_rigid[0] = 2*(vy*(vx*dvz[0]+vy*dvz[1]+vz*dvz[2]) - vz*(vx*dvy[0]+vy*dvy[1]+vz*dvy[2]))/(vmag*vmag);
+	omega_rigid[1] = 2*(vz*(vx*dvx[0]+vy*dvx[1]+vz*dvx[2]) - vx*(vx*dvz[0]+vy*dvz[1]+vz*dvz[2]))/(vmag*vmag);
+	omega_rigid[2] = 2*(vx*(vx*dvy[0]+vy*dvy[1]+vz*dvy[2]) - vy*(vx*dvx[0]+vy*dvx[1]+vz*dvx[2]))/(vmag*vmag);
+
+	omega[0] = (dvz[1] - dvy[2]) - omega_rigid[0];
+	omega[1] = (dvx[2] - dvz[0]) - omega_rigid[1];
+	omega[2] = (dvy[0] - dvx[1]) - omega_rigid[2];
+
+	/*Take out vorticity component aligned with the velocity*/
+	IssmDouble wdotv = vx/vmag*omega[0] + vy/vmag*omega[1] + vz/vmag*omega[2];
+	omega[0] = omega[0] - wdotv*vx/vmag;
+	omega[1] = omega[1] - wdotv*vy/vmag;
+	omega[2] = omega[2] - wdotv*vz/vmag;
+
+	/*Normalize*/
+	omega_norm = sqrt(omega[0]*omega[0] + omega[1]*omega[1] + omega[2]*omega[2]);
+	if(omega_norm==0){
+		omega[0] = 0.;
+		omega[1] = 0.;
+		omega[2] = 1.;
+	}
+	else{
+		omega[0] =omega[0]/omega_norm;
+		omega[1] =omega[1]/omega_norm;
+		omega[2] =omega[2]/omega_norm;
+	}
+
+}/*}}}*/
+IssmDouble EstarLambdaS(IssmDouble epso, IssmDouble epsprime_norm){/*{{{*/
+   _assert_(epso>0.);
+	_assert_(epsprime_norm>=0.); 
+	return sqrt(2*epsprime_norm*epsprime_norm/(3*epso*epso));
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/LliboutryDuval.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/LliboutryDuval.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/LliboutryDuval.cpp	(revision 21239)
@@ -0,0 +1,73 @@
+/* \file LliboutryDuval.cpp
+ * \brief figure out B of ice for a certain temperature and water fraction or enthalpy
+ */
+
+#include <math.h>
+#include "../Numerics/types.h"
+#include "../Exceptions/exceptions.h"
+
+/* get ice stiffness B from enthalpy, pressure and flow law exponent*/
+IssmDouble LliboutryDuval(IssmDouble enthalpy, IssmDouble pressure, IssmDouble n, IssmDouble betaCC, IssmDouble referencetemperature, IssmDouble heatcapacity, IssmDouble latentheat){
+  /*Use Lliboutry & Duval's 1985 parameterization for the rheology: 
+	* see also: Grewe/Blatter 2009, Aschwanden et al. 2012
+	*
+	* ISSM uses enthalpy/temperature values that are not corrected for pressure.
+   *
+   *  A(H,p) = A0 exp(-Q/RT(H,p)), if H < H_s(p)
+   *         = A0 exp(-Q/RTpmp) (1+181.25w(H,p)), if H_s(p) \le H < H_l(p)
+   *  
+   *  T(H,p) = Tref + H/c_i, if H < H_s(p)
+   *         = Tpmp , if H_s(p) \le H \le H_l(p)
+   *
+   *  w(H,p) = 0, if H < H_s(p)
+   *         = (H - H_s(p))/L
+   *
+   *  H_s(p) = c_i (Tpmp - Tref)
+   *
+   *  Tpmp   = T - betaCC p;
+   *
+   *  A0 constant of proportionality
+   *     = 3.61 * 10^-13   if T*<263.15K
+   *     = 1.73 * 10^3     if T*>263.15K
+   *  Q  Activation energy for creep
+   *     = 6.0  * 10^4     if T*<263.15K
+   *     = 13.9 * 10^4     if T*>263.15K
+   *  R  Universal gas constant
+   *     = 8.314
+   *  
+   *  Convert A to B :  B = A^(-1/n) */
+	/*check feasibility*/
+	_assert_(pressure+1.e-4>=0); // deal with pressure instability at ice surface
+	_assert_(n>0);
+	_assert_(betaCC>=0);
+	_assert_(referencetemperature>=0);
+	_assert_(heatcapacity>0);
+	_assert_(latentheat>0);
+
+	/*Some physical constants*/
+	IssmDouble R=8.314; 
+
+	/*Intermediaries*/
+	IssmDouble A,B,Tstar,Tpmp,H_sp,waterfraction;
+
+	Tpmp=273.15-betaCC*pressure; //pressure melting point temperature
+	H_sp=heatcapacity*(Tpmp-referencetemperature); //pressure melting point enthalpy
+	if (enthalpy<H_sp){ //compute homologous temperature and water fraction
+		Tstar=referencetemperature+enthalpy/heatcapacity+betaCC*pressure; 
+		waterfraction=0.;
+	}
+	else{
+		Tstar=273.15;
+		waterfraction=(enthalpy-H_sp)/latentheat;
+		if (waterfraction>0.01) waterfraction=0.01; // limit softness of ice
+	}
+
+	/*Get A*/
+	if(Tstar<=263.15){A=3.61e-13*exp(-6.e+4/(R*Tstar));}
+	else{A=1.73e3*exp(-13.9e+4/(R*Tstar));}
+	A*=(1.+181.25*waterfraction);
+
+	/*Convert to B*/
+	B=pow(A,-1./n);
+	return B;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/Paterson.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/Paterson.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/Paterson.cpp	(revision 21239)
@@ -0,0 +1,57 @@
+/* \file Paterson.cpp
+ * \brief figure out B of ice for a certain temperature
+ *	  INPUT function B=Paterson(temperature)
+ *    where rigidigty (in s^(1/3)Pa) is the flow law paramter in the flow law sigma=B*e(1/3) (Paterson, p97). 
+ */
+
+#include <math.h>
+
+#include "../Numerics/types.h"
+
+IssmDouble Paterson(IssmDouble temperature){
+
+	IssmDouble B,T;
+
+	/*Switch to celsius from Kelvin: */
+	T=temperature-273.15;
+
+
+	if(T<=-45.0){
+		B=1.e+8*(-0.000292866376675*pow(T+50.,3)+ 0.011672640664130*pow(T+50.,2)  -0.325004442485481*(T+50.)+  6.524779401948101);
+	}
+	else if((T>=-45.0) && (T<=-40.0)){
+		B=1.e+8*(-0.000292866376675*pow(T+45.,3)+ 0.007279645014004*pow(T+45.,2)  -0.230243014094813*(T+45.)+  5.154964909039554);
+	}
+	else if((T>=-40.0) && (T<=-35.0)){
+		B=1.e+8*(0.000072737147457*pow(T+40.,3)+  0.002886649363879*pow(T+40.,2)  -0.179411542205399*(T+40.)+  4.149132666831214);
+	}
+	else if((T>=-35.0) && (T<=-30.0)){
+		B=1.e+8*(-0.000086144770023*pow(T+35.,3)+ 0.003977706575736*pow(T+35.,2)  -0.145089762507325*(T+35.)+  3.333333333333331);
+	}
+	else if((T>=-30.0) && (T<=-25.0)){
+		B=1.e+8*(-0.000043984685769*pow(T+30.,3)+ 0.002685535025386*pow(T+30.,2)  -0.111773554501713*(T+30.)+  2.696559088937191);
+	}
+	else if((T>=-25.0) && (T<=-20.0)){
+		B=1.e+8*(-0.000029799523463*pow(T+25.,3)+ 0.002025764738854*pow(T+25.,2)  -0.088217055680511*(T+25.)+  2.199331606342181);
+	}
+	else if((T>=-20.0) && (T<=-15.0)){
+		B=1.e+8*(0.000136920904777*pow(T+20.,3)+  0.001578771886910*pow(T+20.,2)  -0.070194372551690*(T+20.)+  1.805165505978111);
+	}
+	else if((T>=-15.0) && (T<=-10.0)){
+		B=1.e+8*(-0.000899763781026*pow(T+15.,3)+ 0.003632585458564*pow(T+15.,2)  -0.044137585824322*(T+15.)+  1.510778053489523);
+	}
+	else if((T>=-10.0) && (T<=-5.0)){
+		B=1.e+8*(0.001676964325070*pow(T+10.,3)-  0.009863871256831*pow(T+10.,2)  -0.075294014815659*(T+10.)+  1.268434288203714);
+	}
+	else if((T>=-5.0) && (T<=-2.0)){
+		B=1.e+8*(-0.003748937622487*pow(T+5.,3)+0.015290593619213*pow(T+5.,2)  -0.048160403003748*(T+5.)+  0.854987973338348);
+	}
+	else{
+		B=1.e+8*(-0.003748937622488*pow(T+2.,3)-0.018449844983174*pow(T+2.,2)  -0.057638157095631*(T+2.)+  0.746900791092860);
+	}
+
+	/*B cannot be negative!*/
+	if(B<0) B=1.e+6;
+
+	return B;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/PddSurfaceMassBalance.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/PddSurfaceMassBalance.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/PddSurfaceMassBalance.cpp	(revision 21239)
@@ -0,0 +1,225 @@
+/* file:  PddSurfaceMassBlance.cpp
+   Calculating the surface mass balance using the positive degree day method.
+   Updating the precipitation and temperature to the new elevation
+ */
+
+#include "./elements.h"
+#include "../Numerics/numerics.h"
+
+IssmDouble PddSurfaceMassBalance(IssmDouble* monthlytemperatures, IssmDouble* monthlyprec,
+				 IssmDouble* pdds, IssmDouble* pds, IssmDouble* melt, IssmDouble* accu, 
+				 IssmDouble signorm, IssmDouble yts, IssmDouble h, IssmDouble s, IssmDouble desfac,
+				 IssmDouble s0t,IssmDouble s0p, IssmDouble rlaps,IssmDouble rlapslgm,
+				 IssmDouble TdiffTime,IssmDouble sealevTime,
+				 IssmDouble rho_water,IssmDouble rho_ice){
+
+  // output:
+  IssmDouble B;    // surface mass balance, melt+accumulation
+  int    iqj,imonth;
+
+  IssmDouble saccu;     // yearly surface accumulation
+  IssmDouble smelt;     // yearly melt
+  IssmDouble precrunoff;      // yearly runoff
+  IssmDouble prect; // total precipitation during 1 year taking into account des. ef.
+  IssmDouble water; //water=rain + snowmelt 
+  IssmDouble runoff; //meltwater only, does not include rain 
+  IssmDouble sconv; //rhow_rain/rhoi / 12 months
+
+  //IssmDouble  sealev=0.;         // degrees per meter. 7.5 lev's 99 paper, 9 Marshall 99 paper
+  //IssmDouble  Pfac=0.5,Tdiff=0.5;
+  IssmDouble rtlaps;
+  // IssmDouble lapser=6.5         // lapse rate
+  // IssmDouble desfac = 0.3;      // desert elevation factor
+  // IssmDouble s0p=0.;            // should be set to elevation from precip source
+  // IssmDouble s0t=0.;         // should be set to elevation from temperature source
+  IssmDouble st;             // elevation between altitude of the temp record and current altitude
+  IssmDouble sp;             // elevation between altitude of the prec record and current altitude
+  IssmDouble deselcut=1.0;
+
+  // PDD and PD constants and variables
+  IssmDouble siglim;          // sigma limit for the integration which is equal to 2.5 sigmanorm
+  IssmDouble signormc = signorm - 0.5;     // sigma of the temperature distribution for cloudy day
+  IssmDouble siglimc, siglim0, siglim0c;
+  IssmDouble PDup, pddsig, PDCUT = 2.0; // PDcut: rain/snow cutoff temperature (C)
+  IssmDouble DT = 0.02;
+  IssmDouble pddt, pd; // pd: snow/precip fraction, precipitation falling as snow
+
+  IssmDouble q, qmpt;   // q is desert/elev. fact, hnpfac is huybrect fact, and pd is normal dist.
+  IssmDouble qm = 0.;   // snow part of the precipitation 
+  IssmDouble qmt = 0.;  // precipitation without desertification effect adjustment
+  IssmDouble qmp = 0.;  // desertification taken into account
+  IssmDouble pdd = 0.;     
+  IssmDouble frzndd = 0.;  
+
+  IssmDouble tstar;          // monthly mean surface temp
+  IssmDouble Tsum= 0.;       // average summer (JJA) temperature
+  IssmDouble Tsurf = 0.;     // average annual temperature    
+
+  IssmDouble deltm=1./12.;
+  int    ismon[12]={11,0,1,2,3,4,5,6,7,8,9,10};
+
+  IssmDouble snwm;  // snow that could have been melted in a year.
+  IssmDouble snwmf; //  ablation factor for snow per positive degree day.
+  IssmDouble smf;   //  ablation factor for ice per pdd (Braithwaite 1995 from tarasov 2002).
+
+  IssmDouble dfrz=1.5, CovrLm=2009./3.35e+5, dCovrLm=dfrz*CovrLm; //m*J kg^-1 C^-1 /(J kg^-1)=m/C yr
+  IssmDouble supice,supcap,diffndd;
+  IssmDouble fsupT=0.5,  fsupndd=0.5;  // Tsurf mode factors for supice
+  IssmDouble pddtj, hmx2;
+
+  sconv=(rho_water/rho_ice)/12.; //rhow_rain/rhoi / 12 months
+
+  /*PDD constant*/
+  siglim = 2.5*signorm; 
+  siglimc = 2.5*signormc;
+  siglim0 = siglim/DT + 0.5;
+  siglim0c = siglimc/DT + 0.5;
+  PDup = siglimc+PDCUT;
+
+  // seasonal loop
+  for (iqj = 0; iqj < 12; iqj++){
+    imonth =  ismon[iqj];
+    
+    /*********compute lapse rate ****************/
+    st=(s-s0t)/1000.;
+    rtlaps=TdiffTime*rlapslgm + (1.-TdiffTime)*rlaps; // lapse rate
+    
+    /*********compute Surface temperature *******/
+    monthlytemperatures[imonth]=monthlytemperatures[imonth] - rtlaps *max(st,sealevTime*0.001);
+    tstar = monthlytemperatures[imonth];
+    Tsurf = tstar*deltm+Tsurf;        
+
+    /*********compute PD ****************/
+    if (tstar < PDup){
+      pd = 1.;
+      if (tstar >= -siglimc){ pd = pds[reCast<int,IssmDouble>(tstar/DT + siglim0c)];}}
+    else { 
+      pd = 0.;}
+    
+    /******exp des/elev precip reduction*******/
+    sp=(s-s0p)/1000.-deselcut; // deselev effect is wrt chng in topo
+    if (sp>0.0){q = exp(-desfac*sp);}
+    else {q = 1.0;}
+    
+    qmt= qmt + monthlyprec[imonth]*sconv;  //*sconv to convert in m of ice equivalent per month  
+    qmpt= q*monthlyprec[imonth]*sconv;
+    qmp= qmp + qmpt;
+    qm= qm + qmpt*pd;
+
+    /*********compute PDD************/
+    // ndd(month)=-(tstar-pdd(month)) since ndd+pdd gives expectation of
+    // gaussian=T_m, so ndd=-(Tsurf-pdd)
+    if (iqj>5 && iqj<9){ Tsum=Tsum+tstar;} 
+    
+    if (tstar >= siglim) {pdd = pdd + tstar*deltm;}
+    else if (tstar> -siglim){
+      pddsig=pdds[reCast<int,IssmDouble>(tstar/DT + siglim0)];
+      pdd = pdd + pddsig*deltm;
+      frzndd = frzndd - (tstar-pddsig)*deltm;}
+    else{frzndd = frzndd - tstar*deltm; }
+    
+    /*Assign output pointer*/
+    *(monthlytemperatures+imonth) = monthlytemperatures[imonth];
+    *(monthlyprec+imonth) = monthlyprec[imonth];      
+  } // end of seasonal loop 
+  //******************************************************************
+
+  saccu = qm;
+  prect = qmp;     // total precipitation during 1 year taking into account des. ef.
+  Tsum=Tsum/3;
+  
+  /***** determine PDD factors *****/
+  if(Tsum< -1.) {
+    snwmf=2.65*0.001;   //  ablation factor for snow per positive degree day.*0.001 to go from mm to m/ppd
+    smf=17.22*0.001;    //  ablation factor for ice per pdd (Braithwaite 1995 from tarasov 2002)
+  } 
+  else if(Tsum< 10){
+    snwmf = (0.15*Tsum + 2.8)*0.001;
+    smf = (0.0067*pow((10.-Tsum),3) + 8.3)*0.001;
+  }
+  else{
+    snwmf=4.3*0.001;
+    smf=8.3*0.001;
+  }
+  snwmf=0.95*snwmf;
+  smf=0.95*smf;
+  
+  /*****  compute PDD ablation and refreezing *****/
+  pddt = pdd *365;
+  snwm = snwmf*pddt;       // snow that could have been melted in a year
+  hmx2 = min(h,dfrz);   // refreeze active layer max depth: dfrz
+  
+  if(snwm < saccu) {
+    water=prect-saccu + snwm; //water=rain + snowmelt
+    //     l 2.2= capillary factor
+    //     Should refreezing be controlled by frzndd or by mean annual Tsurf?
+    //     dCovrLm concept is of warming of active layer (thickness =d@=1-
+    //     >2m)
+    //     problem with water seepage into ice: should be sealed after
+    //     refreezing
+    //     so everything needs to be predicated on 1 year scale, except for
+    //     thermal
+    //     conductivity through ice
+    //     also, need to account that melt season has low accum, so what's
+    //     going to
+    //     hold the meltwater around for refreezing? And melt-time will have
+    //     low seasonal frzndd
+
+    //      Superimposed ice :  Pfeffer et al. 1991, Tarasov 2002
+
+    supice= min(hmx2*CovrLm*frzndd+2.2*(saccu-snwm), water); // superimposed ice
+    supcap=min(2.2*(saccu-snwm),water);
+    runoff=snwm - supice;  //meltwater only, does not include rain
+  }
+  else {  //all snow melted
+    supice= min(hmx2*CovrLm*frzndd, prect );
+    runoff= saccu + smf*(pddt-saccu/snwmf) - supice;
+    supcap=0;
+  }
+  //     pdd melting doesn't cool Tsurf, so ndd refreeze shouldn't warm it
+  //     except pdd melt heat source is atmosphere, while refreeze is
+  //     ground/ice stored interim
+  //     assume pdd=ndd, then melt should equal refreeze and Tsurf should=0
+  //     assume ndd=2*pdd, then all supice is refrozen, but Tsurf should be
+  //     <0
+  //     assume ndd>pdd, little melt => little supice 
+  //     bottom line: compare for Tsurf<0 : supice and no supice case,
+  //     expect Tsurf difference
+  //     except some of cooling flux comes from atmosphere//
+  //     1 dm supice should not raise Tsurf by 1/dCovrLm = 16.675C
+  //     does supice make sense when H< 0.1m? then d=thermoactive ice layer ////
+  //     < 0.1 
+
+  //     make more sense to just use residual pdd-ndd except that pdd
+  //     residual not clear yet
+  //     frzndd should not be used up by refreezing in snow, so stick in
+  //     supcap.
+  diffndd=0;
+  if (frzndd>0) {
+    diffndd=fsupndd*min((supice-supcap)/dCovrLm ,frzndd);
+    frzndd=frzndd-diffndd;
+  }
+  if(runoff<0){
+    saccu= saccu -runoff;
+    smelt = 0;
+    precrunoff=prect-saccu;
+    //here assume pdd residual is 0, => 
+    Tsurf= max(Tsurf,-frzndd);
+  }
+  else {
+    smelt = runoff;
+    precrunoff=prect-max(0.,supice)-saccu;}
+  //here really need pdd balance, try 0.5 fudge factor?
+  //at least runoff>0 => it's fairly warm, so Tsurf is !<<0,
+  //yet from site plots, can be ice free with Tsurf=-5.5C
+  if(Tsurf<0) {
+    Tsurf= min(Tsurf+fsupT*diffndd , 0.);}
+
+  melt[0]=smelt/yts;
+  accu[0]=saccu/yts;
+  B = saccu - smelt;
+  B = B/yts;
+  pddtj=pddt;
+
+  return B;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/PrintArrays.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/PrintArrays.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/PrintArrays.cpp	(revision 21239)
@@ -0,0 +1,62 @@
+
+#include "./elements.h"
+#include "../io/Print/Print.h"
+using namespace std;
+
+void printarray(IssmPDouble* array,int lines,int cols){
+	_printf_("\n");
+	for(int i=0;i<lines;i++){  
+		_printf_("   [ ");
+		for(int j=0;j<cols;j++) _printf_( " " << setw(11) << setprecision (5) << array[i*cols+j]);
+		_printf_(" ]\n");
+	}  
+	_printf_("\n");
+}
+void printsparsity(IssmPDouble* array,int lines,int cols){
+	int count;
+	_printf_("\n");
+	for(int i=0;i<lines;i++){  
+		_printf_("   [ ");
+		count = 0;
+		for(int j=0;j<cols;j++){
+			if(array[i*cols+j]!=0.0){
+				_printf_( " X"); count++;
+			}
+			else
+			 _printf_( " .");
+		}
+		_printf_(" ] "<<i<<" => "<<count << "\n");
+	}  
+	_printf_("\n");
+}
+void printarray(int* array,int lines,int cols){
+	_printf_("\n");
+	for(int i=0;i<lines;i++){  
+		_printf_("   [ ");
+		for(int j=0;j<cols;j++) _printf_( " " << setw(11) << setprecision (5) << array[i*cols+j]);
+		_printf_(" ]\n");
+	}  
+	_printf_("\n");
+}
+void printarray(bool* array,int lines,int cols){
+	_printf_("\n");
+	for(int i=0;i<lines;i++){  
+		_printf_("   [ ");
+		for(int j=0;j<cols;j++){
+			if(array[i*cols+j]) _printf_( " 1");
+			else _printf_( " 0");
+		}
+		_printf_(" ]\n");
+	}  
+	_printf_("\n");
+}
+void printbinary(int n){
+	unsigned int i=1L<<(sizeof(n)*8-1);
+	while (i>0) {
+		if (n&i)
+		 _printf_("1");
+		else
+		 _printf_("0");
+		i>>=1;
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/StressIntensityIntegralWeight.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/StressIntensityIntegralWeight.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/StressIntensityIntegralWeight.cpp	(revision 21239)
@@ -0,0 +1,31 @@
+/* \file StressIntensityIntegralWeight.cpp
+ * \Weight to integrate the stress along the ice flow direction to compute the stress intensity factor : Linear Fracture Mechanics (see "Combining damage and fracture mechanics to model calving",Krug 2014 in the appendix) 
+ */
+
+#include <math.h>
+
+#include "../Numerics/types.h"
+
+IssmDouble StressIntensityIntegralWeight(IssmDouble depth, IssmDouble water_depth, IssmDouble thickness){
+
+	/*output: */
+	IssmDouble beta;
+
+	/*intermediaries: */
+	IssmDouble M1,M2,M3,x,y,d;
+	const double pi = 3.141592653589793;
+	x    = water_depth/thickness;
+	y    = depth;
+	d    = water_depth;
+
+	M1   = 0.0719768-1.513476*x-61.1001*pow(x,2)+1554.95*pow(x,3)-14583.8*pow(x,4)+71590.7*pow(x,5)-205384*pow(x,6)+356469*pow(x,7)-368270*pow(x,8)+208233*pow(x,9)-49544*pow(x,10);
+	//printf("M1 : %g",M1);
+	M2   = 0.246984+6.47583*x+176.456*pow(x,2)-4058.76*pow(x,3)+37303.8*pow(x,4)-181755*pow(x,5)+520551*pow(x,6)-904370*pow(x,7)+936863*pow(x,8)-531940*pow(x,9)+127291*pow(x,10);
+	//printf("M2 : %g",M2);
+	M3   = 0.529659-22.3235*x+532.074*pow(x,2)-5479.53*pow(x,3)+28592.2*pow(x,4)-81388.6*pow(x,5)+128746*pow(x,6)-106246*pow(x,7)+35780.7*pow(x,8);
+	//printf("M3 : %g",M3);
+
+	beta = 2/sqrt(2*pi*(d-y))*(1+M1*sqrt(1-y/d)+M2*(1-y/d)+M3*pow((1-y/d),1.5));
+
+	return beta;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/elements.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/elements.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Elements/elements.h	(revision 21239)
@@ -0,0 +1,47 @@
+/*!\file: elements.h
+ * \brief prototypes for elements.h
+ */ 
+
+#ifndef _SHARED_ELEMENTS_H_
+#define _SHARED_ELEMENTS_H_
+
+#include "../Numerics/types.h"
+
+IssmDouble Cuffey(IssmDouble temperature);
+IssmDouble BuddJacka(IssmDouble temperature);
+IssmDouble CuffeyTemperate(IssmDouble temperature, IssmDouble waterfraction, IssmDouble stressexp);
+IssmDouble Paterson(IssmDouble temperature);
+IssmDouble Arrhenius(IssmDouble temperature,IssmDouble depth,IssmDouble n);
+IssmDouble LliboutryDuval(IssmDouble enthalpy, IssmDouble pressure, IssmDouble n, IssmDouble betaCC, IssmDouble referencetemperature, IssmDouble heatcapacity, IssmDouble latentheat);
+// IssmDouble LliboutryDuval(IssmDouble temperature, IssmDouble waterfraction, IssmDouble depth,IssmDouble n);
+IssmDouble EstarLambdaS(IssmDouble epso, IssmDouble epsprime_norm);
+void EstarOmega(IssmDouble* omega,IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble vmag,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz, IssmDouble* dvmag);
+void EstarStrainrateQuantities(IssmDouble *pepso, IssmDouble *pepsprime_norm, IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble vmag,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz,IssmDouble* dvmag);
+IssmDouble PddSurfaceMassBalance(IssmDouble* monthlytemperatures,  IssmDouble* monthlyprec,
+				 IssmDouble* pdds, IssmDouble* pds, IssmDouble* melt, IssmDouble* accu, IssmDouble signorm, 
+				 IssmDouble yts, IssmDouble h, IssmDouble s, IssmDouble desfac,IssmDouble s0t,
+				 IssmDouble s0p, IssmDouble rlaps, IssmDouble rlapslgm,
+				 IssmDouble TdiffTime,IssmDouble sealevTime,
+				 IssmDouble rho_water, IssmDouble rho_ice);
+void ComputeDelta18oTemperaturePrecipitation(IssmDouble Delta18oSurfacePresent, IssmDouble Delta18oSurfaceLgm, IssmDouble Delta18oSurfaceTime,
+					     IssmDouble Delta18oPresent, IssmDouble Delta18oLgm, IssmDouble Delta18oTime,
+					     IssmDouble* PrecipitationsPresentday,
+					     IssmDouble* TemperaturesLgm, IssmDouble* TemperaturesPresentday, 
+					     IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout);
+void ComputeMungsmTemperaturePrecipitation(IssmDouble TdiffTime, IssmDouble PfacTime,
+					   IssmDouble* PrecipitationsLgm,IssmDouble* PrecipitationsPresentday,
+					   IssmDouble* TemperaturesLgm, IssmDouble* TemperaturesPresentday, 
+					   IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout);
+void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,
+					       IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
+					       IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout);  
+IssmDouble DrainageFunctionWaterfraction(IssmDouble waterfraction, IssmDouble dt=0.);
+IssmDouble StressIntensityIntegralWeight(IssmDouble depth, IssmDouble water_depth, IssmDouble thickness);
+
+/*Print arrays*/
+void printarray(IssmPDouble* array,int lines,int cols=1);
+void printarray(int* array,int lines,int cols=1);
+void printarray(bool* array,int lines,int cols=1);
+void printsparsity(IssmPDouble* array,int lines,int cols=1);
+void printbinary(int n);
+#endif //ifndef _SHARED_ELEMENTS_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Enum/Enum.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Enum/Enum.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Enum/Enum.h	(revision 21239)
@@ -0,0 +1,10 @@
+
+#ifndef _ISSM_ENUM_
+#define _ISSM_ENUM_
+
+#include "./EnumDefinitions.h"
+const char* EnumToStringx(int enum_in);
+void        EnumToStringx(char** string,int enum_in);
+int         StringToEnumx(const char* string_in,bool notfounderror=true);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Enum/EnumDefinitions.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Enum/EnumDefinitions.h	(revision 21239)
@@ -0,0 +1,1000 @@
+/*
+ * \file EnumDefinitions.h:
+ * \brief: enum functions for our objects
+ */
+
+#ifndef _ENUM_DEFINITIONS_
+#define _ENUM_DEFINITIONS_
+
+enum definitions{
+	FemModelEnum,
+	ParametersSTARTEnum,
+	/*Parameters {{{*/
+	AdolcParamEnum,
+	FSSolverEnum,
+	FemModelCommEnum,
+	WorldCommEnum,
+	IcecapToEarthCommEnum,
+	NumModelsEnum,
+	ModelIdEnum,
+	EarthIdEnum,
+	SolutionTypeEnum,
+	AnalysisTypeEnum,
+	AnalysisCounterEnum,
+	ConfigurationTypeEnum,
+	InputToExtrudeEnum,
+	InputToL2ProjectEnum,
+	InputToDepthaverageInEnum,
+	InputToDepthaverageOutEnum,
+	InputToSmoothEnum,
+	SmoothThicknessMultiplierEnum,
+	LevelsetStabilizationEnum,
+	/*}}}*/
+	/*Model fields {{{*/
+	AutodiffIsautodiffEnum, 
+	AutodiffNumDependentsEnum,
+	AutodiffDependentObjectsEnum,
+	AutodiffNumIndependentsEnum,
+	AutodiffJacobianEnum,
+	AutodiffXpEnum,
+	AutodiffDriverEnum,
+	AutodiffFosForwardIndexEnum,
+	AutodiffFovForwardIndicesEnum,
+	AutodiffFosReverseIndexEnum,
+	AutodiffKeepEnum,
+	AutodiffObufsizeEnum,
+	AutodiffLbufsizeEnum,
+	AutodiffCbufsizeEnum,
+	AutodiffTbufsizeEnum,
+	AutodiffGcTriggerRatioEnum,
+	AutodiffGcTriggerMaxSizeEnum,
+	BalancethicknessStabilizationEnum,
+	BalancethicknessThickeningRateEnum,
+	BasalforcingsEnum,
+	BasalforcingsGeothermalfluxEnum,
+	BasalforcingsGroundediceMeltingRateEnum,
+	BasalforcingsFloatingiceMeltingRateEnum,
+	BasalforcingsDeepwaterMeltingRateEnum,
+	BasalforcingsDeepwaterElevationEnum,
+	BasalforcingsUpperwaterElevationEnum,
+	BasalforcingsMeltrateFactorEnum,
+	BasalforcingsThresholdThicknessEnum,
+	BasalforcingsUpperdepthMeltEnum,
+	BasalforcingsMantleconductivityEnum,
+	BasalforcingsNusseltEnum,
+	BasalforcingsDtbgEnum,
+	BasalforcingsPlumeradiusEnum,
+	BasalforcingsTopplumedepthEnum,
+	BasalforcingsBottomplumedepthEnum,
+	BasalforcingsPlumexEnum,
+	BasalforcingsPlumeyEnum,
+	BasalforcingsCrustthicknessEnum,
+	BasalforcingsUppercrustthicknessEnum,
+	BasalforcingsUppercrustheatEnum,
+	BasalforcingsLowercrustheatEnum,
+	FloatingMeltRateEnum,
+	LinearFloatingMeltRateEnum,
+	MismipFloatingMeltRateEnum,
+	MantlePlumeGeothermalFluxEnum,
+	BedEnum,
+	BaseEnum,
+	ConstantsGEnum,
+	ConstantsReferencetemperatureEnum,
+	ConstantsYtsEnum,
+	DependentObjectEnum,
+	StressbalanceAbstolEnum,
+	StressbalanceConvergenceNumStepsEnum,
+	StressbalanceIsnewtonEnum,
+	StressbalanceMaxiterEnum,
+	StressbalancePenaltyFactorEnum,
+	StressbalanceReltolEnum,
+	StressbalanceNumRequestedOutputsEnum,
+	StressbalanceRequestedOutputsEnum,
+	StressbalanceRestolEnum,
+	StressbalanceRiftPenaltyThresholdEnum,
+	StressbalanceShelfDampeningEnum,
+	StressbalanceFSreconditioningEnum,
+	StressbalanceViscosityOvershootEnum,
+	LoadingforceXEnum,
+	LoadingforceYEnum,
+	LoadingforceZEnum,
+	FlowequationIsSIAEnum,
+	FlowequationIsSSAEnum,
+	FlowequationIsL1L2Enum,
+	FlowequationIsHOEnum,
+	FlowequationIsFSEnum,
+	FlowequationFeFSEnum,
+	FlowequationBorderFSEnum,
+	FrictionAsEnum,
+	FrictionCoefficientEnum,
+	FrictionCoefficientcoulombEnum,
+	FrictionPEnum,
+	FrictionQEnum,
+	FrictionMEnum,
+	FrictionCEnum,
+	FrictionLawEnum,
+	FrictionGammaEnum,
+	FrictionFEnum,
+	FrictionWaterLayerEnum,
+	FrictionEffectivePressureEnum,
+	FrictionCouplingEnum,
+	GeometryHydrostaticRatioEnum,
+	HydrologyModelEnum,
+	HydrologyshreveEnum,
+	HydrologyshreveStabilizationEnum,
+	HydrologydcEnum,
+	SedimentHeadEnum,
+	SedimentHeadOldEnum,
+	SedimentHeadResidualEnum,
+	EffectivePressureEnum,
+	EplHeadEnum,
+	EplHeadOldEnum,
+	EplHeadSlopeXEnum,
+	EplHeadSlopeYEnum,
+	EplZigZagCounterEnum,
+	HydrologydcMaxIterEnum,
+	HydrologydcRelTolEnum,
+	HydrologydcSedimentCompressibilityEnum,
+	HydrologydcSedimentPorosityEnum,
+	HydrologydcSedimentThicknessEnum,
+	HydrologydcSedimentTransmitivityEnum,
+	HydrologydcWaterCompressibilityEnum,
+	HydrologydcMaskEplactiveNodeEnum,
+	HydrologydcMaskEplactiveEltEnum,
+	HydrologydcEplCompressibilityEnum,
+	HydrologydcEplPorosityEnum,
+	HydrologydcEplInitialThicknessEnum,
+	HydrologydcEplColapseThicknessEnum,
+	HydrologydcEplMaxThicknessEnum,
+	HydrologydcEplThicknessEnum,
+	HydrologydcEplThicknessOldEnum,
+	HydrologydcEplThickCompEnum,
+	HydrologydcEplConductivityEnum,
+	HydrologydcIsefficientlayerEnum,
+	HydrologydcSedimentlimitFlagEnum,
+	HydrologydcSedimentlimitEnum,
+	HydrologydcTransferFlagEnum,
+	HydrologydcLeakageFactorEnum,
+	HydrologydcPenaltyFactorEnum,
+	HydrologydcPenaltyLockEnum,
+	HydrologydcEplflipLockEnum,
+	HydrologydcBasalMoulinInputEnum,
+	HydrologyLayerEnum,
+	HydrologySedimentEnum,
+	HydrologyEfficientEnum,
+	HydrologySedimentKmaxEnum,
+	HydrologysommersEnum,
+	HydrologyHeadEnum,
+	HydrologyHeadOldEnum,
+	HydrologyGapHeightEnum,
+	HydrologyBumpSpacingEnum,
+	HydrologyBumpHeightEnum,
+	HydrologyEnglacialInputEnum,
+	HydrologyMoulinInputEnum,
+	HydrologyReynoldsEnum,
+	HydrologyNeumannfluxEnum,
+	InversionControlParametersEnum,
+	InversionControlScalingFactorsEnum,
+	InversionCostFunctionThresholdEnum,
+	InversionCostFunctionsCoefficientsEnum,
+	InversionCostFunctionsEnum,
+	InversionGradientScalingEnum,
+	InversionIscontrolEnum,
+	InversionTypeEnum,
+	InversionIncompleteAdjointEnum,
+	InversionMaxiterPerStepEnum,
+	InversionMaxiterEnum,
+	InversionMaxstepsEnum,
+	InversionFatolEnum,
+	InversionFrtolEnum,
+	InversionGatolEnum,
+	InversionGrtolEnum,
+	InversionGttolEnum,
+	InversionAlgorithmEnum,
+	InversionNstepsEnum,
+	InversionDxminEnum,
+	InversionNumControlParametersEnum,
+	InversionNumCostFunctionsEnum,
+	InversionStepThresholdEnum,
+	InversionThicknessObsEnum,
+	InversionSurfaceObsEnum,
+	InversionVxObsEnum,
+	InversionVyObsEnum,
+	InversionVzObsEnum,
+	MaskIceLevelsetEnum,
+	MaskOceanLevelsetEnum,
+	MaskLandLevelsetEnum,
+	MaterialsBetaEnum,
+	MaterialsHeatcapacityEnum,
+	MaterialsLatentheatEnum,
+	MaterialsMeltingpointEnum,
+	MaterialsMixedLayerCapacityEnum,
+	MaterialsRheologyBEnum,
+	MaterialsRheologyBbarEnum,
+	MaterialsRheologyLawEnum,
+	MaterialsRheologyNEnum,
+	MaterialsRheologyKoEnum,
+	MaterialsRheologyKobarEnum,
+	MaterialsRheologyEcEnum,
+	MaterialsRheologyEcbarEnum,
+	MaterialsRheologyEsEnum,
+	MaterialsRheologyEsbarEnum,
+	DamageDEnum,
+	DamageFEnum,
+	DamageDbarEnum,
+	DamageLawEnum,
+	DamageC1Enum,
+	DamageC2Enum,
+	DamageC3Enum,
+	DamageC4Enum,
+	DamageElementinterpEnum,
+	DamageHealingEnum,
+	DamageStressThresholdEnum,
+	DamageKappaEnum,
+	DamageStabilizationEnum,
+	DamageMaxiterEnum,
+	DamageMaxDamageEnum,
+	DamageEquivStressEnum,
+	DamageEvolutionNumRequestedOutputsEnum,
+	DamageEvolutionRequestedOutputsEnum,
+	DamageEnum,
+	NewDamageEnum,
+	StressIntensityFactorEnum,
+	CalvingLawEnum,
+	CalvingCalvingrateEnum,
+	CalvingMeltingrateEnum,
+	CalvingLevermannEnum,
+	CalvingDevEnum,
+	CalvingMinthicknessEnum,
+	DefaultCalvingEnum,
+	CalvinglevermannCoeffEnum,
+	CalvinglevermannMeltingrateEnum,
+	CalvingdevCoeffEnum,
+	CalvingratexEnum,
+	CalvingrateyEnum,
+	CalvingratexAverageEnum,
+	CalvingrateyAverageEnum,
+	StrainRateparallelEnum,
+	StrainRateperpendicularEnum,
+	StrainRateeffectiveEnum,
+	MaterialsRhoIceEnum,
+	MaterialsRhoSeawaterEnum,
+	MaterialsRhoFreshwaterEnum,
+	MaterialsMuWaterEnum,
+	MaterialsThermalExchangeVelocityEnum,
+	MaterialsThermalconductivityEnum,
+	MaterialsTemperateiceconductivityEnum,
+	MaterialsLithosphereShearModulusEnum,
+	MaterialsLithosphereDensityEnum,
+	MaterialsMantleShearModulusEnum,
+	MaterialsMantleDensityEnum,
+	MaterialsEarthDensityEnum,
+	MeshAverageVertexConnectivityEnum,
+	MeshElementsEnum,
+	MeshNumberofelementsEnum,
+	MeshNumberoflayersEnum,
+	MeshNumberofverticesEnum,
+	MeshVertexonbaseEnum,
+	MeshVertexonsurfaceEnum,
+	MeshVertexonboundaryEnum,
+	MeshElementtypeEnum,
+	DomainTypeEnum,
+	DomainDimensionEnum,
+	Domain2DhorizontalEnum,
+	Domain2DverticalEnum,
+	Domain3DEnum,
+	Domain3DsurfaceEnum,
+	MasstransportHydrostaticAdjustmentEnum,
+	MasstransportIsfreesurfaceEnum,
+	MasstransportMinThicknessEnum,
+	MasstransportPenaltyFactorEnum,
+	MasstransportSpcthicknessEnum,
+	MasstransportStabilizationEnum,
+	MasstransportNumRequestedOutputsEnum,
+	MasstransportRequestedOutputsEnum,
+	QmuIsdakotaEnum,
+	MassFluxSegmentsEnum,
+	MassFluxSegmentsPresentEnum,
+	QmuNumberofpartitionsEnum,
+	QmuNumberofresponsesEnum,
+	QmuPartitionEnum,
+	QmuResponsedescriptorsEnum,
+	QmuVariabledescriptorsEnum,
+	SettingsResultsOnNodesEnum,
+	SettingsIoGatherEnum,
+	SettingsLowmemEnum,
+	SettingsOutputFrequencyEnum,
+	SettingsRecordingFrequencyEnum,
+	SettingsWaitonlockEnum,
+	DebugProfilingEnum,
+	ProfilingCurrentMemEnum,
+	ProfilingCurrentFlopsEnum,
+	ProfilingSolutionTimeEnum,
+	SteadystateMaxiterEnum,
+	SteadystateNumRequestedOutputsEnum,
+	SteadystateReltolEnum,
+	SteadystateRequestedOutputsEnum,
+	SurfaceEnum,
+	ThermalIsenthalpyEnum,
+	ThermalIsdynamicbasalspcEnum,
+	ThermalReltolEnum,
+	ThermalMaxiterEnum,
+	ThermalPenaltyFactorEnum,
+	ThermalPenaltyLockEnum,
+	ThermalPenaltyThresholdEnum,
+	ThermalSpctemperatureEnum,
+	ThermalStabilizationEnum,
+	ThermalNumRequestedOutputsEnum,
+	ThermalRequestedOutputsEnum,
+	GiaMantleViscosityEnum,
+	GiaLithosphereThicknessEnum,
+	ThicknessEnum,
+	TimesteppingStartTimeEnum,
+	TimesteppingFinalTimeEnum,
+	TimesteppingCflCoefficientEnum,
+	TimesteppingTimeAdaptEnum,
+	TimesteppingTimeStepEnum,
+	TimesteppingInterpForcingsEnum,
+	TransientIssmbEnum,
+	TransientIscouplerEnum,
+	TransientIsstressbalanceEnum,
+	TransientIsgroundinglineEnum,
+	TransientIsmasstransportEnum,
+	TransientIsthermalEnum,
+	TransientIsgiaEnum,
+	TransientIsdamageevolutionEnum,
+	TransientIshydrologyEnum,
+	TransientIsmovingfrontEnum,
+	TransientIsslrEnum,
+	TransientNumRequestedOutputsEnum,
+	TransientRequestedOutputsEnum,
+	BalancethicknessApparentMassbalanceEnum,
+	BalancethicknessDiffusionCoefficientEnum,
+	BalancethicknessOmegaEnum,
+	BalancethicknessD0Enum,
+	/*}}}*/
+	/*Smb{{{*/
+	SmbEnum,
+	SmbAnalysisEnum,
+	SmbSolutionEnum,
+	SmbNumRequestedOutputsEnum,
+	SmbRequestedOutputsEnum,
+	SmbIsInitializedEnum,
+	SmbDziniEnum,
+	SmbDiniEnum,
+	SmbReiniEnum,
+	SmbGdniniEnum,
+	SmbGspiniEnum,
+	SmbECiniEnum,
+	SmbWiniEnum,
+	SmbAiniEnum,
+	SmbTiniEnum,
+	SmbSizeiniEnum,
+	/*SMBforcing*/
+	SMBforcingEnum,
+	SmbMassBalanceEnum,
+	/*SMBgemb*/
+	SMBgembEnum,
+	SmbInitDensityScalingEnum,
+	SmbTaEnum,
+	SmbVEnum,
+	SmbDswrfEnum,
+	SmbDlwrfEnum,
+	SmbPEnum, 
+	SmbEAirEnum, 
+	SmbPAirEnum,
+	SmbTmeanEnum,
+	SmbCEnum,
+	SmbTzEnum,
+	SmbVzEnum, 
+	SmbDtEnum,
+	SmbDzEnum,
+	SmbAIdxEnum,
+	SmbSwIdxEnum,
+	SmbDenIdxEnum,
+	SmbZTopEnum, 
+	SmbDzTopEnum, 
+	SmbDzMinEnum, 
+	SmbZYEnum, 
+	SmbZMaxEnum, 
+	SmbZMinEnum, 
+	SmbOutputFreqEnum, 
+	SmbASnowEnum, 
+	SmbAIceEnum, 
+	SmbCldFracEnum, 
+	SmbT0wetEnum, 
+	SmbT0dryEnum, 
+	SmbKEnum, 
+	SmbDEnum,
+	SmbReEnum,
+	SmbGdnEnum,
+	SmbGspEnum,
+	SmbECEnum,
+	SmbWEnum,
+	SmbAEnum,
+	SmbTEnum,
+	SmbIsgraingrowthEnum,
+	SmbIsalbedoEnum,
+	SmbIsshortwaveEnum,
+	SmbIsthermalEnum,
+	SmbIsaccumulationEnum,
+	SmbIsmeltEnum,
+	SmbIsdensificationEnum,
+	SmbIsturbulentfluxEnum,
+	SmbDz_addEnum,
+	SmbM_addEnum,
+	/*SMBpdd*/
+	SMBpddEnum,	
+	SmbDelta18oEnum,
+	SmbDelta18oSurfaceEnum,
+	SmbIsdelta18oEnum,
+	SmbIsmungsmEnum,
+	SmbIsd18opdEnum,
+	SmbPrecipitationsPresentdayEnum,
+	SmbPrecipitationsLgmEnum,
+	SmbTemperaturesPresentdayEnum,
+	SmbTemperaturesLgmEnum,
+	SmbPrecipitationEnum,
+	SmbDesfacEnum,
+	SmbS0pEnum,
+	SmbS0tEnum,
+	SmbRlapsEnum,
+	SmbRlapslgmEnum,
+	SmbPfacEnum,
+	SmbTdiffEnum,
+	SmbSealevEnum,
+	SMBd18opddEnum,
+	SmbDpermilEnum,
+	SMBgradientsEnum,
+	SmbMonthlytemperaturesEnum,
+	SmbHrefEnum,
+	SmbSmbrefEnum,
+	SmbBPosEnum,
+	SmbBNegEnum,
+	SMBhenningEnum,
+	SMBcomponentsEnum,
+	SmbAccumulationEnum,
+	SmbEvaporationEnum,
+	SmbRunoffEnum,
+	SMBmeltcomponentsEnum,
+	SmbMeltEnum,
+	SmbRefreezeEnum,
+	SMBgcmEnum,
+	/*}}}*/
+	/*Inputs {{{*/
+	AdjointpEnum,
+	AdjointxEnum,
+	AdjointyEnum,
+	AdjointzEnum,
+	BalancethicknessMisfitEnum,
+	BedSlopeXEnum,
+	BedSlopeYEnum,
+	BoundaryEnum,
+	ConvergedEnum,
+	InternalEnum,
+	MassFluxEnum,
+	MeltingOffsetEnum,
+	MisfitEnum,
+	PressureEnum,
+	PressurePicardEnum,
+	AndroidFrictionCoefficientEnum,
+	ResetPenaltiesEnum,
+	SurfaceAbsVelMisfitEnum,
+	SurfaceAreaEnum,
+	SurfaceAverageVelMisfitEnum,
+	SurfaceLogVelMisfitEnum,
+	SurfaceLogVxVyMisfitEnum,
+	SurfaceRelVelMisfitEnum,
+	SurfaceSlopeXEnum,
+	SurfaceSlopeYEnum,
+	TemperatureEnum,
+	TemperaturePicardEnum,
+	TemperaturePDDEnum,
+	ThicknessAbsMisfitEnum,
+	SurfaceAbsMisfitEnum,
+	VelEnum,
+	VelocityEnum,
+	VxAverageEnum,
+	VxEnum,
+	VxPicardEnum,
+	VyAverageEnum,
+	VyEnum,
+	VyPicardEnum,
+	VzEnum,
+	VzSSAEnum,
+	VzHOEnum,
+	VzPicardEnum,
+	VzFSEnum,
+	VxMeshEnum,
+	VyMeshEnum,
+	VzMeshEnum,
+	EnthalpyEnum,
+	EnthalpyPicardEnum,
+	ThicknessAbsGradientEnum,
+	ThicknessAlongGradientEnum,
+	ThicknessAcrossGradientEnum,
+	ThicknessPositiveEnum,
+	IntMatParamEnum,
+	RheologyBbarAbsGradientEnum,
+	RheologyBAbsGradientEnum,
+	DragCoefficientAbsGradientEnum,
+	TransientInputEnum,
+	WaterfractionEnum,
+	WatercolumnEnum,
+	ViscousHeatingEnum,
+	HydrologyWaterVxEnum,
+	HydrologyWaterVyEnum,
+	DrivingStressXEnum,
+	DrivingStressYEnum,
+	SigmaNNEnum,
+	StressTensorEnum,
+	StressTensorxxEnum,
+	StressTensorxyEnum,
+	StressTensorxzEnum,
+	StressTensoryyEnum,
+	StressTensoryzEnum,
+	StressTensorzzEnum,
+	StressMaxPrincipalEnum,
+	DeviatoricStressEnum,
+	DeviatoricStressxxEnum,
+	DeviatoricStressxyEnum,
+	DeviatoricStressxzEnum,
+	DeviatoricStressyyEnum,
+	DeviatoricStressyzEnum,
+	DeviatoricStresszzEnum,
+	DeviatoricStresseffectiveEnum,
+	LambdaSEnum,
+	StrainRateEnum,
+	StrainRatexxEnum,
+	StrainRatexyEnum,
+	StrainRatexzEnum,
+	StrainRateyyEnum,
+	StrainRateyzEnum,
+	StrainRatezzEnum,
+	DivergenceEnum,
+	MaxDivergenceEnum,
+	GiaCrossSectionShapeEnum,
+	GiadWdtEnum,
+	GiaWEnum, 
+	/*}}}*/
+	/*Results{{{*/
+	SaveResultsEnum,
+	BoolExternalResultEnum,
+	DoubleExternalResultEnum,
+	DoubleMatExternalResultEnum,
+	IntExternalResultEnum,
+	JEnum,
+	StringExternalResultEnum,
+	StepEnum,
+	TimeEnum,
+	WaterColumnOldEnum,
+	/*}}}*/
+	/*Output Definitions{{{*/
+	SurfaceObservationEnum,
+	WeightsSurfaceObservationEnum,
+	OutputdefinitionEnum,
+	Outputdefinition1Enum,
+	Outputdefinition2Enum,
+	Outputdefinition3Enum,
+	Outputdefinition4Enum,
+	Outputdefinition5Enum,
+	Outputdefinition6Enum,
+	Outputdefinition7Enum,
+	Outputdefinition8Enum,
+	Outputdefinition9Enum,
+	Outputdefinition10Enum,
+	Outputdefinition11Enum,
+	Outputdefinition12Enum,
+	Outputdefinition13Enum,
+	Outputdefinition14Enum,
+	Outputdefinition15Enum,
+	Outputdefinition16Enum,
+	Outputdefinition17Enum,
+	Outputdefinition18Enum,
+	Outputdefinition19Enum,
+	Outputdefinition20Enum,
+	Outputdefinition21Enum,
+	Outputdefinition22Enum,
+	Outputdefinition23Enum,
+	Outputdefinition24Enum,
+	Outputdefinition25Enum,
+	Outputdefinition26Enum,
+	Outputdefinition27Enum,
+	Outputdefinition28Enum,
+	Outputdefinition29Enum,
+	Outputdefinition30Enum,
+	Outputdefinition31Enum,
+	Outputdefinition32Enum,
+	Outputdefinition33Enum,
+	Outputdefinition34Enum,
+	Outputdefinition35Enum,
+	Outputdefinition36Enum,
+	Outputdefinition37Enum,
+	Outputdefinition38Enum,
+	Outputdefinition39Enum,
+	Outputdefinition40Enum,
+	Outputdefinition41Enum,
+	Outputdefinition42Enum,
+	Outputdefinition43Enum,
+	Outputdefinition44Enum,
+	Outputdefinition45Enum,
+	Outputdefinition46Enum,
+	Outputdefinition47Enum,
+	Outputdefinition48Enum,
+	Outputdefinition49Enum,
+	Outputdefinition50Enum,
+	Outputdefinition51Enum,
+	Outputdefinition52Enum,
+	Outputdefinition53Enum,
+	Outputdefinition54Enum,
+	Outputdefinition55Enum,
+	Outputdefinition56Enum,
+	Outputdefinition57Enum,
+	Outputdefinition58Enum,
+	Outputdefinition59Enum,
+	Outputdefinition60Enum,
+	Outputdefinition61Enum,
+	Outputdefinition62Enum,
+	Outputdefinition63Enum,
+	Outputdefinition64Enum,
+	Outputdefinition65Enum,
+	Outputdefinition66Enum,
+	Outputdefinition67Enum,
+	Outputdefinition68Enum,
+	Outputdefinition69Enum,
+	Outputdefinition70Enum,
+	Outputdefinition71Enum,
+	Outputdefinition72Enum,
+	Outputdefinition73Enum,
+	Outputdefinition74Enum,
+	Outputdefinition75Enum,
+	Outputdefinition76Enum,
+	Outputdefinition77Enum,
+	Outputdefinition78Enum,
+	Outputdefinition79Enum,
+	Outputdefinition80Enum,
+	Outputdefinition81Enum,
+	Outputdefinition82Enum,
+	Outputdefinition83Enum,
+	Outputdefinition84Enum,
+	Outputdefinition85Enum,
+	Outputdefinition86Enum,
+	Outputdefinition87Enum,
+	Outputdefinition88Enum,
+	Outputdefinition89Enum,
+	Outputdefinition90Enum,
+	Outputdefinition91Enum,
+	Outputdefinition92Enum,
+	Outputdefinition93Enum,
+	Outputdefinition94Enum,
+	Outputdefinition95Enum,
+	Outputdefinition96Enum,
+	Outputdefinition97Enum,
+	Outputdefinition98Enum,
+	Outputdefinition99Enum,
+	Outputdefinition100Enum,   
+	OutputdefinitionListEnum,
+	MassfluxatgateEnum,
+	NodalvalueEnum,
+	VxObsEnum,
+	VyObsEnum,
+	/*}}}*/
+	/*Relaxation{{{*/
+	AbsoluteEnum,
+	IncrementalEnum,
+	AugmentedLagrangianREnum,
+	AugmentedLagrangianRhopEnum,
+	AugmentedLagrangianRlambdaEnum,
+	AugmentedLagrangianRholambdaEnum,
+	AugmentedLagrangianThetaEnum,
+	/*}}}*/
+	/*Grounding Line{{{*/
+	NoneEnum,
+	AggressiveMigrationEnum,
+	SoftMigrationEnum,
+	SubelementMigrationEnum,
+	SubelementMigration2Enum,
+	ContactEnum,
+	GroundingOnlyEnum,
+	MaskGroundediceLevelsetEnum,
+	/*}}}*/
+	/*Parameters{{{*/
+	AdjointEnum,
+	ColinearEnum,
+	ControlSteadyEnum,
+	FsetEnum,
+	Gradient1Enum,
+	Gradient2Enum,
+	Gradient3Enum,
+	GradientEnum,
+	GroundinglineMigrationEnum,
+	GsetEnum,
+	IndexEnum,
+	IndexedEnum,
+	IntersectEnum,
+	NodalEnum,
+	OldGradientEnum,
+	OutputBufferPointerEnum,
+	OutputBufferSizePointerEnum,
+	OutputFilePointerEnum,
+	ToolkitsFileNameEnum,
+	RootPathEnum,
+	OutputFileNameEnum,
+	InputFileNameEnum,
+	LockFileNameEnum,
+	RestartFileNameEnum,
+	ToolkitsOptionsAnalysesEnum,
+	ToolkitsOptionsStringsEnum,
+	QmuErrNameEnum,
+	QmuInNameEnum,
+	QmuOutNameEnum,
+	RegularEnum,
+	ScaledEnum,
+	SeparateEnum,
+	SsetEnum,
+	/*}}}*/
+	/*Toolkits{{{*/
+	DenseEnum,
+	MpiDenseEnum,
+	MpiSparseEnum,
+	SeqEnum,
+	MpiEnum,
+	MumpsEnum,
+	GslEnum,
+	/*}}}*/
+	/*Rheology law (move to Material) {{{*/
+	CuffeyEnum,
+	BuddJackaEnum,
+	CuffeyTemperateEnum,
+	PatersonEnum,
+	ArrheniusEnum,
+	LliboutryDuvalEnum,
+	/*}}}*/
+	/*Levelset related enums (will be moved to appropriate place when finished){{{*/
+	ExtrapolationVariableEnum,
+	IceMaskNodeActivationEnum,
+	LevelsetfunctionSlopeXEnum,
+	LevelsetfunctionSlopeYEnum,
+	LevelsetfunctionPicardEnum,
+	LevelsetReinitFrequencyEnum,
+	/*}}}*/
+	/*Sea Level Rise{{{*/
+	SealevelEnum,
+	SealevelUmotionEnum,
+	SealevelNmotionEnum,
+	SealevelEmotionEnum,
+	SealevelAbsoluteEnum,
+	SealevelEustaticEnum,
+	SealevelriseDeltathicknessEnum,
+	SealevelriseMaxiterEnum,
+	SealevelriseReltolEnum,
+	SealevelriseAbstolEnum,
+	SealevelriseRigidEnum,
+	SealevelriseElasticEnum,
+	SealevelriseGElasticEnum,
+	SealevelriseUElasticEnum,
+	SealevelriseHElasticEnum,
+	SealevelriseTransitionsEnum,
+	SealevelriseRequestedOutputsEnum,
+	SealevelriseNumRequestedOutputsEnum,
+	/*}}}*/
+	ParametersENDEnum,
+	/*Coordinate Systems{{{*/
+	XYEnum,
+	XYZEnum,
+	/*}}}*/
+	/*Objects {{{*/
+	GenericParamEnum,
+	BoolInputEnum,
+	BoolParamEnum,
+	ContourEnum,
+	ControlInputEnum,
+	DatasetInputEnum,
+	DoubleInputEnum,
+	DoubleArrayInputEnum,
+	DataSetParamEnum,
+	DoubleMatArrayParamEnum,
+	DoubleMatParamEnum,
+	DoubleParamEnum,
+	DoubleVecParamEnum,
+	ElementEnum,
+	ElementHookEnum,
+	HookEnum,
+	ExternalResultEnum,
+	FileParamEnum,
+	InputEnum,
+	IntInputEnum,
+	IntParamEnum,
+	IntVecParamEnum,
+	TransientParamEnum,
+	MaticeEnum,
+	MatdamageiceEnum,
+	MatestarEnum,
+	MatparEnum,
+	NodeEnum,
+	NumericalfluxEnum,
+	NeumannfluxEnum,
+	ParamEnum,
+	MoulinEnum,
+	PengridEnum,
+	PenpairEnum,
+	ProfilerEnum,
+	MatrixParamEnum,
+	MassconEnum,
+	MassconaxpbyEnum,
+	NodeSIdEnum,
+	VectorParamEnum,
+	RiftfrontEnum,
+	SegmentEnum,
+	SegmentRiftfrontEnum,
+	SpcDynamicEnum,
+	SpcStaticEnum,
+	SpcTransientEnum,
+	StringArrayParamEnum,
+	StringParamEnum,
+	SegEnum,
+	SegInputEnum,
+	TriaEnum,
+	TriaInputEnum,
+	TetraEnum,
+	TetraInputEnum,
+	PentaEnum,
+	PentaInputEnum,
+	VertexEnum,
+	VertexPIdEnum,
+	VertexSIdEnum,
+	/*}}}*/
+	/*Options{{{*/
+	OptionEnum,
+	GenericOptionEnum,
+	OptionCellEnum,
+	OptionStructEnum,
+	/*}}}*/
+	/*Solutions and Analyses{{{ */
+	AdjointBalancethicknessAnalysisEnum,
+	AdjointBalancethickness2AnalysisEnum,
+	AdjointHorizAnalysisEnum,
+	DefaultAnalysisEnum,
+	BalancethicknessAnalysisEnum,
+	BalancethicknessSolutionEnum,
+	Balancethickness2AnalysisEnum,
+	Balancethickness2SolutionEnum,
+	BalancethicknessSoftAnalysisEnum,
+	BalancethicknessSoftSolutionEnum,
+	BalancevelocityAnalysisEnum,
+	BalancevelocitySolutionEnum,
+	L2ProjectionEPLAnalysisEnum,
+	L2ProjectionBaseAnalysisEnum,
+	BedSlopeSolutionEnum,
+	DamageEvolutionSolutionEnum,
+	DamageEvolutionAnalysisEnum,
+	StressbalanceAnalysisEnum,
+	StressbalanceSIAAnalysisEnum,
+	StressbalanceSolutionEnum,
+	StressbalanceVerticalAnalysisEnum,
+	EnthalpyAnalysisEnum,
+	HydrologyShreveAnalysisEnum,
+	HydrologyDCInefficientAnalysisEnum,
+	HydrologyDCEfficientAnalysisEnum,
+	HydrologySommersAnalysisEnum,
+	HydrologySolutionEnum,
+	MeltingAnalysisEnum,
+	MasstransportAnalysisEnum,
+	MasstransportSolutionEnum,
+	FreeSurfaceBaseAnalysisEnum,
+	FreeSurfaceTopAnalysisEnum,
+	ExtrudeFromBaseAnalysisEnum,
+	ExtrudeFromTopAnalysisEnum,
+	DepthAverageAnalysisEnum,
+	SealevelriseSolutionEnum,
+	SealevelriseAnalysisEnum,
+	SteadystateSolutionEnum,
+	SurfaceSlopeSolutionEnum,
+	SmoothAnalysisEnum,
+	ThermalAnalysisEnum,
+	ThermalSolutionEnum,
+	TransientSolutionEnum,
+	UzawaPressureAnalysisEnum,
+	GiaSolutionEnum,
+	GiaAnalysisEnum,
+	MeshdeformationAnalysisEnum,
+	LevelsetAnalysisEnum,
+	ExtrapolationAnalysisEnum,
+	/*}}}*/
+	/*Approximations {{{*/
+	ApproximationEnum,
+	NoneApproximationEnum,
+	SIAApproximationEnum,
+	SSAApproximationEnum,
+	SSAHOApproximationEnum,
+	SSAFSApproximationEnum,
+	L1L2ApproximationEnum,
+	HOApproximationEnum,
+	HOFSApproximationEnum,
+	FSApproximationEnum,
+	FSvelocityEnum,
+	FSpressureEnum,
+	/*}}}*/
+	/*Gauss{{{*/
+	GaussSegEnum,
+	GaussTriaEnum,
+	GaussTetraEnum,
+	GaussPentaEnum,
+	/*}}}*/
+	/*Interpolation {{{*/
+	TriangleInterpEnum,
+	BilinearInterpEnum,
+	NearestInterpEnum,
+	/*}}}*/
+	/*Responses{{{*/
+	MinVelEnum,
+	MaxVelEnum,
+	MinVxEnum,
+	MaxVxEnum,
+	MaxAbsVxEnum,
+	MinVyEnum,
+	MaxVyEnum,
+	MaxAbsVyEnum,
+	MinVzEnum,
+	MaxVzEnum,
+	MaxAbsVzEnum,
+	FloatingAreaEnum,
+	GroundedAreaEnum,
+	IceMassEnum,
+	IceVolumeEnum,
+	IceVolumeAboveFloatationEnum,
+	TotalFloatingBmbEnum,
+	TotalGroundedBmbEnum,
+	TotalSmbEnum,
+	/*}}}*/
+	/*Element Interpolations{{{*/
+	P0Enum,
+	P0ArrayEnum,
+	P1Enum,
+	P1DGEnum,
+	P1bubbleEnum,
+	P1bubblecondensedEnum,
+	P2Enum,
+	P2bubbleEnum,
+	P2bubblecondensedEnum,
+	P2xP1Enum,
+	P1xP2Enum,
+	P1xP3Enum,
+	P2xP4Enum,
+	P1P1Enum,
+	P1P1GLSEnum,
+	MINIEnum,
+	MINIcondensedEnum,
+	TaylorHoodEnum,
+	LATaylorHoodEnum,
+	XTaylorHoodEnum,
+	OneLayerP4zEnum,
+	CrouzeixRaviartEnum,
+	LACrouzeixRaviartEnum,
+	/*}}}*/
+	/*Rift state {{{*/
+	ClosedEnum,
+	FreeEnum,
+	OpenEnum,
+	/*}}}*/
+	/*Fill {{{*/
+	AirEnum,
+	IceEnum,
+	MelangeEnum,
+	WaterEnum,
+	/*}}}*/
+	/*Datasets {{{*/
+	DataSetEnum,
+	ConstraintsEnum,
+	LoadsEnum,
+	MaterialsEnum,
+	NodesEnum,
+	ContoursEnum,
+	ParametersEnum,
+	VerticesEnum,
+	ResultsEnum,
+	/*}}}*/
+	MaximumNumberOfDefinitionsEnum
+};
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Enum/EnumToStringx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Enum/EnumToStringx.cpp	(revision 21239)
@@ -0,0 +1,968 @@
+/*
+* \file EnumToStringx.cpp:
+* \brief: output string associated with enum
+*
+*   WARNING: DO NOT MODIFY THIS FILE
+*            this file has been automatically generated by Synchronize.sh
+*            Please read README for more information
+*/
+
+#include <cstring>
+#include "./Enum.h"
+#include "../Exceptions/exceptions.h"
+#include "../MemOps/MemOps.h"
+
+const char* EnumToStringx(int en){
+
+	switch(en){
+
+		case FemModelEnum : return "FemModel";
+		case ParametersSTARTEnum : return "ParametersSTART";
+		case AdolcParamEnum : return "AdolcParam";
+		case FSSolverEnum : return "FSSolver";
+		case FemModelCommEnum : return "FemModelComm";
+		case WorldCommEnum : return "WorldComm";
+		case IcecapToEarthCommEnum : return "IcecapToEarthComm";
+		case NumModelsEnum : return "NumModels";
+		case ModelIdEnum : return "ModelId";
+		case EarthIdEnum : return "EarthId";
+		case SolutionTypeEnum : return "SolutionType";
+		case AnalysisTypeEnum : return "AnalysisType";
+		case AnalysisCounterEnum : return "AnalysisCounter";
+		case ConfigurationTypeEnum : return "ConfigurationType";
+		case InputToExtrudeEnum : return "InputToExtrude";
+		case InputToL2ProjectEnum : return "InputToL2Project";
+		case InputToDepthaverageInEnum : return "InputToDepthaverageIn";
+		case InputToDepthaverageOutEnum : return "InputToDepthaverageOut";
+		case InputToSmoothEnum : return "InputToSmooth";
+		case SmoothThicknessMultiplierEnum : return "SmoothThicknessMultiplier";
+		case LevelsetStabilizationEnum : return "LevelsetStabilization";
+		case AutodiffIsautodiffEnum : return "AutodiffIsautodiff";
+		case AutodiffNumDependentsEnum : return "AutodiffNumDependents";
+		case AutodiffDependentObjectsEnum : return "AutodiffDependentObjects";
+		case AutodiffNumIndependentsEnum : return "AutodiffNumIndependents";
+		case AutodiffJacobianEnum : return "AutodiffJacobian";
+		case AutodiffXpEnum : return "AutodiffXp";
+		case AutodiffDriverEnum : return "AutodiffDriver";
+		case AutodiffFosForwardIndexEnum : return "AutodiffFosForwardIndex";
+		case AutodiffFovForwardIndicesEnum : return "AutodiffFovForwardIndices";
+		case AutodiffFosReverseIndexEnum : return "AutodiffFosReverseIndex";
+		case AutodiffKeepEnum : return "AutodiffKeep";
+		case AutodiffObufsizeEnum : return "AutodiffObufsize";
+		case AutodiffLbufsizeEnum : return "AutodiffLbufsize";
+		case AutodiffCbufsizeEnum : return "AutodiffCbufsize";
+		case AutodiffTbufsizeEnum : return "AutodiffTbufsize";
+		case AutodiffGcTriggerRatioEnum : return "AutodiffGcTriggerRatio";
+		case AutodiffGcTriggerMaxSizeEnum : return "AutodiffGcTriggerMaxSize";
+		case BalancethicknessStabilizationEnum : return "BalancethicknessStabilization";
+		case BalancethicknessThickeningRateEnum : return "BalancethicknessThickeningRate";
+		case BasalforcingsEnum : return "Basalforcings";
+		case BasalforcingsGeothermalfluxEnum : return "BasalforcingsGeothermalflux";
+		case BasalforcingsGroundediceMeltingRateEnum : return "BasalforcingsGroundediceMeltingRate";
+		case BasalforcingsFloatingiceMeltingRateEnum : return "BasalforcingsFloatingiceMeltingRate";
+		case BasalforcingsDeepwaterMeltingRateEnum : return "BasalforcingsDeepwaterMeltingRate";
+		case BasalforcingsDeepwaterElevationEnum : return "BasalforcingsDeepwaterElevation";
+		case BasalforcingsUpperwaterElevationEnum : return "BasalforcingsUpperwaterElevation";
+		case BasalforcingsMeltrateFactorEnum : return "BasalforcingsMeltrateFactor";
+		case BasalforcingsThresholdThicknessEnum : return "BasalforcingsThresholdThickness";
+		case BasalforcingsUpperdepthMeltEnum : return "BasalforcingsUpperdepthMelt";
+		case BasalforcingsMantleconductivityEnum : return "BasalforcingsMantleconductivity";
+		case BasalforcingsNusseltEnum : return "BasalforcingsNusselt";
+		case BasalforcingsDtbgEnum : return "BasalforcingsDtbg";
+		case BasalforcingsPlumeradiusEnum : return "BasalforcingsPlumeradius";
+		case BasalforcingsTopplumedepthEnum : return "BasalforcingsTopplumedepth";
+		case BasalforcingsBottomplumedepthEnum : return "BasalforcingsBottomplumedepth";
+		case BasalforcingsPlumexEnum : return "BasalforcingsPlumex";
+		case BasalforcingsPlumeyEnum : return "BasalforcingsPlumey";
+		case BasalforcingsCrustthicknessEnum : return "BasalforcingsCrustthickness";
+		case BasalforcingsUppercrustthicknessEnum : return "BasalforcingsUppercrustthickness";
+		case BasalforcingsUppercrustheatEnum : return "BasalforcingsUppercrustheat";
+		case BasalforcingsLowercrustheatEnum : return "BasalforcingsLowercrustheat";
+		case FloatingMeltRateEnum : return "FloatingMeltRate";
+		case LinearFloatingMeltRateEnum : return "LinearFloatingMeltRate";
+		case MismipFloatingMeltRateEnum : return "MismipFloatingMeltRate";
+		case MantlePlumeGeothermalFluxEnum : return "MantlePlumeGeothermalFlux";
+		case BedEnum : return "Bed";
+		case BaseEnum : return "Base";
+		case ConstantsGEnum : return "ConstantsG";
+		case ConstantsReferencetemperatureEnum : return "ConstantsReferencetemperature";
+		case ConstantsYtsEnum : return "ConstantsYts";
+		case DependentObjectEnum : return "DependentObject";
+		case StressbalanceAbstolEnum : return "StressbalanceAbstol";
+		case StressbalanceConvergenceNumStepsEnum : return "StressbalanceConvergenceNumSteps";
+		case StressbalanceIsnewtonEnum : return "StressbalanceIsnewton";
+		case StressbalanceMaxiterEnum : return "StressbalanceMaxiter";
+		case StressbalancePenaltyFactorEnum : return "StressbalancePenaltyFactor";
+		case StressbalanceReltolEnum : return "StressbalanceReltol";
+		case StressbalanceNumRequestedOutputsEnum : return "StressbalanceNumRequestedOutputs";
+		case StressbalanceRequestedOutputsEnum : return "StressbalanceRequestedOutputs";
+		case StressbalanceRestolEnum : return "StressbalanceRestol";
+		case StressbalanceRiftPenaltyThresholdEnum : return "StressbalanceRiftPenaltyThreshold";
+		case StressbalanceShelfDampeningEnum : return "StressbalanceShelfDampening";
+		case StressbalanceFSreconditioningEnum : return "StressbalanceFSreconditioning";
+		case StressbalanceViscosityOvershootEnum : return "StressbalanceViscosityOvershoot";
+		case LoadingforceXEnum : return "LoadingforceX";
+		case LoadingforceYEnum : return "LoadingforceY";
+		case LoadingforceZEnum : return "LoadingforceZ";
+		case FlowequationIsSIAEnum : return "FlowequationIsSIA";
+		case FlowequationIsSSAEnum : return "FlowequationIsSSA";
+		case FlowequationIsL1L2Enum : return "FlowequationIsL1L2";
+		case FlowequationIsHOEnum : return "FlowequationIsHO";
+		case FlowequationIsFSEnum : return "FlowequationIsFS";
+		case FlowequationFeFSEnum : return "FlowequationFeFS";
+		case FlowequationBorderFSEnum : return "FlowequationBorderFS";
+		case FrictionAsEnum : return "FrictionAs";
+		case FrictionCoefficientEnum : return "FrictionCoefficient";
+		case FrictionCoefficientcoulombEnum : return "FrictionCoefficientcoulomb";
+		case FrictionPEnum : return "FrictionP";
+		case FrictionQEnum : return "FrictionQ";
+		case FrictionMEnum : return "FrictionM";
+		case FrictionCEnum : return "FrictionC";
+		case FrictionLawEnum : return "FrictionLaw";
+		case FrictionGammaEnum : return "FrictionGamma";
+		case FrictionFEnum : return "FrictionF";
+		case FrictionWaterLayerEnum : return "FrictionWaterLayer";
+		case FrictionEffectivePressureEnum : return "FrictionEffectivePressure";
+		case FrictionCouplingEnum : return "FrictionCoupling";
+		case GeometryHydrostaticRatioEnum : return "GeometryHydrostaticRatio";
+		case HydrologyModelEnum : return "HydrologyModel";
+		case HydrologyshreveEnum : return "Hydrologyshreve";
+		case HydrologyshreveStabilizationEnum : return "HydrologyshreveStabilization";
+		case HydrologydcEnum : return "Hydrologydc";
+		case SedimentHeadEnum : return "SedimentHead";
+		case SedimentHeadOldEnum : return "SedimentHeadOld";
+		case SedimentHeadResidualEnum : return "SedimentHeadResidual";
+		case EffectivePressureEnum : return "EffectivePressure";
+		case EplHeadEnum : return "EplHead";
+		case EplHeadOldEnum : return "EplHeadOld";
+		case EplHeadSlopeXEnum : return "EplHeadSlopeX";
+		case EplHeadSlopeYEnum : return "EplHeadSlopeY";
+		case EplZigZagCounterEnum : return "EplZigZagCounter";
+		case HydrologydcMaxIterEnum : return "HydrologydcMaxIter";
+		case HydrologydcRelTolEnum : return "HydrologydcRelTol";
+		case HydrologydcSedimentCompressibilityEnum : return "HydrologydcSedimentCompressibility";
+		case HydrologydcSedimentPorosityEnum : return "HydrologydcSedimentPorosity";
+		case HydrologydcSedimentThicknessEnum : return "HydrologydcSedimentThickness";
+		case HydrologydcSedimentTransmitivityEnum : return "HydrologydcSedimentTransmitivity";
+		case HydrologydcWaterCompressibilityEnum : return "HydrologydcWaterCompressibility";
+		case HydrologydcMaskEplactiveNodeEnum : return "HydrologydcMaskEplactiveNode";
+		case HydrologydcMaskEplactiveEltEnum : return "HydrologydcMaskEplactiveElt";
+		case HydrologydcEplCompressibilityEnum : return "HydrologydcEplCompressibility";
+		case HydrologydcEplPorosityEnum : return "HydrologydcEplPorosity";
+		case HydrologydcEplInitialThicknessEnum : return "HydrologydcEplInitialThickness";
+		case HydrologydcEplColapseThicknessEnum : return "HydrologydcEplColapseThickness";
+		case HydrologydcEplMaxThicknessEnum : return "HydrologydcEplMaxThickness";
+		case HydrologydcEplThicknessEnum : return "HydrologydcEplThickness";
+		case HydrologydcEplThicknessOldEnum : return "HydrologydcEplThicknessOld";
+		case HydrologydcEplThickCompEnum : return "HydrologydcEplThickComp";
+		case HydrologydcEplConductivityEnum : return "HydrologydcEplConductivity";
+		case HydrologydcIsefficientlayerEnum : return "HydrologydcIsefficientlayer";
+		case HydrologydcSedimentlimitFlagEnum : return "HydrologydcSedimentlimitFlag";
+		case HydrologydcSedimentlimitEnum : return "HydrologydcSedimentlimit";
+		case HydrologydcTransferFlagEnum : return "HydrologydcTransferFlag";
+		case HydrologydcLeakageFactorEnum : return "HydrologydcLeakageFactor";
+		case HydrologydcPenaltyFactorEnum : return "HydrologydcPenaltyFactor";
+		case HydrologydcPenaltyLockEnum : return "HydrologydcPenaltyLock";
+		case HydrologydcEplflipLockEnum : return "HydrologydcEplflipLock";
+		case HydrologydcBasalMoulinInputEnum : return "HydrologydcBasalMoulinInput";
+		case HydrologyLayerEnum : return "HydrologyLayer";
+		case HydrologySedimentEnum : return "HydrologySediment";
+		case HydrologyEfficientEnum : return "HydrologyEfficient";
+		case HydrologySedimentKmaxEnum : return "HydrologySedimentKmax";
+		case HydrologysommersEnum : return "Hydrologysommers";
+		case HydrologyHeadEnum : return "HydrologyHead";
+		case HydrologyHeadOldEnum : return "HydrologyHeadOld";
+		case HydrologyGapHeightEnum : return "HydrologyGapHeight";
+		case HydrologyBumpSpacingEnum : return "HydrologyBumpSpacing";
+		case HydrologyBumpHeightEnum : return "HydrologyBumpHeight";
+		case HydrologyEnglacialInputEnum : return "HydrologyEnglacialInput";
+		case HydrologyMoulinInputEnum : return "HydrologyMoulinInput";
+		case HydrologyReynoldsEnum : return "HydrologyReynolds";
+		case HydrologyNeumannfluxEnum : return "HydrologyNeumannflux";
+		case InversionControlParametersEnum : return "InversionControlParameters";
+		case InversionControlScalingFactorsEnum : return "InversionControlScalingFactors";
+		case InversionCostFunctionThresholdEnum : return "InversionCostFunctionThreshold";
+		case InversionCostFunctionsCoefficientsEnum : return "InversionCostFunctionsCoefficients";
+		case InversionCostFunctionsEnum : return "InversionCostFunctions";
+		case InversionGradientScalingEnum : return "InversionGradientScaling";
+		case InversionIscontrolEnum : return "InversionIscontrol";
+		case InversionTypeEnum : return "InversionType";
+		case InversionIncompleteAdjointEnum : return "InversionIncompleteAdjoint";
+		case InversionMaxiterPerStepEnum : return "InversionMaxiterPerStep";
+		case InversionMaxiterEnum : return "InversionMaxiter";
+		case InversionMaxstepsEnum : return "InversionMaxsteps";
+		case InversionFatolEnum : return "InversionFatol";
+		case InversionFrtolEnum : return "InversionFrtol";
+		case InversionGatolEnum : return "InversionGatol";
+		case InversionGrtolEnum : return "InversionGrtol";
+		case InversionGttolEnum : return "InversionGttol";
+		case InversionAlgorithmEnum : return "InversionAlgorithm";
+		case InversionNstepsEnum : return "InversionNsteps";
+		case InversionDxminEnum : return "InversionDxmin";
+		case InversionNumControlParametersEnum : return "InversionNumControlParameters";
+		case InversionNumCostFunctionsEnum : return "InversionNumCostFunctions";
+		case InversionStepThresholdEnum : return "InversionStepThreshold";
+		case InversionThicknessObsEnum : return "InversionThicknessObs";
+		case InversionSurfaceObsEnum : return "InversionSurfaceObs";
+		case InversionVxObsEnum : return "InversionVxObs";
+		case InversionVyObsEnum : return "InversionVyObs";
+		case InversionVzObsEnum : return "InversionVzObs";
+		case MaskIceLevelsetEnum : return "MaskIceLevelset";
+		case MaskOceanLevelsetEnum : return "MaskOceanLevelset";
+		case MaskLandLevelsetEnum : return "MaskLandLevelset";
+		case MaterialsBetaEnum : return "MaterialsBeta";
+		case MaterialsHeatcapacityEnum : return "MaterialsHeatcapacity";
+		case MaterialsLatentheatEnum : return "MaterialsLatentheat";
+		case MaterialsMeltingpointEnum : return "MaterialsMeltingpoint";
+		case MaterialsMixedLayerCapacityEnum : return "MaterialsMixedLayerCapacity";
+		case MaterialsRheologyBEnum : return "MaterialsRheologyB";
+		case MaterialsRheologyBbarEnum : return "MaterialsRheologyBbar";
+		case MaterialsRheologyLawEnum : return "MaterialsRheologyLaw";
+		case MaterialsRheologyNEnum : return "MaterialsRheologyN";
+		case MaterialsRheologyKoEnum : return "MaterialsRheologyKo";
+		case MaterialsRheologyKobarEnum : return "MaterialsRheologyKobar";
+		case MaterialsRheologyEcEnum : return "MaterialsRheologyEc";
+		case MaterialsRheologyEcbarEnum : return "MaterialsRheologyEcbar";
+		case MaterialsRheologyEsEnum : return "MaterialsRheologyEs";
+		case MaterialsRheologyEsbarEnum : return "MaterialsRheologyEsbar";
+		case DamageDEnum : return "DamageD";
+		case DamageFEnum : return "DamageF";
+		case DamageDbarEnum : return "DamageDbar";
+		case DamageLawEnum : return "DamageLaw";
+		case DamageC1Enum : return "DamageC1";
+		case DamageC2Enum : return "DamageC2";
+		case DamageC3Enum : return "DamageC3";
+		case DamageC4Enum : return "DamageC4";
+		case DamageElementinterpEnum : return "DamageElementinterp";
+		case DamageHealingEnum : return "DamageHealing";
+		case DamageStressThresholdEnum : return "DamageStressThreshold";
+		case DamageKappaEnum : return "DamageKappa";
+		case DamageStabilizationEnum : return "DamageStabilization";
+		case DamageMaxiterEnum : return "DamageMaxiter";
+		case DamageMaxDamageEnum : return "DamageMaxDamage";
+		case DamageEquivStressEnum : return "DamageEquivStress";
+		case DamageEvolutionNumRequestedOutputsEnum : return "DamageEvolutionNumRequestedOutputs";
+		case DamageEvolutionRequestedOutputsEnum : return "DamageEvolutionRequestedOutputs";
+		case DamageEnum : return "Damage";
+		case NewDamageEnum : return "NewDamage";
+		case StressIntensityFactorEnum : return "StressIntensityFactor";
+		case CalvingLawEnum : return "CalvingLaw";
+		case CalvingCalvingrateEnum : return "CalvingCalvingrate";
+		case CalvingMeltingrateEnum : return "CalvingMeltingrate";
+		case CalvingLevermannEnum : return "CalvingLevermann";
+		case CalvingDevEnum : return "CalvingDev";
+		case CalvingMinthicknessEnum : return "CalvingMinthickness";
+		case DefaultCalvingEnum : return "DefaultCalving";
+		case CalvinglevermannCoeffEnum : return "CalvinglevermannCoeff";
+		case CalvinglevermannMeltingrateEnum : return "CalvinglevermannMeltingrate";
+		case CalvingdevCoeffEnum : return "CalvingdevCoeff";
+		case CalvingratexEnum : return "Calvingratex";
+		case CalvingrateyEnum : return "Calvingratey";
+		case CalvingratexAverageEnum : return "CalvingratexAverage";
+		case CalvingrateyAverageEnum : return "CalvingrateyAverage";
+		case StrainRateparallelEnum : return "StrainRateparallel";
+		case StrainRateperpendicularEnum : return "StrainRateperpendicular";
+		case StrainRateeffectiveEnum : return "StrainRateeffective";
+		case MaterialsRhoIceEnum : return "MaterialsRhoIce";
+		case MaterialsRhoSeawaterEnum : return "MaterialsRhoSeawater";
+		case MaterialsRhoFreshwaterEnum : return "MaterialsRhoFreshwater";
+		case MaterialsMuWaterEnum : return "MaterialsMuWater";
+		case MaterialsThermalExchangeVelocityEnum : return "MaterialsThermalExchangeVelocity";
+		case MaterialsThermalconductivityEnum : return "MaterialsThermalconductivity";
+		case MaterialsTemperateiceconductivityEnum : return "MaterialsTemperateiceconductivity";
+		case MaterialsLithosphereShearModulusEnum : return "MaterialsLithosphereShearModulus";
+		case MaterialsLithosphereDensityEnum : return "MaterialsLithosphereDensity";
+		case MaterialsMantleShearModulusEnum : return "MaterialsMantleShearModulus";
+		case MaterialsMantleDensityEnum : return "MaterialsMantleDensity";
+		case MaterialsEarthDensityEnum : return "MaterialsEarthDensity";
+		case MeshAverageVertexConnectivityEnum : return "MeshAverageVertexConnectivity";
+		case MeshElementsEnum : return "MeshElements";
+		case MeshNumberofelementsEnum : return "MeshNumberofelements";
+		case MeshNumberoflayersEnum : return "MeshNumberoflayers";
+		case MeshNumberofverticesEnum : return "MeshNumberofvertices";
+		case MeshVertexonbaseEnum : return "MeshVertexonbase";
+		case MeshVertexonsurfaceEnum : return "MeshVertexonsurface";
+		case MeshVertexonboundaryEnum : return "MeshVertexonboundary";
+		case MeshElementtypeEnum : return "MeshElementtype";
+		case DomainTypeEnum : return "DomainType";
+		case DomainDimensionEnum : return "DomainDimension";
+		case Domain2DhorizontalEnum : return "Domain2Dhorizontal";
+		case Domain2DverticalEnum : return "Domain2Dvertical";
+		case Domain3DEnum : return "Domain3D";
+		case Domain3DsurfaceEnum : return "Domain3Dsurface";
+		case MasstransportHydrostaticAdjustmentEnum : return "MasstransportHydrostaticAdjustment";
+		case MasstransportIsfreesurfaceEnum : return "MasstransportIsfreesurface";
+		case MasstransportMinThicknessEnum : return "MasstransportMinThickness";
+		case MasstransportPenaltyFactorEnum : return "MasstransportPenaltyFactor";
+		case MasstransportSpcthicknessEnum : return "MasstransportSpcthickness";
+		case MasstransportStabilizationEnum : return "MasstransportStabilization";
+		case MasstransportNumRequestedOutputsEnum : return "MasstransportNumRequestedOutputs";
+		case MasstransportRequestedOutputsEnum : return "MasstransportRequestedOutputs";
+		case QmuIsdakotaEnum : return "QmuIsdakota";
+		case MassFluxSegmentsEnum : return "MassFluxSegments";
+		case MassFluxSegmentsPresentEnum : return "MassFluxSegmentsPresent";
+		case QmuNumberofpartitionsEnum : return "QmuNumberofpartitions";
+		case QmuNumberofresponsesEnum : return "QmuNumberofresponses";
+		case QmuPartitionEnum : return "QmuPartition";
+		case QmuResponsedescriptorsEnum : return "QmuResponsedescriptors";
+		case QmuVariabledescriptorsEnum : return "QmuVariabledescriptors";
+		case SettingsResultsOnNodesEnum : return "SettingsResultsOnNodes";
+		case SettingsIoGatherEnum : return "SettingsIoGather";
+		case SettingsLowmemEnum : return "SettingsLowmem";
+		case SettingsOutputFrequencyEnum : return "SettingsOutputFrequency";
+		case SettingsRecordingFrequencyEnum : return "SettingsRecordingFrequency";
+		case SettingsWaitonlockEnum : return "SettingsWaitonlock";
+		case DebugProfilingEnum : return "DebugProfiling";
+		case ProfilingCurrentMemEnum : return "ProfilingCurrentMem";
+		case ProfilingCurrentFlopsEnum : return "ProfilingCurrentFlops";
+		case ProfilingSolutionTimeEnum : return "ProfilingSolutionTime";
+		case SteadystateMaxiterEnum : return "SteadystateMaxiter";
+		case SteadystateNumRequestedOutputsEnum : return "SteadystateNumRequestedOutputs";
+		case SteadystateReltolEnum : return "SteadystateReltol";
+		case SteadystateRequestedOutputsEnum : return "SteadystateRequestedOutputs";
+		case SurfaceEnum : return "Surface";
+		case ThermalIsenthalpyEnum : return "ThermalIsenthalpy";
+		case ThermalIsdynamicbasalspcEnum : return "ThermalIsdynamicbasalspc";
+		case ThermalReltolEnum : return "ThermalReltol";
+		case ThermalMaxiterEnum : return "ThermalMaxiter";
+		case ThermalPenaltyFactorEnum : return "ThermalPenaltyFactor";
+		case ThermalPenaltyLockEnum : return "ThermalPenaltyLock";
+		case ThermalPenaltyThresholdEnum : return "ThermalPenaltyThreshold";
+		case ThermalSpctemperatureEnum : return "ThermalSpctemperature";
+		case ThermalStabilizationEnum : return "ThermalStabilization";
+		case ThermalNumRequestedOutputsEnum : return "ThermalNumRequestedOutputs";
+		case ThermalRequestedOutputsEnum : return "ThermalRequestedOutputs";
+		case GiaMantleViscosityEnum : return "GiaMantleViscosity";
+		case GiaLithosphereThicknessEnum : return "GiaLithosphereThickness";
+		case ThicknessEnum : return "Thickness";
+		case TimesteppingStartTimeEnum : return "TimesteppingStartTime";
+		case TimesteppingFinalTimeEnum : return "TimesteppingFinalTime";
+		case TimesteppingCflCoefficientEnum : return "TimesteppingCflCoefficient";
+		case TimesteppingTimeAdaptEnum : return "TimesteppingTimeAdapt";
+		case TimesteppingTimeStepEnum : return "TimesteppingTimeStep";
+		case TimesteppingInterpForcingsEnum : return "TimesteppingInterpForcings";
+		case TransientIssmbEnum : return "TransientIssmb";
+		case TransientIscouplerEnum : return "TransientIscoupler";
+		case TransientIsstressbalanceEnum : return "TransientIsstressbalance";
+		case TransientIsgroundinglineEnum : return "TransientIsgroundingline";
+		case TransientIsmasstransportEnum : return "TransientIsmasstransport";
+		case TransientIsthermalEnum : return "TransientIsthermal";
+		case TransientIsgiaEnum : return "TransientIsgia";
+		case TransientIsdamageevolutionEnum : return "TransientIsdamageevolution";
+		case TransientIshydrologyEnum : return "TransientIshydrology";
+		case TransientIsmovingfrontEnum : return "TransientIsmovingfront";
+		case TransientIsslrEnum : return "TransientIsslr";
+		case TransientNumRequestedOutputsEnum : return "TransientNumRequestedOutputs";
+		case TransientRequestedOutputsEnum : return "TransientRequestedOutputs";
+		case BalancethicknessApparentMassbalanceEnum : return "BalancethicknessApparentMassbalance";
+		case BalancethicknessDiffusionCoefficientEnum : return "BalancethicknessDiffusionCoefficient";
+		case BalancethicknessOmegaEnum : return "BalancethicknessOmega";
+		case BalancethicknessD0Enum : return "BalancethicknessD0";
+		case SmbEnum : return "Smb";
+		case SmbAnalysisEnum : return "SmbAnalysis";
+		case SmbSolutionEnum : return "SmbSolution";
+		case SmbNumRequestedOutputsEnum : return "SmbNumRequestedOutputs";
+		case SmbRequestedOutputsEnum : return "SmbRequestedOutputs";
+		case SmbIsInitializedEnum : return "SmbIsInitialized";
+		case SmbDziniEnum : return "SmbDzini";
+		case SmbDiniEnum : return "SmbDini";
+		case SmbReiniEnum : return "SmbReini";
+		case SmbGdniniEnum : return "SmbGdnini";
+		case SmbGspiniEnum : return "SmbGspini";
+		case SmbECiniEnum : return "SmbECini";
+		case SmbWiniEnum : return "SmbWini";
+		case SmbAiniEnum : return "SmbAini";
+		case SmbTiniEnum : return "SmbTini";
+		case SmbSizeiniEnum : return "SmbSizeini";
+		case SMBforcingEnum : return "SMBforcing";
+		case SmbMassBalanceEnum : return "SmbMassBalance";
+		case SMBgembEnum : return "SMBgemb";
+		case SmbInitDensityScalingEnum : return "SmbInitDensityScaling";
+		case SmbTaEnum : return "SmbTa";
+		case SmbVEnum : return "SmbV";
+		case SmbDswrfEnum : return "SmbDswrf";
+		case SmbDlwrfEnum : return "SmbDlwrf";
+		case SmbPEnum : return "SmbP";
+		case SmbEAirEnum : return "SmbEAir";
+		case SmbPAirEnum : return "SmbPAir";
+		case SmbTmeanEnum : return "SmbTmean";
+		case SmbCEnum : return "SmbC";
+		case SmbTzEnum : return "SmbTz";
+		case SmbVzEnum : return "SmbVz";
+		case SmbDtEnum : return "SmbDt";
+		case SmbDzEnum : return "SmbDz";
+		case SmbAIdxEnum : return "SmbAIdx";
+		case SmbSwIdxEnum : return "SmbSwIdx";
+		case SmbDenIdxEnum : return "SmbDenIdx";
+		case SmbZTopEnum : return "SmbZTop";
+		case SmbDzTopEnum : return "SmbDzTop";
+		case SmbDzMinEnum : return "SmbDzMin";
+		case SmbZYEnum : return "SmbZY";
+		case SmbZMaxEnum : return "SmbZMax";
+		case SmbZMinEnum : return "SmbZMin";
+		case SmbOutputFreqEnum : return "SmbOutputFreq";
+		case SmbASnowEnum : return "SmbASnow";
+		case SmbAIceEnum : return "SmbAIce";
+		case SmbCldFracEnum : return "SmbCldFrac";
+		case SmbT0wetEnum : return "SmbT0wet";
+		case SmbT0dryEnum : return "SmbT0dry";
+		case SmbKEnum : return "SmbK";
+		case SmbDEnum : return "SmbD";
+		case SmbReEnum : return "SmbRe";
+		case SmbGdnEnum : return "SmbGdn";
+		case SmbGspEnum : return "SmbGsp";
+		case SmbECEnum : return "SmbEC";
+		case SmbWEnum : return "SmbW";
+		case SmbAEnum : return "SmbA";
+		case SmbTEnum : return "SmbT";
+		case SmbIsgraingrowthEnum : return "SmbIsgraingrowth";
+		case SmbIsalbedoEnum : return "SmbIsalbedo";
+		case SmbIsshortwaveEnum : return "SmbIsshortwave";
+		case SmbIsthermalEnum : return "SmbIsthermal";
+		case SmbIsaccumulationEnum : return "SmbIsaccumulation";
+		case SmbIsmeltEnum : return "SmbIsmelt";
+		case SmbIsdensificationEnum : return "SmbIsdensification";
+		case SmbIsturbulentfluxEnum : return "SmbIsturbulentflux";
+		case SmbDz_addEnum : return "SmbDz_add";
+		case SmbM_addEnum : return "SmbM_add";
+		case SMBpddEnum : return "SMBpdd";
+		case SmbDelta18oEnum : return "SmbDelta18o";
+		case SmbDelta18oSurfaceEnum : return "SmbDelta18oSurface";
+		case SmbIsdelta18oEnum : return "SmbIsdelta18o";
+		case SmbIsmungsmEnum : return "SmbIsmungsm";
+		case SmbIsd18opdEnum : return "SmbIsd18opd";
+		case SmbPrecipitationsPresentdayEnum : return "SmbPrecipitationsPresentday";
+		case SmbPrecipitationsLgmEnum : return "SmbPrecipitationsLgm";
+		case SmbTemperaturesPresentdayEnum : return "SmbTemperaturesPresentday";
+		case SmbTemperaturesLgmEnum : return "SmbTemperaturesLgm";
+		case SmbPrecipitationEnum : return "SmbPrecipitation";
+		case SmbDesfacEnum : return "SmbDesfac";
+		case SmbS0pEnum : return "SmbS0p";
+		case SmbS0tEnum : return "SmbS0t";
+		case SmbRlapsEnum : return "SmbRlaps";
+		case SmbRlapslgmEnum : return "SmbRlapslgm";
+		case SmbPfacEnum : return "SmbPfac";
+		case SmbTdiffEnum : return "SmbTdiff";
+		case SmbSealevEnum : return "SmbSealev";
+		case SMBd18opddEnum : return "SMBd18opdd";
+		case SmbDpermilEnum : return "SmbDpermil";
+		case SMBgradientsEnum : return "SMBgradients";
+		case SmbMonthlytemperaturesEnum : return "SmbMonthlytemperatures";
+		case SmbHrefEnum : return "SmbHref";
+		case SmbSmbrefEnum : return "SmbSmbref";
+		case SmbBPosEnum : return "SmbBPos";
+		case SmbBNegEnum : return "SmbBNeg";
+		case SMBhenningEnum : return "SMBhenning";
+		case SMBcomponentsEnum : return "SMBcomponents";
+		case SmbAccumulationEnum : return "SmbAccumulation";
+		case SmbEvaporationEnum : return "SmbEvaporation";
+		case SmbRunoffEnum : return "SmbRunoff";
+		case SMBmeltcomponentsEnum : return "SMBmeltcomponents";
+		case SmbMeltEnum : return "SmbMelt";
+		case SmbRefreezeEnum : return "SmbRefreeze";
+		case SMBgcmEnum : return "SMBgcm";
+		case AdjointpEnum : return "Adjointp";
+		case AdjointxEnum : return "Adjointx";
+		case AdjointyEnum : return "Adjointy";
+		case AdjointzEnum : return "Adjointz";
+		case BalancethicknessMisfitEnum : return "BalancethicknessMisfit";
+		case BedSlopeXEnum : return "BedSlopeX";
+		case BedSlopeYEnum : return "BedSlopeY";
+		case BoundaryEnum : return "Boundary";
+		case ConvergedEnum : return "Converged";
+		case InternalEnum : return "Internal";
+		case MassFluxEnum : return "MassFlux";
+		case MeltingOffsetEnum : return "MeltingOffset";
+		case MisfitEnum : return "Misfit";
+		case PressureEnum : return "Pressure";
+		case PressurePicardEnum : return "PressurePicard";
+		case AndroidFrictionCoefficientEnum : return "AndroidFrictionCoefficient";
+		case ResetPenaltiesEnum : return "ResetPenalties";
+		case SurfaceAbsVelMisfitEnum : return "SurfaceAbsVelMisfit";
+		case SurfaceAreaEnum : return "SurfaceArea";
+		case SurfaceAverageVelMisfitEnum : return "SurfaceAverageVelMisfit";
+		case SurfaceLogVelMisfitEnum : return "SurfaceLogVelMisfit";
+		case SurfaceLogVxVyMisfitEnum : return "SurfaceLogVxVyMisfit";
+		case SurfaceRelVelMisfitEnum : return "SurfaceRelVelMisfit";
+		case SurfaceSlopeXEnum : return "SurfaceSlopeX";
+		case SurfaceSlopeYEnum : return "SurfaceSlopeY";
+		case TemperatureEnum : return "Temperature";
+		case TemperaturePicardEnum : return "TemperaturePicard";
+		case TemperaturePDDEnum : return "TemperaturePDD";
+		case ThicknessAbsMisfitEnum : return "ThicknessAbsMisfit";
+		case SurfaceAbsMisfitEnum : return "SurfaceAbsMisfit";
+		case VelEnum : return "Vel";
+		case VelocityEnum : return "Velocity";
+		case VxAverageEnum : return "VxAverage";
+		case VxEnum : return "Vx";
+		case VxPicardEnum : return "VxPicard";
+		case VyAverageEnum : return "VyAverage";
+		case VyEnum : return "Vy";
+		case VyPicardEnum : return "VyPicard";
+		case VzEnum : return "Vz";
+		case VzSSAEnum : return "VzSSA";
+		case VzHOEnum : return "VzHO";
+		case VzPicardEnum : return "VzPicard";
+		case VzFSEnum : return "VzFS";
+		case VxMeshEnum : return "VxMesh";
+		case VyMeshEnum : return "VyMesh";
+		case VzMeshEnum : return "VzMesh";
+		case EnthalpyEnum : return "Enthalpy";
+		case EnthalpyPicardEnum : return "EnthalpyPicard";
+		case ThicknessAbsGradientEnum : return "ThicknessAbsGradient";
+		case ThicknessAlongGradientEnum : return "ThicknessAlongGradient";
+		case ThicknessAcrossGradientEnum : return "ThicknessAcrossGradient";
+		case ThicknessPositiveEnum : return "ThicknessPositive";
+		case IntMatParamEnum : return "IntMatParam";
+		case RheologyBbarAbsGradientEnum : return "RheologyBbarAbsGradient";
+		case RheologyBAbsGradientEnum : return "RheologyBAbsGradient";
+		case DragCoefficientAbsGradientEnum : return "DragCoefficientAbsGradient";
+		case TransientInputEnum : return "TransientInput";
+		case WaterfractionEnum : return "Waterfraction";
+		case WatercolumnEnum : return "Watercolumn";
+		case ViscousHeatingEnum : return "ViscousHeating";
+		case HydrologyWaterVxEnum : return "HydrologyWaterVx";
+		case HydrologyWaterVyEnum : return "HydrologyWaterVy";
+		case DrivingStressXEnum : return "DrivingStressX";
+		case DrivingStressYEnum : return "DrivingStressY";
+		case SigmaNNEnum : return "SigmaNN";
+		case StressTensorEnum : return "StressTensor";
+		case StressTensorxxEnum : return "StressTensorxx";
+		case StressTensorxyEnum : return "StressTensorxy";
+		case StressTensorxzEnum : return "StressTensorxz";
+		case StressTensoryyEnum : return "StressTensoryy";
+		case StressTensoryzEnum : return "StressTensoryz";
+		case StressTensorzzEnum : return "StressTensorzz";
+		case StressMaxPrincipalEnum : return "StressMaxPrincipal";
+		case DeviatoricStressEnum : return "DeviatoricStress";
+		case DeviatoricStressxxEnum : return "DeviatoricStressxx";
+		case DeviatoricStressxyEnum : return "DeviatoricStressxy";
+		case DeviatoricStressxzEnum : return "DeviatoricStressxz";
+		case DeviatoricStressyyEnum : return "DeviatoricStressyy";
+		case DeviatoricStressyzEnum : return "DeviatoricStressyz";
+		case DeviatoricStresszzEnum : return "DeviatoricStresszz";
+		case DeviatoricStresseffectiveEnum : return "DeviatoricStresseffective";
+		case LambdaSEnum : return "LambdaS";
+		case StrainRateEnum : return "StrainRate";
+		case StrainRatexxEnum : return "StrainRatexx";
+		case StrainRatexyEnum : return "StrainRatexy";
+		case StrainRatexzEnum : return "StrainRatexz";
+		case StrainRateyyEnum : return "StrainRateyy";
+		case StrainRateyzEnum : return "StrainRateyz";
+		case StrainRatezzEnum : return "StrainRatezz";
+		case DivergenceEnum : return "Divergence";
+		case MaxDivergenceEnum : return "MaxDivergence";
+		case GiaCrossSectionShapeEnum : return "GiaCrossSectionShape";
+		case GiadWdtEnum : return "GiadWdt";
+		case GiaWEnum : return "GiaW";
+		case SaveResultsEnum : return "SaveResults";
+		case BoolExternalResultEnum : return "BoolExternalResult";
+		case DoubleExternalResultEnum : return "DoubleExternalResult";
+		case DoubleMatExternalResultEnum : return "DoubleMatExternalResult";
+		case IntExternalResultEnum : return "IntExternalResult";
+		case JEnum : return "J";
+		case StringExternalResultEnum : return "StringExternalResult";
+		case StepEnum : return "Step";
+		case TimeEnum : return "Time";
+		case WaterColumnOldEnum : return "WaterColumnOld";
+		case SurfaceObservationEnum : return "SurfaceObservation";
+		case WeightsSurfaceObservationEnum : return "WeightsSurfaceObservation";
+		case OutputdefinitionEnum : return "Outputdefinition";
+		case Outputdefinition1Enum : return "Outputdefinition1";
+		case Outputdefinition2Enum : return "Outputdefinition2";
+		case Outputdefinition3Enum : return "Outputdefinition3";
+		case Outputdefinition4Enum : return "Outputdefinition4";
+		case Outputdefinition5Enum : return "Outputdefinition5";
+		case Outputdefinition6Enum : return "Outputdefinition6";
+		case Outputdefinition7Enum : return "Outputdefinition7";
+		case Outputdefinition8Enum : return "Outputdefinition8";
+		case Outputdefinition9Enum : return "Outputdefinition9";
+		case Outputdefinition10Enum : return "Outputdefinition10";
+		case Outputdefinition11Enum : return "Outputdefinition11";
+		case Outputdefinition12Enum : return "Outputdefinition12";
+		case Outputdefinition13Enum : return "Outputdefinition13";
+		case Outputdefinition14Enum : return "Outputdefinition14";
+		case Outputdefinition15Enum : return "Outputdefinition15";
+		case Outputdefinition16Enum : return "Outputdefinition16";
+		case Outputdefinition17Enum : return "Outputdefinition17";
+		case Outputdefinition18Enum : return "Outputdefinition18";
+		case Outputdefinition19Enum : return "Outputdefinition19";
+		case Outputdefinition20Enum : return "Outputdefinition20";
+		case Outputdefinition21Enum : return "Outputdefinition21";
+		case Outputdefinition22Enum : return "Outputdefinition22";
+		case Outputdefinition23Enum : return "Outputdefinition23";
+		case Outputdefinition24Enum : return "Outputdefinition24";
+		case Outputdefinition25Enum : return "Outputdefinition25";
+		case Outputdefinition26Enum : return "Outputdefinition26";
+		case Outputdefinition27Enum : return "Outputdefinition27";
+		case Outputdefinition28Enum : return "Outputdefinition28";
+		case Outputdefinition29Enum : return "Outputdefinition29";
+		case Outputdefinition30Enum : return "Outputdefinition30";
+		case Outputdefinition31Enum : return "Outputdefinition31";
+		case Outputdefinition32Enum : return "Outputdefinition32";
+		case Outputdefinition33Enum : return "Outputdefinition33";
+		case Outputdefinition34Enum : return "Outputdefinition34";
+		case Outputdefinition35Enum : return "Outputdefinition35";
+		case Outputdefinition36Enum : return "Outputdefinition36";
+		case Outputdefinition37Enum : return "Outputdefinition37";
+		case Outputdefinition38Enum : return "Outputdefinition38";
+		case Outputdefinition39Enum : return "Outputdefinition39";
+		case Outputdefinition40Enum : return "Outputdefinition40";
+		case Outputdefinition41Enum : return "Outputdefinition41";
+		case Outputdefinition42Enum : return "Outputdefinition42";
+		case Outputdefinition43Enum : return "Outputdefinition43";
+		case Outputdefinition44Enum : return "Outputdefinition44";
+		case Outputdefinition45Enum : return "Outputdefinition45";
+		case Outputdefinition46Enum : return "Outputdefinition46";
+		case Outputdefinition47Enum : return "Outputdefinition47";
+		case Outputdefinition48Enum : return "Outputdefinition48";
+		case Outputdefinition49Enum : return "Outputdefinition49";
+		case Outputdefinition50Enum : return "Outputdefinition50";
+		case Outputdefinition51Enum : return "Outputdefinition51";
+		case Outputdefinition52Enum : return "Outputdefinition52";
+		case Outputdefinition53Enum : return "Outputdefinition53";
+		case Outputdefinition54Enum : return "Outputdefinition54";
+		case Outputdefinition55Enum : return "Outputdefinition55";
+		case Outputdefinition56Enum : return "Outputdefinition56";
+		case Outputdefinition57Enum : return "Outputdefinition57";
+		case Outputdefinition58Enum : return "Outputdefinition58";
+		case Outputdefinition59Enum : return "Outputdefinition59";
+		case Outputdefinition60Enum : return "Outputdefinition60";
+		case Outputdefinition61Enum : return "Outputdefinition61";
+		case Outputdefinition62Enum : return "Outputdefinition62";
+		case Outputdefinition63Enum : return "Outputdefinition63";
+		case Outputdefinition64Enum : return "Outputdefinition64";
+		case Outputdefinition65Enum : return "Outputdefinition65";
+		case Outputdefinition66Enum : return "Outputdefinition66";
+		case Outputdefinition67Enum : return "Outputdefinition67";
+		case Outputdefinition68Enum : return "Outputdefinition68";
+		case Outputdefinition69Enum : return "Outputdefinition69";
+		case Outputdefinition70Enum : return "Outputdefinition70";
+		case Outputdefinition71Enum : return "Outputdefinition71";
+		case Outputdefinition72Enum : return "Outputdefinition72";
+		case Outputdefinition73Enum : return "Outputdefinition73";
+		case Outputdefinition74Enum : return "Outputdefinition74";
+		case Outputdefinition75Enum : return "Outputdefinition75";
+		case Outputdefinition76Enum : return "Outputdefinition76";
+		case Outputdefinition77Enum : return "Outputdefinition77";
+		case Outputdefinition78Enum : return "Outputdefinition78";
+		case Outputdefinition79Enum : return "Outputdefinition79";
+		case Outputdefinition80Enum : return "Outputdefinition80";
+		case Outputdefinition81Enum : return "Outputdefinition81";
+		case Outputdefinition82Enum : return "Outputdefinition82";
+		case Outputdefinition83Enum : return "Outputdefinition83";
+		case Outputdefinition84Enum : return "Outputdefinition84";
+		case Outputdefinition85Enum : return "Outputdefinition85";
+		case Outputdefinition86Enum : return "Outputdefinition86";
+		case Outputdefinition87Enum : return "Outputdefinition87";
+		case Outputdefinition88Enum : return "Outputdefinition88";
+		case Outputdefinition89Enum : return "Outputdefinition89";
+		case Outputdefinition90Enum : return "Outputdefinition90";
+		case Outputdefinition91Enum : return "Outputdefinition91";
+		case Outputdefinition92Enum : return "Outputdefinition92";
+		case Outputdefinition93Enum : return "Outputdefinition93";
+		case Outputdefinition94Enum : return "Outputdefinition94";
+		case Outputdefinition95Enum : return "Outputdefinition95";
+		case Outputdefinition96Enum : return "Outputdefinition96";
+		case Outputdefinition97Enum : return "Outputdefinition97";
+		case Outputdefinition98Enum : return "Outputdefinition98";
+		case Outputdefinition99Enum : return "Outputdefinition99";
+		case Outputdefinition100Enum : return "Outputdefinition100";
+		case OutputdefinitionListEnum : return "OutputdefinitionList";
+		case MassfluxatgateEnum : return "Massfluxatgate";
+		case NodalvalueEnum : return "Nodalvalue";
+		case VxObsEnum : return "VxObs";
+		case VyObsEnum : return "VyObs";
+		case AbsoluteEnum : return "Absolute";
+		case IncrementalEnum : return "Incremental";
+		case AugmentedLagrangianREnum : return "AugmentedLagrangianR";
+		case AugmentedLagrangianRhopEnum : return "AugmentedLagrangianRhop";
+		case AugmentedLagrangianRlambdaEnum : return "AugmentedLagrangianRlambda";
+		case AugmentedLagrangianRholambdaEnum : return "AugmentedLagrangianRholambda";
+		case AugmentedLagrangianThetaEnum : return "AugmentedLagrangianTheta";
+		case NoneEnum : return "None";
+		case AggressiveMigrationEnum : return "AggressiveMigration";
+		case SoftMigrationEnum : return "SoftMigration";
+		case SubelementMigrationEnum : return "SubelementMigration";
+		case SubelementMigration2Enum : return "SubelementMigration2";
+		case ContactEnum : return "Contact";
+		case GroundingOnlyEnum : return "GroundingOnly";
+		case MaskGroundediceLevelsetEnum : return "MaskGroundediceLevelset";
+		case AdjointEnum : return "Adjoint";
+		case ColinearEnum : return "Colinear";
+		case ControlSteadyEnum : return "ControlSteady";
+		case FsetEnum : return "Fset";
+		case Gradient1Enum : return "Gradient1";
+		case Gradient2Enum : return "Gradient2";
+		case Gradient3Enum : return "Gradient3";
+		case GradientEnum : return "Gradient";
+		case GroundinglineMigrationEnum : return "GroundinglineMigration";
+		case GsetEnum : return "Gset";
+		case IndexEnum : return "Index";
+		case IndexedEnum : return "Indexed";
+		case IntersectEnum : return "Intersect";
+		case NodalEnum : return "Nodal";
+		case OldGradientEnum : return "OldGradient";
+		case OutputBufferPointerEnum : return "OutputBufferPointer";
+		case OutputBufferSizePointerEnum : return "OutputBufferSizePointer";
+		case OutputFilePointerEnum : return "OutputFilePointer";
+		case ToolkitsFileNameEnum : return "ToolkitsFileName";
+		case RootPathEnum : return "RootPath";
+		case OutputFileNameEnum : return "OutputFileName";
+		case InputFileNameEnum : return "InputFileName";
+		case LockFileNameEnum : return "LockFileName";
+		case RestartFileNameEnum : return "RestartFileName";
+		case ToolkitsOptionsAnalysesEnum : return "ToolkitsOptionsAnalyses";
+		case ToolkitsOptionsStringsEnum : return "ToolkitsOptionsStrings";
+		case QmuErrNameEnum : return "QmuErrName";
+		case QmuInNameEnum : return "QmuInName";
+		case QmuOutNameEnum : return "QmuOutName";
+		case RegularEnum : return "Regular";
+		case ScaledEnum : return "Scaled";
+		case SeparateEnum : return "Separate";
+		case SsetEnum : return "Sset";
+		case DenseEnum : return "Dense";
+		case MpiDenseEnum : return "MpiDense";
+		case MpiSparseEnum : return "MpiSparse";
+		case SeqEnum : return "Seq";
+		case MpiEnum : return "Mpi";
+		case MumpsEnum : return "Mumps";
+		case GslEnum : return "Gsl";
+		case CuffeyEnum : return "Cuffey";
+		case BuddJackaEnum : return "BuddJacka";
+		case CuffeyTemperateEnum : return "CuffeyTemperate";
+		case PatersonEnum : return "Paterson";
+		case ArrheniusEnum : return "Arrhenius";
+		case LliboutryDuvalEnum : return "LliboutryDuval";
+		case ExtrapolationVariableEnum : return "ExtrapolationVariable";
+		case IceMaskNodeActivationEnum : return "IceMaskNodeActivation";
+		case LevelsetfunctionSlopeXEnum : return "LevelsetfunctionSlopeX";
+		case LevelsetfunctionSlopeYEnum : return "LevelsetfunctionSlopeY";
+		case LevelsetfunctionPicardEnum : return "LevelsetfunctionPicard";
+		case LevelsetReinitFrequencyEnum : return "LevelsetReinitFrequency";
+		case SealevelEnum : return "Sealevel";
+		case SealevelUmotionEnum : return "SealevelUmotion";
+		case SealevelNmotionEnum : return "SealevelNmotion";
+		case SealevelEmotionEnum : return "SealevelEmotion";
+		case SealevelAbsoluteEnum : return "SealevelAbsolute";
+		case SealevelEustaticEnum : return "SealevelEustatic";
+		case SealevelriseDeltathicknessEnum : return "SealevelriseDeltathickness";
+		case SealevelriseMaxiterEnum : return "SealevelriseMaxiter";
+		case SealevelriseReltolEnum : return "SealevelriseReltol";
+		case SealevelriseAbstolEnum : return "SealevelriseAbstol";
+		case SealevelriseRigidEnum : return "SealevelriseRigid";
+		case SealevelriseElasticEnum : return "SealevelriseElastic";
+		case SealevelriseGElasticEnum : return "SealevelriseGElastic";
+		case SealevelriseUElasticEnum : return "SealevelriseUElastic";
+		case SealevelriseHElasticEnum : return "SealevelriseHElastic";
+		case SealevelriseTransitionsEnum : return "SealevelriseTransitions";
+		case SealevelriseRequestedOutputsEnum : return "SealevelriseRequestedOutputs";
+		case SealevelriseNumRequestedOutputsEnum : return "SealevelriseNumRequestedOutputs";
+		case ParametersENDEnum : return "ParametersEND";
+		case XYEnum : return "XY";
+		case XYZEnum : return "XYZ";
+		case GenericParamEnum : return "GenericParam";
+		case BoolInputEnum : return "BoolInput";
+		case BoolParamEnum : return "BoolParam";
+		case ContourEnum : return "Contour";
+		case ControlInputEnum : return "ControlInput";
+		case DatasetInputEnum : return "DatasetInput";
+		case DoubleInputEnum : return "DoubleInput";
+		case DoubleArrayInputEnum : return "DoubleArrayInput";
+		case DataSetParamEnum : return "DataSetParam";
+		case DoubleMatArrayParamEnum : return "DoubleMatArrayParam";
+		case DoubleMatParamEnum : return "DoubleMatParam";
+		case DoubleParamEnum : return "DoubleParam";
+		case DoubleVecParamEnum : return "DoubleVecParam";
+		case ElementEnum : return "Element";
+		case ElementHookEnum : return "ElementHook";
+		case HookEnum : return "Hook";
+		case ExternalResultEnum : return "ExternalResult";
+		case FileParamEnum : return "FileParam";
+		case InputEnum : return "Input";
+		case IntInputEnum : return "IntInput";
+		case IntParamEnum : return "IntParam";
+		case IntVecParamEnum : return "IntVecParam";
+		case TransientParamEnum : return "TransientParam";
+		case MaticeEnum : return "Matice";
+		case MatdamageiceEnum : return "Matdamageice";
+		case MatestarEnum : return "Matestar";
+		case MatparEnum : return "Matpar";
+		case NodeEnum : return "Node";
+		case NumericalfluxEnum : return "Numericalflux";
+		case NeumannfluxEnum : return "Neumannflux";
+		case ParamEnum : return "Param";
+		case MoulinEnum : return "Moulin";
+		case PengridEnum : return "Pengrid";
+		case PenpairEnum : return "Penpair";
+		case ProfilerEnum : return "Profiler";
+		case MatrixParamEnum : return "MatrixParam";
+		case MassconEnum : return "Masscon";
+		case MassconaxpbyEnum : return "Massconaxpby";
+		case NodeSIdEnum : return "NodeSId";
+		case VectorParamEnum : return "VectorParam";
+		case RiftfrontEnum : return "Riftfront";
+		case SegmentEnum : return "Segment";
+		case SegmentRiftfrontEnum : return "SegmentRiftfront";
+		case SpcDynamicEnum : return "SpcDynamic";
+		case SpcStaticEnum : return "SpcStatic";
+		case SpcTransientEnum : return "SpcTransient";
+		case StringArrayParamEnum : return "StringArrayParam";
+		case StringParamEnum : return "StringParam";
+		case SegEnum : return "Seg";
+		case SegInputEnum : return "SegInput";
+		case TriaEnum : return "Tria";
+		case TriaInputEnum : return "TriaInput";
+		case TetraEnum : return "Tetra";
+		case TetraInputEnum : return "TetraInput";
+		case PentaEnum : return "Penta";
+		case PentaInputEnum : return "PentaInput";
+		case VertexEnum : return "Vertex";
+		case VertexPIdEnum : return "VertexPId";
+		case VertexSIdEnum : return "VertexSId";
+		case OptionEnum : return "Option";
+		case GenericOptionEnum : return "GenericOption";
+		case OptionCellEnum : return "OptionCell";
+		case OptionStructEnum : return "OptionStruct";
+		case AdjointBalancethicknessAnalysisEnum : return "AdjointBalancethicknessAnalysis";
+		case AdjointBalancethickness2AnalysisEnum : return "AdjointBalancethickness2Analysis";
+		case AdjointHorizAnalysisEnum : return "AdjointHorizAnalysis";
+		case DefaultAnalysisEnum : return "DefaultAnalysis";
+		case BalancethicknessAnalysisEnum : return "BalancethicknessAnalysis";
+		case BalancethicknessSolutionEnum : return "BalancethicknessSolution";
+		case Balancethickness2AnalysisEnum : return "Balancethickness2Analysis";
+		case Balancethickness2SolutionEnum : return "Balancethickness2Solution";
+		case BalancethicknessSoftAnalysisEnum : return "BalancethicknessSoftAnalysis";
+		case BalancethicknessSoftSolutionEnum : return "BalancethicknessSoftSolution";
+		case BalancevelocityAnalysisEnum : return "BalancevelocityAnalysis";
+		case BalancevelocitySolutionEnum : return "BalancevelocitySolution";
+		case L2ProjectionEPLAnalysisEnum : return "L2ProjectionEPLAnalysis";
+		case L2ProjectionBaseAnalysisEnum : return "L2ProjectionBaseAnalysis";
+		case BedSlopeSolutionEnum : return "BedSlopeSolution";
+		case DamageEvolutionSolutionEnum : return "DamageEvolutionSolution";
+		case DamageEvolutionAnalysisEnum : return "DamageEvolutionAnalysis";
+		case StressbalanceAnalysisEnum : return "StressbalanceAnalysis";
+		case StressbalanceSIAAnalysisEnum : return "StressbalanceSIAAnalysis";
+		case StressbalanceSolutionEnum : return "StressbalanceSolution";
+		case StressbalanceVerticalAnalysisEnum : return "StressbalanceVerticalAnalysis";
+		case EnthalpyAnalysisEnum : return "EnthalpyAnalysis";
+		case HydrologyShreveAnalysisEnum : return "HydrologyShreveAnalysis";
+		case HydrologyDCInefficientAnalysisEnum : return "HydrologyDCInefficientAnalysis";
+		case HydrologyDCEfficientAnalysisEnum : return "HydrologyDCEfficientAnalysis";
+		case HydrologySommersAnalysisEnum : return "HydrologySommersAnalysis";
+		case HydrologySolutionEnum : return "HydrologySolution";
+		case MeltingAnalysisEnum : return "MeltingAnalysis";
+		case MasstransportAnalysisEnum : return "MasstransportAnalysis";
+		case MasstransportSolutionEnum : return "MasstransportSolution";
+		case FreeSurfaceBaseAnalysisEnum : return "FreeSurfaceBaseAnalysis";
+		case FreeSurfaceTopAnalysisEnum : return "FreeSurfaceTopAnalysis";
+		case ExtrudeFromBaseAnalysisEnum : return "ExtrudeFromBaseAnalysis";
+		case ExtrudeFromTopAnalysisEnum : return "ExtrudeFromTopAnalysis";
+		case DepthAverageAnalysisEnum : return "DepthAverageAnalysis";
+		case SealevelriseSolutionEnum : return "SealevelriseSolution";
+		case SealevelriseAnalysisEnum : return "SealevelriseAnalysis";
+		case SteadystateSolutionEnum : return "SteadystateSolution";
+		case SurfaceSlopeSolutionEnum : return "SurfaceSlopeSolution";
+		case SmoothAnalysisEnum : return "SmoothAnalysis";
+		case ThermalAnalysisEnum : return "ThermalAnalysis";
+		case ThermalSolutionEnum : return "ThermalSolution";
+		case TransientSolutionEnum : return "TransientSolution";
+		case UzawaPressureAnalysisEnum : return "UzawaPressureAnalysis";
+		case GiaSolutionEnum : return "GiaSolution";
+		case GiaAnalysisEnum : return "GiaAnalysis";
+		case MeshdeformationAnalysisEnum : return "MeshdeformationAnalysis";
+		case LevelsetAnalysisEnum : return "LevelsetAnalysis";
+		case ExtrapolationAnalysisEnum : return "ExtrapolationAnalysis";
+		case ApproximationEnum : return "Approximation";
+		case NoneApproximationEnum : return "NoneApproximation";
+		case SIAApproximationEnum : return "SIAApproximation";
+		case SSAApproximationEnum : return "SSAApproximation";
+		case SSAHOApproximationEnum : return "SSAHOApproximation";
+		case SSAFSApproximationEnum : return "SSAFSApproximation";
+		case L1L2ApproximationEnum : return "L1L2Approximation";
+		case HOApproximationEnum : return "HOApproximation";
+		case HOFSApproximationEnum : return "HOFSApproximation";
+		case FSApproximationEnum : return "FSApproximation";
+		case FSvelocityEnum : return "FSvelocity";
+		case FSpressureEnum : return "FSpressure";
+		case GaussSegEnum : return "GaussSeg";
+		case GaussTriaEnum : return "GaussTria";
+		case GaussTetraEnum : return "GaussTetra";
+		case GaussPentaEnum : return "GaussPenta";
+		case TriangleInterpEnum : return "TriangleInterp";
+		case BilinearInterpEnum : return "BilinearInterp";
+		case NearestInterpEnum : return "NearestInterp";
+		case MinVelEnum : return "MinVel";
+		case MaxVelEnum : return "MaxVel";
+		case MinVxEnum : return "MinVx";
+		case MaxVxEnum : return "MaxVx";
+		case MaxAbsVxEnum : return "MaxAbsVx";
+		case MinVyEnum : return "MinVy";
+		case MaxVyEnum : return "MaxVy";
+		case MaxAbsVyEnum : return "MaxAbsVy";
+		case MinVzEnum : return "MinVz";
+		case MaxVzEnum : return "MaxVz";
+		case MaxAbsVzEnum : return "MaxAbsVz";
+		case FloatingAreaEnum : return "FloatingArea";
+		case GroundedAreaEnum : return "GroundedArea";
+		case IceMassEnum : return "IceMass";
+		case IceVolumeEnum : return "IceVolume";
+		case IceVolumeAboveFloatationEnum : return "IceVolumeAboveFloatation";
+		case TotalFloatingBmbEnum : return "TotalFloatingBmb";
+		case TotalGroundedBmbEnum : return "TotalGroundedBmb";
+		case TotalSmbEnum : return "TotalSmb";
+		case P0Enum : return "P0";
+		case P0ArrayEnum : return "P0Array";
+		case P1Enum : return "P1";
+		case P1DGEnum : return "P1DG";
+		case P1bubbleEnum : return "P1bubble";
+		case P1bubblecondensedEnum : return "P1bubblecondensed";
+		case P2Enum : return "P2";
+		case P2bubbleEnum : return "P2bubble";
+		case P2bubblecondensedEnum : return "P2bubblecondensed";
+		case P2xP1Enum : return "P2xP1";
+		case P1xP2Enum : return "P1xP2";
+		case P1xP3Enum : return "P1xP3";
+		case P2xP4Enum : return "P2xP4";
+		case P1P1Enum : return "P1P1";
+		case P1P1GLSEnum : return "P1P1GLS";
+		case MINIEnum : return "MINI";
+		case MINIcondensedEnum : return "MINIcondensed";
+		case TaylorHoodEnum : return "TaylorHood";
+		case LATaylorHoodEnum : return "LATaylorHood";
+		case XTaylorHoodEnum : return "XTaylorHood";
+		case OneLayerP4zEnum : return "OneLayerP4z";
+		case CrouzeixRaviartEnum : return "CrouzeixRaviart";
+		case LACrouzeixRaviartEnum : return "LACrouzeixRaviart";
+		case ClosedEnum : return "Closed";
+		case FreeEnum : return "Free";
+		case OpenEnum : return "Open";
+		case AirEnum : return "Air";
+		case IceEnum : return "Ice";
+		case MelangeEnum : return "Melange";
+		case WaterEnum : return "Water";
+		case DataSetEnum : return "DataSet";
+		case ConstraintsEnum : return "Constraints";
+		case LoadsEnum : return "Loads";
+		case MaterialsEnum : return "Materials";
+		case NodesEnum : return "Nodes";
+		case ContoursEnum : return "Contours";
+		case ParametersEnum : return "Parameters";
+		case VerticesEnum : return "Vertices";
+		case ResultsEnum : return "Results";
+		case MaximumNumberOfDefinitionsEnum : return "MaximumNumberOfDefinitions";
+		default : return "unknown";
+
+	}
+}
+void EnumToStringx(char** pstring,int enum_in){
+	char *string = NULL;
+	int   len = 0;
+
+	len=strlen(EnumToStringx(enum_in));
+	string=xNew<char>(len+1);
+	memcpy(string,EnumToStringx(enum_in),(len+1)*sizeof(char));
+
+	/*Assign output pointer*/
+	*pstring=string;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Enum/README
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Enum/README	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Enum/README	(revision 21239)
@@ -0,0 +1,9 @@
+
+DO NOT MODIFY the following files:
+- StringToEnumx.cpp
+- EnumToStringx.cpp
+all these files are automatically synchronized with EnumDefinitions.h
+
+TO ADD AN ENUM:
+add the corresponding lines to EnumDefinitions.h
+and execute synchronizing script.
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Enum/StringToEnumx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Enum/StringToEnumx.cpp	(revision 21239)
@@ -0,0 +1,982 @@
+/*
+* \file StringToEnumx.cpp:
+* \brief: output enum associated with string
+*
+*   WARNING: DO NOT MODIFY THIS FILE
+*            this file has been automatically generated by Synchronize.sh
+*            Please read README for more information
+*/
+
+#include <cstring>
+#include "./Enum.h"
+#include "../Exceptions/exceptions.h"
+
+int  StringToEnumx(const char* name,bool notfounderror){
+
+   int  stage=1;
+
+   if(stage==1){
+	      if (strcmp(name,"FemModel")==0) return FemModelEnum;
+	      else if (strcmp(name,"ParametersSTART")==0) return ParametersSTARTEnum;
+	      else if (strcmp(name,"AdolcParam")==0) return AdolcParamEnum;
+	      else if (strcmp(name,"FSSolver")==0) return FSSolverEnum;
+	      else if (strcmp(name,"FemModelComm")==0) return FemModelCommEnum;
+	      else if (strcmp(name,"WorldComm")==0) return WorldCommEnum;
+	      else if (strcmp(name,"IcecapToEarthComm")==0) return IcecapToEarthCommEnum;
+	      else if (strcmp(name,"NumModels")==0) return NumModelsEnum;
+	      else if (strcmp(name,"ModelId")==0) return ModelIdEnum;
+	      else if (strcmp(name,"EarthId")==0) return EarthIdEnum;
+	      else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum;
+	      else if (strcmp(name,"AnalysisType")==0) return AnalysisTypeEnum;
+	      else if (strcmp(name,"AnalysisCounter")==0) return AnalysisCounterEnum;
+	      else if (strcmp(name,"ConfigurationType")==0) return ConfigurationTypeEnum;
+	      else if (strcmp(name,"InputToExtrude")==0) return InputToExtrudeEnum;
+	      else if (strcmp(name,"InputToL2Project")==0) return InputToL2ProjectEnum;
+	      else if (strcmp(name,"InputToDepthaverageIn")==0) return InputToDepthaverageInEnum;
+	      else if (strcmp(name,"InputToDepthaverageOut")==0) return InputToDepthaverageOutEnum;
+	      else if (strcmp(name,"InputToSmooth")==0) return InputToSmoothEnum;
+	      else if (strcmp(name,"SmoothThicknessMultiplier")==0) return SmoothThicknessMultiplierEnum;
+	      else if (strcmp(name,"LevelsetStabilization")==0) return LevelsetStabilizationEnum;
+	      else if (strcmp(name,"AutodiffIsautodiff")==0) return AutodiffIsautodiffEnum;
+	      else if (strcmp(name,"AutodiffNumDependents")==0) return AutodiffNumDependentsEnum;
+	      else if (strcmp(name,"AutodiffDependentObjects")==0) return AutodiffDependentObjectsEnum;
+	      else if (strcmp(name,"AutodiffNumIndependents")==0) return AutodiffNumIndependentsEnum;
+	      else if (strcmp(name,"AutodiffJacobian")==0) return AutodiffJacobianEnum;
+	      else if (strcmp(name,"AutodiffXp")==0) return AutodiffXpEnum;
+	      else if (strcmp(name,"AutodiffDriver")==0) return AutodiffDriverEnum;
+	      else if (strcmp(name,"AutodiffFosForwardIndex")==0) return AutodiffFosForwardIndexEnum;
+	      else if (strcmp(name,"AutodiffFovForwardIndices")==0) return AutodiffFovForwardIndicesEnum;
+	      else if (strcmp(name,"AutodiffFosReverseIndex")==0) return AutodiffFosReverseIndexEnum;
+	      else if (strcmp(name,"AutodiffKeep")==0) return AutodiffKeepEnum;
+	      else if (strcmp(name,"AutodiffObufsize")==0) return AutodiffObufsizeEnum;
+	      else if (strcmp(name,"AutodiffLbufsize")==0) return AutodiffLbufsizeEnum;
+	      else if (strcmp(name,"AutodiffCbufsize")==0) return AutodiffCbufsizeEnum;
+	      else if (strcmp(name,"AutodiffTbufsize")==0) return AutodiffTbufsizeEnum;
+	      else if (strcmp(name,"AutodiffGcTriggerRatio")==0) return AutodiffGcTriggerRatioEnum;
+	      else if (strcmp(name,"AutodiffGcTriggerMaxSize")==0) return AutodiffGcTriggerMaxSizeEnum;
+	      else if (strcmp(name,"BalancethicknessStabilization")==0) return BalancethicknessStabilizationEnum;
+	      else if (strcmp(name,"BalancethicknessThickeningRate")==0) return BalancethicknessThickeningRateEnum;
+	      else if (strcmp(name,"Basalforcings")==0) return BasalforcingsEnum;
+	      else if (strcmp(name,"BasalforcingsGeothermalflux")==0) return BasalforcingsGeothermalfluxEnum;
+	      else if (strcmp(name,"BasalforcingsGroundediceMeltingRate")==0) return BasalforcingsGroundediceMeltingRateEnum;
+	      else if (strcmp(name,"BasalforcingsFloatingiceMeltingRate")==0) return BasalforcingsFloatingiceMeltingRateEnum;
+	      else if (strcmp(name,"BasalforcingsDeepwaterMeltingRate")==0) return BasalforcingsDeepwaterMeltingRateEnum;
+	      else if (strcmp(name,"BasalforcingsDeepwaterElevation")==0) return BasalforcingsDeepwaterElevationEnum;
+	      else if (strcmp(name,"BasalforcingsUpperwaterElevation")==0) return BasalforcingsUpperwaterElevationEnum;
+	      else if (strcmp(name,"BasalforcingsMeltrateFactor")==0) return BasalforcingsMeltrateFactorEnum;
+	      else if (strcmp(name,"BasalforcingsThresholdThickness")==0) return BasalforcingsThresholdThicknessEnum;
+	      else if (strcmp(name,"BasalforcingsUpperdepthMelt")==0) return BasalforcingsUpperdepthMeltEnum;
+	      else if (strcmp(name,"BasalforcingsMantleconductivity")==0) return BasalforcingsMantleconductivityEnum;
+	      else if (strcmp(name,"BasalforcingsNusselt")==0) return BasalforcingsNusseltEnum;
+	      else if (strcmp(name,"BasalforcingsDtbg")==0) return BasalforcingsDtbgEnum;
+	      else if (strcmp(name,"BasalforcingsPlumeradius")==0) return BasalforcingsPlumeradiusEnum;
+	      else if (strcmp(name,"BasalforcingsTopplumedepth")==0) return BasalforcingsTopplumedepthEnum;
+	      else if (strcmp(name,"BasalforcingsBottomplumedepth")==0) return BasalforcingsBottomplumedepthEnum;
+	      else if (strcmp(name,"BasalforcingsPlumex")==0) return BasalforcingsPlumexEnum;
+	      else if (strcmp(name,"BasalforcingsPlumey")==0) return BasalforcingsPlumeyEnum;
+	      else if (strcmp(name,"BasalforcingsCrustthickness")==0) return BasalforcingsCrustthicknessEnum;
+	      else if (strcmp(name,"BasalforcingsUppercrustthickness")==0) return BasalforcingsUppercrustthicknessEnum;
+	      else if (strcmp(name,"BasalforcingsUppercrustheat")==0) return BasalforcingsUppercrustheatEnum;
+	      else if (strcmp(name,"BasalforcingsLowercrustheat")==0) return BasalforcingsLowercrustheatEnum;
+	      else if (strcmp(name,"FloatingMeltRate")==0) return FloatingMeltRateEnum;
+	      else if (strcmp(name,"LinearFloatingMeltRate")==0) return LinearFloatingMeltRateEnum;
+	      else if (strcmp(name,"MismipFloatingMeltRate")==0) return MismipFloatingMeltRateEnum;
+	      else if (strcmp(name,"MantlePlumeGeothermalFlux")==0) return MantlePlumeGeothermalFluxEnum;
+	      else if (strcmp(name,"Bed")==0) return BedEnum;
+	      else if (strcmp(name,"Base")==0) return BaseEnum;
+	      else if (strcmp(name,"ConstantsG")==0) return ConstantsGEnum;
+	      else if (strcmp(name,"ConstantsReferencetemperature")==0) return ConstantsReferencetemperatureEnum;
+	      else if (strcmp(name,"ConstantsYts")==0) return ConstantsYtsEnum;
+	      else if (strcmp(name,"DependentObject")==0) return DependentObjectEnum;
+	      else if (strcmp(name,"StressbalanceAbstol")==0) return StressbalanceAbstolEnum;
+	      else if (strcmp(name,"StressbalanceConvergenceNumSteps")==0) return StressbalanceConvergenceNumStepsEnum;
+	      else if (strcmp(name,"StressbalanceIsnewton")==0) return StressbalanceIsnewtonEnum;
+	      else if (strcmp(name,"StressbalanceMaxiter")==0) return StressbalanceMaxiterEnum;
+	      else if (strcmp(name,"StressbalancePenaltyFactor")==0) return StressbalancePenaltyFactorEnum;
+	      else if (strcmp(name,"StressbalanceReltol")==0) return StressbalanceReltolEnum;
+	      else if (strcmp(name,"StressbalanceNumRequestedOutputs")==0) return StressbalanceNumRequestedOutputsEnum;
+	      else if (strcmp(name,"StressbalanceRequestedOutputs")==0) return StressbalanceRequestedOutputsEnum;
+	      else if (strcmp(name,"StressbalanceRestol")==0) return StressbalanceRestolEnum;
+	      else if (strcmp(name,"StressbalanceRiftPenaltyThreshold")==0) return StressbalanceRiftPenaltyThresholdEnum;
+	      else if (strcmp(name,"StressbalanceShelfDampening")==0) return StressbalanceShelfDampeningEnum;
+	      else if (strcmp(name,"StressbalanceFSreconditioning")==0) return StressbalanceFSreconditioningEnum;
+	      else if (strcmp(name,"StressbalanceViscosityOvershoot")==0) return StressbalanceViscosityOvershootEnum;
+	      else if (strcmp(name,"LoadingforceX")==0) return LoadingforceXEnum;
+	      else if (strcmp(name,"LoadingforceY")==0) return LoadingforceYEnum;
+	      else if (strcmp(name,"LoadingforceZ")==0) return LoadingforceZEnum;
+	      else if (strcmp(name,"FlowequationIsSIA")==0) return FlowequationIsSIAEnum;
+	      else if (strcmp(name,"FlowequationIsSSA")==0) return FlowequationIsSSAEnum;
+	      else if (strcmp(name,"FlowequationIsL1L2")==0) return FlowequationIsL1L2Enum;
+	      else if (strcmp(name,"FlowequationIsHO")==0) return FlowequationIsHOEnum;
+	      else if (strcmp(name,"FlowequationIsFS")==0) return FlowequationIsFSEnum;
+	      else if (strcmp(name,"FlowequationFeFS")==0) return FlowequationFeFSEnum;
+	      else if (strcmp(name,"FlowequationBorderFS")==0) return FlowequationBorderFSEnum;
+	      else if (strcmp(name,"FrictionAs")==0) return FrictionAsEnum;
+	      else if (strcmp(name,"FrictionCoefficient")==0) return FrictionCoefficientEnum;
+	      else if (strcmp(name,"FrictionCoefficientcoulomb")==0) return FrictionCoefficientcoulombEnum;
+	      else if (strcmp(name,"FrictionP")==0) return FrictionPEnum;
+	      else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
+	      else if (strcmp(name,"FrictionM")==0) return FrictionMEnum;
+	      else if (strcmp(name,"FrictionC")==0) return FrictionCEnum;
+	      else if (strcmp(name,"FrictionLaw")==0) return FrictionLawEnum;
+	      else if (strcmp(name,"FrictionGamma")==0) return FrictionGammaEnum;
+	      else if (strcmp(name,"FrictionF")==0) return FrictionFEnum;
+	      else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum;
+	      else if (strcmp(name,"FrictionEffectivePressure")==0) return FrictionEffectivePressureEnum;
+	      else if (strcmp(name,"FrictionCoupling")==0) return FrictionCouplingEnum;
+	      else if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum;
+	      else if (strcmp(name,"HydrologyModel")==0) return HydrologyModelEnum;
+	      else if (strcmp(name,"Hydrologyshreve")==0) return HydrologyshreveEnum;
+	      else if (strcmp(name,"HydrologyshreveStabilization")==0) return HydrologyshreveStabilizationEnum;
+	      else if (strcmp(name,"Hydrologydc")==0) return HydrologydcEnum;
+	      else if (strcmp(name,"SedimentHead")==0) return SedimentHeadEnum;
+	      else if (strcmp(name,"SedimentHeadOld")==0) return SedimentHeadOldEnum;
+	      else if (strcmp(name,"SedimentHeadResidual")==0) return SedimentHeadResidualEnum;
+	      else if (strcmp(name,"EffectivePressure")==0) return EffectivePressureEnum;
+	      else if (strcmp(name,"EplHead")==0) return EplHeadEnum;
+	      else if (strcmp(name,"EplHeadOld")==0) return EplHeadOldEnum;
+	      else if (strcmp(name,"EplHeadSlopeX")==0) return EplHeadSlopeXEnum;
+         else stage=2;
+   }
+   if(stage==2){
+	      if (strcmp(name,"EplHeadSlopeY")==0) return EplHeadSlopeYEnum;
+	      else if (strcmp(name,"EplZigZagCounter")==0) return EplZigZagCounterEnum;
+	      else if (strcmp(name,"HydrologydcMaxIter")==0) return HydrologydcMaxIterEnum;
+	      else if (strcmp(name,"HydrologydcRelTol")==0) return HydrologydcRelTolEnum;
+	      else if (strcmp(name,"HydrologydcSedimentCompressibility")==0) return HydrologydcSedimentCompressibilityEnum;
+	      else if (strcmp(name,"HydrologydcSedimentPorosity")==0) return HydrologydcSedimentPorosityEnum;
+	      else if (strcmp(name,"HydrologydcSedimentThickness")==0) return HydrologydcSedimentThicknessEnum;
+	      else if (strcmp(name,"HydrologydcSedimentTransmitivity")==0) return HydrologydcSedimentTransmitivityEnum;
+	      else if (strcmp(name,"HydrologydcWaterCompressibility")==0) return HydrologydcWaterCompressibilityEnum;
+	      else if (strcmp(name,"HydrologydcMaskEplactiveNode")==0) return HydrologydcMaskEplactiveNodeEnum;
+	      else if (strcmp(name,"HydrologydcMaskEplactiveElt")==0) return HydrologydcMaskEplactiveEltEnum;
+	      else if (strcmp(name,"HydrologydcEplCompressibility")==0) return HydrologydcEplCompressibilityEnum;
+	      else if (strcmp(name,"HydrologydcEplPorosity")==0) return HydrologydcEplPorosityEnum;
+	      else if (strcmp(name,"HydrologydcEplInitialThickness")==0) return HydrologydcEplInitialThicknessEnum;
+	      else if (strcmp(name,"HydrologydcEplColapseThickness")==0) return HydrologydcEplColapseThicknessEnum;
+	      else if (strcmp(name,"HydrologydcEplMaxThickness")==0) return HydrologydcEplMaxThicknessEnum;
+	      else if (strcmp(name,"HydrologydcEplThickness")==0) return HydrologydcEplThicknessEnum;
+	      else if (strcmp(name,"HydrologydcEplThicknessOld")==0) return HydrologydcEplThicknessOldEnum;
+	      else if (strcmp(name,"HydrologydcEplThickComp")==0) return HydrologydcEplThickCompEnum;
+	      else if (strcmp(name,"HydrologydcEplConductivity")==0) return HydrologydcEplConductivityEnum;
+	      else if (strcmp(name,"HydrologydcIsefficientlayer")==0) return HydrologydcIsefficientlayerEnum;
+	      else if (strcmp(name,"HydrologydcSedimentlimitFlag")==0) return HydrologydcSedimentlimitFlagEnum;
+	      else if (strcmp(name,"HydrologydcSedimentlimit")==0) return HydrologydcSedimentlimitEnum;
+	      else if (strcmp(name,"HydrologydcTransferFlag")==0) return HydrologydcTransferFlagEnum;
+	      else if (strcmp(name,"HydrologydcLeakageFactor")==0) return HydrologydcLeakageFactorEnum;
+	      else if (strcmp(name,"HydrologydcPenaltyFactor")==0) return HydrologydcPenaltyFactorEnum;
+	      else if (strcmp(name,"HydrologydcPenaltyLock")==0) return HydrologydcPenaltyLockEnum;
+	      else if (strcmp(name,"HydrologydcEplflipLock")==0) return HydrologydcEplflipLockEnum;
+	      else if (strcmp(name,"HydrologydcBasalMoulinInput")==0) return HydrologydcBasalMoulinInputEnum;
+	      else if (strcmp(name,"HydrologyLayer")==0) return HydrologyLayerEnum;
+	      else if (strcmp(name,"HydrologySediment")==0) return HydrologySedimentEnum;
+	      else if (strcmp(name,"HydrologyEfficient")==0) return HydrologyEfficientEnum;
+	      else if (strcmp(name,"HydrologySedimentKmax")==0) return HydrologySedimentKmaxEnum;
+	      else if (strcmp(name,"Hydrologysommers")==0) return HydrologysommersEnum;
+	      else if (strcmp(name,"HydrologyHead")==0) return HydrologyHeadEnum;
+	      else if (strcmp(name,"HydrologyHeadOld")==0) return HydrologyHeadOldEnum;
+	      else if (strcmp(name,"HydrologyGapHeight")==0) return HydrologyGapHeightEnum;
+	      else if (strcmp(name,"HydrologyBumpSpacing")==0) return HydrologyBumpSpacingEnum;
+	      else if (strcmp(name,"HydrologyBumpHeight")==0) return HydrologyBumpHeightEnum;
+	      else if (strcmp(name,"HydrologyEnglacialInput")==0) return HydrologyEnglacialInputEnum;
+	      else if (strcmp(name,"HydrologyMoulinInput")==0) return HydrologyMoulinInputEnum;
+	      else if (strcmp(name,"HydrologyReynolds")==0) return HydrologyReynoldsEnum;
+	      else if (strcmp(name,"HydrologyNeumannflux")==0) return HydrologyNeumannfluxEnum;
+	      else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum;
+	      else if (strcmp(name,"InversionControlScalingFactors")==0) return InversionControlScalingFactorsEnum;
+	      else if (strcmp(name,"InversionCostFunctionThreshold")==0) return InversionCostFunctionThresholdEnum;
+	      else if (strcmp(name,"InversionCostFunctionsCoefficients")==0) return InversionCostFunctionsCoefficientsEnum;
+	      else if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum;
+	      else if (strcmp(name,"InversionGradientScaling")==0) return InversionGradientScalingEnum;
+	      else if (strcmp(name,"InversionIscontrol")==0) return InversionIscontrolEnum;
+	      else if (strcmp(name,"InversionType")==0) return InversionTypeEnum;
+	      else if (strcmp(name,"InversionIncompleteAdjoint")==0) return InversionIncompleteAdjointEnum;
+	      else if (strcmp(name,"InversionMaxiterPerStep")==0) return InversionMaxiterPerStepEnum;
+	      else if (strcmp(name,"InversionMaxiter")==0) return InversionMaxiterEnum;
+	      else if (strcmp(name,"InversionMaxsteps")==0) return InversionMaxstepsEnum;
+	      else if (strcmp(name,"InversionFatol")==0) return InversionFatolEnum;
+	      else if (strcmp(name,"InversionFrtol")==0) return InversionFrtolEnum;
+	      else if (strcmp(name,"InversionGatol")==0) return InversionGatolEnum;
+	      else if (strcmp(name,"InversionGrtol")==0) return InversionGrtolEnum;
+	      else if (strcmp(name,"InversionGttol")==0) return InversionGttolEnum;
+	      else if (strcmp(name,"InversionAlgorithm")==0) return InversionAlgorithmEnum;
+	      else if (strcmp(name,"InversionNsteps")==0) return InversionNstepsEnum;
+	      else if (strcmp(name,"InversionDxmin")==0) return InversionDxminEnum;
+	      else if (strcmp(name,"InversionNumControlParameters")==0) return InversionNumControlParametersEnum;
+	      else if (strcmp(name,"InversionNumCostFunctions")==0) return InversionNumCostFunctionsEnum;
+	      else if (strcmp(name,"InversionStepThreshold")==0) return InversionStepThresholdEnum;
+	      else if (strcmp(name,"InversionThicknessObs")==0) return InversionThicknessObsEnum;
+	      else if (strcmp(name,"InversionSurfaceObs")==0) return InversionSurfaceObsEnum;
+	      else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum;
+	      else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum;
+	      else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
+	      else if (strcmp(name,"MaskIceLevelset")==0) return MaskIceLevelsetEnum;
+	      else if (strcmp(name,"MaskOceanLevelset")==0) return MaskOceanLevelsetEnum;
+	      else if (strcmp(name,"MaskLandLevelset")==0) return MaskLandLevelsetEnum;
+	      else if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum;
+	      else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum;
+	      else if (strcmp(name,"MaterialsLatentheat")==0) return MaterialsLatentheatEnum;
+	      else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum;
+	      else if (strcmp(name,"MaterialsMixedLayerCapacity")==0) return MaterialsMixedLayerCapacityEnum;
+	      else if (strcmp(name,"MaterialsRheologyB")==0) return MaterialsRheologyBEnum;
+	      else if (strcmp(name,"MaterialsRheologyBbar")==0) return MaterialsRheologyBbarEnum;
+	      else if (strcmp(name,"MaterialsRheologyLaw")==0) return MaterialsRheologyLawEnum;
+	      else if (strcmp(name,"MaterialsRheologyN")==0) return MaterialsRheologyNEnum;
+	      else if (strcmp(name,"MaterialsRheologyKo")==0) return MaterialsRheologyKoEnum;
+	      else if (strcmp(name,"MaterialsRheologyKobar")==0) return MaterialsRheologyKobarEnum;
+	      else if (strcmp(name,"MaterialsRheologyEc")==0) return MaterialsRheologyEcEnum;
+	      else if (strcmp(name,"MaterialsRheologyEcbar")==0) return MaterialsRheologyEcbarEnum;
+	      else if (strcmp(name,"MaterialsRheologyEs")==0) return MaterialsRheologyEsEnum;
+	      else if (strcmp(name,"MaterialsRheologyEsbar")==0) return MaterialsRheologyEsbarEnum;
+	      else if (strcmp(name,"DamageD")==0) return DamageDEnum;
+	      else if (strcmp(name,"DamageF")==0) return DamageFEnum;
+	      else if (strcmp(name,"DamageDbar")==0) return DamageDbarEnum;
+	      else if (strcmp(name,"DamageLaw")==0) return DamageLawEnum;
+	      else if (strcmp(name,"DamageC1")==0) return DamageC1Enum;
+	      else if (strcmp(name,"DamageC2")==0) return DamageC2Enum;
+	      else if (strcmp(name,"DamageC3")==0) return DamageC3Enum;
+	      else if (strcmp(name,"DamageC4")==0) return DamageC4Enum;
+	      else if (strcmp(name,"DamageElementinterp")==0) return DamageElementinterpEnum;
+	      else if (strcmp(name,"DamageHealing")==0) return DamageHealingEnum;
+	      else if (strcmp(name,"DamageStressThreshold")==0) return DamageStressThresholdEnum;
+	      else if (strcmp(name,"DamageKappa")==0) return DamageKappaEnum;
+	      else if (strcmp(name,"DamageStabilization")==0) return DamageStabilizationEnum;
+	      else if (strcmp(name,"DamageMaxiter")==0) return DamageMaxiterEnum;
+	      else if (strcmp(name,"DamageMaxDamage")==0) return DamageMaxDamageEnum;
+	      else if (strcmp(name,"DamageEquivStress")==0) return DamageEquivStressEnum;
+	      else if (strcmp(name,"DamageEvolutionNumRequestedOutputs")==0) return DamageEvolutionNumRequestedOutputsEnum;
+	      else if (strcmp(name,"DamageEvolutionRequestedOutputs")==0) return DamageEvolutionRequestedOutputsEnum;
+	      else if (strcmp(name,"Damage")==0) return DamageEnum;
+	      else if (strcmp(name,"NewDamage")==0) return NewDamageEnum;
+	      else if (strcmp(name,"StressIntensityFactor")==0) return StressIntensityFactorEnum;
+	      else if (strcmp(name,"CalvingLaw")==0) return CalvingLawEnum;
+	      else if (strcmp(name,"CalvingCalvingrate")==0) return CalvingCalvingrateEnum;
+	      else if (strcmp(name,"CalvingMeltingrate")==0) return CalvingMeltingrateEnum;
+	      else if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum;
+	      else if (strcmp(name,"CalvingDev")==0) return CalvingDevEnum;
+	      else if (strcmp(name,"CalvingMinthickness")==0) return CalvingMinthicknessEnum;
+	      else if (strcmp(name,"DefaultCalving")==0) return DefaultCalvingEnum;
+	      else if (strcmp(name,"CalvinglevermannCoeff")==0) return CalvinglevermannCoeffEnum;
+	      else if (strcmp(name,"CalvinglevermannMeltingrate")==0) return CalvinglevermannMeltingrateEnum;
+	      else if (strcmp(name,"CalvingdevCoeff")==0) return CalvingdevCoeffEnum;
+         else stage=3;
+   }
+   if(stage==3){
+	      if (strcmp(name,"Calvingratex")==0) return CalvingratexEnum;
+	      else if (strcmp(name,"Calvingratey")==0) return CalvingrateyEnum;
+	      else if (strcmp(name,"CalvingratexAverage")==0) return CalvingratexAverageEnum;
+	      else if (strcmp(name,"CalvingrateyAverage")==0) return CalvingrateyAverageEnum;
+	      else if (strcmp(name,"StrainRateparallel")==0) return StrainRateparallelEnum;
+	      else if (strcmp(name,"StrainRateperpendicular")==0) return StrainRateperpendicularEnum;
+	      else if (strcmp(name,"StrainRateeffective")==0) return StrainRateeffectiveEnum;
+	      else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum;
+	      else if (strcmp(name,"MaterialsRhoSeawater")==0) return MaterialsRhoSeawaterEnum;
+	      else if (strcmp(name,"MaterialsRhoFreshwater")==0) return MaterialsRhoFreshwaterEnum;
+	      else if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum;
+	      else if (strcmp(name,"MaterialsThermalExchangeVelocity")==0) return MaterialsThermalExchangeVelocityEnum;
+	      else if (strcmp(name,"MaterialsThermalconductivity")==0) return MaterialsThermalconductivityEnum;
+	      else if (strcmp(name,"MaterialsTemperateiceconductivity")==0) return MaterialsTemperateiceconductivityEnum;
+	      else if (strcmp(name,"MaterialsLithosphereShearModulus")==0) return MaterialsLithosphereShearModulusEnum;
+	      else if (strcmp(name,"MaterialsLithosphereDensity")==0) return MaterialsLithosphereDensityEnum;
+	      else if (strcmp(name,"MaterialsMantleShearModulus")==0) return MaterialsMantleShearModulusEnum;
+	      else if (strcmp(name,"MaterialsMantleDensity")==0) return MaterialsMantleDensityEnum;
+	      else if (strcmp(name,"MaterialsEarthDensity")==0) return MaterialsEarthDensityEnum;
+	      else if (strcmp(name,"MeshAverageVertexConnectivity")==0) return MeshAverageVertexConnectivityEnum;
+	      else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum;
+	      else if (strcmp(name,"MeshNumberofelements")==0) return MeshNumberofelementsEnum;
+	      else if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum;
+	      else if (strcmp(name,"MeshNumberofvertices")==0) return MeshNumberofverticesEnum;
+	      else if (strcmp(name,"MeshVertexonbase")==0) return MeshVertexonbaseEnum;
+	      else if (strcmp(name,"MeshVertexonsurface")==0) return MeshVertexonsurfaceEnum;
+	      else if (strcmp(name,"MeshVertexonboundary")==0) return MeshVertexonboundaryEnum;
+	      else if (strcmp(name,"MeshElementtype")==0) return MeshElementtypeEnum;
+	      else if (strcmp(name,"DomainType")==0) return DomainTypeEnum;
+	      else if (strcmp(name,"DomainDimension")==0) return DomainDimensionEnum;
+	      else if (strcmp(name,"Domain2Dhorizontal")==0) return Domain2DhorizontalEnum;
+	      else if (strcmp(name,"Domain2Dvertical")==0) return Domain2DverticalEnum;
+	      else if (strcmp(name,"Domain3D")==0) return Domain3DEnum;
+	      else if (strcmp(name,"Domain3Dsurface")==0) return Domain3DsurfaceEnum;
+	      else if (strcmp(name,"MasstransportHydrostaticAdjustment")==0) return MasstransportHydrostaticAdjustmentEnum;
+	      else if (strcmp(name,"MasstransportIsfreesurface")==0) return MasstransportIsfreesurfaceEnum;
+	      else if (strcmp(name,"MasstransportMinThickness")==0) return MasstransportMinThicknessEnum;
+	      else if (strcmp(name,"MasstransportPenaltyFactor")==0) return MasstransportPenaltyFactorEnum;
+	      else if (strcmp(name,"MasstransportSpcthickness")==0) return MasstransportSpcthicknessEnum;
+	      else if (strcmp(name,"MasstransportStabilization")==0) return MasstransportStabilizationEnum;
+	      else if (strcmp(name,"MasstransportNumRequestedOutputs")==0) return MasstransportNumRequestedOutputsEnum;
+	      else if (strcmp(name,"MasstransportRequestedOutputs")==0) return MasstransportRequestedOutputsEnum;
+	      else if (strcmp(name,"QmuIsdakota")==0) return QmuIsdakotaEnum;
+	      else if (strcmp(name,"MassFluxSegments")==0) return MassFluxSegmentsEnum;
+	      else if (strcmp(name,"MassFluxSegmentsPresent")==0) return MassFluxSegmentsPresentEnum;
+	      else if (strcmp(name,"QmuNumberofpartitions")==0) return QmuNumberofpartitionsEnum;
+	      else if (strcmp(name,"QmuNumberofresponses")==0) return QmuNumberofresponsesEnum;
+	      else if (strcmp(name,"QmuPartition")==0) return QmuPartitionEnum;
+	      else if (strcmp(name,"QmuResponsedescriptors")==0) return QmuResponsedescriptorsEnum;
+	      else if (strcmp(name,"QmuVariabledescriptors")==0) return QmuVariabledescriptorsEnum;
+	      else if (strcmp(name,"SettingsResultsOnNodes")==0) return SettingsResultsOnNodesEnum;
+	      else if (strcmp(name,"SettingsIoGather")==0) return SettingsIoGatherEnum;
+	      else if (strcmp(name,"SettingsLowmem")==0) return SettingsLowmemEnum;
+	      else if (strcmp(name,"SettingsOutputFrequency")==0) return SettingsOutputFrequencyEnum;
+	      else if (strcmp(name,"SettingsRecordingFrequency")==0) return SettingsRecordingFrequencyEnum;
+	      else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum;
+	      else if (strcmp(name,"DebugProfiling")==0) return DebugProfilingEnum;
+	      else if (strcmp(name,"ProfilingCurrentMem")==0) return ProfilingCurrentMemEnum;
+	      else if (strcmp(name,"ProfilingCurrentFlops")==0) return ProfilingCurrentFlopsEnum;
+	      else if (strcmp(name,"ProfilingSolutionTime")==0) return ProfilingSolutionTimeEnum;
+	      else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum;
+	      else if (strcmp(name,"SteadystateNumRequestedOutputs")==0) return SteadystateNumRequestedOutputsEnum;
+	      else if (strcmp(name,"SteadystateReltol")==0) return SteadystateReltolEnum;
+	      else if (strcmp(name,"SteadystateRequestedOutputs")==0) return SteadystateRequestedOutputsEnum;
+	      else if (strcmp(name,"Surface")==0) return SurfaceEnum;
+	      else if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum;
+	      else if (strcmp(name,"ThermalIsdynamicbasalspc")==0) return ThermalIsdynamicbasalspcEnum;
+	      else if (strcmp(name,"ThermalReltol")==0) return ThermalReltolEnum;
+	      else if (strcmp(name,"ThermalMaxiter")==0) return ThermalMaxiterEnum;
+	      else if (strcmp(name,"ThermalPenaltyFactor")==0) return ThermalPenaltyFactorEnum;
+	      else if (strcmp(name,"ThermalPenaltyLock")==0) return ThermalPenaltyLockEnum;
+	      else if (strcmp(name,"ThermalPenaltyThreshold")==0) return ThermalPenaltyThresholdEnum;
+	      else if (strcmp(name,"ThermalSpctemperature")==0) return ThermalSpctemperatureEnum;
+	      else if (strcmp(name,"ThermalStabilization")==0) return ThermalStabilizationEnum;
+	      else if (strcmp(name,"ThermalNumRequestedOutputs")==0) return ThermalNumRequestedOutputsEnum;
+	      else if (strcmp(name,"ThermalRequestedOutputs")==0) return ThermalRequestedOutputsEnum;
+	      else if (strcmp(name,"GiaMantleViscosity")==0) return GiaMantleViscosityEnum;
+	      else if (strcmp(name,"GiaLithosphereThickness")==0) return GiaLithosphereThicknessEnum;
+	      else if (strcmp(name,"Thickness")==0) return ThicknessEnum;
+	      else if (strcmp(name,"TimesteppingStartTime")==0) return TimesteppingStartTimeEnum;
+	      else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum;
+	      else if (strcmp(name,"TimesteppingCflCoefficient")==0) return TimesteppingCflCoefficientEnum;
+	      else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum;
+	      else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum;
+	      else if (strcmp(name,"TimesteppingInterpForcings")==0) return TimesteppingInterpForcingsEnum;
+	      else if (strcmp(name,"TransientIssmb")==0) return TransientIssmbEnum;
+	      else if (strcmp(name,"TransientIscoupler")==0) return TransientIscouplerEnum;
+	      else if (strcmp(name,"TransientIsstressbalance")==0) return TransientIsstressbalanceEnum;
+	      else if (strcmp(name,"TransientIsgroundingline")==0) return TransientIsgroundinglineEnum;
+	      else if (strcmp(name,"TransientIsmasstransport")==0) return TransientIsmasstransportEnum;
+	      else if (strcmp(name,"TransientIsthermal")==0) return TransientIsthermalEnum;
+	      else if (strcmp(name,"TransientIsgia")==0) return TransientIsgiaEnum;
+	      else if (strcmp(name,"TransientIsdamageevolution")==0) return TransientIsdamageevolutionEnum;
+	      else if (strcmp(name,"TransientIshydrology")==0) return TransientIshydrologyEnum;
+	      else if (strcmp(name,"TransientIsmovingfront")==0) return TransientIsmovingfrontEnum;
+	      else if (strcmp(name,"TransientIsslr")==0) return TransientIsslrEnum;
+	      else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum;
+	      else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;
+	      else if (strcmp(name,"BalancethicknessApparentMassbalance")==0) return BalancethicknessApparentMassbalanceEnum;
+	      else if (strcmp(name,"BalancethicknessDiffusionCoefficient")==0) return BalancethicknessDiffusionCoefficientEnum;
+	      else if (strcmp(name,"BalancethicknessOmega")==0) return BalancethicknessOmegaEnum;
+	      else if (strcmp(name,"BalancethicknessD0")==0) return BalancethicknessD0Enum;
+	      else if (strcmp(name,"Smb")==0) return SmbEnum;
+	      else if (strcmp(name,"SmbAnalysis")==0) return SmbAnalysisEnum;
+	      else if (strcmp(name,"SmbSolution")==0) return SmbSolutionEnum;
+	      else if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum;
+	      else if (strcmp(name,"SmbRequestedOutputs")==0) return SmbRequestedOutputsEnum;
+	      else if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;
+	      else if (strcmp(name,"SmbDzini")==0) return SmbDziniEnum;
+	      else if (strcmp(name,"SmbDini")==0) return SmbDiniEnum;
+	      else if (strcmp(name,"SmbReini")==0) return SmbReiniEnum;
+	      else if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum;
+	      else if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum;
+	      else if (strcmp(name,"SmbECini")==0) return SmbECiniEnum;
+	      else if (strcmp(name,"SmbWini")==0) return SmbWiniEnum;
+	      else if (strcmp(name,"SmbAini")==0) return SmbAiniEnum;
+	      else if (strcmp(name,"SmbTini")==0) return SmbTiniEnum;
+	      else if (strcmp(name,"SmbSizeini")==0) return SmbSizeiniEnum;
+	      else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum;
+	      else if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum;
+         else stage=4;
+   }
+   if(stage==4){
+	      if (strcmp(name,"SMBgemb")==0) return SMBgembEnum;
+	      else if (strcmp(name,"SmbInitDensityScaling")==0) return SmbInitDensityScalingEnum;
+	      else if (strcmp(name,"SmbTa")==0) return SmbTaEnum;
+	      else if (strcmp(name,"SmbV")==0) return SmbVEnum;
+	      else if (strcmp(name,"SmbDswrf")==0) return SmbDswrfEnum;
+	      else if (strcmp(name,"SmbDlwrf")==0) return SmbDlwrfEnum;
+	      else if (strcmp(name,"SmbP")==0) return SmbPEnum;
+	      else if (strcmp(name,"SmbEAir")==0) return SmbEAirEnum;
+	      else if (strcmp(name,"SmbPAir")==0) return SmbPAirEnum;
+	      else if (strcmp(name,"SmbTmean")==0) return SmbTmeanEnum;
+	      else if (strcmp(name,"SmbC")==0) return SmbCEnum;
+	      else if (strcmp(name,"SmbTz")==0) return SmbTzEnum;
+	      else if (strcmp(name,"SmbVz")==0) return SmbVzEnum;
+	      else if (strcmp(name,"SmbDt")==0) return SmbDtEnum;
+	      else if (strcmp(name,"SmbDz")==0) return SmbDzEnum;
+	      else if (strcmp(name,"SmbAIdx")==0) return SmbAIdxEnum;
+	      else if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum;
+	      else if (strcmp(name,"SmbDenIdx")==0) return SmbDenIdxEnum;
+	      else if (strcmp(name,"SmbZTop")==0) return SmbZTopEnum;
+	      else if (strcmp(name,"SmbDzTop")==0) return SmbDzTopEnum;
+	      else if (strcmp(name,"SmbDzMin")==0) return SmbDzMinEnum;
+	      else if (strcmp(name,"SmbZY")==0) return SmbZYEnum;
+	      else if (strcmp(name,"SmbZMax")==0) return SmbZMaxEnum;
+	      else if (strcmp(name,"SmbZMin")==0) return SmbZMinEnum;
+	      else if (strcmp(name,"SmbOutputFreq")==0) return SmbOutputFreqEnum;
+	      else if (strcmp(name,"SmbASnow")==0) return SmbASnowEnum;
+	      else if (strcmp(name,"SmbAIce")==0) return SmbAIceEnum;
+	      else if (strcmp(name,"SmbCldFrac")==0) return SmbCldFracEnum;
+	      else if (strcmp(name,"SmbT0wet")==0) return SmbT0wetEnum;
+	      else if (strcmp(name,"SmbT0dry")==0) return SmbT0dryEnum;
+	      else if (strcmp(name,"SmbK")==0) return SmbKEnum;
+	      else if (strcmp(name,"SmbD")==0) return SmbDEnum;
+	      else if (strcmp(name,"SmbRe")==0) return SmbReEnum;
+	      else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum;
+	      else if (strcmp(name,"SmbGsp")==0) return SmbGspEnum;
+	      else if (strcmp(name,"SmbEC")==0) return SmbECEnum;
+	      else if (strcmp(name,"SmbW")==0) return SmbWEnum;
+	      else if (strcmp(name,"SmbA")==0) return SmbAEnum;
+	      else if (strcmp(name,"SmbT")==0) return SmbTEnum;
+	      else if (strcmp(name,"SmbIsgraingrowth")==0) return SmbIsgraingrowthEnum;
+	      else if (strcmp(name,"SmbIsalbedo")==0) return SmbIsalbedoEnum;
+	      else if (strcmp(name,"SmbIsshortwave")==0) return SmbIsshortwaveEnum;
+	      else if (strcmp(name,"SmbIsthermal")==0) return SmbIsthermalEnum;
+	      else if (strcmp(name,"SmbIsaccumulation")==0) return SmbIsaccumulationEnum;
+	      else if (strcmp(name,"SmbIsmelt")==0) return SmbIsmeltEnum;
+	      else if (strcmp(name,"SmbIsdensification")==0) return SmbIsdensificationEnum;
+	      else if (strcmp(name,"SmbIsturbulentflux")==0) return SmbIsturbulentfluxEnum;
+	      else if (strcmp(name,"SmbDz_add")==0) return SmbDz_addEnum;
+	      else if (strcmp(name,"SmbM_add")==0) return SmbM_addEnum;
+	      else if (strcmp(name,"SMBpdd")==0) return SMBpddEnum;
+	      else if (strcmp(name,"SmbDelta18o")==0) return SmbDelta18oEnum;
+	      else if (strcmp(name,"SmbDelta18oSurface")==0) return SmbDelta18oSurfaceEnum;
+	      else if (strcmp(name,"SmbIsdelta18o")==0) return SmbIsdelta18oEnum;
+	      else if (strcmp(name,"SmbIsmungsm")==0) return SmbIsmungsmEnum;
+	      else if (strcmp(name,"SmbIsd18opd")==0) return SmbIsd18opdEnum;
+	      else if (strcmp(name,"SmbPrecipitationsPresentday")==0) return SmbPrecipitationsPresentdayEnum;
+	      else if (strcmp(name,"SmbPrecipitationsLgm")==0) return SmbPrecipitationsLgmEnum;
+	      else if (strcmp(name,"SmbTemperaturesPresentday")==0) return SmbTemperaturesPresentdayEnum;
+	      else if (strcmp(name,"SmbTemperaturesLgm")==0) return SmbTemperaturesLgmEnum;
+	      else if (strcmp(name,"SmbPrecipitation")==0) return SmbPrecipitationEnum;
+	      else if (strcmp(name,"SmbDesfac")==0) return SmbDesfacEnum;
+	      else if (strcmp(name,"SmbS0p")==0) return SmbS0pEnum;
+	      else if (strcmp(name,"SmbS0t")==0) return SmbS0tEnum;
+	      else if (strcmp(name,"SmbRlaps")==0) return SmbRlapsEnum;
+	      else if (strcmp(name,"SmbRlapslgm")==0) return SmbRlapslgmEnum;
+	      else if (strcmp(name,"SmbPfac")==0) return SmbPfacEnum;
+	      else if (strcmp(name,"SmbTdiff")==0) return SmbTdiffEnum;
+	      else if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum;
+	      else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum;
+	      else if (strcmp(name,"SmbDpermil")==0) return SmbDpermilEnum;
+	      else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum;
+	      else if (strcmp(name,"SmbMonthlytemperatures")==0) return SmbMonthlytemperaturesEnum;
+	      else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum;
+	      else if (strcmp(name,"SmbSmbref")==0) return SmbSmbrefEnum;
+	      else if (strcmp(name,"SmbBPos")==0) return SmbBPosEnum;
+	      else if (strcmp(name,"SmbBNeg")==0) return SmbBNegEnum;
+	      else if (strcmp(name,"SMBhenning")==0) return SMBhenningEnum;
+	      else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum;
+	      else if (strcmp(name,"SmbAccumulation")==0) return SmbAccumulationEnum;
+	      else if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum;
+	      else if (strcmp(name,"SmbRunoff")==0) return SmbRunoffEnum;
+	      else if (strcmp(name,"SMBmeltcomponents")==0) return SMBmeltcomponentsEnum;
+	      else if (strcmp(name,"SmbMelt")==0) return SmbMeltEnum;
+	      else if (strcmp(name,"SmbRefreeze")==0) return SmbRefreezeEnum;
+	      else if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum;
+	      else if (strcmp(name,"Adjointp")==0) return AdjointpEnum;
+	      else if (strcmp(name,"Adjointx")==0) return AdjointxEnum;
+	      else if (strcmp(name,"Adjointy")==0) return AdjointyEnum;
+	      else if (strcmp(name,"Adjointz")==0) return AdjointzEnum;
+	      else if (strcmp(name,"BalancethicknessMisfit")==0) return BalancethicknessMisfitEnum;
+	      else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum;
+	      else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum;
+	      else if (strcmp(name,"Boundary")==0) return BoundaryEnum;
+	      else if (strcmp(name,"Converged")==0) return ConvergedEnum;
+	      else if (strcmp(name,"Internal")==0) return InternalEnum;
+	      else if (strcmp(name,"MassFlux")==0) return MassFluxEnum;
+	      else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;
+	      else if (strcmp(name,"Misfit")==0) return MisfitEnum;
+	      else if (strcmp(name,"Pressure")==0) return PressureEnum;
+	      else if (strcmp(name,"PressurePicard")==0) return PressurePicardEnum;
+	      else if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum;
+	      else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum;
+	      else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
+	      else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
+	      else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
+	      else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum;
+	      else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum;
+	      else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum;
+	      else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum;
+	      else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum;
+	      else if (strcmp(name,"Temperature")==0) return TemperatureEnum;
+	      else if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum;
+	      else if (strcmp(name,"TemperaturePDD")==0) return TemperaturePDDEnum;
+	      else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum;
+	      else if (strcmp(name,"SurfaceAbsMisfit")==0) return SurfaceAbsMisfitEnum;
+	      else if (strcmp(name,"Vel")==0) return VelEnum;
+	      else if (strcmp(name,"Velocity")==0) return VelocityEnum;
+	      else if (strcmp(name,"VxAverage")==0) return VxAverageEnum;
+	      else if (strcmp(name,"Vx")==0) return VxEnum;
+	      else if (strcmp(name,"VxPicard")==0) return VxPicardEnum;
+         else stage=5;
+   }
+   if(stage==5){
+	      if (strcmp(name,"VyAverage")==0) return VyAverageEnum;
+	      else if (strcmp(name,"Vy")==0) return VyEnum;
+	      else if (strcmp(name,"VyPicard")==0) return VyPicardEnum;
+	      else if (strcmp(name,"Vz")==0) return VzEnum;
+	      else if (strcmp(name,"VzSSA")==0) return VzSSAEnum;
+	      else if (strcmp(name,"VzHO")==0) return VzHOEnum;
+	      else if (strcmp(name,"VzPicard")==0) return VzPicardEnum;
+	      else if (strcmp(name,"VzFS")==0) return VzFSEnum;
+	      else if (strcmp(name,"VxMesh")==0) return VxMeshEnum;
+	      else if (strcmp(name,"VyMesh")==0) return VyMeshEnum;
+	      else if (strcmp(name,"VzMesh")==0) return VzMeshEnum;
+	      else if (strcmp(name,"Enthalpy")==0) return EnthalpyEnum;
+	      else if (strcmp(name,"EnthalpyPicard")==0) return EnthalpyPicardEnum;
+	      else if (strcmp(name,"ThicknessAbsGradient")==0) return ThicknessAbsGradientEnum;
+	      else if (strcmp(name,"ThicknessAlongGradient")==0) return ThicknessAlongGradientEnum;
+	      else if (strcmp(name,"ThicknessAcrossGradient")==0) return ThicknessAcrossGradientEnum;
+	      else if (strcmp(name,"ThicknessPositive")==0) return ThicknessPositiveEnum;
+	      else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum;
+	      else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
+	      else if (strcmp(name,"RheologyBAbsGradient")==0) return RheologyBAbsGradientEnum;
+	      else if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum;
+	      else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
+	      else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
+	      else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
+	      else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum;
+	      else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;
+	      else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
+	      else if (strcmp(name,"DrivingStressX")==0) return DrivingStressXEnum;
+	      else if (strcmp(name,"DrivingStressY")==0) return DrivingStressYEnum;
+	      else if (strcmp(name,"SigmaNN")==0) return SigmaNNEnum;
+	      else if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
+	      else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum;
+	      else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum;
+	      else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum;
+	      else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
+	      else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;
+	      else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum;
+	      else if (strcmp(name,"StressMaxPrincipal")==0) return StressMaxPrincipalEnum;
+	      else if (strcmp(name,"DeviatoricStress")==0) return DeviatoricStressEnum;
+	      else if (strcmp(name,"DeviatoricStressxx")==0) return DeviatoricStressxxEnum;
+	      else if (strcmp(name,"DeviatoricStressxy")==0) return DeviatoricStressxyEnum;
+	      else if (strcmp(name,"DeviatoricStressxz")==0) return DeviatoricStressxzEnum;
+	      else if (strcmp(name,"DeviatoricStressyy")==0) return DeviatoricStressyyEnum;
+	      else if (strcmp(name,"DeviatoricStressyz")==0) return DeviatoricStressyzEnum;
+	      else if (strcmp(name,"DeviatoricStresszz")==0) return DeviatoricStresszzEnum;
+	      else if (strcmp(name,"DeviatoricStresseffective")==0) return DeviatoricStresseffectiveEnum;
+	      else if (strcmp(name,"LambdaS")==0) return LambdaSEnum;
+	      else if (strcmp(name,"StrainRate")==0) return StrainRateEnum;
+	      else if (strcmp(name,"StrainRatexx")==0) return StrainRatexxEnum;
+	      else if (strcmp(name,"StrainRatexy")==0) return StrainRatexyEnum;
+	      else if (strcmp(name,"StrainRatexz")==0) return StrainRatexzEnum;
+	      else if (strcmp(name,"StrainRateyy")==0) return StrainRateyyEnum;
+	      else if (strcmp(name,"StrainRateyz")==0) return StrainRateyzEnum;
+	      else if (strcmp(name,"StrainRatezz")==0) return StrainRatezzEnum;
+	      else if (strcmp(name,"Divergence")==0) return DivergenceEnum;
+	      else if (strcmp(name,"MaxDivergence")==0) return MaxDivergenceEnum;
+	      else if (strcmp(name,"GiaCrossSectionShape")==0) return GiaCrossSectionShapeEnum;
+	      else if (strcmp(name,"GiadWdt")==0) return GiadWdtEnum;
+	      else if (strcmp(name,"GiaW")==0) return GiaWEnum;
+	      else if (strcmp(name,"SaveResults")==0) return SaveResultsEnum;
+	      else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum;
+	      else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum;
+	      else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum;
+	      else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum;
+	      else if (strcmp(name,"J")==0) return JEnum;
+	      else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum;
+	      else if (strcmp(name,"Step")==0) return StepEnum;
+	      else if (strcmp(name,"Time")==0) return TimeEnum;
+	      else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum;
+	      else if (strcmp(name,"SurfaceObservation")==0) return SurfaceObservationEnum;
+	      else if (strcmp(name,"WeightsSurfaceObservation")==0) return WeightsSurfaceObservationEnum;
+	      else if (strcmp(name,"Outputdefinition")==0) return OutputdefinitionEnum;
+	      else if (strcmp(name,"Outputdefinition1")==0) return Outputdefinition1Enum;
+	      else if (strcmp(name,"Outputdefinition2")==0) return Outputdefinition2Enum;
+	      else if (strcmp(name,"Outputdefinition3")==0) return Outputdefinition3Enum;
+	      else if (strcmp(name,"Outputdefinition4")==0) return Outputdefinition4Enum;
+	      else if (strcmp(name,"Outputdefinition5")==0) return Outputdefinition5Enum;
+	      else if (strcmp(name,"Outputdefinition6")==0) return Outputdefinition6Enum;
+	      else if (strcmp(name,"Outputdefinition7")==0) return Outputdefinition7Enum;
+	      else if (strcmp(name,"Outputdefinition8")==0) return Outputdefinition8Enum;
+	      else if (strcmp(name,"Outputdefinition9")==0) return Outputdefinition9Enum;
+	      else if (strcmp(name,"Outputdefinition10")==0) return Outputdefinition10Enum;
+	      else if (strcmp(name,"Outputdefinition11")==0) return Outputdefinition11Enum;
+	      else if (strcmp(name,"Outputdefinition12")==0) return Outputdefinition12Enum;
+	      else if (strcmp(name,"Outputdefinition13")==0) return Outputdefinition13Enum;
+	      else if (strcmp(name,"Outputdefinition14")==0) return Outputdefinition14Enum;
+	      else if (strcmp(name,"Outputdefinition15")==0) return Outputdefinition15Enum;
+	      else if (strcmp(name,"Outputdefinition16")==0) return Outputdefinition16Enum;
+	      else if (strcmp(name,"Outputdefinition17")==0) return Outputdefinition17Enum;
+	      else if (strcmp(name,"Outputdefinition18")==0) return Outputdefinition18Enum;
+	      else if (strcmp(name,"Outputdefinition19")==0) return Outputdefinition19Enum;
+	      else if (strcmp(name,"Outputdefinition20")==0) return Outputdefinition20Enum;
+	      else if (strcmp(name,"Outputdefinition21")==0) return Outputdefinition21Enum;
+	      else if (strcmp(name,"Outputdefinition22")==0) return Outputdefinition22Enum;
+	      else if (strcmp(name,"Outputdefinition23")==0) return Outputdefinition23Enum;
+	      else if (strcmp(name,"Outputdefinition24")==0) return Outputdefinition24Enum;
+	      else if (strcmp(name,"Outputdefinition25")==0) return Outputdefinition25Enum;
+	      else if (strcmp(name,"Outputdefinition26")==0) return Outputdefinition26Enum;
+	      else if (strcmp(name,"Outputdefinition27")==0) return Outputdefinition27Enum;
+	      else if (strcmp(name,"Outputdefinition28")==0) return Outputdefinition28Enum;
+	      else if (strcmp(name,"Outputdefinition29")==0) return Outputdefinition29Enum;
+	      else if (strcmp(name,"Outputdefinition30")==0) return Outputdefinition30Enum;
+	      else if (strcmp(name,"Outputdefinition31")==0) return Outputdefinition31Enum;
+	      else if (strcmp(name,"Outputdefinition32")==0) return Outputdefinition32Enum;
+	      else if (strcmp(name,"Outputdefinition33")==0) return Outputdefinition33Enum;
+	      else if (strcmp(name,"Outputdefinition34")==0) return Outputdefinition34Enum;
+	      else if (strcmp(name,"Outputdefinition35")==0) return Outputdefinition35Enum;
+	      else if (strcmp(name,"Outputdefinition36")==0) return Outputdefinition36Enum;
+	      else if (strcmp(name,"Outputdefinition37")==0) return Outputdefinition37Enum;
+	      else if (strcmp(name,"Outputdefinition38")==0) return Outputdefinition38Enum;
+	      else if (strcmp(name,"Outputdefinition39")==0) return Outputdefinition39Enum;
+	      else if (strcmp(name,"Outputdefinition40")==0) return Outputdefinition40Enum;
+	      else if (strcmp(name,"Outputdefinition41")==0) return Outputdefinition41Enum;
+	      else if (strcmp(name,"Outputdefinition42")==0) return Outputdefinition42Enum;
+	      else if (strcmp(name,"Outputdefinition43")==0) return Outputdefinition43Enum;
+	      else if (strcmp(name,"Outputdefinition44")==0) return Outputdefinition44Enum;
+	      else if (strcmp(name,"Outputdefinition45")==0) return Outputdefinition45Enum;
+	      else if (strcmp(name,"Outputdefinition46")==0) return Outputdefinition46Enum;
+	      else if (strcmp(name,"Outputdefinition47")==0) return Outputdefinition47Enum;
+	      else if (strcmp(name,"Outputdefinition48")==0) return Outputdefinition48Enum;
+         else stage=6;
+   }
+   if(stage==6){
+	      if (strcmp(name,"Outputdefinition49")==0) return Outputdefinition49Enum;
+	      else if (strcmp(name,"Outputdefinition50")==0) return Outputdefinition50Enum;
+	      else if (strcmp(name,"Outputdefinition51")==0) return Outputdefinition51Enum;
+	      else if (strcmp(name,"Outputdefinition52")==0) return Outputdefinition52Enum;
+	      else if (strcmp(name,"Outputdefinition53")==0) return Outputdefinition53Enum;
+	      else if (strcmp(name,"Outputdefinition54")==0) return Outputdefinition54Enum;
+	      else if (strcmp(name,"Outputdefinition55")==0) return Outputdefinition55Enum;
+	      else if (strcmp(name,"Outputdefinition56")==0) return Outputdefinition56Enum;
+	      else if (strcmp(name,"Outputdefinition57")==0) return Outputdefinition57Enum;
+	      else if (strcmp(name,"Outputdefinition58")==0) return Outputdefinition58Enum;
+	      else if (strcmp(name,"Outputdefinition59")==0) return Outputdefinition59Enum;
+	      else if (strcmp(name,"Outputdefinition60")==0) return Outputdefinition60Enum;
+	      else if (strcmp(name,"Outputdefinition61")==0) return Outputdefinition61Enum;
+	      else if (strcmp(name,"Outputdefinition62")==0) return Outputdefinition62Enum;
+	      else if (strcmp(name,"Outputdefinition63")==0) return Outputdefinition63Enum;
+	      else if (strcmp(name,"Outputdefinition64")==0) return Outputdefinition64Enum;
+	      else if (strcmp(name,"Outputdefinition65")==0) return Outputdefinition65Enum;
+	      else if (strcmp(name,"Outputdefinition66")==0) return Outputdefinition66Enum;
+	      else if (strcmp(name,"Outputdefinition67")==0) return Outputdefinition67Enum;
+	      else if (strcmp(name,"Outputdefinition68")==0) return Outputdefinition68Enum;
+	      else if (strcmp(name,"Outputdefinition69")==0) return Outputdefinition69Enum;
+	      else if (strcmp(name,"Outputdefinition70")==0) return Outputdefinition70Enum;
+	      else if (strcmp(name,"Outputdefinition71")==0) return Outputdefinition71Enum;
+	      else if (strcmp(name,"Outputdefinition72")==0) return Outputdefinition72Enum;
+	      else if (strcmp(name,"Outputdefinition73")==0) return Outputdefinition73Enum;
+	      else if (strcmp(name,"Outputdefinition74")==0) return Outputdefinition74Enum;
+	      else if (strcmp(name,"Outputdefinition75")==0) return Outputdefinition75Enum;
+	      else if (strcmp(name,"Outputdefinition76")==0) return Outputdefinition76Enum;
+	      else if (strcmp(name,"Outputdefinition77")==0) return Outputdefinition77Enum;
+	      else if (strcmp(name,"Outputdefinition78")==0) return Outputdefinition78Enum;
+	      else if (strcmp(name,"Outputdefinition79")==0) return Outputdefinition79Enum;
+	      else if (strcmp(name,"Outputdefinition80")==0) return Outputdefinition80Enum;
+	      else if (strcmp(name,"Outputdefinition81")==0) return Outputdefinition81Enum;
+	      else if (strcmp(name,"Outputdefinition82")==0) return Outputdefinition82Enum;
+	      else if (strcmp(name,"Outputdefinition83")==0) return Outputdefinition83Enum;
+	      else if (strcmp(name,"Outputdefinition84")==0) return Outputdefinition84Enum;
+	      else if (strcmp(name,"Outputdefinition85")==0) return Outputdefinition85Enum;
+	      else if (strcmp(name,"Outputdefinition86")==0) return Outputdefinition86Enum;
+	      else if (strcmp(name,"Outputdefinition87")==0) return Outputdefinition87Enum;
+	      else if (strcmp(name,"Outputdefinition88")==0) return Outputdefinition88Enum;
+	      else if (strcmp(name,"Outputdefinition89")==0) return Outputdefinition89Enum;
+	      else if (strcmp(name,"Outputdefinition90")==0) return Outputdefinition90Enum;
+	      else if (strcmp(name,"Outputdefinition91")==0) return Outputdefinition91Enum;
+	      else if (strcmp(name,"Outputdefinition92")==0) return Outputdefinition92Enum;
+	      else if (strcmp(name,"Outputdefinition93")==0) return Outputdefinition93Enum;
+	      else if (strcmp(name,"Outputdefinition94")==0) return Outputdefinition94Enum;
+	      else if (strcmp(name,"Outputdefinition95")==0) return Outputdefinition95Enum;
+	      else if (strcmp(name,"Outputdefinition96")==0) return Outputdefinition96Enum;
+	      else if (strcmp(name,"Outputdefinition97")==0) return Outputdefinition97Enum;
+	      else if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum;
+	      else if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum;
+	      else if (strcmp(name,"Outputdefinition100")==0) return Outputdefinition100Enum;
+	      else if (strcmp(name,"OutputdefinitionList")==0) return OutputdefinitionListEnum;
+	      else if (strcmp(name,"Massfluxatgate")==0) return MassfluxatgateEnum;
+	      else if (strcmp(name,"Nodalvalue")==0) return NodalvalueEnum;
+	      else if (strcmp(name,"VxObs")==0) return VxObsEnum;
+	      else if (strcmp(name,"VyObs")==0) return VyObsEnum;
+	      else if (strcmp(name,"Absolute")==0) return AbsoluteEnum;
+	      else if (strcmp(name,"Incremental")==0) return IncrementalEnum;
+	      else if (strcmp(name,"AugmentedLagrangianR")==0) return AugmentedLagrangianREnum;
+	      else if (strcmp(name,"AugmentedLagrangianRhop")==0) return AugmentedLagrangianRhopEnum;
+	      else if (strcmp(name,"AugmentedLagrangianRlambda")==0) return AugmentedLagrangianRlambdaEnum;
+	      else if (strcmp(name,"AugmentedLagrangianRholambda")==0) return AugmentedLagrangianRholambdaEnum;
+	      else if (strcmp(name,"AugmentedLagrangianTheta")==0) return AugmentedLagrangianThetaEnum;
+	      else if (strcmp(name,"None")==0) return NoneEnum;
+	      else if (strcmp(name,"AggressiveMigration")==0) return AggressiveMigrationEnum;
+	      else if (strcmp(name,"SoftMigration")==0) return SoftMigrationEnum;
+	      else if (strcmp(name,"SubelementMigration")==0) return SubelementMigrationEnum;
+	      else if (strcmp(name,"SubelementMigration2")==0) return SubelementMigration2Enum;
+	      else if (strcmp(name,"Contact")==0) return ContactEnum;
+	      else if (strcmp(name,"GroundingOnly")==0) return GroundingOnlyEnum;
+	      else if (strcmp(name,"MaskGroundediceLevelset")==0) return MaskGroundediceLevelsetEnum;
+	      else if (strcmp(name,"Adjoint")==0) return AdjointEnum;
+	      else if (strcmp(name,"Colinear")==0) return ColinearEnum;
+	      else if (strcmp(name,"ControlSteady")==0) return ControlSteadyEnum;
+	      else if (strcmp(name,"Fset")==0) return FsetEnum;
+	      else if (strcmp(name,"Gradient1")==0) return Gradient1Enum;
+	      else if (strcmp(name,"Gradient2")==0) return Gradient2Enum;
+	      else if (strcmp(name,"Gradient3")==0) return Gradient3Enum;
+	      else if (strcmp(name,"Gradient")==0) return GradientEnum;
+	      else if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum;
+	      else if (strcmp(name,"Gset")==0) return GsetEnum;
+	      else if (strcmp(name,"Index")==0) return IndexEnum;
+	      else if (strcmp(name,"Indexed")==0) return IndexedEnum;
+	      else if (strcmp(name,"Intersect")==0) return IntersectEnum;
+	      else if (strcmp(name,"Nodal")==0) return NodalEnum;
+	      else if (strcmp(name,"OldGradient")==0) return OldGradientEnum;
+	      else if (strcmp(name,"OutputBufferPointer")==0) return OutputBufferPointerEnum;
+	      else if (strcmp(name,"OutputBufferSizePointer")==0) return OutputBufferSizePointerEnum;
+	      else if (strcmp(name,"OutputFilePointer")==0) return OutputFilePointerEnum;
+	      else if (strcmp(name,"ToolkitsFileName")==0) return ToolkitsFileNameEnum;
+	      else if (strcmp(name,"RootPath")==0) return RootPathEnum;
+	      else if (strcmp(name,"OutputFileName")==0) return OutputFileNameEnum;
+	      else if (strcmp(name,"InputFileName")==0) return InputFileNameEnum;
+	      else if (strcmp(name,"LockFileName")==0) return LockFileNameEnum;
+	      else if (strcmp(name,"RestartFileName")==0) return RestartFileNameEnum;
+	      else if (strcmp(name,"ToolkitsOptionsAnalyses")==0) return ToolkitsOptionsAnalysesEnum;
+	      else if (strcmp(name,"ToolkitsOptionsStrings")==0) return ToolkitsOptionsStringsEnum;
+	      else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum;
+	      else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
+	      else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
+	      else if (strcmp(name,"Regular")==0) return RegularEnum;
+	      else if (strcmp(name,"Scaled")==0) return ScaledEnum;
+	      else if (strcmp(name,"Separate")==0) return SeparateEnum;
+	      else if (strcmp(name,"Sset")==0) return SsetEnum;
+	      else if (strcmp(name,"Dense")==0) return DenseEnum;
+	      else if (strcmp(name,"MpiDense")==0) return MpiDenseEnum;
+	      else if (strcmp(name,"MpiSparse")==0) return MpiSparseEnum;
+	      else if (strcmp(name,"Seq")==0) return SeqEnum;
+	      else if (strcmp(name,"Mpi")==0) return MpiEnum;
+	      else if (strcmp(name,"Mumps")==0) return MumpsEnum;
+	      else if (strcmp(name,"Gsl")==0) return GslEnum;
+	      else if (strcmp(name,"Cuffey")==0) return CuffeyEnum;
+	      else if (strcmp(name,"BuddJacka")==0) return BuddJackaEnum;
+	      else if (strcmp(name,"CuffeyTemperate")==0) return CuffeyTemperateEnum;
+	      else if (strcmp(name,"Paterson")==0) return PatersonEnum;
+	      else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum;
+	      else if (strcmp(name,"LliboutryDuval")==0) return LliboutryDuvalEnum;
+	      else if (strcmp(name,"ExtrapolationVariable")==0) return ExtrapolationVariableEnum;
+	      else if (strcmp(name,"IceMaskNodeActivation")==0) return IceMaskNodeActivationEnum;
+         else stage=7;
+   }
+   if(stage==7){
+	      if (strcmp(name,"LevelsetfunctionSlopeX")==0) return LevelsetfunctionSlopeXEnum;
+	      else if (strcmp(name,"LevelsetfunctionSlopeY")==0) return LevelsetfunctionSlopeYEnum;
+	      else if (strcmp(name,"LevelsetfunctionPicard")==0) return LevelsetfunctionPicardEnum;
+	      else if (strcmp(name,"LevelsetReinitFrequency")==0) return LevelsetReinitFrequencyEnum;
+	      else if (strcmp(name,"Sealevel")==0) return SealevelEnum;
+	      else if (strcmp(name,"SealevelUmotion")==0) return SealevelUmotionEnum;
+	      else if (strcmp(name,"SealevelNmotion")==0) return SealevelNmotionEnum;
+	      else if (strcmp(name,"SealevelEmotion")==0) return SealevelEmotionEnum;
+	      else if (strcmp(name,"SealevelAbsolute")==0) return SealevelAbsoluteEnum;
+	      else if (strcmp(name,"SealevelEustatic")==0) return SealevelEustaticEnum;
+	      else if (strcmp(name,"SealevelriseDeltathickness")==0) return SealevelriseDeltathicknessEnum;
+	      else if (strcmp(name,"SealevelriseMaxiter")==0) return SealevelriseMaxiterEnum;
+	      else if (strcmp(name,"SealevelriseReltol")==0) return SealevelriseReltolEnum;
+	      else if (strcmp(name,"SealevelriseAbstol")==0) return SealevelriseAbstolEnum;
+	      else if (strcmp(name,"SealevelriseRigid")==0) return SealevelriseRigidEnum;
+	      else if (strcmp(name,"SealevelriseElastic")==0) return SealevelriseElasticEnum;
+	      else if (strcmp(name,"SealevelriseGElastic")==0) return SealevelriseGElasticEnum;
+	      else if (strcmp(name,"SealevelriseUElastic")==0) return SealevelriseUElasticEnum;
+	      else if (strcmp(name,"SealevelriseHElastic")==0) return SealevelriseHElasticEnum;
+	      else if (strcmp(name,"SealevelriseTransitions")==0) return SealevelriseTransitionsEnum;
+	      else if (strcmp(name,"SealevelriseRequestedOutputs")==0) return SealevelriseRequestedOutputsEnum;
+	      else if (strcmp(name,"SealevelriseNumRequestedOutputs")==0) return SealevelriseNumRequestedOutputsEnum;
+	      else if (strcmp(name,"ParametersEND")==0) return ParametersENDEnum;
+	      else if (strcmp(name,"XY")==0) return XYEnum;
+	      else if (strcmp(name,"XYZ")==0) return XYZEnum;
+	      else if (strcmp(name,"GenericParam")==0) return GenericParamEnum;
+	      else if (strcmp(name,"BoolInput")==0) return BoolInputEnum;
+	      else if (strcmp(name,"BoolParam")==0) return BoolParamEnum;
+	      else if (strcmp(name,"Contour")==0) return ContourEnum;
+	      else if (strcmp(name,"ControlInput")==0) return ControlInputEnum;
+	      else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
+	      else if (strcmp(name,"DoubleInput")==0) return DoubleInputEnum;
+	      else if (strcmp(name,"DoubleArrayInput")==0) return DoubleArrayInputEnum;
+	      else if (strcmp(name,"DataSetParam")==0) return DataSetParamEnum;
+	      else if (strcmp(name,"DoubleMatArrayParam")==0) return DoubleMatArrayParamEnum;
+	      else if (strcmp(name,"DoubleMatParam")==0) return DoubleMatParamEnum;
+	      else if (strcmp(name,"DoubleParam")==0) return DoubleParamEnum;
+	      else if (strcmp(name,"DoubleVecParam")==0) return DoubleVecParamEnum;
+	      else if (strcmp(name,"Element")==0) return ElementEnum;
+	      else if (strcmp(name,"ElementHook")==0) return ElementHookEnum;
+	      else if (strcmp(name,"Hook")==0) return HookEnum;
+	      else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum;
+	      else if (strcmp(name,"FileParam")==0) return FileParamEnum;
+	      else if (strcmp(name,"Input")==0) return InputEnum;
+	      else if (strcmp(name,"IntInput")==0) return IntInputEnum;
+	      else if (strcmp(name,"IntParam")==0) return IntParamEnum;
+	      else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
+	      else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
+	      else if (strcmp(name,"Matice")==0) return MaticeEnum;
+	      else if (strcmp(name,"Matdamageice")==0) return MatdamageiceEnum;
+	      else if (strcmp(name,"Matestar")==0) return MatestarEnum;
+	      else if (strcmp(name,"Matpar")==0) return MatparEnum;
+	      else if (strcmp(name,"Node")==0) return NodeEnum;
+	      else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
+	      else if (strcmp(name,"Neumannflux")==0) return NeumannfluxEnum;
+	      else if (strcmp(name,"Param")==0) return ParamEnum;
+	      else if (strcmp(name,"Moulin")==0) return MoulinEnum;
+	      else if (strcmp(name,"Pengrid")==0) return PengridEnum;
+	      else if (strcmp(name,"Penpair")==0) return PenpairEnum;
+	      else if (strcmp(name,"Profiler")==0) return ProfilerEnum;
+	      else if (strcmp(name,"MatrixParam")==0) return MatrixParamEnum;
+	      else if (strcmp(name,"Masscon")==0) return MassconEnum;
+	      else if (strcmp(name,"Massconaxpby")==0) return MassconaxpbyEnum;
+	      else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;
+	      else if (strcmp(name,"VectorParam")==0) return VectorParamEnum;
+	      else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
+	      else if (strcmp(name,"Segment")==0) return SegmentEnum;
+	      else if (strcmp(name,"SegmentRiftfront")==0) return SegmentRiftfrontEnum;
+	      else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum;
+	      else if (strcmp(name,"SpcStatic")==0) return SpcStaticEnum;
+	      else if (strcmp(name,"SpcTransient")==0) return SpcTransientEnum;
+	      else if (strcmp(name,"StringArrayParam")==0) return StringArrayParamEnum;
+	      else if (strcmp(name,"StringParam")==0) return StringParamEnum;
+	      else if (strcmp(name,"Seg")==0) return SegEnum;
+	      else if (strcmp(name,"SegInput")==0) return SegInputEnum;
+	      else if (strcmp(name,"Tria")==0) return TriaEnum;
+	      else if (strcmp(name,"TriaInput")==0) return TriaInputEnum;
+	      else if (strcmp(name,"Tetra")==0) return TetraEnum;
+	      else if (strcmp(name,"TetraInput")==0) return TetraInputEnum;
+	      else if (strcmp(name,"Penta")==0) return PentaEnum;
+	      else if (strcmp(name,"PentaInput")==0) return PentaInputEnum;
+	      else if (strcmp(name,"Vertex")==0) return VertexEnum;
+	      else if (strcmp(name,"VertexPId")==0) return VertexPIdEnum;
+	      else if (strcmp(name,"VertexSId")==0) return VertexSIdEnum;
+	      else if (strcmp(name,"Option")==0) return OptionEnum;
+	      else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
+	      else if (strcmp(name,"OptionCell")==0) return OptionCellEnum;
+	      else if (strcmp(name,"OptionStruct")==0) return OptionStructEnum;
+	      else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum;
+	      else if (strcmp(name,"AdjointBalancethickness2Analysis")==0) return AdjointBalancethickness2AnalysisEnum;
+	      else if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum;
+	      else if (strcmp(name,"DefaultAnalysis")==0) return DefaultAnalysisEnum;
+	      else if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum;
+	      else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum;
+	      else if (strcmp(name,"Balancethickness2Analysis")==0) return Balancethickness2AnalysisEnum;
+	      else if (strcmp(name,"Balancethickness2Solution")==0) return Balancethickness2SolutionEnum;
+	      else if (strcmp(name,"BalancethicknessSoftAnalysis")==0) return BalancethicknessSoftAnalysisEnum;
+	      else if (strcmp(name,"BalancethicknessSoftSolution")==0) return BalancethicknessSoftSolutionEnum;
+	      else if (strcmp(name,"BalancevelocityAnalysis")==0) return BalancevelocityAnalysisEnum;
+	      else if (strcmp(name,"BalancevelocitySolution")==0) return BalancevelocitySolutionEnum;
+	      else if (strcmp(name,"L2ProjectionEPLAnalysis")==0) return L2ProjectionEPLAnalysisEnum;
+	      else if (strcmp(name,"L2ProjectionBaseAnalysis")==0) return L2ProjectionBaseAnalysisEnum;
+	      else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum;
+	      else if (strcmp(name,"DamageEvolutionSolution")==0) return DamageEvolutionSolutionEnum;
+	      else if (strcmp(name,"DamageEvolutionAnalysis")==0) return DamageEvolutionAnalysisEnum;
+	      else if (strcmp(name,"StressbalanceAnalysis")==0) return StressbalanceAnalysisEnum;
+	      else if (strcmp(name,"StressbalanceSIAAnalysis")==0) return StressbalanceSIAAnalysisEnum;
+	      else if (strcmp(name,"StressbalanceSolution")==0) return StressbalanceSolutionEnum;
+	      else if (strcmp(name,"StressbalanceVerticalAnalysis")==0) return StressbalanceVerticalAnalysisEnum;
+	      else if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum;
+	      else if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum;
+	      else if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum;
+	      else if (strcmp(name,"HydrologyDCEfficientAnalysis")==0) return HydrologyDCEfficientAnalysisEnum;
+	      else if (strcmp(name,"HydrologySommersAnalysis")==0) return HydrologySommersAnalysisEnum;
+	      else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum;
+	      else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
+	      else if (strcmp(name,"MasstransportAnalysis")==0) return MasstransportAnalysisEnum;
+	      else if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum;
+	      else if (strcmp(name,"FreeSurfaceBaseAnalysis")==0) return FreeSurfaceBaseAnalysisEnum;
+	      else if (strcmp(name,"FreeSurfaceTopAnalysis")==0) return FreeSurfaceTopAnalysisEnum;
+         else stage=8;
+   }
+   if(stage==8){
+	      if (strcmp(name,"ExtrudeFromBaseAnalysis")==0) return ExtrudeFromBaseAnalysisEnum;
+	      else if (strcmp(name,"ExtrudeFromTopAnalysis")==0) return ExtrudeFromTopAnalysisEnum;
+	      else if (strcmp(name,"DepthAverageAnalysis")==0) return DepthAverageAnalysisEnum;
+	      else if (strcmp(name,"SealevelriseSolution")==0) return SealevelriseSolutionEnum;
+	      else if (strcmp(name,"SealevelriseAnalysis")==0) return SealevelriseAnalysisEnum;
+	      else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;
+	      else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
+	      else if (strcmp(name,"SmoothAnalysis")==0) return SmoothAnalysisEnum;
+	      else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
+	      else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
+	      else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
+	      else if (strcmp(name,"UzawaPressureAnalysis")==0) return UzawaPressureAnalysisEnum;
+	      else if (strcmp(name,"GiaSolution")==0) return GiaSolutionEnum;
+	      else if (strcmp(name,"GiaAnalysis")==0) return GiaAnalysisEnum;
+	      else if (strcmp(name,"MeshdeformationAnalysis")==0) return MeshdeformationAnalysisEnum;
+	      else if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum;
+	      else if (strcmp(name,"ExtrapolationAnalysis")==0) return ExtrapolationAnalysisEnum;
+	      else if (strcmp(name,"Approximation")==0) return ApproximationEnum;
+	      else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
+	      else if (strcmp(name,"SIAApproximation")==0) return SIAApproximationEnum;
+	      else if (strcmp(name,"SSAApproximation")==0) return SSAApproximationEnum;
+	      else if (strcmp(name,"SSAHOApproximation")==0) return SSAHOApproximationEnum;
+	      else if (strcmp(name,"SSAFSApproximation")==0) return SSAFSApproximationEnum;
+	      else if (strcmp(name,"L1L2Approximation")==0) return L1L2ApproximationEnum;
+	      else if (strcmp(name,"HOApproximation")==0) return HOApproximationEnum;
+	      else if (strcmp(name,"HOFSApproximation")==0) return HOFSApproximationEnum;
+	      else if (strcmp(name,"FSApproximation")==0) return FSApproximationEnum;
+	      else if (strcmp(name,"FSvelocity")==0) return FSvelocityEnum;
+	      else if (strcmp(name,"FSpressure")==0) return FSpressureEnum;
+	      else if (strcmp(name,"GaussSeg")==0) return GaussSegEnum;
+	      else if (strcmp(name,"GaussTria")==0) return GaussTriaEnum;
+	      else if (strcmp(name,"GaussTetra")==0) return GaussTetraEnum;
+	      else if (strcmp(name,"GaussPenta")==0) return GaussPentaEnum;
+	      else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
+	      else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum;
+	      else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
+	      else if (strcmp(name,"MinVel")==0) return MinVelEnum;
+	      else if (strcmp(name,"MaxVel")==0) return MaxVelEnum;
+	      else if (strcmp(name,"MinVx")==0) return MinVxEnum;
+	      else if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
+	      else if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum;
+	      else if (strcmp(name,"MinVy")==0) return MinVyEnum;
+	      else if (strcmp(name,"MaxVy")==0) return MaxVyEnum;
+	      else if (strcmp(name,"MaxAbsVy")==0) return MaxAbsVyEnum;
+	      else if (strcmp(name,"MinVz")==0) return MinVzEnum;
+	      else if (strcmp(name,"MaxVz")==0) return MaxVzEnum;
+	      else if (strcmp(name,"MaxAbsVz")==0) return MaxAbsVzEnum;
+	      else if (strcmp(name,"FloatingArea")==0) return FloatingAreaEnum;
+	      else if (strcmp(name,"GroundedArea")==0) return GroundedAreaEnum;
+	      else if (strcmp(name,"IceMass")==0) return IceMassEnum;
+	      else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum;
+	      else if (strcmp(name,"IceVolumeAboveFloatation")==0) return IceVolumeAboveFloatationEnum;
+	      else if (strcmp(name,"TotalFloatingBmb")==0) return TotalFloatingBmbEnum;
+	      else if (strcmp(name,"TotalGroundedBmb")==0) return TotalGroundedBmbEnum;
+	      else if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum;
+	      else if (strcmp(name,"P0")==0) return P0Enum;
+	      else if (strcmp(name,"P0Array")==0) return P0ArrayEnum;
+	      else if (strcmp(name,"P1")==0) return P1Enum;
+	      else if (strcmp(name,"P1DG")==0) return P1DGEnum;
+	      else if (strcmp(name,"P1bubble")==0) return P1bubbleEnum;
+	      else if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum;
+	      else if (strcmp(name,"P2")==0) return P2Enum;
+	      else if (strcmp(name,"P2bubble")==0) return P2bubbleEnum;
+	      else if (strcmp(name,"P2bubblecondensed")==0) return P2bubblecondensedEnum;
+	      else if (strcmp(name,"P2xP1")==0) return P2xP1Enum;
+	      else if (strcmp(name,"P1xP2")==0) return P1xP2Enum;
+	      else if (strcmp(name,"P1xP3")==0) return P1xP3Enum;
+	      else if (strcmp(name,"P2xP4")==0) return P2xP4Enum;
+	      else if (strcmp(name,"P1P1")==0) return P1P1Enum;
+	      else if (strcmp(name,"P1P1GLS")==0) return P1P1GLSEnum;
+	      else if (strcmp(name,"MINI")==0) return MINIEnum;
+	      else if (strcmp(name,"MINIcondensed")==0) return MINIcondensedEnum;
+	      else if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum;
+	      else if (strcmp(name,"LATaylorHood")==0) return LATaylorHoodEnum;
+	      else if (strcmp(name,"XTaylorHood")==0) return XTaylorHoodEnum;
+	      else if (strcmp(name,"OneLayerP4z")==0) return OneLayerP4zEnum;
+	      else if (strcmp(name,"CrouzeixRaviart")==0) return CrouzeixRaviartEnum;
+	      else if (strcmp(name,"LACrouzeixRaviart")==0) return LACrouzeixRaviartEnum;
+	      else if (strcmp(name,"Closed")==0) return ClosedEnum;
+	      else if (strcmp(name,"Free")==0) return FreeEnum;
+	      else if (strcmp(name,"Open")==0) return OpenEnum;
+	      else if (strcmp(name,"Air")==0) return AirEnum;
+	      else if (strcmp(name,"Ice")==0) return IceEnum;
+	      else if (strcmp(name,"Melange")==0) return MelangeEnum;
+	      else if (strcmp(name,"Water")==0) return WaterEnum;
+	      else if (strcmp(name,"DataSet")==0) return DataSetEnum;
+	      else if (strcmp(name,"Constraints")==0) return ConstraintsEnum;
+	      else if (strcmp(name,"Loads")==0) return LoadsEnum;
+	      else if (strcmp(name,"Materials")==0) return MaterialsEnum;
+	      else if (strcmp(name,"Nodes")==0) return NodesEnum;
+	      else if (strcmp(name,"Contours")==0) return ContoursEnum;
+	      else if (strcmp(name,"Parameters")==0) return ParametersEnum;
+	      else if (strcmp(name,"Vertices")==0) return VerticesEnum;
+	      else if (strcmp(name,"Results")==0) return ResultsEnum;
+	      else if (strcmp(name,"MaximumNumberOfDefinitions")==0) return MaximumNumberOfDefinitionsEnum;
+         else stage=9;
+   }
+	/*If we reach this point, the string provided has not been found*/
+	if(notfounderror)
+		_error_("Enum " << name << " not found");
+	else
+		return -1;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Enum/Synchronize.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Enum/Synchronize.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Enum/Synchronize.sh	(revision 21239)
@@ -0,0 +1,186 @@
+#!/bin/bash
+#Synchronize EnumToStringx.cpp and StringToEnumx.cpp and matlab Enums
+
+#Get all lines of EnumDefinitions2.h which hold Enum | remove all commas > put everything in file temp
+cat EnumDefinitions.h | grep -e "[0-9]Enum," -e "[a-zA-Z]Enum," -e "MaximumNumberOfDefinitionsEnum" | grep -v include | sed -e "s/,/ /g" | awk '{print $1}' > temp
+
+#Removed existing files
+rm $ISSM_DIR/src/c/shared/Enum/EnumToStringx.cpp
+rm $ISSM_DIR/src/c/shared/Enum/StringToEnumx.cpp
+
+#Get number of enums
+NUMENUMS=$(wc -l temp | awk '{printf("%s",$1);}');
+
+#Deal with Analyses
+#Build EnumToAnalysis.cpp {{{
+#Header
+cat <<END > $ISSM_DIR/src/c/analyses/EnumToAnalysis.cpp
+/*
+* \file EnumToAnalysis.cpp
+* \brief: output class depending on enum
+*
+*   WARNING: DO NOT MODIFY THIS FILE
+*            this file has been automatically generated by Synchronize.sh
+*            Please read README for more information
+*/
+
+#include "./analyses.h"
+#include "../shared/shared.h"
+
+Analysis* EnumToAnalysis(int analysis_enum){
+
+	switch(analysis_enum){
+END
+#core
+cat temp | grep [a-zA-Z0-9]Analysis | \
+	grep -v DefaultAnalysis | grep -v FlaimAnalysis | grep -v SurfaceSlopeAnalysis | grep -v BedSlopeAnalysis | \
+	awk '{print "\t\t#ifdef _HAVE_"toupper(substr($1,1,length($1)-12))"_\n\t\t" "case " $1" : return new " substr($1,1,length($1)-4) "();\n\t\t#endif"}' \
+		>> $ISSM_DIR/src/c/analyses/EnumToAnalysis.cpp
+
+#Footer
+cat <<END >> $ISSM_DIR/src/c/analyses/EnumToAnalysis.cpp
+		default : _error_("enum provided not supported ("<<EnumToStringx(analysis_enum)<<")");
+	}
+}
+END
+#}}}
+#Build analyses.m4{{{
+#Header
+cat <<END > $ISSM_DIR/m4/analyses.m4
+
+dnl   WARNING: DO NOT MODIFY THIS FILE
+dnl            this file has been automatically generated by Synchronize.sh
+dnl            Please read README for more information
+
+# AX_ANALYSES_SELECTION
+# -----------------
+# Check for analyses compilation
+AC_DEFUN([AX_ANALYSES_SELECTION],
+[
+
+END
+#core
+cat temp | grep [a-zA-Z0-9]Analysis | \
+	grep -v DefaultAnalysis | grep -v FlaimAnalysis | grep -v SurfaceSlopeAnalysis | grep -v BedSlopeAnalysis | \
+	sed -e "s/AnalysisEnum//g" | \
+	awk '{print "dnl with-" $1"{{{\n\
+AC_ARG_WITH([" $1"],\n\
+\tAS_HELP_STRING([--with-" $1" = YES], [compile with " $1" capabilities (default is yes)]),\n\
+\t[" toupper($1)"=$withval],[" toupper($1)"=yes])\n\
+AC_MSG_CHECKING(for " $1" capability compilation)\n\n\
+HAVE_"  toupper($1)"=no \n\
+if test \"x$"  toupper($1)"\" = \"xyes\"; then\n\
+	HAVE_"  toupper($1)"=yes\n\
+	AC_DEFINE([_HAVE_"  toupper($1)"_],[1],[with " $1" capability])\n\
+fi\n\
+AM_CONDITIONAL([" toupper($1)"], [test x$HAVE_" toupper($1)" = xyes])\n\
+AC_MSG_RESULT($HAVE_" toupper($1)")\n\
+dnl }}}"}' \
+	>> $ISSM_DIR/m4/analyses.m4
+
+#Footer
+cat <<END >> $ISSM_DIR/m4/analyses.m4
+
+])
+END
+#}}}
+
+#Enum to String conversions
+#Build EnumToStringx.cpp {{{
+#Header
+cat <<END >  $ISSM_DIR/src/c/shared/Enum/EnumToStringx.cpp
+/*
+* \file EnumToStringx.cpp:
+* \brief: output string associated with enum
+*
+*   WARNING: DO NOT MODIFY THIS FILE
+*            this file has been automatically generated by Synchronize.sh
+*            Please read README for more information
+*/
+
+#include <cstring>
+#include "./Enum.h"
+#include "../Exceptions/exceptions.h"
+#include "../MemOps/MemOps.h"
+
+const char* EnumToStringx(int en){
+
+	switch(en){
+
+END
+#core
+cat temp |  awk '{print "\t\t" "case " $1" : return \"" substr($1,1,length($1)-4) "\";"}' >> $ISSM_DIR/src/c/shared/Enum/EnumToStringx.cpp
+#Footer
+cat <<END >> $ISSM_DIR/src/c/shared/Enum/EnumToStringx.cpp
+		default : return "unknown";
+
+	}
+}
+void EnumToStringx(char** pstring,int enum_in){
+	char *string = NULL;
+	int   len = 0;
+
+	len=strlen(EnumToStringx(enum_in));
+	string=xNew<char>(len+1);
+	memcpy(string,EnumToStringx(enum_in),(len+1)*sizeof(char));
+
+	/*Assign output pointer*/
+	*pstring=string;
+}
+END
+#}}}
+#Build StringToEnumx.cpp {{{
+#Header
+cat <<END > $ISSM_DIR/src/c/shared/Enum/StringToEnumx.cpp
+/*
+* \file StringToEnumx.cpp:
+* \brief: output enum associated with string
+*
+*   WARNING: DO NOT MODIFY THIS FILE
+*            this file has been automatically generated by Synchronize.sh
+*            Please read README for more information
+*/
+
+#include <cstring>
+#include "./Enum.h"
+#include "../Exceptions/exceptions.h"
+
+int  StringToEnumx(const char* name,bool notfounderror){
+
+   int  stage=1;
+
+END
+
+#core
+i1=1;
+i2=120;
+for (( i=1 ; i<=100 ; i++ )); do
+	echo "   if(stage==$i){" >> $ISSM_DIR//src/c/shared/Enum/StringToEnumx.cpp
+	awk -v i1=$i1 -v i2=$i2 '{if(NR>=i1 && NR<=i2) print $0 }' temp |
+	awk '{print "\t" ((NR==1)?"      if":"      else if") " (strcmp(name,\"" substr($1,1,length($1)-4) "\")==0) return " $1 ";"}' >> $ISSM_DIR//src/c/shared/Enum/StringToEnumx.cpp
+	echo "         else stage=$(($i+1));" >> $ISSM_DIR//src/c/shared/Enum/StringToEnumx.cpp
+	echo "   }" >> $ISSM_DIR//src/c/shared/Enum/StringToEnumx.cpp
+	
+	if [ $i2 -ge $NUMENUMS ]; then break; fi
+	let i1=$i1+120
+	let i2=$i2+120
+done
+
+#footer
+cat <<END >> $ISSM_DIR/src/c/shared/Enum/StringToEnumx.cpp
+	/*If we reach this point, the string provided has not been found*/
+	if(notfounderror)
+		_error_("Enum " << name << " not found");
+	else
+		return -1;
+}
+END
+#}}}
+
+#clean up{{{
+rm temp
+#}}}
+#print info {{{
+printf "\r                                                                      "
+printf "\rdone!\n"
+#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Exceptions/Exceptions.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Exceptions/Exceptions.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Exceptions/Exceptions.cpp	(revision 21239)
@@ -0,0 +1,102 @@
+/* \file Exceptions.cpp
+ * \brief: implementation of the exceptions.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <cstring>
+#include <cstdio>
+#include "./exceptions.h"
+#include "../io/Print/Print.h"
+#include "../io/Comm/IssmComm.h"
+#include "../MemOps/MemOps.h"
+
+ErrorException::ErrorException(const string & what_arg){/*{{{*/
+
+	int len;
+	len           = strlen(what_arg.c_str())+1;
+	what_str      = new char[len];
+	memcpy(what_str,what_arg.c_str(),len);
+
+	file_name     = NULL;
+	function_name = NULL;
+	file_line     = 0;
+
+}/*}}}*/
+ErrorException::ErrorException(const string& what_file, const string& what_function,int what_line, const string& what_arg){/*{{{*/
+
+	int len;
+
+	len      = strlen(what_arg.c_str())+1;
+	what_str = new char[len];
+	memcpy(what_str,what_arg.c_str(),len);
+
+	len       = strlen(what_file.c_str())+1;
+	file_name = new char[len];
+	memcpy(file_name,what_file.c_str(),len);
+
+	len           = strlen(what_function.c_str())+1;
+	function_name = new char[len];
+	memcpy(function_name,what_function.c_str(),len);
+
+	file_line= what_line;
+	/*When error messages are not shown properly, uncomment the following line*/
+	//this->Report();
+
+}/*}}}*/
+ErrorException::~ErrorException() throw(){/*{{{*/
+	delete [] what_str;
+	delete [] file_name;
+	delete [] function_name;
+}/*}}}*/
+const char* ErrorException::what() const throw(){/*{{{*/
+	//this->Report();
+	return what_str;
+}/*}}}*/
+void ErrorException::Report() const{/*{{{*/
+
+	/*WINDOWS*/
+	if(!function_name || file_line==0){
+		_printf_("Error message: " << what());
+		return;
+	}
+
+	/*recover my_rank and num_procs:*/
+	int my_rank   = IssmComm::GetRank();
+	int num_procs = IssmComm::GetSize();
+
+	if(num_procs==1){
+		_printf_("\n??? Error in ==> " << file_name << ":" << file_line << "\n");
+		_printf_(function_name << " error message: " << what() << "\n\n");
+	}
+	else{
+		_printf_("\n[" << my_rank<< "] ??? Error using ==> " << file_name << ":" << file_line << "\n");
+		_printf_(  "[" << my_rank << "] " << function_name << " error message: " << what() << "\n\n");
+	}
+
+	return;
+}/*}}}*/
+const char* ErrorException::WrapperReport() const{/*{{{*/
+
+	/*Output*/
+	std::ostringstream buffer;
+	char *message = NULL;
+
+	/*WINDOWS*/
+	if(!function_name || file_line==0){ 
+		buffer << " error message: " << this->what_str;
+	}
+	else{
+		buffer << "\nError in ==> " << this->file_name << ":" << file_line << "\n";
+		buffer << this->function_name << " error message: " << this->what_str;
+	}
+
+	/*Convert std::ostringstream to std::string and then create char* */
+	std::string buffer2 = buffer.str();
+	message = xNew<char>(strlen(buffer2.c_str())+1); sprintf(message,"%s",buffer2.c_str());
+	return message;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Exceptions/exceptions.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Exceptions/exceptions.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Exceptions/exceptions.h	(revision 21239)
@@ -0,0 +1,93 @@
+/*!\file exceptions.h
+ * \brief: two types of exceptions are handled for now. Errors, and 
+ * warnings. Those exceptions are trapped provided the matlab modules 
+ * are started using MODULEBOOT, and ended using MODULEEND. These are 
+ * macros hiding try, catch statements. This header file defines our 
+ * own exceptions
+ */
+
+#ifndef _MY_EXCEPTIONS_H_
+#define _MY_EXCEPTIONS_H_
+
+#include <exception>
+#include <string>
+#include <iostream>
+#include <sstream>
+#include <iomanip>
+
+using namespace std;
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*macros: */
+/* _assert_ {{{*/
+/*Assertion macro: do nothing if macro _ISSM_DEBUG_ undefined*/
+#ifdef _ISSM_DEBUG_ 
+#define _assert_(statement)\
+  if (!(statement)) _error_("Assertion \""<<#statement<<"\" failed, please report bug to "<<PACKAGE_BUGREPORT)
+#else
+#define _assert_(ignore)\
+  ((void) 0)
+#endif
+/*}}}*/
+/* _error_ {{{*/
+/*new Error exception macro*/
+#ifdef _INTEL_WIN_
+#define _error_(StreamArgs)\
+   do{std::ostringstream aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy; \
+   aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy << StreamArgs << std::ends; \
+   throw ErrorException(aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy.str());}while(0)
+#else
+#define _error_(StreamArgs)\
+	do{std::ostringstream aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy; \
+   aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy << StreamArgs << std::ends; \
+   throw ErrorException(__FILE__,__func__,__LINE__,aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy.str());}while(0)
+#endif
+/*}}}*/
+/* ExceptionTrapBegin/ExceptionTrapEnd {{{*/
+
+/*The following macros hide the error exception handling in a matlab module. Just put 
+ * ExceptionTrapBegin(); and ExceptionTrapEnd(); at the beginning and end of a module, and c++ exceptions 
+ * will be trapped. Really nifty!*/
+
+#define ExceptionTrapBegin(); \
+	try{
+
+#define ExceptionTrapEnd(); }\
+	catch(ErrorException &exception){\
+		exception.Report();\
+		return 0;\
+	}\
+	catch(exception& e) {\
+		_printf_("Standard exception: " << e.what() << "\n\n");\
+		return 0;\
+	}\
+	catch(...){\
+		_printf_("An unexpected error occurred \n\n");\
+		return 0;\
+	}
+/*}}}*/
+
+/*ISSM exception class: */
+class ErrorException: public exception { /*{{{*/
+
+	char* what_str;
+	char* function_name;
+	char* file_name;
+	int   file_line;
+
+	public:
+	ErrorException(const string &what_arg); //for windows
+	ErrorException(const string &what_file,const string& what_function,int what_line,const string& what_arg);//UNIX
+	~ErrorException() throw();
+	virtual const char *what() const throw();
+	void Report() const;
+	const char* WrapperReport() const;
+
+};
+/*}}}*/
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Exp/exp.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Exp/exp.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Exp/exp.cpp	(revision 21239)
@@ -0,0 +1,99 @@
+/*!\file:  Exp.cpp
+ * \brief Exp.cpp: write the vertex coordinates defined in a domain 
+ * outline from Argus (.exp file). The first contour in the file is for 
+ * the outside domain outline. 
+ */
+#include <stdio.h>
+#include <math.h>
+
+#include "../MemOps/MemOps.h"
+#include "../Exceptions/exceptions.h"
+#include "./exp.h"
+
+int ExpWrite(int nprof,int* profnvertices,double** pprofx,double** pprofy,char* domainname){/*{{{*/
+
+	/*I/O: */
+	FILE* fid=NULL;
+
+	/*open domain outline file for writing: */
+	if((fid=fopen(domainname,"w"))==NULL) _error_("could not open domain file " << domainname); 
+
+	/*Start writing profiles: */
+	for(int counter=0;counter<nprof;counter++){
+
+		/*Write header: */
+		fprintf(fid,"## Name:%s\n",domainname);
+		fprintf(fid,"## Icon:0\n");
+		fprintf(fid,"# Points Count	Value\n");
+		fprintf(fid,"%u %s\n",profnvertices[counter]  ,"1.");
+		fprintf(fid,"# X pos	Y pos\n");
+
+		/*Write vertices: */
+		for(int i=0;i<profnvertices[counter];i++){
+			fprintf(fid,"%lf\t%lf\n",pprofx[counter][i],pprofy[counter][i]);
+		}
+
+		/*Write blank line: */
+		if(counter<nprof-1) fprintf(fid,"\n");
+	}
+
+	/*close Exp file: */
+	fclose(fid);
+
+	return 1;
+}/*}}}*/
+int IsInPolySerial(double* in,double* xc,double* yc,int numvertices,double* x,double* y,int nods, int edgevalue){ /*{{{*/
+
+	double x0,y0;
+
+	/*Go through all vertices of the mesh:*/
+	for(int i=0;i<nods;i++){
+		if (in[i]){
+			/*this vertex already is inside one of the contours, continue*/
+			continue;
+		}
+		/*pick up vertex: */
+		x0=x[i];
+		y0=y[i];
+		if (pnpoly(numvertices,xc,yc,x0,y0,edgevalue)){
+			in[i]=1.;
+		}
+		else{
+			in[i]=0.;
+		}
+	}
+
+	return 1;
+}
+/*}}}*/
+/*pnpoly{{{*/
+int pnpoly(int npol, double *xp, double *yp, double x, double y, int edgevalue) {
+	int i, j, c = 0;
+	double n1, n2, normp, scalar;
+
+	/*first test, are they colinear? if yes, is the point in the middle of the segment*/
+	if (edgevalue != 2 ){
+		for (i = 0, j = npol-1; i < npol; j = i++) {
+			n1=pow(yp[i]-yp[j],2.0)+pow(xp[i]-xp[j],2.0);
+			n2=pow(y-yp[j],2.0)+pow(x-xp[j],2.0);
+			normp=pow(n1*n2,0.5);
+			scalar=(yp[i]-yp[j])*(y-yp[j])+(xp[i]-xp[j])*(x-xp[j]);
+
+			if (scalar == normp){
+				if (n2<=n1){
+					c = edgevalue;
+					return c;
+				}
+			}
+		}
+	}
+	/*second test : point is neither on a vertex, nor on a side, where is it ?*/
+	for (i = 0, j = npol-1; i < npol; j = i++) {
+		if ((((yp[i]<=y) && (y<yp[j])) ||
+					((yp[j]<=y) && (y<yp[i]))) &&
+				(x < (xp[j] - xp[i]) * (y - yp[i]) / (yp[j] - yp[i]) + xp[i])){
+			c = !c;
+		}
+	}
+	return c;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Exp/exp.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Exp/exp.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Exp/exp.h	(revision 21239)
@@ -0,0 +1,176 @@
+/* \file exp.h
+ * \brief: header file for contour (argus type, files in .exp extension) operations
+ */
+
+#ifndef _EXP_H_
+#define _EXP_H_
+
+#include <cstring>
+#include "../Numerics/recast.h"
+#include "../Exceptions/exceptions.h"
+#include "../MemOps/MemOps.h"
+
+int IsInPolySerial(double* in,double* xc,double* yc,int numvertices,double* x,double* y,int nods, int edgevalue);
+int ExpWrite(int nprof,int* profnvertices,double** pprofx,double** pprofy,char* domainname);
+int pnpoly(int npol, double *xp, double *yp, double x, double y, int edgevalue);
+
+template <class doubletype> int IsInPoly(doubletype* in,double* xc,double* yc,int numvertices,double* x,double* y,int i0,int i1, int edgevalue){ /*{{{*/
+
+	int i;
+	double x0,y0;
+	doubletype value;
+	double xmin=xc[0];
+	double xmax=xc[0];
+	double ymin=yc[0];
+	double ymax=yc[0];
+
+	/*Get extrema*/
+	for (i=1;i<numvertices;i++){
+		if(xc[i]<xmin) xmin=xc[i];
+		if(xc[i]>xmax) xmax=xc[i];
+		if(yc[i]<ymin) ymin=yc[i];
+		if(yc[i]>ymax) ymax=yc[i];
+	}
+
+	/*Go through all vertices of the mesh:*/
+	for (i=i0;i<i1;i++){
+
+		//Get current value of value[i] -> do not change it if != 0
+		value=in[i];
+		if (reCast<bool,doubletype>(value)){
+			/*this vertex already is inside one of the contours, continue*/
+			continue;
+		}
+
+		/*pick up vertex (x[i],y[i]) and figure out if located inside contour (xc,yc)*/
+		x0=x[i]; y0=y[i];
+		if(x0<xmin || x0>xmax || y0<ymin || y0>ymax){
+			value=0;
+		}
+		else{
+			value=pnpoly(numvertices,xc,yc,x0,y0,edgevalue);
+		}
+		in[i]=value;
+	}
+	 return 1;
+}/*}}}*/
+template <class doubletype> int ExpRead(int* pnprof,int** pprofnvertices,doubletype*** ppprofx,doubletype*** ppprofy,bool** pclosed,char* domainname){ /*{{{*/
+
+	/*indexing: */
+	int i,counter;
+
+	/*I/O: */
+	FILE   *fid = NULL;
+	char    chardummy[256];
+	double  ddummy;
+
+	/*output: */
+	int          nprof;                //number of profiles in the domainname file
+	int         *profnvertices = NULL; //array holding the number of vertices for the nprof profiles
+	doubletype **pprofx        = NULL; //array of profiles x coordinates
+	doubletype **pprofy        = NULL; //array of profiles y coordinates
+	bool        *closed        = NULL; //array holding closed flags for the nprof profiles
+
+	/*For each profile: */
+	int         n;
+	doubletype *x  = NULL;
+	doubletype *y  = NULL;
+	bool        cl;
+
+	/*open domain outline file for reading: */
+	if ((fid=fopen(domainname,"r"))==NULL){
+		_error_("could not find file \"" << domainname<<"\". Make sure that the file and path provided exist."); 
+	}
+
+	/*Do a first pass through the domainname file, to figure out how many profiles we need to read: */
+	nprof=1;
+	for(;;){
+		//## Name:filename
+		if(fscanf(fid,"%255s %255s\n",chardummy,chardummy)!=2) _error_("Could not read " << domainname);
+		//## Icon:0
+		if(fscanf(fid,"%255s %255s\n",chardummy,chardummy)!=2) _error_("Could not read " << domainname<<"(Expecting ## Icon:0 and read "<<chardummy<<")");
+		//# Points Count Value
+		if(fscanf(fid,"%255s %255s %255s %255s\n",chardummy,chardummy,chardummy,chardummy)!=4) _error_("Could not read " << domainname);
+		if(fscanf(fid,"%20i %255s\n",&n,chardummy)!=2) _error_("Could not read number of points in "<<domainname);
+		//# X pos Y pos
+		if(fscanf(fid,"%255s %255s %255s %255s %255s\n",chardummy,chardummy,chardummy,chardummy,chardummy)!=5) _error_("Could not read " << domainname);
+		for (i=0;i<n;i++){
+			if(fscanf(fid,"%30lf %30lf\n",&ddummy,&ddummy)!=2){
+				_error_("Could not read coordinate of vertex "<< i <<" of "<<domainname);
+			}
+		}
+		/*check whether we are at the end of the file, otherwise, keep reading next profile:*/
+		if(feof(fid)) break;
+		nprof++;
+	}
+
+	/*Allocate and initialize all the profiles: */
+	profnvertices = xNew<int>(nprof);
+	pprofx        = xNew<doubletype*>(nprof);
+	pprofy        = xNew<doubletype*>(nprof);
+	for (i=0;i<nprof;i++){
+		pprofx[i] = NULL;
+		pprofy[i] = NULL;
+	}
+	closed=xNew<bool>(nprof);
+
+	/*Reaset file pointer to beginning of file: */
+	fseek(fid,0,SEEK_SET);
+
+	/*Start reading profiles: */
+	for(counter=0;counter<nprof;counter++){
+
+		/*Skip header: */
+		//## Name:filename
+		if(fscanf(fid,"%255s %255s\n",chardummy,chardummy)!=2) _error_("Could not read " << domainname);
+		//## Icon:0
+		if(fscanf(fid,"%255s %255s\n",chardummy,chardummy)!=2) _error_("Could not read " << domainname);
+		//# Points Count Value
+		if(fscanf(fid,"%255s %255s %255s %255s\n",chardummy,chardummy,chardummy,chardummy)!=4) _error_("Could not read " << domainname);
+
+		/*Get number of profile vertices: */
+		if(fscanf(fid,"%20i %255s\n",&n,chardummy)!=2) _error_("Could not read number of points in "<<domainname);
+
+		/*Skip next line: */
+		//# X pos Y pos
+		if(fscanf(fid,"%255s %255s %255s %255s %255s\n",chardummy,chardummy,chardummy,chardummy,chardummy)!=5) _error_("Could not read " << domainname);
+
+		/*Allocate vertices: */
+		x=xNew<doubletype>(n);
+		y=xNew<doubletype>(n);
+
+		/*Read vertices: */
+		for (i=0;i<n;i++){
+			if(fscanf(fid,"%30lf %30lf\n",&x[i],&y[i])!=2){
+				_error_("Could not read coordinate of vertex "<<i<<" of "<<domainname);
+			}
+		}
+
+		/*Now check that we are dealing with open contours: */
+		cl=false;
+		if((x[0]==x[n-1]) && (y[0]==y[n-1])){
+			cl=true;
+		}
+
+		/*Assign pointers: */
+		profnvertices[counter]=n;
+		pprofx[counter]=x;
+		pprofy[counter]=y;
+		closed[counter]=cl;
+	}
+
+	/*close domain outline file: */
+	fclose(fid);
+
+	/*Assign output pointers: */
+	*pnprof=nprof;
+	*pprofnvertices=profnvertices;
+	*ppprofx=pprofx;
+	*ppprofy=pprofy;
+	if(pclosed) *pclosed=closed;
+	else         xDelete<bool>(closed);
+	return 1;
+
+} /*}}}*/
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/FSanalyticals/fsanalyticals.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/FSanalyticals/fsanalyticals.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/FSanalyticals/fsanalyticals.cpp	(revision 21239)
@@ -0,0 +1,209 @@
+/*!\file fx.cpp
+ * \brief: analytical fonction for FS 
+ * test case for a cube with Dirichlet conditions on all faces and no variation in z
+ * case 1: 2d test with quadratic functions
+ * case 2: 2d test with sinusoidal functions
+ * case 3: 3d test with quadratic functions
+ * case 4: 3d test with sinusoidal functions
+ * case 5: 3d test with sinusoidal functions, no variations with z, non homogeneous Dirichlet conditions
+ * case 6: 3d test with sinusoidal functions, non homogeneous Dirichlet conditions
+ *
+ * case 201: 3d test quadratic functions FS, ESTAR flow law
+ * case 202: 3d test quadratic functions HO, ESTAR flow law
+ */
+
+#include <math.h>
+#include "../Numerics/types.h"
+#include "../Numerics/constants.h"
+#include "./fsanalyticals.h"
+#include "../shared.h"
+
+IssmDouble fx(IssmDouble x,IssmDouble y,IssmDouble z,int testid){ /*{{{*/ 
+	IssmDouble p=2;
+	IssmDouble q=2;
+	IssmDouble a=1;
+
+	switch(testid){
+		case 1:
+			z=y;
+			return  4*pow(x, 2)*z*pow(x - 1, 2) + 4*pow(x, 2)*z*(z - 1)*(2*z - 1) + 4*pow(x, 2)*pow(x - 1, 2)*(z - 1) + 2*pow(x, 2)*pow(x - 1, 2)*(2*z - 1) + 16*x*z*(x - 1)*(z - 1)*(2*z - 1) - 4*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) + 6*pow(z, 2)*(6*pow(x, 2) - 6*x + 1) + 4*z*pow(x - 1, 2)*(z - 1)*(2*z - 1) - 2*z*(6*pow(x, 2) - 6*x + 1) + z - 1.0L/2.0L;
+		case 2:
+			z=y;
+			return 10*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 3)*pow(sin(PI*p*z), 2)*cos(PI*p*z) - 2*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 3)*pow(cos(PI*p*z), 3) - 6*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*pow(sin(PI*p*z), 2)*pow(cos(PI*p*x), 2)*cos(PI*p*z) + PI*q*sin(PI*q*z)*cos(PI*q*x);
+		case 3: 
+			return 4*pow(x, 2)*y*z*pow(x - 1, 2)*(z - 1) + 4*pow(x, 2)*y*z*(y - 1)*(2*y - 1)*(z - 1) + 2*pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1) + 4*pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(z - 1) + 2*pow(x, 2)*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) - 4*x*pow(y, 2)*z*(x - 1)*(y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(2*x - 1)*(y - 1)*(z - 1) - 4*x*y*z*(x - 1)*pow(y - 1, 2)*(z - 1) + 16*x*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*y*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - 2*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + 4*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1) + y - 1.0L/2.0L;
+		case 4: 
+			return 4*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) + 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x) + PI*q*sin(PI*q*y)*sin(PI*q*z)*cos(PI*q*x);
+		case 5: 
+			return 2.*(cos(PI*p*x) - 1)*PI*PI*p*p*sin(PI*p*y) + 3*PI*PI*p*p*sin(PI*p*y)*cos(PI*p*x) + PI*q*sin(PI*q*y)*cos(PI*q*x);
+		case 6: 
+			return 4. * PI*PI * p*p * (cos(p*PI*x)-1) * sin(p*PI*y) * sin(p*PI*z)+ 2. * PI*PI*p*p*  sin(p*PI*y)    * sin(p*PI*z) * cos(p*PI*x) + q * PI * cos(q*PI*x) * sin(q*PI*y) * sin(q*PI*z);
+		case 7: 
+			z=y;
+			return 4*pow(x, 2)*z*pow(x - 1, 2) + 4*pow(x, 2)*z*(z - 1)*(2*z - 1) + 4*pow(x, 2)*pow(x - 1, 2)*(z - 1) + 2*pow(x, 2)*pow(x - 1, 2)*(2*z - 1) + 16*x*z*(x - 1)*(z - 1)*(2*z - 1) - 4*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) + 6*pow(z, 2)*(6*pow(x, 2) - 6*x + 1) + 4*z*pow(x - 1, 2)*(z - 1)*(2*z - 1) - 2*z*(6*pow(x, 2) - 6*x + 1) + 1;
+		case 8: case 18:
+			return 1.0;
+		case 9:
+			return 4*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) + 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x) + 2*x*z;
+		case 10:
+			return 4*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) + 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x) + PI*q*pow(z, a)*sin(PI*q*y)*cos(PI*q*x);
+		case 11:
+			z=y;
+			return 32.0/5.0*pow(PI, 2)*sin(8*PI*z) + 8*PI*cos(8*PI*x + 1.0/3.0*PI);
+		case 12:
+			z=y;
+			return 32.0/5.0*pow(PI, 2)*sin(8*PI*z);
+		case 13:
+			z=y;
+			return 8.0*pow(PI, 2)*pow(x, 2)*(z - 2)*sin(4*PI*x*z) - 4.0*PI*x*cos(4*PI*x*z) + 16.0*pow(PI, 2)*pow(z, 2)*(z - 2)*sin(4*PI*x*z) - 0.25*PI*((16*pow(PI, 2)*x*z*(PI*x*z - PI*x)*cos(4*PI*x*z) + 4*pow(PI, 2)*x*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + 4*pow(PI, 2)*x*z*sin(4*PI*x*z) - 4*PI*x*(-PI*z + PI)*sin(4*PI*x*z) - 16*PI*x*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - 16*PI*z*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z) + 4*PI*(PI*x*z - PI*x)*sin(4*PI*x*z) - 8*(pow(PI, 2)*x*z - pow(PI, 2)*x)*sin(4*PI*x*z) - PI*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - PI*cos(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) + 3*(-4*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) + PI*x*cos(4*PI*x*z) + 4*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 4*PI*sin(4*PI*z)*cos(4*PI*x);
+		case 14:
+			z=y;
+			return 8.0*pow(2, 1.0L/3.0L)*pow(PI, 2)*pow(z, 2)*(z - 2)*sin(4*PI*x*z)/pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 1.0L/3.0L) - 0.0266666666666667*pow(2, 1.0L/3.0L)*PI*z*(z - 2)*(800.0*pow(PI, 3)*pow(z, 3)*pow(z - 2, 2)*sin(4*PI*x*z)*cos(4*PI*x*z) - (-10.0*PI*x*(z - 2)*cos(4*PI*x*z) + 0.3125*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) - 2.5*sin(4*PI*x*z) - 2*PI*cos(4*PI*x))*(40.0*pow(PI, 2)*x*z*(z - 2)*sin(4*PI*x*z) - 10.0*PI*z*cos(4*PI*x*z) - 10.0*PI*(z - 2)*cos(4*PI*x*z) + 1.25*PI*(32*cos(4*PI*x)/pow(x, 2) - 4*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(PI*pow(x, 3)) - 4*(4*pow(PI, 2)*pow(z, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(z, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) - 2*PI*z*(-PI*z + PI)*sin(4*PI*x*z) - 8*PI*z*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - (pow(PI, 2)*pow(z, 2) - 2*pow(PI, 2)*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 20*sin(4*PI*x)/(PI*pow(x, 3)) - 6*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 4)) - 6*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4)) + 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 5)) + 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 5))) + 8*pow(PI, 2)*sin(4*PI*x)) - (50*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 12.5*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 12.5*PI*x*cos(4*PI*x*z) - 50*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))*(4*pow(PI, 2)*x*z*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*x*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + pow(PI, 2)*x*z*sin(4*PI*x*z) - PI*x*(-PI*z + PI)*sin(4*PI*x*z) - 4.0*PI*x*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - 4*PI*z*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z) + PI*(PI*x*z - PI*x)*sin(4*PI*x*z) - 2*(pow(PI, 2)*x*z - pow(PI, 2)*x)*sin(4*PI*x*z) - 0.25*PI*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*cos(4*PI*x*z))/(pow(PI, 4)*pow(x, 6)) + 150*pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 7)))*cos(4*PI*x*z)/pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 4.0L/3.0L) + (1.0L/10.0L)*pow(2, 1.0L/3.0L)*(40.0*pow(PI, 2)*pow(x, 2)*(z - 2)*sin(4*PI*x*z) - 20.0*PI*x*cos(4*PI*x*z) - 1.25*PI*((16*pow(PI, 2)*x*z*(PI*x*z - PI*x)*cos(4*PI*x*z) + 4*pow(PI, 2)*x*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + 4*pow(PI, 2)*x*z*sin(4*PI*x*z) - 4*PI*x*(-PI*z + PI)*sin(4*PI*x*z) - 16*PI*x*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - 16*PI*z*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z) + 4*PI*(PI*x*z - PI*x)*sin(4*PI*x*z) - 8*(pow(PI, 2)*x*z - pow(PI, 2)*x)*sin(4*PI*x*z) - PI*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - PI*cos(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) + 3*(-4*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) + PI*x*cos(4*PI*x*z) + 4*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))))/pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 1.0L/3.0L) + 4*PI*sin(4*PI*z)*cos(4*PI*x) + (1.0L/150.0L)*pow(2, 1.0L/3.0L)*(-10.0*PI*x*(z - 2)*cos(4*PI*x*z) + 0.3125*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) - 2.5*sin(4*PI*x*z) - 2*PI*cos(4*PI*x))*(160.0*pow(PI, 3)*x*pow(z, 2)*pow(z - 2, 2)*sin(4*PI*x*z)*cos(4*PI*x*z) - 40.0*pow(PI, 2)*pow(z, 2)*(z - 2)*pow(cos(4*PI*x*z), 2) - 40.0*pow(PI, 2)*z*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (-8.0*pow(PI, 2)*pow(x, 2)*(z - 2)*sin(4*PI*x*z) + 4.0*PI*x*cos(4*PI*x*z) + 0.25*PI*((16*pow(PI, 2)*x*z*(PI*x*z - PI*x)*cos(4*PI*x*z) + 4*pow(PI, 2)*x*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + 4*pow(PI, 2)*x*z*sin(4*PI*x*z) - 4*PI*x*(-PI*z + PI)*sin(4*PI*x*z) - 16*PI*x*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - 16*PI*z*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z) + 4*PI*(PI*x*z - PI*x)*sin(4*PI*x*z) - 8*(pow(PI, 2)*x*z - pow(PI, 2)*x)*sin(4*PI*x*z) - PI*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - PI*cos(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) + 3*(-4*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) + PI*x*cos(4*PI*x*z) + 4*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))))*(-10.0*PI*x*(z - 2)*cos(4*PI*x*z) + 0.3125*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) - 2.5*sin(4*PI*x*z) - 2*PI*cos(4*PI*x)) - (10*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 2.5*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 2.5*PI*x*cos(4*PI*x*z) - 10*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))*(4*pow(PI, 2)*pow(x, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(x, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + pow(PI, 2)*pow(x, 2)*sin(4*PI*x*z) - 8.0*PI*x*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z))/(pow(PI, 4)*pow(x, 6)))/pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 4.0L/3.0L);
+		case 15:
+			z=y;
+			return -24000000000*pow(z - 1, 2) - 1000000*PI*sin(10*PI*x);
+		case 21:
+			z=y;
+			return z - 4.0L/3.0L*pow(2, 1.0L/3.0L)*(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1))*(4*(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1))*(pow(x, 2)*z*(z - 1)*(2*z - 1) + 4*x*z*(x - 1)*(z - 1)*(2*z - 1) + z*pow(x - 1, 2)*(z - 1)*(2*z - 1)) + 4*(2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - 3*pow(z, 2)*(6*pow(x, 2) - 6*x + 1) + z*(6*pow(x, 2) - 6*x + 1))*(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x)) + (2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1))*(2*pow(x, 2)*z*(x - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(2*z - 1) + pow(x, 2)*(x - 1)*(z - 1)*(2*z - 1) + 2*x*z*pow(x - 1, 2)*(z - 1) + x*z*pow(x - 1, 2)*(2*z - 1) + x*pow(x - 1, 2)*(z - 1)*(2*z - 1) - 3*pow(z, 4)*(2*x - 1) + 6*pow(z, 3)*(2*x - 1) - 3*pow(z, 2)*(2*x - 1)))/pow(4*pow(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1), 2) + 4*pow(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x), 2) + (1.0L/2.0L)*pow(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1), 2), 4.0L/3.0L) - 1.0L/3.0L*pow(2, 1.0L/3.0L)*(4*(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1))*(2*pow(x, 2)*z*(x - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(2*z - 1) + pow(x, 2)*(x - 1)*(z - 1)*(2*z - 1) + 2*x*z*pow(x - 1, 2)*(z - 1) + x*z*pow(x - 1, 2)*(2*z - 1) + x*pow(x - 1, 2)*(z - 1)*(2*z - 1)) + 4*(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x))*(2*pow(x, 3) - 3*pow(x, 2) + x + 6*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 6*z*(2*pow(x, 3) - 3*pow(x, 2) + x)) + (2*pow(x, 2)*z*pow(x - 1, 2) + 2*pow(x, 2)*pow(x - 1, 2)*(z - 1) + pow(x, 2)*pow(x - 1, 2)*(2*z - 1) - 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) + 3*pow(z, 2)*(6*pow(x, 2) - 6*x + 1) - z*(6*pow(x, 2) - 6*x + 1))*(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1)))*(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1))/pow(4*pow(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1), 2) + 4*pow(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x), 2) + (1.0L/2.0L)*pow(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1), 2), 4.0L/3.0L) + 2*pow(2, 1.0L/3.0L)*(pow(x, 2)*z*(z - 1)*(2*z - 1) + 4*x*z*(x - 1)*(z - 1)*(2*z - 1) + z*pow(x - 1, 2)*(z - 1)*(2*z - 1))/pow(4*pow(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1), 2) + 4*pow(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x), 2) + (1.0L/2.0L)*pow(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1), 2), 1.0L/3.0L) - 0.5 + pow(2, 1.0L/3.0L)*(2*pow(x, 2)*z*pow(x - 1, 2) + 2*pow(x, 2)*pow(x - 1, 2)*(z - 1) + pow(x, 2)*pow(x - 1, 2)*(2*z - 1) - 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) + 3*pow(z, 2)*(6*pow(x, 2) - 6*x + 1) - z*(6*pow(x, 2) - 6*x + 1))/pow(4*pow(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1), 2) + 4*pow(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x), 2) + (1.0L/2.0L)*pow(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1), 2), 1.0L/3.0L);
+		case 22:
+			z=y;
+			return -2*pow(2, 1.0L/3.0L)*(pow(x, 2)*z*pow(z - 2, 2) + 4*x*z*(x - 2)*pow(z - 2, 2) + z*pow(x - 2, 2)*pow(z - 2, 2))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 1.0L/3.0L) + (2.0L/9.0L)*pow(2, 1.0L/3.0L)*(2*pow(x, 2)*z*(x - 2)*pow(z - 2, 2) + 2*x*z*pow(x - 2, 2)*pow(z - 2, 2) + 1)*(96*pow(x, 7) - 672*pow(x, 6) + 1728*pow(x, 5) - 1920*pow(x, 4) + 768*pow(x, 3) + 9*pow(z, 8)*(3*pow(x, 3) - 9*pow(x, 2) + 8*x - 2) - 96*pow(z, 7)*(3*pow(x, 3) - 9*pow(x, 2) + 8*x - 2) + pow(z, 6)*(207*pow(x, 5) - 1035*pow(x, 4) + 3012*pow(x, 3) - 4896*pow(x, 2) + 3512*x - 800) - 24*pow(z, 5)*(69*pow(x, 5) - 345*pow(x, 4) + 700*pow(x, 3) - 720*pow(x, 2) + 360*x - 64) + 2*pow(z, 4)*(27*pow(x, 7) - 189*pow(x, 6) + 2988*pow(x, 5) - 13050*pow(x, 4) + 22976*pow(x, 3) - 18240*pow(x, 2) + 6064*x - 576) - 8*pow(z, 3)*(36*pow(x, 7) - 252*pow(x, 6) + 1512*pow(x, 5) - 5040*pow(x, 4) + 7840*pow(x, 3) - 5385*pow(x, 2) + 1298*x - 6) + 48*pow(z, 2)*(11*pow(x, 7) - 77*pow(x, 6) + 276*pow(x, 5) - 610*pow(x, 4) + 768*pow(x, 3) - 486*pow(x, 2) + 124*x - 4) - 96*z*(4*pow(x, 7) - 28*pow(x, 6) + 72*pow(x, 5) - 80*pow(x, 4) + 32*pow(x, 3) - 3*pow(x, 2) + 6*x - 2))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 4.0L/3.0L) - pow(2, 1.0L/3.0L)*(pow(x, 2)*z*pow(x - 2, 2) + 2*pow(x, 2)*pow(x - 2, 2)*(z - 2) - 2*pow(z, 3)*(3*pow(x, 2) - 6*x + 2) + 8*pow(z, 2)*(3*pow(x, 2) - 6*x + 2) - 8*z*(3*pow(x, 2) - 6*x + 2))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 1.0L/3.0L) - 1.0L/27.0L*pow(2, 1.0L/3.0L)*(6*pow(x, 2)*z*pow(x - 2, 2)*(z - 2) + 3*pow(x, 2)*pow(x - 2, 2)*pow(z - 2, 2) - 3*pow(z, 4)*(3*pow(x, 2) - 6*x + 2) + 16*pow(z, 3)*(3*pow(x, 2) - 6*x + 2) - 24*pow(z, 2)*(3*pow(x, 2) - 6*x + 2))*(48*pow(x, 8) - 384*pow(x, 7) + 1152*pow(x, 6) - 1536*pow(x, 5) + 768*pow(x, 4) - 96*pow(x, 3) + 288*pow(x, 2) - 192*x - 6*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + 56*pow(z, 6)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - pow(z, 5)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) + 20*pow(z, 4)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) - pow(z, 3)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) + 12*pow(z, 2)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) - 12*z*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 4.0L/3.0L) + 4*PI*cos(4*PI*x + (1.0L/3.0L)*PI);
+		case 24:
+			return 2*pow(2, 1.0L/3.0L)*pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x)/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 1.0L/3.0L) - 2.0L/3.0L*pow(2, 1.0L/3.0L)*PI*p*(12*pow(PI, 3)*pow(p, 3)*sin(PI*p*x)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2)*cos(PI*p*x) - (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) - 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*cos(PI*p*x)*cos(PI*p*y) + pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*cos(PI*p*x)*cos(PI*p*z)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) - 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z)))*sin(PI*p*x)*sin(PI*p*y)*sin(PI*p*z)/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) + PI*q*sin(PI*q*y)*sin(PI*q*z)*cos(PI*q*x) - 1.0L/6.0L*pow(2, 1.0L/3.0L)*(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(12*pow(PI, 3)*pow(p, 3)*pow(sin(PI*p*x), 2)*sin(PI*p*y)*pow(sin(PI*p*z), 2)*cos(PI*p*y) + (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) + pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*cos(PI*p*x)*cos(PI*p*y) - 2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*cos(PI*p*y)*cos(PI*p*z)))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) - 1.0L/6.0L*pow(2, 1.0L/3.0L)*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(12*pow(PI, 3)*pow(p, 3)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*sin(PI*p*z)*cos(PI*p*z) + (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(-2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*cos(PI*p*y)*cos(PI*p*z) + pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*cos(PI*p*x)*cos(PI*p*z)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) + pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x)))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) + pow(2, 1.0L/3.0L)*(2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 1.0L/3.0L);
+
+		case 101: 
+			return 4*pow(x, 2)*y*z*pow(x - 1, 2)*(z - 1) + 8*pow(x, 2)*y*z*(y - 1)*(2*y - 1)*(z - 1) + 2*pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1) + 4*pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(z - 1) + 2*pow(x, 2)*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) - 12*x*pow(y, 2)*z*(x - 1)*(y - 1)*(z - 1) - 6*x*pow(y, 2)*z*(2*x - 1)*(y - 1)*(z - 1) - 12*x*y*z*(x - 1)*pow(y - 1, 2)*(z - 1) + 32*x*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 6*x*y*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - 6*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + 8*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 6*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1);
+		case 201:
+			return pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 1.0L/3.0L) + y - 1.0L/18.0L*(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(2*pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 2*x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1) + x*pow(y, 2)*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*y*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1) + pow(x, 2)*y*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + x*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + (2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1) + 2*pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2) - 2*x*pow(y, 2)*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) - pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 4.0L/3.0L) - 2.0L/9.0L*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*((x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2) + x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2) + 2*x*pow(y, 2)*(x - 1)*pow(y - 1, 2)*(z - 1) + x*pow(y, 2)*(2*x - 1)*pow(y - 1, 2)*(z - 1) + pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 2*(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1) + pow(x, 2)*y*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + x*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 8*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*x*pow(y, 2)*z*(x - 1)*(y - 1)*(z - 1) + x*pow(y, 2)*z*(2*x - 1)*(y - 1)*(z - 1) + 2*x*y*z*(x - 1)*pow(y - 1, 2)*(z - 1) + x*y*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) + pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(pow(x, 2)*y*z*(y - 1)*(2*y - 1)*(z - 1) + 4*x*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 2*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*pow(x, 2)*y*z*(x - 1)*(y - 1)*(z - 1) + pow(x, 2)*y*z*(x - 1)*(2*y - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*pow(y - 1, 2)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + x*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1)))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 4.0L/3.0L) + 2*(pow(x, 2)*y*z*(y - 1)*(2*y - 1)*(z - 1) + 4*x*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 1.0L/3.0L) - 1.0L/18.0L*(2*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1) + x*pow(y, 2)*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*y*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + (pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1) + 2*pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 8*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(z - 1) + 4*x*y*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(2*pow(x, 2)*y*z*(x - 1)*(y - 1)*(z - 1) + pow(x, 2)*y*z*(x - 1)*(2*y - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + x*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 2*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(z - 1) + 2*pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*(y - 1)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*(y - 1)*(z - 1) - 2*x*y*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*y*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) - y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 4.0L/3.0L) - 1.0L/2.0L + (2*pow(x, 2)*y*z*pow(x - 1, 2)*(z - 1) + 2*pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*(y - 1)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*(y - 1)*(z - 1) - 2*x*y*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*y*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) - y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 1.0L/3.0L);
+		case 202:
+			return -x*y*(x - 1)*(y - 1)/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 1.0L/3.0L) - 4*y*z*(y - 1)*(z - 1)/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 1.0L/3.0L) + (1.0L/18.0L)*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1))*(10*x*y*(x - 1)*(y - 1)*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1)) + 8*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(x - 1) + x*y*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1) + x*(x - 1)*(y - 1)*(z - 1)) + 2*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(y - 1) + x*y*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1) + y*(x - 1)*(y - 1)*(z - 1)) + (x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(x - 1) + 2*x*y*z*(y - 1) + x*y*(x - 1)*(z - 1) + 2*x*y*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1) + x*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1) + 2*y*(x - 1)*(y - 1)*(z - 1)) + 2*(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(2*x*y*z*(x - 1) + x*y*z*(y - 1) + 2*x*y*(x - 1)*(z - 1) + x*y*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1) + 2*x*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1) + y*(x - 1)*(y - 1)*(z - 1)))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 4.0L/3.0L) + (2.0L/9.0L)*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1))*(4*y*z*(y - 1)*(z - 1)*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1)) + 5*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(y - 1) + x*y*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1) + y*(x - 1)*(y - 1)*(z - 1)) + 8*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + (x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + 4*y*z*(y - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + 4*(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + y*z*(y - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 4.0L/3.0L) + (2.0L/9.0L)*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(4*y*z*(y - 1)*(z - 1)*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1)) + 5*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(y - 1) + x*y*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1) + y*(x - 1)*(y - 1)*(z - 1)) + 8*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + (x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + 4*y*z*(y - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + 4*(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + y*z*(y - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 4.0L/3.0L) - 2*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 1.0L/3.0L) + (1.0L/18.0L)*(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(16*x*z*(x - 1)*(z - 1)*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1)) + 5*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(x - 1) + x*y*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1) + x*(x - 1)*(y - 1)*(z - 1)) + 2*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + 2*(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(x - 1)*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + 2*(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + 4*x*z*(x - 1)*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 4.0L/3.0L) - (x*y*z*(z - 1) + x*z*(x - 1)*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 1.0L/3.0L);
+		case 211:
+			return (200.0L/707238535107.0L)*pow(17, 2.0L/3.0L)*pow(6, 1.0L/3.0L)*(-9*(169*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(2197*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-2197*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 26*z*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + sqrt(13)*z*(-78*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 13*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 169*sqrt(13)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L)) + 13*(9*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 78*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 13*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(9*sqrt(13)*z*(-2197*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 26*z*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + sqrt(13)*z*(-78*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 13*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 117*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 1014*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 2197*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 13*sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L)))/pow((8.0L/17.0L)*pow(fabs((15.0L/26.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/4394.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs(-45.0L/2197.0L*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (30.0L/169.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 5.0L/169.0L*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs((135.0L/4394.0L)*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 45.0L/169.0L*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/338.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + 1, 4.0L/3.0L) - 150.0L/235746178369.0L*pow(17, 2.0L/3.0L)*pow(6, 1.0L/3.0L)*(3*(169*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(507*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 3*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-6*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + 3*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 6591*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 3*sqrt(13)*z*(6*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - (507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 169*sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 169*sqrt(13)*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 507*sqrt(13)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 28561*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))) + 13*(9*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 78*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 13*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(9*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 78*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 3*sqrt(13)*z*(-6*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + 3*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 6591*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 3*sqrt(13)*z*(6*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - (507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 169*sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 169*sqrt(13)*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 13*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 507*sqrt(13)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 2197*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))))/pow((8.0L/17.0L)*pow(fabs((15.0L/26.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/4394.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs(-45.0L/2197.0L*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (30.0L/169.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 5.0L/169.0L*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs((135.0L/4394.0L)*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 45.0L/169.0L*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/338.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + 1, 4.0L/3.0L);
+
+		case 212:
+			return (16.0L/9.0L)*x*(4*x + 1)/(pow(2*(4*pow(fabs((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z)), 2) + 9)/(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11) + 1, 1.0L/3.0L)*pow((4.0L/3.0L)*pow(x, 2) + (1.0L/3.0L)*pow(2*x + 1, 2) + 11.0L/6.0L, 4.0L/3.0L)) + (64.0L/3.0L)*x*(-(4*x + 1)*(4*pow(fabs((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z)), 2) + 9)/pow(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11, 2) + 2*(pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (y + 3*z)/fabs(y + 3*z))*((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z))/(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11))/(pow(2*(4*pow(fabs((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z)), 2) + 9)/(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11) + 1, 4.0L/3.0L)*pow((4.0L/3.0L)*pow(x, 2) + (1.0L/3.0L)*pow(2*x + 1, 2) + 11.0L/6.0L, 1.0L/3.0L)) + (4.0L/9.0L)*(4*x + 1)/(pow(2*(4*pow(fabs((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z)), 2) + 9)/(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11) + 1, 1.0L/3.0L)*pow((4.0L/3.0L)*pow(x, 2) + (1.0L/3.0L)*pow(2*x + 1, 2) + 11.0L/6.0L, 4.0L/3.0L)) - 4/(pow(2*(4*pow(fabs((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z)), 2) + 9)/(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11) + 1, 1.0L/3.0L)*pow((4.0L/3.0L)*pow(x, 2) + (1.0L/3.0L)*pow(2*x + 1, 2) + 11.0L/6.0L, 1.0L/3.0L)) + (16.0L/3.0L)*(-(4*x + 1)*(4*pow(fabs((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z)), 2) + 9)/pow(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11, 2) + 2*(pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (y + 3*z)/fabs(y + 3*z))*((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z))/(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11))/(pow(2*(4*pow(fabs((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z)), 2) + 9)/(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11) + 1, 4.0L/3.0L)*pow((4.0L/3.0L)*pow(x, 2) + (1.0L/3.0L)*pow(2*x + 1, 2) + 11.0L/6.0L, 1.0L/3.0L));
+
+		default:
+			_error_("FS analytical solution"<<testid<<" not implemented yet");
+	}
+}
+/*}}}*/
+IssmDouble fy(IssmDouble x,IssmDouble y,IssmDouble z,int testid){ /*{{{*/ 
+	IssmDouble p=2;
+	IssmDouble q=2;
+	IssmDouble a=1;
+
+	switch(testid){
+		case 1:
+			z=y;
+			return -8*pow(x, 3) + 4*pow(x, 2)*z*(x - 1)*(z - 1) + 2*pow(x, 2)*z*(x - 1)*(2*z - 1) + 2*pow(x, 2)*(x - 1)*(z - 1)*(2*z - 1) + 12*pow(x, 2) + 4*x*z*pow(x - 1, 2)*(z - 1) + 2*x*z*pow(x - 1, 2)*(2*z - 1) + 2*x*pow(x - 1, 2)*(z - 1)*(2*z - 1) - 3*x - 6*pow(z, 4)*(2*x - 1) + 12*pow(z, 3)*(2*x - 1) - 6*pow(z, 2)*(2*x - 1) - 24*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + 24*z*(2*pow(x, 3) - 3*pow(x, 2) + x) - 1.0L/2.0L;
+		case 2: 
+			z=y;
+			return -10*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*z), 3)*cos(PI*p*x) + 6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*sin(PI*p*z)*cos(PI*p*x)*pow(cos(PI*p*z), 2) + 2*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*z), 3)*pow(cos(PI*p*x), 3) + PI*q*sin(PI*q*x)*cos(PI*q*z);
+		case 3: 
+			return 4*pow(x, 2)*y*z*(x - 1)*(y - 1)*(z - 1) + 2*pow(x, 2)*y*z*(x - 1)*(2*y - 1)*(z - 1) + 2*pow(x, 2)*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 4*x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(z - 1) - 4*x*pow(y, 2)*z*pow(y - 1, 2)*(z - 1) - 2*x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2) + 4*x*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) - 16*x*y*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + 2*x*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 4*x*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1) + x - 4*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - 2*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - 1.0L/2.0L;
+		case 4: 
+			return -2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y) + PI*q*sin(PI*q*x)*sin(PI*q*z)*cos(PI*q*y);
+		case 5: 
+			return -(cos(PI*p*y) - 1)*PI*PI*p*p*sin(PI*p*x) + PI*q*sin(PI*q*x)*cos(PI*q*y);
+		case 6: 
+			return - 4. * PI*PI * p*p * (cos(p*PI*y)-1) * sin(p*PI*x) * sin(p*PI*z)-  2. * PI*PI * p*p *  sin(p*PI*x)    * cos(p*PI*y) * sin(p*PI*z)+ q * PI * sin(q*PI*x) * cos(q*PI*y) * sin(q*PI*z);
+		case 7: 
+			z=y;
+			return -8*pow(x, 3) + 4*pow(x, 2)*z*(x - 1)*(z - 1) + 2*pow(x, 2)*z*(x - 1)*(2*z - 1) + 2*pow(x, 2)*(x - 1)*(z - 1)*(2*z - 1) + 12*pow(x, 2) + 4*x*z*pow(x - 1, 2)*(z - 1) + 2*x*z*pow(x - 1, 2)*(2*z - 1) + 2*x*pow(x - 1, 2)*(z - 1)*(2*z - 1) - 4*x - 6*pow(z, 4)*(2*x - 1) + 12*pow(z, 3)*(2*x - 1) - 6*pow(z, 2)*(2*x - 1) - 24*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + 24*z*(2*pow(x, 3) - 3*pow(x, 2) + x);
+		case 8: case 18:
+			return 1.0;
+		case 9: 
+			return -2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y) + 2*y*z;
+		case 10:
+			return -2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y) + PI*q*pow(z, a)*sin(PI*q*x)*cos(PI*q*y);
+		case 11:
+			z=y;
+			return 32.0/5.0*pow(PI, 2)*sin(8*PI*x) - 10.;
+		case 12:
+			z=y;
+			return 32.0/5.0*pow(PI, 2)*sin(8*PI*x) - 100;
+		case 13:
+			z=y;
+			return 8.0*pow(PI, 2)*x*z*(z - 2)*sin(4*PI*x*z) - 2.0*PI*z*cos(4*PI*x*z) - 2.0*PI*(z - 2)*cos(4*PI*x*z) + 0.25*PI*(32*cos(4*PI*x)/pow(x, 2) - 4*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(PI*pow(x, 3)) - 4*(4*pow(PI, 2)*pow(z, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(z, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) - 2*PI*z*(-PI*z + PI)*sin(4*PI*x*z) - 8*PI*z*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - (pow(PI, 2)*pow(z, 2) - 2*pow(PI, 2)*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 20*sin(4*PI*x)/(PI*pow(x, 3)) - 6*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 4)) - 6*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4)) + 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 5)) + 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 5))) + 4*PI*sin(4*PI*x)*cos(4*PI*z) + (8.0L/5.0L)*pow(PI, 2)*sin(4*PI*x) + 2*(-4.0*pow(PI, 2)*pow(x, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) - 1.0*pow(PI, 2)*pow(x, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) - 1.0*pow(PI, 2)*pow(x, 2)*sin(4*PI*x*z) + 8.0*PI*x*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z))/(pow(PI, 2)*pow(x, 3));
+		case 14:
+			z=y;
+			return 4*PI*sin(4*PI*x)*cos(4*PI*z) + (1.0L/10.0L)*pow(2, 1.0L/3.0L)*(40.0*pow(PI, 2)*x*z*(z - 2)*sin(4*PI*x*z) - 10.0*PI*z*cos(4*PI*x*z) - 10.0*PI*(z - 2)*cos(4*PI*x*z) + 1.25*PI*(32*cos(4*PI*x)/pow(x, 2) - 4*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(PI*pow(x, 3)) - 4*(4*pow(PI, 2)*pow(z, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(z, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) - 2*PI*z*(-PI*z + PI)*sin(4*PI*x*z) - 8*PI*z*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - (pow(PI, 2)*pow(z, 2) - 2*pow(PI, 2)*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 20*sin(4*PI*x)/(PI*pow(x, 3)) - 6*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 4)) - 6*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4)) + 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 5)) + 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 5))) + 8*pow(PI, 2)*sin(4*PI*x))/pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 1.0L/3.0L) + (1.0L/750.0L)*pow(2, 1.0L/3.0L)*(-10.0*PI*x*(z - 2)*cos(4*PI*x*z) + 0.3125*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) - 2.5*sin(4*PI*x*z) - 2*PI*cos(4*PI*x))*(800.0*pow(PI, 3)*pow(z, 3)*pow(z - 2, 2)*sin(4*PI*x*z)*cos(4*PI*x*z) - (-10.0*PI*x*(z - 2)*cos(4*PI*x*z) + 0.3125*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) - 2.5*sin(4*PI*x*z) - 2*PI*cos(4*PI*x))*(40.0*pow(PI, 2)*x*z*(z - 2)*sin(4*PI*x*z) - 10.0*PI*z*cos(4*PI*x*z) - 10.0*PI*(z - 2)*cos(4*PI*x*z) + 1.25*PI*(32*cos(4*PI*x)/pow(x, 2) - 4*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(PI*pow(x, 3)) - 4*(4*pow(PI, 2)*pow(z, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(z, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) - 2*PI*z*(-PI*z + PI)*sin(4*PI*x*z) - 8*PI*z*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - (pow(PI, 2)*pow(z, 2) - 2*pow(PI, 2)*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 20*sin(4*PI*x)/(PI*pow(x, 3)) - 6*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 4)) - 6*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4)) + 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 5)) + 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 5))) + 8*pow(PI, 2)*sin(4*PI*x)) - (50*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 12.5*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 12.5*PI*x*cos(4*PI*x*z) - 50*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))*(4*pow(PI, 2)*x*z*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*x*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + pow(PI, 2)*x*z*sin(4*PI*x*z) - PI*x*(-PI*z + PI)*sin(4*PI*x*z) - 4.0*PI*x*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - 4*PI*z*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z) + PI*(PI*x*z - PI*x)*sin(4*PI*x*z) - 2*(pow(PI, 2)*x*z - pow(PI, 2)*x)*sin(4*PI*x*z) - 0.25*PI*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*cos(4*PI*x*z))/(pow(PI, 4)*pow(x, 6)) + 150*pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 7)))/pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 4.0L/3.0L) - pow(2, 1.0L/3.0L)*(4.0*pow(PI, 2)*pow(x, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(x, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + pow(PI, 2)*pow(x, 2)*sin(4*PI*x*z) - 8.0*PI*x*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z))/(pow(PI, 2)*pow(x, 3)*pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 1.0L/3.0L)) - 1.0L/15.0L*pow(2, 1.0L/3.0L)*(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) + (-1.0*pow(PI, 2)*pow(x, 2)*z + pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))*(160.0*pow(PI, 3)*x*pow(z, 2)*pow(z - 2, 2)*sin(4*PI*x*z)*cos(4*PI*x*z) - 40.0*pow(PI, 2)*pow(z, 2)*(z - 2)*pow(cos(4*PI*x*z), 2) - 40.0*pow(PI, 2)*z*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (-8.0*pow(PI, 2)*pow(x, 2)*(z - 2)*sin(4*PI*x*z) + 4.0*PI*x*cos(4*PI*x*z) + 0.25*PI*((16*pow(PI, 2)*x*z*(PI*x*z - PI*x)*cos(4*PI*x*z) + 4*pow(PI, 2)*x*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + 4*pow(PI, 2)*x*z*sin(4*PI*x*z) - 4*PI*x*(-PI*z + PI)*sin(4*PI*x*z) - 16*PI*x*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - 16*PI*z*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z) + 4*PI*(PI*x*z - PI*x)*sin(4*PI*x*z) - 8*(pow(PI, 2)*x*z - pow(PI, 2)*x)*sin(4*PI*x*z) - PI*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - PI*cos(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) + 3*(-4*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) + PI*x*cos(4*PI*x*z) + 4*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))))*(-10.0*PI*x*(z - 2)*cos(4*PI*x*z) + 0.3125*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) - 2.5*sin(4*PI*x*z) - 2*PI*cos(4*PI*x)) - (10*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 2.5*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 2.5*PI*x*cos(4*PI*x*z) - 10*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))*(4*pow(PI, 2)*pow(x, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(x, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + pow(PI, 2)*pow(x, 2)*sin(4*PI*x*z) - 8.0*PI*x*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z))/(pow(PI, 4)*pow(x, 6)))/(pow(PI, 2)*pow(x, 3)*pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 4.0L/3.0L));
+		case 15:
+			z=y;
+			return 54000000000000*pow(PI, 2)*sin(30*PI*x) + 6000000000000*pow(PI, 2)*sin(10*PI*x + (1.0L/5.0L)*PI) - 10000000;
+		case 21:
+			z=y;
+			return x + (4.0L/3.0L)*pow(2, 1.0L/3.0L)*(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x))*(4*(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1))*(2*pow(x, 2)*z*(x - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(2*z - 1) + pow(x, 2)*(x - 1)*(z - 1)*(2*z - 1) + 2*x*z*pow(x - 1, 2)*(z - 1) + x*z*pow(x - 1, 2)*(2*z - 1) + x*pow(x - 1, 2)*(z - 1)*(2*z - 1)) + 4*(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x))*(2*pow(x, 3) - 3*pow(x, 2) + x + 6*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 6*z*(2*pow(x, 3) - 3*pow(x, 2) + x)) + (2*pow(x, 2)*z*pow(x - 1, 2) + 2*pow(x, 2)*pow(x - 1, 2)*(z - 1) + pow(x, 2)*pow(x - 1, 2)*(2*z - 1) - 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) + 3*pow(z, 2)*(6*pow(x, 2) - 6*x + 1) - z*(6*pow(x, 2) - 6*x + 1))*(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1)))/pow(4*pow(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1), 2) + 4*pow(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x), 2) + (1.0L/2.0L)*pow(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1), 2), 4.0L/3.0L) - 1.0L/3.0L*pow(2, 1.0L/3.0L)*(4*(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1))*(pow(x, 2)*z*(z - 1)*(2*z - 1) + 4*x*z*(x - 1)*(z - 1)*(2*z - 1) + z*pow(x - 1, 2)*(z - 1)*(2*z - 1)) + 4*(2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - 3*pow(z, 2)*(6*pow(x, 2) - 6*x + 1) + z*(6*pow(x, 2) - 6*x + 1))*(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x)) + (2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1))*(2*pow(x, 2)*z*(x - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(2*z - 1) + pow(x, 2)*(x - 1)*(z - 1)*(2*z - 1) + 2*x*z*pow(x - 1, 2)*(z - 1) + x*z*pow(x - 1, 2)*(2*z - 1) + x*pow(x - 1, 2)*(z - 1)*(2*z - 1) - 3*pow(z, 4)*(2*x - 1) + 6*pow(z, 3)*(2*x - 1) - 3*pow(z, 2)*(2*x - 1)))*(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1))/pow(4*pow(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1), 2) + 4*pow(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x), 2) + (1.0L/2.0L)*pow(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1), 2), 4.0L/3.0L) - 0.5 - 2*pow(2, 1.0L/3.0L)*(2*pow(x, 3) - 3*pow(x, 2) + x + 6*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 6*z*(2*pow(x, 3) - 3*pow(x, 2) + x))/pow(4*pow(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1), 2) + 4*pow(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x), 2) + (1.0L/2.0L)*pow(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1), 2), 1.0L/3.0L) + pow(2, 1.0L/3.0L)*(2*pow(x, 2)*z*(x - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(2*z - 1) + pow(x, 2)*(x - 1)*(z - 1)*(2*z - 1) + 2*x*z*pow(x - 1, 2)*(z - 1) + x*z*pow(x - 1, 2)*(2*z - 1) + x*pow(x - 1, 2)*(z - 1)*(2*z - 1) - 3*pow(z, 4)*(2*x - 1) + 6*pow(z, 3)*(2*x - 1) - 3*pow(z, 2)*(2*x - 1))/pow(4*pow(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1), 2) + 4*pow(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x), 2) + (1.0L/2.0L)*pow(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1), 2), 1.0L/3.0L);
+		case 22:
+			z=y;
+			return (2.0L/9.0L)*pow(2, 1.0L/3.0L)*(4*pow(z, 3)*(pow(x, 3) - 3*pow(x, 2) + 2*x) - 16*pow(z, 2)*(pow(x, 3) - 3*pow(x, 2) + 2*x) + 16*z*(pow(x, 3) - 3*pow(x, 2) + 2*x) + 1)*(48*pow(x, 8) - 384*pow(x, 7) + 1152*pow(x, 6) - 1536*pow(x, 5) + 768*pow(x, 4) - 96*pow(x, 3) + 288*pow(x, 2) - 192*x - 6*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + 56*pow(z, 6)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - pow(z, 5)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) + 20*pow(z, 4)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) - pow(z, 3)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) + 12*pow(z, 2)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) - 12*z*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 4.0L/3.0L) + 4*pow(2, 1.0L/3.0L)*(4*pow(x, 3) - 12*pow(x, 2) + 8*x + 3*pow(z, 2)*(pow(x, 3) - 3*pow(x, 2) + 2*x) - 8*z*(pow(x, 3) - 3*pow(x, 2) + 2*x))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 1.0L/3.0L) + (1.0L/27.0L)*pow(2, 1.0L/3.0L)*(6*pow(x, 2)*z*pow(x - 2, 2)*(z - 2) + 3*pow(x, 2)*pow(x - 2, 2)*pow(z - 2, 2) - 3*pow(z, 4)*(3*pow(x, 2) - 6*x + 2) + 16*pow(z, 3)*(3*pow(x, 2) - 6*x + 2) - 24*pow(z, 2)*(3*pow(x, 2) - 6*x + 2))*(96*pow(x, 7) - 672*pow(x, 6) + 1728*pow(x, 5) - 1920*pow(x, 4) + 768*pow(x, 3) + 9*pow(z, 8)*(3*pow(x, 3) - 9*pow(x, 2) + 8*x - 2) - 96*pow(z, 7)*(3*pow(x, 3) - 9*pow(x, 2) + 8*x - 2) + pow(z, 6)*(207*pow(x, 5) - 1035*pow(x, 4) + 3012*pow(x, 3) - 4896*pow(x, 2) + 3512*x - 800) - 24*pow(z, 5)*(69*pow(x, 5) - 345*pow(x, 4) + 700*pow(x, 3) - 720*pow(x, 2) + 360*x - 64) + 2*pow(z, 4)*(27*pow(x, 7) - 189*pow(x, 6) + 2988*pow(x, 5) - 13050*pow(x, 4) + 22976*pow(x, 3) - 18240*pow(x, 2) + 6064*x - 576) - 8*pow(z, 3)*(36*pow(x, 7) - 252*pow(x, 6) + 1512*pow(x, 5) - 5040*pow(x, 4) + 7840*pow(x, 3) - 5385*pow(x, 2) + 1298*x - 6) + 48*pow(z, 2)*(11*pow(x, 7) - 77*pow(x, 6) + 276*pow(x, 5) - 610*pow(x, 4) + 768*pow(x, 3) - 486*pow(x, 2) + 124*x - 4) - 96*z*(4*pow(x, 7) - 28*pow(x, 6) + 72*pow(x, 5) - 80*pow(x, 4) + 32*pow(x, 3) - 3*pow(x, 2) + 6*x - 2))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 4.0L/3.0L) - pow(2, 1.0L/3.0L)*(2*pow(x, 2)*z*(x - 2)*(z - 2) + pow(x, 2)*(x - 2)*pow(z - 2, 2) + 2*x*z*pow(x - 2, 2)*(z - 2) + x*pow(x - 2, 2)*pow(z - 2, 2) - 3*pow(z, 4)*(x - 1) + 16*pow(z, 3)*(x - 1) - 24*pow(z, 2)*(x - 1))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 1.0L/3.0L) - 10;
+		case 24:
+			return -pow(2, 1.0L/3.0L)*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y)/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 1.0L/3.0L) + (1.0L/3.0L)*pow(2, 1.0L/3.0L)*PI*p*(12*pow(PI, 3)*pow(p, 3)*pow(sin(PI*p*x), 2)*sin(PI*p*y)*pow(sin(PI*p*z), 2)*cos(PI*p*y) + (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) + pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*cos(PI*p*x)*cos(PI*p*y) - 2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*cos(PI*p*y)*cos(PI*p*z)))*sin(PI*p*x)*sin(PI*p*y)*sin(PI*p*z)/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) + PI*q*sin(PI*q*x)*sin(PI*q*z)*cos(PI*q*y) - 1.0L/6.0L*pow(2, 1.0L/3.0L)*(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(12*pow(PI, 3)*pow(p, 3)*sin(PI*p*x)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2)*cos(PI*p*x) - (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) - 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*cos(PI*p*x)*cos(PI*p*y) + pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*cos(PI*p*x)*cos(PI*p*z)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) - 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z)))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) - 1.0L/6.0L*pow(2, 1.0L/3.0L)*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(12*pow(PI, 3)*pow(p, 3)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*sin(PI*p*z)*cos(PI*p*z) + (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(-2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*cos(PI*p*y)*cos(PI*p*z) + pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*cos(PI*p*x)*cos(PI*p*z)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) + pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x)))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) - 1.0L/2.0L*pow(2, 1.0L/3.0L)*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) - 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 1.0L/3.0L) - 1.0L/2.0L*pow(2, 1.0L/3.0L)*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) + pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 1.0L/3.0L); 
+
+		case 101: 
+			return 12*pow(x, 2)*y*z*(x - 1)*(y - 1)*(z - 1) + 6*pow(x, 2)*y*z*(x - 1)*(2*y - 1)*(z - 1) + 6*pow(x, 2)*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 8*x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(z - 1) - 4*x*pow(y, 2)*z*pow(y - 1, 2)*(z - 1) - 2*x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2) + 12*x*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + 6*x*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) - 32*x*y*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + 6*x*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 8*x*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1) - 4*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - 2*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1);
+		case 201:
+			return -x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 1.0L/3.0L) + x + (1.0L/18.0L)*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 2*x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1) + x*pow(y, 2)*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*y*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1) + pow(x, 2)*y*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + x*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + (2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1) + 2*pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2) - 2*x*pow(y, 2)*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) - pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 4.0L/3.0L) + (2.0L/9.0L)*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1) + x*pow(y, 2)*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*y*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + (pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1) + 2*pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 8*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(z - 1) + 4*x*y*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(2*pow(x, 2)*y*z*(x - 1)*(y - 1)*(z - 1) + pow(x, 2)*y*z*(x - 1)*(2*y - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + x*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 2*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(z - 1) + 2*pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*(y - 1)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*(y - 1)*(z - 1) - 2*x*y*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*y*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) - y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 4.0L/3.0L) - 2*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(z - 1) + 4*x*y*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 1.0L/3.0L) - 1.0L/18.0L*((x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2) + x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2) + 2*x*pow(y, 2)*(x - 1)*pow(y - 1, 2)*(z - 1) + x*pow(y, 2)*(2*x - 1)*pow(y - 1, 2)*(z - 1) + pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 2*(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1) + pow(x, 2)*y*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + x*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 8*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*x*pow(y, 2)*z*(x - 1)*(y - 1)*(z - 1) + x*pow(y, 2)*z*(2*x - 1)*(y - 1)*(z - 1) + 2*x*y*z*(x - 1)*pow(y - 1, 2)*(z - 1) + x*y*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) + pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(pow(x, 2)*y*z*(y - 1)*(2*y - 1)*(z - 1) + 4*x*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 2*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*pow(x, 2)*y*z*(x - 1)*(y - 1)*(z - 1) + pow(x, 2)*y*z*(x - 1)*(2*y - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*pow(y - 1, 2)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + x*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1)))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 4.0L/3.0L) - 1.0L/2.0L + (2*pow(x, 2)*y*z*(x - 1)*(y - 1)*(z - 1) + pow(x, 2)*y*z*(x - 1)*(2*y - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*pow(y - 1, 2)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + x*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 1.0L/3.0L);
+		case 202:
+			return -2*x*y*(x - 1)*(y - 1)/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 1.0L/3.0L) - 8*x*z*(x - 1)*(z - 1)/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 1.0L/3.0L) + (1.0L/9.0L)*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1))*(10*x*y*(x - 1)*(y - 1)*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1)) + 8*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(x - 1) + x*y*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1) + x*(x - 1)*(y - 1)*(z - 1)) + 2*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(y - 1) + x*y*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1) + y*(x - 1)*(y - 1)*(z - 1)) + (x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(x - 1) + 2*x*y*z*(y - 1) + x*y*(x - 1)*(z - 1) + 2*x*y*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1) + x*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1) + 2*y*(x - 1)*(y - 1)*(z - 1)) + 2*(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(2*x*y*z*(x - 1) + x*y*z*(y - 1) + 2*x*y*(x - 1)*(z - 1) + x*y*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1) + 2*x*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1) + y*(x - 1)*(y - 1)*(z - 1)))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 4.0L/3.0L) + (4.0L/9.0L)*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1))*(16*x*z*(x - 1)*(z - 1)*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1)) + 5*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(x - 1) + x*y*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1) + x*(x - 1)*(y - 1)*(z - 1)) + 2*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + 2*(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(x - 1)*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + 2*(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + 4*x*z*(x - 1)*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 4.0L/3.0L) + (1.0L/9.0L)*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(16*x*z*(x - 1)*(z - 1)*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1)) + 5*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(x - 1) + x*y*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1) + x*(x - 1)*(y - 1)*(z - 1)) + 2*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + 2*(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(x - 1)*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + 2*(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + 4*x*z*(x - 1)*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 4.0L/3.0L) - (x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 1.0L/3.0L) + (1.0L/18.0L)*(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(4*y*z*(y - 1)*(z - 1)*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1)) + 5*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(y - 1) + x*y*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1) + y*(x - 1)*(y - 1)*(z - 1)) + 8*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + (x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + 4*y*z*(y - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + 4*(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + y*z*(y - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 4.0L/3.0L) - 1.0L/2.0L*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + 4*y*z*(y - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 1.0L/3.0L);
+		case 211:
+			return (200.0L/235746178369.0L)*pow(17, 2.0L/3.0L)*pow(6, 1.0L/3.0L)*(-9*(169*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(2197*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-2197*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 26*z*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + sqrt(13)*z*(-78*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 13*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 169*sqrt(13)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L)) + 13*(9*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 78*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 13*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(9*sqrt(13)*z*(-2197*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 26*z*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + sqrt(13)*z*(-78*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 13*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 117*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 1014*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 2197*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 13*sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L)))/pow((8.0L/17.0L)*pow(fabs((15.0L/26.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/4394.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs(-45.0L/2197.0L*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (30.0L/169.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 5.0L/169.0L*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs((135.0L/4394.0L)*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 45.0L/169.0L*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/338.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + 1, 4.0L/3.0L);
+
+		case 212:
+			return -8.0L/3.0L*x*(9*(y + 3*z)*(pow(y + 3*z, 2)/pow(fabs(y + 3*z), 3) - 1/fabs(y + 3*z))/fabs(y + 3*z) + 4*((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z))*(3*(2*x + 1)*pow(y + 3*z, 4)/pow(fabs(y + 3*z), 5) - 4*(2*x + 1)*pow(y + 3*z, 2)/pow(fabs(y + 3*z), 3) + (2*x + 1)/fabs(y + 3*z)))/(pow(2*(4*pow(fabs((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z)), 2) + 9)/(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11) + 1, 4.0L/3.0L)*pow((4.0L/3.0L)*pow(x, 2) + (1.0L/3.0L)*pow(2*x + 1, 2) + 11.0L/6.0L, 1.0L/3.0L)*(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11)) - 26.0L/3.0L*(9*(y + 3*z)*(pow(y + 3*z, 2)/pow(fabs(y + 3*z), 3) - 1/fabs(y + 3*z))/fabs(y + 3*z) + 4*((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z))*(3*(2*x + 1)*pow(y + 3*z, 4)/pow(fabs(y + 3*z), 5) - 4*(2*x + 1)*pow(y + 3*z, 2)/pow(fabs(y + 3*z), 3) + (2*x + 1)/fabs(y + 3*z)))/(pow(2*(4*pow(fabs((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z)), 2) + 9)/(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11) + 1, 4.0L/3.0L)*pow((4.0L/3.0L)*pow(x, 2) + (1.0L/3.0L)*pow(2*x + 1, 2) + 11.0L/6.0L, 1.0L/3.0L)*(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11));
+
+		default:
+			_error_("FS analytical solution"<<testid<<" not implemented yet");
+	}
+}
+/*}}}*/
+IssmDouble fz(IssmDouble x,IssmDouble y,IssmDouble z,int testid){ /*{{{*/ 
+	IssmDouble p = 2.0;  
+	IssmDouble q = 2.0;   
+	IssmDouble a = 1.0;
+
+	switch(testid){
+		case 1: case 2: case 7: case 8: case 11:  case 12: case 13: case 14: case 15: case 18: case 21: case 22:
+			return 0.;
+		case 3: 
+			return 2*pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1) + 2*pow(x, 2)*y*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1) - 2*x*pow(y, 2)*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) - 2*x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + 2*x*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*y*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1);
+		case 4: 
+			return -2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*z) - 1)*sin(PI*p*x)*sin(PI*p*y) - pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z) + PI*q*sin(PI*q*x)*sin(PI*q*y)*cos(PI*q*z);
+		case 5: 
+			return 2*PI*PI*p*p*sin(PI*p*x)*sin(PI*p*y);
+		case 6: 
+			return - 2. * PI*PI * p*p * (cos(p*PI*z)-1) * sin(p*PI*x) * sin(p*PI*y)-PI*PI * p*p *  sin(p*PI*x)    * sin(p*PI*y) * cos(p*PI*z)+ q * PI * sin(q*PI*x) * sin(q*PI*y) * cos(q*PI*z);
+		case 9:
+			return -2*pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) - pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z) + pow(x, 2) + pow(y, 2);
+		case 10:
+			return a*pow(z, a - 1)*(sin(PI*q*x)*sin(PI*q*y) + 1) - 2*pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) - pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z);
+		case 24:
+			return -pow(2, 1.0L/3.0L)*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z)/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 1.0L/3.0L) + (1.0L/3.0L)*pow(2, 1.0L/3.0L)*PI*p*(12*pow(PI, 3)*pow(p, 3)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*sin(PI*p*z)*cos(PI*p*z) + (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(-2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*cos(PI*p*y)*cos(PI*p*z) + pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*cos(PI*p*x)*cos(PI*p*z)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) + pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x)))*sin(PI*p*x)*sin(PI*p*y)*sin(PI*p*z)/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) + PI*q*sin(PI*q*x)*sin(PI*q*y)*cos(PI*q*z) - 1.0L/6.0L*pow(2, 1.0L/3.0L)*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(12*pow(PI, 3)*pow(p, 3)*pow(sin(PI*p*x), 2)*sin(PI*p*y)*pow(sin(PI*p*z), 2)*cos(PI*p*y) + (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) + pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*cos(PI*p*x)*cos(PI*p*y) - 2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*cos(PI*p*y)*cos(PI*p*z)))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) - 1.0L/6.0L*pow(2, 1.0L/3.0L)*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(12*pow(PI, 3)*pow(p, 3)*sin(PI*p*x)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2)*cos(PI*p*x) - (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) - 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*cos(PI*p*x)*cos(PI*p*y) + pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*cos(PI*p*x)*cos(PI*p*z)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) - 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z)))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) - 1.0L/2.0L*pow(2, 1.0L/3.0L)*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) - 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 1.0L/3.0L) - 1.0L/2.0L*pow(2, 1.0L/3.0L)*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) + pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 1.0L/3.0L);
+		case 201:
+			return (1.0L/18.0L)*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1) + x*pow(y, 2)*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*y*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + (pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1) + 2*pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 8*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(z - 1) + 4*x*y*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(2*pow(x, 2)*y*z*(x - 1)*(y - 1)*(z - 1) + pow(x, 2)*y*z*(x - 1)*(2*y - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + x*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 2*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(z - 1) + 2*pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*(y - 1)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*(y - 1)*(z - 1) - 2*x*y*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*y*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) - y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 4.0L/3.0L) - 1.0L/18.0L*(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*((x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2) + x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2) + 2*x*pow(y, 2)*(x - 1)*pow(y - 1, 2)*(z - 1) + x*pow(y, 2)*(2*x - 1)*pow(y - 1, 2)*(z - 1) + pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 2*(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1) + pow(x, 2)*y*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + x*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 8*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*x*pow(y, 2)*z*(x - 1)*(y - 1)*(z - 1) + x*pow(y, 2)*z*(2*x - 1)*(y - 1)*(z - 1) + 2*x*y*z*(x - 1)*pow(y - 1, 2)*(z - 1) + x*y*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) + pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(pow(x, 2)*y*z*(y - 1)*(2*y - 1)*(z - 1) + 4*x*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 2*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*pow(x, 2)*y*z*(x - 1)*(y - 1)*(z - 1) + pow(x, 2)*y*z*(x - 1)*(2*y - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*pow(y - 1, 2)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + x*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1)))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 4.0L/3.0L) - (x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1) + x*pow(y, 2)*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*y*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 1.0L/3.0L) + (pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1) + pow(x, 2)*y*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + x*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 1.0L/3.0L);
+		case 211:
+			return (200.0L/235746178369.0L)*pow(17, 2.0L/3.0L)*pow(6, 1.0L/3.0L)*(-9*(169*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(2197*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-2197*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 26*z*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + sqrt(13)*z*(-78*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 13*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 169*sqrt(13)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L)) + 13*(9*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 78*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 13*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(9*sqrt(13)*z*(-2197*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 26*z*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + sqrt(13)*z*(-78*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 13*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 117*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 1014*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 2197*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 13*sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L)))/pow((8.0L/17.0L)*pow(fabs((15.0L/26.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/4394.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs(-45.0L/2197.0L*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (30.0L/169.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 5.0L/169.0L*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs((135.0L/4394.0L)*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 45.0L/169.0L*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/338.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + 1, 4.0L/3.0L) + (100.0L/235746178369.0L)*pow(17, 2.0L/3.0L)*pow(6, 1.0L/3.0L)*(3*(169*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(507*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 3*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-6*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + 3*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 6591*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 3*sqrt(13)*z*(6*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - (507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 169*sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 169*sqrt(13)*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 507*sqrt(13)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 28561*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))) + 13*(9*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 78*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 13*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(9*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 78*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 3*sqrt(13)*z*(-6*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + 3*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 6591*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 3*sqrt(13)*z*(6*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - (507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 169*sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 169*sqrt(13)*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 13*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 507*sqrt(13)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 2197*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))))/pow((8.0L/17.0L)*pow(fabs((15.0L/26.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/4394.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs(-45.0L/2197.0L*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (30.0L/169.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 5.0L/169.0L*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs((135.0L/4394.0L)*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 45.0L/169.0L*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/338.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + 1, 4.0L/3.0L);
+
+		default:
+			_error_("FS analytical solution"<<testid<<" not implemented yet");
+	}
+}
+/*}}}*/
+IssmDouble alpha(IssmDouble x,IssmDouble y,IssmDouble z,int testid){ /*{{{*/ 
+	IssmDouble p = 2.0;  
+	IssmDouble q = 2.0;   
+
+	switch(testid){
+		case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 21: case 22:
+			return 0.;
+		case 15:
+			return 1.e+5;
+		case 18:
+			return (120.0L/109.0L)*sqrt(109.)/(10*x - 3*z);
+		default:
+			_error_("FS analytical solution"<<testid<<" not implemented yet");
+	}
+}
+/*}}}*/
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/FSanalyticals/fsanalyticals.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/FSanalyticals/fsanalyticals.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/FSanalyticals/fsanalyticals.h	(revision 21239)
@@ -0,0 +1,15 @@
+/*!\file: elements.h
+ * \brief prototypes for elements.h
+ */ 
+
+#ifndef _SHARED_ANALYTICALS_H_
+#define _SHARED_ANALYTICALS_H_
+
+#include "../Numerics/types.h"
+
+IssmDouble fx(IssmDouble x_coord, IssmDouble y_coord, IssmDouble z_coord, int testid);
+IssmDouble fy(IssmDouble x_coord, IssmDouble y_coord, IssmDouble z_coord, int testid);
+IssmDouble fz(IssmDouble x_coord, IssmDouble y_coord, IssmDouble z_coord, int testid);
+IssmDouble alpha(IssmDouble x_coord, IssmDouble y_coord, IssmDouble z_coord, int testid);
+
+#endif //ifndef _SHARED_ANALYTICALS_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/LatLong/Ll2xyx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/LatLong/Ll2xyx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/LatLong/Ll2xyx.cpp	(revision 21239)
@@ -0,0 +1,124 @@
+/*!\file Ll2xyx.cpp
+ */
+
+#include "../../shared/shared.h"
+#include "./latlong.h"
+#include <math.h>
+
+int Ll2xyx(double* x, double* y, double* lat, double* lon, int ncoord, int sgn){
+/*  This is a cpp conversion of the following:
+%LL2XY - converts lat long to polar stereographic
+%
+%   Converts from geodetic latitude and longitude to Polar 
+%   Stereographic (X,Y) coordinates for the polar regions.
+%   Author: Michael P. Schodlok, December 2003 (map2ll)
+%
+%   Usage:
+%      [x,y] = ll2xy(lat,lon,sgn)
+%      [x,y] = ll2xy(lat,lon,sgn,central_meridian,standard_parallel)
+%
+%      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+%                               -1 : south latitude (default is mer=0  lat=71)
+*/
+	double  central_meridian,standard_parallel;
+
+	Ll2xydef(&central_meridian,&standard_parallel,sgn);
+
+	return(Ll2xyx(x,y,lat,lon,ncoord,sgn,central_meridian,standard_parallel));
+}
+
+int Ll2xyx(double* x, double* y, double* lat, double* lon, int ncoord, int sgn, double central_meridian, double standard_parallel){
+/*  This is a cpp conversion of the following:
+%LL2XY - converts lat long to polar stereographic
+%
+%   Converts from geodetic latitude and longitude to Polar 
+%   Stereographic (X,Y) coordinates for the polar regions.
+%   Author: Michael P. Schodlok, December 2003 (map2ll)
+%
+%   Usage:
+%      [x,y] = ll2xy(lat,lon,sgn)
+%      [x,y] = ll2xy(lat,lon,sgn,central_meridian,standard_parallel)
+%
+%      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+%                               -1 : south latitude (default is mer=0  lat=71)
+*/
+
+	int     i,iret=0;
+	double  delta,slat;
+	double  re,ex2,ex;
+	double  latitude,longitude;
+	double  T,rho,sl,tc,mc;
+
+	if((sgn!=1) && (sgn!=-1)) _error_("Sign should be either +1 or -1.\n");
+
+	delta = central_meridian;
+	slat  = standard_parallel;
+
+	/*  Radius of the earth in meters  */
+	re  = 6378.273*1.e3;
+	/*  Eccentricity of the Hughes ellipsoid squared  */
+	ex2 = 0.006693883;
+	/*  Eccentricity of the Hughes ellipsoid  */
+	ex  =  sqrt(ex2);
+
+	/*  loop over all the coordinate pairs  */
+	for(i=0; i<ncoord; i++){
+		latitude  = fabs(lat[i]) * PI/180.;
+		longitude = (lon[i] + delta) * PI/180.;
+
+		/*  compute X and Y in grid coordinates.  */
+		T = tan(PI/4.-latitude/2.) / pow(((1.-ex*sin(latitude))/(1.+ex*sin(latitude))),(ex/2.));
+
+		if ((90. - slat) < 1.e-5)
+			rho = 2.*re*T/sqrt(pow((1.+ex),(1.+ex))*pow((1.-ex),(1.-ex)));
+		else {
+			sl  = slat*PI/180.;
+			tc  = tan(PI/4.-sl/2.)/pow(((1.-ex*sin(sl))/(1.+ex*sin(sl))),(ex/2.));
+			mc  = cos(sl)/sqrt(1.0-ex2*(pow(sin(sl),2)));
+			rho = re*mc*T/tc;
+		}
+
+		y[i]= -rho*(double)sgn*cos(sgn*longitude);
+		x[i]=  rho*(double)sgn*sin(sgn*longitude);
+
+		if (latitude>= PI/2.){
+			x[i] = 0.0;
+			y[i] = 0.0;
+			iret=1;
+		}
+	}
+	return(iret);
+}
+
+void Ll2xydef(double* pdelta, double* pslat, int sgn){
+/*  This is a cpp conversion of the following:
+%LL2XY - converts lat long to polar stereographic
+%
+%   Converts from geodetic latitude and longitude to Polar 
+%   Stereographic (X,Y) coordinates for the polar regions.
+%   Author: Michael P. Schodlok, December 2003 (map2ll)
+%
+%   Usage:
+%      [x,y] = ll2xy(lat,lon,sgn)
+%      [x,y] = ll2xy(lat,lon,sgn,central_meridian,standard_parallel)
+%
+%      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+%                               -1 : south latitude (default is mer=0  lat=71)
+*/
+	bool    flag=true;
+
+	/*  Get central_meridian and standard_parallel depending on hemisphere  */
+	if (sgn ==  1) {
+		*pdelta= 45;
+		*pslat = 70;
+		if(flag) _printf0_("Info: creating coordinates in polar stereographic (Std Latitude: 70N Meridian: 45).\n");
+	}
+	else if (sgn == -1) {
+		*pdelta= 0;
+		*pslat = 71;
+		if(flag) _printf0_("Info: creating coordinates in polar stereographic (Std Latitude: 71S Meridian: 0).\n");
+	}
+	else _error_("Sign should be either +1 or -1.\n");
+
+	return;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/LatLong/Xy2llx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/LatLong/Xy2llx.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/LatLong/Xy2llx.cpp	(revision 21239)
@@ -0,0 +1,132 @@
+/*!\file Xy2llx.cpp
+ */
+
+#include "../../shared/shared.h"
+#include "./latlong.h"
+#include <math.h>
+
+int Xy2llx(double* lat, double* lon, double* x, double* y, int ncoord, int sgn){
+/*  This is a cpp conversion of the following:
+%XY2LL - converts xy to lat long
+%
+%   Converts Polar  Stereographic (X,Y) coordinates for the polar regions to
+%   latitude and longitude Stereographic (X,Y) coordinates for the polar
+%   regions.
+%   Author: Michael P. Schodlok, December 2003 (map2xy.m)
+%
+%   Usage:
+%      [lat,lon] = xy2ll(x,y,sgn);
+%      [lat,lon] = xy2ll(x,y,sgn,central_meridian,standard_parallel);
+%
+%      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+%                               -1 : south latitude (default is mer=0  lat=71)
+*/
+	double  central_meridian,standard_parallel;
+
+	Xy2lldef(&central_meridian,&standard_parallel,sgn);
+
+	return(Xy2llx(lat,lon,x,y,ncoord,sgn,central_meridian,standard_parallel));
+}
+
+int Xy2llx(double* lat, double* lon, double* x, double* y, int ncoord, int sgn, double central_meridian, double standard_parallel){
+/*  This is a cpp conversion of the following:
+%XY2LL - converts xy to lat long
+%
+%   Converts Polar  Stereographic (X,Y) coordinates for the polar regions to
+%   latitude and longitude Stereographic (X,Y) coordinates for the polar
+%   regions.
+%   Author: Michael P. Schodlok, December 2003 (map2xy.m)
+%
+%   Usage:
+%      [lat,lon] = xy2ll(x,y,sgn);
+%      [lat,lon] = xy2ll(x,y,sgn,central_meridian,standard_parallel);
+%
+%      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+%                               -1 : south latitude (default is mer=0  lat=71)
+*/
+
+	int     i,iret=0;
+	double  delta,slat;
+	double  re,ex2,ex;
+	double  sl,rho,cm,T,chi;
+
+	if((sgn!=1) && (sgn!=-1)) _error_("Sign should be either +1 or -1.\n");
+
+	delta = central_meridian;
+	slat  = standard_parallel;
+
+	/*  Radius of the earth in meters  */
+	re   = 6378.273e+3;
+	/*  Eccentricity of the Hughes ellipsoid squared  */
+	ex2  = 0.006693883;
+	/*  Eccentricity of the Hughes ellipsoid  */
+	ex   =  sqrt(ex2);
+
+	/*  loop over all the coordinate pairs  */
+	for(i=0; i<ncoord; i++){
+		sl = slat*PI/180.;
+		cm = cos(sl)/sqrt(1.0-ex2*(pow(sin(sl),2)));
+		rho= sqrt(pow(x[i],2) + pow(y[i],2));
+		T  = tan((PI/4.0) - (sl/2.0))/pow(((1.0-ex*sin(sl))/(1.0+ex*sin(sl))),(ex/2.0));
+
+		if(fabs(slat-90.) < 1.e-5)
+			T =rho*sqrt(pow((1.+ex),(1.+ex))*pow((1.-ex),(1.-ex)))/2./re;
+		else
+			T =rho*T/(re*cm);
+
+		chi = (PI / 2.0) - 2.0 * atan(T);
+		lat[i] = chi + ((ex2 / 2.0) + (5.0 * pow(ex2,2.0) / 24.0) + (pow(ex2,3.0) / 12.0)) *
+			   sin(2.0 * chi) + ((7.0 * pow(ex2,2.0) / 48.0) + (29.0 * pow(ex2,3.0) / 240.0)) *
+			   sin(4.0 * chi) + (7.0 * pow(ex2,3.0) / 120.0) * sin(6.0 * chi) ;
+
+		lat[i] = (double)sgn * lat[i];
+		lon[i] = atan2((double)sgn * x[i],-(double)sgn * y[i]);
+		lon[i] = (double)sgn * lon[i];
+
+		if(rho <= 0.1){
+			lat[i] = 90. * (double)sgn;
+			lon[i] = 0.0;
+			iret=1;
+		}
+
+		lon[i] = lon[i] * 180. / PI;
+		lat[i] = lat[i] * 180. / PI;
+		lon[i] = lon[i] - delta; 
+	}
+
+	return(iret);
+}
+
+void Xy2lldef(double* pdelta, double* pslat, int sgn){
+/*  This is a cpp conversion of the following:
+%XY2LL - converts xy to lat long
+%
+%   Converts Polar  Stereographic (X,Y) coordinates for the polar regions to
+%   latitude and longitude Stereographic (X,Y) coordinates for the polar
+%   regions.
+%   Author: Michael P. Schodlok, December 2003 (map2xy.m)
+%
+%   Usage:
+%      [lat,lon] = xy2ll(x,y,sgn);
+%      [lat,lon] = xy2ll(x,y,sgn,central_meridian,standard_parallel);
+%
+%      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+%                               -1 : south latitude (default is mer=0  lat=71)
+*/
+	bool    flag=true;
+
+	/*  Get central_meridian and standard_parallel depending on hemisphere  */
+	if (sgn == 1) {
+		*pdelta= 45;
+		*pslat = 70;
+		if(flag) _printf0_("Warning: expecting coordinates in polar stereographic (Std Latitude: 70N Meridian: 45).\n");
+	}
+	else if (sgn == -1) {
+		*pdelta= 0;
+		*pslat = 71;
+		if(flag) _printf0_("Warning: expecting coordinates in polar stereographic (Std Latitude: 71S Meridian: 0).\n");
+	}
+	else _error_("Sign should be either +1 or -1.\n");
+
+	return;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/LatLong/latlong.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/LatLong/latlong.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/LatLong/latlong.h	(revision 21239)
@@ -0,0 +1,16 @@
+/*!\file: latlong.h
+ * \brief prototypes for latlong.h
+ */ 
+
+#ifndef _SHARED_LATLONG_H_
+#define _SHARED_LATLONG_H_
+
+int Ll2xyx(double* x, double* y, double* lat, double* lon, int ncoord, int sgn);
+int Ll2xyx(double* x, double* y, double* lat, double* lon, int ncoord, int sgn, double central_meridian, double standard_parallel);
+void Ll2xydef(double* pdelta, double* pslat, int sgn);
+
+int Xy2llx(double* lat, double* lon, double* x, double* y, int ncoord, int sgn);
+int Xy2llx(double* lat, double* lon, double* x, double* y, int ncoord, int sgn, double central_meridian, double standard_parallel);
+void Xy2lldef(double* pdelta, double* pslat, int sgn);
+
+#endif //ifndef _SHARED_LATLONG_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Matrix/MatrixUtils.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Matrix/MatrixUtils.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Matrix/MatrixUtils.cpp	(revision 21239)
@@ -0,0 +1,675 @@
+/*!\file: MatrixUtils
+ * \brief triple multiply
+ */ 
+
+/*Headers*/
+/*{{{*/
+#include <stdio.h>
+#include <sys/types.h>
+#include <math.h>
+#include <float.h>    /*  DBL_EPSILON  */
+#include <cstdarg>
+#include <iostream>
+
+#include "./matrix.h"
+#include "../Exceptions/exceptions.h"
+#include "../MemOps/MemOps.h"
+#include "../io/io.h"
+/*}}}*/
+
+int TripleMultiply(IssmDouble* a, int nrowa, int ncola, int itrna, IssmDouble* b, int nrowb, int ncolb, int itrnb, IssmDouble* c, int nrowc, int ncolc, int itrnc, IssmDouble* d, int iaddd){/*{{{*/
+	/*TripleMultiply    Perform triple matrix product a*b*c+d.*/
+
+	int         idima,idimb,idimc,idimd;
+	IssmDouble  dtemp_static[600];
+	IssmDouble* dtemp_dynamic = NULL;
+	IssmDouble* dtemp         = NULL;
+	_assert_(a && b && c && d);
+
+	/*  set up dimensions for triple product  */
+	if (!itrna){
+		idima=nrowa;
+		idimb=ncola;
+	}
+	else{
+		idima=ncola;
+		idimb=nrowa;
+	}
+
+	if (!itrnb){
+		if (nrowb != idimb) _error_("Matrix A and B inner vectors not equal size.");
+		idimc=ncolb;
+	}
+	else{
+		if (ncolb != idimb) _error_("Matrix A and B inner vectors not equal size.");
+		idimc=nrowb;
+	}
+
+	if (!itrnc) {
+		if (nrowc != idimc) _error_("Matrix B and C inner vectors not equal size.");
+		idimd=ncolc;
+	}
+	else{
+		if (ncolc != idimc) _error_("Matrix B and C inner vectors not equal size.");
+		idimd=nrowc;
+	}
+
+	/*Depending on the size of incoming matrices, we might need to use a dynamic allocation*/
+	if(idima*idimc>600){
+		dtemp_dynamic = xNew<IssmDouble>(idima*idimc);
+		dtemp         = dtemp_dynamic;
+	}
+	else{
+		dtemp = &dtemp_static[0];
+	}
+	
+	/*  perform the matrix triple product in the order that minimizes the
+		 number of multiplies and the temporary space used, noting that
+		 (a*b)*c requires ac(b+d) multiplies and ac IssmDoubles, and a*(b*c)
+		 requires bd(a+c) multiplies and bd IssmDoubles (both are the same for
+		 a symmetric triple product)  */
+
+	/*  multiply (a*b)*c+d  */
+	if (idima*idimc*(idimb+idimd) <= idimb*idimd*(idima+idimc)) {
+		MatrixMultiply(a,nrowa,ncola,itrna,b,nrowb,ncolb,itrnb,dtemp,0);
+		MatrixMultiply(dtemp,idima,idimc,0,c,nrowc,ncolc,itrnc,d,iaddd);
+	}
+
+	/*  multiply a*(b*c)+d  */
+	else{
+		MatrixMultiply(b,nrowb,ncolb,itrnb,c,nrowc,ncolc,itrnc,dtemp,0);
+		MatrixMultiply(a,nrowa,ncola,itrna,dtemp,idimb,idimd,0,d,iaddd);
+	}
+
+	/*Cleanup and return*/
+	xDelete<IssmDouble>(dtemp_dynamic);
+	return 1;
+}/*}}}*/
+int MatrixMultiply(IssmDouble* a, int nrowa, int ncola, int itrna, IssmDouble* b, int nrowb, int ncolb, int itrnb, IssmDouble* c, int iaddc ){/*{{{*/
+	/*MatrixMultiply    Perform matrix multiplication a*b+c.*/
+	int noerr=1;
+	int i,j,k,ipta,iptb,iptc;
+	int nrowc,ncolc,iinca,jinca,iincb,jincb,ntrma,ntrmb,nterm;
+
+	_assert_(a && b && c);
+
+	/*  set up dimensions and increments for matrix a  */
+	if (!itrna) {
+		nrowc=nrowa;
+		ntrma=ncola;
+		iinca=ncola;
+		jinca=1;
+	}
+	else {
+		nrowc=ncola;
+		ntrma=nrowa;
+		iinca=1;
+		jinca=ncola;
+	}
+
+	/*  set up dimensions and increments for matrix b  */
+	if (!itrnb) {
+		ncolc=ncolb;
+		ntrmb=nrowb;
+		iincb=ncolb;
+		jincb=1;
+	}
+	else {
+		ncolc=nrowb;
+		ntrmb=ncolb;
+		iincb=1;
+		jincb=ncolb;
+	}
+
+	if (ntrma != ntrmb) _error_("Matrix A and B inner vectors not equal size");
+
+	nterm=ntrma;
+
+	/*  zero matrix c, if not being added to product  */
+	if (!iaddc) for (i=0;i<nrowc*ncolc;i++) c[i]=0.;
+
+	/*  perform the matrix multiplication  */
+	iptc=0;
+	for (i=0; i<nrowc; i++){
+		for (j=0; j<ncolc; j++){
+			ipta=i*iinca;
+			iptb=j*jincb;
+
+			for (k=0; k<nterm; k++){
+				c[iptc]+=a[ipta]*b[iptb];
+				ipta+=jinca;
+				iptb+=iincb;
+			}
+			iptc++;
+		}
+	}
+
+	return noerr;
+}/*}}}*/
+int MatrixInverse( IssmDouble* a, int ndim, int nrow, IssmDouble* b, int nvec, IssmDouble* pdet ){/*{{{*/
+	/* MatrixInverse    Perform matrix inversion and linear equation solution.
+
+		This function uses Gaussian elimination on the original matrix
+		augmented by an identity matrix of the same size to calculate
+		the inverse (see for example, "Modern Methods of Engineering
+		Computation", Sec. 6.4).  By noting how the matrices are
+		unpopulated and repopulated, the calculation may be done in place.
+
+		Gaussian elimination is inherently inefficient, and so this is
+		intended for small matrices.  */
+	int noerr=1;
+	int i,j,k,ipt,jpt,irow,icol,ipiv,ncol;
+	int *pivrc1,*pivrc2,*pindx;
+	IssmDouble pivot,det,dtemp;
+
+	if (!b && nvec) {
+		_error_("No right-hand side for nvec=" << nvec << ".");
+		noerr=0;
+		return noerr;
+	}
+
+	/*In debugging mode, check that we are not dealing with simple matrices*/
+	_assert_(!(ndim==2 && nrow==2));
+	_assert_(!(ndim==3 && nrow==3));
+
+	/*  initialize local variables and arrays  */
+
+	ncol=nrow;
+	det=1.;
+	pivrc1 =xNew<int>(nrow);
+	pivrc2 =xNew<int>(nrow);
+	pindx =xNew<int>(nrow);
+
+	/*  loop over the rows/columns of the matrix  */
+
+	for (i=0; i<nrow; i++) {
+
+		/*  search for pivot, finding the term with the greatest magnitude
+			 in the rows/columns not yet used  */
+
+		pivot=0.;
+		for (j=0; j<nrow; j++)
+		 if (!pindx[j])
+		  for (k=0; k<ncol; k++)
+			if (!pindx[k])
+			 if (fabs(a[j*ndim+k]) > fabs(pivot)) {
+				 irow=j;
+				 icol=k;
+				 pivot=a[j*ndim+k];
+			 }
+
+		if (fabs(pivot) < DBL_EPSILON) {
+			xDelete<int>(pivrc1);
+			xDelete<int>(pivrc2);
+			xDelete<int>(pindx);
+			_error_("Pivot " << pivot << " less than machine epsilon");
+			noerr=0;
+			return noerr;
+		}
+
+		pivrc1[i]=irow;
+		pivrc2[i]=icol;
+
+		ipiv=icol;
+		pindx[ipiv]++;
+
+		//		_printf_("pivot for i=" << i << ": irow=" << irow << ", icol=" << icol  << ", pindx[" << ipiv << "]=" << pindx[ipiv] << "\n\n");
+
+		/*  switch rows to put pivot element on diagonal, noting that the
+			 column stays the same and the determinant changes sign  */
+
+		if (irow != icol) {
+			//			_printf_("row switch for i=" << i << ": irow=" << irow << ", icol=" << icol << "\n\n");
+
+			ipt=irow*ndim;
+			jpt=icol*ndim;
+			for (k=0; k<ncol; k++) {
+				dtemp   =a[ipt+k];
+				a[ipt+k]=a[jpt+k];
+				a[jpt+k]=dtemp;
+			}
+
+			ipt=irow*nvec;
+			jpt=icol*nvec;
+			for (k=0; k<nvec; k++) {
+				dtemp   =b[ipt+k];
+				b[ipt+k]=b[jpt+k];
+				b[jpt+k]=dtemp;
+			}
+
+			det=-det;
+		}
+
+		/*  divide pivot row by pivot element, noting that the original
+			 matrix will have 1 on the diagonal, which will be discarded,
+			 and the augmented matrix will start with 1 from the identity
+			 matrix and then have 1/pivot, which is part of the inverse.  */
+
+		a[ipiv*ndim+ipiv]=1.;
+
+		ipt=ipiv*ndim;
+		for (k=0; k<ncol; k++)
+		 a[ipt+k]/=pivot;
+
+		ipt=ipiv*nvec;
+		for (k=0; k<nvec; k++)
+		 b[ipt+k]/=pivot;
+
+		/*  reduce non-pivot rows such that they will have 0 in the pivot
+			 column, which will be discarded, and the augmented matrix will
+			 start with 0 from the identity matrix and then have non-zero
+			 in the corresponding column, which is part of the inverse.
+			 only one column of the augmented matrix is populated at a time,
+			 which corresponds to the only column of the original matrix
+			 being zeroed, so that the inverse may be done in place.  */
+
+		for (j=0; j<nrow; j++) {
+			if (j == ipiv) continue;
+
+			dtemp=a[j*ndim+ipiv];
+			a[j*ndim+ipiv]=0.;
+
+			if (fabs(dtemp) > DBL_EPSILON) {
+				ipt=j   *ndim;
+				jpt=ipiv*ndim;
+				for (k=0; k<ncol; k++)
+				 a[ipt+k]-=dtemp*a[jpt+k];
+
+				ipt=j   *nvec;
+				jpt=ipiv*nvec;
+				for (k=0; k<nvec; k++)
+				 b[ipt+k]-=dtemp*b[jpt+k];
+			}
+		}
+
+		/*  for a diagonal matrix, the determinant is the product of the
+			 diagonal terms, and so it may be accumulated from the pivots,
+			 noting that switching rows changes the sign as above  */
+
+		det*=pivot;
+	}
+
+	/*  switch columns back in reverse order, noting that a row switch
+		 in the original matrix corresponds to a column switch in the
+		 inverse matrix  */
+
+	for (i=0; i<nrow; i++) {
+		j=(nrow-1)-i;
+
+		if (pivrc1[j] != pivrc2[j]) {
+			irow=pivrc1[j];
+			icol=pivrc2[j];
+
+			//			_printf_("column switch back for j=" << j << ": irow=" << irow << ", icol=" << icol << "\n\n");
+
+			ipt=0;
+			for (k=0; k<nrow; k++) {
+				dtemp      =a[ipt+irow];
+				a[ipt+irow]=a[ipt+icol];
+				a[ipt+icol]=dtemp;
+				ipt+=ndim;
+			}
+		}
+	}
+
+	if (pdet) *pdet=det;
+	xDelete<int>(pivrc1);
+	xDelete<int>(pivrc2);
+	xDelete<int>(pindx);
+	return noerr;
+}/*}}}*/
+
+void Matrix2x2Determinant(IssmDouble* Adet,IssmDouble* A){/*{{{*/
+	/*Compute determinant of a 2x2 matrix*/
+
+	/*det = a*d - c*b*/
+	*Adet= A[0]*A[3]-A[2]*A[1];
+}
+/*}}}*/
+void Matrix2x2Invert(IssmDouble* Ainv,IssmDouble* A){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble det,det_reciprocal;
+
+	/*Compute determinant*/
+	Matrix2x2Determinant(&det,A);
+	if (fabs(det) < DBL_EPSILON) _error_("Determinant smaller than machine epsilon");
+	
+	/*Multiplication is faster than divsion, so we multiply by the reciprocal*/
+	det_reciprocal = 1./det;  
+
+	/*Compute invert*/
+	Ainv[0]=   A[3]*det_reciprocal; /* =  d/det */
+	Ainv[1]= - A[1]*det_reciprocal; /* = -b/det */
+	Ainv[2]= - A[2]*det_reciprocal; /* = -c/det */
+	Ainv[3]=   A[0]*det_reciprocal; /* =  a/det */
+
+}/*}}}*/
+void Matrix2x2Eigen(IssmDouble* plambda1,IssmDouble* plambda2,IssmDouble* pvx, IssmDouble* pvy,IssmDouble a11, IssmDouble a21,IssmDouble a22){/*{{{*/
+	/*From symetric matrix (a11,a21;a21,a22), get eigen values lambda1 and lambda2 and one eigen vector v*/
+
+	/*Output*/
+	IssmDouble lambda1,lambda2;
+	IssmDouble vx,vy;
+
+	/*To get the eigen values, we must solve the following equation:
+	 *     | a11 - lambda    a21        |
+	 * det |                            | = 0
+	 *     | a21             a22-lambda |
+	 *
+	 * We have to solve the following polynom:
+	 *  lamda^2 + ( -a11 -a22)*lambda + (a11*a22-a21*a21) = 0*/
+
+	/*Compute polynom determinant*/
+	IssmDouble b=-a11-a22;
+	IssmDouble delta=b*b - 4*(a11*a22-a21*a21);
+
+	/*Compute norm of M to avoid round off errors*/
+	IssmDouble normM=a11*a11 + a22*a22 + a21*a21;
+
+	/*1: normM too small: eigen values = 0*/
+	if(normM<1.e-30){
+		lambda1=0.;
+		lambda2=0.;
+		vx=1.;
+		vy=0.;
+	}
+	/*2: delta is small -> double root*/
+	else if (delta < 1.e-5*normM){
+		lambda1=-b/2.;
+		lambda2=-b/2.;
+		vx=1.;
+		vy=0.;
+	}
+	/*3: general case -> two roots*/
+	else{
+		delta   = sqrt(delta);
+		lambda1 = (-b-delta)/2.;
+		lambda2 = (-b+delta)/2.;
+
+		/*Now, one must find the eigen vectors. For that we use the following property of the inner product
+		 *    <Ax,y> = <x,tAy>
+		 * Here, M'(M-lambda*Id) is symmetrical, which gives:
+		 *    ∀(x,y)∈R²xR² <M'x,y> = <M'y,x>
+		 * And we have the following:
+		 *    if y∈Ker(M'), ∀x∈R² <M'x,y> = <x,M'y> = 0
+		 * We have shown that
+		 *    Im(M') ⊥ Ker(M')
+		 *
+		 * To find the eigen vectors of M, we only have to find two vectors
+		 * of the image of M' and take their perpendicular as long as they are
+		 * not 0.
+		 * To do that, we take the images (1,0) and (0,1):
+		 *  x1 = (a11 - lambda)      x2 = a21
+		 *  y1 = a21                 y2 = (a22-lambda)
+		 *
+		 * We take the vector that has the larger norm and take its perpendicular.*/
+
+		IssmDouble norm1 = (a11-lambda1)*(a11-lambda1) + a21*a21; 
+		IssmDouble norm2 = a21*a21 + (a22-lambda1)*(a22-lambda1);
+
+		if(norm2<norm1){
+			norm1=sqrt(norm1);
+			vx = - a21/norm1;
+			vy = (a11-lambda1)/norm1;
+		}
+		else{
+			norm2=sqrt(norm2);
+			vx = - (a22-lambda1)/norm2;
+			vy = a21/norm2;
+		}
+	}
+
+	/*Assign output*/
+	*plambda1 = lambda1;
+	*plambda2 = lambda2;
+	*pvx      = vx;
+	*pvy      = vy;
+
+
+}/*}}}*/
+
+void Matrix3x3Determinant(IssmDouble* Adet,IssmDouble* A){/*{{{*/
+	/*Compute determinant of a 3x3 matrix*/
+
+	/*det = a*(e*i-f*h)-b*(d*i-f*g)+c*(d*h-e*g)*/
+	*Adet= A[0]*A[4]*A[8]-A[0]*A[5]*A[7]-A[3]*A[1]*A[8]+A[3]*A[2]*A[7]+A[6]*A[1]*A[5]-A[6]*A[2]*A[4];
+}
+/*}}}*/
+IssmDouble Matrix3x3Determinant(IssmDouble a1,IssmDouble a2,IssmDouble a3, IssmDouble b1,IssmDouble b2,IssmDouble b3, IssmDouble c1,IssmDouble c2,IssmDouble c3){/*{{{*/
+	/*Compute determinant of a 3x3 matrix*/
+
+	/*det = a*(e*i-f*h)-b*(d*i-f*g)+c*(d*h-e*g)
+	 * a b c   a1 a2 a3
+	 * d e f   b1 b2 b3
+	 * g h i   c1 c2 c3 */
+	return a1*b2*c3-a1*b3*c2-b1*a2*c3+b1*a3*c2+c1*a2*b3-c1*a3*b2;
+}
+/*}}}*/
+void Matrix3x3Invert(IssmDouble* Ainv,IssmDouble* A){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble det,det_reciprocal;
+
+	/*Compute determinant*/
+	Matrix3x3Determinant(&det,A);
+	if (fabs(det) < DBL_EPSILON) _error_("Determinant smaller than machine epsilon");
+
+	/*Multiplication is faster than divsion, so we multiply by the reciprocal*/
+	det_reciprocal = 1./det;  
+
+	/*Compute invert*/
+	Ainv[0]=(A[4]*A[8]-A[5]*A[7])*det_reciprocal; /* = (e*i-f*h)/det */
+	Ainv[1]=(A[2]*A[7]-A[1]*A[8])*det_reciprocal; /* = (c*h-b*i)/det */
+	Ainv[2]=(A[1]*A[5]-A[2]*A[4])*det_reciprocal; /* = (b*f-c*e)/det */
+	Ainv[3]=(A[5]*A[6]-A[3]*A[8])*det_reciprocal; /* = (f*g-d*i)/det */
+	Ainv[4]=(A[0]*A[8]-A[2]*A[6])*det_reciprocal; /* = (a*i-c*g)/det */
+	Ainv[5]=(A[2]*A[3]-A[0]*A[5])*det_reciprocal; /* = (c*d-a*f)/det */
+	Ainv[6]=(A[3]*A[7]-A[4]*A[6])*det_reciprocal; /* = (d*h-e*g)/det */
+	Ainv[7]=(A[1]*A[6]-A[0]*A[7])*det_reciprocal; /* = (b*g-a*h)/det */
+	Ainv[8]=(A[0]*A[4]-A[1]*A[3])*det_reciprocal; /* = (a*e-b*d)/det */
+}/*}}}*/
+void Matrix3x3Solve(IssmDouble* X,IssmDouble* A,IssmDouble* B){/*{{{*/
+
+	IssmDouble Ainv[3][3];
+
+	Matrix3x3Invert(&Ainv[0][0],A);
+	for(int i=0;i<3;i++) X[i]=Ainv[i][0]*B[0] + Ainv[i][1]*B[1] + Ainv[i][2]*B[2];
+
+}/*}}}*/
+
+void Matrix4x4Determinant(IssmDouble* Adet,IssmDouble* A){/*{{{*/
+	/*Compute determinant of a 4x4 matrix*/
+
+	IssmDouble a1 = A[0*4+0];
+	IssmDouble b1 = A[0*4+1]; 
+	IssmDouble c1 = A[0*4+2];
+	IssmDouble d1 = A[0*4+3];
+
+	IssmDouble a2 = A[1*4+0];
+	IssmDouble b2 = A[1*4+1]; 
+	IssmDouble c2 = A[1*4+2];
+	IssmDouble d2 = A[1*4+3];
+
+	IssmDouble a3 = A[2*4+0]; 
+	IssmDouble b3 = A[2*4+1];
+	IssmDouble c3 = A[2*4+2];
+	IssmDouble d3 = A[2*4+3];
+
+	IssmDouble a4 = A[3*4+0];
+	IssmDouble b4 = A[3*4+1]; 
+	IssmDouble c4 = A[3*4+2];
+	IssmDouble d4 = A[3*4+3];
+
+	*Adet= a1 * Matrix3x3Determinant(b2, b3, b4, c2, c3, c4, d2, d3, d4)
+		  - b1 * Matrix3x3Determinant(a2, a3, a4, c2, c3, c4, d2, d3, d4)
+		  + c1 * Matrix3x3Determinant(a2, a3, a4, b2, b3, b4, d2, d3, d4)
+		  - d1 * Matrix3x3Determinant(a2, a3, a4, b2, b3, b4, c2, c3, c4);
+}
+/*}}}*/
+void Matrix4x4Adjoint(IssmDouble* Aadj,IssmDouble* A){/*{{{*/
+
+    IssmDouble a1 = A[0*4+0];
+    IssmDouble b1 = A[0*4+1]; 
+    IssmDouble c1 = A[0*4+2];
+    IssmDouble d1 = A[0*4+3];
+
+    IssmDouble a2 = A[1*4+0];
+    IssmDouble b2 = A[1*4+1]; 
+    IssmDouble c2 = A[1*4+2];
+    IssmDouble d2 = A[1*4+3];
+
+    IssmDouble a3 = A[2*4+0];
+    IssmDouble b3 = A[2*4+1];
+    IssmDouble c3 = A[2*4+2];
+    IssmDouble d3 = A[2*4+3];
+
+    IssmDouble a4 = A[3*4+0];
+    IssmDouble b4 = A[3*4+1]; 
+    IssmDouble c4 = A[3*4+2];
+    IssmDouble d4 = A[3*4+3];
+
+    /* Row column labeling reversed since we transpose rows & columns*/
+    Aadj[0*4+0]  =   Matrix3x3Determinant(b2, b3, b4, c2, c3, c4, d2, d3, d4);
+    Aadj[1*4+0]  = - Matrix3x3Determinant(a2, a3, a4, c2, c3, c4, d2, d3, d4);
+    Aadj[2*4+0]  =   Matrix3x3Determinant(a2, a3, a4, b2, b3, b4, d2, d3, d4);
+    Aadj[3*4+0]  = - Matrix3x3Determinant(a2, a3, a4, b2, b3, b4, c2, c3, c4);
+
+    Aadj[0*4+1]  = - Matrix3x3Determinant(b1, b3, b4, c1, c3, c4, d1, d3, d4);
+    Aadj[1*4+1]  =   Matrix3x3Determinant(a1, a3, a4, c1, c3, c4, d1, d3, d4);
+    Aadj[2*4+1]  = - Matrix3x3Determinant(a1, a3, a4, b1, b3, b4, d1, d3, d4);
+    Aadj[3*4+1]  =   Matrix3x3Determinant(a1, a3, a4, b1, b3, b4, c1, c3, c4);
+
+    Aadj[0*4+2]  =   Matrix3x3Determinant(b1, b2, b4, c1, c2, c4, d1, d2, d4);
+    Aadj[1*4+2]  = - Matrix3x3Determinant(a1, a2, a4, c1, c2, c4, d1, d2, d4);
+    Aadj[2*4+2]  =   Matrix3x3Determinant(a1, a2, a4, b1, b2, b4, d1, d2, d4);
+    Aadj[3*4+2]  = - Matrix3x3Determinant(a1, a2, a4, b1, b2, b4, c1, c2, c4);
+
+    Aadj[0*4+3]  = - Matrix3x3Determinant(b1, b2, b3, c1, c2, c3, d1, d2, d3);
+    Aadj[1*4+3]  =   Matrix3x3Determinant(a1, a2, a3, c1, c2, c3, d1, d2, d3);
+    Aadj[2*4+3]  = - Matrix3x3Determinant(a1, a2, a3, b1, b2, b3, d1, d2, d3);
+    Aadj[3*4+3]  =   Matrix3x3Determinant(a1, a2, a3, b1, b2, b3, c1, c2, c3);
+}/*}}}*/
+void Matrix4x4Invert(IssmDouble* Ainv,IssmDouble* A){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble det,det_reciprocal;
+
+	/*Compute determinant*/
+	Matrix4x4Determinant(&det,A);
+	if(fabs(det) < DBL_EPSILON) _error_("Determinant smaller than machine epsilon");
+
+	/*Multiplication is faster than division, so we multiply by the reciprocal*/
+	det_reciprocal = 1./det;
+
+	/*Compute adjoint matrix*/
+	Matrix4x4Adjoint(Ainv,A);
+
+	/*Scalte adjoint matrix to get inverse*/
+	for(int i=0;i<4*4;i++) Ainv[i] = Ainv[i]*det_reciprocal;
+}/*}}}*/
+void Matrix4x4Solve(IssmDouble* X,IssmDouble* A,IssmDouble *B){/*{{{*/
+	IssmDouble Ainv[4][4];
+
+	Matrix4x4Invert(&Ainv[0][0],A);
+	for(int i=0;i<4;i++) X[i]=Ainv[i][0]*B[0] + Ainv[i][1]*B[1] + Ainv[i][2]*B[2] + Ainv[i][3]*B[3];
+}/*}}}*/
+
+void newcell(IssmDouble** pcell, IssmDouble newvalue, bool top, int m){  /*{{{*/
+    
+    IssmDouble* cell=NULL;
+    IssmDouble* dummy=NULL;
+    
+    /*recover pointer: */
+    cell=*pcell;
+    
+    /*reallocate:*/
+    dummy=xNew<IssmDouble>(m+1);
+    
+	/*copy data:*/
+    if(top){
+        dummy[0]=newvalue;
+        for(int i=0;i<m;i++)dummy[i+1]=cell[i];
+    }
+    else{
+        dummy[m]=newvalue;
+        for(int i=0;i<m;i++)dummy[i]=cell[i];
+    }
+    
+    /*delete and reassign: */
+    xDelete<IssmDouble>(cell); cell=dummy;
+    
+    /*assign output pointer:*/
+    *pcell=cell;
+} /*}}}*/
+IssmDouble  cellsum(IssmDouble* cell, int m){ /*{{{*/
+
+	IssmDouble sum=0;
+
+	for(int i=0;i<m;i++)sum+=cell[i];
+
+	return sum;
+} /*}}}*/
+void celldelete(IssmDouble** pcell, int m, int* indices, int nind){ /*{{{*/
+
+	/*input: */
+	IssmDouble* cell=*pcell;
+	
+	/*output: */
+	IssmDouble* newcell=xNew<IssmDouble>(nind);
+
+	for(int i=0;i<nind;i++){
+		newcell[i]=cell[indices[i]];
+	}
+	
+	/*free allocation:*/
+	xDelete<IssmDouble>(cell);
+
+	/*assign output pointers: */
+	*pcell=newcell;
+} /*}}}*/
+void cellsplit(IssmDouble** pcell, int m, int i,IssmDouble scale) { /*{{{*/
+
+	/*input: */
+	IssmDouble* cell=*pcell;
+	
+	/*output: */
+	IssmDouble* newcell=xNew<IssmDouble>(m+1);
+
+	for(int j=0;j<i;j++)newcell[j]=cell[j]; 
+	newcell[i]=scale*cell[i];
+	newcell[i+1]=scale* cell[i];
+	for(int j=i+2;j<m+1;j++)newcell[j]=cell[j-1];
+	
+	/*free allocation:*/
+	xDelete<IssmDouble>(cell);
+
+	/*assign output pointers: */
+	*pcell=newcell;
+} /*}}}*/
+void cellecho(int numcells, int m, ...) { /*{{{*/
+
+	va_list arguments;                     
+	IssmDouble** celllist= NULL;
+
+	/*allocate variable length array: */
+	celllist=xNew<IssmDouble*>(numcells); 
+
+	va_start(arguments,m);
+
+	for ( int x = 0; x < numcells; x++ ){
+		celllist[x]= va_arg ( arguments, IssmDouble*); 
+	}
+	va_end ( arguments );                  
+	
+	_printf_("Echo of cell: \n");
+	for(int i=0;i<m;i++){
+		_printf_(i << ": ");
+		for (int j=0;j<numcells;j++)_printf_(setprecision(10) << celllist[j][i] << " ");
+		_printf_("\n");
+	}
+
+	/*deallocate:*/
+	xDelete<IssmDouble*>(celllist);
+
+} /*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Matrix/matrix.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Matrix/matrix.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Matrix/matrix.h	(revision 21239)
@@ -0,0 +1,33 @@
+/*!\file: matrix.h
+ * \brief prototypes for matrix.h
+ */ 
+
+#ifndef _MATRIXUTILS_H_
+#define _MATRIXUTILS_H_
+
+#include "../Numerics/types.h"
+
+int  TripleMultiply( IssmDouble* a, int nrowa, int ncola, int itrna, IssmDouble* b, int nrowb, int ncolb, int itrnb, IssmDouble* c, int nrowc, int ncolc, int itrnc, IssmDouble* d, int iaddd);
+int  MatrixMultiply( IssmDouble* a, int nrowa, int ncola, int itrna, IssmDouble* b, int nrowb, int ncolb, int itrnb, IssmDouble* c, int iaddc );
+int  MatrixInverse( IssmDouble* a, int ndim, int nrow, IssmDouble* b, int nvec, IssmDouble* pdet );
+
+void Matrix2x2Invert(IssmDouble* Ainv, IssmDouble* A);
+void Matrix2x2Determinant(IssmDouble* Adet,IssmDouble* A);
+void Matrix2x2Eigen(IssmDouble* plambda1,IssmDouble* plambda2,IssmDouble* pvx, IssmDouble* pvy,IssmDouble a11, IssmDouble a21,IssmDouble a22);
+
+void Matrix3x3Invert(IssmDouble* Ainv, IssmDouble* A);
+void Matrix3x3Determinant(IssmDouble* Adet,IssmDouble* A);
+IssmDouble Matrix3x3Determinant( IssmDouble a1,IssmDouble a2,IssmDouble a3, IssmDouble b1,IssmDouble b2,IssmDouble b3, IssmDouble c1,IssmDouble c2,IssmDouble c3);
+void Matrix3x3Solve(IssmDouble* X,IssmDouble* A,IssmDouble* B);
+
+void Matrix4x4Adjoint(IssmDouble* Aadj, IssmDouble* A);
+void Matrix4x4Invert(IssmDouble* Ainv, IssmDouble* A);
+void Matrix4x4Determinant(IssmDouble* Adet,IssmDouble* A);
+void Matrix4x4Solve(IssmDouble* X,IssmDouble* A,IssmDouble* B);
+ 
+void newcell(IssmDouble** pcell, IssmDouble newvalue, bool top, int m);
+IssmDouble  cellsum(IssmDouble* cell, int m);
+void celldelete(IssmDouble** pcell, int m, int* indices, int nind);
+void cellsplit(IssmDouble** pcell, int m, int i,IssmDouble scale);
+void cellecho(int numcells, int m, ...);
+#endif //ifndef _MATRIXUTILS_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/MemOps/MemOps.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/MemOps/MemOps.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/MemOps/MemOps.cpp	(revision 21239)
@@ -0,0 +1,23 @@
+/*
+ * MemOps.cpp
+ *
+ *  Created on: Sep 10, 2013
+ *      Author: utke
+ */
+
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "MemOps.h"
+
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)
+template <> adouble*  xNew(unsigned int size) {
+	ensureContiguousLocations(size);
+	adouble* aT_p=new adouble[size];
+	assert(aT_p);
+	return aT_p;
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/MemOps/MemOps.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/MemOps/MemOps.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/MemOps/MemOps.h	(revision 21239)
@@ -0,0 +1,149 @@
+/* \file MemOps.h
+ * \brief: header file for memory allocations as well as templated new/delete checking for non-null pointers
+ */
+
+#ifndef _MEM_OPS_H_
+#define _MEM_OPS_H_
+
+#include <cassert>
+
+/* memory management of types T with non-trivial constructors require C++ style memory management*/
+#define USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
+/* but for speed one may alternatively use C memory management but can do so safely only for T that are at most 
+ * plain old data structures (POD)*/
+#ifndef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
+#include <cstdlib>
+#endif 
+
+template <class T> T* xNew(unsigned int size) { /*{{{*/
+#ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
+  T* aT_p=new T[size];
+  assert(aT_p);
+  return aT_p;
+#else
+  T* aT_p=(T*)malloc(size*sizeof(T));
+  assert(aT_p);
+  return aT_p;
+#endif  
+}/*}}}*/
+template <class T> T** xNew(unsigned int dim1, unsigned int dim2) { /*{{{*/
+#ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
+  T* buf=xNew<T>(dim1*dim2);
+  T** aT_pp =new T*[dim1];
+  assert(aT_pp );
+  for (unsigned int i=0;i<dim1;++i) {
+    aT_pp [i]=buf;
+    buf+=dim2;
+  }
+  return aT_pp ;
+#else
+  T* buf=(T*)malloc(dim1*dim2*sizeof(T));
+  assert(buf );
+  T** aT_pp =(T**)malloc(dim1*sizeof(T*));
+  assert(aT_pp );
+  for (unsigned int i=0;i<dim1;++i) {
+    aT_pp [i]=buf;
+    buf+=dim2;
+  }
+  return aT_pp ;
+#endif
+}/*}}}*/
+template <class T> T* xNewZeroInit(unsigned int size) {/*{{{*/
+#ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
+  T* aT_p=xNew<T>(size);
+  for (unsigned int i=0; i<size;++i) 
+    aT_p[i]=(T)0;
+  return aT_p;
+#else
+  T* aT_p=(T*)calloc(size,sizeof(T));
+  assert(aT_p);
+  return aT_p;
+#endif
+}/*}}}*/
+template <class T> T** xNewZeroInit(unsigned int dim1, unsigned int dim2) {/*{{{*/
+#ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
+  T** aT_pp=xNew<T>(dim1,dim2);
+  for (unsigned int i=0; i<dim1*dim2;++i)
+    (*aT_pp)[i]=(T)0;
+  return aT_pp;
+#else
+  T* buf=(T*)calloc(dim1*dim2*sizeof(T));
+  assert(buf );
+  T** aT_pp =(T**)malloc(dim1*sizeof(T*));
+  assert(aT_pp );
+  for (unsigned int i=0;i<dim1;++i) {
+    aT_pp [i]=buf;
+    buf+=dim2;
+  }
+  return aT_pp ;
+#endif
+}/*}}}*/
+template <class T> void xDelete(T**& aT_pp) {/*{{{*/
+  if (aT_pp) {
+#ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
+    delete [](*aT_pp);
+    delete [](aT_pp);
+#else
+    free((void*)*aT_pp)
+    free((void**)aT_pp);
+#endif
+  }
+  aT_pp=0;
+}/*}}}*/
+template <class T> void xDelete(T*& aT_p) {/*{{{*/
+  if (aT_p) 
+#ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
+    delete []aT_p;
+#else
+    free((void*)aT_p);
+#endif
+  aT_p=0;
+}/*}}}*/
+template <class T> T* xReNew(T* old, unsigned int old_size, unsigned int size) {/*{{{*/
+#ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
+	T* aT_p=0;
+	if (!old) { // no old memory
+		if (size)  
+		 aT_p=xNew<T>(size); // according to realloc behavior in manual page 
+	}
+	else { // have old memory
+		if (!size)  // but 0 size
+		 xDelete<T>(old); // according to realloc behavior in manual page
+		else { // non-zero size
+			assert(old_size); // have old memory - need to have old_size set or this call is bad
+			// allocate new, delete old; ; even for the case when size is 
+			// less than old_size we can't just keep the memory unchanged 
+			// because otherwise classes that have ctors/dtors with side-effects 
+			// may misbehave, for example classes with static instance/operations counters. 
+			aT_p=xNew<T>(size);
+			unsigned int iMax=(old_size<size)?old_size:size;
+			for (unsigned int i=0; i<iMax;++i) { 
+				// we need to copy the items by explicit assignments
+				aT_p[i]=old[i];
+			}
+			xDelete<T>(old);
+		}
+	}
+	return aT_p;
+#else
+	T* aT_p=0;
+	aT_p=(T*)realloc((void*)old,size*sizeof(T));
+	if (size) 
+	 assert(aT_p); // according to realloc behavior in manual page
+	return aT_p;
+#endif 
+}/*}}}*/
+template <class T>  T* xMemCpy(T* dest, const T* src, unsigned int size) {/*{{{*/
+  assert(dest); assert(src);
+  for (int i=0; i<size;++i) 
+    dest[i]=src[i];
+  return dest;
+};
+/*}}}*/
+
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)
+#include "../Numerics/types.h"
+template <> adouble*  xNew(unsigned int size);
+#endif
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/BrentSearch.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/BrentSearch.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/BrentSearch.cpp	(revision 21239)
@@ -0,0 +1,250 @@
+/*!\file:  BrentSearch.cpp
+ * \brief optimization algorithm
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <float.h>
+#include <iomanip>
+
+#include "../Exceptions/exceptions.h"
+#include "../io/io.h"
+#include "../MemOps/MemOps.h"
+#include "./Verbosity.h"
+#include "./OptPars.h"
+#include "./types.h"
+#include "./isnan.h"
+
+void BrentSearch(IssmDouble** pJ,OptPars optpars,IssmDouble* X0,IssmDouble (*f)(IssmDouble*,void*),IssmDouble (*g)(IssmDouble**,IssmDouble*,void*),void* usr){
+
+	/* This routine is optimizing a given function using Brent's method
+	 * (Golden or parabolic procedure)*/
+
+	/*Intermediary*/
+	int        iter;
+	IssmDouble si,gold,intervalgold,oldintervalgold;
+	IssmDouble parab_num,parab_den,distance;
+	IssmDouble fxmax,fxmin,fxbest;
+	IssmDouble fx,fx1,fx2;
+	IssmDouble x,x1,x2,xm,xbest;
+	IssmDouble tol1,tol2,seps;
+	IssmDouble tolerance = 1.e-4;
+
+	/*Recover parameters:*/
+	int         nsteps  = optpars.nsteps;
+	int         nsize   = optpars.nsize;
+	IssmDouble  xmin    = optpars.xmin;
+	IssmDouble  xmax    = optpars.xmax;
+	int        *maxiter = optpars.maxiter;
+	IssmDouble *cm_jump = optpars.cm_jump;
+
+	/*Initialize gradient and controls*/
+	IssmDouble* G = NULL;
+	IssmDouble* J = xNew<IssmDouble>(nsteps);
+	IssmDouble* X = xNew<IssmDouble>(nsize);
+
+	/*Header of printf*/
+	_printf0_("\n");
+	_printf0_("       x       |  Cost function f(x)  |  List of contributions\n");
+
+	/*start iterations*/
+	for(int n=0;n<nsteps;n++){
+
+		/*Print iteration number*/
+		_printf0_("====================== step "<< n+1 << "/" << nsteps <<" ===============================\n");
+
+		/*Reset some variables*/
+		iter = 0;
+		xmin = 0.;
+		xmax = 1.;
+		bool loop = true;
+		cout<<setprecision(5);
+
+		/*Get current Gradient at xmin=0*/
+		_printf0_(" x = "<<setw(9)<<xmin<<" | ");
+		fxmin = (*g)(&G,X0,usr); if(xIsNan<IssmDouble>(fxmin)) _error_("Function evaluation returned NaN");
+		
+		/*Get f(xmax)*/
+		_printf0_(" x = "<<setw(9)<<xmax<<" | ");
+		for(int i=0;i<nsize;i++) X[i]=X0[i]+xmax*G[i];
+		fxmax = (*f)(X,usr); if (xIsNan<IssmDouble>(fxmax)) _error_("Function evaluation returned NaN");
+		//if(VerboseControl()) _printf0_("           N/A    "<<setw(12)<<xmax<<"  "<<setw(12)<<fxmax<<"           N/A         boundary\n");
+
+		/*test if jump option activated and xmin==0*/
+		if(!xIsNan<IssmDouble>(cm_jump[n]) && (xmin==0) && (fxmax/fxmin)<cm_jump[n]){
+			for(int i=0;i<nsize;i++) X0[i]=X0[i]+xmax*G[i];
+			xDelete<IssmDouble>(G);
+			J[n]=fxmax;
+			continue;
+		}
+
+		/*initialize optimization variables*/
+		seps=sqrt(DBL_EPSILON);    //precision of a IssmDouble
+		distance=0.0;              //new_x=old_x + distance
+		gold=0.5*(3.0-sqrt(5.0));  //gold = 1 - golden ratio
+		intervalgold=0.0;          //distance used by Golden procedure
+
+		/*1: initialize the values of the 4 x needed (x1,x2,x,xbest)*/
+		x1=xmin+gold*(xmax-xmin);
+		x2=x1;
+		xbest=x1;
+		x=xbest;
+
+		/*2: call the function to be evaluated*/
+		_printf0_(" x = "<<setw(9)<<x<<" | ");
+		for(int i=0;i<nsize;i++) X[i]=X0[i]+x*G[i];
+		fxbest = (*f)(X,usr); if(xIsNan<IssmDouble>(fxbest)) _error_("Function evaluation returned NaN");
+		iter++;
+
+		/*3: update the other variables*/
+		fx1=fxbest;
+		fx2=fxbest;
+		/*xm is always in the middle of a and b*/
+		xm=0.5*(xmin+xmax);                           
+		/*update tolerances*/
+		tol1=seps*sqrt(pow(xbest,2))+tolerance/3.0;
+		tol2=2.0*tol1;
+
+		/*4: print result*/
+		//if(VerboseControl())
+		 //_printf0_("         "<<setw(5)<<iter<<"    "<<setw(12)<<xbest<<"  "<<setw(12)<<fxbest<<"  "<<setw(12)<<pow(pow(xbest-xm,2),0.5)<<"         initial\n");
+		if (!xIsNan<IssmDouble>(cm_jump[n]) && (xmin==0) && ((fxbest/fxmin)<cm_jump[n])){
+			//if(VerboseControl()) _printf0_("      optimization terminated: current x satisfies criteria 'cm_jump'=" << cm_jump[n] << "\n");
+			loop=false;
+		}
+
+		while(loop){
+
+			bool goldenflag=true;
+
+			// Is a parabolic fit possible ?
+			if (sqrt(pow(intervalgold,2))>tol1){
+
+				// Yes, so fit parabola
+				goldenflag=false;
+				parab_num=(xbest-x1)*(xbest-x1)*(fxbest-fx2)-(xbest-x2)*(xbest-x2)*(fxbest-fx1);;
+				parab_den=2.0*(xbest-x1)*(fxbest-fx2)-2.0*(xbest-x2)*(fxbest-fx1);
+
+				//reverse p if necessary
+				if(parab_den>0.0){ 
+					parab_num=-parab_num;
+				}
+				parab_den=sqrt(pow(parab_den,2));
+				oldintervalgold=intervalgold;
+				intervalgold=distance;
+
+				// Is the parabola acceptable (we use seps here because in some configuration parab_num==parab_den*(xmax-xbest)
+				// and the result is not repeatable anymore
+				if (( sqrt(pow(parab_num,2)) < sqrt(pow(0.5*parab_den*oldintervalgold,2))) &&
+							(parab_num>parab_den*(xmin-xbest)+seps) && 
+							(parab_num<parab_den*(xmax-xbest)-seps)){
+
+					// Yes, parabolic interpolation step
+					distance=parab_num/parab_den;
+					x=xbest+distance;
+
+					// f must not be evaluated too close to min_x or max_x
+					if (((x-xmin)<tol2) || ((xmax-x)<tol2)){
+						if ((xm-xbest)<0.0) si=-1;
+						else                si=1;
+						//compute new distance
+						distance=tol1*si;
+					}
+				}
+				else{
+					// Not acceptable, must do a golden section step
+					goldenflag=true;
+				}
+			}
+
+			//Golden procedure
+			if(goldenflag){
+				// compute the new distance d
+				if(xbest>=xm){
+					intervalgold=xmin-xbest;    
+				}
+				else{ 
+					intervalgold=xmax-xbest;  
+				}
+				distance=gold*intervalgold;
+			}
+
+			// The function must not be evaluated too close to xbest
+			if(distance<0) si=-1;
+			else           si=1;
+			if(sqrt(pow(distance,2))>tol1) x=xbest+si*sqrt(pow(distance,2));
+			else                           x=xbest+si*tol1;
+
+			//evaluate function on x
+			_printf0_(" x = "<<setw(9)<<x<<" | ");
+			for(int i=0;i<nsize;i++) X[i]=X0[i]+x*G[i];
+			fx = (*f)(X,usr); if(xIsNan<IssmDouble>(fx)) _error_("Function evaluation returned NaN");
+			iter++;
+
+			// Update a, b, xm, x1, x2, tol1, tol2
+			if (fx<=fxbest){
+				if (x>=xbest) xmin=xbest;
+				else          xmax=xbest;
+				x1=x2;    fx1=fx2;
+				x2=xbest; fx2=fxbest;
+				xbest=x;  fxbest=fx;
+			}
+			else{ // fx > fxbest
+				if (x<xbest) xmin=x;
+				else         xmax=x;
+				if ((fx<=fx2) || (x2==xbest)){
+					x1=x2; fx1=fx2;
+					x2=x;  fx2=fx;
+				}
+				else if ( (fx <= fx1) || (x1 == xbest) || (x1 == x2) ){
+					x1=x;  fx1=fx;
+				}
+			}
+			xm = 0.5*(xmin+xmax);
+			tol1=seps*pow(pow(xbest,2),0.5)+tolerance/3.0;
+			tol2=2.0*tol1;
+			//if(VerboseControl())
+			// _printf0_("         "<<setw(5)<<iter<<"    "<<setw(12)<<x<<"  "<<setw(12)<<fx<<"  "<<setw(12)<<pow(pow(xbest-xm,2),0.5)<<
+			//			 "         "<<(goldenflag?"golden":"parabolic")<<"\n");
+
+			/*Stop the optimization?*/
+			if (sqrt(pow(xbest-xm,2)) < (tol2-0.5*(xmax-xmin))){
+				//if(VerboseControl()) _printf0_("      optimization terminated: current x satisfies criteria 'tolx'=" << tolerance << "\n");
+				loop=false;
+			}
+			else if (iter>=maxiter[n]){
+				//if(VerboseControl()) _printf0_("      exiting: Maximum number of iterations has been exceeded  ('maxiter'=" << maxiter[n] << ")\n");
+				loop=false;
+			}
+			else if (!xIsNan<IssmDouble>(cm_jump[n]) && (xmin==0) && ((fxbest/fxmin)<cm_jump[n])){
+				//if(VerboseControl()) _printf0_("      optimization terminated: current x satisfies criteria 'cm_jump'=" << cm_jump[n] << "\n");
+				loop=false;
+			}
+			else{
+				//continue
+				loop=true;
+			}
+		}//end while
+
+		//Now, check that the value on the boundaries are not better than current fxbest
+		if (fxbest>fxmin){
+			xbest=optpars.xmin; fxbest=fxmin;
+		}
+		if (fxbest>fxmax){
+			xbest=optpars.xmax; fxbest=fxmax;
+		}
+
+		/*Assign output pointers: */
+		for(int i=0;i<nsize;i++) X0[i]=X0[i]+xbest*G[i];
+		xDelete<IssmDouble>(G);
+		J[n]=fxbest;
+	}
+	
+	/*return*/
+	xDelete<IssmDouble>(X);
+	*pJ=J;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/GaussPoints.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/GaussPoints.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/GaussPoints.cpp	(revision 21239)
@@ -0,0 +1,1709 @@
+/*  Gauss point structures and prototypes  */
+#include <math.h>
+#include <float.h>
+
+#include "./GaussPoints.h"
+#include "../MemOps/MemOps.h"
+#include "../Exceptions/exceptions.h"
+#include "../Numerics/constants.h"
+
+/*General Gauss points*/
+void GaussLegendreLinear( IssmPDouble** pxgaus, IssmPDouble** pxwgt, int ngaus){/*{{{*/
+	/* Gauss-Legendre quadrature points.
+
+		The recurrence coefficients for Legendre polynomials on (-1,1)
+		are defined (from the ORTHPOL subroutine RECUR with ipoly=1) as:
+
+		alpha(i)=0.
+		beta (i)=1./(4.-1./(i-1)^2))
+
+		For degree p, the required number of Gauss-Legendre points is
+		n>=(p+1)/2.*/
+
+	/*Intermediaries*/
+	int i;
+	IssmPDouble *alpha,*beta;
+
+	/*p= 1, npoint= 1*/
+	static IssmPDouble wgt1[]={2.000000000000000};
+	static IssmPDouble xi1[]={0.000000000000000};
+
+	/*p= 3, npoint= 2*/
+	static IssmPDouble wgt2[]={1.000000000000000, 1.000000000000000};
+	static IssmPDouble xi2[]={-0.577350269189626, 0.577350269189626};
+
+	/*p= 5, npoint= 3*/
+	static IssmPDouble wgt3[]={0.555555555555556, 0.888888888888889, 0.555555555555556};
+	static IssmPDouble xi3[]={-0.774596669241483, 0.000000000000000, 0.774596669241483};
+
+	/*p= 7, npoint= 4*/
+	static IssmPDouble wgt4[]={0.347854845137454, 0.652145154862546, 0.652145154862546, 0.347854845137454};
+	static IssmPDouble xi4[]={-0.861136311594053,-0.339981043584856, 0.339981043584856, 0.861136311594053};
+
+	/*npoint= 5*/
+	static IssmPDouble wgt5[]={0.5688888888888889,0.4786286704993665,0.4786286704993665,0.2369268850561891,0.2369268850561891};
+	static IssmPDouble xi5[]={0.0000000000000000,-0.5384693101056831,0.5384693101056831,-0.9061798459386640,0.9061798459386640};
+
+	/*npoint= 6*/
+	static IssmPDouble wgt6[]={0.3607615730481386,0.3607615730481386,0.4679139345726910,0.4679139345726910,0.1713244923791704,0.1713244923791704};
+	static IssmPDouble xi6[]={-0.6612093864662645,0.6612093864662645,-0.2386191860831969,0.2386191860831969,-0.9324695142031521,0.9324695142031521};
+
+	/*npoint= 7*/
+	static IssmPDouble wgt7[]={0.4179591836734694,0.3818300505051189,0.3818300505051189,0.2797053914892766,0.2797053914892766,0.1294849661688697,0.1294849661688697};
+	static IssmPDouble xi7[]={0.0000000000000000,-0.4058451513773972,0.4058451513773972,-0.7415311855993945,0.7415311855993945,-0.9491079123427585,0.9491079123427585};
+
+	static IssmPDouble* wgtp[MAX_LINE_GAUS_PTS]={wgt1 ,wgt2 ,wgt3 ,wgt4, wgt5, wgt6, wgt7};
+	static IssmPDouble* xip [MAX_LINE_GAUS_PTS]={xi1  ,xi2  ,xi3  ,xi4, xi5, xi6, xi7};
+
+	*pxgaus =xNew<IssmPDouble>(ngaus);
+	*pxwgt  =xNew<IssmPDouble>(ngaus);
+
+	/*  check to see if Gauss points need to be calculated  */
+	if(ngaus <= MAX_LINE_GAUS_PTS) {
+
+		/*  copy the points from the static arrays (noting that the pointers
+			 could be returned directly, but then the calling function would
+			 have to know to not free them)  */
+
+		for(i=0; i<ngaus; i++) {
+			(*pxgaus)[i]=xip [ngaus-1][i];
+			(*pxwgt )[i]=wgtp[ngaus-1][i];
+		}
+	}
+	else{
+
+		/*  calculate the Gauss points using recurrence relations  */
+		alpha=xNew<IssmPDouble>(ngaus);
+		beta =xNew<IssmPDouble>(ngaus);
+
+		/*  calculate the Legendre recurrence coefficients  */
+		alpha[0]=0.;
+		beta [0]=2.;
+
+		for (i=1; i<ngaus; i++) {
+			alpha[i]=0.;
+			beta [i]=1./(4.-1./(i*i));
+		}
+
+		/*  calculate the Gauss points  */
+		GaussRecur(*pxgaus, *pxwgt, ngaus, alpha, beta );
+		xDelete<IssmPDouble>(beta);
+		xDelete<IssmPDouble>(alpha);
+	}
+}/*}}}*/
+void GaussLegendreTria( int* pngaus, IssmDouble** pl1, IssmDouble** pl2, IssmDouble** pl3, IssmDouble** pwgt, int iord ) {/*{{{*/
+	/*Gauss quadrature points for the triangle.
+
+	  Higher-order points from D.A. Dunavant, "High Degree Efficient
+	  Symmetrical Gaussian Quadrature Rules for the Triangle", IJNME,
+	  Vol. 21, pp. 1129-1148 (1985), as transcribed for Probe rules3.*/
+
+	/*Intermediaries*/
+	int i,j,ipt,nigaus;
+	IssmPDouble xi,eta;
+	IssmPDouble *xgaus=NULL,*xwgt=NULL,*egaus,*ewgt;
+
+	/*Hardcoded Gauss points declaration*/
+	/*p= 1, npoint= 1{{{*/
+	static IssmPDouble wgt1[]={
+		1.732050807568877};
+	static IssmPDouble l11[]={
+		0.333333333333333};
+	static IssmPDouble l21[]={
+		0.333333333333333};
+	static IssmPDouble l31[]={
+		0.333333333333333};
+	/*}}}*/
+	/*p= 2, npoint= 3  {{{*/
+	static IssmPDouble wgt2[]={
+		0.577350269189625, 0.577350269189625, 0.577350269189625};
+	static IssmPDouble l12[]={
+		0.666666666666667, 0.166666666666667, 0.166666666666667};
+	static IssmPDouble l22[]={
+		0.166666666666667, 0.666666666666667, 0.166666666666667};
+	static IssmPDouble l32[]={
+		0.166666666666667, 0.166666666666667, 0.666666666666667};
+	/*}}}*/
+	/*p= 3, npoint= 4  {{{*/
+	static IssmPDouble wgt3[]={
+		-0.974278579257493, 0.902109795608790, 0.902109795608790, 
+		0.902109795608790};
+	static IssmPDouble l13[]={
+		0.333333333333333, 0.600000000000000, 0.200000000000000, 
+		0.200000000000000};
+	static IssmPDouble l23[]={
+		0.333333333333333, 0.200000000000000, 0.600000000000000, 
+		0.200000000000000};
+	static IssmPDouble l33[]={
+		0.333333333333333, 0.200000000000000, 0.200000000000000, 
+		0.600000000000000};
+	/*}}}*/
+	/*p= 4, npoint= 6  {{{*/
+	static IssmPDouble wgt4[]={
+		0.386908262797819, 0.386908262797819, 0.386908262797819, 
+		0.190442006391807, 0.190442006391807, 0.190442006391807};
+	static IssmPDouble l14[]={
+		0.108103018168070, 0.445948490915965, 0.445948490915965, 
+		0.816847572980459, 0.091576213509771, 0.091576213509771};
+	static IssmPDouble l24[]={
+		0.445948490915965, 0.108103018168070, 0.445948490915965, 
+		0.091576213509771, 0.816847572980459, 0.091576213509771};
+	static IssmPDouble l34[]={
+		0.445948490915965, 0.445948490915965, 0.108103018168070, 
+		0.091576213509771, 0.091576213509771, 0.816847572980459};
+	/*}}}*/
+	/*p= 5, npoint= 7  {{{*/
+	static IssmPDouble wgt5[]={
+		0.389711431702997, 0.229313399254729, 0.229313399254729, 
+		0.229313399254729, 0.218133059367230, 0.218133059367230, 
+		0.218133059367230};
+	static IssmPDouble l15[]={
+		0.333333333333333, 0.059715871789770, 0.470142064105115, 
+		0.470142064105115, 0.797426985353087, 0.101286507323456, 
+		0.101286507323456};
+	static IssmPDouble l25[]={
+		0.333333333333333, 0.470142064105115, 0.059715871789770, 
+		0.470142064105115, 0.101286507323456, 0.797426985353087, 
+		0.101286507323456};
+	static IssmPDouble l35[]={
+		0.333333333333333, 0.470142064105115, 0.470142064105115, 
+		0.059715871789770, 0.101286507323456, 0.101286507323456, 
+		0.797426985353087};
+	/*}}}*/
+	/*p= 6, npoint=12  {{{*/
+	static IssmPDouble wgt6[]={
+		0.202279763184836, 0.202279763184836, 0.202279763184836, 
+		0.088065961139281, 0.088065961139281, 0.088065961139281, 
+		0.143502272432755, 0.143502272432755, 0.143502272432755, 
+		0.143502272432755, 0.143502272432755, 0.143502272432755};
+	static IssmPDouble l16[]={
+		0.501426509658179, 0.249286745170910, 0.249286745170910, 
+		0.873821971016996, 0.063089014491502, 0.063089014491502, 
+		0.053145049844817, 0.053145049844817, 0.310352451033784, 
+		0.636502499121399, 0.310352451033784, 0.636502499121399};
+	static IssmPDouble l26[]={
+		0.249286745170910, 0.501426509658179, 0.249286745170910, 
+		0.063089014491502, 0.873821971016996, 0.063089014491502, 
+		0.310352451033784, 0.636502499121399, 0.053145049844817, 
+		0.053145049844817, 0.636502499121399, 0.310352451033784};
+	static IssmPDouble l36[]={
+		0.249286745170910, 0.249286745170910, 0.501426509658179, 
+		0.063089014491502, 0.063089014491502, 0.873821971016996, 
+		0.636502499121399, 0.310352451033784, 0.636502499121399, 
+		0.310352451033784, 0.053145049844817, 0.053145049844817};
+	/*}}}*/
+	/*p= 7, npoint=13  {{{*/
+	static IssmPDouble wgt7[]={
+		-0.259062916308362, 0.304174548458604, 0.304174548458604, 
+		0.304174548458604, 0.092400122517855, 0.092400122517855, 
+		0.092400122517855, 0.133564951824643, 0.133564951824643, 
+		0.133564951824643, 0.133564951824643, 0.133564951824643, 
+		0.133564951824643};
+	static IssmPDouble l17[]={
+		0.333333333333333, 0.479308067841920, 0.260345966079040, 
+		0.260345966079040, 0.869739794195568, 0.065130102902216, 
+		0.065130102902216, 0.048690315425316, 0.048690315425316, 
+		0.312865496004874, 0.638444188569810, 0.312865496004874, 
+		0.638444188569810};
+	static IssmPDouble l27[]={
+		0.333333333333333, 0.260345966079040, 0.479308067841920, 
+		0.260345966079040, 0.065130102902216, 0.869739794195568, 
+		0.065130102902216, 0.312865496004874, 0.638444188569810, 
+		0.048690315425316, 0.048690315425316, 0.638444188569810, 
+		0.312865496004874};
+	static IssmPDouble l37[]={
+		0.333333333333333, 0.260345966079040, 0.260345966079040, 
+		0.479308067841920, 0.065130102902216, 0.065130102902216, 
+		0.869739794195568, 0.638444188569810, 0.312865496004874, 
+		0.638444188569810, 0.312865496004874, 0.048690315425316, 
+		0.048690315425316};
+	/*}}}*/
+	/*p= 8, npoint=16  {{{*/
+	static IssmPDouble wgt8[]={
+		0.249961964823104, 0.164703541925695, 0.164703541925695, 
+		0.164703541925695, 0.178777729989794, 0.178777729989794, 
+		0.178777729989794, 0.056219767020733, 0.056219767020733, 
+		0.056219767020733, 0.047164287656184, 0.047164287656184, 
+		0.047164287656184, 0.047164287656184, 0.047164287656184, 
+		0.047164287656184};
+	static IssmPDouble l18[]={
+		0.333333333333333, 0.081414823414554, 0.459292588292723, 
+		0.459292588292723, 0.658861384496480, 0.170569307751760, 
+		0.170569307751760, 0.898905543365938, 0.050547228317031, 
+		0.050547228317031, 0.008394777409958, 0.008394777409958, 
+		0.263112829634638, 0.728492392955404, 0.263112829634638, 
+		0.728492392955404};
+	static IssmPDouble l28[]={
+		0.333333333333333, 0.459292588292723, 0.081414823414554, 
+		0.459292588292723, 0.170569307751760, 0.658861384496480, 
+		0.170569307751760, 0.050547228317031, 0.898905543365938, 
+		0.050547228317031, 0.263112829634638, 0.728492392955404, 
+		0.008394777409958, 0.008394777409958, 0.728492392955404, 
+		0.263112829634638};
+	static IssmPDouble l38[]={
+		0.333333333333333, 0.459292588292723, 0.459292588292723, 
+		0.081414823414554, 0.170569307751760, 0.170569307751760, 
+		0.658861384496480, 0.050547228317031, 0.050547228317031, 
+		0.898905543365938, 0.728492392955404, 0.263112829634638, 
+		0.728492392955404, 0.263112829634638, 0.008394777409958, 
+		0.008394777409958};
+	/*}}}*/
+	/*p= 9, npoint=19  {{{*/
+	static IssmPDouble wgt9[]={
+		0.168244134395468, 0.054273292833345, 0.054273292833345, 
+		0.054273292833345, 0.134801255248419, 0.134801255248419, 
+		0.134801255248419, 0.137953930529909, 0.137953930529909, 
+		0.137953930529909, 0.044301833780383, 0.044301833780383, 
+		0.044301833780383, 0.074969289332873, 0.074969289332873, 
+		0.074969289332873, 0.074969289332873, 0.074969289332873, 
+		0.074969289332873};
+	static IssmPDouble l19[]={
+		0.333333333333333, 0.020634961602525, 0.489682519198738, 
+		0.489682519198738, 0.125820817014127, 0.437089591492937, 
+		0.437089591492937, 0.623592928761935, 0.188203535619033, 
+		0.188203535619033, 0.910540973211095, 0.044729513394453, 
+		0.044729513394453, 0.036838412054736, 0.036838412054736, 
+		0.221962989160766, 0.741198598784498, 0.221962989160766, 
+		0.741198598784498};
+	static IssmPDouble l29[]={
+		0.333333333333333, 0.489682519198738, 0.020634961602525, 
+		0.489682519198738, 0.437089591492937, 0.125820817014127, 
+		0.437089591492937, 0.188203535619033, 0.623592928761935, 
+		0.188203535619033, 0.044729513394453, 0.910540973211095, 
+		0.044729513394453, 0.221962989160766, 0.741198598784498, 
+		0.036838412054736, 0.036838412054736, 0.741198598784498, 
+		0.221962989160766};
+	static IssmPDouble l39[]={
+		0.333333333333333, 0.489682519198738, 0.489682519198738, 
+		0.020634961602525, 0.437089591492937, 0.437089591492937, 
+		0.125820817014127, 0.188203535619033, 0.188203535619033, 
+		0.623592928761935, 0.044729513394453, 0.044729513394453, 
+		0.910540973211095, 0.741198598784498, 0.221962989160766, 
+		0.741198598784498, 0.221962989160766, 0.036838412054736, 
+		0.036838412054736};
+	/*}}}*/
+	/*p=10, npoint=25  {{{*/
+	static IssmPDouble wgt10[]={
+		0.157301373584232, 0.063611224790829, 0.063611224790829, 
+		0.063611224790829, 0.078498377595183, 0.078498377595183, 
+		0.078498377595183, 0.126020408629139, 0.126020408629139, 
+		0.126020408629139, 0.126020408629139, 0.126020408629139, 
+		0.126020408629139, 0.049064223302117, 0.049064223302117, 
+		0.049064223302117, 0.049064223302117, 0.049064223302117, 
+		0.049064223302117, 0.016318805873179, 0.016318805873179, 
+		0.016318805873179, 0.016318805873179, 0.016318805873179, 
+		0.016318805873179};
+	static IssmPDouble l110[]={
+		0.333333333333333, 0.028844733232685, 0.485577633383657, 
+		0.485577633383657, 0.781036849029926, 0.109481575485037, 
+		0.109481575485037, 0.141707219414880, 0.141707219414880, 
+		0.307939838764121, 0.550352941820999, 0.307939838764121, 
+		0.550352941820999, 0.025003534762686, 0.025003534762686, 
+		0.246672560639903, 0.728323904597411, 0.246672560639903, 
+		0.728323904597411, 0.009540815400299, 0.009540815400299, 
+		0.066803251012200, 0.923655933587500, 0.066803251012200, 
+		0.923655933587500};
+	static IssmPDouble l210[]={
+		0.333333333333333, 0.485577633383657, 0.028844733232685, 
+		0.485577633383657, 0.109481575485037, 0.781036849029926, 
+		0.109481575485037, 0.307939838764121, 0.550352941820999, 
+		0.141707219414880, 0.141707219414880, 0.550352941820999, 
+		0.307939838764121, 0.246672560639903, 0.728323904597411, 
+		0.025003534762686, 0.025003534762686, 0.728323904597411, 
+		0.246672560639903, 0.066803251012200, 0.923655933587500, 
+		0.009540815400299, 0.009540815400299, 0.923655933587500, 
+		0.066803251012200};
+	static IssmPDouble l310[]={
+		0.333333333333333, 0.485577633383657, 0.485577633383657, 
+		0.028844733232685, 0.109481575485037, 0.109481575485037, 
+		0.781036849029926, 0.550352941820999, 0.307939838764121, 
+		0.550352941820999, 0.307939838764121, 0.141707219414880, 
+		0.141707219414880, 0.728323904597411, 0.246672560639903, 
+		0.728323904597411, 0.246672560639903, 0.025003534762686, 
+		0.025003534762686, 0.923655933587500, 0.066803251012200, 
+		0.923655933587500, 0.066803251012200, 0.009540815400299, 
+		0.009540815400299};
+	/*}}}*/
+	/*p=11, npoint=27  {{{*/
+	static IssmPDouble wgt11[]={
+		0.001605622060698, 0.001605622060698, 0.001605622060698, 
+		0.133626914252765, 0.133626914252765, 0.133626914252765, 
+		0.102750410879760, 0.102750410879760, 0.102750410879760, 
+		0.062673462600454, 0.062673462600454, 0.062673462600454, 
+		0.023659348114362, 0.023659348114362, 0.023659348114362, 
+		0.090650537039958, 0.090650537039958, 0.090650537039958, 
+		0.090650537039958, 0.090650537039958, 0.090650537039958, 
+		0.035866718600836, 0.035866718600836, 0.035866718600836, 
+		0.035866718600836, 0.035866718600836, 0.035866718600836};
+	static IssmPDouble l111[]={
+		-0.069222096541517, 0.534611048270758, 0.534611048270758, 
+		0.202061394068290, 0.398969302965855, 0.398969302965855, 
+		0.593380199137435, 0.203309900431282, 0.203309900431282, 
+		0.761298175434837, 0.119350912282581, 0.119350912282581, 
+		0.935270103777448, 0.032364948111276, 0.032364948111276, 
+		0.050178138310495, 0.050178138310495, 0.356620648261293, 
+		0.593201213428213, 0.356620648261293, 0.593201213428213, 
+		0.021022016536166, 0.021022016536166, 0.171488980304042, 
+		0.807489003159792, 0.171488980304042, 0.807489003159792};
+	static IssmPDouble l211[]={
+		0.534611048270758,-0.069222096541517, 0.534611048270758, 
+		0.398969302965855, 0.202061394068290, 0.398969302965855, 
+		0.203309900431282, 0.593380199137435, 0.203309900431282, 
+		0.119350912282581, 0.761298175434837, 0.119350912282581, 
+		0.032364948111276, 0.935270103777448, 0.032364948111276, 
+		0.356620648261293, 0.593201213428213, 0.050178138310495, 
+		0.050178138310495, 0.593201213428213, 0.356620648261293, 
+		0.171488980304042, 0.807489003159792, 0.021022016536166, 
+		0.021022016536166, 0.807489003159792, 0.171488980304042};
+	static IssmPDouble l311[]={
+		0.534611048270758, 0.534611048270758,-0.069222096541517, 
+		0.398969302965855, 0.398969302965855, 0.202061394068290, 
+		0.203309900431282, 0.203309900431282, 0.593380199137435, 
+		0.119350912282581, 0.119350912282581, 0.761298175434837, 
+		0.032364948111276, 0.032364948111276, 0.935270103777448, 
+		0.593201213428213, 0.356620648261293, 0.593201213428213, 
+		0.356620648261293, 0.050178138310495, 0.050178138310495, 
+		0.807489003159792, 0.171488980304042, 0.807489003159792, 
+		0.171488980304042, 0.021022016536166, 0.021022016536166};
+	/*}}}*/
+	/*p=12, npoint=33  {{{*/
+	static IssmPDouble wgt12[]={
+		0.044567514407799, 0.044567514407799, 0.044567514407799, 
+		0.075677707051848, 0.075677707051848, 0.075677707051848, 
+		0.108873638018933, 0.108873638018933, 0.108873638018933, 
+		0.060268635501892, 0.060268635501892, 0.060268635501892, 
+		0.010680277434033, 0.010680277434033, 0.010680277434033, 
+		0.069925589232074, 0.069925589232074, 0.069925589232074, 
+		0.069925589232074, 0.069925589232074, 0.069925589232074, 
+		0.038723067079683, 0.038723067079683, 0.038723067079683, 
+		0.038723067079683, 0.038723067079683, 0.038723067079683, 
+		0.029992592075802, 0.029992592075802, 0.029992592075802, 
+		0.029992592075802, 0.029992592075802, 0.029992592075802};
+	static IssmPDouble l112[]={
+		0.023565220452390, 0.488217389773805, 0.488217389773805, 
+		0.120551215411079, 0.439724392294460, 0.439724392294460, 
+		0.457579229975768, 0.271210385012116, 0.271210385012116, 
+		0.744847708916828, 0.127576145541586, 0.127576145541586, 
+		0.957365299093579, 0.021317350453210, 0.021317350453210, 
+		0.115343494534698, 0.115343494534698, 0.275713269685514, 
+		0.608943235779788, 0.275713269685514, 0.608943235779788, 
+		0.022838332222257, 0.022838332222257, 0.281325580989940, 
+		0.695836086787803, 0.281325580989940, 0.695836086787803, 
+		0.025734050548330, 0.025734050548330, 0.116251915907597, 
+		0.858014033544073, 0.116251915907597, 0.858014033544073};
+	static IssmPDouble l212[]={
+		0.488217389773805, 0.023565220452390, 0.488217389773805, 
+		0.439724392294460, 0.120551215411079, 0.439724392294460, 
+		0.271210385012116, 0.457579229975768, 0.271210385012116, 
+		0.127576145541586, 0.744847708916828, 0.127576145541586, 
+		0.021317350453210, 0.957365299093579, 0.021317350453210, 
+		0.275713269685514, 0.608943235779788, 0.115343494534698, 
+		0.115343494534698, 0.608943235779788, 0.275713269685514, 
+		0.281325580989940, 0.695836086787803, 0.022838332222257, 
+		0.022838332222257, 0.695836086787803, 0.281325580989940, 
+		0.116251915907597, 0.858014033544073, 0.025734050548330, 
+		0.025734050548330, 0.858014033544073, 0.116251915907597};
+	static IssmPDouble l312[]={
+		0.488217389773805, 0.488217389773805, 0.023565220452390, 
+		0.439724392294460, 0.439724392294460, 0.120551215411079, 
+		0.271210385012116, 0.271210385012116, 0.457579229975768, 
+		0.127576145541586, 0.127576145541586, 0.744847708916828, 
+		0.021317350453210, 0.021317350453210, 0.957365299093579, 
+		0.608943235779788, 0.275713269685514, 0.608943235779788, 
+		0.275713269685514, 0.115343494534698, 0.115343494534698, 
+		0.695836086787803, 0.281325580989940, 0.695836086787803, 
+		0.281325580989940, 0.022838332222257, 0.022838332222257, 
+		0.858014033544073, 0.116251915907597, 0.858014033544073, 
+		0.116251915907597, 0.025734050548330, 0.025734050548330};
+	/*}}}*/
+	/*p=13, npoint=37  {{{*/
+	static IssmPDouble wgt13[]={
+		0.090968907790622, 0.019537784619314, 0.019537784619314, 
+		0.019537784619314, 0.054427130356344, 0.054427130356344, 
+		0.054427130356344, 0.081531965976677, 0.081531965976677, 
+		0.081531965976677, 0.082036138309652, 0.082036138309652, 
+		0.082036138309652, 0.053983743853694, 0.053983743853694, 
+		0.053983743853694, 0.013814441407066, 0.013814441407066, 
+		0.013814441407066, 0.063823305703923, 0.063823305703923, 
+		0.063823305703923, 0.063823305703923, 0.063823305703923, 
+		0.063823305703923, 0.030140218568265, 0.030140218568265, 
+		0.030140218568265, 0.030140218568265, 0.030140218568265, 
+		0.030140218568265, 0.026884523429480, 0.026884523429480, 
+		0.026884523429480, 0.026884523429480, 0.026884523429480, 
+		0.026884523429480};
+	static IssmPDouble l113[]={
+		0.333333333333333, 0.009903630120591, 0.495048184939705, 
+		0.495048184939705, 0.062566729780852, 0.468716635109574, 
+		0.468716635109574, 0.170957326397447, 0.414521336801277, 
+		0.414521336801277, 0.541200855914337, 0.229399572042831, 
+		0.229399572042831, 0.771151009607340, 0.114424495196330, 
+		0.114424495196330, 0.950377217273082, 0.024811391363459, 
+		0.024811391363459, 0.094853828379579, 0.094853828379579, 
+		0.268794997058761, 0.636351174561660, 0.268794997058761, 
+		0.636351174561660, 0.018100773278807, 0.018100773278807, 
+		0.291730066734288, 0.690169159986905, 0.291730066734288, 
+		0.690169159986905, 0.022233076674090, 0.022233076674090, 
+		0.126357385491669, 0.851409537834241, 0.126357385491669, 
+		0.851409537834241};
+	static IssmPDouble l213[]={
+		0.333333333333333, 0.495048184939705, 0.009903630120591, 
+		0.495048184939705, 0.468716635109574, 0.062566729780852, 
+		0.468716635109574, 0.414521336801277, 0.170957326397447, 
+		0.414521336801277, 0.229399572042831, 0.541200855914337, 
+		0.229399572042831, 0.114424495196330, 0.771151009607340, 
+		0.114424495196330, 0.024811391363459, 0.950377217273082, 
+		0.024811391363459, 0.268794997058761, 0.636351174561660, 
+		0.094853828379579, 0.094853828379579, 0.636351174561660, 
+		0.268794997058761, 0.291730066734288, 0.690169159986905, 
+		0.018100773278807, 0.018100773278807, 0.690169159986905, 
+		0.291730066734288, 0.126357385491669, 0.851409537834241, 
+		0.022233076674090, 0.022233076674090, 0.851409537834241, 
+		0.126357385491669};
+	static IssmPDouble l313[]={
+		0.333333333333333, 0.495048184939705, 0.495048184939705, 
+		0.009903630120591, 0.468716635109574, 0.468716635109574, 
+		0.062566729780852, 0.414521336801277, 0.414521336801277, 
+		0.170957326397447, 0.229399572042831, 0.229399572042831, 
+		0.541200855914337, 0.114424495196330, 0.114424495196330, 
+		0.771151009607340, 0.024811391363459, 0.024811391363459, 
+		0.950377217273082, 0.636351174561660, 0.268794997058761, 
+		0.636351174561660, 0.268794997058761, 0.094853828379579, 
+		0.094853828379579, 0.690169159986905, 0.291730066734288, 
+		0.690169159986905, 0.291730066734288, 0.018100773278807, 
+		0.018100773278807, 0.851409537834241, 0.126357385491669, 
+		0.851409537834241, 0.126357385491669, 0.022233076674090, 
+		0.022233076674090};
+	/*}}}*/
+	/*p=14, npoint=42{{{*/
+	static IssmPDouble wgt14[]={
+		0.037903474783419, 0.037903474783419, 0.037903474783419, 
+		0.056791094234956, 0.056791094234956, 0.056791094234956, 
+		0.089675379523011, 0.089675379523011, 0.089675379523011, 
+		0.073027745871103, 0.073027745871103, 0.073027745871103, 
+		0.024999901169244, 0.024999901169244, 0.024999901169244, 
+		0.008527585185524, 0.008527585185524, 0.008527585185524, 
+		0.042722337771116, 0.042722337771116, 0.042722337771116, 
+		0.042722337771116, 0.042722337771116, 0.042722337771116, 
+		0.066807816407881, 0.066807816407881, 0.066807816407881, 
+		0.066807816407881, 0.066807816407881, 0.066807816407881, 
+		0.025004419126360, 0.025004419126360, 0.025004419126360, 
+		0.025004419126360, 0.025004419126360, 0.025004419126360, 
+		0.008677970905831, 0.008677970905831, 0.008677970905831, 
+		0.008677970905831, 0.008677970905831, 0.008677970905831};
+	static IssmPDouble l114[]={
+		0.022072179275643, 0.488963910362179, 0.488963910362179, 
+		0.164710561319092, 0.417644719340454, 0.417644719340454, 
+		0.453044943382323, 0.273477528308839, 0.273477528308839, 
+		0.645588935174913, 0.177205532412543, 0.177205532412543, 
+		0.876400233818255, 0.061799883090873, 0.061799883090873, 
+		0.961218077502598, 0.019390961248701, 0.019390961248701, 
+		0.057124757403648, 0.057124757403648, 0.172266687821356, 
+		0.770608554774996, 0.172266687821356, 0.770608554774996, 
+		0.092916249356972, 0.092916249356972, 0.336861459796345, 
+		0.570222290846683, 0.336861459796345, 0.570222290846683, 
+		0.014646950055654, 0.014646950055654, 0.298372882136258, 
+		0.686980167808088, 0.298372882136258, 0.686980167808088, 
+		0.001268330932872, 0.001268330932872, 0.118974497696957, 
+		0.879757171370171, 0.118974497696957, 0.879757171370171};
+	static IssmPDouble l214[]={
+		0.488963910362179, 0.022072179275643, 0.488963910362179, 
+		0.417644719340454, 0.164710561319092, 0.417644719340454, 
+		0.273477528308839, 0.453044943382323, 0.273477528308839, 
+		0.177205532412543, 0.645588935174913, 0.177205532412543, 
+		0.061799883090873, 0.876400233818255, 0.061799883090873, 
+		0.019390961248701, 0.961218077502598, 0.019390961248701, 
+		0.172266687821356, 0.770608554774996, 0.057124757403648, 
+		0.057124757403648, 0.770608554774996, 0.172266687821356, 
+		0.336861459796345, 0.570222290846683, 0.092916249356972, 
+		0.092916249356972, 0.570222290846683, 0.336861459796345, 
+		0.298372882136258, 0.686980167808088, 0.014646950055654, 
+		0.014646950055654, 0.686980167808088, 0.298372882136258, 
+		0.118974497696957, 0.879757171370171, 0.001268330932872, 
+		0.001268330932872, 0.879757171370171, 0.118974497696957};
+	static IssmPDouble l314[]={
+		0.488963910362179, 0.488963910362179, 0.022072179275643, 
+		0.417644719340454, 0.417644719340454, 0.164710561319092, 
+		0.273477528308839, 0.273477528308839, 0.453044943382323, 
+		0.177205532412543, 0.177205532412543, 0.645588935174913, 
+		0.061799883090873, 0.061799883090873, 0.876400233818255, 
+		0.019390961248701, 0.019390961248701, 0.961218077502598, 
+		0.770608554774996, 0.172266687821356, 0.770608554774996, 
+		0.172266687821356, 0.057124757403648, 0.057124757403648, 
+		0.570222290846683, 0.336861459796345, 0.570222290846683, 
+		0.336861459796345, 0.092916249356972, 0.092916249356972, 
+		0.686980167808088, 0.298372882136258, 0.686980167808088, 
+		0.298372882136258, 0.014646950055654, 0.014646950055654, 
+		0.879757171370171, 0.118974497696957, 0.879757171370171, 
+		0.118974497696957, 0.001268330932872, 0.001268330932872};
+	/*}}}*/
+	/*p=15, npoint=48{{{*/
+	static IssmPDouble wgt15[]={
+		0.003320126005206, 0.003320126005206, 0.003320126005206, 
+		0.076641563419124, 0.076641563419124, 0.076641563419124, 
+		0.088657703045151, 0.088657703045151, 0.088657703045151, 
+		0.041028362044303, 0.041028362044303, 0.041028362044303, 
+		0.023018566716310, 0.023018566716310, 0.023018566716310, 
+		0.008225364846296, 0.008225364846296, 0.008225364846296, 
+		0.066770684377964, 0.066770684377964, 0.066770684377964, 
+		0.066770684377964, 0.066770684377964, 0.066770684377964, 
+		0.047139173172681, 0.047139173172681, 0.047139173172681, 
+		0.047139173172681, 0.047139173172681, 0.047139173172681, 
+		0.003779468865339, 0.003779468865339, 0.003779468865339, 
+		0.003779468865339, 0.003779468865339, 0.003779468865339, 
+		0.037248306609289, 0.037248306609289, 0.037248306609289, 
+		0.037248306609289, 0.037248306609289, 0.037248306609289, 
+		0.013291658531346, 0.013291658531346, 0.013291658531346, 
+		0.013291658531346, 0.013291658531346, 0.013291658531346};
+	static IssmPDouble l115[]={
+		-0.013945833716486, 0.506972916858243, 0.506972916858243, 
+		0.137187291433955, 0.431406354283023, 0.431406354283023, 
+		0.444612710305711, 0.277693644847144, 0.277693644847144, 
+		0.747070217917492, 0.126464891041254, 0.126464891041254, 
+		0.858383228050628, 0.070808385974686, 0.070808385974686, 
+		0.962069659517853, 0.018965170241073, 0.018965170241073, 
+		0.133734161966621, 0.133734161966621, 0.261311371140087, 
+		0.604954466893291, 0.261311371140087, 0.604954466893291, 
+		0.036366677396917, 0.036366677396917, 0.388046767090269, 
+		0.575586555512814, 0.388046767090269, 0.575586555512814, 
+		-0.010174883126571,-0.010174883126571, 0.285712220049916, 
+		0.724462663076655, 0.285712220049916, 0.724462663076655, 
+		0.036843869875878, 0.036843869875878, 0.215599664072284, 
+		0.747556466051838, 0.215599664072284, 0.747556466051838, 
+		0.012459809331199, 0.012459809331199, 0.103575616576386, 
+		0.883964574092416, 0.103575616576386, 0.883964574092416};
+	static IssmPDouble l215[]={
+		0.506972916858243,-0.013945833716486, 0.506972916858243, 
+		0.431406354283023, 0.137187291433955, 0.431406354283023, 
+		0.277693644847144, 0.444612710305711, 0.277693644847144, 
+		0.126464891041254, 0.747070217917492, 0.126464891041254, 
+		0.070808385974686, 0.858383228050628, 0.070808385974686, 
+		0.018965170241073, 0.962069659517853, 0.018965170241073, 
+		0.261311371140087, 0.604954466893291, 0.133734161966621, 
+		0.133734161966621, 0.604954466893291, 0.261311371140087, 
+		0.388046767090269, 0.575586555512814, 0.036366677396917, 
+		0.036366677396917, 0.575586555512814, 0.388046767090269, 
+		0.285712220049916, 0.724462663076655,-0.010174883126571, 
+		-0.010174883126571, 0.724462663076655, 0.285712220049916, 
+		0.215599664072284, 0.747556466051838, 0.036843869875878, 
+		0.036843869875878, 0.747556466051838, 0.215599664072284, 
+		0.103575616576386, 0.883964574092416, 0.012459809331199, 
+		0.012459809331199, 0.883964574092416, 0.103575616576386};
+	static IssmPDouble l315[]={
+		0.506972916858243, 0.506972916858243,-0.013945833716486, 
+		0.431406354283023, 0.431406354283023, 0.137187291433955, 
+		0.277693644847144, 0.277693644847144, 0.444612710305711, 
+		0.126464891041254, 0.126464891041254, 0.747070217917492, 
+		0.070808385974686, 0.070808385974686, 0.858383228050628, 
+		0.018965170241073, 0.018965170241073, 0.962069659517853, 
+		0.604954466893291, 0.261311371140087, 0.604954466893291, 
+		0.261311371140087, 0.133734161966621, 0.133734161966621, 
+		0.575586555512814, 0.388046767090269, 0.575586555512814, 
+		0.388046767090269, 0.036366677396917, 0.036366677396917, 
+		0.724462663076655, 0.285712220049916, 0.724462663076655, 
+		0.285712220049916,-0.010174883126571,-0.010174883126571, 
+		0.747556466051838, 0.215599664072284, 0.747556466051838, 
+		0.215599664072284, 0.036843869875878, 0.036843869875878, 
+		0.883964574092416, 0.103575616576386, 0.883964574092416, 
+		0.103575616576386, 0.012459809331199, 0.012459809331199};
+	/*}}}*/
+	/*p=16, npoint=52  {{{*/
+	static IssmPDouble wgt16[]={
+		0.081191089584902, 0.011095307165226, 0.011095307165226, 
+		0.011095307165226, 0.072244353151393, 0.072244353151393, 
+		0.072244353151393, 0.046577417012049, 0.046577417012049, 
+		0.046577417012049, 0.072975670074230, 0.072975670074230, 
+		0.072975670074230, 0.051961986412307, 0.051961986412307, 
+		0.051961986412307, 0.024595292810646, 0.024595292810646, 
+		0.024595292810646, 0.006205006808607, 0.006205006808607, 
+		0.006205006808607, 0.056764756525753, 0.056764756525753, 
+		0.056764756525753, 0.056764756525753, 0.056764756525753, 
+		0.056764756525753, 0.026497443692048, 0.026497443692048, 
+		0.026497443692048, 0.026497443692048, 0.026497443692048, 
+		0.026497443692048, 0.004133096181263, 0.004133096181263, 
+		0.004133096181263, 0.004133096181263, 0.004133096181263, 
+		0.004133096181263, 0.033055830705140, 0.033055830705140, 
+		0.033055830705140, 0.033055830705140, 0.033055830705140, 
+		0.033055830705140, 0.011864642509229, 0.011864642509229, 
+		0.011864642509229, 0.011864642509229, 0.011864642509229, 
+		0.011864642509229};
+	static IssmPDouble l116[]={
+		0.333333333333333, 0.005238916103123, 0.497380541948438, 
+		0.497380541948438, 0.173061122901295, 0.413469438549352, 
+		0.413469438549352, 0.059082801866017, 0.470458599066991, 
+		0.470458599066991, 0.518892500060958, 0.240553749969521, 
+		0.240553749969521, 0.704068411554854, 0.147965794222573, 
+		0.147965794222573, 0.849069624685052, 0.075465187657474, 
+		0.075465187657474, 0.966807194753950, 0.016596402623025, 
+		0.016596402623025, 0.103575692245252, 0.103575692245252, 
+		0.296555596579887, 0.599868711174861, 0.296555596579887, 
+		0.599868711174861, 0.020083411655416, 0.020083411655416, 
+		0.337723063403079, 0.642193524941505, 0.337723063403079, 
+		0.642193524941505,-0.004341002614139,-0.004341002614139, 
+		0.204748281642812, 0.799592720971327, 0.204748281642812, 
+		0.799592720971327, 0.041941786468010, 0.041941786468010, 
+		0.189358492130623, 0.768699721401368, 0.189358492130623, 
+		0.768699721401368, 0.014317320230681, 0.014317320230681, 
+		0.085283615682657, 0.900399064086661, 0.085283615682657, 
+		0.900399064086661};
+	static IssmPDouble l216[]={
+		0.333333333333333, 0.497380541948438, 0.005238916103123, 
+		0.497380541948438, 0.413469438549352, 0.173061122901295, 
+		0.413469438549352, 0.470458599066991, 0.059082801866017, 
+		0.470458599066991, 0.240553749969521, 0.518892500060958, 
+		0.240553749969521, 0.147965794222573, 0.704068411554854, 
+		0.147965794222573, 0.075465187657474, 0.849069624685052, 
+		0.075465187657474, 0.016596402623025, 0.966807194753950, 
+		0.016596402623025, 0.296555596579887, 0.599868711174861, 
+		0.103575692245252, 0.103575692245252, 0.599868711174861, 
+		0.296555596579887, 0.337723063403079, 0.642193524941505, 
+		0.020083411655416, 0.020083411655416, 0.642193524941505, 
+		0.337723063403079, 0.204748281642812, 0.799592720971327, 
+		-0.004341002614139,-0.004341002614139, 0.799592720971327, 
+		0.204748281642812, 0.189358492130623, 0.768699721401368, 
+		0.041941786468010, 0.041941786468010, 0.768699721401368, 
+		0.189358492130623, 0.085283615682657, 0.900399064086661, 
+		0.014317320230681, 0.014317320230681, 0.900399064086661, 
+		0.085283615682657};
+	static IssmPDouble l316[]={
+		0.333333333333333, 0.497380541948438, 0.497380541948438, 
+		0.005238916103123, 0.413469438549352, 0.413469438549352, 
+		0.173061122901295, 0.470458599066991, 0.470458599066991, 
+		0.059082801866017, 0.240553749969521, 0.240553749969521, 
+		0.518892500060958, 0.147965794222573, 0.147965794222573, 
+		0.704068411554854, 0.075465187657474, 0.075465187657474, 
+		0.849069624685052, 0.016596402623025, 0.016596402623025, 
+		0.966807194753950, 0.599868711174861, 0.296555596579887, 
+		0.599868711174861, 0.296555596579887, 0.103575692245252, 
+		0.103575692245252, 0.642193524941505, 0.337723063403079, 
+		0.642193524941505, 0.337723063403079, 0.020083411655416, 
+		0.020083411655416, 0.799592720971327, 0.204748281642812, 
+		0.799592720971327, 0.204748281642812,-0.004341002614139, 
+		-0.004341002614139, 0.768699721401368, 0.189358492130623, 
+		0.768699721401368, 0.189358492130623, 0.041941786468010, 
+		0.041941786468010, 0.900399064086661, 0.085283615682657, 
+		0.900399064086661, 0.085283615682657, 0.014317320230681, 
+		0.014317320230681};
+	/*}}}*/
+	/*p=17, npoint=61{{{*/
+	static IssmPDouble wgt17[]={
+		0.057914928034477, 0.008822054327014, 0.008822054327014, 
+		0.008822054327014, 0.025410682752829, 0.025410682752829, 
+		0.025410682752829, 0.042176958517489, 0.042176958517489, 
+		0.042176958517489, 0.053879858604088, 0.053879858604088, 
+		0.053879858604088, 0.054138904728481, 0.054138904728481, 
+		0.054138904728481, 0.042981974139367, 0.042981974139367, 
+		0.042981974139367, 0.024345832713105, 0.024345832713105, 
+		0.024345832713105, 0.005533341446715, 0.005533341446715, 
+		0.005533341446715, 0.014063655552443, 0.014063655552443, 
+		0.014063655552443, 0.014063655552443, 0.014063655552443, 
+		0.014063655552443, 0.046428907569036, 0.046428907569036, 
+		0.046428907569036, 0.046428907569036, 0.046428907569036, 
+		0.046428907569036, 0.031973646148520, 0.031973646148520, 
+		0.031973646148520, 0.031973646148520, 0.031973646148520, 
+		0.031973646148520, 0.014682366990538, 0.014682366990538, 
+		0.014682366990538, 0.014682366990538, 0.014682366990538, 
+		0.014682366990538, 0.031684053418215, 0.031684053418215, 
+		0.031684053418215, 0.031684053418215, 0.031684053418215, 
+		0.031684053418215, 0.011545213295771, 0.011545213295771, 
+		0.011545213295771, 0.011545213295771, 0.011545213295771, 
+		0.011545213295771};
+	static IssmPDouble l117[]={
+		0.333333333333333, 0.005658918886452, 0.497170540556774, 
+		0.497170540556774, 0.035647354750751, 0.482176322624625, 
+		0.482176322624625, 0.099520061958437, 0.450239969020782, 
+		0.450239969020782, 0.199467521245206, 0.400266239377397, 
+		0.400266239377397, 0.495717464058095, 0.252141267970953, 
+		0.252141267970953, 0.675905990683077, 0.162047004658461, 
+		0.162047004658461, 0.848248235478508, 0.075875882260746, 
+		0.075875882260746, 0.968690546064356, 0.015654726967822, 
+		0.015654726967822, 0.010186928826919, 0.010186928826919, 
+		0.334319867363658, 0.655493203809423, 0.334319867363658, 
+		0.655493203809423, 0.135440871671036, 0.135440871671036, 
+		0.292221537796944, 0.572337590532020, 0.292221537796944, 
+		0.572337590532020, 0.054423924290583, 0.054423924290583, 
+		0.319574885423190, 0.626001190286228, 0.319574885423190, 
+		0.626001190286228, 0.012868560833637, 0.012868560833637, 
+		0.190704224192292, 0.796427214974071, 0.190704224192292, 
+		0.796427214974071, 0.067165782413524, 0.067165782413524, 
+		0.180483211648746, 0.752351005937729, 0.180483211648746, 
+		0.752351005937729, 0.014663182224828, 0.014663182224828, 
+		0.080711313679564, 0.904625504095608, 0.080711313679564, 
+		0.904625504095608};
+	static IssmPDouble l217[]={
+		0.333333333333333, 0.497170540556774, 0.005658918886452, 
+		0.497170540556774, 0.482176322624625, 0.035647354750751, 
+		0.482176322624625, 0.450239969020782, 0.099520061958437, 
+		0.450239969020782, 0.400266239377397, 0.199467521245206, 
+		0.400266239377397, 0.252141267970953, 0.495717464058095, 
+		0.252141267970953, 0.162047004658461, 0.675905990683077, 
+		0.162047004658461, 0.075875882260746, 0.848248235478508, 
+		0.075875882260746, 0.015654726967822, 0.968690546064356, 
+		0.015654726967822, 0.334319867363658, 0.655493203809423, 
+		0.010186928826919, 0.010186928826919, 0.655493203809423, 
+		0.334319867363658, 0.292221537796944, 0.572337590532020, 
+		0.135440871671036, 0.135440871671036, 0.572337590532020, 
+		0.292221537796944, 0.319574885423190, 0.626001190286228, 
+		0.054423924290583, 0.054423924290583, 0.626001190286228, 
+		0.319574885423190, 0.190704224192292, 0.796427214974071, 
+		0.012868560833637, 0.012868560833637, 0.796427214974071, 
+		0.190704224192292, 0.180483211648746, 0.752351005937729, 
+		0.067165782413524, 0.067165782413524, 0.752351005937729, 
+		0.180483211648746, 0.080711313679564, 0.904625504095608, 
+		0.014663182224828, 0.014663182224828, 0.904625504095608, 
+		0.080711313679564};
+	static IssmPDouble l317[]={
+		0.333333333333333, 0.497170540556774, 0.497170540556774, 
+		0.005658918886452, 0.482176322624625, 0.482176322624625, 
+		0.035647354750751, 0.450239969020782, 0.450239969020782, 
+		0.099520061958437, 0.400266239377397, 0.400266239377397, 
+		0.199467521245206, 0.252141267970953, 0.252141267970953, 
+		0.495717464058095, 0.162047004658461, 0.162047004658461, 
+		0.675905990683077, 0.075875882260746, 0.075875882260746, 
+		0.848248235478508, 0.015654726967822, 0.015654726967822, 
+		0.968690546064356, 0.655493203809423, 0.334319867363658, 
+		0.655493203809423, 0.334319867363658, 0.010186928826919, 
+		0.010186928826919, 0.572337590532020, 0.292221537796944, 
+		0.572337590532020, 0.292221537796944, 0.135440871671036, 
+		0.135440871671036, 0.626001190286228, 0.319574885423190, 
+		0.626001190286228, 0.319574885423190, 0.054423924290583, 
+		0.054423924290583, 0.796427214974071, 0.190704224192292, 
+		0.796427214974071, 0.190704224192292, 0.012868560833637, 
+		0.012868560833637, 0.752351005937729, 0.180483211648746, 
+		0.752351005937729, 0.180483211648746, 0.067165782413524, 
+		0.067165782413524, 0.904625504095608, 0.080711313679564, 
+		0.904625504095608, 0.080711313679564, 0.014663182224828, 
+		0.014663182224828};
+	/*}}}*/
+	/*p=18, npoint=70  {{{*/
+
+	static IssmPDouble wgt18[]={
+		0.053364381350150, 0.015713921277179, 0.015713921277179, 
+		0.015713921277179, 0.032495554156279, 0.032495554156279, 
+		0.032495554156279, 0.033672969465771, 0.033672969465771, 
+		0.033672969465771, 0.048071249104579, 0.048071249104579, 
+		0.048071249104579, 0.055869421169115, 0.055869421169115, 
+		0.055869421169115, 0.043429498443148, 0.043429498443148, 
+		0.043429498443148, 0.026451755176745, 0.026451755176745, 
+		0.026451755176745, 0.011767418126433, 0.011767418126433, 
+		0.011767418126433,-0.003850519950463,-0.003850519950463, 
+		-0.003850519950463, 0.010967196889496, 0.010967196889496, 
+		0.010967196889496, 0.010967196889496, 0.010967196889496, 
+		0.010967196889496, 0.047211440790349, 0.047211440790349, 
+		0.047211440790349, 0.047211440790349, 0.047211440790349, 
+		0.047211440790349, 0.030617090859378, 0.030617090859378, 
+		0.030617090859378, 0.030617090859378, 0.030617090859378, 
+		0.030617090859378, 0.031834201210069, 0.031834201210069, 
+		0.031834201210069, 0.031834201210069, 0.031834201210069, 
+		0.031834201210069, 0.014037809005559, 0.014037809005559, 
+		0.014037809005559, 0.014037809005559, 0.014037809005559, 
+		0.014037809005559, 0.013222699422034, 0.013222699422034, 
+		0.013222699422034, 0.013222699422034, 0.013222699422034, 
+		0.013222699422034, 0.000079999375178, 0.000079999375178, 
+		0.000079999375178, 0.000079999375178, 0.000079999375178, 
+		0.000079999375178};
+	static IssmPDouble l118[]={
+		0.333333333333333, 0.013310382738157, 0.493344808630921, 
+		0.493344808630921, 0.061578811516086, 0.469210594241957, 
+		0.469210594241957, 0.127437208225989, 0.436281395887006, 
+		0.436281395887006, 0.210307658653168, 0.394846170673416, 
+		0.394846170673416, 0.500410862393686, 0.249794568803157, 
+		0.249794568803157, 0.677135612512315, 0.161432193743843, 
+		0.161432193743843, 0.846803545029257, 0.076598227485371, 
+		0.076598227485371, 0.951495121293100, 0.024252439353450, 
+		0.024252439353450, 0.913707265566071, 0.043146367216965, 
+		0.043146367216965, 0.008430536202420, 0.008430536202420, 
+		0.358911494940944, 0.632657968856636, 0.358911494940944, 
+		0.632657968856636, 0.131186551737188, 0.131186551737188, 
+		0.294402476751957, 0.574410971510855, 0.294402476751957, 
+		0.574410971510855, 0.050203151565675, 0.050203151565675, 
+		0.325017801641814, 0.624779046792512, 0.325017801641814, 
+		0.624779046792512, 0.066329263810916, 0.066329263810916, 
+		0.184737559666046, 0.748933176523037, 0.184737559666046, 
+		0.748933176523037, 0.011996194566236, 0.011996194566236, 
+		0.218796800013321, 0.769207005420443, 0.218796800013321, 
+		0.769207005420443, 0.014858100590125, 0.014858100590125, 
+		0.101179597136408, 0.883962302273467, 0.101179597136408, 
+		0.883962302273467,-0.035222015287949,-0.035222015287949, 
+		0.020874755282586, 1.014347260005363, 0.020874755282586, 
+		1.014347260005363};
+	static IssmPDouble l218[]={
+		0.333333333333333, 0.493344808630921, 0.013310382738157, 
+		0.493344808630921, 0.469210594241957, 0.061578811516086, 
+		0.469210594241957, 0.436281395887006, 0.127437208225989, 
+		0.436281395887006, 0.394846170673416, 0.210307658653168, 
+		0.394846170673416, 0.249794568803157, 0.500410862393686, 
+		0.249794568803157, 0.161432193743843, 0.677135612512315, 
+		0.161432193743843, 0.076598227485371, 0.846803545029257, 
+		0.076598227485371, 0.024252439353450, 0.951495121293100, 
+		0.024252439353450, 0.043146367216965, 0.913707265566071, 
+		0.043146367216965, 0.358911494940944, 0.632657968856636, 
+		0.008430536202420, 0.008430536202420, 0.632657968856636, 
+		0.358911494940944, 0.294402476751957, 0.574410971510855, 
+		0.131186551737188, 0.131186551737188, 0.574410971510855, 
+		0.294402476751957, 0.325017801641814, 0.624779046792512, 
+		0.050203151565675, 0.050203151565675, 0.624779046792512, 
+		0.325017801641814, 0.184737559666046, 0.748933176523037, 
+		0.066329263810916, 0.066329263810916, 0.748933176523037, 
+		0.184737559666046, 0.218796800013321, 0.769207005420443, 
+		0.011996194566236, 0.011996194566236, 0.769207005420443, 
+		0.218796800013321, 0.101179597136408, 0.883962302273467, 
+		0.014858100590125, 0.014858100590125, 0.883962302273467, 
+		0.101179597136408, 0.020874755282586, 1.014347260005363, 
+		-0.035222015287949,-0.035222015287949, 1.014347260005363, 
+		0.020874755282586};
+	static IssmPDouble l318[]={
+		0.333333333333333, 0.493344808630921, 0.493344808630921, 
+		0.013310382738157, 0.469210594241957, 0.469210594241957, 
+		0.061578811516086, 0.436281395887006, 0.436281395887006, 
+		0.127437208225989, 0.394846170673416, 0.394846170673416, 
+		0.210307658653168, 0.249794568803157, 0.249794568803157, 
+		0.500410862393686, 0.161432193743843, 0.161432193743843, 
+		0.677135612512315, 0.076598227485371, 0.076598227485371, 
+		0.846803545029257, 0.024252439353450, 0.024252439353450, 
+		0.951495121293100, 0.043146367216965, 0.043146367216965, 
+		0.913707265566071, 0.632657968856636, 0.358911494940944, 
+		0.632657968856636, 0.358911494940944, 0.008430536202420, 
+		0.008430536202420, 0.574410971510855, 0.294402476751957, 
+		0.574410971510855, 0.294402476751957, 0.131186551737188, 
+		0.131186551737188, 0.624779046792512, 0.325017801641814, 
+		0.624779046792512, 0.325017801641814, 0.050203151565675, 
+		0.050203151565675, 0.748933176523037, 0.184737559666046, 
+		0.748933176523037, 0.184737559666046, 0.066329263810916, 
+		0.066329263810916, 0.769207005420443, 0.218796800013321, 
+		0.769207005420443, 0.218796800013321, 0.011996194566236, 
+		0.011996194566236, 0.883962302273467, 0.101179597136408, 
+		0.883962302273467, 0.101179597136408, 0.014858100590125, 
+		0.014858100590125, 1.014347260005363, 0.020874755282586, 
+		1.014347260005363, 0.020874755282586,-0.035222015287949, 
+		-0.035222015287949};
+	/*}}}*/
+	/*p=19, npoint=73  {{{*/
+
+	static IssmPDouble wgt19[]={
+		0.056995437856306, 0.017893352515055, 0.017893352515055, 
+		0.017893352515055, 0.038775849701151, 0.038775849701151, 
+		0.038775849701151, 0.052422467754193, 0.052422467754193, 
+		0.052422467754193, 0.052811905405354, 0.052811905405354, 
+		0.052811905405354, 0.041844983939388, 0.041844983939388, 
+		0.041844983939388, 0.027800807314648, 0.027800807314648, 
+		0.027800807314648, 0.014002903771278, 0.014002903771278, 
+		0.014002903771278, 0.003601560678933, 0.003601560678933, 
+		0.003601560678933, 0.006728804180578, 0.006728804180578, 
+		0.006728804180578, 0.006728804180578, 0.006728804180578, 
+		0.006728804180578, 0.044295745540949, 0.044295745540949, 
+		0.044295745540949, 0.044295745540949, 0.044295745540949, 
+		0.044295745540949, 0.015382176206141, 0.015382176206141, 
+		0.015382176206141, 0.015382176206141, 0.015382176206141, 
+		0.015382176206141, 0.027928534240338, 0.027928534240338, 
+		0.027928534240338, 0.027928534240338, 0.027928534240338, 
+		0.027928534240338, 0.004316169837400, 0.004316169837400, 
+		0.004316169837400, 0.004316169837400, 0.004316169837400, 
+		0.004316169837400, 0.031597525960379, 0.031597525960379, 
+		0.031597525960379, 0.031597525960379, 0.031597525960379, 
+		0.031597525960379, 0.017768353603780, 0.017768353603780, 
+		0.017768353603780, 0.017768353603780, 0.017768353603780, 
+		0.017768353603780, 0.006581669842530, 0.006581669842530, 
+		0.006581669842530, 0.006581669842530, 0.006581669842530, 
+		0.006581669842530};
+	static IssmPDouble l119[]={
+		0.333333333333333, 0.020780025853987, 0.489609987073006, 
+		0.489609987073006, 0.090926214604215, 0.454536892697893, 
+		0.454536892697893, 0.197166638701138, 0.401416680649431, 
+		0.401416680649431, 0.488896691193805, 0.255551654403098, 
+		0.255551654403098, 0.645844115695741, 0.177077942152130, 
+		0.177077942152130, 0.779877893544096, 0.110061053227952, 
+		0.110061053227952, 0.888942751496321, 0.055528624251840, 
+		0.055528624251840, 0.974756272445543, 0.012621863777229, 
+		0.012621863777229, 0.003611417848412, 0.003611417848412, 
+		0.395754787356943, 0.600633794794645, 0.395754787356943, 
+		0.600633794794645, 0.134466754530780, 0.134466754530780, 
+		0.307929983880436, 0.557603261588784, 0.307929983880436, 
+		0.557603261588784, 0.014446025776115, 0.014446025776115, 
+		0.264566948406520, 0.720987025817365, 0.264566948406520, 
+		0.720987025817365, 0.046933578838178, 0.046933578838178, 
+		0.358539352205951, 0.594527068955871, 0.358539352205951, 
+		0.594527068955871, 0.002861120350567, 0.002861120350567, 
+		0.157807405968595, 0.839331473680839, 0.157807405968595, 
+		0.839331473680839, 0.223861424097916, 0.223861424097916, 
+		0.075050596975911, 0.701087978926173, 0.075050596975911, 
+		0.701087978926173, 0.034647074816760, 0.034647074816760, 
+		0.142421601113383, 0.822931324069857, 0.142421601113383, 
+		0.822931324069857, 0.010161119296278, 0.010161119296278, 
+		0.065494628082938, 0.924344252620784, 0.065494628082938, 
+		0.924344252620784};
+	static IssmPDouble l219[]={
+		0.333333333333333, 0.489609987073006, 0.020780025853987, 
+		0.489609987073006, 0.454536892697893, 0.090926214604215, 
+		0.454536892697893, 0.401416680649431, 0.197166638701138, 
+		0.401416680649431, 0.255551654403098, 0.488896691193805, 
+		0.255551654403098, 0.177077942152130, 0.645844115695741, 
+		0.177077942152130, 0.110061053227952, 0.779877893544096, 
+		0.110061053227952, 0.055528624251840, 0.888942751496321, 
+		0.055528624251840, 0.012621863777229, 0.974756272445543, 
+		0.012621863777229, 0.395754787356943, 0.600633794794645, 
+		0.003611417848412, 0.003611417848412, 0.600633794794645, 
+		0.395754787356943, 0.307929983880436, 0.557603261588784, 
+		0.134466754530780, 0.134466754530780, 0.557603261588784, 
+		0.307929983880436, 0.264566948406520, 0.720987025817365, 
+		0.014446025776115, 0.014446025776115, 0.720987025817365, 
+		0.264566948406520, 0.358539352205951, 0.594527068955871, 
+		0.046933578838178, 0.046933578838178, 0.594527068955871, 
+		0.358539352205951, 0.157807405968595, 0.839331473680839, 
+		0.002861120350567, 0.002861120350567, 0.839331473680839, 
+		0.157807405968595, 0.075050596975911, 0.701087978926173, 
+		0.223861424097916, 0.223861424097916, 0.701087978926173, 
+		0.075050596975911, 0.142421601113383, 0.822931324069857, 
+		0.034647074816760, 0.034647074816760, 0.822931324069857, 
+		0.142421601113383, 0.065494628082938, 0.924344252620784, 
+		0.010161119296278, 0.010161119296278, 0.924344252620784, 
+		0.065494628082938};
+	static IssmPDouble l319[]={
+		0.333333333333333, 0.489609987073006, 0.489609987073006, 
+		0.020780025853987, 0.454536892697893, 0.454536892697893, 
+		0.090926214604215, 0.401416680649431, 0.401416680649431, 
+		0.197166638701138, 0.255551654403098, 0.255551654403098, 
+		0.488896691193805, 0.177077942152130, 0.177077942152130, 
+		0.645844115695741, 0.110061053227952, 0.110061053227952, 
+		0.779877893544096, 0.055528624251840, 0.055528624251840, 
+		0.888942751496321, 0.012621863777229, 0.012621863777229, 
+		0.974756272445543, 0.600633794794645, 0.395754787356943, 
+		0.600633794794645, 0.395754787356943, 0.003611417848412, 
+		0.003611417848412, 0.557603261588784, 0.307929983880436, 
+		0.557603261588784, 0.307929983880436, 0.134466754530780, 
+		0.134466754530780, 0.720987025817365, 0.264566948406520, 
+		0.720987025817365, 0.264566948406520, 0.014446025776115, 
+		0.014446025776115, 0.594527068955871, 0.358539352205951, 
+		0.594527068955871, 0.358539352205951, 0.046933578838178, 
+		0.046933578838178, 0.839331473680839, 0.157807405968595, 
+		0.839331473680839, 0.157807405968595, 0.002861120350567, 
+		0.002861120350567, 0.701087978926173, 0.075050596975911, 
+		0.701087978926173, 0.075050596975911, 0.223861424097916, 
+		0.223861424097916, 0.822931324069857, 0.142421601113383, 
+		0.822931324069857, 0.142421601113383, 0.034647074816760, 
+		0.034647074816760, 0.924344252620784, 0.065494628082938, 
+		0.924344252620784, 0.065494628082938, 0.010161119296278, 
+		0.010161119296278};
+	/*}}}*/
+	/*p=20, npoint=79 {{{*/
+	static IssmPDouble wgt20[]={
+		0.057256499746719, 0.001501721280705, 0.001501721280705, 
+		0.001501721280705, 0.020195803723819, 0.020195803723819, 
+		0.020195803723819, 0.039624016090841, 0.039624016090841, 
+		0.039624016090841, 0.052739185030045, 0.052739185030045, 
+		0.052739185030045, 0.053043868444611, 0.053043868444611, 
+		0.053043868444611, 0.042206713977986, 0.042206713977986, 
+		0.042206713977986, 0.027708365070095, 0.027708365070095, 
+		0.027708365070095, 0.013333849876622, 0.013333849876622, 
+		0.013333849876622,-0.001094760895106,-0.001094760895106, 
+		-0.001094760895106, 0.003033053580543, 0.003033053580543, 
+		0.003033053580543, 0.028519670065604, 0.028519670065604, 
+		0.028519670065604, 0.028519670065604, 0.028519670065604, 
+		0.028519670065604, 0.008381451951650, 0.008381451951650, 
+		0.008381451951650, 0.008381451951650, 0.008381451951650, 
+		0.008381451951650, 0.044695409202580, 0.044695409202580, 
+		0.044695409202580, 0.044695409202580, 0.044695409202580, 
+		0.044695409202580, 0.014672360101834, 0.014672360101834, 
+		0.014672360101834, 0.014672360101834, 0.014672360101834, 
+		0.014672360101834, 0.031791643800640, 0.031791643800640, 
+		0.031791643800640, 0.031791643800640, 0.031791643800640, 
+		0.031791643800640, 0.001220064691226, 0.001220064691226, 
+		0.001220064691226, 0.001220064691226, 0.001220064691226, 
+		0.001220064691226, 0.017515684095300, 0.017515684095300, 
+		0.017515684095300, 0.017515684095300, 0.017515684095300, 
+		0.017515684095300, 0.006190192638113, 0.006190192638113, 
+		0.006190192638113, 0.006190192638113, 0.006190192638113, 
+		0.006190192638113};
+	static IssmPDouble l120[]={
+		0.333333333333333,-0.001900928704400, 0.500950464352200, 
+		0.500950464352200, 0.023574084130543, 0.488212957934729, 
+		0.488212957934729, 0.089726636099435, 0.455136681950283, 
+		0.455136681950283, 0.196007481363421, 0.401996259318289, 
+		0.401996259318289, 0.488214180481157, 0.255892909759421, 
+		0.255892909759421, 0.647023488009788, 0.176488255995106, 
+		0.176488255995106, 0.791658289326483, 0.104170855336758, 
+		0.104170855336758, 0.893862072318140, 0.053068963840930, 
+		0.053068963840930, 0.916762569607942, 0.041618715196029, 
+		0.041618715196029, 0.976836157186356, 0.011581921406822, 
+		0.011581921406822, 0.048741583664839, 0.048741583664839, 
+		0.344855770229001, 0.606402646106160, 0.344855770229001, 
+		0.606402646106160, 0.006314115948605, 0.006314115948605, 
+		0.377843269594854, 0.615842614456541, 0.377843269594854, 
+		0.615842614456541, 0.134316520547348, 0.134316520547348, 
+		0.306635479062357, 0.559048000390295, 0.306635479062357, 
+		0.559048000390295, 0.013973893962392, 0.013973893962392, 
+		0.249419362774742, 0.736606743262866, 0.249419362774742, 
+		0.736606743262866, 0.075549132909764, 0.075549132909764, 
+		0.212775724802802, 0.711675142287434, 0.212775724802802, 
+		0.711675142287434,-0.008368153208227,-0.008368153208227, 
+		0.146965436053239, 0.861402717154987, 0.146965436053239, 
+		0.861402717154987, 0.026686063258714, 0.026686063258714, 
+		0.137726978828923, 0.835586957912363, 0.137726978828923, 
+		0.835586957912363, 0.010547719294141, 0.010547719294141, 
+		0.059696109149007, 0.929756171556853, 0.059696109149007, 
+		0.929756171556853};
+	static IssmPDouble l220[]={
+		0.333333333333333, 0.500950464352200,-0.001900928704400, 
+		0.500950464352200, 0.488212957934729, 0.023574084130543, 
+		0.488212957934729, 0.455136681950283, 0.089726636099435, 
+		0.455136681950283, 0.401996259318289, 0.196007481363421, 
+		0.401996259318289, 0.255892909759421, 0.488214180481157, 
+		0.255892909759421, 0.176488255995106, 0.647023488009788, 
+		0.176488255995106, 0.104170855336758, 0.791658289326483, 
+		0.104170855336758, 0.053068963840930, 0.893862072318140, 
+		0.053068963840930, 0.041618715196029, 0.916762569607942, 
+		0.041618715196029, 0.011581921406822, 0.976836157186356, 
+		0.011581921406822, 0.344855770229001, 0.606402646106160, 
+		0.048741583664839, 0.048741583664839, 0.606402646106160, 
+		0.344855770229001, 0.377843269594854, 0.615842614456541, 
+		0.006314115948605, 0.006314115948605, 0.615842614456541, 
+		0.377843269594854, 0.306635479062357, 0.559048000390295, 
+		0.134316520547348, 0.134316520547348, 0.559048000390295, 
+		0.306635479062357, 0.249419362774742, 0.736606743262866, 
+		0.013973893962392, 0.013973893962392, 0.736606743262866, 
+		0.249419362774742, 0.212775724802802, 0.711675142287434, 
+		0.075549132909764, 0.075549132909764, 0.711675142287434, 
+		0.212775724802802, 0.146965436053239, 0.861402717154987, 
+		-0.008368153208227,-0.008368153208227, 0.861402717154987, 
+		0.146965436053239, 0.137726978828923, 0.835586957912363, 
+		0.026686063258714, 0.026686063258714, 0.835586957912363, 
+		0.137726978828923, 0.059696109149007, 0.929756171556853, 
+		0.010547719294141, 0.010547719294141, 0.929756171556853, 
+		0.059696109149007};
+	static IssmPDouble l320[]={
+		0.333333333333333, 0.500950464352200, 0.500950464352200, 
+		-0.001900928704400, 0.488212957934729, 0.488212957934729, 
+		0.023574084130543, 0.455136681950283, 0.455136681950283, 
+		0.089726636099435, 0.401996259318289, 0.401996259318289, 
+		0.196007481363421, 0.255892909759421, 0.255892909759421, 
+		0.488214180481157, 0.176488255995106, 0.176488255995106, 
+		0.647023488009788, 0.104170855336758, 0.104170855336758, 
+		0.791658289326483, 0.053068963840930, 0.053068963840930, 
+		0.893862072318140, 0.041618715196029, 0.041618715196029, 
+		0.916762569607942, 0.011581921406822, 0.011581921406822, 
+		0.976836157186356, 0.606402646106160, 0.344855770229001, 
+		0.606402646106160, 0.344855770229001, 0.048741583664839, 
+		0.048741583664839, 0.615842614456541, 0.377843269594854, 
+		0.615842614456541, 0.377843269594854, 0.006314115948605, 
+		0.006314115948605, 0.559048000390295, 0.306635479062357, 
+		0.559048000390295, 0.306635479062357, 0.134316520547348, 
+		0.134316520547348, 0.736606743262866, 0.249419362774742, 
+		0.736606743262866, 0.249419362774742, 0.013973893962392, 
+		0.013973893962392, 0.711675142287434, 0.212775724802802, 
+		0.711675142287434, 0.212775724802802, 0.075549132909764, 
+		0.075549132909764, 0.861402717154987, 0.146965436053239, 
+		0.861402717154987, 0.146965436053239,-0.008368153208227, 
+		-0.008368153208227, 0.835586957912363, 0.137726978828923, 
+		0.835586957912363, 0.137726978828923, 0.026686063258714, 
+		0.026686063258714, 0.929756171556853, 0.059696109149007, 
+		0.929756171556853, 0.059696109149007, 0.010547719294141, 
+		0.010547719294141};
+	/*}}}*/
+
+	static IssmPDouble* wgtp[MAX_TRIA_SYM_ORD]={
+		wgt1 ,wgt2 ,wgt3 ,wgt4 ,wgt5 ,
+		wgt6 ,wgt7 ,wgt8 ,wgt9 ,wgt10,
+		wgt11,wgt12,wgt13,wgt14,wgt15,
+		wgt16,wgt17,wgt18,wgt19,wgt20};
+	static IssmPDouble* l1p [MAX_TRIA_SYM_ORD]={
+		l11  ,l12  ,l13  ,l14  ,l15  ,
+		l16  ,l17  ,l18  ,l19  ,l110 ,
+		l111 ,l112 ,l113 ,l114 ,l115 ,
+		l116 ,l117 ,l118 ,l119 ,l120 };
+	static IssmPDouble* l2p [MAX_TRIA_SYM_ORD]={
+		l21  ,l22  ,l23  ,l24  ,l25  ,
+		l26  ,l27  ,l28  ,l29  ,l210 ,
+		l211 ,l212 ,l213 ,l214 ,l215 ,
+		l216 ,l217 ,l218 ,l219 ,l220 };
+	static IssmPDouble* l3p [MAX_TRIA_SYM_ORD]={
+		l31  ,l32  ,l33  ,l34  ,l35  ,
+		l36  ,l37  ,l38  ,l39  ,l310 ,
+		l311 ,l312 ,l313 ,l314 ,l315 ,
+		l316 ,l317 ,l318 ,l319 ,l320 };
+
+	static int np[MAX_TRIA_SYM_ORD]={sizeof(wgt1 )/sizeof(IssmPDouble),
+		sizeof(wgt2 )/sizeof(IssmPDouble),
+		sizeof(wgt3 )/sizeof(IssmPDouble),
+		sizeof(wgt4 )/sizeof(IssmPDouble),
+		sizeof(wgt5 )/sizeof(IssmPDouble),
+		sizeof(wgt6 )/sizeof(IssmPDouble),
+		sizeof(wgt7 )/sizeof(IssmPDouble),
+		sizeof(wgt8 )/sizeof(IssmPDouble),
+		sizeof(wgt9 )/sizeof(IssmPDouble),
+		sizeof(wgt10)/sizeof(IssmPDouble),
+		sizeof(wgt11)/sizeof(IssmPDouble),
+		sizeof(wgt12)/sizeof(IssmPDouble),
+		sizeof(wgt13)/sizeof(IssmPDouble),
+		sizeof(wgt14)/sizeof(IssmPDouble),
+		sizeof(wgt15)/sizeof(IssmPDouble),
+		sizeof(wgt16)/sizeof(IssmPDouble),
+		sizeof(wgt17)/sizeof(IssmPDouble),
+		sizeof(wgt18)/sizeof(IssmPDouble),
+		sizeof(wgt19)/sizeof(IssmPDouble),
+		sizeof(wgt20)/sizeof(IssmPDouble)};
+
+	//	_printf0_("GaussLegendreTria: iord=" << iord << "\n");
+
+	/*  check to see if Gauss points need to be calculated  */
+	if (iord <= MAX_TRIA_SYM_ORD) {
+
+		/*  copy the points from the static arrays (noting that the pointers
+			 could be returned directly, but then the calling function would
+			 have to know to not free them)  */
+
+		*pngaus=np[iord-1];
+
+		*pl1  =xNew<IssmDouble>(*pngaus);
+		*pl2  =xNew<IssmDouble>(*pngaus);
+		*pl3  =xNew<IssmDouble>(*pngaus);
+		*pwgt =xNew<IssmDouble>(*pngaus);
+
+		for (i=0; i<*pngaus; i++) {
+			(*pl1 )[i]=l1p [iord-1][i];
+			(*pl2 )[i]=l2p [iord-1][i];
+			(*pl3 )[i]=l3p [iord-1][i];
+			(*pwgt)[i]=wgtp[iord-1][i];
+		}
+	}
+	else {
+
+		/*  calculate the Gauss points from the collapsed quadrilateral  */
+		nigaus =iord/2+1;
+		*pngaus=nigaus*nigaus;
+
+		*pl1  =xNew<IssmDouble>(*pngaus);
+		*pl2  =xNew<IssmDouble>(*pngaus);
+		*pl3  =xNew<IssmDouble>(*pngaus);
+		*pwgt =xNew<IssmDouble>(*pngaus);
+
+		/*  get the gauss points in each direction  */
+		GaussLegendreLinear(&xgaus, &xwgt, nigaus);
+
+		egaus=xgaus;
+		ewgt =xwgt;
+
+		/*  collapse the gauss points into the triangle and transform into
+			 area coordinates  */
+		ipt=0;
+		for (j=0; j<nigaus; j++) {
+			for (i=0; i<nigaus; i++) {
+				xi        =      1./2.*(1.-egaus[j])*xgaus[i];
+				eta       =SQRT3/2.*(1.+egaus[j]);
+				(*pwgt)[ipt]=xwgt[i]*ewgt[j]*(SQRT3/4.*(1.-egaus[j]));
+
+				(*pl1 )[ipt]=(1.-xi-eta/SQRT3)/2.;
+				(*pl2 )[ipt]=(1.+xi-eta/SQRT3)/2.;
+				(*pl3 )[ipt]=       eta/SQRT3;
+
+				ipt++;
+			}
+		}
+		xDelete<IssmPDouble>(xwgt );
+		xDelete<IssmPDouble>(xgaus);
+	}
+
+	//	_printf0_("GaussLegendreTria - ngaus=" << *pngaus << "\n");
+	//	for (i=0; i<*pngaus; i++)
+	//		_printf0_("i=" << i << ": l1gaus=" << (*pl1 )[i] << ",l2gaus=" << (*pl2 )[i] << ",l3gaus=" << (*pl3 )[i]<< ",wgt=" << (*pwgt)[i]<< "\n\n");
+
+	return;
+}/*}}}*/
+void GaussLegendreTetra( int* pngaus, IssmDouble** pl1, IssmDouble** pl2, IssmDouble** pl3, IssmDouble** pl4, IssmDouble** pwgt, int iord ) {/*{{{*/
+	/* Gauss quadrature points for the tetrahedron.
+
+		p=2-3 points from Y. Jinyun, "Symmetric Gaussian Quadrature
+		Formulae for Tetrahedronal Regions", Computer Methods in Applied
+		Mechanics and Engineering, Vol. 43, pp. 349-353 (1984).
+
+		p=4-6 points from P. Keast, "Moderate-Degree Tetrahedral
+		Quadrature Formulas", Computer Methods in Applied Mechanics and
+		Engineering, Vol. 55, pp. 339-348 (1986).*/
+
+	/*Intermediaries*/
+	int i,j,k,ipt,nigaus;
+	IssmPDouble xi,eta,zeta;
+	IssmPDouble *xgaus=NULL,*xwgt=NULL,*egaus,*ewgt,*zgaus,*zwgt;
+
+	/*Hardcoded Gauss points definition*/
+	/*p= 1, npoint= 1  {{{*/
+	static IssmPDouble wgt1[]={
+		1.000000000000000};
+	static IssmPDouble l11[]={
+		0.250000000000000};
+	static IssmPDouble l21[]={
+		0.250000000000000};
+	static IssmPDouble l31[]={
+		0.250000000000000};
+	static IssmPDouble l41[]={
+		0.250000000000000};
+	/*}}}*/
+	/*p= 2, npoint= 4  {{{*/
+
+	static IssmPDouble wgt2[]={
+		0.250000000000000, 0.250000000000000, 0.250000000000000,
+		0.250000000000000};
+	static IssmPDouble l12[]={
+		0.585410196624969, 0.138196601125011, 0.138196601125011,
+		0.138196601125011};
+	static IssmPDouble l22[]={
+		0.138196601125011, 0.585410196624969, 0.138196601125011,
+		0.138196601125011};
+	static IssmPDouble l32[]={
+		0.138196601125011, 0.138196601125011, 0.585410196624969,
+		0.138196601125011};
+	static IssmPDouble l42[]={
+		0.138196601125011, 0.138196601125011, 0.138196601125011,
+		0.585410196624969};
+	/*}}}*/
+	/*p= 3, npoint= 5  {{{*/
+	static IssmPDouble wgt3[]={
+		-0.800000000000000, 0.450000000000000, 0.450000000000000, 
+		0.450000000000000, 0.450000000000000};
+	static IssmPDouble l13[]={
+		0.250000000000000, 0.500000000000000, 0.166666666666667, 
+		0.166666666666667, 0.166666666666667};
+	static IssmPDouble l23[]={
+		0.250000000000000, 0.166666666666667, 0.500000000000000, 
+		0.166666666666667, 0.166666666666667};
+	static IssmPDouble l33[]={
+		0.250000000000000, 0.166666666666667, 0.166666666666667, 
+		0.500000000000000, 0.166666666666667};
+	static IssmPDouble l43[]={
+		0.250000000000000, 0.166666666666667, 0.166666666666667, 
+		0.166666666666667, 0.500000000000000};
+	/*}}}*/
+	/*p= 4, npoint=11  {{{*/
+
+	static IssmPDouble wgt4[]={
+		-0.013155555555556, 0.007622222222222, 0.007622222222222, 
+		0.007622222222222, 0.007622222222222, 0.024888888888889,
+		0.024888888888889, 0.024888888888889, 0.024888888888889, 
+		0.024888888888889, 0.024888888888889};
+	static IssmPDouble l14[]={
+		0.250000000000000, 0.785714285714286, 0.071428571428571, 
+		0.071428571428571, 0.071428571428571, 0.399403576166799,
+		0.399403576166799, 0.399403576166799, 0.100596423833201, 
+		0.100596423833201, 0.100596423833201};
+	static IssmPDouble l24[]={
+		0.250000000000000, 0.071428571428571, 0.785714285714286, 
+		0.071428571428571, 0.071428571428571, 0.399403576166799,
+		0.100596423833201, 0.100596423833201, 0.399403576166799, 
+		0.399403576166799, 0.100596423833201};
+	static IssmPDouble l34[]={
+		0.250000000000000, 0.071428571428571, 0.071428571428571, 
+		0.785714285714286, 0.071428571428571, 0.100596423833201, 
+		0.399403576166799, 0.100596423833201, 0.399403576166799,
+		0.100596423833201, 0.399403576166799};
+	static IssmPDouble l44[]={
+		0.250000000000000, 0.071428571428571, 0.071428571428571, 
+		0.071428571428571, 0.785714285714286, 0.100596423833201, 
+		0.100596423833201, 0.399403576166799, 0.100596423833201,
+		0.399403576166799, 0.399403576166799};
+	/*}}}*/
+	/*p= 5, npoint=15  {{{*/
+
+	static IssmPDouble wgt5[]={
+		0.030283678097089, 0.006026785714286, 0.006026785714286, 
+		0.006026785714286, 0.006026785714286, 0.011645249086029, 
+		0.011645249086029, 0.011645249086029, 0.011645249086029,
+		0.010949141561386, 0.010949141561386, 0.010949141561386,
+		0.010949141561386, 0.010949141561386, 0.010949141561386};
+	static IssmPDouble l15[]={
+		0.250000000000000, 0.000000000000000, 0.333333333333333, 
+		0.333333333333333, 0.333333333333333, 0.727272727272727, 
+		0.090909090909091, 0.090909090909091, 0.090909090909091, 
+		0.066550153573664, 0.066550153573664, 0.066550153573664, 
+		0.433449846426336, 0.433449846426336, 0.433449846426336};
+	static IssmPDouble l25[]={
+		0.250000000000000, 0.333333333333333, 0.000000000000000, 
+		0.333333333333333, 0.333333333333333, 0.090909090909091, 
+		0.727272727272727, 0.090909090909091, 0.090909090909091, 
+		0.066550153573664, 0.433449846426336, 0.433449846426336, 
+		0.066550153573664, 0.066550153573664, 0.433449846426336};
+	static IssmPDouble l35[]={
+		0.250000000000000, 0.333333333333333, 0.333333333333333, 
+		0.000000000000000, 0.333333333333333, 0.090909090909091, 
+		0.090909090909091, 0.727272727272727, 0.090909090909091, 
+		0.433449846426336, 0.066550153573664, 0.433449846426336, 
+		0.066550153573664, 0.433449846426336, 0.066550153573664};
+	static IssmPDouble l45[]={
+		0.250000000000000, 0.333333333333333, 0.333333333333333, 
+		0.333333333333333, 0.000000000000000, 0.090909090909091, 
+		0.090909090909091, 0.090909090909091, 0.727272727272727, 
+		0.433449846426336, 0.433449846426336, 0.066550153573664, 
+		0.433449846426336, 0.066550153573664, 0.066550153573664};
+	/*}}}*/
+	/*p= 6, npoint=24  {{{*/
+
+	static IssmPDouble wgt6[]={
+		0.006653791709695, 0.006653791709695, 0.006653791709695, 
+		0.006653791709695, 0.001679535175887, 0.001679535175887, 
+		0.001679535175887, 0.001679535175887, 0.009226196923942, 
+		0.009226196923942, 0.009226196923942, 0.009226196923942,
+		0.008035714285714, 0.008035714285714, 0.008035714285714, 
+		0.008035714285714, 0.008035714285714, 0.008035714285714, 
+		0.008035714285714, 0.008035714285714, 0.008035714285714, 
+		0.008035714285714, 0.008035714285714, 0.008035714285714};
+	static IssmPDouble l16[]={
+		0.356191386222545, 0.214602871259152, 0.214602871259152, 
+		0.214602871259152, 0.877978124396166, 0.040673958534611, 
+		0.040673958534611, 0.040673958534611, 0.032986329573173, 
+		0.322337890142276, 0.322337890142276, 0.322337890142276,
+
+		0.063661001875018, 0.063661001875018, 0.063661001875018, 
+		0.063661001875018, 0.063661001875018, 0.063661001875018, 
+		0.269672331458316, 0.603005664791649, 0.269672331458316, 
+		0.603005664791649, 0.269672331458316, 0.603005664791649};
+	static IssmPDouble l26[]={
+		0.214602871259152, 0.356191386222545, 0.214602871259152, 
+		0.214602871259152, 0.040673958534611, 0.877978124396166, 
+		0.040673958534611, 0.040673958534611, 0.322337890142276, 
+		0.032986329573173, 0.322337890142276, 0.322337890142276,
+
+		0.063661001875018, 0.063661001875018, 0.269672331458316, 
+		0.603005664791649, 0.269672331458316, 0.603005664791649, 
+		0.063661001875018, 0.063661001875018, 0.063661001875018, 
+		0.063661001875018, 0.603005664791649, 0.269672331458316};
+	static IssmPDouble l36[]={
+		0.214602871259152, 0.214602871259152, 0.356191386222545, 
+		0.214602871259152, 0.040673958534611, 0.040673958534611, 
+		0.877978124396166, 0.040673958534611, 0.322337890142276, 
+		0.322337890142276, 0.032986329573173, 0.322337890142276,
+
+		0.269672331458316, 0.603005664791649, 0.063661001875018, 
+		0.063661001875018, 0.603005664791649, 0.269672331458316, 
+		0.063661001875018, 0.063661001875018, 0.603005664791649, 
+		0.269672331458316, 0.063661001875018, 0.063661001875018};
+	static IssmPDouble l46[]={
+		0.214602871259152, 0.214602871259152, 0.214602871259152, 
+		0.356191386222545, 0.040673958534611, 0.040673958534611, 
+		0.040673958534611, 0.877978124396166, 0.322337890142276, 
+		0.322337890142276, 0.322337890142276, 0.032986329573173,
+
+		0.603005664791649, 0.269672331458316, 0.603005664791649, 
+		0.269672331458316, 0.063661001875018, 0.063661001875018, 
+		0.603005664791649, 0.269672331458316, 0.063661001875018, 
+		0.063661001875018, 0.063661001875018, 0.063661001875018};
+	/*}}}*/
+
+	static IssmPDouble* wgtp[MAX_TETRA_SYM_ORD]={wgt1,wgt2,wgt3,wgt4,wgt5,wgt6};
+	static IssmPDouble* l1p [MAX_TETRA_SYM_ORD]={l11 ,l12 ,l13 ,l14 ,l15 ,l16 };
+	static IssmPDouble* l2p [MAX_TETRA_SYM_ORD]={l21 ,l22 ,l23 ,l24 ,l25 ,l26 };
+	static IssmPDouble* l3p [MAX_TETRA_SYM_ORD]={l31 ,l32 ,l33 ,l34 ,l35 ,l36 };
+	static IssmPDouble* l4p [MAX_TETRA_SYM_ORD]={l41 ,l42 ,l43 ,l44 ,l45 ,l46 };
+
+	static int np[MAX_TETRA_SYM_ORD]={sizeof(wgt1 )/sizeof(IssmPDouble),
+		sizeof(wgt2 )/sizeof(IssmPDouble),
+		sizeof(wgt3 )/sizeof(IssmPDouble),
+		sizeof(wgt4 )/sizeof(IssmPDouble),
+		sizeof(wgt5 )/sizeof(IssmPDouble),
+		sizeof(wgt6 )/sizeof(IssmPDouble)};
+
+	//	_printf0_("GaussLegendreTetra: iord=" << iord << "\n");
+
+	/*  check to see if Gauss points need to be calculated  */
+	if (iord <= MAX_TETRA_SYM_ORD) {
+
+		/*  copy the points from the static arrays (noting that the pointers
+			 could be returned directly, but then the calling function would
+			 have to know to not free them), and multiply the weights by the
+			 volume of the parametric tetrahedron  */
+
+		*pngaus=np[iord-1];
+
+		*pl1  =xNew<IssmDouble>(*pngaus);
+		*pl2  =xNew<IssmDouble>(*pngaus);
+		*pl3  =xNew<IssmDouble>(*pngaus);
+		*pl4  =xNew<IssmDouble>(*pngaus);
+		*pwgt =xNew<IssmDouble>(*pngaus);
+
+		for (i=0; i<*pngaus; i++) {
+			(*pl1 )[i]=l1p [iord-1][i];
+			(*pl2 )[i]=l2p [iord-1][i];
+			(*pl3 )[i]=l3p [iord-1][i];
+			(*pl4 )[i]=l4p [iord-1][i];
+			(*pwgt)[i]=wgtp[iord-1][i];
+		}
+	}
+	else {
+
+		/*  calculate the Gauss points from the collapsed hexahedron  */
+		nigaus =iord/2+1;
+		*pngaus=nigaus*nigaus*nigaus;
+
+		*pl1  =xNew<IssmDouble>(*pngaus);
+		*pl2  =xNew<IssmDouble>(*pngaus);
+		*pl3  =xNew<IssmDouble>(*pngaus);
+		*pl4  =xNew<IssmDouble>(*pngaus);
+		*pwgt =xNew<IssmDouble>(*pngaus);
+
+		/*  get the gauss points in each direction  */
+		GaussLegendreLinear(&xgaus, &xwgt, nigaus);
+
+		egaus=xgaus;
+		ewgt =xwgt;
+		zgaus=xgaus;
+		zwgt =xwgt;
+
+		/*  collapse the gauss points into the tetrahedron and transform into
+			 volume coordinates  */
+		ipt=0;
+		for (k=0; k<nigaus; k++) {
+			for (j=0; j<nigaus; j++) {
+				for (i=0; i<nigaus; i++) {
+					xi        =1./4.*(1.-egaus[j])*(1.-zgaus[k])*xgaus[i];
+					eta       =1./4./SQRT3
+					  *(5.+3.*egaus[j]-zgaus[k]-3.*egaus[j]*zgaus[k]);
+					zeta      =sqrt(2./3.)*(1.+zgaus[k]);
+					(*pwgt)[ipt]=xwgt[i]*ewgt[j]*zwgt[k]*(SQRT2/16.*(1.-egaus[j])*pow(1.-zgaus[k],2));
+
+					(*pl1 )[ipt]=(1.-xi-eta/SQRT3-zeta/sqrt(6.))/2.;
+					(*pl2 )[ipt]=(1.+xi-eta/SQRT3-zeta/sqrt(6.))/2.;
+					(*pl3 )[ipt]=(      eta         -zeta/sqrt(8.))/SQRT3;
+					(*pl4 )[ipt]=(                   zeta/sqrt(8.))*SQRT3;
+
+					ipt++;
+				}
+			}
+		}
+		xDelete<IssmPDouble>(xwgt );
+		xDelete<IssmPDouble>(xgaus);
+	}
+}/*}}}*/
+void GaussLobatto( IssmPDouble** pxgaus, IssmPDouble** pxwgt, int ngaus ) {/*{{{*/
+	/*Gauss-Lobatto quadrature points.
+
+	  The recurrence coefficients for Legendre polynomials on (-1,1)
+	  are defined (from the ORTHPOL subroutine RECUR with ipoly=1) as:
+
+	  alpha(i)=0.
+	  beta (i)=1./(4.-1./(i-1)^2))
+
+	  and then modified for the Gauss-Lobatto quadrature rule on (-1,1)
+	  (from the ORTHPOL subroutine LOB).
+
+	  For degree p, the required number of Gauss-Lobatto points is
+	  n>=(p+1)/2+1 (one more than Gauss-Legendre).*/
+
+	int i;
+	IssmPDouble *alpha,*beta;
+	IssmPDouble left=-1.,right= 1.;
+	IssmPDouble p0l=0.,p0r=0.,p1l=1.,p1r=1.,pm1l,pm1r,det;
+
+	/*p= 1, npoint= 1 (Gauss-Legendre)*/
+	static IssmPDouble wgt1[]={2.000000000000000};
+	static IssmPDouble xi1[]={0.000000000000000};
+
+	/*p= 1, npoint= 2*/
+	static IssmPDouble wgt2[]={1.000000000000000, 1.000000000000000};
+	static IssmPDouble xi2[]={-1.000000000000000, 1.000000000000000};
+
+	/*p= 3, npoint= 3*/
+	static IssmPDouble wgt3[]={0.333333333333333, 1.333333333333333, 0.333333333333333};
+	static IssmPDouble xi3[]={-1.000000000000000, 0.000000000000000, 1.000000000000000};
+
+	/*p= 5, npoint= 4*/
+	static IssmPDouble wgt4[]={0.166666666666667, 0.833333333333333, 0.833333333333333, 0.166666666666667};
+	static IssmPDouble xi4[]={-1.000000000000000,-0.447213595499958, 0.447213595499958, 1.000000000000000};
+
+	/*p= 7, npoint= 5*/
+	static IssmPDouble wgt5[]={0.100000000000000, 0.544444444444444, 0.711111111111111, 0.544444444444444, 0.100000000000000};
+	static IssmPDouble xi5[]={-1.000000000000000,-0.654653670707977, 0.000000000000000, 0.654653670707977, 1.000000000000000};
+
+	static IssmPDouble* wgtp[MAX_LINE_GLOB_PTS]={wgt1 ,wgt2 ,wgt3 ,wgt4 ,wgt5 };
+	static IssmPDouble* xip [MAX_LINE_GLOB_PTS]={xi1  ,xi2  ,xi3  ,xi4  ,xi5  };
+
+	*pxgaus =xNew<IssmPDouble>(ngaus);
+	*pxwgt  =xNew<IssmPDouble>(ngaus);
+
+	/*  check to see if Gauss points need to be calculated  */
+	if (ngaus <= MAX_LINE_GLOB_PTS) {
+
+		/*  copy the points from the static arrays (noting that the pointers
+			 could be returned directly, but then the calling function would
+			 have to know to not free them)  */
+		for (i=0; i<ngaus; i++) {
+			(*pxgaus)[i]=xip [ngaus-1][i];
+			(*pxwgt )[i]=wgtp[ngaus-1][i];
+		}
+	}
+	else {
+
+		/*  calculate the Gauss points using recurrence relations  */
+		alpha=xNew<IssmPDouble>(ngaus);
+		beta =xNew<IssmPDouble>(ngaus);
+
+		/*  calculate the Legendre recurrence coefficients  */
+		alpha[0]=0.;
+		beta [0]=2.;
+
+		for (i=1; i<ngaus; i++) {
+			alpha[i]=0.;
+			beta [i]=1./(4.-1./(i*i));
+		}
+
+		/*  calculate the Gauss-Lobatto quadrature formula  */
+		for (i=0; i<ngaus-1; i++) {
+			pm1l=p0l;
+			p0l=p1l;
+			pm1r=p0r;
+			p0r=p1r;
+			p1l=(left -alpha[i])*p0l-beta[i]*pm1l;
+			p1r=(right-alpha[i])*p0r-beta[i]*pm1r;
+		}
+
+		/*  Normalize system to prevent underflow:
+			 [ p1l p0l ]{ a } = {left *p1l}
+			 [ p1r p0r ]{ b }   {right*p1r}
+			 dividing by p1l in the first equation and p1r in the second.  */
+
+		//		det=p1l*p0r-p1r*p0l;
+		det=p0r/p1r-p0l/p1l;
+		//		alpha[ngaus-1]=(left*p1l*p0r-right*p1r*p0l)/det;
+		//		beta [ngaus-1]=(right-left)*p1l*p1r/det;
+		alpha[ngaus-1]=(left *(p0r/p1r)-right*(p0l/p1l))/det;
+		beta [ngaus-1]=(right          -left           )/det;
+
+		/*  calculate the Gauss points  */
+		GaussRecur(*pxgaus, *pxwgt, ngaus, alpha, beta );
+		xDelete<IssmPDouble>(beta );
+		xDelete<IssmPDouble>(alpha);
+	}
+
+}/*}}}*/
+void GaussRecur( IssmPDouble* zero, IssmPDouble* weight, int n, IssmPDouble* alpha, IssmPDouble* beta ) {/*{{{*/
+	/*Gauss quadrature points from recursion coefficients.
+	 *
+	 *The routine uses the algorithm from the ORTHPOL routine GAUSS, which
+	 *finds the eigenvalues of a tridiagonal matrix.*/
+
+	/*Intermediaries*/
+	int i,j,k,l,m,ii,mml,iter;
+	IssmPDouble p,g,r,s,c,f,b;
+	IssmPDouble* work;
+
+	if (n==1){
+		zero[0]  =alpha[0];
+		weight[0]=beta[0];
+		return;
+	}
+
+	work=xNew<IssmPDouble>(n);
+
+	zero[0]  =alpha[0];
+	weight[0]=1.;
+	work[n-1]=0.;
+	for (i=1; i<=n-1; i++){
+		zero[i]=alpha[i];
+		work[i-1]=sqrt(beta[i]);
+		weight[i]=0;
+	}
+
+	for (l=0; l<=n-1; l++){
+		iter=0;
+		do {
+
+			/*  Look for a small subdiagonal element.  */
+			for (m=l; m<=n-1; m++) {
+				if (m == n-1) break;
+				if (fabs(work[m])
+							<= DBL_EPSILON*(fabs(zero[m])+fabs(zero[m+1])))
+				 break;
+			}
+			p=zero[l];
+			if (m==l) break;
+			++iter;
+
+			/*  Form shift.  */
+			g=(zero[l+1]-p)/(2.*work[l]);
+			r=sqrt(g*g+1.);
+			//			g=zero[m]-p+work[l]/(g+FortranSign(r,g));
+			g=zero[m]-p+work[l]/(g+(g>=0 ? fabs(r) : -fabs(r)));
+			s=1.;
+			c=1.;
+			p=0.;
+			mml=m-l;
+
+			/*  For i=m-1 step -1 until l do ...  */
+			for (ii=1; ii<=mml; ii++) {
+				i=m-ii;
+				f=s*work[i];
+				b=c*work[i];
+				if (fabs(f) >= fabs(g)) {
+					c=g/f;
+					r=sqrt(c*c+1.);
+					work[i+1]=f*r;
+					s=1./r;
+					c*=s;
+				}
+				else {
+					s=f/g;
+					r=sqrt(s*s+1.);
+					work[i+1]=g*r;
+					c=1./r;
+					s*=c;
+				}
+				g=zero[i+1]-p;
+				r=(zero[i]-g)*s+2.*c*b;
+				p=s*r;
+				zero[i+1]=g+p;
+				g=c*r-b;
+
+				/*  Form first component of vector.  */
+				f=weight[i+1];
+				weight[i+1]=s*weight[i]+c*f;
+				weight[i  ]=c*weight[i]-s*f;
+			}
+			zero[l]-=p;
+			work[l]=g;
+			work[m]=0.;
+		} while (iter < MAX_GAUS_ITER);
+		if (iter >= MAX_GAUS_ITER) {
+			xDelete<IssmPDouble>(work);
+			_error_("Max iterations exceeded for l=" << MAX_GAUS_ITER);
+		}
+	}
+
+	/*  Order eigenvalues and eigenvectors.  */
+	for (i=0;i<n-1;i++) {
+		k=i;
+		p=zero[i];
+		for (j=i+1;j<n;j++){
+			if (zero[j] < p){
+				k=j;
+				p=zero[j];
+			}
+		}
+		if (k > i){
+			p=zero[i];
+			zero[i]=zero[k];
+			zero[k]=p;
+			p=weight[i];
+			weight[i]=weight[k];
+			weight[k]=p;
+		}
+	}
+	for (i=0;i<n;i++){
+		weight[i]=beta[0]*weight[i]*weight[i];
+	}
+
+	/*Cleanup*/
+	xDelete<IssmPDouble>(work);
+
+}/*}}}*/
+
+/*Element Gauss points TO BE REMOVED*/
+void gaussQuad( IssmPDouble** pxgaus, IssmPDouble** pxwgt, IssmPDouble** pegaus, IssmPDouble** pewgt, int nigaus, int njgaus ) {/*{{{*/
+	/*Gauss quadrature points for the quadrilaterial.*/
+
+	/*get the gauss points using the product of two line rules  */
+	GaussLegendreLinear(pxgaus, pxwgt, nigaus);
+	GaussLegendreLinear(pegaus, pewgt, njgaus);
+}/*}}}*/
+void gaussHexa( IssmPDouble** pxgaus, IssmPDouble** pxwgt, IssmPDouble** pegaus, IssmPDouble** pewgt, IssmPDouble** pzgaus, IssmPDouble ** pzwgt, int nigaus, int njgaus, int nkgaus ) {/*{{{*/
+	/*Gauss quadrature points for the hexahedron.*/
+
+	/*  get the gauss points using the product of three line rules  */
+	GaussLegendreLinear(pxgaus, pxwgt, nigaus);
+	GaussLegendreLinear(pegaus, pewgt, njgaus);
+	GaussLegendreLinear(pzgaus, pzwgt, nkgaus);
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/GaussPoints.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/GaussPoints.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/GaussPoints.h	(revision 21239)
@@ -0,0 +1,23 @@
+/*!\file:  GaussPoints.h
+ * \brief
+ */ 
+
+#include "../../shared/Numerics/types.h"
+#ifndef _GAUSSPOINTS_H
+#define _GAUSSPOINTS_H
+
+#define MAX_LINE_GAUS_PTS    7
+void GaussLegendreLinear(IssmPDouble** pxgaus, IssmPDouble** pxwgt, int ngaus);
+#define MAX_TRIA_SYM_ORD    20
+void GaussLegendreTria(int* pngaus, IssmDouble** pl1, IssmDouble** pl2, IssmDouble** pl3, IssmDouble** pwgt, int iord);
+#define MAX_TETRA_SYM_ORD    6
+void GaussLegendreTetra(int* pngaus, IssmDouble** pl1, IssmDouble** pl2, IssmDouble** pl3, IssmDouble** pl4, IssmDouble** pwgt, int iord);
+#define MAX_LINE_GLOB_PTS    5
+void GaussLobatto(IssmPDouble** pxgaus, IssmPDouble** pxwgt, int ngaus);
+#define MAX_GAUS_ITER   30
+void GaussRecur(IssmPDouble* zero, IssmPDouble* weight, int n, IssmPDouble* alpha, IssmPDouble* beta);
+
+void gaussQuad(IssmPDouble** pxgaus, IssmPDouble** pxwgt, IssmPDouble** pegaus, IssmPDouble** pewgt, int nigaus, int njgaus);
+void gaussHexa(IssmPDouble** pxgaus, IssmPDouble** pxwgt, IssmPDouble** pegaus, IssmPDouble** pewgt, IssmPDouble** pzgaus, IssmPDouble ** pzwgt, int nigaus, int njgaus, int nkgaus);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/NewtonSolveDnorm.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/NewtonSolveDnorm.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/NewtonSolveDnorm.cpp	(revision 21239)
@@ -0,0 +1,53 @@
+#include <math.h>
+#include "./types.h"
+#include "../Exceptions/exceptions.h"
+
+int NewtonSolveDnorm(IssmDouble* pdnorm,IssmDouble c1,IssmDouble c2,IssmDouble c3,IssmDouble n,IssmDouble dnorm){
+	/* solve the following equation using Newton-Raphson
+	 *
+	 *   c1*x^(s-1) + c2*x = c3
+	 *
+	 *   s = (1+n)/n
+	 *
+	 *   we solve y = 10^x:
+	 */
+
+	/*trivial solution*/
+	if(c3==0.){
+		*pdnorm = 0.;
+		return 0;
+	}
+
+	/*Intermediaries*/
+	int        counter = 0;
+	IssmDouble s = (1.+n)/n;
+	IssmDouble y2;
+	IssmDouble threshold = 1.e-12;
+
+	/*Initial guess*/
+	_assert_(dnorm>0.); 
+	IssmDouble y1 = log10(dnorm);
+
+	while(true){
+
+		/*Newton step*/
+		y2 = y1 - (c1*pow(pow(10.,y1),s-1.) + c2*pow(10.,y1) - c3)/((s-1)*c1*log(10.)*pow(pow(10.,y1),s-1.) + c2*log(10.)*pow(10.,y1));
+
+		if( fabs(y2-y1)/(fabs(y2))<threshold ){
+			break;
+		}
+		else{
+			y1=y2;
+			counter++;
+		}
+
+		if(counter>50) break;
+	}
+
+	/*Avoid extremely large values that indicate non convergence*/
+	if(y2>50.) y2 = 50;
+
+	/*Assign output pointer*/
+	*pdnorm = pow(10.,y2);
+	return 0;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/OptPars.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/OptPars.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/OptPars.h	(revision 21239)
@@ -0,0 +1,21 @@
+/*!\file:  OptPars.h
+ * \brief place holder for optimization parameters
+ */ 
+
+#ifndef _OPTPARS_H_
+#define _OPTPARS_H_
+
+#include "./types.h"
+
+struct OptPars{
+
+	IssmDouble  xmin;
+	IssmDouble  xmax;
+	IssmDouble *cm_jump;
+	int* maxiter;
+	int  nsteps;
+	int  nsize;
+
+};
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/README
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/README	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/README	(revision 21239)
@@ -0,0 +1,9 @@
+
+DO NOT MODIFY the following files:
+- Verbosity.cpp
+- src/m/shared/Verb*.m
+all these files are automatically synchronized with Verbosity.h
+
+TO ADD A VERBOSITY LEVEL:
+add the corresponding line to Verbosity.h
+and execute synchronizing script.
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/Synchronize.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/Synchronize.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/Synchronize.sh	(revision 21239)
@@ -0,0 +1,156 @@
+#!/bin/bash
+#Synchronize Verbosity
+#first remove existing files
+rm $ISSM_DIR/src/m/classes/Verb*.m
+
+echo "Synchronizing Verbosity levels..."
+
+#Get all lines of Verbosity.cpp
+cat Verbosity.h |  grep "bool Verbose" | awk '{print $2}' | sed -e "s/(/ /" | awk '{print $1}' | awk '{ printf "%s %s\n", NR, $0 }' >temp
+#Build header of Verbosity.cpp {{{
+cat <<END > Verbosity.cpp
+/*
+* \file Verbosity.cpp:
+* \brief: Manage verbosity levels
+*
+*   WARNING: DO NOT MODIFY THIS FILE
+*            this file has been automatically generated by Synchronize.sh
+*            Please read README for more information
+*/
+
+/*include*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./Verbosity.h"
+#include "../Exceptions/exceptions.h"
+/*}}}*/
+
+/*Verbosityt levels*/
+END
+#}}}
+
+#get number of lines in temp
+NUMBEROFLINES=$(wc -l temp | awk '{printf("%s",$1);}');
+
+# go through the lines of temp
+for (( i=1 ; i<=$NUMBEROFLINES ; i++ )); do
+
+	#Get name of the line i
+	FILENAME=$(cat temp | grep "^[ ]*$i " | awk '{printf("%s",$2);}');
+	LEVELNAME=$(echo $FILENAME | sed -e "s/Verbose//g");
+
+	let POWER=$i-1
+	let BINARY=2**$POWER
+
+	echo "$FILENAME -> 2^$POWER = $BINARY"
+
+	#Add case to verbose.m FIELDS{{{
+	if [ $i -eq 1 ]; then cat <<END >> FIELDS
+		%BEGINFIELDS
+END
+fi
+	cat <<END >> FIELDS
+		$(echo $LEVELNAME | awk {'print tolower($1)'})=false;
+END
+	if [ $i -eq $NUMBEROFLINES ]; then cat <<END >> FIELDS
+		%ENDFIELDS
+END
+fi
+#}}}
+	#Add case to verbose.m VERB2BIN{{{
+	if [ $i -eq 1 ]; then cat <<END >> VERB2BIN
+		%BEGINVERB2BIN
+		binary=0;
+END
+fi
+	cat <<END >> VERB2BIN
+		if (verbose.$(echo $LEVELNAME | awk {'print tolower($1)'})), binary=bitor(binary,$BINARY); end
+END
+	if [ $i -eq $NUMBEROFLINES ]; then cat <<END >> VERB2BIN
+		%ENDVERB2BIN
+END
+fi
+#}}}
+	#Add case to verbose.m BIN2VERB{{{
+	if [ $i -eq 1 ]; then cat <<END >> BIN2VERB
+		%BEGINBIN2VERB
+END
+fi
+	cat <<END >> BIN2VERB
+		if bitand(binary,$BINARY), verbose.$(echo $LEVELNAME | awk {'print tolower($1)'})=true; else verbose.$(echo $LEVELNAME | awk {'print tolower($1)'})=false; end
+END
+	if [ $i -eq $NUMBEROFLINES ]; then cat <<END >> BIN2VERB
+		%ENDBIN2VERB
+END
+fi
+#}}}
+	#Add case to verbose.m DISP{{{
+	if [ $i -eq 1 ]; then cat <<END >> DISP
+		%BEGINDISP
+		disp(sprintf('class ''%s''  = ',class(verbose)));
+END
+fi
+	cat <<END >> DISP
+		disp(sprintf('   %15s : %s','$(echo $LEVELNAME | awk {'print tolower($1)'})',mat2str(verbose.$(echo $LEVELNAME | awk {'print tolower($1)'}))));
+END
+	if [ $i -eq $NUMBEROFLINES ]; then cat <<END >> DISP
+		%ENDDISP
+END
+fi
+#}}}
+	#Add case to Verbosity.cpp {{{
+	cat <<END >> Verbosity.cpp
+bool $FILENAME(void){return (GetVerbosityLevel() & $BINARY);} /* 2^$POWER*/
+END
+	#}}}
+
+done
+
+#Add footer of Verbosity.cpp{{{
+cat <<END >> Verbosity.cpp
+
+/*Verbosity Setup*/
+static int verbositylevel=-1;
+void SetVerbosityLevel(int level){/*{{{*/
+
+	if(level<0) _error_("vebosity level should be a positive integer (user provided " << level << ")");
+
+	verbositylevel = level;
+
+}/*}}}*/
+int  GetVerbosityLevel(void){/*{{{*/
+	_assert_(verbositylevel>=0);
+	return verbositylevel;
+}/*}}}*/
+END
+#}}}
+#Complete verbose.m {{{
+VERBOSEPATH="$ISSM_DIR/src/m/classes/verbose.m"
+cat $VERBOSEPATH  | sed "/%BEGINFIELDS/,$ d"  > temp_begin
+cat $VERBOSEPATH  | sed "1,/%ENDFIELDS/d" > temp_end
+cat temp_begin FIELDS temp_end > $VERBOSEPATH
+rm temp_begin temp_end FIELDS
+
+cat $VERBOSEPATH  | sed "/%BEGINVERB2BIN/,$ d"  > temp_begin
+cat $VERBOSEPATH  | sed "1,/%ENDVERB2BIN/d" > temp_end
+cat temp_begin VERB2BIN temp_end > $VERBOSEPATH
+rm temp_begin temp_end VERB2BIN
+
+cat $VERBOSEPATH  | sed "/%BEGINBIN2VERB/,$ d"  > temp_begin
+cat $VERBOSEPATH  | sed "1,/%ENDBIN2VERB/d" > temp_end
+cat temp_begin BIN2VERB temp_end > $VERBOSEPATH
+rm temp_begin temp_end BIN2VERB
+
+cat $VERBOSEPATH  | sed "/%BEGINDISP/,$ d"  > temp_begin
+cat $VERBOSEPATH  | sed "1,/%ENDDISP/d" > temp_end
+cat temp_begin DISP temp_end > $VERBOSEPATH
+rm temp_begin temp_end DISP
+#}}}
+
+#clean up{{{
+rm temp
+#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/Verbosity.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/Verbosity.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/Verbosity.cpp	(revision 21239)
@@ -0,0 +1,44 @@
+/*
+* \file Verbosity.cpp:
+* \brief: Manage verbosity levels
+*
+*   WARNING: DO NOT MODIFY THIS FILE
+*            this file has been automatically generated by Synchronize.sh
+*            Please read README for more information
+*/
+
+/*include*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./Verbosity.h"
+#include "../Exceptions/exceptions.h"
+/*}}}*/
+
+/*Verbosityt levels*/
+bool VerboseMProcessor(void){return (GetVerbosityLevel() & 1);} /* 2^0*/
+bool VerboseModule(void){return (GetVerbosityLevel() & 2);} /* 2^1*/
+bool VerboseSolution(void){return (GetVerbosityLevel() & 4);} /* 2^2*/
+bool VerboseSolver(void){return (GetVerbosityLevel() & 8);} /* 2^3*/
+bool VerboseConvergence(void){return (GetVerbosityLevel() & 16);} /* 2^4*/
+bool VerboseControl(void){return (GetVerbosityLevel() & 32);} /* 2^5*/
+bool VerboseQmu(void){return (GetVerbosityLevel() & 64);} /* 2^6*/
+bool VerboseAutodiff(void){return (GetVerbosityLevel() & 128);} /* 2^7*/
+bool VerboseSmb(void){return (GetVerbosityLevel() & 256);} /* 2^8*/
+
+/*Verbosity Setup*/
+static int verbositylevel=-1;
+void SetVerbosityLevel(int level){/*{{{*/
+
+	if(level<0) _error_("vebosity level should be a positive integer (user provided " << level << ")");
+
+	verbositylevel = level;
+
+}/*}}}*/
+int  GetVerbosityLevel(void){/*{{{*/
+	_assert_(verbositylevel>=0);
+	return verbositylevel;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/Verbosity.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/Verbosity.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/Verbosity.h	(revision 21239)
@@ -0,0 +1,23 @@
+/*!\file:Verbosity.h
+ * \brief: Deal with verbosity levels
+ */ 
+
+#ifndef _VERBOSITY_H_
+#define _VERBOSITY_H_
+
+/*List of Verbosity levels (Add your own and Synchronize: must begin with "Verbose")*/
+bool VerboseMProcessor(void);
+bool VerboseModule(void);
+bool VerboseSolution(void);
+bool VerboseSolver(void);
+bool VerboseConvergence(void);
+bool VerboseControl(void);
+bool VerboseQmu(void);
+bool VerboseAutodiff(void);
+bool VerboseSmb(void);
+
+/*Setup Verbosity level*/
+void SetVerbosityLevel(int level);
+int  GetVerbosityLevel(void);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/XZvectorsToCoordinateSystem.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/XZvectorsToCoordinateSystem.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/XZvectorsToCoordinateSystem.cpp	(revision 21239)
@@ -0,0 +1,53 @@
+#include <math.h>
+
+#include "../MemOps/MemOps.h"
+#include "../Exceptions/exceptions.h"
+#include "../Numerics/types.h"
+#include "./isnan.h"
+
+void XZvectorsToCoordinateSystem(IssmDouble* T,IssmDouble* xzvectors){
+
+	IssmDouble	x[3],y[3],z[3];
+	IssmDouble	x_norm, y_norm, z_norm;
+
+	for(int i=0;i<6;i++){
+		if(xIsNan<IssmDouble>(xzvectors[i])){
+			/*At least one NaN found: default to Id*/
+			T[0*3+0] = 1.0;	T[0*3+1] = 0.0;	T[0*3+2] = 0.0;
+			T[1*3+0] = 0.0;	T[1*3+1] = 1.0;	T[1*3+2] = 0.0;
+			T[2*3+0] = 0.0;	T[2*3+1] = 0.0;	T[2*3+2] = 1.0;
+
+			return;
+		}
+	}
+
+	/* get input {x} (vector in local x-z plane): */
+	x[0] = xzvectors[0];
+	x[1] = xzvectors[1];
+	x[2] = xzvectors[2];
+
+	/* get input {z} (local tangent plane normal vector): */
+	z[0] = xzvectors[3];
+	z[1] = xzvectors[4];
+	z[2] = xzvectors[5];
+
+	/* compute {y} = {z} x {x}: */
+	y[0] =  x[2]*z[1] - x[1]*z[2];
+	y[1] = -x[2]*z[0] + x[0]*z[2];
+	y[2] =  x[1]*z[0] - x[0]*z[1];
+
+	/* normalise {x}, {y} and {z} to form unit vectors {i_hat}, {j_hat} and {k_hat};
+		store in {x}, {y}, and {z}: */
+	x_norm = sqrt( x[0]*x[0] + x[1]*x[1] + x[2]*x[2]);
+	y_norm = sqrt( y[0]*y[0] + y[1]*y[1] + y[2]*y[2]);
+	z_norm = sqrt( z[0]*z[0] + z[1]*z[1] + z[2]*z[2]);
+
+	x[0] = x[0]/x_norm;		x[1] = x[1]/x_norm;		x[2] = x[2]/x_norm;
+	y[0] = y[0]/y_norm;		y[1] = y[1]/y_norm;		y[2] = y[2]/y_norm;
+	z[0] = z[0]/z_norm;		z[1] = z[1]/z_norm;		z[2] = z[2]/z_norm;
+
+	/* Tlg columns are just {i_hat}, {j_hat} and {k_hat}, respectively: */
+	T[0*3+0] = x[0];	T[0*3+1] = y[0];	T[0*3+2] = z[0];
+	T[1*3+0] = x[1];	T[1*3+1] = y[1];	T[1*3+2] = z[1];
+	T[2*3+0] = x[2];	T[2*3+1] = y[2];	T[2*3+2] = z[2];
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/constants.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/constants.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/constants.h	(revision 21239)
@@ -0,0 +1,36 @@
+/*!\file: constants.h
+ * \brief prototypes for constants.h
+ */ 
+
+#ifndef _ISSM_CONSTANTS_H_
+#define _ISSM_CONSTANTS_H_
+
+#define UNDEF -9999
+#define ONETHIRD 0.333333333333333333333333333333333333333333333333333333333333
+#define SQRT2 1.414213562373095048801688724209698078569671875376948073176679738
+#define SQRT3 1.732050807568877293527446341505872366942805253810380628055806979
+#define PI 3.141592653589793238462643383279502884197169399375105820974944592308
+
+#define NDOF1 1
+#define NDOF2 2
+#define NDOF3 3
+#define NDOF4 4
+
+// /*Windows specific typefefs: */
+// #ifdef _INTEL_WIN_
+// 
+// #ifndef NAN
+// //For reference, for Intel compile on win64
+// //#define NAN 0.0/0.0 
+// #define NAN (INFINITY-INFINITY)
+// #endif
+// 
+// #ifndef INFINITY
+// //For reference, for Intel compile on win64
+// //#define INFINITY 1.0/0.0
+// #define INFINITY (DBL_MAX+DBL_MAX)
+// #endif
+// 
+// #endif /*_INTEL_WIN_*/
+
+#endif /*_ISSM_CONSTANTS_H_*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/cross.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/cross.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/cross.cpp	(revision 21239)
@@ -0,0 +1,21 @@
+/*!\file:  cross.cpp
+ * \brief cross product for 2 vectors
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./types.h"
+
+void cross(IssmDouble* result,IssmDouble* vector1,IssmDouble* vector2){
+
+	/*result,vector1 and vector2 are all assumed to be of size 3: */
+
+	result[0]=vector1[1]*vector2[2]-vector1[2]*vector2[1];
+	result[1]=vector1[2]*vector2[0]-vector1[0]*vector2[2];
+	result[2]=vector1[0]*vector2[1]-vector1[1]*vector2[0];
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/cubic.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/cubic.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/cubic.cpp	(revision 21239)
@@ -0,0 +1,92 @@
+#include <math.h>
+
+#include "./numerics.h"
+
+IssmDouble CBRT(IssmDouble Z){
+
+	IssmDouble ret;
+
+	if (Z> 0.0){
+		ret = fabs(pow(fabs(Z),1./3.));
+	}
+	else if(Z< 0.0){
+		ret = - fabs(pow(fabs(Z),1./3.));
+	}
+	else{
+		ret = 0.;
+	}
+	return ret;
+}
+
+int cubic(IssmDouble a,IssmDouble b,IssmDouble c,IssmDouble d, IssmDouble x[3], int* num){
+	/* Find the real roots of linear/quadratic and cubic equations:
+	 *
+	 *   a x^3 + bx^2 + cx + d = 0
+	 *
+	 *   returns the roots in x
+	 *   num is the number of roots */
+
+	/*Some useful constants*/
+	const IssmDouble pi    = 3.1415926535897932;
+	const IssmDouble third = 1./3.;
+
+	/*Intermediaries*/
+	IssmDouble U[3],W,P,Q,delta,phi;
+
+	/* determine the degree of the polynomial */
+	if (a != 0.0){
+		//cubic problem
+		W     = b/a *third;
+		P     = pow((c/a *third - pow(W,2)),3);
+		Q     = -.5 *(2.0*pow(W,3)-(c*W-d)/a );
+		delta = pow(Q,2)+P;
+		if ( delta < 0.0 ){
+			//three real solutions!
+			//Confine the argument of coeffCOS to the interval [-1;1]!
+			phi = acos(min(1.0,max(-1.0,Q/sqrt(-P))));
+			P   = 2.0*pow((-P),(5.e-1*third));
+			for(int i=0;i<3;i++)	U[i] = P*cos((phi+2*((IssmDouble)i)*pi)*third)-W;
+			x[0] = min(U[0], min(U[1], U[2]));
+			x[1] = max(min(U[0], U[1]),max( min(U[0], U[2]), min(U[1], U[2])));
+			x[2] = max(U[0], max(U[1], U[2]));
+			*num = 3;
+		}
+		else{
+			// only one real solution!
+			delta = sqrt(delta);
+			x[0] = CBRT(Q+delta)+CBRT(Q-delta)-W;
+			*num=1;
+		}
+	}
+	else if (b != 0.0){
+		// quadratic problem
+		P     = 0.5*c/b;
+		delta = pow(P,2)-d/b;
+		if (delta > 0.0){
+			// 2 real solutions
+			x[0] = -P - sqrt(delta);
+			x[1] = -P + sqrt(delta);
+			*num = 2;
+		}
+		else{
+			// no real solution
+			*num = 0;
+		}
+	}
+	else if (c != 0.0){
+		//linear equation
+		x[0] = d/c;
+		*num = 1;
+	}
+	else{
+		//no equation
+		*num = 0;
+	}
+
+	/* perform one step of a newton iteration in order to minimize round-off errors */
+	for(int i=0;i<*num;i++){
+		x[i] = x[i] - (d+x[i]*(c+x[i]*(b+x[i]*a)))/(c+x[i]*(2.0*b+x[i]*3.0*a));
+	}
+
+	return 0;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/extrema.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/extrema.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/extrema.cpp	(revision 21239)
@@ -0,0 +1,39 @@
+/*!\file:  extrema.cpp
+ * \brief min and max functions
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./types.h"
+
+IssmDouble min(IssmDouble a,IssmDouble b){
+	if (a<b)return a;
+	else return b;
+}
+int min(int a,int b){
+	if (a<b)return a;
+	else return b;
+}
+IssmDouble max(IssmDouble a,IssmDouble b){
+	if (a>b)return a;
+	else return b;
+}
+int max(int a,int b){
+	if (a>b)return a;
+	else return b;
+}
+
+#ifdef _HAVE_ADOLC_
+IssmPDouble  min(IssmPDouble a,IssmPDouble b){
+	if (a<b)return a;
+	else return b;
+}
+IssmPDouble  max(IssmPDouble a,IssmPDouble b){
+	if (a>b)return a;
+	else return b;
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/isnan.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/isnan.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/isnan.cpp	(revision 21239)
@@ -0,0 +1,21 @@
+/*This routine only used by Intel compler: */
+
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./isnan.h"
+
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)
+template <> int xIsNan<adouble> (const adouble& X){
+  return std::isnan(X.getValue());
+}
+#endif
+
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)
+template <> int xIsInf<adouble> (const adouble& X){
+  return std::isinf(X.getValue());
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/isnan.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/isnan.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/isnan.h	(revision 21239)
@@ -0,0 +1,35 @@
+/*!\file:  isnan.h
+ * \brief: only used for intel compiler.
+ */ 
+
+#ifndef _XISNAN_H_
+#define _XISNAN_H_
+
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*If include cmath instead of math, isnan on linux64 murdo does not work: */
+#include <cmath>
+
+template <class T> int xIsNan(const T& X) {
+#ifdef _INTEL_WIN_
+		return (X!=X)?1:0;
+#else
+		return std::isnan(X);
+#endif
+}
+
+template <class T> int xIsInf(const T& X) {
+	return std::isinf(X);
+}
+
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)
+#include "./types.h"
+template <> int xIsNan<adouble> (const adouble& X);
+template <> int xIsInf<adouble> (const adouble& X);
+#endif
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/legendre.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/legendre.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/legendre.cpp	(revision 21239)
@@ -0,0 +1,265 @@
+/*!\file:  legendre.cpp
+ \brief compute legendre polynomial at specific x. 
+ This is inspired from the p_polynomial_value package, written by John Burkardt (see below 
+ for full documentation). 
+ Here, we apply the function differently: we assume previous two evaluations are provided, 
+ and we compute the level n evaluation: 
+
+*/
+
+/* function v = p_polynomial_value ( m, n, x ) {{{
+
+	%*****************************************************************************80
+	%
+	%% P_POLYNOMIAL_VALUE evaluates the Legendre polynomials P(n,x).
+	%
+	%  Discussion:
+	%
+	%    P(n,1) = 1.
+	%    P(n,-1) = (-1)^N.
+	%    | P(n,x) | <= 1 in [-1,1].
+	%
+	%    The N zeroes of P(n,x) are the abscissas used for Gauss-Legendre
+	%    quadrature of the integral of a function F(X) with weight function 1
+	%    over the interval [-1,1].
+	%
+	%    The Legendre polynomials are orthogonal under the inner product defined
+	%    as integration from -1 to 1:
+	%
+	%      Integral ( -1 <= X <= 1 ) P(I,X) * P(J,X) dX 
+	%        = 0 if I =/= J
+	%        = 2 / ( 2*I+1 ) if I = J.
+	%
+	%    Except for P(0,X), the integral of P(I,X) from -1 to 1 is 0.
+	%
+	%    A function F(X) defined on [-1,1] may be approximated by the series
+	%      C0*P(0,x) + C1*P(1,x) + ... + CN*P(n,x)
+	%    where
+	%      C(I) = (2*I+1)/(2) * Integral ( -1 <= X <= 1 ) F(X) P(I,x) dx.
+	%
+	%    The formula is:
+	%
+	%      P(n,x) = (1/2^N) * sum ( 0 <= M <= N/2 ) C(N,M) C(2N-2M,N) X^(N-2*M)
+	%
+	%  Differential equation:
+	%
+	%    (1-X*X) * P(n,x)'' - 2 * X * P(n,x)' + N * (N+1) = 0
+	%
+	%  First terms:
+	%
+	%    P( 0,x) =      1
+	%    P( 1,x) =      1 X
+	%    P( 2,x) = (    3 X^2 -       1)/2
+	%    P( 3,x) = (    5 X^3 -     3 X)/2
+	%    P( 4,x) = (   35 X^4 -    30 X^2 +     3)/8
+	%    P( 5,x) = (   63 X^5 -    70 X^3 +    15 X)/8
+	%    P( 6,x) = (  231 X^6 -   315 X^4 +   105 X^2 -     5)/16
+	%    P( 7,x) = (  429 X^7 -   693 X^5 +   315 X^3 -    35 X)/16
+	%    P( 8,x) = ( 6435 X^8 - 12012 X^6 +  6930 X^4 -  1260 X^2 +   35)/128
+	%    P( 9,x) = (12155 X^9 - 25740 X^7 + 18018 X^5 -  4620 X^3 +  315 X)/128
+	%    P(10,x) = (46189 X^10-109395 X^8 + 90090 X^6 - 30030 X^4 + 3465 X^2-63)/256
+	%
+	%  Recursion:
+	%
+	%    P(0,x) = 1
+	%    P(1,x) = x
+	%    P(n,x) = ( (2*n-1)*x*P(n-1,x)-(n-1)*P(n-2,x) ) / n
+	%
+	%    P'(0,x) = 0
+	%    P'(1,x) = 1
+	%    P'(N,x) = ( (2*N-1)*(P(N-1,x)+X*P'(N-1,x)-(N-1)*P'(N-2,x) ) / N
+	%
+	%  Licensing:
+	%
+	%    This code is distributed under the GNU LGPL license. 
+	%
+	%  Modified:
+	%
+	%    10 March 2012
+	%
+	%  Author:
+	%
+	%    John Burkardt
+	%
+	%  Reference:
+	%
+	%    Milton Abramowitz, Irene Stegun,
+	%    Handbook of Mathematical Functions,
+	%    National Bureau of Standards, 1964,
+	%    ISBN: 0-486-61272-4,
+	%    LC: QA47.A34.
+	%
+	%    Daniel Zwillinger, editor,
+	%    CRC Standard Mathematical Tables and Formulae,
+	%    30th Edition,
+	%    CRC Press, 1996.
+	%
+	%  Parameters:
+	%
+	%    Input, integer M, the number of evaluation points.
+	%
+	%    Input, integer N, the highest order polynomial to evaluate.
+	%    Note that polynomials 0 through N will be evaluated.
+	%
+	%    Input, real X(M,1), the evaluation points.
+	%
+	%    Output, real V(M,1:N+1), the values of the Legendre polynomials 
+	%    of order 0 through N at the points X.
+	%
+	  if ( n < 0 )
+		v = [];
+		return
+	  end
+
+	  v = ones ( m, n + 1 );
+
+	  if ( n < 1 )
+		return
+	  end
+
+	  v(1:m,2) = x;
+
+	  for i = 2 : n
+	 
+		v(:,i+1) = ( ( 2 * i - 1 ) * x .* v(:,i)   ...
+					-  (     i - 1 ) *    v(:,i-1) ) ...
+					/  (     i     );
+	 
+	  end
+	  }}}  */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./types.h"
+#include "../Exceptions/exceptions.h"
+#include "../MemOps/MemOps.h"
+#include "./recast.h"
+
+IssmDouble *p_polynomial_value ( int m, int n, IssmDouble* x){
+
+	/******************************************************************************{{{/
+	Purpose:
+
+	P_POLYNOMIAL_VALUE evaluates the Legendre polynomials P(n,x).
+
+	Discussion:
+
+	P(n,1) = 1.
+	P(n,-1) = (-1)^N.
+	| P(n,x) | <= 1 in [-1,1].
+
+	The N zeroes of P(n,x) are the abscissas used for Gauss-Legendre
+	quadrature of the integral of a function F(X) with weight function 1
+	over the interval [-1,1].
+
+	The Legendre polynomials are orthogonal under the inner product defined
+	as integration from -1 to 1:
+
+	Integral ( -1 <= X <= 1 ) P(I,X) * P(J,X) dX
+	= 0 if I =/= J
+	= 2 / ( 2*I+1 ) if I = J.
+
+	Except for P(0,X), the integral of P(I,X) from -1 to 1 is 0.
+
+	A function F(X) defined on [-1,1] may be approximated by the series
+	C0*P(0,x) + C1*P(1,x) + ... + CN*P(n,x)
+	where
+	C(I) = (2*I+1)/(2) * Integral ( -1 <= X <= 1 ) F(X) P(I,x) dx.
+
+	The formula is:
+
+	P(n,x) = (1/2^N) * sum ( 0 <= M <= N/2 ) C(N,M) C(2N-2M,N) X^(N-2*M)
+
+	Differential equation:
+
+	(1-X*X) * P(n,x)'' - 2 * X * P(n,x)' + N * (N+1) = 0
+
+	First terms:
+
+	P( 0,x) =      1
+	P( 1,x) =      1 X
+	P( 2,x) = (    3 X^2 -       1)/2
+	P( 3,x) = (    5 X^3 -     3 X)/2
+	P( 4,x) = (   35 X^4 -    30 X^2 +     3)/8
+	P( 5,x) = (   63 X^5 -    70 X^3 +    15 X)/8
+	P( 6,x) = (  231 X^6 -   315 X^4 +   105 X^2 -     5)/16
+	P( 7,x) = (  429 X^7 -   693 X^5 +   315 X^3 -    35 X)/16
+	P( 8,x) = ( 6435 X^8 - 12012 X^6 +  6930 X^4 -  1260 X^2 +   35)/128
+	P( 9,x) = (12155 X^9 - 25740 X^7 + 18018 X^5 -  4620 X^3 +  315 X)/128
+	P(10,x) = (46189 X^10-109395 X^8 + 90090 X^6 - 30030 X^4 + 3465 X^2-63)/256
+
+	Recursion:
+
+	P(0,x) = 1
+	P(1,x) = x
+	P(n,x) = ( (2*n-1)*x*P(n-1,x)-(n-1)*P(n-2,x) ) / n
+
+	P'(0,x) = 0
+	P'(1,x) = 1
+	P'(N,x) = ( (2*N-1)*(P(N-1,x)+X*P'(N-1,x)-(N-1)*P'(N-2,x) ) / N
+
+	Licensing:
+
+	This code is distributed under the GNU LGPL license.
+
+	Modified:
+
+	08 August 2013
+
+	Author:
+
+		John Burkardt
+
+			Reference:
+
+			Milton Abramowitz, Irene Stegun,
+				   Handbook of Mathematical Functions,
+				   National Bureau of Standards, 1964,
+				   ISBN: 0-486-61272-4,
+				   LC: QA47.A34.
+
+					   Daniel Zwillinger, editor,
+				   CRC Standard Mathematical Tables and Formulae,
+				   30th Edition,
+				   CRC Press, 1996.
+
+					   Parameters:
+
+					   Input, int M, the number of evaluation points.
+
+					   Input, int N, the highest order polynomial to evaluate.
+					   Note that polynomials 0 through N will be evaluated.
+
+					   Input, double X[M], the evaluation points.
+
+					   Output, double P_POLYNOMIAL_VALUE[M*(N+1)], the values of the Legendre
+					   polynomials of order 0 through N.
+	}}}*/
+	
+	int i,j;
+
+	if(n<0) return NULL;
+
+	IssmDouble* v = xNew<IssmDouble>(m*(n+1));
+
+	for ( i = 0; i < m; i++ ) v[i*(n+1)+0] = 1.0;
+	if ( n < 1 ) return v;
+
+	for ( i = 0; i < m; i++ ) v[i*(n+1)+1] = x[i];
+
+	for ( i = 0; i < m; i++ ) {
+		for ( j = 2; j <= n; j++ ) {
+			
+			v[j+i*(n+1)] = ( ( IssmDouble ) ( 2 * j - 1 ) * x[i] * v[(j-1)+i*(n+1)]
+					- ( IssmDouble ) (     j - 1 ) *        v[(j-2)+i*(n+1)] )
+				/ ( IssmDouble ) (     j     );
+
+		}
+	}
+
+	return v;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/numerics.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/numerics.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/numerics.h	(revision 21239)
@@ -0,0 +1,41 @@
+/*!\file: numerics.h
+ * \brief prototypes for numerics.h
+ */ 
+
+#ifndef _NUMERICS_H_
+#define  _NUMERICS_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Verbosity.h"
+#include "./GaussPoints.h"
+#include "./isnan.h"
+#include "./recast.h"
+#include "./types.h"
+#include "./constants.h"
+#include "./OptPars.h"
+
+IssmDouble  min(IssmDouble a,IssmDouble b);
+IssmDouble  max(IssmDouble a,IssmDouble b);
+
+#ifdef _HAVE_ADOLC_
+IssmPDouble  min(IssmPDouble a,IssmPDouble b);
+IssmPDouble  max(IssmPDouble a,IssmPDouble b);
+#endif
+
+int         min(int a,int b);
+int         max(int a,int b);
+void        BrentSearch(IssmDouble** pJ,OptPars optpars,IssmDouble* X0,IssmDouble (*f)(IssmDouble*,void*),IssmDouble (*g)(IssmDouble**,IssmDouble*,void*),void* usr);
+void        cross(IssmDouble *result,IssmDouble*vector1,IssmDouble*vector2);
+void        XZvectorsToCoordinateSystem(IssmDouble *T,IssmDouble*xzvectors);
+int         cubic(IssmDouble a, IssmDouble b, IssmDouble c, IssmDouble d,IssmDouble X[3], int *num);
+IssmDouble  legendre(IssmDouble Pn1, IssmDouble Pn2, IssmDouble x, int n);
+IssmDouble*  p_polynomial_value ( int m, int n, IssmDouble* x);
+
+int         NewtonSolveDnorm(IssmDouble* pdnorm,IssmDouble c1,IssmDouble c2,IssmDouble c3,IssmDouble n,IssmDouble dnorm);
+
+#endif //ifndef _NUMERICS_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/recast.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/recast.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/recast.h	(revision 21239)
@@ -0,0 +1,53 @@
+/*
+ * recast.h
+ *
+ *  Created on: Jun 26, 2012
+ *      Author: utke
+ */
+
+#ifndef _RECAST_H_
+#define _RECAST_H_
+
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#if !defined(_HAVE_ADOLC_) || defined(_WRAPPERS_)
+
+template<class To, class From> To reCast(const From& from) {
+    return (To)from;
+}
+
+#else
+#include "./types.h"
+
+template<class To, class From> struct ForPartialSpecialization {
+    static  To reCast(const From& from ) { return (To) from;}
+};
+
+template<class To, class From> To reCast(const From& from) {
+    return ForPartialSpecialization<To,From>::reCast(from);
+}
+/**
+ * partial specialization
+ */
+template<class To> struct ForPartialSpecialization<To,adouble> {
+    static  To reCast(const adouble& from ) { return (To) (from.getValue());}
+};
+
+#endif
+
+/*Morlighem's change: we do not want dynamic_casts because of performance
+ * issue, so for now, we just use C-like cast*/
+template<class To,class From> To xDynamicCast(const From& from) {
+
+	/*C-like cast (fast but not safe)*/
+	return (To) from;
+
+	/*C++ dynamic_cast, poor performance but safer*/
+	//return dynamic_cast<To>(from);
+}
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/types.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/types.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Numerics/types.h	(revision 21239)
@@ -0,0 +1,36 @@
+/*!\file: types.h
+ * \brief prototypes for types.h
+ */ 
+
+#ifndef _TYPES_H_
+#define  _TYPES_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+
+/*here are our abstracted types: inspired on petsc */
+#if ISSM_USE_64BIT_INDICES == 1
+typedef long long IssmInt;
+#else
+typedef int IssmInt;
+#endif  
+
+#if defined(_HAVE_ADOLC_) &&  !defined(_WRAPPERS_)
+#include "adolc/adolc.h"
+// for active variables
+typedef adouble IssmDouble;
+// for passive variables
+typedef double IssmPDouble;
+#else 
+// see above
+typedef double IssmDouble; 
+// see above
+typedef IssmDouble IssmPDouble;
+#endif
+
+#endif //ifndef _TYPES_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Sorting/binary_search.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Sorting/binary_search.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Sorting/binary_search.cpp	(revision 21239)
@@ -0,0 +1,68 @@
+/*!\file:  binary_search.cpp
+ * \brief  binary search on an integer array, that is already sorted
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../Exceptions/exceptions.h"
+#include <stdio.h>
+
+int binary_search(int* poffset,int target,int* sorted_integers,int num_integers){ /*{{{*/
+
+	/*output: */
+	int offset;  //offset, if found
+	int found=0; //found=0 if target is not found, 1 otherwise.
+
+	/*intermediary: */
+	int *beg = NULL;
+	int *end = NULL;
+	int *mid = NULL;
+
+	_assert_(sorted_integers);
+
+	// point to beginning and end of the array
+	beg=sorted_integers;
+	end=sorted_integers+num_integers;
+	mid=beg+(int)(num_integers/2);
+
+	if (*beg==target){
+		found=1;
+		offset=0;
+	}
+	else if(*(end-1)==target){
+		found=1;
+		offset=num_integers-1;
+	}
+	else{
+		while((beg <= end) && (*mid != target)){
+			// is the target in lower or upper half?
+			if (target < *mid) {
+				end = mid - 1;  //new end
+				mid = beg + (end-beg)/2;  //new middle
+			}
+			else {
+				beg = mid + 1;  //new beginning
+				mid = beg + (end-beg)/2;  //new middle
+			}
+		}
+
+		//did we find the target?
+		if (*mid == target) {
+			found=1;
+			offset=mid-sorted_integers;
+		}
+		else {
+			found=0;
+		}
+	}
+
+	/*Assign output pointers:*/
+	*poffset=offset;
+
+	/*Return result: */
+	return found;
+} /*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Sorting/sorting.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Sorting/sorting.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Sorting/sorting.h	(revision 21239)
@@ -0,0 +1,61 @@
+/*!\file: sorting.h
+ * \brief prototypes for sorting.h
+ */ 
+
+#ifndef _SORTING_H_
+#define  _SORTING_H_
+
+int binary_search(int* poffset,int target,int* sorted_integers,int num_integers);
+template <typename doubletype> int binary_search(int* poffset,doubletype target,doubletype* list,int length){ /*{{{*/
+	/*
+	 *             l[0]  l[1]  l[2]        l[n]  l[n+1]   l[length-1]
+	 *     <-------+-----+-----+-----+ ... +-----+........+-------------->
+	 * offset: -1     0     1     2           n              length -1
+	 *  
+	 *  offset = -1        target < list[0]
+	 *  offset = n         list[n] <= target < list[n+1]
+	 *  offset = length-1  list[length-1] <= target
+	 */
+
+	/*output: */
+	int offset = 0;
+	int found  = 0;
+
+	/*intermediary: */
+	int n0 = 0;
+	int n1 = int(length/2);
+	int n2 = length-1;
+
+	if(target<list[n0]){
+		found  = 1;
+		offset = -1;
+	}
+	else if(target>=list[n2]){
+		found  = 1;
+		offset = length-1;
+	}
+	else{
+		for(;;){
+			/*did we find the target?*/
+			if(list[n1]<=target && list[n1+1]>target){
+				found  = 1;
+				offset = n1;
+				break;
+			}
+			else if(target < list[n1]){
+				n2 = n1;
+				n1 = n0 + int((n2-n0)/2);
+			}
+			else{
+				n0 = n1;
+				n1 = n0 + int((n2-n0)/2);
+			}
+		}
+	}
+
+	/*Assign output pointer and return*/
+	*poffset=offset;
+	return found;
+} /*}}}*/
+
+#endif //ifndef _SORTING_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/String/ApiPrintf.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/String/ApiPrintf.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/String/ApiPrintf.cpp	(revision 21239)
@@ -0,0 +1,15 @@
+/*!\file:  ApiPrintf: this file only gets compiled and linked for issm.exe. API specific 
+ * versions of this file (for Python and Matlab) will be used for the wrappers (modules). 
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+
+void ApiPrintf(const char* string){
+	printf("%s",string);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/String/DescriptorIndex.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/String/DescriptorIndex.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/String/DescriptorIndex.cpp	(revision 21239)
@@ -0,0 +1,72 @@
+/*!\file:  DescriptorIndex: return type of qmu variable: indexed, scaled, nodal or regular
+ * + figure out the descriptor root. 
+ * Ex: scaled_Thickness_1 should return SCALEDENUM, fill root with Thickness, and initialize index 
+ * to 1.
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include "../Enum/Enum.h"
+#include "../io/io.h"
+#include "../Exceptions/exceptions.h"
+
+int  DescriptorIndex(char* root, int* pindex,char* descriptor){ //We assume root has already been allocated, and we just have to copy into it.
+
+	char * pch=NULL;
+
+	/*retrieve first token, separated by underscore: */
+	pch = strtok (descriptor,"_");
+	if(!pch)_error_("descriptor " << descriptor << " is not correctly formatted!");
+
+	if (strncmp(pch,"scaled",6)==0){
+		/*we have a scaled variable. recover the root: */
+		pch = strtok (NULL, "_");
+		if(!pch)_error_("scaled descriptor " << descriptor << " is not correctly formatted!");
+		memcpy(root,pch,(strlen(pch)+1)*sizeof(char));
+
+		/*now recover  the index if it exists: */
+		pch = strtok (NULL, "_");
+		if(!pch){
+			*pindex=-1;
+		}
+		else{
+			sscanf(pch,"%i",pindex);
+		}
+		return ScaledEnum;
+	}
+	else if (strncmp(pch,"indexed",7)==0){
+		/*we have an indexed variable. recover the root: */
+		pch = strtok (NULL, "_");
+		if(!pch)_error_("indexed descriptor " << descriptor << " is not correctly formatted!");
+		memcpy(root,pch,(strlen(pch)+1)*sizeof(char));
+		/*now recover  the index: */
+		pch = strtok (NULL, "_");
+		if(!pch)_error_("indexed descriptor " << descriptor << " is not correctly formatted!");
+		sscanf(pch,"%i",pindex);
+		return IndexedEnum;
+	}
+	else if (strncmp(pch,"nodal",5)==0){
+		/*we have an indexed variable. recover the root: */
+		pch = strtok (NULL, "_");
+		if(!pch)_error_("nodal descriptor " << descriptor << " is not correctly formatted!");
+		memcpy(root,pch,(strlen(pch)+1)*sizeof(char));
+		/*now recover  the index: */
+		pch = strtok (NULL, "_");
+		if(!pch)_error_("nodal descriptor " << descriptor << " is not correctly formatted!");
+		sscanf(pch,"%i",pindex);
+		return NodalEnum;
+	}
+	else{
+		/*We don't have _ in the name, this is a regular variable: */
+		memcpy(root,pch,(strlen(pch)+1)*sizeof(char));
+		*pindex=-1;
+		return RegularEnum;
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/String/sharedstring.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/String/sharedstring.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/String/sharedstring.h	(revision 21239)
@@ -0,0 +1,11 @@
+/*!\file: sharedstring.h
+ * \brief prototypes for sharedstring.h
+ */ 
+
+#ifndef _SHAREDSTRING_H_
+#define  _SHAREDSTRING_H_
+
+int  DescriptorIndex(char* root, int* pindex,char* descriptor);
+void ApiPrintf(const char* string);
+
+#endif //ifndef _SHAREDSTRING_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Threads/LaunchThread.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Threads/LaunchThread.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Threads/LaunchThread.cpp	(revision 21239)
@@ -0,0 +1,70 @@
+/*!\file:  LaunchThread.cpp
+ * \brief  launch thread in a generic way, covering single and multi-threaded cases
+ * This routine attempts to simplify management of multi-threading. When multi-threadeing 
+ * is not requested (serial run), LaunchThread will just call the function (provided in argument 
+ * list), nothing fancy there.  If multi-threading is requested, LaunchThread will launch the 
+ * function on multiple threads (num_threads of them), and provide these functions with the 
+ * local data they need (folded in the "gate" structure) + the thread id + the number of threads 
+ * All this info is collected in the pthread_handle structure. 
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _MULTITHREADING_
+#include <pthread.h>
+#endif
+
+#include "./issm_threads.h"
+#include "../MemOps/MemOps.h"
+#include "../Exceptions/exceptions.h"
+
+void LaunchThread(void* function(void*), void* gate,int num_threads){
+
+	#ifdef _MULTITHREADING_
+	int i;
+	int            *status  = NULL;
+	pthread_t      *threads = NULL;
+	pthread_handle *handles = NULL;
+
+	/*check number of threads*/
+	if(num_threads<1)    _error_("number of threads must be at least 1");
+	if(num_threads>2000) _error_("number of threads seems to be too high ("<<num_threads<<">2000)");
+
+	/*dynamically allocate: */
+	threads=xNew<pthread_t>(num_threads);
+	handles=xNew<pthread_handle>(num_threads);
+
+	for(i=0;i<num_threads;i++){
+		handles[i].gate=gate;
+		handles[i].id=i;
+		handles[i].num=num_threads;
+	}
+	for(i=0;i<num_threads;i++){
+
+		if(pthread_create(threads+i,NULL,function,(void*)(handles+i))){
+			_error_("pthread_create error");
+		}
+	}
+	for(i=0;i<num_threads;i++){
+		if(pthread_join(threads[i],(void**)&status)){
+			_error_("pthread_join error");
+		}
+	}
+
+	/*Free ressources:*/
+	xDelete<pthread_t>(threads);
+	xDelete<pthread_handle>(handles);
+
+	#else
+	pthread_handle handle;
+	handle.gate=gate;
+	handle.id=0;
+	handle.num=1;
+
+	function((void*)&handle);
+	#endif
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Threads/PartitionRange.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Threads/PartitionRange.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Threads/PartitionRange.cpp	(revision 21239)
@@ -0,0 +1,33 @@
+/*!\file:  PartitionRange.cpp
+ * \brief: return i0,i1, range of local thread.
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <math.h>
+
+void PartitionRange(int* pi0,int* pi1, int num_el,int num_threads,int my_thread){
+
+	/*output: */
+	int i0=-1;
+	int i1=-1;
+
+	int step;
+	int i;
+
+	/*distribute elements across threads :*/
+	step=(int)floor((double)num_el/(double)num_threads);
+	for(i=0;i<(my_thread+1);i++){
+		i0=i*step;
+		if(i==(num_threads-1))i1=num_el;
+		else i1=i0+step;
+	}
+
+	/*Assign output pointers:*/
+	*pi0=i0;
+	*pi1=i1;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Threads/issm_threads.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Threads/issm_threads.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/Threads/issm_threads.h	(revision 21239)
@@ -0,0 +1,21 @@
+/*!\file: issm_threads.h
+ * \brief prototypes for issm_threads.h
+ */ 
+
+#ifndef _ISSM_THREADS_H_
+#define  _ISSM_THREADS_H_
+
+/*structure that holds the local data for each thread (in the gate), 
+ * + the thread specific information (my id + number of threads) : */
+typedef struct{
+	void* gate;
+	int   id;
+	int   num;
+} pthread_handle;
+
+/*routine that launches "function" in a multi-threaded way if requested, 
+ * or just serially if not requested: */
+void LaunchThread(void* function(void*), void* gate,int num_threads);
+void PartitionRange(int* pi0,int* pi1, int num_el,int num_threads,int my_thread);
+
+#endif //ifndef _ISSM_THREADS_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/TriMesh/AssociateSegmentToElement.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/TriMesh/AssociateSegmentToElement.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/TriMesh/AssociateSegmentToElement.cpp	(revision 21239)
@@ -0,0 +1,24 @@
+/*!\file:  AssociateSegmentToElement.cpp
+ * \brief for each segment, look for the corresponding element.
+ */ 
+
+#include "./trimesh.h"
+
+int AssociateSegmentToElement(int** psegments,int nseg,int* index,int nel){
+
+	/*node indices: */
+	int A,B;
+
+	/*Recover segments: */
+	int* segments=*psegments;
+
+	for(int i=0;i<nseg;i++){
+		A=segments[3*i+0];
+		B=segments[3*i+1];
+		segments[3*i+2]=FindElement(A,B,index,nel)+1; //matlab indexing.
+	}
+
+	/*Assign output pointers: */
+	*psegments=segments;
+	return 1;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/TriMesh/GridInsideHole.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/TriMesh/GridInsideHole.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/TriMesh/GridInsideHole.cpp	(revision 21239)
@@ -0,0 +1,51 @@
+/*
+ * GridInsideHole.c:
+ * from a convex set of points, figure out a point that for sure lies inside the profile.
+ */
+
+#include <math.h>
+
+#include "./trimesh.h"
+#include "../Exp/exp.h"
+
+#undef M_PI
+#define M_PI 3.141592653589793238462643
+
+int GridInsideHole(double* px0,double* py0,int n,double* x,double* y){
+
+	double flag=0.0;
+	double xA,xB,xC,xD,xE;
+	double yA,yB,yC,yD,yE;
+
+	/*Take first and last vertices: */
+	xA=x[0];
+	yA=y[0];
+	xB=x[n-1];
+	yB=y[n-1];
+
+	/*Figure out middle of segment [A B]: */
+	xC=(xA+xB)/2;
+	yC=(yA+yB)/2;
+
+	/*D and E are on each side of segment [A B], on the median line between segment [A  B], 
+	 *at an angle of 10 degree (less than the minimum 30 enforced by the quality of the mesh: */
+	xD=xC+tan(10./180.*M_PI)*(yC-yA);
+	yD=yC+tan(10./180.*M_PI)*(xA-xC);
+	xE=xC-tan(10./180.*M_PI)*(yC-yA);
+	yE=yC-tan(10./180.*M_PI)*(xA-xC);
+
+	/*Either E or D is inside profile (x,y): */
+	IsInPolySerial(&flag,&xD,&yD,1,x,y,n,2);
+	/*FIXME: used to be 'flag' and not '!flag', check*/
+	if(!flag){
+		/*D is inside the poly: */
+		*px0=xD;
+		*py0=yD;
+	}
+	else{
+		/*E is inside the poly: */
+		*px0=xE;
+		*py0=yE;
+	}
+	return 1;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/TriMesh/OrderSegments.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/TriMesh/OrderSegments.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/TriMesh/OrderSegments.cpp	(revision 21239)
@@ -0,0 +1,46 @@
+/*
+ * OrderSegments.c: 
+ * reorder segments so that their normals point outside the domain outline.
+ */
+#include "./trimesh.h"
+
+int OrderSegments(int** psegments,int nseg,int* index,int nel){
+
+	/*vertex indices: */
+	int A,B;
+
+	/*element index*/
+	int el;
+
+	/*Recover segments: */
+	int* segments=*psegments;
+
+	for(int i=0;i<nseg;i++){
+		A=segments[3*i+0];
+		B=segments[3*i+1];
+		el=segments[3*i+2]-1; //after AssociateSegmentToElement, el was a matlab index, we need the c index now.
+
+		if (index[3*el+0]==A){
+			if (index[3*el+2]==B){
+				segments[3*i+0]=B;
+				segments[3*i+1]=A;
+			}
+		}
+		else if (index[3*el+1]==A){
+			if (index[3*el+0]==B){
+				segments[3*i+0]=B;
+				segments[3*i+1]=A;
+			}
+		}
+		else{
+			if (index[3*el+1]==B){
+				segments[3*i+0]=B;
+				segments[3*i+1]=A;
+			}
+		}
+	}
+
+	/*Assign output pointers: */
+	*psegments=segments;
+	return 1;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/TriMesh/SplitMeshForRifts.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/TriMesh/SplitMeshForRifts.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/TriMesh/SplitMeshForRifts.cpp	(revision 21239)
@@ -0,0 +1,96 @@
+/*
+ * SplitMeshForRifts.c:
+ */
+#include "./trimesh.h"
+#include "../MemOps/MemOps.h"
+
+int SplitMeshForRifts(int* pnel,int** pindex,int* pnods,double** px,double** py,int* pnsegs,int** psegments,int** psegmentmarkerlist){
+
+	/*Some notes on dimensions: 
+	index  of size nelx3
+	x and y of size nodsx1
+	segments of size nsegsx3*/
+
+	int i,j,k,l;
+	int node;
+	int el;
+	int  nriftsegs;
+	int* riftsegments=NULL; 
+	int* flags=NULL;
+	int  NumGridElementListOnOneSideOfRift;
+	int* GridElementListOnOneSideOfRift=NULL;
+
+	/*Recover input: */
+	int     nel               = *pnel;
+	int    *index             = *pindex;
+	int     nods              = *pnods;
+	double *x                 = *px;
+	double *y                 = *py;
+	int     nsegs             = *pnsegs;
+	int    *segments          = *psegments;
+	int    *segmentmarkerlist = *psegmentmarkerlist;
+
+	/*Establish list of segments that belong to a rift: */
+	/*riftsegments of size nriftsegsx4 (4 for first element on segment,second element,first node and second snode)*/
+	RiftSegmentsFromSegments(&nriftsegs,&riftsegments,nel,index,nsegs,segments);
+
+	/*Go through all nodes of the rift segments, and start splitting the mesh: */
+	flags=xNewZeroInit<int>(nods); //to make sure we don't split the same nodes twice!
+	for (i=0;i<nriftsegs;i++){
+		for (j=0;j<2;j++){
+
+			node=riftsegments[4*i+j+2];
+			if(flags[node-1]){
+				/*This node was already split, skip:*/
+				continue;
+			}
+			else{
+				flags[node-1]=1;
+			}
+
+			if(IsGridOnRift(riftsegments,nriftsegs,node)){
+
+				DetermineGridElementListOnOneSideOfRift(&NumGridElementListOnOneSideOfRift,&GridElementListOnOneSideOfRift,i,nriftsegs,riftsegments,node,index,nel);
+
+				/*Summary: we have for node, a list of elements
+				 * (GridElementListOnOneSideOfRift, of size
+				 * NumGridElementListOnOneSideOfRift) that all contain node 
+				 *and that are on the same side of the rift. For all these
+				 elements, we clone node into another node, and we swap all
+				 instances of node in the triangulation *for those elements, to the
+				 new node.*/
+
+				//create new node
+				x=xReNew<double>(x,nods,nods+1);
+				y=xReNew<double>(y,nods,nods+1);
+				x[nods]=x[node-1]; //matlab indexing
+				y[nods]=y[node-1]; //matlab indexing
+
+				//augment number of nodes 
+				nods++;
+
+				//change elements owning this node
+				for (k=0;k<NumGridElementListOnOneSideOfRift;k++){
+					el=GridElementListOnOneSideOfRift[k];
+					for (l=0;l<3;l++){
+						if (index[3*el+l]==node) index[3*el+l]=nods; //again, matlab indexing.
+					}
+				}
+			}// if(IsGridOnRift(riftsegments,nriftsegs,node))
+		} //for(j=0;j<2;j++)
+	} //for (i=0;i<nriftsegs;i++)
+
+	/*update segments: they got modified completely by adding new nodes.*/
+	UpdateSegments(&segments,&segmentmarkerlist, &nsegs,index,x,y,riftsegments,nriftsegs,nods,nel);
+
+	/*Assign output pointers: */
+	*pnel=nel;
+	*pindex=index;
+	*pnods=nods;
+	*px=x;
+	*py=y;
+	*pnsegs=nsegs;
+	*psegments=segments;
+	*psegmentmarkerlist=segmentmarkerlist;
+	return 1;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/TriMesh/TriMeshUtils.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/TriMesh/TriMeshUtils.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/TriMesh/TriMeshUtils.cpp	(revision 21239)
@@ -0,0 +1,912 @@
+/*
+ * TriMeshUtils: mesh manipulation routines: 
+ */
+
+#include <stdio.h>
+
+#include "./trimesh.h"
+#include "../Exceptions/exceptions.h"
+#include "../MemOps/MemOps.h"
+
+#define RIFTPENALTYPAIRSWIDTH 8
+int IsGridOnRift(int* riftsegments, int nriftsegs, int node){/*{{{*/
+
+	/*Does this node belong to 4 elements, or just 2? If it belongs to 4 elements, it is inside a rift, 
+	 *if it belongs to 2 elements, it is on the tip of a rift, or it has already been split across the rift (see below).*/
+
+	int i;
+	int j;
+	int count;
+
+	count=0;
+	for (i=0;i<nriftsegs;i++){
+		for (j=0;j<2;j++){
+			if ((*(riftsegments+4*i+2+j))==node) count++;
+		}
+	}
+	if (count==2){
+		return 1;
+	}
+	else{
+		return 0;
+	}
+}/*}}}*/
+int GridElementsList(int** pGridElements, int* pNumGridElements,int node,int* index,int nel){/*{{{*/
+
+	/*From a node, recover all the elements that are connected to it: */
+	int i,j;
+	int noerr=1;
+
+	int max_number_elements=12;
+	int current_size;
+	int NumGridElements;
+	int* GridElements=NULL;
+	int* GridElementsRealloc=NULL;
+
+	/*From a mesh with 30 degrees minimum angle, we get 12 possible elements that own 
+	 * the node. We start by allocating GridElements with that size, and realloc 
+	 * more if needed.*/
+
+	current_size=max_number_elements;
+	NumGridElements=0;
+	GridElements=xNew<int>(max_number_elements);
+
+	for (i=0;i<nel;i++){
+		for (j=0;j<3;j++){
+			if (index[3*i+j]==node){
+				if (NumGridElements<=(current_size-1)){
+					GridElements[NumGridElements]=i;
+					NumGridElements++;
+					break;
+				}
+				else{
+					/*Reallocate another max_number_elements slots in the GridElements: */
+					GridElementsRealloc=xReNew<int>(GridElements,current_size,(current_size+max_number_elements));
+					if (!GridElementsRealloc){
+						noerr=0;
+						goto cleanup_and_return;
+					}
+					current_size+=max_number_elements;
+					GridElements=GridElementsRealloc;
+					GridElements[NumGridElements]=i;
+					NumGridElements++;
+					break;
+				}
+			}
+		}
+	}
+	cleanup_and_return:
+	if(!noerr){
+		xDelete<int>(GridElements);
+	}
+	/*Allocate return pointers: */
+	*pGridElements=GridElements;
+	*pNumGridElements=NumGridElements;
+	return noerr;
+}/*}}}*/
+int IsNeighbor(int el1,int el2,int* index){/*{{{*/
+	/*From a triangulation held in index, figure out if elements 1 and 2 have two nodes in common: */
+	int i,j;
+	int count=0;
+	for (i=0;i<3;i++){
+		for (j=0;j<3;j++){
+			if (index[3*el1+i]==index[3*el2+j])count++;
+		}
+	}
+	if (count==2){
+		return 1;
+	}
+	else{
+		return 0;
+	}
+}/*}}}*/
+int IsOnRift(int el,int nriftsegs,int* riftsegments){/*{{{*/
+	/*From a list of elements segments, figure out if el belongs to it: */
+	int i;
+	for (i=0;i<nriftsegs;i++){
+		if ((*(riftsegments+4*i+0)==el) || (*(riftsegments+4*i+1)==el)){
+			return 1;
+		}
+	}
+	return 0;
+}/*}}}*/
+void RiftSegmentsFromSegments(int* pnriftsegs, int** priftsegments, int nel,int* index,int nsegs,int* segments){/*{{{*/
+
+	int i,counter;
+	int el,el2;
+
+	int  nriftsegs;
+	int* riftsegments=NULL;
+	int* riftsegments_uncompressed=NULL; 
+	int  element_nodes[3];
+
+	/*Allocate segmentflags: */
+	riftsegments_uncompressed=xNewZeroInit<int>(nsegs*5);
+
+	/*Find the segments that belong to a rift: they are the ones that see two elements. The other ones belong to a boundary 
+	 *or a hole: */
+	nriftsegs=0;
+	for (i=0;i<nsegs;i++){
+		el=(int)*(segments+3*i+2)-1; //element found in AssociateSegmentToElements
+		/*Temporarily set nodes belonging to the segments to -1 in the triangulation index, and 
+		 *then  proceed to find another element that owns the segment. If we don't find it, we know 
+		 *we are dealing with a boundary or hole, otherwise, we are dealing with a rift: */
+		element_nodes[0]=*(index+3*el+0);
+		element_nodes[1]=*(index+3*el+1);
+		element_nodes[2]=*(index+3*el+2);
+
+		index[3*el+0]=-1;
+		index[3*el+1]=-1;
+		index[3*el+2]=-1;
+
+		el2=FindElement(*(segments+3*i+0),*(segments+3*i+1),index,nel); 
+
+		/*Restore index: */
+		index[3*el+0]=element_nodes[0];
+		index[3*el+1]=element_nodes[1];
+		index[3*el+2]=element_nodes[2];
+
+		if (el2!=-1){
+			/*el and el2 are on a segment rift, facing one another, plug them into riftsegments_uncompressed: */
+		    riftsegments_uncompressed[5*i+0]=1;
+		    riftsegments_uncompressed[5*i+1]=el;
+		    riftsegments_uncompressed[5*i+2]=el2;
+		    riftsegments_uncompressed[5*i+3]=segments[3*i+0];
+			 riftsegments_uncompressed[5*i+4]=segments[3*i+1];
+			 nriftsegs++;
+		}
+	}
+
+	/*Compress riftsegments_uncompressed:*/
+	riftsegments=xNew<int>(nriftsegs*4);
+	counter=0;
+	for (i=0;i<nsegs;i++){
+		if (riftsegments_uncompressed[5*i+0]){
+			riftsegments[counter*4+0]=riftsegments_uncompressed[5*i+1];
+			riftsegments[counter*4+1]=riftsegments_uncompressed[5*i+2];
+			riftsegments[counter*4+2]=riftsegments_uncompressed[5*i+3];
+			riftsegments[counter*4+3]=riftsegments_uncompressed[5*i+4];
+			counter++;
+		}
+	}
+	xDelete<int>(riftsegments_uncompressed);
+
+	/*Assign output pointers: */
+	*priftsegments=riftsegments;
+	*pnriftsegs=nriftsegs;
+}/*}}}*/
+int DetermineGridElementListOnOneSideOfRift(int* pNumGridElementListOnOneSideOfRift, int** pGridElementListOnOneSideOfRift, int segmentnumber, int nriftsegs, int* riftsegments, int node,int* index,int nel){/*{{{*/
+
+	int noerr=1;
+	int k,l,counter;
+	int newel;
+
+	int* GridElements=NULL;
+	int  NumGridElements;
+
+	/*Output: */
+	int NumGridElementListOnOneSideOfRift;
+	int* GridElementListOnOneSideOfRift=NULL;
+
+	/*Build a list of all the elements connected to this node: */
+	GridElementsList(&GridElements,&NumGridElements,node,index,nel);
+
+	/*Figure out the list of elements  that are on the same side of the rift. To do so, we start from one 
+	 * side of the rift and keep rotating in the same direction:*/
+	GridElementListOnOneSideOfRift=xNew<int>(NumGridElements);
+	//bootstrap the GridElementListOnOneSideOfRift by filling elements from riftsegments: */
+	GridElementListOnOneSideOfRift[0]=*(riftsegments+4*segmentnumber+0); /*this one does not belong to the same side, but is just there 
+															   for a rotation direction, we 'll take it out when we are 
+															   done rotating*/
+	GridElementListOnOneSideOfRift[1]=*(riftsegments+4*segmentnumber+1);
+	counter=1;
+	for (;;){
+		/*Find neighbour of element GridElementListOnOneSideOfRift[counter], not 
+		 * equal to GridElementListOnOneSideOfRift[counter-1]*/
+		for (k=0;k<NumGridElements;k++){
+			if(IsNeighbor(GridElements[k],GridElementListOnOneSideOfRift[counter],index)){
+				/*Verify this element is not already in our list of element on the same side of the rift: */
+				newel=1;
+				for (l=0;l<=counter;l++){
+					if (GridElements[k]==GridElementListOnOneSideOfRift[l]){
+						newel=0;
+						break;
+					}
+				}
+				if (newel){
+					counter++;
+					GridElementListOnOneSideOfRift[counter]=GridElements[k];
+					if (IsOnRift(GridElements[k],nriftsegs,riftsegments)){
+						break;
+					}
+					k=-1;
+				}
+			}
+		}
+		/*Reduce counter by 1 and get rift of first element in GridElementListOnOneSideOfRift:*/
+		NumGridElementListOnOneSideOfRift=counter;
+		for (l=0;l<NumGridElementListOnOneSideOfRift;l++){
+			GridElementListOnOneSideOfRift[l]=GridElementListOnOneSideOfRift[l+1];
+		}
+		break;
+	}// for (;;)
+
+	/*Free ressources: */
+	xDelete<int>(GridElements);
+	/*Assign output pointers: */
+	*pNumGridElementListOnOneSideOfRift=NumGridElementListOnOneSideOfRift;
+	*pGridElementListOnOneSideOfRift=GridElementListOnOneSideOfRift;
+	return noerr;
+}/*}}}*/
+int UpdateSegments(int** psegments,int** psegmentmarkerlist, int* pnsegs,int* index, double* x,double* y,int* riftsegments,int nriftsegs,int nods,int nel){/*{{{*/
+
+	int noerr=1;
+	int i,j,k;
+	int el1,el2;
+
+	int *segments          = NULL;
+	int *segmentmarkerlist = NULL;
+	int  nsegs;
+
+	/*Recover input: */
+	segments          = *psegments;
+	segmentmarkerlist = *psegmentmarkerlist;
+	nsegs             = *pnsegs;
+
+	/*Reallocate segments: */
+	segments         =xReNew<int>(segments,         nsegs*3,(nsegs+nriftsegs)*3);
+	segmentmarkerlist=xReNew<int>(segmentmarkerlist,nsegs,(nsegs+nriftsegs));
+
+	/*First, update the existing segments to the new nodes :*/
+	for (i=0;i<nriftsegs;i++){
+		el1=riftsegments[4*i+0];
+		el2=riftsegments[4*i+1];
+		for (j=0;j<nsegs;j++){
+			if (segments[3*j+2]==(el1+1)){
+				/*segment j is the same as rift segment i.Let's update segments[j][:] using  element el1 and the corresponding rift segment.
+				 *Because riftsegments does not represent a list of rift segments anymore (it got heavily modified in SplitElementsForRifts, 
+				 *we can only rely on the position (x,y) of the rift nodes to create a segment:*/
+				for (k=0;k<3;k++){
+					if ((x[*(index+el1*3+k)-1]==x[*(segments+3*j+0)-1]) && (y[*(index+el1*3+k)-1]==y[*(segments+3*j+0)-1])){
+						*(segments+3*j+0)=*(index+el1*3+k); _assert_(segments[3*j+0]<nods+1);
+						break;
+					}
+				}
+				for (k=0;k<3;k++){
+					if ((x[*(index+el1*3+k)-1]==x[*(segments+3*j+1)-1])  && (y[*(index+el1*3+k)-1]==y[*(segments+3*j+1)-1])){
+						*(segments+3*j+1)=*(index+el1*3+k); _assert_(segments[3*j+1]<nods+1);
+						break;
+					}
+				}
+				/*Deal with el2: */
+				*(segments+3*(nsegs+i)+2)=el2+1;
+				*(segmentmarkerlist+(nsegs+i))=*(segmentmarkerlist+j);
+				for (k=0;k<3;k++){
+					if ((x[*(index+el2*3+k)-1]==x[*(segments+3*j+0)-1]) && (y[*(index+el2*3+k)-1]==y[*(segments+3*j+0)-1])){
+						*(segments+3*(nsegs+i)+0)=*(index+el2*3+k); _assert_(segments[3*(nsegs+i)+0]<nods+1);
+						break;
+					}
+				}
+				for (k=0;k<3;k++){
+					if ((x[*(index+el2*3+k)-1]==x[*(segments+3*j+1)-1]) && (y[*(index+el2*3+k)-1]==y[*(segments+3*j+1)-1])){
+						*(segments+3*(nsegs+i)+1)=*(index+el2*3+k); _assert_(segments[3*(nsegs+i)+1]<nods+1);
+						break;
+					}
+				}
+			}
+			if (*(segments+3*j+2)==(el2+1)){
+				/*segment j is the same as rift segment i.*/
+				/*Let's update segments[j][:] using  element el2 and the corresponding rift segment: */
+				for (k=0;k<3;k++){
+					if ((x[*(index+el2*3+k)-1]==x[*(segments+3*j+0)-1]) && (y[*(index+el2*3+k)-1]==y[*(segments+3*j+0)-1])){
+						*(segments+3*j+0)=*(index+el2*3+k); _assert_(segments[3*j+0]<nods+1);
+						break;
+					}
+				}
+				for (k=0;k<3;k++){
+					if ((x[*(index+el2*3+k)-1]==x[*(segments+3*j+1)-1]) && (y[*(index+el2*3+k)-1]==y[*(segments+3*j+1)-1])){
+						*(segments+3*j+1)=*(index+el2*3+k);_assert_(segments[3*j+1]<nods+1);
+						break;
+					}
+				}
+				/*Deal with el1: */
+				*(segments+3*(nsegs+i)+2)=el1+1;
+				*(segmentmarkerlist+(nsegs+i))=*(segmentmarkerlist+j);
+				for (k=0;k<3;k++){
+					if ((x[*(index+el1*3+k)-1]==x[*(segments+3*j+0)-1]) && (y[*(index+el1*3+k)-1]==y[*(segments+3*j+0)-1])){
+						*(segments+3*(nsegs+i)+0)=*(index+el1*3+k);_assert_(segments[3*(nsegs+i)+0]<nods+1);
+						break;
+					}
+				}
+				for (k=0;k<3;k++){
+					if ((x[*(index+el1*3+k)-1]==x[*(segments+3*j+1)-1]) && (y[*(index+el1*3+k)-1]==y[*(segments+3*j+1)-1])){
+						*(segments+3*(nsegs+i)+1)=*(index+el1*3+k);_assert_(segments[3*(nsegs+i)+1]<nods+1);
+						break;
+					}
+				}
+			}
+		}
+	}
+	nsegs+=nriftsegs;
+
+	/*Assign output pointers: */
+	*psegments=segments;
+	*psegmentmarkerlist=segmentmarkerlist;
+	*pnsegs=nsegs;
+
+	return noerr;
+}/*}}}*/
+int FindElement(int A,int B,int* index,int nel){/*{{{*/
+
+	int el=-1;
+	for (int n=0;n<nel;n++){
+		if(((index[3*n+0]==A) || (index[3*n+1]==A) || (index[3*n+2]==A)) && ((index[3*n+0]==B) || (index[3*n+1]==B) || (index[3*n+2]==B))){
+			el=n;
+			break;
+		}
+	}
+	return el;
+}/*}}}*/
+int SplitRiftSegments(int** psegments,int** psegmentmarkerlist, int* pnumsegs, int* pnumrifts,int** priftsnumsegs,int*** priftssegments,int numrifts,int nods,int nel){/*{{{*/
+
+	/*Using segment markers, wring out the rift segments from the segments. Rift markers are 
+	 *of the form 2+i where i=0 to number of rifts */
+
+	int noerr=1;
+	int i,j,counter;
+
+	/*input: */
+	int *segments          = NULL;
+	int *segmentmarkerlist = NULL;
+	int numsegs;
+
+	/*output: */
+	int   new_numsegs;
+	int  *riftsnumsegs       = NULL;
+	int **riftssegments      = NULL;
+	int  *new_segments       = NULL;
+	int  *new_segmentmarkers = NULL;
+
+	/*intermediary: */
+	int* riftsegment=NULL;
+
+	/*Recover input arguments: */
+	segments          = *psegments;
+	numsegs           = *pnumsegs;
+	segmentmarkerlist = *psegmentmarkerlist;
+
+	/*First, figure out  how many segments will be left in 'segments': */
+	counter=0;
+	for (i=0;i<numsegs;i++){
+		if (segmentmarkerlist[i]==1)counter++; //1 is default marker for non-rifts;
+	}
+	/*Allocate new segments: */
+	new_numsegs=counter;
+	new_segments=xNew<int>(new_numsegs*3);
+	new_segmentmarkers=xNew<int>(new_numsegs);
+
+	/*Copy new segments info : */
+	counter=0;
+	for (i=0;i<numsegs;i++){
+		if (segmentmarkerlist[i]==1){
+			new_segments[3*counter+0]=segments[3*i+0];
+			new_segments[3*counter+1]=segments[3*i+1];
+			new_segments[3*counter+2]=segments[3*i+2];
+			new_segmentmarkers[counter]=segmentmarkerlist[i];
+			counter++;
+		}
+	}
+
+	/*Now deal with rift segments: */
+	riftsnumsegs=xNew<int>(numrifts);
+	riftssegments=xNew<int*>(numrifts);
+	for (i=0;i<numrifts;i++){
+		/*Figure out how many segments for rift i: */
+		counter=0;
+		for (j=0;j<numsegs;j++){
+			if (segmentmarkerlist[j]==2+i)counter++;
+		}
+		riftsnumsegs[i]=counter;
+		riftsegment=xNew<int>(counter*3);
+		/*Copy new segments info :*/
+		counter=0;
+		for (j=0;j<numsegs;j++){
+			if (segmentmarkerlist[j]==(2+i)){
+				riftsegment[3*counter+0]=segments[3*j+0];_assert_(riftsegment[3*counter+0]<nods+1);
+				riftsegment[3*counter+1]=segments[3*j+1];_assert_(riftsegment[3*counter+1]<nods+1);
+				riftsegment[3*counter+2]=segments[3*j+2];_assert_(riftsegment[3*counter+2]<nel+1);
+				counter++;
+			}
+		}
+		*(riftssegments+i)=riftsegment;
+	}
+
+	/*Free ressources: */
+	xDelete<int>(segments);
+
+	/*Assign output pointers: */
+	*psegments=new_segments;
+	*psegmentmarkerlist=new_segmentmarkers;
+	*pnumsegs=new_numsegs;
+	*pnumrifts=numrifts;
+	*priftssegments=riftssegments;
+	*priftsnumsegs=riftsnumsegs;
+	return noerr;
+}/*}}}*/
+int PairRiftElements(int** priftsnumpairs,int*** priftspairs,int numrifts,int* riftsnumsegments,int** riftssegments,double* x,double* y){/*{{{*/
+
+	int noerr=1;
+	int i,j,k;
+
+	/*output: */
+	int  *riftsnumpairs = NULL;
+	int **riftspairs    = NULL;
+
+	/*intermediary :*/
+	int  numsegs;
+	int* segments=NULL;
+	int* pairs=NULL;
+	int  node1,node2,node3,node4;
+
+	riftsnumpairs=xNew<int>(numrifts);
+	riftspairs=xNew<int*>(numrifts);
+	for (i=0;i<numrifts;i++){
+		segments=riftssegments[i];
+		numsegs =riftsnumsegments[i];
+		riftsnumpairs[i]=numsegs;
+		pairs=xNew<int>(2*numsegs);
+		for (j=0;j<numsegs;j++){
+			pairs[2*j+0]=segments[3*j+2]; //retrieve element to which this segment belongs.
+			node1=segments[3*j+0]-1; node2=segments[3*j+1]-1;
+			/*Find element facing on other side of rift: */
+			for (k=0;k<numsegs;k++){
+				if (k==j)continue;
+				node3=segments[3*k+0]-1; node4=segments[3*k+1]-1;
+				/*We are trying to find 2 elements, where position of node3 == position of node1, and position of node4 == position of node2*/
+				if (   ((x[node3]==x[node1]) && (y[node3]==y[node1]) && (x[node4]==x[node2]) && (y[node4]==y[node2]))
+				    || ((x[node3]==x[node2]) && (y[node3]==y[node2]) && (x[node4]==x[node1]) && (y[node4]==y[node1]))  ){
+					/*We found the corresponding element: */
+					pairs[2*j+1]=segments[3*k+2];
+					break;
+				}
+			}
+		}
+		riftspairs[i]=pairs;
+	}
+
+	/*Assign output pointers: */
+	*priftsnumpairs=riftsnumpairs;
+	*priftspairs=riftspairs;
+	return noerr;
+}/*}}}*/
+int IsRiftPresent(int* priftflag,int* pnumrifts,int* segmentmarkerlist,int nsegs){/*{{{*/
+
+	int i;
+	int noerr=1;
+
+	/*output: */
+	int riftflag=0;
+	int numrifts=0;
+
+	int maxmark=1; //default marker for regular segments
+
+	/*Any marker >=2 indicates a certain rift: */
+	numrifts=0;
+	for (i=0;i<nsegs;i++){
+		if (segmentmarkerlist[i]>maxmark){
+			numrifts++;
+			maxmark=segmentmarkerlist[i];
+		}
+	}
+	if(numrifts)riftflag=1;
+
+	/*Assign output pointers:*/
+	*priftflag=riftflag;
+	*pnumrifts=numrifts;
+	return noerr;
+}/*}}}*/
+int OrderRifts(int** priftstips,int** riftssegments,int** riftspairs,int numrifts,int* riftsnumsegments,double* x,double* y,int nods,int nels){/*{{{*/
+
+	int noerr=1;
+	int i,j,k,counter;
+
+	/*intermediary: */
+	int *riftsegments = NULL;
+	int *riftpairs    = NULL;
+	int numsegs;
+
+	/*ordering and copy: */
+	int *order             = NULL;
+	int *riftsegments_copy = NULL;
+	int *riftpairs_copy    = NULL;
+
+	/*node and element manipulation: */
+	int node1,node2,node3,node4,temp_node,tip1,tip2,node;
+	int el2;
+	int already_ordered=0;
+
+	/*output: */
+	int* riftstips=NULL;
+
+	/*Allocate byproduct of this routine, riftstips: */
+	riftstips=xNew<int>(numrifts*2);
+
+	/*Go through all rifts: */
+	for (i=0;i<numrifts;i++){
+		riftsegments = riftssegments[i];
+		riftpairs    = riftspairs[i];
+		numsegs      = riftsnumsegments[i];
+
+		/*Allocate copy of riftsegments and riftpairs, 
+		 *as well as ordering vector: */
+		riftsegments_copy=xNew<int>(numsegs*3);
+		riftpairs_copy=xNew<int>(numsegs*2);
+		order=xNew<int>(numsegs);
+
+		/*First find the tips, using the pairs. If a pair of elements has one node in common, this node is a rift tip: */
+		tip1=-1;
+		tip2=-1;
+
+		for (j=0;j<numsegs;j++){
+			el2=*(riftpairs+2*j+1);
+			node1=*(riftsegments+3*j+0);
+			node2=*(riftsegments+3*j+1);
+			/*Summary, el1 and el2 are facing one another across the rift. node1 and node2 belong to el1 and 
+			 *are located on the rift. Find node3 and node4, nodes belonging to el2 and located on the rift: */
+			for (k=0;k<numsegs;k++){
+				if (*(riftsegments+3*k+2)==el2){
+					node3=*(riftsegments+3*k+0);
+					node4=*(riftsegments+3*k+1);
+					break;
+				}
+			}
+			/* Make sure node3 faces node1 and node4 faces node2: */
+			_assert_(node1<nods+1 && node4<nods+1);
+			_assert_(node1>0 && node4>0);
+			if ((x[node1-1]==x[node4-1]) && (y[node1-1]==y[node4-1])){
+				/*Swap node3 and node4:*/
+				temp_node=node3;
+				node3=node4;
+				node4=temp_node;
+			}
+
+			/*Figure out if a tip is on this element: */
+			if (node3==node1){
+				/*node1 is a tip*/
+				if (tip1==-1) {
+					tip1=node1;
+					continue;
+				}
+				if ((tip2==-1) && (node1!=tip1)){
+					tip2=node1;
+					break;
+				}
+			}
+
+			if (node4==node2){
+				/*node2 is a tip*/
+				if (tip1==-1){
+					tip1=node2;
+					continue;
+				}
+				if ((tip2==-1) && (node2!=tip1)){
+					tip2=node2;
+					break;
+				}
+			}
+		}
+
+		/*Record tips in riftstips: */
+		*(riftstips+2*i+0)=tip1;
+		*(riftstips+2*i+1)=tip2;
+
+		/*We have the two tips for this rift.  Go from tip1 to tip2, and figure out the order in which segments are sequential. 
+		 *Because two elements are connected to tip1, we chose one first, which defines the direction we are rotating along the rift. */
+		node=tip1;
+		for (counter=0;counter<numsegs;counter++){
+			for (j=0;j<numsegs;j++){
+				node1=*(riftsegments+3*j+0);
+				node2=*(riftsegments+3*j+1);
+
+				if ((node1==node) || (node2==node)){
+					/*Ok, this segment is connected to node, plug its index into order, unless we already plugged it before: */
+					already_ordered=0;
+					for (k=0;k<counter;k++){
+						if(order[k]==j){
+							already_ordered=1;
+							break;
+						}
+					}
+					if (!already_ordered){
+						order[counter]=j;
+						if(node1==node){
+							node=node2;
+						}
+						else if(node2==node){
+							node=node1;
+						}
+						break;
+					}
+				}
+			}
+		}
+
+		/*Using the order vector, and the riftsegments_copy and riftspairs_copy, reorder the segments and the pairs: */
+		for (j=0;j<numsegs;j++){
+			_assert_(order[j]<numsegs);
+			*(riftsegments_copy+3*j+0)=*(riftsegments+3*order[j]+0);
+			*(riftsegments_copy+3*j+1)=*(riftsegments+3*order[j]+1);
+			*(riftsegments_copy+3*j+2)=*(riftsegments+3*order[j]+2);
+			*(riftpairs_copy+2*j+0)=*(riftpairs+2*order[j]+0);
+			*(riftpairs_copy+2*j+1)=*(riftpairs+2*order[j]+1);
+		}
+
+		for (j=0;j<numsegs;j++){
+			*(riftsegments+3*j+0)=*(riftsegments_copy+3*j+0);
+			*(riftsegments+3*j+1)=*(riftsegments_copy+3*j+1);
+			*(riftsegments+3*j+2)=*(riftsegments_copy+3*j+2);
+			*(riftpairs+2*j+0)=*(riftpairs_copy+2*j+0);
+			*(riftpairs+2*j+1)=*(riftpairs_copy+2*j+1);
+		}
+
+		xDelete<int>(order);
+		xDelete<int>(riftsegments_copy);
+		xDelete<int>(riftpairs_copy);
+
+	}
+
+	/*Assign output pointer:*/
+	*priftstips=riftstips;
+	return noerr;
+}/*}}}*/
+int PenaltyPairs(double*** priftspenaltypairs,int** priftsnumpenaltypairs,int numrifts,int** riftssegments,/*{{{*/
+		int* riftsnumsegs,int** riftspairs,int* riftstips,double* x,double* y){
+
+	int noerr=1;
+	int i,j,k,k0;
+
+	double el1,el2,node1,node2,node3,node4;
+	double temp_node;
+
+	/*output: */
+	double **riftspenaltypairs    = NULL;
+	double  *riftpenaltypairs     = NULL;
+	int     *riftsnumpenaltypairs = NULL;
+
+	/*intermediary: */
+	int numsegs;
+	int* riftsegments=NULL;
+	int* riftpairs=NULL;
+	int counter;
+	double normal[2];
+	double length;
+	int    k1,k2;
+
+	/*Allocate: */
+	riftspenaltypairs=xNew<double*>(numrifts);
+	riftsnumpenaltypairs=xNew<int>(numrifts);
+
+	for(i=0;i<numrifts;i++){
+		numsegs=riftsnumsegs[i];
+		riftsegments=riftssegments[i];
+		riftpairs=riftspairs[i];
+
+		/*allocate riftpenaltypairs, and riftnumpenaltypairs: */
+		if((numsegs/2-1)!=0)riftpenaltypairs=xNewZeroInit<double>((numsegs/2-1)*RIFTPENALTYPAIRSWIDTH);
+
+		/*Go through only one flank of the rifts, not counting the tips: */
+		counter=0;
+		for(j=0;j<(numsegs/2);j++){
+			el1=*(riftpairs+2*j+0);
+			el2=*(riftpairs+2*j+1);
+			node1=*(riftsegments+3*j+0);
+			node2=*(riftsegments+3*j+1);
+			/*Find segment index to recover node3 and node4, facing node1 and node2: */
+			k0=-1;
+			for(k=0;k<numsegs;k++){
+				if(*(riftsegments+3*k+2)==el2){
+					k0=k;
+					break;
+				}
+			}
+			node3=*(riftsegments+3*k0+0);
+			node4=*(riftsegments+3*k0+1);
+
+			/* Make sure node3 faces node1 and node4 faces node2: */
+			if ((x[(int)node1-1]==x[(int)node4-1]) && (y[(int)node1-1]==y[(int)node4-1])){
+				/*Swap node3 and node4:*/
+				temp_node=node3;
+				node3=node4;
+				node4=temp_node;
+			}	
+			/*Ok, we have node1 facing node3, and node2 facing node4. Compute the normal to 
+			 *this segment, and its length: */
+			normal[0]=cos(atan2(x[(int)node1-1]-x[(int)node2-1],y[(int)node2-1]-y[(int)node1-1]));
+			normal[1]=sin(atan2(x[(int)node1-1]-x[(int)node2-1],y[(int)node2-1]-y[(int)node1-1]));
+			length=sqrt(pow(x[(int)node2-1]-x[(int)node1-1],(double)2)+pow(y[(int)node2-1]-y[(int)node1-1],(double)2));
+
+			/*Be careful here, we want penalty loads on each node, not on each segment. This means we cannot plug node1,
+			 * node2, node3 and node4 directly into riftpenaltypairs. We need to include node1, node2, node3 and node4, 
+			 * only once. We'll add the normals and the lengths : */
+
+			if(node1!=node3){ //exclude tips from loads
+				k1=-1;
+				for(k=0;k<counter;k++){
+					if( (*(riftpenaltypairs+k*7+0))==node1){
+						k1=k; 
+						break;
+					}
+				}
+				if(k1==-1){
+					*(riftpenaltypairs+counter*7+0)=node1;
+					*(riftpenaltypairs+counter*7+1)=node3;
+					*(riftpenaltypairs+counter*7+2)=el1;
+					*(riftpenaltypairs+counter*7+3)=el2;
+					*(riftpenaltypairs+counter*7+4)=normal[0];
+					*(riftpenaltypairs+counter*7+5)=normal[1];
+					*(riftpenaltypairs+counter*7+6)=length/2;
+					counter++;
+				}
+				else{
+					*(riftpenaltypairs+k1*7+4)+=normal[0];
+					*(riftpenaltypairs+k1*7+5)+=normal[1];
+					*(riftpenaltypairs+k1*7+6)+=length/2;
+				}
+			}
+			if(node2!=node4){
+				k2=-1;
+				for(k=0;k<counter;k++){
+					if( (*(riftpenaltypairs+k*7+0))==node2){
+						k2=k;
+						break;
+					}
+				}
+				if(k2==-1){
+					*(riftpenaltypairs+counter*7+0)=node2;
+					*(riftpenaltypairs+counter*7+1)=node4;
+					*(riftpenaltypairs+counter*7+2)=el1;
+					*(riftpenaltypairs+counter*7+3)=el2;
+					*(riftpenaltypairs+counter*7+4)=normal[0];
+					*(riftpenaltypairs+counter*7+5)=normal[1];
+					*(riftpenaltypairs+counter*7+6)=length/2;
+					counter++;
+				}
+				else{
+					*(riftpenaltypairs+k2*7+4)+=normal[0];
+					*(riftpenaltypairs+k2*7+5)+=normal[1];
+					*(riftpenaltypairs+k2*7+6)+=length/2;
+				}
+			}
+		}
+		/*Renormalize normals: */
+		for(j=0;j<counter;j++){
+			double magnitude=sqrt(pow( double(riftpenaltypairs[j*7+4]),2) + pow( double(riftpenaltypairs[j*7+5]),2) );
+			*(riftpenaltypairs+j*7+4)=*(riftpenaltypairs+j*7+4)/magnitude;
+			*(riftpenaltypairs+j*7+5)=*(riftpenaltypairs+j*7+5)/magnitude;
+		}
+
+		riftspenaltypairs[i]=riftpenaltypairs;
+		riftsnumpenaltypairs[i]=(numsegs/2-1);
+	}
+
+	/*Assign output pointers: */
+	*priftspenaltypairs=riftspenaltypairs;
+	*priftsnumpenaltypairs=riftsnumpenaltypairs;
+	return noerr;
+}/*}}}*/
+int RemoveCornersFromRifts(int** pindex,int* pnel,double** px,double** py,int* pnods,int* segments,int* segmentmarkers,int num_seg){/*{{{*/
+
+	int noerr=1;
+	int i,j,k;
+	int node1,node2,node3;
+	int el;
+	double  pair[2];
+	int     pair_count=0;
+	int     triple=0;
+
+	/*Recover input: */
+	int    *index = *pindex;
+	int     nel   = *pnel;
+	double *x     = *px;
+	double *y     = *py;
+	int     nods  = *pnods;
+
+	for (i=0;i<num_seg;i++){
+		node1=*(segments+3*i+0);
+		node2=*(segments+3*i+1);
+		/*Find all elements connected to [node1 node2]: */
+		pair_count=0;
+		for (j=0;j<nel;j++){
+			if (*(index+3*j+0)==node1){
+				if ((*(index+3*j+1)==node2) || (*(index+3*j+2)==node2)){
+					pair[pair_count]=j;
+					pair_count++;
+				}
+			}
+			if (*(index+3*j+1)==node1){
+				if ((*(index+3*j+0)==node2) || (*(index+3*j+2)==node2)){
+					pair[pair_count]=j;
+					pair_count++;
+				}
+			}
+			if (*(index+3*j+2)==node1){
+				if ((*(index+3*j+0)==node2) || (*(index+3*j+1)==node2)){
+					pair[pair_count]=j;
+					pair_count++;
+				}
+			}
+		}
+		/*Ok, we have pair_count elements connected to this segment. For each of these elements, 
+		 *figure out if the third node also belongs to a segment: */
+		if ((pair_count==0) || (pair_count==1)){ //we only select the rift segments, which belong to  2 elements
+			continue;
+		}
+		else{
+			for (j=0;j<pair_count;j++){
+				el=(int)pair[j];
+				triple=0;
+				/*First find node3: */
+				if (*(index+3*el+0)==node1){
+					if (*(index+3*el+1)==node2)node3=*(index+3*el+2);
+					else node3=*(index+3*el+1);
+				}
+				if (*(index+3*el+1)==node1){
+					if (*(index+3*el+0)==node2)node3=*(index+3*el+2);
+					else node3=*(index+3*el+0);
+				}
+				if (*(index+3*el+2)==node1){
+					if (*(index+3*el+0)==node2)node3=*(index+3*el+1);
+					else node3=*(index+3*el+0);
+				}
+				/*Ok, we have node3. Does node3 belong to a segment? : */
+				for (k=0;k<num_seg;k++){
+					if ((node3==*(segments+3*k+0)) || (node3==*(segments+3*k+1))){
+						triple=1;
+						break;
+					}
+				}
+				if(triple==1){
+					/*el is a corner element: we need to split it in 3 triangles: */
+					x=xReNew<double>(x,nods,nods+1);
+					y=xReNew<double>(y,nods,nods+1);
+					x[nods]=(x[(int)node1-1]+x[(int)node2-1]+x[(int)node3-1])/3;
+					y[nods]=(y[(int)node1-1]+y[(int)node2-1]+y[(int)node3-1])/3;
+					index=xReNew<int>(index,nel*3,(nel+2*3));
+					/*First, reassign element el: */
+					*(index+3*el+0)=node1;
+					*(index+3*el+1)=node2;
+					*(index+3*el+2)=nods+1;
+					/*Other two elements: */
+					*(index+3*nel+0)=node2;
+					*(index+3*nel+1)=node3;
+					*(index+3*nel+2)=nods+1;
+
+					*(index+3*(nel+1)+0)=node3;
+					*(index+3*(nel+1)+1)=node1;
+					*(index+3*(nel+1)+2)=nods+1;
+					/*we need  to change the segment elements corresponding to el: */
+					for (k=0;k<num_seg;k++){
+						if (*(segments+3*k+2)==(el+1)){
+							if ( ((*(segments+3*k+0)==node1) && (*(segments+3*k+1)==node2)) || ((*(segments+3*k+0)==node2) && (*(segments+3*k+1)==node1))) *(segments+3*k+2)=el+1;
+							if ( ((*(segments+3*k+0)==node2) && (*(segments+3*k+1)==node3)) || ((*(segments+3*k+0)==node3) && (*(segments+3*k+1)==node2))) *(segments+3*k+2)=nel+1;
+							if ( ((*(segments+3*k+0)==node3) && (*(segments+3*k+1)==node1)) || ((*(segments+3*k+0)==node1) && (*(segments+3*k+1)==node3))) *(segments+3*k+2)=nel+2;
+						}
+					}
+
+					nods=nods+1;
+					nel=nel+2;
+					i=0;
+					break;
+				}
+			} //for (j=0;j<pair_count;j++)
+		}
+	}// for (i=0;i<num_seg;i++)
+
+	/*Assign output pointers: */
+	*pindex=index;
+	*pnel=nel;
+	*px=x;
+	*py=y;
+	*pnods=nods;
+	return noerr;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/TriMesh/trimesh.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/TriMesh/trimesh.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/TriMesh/trimesh.h	(revision 21239)
@@ -0,0 +1,33 @@
+/*!\file:  trimesh.h
+ * \brief
+ */ 
+
+#ifndef _SHARED_TRIMESH_H
+#define _SHARED_TRIMESH_H
+
+#include <stdio.h>
+#include <math.h>
+
+//#define REAL double //took  it out because it may conflict with stdlib.h defines. put back if necessary
+int AssociateSegmentToElement(int** psegments,int nseg,int* index,int nel);
+int OrderSegments(int** psegments,int nseg, int* index,int nel);
+int GridInsideHole(double* px0,double* py0,int n,double* x,double* y);
+int FindElement(int A,int B,int* index,int nel);
+int SplitMeshForRifts(int* pnel,int** pindex,int* pnods,double** px,double** py,int* pnsegs,int** psegments,int** psegmentmarkerlist);
+int IsGridOnRift(int* riftsegments, int nriftsegs, int node);
+int GridElementsList(int** pGridElements, int* pNumGridElements,int node,double * index,int nel);
+int IsNeighbor(int el1,int el2,int* index);
+int IsOnRift(int el,int nriftsegs,int* riftsegments);
+void RiftSegmentsFromSegments(int* pnriftsegs, int** priftsegments, int nel,int* index, int nsegs,int* segments);
+int DetermineGridElementListOnOneSideOfRift(int* pNumGridElementListOnOneSideOfRift, int** pGridElementListOnOneSideOfRift,int segmentnumber, int nriftsegs,int* riftsegments, int node,int* index,int nel);
+int UpdateSegments(int** psegments,int** psegmentmarkerlist, int* pnsegs,int* index, double* x,double* y,int* riftsegments,int nriftsegs,int nods,int nel);
+int FindElement(double A,double B,int* index,int nel);
+int IsRiftPresent(int* priftflag,int* pnumrifts,int* segmentmarkerlist,int nsegs);
+int SplitRiftSegments(int** psegments,int** psegmentmarkerlist, int* pnumsegs, int* pnumrifts,int** priftsnumsegs,int*** priftssegments,int numrifts,int nods,int nels);
+int OrderRifts(int** priftstips,int** riftssegments,int** riftspairs,int numrifts,int* riftsnumsegments,double* x,double* y,int nods,int nels);
+int PenaltyPairs(double*** priftspenaltypairs,int** priftsnumpenaltypairs,int numrifts,int**  riftssegments,
+		int* riftsnumsegments,int** riftspairs,int* riftstips,double* x,double* y);
+int RemoveCornersFromRifts(int** pindex,int* pnel,double** px,double** py,int* pnods,int* segments,int* segmentmarkers,int num_seg);
+int PairRiftElements(int** priftsnumpairs,int*** priftspairs,int numrifts,int* riftsnumsegments,int** riftssegments,double* x,double* y);
+
+#endif  /* _SHARED_TRIMESH_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Comm/IssmComm.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Comm/IssmComm.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Comm/IssmComm.cpp	(revision 21239)
@@ -0,0 +1,57 @@
+/*! \file IssmComm.cpp
+ * \brief  file containing the methods for IssmComm.h
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./IssmComm.h"
+#include "../../Numerics/types.h"
+#include "../../Exceptions/exceptions.h"
+
+void IssmComm::SetComm(ISSM_MPI_Comm incomm){ /*{{{*/
+
+	/*A comm is provided, we are running in parallel (this is not a module)*/
+	parallel = true;
+	comm     = incomm;
+
+}/*}}}*/
+void IssmComm::SetComm(void){ /*{{{*/
+
+	/*no comm provided, This is a matlab/python module*/
+	parallel = false;
+
+	/*No need to initialise comm*/
+
+}/*}}}*/
+ISSM_MPI_Comm IssmComm::GetComm(){  /*{{{*/
+	if(!parallel) _error_("Cannot return comm in serial mode");
+	return comm;
+}/*}}}*/
+int IssmComm::GetRank(){  /*{{{*/
+
+	int my_rank = 0;
+
+	/*for matlab and python modules*/
+	if(!parallel) return my_rank;
+
+	ISSM_MPI_Comm_rank(comm,&my_rank);
+
+	return my_rank;
+
+}/*}}}*/
+int IssmComm::GetSize(){  /*{{{*/
+
+	int size = 1;
+
+	/*for matlab and python modules*/
+	if(!parallel) return size;
+
+	ISSM_MPI_Comm_size(comm,&size);
+
+	return size;
+
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Comm/IssmComm.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Comm/IssmComm.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Comm/IssmComm.h	(revision 21239)
@@ -0,0 +1,34 @@
+/* \file IssmComm.h
+ * \brief  create a class with a static comm, and static methods to access it
+ * This is a way of protecting access to the communicator.
+ */
+
+#ifndef _ISSM_COMM_H
+#define _ISSM_COMM_H
+
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../../toolkits/mpi/issmmpi.h"
+
+/*}}}*/
+
+class IssmComm {
+
+	private:
+		static ISSM_MPI_Comm comm;
+		static bool parallel;
+
+	public:
+		static void SetComm(ISSM_MPI_Comm incomm);
+		static void SetComm(void);
+		static ISSM_MPI_Comm GetComm(void);
+		static int GetRank(void);
+		static int GetSize(void);
+};
+
+#endif  /* _ISSM_COMM_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Disk/WriteLockFile.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Disk/WriteLockFile.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Disk/WriteLockFile.cpp	(revision 21239)
@@ -0,0 +1,27 @@
+/*!\file:  WriteLockFile.cpp
+ * \brief
+ */ 
+#include <cstdio>
+#include "../../Exceptions/exceptions.h"
+#include "../Comm/IssmComm.h"
+#include "../Print/Print.h"
+#include <cstdio>
+
+void WriteLockFile(char* filename){
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/* output: */
+	FILE* fid=NULL;
+
+	/* Open lock file and write 1 into it: */
+	if(my_rank==0){
+		fid=fopen(filename,"w");
+		if(fid==NULL) _error_("error message: could not open lock file " << filename);
+
+		/*Close file: */
+		if(fclose(fid)!=0) _error_("could not close lock file " << filename);
+	}
+
+}	
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Disk/diskio.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Disk/diskio.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Disk/diskio.h	(revision 21239)
@@ -0,0 +1,15 @@
+/*\file diskio.h
+ *\brief: I/O for ISSM from disk
+ */
+
+#ifndef _DISK_IO_H_
+#define _DISK_IO_H_
+
+#include <stdio.h>
+
+FILE* pfopen(char* filename,const char* format,bool errorout=true);
+FILE* pfopen0(char* filename,const char* format);
+void  pfclose(FILE* fid,char* filename);
+void WriteLockFile(char* filename);
+
+#endif	/* _IO_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Disk/pfclose.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Disk/pfclose.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Disk/pfclose.cpp	(revision 21239)
@@ -0,0 +1,19 @@
+/*!\file:  pfclose.cpp
+ * \brief fclose wrapper for parallel solution
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include "../../shared.h"
+
+void pfclose(FILE* fid,char* filename){
+
+	/*Close file handle: */
+	_assert_(fid);
+	if(fclose(fid)!=0)_error_("could not close file " << filename);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Disk/pfopen.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Disk/pfopen.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Disk/pfopen.cpp	(revision 21239)
@@ -0,0 +1,46 @@
+/*!\file:  pfopen.cpp
+ * \brief fopen wrapper for parallel solution
+ */ 
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include "../Print/Print.h"
+#include "../Comm/IssmComm.h"
+#include "../../Exceptions/exceptions.h"
+
+FILE* pfopen0(char* filename,const char* format){
+
+	FILE* fid=NULL;
+
+	/*recover my_rank:*/
+	int my_rank  = IssmComm::GetRank();
+	if(my_rank) _error_("This function should only be called by cpu 0");
+
+	/*Open handle to data on disk*/
+	fid = fopen(filename,format);
+	if(fid==NULL)_error_("could not open file " << filename << " for binary reading or writing");
+
+	return fid;
+}
+FILE* pfopen(char* filename,const char* format,bool errorout){
+
+	FILE* fid=NULL;
+
+	/*recover my_rank:*/
+	int my_rank  = IssmComm::GetRank();
+	int num_proc = IssmComm::GetSize();
+
+	/*Open handle to data on disk (one by one to avoid errors)*/
+	for(int i=0;i<num_proc;i++){
+		if(my_rank==i) fid = fopen(filename,format);
+		ISSM_MPI_Barrier(IssmComm::GetComm());
+	}
+	if(errorout && fid==NULL)_error_("could not open file " << filename << " for binary reading or writing");
+
+	return fid;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Marshalling/IoCodeConversions.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Marshalling/IoCodeConversions.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Marshalling/IoCodeConversions.cpp	(revision 21239)
@@ -0,0 +1,130 @@
+#include <math.h>
+#include <float.h>
+#include <cstring>
+
+#include "../../Enum/EnumDefinitions.h"
+#include "../../MemOps/MemOps.h"
+#include "../../Exceptions/exceptions.h"
+
+void FieldAndEnumFromCode(int* out_enum,char** pfield,const char* string_in){/*{{{*/
+
+	/*output*/
+	char* fieldname = NULL;
+	int   param_enum = -1;
+
+	if(strcmp(string_in,"Thickness")==0){
+		const char* field = "md.geometry.thickness";
+		param_enum        = ThicknessEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"MaterialsRheologyB")==0){
+		const char* field = "md.materials.rheology_B";
+		param_enum        = MaterialsRheologyBEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"SmbMassBalance")==0){
+		const char* field = "md.smb.mass_balance";
+		param_enum        = SmbMassBalanceEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"FrictionCoefficient")==0){
+		const char* field = "md.friction.coefficient";
+		param_enum        = FrictionCoefficientEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else{
+		_error_("Field \""<<string_in<<"\" not supported yet");
+	}
+
+	/*Assign output pointers*/
+	*out_enum = param_enum;
+	*pfield   = fieldname;
+	return;
+}/*}}}*/
+int IoCodeToEnumSMB(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 1: return SMBforcingEnum;
+		case 2: return SMBcomponentsEnum;
+		case 3: return SMBmeltcomponentsEnum;
+		case 4: return SMBpddEnum;
+		case 5: return SMBd18opddEnum;
+		case 6: return SMBgradientsEnum;
+		case 7: return SMBhenningEnum;
+		case 8: return SMBgembEnum;
+		default: _error_("Marshalled SMB code \""<<enum_in<<"\" not supported yet");
+	}
+}/*}}}*/
+int IoCodeToEnumBasal(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 1: return FloatingMeltRateEnum;
+		case 2: return LinearFloatingMeltRateEnum;
+		case 3: return MismipFloatingMeltRateEnum;
+		case 4: return MantlePlumeGeothermalFluxEnum;
+		default: _error_("Marshalled Basal Forcings code \""<<enum_in<<"\" not supported yet");
+	}
+}/*}}}*/
+int IoCodeToEnumCalving(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 1: return DefaultCalvingEnum;
+		case 2: return CalvingDevEnum;
+		case 3: return CalvingLevermannEnum;
+		case 4: return CalvingMinthicknessEnum;
+		default: _error_("Marshalled Calving law code \""<<enum_in<<"\" not supported yet");
+	}
+}/*}}}*/
+int IoCodeToEnumHydrology(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 1: return HydrologydcEnum;
+		case 2: return HydrologyshreveEnum;
+		case 3: return HydrologysommersEnum;
+		default: _error_("Marshalled hydrology code \""<<enum_in<<"\" not supported yet"); 
+	}
+}/*}}}*/
+int IoCodeToEnumMaterials(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 1: return MatdamageiceEnum;
+		case 2: return MatestarEnum; 
+		case 3: return MaticeEnum;
+		default: _error_("Marshalled materials code \""<<enum_in<<"\" not supported yet"); 
+	}
+}/*}}}*/
+
+int IoCodeToEnumVertexEquation(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 0: return NoneApproximationEnum;
+		case 1: return SIAApproximationEnum;
+		case 2: return SSAApproximationEnum;
+		case 3: return L1L2ApproximationEnum;
+		case 4: return HOApproximationEnum;
+		case 5: return FSApproximationEnum;
+		case 6: return SSAHOApproximationEnum;
+		case 7: return HOFSApproximationEnum;
+		case 8: return SSAFSApproximationEnum;
+		default: _error_("Marshalled vertex equation code \""<<enum_in<<"\" not supported yet.");
+	}
+}/*}}}*/
+int IoCodeToEnumElementEquation(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 0: return NoneApproximationEnum;
+		case 1: return SIAApproximationEnum;
+		case 2: return SSAApproximationEnum;
+		case 3: return L1L2ApproximationEnum;
+		case 4: return HOApproximationEnum;
+		case 5: return FSApproximationEnum;
+		case 6: return SSAHOApproximationEnum;
+		case 7: return SSAFSApproximationEnum;
+		case 8: return HOFSApproximationEnum;
+		default: _error_("Marshalled element equation code \""<<enum_in<<"\" not supported yet.");
+	}
+
+}/*}}}*/
+
+int IoRiftfillToEnum(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 0: return AirEnum;
+		case 1: return IceEnum;
+		case 2: return MelangeEnum;
+		case 3: return WaterEnum;
+		default: _error_("Marshalled Riftfill enum \""<<enum_in<<"\" not supported yet.");
+	}
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Marshalling/IoCodeConversions.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Marshalling/IoCodeConversions.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Marshalling/IoCodeConversions.h	(revision 21239)
@@ -0,0 +1,17 @@
+#ifndef _IOCODECONVERSION_H_
+#define _IOCODECONVERSION_H_
+
+void FieldAndEnumFromCode(int* out_enum,char** pfield,const char* string_in);
+
+int IoCodeToEnumSMB(int enum_in);
+int IoCodeToEnumBasal(int enum_in);
+int IoCodeToEnumCalving(int enum_in);
+int IoCodeToEnumHydrology(int enum_in);
+int IoCodeToEnumMaterials(int enum_in);
+
+int IoCodeToEnumVertexEquation(int enum_in);
+int IoCodeToEnumElementEquation(int enum_in);
+
+int IoRiftfillToEnum(int enum_in);
+
+#endif	
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Marshalling/Marshalling.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Marshalling/Marshalling.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Marshalling/Marshalling.h	(revision 21239)
@@ -0,0 +1,85 @@
+/*\file Marshalling.h
+ *\brief: macros to help automate the marshalling, demarshalling, and marshalling size routines. 
+ */
+
+#ifndef _MARSHALLING_H_
+#define _MARSHALLING_H_
+
+enum marshall_directions{
+	MARSHALLING_FORWARD,
+	MARSHALLING_BACKWARD,
+	MARSHALLING_SIZE
+};
+
+#define MARSHALLING_ENUM(EN)\
+	int type_enum=EN;\
+	if(marshall_direction==MARSHALLING_FORWARD){\
+		memcpy(*pmarshalled_data,&type_enum,sizeof(int));\
+		*pmarshalled_data+=sizeof(int);\
+	}\
+	else if(marshall_direction==MARSHALLING_SIZE){\
+		*pmarshalled_data_size+=sizeof(int);\
+	}\
+	else if(marshall_direction==MARSHALLING_BACKWARD){\
+		*pmarshalled_data+=sizeof(int);\
+	}\
+	else _error_("Wrong direction during the Marshall process");\
+
+
+#define MARSHALLING(FIELD)\
+	\
+	if(marshall_direction==MARSHALLING_FORWARD){\
+		memcpy(*pmarshalled_data,&FIELD,sizeof(FIELD));\
+		*pmarshalled_data+=sizeof(FIELD);\
+	}\
+	else if(marshall_direction==MARSHALLING_SIZE){\
+		*pmarshalled_data_size+=sizeof(FIELD);\
+	}\
+	else if(marshall_direction==MARSHALLING_BACKWARD){\
+		memcpy(&FIELD,*pmarshalled_data,sizeof(FIELD));\
+		*pmarshalled_data+=sizeof(FIELD);\
+	}\
+	else _error_("Wrong direction during the Marshall process");
+
+
+#define MARSHALLING_ARRAY(FIELD,TYPE,SIZE) \
+	\
+	if(marshall_direction==MARSHALLING_FORWARD){\
+		memcpy(*pmarshalled_data,FIELD,SIZE*sizeof(TYPE));\
+		*pmarshalled_data+=SIZE*sizeof(TYPE);\
+	}\
+	else if(marshall_direction==MARSHALLING_SIZE){\
+		*pmarshalled_data_size+=SIZE*sizeof(TYPE);\
+	}\
+	else if(marshall_direction==MARSHALLING_BACKWARD){\
+		memcpy(FIELD,*pmarshalled_data,SIZE*sizeof(TYPE));\
+		*pmarshalled_data+=SIZE*sizeof(TYPE);\
+	}\
+	else _error_("Wrong direction during the Marshall process");
+
+
+#define MARSHALLING_DYNAMIC(FIELD,TYPE,SIZE) \
+	\
+	{\
+		bool field_null=true;\
+		if (FIELD)field_null=false;\
+		MARSHALLING(field_null);\
+		\
+		if(!field_null){\
+			if(marshall_direction==MARSHALLING_FORWARD){\
+					memcpy(*pmarshalled_data,FIELD,SIZE*sizeof(TYPE));\
+					*pmarshalled_data+=SIZE*sizeof(TYPE);\
+			}\
+			else if(marshall_direction==MARSHALLING_SIZE){\
+				*pmarshalled_data_size+=SIZE*sizeof(TYPE);\
+			}\
+			else if(marshall_direction==MARSHALLING_BACKWARD){\
+				FIELD=xNew<TYPE>(SIZE);\
+				memcpy(FIELD,*pmarshalled_data,SIZE*sizeof(TYPE));\
+				*pmarshalled_data+=SIZE*sizeof(TYPE);\
+			}\
+			else _error_("Wrong direction during the Marshall process");\
+		}\
+	}
+
+#endif	
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Print/Print.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Print/Print.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Print/Print.h	(revision 21239)
@@ -0,0 +1,40 @@
+/*\file Print.h
+ *\brief: print I/O for ISSM
+ */
+
+#ifndef _ISSM_PRINT_H_
+#define _ISSM_PRINT_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif 
+
+#include <string>
+#include <iostream>
+#include <sstream>
+#include <iomanip>
+
+using namespace std;
+/*macros:*/
+/* _printf_{{{*/
+/* macro to print some string on all cpus */
+#define _printf_(StreamArgs)\
+  do{std::ostringstream aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy; \
+	  aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy << StreamArgs; \
+	  PrintfFunctionOnAllCpus(aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy.str());}while(0)
+/*}}}*/
+/* _printf0_ {{{*/
+/* macro to print some string only on cpu 0 */
+#define _printf0_(StreamArgs)\
+  do{std::ostringstream aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy; \
+	  aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy << StreamArgs; \
+	  PrintfFunctionOnCpu0(aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy.str());}while(0)
+/*}}}*/
+
+/*functions: */
+int PrintfFunctionOnCpu0(const string & message);
+int PrintfFunctionOnAllCpus(const string & message);
+
+#endif	
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Print/PrintfFunction.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Print/PrintfFunction.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/Print/PrintfFunction.cpp	(revision 21239)
@@ -0,0 +1,46 @@
+/*\file PrintfFunction.c
+ *\brief: this function is used by the _printf_ macro, to take into account the 
+ *fact we may be running on a cluster. 
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdarg.h>
+#include <cstdio>
+#ifdef _HAVE_ANDROID_NDK_
+#include <android/log.h>
+#endif
+#include "./Print.h"
+#include "../Comm/IssmComm.h"
+#include "../../String/sharedstring.h"
+#include "../../MemOps/MemOps.h"
+
+int PrintfFunctionOnCpu0(const string & message){
+	int  my_rank;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	if(my_rank==0){
+		#ifdef _HAVE_ANDROID_JNI_
+		__android_log_print(ANDROID_LOG_INFO, "Native",message.c_str());
+		#else
+		ApiPrintf(message.c_str());
+		#endif
+	}
+	return 1;
+}
+int PrintfFunctionOnAllCpus(const string & message){
+
+	#ifdef _HAVE_ANDROID_JNI_
+	__android_log_print(ANDROID_LOG_INFO, "Native",message.c_str());
+	#else
+	ApiPrintf(message.c_str());
+	#endif
+
+	return 1;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/io.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/io.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/io/io.h	(revision 21239)
@@ -0,0 +1,20 @@
+/*\file io.h
+ *\brief: I/O for ISSM
+ */
+
+#ifndef _ISSM_IO_H_
+#define _ISSM_IO_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif 
+
+#include "./Comm/IssmComm.h"
+#include "./Disk/diskio.h"
+#include "./Print/Print.h"
+#include "./Marshalling/Marshalling.h"
+#include "./Marshalling/IoCodeConversions.h"
+
+#endif	/* _IO_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/shared.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/shared.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/shared/shared.h	(revision 21239)
@@ -0,0 +1,24 @@
+/* \file shared.h
+ * \brief: header file for all shared  routines.
+ */
+
+#ifndef _SHARED_H_
+#define _SHARED_H_
+
+#include "./FSanalyticals/fsanalyticals.h"
+#include "./MemOps/MemOps.h"
+#include "./Bamg/shared.h"
+#include "./Elements/elements.h"
+#include "./Enum/Enum.h"
+#include "./Exceptions/exceptions.h"
+#include "./io/io.h"
+#include "./Exp/exp.h"
+#include "./Matrix/matrix.h"
+#include "./Numerics/numerics.h"
+#include "./Sorting/sorting.h"
+#include "./String/sharedstring.h"
+#include "./Threads/issm_threads.h"
+#include "./TriMesh/trimesh.h"
+#include "./LatLong/latlong.h"
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/convergence.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/convergence.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/convergence.cpp	(revision 21239)
@@ -0,0 +1,135 @@
+/*!\file: convergence.cpp
+ * \brief: figure out if convergence has been reached
+ */ 
+
+#include "../classes/classes.h"
+#include "../modules/modules.h"
+#include "../shared/shared.h"
+
+void convergence(bool* pconverged, Matrix<IssmDouble>* Kff,Vector<IssmDouble>* pf,Vector<IssmDouble>* uf,Vector<IssmDouble>* old_uf,IssmDouble eps_res,IssmDouble eps_rel,IssmDouble eps_abs){
+
+	/*output*/
+	bool converged=false;
+
+	/*intermediary*/
+	Vector<IssmDouble>* KU=NULL;
+	Vector<IssmDouble>* KUF=NULL;
+	Vector<IssmDouble>* KUold=NULL;
+	Vector<IssmDouble>* KUoldF=NULL;
+	Vector<IssmDouble>* duf=NULL;
+	IssmDouble ndu,nduinf,nu;
+	IssmDouble nKUF;
+	IssmDouble nKUoldF;
+	IssmDouble nF;
+	IssmDouble solver_residue,res;
+	int analysis_type;
+
+	if(VerboseModule()) _printf0_("   checking convergence\n");
+
+	/*If uf is NULL in input, f-set is nil, model is fully constrained, therefore converged from 
+	 * the get go: */
+	if(uf->IsEmpty()){
+		*pconverged=true;
+		return;
+	}
+
+	/*Display solver caracteristics*/
+	if (VerboseConvergence()){
+
+		//compute KUF = KU - F = K*U - F
+		KU=uf->Duplicate(); Kff->MatMult(uf,KU);
+		KUF=KU->Duplicate(); KU->Copy(KUF); KUF->AYPX(pf,-1.0);
+
+		//compute norm(KUF), norm(F) and residue
+		nKUF=KUF->Norm(NORM_TWO);
+		nF=pf->Norm(NORM_TWO);
+		solver_residue=nKUF/nF;
+		_printf0_("\n" << "   solver residue: norm(KU-F)/norm(F)=" << solver_residue << "\n");
+
+		//clean up
+		delete KU;
+		delete KUF;
+	}
+
+	/*Force equilibrium (Mandatory)*/
+
+	//compute K[n]U[n-1]F = K[n]U[n-1] - F
+	_assert_(uf); _assert_(Kff);
+	KUold=uf->Duplicate(); Kff->MatMult(old_uf,KUold);
+	KUoldF=KUold->Duplicate();KUold->Copy(KUoldF); KUoldF->AYPX(pf,-1.0);
+	nKUoldF=KUoldF->Norm(NORM_TWO);
+	nF=pf->Norm(NORM_TWO);
+	res=nKUoldF/nF;
+	if (xIsNan<IssmDouble>(res)){
+		_printf0_("norm nf = " << nF << "f and norm kuold = " << nKUoldF << "f\n");
+		_error_("mechanical equilibrium convergence criterion is NaN!");
+	}
+
+	//clean up
+	delete KUold;
+	delete KUoldF;
+
+	//print
+	if(res<eps_res){
+		if(VerboseConvergence()) _printf0_(setw(50)<<left<<"   mechanical equilibrium convergence criterion"<<res*100<< " < "<<eps_res*100<<" %\n");
+		converged=true;
+	}
+	else{ 
+		if(VerboseConvergence()) _printf0_(setw(50)<<left<<"   mechanical equilibrium convergence criterion"<<res*100<<" > "<<eps_res*100<<" %\n");
+		converged=false;
+	}
+
+	/*Relative criterion (optional)*/
+	if (!xIsNan<IssmDouble>(eps_rel) || (VerboseConvergence())){
+
+		//compute norm(du)/norm(u)
+		duf=old_uf->Duplicate(); old_uf->Copy(duf); duf->AYPX(uf,-1.0);
+		ndu=duf->Norm(NORM_TWO); nu=old_uf->Norm(NORM_TWO);
+
+		if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error_("convergence criterion is NaN!");
+
+		//clean up
+		delete duf;
+
+		//print
+		if (!xIsNan<IssmDouble>(eps_rel)){
+			if((ndu/nu)<eps_rel){
+				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " < " << eps_rel*100 << " %\n");
+			}
+			else{ 
+				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " > " << eps_rel*100 << " %\n");
+				converged=false;
+			}
+		}
+		else _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " %\n");
+
+	}
+
+	/*Absolute criterion (Optional) = max(du)*/
+	if (!xIsNan<IssmDouble>(eps_abs) || (VerboseConvergence())){
+
+		//compute max(du)
+		duf=old_uf->Duplicate(); old_uf->Copy(duf); duf->AYPX(uf,-1.0);
+		ndu=duf->Norm(NORM_TWO); nduinf=duf->Norm(NORM_INF);
+		if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error_("convergence criterion is NaN!");
+
+		//clean up
+		delete duf;
+
+		//print
+		if (!xIsNan<IssmDouble>(eps_abs)){
+			if ((nduinf)<eps_abs){
+				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: max(du)" << nduinf << " < " << eps_abs << "\n");
+			}
+			else{
+				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: max(du)" << nduinf << " > " << eps_abs << "\n");
+				converged=false;
+			}
+		}
+		else  _printf0_(setw(50) << left << "   Convergence criterion: max(du)" << nduinf << "\n");
+
+	}
+
+	/*assign output*/
+	*pconverged=converged;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_adjoint_linear.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_adjoint_linear.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_adjoint_linear.cpp	(revision 21239)
@@ -0,0 +1,35 @@
+/*!\file: solutionsequence_adjoint_linear.cpp
+ * \brief: numerical core of linear solutions
+ */ 
+
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+void solutionsequence_adjoint_linear(FemModel* femmodel){
+	/*This is axactly the same solutionsequence as solutionsequence_linear except that Reduceloadfromgtofx and Mergesolutionfromftogx
+	 * use the flag "true" so that all spc are taken as 0*/
+
+	/*intermediary: */
+	Matrix<IssmDouble>*  Kff = NULL;
+	Matrix<IssmDouble>*  Kfs = NULL;
+	Vector<IssmDouble>*  ug  = NULL;
+	Vector<IssmDouble>*  uf  = NULL;
+	Vector<IssmDouble>*  pf  = NULL;
+	Vector<IssmDouble>*  df  = NULL;
+	Vector<IssmDouble>*  ys  = NULL;
+	int  configuration_type;
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	femmodel->UpdateConstraintsx();
+
+	SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL,femmodel);
+	CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+	Reduceloadx(pf, Kfs, ys,true); delete Kfs; //true means spc = 0
+	Solverx(&uf, Kff, pf, NULL, df, femmodel->parameters); delete Kff; delete pf; delete df;
+	Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters,true); delete ys; //true means spc0
+	InputUpdateFromSolutionx(femmodel,ug);
+	delete ug; delete uf;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_fct.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_fct.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_fct.cpp	(revision 21239)
@@ -0,0 +1,458 @@
+/*!\file: solutionsequence_fct.cpp
+ * \brief: numerical core of flux corrected transport solution
+ */ 
+
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../analyses/analyses.h"
+
+#ifdef _HAVE_PETSC_
+void CreateDMatrix(Mat* pD,Mat K){/*{{{*/
+	/*Create D matrix such that:
+	 *
+	 * d_ij = max( -k_ij,0,-k_ji) off diagonal
+	 *
+	 * d_ii = - sum_{i!=j} d_ij for the diagonal
+	 *
+	 */
+
+	/*Intermediaries*/
+	int        ncols,ncols2,rstart,rend;
+	double     d,diagD;
+	Mat        D        = NULL;
+	Mat        K_transp = NULL;
+	int*       cols  = NULL;
+	int*       cols2 = NULL;
+	double*    vals  = NULL;
+	double*    vals2 = NULL;
+
+	/*First, we need to transpose K so that we access both k_ij and k_ji*/
+	MatTranspose(K,MAT_INITIAL_MATRIX,&K_transp);
+
+	/*Initialize output (D has the same non zero pattern as K)*/
+	MatDuplicate(K,MAT_SHARE_NONZERO_PATTERN,&D);
+
+	/*Go through the rows of K an K' and build D*/
+	MatGetOwnershipRange(K,&rstart,&rend);
+	for(int row=rstart; row<rend; row++){
+		diagD = 0.;
+		MatGetRow(K       ,row,&ncols, (const int**)&cols, (const double**)&vals);
+		MatGetRow(K_transp,row,&ncols2,(const int**)&cols2,(const double**)&vals2);
+		_assert_(ncols==ncols2);
+		for(int j=0; j<ncols; j++) {
+			_assert_(cols[j]==cols2[j]);
+			d = max(max(-vals[j],-vals2[j]),0.);
+			MatSetValue(D,row,cols[j],d,INSERT_VALUES);
+			if(cols[j]!=row) diagD -= d;
+		}
+		MatSetValue(D,row,row,diagD,INSERT_VALUES);
+		MatRestoreRow(K       ,row,&ncols, (const int**)&cols, (const double**)&vals);
+		MatRestoreRow(K_transp,row,&ncols2,(const int**)&cols2,(const double**)&vals2);
+	}
+	MatAssemblyBegin(D,MAT_FINAL_ASSEMBLY);
+	MatAssemblyEnd(  D,MAT_FINAL_ASSEMBLY);
+
+	/*Clean up and assign output pointer*/
+	MatFree(&K_transp);
+	*pD = D;
+}/*}}}*/
+void CreateLHS(Mat* pLHS,IssmDouble* pdmax,Mat K,Mat D,Vec Ml,IssmDouble theta,IssmDouble deltat,FemModel* femmodel,int configuration_type){/*{{{*/
+	/*Create Left Hand side of Lower order solution
+	 *
+	 * LHS = [ML − theta*detlat *(K+D)^n+1]
+	 *
+	 */
+
+	/*Intermediaries*/
+	int        dof,ncols,ncols2,rstart,rend;
+	double     d,mi,dmax = 0.;
+	Mat        LHS   = NULL;
+	int*       cols  = NULL;
+	int*       cols2 = NULL;
+	double*    vals  = NULL;
+	double*    vals2 = NULL;
+
+	MatDuplicate(K,MAT_SHARE_NONZERO_PATTERN,&LHS);
+	MatGetOwnershipRange(K,&rstart,&rend);
+	for(int row=rstart; row<rend; row++){
+		MatGetRow(K,row,&ncols, (const int**)&cols, (const double**)&vals);
+		MatGetRow(D,row,&ncols2,(const int**)&cols2,(const double**)&vals2);
+		_assert_(ncols==ncols2);
+		for(int j=0; j<ncols; j++) {
+			_assert_(cols[j]==cols2[j]);
+			d = -theta*deltat*(vals[j] + vals2[j]);
+			if(cols[j]==row){
+				VecGetValues(Ml,1,(const int*)&cols[j],&mi);
+				d += mi;
+			}
+			if(fabs(d)>dmax) dmax = fabs(d);
+			MatSetValue(LHS,row,cols[j],d,INSERT_VALUES);
+		}
+		MatRestoreRow(K,row,&ncols, (const int**)&cols, (const double**)&vals);
+		MatRestoreRow(D,row,&ncols2,(const int**)&cols2,(const double**)&vals2);
+	}
+
+	/*Broadcast max(dmax)*/
+	IssmDouble dmax_all;
+	ISSM_MPI_Reduce(&dmax,&dmax_all,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&dmax_all,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	dmax = dmax_all;
+
+	/*Penalize Dirichlet boundary*/
+	dmax = dmax * 1.e+3;
+	for(int i=0;i<femmodel->constraints->Size();i++){
+		Constraint* constraint=(Constraint*)femmodel->constraints->GetObjectByOffset(i);
+		if(constraint->InAnalysis(configuration_type)){
+			constraint->PenaltyDofAndValue(&dof,&d,femmodel->nodes,femmodel->parameters);
+			if(dof!=-1){
+				MatSetValue(LHS,dof,dof,dmax,INSERT_VALUES);
+			}
+		}
+	}
+	MatAssemblyBegin(LHS,MAT_FINAL_ASSEMBLY);
+	MatAssemblyEnd(  LHS,MAT_FINAL_ASSEMBLY);
+
+	/*Clean up and assign output pointer*/
+	*pdmax = dmax;
+	*pLHS  = LHS;
+}/*}}}*/
+void CreateRHS(Vec* pRHS,Mat K,Mat D,Vec Ml,Vec u,IssmDouble theta,IssmDouble deltat,IssmDouble dmax,FemModel* femmodel,int configuration_type){/*{{{*/
+	/*Create Right Hand side of Lower order solution
+	 *
+	 * RHS = [ML + (1 − theta) deltaT L^n] u^n
+	 *
+	 * where L = K + D
+	 *
+	 */
+
+	/*Intermediaries*/
+	Vec         Ku  = NULL;
+	Vec         Du  = NULL;
+	Vec         RHS = NULL;
+	int         dof;
+	IssmDouble  d;
+
+	/*Initialize vectors*/
+	VecDuplicate(u,&Ku);
+	VecDuplicate(u,&Du);
+	VecDuplicate(u,&RHS);
+
+	/*Create RHS = M*u + (1-theta)*deltat*K*u + (1-theta)*deltat*D*u*/
+	MatMult(K,u,Ku);
+	MatMult(D,u,Du);
+	VecPointwiseMult(RHS,Ml,u);
+	VecAXPBYPCZ(RHS,(1-theta)*deltat,(1-theta)*deltat,1,Ku,Du);
+	VecFree(&Ku);
+	VecFree(&Du);
+
+	/*Penalize Dirichlet boundary*/
+	for(int i=0;i<femmodel->constraints->Size();i++){
+		Constraint* constraint=(Constraint*)femmodel->constraints->GetObjectByOffset(i);
+		if(constraint->InAnalysis(configuration_type)){
+			constraint->PenaltyDofAndValue(&dof,&d,femmodel->nodes,femmodel->parameters);
+			d = d*dmax;
+			if(dof!=-1){
+				VecSetValues(RHS,1,&dof,(const double*)&d,INSERT_VALUES);
+			}
+		}
+	}
+	VecAssemblyBegin(RHS);
+	VecAssemblyEnd(  RHS);
+
+	/*Assign output pointer*/
+	*pRHS = RHS;
+
+}/*}}}*/
+void RichardsonUdot(Vec* pudot,Vec u,Vec Ml,Mat K,Mat Mc){/*{{{*/
+	/*Use Richardson's formula to get udot using 5 steps and an initial guess of 0
+	 *
+	 * udot_new = udot_old + Ml^-1 (K^(n+1) u - Mc udot_old)
+	 *
+	 * */
+
+	/*Intermediaries*/
+	Vec udot  = NULL;
+	Vec temp1 = NULL;
+	Vec temp2 = NULL;
+
+	/*Initialize vectors*/
+	VecDuplicate(u,&udot);
+	VecDuplicate(u,&temp1);
+	VecDuplicate(u,&temp2);
+
+	/*Initial guess*/
+	VecZeroEntries(udot);
+	
+	/*Richardson's iterations*/
+	for(int i=0;i<5;i++){
+		MatMult(Mc,udot,temp1);
+		MatMult(K, u,   temp2);
+		VecAXPBY(temp2,-1.,1.,temp1);       // temp2 = (K^(n+1) u -- Mc udot_old)
+		VecPointwiseDivide(temp1,temp2,Ml); // temp1 = Ml^-1 temp2
+		VecAXPBY(udot,1.,1.,temp1);
+	}
+
+	/*Clean up and assign output pointer*/
+	VecFree(&temp1);
+	VecFree(&temp2);
+	*pudot=udot;
+
+}/*}}}*/
+void CreateRis(IssmDouble** pRi_plus_serial,IssmDouble** pRi_minus_serial,Mat Mc,Mat D,IssmDouble* ml_serial,Vec uvec,IssmDouble* u,IssmDouble* udot,IssmDouble* ulmin,IssmDouble* ulmax,IssmDouble deltat){/*{{{*/
+
+	/*Intermediaries*/
+	Vec         Ri_plus  = NULL;
+	Vec         Ri_minus = NULL;
+	int         ncols,ncols2,rstart,rend;
+	double      d;
+	int        *cols     = NULL;
+	int        *cols2    = NULL;
+	double     *vals     = NULL;
+	double     *vals2    = NULL;
+
+	/*Initialize vectors*/
+	VecDuplicate(uvec,&Ri_plus);
+	VecDuplicate(uvec,&Ri_minus);
+
+	/*Get global extremas*/
+	IssmDouble uLmin_global =  ulmin[0];
+	IssmDouble uLmax_global =  ulmax[0];
+	VecGetSize(uvec,&ncols);
+	for(int i=1;i<ncols;i++) if(ulmin[i]<uLmin_global) uLmin_global = ulmin[i];
+	for(int i=1;i<ncols;i++) if(ulmax[i]>uLmax_global) uLmax_global = ulmax[i];
+	//printf("%g %g\n",uLmin_global,uLmax_global);
+
+	/*Go through D and calculate Ris*/
+	MatGetOwnershipRange(D,&rstart,&rend);
+	for(int row=rstart; row<rend; row++){
+		double Pi_plus  = 0.;
+		double Pi_minus = 0.;
+		MatGetRow(Mc,row,&ncols, (const int**)&cols, (const double**)&vals);
+		MatGetRow(D ,row,&ncols2,(const int**)&cols2,(const double**)&vals2);
+		_assert_(ncols==ncols2);
+		for(int j=0; j<ncols; j++) {
+			_assert_(cols[j]==cols2[j]);
+			d = vals[j]*(udot[row] - udot[cols[j]]) + vals2[j]*(u[row] - u[cols[j]]);
+			if(row!=cols[j]){
+				if(d>0.){
+					Pi_plus  += d;
+				}
+				else{
+					Pi_minus += d;
+				}
+			}
+		}
+
+		/*Compute Qis and Ris*/
+		//double Qi_plus  = ml_serial[row]/deltat*(3. - u[row]);
+		//double Qi_minus = ml_serial[row]/deltat*(2. - u[row]);
+		double Qi_plus  = ml_serial[row]/deltat*(ulmax[row] - u[row]);
+		double Qi_minus = ml_serial[row]/deltat*(ulmin[row] - u[row]);
+		//double Qi_plus  = ml_serial[row]/deltat*(uLmax_global - u[row]);
+		//double Qi_minus = ml_serial[row]/deltat*(uLmin_global - u[row]);
+		_assert_(Qi_plus  >= 0.);
+		_assert_(Qi_minus <= 0.);
+		d = 1.;
+		if(Pi_plus!=0.) d = min(1.,Qi_plus/Pi_plus);
+		VecSetValue(Ri_plus,row,d,INSERT_VALUES);
+		d = 1.;
+		if(Pi_minus!=0.) d = min(1.,Qi_minus/Pi_minus);
+		VecSetValue(Ri_minus,row,d,INSERT_VALUES);
+
+		MatRestoreRow(Mc,row,&ncols, (const int**)&cols, (const double**)&vals);
+		MatRestoreRow(D ,row,&ncols2,(const int**)&cols2,(const double**)&vals2);
+	}
+	VecAssemblyBegin(Ri_plus);
+	VecAssemblyEnd(  Ri_plus);
+	VecAssemblyBegin(Ri_minus);
+	VecAssemblyEnd(  Ri_minus);
+
+	/*Serialize Ris*/
+	IssmDouble* Ri_plus_serial  = NULL;
+	IssmDouble* Ri_minus_serial = NULL;
+	VecToMPISerial(&Ri_plus_serial,Ri_plus,IssmComm::GetComm());
+	VecToMPISerial(&Ri_minus_serial,Ri_minus,IssmComm::GetComm());
+	VecFree(&Ri_plus);
+	VecFree(&Ri_minus);
+
+	/*Assign output pointer*/
+	*pRi_plus_serial  = Ri_plus_serial;
+	*pRi_minus_serial = Ri_minus_serial;
+}/*}}}*/
+void CreateFbar(Vec* pFbar,IssmDouble* Ri_plus,IssmDouble* Ri_minus,Mat Mc,Mat D,IssmDouble* udot,IssmDouble* u,Vec uvec){/*{{{*/
+
+	/*Intermediaries*/
+	Vec         Fbar = NULL;
+	int         ncols,ncols2,rstart,rend;
+	double      d,f_ij;
+	int        *cols     = NULL;
+	int        *cols2    = NULL;
+	double     *vals     = NULL;
+	double     *vals2    = NULL;
+
+	/*Build fbar*/
+	VecDuplicate(uvec,&Fbar);
+	MatGetOwnershipRange(D,&rstart,&rend);
+	for(int row=rstart; row<rend; row++){
+		MatGetRow(Mc,row,&ncols, (const int**)&cols, (const double**)&vals);
+		MatGetRow(D ,row,&ncols2,(const int**)&cols2,(const double**)&vals2);
+		_assert_(ncols==ncols2);
+		d = 0.;
+		for(int j=0; j<ncols; j++) {
+			_assert_(cols[j]==cols2[j]);
+			if(row==cols[j]) continue;
+			f_ij = vals[j]*(udot[row] - udot[cols[j]]) + vals2[j]*(u[row] - u[cols[j]]);
+			if(f_ij>0){
+				d += min(Ri_plus[row],Ri_minus[cols[j]]) * f_ij;
+			}
+			else{
+				d += min(Ri_minus[row],Ri_plus[cols[j]]) * f_ij;
+			}
+		}
+		VecSetValue(Fbar,row,d,INSERT_VALUES);
+		MatRestoreRow(Mc,row,&ncols, (const int**)&cols, (const double**)&vals);
+		MatRestoreRow(D ,row,&ncols2,(const int**)&cols2,(const double**)&vals2);
+	}
+	VecAssemblyBegin(Fbar);
+	VecAssemblyEnd(  Fbar);
+
+	/*Assign output pointer*/
+	*pFbar = Fbar;
+}/*}}}*/
+void UpdateSolution(Vec u,Vec udot,Vec Ml,Vec Fbar,IssmDouble deltat){/*{{{*/
+
+	/*Intermediary*/
+	Vec temp1 = NULL;
+
+	/*Compute solution u^n+1 = u_L + deltat Ml^-1 fbar*/
+	VecDuplicate(u,&temp1);
+	VecPointwiseDivide(temp1,Fbar,Ml); //temp1 = Ml^-1 temp2
+	VecAXPBY(udot,1.,1.,temp1);
+	VecAXPY(u,deltat,temp1);
+
+	/*CLean up and return*/
+	VecFree(&temp1);
+}/*}}}*/
+#endif
+void solutionsequence_fct(FemModel* femmodel){/*{{{*/
+
+	/*intermediary: */
+	IssmDouble           theta,deltat,dmax;
+	int                  configuration_type,analysis_type;
+	Vector<IssmDouble>*  Ml = NULL;
+	Matrix<IssmDouble>*  K  = NULL;
+	Matrix<IssmDouble>*  Mc = NULL;
+	Vector<IssmDouble>*  ug = NULL;
+	Vector<IssmDouble>*  uf = NULL;
+	MasstransportAnalysis* manalysis = NULL;
+	DamageEvolutionAnalysis* danalysis = NULL;
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&deltat,TimesteppingTimeStepEnum);
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	femmodel->UpdateConstraintsx();
+	theta = 0.5;
+
+	/*Create analysis*/
+	femmodel->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+	switch(analysis_type){
+		case MasstransportAnalysisEnum:
+			manalysis = new MasstransportAnalysis();
+			manalysis->LumpedMassMatrix(&Ml,femmodel);
+			manalysis->MassMatrix(&Mc,femmodel);
+			manalysis->FctKMatrix(&K,NULL,femmodel);
+			break;
+		case DamageEvolutionAnalysisEnum:
+			danalysis = new DamageEvolutionAnalysis();
+			danalysis->LumpedMassMatrix(&Ml,femmodel);
+			danalysis->MassMatrix(&Mc,femmodel);
+			danalysis->FctKMatrix(&K,NULL,femmodel);
+			break;
+		default: _error_("analysis type " << EnumToStringx(analysis_type) << " not supported for FCT\n");
+	}
+	delete manalysis;
+	delete danalysis;
+
+	#ifdef _HAVE_PETSC_
+
+	/*Convert matrices to PETSc matrices*/
+	Mat D_petsc  = NULL;
+	Mat LHS      = NULL;
+	Vec RHS      = NULL;
+	Vec u        = NULL;
+	Vec udot     = NULL;
+	Mat K_petsc  = K->pmatrix->matrix;
+	Vec Ml_petsc = Ml->pvector->vector;
+	Mat Mc_petsc = Mc->pmatrix->matrix;
+
+	/*Create D Matrix*/
+	CreateDMatrix(&D_petsc,K_petsc);
+
+	/*Create LHS: [ML − theta*detlat *(K+D)^n+1]*/
+	CreateLHS(&LHS,&dmax,K_petsc,D_petsc,Ml_petsc,theta,deltat,femmodel,configuration_type);
+
+	/*Get previous solution u^n*/
+	GetSolutionFromInputsx(&ug,femmodel);
+	Reducevectorgtofx(&uf, ug, femmodel->nodes,femmodel->parameters);
+	delete ug;
+
+	/*Create RHS: [ML + (1 − theta) deltaT L^n] u^n */
+	CreateRHS(&RHS,K_petsc,D_petsc,Ml_petsc,uf->pvector->vector,theta,deltat,dmax,femmodel,configuration_type);
+	delete uf;
+	
+	/*Go solve lower order solution*/
+	SolverxPetsc(&u,LHS,RHS,NULL,NULL, femmodel->parameters); 
+	MatFree(&LHS);
+	VecFree(&RHS);
+
+	/*Richardson to calculate udot*/
+	RichardsonUdot(&udot,u,Ml_petsc,K_petsc,Mc_petsc);
+	delete K;
+
+	/*Serialize u and udot*/
+	IssmDouble* udot_serial = NULL;
+	IssmDouble* u_serial    = NULL;
+	IssmDouble* ml_serial   = NULL;
+	VecToMPISerial(&udot_serial,udot    ,IssmComm::GetComm());
+	VecToMPISerial(&u_serial   ,u       ,IssmComm::GetComm());
+	VecToMPISerial(&ml_serial  ,Ml_petsc,IssmComm::GetComm());
+
+	/*Anti diffusive fluxes*/
+	Vec         Fbar            = NULL;
+	IssmDouble *Ri_minus_serial = NULL;
+	IssmDouble *Ri_plus_serial  = NULL;
+	IssmDouble *ulmin           = NULL;
+	IssmDouble *ulmax           = NULL;
+	femmodel->GetInputLocalMinMaxOnNodesx(&ulmin,&ulmax,u_serial);
+	CreateRis(&Ri_plus_serial,&Ri_minus_serial,Mc_petsc,D_petsc,ml_serial,u,u_serial,udot_serial,ulmin,ulmax,deltat);
+	CreateFbar(&Fbar,Ri_plus_serial,Ri_minus_serial,Mc_petsc,D_petsc,udot_serial,u_serial,u);
+	xDelete<IssmDouble>(Ri_plus_serial);
+	xDelete<IssmDouble>(Ri_minus_serial);
+	xDelete<IssmDouble>(ulmin);
+	xDelete<IssmDouble>(ulmax);
+
+	/*Clean up*/
+	MatFree(&D_petsc);
+	delete Mc;
+	xDelete<IssmDouble>(udot_serial);
+	xDelete<IssmDouble>(u_serial);
+	xDelete<IssmDouble>(ml_serial);
+
+	/*Compute solution u^n+1 = u_L + deltat Ml^-1 fbar*/
+	UpdateSolution(u,udot,Ml_petsc,Fbar,deltat);
+	uf =new Vector<IssmDouble>(u);
+	VecFree(&u);
+	VecFree(&Fbar);
+	VecFree(&udot);
+	delete Ml;
+
+	/*Update Element inputs*/
+	InputUpdateFromSolutionx(femmodel,uf); 
+	delete uf;
+
+	#else
+	_error_("PETSc needs to be installed");
+	#endif
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 21239)
@@ -0,0 +1,284 @@
+/*!\file: solutionsequence_hydro_nonlinear.cpp
+ * \brief: core of the hydro solution 
+ */ 
+
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+/*FIXME, dirty hack to get the solutionsequence linear needed to compute the slopes*/
+#include "../solutionsequences/solutionsequences.h"
+
+void solutionsequence_hydro_nonlinear(FemModel* femmodel){
+	/*solution : */
+	Vector<IssmDouble>* ug_sed=NULL; 
+	Vector<IssmDouble>* uf_sed=NULL; 
+	Vector<IssmDouble>* uf_sed_sub_iter=NULL; 
+	Vector<IssmDouble>* ug_sed_main_iter=NULL;
+
+	Vector<IssmDouble>* ug_epl=NULL; 
+	Vector<IssmDouble>* uf_epl=NULL;
+	Vector<IssmDouble>* uf_epl_sub_iter=NULL; 
+	Vector<IssmDouble>* ug_epl_sub_iter=NULL;
+	Vector<IssmDouble>* ug_epl_main_iter=NULL;
+
+	Vector<IssmDouble>* ys=NULL; 
+	Vector<IssmDouble>* dug=NULL;
+	Vector<IssmDouble>* duf=NULL;
+
+	Matrix<IssmDouble>* Kff=NULL;
+	Matrix<IssmDouble>* Kfs=NULL;
+
+	Vector<IssmDouble>* pf=NULL;
+	Vector<IssmDouble>* df=NULL;
+
+	HydrologyDCInefficientAnalysis* inefanalysis = NULL;
+	HydrologyDCEfficientAnalysis* effanalysis = NULL;
+	
+	bool       sedconverged,eplconverged,hydroconverged;
+	bool       isefficientlayer;
+	int        constraints_converged;
+	int        num_unstable_constraints;
+	int        sedcount,eplcount,hydrocount;
+	int        hydro_maxiter;
+	IssmDouble sediment_kmax;
+	IssmDouble eps_hyd;
+	IssmDouble ndu_sed,nu_sed;
+	IssmDouble ndu_epl,nu_epl;
+	IssmDouble ThickCount,L2Count;
+	
+	/*Recover parameters: */
+	femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
+	femmodel->parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum);
+	femmodel->parameters->FindParam(&hydro_maxiter,HydrologydcMaxIterEnum);
+	femmodel->parameters->FindParam(&eps_hyd,HydrologydcRelTolEnum);
+
+	hydrocount=1;
+	hydroconverged=false;
+	/*We don't need the outer loop if only one layer is used*/
+	if(!isefficientlayer) hydroconverged=true;
+
+	/*Retrieve inputs as the initial state for the non linear iteration*/
+	GetSolutionFromInputsx(&ug_sed,femmodel);	
+	Reducevectorgtofx(&uf_sed, ug_sed, femmodel->nodes,femmodel->parameters);
+
+	if(isefficientlayer) {
+		inefanalysis = new HydrologyDCInefficientAnalysis();
+		effanalysis = new HydrologyDCEfficientAnalysis();
+		femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
+		GetSolutionFromInputsx(&ug_epl,femmodel);
+		/*Initialize the element mask*/
+		inefanalysis->ElementizeEplMask(femmodel);
+		effanalysis->InitZigZagCounter(femmodel);
+	}
+	/*The real computation starts here, outermost loop is on the two layer system*/
+	for(;;){
+
+		sedcount=1;
+		eplcount=1;
+
+		/*If there is two layers we need an outer loop value to compute convergence*/
+		if(isefficientlayer){
+			ug_sed_main_iter=ug_sed->Duplicate();
+			ug_sed->Copy(ug_sed_main_iter);
+			ug_epl_main_iter=ug_epl->Duplicate();
+			ug_epl->Copy(ug_epl_main_iter);
+		}
+		/*Loop on sediment layer to deal with transfer and head value*/
+		femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
+		InputUpdateFromConstantx(femmodel,true,ResetPenaltiesEnum);
+		InputUpdateFromConstantx(femmodel,false,ConvergedEnum);
+		femmodel->UpdateConstraintsx();
+		femmodel->parameters->SetParam(HydrologySedimentEnum,HydrologyLayerEnum);
+		
+		/*Reset constraint on the ZigZag Lock*/
+		ResetConstraintsx(femmodel);
+
+		/*{{{*//*Treating the sediment*/
+		for(;;){
+			sedconverged=false;
+			uf_sed_sub_iter=uf_sed->Duplicate();_assert_(uf_sed_sub_iter);
+			uf_sed->Copy(uf_sed_sub_iter);
+			/*{{{*//*Loop on the sediment layer to deal with the penalization*/
+			for(;;){
+				/*{{{*/ /*Core of the computation*/
+				if(VerboseSolution()) _printf0_("Building Sediment Matrix...\n");
+				SystemMatricesx(&Kff,&Kfs,&pf,&df,&sediment_kmax,femmodel);
+				CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCInefficientAnalysisEnum);
+				Reduceloadx(pf,Kfs,ys); delete Kfs;
+				delete uf_sed;
+				Solverx(&uf_sed,Kff,pf,uf_sed_sub_iter,df,femmodel->parameters);
+				delete Kff; delete pf; delete df;
+				delete ug_sed;
+				Mergesolutionfromftogx(&ug_sed,uf_sed,ys,femmodel->nodes,femmodel->parameters); delete ys;
+				InputUpdateFromSolutionx(femmodel,ug_sed);
+				ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel);
+				/*}}}*/
+				if (!sedconverged){
+					if(VerboseConvergence()) _printf0_("   # Sediment unstable constraints = " << num_unstable_constraints << "\n");
+					if(num_unstable_constraints==0) sedconverged = true;
+					if (sedcount>=hydro_maxiter){
+						_error_("   maximum number of Sediment iterations (" << hydro_maxiter << ") exceeded");
+					}
+				}
+				/*Add an iteration and get out of the loop if the penalisation is converged*/
+				sedcount++;
+				if(sedconverged)break;
+			}
+		
+			/*}}}*//*End of the sediment penalization loop*/
+			sedconverged=false;
+			
+			/*Checking convegence on the value of the sediment head*/
+			duf=uf_sed_sub_iter->Duplicate();_assert_(duf);
+			uf_sed_sub_iter->Copy(duf);
+			duf->AYPX(uf_sed,-1.0);
+			ndu_sed=duf->Norm(NORM_TWO);
+			delete duf;
+			nu_sed=uf_sed_sub_iter->Norm(NORM_TWO);
+			if (xIsNan<IssmDouble>(ndu_sed) || xIsNan<IssmDouble>(nu_sed)) _error_("convergence criterion is NaN!");
+			if (ndu_sed==0.0 && nu_sed==0.0) nu_sed=1.0e-6; /*Hacking the case where the layer is empty*/
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "   Inner Sediment Convergence criterion:" << ndu_sed/nu_sed*100 << "%, aiming lower than " << eps_hyd*10*100 << " %\n");
+			if((ndu_sed/nu_sed)<eps_hyd*10.){
+				if(VerboseConvergence()) _printf0_("   # Inner sediment convergence achieve \n");
+				sedconverged=true;
+			}
+			delete uf_sed_sub_iter;
+			if(sedconverged){
+				femmodel->parameters->SetParam(sediment_kmax,HydrologySedimentKmaxEnum);
+				InputUpdateFromConstantx(femmodel,sedconverged,ConvergedEnum);
+				InputUpdateFromSolutionx(femmodel,ug_sed);
+				InputUpdateFromConstantx(femmodel,sediment_kmax,HydrologySedimentKmaxEnum);
+				break;
+			}
+		}
+		/*}}}*//*End of the global sediment loop*/
+		/*{{{*//*Now dealing with the EPL in the same way*/
+		if(isefficientlayer){
+			femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
+			/*updating mask*/
+			femmodel->HydrologyEPLupdateDomainx(&ThickCount);
+			inefanalysis->ElementizeEplMask(femmodel);
+			InputUpdateFromConstantx(femmodel,true,ResetPenaltiesEnum);
+			InputUpdateFromConstantx(femmodel,false,ConvergedEnum);
+			femmodel->parameters->SetParam(HydrologyEfficientEnum,HydrologyLayerEnum);
+
+			for(;;){
+				eplconverged=false;
+				ug_epl_sub_iter=ug_epl->Duplicate();_assert_(ug_epl_sub_iter);
+				ug_epl->Copy(ug_epl_sub_iter);
+				/*{{{*//*Retrieve the EPL head slopes and compute EPL Thickness*/
+				if(VerboseSolution()) _printf0_("computing EPL Head slope...\n");
+				//inefanalysis->ElementizeEplMask(femmodel);
+				femmodel->SetCurrentConfiguration(L2ProjectionEPLAnalysisEnum);
+				femmodel->UpdateConstraintsL2ProjectionEPLx(&L2Count);
+				inefanalysis->ElementizeEplMask(femmodel);
+				femmodel->parameters->SetParam(EplHeadSlopeXEnum,InputToL2ProjectEnum);
+				solutionsequence_linear(femmodel);
+				femmodel->parameters->SetParam(EplHeadSlopeYEnum,InputToL2ProjectEnum);
+				solutionsequence_linear(femmodel);
+
+				femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
+				effanalysis->ComputeEPLThickness(femmodel);
+				//updating mask after the computation of the epl thickness (Allow to close too thin EPL)
+				femmodel->HydrologyEPLupdateDomainx(&ThickCount);
+				inefanalysis->ElementizeEplMask(femmodel);
+				/*}}}*/
+					
+				if(VerboseSolution()) _printf0_("Building EPL Matrix...\n");
+				SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+				CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCEfficientAnalysisEnum);
+				Reduceloadx(pf,Kfs,ys); delete Kfs;
+				delete uf_epl;
+				Solverx(&uf_epl,Kff,pf,uf_epl_sub_iter,df,femmodel->parameters);
+				delete Kff; delete pf; delete df;
+				delete uf_epl_sub_iter;
+				uf_epl_sub_iter=uf_epl->Duplicate();
+				uf_epl->Copy(uf_epl_sub_iter);
+				delete ug_epl; 
+				Mergesolutionfromftogx(&ug_epl,uf_epl,ys,femmodel->nodes,femmodel->parameters); delete ys;
+				InputUpdateFromSolutionx(femmodel,ug_epl);
+				ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel);
+						
+				dug=ug_epl_sub_iter->Duplicate();_assert_(dug);
+				ug_epl_sub_iter->Copy(dug);
+				dug->AYPX(ug_epl,-1.0);
+				ndu_epl=dug->Norm(NORM_TWO);
+				delete dug;
+				nu_epl=ug_epl_sub_iter->Norm(NORM_TWO);
+				if (xIsNan<IssmDouble>(ndu_epl) || xIsNan<IssmDouble>(nu_epl)) _error_("convergence criterion is NaN!");
+				if (ndu_epl==0.0 && nu_epl==0.0) nu_epl=1.0e-6; /*Hacking the case where the EPL is used but empty*/
+				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Inner EPL Convergence criterion:" << ndu_epl/nu_epl*100 << "%, aiming lower than " << eps_hyd*10*100 << " %\n");
+				if((ndu_epl/nu_epl)<eps_hyd*10.) eplconverged=true;
+				if (eplcount>=hydro_maxiter){
+					_error_("   maximum number of EPL iterations (" << hydro_maxiter << ") exceeded");
+				}
+				//If there is some colapse go through sediment again
+				/* if(ThickCount<L2Count)eplconverged=true; */
+				/* eplcount++; */
+				
+				delete ug_epl_sub_iter;
+				if(eplconverged){
+					if(VerboseSolution()) _printf0_("eplconverged...\n");
+					InputUpdateFromConstantx(femmodel,eplconverged,ConvergedEnum);
+					InputUpdateFromSolutionx(femmodel,ug_epl);
+					effanalysis->ResetCounter(femmodel);
+					break;
+				}
+			}
+		}
+		/*}}}*/ /*End of the global EPL loop*/
+
+		/*{{{*/ /*Now dealing with the convergence of the whole system*/
+		if(!hydroconverged){
+			//compute norm(du)/norm(u)
+			dug=ug_sed_main_iter->Duplicate(); _assert_(dug);
+			ug_sed_main_iter->Copy(dug);	
+			dug->AYPX(ug_sed,-1.0);
+			ndu_sed=dug->Norm(NORM_TWO); 
+			delete dug;
+			nu_sed=ug_sed_main_iter->Norm(NORM_TWO);
+			delete ug_sed_main_iter;
+			if (xIsNan<IssmDouble>(ndu_sed) || xIsNan<IssmDouble>(nu_sed)) _error_("Sed convergence criterion is NaN!");
+			if (ndu_sed==0.0 && nu_sed==0.0) nu_sed=1.0e-6; /*Hacking the case where the Sediment is used but empty*/
+			dug=ug_epl_main_iter->Duplicate();_assert_(dug); 
+			ug_epl_main_iter->Copy(dug); 
+			dug->AYPX(ug_epl,-1.0);
+			ndu_epl=dug->Norm(NORM_TWO); 
+			delete dug;
+			nu_epl=ug_epl_main_iter->Norm(NORM_TWO);
+			delete ug_epl_main_iter;
+			if (xIsNan<IssmDouble>(ndu_epl) || xIsNan<IssmDouble>(nu_epl)) _error_("EPL convergence criterion is NaN!");
+			if (ndu_epl==0.0 && nu_epl==0.0) nu_epl=1.0e-6; /*Hacking the case where the EPL is used but empty*/
+			if (!xIsNan<IssmDouble>(eps_hyd)){
+				if ((ndu_epl/nu_epl)<eps_hyd && (ndu_sed/nu_sed)<(eps_hyd)){
+					if (VerboseConvergence()) _printf0_(setw(50) << left << "   Converged after, " << hydrocount << " iterations \n");
+					hydroconverged=true;
+				}
+				else{ 
+					if(VerboseConvergence()) _printf0_(setw(50) << left << "   Sediment Convergence criterion:" << ndu_sed/nu_sed*100 << "%, aiming lower than " << eps_hyd*100 << " %\n");
+					if(VerboseConvergence()) _printf0_(setw(50) << left << "   EPL Convergence criterion:" << ndu_epl/nu_epl*100 << "%, aiming lower than " << eps_hyd*100 << " %\n");
+					hydroconverged=false;
+				}
+			}
+			else _printf0_(setw(50) << left << "   Convergence criterion:" << ndu_sed/nu_sed*100 << " %\n");
+			if (hydrocount>=hydro_maxiter){
+				_error_("   maximum number for hydrological global iterations (" << hydro_maxiter << ") exceeded");
+			}
+		}
+		hydrocount++;
+		if(hydroconverged)break;
+	}
+	/*}}}*/
+	if(isefficientlayer)InputUpdateFromSolutionx(femmodel,ug_epl);
+	femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
+	InputUpdateFromSolutionx(femmodel,ug_sed);
+	/*Free ressources: */
+	delete ug_epl;
+	delete ug_sed;
+	delete uf_sed;
+	delete uf_epl;
+	delete uf_epl_sub_iter;
+	delete inefanalysis;
+	delete effanalysis;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_la.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_la.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_la.cpp	(revision 21239)
@@ -0,0 +1,147 @@
+/*!\file: solutionsequence_la.cpp
+ * \brief: numerical core of la solutions
+ */ 
+
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+void solutionsequence_la(FemModel* femmodel){
+
+	/*intermediary: */
+	Matrix<IssmDouble>*  Kff     = NULL;
+	Matrix<IssmDouble>*  Kfs     = NULL;
+	Vector<IssmDouble>*  ug      = NULL;
+	Vector<IssmDouble>*  uf      = NULL;
+	Vector<IssmDouble>*  pf      = NULL;
+	Vector<IssmDouble>*  df      = NULL;
+	Vector<IssmDouble>*  ys      = NULL;
+	Vector<IssmDouble>*  pug     = NULL;
+	Vector<IssmDouble>*  pug_old = NULL;
+	IssmDouble           eps_rel,r,theta; // 0<theta<.5   -> .15<theta<.45
+	int                  configuration_type,max_nonlinear_iterations;
+	bool                 vel_converged      = false;
+	bool                 pressure_converged = false;
+
+	/*Create analysis*/
+	StressbalanceAnalysis* stressanalysis   = new StressbalanceAnalysis();
+	UzawaPressureAnalysis* pressureanalysis = new UzawaPressureAnalysis();
+	femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
+	femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
+
+	/*Update constraints*/
+	femmodel->UpdateConstraintsx();
+
+	/*Convergence criterion*/
+	int  count       = 0;
+	int  count_local = 0;
+	Vector<IssmDouble>* vel           = NULL;
+	Vector<IssmDouble>* vel_old       = NULL;
+	Vector<IssmDouble>* vel_old_local = NULL;
+	GetVectorFromInputsx(&vel,femmodel,VxEnum,VertexPIdEnum);
+	GetVectorFromInputsx(&pug,femmodel,PressureEnum,VertexPIdEnum);
+
+	while(true){
+		count++;
+
+		/*save pointer to old velocity*/
+		delete vel_old;vel_old=vel->Duplicate(); vel->Copy(vel_old);
+		delete pug_old;pug_old=pug; 
+		pressure_converged=false; vel_converged=false;
+
+		while(true){
+			count_local++;
+			delete vel_old_local;vel_old_local=vel;
+			/*Solve KU=F*/
+			femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+			femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+			SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+			CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+			Reduceloadx(pf, Kfs, ys); delete Kfs;
+			Solverx(&uf, Kff, pf, NULL, df, femmodel->parameters); 
+			delete Kff; delete pf; delete df;
+			Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters);delete uf; delete ys;
+
+			/*Update solution*/
+			InputUpdateFromSolutionx(femmodel,ug); delete ug;
+			GetVectorFromInputsx(&vel,femmodel,VxEnum,VertexPIdEnum);
+			/*Check for convergence*/
+			Vector<IssmDouble>* dvel_local=vel_old_local->Duplicate(); vel_old_local->Copy(dvel_local); dvel_local->AYPX(vel,-1.0);
+			IssmDouble ndu=dvel_local->Norm(NORM_TWO);   delete dvel_local;
+			IssmDouble nu =vel_old_local->Norm(NORM_TWO);
+			if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error_("convergence criterion is NaN!");
+			if((ndu/nu)<eps_rel){
+				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " < " << eps_rel*100 << " %\n");
+				break;
+			}
+			else{ 
+				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " > " << eps_rel*100 << " %\n");
+			}
+			if(count_local>=max_nonlinear_iterations){
+				_printf0_("   maximum number of nonlinear iterations (" << max_nonlinear_iterations << ") exceeded\n"); 
+				break;
+			}
+		}
+		count_local=0;
+
+		femmodel->SetCurrentConfiguration(UzawaPressureAnalysisEnum);
+		femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+		SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+		Reduceloadx(pf, Kfs, ys); delete Kfs;
+		Solverx(&uf, Kff, pf, NULL, df, femmodel->parameters); 
+		delete Kff; delete pf; delete df;
+		Mergesolutionfromftogx(&pug, uf,ys,femmodel->nodes,femmodel->parameters); delete uf; delete ys;
+
+		/*Update solution*/
+		InputUpdateFromSolutionx(femmodel,pug); delete pug;
+		GetVectorFromInputsx(&pug,femmodel,PressureEnum,VertexPIdEnum);
+
+		/*Check for convergence*/
+		Vector<IssmDouble>* dvel=vel_old_local->Duplicate(); vel_old_local->Copy(dvel); dvel->AYPX(vel,-1.0);
+		IssmDouble ndu=dvel->Norm(NORM_TWO);   delete dvel;
+		IssmDouble nu =vel_old_local->Norm(NORM_TWO);
+		if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error_("convergence criterion is NaN!");
+		if((ndu/nu)<eps_rel){
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " < " << eps_rel*100 << " %\n");
+			vel_converged=true;
+		}
+		else{ 
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " > " << eps_rel*100 << " %\n");
+			vel_converged=false;
+		}
+		Vector<IssmDouble>* dup=pug_old->Duplicate(); pug_old->Copy(dup); dup->AYPX(pug,-1.0);
+		IssmDouble ndp=dup->Norm(NORM_TWO);   delete dup;
+		IssmDouble np =pug_old->Norm(NORM_TWO);
+		if (xIsNan<IssmDouble>(ndp) || xIsNan<IssmDouble>(np)) _error_("convergence criterion is NaN!");
+		if((ndp/np)<eps_rel){
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(dp)/norm(p)" << ndp/np*100 << " < " << eps_rel*100 << " %\n");
+			pressure_converged=true;
+		}
+		else{ 
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(dp/)/norm(p)" << ndp/np*100 << " > " << eps_rel*100 << " %\n");
+			pressure_converged=false;
+		}
+
+		if(pressure_converged && vel_converged) break;
+		if(count>=max_nonlinear_iterations){
+			_printf0_("   maximum number of nonlinear iterations (" << max_nonlinear_iterations << ") exceeded\n"); 
+			break;
+		}
+	}
+
+	if(VerboseConvergence()) _printf0_("\n   total number of iterations: " << count-1 << "\n");
+
+	delete pug;  
+	delete pug_old;  
+	delete vel;  
+	delete vel_old;  
+	delete vel_old_local;  
+	delete stressanalysis;
+	delete pressureanalysis;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_la_theta.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_la_theta.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_la_theta.cpp	(revision 21239)
@@ -0,0 +1,102 @@
+/*!\file: solutionsequence_la_theta.cpp
+ * \brief: numerical core of la_theta solutions
+ */ 
+
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+void solutionsequence_la_theta(FemModel* femmodel){
+
+	/*intermediary: */
+	Matrix<IssmDouble>*  Kff    = NULL;
+	Matrix<IssmDouble>*  Kfs    = NULL;
+	Vector<IssmDouble>*  ug_old = NULL;
+	Vector<IssmDouble>*  ug     = NULL;
+	Vector<IssmDouble>*  uf     = NULL;
+	Vector<IssmDouble>*  pf     = NULL;
+	Vector<IssmDouble>*  df     = NULL;
+	Vector<IssmDouble>*  ys     = NULL;
+	IssmDouble           eps_rel,r,theta; // 0<theta<.5   -> .15<theta<.45
+	int                  configuration_type,max_nonlinear_iterations;
+
+	/*Create analysis*/
+	StressbalanceAnalysis* analysis = new StressbalanceAnalysis();
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
+	femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
+	femmodel->parameters->FindParam(&r,AugmentedLagrangianREnum);
+	femmodel->parameters->FindParam(&theta,AugmentedLagrangianThetaEnum);
+
+	/*Update constraints and initialize d and tau if necessary*/
+	femmodel->UpdateConstraintsx();
+	analysis->InitializeXTH(femmodel->elements,femmodel->parameters);
+
+	/*Convergence criterion*/
+	int  count = 0;
+	GetSolutionFromInputsx(&ug,femmodel);
+	Vector<IssmDouble>* vx     = NULL;
+	Vector<IssmDouble>* vx_old = NULL;
+	GetVectorFromInputsx(&vx,femmodel,VxEnum,VertexPIdEnum);
+
+	while(true){
+		count++;
+
+		/*save pointer to old velocity*/
+		delete ug_old;ug_old=ug;
+		delete vx_old;vx_old=vx;
+
+		/*Calculate d*/
+		if(theta>0.){
+			analysis->InputUpdateFromSolutionFSXTH_d(femmodel->elements,femmodel->parameters);
+		}
+
+		/*Solve KU=F*/
+		SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+		Reduceloadx(pf, Kfs, ys); delete Kfs;
+		Solverx(&uf, Kff, pf, NULL, df, femmodel->parameters); 
+		delete Kff; delete pf; delete df;
+		Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters);delete uf; delete ys;
+
+		/*Update solution*/
+		InputUpdateFromSolutionx(femmodel,ug); 
+
+		/*Update d and tau accordingly*/
+		analysis->InputUpdateFromSolutionFSXTH_d(  femmodel->elements,femmodel->parameters);
+		analysis->InputUpdateFromSolutionFSXTH_tau(femmodel->elements,femmodel->parameters);
+		GetVectorFromInputsx(&vx,femmodel,VxEnum,VertexPIdEnum);
+
+		/*Check for convergence*/
+		//Vector<IssmDouble>* dug=ug_old->Duplicate(); ug_old->Copy(dug); dug->AYPX(ug,-1.0);
+		//IssmDouble ndu=dug->Norm(NORM_TWO);   delete dug;
+		//IssmDouble nu =ug_old->Norm(NORM_TWO);
+		Vector<IssmDouble>* dvx=vx_old->Duplicate(); vx_old->Copy(dvx); dvx->AYPX(vx,-1.0);
+		IssmDouble ndu=dvx->Norm(NORM_TWO);   delete dvx;
+		IssmDouble nu =vx_old->Norm(NORM_TWO);
+		if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error_("convergence criterion is NaN!");
+		if((ndu/nu)<eps_rel){
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " < " << eps_rel*100 << " %\n");
+			break;
+		}
+		else{ 
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " > " << eps_rel*100 << " %\n");
+		}
+
+		if(count>=max_nonlinear_iterations){
+			_printf0_("   maximum number of nonlinear iterations (" << max_nonlinear_iterations << ") exceeded\n"); 
+			break;
+		}
+	}
+
+	if(VerboseConvergence()) _printf0_("\n   total number of iterations: " << count-1 << "\n");
+
+	delete ug;  
+	delete ug_old;  
+	delete vx;  
+	delete vx_old;  
+	delete analysis;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_linear.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_linear.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_linear.cpp	(revision 21239)
@@ -0,0 +1,64 @@
+/*!\file: solutionsequence_linear.cpp
+ * \brief: numerical core of linear solutions
+ */ 
+
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+void solutionsequence_linear(FemModel* femmodel){
+
+	/*intermediary: */
+	Matrix<IssmDouble>*  Kff = NULL;
+	Matrix<IssmDouble>*  Kfs = NULL;
+	Vector<IssmDouble>*  ug  = NULL;
+	Vector<IssmDouble>*  uf  = NULL;
+	Vector<IssmDouble>*  pf  = NULL;
+	Vector<IssmDouble>*  df  = NULL;
+	Vector<IssmDouble>*  ys  = NULL;
+	int  configuration_type;
+	
+	/*solver convergence test: */
+	IssmDouble nKUF;
+	IssmDouble nF;
+	IssmDouble solver_residue;
+	Vector<IssmDouble>* KU=NULL;
+	Vector<IssmDouble>* KUF=NULL;
+
+
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	femmodel->UpdateConstraintsx();
+	SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+	CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+	Reduceloadx(pf, Kfs, ys); delete Kfs;
+	Solverx(&uf, Kff, pf, NULL, df, femmodel->parameters); 
+	
+	/*Check that the solver converged nicely: */
+		
+	//compute KUF = KU - F = K*U - F
+	KU=uf->Duplicate(); Kff->MatMult(uf,KU);
+	KUF=KU->Duplicate(); KU->Copy(KUF); KUF->AYPX(pf,-1.0);
+
+	//compute norm(KUF), norm(F) and residue
+	nKUF=KUF->Norm(NORM_TWO);
+	nF=pf->Norm(NORM_TWO);
+	solver_residue=nKUF/nF;
+	if(solver_residue>1.e-6)_error_("   solver residue too high!: norm(KU-F)/norm(F)=" << solver_residue << "\n");
+
+	//clean up
+	delete KU; delete KUF;
+	delete Kff; delete pf; delete df;
+
+	//#ifdef  _HAVE_ADOLC_
+	//        for (int i =0; i<uf->svector->M; ++i) {
+	//          ADOLC_DUMP_MACRO(uf->svector->vector[i]);
+	//        }
+	//#endif
+	
+	Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters);delete uf; delete ys;
+	InputUpdateFromSolutionx(femmodel,ug); 
+	delete ug;  
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_newton.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_newton.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_newton.cpp	(revision 21239)
@@ -0,0 +1,109 @@
+/*!\file: solutionsequence_nonlinear.cpp
+ * \brief: core of a non-linear solution, using fixed-point method 
+ */ 
+
+#include "./solutionsequences.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+void solutionsequence_newton(FemModel* femmodel){
+
+	/*intermediary: */
+	bool   converged;
+	int    count,newton;
+	IssmDouble kmax;
+	Matrix<IssmDouble>* Kff = NULL;
+	Matrix<IssmDouble>* Kfs    = NULL;
+	Matrix<IssmDouble>* Jff = NULL;
+	Vector<IssmDouble>* ug  = NULL;
+	Vector<IssmDouble>* old_ug = NULL;
+	Vector<IssmDouble>* uf  = NULL;
+	Vector<IssmDouble>* old_uf = NULL;
+	Vector<IssmDouble>* duf = NULL;
+	Vector<IssmDouble>* pf  = NULL;
+	Vector<IssmDouble>* pJf    = NULL;
+	Vector<IssmDouble>* df  = NULL;
+	Vector<IssmDouble>* ys  = NULL;
+
+	/*parameters:*/
+	int max_nonlinear_iterations;
+	int configuration_type;
+	IssmDouble eps_res,eps_rel,eps_abs;
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	femmodel->parameters->FindParam(&newton,StressbalanceIsnewtonEnum);
+	femmodel->parameters->FindParam(&eps_res,StressbalanceRestolEnum);
+	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
+	femmodel->parameters->FindParam(&eps_abs,StressbalanceAbstolEnum);
+	femmodel->UpdateConstraintsx();
+
+	count=1;
+	converged=false;
+
+	/*Start non-linear iteration using input velocity: */
+	GetSolutionFromInputsx(&ug,femmodel);
+	Reducevectorgtofx(&uf,ug,femmodel->nodes,femmodel->parameters);
+
+	//Update once again the solution to make sure that vx and vxold are similar (for next step in transient or steadystate)
+	InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
+	InputUpdateFromSolutionx(femmodel,ug);
+
+	for(;;){
+
+		delete old_ug;old_ug=ug;
+		delete old_uf;old_uf=uf;
+
+		/*Solver forward model*/
+		if(count==1 || newton==2){
+			SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+			CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+			Reduceloadx(pf,Kfs,ys);delete Kfs;
+			Solverx(&uf,Kff,pf,old_uf,df,femmodel->parameters);delete df; delete Kff; delete pf;
+			Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);delete ys;
+			InputUpdateFromSolutionx(femmodel,ug);
+			delete old_ug;old_ug=ug;
+			delete old_uf;old_uf=uf;
+		}
+		uf=old_uf->Duplicate(); old_uf->Copy(uf);
+
+		/*Prepare next iteration using Newton's method*/
+		SystemMatricesx(&Kff,&Kfs,&pf,&df,&kmax,femmodel);delete df;
+		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+		Reduceloadx(pf,Kfs,ys);delete Kfs;
+
+		pJf=pf->Duplicate();
+		Kff->MatMult(uf,pJf);
+		pJf->Scale(-1.0); pJf->AXPY(pf,+1.0);
+
+		CreateJacobianMatrixx(&Jff,femmodel,kmax);
+		Solverx(&duf,Jff,pJf,NULL,NULL,femmodel->parameters); delete Jff; delete pJf;
+		uf->AXPY(duf, 1.0); delete duf;
+		Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);delete ys;
+		InputUpdateFromSolutionx(femmodel,ug);
+
+		/*Check convergence*/
+		convergence(&converged,Kff,pf,uf,old_uf,eps_res,eps_rel,eps_abs); 
+		delete Kff; delete pf;
+		if(converged==true){	
+			break;
+		}
+		if(count>=max_nonlinear_iterations){
+			_printf0_("   maximum number of Newton iterations (" << max_nonlinear_iterations << ") exceeded\n"); 
+			break;
+		}
+
+		count++;
+	}
+
+	if(VerboseConvergence()) _printf0_("\n   total number of iterations: " << count-1 << "\n");
+
+	/*clean-up*/
+	delete uf;
+	delete ug;
+	delete old_ug;
+	delete old_uf;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_nonlinear.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_nonlinear.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_nonlinear.cpp	(revision 21239)
@@ -0,0 +1,113 @@
+/*!\file: solutionsequence_nonlinear.cpp
+ * \brief: core of a non-linear solution, using fixed-point method 
+ */ 
+
+#include "./solutionsequences.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+void solutionsequence_nonlinear(FemModel* femmodel,bool conserve_loads){
+
+	/*intermediary: */
+	Matrix<IssmDouble>* Kff = NULL;
+	Matrix<IssmDouble>* Kfs = NULL;
+	Vector<IssmDouble>* ug  = NULL;
+	Vector<IssmDouble>* uf  = NULL;
+	Vector<IssmDouble>* old_uf = NULL;
+	Vector<IssmDouble>* pf  = NULL;
+	Vector<IssmDouble>* df  = NULL;
+	Vector<IssmDouble>* ys  = NULL;
+
+	Loads* savedloads=NULL;
+	bool converged;
+	int constraints_converged;
+	int num_unstable_constraints;
+	int count;
+
+	/*parameters:*/
+	int min_mechanical_constraints;
+	int max_nonlinear_iterations;
+	int configuration_type;
+	IssmDouble eps_res,eps_rel,eps_abs;
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&min_mechanical_constraints,StressbalanceRiftPenaltyThresholdEnum);
+	femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
+	femmodel->parameters->FindParam(&eps_res,StressbalanceRestolEnum);
+	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
+	femmodel->parameters->FindParam(&eps_abs,StressbalanceAbstolEnum);
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	femmodel->UpdateConstraintsx();
+
+	/*Were loads requested as output? : */
+	if(conserve_loads){
+		savedloads = static_cast<Loads*>(femmodel->loads->Copy());
+	}
+
+	count=0;
+	converged=false;
+
+	/*Start non-linear iteration using input velocity: */
+	GetSolutionFromInputsx(&ug,femmodel);
+	Reducevectorgtofx(&uf, ug, femmodel->nodes,femmodel->parameters);
+
+	//Update once again the solution to make sure that vx and vxold are similar (for next step in transient or steadystate)
+	InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
+	InputUpdateFromSolutionx(femmodel,ug);
+
+	for(;;){
+
+		//save pointer to old velocity
+		delete old_uf;old_uf=uf;
+		delete ug;
+
+		SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+		Reduceloadx(pf, Kfs, ys); delete Kfs;
+		Solverx(&uf, Kff, pf, old_uf, df, femmodel->parameters);
+		Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters);delete ys;
+
+		convergence(&converged,Kff,pf,uf,old_uf,eps_res,eps_rel,eps_abs); delete Kff; delete pf; delete df;
+		InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
+		InputUpdateFromSolutionx(femmodel,ug);
+
+		ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel);
+		if(VerboseConvergence()) _printf0_("   number of unstable constraints: " << num_unstable_constraints << "\n");
+
+		//rift convergence
+		if (!constraints_converged) {
+			if (converged){
+				if (num_unstable_constraints <= min_mechanical_constraints) converged=true;
+				else converged=false;
+			}
+		}
+
+		/*Increase count: */
+		count++;
+		if(converged==true){
+			femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,StressbalanceConvergenceNumStepsEnum,count));
+			break;
+		}
+		if(count>=max_nonlinear_iterations){
+			_printf0_("   maximum number of nonlinear iterations (" << max_nonlinear_iterations << ") exceeded\n"); 
+			converged=true;
+			femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,StressbalanceConvergenceNumStepsEnum,max_nonlinear_iterations));
+			InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
+			InputUpdateFromSolutionx(femmodel,ug);		
+			break;
+		}
+	}
+
+	if(VerboseConvergence()) _printf0_("\n   total number of iterations: " << count-1 << "\n");
+
+	/*clean-up*/
+	if(conserve_loads){
+		delete femmodel->loads;
+		femmodel->loads=savedloads;
+	}
+	delete uf;
+	delete ug;
+	delete old_uf;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp	(revision 21239)
@@ -0,0 +1,104 @@
+/*!\file: solutionsequence_FScoupling_nonlinear.cpp
+ * \brief: core of the coupling between FS and SSAHO
+ */ 
+
+#include "./solutionsequences.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+void solutionsequence_FScoupling_nonlinear(FemModel* femmodel,bool conserve_loads){
+
+	/*intermediary: */
+	Matrix<IssmDouble> *Kff_horiz    = NULL;
+	Matrix<IssmDouble> *Kfs_horiz    = NULL;
+	Vector<IssmDouble> *ug_horiz     = NULL;
+	Vector<IssmDouble> *uf_horiz     = NULL;
+	Vector<IssmDouble> *old_uf_horiz = NULL;
+	Vector<IssmDouble> *pf_horiz     = NULL;
+	Vector<IssmDouble> *df_horiz     = NULL;
+	Matrix<IssmDouble> *Kff_vert     = NULL;
+	Matrix<IssmDouble> *Kfs_vert     = NULL;
+	Vector<IssmDouble> *ug_vert      = NULL;
+	Vector<IssmDouble> *uf_vert      = NULL;
+	Vector<IssmDouble> *pf_vert      = NULL;
+	Vector<IssmDouble> *df_vert      = NULL;
+	Vector<IssmDouble> *ys           = NULL;
+	bool converged;
+	int  count;
+
+	/*parameters:*/
+	int  min_mechanical_constraints;
+	int  max_nonlinear_iterations;
+	int  configuration_type;
+	IssmDouble eps_res,eps_rel,eps_abs;
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&min_mechanical_constraints,StressbalanceRiftPenaltyThresholdEnum);
+	femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
+	femmodel->parameters->FindParam(&eps_res,StressbalanceRestolEnum);
+	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
+	femmodel->parameters->FindParam(&eps_abs,StressbalanceAbstolEnum);
+	femmodel->UpdateConstraintsx();
+
+	count=1;
+	converged=false;
+
+	/*First get ug_horiz:*/
+	femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+	GetSolutionFromInputsx(&ug_horiz,femmodel);
+	Reducevectorgtofx(&uf_horiz, ug_horiz, femmodel->nodes,femmodel->parameters);
+
+	for(;;){
+
+		/*First stressbalance horiz:*/
+		femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+		femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+
+		//Update once again the solution to make sure that vx and vxold are similar (for next step in transient or steadystate)
+		InputUpdateFromSolutionx(femmodel,ug_horiz);
+		delete ug_horiz;
+
+		//save pointer to old velocity
+		delete old_uf_horiz; old_uf_horiz=uf_horiz;
+
+		/*solve: */
+		SystemMatricesx(&Kff_horiz, &Kfs_horiz, &pf_horiz, &df_horiz, NULL,femmodel);
+		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+		Reduceloadx(pf_horiz, Kfs_horiz, ys); delete Kfs_horiz;
+		Solverx(&uf_horiz, Kff_horiz, pf_horiz, old_uf_horiz, df_horiz,femmodel->parameters);
+		Mergesolutionfromftogx(&ug_horiz, uf_horiz,ys,femmodel->nodes,femmodel->parameters); delete ys;
+		InputUpdateFromSolutionx(femmodel,ug_horiz);
+
+		convergence(&converged,Kff_horiz,pf_horiz,uf_horiz,old_uf_horiz,eps_res,eps_rel,eps_abs); delete Kff_horiz; delete pf_horiz; delete df_horiz;
+
+		/*Second compute vertical velocity: */
+		femmodel->SetCurrentConfiguration(StressbalanceVerticalAnalysisEnum);
+		femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+
+		/*solve: */
+		SystemMatricesx(&Kff_vert, &Kfs_vert, &pf_vert, &df_vert,NULL,femmodel);
+		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+		Reduceloadx(pf_vert, Kfs_vert, ys); delete Kfs_vert;
+		Solverx(&uf_vert, Kff_vert, pf_vert, NULL, df_vert,femmodel->parameters); delete Kff_vert; delete pf_vert; delete df_vert;
+		Mergesolutionfromftogx(&ug_vert, uf_vert,ys,femmodel->nodes,femmodel->parameters);
+		delete uf_vert; 
+		delete ys; 
+		InputUpdateFromSolutionx(femmodel,ug_vert);
+		delete ug_vert;
+
+		/*Increase count: */
+		count++;
+		if(converged==true)break;
+		if(count>=max_nonlinear_iterations){
+			_printf0_("   maximum number of iterations (" << max_nonlinear_iterations << ") exceeded\n"); 
+			break;
+		}
+	}
+
+	/*clean-up*/
+	delete old_uf_horiz;
+	delete uf_horiz;
+	delete ug_horiz;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp	(revision 21239)
@@ -0,0 +1,137 @@
+/*!\file: solutionsequence_thermal_nonlinear.cpp
+ * \brief: core of the thermal solution 
+ */ 
+
+#include "./solutionsequences.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+void solutionsequence_thermal_nonlinear(FemModel* femmodel){
+
+	/*solution : */
+	Vector<IssmDouble>* tg=NULL; 
+	Vector<IssmDouble>* tf=NULL; 
+	Vector<IssmDouble>* tf_old=NULL; 
+	Vector<IssmDouble>* ys=NULL; 
+	IssmDouble melting_offset;
+
+	/*intermediary: */
+	Matrix<IssmDouble>* Kff=NULL;
+	Matrix<IssmDouble>* Kfs=NULL;
+	Vector<IssmDouble>* pf=NULL;
+	Vector<IssmDouble>* df=NULL;
+
+	bool converged;
+	bool isenthalpy, isdynamicbasalspc;
+	int constraints_converged;
+	int num_unstable_constraints;
+	int count;
+	int thermal_penalty_threshold;
+	int thermal_maxiter;
+
+	/*parameters:*/
+	int  configuration_type;
+	IssmDouble eps_rel;
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	femmodel->parameters->FindParam(&thermal_maxiter,ThermalMaxiterEnum);
+
+	converged=false;
+	InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
+
+	if(isenthalpy){
+		femmodel->parameters->FindParam(&isdynamicbasalspc,ThermalIsdynamicbasalspcEnum);
+		femmodel->parameters->FindParam(&eps_rel,ThermalReltolEnum);
+		femmodel->UpdateConstraintsx();
+
+		//Update the solution to make sure that tf and tf_old are similar (for next step in transient or steadystate)
+		GetSolutionFromInputsx(&tg,femmodel);
+		Reducevectorgtofx(&tf, tg, femmodel->nodes,femmodel->parameters);
+		InputUpdateFromSolutionx(femmodel,tg);
+	}
+	else{
+		femmodel->parameters->FindParam(&thermal_penalty_threshold,ThermalPenaltyThresholdEnum);
+		InputUpdateFromConstantx(femmodel,true,ResetPenaltiesEnum);
+		femmodel->UpdateConstraintsx();
+	}
+
+	count=1;
+	
+	for(;;){
+		delete tf_old;tf_old=tf;
+
+		if(isenthalpy){ 
+			SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+			/*Update old solution, such that sizes of tf_old and tf are comparable*/
+			if(isdynamicbasalspc){
+				delete tf_old;
+				Reducevectorgtofx(&tf_old, tg, femmodel->nodes,femmodel->parameters);
+			}
+		}
+		else SystemMatricesx(&Kff, &Kfs, &pf,&df, &melting_offset,femmodel);
+		delete tg;
+		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+		Reduceloadx(pf, Kfs, ys); delete Kfs;
+		Solverx(&tf, Kff, pf, tf_old, df, femmodel->parameters);
+		Mergesolutionfromftogx(&tg, tf,ys,femmodel->nodes,femmodel->parameters); delete ys;
+		if(isenthalpy){ 
+			convergence(&converged,Kff,pf,tf,tf_old,0.05,eps_rel,NAN); 
+			InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
+		}
+		delete Kff; delete pf; delete df;
+		InputUpdateFromSolutionx(femmodel,tg);
+		ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel);
+		if(VerboseConvergence()) _printf0_("   number of unstable constraints: " << num_unstable_constraints << "\n");
+
+		if(isenthalpy){ // enthalpy method
+			IssmDouble dt;
+			femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+
+			count++;
+			bool max_iteration_state=false;
+			if(count>=thermal_maxiter){
+				_printf0_("   maximum number of nonlinear iterations (" << thermal_maxiter << ") exceeded\n"); 
+				converged=true;
+				InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
+				InputUpdateFromSolutionx(femmodel,tg);		
+				max_iteration_state=true;
+			}
+			if(converged==true){
+				break;
+			}
+			else if(dt==0.){
+				EnthalpyAnalysis::ComputeBasalMeltingrate(femmodel);
+				EnthalpyAnalysis::UpdateBasalConstraints(femmodel);
+			}
+		}
+		else{ // dry ice method
+			if(!converged){
+				if(num_unstable_constraints<=thermal_penalty_threshold) converged=true;
+				if(count>=thermal_maxiter){
+					converged=true;
+					_printf0_("   maximum number of iterations (" << thermal_maxiter << ") exceeded\n"); 
+				}
+			}
+			count++;
+			InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
+			if(converged)break;
+		}
+	}
+
+	if(isenthalpy){
+		if(VerboseConvergence()) _printf0_("\n   total number of iterations: " << count-1 << "\n");
+	}
+	else{
+		InputUpdateFromSolutionx(femmodel,tg);
+		femmodel->parameters->SetParam(melting_offset,MeltingOffsetEnum);
+	}
+
+	/*Free ressources: */
+	delete tg;
+	delete tf;
+	delete tf_old;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequences.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequences.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/solutionsequences/solutionsequences.h	(revision 21239)
@@ -0,0 +1,28 @@
+/*
+ * solutionsequences.h: 
+ */
+
+#ifndef _SOLUTION_SEQUENCES_H_
+#define _SOLUTION_SEQUENCES_H_
+
+class FemModel;
+class Parameters;
+template <class doubletype> class Matrix;
+template <class doubletype> class Vector;
+#include "../shared/Numerics/types.h"
+
+void solutionsequence_thermal_nonlinear(FemModel* femmodel);
+void solutionsequence_hydro_nonlinear(FemModel* femmodel);
+void solutionsequence_nonlinear(FemModel* femmodel,bool conserve_loads);
+void solutionsequence_newton(FemModel* femmodel);
+void solutionsequence_fct(FemModel* femmodel);
+void solutionsequence_FScoupling_nonlinear(FemModel* femmodel,bool conserve_loads);
+void solutionsequence_linear(FemModel* femmodel);
+void solutionsequence_la(FemModel* femmodel);
+void solutionsequence_la_theta(FemModel* femmodel);
+void solutionsequence_adjoint_linear(FemModel* femmodel);
+
+/*convergence*/
+void convergence(bool* pconverged, Matrix<IssmDouble>* K_ff,Vector<IssmDouble>* p_f,Vector<IssmDouble>* u_f,Vector<IssmDouble>* u_f_old,IssmDouble eps_res,IssmDouble eps_rel,IssmDouble eps_abs);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/ToolkitOptions.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/ToolkitOptions.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/ToolkitOptions.cpp	(revision 21239)
@@ -0,0 +1,92 @@
+/*! \file ToolkitOptions.cpp
+ * \brief  file containing the methods for ToolkitOptions.h
+ */
+
+#include <string.h>
+#include "./ToolkitOptions.h"
+#include "../shared/Numerics/types.h"
+#include "../shared/Exceptions/exceptions.h"
+#include "../shared/MemOps/MemOps.h"
+
+void ToolkitOptions::Init(char* options){ /*{{{*/
+
+	/*First, avoid a leak: */
+	xDelete<char>(toolkitoptions);
+
+	/*copy options into toolkitoptions:*/
+	_assert_(options);
+	toolkitoptions= xNew<char>(strlen(options)+1); 
+	sprintf(toolkitoptions,   "%s",options);
+
+}/*}}}*/
+char* ToolkitOptions::GetToolkitType(){  /*{{{*/
+
+	/*Look for token: -toolkit, and return value:*/
+
+	return TokenValue(toolkitoptions,"toolkit");
+
+}/*}}}*/
+char* ToolkitOptions::GetToolkitOptionValue(const char* option){  /*{{{*/
+
+	return TokenValue(toolkitoptions,option);
+
+}/*}}}*/
+char* TokenValue(char* tokenlist,const char* target){ /*{{{*/
+
+	/*output:*/
+	char* value=NULL;
+
+	/*intermediary: */
+	char *token         = NULL;
+	char *tokenlistcopy = NULL;
+
+	/*First, because tokenizing destroys a string, copy what we have: */
+	_assert_(tokenlist);
+	tokenlistcopy= xNew<char>(strlen(tokenlist)+1); 
+	sprintf(tokenlistcopy,"%s",tokenlist);
+
+	/*Now go through list of tokens, and look for  target, return value: */
+	token=strtok(tokenlistcopy, " ");
+	while(token != NULL) {
+
+		/*Is this token starting with "-", if so, compare to our target: */
+		if (strncmp(token,"-",1)==0){
+			if (strcmp(token+1,target)==0){
+				/*Ok, we found our target. Get next token: */
+				token = strtok(NULL, " ");
+				/*This token could actually be another option start with "-", just be sure: */
+				if (strncmp(token,"-",1)==0){
+					/*ok, we hit another option, which means our target value is "":*/
+					value= xNew<char>(strlen("")+1); 
+					sprintf(value,"%s","");
+					continue;
+				}
+				else{
+					/*this token is the value we are looking for, copy: */
+					value= xNew<char>(strlen(token)+1); 
+					sprintf(value,"%s",token);
+				}
+			}
+			else{
+				/*we found the wrong target. Go to the next option: */
+				token = strtok(NULL, " ");
+				if (strncmp(token,"-",1)==0){
+					/*this is indeed an option, continue: */
+					continue;
+				}
+				else{
+					/*this is the value of the option, discard it: */
+				}
+			}
+		}
+		else _error_("token list should start with an option, not a value");
+
+		/*Get new token and continue*/
+		token = strtok(NULL, " ");
+	}
+
+	/*Clean up and return*/
+	xDelete<char>(tokenlistcopy);
+	return value;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/ToolkitOptions.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/ToolkitOptions.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/ToolkitOptions.h	(revision 21239)
@@ -0,0 +1,23 @@
+/* \file ToolkitOptions.h
+ * \brief  create a class with a static string of options, and static methods to access it
+ * This is a way of protecting access to the toolkit options, and to make it accessible everywhere
+ * in the code.
+ */
+
+#ifndef _TOOLKIT_OPTIONS_H
+#define _TOOLKIT_OPTIONS_H
+
+class ToolkitOptions {
+
+	private:
+		static char* toolkitoptions;
+
+	public:
+		static void Init(char* options);
+		static char* GetToolkitType(void);
+		static char* GetToolkitOptionValue(const char* option);
+};
+
+char* TokenValue(char* tokenlist,const char* target);
+
+#endif  /* _TOOLKIT_OPTIONS_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/adolc/AdolcEdf.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/adolc/AdolcEdf.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/adolc/AdolcEdf.h	(revision 21239)
@@ -0,0 +1,33 @@
+/*
+ * adolc_edf.h
+ *
+ *  Created on: Jun 26, 2012
+ *      Author: utke
+ */
+
+#ifndef _ADOLC_EDF_H_
+#define _ADOLC_EDF_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)
+#include "adolc/adolc.h"
+
+struct Adolc_edf {
+    ext_diff_fct *myEDF_for_solverx_p;
+    Adolc_edf() : myEDF_for_solverx_p(0) {}
+    inline friend std::ostream& operator << ( ostream&, const Adolc_edf& );
+};
+
+std::ostream& operator << ( std::ostream& out, const Adolc_edf& a) {
+    out << a.myEDF_for_solverx_p;
+    return out;
+}
+
+#endif
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/adolc/adolcincludes.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/adolc/adolcincludes.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/adolc/adolcincludes.h	(revision 21239)
@@ -0,0 +1,10 @@
+/* \file adolcincludes.h
+ * \brief all includes for ADOLC layer
+ */
+
+#ifndef _ADOLC_PATCHES_INCLUDES_H_
+#define _ADOLC_PATCHES_INCLUDES_H_
+
+#include "./AdolcEdf.h"
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/gsl/DenseGslSolve.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/gsl/DenseGslSolve.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/gsl/DenseGslSolve.cpp	(revision 21239)
@@ -0,0 +1,242 @@
+/*!\file DenseGslSolve.cpp
+ * \brief: solve dense matrix system with GSL library
+ */
+
+/*Header files: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/shared.h"
+#include "../../classes/Params/GenericParam.h"
+#include "../../classes/Params/Parameters.h"
+#include "../adolc/adolcincludes.h"
+#include "./gslincludes.h"
+
+#ifdef _HAVE_GSL_
+#include <gsl/gsl_linalg.h>
+#endif
+
+/*}}}*/
+
+void DenseGslSolve(IssmPDouble** pX,IssmPDouble* A,IssmPDouble* B, int n){ /*{{{*/
+
+	/*Intermediary: */
+	IssmPDouble *X  = xNew<IssmPDouble>(n);
+	SolverxSeq(X,A,B,n);
+
+	/*allocate output pointers: */
+	*pX=X;
+}
+/*}}}*/
+void DenseGslSolve(IssmPDouble** px,IssmPDouble* Kff,int Kff_M,int Kff_N,IssmPDouble* pf,int pf_M,Parameters* parameters){ /*{{{*/
+
+	/*Intermediary: */
+
+	if(Kff_N!=pf_M)_error_("Right hand side vector of size " << pf_M << ", when matrix is of size " << Kff_M << "-" << Kff_N << " !");
+	if(Kff_M!=Kff_N)_error_("Stiffness matrix should be square!");
+
+	IssmPDouble *x  = xNew<IssmPDouble>(Kff_N);
+	SolverxSeq(x,Kff,pf,Kff_N);
+
+	/*allocate output pointers: */
+	*px=x;
+}
+/*}}}*/
+void SolverxSeq(IssmPDouble *X, IssmPDouble *A, IssmPDouble *B,int n){ /*{{{*/
+#ifdef _HAVE_GSL_
+	/*GSL Matrices and vectors: */
+	int              s;
+	gsl_matrix_view  a;
+	gsl_vector_view  b,x;
+	gsl_permutation *p = NULL;
+//	for (int i=0; i<n*n; ++i) std::cout << "SolverxSeq A["<< i << "]=" << A[i] << std::endl;
+//	for (int i=0; i<n; ++i) std::cout << "SolverxSeq b["<< i << "]=" << B[i] << std::endl;
+	/*A will be modified by LU decomposition. Use copy*/
+	double* Acopy = xNew<double>(n*n);
+	xMemCpy(Acopy,A,n*n);
+
+	/*Initialize gsl matrices and vectors: */
+	a = gsl_matrix_view_array (Acopy,n,n);
+	b = gsl_vector_view_array (B,n);
+	x = gsl_vector_view_array (X,n);
+
+	/*Run LU and solve: */
+	p = gsl_permutation_alloc (n);
+	gsl_linalg_LU_decomp (&a.matrix, p, &s);
+	gsl_linalg_LU_solve (&a.matrix, p, &b.vector, &x.vector);
+
+	/*Clean up and assign output pointer*/
+	xDelete(Acopy);
+	gsl_permutation_free(p);
+#endif
+}
+/*}}}*/
+
+#ifdef _HAVE_ADOLC_
+int EDF_for_solverx(int n, IssmPDouble *x, int m, IssmPDouble *y){ /*{{{*/
+	SolverxSeq(y,x, x+m*m, m); // x is where the matrix starts, x+m*m is where the right-hand side starts
+	return 0;
+} /*}}}*/
+int EDF_fos_forward_for_solverx(int n, IssmPDouble *inVal, IssmPDouble *inDeriv, int m, IssmPDouble *outVal, IssmPDouble *outDeriv) { /*{{{*/
+#ifdef _HAVE_GSL_
+	//  for (int i=0; i<m*m; ++i) std::cout << "EDF_fos_forward_for_solverx A["<< i << "]=" << inVal[i] << std::endl;
+	//  for (int i=0; i<m; ++i) std::cout << "EDF_fos_forward_for_solverx b["<< i << "]=" << inVal[i+m*m] << std::endl;
+	// the matrix will be modified by LU decomposition. Use gsl_A copy
+	double* Acopy = xNew<double>(m*m);
+	xMemCpy(Acopy,inVal,m*m);
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix_view gsl_A = gsl_matrix_view_array (Acopy,m,m);
+	gsl_vector_view gsl_b = gsl_vector_view_array (inVal+m*m,m); // the right hand side starts at address inVal+m*m
+	gsl_permutation *perm_p = gsl_permutation_alloc (m);
+	int  signPerm;
+	// factorize
+	gsl_linalg_LU_decomp (&gsl_A.matrix, perm_p, &signPerm);
+	gsl_vector *gsl_x_p = gsl_vector_alloc (m);
+	// solve for the value
+	gsl_linalg_LU_solve (&gsl_A.matrix, perm_p, &gsl_b.vector, gsl_x_p);
+	/*Copy result*/
+	xMemCpy(outVal,gsl_vector_ptr(gsl_x_p,0),m);
+	gsl_vector_free(gsl_x_p);
+	//  for (int i=0; i<m; ++i) std::cout << "EDF_fos_forward_for_solverx x["<< i << "]=" << outVal[i] << std::endl;
+	// solve for the derivatives acc. to A * dx = r  with r=db - dA * x
+	// compute the RHS
+	double* r=xNew<double>(m);
+	for (int i=0; i<m; i++) {
+		r[i]=inDeriv[m*m+i]; // this is db[i]
+		for (int j=0;j<m; j++) {
+			r[i]-=inDeriv[i*m+j]*outVal[j]; // this is dA[i][j]*x[j]
+		}
+	}
+	gsl_vector_view gsl_r=gsl_vector_view_array(r,m);
+	gsl_vector *gsl_dx_p = gsl_vector_alloc(m);
+	gsl_linalg_LU_solve (&gsl_A.matrix, perm_p, &gsl_r.vector, gsl_dx_p);
+	xMemCpy(outDeriv,gsl_vector_ptr(gsl_dx_p,0),m);
+	gsl_vector_free(gsl_dx_p);
+	xDelete(r);
+	gsl_permutation_free(perm_p);
+	xDelete(Acopy);
+#endif
+	return 0;
+} /*}}}*/
+int EDF_fov_forward_for_solverx(int n, IssmPDouble *inVal, int directionCount, IssmPDouble **inDeriv, int m, IssmPDouble *outVal, IssmPDouble **outDeriv) { /*{{{*/
+#ifdef _HAVE_GSL_
+	// the matrix will be modified by LU decomposition. Use gsl_A copy
+	double* Acopy = xNew<double>(m*m);
+	xMemCpy(Acopy,inVal,m*m);
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix_view gsl_A = gsl_matrix_view_array (Acopy,m,m);
+	gsl_vector_view gsl_b = gsl_vector_view_array (inVal+m*m,m); // the right hand side starts at address inVal+m*m
+	gsl_permutation *perm_p = gsl_permutation_alloc (m);
+	int  signPerm;
+	// factorize
+	gsl_linalg_LU_decomp (&gsl_A.matrix, perm_p, &signPerm);
+	gsl_vector *gsl_x_p = gsl_vector_alloc (m);
+	// solve for the value
+	gsl_linalg_LU_solve (&gsl_A.matrix, perm_p, &gsl_b.vector, gsl_x_p);
+	/*Copy result*/
+	xMemCpy(outVal,gsl_vector_ptr(gsl_x_p,0),m);
+	gsl_vector_free(gsl_x_p);
+	// solve for the derivatives acc. to A * dx = r  with r=db - dA * x
+	double* r=xNew<double>(m);
+	gsl_vector *gsl_dx_p = gsl_vector_alloc(m);
+	for (int dir=0;dir<directionCount;++dir) {
+		// compute the RHS
+		for (int i=0; i<m; i++) {
+			r[i]=inDeriv[m*m+i][dir]; // this is db[i]
+			for (int j=0;j<m; j++) {
+				r[i]-=inDeriv[i*m+j][dir]*outVal[j]; // this is dA[i][j]*x[j]
+			}
+		}
+		gsl_vector_view gsl_r=gsl_vector_view_array(r,m);
+		gsl_linalg_LU_solve (&gsl_A.matrix, perm_p, &gsl_r.vector, gsl_dx_p);
+		// reuse r
+		xMemCpy(r,gsl_vector_ptr(gsl_dx_p,0),m);
+		for (int i=0; i<m; i++) {
+			outDeriv[i][dir]=r[i];
+		}
+	}
+	gsl_vector_free(gsl_dx_p);
+	xDelete(r);
+	gsl_permutation_free(perm_p);
+	xDelete(Acopy);
+#endif
+	return 0;
+}
+/*}}}*/
+int EDF_fos_reverse_for_solverx(int m, double *dp_U, int n, double *dp_Z, double* dp_x, double* dp_y) { /*{{{*/
+	// copy to transpose the matrix
+	double* transposed=xNew<double>(m*m);
+	for (int i=0; i<m; ++i) for (int j=0; j<m; ++j) transposed[j*m+i]=dp_x[i*m+j];
+	gsl_matrix_view aTransposed = gsl_matrix_view_array (transposed,m,m);
+	// the adjoint of the solution is our right-hand side
+	gsl_vector_view x_bar=gsl_vector_view_array(dp_U,m);
+	// the last m elements of dp_Z representing the adjoint of the right-hand side we want to compute:
+	gsl_vector_view b_bar=gsl_vector_view_array(dp_Z+m*m,m);
+	gsl_permutation *perm_p = gsl_permutation_alloc (m);
+	int permSign;
+	gsl_linalg_LU_decomp (&aTransposed.matrix, perm_p, &permSign);
+	gsl_linalg_LU_solve (&aTransposed.matrix, perm_p, &x_bar.vector, &b_bar.vector);
+	// now do the adjoint of the matrix
+	for (int i=0; i<m; ++i) for (int j=0; j<m; ++j) dp_Z[i*m+j]-=dp_Z[m*m+i]*dp_y[j];
+	gsl_permutation_free(perm_p);
+	xDelete(transposed);
+	return 0;
+}
+/*}}}*/
+int EDF_fov_reverse_for_solverx(int m, int p, double **dpp_U, int n, double **dpp_Z, double* dp_x, double* dp_y) { /*{{{*/
+	// copy to transpose the matrix
+	double* transposed=xNew<double>(m*m);
+	for (int i=0; i<m; ++i) for (int j=0; j<m; ++j) transposed[j*m+i]=dp_x[i*m+j];
+	gsl_matrix_view aTransposed = gsl_matrix_view_array (transposed,m,m);
+	gsl_permutation *perm_p = gsl_permutation_alloc (m);
+	int permSign;
+	gsl_linalg_LU_decomp (&aTransposed.matrix, perm_p, &permSign);
+	for (int weightsRowIndex=0;weightsRowIndex<p;++weightsRowIndex) {
+		// the adjoint of the solution is our right-hand side
+		gsl_vector_view x_bar=gsl_vector_view_array(dpp_U[weightsRowIndex],m);
+		// the last m elements of dp_Z representing the adjoint of the right-hand side we want to compute:
+		gsl_vector_view b_bar=gsl_vector_view_array(dpp_Z[weightsRowIndex]+m*m,m);
+		gsl_linalg_LU_solve (&aTransposed.matrix, perm_p, &x_bar.vector, &b_bar.vector);
+		// now do the adjoint of the matrix
+		for (int i=0; i<m; ++i) for (int j=0; j<m; ++j) dpp_Z[weightsRowIndex][i*m+j]-=dpp_Z[weightsRowIndex][m*m+i]*dp_y[j];
+	}
+	gsl_permutation_free(perm_p);
+	xDelete(transposed);
+	return 0;
+}
+/*}}}*/
+void DenseGslSolve(/*output*/ IssmDouble** px,/*stiffness matrix:*/ IssmDouble* Kff, int Kff_M, int Kff_N, /*right hand side load vector: */ IssmDouble* pf, int pf_M, Parameters* parameters){ /*{{{*/
+
+	/*Intermediary: */
+
+	if(Kff_N!=pf_M)_error_("Right hand side vector of size " << pf_M << ", when matrix is of size " << Kff_M << "-" << Kff_N << " !");
+	if(Kff_M!=Kff_N)_error_("Stiffness matrix should be square!");
+
+	ensureContiguousLocations(Kff_N);
+	IssmDouble *x  = xNew<IssmDouble>(Kff_N);
+
+	SolverxSeq(x,Kff,pf,Kff_N,parameters);
+
+	/*allocate output pointers: */
+	*px=x;
+}
+/*}}}*/
+void SolverxSeq(IssmDouble *X,IssmDouble *A,IssmDouble *B,int n, Parameters* parameters){/*{{{*/
+	// pack inputs to conform to the EDF-prescribed interface
+        // ensure a contiguous block of locations:
+        ensureContiguousLocations(n*(n+1));
+        IssmDouble*  adoubleEDFin=xNew<IssmDouble>(n*(n+1));  // packed inputs, i.e. matrix and right hand side
+        for(int i=0; i<n*n;i++)adoubleEDFin[i]    =A[i];      // pack matrix
+        for(int i=0; i<n;  i++)adoubleEDFin[i+n*n]=B[i];      // pack the right hand side
+	// call the wrapped solver through the registry entry we retrieve from parameters
+	call_ext_fct(xDynamicCast<GenericParam<Adolc_edf> * >(parameters->FindParamObject(AdolcParamEnum))->GetParameterValue().myEDF_for_solverx_p,
+	             n*(n+1), adoubleEDFin,
+	             n, X);
+	// for(int i=0; i<n;  i++) {ADOLC_DUMP_MACRO(X[i]);}
+	xDelete(adoubleEDFin);
+}
+/*}}}*/
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/gsl/gslincludes.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/gsl/gslincludes.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/gsl/gslincludes.h	(revision 21239)
@@ -0,0 +1,37 @@
+/* \file gslsincludes.h
+ * \brief all includes for GSL layer
+ */
+
+#ifndef _GSL_INCLUDES_H_
+#define _GSL_INCLUDES_H_
+
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/Numerics/types.h"
+/*}}}*/
+
+template <class doubletype> class IssmVec;
+template <class doubletype> class IssmMat;
+class Parameters;
+
+void DenseGslSolve(IssmPDouble** pX,IssmPDouble* A,IssmPDouble* B, int n);
+void DenseGslSolve(IssmDouble** pX,IssmDouble* Kff,int Kff_M,int Kff_N,IssmDouble* pf,int pf_M,Parameters* parameters);
+
+void SolverxSeq(IssmPDouble *X, IssmPDouble *A, IssmPDouble *B,int n);
+
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)
+void SolverxSeq(IssmDouble *X,IssmDouble *A,IssmDouble *B,int n, Parameters* parameters);
+// call back functions:
+ADOLC_ext_fct EDF_for_solverx;
+ADOLC_ext_fct_fos_forward EDF_fos_forward_for_solverx;
+ADOLC_ext_fct_fos_reverse EDF_fos_reverse_for_solverx;
+ADOLC_ext_fct_fov_forward EDF_fov_forward_for_solverx;
+ADOLC_ext_fct_fov_reverse EDF_fov_reverse_for_solverx;
+#endif
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/Bucket.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/Bucket.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/Bucket.h	(revision 21239)
@@ -0,0 +1,245 @@
+/*!\file Bucket.h
+ * \brief: header file for Bucket object
+ */
+
+#ifndef _BUCKET_H
+#define _BUCKET_H
+
+/*Headers:*/
+/*{{{*/
+#include "../../datastructures/datastructures.h"
+#include "../../shared/io/Comm/IssmComm.h"
+#include "../toolkitsenums.h"
+/*}}}*/
+
+/*how many ISSM_MPI_Isend requests does it take to transfer the contents of a bucket to another cpu?*/
+#define MATRIXBUCKETSIZEOFREQUESTS 7 
+#define VECTORBUCKETSIZEOFREQUESTS 5 
+typedef enum {VECTOR_BUCKET, MATRIX_BUCKET} BucketType;
+template <class doubletype> class Bucket: public Object{
+
+	private: 
+		int type; //either a VECTOR_BUCKET or MATRIX_BUCKET
+		int m,n; /*size of local matrix we are storing*/
+		/*row and column indices of the matrix we are storing*/
+		int* idxm;
+		int* idxn; 
+		doubletype* values; /*local matrix*/
+		InsMode mode; /*mode of insertion for this bucket*/
+
+	public: 
+
+		/*constructors, destructors: */
+		Bucket(){ /*{{{*/
+			this->Initialize();
+		} /*}}}*/
+		Bucket(int min,int* idxmin,int nin,int* idxnin,doubletype* valuesin,InsMode modein){ /*{{{*/
+
+			this->Initialize();
+
+			this->type=MATRIX_BUCKET;
+			this->m=min;
+			this->n=nin;
+			this->mode=modein;
+			if(this->m){
+				this->idxm=xNew<int>(this->m); 
+				xMemCpy(this->idxm,idxmin,this->m);
+			}
+			if(this->n){
+				this->idxn=xNew<int>(this->n); 
+				xMemCpy(this->idxn,idxnin,this->n);
+			}
+			if(this->m*this->n){
+				this->values=xNew<doubletype>(this->n*this->m);
+				xMemCpy(this->values,valuesin,this->n*this->m);
+			}
+		} /*}}}*/
+		Bucket(int min,int* idxmin,doubletype* valuesin,InsMode modein){ /*{{{*/ 
+			this->Initialize();
+
+			this->type=VECTOR_BUCKET; 
+			this->m=min;
+			this->mode=modein;
+			if(this->m){
+				this->idxm=xNew<int>(this->m); 
+				xMemCpy(this->idxm,idxmin,this->m);
+
+				this->values=xNew<doubletype>(this->m);
+				xMemCpy(this->values,valuesin,this->m);
+			}
+		} /*}}}*/
+		~Bucket(){ /*{{{*/
+			xDelete<int>(idxm);
+			xDelete<int>(idxn);
+			xDelete<doubletype>(values);
+		} /*}}}*/
+		void Initialize(void){ /*{{{*/
+
+			this->type=0;
+			this->m=0;
+			this->n=0;
+			this->idxm=NULL;
+			this->idxn=NULL;
+			this->values=NULL;
+			mode=INS_VAL;
+
+		} /*}}}*/
+
+		/*object virtual functions definitions:*/
+		void    Echo(){ /*{{{*/
+			_printf_("Bucket echo (cpu #: "<<IssmComm::GetRank()<<")\n");
+			_printf_("bucket type: " << type << "\n");
+			_printf_("num rows: "<<this->m<<" num cols: "<<this->n << "\n");
+		} /*}}}*/
+		void    DeepEcho(){ /*{{{*/
+			int i,j;
+
+			_printf_("Bucket echo (cpu #: "<<IssmComm::GetRank()<<")\n");
+			_printf_("bucket type: " << type << "\n");
+			_printf_("num rows: "<<this->m<<" num cols: "<<this->n << "\n");
+			if(type==MATRIX_BUCKET){
+				for (i=0;i<this->m;i++){
+					_printf_("row "<<this->idxm[i]<<", column indices: \n");
+					for (j=0;j<this->n;j++){
+						_printf_(" "<<this->idxn[j] << "\n");
+					}
+					_printf_("values: \n");
+					for (j=0;j<this->n;j++){
+						_printf_(" "<<this->values[m*i+j] << "\n");
+					}
+				}
+			}
+			else if(type==VECTOR_BUCKET){
+				for (i=0;i<this->m;i++){
+					_printf_("row "<<this->idxm[i]<<", value " << this->values[i] << "\n");
+				}
+			}
+			else _error_("unknown type of bucket!");
+		}
+		/*}}}*/
+		int     Id(){ /*{{{*/
+			return -1;
+		} /*}}}*/
+		int     ObjectEnum(){ /*{{{*/
+			return -1;
+		} /*}}}*/
+		Object *copy()        {/*{{{*/
+			if (this->type==MATRIX_BUCKET) return new Bucket(this->m,this->idxm,this->n,this->idxn,this->values,this->mode);
+			else if (this->type==VECTOR_BUCKET) return new Bucket(this->m,this->idxm,this->values,this->mode);
+			else _error_("No Copy of Bucket because its type is invalid."); };
+		/*}}}*/
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
+
+		/*specific routines of Bucket: */
+		void SpawnBucketsPerCpu(DataSet* bucketsofcpu_i,int rank_i,int* rowranks){ /*{{{*/
+
+			/*go through our idxm index of rows this bucket owns, and spawn buckets  
+			 *if these rows belong to cpu rank_i. Use rowranks to determine this.*/
+			for(int i=0;i<m;i++){
+				if (rowranks[idxm[i]]==rank_i){
+					/*This row belongs to cpu rank_i, so spawn a bucket with this row, and add it to the bucketsofcpu_i dataset: */
+					if(type==MATRIX_BUCKET){
+						bucketsofcpu_i->AddObject(new Bucket(1,idxm+i,n,idxn,values+n*i,mode));
+					}
+					else{
+						bucketsofcpu_i->AddObject(new Bucket(1,idxm+i,values+i,mode));
+					}
+				}
+			}
+
+		}; /*}}}*/
+		int BucketType(void){ /*{{{*/
+
+			return type;
+		};
+		/*}}}*/
+		void Marshall(int** prow_indices_forcpu,int** pcol_indices_forcpu,doubletype** pvalues_forcpu,int** pmodes_forcpu){ /*{{{*/
+
+			/*intermediary: */
+			int         i;
+			int         j;
+
+			/*buffers: */
+			int        *row_indices_forcpu = NULL;
+			int        *col_indices_forcpu = NULL;
+			doubletype *values_forcpu      = NULL;
+			int        *modes_forcpu       = NULL;
+
+			/*initialize buffers: */
+			row_indices_forcpu=*prow_indices_forcpu;
+			col_indices_forcpu=*pcol_indices_forcpu;
+			values_forcpu=*pvalues_forcpu;
+			modes_forcpu=*pmodes_forcpu;
+
+			/*fill buffers with out values and indices and modes: */
+			for(i=0;i<m;i++){
+				for(j=0;j<n;j++){
+					row_indices_forcpu[i*n+j]=idxm[i];
+					col_indices_forcpu[i*n+j]=idxn[j];
+					values_forcpu[i*n+j]=values[i*n+j];
+					modes_forcpu[i*n+j]=mode;
+				}
+			}
+
+			/*increment buffer for next Bucket who will marshall his data: */
+			row_indices_forcpu+=(m*n);
+			col_indices_forcpu+=(m*n);
+			values_forcpu+=(m*n);
+			modes_forcpu+=(m*n);
+
+			/*output modified buffers: */
+			*prow_indices_forcpu=row_indices_forcpu;
+			*pcol_indices_forcpu=col_indices_forcpu;
+			*pvalues_forcpu=values_forcpu;
+			*pmodes_forcpu=modes_forcpu;
+		};
+		/*}}}*/
+		void Marshall(int** prow_indices_forcpu,doubletype** pvalues_forcpu,int** pmodes_forcpu){ /*{{{*/
+
+			/*intermediary: */
+			int         i;
+
+			/*buffers: */
+			int        *row_indices_forcpu = NULL;
+			doubletype *values_forcpu      = NULL;
+			int        *modes_forcpu       = NULL;
+
+			/*initialize buffers: */
+			row_indices_forcpu=*prow_indices_forcpu;
+			values_forcpu=*pvalues_forcpu;
+			modes_forcpu=*pmodes_forcpu;
+
+			/*fill buffers with out values and indices and modes: */
+			for(i=0;i<m;i++){
+				row_indices_forcpu[i]=idxm[i];
+				values_forcpu[i]=values[i];
+				modes_forcpu[i]=mode;
+			}
+
+			/*increment buffer for next Bucket who will marshall his data: */
+			row_indices_forcpu+=m;
+			values_forcpu+=m;
+			modes_forcpu+=m;
+
+			/*output modified buffers: */
+			*prow_indices_forcpu=row_indices_forcpu;
+			*pvalues_forcpu=values_forcpu;
+			*pmodes_forcpu=modes_forcpu;
+		};
+		/*}}}*/
+		int MarshallSize(void){ /*{{{*/
+
+			if(type==MATRIX_BUCKET){
+				return m*n;
+			}
+			else{
+				return m;
+			}
+		};
+		/*}}}*/
+};
+
+#endif  /* _BUCKET_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmAbsMat.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmAbsMat.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmAbsMat.h	(revision 21239)
@@ -0,0 +1,50 @@
+/*!\file:  IssmAbsMat.h
+ * \brief Main abstract class for the ISSM matrices.  This abstract class defines the pure virtual
+ * functions that each of its descendants need to implement, such as contructors, destructors, as well
+ * as matrix specific routines, such as SetValue, Assemple, MatMult, etc ...
+ * Descendants include among others:
+ * IssmDenseMat and IssmMpiDenseMat
+ *
+ */ 
+
+#ifndef _ISSM_ABS_MAT_H_
+#define _ISSM_ABS_MAT_H_
+
+/*Headers:*/
+#include "../toolkitsenums.h"
+#include "../../shared/Numerics/types.h"
+
+/*We need to template this class, in case we want to create Matrices that hold
+  IssmDouble* matrix or IssmPDouble* matrix. 
+  Such vectors are useful for use without or with the matlab or python
+  interface (which do not care for IssmDouble types, but only rely on
+  IssmPDouble types) */
+
+template <class doubletype> class IssmAbsVec;
+class Parameters;
+
+template <class doubletype> 
+class IssmAbsMat{
+
+	public:
+
+		/*IssmAbsMat constructors, destructors*/
+		virtual ~IssmAbsMat(){};
+
+		/*Functionality: */
+		virtual void Echo(void)=0;
+		virtual void Assemble(void)=0;
+		virtual doubletype Norm(NormMode mode)=0;
+		virtual void GetSize(int* pM,int* pN)=0;
+		virtual void GetLocalSize(int* pM,int* pN)=0;
+		virtual void MatMult(IssmAbsVec<doubletype>* X,IssmAbsVec<doubletype>* AX)=0;
+		virtual IssmAbsMat<doubletype>* Duplicate(void)=0;
+		virtual doubletype* ToSerial(void)=0;
+		virtual void SetValues(int m,int* idxm,int n,int* idxn,doubletype* values,InsMode mode)=0;
+		virtual void Convert(MatrixType type)=0;
+		#ifndef _HAVE_WRAPPERS_
+		virtual IssmAbsVec<IssmDouble>* Solve(IssmAbsVec<IssmDouble>* pf, Parameters* parameters)=0;
+		#endif
+};
+
+#endif //#ifndef _ISSM_ABS_MAT_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmAbsVec.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmAbsVec.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmAbsVec.h	(revision 21239)
@@ -0,0 +1,52 @@
+/*!\file:  IssmAbsVec.h
+ * \brief Main abstract class for the ISSM vectors.  This abstract class defines the pure virtual
+ * functions that each of its descendants need to implement, such as contructors, destructors, as well
+ * as matrix specific routines, such as SetValue, Assemple, VecMult, etc ...
+ * Descendants include among others:
+ *	  IssmSeqVec and IssmMpiVec
+ *
+ */ 
+
+#ifndef _ISSM_ABS_VEC_H_
+#define _ISSM_ABS_VEC_H_
+
+/*Headers:*/
+#include "../toolkitsenums.h"
+#include "../../shared/Numerics/types.h"
+
+/*We need to template this class, in case we want to create Vectors that hold
+  IssmDouble* vector or IssmPDouble* vector. 
+  Such vectors are useful for use without or with the matlab or python
+  interface (which do not care for IssmDouble types, but only rely on
+  IssmPDouble types)
+*/
+template <class doubletype> 
+class IssmAbsVec{
+
+	public:
+
+		/*IssmAbsVec constructors, destructors*/
+		virtual ~IssmAbsVec(){};
+
+		/*IssmAbsVec specific routines*/
+		virtual void Echo(void)=0;
+		virtual void Assemble(void)=0;
+		virtual void SetValues(int ssize, int* list, doubletype* values, InsMode mode)=0;
+		virtual void SetValue(int dof, doubletype value, InsMode mode)=0;
+		virtual void GetValue(doubletype* pvalue,int dof)=0;
+		virtual void GetSize(int* pM)=0;
+		virtual void GetLocalSize(int* pM)=0;
+		virtual IssmAbsVec<doubletype>* Duplicate(void)=0;
+		virtual void Set(doubletype value)=0;
+		virtual void AXPY(IssmAbsVec* X, doubletype a)=0;
+		virtual void AYPX(IssmAbsVec* X, doubletype a)=0;
+		virtual doubletype* ToMPISerial(void)=0;
+		virtual void Shift(doubletype shift)=0;
+		virtual void Copy(IssmAbsVec* to)=0;
+		virtual doubletype Norm(NormMode mode)=0;
+		virtual void Scale(doubletype scale_factor)=0;
+		virtual doubletype Dot(IssmAbsVec* input)=0;
+		virtual void PointwiseDivide(IssmAbsVec* x,IssmAbsVec* y)=0;
+};
+
+#endif //#ifndef _ISSM_ABS_VEC_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmDenseMat.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmDenseMat.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmDenseMat.h	(revision 21239)
@@ -0,0 +1,287 @@
+/*!\file:  IssmDenseMat.h
+ * \brief implementation of an ISSM matrix which run serially (1 cpu only), which is made of a fully dense 
+ * matrix. Internally, this dense matrix is just a linear buffer of type doubletype. 
+ * This object needs to answer the API defined by the virtual functions in IssmAbsMat, 
+ * and the contructors required by IssmMat (see IssmMat.h)
+ */ 
+
+#ifndef _ISSM_DENSE_MAT_H_
+#define _ISSM_DENSE_MAT_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./IssmSeqVec.h"
+#include "../../shared/shared.h"
+#include "../gsl/gslincludes.h"
+
+#include <math.h>
+
+/*}}}*/
+
+/*We need to template this class, in case we want to create Matrices that hold
+  IssmDouble* matrix or IssmPDouble* matrix. 
+  Such matrices would be useful for use without or with the matlab or python
+  interface (which do not care for IssmDouble types, but only rely on
+  IssmPDouble types)*/
+
+template <class doubletype> class IssmAbsVec;
+template <class doubletype> class IssmAbsMat;
+template <class doubletype> class IssmSeqVec;
+
+template <class doubletype> 
+class IssmDenseMat: public IssmAbsMat<doubletype>{
+
+	public:
+
+		int M,N; 
+		doubletype* matrix;  /*here, doubletype is either IssmDouble or IssmPDouble*/
+
+		/*IssmDenseMat constructors, destructors*/
+		/*IssmDenseMat(){{{*/
+		IssmDenseMat(){
+
+			this->M=0;
+			this->N=0;
+			this->matrix=NULL;
+		}
+		/*}}}*/
+		/*IssmDenseMat(int M,int N){{{*/
+		IssmDenseMat(int pM,int pN){
+
+			this->M=pM;
+			this->N=pN;
+			this->matrix=NULL;
+			if(M*N) this->matrix=xNewZeroInit<doubletype>(pM*pN);
+		}
+		/*}}}*/
+		/*IssmDenseMat(int M,int N, doubletype sparsity){{{*/
+		IssmDenseMat(int pM,int pN, doubletype sparsity){
+
+			this->M=pM;
+			this->N=pN;
+			this->matrix=NULL;
+			if(M*N) this->matrix=xNewZeroInit<doubletype>(pM*pN);
+		}
+		/*}}}*/
+		/*IssmDenseMat(int m,int n,int M,int N,int* d_nnz,int* o_nnz){{{*/
+		IssmDenseMat(int m,int n,int pM,int pN,int* d_nnz,int* o_nnz){
+
+			this->M=pM;
+			this->N=pN;
+			this->matrix=NULL;
+			if(pM*pN) this->matrix=xNewZeroInit<doubletype>(pM*pN);
+		}
+		/*}}}*/
+		/*IssmDenseMat(doubletype* serial_mat,int M,int N,doubletype sparsity){{{*/
+		IssmDenseMat(doubletype* serial_mat,int pM,int pN,doubletype sparsity){
+
+			this->M=pM;
+			this->N=pN;
+			this->matrix=NULL;
+			if(M*N){
+				this->matrix=xNewZeroInit<doubletype>(pM*pN);
+				xMemCpy<doubletype>(this->matrix,serial_mat,pM*pN);
+			}
+
+		}
+		/*}}}*/
+		/*IssmDenseMat(int M,int N, int connectivity, int numberofdofspernode){{{*/
+		IssmDenseMat(int pM,int pN, int connectivity,int numberofdofspernode){
+
+			this->M=pM;
+			this->N=pN;
+			this->matrix=NULL;
+			if(M*N) this->matrix=xNewZeroInit<doubletype>(pM*pN);
+		}
+		/*}}}*/
+		/*~IssmDenseMat(){{{*/
+		~IssmDenseMat(){
+
+			xDelete<doubletype>(this->matrix);
+			M=0;
+			N=0;
+		}
+		/*}}}*/
+
+		/*IssmAbsMat virtual functions*/
+		/*Echo{{{*/
+		void Echo(void){
+
+			int i,j;
+			_printf_("IssmDenseMat size " << this->M << "-" << this->N << "\n");
+			for(i=0;i<M;i++){
+				for(j=0;j<N;j++){
+					_printf_(this->matrix[N*i+j] << " ");
+				}
+				_printf_("\n");
+			}
+		}
+		/*}}}*/
+		/*Assemble{{{*/
+		void Assemble(void){
+
+			/*do nothing*/
+
+		}
+		/*}}}*/
+		/*Norm{{{*/
+		doubletype Norm(NormMode mode){
+
+			doubletype norm;
+			doubletype absolute;
+			int i,j;
+
+			switch(mode){
+				case NORM_INF:
+					norm=0;
+					for(i=0;i<this->M;i++){
+						absolute=0;
+						for(j=0;j<this->N;j++){
+							absolute+=fabs(this->matrix[N*i+j]);
+						}
+						norm=max(norm,absolute);
+					}
+					return norm;
+					break; 
+				case NORM_FROB:
+					norm=0;
+					for(i=0;i<this->M;i++){
+						for(j=0;j<this->N;j++){
+							norm+=pow(this->matrix[N*i+j],2);
+						}
+					}
+					return sqrt(norm);
+					break; 
+
+				default:
+					_error_("unknown norm !");
+					break;
+			}
+		}
+		/*}}}*/
+		/*GetSize{{{*/
+		void GetSize(int* pM,int* pN){
+
+			*pM=this->M;
+			*pN=this->N;
+
+		}
+		/*}}}*/
+		/*GetLocalSize{{{*/
+		void GetLocalSize(int* pM,int* pN){
+
+			*pM=this->M;
+			*pN=this->N;
+
+		}
+		/*}}}*/
+		/*MatMult{{{*/
+		void MatMult(IssmAbsVec<doubletype>* Xin,IssmAbsVec<doubletype>* AXin){
+
+			/*We assume that the vectors coming in are of compatible type: */
+			int i,j;
+			int XM,AXM;
+			doubletype dummy;
+			IssmSeqVec<doubletype>* X=NULL;
+			IssmSeqVec<doubletype>* AX=NULL;
+
+			/*downcast X and AX: */
+			X=(IssmSeqVec<doubletype>*)Xin;
+			AX=(IssmSeqVec<doubletype>*)AXin;
+
+			/*Some checks first: */
+			X->GetSize(&XM);
+			AX->GetSize(&AXM);
+
+			if(M!=AXM)_error_("A and AX should have the same number of rows!");
+			if(N!=XM)_error_("A and X should have the same number of columns!");
+
+			for(i=0;i<M;i++){
+				dummy=0;
+				for(j=0;j<N;j++){
+					dummy+= this->matrix[N*i+j]*X->vector[j];
+				}
+				AX->vector[i]=dummy;
+			}
+
+		}
+		/*}}}*/
+		/*Duplicate{{{*/
+		IssmDenseMat<doubletype>* Duplicate(void){
+
+			doubletype dummy=0;
+
+			return new IssmDenseMat<doubletype>(this->matrix,this->M,this->N,dummy);
+
+		}
+		/*}}}*/
+		/*ToSerial{{{*/
+		doubletype* ToSerial(void){
+
+			doubletype* buffer=NULL;
+
+			if(this->M*this->N){
+				buffer=xNew<doubletype>(this->M*this->N);
+				xMemCpy<doubletype>(buffer,this->matrix,this->M*this->N);
+			}
+			return buffer;
+
+		}
+		/*}}}*/
+		/*SetValues{{{*/
+		void SetValues(int m,int* idxm,int n,int* idxn,doubletype* values,InsMode mode){
+
+			int i,j;
+			switch(mode){
+				case ADD_VAL:
+					for(i=0;i<m;i++) for(j=0;j<n;j++) this->matrix[N*idxm[i]+idxn[j]]+=values[n*i+j];
+					break;
+				case INS_VAL:
+					for(i=0;i<m;i++) for(j=0;j<n;j++) this->matrix[N*idxm[i]+idxn[j]]=values[n*i+j];
+					break;
+				default:
+					_error_("unknown insert mode!");
+					break;
+			}
+
+		}
+		/*}}}*/
+		/*Convert{{{*/
+		void Convert(MatrixType type){
+
+			/*do nothing*/
+
+		}
+		/*}}}*/		
+		#ifndef _HAVE_WRAPPERS_
+		/*Solve{{{*/
+		IssmAbsVec<IssmDouble>* Solve(IssmAbsVec<IssmDouble>* pfin, Parameters* parameters){
+
+			/*First off, we assume that the type of IssmAbsVec is IssmSeqVec. So downcast: */
+			IssmSeqVec<IssmDouble>* pf = NULL;
+			IssmSeqVec<IssmDouble> *uf = NULL;
+			IssmDouble* x=NULL;
+
+			/*Assume we are getting an IssmMpiVec in input, downcast: */
+			pf=(IssmSeqVec<IssmDouble>*)pfin;
+
+			#ifdef _HAVE_GSL_
+			DenseGslSolve(/*output*/ &x,/*stiffness matrix:*/ this->matrix,this->M,this->N, /*right hand side load vector: */ pf->vector,pf->M,parameters);
+
+			uf=new IssmSeqVec<IssmDouble>(x,this->N); xDelete(x);
+			return uf;
+			#else
+				_error_("GSL support not compiled in!");
+			#endif
+
+		}/*}}}*/
+		#endif
+};
+
+#endif //#ifndef _ISSM_DENSE_MAT_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmMat.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmMat.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmMat.h	(revision 21239)
@@ -0,0 +1,256 @@
+/*!\file:  IssmMat.h
+ * \brief Main Matrix class for the Issm toolkit. 
+ */ 
+
+#ifndef _ISSM_MAT_H_
+#define _ISSM_MAT_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/shared.h"
+#include "../ToolkitOptions.h"
+#include "./IssmToolkitUtils.h"
+
+/*}}}*/
+
+/*We need to template this class, in case we want to create Matrices that hold
+  IssmDouble* matrix or IssmPDouble* matrix. 
+  Such matrices are useful for use without or with the matlab or python
+  interface (which do not care for IssmDouble types, but only rely on
+  IssmPDouble types)
+*/
+template <class doubletype> class IssmVec;
+template <class doubletype> class IssmDenseMat;
+template <class doubletype> class IssmMpiDenseMat;
+template <class doubletype> class IssmMpiSparseMat;
+class Parameters;
+
+template <class doubletype> 
+class IssmMat{
+
+	public:
+
+		IssmAbsMat<doubletype>* matrix; /*abstract matrix, which implements object orientation*/
+
+		/*IssmMat constructors, destructors*/
+		IssmMat(){ /*{{{*/
+
+			switch(IssmMatTypeFromToolkitOptions()){
+
+				case DenseEnum: 
+					this->matrix=new IssmDenseMat<doubletype>();
+					break;
+				case MpiDenseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiDenseMat<doubletype>();
+					#else
+					_error_("MpiDense matrix requires compilation of MPI!");
+					#endif
+					break;
+				case MpiSparseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiSparseMat<doubletype>();
+					#else
+					_error_("MpiSparse matrix requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("matrix type not supported yet!");
+			}
+		}
+		/*}}}*/
+		IssmMat(int M,int N){ /*{{{*/
+
+			switch(IssmMatTypeFromToolkitOptions()){
+
+				case DenseEnum: 
+					this->matrix=new IssmDenseMat<doubletype>(M,N);
+					break;
+				case MpiDenseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiDenseMat<doubletype>(M,N);
+					#else
+					_error_("MpiDense matrix requires compilation of MPI!");
+					#endif
+					break;
+				case MpiSparseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiSparseMat<doubletype>(M,N);
+					#else
+					_error_("MpiSparse matrix requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("matrix type not supported yet!");
+			}
+		}
+		/*}}}*/
+		IssmMat(int M,int N, doubletype sparsity){ /*{{{*/
+
+			switch(IssmMatTypeFromToolkitOptions()){
+
+				case DenseEnum: 
+					this->matrix=new IssmDenseMat<doubletype>(M,N,sparsity);
+					break;
+				case MpiDenseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiDenseMat<doubletype>(M,N,sparsity);
+					#else
+					_error_("MpiDense matrix requires compilation of MPI!");
+					#endif
+					break;
+				case MpiSparseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiSparseMat<doubletype>(M,N,sparsity);
+					#else
+					_error_("MpiSparse matrix requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("matrix type not supported yet!");
+			}
+		}
+		/*}}}*/
+		IssmMat(int m,int n,int M,int N,int* d_nnz,int* o_nnz){ /*{{{*/
+
+			switch(IssmMatTypeFromToolkitOptions()){
+
+				case DenseEnum: 
+					this->matrix=new IssmDenseMat<doubletype>(m,n,M,N,d_nnz,o_nnz);
+					break;
+				case MpiDenseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiDenseMat<doubletype>(m,n,M,N,d_nnz,o_nnz);
+					#else
+					_error_("MpiDense matrix requires compilation of MPI!");
+					#endif
+					break;
+				case MpiSparseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiSparseMat<doubletype>(m,n,M,N,d_nnz,o_nnz);
+					#else
+					_error_("MpiSparse matrix requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("matrix type not supported yet!");
+			}
+		}
+		/*}}}*/
+		IssmMat(doubletype* serial_mat,int M,int N,doubletype sparsity){ /*{{{*/
+
+			switch(IssmMatTypeFromToolkitOptions()){
+
+				case DenseEnum: 
+					this->matrix=new IssmDenseMat<doubletype>(serial_mat,M,N,sparsity);
+					break;
+				case MpiDenseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiDenseMat<doubletype>(serial_mat,M,N,sparsity);
+					#else
+					_error_("MpiDense matrix requires compilation of MPI!");
+					#endif
+					break;
+				case MpiSparseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiSparseMat<doubletype>(serial_mat,M,N,sparsity);
+					#else
+					_error_("MpiSparse matrix requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("matrix type not supported yet!");
+			}
+
+		}
+		/*}}}*/
+		IssmMat(int M,int N, int connectivity, int numberofdofspernode){ /*{{{*/
+
+			switch(IssmMatTypeFromToolkitOptions()){
+
+				case DenseEnum: 
+					this->matrix=new IssmDenseMat<doubletype>(M,N,connectivity,numberofdofspernode);
+					break;
+				case MpiDenseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiDenseMat<doubletype>(M,N,connectivity,numberofdofspernode);
+					#else
+					_error_("MpiDense matrix requires compilation of MPI!");
+					#endif
+					break;
+				case MpiSparseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiSparseMat<doubletype>(M,N,connectivity,numberofdofspernode);
+					#else
+					_error_("MpiSparse matrix requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("matrix type not supported yet!");
+			}
+		}
+		/*}}}*/
+		~IssmMat(){ /*{{{*/
+			delete matrix;
+		} /*}}}*/
+
+		/*Functionality: */
+		void Echo(void){  /*{{{*/
+			matrix->Echo();
+		} /*}}}*/
+		void Assemble(void){  /*{{{*/
+			matrix->Assemble();
+		} /*}}}*/
+		doubletype Norm(NormMode mode){ /*{{{*/
+			return matrix->Norm(mode);
+		}
+		/*}}}*/
+		void GetSize(int* pM,int* pN){ /*{{{*/
+			matrix->GetSize(pM,pN);
+		} /*}}}*/
+		void GetLocalSize(int* pM,int* pN){ /*{{{*/
+			matrix->GetLocalSize(pM,pN);
+		} /*}}}*/
+		void MatMult(IssmVec<doubletype>* X,IssmVec<doubletype>* AX){ /*{{{*/
+			matrix->MatMult(X->vector,AX->vector);
+		} /*}}}*/
+		IssmMat<doubletype>* Duplicate(void){ /*{{{*/
+
+			IssmMat<doubletype>* issmmatrix=NULL;
+
+			issmmatrix=new IssmMat<doubletype>();
+			issmmatrix->matrix=this->matrix->Duplicate();
+
+			return issmmatrix;
+		} /*}}}*/
+		doubletype* ToSerial(void){/*{{{*/
+			return matrix->ToSerial();
+		}/*}}}*/
+		void SetValues(int m,int* idxm,int n,int* idxn,doubletype* values,InsMode mode){/*{{{*/
+			matrix->SetValues(m,idxm,n,idxn,values,mode);
+		}/*}}}*/
+		void Convert(MatrixType type){/*{{{*/
+			matrix->convert(type);
+		}/*}}}*/
+		#ifndef _HAVE_WRAPPERS_
+		IssmVec<doubletype>* Solve(IssmVec<doubletype>* pf, Parameters* parameters){ /*{{{*/
+
+			IssmVec<doubletype>* outvector=NULL;
+
+			outvector=new IssmVec<doubletype>();
+
+			outvector->vector=this->matrix->Solve(pf->vector,parameters);
+
+			return outvector;
+
+		}/*}}}*/
+		#endif
+};
+
+#endif //#ifndef _ISSMMAT_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmMpiDenseMat.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmMpiDenseMat.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmMpiDenseMat.h	(revision 21239)
@@ -0,0 +1,527 @@
+/*!\file:  IssmMpiDenseMat.h
+ * \brief implementation of parallel dense ISSM matrix. Internally, the parallel dense matrix is 
+ * split in rows across each cpu. Each matrix (representing a subset of rows) on each cpu is fully 
+ * dense, and is represented by a linear buffer of type doubletype. 
+ * This object needs to answer the API defined by the virtual functions in IssmAbsMat, 
+ * and the contructors required by IssmMat (see IssmMat.h)
+ */ 
+
+#ifndef _ISSM_MPI_DENSE_MAT_H_
+#define _ISSM_MPI_DENSE_MAT_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/shared.h"
+#include "../../datastructures/datastructures.h"
+#include "../mumps/mumpsincludes.h"
+#include "./Bucket.h"
+#include "./IssmMpiVec.h"
+#include <math.h>
+
+/*}}}*/
+
+/*We need to template this class, in case we want to create Matrices that hold
+  IssmDouble* matrix or IssmPDouble* matrix. 
+  Such matrices would be useful for use without or with the matlab or python
+  interface (which do not care for IssmDouble types, but only rely on
+  IssmPDouble types)*/
+template <class doubletype> class IssmAbsMat;
+
+template <class doubletype> 
+class IssmMpiDenseMat:public IssmAbsMat<doubletype>{
+
+	public:
+
+		int M,N;  //global size
+		int m;    //local number of rows
+		doubletype* matrix;  /*here, doubletype is either IssmDouble or IssmPDouble*/
+		DataSet*    buckets;  /*here, we store buckets of values that we will Assemble into a global matrix.*/
+
+		/*IssmMpiDenseMat constructors, destructors*/
+		IssmMpiDenseMat(){/*{{{*/
+			this->M=0;
+			this->N=0;
+			this->m=0;
+			this->matrix=NULL;
+			this->buckets=new DataSet();
+		}
+		/*}}}*/
+		IssmMpiDenseMat(int Min,int Nin){/*{{{*/
+			this->Init(Min,Nin);
+		}
+		/*}}}*/
+		IssmMpiDenseMat(int pM,int pN, doubletype sparsity){/*{{{*/
+			/*no sparsity involved here, we are fully dense, so just use the previous constructor: */
+			this->Init(pM,pN);
+		}
+		/*}}}*/
+		IssmMpiDenseMat(int min,int nin,int Min,int Nin,int* d_nnz,int* o_nnz){/*{{{*/
+			/*not needed, we are fully dense!: */
+
+			this->buckets=new DataSet();
+
+			this->M=Min;
+			this->N=Nin;
+			this->m=min;
+
+			/*Initialize pointer: */
+			this->matrix=NULL;
+
+			/*Allocate: */
+			if (m*N)this->matrix=xNewZeroInit<doubletype>(this->m*N);
+		}
+		/*}}}*/
+		IssmMpiDenseMat(doubletype* serial_mat,int Min,int Nin,doubletype sparsity){/*{{{*/
+
+			/*Here, we assume that the serial_mat is local to the local cpu, and that it has 
+			 * the correct size (m rows by N colums), n determined by DetermineLocalSize: */
+			this->buckets=new DataSet();
+			this->M=Min;
+			this->N=Nin;
+			this->m=DetermineLocalSize(this->M,IssmComm::GetComm());
+
+			this->matrix=NULL;
+			if(m*N){
+				this->matrix=xNewZeroInit<doubletype>(m*N);
+				xMemCpy<doubletype>(this->matrix,serial_mat,m*N);
+			}
+		}
+		/*}}}*/
+		IssmMpiDenseMat(int pM,int pN, int connectivity,int numberofdofspernode){/*{{{*/
+			/*not needed, we are fully dense!: */
+			this->Init(pM,pN);
+		}
+		/*}}}*/
+		~IssmMpiDenseMat(){/*{{{*/
+			xDelete<doubletype>(this->matrix);
+			M=0;
+			N=0;
+			m=0;
+			delete this->buckets;
+		}
+		/*}}}*/
+		void Init(int Min,int Nin){/*{{{*/
+
+			this->buckets=new DataSet();
+
+			this->M=Min;
+			this->N=Nin;
+
+			/*Figure out local number of rows: */
+			this->m=DetermineLocalSize(this->M,IssmComm::GetComm());
+
+			/*Initialize pointer: */
+			this->matrix=NULL;
+
+			/*Allocate: */
+			if (m*N)this->matrix=xNewZeroInit<doubletype>(this->m*N);
+		}
+		/*}}}*/
+
+		/*IssmMpiDenseMat specific routines */
+		void Echo(void){/*{{{*/
+
+			int my_rank;
+			int i,j,k;
+
+			/*Do a synchronized dump across all the rows: */
+			my_rank=IssmComm::GetRank();
+			for(i=0;i<IssmComm::GetSize();i++){
+				if (my_rank==i){
+					_printf_("cpu " << i << " #rows: " << this->m << "\n");
+					for (j=0;j<this->m;j++){
+						_printf_("row " << j << ":");
+						for (k=0;k<this->N;k++){
+							if(this->matrix[j*this->N+k]!=0)_printf_("(" << k << "," << this->matrix[j*this->N+k] << ") ");
+						}
+						_printf_("\n");
+					}
+				}
+				ISSM_MPI_Barrier(IssmComm::GetComm());
+			}
+
+		}
+		/*}}}*/
+		void Assemble(){/*{{{*/
+
+			int           i,j;
+
+			int         *RowRank            = NULL;
+			int           num_procs;
+
+			int        *row_indices_forcpu = NULL;
+			int        *col_indices_forcpu = NULL;
+			int        *modes_forcpu       = NULL;
+			doubletype *values_forcpu      = NULL;
+			int         *numvalues_forcpu   = NULL;
+			DataSet     **bucketsforcpu       = NULL;
+
+			int        **row_indices_fromcpu = NULL;
+			int        **col_indices_fromcpu = NULL;
+			int        **modes_fromcpu       = NULL;
+			doubletype **values_fromcpu      = NULL;
+			int         *numvalues_fromcpu   = NULL;
+
+			int           lower_row;
+			int           upper_row;
+			int*          sendcnts            = NULL;
+			int*          displs              = NULL;
+			int           count               = 0;
+
+			/*some communicator info: */
+			num_procs=IssmComm::GetSize();
+			ISSM_MPI_Comm comm=IssmComm::GetComm();
+
+			/*First, make a vector of size M, which for each row between 0 and M-1, tells which cpu this row belongs to: */
+			RowRank=DetermineRowRankFromLocalSize(M,m,comm);
+
+			/*Now, sort out our dataset of buckets according to cpu ownership of rows: {{{*/
+			bucketsforcpu=xNew<DataSet*>(num_procs);
+
+			for(i=0;i<num_procs;i++){
+				DataSet* bucketsofcpu_i=new DataSet();
+				for (j=0;j<buckets->Size();j++){
+					Bucket<doubletype>* bucket=(Bucket<doubletype>*)buckets->GetObjectByOffset(j);
+					bucket->SpawnBucketsPerCpu(bucketsofcpu_i,i,RowRank);
+				}
+				bucketsforcpu[i]=bucketsofcpu_i;
+			}
+			/*}}}*/
+
+			/*Recap, each cpu has num_procs datasets of buckets. For a certain cpu j, for a given dataset i, the buckets this  {{{
+			 * dataset owns correspond to rows that are owned by cpu i, not j!. Out of all the buckets we own, make row,col,value,insert_mode 
+			 * vectors that will be shipped around the cluster: */
+			this->BucketsBuildScatterBuffers(&numvalues_forcpu,&row_indices_forcpu,&col_indices_forcpu,&values_forcpu,&modes_forcpu,bucketsforcpu,num_procs);
+			/*}}}*/
+
+			/*Now, we need to allocate on each cpu arrays to receive data from all the other cpus. To know what we need to allocate, we need  {{{
+			 *some scatter calls: */
+			numvalues_fromcpu   = xNew<int>(num_procs);
+			for(i=0;i<num_procs;i++){
+				ISSM_MPI_Scatter(numvalues_forcpu,1,ISSM_MPI_INT,numvalues_fromcpu+i,1,ISSM_MPI_INT,i,comm);
+			}
+
+			row_indices_fromcpu=xNew<int*>(num_procs);
+			col_indices_fromcpu=xNew<int*>(num_procs);
+			values_fromcpu=xNew<doubletype*>(num_procs);
+			modes_fromcpu=xNew<int*>(num_procs);
+			for(i=0;i<num_procs;i++){
+				int size=numvalues_fromcpu[i];
+				if(size){
+					row_indices_fromcpu[i]=xNew<int>(size);
+					col_indices_fromcpu[i]=xNew<int>(size);
+					values_fromcpu[i]=xNew<doubletype>(size);
+					modes_fromcpu[i]=xNew<int>(size);
+				}
+				else{
+					row_indices_fromcpu[i]=NULL;
+					col_indices_fromcpu[i]=NULL;
+					values_fromcpu[i]=NULL;
+					modes_fromcpu[i]=NULL;
+				}
+			}
+			/*}}}*/
+
+			/*Scatter values around: {{{*/
+			/*Now, to scatter values across the cluster, we need sendcnts and displs. Our sendbufs have been built by BucketsBuildScatterBuffers, with a stride given 
+			 * by numvalues_forcpu. Get this ready to go before starting the scatter itslef. For reference, here is the ISSM_MPI_Scatterv prototype: 
+			 * int ISSM_MPI_Scatterv( void *sendbuf, int *sendcnts, int *displs, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcnt, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm) :*/
+			sendcnts=xNew<int>(num_procs);
+			displs=xNew<int>(num_procs);
+			count=0;
+			for(i=0;i<num_procs;i++){
+				sendcnts[i]=numvalues_forcpu[i];
+				displs[i]=count;
+				count+=numvalues_forcpu[i];
+			}
+
+			for(i=0;i<num_procs;i++){
+				ISSM_MPI_Scatterv( row_indices_forcpu, sendcnts, displs, ISSM_MPI_INT, row_indices_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_INT, i, comm);
+				ISSM_MPI_Scatterv( col_indices_forcpu, sendcnts, displs, ISSM_MPI_INT, col_indices_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_INT, i, comm);
+				ISSM_MPI_Scatterv( values_forcpu, sendcnts, displs, ISSM_MPI_DOUBLE, values_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_DOUBLE, i, comm);
+				ISSM_MPI_Scatterv( modes_forcpu, sendcnts, displs, ISSM_MPI_INT, modes_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_INT, i, comm);
+			}
+			/*}}}*/
+
+			/*Plug values into global matrix: {{{*/
+			GetOwnershipBoundariesFromRange(&lower_row,&upper_row,m,comm);
+			for(i=0;i<num_procs;i++){
+				int  numvalues=numvalues_fromcpu[i];
+				int* rows=row_indices_fromcpu[i];
+				int* cols=col_indices_fromcpu[i];
+				doubletype* values=values_fromcpu[i];
+				int* mods=modes_fromcpu[i];
+
+				for(j=0;j<numvalues;j++){
+					if(mods[j]==ADD_VAL) *(matrix+N*(rows[j]-lower_row)+cols[j])+=values[j];
+					else *(matrix+N*(rows[j]-lower_row)+cols[j])=values[j];
+				}
+			}
+			/*}}}*/
+
+			/*Free ressources:{{{*/
+			xDelete<int>(RowRank);
+			xDelete<int>(row_indices_forcpu);
+			xDelete<int>(col_indices_forcpu);
+			xDelete<int>(modes_forcpu);
+			xDelete<doubletype>(values_forcpu);
+			xDelete<int>(numvalues_forcpu);
+
+			for(i=0;i<num_procs;i++){
+				DataSet* buckets=bucketsforcpu[i];
+				delete buckets;
+			}
+			xDelete<DataSet*>(bucketsforcpu);
+
+			for(i=0;i<num_procs;i++){
+				int* rows=row_indices_fromcpu[i];
+				int* cols=col_indices_fromcpu[i];
+				int* modes=modes_fromcpu[i];
+				doubletype* values=values_fromcpu[i];
+
+				xDelete<int>(rows);
+				xDelete<int>(cols);
+				xDelete<int>(modes);
+				xDelete<doubletype>(values);
+			}
+			xDelete<int*>(row_indices_fromcpu);
+			xDelete<int*>(col_indices_fromcpu);
+			xDelete<int*>(modes_fromcpu);
+			xDelete<doubletype*>(values_fromcpu);
+			xDelete<int>(numvalues_fromcpu);
+
+			xDelete<int>(sendcnts);
+			xDelete<int>(displs);
+			/*}}}*/
+
+		}
+		/*}}}*/
+		doubletype Norm(NormMode mode){/*{{{*/
+
+			doubletype norm,local_norm;
+			doubletype absolute;
+			int i,j;
+
+			switch(mode){
+				case NORM_INF:
+					local_norm=0;
+					for(i=0;i<this->m;i++){
+						absolute=0;
+						for(j=0;j<this->N;j++){
+							absolute+=fabs(this->matrix[N*i+j]);
+						}
+						local_norm=max(local_norm,absolute);
+					}
+					ISSM_MPI_Reduce(&local_norm, &norm, 1, ISSM_MPI_DOUBLE, ISSM_MPI_MAX, 0, IssmComm::GetComm());
+					ISSM_MPI_Bcast(&norm,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+					return norm;
+					break; 
+				case NORM_FROB:
+					local_norm=0;
+					for(i=0;i<this->m;i++){
+						for(j=0;j<this->N;j++){
+							local_norm+=pow(this->matrix[N*i+j],2);
+						}
+					}
+					ISSM_MPI_Reduce(&local_norm, &norm, 1, ISSM_MPI_DOUBLE, ISSM_MPI_SUM, 0, IssmComm::GetComm());
+					ISSM_MPI_Bcast(&norm,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+					return sqrt(norm);
+					break; 
+
+				default:
+					_error_("unknown norm !");
+					break;
+			}
+		}
+		/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM=M;
+			*pN=N;
+		}
+		/*}}}*/
+		void GetLocalSize(int* pM,int* pN){/*{{{*/
+			*pM=m;
+			*pN=N;
+		}
+		/*}}}*/
+		void MatMult(IssmAbsVec<doubletype>* Xin,IssmAbsVec<doubletype>* AXin){/*{{{*/
+
+			int         i,j;
+			doubletype *X_serial  = NULL;
+
+			/*A check on the types: */
+			if(IssmVecTypeFromToolkitOptions()!=MpiEnum)_error_("MatMult operation only possible with 'mpi' vectors");
+
+			/*Now that we are sure, cast vectors: */
+			IssmMpiVec<doubletype>* X=(IssmMpiVec<doubletype>*)Xin;
+			IssmMpiVec<doubletype>* AX=(IssmMpiVec<doubletype>*)AXin;
+
+			/*Serialize input Xin: */
+			X_serial=X->ToMPISerial();
+
+			/*Every cpu has a serial version of the input vector. Use it to do the Matrix-Vector multiply 
+			 *locally and plug it into AXin: */
+			for(i=0;i<this->m;i++){
+				for(j=0;j<this->N;j++){
+					AX->vector[i]+=this->matrix[i*N+j]*X_serial[j];
+				}
+			}
+
+			/*Free ressources: */
+			xDelete<doubletype>(X_serial);
+		}
+		/*}}}*/
+		IssmMpiDenseMat<doubletype>* Duplicate(void){/*{{{*/
+
+			IssmMpiDenseMat<doubletype>* dup=new IssmMpiDenseMat<doubletype>(this->matrix,this->M,this->N,0);
+			return dup;
+
+		}
+		/*}}}*/
+		doubletype* ToSerial(void){/*{{{*/
+			_error_("not supported yet!");
+		}
+		/*}}}*/
+		void SetValues(int min,int* idxm,int nin,int* idxn,doubletype* values,InsMode mode){/*{{{*/
+
+			/*we need to store all the values we collect here in order to Assemble later. 
+			 * Indeed, the values we are collecting here most of the time will not belong 
+			 * to us, but to another part of the matrix on another cpu: */
+			_assert_(buckets);
+
+			buckets->AddObject(new Bucket<doubletype>(min,idxm,nin,idxn,values,mode));
+
+		}
+		/*}}}*/
+		void Convert(MatrixType type){/*{{{*/
+			_error_("not supported yet!");
+		}
+		/*}}}*/		
+		void BucketsBuildScatterBuffers(int** pnumvalues_forcpu,int** prow_indices_forcpu,int** pcol_indices_forcpu,doubletype** pvalues_forcpu,int** pmodes_forcpu,DataSet** bucketsforcpu,int num_procs){/*{{{*/
+
+			/*intermediary: */
+			int         i,j;
+			int         count                   = 0;
+			int         total_size              = 0;
+			int        *temp_row_indices_forcpu = NULL;
+			int        *temp_col_indices_forcpu = NULL;
+			doubletype *temp_values_forcpu      = NULL;
+			int        *temp_modes_forcpu       = NULL;
+
+			/*output: */
+			int        *numvalues_forcpu        = NULL;
+			int        *row_indices_forcpu      = NULL;
+			int        *col_indices_forcpu      = NULL;
+			doubletype *values_forcpu           = NULL;
+			int        *modes_forcpu            = NULL;
+
+			/*figure out size of buffers per cpu: */
+
+			numvalues_forcpu=xNew<int>(num_procs);
+			for(i=0;i<num_procs;i++){
+				DataSet    *buckets            = bucketsforcpu[i];
+
+				count=0;
+				for(j=0;j<buckets->Size();j++){
+					Bucket<doubletype>* bucket =(Bucket<doubletype>*)buckets->GetObjectByOffset(j);
+					count+=bucket->MarshallSize();
+				}
+
+				numvalues_forcpu[i]=count;
+			}
+
+			/*now, figure out size of  total buffers (for all cpus!): */
+			count=0;
+			for(i=0;i<num_procs;i++){
+				count+=numvalues_forcpu[i];
+			}
+			total_size=count;
+
+			/*Allocate buffers: */
+			row_indices_forcpu = xNew<int>(total_size);
+			col_indices_forcpu = xNew<int>(total_size);
+			values_forcpu = xNew<doubletype>(total_size);
+			modes_forcpu = xNew<int>(total_size);
+
+			/*we are going to march through the buffers, and marshall data onto them, so in order to not
+			 *lose track of where these buffers are located in memory, we are going to work using copies 
+			 of them: */
+			temp_row_indices_forcpu=row_indices_forcpu;
+			temp_col_indices_forcpu=col_indices_forcpu;
+			temp_values_forcpu=values_forcpu;
+			temp_modes_forcpu=modes_forcpu;
+
+			/*Fill buffers: */
+			for(i=0;i<num_procs;i++){
+				DataSet    *buckets            = bucketsforcpu[i];
+				for(j=0;j<buckets->Size();j++){
+					Bucket<doubletype>* bucket =(Bucket<doubletype>*)buckets->GetObjectByOffset(j);
+					bucket->Marshall(&temp_row_indices_forcpu,&temp_col_indices_forcpu,&temp_values_forcpu,&temp_modes_forcpu); //pass in the address of the buffers, so as to have the Marshall routine increment them.
+				}
+			}
+
+			/*sanity check: */
+			if (temp_row_indices_forcpu!=row_indices_forcpu+total_size)_error_("problem with marshalling of buckets");
+			if (temp_col_indices_forcpu!=col_indices_forcpu+total_size)_error_("problem with marshalling of buckets");
+			if (temp_values_forcpu!=values_forcpu+total_size)_error_("problem with marshalling of buckets");
+			if (temp_modes_forcpu!=modes_forcpu+total_size)_error_("problem with marshalling of buckets");
+
+			/*output buffers: */
+			*pnumvalues_forcpu   = numvalues_forcpu;
+			*prow_indices_forcpu = row_indices_forcpu;
+			*pcol_indices_forcpu = col_indices_forcpu;
+			*pvalues_forcpu      = values_forcpu;
+			*pmodes_forcpu       = modes_forcpu;
+		}
+		/*}}}*/		
+		#ifndef _HAVE_WRAPPERS_
+		/*Solve{{{*/
+		IssmAbsVec<IssmDouble>* Solve(IssmAbsVec<IssmDouble>* pfin, Parameters* parameters){
+
+			/*output: */
+			IssmMpiVec<IssmDouble>* uf=NULL;
+			IssmMpiVec<IssmDouble>* pf=NULL;
+
+			/*Assume we are getting an IssmMpiVec in input, downcast: */
+			pf=(IssmMpiVec<IssmDouble>*)pfin;
+
+			switch(IssmSolverTypeFromToolkitOptions()){
+				case MumpsEnum: {
+					/*Initialize output: */
+					uf=pf->Duplicate();
+					#ifdef _HAVE_MUMPS_
+					MpiDenseMumpsSolve(/*output*/ uf->vector,uf->M,uf->m, /*stiffness matrix:*/ this->matrix,this->M,this->N,this->m, /*right hand side load vector: */ pf->vector,pf->M,pf->m,parameters);
+					#else
+					_error_("IssmMpiDenseMat solver requires MUMPS solver");
+					#endif
+					return (IssmAbsVec<IssmDouble>*)uf;
+									 }
+				case GslEnum: {
+
+					IssmDouble* x=NULL;
+					#ifdef _HAVE_GSL_
+
+					DenseGslSolve(/*output*/ &x,/*stiffness matrix:*/ this->matrix,this->M,this->N, /*right hand side load vector: */ pf->vector,pf->M,parameters);
+
+					uf=new IssmMpiVec<IssmDouble>(x,this->N); xDelete(x);
+
+					return (IssmAbsVec<IssmDouble>*)uf;
+					#else
+					_error_("GSL support not compiled in!");
+					#endif
+								  }
+				default:
+					_error_("solver type not supported yet!");
+			}
+
+		}/*}}}*/
+		#endif
+};
+
+#endif //#ifndef _ISSM_MPI_DENSE_MAT_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmMpiSparseMat.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmMpiSparseMat.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmMpiSparseMat.h	(revision 21239)
@@ -0,0 +1,573 @@
+/*!\file:  IssmMpiSparseMat.h
+ * \brief implementation of parallel sparse ISSM matrix. Internally, the parallel sparse matrix is 
+ * split in rows across each cpu. Locally, on each cpu, the local matrix is represented by a vector of sparse rows.
+ * This object needs to answer the API defined by the virtual functions in IssmAbsMat, 
+ * and the contructors required by IssmMat (see IssmMat.h)
+ */ 
+
+#ifndef _ISSM_MPI_SPARSE_MAT_H_
+#define _ISSM_MPI_SPARSE_MAT_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../datastructures/datastructures.h"
+#include "../../shared/shared.h"
+#include "../mumps/mumpsincludes.h"
+#include "./Bucket.h"
+#include "./IssmMpiVec.h"
+#include "./SparseRow.h"
+#include <math.h>
+
+/*}}}*/
+
+/*We need to template this class, in case we want to create Matrices that hold
+  IssmDouble* matrix or IssmPDouble* matrix. 
+  Such matrices would be useful for use without or with the matlab or python
+  interface (which do not care for IssmDouble types, but only rely on
+  IssmPDouble types)*/
+
+template <class doubletype> class IssmAbsMat;
+
+template <class doubletype> 
+class IssmMpiSparseMat:public IssmAbsMat<doubletype>{
+
+	public:
+
+		int M,N;  //global size
+		int m;    //local number of rows
+		SparseRow<doubletype>** matrix;  /*here, doubletype is either IssmDouble or IssmPDouble*/
+		DataSet*    buckets;  /*here, we store buckets of values that we will Assemble into a global matrix.*/
+		/*IssmMpiSparseMat constructors, destructors*/
+		IssmMpiSparseMat(){/*{{{*/
+			this->M=0;
+			this->N=0;
+			this->m=0;
+			this->matrix=NULL;
+			this->buckets=new DataSet();
+		}
+		/*}}}*/
+		IssmMpiSparseMat(int Min,int Nin){/*{{{*/
+			this->Init(Min,Nin);
+		}
+		/*}}}*/
+		IssmMpiSparseMat(int pM,int pN, doubletype sparsity){/*{{{*/
+			/*no sparsity involved here, the sparsity pattern is resolve during the assemble phase: */
+			this->Init(pM,pN);
+		}
+		/*}}}*/
+		IssmMpiSparseMat(int min,int nin,int Min,int Nin,int* d_nnz,int* o_nnz){/*{{{*/
+
+			int i;
+
+			/*no sparsity involved here, the sparsity pattern is resolved at the assemble phase: */
+			this->buckets=new DataSet();
+
+			this->M=Min;
+			this->N=Nin;
+			this->m=min;
+
+			/*Initialize pointer: */
+			this->matrix=NULL;
+
+			/*Allocate: */
+			if (m*N){
+				this->matrix=xNew<SparseRow<doubletype>*>(m);
+				for(i=0;i<m;i++){
+					this->matrix[i]=new SparseRow<doubletype>(N);
+				}
+			}
+		}
+		/*}}}*/
+		IssmMpiSparseMat(int pM,int pN, int connectivity,int numberofdofspernode){/*{{{*/
+			/*this is not needed, sparsity pattern is resolved at assemble phase: */
+			this->Init(pM,pN);
+		}
+		/*}}}*/
+		void Init(int Min,int Nin){/*{{{*/
+			
+			int i;
+
+			this->buckets=new DataSet();
+
+			this->M=Min;
+			this->N=Nin;
+
+			/*Figure out local number of rows: */
+			this->m=DetermineLocalSize(this->M,IssmComm::GetComm());
+
+			/*Initialize pointer: */
+			this->matrix=NULL;
+
+			/*Allocate: */
+			if (m*N){
+				this->matrix=xNew<SparseRow<doubletype>*>(m);
+				for(i=0;i<m;i++){
+					this->matrix[i]=new SparseRow<doubletype>(N);
+				}
+			}
+		}
+		/*}}}*/
+		~IssmMpiSparseMat(){/*{{{*/
+			int i;
+
+			if(m*N){
+				for(i=0;i<m;i++){
+					delete this->matrix[i];
+				}
+				xDelete<SparseRow<doubletype>*>(this->matrix);
+			}
+			M=0;
+			N=0;
+			m=0;
+			delete this->buckets;
+		}
+		/*}}}*/
+
+		/*IssmMpiSparseMat specific routines */
+		void Echo(void){/*{{{*/
+
+			/*Do a synchronized dump across all the rows: */
+			int my_rank=IssmComm::GetRank();
+			for(int i=0;i<IssmComm::GetSize();i++){
+				if(my_rank==i){
+					_printf_("cpu " << i << " #rows: " << this->m << "\n");
+					for(int j=0;j<this->m;j++){
+						_printf_("row " << j << ":");
+						this->matrix[j]->Echo();
+						_printf_("\n");
+					}
+				}
+				ISSM_MPI_Barrier(IssmComm::GetComm());
+			}
+
+		}
+		/*}}}*/
+		void Assemble(){/*{{{*/
+
+			int           i,j;
+
+			int         *RowRank            = NULL;
+			int           num_procs;
+
+			int        *row_indices_forcpu = NULL;
+			int        *col_indices_forcpu = NULL;
+			int        *modes_forcpu       = NULL;
+			doubletype *values_forcpu      = NULL;
+			int         *numvalues_forcpu   = NULL;
+			DataSet     **bucketsforcpu       = NULL;
+
+			int        **row_indices_fromcpu = NULL;
+			int        **col_indices_fromcpu = NULL;
+			int        **modes_fromcpu       = NULL;
+			doubletype **values_fromcpu      = NULL;
+			int         *numvalues_fromcpu   = NULL;
+
+			int           lower_row;
+			int           upper_row;
+			int*          sendcnts            = NULL;
+			int*          displs              = NULL;
+			int           count               = 0;
+
+			int           this_row_numvalues;
+			int*          this_row_cols       = NULL;
+			int*          this_row_mods       = NULL;
+			int*          numvalues_perrow    = NULL;
+			int           row;
+			
+			doubletype**  values_perrow       = NULL;
+			int**         cols_perrow         = NULL;
+			int**         mods_perrow         = NULL;
+			int*          counters_perrow     = NULL;
+			int           counter;
+
+			/*Early exit: */
+			if(this->M*this->N==0)return; //no need to assemble.
+
+			/*some communicator info: */
+			num_procs=IssmComm::GetSize();
+			ISSM_MPI_Comm comm=IssmComm::GetComm();
+
+			/*First, make a vector of size M, which for each row between 0 and M-1, tells which cpu this row belongs to: */
+			RowRank=DetermineRowRankFromLocalSize(M,m,comm);
+
+			/*Now, sort out our dataset of buckets according to cpu ownership of rows: {{{*/
+			bucketsforcpu=xNew<DataSet*>(num_procs);
+
+			for(i=0;i<num_procs;i++){
+				DataSet* bucketsofcpu_i=new DataSet();
+				for (j=0;j<buckets->Size();j++){
+					Bucket<doubletype>* bucket=(Bucket<doubletype>*)buckets->GetObjectByOffset(j);
+					bucket->SpawnBucketsPerCpu(bucketsofcpu_i,i,RowRank);
+				}
+				bucketsforcpu[i]=bucketsofcpu_i;
+			}
+			/*}}}*/
+
+			/*Recap, each cpu has num_procs datasets of buckets. For a certain cpu j, for a given dataset i, the buckets this  {{{
+			 * dataset owns correspond to rows that are owned by cpu i, not j!. Out of all the buckets we own, make row,col,value,insert_mode 
+			 * vectors that will be shipped around the cluster: */
+			this->BucketsBuildScatterBuffers(&numvalues_forcpu,&row_indices_forcpu,&col_indices_forcpu,&values_forcpu,&modes_forcpu,bucketsforcpu,num_procs);
+			/*}}}*/
+
+			/*Now, we need to allocate on each cpu arrays to receive data from all the other cpus. To know what we need to allocate, we need  {{{
+			 *some scatter calls: */
+			numvalues_fromcpu   = xNew<int>(num_procs);
+			for(i=0;i<num_procs;i++){
+				ISSM_MPI_Scatter(numvalues_forcpu,1,ISSM_MPI_INT,numvalues_fromcpu+i,1,ISSM_MPI_INT,i,comm);
+			}
+
+			row_indices_fromcpu=xNew<int*>(num_procs);
+			col_indices_fromcpu=xNew<int*>(num_procs);
+			values_fromcpu=xNew<doubletype*>(num_procs);
+			modes_fromcpu=xNew<int*>(num_procs);
+			for(i=0;i<num_procs;i++){
+				int size=numvalues_fromcpu[i];
+				if(size){
+					row_indices_fromcpu[i]=xNew<int>(size);
+					col_indices_fromcpu[i]=xNew<int>(size);
+					values_fromcpu[i]=xNew<doubletype>(size);
+					modes_fromcpu[i]=xNew<int>(size);
+				}
+				else{
+					row_indices_fromcpu[i]=NULL;
+					col_indices_fromcpu[i]=NULL;
+					values_fromcpu[i]=NULL;
+					modes_fromcpu[i]=NULL;
+				}
+			}
+			/*}}}*/
+
+			/*Scatter values around: {{{*/
+			/*Now, to scatter values across the cluster, we need sendcnts and displs. Our sendbufs have been built by BucketsBuildScatterBuffers, with a stride given 
+			 * by numvalues_forcpu. Get this ready to go before starting the scatter itslef. For reference, here is the ISSM_MPI_Scatterv prototype: 
+			 * int ISSM_MPI_Scatterv( void *sendbuf, int *sendcnts, int *displs, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcnt, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm) :*/
+			sendcnts=xNew<int>(num_procs);
+			displs=xNew<int>(num_procs);
+			count=0;
+			for(i=0;i<num_procs;i++){
+				sendcnts[i]=numvalues_forcpu[i];
+				displs[i]=count;
+				count+=numvalues_forcpu[i];
+			}
+
+			for(i=0;i<num_procs;i++){
+				ISSM_MPI_Scatterv( row_indices_forcpu, sendcnts, displs, ISSM_MPI_INT, row_indices_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_INT, i, comm);
+				ISSM_MPI_Scatterv( col_indices_forcpu, sendcnts, displs, ISSM_MPI_INT, col_indices_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_INT, i, comm);
+				ISSM_MPI_Scatterv( values_forcpu, sendcnts, displs, ISSM_MPI_DOUBLE, values_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_DOUBLE, i, comm);
+				ISSM_MPI_Scatterv( modes_forcpu, sendcnts, displs, ISSM_MPI_INT, modes_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_INT, i, comm);
+			}
+			/*}}}*/
+
+			/*Plug values into global matrix. To do so, we are going to first figure out how many overall values each sparse row is going to get, then we fill up these values, and give it to each sparse row: {{{*/
+			GetOwnershipBoundariesFromRange(&lower_row,&upper_row,m,comm);
+
+			/*Figure out how many values each row is going to get: */
+			numvalues_perrow=xNewZeroInit<int>(this->m);
+			for(i=0;i<num_procs;i++){ 
+				int  numvalues=numvalues_fromcpu[i];
+				int* rows=row_indices_fromcpu[i];
+				for(j=0;j<numvalues;j++)numvalues_perrow[rows[j]-lower_row]++;
+			}
+
+			/*Allocate all the values, cols and mods from each cpu: */
+			values_perrow=xNew<doubletype*>(this->m);
+			cols_perrow=xNew<int*>(this->m);
+			mods_perrow=xNew<int*>(this->m);
+			counters_perrow=xNewZeroInit<int>(this->m);
+
+			for(i=0;i<this->m;i++){
+				values_perrow[i]=xNewZeroInit<doubletype>(numvalues_perrow[i]);
+				cols_perrow[i]=xNewZeroInit<int>(numvalues_perrow[i]);
+				mods_perrow[i]=xNewZeroInit<int>(numvalues_perrow[i]);
+			}
+
+			/*collect:*/
+			for(i=0;i<num_procs;i++){
+				int  numvalues=numvalues_fromcpu[i];
+				int* rows=row_indices_fromcpu[i];
+				int* cols=col_indices_fromcpu[i];
+				doubletype* values=values_fromcpu[i];
+				int* mods=modes_fromcpu[i];
+
+				for(j=0;j<numvalues;j++){
+					row=rows[j]-lower_row;
+					counter=counters_perrow[row];
+					values_perrow[row][counter]=values[j];
+					cols_perrow[row][counter]=cols[j];
+					mods_perrow[row][counter]=mods[j];
+					counter=counters_perrow[row]++;
+				}
+			}
+					
+			/*Plug into matrix: */
+			for(i=0;i<this->m;i++){
+				this->matrix[i]->SetValues(numvalues_perrow[i],cols_perrow[i],values_perrow[i],mods_perrow[i]);
+			}
+			/*}}}*/
+
+			/*Free ressources:{{{*/
+			xDelete<int>(numvalues_perrow);
+			xDelete<int>(RowRank);
+			xDelete<int>(row_indices_forcpu);
+			xDelete<int>(col_indices_forcpu);
+			xDelete<int>(modes_forcpu);
+			xDelete<doubletype>(values_forcpu);
+			xDelete<int>(numvalues_forcpu);
+
+			for(i=0;i<num_procs;i++){
+				DataSet* buckets=bucketsforcpu[i];
+				delete buckets;
+			}
+			xDelete<DataSet*>(bucketsforcpu);
+
+			for(i=0;i<num_procs;i++){
+				int* rows=row_indices_fromcpu[i];
+				int* cols=col_indices_fromcpu[i];
+				int* modes=modes_fromcpu[i];
+				doubletype* values=values_fromcpu[i];
+
+				xDelete<int>(rows);
+				xDelete<int>(cols);
+				xDelete<int>(modes);
+				xDelete<doubletype>(values);
+			}
+			xDelete<int*>(row_indices_fromcpu);
+			xDelete<int*>(col_indices_fromcpu);
+			xDelete<int*>(modes_fromcpu);
+			xDelete<doubletype*>(values_fromcpu);
+			xDelete<int>(numvalues_fromcpu);
+
+			xDelete<int>(sendcnts);
+			xDelete<int>(displs);
+			
+			for(i=0;i<this->m;i++){
+				doubletype* values=values_perrow[i]; xDelete<doubletype>(values);
+				int* cols=cols_perrow[i]; xDelete<int>(cols);
+				int* mods=mods_perrow[i]; xDelete<int>(mods);
+			}
+			xDelete<int>(counters_perrow);
+			xDelete<doubletype*>(values_perrow);
+			xDelete<int*>(cols_perrow);
+			xDelete<int*>(mods_perrow);
+			/*}}}*/
+
+		}
+		/*}}}*/
+		doubletype Norm(NormMode mode){/*{{{*/
+
+			doubletype norm,local_norm;
+			doubletype absolute;
+			int i;
+
+			switch(mode){
+				case NORM_INF:
+					local_norm=0;
+					for(i=0;i<this->m;i++){
+						local_norm=max(local_norm,this->matrix[i]->Norm(mode));
+					}
+					ISSM_MPI_Reduce(&local_norm, &norm, 1, ISSM_MPI_DOUBLE, ISSM_MPI_MAX, 0, IssmComm::GetComm());
+					ISSM_MPI_Bcast(&norm,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+					return norm;
+					break; 
+				case NORM_FROB:
+					local_norm=0;
+					for(i=0;i<this->m;i++){
+						local_norm+=this->matrix[i]->Norm(mode);
+					}
+					ISSM_MPI_Reduce(&local_norm, &norm, 1, ISSM_MPI_DOUBLE, ISSM_MPI_SUM, 0, IssmComm::GetComm());
+					ISSM_MPI_Bcast(&norm,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+					return sqrt(norm);
+					break; 
+
+				default:
+					_error_("unknown norm !");
+					break;
+			}
+		}
+		/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM=M;
+			*pN=N;
+		}
+		/*}}}*/
+		void GetLocalSize(int* pM,int* pN){/*{{{*/
+			*pM=m;
+			*pN=N;
+		}
+		/*}}}*/
+		void MatMult(IssmAbsVec<doubletype>* Xin,IssmAbsVec<doubletype>* AXin){/*{{{*/
+
+			/*A check on the types: */
+			if(IssmVecTypeFromToolkitOptions()!=MpiEnum)_error_("MatMult operation only possible with 'mpi' vectors");
+
+			/*Now that we are sure, cast vectors: */
+			IssmMpiVec<doubletype>* X=(IssmMpiVec<doubletype>*)Xin;
+			IssmMpiVec<doubletype>* AX=(IssmMpiVec<doubletype>*)AXin;
+
+			/*Serialize input Xin: */
+			doubletype* X_serial=X->ToMPISerial();
+
+			/*Every cpu has a serial version of the input vector. Use it to do the Matrix-Vector multiply 
+			 *locally and plug it into AXin: */
+			for(int i=0;i<this->m;i++){
+				AX->vector[i]=this->matrix[i]->Mult(X_serial);
+			}
+
+			/*Free ressources: */
+			xDelete<doubletype>(X_serial);
+		}
+		/*}}}*/
+		IssmMpiSparseMat<doubletype>* Duplicate(void){/*{{{*/
+
+			_error_("not supported yet!");
+
+		}
+		/*}}}*/
+		doubletype* ToSerial(void){/*{{{*/
+			_error_("not supported yet!");
+		}
+		/*}}}*/
+		void SetValues(int min,int* idxm,int nin,int* idxn,doubletype* values,InsMode mode){/*{{{*/
+
+			/*we need to store all the values we collect here in order to Assemble later. 
+			 * Indeed, the values we are collecting here most of the time will not belong 
+			 * to us, but to another part of the matrix on another cpu: */
+			_assert_(buckets);
+
+			buckets->AddObject(new Bucket<doubletype>(min,idxm,nin,idxn,values,mode));
+
+		}
+		/*}}}*/
+		void Convert(MatrixType type){/*{{{*/
+			_error_("not supported yet!");
+		}
+		/*}}}*/		
+		void BucketsBuildScatterBuffers(int** pnumvalues_forcpu,int** prow_indices_forcpu,int** pcol_indices_forcpu,doubletype** pvalues_forcpu,int** pmodes_forcpu,DataSet** bucketsforcpu,int num_procs){/*{{{*/
+
+			/*intermediary: */
+			int         i,j;
+			int         count                   = 0;
+			int         total_size              = 0;
+			int        *temp_row_indices_forcpu = NULL;
+			int        *temp_col_indices_forcpu = NULL;
+			doubletype *temp_values_forcpu      = NULL;
+			int        *temp_modes_forcpu       = NULL;
+
+			/*output: */
+			int        *numvalues_forcpu        = NULL;
+			int        *row_indices_forcpu      = NULL;
+			int        *col_indices_forcpu      = NULL;
+			doubletype *values_forcpu           = NULL;
+			int        *modes_forcpu            = NULL;
+
+			/*figure out size of buffers per cpu: */
+
+			numvalues_forcpu=xNew<int>(num_procs);
+			for(i=0;i<num_procs;i++){
+				DataSet    *buckets            = bucketsforcpu[i];
+
+				count=0;
+				for(j=0;j<buckets->Size();j++){
+					Bucket<doubletype>* bucket =(Bucket<doubletype>*)buckets->GetObjectByOffset(j);
+					count+=bucket->MarshallSize();
+				}
+
+				numvalues_forcpu[i]=count;
+			}
+
+			/*now, figure out size of  total buffers (for all cpus!): */
+			count=0;
+			for(i=0;i<num_procs;i++){
+				count+=numvalues_forcpu[i];
+			}
+			total_size=count;
+
+			/*Allocate buffers: */
+			row_indices_forcpu = xNew<int>(total_size);
+			col_indices_forcpu = xNew<int>(total_size);
+			values_forcpu = xNew<doubletype>(total_size);
+			modes_forcpu = xNew<int>(total_size);
+
+			/*we are going to march through the buffers, and marshall data onto them, so in order to not
+			 *lose track of where these buffers are located in memory, we are going to work using copies 
+			 of them: */
+			temp_row_indices_forcpu=row_indices_forcpu;
+			temp_col_indices_forcpu=col_indices_forcpu;
+			temp_values_forcpu=values_forcpu;
+			temp_modes_forcpu=modes_forcpu;
+
+			/*Fill buffers: */
+			for(i=0;i<num_procs;i++){
+				DataSet    *buckets            = bucketsforcpu[i];
+				for(j=0;j<buckets->Size();j++){
+					Bucket<doubletype>* bucket =(Bucket<doubletype>*)buckets->GetObjectByOffset(j);
+					bucket->Marshall(&temp_row_indices_forcpu,&temp_col_indices_forcpu,&temp_values_forcpu,&temp_modes_forcpu); //pass in the address of the buffers, so as to have the Marshall routine increment them.
+				}
+			}
+
+			/*sanity check: */
+			if (temp_row_indices_forcpu!=row_indices_forcpu+total_size)_error_("problem with marshalling of buckets");
+			if (temp_col_indices_forcpu!=col_indices_forcpu+total_size)_error_("problem with marshalling of buckets");
+			if (temp_values_forcpu!=values_forcpu+total_size)_error_("problem with marshalling of buckets");
+			if (temp_modes_forcpu!=modes_forcpu+total_size)_error_("problem with marshalling of buckets");
+
+			/*output buffers: */
+			*pnumvalues_forcpu   = numvalues_forcpu;
+			*prow_indices_forcpu = row_indices_forcpu;
+			*pcol_indices_forcpu = col_indices_forcpu;
+			*pvalues_forcpu      = values_forcpu;
+			*pmodes_forcpu       = modes_forcpu;
+		}
+		/*}}}*/		
+		#ifndef _HAVE_WRAPPERS_
+		/*Solve{{{*/
+		IssmAbsVec<IssmDouble>* Solve(IssmAbsVec<IssmDouble>* pfin, Parameters* parameters){
+
+			/*output: */
+			IssmMpiVec<IssmDouble>* uf=NULL;
+			IssmMpiVec<IssmDouble>* pf=NULL;
+
+			/*Assume we are getting an IssmMpiVec in input, downcast: */
+			pf=(IssmMpiVec<IssmDouble>*)pfin;
+
+			switch(IssmSolverTypeFromToolkitOptions()){
+				case MumpsEnum: {
+					/*Initialize output: */
+					uf=pf->Duplicate();
+					#ifdef _HAVE_MUMPS_
+					MpiSparseMumpsSolve(/*output*/ uf->vector,uf->M,uf->m, /*stiffness matrix:*/ this->matrix,this->M,this->N,this->m, /*right hand side load vector: */ pf->vector,pf->M,pf->m,parameters);
+					#else
+					_error_("IssmMpiSparseMat solver requires MUMPS solver");
+					#endif
+					return (IssmAbsVec<IssmDouble>*)uf;
+									 }
+				case GslEnum: {
+
+					IssmDouble* x=NULL;
+					#ifdef _HAVE_GSL_
+
+					_error_("not implemented yet!");
+					//SparseGslSolve(/*output*/ &x,/*stiffness matrix:*/ this->matrix,this->M,this->N, /*right hand side load vector: */ pf->vector,pf->M,parameters);
+
+					uf=new IssmMpiVec<IssmDouble>(x,this->N); xDelete(x);
+
+					return (IssmAbsVec<IssmDouble>*)uf;
+					#else
+					_error_("GSL support not compiled in!");
+					#endif
+								  }
+				default:
+					_error_("solver type not supported yet!");
+			}
+
+		}/*}}}*/
+		#endif
+};
+
+#endif //#ifndef _ISSM_MPI_SPARSE_MAT_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmMpiVec.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmMpiVec.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmMpiVec.h	(revision 21239)
@@ -0,0 +1,561 @@
+/*!\file:  IssmMpiVec.h
+ * \brief implementation of parallel dense ISSM vector. Internally, the parallel dense vector is 
+ * split in rows across each cpu. Each vector (representing a subset of rows) on each cpu is fully 
+ * dense, and is represented by a linear buffer of type doubletype. 
+ * This object needs to answer the API defined by the virtual functions in IssmAbsVec, 
+ * and the contructors required by IssmVec (see IssmVec.h)
+ */ 
+
+#ifndef _ISSM_MPI_VEC_H_
+#define _ISSM_MPI_VEC_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/MemOps/MemOps.h"
+#include "../../shared/io/io.h"
+#include "../mpi/issmmpi.h"
+#include <math.h>
+
+/*}}}*/
+
+/*We need to template this class, in case we want to create vectors that hold IssmDouble* vector or IssmPDouble* vector. 
+  Such vectors would be useful for use without or with the matlab or python interface (which do not care for IssmDouble types, 
+  but only rely on IssmPDouble types)*/
+template <class doubletype> class IssmAbsVec;
+
+template <class doubletype> 
+class IssmMpiVec:public IssmAbsVec<doubletype>{
+
+	public:
+
+		int M; //global size
+		int m; //local number of rows
+		doubletype* vector;  /*here, doubletype is either IssmDouble or IssmPDouble*/
+		DataSet*    buckets;  /*here, we store buckets of values that we will Assemble into a global vector.*/
+
+		/*IssmMpiVec constructors, destructors*/
+		IssmMpiVec(){/*{{{*/
+
+			this->M=0;
+			this->m=0;
+			this->vector=NULL;
+			this->buckets=new DataSet();
+		}
+		/*}}}*/
+		IssmMpiVec(int Min){/*{{{*/
+			this->Init(Min,false);
+		}
+		/*}}}*/
+		IssmMpiVec(int min, int Min){/*{{{*/
+			this->Init(min,true);
+		}
+		/*}}}*/
+		IssmMpiVec(int Min, bool fromlocalsize){/*{{{*/
+			this->Init(Min,fromlocalsize);
+		}
+		/*}}}*/
+		IssmMpiVec(doubletype* buffer,int Min){/*{{{*/
+
+			this->Init(Min,false);
+
+			if(this->M){
+				this->vector=xNew<doubletype>(this->m);
+				xMemCpy<doubletype>(this->vector,buffer,this->m);
+			}
+		}
+		/*}}}*/
+		IssmMpiVec(doubletype* buffer,int Min,int min){/*{{{*/
+
+			this->vector=NULL;
+			this->buckets=new DataSet();
+			this->M=Min;
+			this->m=min;
+
+			if(this->m){
+				this->vector=xNew<doubletype>(this->m);
+				xMemCpy<doubletype>(this->vector,buffer,this->m);
+			}
+		}
+		/*}}}*/
+		void Init(int Min,bool fromlocalsize){/*{{{*/
+
+			this->buckets=new DataSet();
+
+			if(fromlocalsize){
+				this->m=Min;
+				this->M=DetermineGlobalSize(this->m,IssmComm::GetComm());
+			}
+			else{
+				this->M=Min;
+				this->m=DetermineLocalSize(this->M,IssmComm::GetComm());
+			}
+
+			/*Initialize pointer: */
+			this->vector=NULL;
+
+			/*Allocate: */
+			if (m)this->vector=xNewZeroInit<doubletype>(this->m);
+		}
+		/*}}}*/
+		~IssmMpiVec(){/*{{{*/
+			xDelete<doubletype>(this->vector);
+			this->M=0;
+			this->m=0;
+			delete buckets;
+		}
+		/*}}}*/
+
+		/*IssmMpiVec specific routines*/
+		void Echo(void){/*{{{*/
+
+			int i,j;
+
+			/*Do a synchronized dump across all the rows: */
+			for(i=0;i<IssmComm::GetSize();i++){
+				if (IssmComm::GetRank()==i){
+					_printf_("cpu " << i << " #rows: " << this->m << "\n");
+					for (j=0;j<this->m;j++){
+						_printf_("row " << j << " " << this->vector[j] << "\n");
+					}
+					_printf_("\n");
+				}
+				ISSM_MPI_Barrier(IssmComm::GetComm());
+			}
+		}
+		/*}}}*/
+		void Assemble(){/*{{{*/
+
+			int           i,j;
+
+			int         *RowRank            = NULL;
+			int           num_procs;
+
+			int        *row_indices_forcpu = NULL;
+			int        *modes_forcpu       = NULL;
+			doubletype *values_forcpu      = NULL;
+			int         *numvalues_forcpu   = NULL;
+			DataSet     **bucketsforcpu       = NULL;
+
+			int        **row_indices_fromcpu = NULL;
+			int        **col_indices_fromcpu = NULL;
+			int        **modes_fromcpu       = NULL;
+			doubletype **values_fromcpu      = NULL;
+			int         *numvalues_fromcpu   = NULL;
+
+			int           lower_row;
+			int           upper_row;
+			int*          sendcnts            = NULL;
+			int*          displs              = NULL;
+			int           count               = 0;
+
+			/*some communicator info: */
+			num_procs=IssmComm::GetSize();
+			ISSM_MPI_Comm comm=IssmComm::GetComm();
+
+			/*First, make a vector of size M, which for each row between 0 and M-1, tells which cpu this row belongs to: */
+			RowRank=DetermineRowRankFromLocalSize(M,m,comm);
+
+			/*Now, sort out our dataset of buckets according to cpu ownership of rows: {{{*/
+			bucketsforcpu=xNew<DataSet*>(num_procs);
+
+			for(i=0;i<num_procs;i++){
+				DataSet* bucketsofcpu_i=new DataSet();
+				for (j=0;j<buckets->Size();j++){
+					Bucket<doubletype>* bucket=(Bucket<doubletype>*)buckets->GetObjectByOffset(j);
+					bucket->SpawnBucketsPerCpu(bucketsofcpu_i,i,RowRank);
+				}
+				bucketsforcpu[i]=bucketsofcpu_i;
+			}
+			/*}}}*/
+
+			/*Recap, each cpu has num_procs datasets of buckets. For a certain cpu j, for a given dataset i, the buckets this  {{{
+			 * dataset owns correspond to rows that are owned by cpu i, not j!. Out of all the buckets we own, make row,col,value,insert_mode 
+			 * vectors that will be shipped around the cluster: */
+			this->BucketsBuildScatterBuffers(&numvalues_forcpu,&row_indices_forcpu,&values_forcpu,&modes_forcpu,bucketsforcpu,num_procs);
+			/*}}}*/
+
+			/*Now, we need to allocate on each cpu arrays to receive data from all the other cpus. To know what we need to allocate, we need  {{{
+			 *some scatter calls: */
+			numvalues_fromcpu   = xNew<int>(num_procs);
+			for(i=0;i<num_procs;i++){
+				ISSM_MPI_Scatter(numvalues_forcpu,1,ISSM_MPI_INT,numvalues_fromcpu+i,1,ISSM_MPI_INT,i,comm);
+			}
+
+			row_indices_fromcpu=xNew<int*>(num_procs);
+			values_fromcpu=xNew<doubletype*>(num_procs);
+			modes_fromcpu=xNew<int*>(num_procs);
+			for(i=0;i<num_procs;i++){
+				int size=numvalues_fromcpu[i];
+				if(size){
+					row_indices_fromcpu[i]=xNew<int>(size);
+					values_fromcpu[i]=xNew<doubletype>(size);
+					modes_fromcpu[i]=xNew<int>(size);
+				}
+				else{
+					row_indices_fromcpu[i]=NULL;
+					values_fromcpu[i]=NULL;
+					modes_fromcpu[i]=NULL;
+				}
+			}
+			/*}}}*/
+
+			/*Scatter values around: {{{*/
+			/*Now, to scatter values across the cluster, we need sendcnts and displs. Our sendbufs have been built by BucketsBuildScatterBuffers, with a stride given 
+			 * by numvalues_forcpu. Get this ready to go before starting the scatter itslef. For reference, here is the ISSM_MPI_Scatterv prototype: 
+			 * int ISSM_MPI_Scatterv( void *sendbuf, int *sendcnts, int *displs, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcnt, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm) :*/
+			sendcnts=xNew<int>(num_procs);
+			displs=xNew<int>(num_procs);
+			count=0;
+			for(i=0;i<num_procs;i++){
+				sendcnts[i]=numvalues_forcpu[i];
+				displs[i]=count;
+				count+=numvalues_forcpu[i];
+			}
+
+			for(i=0;i<num_procs;i++){
+				ISSM_MPI_Scatterv( row_indices_forcpu, sendcnts, displs, ISSM_MPI_INT, row_indices_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_INT, i, comm);
+				ISSM_MPI_Scatterv( values_forcpu, sendcnts, displs, ISSM_MPI_DOUBLE, values_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_DOUBLE, i, comm);
+				ISSM_MPI_Scatterv( modes_forcpu, sendcnts, displs, ISSM_MPI_INT, modes_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_INT, i, comm);
+			}
+			/*}}}*/
+
+			/*Plug values into global vector: {{{*/
+			GetOwnershipBoundariesFromRange(&lower_row,&upper_row,m,comm);
+			for(i=0;i<num_procs;i++){
+				int  numvalues=numvalues_fromcpu[i];
+				int* rows=row_indices_fromcpu[i];
+				doubletype* values=values_fromcpu[i];
+				int* mods=modes_fromcpu[i];
+
+				for(j=0;j<numvalues;j++){
+					if(mods[j]==ADD_VAL) *(vector+(rows[j]-lower_row))+=values[j];
+					else *(vector+(rows[j]-lower_row))=values[j];
+				}
+			}
+			/*}}}*/
+
+			/*Free ressources:{{{*/
+			xDelete<int>(RowRank);
+			xDelete<int>(row_indices_forcpu);
+			xDelete<int>(modes_forcpu);
+			xDelete<doubletype>(values_forcpu);
+			xDelete<int>(numvalues_forcpu);
+
+			for(i=0;i<num_procs;i++){
+				DataSet* bucketsn=bucketsforcpu[i];
+				delete bucketsn;
+			}
+			xDelete<DataSet*>(bucketsforcpu);
+
+			for(i=0;i<num_procs;i++){
+				int* rows=row_indices_fromcpu[i];
+				int* modes=modes_fromcpu[i];
+				doubletype* values=values_fromcpu[i];
+
+				xDelete<int>(rows);
+				xDelete<int>(modes);
+				xDelete<doubletype>(values);
+			}
+			xDelete<int*>(row_indices_fromcpu);
+			xDelete<int*>(modes_fromcpu);
+			xDelete<doubletype*>(values_fromcpu);
+			xDelete<int>(numvalues_fromcpu);
+
+			xDelete<int>(sendcnts);
+			xDelete<int>(displs);
+			
+			/*Get rid of all buckets, as we have already added them to the matrix!: */
+			delete this->buckets;
+			this->buckets=new DataSet();
+			/*}}}*/
+
+		}
+		/*}}}*/
+		void SetValues(int ssize, int* list, doubletype* values, InsMode mode){/*{{{*/
+
+			/*we need to store all the values we collect here in order to Assemble later. 
+			 * Indeed, the values we are collecting here most of the time will not belong 
+			 * to us, but to another part of the vector on another cpu: */
+			_assert_(buckets);
+
+			buckets->AddObject(new Bucket<doubletype>(ssize, list, values, mode));
+
+		}
+		/*}}}*/
+		void SetValue(int dof, doubletype value, InsMode mode){/*{{{*/
+
+			/*we need to store the value we collect here in order to Assemble later. 
+			 * Indeed, the value we are collecting here most of the time will not belong 
+			 * to us, but to another part of the vector on another cpu: */
+			_assert_(buckets);
+
+			buckets->AddObject(new Bucket<doubletype>(1,&dof,&value, mode));
+		}
+		/*}}}*/
+		void GetValue(doubletype* pvalue,int dof){/*{{{*/
+			_error_("Get value on a MpiVec vector not implemented yet!");
+		}
+		/*}}}*/
+		void GetSize(int* pM){/*{{{*/
+
+			*pM=this->M;
+
+		}
+		/*}}}*/
+		void GetLocalSize(int* pM){/*{{{*/
+
+			*pM=this->m;
+
+		}
+		/*}}}*/
+		IssmMpiVec<doubletype>* Duplicate(void){/*{{{*/
+
+			return new IssmMpiVec<doubletype>(this->vector,this->M,this->m);
+
+		}
+		/*}}}*/
+		void Set(doubletype value){/*{{{*/
+
+			int i;
+			for(i=0;i<this->m;i++)this->vector[i]=value;
+
+		}
+		/*}}}*/
+		void AXPY(IssmAbsVec<doubletype>* Xin, doubletype a){/*{{{*/
+
+			int i;
+
+			/*Assume X is of the correct type, and downcast: */
+			IssmMpiVec* X=NULL;
+
+			X=(IssmMpiVec<doubletype>*)Xin;
+
+			/*y=a*x+y where this->vector is y*/
+			for(i=0;i<this->m;i++)this->vector[i]=a*X->vector[i]+this->vector[i];
+
+		}
+		/*}}}*/
+		void AYPX(IssmAbsVec<doubletype>* Xin, doubletype a){/*{{{*/
+			int i;
+
+			/*Assume X is of the correct type, and downcast: */
+			IssmMpiVec* X=NULL;
+
+			X=(IssmMpiVec<doubletype>*)Xin;
+
+			/*y=x+a*y where this->vector is y*/
+			for(i=0;i<this->m;i++)this->vector[i]=X->vector[i]+a*this->vector[i];
+
+		}
+		/*}}}*/
+		doubletype* ToMPISerial(void){/*{{{*/
+
+			/*communicator info: */
+			ISSM_MPI_Comm comm;
+			int num_procs;
+
+			/*ISSM_MPI_Allgatherv info: */
+			int  lower_row,upper_row;
+			int* recvcounts=NULL;
+			int* displs=NULL;
+
+			/*output: */
+			doubletype* buffer=NULL;
+
+			/*initialize comm info: */
+			comm=IssmComm::GetComm();
+			num_procs=IssmComm::GetSize();
+
+			/*Allocate: */
+			buffer=xNew<doubletype>(M);
+			recvcounts=xNew<int>(num_procs);
+			displs=xNew<int>(num_procs);
+
+			/*recvcounts:*/
+			ISSM_MPI_Allgather(&this->m,1,ISSM_MPI_INT,recvcounts,1,ISSM_MPI_INT,comm);
+
+			/*get lower_row: */
+			GetOwnershipBoundariesFromRange(&lower_row,&upper_row,this->m,comm);
+
+			/*displs: */
+			ISSM_MPI_Allgather(&lower_row,1,ISSM_MPI_INT,displs,1,ISSM_MPI_INT,comm);
+
+			/*All gather:*/
+			ISSM_MPI_Allgatherv(this->vector, this->m, ISSM_MPI_DOUBLE, buffer, recvcounts, displs, ISSM_MPI_DOUBLE,comm);
+
+			/*free ressources: */
+			xDelete<int>(recvcounts);
+			xDelete<int>(displs);
+
+			/*return: */
+			return buffer;
+
+		}
+		/*}}}*/
+		void Shift(doubletype shift){/*{{{*/
+			for(int i=0;i<this->m;i++)this->vector[i]+=shift;
+		}
+		/*}}}*/
+		void Copy(IssmAbsVec<doubletype>* toin){/*{{{*/
+
+			int i;
+
+			/*Assume toin is of the correct type, and downcast: */
+			IssmMpiVec* to=NULL;
+
+			to=(IssmMpiVec<doubletype>*)toin;
+
+			to->M=this->M;
+			for(i=0;i<this->m;i++)to->vector[i]=this->vector[i];
+
+		}
+		/*}}}*/
+		doubletype Norm(NormMode mode){/*{{{*/
+
+			doubletype local_norm;
+			doubletype norm;
+			int i;
+
+			switch(mode){
+				case NORM_INF:
+					//local_norm=0; for(i=0;i<this->m;i++)local_norm=max(local_norm,fabs(this->vector[i]));
+					local_norm=0; for(i=0;i<this->m;i++)local_norm=max(local_norm,this->vector[i]);
+					ISSM_MPI_Reduce(&local_norm, &norm, 1, ISSM_MPI_DOUBLE, ISSM_MPI_MAX, 0, IssmComm::GetComm());
+					ISSM_MPI_Bcast(&norm,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+					return norm;
+					break;
+				case NORM_TWO:
+					local_norm=0; 
+					for(i=0;i<this->m;i++)local_norm+=pow(this->vector[i],2);
+					ISSM_MPI_Reduce(&local_norm, &norm, 1, ISSM_MPI_DOUBLE, ISSM_MPI_SUM, 0, IssmComm::GetComm());
+					ISSM_MPI_Bcast(&norm,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+					return sqrt(norm);
+					break;
+				default:
+					_error_("unknown norm !");
+					break;
+			}
+		}
+		/*}}}*/
+		void Scale(doubletype scale_factor){/*{{{*/
+
+			int i;
+			for(i=0;i<this->M;i++)this->vector[i]=scale_factor*this->vector[i];
+
+		}
+		/*}}}*/
+		doubletype Dot(IssmAbsVec<doubletype>* inputin){/*{{{*/
+
+			int i;
+			doubletype local_dot=0;
+			doubletype dot=0;
+
+			/*Assume inputin is of the correct type, and downcast: */
+			IssmMpiVec* input=NULL;
+
+			input=(IssmMpiVec<doubletype>*)inputin;
+
+			for(i=0;i<this->m;i++)local_dot+=this->vector[i]*input->vector[i];
+
+			/*ISSM_MPI_SUM all the dots across the cluster: */
+			ISSM_MPI_Reduce(&local_dot, &dot, 1, ISSM_MPI_DOUBLE, ISSM_MPI_SUM, 0, IssmComm::GetComm());
+			ISSM_MPI_Bcast(&dot,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+			return dot;
+		}
+		/*}}}*/
+		void PointwiseDivide(IssmAbsVec<doubletype>* xin,IssmAbsVec<doubletype>* yin){/*{{{*/
+
+			int i;
+
+			/*Assume xin and yin are of the correct type, and downcast: */
+			IssmMpiVec* x=NULL;
+			IssmMpiVec* y=NULL;
+
+			x=(IssmMpiVec<doubletype>*)xin;
+			y=(IssmMpiVec<doubletype>*)yin;
+
+			/*pointwise w=x/y where this->vector is w: */
+			for(i=0;i<this->m;i++)this->vector[i]=x->vector[i]/y->vector[i];
+		}
+		/*}}}*/
+		void BucketsBuildScatterBuffers(int** pnumvalues_forcpu,int** prow_indices_forcpu,doubletype** pvalues_forcpu,int** pmodes_forcpu,DataSet** bucketsforcpu,int num_procs){/*{{{*/
+
+			/*intermediary: */
+			int         i,j;
+			int         count                   = 0;
+			int         total_size              = 0;
+			int        *temp_row_indices_forcpu = NULL;
+			doubletype *temp_values_forcpu      = NULL;
+			int        *temp_modes_forcpu       = NULL;
+
+			/*output: */
+			int        *numvalues_forcpu        = NULL;
+			int        *row_indices_forcpu      = NULL;
+			doubletype *values_forcpu           = NULL;
+			int        *modes_forcpu            = NULL;
+
+			/*figure out size of buffers per cpu: */
+
+			numvalues_forcpu=xNew<int>(num_procs);
+			for(i=0;i<num_procs;i++){
+				DataSet    *buckets            = bucketsforcpu[i];
+
+				count=0;
+				for(j=0;j<buckets->Size();j++){
+					Bucket<doubletype>* bucket =(Bucket<doubletype>*)buckets->GetObjectByOffset(j);
+					count+=bucket->MarshallSize();
+				}
+
+				numvalues_forcpu[i]=count;
+			}
+
+			/*now, figure out size of  total buffers (for all cpus!): */
+			count=0;
+			for(i=0;i<num_procs;i++){
+				count+=numvalues_forcpu[i];
+			}
+			total_size=count;
+
+			/*Allocate buffers: */
+			row_indices_forcpu = xNew<int>(total_size);
+			values_forcpu = xNew<doubletype>(total_size);
+			modes_forcpu = xNew<int>(total_size);
+
+			/*we are going to march through the buffers, and marshall data onto them, so in order to not
+			 *lose track of where these buffers are located in memory, we are going to work using copies 
+			 of them: */
+			temp_row_indices_forcpu=row_indices_forcpu;
+			temp_values_forcpu=values_forcpu;
+			temp_modes_forcpu=modes_forcpu;
+
+			/*Fill buffers: */
+			for(i=0;i<num_procs;i++){
+				DataSet    *buckets            = bucketsforcpu[i];
+				for(j=0;j<buckets->Size();j++){
+					Bucket<doubletype>* bucket =(Bucket<doubletype>*)buckets->GetObjectByOffset(j);
+					bucket->Marshall(&temp_row_indices_forcpu,&temp_values_forcpu,&temp_modes_forcpu); //pass in the address of the buffers, so as to have the Marshall routine increment them.
+				}
+			}
+
+			/*sanity check: */
+			if (temp_row_indices_forcpu!=row_indices_forcpu+total_size)_error_("problem with marshalling of buckets");
+			if (temp_values_forcpu!=values_forcpu+total_size)_error_("problem with marshalling of buckets");
+			if (temp_modes_forcpu!=modes_forcpu+total_size)_error_("problem with marshalling of buckets");
+
+			/*output buffers: */
+			*pnumvalues_forcpu   = numvalues_forcpu;
+			*prow_indices_forcpu = row_indices_forcpu;
+			*pvalues_forcpu      = values_forcpu;
+			*pmodes_forcpu       = modes_forcpu;
+		}
+		/*}}}*/		
+};
+#endif //#ifndef _ISSM_MPI_VEC_H_	
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmSeqVec.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmSeqVec.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmSeqVec.h	(revision 21239)
@@ -0,0 +1,281 @@
+/*!\file:  IssmSeqVec.h
+ * \brief implementation of an ISSM vector which run serially (1 cpu only), which is made of a fully dense 
+ * vector. Internally, this dense vector is just a linear buffer of type doubletype. 
+ * This object needs to answer the API defined by the virtual functions in IssmAbsVec, 
+ * and the contructors required by IssmVec (see IssmVec.h)
+ */ 
+
+#ifndef _ISSM_SEQ_VEC_H_
+#define _ISSM_SEQ_VEC_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/shared.h"
+#include <math.h>
+
+/*}}}*/
+
+/*We need to template this class, in case we want to create vectors that hold IssmDouble* vector or IssmPDouble* vector. 
+  Such vectors would be useful for use without or with the matlab or python interface (which do not care for IssmDouble types, 
+  but only rely on IssmPDouble types)*/
+
+template <class doubletype> class IssmAbsVec;
+
+template <class doubletype> 
+class IssmSeqVec: public IssmAbsVec<doubletype>{
+
+	public:
+
+		doubletype* vector;
+		int M;
+
+		/*IssmSeqVec constructors, destructors*/
+		IssmSeqVec(){/*{{{*/
+
+			this->M=0;
+			this->vector=NULL;
+		}
+		/*}}}*/
+		IssmSeqVec(int pM){/*{{{*/
+
+			this->M=pM;
+			this->vector=NULL;
+			if(this->M) this->vector=xNewZeroInit<doubletype>(pM);
+		}
+		/*}}}*/
+		IssmSeqVec(int pm,int pM){/*{{{*/
+
+			this->M=pM;
+			this->vector=NULL;
+			if(this->M) this->vector=xNewZeroInit<doubletype>(pM);
+		}
+		/*}}}*/
+		IssmSeqVec(int pM,bool fromlocalsize){/*{{{*/
+
+			this->M=pM;
+			this->vector=NULL;
+			if(this->M) this->vector=xNewZeroInit<doubletype>(pM);
+		}
+		/*}}}*/
+		IssmSeqVec(doubletype* buffer,int pM){/*{{{*/
+
+			this->M=pM;
+			this->vector=NULL;
+			if(this->M){
+				this->vector=xNew<doubletype>(pM);
+				xMemCpy<doubletype>(this->vector,buffer,pM);
+			}
+		}
+		/*}}}*/
+		~IssmSeqVec(){/*{{{*/
+			if(this->M)xDelete<doubletype>(this->vector);
+			M=0;
+		}
+		/*}}}*/
+
+		/*IssmSeqVec specific routines*/
+		void Echo(void){/*{{{*/
+
+			int i;
+			_printf_("IssmSeqVec size " << this->M << "\n");
+			for(i=0;i<M;i++){
+				_printf_(vector[i] << "\n ");
+			}
+		}
+		/*}}}*/
+		void Assemble(void){/*{{{*/
+
+			/*do nothing*/
+
+		}
+		/*}}}*/
+		void SetValues(int ssize, int* list, doubletype* values, InsMode mode){/*{{{*/
+
+			int i;
+			switch(mode){
+				case ADD_VAL:
+					for(i=0;i<ssize;i++) this->vector[list[i]]+=values[i];
+					break;
+				case INS_VAL:
+					for(i=0;i<ssize;i++) this->vector[list[i]]=values[i];
+					break;
+				default:
+					_error_("unknown insert mode!");
+					break;
+			}
+
+		}
+		/*}}}*/
+		void SetValue(int dof, doubletype value, InsMode mode){/*{{{*/
+
+			switch(mode){
+				case ADD_VAL:
+					this->vector[dof]+=value;
+					break;
+				case INS_VAL:
+					this->vector[dof]=value;
+					break;
+				default:
+					_error_("unknown insert mode!");
+					break;
+			}
+		}
+		/*}}}*/
+		void GetValue(doubletype* pvalue,int dof){/*{{{*/
+
+			*pvalue=this->vector[dof];
+
+		}
+		/*}}}*/
+		void GetSize(int* pM){/*{{{*/
+
+			*pM=this->M;
+
+		}
+		/*}}}*/
+		void GetLocalSize(int* pM){/*{{{*/
+
+			*pM=this->M;
+
+		}
+		/*}}}*/
+		IssmSeqVec<doubletype>* Duplicate(void){/*{{{*/
+
+			return new IssmSeqVec<doubletype>(this->vector,this->M);
+
+		}
+		/*}}}*/
+		void Set(doubletype value){/*{{{*/
+
+			int i;
+			for(i=0;i<this->M;i++)this->vector[i]=value;
+
+		}
+		/*}}}*/
+		void AXPY(IssmAbsVec<doubletype>* Xin, doubletype a){/*{{{*/
+
+			int i;
+
+			/*Assume X is of the correct type, and downcast: */
+			IssmSeqVec* X=NULL;
+
+			X=(IssmSeqVec<doubletype>*)Xin;
+
+			/*y=a*x+y where this->vector is y*/
+			for(i=0;i<this->M;i++)this->vector[i]=a*X->vector[i]+this->vector[i];
+
+		}
+		/*}}}*/
+		void AYPX(IssmAbsVec<doubletype>* Xin, doubletype a){/*{{{*/
+
+			int i;
+
+			/*Assume X is of the correct type, and downcast: */
+			IssmSeqVec* X=NULL;
+
+			X=(IssmSeqVec<doubletype>*)Xin;
+
+			/*y=x+a*y where this->vector is y*/
+			for(i=0;i<this->M;i++)this->vector[i]=X->vector[i]+a*this->vector[i];
+
+		}
+		/*}}}*/
+		doubletype* ToMPISerial(void){/*{{{*/
+
+			doubletype* buffer=NULL;
+
+			if(this->M){
+				buffer=xNew<doubletype>(this->M);
+				xMemCpy<doubletype>(buffer,this->vector,this->M);
+			}
+			return buffer;
+
+		}
+		/*}}}*/
+		void Shift(doubletype shift){/*{{{*/
+
+			for(int i=0;i<this->M;i++)this->vector[i]+=shift;
+
+		}
+		/*}}}*/
+		void Copy(IssmAbsVec<doubletype>* toin){/*{{{*/
+
+			int i;
+
+			/*Assume toin is of the correct type, and downcast: */
+			IssmSeqVec* to=NULL;
+
+			to=(IssmSeqVec<doubletype>*)toin;
+
+			to->M=this->M;
+			for(i=0;i<this->M;i++)to->vector[i]=this->vector[i];
+
+		}
+		/*}}}*/
+		doubletype Norm(NormMode mode){/*{{{*/
+
+			doubletype norm;
+			int i;
+
+			switch(mode){
+				case NORM_INF:
+					//norm=0; for(i=0;i<this->M;i++)norm=max(norm,fabs(this->vector[i]));
+					norm=0; for(i=0;i<this->M;i++)norm=max(norm,this->vector[i]);
+					return norm;
+					break;
+				case NORM_TWO:
+					norm=0; 
+					for(i=0;i<this->M;i++)norm+=pow(this->vector[i],2);
+					return sqrt(norm);
+					break;
+				default:
+					_error_("unknown norm !");
+					break;
+			}
+		}
+		/*}}}*/
+		void Scale(doubletype scale_factor){/*{{{*/
+
+			int i;
+			for(i=0;i<this->M;i++)this->vector[i]=scale_factor*this->vector[i];
+
+		}
+		/*}}}*/
+		doubletype Dot(IssmAbsVec<doubletype>* inputin){/*{{{*/
+
+			int i;
+
+			/*Assume inputin is of the correct type, and downcast: */
+			IssmSeqVec* input=NULL;
+
+			input=(IssmSeqVec<doubletype>*)inputin;
+
+			doubletype dot=0;
+			for(i=0;i<this->M;i++)dot+=this->vector[i]*input->vector[i];
+			return dot;
+
+		}
+		/*}}}*/
+		void PointwiseDivide(IssmAbsVec<doubletype>* xin,IssmAbsVec<doubletype>* yin){/*{{{*/
+
+			int i;
+
+			/*Assume xin and yin are of the correct type, and downcast: */
+			IssmSeqVec* x=NULL;
+			IssmSeqVec* y=NULL;
+
+			x=(IssmSeqVec<doubletype>*)xin;
+			y=(IssmSeqVec<doubletype>*)yin;
+
+			/*pointwise w=x/y where this->vector is w: */
+			for(i=0;i<this->M;i++)this->vector[i]=x->vector[i]/y->vector[i];
+		}
+		/*}}}*/
+};
+#endif //#ifndef _ISSM_SEQ_VEC_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmSolver.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmSolver.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmSolver.cpp	(revision 21239)
@@ -0,0 +1,24 @@
+/*!\file IssmSolver
+ * \brief implementation of solver 
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include <cstring>
+
+#include "../../shared/shared.h"
+#include "./issmtoolkit.h"
+
+void IssmSolve(IssmVec<IssmDouble>** pout,IssmMat<IssmDouble>* Kff, IssmVec<IssmDouble>* pf, Parameters* parameters){/*{{{*/
+
+	/*Let matrix decide, to retain object orientation: */
+	IssmVec<IssmDouble>* outvector=NULL;
+
+	outvector=Kff->Solve(pf,parameters);
+
+	*pout=outvector;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmSolver.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmSolver.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmSolver.h	(revision 21239)
@@ -0,0 +1,26 @@
+/*!\file:  IssmSolver.h
+ * \brief main hook up from Solver toolkit object to the ISSM toolkit
+ */ 
+
+#ifndef _ISSM_SOLVER_H_
+#define _ISSM_SOLVER_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/Numerics/types.h"
+
+/*}}}*/
+
+template <class doubletype> class IssmVec;
+template <class doubletype> class IssmMat;
+class Parameters;
+
+void IssmSolve(IssmVec<IssmDouble>** puf,IssmMat<IssmDouble>* Kff, IssmVec<IssmDouble>* pf,Parameters* parameters);
+
+#endif 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmToolkitUtils.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmToolkitUtils.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmToolkitUtils.cpp	(revision 21239)
@@ -0,0 +1,115 @@
+/*!\file:  IssmToolkitUtils.cpp
+ * \brief utilities used throughout our ISSM toolkit
+ */ 
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/MemOps/MemOps.h"
+#include "../../shared/io/Comm/IssmComm.h"
+#include "../../shared/Enum/Enum.h"
+#include "../../shared/Exceptions/exceptions.h"
+#include "../ToolkitOptions.h"
+#include "./IssmToolkitUtils.h"
+#include <string.h>
+/*}}}*/
+
+/*Routines: */
+int IssmMatTypeFromToolkitOptions(void){ /*{{{*/
+
+	char *mat_type      = NULL;
+	int   mat_type_enum;
+	int   num_procs     = 0;
+	bool  isparallel    = false;
+
+	/*first, figure out if we are running in parallel: */
+	num_procs=IssmComm::GetSize();
+	if(num_procs>1)isparallel=true;
+
+	/*retrieve matrix type as a string, from the Toolkits Options database, similar to what Petsc does. Actually, 
+	 *we try and stick with the Petsc matrix types: */
+	mat_type=ToolkitOptions::GetToolkitOptionValue("mat_type");
+
+	if (strcmp(mat_type,"mpidense")==0){
+		mat_type_enum=MpiDenseEnum;
+	}
+	else if (strcmp(mat_type,"mpisparse")==0){
+		mat_type_enum=MpiSparseEnum;
+	}
+	else if (strcmp(mat_type,"dense")==0){
+		if (isparallel) _error_("Dense matrix type not supported for parallel runs with num_procs>1");
+		else mat_type_enum=DenseEnum;
+	}
+	else _error_("matrix type not supported yet!");
+
+	/*free ressources: */
+	xDelete<char>(mat_type);
+
+	/*return: */
+	return mat_type_enum;
+} /*}}}*/
+int IssmVecTypeFromToolkitOptions(void){ /*{{{*/
+
+	char* vec_type=NULL;
+	int   vec_type_enum;
+	int   num_procs=0;
+	bool  isparallel=false;
+
+	/*first, figure out if we are running in parallel: */
+	num_procs=IssmComm::GetSize();
+	if(num_procs>1)isparallel=true;
+
+	/*retrieve vector type as a string, from the Toolkits Options database, similar to what Petsc does. Actually, 
+	 *we try and stick with the Petsc vector types: */
+	vec_type=ToolkitOptions::GetToolkitOptionValue("vec_type");
+
+	if (strcmp(vec_type,"mpi")==0){
+		vec_type_enum=MpiEnum;
+	}
+	else if (strcmp(vec_type,"seq")==0){
+		if (isparallel) _error_("Dense vector type not supported for parallel runs with num_procs>1");
+		else vec_type_enum=SeqEnum;
+	}
+	else _error_("vector type not supported yet!");
+
+	/*free ressources: */
+	xDelete<char>(vec_type);
+
+	/*return: */
+	return vec_type_enum;
+} /*}}}*/  
+int IssmSolverTypeFromToolkitOptions(void){ /*{{{*/
+
+	char* solver_type=NULL;
+	int   solver_type_enum;
+	int   num_procs=0;
+	bool  isparallel=false;
+
+	/*first, figure out if we are running in parallel: */
+	num_procs=IssmComm::GetSize();
+	if(num_procs>1)isparallel=true;
+
+	/*retrieve solver type as a string, from the Toolkits Options database, similar to what Petsc does. Actually, 
+	 *we try and stick with the Petsc vector types: */
+	solver_type=ToolkitOptions::GetToolkitOptionValue("solver_type");
+
+	if (strcmp(solver_type,"mumps")==0){
+		solver_type_enum=MumpsEnum;
+	}
+	else if (strcmp(solver_type,"gsl")==0){
+		if (isparallel) _error_("Gsl solver type not supported for parallel runs with num_procs>1");
+		else solver_type_enum=GslEnum;
+	}
+	else _error_("solver type not supported yet!");
+
+	/*free ressources: */
+	xDelete<char>(solver_type);
+
+	/*return: */
+	return solver_type_enum;
+} /*}}}*/  
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmToolkitUtils.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmToolkitUtils.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmToolkitUtils.h	(revision 21239)
@@ -0,0 +1,22 @@
+/*!\file:  IssmToolkitUtils.h
+ * \brief routines used throughout the ISSM toolkit
+ */ 
+
+#ifndef _ISSM_TOOLKIT_UTILS_H_
+#define _ISSM_TOOLKIT_UTILS_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*}}}*/
+
+int IssmMatTypeFromToolkitOptions(void);
+int IssmVecTypeFromToolkitOptions(void);
+int IssmSolverTypeFromToolkitOptions(void);
+
+#endif //#ifndef _ISSMMAT_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmVec.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmVec.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/IssmVec.h	(revision 21239)
@@ -0,0 +1,208 @@
+/*!\file:  IssmVec.h
+ * \brief Main Vector class for the Issm toolkit. 
+ */ 
+
+#ifndef _ISSMVEC_H_
+#define _ISSMVEC_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/Enum/Enum.h"
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/MemOps/MemOps.h"
+#include "./IssmToolkitUtils.h"
+#include <math.h>
+/*}}}*/
+
+/*We need to template this class, in case we want to create Vectors that hold
+  IssmDouble* matrix or IssmPDouble* matrix. 
+  Such vectors are useful for use without or with the matlab or python
+  interface (which do not care for IssmDouble types, but only rely on
+  IssmPDouble types)
+*/
+int IssmVecTypeFromToolkitOptions(void);
+template <class doubletype> class IssmSeqVec;
+template <class doubletype> class IssmMpiVec;
+
+template <class doubletype> 
+class IssmVec{
+
+	public:
+
+		IssmAbsVec<doubletype>* vector; /*abstract vector, which implements object orientation*/
+
+		/*IssmVec constructors, destructors*/
+		IssmVec(){ /*{{{*/
+			this->vector=NULL;
+		}
+		/*}}}*/
+		IssmVec(int M){/*{{{*/
+
+			switch(IssmVecTypeFromToolkitOptions()){
+
+				case SeqEnum: 
+					this->vector=new IssmSeqVec<doubletype>(M);
+					break;
+				case MpiEnum:
+					#ifdef _HAVE_MPI_
+					this->vector=new IssmMpiVec<doubletype>(M);
+					#else
+					_error_("Mpi vector requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("vector type not supported yet!");
+			}
+		}
+		/*}}}*/
+		IssmVec(int m,int M){/*{{{*/
+
+			switch(IssmVecTypeFromToolkitOptions()){
+
+				case SeqEnum: 
+					this->vector=new IssmSeqVec<doubletype>(m,M);
+					break;
+				case MpiEnum:
+					#ifdef _HAVE_MPI_
+					this->vector=new IssmMpiVec<doubletype>(m,M);
+					#else
+					_error_("Mpi vector requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("vector type not supported yet!");
+			}
+		}
+		/*}}}*/
+		IssmVec(int M,bool fromlocalsize){/*{{{*/
+
+			switch(IssmVecTypeFromToolkitOptions()){
+
+				case SeqEnum: 
+					this->vector=new IssmSeqVec<doubletype>(M,fromlocalsize);
+					break;
+				case MpiEnum:
+					#ifdef _HAVE_MPI_
+					this->vector=new IssmMpiVec<doubletype>(M,fromlocalsize);
+					#else
+					_error_("Mpi vector requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("vector type not supported yet!");
+			}
+		}
+		/*}}}*/
+		IssmVec(doubletype* buffer,int M){/*{{{*/
+
+			switch(IssmVecTypeFromToolkitOptions()){
+
+				case SeqEnum: 
+					this->vector=new IssmSeqVec<doubletype>(buffer,M);
+					break;
+				case MpiEnum:
+					#ifdef _HAVE_MPI_
+					this->vector=new IssmMpiVec<doubletype>(buffer,M);
+					#else
+					_error_("Mpi vector requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("vector type not supported yet!");
+			}
+		}
+		/*}}}*/
+		~IssmVec(){/*{{{*/
+			delete this->vector;
+		}
+		/*}}}*/
+
+		/*IssmVec specific routines*/
+		void Echo(void){/*{{{*/
+			vector->Echo();
+		}
+		/*}}}*/
+		void Assemble(void){/*{{{*/
+			vector->Assemble();
+		}
+		/*}}}*/
+		void SetValues(int ssize, int* list, doubletype* values, InsMode mode){/*{{{*/
+			vector->SetValues(ssize,list,values,mode);
+		}
+		/*}}}*/
+		void SetValue(int dof, doubletype value, InsMode mode){/*{{{*/
+			vector->SetValue(dof,value,mode);
+		}
+		/*}}}*/
+		void GetValue(doubletype* pvalue,int dof){/*{{{*/
+			vector->GetValue(pvalue,dof);
+		}
+		/*}}}*/
+		void GetSize(int* pM){/*{{{*/
+			vector->GetSize(pM);
+		}
+		/*}}}*/
+		void GetLocalSize(int* pM){/*{{{*/
+			vector->GetLocalSize(pM);
+		}
+		/*}}}*/
+		IssmVec<doubletype>* Duplicate(void){/*{{{*/
+
+			IssmVec<doubletype>* issmvector=NULL;
+
+			issmvector=new IssmVec<doubletype>();
+			issmvector->vector=this->vector->Duplicate();
+			this->vector->Copy(issmvector->vector);
+
+			return issmvector;
+		}
+		/*}}}*/
+		void Set(doubletype value){/*{{{*/
+			vector->Set(value);
+		}
+		/*}}}*/
+		void AXPY(IssmVec* X, doubletype a){/*{{{*/
+			vector->AXPY(X->vector,a);
+		}
+		/*}}}*/
+		void AYPX(IssmVec* X, doubletype a){/*{{{*/
+			vector->AYPX(X->vector,a);
+		}
+		/*}}}*/
+		doubletype* ToMPISerial(void){/*{{{*/
+			return vector->ToMPISerial();
+		}
+		/*}}}*/
+		void Shift(doubletype shift){/*{{{*/
+			vector->Shift(shift);
+		}
+		/*}}}*/
+		void Copy(IssmVec* to){/*{{{*/
+			vector->Copy(to->vector);
+		}
+		/*}}}*/
+		doubletype Norm(NormMode mode){/*{{{*/
+			return vector->Norm(mode);
+		}
+		/*}}}*/
+		void Scale(doubletype scale_factor){/*{{{*/
+			vector->Scale(scale_factor);
+		}
+		/*}}}*/
+		doubletype Dot(IssmVec* input){/*{{{*/
+			return vector->Dot(input->vector);
+		}
+		/*}}}*/
+		void PointwiseDivide(IssmVec* x,IssmVec* y){/*{{{*/
+			vector->PointwiseDivide(x->vector,y->vector);
+		}
+		/*}}}*/
+};
+
+#endif //#ifndef _ISSMVEC_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/SparseRow.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/SparseRow.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/SparseRow.h	(revision 21239)
@@ -0,0 +1,154 @@
+/*!\file:  SparseRow: 
+ * \brief implementation of a sparse row, which can then be used to make a sparse matrix.
+ */ 
+
+#ifndef _SPARSE_ROW_H_
+#define _SPARSE_ROW_H_
+
+/*Headers:*/
+#include "../toolkitsenums.h"
+#include "../../shared/shared.h"
+
+template <class doubletype> 
+class SparseRow{
+
+	public:
+
+		int         M; //real size
+		int         ncols; //number of non-zeros 
+		int*        indices;
+		doubletype* values;
+		
+		/*SparseRow constructors, destructors*/
+		SparseRow(){ /*{{{*/
+			 M=0;
+			 ncols=0;
+			 indices=NULL;
+			 values=NULL;
+		} /*}}}*/
+		SparseRow(int in_M){/*{{{*/
+			
+			M=in_M;
+			ncols=0;
+			indices=NULL;
+			values=NULL;
+
+		} /*}}}*/
+		~SparseRow(){/*{{{*/
+			if(ncols){
+				xDelete<int>(indices);
+				xDelete<doubletype>(values);
+			}
+		} /*}}}*/
+
+		/*SparseRow specific routines*/
+		void Echo(){ /*{{{*/
+			int i;
+
+			for(i=0;i<ncols;i++){
+				_printf_("(" << indices[i] << "," << values[i] << ") ");
+			}
+		} /*}}}*/
+		void SetValues(int numvalues,int* cols,doubletype* vals, int* mods){ /*{{{*/
+
+			int count;
+			int i,j;
+
+			if(!M)_error_("unknow dimension for this sparse row!");
+
+			/*Deallocate if already allocated: */
+			if(ncols){
+				xDelete<int>(indices);
+				xDelete<doubletype>(values);
+			}
+
+			/*check numvalues: */
+			if(!numvalues)return;
+
+			/*Go through cols and resolve duplicates: */
+			for(i=0;i<numvalues;i++){
+				for(j=i+1;j<numvalues;j++){
+					if (cols[j]==cols[i]){
+						if (mods[j]==ADD_VAL){
+							vals[i]+=vals[j];
+						}
+						else vals[i]=vals[j];
+						cols[j]=-1;
+					}
+					/*Ensure that this value will not be used anymore: */
+				}
+			}
+
+			/*Now go through cols once more, and retrieve only what we need: */
+			ncols=0;
+			for(i=0;i<numvalues;i++)if(cols[i]>=0)ncols++;
+
+			/*Allocate and fill: */
+			indices=xNew<int>(ncols); _assert_(indices);
+			values=xNewZeroInit<doubletype>(ncols);  _assert_(values);
+			
+			count=0;
+			for(i=0;i<numvalues;i++){
+				if(cols[i]>=0){
+					indices[count]=cols[i];
+					values[count]=vals[i];
+					count++;
+				}
+			}
+		
+			if(count!=ncols)_error_("counter problem during set values operations");
+		} /*}}}*/
+		doubletype Norm(NormMode mode){ /*{{{*/
+
+			int i;
+			doubletype norm=0;
+
+			switch(mode){
+				case NORM_INF:
+					for(i=0;i<ncols;i++){
+						norm+=fabs(values[i]);
+					}
+					return norm;
+					break; 
+				case NORM_FROB:
+					for(i=0;i<ncols;i++){
+						norm+=pow(values[i],2);
+					}
+					return norm;
+					break; 
+
+				default:
+					_error_("unknown norm !");
+					break;
+			}
+		}
+		/*}}}*/
+		doubletype Mult(doubletype* X){ /*{{{*/
+
+			int i;
+			doubletype mult=0;
+
+			for(i=0;i<ncols;i++){
+				mult+=values[i]*X[indices[i]];
+			}
+			
+			return mult;
+		}
+		/*}}}*/
+		int Nnz(void){ /*{{{*/
+
+			return ncols;
+		}
+		/*}}}*/
+		void SetIrnJcnA(int* irn_loc,int* jcn_loc,doubletype* a_loc,int i_index,int count){/*{{{*/
+			int i;
+
+			for(i=0;i<ncols;i++){
+				irn_loc[count+i]=i_index;
+				jcn_loc[count+i]=indices[i]+1; //fortran indexing
+				a_loc[count+i]=values[i];
+			}
+		}
+		/*}}}*/
+};
+#endif //#ifndef _SPARSE_ROW_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/issmtoolkit.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/issmtoolkit.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/issm/issmtoolkit.h	(revision 21239)
@@ -0,0 +1,28 @@
+/* \file issmtoolkit.h
+ * \brief all includes for MPI layer
+ */
+
+#ifndef _ISSM_TOOLKIT_H_
+#define _ISSM_TOOLKIT_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./IssmAbsMat.h"
+#include "./IssmAbsVec.h"
+#include "./IssmDenseMat.h"
+#include "./IssmMat.h"
+#include "./IssmSeqVec.h"
+#include "./IssmVec.h"
+#include "./IssmSolver.h"
+
+#ifdef _HAVE_MPI_
+#include "./IssmMpiDenseMat.h"
+#include "./IssmMpiSparseMat.h"
+#include "./IssmMpiVec.h"
+#endif
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/metis/metisincludes.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/metis/metisincludes.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/metis/metisincludes.h	(revision 21239)
@@ -0,0 +1,20 @@
+/* \file metisincludes.h
+ * \brief all includes from metis + our own patches
+ */
+
+#ifndef _METIS_INCLUDES_H_
+#define _METIS_INCLUDES_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Metis includes: */
+#include <metis.h>
+
+/*our own patches: */
+#include "patches/metispatches.h"
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/metis/patches/METIS_PartMeshNodalPatch.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/metis/patches/METIS_PartMeshNodalPatch.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/metis/patches/METIS_PartMeshNodalPatch.cpp	(revision 21239)
@@ -0,0 +1,64 @@
+/*!\file METIS_PartMeshNodalPatch
+ * \brief common interface to Metis 4.0 and 5.0
+ */
+
+#include <config.h>
+#include "../metisincludes.h"
+#include "../../../shared/shared.h"
+
+void METIS_PartMeshNodalPatch(int* pnumberofelements,int* pnumberofnodes, int* index, int* petype, int* pnumflag, int* pnum_procs, int* pedgecut, int* epart, int* npart){
+
+	#if _METIS_VERSION_ == 4
+	/*Our interface originates in the Metis 4.0 version, hence identical calls*/
+	METIS_PartMeshNodal(pnumberofelements,pnumberofnodes, index, petype, pnumflag, pnum_procs, pedgecut, epart, npart); 
+	#elif _METIS_VERSION_ == 5
+	/*This interface is heavily changed. More options, different ways of meshing, etc ...: */ 
+	int i;
+
+	idx_t options[METIS_NOPTIONS];
+	idx_t objval;
+	idx_t* eptr=NULL;
+	idx_t  k=0;
+	real_t* tpwgts=NULL;
+
+	/*setup options: */
+	METIS_SetDefaultOptions(options);
+
+	options[METIS_OPTION_PTYPE]   = 1;
+	options[METIS_OPTION_OBJTYPE] = 0;
+	options[METIS_OPTION_CTYPE]   = 1;
+	options[METIS_OPTION_IPTYPE]  = 4;
+	options[METIS_OPTION_RTYPE]   = 1;
+	options[METIS_OPTION_DBGLVL]  = 0;
+	options[METIS_OPTION_UFACTOR] = 30;
+	options[METIS_OPTION_MINCONN] = 0;
+	options[METIS_OPTION_CONTIG]  = 0;
+	options[METIS_OPTION_SEED]    = -1;
+	options[METIS_OPTION_NITER]   = 10;
+	options[METIS_OPTION_NCUTS]   = 1;
+
+	/*create eptr: */
+	eptr=xNew<idx_t>((*pnumberofelements+1));
+	eptr[0]=0;
+	for(i=0;i<*pnumberofelements;i++){
+		k+=3;
+		eptr[i+1]=k;
+	}
+
+	/*create tpwgts: */
+	tpwgts=xNew<real_t>(*pnum_procs);
+	for(i=0;i<*pnum_procs;i++){
+		tpwgts[i]=1.0/(*pnum_procs);
+	}
+
+	METIS_PartMeshNodal(pnumberofelements,pnumberofnodes, eptr, index,
+			NULL, NULL, pnum_procs, tpwgts, options, &objval,epart, npart);
+
+	/*clean-up*/
+	xDelete<idx_t>(eptr);
+	xDelete<real_t>(tpwgts);
+
+	#else
+	_error_("METIS version not supported yet");
+	#endif
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/metis/patches/metispatches.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/metis/patches/metispatches.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/metis/patches/metispatches.h	(revision 21239)
@@ -0,0 +1,28 @@
+/*\file metispatches.h
+ * \brief: our own patches for metis. Mainly to work through new apis from 4.0 to 5.0 version.
+ */
+
+#ifndef _METIS_PATCHES_H_
+#define _METIS_PATCHES_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+void METIS_PartMeshNodalPatch(int *, int *, int *, int *, int *, int *, int *, int *, int *); //Common interface we are using in ISSM.
+
+extern "C" {
+
+#if _METIS_VERSION_ == 4
+void METIS_PartMeshNodal(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
+#endif
+#if _METIS_VERSION_ == 5
+int METIS_PartMeshNodal(idx_t*, idx_t*, idx_t*, idx_t*, idx_t*, idx_t*, idx_t*, real_t*, idx_t*, idx_t*, idx_t*, idx_t*);
+int METIS_SetDefaultOptions(idx_t *options);
+#endif
+
+}
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/commops/DetermineGlobalSize.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/commops/DetermineGlobalSize.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/commops/DetermineGlobalSize.cpp	(revision 21239)
@@ -0,0 +1,20 @@
+/* \file DetermineGlobalSize.cpp
+ * \brief: routine to determine global size from local size 
+ */
+
+#include <stdio.h>
+#include <math.h>
+#include "../../../shared/shared.h"
+#include "../../../shared/Numerics/types.h"
+
+int DetermineGlobalSize(int local_size,ISSM_MPI_Comm comm){
+
+	/*output: */
+	int  global_size;
+
+	ISSM_MPI_Reduce(&local_size, &global_size, 1, ISSM_MPI_INT, ISSM_MPI_SUM, 0, comm);
+	ISSM_MPI_Bcast(&global_size,1,ISSM_MPI_INT,0,comm);
+
+	return global_size;
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/commops/DetermineLocalSize.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/commops/DetermineLocalSize.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/commops/DetermineLocalSize.cpp	(revision 21239)
@@ -0,0 +1,58 @@
+/* \file DetermineLocalSize.cpp
+ * \brief: routine to determine local size of a global petsc matrix or vector. 
+ */
+
+#include <stdio.h>
+#include <math.h>
+#include "../../../shared/shared.h"
+
+int DetermineLocalSize(int global_size,ISSM_MPI_Comm comm){
+
+	/*output: */
+	int  local_size;
+
+	/*intermediary: */
+	int  i;
+	int  row_rest;
+	int* num_local_rows=NULL;
+
+	/*from MPI: */
+	int num_procs;
+	int my_rank;
+
+	/*recover my_rank*/
+	ISSM_MPI_Comm_rank(comm,&my_rank);
+	ISSM_MPI_Comm_size(comm,&num_procs);
+
+	/* TODO replace the following with ->
+
+	local_size=global_size/num_procs; // integer division
+	if (global_size%num_procs>my_rank) local_size++; // distribute the remainder
+	return local_size;
+
+	<- to here  */
+
+	/*We are  not bound by any library, just use what seems most logical*/
+	num_local_rows=xNew<int>(num_procs);    
+
+	for (i=0;i<num_procs;i++){
+		/*Here, we use floor. We under distribute rows. The rows 
+		  left  are then redistributed, therefore resulting in a 
+		  more even distribution.*/
+		num_local_rows[i]=(int)floor((double)global_size/(double)num_procs); 
+	}
+
+	/*There may be some rows left. Distribute evenly.*/ 
+	row_rest=global_size - num_procs*(int)floor((double)global_size/(double)num_procs);
+	for (i=0;i<row_rest;i++){
+		num_local_rows[i]++;
+	}
+	local_size=num_local_rows[my_rank];
+
+	/*free ressources: */
+	xDelete<int>(num_local_rows);
+
+	/*return size: */
+	return local_size;
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/commops/DetermineRowRankFromLocalSize.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/commops/DetermineRowRankFromLocalSize.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/commops/DetermineRowRankFromLocalSize.cpp	(revision 21239)
@@ -0,0 +1,46 @@
+/* \file DetermineRowRankFromLocalSize.cpp
+ * \brief: routine to determine, from local size of a matrix or vector (in terms of number 
+ * of rows), a vector of global size  which for each row of the matrix or vector, determines
+ * what cpu this row belong to.
+ */
+
+#include <stdio.h>
+#include <math.h>
+#include "../../../shared/shared.h"
+#include "../../../shared/Numerics/types.h"
+
+int* DetermineRowRankFromLocalSize(int global_size,int localsize,ISSM_MPI_Comm comm){
+
+	/*intermediary: */
+	int i,j;
+	int my_rank=0;
+	int num_procs=0;
+	int lower_row,upper_row;
+
+	/*output: */
+	int* RowRank=NULL;
+
+	ISSM_MPI_Comm_rank(comm,&my_rank);
+	ISSM_MPI_Comm_size(comm,&num_procs);
+
+	/*allocate: */
+	RowRank=xNew<int>(global_size);
+
+	/*Gather all local_size values into alllocalsizes, for all cpus*/
+	int* alllocalsizes=xNew<int>(num_procs);
+	ISSM_MPI_Allgather(&localsize,1,ISSM_MPI_INT,alllocalsizes,1,ISSM_MPI_INT,comm);
+
+	/*From all localsizes, get lower row and upper row*/
+	lower_row=0;
+	upper_row=lower_row+alllocalsizes[0];
+	for(j=lower_row;j<upper_row;j++)RowRank[j]=0;
+
+	for(i=1;i<num_procs;i++){
+		lower_row=lower_row+alllocalsizes[i-1];
+		upper_row=upper_row+alllocalsizes[i];
+		for(j=lower_row;j<upper_row;j++)RowRank[j]=i;
+	}
+	xDelete<int>(alllocalsizes);
+
+	return RowRank;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/commops/GetOwnershipBoundariesFromRange.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/commops/GetOwnershipBoundariesFromRange.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/commops/GetOwnershipBoundariesFromRange.cpp	(revision 21239)
@@ -0,0 +1,45 @@
+/*! \file:  GetOwnershipBoundariesFromRange.cpp
+ *  \brief from a local range on each cpu, we determine what 
+ *  lower row and upper row from a matrix a cpu owns.
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include "../../../shared/MemOps/MemOps.h"
+#include "../../../shared/io/Comm/IssmComm.h"
+
+void GetOwnershipBoundariesFromRange(int* plower_row,int* pupper_row,int range,ISSM_MPI_Comm comm){
+
+	/*externals :*/
+	int my_rank;
+	int num_procs;
+
+	/*recover my_rank and num_procs:*/
+	ISSM_MPI_Comm_size(comm,&num_procs);
+	ISSM_MPI_Comm_rank(comm,&my_rank);
+
+	/*output: */
+	int lower_row,upper_row;
+
+	/*Gather all range values into allranges, for all nodes*/
+	int* allranges=xNew<int>(num_procs);
+	ISSM_MPI_Allgather(&range,1,ISSM_MPI_INT,allranges,1,ISSM_MPI_INT,comm);
+
+	/*From all ranges, get lower row and upper row*/
+	lower_row=0;
+	upper_row=lower_row+allranges[0];
+	for(int i=1;i<=my_rank;i++){
+		lower_row=lower_row+allranges[i-1];
+		upper_row=upper_row+allranges[i];
+	}
+
+	/*Assign output*/
+	*plower_row=lower_row;
+	*pupper_row=upper_row;
+	xDelete<int>(allranges);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/commops/commops.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/commops/commops.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/commops/commops.h	(revision 21239)
@@ -0,0 +1,17 @@
+/*! \file mpipatches.h
+ *  \brief: prototype header for all ISSM add-ons to MPI
+ */
+
+#ifndef MPI_PATCHES_H_ 
+#define MPI_PATCHES_H_
+
+#include "../../../shared/Numerics/types.h" 
+#include "../../../shared/io/Comm/IssmComm.h"
+#include "../../mpi/issmmpi.h"
+
+int DetermineLocalSize(int global_size,ISSM_MPI_Comm comm);
+int* DetermineRowRankFromLocalSize(int global_size,int localsize,ISSM_MPI_Comm comm);
+void GetOwnershipBoundariesFromRange(int* plower_row,int* pupper_row,int range,ISSM_MPI_Comm comm);
+int DetermineGlobalSize(int local_size,ISSM_MPI_Comm comm);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/issmmpi.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/issmmpi.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/issmmpi.cpp	(revision 21239)
@@ -0,0 +1,523 @@
+/* \file issmmpi.cpp
+ * \brief: implementation of all the mpi wrappers that ISSM requires. The goal is to control 
+ * which MPI layer we are using at compile time: the standard mpi, the autodiff mpi or no mpi at all.
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <cassert>
+#include <cstring> // for memcpy
+
+#include "./issmmpi.h"
+#include "../../shared/Numerics/types.h"
+
+#ifndef _HAVE_MPI_
+ISSM_MPI_Status ourIssmMPIStatusIgnore=0;
+size_t sizeHelper(ISSM_MPI_Datatype type) { /*{{{*/
+
+  switch(type) { 
+  case ISSM_MPI_CHAR: 
+    return sizeof(char);
+    break;
+  case ISSM_MPI_DOUBLE: 
+    return sizeof(double);
+    break;
+  case ISSM_MPI_INT: 
+    return sizeof(int);
+    break;
+  default: 
+    assert(0);
+    break;
+  }
+  return 0;
+}/*}}}*/
+#endif
+
+int ISSM_MPI_Allgather(void *sendbuf, int sendcount, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcount, ISSM_MPI_Datatype recvtype, ISSM_MPI_Comm comm) {  /*{{{*/
+  int rc=0;
+  assert(sendcount==recvcount || sendtype==recvtype); // we handle only identical representations
+#ifdef _HAVE_MPI_
+# ifdef _HAVE_AMPI_
+  rc=AMPI_Allgather(sendbuf,
+		    sendcount,
+		    sendtype,
+		    recvbuf,
+		    recvcount,
+		    recvtype,
+		    comm);
+# else
+  rc=MPI_Allgather(sendbuf,
+		   sendcount,
+		   sendtype,
+		   recvbuf,
+		   recvcount,
+		   recvtype,
+		   comm);
+# endif
+#else
+# ifdef _HAVE_ADOLC_
+  if (sendtype==ISSM_MPI_DOUBLE) { 
+    IssmDouble* activeSendBuf=(IssmDouble*)sendbuf;
+    IssmDouble* activeRecvBuf=(IssmDouble*)recvbuf;
+    for(int i=0;i<sendcount;++i) activeRecvBuf[i]=activeSendBuf[i];
+  }
+  else 
+# endif
+    memcpy(recvbuf,sendbuf,sizeHelper(sendtype)*sendcount);
+#endif
+  return rc;
+} /*}}}*/
+int ISSM_MPI_Allgatherv(void *sendbuf, int sendcount, ISSM_MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, ISSM_MPI_Datatype recvtype, ISSM_MPI_Comm comm) {  /*{{{*/
+  int rc=0;
+  assert(sendtype==recvtype); // we handle only identical representations
+#ifdef _HAVE_MPI_
+# ifdef _HAVE_AMPI_
+  rc=AMPI_Allgatherv(sendbuf,
+		     sendcount,
+		     sendtype,
+		     recvbuf,
+		     recvcounts,
+		     displs,
+		     recvtype,
+		     comm);
+# else
+  rc=MPI_Allgatherv(sendbuf,
+		    sendcount,
+		    sendtype,
+		    recvbuf,
+		    recvcounts,
+		    displs,
+		    recvtype,
+		    comm);
+# endif
+#else
+  assert(sendcount==recvcounts[0]); // we handle only identical representations 
+# ifdef _HAVE_ADOLC_
+  if (sendtype==ISSM_MPI_DOUBLE) { 
+    IssmDouble* activeSendBuf=(IssmDouble*)sendbuf;
+    IssmDouble* activeRecvBuf=(IssmDouble*)(recvbuf)+displs[0];
+    for(int i=0;i<sendcount;++i) activeRecvBuf[i]=activeSendBuf[i];
+  }
+  else 
+# endif
+    memcpy((char*)recvbuf+(sizeHelper(recvtype)*displs[0]),sendbuf,sizeHelper(sendtype)*sendcount);
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Allreduce(void *sendbuf, void *recvbuf, int count, ISSM_MPI_Datatype datatype, ISSM_MPI_Op op, ISSM_MPI_Comm comm){/*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+# ifdef _HAVE_AMPI_
+  rc=AMPI_Allreduce(sendbuf,
+		    recvbuf,
+		    count,
+		    datatype,
+		    op,
+		    comm);
+# else
+  rc=MPI_Allreduce(sendbuf,
+		   recvbuf,
+		   count,
+		   datatype,
+		   op,
+		   comm);
+# endif
+#else
+# ifdef _HAVE_ADOLC_
+  if (datatype==ISSM_MPI_DOUBLE) { 
+    IssmDouble* activeSendBuf=(IssmDouble*)sendbuf;
+    IssmDouble* activeRecvBuf=(IssmDouble*)recvbuf;
+    for(int i=0;i<count;++i) activeRecvBuf[i]=activeSendBuf[i];
+  }
+  else 
+# endif
+    memcpy(recvbuf,sendbuf,sizeHelper(datatype)*count);
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Barrier(ISSM_MPI_Comm comm){  /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+# ifdef _HAVE_AMPI_
+  rc=AMPI_Barrier(comm);
+# else 
+  rc=MPI_Barrier(comm);
+# endif
+#else
+// do nothing
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Bcast(void *buffer, int count, ISSM_MPI_Datatype datatype, int root, ISSM_MPI_Comm comm){  /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+# ifdef _HAVE_AMPI_
+  rc=AMPI_Bcast(buffer, 
+		count,
+		datatype,
+		root,
+		comm);
+# else
+  rc=MPI_Bcast(buffer, 
+	       count,
+	       datatype,
+	       root,
+	       comm);
+# endif
+#else 
+// nothing to be done here 
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Comm_free(ISSM_MPI_Comm *comm){ /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+# ifdef _HAVE_AMPI_
+  assert(0); // to be implemented
+# else 
+  rc=MPI_Comm_free(comm);
+# endif
+#else
+// do nothing
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Comm_rank(ISSM_MPI_Comm comm, int *rank){  /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+  rc=MPI_Comm_rank(comm,
+		   rank);
+#else
+  *rank=0;
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Comm_size( ISSM_MPI_Comm comm, int *size){ /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+  rc=MPI_Comm_size(comm,
+		   size);
+#else
+  *size=1;
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Finalize(void){  /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+# ifdef _HAVE_AMPI_
+  rc=AMPI_Finalize_NT();
+# else
+  rc=MPI_Finalize();
+# endif
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Gather(void *sendbuf, int sendcnt, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcnt, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm){  /*{{{*/
+
+  int rc=0;
+  assert(sendtype==recvtype && sendcnt==recvcnt); // we handle only identical representations
+#ifdef _HAVE_MPI_
+# ifdef _HAVE_AMPI_
+  rc=AMPI_Gather(sendbuf,
+		 sendcnt,
+		 sendtype,
+		 recvbuf,
+		 recvcnt,
+		 recvtype,
+		 root,
+		 comm);
+# else
+  rc=MPI_Gather(sendbuf,
+		sendcnt,
+		sendtype,
+		recvbuf,
+		recvcnt,
+		recvtype,
+		root,
+		comm);
+# endif
+#else
+# ifdef _HAVE_ADOLC_
+  if (sendtype==ISSM_MPI_DOUBLE) { 
+    IssmDouble* activeSendBuf=(IssmDouble*)sendbuf;
+    IssmDouble* activeRecvBuf=(IssmDouble*)recvbuf;
+    for(int i=0;i<sendcnt;++i) activeRecvBuf[i]=activeSendBuf[i];
+  }
+  else 
+# endif
+    memcpy(recvbuf,sendbuf,sizeHelper(sendtype)*sendcnt);
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Gatherv(void *sendbuf, int sendcnt, ISSM_MPI_Datatype sendtype, void *recvbuf, int *recvcnts, int *displs, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm){/*{{{*/
+
+  int rc=0;
+  assert(sendtype==recvtype); // we handle only identical representations
+#ifdef _HAVE_MPI_
+# ifdef _HAVE_AMPI_
+  rc=AMPI_Gatherv(sendbuf,
+		  sendcnt,
+		  sendtype,
+		  recvbuf,
+		  recvcnts,
+		  displs,
+		  recvtype,
+		  root,
+		  comm);
+# else
+  rc=MPI_Gatherv(sendbuf,
+		 sendcnt,
+		 sendtype,
+		 recvbuf,
+		 recvcnts,
+		 displs,
+		 recvtype,
+		 root,
+		 comm);
+# endif
+#else
+  assert(sendcnt==recvcnts[0]); // we handle only identical representations 
+# ifdef _HAVE_ADOLC_
+  if (sendtype==ISSM_MPI_DOUBLE) { 
+    IssmDouble* activeSendBuf=(IssmDouble*)sendbuf;
+    IssmDouble* activeRecvBuf=(IssmDouble*)(recvbuf)+displs[0];
+    for(int i=0;i<sendcnt;++i) activeRecvBuf[i]=activeSendBuf[i];
+  }
+  else 
+# endif
+    memcpy((char*)recvbuf+(sizeHelper(recvtype)*displs[0]),sendbuf,sizeHelper(sendtype)*sendcnt);
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Init(int *argc, char ***argv){  /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+# ifdef _HAVE_AMPI_
+  rc=AMPI_Init_NT(argc,argv);
+# else
+  rc=MPI_Init(argc,argv);
+# endif
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Recv(void *buf, int count, ISSM_MPI_Datatype datatype, int source, int tag, ISSM_MPI_Comm comm, ISSM_MPI_Status *status){ /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+# ifdef _HAVE_AMPI_
+  rc=AMPI_Recv(buf, 
+	       count,
+	       datatype,
+	       source,
+	       tag,
+	       AMPI_FROM_SEND, // as long as there are no other variants
+	       comm,
+	       status);
+# else
+  rc=MPI_Recv(buf, 
+	      count,
+	      datatype,
+	      source,
+	      tag,
+	      comm,
+	      status);
+# endif
+#else 
+// nothing to be done here 
+// as long as nobody tries to do anything with 'status' 
+// we won't do anything to it here either
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Reduce(void *sendbuf, void *recvbuf, int count, ISSM_MPI_Datatype datatype, ISSM_MPI_Op op, int root, ISSM_MPI_Comm comm){ /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+# ifdef _HAVE_AMPI_
+  rc=AMPI_Reduce(sendbuf,
+		 recvbuf,
+		 count,
+		 datatype,
+		 op,
+		 root,
+		 comm);
+# else
+  rc=MPI_Reduce(sendbuf,
+		recvbuf,
+		count,
+		datatype,
+		op,
+		root,
+		comm);
+# endif
+#else
+# ifdef _HAVE_ADOLC_
+  if (datatype==ISSM_MPI_DOUBLE) { 
+    IssmDouble* activeSendBuf=(IssmDouble*)sendbuf;
+    IssmDouble* activeRecvBuf=(IssmDouble*)recvbuf;
+    for(int i=0;i<count;++i) activeRecvBuf[i]=activeSendBuf[i];
+  }
+  else 
+# endif
+    memcpy(recvbuf,sendbuf,sizeHelper(datatype)*count);
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Scatter(void *sendbuf, int sendcnt, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcnt, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm){ /*{{{*/
+
+  int rc=0;
+  assert(sendtype==recvtype && sendcnt==recvcnt); // we handle only identical representations
+#ifdef _HAVE_MPI_
+# ifdef _HAVE_AMPI_
+  rc=AMPI_Scatter(sendbuf,
+		  sendcnt,
+		  sendtype,
+		  recvbuf,
+		  recvcnt,
+		  recvtype,
+		  root,
+		  comm);
+# else
+  rc=MPI_Scatter(sendbuf,
+		 sendcnt,
+		 sendtype,
+		 recvbuf,
+		 recvcnt,
+		 recvtype,
+		 root,
+		 comm);
+# endif
+#else
+# ifdef _HAVE_ADOLC_
+  if (sendtype==ISSM_MPI_DOUBLE) { 
+    IssmDouble* activeSendBuf=(IssmDouble*)sendbuf;
+    IssmDouble* activeRecvBuf=(IssmDouble*)recvbuf;
+    for(int i=0;i<recvcnt;++i) activeRecvBuf[i]=activeSendBuf[i];
+  }
+  else 
+# endif
+    memcpy(recvbuf,sendbuf,sizeHelper(sendtype)*recvcnt);
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Scatterv(void *sendbuf, int *sendcnts, int *displs, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcnt, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm){ /*{{{*/
+
+  int rc=0;
+  assert(sendtype==recvtype); // we handle only identical representations
+#ifdef _HAVE_MPI_
+# ifdef _HAVE_AMPI_
+  rc=AMPI_Scatterv(sendbuf,
+		   sendcnts,
+		   displs,
+		   sendtype,
+		   recvbuf,
+		   recvcnt,
+		   recvtype,
+		   root,
+		   comm);
+# else
+  rc=MPI_Scatterv(sendbuf,
+		  sendcnts,
+		  displs,
+		  sendtype,
+		  recvbuf,
+		  recvcnt,
+		  recvtype,
+		  root,
+		  comm);
+# endif
+#else
+  assert(sendcnts[0]==recvcnt); // we handle only identical representations 
+# ifdef _HAVE_ADOLC_
+  if (sendtype==ISSM_MPI_DOUBLE) { 
+    IssmDouble* activeSendBuf=(IssmDouble*)(sendbuf)+displs[0];
+    IssmDouble* activeRecvBuf=(IssmDouble*)recvbuf;
+    for(int i=0;i<recvcnt;++i) activeRecvBuf[i]=activeSendBuf[i];
+  }
+  else 
+# endif
+    memcpy(recvbuf,(char*)sendbuf+(sizeHelper(sendtype)*displs[0]),sizeHelper(sendtype)*recvcnt);
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Send(void *buf, int count, ISSM_MPI_Datatype datatype, int dest, int tag, ISSM_MPI_Comm comm){ /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+# ifdef _HAVE_AMPI_
+  rc=AMPI_Send(buf, 
+	       count,
+	       datatype,
+	       dest,
+	       tag,
+	       AMPI_TO_RECV, // as long as there are no other variants
+	       comm);
+# else
+  rc=MPI_Send(buf, 
+	      count,
+	      datatype,
+	      dest,
+	      tag,
+	      comm);
+# endif
+#else 
+// nothing to be done here 
+#endif
+  return rc;
+}/*}}}*/
+double ISSM_MPI_Wtime(void){/*{{{*/
+
+#ifdef _HAVE_MPI_
+	return MPI_Wtime();
+#else 
+	assert(0); // to be implemented
+	return 0.0;
+#endif
+}/*}}}*/
+void ISSM_MPI_ContiguousInAdolc(size_t aSize) { /*{{{*/
+
+#ifdef _HAVE_ADOLC_
+  ensureContiguousLocations(aSize);
+#endif
+}/*}}}*/
+int ISSM_MPI_Comm_split(ISSM_MPI_Comm comm, int color, int key, ISSM_MPI_Comm *newcomm){ /*{{{*/
+
+int rc=0;
+#ifdef _HAVE_MPI_
+#ifdef _HAVE_AMPI_
+rc=MPI_Comm_split(comm, color, key, newcomm);
+#else
+rc=MPI_Comm_split(comm, color, key, newcomm);
+#endif
+#else 
+// nothing to be done here 
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Intercomm_create(ISSM_MPI_Comm comm,int local_leader,ISSM_MPI_Comm peer_comm, int remote_leader, int tag,ISSM_MPI_Comm *newintercomm){ /*{{{*/
+
+	int rc=0;
+#ifdef _HAVE_MPI_
+#ifdef _HAVE_AMPI_
+	rc=MPI_Intercomm_create(comm,local_leader,peer_comm,remote_leader,tag,newintercomm);
+#else
+	rc=MPI_Intercomm_create(comm,local_leader,peer_comm,remote_leader,tag,newintercomm);
+#endif
+#else 
+	// nothing to be done here 
+#endif
+	return rc;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/issmmpi.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/issmmpi.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mpi/issmmpi.h	(revision 21239)
@@ -0,0 +1,148 @@
+/* \file issmmpi.h
+ * \brief: header file that defines all the mpi wrappers that ISSM requires. The goal is to control 
+ * which MPI layer we are using at compile time: the standard mpi, the autodiff mpi or no mpi at all.
+ */
+
+#ifndef _ISSM_MPI_H_
+#define _ISSM_MPI_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include <cstddef>
+#include <cassert>
+#include "../../shared/Numerics/types.h"
+
+#ifdef _HAVE_MPI_
+	/*Include header files: {{{*/
+	#ifdef _HAVE_AMPI_
+		#include <ampi/ampi.h>
+	#elif  _HAVE_PETSC_MPI_ // Petsc now hides there MPI header. It can be reached through Petsc.
+		#include <petsc.h>
+	#else 
+		#include <mpi.h>
+	#endif
+	/*}}}*/
+	/*MPI defines: *{{{*/
+	// types
+	typedef MPI_Comm             ISSM_MPI_Comm;
+	typedef MPI_Datatype         ISSM_MPI_Datatype;
+	typedef MPI_Op               ISSM_MPI_Op;
+	typedef MPI_Status           ISSM_MPI_Status;
+
+	// data types
+	#define ISSM_MPI_CHAR       MPI_CHAR
+	#ifdef _HAVE_AMPI_
+		#define ISSM_MPI_DOUBLE    AMPI_ADOUBLE // corresponds to IssmDouble
+	#else 
+		#define ISSM_MPI_DOUBLE    MPI_DOUBLE  // corresponds to IssmDouble 
+	#endif
+	#define ISSM_MPI_PDOUBLE    MPI_DOUBLE  // corresponds to IssmPDouble
+	#define ISSM_MPI_INT        MPI_INT
+
+	// operations
+	#define ISSM_MPI_MAX        MPI_MAX
+	#define ISSM_MPI_MIN        MPI_MIN
+	#define ISSM_MPI_PROD       MPI_PROD
+	#define ISSM_MPI_SUM        MPI_SUM
+
+	// others
+	#define ISSM_MPI_COMM_WORLD    MPI_COMM_WORLD
+	#define ISSM_MPI_STATUS_IGNORE MPI_STATUS_IGNORE
+	#define ISSM_MPI_ANY_TAG       MPI_ANY_TAG
+	#define ISSM_MPI_ANY_SOURCE    MPI_ANY_SOURCE
+
+    /*other include files: */
+	#include "./commops/commops.h"
+	/*}}}*/
+#else  
+	/*Our ISSM MPI defines: {{{*/
+	// types
+	typedef int                  ISSM_MPI_Comm;
+	typedef int                  ISSM_MPI_Datatype;
+	typedef int                  ISSM_MPI_Op;
+	typedef int                  ISSM_MPI_Status;
+
+	// data types
+	#define ISSM_MPI_CHAR       1
+	#define ISSM_MPI_DOUBLE     2
+	#define ISSM_MPI_PDOUBLE    3
+	#define ISSM_MPI_INT        4
+
+	// operations
+	#define ISSM_MPI_MAX        1
+	#define ISSM_MPI_MIN        2
+	#define ISSM_MPI_PROD       3
+	#define ISSM_MPI_SUM        4
+
+	// others
+	#define ISSM_MPI_COMM_WORLD    1
+	extern ISSM_MPI_Status ourIssmMPIStatusIgnore;
+	#define ISSM_MPI_STATUS_IGNORE &ourIssmMPIStatusIgnore
+	#define ISSM_MPI_ANY_TAG       2
+	#define ISSM_MPI_ANY_SOURCE    3
+	/*}}}*/
+# endif 
+
+template <class T> ISSM_MPI_Datatype TypeToMPIType(){assert(false);};
+template <> inline ISSM_MPI_Datatype TypeToMPIType<IssmDouble>(){return ISSM_MPI_DOUBLE;};
+template <> inline ISSM_MPI_Datatype TypeToMPIType<int>(){return ISSM_MPI_INT;};
+template <> inline ISSM_MPI_Datatype TypeToMPIType<char>(){return ISSM_MPI_CHAR;};
+template <class T> int ISSM_MPI_Bcast(T *buffer, int count,int root, ISSM_MPI_Comm comm){  /*{{{*/
+
+	int rc=0;
+
+	/*Get MPI type*/
+	ISSM_MPI_Datatype datatype = TypeToMPIType<T>();
+
+#ifdef _HAVE_MPI_
+# ifdef _HAVE_AMPI_
+	rc=AMPI_Bcast(buffer, 
+				count,
+				datatype,
+				root,
+				comm);
+# else
+	rc=MPI_Bcast(buffer, 
+				count,
+				datatype,
+				root,
+				comm);
+# endif
+#else 
+	// nothing to be done here 
+#endif
+	return rc;
+}/*}}}*/
+
+/* interfaces  {{{*/
+int ISSM_MPI_Allgather(void *sendbuf, int sendcount, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcount, ISSM_MPI_Datatype recvtype, ISSM_MPI_Comm comm);
+int ISSM_MPI_Allgatherv(void *sendbuf, int sendcount, ISSM_MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, ISSM_MPI_Datatype recvtype, ISSM_MPI_Comm comm); 
+int ISSM_MPI_Allreduce(void *sendbuf, void *recvbuf, int count, ISSM_MPI_Datatype datatype, ISSM_MPI_Op op, ISSM_MPI_Comm comm); 
+int ISSM_MPI_Barrier(ISSM_MPI_Comm comm);
+int ISSM_MPI_Bcast(void *buffer, int count, ISSM_MPI_Datatype datatype, int root, ISSM_MPI_Comm comm);
+int ISSM_MPI_Comm_free(ISSM_MPI_Comm *comm);
+int ISSM_MPI_Comm_rank(ISSM_MPI_Comm comm, int *rank);
+int ISSM_MPI_Comm_size( ISSM_MPI_Comm comm, int *size);
+int ISSM_MPI_Finalize(void);
+int ISSM_MPI_Gather(void *sendbuf, int sendcnt, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcnt, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm);
+int ISSM_MPI_Gatherv(void *sendbuf, int sendcnt, ISSM_MPI_Datatype sendtype, void *recvbuf, int *recvcnts, int *displs, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm);
+int ISSM_MPI_Init(int *argc, char ***argv);
+int ISSM_MPI_Recv(void *buf, int count, ISSM_MPI_Datatype datatype, int source, int tag, ISSM_MPI_Comm comm, ISSM_MPI_Status *status);
+int ISSM_MPI_Reduce(void *sendbuf, void *recvbuf, int count, ISSM_MPI_Datatype datatype, ISSM_MPI_Op op, int root, ISSM_MPI_Comm comm);
+int ISSM_MPI_Scatter(void *sendbuf, int sendcnt, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcnt, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm); 
+int ISSM_MPI_Scatterv(void *sendbuf, int *sendcnts, int *displs, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcnt, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm); 
+int ISSM_MPI_Send(void *buf, int count, ISSM_MPI_Datatype datatype, int dest, int tag, ISSM_MPI_Comm comm);
+double ISSM_MPI_Wtime(void);
+int ISSM_MPI_Comm_split(ISSM_MPI_Comm comm, int color, int key, ISSM_MPI_Comm *newcomm);
+int ISSM_MPI_Intercomm_create(ISSM_MPI_Comm comm,int local_leader,ISSM_MPI_Comm peer_comm, int remote_leader, int tag,ISSM_MPI_Comm *newintercomm);
+
+// special for Adol-C locations when buffers are allocated with new
+// this could end up in the xNew template specialized for adoubles 
+// so as to not litter the code with it.
+void ISSM_MPI_ContiguousInAdolc(size_t aSize);
+/*}}}*/
+
+#endif  //#ifndef _ISSM_MPI_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mumps/MpiDenseMumpsSolve.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mumps/MpiDenseMumpsSolve.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mumps/MpiDenseMumpsSolve.cpp	(revision 21239)
@@ -0,0 +1,316 @@
+/*!\file MpiDenseMumpsSolve.cpp
+ * \brief: solve dense matrix system with MUMPS
+ */
+
+/*Header files: */
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/Numerics/types.h"
+#include "../../shared/MemOps/MemOps.h"
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/io/Comm/IssmComm.h"
+#include "../../classes/Params/GenericParam.h"
+#include "../../classes/Params/Parameters.h"
+#include "../mpi/issmmpi.h"
+#include "../adolc/adolcincludes.h"
+#include "./mumpsincludes.h"
+
+/*Mumps header files: */
+#include <dmumps_c.h>
+
+void MumpsInit(DMUMPS_STRUC_C &theMumpsStruc){ 
+	theMumpsStruc.par          = 1;  
+	theMumpsStruc.sym          = 0;
+	theMumpsStruc.comm_fortran = MPI_Comm_c2f(IssmComm::GetComm());
+	theMumpsStruc.job          = -1;
+	dmumps_c(&theMumpsStruc);
+}
+
+// must be preceded by a call to MumpsInit
+void MumpsSettings(DMUMPS_STRUC_C &theMumpsStruc) { 
+	/*Control statements:{{{ */
+	theMumpsStruc.icntl[1-1] = 6; //error verbose: default 6, 0 or negative -> suppressed
+	theMumpsStruc.icntl[2-1] = 0; //std verbose: default 1, 0 or negative -> suppressed
+	theMumpsStruc.icntl[3-1] = 0; //global information verbose: default 6, 0 or negative -> suppressed
+	theMumpsStruc.icntl[4-1] = 0; //verbose everything: default is 4
+	theMumpsStruc.icntl[5-1] = 0;
+	theMumpsStruc.icntl[18-1] = 3;
+
+	theMumpsStruc.icntl[20-1] = 0;
+	theMumpsStruc.icntl[21-1] = 0;
+	theMumpsStruc.icntl[30-1] = 0;
+	/*}}}*/
+}
+
+// must be preceded by a call to MumpsInit
+void MumpsAnalyze(DMUMPS_STRUC_C &theMumpsStruc) { 
+	theMumpsStruc.job          = 1;
+	dmumps_c(&theMumpsStruc);
+}
+
+// must be preceded by a call to MumpsAnalyze
+void MumpsFactorize(DMUMPS_STRUC_C &theMumpsStruc) { 
+	theMumpsStruc.job          = 2;
+	dmumps_c(&theMumpsStruc);
+}
+
+// must be preceded by a call to MumpsFactorize
+void MumpsBacksubstitute(DMUMPS_STRUC_C &theMumpsStruc) { 
+	theMumpsStruc.job          = 3;
+	dmumps_c(&theMumpsStruc);
+}
+
+// must be preceded at least  by a call to MumpsInit
+void MumpsFinalize(DMUMPS_STRUC_C &theMumpsStruc) { 
+	theMumpsStruc.job          = -2;
+	dmumps_c(&theMumpsStruc);
+}
+
+void MumpsSolve(int n,int nnz,int local_nnz,int* irn_loc,int* jcn_loc, IssmPDouble *a_loc, IssmPDouble *rhs, Parameters* parameters=0 /*unused here*/){
+	/*Initialize mumps*/
+	DMUMPS_STRUC_C theMumpsStruc;
+	MumpsInit(theMumpsStruc);
+	MumpsSettings(theMumpsStruc);
+
+	/*now setup the rest of theMumpsStruc */
+	theMumpsStruc.n=n;
+	theMumpsStruc.nz=nnz;
+	theMumpsStruc.nz_loc=local_nnz;
+	theMumpsStruc.irn_loc=irn_loc;
+	theMumpsStruc.jcn_loc=jcn_loc;
+	theMumpsStruc.a_loc=a_loc;
+	theMumpsStruc.rhs=rhs;
+	theMumpsStruc.nrhs=1;
+	theMumpsStruc.lrhs=1;
+
+	/*Solve system*/
+	MumpsAnalyze(theMumpsStruc);
+	MumpsFactorize(theMumpsStruc);
+	MumpsBacksubstitute(theMumpsStruc);
+	MumpsFinalize(theMumpsStruc);
+}
+
+#ifdef _HAVE_ADOLC_
+// prototype for active variant
+void MumpsSolve(int n,
+		int nnz,
+		int local_nnz,
+		int* irn_loc,
+		int* jcn_loc,
+		IssmDouble *a_loc,
+		IssmDouble *rhs,
+		Parameters* parameters);
+#endif 
+
+void MpiDenseMumpsSolve( /*output: */ IssmDouble* uf, int uf_M, int uf_m, /*matrix input: */ IssmDouble* Kff, int Kff_M, int Kff_N, int Kff_m, /*right hand side vector: */ IssmDouble* pf, int pf_M, int pf_m, Parameters* parameters){ /*{{{*/
+
+	/*Variables*/
+	ISSM_MPI_Comm  comm;
+	int            num_procs;
+	int            i,j;
+	int            nnz,local_nnz;
+	int           *irn_loc    = NULL;
+	int           *jcn_loc    = NULL;
+	IssmDouble    *a_loc      = NULL;
+	int            count;
+	int            lower_row;
+	int            upper_row;
+	IssmDouble    *rhs        = NULL;
+	int           *recvcounts = NULL;
+	int           *displs     = NULL;
+
+	/*Communicator info */
+	num_procs = IssmComm::GetSize();
+	comm      = IssmComm::GetComm();
+
+	/*First, some checks*/
+	if (Kff_M!=Kff_N)_error_("stiffness matrix Kff should be square");
+	if (uf_M!=Kff_M || uf_M!=pf_M)_error_("solution vector should be the same size as stiffness matrix Kff and load vector pf");
+	if (uf_m!=Kff_m || uf_m!=pf_m)_error_("solution vector should be locally the same size as stiffness matrix Kff and load vector pf");
+
+	/*Initialize matrix */
+	/*figure out number of non-zero entries: */
+	local_nnz=0;
+	for(i=0;i<Kff_m;i++){
+		for(j=0;j<Kff_N;j++){
+			if (Kff[i*Kff_N+j]!=0)local_nnz++;
+		}
+	}
+
+	ISSM_MPI_Reduce(&local_nnz,&nnz,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,comm);
+	ISSM_MPI_Bcast(&nnz,1,ISSM_MPI_INT,0,comm);
+
+	/*Allocate: */
+	if(local_nnz){
+		irn_loc=xNew<int>(local_nnz);
+		jcn_loc=xNew<int>(local_nnz);
+		a_loc=xNew<IssmDouble>(local_nnz);
+	}
+
+	/*Populate the triplets: */
+	GetOwnershipBoundariesFromRange(&lower_row,&upper_row,Kff_m,comm);
+	count=0;
+	for(i=0;i<Kff_m;i++){
+		for(j=0;j<Kff_N;j++){
+			if (Kff[i*Kff_N+j]!=0){
+				irn_loc[count]=lower_row+i+1; //fortran indexing
+				jcn_loc[count]=j+1; //fortran indexing
+				a_loc[count]=Kff[i*Kff_N+j];
+				count++;
+			}
+		}
+	}
+	/*Deal with right hand side. We need to ISSM_MPI_Gather it onto cpu 0: */
+	rhs=xNew<IssmDouble>(pf_M);
+
+	recvcounts=xNew<int>(num_procs);
+	displs=xNew<int>(num_procs);
+
+	/*recvcounts:*/
+	ISSM_MPI_Allgather(&pf_m,1,ISSM_MPI_INT,recvcounts,1,ISSM_MPI_INT,comm);
+
+	/*displs: */
+	ISSM_MPI_Allgather(&lower_row,1,ISSM_MPI_INT,displs,1,ISSM_MPI_INT,comm);
+
+	/*Gather:*/
+	ISSM_MPI_Gatherv(pf, pf_m, ISSM_MPI_DOUBLE, rhs, recvcounts, displs, ISSM_MPI_DOUBLE,0,comm);
+
+	MumpsSolve(Kff_M,nnz,local_nnz,irn_loc,jcn_loc,a_loc,rhs,parameters);
+
+	/*Now scatter from cpu 0 to all other cpus*/
+	ISSM_MPI_Scatterv( rhs, recvcounts, displs, ISSM_MPI_DOUBLE, uf, uf_m, ISSM_MPI_DOUBLE, 0, comm); 
+
+	/*Cleanup*/
+	xDelete<int>(irn_loc);
+	xDelete<int>(jcn_loc);
+	xDelete<IssmDouble>(a_loc);
+	xDelete<IssmDouble>(rhs);
+	xDelete<int>(recvcounts);
+	xDelete<int>(displs);
+} /*}}}*/
+
+#ifdef _HAVE_ADOLC_
+
+int mumpsSolveEDF(int iArrLength, int* iArr, int /* ignored */, IssmPDouble* dp_x, int /* ignored */, IssmPDouble* dp_y) {
+  // unpack parameters
+  int n=iArr[0];
+  int nnz=iArr[1];
+  int local_nnz=iArr[2];
+  int *local_irn=xNew<int>(local_nnz);
+  int *local_jcn=xNew<int>(local_nnz);
+  IssmPDouble *A=xNew<IssmPDouble>(local_nnz);
+  for (int i=0;i<local_nnz;++i) {
+    local_irn[i]=iArr[3+i];
+    local_jcn[i]=iArr[3+local_nnz+i];
+    A[i]=dp_x[i];
+  }
+  IssmPDouble *rhs_sol=xNew<IssmPDouble>(n);
+  for (int i=0;i<n;++i) { 
+    rhs_sol[i]=dp_x[local_nnz+i];
+  }
+  MumpsSolve(n,nnz,local_nnz,local_irn,local_jcn,A,rhs_sol);
+  for (int i=0;i<n;++i) {
+    dp_y[i]=rhs_sol[i];
+  }
+  xDelete(rhs_sol);
+  xDelete(A);
+  xDelete(local_jcn);
+  xDelete(local_irn);
+  return 0;
+}
+
+void MumpsSolve(int n,int nnz,int local_nnz,int* irn_loc,int* jcn_loc,IssmDouble *a_loc,IssmDouble *rhs,Parameters* parameters){
+  int packedDimsSparseArrLength=1+1+1+local_nnz+local_nnz;
+  int *packedDimsSparseArr=xNew<int>(packedDimsSparseArrLength);
+  packedDimsSparseArr[0]=n;
+  packedDimsSparseArr[1]=nnz;
+  packedDimsSparseArr[2]=local_nnz;
+  for (int i=0;i<local_nnz;++i) {
+    packedDimsSparseArr[3+i]=irn_loc[i];
+    packedDimsSparseArr[3+local_nnz+i]=jcn_loc[i];
+  }
+  IssmDouble *pack_A_rhs=xNew<IssmDouble>(local_nnz+n);
+  for (int i=0;i<local_nnz;++i) { 
+    pack_A_rhs[i]=a_loc[i];
+  }
+  for (int i=0;i<n;++i) { 
+    pack_A_rhs[local_nnz+i]=rhs[i];
+  }
+  IssmPDouble *passivePack_A_rhs=xNew<IssmPDouble>(local_nnz+n);
+  IssmPDouble *passiveSol=xNew<IssmPDouble>(n);
+  IssmDouble *sol=xNew<IssmDouble>(n);
+  call_ext_fct(xDynamicCast<GenericParam<Adolc_edf> * >(parameters->FindParamObject(AdolcParamEnum))->GetParameterValue().myEDF_for_solverx_p,
+	       packedDimsSparseArrLength, packedDimsSparseArr,
+	       local_nnz+n, passivePack_A_rhs, pack_A_rhs, 
+	       n, passiveSol,sol);
+  for (int i=0;i<n;++i) { 
+    rhs[i]=sol[i];
+  }
+  xDelete(sol);
+  xDelete(passiveSol);
+  xDelete(passivePack_A_rhs);
+  xDelete(pack_A_rhs);
+  xDelete(packedDimsSparseArr);
+}
+
+int fos_reverse_mumpsSolveEDF(int iArrLength, int* iArr, 
+			      int m, IssmPDouble *dp_U,
+			      int nPlusNz, IssmPDouble *dp_Z,
+			      IssmPDouble *dp_x, IssmPDouble *dp_y) {
+  // unpack parameters
+  int n=iArr[0];
+  int nnz=iArr[1];
+  int local_nnz=iArr[2];
+  int *local_irn=xNew<int>(local_nnz);
+  int *local_jcn=xNew<int>(local_nnz);
+  IssmPDouble *a_loc=xNew<IssmPDouble>(local_nnz);
+  for (int i=0;i<local_nnz;++i) {
+	  local_irn[i]=iArr[3+i];
+	  local_jcn[i]=iArr[3+local_nnz+i];
+	  a_loc[i]=dp_x[i];
+  }
+  IssmPDouble *rhs_sol=xNew<IssmPDouble>(n);
+  for (int i=0;i<n;++i) { 
+    rhs_sol[i]=dp_U[i];
+  }
+  DMUMPS_STRUC_C theMumpsStruc;
+  MumpsInit(theMumpsStruc);
+  MumpsSettings(theMumpsStruc);
+  theMumpsStruc.n=n;
+  theMumpsStruc.nz=nnz;
+  theMumpsStruc.nz_loc=local_nnz;
+  theMumpsStruc.irn_loc=local_irn;
+  theMumpsStruc.jcn_loc=local_jcn;
+  theMumpsStruc.a_loc=a_loc;
+  theMumpsStruc.rhs=rhs_sol;
+  theMumpsStruc.nrhs=1;
+  theMumpsStruc.lrhs=1;
+  theMumpsStruc.icntl[9-1] = 0; //solve for the transpose
+  MumpsAnalyze(theMumpsStruc);
+  MumpsFactorize(theMumpsStruc);
+  MumpsBacksubstitute(theMumpsStruc);
+  MumpsFinalize(theMumpsStruc);
+  // update the adjoint of the rhs:
+  for (int i=0;i<n;++i) {
+    dp_Z[local_nnz+i]+=rhs_sol[i];
+  }
+  // bcast dp_y (the solution of the forward system)
+  ISSM_MPI_Bcast(dp_y,n,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+  // bcast the adjoint of the right-hand-side, i.e. this solution
+  ISSM_MPI_Bcast(rhs_sol,n,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+  // update the adjoint of the matrix with the outer product of right-hand-side adjoint and the original solution
+  for (int i=0;i<local_nnz;++i) {
+    dp_Z[i]-=rhs_sol[iArr[3+i]-1]*dp_y[iArr[3+local_nnz+i]-1];
+  }
+  xDelete(rhs_sol);
+  xDelete(a_loc);
+  xDelete(local_jcn);
+  xDelete(local_irn);
+  return 3;
+}
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mumps/MumpsSolve.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mumps/MumpsSolve.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mumps/MumpsSolve.cpp	(revision 21239)
@@ -0,0 +1,392 @@
+/*!\file MumpsSolve.cpp
+ * \brief: solve dense matrix system with MUMPS
+ */
+
+/*Header files: */
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/Numerics/types.h"
+#include "../../shared/MemOps/MemOps.h"
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/io/Comm/IssmComm.h"
+#include "../../classes/Params/GenericParam.h"
+#include "../../classes/Params/Parameters.h"
+#include "../mpi/issmmpi.h"
+#include "../adolc/adolcincludes.h"
+#include "../issm/SparseRow.h"
+#include "./mumpsincludes.h"
+
+/*Mumps header files: */
+#include <dmumps_c.h>
+
+void MumpsInit(DMUMPS_STRUC_C &theMumpsStruc){ 
+	theMumpsStruc.par          = 1;  
+	theMumpsStruc.sym          = 0;
+	theMumpsStruc.comm_fortran = MPI_Comm_c2f(IssmComm::GetComm());
+	theMumpsStruc.job          = -1;
+	dmumps_c(&theMumpsStruc);
+}
+
+// must be preceded by a call to MumpsInit
+void MumpsSettings(DMUMPS_STRUC_C &theMumpsStruc) { 
+	/*Control statements:{{{ */
+	theMumpsStruc.icntl[1-1] = 6; //error verbose: default 6, 0 or negative -> suppressed
+	theMumpsStruc.icntl[2-1] = 0; //std verbose: default 1, 0 or negative -> suppressed
+	theMumpsStruc.icntl[3-1] = 0; //global information verbose: default 6, 0 or negative -> suppressed
+	theMumpsStruc.icntl[4-1] = 0; //verbose everything: default is 4
+	theMumpsStruc.icntl[5-1] = 0;
+	theMumpsStruc.icntl[18-1] = 3;
+
+	theMumpsStruc.icntl[20-1] = 0;
+	theMumpsStruc.icntl[21-1] = 0;
+	theMumpsStruc.icntl[30-1] = 0;
+	/*}}}*/
+}
+
+// must be preceded by a call to MumpsInit
+void MumpsAnalyze(DMUMPS_STRUC_C &theMumpsStruc) { 
+	theMumpsStruc.job          = 1;
+	dmumps_c(&theMumpsStruc);
+}
+
+// must be preceded by a call to MumpsAnalyze
+void MumpsFactorize(DMUMPS_STRUC_C &theMumpsStruc) { 
+	theMumpsStruc.job          = 2;
+	dmumps_c(&theMumpsStruc);
+}
+
+// must be preceded by a call to MumpsFactorize
+void MumpsBacksubstitute(DMUMPS_STRUC_C &theMumpsStruc) { 
+	theMumpsStruc.job          = 3;
+	dmumps_c(&theMumpsStruc);
+}
+
+// must be preceded at least  by a call to MumpsInit
+void MumpsFinalize(DMUMPS_STRUC_C &theMumpsStruc) { 
+	theMumpsStruc.job          = -2;
+	dmumps_c(&theMumpsStruc);
+}
+
+void MumpsSolve(int n,int nnz,int local_nnz,int* irn_loc,int* jcn_loc, IssmPDouble *a_loc, IssmPDouble *rhs, Parameters* parameters=0 /*unused here*/){
+	/*Initialize mumps*/
+	DMUMPS_STRUC_C theMumpsStruc;
+	MumpsInit(theMumpsStruc);
+	MumpsSettings(theMumpsStruc);
+
+	/*now setup the rest of theMumpsStruc */
+	theMumpsStruc.n=n;
+	theMumpsStruc.nz=nnz;
+	theMumpsStruc.nz_loc=local_nnz;
+	theMumpsStruc.irn_loc=irn_loc;
+	theMumpsStruc.jcn_loc=jcn_loc;
+	theMumpsStruc.a_loc=a_loc;
+	theMumpsStruc.rhs=rhs;
+	theMumpsStruc.nrhs=1;
+	theMumpsStruc.lrhs=1;
+
+	/*Solve system*/
+	MumpsAnalyze(theMumpsStruc);
+	MumpsFactorize(theMumpsStruc);
+	MumpsBacksubstitute(theMumpsStruc);
+	MumpsFinalize(theMumpsStruc);
+}
+
+#ifdef _HAVE_ADOLC_
+// prototype for active variant
+void MumpsSolve(int n,
+		int nnz,
+		int local_nnz,
+		int* irn_loc,
+		int* jcn_loc,
+		IssmDouble *a_loc,
+		IssmDouble *rhs,
+		Parameters* parameters);
+#endif 
+
+void MpiDenseMumpsSolve( /*output: */ IssmDouble* uf, int uf_M, int uf_m, /*matrix input: */ IssmDouble* Kff, int Kff_M, int Kff_N, int Kff_m, /*right hand side vector: */ IssmDouble* pf, int pf_M, int pf_m, Parameters* parameters){ /*{{{*/
+
+	/*Variables*/
+	ISSM_MPI_Comm  comm;
+	int            num_procs;
+	int            i,j;
+	int            nnz,local_nnz;
+	int           *irn_loc    = NULL;
+	int           *jcn_loc    = NULL;
+	IssmDouble    *a_loc      = NULL;
+	int            count;
+	int            lower_row;
+	int            upper_row;
+	IssmDouble    *rhs        = NULL;
+	int           *recvcounts = NULL;
+	int           *displs     = NULL;
+
+	/*Communicator info */
+	num_procs = IssmComm::GetSize();
+	comm      = IssmComm::GetComm();
+
+	/*First, some checks*/
+	if (Kff_M!=Kff_N)_error_("stiffness matrix Kff should be square");
+	if (uf_M!=Kff_M || uf_M!=pf_M)_error_("solution vector should be the same size as stiffness matrix Kff and load vector pf");
+	if (uf_m!=Kff_m || uf_m!=pf_m)_error_("solution vector should be locally the same size as stiffness matrix Kff and load vector pf");
+
+	/*Initialize matrix */
+	/*figure out number of non-zero entries: */
+	local_nnz=0;
+	for(i=0;i<Kff_m;i++){
+		for(j=0;j<Kff_N;j++){
+			if (Kff[i*Kff_N+j]!=0)local_nnz++;
+		}
+	}
+
+	ISSM_MPI_Reduce(&local_nnz,&nnz,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,comm);
+	ISSM_MPI_Bcast(&nnz,1,ISSM_MPI_INT,0,comm);
+
+	/*Allocate: */
+	if(local_nnz){
+		irn_loc=xNew<int>(local_nnz);
+		jcn_loc=xNew<int>(local_nnz);
+		a_loc=xNew<IssmDouble>(local_nnz);
+	}
+
+	/*Populate the triplets: */
+	GetOwnershipBoundariesFromRange(&lower_row,&upper_row,Kff_m,comm);
+	count=0;
+	for(i=0;i<Kff_m;i++){
+		for(j=0;j<Kff_N;j++){
+			if (Kff[i*Kff_N+j]!=0){
+				irn_loc[count]=lower_row+i+1; //fortran indexing
+				jcn_loc[count]=j+1; //fortran indexing
+				a_loc[count]=Kff[i*Kff_N+j];
+				count++;
+			}
+		}
+	}
+	/*Deal with right hand side. We need to ISSM_MPI_Gather it onto cpu 0: */
+	rhs=xNew<IssmDouble>(pf_M);
+
+	recvcounts=xNew<int>(num_procs);
+	displs=xNew<int>(num_procs);
+
+	/*recvcounts:*/
+	ISSM_MPI_Allgather(&pf_m,1,ISSM_MPI_INT,recvcounts,1,ISSM_MPI_INT,comm);
+
+	/*displs: */
+	ISSM_MPI_Allgather(&lower_row,1,ISSM_MPI_INT,displs,1,ISSM_MPI_INT,comm);
+
+	/*Gather:*/
+	ISSM_MPI_Gatherv(pf, pf_m, ISSM_MPI_DOUBLE, rhs, recvcounts, displs, ISSM_MPI_DOUBLE,0,comm);
+
+	MumpsSolve(Kff_M,nnz,local_nnz,irn_loc,jcn_loc,a_loc,rhs,parameters);
+
+	/*Now scatter from cpu 0 to all other cpus*/
+	ISSM_MPI_Scatterv( rhs, recvcounts, displs, ISSM_MPI_DOUBLE, uf, uf_m, ISSM_MPI_DOUBLE, 0, comm); 
+
+	/*Cleanup*/
+	xDelete<int>(irn_loc);
+	xDelete<int>(jcn_loc);
+	xDelete<IssmDouble>(a_loc);
+	xDelete<IssmDouble>(rhs);
+	xDelete<int>(recvcounts);
+	xDelete<int>(displs);
+} /*}}}*/
+
+void MpiSparseMumpsSolve( /*output: */ IssmDouble* uf, int uf_M, int uf_m, /*matrix input: */ SparseRow<IssmDouble>** Kff, int Kff_M, int Kff_N, int Kff_m, /*right hand side vector: */ IssmDouble* pf, int pf_M, int pf_m, Parameters* parameters){ /*{{{*/
+
+	/*Variables*/
+	ISSM_MPI_Comm  comm;
+	int            num_procs;
+	int            i;
+	int            nnz,local_nnz;
+	int           *irn_loc    = NULL;
+	int           *jcn_loc    = NULL;
+	IssmDouble    *a_loc      = NULL;
+	int            count;
+	int            lower_row;
+	int            upper_row;
+	IssmDouble    *rhs        = NULL;
+	int           *recvcounts = NULL;
+	int           *displs     = NULL;
+
+	/*Communicator info */
+	num_procs = IssmComm::GetSize();
+	comm      = IssmComm::GetComm();
+
+	/*First, some checks*/
+	if(Kff_M!=Kff_N)_error_("stiffness matrix Kff should be square");
+	if(uf_M!=Kff_M || uf_M!=pf_M)_error_("solution vector should be the same size as stiffness matrix Kff and load vector pf");
+	if(uf_m!=Kff_m || uf_m!=pf_m)_error_("solution vector should be locally the same size as stiffness matrix Kff and load vector pf");
+
+	/*Initialize matrix */
+	/*figure out number of non-zero entries: */
+	local_nnz=0;
+	for(i=0;i<Kff_m;i++){
+		local_nnz+=Kff[i]->Nnz();
+	}
+
+	ISSM_MPI_Reduce(&local_nnz,&nnz,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,comm);
+	ISSM_MPI_Bcast(&nnz,1,ISSM_MPI_INT,0,comm);
+
+	/*Allocate: */
+	if(local_nnz){
+		irn_loc=xNew<int>(local_nnz);
+		jcn_loc=xNew<int>(local_nnz);
+		a_loc=xNew<IssmDouble>(local_nnz);
+	}
+
+	/*Populate the triplets: */
+	GetOwnershipBoundariesFromRange(&lower_row,&upper_row,Kff_m,comm);
+	count=0;
+	for(i=0;i<Kff_m;i++){
+		Kff[i]->SetIrnJcnA(irn_loc,jcn_loc,a_loc,lower_row+i+1,count);
+		count+=Kff[i]->Nnz();
+	}
+	/*Deal with right hand side. We need to ISSM_MPI_Gather it onto cpu 0: */
+	rhs=xNew<IssmDouble>(pf_M);
+
+	recvcounts=xNew<int>(num_procs);
+	displs=xNew<int>(num_procs);
+
+	/*recvcounts:*/
+	ISSM_MPI_Allgather(&pf_m,1,ISSM_MPI_INT,recvcounts,1,ISSM_MPI_INT,comm);
+
+	/*displs: */
+	ISSM_MPI_Allgather(&lower_row,1,ISSM_MPI_INT,displs,1,ISSM_MPI_INT,comm);
+
+	/*Gather:*/
+	ISSM_MPI_Gatherv(pf, pf_m, ISSM_MPI_DOUBLE, rhs, recvcounts, displs, ISSM_MPI_DOUBLE,0,comm);
+
+	MumpsSolve(Kff_M,nnz,local_nnz,irn_loc,jcn_loc,a_loc,rhs,parameters);
+
+	/*Now scatter from cpu 0 to all other cpus*/
+	ISSM_MPI_Scatterv( rhs, recvcounts, displs, ISSM_MPI_DOUBLE, uf, uf_m, ISSM_MPI_DOUBLE, 0, comm); 
+
+	/*Cleanup*/
+	xDelete<int>(irn_loc);
+	xDelete<int>(jcn_loc);
+	xDelete<IssmDouble>(a_loc);
+	xDelete<IssmDouble>(rhs);
+	xDelete<int>(recvcounts);
+	xDelete<int>(displs);
+} /*}}}*/
+
+#ifdef _HAVE_ADOLC_
+
+int mumpsSolveEDF(int iArrLength, int* iArr, int /* ignored */, IssmPDouble* dp_x, int /* ignored */, IssmPDouble* dp_y) {
+  // unpack parameters
+  int n=iArr[0];
+  int nnz=iArr[1];
+  int local_nnz=iArr[2];
+  int *local_irn=xNew<int>(local_nnz);
+  int *local_jcn=xNew<int>(local_nnz);
+  IssmPDouble *A=xNew<IssmPDouble>(local_nnz);
+  for (int i=0;i<local_nnz;++i) {
+    local_irn[i]=iArr[3+i];
+    local_jcn[i]=iArr[3+local_nnz+i];
+    A[i]=dp_x[i];
+  }
+  IssmPDouble *rhs_sol=xNew<IssmPDouble>(n);
+  for (int i=0;i<n;++i) { 
+    rhs_sol[i]=dp_x[local_nnz+i];
+  }
+  MumpsSolve(n,nnz,local_nnz,local_irn,local_jcn,A,rhs_sol);
+  for (int i=0;i<n;++i) {
+    dp_y[i]=rhs_sol[i];
+  }
+  xDelete(rhs_sol);
+  xDelete(A);
+  xDelete(local_jcn);
+  xDelete(local_irn);
+  return 0;
+}
+
+void MumpsSolve(int n,int nnz,int local_nnz,int* irn_loc,int* jcn_loc,IssmDouble *a_loc,IssmDouble *rhs,Parameters* parameters){
+  int packedDimsSparseArrLength=1+1+1+local_nnz+local_nnz;
+  int *packedDimsSparseArr=xNew<int>(packedDimsSparseArrLength);
+  packedDimsSparseArr[0]=n;
+  packedDimsSparseArr[1]=nnz;
+  packedDimsSparseArr[2]=local_nnz;
+  for (int i=0;i<local_nnz;++i) {
+    packedDimsSparseArr[3+i]=irn_loc[i];
+    packedDimsSparseArr[3+local_nnz+i]=jcn_loc[i];
+  }
+  IssmDouble *pack_A_rhs=xNew<IssmDouble>(local_nnz+n);
+  for (int i=0;i<local_nnz;++i) { 
+    pack_A_rhs[i]=a_loc[i];
+  }
+  for (int i=0;i<n;++i) { 
+    pack_A_rhs[local_nnz+i]=rhs[i];
+  }
+  IssmDouble *sol=xNew<IssmDouble>(n);
+  call_ext_fct(xDynamicCast<GenericParam<Adolc_edf> * >(parameters->FindParamObject(AdolcParamEnum))->GetParameterValue().myEDF_for_solverx_p,
+	       packedDimsSparseArrLength, packedDimsSparseArr,
+	       local_nnz+n, pack_A_rhs, 
+	       n,sol);
+  for (int i=0;i<n;++i) { 
+    rhs[i]=sol[i];
+  }
+  xDelete(sol);
+  xDelete(pack_A_rhs);
+  xDelete(packedDimsSparseArr);
+}
+
+int fos_reverse_mumpsSolveEDF(int iArrLength, int* iArr, 
+			      int m, IssmPDouble *dp_U,
+			      int nPlusNz, IssmPDouble *dp_Z,
+			      IssmPDouble *dp_x, IssmPDouble *dp_y) {
+  // unpack parameters
+  int n=iArr[0];
+  int nnz=iArr[1];
+  int local_nnz=iArr[2];
+  int *local_irn=xNew<int>(local_nnz);
+  int *local_jcn=xNew<int>(local_nnz);
+  IssmPDouble *a_loc=xNew<IssmPDouble>(local_nnz);
+  for (int i=0;i<local_nnz;++i) {
+	  local_irn[i]=iArr[3+i];
+	  local_jcn[i]=iArr[3+local_nnz+i];
+	  a_loc[i]=dp_x[i];
+  }
+  IssmPDouble *rhs_sol=xNew<IssmPDouble>(n);
+  for (int i=0;i<n;++i) { 
+    rhs_sol[i]=dp_U[i];
+  }
+  DMUMPS_STRUC_C theMumpsStruc;
+  MumpsInit(theMumpsStruc);
+  MumpsSettings(theMumpsStruc);
+  theMumpsStruc.n=n;
+  theMumpsStruc.nz=nnz;
+  theMumpsStruc.nz_loc=local_nnz;
+  theMumpsStruc.irn_loc=local_irn;
+  theMumpsStruc.jcn_loc=local_jcn;
+  theMumpsStruc.a_loc=a_loc;
+  theMumpsStruc.rhs=rhs_sol;
+  theMumpsStruc.nrhs=1;
+  theMumpsStruc.lrhs=1;
+  theMumpsStruc.icntl[9-1] = 0; //solve for the transpose
+  MumpsAnalyze(theMumpsStruc);
+  MumpsFactorize(theMumpsStruc);
+  MumpsBacksubstitute(theMumpsStruc);
+  MumpsFinalize(theMumpsStruc);
+  // update the adjoint of the rhs:
+  for (int i=0;i<n;++i) {
+    dp_Z[local_nnz+i]+=rhs_sol[i];
+  }
+  // bcast dp_y (the solution of the forward system)
+  ISSM_MPI_Bcast(dp_y,n,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+  // bcast the adjoint of the right-hand-side, i.e. this solution
+  ISSM_MPI_Bcast(rhs_sol,n,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+  // update the adjoint of the matrix with the outer product of right-hand-side adjoint and the original solution
+  for (int i=0;i<local_nnz;++i) {
+    dp_Z[i]-=rhs_sol[iArr[3+i]-1]*dp_y[iArr[3+local_nnz+i]-1];
+  }
+  xDelete(rhs_sol);
+  xDelete(a_loc);
+  xDelete(local_jcn);
+  xDelete(local_irn);
+  return 3;
+}
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mumps/mumpsincludes.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mumps/mumpsincludes.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/mumps/mumpsincludes.h	(revision 21239)
@@ -0,0 +1,31 @@
+/* \file mumpsincludes.h
+ * \brief all includes for MUMPS layer
+ */
+
+#ifndef _MUMPS_INCLUDES_H_
+#define _MUMPS_INCLUDES_H_
+
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/Numerics/types.h"
+/*}}}*/
+
+class Parameters;
+template <class doubletype> class SparseRow;
+
+void MpiDenseMumpsSolve(IssmDouble* uf,int uf_M,int uf_n, IssmDouble* Kff,int Kff_M, int Kff_N, int Kff_m, IssmDouble* pf, int pf_M, int pf_m, Parameters* parameters);
+void MpiSparseMumpsSolve(IssmDouble* uf,int uf_M,int uf_n, SparseRow<IssmDouble>** Kff,int Kff_M, int Kff_N, int Kff_m, IssmDouble* pf, int pf_M, int pf_m, Parameters* parameters);
+
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)
+// call back functions:
+ADOLC_ext_fct_iArr mumpsSolveEDF;
+ADOLC_ext_fct_iArr_fos_reverse fos_reverse_mumpsSolveEDF;
+ADOLC_ext_fct_iArr_fov_reverse fov_reverse_mumpsSolveEDF;
+#endif
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/objects/Matrix.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/objects/Matrix.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/objects/Matrix.h	(revision 21239)
@@ -0,0 +1,312 @@
+/*!\file:  Matrix.h
+ * \brief wrapper to matrix objects. The goal is to control which API (PETSc,Scalpack, Plapack?) 
+ * implements our underlying matrix format.
+ */ 
+
+#ifndef _MATRIX_H_
+#define _MATRIX_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include <cstring>
+#include "../../shared/Enum/Enum.h"
+#include "../petsc/petscincludes.h"
+#include "../issm/issmtoolkit.h"
+/*}}}*/
+
+enum matrixtype { PetscMatType, IssmMatType };
+
+template <class doubletype> class Vector;
+
+template <class doubletype> 
+class Matrix{
+
+	public:
+
+		int       type;
+		#ifdef _HAVE_PETSC_
+		PetscMat              *pmatrix;
+		#endif
+		IssmMat<doubletype>   *imatrix;
+
+		/*Matrix constructors, destructors*/
+		Matrix(){/*{{{*/
+			InitCheckAndSetType();
+		}
+		/*}}}*/
+		Matrix(int M,int N){/*{{{*/
+
+			InitCheckAndSetType();
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix=new PetscMat(M,N);
+				#endif
+			}
+			else{
+				this->imatrix=new IssmMat<doubletype>(M,N);
+			}
+
+		}
+		/*}}}*/
+		Matrix(int m,int n,int M,int N,int* d_nnz,int* o_nnz){/*{{{*/
+
+			InitCheckAndSetType();
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix=new PetscMat(m,n,M,N,d_nnz,o_nnz);
+				#endif
+			}
+			else{
+				this->imatrix=new IssmMat<doubletype>(m,n,M,N,d_nnz,o_nnz);
+			}
+
+		}
+		/*}}}*/
+		Matrix(int M,int N,double sparsity){/*{{{*/
+
+			InitCheckAndSetType();
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix=new PetscMat(M,N,sparsity);
+				#endif
+			}
+			else{
+				this->imatrix=new IssmMat<doubletype>(M,N,sparsity);
+			}
+		}
+		/*}}}*/
+		Matrix(IssmPDouble* serial_mat,int M,int N,IssmPDouble sparsity){/*{{{*/
+
+			InitCheckAndSetType();
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix=new PetscMat(serial_mat,M,N,sparsity);
+				#endif
+			}
+			else{
+				this->imatrix=new IssmMat<doubletype>(serial_mat,M,N,sparsity);
+			}
+
+		}
+		/*}}}*/
+		Matrix(int M,int N,int connectivity,int numberofdofspernode){/*{{{*/
+
+			InitCheckAndSetType();
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix=new PetscMat(M,N,connectivity,numberofdofspernode);
+				#endif
+			}
+			else{
+				this->imatrix=new IssmMat<doubletype>(M,N,connectivity,numberofdofspernode);
+			}
+
+		}
+		/*}}}*/
+		~Matrix(){/*{{{*/
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				delete this->pmatrix;
+				#endif
+			}
+			else delete this->imatrix;
+
+		}
+		/*}}}*/
+		void InitCheckAndSetType(void){/*{{{*/
+
+			char* toolkittype=NULL;
+
+			#ifdef _HAVE_PETSC_
+			pmatrix=NULL;
+			#endif
+			imatrix=NULL;
+
+			/*retrieve toolkittype: */
+			toolkittype=ToolkitOptions::GetToolkitType();
+
+			/*set matrix type: */
+			if (strcmp(toolkittype,"petsc")==0){
+				#ifdef _HAVE_PETSC_
+				type=PetscMatType; 
+				#else
+				_error_("cannot create petsc matrix without PETSC compiled!");
+				#endif
+			}
+			else if(strcmp(toolkittype,"issm")==0){
+				/*let this choice stand:*/
+				type=IssmMatType;
+			}
+			else _error_("unknow toolkit type ");
+
+			/*Free ressources: */
+			xDelete<char>(toolkittype);
+		}
+		/*}}}*/
+
+		/*Matrix specific routines:*/
+		void Echo(void){/*{{{*/
+			_assert_(this);
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix->Echo();
+				#endif
+			}
+			else{
+				this->imatrix->Echo();
+			}
+
+		}
+		/*}}}*/
+		void AllocationInfo(void){/*{{{*/
+			_assert_(this);
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix->AllocationInfo();
+				#endif
+			}
+			else{
+				//this->imatrix->AllocationInfo();
+				_error_("not supported yet");
+			}
+		}/*}}}*/
+		void Assemble(void){/*{{{*/
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix->Assemble();
+				#endif
+			}
+			else{
+				this->imatrix->Assemble();
+			}
+		}
+		/*}}}*/
+		IssmDouble Norm(NormMode norm_type){/*{{{*/
+
+			IssmDouble norm=0;
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				norm=this->pmatrix->Norm(norm_type);
+				#endif
+			}
+			else{
+				norm=this->imatrix->Norm(norm_type);
+			}
+
+			return norm;
+		}
+		/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix->GetSize(pM,pN);
+				#endif
+			}
+			else{
+				this->imatrix->GetSize(pM,pN);
+			}
+
+		}
+		/*}}}*/
+		void GetLocalSize(int* pM,int* pN){/*{{{*/
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix->GetLocalSize(pM,pN);
+				#endif
+			}
+			else{
+				this->imatrix->GetLocalSize(pM,pN);
+			}
+
+		}
+		/*}}}*/
+		void MatMult(Vector<doubletype>* X,Vector<doubletype>* AX){/*{{{*/
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix->MatMult(X->pvector,AX->pvector);
+				#endif
+			}
+			else{
+				this->imatrix->MatMult(X->ivector,AX->ivector);
+			}
+
+		}
+		/*}}}*/
+		Matrix<doubletype>* Duplicate(void){/*{{{*/
+
+			Matrix<doubletype>* output=new Matrix<doubletype>();
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				output->pmatrix=this->pmatrix->Duplicate();
+				#endif
+			}
+			else{
+				output->imatrix=this->imatrix->Duplicate();
+			}
+
+			return output;
+		}
+		/*}}}*/
+		doubletype* ToSerial(void){/*{{{*/
+
+			doubletype* output=NULL;
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				output=this->pmatrix->ToSerial();
+				#endif
+			}
+			else{
+				output=this->imatrix->ToSerial();
+			}
+
+			return output;
+		}
+		/*}}}*/
+		void SetValues(int m,int* idxm,int n,int* idxn,IssmDouble* values,InsMode mode){/*{{{*/
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix->SetValues(m,idxm,n,idxn,values,mode);
+				#endif
+			}
+			else{
+				this->imatrix->SetValues(m,idxm,n,idxn,values,mode);
+			}
+		}
+		/*}}}*/
+		void Convert(MatrixType newtype){/*{{{*/
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix->Convert(newtype);
+				#endif
+			}
+			else{
+				this->imatrix->Convert(newtype);
+			}
+
+		}
+		/*}}}*/
+
+};
+
+#endif //#ifndef _MATRIX_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/objects/Solver.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/objects/Solver.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/objects/Solver.h	(revision 21239)
@@ -0,0 +1,86 @@
+/*!\file:  Solver.h
+ */ 
+
+#ifndef _SOLVER_CLASS_H_
+#define _SOLVER_CLASS_H_
+
+/*Headers:*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./Matrix.h"
+#include "./Vector.h"
+#include "../issm/issmtoolkit.h"
+#include "../petsc/petscincludes.h"
+class Parameters;
+
+template <class doubletype> 
+class Solver{
+
+	private:
+		Matrix<doubletype>* Kff;
+		Vector<doubletype>* pf;
+		Vector<doubletype>* uf0;
+		Vector<doubletype>* df;
+		Parameters* parameters;
+
+	public:
+		/*Constructors, destructors:*/
+		Solver(){/*{{{*/
+		}
+		/*}}}*/
+		Solver(Matrix<doubletype>* Kff_in, Vector<doubletype>* pf_in, Vector<doubletype>* uf0_in,Vector<doubletype>* df_in, Parameters* parameters_in){/*{{{*/
+
+			/*In debugging mode, check that stiffness matrix and load vectors are not NULL (they can be empty)*/
+			_assert_(Kff_in);
+			_assert_(pf_in);
+
+			/*initialize fields: */
+			this->Kff=Kff_in;
+			this->pf=pf_in;
+			this->uf0=uf0_in;
+			this->df=df_in;
+			this->parameters=parameters_in;
+		}
+		/*}}}*/
+		~Solver(){/*{{{*/
+		}
+		/*}}}*/
+
+		/*Methods: */
+		Vector<doubletype>* Solve(void){ /*{{{*/
+
+			/*output: */
+			Vector<doubletype>* uf=NULL;
+
+			/*Initialize vector: */
+			uf=new Vector<doubletype>();
+
+			/*According to matrix type, use specific solvers: */
+			switch(Kff->type){
+				#ifdef _HAVE_PETSC_
+				case PetscMatType:{
+					PetscVec* uf0_vector = NULL;
+					PetscVec* df_vector  = NULL;
+					if(uf0) uf0_vector = uf0->pvector;
+					if(df)  df_vector  = df->pvector;
+					PetscSolve(&uf->pvector,Kff->pmatrix,pf->pvector,uf0_vector,df_vector,parameters);
+					break;
+								  }
+				#endif
+				case IssmMatType:{
+					IssmSolve(&uf->ivector,Kff->imatrix,pf->ivector,parameters);
+					break;
+								 }
+				default:
+					_error_("Matrix type: " << Kff->type << " not supported yet!");
+			}
+
+			/*allocate output pointer: */
+			return uf;
+		}
+		/*}}}*/
+};
+#endif //#ifndef _SOLVER_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/objects/Vector.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/objects/Vector.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/objects/Vector.h	(revision 21239)
@@ -0,0 +1,363 @@
+/*!\file:  Vector.h
+ * \brief wrapper to vector objects. The goal is to control which API (PETSc,Scalpack, Plapack?) 
+ * implements our underlying vector format.
+ */ 
+
+#ifndef _VECTOR_H_
+#define _VECTOR_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include <cstring>
+#include "../../shared/Enum/Enum.h"
+#include "../petsc/petscincludes.h"
+#include "../issm/issmtoolkit.h"
+/*}}}*/
+
+enum vectortype { PetscVecType, IssmVecType };
+
+template <class doubletype> 
+class Vector{
+
+	public:
+
+		int  type;
+		#ifdef _HAVE_PETSC_
+		PetscVec* pvector;
+		#endif
+		IssmVec<doubletype>* ivector; 
+
+		/*Vector constructors, destructors */
+		Vector(){ /*{{{*/
+
+			InitCheckAndSetType();
+		}
+		/*}}}*/
+		Vector(int M,bool fromlocalsize=false){ /*{{{*/
+
+			InitCheckAndSetType();
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector=new PetscVec(M,fromlocalsize);
+				#endif
+			}
+			else this->ivector=new IssmVec<doubletype>(M,fromlocalsize);
+
+		}
+		/*}}}*/
+		Vector(int m,int M){ /*{{{*/
+
+			InitCheckAndSetType();
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+					this->pvector=new PetscVec(m,M);
+				 #endif
+			}
+			else this->ivector=new IssmVec<doubletype>(m,M);
+		}
+		/*}}}*/
+		Vector(doubletype* serial_vec,int M){ /*{{{*/
+
+			InitCheckAndSetType();
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector=new PetscVec(serial_vec,M);
+				#endif
+			}
+			else this->ivector=new IssmVec<doubletype>(serial_vec,M);
+		}
+		/*}}}*/
+		~Vector(){ /*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				delete this->pvector;
+				#endif
+			}
+			else delete this->ivector;
+		}
+		/*}}}*/
+		#ifdef _HAVE_PETSC_
+		Vector(Vec petsc_vector){ /*{{{*/
+
+			this->type=PetscVecType;
+			this->ivector=NULL;
+			this->pvector=new PetscVec(petsc_vector);
+
+		}
+		/*}}}*/
+		#endif
+		void InitCheckAndSetType(void){ /*{{{*/
+
+			char* toolkittype=NULL;
+
+			#ifdef _HAVE_PETSC_
+			pvector=NULL;
+			#endif
+			ivector=NULL;
+
+			/*retrieve toolkittype: */
+			toolkittype=ToolkitOptions::GetToolkitType();
+
+			/*set vector type: */
+			if (strcmp(toolkittype,"petsc")==0){
+				#ifdef _HAVE_PETSC_
+				type=PetscVecType; 
+				#else
+				_error_("cannot create petsc vector without PETSC compiled!");
+				#endif
+			}
+			else if(strcmp(toolkittype,"issm")==0){
+				/*let this choice stand:*/
+				type=IssmVecType;
+			}
+			else _error_("unknow toolkit type ");
+
+			/*Free ressources: */
+			xDelete<char>(toolkittype);
+		}
+		/*}}}*/
+
+		/*Vector specific routines*/
+		void Echo(void){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->Echo();
+				#endif
+			}
+			else this->ivector->Echo();
+
+		}
+		/*}}}*/
+		void Assemble(void){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->Assemble();
+				#endif
+			}
+			else this->ivector->Assemble();
+
+		}
+		/*}}}*/
+		void SetValues(int ssize, int* list, doubletype* values, InsMode mode){ _assert_(this);/*{{{*/
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->SetValues(ssize,list,values,mode);
+				#endif
+			}
+			else this->ivector->SetValues(ssize,list,values,mode);
+
+		}
+		/*}}}*/
+		void SetValue(int dof, doubletype value, InsMode mode){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->SetValue(dof,value,mode);
+				#endif
+			}
+			else this->ivector->SetValue(dof,value,mode);
+
+		}
+		/*}}}*/
+		void GetValue(doubletype* pvalue,int dof){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->GetValue(pvalue,dof);
+				#endif
+			}
+			else this->ivector->GetValue(pvalue,dof);
+
+		}
+		/*}}}*/
+		void GetSize(int* pM){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->GetSize(pM);
+				#endif
+			}
+			else this->ivector->GetSize(pM);
+
+		}
+		/*}}}*/
+		bool IsEmpty(void){/*{{{*/
+			int M;
+
+			_assert_(this);
+			this->GetSize(&M);
+
+			if(M==0) 
+				return true;
+			else
+				return false;
+		}
+		/*}}}*/
+		void GetLocalSize(int* pM){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->GetLocalSize(pM);
+				#endif
+			}
+			else this->ivector->GetLocalSize(pM);
+
+		}
+		/*}}}*/
+		Vector<doubletype>* Duplicate(void){_assert_(this);/*{{{*/
+
+			Vector<doubletype>* output=NULL;
+
+			output=new Vector<doubletype>();
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				output->pvector=this->pvector->Duplicate();
+				#endif
+			}
+			else output->ivector=this->ivector->Duplicate();
+
+			return output;
+
+		}
+		/*}}}*/
+		void Set(doubletype value){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->Set(value);
+				#endif
+			}
+			else this->ivector->Set(value);
+
+		}
+		/*}}}*/
+		void AXPY(Vector* X, doubletype a){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->AXPY(X->pvector,a);
+				#endif
+			}
+			else this->ivector->AXPY(X->ivector,a);
+
+		}
+		/*}}}*/
+		void AYPX(Vector* X, doubletype a){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->AYPX(X->pvector,a);
+				#endif
+			}
+			else this->ivector->AYPX(X->ivector,a);
+		}
+		/*}}}*/
+		doubletype* ToMPISerial(void){/*{{{*/
+
+			doubletype* vec_serial=NULL;
+
+			_assert_(this);
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				vec_serial=this->pvector->ToMPISerial();
+				#endif
+			}
+			else vec_serial=this->ivector->ToMPISerial();
+
+			return vec_serial;
+
+		}
+		/*}}}*/
+		void Shift(doubletype shift){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->Shift(shift);
+				#endif
+			}
+			else this->ivector->Shift(shift);
+		}
+		/*}}}*/
+		void Copy(Vector* to){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->Copy(to->pvector);
+				#endif
+			}
+			else this->ivector->Copy(to->ivector);
+		}
+		/*}}}*/
+		doubletype Max(void){_assert_(this);/*{{{*/
+
+			doubletype max=0;
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				max=this->pvector->Max();
+				#endif
+			}
+			else _error_("operation not supported yet");
+			return max;
+		}
+		/*}}}*/
+		doubletype Norm(NormMode norm_type){_assert_(this);/*{{{*/
+
+			doubletype norm=0;
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				norm=this->pvector->Norm(norm_type);
+				#endif
+			}
+			else norm=this->ivector->Norm(norm_type);
+			return norm;
+		}
+		/*}}}*/
+		void Scale(doubletype scale_factor){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->Scale(scale_factor);
+				#endif
+			}
+			else this->ivector->Scale(scale_factor);
+		}
+		/*}}}*/
+		doubletype Dot(Vector* vector){_assert_(this);/*{{{*/
+
+			doubletype dot;
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				dot=this->pvector->Dot(vector->pvector);
+				#endif
+			}
+			else dot=this->ivector->Dot(vector->ivector);
+			return dot;
+		}
+		/*}}}*/
+		void PointwiseDivide(Vector* x,Vector* y){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->PointwiseDivide(x->pvector,y->pvector);
+				#endif
+			}
+			else this->ivector->PointwiseDivide(x->ivector,y->ivector);
+		}
+		/*}}}*/
+};
+#endif //#ifndef _VECTOR_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/objects/toolkitobjects.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/objects/toolkitobjects.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/objects/toolkitobjects.h	(revision 21239)
@@ -0,0 +1,13 @@
+
+/*!\file:  toolkitobjects.h
+ * \brief wrappers to toolkits
+ */ 
+
+#ifndef _TOOLKIT_OBJECTS_H_
+#define _TOOLKIT_OBJECTS_H_
+
+#include "./Vector.h"
+#include "./Matrix.h"
+#include "./Solver.h"
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/PetscMat.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/PetscMat.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/PetscMat.cpp	(revision 21239)
@@ -0,0 +1,194 @@
+/*!\file PetscMat.cpp
+ * \brief: implementation of the PetscMat object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include "../petscincludes.h"
+#include "../../../shared/shared.h"
+
+/*}}}*/
+
+/*PetscMat constructors and destructor*/
+PetscMat::PetscMat(){/*{{{*/
+	this->matrix=NULL;
+	#ifdef _HAVE_ADOLC_
+	this->amatrix=NULL;
+	#endif
+
+}
+/*}}}*/
+PetscMat::PetscMat(int M,int N){/*{{{*/
+
+	this->matrix=NewMat(M,N,IssmComm::GetComm());
+}
+/*}}}*/
+PetscMat::PetscMat(int M,int N, IssmDouble sparsity){/*{{{*/
+
+	this->matrix=NewMat(M,N,sparsity,IssmComm::GetComm());
+}
+/*}}}*/
+PetscMat::PetscMat(int m,int n,int M,int N,int* d_nnz,int* o_nnz){/*{{{*/
+
+	MatCreate(IssmComm::GetComm(),&this->matrix);
+	MatSetSizes(this->matrix,m,n,M,N);
+	MatSetFromOptions(this->matrix);
+
+	/* 
+	 * Versions of Petsc beyond 3.3 have changed the use of preallocation 
+	 * routines to distinguish between parallel builds and sequential. Since
+	 * our Windows builds are currently only sequential, we need to change
+	 * the way we use these functions.
+	 *
+	 * The following code computes the total number of non-zeroes per row of the
+	 * matrix in question. In parallel builds it is nescessary to kep track of 
+	 * diagonal non zeros and off-diagonal (d_nnz and o_nnz). Sequential does
+	 * not make that distinction.
+	*/
+	#ifdef _HAVE_PETSC_MPI_
+		int* nnz = new int[M];
+		for(int i = 0; i < M; i++)
+			nnz[i] = o_nnz[i] + d_nnz[i];
+
+		PetscErrorCode ierr = MatSeqAIJSetPreallocation(this->matrix,0,nnz);
+		delete[] nnz;
+	#else
+		PetscErrorCode ierr = MatMPIAIJSetPreallocation(this->matrix,0,d_nnz,0,o_nnz);
+	#endif
+	if(ierr) _error_("PETSc could not allocate matrix (probably not enough memory)");
+//	MatSetOption(this->matrix,MAT_NEW_NONZERO_ALLOCATION_ERR,PETSC_FALSE);
+
+}
+/*}}}*/
+PetscMat::PetscMat(IssmDouble* serial_mat,int M,int N,IssmDouble sparsity){/*{{{*/
+
+	int     i;
+	int* idxm=NULL;
+	int* idxn=NULL;
+
+	if(M)idxm=xNew<int>(M);
+	if(N)idxn=xNew<int>(N);
+
+	for(i=0;i<M;i++)idxm[i]=i;
+	for(i=0;i<N;i++)idxn[i]=i;
+
+	this->matrix=NewMat(M,N,sparsity,IssmComm::GetComm());
+	MatSetValues(this->matrix,M,idxm,N,idxn,serial_mat,INSERT_VALUES);
+	MatAssemblyBegin(this->matrix,MAT_FINAL_ASSEMBLY);
+	MatAssemblyEnd(this->matrix,MAT_FINAL_ASSEMBLY);
+
+	xDelete<int>(idxm);
+	xDelete<int>(idxn);
+
+}
+/*}}}*/
+PetscMat::PetscMat(int M,int N, int connectivity,int numberofdofspernode){/*{{{*/
+
+	this->matrix=NewMat(M,N,connectivity,numberofdofspernode,IssmComm::GetComm());
+
+}
+/*}}}*/
+PetscMat::~PetscMat(){/*{{{*/
+	MatFree(&this->matrix);
+}
+/*}}}*/
+
+/*PetscMat specific routines: */
+void PetscMat::AllocationInfo(void){/*{{{*/
+
+	MatInfo info;
+	MatGetInfo(this->matrix,MAT_GLOBAL_SUM,&info);
+	_printf0_("=========================== Stiffness matrix allocation info ===========================\n");
+	_printf0_("\n");
+   _printf0_(" Block size  : "<<info.block_size << "\n");
+	_printf0_(" nz_allocated: "<<info.nz_allocated << "\n");
+	_printf0_(" nz_used     : "<<info.nz_used << "\n");
+	_printf0_(" nz_unneeded : "<<info.nz_unneeded<<" ("<<double(info.nz_unneeded)/double(info.nz_allocated)*100.<<"%)\n");
+	_printf0_("\n");
+	_printf0_("========================================================================================\n");
+}
+/*}}}*/
+void PetscMat::Echo(void){/*{{{*/
+
+	MatView(this->matrix,PETSC_VIEWER_STDOUT_WORLD);
+}
+/*}}}*/
+void PetscMat::Assemble(void){/*{{{*/
+
+	_assert_(this->matrix);
+	MatAssemblyBegin(this->matrix,MAT_FINAL_ASSEMBLY);
+	MatAssemblyEnd(this->matrix,MAT_FINAL_ASSEMBLY);
+
+}
+/*}}}*/
+IssmDouble PetscMat::Norm(NormMode mode){/*{{{*/
+
+	IssmDouble norm=0;
+	_assert_(this->matrix);
+	MatNorm(this->matrix,ISSMToPetscNormMode(mode),&norm);
+
+	return norm;
+
+}
+/*}}}*/
+void PetscMat::GetSize(int* pM,int* pN){/*{{{*/
+
+	_assert_(this->matrix);
+	MatGetSize(this->matrix,pM,pN);
+}
+/*}}}*/
+void PetscMat::GetLocalSize(int* pM,int* pN){/*{{{*/
+
+	_assert_(this->matrix);
+	MatGetLocalSize(this->matrix,pM,pN);
+
+}
+/*}}}*/
+void PetscMat::MatMult(PetscVec* X,PetscVec* AX){/*{{{*/
+
+	_assert_(this->matrix);
+	_assert_(X->vector);
+	MatMultPatch(this->matrix,X->vector,AX->vector,IssmComm::GetComm());
+
+}
+/*}}}*/
+PetscMat* PetscMat::Duplicate(void){/*{{{*/
+
+	PetscMat* output=new PetscMat();
+	_assert_(this->matrix);
+	MatDuplicate(this->matrix,MAT_COPY_VALUES,&output->matrix);
+
+	return output;
+
+}
+/*}}}*/
+IssmDouble* PetscMat::ToSerial(void){/*{{{*/
+
+	 IssmDouble* output=NULL;
+
+	 MatToSerial(&output,this->matrix,IssmComm::GetComm());
+	 return output;
+
+}
+/*}}}*/
+void PetscMat::SetValues(int m,int* idxm,int n,int* idxn,IssmDouble* values,InsMode mode){/*{{{*/
+
+	PetscErrorCode ierr = MatSetValues(this->matrix,m,idxm,n,idxn,values,ISSMToPetscInsertMode(mode));
+	if(ierr) _error_("PETSc's MatSetValues reported an error");
+
+}
+/*}}}*/
+void PetscMat::Convert(MatrixType type){/*{{{*/
+
+	MatConvert(this->matrix,ISSMToPetscMatrixType(type),MAT_REUSE_MATRIX,&this->matrix);
+
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/PetscMat.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/PetscMat.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/PetscMat.h	(revision 21239)
@@ -0,0 +1,56 @@
+/*!\file:  PetscMat.h
+ * \brief wrapper to our own PetscMat object, which is needed to add AD capabilities (using ADOLC) 
+ * to a C-coded Petsc API. We are just wrapping the Petsc objects into C++ equivalent, so that 
+ * later, we can map all of the Petsc routines into Adolc equivalents.
+ */ 
+
+#ifndef _PETSCMAT_H_
+#define _PETSCMAT_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../petscincludes.h"
+#include "../../../shared/Numerics/types.h"
+
+/*}}}*/
+class PetscVec;
+
+class PetscMat{
+
+	public:
+		Mat matrix;
+
+		#ifdef _HAVE_ADOLC_
+		IssmDouble* amatrix;
+		#endif
+
+		/*PetscMat constructors, destructors*/
+		PetscMat();
+		PetscMat(int M,int N);
+		PetscMat(int M,int N,IssmDouble sparsity);
+		PetscMat(int m,int n,int M,int N,int* d_nnz,int* o_nnz);
+		PetscMat(IssmDouble* serial_mat,int M,int N,IssmDouble sparsity);
+		PetscMat(int M,int N,int connectivity,int numberofdofspernode);
+		~PetscMat();
+
+		/*PetscMat specific routines*/
+		void AllocationInfo(void);
+		void Echo(void);
+		void Assemble(void);
+		IssmDouble Norm(NormMode norm_type);
+		void GetSize(int* pM,int* pN);
+		void GetLocalSize(int* pM,int* pN);
+		void MatMult(PetscVec* X,PetscVec* AX);
+		PetscMat* Duplicate(void);
+		IssmDouble* ToSerial(void);
+		void SetValues(int m,int* idxm,int n,int* idxn,IssmDouble* values,InsMode mode);
+		void Convert(MatrixType type);
+};
+
+#endif //#ifndef _PETSCMAT_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/PetscSolver.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/PetscSolver.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/PetscSolver.cpp	(revision 21239)
@@ -0,0 +1,242 @@
+/*!\file SolverxPetsc
+ * \brief Petsc implementation of solver
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./PetscSolver.h"
+#include "../../../shared/Numerics/Verbosity.h"
+#include "../../../shared/MemOps/MemOps.h"
+#include "../../../shared/Exceptions/exceptions.h"
+#include "../../../shared/io/Comm/IssmComm.h"
+#include "../../../shared/Enum/Enum.h"
+
+void	PetscSolve(PetscVec** puf, PetscMat* Kff, PetscVec* pf, PetscVec* uf0,PetscVec* df, Parameters* parameters){ /*{{{*/
+
+	PetscVec* uf=new PetscVec();
+
+	Vec uf0_vector = NULL;
+	Vec df_vector  = NULL;
+
+	if(uf0) uf0_vector = uf0->vector;
+	if(df)  df_vector  = df->vector;
+
+	SolverxPetsc(&uf->vector, Kff->matrix, pf->vector, uf0_vector, df_vector, parameters);
+
+	*puf=uf;
+
+}
+/*}}}*/
+void	SolverxPetsc(Vec* puf, Mat Kff, Vec pf, Vec uf0,Vec df, Parameters* parameters){ /*{{{*/
+
+	/*Output: */
+	Vec        uf               = NULL;
+
+	/*Intermediary: */
+	int        local_m,local_n,global_m,global_n;
+
+	/*Solver */
+	KSP        ksp              = NULL;
+	PC         pc               = NULL;
+	int        iteration_number;
+	int        solver_type;
+	bool       fromlocalsize    = true;
+	#if _PETSC_MAJOR_ < 3 || (_PETSC_MAJOR_ == 3 && _PETSC_MINOR_ < 2)
+	PetscTruth flag,flg;
+	#else
+	PetscBool flag,flg;
+	#endif
+
+	/*FS: */
+	IS         isv=NULL;
+	IS         isp=NULL;
+
+	#if _PETSC_MAJOR_ >= 3 
+	char ksp_type[50];
+	#endif
+
+	/*Display message*/
+	#if _PETSC_MAJOR_ < 3 || (_PETSC_MAJOR_ == 3 && _PETSC_MINOR_ < 2)
+	if(VerboseSolver())PetscOptionsPrint(stdout);
+	#else
+		#if _PETSC_MINOR_<7
+		if(VerboseSolver())PetscOptionsView(PETSC_VIEWER_STDOUT_WORLD);
+		#else
+		if(VerboseSolver())PetscOptionsView(NULL,PETSC_VIEWER_STDOUT_WORLD);
+		#endif
+	#endif
+
+	/*First, check that f-set is not NULL, i.e. model is fully constrained:*/ 
+	_assert_(Kff);
+	MatGetSize(Kff,&global_m,&global_n); _assert_(global_m==global_n);
+	if(!global_n){
+		*puf=NewVec(0,IssmComm::GetComm()); return;
+	}
+
+	/*Initial guess */
+	/*Now, check that we are not giving an initial guess to the solver, if we are running a direct solver: */
+	#if _PETSC_MAJOR_ >= 3 
+		#if _PETSC_MINOR_<7
+		PetscOptionsGetString(PETSC_NULL,"-ksp_type",ksp_type,49,&flg);
+		#else
+		PetscOptionsGetString(NULL,PETSC_NULL,"-ksp_type",ksp_type,49,&flg);
+		#endif
+	if (strcmp(ksp_type,"preonly")==0)uf0=NULL;
+	#endif
+
+	/*If initial guess for the solution exists, use it to create uf, otherwise, 
+	 * duplicate the right hand side so that the solution vector has the same structure*/
+	if(uf0){
+		VecDuplicate(uf0,&uf); VecCopy(uf0,uf);
+	}
+	else{
+		MatGetLocalSize(Kff,&local_m,&local_n);uf=NewVec(local_n,IssmComm::GetComm(),fromlocalsize);
+	}
+
+	/*Process petsc options to see if we are using special types of external solvers*/
+	PetscOptionsDetermineSolverType(&solver_type);
+
+	/*Check the solver is available*/
+	if(solver_type==MUMPSPACKAGE_LU || solver_type==MUMPSPACKAGE_CHOL){
+		#if _PETSC_MAJOR_ >=3
+			#ifndef _HAVE_MUMPS_
+			_error_("requested MUMPS solver, which was not compiled into ISSM!\n");
+			#endif
+		#endif
+	}
+
+	/*Prepare solver*/
+	KSPCreate(IssmComm::GetComm(),&ksp);
+	#if (_PETSC_MAJOR_==3) && (_PETSC_MINOR_>=5)
+		KSPSetOperators(ksp,Kff,Kff);
+	#else
+		KSPSetOperators(ksp,Kff,Kff,DIFFERENT_NONZERO_PATTERN);
+	#endif
+	KSPSetFromOptions(ksp);
+
+	#if _PETSC_MAJOR_==3
+	/*Specific solver?: */
+	KSPGetPC(ksp,&pc);
+	if (solver_type==MUMPSPACKAGE_LU){
+		#if _PETSC_MINOR_==1
+		PCFactorSetMatSolverPackage(pc,MAT_SOLVER_MUMPS);
+		#else
+		PCFactorSetMatSolverPackage(pc,MATSOLVERMUMPS);
+		#endif
+	}
+
+	/*FS: */
+	if (solver_type==FSSolverEnum){
+		/*Make indices out of doftypes: */
+		if(!df)_error_("need doftypes for FS solver!\n");
+		DofTypesToIndexSet(&isv,&isp,df,FSSolverEnum);
+
+		/*Set field splits: */
+		KSPGetPC(ksp,&pc);
+		#if _PETSC_MINOR_==1
+		PCFieldSplitSetIS(pc,isv);
+		PCFieldSplitSetIS(pc,isp);
+		#else
+		PCFieldSplitSetIS(pc,PETSC_NULL,isv);
+		PCFieldSplitSetIS(pc,PETSC_NULL,isp);
+		#endif
+
+	}
+	#endif
+
+	/*If there is an initial guess for the solution, use it
+	 * except if we are using the MUMPS direct solver
+	 * where any initial guess will crash Petsc*/
+	if (uf0){
+		if((solver_type!=MUMPSPACKAGE_LU) && (solver_type!=MUMPSPACKAGE_CHOL) && (solver_type!=SPOOLESPACKAGE_LU) && (solver_type!=SPOOLESPACKAGE_CHOL) && (solver_type!=SUPERLUDISTPACKAGE)){
+			KSPSetInitialGuessNonzero(ksp,PETSC_TRUE);
+		}
+	}
+
+	/*Solve: */
+	if(VerboseSolver())KSPView(ksp,PETSC_VIEWER_STDOUT_WORLD);
+	KSPSolve(ksp,pf,uf);
+
+	/*Check convergence*/
+	KSPGetIterationNumber(ksp,&iteration_number);
+	if (iteration_number<0) _error_("Solver diverged at iteration number: " << -iteration_number);
+
+	/*Free resources:*/
+	KSPFree(&ksp);
+
+	/*Assign output pointers:*/
+	*puf=uf;
+} 
+/*}}}*/
+void DofTypesToIndexSet(IS* pisv, IS* pisp, Vec df,int typeenum){ /*{{{*/
+
+	/*output: */
+	IS          isv=NULL;
+	IS          isp=NULL;
+
+	int         start,end;
+	IssmDouble*     df_local=NULL;
+	int         df_local_size;
+
+	int*     pressure_indices=NULL;
+	int*     velocity_indices=NULL;
+	int      pressure_num=0;
+	int      velocity_num=0;
+	int      pressure_count=0;
+	int      velocity_count=0;
+
+	if(typeenum==FSSolverEnum){
+
+		/*Ok, recover doftypes vector values and indices: */
+		VecGetOwnershipRange(df,&start,&end);
+		VecGetLocalSize(df,&df_local_size);
+		VecGetArray(df,&df_local);
+
+		pressure_num=0;
+		velocity_num=0;
+		for(int i=0;i<df_local_size;i++){
+			if (df_local[i]==PressureEnum)pressure_num++;
+			else velocity_num++;
+		}
+
+		/*Allocate indices: */
+		if(pressure_num)pressure_indices=xNew<int>(pressure_num);
+		if(velocity_num)velocity_indices=xNew<int>(velocity_num);
+
+		pressure_count=0;
+		velocity_count=0;
+		for(int i=0;i<df_local_size;i++){
+			if (df_local[i]==PressureEnum){
+				pressure_indices[pressure_count]=start+i;
+				pressure_count++;
+			}
+			if (df_local[i]==VelocityEnum){
+				velocity_indices[velocity_count]=start+i;
+				velocity_count++;
+			}
+		}
+		VecRestoreArray(df,&df_local);
+
+		/*Create indices sets: */
+		#if _PETSC_MAJOR_ < 3 || (_PETSC_MAJOR_ == 3 && _PETSC_MINOR_ < 2)
+		ISCreateGeneral(IssmComm::GetComm(),pressure_num,pressure_indices,&isp);
+		ISCreateGeneral(IssmComm::GetComm(),velocity_num,velocity_indices,&isv);
+		#else
+		ISCreateGeneral(IssmComm::GetComm(),pressure_num,pressure_indices,PETSC_COPY_VALUES,&isp);
+		ISCreateGeneral(IssmComm::GetComm(),velocity_num,velocity_indices,PETSC_COPY_VALUES,&isv);
+		#endif
+	}
+
+	/*Free ressources:*/
+	xDelete<int>(pressure_indices);
+	xDelete<int>(velocity_indices);
+
+	/*Assign output pointers:*/
+	*pisv=isv;
+	*pisp=isp;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/PetscSolver.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/PetscSolver.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/PetscSolver.h	(revision 21239)
@@ -0,0 +1,24 @@
+/*!\file:  PetscMat.h
+ */ 
+
+#ifndef _PETSC_SOLVER_H_
+#define _PETSC_SOLVER_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../petscincludes.h"
+class Parameters;
+
+/*}}}*/
+
+void	PetscSolve(PetscVec** puf, PetscMat* Kff, PetscVec* pf, PetscVec* uf0,PetscVec* df, Parameters* parameters);
+void	SolverxPetsc(Vec* puf, Mat Kff, Vec pf, Vec uf0,Vec df, Parameters* parameters);
+void    DofTypesToIndexSet(IS* pisv, IS* pisp, Vec df,int typeenum);
+
+#endif //#ifndef _PETSCSOLVER_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/PetscVec.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/PetscVec.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/PetscVec.cpp	(revision 21239)
@@ -0,0 +1,218 @@
+/*!\file PetscVec.cpp
+ * \brief: implementation of the PetscVec object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include "../petscincludes.h"
+#include "../../../shared/shared.h"
+
+/*}}}*/
+
+/*PetscVec constructors and destructor*/
+PetscVec::PetscVec(){/*{{{*/
+	this->vector=NULL;
+	#ifdef _HAVE_ADOLC_
+	this->avector=NULL;
+	#endif
+}
+/*}}}*/
+PetscVec::PetscVec(int M,bool fromlocalsize){/*{{{*/
+
+	this->vector=NewVec(M,IssmComm::GetComm(),fromlocalsize);
+
+}
+/*}}}*/
+PetscVec::PetscVec(int m,int M){/*{{{*/
+
+	VecCreate(IssmComm::GetComm(),&this->vector);
+	VecSetSizes(this->vector,m,M);
+	VecSetFromOptions(this->vector);
+	VecSet(this->vector,0.0);
+
+}
+/*}}}*/
+PetscVec::PetscVec(Vec petsc_vec){/*{{{*/
+
+	if(petsc_vec==NULL){
+		this->vector=NewVec(0,IssmComm::GetComm());
+	}
+	else{
+		/*copy vector*/
+		VecDuplicate(petsc_vec,&this->vector);
+		VecCopy(petsc_vec,this->vector);
+	}
+
+}
+/*}}}*/
+PetscVec::PetscVec(IssmDouble* serial_vec,int M){/*{{{*/
+
+	int* idxm=NULL;
+	if(M)idxm=xNew<int>(M);
+	for(int i=0;i<M;i++) idxm[i]=i;
+
+	this->vector=NewVec(M,IssmComm::GetComm());
+	VecSetValues(this->vector,M,idxm,serial_vec,INSERT_VALUES);
+	VecAssemblyBegin(this->vector);
+	VecAssemblyEnd(this->vector);
+
+	xDelete<int>(idxm);
+}
+/*}}}*/
+PetscVec::~PetscVec(){/*{{{*/
+    VecFree(&this->vector);
+}
+/*}}}*/
+
+/*PetscVec specific routines: */
+void PetscVec::Echo(void){/*{{{*/
+
+	_assert_(this->vector);
+	VecView(this->vector,PETSC_VIEWER_STDOUT_WORLD);
+}
+/*}}}*/
+void PetscVec::Assemble(void){/*{{{*/
+
+	_assert_(this->vector);
+	VecAssemblyBegin(this->vector); 
+	VecAssemblyEnd(this->vector);
+
+}
+/*}}}*/
+void PetscVec::SetValues(int ssize, int* list, IssmDouble* values, InsMode mode){/*{{{*/
+
+	_assert_(this->vector);
+	VecSetValues(this->vector,ssize,list,values,ISSMToPetscInsertMode(mode));
+
+}
+/*}}}*/
+void PetscVec::SetValue(int dof, IssmDouble value, InsMode mode){/*{{{*/
+
+	_assert_(this->vector);
+	VecSetValues(this->vector,1,&dof,&value,ISSMToPetscInsertMode(mode));
+
+}
+/*}}}*/
+void PetscVec::GetValue(IssmDouble* pvalue,int dof){/*{{{*/
+
+	_assert_(this->vector);
+	VecGetValues(this->vector,1,&dof,pvalue);
+
+}
+/*}}}*/
+void PetscVec::GetSize(int* pM){/*{{{*/
+
+	_assert_(this->vector);
+	VecGetSize(this->vector,pM);
+
+}
+/*}}}*/
+void PetscVec::GetLocalSize(int* pM){/*{{{*/
+
+	_assert_(this->vector);
+	VecGetLocalSize(this->vector,pM);
+
+}
+/*}}}*/
+PetscVec* PetscVec::Duplicate(void){/*{{{*/
+
+	_assert_(this->vector);
+	Vec vec_output=NULL;
+	VecDuplicate(this->vector,&vec_output);
+	PetscVec* output=new PetscVec(vec_output);
+	VecFree(&vec_output);
+
+	return output;
+}
+/*}}}*/
+void PetscVec::Set(IssmDouble value){/*{{{*/
+
+	_assert_(this->vector);
+	VecSet(this->vector,value);
+
+}
+/*}}}*/
+void PetscVec::AXPY(PetscVec* X, IssmDouble a){/*{{{*/
+
+	_assert_(this->vector);
+	VecAXPY(this->vector,a,X->vector);
+
+}
+/*}}}*/
+void PetscVec::AYPX(PetscVec* X, IssmDouble a){/*{{{*/
+
+	_assert_(this->vector);
+	VecAYPX(this->vector,a,X->vector);
+
+}
+/*}}}*/
+IssmDouble* PetscVec::ToMPISerial(void){/*{{{*/
+
+	IssmDouble* vec_serial=NULL;
+	VecToMPISerial(&vec_serial, this->vector,IssmComm::GetComm());
+	return vec_serial;
+
+}
+/*}}}*/
+void PetscVec::Shift(IssmDouble shift){/*{{{*/
+
+	if(this->vector) VecShift(this->vector,shift);
+
+}
+/*}}}*/
+void PetscVec::Copy(PetscVec* to){/*{{{*/
+
+	if(this->vector) VecCopy(this->vector,to->vector);
+
+}
+/*}}}*/
+IssmDouble PetscVec::Max(void){/*{{{*/
+
+	_assert_(this->vector);
+
+	IssmDouble max;
+	VecMax(this->vector,NULL,&max);
+	return max;
+
+}
+/*}}}*/
+IssmDouble PetscVec::Norm(NormMode mode){/*{{{*/
+
+	IssmDouble norm=0;
+	_assert_(this->vector);
+	VecNorm(this->vector,ISSMToPetscNormMode(mode),&norm);
+	return norm;
+
+}
+/*}}}*/
+void PetscVec::Scale(IssmDouble scale_factor){/*{{{*/
+
+	_assert_(this->vector);
+	VecScale(this->vector,scale_factor); 
+
+}
+/*}}}*/
+IssmDouble PetscVec::Dot(PetscVec* input){/*{{{*/
+
+	IssmDouble dot;
+	_assert_(this->vector);
+	VecDot(this->vector,input->vector,&dot);
+	return dot;
+
+}
+/*}}}*/
+void PetscVec::PointwiseDivide(PetscVec* x,PetscVec* y){/*{{{*/
+
+	_assert_(this->vector);
+	VecPointwiseDivide(this->vector,x->vector,y->vector);
+
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/PetscVec.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/PetscVec.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/PetscVec.h	(revision 21239)
@@ -0,0 +1,61 @@
+/*!\file:  PetscVec.h
+ * \brief wrapper to our own PetscVec object, which is needed to add AD capabilities (using ADOLC) 
+ * to a C-coded Petsc API. We are just wrapping the Petsc objects into C++ equivalent, so that 
+ * later, we can map all of the Petsc routines into Adolc equivalents.
+ */ 
+
+#ifndef _PETSCVEC_H_
+#define _PETSCVEC_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../petscincludes.h"
+
+/*}}}*/
+
+class PetscVec{
+
+	public:
+		Vec vector;
+
+		#ifdef _HAVE_ADOLC_
+		IssmDouble* avector;
+		#endif
+
+		/*PetscVec constructors, destructors*/
+		PetscVec();
+		PetscVec(int M,bool fromlocalsize=false);
+		PetscVec(int m,int M);
+		PetscVec(IssmDouble* buffer, int M);
+		PetscVec(Vec petsc_vec);
+		~PetscVec();
+
+		/*PetscVec specific routines*/
+		void        Echo(void);
+		void        Assemble(void);
+		void        SetValues(int ssize, int* list, IssmDouble* values, InsMode mode);
+		void        SetValue(int dof, IssmDouble value, InsMode  mode);
+		void        GetValue(IssmDouble* pvalue, int dof);
+		void        GetSize(int* pM);
+		void        GetLocalSize(int* pM);
+		PetscVec*   Duplicate(void);
+		void        Set(IssmDouble value);
+		void        AXPY(PetscVec* X, IssmDouble a);
+		void        AYPX(PetscVec* X, IssmDouble a);
+		IssmDouble* ToMPISerial(void);
+		void        Shift(IssmDouble shift);
+		void        Copy(PetscVec* to);
+		IssmDouble  Norm(NormMode norm_type);
+		IssmDouble  Max(void);
+		void        Scale(IssmDouble scale_factor);
+		void        PointwiseDivide(PetscVec* x,PetscVec* y);
+		IssmDouble  Dot(PetscVec* vector);
+};
+
+#endif //#ifndef _PETSCVEC_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/petscobjects.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/petscobjects.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/objects/petscobjects.h	(revision 21239)
@@ -0,0 +1,12 @@
+/* \file petscobjects.h
+ * \brief all includes for our own petsc object implementation
+ */
+
+#ifndef _PETSC_OBJECTS_H_
+#define _PETSC_OBJECTS_H_
+
+#include "./PetscMat.h"
+#include "./PetscVec.h"
+#include "./PetscSolver.h"
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/ISSMToPetscInsertMode.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/ISSMToPetscInsertMode.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/ISSMToPetscInsertMode.cpp	(revision 21239)
@@ -0,0 +1,33 @@
+/* \file ISSMToPetscInsertMode.cpp
+ * \brief: convert InsertMode from ISSM to Petsc
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscmat.h>
+#include <petscvec.h>
+#include <petscksp.h>
+
+/*ISSM includes: */
+#include "../../toolkitsenums.h"
+#include "../../../shared/shared.h"
+
+InsertMode ISSMToPetscInsertMode(InsMode mode){
+
+	switch(mode){
+		case ADD_VAL:  
+			return ADD_VALUES;
+			break;
+		case INS_VAL:
+			return INSERT_VALUES;
+			break;
+		default: 
+			_error_("unknown insert mode!");
+			break;
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/ISSMToPetscMatrixType.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/ISSMToPetscMatrixType.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/ISSMToPetscMatrixType.cpp	(revision 21239)
@@ -0,0 +1,33 @@
+/* \file ISSMToPetscMatrixType.cpp
+ * \brief: convert MatrixType from ISSM to Petsc
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscmat.h>
+#include <petscvec.h>
+#include <petscksp.h>
+
+/*ISSM includes: */
+#include "../../toolkitsenums.h"
+#include "../../../shared/shared.h"
+
+MatType ISSMToPetscMatrixType(MatrixType type){
+
+	switch(type){
+		case DENSE_SEQUENTIAL:  
+			return MATSEQDENSE;
+			break;
+		case SPARSE_SEQUENTIAL:  
+			return MATSEQAIJ;
+			break;
+		default: 
+			_error_("unknown matrix type !");
+			break;
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/ISSMToPetscNormMode.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/ISSMToPetscNormMode.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/ISSMToPetscNormMode.cpp	(revision 21239)
@@ -0,0 +1,33 @@
+/* \file ISSMToPetscNormMode.cpp
+ * \brief: convert NormMode from ISSM to Petsc
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscmat.h>
+#include <petscvec.h>
+#include <petscksp.h>
+
+/*ISSM includes: */
+#include "../../toolkitsenums.h"
+#include "../../../shared/shared.h"
+
+NormType ISSMToPetscNormMode(NormMode mode){
+
+	switch(mode){
+		case NORM_INF:  
+			return NORM_INFINITY;
+			break;
+		case NORM_TWO:  
+			return NORM_2;
+			break;
+		default: 
+			_error_("unknown norm !");
+			break;
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/KSPFree.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/KSPFree.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/KSPFree.cpp	(revision 21239)
@@ -0,0 +1,26 @@
+/*!\file:  KSPFree.cpp
+ * \brief wrapper to KSPDestroy
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscmat.h>
+#include <petscvec.h>
+#include <petscksp.h>
+
+void KSPFree(KSP* pksp){
+
+	#if _PETSC_MAJOR_ < 3 || (_PETSC_MAJOR_ == 3 && _PETSC_MINOR_ < 2)
+	if(*pksp)KSPDestroy(*pksp);
+	*pksp=NULL;
+	#else
+	if(*pksp)KSPDestroy(pksp);
+	*pksp=NULL;
+	#endif
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/MatFree.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/MatFree.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/MatFree.cpp	(revision 21239)
@@ -0,0 +1,26 @@
+/*!\file:  MatFree.cpp
+ * \brief wrapper to MatDestroy
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscmat.h>
+#include <petscmat.h>
+#include <petscksp.h>
+
+void MatFree(Mat* pmat){
+
+	#if _PETSC_MAJOR_ < 3 || (_PETSC_MAJOR_ == 3 && _PETSC_MINOR_ < 2)
+	if(*pmat)MatDestroy(*pmat);
+	*pmat=NULL;
+	#else
+	if(*pmat)MatDestroy(pmat);
+	*pmat=NULL;
+	#endif
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/MatMultPatch.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/MatMultPatch.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/MatMultPatch.cpp	(revision 21239)
@@ -0,0 +1,115 @@
+/*!\file:  MatMultPatch
+ * \brief: relocalize vector when MatMult yields non conforming object sizes errors.
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscmat.h>
+#include <petscvec.h>
+#include <petscksp.h>
+
+#include "../../mpi/issmmpi.h"
+#include "../../../shared/shared.h"
+
+/*Function prototypes: */
+int MatMultCompatible(Mat A,Vec x,ISSM_MPI_Comm comm);
+void VecRelocalize(Vec* outvector,Vec vector,int m,ISSM_MPI_Comm comm);
+
+void MatMultPatch(Mat A,Vec X, Vec AX,ISSM_MPI_Comm comm){ //same prototype as MatMult in Petsc
+
+	int m,n;
+	Vec X_rel=NULL;
+
+	_assert_(A); _assert_(X);
+
+	if (MatMultCompatible(A,X,comm)){
+		MatMult(A,X,AX); 
+	}
+	else{
+		MatGetLocalSize(A,&m,&n);;
+		VecRelocalize(&X_rel,X,n,comm);
+		MatMult(A,X_rel,AX); ;
+		#if _PETSC_MAJOR_ < 3 || (_PETSC_MAJOR_ == 3 && _PETSC_MINOR_ < 2)
+		VecDestroy(X_rel);
+		#else
+		VecDestroy(&X_rel);
+		#endif
+	}
+}
+
+int MatMultCompatible(Mat A,Vec x,ISSM_MPI_Comm comm){
+
+	/*error management*/
+
+	int local_m,local_n;
+	int range;
+	int result=1;
+	int sumresult;
+	int num_procs;
+
+	/*recover num_procs:*/
+	ISSM_MPI_Comm_size(comm,&num_procs);
+
+	MatGetLocalSize(A,&local_m,&local_n);;
+	VecGetLocalSize(x,&range);;
+
+	if (local_n!=range)result=0;
+
+	/*synchronize result: */
+	ISSM_MPI_Reduce (&result,&sumresult,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,comm );
+	ISSM_MPI_Bcast(&sumresult,1,ISSM_MPI_INT,0,comm);                
+	if (sumresult!=num_procs){
+		result=0;
+	}
+	else{
+		result=1;
+	}
+	return result;
+}
+
+void VecRelocalize(Vec* poutvector,Vec vector,int m,ISSM_MPI_Comm comm){
+
+	/*vector index and vector values*/
+	int* index=NULL;
+	double* values=NULL;
+	int lower_row,upper_row,range;
+
+	/*output: */
+	Vec outvector=NULL;
+
+	/*Create outvector with local size m*/
+	VecCreate(comm,&outvector); ; 
+	VecSetSizes(outvector,m,PETSC_DECIDE); ; 
+	VecSetFromOptions(outvector); ; 
+
+	/*Go through vector, get values, and plug them into outvector*/
+	VecGetOwnershipRange(vector,&lower_row,&upper_row); ; 
+	upper_row--;
+	range=upper_row-lower_row+1;
+	if (range){
+		index=xNew<int>(range);
+		values=xNew<double>(range);
+		for (int i=0;i<range;i++){
+			*(index+i)=lower_row+i;
+		}
+		VecGetValues(vector,range,index,values);
+		VecSetValues(outvector,range,index,values,INSERT_VALUES);
+	}
+
+	/*Assemble outvector*/
+	VecAssemblyBegin(outvector);; 
+	VecAssemblyEnd(outvector);; 
+
+	/*Free ressources:*/
+	xDelete<int>(index);
+	xDelete<double>(values);	
+
+	/*Assign output pointers:*/
+	*poutvector=outvector;
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/MatToSerial.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/MatToSerial.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/MatToSerial.cpp	(revision 21239)
@@ -0,0 +1,89 @@
+/*!\file MatToSerial.cpp
+ * \brief gather a Petsc Mat matrix onto cpu 0
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../petscincludes.h"
+#include "../../../shared/shared.h"
+
+void MatToSerial(double** poutmatrix,Mat matrix,ISSM_MPI_Comm comm){
+
+	int i;
+	int my_rank;
+	int num_procs;
+
+	/*Petsc variables*/
+	PetscInt lower_row,upper_row; 
+	int range;
+	int M,N; //size of matrix
+	ISSM_MPI_Status status;
+	int* idxm=NULL;
+	int* idxn=NULL; 
+	double* local_matrix=NULL; /*matrix local to each node used for temporary holding matrix values*/
+	int buffer[3];
+
+	/*recover my_rank and num_procs:*/
+	ISSM_MPI_Comm_size(comm,&num_procs);
+	ISSM_MPI_Comm_rank(comm,&my_rank);
+
+	/*Output*/
+	double* outmatrix=NULL;
+
+	/*get matrix size: */
+	MatGetSize(matrix,&M,&N);
+
+	/*partition: */
+	MatGetOwnershipRange(matrix,&lower_row,&upper_row);    
+	upper_row--; 
+	range=upper_row-lower_row+1;
+
+	/*Local and global allocation*/
+	if (my_rank==0)outmatrix=xNew<double>(M*N);
+
+	if (range){
+		local_matrix=xNew<double>(N*range);
+		idxm=xNew<int>(range);  
+		idxn=xNew<int>(N);  
+
+		for (i=0;i<N;i++){
+			*(idxn+i)=i;
+		}
+		for (i=0;i<range;i++){
+			*(idxm+i)=lower_row+i;
+		}
+
+		MatGetValues(matrix,range,idxm,N,idxn,local_matrix);     
+	}
+
+	/*Now each node holds its local_matrix containing range rows. 
+	 * We send these rows to the matrix on node 0*/
+
+	for (i=1;i<num_procs;i++){
+		if (my_rank==i){ 
+			buffer[0]=my_rank;
+			buffer[1]=lower_row;
+			buffer[2]=range;
+			ISSM_MPI_Send(buffer,3,ISSM_MPI_INT,0,1,comm);   
+			if (range)ISSM_MPI_Send(local_matrix,N*range,ISSM_MPI_PDOUBLE,0,1,comm); 
+		}
+		if (my_rank==0){
+			ISSM_MPI_Recv(buffer,3,ISSM_MPI_INT,i,1,comm,&status); 
+			if (buffer[2])ISSM_MPI_Recv(outmatrix+(buffer[1]*N),N*buffer[2],ISSM_MPI_PDOUBLE,i,1,comm,&status);
+		}
+	} 
+	if (my_rank==0){ 
+		//Still have the local_matrix on node 0 to take care of.
+		memcpy(outmatrix,local_matrix,N*range*sizeof(double));
+	} 
+
+	/*Assign output pointer: */
+	*poutmatrix=outmatrix;
+	xDelete<int>(idxm);
+	xDelete<int>(idxn);
+	xDelete<double>(local_matrix);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/NewMat.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/NewMat.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/NewMat.cpp	(revision 21239)
@@ -0,0 +1,128 @@
+/*!\file:  NewMat.cpp
+ * \brief create matrix using the Petsc library
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscmat.h>
+#include <petscvec.h>
+#include <petscksp.h>
+
+#include "./petscpatches.h"
+#include "../../../shared/shared.h"
+#include "../../mpi/issmmpi.h"
+
+/*NewMat(int M,int N){{{*/
+Mat NewMat(int M,int N,ISSM_MPI_Comm comm){
+
+	/*output:*/
+	Mat outmatrix=NULL;
+
+	/*parameters: */
+	double sparsity=.001; //default
+	int    m,n;
+	int    d_nz,o_nz,nnz;
+
+	/*Determine local sizes: */
+	m=DetermineLocalSize(M,comm);
+	n=DetermineLocalSize(N,comm);
+
+	nnz=(int)((double)M*(double)N*sparsity); //number of non zeros.
+	d_nz=(int)((double)nnz/(double)M/2.0); //number of non zeros per row/2
+	o_nz=(int)((double)nnz/(double)M/2.0); //number of non zeros per row/2
+
+	#if _PETSC_MAJOR_ == 3 && _PETSC_MINOR_ > 2
+	MatCreateAIJ(comm,m,n,M,N,d_nz,NULL,o_nz,NULL,&outmatrix); 
+	#else
+	MatCreateMPIAIJ(comm,m,n,M,N,d_nz,NULL,o_nz,NULL,&outmatrix); 
+	#endif
+
+	return outmatrix;
+}
+/*}}}*/
+/*NewMat(int M,int N,double sparsity,ISSM_MPI_Comm comm){{{*/
+Mat NewMat(int M,int N,double sparsity,ISSM_MPI_Comm comm){
+
+	/*output:*/
+	Mat outmatrix=NULL;
+
+	/*parameters: */
+	int    m,n;
+	int    d_nz,o_nz;
+	int    nnz;
+
+	/*Determine local sizes: */
+	m=DetermineLocalSize(M,comm);
+	n=DetermineLocalSize(N,comm);
+
+	nnz=(int)((double)M*(double)N*sparsity); //number of non zeros.
+	d_nz=(int)((double)nnz/(double)M/2.0); //number of non zeros per row/2
+	o_nz=(int)((double)nnz/(double)M/2.0); //number of non zeros per row/2
+
+	#if _PETSC_MAJOR_ == 3 && _PETSC_MINOR_ > 2
+	if(sparsity==1){
+		MatCreateDense(comm,m,n,M,N,NULL,&outmatrix); 
+	}
+	else{
+		MatCreateAIJ(comm,m,n,M,N,d_nz,NULL,o_nz,NULL,&outmatrix); 
+	}
+	#else
+	MatCreateMPIAIJ(comm,m,n,M,N,d_nz,NULL,o_nz,NULL,&outmatrix); 
+	#endif
+
+	return outmatrix;
+}
+/*}}}*/
+/*NewMat(int M,int N,int connectivity,int numberofdofspernode){{{*/
+Mat NewMat(int M,int N,int connectivity,int numberofdofspernode,ISSM_MPI_Comm comm){
+
+	/*output:*/
+	Mat outmatrix=NULL;
+
+	/*parameters: */
+	int    m,n;
+	int    d_nz,o_nz;
+
+	#if _PETSC_MAJOR_ >= 3 
+	#if defined(_HAVE_PETSCDEV_) || _PETSC_MINOR_ >=4
+	MatType type;
+	#else
+	const MatType type;
+	#endif
+	#else
+	MatType type;
+	#endif
+
+	/*Determine local sizes: */
+	m=DetermineLocalSize(M,comm);
+	n=DetermineLocalSize(N,comm);
+
+	/*Figure out number of non zeros per row: */
+	d_nz=(int)connectivity*numberofdofspernode/2;
+	o_nz=(int)connectivity*numberofdofspernode/2;
+
+	MatCreate(comm,&outmatrix);
+	MatSetSizes(outmatrix,m,n,M,N);
+	MatSetFromOptions(outmatrix);
+
+	/*preallocation  according to type: */
+	MatGetType(outmatrix,&type);
+
+	#if _PETSC_MAJOR_ == 2 
+	if((strcmp(type,"mpiaij")==0) || (strcmp(type,"aijmumps")==0)){
+		MatMPIAIJSetPreallocation(outmatrix,d_nz,NULL,o_nz,NULL);
+	}
+	#else
+	if((strcmp(type,"mpiaij")==0) || (strcmp(type,"mpidense")==0)){
+		MatMPIAIJSetPreallocation(outmatrix,d_nz,NULL,o_nz,NULL);
+	}
+	#endif
+
+	return outmatrix;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/NewVec.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/NewVec.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/NewVec.cpp	(revision 21239)
@@ -0,0 +1,39 @@
+/*!\file NewVec.cpp
+ * \brief: create distributed Petsc vector.
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include "petscmat.h"
+#include "petscvec.h"
+#include "petscksp.h"
+
+#include "./petscpatches.h"
+#include "../../mpi/issmmpi.h"
+
+Vec NewVec(int size,ISSM_MPI_Comm comm,bool fromlocalsize){
+
+	int local_size;
+
+	/*output: */
+	Vec vector=NULL;
+
+	/*determine local size of vector: */
+	if(fromlocalsize){
+		local_size=size;
+	}
+	else{
+		local_size=DetermineLocalSize(size,comm);
+	}
+
+	VecCreate(comm,&vector); 
+	VecSetSizes(vector,local_size,PETSC_DECIDE); 
+	VecSetFromOptions(vector); 
+
+	return vector;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/PetscOptionsDetermineSolverType.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/PetscOptionsDetermineSolverType.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/PetscOptionsDetermineSolverType.cpp	(revision 21239)
@@ -0,0 +1,79 @@
+/*!\file PetscOptionsDetermineSolverType.cpp: from the petsc options, determine what kind of solver
+ * we are using.
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include "petscmat.h"
+#include "petscvec.h"
+#include "petscksp.h"
+
+#include "./petscpatches.h"
+
+#include "../../../shared/shared.h"
+
+void PetscOptionsDetermineSolverType(int* psolver_type){
+
+	char option[100];
+   #if _PETSC_MAJOR_ < 3 || (_PETSC_MAJOR_ == 3 && _PETSC_MINOR_ < 2)
+	PetscTruth flag;
+	#else
+	PetscBool flag;
+	#endif
+
+	/*output: */
+	int solver_type=PETSCPACKAGE;
+
+	/*retrieve mat_type option: */
+	#if (_PETSC_MAJOR_==3) && (_PETSC_MINOR_>=7)
+	PetscOptionsGetString(NULL,PETSC_NULL,"-mat_type",&option[0],100,&flag);
+	#else
+	PetscOptionsGetString(PETSC_NULL,"-mat_type",&option[0],100,&flag);
+	#endif
+
+	if (strcmp(option,"aijmumps")==0){
+		solver_type=MUMPSPACKAGE_LU;
+	}
+	if (strcmp(option,"sbaijmumps")==0){
+		solver_type=MUMPSPACKAGE_CHOL;
+	}
+	if (strcmp(option,"aijspooles")==0){
+		solver_type=SPOOLESPACKAGE_LU;
+	}
+	if (strcmp(option,"sbaijspooles")==0){
+		solver_type=SPOOLESPACKAGE_CHOL;
+	}
+	if (strcmp(option,"superlu_dist")==0){
+		solver_type=SUPERLUDISTPACKAGE;
+	}
+	if (strcmp(option,"")==0){
+		solver_type=SUPERLUDISTPACKAGE;
+	}
+
+	#if _PETSC_MAJOR_ >= 3 
+		#if (_PETSC_MINOR_>=7)
+		PetscOptionsGetString(NULL,PETSC_NULL,"-pc_factor_mat_solver_package",&option[0],100,&flag);
+		#else
+		PetscOptionsGetString(PETSC_NULL,"-pc_factor_mat_solver_package",&option[0],100,&flag);
+		#endif
+	if (strcmp(option,"mumps")==0){
+		solver_type=MUMPSPACKAGE_LU;
+	}
+	#endif
+
+	#if (_PETSC_MAJOR_==3) && (_PETSC_MINOR_>=7)
+	PetscOptionsGetString(NULL,PETSC_NULL,"-issm_option_solver",&option[0],100,&flag);
+	#else
+	PetscOptionsGetString(PETSC_NULL,"-issm_option_solver",&option[0],100,&flag);
+	#endif
+	if (strcmp(option,"FS")==0){
+		solver_type=FSSolverEnum;
+	}
+
+	*psolver_type=solver_type;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/PetscOptionsInsertMultipleString.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/PetscOptionsInsertMultipleString.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/PetscOptionsInsertMultipleString.cpp	(revision 21239)
@@ -0,0 +1,103 @@
+/*!\file PetscOptionsInsertMultipleString.cpp
+ * \brief: create distributed Petsc vector.
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscmat.h>
+#include <petscvec.h>
+#include <petscksp.h>
+
+#include "./petscpatches.h"
+
+#include "../../../shared/shared.h"
+
+void PetscOptionsInsertMultipleString(char* options_string){
+
+	/*The list of options is going to be pairs of the type "-option option_value"*/
+	#if _PETSC_MAJOR_ == 2
+		PetscToken *token=NULL ;
+	#else
+		PetscToken token=NULL;
+	#endif
+	char* first=NULL;
+	char* second=NULL;
+	size_t len;
+	int first_token=1;
+
+	PetscTokenCreate(options_string,' ',&token);
+	for (;;){
+
+		/*Read next tokens*/
+		if(first_token){
+			PetscTokenFind(token,&first);
+		}
+		PetscTokenFind(token,&second);
+
+		if (!first){
+			/*We are at the end of options*/
+			break;
+		}
+		if(!second){
+			/*We have no second value, just take first
+			 * and set the option, then end the token analysis.*/
+			if(first[0]!='-'){
+				/*This is not good, the option does not have '-'! Get out*/
+				_error_("Option " << first << " should be preceded by '-'!");
+			}
+			/*Reduce first to bare option value*/
+			PetscStrlen(first,&len);
+			while (len > 0 && first[len-1] == ' ') {
+				len--; first[len] = 0;
+			}
+			#if _PETSC_MAJOR_ == 3 && _PETSC_MINOR_ < 7
+			PetscOptionsSetValue(first,second);
+			#else
+			PetscOptionsSetValue(NULL,first,second);
+			#endif
+			break;
+		}
+		else{
+			/*Ok, we have a second token coming in. Is it another option, or 'first' option's value?*/
+			if (second[0]=='-'){
+				/*Second is another option, ignore it*/
+				PetscStrlen(first,&len);
+				while (len > 0 && first[len-1] == ' ' ) {
+					len--; first[len] = 0;
+				}
+				#if _PETSC_MAJOR_ == 3 && _PETSC_MINOR_ < 7
+				PetscOptionsSetValue(first,NULL);
+				#else
+				PetscOptionsSetValue(NULL,first,NULL);
+				#endif
+				/*Preparing next loop step*/
+				first=second;
+				first_token=0;
+			}
+			else{
+				/*Second is 'first' option's value*/
+				PetscStrlen(second,&len);
+				while (len > 0 && second[len-1] == ' ') {
+					len--; second[len] = 0;
+				}
+				#if _PETSC_MAJOR_ == 3 && _PETSC_MINOR_ < 7
+				PetscOptionsSetValue(first,second);
+				#else
+				PetscOptionsSetValue(NULL,first,second);
+				#endif
+				first_token=1;
+			}
+		}
+	}
+
+#if _PETSC_MAJOR_ == 3 && _PETSC_MINOR_ > 2
+	PetscTokenDestroy(&token);
+#else
+	PetscTokenDestroy(token);
+#endif
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/SolverEnum.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/SolverEnum.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/SolverEnum.h	(revision 21239)
@@ -0,0 +1,17 @@
+/*!\file: SolverEnum.h
+ * \brief prototypes for SolverEnum.h
+ */ 
+
+#ifndef _SOLVERENUM_H_
+#define  _SOLVERENUM_H_
+
+typedef enum{
+	PETSCPACKAGE,
+	MUMPSPACKAGE_LU,
+	MUMPSPACKAGE_CHOL,
+	SPOOLESPACKAGE_LU,
+	SPOOLESPACKAGE_CHOL,
+	SUPERLUDISTPACKAGE,
+} EXTERNALPACKAGES; 
+
+#endif //ifndef _SOLVERENUM_H_
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/VecFree.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/VecFree.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/VecFree.cpp	(revision 21239)
@@ -0,0 +1,25 @@
+/*!\file:  VecFree.cpp
+ * \brief wrapper to VecDestroy
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscmat.h>
+#include <petscvec.h>
+#include <petscksp.h>
+
+void VecFree(Vec* pvec){
+
+	#if _PETSC_MAJOR_ < 3 || (_PETSC_MAJOR_ == 3 && _PETSC_MINOR_ < 2)
+	if(*pvec)VecDestroy(*pvec);
+	#else
+	if(*pvec)VecDestroy(pvec);
+	#endif
+	*pvec=NULL;
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/VecMerge.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/VecMerge.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/VecMerge.cpp	(revision 21239)
@@ -0,0 +1,64 @@
+/*!\file:  VecMerge.cpp
+ * \brief merge vector B into A using partitioning vector A(row_partition_vector)=B;
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscmat.h>
+#include <petscvec.h>
+#include <petscksp.h>
+
+#include "./petscpatches.h"
+
+#include "../../../shared/shared.h"
+
+void VecMerge(Vec A, Vec B, double* row_partition_vector,int row_partition_size){
+
+	/*Petsc matrix*/
+	int lower_row,upper_row,range;
+	int* idxm=NULL;
+	double* values=NULL;
+
+	/*Vector sizes: */
+	int MB;
+
+	VecGetSize(B,&MB);
+
+	/*If the dimension of the partitioning vector is not the same as that of vector B, we have a problem: */
+	if ((row_partition_size !=MB) ){
+		_error_("Dimensions of partitioning vector incompatible with dimensions of input vector\n");
+	}
+
+	/*Get values from vector B and plug them into vector A, using the partitioning vector*/
+	VecGetOwnershipRange(B,&lower_row,&upper_row);
+	upper_row--;
+	range=upper_row-lower_row+1;
+
+	if (range){
+		/*This node owns rows of vector B, get them*/
+		idxm=xNew<int>(range);
+		values=xNew<double>(range);
+		for(int i=0;i<range;i++){
+			idxm[i]=lower_row+i;
+		}
+		VecGetValues(B,range,idxm,values);
+		/*Now, modify idxm using the partition vector, and plug values into A*/
+		for(int i=0;i<range;i++){
+			idxm[i]=int(row_partition_vector[lower_row+i])-1; //-1 because partition vector comes from Matlab, where indices start at 1.
+		}
+		VecSetValues(A,range,idxm,values,INSERT_VALUES);
+	}
+
+	/*Assemble vector*/
+	VecAssemblyBegin(A);
+	VecAssemblyEnd(A);
+
+	/*Free ressources:*/
+	xDelete<int>(idxm);
+	xDelete<double>(values);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/VecToMPISerial.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/VecToMPISerial.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/VecToMPISerial.cpp	(revision 21239)
@@ -0,0 +1,96 @@
+/*!\file VecToMPISerial.cpp
+ * \brief gather a Petsc Vector spread across the cluster, onto node 0, and then broadcast to all nodes. 
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../petscincludes.h"
+#include "../../../shared/shared.h"
+
+int VecToMPISerial(double** pgathered_vector, Vec vector,ISSM_MPI_Comm comm){
+
+	int i;
+	int num_procs; 
+	int my_rank;
+
+	/*Petsc*/
+	ISSM_MPI_Status status;
+	PetscInt lower_row,upper_row; 
+	int range;
+	int * idxn=NULL; 
+	int buffer[3];
+
+	/*intermediary results*/
+	double* local_vector=NULL;
+
+	/*input*/
+	int vector_size;
+
+	/*Output*/
+	double* gathered_vector=NULL; //Global vector holding the final assembled vector on all nodes.
+
+	/*recover my_rank and num_procs*/
+	ISSM_MPI_Comm_size(comm,&num_procs);
+	ISSM_MPI_Comm_rank(comm,&my_rank);
+
+	VecGetSize(vector,&vector_size);
+	if(vector_size==0){
+		*pgathered_vector=NULL;
+		return 1;
+	}
+
+	/*Allocate gathered vector on all nodes .*/
+	gathered_vector=xNew<double>(vector_size);
+
+	/*Allocate local vectors*/
+	VecGetOwnershipRange(vector,&lower_row,&upper_row);
+	upper_row--;
+	range=upper_row-lower_row+1;    
+
+	if (range){
+		idxn=xNew<int>(range); 
+		for (i=0;i<range;i++){
+			*(idxn+i)=lower_row+i;
+		} 
+		local_vector=xNew<double>(range);
+		/*Extract values from MPI vector to serial local_vector on each node*/
+		VecGetValues(vector,range,idxn,local_vector); 
+	}
+
+	/*Now each node holds its local_vector containing range rows. 
+	 * We send this local_vector  to the gathered_vector on node 0*/
+	for (i=1;i<num_procs;i++){
+		if (my_rank==i){ 
+			buffer[0]=my_rank;
+			buffer[1]=lower_row;
+			buffer[2]=range;
+			ISSM_MPI_Send(buffer,3,ISSM_MPI_INT,0,1,comm);  
+			if (range)ISSM_MPI_Send(local_vector,range,ISSM_MPI_PDOUBLE,0,1,comm); 
+		}
+		if (my_rank==0){
+			ISSM_MPI_Recv(buffer,3,ISSM_MPI_INT,i,1,comm,&status); 
+			if (buffer[2])ISSM_MPI_Recv(gathered_vector+buffer[1],buffer[2],ISSM_MPI_PDOUBLE,i,1,comm,&status);
+		}
+	}
+
+	if (my_rank==0){ 
+		//Still have the local_vector on node 0 to take care of.
+		if (range)memcpy(gathered_vector+lower_row,local_vector,range*sizeof(double));
+	}
+
+	/*Now, broadcast gathered_vector from node 0 to other nodes: */
+	ISSM_MPI_Bcast(gathered_vector,vector_size,ISSM_MPI_PDOUBLE,0,comm);
+
+	/*Assign output pointers: */
+	*pgathered_vector=gathered_vector;
+
+	/*free ressources: */
+	xDelete<int>(idxn);
+	xDelete<double>(local_vector);
+
+	return 1;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/petscpatches.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/petscpatches.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/patches/petscpatches.h	(revision 21239)
@@ -0,0 +1,41 @@
+/*\file petscpatches.h
+ * \brief: our own patches for petsc use
+ */
+
+#ifndef _PETSC_PATCHES_H_
+#define _PETSC_PATCHES_H_
+
+#include <petscmat.h>
+#include <petscvec.h>
+#include <petscksp.h>
+#include <petscsys.h>
+
+#include "./SolverEnum.h"
+#include "../../toolkitsenums.h"
+#include "../../../shared/io/Comm/IssmComm.h"
+
+class Parameters;
+
+Vec NewVec(int size,ISSM_MPI_Comm comm,bool fromlocalsize=false);
+Mat NewMat(int M,int N,ISSM_MPI_Comm comm);
+Mat NewMat(int M,int N,double sparsity,ISSM_MPI_Comm comm);
+Mat NewMat(int M,int N,int connectivity,int numberofdofspernode, ISSM_MPI_Comm comm);
+
+int VecToMPISerial(double** pgathered_vector, Vec vector,ISSM_MPI_Comm comm);
+void MatFree(Mat* pmat);
+void ISFree(IS* pis);
+void VecFree(Vec* pvec);
+void KSPFree(KSP* pksp);
+int MatPartition(Mat* poutmatrix,Mat matrixA,double* row_partition_vector,int row_partition_vector_size ,
+		double* col_partition_vector,int col_partition_vector_size);
+void PetscOptionsInsertMultipleString(char* options_string);
+void PetscOptionsDetermineSolverType(int* psolver_type);
+void VecMerge(Vec A, Vec B, double* row_partition_vector,int row_partition_size);
+void MatMultPatch(Mat A,Vec X, Vec AX,ISSM_MPI_Comm comm);
+void MatToSerial(double** poutmatrix,Mat matrix,ISSM_MPI_Comm comm);
+Vec  SerialToVec(double* vector,int vector_size);
+InsertMode ISSMToPetscInsertMode(InsMode mode);
+NormType ISSMToPetscNormMode(NormMode mode);
+MatType ISSMToPetscMatrixType(MatrixType type);
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/petscincludes.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/petscincludes.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/petsc/petscincludes.h	(revision 21239)
@@ -0,0 +1,21 @@
+/* \file petscincludes.h
+ * \brief all includes from Petsc + our own patches
+ */
+
+#ifndef _PETSC_INCLUDES_H_
+#define _PETSC_INCLUDES_H_
+
+#ifdef _HAVE_PETSC_
+
+/*Petsc includes: */
+#include <petscmat.h>
+#include <petscvec.h>
+#include <petscksp.h>
+#include <petscsys.h>
+
+/*our own patches: */
+#include "patches/petscpatches.h"
+#include "objects/petscobjects.h"
+
+#endif
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/toolkits.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/toolkits.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/toolkits.h	(revision 21239)
@@ -0,0 +1,40 @@
+/* \file toolkits.h
+ * \brief: this API allows use of external packages, provides patches, etc ...
+ */
+
+#ifndef _TOOLKITS_H_
+#define _TOOLKITS_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_PETSC_
+#include "./petsc/petscincludes.h"
+#endif
+
+#include "./mpi/issmmpi.h"
+
+#ifdef _HAVE_METIS_
+#include "./metis/metisincludes.h"
+#endif
+
+#ifdef _HAVE_GSL_
+#include "./gsl/gslincludes.h"
+#endif
+
+#ifdef _HAVE_ADOLC_
+#include "./adolc/adolcincludes.h"
+#endif
+
+#ifdef _HAVE_TRIANGLE_
+#include "./triangle/triangleincludes.h"
+#endif
+
+#include "./objects/toolkitobjects.h"
+#include "./toolkitsenums.h"
+#include "./issm/issmtoolkit.h"
+#include "./ToolkitOptions.h"
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/toolkitsenums.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/toolkitsenums.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/toolkitsenums.h	(revision 21239)
@@ -0,0 +1,18 @@
+/* \file toolkitsenums.h
+ * \brief: enums that encompasse all of the toolkit APIs. This mainly maps into PETSC enums.
+ */
+
+#ifndef _TOOLKITSENUMS_H_
+#define _TOOLKITSENUMS_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+typedef enum {INS_VAL, ADD_VAL} InsMode;
+typedef enum {NORM_INF,NORM_TWO,NORM_FROB} NormMode;
+typedef enum {DENSE_SEQUENTIAL,SPARSE_SEQUENTIAL} MatrixType;
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/triangle/triangleincludes.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/triangle/triangleincludes.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/c/toolkits/triangle/triangleincludes.h	(revision 21239)
@@ -0,0 +1,13 @@
+/* \file triangleincludes.h
+ * \brief all includes from triangle
+ */
+
+#ifndef _TRIANGLE_INCLUDES_H_
+#define _TRIANGLE_INCLUDES_H_
+
+#ifdef _C_ //only valid for iso C, not C++
+/*Triangle includes: */
+#include "triangle.h"
+#endif //#ifdef _C_
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/dox/issm.dox
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/dox/issm.dox	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/dox/issm.dox	(revision 21239)
@@ -0,0 +1,75 @@
+/** 
+  \mainpage ISSM C/C++ Source Code Browser
+
+  <BR>
+
+  <B> <I> Welcome ! </I> </B>
+
+  This is the searchable browsing tool for ISSM 
+  (the <a href="http://issm.jpl.nasa.gov">Ice Sheet System Model</a>).
+  
+  These pages were automatically generated by <a href="http://www.doxygen.org/">doxygen</a>, 
+  from the ISSM source code. 
+
+  Navigate the tabs above and browse through ISSM's 
+  C++ source code, files/directories, and data 
+  structures.
+
+  To find additional information regarding the use of
+  ISSM, its current release, or the ISSM team, please 
+  visit <a href="http://issm.jpl.nasa.gov">http://issm.jpl.nasa.gov</a>.
+
+  <BR>
+
+  <B> Helpful Links </B>
+
+  - Download ISSM <a href="http://issm.jpl.nasa.gov/download/">here</a>.
+
+  - ISSM Installation instructions for Linux/Mac OSX are found <a href="http://issm.jpl.nasa.gov/download/unix/">here</a>.
+  
+  - ISSM Installation instructions for Windows are found <a href="http://issm.jpl.nasa.gov/download/windows/">here</a>.
+
+  - For help using ISSM, see our online <a href="http://issm.jpl.nasa.gov/documentation/">Documentation</a>.
+  Other documentation is also available including simple tutorials 
+  and FAQ.
+
+  - A current publication list is kept <a href="http://issm.jpl.nasa.gov/publications/">here</a>.
+
+  - Contact us by e-mail at <a href="mailto:issm@jpl.nasa.gov">issm@jpl.nasa.gov</a>
+
+  <BR>
+  
+  <B> Code Stats</B>
+
+<table width="600px" rules=none border=0 bordercolor="#000000" cellpadding="3" align="center" style="border-collapse:collapse;">
+<tr>
+<th  bgcolor=#7AA9DD style="text-align:left;">Language</th><th  bgcolor=#7AA9DD style="text-align:right;">files</th><th  bgcolor=#7AA9DD style="text-align:right;">blank</th><th  bgcolor=#7AA9DD style="text-align:right;">comment</th><th  bgcolor=#7AA9DD style="text-align:right;">code</th><th  bgcolor=#7AA9DD style="text-align:right;">Total</th>
+</th>
+<tr>
+<th  bgcolor=#FFFFFF style="text-align:left;"> C++ </th><td  bgcolor=#FFFFFF style="text-align:right;">467</td><td  bgcolor=#FFFFFF style="text-align:right;">18020</td><td  bgcolor=#FFFFFF style="text-align:right;">18480</td><td  bgcolor=#FFFFFF style="text-align:right;">84161</td><td  bgcolor=#FFFFFF style="text-align:right;">120661</td>
+</tr>
+<tr>
+<th  bgcolor=#C6E2FF style="text-align:left;"> MATLAB </th><td  bgcolor=#C6E2FF style="text-align:right;">1606</td><td  bgcolor=#C6E2FF style="text-align:right;">8941</td><td  bgcolor=#C6E2FF style="text-align:right;">18403</td><td  bgcolor=#C6E2FF style="text-align:right;">42192</td><td  bgcolor=#C6E2FF style="text-align:right;">69536</td>
+</tr>
+<tr>
+<th  bgcolor=#FFFFFF style="text-align:left;"> C/C++  Header </th><td  bgcolor=#FFFFFF style="text-align:right;">420</td><td  bgcolor=#FFFFFF style="text-align:right;">3534</td><td  bgcolor=#FFFFFF style="text-align:right;">3662</td><td  bgcolor=#FFFFFF style="text-align:right;">15940</td><td  bgcolor=#FFFFFF style="text-align:right;">23136</td>
+</tr>
+<tr>
+<th  bgcolor=#C6E2FF style="text-align:left;"> Python </th><td  bgcolor=#C6E2FF style="text-align:right;">162</td><td  bgcolor=#C6E2FF style="text-align:right;">2523</td><td  bgcolor=#C6E2FF style="text-align:right;">2751</td><td  bgcolor=#C6E2FF style="text-align:right;">10735</td><td  bgcolor=#C6E2FF style="text-align:right;">16009</td>
+</tr>
+<tr>
+<th  bgcolor=#FFFFFF style="text-align:left;"> m4 </th><td  bgcolor=#FFFFFF style="text-align:right;">8</td><td  bgcolor=#FFFFFF style="text-align:right;">1052</td><td  bgcolor=#FFFFFF style="text-align:right;">149</td><td  bgcolor=#FFFFFF style="text-align:right;">9877</td><td  bgcolor=#FFFFFF style="text-align:right;">11078</td>
+</tr>
+<tr>
+<th  bgcolor=#C6E2FF style="text-align:left;"> Bourne  Shell </th><td  bgcolor=#C6E2FF style="text-align:right;">4</td><td  bgcolor=#C6E2FF style="text-align:right;">113</td><td  bgcolor=#C6E2FF style="text-align:right;">188</td><td  bgcolor=#C6E2FF style="text-align:right;">524</td><td  bgcolor=#C6E2FF style="text-align:right;">825</td>
+</tr>
+<tr>
+<th  bgcolor=#FFFFFF style="text-align:left;"> Fortran  77 </th><td  bgcolor=#FFFFFF style="text-align:right;">7</td><td  bgcolor=#FFFFFF style="text-align:right;">4</td><td  bgcolor=#FFFFFF style="text-align:right;">302</td><td  bgcolor=#FFFFFF style="text-align:right;">365</td><td  bgcolor=#FFFFFF style="text-align:right;">671</td>
+</tr>
+<tr>
+<th  bgcolor=#C6E2FF style="text-align:left;"> SUM: </th><td  bgcolor=#C6E2FF style="text-align:right;">2674</td><td  bgcolor=#C6E2FF style="text-align:right;">34187</td><td  bgcolor=#C6E2FF style="text-align:right;">43935</td><td  bgcolor=#C6E2FF style="text-align:right;">163794</td><td  bgcolor=#C6E2FF style="text-align:right;">241916</td>
+</tr>
+</table>
+
+	<I> Copyright (C) 2014 </I>
+  */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/Makefile.am
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/Makefile.am	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/Makefile.am	(revision 21239)
@@ -0,0 +1,176 @@
+#To generate list of directories
+#
+#find . -type d -exec ls -d {} \;
+
+bin_SCRIPTS = 
+if WRAPPERS
+if MATLAB
+if !DEVELOPMENT
+bin_SCRIPTS += ${ISSM_DIR}/src/m/qmu/*.m \
+					${ISSM_DIR}/src/m/archive/*.m \
+					${ISSM_DIR}/src/m/qmu/setupdesign/*.m \
+					${ISSM_DIR}/src/m/qmu/plot/*.m \
+					${ISSM_DIR}/src/m/qmu/examples/*.m \
+					${ISSM_DIR}/src/m/kml/*.m \
+					${ISSM_DIR}/src/m/dev/issmversion.m \
+					${ISSM_DIR}/src/m/classes/*.m \
+					${ISSM_DIR}/src/m/classes/qmu/*.m \
+					${ISSM_DIR}/src/m/classes/qmu/@dakota_method/*.m \
+					${ISSM_DIR}/src/m/classes/clusters/*.m \
+					${ISSM_DIR}/src/m/consistency/*.m \
+					${ISSM_DIR}/src/m/array/*.m \
+					${ISSM_DIR}/src/m/boundaryconditions/*.m \
+					${ISSM_DIR}/src/m/exp/*.m \
+					${ISSM_DIR}/src/m/exp/operation/*.m \
+					${ISSM_DIR}/src/m/geometry/*.m \
+					${ISSM_DIR}/src/m/interp/*.m \
+					${ISSM_DIR}/src/m/coordsystems/*.m \
+					${ISSM_DIR}/src/m/mech/*.m \
+					${ISSM_DIR}/src/m/mesh/*.m \
+					${ISSM_DIR}/src/m/mesh/planet/spheretri/*.m \
+					${ISSM_DIR}/src/m/mesh/planet/gmsh/*.m \
+					${ISSM_DIR}/src/m/mesh/rifts/*.m \
+					${ISSM_DIR}/src/m/miscellaneous/*.m \
+					${ISSM_DIR}/src/m/modules/*.m \
+					${ISSM_DIR}/src/m/os/*.m \
+					${ISSM_DIR}/src/m/plot/*.m \
+					${ISSM_DIR}/src/m/plot/colormaps/*.m \
+					${ISSM_DIR}/src/m/string/*.m \
+					${ISSM_DIR}/src/m/extrusion/*.m \
+					${ISSM_DIR}/src/m/inversions/*.m \
+					${ISSM_DIR}/src/m/io/*.m \
+					${ISSM_DIR}/src/m/parameterization/*.m \
+					${ISSM_DIR}/src/m/partition/*.m \
+					${ISSM_DIR}/src/m/print/*.m \
+					${ISSM_DIR}/src/m/regional/*.m \
+					${ISSM_DIR}/src/m/solve/*.m \
+					${ISSM_DIR}/src/m/solvers/*.m \
+					${ISSM_DIR}/src/m/materials/*.m
+endif
+endif
+if PYTHON
+if !DEVELOPMENT
+bin_SCRIPTS += ${ISSM_DIR}/src/m/archive/*.py \
+					${ISSM_DIR}/src/m/classes/*.py \
+					${ISSM_DIR}/src/m/classes/clusters/*.py \
+					${ISSM_DIR}/src/m/consistency/*.py \
+					${ISSM_DIR}/src/m/dev/issmversion.py \
+					${ISSM_DIR}/src/m/boundaryconditions/*.py \
+					${ISSM_DIR}/src/m/exp/*.py \
+					${ISSM_DIR}/src/m/geometry/*.py \
+					${ISSM_DIR}/src/m/coordsystems/*.py \
+					${ISSM_DIR}/src/m/interp/*.py \
+					${ISSM_DIR}/src/m/inversions/*.py \
+					${ISSM_DIR}/src/m/mech/*.py \
+					${ISSM_DIR}/src/m/mesh/*.py \
+					${ISSM_DIR}/src/m/mesh/rifts/*.py \
+					${ISSM_DIR}/src/m/miscellaneous/*.py \
+					${ISSM_DIR}/src/m/modules/*.py \
+					${ISSM_DIR}/src/m/os/*.py \
+					${ISSM_DIR}/src/m/plot/*.py \
+					${ISSM_DIR}/src/m/extrusion/*.py \
+					${ISSM_DIR}/src/m/io/*.py \
+					${ISSM_DIR}/src/m/parameterization/*.py \
+					${ISSM_DIR}/src/m/solve/*.py \
+					${ISSM_DIR}/src/m/solvers/*.py \
+					${ISSM_DIR}/src/m/materials/*.py
+endif
+endif
+
+if JAVASCRIPT
+if !DEVELOPMENT
+
+js_scripts =  ${ISSM_DIR}/src/m/array/arrayoperations.js \
+				${ISSM_DIR}/src/m/boundaryconditions/SetIceShelfBC.js \
+				${ISSM_DIR}/src/m/classes/autodiff.js \
+				${ISSM_DIR}/src/m/classes/balancethickness.js \
+				${ISSM_DIR}/src/m/classes/basalforcings.js \
+				${ISSM_DIR}/src/m/classes/calving.js \
+				${ISSM_DIR}/src/m/classes/clusters/generic.js \
+				${ISSM_DIR}/src/m/classes/clusters/local.js \
+				${ISSM_DIR}/src/m/classes/constants.js \
+				${ISSM_DIR}/src/m/classes/damage.js \
+				${ISSM_DIR}/src/m/classes/debug.js \
+				${ISSM_DIR}/src/m/classes/flowequation.js \
+				${ISSM_DIR}/src/m/classes/friction.js \
+				${ISSM_DIR}/src/m/classes/geometry.js \
+				${ISSM_DIR}/src/m/classes/gia.js \
+				${ISSM_DIR}/src/m/classes/groundingline.js \
+				${ISSM_DIR}/src/m/classes/hydrologyshreve.js \
+				${ISSM_DIR}/src/m/classes/initialization.js \
+				${ISSM_DIR}/src/m/classes/inversion.js \
+				${ISSM_DIR}/src/m/classes/mask.js \
+				${ISSM_DIR}/src/m/classes/maskpsl.js \
+				${ISSM_DIR}/src/m/classes/masstransport.js \
+				${ISSM_DIR}/src/m/classes/matice.js \
+				${ISSM_DIR}/src/m/classes/mesh2d.js \
+				${ISSM_DIR}/src/m/classes/mesh3dsurface.js \
+				${ISSM_DIR}/src/m/classes/miscellaneous.js \
+				${ISSM_DIR}/src/m/classes/model.js \
+				${ISSM_DIR}/src/m/classes/outputdefinition.js \
+				${ISSM_DIR}/src/m/classes/pairoptions.js \
+				${ISSM_DIR}/src/m/classes/plotoptions.js \
+				${ISSM_DIR}/src/m/classes/priv.js \
+				${ISSM_DIR}/src/m/classes/qmu.js \
+				${ISSM_DIR}/src/m/classes/radaroverlay.js \
+				${ISSM_DIR}/src/m/classes/rifts.js \
+				${ISSM_DIR}/src/m/classes/slr.js \
+				${ISSM_DIR}/src/m/classes/settings.js \
+				${ISSM_DIR}/src/m/classes/SMBforcing.js \
+				${ISSM_DIR}/src/m/classes/steadystate.js \
+				${ISSM_DIR}/src/m/classes/stressbalance.js \
+				${ISSM_DIR}/src/m/classes/template.js \
+				${ISSM_DIR}/src/m/classes/thermal.js \
+				${ISSM_DIR}/src/m/classes/timestepping.js \
+				${ISSM_DIR}/src/m/classes/toolkits.js \
+				${ISSM_DIR}/src/m/classes/levelset.js \
+				${ISSM_DIR}/src/m/classes/trans.js \
+				${ISSM_DIR}/src/m/classes/verbose.js \
+				${ISSM_DIR}/src/m/consistency/checkfield.js \
+				${ISSM_DIR}/src/m/consistency/ismodelselfconsistent.js \
+				${ISSM_DIR}/src/m/geometry/FlagElements.js \
+				${ISSM_DIR}/src/m/inversions/marshallcostfunctions.js \
+				${ISSM_DIR}/src/m/io/fileptr.js \
+				${ISSM_DIR}/src/m/io/savemodel.js \
+				${ISSM_DIR}/src/m/io/loadmodel.js \
+				${ISSM_DIR}/src/m/io/saveAsFile.js \
+				${ISSM_DIR}/src/m/io/writetofile.js \
+				${ISSM_DIR}/src/m/io/download.js \
+				${ISSM_DIR}/src/m/io/writetofile.js \
+				${ISSM_DIR}/src/m/materials/paterson.js \
+				${ISSM_DIR}/src/m/mesh/triangle.js \
+				${ISSM_DIR}/src/m/miscellaneous/colorbars.js \
+				${ISSM_DIR}/src/m/miscellaneous/fielddisplay.js \
+				${ISSM_DIR}/src/m/miscellaneous/rgbcolor.js \
+				${ISSM_DIR}/src/m/parameterization/setflowequation.js \
+				${ISSM_DIR}/src/m/parameterization/setmask.js \
+				${ISSM_DIR}/src/m/plot/slider.js \
+				${ISSM_DIR}/src/m/plot/applyoptions.js \
+				${ISSM_DIR}/src/m/plot/checkplotoptions.js \
+				${ISSM_DIR}/src/m/plot/plot_manager.js \
+				${ISSM_DIR}/src/m/plot/plot_mesh.js \
+				${ISSM_DIR}/src/m/plot/plot_overlay.js \
+				${ISSM_DIR}/src/m/plot/plot_unit.js \
+				${ISSM_DIR}/src/m/plot/plot_quiver.js \
+				${ISSM_DIR}/src/m/plot/plotdoc.js \
+				${ISSM_DIR}/src/m/plot/plotmodel.js \
+				${ISSM_DIR}/src/m/plot/processdata.js \
+				${ISSM_DIR}/src/m/plot/processmesh.js \
+				${ISSM_DIR}/src/m/plot/gauge.js \
+				${ISSM_DIR}/src/m/plot/webgl.js \
+				${ISSM_DIR}/src/m/print/sprintf.js \
+				${ISSM_DIR}/src/m/solve/loadresultsfrombuffer.js \
+				${ISSM_DIR}/src/m/solve/marshall.js \
+				${ISSM_DIR}/src/m/solve/parseresultsfrombuffer.js \
+				${ISSM_DIR}/src/m/solve/solve.js \
+				${ISSM_DIR}/src/m/solve/WriteData.js \
+				${ISSM_DIR}/src/m/solvers/issmgslsolver.js 
+bin_SCRIPTS +=  issm-bin.js
+
+issm-bin.js: ${js_scripts}
+	cat ${js_scripts}  > issm-bin.js
+
+endif
+endif
+
+endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/archive/arch.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/archive/arch.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/archive/arch.py	(revision 21239)
@@ -0,0 +1,266 @@
+import numpy
+import math
+import struct
+import sys
+import os
+from collections import OrderedDict
+
+def archwrite(filename,*args): # {{{
+	"""
+	ARCHWRITE - Write data to a field, given the file name, field name, and data.
+
+		Usage:
+			archwrite('archive101.arch','variable_name',data);
+	"""
+	nargs=len(args);
+	if nargs % 2 != 0 :
+		raise ValueError('Incorrect number of arguments.')
+	# open file
+	try:
+		if not os.path.isfile(filename):
+			fid=open(filename,'wb')
+		else:
+			fid=open(filename,'ab')
+	except IOError as e:
+		raise IOError("archwrite error: could not open '%s' to write to." % filename)
+
+	nfields=len(args)/2
+	# generate data to write
+	for i in range(nfields):
+		# write field name
+		name=args[2*i]
+		write_field_name(fid,name)
+		
+		# write data associated with field name
+		data=args[2*i+1]
+		code=format_archive_code(data)
+		if code==1:
+			raise ValueError("archwrite : error writing data, string should not be written as field data")
+		elif code==2:
+			write_scalar(fid,data)
+		elif code==3:
+			write_vector(fid,data)
+		else:
+			raise ValueError("archwrite : error writing data, invalid code entered '%d'" % code)
+	
+	fid.close()
+
+# }}}
+def archread(filename,fieldname): # {{{
+	"""
+	ARCHREAD - Given an arch file name, and a field name, find and return the data
+					associated with that field name.
+		Usage:
+			archread('archive101.arch','field_var_1')
+	"""
+	try:
+		if os.path.isfile(filename):
+			fid=open(filename,'rb')
+		else:
+			raise IOError("archread error : file '%s' does not exist" % filename)
+	except IOError as e:
+		raise IOError("archread error : could not open file '%s' to read from" % filename)
+	
+	archive_results=[]
+
+	# read first result
+	result=read_field(fid)
+	while result:
+		if fieldname == result['field_name']:
+			# found the data we wanted
+			archive_results=result['data']; # we only want the data
+			break
+		
+		# read next result
+		result=read_field(fid)
+	
+	# close file
+	fid.close()
+	
+	return archive_results
+# }}}
+def archdisp(filename): # {{{
+	"""
+	ARCHDISP - Given an arch filename, display the contents of that file
+
+		Usage:
+			archdisp('archive101.arch')
+	"""
+	try:
+		if os.path.isfile(filename):
+			fid=open(filename,'rb')
+		else:
+			raise IOError("archread error : file '%s' does not exist" % filename)
+	except IOError as e:
+		raise IOError("archread error : could not open file '%s' to read from" % filename)
+	
+	print 'Source file: '
+	print '\t{0}'.format(filename)
+	print 'Variables: '
+
+	result=read_field(fid)
+	while result:
+		print '\t{0}'.format(result['field_name'])
+		print '\t\tSize:\t\t{0}'.format(result['size'])
+		print '\t\tDatatype:\t{0}'.format(result['data_type'])
+		# go to next result
+		result=read_field(fid)
+	
+	# close file
+	fid.close()
+
+# }}}
+
+# Helper functions 
+def write_field_name(fid,data): # {{{
+	"""
+	Routine to write field name (variable name) to an archive file.
+	"""
+	# write the length of the record
+	# length to write + string size (len) + format code
+	reclen=len(data)+4+4
+	fid.write(struct.pack('>i',reclen))
+	
+	# write format code
+	code=format_archive_code(data);
+	if code != 1:
+		raise TypeError("archwrite : error writing field name, expected string, but got %s" % type(data))
+	fid.write(struct.pack('>i',1))
+
+	# write string length, and then the string
+	fid.write(struct.pack('>i',len(data)))
+	fid.write(struct.pack('>%ds' % len(data),data))
+# }}}
+def write_scalar(fid,data): # {{{
+	"""
+	Procedure to write a double to an arch file pointed to by fid
+	"""
+	# write length of record
+	# double (8 bytes) + format code (4 bytes)
+	reclen=8+4
+	fid.write(struct.pack('>i',reclen))
+
+	# write the format code (2 for scalar)
+	fid.write(struct.pack('>i',2))
+	
+	# write the double
+	fid.write(struct.pack('>d',data))
+
+# }}}
+def write_vector(fid,data): # {{{
+	"""
+	Procedure to write a numpy array to an arch file
+	"""
+	# Make sure our vector is the correct shape.
+	# Reshape it into a row vector if it is not correct.
+	if isinstance(data,(bool,int,long,float)):
+		data=numpy.array([data])
+	elif isinstance(data,(list,tuple)):
+		data=numpy.array(data).reshape(-1,1)
+	
+	if numpy.ndim(data) == 1:
+		if numpy.size(data):
+			data=data.reshape(numpy.size(data),1)
+		else:
+			data=data.reshape(0,0)
+	
+	# get size of data
+	sz=data.shape
+
+	# write length of record
+	# format code + row size + col size + (double size * row amt * col amt)
+	reclen=4+4+4+8*sz[0]*sz[1]
+	# make sure we can fit data into file
+	if reclen>2**31:
+		raise ValueError("archwrite error : can not write vector to binary file because it is too large")
+	fid.write(struct.pack('>i',reclen))
+	
+	# write format code
+	fid.write(struct.pack('>i',3))
+
+	# write vector
+	fid.write(struct.pack('>i',sz[0]))
+	fid.write(struct.pack('>i',sz[1]))
+	for i in xrange(sz[0]):
+		for j in xrange(sz[1]):
+			fid.write(struct.pack('>d',float(data[i][j])))
+
+# }}}
+
+def read_field(fid): # {{{
+	"""
+	Procedure to read a field and return a results list with the following attributes:
+	result['field_name']	-> the name of the variable that was just read
+	result['size']			-> size (dimensions) of the variable just read
+	result['data_type']	-> the type of data that was just read
+	result['data']			-> the actual data
+	"""
+
+	try:
+		# first, read the string
+		reclen=struct.unpack('>i',fid.read(struct.calcsize('>i')))[0]
+		check_name=struct.unpack('>i',fid.read(struct.calcsize('>i')))[0]
+		if check_name != 1:
+			raise ValueError('archread error : a string was not present at the start of the arch file')
+		namelen=struct.unpack('>i',fid.read(struct.calcsize('>i')))[0]
+		fieldname=struct.unpack('>%ds' % namelen,fid.read(namelen))[0]
+		
+		# then, read the data
+		datalen=struct.unpack('>i',fid.read(struct.calcsize('>i')))[0]
+		data_type=struct.unpack('>i',fid.read(struct.calcsize('>i')))[0]
+
+		if data_type==2:
+			# unpack scalar
+			data=struct.unpack('>d',fid.read(struct.calcsize('>d')))[0]
+		elif data_type==3:
+			rows=struct.unpack('>i',fid.read(struct.calcsize('>i')))[0]
+			cols=struct.unpack('>i',fid.read(struct.calcsize('>i')))[0]
+			raw_data=numpy.zeros(shape=(rows,cols),dtype=float)
+			for i in xrange(rows):
+				raw_data[i,:]=struct.unpack('>%dd' % cols,fid.read(cols*struct.calcsize('>d')))
+			# The matrix will be unpacked in order and will be filled left -> right by column
+			# We need to reshape and transpose the matrix so it can be read correctly
+			data=raw_data.reshape(raw_data.shape[::-1]).T
+		else:
+			raise TypeError("Cannot read data type %d" % data_type)
+			
+		# give additional data to user
+		if data_type==2:
+			data_size='1x1'
+			data_type_str='double'
+		elif data_type==3:
+			data_size='{0}x{1}'.format(rows,cols)
+			data_type_str='vector/matrix'
+
+		result=OrderedDict()
+		result['field_name']=fieldname
+		result['size']=data_size
+		result['data_type']=data_type_str
+		result['data']=data
+
+	except struct.error as e:
+		result=None
+
+	return result
+# }}}
+
+def format_archive_code(format): # {{{
+	"""
+	Given a variable, determine it's type and return
+	an integer value:
+
+	1 : string
+	2 : double (scalar)
+	3 : vector or matrix (of type double)
+
+	"""
+	if isinstance(format,basestring):
+		code=1
+	elif format.shape[0] == 1 and format.shape[1] == 1:
+		code=2
+	elif isinstance(format,(list,tuple,numpy.ndarray)):
+		code=3
+	else:
+		raise TypeError("archwrite error: data type '%s' is not valid." % type(format))
+	return code
+# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/archive/archdisp.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/archive/archdisp.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/archive/archdisp.m	(revision 21239)
@@ -0,0 +1,65 @@
+function archdisp(filename) % {{{
+%ARCHDISP - Display the contents of a .arch file
+%
+%	Usage:
+%		archdisp('archive101.arch');
+
+	if nargin~=1
+		help archdisplay
+		error('Error: Invalid number of arguments, only one file can be displayed at a time');
+	end
+
+	if ~exist(filename,'file'),
+		error('Error: File does not exist!');
+	end
+	
+	fid=fopen(filename,'rb');
+	fprintf('Source file: \n');
+	fprintf('\t%s\n',filename);
+	fprintf('Variables: \n');
+
+	field_names={};
+	field_sizes={};
+	field_types={};
+	archive_data=[];
+
+	% Read file
+	while ~feof(fid)
+		[reclen,count]=fread(fid,1,'int','ieee-be');
+		if count == 0, % reached eof
+			break;
+		end
+		% Read variable name
+		fread(fid,1,'int','ieee-be'); % this will always return a string
+		field_name_length=fread(fid,1,'int','ieee-be');
+		field_names{end+1}=char(fread(fid,field_name_length,'char','ieee-be')');
+		% Read variable traits
+		data_reclen=fread(fid,1,'int','ieee-be');
+		field_type=fread(fid,1,'int','ieee-be');
+		% return related type
+		if field_type==2
+			field_types{end+1}='double';
+			field_sizes{end+1}='1x1'; % a scalar will always be a 1x1 cell array
+			archive_data{end+1}=fread(fid,1,'double','ieee-be');
+		elseif field_type==3
+			field_types{end+1}='vector/matrix';
+			rows=fread(fid,1,'int','ieee-be');
+			cols=fread(fid,1,'int','ieee-be');
+			data=fread(fid,[rows,cols],'double','ieee-be');
+			field_size_cat=strcat(num2str(rows),'x',num2str(cols)); 
+			field_sizes{end+1}=field_size_cat;
+			archive_data{end+1}=data;
+		else
+			fclose(fid);
+			error('Encountered invalid data type while reading archive.');
+		end
+	end
+	fclose(fid);
+
+	% Display contents
+	for i=1:numel(field_names)
+		fprintf('\t%s\n',field_names{i});
+		fprintf('\t\tSize:\t\t%s\n',field_sizes{i});
+		fprintf('\t\tDatatype:\t%s\n',field_types{i});	
+	end
+end % }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/archive/archread.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/archive/archread.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/archive/archread.m	(revision 21239)
@@ -0,0 +1,100 @@
+function [archive_data]=archread(filename,varargin) % {{{
+%ARCHREAD - Given a variable name list of variable names (given as separate arguments),
+%	find and return the data associated with those variable names
+%
+%	Usage:
+%		archive_data = archread('archive101.arch','archive101_field1');
+
+	nvarargs=length(varargin);
+
+	if nargin<2
+		help archread
+		error('Error: Must provide correct number of arguments.');
+	end
+
+	if ~exist(filename,'file')
+		error(['Error: File: ' filename ' does not exist.']);
+	end
+
+	fid=fopen(filename,'rb');
+	% Get structure of file
+	field_names={};
+	field_data_positions=[]; % starting position (in bytes) of data
+	archive_data=[];
+
+	% pass 1: get field names and relate them to field data 
+	while ~feof(fid)
+		[reclen,count]=fread(fid,1,'int','ieee-be'); 
+		if count == 0, % reached eof 
+			break;
+		end
+		record_type=fread(fid,1,'int','ieee-be');
+		if record_type~=1
+			fclose(fid);
+			error(['Error: Reading failed. Expected variable of type string, type given was ' format_archive_code_to_type(record_type)]);
+		else
+			field_name_length=fread(fid,1,'int','ieee-be');
+			field_names{end+1}=char(fread(fid,field_name_length,'char','ieee-be')');
+			% once we have a field name at index i, we will associate
+			% the starting positiion of the data related to that field name
+			% by using field data positions at index i
+			field_data_positions(end+1)=ftell(fid);
+			data_reclen=fread(fid,1,'int','ieee-be');
+			fseek(fid,data_reclen,'cof'); % advance to next field name
+		end
+	end
+	fseek(fid,0,-1); % rewind
+
+	% Determine what fields we need (compare to varargin)
+	idx=find(ismember(field_names,varargin));
+	if size(idx) == 0,
+		fclose(fid);
+		error('Error: No matching variables found in archive.');
+	end
+	% Get data from field_data_positions
+	for i=1:length(idx)
+		fseek(fid,field_data_positions(idx(i)),0); % get starting position of data
+		reclen=fread(fid,1,'int','ieee-be');
+		field_type=fread(fid,1,'int','ieee-be');
+		if field_type==2
+			archive_data{i}=fread(fid,1,'double','ieee-be');
+		elseif field_type==3
+			archive_data{i}=read_vector(fid);
+		else
+			fclose(fid);
+			error('Error: Encountered invalid field type when reading data.');
+		end
+	end
+	fclose(fid);
+end%}}}
+
+%Helper functions{{{
+function [code]=format_archive_code(format) % {{{
+%Given a format, return corresponding code (for reading and writing)
+	if ischar(format)
+		code=1; % string
+	elseif isscalar(format)
+		code=2; % scalar
+	elseif isvector(format) or ismatrix(format)
+		code=3; % vector 
+	else
+		error('Error! Please ensure arguments are strings, scalars, or vectors.');
+	end
+end%}}}
+function [str]=format_archive_code_to_type(code) % {{{
+	if code == 1
+		str='string';
+	elseif code == 2
+		str='scalar';
+	elseif code == 3
+		str='vector';
+	else
+		error(['Code ' num2str(code) ' is not associated with any known format.']);
+	end
+end%}}}
+function [data]=read_vector(fid) % {{{
+	rows=fread(fid,1,'int','ieee-be'); 
+	cols=fread(fid,1,'int','ieee-be');
+	data=fread(fid,[rows,cols],'double','ieee-be');
+end%}}}
+%}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/archive/archwrite.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/archive/archwrite.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/archive/archwrite.m	(revision 21239)
@@ -0,0 +1,91 @@
+function archwrite(filename,varargin) % {{{
+%ARCHWRITE - Write data to a field, given the file name, field name, and data.
+%
+%	Usage:
+%		archwrite('archive101.arch','variable_name',data);
+%		archwrite('archive102.arch','archive102_field1',transpose(field_value{1}),...
+%					'archive_field2',transpose(field_value{2}),...
+%					'archive_field3',-6.2420512521312);
+
+	nvarargs=length(varargin);
+
+	if nargin==1 || mod(nvarargs,2)~=0
+		help archwrite
+		error('Error: Invalid number of arguments provided. Please check the usage above.');
+	end
+
+	if ~exist(filename,'file'),
+		fid=fopen(filename,'wb');	% create new file
+	else
+		fid=fopen(filename,'ab+');	% append to file
+	end
+
+	numfields=nvarargs/2;
+	% Generate data to write
+	for i=1:numfields,
+		% write field name
+		name=varargin{2*i-1};
+		write_field_name(fid,name);
+
+		% write data
+		data=varargin{2*i};
+		code=format_archive_code(data);
+		if code==1
+			fclose(fid);
+			error('Error: Field data should be a vector or scalar, string was detected');
+		elseif code==2 % scalar
+			write_scalar(fid,data);
+		elseif code==3 % vector
+			write_vector(fid,data);
+		end
+	end
+	% clean up
+	fclose(fid);
+end%}}}
+
+%Helper functions{{{
+function [code]=format_archive_code(format) % {{{
+	%Given a format, return corresponding code (for reading and writing)
+	if ischar(format)
+		code=1; % string
+	elseif isscalar(format)
+		code=2; % scalar
+	elseif (isvector(format) || ismatrix(format))
+		code=3; % vector or matrix
+	else
+		error('Error! Please ensure arguments are strings, scalars, or vectors/matrixes.');
+	end
+end%}}}
+function write_field_name(fid,field_name) % {{{
+	% write record length for name
+	rclen=4+4+length(field_name); % format code + length to write + amt of chars to write
+	fwrite(fid,rclen,'int','ieee-be');
+
+	% write field name to file
+	fwrite(fid,1,'int','ieee-be');							% data will be a string
+	fwrite(fid,length(field_name),'int','ieee-be');	% show how many chars need to be read
+	fwrite(fid,field_name,'char','ieee-be');			% write field name
+end%}}}
+function write_scalar(fid,data) % {{{
+	% write record length for scalar
+	rclen=4+8; % format code + size of double (8 bytes)
+	fwrite(fid,rclen,'int','ieee-be');
+
+	% write scalar to file
+	fwrite(fid,2,'int','ieee-be');			% data will be scalar
+	fwrite(fid,data,'double','ieee-be');	% write scalar to file
+end%}}}
+function write_vector(fid,data) % {{{
+	% write record length for vector
+	row_size=size(data,1);
+	col_size=size(data,2);
+	rclen=4+4+4+8*row_size*col_size; % code+rowsz+colsz+(doublesz*rowamt*colamt)
+	fwrite(fid,rclen,'int','ieee-be');
+	
+	% write vector to file
+	fwrite(fid,3,'int','ieee-be');
+	fwrite(fid,row_size,'int','ieee-be');
+	fwrite(fid,col_size,'int','ieee-be');
+	fwrite(fid,data,'double','ieee-be');
+end%}}}
+%}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/archive/netcdf2arch.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/archive/netcdf2arch.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/archive/netcdf2arch.m	(revision 21239)
@@ -0,0 +1,29 @@
+function netcdf2arch(netcdf_filename,arch_filename) % {{{
+%NETCDF2ARCH - Convert a netcdf file into an archive file.
+%
+%	Usage:
+%		netcdf2arch('Archive101.nc','Archive101.arch');
+	ncdata=readnetcdf(netcdf_filename);
+	ncstruct=struct();
+
+	variables = ncdata.VarArray;
+	for i=1:size(variables,2),
+		fieldname=deblank(variables(i).Str);
+		fieldvalue=double(squeeze(variables(i).Data));
+		ncstruct.(fieldname)=fieldvalue;
+	end
+
+	variables=ncdata.AttArray;
+	for i=1:size(variables,2),
+		fieldname=deblank(variables(i).Str);
+		fieldvalue=double(variables(i).Val);
+		ncstruct.(fieldname)=fieldvalue;
+	end
+	ncfields=fieldnames(ncstruct);
+	% first, remove old arch file
+	delete(arch_filename);
+	% write data to file 
+	for i=1:numel(ncfields)
+		archwrite(arch_filename,ncfields{i},ncstruct.(ncfields{i}));
+	end
+end%}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/allempty.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/allempty.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/allempty.m	(revision 21239)
@@ -0,0 +1,22 @@
+%
+%  function to return an empty cell array if all array elements are empty
+%
+%  function [cout]=allempty(cin)
+%
+function [cout]=allempty(cin)
+
+if ~nargin
+    help allempty
+    return
+end
+
+for j=1:numel(cin)
+    if ~isempty(cin{j})
+        cout=cin;
+        return
+    end
+end
+cout={};
+
+end
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/allequal.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/allequal.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/allequal.m	(revision 21239)
@@ -0,0 +1,70 @@
+%
+%  function to return an empty array if all array elements are
+%  equal to the given value, which may also be empty but not nan.
+%
+%  (note that by definition, nan is not equal to nan.  this could
+%  be changed by using isequalwithequalnans.)
+%
+%  function [aout]=allequal(ain,aval)
+%
+function [aout]=allequal(ain,aval)
+
+if ~nargin
+    help allequal
+    return
+end
+
+aout=ain;
+
+if     islogical(ain) && islogical(aval)
+    for i=1:numel(ain)
+        if ~isequal(ain(i),aval)
+            return
+        end
+    end
+    aout=logical([]);
+
+elseif isnumeric(ain) && isnumeric(aval)
+    for i=1:numel(ain)
+        if ~isequal(ain(i),aval)
+            return
+        end
+    end
+    aout=[];
+
+elseif ischar(ain) && ischar(aval)
+    for i=1:size(ain,1)
+        if ~strcmp(ain(i,:),aval)
+            return
+        end
+    end
+    aout='';
+
+elseif iscell(ain)
+    if     islogical(aval)
+        for i=1:numel(ain)
+            if ~islogical(ain{i}) || ~isequal(ain{i},aval)
+                return
+            end
+        end
+        aout={};
+
+    elseif isnumeric(aval)
+        for i=1:numel(ain)
+            if ~isnumeric(ain{i}) || ~isequal(ain{i},aval)
+                return
+            end
+        end
+        aout={};
+
+    elseif ischar(aval)
+        for i=1:size(ain,1)
+            if ~ischar(ain{i}) || ~strcmp(ain{i},aval)
+                return
+            end
+        end
+        aout={};
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/allnan.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/allnan.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/allnan.m	(revision 21239)
@@ -0,0 +1,22 @@
+%
+%  function to return an empty double array if all array elements are NaN
+%
+%  function [dout]=allnan(din)
+%
+function [dout]=allnan(din)
+
+if ~nargin
+    help allnan
+    return
+end
+
+for i=1:numel(din)
+    if ~isnan(din(i))
+        dout=din;
+        return
+    end
+end
+dout=[];
+
+end
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/any2str.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/any2str.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/any2str.m	(revision 21239)
@@ -0,0 +1,22 @@
+%
+%  function to convert anything to a string
+%
+%  function [svec]=any2str(a,alim)
+%
+function [svec]=any2str(a,alim)
+
+if ~exist('alim','var') || (numel(a) <= alim)
+    if iscell(a)
+        svec=string_cell(a);
+    else
+        if (numel(a) > 1) && ~ischar(a)
+            svec=string_vec(a);
+        else
+            svec=item2str(a);
+        end
+    end
+else
+	svec=[string_size(a) ' ''' class(a) ''''];
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/array_numel.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/array_numel.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/array_numel.m	(revision 21239)
@@ -0,0 +1,35 @@
+%
+%  function to find a number of elements from a list of arrays.
+%  
+%  [asize]=array_numel(varargin)
+%
+%  see array_size to check the number and shape of elements, if
+%  multiple indices will be used.
+%
+function [anum]=array_numel(varargin)
+
+anum=1;
+
+for iarg=1:nargin
+    if ischar(varargin{iarg})
+        inum=numel(cellstr(varargin{iarg}));
+    else
+        inum=numel(varargin{iarg});
+    end
+
+    if ~isequal(inum,1)
+        if isequal(anum,1)
+            anum=inum;
+        else
+            if ~isequal(inum,anum)
+                if ~isempty(inputname(iarg))
+                    error('Array ''%s'' has inconsistent number of elements.',inputname(iarg));
+                else
+                    error('Array %d has inconsistent number of elements.',iarg);
+                end
+            end
+        end
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/array_size.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/array_size.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/array_size.m	(revision 21239)
@@ -0,0 +1,35 @@
+%
+%  function to find an array size from a list of arrays.
+%  
+%  [asize]=array_size(varargin)
+%
+%  see array_numel to check only the number of elements, if
+%  single indices will be used.
+%
+function [asize]=array_size(varargin)
+
+asize=[1 1];
+
+for iarg=1:nargin
+    if ischar(varargin{iarg})
+        isize=size(cellstr(varargin{iarg}));
+    else
+        isize=size(varargin{iarg});
+    end
+
+    if ~isequal(isize,[1 1])
+        if isequal(asize,[1 1])
+            asize=isize;
+        else
+            if ~isequal(isize,asize)
+                if ~isempty(inputname(iarg))
+                    error('Array ''%s'' has inconsistent size.',inputname(iarg));
+                else
+                    error('Array %d has inconsistent size.',iarg);
+                end
+            end
+        end
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/arrayoperations.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/arrayoperations.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/arrayoperations.js	(revision 21239)
@@ -0,0 +1,384 @@
+function ArrayMax(array){ //{{{
+	return Math.max.apply(null,array);
+} //}}}
+function ArrayMax2D(array){ //{{{
+	
+	var max=0;
+
+	for (var i=0;i<array.length;i++){
+		var subarray=array[i];
+		max=Math.max(max,ArrayMax(subarray));
+	}
+
+	return max;
+} //}}}
+function ArrayMin(array){ //{{{
+	return Math.min.apply(null,array);
+} //}}}
+function ArraySum(array){ //{{{
+	var sum=0;
+	for(var i=0;i<array.length;i++)sum+=array[i];
+	return sum;
+} //}}}
+function ArrayXPY(){ //{{{
+    if (arguments.length<2)throw Error("ArrayXPY error message: sum has to be for at least two arrays!");
+
+	//check internal consistency of arrays provided!: 
+	var firstarray=arguments[0];
+	var firstsize=firstarray.length;
+	
+	for(var a=1;a<arguments.length;a++){
+		var array=arguments[a];
+		if(array.length!=firstsize)throw Error("ArrayXPY error message: arrays provided as arguments are not of the same length!");
+	}
+
+	//do the sum:
+	var sum=NewArrayFill(firstsize,0);
+	for(var a=0;a<arguments.length;a++){
+		var array=arguments[a];
+		for(var i=0;i<array.length;i++){
+			sum[i]+=array[i];
+		}
+	}
+	return sum;
+
+} //}}}
+function ArrayOr(){ //{{{
+    if (arguments.length<2)throw Error("ArrayOr error message: sum has to be for at least two arrays!");
+
+	//check internal consistency of arrays provided!: 
+	var firstarray=arguments[0];
+	var firstsize=firstarray.length;
+	
+	for(var a=1;a<arguments.length;a++){
+		var array=arguments[a];
+		if(array.length!=firstsize)throw Error("ArrayOr error message: arrays provided as arguments are not of the same length!");
+	}
+
+	//do the or:
+	var or=NewArrayFill(firstsize,0);
+	for(var a=0;a<arguments.length;a++){
+		var array=arguments[a];
+		for(var i=0;i<array.length;i++){
+			or[i] = or[i] | array[i];
+		}
+	}
+	return or;
+
+} //}}}
+function ArrayMin2D(array){ //{{{
+	
+	var min=ArrayMax2D(array);
+
+	for (var i=0;i<array.length;i++){
+		var subarray=array[i];
+		min=Math.min(min,ArrayMin(subarray));
+	}
+
+	return min;
+} //}}}
+function ListToMatrix(list, elementsPerSubArray) { //{{{
+	var matrix = [], i, k;
+
+	for (i = 0, k = -1; i < list.length; i++) {
+		if (i % elementsPerSubArray === 0) {
+			k++;
+			matrix[k] = [];
+		}
+
+		matrix[k].push(list[i]);
+	}
+
+	return matrix;
+} //}}}
+function MatrixToList(matrixin) { //{{{
+
+	var matrix=matrixin;
+
+	if (!IsArray(matrix[0])) return matrix;
+	else{
+		var width = matrix[0].length;
+		var length = matrix.length;
+		var list= new Array(width*length);
+
+		for(var i=0;i<length;i++){
+			for(var j=0;j<width;j++){
+				list[i*width+j]=matrix[i][j];
+			}
+		}
+		return list;
+	}
+} //}}}
+function IsArray(object) { //{{{
+
+	var type=Object.prototype.toString.call( object );
+	if( type === '[object Array]' ) return 1;
+	if( type === '[object Float64Array]' ) return 1;
+	if( type === '[object Float32Array]' ) return 1;
+	if( type === '[object Int32Array]' ) return 1;
+	if( type === '[object Int16Array]' ) return 1;
+	if( type === '[object Uint32Array]' ) return 1;
+	if( type === '[object Uint16Array]' ) return 1;
+	if( type === '[object Uint8Array]' ) return 1;
+	return 0;
+
+} //}}}
+function ArrayNot(array) { //{{{
+
+	var notarray=array;
+	for (var i=0;i<array.length;i++)notarray[i]=-array[i];
+	return notarray;
+} //}}}
+function ArrayCopy(array) { //{{{
+
+	var copy=[];
+	for(var i=0;i<array.length;i++)copy[i]=array[i];
+	return copy;
+} //}}}
+function ArrayPow(array,coefficient) { //{{{
+
+	var powarray=array;
+	for (var i=0;i<array.length;i++)powarray[i]=Math.pow(array[i],coefficient);
+	return powarray;
+} //}}}
+function ArraySqrt(array) { //{{{
+
+	var sqrtarray=array;
+	for (var i=0;i<array.length;i++)sqrtarray[i]=Math.sqrt(array[i]);
+	return sqrtarray;
+} //}}}
+function ArrayScale(array,alpha) { //{{{
+
+	for (var i=0;i<array.length;i++)array[i]=array[i]*alpha;
+
+} //}}}
+function ArrayMag(array1,array2) { //{{{
+
+	var arraymag=NewArrayFill(array1.length,0);
+	for (var i=0;i<array1.length;i++)arraymag[i]=Math.sqrt(Math.pow(array1[i],2)+Math.pow(array2[i],2));
+	return arraymag;
+} //}}}
+function ArrayAnyNaN(array) { //{{{
+
+    if(IsArray(array[0])){
+        for(var i=0;i<array.length;i++){
+            for(var j=0;j<array[0].length;j++){
+                if (isNaN(array[i][j])) return 1;
+            }
+        }
+    }
+    else{
+        for(var i=0;i<array.length;i++){
+            if (isNaN(array[i])) return 1;
+        }
+    }
+    return 0;
+} //}}}
+function ArrayUnique(arr) { //{{{
+
+	return arr.reverse().filter(function (e, i, arr) {
+		    return arr.indexOf(e, i+1) === -1;
+	}).reverse();
+} //}}}
+function ArraySort(array) { //{{{
+
+	return array.sort(function(a, b) {
+		return a - b;
+	});
+
+} //}}}
+function ArrayAnyEqual(array,value) { //{{{
+	
+	if(!isNaN(value)){
+		for(var i=0;i<array.length;i++){
+			if (array[i]==value)return 1;
+		}
+	}
+	else{
+		for(var i=0;i<array.length;i++){
+			if (isNaN(array[i]))return 1;
+		}
+	}
+	return 0;
+} //}}}
+function ArrayAnyBelowOrEqual(array,value) { //{{{
+
+	for(var i=0;i<array.length;i++){
+		if (array[i]<=value)return 1;
+	}
+	return 0;
+} //}}}
+function ArrayAnyBelowStrict(array,value) { //{{{
+
+	for(var i=0;i<array.length;i++){
+		if (array[i]<value)return 1;
+	}
+	return 0;
+} //}}}
+function ArrayAnyAboveOrEqual(array,value) { //{{{
+
+	for(var i=0;i<array.length;i++){
+		if (array[i]>=value)return 1;
+	}
+	return 0;
+} //}}}
+function ArrayAnyAboveStrict(array,value) { //{{{
+
+	for(var i=0;i<array.length;i++){
+		if (array[i]>value)return 1;
+	}
+	return 0;
+} //}}}
+function ArrayAnd(array1,array2) { //{{{
+
+	var array=array1;
+	for (var i=0;i<array1.length;i++)array[i]=array1[i] & array2[i];
+	return array;
+} //}}}
+function ArrayIsMember(array1,array2) { //{{{
+
+	var array=NewArrayFill(array1.length,0);
+	for (var i=0;i<array1.length;i++){
+		for(var j=0;j<array2.length;j++){
+			if (array1[i] == array2[j]){
+				array[i]=1;
+				break;
+			}
+		}
+	}
+	return array;
+} //}}}
+function NewArrayFill(size,value) { //{{{
+
+	return new Array(size).fill(value);
+} //}}}
+function NewArrayFillIncrement(size,start,increment) { //{{{
+
+	var array=new Array(size); 
+
+	for(var i=0;i<size;i++){
+		array[i]=start+i*increment;
+	}
+
+	return array;
+} //}}}
+function ArrayFind(array,value) { //{{{
+	
+	//find number of indices
+	var count=0;
+	for (var i=0;i<array.length;i++)if(array[i]==value)count++;
+
+	//allocate:
+	var indices= NewArrayFill(count,0);
+
+	//fill in:
+	count=0;
+	for (var i=0;i<array.length;i++){
+		if(array[i]==value){
+			indices[count]=i;
+			count++;
+		}
+	}
+	return indices;
+} //}}}
+function ArrayFindNot(array,value) { //{{{
+	
+	//find number of indices
+	var count=0;
+	for (var i=0;i<array.length;i++)if(array[i]!=value)count++;
+
+	//allocate:
+	var indices= NewArrayFill(count,0);
+
+	//fill in:
+	count=0;
+	for (var i=0;i<array.length;i++){
+		if(array[i]!=value){
+			indices[count]=i;
+			count++;
+		}
+	}
+	return indices;
+} //}}}
+function Create2DArray(rows,cols) { //{{{
+	var arr = [];
+
+	for (var i=0;i<rows;i++) {
+		arr[i] = new Array(cols);
+	}
+
+	return arr;
+} //}}}
+function MapIsEmpty(map) { //{{{
+	for (var key in map){
+		if(map.hasOwnProperty(key)){
+			return false;
+		}
+	}
+	return true;
+} //}}}
+function clone(obj) {//{{{
+	
+	var copy;
+
+	// Handle the 3 simple types, and null or undefined
+	if (null == obj || "object" != typeof obj) return obj;
+
+	// Handle Date
+	if (obj instanceof Date) {
+		copy = new Date();
+		copy.setTime(obj.getTime());
+		return copy;
+	}
+
+	// Handle Array
+	if (obj instanceof Array) {
+		copy = [];
+		for (var i = 0, len = obj.length; i < len; i++) {
+			copy[i] = clone(obj[i]);
+		}
+		return copy;
+	}
+
+	// Handle Object
+	if (obj instanceof Object) {
+		copy = {};
+		for (var attr in obj) {
+			if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);
+		}
+		return copy;
+	}
+
+	throw new Error("Unable to copy obj! Its type isn't supported.");
+} //}}}
+function FloatFix(pointer,size) {//{{{
+
+	var buffer=new Float64Array(size);
+	for(var i=0;i<size;i++)buffer[i]=pointer[i];
+	return buffer;
+
+
+} //}}}
+function NullFix(pointer,value) {//{{{
+
+	if(pointer==null)return value;
+	else{
+		//check that the pointer values are not null: 
+		if(IsArray(pointer)){
+			if(IsArray(pointer[0])){
+				for(var i=0;i<pointer.length;i++){
+					for(var j=0;j<pointer[0].length;j++){
+						if(pointer[i][j]==null)pointer[i][j]=value;
+					}
+				}	
+			}
+			else{
+				for(var i=0;i<pointer.length;i++){
+					if(pointer[i]==null)pointer[i]=value;
+				}
+			}
+		}
+		return pointer;
+	}
+
+} //}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/item2str.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/item2str.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/item2str.m	(revision 21239)
@@ -0,0 +1,31 @@
+%
+%  function to convert an item to a string
+%
+%  function [svec]=item2str(a)
+%
+function [svec]=item2str(a)
+
+if     islogical(a)
+    if a
+        svec='true';
+    else
+        svec='false';
+    end
+elseif ischar(a)
+    svec=['''' a ''''];
+elseif isnumeric(a)
+    svec=num2str(a);
+else
+    if ~isempty(inputname(1))
+        warning('item2str:item_unrecog',...
+            'Item ''%s'' is of unrecognized type ''%s''.',...
+            inputname(1),class(a));
+    else
+        warning('item2str:item_unrecog',...
+            'Item %d is of unrecognized type ''%s''.',...
+            1,class(a));
+    end
+    return
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/rotateticklabel.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/rotateticklabel.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/rotateticklabel.m	(revision 21239)
@@ -0,0 +1,69 @@
+function th=rotateticklabel(h,rot,demo)
+%ROTATETICKLABEL rotates tick labels
+%   TH=ROTATETICKLABEL(H,ROT) is the calling form where H is a handle to
+%   the axis that contains the XTickLabels that are to be rotated. ROT is
+%   an optional parameter that specifies the angle of rotation. The default
+%   angle is 90. TH is a handle to the text objects created. For long
+%   strings such as those produced by datetick, you may have to adjust the
+%   position of the axes so the labels don't get cut off.
+%
+%   Of course, GCA can be substituted for H if desired.
+%
+%   TH=ROTATETICKLABEL([],[],'demo') shows a demo figure.
+%
+%   Known deficiencies: if tick labels are raised to a power, the power
+%   will be lost after rotation.
+%
+%   See also datetick.
+
+%   Written Oct 14, 2005 by Andy Bliss
+%   Copyright 2005 by Andy Bliss
+
+%DEMO:
+if nargin==3
+    x=[now-.7 now-.3 now];
+    y=[20 35 15];
+    figure
+    plot(x,y,'.-')
+    datetick('x',0,'keepticks')
+    h=gca;
+    set(h,'position',[0.13 0.35 0.775 0.55])
+    rot=90;
+end
+
+%set the default rotation if user doesn't specify
+if nargin==1
+    rot=90;
+end
+%make sure the rotation is in the range 0:360 (brute force method)
+while rot>360
+    rot=rot-360;
+end
+while rot<0
+    rot=rot+360;
+end
+%get current tick labels
+a=get(h,'XTickLabel');
+%erase current tick labels from figure
+set(h,'XTickLabel',[]);
+%get tick label positions
+b=get(h,'XTick');
+c=get(h,'YTick');
+%make new tick labels
+%  must consider yscale (jes, 9/14/10)
+switch lower(get(h,'YScale'))
+    case 'linear'
+        if rot<180
+            th=text(b,repmat(c(1)-.1*(c(2)-c(1)),length(b),1),a,'HorizontalAlignment','right','rotation',rot,'Interpreter','none');
+        else
+            th=text(b,repmat(c(1)-.1*(c(2)-c(1)),length(b),1),a,'HorizontalAlignment','left','rotation',rot,'Interpreter','none');
+        end
+    case 'log'
+        if rot<180
+            th=text(b,repmat(10^(log10(c(1))-.1*(log10(c(2))-log10(c(1)))),length(b),1),a,'HorizontalAlignment','right','rotation',rot,'Interpreter','none');
+        else
+            th=text(b,repmat(10^(log10(c(1))-.1*(log10(c(2))-log10(c(1)))),length(b),1),a,'HorizontalAlignment','left','rotation',rot,'Interpreter','none');
+        end
+    otherwise
+        set(h,'XTickLabel',a);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/str2int.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/str2int.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/str2int.m	(revision 21239)
@@ -0,0 +1,45 @@
+%
+%  function to find and read the first or last positive integer
+%  in a character string.
+%
+%  function [aint]=str2int(astr,cfl)
+%
+function [aint]=str2int(astr,cfl)
+
+aint=[];
+
+if     ~exist('cfl','var') || strncmpi(cfl,'f',1)
+    i=1;
+
+    while (i <= length(astr))
+        if (astr(i) >= '0' && astr(i) <= '9')
+            aint=sscanf(astr(i:length(astr)),'%d',[1,1]);
+            return
+        else
+            i=i+1;
+        end
+	end
+
+elseif strncmpi(cfl,'l',1)
+    i=length(astr);
+    ifound=false;
+
+    while (i >= 1)
+        if     (astr(i) >= '0' && astr(i) <= '9')
+            ifound=true;
+            i=i-1;
+        elseif ~ifound
+            i=i-1;
+        else
+            aint=sscanf(astr(i+1:length(astr)),'%d',[1,1]);
+            return
+        end
+	end
+
+    if ifound
+        aint=sscanf(astr,'%d',[1,1]);
+        return
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/string_cell.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/string_cell.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/string_cell.m	(revision 21239)
@@ -0,0 +1,26 @@
+%
+%  function to return the string of a cell array
+%
+%  function [svec]=string_cell(a)
+%
+function [svec]=string_cell(a)
+
+if ~nargin
+    help string_cell
+    return
+end
+
+if (numel(a) == 0)
+    svec='{}';
+    return
+end
+
+%  assemble string for output
+
+svec ='{';
+for i=1:numel(a)-1;
+    svec=[svec item2str(a{i}) ' '];
+end
+svec=[svec item2str(a{end}) '}'];
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/string_dim.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/string_dim.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/string_dim.m	(revision 21239)
@@ -0,0 +1,72 @@
+%
+%  function to return the string dimension of an array element
+%
+%  function [sdim]=string_dim(a,idim,varargin)
+%
+function [sdim]=string_dim(a,idim,varargin)
+
+if ~nargin
+    help string_dim
+    return
+end
+
+%  check for scalar
+
+if (numel(a) == 1) && (idim == 1)
+    sdim='';
+    return
+end
+
+%  check for overflow
+
+if (idim > numel(a))
+    if ~isempty(inputname(1))
+        error('Index %d exceeds number of elements in array ''%s''.',...
+            idim,inputname(1));
+    else
+        error('Index %d exceeds number of elements in array %d.',...
+            idim,1);
+    end
+end
+
+%  check for column or row vector (Matlab uses a minimum of two
+%  dimensions, so this won't match Matlab standard output)
+
+for iarg=1:nargin-2
+    if strcmpi(varargin{iarg},'vector')
+        if (ndims(a) == 2) && ((size(a,1) == 1) || (size(a,2) == 1))
+            sdim =['(' num2str(idim) ')'];
+            return
+        end
+    end
+end
+
+%  do the general case
+
+asize=size(a);
+index=zeros(size(asize));
+aprod=prod(asize);
+idim =idim-1;
+
+%  calculate indices base 0 and convert to base 1
+
+%  note that ind2sub might be useful, except that it requires a list
+%  of scalars rather than a vector for output.
+
+for i=length(asize):-1:1
+    aprod=aprod/asize(i);
+    index(i)=floor(idim/aprod);
+    idim=idim-index(i)*aprod;
+end
+index=index+1;
+
+%  assemble string for output
+
+sdim ='(';
+for i=1:length(asize)-1;
+    sdim =[sdim num2str(index(i)) ','];
+end
+sdim =[sdim num2str(index(end)) ')'];
+
+end
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/string_size.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/string_size.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/string_size.m	(revision 21239)
@@ -0,0 +1,38 @@
+%
+%  function to return the string size of an array
+%
+%  function [ssize]=string_size(a,varargin)
+%
+function [ssize]=string_size(a,varargin)
+
+if ~nargin
+    help string_size
+    return
+end
+
+%  check for column or row vector (Matlab uses a minimum of two
+%  dimensions, so this won't match Matlab standard output)
+
+for iarg=1:nargin-1
+    if strcmpi(varargin{iarg},'vector')
+        if (ndims(a) == 2) && ((size(a,1) == 1) || (size(a,2) == 1))
+            ssize =['(' num2str(numel(a)) ')'];
+            return
+        end
+    end
+end
+
+%  do the general case
+
+asize=size(a);
+
+%  assemble string for output
+
+ssize ='(';
+for i=1:length(asize)-1;
+    ssize =[ssize num2str(asize(i)) 'x'];
+end
+ssize =[ssize num2str(asize(end)) ')'];
+
+end
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/string_vec.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/string_vec.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/string_vec.m	(revision 21239)
@@ -0,0 +1,26 @@
+%
+%  function to return the string of an vector
+%
+%  function [svec]=string_vec(a)
+%
+function [svec]=string_vec(a)
+
+if ~nargin
+    help string_vec
+    return
+end
+
+if (numel(a) == 0)
+    svec='[]';
+    return
+end
+
+%  assemble string for output
+
+svec ='[';
+for i=1:numel(a)-1;
+    svec=[svec item2str(a(i)) ' '];
+end
+svec=[svec item2str(a(end)) ']'];
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/struc_class.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/struc_class.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/struc_class.m	(revision 21239)
@@ -0,0 +1,30 @@
+%
+%  function to find the structural fields of a specified class
+%  
+%  [sclasso]=struc_class(sclass,cstr)
+%
+function [sclasso]=struc_class(sclass,cstr)
+
+%  collect only the objects of the appropriate class
+
+if     isa(sclass,cstr)
+    if ~isempty(inputname(1))
+        sclasso.(inputname(1))=sclass;
+    else
+        sclasso.(cstr)        =sclass;
+    end
+
+elseif isstruct(sclass)
+    fnames=fieldnames(sclass);
+    for i=1:numel(fnames)
+        if isa(sclass.(fnames{i}),cstr)
+            sclasso.(fnames{i})=sclass.(fnames{i});
+        end
+    end
+end
+
+if ~exist('sclasso','var')
+    sclasso=struct([]);
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/struc_desc.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/struc_desc.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/array/struc_desc.m	(revision 21239)
@@ -0,0 +1,61 @@
+%
+%  function to find the structures with the specified descriptors
+%  
+%  [sarrayo]=struc_desc(sarray,varargin)
+%
+function [sarrayo]=struc_desc(sarray,varargin)
+
+if ~isfield(sarray,'descriptor')
+    if ~isempty(inputname(1))
+        error('Field ''descriptor'' not found in array ''%s''.',inputname(1));
+    else
+        error('Field ''descriptor'' not found in array %d.',1);
+    end
+end
+
+sarrayo=struct([]);
+
+for iarg=1:nargin-1
+    if     iscell(varargin{iarg})
+        desc=        varargin{iarg};
+    elseif ischar(varargin{iarg})
+        desc=cellstr(varargin{iarg});
+    end
+
+    for i=1:length(desc)
+        sarrayoi=struc_desci(sarray,desc{i});
+        if ~isempty(sarrayoi)
+            if isempty(sarrayo)
+                sarrayo       =sarrayoi;
+            else
+                sarrayo(end+1)=sarrayoi;
+            end
+        end
+    end
+end
+
+%  if nothing found, return whole array
+
+if isempty(sarrayo)
+    sarrayo=sarray;
+end
+
+end
+
+%
+%  function to find the structure with the specified descriptor
+%  
+function [sarrayo]=struc_desci(sarray,str)
+
+sarrayo=struct([]);
+
+for i=1:numel(sarray)
+    if strcmp(sarray(i).descriptor,str)
+        sarrayo=sarray(i);
+        return
+    end
+end
+
+warning(['String ''' str ''' not found in array ''' inputname(1) '''.']);
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/PattynSMB.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/PattynSMB.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/PattynSMB.m	(revision 21239)
@@ -0,0 +1,51 @@
+function smb=PattynSMB(md,Tf)
+%PATTYNSMB- Compute SMB over Antarctica (from Pattyn 2006, pg. 18, "GRANTISM: An ExcelTM model for Greenland and 
+%           Antarctic ice-sheet response to climate changes")
+%
+%   Usage:
+%      md=PattynSMB(md,Tf)
+%
+%      where Tf is a background forcing temperature ("an anomalous temperature relative to the present conditions)
+%
+%
+%   See also: SETICESHELFBC, SETMARINEICESHEETBC
+
+ 
+% Tma    : Mean annual surface temperature in [deg C]
+% Tms    : Mean summer temperature in [deg C]
+% h      : Surface/bedrock elevation (I assume in meters but paper does not specify)
+% phi    : Latitude in degrees SOUTH
+% lambda : Longitude in degrees WEST
+% Tf     : Background forcing temperature ("an anomalous temperature relative to the present conditions)
+% ACCdot : Accumulation rate in units of [m/a] ice equivalent
+% ABLdot : Surface ablation rate in [m/a] ice equivalent
+
+	%Double check lat and long exist:
+	if isnan(md.mesh.lat),
+		error('PattynSMB error message: md.mesh.lat field required');
+	end
+
+	%Delta Temperature forcing 
+	if (nargin==1),
+		Tf=0; 
+	end
+
+	% Calculate mean annual surface temperature, Eqn (11)
+	% Here, -0.012 is the atmospheric Lapse rate from sea level in deg/m.
+	% It is multiplied by surface elevation from sea level
+	Tma = -15.15 - 0.012*md.geometry.surface;
+
+	%% Calculate summer temperature, Eqn (12)
+	%% No melting at PIG in mean conditions - need about 6 degress Tf to start having a negative yearly SMB
+	Tms = 16.81 - 0.00692*md.geometry.surface - 0.27937*abs(md.mesh.lat) + Tf;
+
+	%% Calculate Accumulation perturbation with Tf forcing, Eqn (9)
+	ACCdot = 2.5*2.^((Tma+Tf)/10.) - 2.5*2.^(Tma/10.);
+
+	%% Calculate Ablation, Eqn (10) (use for both Antarctica & Greenland), max melt is 10m/a
+	ABLdot=zeros(size(ACCdot));
+	pos=Tms>=0;
+	ABLdot(pos)=min(1.4*Tms(Tms>=0),10);
+
+	smb=ACCdot-ABLdot;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/PattynSMB.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/PattynSMB.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/PattynSMB.py	(revision 21239)
@@ -0,0 +1,50 @@
+import os
+import numpy as npy
+def PattynSMB(md,Tf):
+	"""
+    PATTYNSMB- Compute SMB over Antarctica (from Pattyn 2006, pg. 18, "GRANTISM: An ExcelTM model for Greenland 
+	and Antarctic ice-sheet response to climate changes")
+
+    Usage:
+      md=PattynSMB(md,Tf)
+
+      where Tf is a background forcing temperature ("an anomalous temperature relative to the present conditions)
+
+
+    See also: SETICESHELFBC, SETMARINEICESHEETBC
+	"""
+ 
+	# Tma    : Mean annual surface temperature in [deg C]
+	# Tms    : Mean summer temperature in [deg C]
+	# h      : Surface/bedrock elevation (I assume in meters but paper does not specify)
+	# phi    : Latitude in degrees SOUTH
+	# lambda : Longitude in degrees WEST
+	# Tf     : Background forcing temperature ("an anomalous temperature relative to the present conditions)
+	# ACCdot : Accumulation rate in units of [m/a] ice equivalent
+	# ABLdot : Surface ablation rate in [m/a] ice equivalent
+
+	#Double check lat and long exist:
+	if npy.any(npy.isnan(md.mesh.lat)): 
+		raise IOError('PattynSMB error message: md.mesh.lat field required')
+
+	# Calculate mean annual surface temperature, Eqn (11)
+	# Here, -0.012 is the atmospheric Lapse rate from sea level in deg/m.
+	# It is multiplied by surface elevation from sea level
+	Tma = -15.15 - 0.012*md.geometry.surface
+	
+
+	# Calculate summer temperature, Eqn (12)
+	# No melting at PIG in mean conditions - need about 6 degress Tf to start having a negative yearly SMB
+	Tms = 16.81 - 0.00692*md.geometry.surface - 0.27937*npy.abs(md.mesh.lat) + Tf
+	Tms= Tms[0]
+
+	# Calculate Accumulation perturbation with Tf forcing, Eqn (9)
+	ACCdot = 2.5*2**((Tma+Tf)/10.) - 2.5*2**(Tma/10.)
+
+	# Calculate Ablation, Eqn (10) (use for both Antarctica & Greenland), max melt is 10m/a
+	ABLdot=0.*npy.ones(md.mesh.numberofvertices)
+	pos=npy.nonzero(Tms>=0)
+	ABLdot[pos]=npy.minimum(1.4*Tms[pos],10)
+
+	smb=ACCdot-ABLdot
+	return smb[0]
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetIceSheetBC.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetIceSheetBC.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetIceSheetBC.m	(revision 21239)
@@ -0,0 +1,55 @@
+function md=SetIceSheetBC(md)
+%SETICESHEETBC - Create the boundary conditions for stressbalance and thermal models for an IceSheet with no Ice Front
+%
+%   Usage:
+%      md=SetIceSheetBC(md)
+%
+%   See also: SETICESHELFBC, SETMARINEICESHEETBC
+
+%node on Dirichlet
+pos=find(md.mesh.vertexonboundary);
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvy(pos)=0;
+md.stressbalance.spcvz(pos)=0;
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+
+%Dirichlet Values
+if (length(md.inversion.vx_obs)==md.mesh.numberofvertices & length(md.inversion.vy_obs)==md.mesh.numberofvertices)
+	disp('      boundary conditions for stressbalance model: spc set as observed velocities');
+	md.stressbalance.spcvx(pos)=md.inversion.vx_obs(pos);
+	md.stressbalance.spcvy(pos)=md.inversion.vy_obs(pos);
+else
+	disp('      boundary conditions for stressbalance model: spc set as zero');
+end
+
+%No ice front: do nothing
+
+%Initialize surface and basal forcings
+md.smb = initialize(md.smb,md);
+md.basalforcings   = initialize(md.basalforcings,md);
+
+%Deal with other boundary conditions
+if isnan(md.balancethickness.thickening_rate),
+	md.balancethickness.thickening_rate=zeros(md.mesh.numberofvertices,1);
+	disp('      no balancethickness.thickening_rate specified: values set as zero');
+end
+md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.balancethickness.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+
+if (length(md.initialization.temperature)==md.mesh.numberofvertices),
+	md.thermal.spctemperature=NaN*ones(md.mesh.numberofvertices,1);
+	if isprop(md.mesh,'vertexonsurface')
+		pos=find(md.mesh.vertexonsurface);
+		md.thermal.spctemperature(pos)=md.initialization.temperature(pos); %impose observed temperature on surface
+	end
+	if (length(md.basalforcings.geothermalflux)~=md.mesh.numberofvertices),
+		md.basalforcings.geothermalflux=50.*10^-3*ones(md.mesh.numberofvertices,1); %50 mW/m^2
+	end
+else
+	disp('      no thermal boundary conditions created: no observed temperature found');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetIceSheetBC.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetIceSheetBC.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetIceSheetBC.py	(revision 21239)
@@ -0,0 +1,59 @@
+import os
+import numpy
+from ContourToMesh import ContourToMesh
+
+def SetIceSheetBC(md):
+	"""
+	SETICESHEETBC - Create the boundary conditions for stressbalance and thermal models for an IceSheet with no Ice Front
+
+	   Usage:
+	      md=SetIceSheetBC(md)
+
+	   See also: SETICESHELFBC, SETMARINEICESHEETBC
+	"""
+
+	#node on Dirichlet
+	pos=numpy.nonzero(md.mesh.vertexonboundary)
+	md.stressbalance.spcvx=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvy=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvz=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvx[pos]=0
+	md.stressbalance.spcvy[pos]=0
+	md.stressbalance.spcvz[pos]=0
+	md.stressbalance.referential=float('nan')*numpy.ones((md.mesh.numberofvertices,6))
+	md.stressbalance.loadingforce=0*numpy.ones((md.mesh.numberofvertices,3))
+
+	#Dirichlet Values
+	if isinstance(md.inversion.vx_obs,numpy.ndarray) and numpy.size(md.inversion.vx_obs,axis=0)==md.mesh.numberofvertices and isinstance(md.inversion.vy_obs,numpy.ndarray) and numpy.size(md.inversion.vy_obs,axis=0)==md.mesh.numberofvertices:
+		print "      boundary conditions for stressbalance model: spc set as observed velocities"
+		md.stressbalance.spcvx[pos]=md.inversion.vx_obs[pos]
+		md.stressbalance.spcvy[pos]=md.inversion.vy_obs[pos]
+	else:
+		print "      boundary conditions for stressbalance model: spc set as zero"
+
+	#No ice front -> do nothing
+
+	#Create zeros basalforcings and smb
+	md.smb.initialize(md)
+	md.basalforcings.initialize(md)
+
+	#Deal with other boundary conditions
+	if numpy.all(numpy.isnan(md.balancethickness.thickening_rate)):
+		md.balancethickness.thickening_rate=numpy.zeros((md.mesh.numberofvertices,1))
+		print "      no balancethickness.thickening_rate specified: values set as zero"
+	md.masstransport.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+	md.balancethickness.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+	md.damage.spcdamage=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+
+	if isinstance(md.initialization.temperature,numpy.ndarray) and numpy.size(md.initialization.temperature,axis=0)==md.mesh.numberofvertices:
+		md.thermal.spctemperature=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+		if hasattr(md.mesh,'vertexonsurface'):
+			pos=numpy.nonzero(md.mesh.vertexonsurface)[0]
+			md.thermal.spctemperature[pos]=md.initialization.temperature[pos]    #impose observed temperature on surface
+		if not isinstance(md.basalforcings.geothermalflux,numpy.ndarray) or not numpy.size(md.basalforcings.geothermalflux)==md.mesh.numberofvertices:
+			md.basalforcings.geothermalflux=50.*10**-3*numpy.ones((md.mesh.numberofvertices,1))    #50 mW/m^2
+	else:
+		print "      no thermal boundary conditions created: no observed temperature found"
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetIceShelfBC.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetIceShelfBC.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetIceShelfBC.js	(revision 21239)
@@ -0,0 +1,107 @@
+function SetIceShelfBC(md) { 
+//SETICESHELFBC - Create the boundary conditions for stressbalance and thermal models for a  Ice Shelf with Ice Front
+//
+//   Neumann BC are used on the ice front (an ANRGUS contour around the ice front
+//   must be given in input)
+//   Dirichlet BC are used elsewhere for stressbalance
+//
+//   Usage:
+//      md=SetIceShelfBC(md,varargin)
+//
+//   Example:
+//      SetIceShelfBC(md);
+//      SetIceShelfBC(md,'Front.exp');
+//
+//   See also: SETICESHEETBC, SETMARINEICESHEETBC
+
+	//node on Dirichlet (boundary and ~icefront)
+	if (arguments.length==2){
+		icefront=arguments[1];
+		nodeinsideicefront=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,icefront,'node',2);
+		nodeonicefront=ArrayAnd(md.mesh.vertexonboundary,nodeinsideicefront);
+	}
+	else if(arguments.length==1){
+		nodeonicefront=NewArrayFill(md.mesh.numberofvertices,0);
+	}
+	else{
+		throw Error('SetIceShelfBC usage error');
+	}
+
+	md.stressbalance.spcvx=NewArrayFill(md.mesh.numberofvertices,NaN); 
+	md.stressbalance.spcvy=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.stressbalance.spcvz=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.stressbalance.referential=Create2DArray(md.mesh.numberofvertices,6);
+	for(var i=0;i<md.mesh.numberofvertices;i++)for(var j=0;j<6;j++)md.stressbalance.referential[i][j]=NaN;
+	md.stressbalance.loadingforce=Create2DArray(md.mesh.numberofvertices,3);
+	for(var i=0;i<md.mesh.numberofvertices;i++)for(var j=0;j<3;j++)md.stressbalance.loadingforce[i][j]=0;
+
+	//Ice front position: 
+	pos=ArrayFind(nodeonicefront,1);
+	for(var i=0;i<pos.length;i++)md.mask.ice_levelset[pos[i]]=0;
+
+	//First find segments that are not completely on the front
+	if (md.mesh.elementtype() === 'Penta'){
+		numbernodesfront=4;
+	}
+	else if (md.mesh.elementtype() === 'Tria'){
+		numbernodesfront=2;
+	}
+	else{
+		throw Error('mesh type not supported yet');
+	}
+	var obs=false;
+	if((md.inversion.vx_obs.length == md.mesh.numberofvertices) & (md.inversion.vy_obs.length==md.mesh.numberofvertices))obs=true;
+
+	if(obs==true){
+		console.log('      boundary conditions for stressbalance model: setting spc as observed velocities');
+	}
+	else{
+		console.log('      boundary conditions for stressbalance model: setting spc as zero');
+	}
+	for(var i=0;i<md.mesh.segments.length;i++){
+		var sum=0;
+		for (var j=0;j<numbernodesfront;j++) sum+=md.mask.ice_levelset[md.mesh.segments[i][j]-1];
+		if(sum!=0){
+			for (var j=0;j<numbernodesfront;j++){
+				if(obs==false){
+					md.stressbalance.spcvx[md.mesh.segments[i][j]-1]=0;
+					md.stressbalance.spcvy[md.mesh.segments[i][j]-1]=0;
+				}
+				else{
+					md.stressbalance.spcvx[md.mesh.segments[i][j]-1]=md.inversion.vx_obs[md.mesh.segments[i][j]-1];
+					md.stressbalance.spcvy[md.mesh.segments[i][j]-1]=md.inversion.vy_obs[md.mesh.segments[i][j]-1];
+				}
+				md.stressbalance.spcvz[md.mesh.segments[i][j]-1]=0;
+
+			}
+		}
+	}
+
+	//Initialize surface and basal forcings
+	md.smb.initialize(md);
+	md.basalforcings.initialize(md);
+
+	//Deal with other boundary conditions
+	if (isNaN(md.balancethickness.thickening_rate)){
+		md.balancethickness.thickening_rate=NewArrayFill(md.mesh.numberofvertices,0);
+		console.log('      no balancethickness.thickening_rate specified: values set as zero');
+	}
+		
+	md.masstransport.spcthickness=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.balancethickness.spcthickness=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.damage.spcdamage=NewArrayFill(md.mesh.numberofvertices,NaN);
+
+	if (md.initialization.temperature.length==md.mesh.numberofvertices){
+		md.thermal.spctemperature=NewArrayFill(md.mesh.numberofvertices,NaN);
+		if ('vertexonsurface' in md.mesh){
+			pos=ArrayFind(md.mesh.vertexonsurface,1);
+			for(var i=0;i<pos.length;i++)md.thermal.spctemperature[i]=md.initialization.temperature[i]; //impose observed temperature on surface
+		}
+		if (md.basalforcings.geothermalflux.length != md.mesh.numberofvertices){
+			md.basalforcings.geothermalflux=NewArrayFill(md.mesh.numberofvertices,0);
+		}
+	}
+	else{
+		console.log('      no thermal boundary conditions created: no observed temperature found');
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetIceShelfBC.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetIceShelfBC.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetIceShelfBC.m	(revision 21239)
@@ -0,0 +1,88 @@
+function md=SetIceShelfBC(md,varargin)
+%SETICESHELFBC - Create the boundary conditions for stressbalance and thermal models for a  Ice Shelf with Ice Front
+%
+%   Neumann BC are used on the ice front (an ANRGUS contour around the ice front
+%   must be given in input)
+%   Dirichlet BC are used elsewhere for stressbalance
+%
+%   Usage:
+%      md=SetIceShelfBC(md,varargin)
+%
+%   Example:
+%      md=SetIceShelfBC(md);
+%      md=SetIceShelfBC(md,'Front.exp');
+%
+%   See also: SETICESHEETBC, SETMARINEICESHEETBC
+
+%node on Dirichlet (boundary and ~icefront)
+if nargin==2,
+	icefrontfile=varargin{1};
+	if ~exist(icefrontfile), error(['SetIceShelfBC error message: ice front file ' icefrontfile ' not found']); end
+	nodeinsideicefront=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,icefrontfile,'node',2);
+	nodeonicefront=double(md.mesh.vertexonboundary & nodeinsideicefront);
+elseif nargin==1,
+	nodeonicefront=zeros(md.mesh.numberofvertices,1);
+else
+	help SetIceShelfBC
+	error('bad usage');
+end
+pos=find(md.mesh.vertexonboundary & ~nodeonicefront);
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+
+%Ice front position: 
+md.mask.ice_levelset(find(nodeonicefront))=0;
+
+%First find segments that are not completely on the front
+if strcmp(elementtype(md.mesh),'Penta'),
+	numbernodesfront=4;
+elseif strcmp(elementtype(md.mesh),'Tria'),
+	numbernodesfront=2;
+else
+	error('mesh type not supported yet');
+end
+segmentsfront=md.mask.ice_levelset(md.mesh.segments(:,1:numbernodesfront))==0;
+segments=find(sum(segmentsfront,2)~=numbernodesfront);
+%Find all nodes for these segments and spc them
+pos=md.mesh.segments(segments,1:numbernodesfront);
+md.stressbalance.spcvx(pos(:))=0;
+md.stressbalance.spcvy(pos(:))=0;
+md.stressbalance.spcvz(pos(:))=0;
+
+%Dirichlet Values
+if (length(md.inversion.vx_obs)==md.mesh.numberofvertices & length(md.inversion.vy_obs)==md.mesh.numberofvertices)
+	disp('      boundary conditions for stressbalance model: spc set as observed velocities');
+	md.stressbalance.spcvx(pos)=md.inversion.vx_obs(pos);
+	md.stressbalance.spcvy(pos)=md.inversion.vy_obs(pos);
+else
+	disp('      boundary conditions for stressbalance model: spc set as zero');
+end
+
+%Initialize surface and basal forcings
+md.smb = initialize(md.smb,md);
+md.basalforcings   = initialize(md.basalforcings,md);
+
+%Deal with other boundary conditions
+if isnan(md.balancethickness.thickening_rate),
+	md.balancethickness.thickening_rate=zeros(md.mesh.numberofvertices,1);
+	disp('      no balancethickness.thickening_rate specified: values set as zero');
+end
+md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.balancethickness.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+
+if (length(md.initialization.temperature)==md.mesh.numberofvertices),
+	md.thermal.spctemperature=NaN*ones(md.mesh.numberofvertices,1);
+	if isprop(md.mesh,'vertexonsurface'),
+		pos=find(md.mesh.vertexonsurface);
+		md.thermal.spctemperature(pos)=md.initialization.temperature(pos); %impose observed temperature on surface
+	end
+	if (length(md.basalforcings.geothermalflux)~=md.mesh.numberofvertices),
+		md.basalforcings.geothermalflux=zeros(md.mesh.numberofvertices,1);
+	end
+else
+	disp('      no thermal boundary conditions created: no observed temperature found');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetIceShelfBC.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetIceShelfBC.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetIceShelfBC.py	(revision 21239)
@@ -0,0 +1,101 @@
+import os
+import numpy
+from ContourToMesh import ContourToMesh
+import MatlabFuncs as m
+
+def SetIceShelfBC(md,icefrontfile=''):
+	"""
+	SETICESHELFBC - Create the boundary conditions for stressbalance and thermal models for a  Ice Shelf with Ice Front
+
+	   Neumann BC are used on the ice front (an ARGUS contour around the ice front
+	   must be given in input)
+	   Dirichlet BC are used elsewhere for stressbalance
+
+	   Usage:
+	      md=SetIceShelfBC(md,varargin)
+
+	   Example:
+	      md=SetIceShelfBC(md);
+	      md=SetIceShelfBC(md,'Front.exp');
+
+	   See also: SETICESHEETBC, SETMARINEICESHEETBC
+	"""
+
+	#node on Dirichlet (boundary and ~icefront)
+	if icefrontfile:
+		if not os.path.exists(icefrontfile):
+			raise IOError("SetIceShelfBC error message: ice front file '%s' not found." % icefrontfile)
+		nodeinsideicefront=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,icefrontfile,'node',2)
+		nodeonicefront=numpy.logical_and(md.mesh.vertexonboundary,nodeinsideicefront.reshape(-1))
+	else:
+		nodeonicefront=numpy.zeros((md.mesh.numberofvertices),bool)
+
+#	pos=find(md.mesh.vertexonboundary & ~nodeonicefront);
+	pos=numpy.nonzero(numpy.logical_and(md.mesh.vertexonboundary,numpy.logical_not(nodeonicefront)))[0]
+	md.stressbalance.spcvx=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvy=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvz=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.referential=float('nan')*numpy.ones((md.mesh.numberofvertices,6))
+	md.stressbalance.loadingforce=0*numpy.ones((md.mesh.numberofvertices,3))
+
+	#Icefront position
+	pos=numpy.nonzero(nodeonicefront)[0]
+	md.mask.ice_levelset[pos]=0
+
+	#First find segments that are not completely on the front
+	if m.strcmp(md.mesh.elementtype(),'Penta'):
+		numbernodesfront=4;
+	elif m.strcmp(md.mesh.elementtype(),'Tria'):
+		numbernodesfront=2;
+	else:
+		raise	error('mesh type not supported yet')
+	if any(md.mask.ice_levelset<=0):
+		values=md.mask.ice_levelset[md.mesh.segments[:,0:-1]-1]
+		segmentsfront=1-values
+		numpy.sum(segmentsfront,axis=1)!=numbernodesfront
+		segments=numpy.nonzero(numpy.sum(segmentsfront,axis=1)!=numbernodesfront)[0]
+		#Find all nodes for these segments and spc them
+		pos=md.mesh.segments[segments,0:-1]-1
+	else:
+		pos=numpy.nonzero(md.mesh.vertexonboundary)[0]
+	md.stressbalance.spcvx[pos]=0
+	md.stressbalance.spcvy[pos]=0
+	md.stressbalance.spcvz[pos]=0
+																													   
+	#Dirichlet Values
+	if isinstance(md.inversion.vx_obs,numpy.ndarray) and numpy.size(md.inversion.vx_obs,axis=0)==md.mesh.numberofvertices and isinstance(md.inversion.vy_obs,numpy.ndarray) and numpy.size(md.inversion.vy_obs,axis=0)==md.mesh.numberofvertices:
+		#reshape to rank-2 if necessary to match spc arrays
+		if numpy.ndim(md.inversion.vx_obs)==1:
+			md.inversion.vx_obs=md.inversion.vx_obs.reshape(-1,1)
+		if numpy.ndim(md.inversion.vy_obs)==1:
+			md.inversion.vy_obs=md.inversion.vy_obs.reshape(-1,1)
+		print "      boundary conditions for stressbalance model: spc set as observed velocities"
+		md.stressbalance.spcvx[pos]=md.inversion.vx_obs[pos]
+		md.stressbalance.spcvy[pos]=md.inversion.vy_obs[pos]
+	else:
+		print "      boundary conditions for stressbalance model: spc set as zero"
+
+	#Create zeros basalforcings and smb
+	md.smb.initialize(md)
+	md.basalforcings.initialize(md)
+
+	#Deal with other boundary conditions
+	if numpy.all(numpy.isnan(md.balancethickness.thickening_rate)):
+		md.balancethickness.thickening_rate=numpy.zeros((md.mesh.numberofvertices,1))
+		print "      no balancethickness.thickening_rate specified: values set as zero"
+	md.masstransport.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+	md.balancethickness.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+	md.damage.spcdamage=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+
+	if isinstance(md.initialization.temperature,numpy.ndarray) and numpy.size(md.initialization.temperature,axis=0)==md.mesh.numberofvertices:
+		md.thermal.spctemperature=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+		if hasattr(md.mesh,'vertexonsurface'):
+			pos=numpy.nonzero(md.mesh.vertexonsurface)[0]
+			md.thermal.spctemperature[pos]=md.initialization.temperature[pos]    #impose observed temperature on surface
+		if not isinstance(md.basalforcings.geothermalflux,numpy.ndarray) or not numpy.size(md.basalforcings.geothermalflux,axis=0)==md.mesh.numberofvertices:
+			md.basalforcings.geothermalflux=numpy.zeros((md.mesh.numberofvertices,1))
+	else:
+		print "      no thermal boundary conditions created: no observed temperature found"
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetMarineIceSheetBC.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetMarineIceSheetBC.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetMarineIceSheetBC.m	(revision 21239)
@@ -0,0 +1,108 @@
+function md=SetMarineIceSheetBC(md,varargin)
+%SETICEMARINESHEETBC - Create the boundary conditions for stressbalance and thermal models for a  Marine Ice Sheet with Ice Front
+%
+%   Neumann BC are used on the ice front (an ARGUS contour around the ice front
+%   can be given in input, or it will be deduced as onfloatingice & onboundary)
+%   Dirichlet BC are used elsewhere for stressbalance
+%
+%   Usage:
+%      md=SetMarineIceSheetBC(md,icefrontfile)
+%      md=SetMarineIceSheetBC(md)
+%
+%   Example:
+%      md=SetMarineIceSheetBC(md,'Front.exp')
+%      md=SetMarineIceSheetBC(md)
+%
+%   See also: SETICESHELFBC, SETMARINEICESHEETBC
+
+%node on Dirichlet (boundary and ~icefront)
+if nargin==2,
+	%User provided Front.exp, use it
+	icefrontfile=varargin{1};
+	if ~exist(icefrontfile)
+		error(['SetMarineIceSheetBC error message: ice front file ' icefrontfile ' not found']);
+	end
+	[path,name,ext]=fileparts(icefrontfile);
+	if strcmp(ext,'.shp'),
+		contours=shpread(icefrontfile);
+	elseif strcmp(ext,'.exp'),
+		contours=expread(icefrontfile);
+	end
+	incontour=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,contours,'node',2);
+	vertexonicefront=double(md.mesh.vertexonboundary & incontour);
+else
+	%Guess where the ice front is
+	pos=find(sum(md.mask.groundedice_levelset(md.mesh.elements)<0.,2) >0.);
+	vertexonfloatingice=zeros(md.mesh.numberofvertices,1);
+	vertexonfloatingice(md.mesh.elements(pos,:))=1.;
+	vertexonicefront=double(md.mesh.vertexonboundary & vertexonfloatingice);
+end
+pos=find(md.mesh.vertexonboundary & ~vertexonicefront);
+if isempty(pos),
+	disp('SetMarineIceSheetBC warning: ice front all around the glacier, no dirichlet applied')
+end
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+
+%Position of ice front
+md.mask.ice_levelset(find(vertexonicefront))=0;
+
+%First find segments that are not completely on the front
+if strcmp(elementtype(md.mesh),'Penta'),
+	numbernodesfront=4;
+elseif strcmp(elementtype(md.mesh),'Tria'),
+	numbernodesfront=2;
+else
+	error('mesh type not supported yet');
+end
+segmentsfront=md.mask.ice_levelset(md.mesh.segments(:,1:numbernodesfront))==0;
+segments=find(sum(segmentsfront,2)~=numbernodesfront);
+%Find all nodes for these segments and spc them
+pos=md.mesh.segments(segments,1:numbernodesfront);
+md.stressbalance.spcvx(pos(:))=0;
+md.stressbalance.spcvy(pos(:))=0;
+md.stressbalance.spcvz(pos(:))=0; % FIXME probably shouldn't spc vertical velocity here
+
+%Dirichlet Values
+if (length(md.inversion.vx_obs)==md.mesh.numberofvertices & length(md.inversion.vy_obs)==md.mesh.numberofvertices)
+	disp('      boundary conditions for stressbalance model: spc set as observed velocities');
+	md.stressbalance.spcvx(pos)=md.inversion.vx_obs(pos);
+	md.stressbalance.spcvy(pos)=md.inversion.vy_obs(pos);
+else
+	disp('      boundary conditions for stressbalance model: spc set as zero');
+end
+
+md.hydrology.spcwatercolumn=zeros(md.mesh.numberofvertices,2);
+pos=find(md.mesh.vertexonboundary);
+md.hydrology.spcwatercolumn(pos,1)=1;
+
+%Initialize surface and basal forcings
+md.smb = initialize(md.smb,md);
+md.basalforcings   = initialize(md.basalforcings,md);
+
+%Deal with other boundary conditions
+if isnan(md.balancethickness.thickening_rate),
+	md.balancethickness.thickening_rate=zeros(md.mesh.numberofvertices,1);
+	disp('      no balancethickness.thickening_rate specified: values set as zero');
+end
+
+md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.balancethickness.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+
+if (length(md.initialization.temperature)==md.mesh.numberofvertices),
+	md.thermal.spctemperature=NaN*ones(md.mesh.numberofvertices,1);
+	if isprop(md.mesh,'vertexonsurface'),
+		pos=find(md.mesh.vertexonsurface);
+		md.thermal.spctemperature(pos)=md.initialization.temperature(pos); %impose observed temperature on surface
+	end
+	if (length(md.basalforcings.geothermalflux)~=md.mesh.numberofvertices),
+		md.basalforcings.geothermalflux=zeros(md.mesh.numberofvertices,1);
+		md.basalforcings.geothermalflux(find(md.mask.groundedice_levelset>0.))=50.*10.^-3; %50mW/m2
+	end
+else
+	disp('      no thermal boundary conditions created: no observed temperature found');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetMarineIceSheetBC.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetMarineIceSheetBC.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/SetMarineIceSheetBC.py	(revision 21239)
@@ -0,0 +1,111 @@
+import os
+import numpy
+from ContourToMesh import ContourToMesh
+import MatlabFuncs as m
+
+def SetMarineIceSheetBC(md,icefrontfile=''):
+	"""
+	SETICEMARINESHEETBC - Create the boundary conditions for stressbalance and thermal models for a  Marine Ice Sheet with Ice Front
+
+	   Neumann BC are used on the ice front (an ARGUS contour around the ice front
+	   can be given in input, or it will be deduced as onfloatingice & onboundary)
+	   Dirichlet BC are used elsewhere for stressbalance
+
+	   Usage:
+	      md=SetMarineIceSheetBC(md,icefrontfile)
+	      md=SetMarineIceSheetBC(md)
+
+	   Example:
+	      md=SetMarineIceSheetBC(md,'Front.exp')
+	      md=SetMarineIceSheetBC(md)
+
+	   See also: SETICESHELFBC, SETMARINEICESHEETBC
+	"""
+
+	#node on Dirichlet (boundary and ~icefront)
+	if icefrontfile:
+		#User provided Front.exp, use it
+		if not os.path.exists(icefrontfile):
+			raise IOError("SetMarineIceSheetBC error message: ice front file '%s' not found." % icefrontfile)
+		incontour=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,icefrontfile,'node',2)
+		vertexonicefront=numpy.logical_and(md.mesh.vertexonboundary,incontour.reshape(-1))
+	else:
+		#Guess where the ice front is
+		vertexonfloatingice=numpy.zeros((md.mesh.numberofvertices,1))
+		pos=numpy.nonzero(numpy.sum(md.mask.groundedice_levelset[md.mesh.elements-1]<0.,axis=1) >0.)[0]
+		vertexonfloatingice[md.mesh.elements[pos].astype(int)-1]=1.
+		vertexonicefront=numpy.logical_and(numpy.reshape(md.mesh.vertexonboundary,(-1,1)),vertexonfloatingice>0.)
+
+#	pos=find(md.mesh.vertexonboundary & ~vertexonicefront);
+	pos=numpy.nonzero(numpy.logical_and(md.mesh.vertexonboundary,numpy.logical_not(vertexonicefront)))[0]
+	if not numpy.size(pos):
+		print "SetMarineIceSheetBC warning: ice front all around the glacier, no dirichlet found. Dirichlet must be added manually."
+
+	md.stressbalance.spcvx=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvy=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvz=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.referential=float('nan')*numpy.ones((md.mesh.numberofvertices,6))
+	md.stressbalance.loadingforce=0*numpy.ones((md.mesh.numberofvertices,3))
+
+	#Position of ice front
+	pos=numpy.nonzero(vertexonicefront)[0]
+	md.mask.ice_levelset[pos]=0
+
+	#First find segments that are not completely on the front
+	if m.strcmp(md.mesh.elementtype(),'Penta'):
+		numbernodesfront=4
+	elif m.strcmp(md.mesh.elementtype(),'Tria'):
+		numbernodesfront=2
+	else:
+			raise StandardError("Mesh type not supported")
+	if any(md.mask.ice_levelset<=0):
+		values=md.mask.ice_levelset[md.mesh.segments[:,0:-1]-1]
+		segmentsfront=1-values
+		numpy.sum(segmentsfront,axis=1)!=numbernodesfront
+		segments=numpy.nonzero(numpy.sum(segmentsfront,axis=1)!=numbernodesfront)[0]
+		#Find all nodes for these segments and spc them
+		pos=md.mesh.segments[segments,0:-1]-1
+	else:
+		pos=numpy.nonzero(md.mesh.vertexonboundary)[0]
+	md.stressbalance.spcvx[pos]=0
+	md.stressbalance.spcvy[pos]=0
+	md.stressbalance.spcvz[pos]=0
+
+	#Dirichlet Values
+	if isinstance(md.inversion.vx_obs,numpy.ndarray) and numpy.size(md.inversion.vx_obs,axis=0)==md.mesh.numberofvertices and isinstance(md.inversion.vy_obs,numpy.ndarray) and numpy.size(md.inversion.vy_obs,axis=0)==md.mesh.numberofvertices:
+		print "      boundary conditions for stressbalance model: spc set as observed velocities"
+		md.stressbalance.spcvx[pos]=md.inversion.vx_obs[pos]
+		md.stressbalance.spcvy[pos]=md.inversion.vy_obs[pos]
+	else:
+		print "      boundary conditions for stressbalance model: spc set as zero"
+
+	md.hydrology.spcwatercolumn=numpy.zeros((md.mesh.numberofvertices,2))
+	pos=numpy.nonzero(md.mesh.vertexonboundary)[0]
+	md.hydrology.spcwatercolumn[pos,0]=1
+
+	#Create zeros basalforcings and smb
+	md.smb.initialize(md)
+	md.basalforcings.initialize(md)
+
+	#Deal with other boundary conditions
+	if numpy.all(numpy.isnan(md.balancethickness.thickening_rate)):
+		md.balancethickness.thickening_rate=numpy.zeros((md.mesh.numberofvertices,1))
+		print "      no balancethickness.thickening_rate specified: values set as zero"
+
+	md.masstransport.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+	md.balancethickness.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+	md.damage.spcdamage=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+
+	if isinstance(md.initialization.temperature,numpy.ndarray) and numpy.size(md.initialization.temperature,axis=0)==md.mesh.numberofvertices:
+		md.thermal.spctemperature=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+		if hasattr(md.mesh,'vertexonsurface'):
+			pos=numpy.nonzero(md.mesh.vertexonsurface)[0]
+			md.thermal.spctemperature[pos]=md.initialization.temperature[pos]    #impose observed temperature on surface
+		if not isinstance(md.basalforcings.geothermalflux,numpy.ndarray) or not numpy.size(md.basalforcings.geothermalflux,axis=0)==md.mesh.numberofvertices:
+			md.basalforcings.geothermalflux=numpy.zeros((md.mesh.numberofvertices,1))
+			md.basalforcings.geothermalflux[numpy.nonzero(md.mask.groundedice_levelset>0.)]=50.*10.**-3    #50mW/m2
+	else:
+		print "      no thermal boundary conditions created: no observed temperature found"
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/love_numbers.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/love_numbers.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/love_numbers.m	(revision 21239)
@@ -0,0 +1,10032 @@
+function series=love_numbers(type)
+%LOVE_NUMBERS: provide love numbers (type 'h','k','l','gamma' and 'lambda'
+%			   retrieved from: http://www.srosat.com/iag-jsg/loveNb.php
+%    Usage:   series=love_numbers(type) 
+%             where type is one of 'h','k','l','gamma' and 'lambda'. 
+%
+%    Example:  
+%          love_k=love_numbers('k');
+% 
+
+	%some checks:
+	if nargin~=1, error('love_numbers error message: wrong usage'); end
+
+	if ~( strcmpi(type,'h') | strcmpi(type,'k') | strcmpi(type,'l') | strcmpi(type,'gamma') | strcmpi(type,'lambda') ), 
+		error('type should be one of ''h'',''k'',''l'',''gamma'' and ''lambda''');
+	end
+
+	love_numbers=[...
+     0           0          0          0          0          0          0 
+	-1.28740059	-1.00000000	-0.89858519 1.28740059 0.42519882 0.89858519 0.00000000
+	-1.00025365 -0.30922675 0.02060926 1.69102690 0.46358648 0.67016399 0.61829668;
+	-1.06243501 -0.19927948 0.06801636 1.86315553 0.55741597 0.73270416 0.56270589;
+	-1.06779588 -0.13649834 0.05667027 1.93129754 0.63672498 0.80683140 0.51132745;
+	-1.10365923 -0.10736896 0.04401221 1.99629027 0.68737906 0.84861883 0.48642259;
+	-1.16440348 -0.09295485 0.03638747 2.07144863 0.72031283 0.87065768 0.47898268;
+	-1.23634156 -0.08469861 0.03202759 2.15164295 0.74355796 0.88327380 0.47955214;
+	-1.31140380 -0.07921412 0.02937593 2.23218968 0.76126493 0.89140995 0.48323250;
+	-1.38582399 -0.07513541 0.02762338 2.31068858 0.77552290 0.89724121 0.48795424;
+	-1.45807465 -0.07187005 0.02638627 2.38620460 0.78744212 0.90174369 0.49291061;
+	-1.52763314 -0.06913154 0.02547640 2.45850160 0.79766475 0.90539206 0.49779422;
+	-1.59437866 -0.06676258 0.02479080 2.52761607 0.80659635 0.90844662 0.50248477;
+	-1.65833071 -0.06466619 0.02426511 2.59366452 0.81451271 0.91106870 0.50693175;
+	-1.71954820 -0.06277732 0.02385464 2.65677088 0.82161167 0.91336804 0.51111243;
+	-1.77809640 -0.06105001 0.02352654 2.71704639 0.82804049 0.91542346 0.51501712;
+	-1.83403970 -0.05945081 0.02325609 2.77458889 0.83391153 0.91729309 0.51864363;
+	-1.88744242 -0.05795502 0.02302469 2.82948740 0.83931209 0.91902029 0.52199490;
+	-1.93837115 -0.05654418 0.02281843 2.88182697 0.84431095 0.92063739 0.52507761;
+	-1.98689666 -0.05520447 0.02262706 2.93169219 0.84896295 0.92216847 0.52790108;
+	-2.03309477 -0.05392545 0.02244322 2.97916932 0.85331225 0.92363132 0.53047654;
+	-2.07704643 -0.05269926 0.02226173 3.02434717 0.85739480 0.92503902 0.53281639;
+	-2.11883714 -0.05151988 0.02207909 3.06731726 0.86124014 0.92640103 0.53493369;
+	-2.15855611 -0.05038274 0.02189307 3.10817337 0.86487276 0.92772419 0.53684176;
+	-2.19629514 -0.04928430 0.02170238 3.14701084 0.86831322 0.92901331 0.53855386;
+	-2.23214747 -0.04822179 0.02150643 3.18392568 0.87157886 0.93027178 0.54008294;
+	-2.26620674 -0.04719301 0.02130509 3.21901373 0.87468453 0.93150190 0.54144148;
+	-2.29856595 -0.04619619 0.02109858 3.25236976 0.87764301 0.93270523 0.54264140;
+	-2.32931659 -0.04522983 0.02088735 3.28408675 0.88046543 0.93388282 0.54369397;
+	-2.35854794 -0.04429270 0.02067197 3.31425524 0.88316156 0.93503533 0.54460979;
+	-2.38634650 -0.04338368 0.02045310 3.34296281 0.88574004 0.93616321 0.54539877;
+	-2.41279547 -0.04250179 0.02023142 3.37029367 0.88820859 0.93726678 0.54607015;
+	-2.43797451 -0.04164613 0.02000761 3.39632839 0.89057416 0.93834626 0.54663248;
+	-2.46195951 -0.04081583 0.01978231 3.42114367 0.89284301 0.93940185 0.54709369;
+	-2.48482241 -0.04001011 0.01955614 3.44481230 0.89502085 0.94043375 0.54746112;
+	-2.50663126 -0.03922817 0.01932966 3.46740309 0.89711291 0.94144217 0.54774153;
+	-2.52745016 -0.03846928 0.01910337 3.48898088 0.89912397 0.94242735 0.54794114;
+	-2.54733938 -0.03773269 0.01887774 3.50960670 0.90105847 0.94338957 0.54806571;
+	-2.56635547 -0.03701769 0.01865317 3.52933779 0.90292050 0.94432915 0.54812051;
+	-2.58455138 -0.03632358 0.01843000 3.54822780 0.90471386 0.94524642 0.54811044;
+	-2.60197665 -0.03564968 0.01820854 3.56632697 0.90644209 0.94614178 0.54803997;
+	-2.61867756 -0.03499532 0.01798905 3.58368224 0.90810850 0.94701563 0.54791326;
+	-2.63469733 -0.03435985 0.01777176 3.60033748 0.90971616 0.94786840 0.54773413;
+	-2.65007629 -0.03374263 0.01755683 3.61633367 0.91126798 0.94870054 0.54750610;
+	-2.66485208 -0.03314303 0.01734443 3.63170905 0.91276665 0.94951253 0.54723245;
+	-2.67905981 -0.03256047 0.01713468 3.64649934 0.91421471 0.95030485 0.54691620;
+	-2.69273222 -0.03199435 0.01692767 3.66073787 0.91561457 0.95107798 0.54656015;
+	-2.70589990 -0.03144411 0.01672347 3.67445580 0.91696845 0.95183242 0.54616691;
+	-2.71859139 -0.03090919 0.01652215 3.68768220 0.91827849 0.95256866 0.54573889;
+	-2.73083334 -0.03038907 0.01632374 3.70044427 0.91954667 0.95328719 0.54527835;
+	-2.74265068 -0.02988323 0.01612826 3.71276745 0.92077487 0.95398851 0.54478739;
+	-2.75406669 -0.02939118 0.01593573 3.72467551 0.92196486 0.95467309 0.54426797;
+	-2.76510320 -0.02891245 0.01574615 3.73619076 0.92311833 0.95534141 0.54372191;
+	-2.77578063 -0.02844656 0.01555950 3.74733406 0.92423685 0.95599393 0.54315095;
+	-2.78611812 -0.02799309 0.01537578 3.75812503 0.92532192 0.95663113 0.54255669;
+	-2.79613364 -0.02755161 0.01519496 3.76858203 0.92637496 0.95725343 0.54194065;
+	-2.80584405 -0.02712170 0.01501701 3.77872235 0.92739730 0.95786128 0.54130424;
+	-2.81526521 -0.02670298 0.01484191 3.78856223 0.92839022 0.95845511 0.54064880;
+	-2.82441204 -0.02629506 0.01466961 3.79811697 0.92935491 0.95903532 0.53997561;
+	-2.83329857 -0.02589759 0.01450009 3.80740098 0.93029251 0.95960232 0.53928586;
+	-2.84193804 -0.02551021 0.01433329 3.81642782 0.93120412 0.96015649 0.53858067;
+	-2.85034293 -0.02513260 0.01416919 3.82521033 0.93209074 0.96069821 0.53786112;
+	-2.85852503 -0.02476443 0.01400773 3.83376061 0.93295337 0.96122784 0.53712821;
+	-2.86649548 -0.02440538 0.01384888 3.84209010 0.93379291 0.96174574 0.53638291;
+	-2.87426481 -0.02405518 0.01369258 3.85020963 0.93461026 0.96225224 0.53562612;
+	-2.88184299 -0.02371352 0.01353880 3.85812947 0.93540625 0.96274768 0.53485873;
+	-2.88923945 -0.02338014 0.01338749 3.86585931 0.93618168 0.96323236 0.53408154;
+	-2.89646316 -0.02305478 0.01323861 3.87340838 0.93693730 0.96370661 0.53329534;
+	-2.90352261 -0.02273718 0.01309211 3.88078542 0.93767383 0.96417071 0.53250089;
+	-2.91042585 -0.02242710 0.01294795 3.88799874 0.93839197 0.96462494 0.53169888;
+	-2.91718054 -0.02212431 0.01280609 3.89505623 0.93909236 0.96506960 0.53089002;
+	-2.92379397 -0.02182859 0.01266648 3.90196538 0.93977564 0.96550493 0.53007493;
+	-2.93027306 -0.02153971 0.01252908 3.90873334 0.94044240 0.96593120 0.52925424;
+	-2.93662439 -0.02125748 0.01239386 3.91536691 0.94109322 0.96634866 0.52842854;
+	-2.94285425 -0.02098169 0.01226077 3.92187256 0.94172863 0.96675754 0.52759839;
+	-2.94896860 -0.02071215 0.01212977 3.92825645 0.94234915 0.96715808 0.52676434;
+	-2.95497314 -0.02044868 0.01200082 3.93452446 0.94295529 0.96755050 0.52592690;
+	-2.96087331 -0.02019110 0.01187388 3.94068220 0.94354752 0.96793501 0.52508656;
+	-2.96667427 -0.01993924 0.01174893 3.94673503 0.94412630 0.96831183 0.52424380;
+	-2.97238097 -0.01969293 0.01162591 3.95268804 0.94469206 0.96868116 0.52339906;
+	-2.97799813 -0.01945201 0.01150481 3.95854612 0.94524521 0.96904318 0.52255277;
+	-2.98353025 -0.01921634 0.01138557 3.96431391 0.94578617 0.96939809 0.52170535;
+	-2.98898162 -0.01898576 0.01126817 3.96999586 0.94631531 0.96974607 0.52085719;
+	-2.99435636 -0.01876014 0.01115257 3.97559622 0.94683300 0.97008729 0.52000868;
+	-2.99965838 -0.01853932 0.01103875 3.98111905 0.94733959 0.97042193 0.51916016;
+	-3.00489143 -0.01832319 0.01092666 3.98656824 0.94783543 0.97075015 0.51831198;
+	-3.01005909 -0.01811161 0.01081628 3.99194748 0.94832084 0.97107211 0.51746448;
+	-3.01516479 -0.01790446 0.01070757 3.99726033 0.94879613 0.97138796 0.51661796;
+	-3.02021180 -0.01770162 0.01060052 4.00251017 0.94926160 0.97169786 0.51577273;
+	-3.02520323 -0.01750298 0.01049508 4.00770025 0.94971755 0.97200194 0.51492908;
+	-3.03014209 -0.01730842 0.01039123 4.01283367 0.95016424 0.97230035 0.51408727;
+	-3.03503122 -0.01711783 0.01028894 4.01791339 0.95060195 0.97259323 0.51324758;
+	-3.03987336 -0.01693111 0.01018819 4.02294225 0.95103094 0.97288070 0.51241024;
+	-3.04467112 -0.01674816 0.01008894 4.02792295 0.95145145 0.97316290 0.51157550;
+	-3.04942699 -0.01656889 0.00999117 4.03285810 0.95186373 0.97343995 0.51074358;
+	-3.05414335 -0.01639319 0.00989485 4.03775017 0.95226799 0.97371196 0.50991471;
+	-3.05882250 -0.01622097 0.00979997 4.04260153 0.95266447 0.97397906 0.50908908;
+	-3.06346660 -0.01605215 0.00970649 4.04741445 0.95305338 0.97424136 0.50826689;
+	-3.06807773 -0.01588664 0.00961439 4.05219109 0.95343492 0.97449897 0.50744832;
+	-3.07265789 -0.01572436 0.00952364 4.05693353 0.95380929 0.97475200 0.50663356;
+	-3.07720897 -0.01556522 0.00943423 4.06164375 0.95417670 0.97500055 0.50582277;
+	-3.08173279 -0.01540916 0.00934613 4.06632364 0.95453731 0.97524472 0.50501611;
+	-3.08623109 -0.01525608 0.00925931 4.07097501 0.95489131 0.97548461 0.50421372;
+	-3.09070551 -0.01510592 0.00917376 4.07559959 0.95523888 0.97572032 0.50341576;
+	-3.09515765 -0.01495861 0.00908946 4.08019904 0.95558018 0.97595193 0.50262236;
+	-3.09958899 -0.01481408 0.00900637 4.08477492 0.95591537 0.97617955 0.50183364;
+	-3.10400100 -0.01467225 0.00892449 4.08932875 0.95624461 0.97640325 0.50104973;
+	-3.10839504 -0.01453308 0.00884379 4.09386196 0.95656806 0.97662313 0.50027073;
+	-3.11277241 -0.01439648 0.00876425 4.09837593 0.95688585 0.97683927 0.49949676;
+	-3.11713438 -0.01426240 0.00868586 4.10287198 0.95719812 0.97705174 0.49872791;
+	-3.12148213 -0.01413079 0.00860858 4.10735134 0.95750503 0.97726063 0.49796429;
+	-3.12581680 -0.01400157 0.00853241 4.11181522 0.95780669 0.97746601 0.49720597;
+	-3.13013947 -0.01387471 0.00845733 4.11626476 0.95810324 0.97766796 0.49645304;
+	-3.13445117 -0.01375013 0.00838331 4.12070104 0.95839480 0.97786656 0.49570558;
+	-3.13875289 -0.01362779 0.00831034 4.12512510 0.95868150 0.97806186 0.49496366;
+	-3.14304556 -0.01350764 0.00823841 4.12953792 0.95896344 0.97825395 0.49422734;
+	-3.14733008 -0.01338963 0.00816748 4.13394045 0.95924075 0.97844289 0.49349669;
+	-3.15160728 -0.01327370 0.00809756 4.13833358 0.95951352 0.97862874 0.49277177;
+	-3.15587797 -0.01315981 0.00802862 4.14271816 0.95978188 0.97881157 0.49205262;
+	-3.16014293 -0.01304792 0.00796064 4.14709501 0.96004592 0.97899144 0.49133930;
+	-3.16440288 -0.01293797 0.00789361 4.15146491 0.96030574 0.97916842 0.49063185;
+	-3.16865852 -0.01282993 0.00782751 4.15582858 0.96056144 0.97934256 0.48993030;
+	-3.17291049 -0.01272375 0.00776233 4.16018673 0.96081312 0.97951392 0.48923471;
+	-3.17715942 -0.01261940 0.00769805 4.16454003 0.96106086 0.97968255 0.48854509;
+	-3.18140591 -0.01251682 0.00763466 4.16888910 0.96130476 0.97984852 0.48786148;
+	-3.18565052 -0.01241598 0.00757215 4.17323454 0.96154490 0.98001187 0.48718390;
+	-3.18989378 -0.01231685 0.00751049 4.17757693 0.96178137 0.98017266 0.48651237;
+	-3.19413619 -0.01221938 0.00744968 4.18191681 0.96201424 0.98033094 0.48584692;
+	-3.19837823 -0.01212354 0.00738970 4.18625469 0.96224360 0.98048676 0.48518756;
+	-3.20262035 -0.01202930 0.00733053 4.19059105 0.96246952 0.98064017 0.48453431;
+	-3.20686298 -0.01193661 0.00727217 4.19492637 0.96269208 0.98079121 0.48388717;
+	-3.21110653 -0.01184546 0.00721461 4.19926107 0.96291135 0.98093994 0.48324615;
+	-3.21535137 -0.01175579 0.00715782 4.20359557 0.96312741 0.98108639 0.48261126;
+	-3.21959786 -0.01166759 0.00710179 4.20793027 0.96334031 0.98123062 0.48198250;
+	-3.22384634 -0.01158082 0.00704652 4.21226552 0.96355014 0.98137266 0.48135988;
+	-3.22809714 -0.01149545 0.00699199 4.21660169 0.96375694 0.98151256 0.48074338;
+	-3.23235055 -0.01141146 0.00693819 4.22093909 0.96396080 0.98165035 0.48013301;
+	-3.23660685 -0.01132880 0.00688511 4.22527805 0.96416176 0.98178609 0.47952876;
+	-3.24086631 -0.01124746 0.00683273 4.22961885 0.96435989 0.98191980 0.47893063;
+	-3.24512918 -0.01116741 0.00678105 4.23396177 0.96455525 0.98205153 0.47833860;
+	-3.24939569 -0.01108862 0.00673005 4.23830707 0.96474789 0.98218132 0.47775267;
+	-3.25366606 -0.01101107 0.00667973 4.24265499 0.96493787 0.98230920 0.47717282;
+	-3.25794050 -0.01093473 0.00663007 4.24700577 0.96512525 0.98243520 0.47659903;
+	-3.26221918 -0.01085957 0.00658106 4.25135961 0.96531007 0.98255937 0.47603130;
+	-3.26650230 -0.01078557 0.00653269 4.25571672 0.96549239 0.98268174 0.47546960;
+	-3.27079000 -0.01071272 0.00648495 4.26007729 0.96567225 0.98280233 0.47491391;
+	-3.27508246 -0.01064097 0.00643784 4.26444149 0.96584971 0.98292119 0.47436422;
+	-3.27937980 -0.01057032 0.00639134 4.26880948 0.96602482 0.98303834 0.47382051;
+	-3.28368216 -0.01050074 0.00634544 4.27318141 0.96619761 0.98315382 0.47328275;
+	-3.28798965 -0.01043222 0.00630013 4.27755743 0.96636814 0.98326765 0.47275091;
+	-3.29230239 -0.01036472 0.00625541 4.28193767 0.96653645 0.98337988 0.47222499;
+	-3.29662047 -0.01029823 0.00621126 4.28632224 0.96670258 0.98349051 0.47170494;
+	-3.30094399 -0.01023273 0.00616768 4.29071126 0.96686657 0.98359960 0.47119074;
+	-3.30527303 -0.01016819 0.00612465 4.29510483 0.96702847 0.98370715 0.47068237;
+	-3.30960766 -0.01010461 0.00608218 4.29950304 0.96718831 0.98381321 0.47017979;
+	-3.31394795 -0.01004197 0.00604024 4.30390598 0.96734614 0.98391779 0.46968299;
+	-3.31829395 -0.00998024 0.00599883 4.30831372 0.96750198 0.98402093 0.46919192;
+	-3.32264573 -0.00991940 0.00595795 4.31272633 0.96765588 0.98412265 0.46870656;
+	-3.32700331 -0.00985945 0.00591759 4.31714387 0.96780788 0.98422297 0.46822687;
+	-3.33136675 -0.00980035 0.00587773 4.32156640 0.96795801 0.98432191 0.46775284;
+	-3.33573607 -0.00974211 0.00583838 4.32599396 0.96810630 0.98441951 0.46728441;
+	-3.34011130 -0.00968470 0.00579951 4.33042660 0.96825278 0.98451579 0.46682157;
+	-3.34449246 -0.00962810 0.00576113 4.33486436 0.96839750 0.98461077 0.46636427;
+	-3.34887956 -0.00957230 0.00572323 4.33930726 0.96854048 0.98470447 0.46591248;
+	-3.35327261 -0.00951729 0.00568581 4.34375533 0.96868175 0.98479691 0.46546617;
+	-3.35767163 -0.00946304 0.00564884 4.34820858 0.96882135 0.98488812 0.46502531;
+	-3.36207660 -0.00940956 0.00561233 4.35266704 0.96895930 0.98497811 0.46458986;
+	-3.36648753 -0.00935681 0.00557627 4.35713071 0.96909563 0.98506691 0.46415977;
+	-3.37090440 -0.00930480 0.00554066 4.36159960 0.96923037 0.98515454 0.46373503;
+	-3.37532721 -0.00925350 0.00550548 4.36607371 0.96936355 0.98524102 0.46331559;
+	-3.37975593 -0.00920290 0.00547073 4.37055303 0.96949520 0.98532636 0.46290141;
+	-3.38419056 -0.00915300 0.00543641 4.37503756 0.96962535 0.98541059 0.46249246;
+	-3.38863105 -0.00910377 0.00540251 4.37952729 0.96975401 0.98549373 0.46208870;
+	-3.39307740 -0.00905520 0.00536901 4.38402220 0.96988122 0.98557578 0.46169009;
+	-3.39752956 -0.00900729 0.00533593 4.38852227 0.97000699 0.98565678 0.46129660;
+	-3.40198751 -0.00896002 0.00530324 4.39302749 0.97013137 0.98573674 0.46090819;
+	-3.40645121 -0.00891338 0.00527095 4.39753783 0.97025435 0.98581567 0.46052482;
+	-3.41092063 -0.00886736 0.00523904 4.40205326 0.97037598 0.98589360 0.46014645;
+	-3.41539571 -0.00882195 0.00520752 4.40657376 0.97049628 0.98597053 0.45977305;
+	-3.41987643 -0.00877713 0.00517637 4.41109929 0.97061526 0.98604649 0.45940458;
+	-3.42436272 -0.00873290 0.00514560 4.41562982 0.97073295 0.98612149 0.45904100;
+	-3.42885456 -0.00868925 0.00511520 4.42016531 0.97084936 0.98619555 0.45868227;
+	-3.43335188 -0.00864617 0.00508515 4.42470571 0.97096453 0.98626868 0.45832835;
+	-3.43785464 -0.00860364 0.00505546 4.42925100 0.97107847 0.98634090 0.45797921;
+	-3.44236278 -0.00856166 0.00502613 4.43380112 0.97119120 0.98641222 0.45763480;
+	-3.44687625 -0.00852021 0.00499714 4.43835604 0.97130274 0.98648265 0.45729509;
+	-3.45139500 -0.00847930 0.00496849 4.44291570 0.97141311 0.98655221 0.45696005;
+	-3.45591895 -0.00843890 0.00494017 4.44748005 0.97152233 0.98662092 0.45662962;
+	-3.46044807 -0.00839902 0.00491219 4.45204905 0.97163042 0.98668879 0.45630378;
+	-3.46498227 -0.00835964 0.00488454 4.45662264 0.97173739 0.98675583 0.45598249;
+	-3.46952151 -0.00832075 0.00485721 4.46120077 0.97184326 0.98682205 0.45566570;
+	-3.47406572 -0.00828234 0.00483019 4.46578338 0.97194805 0.98688746 0.45535338;
+	-3.47861484 -0.00824442 0.00480349 4.47037042 0.97205179 0.98695209 0.45504550;
+	-3.48316880 -0.00820696 0.00477710 4.47496184 0.97215447 0.98701594 0.45474201;
+	-3.48772753 -0.00816996 0.00475102 4.47955756 0.97225612 0.98707902 0.45444287;
+	-3.49229097 -0.00813342 0.00472523 4.48415755 0.97235676 0.98714134 0.45414806;
+	-3.49685904 -0.00809733 0.00469975 4.48876172 0.97245640 0.98720293 0.45385753;
+	-3.50143169 -0.00806167 0.00467455 4.49337002 0.97255506 0.98726378 0.45357123;
+	-3.50600884 -0.00802644 0.00464964 4.49798240 0.97265275 0.98732391 0.45328915;
+	-3.51059042 -0.00799164 0.00462502 4.50259878 0.97274949 0.98738333 0.45301123;
+	-3.51517637 -0.00795726 0.00460068 4.50721911 0.97284528 0.98744206 0.45273745;
+	-3.51976660 -0.00792329 0.00457662 4.51184331 0.97294015 0.98750009 0.45246776;
+	-3.52436105 -0.00788972 0.00455283 4.51647133 0.97303411 0.98755745 0.45220214;
+	-3.52895964 -0.00785655 0.00452930 4.52110309 0.97312718 0.98761414 0.45194053;
+	-3.53356231 -0.00782377 0.00450605 4.52573854 0.97321936 0.98767018 0.45168291;
+	-3.53816898 -0.00779138 0.00448306 4.53037760 0.97331067 0.98772556 0.45142923;
+	-3.54277957 -0.00775937 0.00446032 4.53502021 0.97340111 0.98778031 0.45117947;
+	-3.54739402 -0.00772773 0.00443784 4.53966629 0.97349072 0.98783443 0.45093359;
+	-3.55201224 -0.00769645 0.00441562 4.54431579 0.97357949 0.98788793 0.45069155;
+	-3.55663417 -0.00766554 0.00439364 4.54896864 0.97366744 0.98794082 0.45045331;
+	-3.56125973 -0.00763498 0.00437190 4.55362475 0.97375458 0.98799311 0.45021885;
+	-3.56588885 -0.00760478 0.00435041 4.55828407 0.97384092 0.98804481 0.44998812;
+	-3.57052145 -0.00757491 0.00432916 4.56294653 0.97392648 0.98809593 0.44976109;
+	-3.57515745 -0.00754539 0.00430814 4.56761206 0.97401126 0.98814646 0.44953772;
+	-3.57979678 -0.00751620 0.00428736 4.57228058 0.97409528 0.98819644 0.44931799;
+	-3.58443937 -0.00748734 0.00426681 4.57695203 0.97417854 0.98824585 0.44910185;
+	-3.58908514 -0.00745880 0.00424648 4.58162633 0.97426107 0.98829472 0.44888928;
+	-3.59373401 -0.00743059 0.00422637 4.58630343 0.97434286 0.98834304 0.44868023;
+	-3.59838592 -0.00740268 0.00420649 4.59098323 0.97442393 0.98839083 0.44847468;
+	-3.60304078 -0.00737509 0.00418682 4.59566569 0.97450428 0.98843809 0.44827259;
+	-3.60769852 -0.00734780 0.00416737 4.60035072 0.97458394 0.98848483 0.44807392;
+	-3.61235907 -0.00732081 0.00414813 4.60503826 0.97466290 0.98853106 0.44787865;
+	-3.61702235 -0.00729411 0.00412910 4.60972823 0.97474118 0.98857678 0.44768674;
+	-3.62168828 -0.00726771 0.00411028 4.61442057 0.97481879 0.98862201 0.44749816;
+	-3.62635680 -0.00724159 0.00409166 4.61911521 0.97489573 0.98866675 0.44731288;
+	-3.63102782 -0.00721575 0.00407325 4.62381207 0.97497202 0.98871100 0.44713086;
+	-3.63570128 -0.00719020 0.00405503 4.62851108 0.97504766 0.98875478 0.44695207;
+	-3.64037709 -0.00716491 0.00403700 4.63321218 0.97512267 0.98879808 0.44677649;
+	-3.64505519 -0.00713990 0.00401918 4.63791530 0.97519704 0.98884093 0.44660407;
+	-3.64973550 -0.00711515 0.00400154 4.64262036 0.97527080 0.98888331 0.44643478;
+	-3.65441795 -0.00709066 0.00398409 4.64732729 0.97534394 0.98892525 0.44626861;
+	-3.65910247 -0.00706643 0.00396683 4.65203604 0.97541648 0.98896674 0.44610551;
+	-3.66378898 -0.00704246 0.00394975 4.65674652 0.97548842 0.98900779 0.44594545;
+	-3.66847740 -0.00701873 0.00393286 4.66145867 0.97555978 0.98904841 0.44578841;
+	-3.67316767 -0.00699526 0.00391614 4.66617242 0.97563055 0.98908860 0.44563435;
+	-3.67785972 -0.00697202 0.00389960 4.67088770 0.97570076 0.98912838 0.44548324;
+	-3.68255347 -0.00694903 0.00388324 4.67560444 0.97577039 0.98916773 0.44533506;
+	-3.68724885 -0.00692627 0.00386705 4.68032258 0.97583947 0.98920668 0.44518977;
+	-3.69194579 -0.00690374 0.00385103 4.68504204 0.97590800 0.98924523 0.44504735;
+	-3.69664421 -0.00688145 0.00383518 4.68976277 0.97597598 0.98928338 0.44490776;
+	-3.70134406 -0.00685938 0.00381949 4.69448468 0.97604342 0.98932113 0.44477099;
+	-3.70604525 -0.00683753 0.00380397 4.69920772 0.97611034 0.98935850 0.44463698;
+	-3.71074772 -0.00681590 0.00378861 4.70393182 0.97617673 0.98939548 0.44450573;
+	-3.71545140 -0.00679449 0.00377342 4.70865691 0.97624261 0.98943209 0.44437720;
+	-3.72015622 -0.00677330 0.00375838 4.71338292 0.97630797 0.98946833 0.44425137;
+	-3.72486211 -0.00675231 0.00374349 4.71810980 0.97637283 0.98950420 0.44412820;
+	-3.72956899 -0.00673153 0.00372877 4.72283746 0.97643720 0.98953970 0.44400767;
+	-3.73427682 -0.00671096 0.00371419 4.72756585 0.97650107 0.98957485 0.44388975;
+	-3.73898550 -0.00669059 0.00369976 4.73229491 0.97656446 0.98960965 0.44377441;
+	-3.74369498 -0.00667042 0.00368549 4.73702457 0.97662737 0.98964409 0.44366163;
+	-3.74840519 -0.00665044 0.00367136 4.74175475 0.97668980 0.98967820 0.44355139;
+	-3.75311607 -0.00663066 0.00365738 4.74648541 0.97675177 0.98971196 0.44344364;
+	-3.75782754 -0.00661107 0.00364354 4.75121648 0.97681327 0.98974540 0.44333838;
+	-3.76253955 -0.00659167 0.00362984 4.75594788 0.97687432 0.98977850 0.44323557;
+	-3.76725202 -0.00657245 0.00361628 4.76067957 0.97693492 0.98981127 0.44313518;
+	-3.77196489 -0.00655341 0.00360286 4.76541147 0.97699508 0.98984372 0.44303720;
+	-3.77667809 -0.00653456 0.00358958 4.77014353 0.97705479 0.98987586 0.44294159;
+	-3.78139156 -0.00651589 0.00357643 4.77487568 0.97711407 0.98990768 0.44284833;
+	-3.78610525 -0.00649739 0.00356342 4.77960786 0.97717292 0.98993920 0.44275740;
+	-3.79081907 -0.00647906 0.00355053 4.78434001 0.97723134 0.98997040 0.44266877;
+	-3.79553298 -0.00646091 0.00353778 4.78907207 0.97728935 0.99000131 0.44258241;
+	-3.80024690 -0.00644292 0.00352516 4.79380398 0.97734694 0.99003192 0.44249831;
+	-3.80496078 -0.00642510 0.00351266 4.79853567 0.97740413 0.99006223 0.44241644;
+	-3.80967455 -0.00640745 0.00350029 4.80326710 0.97746090 0.99009226 0.44233677;
+	-3.81438815 -0.00638996 0.00348804 4.80799819 0.97751728 0.99012200 0.44225928;
+	-3.81910152 -0.00637262 0.00347592 4.81272889 0.97757326 0.99015145 0.44218395;
+	-3.82381460 -0.00635545 0.00346392 4.81745915 0.97762886 0.99018063 0.44211076;
+	-3.82852732 -0.00633843 0.00345204 4.82218889 0.97768406 0.99020953 0.44203968;
+	-3.83323964 -0.00632157 0.00344027 4.82691808 0.97773889 0.99023816 0.44197068;
+	-3.83795149 -0.00630485 0.00342863 4.83164664 0.97779333 0.99026652 0.44190376;
+	-3.84266280 -0.00628829 0.00341709 4.83637452 0.97784741 0.99029462 0.44183887;
+	-3.84737353 -0.00627187 0.00340568 4.84110166 0.97790111 0.99032245 0.44177601;
+	-3.85208361 -0.00625560 0.00339437 4.84582801 0.97795446 0.99035003 0.44171515;
+	-3.85679299 -0.00623948 0.00338318 4.85055351 0.97800744 0.99037735 0.44165627;
+	-3.86150160 -0.00622349 0.00337210 4.85527811 0.97806006 0.99040441 0.44159934;
+	-3.86620939 -0.00620765 0.00336112 4.86000175 0.97811233 0.99043123 0.44154435;
+	-3.87091631 -0.00619194 0.00335026 4.86472437 0.97816426 0.99045780 0.44149127;
+	-3.87562229 -0.00617637 0.00333950 4.86944592 0.97821584 0.99048413 0.44144009;
+	-3.88032729 -0.00616094 0.00332885 4.87416635 0.97826708 0.99051022 0.44139078;
+	-3.88503124 -0.00614564 0.00331830 4.87888561 0.97831798 0.99053607 0.44134332;
+	-3.88973410 -0.00613047 0.00330785 4.88360363 0.97836855 0.99056168 0.44129769;
+	-3.89443580 -0.00611543 0.00329750 4.88832037 0.97841879 0.99058707 0.44125387;
+	-3.89913629 -0.00610051 0.00328726 4.89303577 0.97846870 0.99061223 0.44121185;
+	-3.90383552 -0.00608573 0.00327711 4.89774979 0.97851829 0.99063716 0.44117159;
+	-3.90853343 -0.00607107 0.00326707 4.90246236 0.97856756 0.99066187 0.44113309;
+	-3.91322998 -0.00605653 0.00325712 4.90717345 0.97861652 0.99068635 0.44109632;
+	-3.91792511 -0.00604212 0.00324726 4.91188299 0.97866516 0.99071062 0.44106126;
+	-3.92261876 -0.00602782 0.00323750 4.91659094 0.97871350 0.99073468 0.44102790;
+	-3.92731089 -0.00601364 0.00322784 4.92129724 0.97876153 0.99075852 0.44099621;
+	-3.93200144 -0.00599958 0.00321826 4.92600186 0.97880926 0.99078215 0.44096618;
+	-3.93669036 -0.00598564 0.00320878 4.93070472 0.97885669 0.99080558 0.44093779;
+	-3.94137761 -0.00597181 0.00319939 4.93540580 0.97890383 0.99082880 0.44091101;
+	-3.94606313 -0.00595809 0.00319009 4.94010504 0.97895067 0.99085182 0.44088584;
+	-3.95074687 -0.00594449 0.00318088 4.94480238 0.97899722 0.99087463 0.44086225;
+	-3.95542878 -0.00593099 0.00317175 4.94949779 0.97904349 0.99089725 0.44084022;
+	-3.96010882 -0.00591761 0.00316271 4.95419121 0.97908947 0.99091968 0.44081975;
+	-3.96478693 -0.00590433 0.00315376 4.95888260 0.97913517 0.99094191 0.44080080;
+	-3.96946306 -0.00589116 0.00314489 4.96357191 0.97918060 0.99096395 0.44078336;
+	-3.97413718 -0.00587809 0.00313611 4.96825909 0.97922575 0.99098581 0.44076742;
+	-3.97880922 -0.00586512 0.00312740 4.97294410 0.97927063 0.99100747 0.44075296;
+	-3.98347915 -0.00585226 0.00311878 4.97762689 0.97931524 0.99102895 0.44073996;
+	-3.98814692 -0.00583950 0.00311024 4.98230742 0.97935959 0.99105026 0.44072841;
+	-3.99281247 -0.00582684 0.00310178 4.98698564 0.97940367 0.99107138 0.44071828;
+	-3.99747577 -0.00581428 0.00309340 4.99166150 0.97944749 0.99109232 0.44070956;
+	-4.00213677 -0.00580181 0.00308510 4.99633496 0.97949105 0.99111309 0.44070224;
+	-4.00679542 -0.00578944 0.00307688 5.00100598 0.97953436 0.99113368 0.44069630;
+	-4.01145168 -0.00577717 0.00306873 5.00567451 0.97957741 0.99115410 0.44069173;
+	-4.01610551 -0.00576499 0.00306065 5.01034052 0.97962021 0.99117436 0.44068850;
+	-4.02075685 -0.00575290 0.00305266 5.01500395 0.97966277 0.99119444 0.44068660;
+	-4.02540567 -0.00574091 0.00304473 5.01966476 0.97970508 0.99121436 0.44068602;
+	-4.03005191 -0.00572900 0.00303688 5.02432291 0.97974715 0.99123412 0.44068674;
+	-4.03469555 -0.00571719 0.00302910 5.02897837 0.97978897 0.99125371 0.44068875;
+	-4.03933654 -0.00570546 0.00302139 5.03363108 0.97983056 0.99127315 0.44069203;
+	-4.04397482 -0.00569382 0.00301375 5.03828100 0.97987192 0.99129242 0.44069657;
+	-4.04861037 -0.00568227 0.00300619 5.04292810 0.97991304 0.99131154 0.44070234;
+	-4.05324314 -0.00567080 0.00299869 5.04757234 0.97995393 0.99133051 0.44070935;
+	-4.05787308 -0.00565942 0.00299126 5.05221367 0.97999459 0.99134932 0.44071756;
+	-4.06250017 -0.00564812 0.00298390 5.05685205 0.98003502 0.99136799 0.44072698;
+	-4.06712435 -0.00563690 0.00297660 5.06148744 0.98007523 0.99138650 0.44073757;
+	-4.07174558 -0.00562577 0.00296937 5.06611981 0.98011522 0.99140486 0.44074934;
+	-4.07636383 -0.00561471 0.00296221 5.07074912 0.98015498 0.99142308 0.44076227;
+	-4.08097906 -0.00560374 0.00295511 5.07537532 0.98019453 0.99144116 0.44077633;
+	-4.08559122 -0.00559284 0.00294807 5.07999838 0.98023386 0.99145909 0.44079153;
+	-4.09020028 -0.00558202 0.00294110 5.08461826 0.98027298 0.99147688 0.44080784;
+	-4.09480620 -0.00557128 0.00293419 5.08923492 0.98031189 0.99149453 0.44082525;
+	-4.09940894 -0.00556061 0.00292734 5.09384833 0.98035059 0.99151204 0.44084375;
+	-4.10400846 -0.00555002 0.00292056 5.09845844 0.98038908 0.99152942 0.44086333;
+	-4.10860473 -0.00553950 0.00291383 5.10306522 0.98042736 0.99154666 0.44088396;
+	-4.11319770 -0.00552906 0.00290717 5.10766864 0.98046544 0.99156377 0.44090565;
+	-4.11778734 -0.00551869 0.00290056 5.11226865 0.98050332 0.99158075 0.44092838;
+	-4.12237362 -0.00550839 0.00289401 5.11686523 0.98054100 0.99159760 0.44095213;
+	-4.12695649 -0.00549816 0.00288752 5.12145833 0.98057848 0.99161431 0.44097689;
+	-4.13153592 -0.00548801 0.00288109 5.12604792 0.98061577 0.99163090 0.44100265;
+	-4.13611188 -0.00547792 0.00287471 5.13063396 0.98065286 0.99164737 0.44102940;
+	-4.14068433 -0.00546790 0.00286839 5.13521643 0.98068975 0.99166371 0.44105712;
+	-4.14525323 -0.00545795 0.00286213 5.13979528 0.98072646 0.99167992 0.44108581;
+	-4.14981854 -0.00544806 0.00285592 5.14437048 0.98076298 0.99169602 0.44111544;
+	-4.15438025 -0.00543824 0.00284976 5.14894200 0.98079931 0.99171199 0.44114602;
+	-4.15893830 -0.00542849 0.00284366 5.15350981 0.98083545 0.99172785 0.44117753;
+	-4.16349267 -0.00541880 0.00283761 5.15807386 0.98087141 0.99174358 0.44120995;
+	-4.16804332 -0.00540918 0.00283162 5.16263414 0.98090719 0.99175920 0.44124328;
+	-4.17259021 -0.00539962 0.00282567 5.16719060 0.98094278 0.99177471 0.44127750;
+	-4.17713333 -0.00539012 0.00281978 5.17174321 0.98097820 0.99179010 0.44131260;
+	-4.18167262 -0.00538069 0.00281394 5.17629194 0.98101344 0.99180537 0.44134857;
+	-4.18620807 -0.00537131 0.00280815 5.18083676 0.98104851 0.99182054 0.44138541;
+	-4.19073963 -0.00536200 0.00280241 5.18537763 0.98108340 0.99183560 0.44142309;
+	-4.19526728 -0.00535274 0.00279671 5.18991453 0.98111811 0.99185054 0.44146162;
+	-4.19979098 -0.00534355 0.00279107 5.19444743 0.98115266 0.99186538 0.44150097;
+	-4.20431070 -0.00533441 0.00278548 5.19897629 0.98118704 0.99188011 0.44154114;
+	-4.20882641 -0.00532534 0.00277993 5.20350108 0.98122125 0.99189474 0.44158211;
+	-4.21333809 -0.00531632 0.00277443 5.20802177 0.98125529 0.99190926 0.44162389;
+	-4.21784569 -0.00530735 0.00276897 5.21253834 0.98128916 0.99192367 0.44166645;
+	-4.22234919 -0.00529845 0.00276357 5.21705075 0.98132288 0.99193799 0.44170979;
+	-4.22684856 -0.00528959 0.00275820 5.22155897 0.98135643 0.99195220 0.44175389;
+	-4.23134377 -0.00528080 0.00275289 5.22606297 0.98138982 0.99196631 0.44179875;
+	-4.23583479 -0.00527206 0.00274762 5.23056273 0.98142305 0.99198033 0.44184436;
+	-4.24032159 -0.00526337 0.00274239 5.23505822 0.98145612 0.99199424 0.44189070;
+	-4.24480413 -0.00525473 0.00273720 5.23954940 0.98148904 0.99200806 0.44193777;
+	-4.24928241 -0.00524615 0.00273206 5.24403626 0.98152180 0.99202179 0.44198557;
+	-4.25375637 -0.00523762 0.00272697 5.24851875 0.98155440 0.99203541 0.44203406;
+	-4.25822600 -0.00522914 0.00272191 5.25299686 0.98158685 0.99204895 0.44208326;
+	-4.26269127 -0.00522071 0.00271690 5.25747055 0.98161916 0.99206239 0.44213315;
+	-4.26715214 -0.00521233 0.00271193 5.26193981 0.98165131 0.99207574 0.44218372;
+	-4.27160860 -0.00520401 0.00270700 5.26640459 0.98168331 0.99208900 0.44223496;
+	-4.27606061 -0.00519573 0.00270211 5.27086489 0.98171516 0.99210217 0.44228686;
+	-4.28050816 -0.00518750 0.00269726 5.27532066 0.98174687 0.99211524 0.44233942;
+	-4.28495120 -0.00517932 0.00269245 5.27977188 0.98177844 0.99212824 0.44239262;
+	-4.28938971 -0.00517119 0.00268767 5.28421853 0.98180986 0.99214114 0.44244646;
+	-4.29382368 -0.00516310 0.00268294 5.28866058 0.98184113 0.99215396 0.44250093;
+	-4.29825306 -0.00515506 0.00267825 5.29309800 0.98187227 0.99216669 0.44255601;
+	-4.30267785 -0.00514707 0.00267359 5.29753078 0.98190326 0.99217934 0.44261171;
+	-4.30709800 -0.00513912 0.00266898 5.30195888 0.98193412 0.99219190 0.44266801;
+	-4.31151350 -0.00513122 0.00266440 5.30638227 0.98196483 0.99220438 0.44272490;
+	-4.31592431 -0.00512337 0.00265985 5.31080095 0.98199542 0.99221678 0.44278238;
+	-4.32033043 -0.00511555 0.00265535 5.31521487 0.98202586 0.99222910 0.44284044;
+	-4.32473181 -0.00510779 0.00265088 5.31962403 0.98205617 0.99224134 0.44289907;
+	-4.32912844 -0.00510006 0.00264644 5.32402838 0.98208635 0.99225350 0.44295825;
+	-4.33352030 -0.00509238 0.00264204 5.32842792 0.98211639 0.99226558 0.44301800;
+	-4.33790735 -0.00508474 0.00263768 5.33282261 0.98214630 0.99227758 0.44307829;
+	-4.34228957 -0.00507715 0.00263335 5.33721243 0.98217609 0.99228950 0.44313911;
+	-4.34666695 -0.00506959 0.00262906 5.34159736 0.98220574 0.99230135 0.44320047;
+	-4.35103946 -0.00506208 0.00262479 5.34597738 0.98223526 0.99231313 0.44326235;
+	-4.35540706 -0.00505461 0.00262057 5.35035246 0.98226466 0.99232483 0.44332475;
+	-4.35976976 -0.00504718 0.00261637 5.35472258 0.98229393 0.99233645 0.44338766;
+	-4.36412751 -0.00503978 0.00261221 5.35908772 0.98232308 0.99234800 0.44345107;
+	-4.36848029 -0.00503243 0.00260808 5.36344786 0.98235210 0.99235949 0.44351497;
+	-4.37282810 -0.00502512 0.00260399 5.36780298 0.98238100 0.99237089 0.44357936;
+	-4.37717089 -0.00501785 0.00259992 5.37215304 0.98240977 0.99238223 0.44364422;
+	-4.38150866 -0.00501061 0.00259589 5.37649804 0.98243843 0.99239350 0.44370956;
+	-4.38584137 -0.00500341 0.00259189 5.38083796 0.98246696 0.99240470 0.44377537;
+	-4.39016901 -0.00499626 0.00258792 5.38517276 0.98249538 0.99241583 0.44384163;
+	-4.39449156 -0.00498913 0.00258397 5.38950243 0.98252368 0.99242689 0.44390835;
+	-4.39880900 -0.00498205 0.00258006 5.39382695 0.98255186 0.99243789 0.44397551;
+	-4.40312130 -0.00497500 0.00257618 5.39814630 0.98257992 0.99244881 0.44404311;
+	-4.40742845 -0.00496799 0.00257233 5.40246046 0.98260787 0.99245968 0.44411114;
+	-4.41173042 -0.00496101 0.00256851 5.40676940 0.98263570 0.99247047 0.44417960;
+	-4.41602719 -0.00495407 0.00256472 5.41107312 0.98266342 0.99248121 0.44424847;
+	-4.42031875 -0.00494717 0.00256096 5.41537158 0.98269102 0.99249187 0.44431776;
+	-4.42460508 -0.00494030 0.00255722 5.41966478 0.98271852 0.99250248 0.44438745;
+	-4.42888615 -0.00493346 0.00255351 5.42395268 0.98274590 0.99251302 0.44445755;
+	-4.43316194 -0.00492666 0.00254984 5.42823528 0.98277317 0.99252350 0.44452803;
+	-4.43743244 -0.00491989 0.00254618 5.43251255 0.98280033 0.99253392 0.44459891;
+	-4.44169763 -0.00491316 0.00254256 5.43678447 0.98282738 0.99254428 0.44467016;
+	-4.44595749 -0.00490646 0.00253896 5.44105103 0.98285433 0.99255458 0.44474179;
+	-4.45021200 -0.00489979 0.00253539 5.44531221 0.98288117 0.99256482 0.44481379;
+	-4.45446115 -0.00489316 0.00253185 5.44956799 0.98290790 0.99257500 0.44488616;
+	-4.45870490 -0.00488655 0.00252833 5.45381835 0.98293452 0.99258512 0.44495888;
+	-4.46294326 -0.00487998 0.00252484 5.45806327 0.98296105 0.99259518 0.44503195;
+	-4.46717619 -0.00487344 0.00252137 5.46230275 0.98298746 0.99260519 0.44510537;
+	-4.47140368 -0.00486693 0.00251793 5.46653675 0.98301378 0.99261514 0.44517912;
+	-4.47562571 -0.00486046 0.00251451 5.47076526 0.98303999 0.99262503 0.44525322;
+	-4.47984227 -0.00485401 0.00251112 5.47498827 0.98306610 0.99263487 0.44532764;
+	-4.48405334 -0.00484759 0.00250775 5.47920575 0.98309211 0.99264465 0.44540238;
+	-4.48825891 -0.00484121 0.00250441 5.48341770 0.98311802 0.99265438 0.44547744;
+	-4.49245894 -0.00483485 0.00250109 5.48762409 0.98314383 0.99266406 0.44555282;
+	-4.49665344 -0.00482852 0.00249780 5.49182492 0.98316954 0.99267368 0.44562850;
+	-4.50084238 -0.00482223 0.00249453 5.49602015 0.98319515 0.99268325 0.44570449;
+	-4.50502575 -0.00481596 0.00249128 5.50020979 0.98322067 0.99269277 0.44578077;
+	-4.50920352 -0.00480972 0.00248805 5.50439380 0.98324609 0.99270223 0.44585734;
+	-4.51337569 -0.00480350 0.00248485 5.50857219 0.98327141 0.99271164 0.44593420;
+	-4.51754224 -0.00479732 0.00248167 5.51274492 0.98329664 0.99272101 0.44601134;
+	-4.52170315 -0.00479117 0.00247851 5.51691199 0.98332177 0.99273032 0.44608876;
+	-4.52585842 -0.00478504 0.00247538 5.52107338 0.98334681 0.99273958 0.44616645;
+	-4.53000801 -0.00477894 0.00247227 5.52522907 0.98337176 0.99274880 0.44624440;
+	-4.53415192 -0.00477286 0.00246917 5.52937906 0.98339661 0.99275796 0.44632262;
+	-4.53829014 -0.00476682 0.00246610 5.53352332 0.98342137 0.99276708 0.44640109;
+	-4.54242264 -0.00476080 0.00246306 5.53766184 0.98344605 0.99277615 0.44647982;
+	-4.54654942 -0.00475480 0.00246003 5.54179461 0.98347063 0.99278517 0.44655879;
+	-4.55067046 -0.00474884 0.00245702 5.54592162 0.98349512 0.99279414 0.44663801;
+	-4.55478574 -0.00474290 0.00245404 5.55004285 0.98351952 0.99280307 0.44671746;
+	-4.55889526 -0.00473698 0.00245107 5.55415828 0.98354383 0.99281195 0.44679715;
+	-4.56299899 -0.00473109 0.00244812 5.55826790 0.98356806 0.99282079 0.44687706;
+	-4.56709693 -0.00472522 0.00244520 5.56237170 0.98359219 0.99282958 0.44695720;
+	-4.57118906 -0.00471938 0.00244229 5.56646967 0.98361625 0.99283832 0.44703756;
+	-4.57527536 -0.00471357 0.00243940 5.57056179 0.98364021 0.99284703 0.44711814;
+	-4.57935583 -0.00470778 0.00243654 5.57464806 0.98366409 0.99285569 0.44719893;
+	-4.58343045 -0.00470201 0.00243369 5.57872844 0.98368788 0.99286430 0.44727992;
+	-4.58749921 -0.00469627 0.00243086 5.58280295 0.98371159 0.99287287 0.44736112;
+	-4.59156210 -0.00469055 0.00242805 5.58687155 0.98373522 0.99288140 0.44744252;
+	-4.59561910 -0.00468485 0.00242526 5.59093424 0.98375876 0.99288989 0.44752411;
+	-4.59967020 -0.00467918 0.00242248 5.59499102 0.98378222 0.99289833 0.44760589;
+	-4.60371538 -0.00467353 0.00241973 5.59904185 0.98380560 0.99290674 0.44768785;
+	-4.60775465 -0.00466791 0.00241699 5.60308674 0.98382890 0.99291510 0.44777000;
+	-4.61178797 -0.00466230 0.00241427 5.60712567 0.98385211 0.99292343 0.44785233;
+	-4.61581536 -0.00465672 0.00241157 5.61115863 0.98387525 0.99293171 0.44793483;
+	-4.61983678 -0.00465116 0.00240889 5.61518561 0.98389830 0.99293995 0.44801750;
+	-4.62385223 -0.00464563 0.00240622 5.61920660 0.98392128 0.99294815 0.44810034;
+	-4.62786170 -0.00464011 0.00240357 5.62322158 0.98394418 0.99295632 0.44818334;
+	-4.63186517 -0.00463462 0.00240093 5.62723055 0.98396700 0.99296444 0.44826650;
+	-4.63586264 -0.00462915 0.00239832 5.63123349 0.98398974 0.99297253 0.44834982;
+	-4.63985410 -0.00462370 0.00239572 5.63523040 0.98401240 0.99298058 0.44843328;
+	-4.64383953 -0.00461827 0.00239313 5.63922126 0.98403499 0.99298859 0.44851690;
+	-4.64781892 -0.00461286 0.00239057 5.64320606 0.98405750 0.99299657 0.44860066;
+	-4.65179227 -0.00460748 0.00238802 5.64718479 0.98407993 0.99300451 0.44868455;
+	-4.65575956 -0.00460211 0.00238548 5.65115744 0.98410229 0.99301241 0.44876859;
+	-4.65972078 -0.00459677 0.00238296 5.65512401 0.98412458 0.99302027 0.44885276;
+	-4.66367592 -0.00459144 0.00238046 5.65908448 0.98414679 0.99302810 0.44893706;
+	-4.66762497 -0.00458614 0.00237797 5.66303884 0.98416893 0.99303590 0.44902148;
+	-4.67156793 -0.00458085 0.00237549 5.66698708 0.98419099 0.99304366 0.44910603;
+	-4.67550478 -0.00457558 0.00237303 5.67092920 0.98421298 0.99305138 0.44919070;
+	-4.67943552 -0.00457034 0.00237059 5.67486518 0.98423490 0.99305907 0.44927549;
+	-4.68336012 -0.00456511 0.00236816 5.67879501 0.98425675 0.99306673 0.44936038;
+	-4.68727860 -0.00455990 0.00236575 5.68271869 0.98427852 0.99307435 0.44944539;
+	-4.69119092 -0.00455472 0.00236335 5.68663621 0.98430023 0.99308194 0.44953051;
+	-4.69509710 -0.00454955 0.00236096 5.69054755 0.98432186 0.99308949 0.44961572;
+	-4.69899711 -0.00454440 0.00235859 5.69445271 0.98434343 0.99309701 0.44970104;
+	-4.70289095 -0.00453926 0.00235623 5.69835168 0.98436492 0.99310450 0.44978646;
+	-4.70677861 -0.00453415 0.00235389 5.70224446 0.98438635 0.99311196 0.44987197;
+	-4.71066008 -0.00452905 0.00235156 5.70613103 0.98440771 0.99311939 0.44995757;
+	-4.71453535 -0.00452398 0.00234924 5.71001138 0.98442899 0.99312678 0.45004326;
+	-4.71840442 -0.00451892 0.00234694 5.71388551 0.98445021 0.99313414 0.45012903;
+	-4.72226728 -0.00451387 0.00234465 5.71775341 0.98447137 0.99314147 0.45021488;
+	-4.72612392 -0.00450885 0.00234237 5.72161507 0.98449245 0.99314877 0.45030082;
+	-4.72997433 -0.00450384 0.00234011 5.72547048 0.98451347 0.99315604 0.45038683;
+	-4.73381850 -0.00449885 0.00233786 5.72931964 0.98453443 0.99316328 0.45047291;
+	-4.73765643 -0.00449388 0.00233562 5.73316254 0.98455532 0.99317049 0.45055907;
+	-4.74148810 -0.00448893 0.00233340 5.73699917 0.98457614 0.99317767 0.45064529;
+	-4.74531352 -0.00448399 0.00233119 5.74082953 0.98459690 0.99318483 0.45073158;
+	-4.74913267 -0.00447907 0.00232899 5.74465360 0.98461759 0.99319195 0.45081792;
+	-4.75294555 -0.00447416 0.00232680 5.74847138 0.98463822 0.99319904 0.45090433;
+	-4.75675214 -0.00446927 0.00232462 5.75228287 0.98465878 0.99320610 0.45099080;
+	-4.76055246 -0.00446440 0.00232246 5.75608805 0.98467929 0.99321314 0.45107732;
+	-4.76434647 -0.00445955 0.00232031 5.75988693 0.98469973 0.99322015 0.45116389;
+	-4.76813419 -0.00445471 0.00231816 5.76367948 0.98472010 0.99322713 0.45125051;
+	-4.77191560 -0.00444988 0.00231604 5.76746572 0.98474042 0.99323408 0.45133717;
+	-4.77569070 -0.00444507 0.00231392 5.77124562 0.98476067 0.99324101 0.45142388;
+	-4.77945947 -0.00444028 0.00231181 5.77501919 0.98478086 0.99324791 0.45151063;
+	-4.78322192 -0.00443550 0.00230972 5.77878642 0.98480099 0.99325478 0.45159742;
+	-4.78697804 -0.00443074 0.00230763 5.78254730 0.98482106 0.99326162 0.45168425;
+	-4.79072783 -0.00442600 0.00230556 5.78630183 0.98484107 0.99326844 0.45177111;
+	-4.79447127 -0.00442127 0.00230350 5.79005000 0.98486102 0.99327523 0.45185800;
+	-4.79820836 -0.00441655 0.00230145 5.79379181 0.98488091 0.99328200 0.45194492;
+	-4.80193909 -0.00441185 0.00229941 5.79752724 0.98490074 0.99328874 0.45203187;
+	-4.80566347 -0.00440716 0.00229738 5.80125630 0.98492051 0.99329546 0.45211884;
+	-4.80938148 -0.00440249 0.00229536 5.80497899 0.98494022 0.99330215 0.45220583;
+	-4.81309312 -0.00439783 0.00229335 5.80869528 0.98495988 0.99330881 0.45229285;
+	-4.81679838 -0.00439319 0.00229135 5.81240519 0.98497947 0.99331546 0.45237988;
+	-4.82049726 -0.00438856 0.00228937 5.81610870 0.98499901 0.99332207 0.45246692;
+	-4.82418976 -0.00438395 0.00228739 5.81980581 0.98501850 0.99332866 0.45255398;
+	-4.82787587 -0.00437935 0.00228542 5.82349652 0.98503792 0.99333523 0.45264105;
+	-4.83155558 -0.00437476 0.00228346 5.82718082 0.98505729 0.99334178 0.45272813;
+	-4.83522889 -0.00437019 0.00228151 5.83085870 0.98507660 0.99334830 0.45281521;
+	-4.83889580 -0.00436563 0.00227957 5.83453017 0.98509586 0.99335480 0.45290231;
+	-4.84255630 -0.00436109 0.00227764 5.83819521 0.98511506 0.99336127 0.45298940;
+	-4.84621038 -0.00435656 0.00227572 5.84185383 0.98513421 0.99336772 0.45307649;
+	-4.84985805 -0.00435204 0.00227381 5.84550601 0.98515330 0.99337415 0.45316358;
+	-4.85349930 -0.00434753 0.00227191 5.84915177 0.98517233 0.99338056 0.45325067;
+	-4.85713412 -0.00434304 0.00227002 5.85279108 0.98519132 0.99338694 0.45333775;
+	-4.86076252 -0.00433856 0.00226813 5.85642396 0.98521024 0.99339330 0.45342482;
+	-4.86438448 -0.00433410 0.00226626 5.86005038 0.98522912 0.99339964 0.45351189;
+	-4.86800001 -0.00432965 0.00226439 5.86367036 0.98524794 0.99340596 0.45359894;
+	-4.87160909 -0.00432521 0.00226253 5.86728389 0.98526671 0.99341226 0.45368598;
+	-4.87521174 -0.00432078 0.00226069 5.87089096 0.98528542 0.99341853 0.45377301;
+	-4.87880793 -0.00431637 0.00225885 5.87449157 0.98530409 0.99342479 0.45386001;
+	-4.88239768 -0.00431196 0.00225701 5.87808572 0.98532270 0.99343102 0.45394700;
+	-4.88598098 -0.00430758 0.00225519 5.88167340 0.98534126 0.99343723 0.45403397;
+	-4.88955781 -0.00430320 0.00225338 5.88525462 0.98535976 0.99344342 0.45412092;
+	-4.89312819 -0.00429883 0.00225157 5.88882936 0.98537822 0.99344960 0.45420784;
+	-4.89669211 -0.00429448 0.00224977 5.89239763 0.98539662 0.99345575 0.45429473;
+	-4.90024957 -0.00429014 0.00224798 5.89595942 0.98541498 0.99346188 0.45438160;
+	-4.90380055 -0.00428581 0.00224620 5.89951474 0.98543328 0.99346799 0.45446844;
+	-4.90734507 -0.00428150 0.00224442 5.90306357 0.98545154 0.99347408 0.45455524;
+	-4.91088312 -0.00427719 0.00224266 5.90660592 0.98546974 0.99348015 0.45464201;
+	-4.91441469 -0.00427290 0.00224090 5.91014179 0.98548790 0.99348620 0.45472875;
+	-4.91793978 -0.00426862 0.00223915 5.91367116 0.98550600 0.99349224 0.45481546;
+	-4.92145840 -0.00426435 0.00223740 5.91719405 0.98552406 0.99349825 0.45490212;
+	-4.92497053 -0.00426009 0.00223566 5.92071044 0.98554206 0.99350425 0.45498875;
+	-4.92847618 -0.00425584 0.00223394 5.92422034 0.98556002 0.99351022 0.45507533;
+	-4.93197535 -0.00425160 0.00223221 5.92772375 0.98557793 0.99351618 0.45516187;
+	-4.93546803 -0.00424738 0.00223050 5.93122065 0.98559579 0.99352212 0.45524837;
+	-4.93895423 -0.00424317 0.00222879 5.93471106 0.98561361 0.99352804 0.45533482;
+	-4.94243393 -0.00423896 0.00222709 5.93819497 0.98563138 0.99353395 0.45542123;
+	-4.94590714 -0.00423477 0.00222540 5.94167237 0.98564910 0.99353983 0.45550758;
+	-4.94937386 -0.00423059 0.00222371 5.94514327 0.98566677 0.99354570 0.45559389;
+	-4.95283409 -0.00422642 0.00222203 5.94860767 0.98568439 0.99355155 0.45568014;
+	-4.95628782 -0.00422226 0.00222036 5.95206556 0.98570197 0.99355738 0.45576634;
+	-4.95973505 -0.00421811 0.00221869 5.95551694 0.98571951 0.99356320 0.45585249;
+	-4.96317579 -0.00421397 0.00221703 5.95896181 0.98573699 0.99356900 0.45593858;
+	-4.96661002 -0.00420984 0.00221538 5.96240018 0.98575444 0.99357478 0.45602462;
+	-4.97003776 -0.00420573 0.00221373 5.96583204 0.98577183 0.99358054 0.45611059;
+	-4.97345900 -0.00420162 0.00221209 5.96925738 0.98578918 0.99358629 0.45619651;
+	-4.97687374 -0.00419752 0.00221046 5.97267622 0.98580649 0.99359202 0.45628236;
+	-4.98028197 -0.00419344 0.00220883 5.97608854 0.98582375 0.99359774 0.45636816;
+	-4.98368371 -0.00418936 0.00220721 5.97949435 0.98584096 0.99360343 0.45645388;
+	-4.98707894 -0.00418529 0.00220559 5.98289365 0.98585814 0.99360912 0.45653955;
+	-4.99046767 -0.00418123 0.00220398 5.98628643 0.98587526 0.99361478 0.45662514;
+	-4.99384989 -0.00417719 0.00220238 5.98967270 0.98589235 0.99362043 0.45671067;
+	-4.99722561 -0.00417315 0.00220078 5.99305246 0.98590939 0.99362607 0.45679613;
+	-5.00059483 -0.00416912 0.00219919 5.99642571 0.98592638 0.99363169 0.45688152;
+	-5.00395754 -0.00416511 0.00219761 5.99979244 0.98594334 0.99363729 0.45696684;
+	-5.00731375 -0.00416110 0.00219603 6.00315266 0.98596025 0.99364288 0.45705209;
+	-5.01066346 -0.00415710 0.00219445 6.00650636 0.98597712 0.99364845 0.45713726;
+	-5.01400667 -0.00415311 0.00219288 6.00985356 0.98599394 0.99365401 0.45722236;
+	-5.01734337 -0.00414913 0.00219132 6.01319424 0.98601072 0.99365955 0.45730738;
+	-5.02067356 -0.00414516 0.00218976 6.01652841 0.98602746 0.99366508 0.45739233;
+	-5.02399726 -0.00414120 0.00218821 6.01985606 0.98604416 0.99367059 0.45747719;
+	-5.02731445 -0.00413724 0.00218666 6.02317721 0.98606082 0.99367609 0.45756198;
+	-5.03062515 -0.00413330 0.00218512 6.02649184 0.98607744 0.99368157 0.45764669;
+	-5.03392934 -0.00412937 0.00218359 6.02979997 0.98609401 0.99368704 0.45773131;
+	-5.03722703 -0.00412544 0.00218206 6.03310159 0.98611054 0.99369250 0.45781585;
+	-5.04051822 -0.00412153 0.00218053 6.03639670 0.98612704 0.99369794 0.45790031;
+	-5.04380292 -0.00411762 0.00217901 6.03968530 0.98614349 0.99370337 0.45798469;
+	-5.04708112 -0.00411372 0.00217750 6.04296739 0.98615990 0.99370878 0.45806897;
+	-5.05035282 -0.00410983 0.00217599 6.04624299 0.98617627 0.99371418 0.45815318;
+	-5.05361802 -0.00410595 0.00217448 6.04951207 0.98619260 0.99371957 0.45823729;
+	-5.05687674 -0.00410208 0.00217298 6.05277466 0.98620889 0.99372494 0.45832131;
+	-5.06012896 -0.00409821 0.00217148 6.05603074 0.98622514 0.99373030 0.45840525;
+	-5.06337469 -0.00409436 0.00216999 6.05928033 0.98624135 0.99373565 0.45848909;
+	-5.06661393 -0.00409051 0.00216851 6.06252341 0.98625753 0.99374098 0.45857285;
+	-5.06984668 -0.00408668 0.00216703 6.06576000 0.98627366 0.99374630 0.45865651;
+	-5.07307294 -0.00408285 0.00216555 6.06899010 0.98628975 0.99375161 0.45874007;
+	-5.07629272 -0.00407902 0.00216408 6.07221370 0.98630581 0.99375690 0.45882355;
+	-5.07950602 -0.00407521 0.00216261 6.07543081 0.98632182 0.99376218 0.45890693;
+	-5.08271283 -0.00407141 0.00216115 6.07864143 0.98633780 0.99376745 0.45899021;
+	-5.08591317 -0.00406761 0.00215969 6.08184556 0.98635374 0.99377270 0.45907339;
+	-5.08910703 -0.00406382 0.00215823 6.08504321 0.98636965 0.99377795 0.45915648;
+	-5.09229441 -0.00406004 0.00215678 6.08823437 0.98638551 0.99378318 0.45923947;
+	-5.09547532 -0.00405627 0.00215534 6.09141905 0.98640134 0.99378840 0.45932235;
+	-5.09864975 -0.00405250 0.00215390 6.09459725 0.98641713 0.99379360 0.45940514;
+	-5.10181772 -0.00404874 0.00215246 6.09776897 0.98643288 0.99379880 0.45948783;
+	-5.10497922 -0.00404500 0.00215102 6.10093422 0.98644859 0.99380398 0.45957041;
+	-5.10813425 -0.00404125 0.00214960 6.10409300 0.98646427 0.99380915 0.45965289;
+	-5.11128282 -0.00403752 0.00214817 6.10724530 0.98647991 0.99381431 0.45973527;
+	-5.11442494 -0.00403379 0.00214675 6.11039114 0.98649552 0.99381946 0.45981755;
+	-5.11756059 -0.00403008 0.00214533 6.11353051 0.98651108 0.99382459 0.45989972;
+	-5.12068979 -0.00402637 0.00214392 6.11666343 0.98652662 0.99382971 0.45998178;
+	-5.12381254 -0.00402266 0.00214251 6.11978988 0.98654211 0.99383483 0.46006373;
+	-5.12692884 -0.00401897 0.00214110 6.12290987 0.98655757 0.99383993 0.46014558;
+	-5.13003869 -0.00401528 0.00213970 6.12602341 0.98657300 0.99384502 0.46022732;
+	-5.13314210 -0.00401160 0.00213831 6.12913050 0.98658838 0.99385010 0.46030896;
+	-5.13623906 -0.00400792 0.00213691 6.13223114 0.98660374 0.99385516 0.46039048;
+	-5.13932959 -0.00400426 0.00213552 6.13532533 0.98661906 0.99386022 0.46047189;
+	-5.14241368 -0.00400060 0.00213413 6.13841308 0.98663434 0.99386527 0.46055319;
+	-5.14549135 -0.00399695 0.00213275 6.14149440 0.98664959 0.99387030 0.46063438;
+	-5.14856258 -0.00399330 0.00213137 6.14456928 0.98666480 0.99387532 0.46071546;
+	-5.15162739 -0.00398967 0.00213000 6.14763772 0.98667998 0.99388034 0.46079643;
+	-5.15468577 -0.00398604 0.00212862 6.15069974 0.98669512 0.99388534 0.46087728;
+	-5.15773774 -0.00398241 0.00212725 6.15375533 0.98671023 0.99389033 0.46095802;
+	-5.16078329 -0.00397880 0.00212589 6.15680449 0.98672531 0.99389532 0.46103864;
+	-5.16382243 -0.00397519 0.00212453 6.15984724 0.98674035 0.99390029 0.46111915;
+	-5.16685516 -0.00397159 0.00212317 6.16288358 0.98675535 0.99390525 0.46119954;
+	-5.16988149 -0.00396799 0.00212181 6.16591350 0.98677033 0.99391020 0.46127982;
+	-5.17290141 -0.00396440 0.00212046 6.16893701 0.98678527 0.99391514 0.46135997;
+	-5.17591494 -0.00396082 0.00211911 6.17195412 0.98680017 0.99392007 0.46144001;
+	-5.17892208 -0.00395724 0.00211776 6.17496483 0.98681505 0.99392499 0.46151994;
+	-5.18192282 -0.00395368 0.00211642 6.17796914 0.98682989 0.99392990 0.46159974;
+	-5.18491718 -0.00395011 0.00211508 6.18096706 0.98684470 0.99393481 0.46167943;
+	-5.18790516 -0.00394656 0.00211374 6.18395860 0.98685947 0.99393970 0.46175899;
+	-5.19088675 -0.00394301 0.00211241 6.18694374 0.98687421 0.99394458 0.46183843;
+	-5.19386198 -0.00393947 0.00211108 6.18992251 0.98688892 0.99394945 0.46191776;
+	-5.19683083 -0.00393593 0.00210975 6.19289490 0.98690360 0.99395432 0.46199696;
+	-5.19979332 -0.00393241 0.00210843 6.19586092 0.98691824 0.99395917 0.46207604;
+	-5.20274945 -0.00392888 0.00210710 6.19882057 0.98693285 0.99396401 0.46215500;
+	-5.20569922 -0.00392537 0.00210578 6.20177385 0.98694743 0.99396885 0.46223383;
+	-5.20864264 -0.00392186 0.00210447 6.20472078 0.98696198 0.99397367 0.46231254;
+	-5.21157971 -0.00391835 0.00210315 6.20766135 0.98697650 0.99397849 0.46239113;
+	-5.21451043 -0.00391486 0.00210184 6.21059558 0.98699098 0.99398330 0.46246959;
+	-5.21743482 -0.00391137 0.00210054 6.21352345 0.98700544 0.99398810 0.46254793;
+	-5.22035287 -0.00390788 0.00209923 6.21644499 0.98701986 0.99399289 0.46262614;
+	-5.22326459 -0.00390440 0.00209793 6.21936019 0.98703425 0.99399767 0.46270423;
+	-5.22616999 -0.00390093 0.00209663 6.22226905 0.98704861 0.99400244 0.46278219;
+	-5.22906906 -0.00389747 0.00209533 6.22517159 0.98706294 0.99400720 0.46286003;
+	-5.23196182 -0.00389401 0.00209404 6.22806781 0.98707724 0.99401196 0.46293774;
+	-5.23484826 -0.00389055 0.00209274 6.23095771 0.98709151 0.99401670 0.46301532;
+	-5.23772840 -0.00388711 0.00209145 6.23384129 0.98710574 0.99402144 0.46309277;
+	-5.24060224 -0.00388366 0.00209017 6.23671857 0.98711995 0.99402617 0.46317009;
+	-5.24346978 -0.00388023 0.00208888 6.23958955 0.98713413 0.99403089 0.46324729;
+	-5.24633103 -0.00387680 0.00208760 6.24245423 0.98714827 0.99403560 0.46332436;
+	-5.24918599 -0.00387338 0.00208632 6.24531261 0.98716239 0.99404030 0.46340129;
+	-5.25203467 -0.00386996 0.00208504 6.24816471 0.98717648 0.99404500 0.46347810;
+	-5.25487707 -0.00386655 0.00208377 6.25101053 0.98719053 0.99404969 0.46355478;
+	-5.25771320 -0.00386314 0.00208250 6.25385007 0.98720456 0.99405436 0.46363133;
+	-5.26054307 -0.00385974 0.00208123 6.25668333 0.98721856 0.99405904 0.46370775;
+	-5.26336668 -0.00385634 0.00207996 6.25951033 0.98723253 0.99406370 0.46378403;
+	-5.26618402 -0.00385295 0.00207869 6.26233107 0.98724646 0.99406835 0.46386019;
+	-5.26899512 -0.00384957 0.00207743 6.26514555 0.98726037 0.99407300 0.46393621;
+	-5.27179998 -0.00384619 0.00207617 6.26795379 0.98727425 0.99407764 0.46401210;
+	-5.27459860 -0.00384282 0.00207491 6.27075577 0.98728810 0.99408227 0.46408786;
+	-5.27739098 -0.00383945 0.00207365 6.27355152 0.98730193 0.99408689 0.46416348;
+	-5.28017713 -0.00383609 0.00207240 6.27634104 0.98731572 0.99409151 0.46423898;
+	-5.28295706 -0.00383274 0.00207115 6.27912432 0.98732949 0.99409612 0.46431433;
+	-5.28573078 -0.00382939 0.00206989 6.28190139 0.98734322 0.99410072 0.46438956;
+	-5.28849828 -0.00382604 0.00206865 6.28467224 0.98735693 0.99410531 0.46446465;
+	-5.29125958 -0.00382271 0.00206740 6.28743687 0.98737061 0.99410989 0.46453961;
+	-5.29401468 -0.00381937 0.00206616 6.29019530 0.98738426 0.99411447 0.46461443;
+	-5.29676358 -0.00381604 0.00206491 6.29294754 0.98739789 0.99411904 0.46468912;
+	-5.29950630 -0.00381272 0.00206367 6.29569358 0.98741148 0.99412361 0.46476368;
+	-5.30224283 -0.00380940 0.00206243 6.29843343 0.98742505 0.99412816 0.46483809;
+	-5.30497319 -0.00380609 0.00206120 6.30116710 0.98743859 0.99413271 0.46491238;
+	-5.30769738 -0.00380279 0.00205996 6.30389459 0.98745210 0.99413725 0.46498652;
+	-5.31041540 -0.00379948 0.00205873 6.30661592 0.98746559 0.99414179 0.46506054;
+	-5.31312727 -0.00379619 0.00205750 6.30933108 0.98747905 0.99414631 0.46513441;
+	-5.31583299 -0.00379290 0.00205627 6.31204009 0.98749248 0.99415083 0.46520815;
+	-5.31853255 -0.00378961 0.00205504 6.31474294 0.98750588 0.99415535 0.46528175;
+	-5.32122598 -0.00378633 0.00205382 6.31743965 0.98751926 0.99415985 0.46535522;
+	-5.32391328 -0.00378306 0.00205259 6.32013023 0.98753261 0.99416435 0.46542855;
+	-5.32659445 -0.00377979 0.00205137 6.32281466 0.98754593 0.99416884 0.46550174;
+	-5.32926950 -0.00377652 0.00205015 6.32549298 0.98755923 0.99417333 0.46557479;
+	-5.33193843 -0.00377326 0.00204893 6.32816517 0.98757249 0.99417781 0.46564771;
+	-5.33460126 -0.00377000 0.00204772 6.33083125 0.98758574 0.99418228 0.46572049;
+	-5.33725798 -0.00376675 0.00204650 6.33349123 0.98759895 0.99418674 0.46579313;
+	-5.33990861 -0.00376351 0.00204529 6.33614511 0.98761214 0.99419120 0.46586563;
+	-5.34255316 -0.00376027 0.00204408 6.33879289 0.98762531 0.99419565 0.46593799;
+	-5.34519162 -0.00375703 0.00204287 6.34143458 0.98763844 0.99420010 0.46601022;
+	-5.34782400 -0.00375380 0.00204166 6.34407020 0.98765155 0.99420454 0.46608230;
+	-5.35045032 -0.00375058 0.00204045 6.34669974 0.98766464 0.99420897 0.46615425;
+	-5.35307057 -0.00374736 0.00203925 6.34932321 0.98767770 0.99421340 0.46622606;
+	-5.35568477 -0.00374414 0.00203804 6.35194063 0.98769073 0.99421781 0.46629773;
+	-5.35829292 -0.00374093 0.00203684 6.35455199 0.98770374 0.99422223 0.46636926;
+	-5.36089503 -0.00373773 0.00203564 6.35715730 0.98771672 0.99422663 0.46644065;
+	-5.36349110 -0.00373453 0.00203444 6.35975657 0.98772968 0.99423103 0.46651190;
+	-5.36608114 -0.00373133 0.00203324 6.36234981 0.98774261 0.99423543 0.46658301;
+	-5.36866517 -0.00372814 0.00203205 6.36493703 0.98775552 0.99423982 0.46665398;
+	-5.37124318 -0.00372495 0.00203085 6.36751823 0.98776840 0.99424420 0.46672482;
+	-5.37381518 -0.00372177 0.00202966 6.37009341 0.98778125 0.99424857 0.46679551;
+	-5.37638118 -0.00371859 0.00202847 6.37266259 0.98779408 0.99425294 0.46686606;
+	-5.37894119 -0.00371542 0.00202728 6.37522577 0.98780689 0.99425730 0.46693647;
+	-5.38149521 -0.00371225 0.00202609 6.37778296 0.98781967 0.99426166 0.46700674;
+	-5.38404325 -0.00370909 0.00202490 6.38033416 0.98783243 0.99426601 0.46707687;
+	-5.38658532 -0.00370593 0.00202371 6.38287939 0.98784516 0.99427036 0.46714686;
+	-5.38912142 -0.00370278 0.00202253 6.38541865 0.98785786 0.99427470 0.46721671;
+	-5.39165157 -0.00369963 0.00202134 6.38795194 0.98787055 0.99427903 0.46728642;
+	-5.39417576 -0.00369648 0.00202016 6.39047928 0.98788320 0.99428336 0.46735598;
+	-5.39669401 -0.00369334 0.00201898 6.39300067 0.98789584 0.99428768 0.46742541;
+	-5.39920633 -0.00369021 0.00201780 6.39551612 0.98790845 0.99429200 0.46749470;
+	-5.40171272 -0.00368707 0.00201662 6.39802564 0.98792103 0.99429631 0.46756384;
+	-5.40421318 -0.00368395 0.00201544 6.40052923 0.98793359 0.99430061 0.46763284;
+	-5.40670773 -0.00368082 0.00201427 6.40302690 0.98794613 0.99430491 0.46770170;
+	-5.40919637 -0.00367771 0.00201309 6.40551867 0.98795864 0.99430920 0.46777042;
+	-5.41167912 -0.00367459 0.00201192 6.40800452 0.98797113 0.99431349 0.46783900;
+	-5.41415597 -0.00367148 0.00201075 6.41048448 0.98798360 0.99431777 0.46790744;
+	-5.41662693 -0.00366838 0.00200957 6.41295855 0.98799604 0.99432205 0.46797574;
+	-5.41909202 -0.00366528 0.00200840 6.41542674 0.98800846 0.99432632 0.46804389;
+	-5.42155124 -0.00366218 0.00200724 6.41788906 0.98802085 0.99433058 0.46811190;
+	-5.42400460 -0.00365909 0.00200607 6.42034551 0.98803323 0.99433484 0.46817978;
+	-5.42645210 -0.00365600 0.00200490 6.42279610 0.98804557 0.99433910 0.46824751;
+	-5.42889376 -0.00365292 0.00200374 6.42524084 0.98805790 0.99434334 0.46831509;
+	-5.43132958 -0.00364984 0.00200257 6.42767973 0.98807020 0.99434759 0.46838254;
+	-5.43375956 -0.00364677 0.00200141 6.43011279 0.98808248 0.99435183 0.46844985;
+	-5.43618372 -0.00364370 0.00200024 6.43254002 0.98809474 0.99435606 0.46851701;
+	-5.43860207 -0.00364063 0.00199908 6.43496143 0.98810697 0.99436029 0.46858403;
+	-5.44101460 -0.00363757 0.00199792 6.43737703 0.98811918 0.99436451 0.46865091;
+	-5.44342134 -0.00363451 0.00199676 6.43978683 0.98813137 0.99436872 0.46871765;
+	-5.44582228 -0.00363146 0.00199561 6.44219082 0.98814353 0.99437294 0.46878424;
+	-5.44821744 -0.00362841 0.00199445 6.44458903 0.98815567 0.99437714 0.46885070;
+	-5.45060682 -0.00362536 0.00199329 6.44698145 0.98816779 0.99438134 0.46891701;
+	-5.45299043 -0.00362232 0.00199214 6.44936811 0.98817989 0.99438554 0.46898318;
+	-5.45536828 -0.00361929 0.00199098 6.45174899 0.98819196 0.99438973 0.46904921;
+	-5.45774037 -0.00361625 0.00198983 6.45412412 0.98820402 0.99439392 0.46911510;
+	-5.46010672 -0.00361323 0.00198868 6.45649350 0.98821605 0.99439810 0.46918084;
+	-5.46246734 -0.00361020 0.00198753 6.45885714 0.98822805 0.99440227 0.46924645;
+	-5.46482222 -0.00360718 0.00198638 6.46121504 0.98824004 0.99440644 0.46931191;
+	-5.46717138 -0.00360417 0.00198523 6.46356722 0.98825200 0.99441061 0.46937723;
+	-5.46951483 -0.00360115 0.00198408 6.46591367 0.98826395 0.99441477 0.46944241;
+	-5.47185257 -0.00359814 0.00198293 6.46825442 0.98827587 0.99441892 0.46950744;
+	-5.47418461 -0.00359514 0.00198178 6.47058947 0.98828776 0.99442308 0.46957234;
+	-5.47651097 -0.00359214 0.00198064 6.47291883 0.98829964 0.99442722 0.46963709;
+	-5.47883164 -0.00358914 0.00197949 6.47524250 0.98831150 0.99443136 0.46970170;
+	-5.48114664 -0.00358615 0.00197835 6.47756049 0.98832333 0.99443550 0.46976617;
+	-5.48345598 -0.00358316 0.00197721 6.47987281 0.98833514 0.99443963 0.46983050;
+	-5.48575966 -0.00358018 0.00197606 6.48217948 0.98834693 0.99444376 0.46989469;
+	-5.48805769 -0.00357720 0.00197492 6.48448049 0.98835870 0.99444788 0.46995873;
+	-5.49035007 -0.00357422 0.00197378 6.48677585 0.98837045 0.99445200 0.47002264;
+	-5.49263683 -0.00357125 0.00197264 6.48906558 0.98838217 0.99445611 0.47008640;
+	-5.49491797 -0.00356828 0.00197150 6.49134968 0.98839388 0.99446022 0.47015002;
+	-5.49719348 -0.00356532 0.00197036 6.49362817 0.98840556 0.99446432 0.47021350;
+	-5.49946339 -0.00356236 0.00196923 6.49590104 0.98841723 0.99446842 0.47027684;
+	-5.50172771 -0.00355940 0.00196809 6.49816831 0.98842887 0.99447251 0.47034004;
+	-5.50398643 -0.00355645 0.00196695 6.50042998 0.98844049 0.99447660 0.47040310;
+	-5.50623957 -0.00355350 0.00196582 6.50268607 0.98845209 0.99448068 0.47046602;
+	-5.50848713 -0.00355055 0.00196468 6.50493658 0.98846367 0.99448476 0.47052879;
+	-5.51072913 -0.00354761 0.00196355 6.50718152 0.98847523 0.99448884 0.47059143;
+	-5.51296557 -0.00354467 0.00196242 6.50942090 0.98848677 0.99449291 0.47065392;
+	-5.51519647 -0.00354174 0.00196129 6.51165473 0.98849828 0.99449698 0.47071627;
+	-5.51742182 -0.00353881 0.00196016 6.51388301 0.98850978 0.99450104 0.47077849;
+	-5.51964164 -0.00353588 0.00195902 6.51610576 0.98852126 0.99450510 0.47084056;
+	-5.52185594 -0.00353296 0.00195789 6.51832298 0.98853271 0.99450915 0.47090249;
+	-5.52406473 -0.00353004 0.00195677 6.52053469 0.98854415 0.99451320 0.47096428;
+	-5.52626800 -0.00352712 0.00195564 6.52274088 0.98855556 0.99451724 0.47102593;
+	-5.52846578 -0.00352421 0.00195451 6.52494157 0.98856696 0.99452128 0.47108744;
+	-5.53065808 -0.00352130 0.00195338 6.52713677 0.98857834 0.99452532 0.47114881;
+	-5.53284489 -0.00351840 0.00195226 6.52932649 0.98858969 0.99452935 0.47121004;
+	-5.53502623 -0.00351550 0.00195113 6.53151073 0.98860103 0.99453337 0.47127113;
+	-5.53720210 -0.00351260 0.00195001 6.53368950 0.98861234 0.99453740 0.47133208;
+	-5.53937252 -0.00350971 0.00194888 6.53586282 0.98862364 0.99454141 0.47139289;
+	-5.54153750 -0.00350682 0.00194776 6.53803068 0.98863491 0.99454543 0.47145356;
+	-5.54369704 -0.00350393 0.00194663 6.54019311 0.98864617 0.99454944 0.47151409;
+	-5.54585115 -0.00350105 0.00194551 6.54235010 0.98865740 0.99455344 0.47157449;
+	-5.54799984 -0.00349817 0.00194439 6.54450167 0.98866862 0.99455744 0.47163474;
+	-5.55014311 -0.00349529 0.00194327 6.54664782 0.98867982 0.99456144 0.47169485;
+	-5.55228099 -0.00349242 0.00194215 6.54878857 0.98869099 0.99456543 0.47175483;
+	-5.55441347 -0.00348955 0.00194103 6.55092392 0.98870215 0.99456942 0.47181466;
+	-5.55654057 -0.00348669 0.00193991 6.55305388 0.98871329 0.99457340 0.47187436;
+	-5.55866229 -0.00348383 0.00193879 6.55517846 0.98872441 0.99457738 0.47193391;
+	-5.56077864 -0.00348097 0.00193767 6.55729767 0.98873551 0.99458136 0.47199333;
+	-5.56288964 -0.00347811 0.00193655 6.55941152 0.98874659 0.99458533 0.47205261;
+	-5.56499528 -0.00347526 0.00193544 6.56152002 0.98875765 0.99458930 0.47211176;
+	-5.56709558 -0.00347242 0.00193432 6.56362317 0.98876869 0.99459326 0.47217076;
+	-5.56919055 -0.00346957 0.00193321 6.56572098 0.98877972 0.99459722 0.47222962;
+	-5.57128020 -0.00346673 0.00193209 6.56781347 0.98879072 0.99460118 0.47228835;
+	-5.57336453 -0.00346390 0.00193098 6.56990064 0.98880171 0.99460513 0.47234694;
+	-5.57544356 -0.00346106 0.00192986 6.57198250 0.98881267 0.99460907 0.47240539;
+	-5.57751729 -0.00345823 0.00192875 6.57405906 0.98882362 0.99461302 0.47246371;
+	-5.57958573 -0.00345541 0.00192764 6.57613032 0.98883455 0.99461696 0.47252188;
+	-5.58164889 -0.00345259 0.00192652 6.57819631 0.98884546 0.99462089 0.47257992;
+	-5.58370679 -0.00344977 0.00192541 6.58025702 0.98885635 0.99462482 0.47263782;
+	-5.58575942 -0.00344695 0.00192430 6.58231247 0.98886722 0.99462875 0.47269559;
+	-5.58780679 -0.00344414 0.00192319 6.58436266 0.98887808 0.99463267 0.47275321;
+	-5.58984893 -0.00344133 0.00192208 6.58640760 0.98888891 0.99463659 0.47281070;
+	-5.59188583 -0.00343852 0.00192097 6.58844731 0.98889973 0.99464051 0.47286806;
+	-5.59391750 -0.00343572 0.00191986 6.59048178 0.98891053 0.99464442 0.47292528;
+	-5.59594396 -0.00343292 0.00191875 6.59251104 0.98892131 0.99464833 0.47298236;
+	-5.59796521 -0.00343013 0.00191764 6.59453508 0.98893207 0.99465223 0.47303930;
+	-5.59998126 -0.00342733 0.00191653 6.59655393 0.98894281 0.99465613 0.47309611;
+	-5.60199212 -0.00342455 0.00191543 6.59856758 0.98895354 0.99466003 0.47315278;
+	-5.60399781 -0.00342176 0.00191432 6.60057605 0.98896425 0.99466392 0.47320932;
+	-5.60599831 -0.00341898 0.00191321 6.60257934 0.98897493 0.99466781 0.47326572;
+	-5.60799366 -0.00341620 0.00191211 6.60457746 0.98898561 0.99467169 0.47332198;
+	-5.60998385 -0.00341342 0.00191100 6.60657043 0.98899626 0.99467557 0.47337811;
+	-5.61196890 -0.00341065 0.00190990 6.60855825 0.98900689 0.99467945 0.47343411;
+	-5.61394881 -0.00340788 0.00190879 6.61054093 0.98901751 0.99468332 0.47348997;
+	-5.61592360 -0.00340512 0.00190769 6.61251848 0.98902811 0.99468719 0.47354569;
+	-5.61789327 -0.00340235 0.00190659 6.61449091 0.98903869 0.99469106 0.47360128;
+	-5.61985783 -0.00339960 0.00190548 6.61645823 0.98904926 0.99469492 0.47365674;
+	-5.62181729 -0.00339684 0.00190438 6.61842045 0.98905980 0.99469878 0.47371206;
+	-5.62377166 -0.00339409 0.00190328 6.62037757 0.98907033 0.99470263 0.47376724;
+	-5.62572095 -0.00339134 0.00190218 6.62232961 0.98908084 0.99470648 0.47382230;
+	-5.62766517 -0.00338859 0.00190108 6.62427658 0.98909133 0.99471033 0.47387721;
+	-5.62960432 -0.00338585 0.00189998 6.62621847 0.98910181 0.99471417 0.47393200;
+	-5.63153842 -0.00338311 0.00189888 6.62815531 0.98911227 0.99471801 0.47398665;
+	-5.63346748 -0.00338037 0.00189778 6.63008711 0.98912271 0.99472185 0.47404117;
+	-5.63539150 -0.00337764 0.00189668 6.63201386 0.98913313 0.99472568 0.47409555;
+	-5.63731050 -0.00337491 0.00189558 6.63393558 0.98914354 0.99472951 0.47414980;
+	-5.63922447 -0.00337218 0.00189448 6.63585229 0.98915393 0.99473333 0.47420392;
+	-5.64113344 -0.00336946 0.00189338 6.63776398 0.98916430 0.99473716 0.47425791;
+	-5.64303741 -0.00336674 0.00189229 6.63967067 0.98917466 0.99474097 0.47431176;
+	-5.64493639 -0.00336402 0.00189119 6.64157237 0.98918499 0.99474479 0.47436548;
+	-5.64683039 -0.00336131 0.00189009 6.64346908 0.98919531 0.99474860 0.47441907;
+	-5.64871942 -0.00335860 0.00188899 6.64536082 0.98920562 0.99475241 0.47447252;
+	-5.65060348 -0.00335589 0.00188790 6.64724759 0.98921590 0.99475621 0.47452585;
+	-5.65248259 -0.00335319 0.00188680 6.64912941 0.98922617 0.99476001 0.47457904;
+	-5.65435676 -0.00335049 0.00188571 6.65100628 0.98923642 0.99476381 0.47463210;
+	-5.65622600 -0.00334779 0.00188461 6.65287821 0.98924666 0.99476760 0.47468503;
+	-5.65809030 -0.00334509 0.00188352 6.65474521 0.98925688 0.99477139 0.47473783;
+	-5.65994970 -0.00334240 0.00188243 6.65660729 0.98926708 0.99477517 0.47479050;
+	-5.66180418 -0.00333971 0.00188133 6.65846447 0.98927727 0.99477896 0.47484303;
+	-5.66365377 -0.00333703 0.00188024 6.66031674 0.98928744 0.99478273 0.47489544;
+	-5.66549846 -0.00333434 0.00187915 6.66216412 0.98929759 0.99478651 0.47494772;
+	-5.66733828 -0.00333166 0.00187805 6.66400662 0.98930772 0.99479028 0.47499986;
+	-5.66917323 -0.00332899 0.00187696 6.66584424 0.98931784 0.99479405 0.47505187;
+	-5.67100331 -0.00332631 0.00187587 6.66767700 0.98932794 0.99479781 0.47510376;
+	-5.67282855 -0.00332364 0.00187478 6.66950490 0.98933803 0.99480158 0.47515552;
+	-5.67464894 -0.00332098 0.00187369 6.67132796 0.98934810 0.99480533 0.47520714;
+	-5.67646450 -0.00331831 0.00187260 6.67314618 0.98935815 0.99480909 0.47525864;
+	-5.67827523 -0.00331565 0.00187151 6.67495958 0.98936819 0.99481284 0.47531001;
+	-5.68008115 -0.00331299 0.00187042 6.67676816 0.98937821 0.99481659 0.47536125;
+	-5.68188226 -0.00331034 0.00186933 6.67857192 0.98938821 0.99482033 0.47541236;
+	-5.68367858 -0.00330769 0.00186824 6.68037089 0.98939820 0.99482407 0.47546334;
+	-5.68547011 -0.00330504 0.00186715 6.68216507 0.98940817 0.99482781 0.47551419;
+	-5.68725686 -0.00330239 0.00186606 6.68395447 0.98941813 0.99483154 0.47556492;
+	-5.68903884 -0.00329975 0.00186498 6.68573909 0.98942807 0.99483527 0.47561551;
+	-5.69081606 -0.00329711 0.00186389 6.68751895 0.98943799 0.99483900 0.47566598;
+	-5.69258853 -0.00329447 0.00186280 6.68929406 0.98944790 0.99484272 0.47571632;
+	-5.69435627 -0.00329184 0.00186172 6.69106443 0.98945779 0.99484644 0.47576654;
+	-5.69611926 -0.00328921 0.00186063 6.69283005 0.98946767 0.99485016 0.47581663;
+	-5.69787754 -0.00328658 0.00185954 6.69459096 0.98947753 0.99485388 0.47586659;
+	-5.69963110 -0.00328396 0.00185846 6.69634715 0.98948737 0.99485759 0.47591642;
+	-5.70137996 -0.00328133 0.00185737 6.69809863 0.98949720 0.99486129 0.47596613;
+	-5.70312413 -0.00327872 0.00185629 6.69984541 0.98950701 0.99486500 0.47601571;
+	-5.70486360 -0.00327610 0.00185520 6.70158750 0.98951681 0.99486870 0.47606516;
+	-5.70659840 -0.00327349 0.00185412 6.70332492 0.98952659 0.99487239 0.47611449;
+	-5.70832854 -0.00327088 0.00185304 6.70505766 0.98953636 0.99487609 0.47616370;
+	-5.71005402 -0.00326827 0.00185195 6.70678575 0.98954611 0.99487978 0.47621277;
+	-5.71177484 -0.00326567 0.00185087 6.70850918 0.98955584 0.99488347 0.47626172;
+	-5.71349103 -0.00326306 0.00184979 6.71022797 0.98956556 0.99488715 0.47631055;
+	-5.71520259 -0.00326047 0.00184870 6.71194212 0.98957526 0.99489083 0.47635925;
+	-5.71690953 -0.00325787 0.00184762 6.71365166 0.98958495 0.99489451 0.47640783;
+	-5.71861185 -0.00325528 0.00184654 6.71535658 0.98959462 0.99489818 0.47645628;
+	-5.72030958 -0.00325269 0.00184546 6.71705689 0.98960428 0.99490185 0.47650461;
+	-5.72200271 -0.00325010 0.00184438 6.71875261 0.98961392 0.99490552 0.47655282;
+	-5.72369126 -0.00324752 0.00184330 6.72044374 0.98962355 0.99490918 0.47660090;
+	-5.72537523 -0.00324494 0.00184222 6.72213029 0.98963316 0.99491284 0.47664886;
+	-5.72705463 -0.00324236 0.00184114 6.72381227 0.98964276 0.99491650 0.47669669;
+	-5.72872948 -0.00323979 0.00184006 6.72548970 0.98965234 0.99492016 0.47674440;
+	-5.73039979 -0.00323721 0.00183898 6.72716257 0.98966190 0.99492381 0.47679198;
+	-5.73206555 -0.00323464 0.00183790 6.72883091 0.98967145 0.99492746 0.47683945;
+	-5.73372679 -0.00323208 0.00183682 6.73049471 0.98968099 0.99493110 0.47688679;
+	-5.73538351 -0.00322952 0.00183574 6.73215399 0.98969051 0.99493474 0.47693401;
+	-5.73703572 -0.00322695 0.00183466 6.73380876 0.98970002 0.99493838 0.47698111;
+	-5.73868343 -0.00322440 0.00183359 6.73545903 0.98970951 0.99494202 0.47702808;
+	-5.74032664 -0.00322184 0.00183251 6.73710480 0.98971898 0.99494565 0.47707494;
+	-5.74196538 -0.00321929 0.00183143 6.73874609 0.98972844 0.99494928 0.47712167;
+	-5.74359964 -0.00321674 0.00183036 6.74038290 0.98973789 0.99495290 0.47716828;
+	-5.74522943 -0.00321419 0.00182928 6.74201524 0.98974732 0.99495653 0.47721477;
+	-5.74685478 -0.00321165 0.00182820 6.74364312 0.98975674 0.99496014 0.47726113;
+	-5.74847567 -0.00320911 0.00182713 6.74526656 0.98976614 0.99496376 0.47730738;
+	-5.75009213 -0.00320657 0.00182605 6.74688556 0.98977552 0.99496737 0.47735351;
+	-5.75170417 -0.00320404 0.00182498 6.74850013 0.98978490 0.99497098 0.47739952;
+	-5.75331179 -0.00320151 0.00182390 6.75011028 0.98979425 0.99497459 0.47744540;
+	-5.75491499 -0.00319898 0.00182283 6.75171602 0.98980360 0.99497819 0.47749117;
+	-5.75651380 -0.00319645 0.00182176 6.75331735 0.98981293 0.99498179 0.47753682;
+	-5.75810822 -0.00319393 0.00182068 6.75491429 0.98982224 0.99498539 0.47758234;
+	-5.75969826 -0.00319141 0.00181961 6.75650685 0.98983154 0.99498899 0.47762775;
+	-5.76128392 -0.00318889 0.00181854 6.75809504 0.98984082 0.99499258 0.47767304;
+	-5.76286523 -0.00318637 0.00181746 6.75967886 0.98985009 0.99499616 0.47771821;
+	-5.76444218 -0.00318386 0.00181639 6.76125832 0.98985935 0.99499975 0.47776327;
+	-5.76601479 -0.00318135 0.00181532 6.76283343 0.98986859 0.99500333 0.47780820;
+	-5.76758306 -0.00317884 0.00181425 6.76440421 0.98987782 0.99500691 0.47785302;
+	-5.76914700 -0.00317634 0.00181318 6.76597066 0.98988703 0.99501049 0.47789772;
+	-5.77070663 -0.00317384 0.00181210 6.76753279 0.98989623 0.99501406 0.47794230;
+	-5.77226195 -0.00317134 0.00181103 6.76909061 0.98990542 0.99501763 0.47798676;
+	-5.77381298 -0.00316884 0.00180996 6.77064413 0.98991459 0.99502119 0.47803110;
+	-5.77535971 -0.00316635 0.00180889 6.77219336 0.98992374 0.99502476 0.47807533;
+	-5.77690216 -0.00316386 0.00180782 6.77373830 0.98993289 0.99502832 0.47811945;
+	-5.77844035 -0.00316137 0.00180675 6.77527898 0.98994201 0.99503187 0.47816344;
+	-5.77997427 -0.00315889 0.00180569 6.77681538 0.98995113 0.99503543 0.47820732;
+	-5.78150394 -0.00315640 0.00180462 6.77834753 0.98996023 0.99503898 0.47825108;
+	-5.78302936 -0.00315393 0.00180355 6.77987544 0.98996931 0.99504253 0.47829473;
+	-5.78455056 -0.00315145 0.00180248 6.78139911 0.98997839 0.99504607 0.47833826;
+	-5.78606752 -0.00314897 0.00180141 6.78291855 0.98998744 0.99504961 0.47838168;
+	-5.78758027 -0.00314650 0.00180035 6.78443377 0.98999649 0.99505315 0.47842498;
+	-5.78908882 -0.00314403 0.00179928 6.78594478 0.99000552 0.99505669 0.47846816;
+	-5.79059316 -0.00314157 0.00179821 6.78745159 0.99001453 0.99506022 0.47851123;
+	-5.79209332 -0.00313911 0.00179715 6.78895421 0.99002354 0.99506375 0.47855419;
+	-5.79358930 -0.00313665 0.00179608 6.79045265 0.99003253 0.99506727 0.47859703;
+	-5.79508110 -0.00313419 0.00179501 6.79194692 0.99004150 0.99507080 0.47863976;
+	-5.79656875 -0.00313173 0.00179395 6.79343702 0.99005046 0.99507432 0.47868238;
+	-5.79805224 -0.00312928 0.00179288 6.79492296 0.99005941 0.99507784 0.47872487;
+	-5.79953159 -0.00312683 0.00179182 6.79640476 0.99006834 0.99508135 0.47876726;
+	-5.80100681 -0.00312438 0.00179075 6.79788243 0.99007726 0.99508486 0.47880954;
+	-5.80247790 -0.00312194 0.00178969 6.79935596 0.99008617 0.99508837 0.47885170;
+	-5.80394487 -0.00311950 0.00178863 6.80082538 0.99009506 0.99509187 0.47889374;
+	-5.80540774 -0.00311706 0.00178756 6.80229068 0.99010394 0.99509538 0.47893568;
+	-5.80686651 -0.00311462 0.00178650 6.80375189 0.99011281 0.99509888 0.47897750;
+	-5.80832119 -0.00311219 0.00178544 6.80520900 0.99012166 0.99510237 0.47901921;
+	-5.80977179 -0.00310976 0.00178438 6.80666204 0.99013050 0.99510587 0.47906081;
+	-5.81121832 -0.00310733 0.00178331 6.80811099 0.99013933 0.99510936 0.47910230;
+	-5.81266079 -0.00310490 0.00178225 6.80955589 0.99014814 0.99511284 0.47914367;
+	-5.81409921 -0.00310248 0.00178119 6.81099673 0.99015694 0.99511633 0.47918494;
+	-5.81553358 -0.00310006 0.00178013 6.81243352 0.99016573 0.99511981 0.47922609;
+	-5.81696392 -0.00309764 0.00177907 6.81386627 0.99017450 0.99512329 0.47926714;
+	-5.81839023 -0.00309523 0.00177801 6.81529500 0.99018326 0.99512676 0.47930807;
+	-5.81981252 -0.00309282 0.00177695 6.81671970 0.99019200 0.99513024 0.47934889;
+	-5.82123081 -0.00309041 0.00177589 6.81814040 0.99020074 0.99513370 0.47938960;
+	-5.82264509 -0.00308800 0.00177483 6.81955709 0.99020946 0.99513717 0.47943020;
+	-5.82405539 -0.00308560 0.00177377 6.82096980 0.99021816 0.99514063 0.47947070;
+	-5.82546171 -0.00308319 0.00177271 6.82237851 0.99022686 0.99514410 0.47951108;
+	-5.82686405 -0.00308079 0.00177165 6.82378326 0.99023554 0.99514755 0.47955135;
+	-5.82826243 -0.00307840 0.00177059 6.82518403 0.99024421 0.99515101 0.47959152;
+	-5.82965686 -0.00307600 0.00176954 6.82658086 0.99025286 0.99515446 0.47963157;
+	-5.83104734 -0.00307361 0.00176848 6.82797373 0.99026150 0.99515791 0.47967152;
+	-5.83243389 -0.00307122 0.00176742 6.82936266 0.99027013 0.99516135 0.47971136;
+	-5.83381650 -0.00306884 0.00176637 6.83074767 0.99027875 0.99516480 0.47975109;
+	-5.83519520 -0.00306645 0.00176531 6.83212875 0.99028735 0.99516824 0.47979072;
+	-5.83656999 -0.00306407 0.00176425 6.83350592 0.99029594 0.99517167 0.47983023;
+	-5.83794088 -0.00306169 0.00176320 6.83487918 0.99030451 0.99517511 0.47986964;
+	-5.83930788 -0.00305932 0.00176214 6.83624856 0.99031308 0.99517854 0.47990894;
+	-5.84067099 -0.00305695 0.00176109 6.83761404 0.99032163 0.99518197 0.47994814;
+	-5.84203023 -0.00305458 0.00176003 6.83897565 0.99033017 0.99518539 0.47998722;
+	-5.84338560 -0.00305221 0.00175898 6.84033340 0.99033869 0.99518881 0.48002620;
+	-5.84473712 -0.00304984 0.00175793 6.84168728 0.99034721 0.99519223 0.48006508;
+	-5.84608479 -0.00304748 0.00175687 6.84303731 0.99035571 0.99519565 0.48010385;
+	-5.84742862 -0.00304512 0.00175582 6.84438350 0.99036419 0.99519906 0.48014251;
+	-5.84876862 -0.00304276 0.00175477 6.84572586 0.99037267 0.99520247 0.48018107;
+	-5.85010480 -0.00304041 0.00175371 6.84706439 0.99038113 0.99520588 0.48021952;
+	-5.85143717 -0.00303805 0.00175266 6.84839911 0.99038958 0.99520929 0.48025787;
+	-5.85276573 -0.00303570 0.00175161 6.84973003 0.99039802 0.99521269 0.48029611;
+	-5.85409050 -0.00303336 0.00175056 6.85105714 0.99040644 0.99521609 0.48033425;
+	-5.85541148 -0.00303101 0.00174951 6.85238047 0.99041485 0.99521948 0.48037228;
+	-5.85672868 -0.00302867 0.00174846 6.85370002 0.99042325 0.99522288 0.48041021;
+	-5.85804212 -0.00302633 0.00174741 6.85501579 0.99043164 0.99522627 0.48044803;
+	-5.85935180 -0.00302399 0.00174636 6.85632781 0.99044002 0.99522965 0.48048575;
+	-5.86065772 -0.00302166 0.00174531 6.85763607 0.99044838 0.99523304 0.48052337;
+	-5.86195991 -0.00301932 0.00174426 6.85894058 0.99045673 0.99523642 0.48056088;
+	-5.86325835 -0.00301699 0.00174321 6.86024136 0.99046507 0.99523980 0.48059829;
+	-5.86455308 -0.00301467 0.00174216 6.86153841 0.99047339 0.99524317 0.48063560;
+	-5.86584409 -0.00301234 0.00174111 6.86283174 0.99048171 0.99524655 0.48067281;
+	-5.86713139 -0.00301002 0.00174006 6.86412137 0.99049001 0.99524992 0.48070991;
+	-5.86841499 -0.00300770 0.00173902 6.86540729 0.99049829 0.99525328 0.48074691;
+	-5.86969490 -0.00300538 0.00173797 6.86668952 0.99050657 0.99525665 0.48078381;
+	-5.87097113 -0.00300307 0.00173692 6.86796806 0.99051483 0.99526001 0.48082060;
+	-5.87224368 -0.00300076 0.00173588 6.86924293 0.99052309 0.99526337 0.48085730;
+	-5.87351257 -0.00299845 0.00173483 6.87051413 0.99053133 0.99526672 0.48089389;
+	-5.87477781 -0.00299614 0.00173378 6.87178167 0.99053955 0.99527008 0.48093038;
+	-5.87603940 -0.00299383 0.00173274 6.87304557 0.99054777 0.99527343 0.48096678;
+	-5.87729735 -0.00299153 0.00173169 6.87430582 0.99055597 0.99527677 0.48100307;
+	-5.87855167 -0.00298923 0.00173065 6.87556244 0.99056416 0.99528012 0.48103926;
+	-5.87980237 -0.00298694 0.00172961 6.87681543 0.99057234 0.99528346 0.48107535;
+	-5.88104946 -0.00298464 0.00172856 6.87806482 0.99058051 0.99528680 0.48111134;
+	-5.88229294 -0.00298235 0.00172752 6.87931059 0.99058867 0.99529013 0.48114723;
+	-5.88353283 -0.00298006 0.00172648 6.88055277 0.99059681 0.99529347 0.48118302;
+	-5.88476913 -0.00297777 0.00172543 6.88179135 0.99060494 0.99529680 0.48121871;
+	-5.88600185 -0.00297549 0.00172439 6.88302636 0.99061306 0.99530012 0.48125430;
+	-5.88723100 -0.00297320 0.00172335 6.88425779 0.99062117 0.99530345 0.48128980;
+	-5.88845659 -0.00297093 0.00172231 6.88548566 0.99062927 0.99530677 0.48132519;
+	-5.88967862 -0.00296865 0.00172127 6.88670998 0.99063735 0.99531009 0.48136049;
+	-5.89089712 -0.00296637 0.00172022 6.88793074 0.99064542 0.99531340 0.48139569;
+	-5.89211207 -0.00296410 0.00171918 6.88914797 0.99065348 0.99531671 0.48143079;
+	-5.89332350 -0.00296183 0.00171814 6.89036167 0.99066153 0.99532002 0.48146579;
+	-5.89453141 -0.00295956 0.00171710 6.89157185 0.99066957 0.99532333 0.48150069;
+	-5.89573581 -0.00295730 0.00171607 6.89277851 0.99067760 0.99532664 0.48153550;
+	-5.89693670 -0.00295504 0.00171503 6.89398167 0.99068561 0.99532994 0.48157021;
+	-5.89813411 -0.00295278 0.00171399 6.89518133 0.99069361 0.99533324 0.48160482;
+	-5.89932802 -0.00295052 0.00171295 6.89637751 0.99070160 0.99533653 0.48163934;
+	-5.90051846 -0.00294826 0.00171191 6.89757020 0.99070958 0.99533983 0.48167376;
+	-5.90170544 -0.00294601 0.00171088 6.89875943 0.99071755 0.99534312 0.48170809;
+	-5.90288895 -0.00294376 0.00170984 6.89994519 0.99072550 0.99534640 0.48174231;
+	-5.90406901 -0.00294151 0.00170880 6.90112750 0.99073345 0.99534969 0.48177645;
+	-5.90524562 -0.00293927 0.00170777 6.90230636 0.99074138 0.99535297 0.48181048;
+	-5.90641881 -0.00293702 0.00170673 6.90348178 0.99074930 0.99535625 0.48184443;
+	-5.90758856 -0.00293478 0.00170569 6.90465378 0.99075721 0.99535952 0.48187827;
+	-5.90875490 -0.00293254 0.00170466 6.90582235 0.99076511 0.99536280 0.48191202;
+	-5.90991782 -0.00293031 0.00170363 6.90698751 0.99077300 0.99536607 0.48194568;
+	-5.91107735 -0.00292807 0.00170259 6.90814927 0.99078087 0.99536933 0.48197924;
+	-5.91223348 -0.00292584 0.00170156 6.90930763 0.99078874 0.99537260 0.48201271;
+	-5.91338622 -0.00292362 0.00170052 6.91046261 0.99079659 0.99537586 0.48204608;
+	-5.91453559 -0.00292139 0.00169949 6.91161420 0.99080443 0.99537912 0.48207936;
+	-5.91568159 -0.00291917 0.00169846 6.91276243 0.99081226 0.99538238 0.48211255;
+	-5.91682423 -0.00291694 0.00169743 6.91390729 0.99082008 0.99538563 0.48214564;
+	-5.91796352 -0.00291472 0.00169639 6.91504879 0.99082789 0.99538888 0.48217864;
+	-5.91909946 -0.00291251 0.00169536 6.91618695 0.99083569 0.99539213 0.48221155;
+	-5.92023207 -0.00291029 0.00169433 6.91732177 0.99084347 0.99539537 0.48224436;
+	-5.92136135 -0.00290808 0.00169330 6.91845327 0.99085124 0.99539862 0.48227709;
+	-5.92248731 -0.00290587 0.00169227 6.91958144 0.99085901 0.99540186 0.48230971;
+	-5.92360996 -0.00290367 0.00169124 6.92070629 0.99086676 0.99540509 0.48234225;
+	-5.92472930 -0.00290146 0.00169021 6.92182784 0.99087450 0.99540833 0.48237470;
+	-5.92584536 -0.00289926 0.00168918 6.92294610 0.99088223 0.99541156 0.48240705;
+	-5.92695812 -0.00289706 0.00168816 6.92406106 0.99088995 0.99541479 0.48243931;
+	-5.92806761 -0.00289486 0.00168713 6.92517274 0.99089766 0.99541801 0.48247148;
+	-5.92917382 -0.00289267 0.00168610 6.92628115 0.99090535 0.99542123 0.48250356;
+	-5.93027677 -0.00289047 0.00168507 6.92738630 0.99091304 0.99542445 0.48253555;
+	-5.93137647 -0.00288828 0.00168405 6.92848819 0.99092071 0.99542767 0.48256745;
+	-5.93247293 -0.00288610 0.00168302 6.92958683 0.99092837 0.99543089 0.48259926;
+	-5.93356614 -0.00288391 0.00168199 6.93068223 0.99093603 0.99543410 0.48263098;
+	-5.93465613 -0.00288173 0.00168097 6.93177440 0.99094367 0.99543731 0.48266260;
+	-5.93574289 -0.00287955 0.00167994 6.93286334 0.99095130 0.99544051 0.48269414;
+	-5.93682644 -0.00287737 0.00167892 6.93394907 0.99095892 0.99544371 0.48272559;
+	-5.93790678 -0.00287519 0.00167789 6.93503159 0.99096653 0.99544692 0.48275695;
+	-5.93898392 -0.00287302 0.00167687 6.93611091 0.99097412 0.99545011 0.48278822;
+	-5.94005788 -0.00287085 0.00167585 6.93718703 0.99098171 0.99545331 0.48281940;
+	-5.94112865 -0.00286868 0.00167482 6.93825997 0.99098929 0.99545650 0.48285049;
+	-5.94219625 -0.00286651 0.00167380 6.93932974 0.99099685 0.99545969 0.48288150;
+	-5.94326068 -0.00286435 0.00167278 6.94039634 0.99100441 0.99546288 0.48291241;
+	-5.94432196 -0.00286218 0.00167176 6.94145977 0.99101195 0.99546606 0.48294324;
+	-5.94538008 -0.00286002 0.00167074 6.94252006 0.99101949 0.99546924 0.48297398;
+	-5.94643506 -0.00285787 0.00166971 6.94357720 0.99102701 0.99547242 0.48300463;
+	-5.94748691 -0.00285571 0.00166869 6.94463120 0.99103452 0.99547559 0.48303520;
+	-5.94853563 -0.00285356 0.00166767 6.94568207 0.99104202 0.99547877 0.48306568;
+	-5.94958124 -0.00285141 0.00166666 6.94672983 0.99104951 0.99548194 0.48309607;
+	-5.95062373 -0.00284926 0.00166564 6.94777447 0.99105699 0.99548510 0.48312637;
+	-5.95166312 -0.00284711 0.00166462 6.94881600 0.99106446 0.99548827 0.48315659;
+	-5.95269941 -0.00284497 0.00166360 6.94985444 0.99107192 0.99549143 0.48318672;
+	-5.95373262 -0.00284283 0.00166258 6.95088979 0.99107937 0.99549459 0.48321676;
+	-5.95476275 -0.00284069 0.00166156 6.95192206 0.99108681 0.99549775 0.48324672;
+	-5.95578980 -0.00283855 0.00166055 6.95295125 0.99109423 0.99550090 0.48327660;
+	-5.95681380 -0.00283642 0.00165953 6.95397738 0.99110165 0.99550405 0.48330638;
+	-5.95783474 -0.00283429 0.00165852 6.95500045 0.99110906 0.99550720 0.48333609;
+	-5.95885262 -0.00283216 0.00165750 6.95602047 0.99111645 0.99551034 0.48336571;
+	-5.95986747 -0.00283003 0.00165648 6.95703744 0.99112384 0.99551348 0.48339524;
+	-5.96087929 -0.00282791 0.00165547 6.95805138 0.99113121 0.99551662 0.48342469;
+	-5.96188808 -0.00282578 0.00165446 6.95906230 0.99113858 0.99551976 0.48345405;
+	-5.96289385 -0.00282366 0.00165344 6.96007019 0.99114593 0.99552290 0.48348333;
+	-5.96389662 -0.00282154 0.00165243 6.96107507 0.99115327 0.99552603 0.48351252;
+	-5.96489638 -0.00281943 0.00165142 6.96207695 0.99116061 0.99552916 0.48354163;
+	-5.96589315 -0.00281732 0.00165040 6.96307584 0.99116793 0.99553228 0.48357066;
+	-5.96688693 -0.00281520 0.00164939 6.96407173 0.99117524 0.99553540 0.48359961;
+	-5.96787774 -0.00281310 0.00164838 6.96506464 0.99118255 0.99553852 0.48362846;
+	-5.96886557 -0.00281099 0.00164737 6.96605458 0.99118984 0.99554164 0.48365724;
+	-5.96985044 -0.00280888 0.00164636 6.96704156 0.99119712 0.99554476 0.48368594;
+	-5.97083235 -0.00280678 0.00164535 6.96802557 0.99120439 0.99554787 0.48371455;
+	-5.97181132 -0.00280468 0.00164434 6.96900664 0.99121165 0.99555098 0.48374308;
+	-5.97278734 -0.00280258 0.00164333 6.96998476 0.99121891 0.99555409 0.48377153;
+	-5.97376044 -0.00280049 0.00164232 6.97095995 0.99122615 0.99555719 0.48379989;
+	-5.97473060 -0.00279840 0.00164131 6.97193221 0.99123338 0.99556029 0.48382818;
+	-5.97569785 -0.00279631 0.00164031 6.97290155 0.99124060 0.99556339 0.48385638;
+	-5.97666219 -0.00279422 0.00163930 6.97386797 0.99124781 0.99556648 0.48388450;
+	-5.97762362 -0.00279213 0.00163829 6.97483149 0.99125501 0.99556958 0.48391254;
+	-5.97858216 -0.00279005 0.00163729 6.97579212 0.99126220 0.99557267 0.48394050;
+	-5.97953782 -0.00278796 0.00163628 6.97674985 0.99126938 0.99557576 0.48396837;
+	-5.98049059 -0.00278589 0.00163527 6.97770470 0.99127655 0.99557884 0.48399617;
+	-5.98144049 -0.00278381 0.00163427 6.97865668 0.99128371 0.99558192 0.48402389;
+	-5.98238752 -0.00278173 0.00163326 6.97960579 0.99129087 0.99558500 0.48405152;
+	-5.98333170 -0.00277966 0.00163226 6.98055204 0.99129801 0.99558808 0.48407908;
+	-5.98427302 -0.00277759 0.00163126 6.98149543 0.99130514 0.99559115 0.48410655;
+	-5.98521150 -0.00277552 0.00163025 6.98243598 0.99131226 0.99559422 0.48413395;
+	-5.98614715 -0.00277346 0.00162925 6.98337369 0.99131937 0.99559729 0.48416127;
+	-5.98707997 -0.00277139 0.00162825 6.98430858 0.99132647 0.99560036 0.48418851;
+	-5.98800996 -0.00276933 0.00162725 6.98524063 0.99133356 0.99560342 0.48421567;
+	-5.98893715 -0.00276727 0.00162625 6.98616988 0.99134064 0.99560648 0.48424275;
+	-5.98986153 -0.00276521 0.00162525 6.98709631 0.99134771 0.99560954 0.48426975;
+	-5.99078310 -0.00276316 0.00162425 6.98801995 0.99135477 0.99561259 0.48429667;
+	-5.99170189 -0.00276111 0.00162325 6.98894079 0.99136183 0.99561565 0.48432352;
+	-5.99261789 -0.00275906 0.00162225 6.98985884 0.99136887 0.99561870 0.48435028;
+	-5.99353112 -0.00275701 0.00162125 6.99077411 0.99137590 0.99562174 0.48437697;
+	-5.99444158 -0.00275496 0.00162025 6.99168662 0.99138292 0.99562479 0.48440358;
+	-5.99534927 -0.00275292 0.00161925 6.99259635 0.99138994 0.99562783 0.48443012;
+	-5.99625421 -0.00275088 0.00161826 6.99350334 0.99139694 0.99563087 0.48445657;
+	-5.99715640 -0.00274884 0.00161726 6.99440757 0.99140393 0.99563390 0.48448295;
+	-5.99805585 -0.00274680 0.00161626 6.99530906 0.99141092 0.99563694 0.48450926;
+	-5.99895257 -0.00274476 0.00161527 6.99620781 0.99141789 0.99563997 0.48453548;
+	-5.99984656 -0.00274273 0.00161427 6.99710383 0.99142485 0.99564299 0.48456163;
+	-6.00073784 -0.00274070 0.00161328 6.99799714 0.99143181 0.99564602 0.48458771;
+	-6.00162640 -0.00273867 0.00161228 6.99888773 0.99143875 0.99564904 0.48461370;
+	-6.00251225 -0.00273665 0.00161129 6.99977561 0.99144569 0.99565206 0.48463962;
+	-6.00339541 -0.00273462 0.00161030 7.00066079 0.99145261 0.99565508 0.48466547;
+	-6.00427588 -0.00273260 0.00160931 7.00154328 0.99145953 0.99565809 0.48469124;
+	-6.00515367 -0.00273058 0.00160831 7.00242309 0.99146644 0.99566111 0.48471693;
+	-6.00602878 -0.00272856 0.00160732 7.00330021 0.99147334 0.99566411 0.48474255;
+	-6.00690122 -0.00272655 0.00160633 7.00417467 0.99148022 0.99566712 0.48476810;
+	-6.00777100 -0.00272454 0.00160534 7.00504646 0.99148710 0.99567012 0.48479357;
+	-6.00863812 -0.00272252 0.00160435 7.00591560 0.99149397 0.99567313 0.48481896;
+	-6.00950260 -0.00272052 0.00160336 7.00678208 0.99150083 0.99567612 0.48484429;
+	-6.01036444 -0.00271851 0.00160237 7.00764593 0.99150768 0.99567912 0.48486953;
+	-6.01122364 -0.00271651 0.00160138 7.00850713 0.99151452 0.99568211 0.48489471;
+	-6.01208022 -0.00271450 0.00160039 7.00936571 0.99152135 0.99568510 0.48491980;
+	-6.01293417 -0.00271250 0.00159941 7.01022167 0.99152817 0.99568809 0.48494483;
+	-6.01378552 -0.00271051 0.00159842 7.01107501 0.99153498 0.99569107 0.48496978;
+	-6.01463426 -0.00270851 0.00159743 7.01192575 0.99154179 0.99569406 0.48499466;
+	-6.01548040 -0.00270652 0.00159645 7.01277388 0.99154858 0.99569704 0.48501947;
+	-6.01632394 -0.00270453 0.00159546 7.01361942 0.99155537 0.99570001 0.48504420;
+	-6.01716491 -0.00270254 0.00159448 7.01446237 0.99156214 0.99570299 0.48506886;
+	-6.01800329 -0.00270055 0.00159349 7.01530274 0.99156891 0.99570596 0.48509345;
+	-6.01883911 -0.00269856 0.00159251 7.01614055 0.99157566 0.99570893 0.48511797;
+	-6.01967236 -0.00269658 0.00159153 7.01697578 0.99158241 0.99571189 0.48514241;
+	-6.02050306 -0.00269460 0.00159054 7.01780845 0.99158915 0.99571486 0.48516678;
+	-6.02133120 -0.00269262 0.00158956 7.01863858 0.99159588 0.99571782 0.48519108;
+	-6.02215680 -0.00269065 0.00158858 7.01946615 0.99160260 0.99572077 0.48521531;
+	-6.02297987 -0.00268867 0.00158760 7.02029119 0.99160931 0.99572373 0.48523947;
+	-6.02380040 -0.00268670 0.00158662 7.02111370 0.99161601 0.99572668 0.48526355;
+	-6.02461841 -0.00268473 0.00158564 7.02193368 0.99162270 0.99572963 0.48528757;
+	-6.02543391 -0.00268276 0.00158466 7.02275115 0.99162938 0.99573258 0.48531151;
+	-6.02624690 -0.00268080 0.00158368 7.02356610 0.99163606 0.99573552 0.48533539;
+	-6.02705738 -0.00267883 0.00158270 7.02437855 0.99164272 0.99573847 0.48535919;
+	-6.02786537 -0.00267687 0.00158172 7.02518850 0.99164938 0.99574141 0.48538292;
+	-6.02867087 -0.00267491 0.00158074 7.02599596 0.99165602 0.99574434 0.48540659;
+	-6.02947389 -0.00267296 0.00157977 7.02680093 0.99166266 0.99574728 0.48543018;
+	-6.03027443 -0.00267100 0.00157879 7.02760343 0.99166929 0.99575021 0.48545370;
+	-6.03107251 -0.00266905 0.00157781 7.02840346 0.99167591 0.99575314 0.48547716;
+	-6.03186812 -0.00266710 0.00157684 7.02920102 0.99168252 0.99575606 0.48550054;
+	-6.03266127 -0.00266515 0.00157586 7.02999612 0.99168912 0.99575899 0.48552386;
+	-6.03345198 -0.00266320 0.00157489 7.03078878 0.99169571 0.99576191 0.48554710;
+	-6.03424025 -0.00266126 0.00157391 7.03157899 0.99170230 0.99576483 0.48557028;
+	-6.03502608 -0.00265932 0.00157294 7.03236676 0.99170887 0.99576774 0.48559339;
+	-6.03580948 -0.00265738 0.00157197 7.03315210 0.99171544 0.99577065 0.48561643;
+	-6.03659046 -0.00265544 0.00157100 7.03393502 0.99172199 0.99577356 0.48563940;
+	-6.03736903 -0.00265350 0.00157002 7.03471552 0.99172854 0.99577647 0.48566231;
+	-6.03814518 -0.00265157 0.00156905 7.03549361 0.99173508 0.99577938 0.48568514;
+	-6.03891894 -0.00264964 0.00156808 7.03626930 0.99174161 0.99578228 0.48570791;
+	-6.03969029 -0.00264771 0.00156711 7.03704258 0.99174813 0.99578518 0.48573061;
+	-6.04045926 -0.00264578 0.00156614 7.03781348 0.99175464 0.99578807 0.48575324;
+	-6.04122585 -0.00264386 0.00156517 7.03858199 0.99176115 0.99579097 0.48577581;
+	-6.04199006 -0.00264193 0.00156421 7.03934813 0.99176764 0.99579386 0.48579831;
+	-6.04275190 -0.00264001 0.00156324 7.04011189 0.99177413 0.99579675 0.48582075;
+	-6.04351138 -0.00263809 0.00156227 7.04087328 0.99178061 0.99579964 0.48584311;
+	-6.04426850 -0.00263618 0.00156130 7.04163232 0.99178707 0.99580252 0.48586541;
+	-6.04502327 -0.00263426 0.00156034 7.04238901 0.99179353 0.99580540 0.48588765;
+	-6.04577570 -0.00263235 0.00155937 7.04314335 0.99179998 0.99580828 0.48590981;
+	-6.04652579 -0.00263044 0.00155841 7.04389535 0.99180643 0.99581115 0.48593191;
+	-6.04727354 -0.00262853 0.00155744 7.04464502 0.99181286 0.99581403 0.48595395;
+	-6.04801898 -0.00262662 0.00155648 7.04539236 0.99181929 0.99581690 0.48597592;
+	-6.04876210 -0.00262472 0.00155552 7.04613738 0.99182570 0.99581977 0.48599782;
+	-6.04950290 -0.00262282 0.00155455 7.04688009 0.99183211 0.99582263 0.48601966;
+	-6.05024140 -0.00262092 0.00155359 7.04762049 0.99183851 0.99582549 0.48604144;
+	-6.05097760 -0.00261902 0.00155263 7.04835858 0.99184490 0.99582835 0.48606315;
+	-6.05171151 -0.00261712 0.00155167 7.04909439 0.99185128 0.99583121 0.48608479;
+	-6.05244313 -0.00261523 0.00155071 7.04982791 0.99185765 0.99583407 0.48610637;
+	-6.05317248 -0.00261334 0.00154975 7.05055914 0.99186402 0.99583692 0.48612789;
+	-6.05389955 -0.00261145 0.00154879 7.05128810 0.99187037 0.99583977 0.48614934;
+	-6.05462435 -0.00260956 0.00154783 7.05201479 0.99187672 0.99584261 0.48617073;
+	-6.05534689 -0.00260767 0.00154687 7.05273922 0.99188306 0.99584546 0.48619205;
+	-6.05606718 -0.00260579 0.00154591 7.05346139 0.99188939 0.99584830 0.48621331;
+	-6.05678521 -0.00260391 0.00154495 7.05418131 0.99189571 0.99585114 0.48623450;
+	-6.05750101 -0.00260203 0.00154400 7.05489898 0.99190203 0.99585398 0.48625564;
+	-6.05821457 -0.00260015 0.00154304 7.05561442 0.99190833 0.99585681 0.48627671;
+	-6.05892590 -0.00259827 0.00154209 7.05632763 0.99191463 0.99585964 0.48629772;
+	-6.05963501 -0.00259640 0.00154113 7.05703861 0.99192092 0.99586247 0.48631866;
+	-6.06034190 -0.00259453 0.00154018 7.05774737 0.99192720 0.99586529 0.48633954;
+	-6.06104657 -0.00259266 0.00153922 7.05845392 0.99193347 0.99586812 0.48636036;
+	-6.06174905 -0.00259079 0.00153827 7.05915826 0.99193973 0.99587094 0.48638112;
+	-6.06244932 -0.00258893 0.00153732 7.05986040 0.99194598 0.99587376 0.48640181;
+	-6.06314740 -0.00258706 0.00153637 7.06056034 0.99195223 0.99587657 0.48642244;
+	-6.06384330 -0.00258520 0.00153541 7.06125810 0.99195847 0.99587938 0.48644301;
+	-6.06453701 -0.00258334 0.00153446 7.06195367 0.99196470 0.99588220 0.48646352;
+	-6.06522855 -0.00258148 0.00153351 7.06264707 0.99197092 0.99588500 0.48648397;
+	-6.06591793 -0.00257963 0.00153256 7.06333830 0.99197713 0.99588781 0.48650436;
+	-6.06660514 -0.00257778 0.00153161 7.06402736 0.99198334 0.99589061 0.48652468;
+	-6.06729019 -0.00257592 0.00153067 7.06471427 0.99198953 0.99589341 0.48654494;
+	-6.06797309 -0.00257408 0.00152972 7.06539902 0.99199572 0.99589621 0.48656515;
+	-6.06865385 -0.00257223 0.00152877 7.06608163 0.99200190 0.99589900 0.48658529;
+	-6.06933248 -0.00257038 0.00152782 7.06676209 0.99200807 0.99590179 0.48660537;
+	-6.07000896 -0.00256854 0.00152688 7.06744043 0.99201424 0.99590458 0.48662539;
+	-6.07068333 -0.00256670 0.00152593 7.06811663 0.99202039 0.99590737 0.48664535;
+	-6.07135557 -0.00256486 0.00152499 7.06879071 0.99202654 0.99591015 0.48666525;
+	-6.07202570 -0.00256302 0.00152404 7.06946268 0.99203268 0.99591294 0.48668509;
+	-6.07269372 -0.00256119 0.00152310 7.07013254 0.99203881 0.99591572 0.48670487;
+	-6.07335964 -0.00255935 0.00152215 7.07080029 0.99204493 0.99591849 0.48672460;
+	-6.07402346 -0.00255752 0.00152121 7.07146594 0.99205104 0.99592127 0.48674426;
+	-6.07468520 -0.00255569 0.00152027 7.07212950 0.99205715 0.99592404 0.48676386;
+	-6.07534484 -0.00255387 0.00151933 7.07279098 0.99206325 0.99592681 0.48678341;
+	-6.07600241 -0.00255204 0.00151839 7.07345037 0.99206934 0.99592957 0.48680289;
+	-6.07665791 -0.00255022 0.00151745 7.07410769 0.99207542 0.99593234 0.48682232;
+	-6.07731134 -0.00254840 0.00151651 7.07476294 0.99208149 0.99593510 0.48684169;
+	-6.07796271 -0.00254658 0.00151557 7.07541613 0.99208756 0.99593786 0.48686100;
+	-6.07861202 -0.00254476 0.00151463 7.07606726 0.99209362 0.99594061 0.48688025;
+	-6.07925928 -0.00254294 0.00151369 7.07671634 0.99209967 0.99594336 0.48689944;
+	-6.07990450 -0.00254113 0.00151275 7.07736337 0.99210571 0.99594612 0.48691858;
+	-6.08054769 -0.00253932 0.00151182 7.07800837 0.99211174 0.99594886 0.48693766;
+	-6.08118884 -0.00253751 0.00151088 7.07865133 0.99211777 0.99595161 0.48695668;
+	-6.08182796 -0.00253570 0.00150994 7.07929226 0.99212379 0.99595435 0.48697564;
+	-6.08246507 -0.00253390 0.00150901 7.07993117 0.99212980 0.99595709 0.48699454;
+	-6.08310016 -0.00253210 0.00150807 7.08056806 0.99213580 0.99595983 0.48701339;
+	-6.08373324 -0.00253029 0.00150714 7.08120294 0.99214179 0.99596257 0.48703218;
+	-6.08436431 -0.00252849 0.00150621 7.08183582 0.99214778 0.99596530 0.48705092;
+	-6.08499339 -0.00252670 0.00150527 7.08246669 0.99215376 0.99596803 0.48706960;
+	-6.08562048 -0.00252490 0.00150434 7.08309558 0.99215973 0.99597076 0.48708821;
+	-6.08624558 -0.00252311 0.00150341 7.08372247 0.99216569 0.99597348 0.48710678;
+	-6.08686870 -0.00252132 0.00150248 7.08434738 0.99217164 0.99597620 0.48712529;
+	-6.08748985 -0.00251953 0.00150155 7.08497032 0.99217759 0.99597892 0.48714374;
+	-6.08810902 -0.00251774 0.00150062 7.08559128 0.99218353 0.99598164 0.48716214;
+	-6.08872624 -0.00251595 0.00149969 7.08621028 0.99218946 0.99598436 0.48718048;
+	-6.08934149 -0.00251417 0.00149876 7.08682732 0.99219538 0.99598707 0.48719876;
+	-6.08995479 -0.00251239 0.00149784 7.08744241 0.99220130 0.99598978 0.48721699;
+	-6.09056615 -0.00251061 0.00149691 7.08805554 0.99220721 0.99599248 0.48723517;
+	-6.09117556 -0.00250883 0.00149598 7.08866673 0.99221310 0.99599519 0.48725329;
+	-6.09178304 -0.00250705 0.00149506 7.08927599 0.99221900 0.99599789 0.48727135;
+	-6.09238859 -0.00250528 0.00149413 7.08988331 0.99222488 0.99600059 0.48728936;
+	-6.09299221 -0.00250351 0.00149320 7.09048871 0.99223076 0.99600329 0.48730732;
+	-6.09359392 -0.00250174 0.00149228 7.09109218 0.99223663 0.99600598 0.48732522;
+	-6.09419371 -0.00249997 0.00149136 7.09169374 0.99224249 0.99600867 0.48734306;
+	-6.09479159 -0.00249820 0.00149043 7.09229339 0.99224834 0.99601136 0.48736085;
+	-6.09538757 -0.00249644 0.00148951 7.09289113 0.99225419 0.99601405 0.48737859;
+	-6.09598165 -0.00249468 0.00148859 7.09348698 0.99226003 0.99601673 0.48739628;
+	-6.09657385 -0.00249292 0.00148767 7.09408093 0.99226586 0.99601942 0.48741390;
+	-6.09716415 -0.00249116 0.00148675 7.09467299 0.99227168 0.99602210 0.48743148;
+	-6.09775257 -0.00248940 0.00148583 7.09526317 0.99227749 0.99602477 0.48744900;
+	-6.09833912 -0.00248765 0.00148491 7.09585148 0.99228330 0.99602745 0.48746647;
+	-6.09892380 -0.00248589 0.00148399 7.09643791 0.99228910 0.99603012 0.48748389;
+	-6.09950662 -0.00248414 0.00148307 7.09702248 0.99229489 0.99603279 0.48750125;
+	-6.10008757 -0.00248239 0.00148215 7.09760518 0.99230068 0.99603545 0.48751856;
+	-6.10066667 -0.00248065 0.00148124 7.09818603 0.99230646 0.99603812 0.48753582;
+	-6.10124393 -0.00247890 0.00148032 7.09876503 0.99231223 0.99604078 0.48755302;
+	-6.10181934 -0.00247716 0.00147941 7.09934218 0.99231799 0.99604344 0.48757018;
+	-6.10239291 -0.00247542 0.00147849 7.09991749 0.99232374 0.99604609 0.48758728;
+	-6.10296465 -0.00247368 0.00147758 7.10049097 0.99232949 0.99604875 0.48760432;
+	-6.10353456 -0.00247194 0.00147666 7.10106262 0.99233523 0.99605140 0.48762132;
+	-6.10410265 -0.00247020 0.00147575 7.10163245 0.99234096 0.99605405 0.48763826;
+	-6.10466892 -0.00246847 0.00147484 7.10220045 0.99234669 0.99605669 0.48765516;
+	-6.10523338 -0.00246674 0.00147393 7.10276665 0.99235240 0.99605934 0.48767200;
+	-6.10579604 -0.00246501 0.00147301 7.10333103 0.99235811 0.99606198 0.48768879;
+	-6.10635689 -0.00246328 0.00147210 7.10389362 0.99236382 0.99606462 0.48770552;
+	-6.10691595 -0.00246155 0.00147119 7.10445440 0.99236951 0.99606725 0.48772221;
+	-6.10747322 -0.00245983 0.00147028 7.10501339 0.99237520 0.99606989 0.48773885;
+	-6.10802871 -0.00245811 0.00146937 7.10557060 0.99238088 0.99607252 0.48775543;
+	-6.10858241 -0.00245639 0.00146847 7.10612603 0.99238655 0.99607515 0.48777197;
+	-6.10913434 -0.00245467 0.00146756 7.10667967 0.99239222 0.99607777 0.48778845;
+	-6.10968450 -0.00245295 0.00146665 7.10723155 0.99239787 0.99608040 0.48780488;
+	-6.11023289 -0.00245123 0.00146575 7.10778166 0.99240353 0.99608302 0.48782127;
+	-6.11077953 -0.00244952 0.00146484 7.10833001 0.99240917 0.99608564 0.48783760;
+	-6.11132441 -0.00244781 0.00146393 7.10887660 0.99241480 0.99608825 0.48785388;
+	-6.11186754 -0.00244610 0.00146303 7.10942144 0.99242043 0.99609087 0.48787012;
+	-6.11240893 -0.00244439 0.00146213 7.10996454 0.99242605 0.99609348 0.48788630;
+	-6.11294858 -0.00244269 0.00146122 7.11050589 0.99243167 0.99609609 0.48790243;
+	-6.11348649 -0.00244098 0.00146032 7.11104551 0.99243728 0.99609869 0.48791852;
+	-6.11402268 -0.00243928 0.00145942 7.11158340 0.99244288 0.99610130 0.48793455;
+	-6.11455714 -0.00243758 0.00145852 7.11211956 0.99244847 0.99610390 0.48795053;
+	-6.11508989 -0.00243588 0.00145762 7.11265400 0.99245405 0.99610650 0.48796647;
+	-6.11562092 -0.00243419 0.00145672 7.11318673 0.99245963 0.99610909 0.48798236;
+	-6.11615024 -0.00243249 0.00145582 7.11371775 0.99246520 0.99611169 0.48799820;
+	-6.11667786 -0.00243080 0.00145492 7.11424706 0.99247077 0.99611428 0.48801399;
+	-6.11720378 -0.00242911 0.00145402 7.11477467 0.99247632 0.99611687 0.48802973;
+	-6.11772800 -0.00242742 0.00145312 7.11530058 0.99248187 0.99611945 0.48804543;
+	-6.11825054 -0.00242574 0.00145223 7.11582481 0.99248741 0.99612204 0.48806107;
+	-6.11877140 -0.00242405 0.00145133 7.11634735 0.99249295 0.99612462 0.48807667;
+	-6.11929057 -0.00242237 0.00145043 7.11686820 0.99249847 0.99612720 0.48809222;
+	-6.11980807 -0.00242069 0.00144954 7.11738739 0.99250400 0.99612978 0.48810772;
+	-6.12032390 -0.00241901 0.00144864 7.11790490 0.99250951 0.99613235 0.48812317;
+	-6.12083807 -0.00241733 0.00144775 7.11842074 0.99251501 0.99613492 0.48813858;
+	-6.12135058 -0.00241565 0.00144686 7.11893493 0.99252051 0.99613749 0.48815394;
+	-6.12186144 -0.00241398 0.00144597 7.11944746 0.99252601 0.99614006 0.48816925;
+	-6.12237064 -0.00241231 0.00144507 7.11995834 0.99253149 0.99614262 0.48818451;
+	-6.12287820 -0.00241064 0.00144418 7.12046757 0.99253697 0.99614518 0.48819973;
+	-6.12338412 -0.00240897 0.00144329 7.12097516 0.99254244 0.99614774 0.48821490;
+	-6.12388841 -0.00240730 0.00144240 7.12148111 0.99254790 0.99615030 0.48823002;
+	-6.12439107 -0.00240563 0.00144151 7.12198543 0.99255336 0.99615285 0.48824510;
+	-6.12489210 -0.00240397 0.00144062 7.12248813 0.99255881 0.99615540 0.48826013;
+	-6.12539151 -0.00240231 0.00143974 7.12298920 0.99256425 0.99615795 0.48827512;
+	-6.12588931 -0.00240065 0.00143885 7.12348866 0.99256969 0.99616050 0.48829005;
+	-6.12638549 -0.00239899 0.00143796 7.12398650 0.99257512 0.99616304 0.48830495;
+	-6.12688007 -0.00239734 0.00143708 7.12448273 0.99258054 0.99616559 0.48831979;
+	-6.12737305 -0.00239568 0.00143619 7.12497736 0.99258596 0.99616813 0.48833460;
+	-6.12786443 -0.00239403 0.00143531 7.12547040 0.99259136 0.99617066 0.48834935;
+	-6.12835422 -0.00239238 0.00143442 7.12596184 0.99259676 0.99617320 0.48836406;
+	-6.12884242 -0.00239073 0.00143354 7.12645169 0.99260216 0.99617573 0.48837872;
+	-6.12932904 -0.00238908 0.00143266 7.12693996 0.99260755 0.99617826 0.48839334;
+	-6.12981408 -0.00238744 0.00143177 7.12742664 0.99261293 0.99618079 0.48840792;
+	-6.13029755 -0.00238580 0.00143089 7.12791176 0.99261830 0.99618331 0.48842244;
+	-6.13077945 -0.00238416 0.00143001 7.12839530 0.99262367 0.99618583 0.48843693;
+	-6.13125979 -0.00238252 0.00142913 7.12887728 0.99262903 0.99618835 0.48845136;
+	-6.13173857 -0.00238088 0.00142825 7.12935769 0.99263438 0.99619087 0.48846576;
+	-6.13221579 -0.00237924 0.00142737 7.12983655 0.99263972 0.99619339 0.48848011;
+	-6.13269147 -0.00237761 0.00142649 7.13031386 0.99264506 0.99619590 0.48849441;
+	-6.13316560 -0.00237598 0.00142562 7.13078962 0.99265040 0.99619841 0.48850867;
+	-6.13363819 -0.00237434 0.00142474 7.13126384 0.99265572 0.99620092 0.48852289;
+	-6.13410924 -0.00237272 0.00142386 7.13173652 0.99266104 0.99620342 0.48853706;
+	-6.13457876 -0.00237109 0.00142299 7.13220767 0.99266635 0.99620593 0.48855119;
+	-6.13504676 -0.00236946 0.00142211 7.13267729 0.99267166 0.99620843 0.48856528;
+	-6.13551323 -0.00236784 0.00142124 7.13314539 0.99267696 0.99621092 0.48857932;
+	-6.13597818 -0.00236622 0.00142036 7.13361197 0.99268225 0.99621342 0.48859332;
+	-6.13644163 -0.00236460 0.00141949 7.13407703 0.99268753 0.99621591 0.48860727;
+	-6.13690356 -0.00236298 0.00141862 7.13454058 0.99269281 0.99621840 0.48862118;
+	-6.13736399 -0.00236136 0.00141774 7.13500263 0.99269808 0.99622089 0.48863505;
+	-6.13782292 -0.00235975 0.00141687 7.13546317 0.99270335 0.99622338 0.48864888;
+	-6.13828035 -0.00235814 0.00141600 7.13592222 0.99270861 0.99622586 0.48866266;
+	-6.13873630 -0.00235652 0.00141513 7.13637977 0.99271386 0.99622834 0.48867640;
+	-6.13919076 -0.00235492 0.00141426 7.13683584 0.99271910 0.99623082 0.48869010;
+	-6.13964373 -0.00235331 0.00141339 7.13729042 0.99272434 0.99623330 0.48870375;
+	-6.14009523 -0.00235170 0.00141253 7.13774353 0.99272957 0.99623577 0.48871736;
+	-6.14054526 -0.00235010 0.00141166 7.13819516 0.99273480 0.99623824 0.48873093;
+	-6.14099381 -0.00234850 0.00141079 7.13864532 0.99274001 0.99624071 0.48874446;
+	-6.14144091 -0.00234689 0.00140993 7.13909401 0.99274523 0.99624318 0.48875794;
+	-6.14188654 -0.00234530 0.00140906 7.13954125 0.99275043 0.99624564 0.48877139;
+	-6.14233072 -0.00234370 0.00140820 7.13998702 0.99275563 0.99624811 0.48878479;
+	-6.14277345 -0.00234210 0.00140733 7.14043134 0.99276082 0.99625057 0.48879815;
+	-6.14321473 -0.00234051 0.00140647 7.14087422 0.99276601 0.99625302 0.48881147;
+	-6.14365457 -0.00233892 0.00140561 7.14131565 0.99277118 0.99625548 0.48882475;
+	-6.14409297 -0.00233733 0.00140474 7.14175564 0.99277636 0.99625793 0.48883798;
+	-6.14452994 -0.00233574 0.00140388 7.14219420 0.99278152 0.99626038 0.48885118;
+	-6.14496548 -0.00233415 0.00140302 7.14263132 0.99278668 0.99626283 0.48886433;
+	-6.14539959 -0.00233257 0.00140216 7.14306702 0.99279183 0.99626527 0.48887745;
+	-6.14583228 -0.00233098 0.00140130 7.14350130 0.99279698 0.99626772 0.48889052;
+	-6.14626356 -0.00232940 0.00140044 7.14393416 0.99280212 0.99627016 0.48890355;
+	-6.14669342 -0.00232782 0.00139958 7.14436560 0.99280725 0.99627259 0.48891654;
+	-6.14712188 -0.00232625 0.00139873 7.14479564 0.99281238 0.99627503 0.48892949;
+	-6.14754894 -0.00232467 0.00139787 7.14522427 0.99281750 0.99627746 0.48894240;
+	-6.14797459 -0.00232309 0.00139701 7.14565150 0.99282261 0.99627989 0.48895527;
+	-6.14839885 -0.00232152 0.00139616 7.14607733 0.99282772 0.99628232 0.48896810;
+	-6.14882172 -0.00231995 0.00139530 7.14650177 0.99283282 0.99628475 0.48898089;
+	-6.14924320 -0.00231838 0.00139445 7.14692482 0.99283791 0.99628717 0.48899364;
+	-6.14966330 -0.00231681 0.00139359 7.14734649 0.99284300 0.99628959 0.48900634;
+	-6.15008202 -0.00231525 0.00139274 7.14776677 0.99284808 0.99629201 0.48901902;
+	-6.15049937 -0.00231368 0.00139189 7.14818569 0.99285316 0.99629443 0.48903165;
+	-6.15091535 -0.00231212 0.00139104 7.14860323 0.99285823 0.99629684 0.48904424;
+	-6.15132996 -0.00231056 0.00139018 7.14901940 0.99286329 0.99629926 0.48905679;
+	-6.15174321 -0.00230900 0.00138933 7.14943421 0.99286834 0.99630166 0.48906930;
+	-6.15215510 -0.00230744 0.00138848 7.14984766 0.99287339 0.99630407 0.48908178;
+	-6.15256564 -0.00230589 0.00138763 7.15025975 0.99287844 0.99630648 0.48909421;
+	-6.15297483 -0.00230433 0.00138679 7.15067050 0.99288347 0.99630888 0.48910661;
+	-6.15338268 -0.00230278 0.00138594 7.15107989 0.99288850 0.99631128 0.48911897;
+	-6.15378918 -0.00230123 0.00138509 7.15148795 0.99289353 0.99631368 0.48913128;
+	-6.15419435 -0.00229968 0.00138424 7.15189467 0.99289855 0.99631607 0.48914356;
+	-6.15459818 -0.00229814 0.00138340 7.15230005 0.99290356 0.99631847 0.48915581;
+	-6.15500069 -0.00229659 0.00138255 7.15270410 0.99290856 0.99632086 0.48916801;
+	-6.15540187 -0.00229505 0.00138171 7.15310682 0.99291356 0.99632324 0.48918017;
+	-6.15580173 -0.00229350 0.00138087 7.15350822 0.99291855 0.99632563 0.48919230;
+	-6.15620027 -0.00229196 0.00138002 7.15390831 0.99292354 0.99632801 0.48920439;
+	-6.15659750 -0.00229042 0.00137918 7.15430708 0.99292852 0.99633040 0.48921644;
+	-6.15699342 -0.00228889 0.00137834 7.15470454 0.99293349 0.99633278 0.48922846;
+	-6.15738804 -0.00228735 0.00137750 7.15510069 0.99293846 0.99633515 0.48924043;
+	-6.15778136 -0.00228582 0.00137666 7.15549554 0.99294342 0.99633753 0.48925237;
+	-6.15817338 -0.00228429 0.00137582 7.15588909 0.99294838 0.99633990 0.48926427;
+	-6.15856410 -0.00228276 0.00137498 7.15628135 0.99295333 0.99634227 0.48927613;
+	-6.15895354 -0.00228123 0.00137414 7.15667231 0.99295827 0.99634464 0.48928796;
+	-6.15934170 -0.00227970 0.00137330 7.15706199 0.99296321 0.99634700 0.48929975;
+	-6.15972857 -0.00227818 0.00137246 7.15745039 0.99296814 0.99634936 0.48931151;
+	-6.16011416 -0.00227665 0.00137162 7.15783751 0.99297306 0.99635172 0.48932322;
+	-6.16049848 -0.00227513 0.00137079 7.15822335 0.99297798 0.99635408 0.48933490;
+	-6.16088154 -0.00227361 0.00136995 7.15860793 0.99298289 0.99635644 0.48934654;
+	-6.16126332 -0.00227209 0.00136912 7.15899123 0.99298780 0.99635879 0.48935815;
+	-6.16164385 -0.00227057 0.00136828 7.15937328 0.99299270 0.99636114 0.48936972;
+	-6.16202312 -0.00226906 0.00136745 7.15975406 0.99299759 0.99636349 0.48938125;
+	-6.16240113 -0.00226754 0.00136662 7.16013359 0.99300248 0.99636584 0.48939275;
+	-6.16277790 -0.00226603 0.00136579 7.16051186 0.99300736 0.99636818 0.48940421;
+	-6.16315341 -0.00226452 0.00136495 7.16088889 0.99301224 0.99637052 0.48941563;
+	-6.16352769 -0.00226301 0.00136412 7.16126468 0.99301711 0.99637286 0.48942702;
+	-6.16390073 -0.00226151 0.00136329 7.16163922 0.99302197 0.99637520 0.48943837;
+	-6.16427253 -0.00226000 0.00136246 7.16201253 0.99302683 0.99637753 0.48944969;
+	-6.16464310 -0.00225850 0.00136164 7.16238461 0.99303168 0.99637987 0.48946098;
+	-6.16501245 -0.00225700 0.00136081 7.16275545 0.99303653 0.99638220 0.48947222;
+	-6.16538057 -0.00225549 0.00135998 7.16312507 0.99304136 0.99638453 0.48948343;
+	-6.16574747 -0.00225400 0.00135915 7.16349348 0.99304620 0.99638685 0.48949461;
+	-6.16611316 -0.00225250 0.00135833 7.16386066 0.99305103 0.99638918 0.48950575;
+	-6.16647763 -0.00225100 0.00135750 7.16422663 0.99305585 0.99639150 0.48951685;
+	-6.16684090 -0.00224951 0.00135668 7.16459139 0.99306066 0.99639382 0.48952792;
+	-6.16720296 -0.00224802 0.00135585 7.16495494 0.99306547 0.99639613 0.48953896;
+	-6.16756382 -0.00224653 0.00135503 7.16531729 0.99307027 0.99639845 0.48954996;
+	-6.16792348 -0.00224504 0.00135421 7.16567845 0.99307507 0.99640076 0.48956093;
+	-6.16828195 -0.00224355 0.00135338 7.16603840 0.99307986 0.99640307 0.48957186;
+	-6.16863923 -0.00224206 0.00135256 7.16639717 0.99308465 0.99640538 0.48958276;
+	-6.16899533 -0.00224058 0.00135174 7.16675475 0.99308943 0.99640768 0.48959363;
+	-6.16935024 -0.00223910 0.00135092 7.16711114 0.99309420 0.99640998 0.48960445;
+	-6.16970397 -0.00223762 0.00135010 7.16746636 0.99309897 0.99641228 0.48961525;
+	-6.17005653 -0.00223614 0.00134928 7.16782039 0.99310373 0.99641458 0.48962601;
+	-6.17040791 -0.00223466 0.00134846 7.16817326 0.99310849 0.99641688 0.48963673;
+	-6.17075813 -0.00223318 0.00134765 7.16852495 0.99311324 0.99641917 0.48964743;
+	-6.17110719 -0.00223171 0.00134683 7.16887548 0.99311798 0.99642146 0.48965809;
+	-6.17145508 -0.00223024 0.00134601 7.16922484 0.99312272 0.99642375 0.48966871;
+	-6.17180182 -0.00222876 0.00134520 7.16957305 0.99312745 0.99642604 0.48967931;
+	-6.17214740 -0.00222729 0.00134438 7.16992010 0.99313218 0.99642832 0.48968987;
+	-6.17249183 -0.00222583 0.00134357 7.17026601 0.99313690 0.99643061 0.48970039;
+	-6.17283512 -0.00222436 0.00134275 7.17061076 0.99314162 0.99643289 0.48971088;
+	-6.17317726 -0.00222289 0.00134194 7.17095437 0.99314633 0.99643517 0.48972134;
+	-6.17351827 -0.00222143 0.00134113 7.17129683 0.99315103 0.99643744 0.48973177;
+	-6.17385813 -0.00221997 0.00134032 7.17163816 0.99315573 0.99643971 0.48974217;
+	-6.17419687 -0.00221851 0.00133950 7.17197836 0.99316042 0.99644199 0.48975252;
+	-6.17453448 -0.00221705 0.00133869 7.17231743 0.99316511 0.99644425 0.48976285;
+	-6.17487096 -0.00221559 0.00133788 7.17265537 0.99316979 0.99644652 0.48977314;
+	-6.17520632 -0.00221414 0.00133708 7.17299218 0.99317446 0.99644879 0.48978341;
+	-6.17554056 -0.00221269 0.00133627 7.17332788 0.99317913 0.99645105 0.48979364;
+	-6.17587369 -0.00221123 0.00133546 7.17366246 0.99318379 0.99645331 0.48980384;
+	-6.17620571 -0.00220978 0.00133465 7.17399593 0.99318845 0.99645557 0.48981400;
+	-6.17653662 -0.00220833 0.00133385 7.17432829 0.99319310 0.99645782 0.48982414;
+	-6.17686642 -0.00220689 0.00133304 7.17465954 0.99319775 0.99646007 0.48983424;
+	-6.17719513 -0.00220544 0.00133223 7.17498969 0.99320239 0.99646233 0.48984431;
+	-6.17752273 -0.00220400 0.00133143 7.17531874 0.99320702 0.99646457 0.48985434;
+	-6.17784925 -0.00220255 0.00133063 7.17564669 0.99321165 0.99646682 0.48986435;
+	-6.17817467 -0.00220111 0.00132982 7.17597356 0.99321628 0.99646906 0.48987432;
+	-6.17849900 -0.00219967 0.00132902 7.17629933 0.99322089 0.99647131 0.48988427;
+	-6.17882225 -0.00219823 0.00132822 7.17662402 0.99322551 0.99647355 0.48989418;
+	-6.17914442 -0.00219680 0.00132742 7.17694762 0.99323011 0.99647578 0.48990406;
+	-6.17946552 -0.00219536 0.00132662 7.17727015 0.99323471 0.99647802 0.48991391;
+	-6.17978554 -0.00219393 0.00132582 7.17759161 0.99323931 0.99648025 0.48992373;
+	-6.18010448 -0.00219250 0.00132502 7.17791199 0.99324390 0.99648248 0.48993351;
+	-6.18042237 -0.00219107 0.00132422 7.17823130 0.99324848 0.99648471 0.48994327;
+	-6.18073919 -0.00218964 0.00132342 7.17854955 0.99325306 0.99648694 0.48995299;
+	-6.18105494 -0.00218821 0.00132262 7.17886673 0.99325763 0.99648916 0.48996269;
+	-6.18136964 -0.00218679 0.00132183 7.17918286 0.99326220 0.99649139 0.48997235;
+	-6.18168329 -0.00218536 0.00132103 7.17949793 0.99326676 0.99649361 0.48998198;
+	-6.18199589 -0.00218394 0.00132024 7.17981195 0.99327132 0.99649582 0.48999158;
+	-6.18230744 -0.00218252 0.00131944 7.18012492 0.99327587 0.99649804 0.49000115;
+	-6.18261795 -0.00218110 0.00131865 7.18043684 0.99328041 0.99650025 0.49001070;
+	-6.18292741 -0.00217968 0.00131785 7.18074773 0.99328495 0.99650246 0.49002020;
+	-6.18323584 -0.00217827 0.00131706 7.18105757 0.99328949 0.99650467 0.49002969;
+	-6.18354323 -0.00217685 0.00131627 7.18136638 0.99329401 0.99650688 0.49003913;
+	-6.18384960 -0.00217544 0.00131548 7.18167416 0.99329854 0.99650908 0.49004855;
+	-6.18415493 -0.00217403 0.00131469 7.18198091 0.99330305 0.99651129 0.49005794;
+	-6.18445924 -0.00217262 0.00131390 7.18228663 0.99330757 0.99651349 0.49006730;
+	-6.18476253 -0.00217121 0.00131311 7.18259133 0.99331207 0.99651568 0.49007664;
+	-6.18506481 -0.00216980 0.00131232 7.18289501 0.99331657 0.99651788 0.49008594;
+	-6.18536606 -0.00216840 0.00131153 7.18319767 0.99332107 0.99652007 0.49009521;
+	-6.18566631 -0.00216699 0.00131074 7.18349932 0.99332556 0.99652226 0.49010445;
+	-6.18596555 -0.00216559 0.00130996 7.18379996 0.99333004 0.99652445 0.49011367;
+	-6.18626378 -0.00216419 0.00130917 7.18409959 0.99333452 0.99652664 0.49012285;
+	-6.18656101 -0.00216279 0.00130839 7.18439822 0.99333900 0.99652882 0.49013200;
+	-6.18685724 -0.00216139 0.00130760 7.18469585 0.99334346 0.99653101 0.49014113;
+	-6.18715248 -0.00216000 0.00130682 7.18499249 0.99334793 0.99653319 0.49015022;
+	-6.18744673 -0.00215860 0.00130603 7.18528812 0.99335238 0.99653537 0.49015929;
+	-6.18773998 -0.00215721 0.00130525 7.18558277 0.99335684 0.99653754 0.49016833;
+	-6.18803225 -0.00215582 0.00130447 7.18587643 0.99336128 0.99653972 0.49017734;
+	-6.18832353 -0.00215443 0.00130369 7.18616911 0.99336572 0.99654189 0.49018632;
+	-6.18861384 -0.00215304 0.00130291 7.18646080 0.99337016 0.99654406 0.49019527;
+	-6.18890316 -0.00215165 0.00130213 7.18675152 0.99337459 0.99654622 0.49020420;
+	-6.18919152 -0.00215026 0.00130135 7.18704125 0.99337901 0.99654839 0.49021309;
+	-6.18947890 -0.00214888 0.00130057 7.18733002 0.99338343 0.99655055 0.49022196;
+	-6.18976532 -0.00214750 0.00129979 7.18761782 0.99338785 0.99655271 0.49023080;
+	-6.19005077 -0.00214612 0.00129901 7.18790465 0.99339226 0.99655487 0.49023961;
+	-6.19033526 -0.00214474 0.00129823 7.18819052 0.99339666 0.99655703 0.49024839;
+	-6.19061879 -0.00214336 0.00129746 7.18847543 0.99340106 0.99655918 0.49025714;
+	-6.19090136 -0.00214198 0.00129668 7.18875938 0.99340545 0.99656134 0.49026588;
+	-6.19118298 -0.00214061 0.00129591 7.18904238 0.99340984 0.99656349 0.49027457;
+	-6.19146366 -0.00213923 0.00129513 7.18932442 0.99341422 0.99656563 0.49028324;
+	-6.19174338 -0.00213786 0.00129436 7.18960552 0.99341860 0.99656778 0.49029189;
+	-6.19202217 -0.00213649 0.00129359 7.18988568 0.99342297 0.99656992 0.49030051;
+	-6.19230001 -0.00213512 0.00129281 7.19016489 0.99342734 0.99657207 0.49030909;
+	-6.19257691 -0.00213375 0.00129204 7.19044316 0.99343170 0.99657421 0.49031766;
+	-6.19285288 -0.00213239 0.00129127 7.19072050 0.99343606 0.99657634 0.49032619;
+	-6.19312792 -0.00213102 0.00129050 7.19099690 0.99344041 0.99657848 0.49033470;
+	-6.19340203 -0.00212966 0.00128973 7.19127237 0.99344475 0.99658061 0.49034317;
+	-6.19367521 -0.00212830 0.00128896 7.19154692 0.99344909 0.99658274 0.49035163;
+	-6.19394748 -0.00212694 0.00128819 7.19182054 0.99345343 0.99658487 0.49036006;
+	-6.19421882 -0.00212558 0.00128743 7.19209324 0.99345776 0.99658700 0.49036845;
+	-6.19448924 -0.00212422 0.00128666 7.19236502 0.99346208 0.99658912 0.49037683;
+	-6.19475875 -0.00212286 0.00128589 7.19263589 0.99346640 0.99659124 0.49038517;
+	-6.19502735 -0.00212151 0.00128513 7.19290584 0.99347072 0.99659336 0.49039349;
+	-6.19529504 -0.00212016 0.00128436 7.19317489 0.99347503 0.99659548 0.49040178;
+	-6.19556183 -0.00211880 0.00128360 7.19344302 0.99347933 0.99659760 0.49041005;
+	-6.19582771 -0.00211745 0.00128283 7.19371026 0.99348363 0.99659971 0.49041829;
+	-6.19609270 -0.00211611 0.00128207 7.19397659 0.99348792 0.99660182 0.49042650;
+	-6.19635678 -0.00211476 0.00128131 7.19424203 0.99349221 0.99660393 0.49043469;
+	-6.19661998 -0.00211341 0.00128054 7.19450656 0.99349650 0.99660604 0.49044285;
+	-6.19688228 -0.00211207 0.00127978 7.19477021 0.99350077 0.99660815 0.49045099;
+	-6.19714369 -0.00211073 0.00127902 7.19503297 0.99350505 0.99661025 0.49045909;
+	-6.19740422 -0.00210938 0.00127826 7.19529484 0.99350932 0.99661235 0.49046717;
+	-6.19766387 -0.00210804 0.00127750 7.19555583 0.99351358 0.99661445 0.49047523;
+	-6.19792264 -0.00210671 0.00127674 7.19581593 0.99351784 0.99661655 0.49048326;
+	-6.19818053 -0.00210537 0.00127599 7.19607516 0.99352209 0.99661864 0.49049127;
+	-6.19843754 -0.00210403 0.00127523 7.19633351 0.99352634 0.99662074 0.49049925;
+	-6.19869369 -0.00210270 0.00127447 7.19659099 0.99353058 0.99662283 0.49050720;
+	-6.19894896 -0.00210137 0.00127372 7.19684760 0.99353482 0.99662492 0.49051513;
+	-6.19920337 -0.00210004 0.00127296 7.19710334 0.99353905 0.99662700 0.49052303;
+	-6.19945692 -0.00209871 0.00127221 7.19735822 0.99354328 0.99662909 0.49053091;
+	-6.19970961 -0.00209738 0.00127145 7.19761223 0.99354750 0.99663117 0.49053876;
+	-6.19996144 -0.00209605 0.00127070 7.19786539 0.99355172 0.99663325 0.49054659;
+	-6.20021242 -0.00209473 0.00126995 7.19811769 0.99355593 0.99663533 0.49055439;
+	-6.20046254 -0.00209340 0.00126919 7.19836914 0.99356014 0.99663741 0.49056217;
+	-6.20071181 -0.00209208 0.00126844 7.19861973 0.99356434 0.99663948 0.49056992;
+	-6.20096024 -0.00209076 0.00126769 7.19886948 0.99356854 0.99664155 0.49057765;
+	-6.20120782 -0.00208944 0.00126694 7.19911839 0.99357273 0.99664362 0.49058536;
+	-6.20145457 -0.00208812 0.00126619 7.19936645 0.99357692 0.99664569 0.49059304;
+	-6.20170047 -0.00208680 0.00126544 7.19961367 0.99358110 0.99664776 0.49060069;
+	-6.20194554 -0.00208549 0.00126469 7.19986005 0.99358528 0.99664982 0.49060832;
+	-6.20218978 -0.00208417 0.00126395 7.20010560 0.99358945 0.99665188 0.49061593;
+	-6.20243318 -0.00208286 0.00126320 7.20035032 0.99359362 0.99665394 0.49062351;
+	-6.20267576 -0.00208155 0.00126245 7.20059421 0.99359778 0.99665600 0.49063106;
+	-6.20291751 -0.00208024 0.00126171 7.20083727 0.99360194 0.99665805 0.49063859;
+	-6.20315844 -0.00207893 0.00126096 7.20107951 0.99360609 0.99666011 0.49064611;
+	-6.20339855 -0.00207762 0.00126022 7.20132093 0.99361024 0.99666216 0.49065358;
+	-6.20363785 -0.00207632 0.00125947 7.20156153 0.99361438 0.99666421 0.49066104;
+	-6.20387633 -0.00207501 0.00125873 7.20180131 0.99361852 0.99666626 0.49066848;
+	-6.20411399 -0.00207371 0.00125799 7.20204028 0.99362265 0.99666830 0.49067589;
+	-6.20435085 -0.00207241 0.00125725 7.20227844 0.99362678 0.99667034 0.49068328;
+	-6.20458690 -0.00207111 0.00125650 7.20251579 0.99363090 0.99667238 0.49069064;
+	-6.20482215 -0.00206981 0.00125576 7.20275234 0.99363502 0.99667442 0.49069799;
+	-6.20505660 -0.00206852 0.00125502 7.20298808 0.99363914 0.99667646 0.49070530;
+	-6.20529024 -0.00206722 0.00125428 7.20322302 0.99364325 0.99667850 0.49071260;
+	-6.20552310 -0.00206593 0.00125355 7.20345717 0.99364735 0.99668053 0.49071987;
+	-6.20575515 -0.00206463 0.00125281 7.20369052 0.99365145 0.99668256 0.49072711;
+	-6.20598642 -0.00206334 0.00125207 7.20392308 0.99365554 0.99668459 0.49073434;
+	-6.20621690 -0.00206205 0.00125133 7.20415485 0.99365963 0.99668662 0.49074154;
+	-6.20644659 -0.00206076 0.00125060 7.20438583 0.99366372 0.99668864 0.49074872;
+	-6.20667550 -0.00205947 0.00124986 7.20461602 0.99366780 0.99669066 0.49075587;
+	-6.20690362 -0.00205819 0.00124913 7.20484543 0.99367187 0.99669268 0.49076300;
+	-6.20713097 -0.00205690 0.00124839 7.20507407 0.99367594 0.99669470 0.49077011;
+	-6.20735754 -0.00205562 0.00124766 7.20530192 0.99368001 0.99669672 0.49077720;
+	-6.20758334 -0.00205434 0.00124693 7.20552900 0.99368407 0.99669873 0.49078426;
+	-6.20780837 -0.00205306 0.00124619 7.20575531 0.99368812 0.99670075 0.49079130;
+	-6.20803263 -0.00205178 0.00124546 7.20598085 0.99369217 0.99670276 0.49079832;
+	-6.20825612 -0.00205050 0.00124473 7.20620562 0.99369622 0.99670477 0.49080531;
+	-6.20847885 -0.00204923 0.00124400 7.20642963 0.99370026 0.99670677 0.49081228;
+	-6.20870082 -0.00204795 0.00124327 7.20665287 0.99370430 0.99670878 0.49081924;
+	-6.20892203 -0.00204668 0.00124254 7.20687536 0.99370833 0.99671078 0.49082617;
+	-6.20914249 -0.00204540 0.00124181 7.20709708 0.99371236 0.99671278 0.49083307;
+	-6.20936219 -0.00204413 0.00124109 7.20731805 0.99371638 0.99671478 0.49083996;
+	-6.20958114 -0.00204286 0.00124036 7.20753827 0.99372040 0.99671678 0.49084681;
+	-6.20979934 -0.00204160 0.00123963 7.20775774 0.99372441 0.99671877 0.49085365;
+	-6.21001679 -0.00204033 0.00123891 7.20797646 0.99372842 0.99672076 0.49086047;
+	-6.21023350 -0.00203906 0.00123818 7.20819444 0.99373242 0.99672275 0.49086727;
+	-6.21044947 -0.00203780 0.00123746 7.20841167 0.99373642 0.99672474 0.49087404;
+	-6.21066470 -0.00203654 0.00123673 7.20862816 0.99374042 0.99672673 0.49088079;
+	-6.21087920 -0.00203528 0.00123601 7.20884392 0.99374441 0.99672871 0.49088752;
+	-6.21109295 -0.00203402 0.00123529 7.20905894 0.99374839 0.99673070 0.49089423;
+	-6.21130598 -0.00203276 0.00123456 7.20927322 0.99375237 0.99673268 0.49090092;
+	-6.21151828 -0.00203150 0.00123384 7.20948678 0.99375635 0.99673466 0.49090759;
+	-6.21172985 -0.00203024 0.00123312 7.20969960 0.99376032 0.99673663 0.49091423;
+	-6.21194069 -0.00202899 0.00123240 7.20991170 0.99376428 0.99673861 0.49092085;
+	-6.21215082 -0.00202774 0.00123168 7.21012308 0.99376825 0.99674058 0.49092745;
+	-6.21236022 -0.00202648 0.00123096 7.21033373 0.99377220 0.99674255 0.49093403;
+	-6.21256890 -0.00202523 0.00123025 7.21054367 0.99377616 0.99674452 0.49094059;
+	-6.21277687 -0.00202398 0.00122953 7.21075289 0.99378010 0.99674649 0.49094712;
+	-6.21298413 -0.00202274 0.00122881 7.21096139 0.99378405 0.99674845 0.49095364;
+	-6.21319067 -0.00202149 0.00122809 7.21116918 0.99378798 0.99675042 0.49096013;
+	-6.21339651 -0.00202025 0.00122738 7.21137627 0.99379192 0.99675238 0.49096661;
+	-6.21360164 -0.00201900 0.00122666 7.21158264 0.99379585 0.99675434 0.49097306;
+	-6.21380607 -0.00201776 0.00122595 7.21178831 0.99379977 0.99675629 0.49097950;
+	-6.21400979 -0.00201652 0.00122523 7.21199328 0.99380369 0.99675825 0.49098591;
+	-6.21421282 -0.00201528 0.00122452 7.21219754 0.99380761 0.99676020 0.49099230;
+	-6.21441515 -0.00201404 0.00122381 7.21240111 0.99381152 0.99676215 0.49099867;
+	-6.21461678 -0.00201280 0.00122310 7.21260398 0.99381543 0.99676410 0.49100502;
+	-6.21481773 -0.00201157 0.00122239 7.21280616 0.99381933 0.99676605 0.49101135;
+	-6.21501798 -0.00201033 0.00122167 7.21300765 0.99382323 0.99676799 0.49101767;
+	-6.21521754 -0.00200910 0.00122096 7.21320844 0.99382712 0.99676994 0.49102395;
+	-6.21541642 -0.00200787 0.00122026 7.21340855 0.99383101 0.99677188 0.49103022;
+	-6.21561461 -0.00200664 0.00121955 7.21360798 0.99383489 0.99677382 0.49103647;
+	-6.21581213 -0.00200541 0.00121884 7.21380672 0.99383877 0.99677575 0.49104269;
+	-6.21600896 -0.00200418 0.00121813 7.21400478 0.99384265 0.99677769 0.49104891;
+	-6.21620512 -0.00200295 0.00121742 7.21420217 0.99384652 0.99677962 0.49105509;
+	-6.21640060 -0.00200173 0.00121672 7.21439887 0.99385038 0.99678156 0.49106126;
+	-6.21659541 -0.00200050 0.00121601 7.21459491 0.99385424 0.99678349 0.49106741;
+	-6.21678955 -0.00199928 0.00121531 7.21479027 0.99385810 0.99678541 0.49107353;
+	-6.21698302 -0.00199806 0.00121460 7.21498497 0.99386195 0.99678734 0.49107964;
+	-6.21717583 -0.00199684 0.00121390 7.21517899 0.99386580 0.99678926 0.49108574;
+	-6.21736797 -0.00199562 0.00121320 7.21537235 0.99386965 0.99679119 0.49109180;
+	-6.21755945 -0.00199440 0.00121249 7.21556505 0.99387349 0.99679311 0.49109786;
+	-6.21775028 -0.00199319 0.00121179 7.21575709 0.99387732 0.99679502 0.49110388;
+	-6.21794044 -0.00199197 0.00121109 7.21594847 0.99388115 0.99679694 0.49110989;
+	-6.21812995 -0.00199076 0.00121039 7.21613919 0.99388498 0.99679885 0.49111588;
+	-6.21831881 -0.00198955 0.00120969 7.21632926 0.99388880 0.99680077 0.49112186;
+	-6.21850702 -0.00198833 0.00120899 7.21651868 0.99389261 0.99680268 0.49112781;
+	-6.21869457 -0.00198712 0.00120829 7.21670745 0.99389643 0.99680459 0.49113374;
+	-6.21888149 -0.00198592 0.00120759 7.21689557 0.99390024 0.99680649 0.49113965;
+	-6.21906775 -0.00198471 0.00120689 7.21708304 0.99390404 0.99680840 0.49114555;
+	-6.21925338 -0.00198350 0.00120620 7.21726987 0.99390784 0.99681030 0.49115142;
+	-6.21943836 -0.00198230 0.00120550 7.21745606 0.99391163 0.99681220 0.49115728;
+	-6.21962271 -0.00198110 0.00120481 7.21764161 0.99391542 0.99681410 0.49116312;
+	-6.21980642 -0.00197989 0.00120411 7.21782653 0.99391921 0.99681600 0.49116895;
+	-6.21998950 -0.00197869 0.00120342 7.21801081 0.99392299 0.99681789 0.49117474;
+	-6.22017194 -0.00197749 0.00120272 7.21819445 0.99392677 0.99681979 0.49118052;
+	-6.22035376 -0.00197630 0.00120203 7.21837746 0.99393054 0.99682168 0.49118629;
+	-6.22053495 -0.00197510 0.00120134 7.21855985 0.99393431 0.99682357 0.49119203;
+	-6.22071551 -0.00197390 0.00120064 7.21874161 0.99393808 0.99682545 0.49119776;
+	-6.22089545 -0.00197271 0.00119995 7.21892274 0.99394184 0.99682734 0.49120347;
+	-6.22107477 -0.00197152 0.00119926 7.21910325 0.99394559 0.99682922 0.49120916;
+	-6.22125347 -0.00197032 0.00119857 7.21928314 0.99394935 0.99683111 0.49121482;
+	-6.22143155 -0.00196913 0.00119788 7.21946242 0.99395309 0.99683299 0.49122047;
+	-6.22160902 -0.00196794 0.00119719 7.21964107 0.99395684 0.99683486 0.49122611;
+	-6.22178587 -0.00196676 0.00119650 7.21981911 0.99396058 0.99683674 0.49123173;
+	-6.22196211 -0.00196557 0.00119582 7.21999654 0.99396431 0.99683861 0.49123732;
+	-6.22213774 -0.00196438 0.00119513 7.22017336 0.99396804 0.99684049 0.49124290;
+	-6.22231277 -0.00196320 0.00119444 7.22034957 0.99397177 0.99684236 0.49124846;
+	-6.22248719 -0.00196202 0.00119376 7.22052517 0.99397549 0.99684423 0.49125400;
+	-6.22266101 -0.00196083 0.00119307 7.22070017 0.99397920 0.99684609 0.49125953;
+	-6.22283422 -0.00195965 0.00119239 7.22087457 0.99398292 0.99684796 0.49126504;
+	-6.22300684 -0.00195848 0.00119170 7.22104836 0.99398663 0.99684982 0.49127053;
+	-6.22317886 -0.00195730 0.00119102 7.22122156 0.99399033 0.99685168 0.49127600;
+	-6.22335028 -0.00195612 0.00119034 7.22139416 0.99399403 0.99685354 0.49128145;
+	-6.22352111 -0.00195495 0.00118965 7.22156617 0.99399773 0.99685540 0.49128689;
+	-6.22369135 -0.00195377 0.00118897 7.22173758 0.99400142 0.99685726 0.49129231;
+	-6.22386100 -0.00195260 0.00118829 7.22190841 0.99400511 0.99685911 0.49129771;
+	-6.22403007 -0.00195143 0.00118761 7.22207864 0.99400879 0.99686096 0.49130310;
+	-6.22419854 -0.00195026 0.00118693 7.22224829 0.99401247 0.99686281 0.49130846;
+	-6.22436644 -0.00194909 0.00118625 7.22241735 0.99401615 0.99686466 0.49131381;
+	-6.22453375 -0.00194792 0.00118557 7.22258583 0.99401982 0.99686651 0.49131914;
+	-6.22470048 -0.00194675 0.00118490 7.22275373 0.99402348 0.99686835 0.49132446;
+	-6.22486664 -0.00194559 0.00118422 7.22292105 0.99402715 0.99687019 0.49132975;
+	-6.22503222 -0.00194442 0.00118354 7.22308780 0.99403081 0.99687204 0.49133503;
+	-6.22519722 -0.00194326 0.00118287 7.22325396 0.99403446 0.99687387 0.49134030;
+	-6.22536166 -0.00194210 0.00118219 7.22341956 0.99403811 0.99687571 0.49134554;
+	-6.22552552 -0.00194094 0.00118152 7.22358458 0.99404176 0.99687755 0.49135077;
+	-6.22568881 -0.00193978 0.00118084 7.22374904 0.99404540 0.99687938 0.49135598;
+	-6.22585154 -0.00193862 0.00118017 7.22391292 0.99404904 0.99688121 0.49136117;
+	-6.22601370 -0.00193746 0.00117950 7.22407624 0.99405267 0.99688304 0.49136635;
+	-6.22617531 -0.00193631 0.00117882 7.22423900 0.99405630 0.99688487 0.49137152;
+	-6.22633635 -0.00193515 0.00117815 7.22440119 0.99405992 0.99688670 0.49137666;
+	-6.22649683 -0.00193400 0.00117748 7.22456283 0.99406354 0.99688852 0.49138179;
+	-6.22665675 -0.00193285 0.00117681 7.22472390 0.99406716 0.99689034 0.49138690;
+	-6.22681612 -0.00193170 0.00117614 7.22488442 0.99407077 0.99689216 0.49139199;
+	-6.22697494 -0.00193055 0.00117547 7.22504439 0.99407438 0.99689398 0.49139707;
+	-6.22713320 -0.00192940 0.00117480 7.22520380 0.99407799 0.99689580 0.49140214;
+	-6.22729092 -0.00192825 0.00117413 7.22536266 0.99408159 0.99689762 0.49140718;
+	-6.22744808 -0.00192711 0.00117346 7.22552098 0.99408519 0.99689943 0.49141221;
+	-6.22760470 -0.00192596 0.00117280 7.22567874 0.99408878 0.99690124 0.49141723;
+	-6.22776078 -0.00192482 0.00117213 7.22583596 0.99409237 0.99690305 0.49142222;
+	-6.22791631 -0.00192368 0.00117147 7.22599264 0.99409595 0.99690486 0.49142719;
+	-6.22807131 -0.00192253 0.00117080 7.22614877 0.99409953 0.99690667 0.49143216;
+	-6.22822576 -0.00192139 0.00117014 7.22630437 0.99410311 0.99690847 0.49143711;
+	-6.22837968 -0.00192026 0.00116947 7.22645942 0.99410668 0.99691027 0.49144204;
+	-6.22853306 -0.00191912 0.00116881 7.22661394 0.99411025 0.99691207 0.49144696;
+	-6.22868591 -0.00191798 0.00116815 7.22676793 0.99411381 0.99691387 0.49145186;
+	-6.22883823 -0.00191685 0.00116748 7.22692138 0.99411737 0.99691567 0.49145674;
+	-6.22899002 -0.00191571 0.00116682 7.22707430 0.99412093 0.99691747 0.49146161;
+	-6.22914128 -0.00191458 0.00116616 7.22722670 0.99412448 0.99691926 0.49146647;
+	-6.22929201 -0.00191345 0.00116550 7.22737856 0.99412803 0.99692105 0.49147130;
+	-6.22944222 -0.00191232 0.00116484 7.22752990 0.99413157 0.99692284 0.49147613;
+	-6.22959190 -0.00191119 0.00116418 7.22768071 0.99413511 0.99692463 0.49148093;
+	-6.22974107 -0.00191006 0.00116352 7.22783101 0.99413865 0.99692642 0.49148571;
+	-6.22988971 -0.00190893 0.00116286 7.22798078 0.99414218 0.99692820 0.49149049;
+	-6.23003784 -0.00190781 0.00116221 7.22813003 0.99414571 0.99692998 0.49149525;
+	-6.23018545 -0.00190669 0.00116155 7.22827877 0.99414924 0.99693176 0.49149999;
+	-6.23033255 -0.00190556 0.00116089 7.22842699 0.99415276 0.99693354 0.49150472;
+	-6.23047913 -0.00190444 0.00116024 7.22857469 0.99415627 0.99693532 0.49150944;
+	-6.23062521 -0.00190332 0.00115958 7.22872189 0.99415978 0.99693710 0.49151413;
+	-6.23077077 -0.00190220 0.00115893 7.22886857 0.99416329 0.99693887 0.49151881;
+	-6.23091583 -0.00190108 0.00115828 7.22901475 0.99416680 0.99694064 0.49152348;
+	-6.23106038 -0.00189996 0.00115762 7.22916042 0.99417030 0.99694241 0.49152813;
+	-6.23120443 -0.00189885 0.00115697 7.22930558 0.99417379 0.99694418 0.49153277;
+	-6.23134798 -0.00189773 0.00115632 7.22945024 0.99417729 0.99694595 0.49153739;
+	-6.23149102 -0.00189662 0.00115567 7.22959440 0.99418078 0.99694772 0.49154200;
+	-6.23163357 -0.00189551 0.00115501 7.22973806 0.99418426 0.99694948 0.49154659;
+	-6.23177562 -0.00189439 0.00115436 7.22988122 0.99418774 0.99695124 0.49155116;
+	-6.23191717 -0.00189328 0.00115371 7.23002389 0.99419122 0.99695300 0.49155572;
+	-6.23205823 -0.00189218 0.00115307 7.23016606 0.99419469 0.99695476 0.49156028;
+	-6.23219880 -0.00189107 0.00115242 7.23030773 0.99419816 0.99695652 0.49156481;
+	-6.23233888 -0.00188996 0.00115177 7.23044891 0.99420163 0.99695827 0.49156932;
+	-6.23247846 -0.00188886 0.00115112 7.23058961 0.99420509 0.99696002 0.49157383;
+	-6.23261756 -0.00188775 0.00115047 7.23072981 0.99420855 0.99696177 0.49157832;
+	-6.23275618 -0.00188665 0.00114983 7.23086953 0.99421200 0.99696352 0.49158279;
+	-6.23289431 -0.00188555 0.00114918 7.23100876 0.99421545 0.99696527 0.49158725;
+	-6.23303196 -0.00188444 0.00114854 7.23114751 0.99421890 0.99696702 0.49159170;
+	-6.23316912 -0.00188334 0.00114789 7.23128578 0.99422234 0.99696876 0.49159612;
+	-6.23330581 -0.00188225 0.00114725 7.23142357 0.99422578 0.99697050 0.49160053;
+	-6.23344202 -0.00188115 0.00114661 7.23156087 0.99422921 0.99697225 0.49160494;
+	-6.23357776 -0.00188005 0.00114596 7.23169771 0.99423264 0.99697398 0.49160932;
+	-6.23371302 -0.00187896 0.00114532 7.23183406 0.99423607 0.99697572 0.49161370;
+	-6.23384781 -0.00187786 0.00114468 7.23196994 0.99423949 0.99697746 0.49161806;
+	-6.23398212 -0.00187677 0.00114404 7.23210535 0.99424291 0.99697919 0.49162241;
+	-6.23411597 -0.00187568 0.00114340 7.23224029 0.99424633 0.99698092 0.49162674;
+	-6.23424935 -0.00187459 0.00114276 7.23237476 0.99424974 0.99698265 0.49163105;
+	-6.23438226 -0.00187350 0.00114212 7.23250876 0.99425315 0.99698438 0.49163535;
+	-6.23451471 -0.00187241 0.00114148 7.23264230 0.99425655 0.99698611 0.49163964;
+	-6.23464669 -0.00187132 0.00114084 7.23277537 0.99425995 0.99698783 0.49164392;
+	-6.23477821 -0.00187024 0.00114021 7.23290797 0.99426335 0.99698956 0.49164818;
+	-6.23490927 -0.00186915 0.00113957 7.23304012 0.99426674 0.99699128 0.49165242;
+	-6.23503988 -0.00186807 0.00113893 7.23317181 0.99427013 0.99699300 0.49165666;
+	-6.23517002 -0.00186698 0.00113830 7.23330304 0.99427352 0.99699472 0.49166087;
+	-6.23529971 -0.00186590 0.00113766 7.23343381 0.99427690 0.99699644 0.49166508;
+	-6.23542895 -0.00186482 0.00113703 7.23356413 0.99428028 0.99699815 0.49166927;
+	-6.23555773 -0.00186374 0.00113639 7.23369399 0.99428365 0.99699986 0.49167345;
+	-6.23568606 -0.00186267 0.00113576 7.23382340 0.99428702 0.99700157 0.49167762;
+	-6.23581395 -0.00186159 0.00113513 7.23395236 0.99429039 0.99700328 0.49168176;
+	-6.23594138 -0.00186051 0.00113449 7.23408087 0.99429375 0.99700499 0.49168591;
+	-6.23606837 -0.00185944 0.00113386 7.23420893 0.99429711 0.99700670 0.49169003;
+	-6.23619491 -0.00185836 0.00113323 7.23433655 0.99430047 0.99700840 0.49169415;
+	-6.23632102 -0.00185729 0.00113260 7.23446372 0.99430382 0.99701011 0.49169823;
+	-6.23644667 -0.00185622 0.00113197 7.23459045 0.99430717 0.99701181 0.49170232;
+	-6.23657189 -0.00185515 0.00113134 7.23471674 0.99431051 0.99701351 0.49170640;
+	-6.23669667 -0.00185408 0.00113071 7.23484259 0.99431385 0.99701521 0.49171044;
+	-6.23682101 -0.00185301 0.00113009 7.23496800 0.99431719 0.99701690 0.49171449;
+	-6.23694492 -0.00185195 0.00112946 7.23509297 0.99432052 0.99701860 0.49171853;
+	-6.23706839 -0.00185088 0.00112883 7.23521751 0.99432385 0.99702029 0.49172254;
+	-6.23719143 -0.00184981 0.00112820 7.23534161 0.99432718 0.99702198 0.49172655;
+	-6.23731403 -0.00184875 0.00112758 7.23546528 0.99433050 0.99702367 0.49173054;
+	-6.23743621 -0.00184769 0.00112695 7.23558852 0.99433382 0.99702536 0.49173452;
+	-6.23755795 -0.00184663 0.00112633 7.23571133 0.99433713 0.99702705 0.49173848;
+	-6.23767927 -0.00184557 0.00112570 7.23583371 0.99434044 0.99702873 0.49174243;
+	-6.23780017 -0.00184451 0.00112508 7.23595566 0.99434375 0.99703041 0.49174639;
+	-6.23792064 -0.00184345 0.00112446 7.23607719 0.99434706 0.99703209 0.49175031;
+	-6.23804068 -0.00184239 0.00112383 7.23619829 0.99435036 0.99703377 0.49175422;
+	-6.23816031 -0.00184134 0.00112321 7.23631897 0.99435365 0.99703545 0.49175813;
+	-6.23827952 -0.00184028 0.00112259 7.23643923 0.99435695 0.99703713 0.49176201;
+	-6.23839830 -0.00183923 0.00112197 7.23655907 0.99436024 0.99703880 0.49176589;
+	-6.23851667 -0.00183817 0.00112135 7.23667850 0.99436352 0.99704048 0.49176975;
+	-6.23863462 -0.00183712 0.00112073 7.23679750 0.99436680 0.99704215 0.49177361;
+	-6.23875216 -0.00183607 0.00112011 7.23691609 0.99437008 0.99704382 0.49177744;
+	-6.23886929 -0.00183502 0.00111949 7.23703427 0.99437336 0.99704548 0.49178127;
+	-6.23898600 -0.00183398 0.00111887 7.23715203 0.99437663 0.99704715 0.49178508;
+	-6.23910231 -0.00183293 0.00111826 7.23726938 0.99437990 0.99704881 0.49178889;
+	-6.23921820 -0.00183188 0.00111764 7.23738632 0.99438316 0.99705048 0.49179268;
+	-6.23933369 -0.00183084 0.00111702 7.23750286 0.99438642 0.99705214 0.49179645;
+	-6.23944877 -0.00182979 0.00111641 7.23761898 0.99438968 0.99705380 0.49180022;
+	-6.23956345 -0.00182875 0.00111579 7.23773470 0.99439293 0.99705546 0.49180397;
+	-6.23967773 -0.00182771 0.00111518 7.23785002 0.99439618 0.99705711 0.49180771;
+	-6.23979160 -0.00182667 0.00111456 7.23796493 0.99439943 0.99705877 0.49181144;
+	-6.23990507 -0.00182563 0.00111395 7.23807944 0.99440267 0.99706042 0.49181516;
+	-6.24001814 -0.00182459 0.00111334 7.23819355 0.99440591 0.99706207 0.49181886;
+	-6.24013082 -0.00182355 0.00111273 7.23830726 0.99440915 0.99706372 0.49182255;
+	-6.24024309 -0.00182251 0.00111211 7.23842058 0.99441238 0.99706537 0.49182623;
+	-6.24035498 -0.00182148 0.00111150 7.23853350 0.99441561 0.99706702 0.49182990;
+	-6.24046647 -0.00182045 0.00111089 7.23864602 0.99441884 0.99706866 0.49183355;
+	-6.24057756 -0.00181941 0.00111028 7.23875815 0.99442206 0.99707031 0.49183719;
+	-6.24068827 -0.00181838 0.00110967 7.23886989 0.99442528 0.99707195 0.49184083;
+	-6.24079858 -0.00181735 0.00110906 7.23898123 0.99442849 0.99707359 0.49184446;
+	-6.24090851 -0.00181632 0.00110846 7.23909219 0.99443170 0.99707523 0.49184806;
+	-6.24101805 -0.00181529 0.00110785 7.23920276 0.99443491 0.99707686 0.49185165;
+	-6.24112720 -0.00181426 0.00110724 7.23931294 0.99443812 0.99707850 0.49185524;
+	-6.24123597 -0.00181324 0.00110663 7.23942274 0.99444132 0.99708013 0.49185881;
+	-6.24134436 -0.00181221 0.00110603 7.23953215 0.99444451 0.99708176 0.49186237;
+	-6.24145237 -0.00181118 0.00110542 7.23964118 0.99444771 0.99708339 0.49186593;
+	-6.24155999 -0.00181016 0.00110482 7.23974983 0.99445090 0.99708502 0.49186947;
+	-6.24166723 -0.00180914 0.00110421 7.23985810 0.99445408 0.99708665 0.49187299;
+	-6.24177410 -0.00180812 0.00110361 7.23996598 0.99445727 0.99708828 0.49187651;
+	-6.24188059 -0.00180710 0.00110300 7.24007349 0.99446045 0.99708990 0.49188001;
+	-6.24198671 -0.00180608 0.00110240 7.24018063 0.99446363 0.99709152 0.49188351;
+	-6.24209245 -0.00180506 0.00110180 7.24028739 0.99446680 0.99709314 0.49188699;
+	-6.24219781 -0.00180404 0.00110120 7.24039377 0.99446997 0.99709476 0.49189046;
+	-6.24230281 -0.00180302 0.00110060 7.24049978 0.99447313 0.99709638 0.49189392;
+	-6.24240743 -0.00180201 0.00110000 7.24060543 0.99447630 0.99709800 0.49189737;
+	-6.24251169 -0.00180100 0.00109940 7.24071070 0.99447946 0.99709961 0.49190081;
+	-6.24261558 -0.00179998 0.00109880 7.24081560 0.99448261 0.99710122 0.49190424;
+	-6.24271910 -0.00179897 0.00109820 7.24092013 0.99448577 0.99710283 0.49190765;
+	-6.24282226 -0.00179796 0.00109760 7.24102430 0.99448891 0.99710444 0.49191105;
+	-6.24292505 -0.00179695 0.00109700 7.24112810 0.99449206 0.99710605 0.49191444;
+	-6.24302748 -0.00179594 0.00109640 7.24123154 0.99449520 0.99710766 0.49191782;
+	-6.24312955 -0.00179493 0.00109581 7.24133462 0.99449834 0.99710926 0.49192119;
+	-6.24323126 -0.00179392 0.00109521 7.24143733 0.99450148 0.99711087 0.49192455;
+	-6.24333261 -0.00179292 0.00109461 7.24153969 0.99450461 0.99711247 0.49192789;
+	-6.24343360 -0.00179191 0.00109402 7.24164168 0.99450774 0.99711407 0.49193123;
+	-6.24353423 -0.00179091 0.00109342 7.24174332 0.99451086 0.99711567 0.49193456;
+	-6.24363451 -0.00178991 0.00109283 7.24184460 0.99451399 0.99711726 0.49193787;
+	-6.24373444 -0.00178891 0.00109224 7.24194553 0.99451711 0.99711886 0.49194119;
+	-6.24383401 -0.00178790 0.00109164 7.24204610 0.99452022 0.99712045 0.49194448;
+	-6.24393323 -0.00178690 0.00109105 7.24214632 0.99452333 0.99712204 0.49194776;
+	-6.24403210 -0.00178591 0.00109046 7.24224619 0.99452644 0.99712364 0.49195103;
+	-6.24413062 -0.00178491 0.00108987 7.24234571 0.99452955 0.99712522 0.49195429;
+	-6.24422879 -0.00178391 0.00108928 7.24244488 0.99453265 0.99712681 0.49195755;
+	-6.24432661 -0.00178292 0.00108869 7.24254370 0.99453575 0.99712840 0.49196079;
+	-6.24442409 -0.00178192 0.00108810 7.24264217 0.99453884 0.99712998 0.49196402;
+	-6.24452123 -0.00178093 0.00108751 7.24274030 0.99454194 0.99713157 0.49196723;
+	-6.24461802 -0.00177993 0.00108692 7.24283808 0.99454502 0.99713315 0.49197045;
+	-6.24471446 -0.00177894 0.00108633 7.24293552 0.99454811 0.99713473 0.49197365;
+	-6.24481057 -0.00177795 0.00108574 7.24303262 0.99455119 0.99713630 0.49197684;
+	-6.24490634 -0.00177696 0.00108516 7.24312938 0.99455427 0.99713788 0.49198002;
+	-6.24500177 -0.00177597 0.00108457 7.24322579 0.99455735 0.99713946 0.49198318;
+	-6.24509686 -0.00177499 0.00108398 7.24332187 0.99456042 0.99714103 0.49198634;
+	-6.24519161 -0.00177400 0.00108340 7.24341761 0.99456349 0.99714260 0.49198949;
+	-6.24528603 -0.00177301 0.00108281 7.24351302 0.99456655 0.99714417 0.49199263;
+	-6.24538012 -0.00177203 0.00108223 7.24360809 0.99456961 0.99714574 0.49199575;
+	-6.24547387 -0.00177105 0.00108164 7.24370283 0.99457267 0.99714731 0.49199887;
+	-6.24556729 -0.00177006 0.00108106 7.24379723 0.99457573 0.99714887 0.49200198;
+	-6.24566038 -0.00176908 0.00108048 7.24389130 0.99457878 0.99715044 0.49200507;
+	-6.24575314 -0.00176810 0.00107990 7.24398504 0.99458183 0.99715200 0.49200817;
+	-6.24584557 -0.00176712 0.00107931 7.24407845 0.99458488 0.99715356 0.49201123;
+	-6.24593768 -0.00176614 0.00107873 7.24417153 0.99458792 0.99715512 0.49201431;
+	-6.24602946 -0.00176517 0.00107815 7.24426429 0.99459096 0.99715668 0.49201737;
+	-6.24612091 -0.00176419 0.00107757 7.24435672 0.99459400 0.99715824 0.49202041;
+	-6.24621204 -0.00176321 0.00107699 7.24444883 0.99459703 0.99715979 0.49202344;
+	-6.24630285 -0.00176224 0.00107641 7.24454061 0.99460006 0.99716135 0.49202647;
+	-6.24639333 -0.00176127 0.00107584 7.24463206 0.99460309 0.99716290 0.49202949;
+	-6.24648350 -0.00176029 0.00107526 7.24472320 0.99460611 0.99716445 0.49203250;
+	-6.24657334 -0.00175932 0.00107468 7.24481402 0.99460913 0.99716600 0.49203550;
+	-6.24666287 -0.00175835 0.00107410 7.24490451 0.99461215 0.99716755 0.49203848;
+	-6.24675208 -0.00175738 0.00107353 7.24499469 0.99461516 0.99716909 0.49204146;
+	-6.24684097 -0.00175641 0.00107295 7.24508455 0.99461817 0.99717064 0.49204443;
+	-6.24692955 -0.00175545 0.00107238 7.24517410 0.99462118 0.99717218 0.49204739;
+	-6.24701781 -0.00175448 0.00107180 7.24526333 0.99462418 0.99717372 0.49205033;
+	-6.24710576 -0.00175351 0.00107123 7.24535225 0.99462718 0.99717526 0.49205328;
+	-6.24719340 -0.00175255 0.00107065 7.24544085 0.99463018 0.99717680 0.49205621;
+	-6.24728073 -0.00175158 0.00107008 7.24552914 0.99463317 0.99717834 0.49205913;
+	-6.24736775 -0.00175062 0.00106951 7.24561712 0.99463617 0.99717987 0.49206204;
+	-6.24745446 -0.00174966 0.00106893 7.24570479 0.99463915 0.99718141 0.49206494;
+	-6.24754086 -0.00174870 0.00106836 7.24579216 0.99464214 0.99718294 0.49206783;
+	-6.24762695 -0.00174774 0.00106779 7.24587921 0.99464512 0.99718447 0.49207072;
+	-6.24771274 -0.00174678 0.00106722 7.24596596 0.99464810 0.99718600 0.49207359;
+	-6.24779823 -0.00174582 0.00106665 7.24605241 0.99465108 0.99718753 0.49207645;
+	-6.24788341 -0.00174487 0.00106608 7.24613854 0.99465405 0.99718905 0.49207931;
+	-6.24796829 -0.00174391 0.00106551 7.24622438 0.99465702 0.99719058 0.49208216;
+	-6.24805287 -0.00174296 0.00106494 7.24630991 0.99465998 0.99719210 0.49208499;
+	-6.24813715 -0.00174200 0.00106438 7.24639515 0.99466295 0.99719362 0.49208783;
+	-6.24822113 -0.00174105 0.00106381 7.24648008 0.99466591 0.99719514 0.49209064;
+	-6.24830481 -0.00174010 0.00106324 7.24656471 0.99466886 0.99719666 0.49209345;
+	-6.24838819 -0.00173915 0.00106267 7.24664905 0.99467182 0.99719818 0.49209625;
+	-6.24847128 -0.00173819 0.00106211 7.24673309 0.99467477 0.99719970 0.49209904;
+	-6.24855407 -0.00173725 0.00106154 7.24681683 0.99467771 0.99720121 0.49210182;
+	-6.24863657 -0.00173630 0.00106098 7.24690027 0.99468066 0.99720272 0.49210459;
+	-6.24871878 -0.00173535 0.00106041 7.24698343 0.99468360 0.99720424 0.49210735;
+	-6.24880069 -0.00173440 0.00105985 7.24706629 0.99468654 0.99720575 0.49211010;
+	-6.24888231 -0.00173346 0.00105929 7.24714886 0.99468947 0.99720725 0.49211286;
+	-6.24896365 -0.00173251 0.00105872 7.24723113 0.99469240 0.99720876 0.49211559;
+	-6.24904469 -0.00173157 0.00105816 7.24731312 0.99469533 0.99721027 0.49211832;
+	-6.24912545 -0.00173063 0.00105760 7.24739482 0.99469826 0.99721177 0.49212104;
+	-6.24920591 -0.00172969 0.00105704 7.24747623 0.99470118 0.99721327 0.49212375;
+	-6.24928610 -0.00172875 0.00105648 7.24755735 0.99470410 0.99721478 0.49212645;
+	-6.24936599 -0.00172781 0.00105592 7.24763819 0.99470702 0.99721628 0.49212915;
+	-6.24944561 -0.00172687 0.00105536 7.24771874 0.99470993 0.99721777 0.49213183;
+	-6.24952494 -0.00172593 0.00105480 7.24779901 0.99471284 0.99721927 0.49213451;
+	-6.24960399 -0.00172499 0.00105424 7.24787899 0.99471575 0.99722077 0.49213717;
+	-6.24968275 -0.00172406 0.00105368 7.24795870 0.99471865 0.99722226 0.49213983;
+	-6.24976124 -0.00172312 0.00105312 7.24803812 0.99472155 0.99722375 0.49214248;
+	-6.24983945 -0.00172219 0.00105257 7.24811726 0.99472445 0.99722524 0.49214512;
+	-6.24991738 -0.00172126 0.00105201 7.24819612 0.99472735 0.99722673 0.49214776;
+	-6.24999503 -0.00172032 0.00105145 7.24827471 0.99473024 0.99722822 0.49215038;
+	-6.25007241 -0.00171939 0.00105090 7.24835302 0.99473313 0.99722971 0.49215299;
+	-6.25014951 -0.00171846 0.00105034 7.24843105 0.99473601 0.99723119 0.49215561;
+	-6.25022634 -0.00171753 0.00104979 7.24850880 0.99473890 0.99723268 0.49215820;
+	-6.25030289 -0.00171660 0.00104923 7.24858628 0.99474178 0.99723416 0.49216079;
+	-6.25037917 -0.00171568 0.00104868 7.24866349 0.99474465 0.99723564 0.49216338;
+	-6.25045518 -0.00171475 0.00104813 7.24874043 0.99474753 0.99723712 0.49216595;
+	-6.25053092 -0.00171382 0.00104758 7.24881709 0.99475040 0.99723860 0.49216851;
+	-6.25060639 -0.00171290 0.00104702 7.24889349 0.99475327 0.99724008 0.49217106;
+	-6.25068159 -0.00171198 0.00104647 7.24896961 0.99475613 0.99724155 0.49217362;
+	-6.25075652 -0.00171105 0.00104592 7.24904547 0.99475899 0.99724303 0.49217616;
+	-6.25083119 -0.00171013 0.00104537 7.24912106 0.99476185 0.99724450 0.49217869;
+	-6.25090559 -0.00170921 0.00104482 7.24919638 0.99476471 0.99724597 0.49218121;
+	-6.25097972 -0.00170829 0.00104427 7.24927143 0.99476756 0.99724744 0.49218373;
+	-6.25105359 -0.00170737 0.00104372 7.24934622 0.99477041 0.99724891 0.49218624;
+	-6.25112720 -0.00170645 0.00104317 7.24942075 0.99477326 0.99725037 0.49218873;
+	-6.25120055 -0.00170554 0.00104262 7.24949501 0.99477610 0.99725184 0.49219122;
+	-6.25127363 -0.00170462 0.00104208 7.24956901 0.99477894 0.99725330 0.49219371;
+	-6.25134646 -0.00170370 0.00104153 7.24964275 0.99478178 0.99725477 0.49219618;
+	-6.25141902 -0.00170279 0.00104098 7.24971623 0.99478462 0.99725623 0.49219865;
+	-6.25149133 -0.00170188 0.00104044 7.24978945 0.99478745 0.99725769 0.49220112;
+	-6.25156338 -0.00170096 0.00103989 7.24986241 0.99479028 0.99725915 0.49220356;
+	-6.25163517 -0.00170005 0.00103935 7.24993512 0.99479311 0.99726060 0.49220600;
+	-6.25170670 -0.00169914 0.00103880 7.25000756 0.99479593 0.99726206 0.49220844;
+	-6.25177798 -0.00169823 0.00103826 7.25007975 0.99479875 0.99726351 0.49221087;
+	-6.25184901 -0.00169732 0.00103771 7.25015169 0.99480157 0.99726496 0.49221329;
+	-6.25191978 -0.00169641 0.00103717 7.25022337 0.99480438 0.99726642 0.49221570;
+	-6.25199031 -0.00169551 0.00103663 7.25029480 0.99480719 0.99726787 0.49221811;
+	-6.25206057 -0.00169460 0.00103609 7.25036598 0.99481000 0.99726931 0.49222050;
+	-6.25213059 -0.00169369 0.00103555 7.25043690 0.99481281 0.99727076 0.49222289;
+	-6.25220036 -0.00169279 0.00103500 7.25050757 0.99481561 0.99727221 0.49222527;
+	-6.25226988 -0.00169189 0.00103446 7.25057800 0.99481841 0.99727365 0.49222765;
+	-6.25233916 -0.00169098 0.00103392 7.25064817 0.99482121 0.99727509 0.49223001;
+	-6.25240818 -0.00169008 0.00103338 7.25071810 0.99482400 0.99727653 0.49223237;
+	-6.25247696 -0.00168918 0.00103285 7.25078778 0.99482680 0.99727797 0.49223472;
+	-6.25254550 -0.00168828 0.00103231 7.25085722 0.99482958 0.99727941 0.49223706;
+	-6.25261379 -0.00168738 0.00103177 7.25092640 0.99483237 0.99728085 0.49223939;
+	-6.25268183 -0.00168648 0.00103123 7.25099535 0.99483515 0.99728229 0.49224172;
+	-6.25274963 -0.00168559 0.00103069 7.25106405 0.99483793 0.99728372 0.49224404;
+	-6.25281720 -0.00168469 0.00103016 7.25113251 0.99484071 0.99728515 0.49224636;
+	-6.25288452 -0.00168379 0.00102962 7.25120072 0.99484348 0.99728659 0.49224866;
+	-6.25295160 -0.00168290 0.00102909 7.25126870 0.99484626 0.99728802 0.49225097;
+	-6.25301844 -0.00168200 0.00102855 7.25133643 0.99484902 0.99728945 0.49225325;
+	-6.25308504 -0.00168111 0.00102802 7.25140393 0.99485179 0.99729087 0.49225553;
+	-6.25315140 -0.00168022 0.00102748 7.25147118 0.99485455 0.99729230 0.49225780;
+	-6.25321753 -0.00167933 0.00102695 7.25153820 0.99485731 0.99729372 0.49226008;
+	-6.25328342 -0.00167844 0.00102641 7.25160498 0.99486007 0.99729515 0.49226233;
+	-6.25334907 -0.00167755 0.00102588 7.25167153 0.99486282 0.99729657 0.49226459;
+	-6.25341450 -0.00167666 0.00102535 7.25173784 0.99486558 0.99729799 0.49226684;
+	-6.25347968 -0.00167577 0.00102482 7.25180391 0.99486832 0.99729941 0.49226907;
+	-6.25354464 -0.00167489 0.00102429 7.25186975 0.99487107 0.99730083 0.49227131;
+	-6.25360936 -0.00167400 0.00102376 7.25193536 0.99487381 0.99730224 0.49227354;
+	-6.25367385 -0.00167312 0.00102323 7.25200074 0.99487655 0.99730366 0.49227575;
+	-6.25373811 -0.00167223 0.00102270 7.25206588 0.99487929 0.99730507 0.49227796;
+	-6.25380215 -0.00167135 0.00102217 7.25213080 0.99488202 0.99730649 0.49228016;
+	-6.25386595 -0.00167047 0.00102164 7.25219548 0.99488476 0.99730790 0.49228236;
+	-6.25392952 -0.00166958 0.00102111 7.25225994 0.99488749 0.99730931 0.49228455;
+	-6.25399287 -0.00166870 0.00102058 7.25232417 0.99489021 0.99731072 0.49228673;
+	-6.25405599 -0.00166782 0.00102005 7.25238817 0.99489294 0.99731212 0.49228892;
+	-6.25411889 -0.00166694 0.00101953 7.25245194 0.99489566 0.99731353 0.49229108;
+	-6.25418156 -0.00166607 0.00101900 7.25251549 0.99489837 0.99731493 0.49229324;
+	-6.25424401 -0.00166519 0.00101847 7.25257882 0.99490109 0.99731634 0.49229539;
+	-6.25430623 -0.00166431 0.00101795 7.25264192 0.99490380 0.99731774 0.49229754;
+	-6.25436823 -0.00166344 0.00101742 7.25270479 0.99490651 0.99731914 0.49229968;
+	-6.25443001 -0.00166256 0.00101690 7.25276745 0.99490922 0.99732054 0.49230182;
+	-6.25449157 -0.00166169 0.00101638 7.25282988 0.99491192 0.99732194 0.49230394;
+	-6.25455291 -0.00166082 0.00101585 7.25289209 0.99491462 0.99732333 0.49230606;
+	-6.25461403 -0.00165994 0.00101533 7.25295408 0.99491732 0.99732473 0.49230817;
+	-6.25467493 -0.00165907 0.00101481 7.25301586 0.99492002 0.99732612 0.49231027;
+	-6.25473561 -0.00165820 0.00101428 7.25307741 0.99492271 0.99732751 0.49231238;
+	-6.25479608 -0.00165733 0.00101376 7.25313874 0.99492540 0.99732890 0.49231446;
+	-6.25485633 -0.00165647 0.00101324 7.25319986 0.99492809 0.99733029 0.49231656;
+	-6.25491636 -0.00165560 0.00101272 7.25326076 0.99493077 0.99733168 0.49231863;
+	-6.25497618 -0.00165473 0.00101220 7.25332145 0.99493345 0.99733307 0.49232070;
+	-6.25503579 -0.00165386 0.00101168 7.25338192 0.99493613 0.99733445 0.49232277;
+	-6.25509518 -0.00165300 0.00101116 7.25344218 0.99493881 0.99733584 0.49232483;
+	-6.25515436 -0.00165214 0.00101064 7.25350222 0.99494148 0.99733722 0.49232688;
+	-6.25521333 -0.00165127 0.00101012 7.25356206 0.99494415 0.99733860 0.49232894;
+	-6.25527209 -0.00165041 0.00100961 7.25362168 0.99494682 0.99733998 0.49233097;
+	-6.25533063 -0.00164955 0.00100909 7.25368108 0.99494949 0.99734136 0.49233301;
+	-6.25538897 -0.00164869 0.00100857 7.25374028 0.99495215 0.99734274 0.49233504;
+	-6.25544710 -0.00164783 0.00100806 7.25379927 0.99495481 0.99734412 0.49233704;
+	-6.25550502 -0.00164697 0.00100754 7.25385805 0.99495747 0.99734549 0.49233906;
+	-6.25556273 -0.00164611 0.00100702 7.25391662 0.99496012 0.99734687 0.49234107;
+	-6.25562024 -0.00164525 0.00100651 7.25397499 0.99496278 0.99734824 0.49234308;
+	-6.25567754 -0.00164440 0.00100599 7.25403314 0.99496543 0.99734961 0.49234506;
+	-6.25573464 -0.00164354 0.00100548 7.25409110 0.99496807 0.99735098 0.49234706;
+	-6.25579153 -0.00164268 0.00100497 7.25414884 0.99497072 0.99735235 0.49234904;
+	-6.25584821 -0.00164183 0.00100445 7.25420638 0.99497336 0.99735372 0.49235101;
+	-6.25590470 -0.00164098 0.00100394 7.25426372 0.99497600 0.99735508 0.49235297;
+	-6.25596098 -0.00164012 0.00100343 7.25432086 0.99497863 0.99735645 0.49235495;
+	-6.25601706 -0.00163927 0.00100292 7.25437779 0.99498127 0.99735781 0.49235690;
+	-6.25607294 -0.00163842 0.00100241 7.25443452 0.99498390 0.99735917 0.49235884;
+	-6.25612862 -0.00163757 0.00100189 7.25449105 0.99498652 0.99736053 0.49236079;
+	-6.25618410 -0.00163672 0.00100138 7.25454738 0.99498915 0.99736189 0.49236272;
+	-6.25623938 -0.00163587 0.00100087 7.25460351 0.99499177 0.99736325 0.49236466;
+	-6.25629447 -0.00163503 0.00100036 7.25465944 0.99499439 0.99736461 0.49236658;
+	-6.25634936 -0.00163418 0.00099986 7.25471518 0.99499701 0.99736596 0.49236850;
+	-6.25640405 -0.00163333 0.00099935 7.25477071 0.99499963 0.99736732 0.49237042;
+	-6.25645854 -0.00163249 0.00099884 7.25482605 0.99500224 0.99736867 0.49237232;
+	-6.25651284 -0.00163164 0.00099833 7.25488119 0.99500485 0.99737002 0.49237422;
+	-6.25656694 -0.00163080 0.00099782 7.25493614 0.99500745 0.99737137 0.49237612;
+	-6.25662085 -0.00162996 0.00099732 7.25499089 0.99501006 0.99737272 0.49237800;
+	-6.25667457 -0.00162912 0.00099681 7.25504545 0.99501266 0.99737407 0.49237989;
+	-6.25672809 -0.00162828 0.00099631 7.25509982 0.99501526 0.99737542 0.49238176;
+	-6.25678143 -0.00162744 0.00099580 7.25515399 0.99501786 0.99737676 0.49238364;
+	-6.25683457 -0.00162660 0.00099530 7.25520797 0.99502045 0.99737811 0.49238550;
+	-6.25688752 -0.00162576 0.00099479 7.25526176 0.99502304 0.99737945 0.49238736;
+	-6.25694028 -0.00162492 0.00099429 7.25531536 0.99502563 0.99738079 0.49238921;
+	-6.25699285 -0.00162408 0.00099378 7.25536877 0.99502822 0.99738213 0.49239105;
+	-6.25704524 -0.00162325 0.00099328 7.25542199 0.99503080 0.99738347 0.49239289;
+	-6.25709743 -0.00162241 0.00099278 7.25547502 0.99503338 0.99738481 0.49239473;
+	-6.25714944 -0.00162158 0.00099228 7.25552786 0.99503596 0.99738615 0.49239656;
+	-6.25720127 -0.00162074 0.00099177 7.25558052 0.99503853 0.99738748 0.49239838;
+	-6.25725290 -0.00161991 0.00099127 7.25563299 0.99504111 0.99738881 0.49240020;
+	-6.25730435 -0.00161908 0.00099077 7.25568527 0.99504368 0.99739015 0.49240201;
+	-6.25735562 -0.00161825 0.00099027 7.25573737 0.99504625 0.99739148 0.49240381;
+	-6.25740670 -0.00161742 0.00098977 7.25578929 0.99504881 0.99739281 0.49240561;
+	-6.25745761 -0.00161659 0.00098927 7.25584102 0.99505137 0.99739414 0.49240741;
+	-6.25750832 -0.00161576 0.00098877 7.25589256 0.99505393 0.99739547 0.49240919;
+	-6.25755886 -0.00161493 0.00098828 7.25594393 0.99505649 0.99739679 0.49241098;
+	-6.25760921 -0.00161411 0.00098778 7.25599511 0.99505905 0.99739812 0.49241276;
+	-6.25765939 -0.00161328 0.00098728 7.25604611 0.99506160 0.99739944 0.49241453;
+	-6.25770938 -0.00161245 0.00098678 7.25609693 0.99506415 0.99740076 0.49241630;
+	-6.25775920 -0.00161163 0.00098629 7.25614757 0.99506670 0.99740209 0.49241806;
+	-6.25780883 -0.00161080 0.00098579 7.25619803 0.99506924 0.99740341 0.49241981;
+	-6.25785829 -0.00160998 0.00098529 7.25624831 0.99507179 0.99740472 0.49242156;
+	-6.25790757 -0.00160916 0.00098480 7.25629841 0.99507433 0.99740604 0.49242330;
+	-6.25795667 -0.00160834 0.00098430 7.25634834 0.99507686 0.99740736 0.49242504;
+	-6.25800560 -0.00160752 0.00098381 7.25639808 0.99507940 0.99740867 0.49242678;
+	-6.25805435 -0.00160670 0.00098332 7.25644766 0.99508193 0.99740999 0.49242849;
+	-6.25810293 -0.00160588 0.00098282 7.25649705 0.99508446 0.99741130 0.49243022;
+	-6.25815133 -0.00160506 0.00098233 7.25654627 0.99508699 0.99741261 0.49243193;
+	-6.25819956 -0.00160424 0.00098184 7.25659532 0.99508951 0.99741392 0.49243365;
+	-6.25824762 -0.00160342 0.00098134 7.25664419 0.99509203 0.99741523 0.49243535;
+	-6.25829550 -0.00160261 0.00098085 7.25669289 0.99509455 0.99741654 0.49243704;
+	-6.25834321 -0.00160179 0.00098036 7.25674142 0.99509707 0.99741784 0.49243875;
+	-6.25839075 -0.00160098 0.00097987 7.25678978 0.99509959 0.99741915 0.49244043;
+	-6.25843812 -0.00160017 0.00097938 7.25683796 0.99510210 0.99742045 0.49244213;
+	-6.25848532 -0.00159935 0.00097889 7.25688597 0.99510461 0.99742176 0.49244379;
+	-6.25853235 -0.00159854 0.00097840 7.25693381 0.99510712 0.99742306 0.49244547;
+	-6.25857922 -0.00159773 0.00097791 7.25698149 0.99510962 0.99742436 0.49244714;
+	-6.25862591 -0.00159692 0.00097742 7.25702899 0.99511212 0.99742566 0.49244880;
+	-6.25867244 -0.00159611 0.00097693 7.25707633 0.99511462 0.99742696 0.49245046;
+	-6.25871879 -0.00159530 0.00097645 7.25712350 0.99511712 0.99742825 0.49245210;
+	-6.25876499 -0.00159449 0.00097596 7.25717050 0.99511962 0.99742955 0.49245376;
+	-6.25881101 -0.00159368 0.00097547 7.25721733 0.99512211 0.99743084 0.49245539;
+	-6.25885688 -0.00159288 0.00097499 7.25726400 0.99512460 0.99743214 0.49245702;
+	-6.25890257 -0.00159207 0.00097450 7.25731050 0.99512709 0.99743343 0.49245866;
+	-6.25894810 -0.00159127 0.00097402 7.25735684 0.99512957 0.99743472 0.49246028;
+	-6.25899347 -0.00159046 0.00097353 7.25740301 0.99513205 0.99743601 0.49246190;
+	-6.25903868 -0.00158966 0.00097305 7.25744902 0.99513453 0.99743730 0.49246352;
+	-6.25908372 -0.00158886 0.00097256 7.25749487 0.99513701 0.99743858 0.49246513;
+	-6.25912861 -0.00158805 0.00097208 7.25754055 0.99513949 0.99743987 0.49246673;
+	-6.25917333 -0.00158725 0.00097159 7.25758607 0.99514196 0.99744115 0.49246833;
+	-6.25921789 -0.00158645 0.00097111 7.25763144 0.99514443 0.99744244 0.49246993;
+	-6.25926229 -0.00158565 0.00097063 7.25767664 0.99514690 0.99744372 0.49247152;
+	-6.25930653 -0.00158485 0.00097015 7.25772168 0.99514936 0.99744500 0.49247309;
+	-6.25935061 -0.00158406 0.00096966 7.25776656 0.99515183 0.99744628 0.49247468;
+	-6.25939453 -0.00158326 0.00096918 7.25781128 0.99515429 0.99744756 0.49247625;
+	-6.25943830 -0.00158246 0.00096870 7.25785584 0.99515675 0.99744884 0.49247782;
+	-6.25948191 -0.00158167 0.00096822 7.25790024 0.99515920 0.99745011 0.49247939;
+	-6.25952536 -0.00158087 0.00096774 7.25794449 0.99516165 0.99745139 0.49248095;
+	-6.25956866 -0.00158008 0.00096726 7.25798858 0.99516411 0.99745266 0.49248251;
+	-6.25961180 -0.00157928 0.00096678 7.25803252 0.99516655 0.99745393 0.49248405;
+	-6.25965478 -0.00157849 0.00096631 7.25807629 0.99516900 0.99745521 0.49248560;
+	-6.25969761 -0.00157770 0.00096583 7.25811992 0.99517144 0.99745648 0.49248715;
+	-6.25974029 -0.00157691 0.00096535 7.25816339 0.99517389 0.99745774 0.49248867;
+	-6.25978282 -0.00157612 0.00096487 7.25820670 0.99517633 0.99745901 0.49249021;
+	-6.25982519 -0.00157533 0.00096440 7.25824986 0.99517876 0.99746028 0.49249174;
+	-6.25986741 -0.00157454 0.00096392 7.25829287 0.99518120 0.99746154 0.49249325;
+	-6.25990947 -0.00157375 0.00096344 7.25833572 0.99518363 0.99746281 0.49249477;
+	-6.25995139 -0.00157296 0.00096297 7.25837843 0.99518606 0.99746407 0.49249628;
+	-6.25999315 -0.00157217 0.00096249 7.25842098 0.99518848 0.99746533 0.49249779;
+	-6.26003477 -0.00157139 0.00096202 7.25846338 0.99519091 0.99746659 0.49249929;
+	-6.26007624 -0.00157060 0.00096154 7.25850563 0.99519333 0.99746785 0.49250079;
+	-6.26011755 -0.00156982 0.00096107 7.25854773 0.99519575 0.99746911 0.49250228;
+	-6.26015872 -0.00156903 0.00096060 7.25858969 0.99519817 0.99747037 0.49250377;
+	-6.26019974 -0.00156825 0.00096012 7.25863149 0.99520058 0.99747163 0.49250524;
+	-6.26024061 -0.00156747 0.00095965 7.25867315 0.99520300 0.99747288 0.49250672;
+	-6.26028134 -0.00156669 0.00095918 7.25871465 0.99520541 0.99747414 0.49250819;
+	-6.26032192 -0.00156591 0.00095871 7.25875601 0.99520782 0.99747539 0.49250967;
+	-6.26036235 -0.00156513 0.00095823 7.25879723 0.99521022 0.99747664 0.49251114;
+	-6.26040264 -0.00156435 0.00095776 7.25883830 0.99521263 0.99747789 0.49251259;
+	-6.26044279 -0.00156357 0.00095729 7.25887922 0.99521503 0.99747914 0.49251404;
+	-6.26048279 -0.00156279 0.00095682 7.25892000 0.99521743 0.99748039 0.49251549;
+	-6.26052264 -0.00156201 0.00095635 7.25896063 0.99521982 0.99748163 0.49251694;
+	-6.26056235 -0.00156124 0.00095588 7.25900112 0.99522222 0.99748288 0.49251838;
+	-6.26060192 -0.00156046 0.00095542 7.25904146 0.99522461 0.99748412 0.49251982;
+	-6.26064135 -0.00155969 0.00095495 7.25908167 0.99522700 0.99748537 0.49252125;
+	-6.26068064 -0.00155891 0.00095448 7.25912173 0.99522939 0.99748661 0.49252269;
+	-6.26071978 -0.00155814 0.00095401 7.25916164 0.99523177 0.99748785 0.49252410;
+	-6.26075879 -0.00155737 0.00095354 7.25920142 0.99523415 0.99748909 0.49252552;
+	-6.26079765 -0.00155659 0.00095308 7.25924106 0.99523653 0.99749033 0.49252694;
+	-6.26083637 -0.00155582 0.00095261 7.25928055 0.99523891 0.99749157 0.49252834;
+	-6.26087496 -0.00155505 0.00095215 7.25931991 0.99524129 0.99749280 0.49252975;
+	-6.26091341 -0.00155428 0.00095168 7.25935912 0.99524366 0.99749404 0.49253116;
+	-6.26095171 -0.00155351 0.00095122 7.25939820 0.99524603 0.99749527 0.49253255;
+	-6.26098988 -0.00155274 0.00095075 7.25943714 0.99524840 0.99749651 0.49253394;
+	-6.26102792 -0.00155198 0.00095029 7.25947594 0.99525077 0.99749774 0.49253533;
+	-6.26106581 -0.00155121 0.00094982 7.25951460 0.99525313 0.99749897 0.49253672;
+	-6.26110357 -0.00155044 0.00094936 7.25955313 0.99525549 0.99750020 0.49253810;
+	-6.26114120 -0.00154968 0.00094890 7.25959152 0.99525785 0.99750143 0.49253947;
+	-6.26117869 -0.00154891 0.00094843 7.25962977 0.99526021 0.99750265 0.49254085;
+	-6.26121604 -0.00154815 0.00094797 7.25966789 0.99526256 0.99750388 0.49254220;
+	-6.26125326 -0.00154739 0.00094751 7.25970587 0.99526492 0.99750510 0.49254357;
+	-6.26129035 -0.00154662 0.00094705 7.25974372 0.99526727 0.99750633 0.49254493;
+	-6.26132730 -0.00154586 0.00094659 7.25978144 0.99526962 0.99750755 0.49254628;
+	-6.26136412 -0.00154510 0.00094613 7.25981902 0.99527196 0.99750877 0.49254763;
+	-6.26140081 -0.00154434 0.00094567 7.25985647 0.99527431 0.99750999 0.49254897;
+	-6.26143736 -0.00154358 0.00094521 7.25989378 0.99527665 0.99751121 0.49255032;
+	-6.26147379 -0.00154282 0.00094475 7.25993097 0.99527899 0.99751243 0.49255166;
+	-6.26151008 -0.00154206 0.00094429 7.25996802 0.99528132 0.99751365 0.49255299;
+	-6.26154624 -0.00154131 0.00094383 7.26000494 0.99528366 0.99751486 0.49255432;
+	-6.26158228 -0.00154055 0.00094337 7.26004173 0.99528599 0.99751608 0.49255564;
+	-6.26161818 -0.00153979 0.00094292 7.26007839 0.99528832 0.99751729 0.49255696;
+	-6.26165395 -0.00153904 0.00094246 7.26011492 0.99529065 0.99751851 0.49255828;
+	-6.26168960 -0.00153828 0.00094200 7.26015132 0.99529297 0.99751972 0.49255958;
+	-6.26172512 -0.00153753 0.00094155 7.26018759 0.99529530 0.99752093 0.49256090;
+	-6.26176051 -0.00153677 0.00094109 7.26022373 0.99529762 0.99752214 0.49256219;
+	-6.26179577 -0.00153602 0.00094063 7.26025975 0.99529994 0.99752334 0.49256349;
+	-6.26183090 -0.00153527 0.00094018 7.26029563 0.99530226 0.99752455 0.49256478;
+	-6.26186591 -0.00153452 0.00093972 7.26033139 0.99530457 0.99752576 0.49256609;
+	-6.26190080 -0.00153377 0.00093927 7.26036703 0.99530688 0.99752696 0.49256738;
+	-6.26193555 -0.00153302 0.00093882 7.26040254 0.99530919 0.99752817 0.49256866;
+	-6.26197019 -0.00153227 0.00093836 7.26043792 0.99531150 0.99752937 0.49256993;
+	-6.26200470 -0.00153152 0.00093791 7.26047317 0.99531381 0.99753057 0.49257121;
+	-6.26203908 -0.00153077 0.00093746 7.26050831 0.99531611 0.99753177 0.49257249;
+	-6.26207334 -0.00153003 0.00093700 7.26054331 0.99531841 0.99753297 0.49257375;
+	-6.26210748 -0.00152928 0.00093655 7.26057820 0.99532071 0.99753417 0.49257501;
+	-6.26214149 -0.00152853 0.00093610 7.26061296 0.99532301 0.99753537 0.49257629;
+	-6.26217539 -0.00152779 0.00093565 7.26064760 0.99532530 0.99753656 0.49257754;
+	-6.26220916 -0.00152705 0.00093520 7.26068211 0.99532759 0.99753776 0.49257879;
+	-6.26224280 -0.00152630 0.00093475 7.26071650 0.99532988 0.99753895 0.49258003;
+	-6.26227633 -0.00152556 0.00093430 7.26075077 0.99533217 0.99754014 0.49258128;
+	-6.26230974 -0.00152482 0.00093385 7.26078492 0.99533446 0.99754133 0.49258252;
+	-6.26234303 -0.00152408 0.00093340 7.26081895 0.99533674 0.99754253 0.49258376;
+	-6.26237620 -0.00152333 0.00093295 7.26085286 0.99533902 0.99754372 0.49258498;
+	-6.26240924 -0.00152259 0.00093250 7.26088665 0.99534130 0.99754490 0.49258622;
+	-6.26244217 -0.00152186 0.00093205 7.26092032 0.99534358 0.99754609 0.49258745;
+	-6.26247499 -0.00152112 0.00093161 7.26095387 0.99534586 0.99754728 0.49258868;
+	-6.26250768 -0.00152038 0.00093116 7.26098730 0.99534813 0.99754846 0.49258989;
+	-6.26254025 -0.00151964 0.00093071 7.26102061 0.99535040 0.99754965 0.49259110;
+	-6.26257271 -0.00151890 0.00093027 7.26105381 0.99535267 0.99755083 0.49259230;
+	-6.26260505 -0.00151817 0.00092982 7.26108689 0.99535493 0.99755201 0.49259351;
+	-6.26263728 -0.00151743 0.00092937 7.26111985 0.99535720 0.99755319 0.49259471;
+	-6.26266939 -0.00151670 0.00092893 7.26115269 0.99535946 0.99755437 0.49259592;
+	-6.26270138 -0.00151596 0.00092848 7.26118542 0.99536172 0.99755555 0.49259711;
+	-6.26273326 -0.00151523 0.00092804 7.26121803 0.99536398 0.99755673 0.49259829;
+	-6.26276503 -0.00151450 0.00092760 7.26125053 0.99536623 0.99755790 0.49259950;
+	-6.26279668 -0.00151377 0.00092715 7.26128291 0.99536849 0.99755908 0.49260067;
+	-6.26282822 -0.00151304 0.00092671 7.26131518 0.99537074 0.99756025 0.49260186;
+	-6.26285964 -0.00151231 0.00092627 7.26134733 0.99537299 0.99756143 0.49260303;
+	-6.26289095 -0.00151158 0.00092582 7.26137937 0.99537524 0.99756260 0.49260421;
+	-6.26292215 -0.00151085 0.00092538 7.26141130 0.99537748 0.99756377 0.49260538;
+	-6.26295323 -0.00151012 0.00092494 7.26144311 0.99537972 0.99756494 0.49260653;
+	-6.26298421 -0.00150939 0.00092450 7.26147481 0.99538196 0.99756611 0.49260770;
+	-6.26301507 -0.00150866 0.00092406 7.26150640 0.99538420 0.99756728 0.49260887;
+	-6.26304582 -0.00150794 0.00092362 7.26153788 0.99538644 0.99756844 0.49261002;
+	-6.26307646 -0.00150721 0.00092318 7.26156925 0.99538867 0.99756961 0.49261117;
+	-6.26310699 -0.00150649 0.00092274 7.26160050 0.99539091 0.99757078 0.49261231;
+	-6.26313741 -0.00150576 0.00092230 7.26163165 0.99539314 0.99757194 0.49261347;
+	-6.26316772 -0.00150504 0.00092186 7.26166269 0.99539536 0.99757310 0.49261461;
+	-6.26319793 -0.00150431 0.00092142 7.26169361 0.99539759 0.99757426 0.49261575;
+	-6.26322802 -0.00150359 0.00092098 7.26172443 0.99539981 0.99757542 0.49261688;
+	-6.26325801 -0.00150287 0.00092055 7.26175513 0.99540204 0.99757658 0.49261801;
+	-6.26328788 -0.00150215 0.00092011 7.26178573 0.99540426 0.99757774 0.49261913;
+	-6.26331765 -0.00150143 0.00091967 7.26181623 0.99540647 0.99757890 0.49262025;
+	-6.26334732 -0.00150071 0.00091924 7.26184661 0.99540869 0.99758006 0.49262138;
+	-6.26337687 -0.00149999 0.00091880 7.26187688 0.99541090 0.99758121 0.49262250;
+	-6.26340633 -0.00149927 0.00091836 7.26190705 0.99541311 0.99758236 0.49262361;
+	-6.26343567 -0.00149855 0.00091793 7.26193712 0.99541532 0.99758352 0.49262472;
+	-6.26346491 -0.00149784 0.00091749 7.26196707 0.99541753 0.99758467 0.49262583;
+	-6.26349404 -0.00149712 0.00091706 7.26199692 0.99541974 0.99758582 0.49262693;
+	-6.26352307 -0.00149640 0.00091662 7.26202667 0.99542194 0.99758697 0.49262803;
+	-6.26355200 -0.00149569 0.00091619 7.26205631 0.99542414 0.99758812 0.49262913;
+	-6.26358082 -0.00149498 0.00091576 7.26208585 0.99542634 0.99758927 0.49263021;
+	-6.26360954 -0.00149426 0.00091532 7.26211528 0.99542854 0.99759042 0.49263131;
+	-6.26363815 -0.00149355 0.00091489 7.26214460 0.99543073 0.99759156 0.49263239;
+	-6.26366666 -0.00149284 0.00091446 7.26217383 0.99543292 0.99759271 0.49263348;
+	-6.26369507 -0.00149212 0.00091403 7.26220295 0.99543511 0.99759385 0.49263456;
+	-6.26372338 -0.00149141 0.00091359 7.26223197 0.99543730 0.99759499 0.49263563;
+	-6.26375159 -0.00149070 0.00091316 7.26226088 0.99543949 0.99759613 0.49263671;
+	-6.26377969 -0.00148999 0.00091273 7.26228970 0.99544167 0.99759728 0.49263778;
+	-6.26380769 -0.00148928 0.00091230 7.26231841 0.99544386 0.99759841 0.49263884;
+	-6.26383560 -0.00148857 0.00091187 7.26234702 0.99544604 0.99759955 0.49263991;
+	-6.26386340 -0.00148787 0.00091144 7.26237553 0.99544821 0.99760069 0.49264097;
+	-6.26389110 -0.00148716 0.00091101 7.26240394 0.99545039 0.99760183 0.49264203;
+	-6.26391870 -0.00148645 0.00091058 7.26243225 0.99545257 0.99760296 0.49264308;
+	-6.26394621 -0.00148575 0.00091016 7.26246046 0.99545474 0.99760410 0.49264413;
+	-6.26397361 -0.00148504 0.00090973 7.26248857 0.99545691 0.99760523 0.49264518;
+	-6.26400092 -0.00148434 0.00090930 7.26251658 0.99545908 0.99760636 0.49264622;
+	-6.26402813 -0.00148363 0.00090887 7.26254449 0.99546124 0.99760750 0.49264726;
+	-6.26405524 -0.00148293 0.00090844 7.26257231 0.99546341 0.99760863 0.49264830;
+	-6.26408225 -0.00148223 0.00090802 7.26260002 0.99546557 0.99760976 0.49264934;
+	-6.26410916 -0.00148152 0.00090759 7.26262764 0.99546773 0.99761088 0.49265036;
+	-6.26413598 -0.00148082 0.00090717 7.26265516 0.99546989 0.99761201 0.49265140;
+	-6.26416271 -0.00148012 0.00090674 7.26268258 0.99547204 0.99761314 0.49265242;
+	-6.26418933 -0.00147942 0.00090631 7.26270991 0.99547420 0.99761426 0.49265345;
+	-6.26421586 -0.00147872 0.00090589 7.26273714 0.99547635 0.99761539 0.49265447;
+	-6.26424230 -0.00147802 0.00090547 7.26276428 0.99547850 0.99761651 0.49265547;
+	-6.26426864 -0.00147733 0.00090504 7.26279132 0.99548065 0.99761763 0.49265649;
+	-6.26429489 -0.00147663 0.00090462 7.26281826 0.99548279 0.99761875 0.49265751;
+	-6.26432104 -0.00147593 0.00090419 7.26284511 0.99548494 0.99761987 0.49265851;
+	-6.26434710 -0.00147523 0.00090377 7.26287186 0.99548708 0.99762099 0.49265951;
+	-6.26437306 -0.00147454 0.00090335 7.26289852 0.99548922 0.99762211 0.49266051;
+	-6.26439893 -0.00147384 0.00090293 7.26292509 0.99549136 0.99762323 0.49266151;
+	-6.26442471 -0.00147315 0.00090250 7.26295156 0.99549349 0.99762435 0.49266249;
+	-6.26445040 -0.00147246 0.00090208 7.26297794 0.99549563 0.99762546 0.49266350;
+	-6.26447599 -0.00147176 0.00090166 7.26300423 0.99549776 0.99762658 0.49266448;
+	-6.26450150 -0.00147107 0.00090124 7.26303043 0.99549989 0.99762769 0.49266547;
+	-6.26452691 -0.00147038 0.00090082 7.26305653 0.99550202 0.99762880 0.49266646;
+	-6.26455222 -0.00146969 0.00090040 7.26308254 0.99550415 0.99762991 0.49266744;
+	-6.26457745 -0.00146900 0.00089998 7.26310846 0.99550627 0.99763102 0.49266841;
+	-6.26460259 -0.00146831 0.00089956 7.26313428 0.99550839 0.99763213 0.49266939;
+	-6.26462764 -0.00146762 0.00089914 7.26316002 0.99551051 0.99763324 0.49267035;
+	-6.26465259 -0.00146693 0.00089872 7.26318567 0.99551263 0.99763435 0.49267132;
+	-6.26467746 -0.00146624 0.00089831 7.26321122 0.99551475 0.99763545 0.49267230;
+	-6.26470224 -0.00146555 0.00089789 7.26323669 0.99551686 0.99763656 0.49267325;
+	-6.26472693 -0.00146486 0.00089747 7.26326207 0.99551898 0.99763766 0.49267421;
+	-6.26475153 -0.00146418 0.00089705 7.26328735 0.99552109 0.99763877 0.49267517;
+	-6.26477604 -0.00146349 0.00089664 7.26331255 0.99552319 0.99763987 0.49267611;
+	-6.26480047 -0.00146281 0.00089622 7.26333766 0.99552530 0.99764097 0.49267707;
+	-6.26482481 -0.00146212 0.00089580 7.26336268 0.99552741 0.99764207 0.49267802;
+	-6.26484906 -0.00146144 0.00089539 7.26338762 0.99552951 0.99764317 0.49267897;
+	-6.26487322 -0.00146076 0.00089497 7.26341246 0.99553161 0.99764427 0.49267991;
+	-6.26489730 -0.00146007 0.00089456 7.26343722 0.99553371 0.99764537 0.49268085;
+	-6.26492129 -0.00145939 0.00089414 7.26346189 0.99553581 0.99764646 0.49268179;
+	-6.26494519 -0.00145871 0.00089373 7.26348648 0.99553790 0.99764756 0.49268272;
+	-6.26496901 -0.00145803 0.00089332 7.26351098 0.99553999 0.99764865 0.49268365;
+	-6.26499274 -0.00145735 0.00089290 7.26353539 0.99554209 0.99764975 0.49268458;
+	-6.26501639 -0.00145667 0.00089249 7.26355972 0.99554417 0.99765084 0.49268549;
+	-6.26503995 -0.00145599 0.00089208 7.26358396 0.99554626 0.99765193 0.49268643;
+	-6.26506343 -0.00145531 0.00089166 7.26360811 0.99554835 0.99765302 0.49268735;
+	-6.26508682 -0.00145463 0.00089125 7.26363219 0.99555043 0.99765411 0.49268826;
+	-6.26511013 -0.00145396 0.00089084 7.26365617 0.99555251 0.99765520 0.49268918;
+	-6.26513336 -0.00145328 0.00089043 7.26368008 0.99555459 0.99765629 0.49269008;
+	-6.26515650 -0.00145261 0.00089002 7.26370389 0.99555667 0.99765738 0.49269099;
+	-6.26517956 -0.00145193 0.00088961 7.26372763 0.99555875 0.99765846 0.49269190;
+	-6.26520254 -0.00145126 0.00088920 7.26375128 0.99556082 0.99765955 0.49269281;
+	-6.26522543 -0.00145058 0.00088879 7.26377485 0.99556289 0.99766063 0.49269370;
+	-6.26524824 -0.00144991 0.00088838 7.26379834 0.99556496 0.99766171 0.49269460;
+	-6.26527098 -0.00144924 0.00088797 7.26382174 0.99556703 0.99766280 0.49269550;
+	-6.26529363 -0.00144856 0.00088756 7.26384506 0.99556910 0.99766388 0.49269640;
+	-6.26531619 -0.00144789 0.00088715 7.26386830 0.99557116 0.99766496 0.49269728;
+	-6.26533868 -0.00144722 0.00088674 7.26389146 0.99557323 0.99766604 0.49269817;
+	-6.26536109 -0.00144655 0.00088634 7.26391454 0.99557529 0.99766711 0.49269905;
+	-6.26538341 -0.00144588 0.00088593 7.26393753 0.99557735 0.99766819 0.49269994;
+	-6.26540566 -0.00144521 0.00088552 7.26396045 0.99557940 0.99766927 0.49270083;
+	-6.26542783 -0.00144454 0.00088511 7.26398329 0.99558146 0.99767034 0.49270168;
+	-6.26544992 -0.00144387 0.00088471 7.26400604 0.99558351 0.99767142 0.49270256;
+	-6.26547192 -0.00144321 0.00088430 7.26402872 0.99558556 0.99767249 0.49270344;
+	-6.26549385 -0.00144254 0.00088390 7.26405131 0.99558761 0.99767356 0.49270431;
+	-6.26551570 -0.00144187 0.00088349 7.26407383 0.99558966 0.99767463 0.49270518;
+	-6.26553748 -0.00144121 0.00088309 7.26409627 0.99559171 0.99767571 0.49270604;
+	-6.26555917 -0.00144054 0.00088268 7.26411863 0.99559375 0.99767678 0.49270690;
+	-6.26558079 -0.00143988 0.00088228 7.26414091 0.99559579 0.99767784 0.49270776;
+	-6.26560233 -0.00143922 0.00088187 7.26416311 0.99559783 0.99767891 0.49270862;
+	-6.26562379 -0.00143855 0.00088147 7.26418524 0.99559987 0.99767998 0.49270947;
+	-6.26564518 -0.00143789 0.00088107 7.26420729 0.99560191 0.99768104 0.49271032;
+	-6.26566648 -0.00143723 0.00088066 7.26422926 0.99560394 0.99768211 0.49271118;
+	-6.26568772 -0.00143657 0.00088026 7.26425115 0.99560598 0.99768317 0.49271202;
+	-6.26570887 -0.00143590 0.00087986 7.26427297 0.99560801 0.99768424 0.49271286;
+	-6.26572995 -0.00143524 0.00087946 7.26429471 0.99561004 0.99768530 0.49271371;
+	-6.26575096 -0.00143458 0.00087906 7.26431637 0.99561206 0.99768636 0.49271455;
+	-6.26577189 -0.00143393 0.00087865 7.26433796 0.99561409 0.99768742 0.49271537;
+	-6.26579274 -0.00143327 0.00087825 7.26435948 0.99561611 0.99768848 0.49271621;
+	-6.26581352 -0.00143261 0.00087785 7.26438092 0.99561813 0.99768954 0.49271704;
+	-6.26583423 -0.00143195 0.00087745 7.26440228 0.99562015 0.99769059 0.49271787;
+	-6.26585486 -0.00143130 0.00087705 7.26442357 0.99562217 0.99769165 0.49271871;
+	-6.26587542 -0.00143064 0.00087665 7.26444478 0.99562419 0.99769271 0.49271954;
+	-6.26589591 -0.00142998 0.00087626 7.26446592 0.99562620 0.99769376 0.49272035;
+	-6.26591632 -0.00142933 0.00087586 7.26448699 0.99562822 0.99769482 0.49272117;
+	-6.26593666 -0.00142867 0.00087546 7.26450798 0.99563023 0.99769587 0.49272198;
+	-6.26595692 -0.00142802 0.00087506 7.26452890 0.99563224 0.99769692 0.49272279;
+	-6.26597711 -0.00142737 0.00087466 7.26454975 0.99563424 0.99769797 0.49272362;
+	-6.26599724 -0.00142671 0.00087426 7.26457052 0.99563625 0.99769902 0.49272441;
+	-6.26601728 -0.00142606 0.00087387 7.26459122 0.99563825 0.99770007 0.49272522;
+	-6.26603726 -0.00142541 0.00087347 7.26461185 0.99564025 0.99770112 0.49272604;
+	-6.26605717 -0.00142476 0.00087307 7.26463241 0.99564225 0.99770217 0.49272683;
+	-6.26607700 -0.00142411 0.00087268 7.26465289 0.99564425 0.99770321 0.49272764;
+	-6.26609676 -0.00142346 0.00087228 7.26467331 0.99564625 0.99770426 0.49272843;
+	-6.26611646 -0.00142281 0.00087189 7.26469365 0.99564824 0.99770530 0.49272921;
+	-6.26613608 -0.00142216 0.00087149 7.26471392 0.99565024 0.99770635 0.49273003;
+	-6.26615563 -0.00142151 0.00087110 7.26473412 0.99565223 0.99770739 0.49273081;
+	-6.26617512 -0.00142087 0.00087070 7.26475425 0.99565422 0.99770843 0.49273160;
+	-6.26619453 -0.00142022 0.00087031 7.26477431 0.99565620 0.99770947 0.49273238;
+	-6.26621387 -0.00141957 0.00086992 7.26479430 0.99565819 0.99771051 0.49273317;
+	-6.26623315 -0.00141893 0.00086952 7.26481422 0.99566017 0.99771155 0.49273396;
+	-6.26625235 -0.00141828 0.00086913 7.26483407 0.99566216 0.99771259 0.49273473;
+	-6.26627149 -0.00141764 0.00086874 7.26485385 0.99566414 0.99771362 0.49273551;
+	-6.26629056 -0.00141699 0.00086835 7.26487356 0.99566612 0.99771466 0.49273628;
+	-6.26630956 -0.00141635 0.00086795 7.26489321 0.99566809 0.99771570 0.49273706;
+	-6.26632849 -0.00141571 0.00086756 7.26491278 0.99567007 0.99771673 0.49273783;
+	-6.26634735 -0.00141506 0.00086717 7.26493229 0.99567204 0.99771776 0.49273859;
+	-6.26636615 -0.00141442 0.00086678 7.26495173 0.99567401 0.99771880 0.49273935;
+	-6.26638488 -0.00141378 0.00086639 7.26497110 0.99567598 0.99771983 0.49274013;
+	-6.26640355 -0.00141314 0.00086600 7.26499041 0.99567795 0.99772086 0.49274089;
+	-6.26642214 -0.00141250 0.00086561 7.26500964 0.99567992 0.99772189 0.49274164;
+	-6.26644067 -0.00141186 0.00086522 7.26502881 0.99568188 0.99772292 0.49274241;
+	-6.26645914 -0.00141122 0.00086483 7.26504792 0.99568384 0.99772395 0.49274316;
+	-6.26647754 -0.00141058 0.00086444 7.26506695 0.99568580 0.99772497 0.49274392;
+	-6.26649587 -0.00140995 0.00086405 7.26508592 0.99568776 0.99772600 0.49274466;
+	-6.26651414 -0.00140931 0.00086366 7.26510483 0.99568972 0.99772703 0.49274542;
+	-6.26653234 -0.00140867 0.00086328 7.26512367 0.99569168 0.99772805 0.49274618;
+	-6.26655048 -0.00140804 0.00086289 7.26514244 0.99569363 0.99772908 0.49274690;
+	-6.26656855 -0.00140740 0.00086250 7.26516115 0.99569558 0.99773010 0.49274765;
+	-6.26658656 -0.00140677 0.00086211 7.26517979 0.99569753 0.99773112 0.49274839;
+	-6.26660450 -0.00140613 0.00086173 7.26519837 0.99569948 0.99773214 0.49274912;
+	-6.26662238 -0.00140550 0.00086134 7.26521688 0.99570143 0.99773316 0.49274986;
+	-6.26664020 -0.00140486 0.00086096 7.26523533 0.99570337 0.99773418 0.49275059;
+	-6.26665795 -0.00140423 0.00086057 7.26525372 0.99570532 0.99773520 0.49275132;
+	-6.26667564 -0.00140360 0.00086018 7.26527204 0.99570726 0.99773622 0.49275206;
+	-6.26669326 -0.00140297 0.00085980 7.26529030 0.99570920 0.99773723 0.49275276;
+	-6.26671083 -0.00140234 0.00085942 7.26530849 0.99571114 0.99773825 0.49275350;
+	-6.26672833 -0.00140171 0.00085903 7.26532662 0.99571307 0.99773926 0.49275423;
+	-6.26674577 -0.00140108 0.00085865 7.26534469 0.99571501 0.99774028 0.49275495;
+	-6.26676314 -0.00140045 0.00085826 7.26536270 0.99571694 0.99774129 0.49275567;
+	-6.26678046 -0.00139982 0.00085788 7.26538064 0.99571887 0.99774230 0.49275639;
+	-6.26679771 -0.00139919 0.00085750 7.26539852 0.99572080 0.99774331 0.49275711;
+	-6.26681490 -0.00139856 0.00085711 7.26541634 0.99572273 0.99774433 0.49275782;
+	-6.26683203 -0.00139793 0.00085673 7.26543410 0.99572466 0.99774533 0.49275852;
+	-6.26684910 -0.00139731 0.00085635 7.26545179 0.99572658 0.99774634 0.49275924;
+	-6.26686611 -0.00139668 0.00085597 7.26546943 0.99572851 0.99774735 0.49275995;
+	-6.26688306 -0.00139605 0.00085559 7.26548700 0.99573043 0.99774836 0.49276065;
+	-6.26689994 -0.00139543 0.00085521 7.26550451 0.99573235 0.99774936 0.49276134;
+	-6.26691677 -0.00139481 0.00085482 7.26552196 0.99573426 0.99775037 0.49276204;
+	-6.26693354 -0.00139418 0.00085444 7.26553936 0.99573618 0.99775137 0.49276274;
+	-6.26695024 -0.00139356 0.00085406 7.26555669 0.99573809 0.99775238 0.49276344;
+	-6.26696689 -0.00139293 0.00085368 7.26557396 0.99574001 0.99775338 0.49276413;
+	-6.26698348 -0.00139231 0.00085331 7.26559117 0.99574192 0.99775438 0.49276484;
+	-6.26700001 -0.00139169 0.00085293 7.26560832 0.99574383 0.99775538 0.49276553;
+	-6.26701648 -0.00139107 0.00085255 7.26562541 0.99574574 0.99775638 0.49276621;
+	-6.26703289 -0.00139045 0.00085217 7.26564245 0.99574764 0.99775738 0.49276691;
+	-6.26704925 -0.00138983 0.00085179 7.26565942 0.99574955 0.99775838 0.49276759;
+	-6.26706554 -0.00138921 0.00085141 7.26567633 0.99575145 0.99775938 0.49276826;
+	-6.26708178 -0.00138859 0.00085104 7.26569319 0.99575335 0.99776038 0.49276895;
+	-6.26709796 -0.00138797 0.00085066 7.26570999 0.99575525 0.99776137 0.49276963;
+	-6.26711408 -0.00138735 0.00085028 7.26572673 0.99575715 0.99776237 0.49277030;
+	-6.26713015 -0.00138674 0.00084990 7.26574341 0.99575904 0.99776336 0.49277097;
+	-6.26714616 -0.00138612 0.00084953 7.26576004 0.99576094 0.99776435 0.49277165;
+	-6.26716211 -0.00138550 0.00084915 7.26577661 0.99576283 0.99776535 0.49277232;
+	-6.26717800 -0.00138489 0.00084878 7.26579312 0.99576472 0.99776634 0.49277298;
+	-6.26719384 -0.00138427 0.00084840 7.26580957 0.99576661 0.99776733 0.49277366;
+	-6.26720962 -0.00138366 0.00084803 7.26582597 0.99576850 0.99776832 0.49277432;
+	-6.26722535 -0.00138304 0.00084765 7.26584231 0.99577038 0.99776931 0.49277499;
+	-6.26724102 -0.00138243 0.00084728 7.26585859 0.99577227 0.99777029 0.49277565;
+	-6.26725663 -0.00138181 0.00084690 7.26587482 0.99577415 0.99777128 0.49277630;
+	-6.26727219 -0.00138120 0.00084653 7.26589099 0.99577603 0.99777227 0.49277698;
+	-6.26728769 -0.00138059 0.00084616 7.26590710 0.99577791 0.99777325 0.49277763;
+	-6.26730314 -0.00137998 0.00084578 7.26592316 0.99577979 0.99777424 0.49277828;
+	-6.26731854 -0.00137937 0.00084541 7.26593917 0.99578166 0.99777522 0.49277893;
+	-6.26733388 -0.00137876 0.00084504 7.26595512 0.99578354 0.99777621 0.49277959;
+	-6.26734916 -0.00137815 0.00084467 7.26597101 0.99578541 0.99777719 0.49278024;
+	-6.26736439 -0.00137754 0.00084429 7.26598685 0.99578728 0.99777817 0.49278088;
+	-6.26737957 -0.00137693 0.00084392 7.26600264 0.99578915 0.99777915 0.49278153;
+	-6.26739469 -0.00137632 0.00084355 7.26601837 0.99579102 0.99778013 0.49278219;
+	-6.26740976 -0.00137571 0.00084318 7.26603405 0.99579289 0.99778111 0.49278281;
+	-6.26742477 -0.00137510 0.00084281 7.26604967 0.99579475 0.99778209 0.49278347;
+	-6.26743974 -0.00137450 0.00084244 7.26606524 0.99579661 0.99778306 0.49278410;
+	-6.26745464 -0.00137389 0.00084207 7.26608075 0.99579847 0.99778404 0.49278472;
+	-6.26746950 -0.00137328 0.00084170 7.26609622 0.99580033 0.99778502 0.49278536;
+	-6.26748430 -0.00137268 0.00084133 7.26611162 0.99580219 0.99778599 0.49278600;
+	-6.26749906 -0.00137207 0.00084096 7.26612698 0.99580405 0.99778696 0.49278663;
+	-6.26751375 -0.00137147 0.00084059 7.26614228 0.99580590 0.99778794 0.49278724;
+	-6.26752840 -0.00137087 0.00084022 7.26615753 0.99580776 0.99778891 0.49278789;
+	-6.26754300 -0.00137026 0.00083986 7.26617273 0.99580961 0.99778988 0.49278852;
+	-6.26755754 -0.00136966 0.00083949 7.26618788 0.99581146 0.99779085 0.49278914;
+	-6.26757203 -0.00136906 0.00083912 7.26620297 0.99581331 0.99779182 0.49278975;
+	-6.26758647 -0.00136846 0.00083875 7.26621801 0.99581515 0.99779279 0.49279037;
+	-6.26760086 -0.00136786 0.00083839 7.26623300 0.99581700 0.99779376 0.49279099;
+	-6.26761520 -0.00136725 0.00083802 7.26624794 0.99581884 0.99779472 0.49279161;
+	-6.26762949 -0.00136665 0.00083765 7.26626283 0.99582068 0.99779569 0.49279223;
+	-6.26764372 -0.00136605 0.00083729 7.26627767 0.99582252 0.99779666 0.49279284;
+	-6.26765791 -0.00136546 0.00083692 7.26629245 0.99582436 0.99779762 0.49279345;
+	-6.26767205 -0.00136486 0.00083656 7.26630719 0.99582620 0.99779859 0.49279407;
+	-6.26768613 -0.00136426 0.00083619 7.26632187 0.99582804 0.99779955 0.49279468;
+	-6.26770017 -0.00136366 0.00083583 7.26633651 0.99582987 0.99780051 0.49279528;
+	-6.26771416 -0.00136306 0.00083546 7.26635109 0.99583170 0.99780147 0.49279588;
+	-6.26772809 -0.00136247 0.00083510 7.26636562 0.99583353 0.99780243 0.49279649;
+	-6.26774198 -0.00136187 0.00083474 7.26638011 0.99583536 0.99780339 0.49279710;
+	-6.26775582 -0.00136128 0.00083437 7.26639454 0.99583719 0.99780435 0.49279770;
+	-6.26776961 -0.00136068 0.00083401 7.26640893 0.99583902 0.99780531 0.49279829;
+	-6.26778335 -0.00136009 0.00083365 7.26642326 0.99584084 0.99780627 0.49279888;
+	-6.26779704 -0.00135949 0.00083328 7.26643755 0.99584266 0.99780722 0.49279946;
+	-6.26781069 -0.00135890 0.00083292 7.26645179 0.99584449 0.99780818 0.49280008;
+	-6.26782428 -0.00135831 0.00083256 7.26646598 0.99584631 0.99780913 0.49280067;
+	-6.26783783 -0.00135771 0.00083220 7.26648012 0.99584812 0.99781009 0.49280125;
+	-6.26785133 -0.00135712 0.00083184 7.26649421 0.99584994 0.99781104 0.49280185;
+	-6.26786479 -0.00135653 0.00083148 7.26650826 0.99585175 0.99781199 0.49280244;
+	-6.26787819 -0.00135594 0.00083111 7.26652225 0.99585357 0.99781295 0.49280301;
+	-6.26789155 -0.00135535 0.00083075 7.26653620 0.99585538 0.99781390 0.49280360;
+	-6.26790486 -0.00135476 0.00083039 7.26655010 0.99585719 0.99781485 0.49280419;
+	-6.26791812 -0.00135417 0.00083003 7.26656395 0.99585900 0.99781580 0.49280476;
+	-6.26793134 -0.00135358 0.00082967 7.26657776 0.99586081 0.99781675 0.49280534;
+	-6.26794451 -0.00135299 0.00082931 7.26659152 0.99586261 0.99781769 0.49280594;
+	-6.26795764 -0.00135240 0.00082896 7.26660523 0.99586442 0.99781864 0.49280650;
+	-6.26797071 -0.00135182 0.00082860 7.26661890 0.99586622 0.99781959 0.49280708;
+	-6.26798374 -0.00135123 0.00082824 7.26663252 0.99586802 0.99782053 0.49280764;
+	-6.26799673 -0.00135064 0.00082788 7.26664609 0.99586982 0.99782148 0.49280822;
+	-6.26800967 -0.00135006 0.00082752 7.26665961 0.99587162 0.99782242 0.49280878;
+	-6.26802256 -0.00134947 0.00082717 7.26667309 0.99587341 0.99782336 0.49280935;
+	-6.26803541 -0.00134889 0.00082681 7.26668653 0.99587521 0.99782431 0.49280992;
+	-6.26804822 -0.00134830 0.00082645 7.26669991 0.99587700 0.99782525 0.49281048;
+	-6.26806098 -0.00134772 0.00082609 7.26671326 0.99587879 0.99782619 0.49281107;
+	-6.26807369 -0.00134713 0.00082574 7.26672655 0.99588058 0.99782713 0.49281162;
+	-6.26808636 -0.00134655 0.00082538 7.26673981 0.99588237 0.99782807 0.49281218;
+	-6.26809898 -0.00134597 0.00082503 7.26675301 0.99588416 0.99782900 0.49281274;
+	-6.26811156 -0.00134539 0.00082467 7.26676617 0.99588595 0.99782994 0.49281329;
+	-6.26812410 -0.00134481 0.00082432 7.26677929 0.99588773 0.99783088 0.49281384;
+	-6.26813659 -0.00134422 0.00082396 7.26679236 0.99588951 0.99783181 0.49281439;
+	-6.26814904 -0.00134364 0.00082361 7.26680539 0.99589129 0.99783275 0.49281496;
+	-6.26816144 -0.00134306 0.00082325 7.26681838 0.99589307 0.99783368 0.49281552;
+	-6.26817380 -0.00134248 0.00082290 7.26683132 0.99589485 0.99783462 0.49281605;
+	-6.26818612 -0.00134191 0.00082255 7.26684421 0.99589663 0.99783555 0.49281661;
+	-6.26819839 -0.00134133 0.00082219 7.26685706 0.99589840 0.99783648 0.49281716;
+	-6.26821062 -0.00134075 0.00082184 7.26686987 0.99590018 0.99783741 0.49281769;
+	-6.26822281 -0.00134017 0.00082149 7.26688264 0.99590195 0.99783834 0.49281824;
+	-6.26823495 -0.00133959 0.00082113 7.26689536 0.99590372 0.99783927 0.49281878;
+	-6.26824705 -0.00133902 0.00082078 7.26690804 0.99590549 0.99784020 0.49281933;
+	-6.26825911 -0.00133844 0.00082043 7.26692067 0.99590725 0.99784113 0.49281987;
+	-6.26827113 -0.00133787 0.00082008 7.26693326 0.99590902 0.99784206 0.49282040;
+	-6.26828310 -0.00133729 0.00081973 7.26694581 0.99591078 0.99784298 0.49282094;
+	-6.26829504 -0.00133672 0.00081938 7.26695832 0.99591255 0.99784391 0.49282147;
+	-6.26830693 -0.00133614 0.00081902 7.26697079 0.99591431 0.99784483 0.49282201;
+	-6.26831878 -0.00133557 0.00081867 7.26698321 0.99591607 0.99784576 0.49282254;
+	-6.26833058 -0.00133499 0.00081832 7.26699559 0.99591783 0.99784668 0.49282308;
+	-6.26834235 -0.00133442 0.00081797 7.26700793 0.99591958 0.99784760 0.49282360;
+	-6.26835407 -0.00133385 0.00081762 7.26702023 0.99592134 0.99784853 0.49282414;
+	-6.26836576 -0.00133328 0.00081728 7.26703248 0.99592309 0.99784945 0.49282465;
+	-6.26837740 -0.00133271 0.00081693 7.26704469 0.99592485 0.99785037 0.49282520;
+	-6.26838900 -0.00133214 0.00081658 7.26705687 0.99592660 0.99785129 0.49282572;
+	-6.26840056 -0.00133157 0.00081623 7.26706900 0.99592835 0.99785221 0.49282624;
+	-6.26841209 -0.00133100 0.00081588 7.26708109 0.99593009 0.99785312 0.49282676;
+	-6.26842357 -0.00133043 0.00081553 7.26709314 0.99593184 0.99785404 0.49282728;
+	-6.26843501 -0.00132986 0.00081519 7.26710515 0.99593359 0.99785496 0.49282780;
+	-6.26844641 -0.00132929 0.00081484 7.26711712 0.99593533 0.99785587 0.49282829;
+	-6.26845777 -0.00132872 0.00081449 7.26712905 0.99593707 0.99785679 0.49282883;
+	-6.26846909 -0.00132815 0.00081414 7.26714093 0.99593881 0.99785770 0.49282934;
+	-6.26848037 -0.00132759 0.00081380 7.26715278 0.99594055 0.99785862 0.49282986;
+	-6.26849161 -0.00132702 0.00081345 7.26716459 0.99594229 0.99785953 0.49283037;
+	-6.26850281 -0.00132645 0.00081311 7.26717636 0.99594402 0.99786044 0.49283087;
+	-6.26851397 -0.00132589 0.00081276 7.26718809 0.99594576 0.99786135 0.49283138;
+	-6.26852510 -0.00132532 0.00081242 7.26719977 0.99594749 0.99786226 0.49283189;
+	-6.26853618 -0.00132476 0.00081207 7.26721142 0.99594922 0.99786317 0.49283239;
+	-6.26854723 -0.00132419 0.00081173 7.26722303 0.99595095 0.99786408 0.49283291;
+	-6.26855824 -0.00132363 0.00081138 7.26723461 0.99595268 0.99786499 0.49283341;
+	-6.26856921 -0.00132307 0.00081104 7.26724614 0.99595441 0.99786590 0.49283391;
+	-6.26858014 -0.00132251 0.00081069 7.26725763 0.99595614 0.99786680 0.49283441;
+	-6.26859103 -0.00132194 0.00081035 7.26726909 0.99595786 0.99786771 0.49283490;
+	-6.26860188 -0.00132138 0.00081001 7.26728050 0.99595958 0.99786861 0.49283543;
+	-6.26861270 -0.00132082 0.00080966 7.26729188 0.99596131 0.99786952 0.49283590;
+	-6.26862348 -0.00132026 0.00080932 7.26730322 0.99596303 0.99787042 0.49283641;
+	-6.26863422 -0.00131970 0.00080898 7.26731452 0.99596474 0.99787132 0.49283690;
+	-6.26864493 -0.00131914 0.00080864 7.26732579 0.99596646 0.99787223 0.49283740;
+	-6.26865559 -0.00131858 0.00080829 7.26733701 0.99596818 0.99787313 0.49283789;
+	-6.26866622 -0.00131802 0.00080795 7.26734820 0.99596989 0.99787403 0.49283838;
+	-6.26867681 -0.00131746 0.00080761 7.26735935 0.99597160 0.99787493 0.49283886;
+	-6.26868737 -0.00131690 0.00080727 7.26737047 0.99597332 0.99787583 0.49283935;
+	-6.26869789 -0.00131635 0.00080693 7.26738154 0.99597503 0.99787673 0.49283983;
+	-6.26870837 -0.00131579 0.00080659 7.26739258 0.99597673 0.99787762 0.49284032;
+	-6.26871882 -0.00131523 0.00080625 7.26740358 0.99597844 0.99787852 0.49284083;
+	-6.26872923 -0.00131468 0.00080591 7.26741455 0.99598015 0.99787942 0.49284129;
+	-6.26873960 -0.00131412 0.00080557 7.26742548 0.99598185 0.99788031 0.49284178;
+	-6.26874993 -0.00131357 0.00080523 7.26743637 0.99598355 0.99788121 0.49284226;
+	-6.26876024 -0.00131301 0.00080489 7.26744723 0.99598526 0.99788210 0.49284273;
+	-6.26877050 -0.00131246 0.00080455 7.26745804 0.99598696 0.99788299 0.49284320;
+	-6.26878073 -0.00131190 0.00080421 7.26746883 0.99598865 0.99788389 0.49284369;
+	-6.26879092 -0.00131135 0.00080387 7.26747958 0.99599035 0.99788478 0.49284417;
+	-6.26880108 -0.00131080 0.00080354 7.26749029 0.99599205 0.99788567 0.49284465;
+	-6.26881120 -0.00131024 0.00080320 7.26750096 0.99599374 0.99788656 0.49284510;
+	-6.26882129 -0.00130969 0.00080286 7.26751160 0.99599543 0.99788745 0.49284559;
+	-6.26883135 -0.00130914 0.00080252 7.26752221 0.99599713 0.99788834 0.49284606;
+	-6.26884136 -0.00130859 0.00080219 7.26753278 0.99599882 0.99788923 0.49284653;
+	-6.26885135 -0.00130804 0.00080185 7.26754331 0.99600050 0.99789011 0.49284699;
+	-6.26886129 -0.00130749 0.00080151 7.26755381 0.99600219 0.99789100 0.49284746;
+	-6.26887121 -0.00130694 0.00080118 7.26756427 0.99600388 0.99789189 0.49284793;
+	-6.26888109 -0.00130639 0.00080084 7.26757470 0.99600556 0.99789277 0.49284838;
+	-6.26889093 -0.00130584 0.00080051 7.26758509 0.99600724 0.99789365 0.49284885;
+	-6.26890074 -0.00130529 0.00080017 7.26759545 0.99600893 0.99789454 0.49284932;
+	-6.26891052 -0.00130474 0.00079984 7.26760578 0.99601061 0.99789542 0.49284977;
+	-6.26892026 -0.00130420 0.00079950 7.26761607 0.99601228 0.99789630 0.49285024;
+	-6.26892997 -0.00130365 0.00079917 7.26762633 0.99601396 0.99789719 0.49285069;
+	-6.26893965 -0.00130310 0.00079883 7.26763655 0.99601564 0.99789807 0.49285114;
+	-6.26894929 -0.00130256 0.00079850 7.26764674 0.99601731 0.99789895 0.49285162;
+	-6.26895890 -0.00130201 0.00079816 7.26765689 0.99601899 0.99789983 0.49285206;
+	-6.26896848 -0.00130146 0.00079783 7.26766701 0.99602066 0.99790070 0.49285251;
+	-6.26897802 -0.00130092 0.00079750 7.26767710 0.99602233 0.99790158 0.49285297;
+	-6.26898753 -0.00130038 0.00079717 7.26768715 0.99602400 0.99790246 0.49285344;
+	-6.26899700 -0.00129983 0.00079683 7.26769717 0.99602566 0.99790334 0.49285388;
+	-6.26900645 -0.00129929 0.00079650 7.26770716 0.99602733 0.99790421 0.49285432;
+	-6.26901586 -0.00129875 0.00079617 7.26771711 0.99602900 0.99790509 0.49285477;
+	-6.26902524 -0.00129820 0.00079584 7.26772703 0.99603066 0.99790596 0.49285523;
+	-6.26903458 -0.00129766 0.00079550 7.26773692 0.99603232 0.99790683 0.49285566;
+	-6.26904390 -0.00129712 0.00079517 7.26774678 0.99603398 0.99790771 0.49285611;
+	-6.26905318 -0.00129658 0.00079484 7.26775660 0.99603564 0.99790858 0.49285655;
+	-6.26906243 -0.00129604 0.00079451 7.26776639 0.99603730 0.99790945 0.49285701;
+	-6.26907164 -0.00129550 0.00079418 7.26777615 0.99603896 0.99791032 0.49285743;
+	-6.26908083 -0.00129496 0.00079385 7.26778587 0.99604061 0.99791119 0.49285787;
+	-6.26908998 -0.00129442 0.00079352 7.26779557 0.99604227 0.99791206 0.49285833;
+	-6.26909911 -0.00129388 0.00079319 7.26780523 0.99604392 0.99791293 0.49285876;
+	-6.26910820 -0.00129334 0.00079286 7.26781486 0.99604557 0.99791380 0.49285921;
+	-6.26911726 -0.00129280 0.00079253 7.26782446 0.99604722 0.99791467 0.49285963;
+	-6.26912629 -0.00129226 0.00079220 7.26783402 0.99604887 0.99791553 0.49286007;
+	-6.26913528 -0.00129173 0.00079188 7.26784356 0.99605051 0.99791640 0.49286049;
+	-6.26914425 -0.00129119 0.00079155 7.26785306 0.99605216 0.99791726 0.49286093;
+	-6.26915318 -0.00129065 0.00079122 7.26786253 0.99605380 0.99791813 0.49286138;
+	-6.26916209 -0.00129012 0.00079089 7.26787197 0.99605545 0.99791899 0.49286178;
+	-6.26917096 -0.00128958 0.00079056 7.26788138 0.99605709 0.99791985 0.49286223;
+	-6.26917981 -0.00128905 0.00079024 7.26789076 0.99605873 0.99792072 0.49286266;
+	-6.26918862 -0.00128851 0.00078991 7.26790011 0.99606037 0.99792158 0.49286308;
+	-6.26919740 -0.00128798 0.00078958 7.26790942 0.99606201 0.99792244 0.49286350;
+	-6.26920615 -0.00128744 0.00078926 7.26791871 0.99606364 0.99792330 0.49286392;
+	-6.26921488 -0.00128691 0.00078893 7.26792797 0.99606528 0.99792416 0.49286436;
+	-6.26922357 -0.00128638 0.00078860 7.26793719 0.99606691 0.99792502 0.49286478;
+	-6.26923223 -0.00128585 0.00078828 7.26794639 0.99606854 0.99792588 0.49286521;
+	-6.26924086 -0.00128531 0.00078795 7.26795555 0.99607017 0.99792673 0.49286564;
+	-6.26924947 -0.00128478 0.00078763 7.26796468 0.99607180 0.99792759 0.49286605;
+	-6.26925804 -0.00128425 0.00078730 7.26797379 0.99607343 0.99792845 0.49286646;
+	-6.26926658 -0.00128372 0.00078698 7.26798286 0.99607506 0.99792930 0.49286689;
+	-6.26927510 -0.00128319 0.00078665 7.26799191 0.99607668 0.99793016 0.49286730;
+	-6.26928358 -0.00128266 0.00078633 7.26800092 0.99607831 0.99793101 0.49286770;
+	-6.26929204 -0.00128213 0.00078601 7.26800991 0.99607993 0.99793186 0.49286812;
+	-6.26930047 -0.00128160 0.00078568 7.26801887 0.99608155 0.99793272 0.49286854;
+	-6.26930887 -0.00128107 0.00078536 7.26802779 0.99608317 0.99793357 0.49286895;
+	-6.26931724 -0.00128054 0.00078504 7.26803669 0.99608479 0.99793442 0.49286937;
+	-6.26932558 -0.00128002 0.00078471 7.26804556 0.99608641 0.99793527 0.49286977;
+	-6.26933389 -0.00127949 0.00078439 7.26805440 0.99608802 0.99793612 0.49287019;
+	-6.26934217 -0.00127896 0.00078407 7.26806321 0.99608964 0.99793697 0.49287058;
+	-6.26935043 -0.00127844 0.00078375 7.26807199 0.99609125 0.99793782 0.49287100;
+	-6.26935866 -0.00127791 0.00078342 7.26808075 0.99609287 0.99793867 0.49287142;
+	-6.26936686 -0.00127738 0.00078310 7.26808947 0.99609448 0.99793951 0.49287182;
+	-6.26937503 -0.00127686 0.00078278 7.26809817 0.99609609 0.99794036 0.49287224;
+	-6.26938317 -0.00127634 0.00078246 7.26810683 0.99609769 0.99794120 0.49287263;
+	-6.26939129 -0.00127581 0.00078214 7.26811547 0.99609930 0.99794205 0.49287302;
+	-6.26939937 -0.00127529 0.00078182 7.26812409 0.99610091 0.99794289 0.49287345;
+	-6.26940743 -0.00127476 0.00078150 7.26813267 0.99610251 0.99794374 0.49287384;
+	-6.26941547 -0.00127424 0.00078118 7.26814123 0.99610411 0.99794458 0.49287423;
+	-6.26942347 -0.00127372 0.00078086 7.26814975 0.99610572 0.99794542 0.49287464;
+	-6.26943145 -0.00127320 0.00078054 7.26815825 0.99610732 0.99794626 0.49287504;
+	-6.26943940 -0.00127267 0.00078022 7.26816673 0.99610892 0.99794711 0.49287543;
+	-6.26944732 -0.00127215 0.00077990 7.26817517 0.99611051 0.99794795 0.49287581;
+	-6.26945522 -0.00127163 0.00077958 7.26818359 0.99611211 0.99794879 0.49287621;
+	-6.26946309 -0.00127111 0.00077926 7.26819198 0.99611370 0.99794962 0.49287661;
+	-6.26947093 -0.00127059 0.00077895 7.26820034 0.99611530 0.99795046 0.49287701;
+	-6.26947875 -0.00127007 0.00077863 7.26820868 0.99611689 0.99795130 0.49287739;
+	-6.26948654 -0.00126955 0.00077831 7.26821698 0.99611848 0.99795214 0.49287779;
+	-6.26949430 -0.00126903 0.00077799 7.26822527 0.99612007 0.99795297 0.49287817;
+	-6.26950204 -0.00126852 0.00077768 7.26823352 0.99612166 0.99795381 0.49287857;
+	-6.26950975 -0.00126800 0.00077736 7.26824175 0.99612325 0.99795464 0.49287896;
+	-6.26951743 -0.00126748 0.00077704 7.26824995 0.99612484 0.99795548 0.49287934;
+	-6.26952509 -0.00126696 0.00077673 7.26825813 0.99612642 0.99795631 0.49287973;
+	-6.26953272 -0.00126645 0.00077641 7.26826627 0.99612800 0.99795714 0.49288012;
+	-6.26954033 -0.00126593 0.00077609 7.26827440 0.99612959 0.99795798 0.49288050;
+	-6.26954791 -0.00126541 0.00077578 7.26828249 0.99613117 0.99795881 0.49288087;
+	-6.26955546 -0.00126490 0.00077546 7.26829056 0.99613275 0.99795964 0.49288126;
+	-6.26956299 -0.00126438 0.00077515 7.26829860 0.99613433 0.99796047 0.49288164;
+	-6.26957049 -0.00126387 0.00077483 7.26830662 0.99613590 0.99796130 0.49288203;
+	-6.26957797 -0.00126335 0.00077452 7.26831461 0.99613748 0.99796213 0.49288240;
+	-6.26958542 -0.00126284 0.00077420 7.26832258 0.99613905 0.99796296 0.49288278;
+	-6.26959285 -0.00126233 0.00077389 7.26833052 0.99614063 0.99796378 0.49288317;
+	-6.26960025 -0.00126181 0.00077357 7.26833844 0.99614220 0.99796461 0.49288354;
+	-6.26960763 -0.00126130 0.00077326 7.26834632 0.99614377 0.99796544 0.49288392;
+	-6.26961498 -0.00126079 0.00077295 7.26835419 0.99614534 0.99796626 0.49288432;
+	-6.26962230 -0.00126028 0.00077263 7.26836203 0.99614691 0.99796709 0.49288467;
+	-6.26962961 -0.00125977 0.00077232 7.26836984 0.99614847 0.99796791 0.49288504;
+	-6.26963688 -0.00125926 0.00077201 7.26837763 0.99615004 0.99796874 0.49288540;
+	-6.26964414 -0.00125874 0.00077170 7.26838539 0.99615160 0.99796956 0.49288580;
+	-6.26965137 -0.00125823 0.00077138 7.26839313 0.99615317 0.99797038 0.49288618;
+	-6.26965857 -0.00125772 0.00077107 7.26840084 0.99615473 0.99797120 0.49288651;
+	-6.26966575 -0.00125722 0.00077076 7.26840853 0.99615629 0.99797202 0.49288691;
+	-6.26967290 -0.00125671 0.00077045 7.26841620 0.99615785 0.99797284 0.49288729;
+	-6.26968003 -0.00125620 0.00077014 7.26842384 0.99615941 0.99797366 0.49288765;
+	-6.26968714 -0.00125569 0.00076983 7.26843145 0.99616097 0.99797448 0.49288801;
+	-6.26969422 -0.00125518 0.00076952 7.26843904 0.99616252 0.99797530 0.49288835;
+	-6.26970128 -0.00125468 0.00076920 7.26844661 0.99616408 0.99797612 0.49288872;
+	-6.26970832 -0.00125417 0.00076889 7.26845415 0.99616563 0.99797694 0.49288910;
+	-6.26971533 -0.00125366 0.00076858 7.26846167 0.99616718 0.99797775 0.49288946;
+	-6.26972232 -0.00125316 0.00076827 7.26846916 0.99616873 0.99797857 0.49288983;
+	-6.26972928 -0.00125265 0.00076797 7.26847663 0.99617028 0.99797938 0.49289019;
+	-6.26973622 -0.00125214 0.00076766 7.26848408 0.99617183 0.99798020 0.49289056;
+	-6.26974314 -0.00125164 0.00076735 7.26849150 0.99617338 0.99798101 0.49289092;
+	-6.26975003 -0.00125114 0.00076704 7.26849890 0.99617492 0.99798183 0.49289126;
+	-6.26975691 -0.00125063 0.00076673 7.26850627 0.99617647 0.99798264 0.49289162;
+	-6.26976375 -0.00125013 0.00076642 7.26851363 0.99617801 0.99798345 0.49289199;
+	-6.26977058 -0.00124962 0.00076611 7.26852095 0.99617955 0.99798426 0.49289234;
+	-6.26977738 -0.00124912 0.00076581 7.26852826 0.99618109 0.99798507 0.49289269;
+	-6.26978416 -0.00124862 0.00076550 7.26853554 0.99618263 0.99798588 0.49289304;
+	-6.26979092 -0.00124812 0.00076519 7.26854280 0.99618417 0.99798669 0.49289341;
+	-6.26979765 -0.00124762 0.00076488 7.26855003 0.99618571 0.99798750 0.49289376;
+	-6.26980436 -0.00124711 0.00076458 7.26855725 0.99618724 0.99798831 0.49289409;
+	-6.26981105 -0.00124661 0.00076427 7.26856444 0.99618878 0.99798912 0.49289444;
+	-6.26981772 -0.00124611 0.00076396 7.26857160 0.99619031 0.99798992 0.49289482;
+	-6.26982436 -0.00124561 0.00076366 7.26857875 0.99619184 0.99799073 0.49289516;
+	-6.26983098 -0.00124511 0.00076335 7.26858587 0.99619337 0.99799154 0.49289554;
+	-6.26983758 -0.00124461 0.00076305 7.26859297 0.99619490 0.99799234 0.49289586;
+	-6.26984416 -0.00124412 0.00076274 7.26860004 0.99619643 0.99799314 0.49289620;
+	-6.26985071 -0.00124362 0.00076244 7.26860710 0.99619796 0.99799395 0.49289657;
+	-6.26985725 -0.00124312 0.00076213 7.26861413 0.99619949 0.99799475 0.49289690;
+	-6.26986376 -0.00124262 0.00076183 7.26862114 0.99620101 0.99799555 0.49289724;
+	-6.26987025 -0.00124212 0.00076152 7.26862812 0.99620253 0.99799636 0.49289757;
+	-6.26987672 -0.00124163 0.00076122 7.26863509 0.99620406 0.99799716 0.49289792;
+	-6.26988316 -0.00124113 0.00076091 7.26864203 0.99620558 0.99799796 0.49289828;
+	-6.26988959 -0.00124063 0.00076061 7.26864895 0.99620710 0.99799876 0.49289862;
+	-6.26989599 -0.00124014 0.00076031 7.26865585 0.99620862 0.99799956 0.49289895;
+	-6.26990237 -0.00123964 0.00076000 7.26866273 0.99621013 0.99800035 0.49289931;
+	-6.26990873 -0.00123915 0.00075970 7.26866958 0.99621165 0.99800115 0.49289965;
+	-6.26991507 -0.00123865 0.00075940 7.26867642 0.99621317 0.99800195 0.49289998;
+	-6.26992139 -0.00123816 0.00075909 7.26868323 0.99621468 0.99800275 0.49290032;
+	-6.26992769 -0.00123767 0.00075879 7.26869002 0.99621619 0.99800354 0.49290066;
+	-6.26993396 -0.00123717 0.00075849 7.26869679 0.99621770 0.99800434 0.49290100;
+	-6.26994022 -0.00123668 0.00075819 7.26870354 0.99621921 0.99800513 0.49290132;
+	-6.26994645 -0.00123619 0.00075789 7.26871027 0.99622072 0.99800593 0.49290166;
+	-6.26995267 -0.00123569 0.00075758 7.26871697 0.99622223 0.99800672 0.49290199;
+	-6.26995886 -0.00123520 0.00075728 7.26872366 0.99622374 0.99800751 0.49290231;
+	-6.26996503 -0.00123471 0.00075698 7.26873032 0.99622524 0.99800831 0.49290268;
+	-6.26997119 -0.00123422 0.00075668 7.26873697 0.99622675 0.99800910 0.49290298;
+	-6.26997732 -0.00123373 0.00075638 7.26874359 0.99622825 0.99800989 0.49290333;
+	-6.26998343 -0.00123324 0.00075608 7.26875019 0.99622975 0.99801068 0.49290366;
+	-6.26998952 -0.00123275 0.00075578 7.26875677 0.99623126 0.99801147 0.49290397;
+	-6.26999559 -0.00123226 0.00075548 7.26876333 0.99623275 0.99801226 0.49290432;
+	-6.27000164 -0.00123177 0.00075518 7.26876987 0.99623425 0.99801305 0.49290464;
+	-6.27000767 -0.00123128 0.00075488 7.26877639 0.99623575 0.99801384 0.49290499;
+	-6.27001368 -0.00123079 0.00075458 7.26878289 0.99623725 0.99801462 0.49290530;
+	-6.27001968 -0.00123031 0.00075428 7.26878937 0.99623874 0.99801541 0.49290562;
+	-6.27002565 -0.00122982 0.00075399 7.26879583 0.99624024 0.99801620 0.49290596;
+	-6.27003160 -0.00122933 0.00075369 7.26880227 0.99624173 0.99801698 0.49290628;
+	-6.27003753 -0.00122884 0.00075339 7.26880869 0.99624322 0.99801777 0.49290660;
+	-6.27004344 -0.00122836 0.00075309 7.26881508 0.99624471 0.99801855 0.49290693;
+	-6.27004933 -0.00122787 0.00075279 7.26882146 0.99624620 0.99801934 0.49290725;
+	-6.27005521 -0.00122739 0.00075250 7.26882782 0.99624769 0.99802012 0.49290756;
+	-6.27006106 -0.00122690 0.00075220 7.26883416 0.99624917 0.99802090 0.49290790;
+	-6.27006690 -0.00122642 0.00075190 7.26884048 0.99625066 0.99802168 0.49290821;
+	-6.27007271 -0.00122593 0.00075160 7.26884678 0.99625214 0.99802246 0.49290851;
+	-6.27007851 -0.00122545 0.00075131 7.26885306 0.99625363 0.99802324 0.49290885;
+	-6.27008428 -0.00122496 0.00075101 7.26885932 0.99625511 0.99802402 0.49290916;
+	-6.27009004 -0.00122448 0.00075072 7.26886556 0.99625659 0.99802480 0.49290948;
+	-6.27009578 -0.00122400 0.00075042 7.26887178 0.99625807 0.99802558 0.49290980;
+	-6.27010150 -0.00122351 0.00075012 7.26887799 0.99625955 0.99802636 0.49291012;
+	-6.27010720 -0.00122303 0.00074983 7.26888417 0.99626102 0.99802714 0.49291045;
+	-6.27011288 -0.00122255 0.00074953 7.26889033 0.99626250 0.99802792 0.49291075;
+	-6.27011855 -0.00122207 0.00074924 7.26889648 0.99626398 0.99802869 0.49291108;
+	-6.27012419 -0.00122159 0.00074894 7.26890260 0.99626545 0.99802947 0.49291137;
+	-6.27012982 -0.00122111 0.00074865 7.26890871 0.99626692 0.99803024 0.49291169;
+	-6.27013543 -0.00122063 0.00074836 7.26891480 0.99626839 0.99803102 0.49291199;
+	-6.27014102 -0.00122015 0.00074806 7.26892087 0.99626986 0.99803179 0.49291232;
+	-6.27014659 -0.00121967 0.00074777 7.26892692 0.99627133 0.99803257 0.49291262;
+	-6.27015214 -0.00121919 0.00074747 7.26893295 0.99627280 0.99803334 0.49291295;
+	-6.27015767 -0.00121871 0.00074718 7.26893897 0.99627427 0.99803411 0.49291325;
+	-6.27016319 -0.00121823 0.00074689 7.26894496 0.99627574 0.99803488 0.49291356;
+	-6.27016869 -0.00121775 0.00074659 7.26895094 0.99627720 0.99803565 0.49291386;
+	-6.27017417 -0.00121727 0.00074630 7.26895690 0.99627866 0.99803642 0.49291418;
+	-6.27017963 -0.00121680 0.00074601 7.26896284 0.99628013 0.99803719 0.49291448;
+	-6.27018508 -0.00121632 0.00074572 7.26896876 0.99628159 0.99803796 0.49291478;
+	-6.27019050 -0.00121584 0.00074543 7.26897466 0.99628305 0.99803873 0.49291509;
+	-6.27019591 -0.00121537 0.00074513 7.26898055 0.99628451 0.99803950 0.49291539;
+	-6.27020130 -0.00121489 0.00074484 7.26898641 0.99628596 0.99804027 0.49291571;
+	-6.27020668 -0.00121441 0.00074455 7.26899226 0.99628742 0.99804103 0.49291599;
+	-6.27021203 -0.00121394 0.00074426 7.26899810 0.99628888 0.99804180 0.49291629;
+	-6.27021737 -0.00121346 0.00074397 7.26900391 0.99629033 0.99804257 0.49291660;
+	-6.27022270 -0.00121299 0.00074368 7.26900971 0.99629178 0.99804333 0.49291688;
+	-6.27022800 -0.00121252 0.00074339 7.26901548 0.99629324 0.99804410 0.49291722;
+	-6.27023329 -0.00121204 0.00074310 7.26902124 0.99629469 0.99804486 0.49291750;
+	-6.27023856 -0.00121157 0.00074281 7.26902699 0.99629614 0.99804562 0.49291781;
+	-6.27024381 -0.00121110 0.00074252 7.26903271 0.99629759 0.99804639 0.49291812;
+	-6.27024904 -0.00121062 0.00074223 7.26903842 0.99629903 0.99804715 0.49291840;
+	-6.27025426 -0.00121015 0.00074194 7.26904411 0.99630048 0.99804791 0.49291870;
+	-6.27025946 -0.00120968 0.00074165 7.26904979 0.99630193 0.99804867 0.49291902;
+	-6.27026465 -0.00120921 0.00074136 7.26905544 0.99630337 0.99804943 0.49291932;
+	-6.27026982 -0.00120874 0.00074107 7.26906108 0.99630481 0.99805019 0.49291960;
+	-6.27027497 -0.00120827 0.00074078 7.26906670 0.99630626 0.99805095 0.49291988;
+	-6.27028010 -0.00120780 0.00074050 7.26907231 0.99630770 0.99805171 0.49292018;
+	-6.27028522 -0.00120732 0.00074021 7.26907789 0.99630914 0.99805247 0.49292047;
+	-6.27029032 -0.00120686 0.00073992 7.26908347 0.99631057 0.99805322 0.49292077;
+	-6.27029541 -0.00120639 0.00073963 7.26908902 0.99631201 0.99805398 0.49292106;
+	-6.27030047 -0.00120592 0.00073934 7.26909456 0.99631345 0.99805474 0.49292137;
+	-6.27030552 -0.00120545 0.00073906 7.26910008 0.99631488 0.99805549 0.49292164;
+	-6.27031056 -0.00120498 0.00073877 7.26910558 0.99631632 0.99805625 0.49292193;
+	-6.27031558 -0.00120451 0.00073848 7.26911107 0.99631775 0.99805700 0.49292223;
+	-6.27032058 -0.00120404 0.00073820 7.26911654 0.99631918 0.99805776 0.49292252;
+	-6.27032557 -0.00120358 0.00073791 7.26912199 0.99632061 0.99805851 0.49292278;
+	-6.27033054 -0.00120311 0.00073763 7.26912743 0.99632204 0.99805926 0.49292312;
+	-6.27033549 -0.00120264 0.00073734 7.26913285 0.99632347 0.99806002 0.49292338;
+	-6.27034043 -0.00120218 0.00073705 7.26913825 0.99632490 0.99806077 0.49292367;
+	-6.27034536 -0.00120171 0.00073677 7.26914364 0.99632633 0.99806152 0.49292394;
+	-6.27035026 -0.00120125 0.00073648 7.26914902 0.99632775 0.99806227 0.49292425;
+	-6.27035515 -0.00120078 0.00073620 7.26915437 0.99632918 0.99806302 0.49292452;
+	-6.27036003 -0.00120032 0.00073591 7.26915971 0.99633060 0.99806377 0.49292480;
+	-6.27036489 -0.00119985 0.00073563 7.26916504 0.99633202 0.99806452 0.49292511;
+	-6.27036973 -0.00119939 0.00073535 7.26917034 0.99633344 0.99806527 0.49292536;
+	-6.27037456 -0.00119892 0.00073506 7.26917564 0.99633486 0.99806601 0.49292567;
+	-6.27037937 -0.00119846 0.00073478 7.26918091 0.99633628 0.99806676 0.49292595;
+	-6.27038417 -0.00119800 0.00073449 7.26918617 0.99633770 0.99806751 0.49292622;
+	-6.27038895 -0.00119754 0.00073421 7.26919142 0.99633912 0.99806825 0.49292651;
+	-6.27039372 -0.00119707 0.00073393 7.26919664 0.99634053 0.99806900 0.49292678;
+	-6.27039847 -0.00119661 0.00073364 7.26920186 0.99634195 0.99806974 0.49292707;
+	-6.27040321 -0.00119615 0.00073336 7.26920706 0.99634336 0.99807049 0.49292736;
+	-6.27040793 -0.00119569 0.00073308 7.26921224 0.99634477 0.99807123 0.49292762;
+	-6.27041263 -0.00119523 0.00073280 7.26921740 0.99634618 0.99807198 0.49292790;
+	-6.27041732 -0.00119477 0.00073251 7.26922256 0.99634759 0.99807272 0.49292816;
+	-6.27042200 -0.00119431 0.00073223 7.26922769 0.99634900 0.99807346 0.49292845;
+	-6.27042666 -0.00119385 0.00073195 7.26923281 0.99635041 0.99807420 0.49292873;
+	-6.27043131 -0.00119339 0.00073167 7.26923792 0.99635182 0.99807494 0.49292902;
+	-6.27043594 -0.00119293 0.00073139 7.26924301 0.99635322 0.99807568 0.49292929;
+	-6.27044055 -0.00119247 0.00073111 7.26924808 0.99635463 0.99807642 0.49292955;
+	-6.27044516 -0.00119201 0.00073083 7.26925314 0.99635603 0.99807716 0.49292983;
+	-6.27044974 -0.00119155 0.00073054 7.26925819 0.99635743 0.99807790 0.49293011;
+	-6.27045432 -0.00119110 0.00073026 7.26926322 0.99635884 0.99807864 0.49293037;
+	-6.27045887 -0.00119064 0.00072998 7.26926823 0.99636024 0.99807938 0.49293066;
+	-6.27046342 -0.00119018 0.00072970 7.26927323 0.99636164 0.99808011 0.49293095;
+	-6.27046795 -0.00118973 0.00072942 7.26927822 0.99636303 0.99808085 0.49293118;
+	-6.27047246 -0.00118927 0.00072914 7.26928319 0.99636443 0.99808158 0.49293146;
+	-6.27047696 -0.00118881 0.00072887 7.26928815 0.99636583 0.99808232 0.49293175;
+	-6.27048145 -0.00118836 0.00072859 7.26929309 0.99636722 0.99808305 0.49293201;
+	-6.27048592 -0.00118790 0.00072831 7.26929802 0.99636862 0.99808379 0.49293228;
+	-6.27049038 -0.00118745 0.00072803 7.26930293 0.99637001 0.99808452 0.49293255;
+	-6.27049482 -0.00118699 0.00072775 7.26930783 0.99637140 0.99808526 0.49293281;
+	-6.27049925 -0.00118654 0.00072747 7.26931271 0.99637279 0.99808599 0.49293309;
+	-6.27050366 -0.00118609 0.00072719 7.26931758 0.99637418 0.99808672 0.49293334;
+	-6.27050807 -0.00118563 0.00072692 7.26932243 0.99637557 0.99808745 0.49293360;
+	-6.27051245 -0.00118518 0.00072664 7.26932727 0.99637696 0.99808818 0.49293390;
+	-6.27051683 -0.00118473 0.00072636 7.26933210 0.99637835 0.99808891 0.49293415;
+	-6.27052119 -0.00118427 0.00072608 7.26933691 0.99637973 0.99808964 0.49293444;
+	-6.27052553 -0.00118382 0.00072581 7.26934171 0.99638112 0.99809037 0.49293467;
+	-6.27052986 -0.00118337 0.00072553 7.26934649 0.99638250 0.99809110 0.49293494;
+	-6.27053418 -0.00118292 0.00072525 7.26935126 0.99638388 0.99809183 0.49293521;
+	-6.27053849 -0.00118247 0.00072498 7.26935602 0.99638526 0.99809256 0.49293547;
+	-6.27054278 -0.00118202 0.00072470 7.26936076 0.99638664 0.99809328 0.49293575;
+	-6.27054706 -0.00118157 0.00072442 7.26936549 0.99638802 0.99809401 0.49293600;
+	-6.27055132 -0.00118112 0.00072415 7.26937020 0.99638940 0.99809474 0.49293625;
+	-6.27055557 -0.00118067 0.00072387 7.26937491 0.99639078 0.99809546 0.49293651;
+	-6.27055981 -0.00118022 0.00072360 7.26937959 0.99639215 0.99809619 0.49293677;
+	-6.27056403 -0.00117977 0.00072332 7.26938427 0.99639353 0.99809691 0.49293703;
+	-6.27056825 -0.00117932 0.00072305 7.26938893 0.99639490 0.99809763 0.49293729;
+	-6.27057244 -0.00117887 0.00072277 7.26939357 0.99639628 0.99809836 0.49293754;
+	-6.27057663 -0.00117842 0.00072250 7.26939820 0.99639765 0.99809908 0.49293783;
+	-6.27058080 -0.00117798 0.00072222 7.26940282 0.99639902 0.99809980 0.49293807;
+	-6.27058496 -0.00117753 0.00072195 7.26940743 0.99640039 0.99810052 0.49293833;
+	-6.27058910 -0.00117708 0.00072167 7.26941202 0.99640176 0.99810124 0.49293858;
+	-6.27059324 -0.00117663 0.00072140 7.26941660 0.99640312 0.99810196 0.49293885;
+	-6.27059736 -0.00117619 0.00072113 7.26942117 0.99640449 0.99810268 0.49293910;
+	-6.27060146 -0.00117574 0.00072085 7.26942572 0.99640586 0.99810340 0.49293936;
+	-6.27060556 -0.00117530 0.00072058 7.26943026 0.99640722 0.99810412 0.49293961;
+	-6.27060964 -0.00117485 0.00072031 7.26943479 0.99640859 0.99810484 0.49293988;
+	-6.27061371 -0.00117441 0.00072004 7.26943930 0.99640995 0.99810556 0.49294014;
+	-6.27061776 -0.00117396 0.00071976 7.26944380 0.99641131 0.99810628 0.49294037;
+	-6.27062180 -0.00117352 0.00071949 7.26944829 0.99641267 0.99810699 0.49294061;
+	-6.27062583 -0.00117307 0.00071922 7.26945276 0.99641403 0.99810771 0.49294091;
+	-6.27062985 -0.00117263 0.00071895 7.26945722 0.99641539 0.99810842 0.49294113;
+	-6.27063386 -0.00117219 0.00071867 7.26946167 0.99641675 0.99810914 0.49294137;
+	-6.27063785 -0.00117174 0.00071840 7.26946611 0.99641810 0.99810985 0.49294161;
+	-6.27064183 -0.00117130 0.00071813 7.26947053 0.99641946 0.99811057 0.49294187;
+	-6.27064580 -0.00117086 0.00071786 7.26947494 0.99642081 0.99811128 0.49294216;
+	-6.27064976 -0.00117042 0.00071759 7.26947934 0.99642217 0.99811199 0.49294239;
+	-6.27065370 -0.00116997 0.00071732 7.26948372 0.99642352 0.99811271 0.49294263;
+	-6.27065763 -0.00116953 0.00071705 7.26948810 0.99642487 0.99811342 0.49294289;
+	-6.27066155 -0.00116909 0.00071678 7.26949246 0.99642622 0.99811413 0.49294314;
+	-6.27066546 -0.00116865 0.00071651 7.26949680 0.99642757 0.99811484 0.49294338;
+	-6.27066935 -0.00116821 0.00071624 7.26950114 0.99642892 0.99811555 0.49294362;
+	-6.27067323 -0.00116777 0.00071597 7.26950546 0.99643026 0.99811626 0.49294387;
+	-6.27067711 -0.00116733 0.00071570 7.26950977 0.99643161 0.99811697 0.49294414;
+	-6.27068096 -0.00116689 0.00071543 7.26951407 0.99643296 0.99811768 0.49294435;
+	-6.27068481 -0.00116645 0.00071516 7.26951836 0.99643430 0.99811839 0.49294462;
+	-6.27068865 -0.00116601 0.00071489 7.26952263 0.99643564 0.99811909 0.49294486;
+	-6.27069247 -0.00116558 0.00071462 7.26952689 0.99643699 0.99811980 0.49294512;
+	-6.27069628 -0.00116514 0.00071435 7.26953114 0.99643833 0.99812051 0.49294533;
+	-6.27070008 -0.00116470 0.00071409 7.26953538 0.99643967 0.99812121 0.49294559;
+	-6.27070387 -0.00116426 0.00071382 7.26953961 0.99644101 0.99812192 0.49294582;
+	-6.27070765 -0.00116383 0.00071355 7.26954382 0.99644235 0.99812262 0.49294607;
+	-6.27071141 -0.00116339 0.00071328 7.26954802 0.99644368 0.99812333 0.49294633;
+	-6.27071516 -0.00116295 0.00071301 7.26955221 0.99644502 0.99812403 0.49294657;
+	-6.27071891 -0.00116252 0.00071275 7.26955639 0.99644635 0.99812474 0.49294678;
+	-6.27072264 -0.00116208 0.00071248 7.26956056 0.99644769 0.99812544 0.49294701;
+	-6.27072636 -0.00116165 0.00071221 7.26956471 0.99644902 0.99812614 0.49294726;
+	-6.27073006 -0.00116121 0.00071195 7.26956885 0.99645035 0.99812684 0.49294753;
+	-6.27073376 -0.00116078 0.00071168 7.26957298 0.99645169 0.99812755 0.49294774;
+	-6.27073744 -0.00116034 0.00071141 7.26957710 0.99645302 0.99812825 0.49294799;
+	-6.27074112 -0.00115991 0.00071115 7.26958121 0.99645434 0.99812895 0.49294824;
+	-6.27074478 -0.00115947 0.00071088 7.26958531 0.99645567 0.99812965 0.49294849;
+	-6.27074843 -0.00115904 0.00071062 7.26958939 0.99645700 0.99813035 0.49294867;
+	-6.27075207 -0.00115861 0.00071035 7.26959347 0.99645833 0.99813104 0.49294894;
+	-6.27075570 -0.00115817 0.00071008 7.26959753 0.99645965 0.99813174 0.49294918;
+	-6.27075932 -0.00115774 0.00070982 7.26960158 0.99646098 0.99813244 0.49294940;
+	-6.27076293 -0.00115731 0.00070955 7.26960562 0.99646230 0.99813314 0.49294966;
+	-6.27076652 -0.00115688 0.00070929 7.26960965 0.99646362 0.99813383 0.49294988;
+	-6.27077011 -0.00115644 0.00070902 7.26961366 0.99646494 0.99813453 0.49295014;
+	-6.27077368 -0.00115601 0.00070876 7.26961767 0.99646626 0.99813523 0.49295035;
+	-6.27077724 -0.00115558 0.00070850 7.26962166 0.99646758 0.99813592 0.49295058;
+	-6.27078080 -0.00115515 0.00070823 7.26962565 0.99646890 0.99813662 0.49295081;
+	-6.27078434 -0.00115472 0.00070797 7.26962962 0.99647022 0.99813731 0.49295107;
+	-6.27078787 -0.00115429 0.00070770 7.26963358 0.99647154 0.99813800 0.49295129;
+	-6.27079139 -0.00115386 0.00070744 7.26963753 0.99647285 0.99813870 0.49295151;
+	-6.27079490 -0.00115343 0.00070718 7.26964147 0.99647417 0.99813939 0.49295175;
+	-6.27079840 -0.00115300 0.00070692 7.26964540 0.99647548 0.99814008 0.49295200;
+	-6.27080189 -0.00115257 0.00070665 7.26964931 0.99647679 0.99814077 0.49295221;
+	-6.27080537 -0.00115215 0.00070639 7.26965322 0.99647810 0.99814146 0.49295246;
+	-6.27080883 -0.00115172 0.00070613 7.26965711 0.99647941 0.99814215 0.49295267;
+	-6.27081229 -0.00115129 0.00070586 7.26966100 0.99648072 0.99814284 0.49295289;
+	-6.27081574 -0.00115086 0.00070560 7.26966487 0.99648203 0.99814353 0.49295314;
+	-6.27081917 -0.00115044 0.00070534 7.26966874 0.99648334 0.99814422 0.49295337;
+	-6.27082260 -0.00115001 0.00070508 7.26967259 0.99648465 0.99814491 0.49295357;
+	-6.27082601 -0.00114958 0.00070482 7.26967643 0.99648595 0.99814560 0.49295381;
+	-6.27082942 -0.00114916 0.00070456 7.26968026 0.99648726 0.99814629 0.49295404;
+	-6.27083281 -0.00114873 0.00070430 7.26968408 0.99648856 0.99814697 0.49295428;
+	-6.27083620 -0.00114830 0.00070403 7.26968789 0.99648986 0.99814766 0.49295451;
+	-6.27083957 -0.00114788 0.00070377 7.26969169 0.99649117 0.99814835 0.49295473;
+	-6.27084294 -0.00114745 0.00070351 7.26969548 0.99649247 0.99814903 0.49295497;
+	-6.27084629 -0.00114703 0.00070325 7.26969926 0.99649377 0.99814972 0.49295518;
+	-6.27084964 -0.00114661 0.00070299 7.26970303 0.99649507 0.99815040 0.49295540;
+	-6.27085297 -0.00114618 0.00070273 7.26970679 0.99649636 0.99815109 0.49295563;
+	-6.27085630 -0.00114576 0.00070247 7.26971054 0.99649766 0.99815177 0.49295584;
+	-6.27085961 -0.00114533 0.00070221 7.26971428 0.99649896 0.99815245 0.49295609;
+	-6.27086292 -0.00114491 0.00070195 7.26971800 0.99650025 0.99815313 0.49295629;
+	-6.27086621 -0.00114449 0.00070169 7.26972172 0.99650155 0.99815382 0.49295653;
+	-6.27086950 -0.00114407 0.00070144 7.26972543 0.99650284 0.99815450 0.49295673;
+	-6.27087277 -0.00114364 0.00070118 7.26972913 0.99650413 0.99815518 0.49295696;
+	-6.27087604 -0.00114322 0.00070092 7.26973281 0.99650542 0.99815586 0.49295720;
+	-6.27087929 -0.00114280 0.00070066 7.26973649 0.99650671 0.99815654 0.49295739;
+	-6.27088254 -0.00114238 0.00070040 7.26974016 0.99650800 0.99815722 0.49295764;
+	-6.27088577 -0.00114196 0.00070014 7.26974382 0.99650929 0.99815790 0.49295785;
+	-6.27088900 -0.00114154 0.00069989 7.26974746 0.99651058 0.99815858 0.49295811;
+	-6.27089222 -0.00114112 0.00069963 7.26975110 0.99651187 0.99815925 0.49295829;
+	-6.27089543 -0.00114070 0.00069937 7.26975473 0.99651315 0.99815993 0.49295850;
+	-6.27089862 -0.00114028 0.00069911 7.26975835 0.99651444 0.99816061 0.49295875;
+	-6.27090181 -0.00113986 0.00069886 7.26976195 0.99651572 0.99816129 0.49295895;
+	-6.27090499 -0.00113944 0.00069860 7.26976555 0.99651700 0.99816196 0.49295918;
+	-6.27090816 -0.00113902 0.00069834 7.26976914 0.99651829 0.99816264 0.49295938;
+	-6.27091132 -0.00113860 0.00069809 7.26977272 0.99651957 0.99816331 0.49295963;
+	-6.27091447 -0.00113818 0.00069783 7.26977629 0.99652085 0.99816399 0.49295982;
+	-6.27091762 -0.00113777 0.00069757 7.26977985 0.99652213 0.99816466 0.49296003;
+	-6.27092075 -0.00113735 0.00069732 7.26978340 0.99652340 0.99816533 0.49296028;
+	-6.27092387 -0.00113693 0.00069706 7.26978694 0.99652468 0.99816601 0.49296049;
+	-6.27092699 -0.00113651 0.00069681 7.26979047 0.99652596 0.99816668 0.49296071;
+	-6.27093009 -0.00113610 0.00069655 7.26979399 0.99652723 0.99816735 0.49296091;
+	-6.27093319 -0.00113568 0.00069629 7.26979751 0.99652851 0.99816802 0.49296112;
+	-6.27093627 -0.00113527 0.00069604 7.26980101 0.99652978 0.99816869 0.49296137;
+	-6.27093935 -0.00113485 0.00069578 7.26980450 0.99653105 0.99816937 0.49296155;
+	-6.27094242 -0.00113443 0.00069553 7.26980799 0.99653232 0.99817004 0.49296176;
+	-6.27094548 -0.00113402 0.00069528 7.26981146 0.99653360 0.99817070 0.49296198;
+	-6.27094853 -0.00113360 0.00069502 7.26981493 0.99653487 0.99817137 0.49296221;
+	-6.27095157 -0.00113319 0.00069477 7.26981838 0.99653613 0.99817204 0.49296241;
+	-6.27095461 -0.00113278 0.00069451 7.26982183 0.99653740 0.99817271 0.49296261;
+	-6.27095763 -0.00113236 0.00069426 7.26982527 0.99653867 0.99817338 0.49296284;
+	-6.27096065 -0.00113195 0.00069401 7.26982870 0.99653994 0.99817405 0.49296306;
+	-6.27096365 -0.00113154 0.00069375 7.26983212 0.99654120 0.99817471 0.49296324;
+	-6.27096665 -0.00113112 0.00069350 7.26983553 0.99654246 0.99817538 0.49296349;
+	-6.27096964 -0.00113071 0.00069325 7.26983893 0.99654373 0.99817604 0.49296367;
+	-6.27097262 -0.00113030 0.00069299 7.26984232 0.99654499 0.99817671 0.49296390;
+	-6.27097559 -0.00112989 0.00069274 7.26984571 0.99654625 0.99817737 0.49296411;
+	-6.27097856 -0.00112947 0.00069249 7.26984908 0.99654751 0.99817804 0.49296432;
+	-6.27098151 -0.00112906 0.00069224 7.26985245 0.99654877 0.99817870 0.49296451;
+	-6.27098446 -0.00112865 0.00069198 7.26985581 0.99655003 0.99817937 0.49296475;
+	-6.27098739 -0.00112824 0.00069173 7.26985915 0.99655129 0.99818003 0.49296493;
+	-6.27099032 -0.00112783 0.00069148 7.26986249 0.99655255 0.99818069 0.49296516;
+	-6.27099324 -0.00112742 0.00069123 7.26986583 0.99655380 0.99818135 0.49296535;
+	-6.27099616 -0.00112701 0.00069098 7.26986915 0.99655506 0.99818202 0.49296556;
+	-6.27099906 -0.00112660 0.00069072 7.26987246 0.99655631 0.99818268 0.49296577;
+	-6.27100196 -0.00112619 0.00069047 7.26987577 0.99655756 0.99818334 0.49296597;
+	-6.27100484 -0.00112578 0.00069022 7.26987906 0.99655882 0.99818400 0.49296619;
+	-6.27100772 -0.00112537 0.00068997 7.26988235 0.99656007 0.99818466 0.49296639;
+	-6.27101059 -0.00112496 0.00068972 7.26988563 0.99656132 0.99818532 0.49296663;
+	-6.27101345 -0.00112455 0.00068947 7.26988890 0.99656257 0.99818597 0.49296681;
+	-6.27101631 -0.00112415 0.00068922 7.26989216 0.99656382 0.99818663 0.49296699;
+	-6.27101915 -0.00112374 0.00068897 7.26989541 0.99656506 0.99818729 0.49296722;
+	-6.27102199 -0.00112333 0.00068872 7.26989866 0.99656631 0.99818795 0.49296743;
+	-6.27102482 -0.00112292 0.00068847 7.26990189 0.99656756 0.99818860 0.49296764;
+	-6.27102764 -0.00112252 0.00068822 7.26990512 0.99656880 0.99818926 0.49296783;
+	-6.27103045 -0.00112211 0.00068797 7.26990834 0.99657005 0.99818992 0.49296802;
+	-6.27103326 -0.00112171 0.00068772 7.26991155 0.99657129 0.99819057 0.49296822;
+	-6.27103606 -0.00112130 0.00068747 7.26991476 0.99657253 0.99819123 0.49296843;
+	-6.27103885 -0.00112089 0.00068723 7.26991795 0.99657377 0.99819188 0.49296863;
+	-6.27104163 -0.00112049 0.00068698 7.26992114 0.99657501 0.99819253 0.49296882;
+	-6.27104440 -0.00112008 0.00068673 7.26992432 0.99657625 0.99819319 0.49296903;
+	-6.27104717 -0.00111968 0.00068648 7.26992749 0.99657749 0.99819384 0.49296925;
+	-6.27104992 -0.00111927 0.00068623 7.26993065 0.99657873 0.99819449 0.49296948;
+	-6.27105267 -0.00111887 0.00068599 7.26993380 0.99657997 0.99819514 0.49296966;
+	-6.27105541 -0.00111847 0.00068574 7.26993695 0.99658120 0.99819580 0.49296986;
+	-6.27105815 -0.00111806 0.00068549 7.26994009 0.99658244 0.99819645 0.49297006;
+	-6.27106088 -0.00111766 0.00068524 7.26994322 0.99658367 0.99819710 0.49297025;
+	-6.27106359 -0.00111726 0.00068500 7.26994634 0.99658491 0.99819775 0.49297043;
+	-6.27106630 -0.00111685 0.00068475 7.26994945 0.99658614 0.99819840 0.49297064;
+	-6.27106901 -0.00111645 0.00068450 7.26995256 0.99658737 0.99819905 0.49297085;
+	-6.27107170 -0.00111605 0.00068426 7.26995565 0.99658860 0.99819970 0.49297106;
+	-6.27107439 -0.00111565 0.00068401 7.26995874 0.99658983 0.99820034 0.49297123;
+	-6.27107707 -0.00111525 0.00068376 7.26996183 0.99659106 0.99820099 0.49297145;
+	-6.27107974 -0.00111484 0.00068352 7.26996490 0.99659229 0.99820164 0.49297165;
+	-6.27108241 -0.00111444 0.00068327 7.26996797 0.99659352 0.99820229 0.49297182;
+	-6.27108507 -0.00111404 0.00068302 7.26997103 0.99659474 0.99820293 0.49297202;
+	-6.27108772 -0.00111364 0.00068278 7.26997408 0.99659597 0.99820358 0.49297222;
+	-6.27109036 -0.00111324 0.00068253 7.26997712 0.99659719 0.99820422 0.49297241;
+	-6.27109300 -0.00111284 0.00068229 7.26998015 0.99659842 0.99820487 0.49297262;
+	-6.27109562 -0.00111244 0.00068204 7.26998318 0.99659964 0.99820551 0.49297281;
+	-6.27109825 -0.00111204 0.00068180 7.26998620 0.99660086 0.99820616 0.49297301;
+	-6.27110086 -0.00111164 0.00068155 7.26998921 0.99660208 0.99820680 0.49297320;
+	-6.27110347 -0.00111125 0.00068131 7.26999222 0.99660330 0.99820744 0.49297339;
+	-6.27110606 -0.00111085 0.00068106 7.26999522 0.99660452 0.99820809 0.49297359;
+	-6.27110866 -0.00111045 0.00068082 7.26999821 0.99660574 0.99820873 0.49297380;
+	-6.27111124 -0.00111005 0.00068058 7.27000119 0.99660696 0.99820937 0.49297397;
+	-6.27111382 -0.00110965 0.00068033 7.27000416 0.99660818 0.99821001 0.49297417;
+	-6.27111639 -0.00110926 0.00068009 7.27000713 0.99660939 0.99821065 0.49297437;
+	-6.27111895 -0.00110886 0.00067985 7.27001009 0.99661061 0.99821129 0.49297456;
+	-6.27112151 -0.00110846 0.00067960 7.27001304 0.99661182 0.99821193 0.49297477;
+	-6.27112405 -0.00110807 0.00067936 7.27001599 0.99661303 0.99821257 0.49297493;
+	-6.27112660 -0.00110767 0.00067912 7.27001892 0.99661425 0.99821321 0.49297516;
+	-6.27112913 -0.00110728 0.00067887 7.27002185 0.99661546 0.99821385 0.49297533;
+	-6.27113166 -0.00110688 0.00067863 7.27002478 0.99661667 0.99821449 0.49297550;
+	-6.27113418 -0.00110648 0.00067839 7.27002769 0.99661788 0.99821513 0.49297572;
+	-6.27113669 -0.00110609 0.00067815 7.27003060 0.99661909 0.99821576 0.49297589;
+	-6.27113920 -0.00110569 0.00067790 7.27003350 0.99662030 0.99821640 0.49297607;
+	-6.27114170 -0.00110530 0.00067766 7.27003640 0.99662150 0.99821704 0.49297628;
+	-6.27114419 -0.00110491 0.00067742 7.27003928 0.99662271 0.99821767 0.49297646;
+	-6.27114668 -0.00110451 0.00067718 7.27004216 0.99662392 0.99821831 0.49297664;
+	-6.27114915 -0.00110412 0.00067694 7.27004504 0.99662512 0.99821894 0.49297684;
+	-6.27115163 -0.00110372 0.00067670 7.27004790 0.99662632 0.99821958 0.49297702;
+	-6.27115409 -0.00110333 0.00067646 7.27005076 0.99662753 0.99822021 0.49297723;
+	-6.27115655 -0.00110294 0.00067621 7.27005361 0.99662873 0.99822085 0.49297742;
+	-6.27115900 -0.00110255 0.00067597 7.27005646 0.99662993 0.99822148 0.49297759;
+	-6.27116145 -0.00110215 0.00067573 7.27005929 0.99663113 0.99822211 0.49297781;
+	-6.27116389 -0.00110176 0.00067549 7.27006212 0.99663233 0.99822274 0.49297799;
+	-6.27116632 -0.00110137 0.00067525 7.27006495 0.99663353 0.99822338 0.49297818;
+	-6.27116874 -0.00110098 0.00067501 7.27006776 0.99663473 0.99822401 0.49297837;
+	-6.27117116 -0.00110059 0.00067477 7.27007057 0.99663592 0.99822464 0.49297853;
+	-6.27117357 -0.00110020 0.00067453 7.27007338 0.99663712 0.99822527 0.49297873;
+	-6.27117598 -0.00109981 0.00067429 7.27007617 0.99663832 0.99822590 0.49297890;
+	-6.27117838 -0.00109942 0.00067405 7.27007896 0.99663951 0.99822653 0.49297910;
+	-6.27118077 -0.00109903 0.00067381 7.27008174 0.99664070 0.99822716 0.49297929;
+	-6.27118315 -0.00109864 0.00067358 7.27008452 0.99664190 0.99822779 0.49297945;
+	-6.27118553 -0.00109825 0.00067334 7.27008729 0.99664309 0.99822842 0.49297965;
+	-6.27118791 -0.00109786 0.00067310 7.27009005 0.99664428 0.99822904 0.49297987;
+	-6.27119027 -0.00109747 0.00067286 7.27009280 0.99664547 0.99822967 0.49298005;
+	-6.27119263 -0.00109708 0.00067262 7.27009555 0.99664666 0.99823030 0.49298023;
+	-6.27119499 -0.00109669 0.00067238 7.27009829 0.99664785 0.99823092 0.49298041;
+	-6.27119733 -0.00109630 0.00067214 7.27010103 0.99664904 0.99823155 0.49298056;
+	-6.27119968 -0.00109592 0.00067191 7.27010376 0.99665022 0.99823218 0.49298074;
+	-6.27120201 -0.00109553 0.00067167 7.27010648 0.99665141 0.99823280 0.49298095;
+	-6.27120434 -0.00109514 0.00067143 7.27010920 0.99665259 0.99823343 0.49298115;
+	-6.27120666 -0.00109475 0.00067119 7.27011190 0.99665378 0.99823405 0.49298131;
+	-6.27120898 -0.00109437 0.00067096 7.27011461 0.99665496 0.99823467 0.49298149;
+	-6.27121129 -0.00109398 0.00067072 7.27011730 0.99665614 0.99823530 0.49298166;
+	-6.27121359 -0.00109360 0.00067048 7.27011999 0.99665733 0.99823592 0.49298185;
+	-6.27121589 -0.00109321 0.00067025 7.27012268 0.99665851 0.99823654 0.49298202;
+	-6.27121818 -0.00109282 0.00067001 7.27012535 0.99665969 0.99823717 0.49298224;
+	-6.27122046 -0.00109244 0.00066977 7.27012802 0.99666087 0.99823779 0.49298236;
+	-6.27122274 -0.00109205 0.00066954 7.27013069 0.99666205 0.99823841 0.49298260;
+	-6.27122501 -0.00109167 0.00066930 7.27013334 0.99666322 0.99823903 0.49298275;
+	-6.27122728 -0.00109128 0.00066907 7.27013600 0.99666440 0.99823965 0.49298294;
+	-6.27122954 -0.00109090 0.00066883 7.27013864 0.99666558 0.99824027 0.49298313;
+	-6.27123179 -0.00109052 0.00066859 7.27014128 0.99666675 0.99824089 0.49298330;
+	-6.27123404 -0.00109013 0.00066836 7.27014391 0.99666793 0.99824151 0.49298351;
+	-6.27123629 -0.00108975 0.00066812 7.27014654 0.99666910 0.99824213 0.49298363;
+	-6.27123852 -0.00108937 0.00066789 7.27014916 0.99667027 0.99824275 0.49298382;
+	-6.27124075 -0.00108898 0.00066765 7.27015177 0.99667144 0.99824336 0.49298401;
+	-6.27124298 -0.00108860 0.00066742 7.27015438 0.99667261 0.99824398 0.49298420;
+	-6.27124520 -0.00108822 0.00066718 7.27015698 0.99667379 0.99824460 0.49298438;
+	-6.27124741 -0.00108784 0.00066695 7.27015957 0.99667495 0.99824521 0.49298453;
+	-6.27124962 -0.00108745 0.00066672 7.27016216 0.99667612 0.99824583 0.49298471;
+	-6.27125182 -0.00108707 0.00066648 7.27016475 0.99667729 0.99824645 0.49298491;
+	-6.27125401 -0.00108669 0.00066625 7.27016732 0.99667846 0.99824706 0.49298510;
+	-6.27125620 -0.00108631 0.00066601 7.27016989 0.99667962 0.99824768 0.49298524;
+	-6.27125839 -0.00108593 0.00066578 7.27017246 0.99668079 0.99824829 0.49298544;
+	-6.27126057 -0.00108555 0.00066555 7.27017502 0.99668195 0.99824890 0.49298562;
+	-6.27126274 -0.00108517 0.00066531 7.27017757 0.99668312 0.99824952 0.49298575;
+	-6.27126490 -0.00108479 0.00066508 7.27018012 0.99668428 0.99825013 0.49298596;
+	-6.27126707 -0.00108441 0.00066485 7.27018266 0.99668544 0.99825074 0.49298614;
+	-6.27126922 -0.00108403 0.00066461 7.27018519 0.99668660 0.99825136 0.49298629;
+	-6.27127137 -0.00108365 0.00066438 7.27018772 0.99668776 0.99825197 0.49298647;
+	-6.27127351 -0.00108327 0.00066415 7.27019024 0.99668892 0.99825258 0.49298665;
+	-6.27127565 -0.00108289 0.00066392 7.27019276 0.99669008 0.99825319 0.49298685;
+	-6.27127779 -0.00108251 0.00066369 7.27019527 0.99669124 0.99825380 0.49298701;
+	-6.27127991 -0.00108214 0.00066345 7.27019778 0.99669240 0.99825441 0.49298719;
+	-6.27128204 -0.00108176 0.00066322 7.27020028 0.99669356 0.99825502 0.49298735;
+	-6.27128415 -0.00108138 0.00066299 7.27020277 0.99669471 0.99825563 0.49298754;
+	-6.27128626 -0.00108100 0.00066276 7.27020526 0.99669587 0.99825624 0.49298772;
+	-6.27128837 -0.00108063 0.00066253 7.27020774 0.99669702 0.99825685 0.49298787;
+	-6.27129047 -0.00108025 0.00066230 7.27021022 0.99669817 0.99825746 0.49298806;
+	-6.27129256 -0.00107987 0.00066206 7.27021269 0.99669933 0.99825806 0.49298822;
+	-6.27129465 -0.00107950 0.00066183 7.27021516 0.99670048 0.99825867 0.49298838;
+	-6.27129674 -0.00107912 0.00066160 7.27021762 0.99670163 0.99825928 0.49298857;
+	-6.27129881 -0.00107874 0.00066137 7.27022007 0.99670278 0.99825988 0.49298872;
+	-6.27130089 -0.00107837 0.00066114 7.27022252 0.99670393 0.99826049 0.49298890;
+	-6.27130295 -0.00107799 0.00066091 7.27022496 0.99670508 0.99826109 0.49298906;
+	-6.27130502 -0.00107762 0.00066068 7.27022740 0.99670622 0.99826170 0.49298921;
+	-6.27130707 -0.00107724 0.00066045 7.27022983 0.99670737 0.99826230 0.49298942;
+	-6.27130913 -0.00107687 0.00066022 7.27023226 0.99670852 0.99826291 0.49298958;
+	-6.27131117 -0.00107649 0.00065999 7.27023468 0.99670966 0.99826351 0.49298977;
+	-6.27131321 -0.00107612 0.00065976 7.27023709 0.99671081 0.99826412 0.49298992;
+	-6.27131525 -0.00107575 0.00065953 7.27023950 0.99671195 0.99826472 0.49299011;
+	-6.27131728 -0.00107537 0.00065931 7.27024191 0.99671309 0.99826532 0.49299028;
+	-6.27131930 -0.00107500 0.00065908 7.27024430 0.99671423 0.99826592 0.49299042;
+	-6.27132133 -0.00107463 0.00065885 7.27024670 0.99671538 0.99826653 0.49299058;
+	-6.27132334 -0.00107425 0.00065862 7.27024909 0.99671652 0.99826713 0.49299077;
+	-6.27132535 -0.00107388 0.00065839 7.27025147 0.99671766 0.99826773 0.49299096;
+	-6.27132736 -0.00107351 0.00065816 7.27025385 0.99671879 0.99826833 0.49299111;
+	-6.27132936 -0.00107314 0.00065793 7.27025622 0.99671993 0.99826893 0.49299126;
+	-6.27133135 -0.00107277 0.00065771 7.27025858 0.99672107 0.99826953 0.49299144;
+	-6.27133334 -0.00107239 0.00065748 7.27026094 0.99672221 0.99827013 0.49299160;
+	-6.27133532 -0.00107202 0.00065725 7.27026330 0.99672334 0.99827073 0.49299180;
+	-6.27133730 -0.00107165 0.00065702 7.27026565 0.99672448 0.99827132 0.49299193;
+	-6.27133928 -0.00107128 0.00065680 7.27026800 0.99672561 0.99827192 0.49299212;
+	-6.27134125 -0.00107091 0.00065657 7.27027034 0.99672674 0.99827252 0.49299227;
+	-6.27134321 -0.00107054 0.00065634 7.27027267 0.99672788 0.99827312 0.49299243;
+	-6.27134517 -0.00107017 0.00065611 7.27027500 0.99672901 0.99827371 0.49299259;
+	-6.27134713 -0.00106980 0.00065589 7.27027733 0.99673014 0.99827431 0.49299280;
+	-6.27134908 -0.00106943 0.00065566 7.27027964 0.99673127 0.99827491 0.49299296;
+	-6.27135102 -0.00106906 0.00065543 7.27028196 0.99673240 0.99827550 0.49299309;
+	-6.27135296 -0.00106870 0.00065521 7.27028427 0.99673353 0.99827610 0.49299327;
+	-6.27135490 -0.00106833 0.00065498 7.27028657 0.99673466 0.99827669 0.49299344;
+	-6.27135683 -0.00106796 0.00065476 7.27028887 0.99673578 0.99827729 0.49299361;
+	-6.27135875 -0.00106759 0.00065453 7.27029116 0.99673691 0.99827788 0.49299378;
+	-6.27136067 -0.00106722 0.00065430 7.27029345 0.99673804 0.99827847 0.49299395;
+	-6.27136259 -0.00106685 0.00065408 7.27029574 0.99673916 0.99827907 0.49299413;
+	-6.27136450 -0.00106649 0.00065385 7.27029801 0.99674028 0.99827966 0.49299427;
+	-6.27136641 -0.00106612 0.00065363 7.27030029 0.99674141 0.99828025 0.49299442;
+	-6.27136831 -0.00106575 0.00065340 7.27030256 0.99674253 0.99828084 0.49299460;
+	-6.27137021 -0.00106539 0.00065318 7.27030482 0.99674365 0.99828143 0.49299474;
+	-6.27137210 -0.00106502 0.00065295 7.27030708 0.99674477 0.99828203 0.49299490;
+	-6.27137399 -0.00106465 0.00065273 7.27030933 0.99674589 0.99828262 0.49299509;
+	-6.27137587 -0.00106429 0.00065250 7.27031158 0.99674701 0.99828321 0.49299525;
+	-6.27137775 -0.00106392 0.00065228 7.27031382 0.99674813 0.99828380 0.49299541;
+	-6.27137962 -0.00106356 0.00065206 7.27031606 0.99674925 0.99828439 0.49299561;
+	-6.27138149 -0.00106319 0.00065183 7.27031830 0.99675037 0.99828497 0.49299573;
+	-6.27138335 -0.00106283 0.00065161 7.27032053 0.99675148 0.99828556 0.49299589;
+	-6.27138521 -0.00106246 0.00065139 7.27032275 0.99675260 0.99828615 0.49299603;
+	-6.27138707 -0.00106210 0.00065116 7.27032497 0.99675371 0.99828674 0.49299621;
+	-6.27138892 -0.00106173 0.00065094 7.27032719 0.99675483 0.99828733 0.49299635;
+	-6.27139077 -0.00106137 0.00065072 7.27032940 0.99675594 0.99828791 0.49299653;
+	-6.27139261 -0.00106101 0.00065049 7.27033160 0.99675705 0.99828850 0.49299670;
+	-6.27139445 -0.00106064 0.00065027 7.27033380 0.99675816 0.99828909 0.49299687;
+	-6.27139628 -0.00106028 0.00065005 7.27033600 0.99675928 0.99828967 0.49299705;
+	-6.27139811 -0.00105992 0.00064982 7.27033819 0.99676039 0.99829026 0.49299718;
+	-6.27139993 -0.00105956 0.00064960 7.27034037 0.99676150 0.99829084 0.49299736;
+	-6.27140175 -0.00105919 0.00064938 7.27034256 0.99676260 0.99829143 0.49299751;
+	-6.27140356 -0.00105883 0.00064916 7.27034473 0.99676371 0.99829201 0.49299765;
+	-6.27140537 -0.00105847 0.00064893 7.27034690 0.99676482 0.99829260 0.49299782;
+	-6.27140718 -0.00105811 0.00064871 7.27034907 0.99676593 0.99829318 0.49299800;
+	-6.27140898 -0.00105775 0.00064849 7.27035123 0.99676703 0.99829376 0.49299816;
+	-6.27141078 -0.00105739 0.00064827 7.27035339 0.99676814 0.99829434 0.49299833;
+	-6.27141257 -0.00105702 0.00064805 7.27035555 0.99676924 0.99829493 0.49299845;
+	-6.27141436 -0.00105666 0.00064783 7.27035770 0.99677034 0.99829551 0.49299862;
+	-6.27141614 -0.00105630 0.00064761 7.27035984 0.99677145 0.99829609 0.49299878;
+	-6.27141792 -0.00105594 0.00064739 7.27036198 0.99677255 0.99829667 0.49299891;
+	-6.27141970 -0.00105558 0.00064716 7.27036412 0.99677365 0.99829725 0.49299912;
+	-6.27142147 -0.00105522 0.00064694 7.27036625 0.99677475 0.99829783 0.49299926;
+	-6.27142324 -0.00105486 0.00064672 7.27036837 0.99677585 0.99829841 0.49299943;
+	-6.27142500 -0.00105451 0.00064650 7.27037050 0.99677695 0.99829899 0.49299955;
+	-6.27142676 -0.00105415 0.00064628 7.27037261 0.99677805 0.99829957 0.49299971;
+	-6.27142851 -0.00105379 0.00064606 7.27037473 0.99677914 0.99830015 0.49299984;
+	-6.27143026 -0.00105343 0.00064584 7.27037683 0.99678024 0.99830073 0.49300001;
+	-6.27143201 -0.00105307 0.00064562 7.27037894 0.99678134 0.99830131 0.49300017;
+	-6.27143375 -0.00105271 0.00064540 7.27038104 0.99678243 0.99830188 0.49300033;
+	-6.27143549 -0.00105236 0.00064518 7.27038313 0.99678353 0.99830246 0.49300050;
+	-6.27143722 -0.00105200 0.00064496 7.27038522 0.99678462 0.99830304 0.49300065;
+	-6.27143895 -0.00105164 0.00064475 7.27038731 0.99678571 0.99830361 0.49300081;
+	-6.27144068 -0.00105128 0.00064453 7.27038939 0.99678681 0.99830419 0.49300096;
+	-6.27144240 -0.00105093 0.00064431 7.27039147 0.99678790 0.99830477 0.49300112;
+	-6.27144412 -0.00105057 0.00064409 7.27039355 0.99678899 0.99830534 0.49300126;
+	-6.27144583 -0.00105021 0.00064387 7.27039561 0.99679008 0.99830592 0.49300141;
+	-6.27144754 -0.00104986 0.00064365 7.27039768 0.99679117 0.99830649 0.49300158;
+	-6.27144924 -0.00104950 0.00064343 7.27039974 0.99679226 0.99830706 0.49300174;
+	-6.27145094 -0.00104915 0.00064322 7.27040180 0.99679334 0.99830764 0.49300191;
+	-6.27145264 -0.00104879 0.00064300 7.27040385 0.99679443 0.99830821 0.49300203;
+	-6.27145433 -0.00104844 0.00064278 7.27040590 0.99679552 0.99830878 0.49300220;
+	-6.27145602 -0.00104808 0.00064256 7.27040794 0.99679660 0.99830936 0.49300234;
+	-6.27145771 -0.00104773 0.00064234 7.27040998 0.99679769 0.99830993 0.49300248;
+	-6.27145939 -0.00104737 0.00064213 7.27041202 0.99679877 0.99831050 0.49300264;
+	-6.27146107 -0.00104702 0.00064191 7.27041405 0.99679986 0.99831107 0.49300280;
+	-6.27146274 -0.00104667 0.00064169 7.27041607 0.99680094 0.99831164 0.49300294;
+	-6.27146441 -0.00104631 0.00064148 7.27041810 0.99680202 0.99831221 0.49300310;
+	-6.27146607 -0.00104596 0.00064126 7.27042012 0.99680310 0.99831278 0.49300325;
+	-6.27146774 -0.00104561 0.00064104 7.27042213 0.99680418 0.99831335 0.49300340;
+	-6.27146939 -0.00104525 0.00064083 7.27042414 0.99680526 0.99831392 0.49300357;
+	-6.27147105 -0.00104490 0.00064061 7.27042615 0.99680634 0.99831449 0.49300370;
+	-6.27147270 -0.00104455 0.00064039 7.27042815 0.99680742 0.99831506 0.49300390;
+	-6.27147434 -0.00104420 0.00064018 7.27043015 0.99680850 0.99831563 0.49300402;
+	-6.27147599 -0.00104384 0.00063996 7.27043214 0.99680957 0.99831620 0.49300417;
+	-6.27147762 -0.00104349 0.00063975 7.27043413 0.99681065 0.99831676 0.49300431;
+	-6.27147926 -0.00104314 0.00063953 7.27043612 0.99681172 0.99831733 0.49300449;
+	-6.27148089 -0.00104279 0.00063931 7.27043810 0.99681280 0.99831790 0.49300460;
+	-6.27148252 -0.00104244 0.00063910 7.27044008 0.99681387 0.99831846 0.49300478;
+	-6.27148414 -0.00104209 0.00063888 7.27044205 0.99681495 0.99831903 0.49300494;
+	-6.27148576 -0.00104174 0.00063867 7.27044402 0.99681602 0.99831959 0.49300507;
+	-6.27148738 -0.00104139 0.00063845 7.27044599 0.99681709 0.99832016 0.49300523;
+	-6.27148899 -0.00104104 0.00063824 7.27044795 0.99681816 0.99832072 0.49300537;
+	-6.27149060 -0.00104069 0.00063802 7.27044991 0.99681923 0.99832129 0.49300552;
+	-6.27149220 -0.00104034 0.00063781 7.27045186 0.99682030 0.99832185 0.49300567;
+	-6.27149380 -0.00103999 0.00063760 7.27045382 0.99682137 0.99832242 0.49300583;
+	-6.27149540 -0.00103964 0.00063738 7.27045576 0.99682244 0.99832298 0.49300595;
+	-6.27149699 -0.00103929 0.00063717 7.27045771 0.99682351 0.99832354 0.49300609;
+	-6.27149859 -0.00103894 0.00063695 7.27045964 0.99682457 0.99832411 0.49300627;
+	-6.27150017 -0.00103859 0.00063674 7.27046158 0.99682564 0.99832467 0.49300642;
+	-6.27150175 -0.00103824 0.00063653 7.27046351 0.99682670 0.99832523 0.49300653;
+	-6.27150333 -0.00103790 0.00063631 7.27046544 0.99682777 0.99832579 0.49300671;
+	-6.27150491 -0.00103755 0.00063610 7.27046736 0.99682883 0.99832635 0.49300686;
+	-6.27150648 -0.00103720 0.00063589 7.27046928 0.99682990 0.99832691 0.49300700;
+	-6.27150805 -0.00103685 0.00063567 7.27047120 0.99683096 0.99832747 0.49300717;
+	-6.27150962 -0.00103651 0.00063546 7.27047311 0.99683202 0.99832803 0.49300731;
+	-6.27151118 -0.00103616 0.00063525 7.27047502 0.99683308 0.99832859 0.49300742;
+	-6.27151274 -0.00103581 0.00063503 7.27047692 0.99683414 0.99832915 0.49300759;
+	-6.27151429 -0.00103547 0.00063482 7.27047882 0.99683520 0.99832971 0.49300775;
+	-6.27151584 -0.00103512 0.00063461 7.27048072 0.99683626 0.99833027 0.49300787;
+	-6.27151739 -0.00103478 0.00063440 7.27048262 0.99683732 0.99833083 0.49300803;
+	-6.27151893 -0.00103443 0.00063419 7.27048451 0.99683838 0.99833138 0.49300818;
+	-6.27152048 -0.00103408 0.00063397 7.27048639 0.99683943 0.99833194 0.49300831;
+	-6.27152201 -0.00103374 0.00063376 7.27048827 0.99684049 0.99833250 0.49300846;
+	-6.27152355 -0.00103339 0.00063355 7.27049015 0.99684154 0.99833306 0.49300863;
+	-6.27152508 -0.00103305 0.00063334 7.27049203 0.99684260 0.99833361 0.49300877;
+	-6.27152660 -0.00103270 0.00063313 7.27049390 0.99684365 0.99833417 0.49300891;
+	-6.27152813 -0.00103236 0.00063292 7.27049577 0.99684471 0.99833472 0.49300907;
+	-6.27152965 -0.00103202 0.00063271 7.27049763 0.99684576 0.99833528 0.49300922;
+	-6.27153117 -0.00103167 0.00063249 7.27049949 0.99684681 0.99833583 0.49300935;
+	-6.27153268 -0.00103133 0.00063228 7.27050135 0.99684786 0.99833639 0.49300949;
+	-6.27153419 -0.00103099 0.00063207 7.27050320 0.99684891 0.99833694 0.49300966;
+	-6.27153570 -0.00103064 0.00063186 7.27050505 0.99684996 0.99833749 0.49300980;
+	-6.27153720 -0.00103030 0.00063165 7.27050690 0.99685101 0.99833805 0.49300992;
+	-6.27153870 -0.00102996 0.00063144 7.27050874 0.99685206 0.99833860 0.49301003;
+	-6.27154020 -0.00102961 0.00063123 7.27051058 0.99685311 0.99833915 0.49301024;
+	-6.27154169 -0.00102927 0.00063102 7.27051242 0.99685415 0.99833971 0.49301036;
+	-6.27154318 -0.00102893 0.00063081 7.27051425 0.99685520 0.99834026 0.49301051;
+	-6.27154467 -0.00102859 0.00063060 7.27051608 0.99685625 0.99834081 0.49301064;
+	-6.27154615 -0.00102825 0.00063039 7.27051791 0.99685729 0.99834136 0.49301076;
+	-6.27154763 -0.00102791 0.00063018 7.27051973 0.99685834 0.99834191 0.49301089;
+	-6.27154911 -0.00102756 0.00062997 7.27052155 0.99685938 0.99834246 0.49301105;
+	-6.27155059 -0.00102722 0.00062976 7.27052336 0.99686042 0.99834301 0.49301119;
+	-6.27155206 -0.00102688 0.00062956 7.27052517 0.99686146 0.99834356 0.49301134;
+	-6.27155352 -0.00102654 0.00062935 7.27052698 0.99686251 0.99834411 0.49301148;
+	-6.27155499 -0.00102620 0.00062914 7.27052879 0.99686355 0.99834466 0.49301163;
+	-6.27155645 -0.00102586 0.00062893 7.27053059 0.99686459 0.99834521 0.49301176;
+	-6.27155791 -0.00102552 0.00062872 7.27053239 0.99686563 0.99834576 0.49301188;
+	-6.27155936 -0.00102518 0.00062851 7.27053418 0.99686666 0.99834630 0.49301206;
+	-6.27156082 -0.00102484 0.00062830 7.27053597 0.99686770 0.99834685 0.49301220;
+	-6.27156226 -0.00102451 0.00062810 7.27053776 0.99686874 0.99834740 0.49301233;
+	-6.27156371 -0.00102417 0.00062789 7.27053954 0.99686978 0.99834794 0.49301246;
+	-6.27156515 -0.00102383 0.00062768 7.27054132 0.99687081 0.99834849 0.49301262;
+	-6.27156659 -0.00102349 0.00062747 7.27054310 0.99687185 0.99834904 0.49301280;
+	-6.27156803 -0.00102315 0.00062727 7.27054488 0.99687288 0.99834958 0.49301294;
+	-6.27156946 -0.00102281 0.00062706 7.27054665 0.99687392 0.99835013 0.49301309;
+	-6.27157089 -0.00102248 0.00062685 7.27054842 0.99687495 0.99835067 0.49301319;
+	-6.27157232 -0.00102214 0.00062664 7.27055018 0.99687598 0.99835122 0.49301335;
+	-6.27157374 -0.00102180 0.00062644 7.27055194 0.99687701 0.99835176 0.49301345;
+	-6.27157517 -0.00102146 0.00062623 7.27055370 0.99687805 0.99835231 0.49301362;
+	-6.27157658 -0.00102113 0.00062602 7.27055546 0.99687908 0.99835285 0.49301372;
+	-6.27157800 -0.00102079 0.00062582 7.27055721 0.99688011 0.99835339 0.49301383;
+	-6.27157941 -0.00102045 0.00062561 7.27055896 0.99688113 0.99835393 0.49301405;
+	-6.27158082 -0.00102012 0.00062540 7.27056070 0.99688216 0.99835448 0.49301418;
+	-6.27158223 -0.00101978 0.00062520 7.27056244 0.99688319 0.99835502 0.49301433;
+	-6.27158363 -0.00101945 0.00062499 7.27056418 0.99688422 0.99835556 0.49301444;
+	-6.27158503 -0.00101911 0.00062479 7.27056592 0.99688524 0.99835610 0.49301454;
+	-6.27158643 -0.00101878 0.00062458 7.27056765 0.99688627 0.99835664 0.49301468;
+	-6.27158782 -0.00101844 0.00062438 7.27056938 0.99688730 0.99835718 0.49301483;
+	-6.27158921 -0.00101811 0.00062417 7.27057111 0.99688832 0.99835772 0.49301499;
+	-6.27159060 -0.00101777 0.00062396 7.27057283 0.99688934 0.99835826 0.49301513;
+	-6.27159199 -0.00101744 0.00062376 7.27057455 0.99689037 0.99835880 0.49301528;
+	-6.27159337 -0.00101710 0.00062355 7.27057627 0.99689139 0.99835934 0.49301541;
+	-6.27159475 -0.00101677 0.00062335 7.27057798 0.99689241 0.99835988 0.49301553;
+	-6.27159613 -0.00101644 0.00062314 7.27057969 0.99689343 0.99836042 0.49301569;
+	-6.27159750 -0.00101610 0.00062294 7.27058140 0.99689445 0.99836096 0.49301584;
+	-6.27159887 -0.00101577 0.00062274 7.27058310 0.99689547 0.99836150 0.49301593;
+	-6.27160024 -0.00101544 0.00062253 7.27058480 0.99689649 0.99836203 0.49301608;
+	-6.27160160 -0.00101510 0.00062233 7.27058650 0.99689751 0.99836257 0.49301621;
+	-6.27160297 -0.00101477 0.00062212 7.27058820 0.99689853 0.99836311 0.49301634;
+	-6.27160433 -0.00101444 0.00062192 7.27058989 0.99689954 0.99836364 0.49301647;
+	-6.27160568 -0.00101410 0.00062171 7.27059158 0.99690056 0.99836418 0.49301663;
+	-6.27160704 -0.00101377 0.00062151 7.27059327 0.99690158 0.99836472 0.49301679;
+	-6.27160839 -0.00101344 0.00062131 7.27059495 0.99690259 0.99836525 0.49301693;
+	-6.27160974 -0.00101311 0.00062110 7.27059663 0.99690361 0.99836579 0.49301706;
+	-6.27161108 -0.00101278 0.00062090 7.27059831 0.99690462 0.99836632 0.49301722;
+	-6.27161243 -0.00101245 0.00062070 7.27059998 0.99690563 0.99836686 0.49301730;
+	-6.27161377 -0.00101212 0.00062049 7.27060165 0.99690664 0.99836739 0.49301748;
+	-6.27161511 -0.00101179 0.00062029 7.27060332 0.99690766 0.99836792 0.49301757;
+	-6.27161644 -0.00101146 0.00062009 7.27060499 0.99690867 0.99836846 0.49301772;
+	-6.27161777 -0.00101112 0.00061989 7.27060665 0.99690968 0.99836899 0.49301787;
+	-6.27161910 -0.00101079 0.00061968 7.27060831 0.99691069 0.99836952 0.49301798;
+	-6.27162043 -0.00101046 0.00061948 7.27060996 0.99691170 0.99837005 0.49301811;
+	-6.27162175 -0.00101014 0.00061928 7.27061162 0.99691271 0.99837059 0.49301825;
+	-6.27162307 -0.00100981 0.00061908 7.27061327 0.99691371 0.99837112 0.49301840;
+	-6.27162439 -0.00100948 0.00061887 7.27061492 0.99691472 0.99837165 0.49301855;
+	-6.27162571 -0.00100915 0.00061867 7.27061656 0.99691573 0.99837218 0.49301866;
+	-6.27162702 -0.00100882 0.00061847 7.27061820 0.99691673 0.99837271 0.49301881;
+	-6.27162833 -0.00100849 0.00061827 7.27061984 0.99691774 0.99837324 0.49301892;
+	-6.27162964 -0.00100816 0.00061807 7.27062148 0.99691874 0.99837377 0.49301906;
+	-6.27163095 -0.00100783 0.00061787 7.27062311 0.99691975 0.99837430 0.49301923;
+	-6.27163225 -0.00100751 0.00061767 7.27062474 0.99692075 0.99837483 0.49301935;
+	-6.27163355 -0.00100718 0.00061746 7.27062637 0.99692175 0.99837536 0.49301944;
+	-6.27163485 -0.00100685 0.00061726 7.27062800 0.99692275 0.99837589 0.49301961;
+	-6.27163614 -0.00100652 0.00061706 7.27062962 0.99692375 0.99837641 0.49301974;
+	-6.27163743 -0.00100620 0.00061686 7.27063124 0.99692476 0.99837694 0.49301990;
+	-6.27163872 -0.00100587 0.00061666 7.27063285 0.99692576 0.99837747 0.49301996;
+	-6.27164001 -0.00100554 0.00061646 7.27063447 0.99692675 0.99837800 0.49302013;
+	-6.27164130 -0.00100522 0.00061626 7.27063608 0.99692775 0.99837852 0.49302024;
+	-6.27164258 -0.00100489 0.00061606 7.27063769 0.99692875 0.99837905 0.49302039;
+	-6.27164386 -0.00100456 0.00061586 7.27063929 0.99692975 0.99837957 0.49302050;
+	-6.27164513 -0.00100424 0.00061566 7.27064090 0.99693075 0.99838010 0.49302064;
+	-6.27164641 -0.00100391 0.00061546 7.27064250 0.99693174 0.99838063 0.49302080;
+	-6.27164768 -0.00100359 0.00061526 7.27064409 0.99693274 0.99838115 0.49302092;
+	-6.27164895 -0.00100326 0.00061506 7.27064569 0.99693373 0.99838168 0.49302106;
+	-6.27165022 -0.00100294 0.00061486 7.27064728 0.99693473 0.99838220 0.49302117;
+	-6.27165148 -0.00100261 0.00061466 7.27064887 0.99693572 0.99838272 0.49302135;
+	-6.27165274 -0.00100229 0.00061446 7.27065045 0.99693671 0.99838325 0.49302147;
+	-6.27165400 -0.00100196 0.00061427 7.27065204 0.99693770 0.99838377 0.49302161;
+	-6.27165526 -0.00100164 0.00061407 7.27065362 0.99693870 0.99838429 0.49302174;
+	-6.27165651 -0.00100132 0.00061387 7.27065520 0.99693969 0.99838482 0.49302182;
+	-6.27165777 -0.00100099 0.00061367 7.27065677 0.99694068 0.99838534 0.49302200;
+	-6.27165902 -0.00100067 0.00061347 7.27065835 0.99694167 0.99838586 0.49302214;
+	-6.27166026 -0.00100035 0.00061327 7.27065992 0.99694266 0.99838638 0.49302227;
+	-6.27166151 -0.00100002 0.00061307 7.27066149 0.99694364 0.99838690 0.49302237;
+	-6.27166275 -0.00099970 0.00061288 7.27066305 0.99694463 0.99838742 0.49302253;
+	-6.27166399 -0.00099938 0.00061268 7.27066461 0.99694562 0.99838795 0.49302264;
+	-6.27166523 -0.00099905 0.00061248 7.27066617 0.99694660 0.99838847 0.49302277;
+	-6.27166646 -0.00099873 0.00061228 7.27066773 0.99694759 0.99838899 0.49302290;
+	-6.27166770 -0.00099841 0.00061208 7.27066928 0.99694858 0.99838951 0.49302301;
+	-6.27166893 -0.00099809 0.00061189 7.27067084 0.99694956 0.99839002 0.49302315;
+	-6.27167015 -0.00099777 0.00061169 7.27067239 0.99695054 0.99839054 0.49302331;
+	-6.27167138 -0.00099745 0.00061149 7.27067393 0.99695153 0.99839106 0.49302343;
+	-6.27167260 -0.00099712 0.00061130 7.27067548 0.99695251 0.99839158 0.49302354;
+	-6.27167382 -0.00099680 0.00061110 7.27067702 0.99695349 0.99839210 0.49302367;
+	-6.27167504 -0.00099648 0.00061090 7.27067856 0.99695447 0.99839262 0.49302378;
+	-6.27167626 -0.00099616 0.00061070 7.27068010 0.99695545 0.99839313 0.49302391;
+	-6.27167747 -0.00099584 0.00061051 7.27068163 0.99695643 0.99839365 0.49302405;
+	-6.27167868 -0.00099552 0.00061031 7.27068316 0.99695741 0.99839417 0.49302418;
+	-6.27167989 -0.00099520 0.00061012 7.27068469 0.99695839 0.99839468 0.49302428;
+	-6.27168110 -0.00099488 0.00060992 7.27068622 0.99695937 0.99839520 0.49302442;
+	-6.27168231 -0.00099456 0.00060972 7.27068774 0.99696035 0.99839571 0.49302457;
+	-6.27168351 -0.00099424 0.00060953 7.27068927 0.99696133 0.99839623 0.49302469;
+	-6.27168471 -0.00099392 0.00060933 7.27069078 0.99696230 0.99839674 0.49302483;
+	-6.27168591 -0.00099360 0.00060914 7.27069230 0.99696328 0.99839726 0.49302493;
+	-6.27168710 -0.00099329 0.00060894 7.27069382 0.99696425 0.99839777 0.49302510;
+	-6.27168829 -0.00099297 0.00060874 7.27069533 0.99696523 0.99839829 0.49302519;
+	-6.27168949 -0.00099265 0.00060855 7.27069684 0.99696620 0.99839880 0.49302531;
+	-6.27169067 -0.00099233 0.00060835 7.27069834 0.99696717 0.99839931 0.49302546;
+	-6.27169186 -0.00099201 0.00060816 7.27069985 0.99696815 0.99839983 0.49302559;
+	-6.27169305 -0.00099170 0.00060796 7.27070135 0.99696912 0.99840034 0.49302572;
+	-6.27169423 -0.00099138 0.00060777 7.27070285 0.99697009 0.99840085 0.49302581;
+	-6.27169541 -0.00099106 0.00060757 7.27070435 0.99697106 0.99840137 0.49302594;
+	-6.27169659 -0.00099074 0.00060738 7.27070584 0.99697203 0.99840188 0.49302606;
+	-6.27169776 -0.00099043 0.00060719 7.27070734 0.99697300 0.99840239 0.49302620;
+	-6.27169893 -0.00099011 0.00060699 7.27070883 0.99697397 0.99840290 0.49302635;
+	-6.27170011 -0.00098979 0.00060680 7.27071031 0.99697494 0.99840341 0.49302644;
+	-6.27170128 -0.00098948 0.00060660 7.27071180 0.99697590 0.99840392 0.49302662;
+	-6.27170244 -0.00098916 0.00060641 7.27071328 0.99697687 0.99840443 0.49302676;
+	-6.27170361 -0.00098884 0.00060622 7.27071476 0.99697784 0.99840494 0.49302682;
+	-6.27170477 -0.00098853 0.00060602 7.27071624 0.99697880 0.99840545 0.49302696;
+	-6.27170593 -0.00098821 0.00060583 7.27071772 0.99697977 0.99840596 0.49302711;
+	-6.27170709 -0.00098790 0.00060563 7.27071919 0.99698073 0.99840647 0.49302721;
+	-6.27170825 -0.00098758 0.00060544 7.27072066 0.99698170 0.99840698 0.49302733;
+	-6.27170940 -0.00098727 0.00060525 7.27072213 0.99698266 0.99840748 0.49302748;
+	-6.27171055 -0.00098695 0.00060505 7.27072360 0.99698362 0.99840799 0.49302765;
+	-6.27171170 -0.00098664 0.00060486 7.27072506 0.99698459 0.99840850 0.49302773;
+	-6.27171285 -0.00098633 0.00060467 7.27072652 0.99698555 0.99840901 0.49302786;
+	-6.27171399 -0.00098601 0.00060448 7.27072798 0.99698651 0.99840951 0.49302797;
+	-6.27171514 -0.00098570 0.00060428 7.27072944 0.99698747 0.99841002 0.49302811;
+	-6.27171628 -0.00098538 0.00060409 7.27073090 0.99698843 0.99841053 0.49302824;
+	-6.27171742 -0.00098507 0.00060390 7.27073235 0.99698939 0.99841103 0.49302835;
+	-6.27171856 -0.00098476 0.00060371 7.27073380 0.99699035 0.99841154 0.49302848;
+	-6.27171969 -0.00098444 0.00060351 7.27073525 0.99699130 0.99841204 0.49302858;
+	-6.27172082 -0.00098413 0.00060332 7.27073669 0.99699226 0.99841255 0.49302871;
+	-6.27172196 -0.00098382 0.00060313 7.27073814 0.99699322 0.99841305 0.49302887;
+	-6.27172309 -0.00098351 0.00060294 7.27073958 0.99699417 0.99841356 0.49302895;
+	-6.27172421 -0.00098319 0.00060275 7.27074102 0.99699513 0.99841406 0.49302912;
+	-6.27172534 -0.00098288 0.00060256 7.27074246 0.99699608 0.99841456 0.49302925;
+	-6.27172646 -0.00098257 0.00060236 7.27074389 0.99699704 0.99841507 0.49302935;
+	-6.27172758 -0.00098226 0.00060217 7.27074532 0.99699799 0.99841557 0.49302945;
+	-6.27172870 -0.00098195 0.00060198 7.27074676 0.99699894 0.99841607 0.49302959;
+	-6.27172982 -0.00098163 0.00060179 7.27074818 0.99699990 0.99841657 0.49302970;
+	-6.27173093 -0.00098132 0.00060160 7.27074961 0.99700085 0.99841708 0.49302981;
+	-6.27173205 -0.00098101 0.00060141 7.27075103 0.99700180 0.99841758 0.49302992;
+	-6.27173316 -0.00098070 0.00060122 7.27075246 0.99700275 0.99841808 0.49303009;
+	-6.27173427 -0.00098039 0.00060103 7.27075388 0.99700370 0.99841858 0.49303019;
+	-6.27173537 -0.00098008 0.00060084 7.27075529 0.99700465 0.99841908 0.49303031;
+	-6.27173648 -0.00097977 0.00060065 7.27075671 0.99700560 0.99841958 0.49303044;
+	-6.27173758 -0.00097946 0.00060046 7.27075812 0.99700655 0.99842008 0.49303056;
+	-6.27173868 -0.00097915 0.00060027 7.27075953 0.99700749 0.99842058 0.49303069;
+	-6.27173978 -0.00097884 0.00060008 7.27076094 0.99700844 0.99842108 0.49303080;
+	-6.27174088 -0.00097853 0.00059989 7.27076235 0.99700939 0.99842158 0.49303094;
+	-6.27174198 -0.00097822 0.00059970 7.27076375 0.99701033 0.99842208 0.49303107;
+	-6.27174307 -0.00097791 0.00059951 7.27076516 0.99701128 0.99842258 0.49303120;
+	-6.27174416 -0.00097761 0.00059932 7.27076656 0.99701222 0.99842308 0.49303132;
+	-6.27174525 -0.00097730 0.00059913 7.27076795 0.99701317 0.99842357 0.49303142;
+	-6.27174634 -0.00097699 0.00059894 7.27076935 0.99701411 0.99842407 0.49303154;
+	-6.27174743 -0.00097668 0.00059875 7.27077075 0.99701505 0.99842457 0.49303168;
+	-6.27174851 -0.00097637 0.00059856 7.27077214 0.99701599 0.99842507 0.49303176;
+	-6.27174959 -0.00097606 0.00059837 7.27077353 0.99701693 0.99842556 0.49303192;
+	-6.27175067 -0.00097576 0.00059818 7.27077491 0.99701788 0.99842606 0.49303205;
+	-6.27175175 -0.00097545 0.00059800 7.27077630 0.99701882 0.99842656 0.49303212;
+	-6.27175283 -0.00097514 0.00059781 7.27077769 0.99701976 0.99842705 0.49303223;
+	-6.27175390 -0.00097484 0.00059762 7.27077907 0.99702070 0.99842755 0.49303239;
+	-6.27175497 -0.00097453 0.00059743 7.27078045 0.99702163 0.99842804 0.49303247;
+	-6.27175605 -0.00097422 0.00059724 7.27078182 0.99702257 0.99842854 0.49303263;
+	-6.27175712 -0.00097392 0.00059705 7.27078320 0.99702351 0.99842903 0.49303277;
+	-6.27175818 -0.00097361 0.00059687 7.27078457 0.99702445 0.99842952 0.49303287;
+	-6.27175925 -0.00097330 0.00059668 7.27078595 0.99702538 0.99843002 0.49303298;
+	-6.27176031 -0.00097300 0.00059649 7.27078731 0.99702632 0.99843051 0.49303309;
+	-6.27176137 -0.00097269 0.00059630 7.27078868 0.99702725 0.99843101 0.49303324;
+	-6.27176243 -0.00097239 0.00059612 7.27079005 0.99702819 0.99843150 0.49303337;
+	-6.27176349 -0.00097208 0.00059593 7.27079141 0.99702912 0.99843199 0.49303342;
+	-6.27176455 -0.00097178 0.00059574 7.27079277 0.99703005 0.99843248 0.49303355;
+	-6.27176560 -0.00097147 0.00059555 7.27079413 0.99703099 0.99843298 0.49303367;
+	-6.27176666 -0.00097117 0.00059537 7.27079549 0.99703192 0.99843347 0.49303384;
+	-6.27176771 -0.00097086 0.00059518 7.27079685 0.99703285 0.99843396 0.49303391;
+	-6.27176876 -0.00097056 0.00059499 7.27079820 0.99703378 0.99843445 0.49303404;
+	-6.27176980 -0.00097025 0.00059481 7.27079955 0.99703471 0.99843494 0.49303417;
+	-6.27177085 -0.00096995 0.00059462 7.27080090 0.99703564 0.99843543 0.49303426;
+	-6.27177189 -0.00096965 0.00059443 7.27080225 0.99703657 0.99843592 0.49303442;
+	-6.27177294 -0.00096934 0.00059425 7.27080359 0.99703750 0.99843641 0.49303454;
+	-6.27177398 -0.00096904 0.00059406 7.27080494 0.99703843 0.99843690 0.49303464;
+	-6.27177502 -0.00096874 0.00059388 7.27080628 0.99703936 0.99843739 0.49303476;
+	-6.27177605 -0.00096843 0.00059369 7.27080762 0.99704028 0.99843788 0.49303487;
+	-6.27177709 -0.00096813 0.00059350 7.27080896 0.99704121 0.99843837 0.49303501;
+	-6.27177812 -0.00096783 0.00059332 7.27081030 0.99704213 0.99843886 0.49303512;
+	-6.27177915 -0.00096752 0.00059313 7.27081163 0.99704306 0.99843934 0.49303521;
+	-6.27178018 -0.00096722 0.00059295 7.27081296 0.99704398 0.99843983 0.49303537;
+	-6.27178121 -0.00096692 0.00059276 7.27081429 0.99704491 0.99844032 0.49303546;
+	-6.27178224 -0.00096662 0.00059258 7.27081562 0.99704583 0.99844081 0.49303558;
+	-6.27178326 -0.00096632 0.00059239 7.27081695 0.99704675 0.99844129 0.49303575;
+	-6.27178429 -0.00096602 0.00059221 7.27081827 0.99704768 0.99844178 0.49303581;
+	-6.27178531 -0.00096571 0.00059202 7.27081960 0.99704860 0.99844227 0.49303591;
+	-6.27178633 -0.00096541 0.00059184 7.27082092 0.99704952 0.99844275 0.49303609;
+	-6.27178735 -0.00096511 0.00059165 7.27082224 0.99705044 0.99844324 0.49303618;
+	-6.27178836 -0.00096481 0.00059147 7.27082355 0.99705136 0.99844372 0.49303628;
+	-6.27178938 -0.00096451 0.00059128 7.27082487 0.99705228 0.99844421 0.49303641;
+	-6.27179039 -0.00096421 0.00059110 7.27082618 0.99705320 0.99844469 0.49303652;
+	-6.27179140 -0.00096391 0.00059091 7.27082749 0.99705412 0.99844518 0.49303666;
+	-6.27179242 -0.00096361 0.00059073 7.27082881 0.99705503 0.99844566 0.49303673;
+	-6.27179342 -0.00096331 0.00059055 7.27083011 0.99705595 0.99844614 0.49303690;
+	-6.27179443 -0.00096301 0.00059036 7.27083142 0.99705687 0.99844663 0.49303700;
+	-6.27179544 -0.00096271 0.00059018 7.27083272 0.99705778 0.99844711 0.49303712;
+	-6.27179644 -0.00096241 0.00058999 7.27083403 0.99705870 0.99844759 0.49303722;
+	-6.27179744 -0.00096211 0.00058981 7.27083533 0.99705961 0.99844808 0.49303732;
+	-6.27179844 -0.00096181 0.00058963 7.27083663 0.99706053 0.99844856 0.49303745;
+	-6.27179944 -0.00096152 0.00058944 7.27083792 0.99706144 0.99844904 0.49303757;
+	-6.27180044 -0.00096122 0.00058926 7.27083922 0.99706235 0.99844952 0.49303771;
+	-6.27180143 -0.00096092 0.00058908 7.27084051 0.99706327 0.99845000 0.49303777;
+	-6.27180243 -0.00096062 0.00058890 7.27084181 0.99706418 0.99845048 0.49303795;
+	-6.27180342 -0.00096032 0.00058871 7.27084310 0.99706509 0.99845097 0.49303802;
+	-6.27180441 -0.00096002 0.00058853 7.27084438 0.99706600 0.99845145 0.49303815;
+	-6.27180540 -0.00095973 0.00058835 7.27084567 0.99706691 0.99845193 0.49303827;
+	-6.27180639 -0.00095943 0.00058816 7.27084696 0.99706782 0.99845241 0.49303836;
+	-6.27180737 -0.00095913 0.00058798 7.27084824 0.99706873 0.99845289 0.49303844;
+	-6.27180836 -0.00095884 0.00058780 7.27084952 0.99706964 0.99845336 0.49303861;
+	-6.27180934 -0.00095854 0.00058762 7.27085080 0.99707055 0.99845384 0.49303868;
+	-6.27181032 -0.00095824 0.00058744 7.27085208 0.99707145 0.99845432 0.49303884;
+	-6.27181130 -0.00095795 0.00058725 7.27085335 0.99707236 0.99845480 0.49303895;
+	-6.27181228 -0.00095765 0.00058707 7.27085463 0.99707327 0.99845528 0.49303908;
+	-6.27181325 -0.00095735 0.00058689 7.27085590 0.99707417 0.99845576 0.49303915;
+	-6.27181423 -0.00095706 0.00058671 7.27085717 0.99707508 0.99845623 0.49303928;
+	-6.27181520 -0.00095676 0.00058653 7.27085844 0.99707598 0.99845671 0.49303940;
+	-6.27181618 -0.00095647 0.00058635 7.27085971 0.99707689 0.99845719 0.49303950;
+	-6.27181715 -0.00095617 0.00058616 7.27086098 0.99707779 0.99845766 0.49303965;
+	-6.27181811 -0.00095588 0.00058598 7.27086224 0.99707869 0.99845814 0.49303979;
+	-6.27181908 -0.00095558 0.00058580 7.27086350 0.99707960 0.99845862 0.49303989;
+	-6.27182005 -0.00095529 0.00058562 7.27086476 0.99708050 0.99845909 0.49303994;
+	-6.27182101 -0.00095499 0.00058544 7.27086602 0.99708140 0.99845957 0.49304006;
+	-6.27182198 -0.00095470 0.00058526 7.27086728 0.99708230 0.99846004 0.49304023;
+	-6.27182294 -0.00095440 0.00058508 7.27086854 0.99708320 0.99846052 0.49304031;
+	-6.27182390 -0.00095411 0.00058490 7.27086979 0.99708410 0.99846099 0.49304040;
+	-6.27182486 -0.00095381 0.00058472 7.27087104 0.99708500 0.99846147 0.49304052;
+	-6.27182581 -0.00095352 0.00058454 7.27087229 0.99708590 0.99846194 0.49304066;
+	-6.27182677 -0.00095323 0.00058436 7.27087354 0.99708680 0.99846242 0.49304078;
+	-6.27182772 -0.00095293 0.00058418 7.27087479 0.99708769 0.99846289 0.49304090;
+	-6.27182867 -0.00095264 0.00058400 7.27087603 0.99708859 0.99846336 0.49304102;
+	-6.27182963 -0.00095235 0.00058382 7.27087728 0.99708949 0.99846383 0.49304112;
+	-6.27183058 -0.00095205 0.00058364 7.27087852 0.99709038 0.99846431 0.49304120;
+	-6.27183152 -0.00095176 0.00058346 7.27087976 0.99709128 0.99846478 0.49304129;
+	-6.27183247 -0.00095147 0.00058328 7.27088100 0.99709217 0.99846525 0.49304145;
+	-6.27183342 -0.00095118 0.00058310 7.27088224 0.99709307 0.99846572 0.49304157;
+	-6.27183436 -0.00095088 0.00058292 7.27088348 0.99709396 0.99846619 0.49304165;
+	-6.27183530 -0.00095059 0.00058274 7.27088471 0.99709485 0.99846667 0.49304175;
+	-6.27183624 -0.00095030 0.00058256 7.27088594 0.99709575 0.99846714 0.49304190;
+	-6.27183718 -0.00095001 0.00058238 7.27088717 0.99709664 0.99846761 0.49304204;
+	-6.27183812 -0.00094972 0.00058221 7.27088840 0.99709753 0.99846808 0.49304212;
+	-6.27183906 -0.00094943 0.00058203 7.27088963 0.99709842 0.99846855 0.49304222;
+	-6.27183999 -0.00094914 0.00058185 7.27089086 0.99709931 0.99846902 0.49304233;
+	-6.27184093 -0.00094884 0.00058167 7.27089208 0.99710020 0.99846949 0.49304245;
+	-6.27184186 -0.00094855 0.00058149 7.27089331 0.99710109 0.99846996 0.49304255;
+	-6.27184279 -0.00094826 0.00058131 7.27089453 0.99710198 0.99847042 0.49304263;
+	-6.27184372 -0.00094797 0.00058113 7.27089575 0.99710287 0.99847089 0.49304277;
+	-6.27184465 -0.00094768 0.00058096 7.27089697 0.99710375 0.99847136 0.49304288;
+	-6.27184558 -0.00094739 0.00058078 7.27089818 0.99710464 0.99847183 0.49304302;
+	-6.27184650 -0.00094710 0.00058060 7.27089940 0.99710553 0.99847230 0.49304309;
+	-6.27184743 -0.00094681 0.00058042 7.27090061 0.99710641 0.99847276 0.49304322;
+	-6.27184835 -0.00094652 0.00058025 7.27090182 0.99710730 0.99847323 0.49304332;
+	-6.27184927 -0.00094623 0.00058007 7.27090304 0.99710818 0.99847370 0.49304348;
+	-6.27185019 -0.00094595 0.00057989 7.27090424 0.99710907 0.99847416 0.49304351;
+	-6.27185111 -0.00094566 0.00057971 7.27090545 0.99710995 0.99847463 0.49304363;
+	-6.27185203 -0.00094537 0.00057954 7.27090666 0.99711083 0.99847510 0.49304378;
+	-6.27185294 -0.00094508 0.00057936 7.27090786 0.99711172 0.99847556 0.49304390;
+	-6.27185386 -0.00094479 0.00057918 7.27090907 0.99711260 0.99847603 0.49304399;
+	-6.27185477 -0.00094450 0.00057901 7.27091027 0.99711348 0.99847649 0.49304412;
+	-6.27185568 -0.00094421 0.00057883 7.27091147 0.99711436 0.99847696 0.49304419;
+	-6.27185659 -0.00094393 0.00057865 7.27091267 0.99711524 0.99847742 0.49304433;
+	-6.27185750 -0.00094364 0.00057848 7.27091386 0.99711612 0.99847789 0.49304445;
+	-6.27185841 -0.00094335 0.00057830 7.27091506 0.99711700 0.99847835 0.49304453;
+	-6.27185932 -0.00094306 0.00057812 7.27091625 0.99711788 0.99847881 0.49304463;
+	-6.27186022 -0.00094278 0.00057795 7.27091745 0.99711876 0.99847928 0.49304471;
+	-6.27186113 -0.00094249 0.00057777 7.27091864 0.99711964 0.99847974 0.49304488;
+	-6.27186203 -0.00094220 0.00057759 7.27091983 0.99712051 0.99848020 0.49304496;
+	-6.27186293 -0.00094192 0.00057742 7.27092101 0.99712139 0.99848067 0.49304509;
+	-6.27186383 -0.00094163 0.00057724 7.27092220 0.99712227 0.99848113 0.49304521;
+	-6.27186473 -0.00094134 0.00057707 7.27092339 0.99712314 0.99848159 0.49304528;
+	-6.27186563 -0.00094106 0.00057689 7.27092457 0.99712402 0.99848205 0.49304542;
+	-6.27186652 -0.00094077 0.00057672 7.27092575 0.99712489 0.99848251 0.49304552;
+	-6.27186742 -0.00094049 0.00057654 7.27092693 0.99712577 0.99848297 0.49304562;
+	-6.27186831 -0.00094020 0.00057636 7.27092811 0.99712664 0.99848344 0.49304571;
+	-6.27186920 -0.00093991 0.00057619 7.27092929 0.99712751 0.99848390 0.49304585;
+	-6.27187010 -0.00093963 0.00057601 7.27093047 0.99712839 0.99848436 0.49304595;
+	-6.27187098 -0.00093934 0.00057584 7.27093164 0.99712926 0.99848482 0.49304606;
+	-6.27187187 -0.00093906 0.00057567 7.27093281 0.99713013 0.99848528 0.49304619;
+	-6.27187276 -0.00093877 0.00057549 7.27093399 0.99713100 0.99848574 0.49304625;
+	-6.27187365 -0.00093849 0.00057532 7.27093516 0.99713187 0.99848619 0.49304638;
+	-6.27187453 -0.00093821 0.00057514 7.27093633 0.99713274 0.99848665 0.49304650;
+	-6.27187541 -0.00093792 0.00057497 7.27093749 0.99713361 0.99848711 0.49304662;
+	-6.27187630 -0.00093764 0.00057479 7.27093866 0.99713448 0.99848757 0.49304675;
+	-6.27187718 -0.00093735 0.00057462 7.27093983 0.99713535 0.99848803 0.49304680;
+	-6.27187806 -0.00093707 0.00057444 7.27094099 0.99713622 0.99848849 0.49304696;
+	-6.27187894 -0.00093679 0.00057427 7.27094215 0.99713708 0.99848894 0.49304701;
+	-6.27187981 -0.00093650 0.00057410 7.27094331 0.99713795 0.99848940 0.49304717;
+	-6.27188069 -0.00093622 0.00057392 7.27094447 0.99713882 0.99848986 0.49304726;
+	-6.27188156 -0.00093594 0.00057375 7.27094563 0.99713968 0.99849031 0.49304734;
+	-6.27188244 -0.00093565 0.00057358 7.27094678 0.99714055 0.99849077 0.49304749;
+	-6.27188331 -0.00093537 0.00057340 7.27094794 0.99714141 0.99849123 0.49304756;
+	-6.27188418 -0.00093509 0.00057323 7.27094909 0.99714228 0.99849168 0.49304769;
+	-6.27188505 -0.00093481 0.00057306 7.27095025 0.99714314 0.99849214 0.49304781;
+	-6.27188592 -0.00093452 0.00057288 7.27095140 0.99714400 0.99849259 0.49304789;
+	-6.27188679 -0.00093424 0.00057271 7.27095255 0.99714486 0.99849305 0.49304797;
+	-6.27188765 -0.00093396 0.00057254 7.27095369 0.99714573 0.99849350 0.49304811;
+	-6.27188852 -0.00093368 0.00057236 7.27095484 0.99714659 0.99849396 0.49304819;
+	-6.27188938 -0.00093340 0.00057219 7.27095599 0.99714745 0.99849441 0.49304832;
+	-6.27189025 -0.00093312 0.00057202 7.27095713 0.99714831 0.99849487 0.49304841;
+	-6.27189111 -0.00093283 0.00057185 7.27095827 0.99714917 0.99849532 0.49304852;
+	-6.27189197 -0.00093255 0.00057167 7.27095942 0.99715003 0.99849577 0.49304861;
+	-6.27189283 -0.00093227 0.00057150 7.27096056 0.99715089 0.99849623 0.49304875;
+	-6.27189369 -0.00093199 0.00057133 7.27096169 0.99715175 0.99849668 0.49304884;
+	-6.27189454 -0.00093171 0.00057116 7.27096283 0.99715260 0.99849713 0.49304894;
+	-6.27189540 -0.00093143 0.00057098 7.27096397 0.99715346 0.99849758 0.49304909;
+	-6.27189625 -0.00093115 0.00057081 7.27096510 0.99715432 0.99849804 0.49304918;
+	-6.27189711 -0.00093087 0.00057064 7.27096624 0.99715517 0.99849849 0.49304926;
+	-6.27189796 -0.00093059 0.00057047 7.27096737 0.99715603 0.99849894 0.49304941;
+	-6.27189881 -0.00093031 0.00057030 7.27096850 0.99715689 0.99849939 0.49304950;
+	-6.27189966 -0.00093003 0.00057013 7.27096963 0.99715774 0.99849984 0.49304958;
+	-6.27190051 -0.00092975 0.00056995 7.27097076 0.99715860 0.99850029 0.49304964;
+	-6.27190136 -0.00092947 0.00056978 7.27097188 0.99715945 0.99850074 0.49304982;
+	-6.27190220 -0.00092919 0.00056961 7.27097301 0.99716030 0.99850119 0.49304989;
+	-6.27190305 -0.00092892 0.00056944 7.27097413 0.99716115 0.99850164 0.49305004;
+	-6.27190389 -0.00092864 0.00056927 7.27097525 0.99716201 0.99850209 0.49305011;
+	-6.27190474 -0.00092836 0.00056910 7.27097638 0.99716286 0.99850254 0.49305025;
+	-6.27190558 -0.00092808 0.00056893 7.27097750 0.99716371 0.99850299 0.49305033;
+	-6.27190642 -0.00092780 0.00056876 7.27097862 0.99716456 0.99850344 0.49305045;
+	-6.27190726 -0.00092752 0.00056859 7.27097973 0.99716541 0.99850389 0.49305056;
+	-6.27190810 -0.00092725 0.00056842 7.27098085 0.99716626 0.99850434 0.49305065;
+	-6.27190893 -0.00092697 0.00056825 7.27098197 0.99716711 0.99850478 0.49305076;
+	-6.27190977 -0.00092669 0.00056808 7.27098308 0.99716796 0.99850523 0.49305085;
+	-6.27191061 -0.00092641 0.00056791 7.27098419 0.99716881 0.99850568 0.49305094;
+	-6.27191144 -0.00092614 0.00056774 7.27098530 0.99716965 0.99850613 0.49305108;
+	-6.27191227 -0.00092586 0.00056757 7.27098641 0.99717050 0.99850657 0.49305115;
+	-6.27191311 -0.00092558 0.00056740 7.27098752 0.99717135 0.99850702 0.49305125;
+	-6.27191394 -0.00092531 0.00056723 7.27098863 0.99717219 0.99850747 0.49305139;
+	-6.27191477 -0.00092503 0.00056706 7.27098974 0.99717304 0.99850791 0.49305148;
+	-6.27191559 -0.00092475 0.00056689 7.27099084 0.99717389 0.99850836 0.49305158;
+	-6.27191642 -0.00092448 0.00056672 7.27099194 0.99717473 0.99850880 0.49305167;
+	-6.27191725 -0.00092420 0.00056655 7.27099305 0.99717557 0.99850925 0.49305181;
+	-6.27191807 -0.00092393 0.00056638 7.27099415 0.99717642 0.99850969 0.49305190;
+	-6.27191890 -0.00092365 0.00056621 7.27099525 0.99717726 0.99851014 0.49305201;
+	-6.27191972 -0.00092338 0.00056604 7.27099635 0.99717810 0.99851058 0.49305208;
+	-6.27192054 -0.00092310 0.00056587 7.27099744 0.99717895 0.99851103 0.49305223;
+	-6.27192136 -0.00092282 0.00056570 7.27099854 0.99717979 0.99851147 0.49305232;
+	-6.27192218 -0.00092255 0.00056553 7.27099964 0.99718063 0.99851192 0.49305243;
+	-6.27192300 -0.00092227 0.00056537 7.27100073 0.99718147 0.99851236 0.49305250;
+	-6.27192382 -0.00092200 0.00056520 7.27100182 0.99718231 0.99851280 0.49305258;
+	-6.27192464 -0.00092173 0.00056503 7.27100291 0.99718315 0.99851325 0.49305275;
+	-6.27192545 -0.00092145 0.00056486 7.27100400 0.99718399 0.99851369 0.49305278;
+	-6.27192627 -0.00092118 0.00056469 7.27100509 0.99718483 0.99851413 0.49305295;
+	-6.27192708 -0.00092090 0.00056452 7.27100618 0.99718566 0.99851457 0.49305299;
+	-6.27192790 -0.00092063 0.00056436 7.27100727 0.99718650 0.99851502 0.49305314;
+	-6.27192871 -0.00092036 0.00056419 7.27100835 0.99718734 0.99851546 0.49305323;
+	-6.27192952 -0.00092008 0.00056402 7.27100944 0.99718818 0.99851590 0.49305333;
+	-6.27193033 -0.00091981 0.00056385 7.27101052 0.99718901 0.99851634 0.49305345;
+	-6.27193114 -0.00091954 0.00056368 7.27101160 0.99718985 0.99851678 0.49305349;
+	-6.27193194 -0.00091926 0.00056352 7.27101268 0.99719068 0.99851722 0.49305365;
+	-6.27193275 -0.00091899 0.00056335 7.27101376 0.99719152 0.99851766 0.49305371;
+	-6.27193356 -0.00091872 0.00056318 7.27101484 0.99719235 0.99851810 0.49305382;
+	-6.27193436 -0.00091844 0.00056301 7.27101592 0.99719318 0.99851854 0.49305392;
+	-6.27193516 -0.00091817 0.00056285 7.27101699 0.99719402 0.99851898 0.49305400;
+	-6.27193597 -0.00091790 0.00056268 7.27101807 0.99719485 0.99851942 0.49305415;
+	-6.27193677 -0.00091763 0.00056251 7.27101914 0.99719568 0.99851986 0.49305427;
+	-6.27193757 -0.00091736 0.00056235 7.27102021 0.99719651 0.99852030 0.49305437;
+	-6.27193837 -0.00091708 0.00056218 7.27102128 0.99719735 0.99852074 0.49305443;
+	-6.27193917 -0.00091681 0.00056201 7.27102235 0.99719818 0.99852117 0.49305458;
+	-6.27193996 -0.00091654 0.00056185 7.27102342 0.99719901 0.99852161 0.49305464;
+	-6.27194076 -0.00091627 0.00056168 7.27102449 0.99719984 0.99852205 0.49305472;
+	-6.27194155 -0.00091600 0.00056151 7.27102556 0.99720066 0.99852249 0.49305485;
+	-6.27194235 -0.00091573 0.00056135 7.27102662 0.99720149 0.99852292 0.49305488;
+	-6.27194314 -0.00091546 0.00056118 7.27102769 0.99720232 0.99852336 0.49305501;
+	-6.27194394 -0.00091519 0.00056102 7.27102875 0.99720315 0.99852380 0.49305520;
+	-6.27194473 -0.00091492 0.00056085 7.27102981 0.99720398 0.99852423 0.49305527;
+	-6.27194552 -0.00091465 0.00056068 7.27103087 0.99720480 0.99852467 0.49305537;
+	-6.27194631 -0.00091438 0.00056052 7.27103193 0.99720563 0.99852511 0.49305541;
+	-6.27194710 -0.00091411 0.00056035 7.27103299 0.99720646 0.99852554 0.49305558;
+	-6.27194788 -0.00091384 0.00056019 7.27103405 0.99720728 0.99852598 0.49305568;
+	-6.27194867 -0.00091357 0.00056002 7.27103510 0.99720811 0.99852641 0.49305582;
+	-6.27194946 -0.00091330 0.00055986 7.27103616 0.99720893 0.99852685 0.49305585;
+	-6.27195024 -0.00091303 0.00055969 7.27103721 0.99720975 0.99852728 0.49305599;
+	-6.27195102 -0.00091276 0.00055953 7.27103827 0.99721058 0.99852772 0.49305606;
+	-6.27195181 -0.00091249 0.00055936 7.27103932 0.99721140 0.99852815 0.49305614;
+	-6.27195259 -0.00091222 0.00055920 7.27104037 0.99721222 0.99852858 0.49305629;
+	-6.27195337 -0.00091195 0.00055903 7.27104142 0.99721304 0.99852902 0.49305636;
+	-6.27195415 -0.00091168 0.00055887 7.27104247 0.99721387 0.99852945 0.49305643;
+	-6.27195493 -0.00091141 0.00055870 7.27104351 0.99721469 0.99852988 0.49305655;
+	-6.27195571 -0.00091115 0.00055854 7.27104456 0.99721551 0.99853032 0.49305663;
+	-6.27195648 -0.00091088 0.00055837 7.27104561 0.99721633 0.99853075 0.49305679;
+	-6.27195726 -0.00091061 0.00055821 7.27104665 0.99721715 0.99853118 0.49305682;
+	-6.27195803 -0.00091034 0.00055804 7.27104769 0.99721796 0.99853161 0.49305696;
+	-6.27195881 -0.00091007 0.00055788 7.27104873 0.99721878 0.99853205 0.49305711;
+	-6.27195958 -0.00090981 0.00055771 7.27104978 0.99721960 0.99853248 0.49305719;
+	-6.27196035 -0.00090954 0.00055755 7.27105081 0.99722042 0.99853291 0.49305721;
+	-6.27196113 -0.00090927 0.00055739 7.27105185 0.99722124 0.99853334 0.49305736;
+	-6.27196190 -0.00090901 0.00055722 7.27105289 0.99722205 0.99853377 0.49305741;
+	-6.27196267 -0.00090874 0.00055706 7.27105393 0.99722287 0.99853420 0.49305756;
+	-6.27196344 -0.00090847 0.00055690 7.27105496 0.99722368 0.99853463 0.49305766;
+	-6.27196420 -0.00090821 0.00055673 7.27105600 0.99722450 0.99853506 0.49305779;
+	-6.27196497 -0.00090794 0.00055657 7.27105703 0.99722531 0.99853549 0.49305788;
+	-6.27196574 -0.00090767 0.00055641 7.27105806 0.99722613 0.99853592 0.49305797;
+	-6.27196650 -0.00090741 0.00055624 7.27105909 0.99722694 0.99853635 0.49305806;
+	-6.27196726 -0.00090714 0.00055608 7.27106012 0.99722776 0.99853678 0.49305817;
+	-6.27196803 -0.00090688 0.00055592 7.27106115 0.99722857 0.99853721 0.49305825;
+	-6.27196879 -0.00090661 0.00055575 7.27106218 0.99722938 0.99853764 0.49305840;
+	-6.27196955 -0.00090634 0.00055559 7.27106321 0.99723019 0.99853807 0.49305847;
+	-6.27197031 -0.00090608 0.00055543 7.27106423 0.99723100 0.99853849 0.49305859;
+	-6.27197107 -0.00090581 0.00055526 7.27106526 0.99723181 0.99853892 0.49305865;
+	-6.27197183 -0.00090555 0.00055510 7.27106628 0.99723262 0.99853935 0.49305875;
+	-6.27197259 -0.00090528 0.00055494 7.27106730 0.99723343 0.99853978 0.49305889;
+	-6.27197335 -0.00090502 0.00055478 7.27106833 0.99723424 0.99854020 0.49305896;
+	-6.27197410 -0.00090476 0.00055461 7.27106935 0.99723505 0.99854063 0.49305906;
+	-6.27197486 -0.00090449 0.00055445 7.27107037 0.99723586 0.99854106 0.49305911;
+	-6.27197561 -0.00090423 0.00055429 7.27107138 0.99723667 0.99854148 0.49305929;
+	-6.27197637 -0.00090396 0.00055413 7.27107240 0.99723748 0.99854191 0.49305933;
+	-6.27197712 -0.00090370 0.00055397 7.27107342 0.99723828 0.99854233 0.49305943;
+	-6.27197787 -0.00090344 0.00055380 7.27107443 0.99723909 0.99854276 0.49305954;
+	-6.27197862 -0.00090317 0.00055364 7.27107545 0.99723990 0.99854319 0.49305965;
+	-6.27197937 -0.00090291 0.00055348 7.27107646 0.99724070 0.99854361 0.49305972;
+	-6.27198012 -0.00090264 0.00055332 7.27107748 0.99724151 0.99854404 0.49305986;
+	-6.27198087 -0.00090238 0.00055316 7.27107849 0.99724231 0.99854446 0.49305996;
+	-6.27198162 -0.00090212 0.00055300 7.27107950 0.99724312 0.99854488 0.49306003;
+	-6.27198236 -0.00090186 0.00055284 7.27108051 0.99724392 0.99854531 0.49306014;
+	-6.27198311 -0.00090159 0.00055267 7.27108151 0.99724472 0.99854573 0.49306027;
+	-6.27198385 -0.00090133 0.00055251 7.27108252 0.99724553 0.99854616 0.49306036;
+	-6.27198460 -0.00090107 0.00055235 7.27108353 0.99724633 0.99854658 0.49306043;
+	-6.27198534 -0.00090081 0.00055219 7.27108453 0.99724713 0.99854700 0.49306047;
+	-6.27198608 -0.00090054 0.00055203 7.27108554 0.99724793 0.99854742 0.49306066;
+	-6.27198682 -0.00090028 0.00055187 7.27108654 0.99724873 0.99854785 0.49306072;
+	-6.27198756 -0.00090002 0.00055171 7.27108754 0.99724953 0.99854827 0.49306079;
+	-6.27198830 -0.00089976 0.00055155 7.27108855 0.99725033 0.99854869 0.49306090;
+	-6.27198904 -0.00089950 0.00055139 7.27108955 0.99725113 0.99854911 0.49306100;
+	-6.27198978 -0.00089924 0.00055123 7.27109054 0.99725193 0.99854954 0.49306107;
+	-6.27199052 -0.00089898 0.00055107 7.27109154 0.99725273 0.99854996 0.49306122;
+	-6.27199126 -0.00089871 0.00055091 7.27109254 0.99725353 0.99855038 0.49306129;
+	-6.27199199 -0.00089845 0.00055075 7.27109354 0.99725433 0.99855080 0.49306135;
+	-6.27199273 -0.00089819 0.00055059 7.27109453 0.99725512 0.99855122 0.49306146;
+	-6.27199346 -0.00089793 0.00055043 7.27109553 0.99725592 0.99855164 0.49306163;
+	-6.27199419 -0.00089767 0.00055027 7.27109652 0.99725672 0.99855206 0.49306163;
+	-6.27199493 -0.00089741 0.00055011 7.27109751 0.99725751 0.99855248 0.49306178;
+	-6.27199566 -0.00089715 0.00054995 7.27109851 0.99725831 0.99855290 0.49306188;
+	-6.27199639 -0.00089689 0.00054979 7.27109950 0.99725910 0.99855332 0.49306196;
+	-6.27199712 -0.00089663 0.00054963 7.27110049 0.99725990 0.99855374 0.49306206;
+	-6.27199785 -0.00089637 0.00054947 7.27110147 0.99726069 0.99855416 0.49306218;
+	-6.27199857 -0.00089611 0.00054931 7.27110246 0.99726149 0.99855458 0.49306227;
+	-6.27199930 -0.00089585 0.00054915 7.27110345 0.99726228 0.99855499 0.49306238;
+	-6.27200003 -0.00089559 0.00054899 7.27110443 0.99726307 0.99855541 0.49306244;
+	-6.27200076 -0.00089534 0.00054883 7.27110542 0.99726386 0.99855583 0.49306254;
+	-6.27200148 -0.00089508 0.00054868 7.27110640 0.99726465 0.99855625 0.49306260;
+	-6.27200220 -0.00089482 0.00054852 7.27110739 0.99726545 0.99855667 0.49306270;
+	-6.27200293 -0.00089456 0.00054836 7.27110837 0.99726624 0.99855708 0.49306284;
+	-6.27200365 -0.00089430 0.00054820 7.27110935 0.99726703 0.99855750 0.49306289;
+	-6.27200437 -0.00089404 0.00054804 7.27111033 0.99726782 0.99855792 0.49306299;
+	-6.27200509 -0.00089378 0.00054788 7.27111131 0.99726861 0.99855833 0.49306315;
+	-6.27200581 -0.00089353 0.00054772 7.27111229 0.99726940 0.99855875 0.49306325;
+	-6.27200653 -0.00089327 0.00054757 7.27111326 0.99727018 0.99855916 0.49306334;
+	-6.27200725 -0.00089301 0.00054741 7.27111424 0.99727097 0.99855958 0.49306342;
+	-6.27200797 -0.00089275 0.00054725 7.27111522 0.99727176 0.99856000 0.49306348;
+	-6.27200869 -0.00089250 0.00054709 7.27111619 0.99727255 0.99856041 0.49306360;
+	-6.27200940 -0.00089224 0.00054693 7.27111717 0.99727333 0.99856083 0.49306368;
+	-6.27201012 -0.00089198 0.00054678 7.27111814 0.99727412 0.99856124 0.49306382;
+	-6.27201083 -0.00089172 0.00054662 7.27111911 0.99727491 0.99856166 0.49306389;
+	-6.27201155 -0.00089147 0.00054646 7.27112008 0.99727569 0.99856207 0.49306395;
+	-6.27201226 -0.00089121 0.00054630 7.27112105 0.99727648 0.99856248 0.49306405;
+	-6.27201297 -0.00089095 0.00054615 7.27112202 0.99727726 0.99856290 0.49306415;
+	-6.27201369 -0.00089070 0.00054599 7.27112299 0.99727804 0.99856331 0.49306425;
+	-6.27201440 -0.00089044 0.00054583 7.27112395 0.99727883 0.99856373 0.49306438;
+	-6.27201511 -0.00089019 0.00054568 7.27112492 0.99727961 0.99856414 0.49306445;
+	-6.27201582 -0.00088993 0.00054552 7.27112589 0.99728039 0.99856455 0.49306454;
+	-6.27201653 -0.00088967 0.00054536 7.27112685 0.99728118 0.99856496 0.49306460;
+	-6.27201723 -0.00088942 0.00054520 7.27112782 0.99728196 0.99856538 0.49306473;
+	-6.27201794 -0.00088916 0.00054505 7.27112878 0.99728274 0.99856579 0.49306481;
+	-6.27201865 -0.00088891 0.00054489 7.27112974 0.99728352 0.99856620 0.49306490;
+	-6.27201935 -0.00088865 0.00054473 7.27113070 0.99728430 0.99856661 0.49306499;
+	-6.27202006 -0.00088840 0.00054458 7.27113166 0.99728508 0.99856702 0.49306507;
+	-6.27202076 -0.00088814 0.00054442 7.27113262 0.99728586 0.99856744 0.49306519;
+	-6.27202147 -0.00088789 0.00054427 7.27113358 0.99728664 0.99856785 0.49306522;
+	-6.27202217 -0.00088763 0.00054411 7.27113454 0.99728742 0.99856826 0.49306541;
+	-6.27202287 -0.00088738 0.00054395 7.27113549 0.99728820 0.99856867 0.49306548;
+	-6.27202357 -0.00088713 0.00054380 7.27113645 0.99728897 0.99856908 0.49306558;
+	-6.27202427 -0.00088687 0.00054364 7.27113740 0.99728975 0.99856949 0.49306563;
+	-6.27202497 -0.00088662 0.00054349 7.27113836 0.99729053 0.99856990 0.49306575;
+	-6.27202567 -0.00088636 0.00054333 7.27113931 0.99729130 0.99857031 0.49306582;
+	-6.27202637 -0.00088611 0.00054317 7.27114026 0.99729208 0.99857072 0.49306593;
+	-6.27202707 -0.00088586 0.00054302 7.27114121 0.99729285 0.99857113 0.49306602;
+	-6.27202777 -0.00088560 0.00054286 7.27114216 0.99729363 0.99857153 0.49306615;
+	-6.27202846 -0.00088535 0.00054271 7.27114311 0.99729440 0.99857194 0.49306620;
+	-6.27202916 -0.00088510 0.00054255 7.27114406 0.99729518 0.99857235 0.49306631;
+	-6.27202985 -0.00088484 0.00054240 7.27114501 0.99729595 0.99857276 0.49306638;
+	-6.27203055 -0.00088459 0.00054224 7.27114596 0.99729673 0.99857317 0.49306650;
+	-6.27203124 -0.00088434 0.00054209 7.27114690 0.99729750 0.99857358 0.49306661;
+	-6.27203193 -0.00088409 0.00054193 7.27114785 0.99729827 0.99857398 0.49306664;
+	-6.27203262 -0.00088383 0.00054178 7.27114879 0.99729904 0.99857439 0.49306674;
+	-6.27203332 -0.00088358 0.00054162 7.27114973 0.99729981 0.99857480 0.49306687;
+	-6.27203401 -0.00088333 0.00054147 7.27115068 0.99730059 0.99857520 0.49306699;
+	-6.27203470 -0.00088308 0.00054131 7.27115162 0.99730136 0.99857561 0.49306701;
+	-6.27203539 -0.00088282 0.00054116 7.27115256 0.99730213 0.99857602 0.49306713;
+	-6.27203607 -0.00088257 0.00054100 7.27115350 0.99730290 0.99857642 0.49306721;
+	-6.27203676 -0.00088232 0.00054085 7.27115444 0.99730366 0.99857683 0.49306728;
+	-6.27203745 -0.00088207 0.00054069 7.27115538 0.99730443 0.99857724 0.49306742;
+	-6.27203813 -0.00088182 0.00054054 7.27115632 0.99730520 0.99857764 0.49306753;
+	-6.27203882 -0.00088157 0.00054039 7.27115725 0.99730597 0.99857805 0.49306761;
+	-6.27203950 -0.00088132 0.00054023 7.27115819 0.99730674 0.99857845 0.49306769;
+	-6.27204019 -0.00088107 0.00054008 7.27115912 0.99730750 0.99857886 0.49306776;
+	-6.27204087 -0.00088082 0.00053992 7.27116006 0.99730827 0.99857926 0.49306785;
+	-6.27204156 -0.00088056 0.00053977 7.27116099 0.99730904 0.99857966 0.49306801;
+	-6.27204224 -0.00088031 0.00053962 7.27116192 0.99730980 0.99858007 0.49306813;
+	-6.27204292 -0.00088006 0.00053946 7.27116286 0.99731057 0.99858047 0.49306816;
+	-6.27204360 -0.00087981 0.00053931 7.27116379 0.99731133 0.99858088 0.49306827;
+	-6.27204428 -0.00087956 0.00053916 7.27116472 0.99731210 0.99858128 0.49306833;
+	-6.27204496 -0.00087931 0.00053900 7.27116565 0.99731286 0.99858168 0.49306842;
+	-6.27204564 -0.00087906 0.00053885 7.27116657 0.99731363 0.99858209 0.49306852;
+	-6.27204632 -0.00087881 0.00053870 7.27116750 0.99731439 0.99858249 0.49306865;
+	-6.27204699 -0.00087857 0.00053854 7.27116843 0.99731515 0.99858289 0.49306872;
+	-6.27204767 -0.00087832 0.00053839 7.27116935 0.99731591 0.99858329 0.49306875;
+	-6.27204835 -0.00087807 0.00053824 7.27117028 0.99731668 0.99858369 0.49306889;
+	-6.27204902 -0.00087782 0.00053809 7.27117120 0.99731744 0.99858410 0.49306899;
+	-6.27204970 -0.00087757 0.00053793 7.27117213 0.99731820 0.99858450 0.49306909;
+	-6.27205037 -0.00087732 0.00053778 7.27117305 0.99731896 0.99858490 0.49306915;
+	-6.27205104 -0.00087707 0.00053763 7.27117397 0.99731972 0.99858530 0.49306931;
+	-6.27205172 -0.00087682 0.00053748 7.27117489 0.99732048 0.99858570 0.49306931;
+	-6.27205239 -0.00087658 0.00053732 7.27117581 0.99732124 0.99858610 0.49306947;
+	-6.27205306 -0.00087633 0.00053717 7.27117673 0.99732200 0.99858650 0.49306949;
+	-6.27205373 -0.00087608 0.00053702 7.27117765 0.99732276 0.99858690 0.49306961;
+	-6.27205440 -0.00087583 0.00053687 7.27117857 0.99732351 0.99858730 0.49306974;
+	-6.27205507 -0.00087558 0.00053671 7.27117949 0.99732427 0.99858770 0.49306982;
+	-6.27205574 -0.00087534 0.00053656 7.27118040 0.99732503 0.99858810 0.49306986;
+	-6.27205641 -0.00087509 0.00053641 7.27118132 0.99732579 0.99858850 0.49306997;
+	-6.27205707 -0.00087484 0.00053626 7.27118223 0.99732654 0.99858890 0.49307002;
+	-6.27205774 -0.00087459 0.00053611 7.27118315 0.99732730 0.99858930 0.49307020;
+	-6.27205841 -0.00087435 0.00053596 7.27118406 0.99732805 0.99858970 0.49307021;
+	-6.27205907 -0.00087410 0.00053580 7.27118497 0.99732881 0.99859010 0.49307035;
+	-6.27205974 -0.00087385 0.00053565 7.27118588 0.99732956 0.99859049 0.49307047;
+	-6.27206040 -0.00087361 0.00053550 7.27118679 0.99733032 0.99859089 0.49307051;
+	-6.27206106 -0.00087336 0.00053535 7.27118770 0.99733107 0.99859129 0.49307062;
+	-6.27206173 -0.00087311 0.00053520 7.27118861 0.99733182 0.99859169 0.49307069;
+	-6.27206239 -0.00087287 0.00053505 7.27118952 0.99733258 0.99859208 0.49307080;
+	-6.27206305 -0.00087262 0.00053490 7.27119043 0.99733333 0.99859248 0.49307089;
+	-6.27206371 -0.00087238 0.00053475 7.27119134 0.99733408 0.99859288 0.49307096;
+	-6.27206437 -0.00087213 0.00053460 7.27119224 0.99733483 0.99859327 0.49307103;
+	-6.27206503 -0.00087188 0.00053445 7.27119315 0.99733558 0.99859367 0.49307121;
+	-6.27206569 -0.00087164 0.00053429 7.27119405 0.99733633 0.99859407 0.49307121;
+	-6.27206635 -0.00087139 0.00053414 7.27119496 0.99733709 0.99859446 0.49307131;
+	-6.27206701 -0.00087115 0.00053399 7.27119586 0.99733783 0.99859486 0.49307143;
+	-6.27206767 -0.00087090 0.00053384 7.27119676 0.99733858 0.99859525 0.49307152;
+	-6.27206832 -0.00087066 0.00053369 7.27119766 0.99733933 0.99859565 0.49307163;
+	-6.27206898 -0.00087041 0.00053354 7.27119856 0.99734008 0.99859604 0.49307170;
+	-6.27206963 -0.00087017 0.00053339 7.27119946 0.99734083 0.99859644 0.49307178;
+	-6.27207029 -0.00086992 0.00053324 7.27120036 0.99734158 0.99859683 0.49307182;
+	-6.27207094 -0.00086968 0.00053309 7.27120126 0.99734233 0.99859723 0.49307196;
+	-6.27207160 -0.00086944 0.00053294 7.27120216 0.99734307 0.99859762 0.49307197;
+	-6.27207225 -0.00086919 0.00053279 7.27120306 0.99734382 0.99859802 0.49307220;
+	-6.27207290 -0.00086895 0.00053264 7.27120395 0.99734457 0.99859841 0.49307226;
+	-6.27207355 -0.00086870 0.00053249 7.27120485 0.99734531 0.99859880 0.49307233;
+	-6.27207420 -0.00086846 0.00053234 7.27120574 0.99734606 0.99859920 0.49307241;
+	-6.27207485 -0.00086822 0.00053219 7.27120664 0.99734680 0.99859959 0.49307252;
+	-6.27207550 -0.00086797 0.00053205 7.27120753 0.99734755 0.99859998 0.49307258;
+	-6.27207615 -0.00086773 0.00053190 7.27120842 0.99734829 0.99860037 0.49307271;
+	-6.27207680 -0.00086749 0.00053175 7.27120931 0.99734903 0.99860077 0.49307274;
+	-6.27207745 -0.00086724 0.00053160 7.27121021 0.99734978 0.99860116 0.49307287;
+	-6.27207810 -0.00086700 0.00053145 7.27121110 0.99735052 0.99860155 0.49307293;
+	-6.27207874 -0.00086676 0.00053130 7.27121199 0.99735126 0.99860194 0.49307303;
+	-6.27207939 -0.00086652 0.00053115 7.27121287 0.99735200 0.99860233 0.49307313;
+	-6.27208004 -0.00086627 0.00053100 7.27121376 0.99735275 0.99860273 0.49307325;
+	-6.27208068 -0.00086603 0.00053085 7.27121465 0.99735349 0.99860312 0.49307329;
+	-6.27208132 -0.00086579 0.00053070 7.27121554 0.99735423 0.99860351 0.49307333;
+	-6.27208197 -0.00086555 0.00053056 7.27121642 0.99735497 0.99860390 0.49307349;
+	-6.27208261 -0.00086530 0.00053041 7.27121731 0.99735571 0.99860429 0.49307355;
+	-6.27208325 -0.00086506 0.00053026 7.27121819 0.99735645 0.99860468 0.49307366;
+	-6.27208390 -0.00086482 0.00053011 7.27121907 0.99735719 0.99860507 0.49307376;
+	-6.27208454 -0.00086458 0.00052996 7.27121996 0.99735792 0.99860546 0.49307384;
+	-6.27208518 -0.00086434 0.00052981 7.27122084 0.99735866 0.99860585 0.49307389;
+	-6.27208582 -0.00086410 0.00052967 7.27122172 0.99735940 0.99860624 0.49307398;
+	-6.27208646 -0.00086386 0.00052952 7.27122260 0.99736014 0.99860663 0.49307410;
+	-6.27208710 -0.00086361 0.00052937 7.27122348 0.99736088 0.99860701 0.49307418;
+	-6.27208774 -0.00086337 0.00052922 7.27122436 0.99736161 0.99860740 0.49307431;
+	-6.27208837 -0.00086313 0.00052908 7.27122524 0.99736235 0.99860779 0.49307430;
+	-6.27208901 -0.00086289 0.00052893 7.27122612 0.99736308 0.99860818 0.49307450;
+	-6.27208965 -0.00086265 0.00052878 7.27122700 0.99736382 0.99860857 0.49307452;
+	-6.27209028 -0.00086241 0.00052863 7.27122787 0.99736455 0.99860896 0.49307461;
+	-6.27209092 -0.00086217 0.00052849 7.27122875 0.99736529 0.99860934 0.49307473;
+	-6.27209155 -0.00086193 0.00052834 7.27122962 0.99736602 0.99860973 0.49307476;
+	-6.27209219 -0.00086169 0.00052819 7.27123050 0.99736676 0.99861012 0.49307493;
+	-6.27209282 -0.00086145 0.00052804 7.27123137 0.99736749 0.99861050 0.49307491;
+	-6.27209346 -0.00086121 0.00052790 7.27123224 0.99736822 0.99861089 0.49307506;
+	-6.27209409 -0.00086097 0.00052775 7.27123312 0.99736896 0.99861128 0.49307515;
+	-6.27209472 -0.00086073 0.00052760 7.27123399 0.99736969 0.99861166 0.49307527;
+	-6.27209535 -0.00086049 0.00052746 7.27123486 0.99737042 0.99861205 0.49307528;
+	-6.27209598 -0.00086025 0.00052731 7.27123573 0.99737115 0.99861244 0.49307544;
+	-6.27209661 -0.00086002 0.00052716 7.27123660 0.99737188 0.99861282 0.49307551;
+	-6.27209724 -0.00085978 0.00052702 7.27123747 0.99737261 0.99861321 0.49307555;
+	-6.27209787 -0.00085954 0.00052687 7.27123833 0.99737334 0.99861359 0.49307566;
+	-6.27209850 -0.00085930 0.00052672 7.27123920 0.99737407 0.99861398 0.49307570;
+	-6.27209913 -0.00085906 0.00052658 7.27124007 0.99737480 0.99861436 0.49307581;
+	-6.27209976 -0.00085882 0.00052643 7.27124094 0.99737553 0.99861475 0.49307599;
+	-6.27210038 -0.00085858 0.00052628 7.27124180 0.99737626 0.99861513 0.49307598;
+	-6.27210101 -0.00085835 0.00052614 7.27124266 0.99737699 0.99861551 0.49307614;
+	-6.27210164 -0.00085811 0.00052599 7.27124353 0.99737771 0.99861590 0.49307614;
+	-6.27210226 -0.00085787 0.00052585 7.27124439 0.99737844 0.99861628 0.49307625;
+	-6.27210289 -0.00085763 0.00052570 7.27124525 0.99737917 0.99861667 0.49307637;
+	-6.27210351 -0.00085740 0.00052555 7.27124612 0.99737989 0.99861705 0.49307645;
+	-6.27210414 -0.00085716 0.00052541 7.27124698 0.99738062 0.99861743 0.49307653;
+	-6.27210476 -0.00085692 0.00052526 7.27124784 0.99738135 0.99861782 0.49307663;
+	-6.27210538 -0.00085668 0.00052512 7.27124870 0.99738207 0.99861820 0.49307669;
+	-6.27210600 -0.00085645 0.00052497 7.27124956 0.99738280 0.99861858 0.49307677;
+	-6.27210663 -0.00085621 0.00052483 7.27125042 0.99738352 0.99861896 0.49307688;
+	-6.27210725 -0.00085597 0.00052468 7.27125127 0.99738424 0.99861934 0.49307699;
+	-6.27210787 -0.00085574 0.00052454 7.27125213 0.99738497 0.99861973 0.49307706;
+	-6.27210849 -0.00085550 0.00052439 7.27125299 0.99738569 0.99862011 0.49307704;
+	-6.27210911 -0.00085526 0.00052425 7.27125384 0.99738641 0.99862049 0.49307723;
+	-6.27210973 -0.00085503 0.00052410 7.27125470 0.99738714 0.99862087 0.49307731;
+	-6.27211034 -0.00085479 0.00052396 7.27125555 0.99738786 0.99862125 0.49307742;
+	-6.27211096 -0.00085456 0.00052381 7.27125641 0.99738858 0.99862163 0.49307753;
+	-6.27211158 -0.00085432 0.00052367 7.27125726 0.99738930 0.99862201 0.49307753;
+	-6.27211220 -0.00085408 0.00052352 7.27125811 0.99739002 0.99862239 0.49307764;
+	-6.27211281 -0.00085385 0.00052338 7.27125896 0.99739074 0.99862277 0.49307770;
+	-6.27211343 -0.00085361 0.00052323 7.27125981 0.99739146 0.99862315 0.49307780;
+	-6.27211404 -0.00085338 0.00052309 7.27126067 0.99739218 0.99862353 0.49307792;
+	-6.27211466 -0.00085314 0.00052295 7.27126152 0.99739290 0.99862391 0.49307794;
+	-6.27211527 -0.00085291 0.00052280 7.27126236 0.99739362 0.99862429 0.49307803;
+	-6.27211589 -0.00085267 0.00052266 7.27126321 0.99739434 0.99862467 0.49307820;
+	-6.27211650 -0.00085244 0.00052251 7.27126406 0.99739506 0.99862505 0.49307827;
+	-6.27211711 -0.00085220 0.00052237 7.27126491 0.99739577 0.99862543 0.49307830;
+	-6.27211772 -0.00085197 0.00052222 7.27126575 0.99739649 0.99862581 0.49307839;
+	-6.27211833 -0.00085173 0.00052208 7.27126660 0.99739721 0.99862618 0.49307851;
+	-6.27211895 -0.00085150 0.00052194 7.27126745 0.99739792 0.99862656 0.49307861;
+	-6.27211956 -0.00085127 0.00052179 7.27126829 0.99739864 0.99862694 0.49307868;
+	-6.27212017 -0.00085103 0.00052165 7.27126913 0.99739936 0.99862732 0.49307878;
+	-6.27212078 -0.00085080 0.00052151 7.27126998 0.99740007 0.99862770 0.49307884;
+	-6.27212138 -0.00085056 0.00052136 7.27127082 0.99740079 0.99862807 0.49307888;
+	-6.27212199 -0.00085033 0.00052122 7.27127166 0.99740150 0.99862845 0.49307902;
+	-6.27212260 -0.00085010 0.00052108 7.27127250 0.99740221 0.99862883 0.49307911;
+	-6.27212321 -0.00084986 0.00052093 7.27127334 0.99740293 0.99862920 0.49307920;
+	-6.27212381 -0.00084963 0.00052079 7.27127418 0.99740364 0.99862958 0.49307926;
+	-6.27212442 -0.00084940 0.00052065 7.27127502 0.99740435 0.99862996 0.49307935;
+	-6.27212503 -0.00084916 0.00052050 7.27127586 0.99740507 0.99863033 0.49307944;
+	-6.27212563 -0.00084893 0.00052036 7.27127670 0.99740578 0.99863071 0.49307944;
+	-6.27212624 -0.00084870 0.00052022 7.27127754 0.99740649 0.99863108 0.49307954;
+	-6.27212684 -0.00084847 0.00052008 7.27127837 0.99740720 0.99863146 0.49307961;
+	-6.27212744 -0.00084823 0.00051993 7.27127921 0.99740791 0.99863183 0.49307978;
+	-6.27212805 -0.00084800 0.00051979 7.27128005 0.99740862 0.99863221 0.49307983;
+	-6.27212865 -0.00084777 0.00051965 7.27128088 0.99740933 0.99863258 0.49307996;
+	-6.27212925 -0.00084754 0.00051951 7.27128172 0.99741004 0.99863296 0.49308005;
+	-6.27212986 -0.00084730 0.00051936 7.27128255 0.99741075 0.99863333 0.49308014;
+	-6.27213046 -0.00084707 0.00051922 7.27128338 0.99741146 0.99863371 0.49308018;
+	-6.27213106 -0.00084684 0.00051908 7.27128422 0.99741217 0.99863408 0.49308030;
+	-6.27213166 -0.00084661 0.00051894 7.27128505 0.99741288 0.99863445 0.49308040;
+	-6.27213226 -0.00084638 0.00051879 7.27128588 0.99741359 0.99863483 0.49308040;
+	-6.27213286 -0.00084615 0.00051865 7.27128671 0.99741429 0.99863520 0.49308050;
+	-6.27213345 -0.00084592 0.00051851 7.27128754 0.99741500 0.99863557 0.49308061;
+	-6.27213405 -0.00084568 0.00051837 7.27128837 0.99741571 0.99863595 0.49308064;
+	-6.27213465 -0.00084545 0.00051823 7.27128920 0.99741641 0.99863632 0.49308083;
+	-6.27213525 -0.00084522 0.00051809 7.27129003 0.99741712 0.99863669 0.49308089;
+	-6.27213585 -0.00084499 0.00051794 7.27129085 0.99741783 0.99863706 0.49308103;
+	-6.27213644 -0.00084476 0.00051780 7.27129168 0.99741853 0.99863744 0.49308104;
+	-6.27213704 -0.00084453 0.00051766 7.27129251 0.99741924 0.99863781 0.49308114;
+	-6.27213763 -0.00084430 0.00051752 7.27129333 0.99741994 0.99863818 0.49308122;
+	-6.27213823 -0.00084407 0.00051738 7.27129416 0.99742064 0.99863855 0.49308125;
+	-6.27213882 -0.00084384 0.00051724 7.27129498 0.99742135 0.99863892 0.49308128;
+	-6.27213942 -0.00084361 0.00051710 7.27129581 0.99742205 0.99863929 0.49308149;
+	-6.27214001 -0.00084338 0.00051696 7.27129663 0.99742275 0.99863966 0.49308153;
+	-6.27214060 -0.00084315 0.00051681 7.27129745 0.99742346 0.99864003 0.49308160;
+	-6.27214120 -0.00084292 0.00051667 7.27129827 0.99742416 0.99864041 0.49308174;
+	-6.27214179 -0.00084269 0.00051653 7.27129910 0.99742486 0.99864078 0.49308171;
+	-6.27214238 -0.00084246 0.00051639 7.27129992 0.99742556 0.99864115 0.49308189;
+	-6.27214297 -0.00084223 0.00051625 7.27130074 0.99742626 0.99864152 0.49308189;
+	-6.27214356 -0.00084200 0.00051611 7.27130156 0.99742696 0.99864188 0.49308208;
+	-6.27214415 -0.00084178 0.00051597 7.27130237 0.99742766 0.99864225 0.49308218;
+	-6.27214474 -0.00084155 0.00051583 7.27130319 0.99742836 0.99864262 0.49308217;
+	-6.27214533 -0.00084132 0.00051569 7.27130401 0.99742906 0.99864299 0.49308225;
+	-6.27214592 -0.00084109 0.00051555 7.27130483 0.99742976 0.99864336 0.49308239;
+	-6.27214651 -0.00084086 0.00051541 7.27130564 0.99743046 0.99864373 0.49308247;
+	-6.27214709 -0.00084063 0.00051527 7.27130646 0.99743116 0.99864410 0.49308255;
+	-6.27214768 -0.00084040 0.00051513 7.27130728 0.99743186 0.99864447 0.49308258;
+	-6.27214827 -0.00084018 0.00051499 7.27130809 0.99743255 0.99864483 0.49308266;
+	-6.27214885 -0.00083995 0.00051485 7.27130891 0.99743325 0.99864520 0.49308274;
+	-6.27214944 -0.00083972 0.00051471 7.27130972 0.99743395 0.99864557 0.49308290;
+	-6.27215002 -0.00083949 0.00051457 7.27131053 0.99743464 0.99864594 0.49308290;
+	-6.27215061 -0.00083926 0.00051443 7.27131134 0.99743534 0.99864631 0.49308300;
+	-6.27215119 -0.00083904 0.00051429 7.27131216 0.99743604 0.99864667 0.49308315;
+	-6.27215178 -0.00083881 0.00051415 7.27131297 0.99743673 0.99864704 0.49308314;
+	-6.27215236 -0.00083858 0.00051401 7.27131378 0.99743743 0.99864741 0.49308324;
+	-6.27215294 -0.00083836 0.00051387 7.27131459 0.99743812 0.99864777 0.49308338;
+	-6.27215353 -0.00083813 0.00051373 7.27131540 0.99743881 0.99864814 0.49308338;
+	-6.27215411 -0.00083790 0.00051359 7.27131621 0.99743951 0.99864850 0.49308350;
+	-6.27215469 -0.00083768 0.00051345 7.27131702 0.99744020 0.99864887 0.49308357;
+	-6.27215527 -0.00083745 0.00051332 7.27131782 0.99744089 0.99864924 0.49308374;
+	-6.27215585 -0.00083722 0.00051318 7.27131863 0.99744159 0.99864960 0.49308379;
+	-6.27215643 -0.00083700 0.00051304 7.27131944 0.99744228 0.99864997 0.49308384;
+	-6.27215701 -0.00083677 0.00051290 7.27132024 0.99744297 0.99865033 0.49308393;
+	-6.27215759 -0.00083654 0.00051276 7.27132105 0.99744366 0.99865070 0.49308399;
+	-6.27215817 -0.00083632 0.00051262 7.27132185 0.99744435 0.99865106 0.49308412;
+	-6.27215875 -0.00083609 0.00051248 7.27132266 0.99744504 0.99865143 0.49308421;
+	-6.27215933 -0.00083587 0.00051234 7.27132346 0.99744574 0.99865179 0.49308425;
+	-6.27215990 -0.00083564 0.00051221 7.27132426 0.99744643 0.99865215 0.49308434;
+	-6.27216048 -0.00083541 0.00051207 7.27132507 0.99744711 0.99865252 0.49308442;
+	-6.27216106 -0.00083519 0.00051193 7.27132587 0.99744780 0.99865288 0.49308450;
+	-6.27216164 -0.00083496 0.00051179 7.27132667 0.99744849 0.99865324 0.49308461;
+	-6.27216221 -0.00083474 0.00051165 7.27132747 0.99744918 0.99865361 0.49308467;
+	-6.27216279 -0.00083451 0.00051151 7.27132827 0.99744987 0.99865397 0.49308473;
+	-6.27216336 -0.00083429 0.00051138 7.27132907 0.99745056 0.99865433 0.49308483;
+	-6.27216394 -0.00083406 0.00051124 7.27132987 0.99745124 0.99865470 0.49308489;
+	-6.27216451 -0.00083384 0.00051110 7.27133067 0.99745193 0.99865506 0.49308501;
+	-6.27216508 -0.00083361 0.00051096 7.27133147 0.99745262 0.99865542 0.49308509;
+	-6.27216566 -0.00083339 0.00051083 7.27133227 0.99745330 0.99865578 0.49308519;
+	-6.27216623 -0.00083317 0.00051069 7.27133306 0.99745399 0.99865615 0.49308520;
+	-6.27216680 -0.00083294 0.00051055 7.27133386 0.99745468 0.99865651 0.49308532;
+	-6.27216737 -0.00083272 0.00051041 7.27133465 0.99745536 0.99865687 0.49308537;
+	-6.27216794 -0.00083249 0.00051028 7.27133545 0.99745605 0.99865723 0.49308548;
+	-6.27216851 -0.00083227 0.00051014 7.27133624 0.99745673 0.99865759 0.49308555;
+	-6.27216909 -0.00083205 0.00051000 7.27133704 0.99745741 0.99865795 0.49308568;
+	-6.27216966 -0.00083182 0.00050986 7.27133783 0.99745810 0.99865831 0.49308575;
+	-6.27217022 -0.00083160 0.00050973 7.27133863 0.99745878 0.99865867 0.49308580;
+	-6.27217079 -0.00083138 0.00050959 7.27133942 0.99745946 0.99865903 0.49308589;
+	-6.27217136 -0.00083115 0.00050945 7.27134021 0.99746015 0.99865939 0.49308593;
+	-6.27217193 -0.00083093 0.00050932 7.27134100 0.99746083 0.99865975 0.49308603;
+	-6.27217250 -0.00083071 0.00050918 7.27134179 0.99746151 0.99866011 0.49308603;
+	-6.27217307 -0.00083048 0.00050904 7.27134258 0.99746219 0.99866047 0.49308626;
+	-6.27217363 -0.00083026 0.00050891 7.27134337 0.99746287 0.99866083 0.49308628;
+	-6.27217420 -0.00083004 0.00050877 7.27134416 0.99746355 0.99866119 0.49308633;
+	-6.27217477 -0.00082982 0.00050863 7.27134495 0.99746424 0.99866155 0.49308648;
+	-6.27217533 -0.00082959 0.00050850 7.27134574 0.99746492 0.99866191 0.49308650;
+	-6.27217590 -0.00082937 0.00050836 7.27134653 0.99746559 0.99866227 0.49308659;
+	-6.27217646 -0.00082915 0.00050822 7.27134731 0.99746627 0.99866263 0.49308664;
+	-6.27217703 -0.00082893 0.00050809 7.27134810 0.99746695 0.99866299 0.49308674;
+	-6.27217759 -0.00082871 0.00050795 7.27134888 0.99746763 0.99866334 0.49308688;
+	-6.27217815 -0.00082848 0.00050782 7.27134967 0.99746831 0.99866370 0.49308691;
+	-6.27217872 -0.00082826 0.00050768 7.27135045 0.99746899 0.99866406 0.49308700;
+	-6.27217928 -0.00082804 0.00050754 7.27135124 0.99746967 0.99866442 0.49308706;
+	-6.27217984 -0.00082782 0.00050741 7.27135202 0.99747034 0.99866477 0.49308711;
+	-6.27218040 -0.00082760 0.00050727 7.27135281 0.99747102 0.99866513 0.49308731;
+	-6.27218097 -0.00082738 0.00050714 7.27135359 0.99747170 0.99866549 0.49308733;
+	-6.27218153 -0.00082716 0.00050700 7.27135437 0.99747237 0.99866584 0.49308746;
+	-6.27218209 -0.00082693 0.00050686 7.27135515 0.99747305 0.99866620 0.49308753;
+	-6.27218265 -0.00082671 0.00050673 7.27135593 0.99747372 0.99866656 0.49308759;
+	-6.27218321 -0.00082649 0.00050659 7.27135671 0.99747440 0.99866691 0.49308757;
+	-6.27218377 -0.00082627 0.00050646 7.27135749 0.99747507 0.99866727 0.49308770;
+	-6.27218433 -0.00082605 0.00050632 7.27135827 0.99747575 0.99866763 0.49308772;
+	-6.27218488 -0.00082583 0.00050619 7.27135905 0.99747642 0.99866798 0.49308784;
+	-6.27218544 -0.00082561 0.00050605 7.27135983 0.99747709 0.99866834 0.49308794;
+	-6.27218600 -0.00082539 0.00050592 7.27136061 0.99747777 0.99866869 0.49308810;
+	-6.27218656 -0.00082517 0.00050578 7.27136139 0.99747844 0.99866905 0.49308812;
+	-6.27218711 -0.00082495 0.00050565 7.27136216 0.99747911 0.99866940 0.49308821;
+	-6.27218767 -0.00082473 0.00050551 7.27136294 0.99747978 0.99866976 0.49308825;
+	-6.27218823 -0.00082451 0.00050538 7.27136371 0.99748046 0.99867011 0.49308833;
+	-6.27218878 -0.00082429 0.00050524 7.27136449 0.99748113 0.99867046 0.49308847;
+	-6.27218934 -0.00082407 0.00050511 7.27136526 0.99748180 0.99867082 0.49308860;
+	-6.27218989 -0.00082385 0.00050497 7.27136604 0.99748247 0.99867117 0.49308859;
+	-6.27219045 -0.00082363 0.00050484 7.27136681 0.99748314 0.99867153 0.49308869;
+	-6.27219100 -0.00082341 0.00050471 7.27136759 0.99748381 0.99867188 0.49308873;
+	-6.27219155 -0.00082320 0.00050457 7.27136836 0.99748448 0.99867223 0.49308878;
+	-6.27219211 -0.00082298 0.00050444 7.27136913 0.99748515 0.99867259 0.49308888;
+	-6.27219266 -0.00082276 0.00050430 7.27136990 0.99748582 0.99867294 0.49308897;
+	-6.27219321 -0.00082254 0.00050417 7.27137067 0.99748649 0.99867329 0.49308901;
+	-6.27219376 -0.00082232 0.00050403 7.27137144 0.99748715 0.99867364 0.49308913;
+	-6.27219432 -0.00082210 0.00050390 7.27137221 0.99748782 0.99867400 0.49308916;
+	-6.27219487 -0.00082188 0.00050377 7.27137298 0.99748849 0.99867435 0.49308935;
+	-6.27219542 -0.00082167 0.00050363 7.27137375 0.99748916 0.99867470 0.49308938;
+	-6.27219597 -0.00082145 0.00050350 7.27137452 0.99748982 0.99867505 0.49308944;
+	-6.27219652 -0.00082123 0.00050337 7.27137529 0.99749049 0.99867540 0.49308959;
+	-6.27219707 -0.00082101 0.00050323 7.27137606 0.99749116 0.99867576 0.49308961;
+	-6.27219762 -0.00082080 0.00050310 7.27137682 0.99749182 0.99867611 0.49308966;
+	-6.27219817 -0.00082058 0.00050296 7.27137759 0.99749249 0.99867646 0.49308979;
+	-6.27219872 -0.00082036 0.00050283 7.27137836 0.99749315 0.99867681 0.49308985;
+	-6.27219926 -0.00082014 0.00050270 7.27137912 0.99749382 0.99867716 0.49308989;
+	-6.27219981 -0.00081993 0.00050256 7.27137989 0.99749448 0.99867751 0.49309002;
+	-6.27220036 -0.00081971 0.00050243 7.27138065 0.99749514 0.99867786 0.49309006;
+	-6.27220091 -0.00081949 0.00050230 7.27138141 0.99749581 0.99867821 0.49309016;
+	-6.27220145 -0.00081927 0.00050216 7.27138218 0.99749647 0.99867856 0.49309022;
+	-6.27220200 -0.00081906 0.00050203 7.27138294 0.99749713 0.99867891 0.49309028;
+	-6.27220254 -0.00081884 0.00050190 7.27138370 0.99749780 0.99867926 0.49309037;
+	-6.27220309 -0.00081862 0.00050177 7.27138446 0.99749846 0.99867961 0.49309053;
+	-6.27220363 -0.00081841 0.00050163 7.27138523 0.99749912 0.99867996 0.49309055;
+	-6.27220418 -0.00081819 0.00050150 7.27138599 0.99749978 0.99868031 0.49309069;
+	-6.27220472 -0.00081798 0.00050137 7.27138675 0.99750044 0.99868066 0.49309070;
+	-6.27220527 -0.00081776 0.00050124 7.27138751 0.99750110 0.99868100 0.49309083;
+	-6.27220581 -0.00081754 0.00050110 7.27138827 0.99750176 0.99868135 0.49309090;
+	-6.27220635 -0.00081733 0.00050097 7.27138902 0.99750242 0.99868170 0.49309098;
+	-6.27220690 -0.00081711 0.00050084 7.27138978 0.99750308 0.99868205 0.49309101;
+	-6.27220744 -0.00081690 0.00050071 7.27139054 0.99750374 0.99868240 0.49309113;
+	-6.27220798 -0.00081668 0.00050057 7.27139130 0.99750440 0.99868275 0.49309116;
+	-6.27220852 -0.00081647 0.00050044 7.27139205 0.99750506 0.99868309 0.49309123;
+	-6.27220906 -0.00081625 0.00050031 7.27139281 0.99750572 0.99868344 0.49309142;
+	-6.27220960 -0.00081604 0.00050018 7.27139357 0.99750638 0.99868379 0.49309142;
+	-6.27221014 -0.00081582 0.00050005 7.27139432 0.99750703 0.99868413 0.49309146;
+	-6.27221068 -0.00081561 0.00049991 7.27139508 0.99750769 0.99868448 0.49309158;
+	-6.27221122 -0.00081539 0.00049978 7.27139583 0.99750835 0.99868483 0.49309166;
+	-6.27221176 -0.00081518 0.00049965 7.27139659 0.99750901 0.99868517 0.49309171;
+	-6.27221230 -0.00081496 0.00049952 7.27139734 0.99750966 0.99868552 0.49309183;
+	-6.27221284 -0.00081475 0.00049939 7.27139809 0.99751032 0.99868587 0.49309186;
+	-6.27221338 -0.00081453 0.00049926 7.27139884 0.99751097 0.99868621 0.49309196;
+	-6.27221391 -0.00081432 0.00049912 7.27139960 0.99751163 0.99868656 0.49309197;
+	-6.27221445 -0.00081410 0.00049899 7.27140035 0.99751228 0.99868690 0.49309212;
+	-6.27221499 -0.00081389 0.00049886 7.27140110 0.99751294 0.99868725 0.49309226;
+	-6.27221552 -0.00081368 0.00049873 7.27140185 0.99751359 0.99868759 0.49309233;
+	-6.27221606 -0.00081346 0.00049860 7.27140260 0.99751425 0.99868794 0.49309240;
+	-6.27221660 -0.00081325 0.00049847 7.27140335 0.99751490 0.99868828 0.49309241;
+	-6.27221713 -0.00081303 0.00049834 7.27140410 0.99751555 0.99868863 0.49309250;
+	-6.27221767 -0.00081282 0.00049821 7.27140485 0.99751621 0.99868897 0.49309252;
+	-6.27221820 -0.00081261 0.00049807 7.27140559 0.99751686 0.99868932 0.49309262;
+	-6.27221874 -0.00081239 0.00049794 7.27140634 0.99751751 0.99868966 0.49309274;
+	-6.27221927 -0.00081218 0.00049781 7.27140709 0.99751816 0.99869001 0.49309277;
+	-6.27221980 -0.00081197 0.00049768 7.27140784 0.99751881 0.99869035 0.49309287;
+	-6.27222034 -0.00081176 0.00049755 7.27140858 0.99751946 0.99869069 0.49309295;
+	-6.27222087 -0.00081154 0.00049742 7.27140933 0.99752012 0.99869104 0.49309305;
+	-6.27222140 -0.00081133 0.00049729 7.27141007 0.99752077 0.99869138 0.49309311;
+	-6.27222193 -0.00081112 0.00049716 7.27141082 0.99752142 0.99869172 0.49309317;
+	-6.27222247 -0.00081090 0.00049703 7.27141156 0.99752207 0.99869207 0.49309328;
+	-6.27222300 -0.00081069 0.00049690 7.27141230 0.99752271 0.99869241 0.49309332;
+	-6.27222353 -0.00081048 0.00049677 7.27141305 0.99752336 0.99869275 0.49309344;
+	-6.27222406 -0.00081027 0.00049664 7.27141379 0.99752401 0.99869309 0.49309341;
+	-6.27222459 -0.00081006 0.00049651 7.27141453 0.99752466 0.99869344 0.49309354;
+	-6.27222512 -0.00080984 0.00049638 7.27141527 0.99752531 0.99869378 0.49309361;
+	-6.27222565 -0.00080963 0.00049625 7.27141602 0.99752596 0.99869412 0.49309375;
+	-6.27222618 -0.00080942 0.00049612 7.27141676 0.99752660 0.99869446 0.49309380;
+	-6.27222671 -0.00080921 0.00049599 7.27141750 0.99752725 0.99869480 0.49309382;
+	-6.27222723 -0.00080900 0.00049586 7.27141824 0.99752790 0.99869514 0.49309395;
+	-6.27222776 -0.00080879 0.00049573 7.27141898 0.99752854 0.99869548 0.49309403;
+	-6.27222829 -0.00080857 0.00049560 7.27141972 0.99752919 0.99869582 0.49309409;
+	-6.27222882 -0.00080836 0.00049547 7.27142045 0.99752984 0.99869617 0.49309410;
+	-6.27222934 -0.00080815 0.00049534 7.27142119 0.99753048 0.99869651 0.49309425;
+	-6.27222987 -0.00080794 0.00049521 7.27142193 0.99753113 0.99869685 0.49309434;
+	-6.27223040 -0.00080773 0.00049508 7.27142267 0.99753177 0.99869719 0.49309443;
+	-6.27223092 -0.00080752 0.00049495 7.27142340 0.99753241 0.99869753 0.49309447;
+	-6.27223145 -0.00080731 0.00049482 7.27142414 0.99753306 0.99869787 0.49309457;
+	-6.27223197 -0.00080710 0.00049469 7.27142488 0.99753370 0.99869821 0.49309459;
+	-6.27223250 -0.00080689 0.00049457 7.27142561 0.99753435 0.99869855 0.49309463;
+	-6.27223302 -0.00080668 0.00049444 7.27142635 0.99753499 0.99869888 0.49309473;
+	-6.27223355 -0.00080647 0.00049431 7.27142708 0.99753563 0.99869922 0.49309486;
+	-6.27223407 -0.00080626 0.00049418 7.27142781 0.99753627 0.99869956 0.49309496;
+	-6.27223460 -0.00080605 0.00049405 7.27142855 0.99753692 0.99869990 0.49309501;
+	-6.27223512 -0.00080584 0.00049392 7.27142928 0.99753756 0.99870024 0.49309506;
+	-6.27223564 -0.00080563 0.00049379 7.27143001 0.99753820 0.99870058 0.49309510;
+	-6.27223616 -0.00080542 0.00049366 7.27143074 0.99753884 0.99870092 0.49309524;
+	-6.27223669 -0.00080521 0.00049354 7.27143148 0.99753948 0.99870125 0.49309538;
+	-6.27223721 -0.00080500 0.00049341 7.27143221 0.99754012 0.99870159 0.49309541;
+	-6.27223773 -0.00080479 0.00049328 7.27143294 0.99754076 0.99870193 0.49309547;
+	-6.27223825 -0.00080458 0.00049315 7.27143367 0.99754140 0.99870227 0.49309552;
+	-6.27223877 -0.00080437 0.00049302 7.27143440 0.99754204 0.99870260 0.49309562;
+	-6.27223929 -0.00080416 0.00049289 7.27143513 0.99754268 0.99870294 0.49309564;
+	-6.27223981 -0.00080395 0.00049277 7.27143586 0.99754332 0.99870328 0.49309575;
+	-6.27224033 -0.00080375 0.00049264 7.27143658 0.99754395 0.99870362 0.49309585;
+	-6.27224085 -0.00080354 0.00049251 7.27143731 0.99754459 0.99870395 0.49309591;
+	-6.27224137 -0.00080333 0.00049238 7.27143804 0.99754523 0.99870429 0.49309595;
+	-6.27224189 -0.00080312 0.00049225 7.27143877 0.99754587 0.99870463 0.49309610;
+	-6.27224241 -0.00080291 0.00049213 7.27143949 0.99754650 0.99870496 0.49309609;
+	-6.27224292 -0.00080270 0.00049200 7.27144022 0.99754714 0.99870530 0.49309625;
+	-6.27224344 -0.00080250 0.00049187 7.27144094 0.99754778 0.99870563 0.49309625;
+	-6.27224396 -0.00080229 0.00049174 7.27144167 0.99754841 0.99870597 0.49309632;
+	-6.27224447 -0.00080208 0.00049162 7.27144239 0.99754905 0.99870630 0.49309639;
+	-6.27224499 -0.00080187 0.00049149 7.27144312 0.99754968 0.99870664 0.49309648;
+	-6.27224551 -0.00080166 0.00049136 7.27144384 0.99755032 0.99870697 0.49309655;
+	-6.27224602 -0.00080146 0.00049123 7.27144457 0.99755095 0.99870731 0.49309667;
+	-6.27224654 -0.00080125 0.00049111 7.27144529 0.99755159 0.99870764 0.49309666;
+	-6.27224705 -0.00080104 0.00049098 7.27144601 0.99755222 0.99870798 0.49309679;
+	-6.27224757 -0.00080084 0.00049085 7.27144673 0.99755286 0.99870831 0.49309687;
+	-6.27224808 -0.00080063 0.00049072 7.27144746 0.99755349 0.99870865 0.49309695;
+	-6.27224860 -0.00080042 0.00049060 7.27144818 0.99755412 0.99870898 0.49309704;
+	-6.27224911 -0.00080021 0.00049047 7.27144890 0.99755476 0.99870932 0.49309706;
+	-6.27224962 -0.00080001 0.00049034 7.27144962 0.99755539 0.99870965 0.49309713;
+	-6.27225014 -0.00079980 0.00049022 7.27145034 0.99755602 0.99870998 0.49309722;
+	-6.27225065 -0.00079959 0.00049009 7.27145106 0.99755665 0.99871032 0.49309728;
+	-6.27225116 -0.00079939 0.00048996 7.27145178 0.99755728 0.99871065 0.49309738;
+	-6.27225168 -0.00079918 0.00048984 7.27145249 0.99755791 0.99871098 0.49309747;
+	-6.27225219 -0.00079897 0.00048971 7.27145321 0.99755854 0.99871131 0.49309753;
+	-6.27225270 -0.00079877 0.00048958 7.27145393 0.99755918 0.99871165 0.49309771;
+	-6.27225321 -0.00079856 0.00048946 7.27145465 0.99755981 0.99871198 0.49309765;
+	-6.27225372 -0.00079836 0.00048933 7.27145536 0.99756044 0.99871231 0.49309782;
+	-6.27225423 -0.00079815 0.00048921 7.27145608 0.99756106 0.99871264 0.49309784;
+	-6.27225474 -0.00079795 0.00048908 7.27145680 0.99756169 0.99871298 0.49309793;
+	-6.27225525 -0.00079774 0.00048895 7.27145751 0.99756232 0.99871331 0.49309799;
+	-6.27225576 -0.00079753 0.00048883 7.27145823 0.99756295 0.99871364 0.49309812;
+	-6.27225627 -0.00079733 0.00048870 7.27145894 0.99756358 0.99871397 0.49309805;
+	-6.27225678 -0.00079712 0.00048857 7.27145966 0.99756421 0.99871430 0.49309821;
+	-6.27225729 -0.00079692 0.00048845 7.27146037 0.99756483 0.99871463 0.49309831;
+	-6.27225780 -0.00079671 0.00048832 7.27146108 0.99756546 0.99871496 0.49309836;
+	-6.27225830 -0.00079651 0.00048820 7.27146180 0.99756609 0.99871529 0.49309842;
+	-6.27225881 -0.00079630 0.00048807 7.27146251 0.99756671 0.99871563 0.49309856;
+	-6.27225932 -0.00079610 0.00048795 7.27146322 0.99756734 0.99871596 0.49309861;
+	-6.27225983 -0.00079589 0.00048782 7.27146393 0.99756797 0.99871629 0.49309861;
+	-6.27226033 -0.00079569 0.00048769 7.27146464 0.99756859 0.99871662 0.49309873;
+	-6.27226084 -0.00079548 0.00048757 7.27146535 0.99756922 0.99871695 0.49309877;
+	-6.27226134 -0.00079528 0.00048744 7.27146606 0.99756984 0.99871728 0.49309886;
+	-6.27226185 -0.00079508 0.00048732 7.27146677 0.99757047 0.99871761 0.49309893;
+	-6.27226235 -0.00079487 0.00048719 7.27146748 0.99757109 0.99871793 0.49309902;
+	-6.27226286 -0.00079467 0.00048707 7.27146819 0.99757172 0.99871826 0.49309912;
+	-6.27226336 -0.00079446 0.00048694 7.27146890 0.99757234 0.99871859 0.49309921;
+	-6.27226387 -0.00079426 0.00048682 7.27146961 0.99757296 0.99871892 0.49309921;
+	-6.27226437 -0.00079406 0.00048669 7.27147032 0.99757359 0.99871925 0.49309928;
+	-6.27226488 -0.00079385 0.00048657 7.27147102 0.99757421 0.99871958 0.49309939;
+	-6.27226538 -0.00079365 0.00048644 7.27147173 0.99757483 0.99871991 0.49309945;
+	-6.27226588 -0.00079345 0.00048632 7.27147244 0.99757545 0.99872024 0.49309958;
+	-6.27226639 -0.00079324 0.00048619 7.27147314 0.99757607 0.99872056 0.49309958;
+	-6.27226689 -0.00079304 0.00048607 7.27147385 0.99757670 0.99872089 0.49309961;
+	-6.27226739 -0.00079284 0.00048594 7.27147455 0.99757732 0.99872122 0.49309967;
+	-6.27226789 -0.00079263 0.00048582 7.27147526 0.99757794 0.99872155 0.49309986;
+	-6.27226839 -0.00079243 0.00048570 7.27147596 0.99757856 0.99872187 0.49309996;
+	-6.27226889 -0.00079223 0.00048557 7.27147667 0.99757918 0.99872220 0.49309999;
+	-6.27226939 -0.00079202 0.00048545 7.27147737 0.99757980 0.99872253 0.49310010;
+	-6.27226990 -0.00079182 0.00048532 7.27147807 0.99758042 0.99872286 0.49310015;
+	-6.27227040 -0.00079162 0.00048520 7.27147878 0.99758104 0.99872318 0.49310022;
+	-6.27227090 -0.00079142 0.00048507 7.27147948 0.99758166 0.99872351 0.49310023;
+	-6.27227139 -0.00079121 0.00048495 7.27148018 0.99758227 0.99872384 0.49310029;
+	-6.27227189 -0.00079101 0.00048483 7.27148088 0.99758289 0.99872416 0.49310038;
+	-6.27227239 -0.00079081 0.00048470 7.27148158 0.99758351 0.99872449 0.49310046;
+	-6.27227289 -0.00079061 0.00048458 7.27148228 0.99758413 0.99872481 0.49310052;
+	-6.27227339 -0.00079041 0.00048445 7.27148298 0.99758474 0.99872514 0.49310058;
+	-6.27227389 -0.00079020 0.00048433 7.27148368 0.99758536 0.99872546 0.49310064;
+	-6.27227439 -0.00079000 0.00048421 7.27148438 0.99758598 0.99872579 0.49310077;
+	-6.27227488 -0.00078980 0.00048408 7.27148508 0.99758659 0.99872612 0.49310085;
+	-6.27227538 -0.00078960 0.00048396 7.27148578 0.99758721 0.99872644 0.49310092;
+	-6.27227588 -0.00078940 0.00048384 7.27148648 0.99758783 0.99872677 0.49310100;
+	-6.27227637 -0.00078920 0.00048371 7.27148717 0.99758844 0.99872709 0.49310112;
+	-6.27227687 -0.00078900 0.00048359 7.27148787 0.99758906 0.99872741 0.49310113;
+	-6.27227736 -0.00078880 0.00048347 7.27148857 0.99758967 0.99872774 0.49310122;
+	-6.27227786 -0.00078859 0.00048334 7.27148927 0.99759029 0.99872806 0.49310127;
+	-6.27227836 -0.00078839 0.00048322 7.27148996 0.99759090 0.99872839 0.49310130;
+	-6.27227885 -0.00078819 0.00048310 7.27149066 0.99759151 0.99872871 0.49310141;
+	-6.27227934 -0.00078799 0.00048297 7.27149135 0.99759213 0.99872903 0.49310152;
+	-6.27227984 -0.00078779 0.00048285 7.27149205 0.99759274 0.99872936 0.49310152;
+	-6.27228033 -0.00078759 0.00048273 7.27149274 0.99759335 0.99872968 0.49310163;
+	-6.27228083 -0.00078739 0.00048260 7.27149344 0.99759397 0.99873001 0.49310168;
+	-6.27228132 -0.00078719 0.00048248 7.27149413 0.99759458 0.99873033 0.49310178;
+	-6.27228181 -0.00078699 0.00048236 7.27149482 0.99759519 0.99873065 0.49310189;
+	-6.27228231 -0.00078679 0.00048224 7.27149552 0.99759580 0.99873097 0.49310191;
+	-6.27228280 -0.00078659 0.00048211 7.27149621 0.99759641 0.99873130 0.49310203;
+	-6.27228329 -0.00078639 0.00048199 7.27149690 0.99759702 0.99873162 0.49310202;
+	-6.27228378 -0.00078619 0.00048187 7.27149759 0.99759763 0.99873194 0.49310216;
+	-6.27228427 -0.00078599 0.00048175 7.27149828 0.99759825 0.99873226 0.49310220;
+	-6.27228476 -0.00078579 0.00048162 7.27149897 0.99759886 0.99873259 0.49310228;
+	-6.27228526 -0.00078559 0.00048150 7.27149966 0.99759946 0.99873291 0.49310231;
+	-6.27228575 -0.00078539 0.00048138 7.27150035 0.99760007 0.99873323 0.49310245;
+	-6.27228624 -0.00078519 0.00048126 7.27150104 0.99760068 0.99873355 0.49310250;
+	-6.27228673 -0.00078500 0.00048113 7.27150173 0.99760129 0.99873387 0.49310256;
+	-6.27228722 -0.00078480 0.00048101 7.27150242 0.99760190 0.99873419 0.49310269;
+	-6.27228771 -0.00078460 0.00048089 7.27150311 0.99760251 0.99873451 0.49310278;
+	-6.27228819 -0.00078440 0.00048077 7.27150380 0.99760312 0.99873483 0.49310277;
+	-6.27228868 -0.00078420 0.00048065 7.27150448 0.99760372 0.99873515 0.49310291;
+	-6.27228917 -0.00078400 0.00048052 7.27150517 0.99760433 0.99873548 0.49310291;
+	-6.27228966 -0.00078380 0.00048040 7.27150586 0.99760494 0.99873580 0.49310301;
+	-6.27229015 -0.00078360 0.00048028 7.27150654 0.99760555 0.99873612 0.49310307;
+	-6.27229064 -0.00078341 0.00048016 7.27150723 0.99760615 0.99873644 0.49310321;
+	-6.27229112 -0.00078321 0.00048004 7.27150792 0.99760676 0.99873676 0.49310322;
+	-6.27229161 -0.00078301 0.00047992 7.27150860 0.99760736 0.99873707 0.49310330;
+	-6.27229210 -0.00078281 0.00047979 7.27150929 0.99760797 0.99873739 0.49310330;
+	-6.27229258 -0.00078261 0.00047967 7.27150997 0.99760857 0.99873771 0.49310340;
+	-6.27229307 -0.00078242 0.00047955 7.27151065 0.99760918 0.99873803 0.49310344;
+	-6.27229356 -0.00078222 0.00047943 7.27151134 0.99760978 0.99873835 0.49310362;
+	-6.27229404 -0.00078202 0.00047931 7.27151202 0.99761039 0.99873867 0.49310362;
+	-6.27229453 -0.00078182 0.00047919 7.27151270 0.99761099 0.99873899 0.49310369;
+	-6.27229501 -0.00078163 0.00047907 7.27151339 0.99761160 0.99873931 0.49310382;
+	-6.27229550 -0.00078143 0.00047895 7.27151407 0.99761220 0.99873963 0.49310378;
+	-6.27229598 -0.00078123 0.00047882 7.27151475 0.99761280 0.99873994 0.49310395;
+	-6.27229646 -0.00078103 0.00047870 7.27151543 0.99761340 0.99874026 0.49310398;
+	-6.27229695 -0.00078084 0.00047858 7.27151611 0.99761401 0.99874058 0.49310409;
+	-6.27229743 -0.00078064 0.00047846 7.27151679 0.99761461 0.99874090 0.49310410;
+	-6.27229791 -0.00078044 0.00047834 7.27151747 0.99761521 0.99874122 0.49310419;
+	-6.27229840 -0.00078025 0.00047822 7.27151815 0.99761581 0.99874153 0.49310426;
+	-6.27229888 -0.00078005 0.00047810 7.27151883 0.99761641 0.99874185 0.49310431;
+	-6.27229936 -0.00077985 0.00047798 7.27151951 0.99761701 0.99874217 0.49310439;
+	-6.27229984 -0.00077966 0.00047786 7.27152019 0.99761762 0.99874248 0.49310456;
+	-6.27230033 -0.00077946 0.00047774 7.27152087 0.99761822 0.99874280 0.49310453;
+	-6.27230081 -0.00077926 0.00047762 7.27152154 0.99761882 0.99874312 0.49310456;
+	-6.27230129 -0.00077907 0.00047750 7.27152222 0.99761942 0.99874343 0.49310472;
+	-6.27230177 -0.00077887 0.00047738 7.27152290 0.99762001 0.99874375 0.49310478;
+	-6.27230225 -0.00077868 0.00047726 7.27152357 0.99762061 0.99874407 0.49310482;
+	-6.27230273 -0.00077848 0.00047714 7.27152425 0.99762121 0.99874438 0.49310485;
+	-6.27230321 -0.00077828 0.00047702 7.27152493 0.99762181 0.99874470 0.49310496;
+	-6.27230369 -0.00077809 0.00047690 7.27152560 0.99762241 0.99874501 0.49310508;
+	-6.27230417 -0.00077789 0.00047678 7.27152628 0.99762301 0.99874533 0.49310514;
+	-6.27230465 -0.00077770 0.00047666 7.27152695 0.99762360 0.99874564 0.49310512;
+	-6.27230513 -0.00077750 0.00047654 7.27152763 0.99762420 0.99874596 0.49310522;
+	-6.27230561 -0.00077731 0.00047642 7.27152830 0.99762480 0.99874627 0.49310530;
+	-6.27230609 -0.00077711 0.00047630 7.27152897 0.99762540 0.99874659 0.49310543;
+	-6.27230656 -0.00077692 0.00047618 7.27152965 0.99762599 0.99874690 0.49310543;
+	-6.27230704 -0.00077672 0.00047606 7.27153032 0.99762659 0.99874722 0.49310556;
+	-6.27230752 -0.00077653 0.00047594 7.27153099 0.99762718 0.99874753 0.49310555;
+	-6.27230800 -0.00077633 0.00047582 7.27153166 0.99762778 0.99874785 0.49310570;
+	-6.27230847 -0.00077614 0.00047570 7.27153233 0.99762837 0.99874816 0.49310570;
+	-6.27230895 -0.00077594 0.00047558 7.27153301 0.99762897 0.99874848 0.49310582;
+	-6.27230943 -0.00077575 0.00047546 7.27153368 0.99762956 0.99874879 0.49310585;
+	-6.27230990 -0.00077556 0.00047534 7.27153435 0.99763016 0.99874910 0.49310599;
+	-6.27231038 -0.00077536 0.00047522 7.27153502 0.99763075 0.99874942 0.49310605;
+	-6.27231085 -0.00077517 0.00047510 7.27153569 0.99763135 0.99874973 0.49310608;
+	-6.27231133 -0.00077497 0.00047498 7.27153636 0.99763194 0.99875004 0.49310612;
+	-6.27231180 -0.00077478 0.00047487 7.27153702 0.99763253 0.99875036 0.49310624;
+	-6.27231228 -0.00077458 0.00047475 7.27153769 0.99763312 0.99875067 0.49310622;
+	-6.27231275 -0.00077439 0.00047463 7.27153836 0.99763372 0.99875098 0.49310639;
+	-6.27231323 -0.00077420 0.00047451 7.27153903 0.99763431 0.99875129 0.49310643;
+	-6.27231370 -0.00077400 0.00047439 7.27153970 0.99763490 0.99875161 0.49310644;
+	-6.27231417 -0.00077381 0.00047427 7.27154036 0.99763549 0.99875192 0.49310654;
+	-6.27231465 -0.00077362 0.00047415 7.27154103 0.99763608 0.99875223 0.49310665;
+	-6.27231512 -0.00077342 0.00047403 7.27154170 0.99763668 0.99875254 0.49310674;
+	-6.27231559 -0.00077323 0.00047392 7.27154236 0.99763727 0.99875285 0.49310670;
+	-6.27231607 -0.00077304 0.00047380 7.27154303 0.99763786 0.99875317 0.49310684;
+	-6.27231654 -0.00077284 0.00047368 7.27154369 0.99763845 0.99875348 0.49310692;
+	-6.27231701 -0.00077265 0.00047356 7.27154436 0.99763904 0.99875379 0.49310699;
+	-6.27231748 -0.00077246 0.00047344 7.27154502 0.99763963 0.99875410 0.49310700;
+	-6.27231795 -0.00077227 0.00047332 7.27154569 0.99764021 0.99875441 0.49310703;
+	-6.27231842 -0.00077207 0.00047321 7.27154635 0.99764080 0.99875472 0.49310722;
+	-6.27231889 -0.00077188 0.00047309 7.27154701 0.99764139 0.99875503 0.49310725;
+	-6.27231936 -0.00077169 0.00047297 7.27154768 0.99764198 0.99875534 0.49310729;
+	-6.27231984 -0.00077150 0.00047285 7.27154834 0.99764257 0.99875565 0.49310745;
+	-6.27232031 -0.00077130 0.00047273 7.27154900 0.99764316 0.99875596 0.49310751;
+	-6.27232077 -0.00077111 0.00047262 7.27154966 0.99764374 0.99875627 0.49310749;
+	-6.27232124 -0.00077092 0.00047250 7.27155032 0.99764433 0.99875658 0.49310765;
+	-6.27232171 -0.00077073 0.00047238 7.27155099 0.99764492 0.99875689 0.49310767;
+	-6.27232218 -0.00077054 0.00047226 7.27155165 0.99764550 0.99875720 0.49310775;
+	-6.27232265 -0.00077034 0.00047215 7.27155231 0.99764609 0.99875751 0.49310781;
+	-6.27232312 -0.00077015 0.00047203 7.27155297 0.99764668 0.99875782 0.49310787;
+	-6.27232359 -0.00076996 0.00047191 7.27155363 0.99764726 0.99875813 0.49310796;
+	-6.27232406 -0.00076977 0.00047179 7.27155429 0.99764785 0.99875844 0.49310787;
+	-6.27232452 -0.00076958 0.00047168 7.27155494 0.99764843 0.99875875 0.49310807;
+	-6.27232499 -0.00076939 0.00047156 7.27155560 0.99764902 0.99875906 0.49310819;
+	-6.27232546 -0.00076920 0.00047144 7.27155626 0.99764960 0.99875936 0.49310824;
+	-6.27232592 -0.00076900 0.00047132 7.27155692 0.99765019 0.99875967 0.49310831;
+	-6.27232639 -0.00076881 0.00047121 7.27155758 0.99765077 0.99875998 0.49310826;
+	-6.27232686 -0.00076862 0.00047109 7.27155823 0.99765135 0.99876029 0.49310841;
+	-6.27232732 -0.00076843 0.00047097 7.27155889 0.99765194 0.99876060 0.49310851;
+	-6.27232779 -0.00076824 0.00047086 7.27155955 0.99765252 0.99876090 0.49310855;
+	-6.27232825 -0.00076805 0.00047074 7.27156020 0.99765310 0.99876121 0.49310862;
+	-6.27232872 -0.00076786 0.00047062 7.27156086 0.99765369 0.99876152 0.49310868;
+	-6.27232918 -0.00076767 0.00047050 7.27156151 0.99765427 0.99876183 0.49310870;
+	-6.27232965 -0.00076748 0.00047039 7.27156217 0.99765485 0.99876213 0.49310885;
+	-6.27233011 -0.00076729 0.00047027 7.27156282 0.99765543 0.99876244 0.49310881;
+	-6.27233058 -0.00076710 0.00047015 7.27156348 0.99765601 0.99876275 0.49310901;
+	-6.27233104 -0.00076691 0.00047004 7.27156413 0.99765660 0.99876305 0.49310905;
+	-6.27233150 -0.00076672 0.00046992 7.27156478 0.99765718 0.99876336 0.49310906;
+	-6.27233197 -0.00076653 0.00046981 7.27156544 0.99765776 0.99876367 0.49310915;
+	-6.27233243 -0.00076634 0.00046969 7.27156609 0.99765834 0.99876397 0.49310926;
+	-6.27233289 -0.00076615 0.00046957 7.27156674 0.99765892 0.99876428 0.49310922;
+	-6.27233336 -0.00076596 0.00046946 7.27156740 0.99765950 0.99876458 0.49310945;
+	-6.27233382 -0.00076577 0.00046934 7.27156805 0.99766008 0.99876489 0.49310949;
+	-6.27233428 -0.00076558 0.00046922 7.27156870 0.99766065 0.99876520 0.49310955;
+	-6.27233474 -0.00076539 0.00046911 7.27156935 0.99766123 0.99876550 0.49310960;
+	-6.27233520 -0.00076520 0.00046899 7.27157000 0.99766181 0.99876581 0.49310966;
+	-6.27233566 -0.00076501 0.00046888 7.27157065 0.99766239 0.99876611 0.49310976;
+	-6.27233612 -0.00076482 0.00046876 7.27157130 0.99766297 0.99876642 0.49310982;
+	-6.27233658 -0.00076464 0.00046864 7.27157195 0.99766355 0.99876672 0.49310988;
+	-6.27233705 -0.00076445 0.00046853 7.27157260 0.99766412 0.99876703 0.49310995;
+	-6.27233751 -0.00076426 0.00046841 7.27157325 0.99766470 0.99876733 0.49310998;
+	-6.27233797 -0.00076407 0.00046830 7.27157390 0.99766528 0.99876763 0.49311004;
+	-6.27233843 -0.00076388 0.00046818 7.27157454 0.99766585 0.99876794 0.49311017;
+	-6.27233888 -0.00076369 0.00046806 7.27157519 0.99766643 0.99876824 0.49311019;
+	-6.27233934 -0.00076350 0.00046795 7.27157584 0.99766701 0.99876855 0.49311023;
+	-6.27233980 -0.00076332 0.00046783 7.27157649 0.99766758 0.99876885 0.49311028;
+	-6.27234026 -0.00076313 0.00046772 7.27157713 0.99766816 0.99876915 0.49311042;
+	-6.27234072 -0.00076294 0.00046760 7.27157778 0.99766873 0.99876946 0.49311047;
+	-6.27234118 -0.00076275 0.00046749 7.27157843 0.99766931 0.99876976 0.49311045;
+	-6.27234163 -0.00076256 0.00046737 7.27157907 0.99766988 0.99877006 0.49311061;
+	-6.27234209 -0.00076238 0.00046726 7.27157972 0.99767046 0.99877037 0.49311059;
+	-6.27234255 -0.00076219 0.00046714 7.27158036 0.99767103 0.99877067 0.49311072;
+	-6.27234301 -0.00076200 0.00046703 7.27158101 0.99767160 0.99877097 0.49311081;
+	-6.27234346 -0.00076181 0.00046691 7.27158165 0.99767218 0.99877128 0.49311088;
+	-6.27234392 -0.00076163 0.00046680 7.27158229 0.99767275 0.99877158 0.49311099;
+	-6.27234438 -0.00076144 0.00046668 7.27158294 0.99767332 0.99877188 0.49311100;
+	-6.27234483 -0.00076125 0.00046657 7.27158358 0.99767389 0.99877218 0.49311108;
+	-6.27234529 -0.00076106 0.00046645 7.27158422 0.99767447 0.99877248 0.49311114;
+	-6.27234574 -0.00076088 0.00046634 7.27158487 0.99767504 0.99877279 0.49311126;
+	-6.27234620 -0.00076069 0.00046622 7.27158551 0.99767561 0.99877309 0.49311118;
+	-6.27234665 -0.00076050 0.00046611 7.27158615 0.99767618 0.99877339 0.49311132;
+	-6.27234711 -0.00076032 0.00046599 7.27158679 0.99767675 0.99877369 0.49311134;
+	-6.27234756 -0.00076013 0.00046588 7.27158743 0.99767732 0.99877399 0.49311138;
+	-6.27234802 -0.00075994 0.00046576 7.27158807 0.99767789 0.99877429 0.49311158;
+	-6.27234847 -0.00075976 0.00046565 7.27158872 0.99767846 0.99877459 0.49311152;
+	-6.27234892 -0.00075957 0.00046554 7.27158935 0.99767903 0.99877489 0.49311170;
+	-6.27234938 -0.00075938 0.00046542 7.27158999 0.99767960 0.99877519 0.49311176;
+	-6.27234983 -0.00075920 0.00046531 7.27159063 0.99768017 0.99877550 0.49311184;
+	-6.27235028 -0.00075901 0.00046519 7.27159127 0.99768074 0.99877580 0.49311180;
+	-6.27235074 -0.00075882 0.00046508 7.27159191 0.99768131 0.99877610 0.49311187;
+	-6.27235119 -0.00075864 0.00046496 7.27159255 0.99768188 0.99877640 0.49311206;
+	-6.27235164 -0.00075845 0.00046485 7.27159319 0.99768245 0.99877670 0.49311212;
+	-6.27235209 -0.00075827 0.00046474 7.27159383 0.99768302 0.99877700 0.49311212;
+	-6.27235255 -0.00075808 0.00046462 7.27159446 0.99768358 0.99877730 0.49311214;
+	-6.27235300 -0.00075790 0.00046451 7.27159510 0.99768415 0.99877759 0.49311223;
+	-6.27235345 -0.00075771 0.00046440 7.27159574 0.99768472 0.99877789 0.49311231;
+	-6.27235390 -0.00075753 0.00046428 7.27159637 0.99768529 0.99877819 0.49311242;
+	-6.27235435 -0.00075734 0.00046417 7.27159701 0.99768585 0.99877849 0.49311242;
+	-6.27235480 -0.00075715 0.00046405 7.27159765 0.99768642 0.99877879 0.49311257;
+	-6.27235525 -0.00075697 0.00046394 7.27159828 0.99768699 0.99877909 0.49311263;
+	-6.27235570 -0.00075678 0.00046383 7.27159892 0.99768755 0.99877939 0.49311265;
+	-6.27235615 -0.00075660 0.00046371 7.27159955 0.99768812 0.99877969 0.49311271;
+	-6.27235660 -0.00075641 0.00046360 7.27160019 0.99768868 0.99877999 0.49311273;
+	-6.27235705 -0.00075623 0.00046349 7.27160082 0.99768925 0.99878028 0.49311292;
+	-6.27235750 -0.00075605 0.00046337 7.27160145 0.99768981 0.99878058 0.49311290;
+	-6.27235795 -0.00075586 0.00046326 7.27160209 0.99769038 0.99878088 0.49311294;
+	-6.27235840 -0.00075568 0.00046315 7.27160272 0.99769094 0.99878118 0.49311305;
+	-6.27235884 -0.00075549 0.00046303 7.27160335 0.99769150 0.99878147 0.49311309;
+	-6.27235929 -0.00075531 0.00046292 7.27160398 0.99769207 0.99878177 0.49311327;
+	-6.27235974 -0.00075512 0.00046281 7.27160462 0.99769263 0.99878207 0.49311324;
+	-6.27236019 -0.00075494 0.00046269 7.27160525 0.99769319 0.99878237 0.49311327;
+	-6.27236063 -0.00075475 0.00046258 7.27160588 0.99769376 0.99878266 0.49311333;
+	-6.27236108 -0.00075457 0.00046247 7.27160651 0.99769432 0.99878296 0.49311348;
+	-6.27236153 -0.00075439 0.00046236 7.27160714 0.99769488 0.99878326 0.49311361;
+	-6.27236197 -0.00075420 0.00046224 7.27160777 0.99769544 0.99878355 0.49311357;
+	-6.27236242 -0.00075402 0.00046213 7.27160840 0.99769601 0.99878385 0.49311362;
+	-6.27236287 -0.00075384 0.00046202 7.27160903 0.99769657 0.99878415 0.49311367;
+	-6.27236331 -0.00075365 0.00046191 7.27160966 0.99769713 0.99878444 0.49311366;
+	-6.27236376 -0.00075347 0.00046179 7.27161029 0.99769769 0.99878474 0.49311384;
+	-6.27236420 -0.00075329 0.00046168 7.27161092 0.99769825 0.99878503 0.49311393;
+	-6.27236465 -0.00075310 0.00046157 7.27161155 0.99769881 0.99878533 0.49311405;
+	-6.27236509 -0.00075292 0.00046146 7.27161217 0.99769937 0.99878563 0.49311410;
+	-6.27236554 -0.00075274 0.00046134 7.27161280 0.99769993 0.99878592 0.49311401;
+	-6.27236598 -0.00075255 0.00046123 7.27161343 0.99770049 0.99878622 0.49311424;
+	-6.27236643 -0.00075237 0.00046112 7.27161406 0.99770105 0.99878651 0.49311425;
+	-6.27236687 -0.00075219 0.00046101 7.27161468 0.99770161 0.99878681 0.49311423;
+	-6.27236731 -0.00075200 0.00046089 7.27161531 0.99770217 0.99878710 0.49311442;
+	-6.27236776 -0.00075182 0.00046078 7.27161594 0.99770272 0.99878740 0.49311431;
+	-6.27236820 -0.00075164 0.00046067 7.27161656 0.99770328 0.99878769 0.49311449;
+	-6.27236864 -0.00075146 0.00046056 7.27161719 0.99770384 0.99878798 0.49311451;
+	-6.27236909 -0.00075127 0.00046045 7.27161781 0.99770440 0.99878828 0.49311462;
+	-6.27236953 -0.00075109 0.00046034 7.27161844 0.99770496 0.99878857 0.49311465;
+	-6.27236997 -0.00075091 0.00046022 7.27161906 0.99770551 0.99878887 0.49311479;
+	-6.27237041 -0.00075073 0.00046011 7.27161968 0.99770607 0.99878916 0.49311488;
+	-6.27237085 -0.00075055 0.00046000 7.27162031 0.99770663 0.99878945 0.49311489;
+	-6.27237130 -0.00075036 0.00045989 7.27162093 0.99770718 0.99878975 0.49311496;
+	-6.27237174 -0.00075018 0.00045978 7.27162155 0.99770774 0.99879004 0.49311494;
+	-6.27237218 -0.00075000 0.00045967 7.27162218 0.99770829 0.99879033 0.49311510;
+	-6.27237262 -0.00074982 0.00045955 7.27162280 0.99770885 0.99879063 0.49311504;
+	-6.27237306 -0.00074964 0.00045944 7.27162342 0.99770941 0.99879092 0.49311523;
+	-6.27237350 -0.00074946 0.00045933 7.27162404 0.99770996 0.99879121 0.49311526;
+	-6.27237394 -0.00074927 0.00045922 7.27162466 0.99771051 0.99879151 0.49311531;
+	-6.27237438 -0.00074909 0.00045911 7.27162529 0.99771107 0.99879180 0.49311549;
+	-6.27237482 -0.00074891 0.00045900 7.27162591 0.99771162 0.99879209 0.49311546;
+	-6.27237526 -0.00074873 0.00045889 7.27162653 0.99771218 0.99879238 0.49311554;
+	-6.27237570 -0.00074855 0.00045878 7.27162715 0.99771273 0.99879268 0.49311557;
+	-6.27237614 -0.00074837 0.00045866 7.27162777 0.99771328 0.99879297 0.49311573;
+	-6.27237657 -0.00074819 0.00045855 7.27162839 0.99771384 0.99879326 0.49311571;
+	-6.27237701 -0.00074801 0.00045844 7.27162901 0.99771439 0.99879355 0.49311580;
+	-6.27237745 -0.00074783 0.00045833 7.27162962 0.99771494 0.99879384 0.49311585;
+	-6.27237789 -0.00074765 0.00045822 7.27163024 0.99771549 0.99879413 0.49311592;
+	-6.27237833 -0.00074747 0.00045811 7.27163086 0.99771605 0.99879442 0.49311607;
+	-6.27237876 -0.00074728 0.00045800 7.27163148 0.99771660 0.99879472 0.49311608;
+	-6.27237920 -0.00074710 0.00045789 7.27163210 0.99771715 0.99879501 0.49311612;
+	-6.27237964 -0.00074692 0.00045778 7.27163271 0.99771770 0.99879530 0.49311622;
+	-6.27238007 -0.00074674 0.00045767 7.27163333 0.99771825 0.99879559 0.49311623;
+	-6.27238051 -0.00074656 0.00045756 7.27163395 0.99771880 0.99879588 0.49311629;
+	-6.27238095 -0.00074638 0.00045745 7.27163456 0.99771935 0.99879617 0.49311629;
+	-6.27238138 -0.00074620 0.00045734 7.27163518 0.99771990 0.99879646 0.49311644;
+	-6.27238182 -0.00074602 0.00045723 7.27163580 0.99772045 0.99879675 0.49311641;
+	-6.27238225 -0.00074584 0.00045712 7.27163641 0.99772100 0.99879704 0.49311653;
+	-6.27238269 -0.00074566 0.00045701 7.27163703 0.99772155 0.99879733 0.49311671;
+	-6.27238312 -0.00074548 0.00045690 7.27163764 0.99772210 0.99879762 0.49311673;
+	-6.27238356 -0.00074531 0.00045679 7.27163825 0.99772265 0.99879791 0.49311683;
+	-6.27238399 -0.00074513 0.00045668 7.27163887 0.99772320 0.99879820 0.49311676;
+	-6.27238443 -0.00074495 0.00045657 7.27163948 0.99772375 0.99879849 0.49311684;
+	-6.27238486 -0.00074477 0.00045646 7.27164010 0.99772429 0.99879878 0.49311690;
+	-6.27238530 -0.00074459 0.00045635 7.27164071 0.99772484 0.99879907 0.49311703;
+	-6.27238573 -0.00074441 0.00045624 7.27164132 0.99772539 0.99879936 0.49311710;
+	-6.27238616 -0.00074423 0.00045613 7.27164193 0.99772594 0.99879964 0.49311708;
+	-6.27238660 -0.00074405 0.00045602 7.27164255 0.99772648 0.99879993 0.49311725;
+	-6.27238703 -0.00074387 0.00045591 7.27164316 0.99772703 0.99880022 0.49311732;
+	-6.27238746 -0.00074369 0.00045580 7.27164377 0.99772758 0.99880051 0.49311738;
+	-6.27238790 -0.00074352 0.00045569 7.27164438 0.99772812 0.99880080 0.49311739;
+	-6.27238833 -0.00074334 0.00045558 7.27164499 0.99772867 0.99880109 0.49311746;
+	-6.27238876 -0.00074316 0.00045547 7.27164560 0.99772921 0.99880137 0.49311752;
+	-6.27238919 -0.00074298 0.00045536 7.27164621 0.99772976 0.99880166 0.49311758;
+	-6.27238962 -0.00074280 0.00045525 7.27164682 0.99773030 0.99880195 0.49311766;
+	-6.27239006 -0.00074262 0.00045514 7.27164743 0.99773085 0.99880224 0.49311772;
+	-6.27239049 -0.00074245 0.00045503 7.27164804 0.99773139 0.99880252 0.49311777;
+	-6.27239092 -0.00074227 0.00045492 7.27164865 0.99773194 0.99880281 0.49311785;
+	-6.27239135 -0.00074209 0.00045481 7.27164926 0.99773248 0.99880310 0.49311791;
+	-6.27239178 -0.00074191 0.00045470 7.27164987 0.99773303 0.99880339 0.49311797;
+	-6.27239221 -0.00074173 0.00045459 7.27165048 0.99773357 0.99880367 0.49311806;
+	-6.27239264 -0.00074156 0.00045449 7.27165108 0.99773411 0.99880396 0.49311809;
+	-6.27239307 -0.00074138 0.00045438 7.27165169 0.99773466 0.99880425 0.49311816;
+	-6.27239350 -0.00074120 0.00045427 7.27165230 0.99773520 0.99880453 0.49311824;
+	-6.27239393 -0.00074102 0.00045416 7.27165291 0.99773574 0.99880482 0.49311829;
+	-6.27239436 -0.00074085 0.00045405 7.27165351 0.99773628 0.99880510 0.49311835;
+	-6.27239479 -0.00074067 0.00045394 7.27165412 0.99773683 0.99880539 0.49311839;
+	-6.27239522 -0.00074049 0.00045383 7.27165472 0.99773737 0.99880568 0.49311849;
+	-6.27239564 -0.00074031 0.00045372 7.27165533 0.99773791 0.99880596 0.49311853;
+	-6.27239607 -0.00074014 0.00045362 7.27165593 0.99773845 0.99880625 0.49311862;
+	-6.27239650 -0.00073996 0.00045351 7.27165654 0.99773899 0.99880653 0.49311867;
+	-6.27239693 -0.00073978 0.00045340 7.27165714 0.99773953 0.99880682 0.49311873;
+	-6.27239736 -0.00073961 0.00045329 7.27165775 0.99774007 0.99880710 0.49311878;
+	-6.27239778 -0.00073943 0.00045318 7.27165835 0.99774061 0.99880739 0.49311885;
+	-6.27239821 -0.00073925 0.00045307 7.27165896 0.99774115 0.99880767 0.49311891;
+	-6.27239864 -0.00073908 0.00045296 7.27165956 0.99774169 0.99880796 0.49311897;
+	-6.27239906 -0.00073890 0.00045286 7.27166016 0.99774223 0.99880824 0.49311905;
+	-6.27239949 -0.00073872 0.00045275 7.27166077 0.99774277 0.99880853 0.49311912;
+	-6.27239992 -0.00073855 0.00045264 7.27166137 0.99774331 0.99880881 0.49311918;
+	-6.27240034 -0.00073837 0.00045253 7.27166197 0.99774385 0.99880910 0.49311924;
+	-6.27240077 -0.00073820 0.00045242 7.27166257 0.99774439 0.99880938 0.49311929;
+	-6.27240119 -0.00073802 0.00045232 7.27166317 0.99774492 0.99880966 0.49311935;
+	-6.27240162 -0.00073784 0.00045221 7.27166378 0.99774546 0.99880995 0.49311941;
+	-6.27240205 -0.00073767 0.00045210 7.27166438 0.99774600 0.99881023 0.49311949;
+	-6.27240247 -0.00073749 0.00045199 7.27166498 0.99774654 0.99881051 0.49311956;
+	-6.27240289 -0.00073732 0.00045188 7.27166558 0.99774707 0.99881080 0.49311961;
+	-6.27240332 -0.00073714 0.00045178 7.27166618 0.99774761 0.99881108 0.49311968;
+	-6.27240374 -0.00073697 0.00045167 7.27166678 0.99774815 0.99881136 0.49311975;
+	-6.27240417 -0.00073679 0.00045156 7.27166738 0.99774868 0.99881165 0.49311980;
+	-6.27240459 -0.00073662 0.00045145 7.27166798 0.99774922 0.99881193 0.49311987;
+	-6.27240502 -0.00073644 0.00045135 7.27166858 0.99774976 0.99881221 0.49311992;
+	-6.27240544 -0.00073626 0.00045124 7.27166917 0.99775029 0.99881250 0.49312000;
+	-6.27240586 -0.00073609 0.00045113 7.27166977 0.99775083 0.99881278 0.49312006;
+	-6.27240628 -0.00073591 0.00045102 7.27167037 0.99775136 0.99881306 0.49312011;
+	-6.27240671 -0.00073574 0.00045092 7.27167097 0.99775190 0.99881334 0.49312017;
+	-6.27240713 -0.00073556 0.00045081 7.27167157 0.99775243 0.99881362 0.49312022;
+	-6.27240755 -0.00073539 0.00045070 7.27167216 0.99775297 0.99881391 0.49312031;
+	-6.27240797 -0.00073522 0.00045060 7.27167276 0.99775350 0.99881419 0.49312033;
+	-6.27240840 -0.00073504 0.00045049 7.27167336 0.99775403 0.99881447 0.49312043;
+	-6.27240882 -0.00073487 0.00045038 7.27167395 0.99775457 0.99881475 0.49312049;
+	-6.27240924 -0.00073469 0.00045027 7.27167455 0.99775510 0.99881503 0.49312054;
+	-6.27240966 -0.00073452 0.00045017 7.27167514 0.99775563 0.99881531 0.49312061;
+	-6.27241008 -0.00073434 0.00045006 7.27167574 0.99775617 0.99881560 0.49312068;
+	-6.27241050 -0.00073417 0.00044995 7.27167633 0.99775670 0.99881588 0.49312074;
+	-6.27241092 -0.00073400 0.00044985 7.27167693 0.99775723 0.99881616 0.49312080;
+	-6.27241134 -0.00073382 0.00044974 7.27167752 0.99775776 0.99881644 0.49312087;
+	-6.27241176 -0.00073365 0.00044963 7.27167812 0.99775829 0.99881672 0.49312093;
+	-6.27241218 -0.00073347 0.00044953 7.27167871 0.99775883 0.99881700 0.49312099;
+	-6.27241260 -0.00073330 0.00044942 7.27167930 0.99775936 0.99881728 0.49312106;
+	-6.27241302 -0.00073313 0.00044931 7.27167990 0.99775989 0.99881756 0.49312110;
+	-6.27241344 -0.00073295 0.00044921 7.27168049 0.99776042 0.99881784 0.49312117;
+	-6.27241386 -0.00073278 0.00044910 7.27168108 0.99776095 0.99881812 0.49312124;
+	-6.27241428 -0.00073261 0.00044899 7.27168167 0.99776148 0.99881840 0.49312129;
+	-6.27241470 -0.00073243 0.00044889 7.27168227 0.99776201 0.99881868 0.49312137;
+	-6.27241512 -0.00073226 0.00044878 7.27168286 0.99776254 0.99881896 0.49312141;
+	-6.27241554 -0.00073209 0.00044868 7.27168345 0.99776307 0.99881924 0.49312147;
+	-6.27241595 -0.00073191 0.00044857 7.27168404 0.99776360 0.99881952 0.49312156;
+	-6.27241637 -0.00073174 0.00044846 7.27168463 0.99776413 0.99881980 0.49312161;
+	-6.27241679 -0.00073157 0.00044836 7.27168522 0.99776466 0.99882008 0.49312166;
+	-6.27241721 -0.00073139 0.00044825 7.27168581 0.99776518 0.99882035 0.49312172;
+	-6.27241762 -0.00073122 0.00044815 7.27168640 0.99776571 0.99882063 0.49312178;
+	-6.27241804 -0.00073105 0.00044804 7.27168699 0.99776624 0.99882091 0.49312185;
+	-6.27241846 -0.00073088 0.00044793 7.27168758 0.99776677 0.99882119 0.49312193;
+	-6.27241887 -0.00073070 0.00044783 7.27168817 0.99776730 0.99882147 0.49312197;
+	-6.27241929 -0.00073053 0.00044772 7.27168876 0.99776782 0.99882175 0.49312203;
+	-6.27241971 -0.00073036 0.00044762 7.27168935 0.99776835 0.99882202 0.49312211;
+	-6.27242012 -0.00073019 0.00044751 7.27168994 0.99776888 0.99882230 0.49312215;
+	-6.27242054 -0.00073001 0.00044741 7.27169052 0.99776940 0.99882258 0.49312222;
+	-6.27242095 -0.00072984 0.00044730 7.27169111 0.99776993 0.99882286 0.49312230;
+	-6.27242137 -0.00072967 0.00044719 7.27169170 0.99777045 0.99882314 0.49312233;
+	-6.27242178 -0.00072950 0.00044709 7.27169229 0.99777098 0.99882341 0.49312241;
+	-6.27242220 -0.00072933 0.00044698 7.27169287 0.99777151 0.99882369 0.49312246;
+	-6.27242261 -0.00072915 0.00044688 7.27169346 0.99777203 0.99882397 0.49312253;
+	-6.27242303 -0.00072898 0.00044677 7.27169405 0.99777256 0.99882424 0.49312260;
+	-6.27242344 -0.00072881 0.00044667 7.27169463 0.99777308 0.99882452 0.49312265;
+	-6.27242386 -0.00072864 0.00044656 7.27169522 0.99777361 0.99882480 0.49312272;
+	-6.27242427 -0.00072847 0.00044646 7.27169580 0.99777413 0.99882508 0.49312276;
+	-6.27242468 -0.00072830 0.00044635 7.27169639 0.99777465 0.99882535 0.49312285;
+	-6.27242510 -0.00072813 0.00044625 7.27169697 0.99777518 0.99882563 0.49312291;
+	-6.27242551 -0.00072795 0.00044614 7.27169756 0.99777570 0.99882590 0.49312295;
+	-6.27242592 -0.00072778 0.00044604 7.27169814 0.99777622 0.99882618 0.49312303;
+	-6.27242634 -0.00072761 0.00044593 7.27169872 0.99777675 0.99882646 0.49312307;
+	-6.27242675 -0.00072744 0.00044583 7.27169931 0.99777727 0.99882673 0.49312312;
+	-6.27242716 -0.00072727 0.00044572 7.27169989 0.99777779 0.99882701 0.49312319;
+	-6.27242757 -0.00072710 0.00044562 7.27170047 0.99777831 0.99882728 0.49312326;
+	-6.27242798 -0.00072693 0.00044551 7.27170106 0.99777884 0.99882756 0.49312335;
+	-6.27242840 -0.00072676 0.00044541 7.27170164 0.99777936 0.99882783 0.49312338;
+	-6.27242881 -0.00072659 0.00044530 7.27170222 0.99777988 0.99882811 0.49312345;
+	-6.27242922 -0.00072642 0.00044520 7.27170280 0.99778040 0.99882838 0.49312349;
+	-6.27242963 -0.00072625 0.00044509 7.27170338 0.99778092 0.99882866 0.49312358;
+	-6.27243004 -0.00072608 0.00044499 7.27170397 0.99778144 0.99882893 0.49312364;
+	-6.27243045 -0.00072591 0.00044488 7.27170455 0.99778196 0.99882921 0.49312368;
+	-6.27243086 -0.00072574 0.00044478 7.27170513 0.99778248 0.99882948 0.49312376;
+	-6.27243127 -0.00072557 0.00044468 7.27170571 0.99778300 0.99882976 0.49312381;
+	-6.27243168 -0.00072540 0.00044457 7.27170629 0.99778352 0.99883003 0.49312388;
+	-6.27243209 -0.00072523 0.00044447 7.27170687 0.99778404 0.99883031 0.49312394;
+	-6.27243250 -0.00072506 0.00044436 7.27170745 0.99778456 0.99883058 0.49312397;
+	-6.27243291 -0.00072489 0.00044426 7.27170803 0.99778508 0.99883086 0.49312405;
+	-6.27243332 -0.00072472 0.00044416 7.27170860 0.99778560 0.99883113 0.49312410;
+	-6.27243373 -0.00072455 0.00044405 7.27170918 0.99778612 0.99883140 0.49312419;
+	-6.27243414 -0.00072438 0.00044395 7.27170976 0.99778664 0.99883168 0.49312424;
+	-6.27243455 -0.00072421 0.00044384 7.27171034 0.99778716 0.99883195 0.49312429;
+	-6.27243496 -0.00072404 0.00044374 7.27171092 0.99778767 0.99883222 0.49312436;
+	-6.27243536 -0.00072387 0.00044364 7.27171150 0.99778819 0.99883250 0.49312441;
+	-6.27243577 -0.00072370 0.00044353 7.27171207 0.99778871 0.99883277 0.49312447;
+	-6.27243618 -0.00072353 0.00044343 7.27171265 0.99778923 0.99883304 0.49312454;
+	-6.27243659 -0.00072336 0.00044332 7.27171323 0.99778974 0.99883331 0.49312460;
+	-6.27243700 -0.00072319 0.00044322 7.27171380 0.99779026 0.99883359 0.49312464;
+	-6.27243740 -0.00072302 0.00044312 7.27171438 0.99779078 0.99883386 0.49312471;
+	-6.27243781 -0.00072285 0.00044301 7.27171495 0.99779129 0.99883413 0.49312476;
+	-6.27243822 -0.00072269 0.00044291 7.27171553 0.99779181 0.99883440 0.49312483;
+	-6.27243862 -0.00072252 0.00044281 7.27171611 0.99779232 0.99883468 0.49312489;
+	-6.27243903 -0.00072235 0.00044270 7.27171668 0.99779284 0.99883495 0.49312495;
+	-6.27243944 -0.00072218 0.00044260 7.27171726 0.99779336 0.99883522 0.49312500;
+	-6.27243984 -0.00072201 0.00044250 7.27171783 0.99779387 0.99883549 0.49312508;
+	-6.27244025 -0.00072184 0.00044239 7.27171840 0.99779438 0.99883576 0.49312514;
+	-6.27244065 -0.00072167 0.00044229 7.27171898 0.99779490 0.99883604 0.49312518;
+	-6.27244106 -0.00072151 0.00044219 7.27171955 0.99779541 0.99883631 0.49312525;
+	-6.27244146 -0.00072134 0.00044208 7.27172012 0.99779593 0.99883658 0.49312531;
+	-6.27244187 -0.00072117 0.00044198 7.27172070 0.99779644 0.99883685 0.49312537;
+	-6.27244227 -0.00072100 0.00044188 7.27172127 0.99779696 0.99883712 0.49312544;
+	-6.27244268 -0.00072083 0.00044177 7.27172184 0.99779747 0.99883739 0.49312550;
+	-6.27244308 -0.00072067 0.00044167 7.27172242 0.99779798 0.99883766 0.49312555;
+	-6.27244349 -0.00072050 0.00044157 7.27172299 0.99779849 0.99883793 0.49312563;
+	-6.27244389 -0.00072033 0.00044147 7.27172356 0.99779901 0.99883820 0.49312567;
+	-6.27244429 -0.00072016 0.00044136 7.27172413 0.99779952 0.99883847 0.49312573;
+	-6.27244470 -0.00072000 0.00044126 7.27172470 0.99780003 0.99883874 0.49312578;
+	-6.27244510 -0.00071983 0.00044116 7.27172527 0.99780054 0.99883901 0.49312585;
+	-6.27244550 -0.00071966 0.00044105 7.27172584 0.99780105 0.99883928 0.49312592;
+	-6.27244591 -0.00071949 0.00044095 7.27172641 0.99780157 0.99883955 0.49312598;
+	-6.27244631 -0.00071933 0.00044085 7.27172698 0.99780208 0.99883982 0.49312604;
+	-6.27244671 -0.00071916 0.00044075 7.27172755 0.99780259 0.99884009 0.49312608;
+	-6.27244712 -0.00071899 0.00044064 7.27172812 0.99780310 0.99884036 0.49312614;
+	-6.27244752 -0.00071883 0.00044054 7.27172869 0.99780361 0.99884063 0.49312622;
+	-6.27244792 -0.00071866 0.00044044 7.27172926 0.99780412 0.99884090 0.49312626;
+	-6.27244832 -0.00071849 0.00044034 7.27172983 0.99780463 0.99884117 0.49312632;
+	-6.27244872 -0.00071833 0.00044024 7.27173040 0.99780514 0.99884144 0.49312638;
+	-6.27244912 -0.00071816 0.00044013 7.27173097 0.99780565 0.99884171 0.49312645;
+	-6.27244953 -0.00071799 0.00044003 7.27173153 0.99780616 0.99884198 0.49312649;
+	-6.27244993 -0.00071783 0.00043993 7.27173210 0.99780667 0.99884225 0.49312657;
+	-6.27245033 -0.00071766 0.00043983 7.27173267 0.99780718 0.99884251 0.49312664;
+	-6.27245073 -0.00071749 0.00043972 7.27173323 0.99780768 0.99884278 0.49312669;
+	-6.27245113 -0.00071733 0.00043962 7.27173380 0.99780819 0.99884305 0.49312674;
+	-6.27245153 -0.00071716 0.00043952 7.27173437 0.99780870 0.99884332 0.49312680;
+	-6.27245193 -0.00071699 0.00043942 7.27173493 0.99780921 0.99884359 0.49312685;
+	-6.27245233 -0.00071683 0.00043932 7.27173550 0.99780972 0.99884385 0.49312691;
+	-6.27245273 -0.00071666 0.00043922 7.27173607 0.99781022 0.99884412 0.49312701;
+	-6.27245313 -0.00071650 0.00043911 7.27173663 0.99781073 0.99884439 0.49312703;
+	-6.27245353 -0.00071633 0.00043901 7.27173720 0.99781124 0.99884466 0.49312710;
+	-6.27245393 -0.00071617 0.00043891 7.27173776 0.99781174 0.99884492 0.49312716;
+	-6.27245432 -0.00071600 0.00043881 7.27173833 0.99781225 0.99884519 0.49312722;
+	-6.27245472 -0.00071583 0.00043871 7.27173889 0.99781276 0.99884546 0.49312728;
+	-6.27245512 -0.00071567 0.00043861 7.27173945 0.99781326 0.99884573 0.49312736;
+	-6.27245552 -0.00071550 0.00043850 7.27174002 0.99781377 0.99884599 0.49312741;
+	-6.27245592 -0.00071534 0.00043840 7.27174058 0.99781427 0.99884626 0.49312745;
+	-6.27245632 -0.00071517 0.00043830 7.27174114 0.99781478 0.99884653 0.49312752;
+	-6.27245671 -0.00071501 0.00043820 7.27174171 0.99781528 0.99884679 0.49312756;
+	-6.27245711 -0.00071484 0.00043810 7.27174227 0.99781579 0.99884706 0.49312763;
+	-6.27245751 -0.00071468 0.00043800 7.27174283 0.99781629 0.99884733 0.49312770;
+	-6.27245791 -0.00071451 0.00043790 7.27174339 0.99781680 0.99884759 0.49312773;
+	-6.27245830 -0.00071435 0.00043779 7.27174396 0.99781730 0.99884786 0.49312781;
+	-6.27245870 -0.00071418 0.00043769 7.27174452 0.99781781 0.99884812 0.49312788;
+	-6.27245910 -0.00071402 0.00043759 7.27174508 0.99781831 0.99884839 0.49312794;
+	-6.27245949 -0.00071385 0.00043749 7.27174564 0.99781881 0.99884866 0.49312798;
+	-6.27245989 -0.00071369 0.00043739 7.27174620 0.99781932 0.99884892 0.49312802;
+	-6.27246028 -0.00071352 0.00043729 7.27174676 0.99781982 0.99884919 0.49312810;
+	-6.27246068 -0.00071336 0.00043719 7.27174732 0.99782032 0.99884945 0.49312816;
+	-6.27246108 -0.00071320 0.00043709 7.27174788 0.99782083 0.99884972 0.49312820;
+	-6.27246147 -0.00071303 0.00043699 7.27174844 0.99782133 0.99884998 0.49312828;
+	-6.27246187 -0.00071287 0.00043689 7.27174900 0.99782183 0.99885025 0.49312834;
+	-6.27246226 -0.00071270 0.00043679 7.27174956 0.99782233 0.99885051 0.49312839;
+	-6.27246266 -0.00071254 0.00043669 7.27175012 0.99782283 0.99885078 0.49312847;
+	-6.27246305 -0.00071237 0.00043658 7.27175068 0.99782333 0.99885104 0.49312849;
+	-6.27246345 -0.00071221 0.00043648 7.27175123 0.99782384 0.99885131 0.49312857;
+	-6.27246384 -0.00071205 0.00043638 7.27175179 0.99782434 0.99885157 0.49312862;
+	-6.27246423 -0.00071188 0.00043628 7.27175235 0.99782484 0.99885183 0.49312870;
+	-6.27246463 -0.00071172 0.00043618 7.27175291 0.99782534 0.99885210 0.49312875;
+	-6.27246502 -0.00071156 0.00043608 7.27175347 0.99782584 0.99885236 0.49312878;
+	-6.27246541 -0.00071139 0.00043598 7.27175402 0.99782634 0.99885263 0.49312886;
+	-6.27246581 -0.00071123 0.00043588 7.27175458 0.99782684 0.99885289 0.49312892;
+	-6.27246620 -0.00071107 0.00043578 7.27175514 0.99782734 0.99885315 0.49312899;
+	-6.27246659 -0.00071090 0.00043568 7.27175569 0.99782784 0.99885342 0.49312906;
+	-6.27246699 -0.00071074 0.00043558 7.27175625 0.99782833 0.99885368 0.49312908;
+	-6.27246738 -0.00071058 0.00043548 7.27175680 0.99782883 0.99885394 0.49312914;
+	-6.27246777 -0.00071041 0.00043538 7.27175736 0.99782933 0.99885421 0.49312922;
+	-6.27246816 -0.00071025 0.00043528 7.27175791 0.99782983 0.99885447 0.49312926;
+	-6.27246856 -0.00071009 0.00043518 7.27175847 0.99783033 0.99885473 0.49312934;
+	-6.27246895 -0.00070992 0.00043508 7.27175902 0.99783083 0.99885499 0.49312938;
+	-6.27246934 -0.00070976 0.00043498 7.27175958 0.99783132 0.99885526 0.49312944;
+	-6.27246973 -0.00070960 0.00043488 7.27176013 0.99783182 0.99885552 0.49312948;
+	-6.27247012 -0.00070944 0.00043478 7.27176069 0.99783232 0.99885578 0.49312957;
+	-6.27247051 -0.00070927 0.00043468 7.27176124 0.99783282 0.99885604 0.49312962;
+	-6.27247090 -0.00070911 0.00043458 7.27176179 0.99783331 0.99885631 0.49312968;
+	-6.27247129 -0.00070895 0.00043448 7.27176235 0.99783381 0.99885657 0.49312972;
+	-6.27247168 -0.00070879 0.00043438 7.27176290 0.99783431 0.99885683 0.49312980;
+	-6.27247207 -0.00070862 0.00043428 7.27176345 0.99783480 0.99885709 0.49312985;
+	-6.27247246 -0.00070846 0.00043418 7.27176400 0.99783530 0.99885735 0.49312992;
+	-6.27247285 -0.00070830 0.00043409 7.27176456 0.99783579 0.99885762 0.49312999;
+	-6.27247324 -0.00070814 0.00043399 7.27176511 0.99783629 0.99885788 0.49313003;
+	-6.27247363 -0.00070798 0.00043389 7.27176566 0.99783678 0.99885814 0.49313009;
+	-6.27247402 -0.00070781 0.00043379 7.27176621 0.99783728 0.99885840 0.49313014;
+	-6.27247441 -0.00070765 0.00043369 7.27176676 0.99783777 0.99885866 0.49313021;
+	-6.27247480 -0.00070749 0.00043359 7.27176731 0.99783827 0.99885892 0.49313025;
+	-6.27247519 -0.00070733 0.00043349 7.27176786 0.99783876 0.99885918 0.49313031;
+	-6.27247558 -0.00070717 0.00043339 7.27176841 0.99783926 0.99885944 0.49313036;
+	-6.27247597 -0.00070701 0.00043329 7.27176896 0.99783975 0.99885970 0.49313043;
+	-6.27247636 -0.00070684 0.00043319 7.27176951 0.99784024 0.99885996 0.49313047;
+	-6.27247674 -0.00070668 0.00043309 7.27177006 0.99784074 0.99886022 0.49313056;
+	-6.27247713 -0.00070652 0.00043299 7.27177061 0.99784123 0.99886048 0.49313062;
+	-6.27247752 -0.00070636 0.00043290 7.27177116 0.99784172 0.99886074 0.49313067;
+	-6.27247791 -0.00070620 0.00043280 7.27177171 0.99784222 0.99886100 0.49313072;
+	-6.27247829 -0.00070604 0.00043270 7.27177226 0.99784271 0.99886126 0.49313077;
+	-6.27247868 -0.00070588 0.00043260 7.27177280 0.99784320 0.99886152 0.49313084;
+	-6.27247907 -0.00070572 0.00043250 7.27177335 0.99784369 0.99886178 0.49313089;
+	-6.27247945 -0.00070556 0.00043240 7.27177390 0.99784418 0.99886204 0.49313094;
+	-6.27247984 -0.00070539 0.00043230 7.27177445 0.99784468 0.99886230 0.49313101;
+	-6.27248023 -0.00070523 0.00043220 7.27177499 0.99784517 0.99886256 0.49313105;
+	-6.27248061 -0.00070507 0.00043211 7.27177554 0.99784566 0.99886282 0.49313111;
+	-6.27248100 -0.00070491 0.00043201 7.27177609 0.99784615 0.99886308 0.49313117;
+	-6.27248139 -0.00070475 0.00043191 7.27177663 0.99784664 0.99886334 0.49313123;
+	-6.27248177 -0.00070459 0.00043181 7.27177718 0.99784713 0.99886360 0.49313129;
+	-6.27248216 -0.00070443 0.00043171 7.27177773 0.99784762 0.99886386 0.49313133;
+	-6.27248254 -0.00070427 0.00043161 7.27177827 0.99784811 0.99886411 0.49313142;
+	-6.27248293 -0.00070411 0.00043152 7.27177882 0.99784860 0.99886437 0.49313147;
+	-6.27248331 -0.00070395 0.00043142 7.27177936 0.99784909 0.99886463 0.49313152;
+	-6.27248370 -0.00070379 0.00043132 7.27177991 0.99784958 0.99886489 0.49313157;
+	-6.27248408 -0.00070363 0.00043122 7.27178045 0.99785007 0.99886515 0.49313161;
+	-6.27248447 -0.00070347 0.00043112 7.27178099 0.99785056 0.99886541 0.49313168;
+	-6.27248485 -0.00070331 0.00043103 7.27178154 0.99785104 0.99886566 0.49313174;
+	-6.27248523 -0.00070315 0.00043093 7.27178208 0.99785153 0.99886592 0.49313183;
+	-6.27248562 -0.00070299 0.00043083 7.27178263 0.99785202 0.99886618 0.49313186;
+	-6.27248600 -0.00070283 0.00043073 7.27178317 0.99785251 0.99886644 0.49313191;
+	-6.27248638 -0.00070267 0.00043063 7.27178371 0.99785300 0.99886669 0.49313198;
+	-6.27248677 -0.00070251 0.00043054 7.27178425 0.99785348 0.99886695 0.49313204;
+	-6.27248715 -0.00070235 0.00043044 7.27178480 0.99785397 0.99886721 0.49313208;
+	-6.27248753 -0.00070219 0.00043034 7.27178534 0.99785446 0.99886747 0.49313214;
+	-6.27248792 -0.00070203 0.00043024 7.27178588 0.99785495 0.99886772 0.49313220;
+	-6.27248830 -0.00070188 0.00043014 7.27178642 0.99785543 0.99886798 0.49313224;
+	-6.27248868 -0.00070172 0.00043005 7.27178696 0.99785592 0.99886824 0.49313233;
+	-6.27248906 -0.00070156 0.00042995 7.27178751 0.99785641 0.99886849 0.49313235;
+	-6.27248945 -0.00070140 0.00042985 7.27178805 0.99785689 0.99886875 0.49313243;
+	-6.27248983 -0.00070124 0.00042975 7.27178859 0.99785738 0.99886901 0.49313250;
+	-6.27249021 -0.00070108 0.00042966 7.27178913 0.99785786 0.99886926 0.49313254;
+	-6.27249059 -0.00070092 0.00042956 7.27178967 0.99785835 0.99886952 0.49313259;
+	-6.27249097 -0.00070076 0.00042946 7.27179021 0.99785883 0.99886977 0.49313265;
+	-6.27249135 -0.00070060 0.00042937 7.27179075 0.99785932 0.99887003 0.49313270;
+	-6.27249173 -0.00070045 0.00042927 7.27179129 0.99785980 0.99887029 0.49313277;
+	-6.27249211 -0.00070029 0.00042917 7.27179183 0.99786029 0.99887054 0.49313282;
+	-6.27249250 -0.00070013 0.00042907 7.27179237 0.99786077 0.99887080 0.49313289;
+	-6.27249288 -0.00069997 0.00042898 7.27179290 0.99786126 0.99887105 0.49313291;
+	-6.27249326 -0.00069981 0.00042888 7.27179344 0.99786174 0.99887131 0.49313301;
+	-6.27249364 -0.00069965 0.00042878 7.27179398 0.99786222 0.99887156 0.49313305;
+	-6.27249402 -0.00069950 0.00042869 7.27179452 0.99786271 0.99887182 0.49313311;
+	-6.27249440 -0.00069934 0.00042859 7.27179506 0.99786319 0.99887207 0.49313316;
+	-6.27249477 -0.00069918 0.00042849 7.27179559 0.99786367 0.99887233 0.49313322;
+	-6.27249515 -0.00069902 0.00042840 7.27179613 0.99786415 0.99887258 0.49313329;
+	-6.27249553 -0.00069887 0.00042830 7.27179667 0.99786464 0.99887284 0.49313333;
+	-6.27249591 -0.00069871 0.00042820 7.27179720 0.99786512 0.99887309 0.49313340;
+	-6.27249629 -0.00069855 0.00042810 7.27179774 0.99786560 0.99887335 0.49313343;
+	-6.27249667 -0.00069839 0.00042801 7.27179828 0.99786608 0.99887360 0.49313349;
+	-6.27249705 -0.00069823 0.00042791 7.27179881 0.99786656 0.99887385 0.49313355;
+	-6.27249743 -0.00069808 0.00042781 7.27179935 0.99786705 0.99887411 0.49313361;
+	-6.27249780 -0.00069792 0.00042772 7.27179988 0.99786753 0.99887436 0.49313365;
+	-6.27249818 -0.00069776 0.00042762 7.27180042 0.99786801 0.99887462 0.49313373;
+	-6.27249856 -0.00069761 0.00042753 7.27180095 0.99786849 0.99887487 0.49313378;
+	-6.27249894 -0.00069745 0.00042743 7.27180149 0.99786897 0.99887512 0.49313382;
+	-6.27249931 -0.00069729 0.00042733 7.27180202 0.99786945 0.99887538 0.49313387;
+	-6.27249969 -0.00069713 0.00042724 7.27180256 0.99786993 0.99887563 0.49313395;
+	-6.27250007 -0.00069698 0.00042714 7.27180309 0.99787041 0.99887588 0.49313401;
+	-6.27250045 -0.00069682 0.00042704 7.27180363 0.99787089 0.99887614 0.49313405;
+	-6.27250082 -0.00069666 0.00042695 7.27180416 0.99787137 0.99887639 0.49313411;
+	-6.27250120 -0.00069651 0.00042685 7.27180469 0.99787185 0.99887664 0.49313417;
+	-6.27250158 -0.00069635 0.00042676 7.27180523 0.99787233 0.99887689 0.49313425;
+	-6.27250195 -0.00069619 0.00042666 7.27180576 0.99787281 0.99887715 0.49313428;
+	-6.27250233 -0.00069604 0.00042656 7.27180629 0.99787328 0.99887740 0.49313433;
+	-6.27250270 -0.00069588 0.00042647 7.27180682 0.99787376 0.99887765 0.49313436;
+	-6.27250308 -0.00069572 0.00042637 7.27180736 0.99787424 0.99887790 0.49313447;
+	-6.27250345 -0.00069557 0.00042628 7.27180789 0.99787472 0.99887816 0.49313453;
+	-6.27250383 -0.00069541 0.00042618 7.27180842 0.99787520 0.99887841 0.49313456;
+	-6.27250420 -0.00069525 0.00042608 7.27180895 0.99787567 0.99887866 0.49313463;
+	-6.27250458 -0.00069510 0.00042599 7.27180948 0.99787615 0.99887891 0.49313466;
+	-6.27250495 -0.00069494 0.00042589 7.27181001 0.99787663 0.99887916 0.49313471;
+	-6.27250533 -0.00069479 0.00042580 7.27181054 0.99787711 0.99887942 0.49313478;
+	-6.27250570 -0.00069463 0.00042570 7.27181107 0.99787758 0.99887967 0.49313484;
+	-6.27250608 -0.00069447 0.00042561 7.27181160 0.99787806 0.99887992 0.49313489;
+	-6.27250645 -0.00069432 0.00042551 7.27181213 0.99787854 0.99888017 0.49313499;
+	-6.27250683 -0.00069416 0.00042541 7.27181266 0.99787901 0.99888042 0.49313500;
+	-6.27250720 -0.00069401 0.00042532 7.27181319 0.99787949 0.99888067 0.49313506;
+	-6.27250757 -0.00069385 0.00042522 7.27181372 0.99787996 0.99888092 0.49313510;
+	-6.27250795 -0.00069370 0.00042513 7.27181425 0.99788044 0.99888117 0.49313518;
+	-6.27250832 -0.00069354 0.00042503 7.27181478 0.99788091 0.99888143 0.49313523;
+	-6.27250869 -0.00069339 0.00042494 7.27181531 0.99788139 0.99888168 0.49313528;
+	-6.27250906 -0.00069323 0.00042484 7.27181583 0.99788186 0.99888193 0.49313532;
+	-6.27250944 -0.00069308 0.00042475 7.27181636 0.99788234 0.99888218 0.49313537;
+	-6.27250981 -0.00069292 0.00042465 7.27181689 0.99788281 0.99888243 0.49313545;
+	-6.27251018 -0.00069277 0.00042456 7.27181742 0.99788329 0.99888268 0.49313551;
+	-6.27251055 -0.00069261 0.00042446 7.27181794 0.99788376 0.99888293 0.49313557;
+	-6.27251093 -0.00069246 0.00042437 7.27181847 0.99788423 0.99888318 0.49313560;
+	-6.27251130 -0.00069230 0.00042427 7.27181900 0.99788471 0.99888343 0.49313566;
+	-6.27251167 -0.00069215 0.00042418 7.27181952 0.99788518 0.99888368 0.49313574;
+	-6.27251204 -0.00069199 0.00042408 7.27182005 0.99788565 0.99888393 0.49313579;
+	-6.27251241 -0.00069184 0.00042399 7.27182058 0.99788613 0.99888418 0.49313583;
+	-6.27251278 -0.00069168 0.00042389 7.27182110 0.99788660 0.99888443 0.49313587;
+	-6.27251315 -0.00069153 0.00042380 7.27182163 0.99788707 0.99888468 0.49313593;
+	-6.27251353 -0.00069137 0.00042370 7.27182215 0.99788754 0.99888492 0.49313600;
+	-6.27251390 -0.00069122 0.00042361 7.27182268 0.99788801 0.99888517 0.49313604;
+	-6.27251427 -0.00069106 0.00042351 7.27182320 0.99788849 0.99888542 0.49313613;
+	-6.27251464 -0.00069091 0.00042342 7.27182373 0.99788896 0.99888567 0.49313616;
+	-6.27251501 -0.00069076 0.00042332 7.27182425 0.99788943 0.99888592 0.49313621;
+	-6.27251538 -0.00069060 0.00042323 7.27182478 0.99788990 0.99888617 0.49313628;
+	-6.27251575 -0.00069045 0.00042314 7.27182530 0.99789037 0.99888642 0.49313634;
+	-6.27251612 -0.00069029 0.00042304 7.27182582 0.99789084 0.99888667 0.49313637;
+	-6.27251649 -0.00069014 0.00042295 7.27182635 0.99789131 0.99888691 0.49313644;
+	-6.27251685 -0.00068999 0.00042285 7.27182687 0.99789178 0.99888716 0.49313651;
+	-6.27251722 -0.00068983 0.00042276 7.27182739 0.99789225 0.99888741 0.49313656;
+	-6.27251759 -0.00068968 0.00042266 7.27182791 0.99789272 0.99888766 0.49313664;
+	-6.27251796 -0.00068952 0.00042257 7.27182844 0.99789319 0.99888791 0.49313666;
+	-6.27251833 -0.00068937 0.00042248 7.27182896 0.99789366 0.99888815 0.49313670;
+	-6.27251870 -0.00068922 0.00042238 7.27182948 0.99789413 0.99888840 0.49313677;
+	-6.27251907 -0.00068906 0.00042229 7.27183000 0.99789460 0.99888865 0.49313683;
+	-6.27251943 -0.00068891 0.00042219 7.27183052 0.99789507 0.99888890 0.49313687;
+	-6.27251980 -0.00068876 0.00042210 7.27183104 0.99789554 0.99888914 0.49313691;
+	-6.27252017 -0.00068860 0.00042200 7.27183157 0.99789601 0.99888939 0.49313700;
+	-6.27252054 -0.00068845 0.00042191 7.27183209 0.99789647 0.99888964 0.49313706;
+	-6.27252091 -0.00068830 0.00042182 7.27183261 0.99789694 0.99888988 0.49313707;
+	-6.27252127 -0.00068815 0.00042172 7.27183313 0.99789741 0.99889013 0.49313711;
+	-6.27252164 -0.00068799 0.00042163 7.27183365 0.99789788 0.99889038 0.49313720;
+	-6.27252201 -0.00068784 0.00042154 7.27183417 0.99789835 0.99889062 0.49313727;
+	-6.27252237 -0.00068769 0.00042144 7.27183469 0.99789881 0.99889087 0.49313733;
+	-6.27252274 -0.00068753 0.00042135 7.27183521 0.99789928 0.99889112 0.49313737;
+	-6.27252311 -0.00068738 0.00042125 7.27183572 0.99789975 0.99889136 0.49313744;
+	-6.27252347 -0.00068723 0.00042116 7.27183624 0.99790021 0.99889161 0.49313749;
+	-6.27252384 -0.00068708 0.00042107 7.27183676 0.99790068 0.99889186 0.49313754;
+	-6.27252420 -0.00068692 0.00042097 7.27183728 0.99790115 0.99889210 0.49313760;
+	-6.27252457 -0.00068677 0.00042088 7.27183780 0.99790161 0.99889235 0.49313767;
+	-6.27252494 -0.00068662 0.00042079 7.27183832 0.99790208 0.99889259 0.49313771;
+	-6.27252530 -0.00068647 0.00042069 7.27183883 0.99790254 0.99889284 0.49313775;
+	-6.27252567 -0.00068631 0.00042060 7.27183935 0.99790301 0.99889309 0.49313782;
+	-6.27252603 -0.00068616 0.00042051 7.27183987 0.99790347 0.99889333 0.49313786;
+	-6.27252640 -0.00068601 0.00042041 7.27184039 0.99790394 0.99889358 0.49313791;
+	-6.27252676 -0.00068586 0.00042032 7.27184090 0.99790440 0.99889382 0.49313797;
+	-6.27252712 -0.00068571 0.00042023 7.27184142 0.99790487 0.99889407 0.49313801;
+	-6.27252749 -0.00068555 0.00042013 7.27184193 0.99790533 0.99889431 0.49313810;
+	-6.27252785 -0.00068540 0.00042004 7.27184245 0.99790579 0.99889456 0.49313815;
+	-6.27252822 -0.00068525 0.00041995 7.27184297 0.99790626 0.99889480 0.49313818;
+	-6.27252858 -0.00068510 0.00041985 7.27184348 0.99790672 0.99889505 0.49313824;
+	-6.27252895 -0.00068495 0.00041976 7.27184400 0.99790719 0.99889529 0.49313828;
+	-6.27252931 -0.00068480 0.00041967 7.27184451 0.99790765 0.99889553 0.49313835;
+	-6.27252967 -0.00068464 0.00041958 7.27184503 0.99790811 0.99889578 0.49313842;
+	-6.27253004 -0.00068449 0.00041948 7.27184554 0.99790857 0.99889602 0.49313845;
+	-6.27253040 -0.00068434 0.00041939 7.27184606 0.99790904 0.99889627 0.49313853;
+	-6.27253076 -0.00068419 0.00041930 7.27184657 0.99790950 0.99889651 0.49313854;
+	-6.27253112 -0.00068404 0.00041920 7.27184708 0.99790996 0.99889676 0.49313861;
+	-6.27253149 -0.00068389 0.00041911 7.27184760 0.99791042 0.99889700 0.49313867;
+	-6.27253185 -0.00068374 0.00041902 7.27184811 0.99791089 0.99889724 0.49313874;
+	-6.27253221 -0.00068359 0.00041893 7.27184862 0.99791135 0.99889749 0.49313876;
+	-6.27253257 -0.00068344 0.00041883 7.27184914 0.99791181 0.99889773 0.49313881;
+	-6.27253293 -0.00068328 0.00041874 7.27184965 0.99791227 0.99889797 0.49313886;
+	-6.27253330 -0.00068313 0.00041865 7.27185016 0.99791273 0.99889822 0.49313893;
+	-6.27253366 -0.00068298 0.00041856 7.27185068 0.99791319 0.99889846 0.49313897;
+	-6.27253402 -0.00068283 0.00041846 7.27185119 0.99791365 0.99889870 0.49313904;
+	-6.27253438 -0.00068268 0.00041837 7.27185170 0.99791411 0.99889895 0.49313909;
+	-6.27253474 -0.00068253 0.00041828 7.27185221 0.99791457 0.99889919 0.49313915;
+	-6.27253510 -0.00068238 0.00041819 7.27185272 0.99791503 0.99889943 0.49313920;
+	-6.27253546 -0.00068223 0.00041810 7.27185323 0.99791549 0.99889967 0.49313924;
+	-6.27253582 -0.00068208 0.00041800 7.27185374 0.99791595 0.99889992 0.49313932;
+	-6.27253618 -0.00068193 0.00041791 7.27185425 0.99791641 0.99890016 0.49313937;
+	-6.27253654 -0.00068178 0.00041782 7.27185477 0.99791687 0.99890040 0.49313944;
+	-6.27253690 -0.00068163 0.00041773 7.27185528 0.99791733 0.99890064 0.49313947;
+	-6.27253726 -0.00068148 0.00041763 7.27185579 0.99791779 0.99890089 0.49313953;
+	-6.27253762 -0.00068133 0.00041754 7.27185630 0.99791825 0.99890113 0.49313960;
+	-6.27253798 -0.00068118 0.00041745 7.27185680 0.99791871 0.99890137 0.49313964;
+	-6.27253834 -0.00068103 0.00041736 7.27185731 0.99791916 0.99890161 0.49313969;
+	-6.27253870 -0.00068088 0.00041727 7.27185782 0.99791962 0.99890185 0.49313973;
+	-6.27253906 -0.00068073 0.00041718 7.27185833 0.99792008 0.99890209 0.49313978;
+	-6.27253942 -0.00068058 0.00041708 7.27185884 0.99792054 0.99890234 0.49313983;
+	-6.27253978 -0.00068043 0.00041699 7.27185935 0.99792099 0.99890258 0.49313991;
+	-6.27254014 -0.00068028 0.00041690 7.27185986 0.99792145 0.99890282 0.49313998;
+	-6.27254050 -0.00068013 0.00041681 7.27186036 0.99792191 0.99890306 0.49314002;
+	-6.27254086 -0.00067998 0.00041672 7.27186087 0.99792237 0.99890330 0.49314008;
+	-6.27254121 -0.00067983 0.00041662 7.27186138 0.99792282 0.99890354 0.49314012;
+	-6.27254157 -0.00067968 0.00041653 7.27186189 0.99792328 0.99890378 0.49314018;
+	-6.27254193 -0.00067953 0.00041644 7.27186239 0.99792373 0.99890402 0.49314019;
+	-6.27254229 -0.00067939 0.00041635 7.27186290 0.99792419 0.99890426 0.49314025;
+	-6.27254264 -0.00067924 0.00041626 7.27186341 0.99792465 0.99890450 0.49314034;
+	-6.27254300 -0.00067909 0.00041617 7.27186391 0.99792510 0.99890474 0.49314040;
+	-6.27254336 -0.00067894 0.00041608 7.27186442 0.99792556 0.99890499 0.49314044;
+	-6.27254372 -0.00067879 0.00041598 7.27186493 0.99792601 0.99890523 0.49314049;
+	-6.27254407 -0.00067864 0.00041589 7.27186543 0.99792647 0.99890547 0.49314054;
+	-6.27254443 -0.00067849 0.00041580 7.27186594 0.99792692 0.99890571 0.49314058;
+	-6.27254479 -0.00067834 0.00041571 7.27186644 0.99792738 0.99890595 0.49314062;
+	-6.27254514 -0.00067819 0.00041562 7.27186695 0.99792783 0.99890618 0.49314070;
+	-6.27254550 -0.00067805 0.00041553 7.27186745 0.99792828 0.99890642 0.49314075;
+	-6.27254585 -0.00067790 0.00041544 7.27186796 0.99792874 0.99890666 0.49314079;
+	-6.27254621 -0.00067775 0.00041535 7.27186846 0.99792919 0.99890690 0.49314085;
+	-6.27254657 -0.00067760 0.00041526 7.27186897 0.99792965 0.99890714 0.49314090;
+	-6.27254692 -0.00067745 0.00041516 7.27186947 0.99793010 0.99890738 0.49314094;
+	-6.27254728 -0.00067730 0.00041507 7.27186997 0.99793055 0.99890762 0.49314100;
+	-6.27254763 -0.00067716 0.00041498 7.27187048 0.99793101 0.99890786 0.49314106;
+	-6.27254799 -0.00067701 0.00041489 7.27187098 0.99793146 0.99890810 0.49314111;
+	-6.27254834 -0.00067686 0.00041480 7.27187148 0.99793191 0.99890834 0.49314118;
+	-6.27254870 -0.00067671 0.00041471 7.27187199 0.99793236 0.99890858 0.49314123;
+	-6.27254905 -0.00067656 0.00041462 7.27187249 0.99793282 0.99890882 0.49314127;
+	-6.27254941 -0.00067642 0.00041453 7.27187299 0.99793327 0.99890905 0.49314132;
+	-6.27254976 -0.00067627 0.00041444 7.27187349 0.99793372 0.99890929 0.49314138;
+	-6.27255012 -0.00067612 0.00041435 7.27187399 0.99793417 0.99890953 0.49314144;
+	-6.27255047 -0.00067597 0.00041426 7.27187450 0.99793462 0.99890977 0.49314149;
+	-6.27255082 -0.00067583 0.00041417 7.27187500 0.99793507 0.99891001 0.49314155;
+	-6.27255118 -0.00067568 0.00041408 7.27187550 0.99793552 0.99891025 0.49314159;
+	-6.27255153 -0.00067553 0.00041399 7.27187600 0.99793597 0.99891048 0.49314164;
+	-6.27255188 -0.00067538 0.00041390 7.27187650 0.99793643 0.99891072 0.49314169;
+	-6.27255224 -0.00067524 0.00041381 7.27187700 0.99793688 0.99891096 0.49314176;
+	-6.27255259 -0.00067509 0.00041372 7.27187750 0.99793733 0.99891120 0.49314181;
+	-6.27255294 -0.00067494 0.00041362 7.27187800 0.99793778 0.99891143 0.49314185;
+	-6.27255330 -0.00067479 0.00041353 7.27187850 0.99793823 0.99891167 0.49314190;
+	-6.27255365 -0.00067465 0.00041344 7.27187900 0.99793868 0.99891191 0.49314197;
+	-6.27255400 -0.00067450 0.00041335 7.27187950 0.99793912 0.99891215 0.49314200;
+	-6.27255435 -0.00067435 0.00041326 7.27188000 0.99793957 0.99891238 0.49314208;
+	-6.27255470 -0.00067421 0.00041317 7.27188050 0.99794002 0.99891262 0.49314213;
+	-6.27255506 -0.00067406 0.00041308 7.27188100 0.99794047 0.99891286 0.49314217;
+	-6.27255541 -0.00067391 0.00041299 7.27188150 0.99794092 0.99891309 0.49314220;
+	-6.27255576 -0.00067377 0.00041290 7.27188199 0.99794137 0.99891333 0.49314225;
+	-6.27255611 -0.00067362 0.00041281 7.27188249 0.99794182 0.99891357 0.49314232;
+	-6.27255646 -0.00067347 0.00041272 7.27188299 0.99794227 0.99891380 0.49314238;
+	-6.27255681 -0.00067333 0.00041263 7.27188349 0.99794271 0.99891404 0.49314241;
+	-6.27255717 -0.00067318 0.00041254 7.27188398 0.99794316 0.99891428 0.49314247;
+	-6.27255752 -0.00067303 0.00041245 7.27188448 0.99794361 0.99891451 0.49314253;
+	-6.27255787 -0.00067289 0.00041236 7.27188498 0.99794406 0.99891475 0.49314258;
+	-6.27255822 -0.00067274 0.00041228 7.27188548 0.99794450 0.99891498 0.49314263;
+	-6.27255857 -0.00067260 0.00041219 7.27188597 0.99794495 0.99891522 0.49314268;
+	-6.27255892 -0.00067245 0.00041210 7.27188647 0.99794540 0.99891545 0.49314274;
+	-6.27255927 -0.00067230 0.00041201 7.27188696 0.99794584 0.99891569 0.49314280;
+	-6.27255962 -0.00067216 0.00041192 7.27188746 0.99794629 0.99891593 0.49314284;
+	-6.27255997 -0.00067201 0.00041183 7.27188796 0.99794673 0.99891616 0.49314287;
+	-6.27256032 -0.00067187 0.00041174 7.27188845 0.99794718 0.99891640 0.49314297;
+	-6.27256067 -0.00067172 0.00041165 7.27188895 0.99794763 0.99891663 0.49314303;
+	-6.27256102 -0.00067157 0.00041156 7.27188944 0.99794807 0.99891687 0.49314307;
+	-6.27256137 -0.00067143 0.00041147 7.27188994 0.99794852 0.99891710 0.49314312;
+	-6.27256171 -0.00067128 0.00041138 7.27189043 0.99794896 0.99891734 0.49314315;
+	-6.27256206 -0.00067114 0.00041129 7.27189093 0.99794941 0.99891757 0.49314322;
+	-6.27256241 -0.00067099 0.00041120 7.27189142 0.99794985 0.99891781 0.49314325;
+	-6.27256276 -0.00067085 0.00041111 7.27189191 0.99795030 0.99891804 0.49314333;
+	-6.27256311 -0.00067070 0.00041102 7.27189241 0.99795074 0.99891828 0.49314337;
+	-6.27256346 -0.00067056 0.00041093 7.27189290 0.99795119 0.99891851 0.49314340;
+	-6.27256381 -0.00067041 0.00041085 7.27189339 0.99795163 0.99891874 0.49314348;
+	-6.27256415 -0.00067027 0.00041076 7.27189389 0.99795207 0.99891898 0.49314353;
+	-6.27256450 -0.00067012 0.00041067 7.27189438 0.99795252 0.99891921 0.49314358;
+	-6.27256485 -0.00066998 0.00041058 7.27189487 0.99795296 0.99891945 0.49314365;
+	-6.27256520 -0.00066983 0.00041049 7.27189537 0.99795340 0.99891968 0.49314368;
+	-6.27256554 -0.00066969 0.00041040 7.27189586 0.99795385 0.99891991 0.49314376;
+	-6.27256589 -0.00066954 0.00041031 7.27189635 0.99795429 0.99892015 0.49314379;
+	-6.27256624 -0.00066940 0.00041022 7.27189684 0.99795473 0.99892038 0.49314383;
+	-6.27256658 -0.00066925 0.00041013 7.27189733 0.99795517 0.99892061 0.49314389;
+	-6.27256693 -0.00066911 0.00041005 7.27189782 0.99795562 0.99892085 0.49314395;
+	-6.27256728 -0.00066896 0.00040996 7.27189832 0.99795606 0.99892108 0.49314398;
+	-6.27256762 -0.00066882 0.00040987 7.27189881 0.99795650 0.99892131 0.49314403;
+	-6.27256797 -0.00066867 0.00040978 7.27189930 0.99795694 0.99892155 0.49314409;
+	-6.27256832 -0.00066853 0.00040969 7.27189979 0.99795738 0.99892178 0.49314415;
+	-6.27256866 -0.00066838 0.00040960 7.27190028 0.99795782 0.99892201 0.49314419;
+	-6.27256901 -0.00066824 0.00040951 7.27190077 0.99795827 0.99892225 0.49314425;
+	-6.27256935 -0.00066810 0.00040943 7.27190126 0.99795871 0.99892248 0.49314428;
+	-6.27256970 -0.00066795 0.00040934 7.27190175 0.99795915 0.99892271 0.49314436;
+	-6.27257004 -0.00066781 0.00040925 7.27190224 0.99795959 0.99892294 0.49314439;
+	-6.27257039 -0.00066766 0.00040916 7.27190273 0.99796003 0.99892318 0.49314446;
+	-6.27257073 -0.00066752 0.00040907 7.27190322 0.99796047 0.99892341 0.49314452;
+	-6.27257108 -0.00066738 0.00040898 7.27190370 0.99796091 0.99892364 0.49314453;
+	-6.27257142 -0.00066723 0.00040890 7.27190419 0.99796135 0.99892387 0.49314460;
+	-6.27257177 -0.00066709 0.00040881 7.27190468 0.99796179 0.99892410 0.49314466;
+	-6.27257211 -0.00066694 0.00040872 7.27190517 0.99796223 0.99892434 0.49314470;
+	-6.27257246 -0.00066680 0.00040863 7.27190566 0.99796267 0.99892457 0.49314476;
+	-6.27257280 -0.00066666 0.00040854 7.27190615 0.99796311 0.99892480 0.49314482;
+	-6.27257315 -0.00066651 0.00040846 7.27190663 0.99796354 0.99892503 0.49314486;
+	-6.27257349 -0.00066637 0.00040837 7.27190712 0.99796398 0.99892526 0.49314490;
+	-6.27257383 -0.00066623 0.00040828 7.27190761 0.99796442 0.99892549 0.49314498;
+	-6.27257418 -0.00066608 0.00040819 7.27190809 0.99796486 0.99892573 0.49314501;
+	-6.27257452 -0.00066594 0.00040810 7.27190858 0.99796530 0.99892596 0.49314505;
+	-6.27257486 -0.00066580 0.00040802 7.27190907 0.99796574 0.99892619 0.49314512;
+	-6.27257521 -0.00066565 0.00040793 7.27190955 0.99796617 0.99892642 0.49314515;
+	-6.27257555 -0.00066551 0.00040784 7.27191004 0.99796661 0.99892665 0.49314521;
+	-6.27257589 -0.00066537 0.00040775 7.27191053 0.99796705 0.99892688 0.49314528;
+	-6.27257623 -0.00066522 0.00040766 7.27191101 0.99796748 0.99892711 0.49314532;
+	-6.27257658 -0.00066508 0.00040758 7.27191150 0.99796792 0.99892734 0.49314537;
+	-6.27257692 -0.00066494 0.00040749 7.27191198 0.99796836 0.99892757 0.49314541;
+	-6.27257726 -0.00066480 0.00040740 7.27191247 0.99796880 0.99892780 0.49314547;
+	-6.27257760 -0.00066465 0.00040731 7.27191295 0.99796923 0.99892803 0.49314555;
+	-6.27257795 -0.00066451 0.00040723 7.27191344 0.99796967 0.99892826 0.49314558;
+	-6.27257829 -0.00066437 0.00040714 7.27191392 0.99797010 0.99892849 0.49314564;
+	-6.27257863 -0.00066422 0.00040705 7.27191440 0.99797054 0.99892872 0.49314568;
+	-6.27257897 -0.00066408 0.00040696 7.27191489 0.99797098 0.99892895 0.49314573;
+	-6.27257931 -0.00066394 0.00040688 7.27191537 0.99797141 0.99892918 0.49314579;
+	-6.27257965 -0.00066380 0.00040679 7.27191586 0.99797185 0.99892941 0.49314582;
+	-6.27257999 -0.00066366 0.00040670 7.27191634 0.99797228 0.99892964 0.49314588;
+	-6.27258033 -0.00066351 0.00040662 7.27191682 0.99797272 0.99892987 0.49314593;
+	-6.27258068 -0.00066337 0.00040653 7.27191730 0.99797315 0.99893010 0.49314598;
+	-6.27258102 -0.00066323 0.00040644 7.27191779 0.99797358 0.99893033 0.49314603;
+	-6.27258136 -0.00066309 0.00040635 7.27191827 0.99797402 0.99893056 0.49314608;
+	-6.27258170 -0.00066294 0.00040627 7.27191875 0.99797445 0.99893079 0.49314611;
+	-6.27258204 -0.00066280 0.00040618 7.27191923 0.99797489 0.99893102 0.49314621;
+	-6.27258238 -0.00066266 0.00040609 7.27191972 0.99797532 0.99893125 0.49314623;
+	-6.27258272 -0.00066252 0.00040601 7.27192020 0.99797575 0.99893148 0.49314626;
+	-6.27258306 -0.00066238 0.00040592 7.27192068 0.99797619 0.99893170 0.49314635;
+	-6.27258340 -0.00066224 0.00040583 7.27192116 0.99797662 0.99893193 0.49314639;
+	-6.27258373 -0.00066209 0.00040574 7.27192164 0.99797705 0.99893216 0.49314644;
+	-6.27258407 -0.00066195 0.00040566 7.27192212 0.99797749 0.99893239 0.49314649;
+	-6.27258441 -0.00066181 0.00040557 7.27192260 0.99797792 0.99893262 0.49314651;
+	-6.27258475 -0.00066167 0.00040548 7.27192308 0.99797835 0.99893285 0.49314660;
+	-6.27258509 -0.00066153 0.00040540 7.27192356 0.99797878 0.99893307 0.49314663;
+	-6.27258543 -0.00066139 0.00040531 7.27192404 0.99797922 0.99893330 0.49314669;
+	-6.27258577 -0.00066125 0.00040522 7.27192452 0.99797965 0.99893353 0.49314673;
+	-6.27258611 -0.00066110 0.00040514 7.27192500 0.99798008 0.99893376 0.49314679;
+	-6.27258644 -0.00066096 0.00040505 7.27192548 0.99798051 0.99893399 0.49314686;
+	-6.27258678 -0.00066082 0.00040496 7.27192596 0.99798094 0.99893421 0.49314689;
+	-6.27258712 -0.00066068 0.00040488 7.27192644 0.99798137 0.99893444 0.49314694;
+	-6.27258746 -0.00066054 0.00040479 7.27192692 0.99798181 0.99893467 0.49314700;
+	-6.27258780 -0.00066040 0.00040471 7.27192740 0.99798224 0.99893490 0.49314705;
+	-6.27258813 -0.00066026 0.00040462 7.27192788 0.99798267 0.99893512 0.49314708;
+	-6.27258847 -0.00066012 0.00040453 7.27192835 0.99798310 0.99893535 0.49314712;
+	-6.27258881 -0.00065998 0.00040445 7.27192883 0.99798353 0.99893558 0.49314719;
+	-6.27258914 -0.00065984 0.00040436 7.27192931 0.99798396 0.99893580 0.49314727;
+	-6.27258948 -0.00065970 0.00040427 7.27192979 0.99798439 0.99893603 0.49314727;
+	-6.27258982 -0.00065955 0.00040419 7.27193026 0.99798482 0.99893626 0.49314731;
+	-6.27259015 -0.00065941 0.00040410 7.27193074 0.99798525 0.99893648 0.49314740;
+	-6.27259049 -0.00065927 0.00040401 7.27193122 0.99798568 0.99893671 0.49314745;
+	-6.27259083 -0.00065913 0.00040393 7.27193169 0.99798610 0.99893694 0.49314746;
+	-6.27259116 -0.00065899 0.00040384 7.27193217 0.99798653 0.99893716 0.49314754;
+	-6.27259150 -0.00065885 0.00040376 7.27193265 0.99798696 0.99893739 0.49314761;
+	-6.27259184 -0.00065871 0.00040367 7.27193312 0.99798739 0.99893762 0.49314766;
+	-6.27259217 -0.00065857 0.00040358 7.27193360 0.99798782 0.99893784 0.49314769;
+	-6.27259251 -0.00065843 0.00040350 7.27193407 0.99798825 0.99893807 0.49314775;
+	-6.27259284 -0.00065829 0.00040341 7.27193455 0.99798868 0.99893829 0.49314778;
+	-6.27259318 -0.00065815 0.00040333 7.27193502 0.99798910 0.99893852 0.49314784;
+	-6.27259351 -0.00065801 0.00040324 7.27193550 0.99798953 0.99893875 0.49314788;
+	-6.27259385 -0.00065787 0.00040316 7.27193597 0.99798996 0.99893897 0.49314794;
+	-6.27259418 -0.00065773 0.00040307 7.27193645 0.99799039 0.99893920 0.49314799;
+	-6.27259452 -0.00065759 0.00040298 7.27193692 0.99799081 0.99893942 0.49314805;
+	-6.27259485 -0.00065745 0.00040290 7.27193740 0.99799124 0.99893965 0.49314807;
+	-6.27259519 -0.00065731 0.00040281 7.27193787 0.99799167 0.99893987 0.49314813;
+	-6.27259552 -0.00065717 0.00040273 7.27193835 0.99799209 0.99894010 0.49314822;
+	-6.27259585 -0.00065703 0.00040264 7.27193882 0.99799252 0.99894032 0.49314825;
+	-6.27259619 -0.00065690 0.00040256 7.27193929 0.99799295 0.99894055 0.49314830;
+	-6.27259652 -0.00065676 0.00040247 7.27193977 0.99799337 0.99894077 0.49314836;
+	-6.27259686 -0.00065662 0.00040239 7.27194024 0.99799380 0.99894100 0.49314839;
+	-6.27259719 -0.00065648 0.00040230 7.27194071 0.99799422 0.99894122 0.49314844;
+	-6.27259752 -0.00065634 0.00040221 7.27194118 0.99799465 0.99894145 0.49314848;
+	-6.27259786 -0.00065620 0.00040213 7.27194166 0.99799507 0.99894167 0.49314852;
+	-6.27259819 -0.00065606 0.00040204 7.27194213 0.99799550 0.99894190 0.49314858;
+	-6.27259852 -0.00065592 0.00040196 7.27194260 0.99799593 0.99894212 0.49314864;
+	-6.27259885 -0.00065578 0.00040187 7.27194307 0.99799635 0.99894234 0.49314867;
+	-6.27259919 -0.00065564 0.00040179 7.27194354 0.99799677 0.99894257 0.49314872;
+	-6.27259952 -0.00065550 0.00040170 7.27194402 0.99799720 0.99894279 0.49314880;
+	-6.27259985 -0.00065537 0.00040162 7.27194449 0.99799762 0.99894302 0.49314880;
+	-6.27260018 -0.00065523 0.00040153 7.27194496 0.99799805 0.99894324 0.49314888;
+	-6.27260052 -0.00065509 0.00040145 7.27194543 0.99799847 0.99894346 0.49314897;
+	-6.27260085 -0.00065495 0.00040136 7.27194590 0.99799889 0.99894369 0.49314899;
+	-6.27260118 -0.00065481 0.00040128 7.27194637 0.99799932 0.99894391 0.49314902;
+	-6.27260151 -0.00065467 0.00040119 7.27194684 0.99799974 0.99894413 0.49314908;
+	-6.27260184 -0.00065453 0.00040111 7.27194731 0.99800016 0.99894436 0.49314911;
+	-6.27260217 -0.00065440 0.00040102 7.27194778 0.99800059 0.99894458 0.49314920;
+	-6.27260251 -0.00065426 0.00040094 7.27194825 0.99800101 0.99894480 0.49314922;
+	-6.27260284 -0.00065412 0.00040085 7.27194872 0.99800143 0.99894503 0.49314928;
+	-6.27260317 -0.00065398 0.00040077 7.27194919 0.99800186 0.99894525 0.49314931;
+	-6.27260350 -0.00065384 0.00040068 7.27194966 0.99800228 0.99894547 0.49314937;
+	-6.27260383 -0.00065370 0.00040060 7.27195013 0.99800270 0.99894570 0.49314942;
+	-6.27260416 -0.00065357 0.00040051 7.27195059 0.99800312 0.99894592 0.49314947;
+	-6.27260449 -0.00065343 0.00040043 7.27195106 0.99800354 0.99894614 0.49314952;
+	-6.27260482 -0.00065329 0.00040035 7.27195153 0.99800397 0.99894636 0.49314960;
+	-6.27260515 -0.00065315 0.00040026 7.27195200 0.99800439 0.99894659 0.49314963;
+	-6.27260548 -0.00065302 0.00040018 7.27195247 0.99800481 0.99894681 0.49314965;
+	-6.27260581 -0.00065288 0.00040009 7.27195293 0.99800523 0.99894703 0.49314972;
+	-6.27260614 -0.00065274 0.00040001 7.27195340 0.99800565 0.99894725 0.49314975;
+	-6.27260647 -0.00065260 0.00039992 7.27195387 0.99800607 0.99894747 0.49314983;
+	-6.27260680 -0.00065246 0.00039984 7.27195434 0.99800649 0.99894770 0.49314987;
+	-6.27260713 -0.00065233 0.00039975 7.27195480 0.99800691 0.99894792 0.49314994;
+	-6.27260746 -0.00065219 0.00039967 7.27195527 0.99800733 0.99894814 0.49314996;
+	-6.27260779 -0.00065205 0.00039959 7.27195573 0.99800775 0.99894836 0.49314998;
+	-6.27260812 -0.00065192 0.00039950 7.27195620 0.99800817 0.99894858 0.49315004;
+	-6.27260844 -0.00065178 0.00039942 7.27195667 0.99800859 0.99894880 0.49315011;
+	-6.27260877 -0.00065164 0.00039933 7.27195713 0.99800901 0.99894903 0.49315016;
+	-6.27260910 -0.00065150 0.00039925 7.27195760 0.99800943 0.99894925 0.49315020;
+	-6.27260943 -0.00065137 0.00039917 7.27195806 0.99800985 0.99894947 0.49315028;
+	-6.27260976 -0.00065123 0.00039908 7.27195853 0.99801027 0.99894969 0.49315027;
+	-6.27261009 -0.00065109 0.00039900 7.27195899 0.99801069 0.99894991 0.49315035;
+	-6.27261041 -0.00065096 0.00039891 7.27195946 0.99801110 0.99895013 0.49315041;
+	-6.27261074 -0.00065082 0.00039883 7.27195992 0.99801152 0.99895035 0.49315047;
+	-6.27261107 -0.00065068 0.00039875 7.27196039 0.99801194 0.99895057 0.49315053;
+	-6.27261140 -0.00065055 0.00039866 7.27196085 0.99801236 0.99895079 0.49315055;
+	-6.27261172 -0.00065041 0.00039858 7.27196132 0.99801278 0.99895101 0.49315059;
+	-6.27261205 -0.00065027 0.00039849 7.27196178 0.99801320 0.99895123 0.49315063;
+	-6.27261238 -0.00065014 0.00039841 7.27196224 0.99801361 0.99895145 0.49315070;
+	-6.27261271 -0.00065000 0.00039833 7.27196271 0.99801403 0.99895167 0.49315074;
+	-6.27261303 -0.00064986 0.00039824 7.27196317 0.99801445 0.99895189 0.49315081;
+	-6.27261336 -0.00064973 0.00039816 7.27196363 0.99801486 0.99895212 0.49315083;
+	-6.27261369 -0.00064959 0.00039808 7.27196410 0.99801528 0.99895233 0.49315088;
+	-6.27261401 -0.00064945 0.00039799 7.27196456 0.99801570 0.99895255 0.49315095;
+	-6.27261434 -0.00064932 0.00039791 7.27196502 0.99801611 0.99895277 0.49315102;
+	-6.27261466 -0.00064918 0.00039782 7.27196548 0.99801653 0.99895299 0.49315101;
+	-6.27261499 -0.00064904 0.00039774 7.27196595 0.99801695 0.99895321 0.49315109;
+	-6.27261532 -0.00064891 0.00039766 7.27196641 0.99801736 0.99895343 0.49315112;
+	-6.27261564 -0.00064877 0.00039757 7.27196687 0.99801778 0.99895365 0.49315120;
+	-6.27261597 -0.00064864 0.00039749 7.27196733 0.99801819 0.99895387 0.49315122;
+	-6.27261629 -0.00064850 0.00039741 7.27196779 0.99801861 0.99895409 0.49315129;
+	-6.27261662 -0.00064836 0.00039732 7.27196825 0.99801902 0.99895431 0.49315134;
+	-6.27261694 -0.00064823 0.00039724 7.27196871 0.99801944 0.99895453 0.49315136;
+	-6.27261727 -0.00064809 0.00039716 7.27196917 0.99801985 0.99895475 0.49315141;
+	-6.27261759 -0.00064796 0.00039707 7.27196963 0.99802027 0.99895497 0.49315149;
+	-6.27261792 -0.00064782 0.00039699 7.27197009 0.99802068 0.99895519 0.49315153;
+	-6.27261824 -0.00064769 0.00039691 7.27197056 0.99802110 0.99895540 0.49315156;
+	-6.27261857 -0.00064755 0.00039683 7.27197101 0.99802151 0.99895562 0.49315162;
+	-6.27261889 -0.00064742 0.00039674 7.27197147 0.99802193 0.99895584 0.49315167;
+	-6.27261921 -0.00064728 0.00039666 7.27197193 0.99802234 0.99895606 0.49315173;
+	-6.27261954 -0.00064715 0.00039658 7.27197239 0.99802275 0.99895628 0.49315176;
+	-6.27261986 -0.00064701 0.00039649 7.27197285 0.99802317 0.99895650 0.49315180;
+	-6.27262019 -0.00064687 0.00039641 7.27197331 0.99802358 0.99895671 0.49315186;
+	-6.27262051 -0.00064674 0.00039633 7.27197377 0.99802399 0.99895693 0.49315191;
+	-6.27262083 -0.00064660 0.00039624 7.27197423 0.99802441 0.99895715 0.49315198;
+	-6.27262116 -0.00064647 0.00039616 7.27197469 0.99802482 0.99895737 0.49315200;
+	-6.27262148 -0.00064633 0.00039608 7.27197515 0.99802523 0.99895759 0.49315204;
+	-6.27262180 -0.00064620 0.00039600 7.27197560 0.99802564 0.99895780 0.49315211;
+	-6.27262213 -0.00064606 0.00039591 7.27197606 0.99802606 0.99895802 0.49315216;
+	-6.27262245 -0.00064593 0.00039583 7.27197652 0.99802647 0.99895824 0.49315219;
+	-6.27262277 -0.00064579 0.00039575 7.27197698 0.99802688 0.99895846 0.49315225;
+	-6.27262309 -0.00064566 0.00039567 7.27197743 0.99802729 0.99895867 0.49315226;
+	-6.27262342 -0.00064553 0.00039558 7.27197789 0.99802770 0.99895889 0.49315233;
+	-6.27262374 -0.00064539 0.00039550 7.27197835 0.99802812 0.99895911 0.49315238;
+	-6.27262406 -0.00064526 0.00039542 7.27197880 0.99802853 0.99895933 0.49315244;
+	-6.27262438 -0.00064512 0.00039534 7.27197926 0.99802894 0.99895954 0.49315248;
+	-6.27262470 -0.00064499 0.00039525 7.27197972 0.99802935 0.99895976 0.49315254;
+	-6.27262503 -0.00064485 0.00039517 7.27198017 0.99802976 0.99895998 0.49315255;
+	-6.27262535 -0.00064472 0.00039509 7.27198063 0.99803017 0.99896019 0.49315260;
+	-6.27262567 -0.00064458 0.00039501 7.27198108 0.99803058 0.99896041 0.49315266;
+	-6.27262599 -0.00064445 0.00039492 7.27198154 0.99803099 0.99896063 0.49315272;
+	-6.27262631 -0.00064432 0.00039484 7.27198199 0.99803140 0.99896084 0.49315276;
+	-6.27262663 -0.00064418 0.00039476 7.27198245 0.99803181 0.99896106 0.49315283;
+	-6.27262695 -0.00064405 0.00039468 7.27198290 0.99803222 0.99896127 0.49315287;
+	-6.27262727 -0.00064391 0.00039460 7.27198336 0.99803263 0.99896149 0.49315291;
+	-6.27262759 -0.00064378 0.00039451 7.27198381 0.99803304 0.99896171 0.49315298;
+	-6.27262792 -0.00064365 0.00039443 7.27198427 0.99803345 0.99896192 0.49315301;
+	-6.27262824 -0.00064351 0.00039435 7.27198472 0.99803386 0.99896214 0.49315305;
+	-6.27262856 -0.00064338 0.00039427 7.27198518 0.99803427 0.99896235 0.49315310;
+	-6.27262888 -0.00064325 0.00039418 7.27198563 0.99803468 0.99896257 0.49315315;
+	-6.27262920 -0.00064311 0.00039410 7.27198608 0.99803508 0.99896279 0.49315320;
+	-6.27262952 -0.00064298 0.00039402 7.27198654 0.99803549 0.99896300 0.49315324;
+	-6.27262984 -0.00064284 0.00039394 7.27198699 0.99803590 0.99896322 0.49315329;
+	-6.27263015 -0.00064271 0.00039386 7.27198744 0.99803631 0.99896343 0.49315335;
+	-6.27263047 -0.00064258 0.00039378 7.27198790 0.99803672 0.99896365 0.49315341;
+	-6.27263079 -0.00064244 0.00039369 7.27198835 0.99803712 0.99896386 0.49315341;
+	-6.27263111 -0.00064231 0.00039361 7.27198880 0.99803753 0.99896408 0.49315348;
+	-6.27263143 -0.00064218 0.00039353 7.27198925 0.99803794 0.99896429 0.49315355;
+	-6.27263175 -0.00064204 0.00039345 7.27198971 0.99803835 0.99896451 0.49315360;
+	-6.27263207 -0.00064191 0.00039337 7.27199016 0.99803875 0.99896472 0.49315362;
+	-6.27263239 -0.00064178 0.00039329 7.27199061 0.99803916 0.99896494 0.49315366;
+	-6.27263271 -0.00064165 0.00039320 7.27199106 0.99803957 0.99896515 0.49315370;
+	-6.27263302 -0.00064151 0.00039312 7.27199151 0.99803997 0.99896537 0.49315378;
+	-6.27263334 -0.00064138 0.00039304 7.27199196 0.99804038 0.99896558 0.49315382;
+	-6.27263366 -0.00064125 0.00039296 7.27199241 0.99804079 0.99896579 0.49315384;
+	-6.27263398 -0.00064111 0.00039288 7.27199287 0.99804119 0.99896601 0.49315390;
+	-6.27263430 -0.00064098 0.00039280 7.27199332 0.99804160 0.99896622 0.49315398;
+	-6.27263461 -0.00064085 0.00039271 7.27199377 0.99804200 0.99896644 0.49315398;
+	-6.27263493 -0.00064072 0.00039263 7.27199422 0.99804241 0.99896665 0.49315402;
+	-6.27263525 -0.00064058 0.00039255 7.27199467 0.99804281 0.99896686 0.49315410;
+	-6.27263557 -0.00064045 0.00039247 7.27199512 0.99804322 0.99896708 0.49315415;
+	-6.27263588 -0.00064032 0.00039239 7.27199557 0.99804362 0.99896729 0.49315420;
+	-6.27263620 -0.00064019 0.00039231 7.27199602 0.99804403 0.99896751 0.49315423;
+	-6.27263652 -0.00064005 0.00039223 7.27199646 0.99804443 0.99896772 0.49315429;
+	-6.27263683 -0.00063992 0.00039215 7.27199691 0.99804484 0.99896793 0.49315433;
+	-6.27263715 -0.00063979 0.00039206 7.27199736 0.99804524 0.99896815 0.49315438;
+	-6.27263747 -0.00063966 0.00039198 7.27199781 0.99804565 0.99896836 0.49315441;
+	-6.27263778 -0.00063952 0.00039190 7.27199826 0.99804605 0.99896857 0.49315445;
+	-6.27263810 -0.00063939 0.00039182 7.27199871 0.99804645 0.99896879 0.49315452;
+	-6.27263842 -0.00063926 0.00039174 7.27199916 0.99804686 0.99896900 0.49315453;
+	-6.27263873 -0.00063913 0.00039166 7.27199960 0.99804726 0.99896921 0.49315461;
+	-6.27263905 -0.00063900 0.00039158 7.27200005 0.99804766 0.99896942 0.49315465;
+	-6.27263936 -0.00063886 0.00039150 7.27200050 0.99804807 0.99896964 0.49315471;
+	-6.27263968 -0.00063873 0.00039142 7.27200095 0.99804847 0.99896985 0.49315476;
+	-6.27263999 -0.00063860 0.00039134 7.27200139 0.99804887 0.99897006 0.49315480;
+	-6.27264031 -0.00063847 0.00039126 7.27200184 0.99804928 0.99897028 0.49315486;
+	-6.27264063 -0.00063834 0.00039117 7.27200229 0.99804968 0.99897049 0.49315489;
+	-6.27264094 -0.00063821 0.00039109 7.27200273 0.99805008 0.99897070 0.49315491;
+	-6.27264126 -0.00063807 0.00039101 7.27200318 0.99805048 0.99897091 0.49315503;
+	-6.27264157 -0.00063794 0.00039093 7.27200363 0.99805088 0.99897112 0.49315504;
+	-6.27264188 -0.00063781 0.00039085 7.27200407 0.99805129 0.99897134 0.49315507;
+	-6.27264220 -0.00063768 0.00039077 7.27200452 0.99805169 0.99897155 0.49315512;
+	-6.27264251 -0.00063755 0.00039069 7.27200496 0.99805209 0.99897176 0.49315517;
+	-6.27264283 -0.00063742 0.00039061 7.27200541 0.99805249 0.99897197 0.49315521;
+	-6.27264314 -0.00063729 0.00039053 7.27200586 0.99805289 0.99897218 0.49315529;
+	-6.27264346 -0.00063716 0.00039045 7.27200630 0.99805329 0.99897240 0.49315533;
+	-6.27264377 -0.00063702 0.00039037 7.27200675 0.99805369 0.99897261 0.49315538;
+	-6.27264408 -0.00063689 0.00039029 7.27200719 0.99805409 0.99897282 0.49315540;
+	-6.27264440 -0.00063676 0.00039021 7.27200764 0.99805450 0.99897303 0.49315545;
+	-6.27264471 -0.00063663 0.00039013 7.27200808 0.99805490 0.99897324 0.49315550;
+	-6.27264502 -0.00063650 0.00039005 7.27200852 0.99805530 0.99897345 0.49315556;
+	-6.27264534 -0.00063637 0.00038997 7.27200897 0.99805570 0.99897366 0.49315563;
+	-6.27264565 -0.00063624 0.00038989 7.27200941 0.99805610 0.99897387 0.49315563;
+	-6.27264596 -0.00063611 0.00038981 7.27200986 0.99805649 0.99897409 0.49315568;
+	-6.27264628 -0.00063598 0.00038973 7.27201030 0.99805689 0.99897430 0.49315572;
+	-6.27264659 -0.00063585 0.00038965 7.27201074 0.99805729 0.99897451 0.49315579;
+	-6.27264690 -0.00063572 0.00038957 7.27201119 0.99805769 0.99897472 0.49315582;
+	-6.27264721 -0.00063559 0.00038949 7.27201163 0.99805809 0.99897493 0.49315589;
+	-6.27264753 -0.00063545 0.00038941 7.27201207 0.99805849 0.99897514 0.49315595;
+	-6.27264784 -0.00063532 0.00038933 7.27201251 0.99805889 0.99897535 0.49315600;
+	-6.27264815 -0.00063519 0.00038925 7.27201296 0.99805929 0.99897556 0.49315603;
+	-6.27264846 -0.00063506 0.00038917 7.27201340 0.99805969 0.99897577 0.49315606;
+	-6.27264877 -0.00063493 0.00038909 7.27201384 0.99806008 0.99897598 0.49315609;
+	-6.27264909 -0.00063480 0.00038901 7.27201428 0.99806048 0.99897619 0.49315614;
+	-6.27264940 -0.00063467 0.00038893 7.27201472 0.99806088 0.99897640 0.49315621;
+	-6.27264971 -0.00063454 0.00038885 7.27201517 0.99806128 0.99897661 0.49315622;
+	-6.27265002 -0.00063441 0.00038877 7.27201561 0.99806168 0.99897682 0.49315632;
+	-6.27265033 -0.00063428 0.00038869 7.27201605 0.99806207 0.99897703 0.49315636;
+	-6.27265064 -0.00063415 0.00038861 7.27201649 0.99806247 0.99897724 0.49315639;
+	-6.27265095 -0.00063402 0.00038853 7.27201693 0.99806287 0.99897745 0.49315644;
+	-6.27265126 -0.00063389 0.00038845 7.27201737 0.99806326 0.99897766 0.49315648;
+	-6.27265157 -0.00063376 0.00038837 7.27201781 0.99806366 0.99897787 0.49315654;
+	-6.27265189 -0.00063363 0.00038829 7.27201825 0.99806406 0.99897808 0.49315656;
+	-6.27265220 -0.00063350 0.00038821 7.27201869 0.99806445 0.99897829 0.49315663;
+	-6.27265251 -0.00063337 0.00038813 7.27201913 0.99806485 0.99897849 0.49315664;
+	-6.27265282 -0.00063324 0.00038805 7.27201957 0.99806525 0.99897870 0.49315672;
+	-6.27265313 -0.00063312 0.00038797 7.27202001 0.99806564 0.99897891 0.49315678;
+	-6.27265344 -0.00063299 0.00038789 7.27202045 0.99806604 0.99897912 0.49315679;
+	-6.27265375 -0.00063286 0.00038781 7.27202089 0.99806643 0.99897933 0.49315682;
+	-6.27265406 -0.00063273 0.00038773 7.27202133 0.99806683 0.99897954 0.49315688;
+	-6.27265436 -0.00063260 0.00038765 7.27202177 0.99806722 0.99897975 0.49315697;
+	-6.27265467 -0.00063247 0.00038758 7.27202221 0.99806762 0.99897996 0.49315698;
+	-6.27265498 -0.00063234 0.00038750 7.27202264 0.99806801 0.99898016 0.49315705;
+	-6.27265529 -0.00063221 0.00038742 7.27202308 0.99806841 0.99898037 0.49315710;
+	-6.27265560 -0.00063208 0.00038734 7.27202352 0.99806880 0.99898058 0.49315714;
+	-6.27265591 -0.00063195 0.00038726 7.27202396 0.99806920 0.99898079 0.49315716;
+	-6.27265622 -0.00063182 0.00038718 7.27202440 0.99806959 0.99898100 0.49315722;
+	-6.27265653 -0.00063169 0.00038710 7.27202483 0.99806999 0.99898121 0.49315726;
+	-6.27265684 -0.00063157 0.00038702 7.27202527 0.99807038 0.99898141 0.49315731;
+	-6.27265714 -0.00063144 0.00038694 7.27202571 0.99807077 0.99898162 0.49315737;
+	-6.27265745 -0.00063131 0.00038686 7.27202614 0.99807117 0.99898183 0.49315740;
+	-6.27265776 -0.00063118 0.00038678 7.27202658 0.99807156 0.99898204 0.49315744;
+	-6.27265807 -0.00063105 0.00038671 7.27202702 0.99807195 0.99898224 0.49315747;
+	-6.27265838 -0.00063092 0.00038663 7.27202745 0.99807235 0.99898245 0.49315751;
+	-6.27265868 -0.00063079 0.00038655 7.27202789 0.99807274 0.99898266 0.49315758;
+	-6.27265899 -0.00063066 0.00038647 7.27202833 0.99807313 0.99898287 0.49315760;
+	-6.27265930 -0.00063054 0.00038639 7.27202876 0.99807353 0.99898307 0.49315770;
+	-6.27265961 -0.00063041 0.00038631 7.27202920 0.99807392 0.99898328 0.49315771;
+	-6.27265991 -0.00063028 0.00038623 7.27202963 0.99807431 0.99898349 0.49315780;
+	-6.27266022 -0.00063015 0.00038615 7.27203007 0.99807470 0.99898369 0.49315780;
+	-6.27266053 -0.00063002 0.00038608 7.27203051 0.99807510 0.99898390 0.49315786;
+	-6.27266083 -0.00062989 0.00038600 7.27203094 0.99807549 0.99898411 0.49315792;
+	-6.27266114 -0.00062977 0.00038592 7.27203138 0.99807588 0.99898432 0.49315794;
+	-6.27266145 -0.00062964 0.00038584 7.27203181 0.99807627 0.99898452 0.49315802;
+	-6.27266175 -0.00062951 0.00038576 7.27203224 0.99807666 0.99898473 0.49315805;
+	-6.27266206 -0.00062938 0.00038568 7.27203268 0.99807705 0.99898493 0.49315808;
+	-6.27266237 -0.00062925 0.00038560 7.27203311 0.99807744 0.99898514 0.49315812;
+	-6.27266267 -0.00062913 0.00038553 7.27203355 0.99807784 0.99898535 0.49315818;
+	-6.27266298 -0.00062900 0.00038545 7.27203398 0.99807823 0.99898555 0.49315821;
+	-6.27266329 -0.00062887 0.00038537 7.27203441 0.99807862 0.99898576 0.49315828;
+	-6.27266359 -0.00062874 0.00038529 7.27203485 0.99807901 0.99898597 0.49315830;
+	-6.27266390 -0.00062862 0.00038521 7.27203528 0.99807940 0.99898617 0.49315836;
+	-6.27266420 -0.00062849 0.00038513 7.27203571 0.99807979 0.99898638 0.49315841;
+	-6.27266451 -0.00062836 0.00038506 7.27203615 0.99808018 0.99898658 0.49315847;
+	-6.27266481 -0.00062823 0.00038498 7.27203658 0.99808057 0.99898679 0.49315850;
+	-6.27266512 -0.00062811 0.00038490 7.27203701 0.99808096 0.99898700 0.49315856;
+	-6.27266542 -0.00062798 0.00038482 7.27203744 0.99808135 0.99898720 0.49315859;
+	-6.27266573 -0.00062785 0.00038474 7.27203788 0.99808174 0.99898741 0.49315862;
+	-6.27266603 -0.00062772 0.00038467 7.27203831 0.99808213 0.99898761 0.49315867;
+	-6.27266634 -0.00062760 0.00038459 7.27203874 0.99808251 0.99898782 0.49315875;
+	-6.27266664 -0.00062747 0.00038451 7.27203917 0.99808290 0.99898802 0.49315880;
+	-6.27266695 -0.00062734 0.00038443 7.27203960 0.99808329 0.99898823 0.49315883;
+	-6.27266725 -0.00062721 0.00038435 7.27204004 0.99808368 0.99898843 0.49315887;
+	-6.27266755 -0.00062709 0.00038428 7.27204047 0.99808407 0.99898864 0.49315892;
+	-6.27266786 -0.00062696 0.00038420 7.27204090 0.99808446 0.99898884 0.49315895;
+	-6.27266816 -0.00062683 0.00038412 7.27204133 0.99808485 0.99898905 0.49315899;
+	-6.27266847 -0.00062671 0.00038404 7.27204176 0.99808523 0.99898925 0.49315906;
+	-6.27266877 -0.00062658 0.00038396 7.27204219 0.99808562 0.99898946 0.49315910;
+	-6.27266907 -0.00062645 0.00038389 7.27204262 0.99808601 0.99898966 0.49315911;
+	-6.27266938 -0.00062633 0.00038381 7.27204305 0.99808640 0.99898987 0.49315917;
+	-6.27266968 -0.00062620 0.00038373 7.27204348 0.99808678 0.99899007 0.49315922;
+	-6.27266998 -0.00062607 0.00038365 7.27204391 0.99808717 0.99899027 0.49315926;
+	-6.27267028 -0.00062595 0.00038358 7.27204434 0.99808756 0.99899048 0.49315930;
+	-6.27267059 -0.00062582 0.00038350 7.27204477 0.99808794 0.99899068 0.49315934;
+	-6.27267089 -0.00062569 0.00038342 7.27204520 0.99808833 0.99899089 0.49315940;
+	-6.27267119 -0.00062557 0.00038334 7.27204563 0.99808872 0.99899109 0.49315945;
+	-6.27267150 -0.00062544 0.00038327 7.27204606 0.99808910 0.99899129 0.49315950;
+	-6.27267180 -0.00062531 0.00038319 7.27204648 0.99808949 0.99899150 0.49315953;
+	-6.27267210 -0.00062519 0.00038311 7.27204691 0.99808988 0.99899170 0.49315956;
+	-6.27267240 -0.00062506 0.00038303 7.27204734 0.99809026 0.99899191 0.49315961;
+	-6.27267270 -0.00062494 0.00038296 7.27204777 0.99809065 0.99899211 0.49315968;
+	-6.27267301 -0.00062481 0.00038288 7.27204820 0.99809103 0.99899231 0.49315973;
+	-6.27267331 -0.00062468 0.00038280 7.27204863 0.99809142 0.99899252 0.49315977;
+	-6.27267361 -0.00062456 0.00038272 7.27204905 0.99809180 0.99899272 0.49315980;
+	-6.27267391 -0.00062443 0.00038265 7.27204948 0.99809219 0.99899292 0.49315984;
+	-6.27267421 -0.00062431 0.00038257 7.27204991 0.99809257 0.99899313 0.49315989;
+	-6.27267451 -0.00062418 0.00038249 7.27205033 0.99809296 0.99899333 0.49315993;
+	-6.27267481 -0.00062405 0.00038241 7.27205076 0.99809334 0.99899353 0.49315999;
+	-6.27267512 -0.00062393 0.00038234 7.27205119 0.99809373 0.99899373 0.49316004;
+	-6.27267542 -0.00062380 0.00038226 7.27205162 0.99809411 0.99899394 0.49316007;
+	-6.27267572 -0.00062368 0.00038218 7.27205204 0.99809450 0.99899414 0.49316011;
+	-6.27267602 -0.00062355 0.00038211 7.27205247 0.99809488 0.99899434 0.49316016;
+	-6.27267632 -0.00062342 0.00038203 7.27205289 0.99809527 0.99899455 0.49316020;
+	-6.27267662 -0.00062330 0.00038195 7.27205332 0.99809565 0.99899475 0.49316023;
+	-6.27267692 -0.00062317 0.00038188 7.27205375 0.99809603 0.99899495 0.49316033;
+	-6.27267722 -0.00062305 0.00038180 7.27205417 0.99809642 0.99899515 0.49316032;
+	-6.27267752 -0.00062292 0.00038172 7.27205460 0.99809680 0.99899536 0.49316037;
+	-6.27267782 -0.00062280 0.00038164 7.27205502 0.99809718 0.99899556 0.49316043;
+	-6.27267812 -0.00062267 0.00038157 7.27205545 0.99809757 0.99899576 0.49316049;
+	-6.27267842 -0.00062255 0.00038149 7.27205587 0.99809795 0.99899596 0.49316053;
+	-6.27267872 -0.00062242 0.00038141 7.27205630 0.99809833 0.99899616 0.49316060;
+	-6.27267902 -0.00062230 0.00038134 7.27205672 0.99809871 0.99899637 0.49316061;
+	-6.27267932 -0.00062217 0.00038126 7.27205715 0.99809910 0.99899657 0.49316068;
+	-6.27267962 -0.00062205 0.00038118 7.27205757 0.99809948 0.99899677 0.49316072;
+	-6.27267992 -0.00062192 0.00038111 7.27205799 0.99809986 0.99899697 0.49316074;
+	-6.27268021 -0.00062180 0.00038103 7.27205842 0.99810024 0.99899717 0.49316079;
+	-6.27268051 -0.00062167 0.00038095 7.27205884 0.99810062 0.99899737 0.49316083;
+	-6.27268081 -0.00062155 0.00038088 7.27205927 0.99810100 0.99899757 0.49316088;
+	-6.27268111 -0.00062142 0.00038080 7.27205969 0.99810139 0.99899778 0.49316090;
+	-6.27268141 -0.00062130 0.00038072 7.27206011 0.99810177 0.99899798 0.49316099;
+	-6.27268171 -0.00062117 0.00038065 7.27206053 0.99810215 0.99899818 0.49316102;
+	-6.27268201 -0.00062105 0.00038057 7.27206096 0.99810253 0.99899838 0.49316107;
+	-6.27268230 -0.00062092 0.00038050 7.27206138 0.99810291 0.99899858 0.49316107;
+	-6.27268260 -0.00062080 0.00038042 7.27206180 0.99810329 0.99899878 0.49316112;
+	-6.27268290 -0.00062067 0.00038034 7.27206223 0.99810367 0.99899898 0.49316121;
+	-6.27268320 -0.00062055 0.00038027 7.27206265 0.99810405 0.99899918 0.49316122;
+	-6.27268350 -0.00062043 0.00038019 7.27206307 0.99810443 0.99899938 0.49316127;
+	-6.27268379 -0.00062030 0.00038011 7.27206349 0.99810481 0.99899958 0.49316133;
+	-6.27268409 -0.00062018 0.00038004 7.27206391 0.99810519 0.99899978 0.49316137;
+	-6.27268439 -0.00062005 0.00037996 7.27206433 0.99810557 0.99899999 0.49316141;
+	-6.27268468 -0.00061993 0.00037989 7.27206476 0.99810595 0.99900019 0.49316145;
+	-6.27268498 -0.00061980 0.00037981 7.27206518 0.99810633 0.99900039 0.49316150;
+	-6.27268528 -0.00061968 0.00037973 7.27206560 0.99810671 0.99900059 0.49316152;
+	-6.27268558 -0.00061956 0.00037966 7.27206602 0.99810709 0.99900079 0.49316158;
+	-6.27268587 -0.00061943 0.00037958 7.27206644 0.99810747 0.99900099 0.49316160;
+	-6.27268617 -0.00061931 0.00037951 7.27206686 0.99810785 0.99900119 0.49316174;
+	-6.27268647 -0.00061919 0.00037943 7.27206728 0.99810823 0.99900139 0.49316174;
+	-6.27268676 -0.00061906 0.00037935 7.27206770 0.99810860 0.99900159 0.49316173;
+	-6.27268706 -0.00061894 0.00037928 7.27206812 0.99810898 0.99900179 0.49316182;
+	-6.27268735 -0.00061881 0.00037920 7.27206854 0.99810936 0.99900198 0.49316185;
+	-6.27268765 -0.00061869 0.00037913 7.27206896 0.99810974 0.99900218 0.49316190;
+	-6.27268795 -0.00061857 0.00037905 7.27206938 0.99811012 0.99900238 0.49316194;
+	-6.27268824 -0.00061844 0.00037897 7.27206980 0.99811049 0.99900258 0.49316199;
+	-6.27268854 -0.00061832 0.00037890 7.27207022 0.99811087 0.99900278 0.49316201;
+	-6.27268883 -0.00061820 0.00037882 7.27207064 0.99811125 0.99900298 0.49316207;
+	-6.27268913 -0.00061807 0.00037875 7.27207106 0.99811163 0.99900318 0.49316215;
+	-6.27268942 -0.00061795 0.00037867 7.27207147 0.99811200 0.99900338 0.49316215;
+	-6.27268972 -0.00061783 0.00037860 7.27207189 0.99811238 0.99900358 0.49316222;
+	-6.27269001 -0.00061770 0.00037852 7.27207231 0.99811276 0.99900378 0.49316225;
+	-6.27269031 -0.00061758 0.00037844 7.27207273 0.99811313 0.99900398 0.49316226;
+	-6.27269060 -0.00061746 0.00037837 7.27207315 0.99811351 0.99900418 0.49316232;
+	-6.27269090 -0.00061733 0.00037829 7.27207356 0.99811389 0.99900437 0.49316241;
+	-6.27269119 -0.00061721 0.00037822 7.27207398 0.99811426 0.99900457 0.49316240;
+	-6.27269149 -0.00061709 0.00037814 7.27207440 0.99811464 0.99900477 0.49316244;
+	-6.27269178 -0.00061696 0.00037807 7.27207482 0.99811502 0.99900497 0.49316250;
+	-6.27269208 -0.00061684 0.00037799 7.27207523 0.99811539 0.99900517 0.49316255;
+	-6.27269237 -0.00061672 0.00037792 7.27207565 0.99811577 0.99900537 0.49316260;
+	-6.27269266 -0.00061660 0.00037784 7.27207607 0.99811614 0.99900556 0.49316268;
+	-6.27269296 -0.00061647 0.00037777 7.27207648 0.99811652 0.99900576 0.49316264;
+	-6.27269325 -0.00061635 0.00037769 7.27207690 0.99811689 0.99900596 0.49316274;
+	-6.27269354 -0.00061623 0.00037762 7.27207732 0.99811727 0.99900616 0.49316275;
+	-6.27269384 -0.00061610 0.00037754 7.27207773 0.99811764 0.99900636 0.49316280;
+	-6.27269413 -0.00061598 0.00037746 7.27207815 0.99811802 0.99900655 0.49316280;
+	-6.27269442 -0.00061586 0.00037739 7.27207857 0.99811839 0.99900675 0.49316288;
+	-6.27269472 -0.00061574 0.00037731 7.27207898 0.99811877 0.99900695 0.49316293;
+	-6.27269501 -0.00061561 0.00037724 7.27207940 0.99811914 0.99900715 0.49316299;
+	-6.27269530 -0.00061549 0.00037716 7.27207981 0.99811952 0.99900734 0.49316305;
+	-6.27269560 -0.00061537 0.00037709 7.27208023 0.99811989 0.99900754 0.49316305;
+	-6.27269589 -0.00061525 0.00037701 7.27208064 0.99812026 0.99900774 0.49316309;
+	-6.27269618 -0.00061512 0.00037694 7.27208106 0.99812064 0.99900794 0.49316319;
+	-6.27269647 -0.00061500 0.00037686 7.27208147 0.99812101 0.99900813 0.49316320;
+	-6.27269677 -0.00061488 0.00037679 7.27208189 0.99812138 0.99900833 0.49316326;
+	-6.27269706 -0.00061476 0.00037671 7.27208230 0.99812176 0.99900853 0.49316331;
+	-6.27269735 -0.00061464 0.00037664 7.27208271 0.99812213 0.99900872 0.49316334;
+	-6.27269764 -0.00061451 0.00037656 7.27208313 0.99812250 0.99900892 0.49316337;
+	-6.27269793 -0.00061439 0.00037649 7.27208354 0.99812288 0.99900912 0.49316343;
+	-6.27269823 -0.00061427 0.00037642 7.27208396 0.99812325 0.99900931 0.49316350;
+	-6.27269852 -0.00061415 0.00037634 7.27208437 0.99812362 0.99900951 0.49316348;
+	-6.27269881 -0.00061403 0.00037627 7.27208478 0.99812399 0.99900971 0.49316356;
+	-6.27269910 -0.00061390 0.00037619 7.27208520 0.99812437 0.99900990 0.49316359;
+	-6.27269939 -0.00061378 0.00037612 7.27208561 0.99812474 0.99901010 0.49316364;
+	-6.27269968 -0.00061366 0.00037604 7.27208602 0.99812511 0.99901030 0.49316368;
+	-6.27269997 -0.00061354 0.00037597 7.27208643 0.99812548 0.99901049 0.49316372;
+	-6.27270027 -0.00061342 0.00037589 7.27208685 0.99812585 0.99901069 0.49316379;
+	-6.27270056 -0.00061330 0.00037582 7.27208726 0.99812623 0.99901089 0.49316380;
+	-6.27270085 -0.00061318 0.00037574 7.27208767 0.99812660 0.99901108 0.49316383;
+	-6.27270114 -0.00061305 0.00037567 7.27208808 0.99812697 0.99901128 0.49316392;
+	-6.27270143 -0.00061293 0.00037559 7.27208850 0.99812734 0.99901147 0.49316393;
+	-6.27270172 -0.00061281 0.00037552 7.27208891 0.99812771 0.99901167 0.49316398;
+	-6.27270201 -0.00061269 0.00037545 7.27208932 0.99812808 0.99901186 0.49316403;
+	-6.27270230 -0.00061257 0.00037537 7.27208973 0.99812845 0.99901206 0.49316407;
+	-6.27270259 -0.00061245 0.00037530 7.27209014 0.99812882 0.99901226 0.49316411;
+	-6.27270288 -0.00061233 0.00037522 7.27209055 0.99812919 0.99901245 0.49316419;
+	-6.27270317 -0.00061221 0.00037515 7.27209096 0.99812956 0.99901265 0.49316420;
+	-6.27270346 -0.00061208 0.00037507 7.27209137 0.99812993 0.99901284 0.49316424;
+	-6.27270375 -0.00061196 0.00037500 7.27209178 0.99813030 0.99901304 0.49316431;
+	-6.27270404 -0.00061184 0.00037493 7.27209219 0.99813067 0.99901323 0.49316432;
+	-6.27270433 -0.00061172 0.00037485 7.27209260 0.99813104 0.99901343 0.49316435;
+	-6.27270462 -0.00061160 0.00037478 7.27209301 0.99813141 0.99901362 0.49316437;
+	-6.27270490 -0.00061148 0.00037470 7.27209342 0.99813178 0.99901382 0.49316447;
+	-6.27270519 -0.00061136 0.00037463 7.27209383 0.99813215 0.99901401 0.49316452;
+	-6.27270548 -0.00061124 0.00037456 7.27209424 0.99813252 0.99901421 0.49316453;
+	-6.27270577 -0.00061112 0.00037448 7.27209465 0.99813289 0.99901440 0.49316460;
+	-6.27270606 -0.00061100 0.00037441 7.27209506 0.99813326 0.99901460 0.49316462;
+	-6.27270635 -0.00061088 0.00037433 7.27209547 0.99813362 0.99901479 0.49316468;
+	-6.27270664 -0.00061076 0.00037426 7.27209588 0.99813399 0.99901498 0.49316472;
+	-6.27270692 -0.00061064 0.00037419 7.27209629 0.99813436 0.99901518 0.49316476;
+	-6.27270721 -0.00061051 0.00037411 7.27209670 0.99813473 0.99901537 0.49316483;
+	-6.27270750 -0.00061039 0.00037404 7.27209711 0.99813510 0.99901557 0.49316482;
+	-6.27270779 -0.00061027 0.00037396 7.27209751 0.99813547 0.99901576 0.49316493;
+	-6.27270808 -0.00061015 0.00037389 7.27209792 0.99813583 0.99901596 0.49316495;
+	-6.27270836 -0.00061003 0.00037382 7.27209833 0.99813620 0.99901615 0.49316498;
+	-6.27270865 -0.00060991 0.00037374 7.27209874 0.99813657 0.99901634 0.49316501;
+	-6.27270894 -0.00060979 0.00037367 7.27209915 0.99813694 0.99901654 0.49316504;
+	-6.27270923 -0.00060967 0.00037360 7.27209955 0.99813730 0.99901673 0.49316509;
+	-6.27270951 -0.00060955 0.00037352 7.27209996 0.99813767 0.99901692 0.49316516;
+	-6.27270980 -0.00060943 0.00037345 7.27210037 0.99813804 0.99901712 0.49316521;
+	-6.27271009 -0.00060931 0.00037338 7.27210078 0.99813840 0.99901731 0.49316522;
+	-6.27271038 -0.00060919 0.00037330 7.27210118 0.99813877 0.99901751 0.49316529;
+	-6.27271066 -0.00060907 0.00037323 7.27210159 0.99813914 0.99901770 0.49316533;
+	-6.27271095 -0.00060895 0.00037315 7.27210200 0.99813950 0.99901789 0.49316538;
+	-6.27271124 -0.00060883 0.00037308 7.27210240 0.99813987 0.99901808 0.49316545;
+	-6.27271152 -0.00060871 0.00037301 7.27210281 0.99814023 0.99901828 0.49316550;
+	-6.27271181 -0.00060859 0.00037293 7.27210321 0.99814060 0.99901847 0.49316550;
+	-6.27271209 -0.00060847 0.00037286 7.27210362 0.99814097 0.99901866 0.49316554;
+	-6.27271238 -0.00060836 0.00037279 7.27210403 0.99814133 0.99901886 0.49316555;
+	-6.27271267 -0.00060824 0.00037271 7.27210443 0.99814170 0.99901905 0.49316564;
+	-6.27271295 -0.00060812 0.00037264 7.27210484 0.99814206 0.99901924 0.49316569;
+	-6.27271324 -0.00060800 0.00037257 7.27210524 0.99814243 0.99901944 0.49316569;
+	-6.27271352 -0.00060788 0.00037249 7.27210565 0.99814279 0.99901963 0.49316572;
+	-6.27271381 -0.00060776 0.00037242 7.27210605 0.99814316 0.99901982 0.49316582;
+	-6.27271410 -0.00060764 0.00037235 7.27210646 0.99814352 0.99902001 0.49316585;
+	-6.27271438 -0.00060752 0.00037228 7.27210686 0.99814389 0.99902021 0.49316587;
+	-6.27271467 -0.00060740 0.00037220 7.27210727 0.99814425 0.99902040 0.49316592;
+	-6.27271495 -0.00060728 0.00037213 7.27210767 0.99814461 0.99902059 0.49316598;
+	-6.27271524 -0.00060716 0.00037206 7.27210807 0.99814498 0.99902078 0.49316599;
+	-6.27271552 -0.00060704 0.00037198 7.27210848 0.99814534 0.99902097 0.49316604;
+	-6.27271581 -0.00060692 0.00037191 7.27210888 0.99814571 0.99902117 0.49316608;
+	-6.27271609 -0.00060680 0.00037184 7.27210929 0.99814607 0.99902136 0.49316611;
+	-6.27271637 -0.00060669 0.00037176 7.27210969 0.99814643 0.99902155 0.49316616;
+	-6.27271666 -0.00060657 0.00037169 7.27211009 0.99814680 0.99902174 0.49316618;
+	-6.27271694 -0.00060645 0.00037162 7.27211050 0.99814716 0.99902193 0.49316624;
+	-6.27271723 -0.00060633 0.00037155 7.27211090 0.99814752 0.99902213 0.49316630;
+	-6.27271751 -0.00060621 0.00037147 7.27211130 0.99814789 0.99902232 0.49316633;
+	-6.27271780 -0.00060609 0.00037140 7.27211170 0.99814825 0.99902251 0.49316640;
+	-6.27271808 -0.00060597 0.00037133 7.27211211 0.99814861 0.99902270 0.49316642;
+	-6.27271836 -0.00060585 0.00037125 7.27211251 0.99814897 0.99902289 0.49316649;
+	-6.27271865 -0.00060574 0.00037118 7.27211291 0.99814934 0.99902308 0.49316653;
+	-6.27271893 -0.00060562 0.00037111 7.27211331 0.99814970 0.99902327 0.49316657;
+	-6.27271921 -0.00060550 0.00037104 7.27211371 0.99815006 0.99902346 0.49316659;
+	-6.27271950 -0.00060538 0.00037096 7.27211412 0.99815042 0.99902366 0.49316664;
+	-6.27271978 -0.00060526 0.00037089 7.27211452 0.99815079 0.99902385 0.49316670;
+	-6.27272006 -0.00060514 0.00037082 7.27211492 0.99815115 0.99902404 0.49316670;
+	-6.27272035 -0.00060503 0.00037075 7.27211532 0.99815151 0.99902423 0.49316673;
+	-6.27272063 -0.00060491 0.00037067 7.27211572 0.99815187 0.99902442 0.49316679;
+	-6.27272091 -0.00060479 0.00037060 7.27211612 0.99815223 0.99902461 0.49316685;
+	-6.27272120 -0.00060467 0.00037053 7.27211652 0.99815259 0.99902480 0.49316688;
+	-6.27272148 -0.00060455 0.00037046 7.27211692 0.99815295 0.99902499 0.49316692;
+	-6.27272176 -0.00060444 0.00037038 7.27211732 0.99815331 0.99902518 0.49316699;
+	-6.27272204 -0.00060432 0.00037031 7.27211773 0.99815367 0.99902537 0.49316698;
+	-6.27272232 -0.00060420 0.00037024 7.27211813 0.99815404 0.99902556 0.49316707;
+	-6.27272261 -0.00060408 0.00037017 7.27211853 0.99815440 0.99902575 0.49316710;
+	-6.27272289 -0.00060396 0.00037009 7.27211893 0.99815476 0.99902594 0.49316715;
+	-6.27272317 -0.00060385 0.00037002 7.27211933 0.99815512 0.99902613 0.49316718;
+	-6.27272345 -0.00060373 0.00036995 7.27211972 0.99815548 0.99902632 0.49316722;
+	-6.27272373 -0.00060361 0.00036988 7.27212012 0.99815584 0.99902651 0.49316726;
+	-6.27272402 -0.00060349 0.00036981 7.27212052 0.99815620 0.99902670 0.49316729;
+	-6.27272430 -0.00060337 0.00036973 7.27212092 0.99815656 0.99902689 0.49316735;
+	-6.27272458 -0.00060326 0.00036966 7.27212132 0.99815691 0.99902708 0.49316741;
+	-6.27272486 -0.00060314 0.00036959 7.27212172 0.99815727 0.99902727 0.49316741;
+	-6.27272514 -0.00060302 0.00036952 7.27212212 0.99815763 0.99902746 0.49316748;
+	-6.27272542 -0.00060290 0.00036945 7.27212252 0.99815799 0.99902765 0.49316753;
+	-6.27272570 -0.00060279 0.00036937 7.27212292 0.99815835 0.99902784 0.49316756;
+	-6.27272598 -0.00060267 0.00036930 7.27212331 0.99815871 0.99902803 0.49316761;
+	-6.27272626 -0.00060255 0.00036923 7.27212371 0.99815907 0.99902822 0.49316767;
+	-6.27272654 -0.00060244 0.00036916 7.27212411 0.99815943 0.99902841 0.49316768;
+	-6.27272683 -0.00060232 0.00036909 7.27212451 0.99815978 0.99902860 0.49316772;
+	-6.27272711 -0.00060220 0.00036901 7.27212490 0.99816014 0.99902879 0.49316778;
+	-6.27272739 -0.00060208 0.00036894 7.27212530 0.99816050 0.99902897 0.49316778;
+	-6.27272767 -0.00060197 0.00036887 7.27212570 0.99816086 0.99902916 0.49316783;
+	-6.27272795 -0.00060185 0.00036880 7.27212610 0.99816122 0.99902935 0.49316788;
+	-6.27272823 -0.00060173 0.00036873 7.27212649 0.99816157 0.99902954 0.49316787;
+	-6.27272851 -0.00060162 0.00036865 7.27212689 0.99816193 0.99902973 0.49316799;
+	-6.27272879 -0.00060150 0.00036858 7.27212729 0.99816229 0.99902992 0.49316801;
+	-6.27272907 -0.00060138 0.00036851 7.27212768 0.99816265 0.99903011 0.49316805;
+	-6.27272934 -0.00060127 0.00036844 7.27212808 0.99816300 0.99903029 0.49316810;
+	-6.27272962 -0.00060115 0.00036837 7.27212848 0.99816336 0.99903048 0.49316812;
+	-6.27272990 -0.00060103 0.00036830 7.27212887 0.99816372 0.99903067 0.49316815;
+	-6.27273018 -0.00060092 0.00036823 7.27212927 0.99816407 0.99903086 0.49316824;
+	-6.27273046 -0.00060080 0.00036815 7.27212966 0.99816443 0.99903105 0.49316825;
+	-6.27273074 -0.00060068 0.00036808 7.27213006 0.99816479 0.99903124 0.49316832;
+	-6.27273102 -0.00060057 0.00036801 7.27213045 0.99816514 0.99903142 0.49316835;
+	-6.27273130 -0.00060045 0.00036794 7.27213085 0.99816550 0.99903161 0.49316839;
+	-6.27273158 -0.00060033 0.00036787 7.27213124 0.99816585 0.99903180 0.49316844;
+	-6.27273186 -0.00060022 0.00036780 7.27213164 0.99816621 0.99903199 0.49316848;
+	-6.27273213 -0.00060010 0.00036773 7.27213203 0.99816657 0.99903218 0.49316850;
+	-6.27273241 -0.00059998 0.00036765 7.27213243 0.99816692 0.99903236 0.49316856;
+	-6.27273269 -0.00059987 0.00036758 7.27213282 0.99816728 0.99903255 0.49316861;
+	-6.27273297 -0.00059975 0.00036751 7.27213322 0.99816763 0.99903274 0.49316864;
+	-6.27273325 -0.00059963 0.00036744 7.27213361 0.99816799 0.99903293 0.49316869;
+	-6.27273352 -0.00059952 0.00036737 7.27213401 0.99816834 0.99903311 0.49316872;
+	-6.27273380 -0.00059940 0.00036730 7.27213440 0.99816870 0.99903330 0.49316876;
+	-6.27273408 -0.00059929 0.00036723 7.27213479 0.99816905 0.99903349 0.49316877;
+	-6.27273436 -0.00059917 0.00036716 7.27213519 0.99816941 0.99903367 0.49316887;
+	-6.27273463 -0.00059905 0.00036708 7.27213558 0.99816976 0.99903386 0.49316888;
+	-6.27273491 -0.00059894 0.00036701 7.27213597 0.99817012 0.99903405 0.49316895;
+	-6.27273519 -0.00059882 0.00036694 7.27213637 0.99817047 0.99903424 0.49316897;
+	-6.27273547 -0.00059871 0.00036687 7.27213676 0.99817082 0.99903442 0.49316901;
+	-6.27273574 -0.00059859 0.00036680 7.27213715 0.99817118 0.99903461 0.49316906;
+	-6.27273602 -0.00059848 0.00036673 7.27213754 0.99817153 0.99903480 0.49316911;
+	-6.27273630 -0.00059836 0.00036666 7.27213794 0.99817189 0.99903498 0.49316913;
+	-6.27273657 -0.00059824 0.00036659 7.27213833 0.99817224 0.99903517 0.49316914;
+	-6.27273685 -0.00059813 0.00036652 7.27213872 0.99817259 0.99903535 0.49316924;
+	-6.27273713 -0.00059801 0.00036645 7.27213911 0.99817295 0.99903554 0.49316926;
+	-6.27273740 -0.00059790 0.00036637 7.27213951 0.99817330 0.99903573 0.49316930;
+	-6.27273768 -0.00059778 0.00036630 7.27213990 0.99817365 0.99903591 0.49316938;
+	-6.27273796 -0.00059767 0.00036623 7.27214029 0.99817400 0.99903610 0.49316938;
+	-6.27273823 -0.00059755 0.00036616 7.27214068 0.99817436 0.99903629 0.49316938;
+	-6.27273851 -0.00059744 0.00036609 7.27214107 0.99817471 0.99903647 0.49316946;
+	-6.27273878 -0.00059732 0.00036602 7.27214146 0.99817506 0.99903666 0.49316948;
+	-6.27273906 -0.00059721 0.00036595 7.27214185 0.99817541 0.99903684 0.49316954;
+	-6.27273933 -0.00059709 0.00036588 7.27214224 0.99817577 0.99903703 0.49316961;
+	-6.27273961 -0.00059698 0.00036581 7.27214263 0.99817612 0.99903722 0.49316964;
+	-6.27273989 -0.00059686 0.00036574 7.27214303 0.99817647 0.99903740 0.49316966;
+	-6.27274016 -0.00059674 0.00036567 7.27214342 0.99817682 0.99903759 0.49316973;
+	-6.27274044 -0.00059663 0.00036560 7.27214381 0.99817717 0.99903777 0.49316976;
+	-6.27274071 -0.00059651 0.00036553 7.27214420 0.99817752 0.99903796 0.49316978;
+	-6.27274099 -0.00059640 0.00036546 7.27214459 0.99817788 0.99903814 0.49316985;
+	-6.27274126 -0.00059629 0.00036539 7.27214498 0.99817823 0.99903833 0.49316985;
+	-6.27274154 -0.00059617 0.00036532 7.27214537 0.99817858 0.99903851 0.49316990;
+	-6.27274181 -0.00059606 0.00036525 7.27214575 0.99817893 0.99903870 0.49316996;
+	-6.27274208 -0.00059594 0.00036517 7.27214614 0.99817928 0.99903888 0.49317001;
+	-6.27274236 -0.00059583 0.00036510 7.27214653 0.99817963 0.99903907 0.49317000;
+	-6.27274263 -0.00059571 0.00036503 7.27214692 0.99817998 0.99903925 0.49317004;
+	-6.27274291 -0.00059560 0.00036496 7.27214731 0.99818033 0.99903944 0.49317008;
+	-6.27274318 -0.00059548 0.00036489 7.27214770 0.99818068 0.99903962 0.49317014;
+	-6.27274346 -0.00059537 0.00036482 7.27214809 0.99818103 0.99903981 0.49317022;
+	-6.27274373 -0.00059525 0.00036475 7.27214848 0.99818138 0.99903999 0.49317024;
+	-6.27274400 -0.00059514 0.00036468 7.27214886 0.99818173 0.99904018 0.49317029;
+	-6.27274428 -0.00059502 0.00036461 7.27214925 0.99818208 0.99904036 0.49317032;
+	-6.27274455 -0.00059491 0.00036454 7.27214964 0.99818243 0.99904055 0.49317037;
+	-6.27274482 -0.00059480 0.00036447 7.27215003 0.99818278 0.99904073 0.49317042;
+	-6.27274510 -0.00059468 0.00036440 7.27215042 0.99818313 0.99904092 0.49317048;
+	-6.27274537 -0.00059457 0.00036433 7.27215080 0.99818348 0.99904110 0.49317047;
+	-6.27274564 -0.00059445 0.00036426 7.27215119 0.99818383 0.99904128 0.49317056;
+	-6.27274592 -0.00059434 0.00036419 7.27215158 0.99818418 0.99904147 0.49317055;
+	-6.27274619 -0.00059422 0.00036412 7.27215197 0.99818452 0.99904165 0.49317062;
+	-6.27274646 -0.00059411 0.00036405 7.27215235 0.99818487 0.99904184 0.49317064;
+	-6.27274674 -0.00059400 0.00036398 7.27215274 0.99818522 0.99904202 0.49317066;
+	-6.27274701 -0.00059388 0.00036391 7.27215313 0.99818557 0.99904220 0.49317073;
+	-6.27274728 -0.00059377 0.00036384 7.27215351 0.99818592 0.99904239 0.49317076;
+	-6.27274755 -0.00059365 0.00036377 7.27215390 0.99818627 0.99904257 0.49317082;
+	-6.27274783 -0.00059354 0.00036370 7.27215428 0.99818661 0.99904276 0.49317086;
+	-6.27274810 -0.00059343 0.00036363 7.27215467 0.99818696 0.99904294 0.49317091;
+	-6.27274837 -0.00059331 0.00036356 7.27215506 0.99818731 0.99904312 0.49317096;
+	-6.27274864 -0.00059320 0.00036349 7.27215544 0.99818766 0.99904331 0.49317092;
+	-6.27274891 -0.00059309 0.00036342 7.27215583 0.99818800 0.99904349 0.49317097;
+	-6.27274919 -0.00059297 0.00036335 7.27215621 0.99818835 0.99904367 0.49317108;
+	-6.27274946 -0.00059286 0.00036329 7.27215660 0.99818870 0.99904386 0.49317108;
+	-6.27274973 -0.00059275 0.00036322 7.27215698 0.99818905 0.99904404 0.49317113;
+	-6.27275000 -0.00059263 0.00036315 7.27215737 0.99818939 0.99904422 0.49317119;
+	-6.27275027 -0.00059252 0.00036308 7.27215775 0.99818974 0.99904440 0.49317125;
+	-6.27275054 -0.00059241 0.00036301 7.27215814 0.99819009 0.99904459 0.49317124;
+	-6.27275081 -0.00059229 0.00036294 7.27215852 0.99819043 0.99904477 0.49317130;
+	-6.27275109 -0.00059218 0.00036287 7.27215891 0.99819078 0.99904495 0.49317131;
+	-6.27275136 -0.00059207 0.00036280 7.27215929 0.99819113 0.99904514 0.49317136;
+	-6.27275163 -0.00059195 0.00036273 7.27215968 0.99819147 0.99904532 0.49317137;
+	-6.27275190 -0.00059184 0.00036266 7.27216006 0.99819182 0.99904550 0.49317148;
+	-6.27275217 -0.00059173 0.00036259 7.27216044 0.99819216 0.99904568 0.49317152;
+	-6.27275244 -0.00059161 0.00036252 7.27216083 0.99819251 0.99904587 0.49317157;
+	-6.27275271 -0.00059150 0.00036245 7.27216121 0.99819285 0.99904605 0.49317157;
+	-6.27275298 -0.00059139 0.00036238 7.27216159 0.99819320 0.99904623 0.49317163;
+	-6.27275325 -0.00059127 0.00036231 7.27216198 0.99819355 0.99904641 0.49317168;
+	-6.27275352 -0.00059116 0.00036224 7.27216236 0.99819389 0.99904660 0.49317166;
+	-6.27275379 -0.00059105 0.00036217 7.27216274 0.99819424 0.99904678 0.49317177;
+	-6.27275406 -0.00059094 0.00036211 7.27216313 0.99819458 0.99904696 0.49317179;
+	-6.27275433 -0.00059082 0.00036204 7.27216351 0.99819493 0.99904714 0.49317185;
+	-6.27275460 -0.00059071 0.00036197 7.27216389 0.99819527 0.99904732 0.49317189;
+	-6.27275487 -0.00059060 0.00036190 7.27216427 0.99819561 0.99904751 0.49317188;
+	-6.27275514 -0.00059048 0.00036183 7.27216466 0.99819596 0.99904769 0.49317197;
+	-6.27275541 -0.00059037 0.00036176 7.27216504 0.99819630 0.99904787 0.49317199;
+	-6.27275568 -0.00059026 0.00036169 7.27216542 0.99819665 0.99904805 0.49317206;
+	-6.27275595 -0.00059015 0.00036162 7.27216580 0.99819699 0.99904823 0.49317206;
+	-6.27275622 -0.00059003 0.00036155 7.27216618 0.99819733 0.99904841 0.49317210;
+	-6.27275649 -0.00058992 0.00036148 7.27216656 0.99819768 0.99904859 0.49317215;
+	-6.27275675 -0.00058981 0.00036141 7.27216695 0.99819802 0.99904878 0.49317218;
+	-6.27275702 -0.00058970 0.00036135 7.27216733 0.99819837 0.99904896 0.49317220;
+	-6.27275729 -0.00058958 0.00036128 7.27216771 0.99819871 0.99904914 0.49317224;
+	-6.27275756 -0.00058947 0.00036121 7.27216809 0.99819905 0.99904932 0.49317231;
+	-6.27275783 -0.00058936 0.00036114 7.27216847 0.99819939 0.99904950 0.49317228;
+	-6.27275810 -0.00058925 0.00036107 7.27216885 0.99819974 0.99904968 0.49317238;
+	-6.27275837 -0.00058914 0.00036100 7.27216923 0.99820008 0.99904986 0.49317241;
+	-6.27275863 -0.00058902 0.00036093 7.27216961 0.99820042 0.99905004 0.49317245;
+	-6.27275890 -0.00058891 0.00036086 7.27216999 0.99820077 0.99905022 0.49317253;
+	-6.27275917 -0.00058880 0.00036080 7.27217037 0.99820111 0.99905040 0.49317256;
+	-6.27275944 -0.00058869 0.00036073 7.27217075 0.99820145 0.99905059 0.49317260;
+	-6.27275971 -0.00058858 0.00036066 7.27217113 0.99820179 0.99905077 0.49317263;
+	-6.27275997 -0.00058846 0.00036059 7.27217151 0.99820213 0.99905095 0.49317270;
+	-6.27276024 -0.00058835 0.00036052 7.27217189 0.99820248 0.99905113 0.49317272;
+	-6.27276051 -0.00058824 0.00036045 7.27217227 0.99820282 0.99905131 0.49317275;
+	-6.27276078 -0.00058813 0.00036038 7.27217265 0.99820316 0.99905149 0.49317277;
+	-6.27276104 -0.00058802 0.00036032 7.27217303 0.99820350 0.99905167 0.49317281;
+	-6.27276131 -0.00058790 0.00036025 7.27217341 0.99820384 0.99905185 0.49317287;
+	-6.27276158 -0.00058779 0.00036018 7.27217378 0.99820418 0.99905203 0.49317289;
+	-6.27276184 -0.00058768 0.00036011 7.27217416 0.99820453 0.99905221 0.49317299;
+	-6.27276211 -0.00058757 0.00036004 7.27217454 0.99820487 0.99905239 0.49317296;
+	-6.27276238 -0.00058746 0.00035997 7.27217492 0.99820521 0.99905257 0.49317302;
+	-6.27276265 -0.00058735 0.00035991 7.27217530 0.99820555 0.99905275 0.49317307;
+	-6.27276291 -0.00058724 0.00035984 7.27217568 0.99820589 0.99905293 0.49317310;
+	-6.27276318 -0.00058712 0.00035977 7.27217605 0.99820623 0.99905311 0.49317316;
+	-6.27276344 -0.00058701 0.00035970 7.27217643 0.99820657 0.99905329 0.49317319;
+	-6.27276371 -0.00058690 0.00035963 7.27217681 0.99820691 0.99905347 0.49317321;
+	-6.27276398 -0.00058679 0.00035956 7.27217719 0.99820725 0.99905365 0.49317328;
+	-6.27276424 -0.00058668 0.00035950 7.27217756 0.99820759 0.99905383 0.49317329;
+	-6.27276451 -0.00058657 0.00035943 7.27217794 0.99820793 0.99905400 0.49317335;
+	-6.27276478 -0.00058646 0.00035936 7.27217832 0.99820827 0.99905418 0.49317337;
+	-6.27276504 -0.00058635 0.00035929 7.27217870 0.99820861 0.99905436 0.49317339;
+	-6.27276531 -0.00058623 0.00035922 7.27217907 0.99820895 0.99905454 0.49317346;
+	-6.27276557 -0.00058612 0.00035916 7.27217945 0.99820929 0.99905472 0.49317350;
+	-6.27276584 -0.00058601 0.00035909 7.27217982 0.99820963 0.99905490 0.49317354;
+	-6.27276610 -0.00058590 0.00035902 7.27218020 0.99820997 0.99905508 0.49317358;
+	-6.27276637 -0.00058579 0.00035895 7.27218058 0.99821030 0.99905526 0.49317361;
+	-6.27276663 -0.00058568 0.00035888 7.27218095 0.99821064 0.99905544 0.49317361;
+	-6.27276690 -0.00058557 0.00035882 7.27218133 0.99821098 0.99905562 0.49317370;
+	-6.27276716 -0.00058546 0.00035875 7.27218170 0.99821132 0.99905579 0.49317372;
+	-6.27276743 -0.00058535 0.00035868 7.27218208 0.99821166 0.99905597 0.49317378;
+	-6.27276769 -0.00058524 0.00035861 7.27218246 0.99821200 0.99905615 0.49317376;
+	-6.27276796 -0.00058513 0.00035854 7.27218283 0.99821233 0.99905633 0.49317387;
+	-6.27276822 -0.00058502 0.00035848 7.27218321 0.99821267 0.99905651 0.49317387;
+	-6.27276849 -0.00058491 0.00035841 7.27218358 0.99821301 0.99905669 0.49317394;
+	-6.27276875 -0.00058480 0.00035834 7.27218396 0.99821335 0.99905686 0.49317397;
+	-6.27276902 -0.00058468 0.00035827 7.27218433 0.99821369 0.99905704 0.49317398;
+	-6.27276928 -0.00058457 0.00035820 7.27218471 0.99821402 0.99905722 0.49317402;
+	-6.27276954 -0.00058446 0.00035814 7.27218508 0.99821436 0.99905740 0.49317408;
+	-6.27276981 -0.00058435 0.00035807 7.27218545 0.99821470 0.99905758 0.49317410;
+	-6.27277007 -0.00058424 0.00035800 7.27218583 0.99821504 0.99905775 0.49317417;
+	-6.27277034 -0.00058413 0.00035793 7.27218620 0.99821537 0.99905793 0.49317422;
+	-6.27277060 -0.00058402 0.00035787 7.27218658 0.99821571 0.99905811 0.49317425;
+	-6.27277086 -0.00058391 0.00035780 7.27218695 0.99821605 0.99905829 0.49317429;
+	-6.27277113 -0.00058380 0.00035773 7.27218732 0.99821638 0.99905847 0.49317428;
+	-6.27277139 -0.00058369 0.00035766 7.27218770 0.99821672 0.99905864 0.49317437;
+	-6.27277165 -0.00058358 0.00035760 7.27218807 0.99821706 0.99905882 0.49317446;
+	-6.27277192 -0.00058347 0.00035753 7.27218844 0.99821739 0.99905900 0.49317445;
+	-6.27277218 -0.00058336 0.00035746 7.27218882 0.99821773 0.99905918 0.49317449;
+	-6.27277244 -0.00058325 0.00035739 7.27218919 0.99821806 0.99905935 0.49317453;
+	-6.27277270 -0.00058314 0.00035733 7.27218956 0.99821840 0.99905953 0.49317457;
+	-6.27277297 -0.00058303 0.00035726 7.27218993 0.99821874 0.99905971 0.49317458;
+	-6.27277323 -0.00058292 0.00035719 7.27219031 0.99821907 0.99905988 0.49317467;
+	-6.27277349 -0.00058281 0.00035712 7.27219068 0.99821941 0.99906006 0.49317464;
+	-6.27277376 -0.00058270 0.00035706 7.27219105 0.99821974 0.99906024 0.49317472;
+	-6.27277402 -0.00058259 0.00035699 7.27219142 0.99822008 0.99906042 0.49317476;
+	-6.27277428 -0.00058248 0.00035692 7.27219180 0.99822041 0.99906059 0.49317478;
+	-6.27277454 -0.00058237 0.00035686 7.27219217 0.99822075 0.99906077 0.49317481;
+	-6.27277480 -0.00058227 0.00035679 7.27219254 0.99822108 0.99906095 0.49317486;
+	-6.27277507 -0.00058216 0.00035672 7.27219291 0.99822142 0.99906112 0.49317492;
+	-6.27277533 -0.00058205 0.00035665 7.27219328 0.99822175 0.99906130 0.49317497;
+	-6.27277559 -0.00058194 0.00035659 7.27219365 0.99822209 0.99906148 0.49317500;
+	-6.27277585 -0.00058183 0.00035652 7.27219402 0.99822242 0.99906165 0.49317504;
+	-6.27277611 -0.00058172 0.00035645 7.27219440 0.99822275 0.99906183 0.49317502;
+	-6.27277637 -0.00058161 0.00035639 7.27219477 0.99822309 0.99906200 0.49317510;
+	-6.27277664 -0.00058150 0.00035632 7.27219514 0.99822342 0.99906218 0.49317515;
+	-6.27277690 -0.00058139 0.00035625 7.27219551 0.99822376 0.99906236 0.49317515;
+	-6.27277716 -0.00058128 0.00035619 7.27219588 0.99822409 0.99906253 0.49317527;
+	-6.27277742 -0.00058117 0.00035612 7.27219625 0.99822442 0.99906271 0.49317521;
+	-6.27277768 -0.00058106 0.00035605 7.27219662 0.99822476 0.99906289 0.49317533;
+	-6.27277794 -0.00058095 0.00035598 7.27219699 0.99822509 0.99906306 0.49317536;
+	-6.27277820 -0.00058084 0.00035592 7.27219736 0.99822542 0.99906324 0.49317532;
+	-6.27277846 -0.00058074 0.00035585 7.27219773 0.99822576 0.99906341 0.49317542;
+	-6.27277872 -0.00058063 0.00035578 7.27219810 0.99822609 0.99906359 0.49317544;
+	-6.27277898 -0.00058052 0.00035572 7.27219847 0.99822642 0.99906376 0.49317549;
+	-6.27277924 -0.00058041 0.00035565 7.27219884 0.99822675 0.99906394 0.49317552;
+	-6.27277950 -0.00058030 0.00035558 7.27219920 0.99822709 0.99906412 0.49317558;
+	-6.27277977 -0.00058019 0.00035552 7.27219957 0.99822742 0.99906429 0.49317562;
+	-6.27278003 -0.00058008 0.00035545 7.27219994 0.99822775 0.99906447 0.49317566;
+	-6.27278029 -0.00057997 0.00035538 7.27220031 0.99822808 0.99906464 0.49317568;
+	-6.27278055 -0.00057987 0.00035532 7.27220068 0.99822842 0.99906482 0.49317573;
+	-6.27278080 -0.00057976 0.00035525 7.27220105 0.99822875 0.99906499 0.49317574;
+	-6.27278106 -0.00057965 0.00035518 7.27220142 0.99822908 0.99906517 0.49317581;
+	-6.27278132 -0.00057954 0.00035512 7.27220178 0.99822941 0.99906534 0.49317584;
+	-6.27278158 -0.00057943 0.00035505 7.27220215 0.99822974 0.99906552 0.49317591;
+	-6.27278184 -0.00057932 0.00035498 7.27220252 0.99823008 0.99906569 0.49317591;
+	-6.27278210 -0.00057921 0.00035492 7.27220289 0.99823041 0.99906587 0.49317595;
+	-6.27278236 -0.00057911 0.00035485 7.27220326 0.99823074 0.99906604 0.49317597;
+	-6.27278262 -0.00057900 0.00035479 7.27220362 0.99823107 0.99906622 0.49317601;
+	-6.27278288 -0.00057889 0.00035472 7.27220399 0.99823140 0.99906639 0.49317609;
+	-6.27278314 -0.00057878 0.00035465 7.27220436 0.99823173 0.99906657 0.49317610;
+	-6.27278340 -0.00057867 0.00035459 7.27220472 0.99823206 0.99906674 0.49317615;
+	-6.27278366 -0.00057857 0.00035452 7.27220509 0.99823239 0.99906691 0.49317621;
+	-6.27278392 -0.00057846 0.00035445 7.27220546 0.99823272 0.99906709 0.49317622;
+	-6.27278417 -0.00057835 0.00035439 7.27220582 0.99823305 0.99906726 0.49317632;
+	-6.27278443 -0.00057824 0.00035432 7.27220619 0.99823338 0.99906744 0.49317629;
+	-6.27278469 -0.00057813 0.00035425 7.27220656 0.99823371 0.99906761 0.49317636;
+	-6.27278495 -0.00057802 0.00035419 7.27220692 0.99823404 0.99906779 0.49317638;
+	-6.27278521 -0.00057792 0.00035412 7.27220729 0.99823437 0.99906796 0.49317641;
+	-6.27278547 -0.00057781 0.00035406 7.27220766 0.99823470 0.99906813 0.49317644;
+	-6.27278572 -0.00057770 0.00035399 7.27220802 0.99823503 0.99906831 0.49317646;
+	-6.27278598 -0.00057759 0.00035392 7.27220839 0.99823536 0.99906848 0.49317651;
+	-6.27278624 -0.00057749 0.00035386 7.27220875 0.99823569 0.99906866 0.49317654;
+	-6.27278650 -0.00057738 0.00035379 7.27220912 0.99823602 0.99906883 0.49317660;
+	-6.27278675 -0.00057727 0.00035373 7.27220948 0.99823635 0.99906900 0.49317666;
+	-6.27278701 -0.00057716 0.00035366 7.27220985 0.99823668 0.99906918 0.49317668;
+	-6.27278727 -0.00057706 0.00035359 7.27221021 0.99823701 0.99906935 0.49317676;
+	-6.27278753 -0.00057695 0.00035353 7.27221058 0.99823734 0.99906952 0.49317676;
+	-6.27278778 -0.00057684 0.00035346 7.27221094 0.99823766 0.99906970 0.49317678;
+	-6.27278804 -0.00057673 0.00035340 7.27221131 0.99823799 0.99906987 0.49317683;
+	-6.27278830 -0.00057663 0.00035333 7.27221167 0.99823832 0.99907004 0.49317687;
+	-6.27278855 -0.00057652 0.00035326 7.27221204 0.99823865 0.99907022 0.49317691;
+	-6.27278881 -0.00057641 0.00035320 7.27221240 0.99823898 0.99907039 0.49317697;
+	-6.27278907 -0.00057630 0.00035313 7.27221277 0.99823931 0.99907056 0.49317699;
+	-6.27278933 -0.00057620 0.00035307 7.27221313 0.99823963 0.99907074 0.49317702;
+	-6.27278958 -0.00057609 0.00035300 7.27221349 0.99823996 0.99907091 0.49317708;
+	-6.27278984 -0.00057598 0.00035294 7.27221386 0.99824029 0.99907108 0.49317710;
+	-6.27279009 -0.00057587 0.00035287 7.27221422 0.99824062 0.99907126 0.49317717;
+	-6.27279035 -0.00057577 0.00035280 7.27221458 0.99824094 0.99907143 0.49317720;
+	-6.27279061 -0.00057566 0.00035274 7.27221495 0.99824127 0.99907160 0.49317720;
+	-6.27279086 -0.00057555 0.00035267 7.27221531 0.99824160 0.99907177 0.49317727;
+	-6.27279112 -0.00057545 0.00035261 7.27221567 0.99824193 0.99907195 0.49317735;
+	-6.27279137 -0.00057534 0.00035254 7.27221604 0.99824225 0.99907212 0.49317732;
+	-6.27279163 -0.00057523 0.00035248 7.27221640 0.99824258 0.99907229 0.49317739;
+	-6.27279189 -0.00057513 0.00035241 7.27221676 0.99824291 0.99907246 0.49317738;
+	-6.27279214 -0.00057502 0.00035235 7.27221712 0.99824323 0.99907264 0.49317745;
+	-6.27279240 -0.00057491 0.00035228 7.27221749 0.99824356 0.99907281 0.49317748;
+	-6.27279265 -0.00057480 0.00035221 7.27221785 0.99824389 0.99907298 0.49317752;
+	-6.27279291 -0.00057470 0.00035215 7.27221821 0.99824421 0.99907315 0.49317757;
+	-6.27279316 -0.00057459 0.00035208 7.27221857 0.99824454 0.99907332 0.49317760;
+	-6.27279342 -0.00057448 0.00035202 7.27221893 0.99824486 0.99907350 0.49317764;
+	-6.27279367 -0.00057438 0.00035195 7.27221930 0.99824519 0.99907367 0.49317766;
+	-6.27279393 -0.00057427 0.00035189 7.27221966 0.99824551 0.99907384 0.49317770;
+	-6.27279418 -0.00057417 0.00035182 7.27222002 0.99824584 0.99907401 0.49317777;
+	-6.27279444 -0.00057406 0.00035176 7.27222038 0.99824617 0.99907418 0.49317774;
+	-6.27279469 -0.00057395 0.00035169 7.27222074 0.99824649 0.99907436 0.49317781;
+	-6.27279495 -0.00057385 0.00035163 7.27222110 0.99824682 0.99907453 0.49317792;
+	-6.27279520 -0.00057374 0.00035156 7.27222146 0.99824714 0.99907470 0.49317788;
+	-6.27279546 -0.00057363 0.00035150 7.27222182 0.99824747 0.99907487 0.49317793;
+	-6.27279571 -0.00057353 0.00035143 7.27222218 0.99824779 0.99907504 0.49317800;
+	-6.27279596 -0.00057342 0.00035137 7.27222254 0.99824812 0.99907521 0.49317798;
+	-6.27279622 -0.00057331 0.00035130 7.27222290 0.99824844 0.99907538 0.49317810;
+	-6.27279647 -0.00057321 0.00035124 7.27222326 0.99824877 0.99907556 0.49317811;
+	-6.27279673 -0.00057310 0.00035117 7.27222362 0.99824909 0.99907573 0.49317808;
+	-6.27279698 -0.00057300 0.00035111 7.27222398 0.99824941 0.99907590 0.49317818;
+	-6.27279723 -0.00057289 0.00035104 7.27222434 0.99824974 0.99907607 0.49317820;
+	-6.27279749 -0.00057278 0.00035098 7.27222470 0.99825006 0.99907624 0.49317824;
+	-6.27279774 -0.00057268 0.00035091 7.27222506 0.99825039 0.99907641 0.49317828;
+	-6.27279799 -0.00057257 0.00035085 7.27222542 0.99825071 0.99907658 0.49317828;
+	-6.27279825 -0.00057247 0.00035078 7.27222578 0.99825103 0.99907675 0.49317836;
+	-6.27279850 -0.00057236 0.00035072 7.27222614 0.99825136 0.99907692 0.49317841;
+	-6.27279875 -0.00057225 0.00035065 7.27222650 0.99825168 0.99907709 0.49317844;
+	-6.27279901 -0.00057215 0.00035059 7.27222686 0.99825200 0.99907727 0.49317846;
+	-6.27279926 -0.00057204 0.00035052 7.27222722 0.99825233 0.99907744 0.49317853;
+	-6.27279951 -0.00057194 0.00035046 7.27222758 0.99825265 0.99907761 0.49317855;
+	-6.27279977 -0.00057183 0.00035039 7.27222793 0.99825297 0.99907778 0.49317862;
+	-6.27280002 -0.00057173 0.00035033 7.27222829 0.99825330 0.99907795 0.49317862;
+	-6.27280027 -0.00057162 0.00035026 7.27222865 0.99825362 0.99907812 0.49317865;
+	-6.27280052 -0.00057152 0.00035020 7.27222901 0.99825394 0.99907829 0.49317872;
+	-6.27280078 -0.00057141 0.00035013 7.27222937 0.99825426 0.99907846 0.49317874;
+	-6.27280103 -0.00057130 0.00035007 7.27222972 0.99825459 0.99907863 0.49317875;
+	-6.27280128 -0.00057120 0.00035000 7.27223008 0.99825491 0.99907880 0.49317879;
+	-6.27280153 -0.00057109 0.00034994 7.27223044 0.99825523 0.99907897 0.49317885;
+	-6.27280178 -0.00057099 0.00034987 7.27223080 0.99825555 0.99907914 0.49317886;
+	-6.27280204 -0.00057088 0.00034981 7.27223115 0.99825587 0.99907931 0.49317891;
+	-6.27280229 -0.00057078 0.00034974 7.27223151 0.99825620 0.99907948 0.49317896;
+	-6.27280254 -0.00057067 0.00034968 7.27223187 0.99825652 0.99907965 0.49317901;
+	-6.27280279 -0.00057057 0.00034962 7.27223222 0.99825684 0.99907982 0.49317904;
+	-6.27280304 -0.00057046 0.00034955 7.27223258 0.99825716 0.99907999 0.49317904;
+	-6.27280329 -0.00057036 0.00034949 7.27223294 0.99825748 0.99908016 0.49317910;
+	-6.27280355 -0.00057025 0.00034942 7.27223329 0.99825780 0.99908033 0.49317919;
+	-6.27280380 -0.00057015 0.00034936 7.27223365 0.99825812 0.99908050 0.49317919;
+	-6.27280405 -0.00057004 0.00034929 7.27223401 0.99825844 0.99908066 0.49317919;
+	-6.27280430 -0.00056994 0.00034923 7.27223436 0.99825877 0.99908083 0.49317929;
+	-6.27280455 -0.00056983 0.00034916 7.27223472 0.99825909 0.99908100 0.49317932;
+	-6.27280480 -0.00056973 0.00034910 7.27223507 0.99825941 0.99908117 0.49317933;
+	-6.27280505 -0.00056962 0.00034904 7.27223543 0.99825973 0.99908134 0.49317936;
+	-6.27280530 -0.00056952 0.00034897 7.27223579 0.99826005 0.99908151 0.49317942;
+	-6.27280555 -0.00056941 0.00034891 7.27223614 0.99826037 0.99908168 0.49317941;
+	-6.27280580 -0.00056931 0.00034884 7.27223650 0.99826069 0.99908185 0.49317944;
+	-6.27280606 -0.00056920 0.00034878 7.27223685 0.99826101 0.99908202 0.49317951;
+	-6.27280631 -0.00056910 0.00034872 7.27223721 0.99826133 0.99908219 0.49317958;
+	-6.27280656 -0.00056899 0.00034865 7.27223756 0.99826165 0.99908235 0.49317962;
+	-6.27280681 -0.00056889 0.00034859 7.27223792 0.99826197 0.99908252 0.49317961;
+	-6.27280706 -0.00056878 0.00034852 7.27223827 0.99826229 0.99908269 0.49317963;
+	-6.27280731 -0.00056868 0.00034846 7.27223863 0.99826261 0.99908286 0.49317970;
+	-6.27280756 -0.00056858 0.00034839 7.27223898 0.99826293 0.99908303 0.49317974;
+	-6.27280781 -0.00056847 0.00034833 7.27223933 0.99826324 0.99908320 0.49317978;
+	-6.27280806 -0.00056837 0.00034827 7.27223969 0.99826356 0.99908337 0.49317977;
+	-6.27280830 -0.00056826 0.00034820 7.27224004 0.99826388 0.99908353 0.49317984;
+	-6.27280855 -0.00056816 0.00034814 7.27224040 0.99826420 0.99908370 0.49317991;
+	-6.27280880 -0.00056805 0.00034807 7.27224075 0.99826452 0.99908387 0.49317993;
+	-6.27280905 -0.00056795 0.00034801 7.27224110 0.99826484 0.99908404 0.49317997;
+	-6.27280930 -0.00056785 0.00034795 7.27224146 0.99826516 0.99908421 0.49317999;
+	-6.27280955 -0.00056774 0.00034788 7.27224181 0.99826547 0.99908438 0.49318004;
+	-6.27280980 -0.00056764 0.00034782 7.27224216 0.99826579 0.99908454 0.49318009;
+	-6.27281005 -0.00056753 0.00034776 7.27224252 0.99826611 0.99908471 0.49318013;
+	-6.27281030 -0.00056743 0.00034769 7.27224287 0.99826643 0.99908488 0.49318014;
+	-6.27281055 -0.00056733 0.00034763 7.27224322 0.99826675 0.99908505 0.49318020;
+	-6.27281080 -0.00056722 0.00034756 7.27224357 0.99826706 0.99908521 0.49318023;
+	-6.27281104 -0.00056712 0.00034750 7.27224393 0.99826738 0.99908538 0.49318021;
+	-6.27281129 -0.00056701 0.00034744 7.27224428 0.99826770 0.99908555 0.49318033;
+	-6.27281154 -0.00056691 0.00034737 7.27224463 0.99826802 0.99908572 0.49318033;
+	-6.27281179 -0.00056681 0.00034731 7.27224498 0.99826833 0.99908588 0.49318036;
+	-6.27281204 -0.00056670 0.00034725 7.27224534 0.99826865 0.99908605 0.49318042;
+	-6.27281229 -0.00056660 0.00034718 7.27224569 0.99826897 0.99908622 0.49318046;
+	-6.27281253 -0.00056649 0.00034712 7.27224604 0.99826929 0.99908639 0.49318048;
+	-6.27281278 -0.00056639 0.00034706 7.27224639 0.99826960 0.99908655 0.49318053;
+	-6.27281303 -0.00056629 0.00034699 7.27224674 0.99826992 0.99908672 0.49318056;
+	-6.27281328 -0.00056618 0.00034693 7.27224709 0.99827024 0.99908689 0.49318059;
+	-6.27281353 -0.00056608 0.00034686 7.27224745 0.99827055 0.99908705 0.49318066;
+	-6.27281377 -0.00056598 0.00034680 7.27224780 0.99827087 0.99908722 0.49318067;
+	-6.27281402 -0.00056587 0.00034674 7.27224815 0.99827119 0.99908739 0.49318073;
+	-6.27281427 -0.00056577 0.00034667 7.27224850 0.99827150 0.99908756 0.49318072;
+	-6.27281452 -0.00056567 0.00034661 7.27224885 0.99827182 0.99908772 0.49318077;
+	-6.27281476 -0.00056556 0.00034655 7.27224920 0.99827213 0.99908789 0.49318079;
+	-6.27281501 -0.00056546 0.00034648 7.27224955 0.99827245 0.99908806 0.49318086;
+	-6.27281526 -0.00056536 0.00034642 7.27224990 0.99827276 0.99908822 0.49318086;
+	-6.27281550 -0.00056525 0.00034636 7.27225025 0.99827308 0.99908839 0.49318091;
+	-6.27281575 -0.00056515 0.00034629 7.27225060 0.99827340 0.99908856 0.49318093;
+	-6.27281600 -0.00056505 0.00034623 7.27225095 0.99827371 0.99908872 0.49318097;
+	-6.27281624 -0.00056494 0.00034617 7.27225130 0.99827403 0.99908889 0.49318102;
+	-6.27281649 -0.00056484 0.00034610 7.27225165 0.99827434 0.99908905 0.49318109;
+	-6.27281674 -0.00056474 0.00034604 7.27225200 0.99827466 0.99908922 0.49318111;
+	-6.27281698 -0.00056463 0.00034598 7.27225235 0.99827497 0.99908939 0.49318114;
+	-6.27281723 -0.00056453 0.00034592 7.27225270 0.99827529 0.99908955 0.49318118;
+	-6.27281748 -0.00056443 0.00034585 7.27225305 0.99827560 0.99908972 0.49318122;
+	-6.27281772 -0.00056433 0.00034579 7.27225340 0.99827591 0.99908988 0.49318124;
+	-6.27281797 -0.00056422 0.00034573 7.27225375 0.99827623 0.99909005 0.49318128;
+	-6.27281822 -0.00056412 0.00034566 7.27225409 0.99827654 0.99909022 0.49318131;
+	-6.27281846 -0.00056402 0.00034560 7.27225444 0.99827686 0.99909038 0.49318135;
+	-6.27281871 -0.00056391 0.00034554 7.27225479 0.99827717 0.99909055 0.49318140;
+	-6.27281895 -0.00056381 0.00034547 7.27225514 0.99827749 0.99909071 0.49318139;
+	-6.27281920 -0.00056371 0.00034541 7.27225549 0.99827780 0.99909088 0.49318148;
+	-6.27281944 -0.00056361 0.00034535 7.27225584 0.99827811 0.99909105 0.49318152;
+	-6.27281969 -0.00056350 0.00034528 7.27225619 0.99827843 0.99909121 0.49318156;
+	-6.27281993 -0.00056340 0.00034522 7.27225653 0.99827874 0.99909138 0.49318159;
+	-6.27282018 -0.00056330 0.00034516 7.27225688 0.99827905 0.99909154 0.49318163;
+	-6.27282043 -0.00056320 0.00034510 7.27225723 0.99827937 0.99909171 0.49318166;
+	-6.27282067 -0.00056309 0.00034503 7.27225758 0.99827968 0.99909187 0.49318168;
+	-6.27282092 -0.00056299 0.00034497 7.27225792 0.99827999 0.99909204 0.49318179;
+	-6.27282116 -0.00056289 0.00034491 7.27225827 0.99828031 0.99909220 0.49318171;
+	-6.27282141 -0.00056279 0.00034485 7.27225862 0.99828062 0.99909237 0.49318177;
+	-6.27282165 -0.00056268 0.00034478 7.27225897 0.99828093 0.99909253 0.49318188;
+	-6.27282189 -0.00056258 0.00034472 7.27225931 0.99828124 0.99909270 0.49318185;
+	-6.27282214 -0.00056248 0.00034466 7.27225966 0.99828156 0.99909286 0.49318190;
+	-6.27282238 -0.00056238 0.00034459 7.27226001 0.99828187 0.99909303 0.49318196;
+	-6.27282263 -0.00056228 0.00034453 7.27226035 0.99828218 0.99909319 0.49318197;
+	-6.27282287 -0.00056217 0.00034447 7.27226070 0.99828249 0.99909336 0.49318203;
+	-6.27282312 -0.00056207 0.00034441 7.27226104 0.99828281 0.99909352 0.49318204;
+	-6.27282336 -0.00056197 0.00034434 7.27226139 0.99828312 0.99909369 0.49318210;
+	-6.27282360 -0.00056187 0.00034428 7.27226174 0.99828343 0.99909385 0.49318213;
+	-6.27282385 -0.00056177 0.00034422 7.27226208 0.99828374 0.99909402 0.49318217;
+	-6.27282409 -0.00056166 0.00034416 7.27226243 0.99828405 0.99909418 0.49318219;
+	-6.27282434 -0.00056156 0.00034409 7.27226277 0.99828436 0.99909434 0.49318217;
+	-6.27282458 -0.00056146 0.00034403 7.27226312 0.99828467 0.99909451 0.49318229;
+	-6.27282482 -0.00056136 0.00034397 7.27226347 0.99828499 0.99909467 0.49318235;
+	-6.27282507 -0.00056126 0.00034391 7.27226381 0.99828530 0.99909484 0.49318234;
+	-6.27282531 -0.00056115 0.00034384 7.27226416 0.99828561 0.99909500 0.49318238;
+	-6.27282555 -0.00056105 0.00034378 7.27226450 0.99828592 0.99909516 0.49318244;
+	-6.27282580 -0.00056095 0.00034372 7.27226485 0.99828623 0.99909533 0.49318245;
+	-6.27282604 -0.00056085 0.00034366 7.27226519 0.99828654 0.99909549 0.49318251;
+	-6.27282628 -0.00056075 0.00034360 7.27226554 0.99828685 0.99909566 0.49318249;
+	-6.27282653 -0.00056065 0.00034353 7.27226588 0.99828716 0.99909582 0.49318260;
+	-6.27282677 -0.00056055 0.00034347 7.27226622 0.99828747 0.99909598 0.49318256;
+	-6.27282701 -0.00056044 0.00034341 7.27226657 0.99828778 0.99909615 0.49318268;
+	-6.27282725 -0.00056034 0.00034335 7.27226691 0.99828809 0.99909631 0.49318269;
+	-6.27282750 -0.00056024 0.00034328 7.27226726 0.99828840 0.99909648 0.49318273;
+	-6.27282774 -0.00056014 0.00034322 7.27226760 0.99828871 0.99909664 0.49318276;
+	-6.27282798 -0.00056004 0.00034316 7.27226794 0.99828902 0.99909680 0.49318278;
+	-6.27282822 -0.00055994 0.00034310 7.27226829 0.99828933 0.99909697 0.49318281;
+	-6.27282847 -0.00055984 0.00034304 7.27226863 0.99828964 0.99909713 0.49318285;
+	-6.27282871 -0.00055973 0.00034297 7.27226898 0.99828995 0.99909729 0.49318289;
+	-6.27282895 -0.00055963 0.00034291 7.27226932 0.99829026 0.99909746 0.49318294;
+	-6.27282919 -0.00055953 0.00034285 7.27226966 0.99829057 0.99909762 0.49318296;
+	-6.27282944 -0.00055943 0.00034279 7.27227000 0.99829088 0.99909778 0.49318295;
+	-6.27282968 -0.00055933 0.00034273 7.27227035 0.99829119 0.99909794 0.49318302;
+	-6.27282992 -0.00055923 0.00034266 7.27227069 0.99829150 0.99909811 0.49318310;
+	-6.27283016 -0.00055913 0.00034260 7.27227103 0.99829180 0.99909827 0.49318311;
+	-6.27283040 -0.00055903 0.00034254 7.27227138 0.99829211 0.99909843 0.49318314;
+	-6.27283064 -0.00055893 0.00034248 7.27227172 0.99829242 0.99909860 0.49318318;
+	-6.27283089 -0.00055882 0.00034242 7.27227206 0.99829273 0.99909876 0.49318320;
+	-6.27283113 -0.00055872 0.00034235 7.27227240 0.99829304 0.99909892 0.49318320;
+	-6.27283137 -0.00055862 0.00034229 7.27227274 0.99829335 0.99909908 0.49318327;
+	-6.27283161 -0.00055852 0.00034223 7.27227309 0.99829365 0.99909925 0.49318333;
+	-6.27283185 -0.00055842 0.00034217 7.27227343 0.99829396 0.99909941 0.49318333;
+	-6.27283209 -0.00055832 0.00034211 7.27227377 0.99829427 0.99909957 0.49318336;
+	-6.27283233 -0.00055822 0.00034204 7.27227411 0.99829458 0.99909973 0.49318343;
+	-6.27283257 -0.00055812 0.00034198 7.27227445 0.99829489 0.99909990 0.49318344;
+	-6.27283281 -0.00055802 0.00034192 7.27227479 0.99829519 0.99910006 0.49318351;
+	-6.27283305 -0.00055792 0.00034186 7.27227514 0.99829550 0.99910022 0.49318353;
+	-6.27283329 -0.00055782 0.00034180 7.27227548 0.99829581 0.99910038 0.49318358;
+	-6.27283353 -0.00055772 0.00034174 7.27227582 0.99829611 0.99910055 0.49318362;
+	-6.27283378 -0.00055762 0.00034168 7.27227616 0.99829642 0.99910071 0.49318360;
+	-6.27283402 -0.00055752 0.00034161 7.27227650 0.99829673 0.99910087 0.49318367;
+	-6.27283426 -0.00055742 0.00034155 7.27227684 0.99829704 0.99910103 0.49318371;
+	-6.27283450 -0.00055732 0.00034149 7.27227718 0.99829734 0.99910119 0.49318374;
+	-6.27283474 -0.00055722 0.00034143 7.27227752 0.99829765 0.99910136 0.49318380;
+	-6.27283498 -0.00055712 0.00034137 7.27227786 0.99829796 0.99910152 0.49318376;
+	-6.27283522 -0.00055701 0.00034131 7.27227820 0.99829826 0.99910168 0.49318386;
+	-6.27283546 -0.00055691 0.00034124 7.27227854 0.99829857 0.99910184 0.49318389;
+	-6.27283570 -0.00055681 0.00034118 7.27227888 0.99829887 0.99910200 0.49318390;
+	-6.27283593 -0.00055671 0.00034112 7.27227922 0.99829918 0.99910216 0.49318396;
+	-6.27283617 -0.00055661 0.00034106 7.27227956 0.99829949 0.99910233 0.49318401;
+	-6.27283641 -0.00055651 0.00034100 7.27227990 0.99829979 0.99910249 0.49318410;
+	-6.27283665 -0.00055641 0.00034094 7.27228024 0.99830010 0.99910265 0.49318407;
+	-6.27283689 -0.00055631 0.00034088 7.27228058 0.99830040 0.99910281 0.49318407;
+	-6.27283713 -0.00055621 0.00034081 7.27228092 0.99830071 0.99910297 0.49318414;
+	-6.27283737 -0.00055611 0.00034075 7.27228126 0.99830101 0.99910313 0.49318415;
+	-6.27283761 -0.00055601 0.00034069 7.27228159 0.99830132 0.99910329 0.49318423;
+	-6.27283785 -0.00055591 0.00034063 7.27228193 0.99830163 0.99910345 0.49318423;
+	-6.27283809 -0.00055581 0.00034057 7.27228227 0.99830193 0.99910362 0.49318427;
+	-6.27283833 -0.00055571 0.00034051 7.27228261 0.99830224 0.99910378 0.49318428;
+	-6.27283856 -0.00055562 0.00034045 7.27228295 0.99830254 0.99910394 0.49318433;
+	-6.27283880 -0.00055552 0.00034039 7.27228329 0.99830285 0.99910410 0.49318443;
+	-6.27283904 -0.00055542 0.00034033 7.27228363 0.99830315 0.99910426 0.49318443;
+	-6.27283928 -0.00055532 0.00034026 7.27228396 0.99830345 0.99910442 0.49318449;
+	-6.27283952 -0.00055522 0.00034020 7.27228430 0.99830376 0.99910458 0.49318449;
+	-6.27283976 -0.00055512 0.00034014 7.27228464 0.99830406 0.99910474 0.49318454;
+	-6.27283999 -0.00055502 0.00034008 7.27228498 0.99830437 0.99910490 0.49318457;
+	-6.27284023 -0.00055492 0.00034002 7.27228531 0.99830467 0.99910506 0.49318459;
+	-6.27284047 -0.00055482 0.00033996 7.27228565 0.99830498 0.99910522 0.49318460;
+	-6.27284071 -0.00055472 0.00033990 7.27228599 0.99830528 0.99910538 0.49318465;
+	-6.27284095 -0.00055462 0.00033984 7.27228633 0.99830558 0.99910554 0.49318472;
+	-6.27284118 -0.00055452 0.00033978 7.27228666 0.99830589 0.99910570 0.49318477;
+	-6.27284142 -0.00055442 0.00033972 7.27228700 0.99830619 0.99910586 0.49318479;
+	-6.27284166 -0.00055432 0.00033965 7.27228734 0.99830649 0.99910602 0.49318483;
+	-6.27284190 -0.00055422 0.00033959 7.27228767 0.99830680 0.99910618 0.49318487;
+	-6.27284213 -0.00055412 0.00033953 7.27228801 0.99830710 0.99910634 0.49318489;
+	-6.27284237 -0.00055402 0.00033947 7.27228835 0.99830740 0.99910650 0.49318490;
+	-6.27284261 -0.00055393 0.00033941 7.27228868 0.99830771 0.99910666 0.49318496;
+	-6.27284285 -0.00055383 0.00033935 7.27228902 0.99830801 0.99910682 0.49318499;
+	-6.27284308 -0.00055373 0.00033929 7.27228936 0.99830831 0.99910698 0.49318499;
+	-6.27284332 -0.00055363 0.00033923 7.27228969 0.99830861 0.99910714 0.49318509;
+	-6.27284356 -0.00055353 0.00033917 7.27229003 0.99830892 0.99910730 0.49318511;
+	-6.27284379 -0.00055343 0.00033911 7.27229036 0.99830922 0.99910746 0.49318515;
+	-6.27284403 -0.00055333 0.00033905 7.27229070 0.99830952 0.99910762 0.49318516;
+	-6.27284427 -0.00055323 0.00033899 7.27229103 0.99830982 0.99910778 0.49318524;
+	-6.27284450 -0.00055313 0.00033893 7.27229137 0.99831013 0.99910794 0.49318524;
+	-6.27284474 -0.00055303 0.00033887 7.27229170 0.99831043 0.99910810 0.49318528;
+	-6.27284498 -0.00055294 0.00033880 7.27229204 0.99831073 0.99910826 0.49318529;
+	-6.27284521 -0.00055284 0.00033874 7.27229237 0.99831103 0.99910842 0.49318533;
+	-6.27284545 -0.00055274 0.00033868 7.27229271 0.99831133 0.99910858 0.49318539;
+	-6.27284568 -0.00055264 0.00033862 7.27229304 0.99831164 0.99910874 0.49318542;
+	-6.27284592 -0.00055254 0.00033856 7.27229338 0.99831194 0.99910890 0.49318543;
+	-6.27284616 -0.00055244 0.00033850 7.27229371 0.99831224 0.99910906 0.49318547;
+	-6.27284639 -0.00055234 0.00033844 7.27229405 0.99831254 0.99910921 0.49318555;
+	-6.27284663 -0.00055225 0.00033838 7.27229438 0.99831284 0.99910937 0.49318557;
+	-6.27284686 -0.00055215 0.00033832 7.27229472 0.99831314 0.99910953 0.49318561;
+	-6.27284710 -0.00055205 0.00033826 7.27229505 0.99831344 0.99910969 0.49318565;
+	-6.27284733 -0.00055195 0.00033820 7.27229538 0.99831374 0.99910985 0.49318570;
+	-6.27284757 -0.00055185 0.00033814 7.27229572 0.99831404 0.99911001 0.49318569;
+	-6.27284781 -0.00055175 0.00033808 7.27229605 0.99831435 0.99911017 0.49318574;
+	-6.27284804 -0.00055165 0.00033802 7.27229639 0.99831465 0.99911033 0.49318575;
+	-6.27284828 -0.00055156 0.00033796 7.27229672 0.99831495 0.99911048 0.49318581;
+	-6.27284851 -0.00055146 0.00033790 7.27229705 0.99831525 0.99911064 0.49318582;
+	-6.27284875 -0.00055136 0.00033784 7.27229739 0.99831555 0.99911080 0.49318586;
+	-6.27284898 -0.00055126 0.00033778 7.27229772 0.99831585 0.99911096 0.49318588;
+	-6.27284922 -0.00055116 0.00033772 7.27229805 0.99831615 0.99911112 0.49318595;
+	-6.27284945 -0.00055107 0.00033766 7.27229838 0.99831645 0.99911128 0.49318599;
+	-6.27284968 -0.00055097 0.00033760 7.27229872 0.99831675 0.99911143 0.49318604;
+	-6.27284992 -0.00055087 0.00033754 7.27229905 0.99831705 0.99911159 0.49318604;
+	-6.27285015 -0.00055077 0.00033748 7.27229938 0.99831735 0.99911175 0.49318612;
+	-6.27285039 -0.00055067 0.00033742 7.27229971 0.99831765 0.99911191 0.49318613;
+	-6.27285062 -0.00055058 0.00033736 7.27230005 0.99831794 0.99911207 0.49318622;
+	-6.27285086 -0.00055048 0.00033730 7.27230038 0.99831824 0.99911223 0.49318623;
+	-6.27285109 -0.00055038 0.00033724 7.27230071 0.99831854 0.99911238 0.49318626;
+	-6.27285133 -0.00055028 0.00033718 7.27230104 0.99831884 0.99911254 0.49318626;
+	-6.27285156 -0.00055018 0.00033712 7.27230138 0.99831914 0.99911270 0.49318628;
+	-6.27285179 -0.00055009 0.00033706 7.27230171 0.99831944 0.99911286 0.49318633;
+	-6.27285203 -0.00054999 0.00033700 7.27230204 0.99831974 0.99911301 0.49318637;
+	-6.27285226 -0.00054989 0.00033694 7.27230237 0.99832004 0.99911317 0.49318637;
+	-6.27285249 -0.00054979 0.00033688 7.27230270 0.99832034 0.99911333 0.49318644;
+	-6.27285273 -0.00054970 0.00033682 7.27230303 0.99832063 0.99911349 0.49318645;
+	-6.27285296 -0.00054960 0.00033676 7.27230336 0.99832093 0.99911364 0.49318646;
+	-6.27285319 -0.00054950 0.00033670 7.27230369 0.99832123 0.99911380 0.49318651;
+	-6.27285343 -0.00054940 0.00033664 7.27230403 0.99832153 0.99911396 0.49318650;
+	-6.27285366 -0.00054931 0.00033658 7.27230436 0.99832183 0.99911412 0.49318659;
+	-6.27285389 -0.00054921 0.00033652 7.27230469 0.99832212 0.99911427 0.49318666;
+	-6.27285413 -0.00054911 0.00033646 7.27230502 0.99832242 0.99911443 0.49318665;
+	-6.27285436 -0.00054901 0.00033640 7.27230535 0.99832272 0.99911459 0.49318670;
+	-6.27285459 -0.00054892 0.00033634 7.27230568 0.99832302 0.99911474 0.49318673;
+	-6.27285483 -0.00054882 0.00033628 7.27230601 0.99832332 0.99911490 0.49318677;
+	-6.27285506 -0.00054872 0.00033622 7.27230634 0.99832361 0.99911506 0.49318685;
+	-6.27285529 -0.00054862 0.00033616 7.27230667 0.99832391 0.99911522 0.49318683;
+	-6.27285552 -0.00054853 0.00033610 7.27230700 0.99832421 0.99911537 0.49318692;
+	-6.27285576 -0.00054843 0.00033604 7.27230733 0.99832450 0.99911553 0.49318690;
+	-6.27285599 -0.00054833 0.00033598 7.27230766 0.99832480 0.99911569 0.49318694;
+	-6.27285622 -0.00054824 0.00033592 7.27230799 0.99832510 0.99911584 0.49318700;
+	-6.27285645 -0.00054814 0.00033586 7.27230832 0.99832539 0.99911600 0.49318701;
+	-6.27285669 -0.00054804 0.00033580 7.27230865 0.99832569 0.99911616 0.49318705;
+	-6.27285692 -0.00054794 0.00033574 7.27230897 0.99832599 0.99911631 0.49318711;
+	-6.27285715 -0.00054785 0.00033568 7.27230930 0.99832628 0.99911647 0.49318708;
+	-6.27285738 -0.00054775 0.00033563 7.27230963 0.99832658 0.99911662 0.49318719;
+	-6.27285761 -0.00054765 0.00033557 7.27230996 0.99832688 0.99911678 0.49318717;
+	-6.27285785 -0.00054756 0.00033551 7.27231029 0.99832717 0.99911694 0.49318724;
+	-6.27285808 -0.00054746 0.00033545 7.27231062 0.99832747 0.99911709 0.49318723;
+	-6.27285831 -0.00054736 0.00033539 7.27231095 0.99832776 0.99911725 0.49318729;
+	-6.27285854 -0.00054727 0.00033533 7.27231127 0.99832806 0.99911741 0.49318737;
+	-6.27285877 -0.00054717 0.00033527 7.27231160 0.99832836 0.99911756 0.49318736;
+	-6.27285900 -0.00054707 0.00033521 7.27231193 0.99832865 0.99911772 0.49318737;
+	-6.27285923 -0.00054698 0.00033515 7.27231226 0.99832895 0.99911787 0.49318744;
+	-6.27285947 -0.00054688 0.00033509 7.27231259 0.99832924 0.99911803 0.49318747;
+	-6.27285970 -0.00054678 0.00033503 7.27231291 0.99832954 0.99911819 0.49318750;
+	-6.27285993 -0.00054669 0.00033497 7.27231324 0.99832983 0.99911834 0.49318752;
+	-6.27286016 -0.00054659 0.00033491 7.27231357 0.99833013 0.99911850 0.49318756;
+	-6.27286039 -0.00054649 0.00033485 7.27231390 0.99833042 0.99911865 0.49318760;
+	-6.27286062 -0.00054640 0.00033480 7.27231422 0.99833072 0.99911881 0.49318765;
+	-6.27286085 -0.00054630 0.00033474 7.27231455 0.99833101 0.99911896 0.49318766;
+	-6.27286108 -0.00054620 0.00033468 7.27231488 0.99833131 0.99911912 0.49318767;
+	-6.27286131 -0.00054611 0.00033462 7.27231521 0.99833160 0.99911927 0.49318769;
+	-6.27286154 -0.00054601 0.00033456 7.27231553 0.99833190 0.99911943 0.49318777;
+	-6.27286177 -0.00054591 0.00033450 7.27231586 0.99833219 0.99911959 0.49318778;
+	-6.27286200 -0.00054582 0.00033444 7.27231619 0.99833248 0.99911974 0.49318783;
+	-6.27286223 -0.00054572 0.00033438 7.27231651 0.99833278 0.99911990 0.49318785;
+	-6.27286246 -0.00054563 0.00033432 7.27231684 0.99833307 0.99912005 0.49318790;
+	-6.27286269 -0.00054553 0.00033426 7.27231716 0.99833337 0.99912021 0.49318796;
+	-6.27286292 -0.00054543 0.00033420 7.27231749 0.99833366 0.99912036 0.49318798;
+	-6.27286315 -0.00054534 0.00033415 7.27231782 0.99833395 0.99912052 0.49318802;
+	-6.27286338 -0.00054524 0.00033409 7.27231814 0.99833425 0.99912067 0.49318801;
+	-6.27286361 -0.00054515 0.00033403 7.27231847 0.99833454 0.99912083 0.49318810;
+	-6.27286384 -0.00054505 0.00033397 7.27231879 0.99833483 0.99912098 0.49318815;
+	-6.27286407 -0.00054495 0.00033391 7.27231912 0.99833513 0.99912114 0.49318815;
+	-6.27286430 -0.00054486 0.00033385 7.27231944 0.99833542 0.99912129 0.49318821;
+	-6.27286453 -0.00054476 0.00033379 7.27231977 0.99833571 0.99912145 0.49318820;
+	-6.27286476 -0.00054467 0.00033373 7.27232010 0.99833601 0.99912160 0.49318828;
+	-6.27286499 -0.00054457 0.00033368 7.27232042 0.99833630 0.99912175 0.49318827;
+	-6.27286522 -0.00054447 0.00033362 7.27232075 0.99833659 0.99912191 0.49318830;
+	-6.27286545 -0.00054438 0.00033356 7.27232107 0.99833689 0.99912206 0.49318834;
+	-6.27286568 -0.00054428 0.00033350 7.27232139 0.99833718 0.99912222 0.49318840;
+	-6.27286591 -0.00054419 0.00033344 7.27232172 0.99833747 0.99912237 0.49318849;
+	-6.27286614 -0.00054409 0.00033338 7.27232204 0.99833776 0.99912253 0.49318845;
+	-6.27286636 -0.00054400 0.00033332 7.27232237 0.99833805 0.99912268 0.49318852;
+	-6.27286659 -0.00054390 0.00033326 7.27232269 0.99833835 0.99912283 0.49318851;
+	-6.27286682 -0.00054380 0.00033321 7.27232302 0.99833864 0.99912299 0.49318855;
+	-6.27286705 -0.00054371 0.00033315 7.27232334 0.99833893 0.99912314 0.49318857;
+	-6.27286728 -0.00054361 0.00033309 7.27232366 0.99833922 0.99912330 0.49318863;
+	-6.27286751 -0.00054352 0.00033303 7.27232399 0.99833951 0.99912345 0.49318865;
+	-6.27286774 -0.00054342 0.00033297 7.27232431 0.99833981 0.99912360 0.49318871;
+	-6.27286796 -0.00054333 0.00033291 7.27232464 0.99834010 0.99912376 0.49318871;
+	-6.27286819 -0.00054323 0.00033286 7.27232496 0.99834039 0.99912391 0.49318882;
+	-6.27286842 -0.00054314 0.00033280 7.27232528 0.99834068 0.99912407 0.49318885;
+	-6.27286865 -0.00054304 0.00033274 7.27232561 0.99834097 0.99912422 0.49318882;
+	-6.27286888 -0.00054295 0.00033268 7.27232593 0.99834126 0.99912437 0.49318888;
+	-6.27286910 -0.00054285 0.00033262 7.27232625 0.99834155 0.99912453 0.49318890;
+	-6.27286933 -0.00054276 0.00033256 7.27232657 0.99834184 0.99912468 0.49318892;
+	-6.27286956 -0.00054266 0.00033250 7.27232690 0.99834214 0.99912483 0.49318896;
+	-6.27286979 -0.00054257 0.00033245 7.27232722 0.99834243 0.99912499 0.49318900;
+	-6.27287001 -0.00054247 0.00033239 7.27232754 0.99834272 0.99912514 0.49318899;
+	-6.27287024 -0.00054238 0.00033233 7.27232787 0.99834301 0.99912529 0.49318908;
+	-6.27287047 -0.00054228 0.00033227 7.27232819 0.99834330 0.99912545 0.49318910;
+	-6.27287070 -0.00054219 0.00033221 7.27232851 0.99834359 0.99912560 0.49318913;
+	-6.27287092 -0.00054209 0.00033216 7.27232883 0.99834388 0.99912575 0.49318913;
+	-6.27287115 -0.00054200 0.00033210 7.27232915 0.99834417 0.99912591 0.49318919;
+	-6.27287138 -0.00054190 0.00033204 7.27232948 0.99834446 0.99912606 0.49318918;
+	-6.27287160 -0.00054181 0.00033198 7.27232980 0.99834475 0.99912621 0.49318924;
+	-6.27287183 -0.00054171 0.00033192 7.27233012 0.99834504 0.99912637 0.49318928;
+	-6.27287206 -0.00054162 0.00033186 7.27233044 0.99834533 0.99912652 0.49318937;
+	-6.27287228 -0.00054152 0.00033181 7.27233076 0.99834562 0.99912667 0.49318939;
+	-6.27287251 -0.00054143 0.00033175 7.27233108 0.99834591 0.99912682 0.49318942;
+	-6.27287274 -0.00054133 0.00033169 7.27233140 0.99834620 0.99912698 0.49318944;
+	-6.27287296 -0.00054124 0.00033163 7.27233173 0.99834649 0.99912713 0.49318945;
+	-6.27287319 -0.00054114 0.00033157 7.27233205 0.99834677 0.99912728 0.49318948;
+	-6.27287342 -0.00054105 0.00033152 7.27233237 0.99834706 0.99912744 0.49318948;
+	-6.27287364 -0.00054095 0.00033146 7.27233269 0.99834735 0.99912759 0.49318960;
+	-6.27287387 -0.00054086 0.00033140 7.27233301 0.99834764 0.99912774 0.49318965;
+	-6.27287409 -0.00054076 0.00033134 7.27233333 0.99834793 0.99912789 0.49318963;
+	-6.27287432 -0.00054067 0.00033128 7.27233365 0.99834822 0.99912805 0.49318967;
+	-6.27287455 -0.00054058 0.00033123 7.27233397 0.99834851 0.99912820 0.49318974;
+	-6.27287477 -0.00054048 0.00033117 7.27233429 0.99834880 0.99912835 0.49318975;
+	-6.27287500 -0.00054039 0.00033111 7.27233461 0.99834908 0.99912850 0.49318982;
+	-6.27287522 -0.00054029 0.00033105 7.27233493 0.99834937 0.99912865 0.49318976;
+	-6.27287545 -0.00054020 0.00033100 7.27233525 0.99834966 0.99912881 0.49318982;
+	-6.27287568 -0.00054010 0.00033094 7.27233557 0.99834995 0.99912896 0.49318990;
+	-6.27287590 -0.00054001 0.00033088 7.27233589 0.99835024 0.99912911 0.49318991;
+	-6.27287613 -0.00053992 0.00033082 7.27233621 0.99835052 0.99912926 0.49318988;
+	-6.27287635 -0.00053982 0.00033076 7.27233653 0.99835081 0.99912941 0.49319001;
+	-6.27287658 -0.00053973 0.00033071 7.27233685 0.99835110 0.99912957 0.49318998;
+	-6.27287680 -0.00053963 0.00033065 7.27233717 0.99835139 0.99912972 0.49319007;
+	-6.27287703 -0.00053954 0.00033059 7.27233749 0.99835168 0.99912987 0.49319009;
+	-6.27287725 -0.00053945 0.00033053 7.27233781 0.99835196 0.99913002 0.49319013;
+	-6.27287748 -0.00053935 0.00033048 7.27233812 0.99835225 0.99913017 0.49319012;
+	-6.27287770 -0.00053926 0.00033042 7.27233844 0.99835254 0.99913032 0.49319022;
+	-6.27287793 -0.00053916 0.00033036 7.27233876 0.99835282 0.99913048 0.49319019;
+	-6.27287815 -0.00053907 0.00033030 7.27233908 0.99835311 0.99913063 0.49319021;
+	-6.27287838 -0.00053898 0.00033025 7.27233940 0.99835340 0.99913078 0.49319029;
+	-6.27287860 -0.00053888 0.00033019 7.27233972 0.99835368 0.99913093 0.49319029;
+	-6.27287882 -0.00053879 0.00033013 7.27234004 0.99835397 0.99913108 0.49319033;
+	-6.27287905 -0.00053869 0.00033007 7.27234035 0.99835426 0.99913123 0.49319038;
+	-6.27287927 -0.00053860 0.00033002 7.27234067 0.99835454 0.99913138 0.49319044;
+	-6.27287950 -0.00053851 0.00032996 7.27234099 0.99835483 0.99913153 0.49319044;
+	-6.27287972 -0.00053841 0.00032990 7.27234131 0.99835512 0.99913169 0.49319052;
+	-6.27287994 -0.00053832 0.00032984 7.27234162 0.99835540 0.99913184 0.49319053;
+	-6.27288017 -0.00053823 0.00032979 7.27234194 0.99835569 0.99913199 0.49319055;
+	-6.27288039 -0.00053813 0.00032973 7.27234226 0.99835598 0.99913214 0.49319059;
+	-6.27288062 -0.00053804 0.00032967 7.27234258 0.99835626 0.99913229 0.49319064;
+	-6.27288084 -0.00053795 0.00032961 7.27234289 0.99835655 0.99913244 0.49319065;
+	-6.27288106 -0.00053785 0.00032956 7.27234321 0.99835683 0.99913259 0.49319063;
+	-6.27288129 -0.00053776 0.00032950 7.27234353 0.99835712 0.99913274 0.49319073;
+	-6.27288151 -0.00053767 0.00032944 7.27234385 0.99835740 0.99913289 0.49319071;
+	-6.27288173 -0.00053757 0.00032938 7.27234416 0.99835769 0.99913304 0.49319080;
+	-6.27288196 -0.00053748 0.00032933 7.27234448 0.99835797 0.99913319 0.49319079;
+	-6.27288218 -0.00053739 0.00032927 7.27234480 0.99835826 0.99913334 0.49319084;
+	-6.27288240 -0.00053729 0.00032921 7.27234511 0.99835854 0.99913349 0.49319094;
+	-6.27288263 -0.00053720 0.00032916 7.27234543 0.99835883 0.99913365 0.49319090;
+	-6.27288285 -0.00053711 0.00032910 7.27234574 0.99835911 0.99913380 0.49319093;
+	-6.27288307 -0.00053701 0.00032904 7.27234606 0.99835940 0.99913395 0.49319095;
+	-6.27288330 -0.00053692 0.00032898 7.27234638 0.99835968 0.99913410 0.49319102;
+	-6.27288352 -0.00053683 0.00032893 7.27234669 0.99835997 0.99913425 0.49319110;
+	-6.27288374 -0.00053673 0.00032887 7.27234701 0.99836025 0.99913440 0.49319107;
+	-6.27288396 -0.00053664 0.00032881 7.27234732 0.99836054 0.99913455 0.49319115;
+	-6.27288419 -0.00053655 0.00032876 7.27234764 0.99836082 0.99913470 0.49319113;
+	-6.27288441 -0.00053645 0.00032870 7.27234795 0.99836111 0.99913485 0.49319119;
+	-6.27288463 -0.00053636 0.00032864 7.27234827 0.99836139 0.99913500 0.49319119;
+	-6.27288485 -0.00053627 0.00032859 7.27234859 0.99836167 0.99913515 0.49319124;
+	-6.27288508 -0.00053618 0.00032853 7.27234890 0.99836196 0.99913530 0.49319131;
+	-6.27288530 -0.00053608 0.00032847 7.27234922 0.99836224 0.99913545 0.49319132;
+	-6.27288552 -0.00053599 0.00032841 7.27234953 0.99836253 0.99913560 0.49319134;
+	-6.27288574 -0.00053590 0.00032836 7.27234985 0.99836281 0.99913575 0.49319141;
+	-6.27288596 -0.00053580 0.00032830 7.27235016 0.99836309 0.99913590 0.49319142;
+	-6.27288619 -0.00053571 0.00032824 7.27235047 0.99836338 0.99913604 0.49319138;
+	-6.27288641 -0.00053562 0.00032819 7.27235079 0.99836366 0.99913619 0.49319145;
+	-6.27288663 -0.00053553 0.00032813 7.27235110 0.99836394 0.99913634 0.49319149;
+	-6.27288685 -0.00053543 0.00032807 7.27235142 0.99836423 0.99913649 0.49319155;
+	-6.27288707 -0.00053534 0.00032802 7.27235173 0.99836451 0.99913664 0.49319156;
+	-6.27288729 -0.00053525 0.00032796 7.27235205 0.99836479 0.99913679 0.49319156;
+	-6.27288752 -0.00053516 0.00032790 7.27235236 0.99836507 0.99913694 0.49319162;
+	-6.27288774 -0.00053506 0.00032785 7.27235267 0.99836536 0.99913709 0.49319169;
+	-6.27288796 -0.00053497 0.00032779 7.27235299 0.99836564 0.99913724 0.49319169;
+	-6.27288818 -0.00053488 0.00032773 7.27235330 0.99836592 0.99913739 0.49319176;
+	-6.27288840 -0.00053479 0.00032768 7.27235361 0.99836620 0.99913754 0.49319177;
+	-6.27288862 -0.00053469 0.00032762 7.27235393 0.99836649 0.99913769 0.49319182;
+	-6.27288884 -0.00053460 0.00032756 7.27235424 0.99836677 0.99913784 0.49319183;
+	-6.27288906 -0.00053451 0.00032751 7.27235455 0.99836705 0.99913798 0.49319186;
+	-6.27288928 -0.00053442 0.00032745 7.27235487 0.99836733 0.99913813 0.49319195;
+	-6.27288950 -0.00053432 0.00032739 7.27235518 0.99836762 0.99913828 0.49319191;
+	-6.27288973 -0.00053423 0.00032734 7.27235549 0.99836790 0.99913843 0.49319195;
+	-6.27288995 -0.00053414 0.00032728 7.27235581 0.99836818 0.99913858 0.49319198;
+	-6.27289017 -0.00053405 0.00032722 7.27235612 0.99836846 0.99913873 0.49319204;
+	-6.27289039 -0.00053396 0.00032717 7.27235643 0.99836874 0.99913888 0.49319208;
+	-6.27289061 -0.00053386 0.00032711 7.27235674 0.99836902 0.99913903 0.49319213;
+	-6.27289083 -0.00053377 0.00032705 7.27235706 0.99836931 0.99913917 0.49319212;
+	-6.27289105 -0.00053368 0.00032700 7.27235737 0.99836959 0.99913932 0.49319218;
+	-6.27289127 -0.00053359 0.00032694 7.27235768 0.99836987 0.99913947 0.49319222;
+	-6.27289149 -0.00053350 0.00032689 7.27235799 0.99837015 0.99913962 0.49319223;
+	-6.27289171 -0.00053340 0.00032683 7.27235830 0.99837043 0.99913977 0.49319229;
+	-6.27289193 -0.00053331 0.00032677 7.27235862 0.99837071 0.99913992 0.49319228;
+	-6.27289215 -0.00053322 0.00032672 7.27235893 0.99837099 0.99914006 0.49319230;
+	-6.27289237 -0.00053313 0.00032666 7.27235924 0.99837127 0.99914021 0.49319236;
+	-6.27289259 -0.00053304 0.00032660 7.27235955 0.99837155 0.99914036 0.49319240;
+	-6.27289281 -0.00053294 0.00032655 7.27235986 0.99837183 0.99914051 0.49319244;
+	-6.27289303 -0.00053285 0.00032649 7.27236017 0.99837211 0.99914066 0.49319243;
+	-6.27289325 -0.00053276 0.00032643 7.27236048 0.99837239 0.99914080 0.49319249;
+	-6.27289346 -0.00053267 0.00032638 7.27236080 0.99837267 0.99914095 0.49319257;
+	-6.27289368 -0.00053258 0.00032632 7.27236111 0.99837295 0.99914110 0.49319253;
+	-6.27289390 -0.00053249 0.00032627 7.27236142 0.99837323 0.99914125 0.49319261;
+	-6.27289412 -0.00053239 0.00032621 7.27236173 0.99837351 0.99914140 0.49319263;
+	-6.27289434 -0.00053230 0.00032615 7.27236204 0.99837379 0.99914154 0.49319267;
+	-6.27289456 -0.00053221 0.00032610 7.27236235 0.99837407 0.99914169 0.49319271;
+	-6.27289478 -0.00053212 0.00032604 7.27236266 0.99837435 0.99914184 0.49319271;
+	-6.27289500 -0.00053203 0.00032599 7.27236297 0.99837463 0.99914199 0.49319270;
+	-6.27289522 -0.00053194 0.00032593 7.27236328 0.99837491 0.99914213 0.49319278;
+	-6.27289544 -0.00053185 0.00032587 7.27236359 0.99837519 0.99914228 0.49319281;
+	-6.27289565 -0.00053175 0.00032582 7.27236390 0.99837547 0.99914243 0.49319284;
+	-6.27289587 -0.00053166 0.00032576 7.27236421 0.99837575 0.99914258 0.49319286;
+	-6.27289609 -0.00053157 0.00032571 7.27236452 0.99837603 0.99914272 0.49319287;
+	-6.27289631 -0.00053148 0.00032565 7.27236483 0.99837631 0.99914287 0.49319297;
+	-6.27289653 -0.00053139 0.00032559 7.27236514 0.99837659 0.99914302 0.49319300;
+	-6.27289675 -0.00053130 0.00032554 7.27236545 0.99837687 0.99914316 0.49319302;
+	-6.27289696 -0.00053121 0.00032548 7.27236576 0.99837714 0.99914331 0.49319305;
+	-6.27289718 -0.00053112 0.00032543 7.27236607 0.99837742 0.99914346 0.49319306;
+	-6.27289740 -0.00053102 0.00032537 7.27236638 0.99837770 0.99914361 0.49319318;
+	-6.27289762 -0.00053093 0.00032531 7.27236668 0.99837798 0.99914375 0.49319313;
+	-6.27289784 -0.00053084 0.00032526 7.27236699 0.99837826 0.99914390 0.49319318;
+	-6.27289805 -0.00053075 0.00032520 7.27236730 0.99837854 0.99914405 0.49319320;
+	-6.27289827 -0.00053066 0.00032515 7.27236761 0.99837881 0.99914419 0.49319315;
+	-6.27289849 -0.00053057 0.00032509 7.27236792 0.99837909 0.99914434 0.49319329;
+	-6.27289871 -0.00053048 0.00032504 7.27236823 0.99837937 0.99914449 0.49319329;
+	-6.27289892 -0.00053039 0.00032498 7.27236854 0.99837965 0.99914463 0.49319336;
+	-6.27289914 -0.00053030 0.00032492 7.27236884 0.99837993 0.99914478 0.49319338;
+	-6.27289936 -0.00053021 0.00032487 7.27236915 0.99838020 0.99914493 0.49319340;
+	-6.27289958 -0.00053012 0.00032481 7.27236946 0.99838048 0.99914507 0.49319339;
+	-6.27289979 -0.00053002 0.00032476 7.27236977 0.99838076 0.99914522 0.49319350;
+	-6.27290001 -0.00052993 0.00032470 7.27237008 0.99838104 0.99914536 0.49319352;
+	-6.27290023 -0.00052984 0.00032465 7.27237038 0.99838131 0.99914551 0.49319359;
+	-6.27290044 -0.00052975 0.00032459 7.27237069 0.99838159 0.99914566 0.49319354;
+	-6.27290066 -0.00052966 0.00032453 7.27237100 0.99838187 0.99914580 0.49319355;
+	-6.27290088 -0.00052957 0.00032448 7.27237131 0.99838214 0.99914595 0.49319365;
+	-6.27290109 -0.00052948 0.00032442 7.27237161 0.99838242 0.99914610 0.49319372;
+	-6.27290131 -0.00052939 0.00032437 7.27237192 0.99838270 0.99914624 0.49319371;
+	-6.27290153 -0.00052930 0.00032431 7.27237223 0.99838297 0.99914639 0.49319369;
+	-6.27290174 -0.00052921 0.00032426 7.27237254 0.99838325 0.99914653 0.49319379;
+	-6.27290196 -0.00052912 0.00032420 7.27237284 0.99838353 0.99914668 0.49319379;
+	-6.27290218 -0.00052903 0.00032415 7.27237315 0.99838380 0.99914683 0.49319387;
+	-6.27290239 -0.00052894 0.00032409 7.27237346 0.99838408 0.99914697 0.49319384;
+	-6.27290261 -0.00052885 0.00032404 7.27237376 0.99838436 0.99914712 0.49319390;
+	-6.27290283 -0.00052876 0.00032398 7.27237407 0.99838463 0.99914726 0.49319391;
+	-6.27290304 -0.00052867 0.00032392 7.27237438 0.99838491 0.99914741 0.49319397;
+	-6.27290326 -0.00052858 0.00032387 7.27237468 0.99838518 0.99914755 0.49319399;
+	-6.27290347 -0.00052849 0.00032381 7.27237499 0.99838546 0.99914770 0.49319399;
+	-6.27290369 -0.00052840 0.00032376 7.27237529 0.99838574 0.99914785 0.49319402;
+	-6.27290391 -0.00052831 0.00032370 7.27237560 0.99838601 0.99914799 0.49319410;
+	-6.27290412 -0.00052822 0.00032365 7.27237591 0.99838629 0.99914814 0.49319411;
+	-6.27290434 -0.00052813 0.00032359 7.27237621 0.99838656 0.99914828 0.49319417;
+	-6.27290455 -0.00052804 0.00032354 7.27237652 0.99838684 0.99914843 0.49319421;
+	-6.27290477 -0.00052795 0.00032348 7.27237682 0.99838711 0.99914857 0.49319423;
+	-6.27290498 -0.00052786 0.00032343 7.27237713 0.99838739 0.99914872 0.49319424;
+	-6.27290520 -0.00052777 0.00032337 7.27237743 0.99838766 0.99914886 0.49319429;
+	-6.27290541 -0.00052768 0.00032332 7.27237774 0.99838794 0.99914901 0.49319426;
+	-6.27290563 -0.00052759 0.00032326 7.27237804 0.99838821 0.99914915 0.49319434;
+	-6.27290584 -0.00052750 0.00032321 7.27237835 0.99838849 0.99914930 0.49319436;
+	-6.27290606 -0.00052741 0.00032315 7.27237865 0.99838876 0.99914944 0.49319441;
+	-6.27290627 -0.00052732 0.00032310 7.27237896 0.99838904 0.99914959 0.49319443;
+	-6.27290649 -0.00052723 0.00032304 7.27237926 0.99838931 0.99914973 0.49319450;
+	-6.27290670 -0.00052714 0.00032299 7.27237957 0.99838959 0.99914988 0.49319447;
+	-6.27290692 -0.00052705 0.00032293 7.27237987 0.99838986 0.99915002 0.49319454;
+	-6.27290713 -0.00052696 0.00032288 7.27238018 0.99839013 0.99915017 0.49319453;
+	-6.27290735 -0.00052687 0.00032282 7.27238048 0.99839041 0.99915031 0.49319457;
+	-6.27290756 -0.00052678 0.00032277 7.27238078 0.99839068 0.99915046 0.49319463;
+	-6.27290778 -0.00052669 0.00032271 7.27238109 0.99839096 0.99915060 0.49319468;
+	-6.27290799 -0.00052660 0.00032266 7.27238139 0.99839123 0.99915075 0.49319471;
+	-6.27290821 -0.00052651 0.00032260 7.27238170 0.99839150 0.99915089 0.49319472;
+	-6.27290842 -0.00052642 0.00032255 7.27238200 0.99839178 0.99915103 0.49319477;
+	-6.27290863 -0.00052633 0.00032249 7.27238230 0.99839205 0.99915118 0.49319479;
+	-6.27290885 -0.00052624 0.00032244 7.27238261 0.99839232 0.99915132 0.49319479;
+	-6.27290906 -0.00052615 0.00032238 7.27238291 0.99839260 0.99915147 0.49319486;
+	-6.27290928 -0.00052606 0.00032233 7.27238321 0.99839287 0.99915161 0.49319496;
+	-6.27290949 -0.00052597 0.00032227 7.27238352 0.99839314 0.99915176 0.49319494;
+	-6.27290970 -0.00052588 0.00032222 7.27238382 0.99839342 0.99915190 0.49319490;
+	-6.27290992 -0.00052579 0.00032216 7.27238412 0.99839369 0.99915204 0.49319495;
+	-6.27291013 -0.00052570 0.00032211 7.27238443 0.99839396 0.99915219 0.49319503;
+	-6.27291034 -0.00052561 0.00032205 7.27238473 0.99839424 0.99915233 0.49319499;
+	-6.27291056 -0.00052553 0.00032200 7.27238503 0.99839451 0.99915248 0.49319506;
+	-6.27291077 -0.00052544 0.00032194 7.27238534 0.99839478 0.99915262 0.49319516;
+	-6.27291098 -0.00052535 0.00032189 7.27238564 0.99839505 0.99915276 0.49319515;
+	-6.27291120 -0.00052526 0.00032183 7.27238594 0.99839533 0.99915291 0.49319519;
+	-6.27291141 -0.00052517 0.00032178 7.27238624 0.99839560 0.99915305 0.49319519;
+	-6.27291162 -0.00052508 0.00032173 7.27238654 0.99839587 0.99915320 0.49319522;
+	-6.27291184 -0.00052499 0.00032167 7.27238685 0.99839614 0.99915334 0.49319528;
+	-6.27291205 -0.00052490 0.00032162 7.27238715 0.99839642 0.99915348 0.49319533;
+	-6.27291226 -0.00052481 0.00032156 7.27238745 0.99839669 0.99915363 0.49319536;
+	-6.27291248 -0.00052472 0.00032151 7.27238775 0.99839696 0.99915377 0.49319537;
+	-6.27291269 -0.00052463 0.00032145 7.27238805 0.99839723 0.99915391 0.49319544;
+	-6.27291290 -0.00052455 0.00032140 7.27238836 0.99839750 0.99915406 0.49319545;
+	-6.27291311 -0.00052446 0.00032134 7.27238866 0.99839777 0.99915420 0.49319547;
+	-6.27291333 -0.00052437 0.00032129 7.27238896 0.99839805 0.99915434 0.49319547;
+	-6.27291354 -0.00052428 0.00032123 7.27238926 0.99839832 0.99915449 0.49319552;
+	-6.27291375 -0.00052419 0.00032118 7.27238956 0.99839859 0.99915463 0.49319555;
+	-6.27291396 -0.00052410 0.00032113 7.27238986 0.99839886 0.99915477 0.49319555;
+	-6.27291418 -0.00052401 0.00032107 7.27239016 0.99839913 0.99915492 0.49319565;
+	-6.27291439 -0.00052392 0.00032102 7.27239046 0.99839940 0.99915506 0.49319563;
+	-6.27291460 -0.00052384 0.00032096 7.27239077 0.99839967 0.99915520 0.49319565;
+	-6.27291481 -0.00052375 0.00032091 7.27239107 0.99839994 0.99915534 0.49319571;
+	-6.27291503 -0.00052366 0.00032085 7.27239137 0.99840021 0.99915549 0.49319576;
+	-6.27291524 -0.00052357 0.00032080 7.27239167 0.99840049 0.99915563 0.49319577;
+	-6.27291545 -0.00052348 0.00032075 7.27239197 0.99840076 0.99915577 0.49319579;
+	-6.27291566 -0.00052339 0.00032069 7.27239227 0.99840103 0.99915592 0.49319582;
+	-6.27291587 -0.00052330 0.00032064 7.27239257 0.99840130 0.99915606 0.49319587;
+	-6.27291608 -0.00052322 0.00032058 7.27239287 0.99840157 0.99915620 0.49319592;
+	-6.27291630 -0.00052313 0.00032053 7.27239317 0.99840184 0.99915634 0.49319593;
+	-6.27291651 -0.00052304 0.00032047 7.27239347 0.99840211 0.99915649 0.49319594;
+	-6.27291672 -0.00052295 0.00032042 7.27239377 0.99840238 0.99915663 0.49319596;
+	-6.27291693 -0.00052286 0.00032037 7.27239407 0.99840265 0.99915677 0.49319602;
+	-6.27291714 -0.00052277 0.00032031 7.27239437 0.99840292 0.99915691 0.49319607;
+	-6.27291735 -0.00052269 0.00032026 7.27239467 0.99840319 0.99915706 0.49319609;
+	-6.27291756 -0.00052260 0.00032020 7.27239497 0.99840346 0.99915720 0.49319609;
+	-6.27291777 -0.00052251 0.00032015 7.27239526 0.99840373 0.99915734 0.49319619;
+	-6.27291799 -0.00052242 0.00032010 7.27239556 0.99840400 0.99915748 0.49319624;
+	-6.27291820 -0.00052233 0.00032004 7.27239586 0.99840427 0.99915763 0.49319616;
+	-6.27291841 -0.00052225 0.00031999 7.27239616 0.99840453 0.99915777 0.49319625;
+	-6.27291862 -0.00052216 0.00031993 7.27239646 0.99840480 0.99915791 0.49319632;
+	-6.27291883 -0.00052207 0.00031988 7.27239676 0.99840507 0.99915805 0.49319625;
+	-6.27291904 -0.00052198 0.00031983 7.27239706 0.99840534 0.99915819 0.49319634;
+	-6.27291925 -0.00052189 0.00031977 7.27239736 0.99840561 0.99915834 0.49319638;
+	-6.27291946 -0.00052180 0.00031972 7.27239766 0.99840588 0.99915848 0.49319640;
+	-6.27291967 -0.00052172 0.00031966 7.27239795 0.99840615 0.99915862 0.49319643;
+	-6.27291988 -0.00052163 0.00031961 7.27239825 0.99840642 0.99915876 0.49319646;
+	-6.27292009 -0.00052154 0.00031956 7.27239855 0.99840669 0.99915890 0.49319643;
+	-6.27292030 -0.00052145 0.00031950 7.27239885 0.99840695 0.99915904 0.49319651;
+	-6.27292051 -0.00052137 0.00031945 7.27239915 0.99840722 0.99915919 0.49319652;
+	-6.27292072 -0.00052128 0.00031939 7.27239944 0.99840749 0.99915933 0.49319657;
+	-6.27292093 -0.00052119 0.00031934 7.27239974 0.99840776 0.99915947 0.49319663;
+	-6.27292114 -0.00052110 0.00031929 7.27240004 0.99840803 0.99915961 0.49319665;
+	-6.27292135 -0.00052101 0.00031923 7.27240034 0.99840830 0.99915975 0.49319671;
+	-6.27292156 -0.00052093 0.00031918 7.27240063 0.99840856 0.99915989 0.49319676;
+	-6.27292177 -0.00052084 0.00031913 7.27240093 0.99840883 0.99916004 0.49319677;
+	-6.27292198 -0.00052075 0.00031907 7.27240123 0.99840910 0.99916018 0.49319672;
+	-6.27292219 -0.00052066 0.00031902 7.27240153 0.99840937 0.99916032 0.49319676;
+	-6.27292240 -0.00052058 0.00031896 7.27240182 0.99840964 0.99916046 0.49319684;
+	-6.27292261 -0.00052049 0.00031891 7.27240212 0.99840990 0.99916060 0.49319683;
+	-6.27292282 -0.00052040 0.00031886 7.27240242 0.99841017 0.99916074 0.49319688;
+	-6.27292303 -0.00052031 0.00031880 7.27240271 0.99841044 0.99916088 0.49319696;
+	-6.27292324 -0.00052023 0.00031875 7.27240301 0.99841070 0.99916102 0.49319696;
+	-6.27292345 -0.00052014 0.00031870 7.27240331 0.99841097 0.99916117 0.49319698;
+	-6.27292366 -0.00052005 0.00031864 7.27240360 0.99841124 0.99916131 0.49319702;
+	-6.27292386 -0.00051996 0.00031859 7.27240390 0.99841151 0.99916145 0.49319705;
+	-6.27292407 -0.00051988 0.00031854 7.27240420 0.99841177 0.99916159 0.49319708;
+	-6.27292428 -0.00051979 0.00031848 7.27240449 0.99841204 0.99916173 0.49319705;
+	-6.27292449 -0.00051970 0.00031843 7.27240479 0.99841231 0.99916187 0.49319715;
+	-6.27292470 -0.00051962 0.00031837 7.27240508 0.99841257 0.99916201 0.49319716;
+	-6.27292491 -0.00051953 0.00031832 7.27240538 0.99841284 0.99916215 0.49319722;
+	-6.27292512 -0.00051944 0.00031827 7.27240568 0.99841311 0.99916229 0.49319725;
+	-6.27292533 -0.00051935 0.00031821 7.27240597 0.99841337 0.99916243 0.49319725;
+	-6.27292553 -0.00051927 0.00031816 7.27240627 0.99841364 0.99916257 0.49319734;
+	-6.27292574 -0.00051918 0.00031811 7.27240656 0.99841390 0.99916271 0.49319744;
+	-6.27292595 -0.00051909 0.00031805 7.27240686 0.99841417 0.99916285 0.49319739;
+	-6.27292616 -0.00051901 0.00031800 7.27240715 0.99841444 0.99916299 0.49319736;
+	-6.27292637 -0.00051892 0.00031795 7.27240745 0.99841470 0.99916313 0.49319748;
+	-6.27292658 -0.00051883 0.00031789 7.27240774 0.99841497 0.99916327 0.49319747;
+	-6.27292678 -0.00051874 0.00031784 7.27240804 0.99841523 0.99916341 0.49319748;
+	-6.27292699 -0.00051866 0.00031779 7.27240833 0.99841550 0.99916355 0.49319753;
+	-6.27292720 -0.00051857 0.00031773 7.27240863 0.99841577 0.99916369 0.49319759;
+	-6.27292741 -0.00051848 0.00031768 7.27240892 0.99841603 0.99916384 0.49319759;
+	-6.27292762 -0.00051840 0.00031763 7.27240922 0.99841630 0.99916398 0.49319759;
+	-6.27292782 -0.00051831 0.00031757 7.27240951 0.99841656 0.99916412 0.49319764;
+	-6.27292803 -0.00051822 0.00031752 7.27240981 0.99841683 0.99916426 0.49319769;
+	-6.27292824 -0.00051814 0.00031747 7.27241010 0.99841709 0.99916440 0.49319768;
+	-6.27292845 -0.00051805 0.00031742 7.27241040 0.99841736 0.99916453 0.49319773;
+	-6.27292865 -0.00051796 0.00031736 7.27241069 0.99841762 0.99916467 0.49319777;
+	-6.27292886 -0.00051788 0.00031731 7.27241098 0.99841789 0.99916481 0.49319789;
+	-6.27292907 -0.00051779 0.00031726 7.27241128 0.99841815 0.99916495 0.49319781;
+	-6.27292927 -0.00051770 0.00031720 7.27241157 0.99841842 0.99916509 0.49319785;
+	-6.27292948 -0.00051762 0.00031715 7.27241186 0.99841868 0.99916523 0.49319784;
+	-6.27292969 -0.00051753 0.00031710 7.27241216 0.99841895 0.99916537 0.49319795;
+	-6.27292990 -0.00051744 0.00031704 7.27241245 0.99841921 0.99916551 0.49319794;
+	-6.27293010 -0.00051736 0.00031699 7.27241275 0.99841947 0.99916565 0.49319797;
+	-6.27293031 -0.00051727 0.00031694 7.27241304 0.99841974 0.99916579 0.49319807;
+	-6.27293052 -0.00051718 0.00031688 7.27241333 0.99842000 0.99916593 0.49319800;
+	-6.27293072 -0.00051710 0.00031683 7.27241363 0.99842027 0.99916607 0.49319809;
+	-6.27293093 -0.00051701 0.00031678 7.27241392 0.99842053 0.99916621 0.49319811;
+	-6.27293114 -0.00051693 0.00031673 7.27241421 0.99842079 0.99916635 0.49319811;
+	-6.27293134 -0.00051684 0.00031667 7.27241450 0.99842106 0.99916649 0.49319817;
+	-6.27293155 -0.00051675 0.00031662 7.27241480 0.99842132 0.99916663 0.49319820;
+	-6.27293176 -0.00051667 0.00031657 7.27241509 0.99842159 0.99916677 0.49319821;
+	-6.27293196 -0.00051658 0.00031651 7.27241538 0.99842185 0.99916691 0.49319833;
+	-6.27293217 -0.00051649 0.00031646 7.27241567 0.99842211 0.99916704 0.49319829;
+	-6.27293237 -0.00051641 0.00031641 7.27241597 0.99842238 0.99916718 0.49319831;
+	-6.27293258 -0.00051632 0.00031636 7.27241626 0.99842264 0.99916732 0.49319838;
+	-6.27293279 -0.00051624 0.00031630 7.27241655 0.99842290 0.99916746 0.49319843;
+	-6.27293299 -0.00051615 0.00031625 7.27241684 0.99842316 0.99916760 0.49319840;
+	-6.27293320 -0.00051606 0.00031620 7.27241713 0.99842343 0.99916774 0.49319841;
+	-6.27293340 -0.00051598 0.00031614 7.27241743 0.99842369 0.99916788 0.49319849;
+	-6.27293361 -0.00051589 0.00031609 7.27241772 0.99842395 0.99916802 0.49319850;
+	-6.27293382 -0.00051581 0.00031604 7.27241801 0.99842422 0.99916816 0.49319856;
+	-6.27293402 -0.00051572 0.00031599 7.27241830 0.99842448 0.99916829 0.49319860;
+	-6.27293423 -0.00051563 0.00031593 7.27241859 0.99842474 0.99916843 0.49319855;
+	-6.27293443 -0.00051555 0.00031588 7.27241888 0.99842500 0.99916857 0.49319861;
+	-6.27293464 -0.00051546 0.00031583 7.27241918 0.99842527 0.99916871 0.49319870;
+	-6.27293484 -0.00051538 0.00031578 7.27241947 0.99842553 0.99916885 0.49319866;
+	-6.27293505 -0.00051529 0.00031572 7.27241976 0.99842579 0.99916899 0.49319873;
+	-6.27293525 -0.00051520 0.00031567 7.27242005 0.99842605 0.99916912 0.49319872;
+	-6.27293546 -0.00051512 0.00031562 7.27242034 0.99842632 0.99916926 0.49319875;
+	-6.27293566 -0.00051503 0.00031557 7.27242063 0.99842658 0.99916940 0.49319885;
+	-6.27293587 -0.00051495 0.00031551 7.27242092 0.99842684 0.99916954 0.49319881;
+	-6.27293607 -0.00051486 0.00031546 7.27242121 0.99842710 0.99916968 0.49319885;
+	-6.27293628 -0.00051478 0.00031541 7.27242150 0.99842736 0.99916982 0.49319897;
+	-6.27293648 -0.00051469 0.00031536 7.27242179 0.99842762 0.99916995 0.49319898;
+	-6.27293669 -0.00051461 0.00031530 7.27242208 0.99842789 0.99917009 0.49319895;
+	-6.27293689 -0.00051452 0.00031525 7.27242237 0.99842815 0.99917023 0.49319902;
+	-6.27293710 -0.00051443 0.00031520 7.27242266 0.99842841 0.99917037 0.49319899;
+	-6.27293730 -0.00051435 0.00031515 7.27242295 0.99842867 0.99917051 0.49319907;
+	-6.27293751 -0.00051426 0.00031509 7.27242324 0.99842893 0.99917064 0.49319910;
+	-6.27293771 -0.00051418 0.00031504 7.27242353 0.99842919 0.99917078 0.49319911;
+	-6.27293792 -0.00051409 0.00031499 7.27242382 0.99842945 0.99917092 0.49319911;
+	-6.27293812 -0.00051401 0.00031494 7.27242411 0.99842971 0.99917106 0.49319918;
+	-6.27293832 -0.00051392 0.00031488 7.27242440 0.99842997 0.99917119 0.49319923;
+	-6.27293853 -0.00051384 0.00031483 7.27242469 0.99843024 0.99917133 0.49319919;
+	-6.27293873 -0.00051375 0.00031478 7.27242498 0.99843050 0.99917147 0.49319924;
+	-6.27293894 -0.00051367 0.00031473 7.27242527 0.99843076 0.99917161 0.49319925;
+	-6.27293914 -0.00051358 0.00031467 7.27242556 0.99843102 0.99917174 0.49319934;
+	-6.27293934 -0.00051350 0.00031462 7.27242585 0.99843128 0.99917188 0.49319932;
+	-6.27293955 -0.00051341 0.00031457 7.27242614 0.99843154 0.99917202 0.49319938;
+	-6.27293975 -0.00051333 0.00031452 7.27242643 0.99843180 0.99917216 0.49319942;
+	-6.27293995 -0.00051324 0.00031447 7.27242671 0.99843206 0.99917229 0.49319947;
+	-6.27294016 -0.00051315 0.00031441 7.27242700 0.99843232 0.99917243 0.49319948;
+	-6.27294036 -0.00051307 0.00031436 7.27242729 0.99843258 0.99917257 0.49319954;
+	-6.27294057 -0.00051298 0.00031431 7.27242758 0.99843284 0.99917271 0.49319956;
+	-6.27294077 -0.00051290 0.00031426 7.27242787 0.99843310 0.99917284 0.49319957;
+	-6.27294097 -0.00051281 0.00031421 7.27242816 0.99843336 0.99917298 0.49319962;
+	-6.27294118 -0.00051273 0.00031415 7.27242845 0.99843362 0.99917312 0.49319969;
+	-6.27294138 -0.00051265 0.00031410 7.27242873 0.99843388 0.99917325 0.49319972;
+	-6.27294158 -0.00051256 0.00031405 7.27242902 0.99843414 0.99917339 0.49319967;
+	-6.27294178 -0.00051248 0.00031400 7.27242931 0.99843439 0.99917353 0.49319971;
+	-6.27294199 -0.00051239 0.00031395 7.27242960 0.99843465 0.99917366 0.49319975;
+	-6.27294219 -0.00051231 0.00031389 7.27242988 0.99843491 0.99917380 0.49319976;
+	-6.27294239 -0.00051222 0.00031384 7.27243017 0.99843517 0.99917394 0.49319985;
+	-6.27294260 -0.00051214 0.00031379 7.27243046 0.99843543 0.99917407 0.49319980;
+	-6.27294280 -0.00051205 0.00031374 7.27243075 0.99843569 0.99917421 0.49319987;
+	-6.27294300 -0.00051197 0.00031369 7.27243103 0.99843595 0.99917435 0.49319991;
+	-6.27294320 -0.00051188 0.00031363 7.27243132 0.99843621 0.99917448 0.49319996;
+	-6.27294341 -0.00051180 0.00031358 7.27243161 0.99843647 0.99917462 0.49320001;
+	-6.27294361 -0.00051171 0.00031353 7.27243190 0.99843673 0.99917476 0.49319998;
+	-6.27294381 -0.00051163 0.00031348 7.27243218 0.99843698 0.99917489 0.49320000;
+	-6.27294401 -0.00051154 0.00031343 7.27243247 0.99843724 0.99917503 0.49320003;
+	-6.27294422 -0.00051146 0.00031337 7.27243276 0.99843750 0.99917517 0.49320007;
+	-6.27294442 -0.00051137 0.00031332 7.27243304 0.99843776 0.99917530 0.49320006;
+	-6.27294462 -0.00051129 0.00031327 7.27243333 0.99843802 0.99917544 0.49320012;
+	-6.27294482 -0.00051121 0.00031322 7.27243362 0.99843827 0.99917558 0.49320018;
+	-6.27294502 -0.00051112 0.00031317 7.27243390 0.99843853 0.99917571 0.49320018;
+	-6.27294523 -0.00051104 0.00031312 7.27243419 0.99843879 0.99917585 0.49320017;
+	-6.27294543 -0.00051095 0.00031306 7.27243448 0.99843905 0.99917598 0.49320022;
+	-6.27294563 -0.00051087 0.00031301 7.27243476 0.99843931 0.99917612 0.49320033;
+	-6.27294583 -0.00051078 0.00031296 7.27243505 0.99843956 0.99917626 0.49320035;
+	-6.27294603 -0.00051070 0.00031291 7.27243533 0.99843982 0.99917639 0.49320035;
+	-6.27294623 -0.00051062 0.00031286 7.27243562 0.99844008 0.99917653 0.49320037;
+	-6.27294644 -0.00051053 0.00031281 7.27243590 0.99844034 0.99917666 0.49320040;
+	-6.27294664 -0.00051045 0.00031275 7.27243619 0.99844059 0.99917680 0.49320046;
+	-6.27294684 -0.00051036 0.00031270 7.27243648 0.99844085 0.99917693 0.49320050;
+	-6.27294704 -0.00051028 0.00031265 7.27243676 0.99844111 0.99917707 0.49320049;
+	-6.27294724 -0.00051019 0.00031260 7.27243705 0.99844136 0.99917721 0.49320054;
+	-6.27294744 -0.00051011 0.00031255 7.27243733 0.99844162 0.99917734 0.49320055;
+	-6.27294764 -0.00051003 0.00031250 7.27243762 0.99844188 0.99917748 0.49320064;
+	-6.27294784 -0.00050994 0.00031244 7.27243790 0.99844214 0.99917761 0.49320065;
+	-6.27294805 -0.00050986 0.00031239 7.27243819 0.99844239 0.99917775 0.49320067;
+	-6.27294825 -0.00050977 0.00031234 7.27243847 0.99844265 0.99917788 0.49320073;
+	-6.27294845 -0.00050969 0.00031229 7.27243876 0.99844291 0.99917802 0.49320072;
+	-6.27294865 -0.00050961 0.00031224 7.27243904 0.99844316 0.99917815 0.49320076;
+	-6.27294885 -0.00050952 0.00031219 7.27243933 0.99844342 0.99917829 0.49320077;
+	-6.27294905 -0.00050944 0.00031214 7.27243961 0.99844367 0.99917843 0.49320076;
+	-6.27294925 -0.00050936 0.00031208 7.27243989 0.99844393 0.99917856 0.49320084;
+	-6.27294945 -0.00050927 0.00031203 7.27244018 0.99844419 0.99917870 0.49320087;
+	-6.27294965 -0.00050919 0.00031198 7.27244046 0.99844444 0.99917883 0.49320088;
+	-6.27294985 -0.00050910 0.00031193 7.27244075 0.99844470 0.99917897 0.49320097;
+	-6.27295005 -0.00050902 0.00031188 7.27244103 0.99844495 0.99917910 0.49320091;
+	-6.27295025 -0.00050894 0.00031183 7.27244132 0.99844521 0.99917924 0.49320097;
+	-6.27295045 -0.00050885 0.00031178 7.27244160 0.99844547 0.99917937 0.49320101;
+	-6.27295065 -0.00050877 0.00031173 7.27244188 0.99844572 0.99917951 0.49320102;
+	-6.27295085 -0.00050869 0.00031167 7.27244217 0.99844598 0.99917964 0.49320101;
+	-6.27295105 -0.00050860 0.00031162 7.27244245 0.99844623 0.99917978 0.49320112;
+	-6.27295125 -0.00050852 0.00031157 7.27244273 0.99844649 0.99917991 0.49320117;
+	-6.27295145 -0.00050844 0.00031152 7.27244302 0.99844674 0.99918004 0.49320117;
+	-6.27295165 -0.00050835 0.00031147 7.27244330 0.99844700 0.99918018 0.49320119;
+	-6.27295185 -0.00050827 0.00031142 7.27244358 0.99844725 0.99918031 0.49320122;
+	-6.27295205 -0.00050818 0.00031137 7.27244387 0.99844751 0.99918045 0.49320128;
+	-6.27295225 -0.00050810 0.00031132 7.27244415 0.99844776 0.99918058 0.49320130;
+	-6.27295245 -0.00050802 0.00031126 7.27244443 0.99844802 0.99918072 0.49320132;
+	-6.27295265 -0.00050793 0.00031121 7.27244472 0.99844827 0.99918085 0.49320130;
+	-6.27295285 -0.00050785 0.00031116 7.27244500 0.99844853 0.99918099 0.49320137;
+	-6.27295305 -0.00050777 0.00031111 7.27244528 0.99844878 0.99918112 0.49320141;
+	-6.27295325 -0.00050768 0.00031106 7.27244556 0.99844904 0.99918126 0.49320145;
+	-6.27295345 -0.00050760 0.00031101 7.27244585 0.99844929 0.99918139 0.49320144;
+	-6.27295365 -0.00050752 0.00031096 7.27244613 0.99844955 0.99918152 0.49320149;
+	-6.27295385 -0.00050743 0.00031091 7.27244641 0.99844980 0.99918166 0.49320154;
+	-6.27295404 -0.00050735 0.00031086 7.27244669 0.99845005 0.99918179 0.49320156;
+	-6.27295424 -0.00050727 0.00031081 7.27244697 0.99845031 0.99918193 0.49320161;
+	-6.27295444 -0.00050719 0.00031075 7.27244726 0.99845056 0.99918206 0.49320163;
+	-6.27295464 -0.00050710 0.00031070 7.27244754 0.99845082 0.99918219 0.49320168;
+	-6.27295484 -0.00050702 0.00031065 7.27244782 0.99845107 0.99918233 0.49320163;
+	-6.27295504 -0.00050694 0.00031060 7.27244810 0.99845132 0.99918246 0.49320171;
+	-6.27295524 -0.00050685 0.00031055 7.27244838 0.99845158 0.99918260 0.49320174;
+	-6.27295544 -0.00050677 0.00031050 7.27244867 0.99845183 0.99918273 0.49320177;
+	-6.27295563 -0.00050669 0.00031045 7.27244895 0.99845208 0.99918286 0.49320176;
+	-6.27295583 -0.00050660 0.00031040 7.27244923 0.99845234 0.99918300 0.49320182;
+	-6.27295603 -0.00050652 0.00031035 7.27244951 0.99845259 0.99918313 0.49320186;
+	-6.27295623 -0.00050644 0.00031030 7.27244979 0.99845284 0.99918327 0.49320185;
+	-6.27295643 -0.00050636 0.00031025 7.27245007 0.99845310 0.99918340 0.49320186;
+	-6.27295663 -0.00050627 0.00031019 7.27245035 0.99845335 0.99918353 0.49320197;
+	-6.27295682 -0.00050619 0.00031014 7.27245063 0.99845360 0.99918367 0.49320197;
+	-6.27295702 -0.00050611 0.00031009 7.27245091 0.99845386 0.99918380 0.49320194;
+	-6.27295722 -0.00050602 0.00031004 7.27245120 0.99845411 0.99918393 0.49320202;
+	-6.27295742 -0.00050594 0.00030999 7.27245148 0.99845436 0.99918407 0.49320205;
+	-6.27295762 -0.00050586 0.00030994 7.27245176 0.99845462 0.99918420 0.49320207;
+	-6.27295781 -0.00050578 0.00030989 7.27245204 0.99845487 0.99918433 0.49320207;
+	-6.27295801 -0.00050569 0.00030984 7.27245232 0.99845512 0.99918447 0.49320217;
+	-6.27295821 -0.00050561 0.00030979 7.27245260 0.99845537 0.99918460 0.49320221;
+	-6.27295841 -0.00050553 0.00030974 7.27245288 0.99845563 0.99918473 0.49320219;
+	-6.27295860 -0.00050545 0.00030969 7.27245316 0.99845588 0.99918487 0.49320222;
+	-6.27295880 -0.00050536 0.00030964 7.27245344 0.99845613 0.99918500 0.49320228;
+	-6.27295900 -0.00050528 0.00030959 7.27245372 0.99845638 0.99918513 0.49320230;
+	-6.27295920 -0.00050520 0.00030954 7.27245400 0.99845663 0.99918526 0.49320235;
+	-6.27295939 -0.00050512 0.00030949 7.27245428 0.99845689 0.99918540 0.49320231;
+	-6.27295959 -0.00050503 0.00030944 7.27245456 0.99845714 0.99918553 0.49320239;
+	-6.27295979 -0.00050495 0.00030938 7.27245484 0.99845739 0.99918566 0.49320239;
+	-6.27295998 -0.00050487 0.00030933 7.27245512 0.99845764 0.99918580 0.49320243;
+	-6.27296018 -0.00050479 0.00030928 7.27245539 0.99845789 0.99918593 0.49320240;
+	-6.27296038 -0.00050470 0.00030923 7.27245567 0.99845814 0.99918606 0.49320248;
+	-6.27296058 -0.00050462 0.00030918 7.27245595 0.99845840 0.99918619 0.49320254;
+	-6.27296077 -0.00050454 0.00030913 7.27245623 0.99845865 0.99918633 0.49320254;
+	-6.27296097 -0.00050446 0.00030908 7.27245651 0.99845890 0.99918646 0.49320257;
+	-6.27296117 -0.00050438 0.00030903 7.27245679 0.99845915 0.99918659 0.49320260;
+	-6.27296136 -0.00050429 0.00030898 7.27245707 0.99845940 0.99918673 0.49320260;
+	-6.27296156 -0.00050421 0.00030893 7.27245735 0.99845965 0.99918686 0.49320264;
+	-6.27296176 -0.00050413 0.00030888 7.27245763 0.99845990 0.99918699 0.49320270;
+	-6.27296195 -0.00050405 0.00030883 7.27245790 0.99846015 0.99918712 0.49320271;
+	-6.27296215 -0.00050397 0.00030878 7.27245818 0.99846040 0.99918726 0.49320271;
+	-6.27296234 -0.00050388 0.00030873 7.27245846 0.99846066 0.99918739 0.49320279;
+	-6.27296254 -0.00050380 0.00030868 7.27245874 0.99846091 0.99918752 0.49320285;
+	-6.27296274 -0.00050372 0.00030863 7.27245902 0.99846116 0.99918765 0.49320278;
+	-6.27296293 -0.00050364 0.00030858 7.27245930 0.99846141 0.99918778 0.49320286;
+	-6.27296313 -0.00050356 0.00030853 7.27245957 0.99846166 0.99918792 0.49320284;
+	-6.27296332 -0.00050347 0.00030848 7.27245985 0.99846191 0.99918805 0.49320294;
+	-6.27296352 -0.00050339 0.00030843 7.27246013 0.99846216 0.99918818 0.49320297;
+	-6.27296372 -0.00050331 0.00030838 7.27246041 0.99846241 0.99918831 0.49320295;
+	-6.27296391 -0.00050323 0.00030833 7.27246068 0.99846266 0.99918844 0.49320301;
+	-6.27296411 -0.00050315 0.00030828 7.27246096 0.99846291 0.99918858 0.49320303;
+	-6.27296430 -0.00050306 0.00030823 7.27246124 0.99846316 0.99918871 0.49320305;
+	-6.27296450 -0.00050298 0.00030818 7.27246152 0.99846341 0.99918884 0.49320310;
+	-6.27296469 -0.00050290 0.00030813 7.27246179 0.99846366 0.99918897 0.49320314;
+	-6.27296489 -0.00050282 0.00030808 7.27246207 0.99846391 0.99918910 0.49320318;
+	-6.27296509 -0.00050274 0.00030803 7.27246235 0.99846416 0.99918924 0.49320319;
+	-6.27296528 -0.00050266 0.00030798 7.27246263 0.99846441 0.99918937 0.49320326;
+	-6.27296548 -0.00050257 0.00030793 7.27246290 0.99846466 0.99918950 0.49320325;
+	-6.27296567 -0.00050249 0.00030788 7.27246318 0.99846490 0.99918963 0.49320329;
+	-6.27296587 -0.00050241 0.00030783 7.27246346 0.99846515 0.99918976 0.49320330;
+	-6.27296606 -0.00050233 0.00030778 7.27246373 0.99846540 0.99918989 0.49320333;
+	-6.27296626 -0.00050225 0.00030773 7.27246401 0.99846565 0.99919002 0.49320339;
+	-6.27296645 -0.00050217 0.00030768 7.27246429 0.99846590 0.99919016 0.49320339;
+	-6.27296665 -0.00050209 0.00030763 7.27246456 0.99846615 0.99919029 0.49320338;
+	-6.27296684 -0.00050200 0.00030758 7.27246484 0.99846640 0.99919042 0.49320344;
+	-6.27296704 -0.00050192 0.00030753 7.27246511 0.99846665 0.99919055 0.49320353;
+	-6.27296723 -0.00050184 0.00030748 7.27246539 0.99846690 0.99919068 0.49320349;
+	-6.27296743 -0.00050176 0.00030743 7.27246567 0.99846715 0.99919081 0.49320357;
+	-6.27296762 -0.00050168 0.00030738 7.27246594 0.99846739 0.99919094 0.49320354;
+	-6.27296781 -0.00050160 0.00030733 7.27246622 0.99846764 0.99919108 0.49320360;
+	-6.27296801 -0.00050152 0.00030728 7.27246649 0.99846789 0.99919121 0.49320366;
+	-6.27296820 -0.00050143 0.00030723 7.27246677 0.99846814 0.99919134 0.49320363;
+	-6.27296840 -0.00050135 0.00030718 7.27246704 0.99846839 0.99919147 0.49320369;
+	-6.27296859 -0.00050127 0.00030713 7.27246732 0.99846864 0.99919160 0.49320376;
+	-6.27296879 -0.00050119 0.00030708 7.27246760 0.99846888 0.99919173 0.49320377;
+	-6.27296898 -0.00050111 0.00030703 7.27246787 0.99846913 0.99919186 0.49320381;
+	-6.27296917 -0.00050103 0.00030698 7.27246815 0.99846938 0.99919199 0.49320377;
+	-6.27296937 -0.00050095 0.00030693 7.27246842 0.99846963 0.99919212 0.49320384;
+	-6.27296956 -0.00050087 0.00030688 7.27246870 0.99846987 0.99919225 0.49320380;
+	-6.27296976 -0.00050079 0.00030683 7.27246897 0.99847012 0.99919238 0.49320387;
+	-6.27296995 -0.00050070 0.00030678 7.27246925 0.99847037 0.99919251 0.49320387;
+	-6.27297014 -0.00050062 0.00030673 7.27246952 0.99847062 0.99919265 0.49320397;
+	-6.27297034 -0.00050054 0.00030668 7.27246980 0.99847086 0.99919278 0.49320397;
+	-6.27297053 -0.00050046 0.00030663 7.27247007 0.99847111 0.99919291 0.49320399;
+	-6.27297073 -0.00050038 0.00030658 7.27247034 0.99847136 0.99919304 0.49320405;
+	-6.27297092 -0.00050030 0.00030653 7.27247062 0.99847161 0.99919317 0.49320409;
+	-6.27297111 -0.00050022 0.00030648 7.27247089 0.99847185 0.99919330 0.49320412;
+	-6.27297131 -0.00050014 0.00030643 7.27247117 0.99847210 0.99919343 0.49320414;
+	-6.27297150 -0.00050006 0.00030638 7.27247144 0.99847235 0.99919356 0.49320414;
+	-6.27297169 -0.00049998 0.00030633 7.27247172 0.99847259 0.99919369 0.49320417;
+	-6.27297189 -0.00049990 0.00030629 7.27247199 0.99847284 0.99919382 0.49320418;
+	-6.27297208 -0.00049982 0.00030624 7.27247226 0.99847309 0.99919395 0.49320420;
+	-6.27297227 -0.00049973 0.00030619 7.27247254 0.99847333 0.99919408 0.49320426;
+	-6.27297246 -0.00049965 0.00030614 7.27247281 0.99847358 0.99919421 0.49320420;
+	-6.27297266 -0.00049957 0.00030609 7.27247308 0.99847383 0.99919434 0.49320435;
+	-6.27297285 -0.00049949 0.00030604 7.27247336 0.99847407 0.99919447 0.49320431;
+	-6.27297304 -0.00049941 0.00030599 7.27247363 0.99847432 0.99919460 0.49320437;
+	-6.27297324 -0.00049933 0.00030594 7.27247390 0.99847457 0.99919473 0.49320437;
+	-6.27297343 -0.00049925 0.00030589 7.27247418 0.99847481 0.99919486 0.49320443;
+	-6.27297362 -0.00049917 0.00030584 7.27247445 0.99847506 0.99919499 0.49320448;
+	-6.27297381 -0.00049909 0.00030579 7.27247472 0.99847530 0.99919512 0.49320448;
+	-6.27297401 -0.00049901 0.00030574 7.27247500 0.99847555 0.99919525 0.49320449;
+	-6.27297420 -0.00049893 0.00030569 7.27247527 0.99847580 0.99919538 0.49320451;
+	-6.27297439 -0.00049885 0.00030564 7.27247554 0.99847604 0.99919551 0.49320453;
+	-6.27297458 -0.00049877 0.00030559 7.27247582 0.99847629 0.99919564 0.49320461;
+	-6.27297478 -0.00049869 0.00030554 7.27247609 0.99847653 0.99919577 0.49320461;
+	-6.27297497 -0.00049861 0.00030550 7.27247636 0.99847678 0.99919590 0.49320465;
+	-6.27297516 -0.00049853 0.00030545 7.27247663 0.99847702 0.99919603 0.49320475;
+	-6.27297535 -0.00049845 0.00030540 7.27247691 0.99847727 0.99919616 0.49320473;
+	-6.27297554 -0.00049837 0.00030535 7.27247718 0.99847751 0.99919629 0.49320474;
+	-6.27297574 -0.00049829 0.00030530 7.27247745 0.99847776 0.99919641 0.49320475;
+	-6.27297593 -0.00049821 0.00030525 7.27247772 0.99847800 0.99919654 0.49320486;
+	-6.27297612 -0.00049813 0.00030520 7.27247799 0.99847825 0.99919667 0.49320483;
+	-6.27297631 -0.00049805 0.00030515 7.27247827 0.99847849 0.99919680 0.49320494;
+	-6.27297650 -0.00049797 0.00030510 7.27247854 0.99847874 0.99919693 0.49320494;
+	-6.27297670 -0.00049789 0.00030505 7.27247881 0.99847898 0.99919706 0.49320488;
+	-6.27297689 -0.00049781 0.00030500 7.27247908 0.99847923 0.99919719 0.49320497;
+	-6.27297708 -0.00049773 0.00030495 7.27247935 0.99847947 0.99919732 0.49320498;
+	-6.27297727 -0.00049765 0.00030491 7.27247962 0.99847972 0.99919745 0.49320504;
+	-6.27297746 -0.00049757 0.00030486 7.27247990 0.99847996 0.99919758 0.49320498;
+	-6.27297765 -0.00049749 0.00030481 7.27248017 0.99848021 0.99919771 0.49320508;
+	-6.27297784 -0.00049741 0.00030476 7.27248044 0.99848045 0.99919784 0.49320506;
+	-6.27297804 -0.00049733 0.00030471 7.27248071 0.99848070 0.99919796 0.49320512;
+	-6.27297823 -0.00049725 0.00030466 7.27248098 0.99848094 0.99919809 0.49320520;
+	-6.27297842 -0.00049717 0.00030461 7.27248125 0.99848118 0.99919822 0.49320518;
+	-6.27297861 -0.00049709 0.00030456 7.27248152 0.99848143 0.99919835 0.49320519;
+	-6.27297880 -0.00049701 0.00030451 7.27248179 0.99848167 0.99919848 0.49320524;
+	-6.27297899 -0.00049693 0.00030446 7.27248206 0.99848192 0.99919861 0.49320527;
+	-6.27297918 -0.00049685 0.00030442 7.27248233 0.99848216 0.99919874 0.49320529;
+	-6.27297937 -0.00049677 0.00030437 7.27248260 0.99848240 0.99919887 0.49320530;
+	-6.27297956 -0.00049669 0.00030432 7.27248288 0.99848265 0.99919899 0.49320533;
+	-6.27297975 -0.00049661 0.00030427 7.27248315 0.99848289 0.99919912 0.49320533;
+	-6.27297994 -0.00049653 0.00030422 7.27248342 0.99848313 0.99919925 0.49320545;
+	-6.27298013 -0.00049645 0.00030417 7.27248369 0.99848338 0.99919938 0.49320550;
+	-6.27298033 -0.00049637 0.00030412 7.27248396 0.99848362 0.99919951 0.49320544;
+	-6.27298052 -0.00049629 0.00030407 7.27248423 0.99848386 0.99919964 0.49320542;
+	-6.27298071 -0.00049621 0.00030403 7.27248450 0.99848411 0.99919976 0.49320549;
+	-6.27298090 -0.00049613 0.00030398 7.27248477 0.99848435 0.99919989 0.49320553;
+	-6.27298109 -0.00049605 0.00030393 7.27248504 0.99848459 0.99920002 0.49320549;
+	-6.27298128 -0.00049597 0.00030388 7.27248531 0.99848484 0.99920015 0.49320559;
+	-6.27298147 -0.00049589 0.00030383 7.27248557 0.99848508 0.99920028 0.49320560;
+	-6.27298166 -0.00049581 0.00030378 7.27248584 0.99848532 0.99920041 0.49320562;
+	-6.27298185 -0.00049573 0.00030373 7.27248611 0.99848556 0.99920053 0.49320572;
+	-6.27298204 -0.00049565 0.00030368 7.27248638 0.99848581 0.99920066 0.49320570;
+	-6.27298223 -0.00049557 0.00030364 7.27248665 0.99848605 0.99920079 0.49320571;
+	-6.27298242 -0.00049550 0.00030359 7.27248692 0.99848629 0.99920092 0.49320573;
+	-6.27298261 -0.00049542 0.00030354 7.27248719 0.99848653 0.99920105 0.49320576;
+	-6.27298280 -0.00049534 0.00030349 7.27248746 0.99848678 0.99920117 0.49320585;
+	-6.27298299 -0.00049526 0.00030344 7.27248773 0.99848702 0.99920130 0.49320584;
+	-6.27298318 -0.00049518 0.00030339 7.27248800 0.99848726 0.99920143 0.49320590;
+	-6.27298336 -0.00049510 0.00030334 7.27248827 0.99848750 0.99920156 0.49320592;
+	-6.27298355 -0.00049502 0.00030330 7.27248853 0.99848774 0.99920168 0.49320594;
+	-6.27298374 -0.00049494 0.00030325 7.27248880 0.99848799 0.99920181 0.49320595;
+	-6.27298393 -0.00049486 0.00030320 7.27248907 0.99848823 0.99920194 0.49320597;
+	-6.27298412 -0.00049478 0.00030315 7.27248934 0.99848847 0.99920207 0.49320596;
+	-6.27298431 -0.00049470 0.00030310 7.27248961 0.99848871 0.99920220 0.49320603;
+	-6.27298450 -0.00049462 0.00030305 7.27248988 0.99848895 0.99920232 0.49320613;
+	-6.27298469 -0.00049455 0.00030300 7.27249014 0.99848919 0.99920245 0.49320607;
+	-6.27298488 -0.00049447 0.00030296 7.27249041 0.99848944 0.99920258 0.49320616;
+	-6.27298507 -0.00049439 0.00030291 7.27249068 0.99848968 0.99920270 0.49320618;
+	-6.27298526 -0.00049431 0.00030286 7.27249095 0.99848992 0.99920283 0.49320613;
+	-6.27298545 -0.00049423 0.00030281 7.27249122 0.99849016 0.99920296 0.49320620;
+	-6.27298563 -0.00049415 0.00030276 7.27249148 0.99849040 0.99920309 0.49320622;
+	-6.27298582 -0.00049407 0.00030271 7.27249175 0.99849064 0.99920321 0.49320626;
+	-6.27298601 -0.00049399 0.00030267 7.27249202 0.99849088 0.99920334 0.49320625;
+	-6.27298620 -0.00049391 0.00030262 7.27249229 0.99849112 0.99920347 0.49320640;
+	-6.27298639 -0.00049384 0.00030257 7.27249255 0.99849136 0.99920360 0.49320640;
+	-6.27298658 -0.00049376 0.00030252 7.27249282 0.99849161 0.99920372 0.49320636;
+	-6.27298677 -0.00049368 0.00030247 7.27249309 0.99849185 0.99920385 0.49320641;
+	-6.27298695 -0.00049360 0.00030242 7.27249336 0.99849209 0.99920398 0.49320644;
+	-6.27298714 -0.00049352 0.00030238 7.27249362 0.99849233 0.99920410 0.49320643;
+	-6.27298733 -0.00049344 0.00030233 7.27249389 0.99849257 0.99920423 0.49320647;
+	-6.27298752 -0.00049336 0.00030228 7.27249416 0.99849281 0.99920436 0.49320649;
+	-6.27298771 -0.00049328 0.00030223 7.27249442 0.99849305 0.99920448 0.49320659;
+	-6.27298790 -0.00049321 0.00030218 7.27249469 0.99849329 0.99920461 0.49320657;
+	-6.27298808 -0.00049313 0.00030214 7.27249496 0.99849353 0.99920474 0.49320661;
+	-6.27298827 -0.00049305 0.00030209 7.27249522 0.99849377 0.99920486 0.49320660;
+	-6.27298846 -0.00049297 0.00030204 7.27249549 0.99849401 0.99920499 0.49320663;
+	-6.27298865 -0.00049289 0.00030199 7.27249576 0.99849425 0.99920512 0.49320673;
+	-6.27298883 -0.00049281 0.00030194 7.27249602 0.99849449 0.99920524 0.49320673;
+	-6.27298902 -0.00049273 0.00030189 7.27249629 0.99849473 0.99920537 0.49320669;
+	-6.27298921 -0.00049266 0.00030185 7.27249655 0.99849497 0.99920550 0.49320677;
+	-6.27298940 -0.00049258 0.00030180 7.27249682 0.99849521 0.99920562 0.49320680;
+	-6.27298959 -0.00049250 0.00030175 7.27249709 0.99849545 0.99920575 0.49320687;
+	-6.27298977 -0.00049242 0.00030170 7.27249735 0.99849569 0.99920588 0.49320693;
+	-6.27298996 -0.00049234 0.00030165 7.27249762 0.99849593 0.99920600 0.49320681;
+	-6.27299015 -0.00049226 0.00030161 7.27249788 0.99849616 0.99920613 0.49320699;
+	-6.27299033 -0.00049219 0.00030156 7.27249815 0.99849640 0.99920626 0.49320687;
+	-6.27299052 -0.00049211 0.00030151 7.27249841 0.99849664 0.99920638 0.49320699;
+	-6.27299071 -0.00049203 0.00030146 7.27249868 0.99849688 0.99920651 0.49320705;
+	-6.27299090 -0.00049195 0.00030141 7.27249894 0.99849712 0.99920663 0.49320709;
+	-6.27299108 -0.00049187 0.00030137 7.27249921 0.99849736 0.99920676 0.49320704;
+	-6.27299127 -0.00049180 0.00030132 7.27249948 0.99849760 0.99920689 0.49320700;
+	-6.27299146 -0.00049172 0.00030127 7.27249974 0.99849784 0.99920701 0.49320709;
+	-6.27299164 -0.00049164 0.00030122 7.27250001 0.99849808 0.99920714 0.49320722;
+	-6.27299183 -0.00049156 0.00030118 7.27250027 0.99849831 0.99920726 0.49320713;
+	-6.27299202 -0.00049148 0.00030113 7.27250053 0.99849855 0.99920739 0.49320717;
+	-6.27299220 -0.00049140 0.00030108 7.27250080 0.99849879 0.99920752 0.49320720;
+	-6.27299239 -0.00049133 0.00030103 7.27250106 0.99849903 0.99920764 0.49320724;
+	-6.27299258 -0.00049125 0.00030098 7.27250133 0.99849927 0.99920777 0.49320731;
+	-6.27299276 -0.00049117 0.00030094 7.27250159 0.99849951 0.99920789 0.49320733;
+	-6.27299295 -0.00049109 0.00030089 7.27250186 0.99849974 0.99920802 0.49320736;
+	-6.27299314 -0.00049102 0.00030084 7.27250212 0.99849998 0.99920814 0.49320742;
+	-6.27299332 -0.00049094 0.00030079 7.27250239 0.99850022 0.99920827 0.49320737;
+	-6.27299351 -0.00049086 0.00030075 7.27250265 0.99850046 0.99920840 0.49320741;
+	-6.27299370 -0.00049078 0.00030070 7.27250291 0.99850070 0.99920852 0.49320747;
+	-6.27299388 -0.00049070 0.00030065 7.27250318 0.99850093 0.99920865 0.49320746;
+	-6.27299407 -0.00049063 0.00030060 7.27250344 0.99850117 0.99920877 0.49320747;
+	-6.27299425 -0.00049055 0.00030055 7.27250371 0.99850141 0.99920890 0.49320753;
+	-6.27299444 -0.00049047 0.00030051 7.27250397 0.99850165 0.99920902 0.49320754;
+	-6.27299463 -0.00049039 0.00030046 7.27250423 0.99850188 0.99920915 0.49320761;
+	-6.27299481 -0.00049032 0.00030041 7.27250450 0.99850212 0.99920927 0.49320761;
+	-6.27299500 -0.00049024 0.00030036 7.27250476 0.99850236 0.99920940 0.49320763;
+	-6.27299518 -0.00049016 0.00030032 7.27250502 0.99850260 0.99920952 0.49320763;
+	-6.27299537 -0.00049008 0.00030027 7.27250529 0.99850283 0.99920965 0.49320764;
+	-6.27299556 -0.00049000 0.00030022 7.27250555 0.99850307 0.99920977 0.49320768;
+	-6.27299574 -0.00048993 0.00030017 7.27250581 0.99850331 0.99920990 0.49320774;
+	-6.27299593 -0.00048985 0.00030013 7.27250608 0.99850354 0.99921002 0.49320770;
+	-6.27299611 -0.00048977 0.00030008 7.27250634 0.99850378 0.99921015 0.49320782;
+	-6.27299630 -0.00048969 0.00030003 7.27250660 0.99850402 0.99921027 0.49320781;
+	-6.27299648 -0.00048962 0.00029998 7.27250687 0.99850426 0.99921040 0.49320784;
+	-6.27299667 -0.00048954 0.00029994 7.27250713 0.99850449 0.99921052 0.49320787;
+	-6.27299685 -0.00048946 0.00029989 7.27250739 0.99850473 0.99921065 0.49320791;
+	-6.27299704 -0.00048938 0.00029984 7.27250765 0.99850496 0.99921077 0.49320794;
+	-6.27299722 -0.00048931 0.00029979 7.27250792 0.99850520 0.99921090 0.49320795;
+	-6.27299741 -0.00048923 0.00029975 7.27250818 0.99850544 0.99921102 0.49320801;
+	-6.27299759 -0.00048915 0.00029970 7.27250844 0.99850567 0.99921115 0.49320802;
+	-6.27299778 -0.00048908 0.00029965 7.27250870 0.99850591 0.99921127 0.49320805;
+	-6.27299796 -0.00048900 0.00029960 7.27250896 0.99850615 0.99921140 0.49320810;
+	-6.27299815 -0.00048892 0.00029956 7.27250923 0.99850638 0.99921152 0.49320806;
+	-6.27299833 -0.00048884 0.00029951 7.27250949 0.99850662 0.99921165 0.49320815;
+	-6.27299852 -0.00048877 0.00029946 7.27250975 0.99850685 0.99921177 0.49320816;
+	-6.27299870 -0.00048869 0.00029941 7.27251001 0.99850709 0.99921190 0.49320817;
+	-6.27299889 -0.00048861 0.00029937 7.27251027 0.99850733 0.99921202 0.49320820;
+	-6.27299907 -0.00048854 0.00029932 7.27251054 0.99850756 0.99921214 0.49320826;
+	-6.27299926 -0.00048846 0.00029927 7.27251080 0.99850780 0.99921227 0.49320827;
+	-6.27299944 -0.00048838 0.00029923 7.27251106 0.99850803 0.99921239 0.49320823;
+	-6.27299962 -0.00048830 0.00029918 7.27251132 0.99850827 0.99921252 0.49320833;
+	-6.27299981 -0.00048823 0.00029913 7.27251158 0.99850850 0.99921264 0.49320833;
+	-6.27299999 -0.00048815 0.00029908 7.27251184 0.99850874 0.99921277 0.49320839;
+	-6.27300018 -0.00048807 0.00029904 7.27251210 0.99850897 0.99921289 0.49320841;
+	-6.27300036 -0.00048800 0.00029899 7.27251236 0.99850921 0.99921301 0.49320850;
+	-6.27300055 -0.00048792 0.00029894 7.27251263 0.99850944 0.99921314 0.49320846;
+	-6.27300073 -0.00048784 0.00029890 7.27251289 0.99850968 0.99921326 0.49320848;
+	-6.27300091 -0.00048777 0.00029885 7.27251315 0.99850991 0.99921339 0.49320847;
+	-6.27300110 -0.00048769 0.00029880 7.27251341 0.99851015 0.99921351 0.49320858;
+	-6.27300128 -0.00048761 0.00029875 7.27251367 0.99851038 0.99921363 0.49320864;
+	-6.27300146 -0.00048754 0.00029871 7.27251393 0.99851062 0.99921376 0.49320855;
+	-6.27300165 -0.00048746 0.00029866 7.27251419 0.99851085 0.99921388 0.49320856;
+	-6.27300183 -0.00048738 0.00029861 7.27251445 0.99851109 0.99921401 0.49320863;
+	-6.27300202 -0.00048730 0.00029857 7.27251471 0.99851132 0.99921413 0.49320867;
+	-6.27300220 -0.00048723 0.00029852 7.27251497 0.99851156 0.99921425 0.49320861;
+	-6.27300238 -0.00048715 0.00029847 7.27251523 0.99851179 0.99921438 0.49320874;
+	-6.27300257 -0.00048707 0.00029842 7.27251549 0.99851202 0.99921450 0.49320874;
+	-6.27300275 -0.00048700 0.00029838 7.27251575 0.99851226 0.99921462 0.49320881;
+	-6.27300293 -0.00048692 0.00029833 7.27251601 0.99851249 0.99921475 0.49320880;
+	-6.27300312 -0.00048685 0.00029828 7.27251627 0.99851273 0.99921487 0.49320887;
+	-6.27300330 -0.00048677 0.00029824 7.27251653 0.99851296 0.99921499 0.49320886;
+	-6.27300348 -0.00048669 0.00029819 7.27251679 0.99851320 0.99921512 0.49320893;
+	-6.27300367 -0.00048662 0.00029814 7.27251705 0.99851343 0.99921524 0.49320893;
+	-6.27300385 -0.00048654 0.00029810 7.27251731 0.99851366 0.99921536 0.49320895;
+	-6.27300403 -0.00048646 0.00029805 7.27251757 0.99851390 0.99921549 0.49320892;
+	-6.27300421 -0.00048639 0.00029800 7.27251783 0.99851413 0.99921561 0.49320898;
+	-6.27300440 -0.00048631 0.00029796 7.27251809 0.99851436 0.99921573 0.49320901;
+	-6.27300458 -0.00048623 0.00029791 7.27251835 0.99851460 0.99921586 0.49320901;
+	-6.27300476 -0.00048616 0.00029786 7.27251861 0.99851483 0.99921598 0.49320912;
+	-6.27300495 -0.00048608 0.00029782 7.27251886 0.99851506 0.99921610 0.49320910;
+	-6.27300513 -0.00048600 0.00029777 7.27251912 0.99851530 0.99921623 0.49320913;
+	-6.27300531 -0.00048593 0.00029772 7.27251938 0.99851553 0.99921635 0.49320917;
+	-6.27300549 -0.00048585 0.00029768 7.27251964 0.99851576 0.99921647 0.49320916;
+	-6.27300568 -0.00048578 0.00029763 7.27251990 0.99851600 0.99921660 0.49320920;
+	-6.27300586 -0.00048570 0.00029758 7.27252016 0.99851623 0.99921672 0.49320924;
+	-6.27300604 -0.00048562 0.00029753 7.27252042 0.99851646 0.99921684 0.49320926;
+	-6.27300622 -0.00048555 0.00029749 7.27252068 0.99851669 0.99921696 0.49320930;
+	-6.27300640 -0.00048547 0.00029744 7.27252093 0.99851693 0.99921709 0.49320931;
+	-6.27300659 -0.00048539 0.00029739 7.27252119 0.99851716 0.99921721 0.49320938;
+	-6.27300677 -0.00048532 0.00029735 7.27252145 0.99851739 0.99921733 0.49320939;
+	-6.27300695 -0.00048524 0.00029730 7.27252171 0.99851763 0.99921746 0.49320948;
+	-6.27300713 -0.00048517 0.00029725 7.27252197 0.99851786 0.99921758 0.49320954;
+	-6.27300732 -0.00048509 0.00029721 7.27252222 0.99851809 0.99921770 0.49320950;
+	-6.27300750 -0.00048501 0.00029716 7.27252248 0.99851832 0.99921782 0.49320952;
+	-6.27300768 -0.00048494 0.00029712 7.27252274 0.99851855 0.99921795 0.49320954;
+	-6.27300786 -0.00048486 0.00029707 7.27252300 0.99851879 0.99921807 0.49320960;
+	-6.27300804 -0.00048479 0.00029702 7.27252326 0.99851902 0.99921819 0.49320959;
+	-6.27300822 -0.00048471 0.00029698 7.27252351 0.99851925 0.99921831 0.49320958;
+	-6.27300841 -0.00048463 0.00029693 7.27252377 0.99851948 0.99921844 0.49320965;
+	-6.27300859 -0.00048456 0.00029688 7.27252403 0.99851971 0.99921856 0.49320967;
+	-6.27300877 -0.00048448 0.00029684 7.27252429 0.99851995 0.99921868 0.49320972;
+	-6.27300895 -0.00048441 0.00029679 7.27252454 0.99852018 0.99921880 0.49320973;
+	-6.27300913 -0.00048433 0.00029674 7.27252480 0.99852041 0.99921893 0.49320972;
+	-6.27300931 -0.00048426 0.00029670 7.27252506 0.99852064 0.99921905 0.49320980;
+	-6.27300949 -0.00048418 0.00029665 7.27252531 0.99852087 0.99921917 0.49320981;
+	-6.27300968 -0.00048410 0.00029660 7.27252557 0.99852110 0.99921929 0.49320974;
+	-6.27300986 -0.00048403 0.00029656 7.27252583 0.99852134 0.99921941 0.49320985;
+	-6.27301004 -0.00048395 0.00029651 7.27252608 0.99852157 0.99921954 0.49320992;
+	-6.27301022 -0.00048388 0.00029646 7.27252634 0.99852180 0.99921966 0.49320992;
+	-6.27301040 -0.00048380 0.00029642 7.27252660 0.99852203 0.99921978 0.49320993;
+	-6.27301058 -0.00048373 0.00029637 7.27252685 0.99852226 0.99921990 0.49320993;
+	-6.27301076 -0.00048365 0.00029633 7.27252711 0.99852249 0.99922002 0.49321001;
+	-6.27301094 -0.00048357 0.00029628 7.27252737 0.99852272 0.99922015 0.49321003;
+	-6.27301112 -0.00048350 0.00029623 7.27252762 0.99852295 0.99922027 0.49321005;
+	-6.27301130 -0.00048342 0.00029619 7.27252788 0.99852318 0.99922039 0.49321008;
+	-6.27301148 -0.00048335 0.00029614 7.27252814 0.99852341 0.99922051 0.49321008;
+	-6.27301166 -0.00048327 0.00029609 7.27252839 0.99852364 0.99922063 0.49321010;
+	-6.27301185 -0.00048320 0.00029605 7.27252865 0.99852388 0.99922075 0.49321017;
+	-6.27301203 -0.00048312 0.00029600 7.27252890 0.99852411 0.99922088 0.49321023;
+	-6.27301221 -0.00048305 0.00029596 7.27252916 0.99852434 0.99922100 0.49321020;
+	-6.27301239 -0.00048297 0.00029591 7.27252942 0.99852457 0.99922112 0.49321023;
+	-6.27301257 -0.00048290 0.00029586 7.27252967 0.99852480 0.99922124 0.49321024;
+	-6.27301275 -0.00048282 0.00029582 7.27252993 0.99852503 0.99922136 0.49321030;
+	-6.27301293 -0.00048275 0.00029577 7.27253018 0.99852526 0.99922148 0.49321031;
+	-6.27301311 -0.00048267 0.00029572 7.27253044 0.99852549 0.99922161 0.49321030;
+	-6.27301329 -0.00048259 0.00029568 7.27253069 0.99852572 0.99922173 0.49321030;
+	-6.27301347 -0.00048252 0.00029563 7.27253095 0.99852595 0.99922185 0.49321039;
+	-6.27301365 -0.00048244 0.00029559 7.27253120 0.99852618 0.99922197 0.49321037;
+	-6.27301383 -0.00048237 0.00029554 7.27253146 0.99852641 0.99922209 0.49321046;
+	-6.27301401 -0.00048229 0.00029549 7.27253171 0.99852664 0.99922221 0.49321048;
+	-6.27301419 -0.00048222 0.00029545 7.27253197 0.99852687 0.99922233 0.49321049;
+	-6.27301437 -0.00048214 0.00029540 7.27253222 0.99852710 0.99922245 0.49321046;
+	-6.27301455 -0.00048207 0.00029536 7.27253248 0.99852732 0.99922258 0.49321053;
+	-6.27301473 -0.00048199 0.00029531 7.27253273 0.99852755 0.99922270 0.49321060;
+	-6.27301491 -0.00048192 0.00029526 7.27253299 0.99852778 0.99922282 0.49321066;
+	-6.27301509 -0.00048184 0.00029522 7.27253324 0.99852801 0.99922294 0.49321062;
+	-6.27301526 -0.00048177 0.00029517 7.27253350 0.99852824 0.99922306 0.49321065;
+	-6.27301544 -0.00048169 0.00029513 7.27253375 0.99852847 0.99922318 0.49321069;
+	-6.27301562 -0.00048162 0.00029508 7.27253400 0.99852870 0.99922330 0.49321066;
+	-6.27301580 -0.00048154 0.00029503 7.27253426 0.99852893 0.99922342 0.49321075;
+	-6.27301598 -0.00048147 0.00029499 7.27253451 0.99852916 0.99922354 0.49321074;
+	-6.27301616 -0.00048139 0.00029494 7.27253477 0.99852939 0.99922366 0.49321082;
+	-6.27301634 -0.00048132 0.00029490 7.27253502 0.99852962 0.99922378 0.49321081;
+	-6.27301652 -0.00048124 0.00029485 7.27253528 0.99852984 0.99922391 0.49321083;
+	-6.27301670 -0.00048117 0.00029480 7.27253553 0.99853007 0.99922403 0.49321094;
+	-6.27301688 -0.00048109 0.00029476 7.27253578 0.99853030 0.99922415 0.49321096;
+	-6.27301706 -0.00048102 0.00029471 7.27253604 0.99853053 0.99922427 0.49321093;
+	-6.27301724 -0.00048095 0.00029467 7.27253629 0.99853076 0.99922439 0.49321094;
+	-6.27301741 -0.00048087 0.00029462 7.27253654 0.99853099 0.99922451 0.49321098;
+	-6.27301759 -0.00048080 0.00029458 7.27253680 0.99853121 0.99922463 0.49321102;
+	-6.27301777 -0.00048072 0.00029453 7.27253705 0.99853144 0.99922475 0.49321101;
+	-6.27301795 -0.00048065 0.00029448 7.27253730 0.99853167 0.99922487 0.49321109;
+	-6.27301813 -0.00048057 0.00029444 7.27253756 0.99853190 0.99922499 0.49321107;
+	-6.27301831 -0.00048050 0.00029439 7.27253781 0.99853213 0.99922511 0.49321107;
+	-6.27301849 -0.00048042 0.00029435 7.27253806 0.99853235 0.99922523 0.49321110;
+	-6.27301866 -0.00048035 0.00029430 7.27253832 0.99853258 0.99922535 0.49321118;
+	-6.27301884 -0.00048027 0.00029426 7.27253857 0.99853281 0.99922547 0.49321119;
+	-6.27301902 -0.00048020 0.00029421 7.27253882 0.99853304 0.99922559 0.49321116;
+	-6.27301920 -0.00048012 0.00029416 7.27253907 0.99853327 0.99922571 0.49321127;
+	-6.27301938 -0.00048005 0.00029412 7.27253933 0.99853349 0.99922583 0.49321123;
+	-6.27301956 -0.00047998 0.00029407 7.27253958 0.99853372 0.99922595 0.49321129;
+	-6.27301973 -0.00047990 0.00029403 7.27253983 0.99853395 0.99922607 0.49321135;
+	-6.27301991 -0.00047983 0.00029398 7.27254008 0.99853418 0.99922619 0.49321135;
+	-6.27302009 -0.00047975 0.00029394 7.27254034 0.99853440 0.99922631 0.49321139;
+	-6.27302027 -0.00047968 0.00029389 7.27254059 0.99853463 0.99922643 0.49321146;
+	-6.27302044 -0.00047960 0.00029384 7.27254084 0.99853486 0.99922655 0.49321142;
+	-6.27302062 -0.00047953 0.00029380 7.27254109 0.99853508 0.99922667 0.49321144;
+	-6.27302080 -0.00047946 0.00029375 7.27254135 0.99853531 0.99922679 0.49321144;
+	-6.27302098 -0.00047938 0.00029371 7.27254160 0.99853554 0.99922691 0.49321157;
+	-6.27302116 -0.00047931 0.00029366 7.27254185 0.99853577 0.99922703 0.49321152;
+	-6.27302133 -0.00047923 0.00029362 7.27254210 0.99853599 0.99922715 0.49321153;
+	-6.27302151 -0.00047916 0.00029357 7.27254235 0.99853622 0.99922727 0.49321157;
+	-6.27302169 -0.00047908 0.00029353 7.27254260 0.99853645 0.99922739 0.49321160;
+	-6.27302187 -0.00047901 0.00029348 7.27254286 0.99853667 0.99922751 0.49321170;
+	-6.27302204 -0.00047894 0.00029344 7.27254311 0.99853690 0.99922763 0.49321172;
+	-6.27302222 -0.00047886 0.00029339 7.27254336 0.99853712 0.99922775 0.49321163;
+	-6.27302240 -0.00047879 0.00029334 7.27254361 0.99853735 0.99922787 0.49321166;
+	-6.27302257 -0.00047871 0.00029330 7.27254386 0.99853758 0.99922799 0.49321175;
+	-6.27302275 -0.00047864 0.00029325 7.27254411 0.99853780 0.99922811 0.49321177;
+	-6.27302293 -0.00047857 0.00029321 7.27254436 0.99853803 0.99922823 0.49321185;
+	-6.27302311 -0.00047849 0.00029316 7.27254461 0.99853826 0.99922834 0.49321182;
+	-6.27302328 -0.00047842 0.00029312 7.27254486 0.99853848 0.99922846 0.49321190;
+	-6.27302346 -0.00047834 0.00029307 7.27254512 0.99853871 0.99922858 0.49321191;
+	-6.27302364 -0.00047827 0.00029303 7.27254537 0.99853893 0.99922870 0.49321187;
+	-6.27302381 -0.00047820 0.00029298 7.27254562 0.99853916 0.99922882 0.49321186;
+	-6.27302399 -0.00047812 0.00029294 7.27254587 0.99853939 0.99922894 0.49321193;
+	-6.27302417 -0.00047805 0.00029289 7.27254612 0.99853961 0.99922906 0.49321201;
+	-6.27302434 -0.00047797 0.00029285 7.27254637 0.99853984 0.99922918 0.49321205;
+	-6.27302452 -0.00047790 0.00029280 7.27254662 0.99854006 0.99922930 0.49321210;
+	-6.27302470 -0.00047783 0.00029276 7.27254687 0.99854029 0.99922942 0.49321211;
+	-6.27302487 -0.00047775 0.00029271 7.27254712 0.99854051 0.99922954 0.49321206;
+	-6.27302505 -0.00047768 0.00029267 7.27254737 0.99854074 0.99922965 0.49321212;
+	-6.27302523 -0.00047761 0.00029262 7.27254762 0.99854096 0.99922977 0.49321212;
+	-6.27302540 -0.00047753 0.00029257 7.27254787 0.99854119 0.99922989 0.49321221;
+	-6.27302558 -0.00047746 0.00029253 7.27254812 0.99854141 0.99923001 0.49321218;
+	-6.27302575 -0.00047739 0.00029248 7.27254837 0.99854164 0.99923013 0.49321223;
+	-6.27302593 -0.00047731 0.00029244 7.27254862 0.99854186 0.99923025 0.49321227;
+	-6.27302611 -0.00047724 0.00029239 7.27254887 0.99854209 0.99923037 0.49321227;
+	-6.27302628 -0.00047716 0.00029235 7.27254912 0.99854231 0.99923049 0.49321226;
+	-6.27302646 -0.00047709 0.00029230 7.27254937 0.99854254 0.99923060 0.49321229;
+	-6.27302664 -0.00047702 0.00029226 7.27254962 0.99854276 0.99923072 0.49321232;
+	-6.27302681 -0.00047694 0.00029221 7.27254987 0.99854299 0.99923084 0.49321239;
+	-6.27302699 -0.00047687 0.00029217 7.27255012 0.99854321 0.99923096 0.49321240;
+	-6.27302716 -0.00047680 0.00029212 7.27255037 0.99854344 0.99923108 0.49321246;
+	-6.27302734 -0.00047672 0.00029208 7.27255061 0.99854366 0.99923120 0.49321244;
+	-6.27302751 -0.00047665 0.00029203 7.27255086 0.99854388 0.99923132 0.49321242;
+	-6.27302769 -0.00047658 0.00029199 7.27255111 0.99854411 0.99923143 0.49321242;
+	-6.27302787 -0.00047650 0.00029194 7.27255136 0.99854433 0.99923155 0.49321258;
+	-6.27302804 -0.00047643 0.00029190 7.27255161 0.99854456 0.99923167 0.49321251;
+	-6.27302822 -0.00047636 0.00029185 7.27255186 0.99854478 0.99923179 0.49321261;
+	-6.27302839 -0.00047628 0.00029181 7.27255211 0.99854501 0.99923191 0.49321264;
+	-6.27302857 -0.00047621 0.00029176 7.27255236 0.99854523 0.99923203 0.49321265;
+	-6.27302874 -0.00047614 0.00029172 7.27255261 0.99854545 0.99923214 0.49321268;
+	-6.27302892 -0.00047606 0.00029167 7.27255285 0.99854568 0.99923226 0.49321269;
+	-6.27302909 -0.00047599 0.00029163 7.27255310 0.99854590 0.99923238 0.49321277;
+	-6.27302927 -0.00047592 0.00029158 7.27255335 0.99854612 0.99923250 0.49321272;
+	-6.27302944 -0.00047584 0.00029154 7.27255360 0.99854635 0.99923262 0.49321278;
+	-6.27302962 -0.00047577 0.00029150 7.27255385 0.99854657 0.99923273 0.49321287;
+	-6.27302979 -0.00047570 0.00029145 7.27255410 0.99854679 0.99923285 0.49321280;
+	-6.27302997 -0.00047562 0.00029141 7.27255434 0.99854702 0.99923297 0.49321291;
+	-6.27303014 -0.00047555 0.00029136 7.27255459 0.99854724 0.99923309 0.49321279;
+	-6.27303032 -0.00047548 0.00029132 7.27255484 0.99854746 0.99923321 0.49321284;
+	-6.27303049 -0.00047541 0.00029127 7.27255509 0.99854769 0.99923332 0.49321288;
+	-6.27303067 -0.00047533 0.00029123 7.27255533 0.99854791 0.99923344 0.49321294;
+	-6.27303084 -0.00047526 0.00029118 7.27255558 0.99854813 0.99923356 0.49321292;
+	-6.27303102 -0.00047519 0.00029114 7.27255583 0.99854836 0.99923368 0.49321300;
+	-6.27303119 -0.00047511 0.00029109 7.27255608 0.99854858 0.99923379 0.49321302;
+	-6.27303137 -0.00047504 0.00029105 7.27255632 0.99854880 0.99923391 0.49321303;
+	-6.27303154 -0.00047497 0.00029100 7.27255657 0.99854903 0.99923403 0.49321311;
+	-6.27303171 -0.00047490 0.00029096 7.27255682 0.99854925 0.99923415 0.49321311;
+	-6.27303189 -0.00047482 0.00029091 7.27255707 0.99854947 0.99923426 0.49321315;
+	-6.27303206 -0.00047475 0.00029087 7.27255731 0.99854969 0.99923438 0.49321319;
+	-6.27303224 -0.00047468 0.00029082 7.27255756 0.99854992 0.99923450 0.49321317;
+	-6.27303241 -0.00047460 0.00029078 7.27255781 0.99855014 0.99923462 0.49321321;
+	-6.27303259 -0.00047453 0.00029073 7.27255805 0.99855036 0.99923473 0.49321326;
+	-6.27303276 -0.00047446 0.00029069 7.27255830 0.99855058 0.99923485 0.49321318;
+	-6.27303293 -0.00047439 0.00029065 7.27255855 0.99855081 0.99923497 0.49321326;
+	-6.27303311 -0.00047431 0.00029060 7.27255879 0.99855103 0.99923509 0.49321333;
+	-6.27303328 -0.00047424 0.00029056 7.27255904 0.99855125 0.99923520 0.49321333;
+	-6.27303345 -0.00047417 0.00029051 7.27255929 0.99855147 0.99923532 0.49321344;
+	-6.27303363 -0.00047410 0.00029047 7.27255953 0.99855169 0.99923544 0.49321337;
+	-6.27303380 -0.00047402 0.00029042 7.27255978 0.99855192 0.99923555 0.49321345;
+	-6.27303398 -0.00047395 0.00029038 7.27256003 0.99855214 0.99923567 0.49321337;
+	-6.27303415 -0.00047388 0.00029033 7.27256027 0.99855236 0.99923579 0.49321344;
+	-6.27303432 -0.00047380 0.00029029 7.27256052 0.99855258 0.99923591 0.49321346;
+	-6.27303450 -0.00047373 0.00029025 7.27256076 0.99855280 0.99923602 0.49321354;
+	-6.27303467 -0.00047366 0.00029020 7.27256101 0.99855302 0.99923614 0.49321353;
+	-6.27303484 -0.00047359 0.00029016 7.27256126 0.99855325 0.99923626 0.49321361;
+	-6.27303502 -0.00047351 0.00029011 7.27256150 0.99855347 0.99923637 0.49321358;
+	-6.27303519 -0.00047344 0.00029007 7.27256175 0.99855369 0.99923649 0.49321363;
+	-6.27303536 -0.00047337 0.00029002 7.27256199 0.99855391 0.99923661 0.49321367;
+	-6.27303554 -0.00047330 0.00028998 7.27256224 0.99855413 0.99923672 0.49321364;
+	-6.27303571 -0.00047323 0.00028993 7.27256248 0.99855435 0.99923684 0.49321377;
+	-6.27303588 -0.00047315 0.00028989 7.27256273 0.99855457 0.99923696 0.49321375;
+	-6.27303606 -0.00047308 0.00028985 7.27256298 0.99855479 0.99923707 0.49321379;
+	-6.27303623 -0.00047301 0.00028980 7.27256322 0.99855501 0.99923719 0.49321377;
+	-6.27303640 -0.00047294 0.00028976 7.27256347 0.99855524 0.99923731 0.49321372;
+	-6.27303658 -0.00047286 0.00028971 7.27256371 0.99855546 0.99923742 0.49321383;
+	-6.27303675 -0.00047279 0.00028967 7.27256396 0.99855568 0.99923754 0.49321384;
+	-6.27303692 -0.00047272 0.00028962 7.27256420 0.99855590 0.99923766 0.49321394;
+	-6.27303709 -0.00047265 0.00028958 7.27256445 0.99855612 0.99923777 0.49321386;
+	-6.27303727 -0.00047258 0.00028954 7.27256469 0.99855634 0.99923789 0.49321390;
+	-6.27303744 -0.00047250 0.00028949 7.27256494 0.99855656 0.99923801 0.49321401;
+	-6.27303761 -0.00047243 0.00028945 7.27256518 0.99855678 0.99923812 0.49321394;
+	-6.27303778 -0.00047236 0.00028940 7.27256543 0.99855700 0.99923824 0.49321395;
+	-6.27303796 -0.00047229 0.00028936 7.27256567 0.99855722 0.99923835 0.49321400;
+	-6.27303813 -0.00047221 0.00028931 7.27256591 0.99855744 0.99923847 0.49321392;
+	-6.27303830 -0.00047214 0.00028927 7.27256616 0.99855766 0.99923859 0.49321409;
+	-6.27303847 -0.00047207 0.00028923 7.27256640 0.99855788 0.99923870 0.49321404;
+	-6.27303865 -0.00047200 0.00028918 7.27256665 0.99855810 0.99923882 0.49321416;
+	-6.27303882 -0.00047193 0.00028914 7.27256689 0.99855832 0.99923893 0.49321409;
+	-6.27303899 -0.00047185 0.00028909 7.27256714 0.99855854 0.99923905 0.49321418;
+	-6.27303916 -0.00047178 0.00028905 7.27256738 0.99855876 0.99923917 0.49321418;
+	-6.27303933 -0.00047171 0.00028901 7.27256762 0.99855898 0.99923928 0.49321424;
+	-6.27303951 -0.00047164 0.00028896 7.27256787 0.99855920 0.99923940 0.49321434;
+	-6.27303968 -0.00047157 0.00028892 7.27256811 0.99855942 0.99923951 0.49321431;
+	-6.27303985 -0.00047150 0.00028887 7.27256835 0.99855964 0.99923963 0.49321429;
+	-6.27304002 -0.00047142 0.00028883 7.27256860 0.99855986 0.99923975 0.49321428;
+	-6.27304019 -0.00047135 0.00028879 7.27256884 0.99856008 0.99923986 0.49321434;
+	-6.27304037 -0.00047128 0.00028874 7.27256909 0.99856030 0.99923998 0.49321435;
+	-6.27304054 -0.00047121 0.00028870 7.27256933 0.99856052 0.99924009 0.49321437;
+	-6.27304071 -0.00047114 0.00028865 7.27256957 0.99856073 0.99924021 0.49321446;
+	-6.27304088 -0.00047106 0.00028861 7.27256982 0.99856095 0.99924032 0.49321442;
+	-6.27304105 -0.00047099 0.00028857 7.27257006 0.99856117 0.99924044 0.49321442;
+	-6.27304122 -0.00047092 0.00028852 7.27257030 0.99856139 0.99924056 0.49321451;
+	-6.27304139 -0.00047085 0.00028848 7.27257054 0.99856161 0.99924067 0.49321455;
+	-6.27304157 -0.00047078 0.00028843 7.27257079 0.99856183 0.99924079 0.49321455;
+	-6.27304174 -0.00047071 0.00028839 7.27257103 0.99856205 0.99924090 0.49321459;
+	-6.27304191 -0.00047064 0.00028835 7.27257127 0.99856227 0.99924102 0.49321464;
+	-6.27304208 -0.00047056 0.00028830 7.27257152 0.99856249 0.99924113 0.49321460;
+	-6.27304225 -0.00047049 0.00028826 7.27257176 0.99856270 0.99924125 0.49321463;
+	-6.27304242 -0.00047042 0.00028822 7.27257200 0.99856292 0.99924136 0.49321476;
+	-6.27304259 -0.00047035 0.00028817 7.27257224 0.99856314 0.99924148 0.49321475;
+	-6.27304276 -0.00047028 0.00028813 7.27257249 0.99856336 0.99924159 0.49321471;
+	-6.27304294 -0.00047021 0.00028808 7.27257273 0.99856358 0.99924171 0.49321475;
+	-6.27304311 -0.00047013 0.00028804 7.27257297 0.99856380 0.99924183 0.49321476;
+	-6.27304328 -0.00047006 0.00028800 7.27257321 0.99856401 0.99924194 0.49321484;
+	-6.27304345 -0.00046999 0.00028795 7.27257346 0.99856423 0.99924206 0.49321477;
+	-6.27304362 -0.00046992 0.00028791 7.27257370 0.99856445 0.99924217 0.49321483;
+	-6.27304379 -0.00046985 0.00028787 7.27257394 0.99856467 0.99924229 0.49321495;
+	-6.27304396 -0.00046978 0.00028782 7.27257418 0.99856489 0.99924240 0.49321491;
+	-6.27304413 -0.00046971 0.00028778 7.27257442 0.99856510 0.99924252 0.49321493;
+	-6.27304430 -0.00046964 0.00028773 7.27257467 0.99856532 0.99924263 0.49321498;
+	-6.27304447 -0.00046956 0.00028769 7.27257491 0.99856554 0.99924275 0.49321496;
+	-6.27304464 -0.00046949 0.00028765 7.27257515 0.99856576 0.99924286 0.49321502;
+	-6.27304481 -0.00046942 0.00028760 7.27257539 0.99856597 0.99924298 0.49321503;
+	-6.27304498 -0.00046935 0.00028756 7.27257563 0.99856619 0.99924309 0.49321507;
+	-6.27304515 -0.00046928 0.00028752 7.27257587 0.99856641 0.99924320 0.49321515;
+	-6.27304532 -0.00046921 0.00028747 7.27257611 0.99856663 0.99924332 0.49321508;
+	-6.27304549 -0.00046914 0.00028743 7.27257636 0.99856684 0.99924343 0.49321514;
+	-6.27304566 -0.00046907 0.00028738 7.27257660 0.99856706 0.99924355 0.49321526;
+	-6.27304583 -0.00046900 0.00028734 7.27257684 0.99856728 0.99924366 0.49321521;
+	-6.27304600 -0.00046892 0.00028730 7.27257708 0.99856750 0.99924378 0.49321521;
+	-6.27304617 -0.00046885 0.00028725 7.27257732 0.99856771 0.99924389 0.49321523;
+	-6.27304634 -0.00046878 0.00028721 7.27257756 0.99856793 0.99924401 0.49321526;
+	-6.27304651 -0.00046871 0.00028717 7.27257780 0.99856815 0.99924412 0.49321530;
+	-6.27304668 -0.00046864 0.00028712 7.27257804 0.99856836 0.99924424 0.49321535;
+	-6.27304685 -0.00046857 0.00028708 7.27257828 0.99856858 0.99924435 0.49321541;
+	-6.27304702 -0.00046850 0.00028704 7.27257852 0.99856880 0.99924446 0.49321529;
+	-6.27304719 -0.00046843 0.00028699 7.27257876 0.99856901 0.99924458 0.49321541;
+	-6.27304736 -0.00046836 0.00028695 7.27257901 0.99856923 0.99924469 0.49321535;
+	-6.27304753 -0.00046829 0.00028691 7.27257925 0.99856945 0.99924481 0.49321543;
+	-6.27304770 -0.00046821 0.00028686 7.27257949 0.99856966 0.99924492 0.49321548;
+	-6.27304787 -0.00046814 0.00028682 7.27257973 0.99856988 0.99924504 0.49321551;
+	-6.27304804 -0.00046807 0.00028678 7.27257997 0.99857010 0.99924515 0.49321545;
+	-6.27304821 -0.00046800 0.00028673 7.27258021 0.99857031 0.99924526 0.49321554;
+	-6.27304838 -0.00046793 0.00028669 7.27258045 0.99857053 0.99924538 0.49321557;
+	-6.27304855 -0.00046786 0.00028665 7.27258069 0.99857074 0.99924549 0.49321561;
+	-6.27304872 -0.00046779 0.00028660 7.27258093 0.99857096 0.99924561 0.49321567;
+	-6.27304889 -0.00046772 0.00028656 7.27258117 0.99857118 0.99924572 0.49321567;
+	-6.27304906 -0.00046765 0.00028652 7.27258141 0.99857139 0.99924583 0.49321571;
+	-6.27304922 -0.00046758 0.00028647 7.27258165 0.99857161 0.99924595 0.49321566;
+	-6.27304939 -0.00046751 0.00028643 7.27258189 0.99857182 0.99924606 0.49321576;
+	-6.27304956 -0.00046744 0.00028639 7.27258213 0.99857204 0.99924618 0.49321567;
+	-6.27304973 -0.00046737 0.00028634 7.27258236 0.99857226 0.99924629 0.49321585;
+	-6.27304990 -0.00046730 0.00028630 7.27258260 0.99857247 0.99924640 0.49321576;
+	-6.27305007 -0.00046723 0.00028626 7.27258284 0.99857269 0.99924652 0.49321581;
+	-6.27305024 -0.00046715 0.00028621 7.27258308 0.99857290 0.99924663 0.49321580;
+	-6.27305041 -0.00046708 0.00028617 7.27258332 0.99857312 0.99924675 0.49321590;
+	-6.27305057 -0.00046701 0.00028613 7.27258356 0.99857333 0.99924686 0.49321582;
+	-6.27305074 -0.00046694 0.00028608 7.27258380 0.99857355 0.99924697 0.49321587;
+	-6.27305091 -0.00046687 0.00028604 7.27258404 0.99857376 0.99924709 0.49321595;
+	-6.27305108 -0.00046680 0.00028600 7.27258428 0.99857398 0.99924720 0.49321595;
+	-6.27305125 -0.00046673 0.00028595 7.27258452 0.99857419 0.99924731 0.49321600;
+	-6.27305142 -0.00046666 0.00028591 7.27258476 0.99857441 0.99924743 0.49321598;
+	-6.27305159 -0.00046659 0.00028587 7.27258499 0.99857462 0.99924754 0.49321613;
+	-6.27305175 -0.00046652 0.00028582 7.27258523 0.99857484 0.99924765 0.49321611;
+	-6.27305192 -0.00046645 0.00028578 7.27258547 0.99857505 0.99924777 0.49321600;
+	-6.27305209 -0.00046638 0.00028574 7.27258571 0.99857527 0.99924788 0.49321621;
+	-6.27305226 -0.00046631 0.00028570 7.27258595 0.99857548 0.99924799 0.49321615;
+	-6.27305243 -0.00046624 0.00028565 7.27258619 0.99857570 0.99924811 0.49321620;
+	-6.27305259 -0.00046617 0.00028561 7.27258642 0.99857591 0.99924822 0.49321625;
+	-6.27305276 -0.00046610 0.00028557 7.27258666 0.99857613 0.99924833 0.49321621;
+	-6.27305293 -0.00046603 0.00028552 7.27258690 0.99857634 0.99924845 0.49321630;
+	-6.27305310 -0.00046596 0.00028548 7.27258714 0.99857656 0.99924856 0.49321623;
+	-6.27305327 -0.00046589 0.00028544 7.27258738 0.99857677 0.99924867 0.49321633;
+	-6.27305343 -0.00046582 0.00028539 7.27258761 0.99857698 0.99924879 0.49321637;
+	-6.27305360 -0.00046575 0.00028535 7.27258785 0.99857720 0.99924890 0.49321640;
+	-6.27305377 -0.00046568 0.00028531 7.27258809 0.99857741 0.99924901 0.49321641;
+	-6.27305394 -0.00046561 0.00028527 7.27258833 0.99857763 0.99924913 0.49321644;
+	-6.27305410 -0.00046554 0.00028522 7.27258857 0.99857784 0.99924924 0.49321640;
+	-6.27305427 -0.00046547 0.00028518 7.27258880 0.99857805 0.99924935 0.49321644;
+	-6.27305444 -0.00046540 0.00028514 7.27258904 0.99857827 0.99924946 0.49321647;
+	-6.27305461 -0.00046533 0.00028509 7.27258928 0.99857848 0.99924958 0.49321655;
+	-6.27305477 -0.00046526 0.00028505 7.27258952 0.99857870 0.99924969 0.49321652;
+	-6.27305494 -0.00046519 0.00028501 7.27258975 0.99857891 0.99924980 0.49321651;
+	-6.27305511 -0.00046512 0.00028497 7.27258999 0.99857912 0.99924992 0.49321656;
+	-6.27305528 -0.00046505 0.00028492 7.27259023 0.99857934 0.99925003 0.49321656;
+	-6.27305544 -0.00046498 0.00028488 7.27259046 0.99857955 0.99925014 0.49321665;
+	-6.27305561 -0.00046491 0.00028484 7.27259070 0.99857976 0.99925025 0.49321668;
+	-6.27305578 -0.00046484 0.00028479 7.27259094 0.99857998 0.99925037 0.49321665;
+	-6.27305594 -0.00046477 0.00028475 7.27259117 0.99858019 0.99925048 0.49321672;
+	-6.27305611 -0.00046470 0.00028471 7.27259141 0.99858040 0.99925059 0.49321675;
+	-6.27305628 -0.00046463 0.00028467 7.27259165 0.99858062 0.99925070 0.49321677;
+	-6.27305645 -0.00046456 0.00028462 7.27259188 0.99858083 0.99925082 0.49321675;
+	-6.27305661 -0.00046449 0.00028458 7.27259212 0.99858104 0.99925093 0.49321677;
+	-6.27305678 -0.00046442 0.00028454 7.27259236 0.99858126 0.99925104 0.49321687;
+	-6.27305695 -0.00046435 0.00028449 7.27259259 0.99858147 0.99925115 0.49321692;
+	-6.27305711 -0.00046428 0.00028445 7.27259283 0.99858168 0.99925127 0.49321690;
+	-6.27305728 -0.00046421 0.00028441 7.27259307 0.99858189 0.99925138 0.49321690;
+	-6.27305745 -0.00046414 0.00028437 7.27259330 0.99858211 0.99925149 0.49321703;
+	-6.27305761 -0.00046407 0.00028432 7.27259354 0.99858232 0.99925160 0.49321695;
+	-6.27305778 -0.00046400 0.00028428 7.27259377 0.99858253 0.99925171 0.49321702;
+	-6.27305795 -0.00046393 0.00028424 7.27259401 0.99858275 0.99925183 0.49321702;
+	-6.27305811 -0.00046386 0.00028420 7.27259425 0.99858296 0.99925194 0.49321707;
+	-6.27305828 -0.00046380 0.00028415 7.27259448 0.99858317 0.99925205 0.49321711;
+	-6.27305844 -0.00046373 0.00028411 7.27259472 0.99858338 0.99925216 0.49321702;
+	-6.27305861 -0.00046366 0.00028407 7.27259495 0.99858359 0.99925227 0.49321714;
+	-6.27305878 -0.00046359 0.00028403 7.27259519 0.99858381 0.99925239 0.49321714;
+	-6.27305894 -0.00046352 0.00028398 7.27259543 0.99858402 0.99925250 0.49321712;
+	-6.27305911 -0.00046345 0.00028394 7.27259566 0.99858423 0.99925261 0.49321724;
+	-6.27305927 -0.00046338 0.00028390 7.27259590 0.99858444 0.99925272 0.49321723;
+	-6.27305944 -0.00046331 0.00028386 7.27259613 0.99858465 0.99925283 0.49321718;
+	-6.27305961 -0.00046324 0.00028381 7.27259637 0.99858487 0.99925295 0.49321725;
+	-6.27305977 -0.00046317 0.00028377 7.27259660 0.99858508 0.99925306 0.49321729;
+	-6.27305994 -0.00046310 0.00028373 7.27259684 0.99858529 0.99925317 0.49321728;
+	-6.27306010 -0.00046303 0.00028369 7.27259707 0.99858550 0.99925328 0.49321728;
+	-6.27306027 -0.00046296 0.00028364 7.27259731 0.99858571 0.99925339 0.49321738;
+	-6.27306044 -0.00046289 0.00028360 7.27259754 0.99858593 0.99925351 0.49321730;
+	-6.27306060 -0.00046282 0.00028356 7.27259778 0.99858614 0.99925362 0.49321736;
+	-6.27306077 -0.00046276 0.00028352 7.27259801 0.99858635 0.99925373 0.49321743;
+	-6.27306093 -0.00046269 0.00028347 7.27259825 0.99858656 0.99925384 0.49321740;
+	-6.27306110 -0.00046262 0.00028343 7.27259848 0.99858677 0.99925395 0.49321757;
+	-6.27306126 -0.00046255 0.00028339 7.27259872 0.99858698 0.99925406 0.49321754;
+	-6.27306143 -0.00046248 0.00028335 7.27259895 0.99858719 0.99925417 0.49321760;
+	-6.27306159 -0.00046241 0.00028330 7.27259918 0.99858740 0.99925429 0.49321757;
+	-6.27306176 -0.00046234 0.00028326 7.27259942 0.99858762 0.99925440 0.49321761;
+	-6.27306192 -0.00046227 0.00028322 7.27259965 0.99858783 0.99925451 0.49321757;
+	-6.27306209 -0.00046220 0.00028318 7.27259989 0.99858804 0.99925462 0.49321764;
+	-6.27306225 -0.00046213 0.00028314 7.27260012 0.99858825 0.99925473 0.49321769;
+	-6.27306242 -0.00046206 0.00028309 7.27260036 0.99858846 0.99925484 0.49321767;
+	-6.27306259 -0.00046200 0.00028305 7.27260059 0.99858867 0.99925495 0.49321773;
+	-6.27306275 -0.00046193 0.00028301 7.27260082 0.99858888 0.99925506 0.49321772;
+	-6.27306292 -0.00046186 0.00028297 7.27260106 0.99858909 0.99925518 0.49321771;
+	-6.27306308 -0.00046179 0.00028292 7.27260129 0.99858930 0.99925529 0.49321779;
+	-6.27306324 -0.00046172 0.00028288 7.27260152 0.99858951 0.99925540 0.49321779;
+	-6.27306341 -0.00046165 0.00028284 7.27260176 0.99858972 0.99925551 0.49321780;
+	-6.27306357 -0.00046158 0.00028280 7.27260199 0.99858993 0.99925562 0.49321791;
+	-6.27306374 -0.00046151 0.00028275 7.27260223 0.99859014 0.99925573 0.49321791;
+	-6.27306390 -0.00046144 0.00028271 7.27260246 0.99859035 0.99925584 0.49321788;
+	-6.27306407 -0.00046138 0.00028267 7.27260269 0.99859056 0.99925595 0.49321791;
+	-6.27306423 -0.00046131 0.00028263 7.27260293 0.99859077 0.99925606 0.49321799;
+	-6.27306440 -0.00046124 0.00028259 7.27260316 0.99859098 0.99925618 0.49321795;
+	-6.27306456 -0.00046117 0.00028254 7.27260339 0.99859119 0.99925629 0.49321797;
+	-6.27306473 -0.00046110 0.00028250 7.27260363 0.99859140 0.99925640 0.49321800;
+	-6.27306489 -0.00046103 0.00028246 7.27260386 0.99859161 0.99925651 0.49321804;
+	-6.27306505 -0.00046096 0.00028242 7.27260409 0.99859182 0.99925662 0.49321800;
+	-6.27306522 -0.00046090 0.00028238 7.27260432 0.99859203 0.99925673 0.49321804;
+	-6.27306538 -0.00046083 0.00028233 7.27260456 0.99859224 0.99925684 0.49321806;
+	-6.27306555 -0.00046076 0.00028229 7.27260479 0.99859245 0.99925695 0.49321814;
+	-6.27306571 -0.00046069 0.00028225 7.27260502 0.99859266 0.99925706 0.49321818;
+	-6.27306588 -0.00046062 0.00028221 7.27260525 0.99859287 0.99925717 0.49321811;
+	-6.27306604 -0.00046055 0.00028217 7.27260549 0.99859308 0.99925728 0.49321821;
+	-6.27306620 -0.00046048 0.00028212 7.27260572 0.99859329 0.99925739 0.49321828;
+	-6.27306637 -0.00046042 0.00028208 7.27260595 0.99859350 0.99925750 0.49321829;
+	-6.27306653 -0.00046035 0.00028204 7.27260618 0.99859371 0.99925761 0.49321826;
+	-6.27306670 -0.00046028 0.00028200 7.27260642 0.99859392 0.99925772 0.49321833;
+	-6.27306686 -0.00046021 0.00028196 7.27260665 0.99859413 0.99925783 0.49321833;
+	-6.27306702 -0.00046014 0.00028191 7.27260688 0.99859434 0.99925794 0.49321830;
+	-6.27306719 -0.00046007 0.00028187 7.27260711 0.99859455 0.99925805 0.49321842;
+	-6.27306735 -0.00046000 0.00028183 7.27260735 0.99859475 0.99925817 0.49321838;
+	-6.27306751 -0.00045994 0.00028179 7.27260758 0.99859496 0.99925828 0.49321849;
+	-6.27306768 -0.00045987 0.00028175 7.27260781 0.99859517 0.99925839 0.49321848;
+	-6.27306784 -0.00045980 0.00028170 7.27260804 0.99859538 0.99925850 0.49321848;
+	-6.27306800 -0.00045973 0.00028166 7.27260827 0.99859559 0.99925861 0.49321852;
+	-6.27306817 -0.00045966 0.00028162 7.27260850 0.99859580 0.99925872 0.49321855;
+	-6.27306833 -0.00045959 0.00028158 7.27260874 0.99859601 0.99925883 0.49321849;
+	-6.27306849 -0.00045953 0.00028154 7.27260897 0.99859622 0.99925894 0.49321861;
+	-6.27306866 -0.00045946 0.00028150 7.27260920 0.99859642 0.99925905 0.49321858;
+	-6.27306882 -0.00045939 0.00028145 7.27260943 0.99859663 0.99925916 0.49321869;
+	-6.27306898 -0.00045932 0.00028141 7.27260966 0.99859684 0.99925927 0.49321873;
+	-6.27306915 -0.00045925 0.00028137 7.27260989 0.99859705 0.99925938 0.49321868;
+	-6.27306931 -0.00045919 0.00028133 7.27261012 0.99859726 0.99925949 0.49321872;
+	-6.27306947 -0.00045912 0.00028129 7.27261035 0.99859746 0.99925960 0.49321879;
+	-6.27306964 -0.00045905 0.00028124 7.27261059 0.99859767 0.99925971 0.49321873;
+	-6.27306980 -0.00045898 0.00028120 7.27261082 0.99859788 0.99925982 0.49321881;
+	-6.27306996 -0.00045891 0.00028116 7.27261105 0.99859809 0.99925993 0.49321869;
+	-6.27307012 -0.00045885 0.00028112 7.27261128 0.99859830 0.99926003 0.49321889;
+	-6.27307029 -0.00045878 0.00028108 7.27261151 0.99859850 0.99926014 0.49321883;
+	-6.27307045 -0.00045871 0.00028104 7.27261174 0.99859871 0.99926025 0.49321889;
+	-6.27307061 -0.00045864 0.00028099 7.27261197 0.99859892 0.99926036 0.49321886;
+	-6.27307078 -0.00045857 0.00028095 7.27261220 0.99859913 0.99926047 0.49321894;
+	-6.27307094 -0.00045851 0.00028091 7.27261243 0.99859934 0.99926058 0.49321894;
+	-6.27307110 -0.00045844 0.00028087 7.27261266 0.99859954 0.99926069 0.49321891;
+	-6.27307126 -0.00045837 0.00028083 7.27261289 0.99859975 0.99926080 0.49321907;
+	-6.27307142 -0.00045830 0.00028079 7.27261312 0.99859996 0.99926091 0.49321892;
+	-6.27307159 -0.00045823 0.00028074 7.27261335 0.99860016 0.99926102 0.49321904;
+	-6.27307175 -0.00045817 0.00028070 7.27261358 0.99860037 0.99926113 0.49321907;
+	-6.27307191 -0.00045810 0.00028066 7.27261381 0.99860058 0.99926124 0.49321903;
+	-6.27307207 -0.00045803 0.00028062 7.27261404 0.99860079 0.99926135 0.49321912;
+	-6.27307224 -0.00045796 0.00028058 7.27261427 0.99860099 0.99926146 0.49321912;
+	-6.27307240 -0.00045790 0.00028054 7.27261450 0.99860120 0.99926157 0.49321912;
+	-6.27307256 -0.00045783 0.00028050 7.27261473 0.99860141 0.99926168 0.49321924;
+	-6.27307272 -0.00045776 0.00028045 7.27261496 0.99860161 0.99926179 0.49321924;
+	-6.27307288 -0.00045769 0.00028041 7.27261519 0.99860182 0.99926190 0.49321921;
+	-6.27307305 -0.00045762 0.00028037 7.27261542 0.99860203 0.99926200 0.49321927;
+	-6.27307321 -0.00045756 0.00028033 7.27261565 0.99860223 0.99926211 0.49321925;
+	-6.27307337 -0.00045749 0.00028029 7.27261588 0.99860244 0.99926222 0.49321926;
+	-6.27307353 -0.00045742 0.00028025 7.27261611 0.99860265 0.99926233 0.49321932;
+	-6.27307369 -0.00045735 0.00028021 7.27261634 0.99860285 0.99926244 0.49321935;
+	-6.27307386 -0.00045729 0.00028016 7.27261657 0.99860306 0.99926255 0.49321931;
+	-6.27307402 -0.00045722 0.00028012 7.27261680 0.99860327 0.99926266 0.49321940;
+	-6.27307418 -0.00045715 0.00028008 7.27261703 0.99860347 0.99926277 0.49321940;
+	-6.27307434 -0.00045708 0.00028004 7.27261726 0.99860368 0.99926288 0.49321938;
+	-6.27307450 -0.00045702 0.00028000 7.27261749 0.99860389 0.99926299 0.49321955;
+	-6.27307466 -0.00045695 0.00027996 7.27261771 0.99860409 0.99926309 0.49321946;
+	-6.27307482 -0.00045688 0.00027992 7.27261794 0.99860430 0.99926320 0.49321952;
+	-6.27307499 -0.00045681 0.00027987 7.27261817 0.99860450 0.99926331 0.49321956;
+	-6.27307515 -0.00045675 0.00027983 7.27261840 0.99860471 0.99926342 0.49321950;
+	-6.27307531 -0.00045668 0.00027979 7.27261863 0.99860492 0.99926353 0.49321959;
+	-6.27307547 -0.00045661 0.00027975 7.27261886 0.99860512 0.99926364 0.49321954;
+	-6.27307563 -0.00045654 0.00027971 7.27261909 0.99860533 0.99926375 0.49321964;
+	-6.27307579 -0.00045648 0.00027967 7.27261931 0.99860553 0.99926385 0.49321960;
+	-6.27307595 -0.00045641 0.00027963 7.27261954 0.99860574 0.99926396 0.49321972;
+	-6.27307611 -0.00045634 0.00027959 7.27261977 0.99860595 0.99926407 0.49321973;
+	-6.27307628 -0.00045628 0.00027954 7.27262000 0.99860615 0.99926418 0.49321968;
+	-6.27307644 -0.00045621 0.00027950 7.27262023 0.99860636 0.99926429 0.49321967;
+	-6.27307660 -0.00045614 0.00027946 7.27262046 0.99860656 0.99926440 0.49321972;
+	-6.27307676 -0.00045607 0.00027942 7.27262068 0.99860677 0.99926451 0.49321981;
+	-6.27307692 -0.00045601 0.00027938 7.27262091 0.99860697 0.99926461 0.49321979;
+	-6.27307708 -0.00045594 0.00027934 7.27262114 0.99860718 0.99926472 0.49321986;
+	-6.27307724 -0.00045587 0.00027930 7.27262137 0.99860738 0.99926483 0.49321988;
+	-6.27307740 -0.00045581 0.00027926 7.27262160 0.99860759 0.99926494 0.49321990;
+	-6.27307756 -0.00045574 0.00027921 7.27262182 0.99860779 0.99926505 0.49321998;
+	-6.27307772 -0.00045567 0.00027917 7.27262205 0.99860800 0.99926516 0.49322003;
+	-6.27307788 -0.00045560 0.00027913 7.27262228 0.99860820 0.99926526 0.49321994;
+	-6.27307804 -0.00045554 0.00027909 7.27262251 0.99860841 0.99926537 0.49322002;
+	-6.27307820 -0.00045547 0.00027905 7.27262273 0.99860861 0.99926548 0.49321999;
+	-6.27307836 -0.00045540 0.00027901 7.27262296 0.99860882 0.99926559 0.49322005;
+	-6.27307852 -0.00045534 0.00027897 7.27262319 0.99860902 0.99926570 0.49322007;
+	-6.27307868 -0.00045527 0.00027893 7.27262342 0.99860923 0.99926580 0.49322002;
+	-6.27307884 -0.00045520 0.00027889 7.27262364 0.99860943 0.99926591 0.49322013;
+	-6.27307900 -0.00045514 0.00027884 7.27262387 0.99860964 0.99926602 0.49322009;
+	-6.27307916 -0.00045507 0.00027880 7.27262410 0.99860984 0.99926613 0.49322010;
+	-6.27307932 -0.00045500 0.00027876 7.27262432 0.99861004 0.99926624 0.49322020;
+	-6.27307949 -0.00045493 0.00027872 7.27262455 0.99861025 0.99926634 0.49322020;
+	-6.27307964 -0.00045487 0.00027868 7.27262478 0.99861045 0.99926645 0.49322021;
+	-6.27307980 -0.00045480 0.00027864 7.27262500 0.99861066 0.99926656 0.49322031;
+	-6.27307996 -0.00045473 0.00027860 7.27262523 0.99861086 0.99926667 0.49322031;
+	-6.27308012 -0.00045467 0.00027856 7.27262546 0.99861107 0.99926677 0.49322033;
+	-6.27308028 -0.00045460 0.00027852 7.27262568 0.99861127 0.99926688 0.49322029;
+	-6.27308044 -0.00045453 0.00027848 7.27262591 0.99861147 0.99926699 0.49322034;
+	-6.27308060 -0.00045447 0.00027844 7.27262614 0.99861168 0.99926710 0.49322033;
+	-6.27308076 -0.00045440 0.00027839 7.27262636 0.99861188 0.99926721 0.49322036;
+	-6.27308092 -0.00045433 0.00027835 7.27262659 0.99861209 0.99926731 0.49322047;
+	-6.27308108 -0.00045427 0.00027831 7.27262682 0.99861229 0.99926742 0.49322045;
+	-6.27308124 -0.00045420 0.00027827 7.27262704 0.99861249 0.99926753 0.49322049;
+	-6.27308140 -0.00045413 0.00027823 7.27262727 0.99861270 0.99926764 0.49322055;
+	-6.27308156 -0.00045407 0.00027819 7.27262749 0.99861290 0.99926774 0.49322054;
+	-6.27308172 -0.00045400 0.00027815 7.27262772 0.99861310 0.99926785 0.49322056;
+	-6.27308188 -0.00045393 0.00027811 7.27262795 0.99861331 0.99926796 0.49322059;
+	-6.27308204 -0.00045387 0.00027807 7.27262817 0.99861351 0.99926807 0.49322050;
+	-6.27308220 -0.00045380 0.00027803 7.27262840 0.99861371 0.99926817 0.49322063;
+	-6.27308236 -0.00045373 0.00027799 7.27262862 0.99861392 0.99926828 0.49322066;
+	-6.27308252 -0.00045367 0.00027795 7.27262885 0.99861412 0.99926839 0.49322063;
+	-6.27308268 -0.00045360 0.00027790 7.27262907 0.99861432 0.99926849 0.49322070;
+	-6.27308284 -0.00045353 0.00027786 7.27262930 0.99861453 0.99926860 0.49322066;
+	-6.27308299 -0.00045347 0.00027782 7.27262953 0.99861473 0.99926871 0.49322073;
+	-6.27308315 -0.00045340 0.00027778 7.27262975 0.99861493 0.99926882 0.49322074;
+	-6.27308331 -0.00045334 0.00027774 7.27262998 0.99861514 0.99926892 0.49322073;
+	-6.27308347 -0.00045327 0.00027770 7.27263020 0.99861534 0.99926903 0.49322080;
+	-6.27308363 -0.00045320 0.00027766 7.27263043 0.99861554 0.99926914 0.49322087;
+	-6.27308379 -0.00045314 0.00027762 7.27263065 0.99861574 0.99926924 0.49322079;
+	-6.27308395 -0.00045307 0.00027758 7.27263088 0.99861595 0.99926935 0.49322088;
+	-6.27308411 -0.00045300 0.00027754 7.27263110 0.99861615 0.99926946 0.49322089;
+	-6.27308426 -0.00045294 0.00027750 7.27263133 0.99861635 0.99926956 0.49322091;
+	-6.27308442 -0.00045287 0.00027746 7.27263155 0.99861655 0.99926967 0.49322099;
+	-6.27308458 -0.00045281 0.00027742 7.27263178 0.99861676 0.99926978 0.49322093;
+	-6.27308474 -0.00045274 0.00027738 7.27263200 0.99861696 0.99926989 0.49322094;
+	-6.27308490 -0.00045267 0.00027734 7.27263223 0.99861716 0.99926999 0.49322104;
+	-6.27308506 -0.00045261 0.00027729 7.27263245 0.99861736 0.99927010 0.49322101;
+	-6.27308522 -0.00045254 0.00027725 7.27263268 0.99861757 0.99927021 0.49322100;
+	-6.27308537 -0.00045247 0.00027721 7.27263290 0.99861777 0.99927031 0.49322109;
+	-6.27308553 -0.00045241 0.00027717 7.27263312 0.99861797 0.99927042 0.49322112;
+	-6.27308569 -0.00045234 0.00027713 7.27263335 0.99861817 0.99927053 0.49322118;
+	-6.27308585 -0.00045228 0.00027709 7.27263357 0.99861837 0.99927063 0.49322108;
+	-6.27308601 -0.00045221 0.00027705 7.27263380 0.99861858 0.99927074 0.49322119;
+	-6.27308616 -0.00045214 0.00027701 7.27263402 0.99861878 0.99927085 0.49322124;
+	-6.27308632 -0.00045208 0.00027697 7.27263424 0.99861898 0.99927095 0.49322120;
+	-6.27308648 -0.00045201 0.00027693 7.27263447 0.99861918 0.99927106 0.49322125;
+	-6.27308664 -0.00045195 0.00027689 7.27263469 0.99861938 0.99927116 0.49322131;
+	-6.27308680 -0.00045188 0.00027685 7.27263492 0.99861959 0.99927127 0.49322139;
+	-6.27308695 -0.00045181 0.00027681 7.27263514 0.99861979 0.99927138 0.49322128;
+	-6.27308711 -0.00045175 0.00027677 7.27263536 0.99861999 0.99927148 0.49322133;
+	-6.27308727 -0.00045168 0.00027673 7.27263559 0.99862019 0.99927159 0.49322134;
+	-6.27308743 -0.00045162 0.00027669 7.27263581 0.99862039 0.99927170 0.49322141;
+	-6.27308759 -0.00045155 0.00027665 7.27263604 0.99862059 0.99927180 0.49322137;
+	-6.27308774 -0.00045148 0.00027661 7.27263626 0.99862079 0.99927191 0.49322148;
+	-6.27308790 -0.00045142 0.00027657 7.27263648 0.99862099 0.99927202 0.49322145;
+	-6.27308806 -0.00045135 0.00027653 7.27263671 0.99862120 0.99927212 0.49322138;
+	-6.27308822 -0.00045129 0.00027649 7.27263693 0.99862140 0.99927223 0.49322155;
+	-6.27308837 -0.00045122 0.00027645 7.27263715 0.99862160 0.99927233 0.49322147;
+	-6.27308853 -0.00045116 0.00027641 7.27263737 0.99862180 0.99927244 0.49322164;
+	-6.27308869 -0.00045109 0.00027636 7.27263760 0.99862200 0.99927255 0.49322155;
+	-6.27308884 -0.00045102 0.00027632 7.27263782 0.99862220 0.99927265 0.49322156;
+	-6.27308900 -0.00045096 0.00027628 7.27263804 0.99862240 0.99927276 0.49322154;
+	-6.27308916 -0.00045089 0.00027624 7.27263827 0.99862260 0.99927286 0.49322167;
+	-6.27308932 -0.00045083 0.00027620 7.27263849 0.99862280 0.99927297 0.49322165;
+	-6.27308947 -0.00045076 0.00027616 7.27263871 0.99862300 0.99927308 0.49322177;
+	-6.27308963 -0.00045070 0.00027612 7.27263894 0.99862320 0.99927318 0.49322172;
+	-6.27308979 -0.00045063 0.00027608 7.27263916 0.99862340 0.99927329 0.49322177;
+	-6.27308994 -0.00045056 0.00027604 7.27263938 0.99862360 0.99927339 0.49322171;
+	-6.27309010 -0.00045050 0.00027600 7.27263960 0.99862381 0.99927350 0.49322172;
+	-6.27309026 -0.00045043 0.00027596 7.27263983 0.99862401 0.99927360 0.49322182;
+	-6.27309042 -0.00045037 0.00027592 7.27264005 0.99862421 0.99927371 0.49322183;
+	-6.27309057 -0.00045030 0.00027588 7.27264027 0.99862441 0.99927382 0.49322187;
+	-6.27309073 -0.00045024 0.00027584 7.27264049 0.99862461 0.99927392 0.49322184;
+	-6.27309089 -0.00045017 0.00027580 7.27264071 0.99862481 0.99927403 0.49322189;
+	-6.27309104 -0.00045011 0.00027576 7.27264094 0.99862501 0.99927413 0.49322190;
+	-6.27309120 -0.00045004 0.00027572 7.27264116 0.99862521 0.99927424 0.49322188;
+	-6.27309136 -0.00044997 0.00027568 7.27264138 0.99862541 0.99927434 0.49322197;
+	-6.27309151 -0.00044991 0.00027564 7.27264160 0.99862561 0.99927445 0.49322195;
+	-6.27309167 -0.00044984 0.00027560 7.27264182 0.99862581 0.99927455 0.49322198;
+	-6.27309183 -0.00044978 0.00027556 7.27264205 0.99862601 0.99927466 0.49322195;
+	-6.27309198 -0.00044971 0.00027552 7.27264227 0.99862621 0.99927477 0.49322211;
+	-6.27309214 -0.00044965 0.00027548 7.27264249 0.99862641 0.99927487 0.49322215;
+	-6.27309229 -0.00044958 0.00027544 7.27264271 0.99862660 0.99927498 0.49322209;
+	-6.27309245 -0.00044952 0.00027540 7.27264293 0.99862680 0.99927508 0.49322211;
+	-6.27309261 -0.00044945 0.00027536 7.27264315 0.99862700 0.99927519 0.49322213;
+	-6.27309276 -0.00044939 0.00027532 7.27264338 0.99862720 0.99927529 0.49322220;
+	-6.27309292 -0.00044932 0.00027528 7.27264360 0.99862740 0.99927540 0.49322206;
+	-6.27309307 -0.00044926 0.00027524 7.27264382 0.99862760 0.99927550 0.49322222;
+	-6.27309323 -0.00044919 0.00027520 7.27264404 0.99862780 0.99927561 0.49322230;
+	-6.27309339 -0.00044913 0.00027516 7.27264426 0.99862800 0.99927571 0.49322233;
+	-6.27309354 -0.00044906 0.00027512 7.27264448 0.99862820 0.99927582 0.49322226;
+	-6.27309370 -0.00044900 0.00027508 7.27264470 0.99862840 0.99927592 0.49322237;
+	-6.27309385 -0.00044893 0.00027504 7.27264492 0.99862860 0.99927603 0.49322238;
+	-6.27309401 -0.00044887 0.00027500 7.27264514 0.99862880 0.99927613 0.49322229;
+	-6.27309417 -0.00044880 0.00027496 7.27264537 0.99862899 0.99927624 0.49322245;
+	-6.27309432 -0.00044874 0.00027492 7.27264559 0.99862919 0.99927634 0.49322245;
+	-6.27309448 -0.00044867 0.00027488 7.27264581 0.99862939 0.99927645 0.49322246;
+	-6.27309463 -0.00044861 0.00027484 7.27264603 0.99862959 0.99927655 0.49322247;
+	-6.27309479 -0.00044854 0.00027480 7.27264625 0.99862979 0.99927666 0.49322254;
+	-6.27309494 -0.00044848 0.00027476 7.27264647 0.99862999 0.99927676 0.49322253;
+	-6.27309510 -0.00044841 0.00027472 7.27264669 0.99863019 0.99927687 0.49322258;
+	-6.27309526 -0.00044835 0.00027468 7.27264691 0.99863039 0.99927697 0.49322250;
+	-6.27309541 -0.00044828 0.00027464 7.27264713 0.99863058 0.99927708 0.49322253;
+	-6.27309557 -0.00044822 0.00027460 7.27264735 0.99863078 0.99927718 0.49322260;
+	-6.27309572 -0.00044815 0.00027456 7.27264757 0.99863098 0.99927729 0.49322265;
+	-6.27309588 -0.00044809 0.00027452 7.27264779 0.99863118 0.99927739 0.49322261;
+	-6.27309603 -0.00044802 0.00027448 7.27264801 0.99863138 0.99927750 0.49322265;
+	-6.27309619 -0.00044796 0.00027444 7.27264823 0.99863158 0.99927760 0.49322274;
+	-6.27309634 -0.00044789 0.00027440 7.27264845 0.99863177 0.99927770 0.49322271;
+	-6.27309650 -0.00044783 0.00027436 7.27264867 0.99863197 0.99927781 0.49322271;
+	-6.27309665 -0.00044776 0.00027432 7.27264889 0.99863217 0.99927791 0.49322277;
+	-6.27309681 -0.00044770 0.00027429 7.27264911 0.99863237 0.99927802 0.49322282;
+	-6.27309696 -0.00044763 0.00027425 7.27264933 0.99863256 0.99927812 0.49322277;
+	-6.27309712 -0.00044757 0.00027421 7.27264955 0.99863276 0.99927823 0.49322279;
+	-6.27309727 -0.00044750 0.00027417 7.27264977 0.99863296 0.99927833 0.49322290;
+	-6.27309743 -0.00044744 0.00027413 7.27264999 0.99863316 0.99927844 0.49322286;
+	-6.27309758 -0.00044737 0.00027409 7.27265021 0.99863336 0.99927854 0.49322289;
+	-6.27309774 -0.00044731 0.00027405 7.27265043 0.99863355 0.99927864 0.49322292;
+	-6.27309789 -0.00044724 0.00027401 7.27265065 0.99863375 0.99927875 0.49322303;
+	-6.27309805 -0.00044718 0.00027397 7.27265087 0.99863395 0.99927885 0.49322297;
+	-6.27309820 -0.00044712 0.00027393 7.27265108 0.99863415 0.99927896 0.49322299;
+	-6.27309835 -0.00044705 0.00027389 7.27265130 0.99863434 0.99927906 0.49322300;
+	-6.27309851 -0.00044699 0.00027385 7.27265152 0.99863454 0.99927916 0.49322302;
+	-6.27309866 -0.00044692 0.00027381 7.27265174 0.99863474 0.99927927 0.49322302;
+	-6.27309882 -0.00044686 0.00027377 7.27265196 0.99863493 0.99927937 0.49322309;
+	-6.27309897 -0.00044679 0.00027373 7.27265218 0.99863513 0.99927948 0.49322304;
+	-6.27309913 -0.00044673 0.00027369 7.27265240 0.99863533 0.99927958 0.49322317;
+	-6.27309928 -0.00044666 0.00027365 7.27265262 0.99863553 0.99927968 0.49322317;
+	-6.27309944 -0.00044660 0.00027361 7.27265284 0.99863572 0.99927979 0.49322320;
+	-6.27309959 -0.00044653 0.00027357 7.27265305 0.99863592 0.99927989 0.49322325;
+	-6.27309974 -0.00044647 0.00027353 7.27265327 0.99863612 0.99928000 0.49322322;
+	-6.27309990 -0.00044641 0.00027349 7.27265349 0.99863631 0.99928010 0.49322331;
+	-6.27310005 -0.00044634 0.00027345 7.27265371 0.99863651 0.99928020 0.49322327;
+	-6.27310021 -0.00044628 0.00027341 7.27265393 0.99863671 0.99928031 0.49322319;
+	-6.27310036 -0.00044621 0.00027338 7.27265415 0.99863690 0.99928041 0.49322336;
+	-6.27310051 -0.00044615 0.00027334 7.27265436 0.99863710 0.99928052 0.49322341;
+	-6.27310067 -0.00044608 0.00027330 7.27265458 0.99863730 0.99928062 0.49322335;
+	-6.27310082 -0.00044602 0.00027326 7.27265480 0.99863749 0.99928072 0.49322336;
+	-6.27310097 -0.00044596 0.00027322 7.27265502 0.99863769 0.99928083 0.49322343;
+	-6.27310113 -0.00044589 0.00027318 7.27265524 0.99863789 0.99928093 0.49322345;
+	-6.27310128 -0.00044583 0.00027314 7.27265546 0.99863808 0.99928103 0.49322341;
+	-6.27310144 -0.00044576 0.00027310 7.27265567 0.99863828 0.99928114 0.49322343;
+	-6.27310159 -0.00044570 0.00027306 7.27265589 0.99863847 0.99928124 0.49322353;
+	-6.27310174 -0.00044563 0.00027302 7.27265611 0.99863867 0.99928134 0.49322355;
+	-6.27310190 -0.00044557 0.00027298 7.27265633 0.99863887 0.99928145 0.49322359;
+	-6.27310205 -0.00044551 0.00027294 7.27265654 0.99863906 0.99928155 0.49322357;
+	-6.27310220 -0.00044544 0.00027290 7.27265676 0.99863926 0.99928165 0.49322365;
+	-6.27310236 -0.00044538 0.00027286 7.27265698 0.99863945 0.99928176 0.49322365;
+	-6.27310251 -0.00044531 0.00027282 7.27265720 0.99863965 0.99928186 0.49322366;
+	-6.27310266 -0.00044525 0.00027279 7.27265741 0.99863984 0.99928196 0.49322350;
+	-6.27310282 -0.00044519 0.00027275 7.27265763 0.99864004 0.99928207 0.49322363;
+	-6.27310297 -0.00044512 0.00027271 7.27265785 0.99864024 0.99928217 0.49322376;
+	-6.27310312 -0.00044506 0.00027267 7.27265807 0.99864043 0.99928227 0.49322376;
+	-6.27310328 -0.00044499 0.00027263 7.27265828 0.99864063 0.99928238 0.49322386;
+	-6.27310343 -0.00044493 0.00027259 7.27265850 0.99864082 0.99928248 0.49322387;
+	-6.27310358 -0.00044487 0.00027255 7.27265872 0.99864102 0.99928258 0.49322377;
+	-6.27310374 -0.00044480 0.00027251 7.27265893 0.99864121 0.99928269 0.49322371;
+	-6.27310389 -0.00044474 0.00027247 7.27265915 0.99864141 0.99928279 0.49322385;
+	-6.27310404 -0.00044467 0.00027243 7.27265937 0.99864160 0.99928289 0.49322391;
+	-6.27310419 -0.00044461 0.00027239 7.27265958 0.99864180 0.99928300 0.49322388;
+	-6.27310435 -0.00044455 0.00027235 7.27265980 0.99864199 0.99928310 0.49322387;
+	-6.27310450 -0.00044448 0.00027231 7.27266002 0.99864219 0.99928320 0.49322394;
+	-6.27310465 -0.00044442 0.00027228 7.27266023 0.99864238 0.99928330 0.49322403;
+	-6.27310481 -0.00044436 0.00027224 7.27266045 0.99864258 0.99928341 0.49322393;
+	-6.27310496 -0.00044429 0.00027220 7.27266067 0.99864277 0.99928351 0.49322396;
+	-6.27310511 -0.00044423 0.00027216 7.27266088 0.99864297 0.99928361 0.49322397;
+	-6.27310526 -0.00044416 0.00027212 7.27266110 0.99864316 0.99928372 0.49322408;
+	-6.27310542 -0.00044410 0.00027208 7.27266132 0.99864336 0.99928382 0.49322399;
+	-6.27310557 -0.00044404 0.00027204 7.27266153 0.99864355 0.99928392 0.49322405;
+	-6.27310572 -0.00044397 0.00027200 7.27266175 0.99864375 0.99928402 0.49322411;
+	-6.27310587 -0.00044391 0.00027196 7.27266196 0.99864394 0.99928413 0.49322415;
+	-6.27310603 -0.00044385 0.00027192 7.27266218 0.99864414 0.99928423 0.49322414;
+	-6.27310618 -0.00044378 0.00027189 7.27266240 0.99864433 0.99928433 0.49322429;
+	-6.27310633 -0.00044372 0.00027185 7.27266261 0.99864453 0.99928444 0.49322422;
+	-6.27310648 -0.00044365 0.00027181 7.27266283 0.99864472 0.99928454 0.49322422;
+	-6.27310663 -0.00044359 0.00027177 7.27266304 0.99864491 0.99928464 0.49322418;
+	-6.27310679 -0.00044353 0.00027173 7.27266326 0.99864511 0.99928474 0.49322426;
+	-6.27310694 -0.00044346 0.00027169 7.27266347 0.99864530 0.99928485 0.49322432;
+	-6.27310709 -0.00044340 0.00027165 7.27266369 0.99864550 0.99928495 0.49322429;
+	-6.27310724 -0.00044334 0.00027161 7.27266391 0.99864569 0.99928505 0.49322440;
+	-6.27310739 -0.00044327 0.00027157 7.27266412 0.99864589 0.99928515 0.49322431;
+	-6.27310755 -0.00044321 0.00027153 7.27266434 0.99864608 0.99928526 0.49322435;
+	-6.27310770 -0.00044315 0.00027150 7.27266455 0.99864627 0.99928536 0.49322446;
+	-6.27310785 -0.00044308 0.00027146 7.27266477 0.99864647 0.99928546 0.49322440;
+	-6.27310800 -0.00044302 0.00027142 7.27266498 0.99864666 0.99928556 0.49322441;
+	-6.27310815 -0.00044296 0.00027138 7.27266520 0.99864685 0.99928566 0.49322447;
+	-6.27310831 -0.00044289 0.00027134 7.27266541 0.99864705 0.99928577 0.49322449;
+	-6.27310846 -0.00044283 0.00027130 7.27266563 0.99864724 0.99928587 0.49322455;
+	-6.27310861 -0.00044277 0.00027126 7.27266584 0.99864744 0.99928597 0.49322455;
+	-6.27310876 -0.00044270 0.00027122 7.27266606 0.99864763 0.99928607 0.49322448;
+	-6.27310891 -0.00044264 0.00027119 7.27266627 0.99864782 0.99928618 0.49322460;
+	-6.27310906 -0.00044258 0.00027115 7.27266649 0.99864802 0.99928628 0.49322463;
+	-6.27310921 -0.00044251 0.00027111 7.27266670 0.99864821 0.99928638 0.49322466;
+	-6.27310937 -0.00044245 0.00027107 7.27266692 0.99864840 0.99928648 0.49322476;
+	-6.27310952 -0.00044239 0.00027103 7.27266713 0.99864860 0.99928658 0.49322465;
+	-6.27310967 -0.00044232 0.00027099 7.27266735 0.99864879 0.99928669 0.49322471;
+	-6.27310982 -0.00044226 0.00027095 7.27266756 0.99864898 0.99928679 0.49322475;
+	-6.27310997 -0.00044220 0.00027091 7.27266777 0.99864917 0.99928689 0.49322474;
+	-6.27311012 -0.00044213 0.00027088 7.27266799 0.99864937 0.99928699 0.49322474;
+	-6.27311027 -0.00044207 0.00027084 7.27266820 0.99864956 0.99928709 0.49322480;
+	-6.27311042 -0.00044201 0.00027080 7.27266842 0.99864975 0.99928719 0.49322485;
+	-6.27311058 -0.00044194 0.00027076 7.27266863 0.99864995 0.99928730 0.49322481;
+	-6.27311073 -0.00044188 0.00027072 7.27266884 0.99865014 0.99928740 0.49322488;
+	-6.27311088 -0.00044182 0.00027068 7.27266906 0.99865033 0.99928750 0.49322485;
+	-6.27311103 -0.00044176 0.00027064 7.27266927 0.99865052 0.99928760 0.49322488;
+	-6.27311118 -0.00044169 0.00027060 7.27266949 0.99865072 0.99928770 0.49322494;
+	-6.27311133 -0.00044163 0.00027057 7.27266970 0.99865091 0.99928780 0.49322492;
+	-6.27311148 -0.00044157 0.00027053 7.27266991 0.99865110 0.99928791 0.49322499;
+	-6.27311163 -0.00044150 0.00027049 7.27267013 0.99865129 0.99928801 0.49322490;
+	-6.27311178 -0.00044144 0.00027045 7.27267034 0.99865149 0.99928811 0.49322494;
+	-6.27311193 -0.00044138 0.00027041 7.27267056 0.99865168 0.99928821 0.49322503;
+	-6.27311208 -0.00044131 0.00027037 7.27267077 0.99865187 0.99928831 0.49322507;
+	-6.27311223 -0.00044125 0.00027033 7.27267098 0.99865206 0.99928841 0.49322506;
+	-6.27311238 -0.00044119 0.00027030 7.27267120 0.99865226 0.99928852 0.49322507;
+	-6.27311253 -0.00044113 0.00027026 7.27267141 0.99865245 0.99928862 0.49322511;
+	-6.27311269 -0.00044106 0.00027022 7.27267162 0.99865264 0.99928872 0.49322515;
+	-6.27311284 -0.00044100 0.00027018 7.27267184 0.99865283 0.99928882 0.49322525;
+	-6.27311299 -0.00044094 0.00027014 7.27267205 0.99865302 0.99928892 0.49322511;
+	-6.27311314 -0.00044087 0.00027010 7.27267226 0.99865322 0.99928902 0.49322518;
+	-6.27311329 -0.00044081 0.00027006 7.27267247 0.99865341 0.99928912 0.49322526;
+	-6.27311344 -0.00044075 0.00027003 7.27267269 0.99865360 0.99928922 0.49322521;
+	-6.27311359 -0.00044069 0.00026999 7.27267290 0.99865379 0.99928933 0.49322528;
+	-6.27311374 -0.00044062 0.00026995 7.27267311 0.99865398 0.99928943 0.49322529;
+	-6.27311389 -0.00044056 0.00026991 7.27267333 0.99865418 0.99928953 0.49322527;
+	-6.27311404 -0.00044050 0.00026987 7.27267354 0.99865437 0.99928963 0.49322539;
+	-6.27311419 -0.00044044 0.00026983 7.27267375 0.99865456 0.99928973 0.49322538;
+	-6.27311434 -0.00044037 0.00026980 7.27267396 0.99865475 0.99928983 0.49322547;
+	-6.27311449 -0.00044031 0.00026976 7.27267418 0.99865494 0.99928993 0.49322544;
+	-6.27311464 -0.00044025 0.00026972 7.27267439 0.99865513 0.99929003 0.49322545;
+	-6.27311479 -0.00044018 0.00026968 7.27267460 0.99865532 0.99929013 0.49322545;
+	-6.27311494 -0.00044012 0.00026964 7.27267481 0.99865551 0.99929024 0.49322537;
+	-6.27311509 -0.00044006 0.00026960 7.27267503 0.99865571 0.99929034 0.49322549;
+	-6.27311524 -0.00044000 0.00026957 7.27267524 0.99865590 0.99929044 0.49322552;
+	-6.27311539 -0.00043993 0.00026953 7.27267545 0.99865609 0.99929054 0.49322561;
+	-6.27311554 -0.00043987 0.00026949 7.27267566 0.99865628 0.99929064 0.49322551;
+	-6.27311569 -0.00043981 0.00026945 7.27267588 0.99865647 0.99929074 0.49322559;
+	-6.27311583 -0.00043975 0.00026941 7.27267609 0.99865666 0.99929084 0.49322564;
+	-6.27311598 -0.00043968 0.00026937 7.27267630 0.99865685 0.99929094 0.49322558;
+	-6.27311613 -0.00043962 0.00026934 7.27267651 0.99865704 0.99929104 0.49322567;
+	-6.27311628 -0.00043956 0.00026930 7.27267672 0.99865723 0.99929114 0.49322564;
+	-6.27311643 -0.00043950 0.00026926 7.27267693 0.99865742 0.99929124 0.49322573;
+	-6.27311658 -0.00043944 0.00026922 7.27267715 0.99865762 0.99929134 0.49322571;
+	-6.27311673 -0.00043937 0.00026918 7.27267736 0.99865781 0.99929144 0.49322569;
+	-6.27311688 -0.00043931 0.00026914 7.27267757 0.99865800 0.99929155 0.49322578;
+	-6.27311703 -0.00043925 0.00026911 7.27267778 0.99865819 0.99929165 0.49322578;
+	-6.27311718 -0.00043919 0.00026907 7.27267799 0.99865838 0.99929175 0.49322584;
+	-6.27311733 -0.00043912 0.00026903 7.27267820 0.99865857 0.99929185 0.49322586;
+	-6.27311748 -0.00043906 0.00026899 7.27267842 0.99865876 0.99929195 0.49322590;
+	-6.27311763 -0.00043900 0.00026895 7.27267863 0.99865895 0.99929205 0.49322588;
+	-6.27311777 -0.00043894 0.00026892 7.27267884 0.99865914 0.99929215 0.49322594;
+	-6.27311792 -0.00043887 0.00026888 7.27267905 0.99865933 0.99929225 0.49322584;
+	-6.27311807 -0.00043881 0.00026884 7.27267926 0.99865952 0.99929235 0.49322593;
+	-6.27311822 -0.00043875 0.00026880 7.27267947 0.99865971 0.99929245 0.49322593;
+	-6.27311837 -0.00043869 0.00026876 7.27267968 0.99865990 0.99929255 0.49322599;
+	-6.27311852 -0.00043863 0.00026872 7.27267989 0.99866009 0.99929265 0.49322601;
+	-6.27311867 -0.00043856 0.00026869 7.27268010 0.99866028 0.99929275 0.49322609;
+	-6.27311882 -0.00043850 0.00026865 7.27268032 0.99866047 0.99929285 0.49322605;
+	-6.27311897 -0.00043844 0.00026861 7.27268053 0.99866066 0.99929295 0.49322609;
+	-6.27311911 -0.00043838 0.00026857 7.27268074 0.99866085 0.99929305 0.49322609;
+	-6.27311926 -0.00043832 0.00026853 7.27268095 0.99866104 0.99929315 0.49322617;
+	-6.27311941 -0.00043825 0.00026850 7.27268116 0.99866123 0.99929325 0.49322622;
+	-6.27311956 -0.00043819 0.00026846 7.27268137 0.99866142 0.99929335 0.49322614;
+	-6.27311971 -0.00043813 0.00026842 7.27268158 0.99866161 0.99929345 0.49322631;
+	-6.27311986 -0.00043807 0.00026838 7.27268179 0.99866180 0.99929355 0.49322620;
+	-6.27312000 -0.00043800 0.00026834 7.27268200 0.99866199 0.99929365 0.49322616;
+	-6.27312015 -0.00043794 0.00026831 7.27268221 0.99866217 0.99929375 0.49322624;
+	-6.27312030 -0.00043788 0.00026827 7.27268242 0.99866236 0.99929385 0.49322623;
+	-6.27312045 -0.00043782 0.00026823 7.27268263 0.99866255 0.99929395 0.49322635;
+	-6.27312060 -0.00043776 0.00026819 7.27268284 0.99866274 0.99929405 0.49322632;
+	-6.27312075 -0.00043770 0.00026815 7.27268305 0.99866293 0.99929415 0.49322635;
+	-6.27312089 -0.00043763 0.00026812 7.27268326 0.99866312 0.99929425 0.49322639;
+	-6.27312104 -0.00043757 0.00026808 7.27268347 0.99866331 0.99929435 0.49322639;
+	-6.27312119 -0.00043751 0.00026804 7.27268368 0.99866350 0.99929445 0.49322638;
+	-6.27312134 -0.00043745 0.00026800 7.27268389 0.99866369 0.99929455 0.49322647;
+	-6.27312149 -0.00043739 0.00026796 7.27268410 0.99866388 0.99929465 0.49322642;
+	-6.27312163 -0.00043732 0.00026793 7.27268431 0.99866407 0.99929475 0.49322644;
+	-6.27312178 -0.00043726 0.00026789 7.27268452 0.99866425 0.99929485 0.49322646;
+	-6.27312193 -0.00043720 0.00026785 7.27268473 0.99866444 0.99929495 0.49322653;
+	-6.27312208 -0.00043714 0.00026781 7.27268494 0.99866463 0.99929505 0.49322663;
+	-6.27312223 -0.00043708 0.00026778 7.27268515 0.99866482 0.99929515 0.49322655;
+	-6.27312237 -0.00043702 0.00026774 7.27268536 0.99866501 0.99929525 0.49322658;
+	-6.27312252 -0.00043695 0.00026770 7.27268557 0.99866520 0.99929535 0.49322660;
+	-6.27312267 -0.00043689 0.00026766 7.27268578 0.99866539 0.99929545 0.49322666;
+	-6.27312282 -0.00043683 0.00026762 7.27268599 0.99866557 0.99929555 0.49322663;
+	-6.27312296 -0.00043677 0.00026759 7.27268619 0.99866576 0.99929564 0.49322672;
+	-6.27312311 -0.00043671 0.00026755 7.27268640 0.99866595 0.99929574 0.49322669;
+	-6.27312326 -0.00043665 0.00026751 7.27268661 0.99866614 0.99929584 0.49322667;
+	-6.27312341 -0.00043658 0.00026747 7.27268682 0.99866633 0.99929594 0.49322665;
+	-6.27312355 -0.00043652 0.00026744 7.27268703 0.99866652 0.99929604 0.49322678;
+	-6.27312370 -0.00043646 0.00026740 7.27268724 0.99866670 0.99929614 0.49322680;
+	-6.27312385 -0.00043640 0.00026736 7.27268745 0.99866689 0.99929624 0.49322677;
+	-6.27312399 -0.00043634 0.00026732 7.27268766 0.99866708 0.99929634 0.49322687;
+	-6.27312414 -0.00043628 0.00026728 7.27268787 0.99866727 0.99929644 0.49322695;
+	-6.27312429 -0.00043622 0.00026725 7.27268807 0.99866746 0.99929654 0.49322684;
+	-6.27312444 -0.00043615 0.00026721 7.27268828 0.99866764 0.99929664 0.49322695;
+	-6.27312458 -0.00043609 0.00026717 7.27268849 0.99866783 0.99929674 0.49322694;
+	-6.27312473 -0.00043603 0.00026713 7.27268870 0.99866802 0.99929684 0.49322694;
+	-6.27312488 -0.00043597 0.00026710 7.27268891 0.99866821 0.99929693 0.49322692;
+	-6.27312502 -0.00043591 0.00026706 7.27268912 0.99866839 0.99929703 0.49322694;
+	-6.27312517 -0.00043585 0.00026702 7.27268932 0.99866858 0.99929713 0.49322699;
+	-6.27312532 -0.00043579 0.00026698 7.27268953 0.99866877 0.99929723 0.49322697;
+	-6.27312546 -0.00043572 0.00026695 7.27268974 0.99866896 0.99929733 0.49322709;
+	-6.27312561 -0.00043566 0.00026691 7.27268995 0.99866914 0.99929743 0.49322698;
+	-6.27312576 -0.00043560 0.00026687 7.27269016 0.99866933 0.99929753 0.49322713;
+	-6.27312590 -0.00043554 0.00026683 7.27269037 0.99866952 0.99929763 0.49322708;
+	-6.27312605 -0.00043548 0.00026680 7.27269057 0.99866971 0.99929773 0.49322723;
+	-6.27312620 -0.00043542 0.00026676 7.27269078 0.99866989 0.99929782 0.49322717;
+	-6.27312634 -0.00043536 0.00026672 7.27269099 0.99867008 0.99929792 0.49322722;
+	-6.27312649 -0.00043529 0.00026668 7.27269120 0.99867027 0.99929802 0.49322714;
+	-6.27312664 -0.00043523 0.00026665 7.27269140 0.99867045 0.99929812 0.49322725;
+	-6.27312678 -0.00043517 0.00026661 7.27269161 0.99867064 0.99929822 0.49322739;
+	-6.27312693 -0.00043511 0.00026657 7.27269182 0.99867083 0.99929832 0.49322721;
+	-6.27312708 -0.00043505 0.00026653 7.27269203 0.99867101 0.99929842 0.49322728;
+	-6.27312722 -0.00043499 0.00026650 7.27269223 0.99867120 0.99929852 0.49322731;
+	-6.27312737 -0.00043493 0.00026646 7.27269244 0.99867139 0.99929861 0.49322735;
+	-6.27312752 -0.00043487 0.00026642 7.27269265 0.99867158 0.99929871 0.49322737;
+	-6.27312766 -0.00043481 0.00026638 7.27269286 0.99867176 0.99929881 0.49322735;
+	-6.27312781 -0.00043474 0.00026635 7.27269306 0.99867195 0.99929891 0.49322744;
+	-6.27312795 -0.00043468 0.00026631 7.27269327 0.99867214 0.99929901 0.49322745;
+	-6.27312810 -0.00043462 0.00026627 7.27269348 0.99867232 0.99929911 0.49322747;
+	-6.27312825 -0.00043456 0.00026623 7.27269368 0.99867251 0.99929920 0.49322750;
+	-6.27312839 -0.00043450 0.00026620 7.27269389 0.99867269 0.99929930 0.49322745;
+	-6.27312854 -0.00043444 0.00026616 7.27269410 0.99867288 0.99929940 0.49322761;
+	-6.27312868 -0.00043438 0.00026612 7.27269431 0.99867307 0.99929950 0.49322746;
+	-6.27312883 -0.00043432 0.00026608 7.27269451 0.99867325 0.99929960 0.49322757;
+	-6.27312898 -0.00043426 0.00026605 7.27269472 0.99867344 0.99929970 0.49322765;
+	-6.27312912 -0.00043420 0.00026601 7.27269493 0.99867363 0.99929979 0.49322763;
+	-6.27312927 -0.00043413 0.00026597 7.27269513 0.99867381 0.99929989 0.49322751;
+	-6.27312941 -0.00043407 0.00026593 7.27269534 0.99867400 0.99929999 0.49322758;
+	-6.27312956 -0.00043401 0.00026590 7.27269555 0.99867418 0.99930009 0.49322771;
+	-6.27312970 -0.00043395 0.00026586 7.27269575 0.99867437 0.99930019 0.49322770;
+	-6.27312985 -0.00043389 0.00026582 7.27269596 0.99867456 0.99930029 0.49322772;
+	-6.27313000 -0.00043383 0.00026579 7.27269616 0.99867474 0.99930038 0.49322775;
+	-6.27313014 -0.00043377 0.00026575 7.27269637 0.99867493 0.99930048 0.49322776;
+	-6.27313029 -0.00043371 0.00026571 7.27269658 0.99867511 0.99930058 0.49322779;
+	-6.27313043 -0.00043365 0.00026567 7.27269678 0.99867530 0.99930068 0.49322775;
+	-6.27313058 -0.00043359 0.00026564 7.27269699 0.99867548 0.99930078 0.49322782;
+	-6.27313072 -0.00043353 0.00026560 7.27269720 0.99867567 0.99930087 0.49322777;
+	-6.27313087 -0.00043347 0.00026556 7.27269740 0.99867586 0.99930097 0.49322785;
+	-6.27313101 -0.00043341 0.00026552 7.27269761 0.99867604 0.99930107 0.49322785;
+	-6.27313116 -0.00043335 0.00026549 7.27269781 0.99867623 0.99930117 0.49322792;
+	-6.27313130 -0.00043328 0.00026545 7.27269802 0.99867641 0.99930127 0.49322802;
+	-6.27313145 -0.00043322 0.00026541 7.27269823 0.99867660 0.99930136 0.49322800;
+	-6.27313159 -0.00043316 0.00026538 7.27269843 0.99867678 0.99930146 0.49322801;
+	-6.27313174 -0.00043310 0.00026534 7.27269864 0.99867697 0.99930156 0.49322793;
+	-6.27313188 -0.00043304 0.00026530 7.27269884 0.99867715 0.99930166 0.49322797;
+	-6.27313203 -0.00043298 0.00026526 7.27269905 0.99867734 0.99930175 0.49322808;
+	-6.27313217 -0.00043292 0.00026523 7.27269925 0.99867752 0.99930185 0.49322805;
+	-6.27313232 -0.00043286 0.00026519 7.27269946 0.99867771 0.99930195 0.49322811;
+	-6.27313246 -0.00043280 0.00026515 7.27269966 0.99867789 0.99930205 0.49322809;
+	-6.27313261 -0.00043274 0.00026512 7.27269987 0.99867808 0.99930214 0.49322806;
+	-6.27313275 -0.00043268 0.00026508 7.27270007 0.99867826 0.99930224 0.49322819;
+	-6.27313290 -0.00043262 0.00026504 7.27270028 0.99867845 0.99930234 0.49322820;
+	-6.27313304 -0.00043256 0.00026501 7.27270049 0.99867863 0.99930244 0.49322821;
+	-6.27313319 -0.00043250 0.00026497 7.27270069 0.99867882 0.99930253 0.49322826;
+	-6.27313333 -0.00043244 0.00026493 7.27270090 0.99867900 0.99930263 0.49322825;
+	-6.27313348 -0.00043238 0.00026489 7.27270110 0.99867919 0.99930273 0.49322828;
+	-6.27313362 -0.00043232 0.00026486 7.27270131 0.99867937 0.99930283 0.49322824;
+	-6.27313377 -0.00043226 0.00026482 7.27270151 0.99867955 0.99930292 0.49322829;
+	-6.27313391 -0.00043220 0.00026478 7.27270171 0.99867974 0.99930302 0.49322833;
+	-6.27313405 -0.00043214 0.00026475 7.27270192 0.99867992 0.99930312 0.49322832;
+	-6.27313420 -0.00043207 0.00026471 7.27270212 0.99868011 0.99930322 0.49322832;
+	-6.27313434 -0.00043201 0.00026467 7.27270233 0.99868029 0.99930331 0.49322841;
+	-6.27313449 -0.00043195 0.00026464 7.27270253 0.99868048 0.99930341 0.49322842;
+	-6.27313463 -0.00043189 0.00026460 7.27270274 0.99868066 0.99930351 0.49322850;
+	-6.27313478 -0.00043183 0.00026456 7.27270294 0.99868084 0.99930360 0.49322849;
+	-6.27313492 -0.00043177 0.00026452 7.27270315 0.99868103 0.99930370 0.49322832;
+	-6.27313506 -0.00043171 0.00026449 7.27270335 0.99868121 0.99930380 0.49322850;
+	-6.27313521 -0.00043165 0.00026445 7.27270356 0.99868140 0.99930390 0.49322849;
+	-6.27313535 -0.00043159 0.00026441 7.27270376 0.99868158 0.99930399 0.49322851;
+	-6.27313550 -0.00043153 0.00026438 7.27270396 0.99868176 0.99930409 0.49322842;
+	-6.27313564 -0.00043147 0.00026434 7.27270417 0.99868195 0.99930419 0.49322856;
+	-6.27313578 -0.00043141 0.00026430 7.27270437 0.99868213 0.99930428 0.49322852;
+	-6.27313593 -0.00043135 0.00026427 7.27270458 0.99868232 0.99930438 0.49322857;
+	-6.27313607 -0.00043129 0.00026423 7.27270478 0.99868250 0.99930448 0.49322857;
+	-6.27313622 -0.00043123 0.00026419 7.27270498 0.99868268 0.99930458 0.49322862;
+	-6.27313636 -0.00043117 0.00026416 7.27270519 0.99868287 0.99930467 0.49322867;
+	-6.27313650 -0.00043111 0.00026412 7.27270539 0.99868305 0.99930477 0.49322876;
+	-6.27313665 -0.00043105 0.00026408 7.27270560 0.99868323 0.99930487 0.49322877;
+	-6.27313679 -0.00043099 0.00026405 7.27270580 0.99868342 0.99930496 0.49322873;
+	-6.27313693 -0.00043093 0.00026401 7.27270600 0.99868360 0.99930506 0.49322870;
+	-6.27313708 -0.00043087 0.00026397 7.27270621 0.99868378 0.99930516 0.49322877;
+	-6.27313722 -0.00043081 0.00026394 7.27270641 0.99868397 0.99930525 0.49322879;
+	-6.27313737 -0.00043075 0.00026390 7.27270661 0.99868415 0.99930535 0.49322891;
+	-6.27313751 -0.00043069 0.00026386 7.27270682 0.99868433 0.99930545 0.49322887;
+	-6.27313765 -0.00043063 0.00026382 7.27270702 0.99868452 0.99930554 0.49322881;
+	-6.27313780 -0.00043057 0.00026379 7.27270722 0.99868470 0.99930564 0.49322892;
+	-6.27313794 -0.00043051 0.00026375 7.27270743 0.99868488 0.99930574 0.49322891;
+	-6.27313808 -0.00043045 0.00026371 7.27270763 0.99868507 0.99930583 0.49322891;
+	-6.27313823 -0.00043039 0.00026368 7.27270783 0.99868525 0.99930593 0.49322893;
+	-6.27313837 -0.00043033 0.00026364 7.27270804 0.99868543 0.99930603 0.49322886;
+	-6.27313851 -0.00043027 0.00026360 7.27270824 0.99868561 0.99930612 0.49322902;
+	-6.27313865 -0.00043021 0.00026357 7.27270844 0.99868580 0.99930622 0.49322900;
+	-6.27313880 -0.00043015 0.00026353 7.27270864 0.99868598 0.99930632 0.49322904;
+	-6.27313894 -0.00043009 0.00026349 7.27270885 0.99868616 0.99930641 0.49322903;
+	-6.27313908 -0.00043003 0.00026346 7.27270905 0.99868634 0.99930651 0.49322900;
+	-6.27313923 -0.00042997 0.00026342 7.27270925 0.99868653 0.99930660 0.49322904;
+	-6.27313937 -0.00042991 0.00026338 7.27270946 0.99868671 0.99930670 0.49322912;
+	-6.27313951 -0.00042985 0.00026335 7.27270966 0.99868689 0.99930680 0.49322917;
+	-6.27313966 -0.00042980 0.00026331 7.27270986 0.99868707 0.99930689 0.49322903;
+	-6.27313980 -0.00042974 0.00026328 7.27271006 0.99868726 0.99930699 0.49322919;
+	-6.27313994 -0.00042968 0.00026324 7.27271027 0.99868744 0.99930709 0.49322915;
+	-6.27314008 -0.00042962 0.00026320 7.27271047 0.99868762 0.99930718 0.49322921;
+	-6.27314023 -0.00042956 0.00026317 7.27271067 0.99868780 0.99930728 0.49322918;
+	-6.27314037 -0.00042950 0.00026313 7.27271087 0.99868799 0.99930737 0.49322930;
+	-6.27314051 -0.00042944 0.00026309 7.27271107 0.99868817 0.99930747 0.49322927;
+	-6.27314065 -0.00042938 0.00026306 7.27271128 0.99868835 0.99930757 0.49322931;
+	-6.27314080 -0.00042932 0.00026302 7.27271148 0.99868853 0.99930766 0.49322934;
+	-6.27314094 -0.00042926 0.00026298 7.27271168 0.99868871 0.99930776 0.49322928;
+	-6.27314108 -0.00042920 0.00026295 7.27271188 0.99868890 0.99930785 0.49322942;
+	-6.27314122 -0.00042914 0.00026291 7.27271208 0.99868908 0.99930795 0.49322942;
+	-6.27314137 -0.00042908 0.00026287 7.27271229 0.99868926 0.99930805 0.49322944;
+	-6.27314151 -0.00042902 0.00026284 7.27271249 0.99868944 0.99930814 0.49322951;
+	-6.27314165 -0.00042896 0.00026280 7.27271269 0.99868962 0.99930824 0.49322944;
+	-6.27314179 -0.00042890 0.00026276 7.27271289 0.99868980 0.99930833 0.49322951;
+	-6.27314194 -0.00042884 0.00026273 7.27271309 0.99868999 0.99930843 0.49322954;
+	-6.27314208 -0.00042878 0.00026269 7.27271329 0.99869017 0.99930853 0.49322961;
+	-6.27314222 -0.00042872 0.00026265 7.27271350 0.99869035 0.99930862 0.49322958;
+	-6.27314236 -0.00042866 0.00026262 7.27271370 0.99869053 0.99930872 0.49322958;
+	-6.27314250 -0.00042861 0.00026258 7.27271390 0.99869071 0.99930881 0.49322960;
+	-6.27314265 -0.00042855 0.00026255 7.27271410 0.99869089 0.99930891 0.49322954;
+	-6.27314279 -0.00042849 0.00026251 7.27271430 0.99869107 0.99930900 0.49322960;
+	-6.27314293 -0.00042843 0.00026247 7.27271450 0.99869125 0.99930910 0.49322964;
+	-6.27314307 -0.00042837 0.00026244 7.27271470 0.99869144 0.99930920 0.49322967;
+	-6.27314321 -0.00042831 0.00026240 7.27271491 0.99869162 0.99930929 0.49322963;
+	-6.27314336 -0.00042825 0.00026236 7.27271511 0.99869180 0.99930939 0.49322972;
+	-6.27314350 -0.00042819 0.00026233 7.27271531 0.99869198 0.99930948 0.49322962;
+	-6.27314364 -0.00042813 0.00026229 7.27271551 0.99869216 0.99930958 0.49322977;
+	-6.27314378 -0.00042807 0.00026226 7.27271571 0.99869234 0.99930967 0.49322982;
+	-6.27314392 -0.00042801 0.00026222 7.27271591 0.99869252 0.99930977 0.49322974;
+	-6.27314406 -0.00042795 0.00026218 7.27271611 0.99869270 0.99930986 0.49322983;
+	-6.27314421 -0.00042789 0.00026215 7.27271631 0.99869288 0.99930996 0.49322981;
+	-6.27314435 -0.00042783 0.00026211 7.27271651 0.99869306 0.99931005 0.49322987;
+	-6.27314449 -0.00042778 0.00026207 7.27271671 0.99869325 0.99931015 0.49322991;
+	-6.27314463 -0.00042772 0.00026204 7.27271691 0.99869343 0.99931025 0.49322985;
+	-6.27314477 -0.00042766 0.00026200 7.27271711 0.99869361 0.99931034 0.49322989;
+	-6.27314491 -0.00042760 0.00026197 7.27271731 0.99869379 0.99931044 0.49322995;
+	-6.27314505 -0.00042754 0.00026193 7.27271752 0.99869397 0.99931053 0.49322998;
+	-6.27314520 -0.00042748 0.00026189 7.27271772 0.99869415 0.99931063 0.49322992;
+	-6.27314534 -0.00042742 0.00026186 7.27271792 0.99869433 0.99931072 0.49322999;
+	-6.27314548 -0.00042736 0.00026182 7.27271812 0.99869451 0.99931082 0.49323014;
+	-6.27314562 -0.00042730 0.00026178 7.27271832 0.99869469 0.99931091 0.49323001;
+	-6.27314576 -0.00042724 0.00026175 7.27271852 0.99869487 0.99931101 0.49323007;
+	-6.27314590 -0.00042719 0.00026171 7.27271872 0.99869505 0.99931110 0.49323010;
+	-6.27314604 -0.00042713 0.00026168 7.27271892 0.99869523 0.99931120 0.49323018;
+	-6.27314618 -0.00042707 0.00026164 7.27271912 0.99869541 0.99931129 0.49323018;
+	-6.27314633 -0.00042701 0.00026160 7.27271932 0.99869559 0.99931139 0.49323016;
+	-6.27314647 -0.00042695 0.00026157 7.27271952 0.99869577 0.99931148 0.49323007;
+	-6.27314661 -0.00042689 0.00026153 7.27271972 0.99869595 0.99931158 0.49323022;
+	-6.27314675 -0.00042683 0.00026150 7.27271992 0.99869613 0.99931167 0.49323025;
+	-6.27314689 -0.00042677 0.00026146 7.27272012 0.99869631 0.99931177 0.49323030;
+	-6.27314703 -0.00042671 0.00026142 7.27272032 0.99869649 0.99931186 0.49323027;
+	-6.27314717 -0.00042666 0.00026139 7.27272051 0.99869667 0.99931196 0.49323031;
+	-6.27314731 -0.00042660 0.00026135 7.27272071 0.99869685 0.99931205 0.49323029;
+	-6.27314745 -0.00042654 0.00026132 7.27272091 0.99869703 0.99931215 0.49323033;
+	-6.27314759 -0.00042648 0.00026128 7.27272111 0.99869721 0.99931224 0.49323043;
+	-6.27314773 -0.00042642 0.00026124 7.27272131 0.99869739 0.99931234 0.49323035;
+	-6.27314787 -0.00042636 0.00026121 7.27272151 0.99869757 0.99931243 0.49323032;
+	-6.27314801 -0.00042630 0.00026117 7.27272171 0.99869775 0.99931253 0.49323043;
+	-6.27314815 -0.00042624 0.00026114 7.27272191 0.99869792 0.99931262 0.49323038;
+	-6.27314830 -0.00042619 0.00026110 7.27272211 0.99869810 0.99931272 0.49323055;
+	-6.27314844 -0.00042613 0.00026106 7.27272231 0.99869828 0.99931281 0.49323047;
+	-6.27314858 -0.00042607 0.00026103 7.27272251 0.99869846 0.99931290 0.49323039;
+	-6.27314872 -0.00042601 0.00026099 7.27272271 0.99869864 0.99931300 0.49323039;
+	-6.27314886 -0.00042595 0.00026096 7.27272291 0.99869882 0.99931309 0.49323057;
+	-6.27314900 -0.00042589 0.00026092 7.27272310 0.99869900 0.99931319 0.49323051;
+	-6.27314914 -0.00042583 0.00026088 7.27272330 0.99869918 0.99931328 0.49323056;
+	-6.27314928 -0.00042578 0.00026085 7.27272350 0.99869936 0.99931338 0.49323064;
+	-6.27314942 -0.00042572 0.00026081 7.27272370 0.99869954 0.99931347 0.49323065;
+	-6.27314956 -0.00042566 0.00026078 7.27272390 0.99869972 0.99931357 0.49323065;
+	-6.27314970 -0.00042560 0.00026074 7.27272410 0.99869989 0.99931366 0.49323070;
+	-6.27314984 -0.00042554 0.00026070 7.27272430 0.99870007 0.99931375 0.49323062;
+	-6.27314998 -0.00042548 0.00026067 7.27272450 0.99870025 0.99931385 0.49323063;
+	-6.27315012 -0.00042542 0.00026063 7.27272469 0.99870043 0.99931394 0.49323075;
+	-6.27315026 -0.00042537 0.00026060 7.27272489 0.99870061 0.99931404 0.49323074;
+	-6.27315040 -0.00042531 0.00026056 7.27272509 0.99870079 0.99931413 0.49323081;
+	-6.27315054 -0.00042525 0.00026052 7.27272529 0.99870097 0.99931423 0.49323082;
+	-6.27315068 -0.00042519 0.00026049 7.27272549 0.99870115 0.99931432 0.49323079;
+	-6.27315082 -0.00042513 0.00026045 7.27272569 0.99870132 0.99931441 0.49323072;
+	-6.27315096 -0.00042507 0.00026042 7.27272588 0.99870150 0.99931451 0.49323088;
+	-6.27315110 -0.00042502 0.00026038 7.27272608 0.99870168 0.99931460 0.49323096;
+	-6.27315124 -0.00042496 0.00026035 7.27272628 0.99870186 0.99931470 0.49323088;
+	-6.27315138 -0.00042490 0.00026031 7.27272648 0.99870204 0.99931479 0.49323085;
+	-6.27315152 -0.00042484 0.00026027 7.27272668 0.99870222 0.99931489 0.49323089;
+	-6.27315165 -0.00042478 0.00026024 7.27272687 0.99870239 0.99931498 0.49323085;
+	-6.27315179 -0.00042472 0.00026020 7.27272707 0.99870257 0.99931507 0.49323101;
+	-6.27315193 -0.00042467 0.00026017 7.27272727 0.99870275 0.99931517 0.49323094;
+	-6.27315207 -0.00042461 0.00026013 7.27272747 0.99870293 0.99931526 0.49323104;
+	-6.27315221 -0.00042455 0.00026010 7.27272766 0.99870311 0.99931535 0.49323100;
+	-6.27315235 -0.00042449 0.00026006 7.27272786 0.99870328 0.99931545 0.49323105;
+	-6.27315249 -0.00042443 0.00026002 7.27272806 0.99870346 0.99931554 0.49323112;
+	-6.27315263 -0.00042437 0.00025999 7.27272826 0.99870364 0.99931564 0.49323100;
+	-6.27315277 -0.00042432 0.00025995 7.27272845 0.99870382 0.99931573 0.49323104;
+	-6.27315291 -0.00042426 0.00025992 7.27272865 0.99870399 0.99931582 0.49323113;
+	-6.27315305 -0.00042420 0.00025988 7.27272885 0.99870417 0.99931592 0.49323100;
+	-6.27315319 -0.00042414 0.00025985 7.27272905 0.99870435 0.99931601 0.49323118;
+	-6.27315333 -0.00042408 0.00025981 7.27272924 0.99870453 0.99931611 0.49323122;
+	-6.27315347 -0.00042403 0.00025978 7.27272944 0.99870470 0.99931620 0.49323123;
+	-6.27315360 -0.00042397 0.00025974 7.27272964 0.99870488 0.99931629 0.49323124;
+	-6.27315374 -0.00042391 0.00025970 7.27272983 0.99870506 0.99931639 0.49323127;
+	-6.27315388 -0.00042385 0.00025967 7.27273003 0.99870524 0.99931648 0.49323133;
+	-6.27315402 -0.00042379 0.00025963 7.27273023 0.99870541 0.99931657 0.49323140;
+	-6.27315416 -0.00042374 0.00025960 7.27273042 0.99870559 0.99931667 0.49323133;
+	-6.27315430 -0.00042368 0.00025956 7.27273062 0.99870577 0.99931676 0.49323138;
+	-6.27315444 -0.00042362 0.00025953 7.27273082 0.99870595 0.99931685 0.49323140;
+	-6.27315458 -0.00042356 0.00025949 7.27273101 0.99870612 0.99931695 0.49323145;
+	-6.27315472 -0.00042350 0.00025946 7.27273121 0.99870630 0.99931704 0.49323139;
+	-6.27315485 -0.00042345 0.00025942 7.27273141 0.99870648 0.99931713 0.49323136;
+	-6.27315499 -0.00042339 0.00025938 7.27273160 0.99870665 0.99931723 0.49323144;
+	-6.27315513 -0.00042333 0.00025935 7.27273180 0.99870683 0.99931732 0.49323141;
+	-6.27315527 -0.00042327 0.00025931 7.27273200 0.99870701 0.99931741 0.49323140;
+	-6.27315541 -0.00042321 0.00025928 7.27273219 0.99870719 0.99931751 0.49323155;
+	-6.27315555 -0.00042316 0.00025924 7.27273239 0.99870736 0.99931760 0.49323157;
+	-6.27315569 -0.00042310 0.00025921 7.27273259 0.99870754 0.99931769 0.49323161;
+	-6.27315582 -0.00042304 0.00025917 7.27273278 0.99870772 0.99931779 0.49323157;
+	-6.27315596 -0.00042298 0.00025914 7.27273298 0.99870789 0.99931788 0.49323162;
+	-6.27315610 -0.00042292 0.00025910 7.27273318 0.99870807 0.99931797 0.49323164;
+	-6.27315624 -0.00042287 0.00025907 7.27273337 0.99870825 0.99931807 0.49323172;
+	-6.27315638 -0.00042281 0.00025903 7.27273357 0.99870842 0.99931816 0.49323163;
+	-6.27315652 -0.00042275 0.00025899 7.27273376 0.99870860 0.99931825 0.49323158;
+	-6.27315665 -0.00042269 0.00025896 7.27273396 0.99870877 0.99931835 0.49323168;
+	-6.27315679 -0.00042264 0.00025892 7.27273416 0.99870895 0.99931844 0.49323175;
+	-6.27315693 -0.00042258 0.00025889 7.27273435 0.99870913 0.99931853 0.49323172;
+	-6.27315707 -0.00042252 0.00025885 7.27273455 0.99870930 0.99931863 0.49323175;
+	-6.27315721 -0.00042246 0.00025882 7.27273474 0.99870948 0.99931872 0.49323179;
+	-6.27315734 -0.00042241 0.00025878 7.27273494 0.99870966 0.99931881 0.49323178;
+	-6.27315748 -0.00042235 0.00025875 7.27273513 0.99870983 0.99931891 0.49323183;
+	-6.27315762 -0.00042229 0.00025871 7.27273533 0.99871001 0.99931900 0.49323180;
+	-6.27315776 -0.00042223 0.00025868 7.27273552 0.99871018 0.99931909 0.49323181;
+	-6.27315790 -0.00042218 0.00025864 7.27273572 0.99871036 0.99931918 0.49323188;
+	-6.27315803 -0.00042212 0.00025861 7.27273592 0.99871054 0.99931928 0.49323197;
+	-6.27315817 -0.00042206 0.00025857 7.27273611 0.99871071 0.99931937 0.49323190;
+	-6.27315831 -0.00042200 0.00025854 7.27273631 0.99871089 0.99931946 0.49323185;
+	-6.27315845 -0.00042194 0.00025850 7.27273650 0.99871106 0.99931956 0.49323199;
+	-6.27315858 -0.00042189 0.00025846 7.27273670 0.99871124 0.99931965 0.49323204;
+	-6.27315872 -0.00042183 0.00025843 7.27273689 0.99871141 0.99931974 0.49323191;
+	-6.27315886 -0.00042177 0.00025839 7.27273709 0.99871159 0.99931983 0.49323202;
+	-6.27315900 -0.00042171 0.00025836 7.27273728 0.99871177 0.99931993 0.49323199;
+	-6.27315913 -0.00042166 0.00025832 7.27273748 0.99871194 0.99932002 0.49323200;
+	-6.27315927 -0.00042160 0.00025829 7.27273767 0.99871212 0.99932011 0.49323212;
+	-6.27315941 -0.00042154 0.00025825 7.27273787 0.99871229 0.99932020 0.49323215;
+	-6.27315955 -0.00042149 0.00025822 7.27273806 0.99871247 0.99932030 0.49323211;
+	-6.27315968 -0.00042143 0.00025818 7.27273826 0.99871264 0.99932039 0.49323217;
+	-6.27315982 -0.00042137 0.00025815 7.27273845 0.99871282 0.99932048 0.49323219;
+	-6.27315996 -0.00042131 0.00025811 7.27273864 0.99871299 0.99932057 0.49323223;
+	-6.27316010 -0.00042126 0.00025808 7.27273884 0.99871317 0.99932067 0.49323224;
+	-6.27316023 -0.00042120 0.00025804 7.27273903 0.99871334 0.99932076 0.49323221;
+	-6.27316037 -0.00042114 0.00025801 7.27273923 0.99871352 0.99932085 0.49323224;
+	-6.27316051 -0.00042108 0.00025797 7.27273942 0.99871369 0.99932094 0.49323220;
+	-6.27316064 -0.00042103 0.00025794 7.27273962 0.99871387 0.99932104 0.49323229;
+	-6.27316078 -0.00042097 0.00025790 7.27273981 0.99871404 0.99932113 0.49323228;
+	-6.27316092 -0.00042091 0.00025787 7.27274001 0.99871422 0.99932122 0.49323228;
+	-6.27316105 -0.00042085 0.00025783 7.27274020 0.99871439 0.99932131 0.49323234;
+	-6.27316119 -0.00042080 0.00025780 7.27274039 0.99871457 0.99932141 0.49323243;
+	-6.27316133 -0.00042074 0.00025776 7.27274059 0.99871474 0.99932150 0.49323241;
+	-6.27316147 -0.00042068 0.00025773 7.27274078 0.99871492 0.99932159 0.49323242;
+	-6.27316160 -0.00042063 0.00025769 7.27274098 0.99871509 0.99932168 0.49323234;
+	-6.27316174 -0.00042057 0.00025766 7.27274117 0.99871527 0.99932177 0.49323243;
+	-6.27316188 -0.00042051 0.00025762 7.27274136 0.99871544 0.99932187 0.49323249;
+	-6.27316201 -0.00042045 0.00025759 7.27274156 0.99871562 0.99932196 0.49323249;
+	-6.27316215 -0.00042040 0.00025755 7.27274175 0.99871579 0.99932205 0.49323255;
+	-6.27316229 -0.00042034 0.00025752 7.27274195 0.99871597 0.99932214 0.49323261;
+	-6.27316242 -0.00042028 0.00025748 7.27274214 0.99871614 0.99932223 0.49323266;
+	-6.27316256 -0.00042023 0.00025745 7.27274233 0.99871631 0.99932233 0.49323261;
+	-6.27316270 -0.00042017 0.00025741 7.27274253 0.99871649 0.99932242 0.49323265;
+	-6.27316283 -0.00042011 0.00025738 7.27274272 0.99871666 0.99932251 0.49323261;
+	-6.27316297 -0.00042006 0.00025734 7.27274291 0.99871684 0.99932260 0.49323268;
+	-6.27316311 -0.00042000 0.00025731 7.27274311 0.99871701 0.99932269 0.49323261;
+	-6.27316324 -0.00041994 0.00025727 7.27274330 0.99871719 0.99932279 0.49323277;
+	-6.27316338 -0.00041988 0.00025724 7.27274349 0.99871736 0.99932288 0.49323278;
+	-6.27316351 -0.00041983 0.00025720 7.27274369 0.99871753 0.99932297 0.49323270;
+	-6.27316365 -0.00041977 0.00025717 7.27274388 0.99871771 0.99932306 0.49323262;
+	-6.27316379 -0.00041971 0.00025713 7.27274407 0.99871788 0.99932315 0.49323267;
+	-6.27316392 -0.00041966 0.00025710 7.27274427 0.99871806 0.99932325 0.49323282;
+	-6.27316406 -0.00041960 0.00025706 7.27274446 0.99871823 0.99932334 0.49323274;
+	-6.27316420 -0.00041954 0.00025703 7.27274465 0.99871840 0.99932343 0.49323276;
+	-6.27316433 -0.00041949 0.00025699 7.27274485 0.99871858 0.99932352 0.49323279;
+	-6.27316447 -0.00041943 0.00025696 7.27274504 0.99871875 0.99932361 0.49323285;
+	-6.27316460 -0.00041937 0.00025692 7.27274523 0.99871892 0.99932370 0.49323286;
+	-6.27316474 -0.00041932 0.00025689 7.27274542 0.99871910 0.99932380 0.49323296;
+	-6.27316488 -0.00041926 0.00025685 7.27274562 0.99871927 0.99932389 0.49323294;
+	-6.27316501 -0.00041920 0.00025682 7.27274581 0.99871944 0.99932398 0.49323292;
+	-6.27316515 -0.00041915 0.00025678 7.27274600 0.99871962 0.99932407 0.49323285;
+	-6.27316528 -0.00041909 0.00025675 7.27274619 0.99871979 0.99932416 0.49323292;
+	-6.27316542 -0.00041903 0.00025671 7.27274639 0.99871996 0.99932425 0.49323303;
+	-6.27316555 -0.00041898 0.00025668 7.27274658 0.99872014 0.99932435 0.49323312;
+	-6.27316569 -0.00041892 0.00025664 7.27274677 0.99872031 0.99932444 0.49323326;
+	-6.27316583 -0.00041886 0.00025661 7.27274696 0.99872048 0.99932453 0.49323308;
+	-6.27316596 -0.00041881 0.00025658 7.27274716 0.99872066 0.99932462 0.49323307;
+	-6.27316610 -0.00041875 0.00025654 7.27274735 0.99872083 0.99932471 0.49323314;
+	-6.27316623 -0.00041869 0.00025651 7.27274754 0.99872100 0.99932480 0.49323312;
+	-6.27316637 -0.00041864 0.00025647 7.27274773 0.99872118 0.99932489 0.49323320;
+	-6.27316650 -0.00041858 0.00025644 7.27274793 0.99872135 0.99932498 0.49323311;
+	-6.27316664 -0.00041852 0.00025640 7.27274812 0.99872152 0.99932508 0.49323311;
+	-6.27316677 -0.00041847 0.00025637 7.27274831 0.99872170 0.99932517 0.49323317;
+	-6.27316691 -0.00041841 0.00025633 7.27274850 0.99872187 0.99932526 0.49323323;
+	-6.27316705 -0.00041835 0.00025630 7.27274869 0.99872204 0.99932535 0.49323325;
+	-6.27316718 -0.00041830 0.00025626 7.27274888 0.99872221 0.99932544 0.49323334;
+	-6.27316732 -0.00041824 0.00025623 7.27274908 0.99872239 0.99932553 0.49323332;
+	-6.27316745 -0.00041818 0.00025619 7.27274927 0.99872256 0.99932562 0.49323331;
+	-6.27316759 -0.00041813 0.00025616 7.27274946 0.99872273 0.99932571 0.49323331;
+	-6.27316772 -0.00041807 0.00025612 7.27274965 0.99872290 0.99932581 0.49323346;
+	-6.27316786 -0.00041801 0.00025609 7.27274984 0.99872308 0.99932590 0.49323331;
+	-6.27316799 -0.00041796 0.00025606 7.27275003 0.99872325 0.99932599 0.49323339;
+	-6.27316813 -0.00041790 0.00025602 7.27275023 0.99872342 0.99932608 0.49323343;
+	-6.27316826 -0.00041784 0.00025599 7.27275042 0.99872359 0.99932617 0.49323337;
+	-6.27316840 -0.00041779 0.00025595 7.27275061 0.99872377 0.99932626 0.49323342;
+	-6.27316853 -0.00041773 0.00025592 7.27275080 0.99872394 0.99932635 0.49323347;
+	-6.27316867 -0.00041768 0.00025588 7.27275099 0.99872411 0.99932644 0.49323353;
+	-6.27316880 -0.00041762 0.00025585 7.27275118 0.99872428 0.99932653 0.49323349;
+	-6.27316894 -0.00041756 0.00025581 7.27275137 0.99872446 0.99932662 0.49323358;
+	-6.27316907 -0.00041751 0.00025578 7.27275157 0.99872463 0.99932671 0.49323354;
+	-6.27316921 -0.00041745 0.00025574 7.27275176 0.99872480 0.99932681 0.49323350;
+	-6.27316934 -0.00041739 0.00025571 7.27275195 0.99872497 0.99932690 0.49323356;
+	-6.27316948 -0.00041734 0.00025568 7.27275214 0.99872514 0.99932699 0.49323355;
+	-6.27316961 -0.00041728 0.00025564 7.27275233 0.99872532 0.99932708 0.49323359;
+	-6.27316974 -0.00041722 0.00025561 7.27275252 0.99872549 0.99932717 0.49323360;
+	-6.27316988 -0.00041717 0.00025557 7.27275271 0.99872566 0.99932726 0.49323362;
+	-6.27317001 -0.00041711 0.00025554 7.27275290 0.99872583 0.99932735 0.49323369;
+	-6.27317015 -0.00041706 0.00025550 7.27275309 0.99872600 0.99932744 0.49323369;
+	-6.27317028 -0.00041700 0.00025547 7.27275328 0.99872617 0.99932753 0.49323368;
+	-6.27317042 -0.00041694 0.00025543 7.27275347 0.99872635 0.99932762 0.49323375;
+	-6.27317055 -0.00041689 0.00025540 7.27275366 0.99872652 0.99932771 0.49323378;
+	-6.27317069 -0.00041683 0.00025537 7.27275385 0.99872669 0.99932780 0.49323373;
+	-6.27317082 -0.00041678 0.00025533 7.27275405 0.99872686 0.99932789 0.49323370;
+	-6.27317095 -0.00041672 0.00025530 7.27275424 0.99872703 0.99932798 0.49323379;
+	-6.27317109 -0.00041666 0.00025526 7.27275443 0.99872720 0.99932807 0.49323375;
+	-6.27317122 -0.00041661 0.00025523 7.27275462 0.99872738 0.99932816 0.49323392;
+	-6.27317136 -0.00041655 0.00025519 7.27275481 0.99872755 0.99932826 0.49323391;
+	-6.27317149 -0.00041649 0.00025516 7.27275500 0.99872772 0.99932835 0.49323391;
+	-6.27317163 -0.00041644 0.00025512 7.27275519 0.99872789 0.99932844 0.49323388;
+	-6.27317176 -0.00041638 0.00025509 7.27275538 0.99872806 0.99932853 0.49323395;
+	-6.27317189 -0.00041633 0.00025506 7.27275557 0.99872823 0.99932862 0.49323385;
+	-6.27317203 -0.00041627 0.00025502 7.27275576 0.99872840 0.99932871 0.49323392;
+	-6.27317216 -0.00041621 0.00025499 7.27275595 0.99872857 0.99932880 0.49323402;
+	-6.27317230 -0.00041616 0.00025495 7.27275614 0.99872874 0.99932889 0.49323405;
+	-6.27317243 -0.00041610 0.00025492 7.27275633 0.99872892 0.99932898 0.49323405;
+	-6.27317256 -0.00041605 0.00025488 7.27275652 0.99872909 0.99932907 0.49323408;
+	-6.27317270 -0.00041599 0.00025485 7.27275671 0.99872926 0.99932916 0.49323410;
+	-6.27317283 -0.00041594 0.00025482 7.27275690 0.99872943 0.99932925 0.49323410;
+	-6.27317297 -0.00041588 0.00025478 7.27275709 0.99872960 0.99932934 0.49323416;
+	-6.27317310 -0.00041582 0.00025475 7.27275728 0.99872977 0.99932943 0.49323413;
+	-6.27317323 -0.00041577 0.00025471 7.27275746 0.99872994 0.99932952 0.49323409;
+	-6.27317337 -0.00041571 0.00025468 7.27275765 0.99873011 0.99932961 0.49323425;
+	-6.27317350 -0.00041566 0.00025465 7.27275784 0.99873028 0.99932970 0.49323426;
+	-6.27317363 -0.00041560 0.00025461 7.27275803 0.99873045 0.99932979 0.49323421;
+	-6.27317377 -0.00041554 0.00025458 7.27275822 0.99873062 0.99932988 0.49323430;
+	-6.27317390 -0.00041549 0.00025454 7.27275841 0.99873079 0.99932997 0.49323422;
+	-6.27317403 -0.00041543 0.00025451 7.27275860 0.99873096 0.99933006 0.49323429;
+	-6.27317417 -0.00041538 0.00025447 7.27275879 0.99873113 0.99933015 0.49323420;
+	-6.27317430 -0.00041532 0.00025444 7.27275898 0.99873130 0.99933024 0.49323427;
+	-6.27317443 -0.00041527 0.00025441 7.27275917 0.99873147 0.99933033 0.49323431;
+	-6.27317457 -0.00041521 0.00025437 7.27275936 0.99873164 0.99933042 0.49323443;
+	-6.27317470 -0.00041515 0.00025434 7.27275955 0.99873181 0.99933051 0.49323428;
+	-6.27317483 -0.00041510 0.00025430 7.27275974 0.99873198 0.99933060 0.49323443;
+	-6.27317497 -0.00041504 0.00025427 7.27275992 0.99873215 0.99933069 0.49323437;
+	-6.27317510 -0.00041499 0.00025424 7.27276011 0.99873232 0.99933078 0.49323454;
+	-6.27317523 -0.00041493 0.00025420 7.27276030 0.99873249 0.99933087 0.49323446;
+	-6.27317537 -0.00041488 0.00025417 7.27276049 0.99873266 0.99933096 0.49323436;
+	-6.27317550 -0.00041482 0.00025413 7.27276068 0.99873283 0.99933105 0.49323455;
+	-6.27317563 -0.00041476 0.00025410 7.27276087 0.99873300 0.99933114 0.49323443;
+	-6.27317577 -0.00041471 0.00025406 7.27276106 0.99873317 0.99933123 0.49323444;
+	-6.27317590 -0.00041465 0.00025403 7.27276124 0.99873334 0.99933132 0.49323452;
+	-6.27317603 -0.00041460 0.00025400 7.27276143 0.99873351 0.99933140 0.49323465;
+	-6.27317616 -0.00041454 0.00025396 7.27276162 0.99873368 0.99933149 0.49323452;
+	-6.27317630 -0.00041449 0.00025393 7.27276181 0.99873385 0.99933158 0.49323459;
+	-6.27317643 -0.00041443 0.00025389 7.27276200 0.99873402 0.99933167 0.49323462;
+	-6.27317656 -0.00041438 0.00025386 7.27276219 0.99873419 0.99933176 0.49323457;
+	-6.27317670 -0.00041432 0.00025383 7.27276237 0.99873436 0.99933185 0.49323468;
+	-6.27317683 -0.00041427 0.00025379 7.27276256 0.99873453 0.99933194 0.49323479;
+	-6.27317696 -0.00041421 0.00025376 7.27276275 0.99873470 0.99933203 0.49323481;
+	-6.27317709 -0.00041415 0.00025372 7.27276294 0.99873487 0.99933212 0.49323465;
+	-6.27317723 -0.00041410 0.00025369 7.27276313 0.99873504 0.99933221 0.49323467;
+	-6.27317736 -0.00041404 0.00025366 7.27276332 0.99873521 0.99933230 0.49323474;
+	-6.27317749 -0.00041399 0.00025362 7.27276350 0.99873538 0.99933239 0.49323475;
+	-6.27317762 -0.00041393 0.00025359 7.27276369 0.99873555 0.99933248 0.49323489;
+	-6.27317776 -0.00041388 0.00025355 7.27276388 0.99873572 0.99933257 0.49323478;
+	-6.27317789 -0.00041382 0.00025352 7.27276407 0.99873588 0.99933266 0.49323490;
+	-6.27317802 -0.00041377 0.00025349 7.27276425 0.99873605 0.99933275 0.49323500;
+	-6.27317815 -0.00041371 0.00025345 7.27276444 0.99873622 0.99933283 0.49323486;
+	-6.27317829 -0.00041366 0.00025342 7.27276463 0.99873639 0.99933292 0.49323491;
+	-6.27317842 -0.00041360 0.00025339 7.27276482 0.99873656 0.99933301 0.49323473;
+	-6.27317855 -0.00041355 0.00025335 7.27276500 0.99873673 0.99933310 0.49323495;
+	-6.27317868 -0.00041349 0.00025332 7.27276519 0.99873690 0.99933319 0.49323495;
+	-6.27317882 -0.00041344 0.00025328 7.27276538 0.99873707 0.99933328 0.49323487;
+	-6.27317895 -0.00041338 0.00025325 7.27276557 0.99873724 0.99933337 0.49323500;
+	-6.27317908 -0.00041333 0.00025322 7.27276575 0.99873740 0.99933346 0.49323493;
+	-6.27317921 -0.00041327 0.00025318 7.27276594 0.99873757 0.99933355 0.49323497;
+	-6.27317934 -0.00041321 0.00025315 7.27276613 0.99873774 0.99933364 0.49323507;
+	-6.27317948 -0.00041316 0.00025311 7.27276632 0.99873791 0.99933373 0.49323512;
+	-6.27317961 -0.00041310 0.00025308 7.27276650 0.99873808 0.99933381 0.49323500;
+	-6.27317974 -0.00041305 0.00025305 7.27276669 0.99873825 0.99933390 0.49323510;
+	-6.27317987 -0.00041299 0.00025301 7.27276688 0.99873842 0.99933399 0.49323520;
+	-6.27318000 -0.00041294 0.00025298 7.27276706 0.99873858 0.99933408 0.49323515;
+	-6.27318014 -0.00041288 0.00025295 7.27276725 0.99873875 0.99933417 0.49323523;
+	-6.27318027 -0.00041283 0.00025291 7.27276744 0.99873892 0.99933426 0.49323516;
+	-6.27318040 -0.00041277 0.00025288 7.27276762 0.99873909 0.99933435 0.49323517;
+	-6.27318053 -0.00041272 0.00025284 7.27276781 0.99873926 0.99933444 0.49323519;
+	-6.27318066 -0.00041266 0.00025281 7.27276800 0.99873942 0.99933453 0.49323515;
+	-6.27318079 -0.00041261 0.00025278 7.27276818 0.99873959 0.99933461 0.49323538;
+	-6.27318093 -0.00041255 0.00025274 7.27276837 0.99873976 0.99933470 0.49323529;
+	-6.27318106 -0.00041250 0.00025271 7.27276856 0.99873993 0.99933479 0.49323537;
+	-6.27318119 -0.00041244 0.00025268 7.27276874 0.99874010 0.99933488 0.49323534;
+	-6.27318132 -0.00041239 0.00025264 7.27276893 0.99874026 0.99933497 0.49323537;
+	-6.27318145 -0.00041233 0.00025261 7.27276912 0.99874043 0.99933506 0.49323540;
+	-6.27318158 -0.00041228 0.00025258 7.27276930 0.99874060 0.99933515 0.49323539;
+	-6.27318171 -0.00041222 0.00025254 7.27276949 0.99874077 0.99933523 0.49323536;
+	-6.27318185 -0.00041217 0.00025251 7.27276968 0.99874094 0.99933532 0.49323541;
+	-6.27318198 -0.00041211 0.00025247 7.27276986 0.99874110 0.99933541 0.49323529;
+	-6.27318211 -0.00041206 0.00025244 7.27277005 0.99874127 0.99933550 0.49323554;
+	-6.27318224 -0.00041200 0.00025241 7.27277023 0.99874144 0.99933559 0.49323556;
+	-6.27318237 -0.00041195 0.00025237 7.27277042 0.99874161 0.99933568 0.49323548;
+	-6.27318250 -0.00041190 0.00025234 7.27277061 0.99874177 0.99933577 0.49323555;
+	-6.27318263 -0.00041184 0.00025231 7.27277079 0.99874194 0.99933585 0.49323555;
+	-6.27318276 -0.00041179 0.00025227 7.27277098 0.99874211 0.99933594 0.49323566;
+	-6.27318290 -0.00041173 0.00025224 7.27277117 0.99874228 0.99933603 0.49323552;
+	-6.27318303 -0.00041168 0.00025221 7.27277135 0.99874244 0.99933612 0.49323561;
+	-6.27318316 -0.00041162 0.00025217 7.27277154 0.99874261 0.99933621 0.49323566;
+	-6.27318329 -0.00041157 0.00025214 7.27277172 0.99874278 0.99933630 0.49323555;
+	-6.27318342 -0.00041151 0.00025210 7.27277191 0.99874294 0.99933638 0.49323560;
+	-6.27318355 -0.00041146 0.00025207 7.27277209 0.99874311 0.99933647 0.49323570;
+	-6.27318368 -0.00041140 0.00025204 7.27277228 0.99874328 0.99933656 0.49323566;
+	-6.27318381 -0.00041135 0.00025200 7.27277246 0.99874345 0.99933665 0.49323580;
+	-6.27318394 -0.00041129 0.00025197 7.27277265 0.99874361 0.99933674 0.49323573;
+	-6.27318407 -0.00041124 0.00025194 7.27277284 0.99874378 0.99933682 0.49323588;
+	-6.27318420 -0.00041118 0.00025190 7.27277302 0.99874395 0.99933691 0.49323574;
+	-6.27318434 -0.00041113 0.00025187 7.27277321 0.99874411 0.99933700 0.49323584;
+	-6.27318447 -0.00041107 0.00025184 7.27277339 0.99874428 0.99933709 0.49323574;
+	-6.27318460 -0.00041102 0.00025180 7.27277358 0.99874445 0.99933718 0.49323586;
+	-6.27318473 -0.00041097 0.00025177 7.27277376 0.99874461 0.99933726 0.49323593;
+	-6.27318486 -0.00041091 0.00025174 7.27277395 0.99874478 0.99933735 0.49323592;
+	-6.27318499 -0.00041086 0.00025170 7.27277413 0.99874495 0.99933744 0.49323598;
+	-6.27318512 -0.00041080 0.00025167 7.27277432 0.99874511 0.99933753 0.49323589;
+	-6.27318525 -0.00041075 0.00025164 7.27277450 0.99874528 0.99933762 0.49323587;
+	-6.27318538 -0.00041069 0.00025160 7.27277469 0.99874545 0.99933770 0.49323605;
+	-6.27318551 -0.00041064 0.00025157 7.27277487 0.99874561 0.99933779 0.49323594;
+	-6.27318564 -0.00041058 0.00025154 7.27277506 0.99874578 0.99933788 0.49323599;
+	-6.27318577 -0.00041053 0.00025150 7.27277524 0.99874595 0.99933797 0.49323604;
+	-6.27318590 -0.00041048 0.00025147 7.27277543 0.99874611 0.99933806 0.49323602;
+	-6.27318603 -0.00041042 0.00025144 7.27277561 0.99874628 0.99933814 0.49323601;
+	-6.27318616 -0.00041037 0.00025140 7.27277580 0.99874645 0.99933823 0.49323601;
+	-6.27318629 -0.00041031 0.00025137 7.27277598 0.99874661 0.99933832 0.49323608;
+	-6.27318642 -0.00041026 0.00025134 7.27277616 0.99874678 0.99933841 0.49323616;
+	-6.27318655 -0.00041020 0.00025130 7.27277635 0.99874694 0.99933849 0.49323617;
+	-6.27318668 -0.00041015 0.00025127 7.27277653 0.99874711 0.99933858 0.49323615;
+	-6.27318681 -0.00041009 0.00025124 7.27277672 0.99874728 0.99933867 0.49323614;
+	-6.27318694 -0.00041004 0.00025120 7.27277690 0.99874744 0.99933876 0.49323615;
+	-6.27318707 -0.00040999 0.00025117 7.27277709 0.99874761 0.99933884 0.49323610;
+	-6.27318720 -0.00040993 0.00025114 7.27277727 0.99874777 0.99933893 0.49323628;
+	-6.27318733 -0.00040988 0.00025110 7.27277746 0.99874794 0.99933902 0.49323634;
+	-6.27318746 -0.00040982 0.00025107 7.27277764 0.99874811 0.99933911 0.49323627;
+	-6.27318759 -0.00040977 0.00025104 7.27277782 0.99874827 0.99933919 0.49323622;
+	-6.27318772 -0.00040971 0.00025100 7.27277801 0.99874844 0.99933928 0.49323631;
+	-6.27318785 -0.00040966 0.00025097 7.27277819 0.99874860 0.99933937 0.49323628;
+	-6.27318798 -0.00040961 0.00025094 7.27277838 0.99874877 0.99933946 0.49323627;
+	-6.27318811 -0.00040955 0.00025090 7.27277856 0.99874893 0.99933954 0.49323637;
+	-6.27318824 -0.00040950 0.00025087 7.27277874 0.99874910 0.99933963 0.49323632;
+	-6.27318837 -0.00040944 0.00025084 7.27277893 0.99874927 0.99933972 0.49323640;
+	-6.27318850 -0.00040939 0.00025080 7.27277911 0.99874943 0.99933981 0.49323651;
+	-6.27318863 -0.00040934 0.00025077 7.27277929 0.99874960 0.99933989 0.49323644;
+	-6.27318876 -0.00040928 0.00025074 7.27277948 0.99874976 0.99933998 0.49323637;
+	-6.27318889 -0.00040923 0.00025070 7.27277966 0.99874993 0.99934007 0.49323647;
+	-6.27318902 -0.00040917 0.00025067 7.27277985 0.99875009 0.99934016 0.49323644;
+	-6.27318915 -0.00040912 0.00025064 7.27278003 0.99875026 0.99934024 0.49323643;
+	-6.27318928 -0.00040906 0.00025060 7.27278021 0.99875042 0.99934033 0.49323648;
+	-6.27318941 -0.00040901 0.00025057 7.27278040 0.99875059 0.99934042 0.49323655;
+	-6.27318954 -0.00040896 0.00025054 7.27278058 0.99875075 0.99934050 0.49323657;
+	-6.27318967 -0.00040890 0.00025051 7.27278076 0.99875092 0.99934059 0.49323664;
+	-6.27318979 -0.00040885 0.00025047 7.27278095 0.99875108 0.99934068 0.49323657;
+	-6.27318992 -0.00040879 0.00025044 7.27278113 0.99875125 0.99934077 0.49323666;
+	-6.27319005 -0.00040874 0.00025041 7.27278131 0.99875141 0.99934085 0.49323663;
+	-6.27319018 -0.00040869 0.00025037 7.27278150 0.99875158 0.99934094 0.49323672;
+	-6.27319031 -0.00040863 0.00025034 7.27278168 0.99875174 0.99934103 0.49323665;
+	-6.27319044 -0.00040858 0.00025031 7.27278186 0.99875191 0.99934111 0.49323670;
+	-6.27319057 -0.00040852 0.00025027 7.27278204 0.99875207 0.99934120 0.49323671;
+	-6.27319070 -0.00040847 0.00025024 7.27278223 0.99875224 0.99934129 0.49323673;
+	-6.27319083 -0.00040842 0.00025021 7.27278241 0.99875240 0.99934137 0.49323684;
+	-6.27319096 -0.00040836 0.00025017 7.27278259 0.99875257 0.99934146 0.49323687;
+	-6.27319109 -0.00040831 0.00025014 7.27278278 0.99875273 0.99934155 0.49323685;
+	-6.27319121 -0.00040826 0.00025011 7.27278296 0.99875290 0.99934164 0.49323688;
+	-6.27319134 -0.00040820 0.00025008 7.27278314 0.99875306 0.99934172 0.49323675;
+	-6.27319147 -0.00040815 0.00025004 7.27278332 0.99875322 0.99934181 0.49323678;
+	-6.27319160 -0.00040809 0.00025001 7.27278351 0.99875339 0.99934190 0.49323687;
+	-6.27319173 -0.00040804 0.00024998 7.27278369 0.99875355 0.99934198 0.49323686;
+	-6.27319186 -0.00040799 0.00024994 7.27278387 0.99875372 0.99934207 0.49323698;
+	-6.27319199 -0.00040793 0.00024991 7.27278405 0.99875388 0.99934216 0.49323692;
+	-6.27319212 -0.00040788 0.00024988 7.27278424 0.99875405 0.99934224 0.49323708;
+	-6.27319224 -0.00040783 0.00024985 7.27278442 0.99875421 0.99934233 0.49323704;
+	-6.27319237 -0.00040777 0.00024981 7.27278460 0.99875437 0.99934242 0.49323700;
+	-6.27319250 -0.00040772 0.00024978 7.27278478 0.99875454 0.99934250 0.49323693;
+	-6.27319263 -0.00040766 0.00024975 7.27278497 0.99875470 0.99934259 0.49323702;
+	-6.27319276 -0.00040761 0.00024971 7.27278515 0.99875487 0.99934268 0.49323716;
+	-6.27319289 -0.00040756 0.00024968 7.27278533 0.99875503 0.99934276 0.49323703;
+	-6.27319302 -0.00040750 0.00024965 7.27278551 0.99875519 0.99934285 0.49323706;
+	-6.27319314 -0.00040745 0.00024961 7.27278569 0.99875536 0.99934294 0.49323706;
+	-6.27319327 -0.00040740 0.00024958 7.27278588 0.99875552 0.99934302 0.49323714;
+	-6.27319340 -0.00040734 0.00024955 7.27278606 0.99875569 0.99934311 0.49323706;
+	-6.27319353 -0.00040729 0.00024952 7.27278624 0.99875585 0.99934320 0.49323708;
+	-6.27319366 -0.00040724 0.00024948 7.27278642 0.99875601 0.99934328 0.49323729;
+	-6.27319379 -0.00040718 0.00024945 7.27278660 0.99875618 0.99934337 0.49323724;
+	-6.27319391 -0.00040713 0.00024942 7.27278679 0.99875634 0.99934345 0.49323721;
+	-6.27319404 -0.00040707 0.00024938 7.27278697 0.99875650 0.99934354 0.49323728;
+	-6.27319417 -0.00040702 0.00024935 7.27278715 0.99875667 0.99934363 0.49323732;
+	-6.27319430 -0.00040697 0.00024932 7.27278733 0.99875683 0.99934371 0.49323735;
+	-6.27319443 -0.00040691 0.00024929 7.27278751 0.99875700 0.99934380 0.49323736;
+	-6.27319455 -0.00040686 0.00024925 7.27278769 0.99875716 0.99934389 0.49323725;
+	-6.27319468 -0.00040681 0.00024922 7.27278788 0.99875732 0.99934397 0.49323738;
+	-6.27319481 -0.00040675 0.00024919 7.27278806 0.99875749 0.99934406 0.49323735;
+	-6.27319494 -0.00040670 0.00024916 7.27278824 0.99875765 0.99934414 0.49323731;
+	-6.27319507 -0.00040665 0.00024912 7.27278842 0.99875781 0.99934423 0.49323743;
+	-6.27319519 -0.00040659 0.00024909 7.27278860 0.99875798 0.99934432 0.49323750;
+	-6.27319532 -0.00040654 0.00024906 7.27278878 0.99875814 0.99934440 0.49323738;
+	-6.27319545 -0.00040649 0.00024902 7.27278896 0.99875830 0.99934449 0.49323751;
+	-6.27319558 -0.00040643 0.00024899 7.27278914 0.99875846 0.99934457 0.49323752;
+	-6.27319571 -0.00040638 0.00024896 7.27278933 0.99875863 0.99934466 0.49323741;
+	-6.27319583 -0.00040633 0.00024893 7.27278951 0.99875879 0.99934475 0.49323749;
+	-6.27319596 -0.00040627 0.00024889 7.27278969 0.99875895 0.99934483 0.49323755;
+	-6.27319609 -0.00040622 0.00024886 7.27278987 0.99875912 0.99934492 0.49323762;
+	-6.27319622 -0.00040617 0.00024883 7.27279005 0.99875928 0.99934501 0.49323759;
+	-6.27319634 -0.00040611 0.00024880 7.27279023 0.99875944 0.99934509 0.49323760;
+	-6.27319647 -0.00040606 0.00024876 7.27279041 0.99875960 0.99934518 0.49323757;
+	-6.27319660 -0.00040601 0.00024873 7.27279059 0.99875977 0.99934526 0.49323761;
+	-6.27319673 -0.00040595 0.00024870 7.27279077 0.99875993 0.99934535 0.49323762;
+	-6.27319685 -0.00040590 0.00024867 7.27279095 0.99876009 0.99934543 0.49323771;
+	-6.27319698 -0.00040585 0.00024863 7.27279113 0.99876026 0.99934552 0.49323775;
+	-6.27319711 -0.00040579 0.00024860 7.27279131 0.99876042 0.99934561 0.49323777;
+	-6.27319724 -0.00040574 0.00024857 7.27279149 0.99876058 0.99934569 0.49323761;
+	-6.27319736 -0.00040569 0.00024853 7.27279168 0.99876074 0.99934578 0.49323772;
+	-6.27319749 -0.00040563 0.00024850 7.27279186 0.99876091 0.99934586 0.49323767;
+	-6.27319762 -0.00040558 0.00024847 7.27279204 0.99876107 0.99934595 0.49323779;
+	-6.27319774 -0.00040553 0.00024844 7.27279222 0.99876123 0.99934603 0.49323782;
+	-6.27319787 -0.00040547 0.00024840 7.27279240 0.99876139 0.99934612 0.49323776;
+	-6.27319800 -0.00040542 0.00024837 7.27279258 0.99876156 0.99934621 0.49323782;
+	-6.27319813 -0.00040537 0.00024834 7.27279276 0.99876172 0.99934629 0.49323787;
+	-6.27319825 -0.00040532 0.00024831 7.27279294 0.99876188 0.99934638 0.49323783;
+	-6.27319838 -0.00040526 0.00024827 7.27279312 0.99876204 0.99934646 0.49323795;
+	-6.27319851 -0.00040521 0.00024824 7.27279330 0.99876220 0.99934655 0.49323788;
+	-6.27319863 -0.00040516 0.00024821 7.27279348 0.99876237 0.99934663 0.49323798;
+	-6.27319876 -0.00040510 0.00024818 7.27279366 0.99876253 0.99934672 0.49323799;
+	-6.27319889 -0.00040505 0.00024814 7.27279384 0.99876269 0.99934681 0.49323794;
+	-6.27319901 -0.00040500 0.00024811 7.27279402 0.99876285 0.99934689 0.49323812;
+	-6.27319914 -0.00040494 0.00024808 7.27279420 0.99876301 0.99934698 0.49323800;
+	-6.27319927 -0.00040489 0.00024805 7.27279438 0.99876318 0.99934706 0.49323799;
+	-6.27319939 -0.00040484 0.00024801 7.27279456 0.99876334 0.99934715 0.49323807;
+	-6.27319952 -0.00040479 0.00024798 7.27279474 0.99876350 0.99934723 0.49323804;
+	-6.27319965 -0.00040473 0.00024795 7.27279492 0.99876366 0.99934732 0.49323807;
+	-6.27319977 -0.00040468 0.00024792 7.27279510 0.99876382 0.99934740 0.49323796;
+	-6.27319990 -0.00040463 0.00024788 7.27279527 0.99876398 0.99934749 0.49323820;
+	-6.27320003 -0.00040457 0.00024785 7.27279545 0.99876415 0.99934757 0.49323815;
+	-6.27320015 -0.00040452 0.00024782 7.27279563 0.99876431 0.99934766 0.49323813;
+	-6.27320028 -0.00040447 0.00024779 7.27279581 0.99876447 0.99934774 0.49323819;
+	-6.27320041 -0.00040442 0.00024776 7.27279599 0.99876463 0.99934783 0.49323817;
+	-6.27320053 -0.00040436 0.00024772 7.27279617 0.99876479 0.99934791 0.49323809;
+	-6.27320066 -0.00040431 0.00024769 7.27279635 0.99876495 0.99934800 0.49323823;
+	-6.27320079 -0.00040426 0.00024766 7.27279653 0.99876511 0.99934809 0.49323818;
+	-6.27320091 -0.00040420 0.00024763 7.27279671 0.99876528 0.99934817 0.49323822;
+	-6.27320104 -0.00040415 0.00024759 7.27279689 0.99876544 0.99934826 0.49323828;
+	-6.27320117 -0.00040410 0.00024756 7.27279707 0.99876560 0.99934834 0.49323852;
+	-6.27320129 -0.00040405 0.00024753 7.27279725 0.99876576 0.99934843 0.49323826;
+	-6.27320142 -0.00040399 0.00024750 7.27279743 0.99876592 0.99934851 0.49323833;
+	-6.27320154 -0.00040394 0.00024746 7.27279760 0.99876608 0.99934860 0.49323832;
+	-6.27320167 -0.00040389 0.00024743 7.27279778 0.99876624 0.99934868 0.49323839;
+	-6.27320180 -0.00040383 0.00024740 7.27279796 0.99876640 0.99934877 0.49323831;
+	-6.27320192 -0.00040378 0.00024737 7.27279814 0.99876656 0.99934885 0.49323847;
+	-6.27320205 -0.00040373 0.00024733 7.27279832 0.99876673 0.99934894 0.49323846;
+	-6.27320217 -0.00040368 0.00024730 7.27279850 0.99876689 0.99934902 0.49323853;
+	-6.27320230 -0.00040362 0.00024727 7.27279868 0.99876705 0.99934911 0.49323849;
+	-6.27320243 -0.00040357 0.00024724 7.27279886 0.99876721 0.99934919 0.49323847;
+	-6.27320255 -0.00040352 0.00024721 7.27279903 0.99876737 0.99934928 0.49323843;
+	-6.27320268 -0.00040347 0.00024717 7.27279921 0.99876753 0.99934936 0.49323854;
+	-6.27320280 -0.00040341 0.00024714 7.27279939 0.99876769 0.99934944 0.49323862;
+	-6.27320293 -0.00040336 0.00024711 7.27279957 0.99876785 0.99934953 0.49323861;
+	-6.27320306 -0.00040331 0.00024708 7.27279975 0.99876801 0.99934961 0.49323862;
+	-6.27320318 -0.00040326 0.00024704 7.27279993 0.99876817 0.99934970 0.49323859;
+	-6.27320331 -0.00040320 0.00024701 7.27280010 0.99876833 0.99934978 0.49323864;
+	-6.27320343 -0.00040315 0.00024698 7.27280028 0.99876849 0.99934987 0.49323872;
+	-6.27320356 -0.00040310 0.00024695 7.27280046 0.99876865 0.99934995 0.49323853;
+	-6.27320368 -0.00040305 0.00024692 7.27280064 0.99876881 0.99935004 0.49323874;
+	-6.27320381 -0.00040299 0.00024688 7.27280082 0.99876897 0.99935012 0.49323866;
+	-6.27320394 -0.00040294 0.00024685 7.27280099 0.99876913 0.99935021 0.49323878;
+	-6.27320406 -0.00040289 0.00024682 7.27280117 0.99876929 0.99935029 0.49323872;
+	-6.27320419 -0.00040284 0.00024679 7.27280135 0.99876945 0.99935038 0.49323872;
+	-6.27320431 -0.00040278 0.00024676 7.27280153 0.99876961 0.99935046 0.49323876;
+	-6.27320444 -0.00040273 0.00024672 7.27280171 0.99876978 0.99935055 0.49323884;
+	-6.27320456 -0.00040268 0.00024669 7.27280188 0.99876994 0.99935063 0.49323875;
+	-6.27320469 -0.00040263 0.00024666 7.27280206 0.99877010 0.99935071 0.49323881;
+	-6.27320481 -0.00040257 0.00024663 7.27280224 0.99877026 0.99935080 0.49323883;
+	-6.27320494 -0.00040252 0.00024659 7.27280242 0.99877042 0.99935088 0.49323893;
+	-6.27320506 -0.00040247 0.00024656 7.27280259 0.99877058 0.99935097 0.49323897;
+	-6.27320519 -0.00040242 0.00024653 7.27280277 0.99877073 0.99935105 0.49323888;
+	-6.27320532 -0.00040237 0.00024650 7.27280295 0.99877089 0.99935114 0.49323894;
+	-6.27320544 -0.00040231 0.00024647 7.27280313 0.99877105 0.99935122 0.49323891;
+	-6.27320557 -0.00040226 0.00024643 7.27280330 0.99877121 0.99935130 0.49323883;
+	-6.27320569 -0.00040221 0.00024640 7.27280348 0.99877137 0.99935139 0.49323900;
+	-6.27320582 -0.00040216 0.00024637 7.27280366 0.99877153 0.99935147 0.49323894;
+	-6.27320594 -0.00040210 0.00024634 7.27280384 0.99877169 0.99935156 0.49323913;
+	-6.27320607 -0.00040205 0.00024631 7.27280401 0.99877185 0.99935164 0.49323892;
+	-6.27320619 -0.00040200 0.00024627 7.27280419 0.99877201 0.99935173 0.49323905;
+	-6.27320632 -0.00040195 0.00024624 7.27280437 0.99877217 0.99935181 0.49323908;
+	-6.27320644 -0.00040190 0.00024621 7.27280455 0.99877233 0.99935189 0.49323912;
+	-6.27320657 -0.00040184 0.00024618 7.27280472 0.99877249 0.99935198 0.49323907;
+	-6.27320669 -0.00040179 0.00024615 7.27280490 0.99877265 0.99935206 0.49323901;
+	-6.27320682 -0.00040174 0.00024611 7.27280508 0.99877281 0.99935215 0.49323923;
+	-6.27320694 -0.00040169 0.00024608 7.27280525 0.99877297 0.99935223 0.49323914;
+	-6.27320706 -0.00040163 0.00024605 7.27280543 0.99877313 0.99935231 0.49323921;
+	-6.27320719 -0.00040158 0.00024602 7.27280561 0.99877329 0.99935240 0.49323926;
+	-6.27320731 -0.00040153 0.00024599 7.27280578 0.99877345 0.99935248 0.49323926;
+	-6.27320744 -0.00040148 0.00024595 7.27280596 0.99877361 0.99935257 0.49323918;
+	-6.27320756 -0.00040143 0.00024592 7.27280614 0.99877376 0.99935265 0.49323936;
+	-6.27320769 -0.00040137 0.00024589 7.27280631 0.99877392 0.99935273 0.49323929;
+	-6.27320781 -0.00040132 0.00024586 7.27280649 0.99877408 0.99935282 0.49323934;
+	-6.27320794 -0.00040127 0.00024583 7.27280667 0.99877424 0.99935290 0.49323932;
+	-6.27320806 -0.00040122 0.00024580 7.27280684 0.99877440 0.99935299 0.49323931;
+	-6.27320819 -0.00040117 0.00024576 7.27280702 0.99877456 0.99935307 0.49323926;
+	-6.27320831 -0.00040111 0.00024573 7.27280720 0.99877472 0.99935315 0.49323938;
+	-6.27320843 -0.00040106 0.00024570 7.27280737 0.99877488 0.99935324 0.49323939;
+	-6.27320856 -0.00040101 0.00024567 7.27280755 0.99877504 0.99935332 0.49323934;
+	-6.27320868 -0.00040096 0.00024564 7.27280773 0.99877519 0.99935341 0.49323939;
+	-6.27320881 -0.00040091 0.00024560 7.27280790 0.99877535 0.99935349 0.49323943;
+	-6.27320893 -0.00040085 0.00024557 7.27280808 0.99877551 0.99935357 0.49323942;
+	-6.27320906 -0.00040080 0.00024554 7.27280825 0.99877567 0.99935366 0.49323947;
+	-6.27320918 -0.00040075 0.00024551 7.27280843 0.99877583 0.99935374 0.49323951;
+	-6.27320930 -0.00040070 0.00024548 7.27280861 0.99877599 0.99935382 0.49323953;
+	-6.27320943 -0.00040065 0.00024545 7.27280878 0.99877615 0.99935391 0.49323955;
+	-6.27320955 -0.00040059 0.00024541 7.27280896 0.99877630 0.99935399 0.49323962;
+	-6.27320968 -0.00040054 0.00024538 7.27280913 0.99877646 0.99935408 0.49323956;
+	-6.27320980 -0.00040049 0.00024535 7.27280931 0.99877662 0.99935416 0.49323962;
+	-6.27320993 -0.00040044 0.00024532 7.27280949 0.99877678 0.99935424 0.49323958;
+	-6.27321005 -0.00040039 0.00024529 7.27280966 0.99877694 0.99935433 0.49323965;
+	-6.27321017 -0.00040034 0.00024525 7.27280984 0.99877710 0.99935441 0.49323969;
+	-6.27321030 -0.00040028 0.00024522 7.27281001 0.99877725 0.99935449 0.49323976;
+	-6.27321042 -0.00040023 0.00024519 7.27281019 0.99877741 0.99935458 0.49323970;
+	-6.27321054 -0.00040018 0.00024516 7.27281036 0.99877757 0.99935466 0.49323974;
+	-6.27321067 -0.00040013 0.00024513 7.27281054 0.99877773 0.99935474 0.49323974;
+	-6.27321079 -0.00040008 0.00024510 7.27281072 0.99877789 0.99935483 0.49323966;
+	-6.27321092 -0.00040003 0.00024506 7.27281089 0.99877804 0.99935491 0.49323980;
+	-6.27321104 -0.00039997 0.00024503 7.27281107 0.99877820 0.99935499 0.49323982;
+	-6.27321116 -0.00039992 0.00024500 7.27281124 0.99877836 0.99935508 0.49323984;
+	-6.27321129 -0.00039987 0.00024497 7.27281142 0.99877852 0.99935516 0.49323979;
+	-6.27321141 -0.00039982 0.00024494 7.27281159 0.99877868 0.99935524 0.49323984;
+	-6.27321153 -0.00039977 0.00024491 7.27281177 0.99877883 0.99935533 0.49323987;
+	-6.27321166 -0.00039972 0.00024487 7.27281194 0.99877899 0.99935541 0.49323994;
+	-6.27321178 -0.00039966 0.00024484 7.27281212 0.99877915 0.99935549 0.49323989;
+	-6.27321191 -0.00039961 0.00024481 7.27281229 0.99877931 0.99935558 0.49323986;
+	-6.27321203 -0.00039956 0.00024478 7.27281247 0.99877946 0.99935566 0.49323995;
+	-6.27321215 -0.00039951 0.00024475 7.27281264 0.99877962 0.99935574 0.49323997;
+	-6.27321228 -0.00039946 0.00024472 7.27281282 0.99877978 0.99935583 0.49323996;
+	-6.27321240 -0.00039941 0.00024468 7.27281299 0.99877994 0.99935591 0.49323998;
+	-6.27321252 -0.00039935 0.00024465 7.27281317 0.99878009 0.99935599 0.49323996;
+	-6.27321265 -0.00039930 0.00024462 7.27281334 0.99878025 0.99935608 0.49324002;
+	-6.27321277 -0.00039925 0.00024459 7.27281352 0.99878041 0.99935616 0.49323998;
+	-6.27321289 -0.00039920 0.00024456 7.27281369 0.99878057 0.99935624 0.49324001;
+	-6.27321302 -0.00039915 0.00024453 7.27281387 0.99878072 0.99935632 0.49324014;
+	-6.27321314 -0.00039910 0.00024450 7.27281404 0.99878088 0.99935641 0.49324019;
+	-6.27321326 -0.00039905 0.00024446 7.27281422 0.99878104 0.99935649 0.49324012;
+	-6.27321338 -0.00039899 0.00024443 7.27281439 0.99878120 0.99935657 0.49324003;
+	-6.27321351 -0.00039894 0.00024440 7.27281457 0.99878135 0.99935666 0.49324013;
+	-6.27321363 -0.00039889 0.00024437 7.27281474 0.99878151 0.99935674 0.49324013;
+	-6.27321375 -0.00039884 0.00024434 7.27281491 0.99878167 0.99935682 0.49324017;
+	-6.27321388 -0.00039879 0.00024431 7.27281509 0.99878182 0.99935690 0.49324022;
+	-6.27321400 -0.00039874 0.00024427 7.27281526 0.99878198 0.99935699 0.49324015;
+	-6.27321412 -0.00039869 0.00024424 7.27281544 0.99878214 0.99935707 0.49324036;
+	-6.27321425 -0.00039863 0.00024421 7.27281561 0.99878229 0.99935715 0.49324026;
+	-6.27321437 -0.00039858 0.00024418 7.27281579 0.99878245 0.99935724 0.49324022;
+	-6.27321449 -0.00039853 0.00024415 7.27281596 0.99878261 0.99935732 0.49324031;
+	-6.27321461 -0.00039848 0.00024412 7.27281613 0.99878277 0.99935740 0.49324028;
+	-6.27321474 -0.00039843 0.00024409 7.27281631 0.99878292 0.99935748 0.49324030;
+	-6.27321486 -0.00039838 0.00024405 7.27281648 0.99878308 0.99935757 0.49324023;
+	-6.27321498 -0.00039833 0.00024402 7.27281666 0.99878324 0.99935765 0.49324037;
+	-6.27321511 -0.00039828 0.00024399 7.27281683 0.99878339 0.99935773 0.49324036;
+	-6.27321523 -0.00039822 0.00024396 7.27281700 0.99878355 0.99935782 0.49324044;
+	-6.27321535 -0.00039817 0.00024393 7.27281718 0.99878370 0.99935790 0.49324039;
+	-6.27321547 -0.00039812 0.00024390 7.27281735 0.99878386 0.99935798 0.49324042;
+	-6.27321560 -0.00039807 0.00024387 7.27281752 0.99878402 0.99935806 0.49324055;
+	-6.27321572 -0.00039802 0.00024383 7.27281770 0.99878417 0.99935815 0.49324042;
+	-6.27321584 -0.00039797 0.00024380 7.27281787 0.99878433 0.99935823 0.49324044;
+	-6.27321596 -0.00039792 0.00024377 7.27281805 0.99878449 0.99935831 0.49324041;
+	-6.27321609 -0.00039787 0.00024374 7.27281822 0.99878464 0.99935839 0.49324060;
+	-6.27321621 -0.00039781 0.00024371 7.27281839 0.99878480 0.99935848 0.49324044;
+	-6.27321633 -0.00039776 0.00024368 7.27281857 0.99878496 0.99935856 0.49324054;
+	-6.27321645 -0.00039771 0.00024365 7.27281874 0.99878511 0.99935864 0.49324046;
+	-6.27321658 -0.00039766 0.00024362 7.27281891 0.99878527 0.99935872 0.49324052;
+	-6.27321670 -0.00039761 0.00024358 7.27281909 0.99878542 0.99935881 0.49324063;
+	-6.27321682 -0.00039756 0.00024355 7.27281926 0.99878558 0.99935889 0.49324081;
+	-6.27321694 -0.00039751 0.00024352 7.27281943 0.99878574 0.99935897 0.49324067;
+	-6.27321706 -0.00039746 0.00024349 7.27281961 0.99878589 0.99935905 0.49324080;
+	-6.27321719 -0.00039741 0.00024346 7.27281978 0.99878605 0.99935913 0.49324070;
+	-6.27321731 -0.00039736 0.00024343 7.27281995 0.99878620 0.99935922 0.49324061;
+	-6.27321743 -0.00039730 0.00024340 7.27282013 0.99878636 0.99935930 0.49324072;
+	-6.27321755 -0.00039725 0.00024337 7.27282030 0.99878652 0.99935938 0.49324071;
+	-6.27321767 -0.00039720 0.00024333 7.27282047 0.99878667 0.99935946 0.49324076;
+	-6.27321780 -0.00039715 0.00024330 7.27282064 0.99878683 0.99935955 0.49324084;
+	-6.27321792 -0.00039710 0.00024327 7.27282082 0.99878698 0.99935963 0.49324086;
+	-6.27321804 -0.00039705 0.00024324 7.27282099 0.99878714 0.99935971 0.49324068;
+	-6.27321816 -0.00039700 0.00024321 7.27282116 0.99878729 0.99935979 0.49324078;
+	-6.27321828 -0.00039695 0.00024318 7.27282134 0.99878745 0.99935987 0.49324088;
+	-6.27321841 -0.00039690 0.00024315 7.27282151 0.99878760 0.99935996 0.49324077;
+	-6.27321853 -0.00039685 0.00024312 7.27282168 0.99878776 0.99936004 0.49324091;
+	-6.27321865 -0.00039680 0.00024308 7.27282185 0.99878792 0.99936012 0.49324089;
+	-6.27321877 -0.00039674 0.00024305 7.27282203 0.99878807 0.99936020 0.49324098;
+	-6.27321889 -0.00039669 0.00024302 7.27282220 0.99878823 0.99936028 0.49324089;
+	-6.27321901 -0.00039664 0.00024299 7.27282237 0.99878838 0.99936037 0.49324096;
+	-6.27321914 -0.00039659 0.00024296 7.27282254 0.99878854 0.99936045 0.49324110;
+	-6.27321926 -0.00039654 0.00024293 7.27282272 0.99878869 0.99936053 0.49324104;
+	-6.27321938 -0.00039649 0.00024290 7.27282289 0.99878885 0.99936061 0.49324115;
+	-6.27321950 -0.00039644 0.00024287 7.27282306 0.99878900 0.99936069 0.49324105;
+	-6.27321962 -0.00039639 0.00024284 7.27282323 0.99878916 0.99936078 0.49324108;
+	-6.27321974 -0.00039634 0.00024280 7.27282341 0.99878931 0.99936086 0.49324101;
+	-6.27321987 -0.00039629 0.00024277 7.27282358 0.99878947 0.99936094 0.49324102;
+	-6.27321999 -0.00039624 0.00024274 7.27282375 0.99878962 0.99936102 0.49324113;
+	-6.27322011 -0.00039619 0.00024271 7.27282392 0.99878978 0.99936110 0.49324108;
+	-6.27322023 -0.00039613 0.00024268 7.27282409 0.99878993 0.99936119 0.49324117;
+	-6.27322035 -0.00039608 0.00024265 7.27282427 0.99879009 0.99936127 0.49324125;
+	-6.27322047 -0.00039603 0.00024262 7.27282444 0.99879024 0.99936135 0.49324106;
+	-6.27322059 -0.00039598 0.00024259 7.27282461 0.99879040 0.99936143 0.49324119;
+	-6.27322071 -0.00039593 0.00024256 7.27282478 0.99879055 0.99936151 0.49324110;
+	-6.27322084 -0.00039588 0.00024252 7.27282495 0.99879071 0.99936159 0.49324126;
+	-6.27322096 -0.00039583 0.00024249 7.27282513 0.99879086 0.99936168 0.49324122;
+	-6.27322108 -0.00039578 0.00024246 7.27282530 0.99879102 0.99936176 0.49324129;
+	-6.27322120 -0.00039573 0.00024243 7.27282547 0.99879117 0.99936184 0.49324129;
+	-6.27322132 -0.00039568 0.00024240 7.27282564 0.99879133 0.99936192 0.49324124;
+	-6.27322144 -0.00039563 0.00024237 7.27282581 0.99879148 0.99936200 0.49324135;
+	-6.27322156 -0.00039558 0.00024234 7.27282598 0.99879163 0.99936208 0.49324138;
+	-6.27322168 -0.00039553 0.00024231 7.27282616 0.99879179 0.99936216 0.49324133;
+	-6.27322180 -0.00039548 0.00024228 7.27282633 0.99879194 0.99936225 0.49324140;
+	-6.27322193 -0.00039543 0.00024225 7.27282650 0.99879210 0.99936233 0.49324130;
+	-6.27322205 -0.00039538 0.00024221 7.27282667 0.99879225 0.99936241 0.49324149;
+	-6.27322217 -0.00039533 0.00024218 7.27282684 0.99879241 0.99936249 0.49324143;
+	-6.27322229 -0.00039528 0.00024215 7.27282701 0.99879256 0.99936257 0.49324140;
+	-6.27322241 -0.00039522 0.00024212 7.27282718 0.99879271 0.99936265 0.49324158;
+	-6.27322253 -0.00039517 0.00024209 7.27282736 0.99879287 0.99936273 0.49324147;
+	-6.27322265 -0.00039512 0.00024206 7.27282753 0.99879302 0.99936282 0.49324156;
+	-6.27322277 -0.00039507 0.00024203 7.27282770 0.99879318 0.99936290 0.49324153;
+	-6.27322289 -0.00039502 0.00024200 7.27282787 0.99879333 0.99936298 0.49324143;
+	-6.27322301 -0.00039497 0.00024197 7.27282804 0.99879349 0.99936306 0.49324134;
+	-6.27322313 -0.00039492 0.00024194 7.27282821 0.99879364 0.99936314 0.49324161;
+	-6.27322325 -0.00039487 0.00024191 7.27282838 0.99879379 0.99936322 0.49324161;
+	-6.27322337 -0.00039482 0.00024187 7.27282855 0.99879395 0.99936330 0.49324164;
+	-6.27322349 -0.00039477 0.00024184 7.27282872 0.99879410 0.99936339 0.49324176;
+	-6.27322362 -0.00039472 0.00024181 7.27282889 0.99879425 0.99936347 0.49324160;
+	-6.27322374 -0.00039467 0.00024178 7.27282907 0.99879441 0.99936355 0.49324157;
+	-6.27322386 -0.00039462 0.00024175 7.27282924 0.99879456 0.99936363 0.49324158;
+	-6.27322398 -0.00039457 0.00024172 7.27282941 0.99879472 0.99936371 0.49324166;
+	-6.27322410 -0.00039452 0.00024169 7.27282958 0.99879487 0.99936379 0.49324172;
+	-6.27322422 -0.00039447 0.00024166 7.27282975 0.99879502 0.99936387 0.49324177;
+	-6.27322434 -0.00039442 0.00024163 7.27282992 0.99879518 0.99936395 0.49324175;
+	-6.27322446 -0.00039437 0.00024160 7.27283009 0.99879533 0.99936403 0.49324173;
+	-6.27322458 -0.00039432 0.00024157 7.27283026 0.99879548 0.99936412 0.49324183;
+	-6.27322470 -0.00039427 0.00024154 7.27283043 0.99879564 0.99936420 0.49324189;
+	-6.27322482 -0.00039422 0.00024150 7.27283060 0.99879579 0.99936428 0.49324183;
+	-6.27322494 -0.00039417 0.00024147 7.27283077 0.99879594 0.99936436 0.49324176;
+	-6.27322506 -0.00039412 0.00024144 7.27283094 0.99879610 0.99936444 0.49324183;
+	-6.27322518 -0.00039407 0.00024141 7.27283111 0.99879625 0.99936452 0.49324186;
+	-6.27322530 -0.00039402 0.00024138 7.27283128 0.99879640 0.99936460 0.49324198;
+	-6.27322542 -0.00039397 0.00024135 7.27283145 0.99879656 0.99936468 0.49324210;
+	-6.27322554 -0.00039392 0.00024132 7.27283162 0.99879671 0.99936476 0.49324198;
+	-6.27322566 -0.00039387 0.00024129 7.27283179 0.99879686 0.99936484 0.49324205;
+	-6.27322578 -0.00039382 0.00024126 7.27283196 0.99879702 0.99936492 0.49324207;
+	-6.27322590 -0.00039377 0.00024123 7.27283213 0.99879717 0.99936501 0.49324191;
+	-6.27322602 -0.00039372 0.00024120 7.27283230 0.99879732 0.99936509 0.49324201;
+	-6.27322614 -0.00039367 0.00024117 7.27283247 0.99879748 0.99936517 0.49324194;
+	-6.27322626 -0.00039362 0.00024114 7.27283264 0.99879763 0.99936525 0.49324211;
+	-6.27322638 -0.00039357 0.00024111 7.27283281 0.99879778 0.99936533 0.49324210;
+	-6.27322650 -0.00039352 0.00024107 7.27283298 0.99879793 0.99936541 0.49324195;
+	-6.27322662 -0.00039347 0.00024104 7.27283315 0.99879809 0.99936549 0.49324205;
+	-6.27322674 -0.00039342 0.00024101 7.27283332 0.99879824 0.99936557 0.49324210;
+	-6.27322686 -0.00039337 0.00024098 7.27283349 0.99879839 0.99936565 0.49324214;
+	-6.27322698 -0.00039332 0.00024095 7.27283366 0.99879855 0.99936573 0.49324202;
+	-6.27322710 -0.00039327 0.00024092 7.27283383 0.99879870 0.99936581 0.49324209;
+	-6.27322722 -0.00039322 0.00024089 7.27283400 0.99879885 0.99936589 0.49324208;
+	-6.27322734 -0.00039317 0.00024086 7.27283417 0.99879900 0.99936597 0.49324207;
+	-6.27322746 -0.00039312 0.00024083 7.27283434 0.99879916 0.99936605 0.49324215;
+	-6.27322757 -0.00039307 0.00024080 7.27283451 0.99879931 0.99936613 0.49324220;
+	-6.27322769 -0.00039302 0.00024077 7.27283468 0.99879946 0.99936621 0.49324229;
+	-6.27322781 -0.00039297 0.00024074 7.27283485 0.99879961 0.99936630 0.49324226;
+	-6.27322793 -0.00039292 0.00024071 7.27283502 0.99879977 0.99936638 0.49324230;
+	-6.27322805 -0.00039287 0.00024068 7.27283519 0.99879992 0.99936646 0.49324236;
+	-6.27322817 -0.00039282 0.00024065 7.27283535 0.99880007 0.99936654 0.49324229;
+	-6.27322829 -0.00039277 0.00024062 7.27283552 0.99880022 0.99936662 0.49324245;
+	-6.27322841 -0.00039272 0.00024059 7.27283569 0.99880038 0.99936670 0.49324230;
+	-6.27322853 -0.00039267 0.00024055 7.27283586 0.99880053 0.99936678 0.49324241;
+	-6.27322865 -0.00039262 0.00024052 7.27283603 0.99880068 0.99936686 0.49324234;
+	-6.27322877 -0.00039257 0.00024049 7.27283620 0.99880083 0.99936694 0.49324231;
+	-6.27322889 -0.00039252 0.00024046 7.27283637 0.99880098 0.99936702 0.49324244;
+	-6.27322901 -0.00039247 0.00024043 7.27283654 0.99880114 0.99936710 0.49324243;
+	-6.27322913 -0.00039242 0.00024040 7.27283671 0.99880129 0.99936718 0.49324251;
+	-6.27322924 -0.00039237 0.00024037 7.27283688 0.99880144 0.99936726 0.49324242;
+	-6.27322936 -0.00039232 0.00024034 7.27283704 0.99880159 0.99936734 0.49324245;
+	-6.27322948 -0.00039227 0.00024031 7.27283721 0.99880174 0.99936742 0.49324248;
+	-6.27322960 -0.00039222 0.00024028 7.27283738 0.99880190 0.99936750 0.49324240;
+	-6.27322972 -0.00039217 0.00024025 7.27283755 0.99880205 0.99936758 0.49324256;
+	-6.27322984 -0.00039212 0.00024022 7.27283772 0.99880220 0.99936766 0.49324270;
+	-6.27322996 -0.00039207 0.00024019 7.27283789 0.99880235 0.99936774 0.49324265;
+	-6.27323008 -0.00039202 0.00024016 7.27283806 0.99880250 0.99936782 0.49324254;
+	-6.27323020 -0.00039197 0.00024013 7.27283822 0.99880265 0.99936790 0.49324268;
+	-6.27323032 -0.00039192 0.00024010 7.27283839 0.99880281 0.99936798 0.49324263;
+	-6.27323043 -0.00039187 0.00024007 7.27283856 0.99880296 0.99936806 0.49324257;
+	-6.27323055 -0.00039182 0.00024004 7.27283873 0.99880311 0.99936814 0.49324271;
+	-6.27323067 -0.00039177 0.00024001 7.27283890 0.99880326 0.99936822 0.49324263;
+	-6.27323079 -0.00039172 0.00023998 7.27283907 0.99880341 0.99936830 0.49324259;
+	-6.27323091 -0.00039167 0.00023995 7.27283923 0.99880356 0.99936838 0.49324272;
+	-6.27323103 -0.00039162 0.00023992 7.27283940 0.99880372 0.99936846 0.49324266;
+	-6.27323115 -0.00039158 0.00023989 7.27283957 0.99880387 0.99936854 0.49324277;
+	-6.27323126 -0.00039153 0.00023985 7.27283974 0.99880402 0.99936862 0.49324283;
+	-6.27323138 -0.00039148 0.00023982 7.27283991 0.99880417 0.99936870 0.49324288;
+	-6.27323150 -0.00039143 0.00023979 7.27284008 0.99880432 0.99936878 0.49324274;
+	-6.27323162 -0.00039138 0.00023976 7.27284024 0.99880447 0.99936886 0.49324289;
+	-6.27323174 -0.00039133 0.00023973 7.27284041 0.99880462 0.99936894 0.49324287;
+	-6.27323186 -0.00039128 0.00023970 7.27284058 0.99880477 0.99936902 0.49324285;
+	-6.27323198 -0.00039123 0.00023967 7.27284075 0.99880493 0.99936910 0.49324283;
+	-6.27323209 -0.00039118 0.00023964 7.27284091 0.99880508 0.99936918 0.49324290;
+	-6.27323221 -0.00039113 0.00023961 7.27284108 0.99880523 0.99936926 0.49324280;
+	-6.27323233 -0.00039108 0.00023958 7.27284125 0.99880538 0.99936934 0.49324296;
+	-6.27323245 -0.00039103 0.00023955 7.27284142 0.99880553 0.99936942 0.49324284;
+	-6.27323257 -0.00039098 0.00023952 7.27284159 0.99880568 0.99936950 0.49324285;
+	-6.27323268 -0.00039093 0.00023949 7.27284175 0.99880583 0.99936958 0.49324302;
+	-6.27323280 -0.00039088 0.00023946 7.27284192 0.99880598 0.99936966 0.49324295;
+	-6.27323292 -0.00039083 0.00023943 7.27284209 0.99880613 0.99936974 0.49324320;
+	-6.27323304 -0.00039078 0.00023940 7.27284226 0.99880628 0.99936982 0.49324315;
+	-6.27323316 -0.00039073 0.00023937 7.27284242 0.99880643 0.99936990 0.49324296;
+	-6.27323328 -0.00039069 0.00023934 7.27284259 0.99880658 0.99936997 0.49324298;
+	-6.27323339 -0.00039064 0.00023931 7.27284276 0.99880674 0.99937005 0.49324310;
+	-6.27323351 -0.00039059 0.00023928 7.27284292 0.99880689 0.99937013 0.49324316;
+	-6.27323363 -0.00039054 0.00023925 7.27284309 0.99880704 0.99937021 0.49324305;
+	-6.27323375 -0.00039049 0.00023922 7.27284326 0.99880719 0.99937029 0.49324317;
+	-6.27323387 -0.00039044 0.00023919 7.27284343 0.99880734 0.99937037 0.49324316;
+	-6.27323398 -0.00039039 0.00023916 7.27284359 0.99880749 0.99937045 0.49324322;
+	-6.27323410 -0.00039034 0.00023913 7.27284376 0.99880764 0.99937053 0.49324310;
+	-6.27323422 -0.00039029 0.00023910 7.27284393 0.99880779 0.99937061 0.49324325;
+	-6.27323434 -0.00039024 0.00023907 7.27284409 0.99880794 0.99937069 0.49324319;
+	-6.27323445 -0.00039019 0.00023904 7.27284426 0.99880809 0.99937077 0.49324326;
+	-6.27323457 -0.00039014 0.00023901 7.27284443 0.99880824 0.99937085 0.49324329;
+	-6.27323469 -0.00039009 0.00023898 7.27284460 0.99880839 0.99937093 0.49324333;
+	-6.27323481 -0.00039005 0.00023895 7.27284476 0.99880854 0.99937101 0.49324318;
+	-6.27323493 -0.00039000 0.00023892 7.27284493 0.99880869 0.99937109 0.49324318;
+	-6.27323504 -0.00038995 0.00023889 7.27284510 0.99880884 0.99937117 0.49324337;
+	-6.27323516 -0.00038990 0.00023886 7.27284526 0.99880899 0.99937124 0.49324337;
+	-6.27323528 -0.00038985 0.00023883 7.27284543 0.99880914 0.99937132 0.49324350;
+	-6.27323540 -0.00038980 0.00023880 7.27284560 0.99880929 0.99937140 0.49324334;
+	-6.27323551 -0.00038975 0.00023877 7.27284576 0.99880944 0.99937148 0.49324341;
+	-6.27323563 -0.00038970 0.00023874 7.27284593 0.99880959 0.99937156 0.49324338;
+	-6.27323575 -0.00038965 0.00023871 7.27284609 0.99880974 0.99937164 0.49324344;
+	-6.27323587 -0.00038960 0.00023868 7.27284626 0.99880989 0.99937172 0.49324362;
+	-6.27323598 -0.00038955 0.00023865 7.27284643 0.99881004 0.99937180 0.49324347;
+	-6.27323610 -0.00038951 0.00023862 7.27284659 0.99881019 0.99937188 0.49324345;
+	-6.27323622 -0.00038946 0.00023859 7.27284676 0.99881034 0.99937196 0.49324353;
+	-6.27323633 -0.00038941 0.00023856 7.27284693 0.99881049 0.99937204 0.49324361;
+	-6.27323645 -0.00038936 0.00023853 7.27284709 0.99881064 0.99937211 0.49324364;
+	-6.27323657 -0.00038931 0.00023850 7.27284726 0.99881079 0.99937219 0.49324360;
+	-6.27323669 -0.00038926 0.00023847 7.27284743 0.99881094 0.99937227 0.49324354;
+	-6.27323680 -0.00038921 0.00023844 7.27284759 0.99881109 0.99937235 0.49324359;
+	-6.27323692 -0.00038916 0.00023841 7.27284776 0.99881124 0.99937243 0.49324355;
+	-6.27323704 -0.00038911 0.00023838 7.27284792 0.99881139 0.99937251 0.49324369;
+	-6.27323715 -0.00038907 0.00023835 7.27284809 0.99881154 0.99937259 0.49324366;
+	-6.27323727 -0.00038902 0.00023832 7.27284826 0.99881169 0.99937267 0.49324363;
+	-6.27323739 -0.00038897 0.00023829 7.27284842 0.99881184 0.99937275 0.49324368;
+	-6.27323751 -0.00038892 0.00023826 7.27284859 0.99881198 0.99937282 0.49324385;
+	-6.27323762 -0.00038887 0.00023823 7.27284875 0.99881213 0.99937290 0.49324375;
+	-6.27323774 -0.00038882 0.00023820 7.27284892 0.99881228 0.99937298 0.49324381;
+	-6.27323786 -0.00038877 0.00023817 7.27284908 0.99881243 0.99937306 0.49324383;
+	-6.27323797 -0.00038872 0.00023814 7.27284925 0.99881258 0.99937314 0.49324389;
+	-6.27323809 -0.00038867 0.00023811 7.27284942 0.99881273 0.99937322 0.49324387;
+	-6.27323821 -0.00038863 0.00023808 7.27284958 0.99881288 0.99937330 0.49324385;
+	-6.27323832 -0.00038858 0.00023805 7.27284975 0.99881303 0.99937338 0.49324378;
+	-6.27323844 -0.00038853 0.00023802 7.27284991 0.99881318 0.99937345 0.49324377;
+	-6.27323856 -0.00038848 0.00023799 7.27285008 0.99881333 0.99937353 0.49324388;
+	-6.27323867 -0.00038843 0.00023796 7.27285024 0.99881348 0.99937361 0.49324392;
+	-6.27323879 -0.00038838 0.00023793 7.27285041 0.99881362 0.99937369 0.49324396;
+	-6.27323891 -0.00038833 0.00023790 7.27285057 0.99881377 0.99937377 0.49324387;
+	-6.27323902 -0.00038828 0.00023787 7.27285074 0.99881392 0.99937385 0.49324395;
+	-6.27323914 -0.00038824 0.00023784 7.27285090 0.99881407 0.99937393 0.49324401;
+	-6.27323926 -0.00038819 0.00023781 7.27285107 0.99881422 0.99937400 0.49324397;
+	-6.27323937 -0.00038814 0.00023778 7.27285124 0.99881437 0.99937408 0.49324409;
+	-6.27323949 -0.00038809 0.00023775 7.27285140 0.99881452 0.99937416 0.49324390;
+	-6.27323961 -0.00038804 0.00023772 7.27285157 0.99881467 0.99937424 0.49324412;
+	-6.27323972 -0.00038799 0.00023769 7.27285173 0.99881481 0.99937432 0.49324405;
+	-6.27323984 -0.00038794 0.00023766 7.27285190 0.99881496 0.99937440 0.49324413;
+	-6.27323996 -0.00038789 0.00023763 7.27285206 0.99881511 0.99937448 0.49324398;
+	-6.27324007 -0.00038785 0.00023760 7.27285223 0.99881526 0.99937455 0.49324408;
+	-6.27324019 -0.00038780 0.00023757 7.27285239 0.99881541 0.99937463 0.49324411;
+	-6.27324030 -0.00038775 0.00023754 7.27285256 0.99881556 0.99937471 0.49324404;
+	-6.27324042 -0.00038770 0.00023751 7.27285272 0.99881571 0.99937479 0.49324417;
+	-6.27324054 -0.00038765 0.00023748 7.27285289 0.99881585 0.99937487 0.49324417;
+	-6.27324065 -0.00038760 0.00023745 7.27285305 0.99881600 0.99937495 0.49324417;
+	-6.27324077 -0.00038755 0.00023742 7.27285321 0.99881615 0.99937502 0.49324410;
+	-6.27324089 -0.00038751 0.00023739 7.27285338 0.99881630 0.99937510 0.49324415;
+	-6.27324100 -0.00038746 0.00023736 7.27285354 0.99881645 0.99937518 0.49324415;
+	-6.27324112 -0.00038741 0.00023733 7.27285371 0.99881660 0.99937526 0.49324428;
+	-6.27324123 -0.00038736 0.00023730 7.27285387 0.99881674 0.99937534 0.49324427;
+	-6.27324135 -0.00038731 0.00023727 7.27285404 0.99881689 0.99937541 0.49324429;
+	-6.27324147 -0.00038726 0.00023724 7.27285420 0.99881704 0.99937549 0.49324429;
+	-6.27324158 -0.00038722 0.00023721 7.27285437 0.99881719 0.99937557 0.49324431;
+	-6.27324170 -0.00038717 0.00023718 7.27285453 0.99881734 0.99937565 0.49324418;
+	-6.27324181 -0.00038712 0.00023715 7.27285469 0.99881748 0.99937573 0.49324436;
+	-6.27324193 -0.00038707 0.00023712 7.27285486 0.99881763 0.99937581 0.49324427;
+	-6.27324205 -0.00038702 0.00023709 7.27285502 0.99881778 0.99937588 0.49324438;
+	-6.27324216 -0.00038697 0.00023706 7.27285519 0.99881793 0.99937596 0.49324441;
+	-6.27324228 -0.00038693 0.00023704 7.27285535 0.99881807 0.99937604 0.49324425;
+	-6.27324239 -0.00038688 0.00023701 7.27285552 0.99881822 0.99937612 0.49324444;
+	-6.27324251 -0.00038683 0.00023698 7.27285568 0.99881837 0.99937620 0.49324437;
+	-6.27324262 -0.00038678 0.00023695 7.27285584 0.99881852 0.99937627 0.49324451;
+	-6.27324274 -0.00038673 0.00023692 7.27285601 0.99881867 0.99937635 0.49324443;
+	-6.27324286 -0.00038668 0.00023689 7.27285617 0.99881881 0.99937643 0.49324463;
+	-6.27324297 -0.00038664 0.00023686 7.27285634 0.99881896 0.99937651 0.49324464;
+	-6.27324309 -0.00038659 0.00023683 7.27285650 0.99881911 0.99937659 0.49324460;
+	-6.27324320 -0.00038654 0.00023680 7.27285666 0.99881926 0.99937666 0.49324474;
+	-6.27324332 -0.00038649 0.00023677 7.27285683 0.99881940 0.99937674 0.49324457;
+	-6.27324343 -0.00038644 0.00023674 7.27285699 0.99881955 0.99937682 0.49324464;
+	-6.27324355 -0.00038639 0.00023671 7.27285716 0.99881970 0.99937690 0.49324452;
+	-6.27324366 -0.00038635 0.00023668 7.27285732 0.99881985 0.99937697 0.49324451;
+	-6.27324378 -0.00038630 0.00023665 7.27285748 0.99881999 0.99937705 0.49324463;
+	-6.27324390 -0.00038625 0.00023662 7.27285765 0.99882014 0.99937713 0.49324460;
+	-6.27324401 -0.00038620 0.00023659 7.27285781 0.99882029 0.99937721 0.49324461;
+	-6.27324413 -0.00038615 0.00023656 7.27285797 0.99882043 0.99937729 0.49324473;
+	-6.27324424 -0.00038610 0.00023653 7.27285814 0.99882058 0.99937736 0.49324474;
+	-6.27324436 -0.00038606 0.00023650 7.27285830 0.99882073 0.99937744 0.49324465;
+	-6.27324447 -0.00038601 0.00023647 7.27285846 0.99882088 0.99937752 0.49324475;
+	-6.27324459 -0.00038596 0.00023644 7.27285863 0.99882102 0.99937760 0.49324482;
+	-6.27324470 -0.00038591 0.00023641 7.27285879 0.99882117 0.99937767 0.49324468;
+	-6.27324482 -0.00038586 0.00023638 7.27285895 0.99882132 0.99937775 0.49324472;
+	-6.27324493 -0.00038582 0.00023636 7.27285912 0.99882146 0.99937783 0.49324478;
+	-6.27324505 -0.00038577 0.00023633 7.27285928 0.99882161 0.99937791 0.49324486;
+	-6.27324516 -0.00038572 0.00023630 7.27285944 0.99882176 0.99937798 0.49324500;
+	-6.27324528 -0.00038567 0.00023627 7.27285961 0.99882190 0.99937806 0.49324482;
+	-6.27324539 -0.00038562 0.00023624 7.27285977 0.99882205 0.99937814 0.49324496;
+	-6.27324551 -0.00038558 0.00023621 7.27285993 0.99882220 0.99937822 0.49324495;
+	-6.27324562 -0.00038553 0.00023618 7.27286009 0.99882234 0.99937829 0.49324492;
+	-6.27324574 -0.00038548 0.00023615 7.27286026 0.99882249 0.99937837 0.49324476;
+	-6.27324585 -0.00038543 0.00023612 7.27286042 0.99882264 0.99937845 0.49324499;
+	-6.27324597 -0.00038538 0.00023609 7.27286058 0.99882278 0.99937853 0.49324495;
+	-6.27324608 -0.00038534 0.00023606 7.27286075 0.99882293 0.99937860 0.49324497;
+	-6.27324620 -0.00038529 0.00023603 7.27286091 0.99882308 0.99937868 0.49324499;
+	-6.27324631 -0.00038524 0.00023600 7.27286107 0.99882322 0.99937876 0.49324496;
+	-6.27324643 -0.00038519 0.00023597 7.27286123 0.99882337 0.99937884 0.49324507;
+	-6.27324654 -0.00038514 0.00023594 7.27286140 0.99882352 0.99937891 0.49324506;
+	-6.27324666 -0.00038510 0.00023591 7.27286156 0.99882366 0.99937899 0.49324519;
+	-6.27324677 -0.00038505 0.00023588 7.27286172 0.99882381 0.99937907 0.49324510;
+	-6.27324689 -0.00038500 0.00023586 7.27286188 0.99882396 0.99937914 0.49324509;
+	-6.27324700 -0.00038495 0.00023583 7.27286205 0.99882410 0.99937922 0.49324510;
+	-6.27324711 -0.00038490 0.00023580 7.27286221 0.99882425 0.99937930 0.49324517;
+	-6.27324723 -0.00038486 0.00023577 7.27286237 0.99882440 0.99937938 0.49324527;
+	-6.27324734 -0.00038481 0.00023574 7.27286253 0.99882454 0.99937945 0.49324519;
+	-6.27324746 -0.00038476 0.00023571 7.27286270 0.99882469 0.99937953 0.49324516;
+	-6.27324757 -0.00038471 0.00023568 7.27286286 0.99882483 0.99937961 0.49324513;
+	-6.27324769 -0.00038467 0.00023565 7.27286302 0.99882498 0.99937968 0.49324519;
+	-6.27324780 -0.00038462 0.00023562 7.27286318 0.99882513 0.99937976 0.49324509;
+	-6.27324792 -0.00038457 0.00023559 7.27286335 0.99882527 0.99937984 0.49324532;
+	-6.27324803 -0.00038452 0.00023556 7.27286351 0.99882542 0.99937992 0.49324518;
+	-6.27324814 -0.00038447 0.00023553 7.27286367 0.99882556 0.99937999 0.49324537;
+	-6.27324826 -0.00038443 0.00023550 7.27286383 0.99882571 0.99938007 0.49324536;
+	-6.27324837 -0.00038438 0.00023547 7.27286399 0.99882586 0.99938015 0.49324540;
+	-6.27324849 -0.00038433 0.00023545 7.27286416 0.99882600 0.99938022 0.49324531;
+	-6.27324860 -0.00038428 0.00023542 7.27286432 0.99882615 0.99938030 0.49324544;
+	-6.27324872 -0.00038424 0.00023539 7.27286448 0.99882629 0.99938038 0.49324534;
+	-6.27324883 -0.00038419 0.00023536 7.27286464 0.99882644 0.99938045 0.49324551;
+	-6.27324894 -0.00038414 0.00023533 7.27286480 0.99882658 0.99938053 0.49324541;
+	-6.27324906 -0.00038409 0.00023530 7.27286497 0.99882673 0.99938061 0.49324551;
+	-6.27324917 -0.00038405 0.00023527 7.27286513 0.99882688 0.99938068 0.49324541;
+	-6.27324929 -0.00038400 0.00023524 7.27286529 0.99882702 0.99938076 0.49324543;
+	-6.27324940 -0.00038395 0.00023521 7.27286545 0.99882717 0.99938084 0.49324548;
+	-6.27324951 -0.00038390 0.00023518 7.27286561 0.99882731 0.99938092 0.49324547;
+	-6.27324963 -0.00038385 0.00023515 7.27286577 0.99882746 0.99938099 0.49324552;
+	-6.27324974 -0.00038381 0.00023512 7.27286594 0.99882760 0.99938107 0.49324561;
+	-6.27324986 -0.00038376 0.00023509 7.27286610 0.99882775 0.99938115 0.49324575;
+	-6.27324997 -0.00038371 0.00023507 7.27286626 0.99882789 0.99938122 0.49324555;
+	-6.27325008 -0.00038366 0.00023504 7.27286642 0.99882804 0.99938130 0.49324561;
+	-6.27325020 -0.00038362 0.00023501 7.27286658 0.99882818 0.99938138 0.49324560;
+	-6.27325031 -0.00038357 0.00023498 7.27286674 0.99882833 0.99938145 0.49324567;
+	-6.27325043 -0.00038352 0.00023495 7.27286690 0.99882847 0.99938153 0.49324557;
+	-6.27325054 -0.00038347 0.00023492 7.27286706 0.99882862 0.99938161 0.49324572;
+	-6.27325065 -0.00038343 0.00023489 7.27286723 0.99882877 0.99938168 0.49324570;
+	-6.27325077 -0.00038338 0.00023486 7.27286739 0.99882891 0.99938176 0.49324576;
+	-6.27325088 -0.00038333 0.00023483 7.27286755 0.99882906 0.99938184 0.49324591;
+	-6.27325099 -0.00038328 0.00023480 7.27286771 0.99882920 0.99938191 0.49324569;
+	-6.27325111 -0.00038324 0.00023477 7.27286787 0.99882935 0.99938199 0.49324559;
+	-6.27325122 -0.00038319 0.00023475 7.27286803 0.99882949 0.99938207 0.49324564;
+	-6.27325133 -0.00038314 0.00023472 7.27286819 0.99882964 0.99938214 0.49324576;
+	-6.27325145 -0.00038309 0.00023469 7.27286835 0.99882978 0.99938222 0.49324581;
+	-6.27325156 -0.00038305 0.00023466 7.27286851 0.99882993 0.99938229 0.49324590;
+	-6.27325168 -0.00038300 0.00023463 7.27286868 0.99883007 0.99938237 0.49324573;
+	-6.27325179 -0.00038295 0.00023460 7.27286884 0.99883021 0.99938245 0.49324578;
+	-6.27325190 -0.00038291 0.00023457 7.27286900 0.99883036 0.99938252 0.49324585;
+	-6.27325202 -0.00038286 0.00023454 7.27286916 0.99883050 0.99938260 0.49324579;
+	-6.27325213 -0.00038281 0.00023451 7.27286932 0.99883065 0.99938268 0.49324589;
+	-6.27325224 -0.00038276 0.00023448 7.27286948 0.99883079 0.99938275 0.49324588;
+	-6.27325236 -0.00038272 0.00023446 7.27286964 0.99883094 0.99938283 0.49324586;
+	-6.27325247 -0.00038267 0.00023443 7.27286980 0.99883108 0.99938291 0.49324588;
+	-6.27325258 -0.00038262 0.00023440 7.27286996 0.99883123 0.99938298 0.49324600;
+	-6.27325269 -0.00038257 0.00023437 7.27287012 0.99883137 0.99938306 0.49324602;
+	-6.27325281 -0.00038253 0.00023434 7.27287028 0.99883152 0.99938313 0.49324593;
+	-6.27325292 -0.00038248 0.00023431 7.27287044 0.99883166 0.99938321 0.49324600;
+	-6.27325303 -0.00038243 0.00023428 7.27287060 0.99883180 0.99938329 0.49324594;
+	-6.27325315 -0.00038238 0.00023425 7.27287076 0.99883195 0.99938336 0.49324594;
+	-6.27325326 -0.00038234 0.00023422 7.27287092 0.99883209 0.99938344 0.49324616;
+	-6.27325337 -0.00038229 0.00023419 7.27287108 0.99883224 0.99938352 0.49324609;
+	-6.27325349 -0.00038224 0.00023417 7.27287124 0.99883238 0.99938359 0.49324615;
+	-6.27325360 -0.00038220 0.00023414 7.27287140 0.99883253 0.99938367 0.49324616;
+	-6.27325371 -0.00038215 0.00023411 7.27287156 0.99883267 0.99938374 0.49324616;
+	-6.27325383 -0.00038210 0.00023408 7.27287172 0.99883281 0.99938382 0.49324603;
+	-6.27325394 -0.00038205 0.00023405 7.27287188 0.99883296 0.99938390 0.49324614;
+	-6.27325405 -0.00038201 0.00023402 7.27287204 0.99883310 0.99938397 0.49324629;
+	-6.27325416 -0.00038196 0.00023399 7.27287220 0.99883325 0.99938405 0.49324628;
+	-6.27325428 -0.00038191 0.00023396 7.27287236 0.99883339 0.99938412 0.49324634;
+	-6.27325439 -0.00038187 0.00023393 7.27287252 0.99883353 0.99938420 0.49324618;
+	-6.27325450 -0.00038182 0.00023391 7.27287268 0.99883368 0.99938428 0.49324620;
+	-6.27325462 -0.00038177 0.00023388 7.27287284 0.99883382 0.99938435 0.49324621;
+	-6.27325473 -0.00038172 0.00023385 7.27287300 0.99883397 0.99938443 0.49324620;
+	-6.27325484 -0.00038168 0.00023382 7.27287316 0.99883411 0.99938450 0.49324631;
+	-6.27325495 -0.00038163 0.00023379 7.27287332 0.99883425 0.99938458 0.49324616;
+	-6.27325507 -0.00038158 0.00023376 7.27287348 0.99883440 0.99938466 0.49324629;
+	-6.27325518 -0.00038154 0.00023373 7.27287364 0.99883454 0.99938473 0.49324635;
+	-6.27325529 -0.00038149 0.00023370 7.27287380 0.99883469 0.99938481 0.49324648;
+	-6.27325540 -0.00038144 0.00023367 7.27287396 0.99883483 0.99938488 0.49324638;
+	-6.27325552 -0.00038140 0.00023365 7.27287412 0.99883497 0.99938496 0.49324637;
+	-6.27325563 -0.00038135 0.00023362 7.27287428 0.99883512 0.99938503 0.49324641;
+	-6.27325574 -0.00038130 0.00023359 7.27287444 0.99883526 0.99938511 0.49324645;
+	-6.27325585 -0.00038125 0.00023356 7.27287460 0.99883540 0.99938519 0.49324647;
+	-6.27325597 -0.00038121 0.00023353 7.27287476 0.99883555 0.99938526 0.49324642;
+	-6.27325608 -0.00038116 0.00023350 7.27287492 0.99883569 0.99938534 0.49324651;
+	-6.27325619 -0.00038111 0.00023347 7.27287508 0.99883583 0.99938541 0.49324649;
+	-6.27325630 -0.00038107 0.00023344 7.27287524 0.99883598 0.99938549 0.49324647;
+	-6.27325642 -0.00038102 0.00023342 7.27287540 0.99883612 0.99938556 0.49324658;
+	-6.27325653 -0.00038097 0.00023339 7.27287555 0.99883626 0.99938564 0.49324664;
+	-6.27325664 -0.00038093 0.00023336 7.27287571 0.99883641 0.99938572 0.49324649;
+	-6.27325675 -0.00038088 0.00023333 7.27287587 0.99883655 0.99938579 0.49324658;
+	-6.27325686 -0.00038083 0.00023330 7.27287603 0.99883669 0.99938587 0.49324653;
+	-6.27325698 -0.00038079 0.00023327 7.27287619 0.99883684 0.99938594 0.49324658;
+	-6.27325709 -0.00038074 0.00023324 7.27287635 0.99883698 0.99938602 0.49324649;
+	-6.27325720 -0.00038069 0.00023321 7.27287651 0.99883712 0.99938609 0.49324663;
+	-6.27325731 -0.00038065 0.00023319 7.27287667 0.99883727 0.99938617 0.49324670;
+	-6.27325742 -0.00038060 0.00023316 7.27287683 0.99883741 0.99938624 0.49324665;
+	-6.27325754 -0.00038055 0.00023313 7.27287699 0.99883755 0.99938632 0.49324681;
+	-6.27325765 -0.00038050 0.00023310 7.27287714 0.99883769 0.99938640 0.49324678;
+	-6.27325776 -0.00038046 0.00023307 7.27287730 0.99883784 0.99938647 0.49324668;
+	-6.27325787 -0.00038041 0.00023304 7.27287746 0.99883798 0.99938655 0.49324676;
+	-6.27325798 -0.00038036 0.00023301 7.27287762 0.99883812 0.99938662 0.49324679;
+	-6.27325810 -0.00038032 0.00023299 7.27287778 0.99883827 0.99938670 0.49324680;
+	-6.27325821 -0.00038027 0.00023296 7.27287794 0.99883841 0.99938677 0.49324686;
+	-6.27325832 -0.00038022 0.00023293 7.27287810 0.99883855 0.99938685 0.49324703;
+	-6.27325843 -0.00038018 0.00023290 7.27287825 0.99883869 0.99938692 0.49324683;
+	-6.27325854 -0.00038013 0.00023287 7.27287841 0.99883884 0.99938700 0.49324688;
+	-6.27325866 -0.00038008 0.00023284 7.27287857 0.99883898 0.99938707 0.49324687;
+	-6.27325877 -0.00038004 0.00023281 7.27287873 0.99883912 0.99938715 0.49324692;
+	-6.27325888 -0.00037999 0.00023279 7.27287889 0.99883926 0.99938722 0.49324678;
+	-6.27325899 -0.00037994 0.00023276 7.27287905 0.99883941 0.99938730 0.49324693;
+	-6.27325910 -0.00037990 0.00023273 7.27287920 0.99883955 0.99938737 0.49324693;
+	-6.27325921 -0.00037985 0.00023270 7.27287936 0.99883969 0.99938745 0.49324695;
+	-6.27325932 -0.00037980 0.00023267 7.27287952 0.99883983 0.99938752 0.49324704;
+	-6.27325944 -0.00037976 0.00023264 7.27287968 0.99883998 0.99938760 0.49324699;
+	-6.27325955 -0.00037971 0.00023261 7.27287984 0.99884012 0.99938768 0.49324702;
+	-6.27325966 -0.00037966 0.00023259 7.27287999 0.99884026 0.99938775 0.49324694;
+	-6.27325977 -0.00037962 0.00023256 7.27288015 0.99884040 0.99938783 0.49324708;
+	-6.27325988 -0.00037957 0.00023253 7.27288031 0.99884055 0.99938790 0.49324716;
+	-6.27325999 -0.00037953 0.00023250 7.27288047 0.99884069 0.99938798 0.49324712;
+	-6.27326011 -0.00037948 0.00023247 7.27288063 0.99884083 0.99938805 0.49324715;
+	-6.27326022 -0.00037943 0.00023244 7.27288078 0.99884097 0.99938813 0.49324707;
+	-6.27326033 -0.00037939 0.00023241 7.27288094 0.99884111 0.99938820 0.49324704;
+	-6.27326044 -0.00037934 0.00023239 7.27288110 0.99884126 0.99938828 0.49324718;
+	-6.27326055 -0.00037929 0.00023236 7.27288126 0.99884140 0.99938835 0.49324714;
+	-6.27326066 -0.00037925 0.00023233 7.27288142 0.99884154 0.99938843 0.49324726;
+	-6.27326077 -0.00037920 0.00023230 7.27288157 0.99884168 0.99938850 0.49324702;
+	-6.27326088 -0.00037915 0.00023227 7.27288173 0.99884182 0.99938858 0.49324721;
+	-6.27326100 -0.00037911 0.00023224 7.27288189 0.99884197 0.99938865 0.49324723;
+	-6.27326111 -0.00037906 0.00023221 7.27288205 0.99884211 0.99938873 0.49324718;
+	-6.27326122 -0.00037901 0.00023219 7.27288220 0.99884225 0.99938880 0.49324712;
+	-6.27326133 -0.00037897 0.00023216 7.27288236 0.99884239 0.99938887 0.49324742;
+	-6.27326144 -0.00037892 0.00023213 7.27288252 0.99884253 0.99938895 0.49324731;
+	-6.27326155 -0.00037887 0.00023210 7.27288268 0.99884267 0.99938902 0.49324731;
+	-6.27326166 -0.00037883 0.00023207 7.27288283 0.99884282 0.99938910 0.49324735;
+	-6.27326177 -0.00037878 0.00023204 7.27288299 0.99884296 0.99938917 0.49324724;
+	-6.27326188 -0.00037874 0.00023202 7.27288315 0.99884310 0.99938925 0.49324733;
+	-6.27326199 -0.00037869 0.00023199 7.27288331 0.99884324 0.99938932 0.49324726;
+	-6.27326211 -0.00037864 0.00023196 7.27288346 0.99884338 0.99938940 0.49324734;
+	-6.27326222 -0.00037860 0.00023193 7.27288362 0.99884352 0.99938947 0.49324737;
+	-6.27326233 -0.00037855 0.00023190 7.27288378 0.99884367 0.99938955 0.49324746;
+	-6.27326244 -0.00037850 0.00023187 7.27288393 0.99884381 0.99938962 0.49324742;
+	-6.27326255 -0.00037846 0.00023185 7.27288409 0.99884395 0.99938970 0.49324750;
+	-6.27326266 -0.00037841 0.00023182 7.27288425 0.99884409 0.99938977 0.49324754;
+	-6.27326277 -0.00037837 0.00023179 7.27288441 0.99884423 0.99938985 0.49324741;
+	-6.27326288 -0.00037832 0.00023176 7.27288456 0.99884437 0.99938992 0.49324760;
+	-6.27326299 -0.00037827 0.00023173 7.27288472 0.99884451 0.99939000 0.49324751;
+	-6.27326310 -0.00037823 0.00023170 7.27288488 0.99884466 0.99939007 0.49324747;
+	-6.27326321 -0.00037818 0.00023168 7.27288503 0.99884480 0.99939014 0.49324756;
+	-6.27326332 -0.00037813 0.00023165 7.27288519 0.99884494 0.99939022 0.49324744;
+	-6.27326343 -0.00037809 0.00023162 7.27288535 0.99884508 0.99939029 0.49324765;
+	-6.27326354 -0.00037804 0.00023159 7.27288550 0.99884522 0.99939037 0.49324755;
+	-6.27326366 -0.00037800 0.00023156 7.27288566 0.99884536 0.99939044 0.49324760;
+	-6.27326377 -0.00037795 0.00023153 7.27288582 0.99884550 0.99939052 0.49324764;
+	-6.27326388 -0.00037790 0.00023151 7.27288597 0.99884564 0.99939059 0.49324764;
+	-6.27326399 -0.00037786 0.00023148 7.27288613 0.99884578 0.99939067 0.49324768;
+	-6.27326410 -0.00037781 0.00023145 7.27288629 0.99884592 0.99939074 0.49324772;
+	-6.27326421 -0.00037777 0.00023142 7.27288644 0.99884607 0.99939081 0.49324775;
+	-6.27326432 -0.00037772 0.00023139 7.27288660 0.99884621 0.99939089 0.49324763;
+	-6.27326443 -0.00037767 0.00023136 7.27288676 0.99884635 0.99939096 0.49324773;
+	-6.27326454 -0.00037763 0.00023134 7.27288691 0.99884649 0.99939104 0.49324770;
+	-6.27326465 -0.00037758 0.00023131 7.27288707 0.99884663 0.99939111 0.49324772;
+	-6.27326476 -0.00037753 0.00023128 7.27288722 0.99884677 0.99939119 0.49324778;
+	-6.27326487 -0.00037749 0.00023125 7.27288738 0.99884691 0.99939126 0.49324783;
+	-6.27326498 -0.00037744 0.00023122 7.27288754 0.99884705 0.99939133 0.49324780;
+	-6.27326509 -0.00037740 0.00023120 7.27288769 0.99884719 0.99939141 0.49324776;
+	-6.27326520 -0.00037735 0.00023117 7.27288785 0.99884733 0.99939148 0.49324786;
+	-6.27326531 -0.00037730 0.00023114 7.27288801 0.99884747 0.99939156 0.49324788;
+	-6.27326542 -0.00037726 0.00023111 7.27288816 0.99884761 0.99939163 0.49324776;
+	-6.27326553 -0.00037721 0.00023108 7.27288832 0.99884775 0.99939171 0.49324788;
+	-6.27326564 -0.00037717 0.00023105 7.27288847 0.99884789 0.99939178 0.49324801;
+	-6.27326575 -0.00037712 0.00023103 7.27288863 0.99884803 0.99939185 0.49324790;
+	-6.27326586 -0.00037707 0.00023100 7.27288879 0.99884817 0.99939193 0.49324783;
+	-6.27326597 -0.00037703 0.00023097 7.27288894 0.99884831 0.99939200 0.49324795;
+	-6.27326608 -0.00037698 0.00023094 7.27288910 0.99884846 0.99939208 0.49324808;
+	-6.27326619 -0.00037694 0.00023091 7.27288925 0.99884860 0.99939215 0.49324796;
+	-6.27326630 -0.00037689 0.00023089 7.27288941 0.99884874 0.99939222 0.49324802;
+	-6.27326641 -0.00037685 0.00023086 7.27288956 0.99884888 0.99939230 0.49324786;
+	-6.27326652 -0.00037680 0.00023083 7.27288972 0.99884902 0.99939237 0.49324795;
+	-6.27326663 -0.00037675 0.00023080 7.27288988 0.99884916 0.99939245 0.49324822;
+	-6.27326674 -0.00037671 0.00023077 7.27289003 0.99884930 0.99939252 0.49324803;
+	-6.27326685 -0.00037666 0.00023074 7.27289019 0.99884944 0.99939259 0.49324799;
+	-6.27326696 -0.00037662 0.00023072 7.27289034 0.99884958 0.99939267 0.49324798;
+	-6.27326707 -0.00037657 0.00023069 7.27289050 0.99884972 0.99939274 0.49324802;
+	-6.27326718 -0.00037652 0.00023066 7.27289065 0.99884986 0.99939282 0.49324803;
+	-6.27326729 -0.00037648 0.00023063 7.27289081 0.99885000 0.99939289 0.49324811;
+	-6.27326740 -0.00037643 0.00023060 7.27289096 0.99885014 0.99939296 0.49324817;
+	-6.27326751 -0.00037639 0.00023058 7.27289112 0.99885028 0.99939304 0.49324821;
+	-6.27326762 -0.00037634 0.00023055 7.27289127 0.99885042 0.99939311 0.49324821;
+	-6.27326773 -0.00037630 0.00023052 7.27289143 0.99885056 0.99939318 0.49324827;
+	-6.27326783 -0.00037625 0.00023049 7.27289159 0.99885070 0.99939326 0.49324820;
+	-6.27326794 -0.00037620 0.00023046 7.27289174 0.99885084 0.99939333 0.49324832;
+	-6.27326805 -0.00037616 0.00023044 7.27289190 0.99885097 0.99939341 0.49324834;
+	-6.27326816 -0.00037611 0.00023041 7.27289205 0.99885111 0.99939348 0.49324841;
+	-6.27326827 -0.00037607 0.00023038 7.27289221 0.99885125 0.99939355 0.49324834;
+	-6.27326838 -0.00037602 0.00023035 7.27289236 0.99885139 0.99939363 0.49324834;
+	-6.27326849 -0.00037598 0.00023032 7.27289252 0.99885153 0.99939370 0.49324836;
+	-6.27326860 -0.00037593 0.00023030 7.27289267 0.99885167 0.99939377 0.49324838;
+	-6.27326871 -0.00037588 0.00023027 7.27289283 0.99885181 0.99939385 0.49324843;
+	-6.27326882 -0.00037584 0.00023024 7.27289298 0.99885195 0.99939392 0.49324818;
+	-6.27326893 -0.00037579 0.00023021 7.27289314 0.99885209 0.99939399 0.49324852;
+	-6.27326904 -0.00037575 0.00023018 7.27289329 0.99885223 0.99939407 0.49324850;
+	-6.27326915 -0.00037570 0.00023016 7.27289345 0.99885237 0.99939414 0.49324851;
+	-6.27326926 -0.00037566 0.00023013 7.27289360 0.99885251 0.99939422 0.49324838;
+	-6.27326937 -0.00037561 0.00023010 7.27289375 0.99885265 0.99939429 0.49324847;
+	-6.27326947 -0.00037557 0.00023007 7.27289391 0.99885279 0.99939436 0.49324849;
+	-6.27326958 -0.00037552 0.00023004 7.27289406 0.99885293 0.99939444 0.49324851;
+	-6.27326969 -0.00037547 0.00023002 7.27289422 0.99885307 0.99939451 0.49324844;
+	-6.27326980 -0.00037543 0.00022999 7.27289437 0.99885321 0.99939458 0.49324862;
+	-6.27326991 -0.00037538 0.00022996 7.27289453 0.99885334 0.99939466 0.49324845;
+	-6.27327002 -0.00037534 0.00022993 7.27289468 0.99885348 0.99939473 0.49324866;
+	-6.27327013 -0.00037529 0.00022991 7.27289484 0.99885362 0.99939480 0.49324850;
+	-6.27327024 -0.00037525 0.00022988 7.27289499 0.99885376 0.99939488 0.49324874;
+	-6.27327035 -0.00037520 0.00022985 7.27289514 0.99885390 0.99939495 0.49324863;
+	-6.27327045 -0.00037516 0.00022982 7.27289530 0.99885404 0.99939502 0.49324861;
+	-6.27327056 -0.00037511 0.00022979 7.27289545 0.99885418 0.99939510 0.49324863;
+	-6.27327067 -0.00037506 0.00022977 7.27289561 0.99885432 0.99939517 0.49324878;
+	-6.27327078 -0.00037502 0.00022974 7.27289576 0.99885446 0.99939524 0.49324852;
+	-6.27327089 -0.00037497 0.00022971 7.27289592 0.99885459 0.99939532 0.49324868;
+	-6.27327100 -0.00037493 0.00022968 7.27289607 0.99885473 0.99939539 0.49324870;
+	-6.27327111 -0.00037488 0.00022965 7.27289622 0.99885487 0.99939546 0.49324867;
+	-6.27327122 -0.00037484 0.00022963 7.27289638 0.99885501 0.99939554 0.49324861;
+	-6.27327132 -0.00037479 0.00022960 7.27289653 0.99885515 0.99939561 0.49324879;
+	-6.27327143 -0.00037475 0.00022957 7.27289669 0.99885529 0.99939568 0.49324878;
+	-6.27327154 -0.00037470 0.00022954 7.27289684 0.99885543 0.99939576 0.49324873;
+	-6.27327165 -0.00037466 0.00022952 7.27289699 0.99885557 0.99939583 0.49324877;
+	-6.27327176 -0.00037461 0.00022949 7.27289715 0.99885570 0.99939590 0.49324893;
+	-6.27327187 -0.00037457 0.00022946 7.27289730 0.99885584 0.99939597 0.49324876;
+	-6.27327198 -0.00037452 0.00022943 7.27289746 0.99885598 0.99939605 0.49324876;
+	-6.27327208 -0.00037447 0.00022940 7.27289761 0.99885612 0.99939612 0.49324883;
+	-6.27327219 -0.00037443 0.00022938 7.27289776 0.99885626 0.99939619 0.49324897;
+	-6.27327230 -0.00037438 0.00022935 7.27289792 0.99885640 0.99939627 0.49324903;
+	-6.27327241 -0.00037434 0.00022932 7.27289807 0.99885653 0.99939634 0.49324897;
+	-6.27327252 -0.00037429 0.00022929 7.27289822 0.99885667 0.99939641 0.49324915;
+	-6.27327263 -0.00037425 0.00022927 7.27289838 0.99885681 0.99939649 0.49324899;
+	-6.27327273 -0.00037420 0.00022924 7.27289853 0.99885695 0.99939656 0.49324895;
+	-6.27327284 -0.00037416 0.00022921 7.27289869 0.99885709 0.99939663 0.49324901;
+	-6.27327295 -0.00037411 0.00022918 7.27289884 0.99885723 0.99939671 0.49324899;
+	-6.27327306 -0.00037407 0.00022915 7.27289899 0.99885736 0.99939678 0.49324910;
+	-6.27327317 -0.00037402 0.00022913 7.27289915 0.99885750 0.99939685 0.49324893;
+	-6.27327328 -0.00037398 0.00022910 7.27289930 0.99885764 0.99939692 0.49324897;
+	-6.27327338 -0.00037393 0.00022907 7.27289945 0.99885778 0.99939700 0.49324903;
+	-6.27327349 -0.00037389 0.00022904 7.27289961 0.99885792 0.99939707 0.49324907;
+	-6.27327360 -0.00037384 0.00022902 7.27289976 0.99885805 0.99939714 0.49324912;
+	-6.27327371 -0.00037380 0.00022899 7.27289991 0.99885819 0.99939722 0.49324911;
+	-6.27327382 -0.00037375 0.00022896 7.27290007 0.99885833 0.99939729 0.49324918;
+	-6.27327392 -0.00037371 0.00022893 7.27290022 0.99885847 0.99939736 0.49324911;
+	-6.27327403 -0.00037366 0.00022891 7.27290037 0.99885861 0.99939743 0.49324922;
+	-6.27327414 -0.00037362 0.00022888 7.27290052 0.99885874 0.99939751 0.49324912;
+	-6.27327425 -0.00037357 0.00022885 7.27290068 0.99885888 0.99939758 0.49324914;
+	-6.27327436 -0.00037353 0.00022882 7.27290083 0.99885902 0.99939765 0.49324919;
+	-6.27327446 -0.00037348 0.00022880 7.27290098 0.99885916 0.99939772 0.49324915;
+	-6.27327457 -0.00037344 0.00022877 7.27290114 0.99885929 0.99939780 0.49324920;
+	-6.27327468 -0.00037339 0.00022874 7.27290129 0.99885943 0.99939787 0.49324914;
+	-6.27327479 -0.00037335 0.00022871 7.27290144 0.99885957 0.99939794 0.49324927;
+	-6.27327490 -0.00037330 0.00022868 7.27290160 0.99885971 0.99939801 0.49324924;
+	-6.27327500 -0.00037326 0.00022866 7.27290175 0.99885984 0.99939809 0.49324926;
+	-6.27327511 -0.00037321 0.00022863 7.27290190 0.99885998 0.99939816 0.49324920;
+	-6.27327522 -0.00037317 0.00022860 7.27290205 0.99886012 0.99939823 0.49324932;
+	-6.27327533 -0.00037312 0.00022857 7.27290221 0.99886026 0.99939831 0.49324939;
+	-6.27327543 -0.00037308 0.00022855 7.27290236 0.99886039 0.99939838 0.49324946;
+	-6.27327554 -0.00037303 0.00022852 7.27290251 0.99886053 0.99939845 0.49324935;
+	-6.27327565 -0.00037299 0.00022849 7.27290266 0.99886067 0.99939852 0.49324930;
+	-6.27327576 -0.00037294 0.00022846 7.27290282 0.99886081 0.99939860 0.49324950;
+	-6.27327586 -0.00037290 0.00022844 7.27290297 0.99886094 0.99939867 0.49324938;
+	-6.27327597 -0.00037285 0.00022841 7.27290312 0.99886108 0.99939874 0.49324942;
+	-6.27327608 -0.00037281 0.00022838 7.27290327 0.99886122 0.99939881 0.49324944;
+	-6.27327619 -0.00037276 0.00022835 7.27290343 0.99886136 0.99939888 0.49324942;
+	-6.27327629 -0.00037272 0.00022833 7.27290358 0.99886149 0.99939896 0.49324940;
+	-6.27327640 -0.00037267 0.00022830 7.27290373 0.99886163 0.99939903 0.49324954;
+	-6.27327651 -0.00037263 0.00022827 7.27290388 0.99886177 0.99939910 0.49324936;
+	-6.27327662 -0.00037258 0.00022824 7.27290404 0.99886190 0.99939917 0.49324945;
+	-6.27327672 -0.00037254 0.00022822 7.27290419 0.99886204 0.99939925 0.49324953;
+	-6.27327683 -0.00037249 0.00022819 7.27290434 0.99886218 0.99939932 0.49324957;
+	-6.27327694 -0.00037245 0.00022816 7.27290449 0.99886231 0.99939939 0.49324952;
+	-6.27327705 -0.00037240 0.00022813 7.27290464 0.99886245 0.99939946 0.49324959;
+	-6.27327715 -0.00037236 0.00022811 7.27290480 0.99886259 0.99939954 0.49324957;
+	-6.27327726 -0.00037231 0.00022808 7.27290495 0.99886273 0.99939961 0.49324964;
+	-6.27327737 -0.00037227 0.00022805 7.27290510 0.99886286 0.99939968 0.49324963;
+	-6.27327747 -0.00037222 0.00022802 7.27290525 0.99886300 0.99939975 0.49324974;
+	-6.27327758 -0.00037218 0.00022800 7.27290540 0.99886314 0.99939982 0.49324966;
+	-6.27327769 -0.00037213 0.00022797 7.27290556 0.99886327 0.99939990 0.49324952;
+	-6.27327780 -0.00037209 0.00022794 7.27290571 0.99886341 0.99939997 0.49324969;
+	-6.27327790 -0.00037204 0.00022791 7.27290586 0.99886355 0.99940004 0.49324970;
+	-6.27327801 -0.00037200 0.00022789 7.27290601 0.99886368 0.99940011 0.49324976;
+	-6.27327812 -0.00037195 0.00022786 7.27290616 0.99886382 0.99940019 0.49324984;
+	-6.27327822 -0.00037191 0.00022783 7.27290631 0.99886396 0.99940026 0.49324963;
+	-6.27327833 -0.00037187 0.00022781 7.27290647 0.99886409 0.99940033 0.49324968;
+	-6.27327844 -0.00037182 0.00022778 7.27290662 0.99886423 0.99940040 0.49324978;
+	-6.27327855 -0.00037178 0.00022775 7.27290677 0.99886436 0.99940047 0.49324985;
+	-6.27327865 -0.00037173 0.00022772 7.27290692 0.99886450 0.99940055 0.49325000;
+	-6.27327876 -0.00037169 0.00022770 7.27290707 0.99886464 0.99940062 0.49324984;
+	-6.27327887 -0.00037164 0.00022767 7.27290722 0.99886477 0.99940069 0.49324982;
+	-6.27327897 -0.00037160 0.00022764 7.27290737 0.99886491 0.99940076 0.49324988;
+	-6.27327908 -0.00037155 0.00022761 7.27290753 0.99886505 0.99940083 0.49325015;
+	-6.27327919 -0.00037151 0.00022759 7.27290768 0.99886518 0.99940091 0.49324977;
+	-6.27327929 -0.00037146 0.00022756 7.27290783 0.99886532 0.99940098 0.49324993;
+	-6.27327940 -0.00037142 0.00022753 7.27290798 0.99886546 0.99940105 0.49325002;
+	-6.27327951 -0.00037137 0.00022750 7.27290813 0.99886559 0.99940112 0.49324999;
+	-6.27327961 -0.00037133 0.00022748 7.27290828 0.99886573 0.99940119 0.49325000;
+	-6.27327972 -0.00037129 0.00022745 7.27290843 0.99886586 0.99940126 0.49325006;
+	-6.27327983 -0.00037124 0.00022742 7.27290858 0.99886600 0.99940134 0.49324994;
+	-6.27327993 -0.00037120 0.00022740 7.27290874 0.99886614 0.99940141 0.49324986;
+	-6.27328004 -0.00037115 0.00022737 7.27290889 0.99886627 0.99940148 0.49325009;
+	-6.27328015 -0.00037111 0.00022734 7.27290904 0.99886641 0.99940155 0.49325012;
+	-6.27328025 -0.00037106 0.00022731 7.27290919 0.99886654 0.99940162 0.49325015;
+	-6.27328036 -0.00037102 0.00022729 7.27290934 0.99886668 0.99940170 0.49325010;
+	-6.27328047 -0.00037097 0.00022726 7.27290949 0.99886682 0.99940177 0.49325020;
+	-6.27328057 -0.00037093 0.00022723 7.27290964 0.99886695 0.99940184 0.49325004;
+	-6.27328068 -0.00037089 0.00022720 7.27290979 0.99886709 0.99940191 0.49325014;
+	-6.27328078 -0.00037084 0.00022718 7.27290994 0.99886722 0.99940198 0.49325025;
+	-6.27328089 -0.00037080 0.00022715 7.27291009 0.99886736 0.99940205 0.49325008;
+	-6.27328100 -0.00037075 0.00022712 7.27291024 0.99886749 0.99940213 0.49325032;
+	-6.27328110 -0.00037071 0.00022710 7.27291040 0.99886763 0.99940220 0.49325016;
+	-6.27328121 -0.00037066 0.00022707 7.27291055 0.99886777 0.99940227 0.49325010;
+	-6.27328132 -0.00037062 0.00022704 7.27291070 0.99886790 0.99940234 0.49325006;
+	-6.27328142 -0.00037057 0.00022701 7.27291085 0.99886804 0.99940241 0.49325022;
+	-6.27328153 -0.00037053 0.00022699 7.27291100 0.99886817 0.99940248 0.49325031;
+	-6.27328163 -0.00037049 0.00022696 7.27291115 0.99886831 0.99940255 0.49325037;
+	-6.27328174 -0.00037044 0.00022693 7.27291130 0.99886844 0.99940263 0.49325027;
+	-6.27328185 -0.00037040 0.00022691 7.27291145 0.99886858 0.99940270 0.49325034;
+	-6.27328195 -0.00037035 0.00022688 7.27291160 0.99886871 0.99940277 0.49325020;
+	-6.27328206 -0.00037031 0.00022685 7.27291175 0.99886885 0.99940284 0.49325035;
+	-6.27328217 -0.00037026 0.00022682 7.27291190 0.99886898 0.99940291 0.49325022;
+	-6.27328227 -0.00037022 0.00022680 7.27291205 0.99886912 0.99940298 0.49325038;
+	-6.27328238 -0.00037018 0.00022677 7.27291220 0.99886926 0.99940305 0.49325045;
+	-6.27328248 -0.00037013 0.00022674 7.27291235 0.99886939 0.99940313 0.49325055;
+	-6.27328259 -0.00037009 0.00022672 7.27291250 0.99886953 0.99940320 0.49325042;
+	-6.27328269 -0.00037004 0.00022669 7.27291265 0.99886966 0.99940327 0.49325036;
+	-6.27328280 -0.00037000 0.00022666 7.27291280 0.99886980 0.99940334 0.49325057;
+	-6.27328291 -0.00036995 0.00022663 7.27291295 0.99886993 0.99940341 0.49325047;
+	-6.27328301 -0.00036991 0.00022661 7.27291310 0.99887007 0.99940348 0.49325050;
+	-6.27328312 -0.00036987 0.00022658 7.27291325 0.99887020 0.99940355 0.49325044;
+	-6.27328322 -0.00036982 0.00022655 7.27291340 0.99887034 0.99940363 0.49325060;
+	-6.27328333 -0.00036978 0.00022653 7.27291355 0.99887047 0.99940370 0.49325046;
+	-6.27328344 -0.00036973 0.00022650 7.27291370 0.99887061 0.99940377 0.49325049;
+	-6.27328354 -0.00036969 0.00022647 7.27291385 0.99887074 0.99940384 0.49325054;
+	-6.27328365 -0.00036965 0.00022644 7.27291400 0.99887088 0.99940391 0.49325051;
+	-6.27328375 -0.00036960 0.00022642 7.27291415 0.99887101 0.99940398 0.49325068;
+	-6.27328386 -0.00036956 0.00022639 7.27291430 0.99887115 0.99940405 0.49325059;
+	-6.27328396 -0.00036951 0.00022636 7.27291445 0.99887128 0.99940412 0.49325082;
+	-6.27328407 -0.00036947 0.00022634 7.27291460 0.99887142 0.99940419 0.49325077;
+	-6.27328418 -0.00036942 0.00022631 7.27291475 0.99887155 0.99940427 0.49325076;
+	-6.27328428 -0.00036938 0.00022628 7.27291490 0.99887168 0.99940434 0.49325073;
+	-6.27328439 -0.00036934 0.00022626 7.27291505 0.99887182 0.99940441 0.49325073;
+	-6.27328449 -0.00036929 0.00022623 7.27291520 0.99887195 0.99940448 0.49325059;
+	-6.27328460 -0.00036925 0.00022620 7.27291535 0.99887209 0.99940455 0.49325071;
+	-6.27328470 -0.00036920 0.00022617 7.27291550 0.99887222 0.99940462 0.49325075;
+	-6.27328481 -0.00036916 0.00022615 7.27291565 0.99887236 0.99940469 0.49325074;
+	-6.27328491 -0.00036912 0.00022612 7.27291580 0.99887249 0.99940476 0.49325076;
+	-6.27328502 -0.00036907 0.00022609 7.27291595 0.99887263 0.99940483 0.49325069;
+	-6.27328512 -0.00036903 0.00022607 7.27291610 0.99887276 0.99940491 0.49325089;
+	-6.27328523 -0.00036898 0.00022604 7.27291624 0.99887290 0.99940498 0.49325087;
+	-6.27328533 -0.00036894 0.00022601 7.27291639 0.99887303 0.99940505 0.49325089;
+	-6.27328544 -0.00036890 0.00022599 7.27291654 0.99887316 0.99940512 0.49325087;
+	-6.27328555 -0.00036885 0.00022596 7.27291669 0.99887330 0.99940519 0.49325085;
+	-6.27328565 -0.00036881 0.00022593 7.27291684 0.99887343 0.99940526 0.49325080;
+	-6.27328576 -0.00036876 0.00022590 7.27291699 0.99887357 0.99940533 0.49325071;
+	-6.27328586 -0.00036872 0.00022588 7.27291714 0.99887370 0.99940540 0.49325095;
+	-6.27328597 -0.00036868 0.00022585 7.27291729 0.99887384 0.99940547 0.49325080;
+	-6.27328607 -0.00036863 0.00022582 7.27291744 0.99887397 0.99940554 0.49325088;
+	-6.27328618 -0.00036859 0.00022580 7.27291759 0.99887410 0.99940561 0.49325100;
+	-6.27328628 -0.00036855 0.00022577 7.27291774 0.99887424 0.99940568 0.49325106;
+	-6.27328639 -0.00036850 0.00022574 7.27291789 0.99887437 0.99940576 0.49325085;
+	-6.27328649 -0.00036846 0.00022572 7.27291803 0.99887451 0.99940583 0.49325087;
+	-6.27328660 -0.00036841 0.00022569 7.27291818 0.99887464 0.99940590 0.49325084;
+	-6.27328670 -0.00036837 0.00022566 7.27291833 0.99887477 0.99940597 0.49325118;
+	-6.27328681 -0.00036833 0.00022564 7.27291848 0.99887491 0.99940604 0.49325112;
+	-6.27328691 -0.00036828 0.00022561 7.27291863 0.99887504 0.99940611 0.49325104;
+	-6.27328702 -0.00036824 0.00022558 7.27291878 0.99887518 0.99940618 0.49325104;
+	-6.27328712 -0.00036819 0.00022556 7.27291893 0.99887531 0.99940625 0.49325116;
+	-6.27328723 -0.00036815 0.00022553 7.27291907 0.99887544 0.99940632 0.49325111;
+	-6.27328733 -0.00036811 0.00022550 7.27291922 0.99887558 0.99940639 0.49325116;
+	-6.27328744 -0.00036806 0.00022547 7.27291937 0.99887571 0.99940646 0.49325108;
+	-6.27328754 -0.00036802 0.00022545 7.27291952 0.99887584 0.99940653 0.49325111;
+	-6.27328764 -0.00036798 0.00022542 7.27291967 0.99887598 0.99940660 0.49325113;
+	-6.27328775 -0.00036793 0.00022539 7.27291982 0.99887611 0.99940667 0.49325130;
+	-6.27328785 -0.00036789 0.00022537 7.27291997 0.99887625 0.99940674 0.49325114;
+	-6.27328796 -0.00036784 0.00022534 7.27292011 0.99887638 0.99940681 0.49325125;
+	-6.27328806 -0.00036780 0.00022531 7.27292026 0.99887651 0.99940689 0.49325120;
+	-6.27328817 -0.00036776 0.00022529 7.27292041 0.99887665 0.99940696 0.49325118;
+	-6.27328827 -0.00036771 0.00022526 7.27292056 0.99887678 0.99940703 0.49325120;
+	-6.27328838 -0.00036767 0.00022523 7.27292071 0.99887691 0.99940710 0.49325135;
+	-6.27328848 -0.00036763 0.00022521 7.27292086 0.99887705 0.99940717 0.49325134;
+	-6.27328859 -0.00036758 0.00022518 7.27292100 0.99887718 0.99940724 0.49325139;
+	-6.27328869 -0.00036754 0.00022515 7.27292115 0.99887731 0.99940731 0.49325135;
+	-6.27328880 -0.00036749 0.00022513 7.27292130 0.99887745 0.99940738 0.49325126;
+	-6.27328890 -0.00036745 0.00022510 7.27292145 0.99887758 0.99940745 0.49325131;
+	-6.27328900 -0.00036741 0.00022507 7.27292160 0.99887771 0.99940752 0.49325136;
+	-6.27328911 -0.00036736 0.00022505 7.27292174 0.99887785 0.99940759 0.49325152;
+	-6.27328921 -0.00036732 0.00022502 7.27292189 0.99887798 0.99940766 0.49325159;
+	-6.27328932 -0.00036728 0.00022499 7.27292204 0.99887811 0.99940773 0.49325140;
+	-6.27328942 -0.00036723 0.00022497 7.27292219 0.99887825 0.99940780 0.49325141;
+	-6.27328953 -0.00036719 0.00022494 7.27292234 0.99887838 0.99940787 0.49325131;
+	-6.27328963 -0.00036715 0.00022491 7.27292248 0.99887851 0.99940794 0.49325145;
+	-6.27328973 -0.00036710 0.00022489 7.27292263 0.99887864 0.99940801 0.49325145;
+	-6.27328984 -0.00036706 0.00022486 7.27292278 0.99887878 0.99940808 0.49325157;
+	-6.27328994 -0.00036702 0.00022483 7.27292293 0.99887891 0.99940815 0.49325149;
+	-6.27329005 -0.00036697 0.00022481 7.27292307 0.99887904 0.99940822 0.49325164;
+	-6.27329015 -0.00036693 0.00022478 7.27292322 0.99887918 0.99940829 0.49325155;
+	-6.27329025 -0.00036689 0.00022475 7.27292337 0.99887931 0.99940836 0.49325164;
+	-6.27329036 -0.00036684 0.00022473 7.27292352 0.99887944 0.99940843 0.49325151;
+	-6.27329046 -0.00036680 0.00022470 7.27292366 0.99887958 0.99940850 0.49325168;
+	-6.27329057 -0.00036675 0.00022467 7.27292381 0.99887971 0.99940857 0.49325138;
+	-6.27329067 -0.00036671 0.00022465 7.27292396 0.99887984 0.99940864 0.49325171;
+	-6.27329078 -0.00036667 0.00022462 7.27292411 0.99887997 0.99940871 0.49325159;
+	-6.27329088 -0.00036662 0.00022459 7.27292425 0.99888011 0.99940878 0.49325160;
+	-6.27329098 -0.00036658 0.00022457 7.27292440 0.99888024 0.99940885 0.49325177;
+	-6.27329109 -0.00036654 0.00022454 7.27292455 0.99888037 0.99940892 0.49325177;
+	-6.27329119 -0.00036649 0.00022451 7.27292470 0.99888050 0.99940899 0.49325164;
+	-6.27329129 -0.00036645 0.00022449 7.27292484 0.99888064 0.99940906 0.49325172;
+	-6.27329140 -0.00036641 0.00022446 7.27292499 0.99888077 0.99940913 0.49325179;
+	-6.27329150 -0.00036636 0.00022443 7.27292514 0.99888090 0.99940920 0.49325181;
+	-6.27329161 -0.00036632 0.00022441 7.27292529 0.99888103 0.99940927 0.49325178;
+	-6.27329171 -0.00036628 0.00022438 7.27292543 0.99888117 0.99940934 0.49325178;
+	-6.27329181 -0.00036623 0.00022435 7.27292558 0.99888130 0.99940941 0.49325183;
+	-6.27329192 -0.00036619 0.00022433 7.27292573 0.99888143 0.99940948 0.49325179;
+	-6.27329202 -0.00036615 0.00022430 7.27292587 0.99888156 0.99940955 0.49325183;
+	-6.27329212 -0.00036610 0.00022427 7.27292602 0.99888170 0.99940962 0.49325178;
+	-6.27329223 -0.00036606 0.00022425 7.27292617 0.99888183 0.99940969 0.49325167;
+	-6.27329233 -0.00036602 0.00022422 7.27292631 0.99888196 0.99940976 0.49325180;
+	-6.27329244 -0.00036597 0.00022419 7.27292646 0.99888209 0.99940983 0.49325201;
+	-6.27329254 -0.00036593 0.00022417 7.27292661 0.99888222 0.99940990 0.49325190;
+	-6.27329264 -0.00036589 0.00022414 7.27292675 0.99888236 0.99940997 0.49325201;
+	-6.27329275 -0.00036584 0.00022412 7.27292690 0.99888249 0.99941004 0.49325203;
+	-6.27329285 -0.00036580 0.00022409 7.27292705 0.99888262 0.99941011 0.49325195;
+	-6.27329295 -0.00036576 0.00022406 7.27292720 0.99888275 0.99941018 0.49325194;
+	-6.27329306 -0.00036571 0.00022404 7.27292734 0.99888289 0.99941025 0.49325187;
+	-6.27329316 -0.00036567 0.00022401 7.27292749 0.99888302 0.99941032 0.49325203;
+	-6.27329326 -0.00036563 0.00022398 7.27292764 0.99888315 0.99941039 0.49325193;
+	-6.27329337 -0.00036559 0.00022396 7.27292778 0.99888328 0.99941046 0.49325192;
+	-6.27329347 -0.00036554 0.00022393 7.27292793 0.99888341 0.99941053 0.49325212;
+	-6.27329357 -0.00036550 0.00022390 7.27292807 0.99888355 0.99941060 0.49325192;
+	-6.27329368 -0.00036546 0.00022388 7.27292822 0.99888368 0.99941067 0.49325204;
+	-6.27329378 -0.00036541 0.00022385 7.27292837 0.99888381 0.99941074 0.49325210;
+	-6.27329388 -0.00036537 0.00022382 7.27292851 0.99888394 0.99941081 0.49325200;
+	-6.27329399 -0.00036533 0.00022380 7.27292866 0.99888407 0.99941088 0.49325216;
+	-6.27329409 -0.00036528 0.00022377 7.27292881 0.99888420 0.99941095 0.49325212;
+	-6.27329419 -0.00036524 0.00022374 7.27292895 0.99888434 0.99941102 0.49325214;
+	-6.27329430 -0.00036520 0.00022372 7.27292910 0.99888447 0.99941108 0.49325208;
+	-6.27329440 -0.00036515 0.00022369 7.27292925 0.99888460 0.99941115 0.49325230;
+	-6.27329450 -0.00036511 0.00022367 7.27292939 0.99888473 0.99941122 0.49325225;
+	-6.27329461 -0.00036507 0.00022364 7.27292954 0.99888486 0.99941129 0.49325212;
+	-6.27329471 -0.00036502 0.00022361 7.27292968 0.99888499 0.99941136 0.49325221;
+	-6.27329481 -0.00036498 0.00022359 7.27292983 0.99888513 0.99941143 0.49325215;
+	-6.27329491 -0.00036494 0.00022356 7.27292998 0.99888526 0.99941150 0.49325228;
+	-6.27329502 -0.00036490 0.00022353 7.27293012 0.99888539 0.99941157 0.49325236;
+	-6.27329512 -0.00036485 0.00022351 7.27293027 0.99888552 0.99941164 0.49325238;
+	-6.27329522 -0.00036481 0.00022348 7.27293041 0.99888565 0.99941171 0.49325230;
+	-6.27329533 -0.00036477 0.00022345 7.27293056 0.99888578 0.99941178 0.49325233;
+	-6.27329543 -0.00036472 0.00022343 7.27293071 0.99888591 0.99941185 0.49325243;
+	-6.27329553 -0.00036468 0.00022340 7.27293085 0.99888605 0.99941192 0.49325248;
+	-6.27329564 -0.00036464 0.00022338 7.27293100 0.99888618 0.99941199 0.49325226;
+	-6.27329574 -0.00036460 0.00022335 7.27293114 0.99888631 0.99941206 0.49325247;
+	-6.27329584 -0.00036455 0.00022332 7.27293129 0.99888644 0.99941213 0.49325235;
+	-6.27329594 -0.00036451 0.00022330 7.27293143 0.99888657 0.99941219 0.49325238;
+	-6.27329605 -0.00036447 0.00022327 7.27293158 0.99888670 0.99941226 0.49325236;
+	-6.27329615 -0.00036442 0.00022324 7.27293173 0.99888683 0.99941233 0.49325251;
+	-6.27329625 -0.00036438 0.00022322 7.27293187 0.99888696 0.99941240 0.49325244;
+	-6.27329635 -0.00036434 0.00022319 7.27293202 0.99888709 0.99941247 0.49325243;
+	-6.27329646 -0.00036429 0.00022317 7.27293216 0.99888723 0.99941254 0.49325235;
+	-6.27329656 -0.00036425 0.00022314 7.27293231 0.99888736 0.99941261 0.49325265;
+	-6.27329666 -0.00036421 0.00022311 7.27293245 0.99888749 0.99941268 0.49325266;
+	-6.27329677 -0.00036417 0.00022309 7.27293260 0.99888762 0.99941275 0.49325241;
+	-6.27329687 -0.00036412 0.00022306 7.27293274 0.99888775 0.99941282 0.49325251;
+	-6.27329697 -0.00036408 0.00022303 7.27293289 0.99888788 0.99941289 0.49325244;
+	-6.27329707 -0.00036404 0.00022301 7.27293304 0.99888801 0.99941295 0.49325256;
+	-6.27329718 -0.00036399 0.00022298 7.27293318 0.99888814 0.99941302 0.49325261;
+	-6.27329728 -0.00036395 0.00022296 7.27293333 0.99888827 0.99941309 0.49325262;
+	-6.27329738 -0.00036391 0.00022293 7.27293347 0.99888840 0.99941316 0.49325272;
+	-6.27329748 -0.00036387 0.00022290 7.27293362 0.99888853 0.99941323 0.49325264;
+	-6.27329758 -0.00036382 0.00022288 7.27293376 0.99888866 0.99941330 0.49325271;
+	-6.27329769 -0.00036378 0.00022285 7.27293391 0.99888879 0.99941337 0.49325250;
+	-6.27329779 -0.00036374 0.00022282 7.27293405 0.99888893 0.99941344 0.49325276;
+	-6.27329789 -0.00036370 0.00022280 7.27293420 0.99888906 0.99941351 0.49325279;
+	-6.27329799 -0.00036365 0.00022277 7.27293434 0.99888919 0.99941358 0.49325256;
+	-6.27329810 -0.00036361 0.00022275 7.27293449 0.99888932 0.99941364 0.49325269;
+	-6.27329820 -0.00036357 0.00022272 7.27293463 0.99888945 0.99941371 0.49325274;
+	-6.27329830 -0.00036352 0.00022269 7.27293478 0.99888958 0.99941378 0.49325276;
+	-6.27329840 -0.00036348 0.00022267 7.27293492 0.99888971 0.99941385 0.49325275;
+	-6.27329851 -0.00036344 0.00022264 7.27293507 0.99888984 0.99941392 0.49325266;
+	-6.27329861 -0.00036340 0.00022261 7.27293521 0.99888997 0.99941399 0.49325274;
+	-6.27329871 -0.00036335 0.00022259 7.27293536 0.99889010 0.99941406 0.49325275;
+	-6.27329881 -0.00036331 0.00022256 7.27293550 0.99889023 0.99941413 0.49325279;
+	-6.27329891 -0.00036327 0.00022254 7.27293565 0.99889036 0.99941420 0.49325277;
+	-6.27329902 -0.00036323 0.00022251 7.27293579 0.99889049 0.99941426 0.49325299;
+	-6.27329912 -0.00036318 0.00022248 7.27293593 0.99889062 0.99941433 0.49325298;
+	-6.27329922 -0.00036314 0.00022246 7.27293608 0.99889075 0.99941440 0.49325274;
+	-6.27329932 -0.00036310 0.00022243 7.27293622 0.99889088 0.99941447 0.49325294;
+	-6.27329942 -0.00036306 0.00022241 7.27293637 0.99889101 0.99941454 0.49325297;
+	-6.27329953 -0.00036301 0.00022238 7.27293651 0.99889114 0.99941461 0.49325278;
+	-6.27329963 -0.00036297 0.00022235 7.27293666 0.99889127 0.99941468 0.49325281;
+	-6.27329973 -0.00036293 0.00022233 7.27293680 0.99889140 0.99941474 0.49325304;
+	-6.27329983 -0.00036289 0.00022230 7.27293695 0.99889153 0.99941481 0.49325295;
+	-6.27329993 -0.00036284 0.00022228 7.27293709 0.99889166 0.99941488 0.49325311;
+	-6.27330004 -0.00036280 0.00022225 7.27293723 0.99889179 0.99941495 0.49325291;
+	-6.27330014 -0.00036276 0.00022222 7.27293738 0.99889192 0.99941502 0.49325317;
+	-6.27330024 -0.00036272 0.00022220 7.27293752 0.99889205 0.99941509 0.49325298;
+	-6.27330034 -0.00036267 0.00022217 7.27293767 0.99889218 0.99941516 0.49325316;
+	-6.27330044 -0.00036263 0.00022215 7.27293781 0.99889231 0.99941522 0.49325310;
+	-6.27330054 -0.00036259 0.00022212 7.27293796 0.99889244 0.99941529 0.49325314;
+	-6.27330065 -0.00036255 0.00022209 7.27293810 0.99889257 0.99941536 0.49325310;
+	-6.27330075 -0.00036250 0.00022207 7.27293824 0.99889270 0.99941543 0.49325300;
+	-6.27330085 -0.00036246 0.00022204 7.27293839 0.99889283 0.99941550 0.49325323;
+	-6.27330095 -0.00036242 0.00022202 7.27293853 0.99889296 0.99941557 0.49325313;
+	-6.27330105 -0.00036238 0.00022199 7.27293868 0.99889309 0.99941564 0.49325318;
+	-6.27330115 -0.00036233 0.00022196 7.27293882 0.99889322 0.99941570 0.49325325;
+	-6.27330126 -0.00036229 0.00022194 7.27293896 0.99889335 0.99941577 0.49325315;
+	-6.27330136 -0.00036225 0.00022191 7.27293911 0.99889348 0.99941584 0.49325312;
+	-6.27330146 -0.00036221 0.00022189 7.27293925 0.99889361 0.99941591 0.49325327;
+	-6.27330156 -0.00036216 0.00022186 7.27293940 0.99889374 0.99941598 0.49325334;
+	-6.27330166 -0.00036212 0.00022183 7.27293954 0.99889387 0.99941605 0.49325318;
+	-6.27330176 -0.00036208 0.00022181 7.27293968 0.99889400 0.99941611 0.49325339;
+	-6.27330186 -0.00036204 0.00022178 7.27293983 0.99889412 0.99941618 0.49325320;
+	-6.27330197 -0.00036199 0.00022176 7.27293997 0.99889425 0.99941625 0.49325327;
+	-6.27330207 -0.00036195 0.00022173 7.27294011 0.99889438 0.99941632 0.49325329;
+	-6.27330217 -0.00036191 0.00022170 7.27294026 0.99889451 0.99941639 0.49325333;
+	-6.27330227 -0.00036187 0.00022168 7.27294040 0.99889464 0.99941646 0.49325330;
+	-6.27330237 -0.00036182 0.00022165 7.27294055 0.99889477 0.99941652 0.49325321;
+	-6.27330247 -0.00036178 0.00022163 7.27294069 0.99889490 0.99941659 0.49325343;
+	-6.27330257 -0.00036174 0.00022160 7.27294083 0.99889503 0.99941666 0.49325334;
+	-6.27330267 -0.00036170 0.00022157 7.27294098 0.99889516 0.99941673 0.49325333;
+	-6.27330278 -0.00036166 0.00022155 7.27294112 0.99889529 0.99941680 0.49325328;
+	-6.27330288 -0.00036161 0.00022152 7.27294126 0.99889542 0.99941686 0.49325344;
+	-6.27330298 -0.00036157 0.00022150 7.27294141 0.99889555 0.99941693 0.49325340;
+	-6.27330308 -0.00036153 0.00022147 7.27294155 0.99889568 0.99941700 0.49325337;
+	-6.27330318 -0.00036149 0.00022144 7.27294169 0.99889580 0.99941707 0.49325346;
+	-6.27330328 -0.00036144 0.00022142 7.27294184 0.99889593 0.99941714 0.49325350;
+	-6.27330338 -0.00036140 0.00022139 7.27294198 0.99889606 0.99941720 0.49325355;
+	-6.27330348 -0.00036136 0.00022137 7.27294212 0.99889619 0.99941727 0.49325362;
+	-6.27330358 -0.00036132 0.00022134 7.27294227 0.99889632 0.99941734 0.49325356;
+	-6.27330368 -0.00036128 0.00022132 7.27294241 0.99889645 0.99941741 0.49325360;
+	-6.27330379 -0.00036123 0.00022129 7.27294255 0.99889658 0.99941748 0.49325348;
+	-6.27330389 -0.00036119 0.00022126 7.27294269 0.99889671 0.99941754 0.49325378;
+	-6.27330399 -0.00036115 0.00022124 7.27294284 0.99889684 0.99941761 0.49325364;
+	-6.27330409 -0.00036111 0.00022121 7.27294298 0.99889696 0.99941768 0.49325361;
+	-6.27330419 -0.00036107 0.00022119 7.27294312 0.99889709 0.99941775 0.49325386;
+	-6.27330429 -0.00036102 0.00022116 7.27294327 0.99889722 0.99941782 0.49325359;
+	-6.27330439 -0.00036098 0.00022113 7.27294341 0.99889735 0.99941788 0.49325371;
+	-6.27330449 -0.00036094 0.00022111 7.27294355 0.99889748 0.99941795 0.49325375;
+	-6.27330459 -0.00036090 0.00022108 7.27294370 0.99889761 0.99941802 0.49325371;
+	-6.27330469 -0.00036085 0.00022106 7.27294384 0.99889774 0.99941809 0.49325378;
+	-6.27330479 -0.00036081 0.00022103 7.27294398 0.99889786 0.99941816 0.49325370;
+	-6.27330489 -0.00036077 0.00022101 7.27294412 0.99889799 0.99941822 0.49325364;
+	-6.27330499 -0.00036073 0.00022098 7.27294427 0.99889812 0.99941829 0.49325373;
+	-6.27330510 -0.00036069 0.00022095 7.27294441 0.99889825 0.99941836 0.49325372;
+	-6.27330520 -0.00036064 0.00022093 7.27294455 0.99889838 0.99941843 0.49325391;
+	-6.27330530 -0.00036060 0.00022090 7.27294469 0.99889851 0.99941849 0.49325378;
+	-6.27330540 -0.00036056 0.00022088 7.27294484 0.99889863 0.99941856 0.49325387;
+	-6.27330550 -0.00036052 0.00022085 7.27294498 0.99889876 0.99941863 0.49325370;
+	-6.27330560 -0.00036048 0.00022083 7.27294512 0.99889889 0.99941870 0.49325386;
+	-6.27330570 -0.00036043 0.00022080 7.27294526 0.99889902 0.99941877 0.49325387;
+	-6.27330580 -0.00036039 0.00022077 7.27294541 0.99889915 0.99941883 0.49325384;
+	-6.27330590 -0.00036035 0.00022075 7.27294555 0.99889928 0.99941890 0.49325392;
+	-6.27330600 -0.00036031 0.00022072 7.27294569 0.99889940 0.99941897 0.49325387;
+	-6.27330610 -0.00036027 0.00022070 7.27294583 0.99889953 0.99941904 0.49325390;
+	-6.27330620 -0.00036023 0.00022067 7.27294598 0.99889966 0.99941910 0.49325400;
+	-6.27330630 -0.00036018 0.00022065 7.27294612 0.99889979 0.99941917 0.49325409;
+	-6.27330640 -0.00036014 0.00022062 7.27294626 0.99889992 0.99941924 0.49325386;
+	-6.27330650 -0.00036010 0.00022059 7.27294640 0.99890004 0.99941931 0.49325408;
+	-6.27330660 -0.00036006 0.00022057 7.27294654 0.99890017 0.99941937 0.49325391;
+	-6.27330670 -0.00036002 0.00022054 7.27294669 0.99890030 0.99941944 0.49325389;
+	-6.27330680 -0.00035997 0.00022052 7.27294683 0.99890043 0.99941951 0.49325379;
+	-6.27330690 -0.00035993 0.00022049 7.27294697 0.99890056 0.99941958 0.49325409;
+	-6.27330700 -0.00035989 0.00022047 7.27294711 0.99890068 0.99941964 0.49325388;
+	-6.27330710 -0.00035985 0.00022044 7.27294726 0.99890081 0.99941971 0.49325402;
+	-6.27330720 -0.00035981 0.00022041 7.27294740 0.99890094 0.99941978 0.49325423;
+	-6.27330730 -0.00035976 0.00022039 7.27294754 0.99890107 0.99941985 0.49325405;
+	-6.27330740 -0.00035972 0.00022036 7.27294768 0.99890119 0.99941991 0.49325402;
+	-6.27330750 -0.00035968 0.00022034 7.27294782 0.99890132 0.99941998 0.49325409;
+	-6.27330760 -0.00035964 0.00022031 7.27294796 0.99890145 0.99942005 0.49325408;
+	-6.27330770 -0.00035960 0.00022029 7.27294811 0.99890158 0.99942012 0.49325430;
+	-6.27330780 -0.00035956 0.00022026 7.27294825 0.99890171 0.99942018 0.49325412;
+	-6.27330790 -0.00035951 0.00022024 7.27294839 0.99890183 0.99942025 0.49325410;
+	-6.27330800 -0.00035947 0.00022021 7.27294853 0.99890196 0.99942032 0.49325444;
+	-6.27330810 -0.00035943 0.00022018 7.27294867 0.99890209 0.99942039 0.49325431;
+	-6.27330820 -0.00035939 0.00022016 7.27294882 0.99890222 0.99942045 0.49325422;
+	-6.27330830 -0.00035935 0.00022013 7.27294896 0.99890234 0.99942052 0.49325435;
+	-6.27330840 -0.00035931 0.00022011 7.27294910 0.99890247 0.99942059 0.49325426;
+	-6.27330850 -0.00035926 0.00022008 7.27294924 0.99890260 0.99942065 0.49325433;
+	-6.27330860 -0.00035922 0.00022006 7.27294938 0.99890273 0.99942072 0.49325432;
+	-6.27330870 -0.00035918 0.00022003 7.27294952 0.99890285 0.99942079 0.49325444;
+	-6.27330880 -0.00035914 0.00022001 7.27294966 0.99890298 0.99942086 0.49325435;
+	-6.27330890 -0.00035910 0.00021998 7.27294981 0.99890311 0.99942092 0.49325422;
+	-6.27330900 -0.00035906 0.00021995 7.27294995 0.99890323 0.99942099 0.49325439;
+	-6.27330910 -0.00035901 0.00021993 7.27295009 0.99890336 0.99942106 0.49325438;
+	-6.27330920 -0.00035897 0.00021990 7.27295023 0.99890349 0.99942113 0.49325454;
+	-6.27330930 -0.00035893 0.00021988 7.27295037 0.99890362 0.99942119 0.49325448;
+	-6.27330940 -0.00035889 0.00021985 7.27295051 0.99890374 0.99942126 0.49325441;
+	-6.27330950 -0.00035885 0.00021983 7.27295065 0.99890387 0.99942133 0.49325438;
+	-6.27330960 -0.00035881 0.00021980 7.27295079 0.99890400 0.99942139 0.49325444;
+	-6.27330970 -0.00035876 0.00021978 7.27295094 0.99890412 0.99942146 0.49325455;
+	-6.27330980 -0.00035872 0.00021975 7.27295108 0.99890425 0.99942153 0.49325435;
+	-6.27330990 -0.00035868 0.00021972 7.27295122 0.99890438 0.99942159 0.49325446;
+	-6.27331000 -0.00035864 0.00021970 7.27295136 0.99890451 0.99942166 0.49325463;
+	-6.27331010 -0.00035860 0.00021967 7.27295150 0.99890463 0.99942173 0.49325459;
+	-6.27331020 -0.00035856 0.00021965 7.27295164 0.99890476 0.99942180 0.49325444;
+	-6.27331030 -0.00035851 0.00021962 7.27295178 0.99890489 0.99942186 0.49325446;
+	-6.27331040 -0.00035847 0.00021960 7.27295192 0.99890501 0.99942193 0.49325470;
+	-6.27331050 -0.00035843 0.00021957 7.27295206 0.99890514 0.99942200 0.49325447;
+	-6.27331059 -0.00035839 0.00021955 7.27295220 0.99890527 0.99942206 0.49325451;
+	-6.27331069 -0.00035835 0.00021952 7.27295235 0.99890539 0.99942213 0.49325471;
+	-6.27331079 -0.00035831 0.00021950 7.27295249 0.99890552 0.99942220 0.49325479;
+	-6.27331089 -0.00035827 0.00021947 7.27295263 0.99890565 0.99942226 0.49325465;
+	-6.27331099 -0.00035822 0.00021944 7.27295277 0.99890577 0.99942233 0.49325460;
+	-6.27331109 -0.00035818 0.00021942 7.27295291 0.99890590 0.99942240 0.49325463;
+	-6.27331119 -0.00035814 0.00021939 7.27295305 0.99890603 0.99942246 0.49325475;
+	-6.27331129 -0.00035810 0.00021937 7.27295319 0.99890615 0.99942253 0.49325484;
+	-6.27331139 -0.00035806 0.00021934 7.27295333 0.99890628 0.99942260 0.49325478;
+	-6.27331149 -0.00035802 0.00021932 7.27295347 0.99890641 0.99942267 0.49325476;
+	-6.27331159 -0.00035798 0.00021929 7.27295361 0.99890653 0.99942273 0.49325474;
+	-6.27331169 -0.00035793 0.00021927 7.27295375 0.99890666 0.99942280 0.49325471;
+	-6.27331179 -0.00035789 0.00021924 7.27295389 0.99890679 0.99942287 0.49325479;
+	-6.27331188 -0.00035785 0.00021922 7.27295403 0.99890691 0.99942293 0.49325475;
+	-6.27331198 -0.00035781 0.00021919 7.27295417 0.99890704 0.99942300 0.49325483;
+	-6.27331208 -0.00035777 0.00021917 7.27295431 0.99890717 0.99942307 0.49325488;
+	-6.27331218 -0.00035773 0.00021914 7.27295445 0.99890729 0.99942313 0.49325468;
+	-6.27331228 -0.00035769 0.00021911 7.27295459 0.99890742 0.99942320 0.49325487;
+	-6.27331238 -0.00035764 0.00021909 7.27295473 0.99890754 0.99942327 0.49325491;
+	-6.27331248 -0.00035760 0.00021906 7.27295487 0.99890767 0.99942333 0.49325485;
+	-6.27331258 -0.00035756 0.00021904 7.27295501 0.99890780 0.99942340 0.49325494;
+	-6.27331268 -0.00035752 0.00021901 7.27295515 0.99890792 0.99942347 0.49325489;
+	-6.27331277 -0.00035748 0.00021899 7.27295529 0.99890805 0.99942353 0.49325507;
+	-6.27331287 -0.00035744 0.00021896 7.27295544 0.99890818 0.99942360 0.49325487;
+	-6.27331297 -0.00035740 0.00021894 7.27295558 0.99890830 0.99942367 0.49325485;
+	-6.27331307 -0.00035736 0.00021891 7.27295572 0.99890843 0.99942373 0.49325494;
+	-6.27331317 -0.00035731 0.00021889 7.27295586 0.99890855 0.99942380 0.49325502;
+	-6.27331327 -0.00035727 0.00021886 7.27295600 0.99890868 0.99942386 0.49325506;
+	-6.27331337 -0.00035723 0.00021884 7.27295614 0.99890881 0.99942393 0.49325501;
+	-6.27331347 -0.00035719 0.00021881 7.27295628 0.99890893 0.99942400 0.49325503;
+	-6.27331356 -0.00035715 0.00021879 7.27295642 0.99890906 0.99942406 0.49325490;
+	-6.27331366 -0.00035711 0.00021876 7.27295655 0.99890918 0.99942413 0.49325500;
+	-6.27331376 -0.00035707 0.00021874 7.27295669 0.99890931 0.99942420 0.49325510;
+	-6.27331386 -0.00035703 0.00021871 7.27295683 0.99890943 0.99942426 0.49325499;
+	-6.27331396 -0.00035698 0.00021869 7.27295697 0.99890956 0.99942433 0.49325505;
+	-6.27331406 -0.00035694 0.00021866 7.27295711 0.99890969 0.99942440 0.49325506;
+	-6.27331416 -0.00035690 0.00021863 7.27295725 0.99890981 0.99942446 0.49325523;
+	-6.27331425 -0.00035686 0.00021861 7.27295739 0.99890994 0.99942453 0.49325511;
+	-6.27331435 -0.00035682 0.00021858 7.27295753 0.99891006 0.99942460 0.49325502;
+	-6.27331445 -0.00035678 0.00021856 7.27295767 0.99891019 0.99942466 0.49325512;
+	-6.27331455 -0.00035674 0.00021853 7.27295781 0.99891032 0.99942473 0.49325535;
+	-6.27331465 -0.00035670 0.00021851 7.27295795 0.99891044 0.99942479 0.49325526;
+	-6.27331475 -0.00035666 0.00021848 7.27295809 0.99891057 0.99942486 0.49325504;
+	-6.27331485 -0.00035661 0.00021846 7.27295823 0.99891069 0.99942493 0.49325512;
+	-6.27331494 -0.00035657 0.00021843 7.27295837 0.99891082 0.99942499 0.49325533;
+	-6.27331504 -0.00035653 0.00021841 7.27295851 0.99891094 0.99942506 0.49325523;
+	-6.27331514 -0.00035649 0.00021838 7.27295865 0.99891107 0.99942513 0.49325528;
+	-6.27331524 -0.00035645 0.00021836 7.27295879 0.99891119 0.99942519 0.49325526;
+	-6.27331534 -0.00035641 0.00021833 7.27295893 0.99891132 0.99942526 0.49325527;
+	-6.27331543 -0.00035637 0.00021831 7.27295907 0.99891144 0.99942532 0.49325541;
+	-6.27331553 -0.00035633 0.00021828 7.27295921 0.99891157 0.99942539 0.49325526;
+	-6.27331563 -0.00035629 0.00021826 7.27295935 0.99891169 0.99942546 0.49325518;
+	-6.27331573 -0.00035625 0.00021823 7.27295948 0.99891182 0.99942552 0.49325527;
+	-6.27331583 -0.00035620 0.00021821 7.27295962 0.99891195 0.99942559 0.49325543;
+	-6.27331593 -0.00035616 0.00021818 7.27295976 0.99891207 0.99942566 0.49325535;
+	-6.27331602 -0.00035612 0.00021816 7.27295990 0.99891220 0.99942572 0.49325531;
+	-6.27331612 -0.00035608 0.00021813 7.27296004 0.99891232 0.99942579 0.49325537;
+	-6.27331622 -0.00035604 0.00021811 7.27296018 0.99891245 0.99942585 0.49325536;
+	-6.27331632 -0.00035600 0.00021808 7.27296032 0.99891257 0.99942592 0.49325546;
+	-6.27331642 -0.00035596 0.00021806 7.27296046 0.99891270 0.99942599 0.49325549;
+	-6.27331651 -0.00035592 0.00021803 7.27296060 0.99891282 0.99942605 0.49325546;
+	-6.27331661 -0.00035588 0.00021801 7.27296074 0.99891295 0.99942612 0.49325542;
+	-6.27331671 -0.00035584 0.00021798 7.27296087 0.99891307 0.99942618 0.49325537;
+	-6.27331681 -0.00035579 0.00021796 7.27296101 0.99891320 0.99942625 0.49325535;
+	-6.27331691 -0.00035575 0.00021793 7.27296115 0.99891332 0.99942632 0.49325540;
+	-6.27331700 -0.00035571 0.00021791 7.27296129 0.99891345 0.99942638 0.49325546;
+	-6.27331710 -0.00035567 0.00021788 7.27296143 0.99891357 0.99942645 0.49325545;
+	-6.27331720 -0.00035563 0.00021786 7.27296157 0.99891370 0.99942651 0.49325569;
+	-6.27331730 -0.00035559 0.00021783 7.27296171 0.99891382 0.99942658 0.49325550;
+	-6.27331740 -0.00035555 0.00021781 7.27296185 0.99891395 0.99942664 0.49325563;
+	-6.27331749 -0.00035551 0.00021778 7.27296198 0.99891407 0.99942671 0.49325568;
+	-6.27331759 -0.00035547 0.00021776 7.27296212 0.99891420 0.99942678 0.49325547;
+	-6.27331769 -0.00035543 0.00021773 7.27296226 0.99891432 0.99942684 0.49325550;
+	-6.27331779 -0.00035539 0.00021771 7.27296240 0.99891444 0.99942691 0.49325571;
+	-6.27331788 -0.00035535 0.00021768 7.27296254 0.99891457 0.99942697 0.49325568;
+	-6.27331798 -0.00035530 0.00021766 7.27296268 0.99891469 0.99942704 0.49325562;
+	-6.27331808 -0.00035526 0.00021763 7.27296281 0.99891482 0.99942711 0.49325569;
+	-6.27331818 -0.00035522 0.00021761 7.27296295 0.99891494 0.99942717 0.49325576;
+	-6.27331827 -0.00035518 0.00021758 7.27296309 0.99891507 0.99942724 0.49325584;
+	-6.27331837 -0.00035514 0.00021756 7.27296323 0.99891519 0.99942730 0.49325572;
+	-6.27331847 -0.00035510 0.00021753 7.27296337 0.99891532 0.99942737 0.49325557;
+	-6.27331857 -0.00035506 0.00021751 7.27296351 0.99891544 0.99942743 0.49325555;
+	-6.27331866 -0.00035502 0.00021748 7.27296364 0.99891557 0.99942750 0.49325590;
+	-6.27331876 -0.00035498 0.00021746 7.27296378 0.99891569 0.99942757 0.49325582;
+	-6.27331886 -0.00035494 0.00021743 7.27296392 0.99891581 0.99942763 0.49325599;
+	-6.27331896 -0.00035490 0.00021741 7.27296406 0.99891594 0.99942770 0.49325596;
+	-6.27331905 -0.00035486 0.00021738 7.27296420 0.99891606 0.99942776 0.49325600;
+	-6.27331915 -0.00035482 0.00021736 7.27296434 0.99891619 0.99942783 0.49325578;
+	-6.27331925 -0.00035478 0.00021733 7.27296447 0.99891631 0.99942789 0.49325597;
+	-6.27331935 -0.00035473 0.00021731 7.27296461 0.99891644 0.99942796 0.49325578;
+	-6.27331944 -0.00035469 0.00021728 7.27296475 0.99891656 0.99942802 0.49325601;
+	-6.27331954 -0.00035465 0.00021726 7.27296489 0.99891668 0.99942809 0.49325574;
+	-6.27331964 -0.00035461 0.00021723 7.27296503 0.99891681 0.99942816 0.49325598;
+	-6.27331974 -0.00035457 0.00021721 7.27296516 0.99891693 0.99942822 0.49325602;
+	-6.27331983 -0.00035453 0.00021718 7.27296530 0.99891706 0.99942829 0.49325595;
+	-6.27331993 -0.00035449 0.00021716 7.27296544 0.99891718 0.99942835 0.49325608;
+	-6.27332003 -0.00035445 0.00021713 7.27296558 0.99891730 0.99942842 0.49325597;
+	-6.27332012 -0.00035441 0.00021711 7.27296571 0.99891743 0.99942848 0.49325598;
+	-6.27332022 -0.00035437 0.00021708 7.27296585 0.99891755 0.99942855 0.49325613;
+	-6.27332032 -0.00035433 0.00021706 7.27296599 0.99891768 0.99942861 0.49325588;
+	-6.27332042 -0.00035429 0.00021703 7.27296613 0.99891780 0.99942868 0.49325598;
+	-6.27332051 -0.00035425 0.00021701 7.27296626 0.99891792 0.99942874 0.49325592;
+	-6.27332061 -0.00035421 0.00021698 7.27296640 0.99891805 0.99942881 0.49325612;
+	-6.27332071 -0.00035417 0.00021696 7.27296654 0.99891817 0.99942888 0.49325620;
+	-6.27332080 -0.00035413 0.00021693 7.27296668 0.99891830 0.99942894 0.49325610;
+	-6.27332090 -0.00035409 0.00021691 7.27296681 0.99891842 0.99942901 0.49325614;
+	-6.27332100 -0.00035405 0.00021688 7.27296695 0.99891854 0.99942907 0.49325612;
+	-6.27332109 -0.00035400 0.00021686 7.27296709 0.99891867 0.99942914 0.49325613;
+	-6.27332119 -0.00035396 0.00021683 7.27296723 0.99891879 0.99942920 0.49325604;
+	-6.27332129 -0.00035392 0.00021681 7.27296736 0.99891891 0.99942927 0.49325626;
+	-6.27332139 -0.00035388 0.00021678 7.27296750 0.99891904 0.99942933 0.49325625;
+	-6.27332148 -0.00035384 0.00021676 7.27296764 0.99891916 0.99942940 0.49325605;
+	-6.27332158 -0.00035380 0.00021673 7.27296778 0.99891928 0.99942946 0.49325626;
+	-6.27332168 -0.00035376 0.00021671 7.27296791 0.99891941 0.99942953 0.49325629;
+	-6.27332177 -0.00035372 0.00021669 7.27296805 0.99891953 0.99942959 0.49325630;
+	-6.27332187 -0.00035368 0.00021666 7.27296819 0.99891966 0.99942966 0.49325628;
+	-6.27332197 -0.00035364 0.00021664 7.27296833 0.99891978 0.99942972 0.49325635;
+	-6.27332206 -0.00035360 0.00021661 7.27296846 0.99891990 0.99942979 0.49325625;
+	-6.27332216 -0.00035356 0.00021659 7.27296860 0.99892003 0.99942985 0.49325617;
+	-6.27332226 -0.00035352 0.00021656 7.27296874 0.99892015 0.99942992 0.49325641;
+	-6.27332235 -0.00035348 0.00021654 7.27296887 0.99892027 0.99942998 0.49325636;
+	-6.27332245 -0.00035344 0.00021651 7.27296901 0.99892040 0.99943005 0.49325630;
+	-6.27332255 -0.00035340 0.00021649 7.27296915 0.99892052 0.99943011 0.49325637;
+	-6.27332264 -0.00035336 0.00021646 7.27296928 0.99892064 0.99943018 0.49325631;
+	-6.27332274 -0.00035332 0.00021644 7.27296942 0.99892077 0.99943024 0.49325656;
+	-6.27332284 -0.00035328 0.00021641 7.27296956 0.99892089 0.99943031 0.49325631;
+	-6.27332293 -0.00035324 0.00021639 7.27296970 0.99892101 0.99943037 0.49325638;
+	-6.27332303 -0.00035320 0.00021636 7.27296983 0.99892114 0.99943044 0.49325647;
+	-6.27332313 -0.00035316 0.00021634 7.27296997 0.99892126 0.99943050 0.49325639;
+	-6.27332322 -0.00035312 0.00021631 7.27297011 0.99892138 0.99943057 0.49325638;
+	-6.27332332 -0.00035308 0.00021629 7.27297024 0.99892150 0.99943063 0.49325638;
+	-6.27332341 -0.00035304 0.00021626 7.27297038 0.99892163 0.99943070 0.49325643;
+	-6.27332351 -0.00035300 0.00021624 7.27297052 0.99892175 0.99943076 0.49325659;
+	-6.27332361 -0.00035296 0.00021622 7.27297065 0.99892187 0.99943083 0.49325672;
+	-6.27332370 -0.00035291 0.00021619 7.27297079 0.99892200 0.99943089 0.49325654;
+	-6.27332380 -0.00035287 0.00021617 7.27297093 0.99892212 0.99943096 0.49325642;
+	-6.27332390 -0.00035283 0.00021614 7.27297106 0.99892224 0.99943102 0.49325660;
+	-6.27332399 -0.00035279 0.00021612 7.27297120 0.99892237 0.99943109 0.49325667;
+	-6.27332409 -0.00035275 0.00021609 7.27297133 0.99892249 0.99943115 0.49325649;
+	-6.27332418 -0.00035271 0.00021607 7.27297147 0.99892261 0.99943122 0.49325655;
+	-6.27332428 -0.00035267 0.00021604 7.27297161 0.99892273 0.99943128 0.49325662;
+	-6.27332438 -0.00035263 0.00021602 7.27297174 0.99892286 0.99943135 0.49325664;
+	-6.27332447 -0.00035259 0.00021599 7.27297188 0.99892298 0.99943141 0.49325657;
+	-6.27332457 -0.00035255 0.00021597 7.27297202 0.99892310 0.99943148 0.49325670;
+	-6.27332467 -0.00035251 0.00021594 7.27297215 0.99892322 0.99943154 0.49325664;
+	-6.27332476 -0.00035247 0.00021592 7.27297229 0.99892335 0.99943161 0.49325680;
+	-6.27332486 -0.00035243 0.00021590 7.27297243 0.99892347 0.99943167 0.49325677;
+	-6.27332495 -0.00035239 0.00021587 7.27297256 0.99892359 0.99943174 0.49325674;
+	-6.27332505 -0.00035235 0.00021585 7.27297270 0.99892371 0.99943180 0.49325673;
+	-6.27332515 -0.00035231 0.00021582 7.27297283 0.99892384 0.99943187 0.49325687;
+	-6.27332524 -0.00035227 0.00021580 7.27297297 0.99892396 0.99943193 0.49325676;
+	-6.27332534 -0.00035223 0.00021577 7.27297311 0.99892408 0.99943200 0.49325694;
+	-6.27332543 -0.00035219 0.00021575 7.27297324 0.99892420 0.99943206 0.49325684;
+	-6.27332553 -0.00035215 0.00021572 7.27297338 0.99892433 0.99943212 0.49325673;
+	-6.27332563 -0.00035211 0.00021570 7.27297351 0.99892445 0.99943219 0.49325679;
+	-6.27332572 -0.00035207 0.00021567 7.27297365 0.99892457 0.99943225 0.49325687;
+	-6.27332582 -0.00035203 0.00021565 7.27297379 0.99892469 0.99943232 0.49325682;
+	-6.27332591 -0.00035199 0.00021563 7.27297392 0.99892482 0.99943238 0.49325693;
+	-6.27332601 -0.00035195 0.00021560 7.27297406 0.99892494 0.99943245 0.49325706;
+	-6.27332611 -0.00035191 0.00021558 7.27297419 0.99892506 0.99943251 0.49325679;
+	-6.27332620 -0.00035187 0.00021555 7.27297433 0.99892518 0.99943258 0.49325693;
+	-6.27332630 -0.00035183 0.00021553 7.27297446 0.99892531 0.99943264 0.49325690;
+	-6.27332639 -0.00035179 0.00021550 7.27297460 0.99892543 0.99943271 0.49325679;
+	-6.27332649 -0.00035175 0.00021548 7.27297474 0.99892555 0.99943277 0.49325703;
+	-6.27332658 -0.00035171 0.00021545 7.27297487 0.99892567 0.99943283 0.49325709;
+	-6.27332668 -0.00035167 0.00021543 7.27297501 0.99892579 0.99943290 0.49325716;
+	-6.27332678 -0.00035163 0.00021540 7.27297514 0.99892592 0.99943296 0.49325688;
+	-6.27332687 -0.00035159 0.00021538 7.27297528 0.99892604 0.99943303 0.49325701;
+	-6.27332697 -0.00035155 0.00021536 7.27297541 0.99892616 0.99943309 0.49325699;
+	-6.27332706 -0.00035151 0.00021533 7.27297555 0.99892628 0.99943316 0.49325716;
+	-6.27332716 -0.00035147 0.00021531 7.27297569 0.99892640 0.99943322 0.49325705;
+	-6.27332725 -0.00035143 0.00021528 7.27297582 0.99892653 0.99943329 0.49325714;
+	-6.27332735 -0.00035139 0.00021526 7.27297596 0.99892665 0.99943335 0.49325697;
+	-6.27332744 -0.00035135 0.00021523 7.27297609 0.99892677 0.99943341 0.49325706;
+	-6.27332754 -0.00035131 0.00021521 7.27297623 0.99892689 0.99943348 0.49325710;
+	-6.27332763 -0.00035127 0.00021518 7.27297636 0.99892701 0.99943354 0.49325718;
+	-6.27332773 -0.00035123 0.00021516 7.27297650 0.99892714 0.99943361 0.49325714;
+	-6.27332783 -0.00035119 0.00021514 7.27297663 0.99892726 0.99943367 0.49325704;
+	-6.27332792 -0.00035115 0.00021511 7.27297677 0.99892738 0.99943374 0.49325724;
+	-6.27332802 -0.00035111 0.00021509 7.27297690 0.99892750 0.99943380 0.49325727;
+	-6.27332811 -0.00035107 0.00021506 7.27297704 0.99892762 0.99943386 0.49325718;
+	-6.27332821 -0.00035103 0.00021504 7.27297717 0.99892774 0.99943393 0.49325715;
+	-6.27332830 -0.00035099 0.00021501 7.27297731 0.99892787 0.99943399 0.49325736;
+	-6.27332840 -0.00035095 0.00021499 7.27297744 0.99892799 0.99943406 0.49325725;
+	-6.27332849 -0.00035091 0.00021496 7.27297758 0.99892811 0.99943412 0.49325737;
+	-6.27332859 -0.00035087 0.00021494 7.27297771 0.99892823 0.99943418 0.49325733;
+	-6.27332868 -0.00035084 0.00021492 7.27297785 0.99892835 0.99943425 0.49325727;
+	-6.27332878 -0.00035080 0.00021489 7.27297798 0.99892847 0.99943431 0.49325722;
+	-6.27332887 -0.00035076 0.00021487 7.27297812 0.99892859 0.99943438 0.49325726;
+	-6.27332897 -0.00035072 0.00021484 7.27297825 0.99892872 0.99943444 0.49325746;
+	-6.27332906 -0.00035068 0.00021482 7.27297839 0.99892884 0.99943451 0.49325735;
+	-6.27332916 -0.00035064 0.00021479 7.27297852 0.99892896 0.99943457 0.49325729;
+	-6.27332925 -0.00035060 0.00021477 7.27297866 0.99892908 0.99943463 0.49325733;
+	-6.27332935 -0.00035056 0.00021475 7.27297879 0.99892920 0.99943470 0.49325743;
+	-6.27332944 -0.00035052 0.00021472 7.27297893 0.99892932 0.99943476 0.49325745;
+	-6.27332954 -0.00035048 0.00021470 7.27297906 0.99892944 0.99943483 0.49325763;
+	-6.27332963 -0.00035044 0.00021467 7.27297920 0.99892956 0.99943489 0.49325734;
+	-6.27332973 -0.00035040 0.00021465 7.27297933 0.99892969 0.99943495 0.49325743;
+	-6.27332982 -0.00035036 0.00021462 7.27297947 0.99892981 0.99943502 0.49325746;
+	-6.27332992 -0.00035032 0.00021460 7.27297960 0.99892993 0.99943508 0.49325750;
+	-6.27333001 -0.00035028 0.00021458 7.27297973 0.99893005 0.99943515 0.49325754;
+	-6.27333011 -0.00035024 0.00021455 7.27297987 0.99893017 0.99943521 0.49325751;
+	-6.27333020 -0.00035020 0.00021453 7.27298000 0.99893029 0.99943527 0.49325761;
+	-6.27333030 -0.00035016 0.00021450 7.27298014 0.99893041 0.99943534 0.49325752;
+	-6.27333039 -0.00035012 0.00021448 7.27298027 0.99893053 0.99943540 0.49325748;
+	-6.27333049 -0.00035008 0.00021445 7.27298041 0.99893065 0.99943546 0.49325770;
+	-6.27333058 -0.00035004 0.00021443 7.27298054 0.99893078 0.99943553 0.49325749;
+	-6.27333068 -0.00035000 0.00021441 7.27298068 0.99893090 0.99943559 0.49325754;
+	-6.27333077 -0.00034996 0.00021438 7.27298081 0.99893102 0.99943566 0.49325757;
+	-6.27333087 -0.00034992 0.00021436 7.27298094 0.99893114 0.99943572 0.49325772;
+	-6.27333096 -0.00034988 0.00021433 7.27298108 0.99893126 0.99943578 0.49325749;
+	-6.27333106 -0.00034984 0.00021431 7.27298121 0.99893138 0.99943585 0.49325746;
+	-6.27333115 -0.00034980 0.00021428 7.27298135 0.99893150 0.99943591 0.49325763;
+	-6.27333125 -0.00034976 0.00021426 7.27298148 0.99893162 0.99943597 0.49325780;
+	-6.27333134 -0.00034973 0.00021424 7.27298162 0.99893174 0.99943604 0.49325773;
+	-6.27333144 -0.00034969 0.00021421 7.27298175 0.99893186 0.99943610 0.49325774;
+	-6.27333153 -0.00034965 0.00021419 7.27298188 0.99893198 0.99943617 0.49325768;
+	-6.27333162 -0.00034961 0.00021416 7.27298202 0.99893210 0.99943623 0.49325772;
+	-6.27333172 -0.00034957 0.00021414 7.27298215 0.99893223 0.99943629 0.49325780;
+	-6.27333181 -0.00034953 0.00021412 7.27298229 0.99893235 0.99943636 0.49325790;
+	-6.27333191 -0.00034949 0.00021409 7.27298242 0.99893247 0.99943642 0.49325769;
+	-6.27333200 -0.00034945 0.00021407 7.27298255 0.99893259 0.99943648 0.49325784;
+	-6.27333210 -0.00034941 0.00021404 7.27298269 0.99893271 0.99943655 0.49325781;
+	-6.27333219 -0.00034937 0.00021402 7.27298282 0.99893283 0.99943661 0.49325781;
+	-6.27333229 -0.00034933 0.00021399 7.27298296 0.99893295 0.99943668 0.49325775;
+	-6.27333238 -0.00034929 0.00021397 7.27298309 0.99893307 0.99943674 0.49325777;
+	-6.27333247 -0.00034925 0.00021395 7.27298322 0.99893319 0.99943680 0.49325794;
+	-6.27333257 -0.00034921 0.00021392 7.27298336 0.99893331 0.99943687 0.49325786;
+	-6.27333266 -0.00034917 0.00021390 7.27298349 0.99893343 0.99943693 0.49325783;
+	-6.27333276 -0.00034913 0.00021387 7.27298362 0.99893355 0.99943699 0.49325777;
+	-6.27333285 -0.00034909 0.00021385 7.27298376 0.99893367 0.99943706 0.49325800;
+	-6.27333295 -0.00034905 0.00021383 7.27298389 0.99893379 0.99943712 0.49325788;
+	-6.27333304 -0.00034902 0.00021380 7.27298402 0.99893391 0.99943718 0.49325796;
+	-6.27333313 -0.00034898 0.00021378 7.27298416 0.99893403 0.99943725 0.49325777;
+	-6.27333323 -0.00034894 0.00021375 7.27298429 0.99893415 0.99943731 0.49325803;
+	-6.27333332 -0.00034890 0.00021373 7.27298443 0.99893427 0.99943737 0.49325799;
+	-6.27333342 -0.00034886 0.00021370 7.27298456 0.99893439 0.99943744 0.49325815;
+	-6.27333351 -0.00034882 0.00021368 7.27298469 0.99893451 0.99943750 0.49325810;
+	-6.27333360 -0.00034878 0.00021366 7.27298483 0.99893463 0.99943756 0.49325805;
+	-6.27333370 -0.00034874 0.00021363 7.27298496 0.99893475 0.99943763 0.49325805;
+	-6.27333379 -0.00034870 0.00021361 7.27298509 0.99893487 0.99943769 0.49325810;
+	-6.27333389 -0.00034866 0.00021358 7.27298523 0.99893499 0.99943775 0.49325812;
+	-6.27333398 -0.00034862 0.00021356 7.27298536 0.99893511 0.99943782 0.49325800;
+	-6.27333408 -0.00034858 0.00021354 7.27298549 0.99893523 0.99943788 0.49325798;
+	-6.27333417 -0.00034854 0.00021351 7.27298563 0.99893535 0.99943794 0.49325819;
+	-6.27333426 -0.00034850 0.00021349 7.27298576 0.99893547 0.99943801 0.49325809;
+	-6.27333436 -0.00034847 0.00021346 7.27298589 0.99893559 0.99943807 0.49325811;
+	-6.27333445 -0.00034843 0.00021344 7.27298602 0.99893571 0.99943813 0.49325804;
+	-6.27333454 -0.00034839 0.00021342 7.27298616 0.99893583 0.99943820 0.49325814;
+	-6.27333464 -0.00034835 0.00021339 7.27298629 0.99893595 0.99943826 0.49325817;
+	-6.27333473 -0.00034831 0.00021337 7.27298642 0.99893607 0.99943832 0.49325810;
+	-6.27333483 -0.00034827 0.00021334 7.27298656 0.99893619 0.99943839 0.49325810;
+	-6.27333492 -0.00034823 0.00021332 7.27298669 0.99893631 0.99943845 0.49325813;
+	-6.27333501 -0.00034819 0.00021330 7.27298682 0.99893643 0.99943851 0.49325821;
+	-6.27333511 -0.00034815 0.00021327 7.27298696 0.99893655 0.99943858 0.49325825;
+	-6.27333520 -0.00034811 0.00021325 7.27298709 0.99893667 0.99943864 0.49325802;
+	-6.27333530 -0.00034807 0.00021322 7.27298722 0.99893679 0.99943870 0.49325839;
+	-6.27333539 -0.00034803 0.00021320 7.27298735 0.99893691 0.99943877 0.49325824;
+	-6.27333548 -0.00034800 0.00021318 7.27298749 0.99893703 0.99943883 0.49325827;
+	-6.27333558 -0.00034796 0.00021315 7.27298762 0.99893715 0.99943889 0.49325830;
+	-6.27333567 -0.00034792 0.00021313 7.27298775 0.99893727 0.99943895 0.49325817;
+	-6.27333576 -0.00034788 0.00021310 7.27298789 0.99893739 0.99943902 0.49325841;
+	-6.27333586 -0.00034784 0.00021308 7.27298802 0.99893751 0.99943908 0.49325836;
+	-6.27333595 -0.00034780 0.00021306 7.27298815 0.99893763 0.99943914 0.49325836;
+	-6.27333604 -0.00034776 0.00021303 7.27298828 0.99893774 0.99943921 0.49325838;
+	-6.27333614 -0.00034772 0.00021301 7.27298842 0.99893786 0.99943927 0.49325845;
+	-6.27333623 -0.00034768 0.00021298 7.27298855 0.99893798 0.99943933 0.49325848;
+	-6.27333632 -0.00034764 0.00021296 7.27298868 0.99893810 0.99943940 0.49325833;
+	-6.27333642 -0.00034760 0.00021294 7.27298881 0.99893822 0.99943946 0.49325843;
+	-6.27333651 -0.00034757 0.00021291 7.27298895 0.99893834 0.99943952 0.49325849;
+	-6.27333661 -0.00034753 0.00021289 7.27298908 0.99893846 0.99943958 0.49325841;
+	-6.27333670 -0.00034749 0.00021286 7.27298921 0.99893858 0.99943965 0.49325856;
+	-6.27333679 -0.00034745 0.00021284 7.27298934 0.99893870 0.99943971 0.49325841;
+	-6.27333689 -0.00034741 0.00021282 7.27298948 0.99893882 0.99943977 0.49325845;
+	-6.27333698 -0.00034737 0.00021279 7.27298961 0.99893894 0.99943984 0.49325852;
+	-6.27333707 -0.00034733 0.00021277 7.27298974 0.99893906 0.99943990 0.49325863;
+	-6.27333717 -0.00034729 0.00021275 7.27298987 0.99893918 0.99943996 0.49325866;
+	-6.27333726 -0.00034725 0.00021272 7.27299000 0.99893929 0.99944002 0.49325856;
+	-6.27333735 -0.00034721 0.00021270 7.27299014 0.99893941 0.99944009 0.49325854;
+	-6.27333745 -0.00034718 0.00021267 7.27299027 0.99893953 0.99944015 0.49325858;
+	-6.27333754 -0.00034714 0.00021265 7.27299040 0.99893965 0.99944021 0.49325856;
+	-6.27333763 -0.00034710 0.00021263 7.27299053 0.99893977 0.99944028 0.49325873;
+	-6.27333772 -0.00034706 0.00021260 7.27299067 0.99893989 0.99944034 0.49325877;
+	-6.27333782 -0.00034702 0.00021258 7.27299080 0.99894001 0.99944040 0.49325864;
+	-6.27333791 -0.00034698 0.00021255 7.27299093 0.99894013 0.99944046 0.49325857;
+	-6.27333800 -0.00034694 0.00021253 7.27299106 0.99894025 0.99944053 0.49325852;
+	-6.27333810 -0.00034690 0.00021251 7.27299119 0.99894036 0.99944059 0.49325872;
+	-6.27333819 -0.00034686 0.00021248 7.27299133 0.99894048 0.99944065 0.49325865;
+	-6.27333828 -0.00034683 0.00021246 7.27299146 0.99894060 0.99944072 0.49325884;
+	-6.27333838 -0.00034679 0.00021244 7.27299159 0.99894072 0.99944078 0.49325864;
+	-6.27333847 -0.00034675 0.00021241 7.27299172 0.99894084 0.99944084 0.49325865;
+	-6.27333856 -0.00034671 0.00021239 7.27299185 0.99894096 0.99944090 0.49325871;
+	-6.27333866 -0.00034667 0.00021236 7.27299199 0.99894108 0.99944097 0.49325862;
+	-6.27333875 -0.00034663 0.00021234 7.27299212 0.99894120 0.99944103 0.49325892;
+	-6.27333884 -0.00034659 0.00021232 7.27299225 0.99894131 0.99944109 0.49325886;
+	-6.27333893 -0.00034655 0.00021229 7.27299238 0.99894143 0.99944115 0.49325892;
+	-6.27333903 -0.00034652 0.00021227 7.27299251 0.99894155 0.99944122 0.49325878;
+	-6.27333912 -0.00034648 0.00021225 7.27299264 0.99894167 0.99944128 0.49325893;
+	-6.27333921 -0.00034644 0.00021222 7.27299278 0.99894179 0.99944134 0.49325882;
+	-6.27333931 -0.00034640 0.00021220 7.27299291 0.99894191 0.99944140 0.49325880;
+	-6.27333940 -0.00034636 0.00021217 7.27299304 0.99894202 0.99944147 0.49325884;
+	-6.27333949 -0.00034632 0.00021215 7.27299317 0.99894214 0.99944153 0.49325871;
+	-6.27333958 -0.00034628 0.00021213 7.27299330 0.99894226 0.99944159 0.49325888;
+	-6.27333968 -0.00034624 0.00021210 7.27299343 0.99894238 0.99944165 0.49325907;
+	-6.27333977 -0.00034620 0.00021208 7.27299356 0.99894250 0.99944172 0.49325884;
+	-6.27333986 -0.00034617 0.00021206 7.27299370 0.99894262 0.99944178 0.49325906;
+	-6.27333995 -0.00034613 0.00021203 7.27299383 0.99894273 0.99944184 0.49325903;
+	-6.27334005 -0.00034609 0.00021201 7.27299396 0.99894285 0.99944190 0.49325895;
+	-6.27334014 -0.00034605 0.00021198 7.27299409 0.99894297 0.99944197 0.49325883;
+	-6.27334023 -0.00034601 0.00021196 7.27299422 0.99894309 0.99944203 0.49325893;
+	-6.27334033 -0.00034597 0.00021194 7.27299435 0.99894321 0.99944209 0.49325903;
+	-6.27334042 -0.00034593 0.00021191 7.27299448 0.99894333 0.99944215 0.49325919;
+	-6.27334051 -0.00034590 0.00021189 7.27299461 0.99894344 0.99944222 0.49325911;
+	-6.27334060 -0.00034586 0.00021187 7.27299475 0.99894356 0.99944228 0.49325916;
+	-6.27334070 -0.00034582 0.00021184 7.27299488 0.99894368 0.99944234 0.49325910;
+	-6.27334079 -0.00034578 0.00021182 7.27299501 0.99894380 0.99944240 0.49325905;
+	-6.27334088 -0.00034574 0.00021179 7.27299514 0.99894392 0.99944246 0.49325907;
+	-6.27334097 -0.00034570 0.00021177 7.27299527 0.99894403 0.99944253 0.49325918;
+	-6.27334107 -0.00034566 0.00021175 7.27299540 0.99894415 0.99944259 0.49325910;
+	-6.27334116 -0.00034563 0.00021172 7.27299553 0.99894427 0.99944265 0.49325909;
+	-6.27334125 -0.00034559 0.00021170 7.27299566 0.99894439 0.99944271 0.49325903;
+	-6.27334134 -0.00034555 0.00021168 7.27299579 0.99894451 0.99944278 0.49325934;
+	-6.27334143 -0.00034551 0.00021165 7.27299593 0.99894462 0.99944284 0.49325921;
+	-6.27334153 -0.00034547 0.00021163 7.27299606 0.99894474 0.99944290 0.49325916;
+	-6.27334162 -0.00034543 0.00021161 7.27299619 0.99894486 0.99944296 0.49325905;
+	-6.27334171 -0.00034539 0.00021158 7.27299632 0.99894498 0.99944302 0.49325932;
+	-6.27334180 -0.00034536 0.00021156 7.27299645 0.99894509 0.99944309 0.49325918;
+	-6.27334190 -0.00034532 0.00021153 7.27299658 0.99894521 0.99944315 0.49325928;
+	-6.27334199 -0.00034528 0.00021151 7.27299671 0.99894533 0.99944321 0.49325927;
+	-6.27334208 -0.00034524 0.00021149 7.27299684 0.99894545 0.99944327 0.49325910;
+	-6.27334217 -0.00034520 0.00021146 7.27299697 0.99894557 0.99944334 0.49325933;
+	-6.27334226 -0.00034516 0.00021144 7.27299710 0.99894568 0.99944340 0.49325931;
+	-6.27334236 -0.00034512 0.00021142 7.27299723 0.99894580 0.99944346 0.49325913;
+	-6.27334245 -0.00034509 0.00021139 7.27299736 0.99894592 0.99944352 0.49325935;
+	-6.27334254 -0.00034505 0.00021137 7.27299749 0.99894604 0.99944358 0.49325926;
+	-6.27334263 -0.00034501 0.00021135 7.27299762 0.99894615 0.99944365 0.49325931;
+	-6.27334273 -0.00034497 0.00021132 7.27299776 0.99894627 0.99944371 0.49325923;
+	-6.27334282 -0.00034493 0.00021130 7.27299789 0.99894639 0.99944377 0.49325932;
+	-6.27334291 -0.00034489 0.00021128 7.27299802 0.99894651 0.99944383 0.49325937;
+	-6.27334300 -0.00034486 0.00021125 7.27299815 0.99894662 0.99944389 0.49325925;
+	-6.27334309 -0.00034482 0.00021123 7.27299828 0.99894674 0.99944396 0.49325938;
+	-6.27334319 -0.00034478 0.00021120 7.27299841 0.99894686 0.99944402 0.49325937;
+	-6.27334328 -0.00034474 0.00021118 7.27299854 0.99894697 0.99944408 0.49325933;
+	-6.27334337 -0.00034470 0.00021116 7.27299867 0.99894709 0.99944414 0.49325964;
+	-6.27334346 -0.00034466 0.00021113 7.27299880 0.99894721 0.99944420 0.49325932;
+	-6.27334355 -0.00034462 0.00021111 7.27299893 0.99894733 0.99944426 0.49325939;
+	-6.27334364 -0.00034459 0.00021109 7.27299906 0.99894744 0.99944433 0.49325953;
+	-6.27334374 -0.00034455 0.00021106 7.27299919 0.99894756 0.99944439 0.49325955;
+	-6.27334383 -0.00034451 0.00021104 7.27299932 0.99894768 0.99944445 0.49325952;
+	-6.27334392 -0.00034447 0.00021102 7.27299945 0.99894780 0.99944451 0.49325957;
+	-6.27334401 -0.00034443 0.00021099 7.27299958 0.99894791 0.99944457 0.49325952;
+	-6.27334410 -0.00034439 0.00021097 7.27299971 0.99894803 0.99944464 0.49325948;
+	-6.27334420 -0.00034436 0.00021095 7.27299984 0.99894815 0.99944470 0.49325953;
+	-6.27334429 -0.00034432 0.00021092 7.27299997 0.99894826 0.99944476 0.49325969;
+	-6.27334438 -0.00034428 0.00021090 7.27300010 0.99894838 0.99944482 0.49325951;
+	-6.27334447 -0.00034424 0.00021088 7.27300023 0.99894850 0.99944488 0.49325964;
+	-6.27334456 -0.00034420 0.00021085 7.27300036 0.99894861 0.99944494 0.49325959;
+	-6.27334465 -0.00034417 0.00021083 7.27300049 0.99894873 0.99944501 0.49325984;
+	-6.27334475 -0.00034413 0.00021081 7.27300062 0.99894885 0.99944507 0.49325961;
+	-6.27334484 -0.00034409 0.00021078 7.27300075 0.99894897 0.99944513 0.49325970;
+	-6.27334493 -0.00034405 0.00021076 7.27300088 0.99894908 0.99944519 0.49325973;
+	-6.27334502 -0.00034401 0.00021073 7.27300101 0.99894920 0.99944525 0.49325965;
+	-6.27334511 -0.00034397 0.00021071 7.27300114 0.99894932 0.99944531 0.49325961;
+	-6.27334520 -0.00034394 0.00021069 7.27300127 0.99894943 0.99944538 0.49325970;
+	-6.27334529 -0.00034390 0.00021066 7.27300140 0.99894955 0.99944544 0.49325947;
+	-6.27334539 -0.00034386 0.00021064 7.27300153 0.99894967 0.99944550 0.49325970;
+	-6.27334548 -0.00034382 0.00021062 7.27300166 0.99894978 0.99944556 0.49325986;
+	-6.27334557 -0.00034378 0.00021059 7.27300179 0.99894990 0.99944562 0.49325975;
+	-6.27334566 -0.00034374 0.00021057 7.27300192 0.99895002 0.99944568 0.49325973;
+	-6.27334575 -0.00034371 0.00021055 7.27300205 0.99895013 0.99944575 0.49325990;
+	-6.27334584 -0.00034367 0.00021052 7.27300217 0.99895025 0.99944581 0.49325987;
+	-6.27334593 -0.00034363 0.00021050 7.27300230 0.99895037 0.99944587 0.49325975;
+	-6.27334603 -0.00034359 0.00021048 7.27300243 0.99895048 0.99944593 0.49325986;
+	-6.27334612 -0.00034355 0.00021045 7.27300256 0.99895060 0.99944599 0.49325980;
+	-6.27334621 -0.00034352 0.00021043 7.27300269 0.99895072 0.99944605 0.49325999;
+	-6.27334630 -0.00034348 0.00021041 7.27300282 0.99895083 0.99944611 0.49326005;
+	-6.27334639 -0.00034344 0.00021038 7.27300295 0.99895095 0.99944618 0.49325989;
+	-6.27334648 -0.00034340 0.00021036 7.27300308 0.99895106 0.99944624 0.49325982;
+	-6.27334657 -0.00034336 0.00021034 7.27300321 0.99895118 0.99944630 0.49326004;
+	-6.27334666 -0.00034333 0.00021031 7.27300334 0.99895130 0.99944636 0.49325987;
+	-6.27334676 -0.00034329 0.00021029 7.27300347 0.99895141 0.99944642 0.49326003;
+	-6.27334685 -0.00034325 0.00021027 7.27300360 0.99895153 0.99944648 0.49325986;
+	-6.27334694 -0.00034321 0.00021024 7.27300373 0.99895165 0.99944654 0.49326013;
+	-6.27334703 -0.00034317 0.00021022 7.27300386 0.99895176 0.99944661 0.49326001;
+	-6.27334712 -0.00034313 0.00021020 7.27300399 0.99895188 0.99944667 0.49325997;
+	-6.27334721 -0.00034310 0.00021017 7.27300411 0.99895199 0.99944673 0.49325982;
+	-6.27334730 -0.00034306 0.00021015 7.27300424 0.99895211 0.99944679 0.49326004;
+	-6.27334739 -0.00034302 0.00021013 7.27300437 0.99895223 0.99944685 0.49326000;
+	-6.27334748 -0.00034298 0.00021010 7.27300450 0.99895234 0.99944691 0.49326002;
+	-6.27334758 -0.00034294 0.00021008 7.27300463 0.99895246 0.99944697 0.49326019;
+	-6.27334767 -0.00034291 0.00021006 7.27300476 0.99895258 0.99944704 0.49326022;
+	-6.27334776 -0.00034287 0.00021003 7.27300489 0.99895269 0.99944710 0.49325991;
+	-6.27334785 -0.00034283 0.00021001 7.27300502 0.99895281 0.99944716 0.49326017;
+	-6.27334794 -0.00034279 0.00020999 7.27300515 0.99895292 0.99944722 0.49326012;
+	-6.27334803 -0.00034276 0.00020996 7.27300527 0.99895304 0.99944728 0.49326022;
+	-6.27334812 -0.00034272 0.00020994 7.27300540 0.99895316 0.99944734 0.49326001;
+	-6.27334821 -0.00034268 0.00020992 7.27300553 0.99895327 0.99944740 0.49326024;
+	-6.27334830 -0.00034264 0.00020989 7.27300566 0.99895339 0.99944746 0.49326021;
+	-6.27334839 -0.00034260 0.00020987 7.27300579 0.99895350 0.99944753 0.49326029;
+	-6.27334848 -0.00034257 0.00020985 7.27300592 0.99895362 0.99944759 0.49326016;
+	-6.27334857 -0.00034253 0.00020983 7.27300605 0.99895373 0.99944765 0.49326016;
+	-6.27334867 -0.00034249 0.00020980 7.27300618 0.99895385 0.99944771 0.49326045;
+	-6.27334876 -0.00034245 0.00020978 7.27300630 0.99895397 0.99944777 0.49326011;
+	-6.27334885 -0.00034241 0.00020976 7.27300643 0.99895408 0.99944783 0.49326023;
+	-6.27334894 -0.00034238 0.00020973 7.27300656 0.99895420 0.99944789 0.49326007;
+	-6.27334903 -0.00034234 0.00020971 7.27300669 0.99895431 0.99944795 0.49326021;
+	-6.27334912 -0.00034230 0.00020969 7.27300682 0.99895443 0.99944801 0.49326027;
+	-6.27334921 -0.00034226 0.00020966 7.27300695 0.99895454 0.99944807 0.49326040;
+	-6.27334930 -0.00034222 0.00020964 7.27300708 0.99895466 0.99944814 0.49326032;
+	-6.27334939 -0.00034219 0.00020962 7.27300720 0.99895478 0.99944820 0.49326028;
+	-6.27334948 -0.00034215 0.00020959 7.27300733 0.99895489 0.99944826 0.49326022;
+	-6.27334957 -0.00034211 0.00020957 7.27300746 0.99895501 0.99944832 0.49326044;
+	-6.27334966 -0.00034207 0.00020955 7.27300759 0.99895512 0.99944838 0.49326036;
+	-6.27334975 -0.00034204 0.00020952 7.27300772 0.99895524 0.99944844 0.49326052;
+	-6.27334984 -0.00034200 0.00020950 7.27300785 0.99895535 0.99944850 0.49326050;
+	-6.27334993 -0.00034196 0.00020948 7.27300797 0.99895547 0.99944856 0.49326047;
+	-6.27335002 -0.00034192 0.00020945 7.27300810 0.99895558 0.99944862 0.49326049;
+	-6.27335011 -0.00034188 0.00020943 7.27300823 0.99895570 0.99944868 0.49326038;
+	-6.27335021 -0.00034185 0.00020941 7.27300836 0.99895582 0.99944875 0.49326054;
+	-6.27335030 -0.00034181 0.00020938 7.27300849 0.99895593 0.99944881 0.49326041;
+	-6.27335039 -0.00034177 0.00020936 7.27300861 0.99895605 0.99944887 0.49326059;
+	-6.27335048 -0.00034173 0.00020934 7.27300874 0.99895616 0.99944893 0.49326058;
+	-6.27335057 -0.00034170 0.00020932 7.27300887 0.99895628 0.99944899 0.49326043;
+	-6.27335066 -0.00034166 0.00020929 7.27300900 0.99895639 0.99944905 0.49326062;
+	-6.27335075 -0.00034162 0.00020927 7.27300913 0.99895651 0.99944911 0.49326067;
+	-6.27335084 -0.00034158 0.00020925 7.27300925 0.99895662 0.99944917 0.49326078;
+	-6.27335093 -0.00034154 0.00020922 7.27300938 0.99895674 0.99944923 0.49326065;
+	-6.27335102 -0.00034151 0.00020920 7.27300951 0.99895685 0.99944929 0.49326059;
+	-6.27335111 -0.00034147 0.00020918 7.27300964 0.99895697 0.99944935 0.49326055;
+	-6.27335120 -0.00034143 0.00020915 7.27300977 0.99895708 0.99944941 0.49326066;
+	-6.27335129 -0.00034139 0.00020913 7.27300989 0.99895720 0.99944948 0.49326077;
+	-6.27335138 -0.00034136 0.00020911 7.27301002 0.99895731 0.99944954 0.49326066;
+	-6.27335147 -0.00034132 0.00020908 7.27301015 0.99895743 0.99944960 0.49326075;
+	-6.27335156 -0.00034128 0.00020906 7.27301028 0.99895754 0.99944966 0.49326055;
+	-6.27335165 -0.00034124 0.00020904 7.27301040 0.99895766 0.99944972 0.49326086;
+	-6.27335174 -0.00034121 0.00020902 7.27301053 0.99895777 0.99944978 0.49326055;
+	-6.27335183 -0.00034117 0.00020899 7.27301066 0.99895789 0.99944984 0.49326069;
+	-6.27335192 -0.00034113 0.00020897 7.27301079 0.99895800 0.99944990 0.49326076;
+	-6.27335201 -0.00034109 0.00020895 7.27301092 0.99895812 0.99944996 0.49326064;
+	-6.27335210 -0.00034106 0.00020892 7.27301104 0.99895823 0.99945002 0.49326064;
+	-6.27335219 -0.00034102 0.00020890 7.27301117 0.99895835 0.99945008 0.49326079;
+	-6.27335228 -0.00034098 0.00020888 7.27301130 0.99895846 0.99945014 0.49326094;
+	-6.27335237 -0.00034094 0.00020885 7.27301143 0.99895858 0.99945020 0.49326073;
+	-6.27335246 -0.00034091 0.00020883 7.27301155 0.99895869 0.99945026 0.49326067;
+	-6.27335255 -0.00034087 0.00020881 7.27301168 0.99895881 0.99945032 0.49326096;
+	-6.27335264 -0.00034083 0.00020878 7.27301181 0.99895892 0.99945038 0.49326074;
+	-6.27335273 -0.00034079 0.00020876 7.27301194 0.99895903 0.99945045 0.49326072;
+	-6.27335282 -0.00034076 0.00020874 7.27301206 0.99895915 0.99945051 0.49326097;
+	-6.27335291 -0.00034072 0.00020872 7.27301219 0.99895926 0.99945057 0.49326095;
+	-6.27335300 -0.00034068 0.00020869 7.27301232 0.99895938 0.99945063 0.49326083;
+	-6.27335309 -0.00034064 0.00020867 7.27301244 0.99895949 0.99945069 0.49326094;
+	-6.27335318 -0.00034061 0.00020865 7.27301257 0.99895961 0.99945075 0.49326071;
+	-6.27335327 -0.00034057 0.00020862 7.27301270 0.99895972 0.99945081 0.49326094;
+	-6.27335336 -0.00034053 0.00020860 7.27301283 0.99895984 0.99945087 0.49326119;
+	-6.27335345 -0.00034049 0.00020858 7.27301295 0.99895995 0.99945093 0.49326102;
+	-6.27335354 -0.00034046 0.00020856 7.27301308 0.99896007 0.99945099 0.49326095;
+	-6.27335363 -0.00034042 0.00020853 7.27301321 0.99896018 0.99945105 0.49326111;
+	-6.27335372 -0.00034038 0.00020851 7.27301333 0.99896029 0.99945111 0.49326093;
+	-6.27335380 -0.00034034 0.00020849 7.27301346 0.99896041 0.99945117 0.49326092;
+	-6.27335389 -0.00034031 0.00020846 7.27301359 0.99896052 0.99945123 0.49326086;
+	-6.27335398 -0.00034027 0.00020844 7.27301372 0.99896064 0.99945129 0.49326111;
+	-6.27335407 -0.00034023 0.00020842 7.27301384 0.99896075 0.99945135 0.49326085;
+	-6.27335416 -0.00034019 0.00020839 7.27301397 0.99896087 0.99945141 0.49326107;
+	-6.27335425 -0.00034016 0.00020837 7.27301410 0.99896098 0.99945147 0.49326138;
+	-6.27335434 -0.00034012 0.00020835 7.27301422 0.99896109 0.99945153 0.49326107;
+	-6.27335443 -0.00034008 0.00020833 7.27301435 0.99896121 0.99945159 0.49326110;
+	-6.27335452 -0.00034004 0.00020830 7.27301448 0.99896132 0.99945165 0.49326107;
+	-6.27335461 -0.00034001 0.00020828 7.27301460 0.99896144 0.99945171 0.49326111;
+	-6.27335470 -0.00033997 0.00020826 7.27301473 0.99896155 0.99945177 0.49326094;
+	-6.27335479 -0.00033993 0.00020823 7.27301486 0.99896166 0.99945183 0.49326116;
+	-6.27335488 -0.00033989 0.00020821 7.27301498 0.99896178 0.99945189 0.49326119;
+	-6.27335497 -0.00033986 0.00020819 7.27301511 0.99896189 0.99945195 0.49326130;
+	-6.27335506 -0.00033982 0.00020817 7.27301524 0.99896201 0.99945201 0.49326119;
+	-6.27335515 -0.00033978 0.00020814 7.27301536 0.99896212 0.99945207 0.49326105;
+	-6.27335524 -0.00033975 0.00020812 7.27301549 0.99896223 0.99945213 0.49326119;
+	-6.27335533 -0.00033971 0.00020810 7.27301562 0.99896235 0.99945219 0.49326118;
+	-6.27335541 -0.00033967 0.00020807 7.27301574 0.99896246 0.99945225 0.49326126;
+	-6.27335550 -0.00033963 0.00020805 7.27301587 0.99896258 0.99945231 0.49326104;
+	-6.27335559 -0.00033960 0.00020803 7.27301600 0.99896269 0.99945237 0.49326124;
+	-6.27335568 -0.00033956 0.00020801 7.27301612 0.99896280 0.99945243 0.49326121;
+	-6.27335577 -0.00033952 0.00020798 7.27301625 0.99896292 0.99945249 0.49326126;
+	-6.27335586 -0.00033948 0.00020796 7.27301638 0.99896303 0.99945255 0.49326146;
+	-6.27335595 -0.00033945 0.00020794 7.27301650 0.99896315 0.99945261 0.49326123;
+	-6.27335604 -0.00033941 0.00020791 7.27301663 0.99896326 0.99945267 0.49326137;
+	-6.27335613 -0.00033937 0.00020789 7.27301675 0.99896337 0.99945274 0.49326124;
+	-6.27335622 -0.00033934 0.00020787 7.27301688 0.99896349 0.99945279 0.49326144;
+	-6.27335631 -0.00033930 0.00020785 7.27301701 0.99896360 0.99945286 0.49326118;
+	-6.27335639 -0.00033926 0.00020782 7.27301713 0.99896371 0.99945291 0.49326131;
+	-6.27335648 -0.00033922 0.00020780 7.27301726 0.99896383 0.99945297 0.49326131;
+	-6.27335657 -0.00033919 0.00020778 7.27301739 0.99896394 0.99945303 0.49326137;
+	-6.27335666 -0.00033915 0.00020776 7.27301751 0.99896405 0.99945309 0.49326160;
+	-6.27335675 -0.00033911 0.00020773 7.27301764 0.99896417 0.99945315 0.49326160;
+	-6.27335684 -0.00033908 0.00020771 7.27301776 0.99896428 0.99945321 0.49326123;
+	-6.27335693 -0.00033904 0.00020769 7.27301789 0.99896439 0.99945327 0.49326161;
+	-6.27335702 -0.00033900 0.00020766 7.27301802 0.99896451 0.99945333 0.49326152;
+	-6.27335711 -0.00033896 0.00020764 7.27301814 0.99896462 0.99945339 0.49326143;
+	-6.27335720 -0.00033893 0.00020762 7.27301827 0.99896473 0.99945345 0.49326145;
+	-6.27335728 -0.00033889 0.00020760 7.27301839 0.99896485 0.99945351 0.49326173;
+	-6.27335737 -0.00033885 0.00020757 7.27301852 0.99896496 0.99945357 0.49326144;
+	-6.27335746 -0.00033882 0.00020755 7.27301865 0.99896507 0.99945363 0.49326151;
+	-6.27335755 -0.00033878 0.00020753 7.27301877 0.99896519 0.99945369 0.49326137;
+	-6.27335764 -0.00033874 0.00020751 7.27301890 0.99896530 0.99945375 0.49326159;
+	-6.27335773 -0.00033870 0.00020748 7.27301902 0.99896541 0.99945381 0.49326170;
+	-6.27335782 -0.00033867 0.00020746 7.27301915 0.99896553 0.99945387 0.49326167;
+	-6.27335791 -0.00033863 0.00020744 7.27301927 0.99896564 0.99945393 0.49326166;
+	-6.27335799 -0.00033859 0.00020741 7.27301940 0.99896575 0.99945399 0.49326169;
+	-6.27335808 -0.00033856 0.00020739 7.27301953 0.99896587 0.99945405 0.49326162;
+	-6.27335817 -0.00033852 0.00020737 7.27301965 0.99896598 0.99945411 0.49326183;
+	-6.27335826 -0.00033848 0.00020735 7.27301978 0.99896609 0.99945417 0.49326173;
+	-6.27335835 -0.00033845 0.00020732 7.27301990 0.99896621 0.99945423 0.49326171;
+	-6.27335844 -0.00033841 0.00020730 7.27302003 0.99896632 0.99945429 0.49326166;
+	-6.27335853 -0.00033837 0.00020728 7.27302015 0.99896643 0.99945435 0.49326165;
+	-6.27335861 -0.00033833 0.00020726 7.27302028 0.99896655 0.99945441 0.49326181;
+	-6.27335870 -0.00033830 0.00020723 7.27302041 0.99896666 0.99945447 0.49326156;
+	-6.27335879 -0.00033826 0.00020721 7.27302053 0.99896677 0.99945453 0.49326193;
+	-6.27335888 -0.00033822 0.00020719 7.27302066 0.99896688 0.99945459 0.49326181;
+	-6.27335897 -0.00033819 0.00020716 7.27302078 0.99896700 0.99945465 0.49326163;
+	-6.27335906 -0.00033815 0.00020714 7.27302091 0.99896711 0.99945471 0.49326173;
+	-6.27335915 -0.00033811 0.00020712 7.27302103 0.99896722 0.99945477 0.49326188;
+	-6.27335923 -0.00033808 0.00020710 7.27302116 0.99896734 0.99945483 0.49326193;
+	-6.27335932 -0.00033804 0.00020707 7.27302128 0.99896745 0.99945489 0.49326203;
+	-6.27335941 -0.00033800 0.00020705 7.27302141 0.99896756 0.99945495 0.49326181;
+	-6.27335950 -0.00033797 0.00020703 7.27302153 0.99896767 0.99945501 0.49326178;
+	-6.27335959 -0.00033793 0.00020701 7.27302166 0.99896779 0.99945507 0.49326183;
+	-6.27335968 -0.00033789 0.00020698 7.27302178 0.99896790 0.99945512 0.49326183;
+	-6.27335976 -0.00033785 0.00020696 7.27302191 0.99896801 0.99945518 0.49326190;
+	-6.27335985 -0.00033782 0.00020694 7.27302203 0.99896813 0.99945524 0.49326204;
+	-6.27335994 -0.00033778 0.00020692 7.27302216 0.99896824 0.99945530 0.49326197;
+	-6.27336003 -0.00033774 0.00020689 7.27302228 0.99896835 0.99945536 0.49326200;
+	-6.27336012 -0.00033771 0.00020687 7.27302241 0.99896846 0.99945542 0.49326187;
+	-6.27336021 -0.00033767 0.00020685 7.27302253 0.99896858 0.99945548 0.49326214;
+	-6.27336029 -0.00033763 0.00020683 7.27302266 0.99896869 0.99945554 0.49326210;
+	-6.27336038 -0.00033760 0.00020680 7.27302278 0.99896880 0.99945560 0.49326210;
+	-6.27336047 -0.00033756 0.00020678 7.27302291 0.99896891 0.99945566 0.49326201;
+	-6.27336056 -0.00033752 0.00020676 7.27302303 0.99896903 0.99945572 0.49326223;
+	-6.27336065 -0.00033749 0.00020674 7.27302316 0.99896914 0.99945578 0.49326214;
+	-6.27336073 -0.00033745 0.00020671 7.27302328 0.99896925 0.99945584 0.49326184;
+	-6.27336082 -0.00033741 0.00020669 7.27302341 0.99896936 0.99945590 0.49326190;
+	-6.27336091 -0.00033738 0.00020667 7.27302353 0.99896948 0.99945596 0.49326192;
+	-6.27336100 -0.00033734 0.00020665 7.27302366 0.99896959 0.99945602 0.49326215;
+	-6.27336109 -0.00033730 0.00020662 7.27302378 0.99896970 0.99945607 0.49326198;
+	-6.27336117 -0.00033727 0.00020660 7.27302391 0.99896981 0.99945613 0.49326211;
+	-6.27336126 -0.00033723 0.00020658 7.27302403 0.99896992 0.99945619 0.49326202;
+	-6.27336135 -0.00033719 0.00020656 7.27302416 0.99897004 0.99945625 0.49326208;
+	-6.27336144 -0.00033716 0.00020653 7.27302428 0.99897015 0.99945631 0.49326216;
+	-6.27336153 -0.00033712 0.00020651 7.27302441 0.99897026 0.99945637 0.49326199;
+	-6.27336161 -0.00033708 0.00020649 7.27302453 0.99897037 0.99945643 0.49326218;
+	-6.27336170 -0.00033705 0.00020647 7.27302466 0.99897049 0.99945649 0.49326214;
+	-6.27336179 -0.00033701 0.00020644 7.27302478 0.99897060 0.99945655 0.49326240;
+	-6.27336188 -0.00033697 0.00020642 7.27302491 0.99897071 0.99945661 0.49326199;
+	-6.27336197 -0.00033694 0.00020640 7.27302503 0.99897082 0.99945667 0.49326203;
+	-6.27336205 -0.00033690 0.00020638 7.27302515 0.99897093 0.99945673 0.49326224;
+	-6.27336214 -0.00033686 0.00020635 7.27302528 0.99897105 0.99945679 0.49326220;
+	-6.27336223 -0.00033683 0.00020633 7.27302540 0.99897116 0.99945684 0.49326222;
+	-6.27336232 -0.00033679 0.00020631 7.27302553 0.99897127 0.99945690 0.49326242;
+	-6.27336240 -0.00033675 0.00020629 7.27302565 0.99897138 0.99945696 0.49326213;
+	-6.27336249 -0.00033672 0.00020626 7.27302578 0.99897149 0.99945702 0.49326219;
+	-6.27336258 -0.00033668 0.00020624 7.27302590 0.99897161 0.99945708 0.49326219;
+	-6.27336267 -0.00033664 0.00020622 7.27302603 0.99897172 0.99945714 0.49326250;
+	-6.27336275 -0.00033661 0.00020620 7.27302615 0.99897183 0.99945720 0.49326244;
+	-6.27336284 -0.00033657 0.00020617 7.27302627 0.99897194 0.99945726 0.49326221;
+	-6.27336293 -0.00033653 0.00020615 7.27302640 0.99897205 0.99945732 0.49326264;
+	-6.27336302 -0.00033650 0.00020613 7.27302652 0.99897216 0.99945738 0.49326232;
+	-6.27336311 -0.00033646 0.00020611 7.27302665 0.99897228 0.99945743 0.49326230;
+	-6.27336319 -0.00033642 0.00020608 7.27302677 0.99897239 0.99945749 0.49326227;
+	-6.27336328 -0.00033639 0.00020606 7.27302689 0.99897250 0.99945755 0.49326245;
+	-6.27336337 -0.00033635 0.00020604 7.27302702 0.99897261 0.99945761 0.49326242;
+	-6.27336346 -0.00033631 0.00020602 7.27302714 0.99897272 0.99945767 0.49326246;
+	-6.27336354 -0.00033628 0.00020599 7.27302727 0.99897283 0.99945773 0.49326241;
+	-6.27336363 -0.00033624 0.00020597 7.27302739 0.99897295 0.99945779 0.49326240;
+	-6.27336372 -0.00033620 0.00020595 7.27302751 0.99897306 0.99945785 0.49326249;
+	-6.27336381 -0.00033617 0.00020593 7.27302764 0.99897317 0.99945791 0.49326270;
+	-6.27336389 -0.00033613 0.00020590 7.27302776 0.99897328 0.99945797 0.49326235;
+	-6.27336398 -0.00033609 0.00020588 7.27302789 0.99897339 0.99945802 0.49326239;
+	-6.27336407 -0.00033606 0.00020586 7.27302801 0.99897350 0.99945808 0.49326248;
+	-6.27336415 -0.00033602 0.00020584 7.27302813 0.99897362 0.99945814 0.49326264;
+	-6.27336424 -0.00033598 0.00020582 7.27302826 0.99897373 0.99945820 0.49326263;
+	-6.27336433 -0.00033595 0.00020579 7.27302838 0.99897384 0.99945826 0.49326243;
+	-6.27336442 -0.00033591 0.00020577 7.27302851 0.99897395 0.99945832 0.49326267;
+	-6.27336450 -0.00033587 0.00020575 7.27302863 0.99897406 0.99945838 0.49326234;
+	-6.27336459 -0.00033584 0.00020573 7.27302875 0.99897417 0.99945844 0.49326251;
+	-6.27336468 -0.00033580 0.00020570 7.27302888 0.99897428 0.99945849 0.49326259;
+	-6.27336477 -0.00033577 0.00020568 7.27302900 0.99897439 0.99945855 0.49326266;
+	-6.27336485 -0.00033573 0.00020566 7.27302912 0.99897451 0.99945861 0.49326257;
+	-6.27336494 -0.00033569 0.00020564 7.27302925 0.99897462 0.99945867 0.49326257;
+	-6.27336503 -0.00033566 0.00020561 7.27302937 0.99897473 0.99945873 0.49326264;
+	-6.27336511 -0.00033562 0.00020559 7.27302949 0.99897484 0.99945879 0.49326274;
+	-6.27336520 -0.00033558 0.00020557 7.27302962 0.99897495 0.99945885 0.49326286;
+	-6.27336529 -0.00033555 0.00020555 7.27302974 0.99897506 0.99945891 0.49326289;
+	-6.27336538 -0.00033551 0.00020553 7.27302986 0.99897517 0.99945896 0.49326274;
+	-6.27336546 -0.00033547 0.00020550 7.27302999 0.99897528 0.99945902 0.49326267;
+	-6.27336555 -0.00033544 0.00020548 7.27303011 0.99897540 0.99945908 0.49326282;
+	-6.27336564 -0.00033540 0.00020546 7.27303023 0.99897551 0.99945914 0.49326268;
+	-6.27336572 -0.00033537 0.00020544 7.27303036 0.99897562 0.99945920 0.49326305;
+	-6.27336581 -0.00033533 0.00020541 7.27303048 0.99897573 0.99945926 0.49326276;
+	-6.27336590 -0.00033529 0.00020539 7.27303060 0.99897584 0.99945932 0.49326281;
+	-6.27336598 -0.00033526 0.00020537 7.27303073 0.99897595 0.99945937 0.49326294;
+	-6.27336607 -0.00033522 0.00020535 7.27303085 0.99897606 0.99945943 0.49326286;
+	-6.27336616 -0.00033518 0.00020532 7.27303097 0.99897617 0.99945949 0.49326281;
+	-6.27336625 -0.00033515 0.00020530 7.27303110 0.99897628 0.99945955 0.49326286;
+	-6.27336633 -0.00033511 0.00020528 7.27303122 0.99897639 0.99945961 0.49326297;
+	-6.27336642 -0.00033508 0.00020526 7.27303134 0.99897650 0.99945967 0.49326279;
+	-6.27336651 -0.00033504 0.00020524 7.27303147 0.99897662 0.99945973 0.49326311;
+	-6.27336659 -0.00033500 0.00020521 7.27303159 0.99897673 0.99945978 0.49326289;
+	-6.27336668 -0.00033497 0.00020519 7.27303171 0.99897684 0.99945984 0.49326305;
+	-6.27336677 -0.00033493 0.00020517 7.27303184 0.99897695 0.99945990 0.49326297;
+	-6.27336685 -0.00033489 0.00020515 7.27303196 0.99897706 0.99945996 0.49326277;
+	-6.27336694 -0.00033486 0.00020512 7.27303208 0.99897717 0.99946002 0.49326308;
+	-6.27336703 -0.00033482 0.00020510 7.27303221 0.99897728 0.99946008 0.49326289;
+	-6.27336711 -0.00033479 0.00020508 7.27303233 0.99897739 0.99946013 0.49326298;
+	-6.27336720 -0.00033475 0.00020506 7.27303245 0.99897750 0.99946019 0.49326300;
+	-6.27336729 -0.00033471 0.00020504 7.27303257 0.99897761 0.99946025 0.49326304;
+	-6.27336737 -0.00033468 0.00020501 7.27303270 0.99897772 0.99946031 0.49326311;
+	-6.27336746 -0.00033464 0.00020499 7.27303282 0.99897783 0.99946037 0.49326309;
+	-6.27336755 -0.00033460 0.00020497 7.27303294 0.99897794 0.99946043 0.49326303;
+	-6.27336763 -0.00033457 0.00020495 7.27303306 0.99897805 0.99946048 0.49326308;
+	-6.27336772 -0.00033453 0.00020493 7.27303319 0.99897816 0.99946054 0.49326287;
+	-6.27336781 -0.00033450 0.00020490 7.27303331 0.99897827 0.99946060 0.49326314;
+	-6.27336789 -0.00033446 0.00020488 7.27303343 0.99897839 0.99946066 0.49326307;
+	-6.27336798 -0.00033442 0.00020486 7.27303356 0.99897850 0.99946072 0.49326307;
+	-6.27336807 -0.00033439 0.00020484 7.27303368 0.99897861 0.99946078 0.49326322;
+	-6.27336815 -0.00033435 0.00020481 7.27303380 0.99897872 0.99946083 0.49326311;
+	-6.27336824 -0.00033432 0.00020479 7.27303392 0.99897883 0.99946089 0.49326322;
+	-6.27336833 -0.00033428 0.00020477 7.27303405 0.99897894 0.99946095 0.49326339;
+	-6.27336841 -0.00033424 0.00020475 7.27303417 0.99897905 0.99946101 0.49326319;
+	-6.27336850 -0.00033421 0.00020473 7.27303429 0.99897916 0.99946107 0.49326315;
+	-6.27336858 -0.00033417 0.00020470 7.27303441 0.99897927 0.99946113 0.49326326;
+	-6.27336867 -0.00033413 0.00020468 7.27303454 0.99897938 0.99946118 0.49326320;
+	-6.27336876 -0.00033410 0.00020466 7.27303466 0.99897949 0.99946124 0.49326335;
+	-6.27336884 -0.00033406 0.00020464 7.27303478 0.99897960 0.99946130 0.49326321;
+	-6.27336893 -0.00033403 0.00020462 7.27303490 0.99897971 0.99946136 0.49326341;
+	-6.27336902 -0.00033399 0.00020459 7.27303503 0.99897982 0.99946142 0.49326319;
+	-6.27336910 -0.00033395 0.00020457 7.27303515 0.99897993 0.99946147 0.49326349;
+	-6.27336919 -0.00033392 0.00020455 7.27303527 0.99898004 0.99946153 0.49326330;
+	-6.27336927 -0.00033388 0.00020453 7.27303539 0.99898015 0.99946159 0.49326316;
+	-6.27336936 -0.00033385 0.00020451 7.27303551 0.99898026 0.99946165 0.49326319;
+	-6.27336945 -0.00033381 0.00020448 7.27303564 0.99898037 0.99946171 0.49326337;
+	-6.27336953 -0.00033377 0.00020446 7.27303576 0.99898048 0.99946176 0.49326350;
+	-6.27336962 -0.00033374 0.00020444 7.27303588 0.99898059 0.99946182 0.49326333;
+	-6.27336971 -0.00033370 0.00020442 7.27303600 0.99898070 0.99946188 0.49326343;
+	-6.27336979 -0.00033367 0.00020439 7.27303613 0.99898081 0.99946194 0.49326342;
+	-6.27336988 -0.00033363 0.00020437 7.27303625 0.99898092 0.99946200 0.49326348;
+	-6.27336996 -0.00033359 0.00020435 7.27303637 0.99898103 0.99946205 0.49326358;
+	-6.27337005 -0.00033356 0.00020433 7.27303649 0.99898114 0.99946211 0.49326344;
+	-6.27337014 -0.00033352 0.00020431 7.27303661 0.99898125 0.99946217 0.49326333;
+	-6.27337022 -0.00033349 0.00020428 7.27303674 0.99898136 0.99946223 0.49326344;
+	-6.27337031 -0.00033345 0.00020426 7.27303686 0.99898147 0.99946229 0.49326346;
+	-6.27337039 -0.00033342 0.00020424 7.27303698 0.99898158 0.99946234 0.49326354;
+	-6.27337048 -0.00033338 0.00020422 7.27303710 0.99898169 0.99946240 0.49326336;
+	-6.27337057 -0.00033334 0.00020420 7.27303722 0.99898180 0.99946246 0.49326349;
+	-6.27337065 -0.00033331 0.00020417 7.27303734 0.99898191 0.99946252 0.49326348;
+	-6.27337074 -0.00033327 0.00020415 7.27303747 0.99898202 0.99946258 0.49326342;
+	-6.27337082 -0.00033324 0.00020413 7.27303759 0.99898213 0.99946263 0.49326343;
+	-6.27337091 -0.00033320 0.00020411 7.27303771 0.99898224 0.99946269 0.49326362;
+	-6.27337100 -0.00033316 0.00020409 7.27303783 0.99898234 0.99946275 0.49326356;
+	-6.27337108 -0.00033313 0.00020406 7.27303795 0.99898245 0.99946281 0.49326362;
+	-6.27337117 -0.00033309 0.00020404 7.27303808 0.99898256 0.99946287 0.49326353;
+	-6.27337125 -0.00033306 0.00020402 7.27303820 0.99898267 0.99946292 0.49326384;
+	-6.27337134 -0.00033302 0.00020400 7.27303832 0.99898278 0.99946298 0.49326355;
+	-6.27337142 -0.00033298 0.00020398 7.27303844 0.99898289 0.99946304 0.49326361;
+	-6.27337151 -0.00033295 0.00020395 7.27303856 0.99898300 0.99946310 0.49326362;
+	-6.27337160 -0.00033291 0.00020393 7.27303868 0.99898311 0.99946315 0.49326349;
+	-6.27337168 -0.00033288 0.00020391 7.27303880 0.99898322 0.99946321 0.49326369;
+	-6.27337177 -0.00033284 0.00020389 7.27303893 0.99898333 0.99946327 0.49326369;
+	-6.27337185 -0.00033281 0.00020387 7.27303905 0.99898344 0.99946333 0.49326369;
+	-6.27337194 -0.00033277 0.00020385 7.27303917 0.99898355 0.99946338 0.49326367;
+	-6.27337202 -0.00033273 0.00020382 7.27303929 0.99898366 0.99946344 0.49326359;
+	-6.27337211 -0.00033270 0.00020380 7.27303941 0.99898377 0.99946350 0.49326376;
+	-6.27337220 -0.00033266 0.00020378 7.27303953 0.99898388 0.99946356 0.49326382;
+	-6.27337228 -0.00033263 0.00020376 7.27303965 0.99898399 0.99946362 0.49326384;
+	-6.27337237 -0.00033259 0.00020374 7.27303978 0.99898409 0.99946367 0.49326379;
+	-6.27337245 -0.00033256 0.00020371 7.27303990 0.99898420 0.99946373 0.49326389;
+	-6.27337254 -0.00033252 0.00020369 7.27304002 0.99898431 0.99946379 0.49326390;
+	-6.27337262 -0.00033248 0.00020367 7.27304014 0.99898442 0.99946385 0.49326379;
+	-6.27337271 -0.00033245 0.00020365 7.27304026 0.99898453 0.99946390 0.49326384;
+	-6.27337279 -0.00033241 0.00020363 7.27304038 0.99898464 0.99946396 0.49326381;
+	-6.27337288 -0.00033238 0.00020360 7.27304050 0.99898475 0.99946402 0.49326372;
+	-6.27337297 -0.00033234 0.00020358 7.27304062 0.99898486 0.99946408 0.49326377;
+	-6.27337305 -0.00033231 0.00020356 7.27304075 0.99898497 0.99946413 0.49326406;
+	-6.27337314 -0.00033227 0.00020354 7.27304087 0.99898508 0.99946419 0.49326380;
+	-6.27337322 -0.00033223 0.00020352 7.27304099 0.99898519 0.99946425 0.49326407;
+	-6.27337331 -0.00033220 0.00020350 7.27304111 0.99898529 0.99946431 0.49326377;
+	-6.27337339 -0.00033216 0.00020347 7.27304123 0.99898540 0.99946436 0.49326399;
+	-6.27337348 -0.00033213 0.00020345 7.27304135 0.99898551 0.99946442 0.49326392;
+	-6.27337356 -0.00033209 0.00020343 7.27304147 0.99898562 0.99946448 0.49326402;
+	-6.27337365 -0.00033206 0.00020341 7.27304159 0.99898573 0.99946454 0.49326407;
+	-6.27337373 -0.00033202 0.00020339 7.27304171 0.99898584 0.99946459 0.49326397;
+	-6.27337382 -0.00033198 0.00020336 7.27304183 0.99898595 0.99946465 0.49326388;
+	-6.27337390 -0.00033195 0.00020334 7.27304196 0.99898606 0.99946471 0.49326400;
+	-6.27337399 -0.00033191 0.00020332 7.27304208 0.99898616 0.99946477 0.49326405;
+	-6.27337407 -0.00033188 0.00020330 7.27304220 0.99898627 0.99946482 0.49326405;
+	-6.27337416 -0.00033184 0.00020328 7.27304232 0.99898638 0.99946488 0.49326395;
+	-6.27337425 -0.00033181 0.00020326 7.27304244 0.99898649 0.99946494 0.49326406;
+	-6.27337433 -0.00033177 0.00020323 7.27304256 0.99898660 0.99946500 0.49326412;
+	-6.27337442 -0.00033174 0.00020321 7.27304268 0.99898671 0.99946505 0.49326418;
+	-6.27337450 -0.00033170 0.00020319 7.27304280 0.99898682 0.99946511 0.49326405;
+	-6.27337459 -0.00033166 0.00020317 7.27304292 0.99898693 0.99946517 0.49326394;
+	-6.27337467 -0.00033163 0.00020315 7.27304304 0.99898703 0.99946522 0.49326407;
+	-6.27337476 -0.00033159 0.00020312 7.27304316 0.99898714 0.99946528 0.49326381;
+	-6.27337484 -0.00033156 0.00020310 7.27304328 0.99898725 0.99946534 0.49326400;
+	-6.27337493 -0.00033152 0.00020308 7.27304340 0.99898736 0.99946540 0.49326414;
+	-6.27337501 -0.00033149 0.00020306 7.27304352 0.99898747 0.99946545 0.49326426;
+	-6.27337510 -0.00033145 0.00020304 7.27304364 0.99898758 0.99946551 0.49326422;
+	-6.27337518 -0.00033142 0.00020302 7.27304376 0.99898768 0.99946557 0.49326412;
+	-6.27337527 -0.00033138 0.00020299 7.27304389 0.99898779 0.99946563 0.49326410;
+	-6.27337535 -0.00033135 0.00020297 7.27304401 0.99898790 0.99946568 0.49326415;
+	-6.27337544 -0.00033131 0.00020295 7.27304413 0.99898801 0.99946574 0.49326422;
+	-6.27337552 -0.00033127 0.00020293 7.27304425 0.99898812 0.99946580 0.49326416;
+	-6.27337561 -0.00033124 0.00020291 7.27304437 0.99898823 0.99946585 0.49326449;
+	-6.27337569 -0.00033120 0.00020289 7.27304449 0.99898833 0.99946591 0.49326425;
+	-6.27337578 -0.00033117 0.00020286 7.27304461 0.99898844 0.99946597 0.49326435;
+	-6.27337586 -0.00033113 0.00020284 7.27304473 0.99898855 0.99946603 0.49326445;
+	-6.27337594 -0.00033110 0.00020282 7.27304485 0.99898866 0.99946608 0.49326455;
+	-6.27337603 -0.00033106 0.00020280 7.27304497 0.99898877 0.99946614 0.49326433;
+	-6.27337611 -0.00033103 0.00020278 7.27304509 0.99898888 0.99946620 0.49326418;
+	-6.27337620 -0.00033099 0.00020275 7.27304521 0.99898898 0.99946625 0.49326429;
+	-6.27337628 -0.00033096 0.00020273 7.27304533 0.99898909 0.99946631 0.49326433;
+	-6.27337637 -0.00033092 0.00020271 7.27304545 0.99898920 0.99946637 0.49326438;
+	-6.27337645 -0.00033088 0.00020269 7.27304557 0.99898931 0.99946643 0.49326440;
+	-6.27337654 -0.00033085 0.00020267 7.27304569 0.99898942 0.99946648 0.49326448;
+	-6.27337662 -0.00033081 0.00020265 7.27304581 0.99898952 0.99946654 0.49326440;
+	-6.27337671 -0.00033078 0.00020262 7.27304593 0.99898963 0.99946660 0.49326441;
+	-6.27337679 -0.00033074 0.00020260 7.27304605 0.99898974 0.99946665 0.49326439;
+	-6.27337688 -0.00033071 0.00020258 7.27304617 0.99898985 0.99946671 0.49326444;
+	-6.27337696 -0.00033067 0.00020256 7.27304629 0.99898996 0.99946677 0.49326437;
+	-6.27337705 -0.00033064 0.00020254 7.27304641 0.99899006 0.99946682 0.49326463;
+	-6.27337713 -0.00033060 0.00020252 7.27304653 0.99899017 0.99946688 0.49326433;
+	-6.27337721 -0.00033057 0.00020250 7.27304665 0.99899028 0.99946694 0.49326452;
+	-6.27337730 -0.00033053 0.00020247 7.27304677 0.99899039 0.99946700 0.49326464;
+	-6.27337738 -0.00033050 0.00020245 7.27304689 0.99899050 0.99946705 0.49326462;
+	-6.27337747 -0.00033046 0.00020243 7.27304701 0.99899060 0.99946711 0.49326446;
+	-6.27337755 -0.00033043 0.00020241 7.27304713 0.99899071 0.99946717 0.49326448;
+	-6.27337764 -0.00033039 0.00020239 7.27304725 0.99899082 0.99946722 0.49326479;
+	-6.27337772 -0.00033035 0.00020237 7.27304737 0.99899093 0.99946728 0.49326445;
+	-6.27337781 -0.00033032 0.00020234 7.27304749 0.99899103 0.99946734 0.49326446;
+	-6.27337789 -0.00033028 0.00020232 7.27304761 0.99899114 0.99946739 0.49326446;
+	-6.27337797 -0.00033025 0.00020230 7.27304773 0.99899125 0.99946745 0.49326456;
+	-6.27337806 -0.00033021 0.00020228 7.27304785 0.99899136 0.99946751 0.49326462;
+	-6.27337814 -0.00033018 0.00020226 7.27304796 0.99899146 0.99946756 0.49326466;
+	-6.27337823 -0.00033014 0.00020224 7.27304808 0.99899157 0.99946762 0.49326469;
+	-6.27337831 -0.00033011 0.00020221 7.27304820 0.99899168 0.99946768 0.49326455;
+	-6.27337840 -0.00033007 0.00020219 7.27304832 0.99899179 0.99946773 0.49326445;
+	-6.27337848 -0.00033004 0.00020217 7.27304844 0.99899190 0.99946779 0.49326466;
+	-6.27337856 -0.00033000 0.00020215 7.27304856 0.99899200 0.99946785 0.49326467;
+	-6.27337865 -0.00032997 0.00020213 7.27304868 0.99899211 0.99946790 0.49326472;
+	-6.27337873 -0.00032993 0.00020211 7.27304880 0.99899222 0.99946796 0.49326465;
+	-6.27337882 -0.00032990 0.00020208 7.27304892 0.99899233 0.99946802 0.49326487;
+	-6.27337890 -0.00032986 0.00020206 7.27304904 0.99899243 0.99946807 0.49326453;
+	-6.27337899 -0.00032983 0.00020204 7.27304916 0.99899254 0.99946813 0.49326462;
+	-6.27337907 -0.00032979 0.00020202 7.27304928 0.99899265 0.99946819 0.49326466;
+	-6.27337915 -0.00032976 0.00020200 7.27304940 0.99899275 0.99946824 0.49326470;
+	-6.27337924 -0.00032972 0.00020198 7.27304952 0.99899286 0.99946830 0.49326485;
+	-6.27337932 -0.00032969 0.00020196 7.27304964 0.99899297 0.99946836 0.49326493;
+	-6.27337941 -0.00032965 0.00020193 7.27304976 0.99899308 0.99946841 0.49326472;
+	-6.27337949 -0.00032962 0.00020191 7.27304987 0.99899318 0.99946847 0.49326466;
+	-6.27337957 -0.00032958 0.00020189 7.27304999 0.99899329 0.99946853 0.49326475;
+	-6.27337966 -0.00032955 0.00020187 7.27305011 0.99899340 0.99946858 0.49326474;
+	-6.27337974 -0.00032951 0.00020185 7.27305023 0.99899351 0.99946864 0.49326494;
+	-6.27337983 -0.00032948 0.00020183 7.27305035 0.99899361 0.99946870 0.49326475;
+	-6.27337991 -0.00032944 0.00020181 7.27305047 0.99899372 0.99946875 0.49326504;
+	-6.27337999 -0.00032941 0.00020178 7.27305059 0.99899383 0.99946881 0.49326510;
+	-6.27338008 -0.00032937 0.00020176 7.27305071 0.99899393 0.99946887 0.49326506;
+	-6.27338016 -0.00032934 0.00020174 7.27305083 0.99899404 0.99946892 0.49326491;
+	-6.27338025 -0.00032930 0.00020172 7.27305095 0.99899415 0.99946898 0.49326495;
+	-6.27338033 -0.00032927 0.00020170 7.27305106 0.99899425 0.99946904 0.49326488;
+	-6.27338041 -0.00032923 0.00020168 7.27305118 0.99899436 0.99946909 0.49326492;
+	-6.27338050 -0.00032920 0.00020165 7.27305130 0.99899447 0.99946915 0.49326492;
+	-6.27338058 -0.00032916 0.00020163 7.27305142 0.99899458 0.99946921 0.49326493;
+	-6.27338067 -0.00032913 0.00020161 7.27305154 0.99899468 0.99946926 0.49326498;
+	-6.27338075 -0.00032909 0.00020159 7.27305166 0.99899479 0.99946932 0.49326509;
+	-6.27338083 -0.00032906 0.00020157 7.27305178 0.99899490 0.99946938 0.49326511;
+	-6.27338092 -0.00032902 0.00020155 7.27305190 0.99899500 0.99946943 0.49326491;
+	-6.27338100 -0.00032899 0.00020153 7.27305201 0.99899511 0.99946949 0.49326497;
+	-6.27338108 -0.00032895 0.00020150 7.27305213 0.99899522 0.99946954 0.49326517;
+	-6.27338117 -0.00032892 0.00020148 7.27305225 0.99899532 0.99946960 0.49326501;
+	-6.27338125 -0.00032888 0.00020146 7.27305237 0.99899543 0.99946966 0.49326506;
+	-6.27338134 -0.00032885 0.00020144 7.27305249 0.99899554 0.99946971 0.49326507;
+	-6.27338142 -0.00032881 0.00020142 7.27305261 0.99899564 0.99946977 0.49326497;
+	-6.27338150 -0.00032878 0.00020140 7.27305273 0.99899575 0.99946983 0.49326508;
+	-6.27338159 -0.00032874 0.00020138 7.27305284 0.99899586 0.99946988 0.49326522;
+	-6.27338167 -0.00032871 0.00020135 7.27305296 0.99899596 0.99946994 0.49326525;
+	-6.27338175 -0.00032867 0.00020133 7.27305308 0.99899607 0.99946999 0.49326527;
+	-6.27338184 -0.00032864 0.00020131 7.27305320 0.99899618 0.99947005 0.49326512;
+	-6.27338192 -0.00032860 0.00020129 7.27305332 0.99899628 0.99947011 0.49326544;
+	-6.27338200 -0.00032857 0.00020127 7.27305344 0.99899639 0.99947016 0.49326511;
+	-6.27338209 -0.00032853 0.00020125 7.27305356 0.99899650 0.99947022 0.49326525;
+	-6.27338217 -0.00032850 0.00020123 7.27305367 0.99899660 0.99947028 0.49326517;
+	-6.27338225 -0.00032846 0.00020121 7.27305379 0.99899671 0.99947033 0.49326515;
+	-6.27338234 -0.00032843 0.00020118 7.27305391 0.99899682 0.99947039 0.49326512;
+	-6.27338242 -0.00032839 0.00020116 7.27305403 0.99899692 0.99947045 0.49326510;
+	-6.27338250 -0.00032836 0.00020114 7.27305415 0.99899703 0.99947050 0.49326538;
+	-6.27338259 -0.00032832 0.00020112 7.27305427 0.99899714 0.99947056 0.49326526;
+	-6.27338267 -0.00032829 0.00020110 7.27305438 0.99899724 0.99947061 0.49326555;
+	-6.27338275 -0.00032825 0.00020108 7.27305450 0.99899735 0.99947067 0.49326559;
+	-6.27338284 -0.00032822 0.00020106 7.27305462 0.99899745 0.99947073 0.49326528;
+	-6.27338292 -0.00032818 0.00020103 7.27305474 0.99899756 0.99947078 0.49326542;
+	-6.27338300 -0.00032815 0.00020101 7.27305486 0.99899767 0.99947084 0.49326519;
+	-6.27338309 -0.00032811 0.00020099 7.27305497 0.99899777 0.99947089 0.49326536;
+	-6.27338317 -0.00032808 0.00020097 7.27305509 0.99899788 0.99947095 0.49326533;
+	-6.27338325 -0.00032804 0.00020095 7.27305521 0.99899799 0.99947101 0.49326540;
+	-6.27338334 -0.00032801 0.00020093 7.27305533 0.99899809 0.99947106 0.49326552;
+	-6.27338342 -0.00032797 0.00020091 7.27305545 0.99899820 0.99947112 0.49326543;
+	-6.27338350 -0.00032794 0.00020089 7.27305556 0.99899830 0.99947117 0.49326548;
+	-6.27338359 -0.00032791 0.00020086 7.27305568 0.99899841 0.99947123 0.49326555;
+	-6.27338367 -0.00032787 0.00020084 7.27305580 0.99899852 0.99947129 0.49326550;
+	-6.27338375 -0.00032784 0.00020082 7.27305592 0.99899862 0.99947134 0.49326539;
+	-6.27338384 -0.00032780 0.00020080 7.27305604 0.99899873 0.99947140 0.49326537;
+	-6.27338392 -0.00032777 0.00020078 7.27305615 0.99899884 0.99947145 0.49326540;
+	-6.27338400 -0.00032773 0.00020076 7.27305627 0.99899894 0.99947151 0.49326552;
+	-6.27338409 -0.00032770 0.00020074 7.27305639 0.99899905 0.99947157 0.49326544;
+	-6.27338417 -0.00032766 0.00020072 7.27305651 0.99899915 0.99947162 0.49326541;
+	-6.27338425 -0.00032763 0.00020069 7.27305662 0.99899926 0.99947168 0.49326544;
+	-6.27338433 -0.00032759 0.00020067 7.27305674 0.99899937 0.99947173 0.49326555;
+	-6.27338442 -0.00032756 0.00020065 7.27305686 0.99899947 0.99947179 0.49326592;
+	-6.27338450 -0.00032752 0.00020063 7.27305698 0.99899958 0.99947185 0.49326555;
+	-6.27338458 -0.00032749 0.00020061 7.27305709 0.99899968 0.99947190 0.49326556;
+	-6.27338467 -0.00032745 0.00020059 7.27305721 0.99899979 0.99947196 0.49326577;
+	-6.27338475 -0.00032742 0.00020057 7.27305733 0.99899989 0.99947201 0.49326572;
+	-6.27338483 -0.00032739 0.00020055 7.27305745 0.99900000 0.99947207 0.49326564;
+	-6.27338492 -0.00032735 0.00020052 7.27305756 0.99900011 0.99947213 0.49326574;
+	-6.27338500 -0.00032732 0.00020050 7.27305768 0.99900021 0.99947218 0.49326570;
+	-6.27338508 -0.00032728 0.00020048 7.27305780 0.99900032 0.99947224 0.49326585;
+	-6.27338516 -0.00032725 0.00020046 7.27305792 0.99900042 0.99947229 0.49326561;
+	-6.27338525 -0.00032721 0.00020044 7.27305804 0.99900053 0.99947235 0.49326554;
+	-6.27338533 -0.00032718 0.00020042 7.27305815 0.99900063 0.99947240 0.49326565;
+	-6.27338541 -0.00032714 0.00020040 7.27305827 0.99900074 0.99947246 0.49326560;
+	-6.27338550 -0.00032711 0.00020038 7.27305839 0.99900085 0.99947252 0.49326561;
+	-6.27338558 -0.00032707 0.00020035 7.27305850 0.99900095 0.99947257 0.49326588;
+	-6.27338566 -0.00032704 0.00020033 7.27305862 0.99900106 0.99947263 0.49326567;
+	-6.27338574 -0.00032700 0.00020031 7.27305874 0.99900116 0.99947268 0.49326573;
+	-6.27338583 -0.00032697 0.00020029 7.27305886 0.99900127 0.99947274 0.49326588;
+	-6.27338591 -0.00032694 0.00020027 7.27305897 0.99900137 0.99947279 0.49326587;
+	-6.27338599 -0.00032690 0.00020025 7.27305909 0.99900148 0.99947285 0.49326591;
+	-6.27338607 -0.00032687 0.00020023 7.27305921 0.99900158 0.99947291 0.49326568;
+	-6.27338616 -0.00032683 0.00020021 7.27305932 0.99900169 0.99947296 0.49326586;
+	-6.27338624 -0.00032680 0.00020019 7.27305944 0.99900180 0.99947302 0.49326595;
+	-6.27338632 -0.00032676 0.00020016 7.27305956 0.99900190 0.99947307 0.49326594;
+	-6.27338640 -0.00032673 0.00020014 7.27305968 0.99900201 0.99947313 0.49326576;
+	-6.27338649 -0.00032669 0.00020012 7.27305979 0.99900211 0.99947318 0.49326600;
+	-6.27338657 -0.00032666 0.00020010 7.27305991 0.99900222 0.99947324 0.49326567;
+	-6.27338665 -0.00032663 0.00020008 7.27306003 0.99900232 0.99947330 0.49326591;
+	-6.27338674 -0.00032659 0.00020006 7.27306014 0.99900243 0.99947335 0.49326584;
+	-6.27338682 -0.00032656 0.00020004 7.27306026 0.99900253 0.99947341 0.49326591;
+	-6.27338690 -0.00032652 0.00020002 7.27306038 0.99900264 0.99947346 0.49326598;
+	-6.27338698 -0.00032649 0.00020000 7.27306050 0.99900274 0.99947352 0.49326605;
+	-6.27338706 -0.00032645 0.00019997 7.27306061 0.99900285 0.99947357 0.49326584;
+	-6.27338715 -0.00032642 0.00019995 7.27306073 0.99900295 0.99947363 0.49326610;
+	-6.27338723 -0.00032638 0.00019993 7.27306085 0.99900306 0.99947368 0.49326584;
+	-6.27338731 -0.00032635 0.00019991 7.27306096 0.99900316 0.99947374 0.49326595;
+	-6.27338739 -0.00032632 0.00019989 7.27306108 0.99900327 0.99947379 0.49326574;
+	-6.27338748 -0.00032628 0.00019987 7.27306120 0.99900337 0.99947385 0.49326593;
+	-6.27338756 -0.00032625 0.00019985 7.27306131 0.99900348 0.99947391 0.49326617;
+	-6.27338764 -0.00032621 0.00019983 7.27306143 0.99900358 0.99947396 0.49326608;
+	-6.27338772 -0.00032618 0.00019981 7.27306155 0.99900369 0.99947402 0.49326601;
+	-6.27338781 -0.00032614 0.00019978 7.27306166 0.99900379 0.99947407 0.49326595;
+	-6.27338789 -0.00032611 0.00019976 7.27306178 0.99900390 0.99947413 0.49326615;
+	-6.27338797 -0.00032607 0.00019974 7.27306190 0.99900400 0.99947418 0.49326594;
+	-6.27338805 -0.00032604 0.00019972 7.27306201 0.99900411 0.99947424 0.49326623;
+	-6.27338814 -0.00032601 0.00019970 7.27306213 0.99900421 0.99947429 0.49326628;
+	-6.27338822 -0.00032597 0.00019968 7.27306225 0.99900432 0.99947435 0.49326618;
+	-6.27338830 -0.00032594 0.00019966 7.27306236 0.99900442 0.99947440 0.49326621;
+	-6.27338838 -0.00032590 0.00019964 7.27306248 0.99900453 0.99947446 0.49326598;
+	-6.27338846 -0.00032587 0.00019962 7.27306260 0.99900463 0.99947452 0.49326615;
+	-6.27338855 -0.00032583 0.00019960 7.27306271 0.99900474 0.99947457 0.49326647;
+	-6.27338863 -0.00032580 0.00019957 7.27306283 0.99900484 0.99947463 0.49326621;
+	-6.27338871 -0.00032577 0.00019955 7.27306294 0.99900495 0.99947468 0.49326643;
+	-6.27338879 -0.00032573 0.00019953 7.27306306 0.99900505 0.99947474 0.49326629;
+	-6.27338887 -0.00032570 0.00019951 7.27306318 0.99900516 0.99947479 0.49326635;
+	-6.27338896 -0.00032566 0.00019949 7.27306329 0.99900526 0.99947485 0.49326632;
+	-6.27338904 -0.00032563 0.00019947 7.27306341 0.99900537 0.99947490 0.49326626;
+	-6.27338912 -0.00032559 0.00019945 7.27306353 0.99900547 0.99947496 0.49326639;
+	-6.27338920 -0.00032556 0.00019943 7.27306364 0.99900558 0.99947501 0.49326627;
+	-6.27338928 -0.00032553 0.00019941 7.27306376 0.99900568 0.99947507 0.49326645;
+	-6.27338937 -0.00032549 0.00019939 7.27306387 0.99900578 0.99947512 0.49326623;
+	-6.27338945 -0.00032546 0.00019936 7.27306399 0.99900589 0.99947518 0.49326607;
+	-6.27338953 -0.00032542 0.00019934 7.27306411 0.99900599 0.99947523 0.49326641;
+	-6.27338961 -0.00032539 0.00019932 7.27306422 0.99900610 0.99947529 0.49326644;
+	-6.27338969 -0.00032536 0.00019930 7.27306434 0.99900620 0.99947534 0.49326635;
+	-6.27338978 -0.00032532 0.00019928 7.27306446 0.99900631 0.99947540 0.49326617;
+	-6.27338986 -0.00032529 0.00019926 7.27306457 0.99900641 0.99947545 0.49326647;
+	-6.27338994 -0.00032525 0.00019924 7.27306469 0.99900652 0.99947551 0.49326638;
+	-6.27339002 -0.00032522 0.00019922 7.27306480 0.99900662 0.99947556 0.49326625;
+	-6.27339010 -0.00032518 0.00019920 7.27306492 0.99900673 0.99947562 0.49326654;
+	-6.27339019 -0.00032515 0.00019918 7.27306504 0.99900683 0.99947567 0.49326643;
+	-6.27339027 -0.00032512 0.00019915 7.27306515 0.99900693 0.99947573 0.49326639;
+	-6.27339035 -0.00032508 0.00019913 7.27306527 0.99900704 0.99947578 0.49326643;
+	-6.27339043 -0.00032505 0.00019911 7.27306538 0.99900714 0.99947584 0.49326613;
+	-6.27339051 -0.00032501 0.00019909 7.27306550 0.99900725 0.99947589 0.49326635;
+	-6.27339059 -0.00032498 0.00019907 7.27306561 0.99900735 0.99947595 0.49326654;
+	-6.27339068 -0.00032495 0.00019905 7.27306573 0.99900746 0.99947600 0.49326649;
+	-6.27339076 -0.00032491 0.00019903 7.27306585 0.99900756 0.99947606 0.49326645;
+	-6.27339084 -0.00032488 0.00019901 7.27306596 0.99900766 0.99947611 0.49326635;
+	-6.27339092 -0.00032484 0.00019899 7.27306608 0.99900777 0.99947617 0.49326646;
+	-6.27339100 -0.00032481 0.00019897 7.27306619 0.99900787 0.99947622 0.49326660;
+	-6.27339108 -0.00032477 0.00019895 7.27306631 0.99900798 0.99947628 0.49326653;
+	-6.27339117 -0.00032474 0.00019892 7.27306642 0.99900808 0.99947633 0.49326655;
+	-6.27339125 -0.00032471 0.00019890 7.27306654 0.99900818 0.99947639 0.49326642;
+	-6.27339133 -0.00032467 0.00019888 7.27306666 0.99900829 0.99947644 0.49326648;
+	-6.27339141 -0.00032464 0.00019886 7.27306677 0.99900839 0.99947650 0.49326679;
+	-6.27339149 -0.00032460 0.00019884 7.27306689 0.99900850 0.99947655 0.49326686;
+	-6.27339157 -0.00032457 0.00019882 7.27306700 0.99900860 0.99947661 0.49326656;
+	-6.27339165 -0.00032454 0.00019880 7.27306712 0.99900870 0.99947666 0.49326662;
+	-6.27339174 -0.00032450 0.00019878 7.27306723 0.99900881 0.99947672 0.49326679;
+	-6.27339182 -0.00032447 0.00019876 7.27306735 0.99900891 0.99947677 0.49326673;
+	-6.27339190 -0.00032443 0.00019874 7.27306746 0.99900902 0.99947683 0.49326675;
+	-6.27339198 -0.00032440 0.00019872 7.27306758 0.99900912 0.99947688 0.49326682;
+	-6.27339206 -0.00032437 0.00019870 7.27306770 0.99900922 0.99947694 0.49326647;
+	-6.27339214 -0.00032433 0.00019867 7.27306781 0.99900933 0.99947699 0.49326653;
+	-6.27339222 -0.00032430 0.00019865 7.27306793 0.99900943 0.99947705 0.49326669;
+	-6.27339231 -0.00032426 0.00019863 7.27306804 0.99900954 0.99947710 0.49326657;
+	-6.27339239 -0.00032423 0.00019861 7.27306816 0.99900964 0.99947716 0.49326679;
+	-6.27339247 -0.00032420 0.00019859 7.27306827 0.99900974 0.99947721 0.49326690;
+	-6.27339255 -0.00032416 0.00019857 7.27306839 0.99900985 0.99947727 0.49326680;
+	-6.27339263 -0.00032413 0.00019855 7.27306850 0.99900995 0.99947732 0.49326670;
+	-6.27339271 -0.00032409 0.00019853 7.27306862 0.99901005 0.99947738 0.49326690;
+	-6.27339279 -0.00032406 0.00019851 7.27306873 0.99901016 0.99947743 0.49326682;
+	-6.27339287 -0.00032403 0.00019849 7.27306885 0.99901026 0.99947749 0.49326670;
+	-6.27339296 -0.00032399 0.00019847 7.27306896 0.99901036 0.99947754 0.49326689;
+	-6.27339304 -0.00032396 0.00019845 7.27306908 0.99901047 0.99947760 0.49326683;
+	-6.27339312 -0.00032393 0.00019843 7.27306919 0.99901057 0.99947765 0.49326682;
+	-6.27339320 -0.00032389 0.00019840 7.27306931 0.99901068 0.99947770 0.49326694;
+	-6.27339328 -0.00032386 0.00019838 7.27306942 0.99901078 0.99947776 0.49326682;
+	-6.27339336 -0.00032382 0.00019836 7.27306954 0.99901088 0.99947781 0.49326696;
+	-6.27339344 -0.00032379 0.00019834 7.27306965 0.99901099 0.99947787 0.49326703;
+	-6.27339352 -0.00032376 0.00019832 7.27306977 0.99901109 0.99947792 0.49326705;
+	-6.27339360 -0.00032372 0.00019830 7.27306988 0.99901119 0.99947798 0.49326683;
+	-6.27339369 -0.00032369 0.00019828 7.27307000 0.99901130 0.99947803 0.49326692;
+	-6.27339377 -0.00032365 0.00019826 7.27307011 0.99901140 0.99947809 0.49326694;
+	-6.27339385 -0.00032362 0.00019824 7.27307023 0.99901150 0.99947814 0.49326688;
+	-6.27339393 -0.00032359 0.00019822 7.27307034 0.99901161 0.99947820 0.49326687;
+	-6.27339401 -0.00032355 0.00019820 7.27307046 0.99901171 0.99947825 0.49326697;
+	-6.27339409 -0.00032352 0.00019818 7.27307057 0.99901181 0.99947830 0.49326717;
+	-6.27339417 -0.00032349 0.00019816 7.27307069 0.99901192 0.99947836 0.49326712;
+	-6.27339425 -0.00032345 0.00019813 7.27307080 0.99901202 0.99947841 0.49326703;
+	-6.27339433 -0.00032342 0.00019811 7.27307092 0.99901212 0.99947847 0.49326706;
+	-6.27339441 -0.00032338 0.00019809 7.27307103 0.99901223 0.99947852 0.49326716;
+	-6.27339450 -0.00032335 0.00019807 7.27307115 0.99901233 0.99947858 0.49326689;
+	-6.27339458 -0.00032332 0.00019805 7.27307126 0.99901243 0.99947863 0.49326699;
+	-6.27339466 -0.00032328 0.00019803 7.27307137 0.99901254 0.99947869 0.49326696;
+	-6.27339474 -0.00032325 0.00019801 7.27307149 0.99901264 0.99947874 0.49326718;
+	-6.27339482 -0.00032321 0.00019799 7.27307160 0.99901274 0.99947880 0.49326717;
+	-6.27339490 -0.00032318 0.00019797 7.27307172 0.99901285 0.99947885 0.49326705;
+	-6.27339498 -0.00032315 0.00019795 7.27307183 0.99901295 0.99947890 0.49326716;
+	-6.27339506 -0.00032311 0.00019793 7.27307195 0.99901305 0.99947896 0.49326730;
+	-6.27339514 -0.00032308 0.00019791 7.27307206 0.99901315 0.99947901 0.49326718;
+	-6.27339522 -0.00032305 0.00019789 7.27307218 0.99901326 0.99947907 0.49326722;
+	-6.27339530 -0.00032301 0.00019787 7.27307229 0.99901336 0.99947912 0.49326715;
+	-6.27339538 -0.00032298 0.00019785 7.27307241 0.99901346 0.99947918 0.49326728;
+	-6.27339546 -0.00032295 0.00019782 7.27307252 0.99901357 0.99947923 0.49326724;
+	-6.27339555 -0.00032291 0.00019780 7.27307263 0.99901367 0.99947928 0.49326701;
+	-6.27339563 -0.00032288 0.00019778 7.27307275 0.99901377 0.99947934 0.49326708;
+	-6.27339571 -0.00032284 0.00019776 7.27307286 0.99901388 0.99947939 0.49326726;
+	-6.27339579 -0.00032281 0.00019774 7.27307298 0.99901398 0.99947945 0.49326720;
+	-6.27339587 -0.00032278 0.00019772 7.27307309 0.99901408 0.99947950 0.49326714;
+	-6.27339595 -0.00032274 0.00019770 7.27307321 0.99901418 0.99947956 0.49326729;
+	-6.27339603 -0.00032271 0.00019768 7.27307332 0.99901429 0.99947961 0.49326744;
+	-6.27339611 -0.00032268 0.00019766 7.27307343 0.99901439 0.99947966 0.49326726;
+	-6.27339619 -0.00032264 0.00019764 7.27307355 0.99901449 0.99947972 0.49326746;
+	-6.27339627 -0.00032261 0.00019762 7.27307366 0.99901459 0.99947977 0.49326747;
+	-6.27339635 -0.00032258 0.00019760 7.27307378 0.99901470 0.99947983 0.49326746;
+	-6.27339643 -0.00032254 0.00019758 7.27307389 0.99901480 0.99947988 0.49326737;
+	-6.27339651 -0.00032251 0.00019756 7.27307400 0.99901490 0.99947994 0.49326725;
+	-6.27339659 -0.00032247 0.00019754 7.27307412 0.99901501 0.99947999 0.49326744;
+	-6.27339667 -0.00032244 0.00019752 7.27307423 0.99901511 0.99948004 0.49326734;
+	-6.27339675 -0.00032241 0.00019749 7.27307435 0.99901521 0.99948010 0.49326748;
+	-6.27339683 -0.00032237 0.00019747 7.27307446 0.99901531 0.99948015 0.49326735;
+	-6.27339691 -0.00032234 0.00019745 7.27307457 0.99901542 0.99948021 0.49326718;
+	-6.27339699 -0.00032231 0.00019743 7.27307469 0.99901552 0.99948026 0.49326726;
+	-6.27339708 -0.00032227 0.00019741 7.27307480 0.99901562 0.99948031 0.49326739;
+	-6.27339716 -0.00032224 0.00019739 7.27307492 0.99901572 0.99948037 0.49326736;
+	-6.27339724 -0.00032221 0.00019737 7.27307503 0.99901583 0.99948042 0.49326751;
+	-6.27339732 -0.00032217 0.00019735 7.27307514 0.99901593 0.99948048 0.49326746;
+	-6.27339740 -0.00032214 0.00019733 7.27307526 0.99901603 0.99948053 0.49326750;
+	-6.27339748 -0.00032210 0.00019731 7.27307537 0.99901613 0.99948059 0.49326720;
+	-6.27339756 -0.00032207 0.00019729 7.27307549 0.99901624 0.99948064 0.49326742;
+	-6.27339764 -0.00032204 0.00019727 7.27307560 0.99901634 0.99948069 0.49326770;
+	-6.27339772 -0.00032200 0.00019725 7.27307571 0.99901644 0.99948075 0.49326757;
+	-6.27339780 -0.00032197 0.00019723 7.27307583 0.99901654 0.99948080 0.49326750;
+	-6.27339788 -0.00032194 0.00019721 7.27307594 0.99901664 0.99948086 0.49326781;
+	-6.27339796 -0.00032190 0.00019719 7.27307605 0.99901675 0.99948091 0.49326776;
+	-6.27339804 -0.00032187 0.00019717 7.27307617 0.99901685 0.99948096 0.49326747;
+	-6.27339812 -0.00032184 0.00019715 7.27307628 0.99901695 0.99948102 0.49326778;
+	-6.27339820 -0.00032180 0.00019713 7.27307639 0.99901705 0.99948107 0.49326749;
+	-6.27339828 -0.00032177 0.00019710 7.27307651 0.99901716 0.99948113 0.49326751;
+	-6.27339836 -0.00032174 0.00019708 7.27307662 0.99901726 0.99948118 0.49326780;
+	-6.27339844 -0.00032170 0.00019706 7.27307674 0.99901736 0.99948123 0.49326747;
+	-6.27339852 -0.00032167 0.00019704 7.27307685 0.99901746 0.99948129 0.49326772;
+	-6.27339860 -0.00032164 0.00019702 7.27307696 0.99901756 0.99948134 0.49326768;
+	-6.27339868 -0.00032160 0.00019700 7.27307708 0.99901767 0.99948139 0.49326756;
+	-6.27339876 -0.00032157 0.00019698 7.27307719 0.99901777 0.99948145 0.49326753;
+	-6.27339884 -0.00032154 0.00019696 7.27307730 0.99901787 0.99948150 0.49326754;
+	-6.27339892 -0.00032150 0.00019694 7.27307742 0.99901797 0.99948156 0.49326763;
+	-6.27339900 -0.00032147 0.00019692 7.27307753 0.99901807 0.99948161 0.49326773;
+	-6.27339908 -0.00032144 0.00019690 7.27307764 0.99901818 0.99948166 0.49326760;
+	-6.27339916 -0.00032140 0.00019688 7.27307776 0.99901828 0.99948172 0.49326795;
+	-6.27339924 -0.00032137 0.00019686 7.27307787 0.99901838 0.99948177 0.49326781;
+	-6.27339932 -0.00032134 0.00019684 7.27307798 0.99901848 0.99948183 0.49326791;
+	-6.27339940 -0.00032130 0.00019682 7.27307810 0.99901858 0.99948188 0.49326782;
+	-6.27339948 -0.00032127 0.00019680 7.27307821 0.99901869 0.99948193 0.49326774;
+	-6.27339956 -0.00032124 0.00019678 7.27307832 0.99901879 0.99948199 0.49326801;
+	-6.27339964 -0.00032120 0.00019676 7.27307843 0.99901889 0.99948204 0.49326796;
+	-6.27339972 -0.00032117 0.00019674 7.27307855 0.99901899 0.99948209 0.49326796;
+	-6.27339980 -0.00032114 0.00019672 7.27307866 0.99901909 0.99948215 0.49326764;
+	-6.27339988 -0.00032110 0.00019670 7.27307877 0.99901920 0.99948220 0.49326786;
+	-6.27339996 -0.00032107 0.00019668 7.27307889 0.99901930 0.99948226 0.49326797;
+	-6.27340004 -0.00032104 0.00019665 7.27307900 0.99901940 0.99948231 0.49326772;
+	-6.27340012 -0.00032100 0.00019663 7.27307911 0.99901950 0.99948236 0.49326808;
+	-6.27340020 -0.00032097 0.00019661 7.27307923 0.99901960 0.99948242 0.49326793;
+	-6.27340028 -0.00032094 0.00019659 7.27307934 0.99901970 0.99948247 0.49326800;
+	-6.27340036 -0.00032090 0.00019657 7.27307945 0.99901981 0.99948252 0.49326818;
+	-6.27340043 -0.00032087 0.00019655 7.27307956 0.99901991 0.99948258 0.49326800;
+	-6.27340051 -0.00032084 0.00019653 7.27307968 0.99902001 0.99948263 0.49326833;
+	-6.27340059 -0.00032080 0.00019651 7.27307979 0.99902011 0.99948268 0.49326799;
+	-6.27340067 -0.00032077 0.00019649 7.27307990 0.99902021 0.99948274 0.49326805;
+	-6.27340075 -0.00032074 0.00019647 7.27308002 0.99902031 0.99948279 0.49326790;
+	-6.27340083 -0.00032070 0.00019645 7.27308013 0.99902042 0.99948285 0.49326822;
+	-6.27340091 -0.00032067 0.00019643 7.27308024 0.99902052 0.99948290 0.49326817;
+	-6.27340099 -0.00032064 0.00019641 7.27308035 0.99902062 0.99948295 0.49326820;
+	-6.27340107 -0.00032060 0.00019639 7.27308047 0.99902072 0.99948301 0.49326814;
+	-6.27340115 -0.00032057 0.00019637 7.27308058 0.99902082 0.99948306 0.49326794;
+	-6.27340123 -0.00032054 0.00019635 7.27308069 0.99902092 0.99948311 0.49326788;
+	-6.27340131 -0.00032050 0.00019633 7.27308081 0.99902102 0.99948317 0.49326824;
+	-6.27340139 -0.00032047 0.00019631 7.27308092 0.99902113 0.99948322 0.49326821;
+	-6.27340147 -0.00032044 0.00019629 7.27308103 0.99902123 0.99948327 0.49326804;
+	-6.27340155 -0.00032040 0.00019627 7.27308114 0.99902133 0.99948333 0.49326826;
+	-6.27340163 -0.00032037 0.00019625 7.27308126 0.99902143 0.99948338 0.49326837;
+	-6.27340171 -0.00032034 0.00019623 7.27308137 0.99902153 0.99948343 0.49326808;
+	-6.27340179 -0.00032031 0.00019621 7.27308148 0.99902163 0.99948349 0.49326814;
+	-6.27340187 -0.00032027 0.00019619 7.27308159 0.99902173 0.99948354 0.49326823;
+	-6.27340194 -0.00032024 0.00019617 7.27308171 0.99902183 0.99948359 0.49326820;
+	-6.27340202 -0.00032021 0.00019615 7.27308182 0.99902194 0.99948365 0.49326819;
+	-6.27340210 -0.00032017 0.00019613 7.27308193 0.99902204 0.99948370 0.49326828;
+	-6.27340218 -0.00032014 0.00019611 7.27308204 0.99902214 0.99948376 0.49326815;
+	-6.27340226 -0.00032011 0.00019608 7.27308216 0.99902224 0.99948381 0.49326833;
+	-6.27340234 -0.00032007 0.00019606 7.27308227 0.99902234 0.99948386 0.49326820;
+	-6.27340242 -0.00032004 0.00019604 7.27308238 0.99902244 0.99948392 0.49326839;
+	-6.27340250 -0.00032001 0.00019602 7.27308249 0.99902254 0.99948397 0.49326825;
+	-6.27340258 -0.00031997 0.00019600 7.27308261 0.99902264 0.99948402 0.49326820;
+	-6.27340266 -0.00031994 0.00019598 7.27308272 0.99902274 0.99948408 0.49326829;
+	-6.27340274 -0.00031991 0.00019596 7.27308283 0.99902285 0.99948413 0.49326838;
+	-6.27340282 -0.00031987 0.00019594 7.27308294 0.99902295 0.99948418 0.49326829;
+	-6.27340290 -0.00031984 0.00019592 7.27308305 0.99902305 0.99948424 0.49326812;
+	-6.27340297 -0.00031981 0.00019590 7.27308317 0.99902315 0.99948429 0.49326825;
+	-6.27340305 -0.00031978 0.00019588 7.27308328 0.99902325 0.99948434 0.49326844;
+	-6.27340313 -0.00031974 0.00019586 7.27308339 0.99902335 0.99948440 0.49326822;
+	-6.27340321 -0.00031971 0.00019584 7.27308350 0.99902345 0.99948445 0.49326848;
+	-6.27340329 -0.00031968 0.00019582 7.27308361 0.99902355 0.99948450 0.49326823;
+	-6.27340337 -0.00031964 0.00019580 7.27308373 0.99902365 0.99948455 0.49326831;
+	-6.27340345 -0.00031961 0.00019578 7.27308384 0.99902375 0.99948461 0.49326842;
+	-6.27340353 -0.00031958 0.00019576 7.27308395 0.99902385 0.99948466 0.49326833;
+	-6.27340361 -0.00031954 0.00019574 7.27308406 0.99902396 0.99948471 0.49326844;
+	-6.27340369 -0.00031951 0.00019572 7.27308417 0.99902406 0.99948477 0.49326841;
+	-6.27340377 -0.00031948 0.00019570 7.27308429 0.99902416 0.99948482 0.49326813;
+	-6.27340384 -0.00031945 0.00019568 7.27308440 0.99902426 0.99948487 0.49326861;
+	-6.27340392 -0.00031941 0.00019566 7.27308451 0.99902436 0.99948493 0.49326836;
+	-6.27340400 -0.00031938 0.00019564 7.27308462 0.99902446 0.99948498 0.49326869;
+	-6.27340408 -0.00031935 0.00019562 7.27308473 0.99902456 0.99948503 0.49326883;
+	-6.27340416 -0.00031931 0.00019560 7.27308485 0.99902466 0.99948509 0.49326857;
+	-6.27340424 -0.00031928 0.00019558 7.27308496 0.99902476 0.99948514 0.49326861;
+	-6.27340432 -0.00031925 0.00019556 7.27308507 0.99902486 0.99948519 0.49326841;
+	-6.27340440 -0.00031922 0.00019554 7.27308518 0.99902496 0.99948525 0.49326856;
+	-6.27340448 -0.00031918 0.00019552 7.27308529 0.99902506 0.99948530 0.49326867;
+	-6.27340455 -0.00031915 0.00019550 7.27308540 0.99902516 0.99948535 0.49326859;
+	-6.27340463 -0.00031912 0.00019548 7.27308552 0.99902526 0.99948541 0.49326854;
+	-6.27340471 -0.00031908 0.00019546 7.27308563 0.99902536 0.99948546 0.49326869;
+	-6.27340479 -0.00031905 0.00019544 7.27308574 0.99902546 0.99948551 0.49326853;
+	-6.27340487 -0.00031902 0.00019542 7.27308585 0.99902557 0.99948556 0.49326880;
+	-6.27340495 -0.00031899 0.00019540 7.27308596 0.99902567 0.99948562 0.49326872;
+	-6.27340503 -0.00031895 0.00019538 7.27308607 0.99902577 0.99948567 0.49326861;
+	-6.27340511 -0.00031892 0.00019536 7.27308619 0.99902587 0.99948572 0.49326878;
+	-6.27340518 -0.00031889 0.00019534 7.27308630 0.99902597 0.99948578 0.49326876;
+	-6.27340526 -0.00031885 0.00019532 7.27308641 0.99902607 0.99948583 0.49326873;
+	-6.27340534 -0.00031882 0.00019530 7.27308652 0.99902617 0.99948588 0.49326869;
+	-6.27340542 -0.00031879 0.00019528 7.27308663 0.99902627 0.99948594 0.49326868;
+	-6.27340550 -0.00031876 0.00019526 7.27308674 0.99902637 0.99948599 0.49326886;
+	-6.27340558 -0.00031872 0.00019524 7.27308685 0.99902647 0.99948604 0.49326868;
+	-6.27340566 -0.00031869 0.00019522 7.27308697 0.99902657 0.99948609 0.49326883;
+	-6.27340573 -0.00031866 0.00019520 7.27308708 0.99902667 0.99948615 0.49326876;
+	-6.27340581 -0.00031862 0.00019518 7.27308719 0.99902677 0.99948620 0.49326874;
+	-6.27340589 -0.00031859 0.00019516 7.27308730 0.99902687 0.99948625 0.49326882;
+	-6.27340597 -0.00031856 0.00019514 7.27308741 0.99902697 0.99948631 0.49326866;
+	-6.27340605 -0.00031853 0.00019512 7.27308752 0.99902707 0.99948636 0.49326860;
+	-6.27340613 -0.00031849 0.00019510 7.27308763 0.99902717 0.99948641 0.49326865;
+	-6.27340621 -0.00031846 0.00019508 7.27308775 0.99902727 0.99948646 0.49326872;
+	-6.27340628 -0.00031843 0.00019506 7.27308786 0.99902737 0.99948652 0.49326863;
+	-6.27340636 -0.00031839 0.00019504 7.27308797 0.99902747 0.99948657 0.49326869;
+	-6.27340644 -0.00031836 0.00019502 7.27308808 0.99902757 0.99948662 0.49326888;
+	-6.27340652 -0.00031833 0.00019500 7.27308819 0.99902767 0.99948668 0.49326895;
+	-6.27340660 -0.00031830 0.00019498 7.27308830 0.99902777 0.99948673 0.49326876;
+	-6.27340668 -0.00031826 0.00019496 7.27308841 0.99902787 0.99948678 0.49326889;
+	-6.27340675 -0.00031823 0.00019494 7.27308852 0.99902797 0.99948683 0.49326878;
+	-6.27340683 -0.00031820 0.00019492 7.27308863 0.99902807 0.99948689 0.49326887;
+	-6.27340691 -0.00031817 0.00019490 7.27308875 0.99902817 0.99948694 0.49326916;
+	-6.27340699 -0.00031813 0.00019488 7.27308886 0.99902827 0.99948699 0.49326908;
+	-6.27340707 -0.00031810 0.00019486 7.27308897 0.99902837 0.99948704 0.49326893;
+	-6.27340715 -0.00031807 0.00019484 7.27308908 0.99902847 0.99948710 0.49326890;
+	-6.27340722 -0.00031803 0.00019482 7.27308919 0.99902857 0.99948715 0.49326887;
+	-6.27340730 -0.00031800 0.00019480 7.27308930 0.99902867 0.99948720 0.49326878;
+	-6.27340738 -0.00031797 0.00019478 7.27308941 0.99902877 0.99948726 0.49326894;
+	-6.27340746 -0.00031794 0.00019476 7.27308952 0.99902887 0.99948731 0.49326894;
+	-6.27340754 -0.00031790 0.00019474 7.27308963 0.99902897 0.99948736 0.49326908;
+	-6.27340761 -0.00031787 0.00019472 7.27308974 0.99902907 0.99948741 0.49326876;
+	-6.27340769 -0.00031784 0.00019470 7.27308985 0.99902917 0.99948747 0.49326912;
+	-6.27340777 -0.00031781 0.00019468 7.27308996 0.99902927 0.99948752 0.49326904;
+	-6.27340785 -0.00031777 0.00019466 7.27309008 0.99902937 0.99948757 0.49326901;
+	-6.27340793 -0.00031774 0.00019464 7.27309019 0.99902947 0.99948762 0.49326930;
+	-6.27340801 -0.00031771 0.00019462 7.27309030 0.99902957 0.99948768 0.49326907;
+	-6.27340808 -0.00031768 0.00019460 7.27309041 0.99902967 0.99948773 0.49326924;
+	-6.27340816 -0.00031764 0.00019458 7.27309052 0.99902977 0.99948778 0.49326904;
+	-6.27340824 -0.00031761 0.00019456 7.27309063 0.99902987 0.99948783 0.49326893;
+	-6.27340832 -0.00031758 0.00019454 7.27309074 0.99902997 0.99948789 0.49326909;
+	-6.27340840 -0.00031755 0.00019452 7.27309085 0.99903006 0.99948794 0.49326930;
+	-6.27340847 -0.00031751 0.00019450 7.27309096 0.99903016 0.99948799 0.49326922;
+	-6.27340855 -0.00031748 0.00019448 7.27309107 0.99903026 0.99948804 0.49326913;
+	-6.27340863 -0.00031745 0.00019446 7.27309118 0.99903036 0.99948810 0.49326905;
+	-6.27340871 -0.00031742 0.00019444 7.27309129 0.99903046 0.99948815 0.49326923;
+	-6.27340879 -0.00031738 0.00019442 7.27309140 0.99903056 0.99948820 0.49326938;
+	-6.27340886 -0.00031735 0.00019440 7.27309151 0.99903066 0.99948825 0.49326909;
+	-6.27340894 -0.00031732 0.00019438 7.27309162 0.99903076 0.99948831 0.49326912;
+	-6.27340902 -0.00031728 0.00019436 7.27309173 0.99903086 0.99948836 0.49326920;
+	-6.27340910 -0.00031725 0.00019434 7.27309184 0.99903096 0.99948841 0.49326917;
+	-6.27340917 -0.00031722 0.00019432 7.27309196 0.99903106 0.99948846 0.49326921;
+	-6.27340925 -0.00031719 0.00019430 7.27309207 0.99903116 0.99948852 0.49326919;
+	-6.27340933 -0.00031715 0.00019428 7.27309218 0.99903126 0.99948857 0.49326928;
+	-6.27340941 -0.00031712 0.00019426 7.27309229 0.99903136 0.99948862 0.49326918;
+	-6.27340949 -0.00031709 0.00019424 7.27309240 0.99903146 0.99948867 0.49326958;
+	-6.27340956 -0.00031706 0.00019422 7.27309251 0.99903156 0.99948873 0.49326936;
+	-6.27340964 -0.00031702 0.00019420 7.27309262 0.99903165 0.99948878 0.49326927;
+	-6.27340972 -0.00031699 0.00019418 7.27309273 0.99903175 0.99948883 0.49326942;
+	-6.27340980 -0.00031696 0.00019416 7.27309284 0.99903185 0.99948888 0.49326912;
+	-6.27340987 -0.00031693 0.00019414 7.27309295 0.99903195 0.99948894 0.49326924;
+	-6.27340995 -0.00031690 0.00019412 7.27309306 0.99903205 0.99948899 0.49326951;
+	-6.27341003 -0.00031686 0.00019410 7.27309317 0.99903215 0.99948904 0.49326942;
+	-6.27341011 -0.00031683 0.00019408 7.27309328 0.99903225 0.99948909 0.49326925;
+	-6.27341019 -0.00031680 0.00019406 7.27309339 0.99903235 0.99948914 0.49326927;
+	-6.27341026 -0.00031677 0.00019404 7.27309350 0.99903245 0.99948920 0.49326936;
+	-6.27341034 -0.00031673 0.00019402 7.27309361 0.99903255 0.99948925 0.49326944;
+	-6.27341042 -0.00031670 0.00019400 7.27309372 0.99903265 0.99948930 0.49326949;
+	-6.27341050 -0.00031667 0.00019398 7.27309383 0.99903274 0.99948935 0.49326915;
+	-6.27341057 -0.00031664 0.00019396 7.27309394 0.99903284 0.99948941 0.49326929;
+	-6.27341065 -0.00031660 0.00019394 7.27309405 0.99903294 0.99948946 0.49326955;
+	-6.27341073 -0.00031657 0.00019392 7.27309416 0.99903304 0.99948951 0.49326921;
+	-6.27341081 -0.00031654 0.00019390 7.27309427 0.99903314 0.99948956 0.49326941;
+	-6.27341088 -0.00031651 0.00019388 7.27309438 0.99903324 0.99948961 0.49326954;
+	-6.27341096 -0.00031647 0.00019386 7.27309449 0.99903334 0.99948967 0.49326935;
+	-6.27341104 -0.00031644 0.00019384 7.27309460 0.99903344 0.99948972 0.49326969;
+	-6.27341112 -0.00031641 0.00019382 7.27309471 0.99903354 0.99948977 0.49326971;
+	-6.27341119 -0.00031638 0.00019380 7.27309482 0.99903363 0.99948982 0.49326945;
+	-6.27341127 -0.00031634 0.00019378 7.27309493 0.99903373 0.99948988 0.49326964;
+	-6.27341135 -0.00031631 0.00019376 7.27309504 0.99903383 0.99948993 0.49326955;
+	-6.27341143 -0.00031628 0.00019374 7.27309515 0.99903393 0.99948998 0.49326931;
+	-6.27341150 -0.00031625 0.00019372 7.27309526 0.99903403 0.99949003 0.49326939;
+	-6.27341158 -0.00031622 0.00019370 7.27309537 0.99903413 0.99949008 0.49326953;
+	-6.27341166 -0.00031618 0.00019368 7.27309547 0.99903423 0.99949014 0.49326974;
+	-6.27341173 -0.00031615 0.00019366 7.27309558 0.99903433 0.99949019 0.49326980;
+	-6.27341181 -0.00031612 0.00019364 7.27309569 0.99903442 0.99949024 0.49326965;
+	-6.27341189 -0.00031609 0.00019362 7.27309580 0.99903452 0.99949029 0.49326969;
+	-6.27341197 -0.00031605 0.00019360 7.27309591 0.99903462 0.99949034 0.49326954;
+	-6.27341204 -0.00031602 0.00019358 7.27309602 0.99903472 0.99949040 0.49326953;
+	-6.27341212 -0.00031599 0.00019356 7.27309613 0.99903482 0.99949045 0.49326986;
+	-6.27341220 -0.00031596 0.00019354 7.27309624 0.99903492 0.99949050 0.49326990;
+	-6.27341228 -0.00031592 0.00019352 7.27309635 0.99903502 0.99949055 0.49326950;
+	-6.27341235 -0.00031589 0.00019350 7.27309646 0.99903511 0.99949060 0.49326968;
+	-6.27341243 -0.00031586 0.00019348 7.27309657 0.99903521 0.99949066 0.49326946;
+	-6.27341251 -0.00031583 0.00019346 7.27309668 0.99903531 0.99949071 0.49326958;
+	-6.27341258 -0.00031580 0.00019344 7.27309679 0.99903541 0.99949076 0.49326990;
+	-6.27341266 -0.00031576 0.00019342 7.27309690 0.99903551 0.99949081 0.49326972;
+	-6.27341274 -0.00031573 0.00019340 7.27309701 0.99903561 0.99949086 0.49326980;
+	-6.27341282 -0.00031570 0.00019338 7.27309712 0.99903570 0.99949092 0.49327001;
+	-6.27341289 -0.00031567 0.00019336 7.27309723 0.99903580 0.99949097 0.49326985;
+	-6.27341297 -0.00031563 0.00019334 7.27309734 0.99903590 0.99949102 0.49326983;
+	-6.27341305 -0.00031560 0.00019333 7.27309744 0.99903600 0.99949107 0.49326985;
+	-6.27341312 -0.00031557 0.00019331 7.27309755 0.99903610 0.99949112 0.49327005;
+	-6.27341320 -0.00031554 0.00019329 7.27309766 0.99903620 0.99949118 0.49326985;
+	-6.27341328 -0.00031551 0.00019327 7.27309777 0.99903629 0.99949123 0.49326980;
+	-6.27341336 -0.00031547 0.00019325 7.27309788 0.99903639 0.99949128 0.49326990;
+	-6.27341343 -0.00031544 0.00019323 7.27309799 0.99903649 0.99949133 0.49326985;
+	-6.27341351 -0.00031541 0.00019321 7.27309810 0.99903659 0.99949138 0.49326999;
+	-6.27341359 -0.00031538 0.00019319 7.27309821 0.99903669 0.99949144 0.49326989;
+	-6.27341366 -0.00031535 0.00019317 7.27309832 0.99903679 0.99949149 0.49326987;
+	-6.27341374 -0.00031531 0.00019315 7.27309843 0.99903688 0.99949154 0.49327012;
+	-6.27341382 -0.00031528 0.00019313 7.27309854 0.99903698 0.99949159 0.49326994;
+	-6.27341389 -0.00031525 0.00019311 7.27309864 0.99903708 0.99949164 0.49327001;
+	-6.27341397 -0.00031522 0.00019309 7.27309875 0.99903718 0.99949169 0.49327008;
+	-6.27341405 -0.00031519 0.00019307 7.27309886 0.99903728 0.99949175 0.49327008;
+	-6.27341412 -0.00031515 0.00019305 7.27309897 0.99903737 0.99949180 0.49326970;
+	-6.27341420 -0.00031512 0.00019303 7.27309908 0.99903747 0.99949185 0.49326989;
+	-6.27341428 -0.00031509 0.00019301 7.27309919 0.99903757 0.99949190 0.49326992;
+	-6.27341435 -0.00031506 0.00019299 7.27309930 0.99903767 0.99949195 0.49327000;
+	-6.27341443 -0.00031502 0.00019297 7.27309941 0.99903777 0.99949200 0.49327006;
+	-6.27341451 -0.00031499 0.00019295 7.27309952 0.99903786 0.99949206 0.49327023;
+	-6.27341459 -0.00031496 0.00019293 7.27309962 0.99903796 0.99949211 0.49327002;
+	-6.27341466 -0.00031493 0.00019291 7.27309973 0.99903806 0.99949216 0.49327004;
+	-6.27341474 -0.00031490 0.00019289 7.27309984 0.99903816 0.99949221 0.49327010;
+	-6.27341482 -0.00031486 0.00019287 7.27309995 0.99903826 0.99949226 0.49327000;
+	-6.27341489 -0.00031483 0.00019285 7.27310006 0.99903835 0.99949231 0.49326994;
+	-6.27341497 -0.00031480 0.00019283 7.27310017 0.99903845 0.99949237 0.49327008;
+	-6.27341505 -0.00031477 0.00019281 7.27310028 0.99903855 0.99949242 0.49327002;
+	-6.27341512 -0.00031474 0.00019279 7.27310039 0.99903865 0.99949247 0.49327015;
+	-6.27341520 -0.00031470 0.00019277 7.27310049 0.99903874 0.99949252 0.49326998;
+	-6.27341528 -0.00031467 0.00019275 7.27310060 0.99903884 0.99949257 0.49327030;
+	-6.27341535 -0.00031464 0.00019274 7.27310071 0.99903894 0.99949262 0.49326995;
+	-6.27341543 -0.00031461 0.00019272 7.27310082 0.99903904 0.99949268 0.49327013;
+	-6.27341550 -0.00031458 0.00019270 7.27310093 0.99903914 0.99949273 0.49327030;
+	-6.27341558 -0.00031454 0.00019268 7.27310104 0.99903923 0.99949278 0.49327016;
+	-6.27341566 -0.00031451 0.00019266 7.27310115 0.99903933 0.99949283 0.49327003;
+	-6.27341573 -0.00031448 0.00019264 7.27310125 0.99903943 0.99949288 0.49327020;
+	-6.27341581 -0.00031445 0.00019262 7.27310136 0.99903953 0.99949293 0.49327016;
+	-6.27341589 -0.00031442 0.00019260 7.27310147 0.99903962 0.99949298 0.49327038;
+	-6.27341596 -0.00031438 0.00019258 7.27310158 0.99903972 0.99949304 0.49327020;
+	-6.27341604 -0.00031435 0.00019256 7.27310169 0.99903982 0.99949309 0.49326989;
+	-6.27341612 -0.00031432 0.00019254 7.27310180 0.99903992 0.99949314 0.49327033;
+	-6.27341619 -0.00031429 0.00019252 7.27310190 0.99904001 0.99949319 0.49327021;
+	-6.27341627 -0.00031426 0.00019250 7.27310201 0.99904011 0.99949324 0.49327047;
+	-6.27341635 -0.00031423 0.00019248 7.27310212 0.99904021 0.99949329 0.49327024;
+	-6.27341642 -0.00031419 0.00019246 7.27310223 0.99904031 0.99949335 0.49327034;
+	-6.27341650 -0.00031416 0.00019244 7.27310234 0.99904040 0.99949340 0.49327024;
+	-6.27341658 -0.00031413 0.00019242 7.27310245 0.99904050 0.99949345 0.49327049;
+	-6.27341665 -0.00031410 0.00019240 7.27310255 0.99904060 0.99949350 0.49327029;
+	-6.27341673 -0.00031407 0.00019238 7.27310266 0.99904070 0.99949355 0.49327027;
+	-6.27341680 -0.00031403 0.00019236 7.27310277 0.99904079 0.99949360 0.49327052;
+	-6.27341688 -0.00031400 0.00019234 7.27310288 0.99904089 0.99949365 0.49327062;
+	-6.27341696 -0.00031397 0.00019232 7.27310299 0.99904099 0.99949370 0.49327051;
+	-6.27341703 -0.00031394 0.00019231 7.27310309 0.99904108 0.99949376 0.49327035;
+	-6.27341711 -0.00031391 0.00019229 7.27310320 0.99904118 0.99949381 0.49327029;
+	-6.27341719 -0.00031387 0.00019227 7.27310331 0.99904128 0.99949386 0.49327040;
+	-6.27341726 -0.00031384 0.00019225 7.27310342 0.99904138 0.99949391 0.49327054;
+	-6.27341734 -0.00031381 0.00019223 7.27310353 0.99904147 0.99949396 0.49327057;
+	-6.27341741 -0.00031378 0.00019221 7.27310363 0.99904157 0.99949401 0.49327065;
+	-6.27341749 -0.00031375 0.00019219 7.27310374 0.99904167 0.99949406 0.49327055;
+	-6.27341757 -0.00031372 0.00019217 7.27310385 0.99904177 0.99949412 0.49327044;
+	-6.27341764 -0.00031368 0.00019215 7.27310396 0.99904186 0.99949417 0.49327060;
+	-6.27341772 -0.00031365 0.00019213 7.27310407 0.99904196 0.99949422 0.49327062;
+	-6.27341779 -0.00031362 0.00019211 7.27310417 0.99904206 0.99949427 0.49327057;
+	-6.27341787 -0.00031359 0.00019209 7.27310428 0.99904215 0.99949432 0.49327068;
+	-6.27341795 -0.00031356 0.00019207 7.27310439 0.99904225 0.99949437 0.49327087;
+	-6.27341802 -0.00031353 0.00019205 7.27310450 0.99904235 0.99949442 0.49327065;
+	-6.27341810 -0.00031349 0.00019203 7.27310461 0.99904244 0.99949447 0.49327040;
+	-6.27341817 -0.00031346 0.00019201 7.27310471 0.99904254 0.99949453 0.49327056;
+	-6.27341825 -0.00031343 0.00019199 7.27310482 0.99904264 0.99949458 0.49327057;
+	-6.27341833 -0.00031340 0.00019197 7.27310493 0.99904274 0.99949463 0.49327059;
+	-6.27341840 -0.00031337 0.00019195 7.27310504 0.99904283 0.99949468 0.49327075;
+	-6.27341848 -0.00031333 0.00019194 7.27310514 0.99904293 0.99949473 0.49327058;
+	-6.27341855 -0.00031330 0.00019192 7.27310525 0.99904303 0.99949478 0.49327073;
+	-6.27341863 -0.00031327 0.00019190 7.27310536 0.99904312 0.99949483 0.49327054;
+	-6.27341871 -0.00031324 0.00019188 7.27310547 0.99904322 0.99949488 0.49327048;
+	-6.27341878 -0.00031321 0.00019186 7.27310557 0.99904332 0.99949493 0.49327086;
+	-6.27341886 -0.00031318 0.00019184 7.27310568 0.99904341 0.99949499 0.49327056;
+	-6.27341893 -0.00031314 0.00019182 7.27310579 0.99904351 0.99949504 0.49327071;
+	-6.27341901 -0.00031311 0.00019180 7.27310590 0.99904361 0.99949509 0.49327045;
+	-6.27341909 -0.00031308 0.00019178 7.27310600 0.99904370 0.99949514 0.49327067;
+	-6.27341916 -0.00031305 0.00019176 7.27310611 0.99904380 0.99949519 0.49327067;
+	-6.27341924 -0.00031302 0.00019174 7.27310622 0.99904390 0.99949524 0.49327074;
+	-6.27341931 -0.00031299 0.00019172 7.27310633 0.99904399 0.99949529 0.49327107;
+	-6.27341939 -0.00031295 0.00019170 7.27310643 0.99904409 0.99949534 0.49327064;
+	-6.27341946 -0.00031292 0.00019168 7.27310654 0.99904419 0.99949539 0.49327063;
+	-6.27341954 -0.00031289 0.00019166 7.27310665 0.99904428 0.99949545 0.49327050;
+	-6.27341962 -0.00031286 0.00019164 7.27310676 0.99904438 0.99949550 0.49327069;
+	-6.27341969 -0.00031283 0.00019162 7.27310686 0.99904448 0.99949555 0.49327081;
+	-6.27341977 -0.00031280 0.00019161 7.27310697 0.99904457 0.99949560 0.49327077;
+	-6.27341984 -0.00031276 0.00019159 7.27310708 0.99904467 0.99949565 0.49327081;
+	-6.27341992 -0.00031273 0.00019157 7.27310719 0.99904477 0.99949570 0.49327088;
+	-6.27341999 -0.00031270 0.00019155 7.27310729 0.99904486 0.99949575 0.49327082;
+	-6.27342007 -0.00031267 0.00019153 7.27310740 0.99904496 0.99949580 0.49327067;
+	-6.27342015 -0.00031264 0.00019151 7.27310751 0.99904506 0.99949585 0.49327061;
+	-6.27342022 -0.00031261 0.00019149 7.27310761 0.99904515 0.99949590 0.49327079;
+	-6.27342030 -0.00031258 0.00019147 7.27310772 0.99904525 0.99949595 0.49327103;
+	-6.27342037 -0.00031254 0.00019145 7.27310783 0.99904535 0.99949601 0.49327107;
+	-6.27342045 -0.00031251 0.00019143 7.27310794 0.99904544 0.99949606 0.49327084;
+	-6.27342052 -0.00031248 0.00019141 7.27310804 0.99904554 0.99949611 0.49327096;
+	-6.27342060 -0.00031245 0.00019139 7.27310815 0.99904563 0.99949616 0.49327062;
+	-6.27342067 -0.00031242 0.00019137 7.27310826 0.99904573 0.99949621 0.49327088;
+	-6.27342075 -0.00031239 0.00019135 7.27310836 0.99904583 0.99949626 0.49327094;
+	-6.27342083 -0.00031235 0.00019133 7.27310847 0.99904592 0.99949631 0.49327095;
+	-6.27342090 -0.00031232 0.00019132 7.27310858 0.99904602 0.99949636 0.49327111;
+	-6.27342098 -0.00031229 0.00019130 7.27310869 0.99904612 0.99949641 0.49327066;
+	-6.27342105 -0.00031226 0.00019128 7.27310879 0.99904621 0.99949646 0.49327112;
+	-6.27342113 -0.00031223 0.00019126 7.27310890 0.99904631 0.99949651 0.49327094;
+	-6.27342120 -0.00031220 0.00019124 7.27310901 0.99904641 0.99949656 0.49327097;
+	-6.27342128 -0.00031217 0.00019122 7.27310911 0.99904650 0.99949662 0.49327094;
+	-6.27342135 -0.00031213 0.00019120 7.27310922 0.99904660 0.99949667 0.49327120;
+	-6.27342143 -0.00031210 0.00019118 7.27310933 0.99904669 0.99949672 0.49327123;
+	-6.27342150 -0.00031207 0.00019116 7.27310943 0.99904679 0.99949677 0.49327124;
+	-6.27342158 -0.00031204 0.00019114 7.27310954 0.99904689 0.99949682 0.49327089;
+	-6.27342166 -0.00031201 0.00019112 7.27310965 0.99904698 0.99949687 0.49327096;
+	-6.27342173 -0.00031198 0.00019110 7.27310975 0.99904708 0.99949692 0.49327093;
+	-6.27342181 -0.00031195 0.00019108 7.27310986 0.99904717 0.99949697 0.49327128;
+	-6.27342188 -0.00031191 0.00019106 7.27310997 0.99904727 0.99949702 0.49327122;
+	-6.27342196 -0.00031188 0.00019105 7.27311007 0.99904737 0.99949707 0.49327128;
+	-6.27342203 -0.00031185 0.00019103 7.27311018 0.99904746 0.99949712 0.49327113;
+	-6.27342211 -0.00031182 0.00019101 7.27311029 0.99904756 0.99949717 0.49327121;
+	-6.27342218 -0.00031179 0.00019099 7.27311039 0.99904765 0.99949722 0.49327115;
+	-6.27342226 -0.00031176 0.00019097 7.27311050 0.99904775 0.99949727 0.49327114;
+	-6.27342233 -0.00031173 0.00019095 7.27311061 0.99904785 0.99949733 0.49327102;
+	-6.27342241 -0.00031169 0.00019093 7.27311071 0.99904794 0.99949738 0.49327120;
+	-6.27342248 -0.00031166 0.00019091 7.27311082 0.99904804 0.99949743 0.49327130;
+	-6.27342256 -0.00031163 0.00019089 7.27311093 0.99904813 0.99949748 0.49327109;
+	-6.27342263 -0.00031160 0.00019087 7.27311103 0.99904823 0.99949753 0.49327132;
+	-6.27342271 -0.00031157 0.00019085 7.27311114 0.99904833 0.99949758 0.49327146;
+	-6.27342278 -0.00031154 0.00019083 7.27311125 0.99904842 0.99949763 0.49327090;
+	-6.27342286 -0.00031151 0.00019081 7.27311135 0.99904852 0.99949768 0.49327123;
+	-6.27342293 -0.00031147 0.00019080 7.27311146 0.99904861 0.99949773 0.49327134;
+	-6.27342301 -0.00031144 0.00019078 7.27311156 0.99904871 0.99949778 0.49327133;
+	-6.27342308 -0.00031141 0.00019076 7.27311167 0.99904880 0.99949783 0.49327117;
+	-6.27342316 -0.00031138 0.00019074 7.27311178 0.99904890 0.99949788 0.49327124;
+	-6.27342323 -0.00031135 0.00019072 7.27311188 0.99904900 0.99949793 0.49327116;
+	-6.27342331 -0.00031132 0.00019070 7.27311199 0.99904909 0.99949798 0.49327125;
+	-6.27342338 -0.00031129 0.00019068 7.27311210 0.99904919 0.99949803 0.49327132;
+	-6.27342346 -0.00031126 0.00019066 7.27311220 0.99904928 0.99949808 0.49327161;
+	-6.27342353 -0.00031122 0.00019064 7.27311231 0.99904938 0.99949813 0.49327137;
+	-6.27342361 -0.00031119 0.00019062 7.27311242 0.99904947 0.99949818 0.49327141;
+	-6.27342368 -0.00031116 0.00019060 7.27311252 0.99904957 0.99949824 0.49327151;
+	-6.27342376 -0.00031113 0.00019058 7.27311263 0.99904966 0.99949829 0.49327147;
+	-6.27342383 -0.00031110 0.00019057 7.27311273 0.99904976 0.99949834 0.49327157;
+	-6.27342391 -0.00031107 0.00019055 7.27311284 0.99904986 0.99949839 0.49327158;
+	-6.27342398 -0.00031104 0.00019053 7.27311295 0.99904995 0.99949844 0.49327140;
+	-6.27342406 -0.00031101 0.00019051 7.27311305 0.99905005 0.99949849 0.49327149;
+	-6.27342413 -0.00031097 0.00019049 7.27311316 0.99905014 0.99949854 0.49327130;
+	-6.27342421 -0.00031094 0.00019047 7.27311326 0.99905024 0.99949859 0.49327138;
+	-6.27342428 -0.00031091 0.00019045 7.27311337 0.99905033 0.99949864 0.49327154;
+	-6.27342436 -0.00031088 0.00019043 7.27311348 0.99905043 0.99949869 0.49327144;
+	-6.27342443 -0.00031085 0.00019041 7.27311358 0.99905052 0.99949874 0.49327149;
+	-6.27342451 -0.00031082 0.00019039 7.27311369 0.99905062 0.99949879 0.49327160;
+	-6.27342458 -0.00031079 0.00019037 7.27311379 0.99905071 0.99949884 0.49327162;
+	-6.27342466 -0.00031076 0.00019035 7.27311390 0.99905081 0.99949889 0.49327146;
+	-6.27342473 -0.00031072 0.00019034 7.27311401 0.99905091 0.99949894 0.49327178;
+	-6.27342480 -0.00031069 0.00019032 7.27311411 0.99905100 0.99949899 0.49327156;
+	-6.27342488 -0.00031066 0.00019030 7.27311422 0.99905110 0.99949904 0.49327151;
+	-6.27342495 -0.00031063 0.00019028 7.27311432 0.99905119 0.99949909 0.49327157;
+	-6.27342503 -0.00031060 0.00019026 7.27311443 0.99905129 0.99949914 0.49327162;
+	-6.27342510 -0.00031057 0.00019024 7.27311453 0.99905138 0.99949919 0.49327180;
+	-6.27342518 -0.00031054 0.00019022 7.27311464 0.99905148 0.99949924 0.49327153;
+	-6.27342525 -0.00031051 0.00019020 7.27311475 0.99905157 0.99949929 0.49327170;
+	-6.27342533 -0.00031047 0.00019018 7.27311485 0.99905167 0.99949934 0.49327164;
+	-6.27342540 -0.00031044 0.00019016 7.27311496 0.99905176 0.99949939 0.49327177;
+	-6.27342548 -0.00031041 0.00019014 7.27311506 0.99905186 0.99949944 0.49327171;
+	-6.27342555 -0.00031038 0.00019013 7.27311517 0.99905195 0.99949949 0.49327163;
+	-6.27342563 -0.00031035 0.00019011 7.27311527 0.99905205 0.99949954 0.49327148;
+	-6.27342570 -0.00031032 0.00019009 7.27311538 0.99905214 0.99949959 0.49327177;
+	-6.27342577 -0.00031029 0.00019007 7.27311549 0.99905224 0.99949964 0.49327190;
+	-6.27342585 -0.00031026 0.00019005 7.27311559 0.99905233 0.99949969 0.49327174;
+	-6.27342592 -0.00031023 0.00019003 7.27311570 0.99905243 0.99949974 0.49327179;
+	-6.27342600 -0.00031019 0.00019001 7.27311580 0.99905252 0.99949979 0.49327165;
+	-6.27342607 -0.00031016 0.00018999 7.27311591 0.99905262 0.99949984 0.49327180;
+	-6.27342615 -0.00031013 0.00018997 7.27311601 0.99905271 0.99949989 0.49327176;
+	-6.27342622 -0.00031010 0.00018995 7.27311612 0.99905281 0.99949994 0.49327155;
+	-6.27342630 -0.00031007 0.00018993 7.27311622 0.99905290 0.99949999 0.49327169;
+	-6.27342637 -0.00031004 0.00018992 7.27311633 0.99905300 0.99950004 0.49327184;
+	-6.27342644 -0.00031001 0.00018990 7.27311644 0.99905309 0.99950009 0.49327184;
+	-6.27342652 -0.00030998 0.00018988 7.27311654 0.99905319 0.99950014 0.49327176;
+	-6.27342659 -0.00030995 0.00018986 7.27311665 0.99905328 0.99950019 0.49327184;
+	-6.27342667 -0.00030992 0.00018984 7.27311675 0.99905338 0.99950024 0.49327166;
+	-6.27342674 -0.00030988 0.00018982 7.27311686 0.99905347 0.99950029 0.49327222;
+	-6.27342682 -0.00030985 0.00018980 7.27311696 0.99905357 0.99950034 0.49327211;
+	-6.27342689 -0.00030982 0.00018978 7.27311707 0.99905366 0.99950039 0.49327202;
+	-6.27342696 -0.00030979 0.00018976 7.27311717 0.99905376 0.99950044 0.49327179;
+	-6.27342704 -0.00030976 0.00018974 7.27311728 0.99905385 0.99950049 0.49327176;
+	-6.27342711 -0.00030973 0.00018973 7.27311738 0.99905394 0.99950054 0.49327202;
+	-6.27342719 -0.00030970 0.00018971 7.27311749 0.99905404 0.99950059 0.49327184;
+	-6.27342726 -0.00030967 0.00018969 7.27311759 0.99905413 0.99950064 0.49327198;
+	-6.27342733 -0.00030964 0.00018967 7.27311770 0.99905423 0.99950069 0.49327205;
+	-6.27342741 -0.00030961 0.00018965 7.27311780 0.99905432 0.99950074 0.49327200;
+	-6.27342748 -0.00030957 0.00018963 7.27311791 0.99905442 0.99950079 0.49327197;
+	-6.27342756 -0.00030954 0.00018961 7.27311801 0.99905451 0.99950084 0.49327183;
+	-6.27342763 -0.00030951 0.00018959 7.27311812 0.99905461 0.99950089 0.49327208;
+	-6.27342771 -0.00030948 0.00018957 7.27311822 0.99905470 0.99950094 0.49327205;
+	-6.27342778 -0.00030945 0.00018956 7.27311833 0.99905480 0.99950099 0.49327194];
+
+	if type=='h',
+		series=love_numbers(:,1);
+	elseif type=='k',
+		series=love_numbers(:,2);
+	elseif type=='l',
+		series=love_numbers(:,3);
+	elseif type=='gamma',
+		series=love_numbers(:,4);
+	elseif type=='lambda',
+		series=love_numbers(:,5);
+	else error(['love_numbers error message: unknow type:' type]);
+	end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/love_numbers.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/love_numbers.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/boundaryconditions/love_numbers.py	(revision 21239)
@@ -0,0 +1,10038 @@
+from MatlabFuncs import *
+from model import *
+from numpy import *
+
+def love_numbers(value,*varargin):
+#LOVE_NUMBERS: provide love numbers (value 'h','k','l','gamma' and 'lambda'
+#			   retrieved from: http://www.srosat.com/iag-jsg/loveNb.php
+#    Usage:   series=love_numbers(value) 
+#             where value is one of 'h','k','l','gamma' and 'lambda'. 
+#
+#    Example:  
+#          love_k=love_numbers('k');
+# 
+
+	#some checks:
+	if len(varargin)>0:
+		raise RuntimeError('love_numbers error message: wrong usage')
+
+	if not ( strcmpi(value,'h') | strcmpi(value,'k') | strcmpi(value,'l') | strcmpi(value,'gamma') | strcmpi(value,'lambda')):
+		raise RuntimeError('value should be one of ''h'',''k'',''l'',''gamma'' and ''lambda''')
+
+	love_numbers=array([\
+[    0         , 0          ,0          ,0          ,0          ,0          ,0          ],\
+[	-1.28740059,-1.00000000,-0.89858519,1.28740059, 0.42519882  ,0.89858519 ,0.00000000 ],\
+[	-1.00025365, -0.30922675, 0.02060926, 1.69102690, 0.46358648, 0.67016399, 0.61829668],\
+[	-1.06243501, -0.19927948, 0.06801636, 1.86315553, 0.55741597, 0.73270416, 0.56270589],\
+[	-1.06779588, -0.13649834, 0.05667027, 1.93129754, 0.63672498, 0.80683140, 0.51132745],\
+[	-1.10365923, -0.10736896, 0.04401221, 1.99629027, 0.68737906, 0.84861883, 0.48642259],\
+[	-1.16440348, -0.09295485, 0.03638747, 2.07144863, 0.72031283, 0.87065768, 0.47898268],\
+[	-1.23634156, -0.08469861, 0.03202759, 2.15164295, 0.74355796, 0.88327380, 0.47955214],\
+[	-1.31140380, -0.07921412, 0.02937593, 2.23218968, 0.76126493, 0.89140995, 0.48323250],\
+[	-1.38582399, -0.07513541, 0.02762338, 2.31068858, 0.77552290, 0.89724121, 0.48795424],\
+[	-1.45807465, -0.07187005, 0.02638627, 2.38620460, 0.78744212, 0.90174369, 0.49291061],\
+[	-1.52763314, -0.06913154, 0.02547640, 2.45850160, 0.79766475, 0.90539206, 0.49779422],\
+[	-1.59437866, -0.06676258, 0.02479080, 2.52761607, 0.80659635, 0.90844662, 0.50248477],\
+[	-1.65833071, -0.06466619, 0.02426511, 2.59366452, 0.81451271, 0.91106870, 0.50693175],\
+[	-1.71954820, -0.06277732, 0.02385464, 2.65677088, 0.82161167, 0.91336804, 0.51111243],\
+[	-1.77809640, -0.06105001, 0.02352654, 2.71704639, 0.82804049, 0.91542346, 0.51501712],\
+[	-1.83403970, -0.05945081, 0.02325609, 2.77458889, 0.83391153, 0.91729309, 0.51864363],\
+[	-1.88744242, -0.05795502, 0.02302469, 2.82948740, 0.83931209, 0.91902029, 0.52199490],\
+[	-1.93837115, -0.05654418, 0.02281843, 2.88182697, 0.84431095, 0.92063739, 0.52507761],\
+[	-1.98689666, -0.05520447, 0.02262706, 2.93169219, 0.84896295, 0.92216847, 0.52790108],\
+[	-2.03309477, -0.05392545, 0.02244322, 2.97916932, 0.85331225, 0.92363132, 0.53047654],\
+[	-2.07704643, -0.05269926, 0.02226173, 3.02434717, 0.85739480, 0.92503902, 0.53281639],\
+[	-2.11883714, -0.05151988, 0.02207909, 3.06731726, 0.86124014, 0.92640103, 0.53493369],\
+[	-2.15855611, -0.05038274, 0.02189307, 3.10817337, 0.86487276, 0.92772419, 0.53684176],\
+[	-2.19629514, -0.04928430, 0.02170238, 3.14701084, 0.86831322, 0.92901331, 0.53855386],\
+[	-2.23214747, -0.04822179, 0.02150643, 3.18392568, 0.87157886, 0.93027178, 0.54008294],\
+[	-2.26620674, -0.04719301, 0.02130509, 3.21901373, 0.87468453, 0.93150190, 0.54144148],\
+[	-2.29856595, -0.04619619, 0.02109858, 3.25236976, 0.87764301, 0.93270523, 0.54264140],\
+[	-2.32931659, -0.04522983, 0.02088735, 3.28408675, 0.88046543, 0.93388282, 0.54369397],\
+[	-2.35854794, -0.04429270, 0.02067197, 3.31425524, 0.88316156, 0.93503533, 0.54460979],\
+[	-2.38634650, -0.04338368, 0.02045310, 3.34296281, 0.88574004, 0.93616321, 0.54539877],\
+[	-2.41279547, -0.04250179, 0.02023142, 3.37029367, 0.88820859, 0.93726678, 0.54607015],\
+[	-2.43797451, -0.04164613, 0.02000761, 3.39632839, 0.89057416, 0.93834626, 0.54663248],\
+[	-2.46195951, -0.04081583, 0.01978231, 3.42114367, 0.89284301, 0.93940185, 0.54709369],\
+[	-2.48482241, -0.04001011, 0.01955614, 3.44481230, 0.89502085, 0.94043375, 0.54746112],\
+[	-2.50663126, -0.03922817, 0.01932966, 3.46740309, 0.89711291, 0.94144217, 0.54774153],\
+[	-2.52745016, -0.03846928, 0.01910337, 3.48898088, 0.89912397, 0.94242735, 0.54794114],\
+[	-2.54733938, -0.03773269, 0.01887774, 3.50960670, 0.90105847, 0.94338957, 0.54806571],\
+[	-2.56635547, -0.03701769, 0.01865317, 3.52933779, 0.90292050, 0.94432915, 0.54812051],\
+[	-2.58455138, -0.03632358, 0.01843000, 3.54822780, 0.90471386, 0.94524642, 0.54811044],\
+[	-2.60197665, -0.03564968, 0.01820854, 3.56632697, 0.90644209, 0.94614178, 0.54803997],\
+[	-2.61867756, -0.03499532, 0.01798905, 3.58368224, 0.90810850, 0.94701563, 0.54791326],\
+[	-2.63469733, -0.03435985, 0.01777176, 3.60033748, 0.90971616, 0.94786840, 0.54773413],\
+[	-2.65007629, -0.03374263, 0.01755683, 3.61633367, 0.91126798, 0.94870054, 0.54750610],\
+[	-2.66485208, -0.03314303, 0.01734443, 3.63170905, 0.91276665, 0.94951253, 0.54723245],\
+[	-2.67905981, -0.03256047, 0.01713468, 3.64649934, 0.91421471, 0.95030485, 0.54691620],\
+[	-2.69273222, -0.03199435, 0.01692767, 3.66073787, 0.91561457, 0.95107798, 0.54656015],\
+[	-2.70589990, -0.03144411, 0.01672347, 3.67445580, 0.91696845, 0.95183242, 0.54616691],\
+[	-2.71859139, -0.03090919, 0.01652215, 3.68768220, 0.91827849, 0.95256866, 0.54573889],\
+[	-2.73083334, -0.03038907, 0.01632374, 3.70044427, 0.91954667, 0.95328719, 0.54527835],\
+[	-2.74265068, -0.02988323, 0.01612826, 3.71276745, 0.92077487, 0.95398851, 0.54478739],\
+[	-2.75406669, -0.02939118, 0.01593573, 3.72467551, 0.92196486, 0.95467309, 0.54426797],\
+[	-2.76510320, -0.02891245, 0.01574615, 3.73619076, 0.92311833, 0.95534141, 0.54372191],\
+[	-2.77578063, -0.02844656, 0.01555950, 3.74733406, 0.92423685, 0.95599393, 0.54315095],\
+[	-2.78611812, -0.02799309, 0.01537578, 3.75812503, 0.92532192, 0.95663113, 0.54255669],\
+[	-2.79613364, -0.02755161, 0.01519496, 3.76858203, 0.92637496, 0.95725343, 0.54194065],\
+[	-2.80584405, -0.02712170, 0.01501701, 3.77872235, 0.92739730, 0.95786128, 0.54130424],\
+[	-2.81526521, -0.02670298, 0.01484191, 3.78856223, 0.92839022, 0.95845511, 0.54064880],\
+[	-2.82441204, -0.02629506, 0.01466961, 3.79811697, 0.92935491, 0.95903532, 0.53997561],\
+[	-2.83329857, -0.02589759, 0.01450009, 3.80740098, 0.93029251, 0.95960232, 0.53928586],\
+[	-2.84193804, -0.02551021, 0.01433329, 3.81642782, 0.93120412, 0.96015649, 0.53858067],\
+[	-2.85034293, -0.02513260, 0.01416919, 3.82521033, 0.93209074, 0.96069821, 0.53786112],\
+[	-2.85852503, -0.02476443, 0.01400773, 3.83376061, 0.93295337, 0.96122784, 0.53712821],\
+[	-2.86649548, -0.02440538, 0.01384888, 3.84209010, 0.93379291, 0.96174574, 0.53638291],\
+[	-2.87426481, -0.02405518, 0.01369258, 3.85020963, 0.93461026, 0.96225224, 0.53562612],\
+[	-2.88184299, -0.02371352, 0.01353880, 3.85812947, 0.93540625, 0.96274768, 0.53485873],\
+[	-2.88923945, -0.02338014, 0.01338749, 3.86585931, 0.93618168, 0.96323236, 0.53408154],\
+[	-2.89646316, -0.02305478, 0.01323861, 3.87340838, 0.93693730, 0.96370661, 0.53329534],\
+[	-2.90352261, -0.02273718, 0.01309211, 3.88078542, 0.93767383, 0.96417071, 0.53250089],\
+[	-2.91042585, -0.02242710, 0.01294795, 3.88799874, 0.93839197, 0.96462494, 0.53169888],\
+[	-2.91718054, -0.02212431, 0.01280609, 3.89505623, 0.93909236, 0.96506960, 0.53089002],\
+[	-2.92379397, -0.02182859, 0.01266648, 3.90196538, 0.93977564, 0.96550493, 0.53007493],\
+[	-2.93027306, -0.02153971, 0.01252908, 3.90873334, 0.94044240, 0.96593120, 0.52925424],\
+[	-2.93662439, -0.02125748, 0.01239386, 3.91536691, 0.94109322, 0.96634866, 0.52842854],\
+[	-2.94285425, -0.02098169, 0.01226077, 3.92187256, 0.94172863, 0.96675754, 0.52759839],\
+[	-2.94896860, -0.02071215, 0.01212977, 3.92825645, 0.94234915, 0.96715808, 0.52676434],\
+[	-2.95497314, -0.02044868, 0.01200082, 3.93452446, 0.94295529, 0.96755050, 0.52592690],\
+[	-2.96087331, -0.02019110, 0.01187388, 3.94068220, 0.94354752, 0.96793501, 0.52508656],\
+[	-2.96667427, -0.01993924, 0.01174893, 3.94673503, 0.94412630, 0.96831183, 0.52424380],\
+[	-2.97238097, -0.01969293, 0.01162591, 3.95268804, 0.94469206, 0.96868116, 0.52339906],\
+[	-2.97799813, -0.01945201, 0.01150481, 3.95854612, 0.94524521, 0.96904318, 0.52255277],\
+[	-2.98353025, -0.01921634, 0.01138557, 3.96431391, 0.94578617, 0.96939809, 0.52170535],\
+[	-2.98898162, -0.01898576, 0.01126817, 3.96999586, 0.94631531, 0.96974607, 0.52085719],\
+[	-2.99435636, -0.01876014, 0.01115257, 3.97559622, 0.94683300, 0.97008729, 0.52000868],\
+[	-2.99965838, -0.01853932, 0.01103875, 3.98111905, 0.94733959, 0.97042193, 0.51916016],\
+[	-3.00489143, -0.01832319, 0.01092666, 3.98656824, 0.94783543, 0.97075015, 0.51831198],\
+[	-3.01005909, -0.01811161, 0.01081628, 3.99194748, 0.94832084, 0.97107211, 0.51746448],\
+[	-3.01516479, -0.01790446, 0.01070757, 3.99726033, 0.94879613, 0.97138796, 0.51661796],\
+[	-3.02021180, -0.01770162, 0.01060052, 4.00251017, 0.94926160, 0.97169786, 0.51577273],\
+[	-3.02520323, -0.01750298, 0.01049508, 4.00770025, 0.94971755, 0.97200194, 0.51492908],\
+[	-3.03014209, -0.01730842, 0.01039123, 4.01283367, 0.95016424, 0.97230035, 0.51408727],\
+[	-3.03503122, -0.01711783, 0.01028894, 4.01791339, 0.95060195, 0.97259323, 0.51324758],\
+[	-3.03987336, -0.01693111, 0.01018819, 4.02294225, 0.95103094, 0.97288070, 0.51241024],\
+[	-3.04467112, -0.01674816, 0.01008894, 4.02792295, 0.95145145, 0.97316290, 0.51157550],\
+[	-3.04942699, -0.01656889, 0.00999117, 4.03285810, 0.95186373, 0.97343995, 0.51074358],\
+[	-3.05414335, -0.01639319, 0.00989485, 4.03775017, 0.95226799, 0.97371196, 0.50991471],\
+[	-3.05882250, -0.01622097, 0.00979997, 4.04260153, 0.95266447, 0.97397906, 0.50908908],\
+[	-3.06346660, -0.01605215, 0.00970649, 4.04741445, 0.95305338, 0.97424136, 0.50826689],\
+[	-3.06807773, -0.01588664, 0.00961439, 4.05219109, 0.95343492, 0.97449897, 0.50744832],\
+[	-3.07265789, -0.01572436, 0.00952364, 4.05693353, 0.95380929, 0.97475200, 0.50663356],\
+[	-3.07720897, -0.01556522, 0.00943423, 4.06164375, 0.95417670, 0.97500055, 0.50582277],\
+[	-3.08173279, -0.01540916, 0.00934613, 4.06632364, 0.95453731, 0.97524472, 0.50501611],\
+[	-3.08623109, -0.01525608, 0.00925931, 4.07097501, 0.95489131, 0.97548461, 0.50421372],\
+[	-3.09070551, -0.01510592, 0.00917376, 4.07559959, 0.95523888, 0.97572032, 0.50341576],\
+[	-3.09515765, -0.01495861, 0.00908946, 4.08019904, 0.95558018, 0.97595193, 0.50262236],\
+[	-3.09958899, -0.01481408, 0.00900637, 4.08477492, 0.95591537, 0.97617955, 0.50183364],\
+[	-3.10400100, -0.01467225, 0.00892449, 4.08932875, 0.95624461, 0.97640325, 0.50104973],\
+[	-3.10839504, -0.01453308, 0.00884379, 4.09386196, 0.95656806, 0.97662313, 0.50027073],\
+[	-3.11277241, -0.01439648, 0.00876425, 4.09837593, 0.95688585, 0.97683927, 0.49949676],\
+[	-3.11713438, -0.01426240, 0.00868586, 4.10287198, 0.95719812, 0.97705174, 0.49872791],\
+[	-3.12148213, -0.01413079, 0.00860858, 4.10735134, 0.95750503, 0.97726063, 0.49796429],\
+[	-3.12581680, -0.01400157, 0.00853241, 4.11181522, 0.95780669, 0.97746601, 0.49720597],\
+[	-3.13013947, -0.01387471, 0.00845733, 4.11626476, 0.95810324, 0.97766796, 0.49645304],\
+[	-3.13445117, -0.01375013, 0.00838331, 4.12070104, 0.95839480, 0.97786656, 0.49570558],\
+[	-3.13875289, -0.01362779, 0.00831034, 4.12512510, 0.95868150, 0.97806186, 0.49496366],\
+[	-3.14304556, -0.01350764, 0.00823841, 4.12953792, 0.95896344, 0.97825395, 0.49422734],\
+[	-3.14733008, -0.01338963, 0.00816748, 4.13394045, 0.95924075, 0.97844289, 0.49349669],\
+[	-3.15160728, -0.01327370, 0.00809756, 4.13833358, 0.95951352, 0.97862874, 0.49277177],\
+[	-3.15587797, -0.01315981, 0.00802862, 4.14271816, 0.95978188, 0.97881157, 0.49205262],\
+[	-3.16014293, -0.01304792, 0.00796064, 4.14709501, 0.96004592, 0.97899144, 0.49133930],\
+[	-3.16440288, -0.01293797, 0.00789361, 4.15146491, 0.96030574, 0.97916842, 0.49063185],\
+[	-3.16865852, -0.01282993, 0.00782751, 4.15582858, 0.96056144, 0.97934256, 0.48993030],\
+[	-3.17291049, -0.01272375, 0.00776233, 4.16018673, 0.96081312, 0.97951392, 0.48923471],\
+[	-3.17715942, -0.01261940, 0.00769805, 4.16454003, 0.96106086, 0.97968255, 0.48854509],\
+[	-3.18140591, -0.01251682, 0.00763466, 4.16888910, 0.96130476, 0.97984852, 0.48786148],\
+[	-3.18565052, -0.01241598, 0.00757215, 4.17323454, 0.96154490, 0.98001187, 0.48718390],\
+[	-3.18989378, -0.01231685, 0.00751049, 4.17757693, 0.96178137, 0.98017266, 0.48651237],\
+[	-3.19413619, -0.01221938, 0.00744968, 4.18191681, 0.96201424, 0.98033094, 0.48584692],\
+[	-3.19837823, -0.01212354, 0.00738970, 4.18625469, 0.96224360, 0.98048676, 0.48518756],\
+[	-3.20262035, -0.01202930, 0.00733053, 4.19059105, 0.96246952, 0.98064017, 0.48453431],\
+[	-3.20686298, -0.01193661, 0.00727217, 4.19492637, 0.96269208, 0.98079121, 0.48388717],\
+[	-3.21110653, -0.01184546, 0.00721461, 4.19926107, 0.96291135, 0.98093994, 0.48324615],\
+[	-3.21535137, -0.01175579, 0.00715782, 4.20359557, 0.96312741, 0.98108639, 0.48261126],\
+[	-3.21959786, -0.01166759, 0.00710179, 4.20793027, 0.96334031, 0.98123062, 0.48198250],\
+[	-3.22384634, -0.01158082, 0.00704652, 4.21226552, 0.96355014, 0.98137266, 0.48135988],\
+[	-3.22809714, -0.01149545, 0.00699199, 4.21660169, 0.96375694, 0.98151256, 0.48074338],\
+[	-3.23235055, -0.01141146, 0.00693819, 4.22093909, 0.96396080, 0.98165035, 0.48013301],\
+[	-3.23660685, -0.01132880, 0.00688511, 4.22527805, 0.96416176, 0.98178609, 0.47952876],\
+[	-3.24086631, -0.01124746, 0.00683273, 4.22961885, 0.96435989, 0.98191980, 0.47893063],\
+[	-3.24512918, -0.01116741, 0.00678105, 4.23396177, 0.96455525, 0.98205153, 0.47833860],\
+[	-3.24939569, -0.01108862, 0.00673005, 4.23830707, 0.96474789, 0.98218132, 0.47775267],\
+[	-3.25366606, -0.01101107, 0.00667973, 4.24265499, 0.96493787, 0.98230920, 0.47717282],\
+[	-3.25794050, -0.01093473, 0.00663007, 4.24700577, 0.96512525, 0.98243520, 0.47659903],\
+[	-3.26221918, -0.01085957, 0.00658106, 4.25135961, 0.96531007, 0.98255937, 0.47603130],\
+[	-3.26650230, -0.01078557, 0.00653269, 4.25571672, 0.96549239, 0.98268174, 0.47546960],\
+[	-3.27079000, -0.01071272, 0.00648495, 4.26007729, 0.96567225, 0.98280233, 0.47491391],\
+[	-3.27508246, -0.01064097, 0.00643784, 4.26444149, 0.96584971, 0.98292119, 0.47436422],\
+[	-3.27937980, -0.01057032, 0.00639134, 4.26880948, 0.96602482, 0.98303834, 0.47382051],\
+[	-3.28368216, -0.01050074, 0.00634544, 4.27318141, 0.96619761, 0.98315382, 0.47328275],\
+[	-3.28798965, -0.01043222, 0.00630013, 4.27755743, 0.96636814, 0.98326765, 0.47275091],\
+[	-3.29230239, -0.01036472, 0.00625541, 4.28193767, 0.96653645, 0.98337988, 0.47222499],\
+[	-3.29662047, -0.01029823, 0.00621126, 4.28632224, 0.96670258, 0.98349051, 0.47170494],\
+[	-3.30094399, -0.01023273, 0.00616768, 4.29071126, 0.96686657, 0.98359960, 0.47119074],\
+[	-3.30527303, -0.01016819, 0.00612465, 4.29510483, 0.96702847, 0.98370715, 0.47068237],\
+[	-3.30960766, -0.01010461, 0.00608218, 4.29950304, 0.96718831, 0.98381321, 0.47017979],\
+[	-3.31394795, -0.01004197, 0.00604024, 4.30390598, 0.96734614, 0.98391779, 0.46968299],\
+[	-3.31829395, -0.00998024, 0.00599883, 4.30831372, 0.96750198, 0.98402093, 0.46919192],\
+[	-3.32264573, -0.00991940, 0.00595795, 4.31272633, 0.96765588, 0.98412265, 0.46870656],\
+[	-3.32700331, -0.00985945, 0.00591759, 4.31714387, 0.96780788, 0.98422297, 0.46822687],\
+[	-3.33136675, -0.00980035, 0.00587773, 4.32156640, 0.96795801, 0.98432191, 0.46775284],\
+[	-3.33573607, -0.00974211, 0.00583838, 4.32599396, 0.96810630, 0.98441951, 0.46728441],\
+[	-3.34011130, -0.00968470, 0.00579951, 4.33042660, 0.96825278, 0.98451579, 0.46682157],\
+[	-3.34449246, -0.00962810, 0.00576113, 4.33486436, 0.96839750, 0.98461077, 0.46636427],\
+[	-3.34887956, -0.00957230, 0.00572323, 4.33930726, 0.96854048, 0.98470447, 0.46591248],\
+[	-3.35327261, -0.00951729, 0.00568581, 4.34375533, 0.96868175, 0.98479691, 0.46546617],\
+[	-3.35767163, -0.00946304, 0.00564884, 4.34820858, 0.96882135, 0.98488812, 0.46502531],\
+[	-3.36207660, -0.00940956, 0.00561233, 4.35266704, 0.96895930, 0.98497811, 0.46458986],\
+[	-3.36648753, -0.00935681, 0.00557627, 4.35713071, 0.96909563, 0.98506691, 0.46415977],\
+[	-3.37090440, -0.00930480, 0.00554066, 4.36159960, 0.96923037, 0.98515454, 0.46373503],\
+[	-3.37532721, -0.00925350, 0.00550548, 4.36607371, 0.96936355, 0.98524102, 0.46331559],\
+[	-3.37975593, -0.00920290, 0.00547073, 4.37055303, 0.96949520, 0.98532636, 0.46290141],\
+[	-3.38419056, -0.00915300, 0.00543641, 4.37503756, 0.96962535, 0.98541059, 0.46249246],\
+[	-3.38863105, -0.00910377, 0.00540251, 4.37952729, 0.96975401, 0.98549373, 0.46208870],\
+[	-3.39307740, -0.00905520, 0.00536901, 4.38402220, 0.96988122, 0.98557578, 0.46169009],\
+[	-3.39752956, -0.00900729, 0.00533593, 4.38852227, 0.97000699, 0.98565678, 0.46129660],\
+[	-3.40198751, -0.00896002, 0.00530324, 4.39302749, 0.97013137, 0.98573674, 0.46090819],\
+[	-3.40645121, -0.00891338, 0.00527095, 4.39753783, 0.97025435, 0.98581567, 0.46052482],\
+[	-3.41092063, -0.00886736, 0.00523904, 4.40205326, 0.97037598, 0.98589360, 0.46014645],\
+[	-3.41539571, -0.00882195, 0.00520752, 4.40657376, 0.97049628, 0.98597053, 0.45977305],\
+[	-3.41987643, -0.00877713, 0.00517637, 4.41109929, 0.97061526, 0.98604649, 0.45940458],\
+[	-3.42436272, -0.00873290, 0.00514560, 4.41562982, 0.97073295, 0.98612149, 0.45904100],\
+[	-3.42885456, -0.00868925, 0.00511520, 4.42016531, 0.97084936, 0.98619555, 0.45868227],\
+[	-3.43335188, -0.00864617, 0.00508515, 4.42470571, 0.97096453, 0.98626868, 0.45832835],\
+[	-3.43785464, -0.00860364, 0.00505546, 4.42925100, 0.97107847, 0.98634090, 0.45797921],\
+[	-3.44236278, -0.00856166, 0.00502613, 4.43380112, 0.97119120, 0.98641222, 0.45763480],\
+[	-3.44687625, -0.00852021, 0.00499714, 4.43835604, 0.97130274, 0.98648265, 0.45729509],\
+[	-3.45139500, -0.00847930, 0.00496849, 4.44291570, 0.97141311, 0.98655221, 0.45696005],\
+[	-3.45591895, -0.00843890, 0.00494017, 4.44748005, 0.97152233, 0.98662092, 0.45662962],\
+[	-3.46044807, -0.00839902, 0.00491219, 4.45204905, 0.97163042, 0.98668879, 0.45630378],\
+[	-3.46498227, -0.00835964, 0.00488454, 4.45662264, 0.97173739, 0.98675583, 0.45598249],\
+[	-3.46952151, -0.00832075, 0.00485721, 4.46120077, 0.97184326, 0.98682205, 0.45566570],\
+[	-3.47406572, -0.00828234, 0.00483019, 4.46578338, 0.97194805, 0.98688746, 0.45535338],\
+[	-3.47861484, -0.00824442, 0.00480349, 4.47037042, 0.97205179, 0.98695209, 0.45504550],\
+[	-3.48316880, -0.00820696, 0.00477710, 4.47496184, 0.97215447, 0.98701594, 0.45474201],\
+[	-3.48772753, -0.00816996, 0.00475102, 4.47955756, 0.97225612, 0.98707902, 0.45444287],\
+[	-3.49229097, -0.00813342, 0.00472523, 4.48415755, 0.97235676, 0.98714134, 0.45414806],\
+[	-3.49685904, -0.00809733, 0.00469975, 4.48876172, 0.97245640, 0.98720293, 0.45385753],\
+[	-3.50143169, -0.00806167, 0.00467455, 4.49337002, 0.97255506, 0.98726378, 0.45357123],\
+[	-3.50600884, -0.00802644, 0.00464964, 4.49798240, 0.97265275, 0.98732391, 0.45328915],\
+[	-3.51059042, -0.00799164, 0.00462502, 4.50259878, 0.97274949, 0.98738333, 0.45301123],\
+[	-3.51517637, -0.00795726, 0.00460068, 4.50721911, 0.97284528, 0.98744206, 0.45273745],\
+[	-3.51976660, -0.00792329, 0.00457662, 4.51184331, 0.97294015, 0.98750009, 0.45246776],\
+[	-3.52436105, -0.00788972, 0.00455283, 4.51647133, 0.97303411, 0.98755745, 0.45220214],\
+[	-3.52895964, -0.00785655, 0.00452930, 4.52110309, 0.97312718, 0.98761414, 0.45194053],\
+[	-3.53356231, -0.00782377, 0.00450605, 4.52573854, 0.97321936, 0.98767018, 0.45168291],\
+[	-3.53816898, -0.00779138, 0.00448306, 4.53037760, 0.97331067, 0.98772556, 0.45142923],\
+[	-3.54277957, -0.00775937, 0.00446032, 4.53502021, 0.97340111, 0.98778031, 0.45117947],\
+[	-3.54739402, -0.00772773, 0.00443784, 4.53966629, 0.97349072, 0.98783443, 0.45093359],\
+[	-3.55201224, -0.00769645, 0.00441562, 4.54431579, 0.97357949, 0.98788793, 0.45069155],\
+[	-3.55663417, -0.00766554, 0.00439364, 4.54896864, 0.97366744, 0.98794082, 0.45045331],\
+[	-3.56125973, -0.00763498, 0.00437190, 4.55362475, 0.97375458, 0.98799311, 0.45021885],\
+[	-3.56588885, -0.00760478, 0.00435041, 4.55828407, 0.97384092, 0.98804481, 0.44998812],\
+[	-3.57052145, -0.00757491, 0.00432916, 4.56294653, 0.97392648, 0.98809593, 0.44976109],\
+[	-3.57515745, -0.00754539, 0.00430814, 4.56761206, 0.97401126, 0.98814646, 0.44953772],\
+[	-3.57979678, -0.00751620, 0.00428736, 4.57228058, 0.97409528, 0.98819644, 0.44931799],\
+[	-3.58443937, -0.00748734, 0.00426681, 4.57695203, 0.97417854, 0.98824585, 0.44910185],\
+[	-3.58908514, -0.00745880, 0.00424648, 4.58162633, 0.97426107, 0.98829472, 0.44888928],\
+[	-3.59373401, -0.00743059, 0.00422637, 4.58630343, 0.97434286, 0.98834304, 0.44868023],\
+[	-3.59838592, -0.00740268, 0.00420649, 4.59098323, 0.97442393, 0.98839083, 0.44847468],\
+[	-3.60304078, -0.00737509, 0.00418682, 4.59566569, 0.97450428, 0.98843809, 0.44827259],\
+[	-3.60769852, -0.00734780, 0.00416737, 4.60035072, 0.97458394, 0.98848483, 0.44807392],\
+[	-3.61235907, -0.00732081, 0.00414813, 4.60503826, 0.97466290, 0.98853106, 0.44787865],\
+[	-3.61702235, -0.00729411, 0.00412910, 4.60972823, 0.97474118, 0.98857678, 0.44768674],\
+[	-3.62168828, -0.00726771, 0.00411028, 4.61442057, 0.97481879, 0.98862201, 0.44749816],\
+[	-3.62635680, -0.00724159, 0.00409166, 4.61911521, 0.97489573, 0.98866675, 0.44731288],\
+[	-3.63102782, -0.00721575, 0.00407325, 4.62381207, 0.97497202, 0.98871100, 0.44713086],\
+[	-3.63570128, -0.00719020, 0.00405503, 4.62851108, 0.97504766, 0.98875478, 0.44695207],\
+[	-3.64037709, -0.00716491, 0.00403700, 4.63321218, 0.97512267, 0.98879808, 0.44677649],\
+[	-3.64505519, -0.00713990, 0.00401918, 4.63791530, 0.97519704, 0.98884093, 0.44660407],\
+[	-3.64973550, -0.00711515, 0.00400154, 4.64262036, 0.97527080, 0.98888331, 0.44643478],\
+[	-3.65441795, -0.00709066, 0.00398409, 4.64732729, 0.97534394, 0.98892525, 0.44626861],\
+[	-3.65910247, -0.00706643, 0.00396683, 4.65203604, 0.97541648, 0.98896674, 0.44610551],\
+[	-3.66378898, -0.00704246, 0.00394975, 4.65674652, 0.97548842, 0.98900779, 0.44594545],\
+[	-3.66847740, -0.00701873, 0.00393286, 4.66145867, 0.97555978, 0.98904841, 0.44578841],\
+[	-3.67316767, -0.00699526, 0.00391614, 4.66617242, 0.97563055, 0.98908860, 0.44563435],\
+[	-3.67785972, -0.00697202, 0.00389960, 4.67088770, 0.97570076, 0.98912838, 0.44548324],\
+[	-3.68255347, -0.00694903, 0.00388324, 4.67560444, 0.97577039, 0.98916773, 0.44533506],\
+[	-3.68724885, -0.00692627, 0.00386705, 4.68032258, 0.97583947, 0.98920668, 0.44518977],\
+[	-3.69194579, -0.00690374, 0.00385103, 4.68504204, 0.97590800, 0.98924523, 0.44504735],\
+[	-3.69664421, -0.00688145, 0.00383518, 4.68976277, 0.97597598, 0.98928338, 0.44490776],\
+[	-3.70134406, -0.00685938, 0.00381949, 4.69448468, 0.97604342, 0.98932113, 0.44477099],\
+[	-3.70604525, -0.00683753, 0.00380397, 4.69920772, 0.97611034, 0.98935850, 0.44463698],\
+[	-3.71074772, -0.00681590, 0.00378861, 4.70393182, 0.97617673, 0.98939548, 0.44450573],\
+[	-3.71545140, -0.00679449, 0.00377342, 4.70865691, 0.97624261, 0.98943209, 0.44437720],\
+[	-3.72015622, -0.00677330, 0.00375838, 4.71338292, 0.97630797, 0.98946833, 0.44425137],\
+[	-3.72486211, -0.00675231, 0.00374349, 4.71810980, 0.97637283, 0.98950420, 0.44412820],\
+[	-3.72956899, -0.00673153, 0.00372877, 4.72283746, 0.97643720, 0.98953970, 0.44400767],\
+[	-3.73427682, -0.00671096, 0.00371419, 4.72756585, 0.97650107, 0.98957485, 0.44388975],\
+[	-3.73898550, -0.00669059, 0.00369976, 4.73229491, 0.97656446, 0.98960965, 0.44377441],\
+[	-3.74369498, -0.00667042, 0.00368549, 4.73702457, 0.97662737, 0.98964409, 0.44366163],\
+[	-3.74840519, -0.00665044, 0.00367136, 4.74175475, 0.97668980, 0.98967820, 0.44355139],\
+[	-3.75311607, -0.00663066, 0.00365738, 4.74648541, 0.97675177, 0.98971196, 0.44344364],\
+[	-3.75782754, -0.00661107, 0.00364354, 4.75121648, 0.97681327, 0.98974540, 0.44333838],\
+[	-3.76253955, -0.00659167, 0.00362984, 4.75594788, 0.97687432, 0.98977850, 0.44323557],\
+[	-3.76725202, -0.00657245, 0.00361628, 4.76067957, 0.97693492, 0.98981127, 0.44313518],\
+[	-3.77196489, -0.00655341, 0.00360286, 4.76541147, 0.97699508, 0.98984372, 0.44303720],\
+[	-3.77667809, -0.00653456, 0.00358958, 4.77014353, 0.97705479, 0.98987586, 0.44294159],\
+[	-3.78139156, -0.00651589, 0.00357643, 4.77487568, 0.97711407, 0.98990768, 0.44284833],\
+[	-3.78610525, -0.00649739, 0.00356342, 4.77960786, 0.97717292, 0.98993920, 0.44275740],\
+[	-3.79081907, -0.00647906, 0.00355053, 4.78434001, 0.97723134, 0.98997040, 0.44266877],\
+[	-3.79553298, -0.00646091, 0.00353778, 4.78907207, 0.97728935, 0.99000131, 0.44258241],\
+[	-3.80024690, -0.00644292, 0.00352516, 4.79380398, 0.97734694, 0.99003192, 0.44249831],\
+[	-3.80496078, -0.00642510, 0.00351266, 4.79853567, 0.97740413, 0.99006223, 0.44241644],\
+[	-3.80967455, -0.00640745, 0.00350029, 4.80326710, 0.97746090, 0.99009226, 0.44233677],\
+[	-3.81438815, -0.00638996, 0.00348804, 4.80799819, 0.97751728, 0.99012200, 0.44225928],\
+[	-3.81910152, -0.00637262, 0.00347592, 4.81272889, 0.97757326, 0.99015145, 0.44218395],\
+[	-3.82381460, -0.00635545, 0.00346392, 4.81745915, 0.97762886, 0.99018063, 0.44211076],\
+[	-3.82852732, -0.00633843, 0.00345204, 4.82218889, 0.97768406, 0.99020953, 0.44203968],\
+[	-3.83323964, -0.00632157, 0.00344027, 4.82691808, 0.97773889, 0.99023816, 0.44197068],\
+[	-3.83795149, -0.00630485, 0.00342863, 4.83164664, 0.97779333, 0.99026652, 0.44190376],\
+[	-3.84266280, -0.00628829, 0.00341709, 4.83637452, 0.97784741, 0.99029462, 0.44183887],\
+[	-3.84737353, -0.00627187, 0.00340568, 4.84110166, 0.97790111, 0.99032245, 0.44177601],\
+[	-3.85208361, -0.00625560, 0.00339437, 4.84582801, 0.97795446, 0.99035003, 0.44171515],\
+[	-3.85679299, -0.00623948, 0.00338318, 4.85055351, 0.97800744, 0.99037735, 0.44165627],\
+[	-3.86150160, -0.00622349, 0.00337210, 4.85527811, 0.97806006, 0.99040441, 0.44159934],\
+[	-3.86620939, -0.00620765, 0.00336112, 4.86000175, 0.97811233, 0.99043123, 0.44154435],\
+[	-3.87091631, -0.00619194, 0.00335026, 4.86472437, 0.97816426, 0.99045780, 0.44149127],\
+[	-3.87562229, -0.00617637, 0.00333950, 4.86944592, 0.97821584, 0.99048413, 0.44144009],\
+[	-3.88032729, -0.00616094, 0.00332885, 4.87416635, 0.97826708, 0.99051022, 0.44139078],\
+[	-3.88503124, -0.00614564, 0.00331830, 4.87888561, 0.97831798, 0.99053607, 0.44134332],\
+[	-3.88973410, -0.00613047, 0.00330785, 4.88360363, 0.97836855, 0.99056168, 0.44129769],\
+[	-3.89443580, -0.00611543, 0.00329750, 4.88832037, 0.97841879, 0.99058707, 0.44125387],\
+[	-3.89913629, -0.00610051, 0.00328726, 4.89303577, 0.97846870, 0.99061223, 0.44121185],\
+[	-3.90383552, -0.00608573, 0.00327711, 4.89774979, 0.97851829, 0.99063716, 0.44117159],\
+[	-3.90853343, -0.00607107, 0.00326707, 4.90246236, 0.97856756, 0.99066187, 0.44113309],\
+[	-3.91322998, -0.00605653, 0.00325712, 4.90717345, 0.97861652, 0.99068635, 0.44109632],\
+[	-3.91792511, -0.00604212, 0.00324726, 4.91188299, 0.97866516, 0.99071062, 0.44106126],\
+[	-3.92261876, -0.00602782, 0.00323750, 4.91659094, 0.97871350, 0.99073468, 0.44102790],\
+[	-3.92731089, -0.00601364, 0.00322784, 4.92129724, 0.97876153, 0.99075852, 0.44099621],\
+[	-3.93200144, -0.00599958, 0.00321826, 4.92600186, 0.97880926, 0.99078215, 0.44096618],\
+[	-3.93669036, -0.00598564, 0.00320878, 4.93070472, 0.97885669, 0.99080558, 0.44093779],\
+[	-3.94137761, -0.00597181, 0.00319939, 4.93540580, 0.97890383, 0.99082880, 0.44091101],\
+[	-3.94606313, -0.00595809, 0.00319009, 4.94010504, 0.97895067, 0.99085182, 0.44088584],\
+[	-3.95074687, -0.00594449, 0.00318088, 4.94480238, 0.97899722, 0.99087463, 0.44086225],\
+[	-3.95542878, -0.00593099, 0.00317175, 4.94949779, 0.97904349, 0.99089725, 0.44084022],\
+[	-3.96010882, -0.00591761, 0.00316271, 4.95419121, 0.97908947, 0.99091968, 0.44081975],\
+[	-3.96478693, -0.00590433, 0.00315376, 4.95888260, 0.97913517, 0.99094191, 0.44080080],\
+[	-3.96946306, -0.00589116, 0.00314489, 4.96357191, 0.97918060, 0.99096395, 0.44078336],\
+[	-3.97413718, -0.00587809, 0.00313611, 4.96825909, 0.97922575, 0.99098581, 0.44076742],\
+[	-3.97880922, -0.00586512, 0.00312740, 4.97294410, 0.97927063, 0.99100747, 0.44075296],\
+[	-3.98347915, -0.00585226, 0.00311878, 4.97762689, 0.97931524, 0.99102895, 0.44073996],\
+[	-3.98814692, -0.00583950, 0.00311024, 4.98230742, 0.97935959, 0.99105026, 0.44072841],\
+[	-3.99281247, -0.00582684, 0.00310178, 4.98698564, 0.97940367, 0.99107138, 0.44071828],\
+[	-3.99747577, -0.00581428, 0.00309340, 4.99166150, 0.97944749, 0.99109232, 0.44070956],\
+[	-4.00213677, -0.00580181, 0.00308510, 4.99633496, 0.97949105, 0.99111309, 0.44070224],\
+[	-4.00679542, -0.00578944, 0.00307688, 5.00100598, 0.97953436, 0.99113368, 0.44069630],\
+[	-4.01145168, -0.00577717, 0.00306873, 5.00567451, 0.97957741, 0.99115410, 0.44069173],\
+[	-4.01610551, -0.00576499, 0.00306065, 5.01034052, 0.97962021, 0.99117436, 0.44068850],\
+[	-4.02075685, -0.00575290, 0.00305266, 5.01500395, 0.97966277, 0.99119444, 0.44068660],\
+[	-4.02540567, -0.00574091, 0.00304473, 5.01966476, 0.97970508, 0.99121436, 0.44068602],\
+[	-4.03005191, -0.00572900, 0.00303688, 5.02432291, 0.97974715, 0.99123412, 0.44068674],\
+[	-4.03469555, -0.00571719, 0.00302910, 5.02897837, 0.97978897, 0.99125371, 0.44068875],\
+[	-4.03933654, -0.00570546, 0.00302139, 5.03363108, 0.97983056, 0.99127315, 0.44069203],\
+[	-4.04397482, -0.00569382, 0.00301375, 5.03828100, 0.97987192, 0.99129242, 0.44069657],\
+[	-4.04861037, -0.00568227, 0.00300619, 5.04292810, 0.97991304, 0.99131154, 0.44070234],\
+[	-4.05324314, -0.00567080, 0.00299869, 5.04757234, 0.97995393, 0.99133051, 0.44070935],\
+[	-4.05787308, -0.00565942, 0.00299126, 5.05221367, 0.97999459, 0.99134932, 0.44071756],\
+[	-4.06250017, -0.00564812, 0.00298390, 5.05685205, 0.98003502, 0.99136799, 0.44072698],\
+[	-4.06712435, -0.00563690, 0.00297660, 5.06148744, 0.98007523, 0.99138650, 0.44073757],\
+[	-4.07174558, -0.00562577, 0.00296937, 5.06611981, 0.98011522, 0.99140486, 0.44074934],\
+[	-4.07636383, -0.00561471, 0.00296221, 5.07074912, 0.98015498, 0.99142308, 0.44076227],\
+[	-4.08097906, -0.00560374, 0.00295511, 5.07537532, 0.98019453, 0.99144116, 0.44077633],\
+[	-4.08559122, -0.00559284, 0.00294807, 5.07999838, 0.98023386, 0.99145909, 0.44079153],\
+[	-4.09020028, -0.00558202, 0.00294110, 5.08461826, 0.98027298, 0.99147688, 0.44080784],\
+[	-4.09480620, -0.00557128, 0.00293419, 5.08923492, 0.98031189, 0.99149453, 0.44082525],\
+[	-4.09940894, -0.00556061, 0.00292734, 5.09384833, 0.98035059, 0.99151204, 0.44084375],\
+[	-4.10400846, -0.00555002, 0.00292056, 5.09845844, 0.98038908, 0.99152942, 0.44086333],\
+[	-4.10860473, -0.00553950, 0.00291383, 5.10306522, 0.98042736, 0.99154666, 0.44088396],\
+[	-4.11319770, -0.00552906, 0.00290717, 5.10766864, 0.98046544, 0.99156377, 0.44090565],\
+[	-4.11778734, -0.00551869, 0.00290056, 5.11226865, 0.98050332, 0.99158075, 0.44092838],\
+[	-4.12237362, -0.00550839, 0.00289401, 5.11686523, 0.98054100, 0.99159760, 0.44095213],\
+[	-4.12695649, -0.00549816, 0.00288752, 5.12145833, 0.98057848, 0.99161431, 0.44097689],\
+[	-4.13153592, -0.00548801, 0.00288109, 5.12604792, 0.98061577, 0.99163090, 0.44100265],\
+[	-4.13611188, -0.00547792, 0.00287471, 5.13063396, 0.98065286, 0.99164737, 0.44102940],\
+[	-4.14068433, -0.00546790, 0.00286839, 5.13521643, 0.98068975, 0.99166371, 0.44105712],\
+[	-4.14525323, -0.00545795, 0.00286213, 5.13979528, 0.98072646, 0.99167992, 0.44108581],\
+[	-4.14981854, -0.00544806, 0.00285592, 5.14437048, 0.98076298, 0.99169602, 0.44111544],\
+[	-4.15438025, -0.00543824, 0.00284976, 5.14894200, 0.98079931, 0.99171199, 0.44114602],\
+[	-4.15893830, -0.00542849, 0.00284366, 5.15350981, 0.98083545, 0.99172785, 0.44117753],\
+[	-4.16349267, -0.00541880, 0.00283761, 5.15807386, 0.98087141, 0.99174358, 0.44120995],\
+[	-4.16804332, -0.00540918, 0.00283162, 5.16263414, 0.98090719, 0.99175920, 0.44124328],\
+[	-4.17259021, -0.00539962, 0.00282567, 5.16719060, 0.98094278, 0.99177471, 0.44127750],\
+[	-4.17713333, -0.00539012, 0.00281978, 5.17174321, 0.98097820, 0.99179010, 0.44131260],\
+[	-4.18167262, -0.00538069, 0.00281394, 5.17629194, 0.98101344, 0.99180537, 0.44134857],\
+[	-4.18620807, -0.00537131, 0.00280815, 5.18083676, 0.98104851, 0.99182054, 0.44138541],\
+[	-4.19073963, -0.00536200, 0.00280241, 5.18537763, 0.98108340, 0.99183560, 0.44142309],\
+[	-4.19526728, -0.00535274, 0.00279671, 5.18991453, 0.98111811, 0.99185054, 0.44146162],\
+[	-4.19979098, -0.00534355, 0.00279107, 5.19444743, 0.98115266, 0.99186538, 0.44150097],\
+[	-4.20431070, -0.00533441, 0.00278548, 5.19897629, 0.98118704, 0.99188011, 0.44154114],\
+[	-4.20882641, -0.00532534, 0.00277993, 5.20350108, 0.98122125, 0.99189474, 0.44158211],\
+[	-4.21333809, -0.00531632, 0.00277443, 5.20802177, 0.98125529, 0.99190926, 0.44162389],\
+[	-4.21784569, -0.00530735, 0.00276897, 5.21253834, 0.98128916, 0.99192367, 0.44166645],\
+[	-4.22234919, -0.00529845, 0.00276357, 5.21705075, 0.98132288, 0.99193799, 0.44170979],\
+[	-4.22684856, -0.00528959, 0.00275820, 5.22155897, 0.98135643, 0.99195220, 0.44175389],\
+[	-4.23134377, -0.00528080, 0.00275289, 5.22606297, 0.98138982, 0.99196631, 0.44179875],\
+[	-4.23583479, -0.00527206, 0.00274762, 5.23056273, 0.98142305, 0.99198033, 0.44184436],\
+[	-4.24032159, -0.00526337, 0.00274239, 5.23505822, 0.98145612, 0.99199424, 0.44189070],\
+[	-4.24480413, -0.00525473, 0.00273720, 5.23954940, 0.98148904, 0.99200806, 0.44193777],\
+[	-4.24928241, -0.00524615, 0.00273206, 5.24403626, 0.98152180, 0.99202179, 0.44198557],\
+[	-4.25375637, -0.00523762, 0.00272697, 5.24851875, 0.98155440, 0.99203541, 0.44203406],\
+[	-4.25822600, -0.00522914, 0.00272191, 5.25299686, 0.98158685, 0.99204895, 0.44208326],\
+[	-4.26269127, -0.00522071, 0.00271690, 5.25747055, 0.98161916, 0.99206239, 0.44213315],\
+[	-4.26715214, -0.00521233, 0.00271193, 5.26193981, 0.98165131, 0.99207574, 0.44218372],\
+[	-4.27160860, -0.00520401, 0.00270700, 5.26640459, 0.98168331, 0.99208900, 0.44223496],\
+[	-4.27606061, -0.00519573, 0.00270211, 5.27086489, 0.98171516, 0.99210217, 0.44228686],\
+[	-4.28050816, -0.00518750, 0.00269726, 5.27532066, 0.98174687, 0.99211524, 0.44233942],\
+[	-4.28495120, -0.00517932, 0.00269245, 5.27977188, 0.98177844, 0.99212824, 0.44239262],\
+[	-4.28938971, -0.00517119, 0.00268767, 5.28421853, 0.98180986, 0.99214114, 0.44244646],\
+[	-4.29382368, -0.00516310, 0.00268294, 5.28866058, 0.98184113, 0.99215396, 0.44250093],\
+[	-4.29825306, -0.00515506, 0.00267825, 5.29309800, 0.98187227, 0.99216669, 0.44255601],\
+[	-4.30267785, -0.00514707, 0.00267359, 5.29753078, 0.98190326, 0.99217934, 0.44261171],\
+[	-4.30709800, -0.00513912, 0.00266898, 5.30195888, 0.98193412, 0.99219190, 0.44266801],\
+[	-4.31151350, -0.00513122, 0.00266440, 5.30638227, 0.98196483, 0.99220438, 0.44272490],\
+[	-4.31592431, -0.00512337, 0.00265985, 5.31080095, 0.98199542, 0.99221678, 0.44278238],\
+[	-4.32033043, -0.00511555, 0.00265535, 5.31521487, 0.98202586, 0.99222910, 0.44284044],\
+[	-4.32473181, -0.00510779, 0.00265088, 5.31962403, 0.98205617, 0.99224134, 0.44289907],\
+[	-4.32912844, -0.00510006, 0.00264644, 5.32402838, 0.98208635, 0.99225350, 0.44295825],\
+[	-4.33352030, -0.00509238, 0.00264204, 5.32842792, 0.98211639, 0.99226558, 0.44301800],\
+[	-4.33790735, -0.00508474, 0.00263768, 5.33282261, 0.98214630, 0.99227758, 0.44307829],\
+[	-4.34228957, -0.00507715, 0.00263335, 5.33721243, 0.98217609, 0.99228950, 0.44313911],\
+[	-4.34666695, -0.00506959, 0.00262906, 5.34159736, 0.98220574, 0.99230135, 0.44320047],\
+[	-4.35103946, -0.00506208, 0.00262479, 5.34597738, 0.98223526, 0.99231313, 0.44326235],\
+[	-4.35540706, -0.00505461, 0.00262057, 5.35035246, 0.98226466, 0.99232483, 0.44332475],\
+[	-4.35976976, -0.00504718, 0.00261637, 5.35472258, 0.98229393, 0.99233645, 0.44338766],\
+[	-4.36412751, -0.00503978, 0.00261221, 5.35908772, 0.98232308, 0.99234800, 0.44345107],\
+[	-4.36848029, -0.00503243, 0.00260808, 5.36344786, 0.98235210, 0.99235949, 0.44351497],\
+[	-4.37282810, -0.00502512, 0.00260399, 5.36780298, 0.98238100, 0.99237089, 0.44357936],\
+[	-4.37717089, -0.00501785, 0.00259992, 5.37215304, 0.98240977, 0.99238223, 0.44364422],\
+[	-4.38150866, -0.00501061, 0.00259589, 5.37649804, 0.98243843, 0.99239350, 0.44370956],\
+[	-4.38584137, -0.00500341, 0.00259189, 5.38083796, 0.98246696, 0.99240470, 0.44377537],\
+[	-4.39016901, -0.00499626, 0.00258792, 5.38517276, 0.98249538, 0.99241583, 0.44384163],\
+[	-4.39449156, -0.00498913, 0.00258397, 5.38950243, 0.98252368, 0.99242689, 0.44390835],\
+[	-4.39880900, -0.00498205, 0.00258006, 5.39382695, 0.98255186, 0.99243789, 0.44397551],\
+[	-4.40312130, -0.00497500, 0.00257618, 5.39814630, 0.98257992, 0.99244881, 0.44404311],\
+[	-4.40742845, -0.00496799, 0.00257233, 5.40246046, 0.98260787, 0.99245968, 0.44411114],\
+[	-4.41173042, -0.00496101, 0.00256851, 5.40676940, 0.98263570, 0.99247047, 0.44417960],\
+[	-4.41602719, -0.00495407, 0.00256472, 5.41107312, 0.98266342, 0.99248121, 0.44424847],\
+[	-4.42031875, -0.00494717, 0.00256096, 5.41537158, 0.98269102, 0.99249187, 0.44431776],\
+[	-4.42460508, -0.00494030, 0.00255722, 5.41966478, 0.98271852, 0.99250248, 0.44438745],\
+[	-4.42888615, -0.00493346, 0.00255351, 5.42395268, 0.98274590, 0.99251302, 0.44445755],\
+[	-4.43316194, -0.00492666, 0.00254984, 5.42823528, 0.98277317, 0.99252350, 0.44452803],\
+[	-4.43743244, -0.00491989, 0.00254618, 5.43251255, 0.98280033, 0.99253392, 0.44459891],\
+[	-4.44169763, -0.00491316, 0.00254256, 5.43678447, 0.98282738, 0.99254428, 0.44467016],\
+[	-4.44595749, -0.00490646, 0.00253896, 5.44105103, 0.98285433, 0.99255458, 0.44474179],\
+[	-4.45021200, -0.00489979, 0.00253539, 5.44531221, 0.98288117, 0.99256482, 0.44481379],\
+[	-4.45446115, -0.00489316, 0.00253185, 5.44956799, 0.98290790, 0.99257500, 0.44488616],\
+[	-4.45870490, -0.00488655, 0.00252833, 5.45381835, 0.98293452, 0.99258512, 0.44495888],\
+[	-4.46294326, -0.00487998, 0.00252484, 5.45806327, 0.98296105, 0.99259518, 0.44503195],\
+[	-4.46717619, -0.00487344, 0.00252137, 5.46230275, 0.98298746, 0.99260519, 0.44510537],\
+[	-4.47140368, -0.00486693, 0.00251793, 5.46653675, 0.98301378, 0.99261514, 0.44517912],\
+[	-4.47562571, -0.00486046, 0.00251451, 5.47076526, 0.98303999, 0.99262503, 0.44525322],\
+[	-4.47984227, -0.00485401, 0.00251112, 5.47498827, 0.98306610, 0.99263487, 0.44532764],\
+[	-4.48405334, -0.00484759, 0.00250775, 5.47920575, 0.98309211, 0.99264465, 0.44540238],\
+[	-4.48825891, -0.00484121, 0.00250441, 5.48341770, 0.98311802, 0.99265438, 0.44547744],\
+[	-4.49245894, -0.00483485, 0.00250109, 5.48762409, 0.98314383, 0.99266406, 0.44555282],\
+[	-4.49665344, -0.00482852, 0.00249780, 5.49182492, 0.98316954, 0.99267368, 0.44562850],\
+[	-4.50084238, -0.00482223, 0.00249453, 5.49602015, 0.98319515, 0.99268325, 0.44570449],\
+[	-4.50502575, -0.00481596, 0.00249128, 5.50020979, 0.98322067, 0.99269277, 0.44578077],\
+[	-4.50920352, -0.00480972, 0.00248805, 5.50439380, 0.98324609, 0.99270223, 0.44585734],\
+[	-4.51337569, -0.00480350, 0.00248485, 5.50857219, 0.98327141, 0.99271164, 0.44593420],\
+[	-4.51754224, -0.00479732, 0.00248167, 5.51274492, 0.98329664, 0.99272101, 0.44601134],\
+[	-4.52170315, -0.00479117, 0.00247851, 5.51691199, 0.98332177, 0.99273032, 0.44608876],\
+[	-4.52585842, -0.00478504, 0.00247538, 5.52107338, 0.98334681, 0.99273958, 0.44616645],\
+[	-4.53000801, -0.00477894, 0.00247227, 5.52522907, 0.98337176, 0.99274880, 0.44624440],\
+[	-4.53415192, -0.00477286, 0.00246917, 5.52937906, 0.98339661, 0.99275796, 0.44632262],\
+[	-4.53829014, -0.00476682, 0.00246610, 5.53352332, 0.98342137, 0.99276708, 0.44640109],\
+[	-4.54242264, -0.00476080, 0.00246306, 5.53766184, 0.98344605, 0.99277615, 0.44647982],\
+[	-4.54654942, -0.00475480, 0.00246003, 5.54179461, 0.98347063, 0.99278517, 0.44655879],\
+[	-4.55067046, -0.00474884, 0.00245702, 5.54592162, 0.98349512, 0.99279414, 0.44663801],\
+[	-4.55478574, -0.00474290, 0.00245404, 5.55004285, 0.98351952, 0.99280307, 0.44671746],\
+[	-4.55889526, -0.00473698, 0.00245107, 5.55415828, 0.98354383, 0.99281195, 0.44679715],\
+[	-4.56299899, -0.00473109, 0.00244812, 5.55826790, 0.98356806, 0.99282079, 0.44687706],\
+[	-4.56709693, -0.00472522, 0.00244520, 5.56237170, 0.98359219, 0.99282958, 0.44695720],\
+[	-4.57118906, -0.00471938, 0.00244229, 5.56646967, 0.98361625, 0.99283832, 0.44703756],\
+[	-4.57527536, -0.00471357, 0.00243940, 5.57056179, 0.98364021, 0.99284703, 0.44711814],\
+[	-4.57935583, -0.00470778, 0.00243654, 5.57464806, 0.98366409, 0.99285569, 0.44719893],\
+[	-4.58343045, -0.00470201, 0.00243369, 5.57872844, 0.98368788, 0.99286430, 0.44727992],\
+[	-4.58749921, -0.00469627, 0.00243086, 5.58280295, 0.98371159, 0.99287287, 0.44736112],\
+[	-4.59156210, -0.00469055, 0.00242805, 5.58687155, 0.98373522, 0.99288140, 0.44744252],\
+[	-4.59561910, -0.00468485, 0.00242526, 5.59093424, 0.98375876, 0.99288989, 0.44752411],\
+[	-4.59967020, -0.00467918, 0.00242248, 5.59499102, 0.98378222, 0.99289833, 0.44760589],\
+[	-4.60371538, -0.00467353, 0.00241973, 5.59904185, 0.98380560, 0.99290674, 0.44768785],\
+[	-4.60775465, -0.00466791, 0.00241699, 5.60308674, 0.98382890, 0.99291510, 0.44777000],\
+[	-4.61178797, -0.00466230, 0.00241427, 5.60712567, 0.98385211, 0.99292343, 0.44785233],\
+[	-4.61581536, -0.00465672, 0.00241157, 5.61115863, 0.98387525, 0.99293171, 0.44793483],\
+[	-4.61983678, -0.00465116, 0.00240889, 5.61518561, 0.98389830, 0.99293995, 0.44801750],\
+[	-4.62385223, -0.00464563, 0.00240622, 5.61920660, 0.98392128, 0.99294815, 0.44810034],\
+[	-4.62786170, -0.00464011, 0.00240357, 5.62322158, 0.98394418, 0.99295632, 0.44818334],\
+[	-4.63186517, -0.00463462, 0.00240093, 5.62723055, 0.98396700, 0.99296444, 0.44826650],\
+[	-4.63586264, -0.00462915, 0.00239832, 5.63123349, 0.98398974, 0.99297253, 0.44834982],\
+[	-4.63985410, -0.00462370, 0.00239572, 5.63523040, 0.98401240, 0.99298058, 0.44843328],\
+[	-4.64383953, -0.00461827, 0.00239313, 5.63922126, 0.98403499, 0.99298859, 0.44851690],\
+[	-4.64781892, -0.00461286, 0.00239057, 5.64320606, 0.98405750, 0.99299657, 0.44860066],\
+[	-4.65179227, -0.00460748, 0.00238802, 5.64718479, 0.98407993, 0.99300451, 0.44868455],\
+[	-4.65575956, -0.00460211, 0.00238548, 5.65115744, 0.98410229, 0.99301241, 0.44876859],\
+[	-4.65972078, -0.00459677, 0.00238296, 5.65512401, 0.98412458, 0.99302027, 0.44885276],\
+[	-4.66367592, -0.00459144, 0.00238046, 5.65908448, 0.98414679, 0.99302810, 0.44893706],\
+[	-4.66762497, -0.00458614, 0.00237797, 5.66303884, 0.98416893, 0.99303590, 0.44902148],\
+[	-4.67156793, -0.00458085, 0.00237549, 5.66698708, 0.98419099, 0.99304366, 0.44910603],\
+[	-4.67550478, -0.00457558, 0.00237303, 5.67092920, 0.98421298, 0.99305138, 0.44919070],\
+[	-4.67943552, -0.00457034, 0.00237059, 5.67486518, 0.98423490, 0.99305907, 0.44927549],\
+[	-4.68336012, -0.00456511, 0.00236816, 5.67879501, 0.98425675, 0.99306673, 0.44936038],\
+[	-4.68727860, -0.00455990, 0.00236575, 5.68271869, 0.98427852, 0.99307435, 0.44944539],\
+[	-4.69119092, -0.00455472, 0.00236335, 5.68663621, 0.98430023, 0.99308194, 0.44953051],\
+[	-4.69509710, -0.00454955, 0.00236096, 5.69054755, 0.98432186, 0.99308949, 0.44961572],\
+[	-4.69899711, -0.00454440, 0.00235859, 5.69445271, 0.98434343, 0.99309701, 0.44970104],\
+[	-4.70289095, -0.00453926, 0.00235623, 5.69835168, 0.98436492, 0.99310450, 0.44978646],\
+[	-4.70677861, -0.00453415, 0.00235389, 5.70224446, 0.98438635, 0.99311196, 0.44987197],\
+[	-4.71066008, -0.00452905, 0.00235156, 5.70613103, 0.98440771, 0.99311939, 0.44995757],\
+[	-4.71453535, -0.00452398, 0.00234924, 5.71001138, 0.98442899, 0.99312678, 0.45004326],\
+[	-4.71840442, -0.00451892, 0.00234694, 5.71388551, 0.98445021, 0.99313414, 0.45012903],\
+[	-4.72226728, -0.00451387, 0.00234465, 5.71775341, 0.98447137, 0.99314147, 0.45021488],\
+[	-4.72612392, -0.00450885, 0.00234237, 5.72161507, 0.98449245, 0.99314877, 0.45030082],\
+[	-4.72997433, -0.00450384, 0.00234011, 5.72547048, 0.98451347, 0.99315604, 0.45038683],\
+[	-4.73381850, -0.00449885, 0.00233786, 5.72931964, 0.98453443, 0.99316328, 0.45047291],\
+[	-4.73765643, -0.00449388, 0.00233562, 5.73316254, 0.98455532, 0.99317049, 0.45055907],\
+[	-4.74148810, -0.00448893, 0.00233340, 5.73699917, 0.98457614, 0.99317767, 0.45064529],\
+[	-4.74531352, -0.00448399, 0.00233119, 5.74082953, 0.98459690, 0.99318483, 0.45073158],\
+[	-4.74913267, -0.00447907, 0.00232899, 5.74465360, 0.98461759, 0.99319195, 0.45081792],\
+[	-4.75294555, -0.00447416, 0.00232680, 5.74847138, 0.98463822, 0.99319904, 0.45090433],\
+[	-4.75675214, -0.00446927, 0.00232462, 5.75228287, 0.98465878, 0.99320610, 0.45099080],\
+[	-4.76055246, -0.00446440, 0.00232246, 5.75608805, 0.98467929, 0.99321314, 0.45107732],\
+[	-4.76434647, -0.00445955, 0.00232031, 5.75988693, 0.98469973, 0.99322015, 0.45116389],\
+[	-4.76813419, -0.00445471, 0.00231816, 5.76367948, 0.98472010, 0.99322713, 0.45125051],\
+[	-4.77191560, -0.00444988, 0.00231604, 5.76746572, 0.98474042, 0.99323408, 0.45133717],\
+[	-4.77569070, -0.00444507, 0.00231392, 5.77124562, 0.98476067, 0.99324101, 0.45142388],\
+[	-4.77945947, -0.00444028, 0.00231181, 5.77501919, 0.98478086, 0.99324791, 0.45151063],\
+[	-4.78322192, -0.00443550, 0.00230972, 5.77878642, 0.98480099, 0.99325478, 0.45159742],\
+[	-4.78697804, -0.00443074, 0.00230763, 5.78254730, 0.98482106, 0.99326162, 0.45168425],\
+[	-4.79072783, -0.00442600, 0.00230556, 5.78630183, 0.98484107, 0.99326844, 0.45177111],\
+[	-4.79447127, -0.00442127, 0.00230350, 5.79005000, 0.98486102, 0.99327523, 0.45185800],\
+[	-4.79820836, -0.00441655, 0.00230145, 5.79379181, 0.98488091, 0.99328200, 0.45194492],\
+[	-4.80193909, -0.00441185, 0.00229941, 5.79752724, 0.98490074, 0.99328874, 0.45203187],\
+[	-4.80566347, -0.00440716, 0.00229738, 5.80125630, 0.98492051, 0.99329546, 0.45211884],\
+[	-4.80938148, -0.00440249, 0.00229536, 5.80497899, 0.98494022, 0.99330215, 0.45220583],\
+[	-4.81309312, -0.00439783, 0.00229335, 5.80869528, 0.98495988, 0.99330881, 0.45229285],\
+[	-4.81679838, -0.00439319, 0.00229135, 5.81240519, 0.98497947, 0.99331546, 0.45237988],\
+[	-4.82049726, -0.00438856, 0.00228937, 5.81610870, 0.98499901, 0.99332207, 0.45246692],\
+[	-4.82418976, -0.00438395, 0.00228739, 5.81980581, 0.98501850, 0.99332866, 0.45255398],\
+[	-4.82787587, -0.00437935, 0.00228542, 5.82349652, 0.98503792, 0.99333523, 0.45264105],\
+[	-4.83155558, -0.00437476, 0.00228346, 5.82718082, 0.98505729, 0.99334178, 0.45272813],\
+[	-4.83522889, -0.00437019, 0.00228151, 5.83085870, 0.98507660, 0.99334830, 0.45281521],\
+[	-4.83889580, -0.00436563, 0.00227957, 5.83453017, 0.98509586, 0.99335480, 0.45290231],\
+[	-4.84255630, -0.00436109, 0.00227764, 5.83819521, 0.98511506, 0.99336127, 0.45298940],\
+[	-4.84621038, -0.00435656, 0.00227572, 5.84185383, 0.98513421, 0.99336772, 0.45307649],\
+[	-4.84985805, -0.00435204, 0.00227381, 5.84550601, 0.98515330, 0.99337415, 0.45316358],\
+[	-4.85349930, -0.00434753, 0.00227191, 5.84915177, 0.98517233, 0.99338056, 0.45325067],\
+[	-4.85713412, -0.00434304, 0.00227002, 5.85279108, 0.98519132, 0.99338694, 0.45333775],\
+[	-4.86076252, -0.00433856, 0.00226813, 5.85642396, 0.98521024, 0.99339330, 0.45342482],\
+[	-4.86438448, -0.00433410, 0.00226626, 5.86005038, 0.98522912, 0.99339964, 0.45351189],\
+[	-4.86800001, -0.00432965, 0.00226439, 5.86367036, 0.98524794, 0.99340596, 0.45359894],\
+[	-4.87160909, -0.00432521, 0.00226253, 5.86728389, 0.98526671, 0.99341226, 0.45368598],\
+[	-4.87521174, -0.00432078, 0.00226069, 5.87089096, 0.98528542, 0.99341853, 0.45377301],\
+[	-4.87880793, -0.00431637, 0.00225885, 5.87449157, 0.98530409, 0.99342479, 0.45386001],\
+[	-4.88239768, -0.00431196, 0.00225701, 5.87808572, 0.98532270, 0.99343102, 0.45394700],\
+[	-4.88598098, -0.00430758, 0.00225519, 5.88167340, 0.98534126, 0.99343723, 0.45403397],\
+[	-4.88955781, -0.00430320, 0.00225338, 5.88525462, 0.98535976, 0.99344342, 0.45412092],\
+[	-4.89312819, -0.00429883, 0.00225157, 5.88882936, 0.98537822, 0.99344960, 0.45420784],\
+[	-4.89669211, -0.00429448, 0.00224977, 5.89239763, 0.98539662, 0.99345575, 0.45429473],\
+[	-4.90024957, -0.00429014, 0.00224798, 5.89595942, 0.98541498, 0.99346188, 0.45438160],\
+[	-4.90380055, -0.00428581, 0.00224620, 5.89951474, 0.98543328, 0.99346799, 0.45446844],\
+[	-4.90734507, -0.00428150, 0.00224442, 5.90306357, 0.98545154, 0.99347408, 0.45455524],\
+[	-4.91088312, -0.00427719, 0.00224266, 5.90660592, 0.98546974, 0.99348015, 0.45464201],\
+[	-4.91441469, -0.00427290, 0.00224090, 5.91014179, 0.98548790, 0.99348620, 0.45472875],\
+[	-4.91793978, -0.00426862, 0.00223915, 5.91367116, 0.98550600, 0.99349224, 0.45481546],\
+[	-4.92145840, -0.00426435, 0.00223740, 5.91719405, 0.98552406, 0.99349825, 0.45490212],\
+[	-4.92497053, -0.00426009, 0.00223566, 5.92071044, 0.98554206, 0.99350425, 0.45498875],\
+[	-4.92847618, -0.00425584, 0.00223394, 5.92422034, 0.98556002, 0.99351022, 0.45507533],\
+[	-4.93197535, -0.00425160, 0.00223221, 5.92772375, 0.98557793, 0.99351618, 0.45516187],\
+[	-4.93546803, -0.00424738, 0.00223050, 5.93122065, 0.98559579, 0.99352212, 0.45524837],\
+[	-4.93895423, -0.00424317, 0.00222879, 5.93471106, 0.98561361, 0.99352804, 0.45533482],\
+[	-4.94243393, -0.00423896, 0.00222709, 5.93819497, 0.98563138, 0.99353395, 0.45542123],\
+[	-4.94590714, -0.00423477, 0.00222540, 5.94167237, 0.98564910, 0.99353983, 0.45550758],\
+[	-4.94937386, -0.00423059, 0.00222371, 5.94514327, 0.98566677, 0.99354570, 0.45559389],\
+[	-4.95283409, -0.00422642, 0.00222203, 5.94860767, 0.98568439, 0.99355155, 0.45568014],\
+[	-4.95628782, -0.00422226, 0.00222036, 5.95206556, 0.98570197, 0.99355738, 0.45576634],\
+[	-4.95973505, -0.00421811, 0.00221869, 5.95551694, 0.98571951, 0.99356320, 0.45585249],\
+[	-4.96317579, -0.00421397, 0.00221703, 5.95896181, 0.98573699, 0.99356900, 0.45593858],\
+[	-4.96661002, -0.00420984, 0.00221538, 5.96240018, 0.98575444, 0.99357478, 0.45602462],\
+[	-4.97003776, -0.00420573, 0.00221373, 5.96583204, 0.98577183, 0.99358054, 0.45611059],\
+[	-4.97345900, -0.00420162, 0.00221209, 5.96925738, 0.98578918, 0.99358629, 0.45619651],\
+[	-4.97687374, -0.00419752, 0.00221046, 5.97267622, 0.98580649, 0.99359202, 0.45628236],\
+[	-4.98028197, -0.00419344, 0.00220883, 5.97608854, 0.98582375, 0.99359774, 0.45636816],\
+[	-4.98368371, -0.00418936, 0.00220721, 5.97949435, 0.98584096, 0.99360343, 0.45645388],\
+[	-4.98707894, -0.00418529, 0.00220559, 5.98289365, 0.98585814, 0.99360912, 0.45653955],\
+[	-4.99046767, -0.00418123, 0.00220398, 5.98628643, 0.98587526, 0.99361478, 0.45662514],\
+[	-4.99384989, -0.00417719, 0.00220238, 5.98967270, 0.98589235, 0.99362043, 0.45671067],\
+[	-4.99722561, -0.00417315, 0.00220078, 5.99305246, 0.98590939, 0.99362607, 0.45679613],\
+[	-5.00059483, -0.00416912, 0.00219919, 5.99642571, 0.98592638, 0.99363169, 0.45688152],\
+[	-5.00395754, -0.00416511, 0.00219761, 5.99979244, 0.98594334, 0.99363729, 0.45696684],\
+[	-5.00731375, -0.00416110, 0.00219603, 6.00315266, 0.98596025, 0.99364288, 0.45705209],\
+[	-5.01066346, -0.00415710, 0.00219445, 6.00650636, 0.98597712, 0.99364845, 0.45713726],\
+[	-5.01400667, -0.00415311, 0.00219288, 6.00985356, 0.98599394, 0.99365401, 0.45722236],\
+[	-5.01734337, -0.00414913, 0.00219132, 6.01319424, 0.98601072, 0.99365955, 0.45730738],\
+[	-5.02067356, -0.00414516, 0.00218976, 6.01652841, 0.98602746, 0.99366508, 0.45739233],\
+[	-5.02399726, -0.00414120, 0.00218821, 6.01985606, 0.98604416, 0.99367059, 0.45747719],\
+[	-5.02731445, -0.00413724, 0.00218666, 6.02317721, 0.98606082, 0.99367609, 0.45756198],\
+[	-5.03062515, -0.00413330, 0.00218512, 6.02649184, 0.98607744, 0.99368157, 0.45764669],\
+[	-5.03392934, -0.00412937, 0.00218359, 6.02979997, 0.98609401, 0.99368704, 0.45773131],\
+[	-5.03722703, -0.00412544, 0.00218206, 6.03310159, 0.98611054, 0.99369250, 0.45781585],\
+[	-5.04051822, -0.00412153, 0.00218053, 6.03639670, 0.98612704, 0.99369794, 0.45790031],\
+[	-5.04380292, -0.00411762, 0.00217901, 6.03968530, 0.98614349, 0.99370337, 0.45798469],\
+[	-5.04708112, -0.00411372, 0.00217750, 6.04296739, 0.98615990, 0.99370878, 0.45806897],\
+[	-5.05035282, -0.00410983, 0.00217599, 6.04624299, 0.98617627, 0.99371418, 0.45815318],\
+[	-5.05361802, -0.00410595, 0.00217448, 6.04951207, 0.98619260, 0.99371957, 0.45823729],\
+[	-5.05687674, -0.00410208, 0.00217298, 6.05277466, 0.98620889, 0.99372494, 0.45832131],\
+[	-5.06012896, -0.00409821, 0.00217148, 6.05603074, 0.98622514, 0.99373030, 0.45840525],\
+[	-5.06337469, -0.00409436, 0.00216999, 6.05928033, 0.98624135, 0.99373565, 0.45848909],\
+[	-5.06661393, -0.00409051, 0.00216851, 6.06252341, 0.98625753, 0.99374098, 0.45857285],\
+[	-5.06984668, -0.00408668, 0.00216703, 6.06576000, 0.98627366, 0.99374630, 0.45865651],\
+[	-5.07307294, -0.00408285, 0.00216555, 6.06899010, 0.98628975, 0.99375161, 0.45874007],\
+[	-5.07629272, -0.00407902, 0.00216408, 6.07221370, 0.98630581, 0.99375690, 0.45882355],\
+[	-5.07950602, -0.00407521, 0.00216261, 6.07543081, 0.98632182, 0.99376218, 0.45890693],\
+[	-5.08271283, -0.00407141, 0.00216115, 6.07864143, 0.98633780, 0.99376745, 0.45899021],\
+[	-5.08591317, -0.00406761, 0.00215969, 6.08184556, 0.98635374, 0.99377270, 0.45907339],\
+[	-5.08910703, -0.00406382, 0.00215823, 6.08504321, 0.98636965, 0.99377795, 0.45915648],\
+[	-5.09229441, -0.00406004, 0.00215678, 6.08823437, 0.98638551, 0.99378318, 0.45923947],\
+[	-5.09547532, -0.00405627, 0.00215534, 6.09141905, 0.98640134, 0.99378840, 0.45932235],\
+[	-5.09864975, -0.00405250, 0.00215390, 6.09459725, 0.98641713, 0.99379360, 0.45940514],\
+[	-5.10181772, -0.00404874, 0.00215246, 6.09776897, 0.98643288, 0.99379880, 0.45948783],\
+[	-5.10497922, -0.00404500, 0.00215102, 6.10093422, 0.98644859, 0.99380398, 0.45957041],\
+[	-5.10813425, -0.00404125, 0.00214960, 6.10409300, 0.98646427, 0.99380915, 0.45965289],\
+[	-5.11128282, -0.00403752, 0.00214817, 6.10724530, 0.98647991, 0.99381431, 0.45973527],\
+[	-5.11442494, -0.00403379, 0.00214675, 6.11039114, 0.98649552, 0.99381946, 0.45981755],\
+[	-5.11756059, -0.00403008, 0.00214533, 6.11353051, 0.98651108, 0.99382459, 0.45989972],\
+[	-5.12068979, -0.00402637, 0.00214392, 6.11666343, 0.98652662, 0.99382971, 0.45998178],\
+[	-5.12381254, -0.00402266, 0.00214251, 6.11978988, 0.98654211, 0.99383483, 0.46006373],\
+[	-5.12692884, -0.00401897, 0.00214110, 6.12290987, 0.98655757, 0.99383993, 0.46014558],\
+[	-5.13003869, -0.00401528, 0.00213970, 6.12602341, 0.98657300, 0.99384502, 0.46022732],\
+[	-5.13314210, -0.00401160, 0.00213831, 6.12913050, 0.98658838, 0.99385010, 0.46030896],\
+[	-5.13623906, -0.00400792, 0.00213691, 6.13223114, 0.98660374, 0.99385516, 0.46039048],\
+[	-5.13932959, -0.00400426, 0.00213552, 6.13532533, 0.98661906, 0.99386022, 0.46047189],\
+[	-5.14241368, -0.00400060, 0.00213413, 6.13841308, 0.98663434, 0.99386527, 0.46055319],\
+[	-5.14549135, -0.00399695, 0.00213275, 6.14149440, 0.98664959, 0.99387030, 0.46063438],\
+[	-5.14856258, -0.00399330, 0.00213137, 6.14456928, 0.98666480, 0.99387532, 0.46071546],\
+[	-5.15162739, -0.00398967, 0.00213000, 6.14763772, 0.98667998, 0.99388034, 0.46079643],\
+[	-5.15468577, -0.00398604, 0.00212862, 6.15069974, 0.98669512, 0.99388534, 0.46087728],\
+[	-5.15773774, -0.00398241, 0.00212725, 6.15375533, 0.98671023, 0.99389033, 0.46095802],\
+[	-5.16078329, -0.00397880, 0.00212589, 6.15680449, 0.98672531, 0.99389532, 0.46103864],\
+[	-5.16382243, -0.00397519, 0.00212453, 6.15984724, 0.98674035, 0.99390029, 0.46111915],\
+[	-5.16685516, -0.00397159, 0.00212317, 6.16288358, 0.98675535, 0.99390525, 0.46119954],\
+[	-5.16988149, -0.00396799, 0.00212181, 6.16591350, 0.98677033, 0.99391020, 0.46127982],\
+[	-5.17290141, -0.00396440, 0.00212046, 6.16893701, 0.98678527, 0.99391514, 0.46135997],\
+[	-5.17591494, -0.00396082, 0.00211911, 6.17195412, 0.98680017, 0.99392007, 0.46144001],\
+[	-5.17892208, -0.00395724, 0.00211776, 6.17496483, 0.98681505, 0.99392499, 0.46151994],\
+[	-5.18192282, -0.00395368, 0.00211642, 6.17796914, 0.98682989, 0.99392990, 0.46159974],\
+[	-5.18491718, -0.00395011, 0.00211508, 6.18096706, 0.98684470, 0.99393481, 0.46167943],\
+[	-5.18790516, -0.00394656, 0.00211374, 6.18395860, 0.98685947, 0.99393970, 0.46175899],\
+[	-5.19088675, -0.00394301, 0.00211241, 6.18694374, 0.98687421, 0.99394458, 0.46183843],\
+[	-5.19386198, -0.00393947, 0.00211108, 6.18992251, 0.98688892, 0.99394945, 0.46191776],\
+[	-5.19683083, -0.00393593, 0.00210975, 6.19289490, 0.98690360, 0.99395432, 0.46199696],\
+[	-5.19979332, -0.00393241, 0.00210843, 6.19586092, 0.98691824, 0.99395917, 0.46207604],\
+[	-5.20274945, -0.00392888, 0.00210710, 6.19882057, 0.98693285, 0.99396401, 0.46215500],\
+[	-5.20569922, -0.00392537, 0.00210578, 6.20177385, 0.98694743, 0.99396885, 0.46223383],\
+[	-5.20864264, -0.00392186, 0.00210447, 6.20472078, 0.98696198, 0.99397367, 0.46231254],\
+[	-5.21157971, -0.00391835, 0.00210315, 6.20766135, 0.98697650, 0.99397849, 0.46239113],\
+[	-5.21451043, -0.00391486, 0.00210184, 6.21059558, 0.98699098, 0.99398330, 0.46246959],\
+[	-5.21743482, -0.00391137, 0.00210054, 6.21352345, 0.98700544, 0.99398810, 0.46254793],\
+[	-5.22035287, -0.00390788, 0.00209923, 6.21644499, 0.98701986, 0.99399289, 0.46262614],\
+[	-5.22326459, -0.00390440, 0.00209793, 6.21936019, 0.98703425, 0.99399767, 0.46270423],\
+[	-5.22616999, -0.00390093, 0.00209663, 6.22226905, 0.98704861, 0.99400244, 0.46278219],\
+[	-5.22906906, -0.00389747, 0.00209533, 6.22517159, 0.98706294, 0.99400720, 0.46286003],\
+[	-5.23196182, -0.00389401, 0.00209404, 6.22806781, 0.98707724, 0.99401196, 0.46293774],\
+[	-5.23484826, -0.00389055, 0.00209274, 6.23095771, 0.98709151, 0.99401670, 0.46301532],\
+[	-5.23772840, -0.00388711, 0.00209145, 6.23384129, 0.98710574, 0.99402144, 0.46309277],\
+[	-5.24060224, -0.00388366, 0.00209017, 6.23671857, 0.98711995, 0.99402617, 0.46317009],\
+[	-5.24346978, -0.00388023, 0.00208888, 6.23958955, 0.98713413, 0.99403089, 0.46324729],\
+[	-5.24633103, -0.00387680, 0.00208760, 6.24245423, 0.98714827, 0.99403560, 0.46332436],\
+[	-5.24918599, -0.00387338, 0.00208632, 6.24531261, 0.98716239, 0.99404030, 0.46340129],\
+[	-5.25203467, -0.00386996, 0.00208504, 6.24816471, 0.98717648, 0.99404500, 0.46347810],\
+[	-5.25487707, -0.00386655, 0.00208377, 6.25101053, 0.98719053, 0.99404969, 0.46355478],\
+[	-5.25771320, -0.00386314, 0.00208250, 6.25385007, 0.98720456, 0.99405436, 0.46363133],\
+[	-5.26054307, -0.00385974, 0.00208123, 6.25668333, 0.98721856, 0.99405904, 0.46370775],\
+[	-5.26336668, -0.00385634, 0.00207996, 6.25951033, 0.98723253, 0.99406370, 0.46378403],\
+[	-5.26618402, -0.00385295, 0.00207869, 6.26233107, 0.98724646, 0.99406835, 0.46386019],\
+[	-5.26899512, -0.00384957, 0.00207743, 6.26514555, 0.98726037, 0.99407300, 0.46393621],\
+[	-5.27179998, -0.00384619, 0.00207617, 6.26795379, 0.98727425, 0.99407764, 0.46401210],\
+[	-5.27459860, -0.00384282, 0.00207491, 6.27075577, 0.98728810, 0.99408227, 0.46408786],\
+[	-5.27739098, -0.00383945, 0.00207365, 6.27355152, 0.98730193, 0.99408689, 0.46416348],\
+[	-5.28017713, -0.00383609, 0.00207240, 6.27634104, 0.98731572, 0.99409151, 0.46423898],\
+[	-5.28295706, -0.00383274, 0.00207115, 6.27912432, 0.98732949, 0.99409612, 0.46431433],\
+[	-5.28573078, -0.00382939, 0.00206989, 6.28190139, 0.98734322, 0.99410072, 0.46438956],\
+[	-5.28849828, -0.00382604, 0.00206865, 6.28467224, 0.98735693, 0.99410531, 0.46446465],\
+[	-5.29125958, -0.00382271, 0.00206740, 6.28743687, 0.98737061, 0.99410989, 0.46453961],\
+[	-5.29401468, -0.00381937, 0.00206616, 6.29019530, 0.98738426, 0.99411447, 0.46461443],\
+[	-5.29676358, -0.00381604, 0.00206491, 6.29294754, 0.98739789, 0.99411904, 0.46468912],\
+[	-5.29950630, -0.00381272, 0.00206367, 6.29569358, 0.98741148, 0.99412361, 0.46476368],\
+[	-5.30224283, -0.00380940, 0.00206243, 6.29843343, 0.98742505, 0.99412816, 0.46483809],\
+[	-5.30497319, -0.00380609, 0.00206120, 6.30116710, 0.98743859, 0.99413271, 0.46491238],\
+[	-5.30769738, -0.00380279, 0.00205996, 6.30389459, 0.98745210, 0.99413725, 0.46498652],\
+[	-5.31041540, -0.00379948, 0.00205873, 6.30661592, 0.98746559, 0.99414179, 0.46506054],\
+[	-5.31312727, -0.00379619, 0.00205750, 6.30933108, 0.98747905, 0.99414631, 0.46513441],\
+[	-5.31583299, -0.00379290, 0.00205627, 6.31204009, 0.98749248, 0.99415083, 0.46520815],\
+[	-5.31853255, -0.00378961, 0.00205504, 6.31474294, 0.98750588, 0.99415535, 0.46528175],\
+[	-5.32122598, -0.00378633, 0.00205382, 6.31743965, 0.98751926, 0.99415985, 0.46535522],\
+[	-5.32391328, -0.00378306, 0.00205259, 6.32013023, 0.98753261, 0.99416435, 0.46542855],\
+[	-5.32659445, -0.00377979, 0.00205137, 6.32281466, 0.98754593, 0.99416884, 0.46550174],\
+[	-5.32926950, -0.00377652, 0.00205015, 6.32549298, 0.98755923, 0.99417333, 0.46557479],\
+[	-5.33193843, -0.00377326, 0.00204893, 6.32816517, 0.98757249, 0.99417781, 0.46564771],\
+[	-5.33460126, -0.00377000, 0.00204772, 6.33083125, 0.98758574, 0.99418228, 0.46572049],\
+[	-5.33725798, -0.00376675, 0.00204650, 6.33349123, 0.98759895, 0.99418674, 0.46579313],\
+[	-5.33990861, -0.00376351, 0.00204529, 6.33614511, 0.98761214, 0.99419120, 0.46586563],\
+[	-5.34255316, -0.00376027, 0.00204408, 6.33879289, 0.98762531, 0.99419565, 0.46593799],\
+[	-5.34519162, -0.00375703, 0.00204287, 6.34143458, 0.98763844, 0.99420010, 0.46601022],\
+[	-5.34782400, -0.00375380, 0.00204166, 6.34407020, 0.98765155, 0.99420454, 0.46608230],\
+[	-5.35045032, -0.00375058, 0.00204045, 6.34669974, 0.98766464, 0.99420897, 0.46615425],\
+[	-5.35307057, -0.00374736, 0.00203925, 6.34932321, 0.98767770, 0.99421340, 0.46622606],\
+[	-5.35568477, -0.00374414, 0.00203804, 6.35194063, 0.98769073, 0.99421781, 0.46629773],\
+[	-5.35829292, -0.00374093, 0.00203684, 6.35455199, 0.98770374, 0.99422223, 0.46636926],\
+[	-5.36089503, -0.00373773, 0.00203564, 6.35715730, 0.98771672, 0.99422663, 0.46644065],\
+[	-5.36349110, -0.00373453, 0.00203444, 6.35975657, 0.98772968, 0.99423103, 0.46651190],\
+[	-5.36608114, -0.00373133, 0.00203324, 6.36234981, 0.98774261, 0.99423543, 0.46658301],\
+[	-5.36866517, -0.00372814, 0.00203205, 6.36493703, 0.98775552, 0.99423982, 0.46665398],\
+[	-5.37124318, -0.00372495, 0.00203085, 6.36751823, 0.98776840, 0.99424420, 0.46672482],\
+[	-5.37381518, -0.00372177, 0.00202966, 6.37009341, 0.98778125, 0.99424857, 0.46679551],\
+[	-5.37638118, -0.00371859, 0.00202847, 6.37266259, 0.98779408, 0.99425294, 0.46686606],\
+[	-5.37894119, -0.00371542, 0.00202728, 6.37522577, 0.98780689, 0.99425730, 0.46693647],\
+[	-5.38149521, -0.00371225, 0.00202609, 6.37778296, 0.98781967, 0.99426166, 0.46700674],\
+[	-5.38404325, -0.00370909, 0.00202490, 6.38033416, 0.98783243, 0.99426601, 0.46707687],\
+[	-5.38658532, -0.00370593, 0.00202371, 6.38287939, 0.98784516, 0.99427036, 0.46714686],\
+[	-5.38912142, -0.00370278, 0.00202253, 6.38541865, 0.98785786, 0.99427470, 0.46721671],\
+[	-5.39165157, -0.00369963, 0.00202134, 6.38795194, 0.98787055, 0.99427903, 0.46728642],\
+[	-5.39417576, -0.00369648, 0.00202016, 6.39047928, 0.98788320, 0.99428336, 0.46735598],\
+[	-5.39669401, -0.00369334, 0.00201898, 6.39300067, 0.98789584, 0.99428768, 0.46742541],\
+[	-5.39920633, -0.00369021, 0.00201780, 6.39551612, 0.98790845, 0.99429200, 0.46749470],\
+[	-5.40171272, -0.00368707, 0.00201662, 6.39802564, 0.98792103, 0.99429631, 0.46756384],\
+[	-5.40421318, -0.00368395, 0.00201544, 6.40052923, 0.98793359, 0.99430061, 0.46763284],\
+[	-5.40670773, -0.00368082, 0.00201427, 6.40302690, 0.98794613, 0.99430491, 0.46770170],\
+[	-5.40919637, -0.00367771, 0.00201309, 6.40551867, 0.98795864, 0.99430920, 0.46777042],\
+[	-5.41167912, -0.00367459, 0.00201192, 6.40800452, 0.98797113, 0.99431349, 0.46783900],\
+[	-5.41415597, -0.00367148, 0.00201075, 6.41048448, 0.98798360, 0.99431777, 0.46790744],\
+[	-5.41662693, -0.00366838, 0.00200957, 6.41295855, 0.98799604, 0.99432205, 0.46797574],\
+[	-5.41909202, -0.00366528, 0.00200840, 6.41542674, 0.98800846, 0.99432632, 0.46804389],\
+[	-5.42155124, -0.00366218, 0.00200724, 6.41788906, 0.98802085, 0.99433058, 0.46811190],\
+[	-5.42400460, -0.00365909, 0.00200607, 6.42034551, 0.98803323, 0.99433484, 0.46817978],\
+[	-5.42645210, -0.00365600, 0.00200490, 6.42279610, 0.98804557, 0.99433910, 0.46824751],\
+[	-5.42889376, -0.00365292, 0.00200374, 6.42524084, 0.98805790, 0.99434334, 0.46831509],\
+[	-5.43132958, -0.00364984, 0.00200257, 6.42767973, 0.98807020, 0.99434759, 0.46838254],\
+[	-5.43375956, -0.00364677, 0.00200141, 6.43011279, 0.98808248, 0.99435183, 0.46844985],\
+[	-5.43618372, -0.00364370, 0.00200024, 6.43254002, 0.98809474, 0.99435606, 0.46851701],\
+[	-5.43860207, -0.00364063, 0.00199908, 6.43496143, 0.98810697, 0.99436029, 0.46858403],\
+[	-5.44101460, -0.00363757, 0.00199792, 6.43737703, 0.98811918, 0.99436451, 0.46865091],\
+[	-5.44342134, -0.00363451, 0.00199676, 6.43978683, 0.98813137, 0.99436872, 0.46871765],\
+[	-5.44582228, -0.00363146, 0.00199561, 6.44219082, 0.98814353, 0.99437294, 0.46878424],\
+[	-5.44821744, -0.00362841, 0.00199445, 6.44458903, 0.98815567, 0.99437714, 0.46885070],\
+[	-5.45060682, -0.00362536, 0.00199329, 6.44698145, 0.98816779, 0.99438134, 0.46891701],\
+[	-5.45299043, -0.00362232, 0.00199214, 6.44936811, 0.98817989, 0.99438554, 0.46898318],\
+[	-5.45536828, -0.00361929, 0.00199098, 6.45174899, 0.98819196, 0.99438973, 0.46904921],\
+[	-5.45774037, -0.00361625, 0.00198983, 6.45412412, 0.98820402, 0.99439392, 0.46911510],\
+[	-5.46010672, -0.00361323, 0.00198868, 6.45649350, 0.98821605, 0.99439810, 0.46918084],\
+[	-5.46246734, -0.00361020, 0.00198753, 6.45885714, 0.98822805, 0.99440227, 0.46924645],\
+[	-5.46482222, -0.00360718, 0.00198638, 6.46121504, 0.98824004, 0.99440644, 0.46931191],\
+[	-5.46717138, -0.00360417, 0.00198523, 6.46356722, 0.98825200, 0.99441061, 0.46937723],\
+[	-5.46951483, -0.00360115, 0.00198408, 6.46591367, 0.98826395, 0.99441477, 0.46944241],\
+[	-5.47185257, -0.00359814, 0.00198293, 6.46825442, 0.98827587, 0.99441892, 0.46950744],\
+[	-5.47418461, -0.00359514, 0.00198178, 6.47058947, 0.98828776, 0.99442308, 0.46957234],\
+[	-5.47651097, -0.00359214, 0.00198064, 6.47291883, 0.98829964, 0.99442722, 0.46963709],\
+[	-5.47883164, -0.00358914, 0.00197949, 6.47524250, 0.98831150, 0.99443136, 0.46970170],\
+[	-5.48114664, -0.00358615, 0.00197835, 6.47756049, 0.98832333, 0.99443550, 0.46976617],\
+[	-5.48345598, -0.00358316, 0.00197721, 6.47987281, 0.98833514, 0.99443963, 0.46983050],\
+[	-5.48575966, -0.00358018, 0.00197606, 6.48217948, 0.98834693, 0.99444376, 0.46989469],\
+[	-5.48805769, -0.00357720, 0.00197492, 6.48448049, 0.98835870, 0.99444788, 0.46995873],\
+[	-5.49035007, -0.00357422, 0.00197378, 6.48677585, 0.98837045, 0.99445200, 0.47002264],\
+[	-5.49263683, -0.00357125, 0.00197264, 6.48906558, 0.98838217, 0.99445611, 0.47008640],\
+[	-5.49491797, -0.00356828, 0.00197150, 6.49134968, 0.98839388, 0.99446022, 0.47015002],\
+[	-5.49719348, -0.00356532, 0.00197036, 6.49362817, 0.98840556, 0.99446432, 0.47021350],\
+[	-5.49946339, -0.00356236, 0.00196923, 6.49590104, 0.98841723, 0.99446842, 0.47027684],\
+[	-5.50172771, -0.00355940, 0.00196809, 6.49816831, 0.98842887, 0.99447251, 0.47034004],\
+[	-5.50398643, -0.00355645, 0.00196695, 6.50042998, 0.98844049, 0.99447660, 0.47040310],\
+[	-5.50623957, -0.00355350, 0.00196582, 6.50268607, 0.98845209, 0.99448068, 0.47046602],\
+[	-5.50848713, -0.00355055, 0.00196468, 6.50493658, 0.98846367, 0.99448476, 0.47052879],\
+[	-5.51072913, -0.00354761, 0.00196355, 6.50718152, 0.98847523, 0.99448884, 0.47059143],\
+[	-5.51296557, -0.00354467, 0.00196242, 6.50942090, 0.98848677, 0.99449291, 0.47065392],\
+[	-5.51519647, -0.00354174, 0.00196129, 6.51165473, 0.98849828, 0.99449698, 0.47071627],\
+[	-5.51742182, -0.00353881, 0.00196016, 6.51388301, 0.98850978, 0.99450104, 0.47077849],\
+[	-5.51964164, -0.00353588, 0.00195902, 6.51610576, 0.98852126, 0.99450510, 0.47084056],\
+[	-5.52185594, -0.00353296, 0.00195789, 6.51832298, 0.98853271, 0.99450915, 0.47090249],\
+[	-5.52406473, -0.00353004, 0.00195677, 6.52053469, 0.98854415, 0.99451320, 0.47096428],\
+[	-5.52626800, -0.00352712, 0.00195564, 6.52274088, 0.98855556, 0.99451724, 0.47102593],\
+[	-5.52846578, -0.00352421, 0.00195451, 6.52494157, 0.98856696, 0.99452128, 0.47108744],\
+[	-5.53065808, -0.00352130, 0.00195338, 6.52713677, 0.98857834, 0.99452532, 0.47114881],\
+[	-5.53284489, -0.00351840, 0.00195226, 6.52932649, 0.98858969, 0.99452935, 0.47121004],\
+[	-5.53502623, -0.00351550, 0.00195113, 6.53151073, 0.98860103, 0.99453337, 0.47127113],\
+[	-5.53720210, -0.00351260, 0.00195001, 6.53368950, 0.98861234, 0.99453740, 0.47133208],\
+[	-5.53937252, -0.00350971, 0.00194888, 6.53586282, 0.98862364, 0.99454141, 0.47139289],\
+[	-5.54153750, -0.00350682, 0.00194776, 6.53803068, 0.98863491, 0.99454543, 0.47145356],\
+[	-5.54369704, -0.00350393, 0.00194663, 6.54019311, 0.98864617, 0.99454944, 0.47151409],\
+[	-5.54585115, -0.00350105, 0.00194551, 6.54235010, 0.98865740, 0.99455344, 0.47157449],\
+[	-5.54799984, -0.00349817, 0.00194439, 6.54450167, 0.98866862, 0.99455744, 0.47163474],\
+[	-5.55014311, -0.00349529, 0.00194327, 6.54664782, 0.98867982, 0.99456144, 0.47169485],\
+[	-5.55228099, -0.00349242, 0.00194215, 6.54878857, 0.98869099, 0.99456543, 0.47175483],\
+[	-5.55441347, -0.00348955, 0.00194103, 6.55092392, 0.98870215, 0.99456942, 0.47181466],\
+[	-5.55654057, -0.00348669, 0.00193991, 6.55305388, 0.98871329, 0.99457340, 0.47187436],\
+[	-5.55866229, -0.00348383, 0.00193879, 6.55517846, 0.98872441, 0.99457738, 0.47193391],\
+[	-5.56077864, -0.00348097, 0.00193767, 6.55729767, 0.98873551, 0.99458136, 0.47199333],\
+[	-5.56288964, -0.00347811, 0.00193655, 6.55941152, 0.98874659, 0.99458533, 0.47205261],\
+[	-5.56499528, -0.00347526, 0.00193544, 6.56152002, 0.98875765, 0.99458930, 0.47211176],\
+[	-5.56709558, -0.00347242, 0.00193432, 6.56362317, 0.98876869, 0.99459326, 0.47217076],\
+[	-5.56919055, -0.00346957, 0.00193321, 6.56572098, 0.98877972, 0.99459722, 0.47222962],\
+[	-5.57128020, -0.00346673, 0.00193209, 6.56781347, 0.98879072, 0.99460118, 0.47228835],\
+[	-5.57336453, -0.00346390, 0.00193098, 6.56990064, 0.98880171, 0.99460513, 0.47234694],\
+[	-5.57544356, -0.00346106, 0.00192986, 6.57198250, 0.98881267, 0.99460907, 0.47240539],\
+[	-5.57751729, -0.00345823, 0.00192875, 6.57405906, 0.98882362, 0.99461302, 0.47246371],\
+[	-5.57958573, -0.00345541, 0.00192764, 6.57613032, 0.98883455, 0.99461696, 0.47252188],\
+[	-5.58164889, -0.00345259, 0.00192652, 6.57819631, 0.98884546, 0.99462089, 0.47257992],\
+[	-5.58370679, -0.00344977, 0.00192541, 6.58025702, 0.98885635, 0.99462482, 0.47263782],\
+[	-5.58575942, -0.00344695, 0.00192430, 6.58231247, 0.98886722, 0.99462875, 0.47269559],\
+[	-5.58780679, -0.00344414, 0.00192319, 6.58436266, 0.98887808, 0.99463267, 0.47275321],\
+[	-5.58984893, -0.00344133, 0.00192208, 6.58640760, 0.98888891, 0.99463659, 0.47281070],\
+[	-5.59188583, -0.00343852, 0.00192097, 6.58844731, 0.98889973, 0.99464051, 0.47286806],\
+[	-5.59391750, -0.00343572, 0.00191986, 6.59048178, 0.98891053, 0.99464442, 0.47292528],\
+[	-5.59594396, -0.00343292, 0.00191875, 6.59251104, 0.98892131, 0.99464833, 0.47298236],\
+[	-5.59796521, -0.00343013, 0.00191764, 6.59453508, 0.98893207, 0.99465223, 0.47303930],\
+[	-5.59998126, -0.00342733, 0.00191653, 6.59655393, 0.98894281, 0.99465613, 0.47309611],\
+[	-5.60199212, -0.00342455, 0.00191543, 6.59856758, 0.98895354, 0.99466003, 0.47315278],\
+[	-5.60399781, -0.00342176, 0.00191432, 6.60057605, 0.98896425, 0.99466392, 0.47320932],\
+[	-5.60599831, -0.00341898, 0.00191321, 6.60257934, 0.98897493, 0.99466781, 0.47326572],\
+[	-5.60799366, -0.00341620, 0.00191211, 6.60457746, 0.98898561, 0.99467169, 0.47332198],\
+[	-5.60998385, -0.00341342, 0.00191100, 6.60657043, 0.98899626, 0.99467557, 0.47337811],\
+[	-5.61196890, -0.00341065, 0.00190990, 6.60855825, 0.98900689, 0.99467945, 0.47343411],\
+[	-5.61394881, -0.00340788, 0.00190879, 6.61054093, 0.98901751, 0.99468332, 0.47348997],\
+[	-5.61592360, -0.00340512, 0.00190769, 6.61251848, 0.98902811, 0.99468719, 0.47354569],\
+[	-5.61789327, -0.00340235, 0.00190659, 6.61449091, 0.98903869, 0.99469106, 0.47360128],\
+[	-5.61985783, -0.00339960, 0.00190548, 6.61645823, 0.98904926, 0.99469492, 0.47365674],\
+[	-5.62181729, -0.00339684, 0.00190438, 6.61842045, 0.98905980, 0.99469878, 0.47371206],\
+[	-5.62377166, -0.00339409, 0.00190328, 6.62037757, 0.98907033, 0.99470263, 0.47376724],\
+[	-5.62572095, -0.00339134, 0.00190218, 6.62232961, 0.98908084, 0.99470648, 0.47382230],\
+[	-5.62766517, -0.00338859, 0.00190108, 6.62427658, 0.98909133, 0.99471033, 0.47387721],\
+[	-5.62960432, -0.00338585, 0.00189998, 6.62621847, 0.98910181, 0.99471417, 0.47393200],\
+[	-5.63153842, -0.00338311, 0.00189888, 6.62815531, 0.98911227, 0.99471801, 0.47398665],\
+[	-5.63346748, -0.00338037, 0.00189778, 6.63008711, 0.98912271, 0.99472185, 0.47404117],\
+[	-5.63539150, -0.00337764, 0.00189668, 6.63201386, 0.98913313, 0.99472568, 0.47409555],\
+[	-5.63731050, -0.00337491, 0.00189558, 6.63393558, 0.98914354, 0.99472951, 0.47414980],\
+[	-5.63922447, -0.00337218, 0.00189448, 6.63585229, 0.98915393, 0.99473333, 0.47420392],\
+[	-5.64113344, -0.00336946, 0.00189338, 6.63776398, 0.98916430, 0.99473716, 0.47425791],\
+[	-5.64303741, -0.00336674, 0.00189229, 6.63967067, 0.98917466, 0.99474097, 0.47431176],\
+[	-5.64493639, -0.00336402, 0.00189119, 6.64157237, 0.98918499, 0.99474479, 0.47436548],\
+[	-5.64683039, -0.00336131, 0.00189009, 6.64346908, 0.98919531, 0.99474860, 0.47441907],\
+[	-5.64871942, -0.00335860, 0.00188899, 6.64536082, 0.98920562, 0.99475241, 0.47447252],\
+[	-5.65060348, -0.00335589, 0.00188790, 6.64724759, 0.98921590, 0.99475621, 0.47452585],\
+[	-5.65248259, -0.00335319, 0.00188680, 6.64912941, 0.98922617, 0.99476001, 0.47457904],\
+[	-5.65435676, -0.00335049, 0.00188571, 6.65100628, 0.98923642, 0.99476381, 0.47463210],\
+[	-5.65622600, -0.00334779, 0.00188461, 6.65287821, 0.98924666, 0.99476760, 0.47468503],\
+[	-5.65809030, -0.00334509, 0.00188352, 6.65474521, 0.98925688, 0.99477139, 0.47473783],\
+[	-5.65994970, -0.00334240, 0.00188243, 6.65660729, 0.98926708, 0.99477517, 0.47479050],\
+[	-5.66180418, -0.00333971, 0.00188133, 6.65846447, 0.98927727, 0.99477896, 0.47484303],\
+[	-5.66365377, -0.00333703, 0.00188024, 6.66031674, 0.98928744, 0.99478273, 0.47489544],\
+[	-5.66549846, -0.00333434, 0.00187915, 6.66216412, 0.98929759, 0.99478651, 0.47494772],\
+[	-5.66733828, -0.00333166, 0.00187805, 6.66400662, 0.98930772, 0.99479028, 0.47499986],\
+[	-5.66917323, -0.00332899, 0.00187696, 6.66584424, 0.98931784, 0.99479405, 0.47505187],\
+[	-5.67100331, -0.00332631, 0.00187587, 6.66767700, 0.98932794, 0.99479781, 0.47510376],\
+[	-5.67282855, -0.00332364, 0.00187478, 6.66950490, 0.98933803, 0.99480158, 0.47515552],\
+[	-5.67464894, -0.00332098, 0.00187369, 6.67132796, 0.98934810, 0.99480533, 0.47520714],\
+[	-5.67646450, -0.00331831, 0.00187260, 6.67314618, 0.98935815, 0.99480909, 0.47525864],\
+[	-5.67827523, -0.00331565, 0.00187151, 6.67495958, 0.98936819, 0.99481284, 0.47531001],\
+[	-5.68008115, -0.00331299, 0.00187042, 6.67676816, 0.98937821, 0.99481659, 0.47536125],\
+[	-5.68188226, -0.00331034, 0.00186933, 6.67857192, 0.98938821, 0.99482033, 0.47541236],\
+[	-5.68367858, -0.00330769, 0.00186824, 6.68037089, 0.98939820, 0.99482407, 0.47546334],\
+[	-5.68547011, -0.00330504, 0.00186715, 6.68216507, 0.98940817, 0.99482781, 0.47551419],\
+[	-5.68725686, -0.00330239, 0.00186606, 6.68395447, 0.98941813, 0.99483154, 0.47556492],\
+[	-5.68903884, -0.00329975, 0.00186498, 6.68573909, 0.98942807, 0.99483527, 0.47561551],\
+[	-5.69081606, -0.00329711, 0.00186389, 6.68751895, 0.98943799, 0.99483900, 0.47566598],\
+[	-5.69258853, -0.00329447, 0.00186280, 6.68929406, 0.98944790, 0.99484272, 0.47571632],\
+[	-5.69435627, -0.00329184, 0.00186172, 6.69106443, 0.98945779, 0.99484644, 0.47576654],\
+[	-5.69611926, -0.00328921, 0.00186063, 6.69283005, 0.98946767, 0.99485016, 0.47581663],\
+[	-5.69787754, -0.00328658, 0.00185954, 6.69459096, 0.98947753, 0.99485388, 0.47586659],\
+[	-5.69963110, -0.00328396, 0.00185846, 6.69634715, 0.98948737, 0.99485759, 0.47591642],\
+[	-5.70137996, -0.00328133, 0.00185737, 6.69809863, 0.98949720, 0.99486129, 0.47596613],\
+[	-5.70312413, -0.00327872, 0.00185629, 6.69984541, 0.98950701, 0.99486500, 0.47601571],\
+[	-5.70486360, -0.00327610, 0.00185520, 6.70158750, 0.98951681, 0.99486870, 0.47606516],\
+[	-5.70659840, -0.00327349, 0.00185412, 6.70332492, 0.98952659, 0.99487239, 0.47611449],\
+[	-5.70832854, -0.00327088, 0.00185304, 6.70505766, 0.98953636, 0.99487609, 0.47616370],\
+[	-5.71005402, -0.00326827, 0.00185195, 6.70678575, 0.98954611, 0.99487978, 0.47621277],\
+[	-5.71177484, -0.00326567, 0.00185087, 6.70850918, 0.98955584, 0.99488347, 0.47626172],\
+[	-5.71349103, -0.00326306, 0.00184979, 6.71022797, 0.98956556, 0.99488715, 0.47631055],\
+[	-5.71520259, -0.00326047, 0.00184870, 6.71194212, 0.98957526, 0.99489083, 0.47635925],\
+[	-5.71690953, -0.00325787, 0.00184762, 6.71365166, 0.98958495, 0.99489451, 0.47640783],\
+[	-5.71861185, -0.00325528, 0.00184654, 6.71535658, 0.98959462, 0.99489818, 0.47645628],\
+[	-5.72030958, -0.00325269, 0.00184546, 6.71705689, 0.98960428, 0.99490185, 0.47650461],\
+[	-5.72200271, -0.00325010, 0.00184438, 6.71875261, 0.98961392, 0.99490552, 0.47655282],\
+[	-5.72369126, -0.00324752, 0.00184330, 6.72044374, 0.98962355, 0.99490918, 0.47660090],\
+[	-5.72537523, -0.00324494, 0.00184222, 6.72213029, 0.98963316, 0.99491284, 0.47664886],\
+[	-5.72705463, -0.00324236, 0.00184114, 6.72381227, 0.98964276, 0.99491650, 0.47669669],\
+[	-5.72872948, -0.00323979, 0.00184006, 6.72548970, 0.98965234, 0.99492016, 0.47674440],\
+[	-5.73039979, -0.00323721, 0.00183898, 6.72716257, 0.98966190, 0.99492381, 0.47679198],\
+[	-5.73206555, -0.00323464, 0.00183790, 6.72883091, 0.98967145, 0.99492746, 0.47683945],\
+[	-5.73372679, -0.00323208, 0.00183682, 6.73049471, 0.98968099, 0.99493110, 0.47688679],\
+[	-5.73538351, -0.00322952, 0.00183574, 6.73215399, 0.98969051, 0.99493474, 0.47693401],\
+[	-5.73703572, -0.00322695, 0.00183466, 6.73380876, 0.98970002, 0.99493838, 0.47698111],\
+[	-5.73868343, -0.00322440, 0.00183359, 6.73545903, 0.98970951, 0.99494202, 0.47702808],\
+[	-5.74032664, -0.00322184, 0.00183251, 6.73710480, 0.98971898, 0.99494565, 0.47707494],\
+[	-5.74196538, -0.00321929, 0.00183143, 6.73874609, 0.98972844, 0.99494928, 0.47712167],\
+[	-5.74359964, -0.00321674, 0.00183036, 6.74038290, 0.98973789, 0.99495290, 0.47716828],\
+[	-5.74522943, -0.00321419, 0.00182928, 6.74201524, 0.98974732, 0.99495653, 0.47721477],\
+[	-5.74685478, -0.00321165, 0.00182820, 6.74364312, 0.98975674, 0.99496014, 0.47726113],\
+[	-5.74847567, -0.00320911, 0.00182713, 6.74526656, 0.98976614, 0.99496376, 0.47730738],\
+[	-5.75009213, -0.00320657, 0.00182605, 6.74688556, 0.98977552, 0.99496737, 0.47735351],\
+[	-5.75170417, -0.00320404, 0.00182498, 6.74850013, 0.98978490, 0.99497098, 0.47739952],\
+[	-5.75331179, -0.00320151, 0.00182390, 6.75011028, 0.98979425, 0.99497459, 0.47744540],\
+[	-5.75491499, -0.00319898, 0.00182283, 6.75171602, 0.98980360, 0.99497819, 0.47749117],\
+[	-5.75651380, -0.00319645, 0.00182176, 6.75331735, 0.98981293, 0.99498179, 0.47753682],\
+[	-5.75810822, -0.00319393, 0.00182068, 6.75491429, 0.98982224, 0.99498539, 0.47758234],\
+[	-5.75969826, -0.00319141, 0.00181961, 6.75650685, 0.98983154, 0.99498899, 0.47762775],\
+[	-5.76128392, -0.00318889, 0.00181854, 6.75809504, 0.98984082, 0.99499258, 0.47767304],\
+[	-5.76286523, -0.00318637, 0.00181746, 6.75967886, 0.98985009, 0.99499616, 0.47771821],\
+[	-5.76444218, -0.00318386, 0.00181639, 6.76125832, 0.98985935, 0.99499975, 0.47776327],\
+[	-5.76601479, -0.00318135, 0.00181532, 6.76283343, 0.98986859, 0.99500333, 0.47780820],\
+[	-5.76758306, -0.00317884, 0.00181425, 6.76440421, 0.98987782, 0.99500691, 0.47785302],\
+[	-5.76914700, -0.00317634, 0.00181318, 6.76597066, 0.98988703, 0.99501049, 0.47789772],\
+[	-5.77070663, -0.00317384, 0.00181210, 6.76753279, 0.98989623, 0.99501406, 0.47794230],\
+[	-5.77226195, -0.00317134, 0.00181103, 6.76909061, 0.98990542, 0.99501763, 0.47798676],\
+[	-5.77381298, -0.00316884, 0.00180996, 6.77064413, 0.98991459, 0.99502119, 0.47803110],\
+[	-5.77535971, -0.00316635, 0.00180889, 6.77219336, 0.98992374, 0.99502476, 0.47807533],\
+[	-5.77690216, -0.00316386, 0.00180782, 6.77373830, 0.98993289, 0.99502832, 0.47811945],\
+[	-5.77844035, -0.00316137, 0.00180675, 6.77527898, 0.98994201, 0.99503187, 0.47816344],\
+[	-5.77997427, -0.00315889, 0.00180569, 6.77681538, 0.98995113, 0.99503543, 0.47820732],\
+[	-5.78150394, -0.00315640, 0.00180462, 6.77834753, 0.98996023, 0.99503898, 0.47825108],\
+[	-5.78302936, -0.00315393, 0.00180355, 6.77987544, 0.98996931, 0.99504253, 0.47829473],\
+[	-5.78455056, -0.00315145, 0.00180248, 6.78139911, 0.98997839, 0.99504607, 0.47833826],\
+[	-5.78606752, -0.00314897, 0.00180141, 6.78291855, 0.98998744, 0.99504961, 0.47838168],\
+[	-5.78758027, -0.00314650, 0.00180035, 6.78443377, 0.98999649, 0.99505315, 0.47842498],\
+[	-5.78908882, -0.00314403, 0.00179928, 6.78594478, 0.99000552, 0.99505669, 0.47846816],\
+[	-5.79059316, -0.00314157, 0.00179821, 6.78745159, 0.99001453, 0.99506022, 0.47851123],\
+[	-5.79209332, -0.00313911, 0.00179715, 6.78895421, 0.99002354, 0.99506375, 0.47855419],\
+[	-5.79358930, -0.00313665, 0.00179608, 6.79045265, 0.99003253, 0.99506727, 0.47859703],\
+[	-5.79508110, -0.00313419, 0.00179501, 6.79194692, 0.99004150, 0.99507080, 0.47863976],\
+[	-5.79656875, -0.00313173, 0.00179395, 6.79343702, 0.99005046, 0.99507432, 0.47868238],\
+[	-5.79805224, -0.00312928, 0.00179288, 6.79492296, 0.99005941, 0.99507784, 0.47872487],\
+[	-5.79953159, -0.00312683, 0.00179182, 6.79640476, 0.99006834, 0.99508135, 0.47876726],\
+[	-5.80100681, -0.00312438, 0.00179075, 6.79788243, 0.99007726, 0.99508486, 0.47880954],\
+[	-5.80247790, -0.00312194, 0.00178969, 6.79935596, 0.99008617, 0.99508837, 0.47885170],\
+[	-5.80394487, -0.00311950, 0.00178863, 6.80082538, 0.99009506, 0.99509187, 0.47889374],\
+[	-5.80540774, -0.00311706, 0.00178756, 6.80229068, 0.99010394, 0.99509538, 0.47893568],\
+[	-5.80686651, -0.00311462, 0.00178650, 6.80375189, 0.99011281, 0.99509888, 0.47897750],\
+[	-5.80832119, -0.00311219, 0.00178544, 6.80520900, 0.99012166, 0.99510237, 0.47901921],\
+[	-5.80977179, -0.00310976, 0.00178438, 6.80666204, 0.99013050, 0.99510587, 0.47906081],\
+[	-5.81121832, -0.00310733, 0.00178331, 6.80811099, 0.99013933, 0.99510936, 0.47910230],\
+[	-5.81266079, -0.00310490, 0.00178225, 6.80955589, 0.99014814, 0.99511284, 0.47914367],\
+[	-5.81409921, -0.00310248, 0.00178119, 6.81099673, 0.99015694, 0.99511633, 0.47918494],\
+[	-5.81553358, -0.00310006, 0.00178013, 6.81243352, 0.99016573, 0.99511981, 0.47922609],\
+[	-5.81696392, -0.00309764, 0.00177907, 6.81386627, 0.99017450, 0.99512329, 0.47926714],\
+[	-5.81839023, -0.00309523, 0.00177801, 6.81529500, 0.99018326, 0.99512676, 0.47930807],\
+[	-5.81981252, -0.00309282, 0.00177695, 6.81671970, 0.99019200, 0.99513024, 0.47934889],\
+[	-5.82123081, -0.00309041, 0.00177589, 6.81814040, 0.99020074, 0.99513370, 0.47938960],\
+[	-5.82264509, -0.00308800, 0.00177483, 6.81955709, 0.99020946, 0.99513717, 0.47943020],\
+[	-5.82405539, -0.00308560, 0.00177377, 6.82096980, 0.99021816, 0.99514063, 0.47947070],\
+[	-5.82546171, -0.00308319, 0.00177271, 6.82237851, 0.99022686, 0.99514410, 0.47951108],\
+[	-5.82686405, -0.00308079, 0.00177165, 6.82378326, 0.99023554, 0.99514755, 0.47955135],\
+[	-5.82826243, -0.00307840, 0.00177059, 6.82518403, 0.99024421, 0.99515101, 0.47959152],\
+[	-5.82965686, -0.00307600, 0.00176954, 6.82658086, 0.99025286, 0.99515446, 0.47963157],\
+[	-5.83104734, -0.00307361, 0.00176848, 6.82797373, 0.99026150, 0.99515791, 0.47967152],\
+[	-5.83243389, -0.00307122, 0.00176742, 6.82936266, 0.99027013, 0.99516135, 0.47971136],\
+[	-5.83381650, -0.00306884, 0.00176637, 6.83074767, 0.99027875, 0.99516480, 0.47975109],\
+[	-5.83519520, -0.00306645, 0.00176531, 6.83212875, 0.99028735, 0.99516824, 0.47979072],\
+[	-5.83656999, -0.00306407, 0.00176425, 6.83350592, 0.99029594, 0.99517167, 0.47983023],\
+[	-5.83794088, -0.00306169, 0.00176320, 6.83487918, 0.99030451, 0.99517511, 0.47986964],\
+[	-5.83930788, -0.00305932, 0.00176214, 6.83624856, 0.99031308, 0.99517854, 0.47990894],\
+[	-5.84067099, -0.00305695, 0.00176109, 6.83761404, 0.99032163, 0.99518197, 0.47994814],\
+[	-5.84203023, -0.00305458, 0.00176003, 6.83897565, 0.99033017, 0.99518539, 0.47998722],\
+[	-5.84338560, -0.00305221, 0.00175898, 6.84033340, 0.99033869, 0.99518881, 0.48002620],\
+[	-5.84473712, -0.00304984, 0.00175793, 6.84168728, 0.99034721, 0.99519223, 0.48006508],\
+[	-5.84608479, -0.00304748, 0.00175687, 6.84303731, 0.99035571, 0.99519565, 0.48010385],\
+[	-5.84742862, -0.00304512, 0.00175582, 6.84438350, 0.99036419, 0.99519906, 0.48014251],\
+[	-5.84876862, -0.00304276, 0.00175477, 6.84572586, 0.99037267, 0.99520247, 0.48018107],\
+[	-5.85010480, -0.00304041, 0.00175371, 6.84706439, 0.99038113, 0.99520588, 0.48021952],\
+[	-5.85143717, -0.00303805, 0.00175266, 6.84839911, 0.99038958, 0.99520929, 0.48025787],\
+[	-5.85276573, -0.00303570, 0.00175161, 6.84973003, 0.99039802, 0.99521269, 0.48029611],\
+[	-5.85409050, -0.00303336, 0.00175056, 6.85105714, 0.99040644, 0.99521609, 0.48033425],\
+[	-5.85541148, -0.00303101, 0.00174951, 6.85238047, 0.99041485, 0.99521948, 0.48037228],\
+[	-5.85672868, -0.00302867, 0.00174846, 6.85370002, 0.99042325, 0.99522288, 0.48041021],\
+[	-5.85804212, -0.00302633, 0.00174741, 6.85501579, 0.99043164, 0.99522627, 0.48044803],\
+[	-5.85935180, -0.00302399, 0.00174636, 6.85632781, 0.99044002, 0.99522965, 0.48048575],\
+[	-5.86065772, -0.00302166, 0.00174531, 6.85763607, 0.99044838, 0.99523304, 0.48052337],\
+[	-5.86195991, -0.00301932, 0.00174426, 6.85894058, 0.99045673, 0.99523642, 0.48056088],\
+[	-5.86325835, -0.00301699, 0.00174321, 6.86024136, 0.99046507, 0.99523980, 0.48059829],\
+[	-5.86455308, -0.00301467, 0.00174216, 6.86153841, 0.99047339, 0.99524317, 0.48063560],\
+[	-5.86584409, -0.00301234, 0.00174111, 6.86283174, 0.99048171, 0.99524655, 0.48067281],\
+[	-5.86713139, -0.00301002, 0.00174006, 6.86412137, 0.99049001, 0.99524992, 0.48070991],\
+[	-5.86841499, -0.00300770, 0.00173902, 6.86540729, 0.99049829, 0.99525328, 0.48074691],\
+[	-5.86969490, -0.00300538, 0.00173797, 6.86668952, 0.99050657, 0.99525665, 0.48078381],\
+[	-5.87097113, -0.00300307, 0.00173692, 6.86796806, 0.99051483, 0.99526001, 0.48082060],\
+[	-5.87224368, -0.00300076, 0.00173588, 6.86924293, 0.99052309, 0.99526337, 0.48085730],\
+[	-5.87351257, -0.00299845, 0.00173483, 6.87051413, 0.99053133, 0.99526672, 0.48089389],\
+[	-5.87477781, -0.00299614, 0.00173378, 6.87178167, 0.99053955, 0.99527008, 0.48093038],\
+[	-5.87603940, -0.00299383, 0.00173274, 6.87304557, 0.99054777, 0.99527343, 0.48096678],\
+[	-5.87729735, -0.00299153, 0.00173169, 6.87430582, 0.99055597, 0.99527677, 0.48100307],\
+[	-5.87855167, -0.00298923, 0.00173065, 6.87556244, 0.99056416, 0.99528012, 0.48103926],\
+[	-5.87980237, -0.00298694, 0.00172961, 6.87681543, 0.99057234, 0.99528346, 0.48107535],\
+[	-5.88104946, -0.00298464, 0.00172856, 6.87806482, 0.99058051, 0.99528680, 0.48111134],\
+[	-5.88229294, -0.00298235, 0.00172752, 6.87931059, 0.99058867, 0.99529013, 0.48114723],\
+[	-5.88353283, -0.00298006, 0.00172648, 6.88055277, 0.99059681, 0.99529347, 0.48118302],\
+[	-5.88476913, -0.00297777, 0.00172543, 6.88179135, 0.99060494, 0.99529680, 0.48121871],\
+[	-5.88600185, -0.00297549, 0.00172439, 6.88302636, 0.99061306, 0.99530012, 0.48125430],\
+[	-5.88723100, -0.00297320, 0.00172335, 6.88425779, 0.99062117, 0.99530345, 0.48128980],\
+[	-5.88845659, -0.00297093, 0.00172231, 6.88548566, 0.99062927, 0.99530677, 0.48132519],\
+[	-5.88967862, -0.00296865, 0.00172127, 6.88670998, 0.99063735, 0.99531009, 0.48136049],\
+[	-5.89089712, -0.00296637, 0.00172022, 6.88793074, 0.99064542, 0.99531340, 0.48139569],\
+[	-5.89211207, -0.00296410, 0.00171918, 6.88914797, 0.99065348, 0.99531671, 0.48143079],\
+[	-5.89332350, -0.00296183, 0.00171814, 6.89036167, 0.99066153, 0.99532002, 0.48146579],\
+[	-5.89453141, -0.00295956, 0.00171710, 6.89157185, 0.99066957, 0.99532333, 0.48150069],\
+[	-5.89573581, -0.00295730, 0.00171607, 6.89277851, 0.99067760, 0.99532664, 0.48153550],\
+[	-5.89693670, -0.00295504, 0.00171503, 6.89398167, 0.99068561, 0.99532994, 0.48157021],\
+[	-5.89813411, -0.00295278, 0.00171399, 6.89518133, 0.99069361, 0.99533324, 0.48160482],\
+[	-5.89932802, -0.00295052, 0.00171295, 6.89637751, 0.99070160, 0.99533653, 0.48163934],\
+[	-5.90051846, -0.00294826, 0.00171191, 6.89757020, 0.99070958, 0.99533983, 0.48167376],\
+[	-5.90170544, -0.00294601, 0.00171088, 6.89875943, 0.99071755, 0.99534312, 0.48170809],\
+[	-5.90288895, -0.00294376, 0.00170984, 6.89994519, 0.99072550, 0.99534640, 0.48174231],\
+[	-5.90406901, -0.00294151, 0.00170880, 6.90112750, 0.99073345, 0.99534969, 0.48177645],\
+[	-5.90524562, -0.00293927, 0.00170777, 6.90230636, 0.99074138, 0.99535297, 0.48181048],\
+[	-5.90641881, -0.00293702, 0.00170673, 6.90348178, 0.99074930, 0.99535625, 0.48184443],\
+[	-5.90758856, -0.00293478, 0.00170569, 6.90465378, 0.99075721, 0.99535952, 0.48187827],\
+[	-5.90875490, -0.00293254, 0.00170466, 6.90582235, 0.99076511, 0.99536280, 0.48191202],\
+[	-5.90991782, -0.00293031, 0.00170363, 6.90698751, 0.99077300, 0.99536607, 0.48194568],\
+[	-5.91107735, -0.00292807, 0.00170259, 6.90814927, 0.99078087, 0.99536933, 0.48197924],\
+[	-5.91223348, -0.00292584, 0.00170156, 6.90930763, 0.99078874, 0.99537260, 0.48201271],\
+[	-5.91338622, -0.00292362, 0.00170052, 6.91046261, 0.99079659, 0.99537586, 0.48204608],\
+[	-5.91453559, -0.00292139, 0.00169949, 6.91161420, 0.99080443, 0.99537912, 0.48207936],\
+[	-5.91568159, -0.00291917, 0.00169846, 6.91276243, 0.99081226, 0.99538238, 0.48211255],\
+[	-5.91682423, -0.00291694, 0.00169743, 6.91390729, 0.99082008, 0.99538563, 0.48214564],\
+[	-5.91796352, -0.00291472, 0.00169639, 6.91504879, 0.99082789, 0.99538888, 0.48217864],\
+[	-5.91909946, -0.00291251, 0.00169536, 6.91618695, 0.99083569, 0.99539213, 0.48221155],\
+[	-5.92023207, -0.00291029, 0.00169433, 6.91732177, 0.99084347, 0.99539537, 0.48224436],\
+[	-5.92136135, -0.00290808, 0.00169330, 6.91845327, 0.99085124, 0.99539862, 0.48227709],\
+[	-5.92248731, -0.00290587, 0.00169227, 6.91958144, 0.99085901, 0.99540186, 0.48230971],\
+[	-5.92360996, -0.00290367, 0.00169124, 6.92070629, 0.99086676, 0.99540509, 0.48234225],\
+[	-5.92472930, -0.00290146, 0.00169021, 6.92182784, 0.99087450, 0.99540833, 0.48237470],\
+[	-5.92584536, -0.00289926, 0.00168918, 6.92294610, 0.99088223, 0.99541156, 0.48240705],\
+[	-5.92695812, -0.00289706, 0.00168816, 6.92406106, 0.99088995, 0.99541479, 0.48243931],\
+[	-5.92806761, -0.00289486, 0.00168713, 6.92517274, 0.99089766, 0.99541801, 0.48247148],\
+[	-5.92917382, -0.00289267, 0.00168610, 6.92628115, 0.99090535, 0.99542123, 0.48250356],\
+[	-5.93027677, -0.00289047, 0.00168507, 6.92738630, 0.99091304, 0.99542445, 0.48253555],\
+[	-5.93137647, -0.00288828, 0.00168405, 6.92848819, 0.99092071, 0.99542767, 0.48256745],\
+[	-5.93247293, -0.00288610, 0.00168302, 6.92958683, 0.99092837, 0.99543089, 0.48259926],\
+[	-5.93356614, -0.00288391, 0.00168199, 6.93068223, 0.99093603, 0.99543410, 0.48263098],\
+[	-5.93465613, -0.00288173, 0.00168097, 6.93177440, 0.99094367, 0.99543731, 0.48266260],\
+[	-5.93574289, -0.00287955, 0.00167994, 6.93286334, 0.99095130, 0.99544051, 0.48269414],\
+[	-5.93682644, -0.00287737, 0.00167892, 6.93394907, 0.99095892, 0.99544371, 0.48272559],\
+[	-5.93790678, -0.00287519, 0.00167789, 6.93503159, 0.99096653, 0.99544692, 0.48275695],\
+[	-5.93898392, -0.00287302, 0.00167687, 6.93611091, 0.99097412, 0.99545011, 0.48278822],\
+[	-5.94005788, -0.00287085, 0.00167585, 6.93718703, 0.99098171, 0.99545331, 0.48281940],\
+[	-5.94112865, -0.00286868, 0.00167482, 6.93825997, 0.99098929, 0.99545650, 0.48285049],\
+[	-5.94219625, -0.00286651, 0.00167380, 6.93932974, 0.99099685, 0.99545969, 0.48288150],\
+[	-5.94326068, -0.00286435, 0.00167278, 6.94039634, 0.99100441, 0.99546288, 0.48291241],\
+[	-5.94432196, -0.00286218, 0.00167176, 6.94145977, 0.99101195, 0.99546606, 0.48294324],\
+[	-5.94538008, -0.00286002, 0.00167074, 6.94252006, 0.99101949, 0.99546924, 0.48297398],\
+[	-5.94643506, -0.00285787, 0.00166971, 6.94357720, 0.99102701, 0.99547242, 0.48300463],\
+[	-5.94748691, -0.00285571, 0.00166869, 6.94463120, 0.99103452, 0.99547559, 0.48303520],\
+[	-5.94853563, -0.00285356, 0.00166767, 6.94568207, 0.99104202, 0.99547877, 0.48306568],\
+[	-5.94958124, -0.00285141, 0.00166666, 6.94672983, 0.99104951, 0.99548194, 0.48309607],\
+[	-5.95062373, -0.00284926, 0.00166564, 6.94777447, 0.99105699, 0.99548510, 0.48312637],\
+[	-5.95166312, -0.00284711, 0.00166462, 6.94881600, 0.99106446, 0.99548827, 0.48315659],\
+[	-5.95269941, -0.00284497, 0.00166360, 6.94985444, 0.99107192, 0.99549143, 0.48318672],\
+[	-5.95373262, -0.00284283, 0.00166258, 6.95088979, 0.99107937, 0.99549459, 0.48321676],\
+[	-5.95476275, -0.00284069, 0.00166156, 6.95192206, 0.99108681, 0.99549775, 0.48324672],\
+[	-5.95578980, -0.00283855, 0.00166055, 6.95295125, 0.99109423, 0.99550090, 0.48327660],\
+[	-5.95681380, -0.00283642, 0.00165953, 6.95397738, 0.99110165, 0.99550405, 0.48330638],\
+[	-5.95783474, -0.00283429, 0.00165852, 6.95500045, 0.99110906, 0.99550720, 0.48333609],\
+[	-5.95885262, -0.00283216, 0.00165750, 6.95602047, 0.99111645, 0.99551034, 0.48336571],\
+[	-5.95986747, -0.00283003, 0.00165648, 6.95703744, 0.99112384, 0.99551348, 0.48339524],\
+[	-5.96087929, -0.00282791, 0.00165547, 6.95805138, 0.99113121, 0.99551662, 0.48342469],\
+[	-5.96188808, -0.00282578, 0.00165446, 6.95906230, 0.99113858, 0.99551976, 0.48345405],\
+[	-5.96289385, -0.00282366, 0.00165344, 6.96007019, 0.99114593, 0.99552290, 0.48348333],\
+[	-5.96389662, -0.00282154, 0.00165243, 6.96107507, 0.99115327, 0.99552603, 0.48351252],\
+[	-5.96489638, -0.00281943, 0.00165142, 6.96207695, 0.99116061, 0.99552916, 0.48354163],\
+[	-5.96589315, -0.00281732, 0.00165040, 6.96307584, 0.99116793, 0.99553228, 0.48357066],\
+[	-5.96688693, -0.00281520, 0.00164939, 6.96407173, 0.99117524, 0.99553540, 0.48359961],\
+[	-5.96787774, -0.00281310, 0.00164838, 6.96506464, 0.99118255, 0.99553852, 0.48362846],\
+[	-5.96886557, -0.00281099, 0.00164737, 6.96605458, 0.99118984, 0.99554164, 0.48365724],\
+[	-5.96985044, -0.00280888, 0.00164636, 6.96704156, 0.99119712, 0.99554476, 0.48368594],\
+[	-5.97083235, -0.00280678, 0.00164535, 6.96802557, 0.99120439, 0.99554787, 0.48371455],\
+[	-5.97181132, -0.00280468, 0.00164434, 6.96900664, 0.99121165, 0.99555098, 0.48374308],\
+[	-5.97278734, -0.00280258, 0.00164333, 6.96998476, 0.99121891, 0.99555409, 0.48377153],\
+[	-5.97376044, -0.00280049, 0.00164232, 6.97095995, 0.99122615, 0.99555719, 0.48379989],\
+[	-5.97473060, -0.00279840, 0.00164131, 6.97193221, 0.99123338, 0.99556029, 0.48382818],\
+[	-5.97569785, -0.00279631, 0.00164031, 6.97290155, 0.99124060, 0.99556339, 0.48385638],\
+[	-5.97666219, -0.00279422, 0.00163930, 6.97386797, 0.99124781, 0.99556648, 0.48388450],\
+[	-5.97762362, -0.00279213, 0.00163829, 6.97483149, 0.99125501, 0.99556958, 0.48391254],\
+[	-5.97858216, -0.00279005, 0.00163729, 6.97579212, 0.99126220, 0.99557267, 0.48394050],\
+[	-5.97953782, -0.00278796, 0.00163628, 6.97674985, 0.99126938, 0.99557576, 0.48396837],\
+[	-5.98049059, -0.00278589, 0.00163527, 6.97770470, 0.99127655, 0.99557884, 0.48399617],\
+[	-5.98144049, -0.00278381, 0.00163427, 6.97865668, 0.99128371, 0.99558192, 0.48402389],\
+[	-5.98238752, -0.00278173, 0.00163326, 6.97960579, 0.99129087, 0.99558500, 0.48405152],\
+[	-5.98333170, -0.00277966, 0.00163226, 6.98055204, 0.99129801, 0.99558808, 0.48407908],\
+[	-5.98427302, -0.00277759, 0.00163126, 6.98149543, 0.99130514, 0.99559115, 0.48410655],\
+[	-5.98521150, -0.00277552, 0.00163025, 6.98243598, 0.99131226, 0.99559422, 0.48413395],\
+[	-5.98614715, -0.00277346, 0.00162925, 6.98337369, 0.99131937, 0.99559729, 0.48416127],\
+[	-5.98707997, -0.00277139, 0.00162825, 6.98430858, 0.99132647, 0.99560036, 0.48418851],\
+[	-5.98800996, -0.00276933, 0.00162725, 6.98524063, 0.99133356, 0.99560342, 0.48421567],\
+[	-5.98893715, -0.00276727, 0.00162625, 6.98616988, 0.99134064, 0.99560648, 0.48424275],\
+[	-5.98986153, -0.00276521, 0.00162525, 6.98709631, 0.99134771, 0.99560954, 0.48426975],\
+[	-5.99078310, -0.00276316, 0.00162425, 6.98801995, 0.99135477, 0.99561259, 0.48429667],\
+[	-5.99170189, -0.00276111, 0.00162325, 6.98894079, 0.99136183, 0.99561565, 0.48432352],\
+[	-5.99261789, -0.00275906, 0.00162225, 6.98985884, 0.99136887, 0.99561870, 0.48435028],\
+[	-5.99353112, -0.00275701, 0.00162125, 6.99077411, 0.99137590, 0.99562174, 0.48437697],\
+[	-5.99444158, -0.00275496, 0.00162025, 6.99168662, 0.99138292, 0.99562479, 0.48440358],\
+[	-5.99534927, -0.00275292, 0.00161925, 6.99259635, 0.99138994, 0.99562783, 0.48443012],\
+[	-5.99625421, -0.00275088, 0.00161826, 6.99350334, 0.99139694, 0.99563087, 0.48445657],\
+[	-5.99715640, -0.00274884, 0.00161726, 6.99440757, 0.99140393, 0.99563390, 0.48448295],\
+[	-5.99805585, -0.00274680, 0.00161626, 6.99530906, 0.99141092, 0.99563694, 0.48450926],\
+[	-5.99895257, -0.00274476, 0.00161527, 6.99620781, 0.99141789, 0.99563997, 0.48453548],\
+[	-5.99984656, -0.00274273, 0.00161427, 6.99710383, 0.99142485, 0.99564299, 0.48456163],\
+[	-6.00073784, -0.00274070, 0.00161328, 6.99799714, 0.99143181, 0.99564602, 0.48458771],\
+[	-6.00162640, -0.00273867, 0.00161228, 6.99888773, 0.99143875, 0.99564904, 0.48461370],\
+[	-6.00251225, -0.00273665, 0.00161129, 6.99977561, 0.99144569, 0.99565206, 0.48463962],\
+[	-6.00339541, -0.00273462, 0.00161030, 7.00066079, 0.99145261, 0.99565508, 0.48466547],\
+[	-6.00427588, -0.00273260, 0.00160931, 7.00154328, 0.99145953, 0.99565809, 0.48469124],\
+[	-6.00515367, -0.00273058, 0.00160831, 7.00242309, 0.99146644, 0.99566111, 0.48471693],\
+[	-6.00602878, -0.00272856, 0.00160732, 7.00330021, 0.99147334, 0.99566411, 0.48474255],\
+[	-6.00690122, -0.00272655, 0.00160633, 7.00417467, 0.99148022, 0.99566712, 0.48476810],\
+[	-6.00777100, -0.00272454, 0.00160534, 7.00504646, 0.99148710, 0.99567012, 0.48479357],\
+[	-6.00863812, -0.00272252, 0.00160435, 7.00591560, 0.99149397, 0.99567313, 0.48481896],\
+[	-6.00950260, -0.00272052, 0.00160336, 7.00678208, 0.99150083, 0.99567612, 0.48484429],\
+[	-6.01036444, -0.00271851, 0.00160237, 7.00764593, 0.99150768, 0.99567912, 0.48486953],\
+[	-6.01122364, -0.00271651, 0.00160138, 7.00850713, 0.99151452, 0.99568211, 0.48489471],\
+[	-6.01208022, -0.00271450, 0.00160039, 7.00936571, 0.99152135, 0.99568510, 0.48491980],\
+[	-6.01293417, -0.00271250, 0.00159941, 7.01022167, 0.99152817, 0.99568809, 0.48494483],\
+[	-6.01378552, -0.00271051, 0.00159842, 7.01107501, 0.99153498, 0.99569107, 0.48496978],\
+[	-6.01463426, -0.00270851, 0.00159743, 7.01192575, 0.99154179, 0.99569406, 0.48499466],\
+[	-6.01548040, -0.00270652, 0.00159645, 7.01277388, 0.99154858, 0.99569704, 0.48501947],\
+[	-6.01632394, -0.00270453, 0.00159546, 7.01361942, 0.99155537, 0.99570001, 0.48504420],\
+[	-6.01716491, -0.00270254, 0.00159448, 7.01446237, 0.99156214, 0.99570299, 0.48506886],\
+[	-6.01800329, -0.00270055, 0.00159349, 7.01530274, 0.99156891, 0.99570596, 0.48509345],\
+[	-6.01883911, -0.00269856, 0.00159251, 7.01614055, 0.99157566, 0.99570893, 0.48511797],\
+[	-6.01967236, -0.00269658, 0.00159153, 7.01697578, 0.99158241, 0.99571189, 0.48514241],\
+[	-6.02050306, -0.00269460, 0.00159054, 7.01780845, 0.99158915, 0.99571486, 0.48516678],\
+[	-6.02133120, -0.00269262, 0.00158956, 7.01863858, 0.99159588, 0.99571782, 0.48519108],\
+[	-6.02215680, -0.00269065, 0.00158858, 7.01946615, 0.99160260, 0.99572077, 0.48521531],\
+[	-6.02297987, -0.00268867, 0.00158760, 7.02029119, 0.99160931, 0.99572373, 0.48523947],\
+[	-6.02380040, -0.00268670, 0.00158662, 7.02111370, 0.99161601, 0.99572668, 0.48526355],\
+[	-6.02461841, -0.00268473, 0.00158564, 7.02193368, 0.99162270, 0.99572963, 0.48528757],\
+[	-6.02543391, -0.00268276, 0.00158466, 7.02275115, 0.99162938, 0.99573258, 0.48531151],\
+[	-6.02624690, -0.00268080, 0.00158368, 7.02356610, 0.99163606, 0.99573552, 0.48533539],\
+[	-6.02705738, -0.00267883, 0.00158270, 7.02437855, 0.99164272, 0.99573847, 0.48535919],\
+[	-6.02786537, -0.00267687, 0.00158172, 7.02518850, 0.99164938, 0.99574141, 0.48538292],\
+[	-6.02867087, -0.00267491, 0.00158074, 7.02599596, 0.99165602, 0.99574434, 0.48540659],\
+[	-6.02947389, -0.00267296, 0.00157977, 7.02680093, 0.99166266, 0.99574728, 0.48543018],\
+[	-6.03027443, -0.00267100, 0.00157879, 7.02760343, 0.99166929, 0.99575021, 0.48545370],\
+[	-6.03107251, -0.00266905, 0.00157781, 7.02840346, 0.99167591, 0.99575314, 0.48547716],\
+[	-6.03186812, -0.00266710, 0.00157684, 7.02920102, 0.99168252, 0.99575606, 0.48550054],\
+[	-6.03266127, -0.00266515, 0.00157586, 7.02999612, 0.99168912, 0.99575899, 0.48552386],\
+[	-6.03345198, -0.00266320, 0.00157489, 7.03078878, 0.99169571, 0.99576191, 0.48554710],\
+[	-6.03424025, -0.00266126, 0.00157391, 7.03157899, 0.99170230, 0.99576483, 0.48557028],\
+[	-6.03502608, -0.00265932, 0.00157294, 7.03236676, 0.99170887, 0.99576774, 0.48559339],\
+[	-6.03580948, -0.00265738, 0.00157197, 7.03315210, 0.99171544, 0.99577065, 0.48561643],\
+[	-6.03659046, -0.00265544, 0.00157100, 7.03393502, 0.99172199, 0.99577356, 0.48563940],\
+[	-6.03736903, -0.00265350, 0.00157002, 7.03471552, 0.99172854, 0.99577647, 0.48566231],\
+[	-6.03814518, -0.00265157, 0.00156905, 7.03549361, 0.99173508, 0.99577938, 0.48568514],\
+[	-6.03891894, -0.00264964, 0.00156808, 7.03626930, 0.99174161, 0.99578228, 0.48570791],\
+[	-6.03969029, -0.00264771, 0.00156711, 7.03704258, 0.99174813, 0.99578518, 0.48573061],\
+[	-6.04045926, -0.00264578, 0.00156614, 7.03781348, 0.99175464, 0.99578807, 0.48575324],\
+[	-6.04122585, -0.00264386, 0.00156517, 7.03858199, 0.99176115, 0.99579097, 0.48577581],\
+[	-6.04199006, -0.00264193, 0.00156421, 7.03934813, 0.99176764, 0.99579386, 0.48579831],\
+[	-6.04275190, -0.00264001, 0.00156324, 7.04011189, 0.99177413, 0.99579675, 0.48582075],\
+[	-6.04351138, -0.00263809, 0.00156227, 7.04087328, 0.99178061, 0.99579964, 0.48584311],\
+[	-6.04426850, -0.00263618, 0.00156130, 7.04163232, 0.99178707, 0.99580252, 0.48586541],\
+[	-6.04502327, -0.00263426, 0.00156034, 7.04238901, 0.99179353, 0.99580540, 0.48588765],\
+[	-6.04577570, -0.00263235, 0.00155937, 7.04314335, 0.99179998, 0.99580828, 0.48590981],\
+[	-6.04652579, -0.00263044, 0.00155841, 7.04389535, 0.99180643, 0.99581115, 0.48593191],\
+[	-6.04727354, -0.00262853, 0.00155744, 7.04464502, 0.99181286, 0.99581403, 0.48595395],\
+[	-6.04801898, -0.00262662, 0.00155648, 7.04539236, 0.99181929, 0.99581690, 0.48597592],\
+[	-6.04876210, -0.00262472, 0.00155552, 7.04613738, 0.99182570, 0.99581977, 0.48599782],\
+[	-6.04950290, -0.00262282, 0.00155455, 7.04688009, 0.99183211, 0.99582263, 0.48601966],\
+[	-6.05024140, -0.00262092, 0.00155359, 7.04762049, 0.99183851, 0.99582549, 0.48604144],\
+[	-6.05097760, -0.00261902, 0.00155263, 7.04835858, 0.99184490, 0.99582835, 0.48606315],\
+[	-6.05171151, -0.00261712, 0.00155167, 7.04909439, 0.99185128, 0.99583121, 0.48608479],\
+[	-6.05244313, -0.00261523, 0.00155071, 7.04982791, 0.99185765, 0.99583407, 0.48610637],\
+[	-6.05317248, -0.00261334, 0.00154975, 7.05055914, 0.99186402, 0.99583692, 0.48612789],\
+[	-6.05389955, -0.00261145, 0.00154879, 7.05128810, 0.99187037, 0.99583977, 0.48614934],\
+[	-6.05462435, -0.00260956, 0.00154783, 7.05201479, 0.99187672, 0.99584261, 0.48617073],\
+[	-6.05534689, -0.00260767, 0.00154687, 7.05273922, 0.99188306, 0.99584546, 0.48619205],\
+[	-6.05606718, -0.00260579, 0.00154591, 7.05346139, 0.99188939, 0.99584830, 0.48621331],\
+[	-6.05678521, -0.00260391, 0.00154495, 7.05418131, 0.99189571, 0.99585114, 0.48623450],\
+[	-6.05750101, -0.00260203, 0.00154400, 7.05489898, 0.99190203, 0.99585398, 0.48625564],\
+[	-6.05821457, -0.00260015, 0.00154304, 7.05561442, 0.99190833, 0.99585681, 0.48627671],\
+[	-6.05892590, -0.00259827, 0.00154209, 7.05632763, 0.99191463, 0.99585964, 0.48629772],\
+[	-6.05963501, -0.00259640, 0.00154113, 7.05703861, 0.99192092, 0.99586247, 0.48631866],\
+[	-6.06034190, -0.00259453, 0.00154018, 7.05774737, 0.99192720, 0.99586529, 0.48633954],\
+[	-6.06104657, -0.00259266, 0.00153922, 7.05845392, 0.99193347, 0.99586812, 0.48636036],\
+[	-6.06174905, -0.00259079, 0.00153827, 7.05915826, 0.99193973, 0.99587094, 0.48638112],\
+[	-6.06244932, -0.00258893, 0.00153732, 7.05986040, 0.99194598, 0.99587376, 0.48640181],\
+[	-6.06314740, -0.00258706, 0.00153637, 7.06056034, 0.99195223, 0.99587657, 0.48642244],\
+[	-6.06384330, -0.00258520, 0.00153541, 7.06125810, 0.99195847, 0.99587938, 0.48644301],\
+[	-6.06453701, -0.00258334, 0.00153446, 7.06195367, 0.99196470, 0.99588220, 0.48646352],\
+[	-6.06522855, -0.00258148, 0.00153351, 7.06264707, 0.99197092, 0.99588500, 0.48648397],\
+[	-6.06591793, -0.00257963, 0.00153256, 7.06333830, 0.99197713, 0.99588781, 0.48650436],\
+[	-6.06660514, -0.00257778, 0.00153161, 7.06402736, 0.99198334, 0.99589061, 0.48652468],\
+[	-6.06729019, -0.00257592, 0.00153067, 7.06471427, 0.99198953, 0.99589341, 0.48654494],\
+[	-6.06797309, -0.00257408, 0.00152972, 7.06539902, 0.99199572, 0.99589621, 0.48656515],\
+[	-6.06865385, -0.00257223, 0.00152877, 7.06608163, 0.99200190, 0.99589900, 0.48658529],\
+[	-6.06933248, -0.00257038, 0.00152782, 7.06676209, 0.99200807, 0.99590179, 0.48660537],\
+[	-6.07000896, -0.00256854, 0.00152688, 7.06744043, 0.99201424, 0.99590458, 0.48662539],\
+[	-6.07068333, -0.00256670, 0.00152593, 7.06811663, 0.99202039, 0.99590737, 0.48664535],\
+[	-6.07135557, -0.00256486, 0.00152499, 7.06879071, 0.99202654, 0.99591015, 0.48666525],\
+[	-6.07202570, -0.00256302, 0.00152404, 7.06946268, 0.99203268, 0.99591294, 0.48668509],\
+[	-6.07269372, -0.00256119, 0.00152310, 7.07013254, 0.99203881, 0.99591572, 0.48670487],\
+[	-6.07335964, -0.00255935, 0.00152215, 7.07080029, 0.99204493, 0.99591849, 0.48672460],\
+[	-6.07402346, -0.00255752, 0.00152121, 7.07146594, 0.99205104, 0.99592127, 0.48674426],\
+[	-6.07468520, -0.00255569, 0.00152027, 7.07212950, 0.99205715, 0.99592404, 0.48676386],\
+[	-6.07534484, -0.00255387, 0.00151933, 7.07279098, 0.99206325, 0.99592681, 0.48678341],\
+[	-6.07600241, -0.00255204, 0.00151839, 7.07345037, 0.99206934, 0.99592957, 0.48680289],\
+[	-6.07665791, -0.00255022, 0.00151745, 7.07410769, 0.99207542, 0.99593234, 0.48682232],\
+[	-6.07731134, -0.00254840, 0.00151651, 7.07476294, 0.99208149, 0.99593510, 0.48684169],\
+[	-6.07796271, -0.00254658, 0.00151557, 7.07541613, 0.99208756, 0.99593786, 0.48686100],\
+[	-6.07861202, -0.00254476, 0.00151463, 7.07606726, 0.99209362, 0.99594061, 0.48688025],\
+[	-6.07925928, -0.00254294, 0.00151369, 7.07671634, 0.99209967, 0.99594336, 0.48689944],\
+[	-6.07990450, -0.00254113, 0.00151275, 7.07736337, 0.99210571, 0.99594612, 0.48691858],\
+[	-6.08054769, -0.00253932, 0.00151182, 7.07800837, 0.99211174, 0.99594886, 0.48693766],\
+[	-6.08118884, -0.00253751, 0.00151088, 7.07865133, 0.99211777, 0.99595161, 0.48695668],\
+[	-6.08182796, -0.00253570, 0.00150994, 7.07929226, 0.99212379, 0.99595435, 0.48697564],\
+[	-6.08246507, -0.00253390, 0.00150901, 7.07993117, 0.99212980, 0.99595709, 0.48699454],\
+[	-6.08310016, -0.00253210, 0.00150807, 7.08056806, 0.99213580, 0.99595983, 0.48701339],\
+[	-6.08373324, -0.00253029, 0.00150714, 7.08120294, 0.99214179, 0.99596257, 0.48703218],\
+[	-6.08436431, -0.00252849, 0.00150621, 7.08183582, 0.99214778, 0.99596530, 0.48705092],\
+[	-6.08499339, -0.00252670, 0.00150527, 7.08246669, 0.99215376, 0.99596803, 0.48706960],\
+[	-6.08562048, -0.00252490, 0.00150434, 7.08309558, 0.99215973, 0.99597076, 0.48708821],\
+[	-6.08624558, -0.00252311, 0.00150341, 7.08372247, 0.99216569, 0.99597348, 0.48710678],\
+[	-6.08686870, -0.00252132, 0.00150248, 7.08434738, 0.99217164, 0.99597620, 0.48712529],\
+[	-6.08748985, -0.00251953, 0.00150155, 7.08497032, 0.99217759, 0.99597892, 0.48714374],\
+[	-6.08810902, -0.00251774, 0.00150062, 7.08559128, 0.99218353, 0.99598164, 0.48716214],\
+[	-6.08872624, -0.00251595, 0.00149969, 7.08621028, 0.99218946, 0.99598436, 0.48718048],\
+[	-6.08934149, -0.00251417, 0.00149876, 7.08682732, 0.99219538, 0.99598707, 0.48719876],\
+[	-6.08995479, -0.00251239, 0.00149784, 7.08744241, 0.99220130, 0.99598978, 0.48721699],\
+[	-6.09056615, -0.00251061, 0.00149691, 7.08805554, 0.99220721, 0.99599248, 0.48723517],\
+[	-6.09117556, -0.00250883, 0.00149598, 7.08866673, 0.99221310, 0.99599519, 0.48725329],\
+[	-6.09178304, -0.00250705, 0.00149506, 7.08927599, 0.99221900, 0.99599789, 0.48727135],\
+[	-6.09238859, -0.00250528, 0.00149413, 7.08988331, 0.99222488, 0.99600059, 0.48728936],\
+[	-6.09299221, -0.00250351, 0.00149320, 7.09048871, 0.99223076, 0.99600329, 0.48730732],\
+[	-6.09359392, -0.00250174, 0.00149228, 7.09109218, 0.99223663, 0.99600598, 0.48732522],\
+[	-6.09419371, -0.00249997, 0.00149136, 7.09169374, 0.99224249, 0.99600867, 0.48734306],\
+[	-6.09479159, -0.00249820, 0.00149043, 7.09229339, 0.99224834, 0.99601136, 0.48736085],\
+[	-6.09538757, -0.00249644, 0.00148951, 7.09289113, 0.99225419, 0.99601405, 0.48737859],\
+[	-6.09598165, -0.00249468, 0.00148859, 7.09348698, 0.99226003, 0.99601673, 0.48739628],\
+[	-6.09657385, -0.00249292, 0.00148767, 7.09408093, 0.99226586, 0.99601942, 0.48741390],\
+[	-6.09716415, -0.00249116, 0.00148675, 7.09467299, 0.99227168, 0.99602210, 0.48743148],\
+[	-6.09775257, -0.00248940, 0.00148583, 7.09526317, 0.99227749, 0.99602477, 0.48744900],\
+[	-6.09833912, -0.00248765, 0.00148491, 7.09585148, 0.99228330, 0.99602745, 0.48746647],\
+[	-6.09892380, -0.00248589, 0.00148399, 7.09643791, 0.99228910, 0.99603012, 0.48748389],\
+[	-6.09950662, -0.00248414, 0.00148307, 7.09702248, 0.99229489, 0.99603279, 0.48750125],\
+[	-6.10008757, -0.00248239, 0.00148215, 7.09760518, 0.99230068, 0.99603545, 0.48751856],\
+[	-6.10066667, -0.00248065, 0.00148124, 7.09818603, 0.99230646, 0.99603812, 0.48753582],\
+[	-6.10124393, -0.00247890, 0.00148032, 7.09876503, 0.99231223, 0.99604078, 0.48755302],\
+[	-6.10181934, -0.00247716, 0.00147941, 7.09934218, 0.99231799, 0.99604344, 0.48757018],\
+[	-6.10239291, -0.00247542, 0.00147849, 7.09991749, 0.99232374, 0.99604609, 0.48758728],\
+[	-6.10296465, -0.00247368, 0.00147758, 7.10049097, 0.99232949, 0.99604875, 0.48760432],\
+[	-6.10353456, -0.00247194, 0.00147666, 7.10106262, 0.99233523, 0.99605140, 0.48762132],\
+[	-6.10410265, -0.00247020, 0.00147575, 7.10163245, 0.99234096, 0.99605405, 0.48763826],\
+[	-6.10466892, -0.00246847, 0.00147484, 7.10220045, 0.99234669, 0.99605669, 0.48765516],\
+[	-6.10523338, -0.00246674, 0.00147393, 7.10276665, 0.99235240, 0.99605934, 0.48767200],\
+[	-6.10579604, -0.00246501, 0.00147301, 7.10333103, 0.99235811, 0.99606198, 0.48768879],\
+[	-6.10635689, -0.00246328, 0.00147210, 7.10389362, 0.99236382, 0.99606462, 0.48770552],\
+[	-6.10691595, -0.00246155, 0.00147119, 7.10445440, 0.99236951, 0.99606725, 0.48772221],\
+[	-6.10747322, -0.00245983, 0.00147028, 7.10501339, 0.99237520, 0.99606989, 0.48773885],\
+[	-6.10802871, -0.00245811, 0.00146937, 7.10557060, 0.99238088, 0.99607252, 0.48775543],\
+[	-6.10858241, -0.00245639, 0.00146847, 7.10612603, 0.99238655, 0.99607515, 0.48777197],\
+[	-6.10913434, -0.00245467, 0.00146756, 7.10667967, 0.99239222, 0.99607777, 0.48778845],\
+[	-6.10968450, -0.00245295, 0.00146665, 7.10723155, 0.99239787, 0.99608040, 0.48780488],\
+[	-6.11023289, -0.00245123, 0.00146575, 7.10778166, 0.99240353, 0.99608302, 0.48782127],\
+[	-6.11077953, -0.00244952, 0.00146484, 7.10833001, 0.99240917, 0.99608564, 0.48783760],\
+[	-6.11132441, -0.00244781, 0.00146393, 7.10887660, 0.99241480, 0.99608825, 0.48785388],\
+[	-6.11186754, -0.00244610, 0.00146303, 7.10942144, 0.99242043, 0.99609087, 0.48787012],\
+[	-6.11240893, -0.00244439, 0.00146213, 7.10996454, 0.99242605, 0.99609348, 0.48788630],\
+[	-6.11294858, -0.00244269, 0.00146122, 7.11050589, 0.99243167, 0.99609609, 0.48790243],\
+[	-6.11348649, -0.00244098, 0.00146032, 7.11104551, 0.99243728, 0.99609869, 0.48791852],\
+[	-6.11402268, -0.00243928, 0.00145942, 7.11158340, 0.99244288, 0.99610130, 0.48793455],\
+[	-6.11455714, -0.00243758, 0.00145852, 7.11211956, 0.99244847, 0.99610390, 0.48795053],\
+[	-6.11508989, -0.00243588, 0.00145762, 7.11265400, 0.99245405, 0.99610650, 0.48796647],\
+[	-6.11562092, -0.00243419, 0.00145672, 7.11318673, 0.99245963, 0.99610909, 0.48798236],\
+[	-6.11615024, -0.00243249, 0.00145582, 7.11371775, 0.99246520, 0.99611169, 0.48799820],\
+[	-6.11667786, -0.00243080, 0.00145492, 7.11424706, 0.99247077, 0.99611428, 0.48801399],\
+[	-6.11720378, -0.00242911, 0.00145402, 7.11477467, 0.99247632, 0.99611687, 0.48802973],\
+[	-6.11772800, -0.00242742, 0.00145312, 7.11530058, 0.99248187, 0.99611945, 0.48804543],\
+[	-6.11825054, -0.00242574, 0.00145223, 7.11582481, 0.99248741, 0.99612204, 0.48806107],\
+[	-6.11877140, -0.00242405, 0.00145133, 7.11634735, 0.99249295, 0.99612462, 0.48807667],\
+[	-6.11929057, -0.00242237, 0.00145043, 7.11686820, 0.99249847, 0.99612720, 0.48809222],\
+[	-6.11980807, -0.00242069, 0.00144954, 7.11738739, 0.99250400, 0.99612978, 0.48810772],\
+[	-6.12032390, -0.00241901, 0.00144864, 7.11790490, 0.99250951, 0.99613235, 0.48812317],\
+[	-6.12083807, -0.00241733, 0.00144775, 7.11842074, 0.99251501, 0.99613492, 0.48813858],\
+[	-6.12135058, -0.00241565, 0.00144686, 7.11893493, 0.99252051, 0.99613749, 0.48815394],\
+[	-6.12186144, -0.00241398, 0.00144597, 7.11944746, 0.99252601, 0.99614006, 0.48816925],\
+[	-6.12237064, -0.00241231, 0.00144507, 7.11995834, 0.99253149, 0.99614262, 0.48818451],\
+[	-6.12287820, -0.00241064, 0.00144418, 7.12046757, 0.99253697, 0.99614518, 0.48819973],\
+[	-6.12338412, -0.00240897, 0.00144329, 7.12097516, 0.99254244, 0.99614774, 0.48821490],\
+[	-6.12388841, -0.00240730, 0.00144240, 7.12148111, 0.99254790, 0.99615030, 0.48823002],\
+[	-6.12439107, -0.00240563, 0.00144151, 7.12198543, 0.99255336, 0.99615285, 0.48824510],\
+[	-6.12489210, -0.00240397, 0.00144062, 7.12248813, 0.99255881, 0.99615540, 0.48826013],\
+[	-6.12539151, -0.00240231, 0.00143974, 7.12298920, 0.99256425, 0.99615795, 0.48827512],\
+[	-6.12588931, -0.00240065, 0.00143885, 7.12348866, 0.99256969, 0.99616050, 0.48829005],\
+[	-6.12638549, -0.00239899, 0.00143796, 7.12398650, 0.99257512, 0.99616304, 0.48830495],\
+[	-6.12688007, -0.00239734, 0.00143708, 7.12448273, 0.99258054, 0.99616559, 0.48831979],\
+[	-6.12737305, -0.00239568, 0.00143619, 7.12497736, 0.99258596, 0.99616813, 0.48833460],\
+[	-6.12786443, -0.00239403, 0.00143531, 7.12547040, 0.99259136, 0.99617066, 0.48834935],\
+[	-6.12835422, -0.00239238, 0.00143442, 7.12596184, 0.99259676, 0.99617320, 0.48836406],\
+[	-6.12884242, -0.00239073, 0.00143354, 7.12645169, 0.99260216, 0.99617573, 0.48837872],\
+[	-6.12932904, -0.00238908, 0.00143266, 7.12693996, 0.99260755, 0.99617826, 0.48839334],\
+[	-6.12981408, -0.00238744, 0.00143177, 7.12742664, 0.99261293, 0.99618079, 0.48840792],\
+[	-6.13029755, -0.00238580, 0.00143089, 7.12791176, 0.99261830, 0.99618331, 0.48842244],\
+[	-6.13077945, -0.00238416, 0.00143001, 7.12839530, 0.99262367, 0.99618583, 0.48843693],\
+[	-6.13125979, -0.00238252, 0.00142913, 7.12887728, 0.99262903, 0.99618835, 0.48845136],\
+[	-6.13173857, -0.00238088, 0.00142825, 7.12935769, 0.99263438, 0.99619087, 0.48846576],\
+[	-6.13221579, -0.00237924, 0.00142737, 7.12983655, 0.99263972, 0.99619339, 0.48848011],\
+[	-6.13269147, -0.00237761, 0.00142649, 7.13031386, 0.99264506, 0.99619590, 0.48849441],\
+[	-6.13316560, -0.00237598, 0.00142562, 7.13078962, 0.99265040, 0.99619841, 0.48850867],\
+[	-6.13363819, -0.00237434, 0.00142474, 7.13126384, 0.99265572, 0.99620092, 0.48852289],\
+[	-6.13410924, -0.00237272, 0.00142386, 7.13173652, 0.99266104, 0.99620342, 0.48853706],\
+[	-6.13457876, -0.00237109, 0.00142299, 7.13220767, 0.99266635, 0.99620593, 0.48855119],\
+[	-6.13504676, -0.00236946, 0.00142211, 7.13267729, 0.99267166, 0.99620843, 0.48856528],\
+[	-6.13551323, -0.00236784, 0.00142124, 7.13314539, 0.99267696, 0.99621092, 0.48857932],\
+[	-6.13597818, -0.00236622, 0.00142036, 7.13361197, 0.99268225, 0.99621342, 0.48859332],\
+[	-6.13644163, -0.00236460, 0.00141949, 7.13407703, 0.99268753, 0.99621591, 0.48860727],\
+[	-6.13690356, -0.00236298, 0.00141862, 7.13454058, 0.99269281, 0.99621840, 0.48862118],\
+[	-6.13736399, -0.00236136, 0.00141774, 7.13500263, 0.99269808, 0.99622089, 0.48863505],\
+[	-6.13782292, -0.00235975, 0.00141687, 7.13546317, 0.99270335, 0.99622338, 0.48864888],\
+[	-6.13828035, -0.00235814, 0.00141600, 7.13592222, 0.99270861, 0.99622586, 0.48866266],\
+[	-6.13873630, -0.00235652, 0.00141513, 7.13637977, 0.99271386, 0.99622834, 0.48867640],\
+[	-6.13919076, -0.00235492, 0.00141426, 7.13683584, 0.99271910, 0.99623082, 0.48869010],\
+[	-6.13964373, -0.00235331, 0.00141339, 7.13729042, 0.99272434, 0.99623330, 0.48870375],\
+[	-6.14009523, -0.00235170, 0.00141253, 7.13774353, 0.99272957, 0.99623577, 0.48871736],\
+[	-6.14054526, -0.00235010, 0.00141166, 7.13819516, 0.99273480, 0.99623824, 0.48873093],\
+[	-6.14099381, -0.00234850, 0.00141079, 7.13864532, 0.99274001, 0.99624071, 0.48874446],\
+[	-6.14144091, -0.00234689, 0.00140993, 7.13909401, 0.99274523, 0.99624318, 0.48875794],\
+[	-6.14188654, -0.00234530, 0.00140906, 7.13954125, 0.99275043, 0.99624564, 0.48877139],\
+[	-6.14233072, -0.00234370, 0.00140820, 7.13998702, 0.99275563, 0.99624811, 0.48878479],\
+[	-6.14277345, -0.00234210, 0.00140733, 7.14043134, 0.99276082, 0.99625057, 0.48879815],\
+[	-6.14321473, -0.00234051, 0.00140647, 7.14087422, 0.99276601, 0.99625302, 0.48881147],\
+[	-6.14365457, -0.00233892, 0.00140561, 7.14131565, 0.99277118, 0.99625548, 0.48882475],\
+[	-6.14409297, -0.00233733, 0.00140474, 7.14175564, 0.99277636, 0.99625793, 0.48883798],\
+[	-6.14452994, -0.00233574, 0.00140388, 7.14219420, 0.99278152, 0.99626038, 0.48885118],\
+[	-6.14496548, -0.00233415, 0.00140302, 7.14263132, 0.99278668, 0.99626283, 0.48886433],\
+[	-6.14539959, -0.00233257, 0.00140216, 7.14306702, 0.99279183, 0.99626527, 0.48887745],\
+[	-6.14583228, -0.00233098, 0.00140130, 7.14350130, 0.99279698, 0.99626772, 0.48889052],\
+[	-6.14626356, -0.00232940, 0.00140044, 7.14393416, 0.99280212, 0.99627016, 0.48890355],\
+[	-6.14669342, -0.00232782, 0.00139958, 7.14436560, 0.99280725, 0.99627259, 0.48891654],\
+[	-6.14712188, -0.00232625, 0.00139873, 7.14479564, 0.99281238, 0.99627503, 0.48892949],\
+[	-6.14754894, -0.00232467, 0.00139787, 7.14522427, 0.99281750, 0.99627746, 0.48894240],\
+[	-6.14797459, -0.00232309, 0.00139701, 7.14565150, 0.99282261, 0.99627989, 0.48895527],\
+[	-6.14839885, -0.00232152, 0.00139616, 7.14607733, 0.99282772, 0.99628232, 0.48896810],\
+[	-6.14882172, -0.00231995, 0.00139530, 7.14650177, 0.99283282, 0.99628475, 0.48898089],\
+[	-6.14924320, -0.00231838, 0.00139445, 7.14692482, 0.99283791, 0.99628717, 0.48899364],\
+[	-6.14966330, -0.00231681, 0.00139359, 7.14734649, 0.99284300, 0.99628959, 0.48900634],\
+[	-6.15008202, -0.00231525, 0.00139274, 7.14776677, 0.99284808, 0.99629201, 0.48901902],\
+[	-6.15049937, -0.00231368, 0.00139189, 7.14818569, 0.99285316, 0.99629443, 0.48903165],\
+[	-6.15091535, -0.00231212, 0.00139104, 7.14860323, 0.99285823, 0.99629684, 0.48904424],\
+[	-6.15132996, -0.00231056, 0.00139018, 7.14901940, 0.99286329, 0.99629926, 0.48905679],\
+[	-6.15174321, -0.00230900, 0.00138933, 7.14943421, 0.99286834, 0.99630166, 0.48906930],\
+[	-6.15215510, -0.00230744, 0.00138848, 7.14984766, 0.99287339, 0.99630407, 0.48908178],\
+[	-6.15256564, -0.00230589, 0.00138763, 7.15025975, 0.99287844, 0.99630648, 0.48909421],\
+[	-6.15297483, -0.00230433, 0.00138679, 7.15067050, 0.99288347, 0.99630888, 0.48910661],\
+[	-6.15338268, -0.00230278, 0.00138594, 7.15107989, 0.99288850, 0.99631128, 0.48911897],\
+[	-6.15378918, -0.00230123, 0.00138509, 7.15148795, 0.99289353, 0.99631368, 0.48913128],\
+[	-6.15419435, -0.00229968, 0.00138424, 7.15189467, 0.99289855, 0.99631607, 0.48914356],\
+[	-6.15459818, -0.00229814, 0.00138340, 7.15230005, 0.99290356, 0.99631847, 0.48915581],\
+[	-6.15500069, -0.00229659, 0.00138255, 7.15270410, 0.99290856, 0.99632086, 0.48916801],\
+[	-6.15540187, -0.00229505, 0.00138171, 7.15310682, 0.99291356, 0.99632324, 0.48918017],\
+[	-6.15580173, -0.00229350, 0.00138087, 7.15350822, 0.99291855, 0.99632563, 0.48919230],\
+[	-6.15620027, -0.00229196, 0.00138002, 7.15390831, 0.99292354, 0.99632801, 0.48920439],\
+[	-6.15659750, -0.00229042, 0.00137918, 7.15430708, 0.99292852, 0.99633040, 0.48921644],\
+[	-6.15699342, -0.00228889, 0.00137834, 7.15470454, 0.99293349, 0.99633278, 0.48922846],\
+[	-6.15738804, -0.00228735, 0.00137750, 7.15510069, 0.99293846, 0.99633515, 0.48924043],\
+[	-6.15778136, -0.00228582, 0.00137666, 7.15549554, 0.99294342, 0.99633753, 0.48925237],\
+[	-6.15817338, -0.00228429, 0.00137582, 7.15588909, 0.99294838, 0.99633990, 0.48926427],\
+[	-6.15856410, -0.00228276, 0.00137498, 7.15628135, 0.99295333, 0.99634227, 0.48927613],\
+[	-6.15895354, -0.00228123, 0.00137414, 7.15667231, 0.99295827, 0.99634464, 0.48928796],\
+[	-6.15934170, -0.00227970, 0.00137330, 7.15706199, 0.99296321, 0.99634700, 0.48929975],\
+[	-6.15972857, -0.00227818, 0.00137246, 7.15745039, 0.99296814, 0.99634936, 0.48931151],\
+[	-6.16011416, -0.00227665, 0.00137162, 7.15783751, 0.99297306, 0.99635172, 0.48932322],\
+[	-6.16049848, -0.00227513, 0.00137079, 7.15822335, 0.99297798, 0.99635408, 0.48933490],\
+[	-6.16088154, -0.00227361, 0.00136995, 7.15860793, 0.99298289, 0.99635644, 0.48934654],\
+[	-6.16126332, -0.00227209, 0.00136912, 7.15899123, 0.99298780, 0.99635879, 0.48935815],\
+[	-6.16164385, -0.00227057, 0.00136828, 7.15937328, 0.99299270, 0.99636114, 0.48936972],\
+[	-6.16202312, -0.00226906, 0.00136745, 7.15975406, 0.99299759, 0.99636349, 0.48938125],\
+[	-6.16240113, -0.00226754, 0.00136662, 7.16013359, 0.99300248, 0.99636584, 0.48939275],\
+[	-6.16277790, -0.00226603, 0.00136579, 7.16051186, 0.99300736, 0.99636818, 0.48940421],\
+[	-6.16315341, -0.00226452, 0.00136495, 7.16088889, 0.99301224, 0.99637052, 0.48941563],\
+[	-6.16352769, -0.00226301, 0.00136412, 7.16126468, 0.99301711, 0.99637286, 0.48942702],\
+[	-6.16390073, -0.00226151, 0.00136329, 7.16163922, 0.99302197, 0.99637520, 0.48943837],\
+[	-6.16427253, -0.00226000, 0.00136246, 7.16201253, 0.99302683, 0.99637753, 0.48944969],\
+[	-6.16464310, -0.00225850, 0.00136164, 7.16238461, 0.99303168, 0.99637987, 0.48946098],\
+[	-6.16501245, -0.00225700, 0.00136081, 7.16275545, 0.99303653, 0.99638220, 0.48947222],\
+[	-6.16538057, -0.00225549, 0.00135998, 7.16312507, 0.99304136, 0.99638453, 0.48948343],\
+[	-6.16574747, -0.00225400, 0.00135915, 7.16349348, 0.99304620, 0.99638685, 0.48949461],\
+[	-6.16611316, -0.00225250, 0.00135833, 7.16386066, 0.99305103, 0.99638918, 0.48950575],\
+[	-6.16647763, -0.00225100, 0.00135750, 7.16422663, 0.99305585, 0.99639150, 0.48951685],\
+[	-6.16684090, -0.00224951, 0.00135668, 7.16459139, 0.99306066, 0.99639382, 0.48952792],\
+[	-6.16720296, -0.00224802, 0.00135585, 7.16495494, 0.99306547, 0.99639613, 0.48953896],\
+[	-6.16756382, -0.00224653, 0.00135503, 7.16531729, 0.99307027, 0.99639845, 0.48954996],\
+[	-6.16792348, -0.00224504, 0.00135421, 7.16567845, 0.99307507, 0.99640076, 0.48956093],\
+[	-6.16828195, -0.00224355, 0.00135338, 7.16603840, 0.99307986, 0.99640307, 0.48957186],\
+[	-6.16863923, -0.00224206, 0.00135256, 7.16639717, 0.99308465, 0.99640538, 0.48958276],\
+[	-6.16899533, -0.00224058, 0.00135174, 7.16675475, 0.99308943, 0.99640768, 0.48959363],\
+[	-6.16935024, -0.00223910, 0.00135092, 7.16711114, 0.99309420, 0.99640998, 0.48960445],\
+[	-6.16970397, -0.00223762, 0.00135010, 7.16746636, 0.99309897, 0.99641228, 0.48961525],\
+[	-6.17005653, -0.00223614, 0.00134928, 7.16782039, 0.99310373, 0.99641458, 0.48962601],\
+[	-6.17040791, -0.00223466, 0.00134846, 7.16817326, 0.99310849, 0.99641688, 0.48963673],\
+[	-6.17075813, -0.00223318, 0.00134765, 7.16852495, 0.99311324, 0.99641917, 0.48964743],\
+[	-6.17110719, -0.00223171, 0.00134683, 7.16887548, 0.99311798, 0.99642146, 0.48965809],\
+[	-6.17145508, -0.00223024, 0.00134601, 7.16922484, 0.99312272, 0.99642375, 0.48966871],\
+[	-6.17180182, -0.00222876, 0.00134520, 7.16957305, 0.99312745, 0.99642604, 0.48967931],\
+[	-6.17214740, -0.00222729, 0.00134438, 7.16992010, 0.99313218, 0.99642832, 0.48968987],\
+[	-6.17249183, -0.00222583, 0.00134357, 7.17026601, 0.99313690, 0.99643061, 0.48970039],\
+[	-6.17283512, -0.00222436, 0.00134275, 7.17061076, 0.99314162, 0.99643289, 0.48971088],\
+[	-6.17317726, -0.00222289, 0.00134194, 7.17095437, 0.99314633, 0.99643517, 0.48972134],\
+[	-6.17351827, -0.00222143, 0.00134113, 7.17129683, 0.99315103, 0.99643744, 0.48973177],\
+[	-6.17385813, -0.00221997, 0.00134032, 7.17163816, 0.99315573, 0.99643971, 0.48974217],\
+[	-6.17419687, -0.00221851, 0.00133950, 7.17197836, 0.99316042, 0.99644199, 0.48975252],\
+[	-6.17453448, -0.00221705, 0.00133869, 7.17231743, 0.99316511, 0.99644425, 0.48976285],\
+[	-6.17487096, -0.00221559, 0.00133788, 7.17265537, 0.99316979, 0.99644652, 0.48977314],\
+[	-6.17520632, -0.00221414, 0.00133708, 7.17299218, 0.99317446, 0.99644879, 0.48978341],\
+[	-6.17554056, -0.00221269, 0.00133627, 7.17332788, 0.99317913, 0.99645105, 0.48979364],\
+[	-6.17587369, -0.00221123, 0.00133546, 7.17366246, 0.99318379, 0.99645331, 0.48980384],\
+[	-6.17620571, -0.00220978, 0.00133465, 7.17399593, 0.99318845, 0.99645557, 0.48981400],\
+[	-6.17653662, -0.00220833, 0.00133385, 7.17432829, 0.99319310, 0.99645782, 0.48982414],\
+[	-6.17686642, -0.00220689, 0.00133304, 7.17465954, 0.99319775, 0.99646007, 0.48983424],\
+[	-6.17719513, -0.00220544, 0.00133223, 7.17498969, 0.99320239, 0.99646233, 0.48984431],\
+[	-6.17752273, -0.00220400, 0.00133143, 7.17531874, 0.99320702, 0.99646457, 0.48985434],\
+[	-6.17784925, -0.00220255, 0.00133063, 7.17564669, 0.99321165, 0.99646682, 0.48986435],\
+[	-6.17817467, -0.00220111, 0.00132982, 7.17597356, 0.99321628, 0.99646906, 0.48987432],\
+[	-6.17849900, -0.00219967, 0.00132902, 7.17629933, 0.99322089, 0.99647131, 0.48988427],\
+[	-6.17882225, -0.00219823, 0.00132822, 7.17662402, 0.99322551, 0.99647355, 0.48989418],\
+[	-6.17914442, -0.00219680, 0.00132742, 7.17694762, 0.99323011, 0.99647578, 0.48990406],\
+[	-6.17946552, -0.00219536, 0.00132662, 7.17727015, 0.99323471, 0.99647802, 0.48991391],\
+[	-6.17978554, -0.00219393, 0.00132582, 7.17759161, 0.99323931, 0.99648025, 0.48992373],\
+[	-6.18010448, -0.00219250, 0.00132502, 7.17791199, 0.99324390, 0.99648248, 0.48993351],\
+[	-6.18042237, -0.00219107, 0.00132422, 7.17823130, 0.99324848, 0.99648471, 0.48994327],\
+[	-6.18073919, -0.00218964, 0.00132342, 7.17854955, 0.99325306, 0.99648694, 0.48995299],\
+[	-6.18105494, -0.00218821, 0.00132262, 7.17886673, 0.99325763, 0.99648916, 0.48996269],\
+[	-6.18136964, -0.00218679, 0.00132183, 7.17918286, 0.99326220, 0.99649139, 0.48997235],\
+[	-6.18168329, -0.00218536, 0.00132103, 7.17949793, 0.99326676, 0.99649361, 0.48998198],\
+[	-6.18199589, -0.00218394, 0.00132024, 7.17981195, 0.99327132, 0.99649582, 0.48999158],\
+[	-6.18230744, -0.00218252, 0.00131944, 7.18012492, 0.99327587, 0.99649804, 0.49000115],\
+[	-6.18261795, -0.00218110, 0.00131865, 7.18043684, 0.99328041, 0.99650025, 0.49001070],\
+[	-6.18292741, -0.00217968, 0.00131785, 7.18074773, 0.99328495, 0.99650246, 0.49002020],\
+[	-6.18323584, -0.00217827, 0.00131706, 7.18105757, 0.99328949, 0.99650467, 0.49002969],\
+[	-6.18354323, -0.00217685, 0.00131627, 7.18136638, 0.99329401, 0.99650688, 0.49003913],\
+[	-6.18384960, -0.00217544, 0.00131548, 7.18167416, 0.99329854, 0.99650908, 0.49004855],\
+[	-6.18415493, -0.00217403, 0.00131469, 7.18198091, 0.99330305, 0.99651129, 0.49005794],\
+[	-6.18445924, -0.00217262, 0.00131390, 7.18228663, 0.99330757, 0.99651349, 0.49006730],\
+[	-6.18476253, -0.00217121, 0.00131311, 7.18259133, 0.99331207, 0.99651568, 0.49007664],\
+[	-6.18506481, -0.00216980, 0.00131232, 7.18289501, 0.99331657, 0.99651788, 0.49008594],\
+[	-6.18536606, -0.00216840, 0.00131153, 7.18319767, 0.99332107, 0.99652007, 0.49009521],\
+[	-6.18566631, -0.00216699, 0.00131074, 7.18349932, 0.99332556, 0.99652226, 0.49010445],\
+[	-6.18596555, -0.00216559, 0.00130996, 7.18379996, 0.99333004, 0.99652445, 0.49011367],\
+[	-6.18626378, -0.00216419, 0.00130917, 7.18409959, 0.99333452, 0.99652664, 0.49012285],\
+[	-6.18656101, -0.00216279, 0.00130839, 7.18439822, 0.99333900, 0.99652882, 0.49013200],\
+[	-6.18685724, -0.00216139, 0.00130760, 7.18469585, 0.99334346, 0.99653101, 0.49014113],\
+[	-6.18715248, -0.00216000, 0.00130682, 7.18499249, 0.99334793, 0.99653319, 0.49015022],\
+[	-6.18744673, -0.00215860, 0.00130603, 7.18528812, 0.99335238, 0.99653537, 0.49015929],\
+[	-6.18773998, -0.00215721, 0.00130525, 7.18558277, 0.99335684, 0.99653754, 0.49016833],\
+[	-6.18803225, -0.00215582, 0.00130447, 7.18587643, 0.99336128, 0.99653972, 0.49017734],\
+[	-6.18832353, -0.00215443, 0.00130369, 7.18616911, 0.99336572, 0.99654189, 0.49018632],\
+[	-6.18861384, -0.00215304, 0.00130291, 7.18646080, 0.99337016, 0.99654406, 0.49019527],\
+[	-6.18890316, -0.00215165, 0.00130213, 7.18675152, 0.99337459, 0.99654622, 0.49020420],\
+[	-6.18919152, -0.00215026, 0.00130135, 7.18704125, 0.99337901, 0.99654839, 0.49021309],\
+[	-6.18947890, -0.00214888, 0.00130057, 7.18733002, 0.99338343, 0.99655055, 0.49022196],\
+[	-6.18976532, -0.00214750, 0.00129979, 7.18761782, 0.99338785, 0.99655271, 0.49023080],\
+[	-6.19005077, -0.00214612, 0.00129901, 7.18790465, 0.99339226, 0.99655487, 0.49023961],\
+[	-6.19033526, -0.00214474, 0.00129823, 7.18819052, 0.99339666, 0.99655703, 0.49024839],\
+[	-6.19061879, -0.00214336, 0.00129746, 7.18847543, 0.99340106, 0.99655918, 0.49025714],\
+[	-6.19090136, -0.00214198, 0.00129668, 7.18875938, 0.99340545, 0.99656134, 0.49026588],\
+[	-6.19118298, -0.00214061, 0.00129591, 7.18904238, 0.99340984, 0.99656349, 0.49027457],\
+[	-6.19146366, -0.00213923, 0.00129513, 7.18932442, 0.99341422, 0.99656563, 0.49028324],\
+[	-6.19174338, -0.00213786, 0.00129436, 7.18960552, 0.99341860, 0.99656778, 0.49029189],\
+[	-6.19202217, -0.00213649, 0.00129359, 7.18988568, 0.99342297, 0.99656992, 0.49030051],\
+[	-6.19230001, -0.00213512, 0.00129281, 7.19016489, 0.99342734, 0.99657207, 0.49030909],\
+[	-6.19257691, -0.00213375, 0.00129204, 7.19044316, 0.99343170, 0.99657421, 0.49031766],\
+[	-6.19285288, -0.00213239, 0.00129127, 7.19072050, 0.99343606, 0.99657634, 0.49032619],\
+[	-6.19312792, -0.00213102, 0.00129050, 7.19099690, 0.99344041, 0.99657848, 0.49033470],\
+[	-6.19340203, -0.00212966, 0.00128973, 7.19127237, 0.99344475, 0.99658061, 0.49034317],\
+[	-6.19367521, -0.00212830, 0.00128896, 7.19154692, 0.99344909, 0.99658274, 0.49035163],\
+[	-6.19394748, -0.00212694, 0.00128819, 7.19182054, 0.99345343, 0.99658487, 0.49036006],\
+[	-6.19421882, -0.00212558, 0.00128743, 7.19209324, 0.99345776, 0.99658700, 0.49036845],\
+[	-6.19448924, -0.00212422, 0.00128666, 7.19236502, 0.99346208, 0.99658912, 0.49037683],\
+[	-6.19475875, -0.00212286, 0.00128589, 7.19263589, 0.99346640, 0.99659124, 0.49038517],\
+[	-6.19502735, -0.00212151, 0.00128513, 7.19290584, 0.99347072, 0.99659336, 0.49039349],\
+[	-6.19529504, -0.00212016, 0.00128436, 7.19317489, 0.99347503, 0.99659548, 0.49040178],\
+[	-6.19556183, -0.00211880, 0.00128360, 7.19344302, 0.99347933, 0.99659760, 0.49041005],\
+[	-6.19582771, -0.00211745, 0.00128283, 7.19371026, 0.99348363, 0.99659971, 0.49041829],\
+[	-6.19609270, -0.00211611, 0.00128207, 7.19397659, 0.99348792, 0.99660182, 0.49042650],\
+[	-6.19635678, -0.00211476, 0.00128131, 7.19424203, 0.99349221, 0.99660393, 0.49043469],\
+[	-6.19661998, -0.00211341, 0.00128054, 7.19450656, 0.99349650, 0.99660604, 0.49044285],\
+[	-6.19688228, -0.00211207, 0.00127978, 7.19477021, 0.99350077, 0.99660815, 0.49045099],\
+[	-6.19714369, -0.00211073, 0.00127902, 7.19503297, 0.99350505, 0.99661025, 0.49045909],\
+[	-6.19740422, -0.00210938, 0.00127826, 7.19529484, 0.99350932, 0.99661235, 0.49046717],\
+[	-6.19766387, -0.00210804, 0.00127750, 7.19555583, 0.99351358, 0.99661445, 0.49047523],\
+[	-6.19792264, -0.00210671, 0.00127674, 7.19581593, 0.99351784, 0.99661655, 0.49048326],\
+[	-6.19818053, -0.00210537, 0.00127599, 7.19607516, 0.99352209, 0.99661864, 0.49049127],\
+[	-6.19843754, -0.00210403, 0.00127523, 7.19633351, 0.99352634, 0.99662074, 0.49049925],\
+[	-6.19869369, -0.00210270, 0.00127447, 7.19659099, 0.99353058, 0.99662283, 0.49050720],\
+[	-6.19894896, -0.00210137, 0.00127372, 7.19684760, 0.99353482, 0.99662492, 0.49051513],\
+[	-6.19920337, -0.00210004, 0.00127296, 7.19710334, 0.99353905, 0.99662700, 0.49052303],\
+[	-6.19945692, -0.00209871, 0.00127221, 7.19735822, 0.99354328, 0.99662909, 0.49053091],\
+[	-6.19970961, -0.00209738, 0.00127145, 7.19761223, 0.99354750, 0.99663117, 0.49053876],\
+[	-6.19996144, -0.00209605, 0.00127070, 7.19786539, 0.99355172, 0.99663325, 0.49054659],\
+[	-6.20021242, -0.00209473, 0.00126995, 7.19811769, 0.99355593, 0.99663533, 0.49055439],\
+[	-6.20046254, -0.00209340, 0.00126919, 7.19836914, 0.99356014, 0.99663741, 0.49056217],\
+[	-6.20071181, -0.00209208, 0.00126844, 7.19861973, 0.99356434, 0.99663948, 0.49056992],\
+[	-6.20096024, -0.00209076, 0.00126769, 7.19886948, 0.99356854, 0.99664155, 0.49057765],\
+[	-6.20120782, -0.00208944, 0.00126694, 7.19911839, 0.99357273, 0.99664362, 0.49058536],\
+[	-6.20145457, -0.00208812, 0.00126619, 7.19936645, 0.99357692, 0.99664569, 0.49059304],\
+[	-6.20170047, -0.00208680, 0.00126544, 7.19961367, 0.99358110, 0.99664776, 0.49060069],\
+[	-6.20194554, -0.00208549, 0.00126469, 7.19986005, 0.99358528, 0.99664982, 0.49060832],\
+[	-6.20218978, -0.00208417, 0.00126395, 7.20010560, 0.99358945, 0.99665188, 0.49061593],\
+[	-6.20243318, -0.00208286, 0.00126320, 7.20035032, 0.99359362, 0.99665394, 0.49062351],\
+[	-6.20267576, -0.00208155, 0.00126245, 7.20059421, 0.99359778, 0.99665600, 0.49063106],\
+[	-6.20291751, -0.00208024, 0.00126171, 7.20083727, 0.99360194, 0.99665805, 0.49063859],\
+[	-6.20315844, -0.00207893, 0.00126096, 7.20107951, 0.99360609, 0.99666011, 0.49064611],\
+[	-6.20339855, -0.00207762, 0.00126022, 7.20132093, 0.99361024, 0.99666216, 0.49065358],\
+[	-6.20363785, -0.00207632, 0.00125947, 7.20156153, 0.99361438, 0.99666421, 0.49066104],\
+[	-6.20387633, -0.00207501, 0.00125873, 7.20180131, 0.99361852, 0.99666626, 0.49066848],\
+[	-6.20411399, -0.00207371, 0.00125799, 7.20204028, 0.99362265, 0.99666830, 0.49067589],\
+[	-6.20435085, -0.00207241, 0.00125725, 7.20227844, 0.99362678, 0.99667034, 0.49068328],\
+[	-6.20458690, -0.00207111, 0.00125650, 7.20251579, 0.99363090, 0.99667238, 0.49069064],\
+[	-6.20482215, -0.00206981, 0.00125576, 7.20275234, 0.99363502, 0.99667442, 0.49069799],\
+[	-6.20505660, -0.00206852, 0.00125502, 7.20298808, 0.99363914, 0.99667646, 0.49070530],\
+[	-6.20529024, -0.00206722, 0.00125428, 7.20322302, 0.99364325, 0.99667850, 0.49071260],\
+[	-6.20552310, -0.00206593, 0.00125355, 7.20345717, 0.99364735, 0.99668053, 0.49071987],\
+[	-6.20575515, -0.00206463, 0.00125281, 7.20369052, 0.99365145, 0.99668256, 0.49072711],\
+[	-6.20598642, -0.00206334, 0.00125207, 7.20392308, 0.99365554, 0.99668459, 0.49073434],\
+[	-6.20621690, -0.00206205, 0.00125133, 7.20415485, 0.99365963, 0.99668662, 0.49074154],\
+[	-6.20644659, -0.00206076, 0.00125060, 7.20438583, 0.99366372, 0.99668864, 0.49074872],\
+[	-6.20667550, -0.00205947, 0.00124986, 7.20461602, 0.99366780, 0.99669066, 0.49075587],\
+[	-6.20690362, -0.00205819, 0.00124913, 7.20484543, 0.99367187, 0.99669268, 0.49076300],\
+[	-6.20713097, -0.00205690, 0.00124839, 7.20507407, 0.99367594, 0.99669470, 0.49077011],\
+[	-6.20735754, -0.00205562, 0.00124766, 7.20530192, 0.99368001, 0.99669672, 0.49077720],\
+[	-6.20758334, -0.00205434, 0.00124693, 7.20552900, 0.99368407, 0.99669873, 0.49078426],\
+[	-6.20780837, -0.00205306, 0.00124619, 7.20575531, 0.99368812, 0.99670075, 0.49079130],\
+[	-6.20803263, -0.00205178, 0.00124546, 7.20598085, 0.99369217, 0.99670276, 0.49079832],\
+[	-6.20825612, -0.00205050, 0.00124473, 7.20620562, 0.99369622, 0.99670477, 0.49080531],\
+[	-6.20847885, -0.00204923, 0.00124400, 7.20642963, 0.99370026, 0.99670677, 0.49081228],\
+[	-6.20870082, -0.00204795, 0.00124327, 7.20665287, 0.99370430, 0.99670878, 0.49081924],\
+[	-6.20892203, -0.00204668, 0.00124254, 7.20687536, 0.99370833, 0.99671078, 0.49082617],\
+[	-6.20914249, -0.00204540, 0.00124181, 7.20709708, 0.99371236, 0.99671278, 0.49083307],\
+[	-6.20936219, -0.00204413, 0.00124109, 7.20731805, 0.99371638, 0.99671478, 0.49083996],\
+[	-6.20958114, -0.00204286, 0.00124036, 7.20753827, 0.99372040, 0.99671678, 0.49084681],\
+[	-6.20979934, -0.00204160, 0.00123963, 7.20775774, 0.99372441, 0.99671877, 0.49085365],\
+[	-6.21001679, -0.00204033, 0.00123891, 7.20797646, 0.99372842, 0.99672076, 0.49086047],\
+[	-6.21023350, -0.00203906, 0.00123818, 7.20819444, 0.99373242, 0.99672275, 0.49086727],\
+[	-6.21044947, -0.00203780, 0.00123746, 7.20841167, 0.99373642, 0.99672474, 0.49087404],\
+[	-6.21066470, -0.00203654, 0.00123673, 7.20862816, 0.99374042, 0.99672673, 0.49088079],\
+[	-6.21087920, -0.00203528, 0.00123601, 7.20884392, 0.99374441, 0.99672871, 0.49088752],\
+[	-6.21109295, -0.00203402, 0.00123529, 7.20905894, 0.99374839, 0.99673070, 0.49089423],\
+[	-6.21130598, -0.00203276, 0.00123456, 7.20927322, 0.99375237, 0.99673268, 0.49090092],\
+[	-6.21151828, -0.00203150, 0.00123384, 7.20948678, 0.99375635, 0.99673466, 0.49090759],\
+[	-6.21172985, -0.00203024, 0.00123312, 7.20969960, 0.99376032, 0.99673663, 0.49091423],\
+[	-6.21194069, -0.00202899, 0.00123240, 7.20991170, 0.99376428, 0.99673861, 0.49092085],\
+[	-6.21215082, -0.00202774, 0.00123168, 7.21012308, 0.99376825, 0.99674058, 0.49092745],\
+[	-6.21236022, -0.00202648, 0.00123096, 7.21033373, 0.99377220, 0.99674255, 0.49093403],\
+[	-6.21256890, -0.00202523, 0.00123025, 7.21054367, 0.99377616, 0.99674452, 0.49094059],\
+[	-6.21277687, -0.00202398, 0.00122953, 7.21075289, 0.99378010, 0.99674649, 0.49094712],\
+[	-6.21298413, -0.00202274, 0.00122881, 7.21096139, 0.99378405, 0.99674845, 0.49095364],\
+[	-6.21319067, -0.00202149, 0.00122809, 7.21116918, 0.99378798, 0.99675042, 0.49096013],\
+[	-6.21339651, -0.00202025, 0.00122738, 7.21137627, 0.99379192, 0.99675238, 0.49096661],\
+[	-6.21360164, -0.00201900, 0.00122666, 7.21158264, 0.99379585, 0.99675434, 0.49097306],\
+[	-6.21380607, -0.00201776, 0.00122595, 7.21178831, 0.99379977, 0.99675629, 0.49097950],\
+[	-6.21400979, -0.00201652, 0.00122523, 7.21199328, 0.99380369, 0.99675825, 0.49098591],\
+[	-6.21421282, -0.00201528, 0.00122452, 7.21219754, 0.99380761, 0.99676020, 0.49099230],\
+[	-6.21441515, -0.00201404, 0.00122381, 7.21240111, 0.99381152, 0.99676215, 0.49099867],\
+[	-6.21461678, -0.00201280, 0.00122310, 7.21260398, 0.99381543, 0.99676410, 0.49100502],\
+[	-6.21481773, -0.00201157, 0.00122239, 7.21280616, 0.99381933, 0.99676605, 0.49101135],\
+[	-6.21501798, -0.00201033, 0.00122167, 7.21300765, 0.99382323, 0.99676799, 0.49101767],\
+[	-6.21521754, -0.00200910, 0.00122096, 7.21320844, 0.99382712, 0.99676994, 0.49102395],\
+[	-6.21541642, -0.00200787, 0.00122026, 7.21340855, 0.99383101, 0.99677188, 0.49103022],\
+[	-6.21561461, -0.00200664, 0.00121955, 7.21360798, 0.99383489, 0.99677382, 0.49103647],\
+[	-6.21581213, -0.00200541, 0.00121884, 7.21380672, 0.99383877, 0.99677575, 0.49104269],\
+[	-6.21600896, -0.00200418, 0.00121813, 7.21400478, 0.99384265, 0.99677769, 0.49104891],\
+[	-6.21620512, -0.00200295, 0.00121742, 7.21420217, 0.99384652, 0.99677962, 0.49105509],\
+[	-6.21640060, -0.00200173, 0.00121672, 7.21439887, 0.99385038, 0.99678156, 0.49106126],\
+[	-6.21659541, -0.00200050, 0.00121601, 7.21459491, 0.99385424, 0.99678349, 0.49106741],\
+[	-6.21678955, -0.00199928, 0.00121531, 7.21479027, 0.99385810, 0.99678541, 0.49107353],\
+[	-6.21698302, -0.00199806, 0.00121460, 7.21498497, 0.99386195, 0.99678734, 0.49107964],\
+[	-6.21717583, -0.00199684, 0.00121390, 7.21517899, 0.99386580, 0.99678926, 0.49108574],\
+[	-6.21736797, -0.00199562, 0.00121320, 7.21537235, 0.99386965, 0.99679119, 0.49109180],\
+[	-6.21755945, -0.00199440, 0.00121249, 7.21556505, 0.99387349, 0.99679311, 0.49109786],\
+[	-6.21775028, -0.00199319, 0.00121179, 7.21575709, 0.99387732, 0.99679502, 0.49110388],\
+[	-6.21794044, -0.00199197, 0.00121109, 7.21594847, 0.99388115, 0.99679694, 0.49110989],\
+[	-6.21812995, -0.00199076, 0.00121039, 7.21613919, 0.99388498, 0.99679885, 0.49111588],\
+[	-6.21831881, -0.00198955, 0.00120969, 7.21632926, 0.99388880, 0.99680077, 0.49112186],\
+[	-6.21850702, -0.00198833, 0.00120899, 7.21651868, 0.99389261, 0.99680268, 0.49112781],\
+[	-6.21869457, -0.00198712, 0.00120829, 7.21670745, 0.99389643, 0.99680459, 0.49113374],\
+[	-6.21888149, -0.00198592, 0.00120759, 7.21689557, 0.99390024, 0.99680649, 0.49113965],\
+[	-6.21906775, -0.00198471, 0.00120689, 7.21708304, 0.99390404, 0.99680840, 0.49114555],\
+[	-6.21925338, -0.00198350, 0.00120620, 7.21726987, 0.99390784, 0.99681030, 0.49115142],\
+[	-6.21943836, -0.00198230, 0.00120550, 7.21745606, 0.99391163, 0.99681220, 0.49115728],\
+[	-6.21962271, -0.00198110, 0.00120481, 7.21764161, 0.99391542, 0.99681410, 0.49116312],\
+[	-6.21980642, -0.00197989, 0.00120411, 7.21782653, 0.99391921, 0.99681600, 0.49116895],\
+[	-6.21998950, -0.00197869, 0.00120342, 7.21801081, 0.99392299, 0.99681789, 0.49117474],\
+[	-6.22017194, -0.00197749, 0.00120272, 7.21819445, 0.99392677, 0.99681979, 0.49118052],\
+[	-6.22035376, -0.00197630, 0.00120203, 7.21837746, 0.99393054, 0.99682168, 0.49118629],\
+[	-6.22053495, -0.00197510, 0.00120134, 7.21855985, 0.99393431, 0.99682357, 0.49119203],\
+[	-6.22071551, -0.00197390, 0.00120064, 7.21874161, 0.99393808, 0.99682545, 0.49119776],\
+[	-6.22089545, -0.00197271, 0.00119995, 7.21892274, 0.99394184, 0.99682734, 0.49120347],\
+[	-6.22107477, -0.00197152, 0.00119926, 7.21910325, 0.99394559, 0.99682922, 0.49120916],\
+[	-6.22125347, -0.00197032, 0.00119857, 7.21928314, 0.99394935, 0.99683111, 0.49121482],\
+[	-6.22143155, -0.00196913, 0.00119788, 7.21946242, 0.99395309, 0.99683299, 0.49122047],\
+[	-6.22160902, -0.00196794, 0.00119719, 7.21964107, 0.99395684, 0.99683486, 0.49122611],\
+[	-6.22178587, -0.00196676, 0.00119650, 7.21981911, 0.99396058, 0.99683674, 0.49123173],\
+[	-6.22196211, -0.00196557, 0.00119582, 7.21999654, 0.99396431, 0.99683861, 0.49123732],\
+[	-6.22213774, -0.00196438, 0.00119513, 7.22017336, 0.99396804, 0.99684049, 0.49124290],\
+[	-6.22231277, -0.00196320, 0.00119444, 7.22034957, 0.99397177, 0.99684236, 0.49124846],\
+[	-6.22248719, -0.00196202, 0.00119376, 7.22052517, 0.99397549, 0.99684423, 0.49125400],\
+[	-6.22266101, -0.00196083, 0.00119307, 7.22070017, 0.99397920, 0.99684609, 0.49125953],\
+[	-6.22283422, -0.00195965, 0.00119239, 7.22087457, 0.99398292, 0.99684796, 0.49126504],\
+[	-6.22300684, -0.00195848, 0.00119170, 7.22104836, 0.99398663, 0.99684982, 0.49127053],\
+[	-6.22317886, -0.00195730, 0.00119102, 7.22122156, 0.99399033, 0.99685168, 0.49127600],\
+[	-6.22335028, -0.00195612, 0.00119034, 7.22139416, 0.99399403, 0.99685354, 0.49128145],\
+[	-6.22352111, -0.00195495, 0.00118965, 7.22156617, 0.99399773, 0.99685540, 0.49128689],\
+[	-6.22369135, -0.00195377, 0.00118897, 7.22173758, 0.99400142, 0.99685726, 0.49129231],\
+[	-6.22386100, -0.00195260, 0.00118829, 7.22190841, 0.99400511, 0.99685911, 0.49129771],\
+[	-6.22403007, -0.00195143, 0.00118761, 7.22207864, 0.99400879, 0.99686096, 0.49130310],\
+[	-6.22419854, -0.00195026, 0.00118693, 7.22224829, 0.99401247, 0.99686281, 0.49130846],\
+[	-6.22436644, -0.00194909, 0.00118625, 7.22241735, 0.99401615, 0.99686466, 0.49131381],\
+[	-6.22453375, -0.00194792, 0.00118557, 7.22258583, 0.99401982, 0.99686651, 0.49131914],\
+[	-6.22470048, -0.00194675, 0.00118490, 7.22275373, 0.99402348, 0.99686835, 0.49132446],\
+[	-6.22486664, -0.00194559, 0.00118422, 7.22292105, 0.99402715, 0.99687019, 0.49132975],\
+[	-6.22503222, -0.00194442, 0.00118354, 7.22308780, 0.99403081, 0.99687204, 0.49133503],\
+[	-6.22519722, -0.00194326, 0.00118287, 7.22325396, 0.99403446, 0.99687387, 0.49134030],\
+[	-6.22536166, -0.00194210, 0.00118219, 7.22341956, 0.99403811, 0.99687571, 0.49134554],\
+[	-6.22552552, -0.00194094, 0.00118152, 7.22358458, 0.99404176, 0.99687755, 0.49135077],\
+[	-6.22568881, -0.00193978, 0.00118084, 7.22374904, 0.99404540, 0.99687938, 0.49135598],\
+[	-6.22585154, -0.00193862, 0.00118017, 7.22391292, 0.99404904, 0.99688121, 0.49136117],\
+[	-6.22601370, -0.00193746, 0.00117950, 7.22407624, 0.99405267, 0.99688304, 0.49136635],\
+[	-6.22617531, -0.00193631, 0.00117882, 7.22423900, 0.99405630, 0.99688487, 0.49137152],\
+[	-6.22633635, -0.00193515, 0.00117815, 7.22440119, 0.99405992, 0.99688670, 0.49137666],\
+[	-6.22649683, -0.00193400, 0.00117748, 7.22456283, 0.99406354, 0.99688852, 0.49138179],\
+[	-6.22665675, -0.00193285, 0.00117681, 7.22472390, 0.99406716, 0.99689034, 0.49138690],\
+[	-6.22681612, -0.00193170, 0.00117614, 7.22488442, 0.99407077, 0.99689216, 0.49139199],\
+[	-6.22697494, -0.00193055, 0.00117547, 7.22504439, 0.99407438, 0.99689398, 0.49139707],\
+[	-6.22713320, -0.00192940, 0.00117480, 7.22520380, 0.99407799, 0.99689580, 0.49140214],\
+[	-6.22729092, -0.00192825, 0.00117413, 7.22536266, 0.99408159, 0.99689762, 0.49140718],\
+[	-6.22744808, -0.00192711, 0.00117346, 7.22552098, 0.99408519, 0.99689943, 0.49141221],\
+[	-6.22760470, -0.00192596, 0.00117280, 7.22567874, 0.99408878, 0.99690124, 0.49141723],\
+[	-6.22776078, -0.00192482, 0.00117213, 7.22583596, 0.99409237, 0.99690305, 0.49142222],\
+[	-6.22791631, -0.00192368, 0.00117147, 7.22599264, 0.99409595, 0.99690486, 0.49142719],\
+[	-6.22807131, -0.00192253, 0.00117080, 7.22614877, 0.99409953, 0.99690667, 0.49143216],\
+[	-6.22822576, -0.00192139, 0.00117014, 7.22630437, 0.99410311, 0.99690847, 0.49143711],\
+[	-6.22837968, -0.00192026, 0.00116947, 7.22645942, 0.99410668, 0.99691027, 0.49144204],\
+[	-6.22853306, -0.00191912, 0.00116881, 7.22661394, 0.99411025, 0.99691207, 0.49144696],\
+[	-6.22868591, -0.00191798, 0.00116815, 7.22676793, 0.99411381, 0.99691387, 0.49145186],\
+[	-6.22883823, -0.00191685, 0.00116748, 7.22692138, 0.99411737, 0.99691567, 0.49145674],\
+[	-6.22899002, -0.00191571, 0.00116682, 7.22707430, 0.99412093, 0.99691747, 0.49146161],\
+[	-6.22914128, -0.00191458, 0.00116616, 7.22722670, 0.99412448, 0.99691926, 0.49146647],\
+[	-6.22929201, -0.00191345, 0.00116550, 7.22737856, 0.99412803, 0.99692105, 0.49147130],\
+[	-6.22944222, -0.00191232, 0.00116484, 7.22752990, 0.99413157, 0.99692284, 0.49147613],\
+[	-6.22959190, -0.00191119, 0.00116418, 7.22768071, 0.99413511, 0.99692463, 0.49148093],\
+[	-6.22974107, -0.00191006, 0.00116352, 7.22783101, 0.99413865, 0.99692642, 0.49148571],\
+[	-6.22988971, -0.00190893, 0.00116286, 7.22798078, 0.99414218, 0.99692820, 0.49149049],\
+[	-6.23003784, -0.00190781, 0.00116221, 7.22813003, 0.99414571, 0.99692998, 0.49149525],\
+[	-6.23018545, -0.00190669, 0.00116155, 7.22827877, 0.99414924, 0.99693176, 0.49149999],\
+[	-6.23033255, -0.00190556, 0.00116089, 7.22842699, 0.99415276, 0.99693354, 0.49150472],\
+[	-6.23047913, -0.00190444, 0.00116024, 7.22857469, 0.99415627, 0.99693532, 0.49150944],\
+[	-6.23062521, -0.00190332, 0.00115958, 7.22872189, 0.99415978, 0.99693710, 0.49151413],\
+[	-6.23077077, -0.00190220, 0.00115893, 7.22886857, 0.99416329, 0.99693887, 0.49151881],\
+[	-6.23091583, -0.00190108, 0.00115828, 7.22901475, 0.99416680, 0.99694064, 0.49152348],\
+[	-6.23106038, -0.00189996, 0.00115762, 7.22916042, 0.99417030, 0.99694241, 0.49152813],\
+[	-6.23120443, -0.00189885, 0.00115697, 7.22930558, 0.99417379, 0.99694418, 0.49153277],\
+[	-6.23134798, -0.00189773, 0.00115632, 7.22945024, 0.99417729, 0.99694595, 0.49153739],\
+[	-6.23149102, -0.00189662, 0.00115567, 7.22959440, 0.99418078, 0.99694772, 0.49154200],\
+[	-6.23163357, -0.00189551, 0.00115501, 7.22973806, 0.99418426, 0.99694948, 0.49154659],\
+[	-6.23177562, -0.00189439, 0.00115436, 7.22988122, 0.99418774, 0.99695124, 0.49155116],\
+[	-6.23191717, -0.00189328, 0.00115371, 7.23002389, 0.99419122, 0.99695300, 0.49155572],\
+[	-6.23205823, -0.00189218, 0.00115307, 7.23016606, 0.99419469, 0.99695476, 0.49156028],\
+[	-6.23219880, -0.00189107, 0.00115242, 7.23030773, 0.99419816, 0.99695652, 0.49156481],\
+[	-6.23233888, -0.00188996, 0.00115177, 7.23044891, 0.99420163, 0.99695827, 0.49156932],\
+[	-6.23247846, -0.00188886, 0.00115112, 7.23058961, 0.99420509, 0.99696002, 0.49157383],\
+[	-6.23261756, -0.00188775, 0.00115047, 7.23072981, 0.99420855, 0.99696177, 0.49157832],\
+[	-6.23275618, -0.00188665, 0.00114983, 7.23086953, 0.99421200, 0.99696352, 0.49158279],\
+[	-6.23289431, -0.00188555, 0.00114918, 7.23100876, 0.99421545, 0.99696527, 0.49158725],\
+[	-6.23303196, -0.00188444, 0.00114854, 7.23114751, 0.99421890, 0.99696702, 0.49159170],\
+[	-6.23316912, -0.00188334, 0.00114789, 7.23128578, 0.99422234, 0.99696876, 0.49159612],\
+[	-6.23330581, -0.00188225, 0.00114725, 7.23142357, 0.99422578, 0.99697050, 0.49160053],\
+[	-6.23344202, -0.00188115, 0.00114661, 7.23156087, 0.99422921, 0.99697225, 0.49160494],\
+[	-6.23357776, -0.00188005, 0.00114596, 7.23169771, 0.99423264, 0.99697398, 0.49160932],\
+[	-6.23371302, -0.00187896, 0.00114532, 7.23183406, 0.99423607, 0.99697572, 0.49161370],\
+[	-6.23384781, -0.00187786, 0.00114468, 7.23196994, 0.99423949, 0.99697746, 0.49161806],\
+[	-6.23398212, -0.00187677, 0.00114404, 7.23210535, 0.99424291, 0.99697919, 0.49162241],\
+[	-6.23411597, -0.00187568, 0.00114340, 7.23224029, 0.99424633, 0.99698092, 0.49162674],\
+[	-6.23424935, -0.00187459, 0.00114276, 7.23237476, 0.99424974, 0.99698265, 0.49163105],\
+[	-6.23438226, -0.00187350, 0.00114212, 7.23250876, 0.99425315, 0.99698438, 0.49163535],\
+[	-6.23451471, -0.00187241, 0.00114148, 7.23264230, 0.99425655, 0.99698611, 0.49163964],\
+[	-6.23464669, -0.00187132, 0.00114084, 7.23277537, 0.99425995, 0.99698783, 0.49164392],\
+[	-6.23477821, -0.00187024, 0.00114021, 7.23290797, 0.99426335, 0.99698956, 0.49164818],\
+[	-6.23490927, -0.00186915, 0.00113957, 7.23304012, 0.99426674, 0.99699128, 0.49165242],\
+[	-6.23503988, -0.00186807, 0.00113893, 7.23317181, 0.99427013, 0.99699300, 0.49165666],\
+[	-6.23517002, -0.00186698, 0.00113830, 7.23330304, 0.99427352, 0.99699472, 0.49166087],\
+[	-6.23529971, -0.00186590, 0.00113766, 7.23343381, 0.99427690, 0.99699644, 0.49166508],\
+[	-6.23542895, -0.00186482, 0.00113703, 7.23356413, 0.99428028, 0.99699815, 0.49166927],\
+[	-6.23555773, -0.00186374, 0.00113639, 7.23369399, 0.99428365, 0.99699986, 0.49167345],\
+[	-6.23568606, -0.00186267, 0.00113576, 7.23382340, 0.99428702, 0.99700157, 0.49167762],\
+[	-6.23581395, -0.00186159, 0.00113513, 7.23395236, 0.99429039, 0.99700328, 0.49168176],\
+[	-6.23594138, -0.00186051, 0.00113449, 7.23408087, 0.99429375, 0.99700499, 0.49168591],\
+[	-6.23606837, -0.00185944, 0.00113386, 7.23420893, 0.99429711, 0.99700670, 0.49169003],\
+[	-6.23619491, -0.00185836, 0.00113323, 7.23433655, 0.99430047, 0.99700840, 0.49169415],\
+[	-6.23632102, -0.00185729, 0.00113260, 7.23446372, 0.99430382, 0.99701011, 0.49169823],\
+[	-6.23644667, -0.00185622, 0.00113197, 7.23459045, 0.99430717, 0.99701181, 0.49170232],\
+[	-6.23657189, -0.00185515, 0.00113134, 7.23471674, 0.99431051, 0.99701351, 0.49170640],\
+[	-6.23669667, -0.00185408, 0.00113071, 7.23484259, 0.99431385, 0.99701521, 0.49171044],\
+[	-6.23682101, -0.00185301, 0.00113009, 7.23496800, 0.99431719, 0.99701690, 0.49171449],\
+[	-6.23694492, -0.00185195, 0.00112946, 7.23509297, 0.99432052, 0.99701860, 0.49171853],\
+[	-6.23706839, -0.00185088, 0.00112883, 7.23521751, 0.99432385, 0.99702029, 0.49172254],\
+[	-6.23719143, -0.00184981, 0.00112820, 7.23534161, 0.99432718, 0.99702198, 0.49172655],\
+[	-6.23731403, -0.00184875, 0.00112758, 7.23546528, 0.99433050, 0.99702367, 0.49173054],\
+[	-6.23743621, -0.00184769, 0.00112695, 7.23558852, 0.99433382, 0.99702536, 0.49173452],\
+[	-6.23755795, -0.00184663, 0.00112633, 7.23571133, 0.99433713, 0.99702705, 0.49173848],\
+[	-6.23767927, -0.00184557, 0.00112570, 7.23583371, 0.99434044, 0.99702873, 0.49174243],\
+[	-6.23780017, -0.00184451, 0.00112508, 7.23595566, 0.99434375, 0.99703041, 0.49174639],\
+[	-6.23792064, -0.00184345, 0.00112446, 7.23607719, 0.99434706, 0.99703209, 0.49175031],\
+[	-6.23804068, -0.00184239, 0.00112383, 7.23619829, 0.99435036, 0.99703377, 0.49175422],\
+[	-6.23816031, -0.00184134, 0.00112321, 7.23631897, 0.99435365, 0.99703545, 0.49175813],\
+[	-6.23827952, -0.00184028, 0.00112259, 7.23643923, 0.99435695, 0.99703713, 0.49176201],\
+[	-6.23839830, -0.00183923, 0.00112197, 7.23655907, 0.99436024, 0.99703880, 0.49176589],\
+[	-6.23851667, -0.00183817, 0.00112135, 7.23667850, 0.99436352, 0.99704048, 0.49176975],\
+[	-6.23863462, -0.00183712, 0.00112073, 7.23679750, 0.99436680, 0.99704215, 0.49177361],\
+[	-6.23875216, -0.00183607, 0.00112011, 7.23691609, 0.99437008, 0.99704382, 0.49177744],\
+[	-6.23886929, -0.00183502, 0.00111949, 7.23703427, 0.99437336, 0.99704548, 0.49178127],\
+[	-6.23898600, -0.00183398, 0.00111887, 7.23715203, 0.99437663, 0.99704715, 0.49178508],\
+[	-6.23910231, -0.00183293, 0.00111826, 7.23726938, 0.99437990, 0.99704881, 0.49178889],\
+[	-6.23921820, -0.00183188, 0.00111764, 7.23738632, 0.99438316, 0.99705048, 0.49179268],\
+[	-6.23933369, -0.00183084, 0.00111702, 7.23750286, 0.99438642, 0.99705214, 0.49179645],\
+[	-6.23944877, -0.00182979, 0.00111641, 7.23761898, 0.99438968, 0.99705380, 0.49180022],\
+[	-6.23956345, -0.00182875, 0.00111579, 7.23773470, 0.99439293, 0.99705546, 0.49180397],\
+[	-6.23967773, -0.00182771, 0.00111518, 7.23785002, 0.99439618, 0.99705711, 0.49180771],\
+[	-6.23979160, -0.00182667, 0.00111456, 7.23796493, 0.99439943, 0.99705877, 0.49181144],\
+[	-6.23990507, -0.00182563, 0.00111395, 7.23807944, 0.99440267, 0.99706042, 0.49181516],\
+[	-6.24001814, -0.00182459, 0.00111334, 7.23819355, 0.99440591, 0.99706207, 0.49181886],\
+[	-6.24013082, -0.00182355, 0.00111273, 7.23830726, 0.99440915, 0.99706372, 0.49182255],\
+[	-6.24024309, -0.00182251, 0.00111211, 7.23842058, 0.99441238, 0.99706537, 0.49182623],\
+[	-6.24035498, -0.00182148, 0.00111150, 7.23853350, 0.99441561, 0.99706702, 0.49182990],\
+[	-6.24046647, -0.00182045, 0.00111089, 7.23864602, 0.99441884, 0.99706866, 0.49183355],\
+[	-6.24057756, -0.00181941, 0.00111028, 7.23875815, 0.99442206, 0.99707031, 0.49183719],\
+[	-6.24068827, -0.00181838, 0.00110967, 7.23886989, 0.99442528, 0.99707195, 0.49184083],\
+[	-6.24079858, -0.00181735, 0.00110906, 7.23898123, 0.99442849, 0.99707359, 0.49184446],\
+[	-6.24090851, -0.00181632, 0.00110846, 7.23909219, 0.99443170, 0.99707523, 0.49184806],\
+[	-6.24101805, -0.00181529, 0.00110785, 7.23920276, 0.99443491, 0.99707686, 0.49185165],\
+[	-6.24112720, -0.00181426, 0.00110724, 7.23931294, 0.99443812, 0.99707850, 0.49185524],\
+[	-6.24123597, -0.00181324, 0.00110663, 7.23942274, 0.99444132, 0.99708013, 0.49185881],\
+[	-6.24134436, -0.00181221, 0.00110603, 7.23953215, 0.99444451, 0.99708176, 0.49186237],\
+[	-6.24145237, -0.00181118, 0.00110542, 7.23964118, 0.99444771, 0.99708339, 0.49186593],\
+[	-6.24155999, -0.00181016, 0.00110482, 7.23974983, 0.99445090, 0.99708502, 0.49186947],\
+[	-6.24166723, -0.00180914, 0.00110421, 7.23985810, 0.99445408, 0.99708665, 0.49187299],\
+[	-6.24177410, -0.00180812, 0.00110361, 7.23996598, 0.99445727, 0.99708828, 0.49187651],\
+[	-6.24188059, -0.00180710, 0.00110300, 7.24007349, 0.99446045, 0.99708990, 0.49188001],\
+[	-6.24198671, -0.00180608, 0.00110240, 7.24018063, 0.99446363, 0.99709152, 0.49188351],\
+[	-6.24209245, -0.00180506, 0.00110180, 7.24028739, 0.99446680, 0.99709314, 0.49188699],\
+[	-6.24219781, -0.00180404, 0.00110120, 7.24039377, 0.99446997, 0.99709476, 0.49189046],\
+[	-6.24230281, -0.00180302, 0.00110060, 7.24049978, 0.99447313, 0.99709638, 0.49189392],\
+[	-6.24240743, -0.00180201, 0.00110000, 7.24060543, 0.99447630, 0.99709800, 0.49189737],\
+[	-6.24251169, -0.00180100, 0.00109940, 7.24071070, 0.99447946, 0.99709961, 0.49190081],\
+[	-6.24261558, -0.00179998, 0.00109880, 7.24081560, 0.99448261, 0.99710122, 0.49190424],\
+[	-6.24271910, -0.00179897, 0.00109820, 7.24092013, 0.99448577, 0.99710283, 0.49190765],\
+[	-6.24282226, -0.00179796, 0.00109760, 7.24102430, 0.99448891, 0.99710444, 0.49191105],\
+[	-6.24292505, -0.00179695, 0.00109700, 7.24112810, 0.99449206, 0.99710605, 0.49191444],\
+[	-6.24302748, -0.00179594, 0.00109640, 7.24123154, 0.99449520, 0.99710766, 0.49191782],\
+[	-6.24312955, -0.00179493, 0.00109581, 7.24133462, 0.99449834, 0.99710926, 0.49192119],\
+[	-6.24323126, -0.00179392, 0.00109521, 7.24143733, 0.99450148, 0.99711087, 0.49192455],\
+[	-6.24333261, -0.00179292, 0.00109461, 7.24153969, 0.99450461, 0.99711247, 0.49192789],\
+[	-6.24343360, -0.00179191, 0.00109402, 7.24164168, 0.99450774, 0.99711407, 0.49193123],\
+[	-6.24353423, -0.00179091, 0.00109342, 7.24174332, 0.99451086, 0.99711567, 0.49193456],\
+[	-6.24363451, -0.00178991, 0.00109283, 7.24184460, 0.99451399, 0.99711726, 0.49193787],\
+[	-6.24373444, -0.00178891, 0.00109224, 7.24194553, 0.99451711, 0.99711886, 0.49194119],\
+[	-6.24383401, -0.00178790, 0.00109164, 7.24204610, 0.99452022, 0.99712045, 0.49194448],\
+[	-6.24393323, -0.00178690, 0.00109105, 7.24214632, 0.99452333, 0.99712204, 0.49194776],\
+[	-6.24403210, -0.00178591, 0.00109046, 7.24224619, 0.99452644, 0.99712364, 0.49195103],\
+[	-6.24413062, -0.00178491, 0.00108987, 7.24234571, 0.99452955, 0.99712522, 0.49195429],\
+[	-6.24422879, -0.00178391, 0.00108928, 7.24244488, 0.99453265, 0.99712681, 0.49195755],\
+[	-6.24432661, -0.00178292, 0.00108869, 7.24254370, 0.99453575, 0.99712840, 0.49196079],\
+[	-6.24442409, -0.00178192, 0.00108810, 7.24264217, 0.99453884, 0.99712998, 0.49196402],\
+[	-6.24452123, -0.00178093, 0.00108751, 7.24274030, 0.99454194, 0.99713157, 0.49196723],\
+[	-6.24461802, -0.00177993, 0.00108692, 7.24283808, 0.99454502, 0.99713315, 0.49197045],\
+[	-6.24471446, -0.00177894, 0.00108633, 7.24293552, 0.99454811, 0.99713473, 0.49197365],\
+[	-6.24481057, -0.00177795, 0.00108574, 7.24303262, 0.99455119, 0.99713630, 0.49197684],\
+[	-6.24490634, -0.00177696, 0.00108516, 7.24312938, 0.99455427, 0.99713788, 0.49198002],\
+[	-6.24500177, -0.00177597, 0.00108457, 7.24322579, 0.99455735, 0.99713946, 0.49198318],\
+[	-6.24509686, -0.00177499, 0.00108398, 7.24332187, 0.99456042, 0.99714103, 0.49198634],\
+[	-6.24519161, -0.00177400, 0.00108340, 7.24341761, 0.99456349, 0.99714260, 0.49198949],\
+[	-6.24528603, -0.00177301, 0.00108281, 7.24351302, 0.99456655, 0.99714417, 0.49199263],\
+[	-6.24538012, -0.00177203, 0.00108223, 7.24360809, 0.99456961, 0.99714574, 0.49199575],\
+[	-6.24547387, -0.00177105, 0.00108164, 7.24370283, 0.99457267, 0.99714731, 0.49199887],\
+[	-6.24556729, -0.00177006, 0.00108106, 7.24379723, 0.99457573, 0.99714887, 0.49200198],\
+[	-6.24566038, -0.00176908, 0.00108048, 7.24389130, 0.99457878, 0.99715044, 0.49200507],\
+[	-6.24575314, -0.00176810, 0.00107990, 7.24398504, 0.99458183, 0.99715200, 0.49200817],\
+[	-6.24584557, -0.00176712, 0.00107931, 7.24407845, 0.99458488, 0.99715356, 0.49201123],\
+[	-6.24593768, -0.00176614, 0.00107873, 7.24417153, 0.99458792, 0.99715512, 0.49201431],\
+[	-6.24602946, -0.00176517, 0.00107815, 7.24426429, 0.99459096, 0.99715668, 0.49201737],\
+[	-6.24612091, -0.00176419, 0.00107757, 7.24435672, 0.99459400, 0.99715824, 0.49202041],\
+[	-6.24621204, -0.00176321, 0.00107699, 7.24444883, 0.99459703, 0.99715979, 0.49202344],\
+[	-6.24630285, -0.00176224, 0.00107641, 7.24454061, 0.99460006, 0.99716135, 0.49202647],\
+[	-6.24639333, -0.00176127, 0.00107584, 7.24463206, 0.99460309, 0.99716290, 0.49202949],\
+[	-6.24648350, -0.00176029, 0.00107526, 7.24472320, 0.99460611, 0.99716445, 0.49203250],\
+[	-6.24657334, -0.00175932, 0.00107468, 7.24481402, 0.99460913, 0.99716600, 0.49203550],\
+[	-6.24666287, -0.00175835, 0.00107410, 7.24490451, 0.99461215, 0.99716755, 0.49203848],\
+[	-6.24675208, -0.00175738, 0.00107353, 7.24499469, 0.99461516, 0.99716909, 0.49204146],\
+[	-6.24684097, -0.00175641, 0.00107295, 7.24508455, 0.99461817, 0.99717064, 0.49204443],\
+[	-6.24692955, -0.00175545, 0.00107238, 7.24517410, 0.99462118, 0.99717218, 0.49204739],\
+[	-6.24701781, -0.00175448, 0.00107180, 7.24526333, 0.99462418, 0.99717372, 0.49205033],\
+[	-6.24710576, -0.00175351, 0.00107123, 7.24535225, 0.99462718, 0.99717526, 0.49205328],\
+[	-6.24719340, -0.00175255, 0.00107065, 7.24544085, 0.99463018, 0.99717680, 0.49205621],\
+[	-6.24728073, -0.00175158, 0.00107008, 7.24552914, 0.99463317, 0.99717834, 0.49205913],\
+[	-6.24736775, -0.00175062, 0.00106951, 7.24561712, 0.99463617, 0.99717987, 0.49206204],\
+[	-6.24745446, -0.00174966, 0.00106893, 7.24570479, 0.99463915, 0.99718141, 0.49206494],\
+[	-6.24754086, -0.00174870, 0.00106836, 7.24579216, 0.99464214, 0.99718294, 0.49206783],\
+[	-6.24762695, -0.00174774, 0.00106779, 7.24587921, 0.99464512, 0.99718447, 0.49207072],\
+[	-6.24771274, -0.00174678, 0.00106722, 7.24596596, 0.99464810, 0.99718600, 0.49207359],\
+[	-6.24779823, -0.00174582, 0.00106665, 7.24605241, 0.99465108, 0.99718753, 0.49207645],\
+[	-6.24788341, -0.00174487, 0.00106608, 7.24613854, 0.99465405, 0.99718905, 0.49207931],\
+[	-6.24796829, -0.00174391, 0.00106551, 7.24622438, 0.99465702, 0.99719058, 0.49208216],\
+[	-6.24805287, -0.00174296, 0.00106494, 7.24630991, 0.99465998, 0.99719210, 0.49208499],\
+[	-6.24813715, -0.00174200, 0.00106438, 7.24639515, 0.99466295, 0.99719362, 0.49208783],\
+[	-6.24822113, -0.00174105, 0.00106381, 7.24648008, 0.99466591, 0.99719514, 0.49209064],\
+[	-6.24830481, -0.00174010, 0.00106324, 7.24656471, 0.99466886, 0.99719666, 0.49209345],\
+[	-6.24838819, -0.00173915, 0.00106267, 7.24664905, 0.99467182, 0.99719818, 0.49209625],\
+[	-6.24847128, -0.00173819, 0.00106211, 7.24673309, 0.99467477, 0.99719970, 0.49209904],\
+[	-6.24855407, -0.00173725, 0.00106154, 7.24681683, 0.99467771, 0.99720121, 0.49210182],\
+[	-6.24863657, -0.00173630, 0.00106098, 7.24690027, 0.99468066, 0.99720272, 0.49210459],\
+[	-6.24871878, -0.00173535, 0.00106041, 7.24698343, 0.99468360, 0.99720424, 0.49210735],\
+[	-6.24880069, -0.00173440, 0.00105985, 7.24706629, 0.99468654, 0.99720575, 0.49211010],\
+[	-6.24888231, -0.00173346, 0.00105929, 7.24714886, 0.99468947, 0.99720725, 0.49211286],\
+[	-6.24896365, -0.00173251, 0.00105872, 7.24723113, 0.99469240, 0.99720876, 0.49211559],\
+[	-6.24904469, -0.00173157, 0.00105816, 7.24731312, 0.99469533, 0.99721027, 0.49211832],\
+[	-6.24912545, -0.00173063, 0.00105760, 7.24739482, 0.99469826, 0.99721177, 0.49212104],\
+[	-6.24920591, -0.00172969, 0.00105704, 7.24747623, 0.99470118, 0.99721327, 0.49212375],\
+[	-6.24928610, -0.00172875, 0.00105648, 7.24755735, 0.99470410, 0.99721478, 0.49212645],\
+[	-6.24936599, -0.00172781, 0.00105592, 7.24763819, 0.99470702, 0.99721628, 0.49212915],\
+[	-6.24944561, -0.00172687, 0.00105536, 7.24771874, 0.99470993, 0.99721777, 0.49213183],\
+[	-6.24952494, -0.00172593, 0.00105480, 7.24779901, 0.99471284, 0.99721927, 0.49213451],\
+[	-6.24960399, -0.00172499, 0.00105424, 7.24787899, 0.99471575, 0.99722077, 0.49213717],\
+[	-6.24968275, -0.00172406, 0.00105368, 7.24795870, 0.99471865, 0.99722226, 0.49213983],\
+[	-6.24976124, -0.00172312, 0.00105312, 7.24803812, 0.99472155, 0.99722375, 0.49214248],\
+[	-6.24983945, -0.00172219, 0.00105257, 7.24811726, 0.99472445, 0.99722524, 0.49214512],\
+[	-6.24991738, -0.00172126, 0.00105201, 7.24819612, 0.99472735, 0.99722673, 0.49214776],\
+[	-6.24999503, -0.00172032, 0.00105145, 7.24827471, 0.99473024, 0.99722822, 0.49215038],\
+[	-6.25007241, -0.00171939, 0.00105090, 7.24835302, 0.99473313, 0.99722971, 0.49215299],\
+[	-6.25014951, -0.00171846, 0.00105034, 7.24843105, 0.99473601, 0.99723119, 0.49215561],\
+[	-6.25022634, -0.00171753, 0.00104979, 7.24850880, 0.99473890, 0.99723268, 0.49215820],\
+[	-6.25030289, -0.00171660, 0.00104923, 7.24858628, 0.99474178, 0.99723416, 0.49216079],\
+[	-6.25037917, -0.00171568, 0.00104868, 7.24866349, 0.99474465, 0.99723564, 0.49216338],\
+[	-6.25045518, -0.00171475, 0.00104813, 7.24874043, 0.99474753, 0.99723712, 0.49216595],\
+[	-6.25053092, -0.00171382, 0.00104758, 7.24881709, 0.99475040, 0.99723860, 0.49216851],\
+[	-6.25060639, -0.00171290, 0.00104702, 7.24889349, 0.99475327, 0.99724008, 0.49217106],\
+[	-6.25068159, -0.00171198, 0.00104647, 7.24896961, 0.99475613, 0.99724155, 0.49217362],\
+[	-6.25075652, -0.00171105, 0.00104592, 7.24904547, 0.99475899, 0.99724303, 0.49217616],\
+[	-6.25083119, -0.00171013, 0.00104537, 7.24912106, 0.99476185, 0.99724450, 0.49217869],\
+[	-6.25090559, -0.00170921, 0.00104482, 7.24919638, 0.99476471, 0.99724597, 0.49218121],\
+[	-6.25097972, -0.00170829, 0.00104427, 7.24927143, 0.99476756, 0.99724744, 0.49218373],\
+[	-6.25105359, -0.00170737, 0.00104372, 7.24934622, 0.99477041, 0.99724891, 0.49218624],\
+[	-6.25112720, -0.00170645, 0.00104317, 7.24942075, 0.99477326, 0.99725037, 0.49218873],\
+[	-6.25120055, -0.00170554, 0.00104262, 7.24949501, 0.99477610, 0.99725184, 0.49219122],\
+[	-6.25127363, -0.00170462, 0.00104208, 7.24956901, 0.99477894, 0.99725330, 0.49219371],\
+[	-6.25134646, -0.00170370, 0.00104153, 7.24964275, 0.99478178, 0.99725477, 0.49219618],\
+[	-6.25141902, -0.00170279, 0.00104098, 7.24971623, 0.99478462, 0.99725623, 0.49219865],\
+[	-6.25149133, -0.00170188, 0.00104044, 7.24978945, 0.99478745, 0.99725769, 0.49220112],\
+[	-6.25156338, -0.00170096, 0.00103989, 7.24986241, 0.99479028, 0.99725915, 0.49220356],\
+[	-6.25163517, -0.00170005, 0.00103935, 7.24993512, 0.99479311, 0.99726060, 0.49220600],\
+[	-6.25170670, -0.00169914, 0.00103880, 7.25000756, 0.99479593, 0.99726206, 0.49220844],\
+[	-6.25177798, -0.00169823, 0.00103826, 7.25007975, 0.99479875, 0.99726351, 0.49221087],\
+[	-6.25184901, -0.00169732, 0.00103771, 7.25015169, 0.99480157, 0.99726496, 0.49221329],\
+[	-6.25191978, -0.00169641, 0.00103717, 7.25022337, 0.99480438, 0.99726642, 0.49221570],\
+[	-6.25199031, -0.00169551, 0.00103663, 7.25029480, 0.99480719, 0.99726787, 0.49221811],\
+[	-6.25206057, -0.00169460, 0.00103609, 7.25036598, 0.99481000, 0.99726931, 0.49222050],\
+[	-6.25213059, -0.00169369, 0.00103555, 7.25043690, 0.99481281, 0.99727076, 0.49222289],\
+[	-6.25220036, -0.00169279, 0.00103500, 7.25050757, 0.99481561, 0.99727221, 0.49222527],\
+[	-6.25226988, -0.00169189, 0.00103446, 7.25057800, 0.99481841, 0.99727365, 0.49222765],\
+[	-6.25233916, -0.00169098, 0.00103392, 7.25064817, 0.99482121, 0.99727509, 0.49223001],\
+[	-6.25240818, -0.00169008, 0.00103338, 7.25071810, 0.99482400, 0.99727653, 0.49223237],\
+[	-6.25247696, -0.00168918, 0.00103285, 7.25078778, 0.99482680, 0.99727797, 0.49223472],\
+[	-6.25254550, -0.00168828, 0.00103231, 7.25085722, 0.99482958, 0.99727941, 0.49223706],\
+[	-6.25261379, -0.00168738, 0.00103177, 7.25092640, 0.99483237, 0.99728085, 0.49223939],\
+[	-6.25268183, -0.00168648, 0.00103123, 7.25099535, 0.99483515, 0.99728229, 0.49224172],\
+[	-6.25274963, -0.00168559, 0.00103069, 7.25106405, 0.99483793, 0.99728372, 0.49224404],\
+[	-6.25281720, -0.00168469, 0.00103016, 7.25113251, 0.99484071, 0.99728515, 0.49224636],\
+[	-6.25288452, -0.00168379, 0.00102962, 7.25120072, 0.99484348, 0.99728659, 0.49224866],\
+[	-6.25295160, -0.00168290, 0.00102909, 7.25126870, 0.99484626, 0.99728802, 0.49225097],\
+[	-6.25301844, -0.00168200, 0.00102855, 7.25133643, 0.99484902, 0.99728945, 0.49225325],\
+[	-6.25308504, -0.00168111, 0.00102802, 7.25140393, 0.99485179, 0.99729087, 0.49225553],\
+[	-6.25315140, -0.00168022, 0.00102748, 7.25147118, 0.99485455, 0.99729230, 0.49225780],\
+[	-6.25321753, -0.00167933, 0.00102695, 7.25153820, 0.99485731, 0.99729372, 0.49226008],\
+[	-6.25328342, -0.00167844, 0.00102641, 7.25160498, 0.99486007, 0.99729515, 0.49226233],\
+[	-6.25334907, -0.00167755, 0.00102588, 7.25167153, 0.99486282, 0.99729657, 0.49226459],\
+[	-6.25341450, -0.00167666, 0.00102535, 7.25173784, 0.99486558, 0.99729799, 0.49226684],\
+[	-6.25347968, -0.00167577, 0.00102482, 7.25180391, 0.99486832, 0.99729941, 0.49226907],\
+[	-6.25354464, -0.00167489, 0.00102429, 7.25186975, 0.99487107, 0.99730083, 0.49227131],\
+[	-6.25360936, -0.00167400, 0.00102376, 7.25193536, 0.99487381, 0.99730224, 0.49227354],\
+[	-6.25367385, -0.00167312, 0.00102323, 7.25200074, 0.99487655, 0.99730366, 0.49227575],\
+[	-6.25373811, -0.00167223, 0.00102270, 7.25206588, 0.99487929, 0.99730507, 0.49227796],\
+[	-6.25380215, -0.00167135, 0.00102217, 7.25213080, 0.99488202, 0.99730649, 0.49228016],\
+[	-6.25386595, -0.00167047, 0.00102164, 7.25219548, 0.99488476, 0.99730790, 0.49228236],\
+[	-6.25392952, -0.00166958, 0.00102111, 7.25225994, 0.99488749, 0.99730931, 0.49228455],\
+[	-6.25399287, -0.00166870, 0.00102058, 7.25232417, 0.99489021, 0.99731072, 0.49228673],\
+[	-6.25405599, -0.00166782, 0.00102005, 7.25238817, 0.99489294, 0.99731212, 0.49228892],\
+[	-6.25411889, -0.00166694, 0.00101953, 7.25245194, 0.99489566, 0.99731353, 0.49229108],\
+[	-6.25418156, -0.00166607, 0.00101900, 7.25251549, 0.99489837, 0.99731493, 0.49229324],\
+[	-6.25424401, -0.00166519, 0.00101847, 7.25257882, 0.99490109, 0.99731634, 0.49229539],\
+[	-6.25430623, -0.00166431, 0.00101795, 7.25264192, 0.99490380, 0.99731774, 0.49229754],\
+[	-6.25436823, -0.00166344, 0.00101742, 7.25270479, 0.99490651, 0.99731914, 0.49229968],\
+[	-6.25443001, -0.00166256, 0.00101690, 7.25276745, 0.99490922, 0.99732054, 0.49230182],\
+[	-6.25449157, -0.00166169, 0.00101638, 7.25282988, 0.99491192, 0.99732194, 0.49230394],\
+[	-6.25455291, -0.00166082, 0.00101585, 7.25289209, 0.99491462, 0.99732333, 0.49230606],\
+[	-6.25461403, -0.00165994, 0.00101533, 7.25295408, 0.99491732, 0.99732473, 0.49230817],\
+[	-6.25467493, -0.00165907, 0.00101481, 7.25301586, 0.99492002, 0.99732612, 0.49231027],\
+[	-6.25473561, -0.00165820, 0.00101428, 7.25307741, 0.99492271, 0.99732751, 0.49231238],\
+[	-6.25479608, -0.00165733, 0.00101376, 7.25313874, 0.99492540, 0.99732890, 0.49231446],\
+[	-6.25485633, -0.00165647, 0.00101324, 7.25319986, 0.99492809, 0.99733029, 0.49231656],\
+[	-6.25491636, -0.00165560, 0.00101272, 7.25326076, 0.99493077, 0.99733168, 0.49231863],\
+[	-6.25497618, -0.00165473, 0.00101220, 7.25332145, 0.99493345, 0.99733307, 0.49232070],\
+[	-6.25503579, -0.00165386, 0.00101168, 7.25338192, 0.99493613, 0.99733445, 0.49232277],\
+[	-6.25509518, -0.00165300, 0.00101116, 7.25344218, 0.99493881, 0.99733584, 0.49232483],\
+[	-6.25515436, -0.00165214, 0.00101064, 7.25350222, 0.99494148, 0.99733722, 0.49232688],\
+[	-6.25521333, -0.00165127, 0.00101012, 7.25356206, 0.99494415, 0.99733860, 0.49232894],\
+[	-6.25527209, -0.00165041, 0.00100961, 7.25362168, 0.99494682, 0.99733998, 0.49233097],\
+[	-6.25533063, -0.00164955, 0.00100909, 7.25368108, 0.99494949, 0.99734136, 0.49233301],\
+[	-6.25538897, -0.00164869, 0.00100857, 7.25374028, 0.99495215, 0.99734274, 0.49233504],\
+[	-6.25544710, -0.00164783, 0.00100806, 7.25379927, 0.99495481, 0.99734412, 0.49233704],\
+[	-6.25550502, -0.00164697, 0.00100754, 7.25385805, 0.99495747, 0.99734549, 0.49233906],\
+[	-6.25556273, -0.00164611, 0.00100702, 7.25391662, 0.99496012, 0.99734687, 0.49234107],\
+[	-6.25562024, -0.00164525, 0.00100651, 7.25397499, 0.99496278, 0.99734824, 0.49234308],\
+[	-6.25567754, -0.00164440, 0.00100599, 7.25403314, 0.99496543, 0.99734961, 0.49234506],\
+[	-6.25573464, -0.00164354, 0.00100548, 7.25409110, 0.99496807, 0.99735098, 0.49234706],\
+[	-6.25579153, -0.00164268, 0.00100497, 7.25414884, 0.99497072, 0.99735235, 0.49234904],\
+[	-6.25584821, -0.00164183, 0.00100445, 7.25420638, 0.99497336, 0.99735372, 0.49235101],\
+[	-6.25590470, -0.00164098, 0.00100394, 7.25426372, 0.99497600, 0.99735508, 0.49235297],\
+[	-6.25596098, -0.00164012, 0.00100343, 7.25432086, 0.99497863, 0.99735645, 0.49235495],\
+[	-6.25601706, -0.00163927, 0.00100292, 7.25437779, 0.99498127, 0.99735781, 0.49235690],\
+[	-6.25607294, -0.00163842, 0.00100241, 7.25443452, 0.99498390, 0.99735917, 0.49235884],\
+[	-6.25612862, -0.00163757, 0.00100189, 7.25449105, 0.99498652, 0.99736053, 0.49236079],\
+[	-6.25618410, -0.00163672, 0.00100138, 7.25454738, 0.99498915, 0.99736189, 0.49236272],\
+[	-6.25623938, -0.00163587, 0.00100087, 7.25460351, 0.99499177, 0.99736325, 0.49236466],\
+[	-6.25629447, -0.00163503, 0.00100036, 7.25465944, 0.99499439, 0.99736461, 0.49236658],\
+[	-6.25634936, -0.00163418, 0.00099986, 7.25471518, 0.99499701, 0.99736596, 0.49236850],\
+[	-6.25640405, -0.00163333, 0.00099935, 7.25477071, 0.99499963, 0.99736732, 0.49237042],\
+[	-6.25645854, -0.00163249, 0.00099884, 7.25482605, 0.99500224, 0.99736867, 0.49237232],\
+[	-6.25651284, -0.00163164, 0.00099833, 7.25488119, 0.99500485, 0.99737002, 0.49237422],\
+[	-6.25656694, -0.00163080, 0.00099782, 7.25493614, 0.99500745, 0.99737137, 0.49237612],\
+[	-6.25662085, -0.00162996, 0.00099732, 7.25499089, 0.99501006, 0.99737272, 0.49237800],\
+[	-6.25667457, -0.00162912, 0.00099681, 7.25504545, 0.99501266, 0.99737407, 0.49237989],\
+[	-6.25672809, -0.00162828, 0.00099631, 7.25509982, 0.99501526, 0.99737542, 0.49238176],\
+[	-6.25678143, -0.00162744, 0.00099580, 7.25515399, 0.99501786, 0.99737676, 0.49238364],\
+[	-6.25683457, -0.00162660, 0.00099530, 7.25520797, 0.99502045, 0.99737811, 0.49238550],\
+[	-6.25688752, -0.00162576, 0.00099479, 7.25526176, 0.99502304, 0.99737945, 0.49238736],\
+[	-6.25694028, -0.00162492, 0.00099429, 7.25531536, 0.99502563, 0.99738079, 0.49238921],\
+[	-6.25699285, -0.00162408, 0.00099378, 7.25536877, 0.99502822, 0.99738213, 0.49239105],\
+[	-6.25704524, -0.00162325, 0.00099328, 7.25542199, 0.99503080, 0.99738347, 0.49239289],\
+[	-6.25709743, -0.00162241, 0.00099278, 7.25547502, 0.99503338, 0.99738481, 0.49239473],\
+[	-6.25714944, -0.00162158, 0.00099228, 7.25552786, 0.99503596, 0.99738615, 0.49239656],\
+[	-6.25720127, -0.00162074, 0.00099177, 7.25558052, 0.99503853, 0.99738748, 0.49239838],\
+[	-6.25725290, -0.00161991, 0.00099127, 7.25563299, 0.99504111, 0.99738881, 0.49240020],\
+[	-6.25730435, -0.00161908, 0.00099077, 7.25568527, 0.99504368, 0.99739015, 0.49240201],\
+[	-6.25735562, -0.00161825, 0.00099027, 7.25573737, 0.99504625, 0.99739148, 0.49240381],\
+[	-6.25740670, -0.00161742, 0.00098977, 7.25578929, 0.99504881, 0.99739281, 0.49240561],\
+[	-6.25745761, -0.00161659, 0.00098927, 7.25584102, 0.99505137, 0.99739414, 0.49240741],\
+[	-6.25750832, -0.00161576, 0.00098877, 7.25589256, 0.99505393, 0.99739547, 0.49240919],\
+[	-6.25755886, -0.00161493, 0.00098828, 7.25594393, 0.99505649, 0.99739679, 0.49241098],\
+[	-6.25760921, -0.00161411, 0.00098778, 7.25599511, 0.99505905, 0.99739812, 0.49241276],\
+[	-6.25765939, -0.00161328, 0.00098728, 7.25604611, 0.99506160, 0.99739944, 0.49241453],\
+[	-6.25770938, -0.00161245, 0.00098678, 7.25609693, 0.99506415, 0.99740076, 0.49241630],\
+[	-6.25775920, -0.00161163, 0.00098629, 7.25614757, 0.99506670, 0.99740209, 0.49241806],\
+[	-6.25780883, -0.00161080, 0.00098579, 7.25619803, 0.99506924, 0.99740341, 0.49241981],\
+[	-6.25785829, -0.00160998, 0.00098529, 7.25624831, 0.99507179, 0.99740472, 0.49242156],\
+[	-6.25790757, -0.00160916, 0.00098480, 7.25629841, 0.99507433, 0.99740604, 0.49242330],\
+[	-6.25795667, -0.00160834, 0.00098430, 7.25634834, 0.99507686, 0.99740736, 0.49242504],\
+[	-6.25800560, -0.00160752, 0.00098381, 7.25639808, 0.99507940, 0.99740867, 0.49242678],\
+[	-6.25805435, -0.00160670, 0.00098332, 7.25644766, 0.99508193, 0.99740999, 0.49242849],\
+[	-6.25810293, -0.00160588, 0.00098282, 7.25649705, 0.99508446, 0.99741130, 0.49243022],\
+[	-6.25815133, -0.00160506, 0.00098233, 7.25654627, 0.99508699, 0.99741261, 0.49243193],\
+[	-6.25819956, -0.00160424, 0.00098184, 7.25659532, 0.99508951, 0.99741392, 0.49243365],\
+[	-6.25824762, -0.00160342, 0.00098134, 7.25664419, 0.99509203, 0.99741523, 0.49243535],\
+[	-6.25829550, -0.00160261, 0.00098085, 7.25669289, 0.99509455, 0.99741654, 0.49243704],\
+[	-6.25834321, -0.00160179, 0.00098036, 7.25674142, 0.99509707, 0.99741784, 0.49243875],\
+[	-6.25839075, -0.00160098, 0.00097987, 7.25678978, 0.99509959, 0.99741915, 0.49244043],\
+[	-6.25843812, -0.00160017, 0.00097938, 7.25683796, 0.99510210, 0.99742045, 0.49244213],\
+[	-6.25848532, -0.00159935, 0.00097889, 7.25688597, 0.99510461, 0.99742176, 0.49244379],\
+[	-6.25853235, -0.00159854, 0.00097840, 7.25693381, 0.99510712, 0.99742306, 0.49244547],\
+[	-6.25857922, -0.00159773, 0.00097791, 7.25698149, 0.99510962, 0.99742436, 0.49244714],\
+[	-6.25862591, -0.00159692, 0.00097742, 7.25702899, 0.99511212, 0.99742566, 0.49244880],\
+[	-6.25867244, -0.00159611, 0.00097693, 7.25707633, 0.99511462, 0.99742696, 0.49245046],\
+[	-6.25871879, -0.00159530, 0.00097645, 7.25712350, 0.99511712, 0.99742825, 0.49245210],\
+[	-6.25876499, -0.00159449, 0.00097596, 7.25717050, 0.99511962, 0.99742955, 0.49245376],\
+[	-6.25881101, -0.00159368, 0.00097547, 7.25721733, 0.99512211, 0.99743084, 0.49245539],\
+[	-6.25885688, -0.00159288, 0.00097499, 7.25726400, 0.99512460, 0.99743214, 0.49245702],\
+[	-6.25890257, -0.00159207, 0.00097450, 7.25731050, 0.99512709, 0.99743343, 0.49245866],\
+[	-6.25894810, -0.00159127, 0.00097402, 7.25735684, 0.99512957, 0.99743472, 0.49246028],\
+[	-6.25899347, -0.00159046, 0.00097353, 7.25740301, 0.99513205, 0.99743601, 0.49246190],\
+[	-6.25903868, -0.00158966, 0.00097305, 7.25744902, 0.99513453, 0.99743730, 0.49246352],\
+[	-6.25908372, -0.00158886, 0.00097256, 7.25749487, 0.99513701, 0.99743858, 0.49246513],\
+[	-6.25912861, -0.00158805, 0.00097208, 7.25754055, 0.99513949, 0.99743987, 0.49246673],\
+[	-6.25917333, -0.00158725, 0.00097159, 7.25758607, 0.99514196, 0.99744115, 0.49246833],\
+[	-6.25921789, -0.00158645, 0.00097111, 7.25763144, 0.99514443, 0.99744244, 0.49246993],\
+[	-6.25926229, -0.00158565, 0.00097063, 7.25767664, 0.99514690, 0.99744372, 0.49247152],\
+[	-6.25930653, -0.00158485, 0.00097015, 7.25772168, 0.99514936, 0.99744500, 0.49247309],\
+[	-6.25935061, -0.00158406, 0.00096966, 7.25776656, 0.99515183, 0.99744628, 0.49247468],\
+[	-6.25939453, -0.00158326, 0.00096918, 7.25781128, 0.99515429, 0.99744756, 0.49247625],\
+[	-6.25943830, -0.00158246, 0.00096870, 7.25785584, 0.99515675, 0.99744884, 0.49247782],\
+[	-6.25948191, -0.00158167, 0.00096822, 7.25790024, 0.99515920, 0.99745011, 0.49247939],\
+[	-6.25952536, -0.00158087, 0.00096774, 7.25794449, 0.99516165, 0.99745139, 0.49248095],\
+[	-6.25956866, -0.00158008, 0.00096726, 7.25798858, 0.99516411, 0.99745266, 0.49248251],\
+[	-6.25961180, -0.00157928, 0.00096678, 7.25803252, 0.99516655, 0.99745393, 0.49248405],\
+[	-6.25965478, -0.00157849, 0.00096631, 7.25807629, 0.99516900, 0.99745521, 0.49248560],\
+[	-6.25969761, -0.00157770, 0.00096583, 7.25811992, 0.99517144, 0.99745648, 0.49248715],\
+[	-6.25974029, -0.00157691, 0.00096535, 7.25816339, 0.99517389, 0.99745774, 0.49248867],\
+[	-6.25978282, -0.00157612, 0.00096487, 7.25820670, 0.99517633, 0.99745901, 0.49249021],\
+[	-6.25982519, -0.00157533, 0.00096440, 7.25824986, 0.99517876, 0.99746028, 0.49249174],\
+[	-6.25986741, -0.00157454, 0.00096392, 7.25829287, 0.99518120, 0.99746154, 0.49249325],\
+[	-6.25990947, -0.00157375, 0.00096344, 7.25833572, 0.99518363, 0.99746281, 0.49249477],\
+[	-6.25995139, -0.00157296, 0.00096297, 7.25837843, 0.99518606, 0.99746407, 0.49249628],\
+[	-6.25999315, -0.00157217, 0.00096249, 7.25842098, 0.99518848, 0.99746533, 0.49249779],\
+[	-6.26003477, -0.00157139, 0.00096202, 7.25846338, 0.99519091, 0.99746659, 0.49249929],\
+[	-6.26007624, -0.00157060, 0.00096154, 7.25850563, 0.99519333, 0.99746785, 0.49250079],\
+[	-6.26011755, -0.00156982, 0.00096107, 7.25854773, 0.99519575, 0.99746911, 0.49250228],\
+[	-6.26015872, -0.00156903, 0.00096060, 7.25858969, 0.99519817, 0.99747037, 0.49250377],\
+[	-6.26019974, -0.00156825, 0.00096012, 7.25863149, 0.99520058, 0.99747163, 0.49250524],\
+[	-6.26024061, -0.00156747, 0.00095965, 7.25867315, 0.99520300, 0.99747288, 0.49250672],\
+[	-6.26028134, -0.00156669, 0.00095918, 7.25871465, 0.99520541, 0.99747414, 0.49250819],\
+[	-6.26032192, -0.00156591, 0.00095871, 7.25875601, 0.99520782, 0.99747539, 0.49250967],\
+[	-6.26036235, -0.00156513, 0.00095823, 7.25879723, 0.99521022, 0.99747664, 0.49251114],\
+[	-6.26040264, -0.00156435, 0.00095776, 7.25883830, 0.99521263, 0.99747789, 0.49251259],\
+[	-6.26044279, -0.00156357, 0.00095729, 7.25887922, 0.99521503, 0.99747914, 0.49251404],\
+[	-6.26048279, -0.00156279, 0.00095682, 7.25892000, 0.99521743, 0.99748039, 0.49251549],\
+[	-6.26052264, -0.00156201, 0.00095635, 7.25896063, 0.99521982, 0.99748163, 0.49251694],\
+[	-6.26056235, -0.00156124, 0.00095588, 7.25900112, 0.99522222, 0.99748288, 0.49251838],\
+[	-6.26060192, -0.00156046, 0.00095542, 7.25904146, 0.99522461, 0.99748412, 0.49251982],\
+[	-6.26064135, -0.00155969, 0.00095495, 7.25908167, 0.99522700, 0.99748537, 0.49252125],\
+[	-6.26068064, -0.00155891, 0.00095448, 7.25912173, 0.99522939, 0.99748661, 0.49252269],\
+[	-6.26071978, -0.00155814, 0.00095401, 7.25916164, 0.99523177, 0.99748785, 0.49252410],\
+[	-6.26075879, -0.00155737, 0.00095354, 7.25920142, 0.99523415, 0.99748909, 0.49252552],\
+[	-6.26079765, -0.00155659, 0.00095308, 7.25924106, 0.99523653, 0.99749033, 0.49252694],\
+[	-6.26083637, -0.00155582, 0.00095261, 7.25928055, 0.99523891, 0.99749157, 0.49252834],\
+[	-6.26087496, -0.00155505, 0.00095215, 7.25931991, 0.99524129, 0.99749280, 0.49252975],\
+[	-6.26091341, -0.00155428, 0.00095168, 7.25935912, 0.99524366, 0.99749404, 0.49253116],\
+[	-6.26095171, -0.00155351, 0.00095122, 7.25939820, 0.99524603, 0.99749527, 0.49253255],\
+[	-6.26098988, -0.00155274, 0.00095075, 7.25943714, 0.99524840, 0.99749651, 0.49253394],\
+[	-6.26102792, -0.00155198, 0.00095029, 7.25947594, 0.99525077, 0.99749774, 0.49253533],\
+[	-6.26106581, -0.00155121, 0.00094982, 7.25951460, 0.99525313, 0.99749897, 0.49253672],\
+[	-6.26110357, -0.00155044, 0.00094936, 7.25955313, 0.99525549, 0.99750020, 0.49253810],\
+[	-6.26114120, -0.00154968, 0.00094890, 7.25959152, 0.99525785, 0.99750143, 0.49253947],\
+[	-6.26117869, -0.00154891, 0.00094843, 7.25962977, 0.99526021, 0.99750265, 0.49254085],\
+[	-6.26121604, -0.00154815, 0.00094797, 7.25966789, 0.99526256, 0.99750388, 0.49254220],\
+[	-6.26125326, -0.00154739, 0.00094751, 7.25970587, 0.99526492, 0.99750510, 0.49254357],\
+[	-6.26129035, -0.00154662, 0.00094705, 7.25974372, 0.99526727, 0.99750633, 0.49254493],\
+[	-6.26132730, -0.00154586, 0.00094659, 7.25978144, 0.99526962, 0.99750755, 0.49254628],\
+[	-6.26136412, -0.00154510, 0.00094613, 7.25981902, 0.99527196, 0.99750877, 0.49254763],\
+[	-6.26140081, -0.00154434, 0.00094567, 7.25985647, 0.99527431, 0.99750999, 0.49254897],\
+[	-6.26143736, -0.00154358, 0.00094521, 7.25989378, 0.99527665, 0.99751121, 0.49255032],\
+[	-6.26147379, -0.00154282, 0.00094475, 7.25993097, 0.99527899, 0.99751243, 0.49255166],\
+[	-6.26151008, -0.00154206, 0.00094429, 7.25996802, 0.99528132, 0.99751365, 0.49255299],\
+[	-6.26154624, -0.00154131, 0.00094383, 7.26000494, 0.99528366, 0.99751486, 0.49255432],\
+[	-6.26158228, -0.00154055, 0.00094337, 7.26004173, 0.99528599, 0.99751608, 0.49255564],\
+[	-6.26161818, -0.00153979, 0.00094292, 7.26007839, 0.99528832, 0.99751729, 0.49255696],\
+[	-6.26165395, -0.00153904, 0.00094246, 7.26011492, 0.99529065, 0.99751851, 0.49255828],\
+[	-6.26168960, -0.00153828, 0.00094200, 7.26015132, 0.99529297, 0.99751972, 0.49255958],\
+[	-6.26172512, -0.00153753, 0.00094155, 7.26018759, 0.99529530, 0.99752093, 0.49256090],\
+[	-6.26176051, -0.00153677, 0.00094109, 7.26022373, 0.99529762, 0.99752214, 0.49256219],\
+[	-6.26179577, -0.00153602, 0.00094063, 7.26025975, 0.99529994, 0.99752334, 0.49256349],\
+[	-6.26183090, -0.00153527, 0.00094018, 7.26029563, 0.99530226, 0.99752455, 0.49256478],\
+[	-6.26186591, -0.00153452, 0.00093972, 7.26033139, 0.99530457, 0.99752576, 0.49256609],\
+[	-6.26190080, -0.00153377, 0.00093927, 7.26036703, 0.99530688, 0.99752696, 0.49256738],\
+[	-6.26193555, -0.00153302, 0.00093882, 7.26040254, 0.99530919, 0.99752817, 0.49256866],\
+[	-6.26197019, -0.00153227, 0.00093836, 7.26043792, 0.99531150, 0.99752937, 0.49256993],\
+[	-6.26200470, -0.00153152, 0.00093791, 7.26047317, 0.99531381, 0.99753057, 0.49257121],\
+[	-6.26203908, -0.00153077, 0.00093746, 7.26050831, 0.99531611, 0.99753177, 0.49257249],\
+[	-6.26207334, -0.00153003, 0.00093700, 7.26054331, 0.99531841, 0.99753297, 0.49257375],\
+[	-6.26210748, -0.00152928, 0.00093655, 7.26057820, 0.99532071, 0.99753417, 0.49257501],\
+[	-6.26214149, -0.00152853, 0.00093610, 7.26061296, 0.99532301, 0.99753537, 0.49257629],\
+[	-6.26217539, -0.00152779, 0.00093565, 7.26064760, 0.99532530, 0.99753656, 0.49257754],\
+[	-6.26220916, -0.00152705, 0.00093520, 7.26068211, 0.99532759, 0.99753776, 0.49257879],\
+[	-6.26224280, -0.00152630, 0.00093475, 7.26071650, 0.99532988, 0.99753895, 0.49258003],\
+[	-6.26227633, -0.00152556, 0.00093430, 7.26075077, 0.99533217, 0.99754014, 0.49258128],\
+[	-6.26230974, -0.00152482, 0.00093385, 7.26078492, 0.99533446, 0.99754133, 0.49258252],\
+[	-6.26234303, -0.00152408, 0.00093340, 7.26081895, 0.99533674, 0.99754253, 0.49258376],\
+[	-6.26237620, -0.00152333, 0.00093295, 7.26085286, 0.99533902, 0.99754372, 0.49258498],\
+[	-6.26240924, -0.00152259, 0.00093250, 7.26088665, 0.99534130, 0.99754490, 0.49258622],\
+[	-6.26244217, -0.00152186, 0.00093205, 7.26092032, 0.99534358, 0.99754609, 0.49258745],\
+[	-6.26247499, -0.00152112, 0.00093161, 7.26095387, 0.99534586, 0.99754728, 0.49258868],\
+[	-6.26250768, -0.00152038, 0.00093116, 7.26098730, 0.99534813, 0.99754846, 0.49258989],\
+[	-6.26254025, -0.00151964, 0.00093071, 7.26102061, 0.99535040, 0.99754965, 0.49259110],\
+[	-6.26257271, -0.00151890, 0.00093027, 7.26105381, 0.99535267, 0.99755083, 0.49259230],\
+[	-6.26260505, -0.00151817, 0.00092982, 7.26108689, 0.99535493, 0.99755201, 0.49259351],\
+[	-6.26263728, -0.00151743, 0.00092937, 7.26111985, 0.99535720, 0.99755319, 0.49259471],\
+[	-6.26266939, -0.00151670, 0.00092893, 7.26115269, 0.99535946, 0.99755437, 0.49259592],\
+[	-6.26270138, -0.00151596, 0.00092848, 7.26118542, 0.99536172, 0.99755555, 0.49259711],\
+[	-6.26273326, -0.00151523, 0.00092804, 7.26121803, 0.99536398, 0.99755673, 0.49259829],\
+[	-6.26276503, -0.00151450, 0.00092760, 7.26125053, 0.99536623, 0.99755790, 0.49259950],\
+[	-6.26279668, -0.00151377, 0.00092715, 7.26128291, 0.99536849, 0.99755908, 0.49260067],\
+[	-6.26282822, -0.00151304, 0.00092671, 7.26131518, 0.99537074, 0.99756025, 0.49260186],\
+[	-6.26285964, -0.00151231, 0.00092627, 7.26134733, 0.99537299, 0.99756143, 0.49260303],\
+[	-6.26289095, -0.00151158, 0.00092582, 7.26137937, 0.99537524, 0.99756260, 0.49260421],\
+[	-6.26292215, -0.00151085, 0.00092538, 7.26141130, 0.99537748, 0.99756377, 0.49260538],\
+[	-6.26295323, -0.00151012, 0.00092494, 7.26144311, 0.99537972, 0.99756494, 0.49260653],\
+[	-6.26298421, -0.00150939, 0.00092450, 7.26147481, 0.99538196, 0.99756611, 0.49260770],\
+[	-6.26301507, -0.00150866, 0.00092406, 7.26150640, 0.99538420, 0.99756728, 0.49260887],\
+[	-6.26304582, -0.00150794, 0.00092362, 7.26153788, 0.99538644, 0.99756844, 0.49261002],\
+[	-6.26307646, -0.00150721, 0.00092318, 7.26156925, 0.99538867, 0.99756961, 0.49261117],\
+[	-6.26310699, -0.00150649, 0.00092274, 7.26160050, 0.99539091, 0.99757078, 0.49261231],\
+[	-6.26313741, -0.00150576, 0.00092230, 7.26163165, 0.99539314, 0.99757194, 0.49261347],\
+[	-6.26316772, -0.00150504, 0.00092186, 7.26166269, 0.99539536, 0.99757310, 0.49261461],\
+[	-6.26319793, -0.00150431, 0.00092142, 7.26169361, 0.99539759, 0.99757426, 0.49261575],\
+[	-6.26322802, -0.00150359, 0.00092098, 7.26172443, 0.99539981, 0.99757542, 0.49261688],\
+[	-6.26325801, -0.00150287, 0.00092055, 7.26175513, 0.99540204, 0.99757658, 0.49261801],\
+[	-6.26328788, -0.00150215, 0.00092011, 7.26178573, 0.99540426, 0.99757774, 0.49261913],\
+[	-6.26331765, -0.00150143, 0.00091967, 7.26181623, 0.99540647, 0.99757890, 0.49262025],\
+[	-6.26334732, -0.00150071, 0.00091924, 7.26184661, 0.99540869, 0.99758006, 0.49262138],\
+[	-6.26337687, -0.00149999, 0.00091880, 7.26187688, 0.99541090, 0.99758121, 0.49262250],\
+[	-6.26340633, -0.00149927, 0.00091836, 7.26190705, 0.99541311, 0.99758236, 0.49262361],\
+[	-6.26343567, -0.00149855, 0.00091793, 7.26193712, 0.99541532, 0.99758352, 0.49262472],\
+[	-6.26346491, -0.00149784, 0.00091749, 7.26196707, 0.99541753, 0.99758467, 0.49262583],\
+[	-6.26349404, -0.00149712, 0.00091706, 7.26199692, 0.99541974, 0.99758582, 0.49262693],\
+[	-6.26352307, -0.00149640, 0.00091662, 7.26202667, 0.99542194, 0.99758697, 0.49262803],\
+[	-6.26355200, -0.00149569, 0.00091619, 7.26205631, 0.99542414, 0.99758812, 0.49262913],\
+[	-6.26358082, -0.00149498, 0.00091576, 7.26208585, 0.99542634, 0.99758927, 0.49263021],\
+[	-6.26360954, -0.00149426, 0.00091532, 7.26211528, 0.99542854, 0.99759042, 0.49263131],\
+[	-6.26363815, -0.00149355, 0.00091489, 7.26214460, 0.99543073, 0.99759156, 0.49263239],\
+[	-6.26366666, -0.00149284, 0.00091446, 7.26217383, 0.99543292, 0.99759271, 0.49263348],\
+[	-6.26369507, -0.00149212, 0.00091403, 7.26220295, 0.99543511, 0.99759385, 0.49263456],\
+[	-6.26372338, -0.00149141, 0.00091359, 7.26223197, 0.99543730, 0.99759499, 0.49263563],\
+[	-6.26375159, -0.00149070, 0.00091316, 7.26226088, 0.99543949, 0.99759613, 0.49263671],\
+[	-6.26377969, -0.00148999, 0.00091273, 7.26228970, 0.99544167, 0.99759728, 0.49263778],\
+[	-6.26380769, -0.00148928, 0.00091230, 7.26231841, 0.99544386, 0.99759841, 0.49263884],\
+[	-6.26383560, -0.00148857, 0.00091187, 7.26234702, 0.99544604, 0.99759955, 0.49263991],\
+[	-6.26386340, -0.00148787, 0.00091144, 7.26237553, 0.99544821, 0.99760069, 0.49264097],\
+[	-6.26389110, -0.00148716, 0.00091101, 7.26240394, 0.99545039, 0.99760183, 0.49264203],\
+[	-6.26391870, -0.00148645, 0.00091058, 7.26243225, 0.99545257, 0.99760296, 0.49264308],\
+[	-6.26394621, -0.00148575, 0.00091016, 7.26246046, 0.99545474, 0.99760410, 0.49264413],\
+[	-6.26397361, -0.00148504, 0.00090973, 7.26248857, 0.99545691, 0.99760523, 0.49264518],\
+[	-6.26400092, -0.00148434, 0.00090930, 7.26251658, 0.99545908, 0.99760636, 0.49264622],\
+[	-6.26402813, -0.00148363, 0.00090887, 7.26254449, 0.99546124, 0.99760750, 0.49264726],\
+[	-6.26405524, -0.00148293, 0.00090844, 7.26257231, 0.99546341, 0.99760863, 0.49264830],\
+[	-6.26408225, -0.00148223, 0.00090802, 7.26260002, 0.99546557, 0.99760976, 0.49264934],\
+[	-6.26410916, -0.00148152, 0.00090759, 7.26262764, 0.99546773, 0.99761088, 0.49265036],\
+[	-6.26413598, -0.00148082, 0.00090717, 7.26265516, 0.99546989, 0.99761201, 0.49265140],\
+[	-6.26416271, -0.00148012, 0.00090674, 7.26268258, 0.99547204, 0.99761314, 0.49265242],\
+[	-6.26418933, -0.00147942, 0.00090631, 7.26270991, 0.99547420, 0.99761426, 0.49265345],\
+[	-6.26421586, -0.00147872, 0.00090589, 7.26273714, 0.99547635, 0.99761539, 0.49265447],\
+[	-6.26424230, -0.00147802, 0.00090547, 7.26276428, 0.99547850, 0.99761651, 0.49265547],\
+[	-6.26426864, -0.00147733, 0.00090504, 7.26279132, 0.99548065, 0.99761763, 0.49265649],\
+[	-6.26429489, -0.00147663, 0.00090462, 7.26281826, 0.99548279, 0.99761875, 0.49265751],\
+[	-6.26432104, -0.00147593, 0.00090419, 7.26284511, 0.99548494, 0.99761987, 0.49265851],\
+[	-6.26434710, -0.00147523, 0.00090377, 7.26287186, 0.99548708, 0.99762099, 0.49265951],\
+[	-6.26437306, -0.00147454, 0.00090335, 7.26289852, 0.99548922, 0.99762211, 0.49266051],\
+[	-6.26439893, -0.00147384, 0.00090293, 7.26292509, 0.99549136, 0.99762323, 0.49266151],\
+[	-6.26442471, -0.00147315, 0.00090250, 7.26295156, 0.99549349, 0.99762435, 0.49266249],\
+[	-6.26445040, -0.00147246, 0.00090208, 7.26297794, 0.99549563, 0.99762546, 0.49266350],\
+[	-6.26447599, -0.00147176, 0.00090166, 7.26300423, 0.99549776, 0.99762658, 0.49266448],\
+[	-6.26450150, -0.00147107, 0.00090124, 7.26303043, 0.99549989, 0.99762769, 0.49266547],\
+[	-6.26452691, -0.00147038, 0.00090082, 7.26305653, 0.99550202, 0.99762880, 0.49266646],\
+[	-6.26455222, -0.00146969, 0.00090040, 7.26308254, 0.99550415, 0.99762991, 0.49266744],\
+[	-6.26457745, -0.00146900, 0.00089998, 7.26310846, 0.99550627, 0.99763102, 0.49266841],\
+[	-6.26460259, -0.00146831, 0.00089956, 7.26313428, 0.99550839, 0.99763213, 0.49266939],\
+[	-6.26462764, -0.00146762, 0.00089914, 7.26316002, 0.99551051, 0.99763324, 0.49267035],\
+[	-6.26465259, -0.00146693, 0.00089872, 7.26318567, 0.99551263, 0.99763435, 0.49267132],\
+[	-6.26467746, -0.00146624, 0.00089831, 7.26321122, 0.99551475, 0.99763545, 0.49267230],\
+[	-6.26470224, -0.00146555, 0.00089789, 7.26323669, 0.99551686, 0.99763656, 0.49267325],\
+[	-6.26472693, -0.00146486, 0.00089747, 7.26326207, 0.99551898, 0.99763766, 0.49267421],\
+[	-6.26475153, -0.00146418, 0.00089705, 7.26328735, 0.99552109, 0.99763877, 0.49267517],\
+[	-6.26477604, -0.00146349, 0.00089664, 7.26331255, 0.99552319, 0.99763987, 0.49267611],\
+[	-6.26480047, -0.00146281, 0.00089622, 7.26333766, 0.99552530, 0.99764097, 0.49267707],\
+[	-6.26482481, -0.00146212, 0.00089580, 7.26336268, 0.99552741, 0.99764207, 0.49267802],\
+[	-6.26484906, -0.00146144, 0.00089539, 7.26338762, 0.99552951, 0.99764317, 0.49267897],\
+[	-6.26487322, -0.00146076, 0.00089497, 7.26341246, 0.99553161, 0.99764427, 0.49267991],\
+[	-6.26489730, -0.00146007, 0.00089456, 7.26343722, 0.99553371, 0.99764537, 0.49268085],\
+[	-6.26492129, -0.00145939, 0.00089414, 7.26346189, 0.99553581, 0.99764646, 0.49268179],\
+[	-6.26494519, -0.00145871, 0.00089373, 7.26348648, 0.99553790, 0.99764756, 0.49268272],\
+[	-6.26496901, -0.00145803, 0.00089332, 7.26351098, 0.99553999, 0.99764865, 0.49268365],\
+[	-6.26499274, -0.00145735, 0.00089290, 7.26353539, 0.99554209, 0.99764975, 0.49268458],\
+[	-6.26501639, -0.00145667, 0.00089249, 7.26355972, 0.99554417, 0.99765084, 0.49268549],\
+[	-6.26503995, -0.00145599, 0.00089208, 7.26358396, 0.99554626, 0.99765193, 0.49268643],\
+[	-6.26506343, -0.00145531, 0.00089166, 7.26360811, 0.99554835, 0.99765302, 0.49268735],\
+[	-6.26508682, -0.00145463, 0.00089125, 7.26363219, 0.99555043, 0.99765411, 0.49268826],\
+[	-6.26511013, -0.00145396, 0.00089084, 7.26365617, 0.99555251, 0.99765520, 0.49268918],\
+[	-6.26513336, -0.00145328, 0.00089043, 7.26368008, 0.99555459, 0.99765629, 0.49269008],\
+[	-6.26515650, -0.00145261, 0.00089002, 7.26370389, 0.99555667, 0.99765738, 0.49269099],\
+[	-6.26517956, -0.00145193, 0.00088961, 7.26372763, 0.99555875, 0.99765846, 0.49269190],\
+[	-6.26520254, -0.00145126, 0.00088920, 7.26375128, 0.99556082, 0.99765955, 0.49269281],\
+[	-6.26522543, -0.00145058, 0.00088879, 7.26377485, 0.99556289, 0.99766063, 0.49269370],\
+[	-6.26524824, -0.00144991, 0.00088838, 7.26379834, 0.99556496, 0.99766171, 0.49269460],\
+[	-6.26527098, -0.00144924, 0.00088797, 7.26382174, 0.99556703, 0.99766280, 0.49269550],\
+[	-6.26529363, -0.00144856, 0.00088756, 7.26384506, 0.99556910, 0.99766388, 0.49269640],\
+[	-6.26531619, -0.00144789, 0.00088715, 7.26386830, 0.99557116, 0.99766496, 0.49269728],\
+[	-6.26533868, -0.00144722, 0.00088674, 7.26389146, 0.99557323, 0.99766604, 0.49269817],\
+[	-6.26536109, -0.00144655, 0.00088634, 7.26391454, 0.99557529, 0.99766711, 0.49269905],\
+[	-6.26538341, -0.00144588, 0.00088593, 7.26393753, 0.99557735, 0.99766819, 0.49269994],\
+[	-6.26540566, -0.00144521, 0.00088552, 7.26396045, 0.99557940, 0.99766927, 0.49270083],\
+[	-6.26542783, -0.00144454, 0.00088511, 7.26398329, 0.99558146, 0.99767034, 0.49270168],\
+[	-6.26544992, -0.00144387, 0.00088471, 7.26400604, 0.99558351, 0.99767142, 0.49270256],\
+[	-6.26547192, -0.00144321, 0.00088430, 7.26402872, 0.99558556, 0.99767249, 0.49270344],\
+[	-6.26549385, -0.00144254, 0.00088390, 7.26405131, 0.99558761, 0.99767356, 0.49270431],\
+[	-6.26551570, -0.00144187, 0.00088349, 7.26407383, 0.99558966, 0.99767463, 0.49270518],\
+[	-6.26553748, -0.00144121, 0.00088309, 7.26409627, 0.99559171, 0.99767571, 0.49270604],\
+[	-6.26555917, -0.00144054, 0.00088268, 7.26411863, 0.99559375, 0.99767678, 0.49270690],\
+[	-6.26558079, -0.00143988, 0.00088228, 7.26414091, 0.99559579, 0.99767784, 0.49270776],\
+[	-6.26560233, -0.00143922, 0.00088187, 7.26416311, 0.99559783, 0.99767891, 0.49270862],\
+[	-6.26562379, -0.00143855, 0.00088147, 7.26418524, 0.99559987, 0.99767998, 0.49270947],\
+[	-6.26564518, -0.00143789, 0.00088107, 7.26420729, 0.99560191, 0.99768104, 0.49271032],\
+[	-6.26566648, -0.00143723, 0.00088066, 7.26422926, 0.99560394, 0.99768211, 0.49271118],\
+[	-6.26568772, -0.00143657, 0.00088026, 7.26425115, 0.99560598, 0.99768317, 0.49271202],\
+[	-6.26570887, -0.00143590, 0.00087986, 7.26427297, 0.99560801, 0.99768424, 0.49271286],\
+[	-6.26572995, -0.00143524, 0.00087946, 7.26429471, 0.99561004, 0.99768530, 0.49271371],\
+[	-6.26575096, -0.00143458, 0.00087906, 7.26431637, 0.99561206, 0.99768636, 0.49271455],\
+[	-6.26577189, -0.00143393, 0.00087865, 7.26433796, 0.99561409, 0.99768742, 0.49271537],\
+[	-6.26579274, -0.00143327, 0.00087825, 7.26435948, 0.99561611, 0.99768848, 0.49271621],\
+[	-6.26581352, -0.00143261, 0.00087785, 7.26438092, 0.99561813, 0.99768954, 0.49271704],\
+[	-6.26583423, -0.00143195, 0.00087745, 7.26440228, 0.99562015, 0.99769059, 0.49271787],\
+[	-6.26585486, -0.00143130, 0.00087705, 7.26442357, 0.99562217, 0.99769165, 0.49271871],\
+[	-6.26587542, -0.00143064, 0.00087665, 7.26444478, 0.99562419, 0.99769271, 0.49271954],\
+[	-6.26589591, -0.00142998, 0.00087626, 7.26446592, 0.99562620, 0.99769376, 0.49272035],\
+[	-6.26591632, -0.00142933, 0.00087586, 7.26448699, 0.99562822, 0.99769482, 0.49272117],\
+[	-6.26593666, -0.00142867, 0.00087546, 7.26450798, 0.99563023, 0.99769587, 0.49272198],\
+[	-6.26595692, -0.00142802, 0.00087506, 7.26452890, 0.99563224, 0.99769692, 0.49272279],\
+[	-6.26597711, -0.00142737, 0.00087466, 7.26454975, 0.99563424, 0.99769797, 0.49272362],\
+[	-6.26599724, -0.00142671, 0.00087426, 7.26457052, 0.99563625, 0.99769902, 0.49272441],\
+[	-6.26601728, -0.00142606, 0.00087387, 7.26459122, 0.99563825, 0.99770007, 0.49272522],\
+[	-6.26603726, -0.00142541, 0.00087347, 7.26461185, 0.99564025, 0.99770112, 0.49272604],\
+[	-6.26605717, -0.00142476, 0.00087307, 7.26463241, 0.99564225, 0.99770217, 0.49272683],\
+[	-6.26607700, -0.00142411, 0.00087268, 7.26465289, 0.99564425, 0.99770321, 0.49272764],\
+[	-6.26609676, -0.00142346, 0.00087228, 7.26467331, 0.99564625, 0.99770426, 0.49272843],\
+[	-6.26611646, -0.00142281, 0.00087189, 7.26469365, 0.99564824, 0.99770530, 0.49272921],\
+[	-6.26613608, -0.00142216, 0.00087149, 7.26471392, 0.99565024, 0.99770635, 0.49273003],\
+[	-6.26615563, -0.00142151, 0.00087110, 7.26473412, 0.99565223, 0.99770739, 0.49273081],\
+[	-6.26617512, -0.00142087, 0.00087070, 7.26475425, 0.99565422, 0.99770843, 0.49273160],\
+[	-6.26619453, -0.00142022, 0.00087031, 7.26477431, 0.99565620, 0.99770947, 0.49273238],\
+[	-6.26621387, -0.00141957, 0.00086992, 7.26479430, 0.99565819, 0.99771051, 0.49273317],\
+[	-6.26623315, -0.00141893, 0.00086952, 7.26481422, 0.99566017, 0.99771155, 0.49273396],\
+[	-6.26625235, -0.00141828, 0.00086913, 7.26483407, 0.99566216, 0.99771259, 0.49273473],\
+[	-6.26627149, -0.00141764, 0.00086874, 7.26485385, 0.99566414, 0.99771362, 0.49273551],\
+[	-6.26629056, -0.00141699, 0.00086835, 7.26487356, 0.99566612, 0.99771466, 0.49273628],\
+[	-6.26630956, -0.00141635, 0.00086795, 7.26489321, 0.99566809, 0.99771570, 0.49273706],\
+[	-6.26632849, -0.00141571, 0.00086756, 7.26491278, 0.99567007, 0.99771673, 0.49273783],\
+[	-6.26634735, -0.00141506, 0.00086717, 7.26493229, 0.99567204, 0.99771776, 0.49273859],\
+[	-6.26636615, -0.00141442, 0.00086678, 7.26495173, 0.99567401, 0.99771880, 0.49273935],\
+[	-6.26638488, -0.00141378, 0.00086639, 7.26497110, 0.99567598, 0.99771983, 0.49274013],\
+[	-6.26640355, -0.00141314, 0.00086600, 7.26499041, 0.99567795, 0.99772086, 0.49274089],\
+[	-6.26642214, -0.00141250, 0.00086561, 7.26500964, 0.99567992, 0.99772189, 0.49274164],\
+[	-6.26644067, -0.00141186, 0.00086522, 7.26502881, 0.99568188, 0.99772292, 0.49274241],\
+[	-6.26645914, -0.00141122, 0.00086483, 7.26504792, 0.99568384, 0.99772395, 0.49274316],\
+[	-6.26647754, -0.00141058, 0.00086444, 7.26506695, 0.99568580, 0.99772497, 0.49274392],\
+[	-6.26649587, -0.00140995, 0.00086405, 7.26508592, 0.99568776, 0.99772600, 0.49274466],\
+[	-6.26651414, -0.00140931, 0.00086366, 7.26510483, 0.99568972, 0.99772703, 0.49274542],\
+[	-6.26653234, -0.00140867, 0.00086328, 7.26512367, 0.99569168, 0.99772805, 0.49274618],\
+[	-6.26655048, -0.00140804, 0.00086289, 7.26514244, 0.99569363, 0.99772908, 0.49274690],\
+[	-6.26656855, -0.00140740, 0.00086250, 7.26516115, 0.99569558, 0.99773010, 0.49274765],\
+[	-6.26658656, -0.00140677, 0.00086211, 7.26517979, 0.99569753, 0.99773112, 0.49274839],\
+[	-6.26660450, -0.00140613, 0.00086173, 7.26519837, 0.99569948, 0.99773214, 0.49274912],\
+[	-6.26662238, -0.00140550, 0.00086134, 7.26521688, 0.99570143, 0.99773316, 0.49274986],\
+[	-6.26664020, -0.00140486, 0.00086096, 7.26523533, 0.99570337, 0.99773418, 0.49275059],\
+[	-6.26665795, -0.00140423, 0.00086057, 7.26525372, 0.99570532, 0.99773520, 0.49275132],\
+[	-6.26667564, -0.00140360, 0.00086018, 7.26527204, 0.99570726, 0.99773622, 0.49275206],\
+[	-6.26669326, -0.00140297, 0.00085980, 7.26529030, 0.99570920, 0.99773723, 0.49275276],\
+[	-6.26671083, -0.00140234, 0.00085942, 7.26530849, 0.99571114, 0.99773825, 0.49275350],\
+[	-6.26672833, -0.00140171, 0.00085903, 7.26532662, 0.99571307, 0.99773926, 0.49275423],\
+[	-6.26674577, -0.00140108, 0.00085865, 7.26534469, 0.99571501, 0.99774028, 0.49275495],\
+[	-6.26676314, -0.00140045, 0.00085826, 7.26536270, 0.99571694, 0.99774129, 0.49275567],\
+[	-6.26678046, -0.00139982, 0.00085788, 7.26538064, 0.99571887, 0.99774230, 0.49275639],\
+[	-6.26679771, -0.00139919, 0.00085750, 7.26539852, 0.99572080, 0.99774331, 0.49275711],\
+[	-6.26681490, -0.00139856, 0.00085711, 7.26541634, 0.99572273, 0.99774433, 0.49275782],\
+[	-6.26683203, -0.00139793, 0.00085673, 7.26543410, 0.99572466, 0.99774533, 0.49275852],\
+[	-6.26684910, -0.00139731, 0.00085635, 7.26545179, 0.99572658, 0.99774634, 0.49275924],\
+[	-6.26686611, -0.00139668, 0.00085597, 7.26546943, 0.99572851, 0.99774735, 0.49275995],\
+[	-6.26688306, -0.00139605, 0.00085559, 7.26548700, 0.99573043, 0.99774836, 0.49276065],\
+[	-6.26689994, -0.00139543, 0.00085521, 7.26550451, 0.99573235, 0.99774936, 0.49276134],\
+[	-6.26691677, -0.00139481, 0.00085482, 7.26552196, 0.99573426, 0.99775037, 0.49276204],\
+[	-6.26693354, -0.00139418, 0.00085444, 7.26553936, 0.99573618, 0.99775137, 0.49276274],\
+[	-6.26695024, -0.00139356, 0.00085406, 7.26555669, 0.99573809, 0.99775238, 0.49276344],\
+[	-6.26696689, -0.00139293, 0.00085368, 7.26557396, 0.99574001, 0.99775338, 0.49276413],\
+[	-6.26698348, -0.00139231, 0.00085331, 7.26559117, 0.99574192, 0.99775438, 0.49276484],\
+[	-6.26700001, -0.00139169, 0.00085293, 7.26560832, 0.99574383, 0.99775538, 0.49276553],\
+[	-6.26701648, -0.00139107, 0.00085255, 7.26562541, 0.99574574, 0.99775638, 0.49276621],\
+[	-6.26703289, -0.00139045, 0.00085217, 7.26564245, 0.99574764, 0.99775738, 0.49276691],\
+[	-6.26704925, -0.00138983, 0.00085179, 7.26565942, 0.99574955, 0.99775838, 0.49276759],\
+[	-6.26706554, -0.00138921, 0.00085141, 7.26567633, 0.99575145, 0.99775938, 0.49276826],\
+[	-6.26708178, -0.00138859, 0.00085104, 7.26569319, 0.99575335, 0.99776038, 0.49276895],\
+[	-6.26709796, -0.00138797, 0.00085066, 7.26570999, 0.99575525, 0.99776137, 0.49276963],\
+[	-6.26711408, -0.00138735, 0.00085028, 7.26572673, 0.99575715, 0.99776237, 0.49277030],\
+[	-6.26713015, -0.00138674, 0.00084990, 7.26574341, 0.99575904, 0.99776336, 0.49277097],\
+[	-6.26714616, -0.00138612, 0.00084953, 7.26576004, 0.99576094, 0.99776435, 0.49277165],\
+[	-6.26716211, -0.00138550, 0.00084915, 7.26577661, 0.99576283, 0.99776535, 0.49277232],\
+[	-6.26717800, -0.00138489, 0.00084878, 7.26579312, 0.99576472, 0.99776634, 0.49277298],\
+[	-6.26719384, -0.00138427, 0.00084840, 7.26580957, 0.99576661, 0.99776733, 0.49277366],\
+[	-6.26720962, -0.00138366, 0.00084803, 7.26582597, 0.99576850, 0.99776832, 0.49277432],\
+[	-6.26722535, -0.00138304, 0.00084765, 7.26584231, 0.99577038, 0.99776931, 0.49277499],\
+[	-6.26724102, -0.00138243, 0.00084728, 7.26585859, 0.99577227, 0.99777029, 0.49277565],\
+[	-6.26725663, -0.00138181, 0.00084690, 7.26587482, 0.99577415, 0.99777128, 0.49277630],\
+[	-6.26727219, -0.00138120, 0.00084653, 7.26589099, 0.99577603, 0.99777227, 0.49277698],\
+[	-6.26728769, -0.00138059, 0.00084616, 7.26590710, 0.99577791, 0.99777325, 0.49277763],\
+[	-6.26730314, -0.00137998, 0.00084578, 7.26592316, 0.99577979, 0.99777424, 0.49277828],\
+[	-6.26731854, -0.00137937, 0.00084541, 7.26593917, 0.99578166, 0.99777522, 0.49277893],\
+[	-6.26733388, -0.00137876, 0.00084504, 7.26595512, 0.99578354, 0.99777621, 0.49277959],\
+[	-6.26734916, -0.00137815, 0.00084467, 7.26597101, 0.99578541, 0.99777719, 0.49278024],\
+[	-6.26736439, -0.00137754, 0.00084429, 7.26598685, 0.99578728, 0.99777817, 0.49278088],\
+[	-6.26737957, -0.00137693, 0.00084392, 7.26600264, 0.99578915, 0.99777915, 0.49278153],\
+[	-6.26739469, -0.00137632, 0.00084355, 7.26601837, 0.99579102, 0.99778013, 0.49278219],\
+[	-6.26740976, -0.00137571, 0.00084318, 7.26603405, 0.99579289, 0.99778111, 0.49278281],\
+[	-6.26742477, -0.00137510, 0.00084281, 7.26604967, 0.99579475, 0.99778209, 0.49278347],\
+[	-6.26743974, -0.00137450, 0.00084244, 7.26606524, 0.99579661, 0.99778306, 0.49278410],\
+[	-6.26745464, -0.00137389, 0.00084207, 7.26608075, 0.99579847, 0.99778404, 0.49278472],\
+[	-6.26746950, -0.00137328, 0.00084170, 7.26609622, 0.99580033, 0.99778502, 0.49278536],\
+[	-6.26748430, -0.00137268, 0.00084133, 7.26611162, 0.99580219, 0.99778599, 0.49278600],\
+[	-6.26749906, -0.00137207, 0.00084096, 7.26612698, 0.99580405, 0.99778696, 0.49278663],\
+[	-6.26751375, -0.00137147, 0.00084059, 7.26614228, 0.99580590, 0.99778794, 0.49278724],\
+[	-6.26752840, -0.00137087, 0.00084022, 7.26615753, 0.99580776, 0.99778891, 0.49278789],\
+[	-6.26754300, -0.00137026, 0.00083986, 7.26617273, 0.99580961, 0.99778988, 0.49278852],\
+[	-6.26755754, -0.00136966, 0.00083949, 7.26618788, 0.99581146, 0.99779085, 0.49278914],\
+[	-6.26757203, -0.00136906, 0.00083912, 7.26620297, 0.99581331, 0.99779182, 0.49278975],\
+[	-6.26758647, -0.00136846, 0.00083875, 7.26621801, 0.99581515, 0.99779279, 0.49279037],\
+[	-6.26760086, -0.00136786, 0.00083839, 7.26623300, 0.99581700, 0.99779376, 0.49279099],\
+[	-6.26761520, -0.00136725, 0.00083802, 7.26624794, 0.99581884, 0.99779472, 0.49279161],\
+[	-6.26762949, -0.00136665, 0.00083765, 7.26626283, 0.99582068, 0.99779569, 0.49279223],\
+[	-6.26764372, -0.00136605, 0.00083729, 7.26627767, 0.99582252, 0.99779666, 0.49279284],\
+[	-6.26765791, -0.00136546, 0.00083692, 7.26629245, 0.99582436, 0.99779762, 0.49279345],\
+[	-6.26767205, -0.00136486, 0.00083656, 7.26630719, 0.99582620, 0.99779859, 0.49279407],\
+[	-6.26768613, -0.00136426, 0.00083619, 7.26632187, 0.99582804, 0.99779955, 0.49279468],\
+[	-6.26770017, -0.00136366, 0.00083583, 7.26633651, 0.99582987, 0.99780051, 0.49279528],\
+[	-6.26771416, -0.00136306, 0.00083546, 7.26635109, 0.99583170, 0.99780147, 0.49279588],\
+[	-6.26772809, -0.00136247, 0.00083510, 7.26636562, 0.99583353, 0.99780243, 0.49279649],\
+[	-6.26774198, -0.00136187, 0.00083474, 7.26638011, 0.99583536, 0.99780339, 0.49279710],\
+[	-6.26775582, -0.00136128, 0.00083437, 7.26639454, 0.99583719, 0.99780435, 0.49279770],\
+[	-6.26776961, -0.00136068, 0.00083401, 7.26640893, 0.99583902, 0.99780531, 0.49279829],\
+[	-6.26778335, -0.00136009, 0.00083365, 7.26642326, 0.99584084, 0.99780627, 0.49279888],\
+[	-6.26779704, -0.00135949, 0.00083328, 7.26643755, 0.99584266, 0.99780722, 0.49279946],\
+[	-6.26781069, -0.00135890, 0.00083292, 7.26645179, 0.99584449, 0.99780818, 0.49280008],\
+[	-6.26782428, -0.00135831, 0.00083256, 7.26646598, 0.99584631, 0.99780913, 0.49280067],\
+[	-6.26783783, -0.00135771, 0.00083220, 7.26648012, 0.99584812, 0.99781009, 0.49280125],\
+[	-6.26785133, -0.00135712, 0.00083184, 7.26649421, 0.99584994, 0.99781104, 0.49280185],\
+[	-6.26786479, -0.00135653, 0.00083148, 7.26650826, 0.99585175, 0.99781199, 0.49280244],\
+[	-6.26787819, -0.00135594, 0.00083111, 7.26652225, 0.99585357, 0.99781295, 0.49280301],\
+[	-6.26789155, -0.00135535, 0.00083075, 7.26653620, 0.99585538, 0.99781390, 0.49280360],\
+[	-6.26790486, -0.00135476, 0.00083039, 7.26655010, 0.99585719, 0.99781485, 0.49280419],\
+[	-6.26791812, -0.00135417, 0.00083003, 7.26656395, 0.99585900, 0.99781580, 0.49280476],\
+[	-6.26793134, -0.00135358, 0.00082967, 7.26657776, 0.99586081, 0.99781675, 0.49280534],\
+[	-6.26794451, -0.00135299, 0.00082931, 7.26659152, 0.99586261, 0.99781769, 0.49280594],\
+[	-6.26795764, -0.00135240, 0.00082896, 7.26660523, 0.99586442, 0.99781864, 0.49280650],\
+[	-6.26797071, -0.00135182, 0.00082860, 7.26661890, 0.99586622, 0.99781959, 0.49280708],\
+[	-6.26798374, -0.00135123, 0.00082824, 7.26663252, 0.99586802, 0.99782053, 0.49280764],\
+[	-6.26799673, -0.00135064, 0.00082788, 7.26664609, 0.99586982, 0.99782148, 0.49280822],\
+[	-6.26800967, -0.00135006, 0.00082752, 7.26665961, 0.99587162, 0.99782242, 0.49280878],\
+[	-6.26802256, -0.00134947, 0.00082717, 7.26667309, 0.99587341, 0.99782336, 0.49280935],\
+[	-6.26803541, -0.00134889, 0.00082681, 7.26668653, 0.99587521, 0.99782431, 0.49280992],\
+[	-6.26804822, -0.00134830, 0.00082645, 7.26669991, 0.99587700, 0.99782525, 0.49281048],\
+[	-6.26806098, -0.00134772, 0.00082609, 7.26671326, 0.99587879, 0.99782619, 0.49281107],\
+[	-6.26807369, -0.00134713, 0.00082574, 7.26672655, 0.99588058, 0.99782713, 0.49281162],\
+[	-6.26808636, -0.00134655, 0.00082538, 7.26673981, 0.99588237, 0.99782807, 0.49281218],\
+[	-6.26809898, -0.00134597, 0.00082503, 7.26675301, 0.99588416, 0.99782900, 0.49281274],\
+[	-6.26811156, -0.00134539, 0.00082467, 7.26676617, 0.99588595, 0.99782994, 0.49281329],\
+[	-6.26812410, -0.00134481, 0.00082432, 7.26677929, 0.99588773, 0.99783088, 0.49281384],\
+[	-6.26813659, -0.00134422, 0.00082396, 7.26679236, 0.99588951, 0.99783181, 0.49281439],\
+[	-6.26814904, -0.00134364, 0.00082361, 7.26680539, 0.99589129, 0.99783275, 0.49281496],\
+[	-6.26816144, -0.00134306, 0.00082325, 7.26681838, 0.99589307, 0.99783368, 0.49281552],\
+[	-6.26817380, -0.00134248, 0.00082290, 7.26683132, 0.99589485, 0.99783462, 0.49281605],\
+[	-6.26818612, -0.00134191, 0.00082255, 7.26684421, 0.99589663, 0.99783555, 0.49281661],\
+[	-6.26819839, -0.00134133, 0.00082219, 7.26685706, 0.99589840, 0.99783648, 0.49281716],\
+[	-6.26821062, -0.00134075, 0.00082184, 7.26686987, 0.99590018, 0.99783741, 0.49281769],\
+[	-6.26822281, -0.00134017, 0.00082149, 7.26688264, 0.99590195, 0.99783834, 0.49281824],\
+[	-6.26823495, -0.00133959, 0.00082113, 7.26689536, 0.99590372, 0.99783927, 0.49281878],\
+[	-6.26824705, -0.00133902, 0.00082078, 7.26690804, 0.99590549, 0.99784020, 0.49281933],\
+[	-6.26825911, -0.00133844, 0.00082043, 7.26692067, 0.99590725, 0.99784113, 0.49281987],\
+[	-6.26827113, -0.00133787, 0.00082008, 7.26693326, 0.99590902, 0.99784206, 0.49282040],\
+[	-6.26828310, -0.00133729, 0.00081973, 7.26694581, 0.99591078, 0.99784298, 0.49282094],\
+[	-6.26829504, -0.00133672, 0.00081938, 7.26695832, 0.99591255, 0.99784391, 0.49282147],\
+[	-6.26830693, -0.00133614, 0.00081902, 7.26697079, 0.99591431, 0.99784483, 0.49282201],\
+[	-6.26831878, -0.00133557, 0.00081867, 7.26698321, 0.99591607, 0.99784576, 0.49282254],\
+[	-6.26833058, -0.00133499, 0.00081832, 7.26699559, 0.99591783, 0.99784668, 0.49282308],\
+[	-6.26834235, -0.00133442, 0.00081797, 7.26700793, 0.99591958, 0.99784760, 0.49282360],\
+[	-6.26835407, -0.00133385, 0.00081762, 7.26702023, 0.99592134, 0.99784853, 0.49282414],\
+[	-6.26836576, -0.00133328, 0.00081728, 7.26703248, 0.99592309, 0.99784945, 0.49282465],\
+[	-6.26837740, -0.00133271, 0.00081693, 7.26704469, 0.99592485, 0.99785037, 0.49282520],\
+[	-6.26838900, -0.00133214, 0.00081658, 7.26705687, 0.99592660, 0.99785129, 0.49282572],\
+[	-6.26840056, -0.00133157, 0.00081623, 7.26706900, 0.99592835, 0.99785221, 0.49282624],\
+[	-6.26841209, -0.00133100, 0.00081588, 7.26708109, 0.99593009, 0.99785312, 0.49282676],\
+[	-6.26842357, -0.00133043, 0.00081553, 7.26709314, 0.99593184, 0.99785404, 0.49282728],\
+[	-6.26843501, -0.00132986, 0.00081519, 7.26710515, 0.99593359, 0.99785496, 0.49282780],\
+[	-6.26844641, -0.00132929, 0.00081484, 7.26711712, 0.99593533, 0.99785587, 0.49282829],\
+[	-6.26845777, -0.00132872, 0.00081449, 7.26712905, 0.99593707, 0.99785679, 0.49282883],\
+[	-6.26846909, -0.00132815, 0.00081414, 7.26714093, 0.99593881, 0.99785770, 0.49282934],\
+[	-6.26848037, -0.00132759, 0.00081380, 7.26715278, 0.99594055, 0.99785862, 0.49282986],\
+[	-6.26849161, -0.00132702, 0.00081345, 7.26716459, 0.99594229, 0.99785953, 0.49283037],\
+[	-6.26850281, -0.00132645, 0.00081311, 7.26717636, 0.99594402, 0.99786044, 0.49283087],\
+[	-6.26851397, -0.00132589, 0.00081276, 7.26718809, 0.99594576, 0.99786135, 0.49283138],\
+[	-6.26852510, -0.00132532, 0.00081242, 7.26719977, 0.99594749, 0.99786226, 0.49283189],\
+[	-6.26853618, -0.00132476, 0.00081207, 7.26721142, 0.99594922, 0.99786317, 0.49283239],\
+[	-6.26854723, -0.00132419, 0.00081173, 7.26722303, 0.99595095, 0.99786408, 0.49283291],\
+[	-6.26855824, -0.00132363, 0.00081138, 7.26723461, 0.99595268, 0.99786499, 0.49283341],\
+[	-6.26856921, -0.00132307, 0.00081104, 7.26724614, 0.99595441, 0.99786590, 0.49283391],\
+[	-6.26858014, -0.00132251, 0.00081069, 7.26725763, 0.99595614, 0.99786680, 0.49283441],\
+[	-6.26859103, -0.00132194, 0.00081035, 7.26726909, 0.99595786, 0.99786771, 0.49283490],\
+[	-6.26860188, -0.00132138, 0.00081001, 7.26728050, 0.99595958, 0.99786861, 0.49283543],\
+[	-6.26861270, -0.00132082, 0.00080966, 7.26729188, 0.99596131, 0.99786952, 0.49283590],\
+[	-6.26862348, -0.00132026, 0.00080932, 7.26730322, 0.99596303, 0.99787042, 0.49283641],\
+[	-6.26863422, -0.00131970, 0.00080898, 7.26731452, 0.99596474, 0.99787132, 0.49283690],\
+[	-6.26864493, -0.00131914, 0.00080864, 7.26732579, 0.99596646, 0.99787223, 0.49283740],\
+[	-6.26865559, -0.00131858, 0.00080829, 7.26733701, 0.99596818, 0.99787313, 0.49283789],\
+[	-6.26866622, -0.00131802, 0.00080795, 7.26734820, 0.99596989, 0.99787403, 0.49283838],\
+[	-6.26867681, -0.00131746, 0.00080761, 7.26735935, 0.99597160, 0.99787493, 0.49283886],\
+[	-6.26868737, -0.00131690, 0.00080727, 7.26737047, 0.99597332, 0.99787583, 0.49283935],\
+[	-6.26869789, -0.00131635, 0.00080693, 7.26738154, 0.99597503, 0.99787673, 0.49283983],\
+[	-6.26870837, -0.00131579, 0.00080659, 7.26739258, 0.99597673, 0.99787762, 0.49284032],\
+[	-6.26871882, -0.00131523, 0.00080625, 7.26740358, 0.99597844, 0.99787852, 0.49284083],\
+[	-6.26872923, -0.00131468, 0.00080591, 7.26741455, 0.99598015, 0.99787942, 0.49284129],\
+[	-6.26873960, -0.00131412, 0.00080557, 7.26742548, 0.99598185, 0.99788031, 0.49284178],\
+[	-6.26874993, -0.00131357, 0.00080523, 7.26743637, 0.99598355, 0.99788121, 0.49284226],\
+[	-6.26876024, -0.00131301, 0.00080489, 7.26744723, 0.99598526, 0.99788210, 0.49284273],\
+[	-6.26877050, -0.00131246, 0.00080455, 7.26745804, 0.99598696, 0.99788299, 0.49284320],\
+[	-6.26878073, -0.00131190, 0.00080421, 7.26746883, 0.99598865, 0.99788389, 0.49284369],\
+[	-6.26879092, -0.00131135, 0.00080387, 7.26747958, 0.99599035, 0.99788478, 0.49284417],\
+[	-6.26880108, -0.00131080, 0.00080354, 7.26749029, 0.99599205, 0.99788567, 0.49284465],\
+[	-6.26881120, -0.00131024, 0.00080320, 7.26750096, 0.99599374, 0.99788656, 0.49284510],\
+[	-6.26882129, -0.00130969, 0.00080286, 7.26751160, 0.99599543, 0.99788745, 0.49284559],\
+[	-6.26883135, -0.00130914, 0.00080252, 7.26752221, 0.99599713, 0.99788834, 0.49284606],\
+[	-6.26884136, -0.00130859, 0.00080219, 7.26753278, 0.99599882, 0.99788923, 0.49284653],\
+[	-6.26885135, -0.00130804, 0.00080185, 7.26754331, 0.99600050, 0.99789011, 0.49284699],\
+[	-6.26886129, -0.00130749, 0.00080151, 7.26755381, 0.99600219, 0.99789100, 0.49284746],\
+[	-6.26887121, -0.00130694, 0.00080118, 7.26756427, 0.99600388, 0.99789189, 0.49284793],\
+[	-6.26888109, -0.00130639, 0.00080084, 7.26757470, 0.99600556, 0.99789277, 0.49284838],\
+[	-6.26889093, -0.00130584, 0.00080051, 7.26758509, 0.99600724, 0.99789365, 0.49284885],\
+[	-6.26890074, -0.00130529, 0.00080017, 7.26759545, 0.99600893, 0.99789454, 0.49284932],\
+[	-6.26891052, -0.00130474, 0.00079984, 7.26760578, 0.99601061, 0.99789542, 0.49284977],\
+[	-6.26892026, -0.00130420, 0.00079950, 7.26761607, 0.99601228, 0.99789630, 0.49285024],\
+[	-6.26892997, -0.00130365, 0.00079917, 7.26762633, 0.99601396, 0.99789719, 0.49285069],\
+[	-6.26893965, -0.00130310, 0.00079883, 7.26763655, 0.99601564, 0.99789807, 0.49285114],\
+[	-6.26894929, -0.00130256, 0.00079850, 7.26764674, 0.99601731, 0.99789895, 0.49285162],\
+[	-6.26895890, -0.00130201, 0.00079816, 7.26765689, 0.99601899, 0.99789983, 0.49285206],\
+[	-6.26896848, -0.00130146, 0.00079783, 7.26766701, 0.99602066, 0.99790070, 0.49285251],\
+[	-6.26897802, -0.00130092, 0.00079750, 7.26767710, 0.99602233, 0.99790158, 0.49285297],\
+[	-6.26898753, -0.00130038, 0.00079717, 7.26768715, 0.99602400, 0.99790246, 0.49285344],\
+[	-6.26899700, -0.00129983, 0.00079683, 7.26769717, 0.99602566, 0.99790334, 0.49285388],\
+[	-6.26900645, -0.00129929, 0.00079650, 7.26770716, 0.99602733, 0.99790421, 0.49285432],\
+[	-6.26901586, -0.00129875, 0.00079617, 7.26771711, 0.99602900, 0.99790509, 0.49285477],\
+[	-6.26902524, -0.00129820, 0.00079584, 7.26772703, 0.99603066, 0.99790596, 0.49285523],\
+[	-6.26903458, -0.00129766, 0.00079550, 7.26773692, 0.99603232, 0.99790683, 0.49285566],\
+[	-6.26904390, -0.00129712, 0.00079517, 7.26774678, 0.99603398, 0.99790771, 0.49285611],\
+[	-6.26905318, -0.00129658, 0.00079484, 7.26775660, 0.99603564, 0.99790858, 0.49285655],\
+[	-6.26906243, -0.00129604, 0.00079451, 7.26776639, 0.99603730, 0.99790945, 0.49285701],\
+[	-6.26907164, -0.00129550, 0.00079418, 7.26777615, 0.99603896, 0.99791032, 0.49285743],\
+[	-6.26908083, -0.00129496, 0.00079385, 7.26778587, 0.99604061, 0.99791119, 0.49285787],\
+[	-6.26908998, -0.00129442, 0.00079352, 7.26779557, 0.99604227, 0.99791206, 0.49285833],\
+[	-6.26909911, -0.00129388, 0.00079319, 7.26780523, 0.99604392, 0.99791293, 0.49285876],\
+[	-6.26910820, -0.00129334, 0.00079286, 7.26781486, 0.99604557, 0.99791380, 0.49285921],\
+[	-6.26911726, -0.00129280, 0.00079253, 7.26782446, 0.99604722, 0.99791467, 0.49285963],\
+[	-6.26912629, -0.00129226, 0.00079220, 7.26783402, 0.99604887, 0.99791553, 0.49286007],\
+[	-6.26913528, -0.00129173, 0.00079188, 7.26784356, 0.99605051, 0.99791640, 0.49286049],\
+[	-6.26914425, -0.00129119, 0.00079155, 7.26785306, 0.99605216, 0.99791726, 0.49286093],\
+[	-6.26915318, -0.00129065, 0.00079122, 7.26786253, 0.99605380, 0.99791813, 0.49286138],\
+[	-6.26916209, -0.00129012, 0.00079089, 7.26787197, 0.99605545, 0.99791899, 0.49286178],\
+[	-6.26917096, -0.00128958, 0.00079056, 7.26788138, 0.99605709, 0.99791985, 0.49286223],\
+[	-6.26917981, -0.00128905, 0.00079024, 7.26789076, 0.99605873, 0.99792072, 0.49286266],\
+[	-6.26918862, -0.00128851, 0.00078991, 7.26790011, 0.99606037, 0.99792158, 0.49286308],\
+[	-6.26919740, -0.00128798, 0.00078958, 7.26790942, 0.99606201, 0.99792244, 0.49286350],\
+[	-6.26920615, -0.00128744, 0.00078926, 7.26791871, 0.99606364, 0.99792330, 0.49286392],\
+[	-6.26921488, -0.00128691, 0.00078893, 7.26792797, 0.99606528, 0.99792416, 0.49286436],\
+[	-6.26922357, -0.00128638, 0.00078860, 7.26793719, 0.99606691, 0.99792502, 0.49286478],\
+[	-6.26923223, -0.00128585, 0.00078828, 7.26794639, 0.99606854, 0.99792588, 0.49286521],\
+[	-6.26924086, -0.00128531, 0.00078795, 7.26795555, 0.99607017, 0.99792673, 0.49286564],\
+[	-6.26924947, -0.00128478, 0.00078763, 7.26796468, 0.99607180, 0.99792759, 0.49286605],\
+[	-6.26925804, -0.00128425, 0.00078730, 7.26797379, 0.99607343, 0.99792845, 0.49286646],\
+[	-6.26926658, -0.00128372, 0.00078698, 7.26798286, 0.99607506, 0.99792930, 0.49286689],\
+[	-6.26927510, -0.00128319, 0.00078665, 7.26799191, 0.99607668, 0.99793016, 0.49286730],\
+[	-6.26928358, -0.00128266, 0.00078633, 7.26800092, 0.99607831, 0.99793101, 0.49286770],\
+[	-6.26929204, -0.00128213, 0.00078601, 7.26800991, 0.99607993, 0.99793186, 0.49286812],\
+[	-6.26930047, -0.00128160, 0.00078568, 7.26801887, 0.99608155, 0.99793272, 0.49286854],\
+[	-6.26930887, -0.00128107, 0.00078536, 7.26802779, 0.99608317, 0.99793357, 0.49286895],\
+[	-6.26931724, -0.00128054, 0.00078504, 7.26803669, 0.99608479, 0.99793442, 0.49286937],\
+[	-6.26932558, -0.00128002, 0.00078471, 7.26804556, 0.99608641, 0.99793527, 0.49286977],\
+[	-6.26933389, -0.00127949, 0.00078439, 7.26805440, 0.99608802, 0.99793612, 0.49287019],\
+[	-6.26934217, -0.00127896, 0.00078407, 7.26806321, 0.99608964, 0.99793697, 0.49287058],\
+[	-6.26935043, -0.00127844, 0.00078375, 7.26807199, 0.99609125, 0.99793782, 0.49287100],\
+[	-6.26935866, -0.00127791, 0.00078342, 7.26808075, 0.99609287, 0.99793867, 0.49287142],\
+[	-6.26936686, -0.00127738, 0.00078310, 7.26808947, 0.99609448, 0.99793951, 0.49287182],\
+[	-6.26937503, -0.00127686, 0.00078278, 7.26809817, 0.99609609, 0.99794036, 0.49287224],\
+[	-6.26938317, -0.00127634, 0.00078246, 7.26810683, 0.99609769, 0.99794120, 0.49287263],\
+[	-6.26939129, -0.00127581, 0.00078214, 7.26811547, 0.99609930, 0.99794205, 0.49287302],\
+[	-6.26939937, -0.00127529, 0.00078182, 7.26812409, 0.99610091, 0.99794289, 0.49287345],\
+[	-6.26940743, -0.00127476, 0.00078150, 7.26813267, 0.99610251, 0.99794374, 0.49287384],\
+[	-6.26941547, -0.00127424, 0.00078118, 7.26814123, 0.99610411, 0.99794458, 0.49287423],\
+[	-6.26942347, -0.00127372, 0.00078086, 7.26814975, 0.99610572, 0.99794542, 0.49287464],\
+[	-6.26943145, -0.00127320, 0.00078054, 7.26815825, 0.99610732, 0.99794626, 0.49287504],\
+[	-6.26943940, -0.00127267, 0.00078022, 7.26816673, 0.99610892, 0.99794711, 0.49287543],\
+[	-6.26944732, -0.00127215, 0.00077990, 7.26817517, 0.99611051, 0.99794795, 0.49287581],\
+[	-6.26945522, -0.00127163, 0.00077958, 7.26818359, 0.99611211, 0.99794879, 0.49287621],\
+[	-6.26946309, -0.00127111, 0.00077926, 7.26819198, 0.99611370, 0.99794962, 0.49287661],\
+[	-6.26947093, -0.00127059, 0.00077895, 7.26820034, 0.99611530, 0.99795046, 0.49287701],\
+[	-6.26947875, -0.00127007, 0.00077863, 7.26820868, 0.99611689, 0.99795130, 0.49287739],\
+[	-6.26948654, -0.00126955, 0.00077831, 7.26821698, 0.99611848, 0.99795214, 0.49287779],\
+[	-6.26949430, -0.00126903, 0.00077799, 7.26822527, 0.99612007, 0.99795297, 0.49287817],\
+[	-6.26950204, -0.00126852, 0.00077768, 7.26823352, 0.99612166, 0.99795381, 0.49287857],\
+[	-6.26950975, -0.00126800, 0.00077736, 7.26824175, 0.99612325, 0.99795464, 0.49287896],\
+[	-6.26951743, -0.00126748, 0.00077704, 7.26824995, 0.99612484, 0.99795548, 0.49287934],\
+[	-6.26952509, -0.00126696, 0.00077673, 7.26825813, 0.99612642, 0.99795631, 0.49287973],\
+[	-6.26953272, -0.00126645, 0.00077641, 7.26826627, 0.99612800, 0.99795714, 0.49288012],\
+[	-6.26954033, -0.00126593, 0.00077609, 7.26827440, 0.99612959, 0.99795798, 0.49288050],\
+[	-6.26954791, -0.00126541, 0.00077578, 7.26828249, 0.99613117, 0.99795881, 0.49288087],\
+[	-6.26955546, -0.00126490, 0.00077546, 7.26829056, 0.99613275, 0.99795964, 0.49288126],\
+[	-6.26956299, -0.00126438, 0.00077515, 7.26829860, 0.99613433, 0.99796047, 0.49288164],\
+[	-6.26957049, -0.00126387, 0.00077483, 7.26830662, 0.99613590, 0.99796130, 0.49288203],\
+[	-6.26957797, -0.00126335, 0.00077452, 7.26831461, 0.99613748, 0.99796213, 0.49288240],\
+[	-6.26958542, -0.00126284, 0.00077420, 7.26832258, 0.99613905, 0.99796296, 0.49288278],\
+[	-6.26959285, -0.00126233, 0.00077389, 7.26833052, 0.99614063, 0.99796378, 0.49288317],\
+[	-6.26960025, -0.00126181, 0.00077357, 7.26833844, 0.99614220, 0.99796461, 0.49288354],\
+[	-6.26960763, -0.00126130, 0.00077326, 7.26834632, 0.99614377, 0.99796544, 0.49288392],\
+[	-6.26961498, -0.00126079, 0.00077295, 7.26835419, 0.99614534, 0.99796626, 0.49288432],\
+[	-6.26962230, -0.00126028, 0.00077263, 7.26836203, 0.99614691, 0.99796709, 0.49288467],\
+[	-6.26962961, -0.00125977, 0.00077232, 7.26836984, 0.99614847, 0.99796791, 0.49288504],\
+[	-6.26963688, -0.00125926, 0.00077201, 7.26837763, 0.99615004, 0.99796874, 0.49288540],\
+[	-6.26964414, -0.00125874, 0.00077170, 7.26838539, 0.99615160, 0.99796956, 0.49288580],\
+[	-6.26965137, -0.00125823, 0.00077138, 7.26839313, 0.99615317, 0.99797038, 0.49288618],\
+[	-6.26965857, -0.00125772, 0.00077107, 7.26840084, 0.99615473, 0.99797120, 0.49288651],\
+[	-6.26966575, -0.00125722, 0.00077076, 7.26840853, 0.99615629, 0.99797202, 0.49288691],\
+[	-6.26967290, -0.00125671, 0.00077045, 7.26841620, 0.99615785, 0.99797284, 0.49288729],\
+[	-6.26968003, -0.00125620, 0.00077014, 7.26842384, 0.99615941, 0.99797366, 0.49288765],\
+[	-6.26968714, -0.00125569, 0.00076983, 7.26843145, 0.99616097, 0.99797448, 0.49288801],\
+[	-6.26969422, -0.00125518, 0.00076952, 7.26843904, 0.99616252, 0.99797530, 0.49288835],\
+[	-6.26970128, -0.00125468, 0.00076920, 7.26844661, 0.99616408, 0.99797612, 0.49288872],\
+[	-6.26970832, -0.00125417, 0.00076889, 7.26845415, 0.99616563, 0.99797694, 0.49288910],\
+[	-6.26971533, -0.00125366, 0.00076858, 7.26846167, 0.99616718, 0.99797775, 0.49288946],\
+[	-6.26972232, -0.00125316, 0.00076827, 7.26846916, 0.99616873, 0.99797857, 0.49288983],\
+[	-6.26972928, -0.00125265, 0.00076797, 7.26847663, 0.99617028, 0.99797938, 0.49289019],\
+[	-6.26973622, -0.00125214, 0.00076766, 7.26848408, 0.99617183, 0.99798020, 0.49289056],\
+[	-6.26974314, -0.00125164, 0.00076735, 7.26849150, 0.99617338, 0.99798101, 0.49289092],\
+[	-6.26975003, -0.00125114, 0.00076704, 7.26849890, 0.99617492, 0.99798183, 0.49289126],\
+[	-6.26975691, -0.00125063, 0.00076673, 7.26850627, 0.99617647, 0.99798264, 0.49289162],\
+[	-6.26976375, -0.00125013, 0.00076642, 7.26851363, 0.99617801, 0.99798345, 0.49289199],\
+[	-6.26977058, -0.00124962, 0.00076611, 7.26852095, 0.99617955, 0.99798426, 0.49289234],\
+[	-6.26977738, -0.00124912, 0.00076581, 7.26852826, 0.99618109, 0.99798507, 0.49289269],\
+[	-6.26978416, -0.00124862, 0.00076550, 7.26853554, 0.99618263, 0.99798588, 0.49289304],\
+[	-6.26979092, -0.00124812, 0.00076519, 7.26854280, 0.99618417, 0.99798669, 0.49289341],\
+[	-6.26979765, -0.00124762, 0.00076488, 7.26855003, 0.99618571, 0.99798750, 0.49289376],\
+[	-6.26980436, -0.00124711, 0.00076458, 7.26855725, 0.99618724, 0.99798831, 0.49289409],\
+[	-6.26981105, -0.00124661, 0.00076427, 7.26856444, 0.99618878, 0.99798912, 0.49289444],\
+[	-6.26981772, -0.00124611, 0.00076396, 7.26857160, 0.99619031, 0.99798992, 0.49289482],\
+[	-6.26982436, -0.00124561, 0.00076366, 7.26857875, 0.99619184, 0.99799073, 0.49289516],\
+[	-6.26983098, -0.00124511, 0.00076335, 7.26858587, 0.99619337, 0.99799154, 0.49289554],\
+[	-6.26983758, -0.00124461, 0.00076305, 7.26859297, 0.99619490, 0.99799234, 0.49289586],\
+[	-6.26984416, -0.00124412, 0.00076274, 7.26860004, 0.99619643, 0.99799314, 0.49289620],\
+[	-6.26985071, -0.00124362, 0.00076244, 7.26860710, 0.99619796, 0.99799395, 0.49289657],\
+[	-6.26985725, -0.00124312, 0.00076213, 7.26861413, 0.99619949, 0.99799475, 0.49289690],\
+[	-6.26986376, -0.00124262, 0.00076183, 7.26862114, 0.99620101, 0.99799555, 0.49289724],\
+[	-6.26987025, -0.00124212, 0.00076152, 7.26862812, 0.99620253, 0.99799636, 0.49289757],\
+[	-6.26987672, -0.00124163, 0.00076122, 7.26863509, 0.99620406, 0.99799716, 0.49289792],\
+[	-6.26988316, -0.00124113, 0.00076091, 7.26864203, 0.99620558, 0.99799796, 0.49289828],\
+[	-6.26988959, -0.00124063, 0.00076061, 7.26864895, 0.99620710, 0.99799876, 0.49289862],\
+[	-6.26989599, -0.00124014, 0.00076031, 7.26865585, 0.99620862, 0.99799956, 0.49289895],\
+[	-6.26990237, -0.00123964, 0.00076000, 7.26866273, 0.99621013, 0.99800035, 0.49289931],\
+[	-6.26990873, -0.00123915, 0.00075970, 7.26866958, 0.99621165, 0.99800115, 0.49289965],\
+[	-6.26991507, -0.00123865, 0.00075940, 7.26867642, 0.99621317, 0.99800195, 0.49289998],\
+[	-6.26992139, -0.00123816, 0.00075909, 7.26868323, 0.99621468, 0.99800275, 0.49290032],\
+[	-6.26992769, -0.00123767, 0.00075879, 7.26869002, 0.99621619, 0.99800354, 0.49290066],\
+[	-6.26993396, -0.00123717, 0.00075849, 7.26869679, 0.99621770, 0.99800434, 0.49290100],\
+[	-6.26994022, -0.00123668, 0.00075819, 7.26870354, 0.99621921, 0.99800513, 0.49290132],\
+[	-6.26994645, -0.00123619, 0.00075789, 7.26871027, 0.99622072, 0.99800593, 0.49290166],\
+[	-6.26995267, -0.00123569, 0.00075758, 7.26871697, 0.99622223, 0.99800672, 0.49290199],\
+[	-6.26995886, -0.00123520, 0.00075728, 7.26872366, 0.99622374, 0.99800751, 0.49290231],\
+[	-6.26996503, -0.00123471, 0.00075698, 7.26873032, 0.99622524, 0.99800831, 0.49290268],\
+[	-6.26997119, -0.00123422, 0.00075668, 7.26873697, 0.99622675, 0.99800910, 0.49290298],\
+[	-6.26997732, -0.00123373, 0.00075638, 7.26874359, 0.99622825, 0.99800989, 0.49290333],\
+[	-6.26998343, -0.00123324, 0.00075608, 7.26875019, 0.99622975, 0.99801068, 0.49290366],\
+[	-6.26998952, -0.00123275, 0.00075578, 7.26875677, 0.99623126, 0.99801147, 0.49290397],\
+[	-6.26999559, -0.00123226, 0.00075548, 7.26876333, 0.99623275, 0.99801226, 0.49290432],\
+[	-6.27000164, -0.00123177, 0.00075518, 7.26876987, 0.99623425, 0.99801305, 0.49290464],\
+[	-6.27000767, -0.00123128, 0.00075488, 7.26877639, 0.99623575, 0.99801384, 0.49290499],\
+[	-6.27001368, -0.00123079, 0.00075458, 7.26878289, 0.99623725, 0.99801462, 0.49290530],\
+[	-6.27001968, -0.00123031, 0.00075428, 7.26878937, 0.99623874, 0.99801541, 0.49290562],\
+[	-6.27002565, -0.00122982, 0.00075399, 7.26879583, 0.99624024, 0.99801620, 0.49290596],\
+[	-6.27003160, -0.00122933, 0.00075369, 7.26880227, 0.99624173, 0.99801698, 0.49290628],\
+[	-6.27003753, -0.00122884, 0.00075339, 7.26880869, 0.99624322, 0.99801777, 0.49290660],\
+[	-6.27004344, -0.00122836, 0.00075309, 7.26881508, 0.99624471, 0.99801855, 0.49290693],\
+[	-6.27004933, -0.00122787, 0.00075279, 7.26882146, 0.99624620, 0.99801934, 0.49290725],\
+[	-6.27005521, -0.00122739, 0.00075250, 7.26882782, 0.99624769, 0.99802012, 0.49290756],\
+[	-6.27006106, -0.00122690, 0.00075220, 7.26883416, 0.99624917, 0.99802090, 0.49290790],\
+[	-6.27006690, -0.00122642, 0.00075190, 7.26884048, 0.99625066, 0.99802168, 0.49290821],\
+[	-6.27007271, -0.00122593, 0.00075160, 7.26884678, 0.99625214, 0.99802246, 0.49290851],\
+[	-6.27007851, -0.00122545, 0.00075131, 7.26885306, 0.99625363, 0.99802324, 0.49290885],\
+[	-6.27008428, -0.00122496, 0.00075101, 7.26885932, 0.99625511, 0.99802402, 0.49290916],\
+[	-6.27009004, -0.00122448, 0.00075072, 7.26886556, 0.99625659, 0.99802480, 0.49290948],\
+[	-6.27009578, -0.00122400, 0.00075042, 7.26887178, 0.99625807, 0.99802558, 0.49290980],\
+[	-6.27010150, -0.00122351, 0.00075012, 7.26887799, 0.99625955, 0.99802636, 0.49291012],\
+[	-6.27010720, -0.00122303, 0.00074983, 7.26888417, 0.99626102, 0.99802714, 0.49291045],\
+[	-6.27011288, -0.00122255, 0.00074953, 7.26889033, 0.99626250, 0.99802792, 0.49291075],\
+[	-6.27011855, -0.00122207, 0.00074924, 7.26889648, 0.99626398, 0.99802869, 0.49291108],\
+[	-6.27012419, -0.00122159, 0.00074894, 7.26890260, 0.99626545, 0.99802947, 0.49291137],\
+[	-6.27012982, -0.00122111, 0.00074865, 7.26890871, 0.99626692, 0.99803024, 0.49291169],\
+[	-6.27013543, -0.00122063, 0.00074836, 7.26891480, 0.99626839, 0.99803102, 0.49291199],\
+[	-6.27014102, -0.00122015, 0.00074806, 7.26892087, 0.99626986, 0.99803179, 0.49291232],\
+[	-6.27014659, -0.00121967, 0.00074777, 7.26892692, 0.99627133, 0.99803257, 0.49291262],\
+[	-6.27015214, -0.00121919, 0.00074747, 7.26893295, 0.99627280, 0.99803334, 0.49291295],\
+[	-6.27015767, -0.00121871, 0.00074718, 7.26893897, 0.99627427, 0.99803411, 0.49291325],\
+[	-6.27016319, -0.00121823, 0.00074689, 7.26894496, 0.99627574, 0.99803488, 0.49291356],\
+[	-6.27016869, -0.00121775, 0.00074659, 7.26895094, 0.99627720, 0.99803565, 0.49291386],\
+[	-6.27017417, -0.00121727, 0.00074630, 7.26895690, 0.99627866, 0.99803642, 0.49291418],\
+[	-6.27017963, -0.00121680, 0.00074601, 7.26896284, 0.99628013, 0.99803719, 0.49291448],\
+[	-6.27018508, -0.00121632, 0.00074572, 7.26896876, 0.99628159, 0.99803796, 0.49291478],\
+[	-6.27019050, -0.00121584, 0.00074543, 7.26897466, 0.99628305, 0.99803873, 0.49291509],\
+[	-6.27019591, -0.00121537, 0.00074513, 7.26898055, 0.99628451, 0.99803950, 0.49291539],\
+[	-6.27020130, -0.00121489, 0.00074484, 7.26898641, 0.99628596, 0.99804027, 0.49291571],\
+[	-6.27020668, -0.00121441, 0.00074455, 7.26899226, 0.99628742, 0.99804103, 0.49291599],\
+[	-6.27021203, -0.00121394, 0.00074426, 7.26899810, 0.99628888, 0.99804180, 0.49291629],\
+[	-6.27021737, -0.00121346, 0.00074397, 7.26900391, 0.99629033, 0.99804257, 0.49291660],\
+[	-6.27022270, -0.00121299, 0.00074368, 7.26900971, 0.99629178, 0.99804333, 0.49291688],\
+[	-6.27022800, -0.00121252, 0.00074339, 7.26901548, 0.99629324, 0.99804410, 0.49291722],\
+[	-6.27023329, -0.00121204, 0.00074310, 7.26902124, 0.99629469, 0.99804486, 0.49291750],\
+[	-6.27023856, -0.00121157, 0.00074281, 7.26902699, 0.99629614, 0.99804562, 0.49291781],\
+[	-6.27024381, -0.00121110, 0.00074252, 7.26903271, 0.99629759, 0.99804639, 0.49291812],\
+[	-6.27024904, -0.00121062, 0.00074223, 7.26903842, 0.99629903, 0.99804715, 0.49291840],\
+[	-6.27025426, -0.00121015, 0.00074194, 7.26904411, 0.99630048, 0.99804791, 0.49291870],\
+[	-6.27025946, -0.00120968, 0.00074165, 7.26904979, 0.99630193, 0.99804867, 0.49291902],\
+[	-6.27026465, -0.00120921, 0.00074136, 7.26905544, 0.99630337, 0.99804943, 0.49291932],\
+[	-6.27026982, -0.00120874, 0.00074107, 7.26906108, 0.99630481, 0.99805019, 0.49291960],\
+[	-6.27027497, -0.00120827, 0.00074078, 7.26906670, 0.99630626, 0.99805095, 0.49291988],\
+[	-6.27028010, -0.00120780, 0.00074050, 7.26907231, 0.99630770, 0.99805171, 0.49292018],\
+[	-6.27028522, -0.00120732, 0.00074021, 7.26907789, 0.99630914, 0.99805247, 0.49292047],\
+[	-6.27029032, -0.00120686, 0.00073992, 7.26908347, 0.99631057, 0.99805322, 0.49292077],\
+[	-6.27029541, -0.00120639, 0.00073963, 7.26908902, 0.99631201, 0.99805398, 0.49292106],\
+[	-6.27030047, -0.00120592, 0.00073934, 7.26909456, 0.99631345, 0.99805474, 0.49292137],\
+[	-6.27030552, -0.00120545, 0.00073906, 7.26910008, 0.99631488, 0.99805549, 0.49292164],\
+[	-6.27031056, -0.00120498, 0.00073877, 7.26910558, 0.99631632, 0.99805625, 0.49292193],\
+[	-6.27031558, -0.00120451, 0.00073848, 7.26911107, 0.99631775, 0.99805700, 0.49292223],\
+[	-6.27032058, -0.00120404, 0.00073820, 7.26911654, 0.99631918, 0.99805776, 0.49292252],\
+[	-6.27032557, -0.00120358, 0.00073791, 7.26912199, 0.99632061, 0.99805851, 0.49292278],\
+[	-6.27033054, -0.00120311, 0.00073763, 7.26912743, 0.99632204, 0.99805926, 0.49292312],\
+[	-6.27033549, -0.00120264, 0.00073734, 7.26913285, 0.99632347, 0.99806002, 0.49292338],\
+[	-6.27034043, -0.00120218, 0.00073705, 7.26913825, 0.99632490, 0.99806077, 0.49292367],\
+[	-6.27034536, -0.00120171, 0.00073677, 7.26914364, 0.99632633, 0.99806152, 0.49292394],\
+[	-6.27035026, -0.00120125, 0.00073648, 7.26914902, 0.99632775, 0.99806227, 0.49292425],\
+[	-6.27035515, -0.00120078, 0.00073620, 7.26915437, 0.99632918, 0.99806302, 0.49292452],\
+[	-6.27036003, -0.00120032, 0.00073591, 7.26915971, 0.99633060, 0.99806377, 0.49292480],\
+[	-6.27036489, -0.00119985, 0.00073563, 7.26916504, 0.99633202, 0.99806452, 0.49292511],\
+[	-6.27036973, -0.00119939, 0.00073535, 7.26917034, 0.99633344, 0.99806527, 0.49292536],\
+[	-6.27037456, -0.00119892, 0.00073506, 7.26917564, 0.99633486, 0.99806601, 0.49292567],\
+[	-6.27037937, -0.00119846, 0.00073478, 7.26918091, 0.99633628, 0.99806676, 0.49292595],\
+[	-6.27038417, -0.00119800, 0.00073449, 7.26918617, 0.99633770, 0.99806751, 0.49292622],\
+[	-6.27038895, -0.00119754, 0.00073421, 7.26919142, 0.99633912, 0.99806825, 0.49292651],\
+[	-6.27039372, -0.00119707, 0.00073393, 7.26919664, 0.99634053, 0.99806900, 0.49292678],\
+[	-6.27039847, -0.00119661, 0.00073364, 7.26920186, 0.99634195, 0.99806974, 0.49292707],\
+[	-6.27040321, -0.00119615, 0.00073336, 7.26920706, 0.99634336, 0.99807049, 0.49292736],\
+[	-6.27040793, -0.00119569, 0.00073308, 7.26921224, 0.99634477, 0.99807123, 0.49292762],\
+[	-6.27041263, -0.00119523, 0.00073280, 7.26921740, 0.99634618, 0.99807198, 0.49292790],\
+[	-6.27041732, -0.00119477, 0.00073251, 7.26922256, 0.99634759, 0.99807272, 0.49292816],\
+[	-6.27042200, -0.00119431, 0.00073223, 7.26922769, 0.99634900, 0.99807346, 0.49292845],\
+[	-6.27042666, -0.00119385, 0.00073195, 7.26923281, 0.99635041, 0.99807420, 0.49292873],\
+[	-6.27043131, -0.00119339, 0.00073167, 7.26923792, 0.99635182, 0.99807494, 0.49292902],\
+[	-6.27043594, -0.00119293, 0.00073139, 7.26924301, 0.99635322, 0.99807568, 0.49292929],\
+[	-6.27044055, -0.00119247, 0.00073111, 7.26924808, 0.99635463, 0.99807642, 0.49292955],\
+[	-6.27044516, -0.00119201, 0.00073083, 7.26925314, 0.99635603, 0.99807716, 0.49292983],\
+[	-6.27044974, -0.00119155, 0.00073054, 7.26925819, 0.99635743, 0.99807790, 0.49293011],\
+[	-6.27045432, -0.00119110, 0.00073026, 7.26926322, 0.99635884, 0.99807864, 0.49293037],\
+[	-6.27045887, -0.00119064, 0.00072998, 7.26926823, 0.99636024, 0.99807938, 0.49293066],\
+[	-6.27046342, -0.00119018, 0.00072970, 7.26927323, 0.99636164, 0.99808011, 0.49293095],\
+[	-6.27046795, -0.00118973, 0.00072942, 7.26927822, 0.99636303, 0.99808085, 0.49293118],\
+[	-6.27047246, -0.00118927, 0.00072914, 7.26928319, 0.99636443, 0.99808158, 0.49293146],\
+[	-6.27047696, -0.00118881, 0.00072887, 7.26928815, 0.99636583, 0.99808232, 0.49293175],\
+[	-6.27048145, -0.00118836, 0.00072859, 7.26929309, 0.99636722, 0.99808305, 0.49293201],\
+[	-6.27048592, -0.00118790, 0.00072831, 7.26929802, 0.99636862, 0.99808379, 0.49293228],\
+[	-6.27049038, -0.00118745, 0.00072803, 7.26930293, 0.99637001, 0.99808452, 0.49293255],\
+[	-6.27049482, -0.00118699, 0.00072775, 7.26930783, 0.99637140, 0.99808526, 0.49293281],\
+[	-6.27049925, -0.00118654, 0.00072747, 7.26931271, 0.99637279, 0.99808599, 0.49293309],\
+[	-6.27050366, -0.00118609, 0.00072719, 7.26931758, 0.99637418, 0.99808672, 0.49293334],\
+[	-6.27050807, -0.00118563, 0.00072692, 7.26932243, 0.99637557, 0.99808745, 0.49293360],\
+[	-6.27051245, -0.00118518, 0.00072664, 7.26932727, 0.99637696, 0.99808818, 0.49293390],\
+[	-6.27051683, -0.00118473, 0.00072636, 7.26933210, 0.99637835, 0.99808891, 0.49293415],\
+[	-6.27052119, -0.00118427, 0.00072608, 7.26933691, 0.99637973, 0.99808964, 0.49293444],\
+[	-6.27052553, -0.00118382, 0.00072581, 7.26934171, 0.99638112, 0.99809037, 0.49293467],\
+[	-6.27052986, -0.00118337, 0.00072553, 7.26934649, 0.99638250, 0.99809110, 0.49293494],\
+[	-6.27053418, -0.00118292, 0.00072525, 7.26935126, 0.99638388, 0.99809183, 0.49293521],\
+[	-6.27053849, -0.00118247, 0.00072498, 7.26935602, 0.99638526, 0.99809256, 0.49293547],\
+[	-6.27054278, -0.00118202, 0.00072470, 7.26936076, 0.99638664, 0.99809328, 0.49293575],\
+[	-6.27054706, -0.00118157, 0.00072442, 7.26936549, 0.99638802, 0.99809401, 0.49293600],\
+[	-6.27055132, -0.00118112, 0.00072415, 7.26937020, 0.99638940, 0.99809474, 0.49293625],\
+[	-6.27055557, -0.00118067, 0.00072387, 7.26937491, 0.99639078, 0.99809546, 0.49293651],\
+[	-6.27055981, -0.00118022, 0.00072360, 7.26937959, 0.99639215, 0.99809619, 0.49293677],\
+[	-6.27056403, -0.00117977, 0.00072332, 7.26938427, 0.99639353, 0.99809691, 0.49293703],\
+[	-6.27056825, -0.00117932, 0.00072305, 7.26938893, 0.99639490, 0.99809763, 0.49293729],\
+[	-6.27057244, -0.00117887, 0.00072277, 7.26939357, 0.99639628, 0.99809836, 0.49293754],\
+[	-6.27057663, -0.00117842, 0.00072250, 7.26939820, 0.99639765, 0.99809908, 0.49293783],\
+[	-6.27058080, -0.00117798, 0.00072222, 7.26940282, 0.99639902, 0.99809980, 0.49293807],\
+[	-6.27058496, -0.00117753, 0.00072195, 7.26940743, 0.99640039, 0.99810052, 0.49293833],\
+[	-6.27058910, -0.00117708, 0.00072167, 7.26941202, 0.99640176, 0.99810124, 0.49293858],\
+[	-6.27059324, -0.00117663, 0.00072140, 7.26941660, 0.99640312, 0.99810196, 0.49293885],\
+[	-6.27059736, -0.00117619, 0.00072113, 7.26942117, 0.99640449, 0.99810268, 0.49293910],\
+[	-6.27060146, -0.00117574, 0.00072085, 7.26942572, 0.99640586, 0.99810340, 0.49293936],\
+[	-6.27060556, -0.00117530, 0.00072058, 7.26943026, 0.99640722, 0.99810412, 0.49293961],\
+[	-6.27060964, -0.00117485, 0.00072031, 7.26943479, 0.99640859, 0.99810484, 0.49293988],\
+[	-6.27061371, -0.00117441, 0.00072004, 7.26943930, 0.99640995, 0.99810556, 0.49294014],\
+[	-6.27061776, -0.00117396, 0.00071976, 7.26944380, 0.99641131, 0.99810628, 0.49294037],\
+[	-6.27062180, -0.00117352, 0.00071949, 7.26944829, 0.99641267, 0.99810699, 0.49294061],\
+[	-6.27062583, -0.00117307, 0.00071922, 7.26945276, 0.99641403, 0.99810771, 0.49294091],\
+[	-6.27062985, -0.00117263, 0.00071895, 7.26945722, 0.99641539, 0.99810842, 0.49294113],\
+[	-6.27063386, -0.00117219, 0.00071867, 7.26946167, 0.99641675, 0.99810914, 0.49294137],\
+[	-6.27063785, -0.00117174, 0.00071840, 7.26946611, 0.99641810, 0.99810985, 0.49294161],\
+[	-6.27064183, -0.00117130, 0.00071813, 7.26947053, 0.99641946, 0.99811057, 0.49294187],\
+[	-6.27064580, -0.00117086, 0.00071786, 7.26947494, 0.99642081, 0.99811128, 0.49294216],\
+[	-6.27064976, -0.00117042, 0.00071759, 7.26947934, 0.99642217, 0.99811199, 0.49294239],\
+[	-6.27065370, -0.00116997, 0.00071732, 7.26948372, 0.99642352, 0.99811271, 0.49294263],\
+[	-6.27065763, -0.00116953, 0.00071705, 7.26948810, 0.99642487, 0.99811342, 0.49294289],\
+[	-6.27066155, -0.00116909, 0.00071678, 7.26949246, 0.99642622, 0.99811413, 0.49294314],\
+[	-6.27066546, -0.00116865, 0.00071651, 7.26949680, 0.99642757, 0.99811484, 0.49294338],\
+[	-6.27066935, -0.00116821, 0.00071624, 7.26950114, 0.99642892, 0.99811555, 0.49294362],\
+[	-6.27067323, -0.00116777, 0.00071597, 7.26950546, 0.99643026, 0.99811626, 0.49294387],\
+[	-6.27067711, -0.00116733, 0.00071570, 7.26950977, 0.99643161, 0.99811697, 0.49294414],\
+[	-6.27068096, -0.00116689, 0.00071543, 7.26951407, 0.99643296, 0.99811768, 0.49294435],\
+[	-6.27068481, -0.00116645, 0.00071516, 7.26951836, 0.99643430, 0.99811839, 0.49294462],\
+[	-6.27068865, -0.00116601, 0.00071489, 7.26952263, 0.99643564, 0.99811909, 0.49294486],\
+[	-6.27069247, -0.00116558, 0.00071462, 7.26952689, 0.99643699, 0.99811980, 0.49294512],\
+[	-6.27069628, -0.00116514, 0.00071435, 7.26953114, 0.99643833, 0.99812051, 0.49294533],\
+[	-6.27070008, -0.00116470, 0.00071409, 7.26953538, 0.99643967, 0.99812121, 0.49294559],\
+[	-6.27070387, -0.00116426, 0.00071382, 7.26953961, 0.99644101, 0.99812192, 0.49294582],\
+[	-6.27070765, -0.00116383, 0.00071355, 7.26954382, 0.99644235, 0.99812262, 0.49294607],\
+[	-6.27071141, -0.00116339, 0.00071328, 7.26954802, 0.99644368, 0.99812333, 0.49294633],\
+[	-6.27071516, -0.00116295, 0.00071301, 7.26955221, 0.99644502, 0.99812403, 0.49294657],\
+[	-6.27071891, -0.00116252, 0.00071275, 7.26955639, 0.99644635, 0.99812474, 0.49294678],\
+[	-6.27072264, -0.00116208, 0.00071248, 7.26956056, 0.99644769, 0.99812544, 0.49294701],\
+[	-6.27072636, -0.00116165, 0.00071221, 7.26956471, 0.99644902, 0.99812614, 0.49294726],\
+[	-6.27073006, -0.00116121, 0.00071195, 7.26956885, 0.99645035, 0.99812684, 0.49294753],\
+[	-6.27073376, -0.00116078, 0.00071168, 7.26957298, 0.99645169, 0.99812755, 0.49294774],\
+[	-6.27073744, -0.00116034, 0.00071141, 7.26957710, 0.99645302, 0.99812825, 0.49294799],\
+[	-6.27074112, -0.00115991, 0.00071115, 7.26958121, 0.99645434, 0.99812895, 0.49294824],\
+[	-6.27074478, -0.00115947, 0.00071088, 7.26958531, 0.99645567, 0.99812965, 0.49294849],\
+[	-6.27074843, -0.00115904, 0.00071062, 7.26958939, 0.99645700, 0.99813035, 0.49294867],\
+[	-6.27075207, -0.00115861, 0.00071035, 7.26959347, 0.99645833, 0.99813104, 0.49294894],\
+[	-6.27075570, -0.00115817, 0.00071008, 7.26959753, 0.99645965, 0.99813174, 0.49294918],\
+[	-6.27075932, -0.00115774, 0.00070982, 7.26960158, 0.99646098, 0.99813244, 0.49294940],\
+[	-6.27076293, -0.00115731, 0.00070955, 7.26960562, 0.99646230, 0.99813314, 0.49294966],\
+[	-6.27076652, -0.00115688, 0.00070929, 7.26960965, 0.99646362, 0.99813383, 0.49294988],\
+[	-6.27077011, -0.00115644, 0.00070902, 7.26961366, 0.99646494, 0.99813453, 0.49295014],\
+[	-6.27077368, -0.00115601, 0.00070876, 7.26961767, 0.99646626, 0.99813523, 0.49295035],\
+[	-6.27077724, -0.00115558, 0.00070850, 7.26962166, 0.99646758, 0.99813592, 0.49295058],\
+[	-6.27078080, -0.00115515, 0.00070823, 7.26962565, 0.99646890, 0.99813662, 0.49295081],\
+[	-6.27078434, -0.00115472, 0.00070797, 7.26962962, 0.99647022, 0.99813731, 0.49295107],\
+[	-6.27078787, -0.00115429, 0.00070770, 7.26963358, 0.99647154, 0.99813800, 0.49295129],\
+[	-6.27079139, -0.00115386, 0.00070744, 7.26963753, 0.99647285, 0.99813870, 0.49295151],\
+[	-6.27079490, -0.00115343, 0.00070718, 7.26964147, 0.99647417, 0.99813939, 0.49295175],\
+[	-6.27079840, -0.00115300, 0.00070692, 7.26964540, 0.99647548, 0.99814008, 0.49295200],\
+[	-6.27080189, -0.00115257, 0.00070665, 7.26964931, 0.99647679, 0.99814077, 0.49295221],\
+[	-6.27080537, -0.00115215, 0.00070639, 7.26965322, 0.99647810, 0.99814146, 0.49295246],\
+[	-6.27080883, -0.00115172, 0.00070613, 7.26965711, 0.99647941, 0.99814215, 0.49295267],\
+[	-6.27081229, -0.00115129, 0.00070586, 7.26966100, 0.99648072, 0.99814284, 0.49295289],\
+[	-6.27081574, -0.00115086, 0.00070560, 7.26966487, 0.99648203, 0.99814353, 0.49295314],\
+[	-6.27081917, -0.00115044, 0.00070534, 7.26966874, 0.99648334, 0.99814422, 0.49295337],\
+[	-6.27082260, -0.00115001, 0.00070508, 7.26967259, 0.99648465, 0.99814491, 0.49295357],\
+[	-6.27082601, -0.00114958, 0.00070482, 7.26967643, 0.99648595, 0.99814560, 0.49295381],\
+[	-6.27082942, -0.00114916, 0.00070456, 7.26968026, 0.99648726, 0.99814629, 0.49295404],\
+[	-6.27083281, -0.00114873, 0.00070430, 7.26968408, 0.99648856, 0.99814697, 0.49295428],\
+[	-6.27083620, -0.00114830, 0.00070403, 7.26968789, 0.99648986, 0.99814766, 0.49295451],\
+[	-6.27083957, -0.00114788, 0.00070377, 7.26969169, 0.99649117, 0.99814835, 0.49295473],\
+[	-6.27084294, -0.00114745, 0.00070351, 7.26969548, 0.99649247, 0.99814903, 0.49295497],\
+[	-6.27084629, -0.00114703, 0.00070325, 7.26969926, 0.99649377, 0.99814972, 0.49295518],\
+[	-6.27084964, -0.00114661, 0.00070299, 7.26970303, 0.99649507, 0.99815040, 0.49295540],\
+[	-6.27085297, -0.00114618, 0.00070273, 7.26970679, 0.99649636, 0.99815109, 0.49295563],\
+[	-6.27085630, -0.00114576, 0.00070247, 7.26971054, 0.99649766, 0.99815177, 0.49295584],\
+[	-6.27085961, -0.00114533, 0.00070221, 7.26971428, 0.99649896, 0.99815245, 0.49295609],\
+[	-6.27086292, -0.00114491, 0.00070195, 7.26971800, 0.99650025, 0.99815313, 0.49295629],\
+[	-6.27086621, -0.00114449, 0.00070169, 7.26972172, 0.99650155, 0.99815382, 0.49295653],\
+[	-6.27086950, -0.00114407, 0.00070144, 7.26972543, 0.99650284, 0.99815450, 0.49295673],\
+[	-6.27087277, -0.00114364, 0.00070118, 7.26972913, 0.99650413, 0.99815518, 0.49295696],\
+[	-6.27087604, -0.00114322, 0.00070092, 7.26973281, 0.99650542, 0.99815586, 0.49295720],\
+[	-6.27087929, -0.00114280, 0.00070066, 7.26973649, 0.99650671, 0.99815654, 0.49295739],\
+[	-6.27088254, -0.00114238, 0.00070040, 7.26974016, 0.99650800, 0.99815722, 0.49295764],\
+[	-6.27088577, -0.00114196, 0.00070014, 7.26974382, 0.99650929, 0.99815790, 0.49295785],\
+[	-6.27088900, -0.00114154, 0.00069989, 7.26974746, 0.99651058, 0.99815858, 0.49295811],\
+[	-6.27089222, -0.00114112, 0.00069963, 7.26975110, 0.99651187, 0.99815925, 0.49295829],\
+[	-6.27089543, -0.00114070, 0.00069937, 7.26975473, 0.99651315, 0.99815993, 0.49295850],\
+[	-6.27089862, -0.00114028, 0.00069911, 7.26975835, 0.99651444, 0.99816061, 0.49295875],\
+[	-6.27090181, -0.00113986, 0.00069886, 7.26976195, 0.99651572, 0.99816129, 0.49295895],\
+[	-6.27090499, -0.00113944, 0.00069860, 7.26976555, 0.99651700, 0.99816196, 0.49295918],\
+[	-6.27090816, -0.00113902, 0.00069834, 7.26976914, 0.99651829, 0.99816264, 0.49295938],\
+[	-6.27091132, -0.00113860, 0.00069809, 7.26977272, 0.99651957, 0.99816331, 0.49295963],\
+[	-6.27091447, -0.00113818, 0.00069783, 7.26977629, 0.99652085, 0.99816399, 0.49295982],\
+[	-6.27091762, -0.00113777, 0.00069757, 7.26977985, 0.99652213, 0.99816466, 0.49296003],\
+[	-6.27092075, -0.00113735, 0.00069732, 7.26978340, 0.99652340, 0.99816533, 0.49296028],\
+[	-6.27092387, -0.00113693, 0.00069706, 7.26978694, 0.99652468, 0.99816601, 0.49296049],\
+[	-6.27092699, -0.00113651, 0.00069681, 7.26979047, 0.99652596, 0.99816668, 0.49296071],\
+[	-6.27093009, -0.00113610, 0.00069655, 7.26979399, 0.99652723, 0.99816735, 0.49296091],\
+[	-6.27093319, -0.00113568, 0.00069629, 7.26979751, 0.99652851, 0.99816802, 0.49296112],\
+[	-6.27093627, -0.00113527, 0.00069604, 7.26980101, 0.99652978, 0.99816869, 0.49296137],\
+[	-6.27093935, -0.00113485, 0.00069578, 7.26980450, 0.99653105, 0.99816937, 0.49296155],\
+[	-6.27094242, -0.00113443, 0.00069553, 7.26980799, 0.99653232, 0.99817004, 0.49296176],\
+[	-6.27094548, -0.00113402, 0.00069528, 7.26981146, 0.99653360, 0.99817070, 0.49296198],\
+[	-6.27094853, -0.00113360, 0.00069502, 7.26981493, 0.99653487, 0.99817137, 0.49296221],\
+[	-6.27095157, -0.00113319, 0.00069477, 7.26981838, 0.99653613, 0.99817204, 0.49296241],\
+[	-6.27095461, -0.00113278, 0.00069451, 7.26982183, 0.99653740, 0.99817271, 0.49296261],\
+[	-6.27095763, -0.00113236, 0.00069426, 7.26982527, 0.99653867, 0.99817338, 0.49296284],\
+[	-6.27096065, -0.00113195, 0.00069401, 7.26982870, 0.99653994, 0.99817405, 0.49296306],\
+[	-6.27096365, -0.00113154, 0.00069375, 7.26983212, 0.99654120, 0.99817471, 0.49296324],\
+[	-6.27096665, -0.00113112, 0.00069350, 7.26983553, 0.99654246, 0.99817538, 0.49296349],\
+[	-6.27096964, -0.00113071, 0.00069325, 7.26983893, 0.99654373, 0.99817604, 0.49296367],\
+[	-6.27097262, -0.00113030, 0.00069299, 7.26984232, 0.99654499, 0.99817671, 0.49296390],\
+[	-6.27097559, -0.00112989, 0.00069274, 7.26984571, 0.99654625, 0.99817737, 0.49296411],\
+[	-6.27097856, -0.00112947, 0.00069249, 7.26984908, 0.99654751, 0.99817804, 0.49296432],\
+[	-6.27098151, -0.00112906, 0.00069224, 7.26985245, 0.99654877, 0.99817870, 0.49296451],\
+[	-6.27098446, -0.00112865, 0.00069198, 7.26985581, 0.99655003, 0.99817937, 0.49296475],\
+[	-6.27098739, -0.00112824, 0.00069173, 7.26985915, 0.99655129, 0.99818003, 0.49296493],\
+[	-6.27099032, -0.00112783, 0.00069148, 7.26986249, 0.99655255, 0.99818069, 0.49296516],\
+[	-6.27099324, -0.00112742, 0.00069123, 7.26986583, 0.99655380, 0.99818135, 0.49296535],\
+[	-6.27099616, -0.00112701, 0.00069098, 7.26986915, 0.99655506, 0.99818202, 0.49296556],\
+[	-6.27099906, -0.00112660, 0.00069072, 7.26987246, 0.99655631, 0.99818268, 0.49296577],\
+[	-6.27100196, -0.00112619, 0.00069047, 7.26987577, 0.99655756, 0.99818334, 0.49296597],\
+[	-6.27100484, -0.00112578, 0.00069022, 7.26987906, 0.99655882, 0.99818400, 0.49296619],\
+[	-6.27100772, -0.00112537, 0.00068997, 7.26988235, 0.99656007, 0.99818466, 0.49296639],\
+[	-6.27101059, -0.00112496, 0.00068972, 7.26988563, 0.99656132, 0.99818532, 0.49296663],\
+[	-6.27101345, -0.00112455, 0.00068947, 7.26988890, 0.99656257, 0.99818597, 0.49296681],\
+[	-6.27101631, -0.00112415, 0.00068922, 7.26989216, 0.99656382, 0.99818663, 0.49296699],\
+[	-6.27101915, -0.00112374, 0.00068897, 7.26989541, 0.99656506, 0.99818729, 0.49296722],\
+[	-6.27102199, -0.00112333, 0.00068872, 7.26989866, 0.99656631, 0.99818795, 0.49296743],\
+[	-6.27102482, -0.00112292, 0.00068847, 7.26990189, 0.99656756, 0.99818860, 0.49296764],\
+[	-6.27102764, -0.00112252, 0.00068822, 7.26990512, 0.99656880, 0.99818926, 0.49296783],\
+[	-6.27103045, -0.00112211, 0.00068797, 7.26990834, 0.99657005, 0.99818992, 0.49296802],\
+[	-6.27103326, -0.00112171, 0.00068772, 7.26991155, 0.99657129, 0.99819057, 0.49296822],\
+[	-6.27103606, -0.00112130, 0.00068747, 7.26991476, 0.99657253, 0.99819123, 0.49296843],\
+[	-6.27103885, -0.00112089, 0.00068723, 7.26991795, 0.99657377, 0.99819188, 0.49296863],\
+[	-6.27104163, -0.00112049, 0.00068698, 7.26992114, 0.99657501, 0.99819253, 0.49296882],\
+[	-6.27104440, -0.00112008, 0.00068673, 7.26992432, 0.99657625, 0.99819319, 0.49296903],\
+[	-6.27104717, -0.00111968, 0.00068648, 7.26992749, 0.99657749, 0.99819384, 0.49296925],\
+[	-6.27104992, -0.00111927, 0.00068623, 7.26993065, 0.99657873, 0.99819449, 0.49296948],\
+[	-6.27105267, -0.00111887, 0.00068599, 7.26993380, 0.99657997, 0.99819514, 0.49296966],\
+[	-6.27105541, -0.00111847, 0.00068574, 7.26993695, 0.99658120, 0.99819580, 0.49296986],\
+[	-6.27105815, -0.00111806, 0.00068549, 7.26994009, 0.99658244, 0.99819645, 0.49297006],\
+[	-6.27106088, -0.00111766, 0.00068524, 7.26994322, 0.99658367, 0.99819710, 0.49297025],\
+[	-6.27106359, -0.00111726, 0.00068500, 7.26994634, 0.99658491, 0.99819775, 0.49297043],\
+[	-6.27106630, -0.00111685, 0.00068475, 7.26994945, 0.99658614, 0.99819840, 0.49297064],\
+[	-6.27106901, -0.00111645, 0.00068450, 7.26995256, 0.99658737, 0.99819905, 0.49297085],\
+[	-6.27107170, -0.00111605, 0.00068426, 7.26995565, 0.99658860, 0.99819970, 0.49297106],\
+[	-6.27107439, -0.00111565, 0.00068401, 7.26995874, 0.99658983, 0.99820034, 0.49297123],\
+[	-6.27107707, -0.00111525, 0.00068376, 7.26996183, 0.99659106, 0.99820099, 0.49297145],\
+[	-6.27107974, -0.00111484, 0.00068352, 7.26996490, 0.99659229, 0.99820164, 0.49297165],\
+[	-6.27108241, -0.00111444, 0.00068327, 7.26996797, 0.99659352, 0.99820229, 0.49297182],\
+[	-6.27108507, -0.00111404, 0.00068302, 7.26997103, 0.99659474, 0.99820293, 0.49297202],\
+[	-6.27108772, -0.00111364, 0.00068278, 7.26997408, 0.99659597, 0.99820358, 0.49297222],\
+[	-6.27109036, -0.00111324, 0.00068253, 7.26997712, 0.99659719, 0.99820422, 0.49297241],\
+[	-6.27109300, -0.00111284, 0.00068229, 7.26998015, 0.99659842, 0.99820487, 0.49297262],\
+[	-6.27109562, -0.00111244, 0.00068204, 7.26998318, 0.99659964, 0.99820551, 0.49297281],\
+[	-6.27109825, -0.00111204, 0.00068180, 7.26998620, 0.99660086, 0.99820616, 0.49297301],\
+[	-6.27110086, -0.00111164, 0.00068155, 7.26998921, 0.99660208, 0.99820680, 0.49297320],\
+[	-6.27110347, -0.00111125, 0.00068131, 7.26999222, 0.99660330, 0.99820744, 0.49297339],\
+[	-6.27110606, -0.00111085, 0.00068106, 7.26999522, 0.99660452, 0.99820809, 0.49297359],\
+[	-6.27110866, -0.00111045, 0.00068082, 7.26999821, 0.99660574, 0.99820873, 0.49297380],\
+[	-6.27111124, -0.00111005, 0.00068058, 7.27000119, 0.99660696, 0.99820937, 0.49297397],\
+[	-6.27111382, -0.00110965, 0.00068033, 7.27000416, 0.99660818, 0.99821001, 0.49297417],\
+[	-6.27111639, -0.00110926, 0.00068009, 7.27000713, 0.99660939, 0.99821065, 0.49297437],\
+[	-6.27111895, -0.00110886, 0.00067985, 7.27001009, 0.99661061, 0.99821129, 0.49297456],\
+[	-6.27112151, -0.00110846, 0.00067960, 7.27001304, 0.99661182, 0.99821193, 0.49297477],\
+[	-6.27112405, -0.00110807, 0.00067936, 7.27001599, 0.99661303, 0.99821257, 0.49297493],\
+[	-6.27112660, -0.00110767, 0.00067912, 7.27001892, 0.99661425, 0.99821321, 0.49297516],\
+[	-6.27112913, -0.00110728, 0.00067887, 7.27002185, 0.99661546, 0.99821385, 0.49297533],\
+[	-6.27113166, -0.00110688, 0.00067863, 7.27002478, 0.99661667, 0.99821449, 0.49297550],\
+[	-6.27113418, -0.00110648, 0.00067839, 7.27002769, 0.99661788, 0.99821513, 0.49297572],\
+[	-6.27113669, -0.00110609, 0.00067815, 7.27003060, 0.99661909, 0.99821576, 0.49297589],\
+[	-6.27113920, -0.00110569, 0.00067790, 7.27003350, 0.99662030, 0.99821640, 0.49297607],\
+[	-6.27114170, -0.00110530, 0.00067766, 7.27003640, 0.99662150, 0.99821704, 0.49297628],\
+[	-6.27114419, -0.00110491, 0.00067742, 7.27003928, 0.99662271, 0.99821767, 0.49297646],\
+[	-6.27114668, -0.00110451, 0.00067718, 7.27004216, 0.99662392, 0.99821831, 0.49297664],\
+[	-6.27114915, -0.00110412, 0.00067694, 7.27004504, 0.99662512, 0.99821894, 0.49297684],\
+[	-6.27115163, -0.00110372, 0.00067670, 7.27004790, 0.99662632, 0.99821958, 0.49297702],\
+[	-6.27115409, -0.00110333, 0.00067646, 7.27005076, 0.99662753, 0.99822021, 0.49297723],\
+[	-6.27115655, -0.00110294, 0.00067621, 7.27005361, 0.99662873, 0.99822085, 0.49297742],\
+[	-6.27115900, -0.00110255, 0.00067597, 7.27005646, 0.99662993, 0.99822148, 0.49297759],\
+[	-6.27116145, -0.00110215, 0.00067573, 7.27005929, 0.99663113, 0.99822211, 0.49297781],\
+[	-6.27116389, -0.00110176, 0.00067549, 7.27006212, 0.99663233, 0.99822274, 0.49297799],\
+[	-6.27116632, -0.00110137, 0.00067525, 7.27006495, 0.99663353, 0.99822338, 0.49297818],\
+[	-6.27116874, -0.00110098, 0.00067501, 7.27006776, 0.99663473, 0.99822401, 0.49297837],\
+[	-6.27117116, -0.00110059, 0.00067477, 7.27007057, 0.99663592, 0.99822464, 0.49297853],\
+[	-6.27117357, -0.00110020, 0.00067453, 7.27007338, 0.99663712, 0.99822527, 0.49297873],\
+[	-6.27117598, -0.00109981, 0.00067429, 7.27007617, 0.99663832, 0.99822590, 0.49297890],\
+[	-6.27117838, -0.00109942, 0.00067405, 7.27007896, 0.99663951, 0.99822653, 0.49297910],\
+[	-6.27118077, -0.00109903, 0.00067381, 7.27008174, 0.99664070, 0.99822716, 0.49297929],\
+[	-6.27118315, -0.00109864, 0.00067358, 7.27008452, 0.99664190, 0.99822779, 0.49297945],\
+[	-6.27118553, -0.00109825, 0.00067334, 7.27008729, 0.99664309, 0.99822842, 0.49297965],\
+[	-6.27118791, -0.00109786, 0.00067310, 7.27009005, 0.99664428, 0.99822904, 0.49297987],\
+[	-6.27119027, -0.00109747, 0.00067286, 7.27009280, 0.99664547, 0.99822967, 0.49298005],\
+[	-6.27119263, -0.00109708, 0.00067262, 7.27009555, 0.99664666, 0.99823030, 0.49298023],\
+[	-6.27119499, -0.00109669, 0.00067238, 7.27009829, 0.99664785, 0.99823092, 0.49298041],\
+[	-6.27119733, -0.00109630, 0.00067214, 7.27010103, 0.99664904, 0.99823155, 0.49298056],\
+[	-6.27119968, -0.00109592, 0.00067191, 7.27010376, 0.99665022, 0.99823218, 0.49298074],\
+[	-6.27120201, -0.00109553, 0.00067167, 7.27010648, 0.99665141, 0.99823280, 0.49298095],\
+[	-6.27120434, -0.00109514, 0.00067143, 7.27010920, 0.99665259, 0.99823343, 0.49298115],\
+[	-6.27120666, -0.00109475, 0.00067119, 7.27011190, 0.99665378, 0.99823405, 0.49298131],\
+[	-6.27120898, -0.00109437, 0.00067096, 7.27011461, 0.99665496, 0.99823467, 0.49298149],\
+[	-6.27121129, -0.00109398, 0.00067072, 7.27011730, 0.99665614, 0.99823530, 0.49298166],\
+[	-6.27121359, -0.00109360, 0.00067048, 7.27011999, 0.99665733, 0.99823592, 0.49298185],\
+[	-6.27121589, -0.00109321, 0.00067025, 7.27012268, 0.99665851, 0.99823654, 0.49298202],\
+[	-6.27121818, -0.00109282, 0.00067001, 7.27012535, 0.99665969, 0.99823717, 0.49298224],\
+[	-6.27122046, -0.00109244, 0.00066977, 7.27012802, 0.99666087, 0.99823779, 0.49298236],\
+[	-6.27122274, -0.00109205, 0.00066954, 7.27013069, 0.99666205, 0.99823841, 0.49298260],\
+[	-6.27122501, -0.00109167, 0.00066930, 7.27013334, 0.99666322, 0.99823903, 0.49298275],\
+[	-6.27122728, -0.00109128, 0.00066907, 7.27013600, 0.99666440, 0.99823965, 0.49298294],\
+[	-6.27122954, -0.00109090, 0.00066883, 7.27013864, 0.99666558, 0.99824027, 0.49298313],\
+[	-6.27123179, -0.00109052, 0.00066859, 7.27014128, 0.99666675, 0.99824089, 0.49298330],\
+[	-6.27123404, -0.00109013, 0.00066836, 7.27014391, 0.99666793, 0.99824151, 0.49298351],\
+[	-6.27123629, -0.00108975, 0.00066812, 7.27014654, 0.99666910, 0.99824213, 0.49298363],\
+[	-6.27123852, -0.00108937, 0.00066789, 7.27014916, 0.99667027, 0.99824275, 0.49298382],\
+[	-6.27124075, -0.00108898, 0.00066765, 7.27015177, 0.99667144, 0.99824336, 0.49298401],\
+[	-6.27124298, -0.00108860, 0.00066742, 7.27015438, 0.99667261, 0.99824398, 0.49298420],\
+[	-6.27124520, -0.00108822, 0.00066718, 7.27015698, 0.99667379, 0.99824460, 0.49298438],\
+[	-6.27124741, -0.00108784, 0.00066695, 7.27015957, 0.99667495, 0.99824521, 0.49298453],\
+[	-6.27124962, -0.00108745, 0.00066672, 7.27016216, 0.99667612, 0.99824583, 0.49298471],\
+[	-6.27125182, -0.00108707, 0.00066648, 7.27016475, 0.99667729, 0.99824645, 0.49298491],\
+[	-6.27125401, -0.00108669, 0.00066625, 7.27016732, 0.99667846, 0.99824706, 0.49298510],\
+[	-6.27125620, -0.00108631, 0.00066601, 7.27016989, 0.99667962, 0.99824768, 0.49298524],\
+[	-6.27125839, -0.00108593, 0.00066578, 7.27017246, 0.99668079, 0.99824829, 0.49298544],\
+[	-6.27126057, -0.00108555, 0.00066555, 7.27017502, 0.99668195, 0.99824890, 0.49298562],\
+[	-6.27126274, -0.00108517, 0.00066531, 7.27017757, 0.99668312, 0.99824952, 0.49298575],\
+[	-6.27126490, -0.00108479, 0.00066508, 7.27018012, 0.99668428, 0.99825013, 0.49298596],\
+[	-6.27126707, -0.00108441, 0.00066485, 7.27018266, 0.99668544, 0.99825074, 0.49298614],\
+[	-6.27126922, -0.00108403, 0.00066461, 7.27018519, 0.99668660, 0.99825136, 0.49298629],\
+[	-6.27127137, -0.00108365, 0.00066438, 7.27018772, 0.99668776, 0.99825197, 0.49298647],\
+[	-6.27127351, -0.00108327, 0.00066415, 7.27019024, 0.99668892, 0.99825258, 0.49298665],\
+[	-6.27127565, -0.00108289, 0.00066392, 7.27019276, 0.99669008, 0.99825319, 0.49298685],\
+[	-6.27127779, -0.00108251, 0.00066369, 7.27019527, 0.99669124, 0.99825380, 0.49298701],\
+[	-6.27127991, -0.00108214, 0.00066345, 7.27019778, 0.99669240, 0.99825441, 0.49298719],\
+[	-6.27128204, -0.00108176, 0.00066322, 7.27020028, 0.99669356, 0.99825502, 0.49298735],\
+[	-6.27128415, -0.00108138, 0.00066299, 7.27020277, 0.99669471, 0.99825563, 0.49298754],\
+[	-6.27128626, -0.00108100, 0.00066276, 7.27020526, 0.99669587, 0.99825624, 0.49298772],\
+[	-6.27128837, -0.00108063, 0.00066253, 7.27020774, 0.99669702, 0.99825685, 0.49298787],\
+[	-6.27129047, -0.00108025, 0.00066230, 7.27021022, 0.99669817, 0.99825746, 0.49298806],\
+[	-6.27129256, -0.00107987, 0.00066206, 7.27021269, 0.99669933, 0.99825806, 0.49298822],\
+[	-6.27129465, -0.00107950, 0.00066183, 7.27021516, 0.99670048, 0.99825867, 0.49298838],\
+[	-6.27129674, -0.00107912, 0.00066160, 7.27021762, 0.99670163, 0.99825928, 0.49298857],\
+[	-6.27129881, -0.00107874, 0.00066137, 7.27022007, 0.99670278, 0.99825988, 0.49298872],\
+[	-6.27130089, -0.00107837, 0.00066114, 7.27022252, 0.99670393, 0.99826049, 0.49298890],\
+[	-6.27130295, -0.00107799, 0.00066091, 7.27022496, 0.99670508, 0.99826109, 0.49298906],\
+[	-6.27130502, -0.00107762, 0.00066068, 7.27022740, 0.99670622, 0.99826170, 0.49298921],\
+[	-6.27130707, -0.00107724, 0.00066045, 7.27022983, 0.99670737, 0.99826230, 0.49298942],\
+[	-6.27130913, -0.00107687, 0.00066022, 7.27023226, 0.99670852, 0.99826291, 0.49298958],\
+[	-6.27131117, -0.00107649, 0.00065999, 7.27023468, 0.99670966, 0.99826351, 0.49298977],\
+[	-6.27131321, -0.00107612, 0.00065976, 7.27023709, 0.99671081, 0.99826412, 0.49298992],\
+[	-6.27131525, -0.00107575, 0.00065953, 7.27023950, 0.99671195, 0.99826472, 0.49299011],\
+[	-6.27131728, -0.00107537, 0.00065931, 7.27024191, 0.99671309, 0.99826532, 0.49299028],\
+[	-6.27131930, -0.00107500, 0.00065908, 7.27024430, 0.99671423, 0.99826592, 0.49299042],\
+[	-6.27132133, -0.00107463, 0.00065885, 7.27024670, 0.99671538, 0.99826653, 0.49299058],\
+[	-6.27132334, -0.00107425, 0.00065862, 7.27024909, 0.99671652, 0.99826713, 0.49299077],\
+[	-6.27132535, -0.00107388, 0.00065839, 7.27025147, 0.99671766, 0.99826773, 0.49299096],\
+[	-6.27132736, -0.00107351, 0.00065816, 7.27025385, 0.99671879, 0.99826833, 0.49299111],\
+[	-6.27132936, -0.00107314, 0.00065793, 7.27025622, 0.99671993, 0.99826893, 0.49299126],\
+[	-6.27133135, -0.00107277, 0.00065771, 7.27025858, 0.99672107, 0.99826953, 0.49299144],\
+[	-6.27133334, -0.00107239, 0.00065748, 7.27026094, 0.99672221, 0.99827013, 0.49299160],\
+[	-6.27133532, -0.00107202, 0.00065725, 7.27026330, 0.99672334, 0.99827073, 0.49299180],\
+[	-6.27133730, -0.00107165, 0.00065702, 7.27026565, 0.99672448, 0.99827132, 0.49299193],\
+[	-6.27133928, -0.00107128, 0.00065680, 7.27026800, 0.99672561, 0.99827192, 0.49299212],\
+[	-6.27134125, -0.00107091, 0.00065657, 7.27027034, 0.99672674, 0.99827252, 0.49299227],\
+[	-6.27134321, -0.00107054, 0.00065634, 7.27027267, 0.99672788, 0.99827312, 0.49299243],\
+[	-6.27134517, -0.00107017, 0.00065611, 7.27027500, 0.99672901, 0.99827371, 0.49299259],\
+[	-6.27134713, -0.00106980, 0.00065589, 7.27027733, 0.99673014, 0.99827431, 0.49299280],\
+[	-6.27134908, -0.00106943, 0.00065566, 7.27027964, 0.99673127, 0.99827491, 0.49299296],\
+[	-6.27135102, -0.00106906, 0.00065543, 7.27028196, 0.99673240, 0.99827550, 0.49299309],\
+[	-6.27135296, -0.00106870, 0.00065521, 7.27028427, 0.99673353, 0.99827610, 0.49299327],\
+[	-6.27135490, -0.00106833, 0.00065498, 7.27028657, 0.99673466, 0.99827669, 0.49299344],\
+[	-6.27135683, -0.00106796, 0.00065476, 7.27028887, 0.99673578, 0.99827729, 0.49299361],\
+[	-6.27135875, -0.00106759, 0.00065453, 7.27029116, 0.99673691, 0.99827788, 0.49299378],\
+[	-6.27136067, -0.00106722, 0.00065430, 7.27029345, 0.99673804, 0.99827847, 0.49299395],\
+[	-6.27136259, -0.00106685, 0.00065408, 7.27029574, 0.99673916, 0.99827907, 0.49299413],\
+[	-6.27136450, -0.00106649, 0.00065385, 7.27029801, 0.99674028, 0.99827966, 0.49299427],\
+[	-6.27136641, -0.00106612, 0.00065363, 7.27030029, 0.99674141, 0.99828025, 0.49299442],\
+[	-6.27136831, -0.00106575, 0.00065340, 7.27030256, 0.99674253, 0.99828084, 0.49299460],\
+[	-6.27137021, -0.00106539, 0.00065318, 7.27030482, 0.99674365, 0.99828143, 0.49299474],\
+[	-6.27137210, -0.00106502, 0.00065295, 7.27030708, 0.99674477, 0.99828203, 0.49299490],\
+[	-6.27137399, -0.00106465, 0.00065273, 7.27030933, 0.99674589, 0.99828262, 0.49299509],\
+[	-6.27137587, -0.00106429, 0.00065250, 7.27031158, 0.99674701, 0.99828321, 0.49299525],\
+[	-6.27137775, -0.00106392, 0.00065228, 7.27031382, 0.99674813, 0.99828380, 0.49299541],\
+[	-6.27137962, -0.00106356, 0.00065206, 7.27031606, 0.99674925, 0.99828439, 0.49299561],\
+[	-6.27138149, -0.00106319, 0.00065183, 7.27031830, 0.99675037, 0.99828497, 0.49299573],\
+[	-6.27138335, -0.00106283, 0.00065161, 7.27032053, 0.99675148, 0.99828556, 0.49299589],\
+[	-6.27138521, -0.00106246, 0.00065139, 7.27032275, 0.99675260, 0.99828615, 0.49299603],\
+[	-6.27138707, -0.00106210, 0.00065116, 7.27032497, 0.99675371, 0.99828674, 0.49299621],\
+[	-6.27138892, -0.00106173, 0.00065094, 7.27032719, 0.99675483, 0.99828733, 0.49299635],\
+[	-6.27139077, -0.00106137, 0.00065072, 7.27032940, 0.99675594, 0.99828791, 0.49299653],\
+[	-6.27139261, -0.00106101, 0.00065049, 7.27033160, 0.99675705, 0.99828850, 0.49299670],\
+[	-6.27139445, -0.00106064, 0.00065027, 7.27033380, 0.99675816, 0.99828909, 0.49299687],\
+[	-6.27139628, -0.00106028, 0.00065005, 7.27033600, 0.99675928, 0.99828967, 0.49299705],\
+[	-6.27139811, -0.00105992, 0.00064982, 7.27033819, 0.99676039, 0.99829026, 0.49299718],\
+[	-6.27139993, -0.00105956, 0.00064960, 7.27034037, 0.99676150, 0.99829084, 0.49299736],\
+[	-6.27140175, -0.00105919, 0.00064938, 7.27034256, 0.99676260, 0.99829143, 0.49299751],\
+[	-6.27140356, -0.00105883, 0.00064916, 7.27034473, 0.99676371, 0.99829201, 0.49299765],\
+[	-6.27140537, -0.00105847, 0.00064893, 7.27034690, 0.99676482, 0.99829260, 0.49299782],\
+[	-6.27140718, -0.00105811, 0.00064871, 7.27034907, 0.99676593, 0.99829318, 0.49299800],\
+[	-6.27140898, -0.00105775, 0.00064849, 7.27035123, 0.99676703, 0.99829376, 0.49299816],\
+[	-6.27141078, -0.00105739, 0.00064827, 7.27035339, 0.99676814, 0.99829434, 0.49299833],\
+[	-6.27141257, -0.00105702, 0.00064805, 7.27035555, 0.99676924, 0.99829493, 0.49299845],\
+[	-6.27141436, -0.00105666, 0.00064783, 7.27035770, 0.99677034, 0.99829551, 0.49299862],\
+[	-6.27141614, -0.00105630, 0.00064761, 7.27035984, 0.99677145, 0.99829609, 0.49299878],\
+[	-6.27141792, -0.00105594, 0.00064739, 7.27036198, 0.99677255, 0.99829667, 0.49299891],\
+[	-6.27141970, -0.00105558, 0.00064716, 7.27036412, 0.99677365, 0.99829725, 0.49299912],\
+[	-6.27142147, -0.00105522, 0.00064694, 7.27036625, 0.99677475, 0.99829783, 0.49299926],\
+[	-6.27142324, -0.00105486, 0.00064672, 7.27036837, 0.99677585, 0.99829841, 0.49299943],\
+[	-6.27142500, -0.00105451, 0.00064650, 7.27037050, 0.99677695, 0.99829899, 0.49299955],\
+[	-6.27142676, -0.00105415, 0.00064628, 7.27037261, 0.99677805, 0.99829957, 0.49299971],\
+[	-6.27142851, -0.00105379, 0.00064606, 7.27037473, 0.99677914, 0.99830015, 0.49299984],\
+[	-6.27143026, -0.00105343, 0.00064584, 7.27037683, 0.99678024, 0.99830073, 0.49300001],\
+[	-6.27143201, -0.00105307, 0.00064562, 7.27037894, 0.99678134, 0.99830131, 0.49300017],\
+[	-6.27143375, -0.00105271, 0.00064540, 7.27038104, 0.99678243, 0.99830188, 0.49300033],\
+[	-6.27143549, -0.00105236, 0.00064518, 7.27038313, 0.99678353, 0.99830246, 0.49300050],\
+[	-6.27143722, -0.00105200, 0.00064496, 7.27038522, 0.99678462, 0.99830304, 0.49300065],\
+[	-6.27143895, -0.00105164, 0.00064475, 7.27038731, 0.99678571, 0.99830361, 0.49300081],\
+[	-6.27144068, -0.00105128, 0.00064453, 7.27038939, 0.99678681, 0.99830419, 0.49300096],\
+[	-6.27144240, -0.00105093, 0.00064431, 7.27039147, 0.99678790, 0.99830477, 0.49300112],\
+[	-6.27144412, -0.00105057, 0.00064409, 7.27039355, 0.99678899, 0.99830534, 0.49300126],\
+[	-6.27144583, -0.00105021, 0.00064387, 7.27039561, 0.99679008, 0.99830592, 0.49300141],\
+[	-6.27144754, -0.00104986, 0.00064365, 7.27039768, 0.99679117, 0.99830649, 0.49300158],\
+[	-6.27144924, -0.00104950, 0.00064343, 7.27039974, 0.99679226, 0.99830706, 0.49300174],\
+[	-6.27145094, -0.00104915, 0.00064322, 7.27040180, 0.99679334, 0.99830764, 0.49300191],\
+[	-6.27145264, -0.00104879, 0.00064300, 7.27040385, 0.99679443, 0.99830821, 0.49300203],\
+[	-6.27145433, -0.00104844, 0.00064278, 7.27040590, 0.99679552, 0.99830878, 0.49300220],\
+[	-6.27145602, -0.00104808, 0.00064256, 7.27040794, 0.99679660, 0.99830936, 0.49300234],\
+[	-6.27145771, -0.00104773, 0.00064234, 7.27040998, 0.99679769, 0.99830993, 0.49300248],\
+[	-6.27145939, -0.00104737, 0.00064213, 7.27041202, 0.99679877, 0.99831050, 0.49300264],\
+[	-6.27146107, -0.00104702, 0.00064191, 7.27041405, 0.99679986, 0.99831107, 0.49300280],\
+[	-6.27146274, -0.00104667, 0.00064169, 7.27041607, 0.99680094, 0.99831164, 0.49300294],\
+[	-6.27146441, -0.00104631, 0.00064148, 7.27041810, 0.99680202, 0.99831221, 0.49300310],\
+[	-6.27146607, -0.00104596, 0.00064126, 7.27042012, 0.99680310, 0.99831278, 0.49300325],\
+[	-6.27146774, -0.00104561, 0.00064104, 7.27042213, 0.99680418, 0.99831335, 0.49300340],\
+[	-6.27146939, -0.00104525, 0.00064083, 7.27042414, 0.99680526, 0.99831392, 0.49300357],\
+[	-6.27147105, -0.00104490, 0.00064061, 7.27042615, 0.99680634, 0.99831449, 0.49300370],\
+[	-6.27147270, -0.00104455, 0.00064039, 7.27042815, 0.99680742, 0.99831506, 0.49300390],\
+[	-6.27147434, -0.00104420, 0.00064018, 7.27043015, 0.99680850, 0.99831563, 0.49300402],\
+[	-6.27147599, -0.00104384, 0.00063996, 7.27043214, 0.99680957, 0.99831620, 0.49300417],\
+[	-6.27147762, -0.00104349, 0.00063975, 7.27043413, 0.99681065, 0.99831676, 0.49300431],\
+[	-6.27147926, -0.00104314, 0.00063953, 7.27043612, 0.99681172, 0.99831733, 0.49300449],\
+[	-6.27148089, -0.00104279, 0.00063931, 7.27043810, 0.99681280, 0.99831790, 0.49300460],\
+[	-6.27148252, -0.00104244, 0.00063910, 7.27044008, 0.99681387, 0.99831846, 0.49300478],\
+[	-6.27148414, -0.00104209, 0.00063888, 7.27044205, 0.99681495, 0.99831903, 0.49300494],\
+[	-6.27148576, -0.00104174, 0.00063867, 7.27044402, 0.99681602, 0.99831959, 0.49300507],\
+[	-6.27148738, -0.00104139, 0.00063845, 7.27044599, 0.99681709, 0.99832016, 0.49300523],\
+[	-6.27148899, -0.00104104, 0.00063824, 7.27044795, 0.99681816, 0.99832072, 0.49300537],\
+[	-6.27149060, -0.00104069, 0.00063802, 7.27044991, 0.99681923, 0.99832129, 0.49300552],\
+[	-6.27149220, -0.00104034, 0.00063781, 7.27045186, 0.99682030, 0.99832185, 0.49300567],\
+[	-6.27149380, -0.00103999, 0.00063760, 7.27045382, 0.99682137, 0.99832242, 0.49300583],\
+[	-6.27149540, -0.00103964, 0.00063738, 7.27045576, 0.99682244, 0.99832298, 0.49300595],\
+[	-6.27149699, -0.00103929, 0.00063717, 7.27045771, 0.99682351, 0.99832354, 0.49300609],\
+[	-6.27149859, -0.00103894, 0.00063695, 7.27045964, 0.99682457, 0.99832411, 0.49300627],\
+[	-6.27150017, -0.00103859, 0.00063674, 7.27046158, 0.99682564, 0.99832467, 0.49300642],\
+[	-6.27150175, -0.00103824, 0.00063653, 7.27046351, 0.99682670, 0.99832523, 0.49300653],\
+[	-6.27150333, -0.00103790, 0.00063631, 7.27046544, 0.99682777, 0.99832579, 0.49300671],\
+[	-6.27150491, -0.00103755, 0.00063610, 7.27046736, 0.99682883, 0.99832635, 0.49300686],\
+[	-6.27150648, -0.00103720, 0.00063589, 7.27046928, 0.99682990, 0.99832691, 0.49300700],\
+[	-6.27150805, -0.00103685, 0.00063567, 7.27047120, 0.99683096, 0.99832747, 0.49300717],\
+[	-6.27150962, -0.00103651, 0.00063546, 7.27047311, 0.99683202, 0.99832803, 0.49300731],\
+[	-6.27151118, -0.00103616, 0.00063525, 7.27047502, 0.99683308, 0.99832859, 0.49300742],\
+[	-6.27151274, -0.00103581, 0.00063503, 7.27047692, 0.99683414, 0.99832915, 0.49300759],\
+[	-6.27151429, -0.00103547, 0.00063482, 7.27047882, 0.99683520, 0.99832971, 0.49300775],\
+[	-6.27151584, -0.00103512, 0.00063461, 7.27048072, 0.99683626, 0.99833027, 0.49300787],\
+[	-6.27151739, -0.00103478, 0.00063440, 7.27048262, 0.99683732, 0.99833083, 0.49300803],\
+[	-6.27151893, -0.00103443, 0.00063419, 7.27048451, 0.99683838, 0.99833138, 0.49300818],\
+[	-6.27152048, -0.00103408, 0.00063397, 7.27048639, 0.99683943, 0.99833194, 0.49300831],\
+[	-6.27152201, -0.00103374, 0.00063376, 7.27048827, 0.99684049, 0.99833250, 0.49300846],\
+[	-6.27152355, -0.00103339, 0.00063355, 7.27049015, 0.99684154, 0.99833306, 0.49300863],\
+[	-6.27152508, -0.00103305, 0.00063334, 7.27049203, 0.99684260, 0.99833361, 0.49300877],\
+[	-6.27152660, -0.00103270, 0.00063313, 7.27049390, 0.99684365, 0.99833417, 0.49300891],\
+[	-6.27152813, -0.00103236, 0.00063292, 7.27049577, 0.99684471, 0.99833472, 0.49300907],\
+[	-6.27152965, -0.00103202, 0.00063271, 7.27049763, 0.99684576, 0.99833528, 0.49300922],\
+[	-6.27153117, -0.00103167, 0.00063249, 7.27049949, 0.99684681, 0.99833583, 0.49300935],\
+[	-6.27153268, -0.00103133, 0.00063228, 7.27050135, 0.99684786, 0.99833639, 0.49300949],\
+[	-6.27153419, -0.00103099, 0.00063207, 7.27050320, 0.99684891, 0.99833694, 0.49300966],\
+[	-6.27153570, -0.00103064, 0.00063186, 7.27050505, 0.99684996, 0.99833749, 0.49300980],\
+[	-6.27153720, -0.00103030, 0.00063165, 7.27050690, 0.99685101, 0.99833805, 0.49300992],\
+[	-6.27153870, -0.00102996, 0.00063144, 7.27050874, 0.99685206, 0.99833860, 0.49301003],\
+[	-6.27154020, -0.00102961, 0.00063123, 7.27051058, 0.99685311, 0.99833915, 0.49301024],\
+[	-6.27154169, -0.00102927, 0.00063102, 7.27051242, 0.99685415, 0.99833971, 0.49301036],\
+[	-6.27154318, -0.00102893, 0.00063081, 7.27051425, 0.99685520, 0.99834026, 0.49301051],\
+[	-6.27154467, -0.00102859, 0.00063060, 7.27051608, 0.99685625, 0.99834081, 0.49301064],\
+[	-6.27154615, -0.00102825, 0.00063039, 7.27051791, 0.99685729, 0.99834136, 0.49301076],\
+[	-6.27154763, -0.00102791, 0.00063018, 7.27051973, 0.99685834, 0.99834191, 0.49301089],\
+[	-6.27154911, -0.00102756, 0.00062997, 7.27052155, 0.99685938, 0.99834246, 0.49301105],\
+[	-6.27155059, -0.00102722, 0.00062976, 7.27052336, 0.99686042, 0.99834301, 0.49301119],\
+[	-6.27155206, -0.00102688, 0.00062956, 7.27052517, 0.99686146, 0.99834356, 0.49301134],\
+[	-6.27155352, -0.00102654, 0.00062935, 7.27052698, 0.99686251, 0.99834411, 0.49301148],\
+[	-6.27155499, -0.00102620, 0.00062914, 7.27052879, 0.99686355, 0.99834466, 0.49301163],\
+[	-6.27155645, -0.00102586, 0.00062893, 7.27053059, 0.99686459, 0.99834521, 0.49301176],\
+[	-6.27155791, -0.00102552, 0.00062872, 7.27053239, 0.99686563, 0.99834576, 0.49301188],\
+[	-6.27155936, -0.00102518, 0.00062851, 7.27053418, 0.99686666, 0.99834630, 0.49301206],\
+[	-6.27156082, -0.00102484, 0.00062830, 7.27053597, 0.99686770, 0.99834685, 0.49301220],\
+[	-6.27156226, -0.00102451, 0.00062810, 7.27053776, 0.99686874, 0.99834740, 0.49301233],\
+[	-6.27156371, -0.00102417, 0.00062789, 7.27053954, 0.99686978, 0.99834794, 0.49301246],\
+[	-6.27156515, -0.00102383, 0.00062768, 7.27054132, 0.99687081, 0.99834849, 0.49301262],\
+[	-6.27156659, -0.00102349, 0.00062747, 7.27054310, 0.99687185, 0.99834904, 0.49301280],\
+[	-6.27156803, -0.00102315, 0.00062727, 7.27054488, 0.99687288, 0.99834958, 0.49301294],\
+[	-6.27156946, -0.00102281, 0.00062706, 7.27054665, 0.99687392, 0.99835013, 0.49301309],\
+[	-6.27157089, -0.00102248, 0.00062685, 7.27054842, 0.99687495, 0.99835067, 0.49301319],\
+[	-6.27157232, -0.00102214, 0.00062664, 7.27055018, 0.99687598, 0.99835122, 0.49301335],\
+[	-6.27157374, -0.00102180, 0.00062644, 7.27055194, 0.99687701, 0.99835176, 0.49301345],\
+[	-6.27157517, -0.00102146, 0.00062623, 7.27055370, 0.99687805, 0.99835231, 0.49301362],\
+[	-6.27157658, -0.00102113, 0.00062602, 7.27055546, 0.99687908, 0.99835285, 0.49301372],\
+[	-6.27157800, -0.00102079, 0.00062582, 7.27055721, 0.99688011, 0.99835339, 0.49301383],\
+[	-6.27157941, -0.00102045, 0.00062561, 7.27055896, 0.99688113, 0.99835393, 0.49301405],\
+[	-6.27158082, -0.00102012, 0.00062540, 7.27056070, 0.99688216, 0.99835448, 0.49301418],\
+[	-6.27158223, -0.00101978, 0.00062520, 7.27056244, 0.99688319, 0.99835502, 0.49301433],\
+[	-6.27158363, -0.00101945, 0.00062499, 7.27056418, 0.99688422, 0.99835556, 0.49301444],\
+[	-6.27158503, -0.00101911, 0.00062479, 7.27056592, 0.99688524, 0.99835610, 0.49301454],\
+[	-6.27158643, -0.00101878, 0.00062458, 7.27056765, 0.99688627, 0.99835664, 0.49301468],\
+[	-6.27158782, -0.00101844, 0.00062438, 7.27056938, 0.99688730, 0.99835718, 0.49301483],\
+[	-6.27158921, -0.00101811, 0.00062417, 7.27057111, 0.99688832, 0.99835772, 0.49301499],\
+[	-6.27159060, -0.00101777, 0.00062396, 7.27057283, 0.99688934, 0.99835826, 0.49301513],\
+[	-6.27159199, -0.00101744, 0.00062376, 7.27057455, 0.99689037, 0.99835880, 0.49301528],\
+[	-6.27159337, -0.00101710, 0.00062355, 7.27057627, 0.99689139, 0.99835934, 0.49301541],\
+[	-6.27159475, -0.00101677, 0.00062335, 7.27057798, 0.99689241, 0.99835988, 0.49301553],\
+[	-6.27159613, -0.00101644, 0.00062314, 7.27057969, 0.99689343, 0.99836042, 0.49301569],\
+[	-6.27159750, -0.00101610, 0.00062294, 7.27058140, 0.99689445, 0.99836096, 0.49301584],\
+[	-6.27159887, -0.00101577, 0.00062274, 7.27058310, 0.99689547, 0.99836150, 0.49301593],\
+[	-6.27160024, -0.00101544, 0.00062253, 7.27058480, 0.99689649, 0.99836203, 0.49301608],\
+[	-6.27160160, -0.00101510, 0.00062233, 7.27058650, 0.99689751, 0.99836257, 0.49301621],\
+[	-6.27160297, -0.00101477, 0.00062212, 7.27058820, 0.99689853, 0.99836311, 0.49301634],\
+[	-6.27160433, -0.00101444, 0.00062192, 7.27058989, 0.99689954, 0.99836364, 0.49301647],\
+[	-6.27160568, -0.00101410, 0.00062171, 7.27059158, 0.99690056, 0.99836418, 0.49301663],\
+[	-6.27160704, -0.00101377, 0.00062151, 7.27059327, 0.99690158, 0.99836472, 0.49301679],\
+[	-6.27160839, -0.00101344, 0.00062131, 7.27059495, 0.99690259, 0.99836525, 0.49301693],\
+[	-6.27160974, -0.00101311, 0.00062110, 7.27059663, 0.99690361, 0.99836579, 0.49301706],\
+[	-6.27161108, -0.00101278, 0.00062090, 7.27059831, 0.99690462, 0.99836632, 0.49301722],\
+[	-6.27161243, -0.00101245, 0.00062070, 7.27059998, 0.99690563, 0.99836686, 0.49301730],\
+[	-6.27161377, -0.00101212, 0.00062049, 7.27060165, 0.99690664, 0.99836739, 0.49301748],\
+[	-6.27161511, -0.00101179, 0.00062029, 7.27060332, 0.99690766, 0.99836792, 0.49301757],\
+[	-6.27161644, -0.00101146, 0.00062009, 7.27060499, 0.99690867, 0.99836846, 0.49301772],\
+[	-6.27161777, -0.00101112, 0.00061989, 7.27060665, 0.99690968, 0.99836899, 0.49301787],\
+[	-6.27161910, -0.00101079, 0.00061968, 7.27060831, 0.99691069, 0.99836952, 0.49301798],\
+[	-6.27162043, -0.00101046, 0.00061948, 7.27060996, 0.99691170, 0.99837005, 0.49301811],\
+[	-6.27162175, -0.00101014, 0.00061928, 7.27061162, 0.99691271, 0.99837059, 0.49301825],\
+[	-6.27162307, -0.00100981, 0.00061908, 7.27061327, 0.99691371, 0.99837112, 0.49301840],\
+[	-6.27162439, -0.00100948, 0.00061887, 7.27061492, 0.99691472, 0.99837165, 0.49301855],\
+[	-6.27162571, -0.00100915, 0.00061867, 7.27061656, 0.99691573, 0.99837218, 0.49301866],\
+[	-6.27162702, -0.00100882, 0.00061847, 7.27061820, 0.99691673, 0.99837271, 0.49301881],\
+[	-6.27162833, -0.00100849, 0.00061827, 7.27061984, 0.99691774, 0.99837324, 0.49301892],\
+[	-6.27162964, -0.00100816, 0.00061807, 7.27062148, 0.99691874, 0.99837377, 0.49301906],\
+[	-6.27163095, -0.00100783, 0.00061787, 7.27062311, 0.99691975, 0.99837430, 0.49301923],\
+[	-6.27163225, -0.00100751, 0.00061767, 7.27062474, 0.99692075, 0.99837483, 0.49301935],\
+[	-6.27163355, -0.00100718, 0.00061746, 7.27062637, 0.99692175, 0.99837536, 0.49301944],\
+[	-6.27163485, -0.00100685, 0.00061726, 7.27062800, 0.99692275, 0.99837589, 0.49301961],\
+[	-6.27163614, -0.00100652, 0.00061706, 7.27062962, 0.99692375, 0.99837641, 0.49301974],\
+[	-6.27163743, -0.00100620, 0.00061686, 7.27063124, 0.99692476, 0.99837694, 0.49301990],\
+[	-6.27163872, -0.00100587, 0.00061666, 7.27063285, 0.99692576, 0.99837747, 0.49301996],\
+[	-6.27164001, -0.00100554, 0.00061646, 7.27063447, 0.99692675, 0.99837800, 0.49302013],\
+[	-6.27164130, -0.00100522, 0.00061626, 7.27063608, 0.99692775, 0.99837852, 0.49302024],\
+[	-6.27164258, -0.00100489, 0.00061606, 7.27063769, 0.99692875, 0.99837905, 0.49302039],\
+[	-6.27164386, -0.00100456, 0.00061586, 7.27063929, 0.99692975, 0.99837957, 0.49302050],\
+[	-6.27164513, -0.00100424, 0.00061566, 7.27064090, 0.99693075, 0.99838010, 0.49302064],\
+[	-6.27164641, -0.00100391, 0.00061546, 7.27064250, 0.99693174, 0.99838063, 0.49302080],\
+[	-6.27164768, -0.00100359, 0.00061526, 7.27064409, 0.99693274, 0.99838115, 0.49302092],\
+[	-6.27164895, -0.00100326, 0.00061506, 7.27064569, 0.99693373, 0.99838168, 0.49302106],\
+[	-6.27165022, -0.00100294, 0.00061486, 7.27064728, 0.99693473, 0.99838220, 0.49302117],\
+[	-6.27165148, -0.00100261, 0.00061466, 7.27064887, 0.99693572, 0.99838272, 0.49302135],\
+[	-6.27165274, -0.00100229, 0.00061446, 7.27065045, 0.99693671, 0.99838325, 0.49302147],\
+[	-6.27165400, -0.00100196, 0.00061427, 7.27065204, 0.99693770, 0.99838377, 0.49302161],\
+[	-6.27165526, -0.00100164, 0.00061407, 7.27065362, 0.99693870, 0.99838429, 0.49302174],\
+[	-6.27165651, -0.00100132, 0.00061387, 7.27065520, 0.99693969, 0.99838482, 0.49302182],\
+[	-6.27165777, -0.00100099, 0.00061367, 7.27065677, 0.99694068, 0.99838534, 0.49302200],\
+[	-6.27165902, -0.00100067, 0.00061347, 7.27065835, 0.99694167, 0.99838586, 0.49302214],\
+[	-6.27166026, -0.00100035, 0.00061327, 7.27065992, 0.99694266, 0.99838638, 0.49302227],\
+[	-6.27166151, -0.00100002, 0.00061307, 7.27066149, 0.99694364, 0.99838690, 0.49302237],\
+[	-6.27166275, -0.00099970, 0.00061288, 7.27066305, 0.99694463, 0.99838742, 0.49302253],\
+[	-6.27166399, -0.00099938, 0.00061268, 7.27066461, 0.99694562, 0.99838795, 0.49302264],\
+[	-6.27166523, -0.00099905, 0.00061248, 7.27066617, 0.99694660, 0.99838847, 0.49302277],\
+[	-6.27166646, -0.00099873, 0.00061228, 7.27066773, 0.99694759, 0.99838899, 0.49302290],\
+[	-6.27166770, -0.00099841, 0.00061208, 7.27066928, 0.99694858, 0.99838951, 0.49302301],\
+[	-6.27166893, -0.00099809, 0.00061189, 7.27067084, 0.99694956, 0.99839002, 0.49302315],\
+[	-6.27167015, -0.00099777, 0.00061169, 7.27067239, 0.99695054, 0.99839054, 0.49302331],\
+[	-6.27167138, -0.00099745, 0.00061149, 7.27067393, 0.99695153, 0.99839106, 0.49302343],\
+[	-6.27167260, -0.00099712, 0.00061130, 7.27067548, 0.99695251, 0.99839158, 0.49302354],\
+[	-6.27167382, -0.00099680, 0.00061110, 7.27067702, 0.99695349, 0.99839210, 0.49302367],\
+[	-6.27167504, -0.00099648, 0.00061090, 7.27067856, 0.99695447, 0.99839262, 0.49302378],\
+[	-6.27167626, -0.00099616, 0.00061070, 7.27068010, 0.99695545, 0.99839313, 0.49302391],\
+[	-6.27167747, -0.00099584, 0.00061051, 7.27068163, 0.99695643, 0.99839365, 0.49302405],\
+[	-6.27167868, -0.00099552, 0.00061031, 7.27068316, 0.99695741, 0.99839417, 0.49302418],\
+[	-6.27167989, -0.00099520, 0.00061012, 7.27068469, 0.99695839, 0.99839468, 0.49302428],\
+[	-6.27168110, -0.00099488, 0.00060992, 7.27068622, 0.99695937, 0.99839520, 0.49302442],\
+[	-6.27168231, -0.00099456, 0.00060972, 7.27068774, 0.99696035, 0.99839571, 0.49302457],\
+[	-6.27168351, -0.00099424, 0.00060953, 7.27068927, 0.99696133, 0.99839623, 0.49302469],\
+[	-6.27168471, -0.00099392, 0.00060933, 7.27069078, 0.99696230, 0.99839674, 0.49302483],\
+[	-6.27168591, -0.00099360, 0.00060914, 7.27069230, 0.99696328, 0.99839726, 0.49302493],\
+[	-6.27168710, -0.00099329, 0.00060894, 7.27069382, 0.99696425, 0.99839777, 0.49302510],\
+[	-6.27168829, -0.00099297, 0.00060874, 7.27069533, 0.99696523, 0.99839829, 0.49302519],\
+[	-6.27168949, -0.00099265, 0.00060855, 7.27069684, 0.99696620, 0.99839880, 0.49302531],\
+[	-6.27169067, -0.00099233, 0.00060835, 7.27069834, 0.99696717, 0.99839931, 0.49302546],\
+[	-6.27169186, -0.00099201, 0.00060816, 7.27069985, 0.99696815, 0.99839983, 0.49302559],\
+[	-6.27169305, -0.00099170, 0.00060796, 7.27070135, 0.99696912, 0.99840034, 0.49302572],\
+[	-6.27169423, -0.00099138, 0.00060777, 7.27070285, 0.99697009, 0.99840085, 0.49302581],\
+[	-6.27169541, -0.00099106, 0.00060757, 7.27070435, 0.99697106, 0.99840137, 0.49302594],\
+[	-6.27169659, -0.00099074, 0.00060738, 7.27070584, 0.99697203, 0.99840188, 0.49302606],\
+[	-6.27169776, -0.00099043, 0.00060719, 7.27070734, 0.99697300, 0.99840239, 0.49302620],\
+[	-6.27169893, -0.00099011, 0.00060699, 7.27070883, 0.99697397, 0.99840290, 0.49302635],\
+[	-6.27170011, -0.00098979, 0.00060680, 7.27071031, 0.99697494, 0.99840341, 0.49302644],\
+[	-6.27170128, -0.00098948, 0.00060660, 7.27071180, 0.99697590, 0.99840392, 0.49302662],\
+[	-6.27170244, -0.00098916, 0.00060641, 7.27071328, 0.99697687, 0.99840443, 0.49302676],\
+[	-6.27170361, -0.00098884, 0.00060622, 7.27071476, 0.99697784, 0.99840494, 0.49302682],\
+[	-6.27170477, -0.00098853, 0.00060602, 7.27071624, 0.99697880, 0.99840545, 0.49302696],\
+[	-6.27170593, -0.00098821, 0.00060583, 7.27071772, 0.99697977, 0.99840596, 0.49302711],\
+[	-6.27170709, -0.00098790, 0.00060563, 7.27071919, 0.99698073, 0.99840647, 0.49302721],\
+[	-6.27170825, -0.00098758, 0.00060544, 7.27072066, 0.99698170, 0.99840698, 0.49302733],\
+[	-6.27170940, -0.00098727, 0.00060525, 7.27072213, 0.99698266, 0.99840748, 0.49302748],\
+[	-6.27171055, -0.00098695, 0.00060505, 7.27072360, 0.99698362, 0.99840799, 0.49302765],\
+[	-6.27171170, -0.00098664, 0.00060486, 7.27072506, 0.99698459, 0.99840850, 0.49302773],\
+[	-6.27171285, -0.00098633, 0.00060467, 7.27072652, 0.99698555, 0.99840901, 0.49302786],\
+[	-6.27171399, -0.00098601, 0.00060448, 7.27072798, 0.99698651, 0.99840951, 0.49302797],\
+[	-6.27171514, -0.00098570, 0.00060428, 7.27072944, 0.99698747, 0.99841002, 0.49302811],\
+[	-6.27171628, -0.00098538, 0.00060409, 7.27073090, 0.99698843, 0.99841053, 0.49302824],\
+[	-6.27171742, -0.00098507, 0.00060390, 7.27073235, 0.99698939, 0.99841103, 0.49302835],\
+[	-6.27171856, -0.00098476, 0.00060371, 7.27073380, 0.99699035, 0.99841154, 0.49302848],\
+[	-6.27171969, -0.00098444, 0.00060351, 7.27073525, 0.99699130, 0.99841204, 0.49302858],\
+[	-6.27172082, -0.00098413, 0.00060332, 7.27073669, 0.99699226, 0.99841255, 0.49302871],\
+[	-6.27172196, -0.00098382, 0.00060313, 7.27073814, 0.99699322, 0.99841305, 0.49302887],\
+[	-6.27172309, -0.00098351, 0.00060294, 7.27073958, 0.99699417, 0.99841356, 0.49302895],\
+[	-6.27172421, -0.00098319, 0.00060275, 7.27074102, 0.99699513, 0.99841406, 0.49302912],\
+[	-6.27172534, -0.00098288, 0.00060256, 7.27074246, 0.99699608, 0.99841456, 0.49302925],\
+[	-6.27172646, -0.00098257, 0.00060236, 7.27074389, 0.99699704, 0.99841507, 0.49302935],\
+[	-6.27172758, -0.00098226, 0.00060217, 7.27074532, 0.99699799, 0.99841557, 0.49302945],\
+[	-6.27172870, -0.00098195, 0.00060198, 7.27074676, 0.99699894, 0.99841607, 0.49302959],\
+[	-6.27172982, -0.00098163, 0.00060179, 7.27074818, 0.99699990, 0.99841657, 0.49302970],\
+[	-6.27173093, -0.00098132, 0.00060160, 7.27074961, 0.99700085, 0.99841708, 0.49302981],\
+[	-6.27173205, -0.00098101, 0.00060141, 7.27075103, 0.99700180, 0.99841758, 0.49302992],\
+[	-6.27173316, -0.00098070, 0.00060122, 7.27075246, 0.99700275, 0.99841808, 0.49303009],\
+[	-6.27173427, -0.00098039, 0.00060103, 7.27075388, 0.99700370, 0.99841858, 0.49303019],\
+[	-6.27173537, -0.00098008, 0.00060084, 7.27075529, 0.99700465, 0.99841908, 0.49303031],\
+[	-6.27173648, -0.00097977, 0.00060065, 7.27075671, 0.99700560, 0.99841958, 0.49303044],\
+[	-6.27173758, -0.00097946, 0.00060046, 7.27075812, 0.99700655, 0.99842008, 0.49303056],\
+[	-6.27173868, -0.00097915, 0.00060027, 7.27075953, 0.99700749, 0.99842058, 0.49303069],\
+[	-6.27173978, -0.00097884, 0.00060008, 7.27076094, 0.99700844, 0.99842108, 0.49303080],\
+[	-6.27174088, -0.00097853, 0.00059989, 7.27076235, 0.99700939, 0.99842158, 0.49303094],\
+[	-6.27174198, -0.00097822, 0.00059970, 7.27076375, 0.99701033, 0.99842208, 0.49303107],\
+[	-6.27174307, -0.00097791, 0.00059951, 7.27076516, 0.99701128, 0.99842258, 0.49303120],\
+[	-6.27174416, -0.00097761, 0.00059932, 7.27076656, 0.99701222, 0.99842308, 0.49303132],\
+[	-6.27174525, -0.00097730, 0.00059913, 7.27076795, 0.99701317, 0.99842357, 0.49303142],\
+[	-6.27174634, -0.00097699, 0.00059894, 7.27076935, 0.99701411, 0.99842407, 0.49303154],\
+[	-6.27174743, -0.00097668, 0.00059875, 7.27077075, 0.99701505, 0.99842457, 0.49303168],\
+[	-6.27174851, -0.00097637, 0.00059856, 7.27077214, 0.99701599, 0.99842507, 0.49303176],\
+[	-6.27174959, -0.00097606, 0.00059837, 7.27077353, 0.99701693, 0.99842556, 0.49303192],\
+[	-6.27175067, -0.00097576, 0.00059818, 7.27077491, 0.99701788, 0.99842606, 0.49303205],\
+[	-6.27175175, -0.00097545, 0.00059800, 7.27077630, 0.99701882, 0.99842656, 0.49303212],\
+[	-6.27175283, -0.00097514, 0.00059781, 7.27077769, 0.99701976, 0.99842705, 0.49303223],\
+[	-6.27175390, -0.00097484, 0.00059762, 7.27077907, 0.99702070, 0.99842755, 0.49303239],\
+[	-6.27175497, -0.00097453, 0.00059743, 7.27078045, 0.99702163, 0.99842804, 0.49303247],\
+[	-6.27175605, -0.00097422, 0.00059724, 7.27078182, 0.99702257, 0.99842854, 0.49303263],\
+[	-6.27175712, -0.00097392, 0.00059705, 7.27078320, 0.99702351, 0.99842903, 0.49303277],\
+[	-6.27175818, -0.00097361, 0.00059687, 7.27078457, 0.99702445, 0.99842952, 0.49303287],\
+[	-6.27175925, -0.00097330, 0.00059668, 7.27078595, 0.99702538, 0.99843002, 0.49303298],\
+[	-6.27176031, -0.00097300, 0.00059649, 7.27078731, 0.99702632, 0.99843051, 0.49303309],\
+[	-6.27176137, -0.00097269, 0.00059630, 7.27078868, 0.99702725, 0.99843101, 0.49303324],\
+[	-6.27176243, -0.00097239, 0.00059612, 7.27079005, 0.99702819, 0.99843150, 0.49303337],\
+[	-6.27176349, -0.00097208, 0.00059593, 7.27079141, 0.99702912, 0.99843199, 0.49303342],\
+[	-6.27176455, -0.00097178, 0.00059574, 7.27079277, 0.99703005, 0.99843248, 0.49303355],\
+[	-6.27176560, -0.00097147, 0.00059555, 7.27079413, 0.99703099, 0.99843298, 0.49303367],\
+[	-6.27176666, -0.00097117, 0.00059537, 7.27079549, 0.99703192, 0.99843347, 0.49303384],\
+[	-6.27176771, -0.00097086, 0.00059518, 7.27079685, 0.99703285, 0.99843396, 0.49303391],\
+[	-6.27176876, -0.00097056, 0.00059499, 7.27079820, 0.99703378, 0.99843445, 0.49303404],\
+[	-6.27176980, -0.00097025, 0.00059481, 7.27079955, 0.99703471, 0.99843494, 0.49303417],\
+[	-6.27177085, -0.00096995, 0.00059462, 7.27080090, 0.99703564, 0.99843543, 0.49303426],\
+[	-6.27177189, -0.00096965, 0.00059443, 7.27080225, 0.99703657, 0.99843592, 0.49303442],\
+[	-6.27177294, -0.00096934, 0.00059425, 7.27080359, 0.99703750, 0.99843641, 0.49303454],\
+[	-6.27177398, -0.00096904, 0.00059406, 7.27080494, 0.99703843, 0.99843690, 0.49303464],\
+[	-6.27177502, -0.00096874, 0.00059388, 7.27080628, 0.99703936, 0.99843739, 0.49303476],\
+[	-6.27177605, -0.00096843, 0.00059369, 7.27080762, 0.99704028, 0.99843788, 0.49303487],\
+[	-6.27177709, -0.00096813, 0.00059350, 7.27080896, 0.99704121, 0.99843837, 0.49303501],\
+[	-6.27177812, -0.00096783, 0.00059332, 7.27081030, 0.99704213, 0.99843886, 0.49303512],\
+[	-6.27177915, -0.00096752, 0.00059313, 7.27081163, 0.99704306, 0.99843934, 0.49303521],\
+[	-6.27178018, -0.00096722, 0.00059295, 7.27081296, 0.99704398, 0.99843983, 0.49303537],\
+[	-6.27178121, -0.00096692, 0.00059276, 7.27081429, 0.99704491, 0.99844032, 0.49303546],\
+[	-6.27178224, -0.00096662, 0.00059258, 7.27081562, 0.99704583, 0.99844081, 0.49303558],\
+[	-6.27178326, -0.00096632, 0.00059239, 7.27081695, 0.99704675, 0.99844129, 0.49303575],\
+[	-6.27178429, -0.00096602, 0.00059221, 7.27081827, 0.99704768, 0.99844178, 0.49303581],\
+[	-6.27178531, -0.00096571, 0.00059202, 7.27081960, 0.99704860, 0.99844227, 0.49303591],\
+[	-6.27178633, -0.00096541, 0.00059184, 7.27082092, 0.99704952, 0.99844275, 0.49303609],\
+[	-6.27178735, -0.00096511, 0.00059165, 7.27082224, 0.99705044, 0.99844324, 0.49303618],\
+[	-6.27178836, -0.00096481, 0.00059147, 7.27082355, 0.99705136, 0.99844372, 0.49303628],\
+[	-6.27178938, -0.00096451, 0.00059128, 7.27082487, 0.99705228, 0.99844421, 0.49303641],\
+[	-6.27179039, -0.00096421, 0.00059110, 7.27082618, 0.99705320, 0.99844469, 0.49303652],\
+[	-6.27179140, -0.00096391, 0.00059091, 7.27082749, 0.99705412, 0.99844518, 0.49303666],\
+[	-6.27179242, -0.00096361, 0.00059073, 7.27082881, 0.99705503, 0.99844566, 0.49303673],\
+[	-6.27179342, -0.00096331, 0.00059055, 7.27083011, 0.99705595, 0.99844614, 0.49303690],\
+[	-6.27179443, -0.00096301, 0.00059036, 7.27083142, 0.99705687, 0.99844663, 0.49303700],\
+[	-6.27179544, -0.00096271, 0.00059018, 7.27083272, 0.99705778, 0.99844711, 0.49303712],\
+[	-6.27179644, -0.00096241, 0.00058999, 7.27083403, 0.99705870, 0.99844759, 0.49303722],\
+[	-6.27179744, -0.00096211, 0.00058981, 7.27083533, 0.99705961, 0.99844808, 0.49303732],\
+[	-6.27179844, -0.00096181, 0.00058963, 7.27083663, 0.99706053, 0.99844856, 0.49303745],\
+[	-6.27179944, -0.00096152, 0.00058944, 7.27083792, 0.99706144, 0.99844904, 0.49303757],\
+[	-6.27180044, -0.00096122, 0.00058926, 7.27083922, 0.99706235, 0.99844952, 0.49303771],\
+[	-6.27180143, -0.00096092, 0.00058908, 7.27084051, 0.99706327, 0.99845000, 0.49303777],\
+[	-6.27180243, -0.00096062, 0.00058890, 7.27084181, 0.99706418, 0.99845048, 0.49303795],\
+[	-6.27180342, -0.00096032, 0.00058871, 7.27084310, 0.99706509, 0.99845097, 0.49303802],\
+[	-6.27180441, -0.00096002, 0.00058853, 7.27084438, 0.99706600, 0.99845145, 0.49303815],\
+[	-6.27180540, -0.00095973, 0.00058835, 7.27084567, 0.99706691, 0.99845193, 0.49303827],\
+[	-6.27180639, -0.00095943, 0.00058816, 7.27084696, 0.99706782, 0.99845241, 0.49303836],\
+[	-6.27180737, -0.00095913, 0.00058798, 7.27084824, 0.99706873, 0.99845289, 0.49303844],\
+[	-6.27180836, -0.00095884, 0.00058780, 7.27084952, 0.99706964, 0.99845336, 0.49303861],\
+[	-6.27180934, -0.00095854, 0.00058762, 7.27085080, 0.99707055, 0.99845384, 0.49303868],\
+[	-6.27181032, -0.00095824, 0.00058744, 7.27085208, 0.99707145, 0.99845432, 0.49303884],\
+[	-6.27181130, -0.00095795, 0.00058725, 7.27085335, 0.99707236, 0.99845480, 0.49303895],\
+[	-6.27181228, -0.00095765, 0.00058707, 7.27085463, 0.99707327, 0.99845528, 0.49303908],\
+[	-6.27181325, -0.00095735, 0.00058689, 7.27085590, 0.99707417, 0.99845576, 0.49303915],\
+[	-6.27181423, -0.00095706, 0.00058671, 7.27085717, 0.99707508, 0.99845623, 0.49303928],\
+[	-6.27181520, -0.00095676, 0.00058653, 7.27085844, 0.99707598, 0.99845671, 0.49303940],\
+[	-6.27181618, -0.00095647, 0.00058635, 7.27085971, 0.99707689, 0.99845719, 0.49303950],\
+[	-6.27181715, -0.00095617, 0.00058616, 7.27086098, 0.99707779, 0.99845766, 0.49303965],\
+[	-6.27181811, -0.00095588, 0.00058598, 7.27086224, 0.99707869, 0.99845814, 0.49303979],\
+[	-6.27181908, -0.00095558, 0.00058580, 7.27086350, 0.99707960, 0.99845862, 0.49303989],\
+[	-6.27182005, -0.00095529, 0.00058562, 7.27086476, 0.99708050, 0.99845909, 0.49303994],\
+[	-6.27182101, -0.00095499, 0.00058544, 7.27086602, 0.99708140, 0.99845957, 0.49304006],\
+[	-6.27182198, -0.00095470, 0.00058526, 7.27086728, 0.99708230, 0.99846004, 0.49304023],\
+[	-6.27182294, -0.00095440, 0.00058508, 7.27086854, 0.99708320, 0.99846052, 0.49304031],\
+[	-6.27182390, -0.00095411, 0.00058490, 7.27086979, 0.99708410, 0.99846099, 0.49304040],\
+[	-6.27182486, -0.00095381, 0.00058472, 7.27087104, 0.99708500, 0.99846147, 0.49304052],\
+[	-6.27182581, -0.00095352, 0.00058454, 7.27087229, 0.99708590, 0.99846194, 0.49304066],\
+[	-6.27182677, -0.00095323, 0.00058436, 7.27087354, 0.99708680, 0.99846242, 0.49304078],\
+[	-6.27182772, -0.00095293, 0.00058418, 7.27087479, 0.99708769, 0.99846289, 0.49304090],\
+[	-6.27182867, -0.00095264, 0.00058400, 7.27087603, 0.99708859, 0.99846336, 0.49304102],\
+[	-6.27182963, -0.00095235, 0.00058382, 7.27087728, 0.99708949, 0.99846383, 0.49304112],\
+[	-6.27183058, -0.00095205, 0.00058364, 7.27087852, 0.99709038, 0.99846431, 0.49304120],\
+[	-6.27183152, -0.00095176, 0.00058346, 7.27087976, 0.99709128, 0.99846478, 0.49304129],\
+[	-6.27183247, -0.00095147, 0.00058328, 7.27088100, 0.99709217, 0.99846525, 0.49304145],\
+[	-6.27183342, -0.00095118, 0.00058310, 7.27088224, 0.99709307, 0.99846572, 0.49304157],\
+[	-6.27183436, -0.00095088, 0.00058292, 7.27088348, 0.99709396, 0.99846619, 0.49304165],\
+[	-6.27183530, -0.00095059, 0.00058274, 7.27088471, 0.99709485, 0.99846667, 0.49304175],\
+[	-6.27183624, -0.00095030, 0.00058256, 7.27088594, 0.99709575, 0.99846714, 0.49304190],\
+[	-6.27183718, -0.00095001, 0.00058238, 7.27088717, 0.99709664, 0.99846761, 0.49304204],\
+[	-6.27183812, -0.00094972, 0.00058221, 7.27088840, 0.99709753, 0.99846808, 0.49304212],\
+[	-6.27183906, -0.00094943, 0.00058203, 7.27088963, 0.99709842, 0.99846855, 0.49304222],\
+[	-6.27183999, -0.00094914, 0.00058185, 7.27089086, 0.99709931, 0.99846902, 0.49304233],\
+[	-6.27184093, -0.00094884, 0.00058167, 7.27089208, 0.99710020, 0.99846949, 0.49304245],\
+[	-6.27184186, -0.00094855, 0.00058149, 7.27089331, 0.99710109, 0.99846996, 0.49304255],\
+[	-6.27184279, -0.00094826, 0.00058131, 7.27089453, 0.99710198, 0.99847042, 0.49304263],\
+[	-6.27184372, -0.00094797, 0.00058113, 7.27089575, 0.99710287, 0.99847089, 0.49304277],\
+[	-6.27184465, -0.00094768, 0.00058096, 7.27089697, 0.99710375, 0.99847136, 0.49304288],\
+[	-6.27184558, -0.00094739, 0.00058078, 7.27089818, 0.99710464, 0.99847183, 0.49304302],\
+[	-6.27184650, -0.00094710, 0.00058060, 7.27089940, 0.99710553, 0.99847230, 0.49304309],\
+[	-6.27184743, -0.00094681, 0.00058042, 7.27090061, 0.99710641, 0.99847276, 0.49304322],\
+[	-6.27184835, -0.00094652, 0.00058025, 7.27090182, 0.99710730, 0.99847323, 0.49304332],\
+[	-6.27184927, -0.00094623, 0.00058007, 7.27090304, 0.99710818, 0.99847370, 0.49304348],\
+[	-6.27185019, -0.00094595, 0.00057989, 7.27090424, 0.99710907, 0.99847416, 0.49304351],\
+[	-6.27185111, -0.00094566, 0.00057971, 7.27090545, 0.99710995, 0.99847463, 0.49304363],\
+[	-6.27185203, -0.00094537, 0.00057954, 7.27090666, 0.99711083, 0.99847510, 0.49304378],\
+[	-6.27185294, -0.00094508, 0.00057936, 7.27090786, 0.99711172, 0.99847556, 0.49304390],\
+[	-6.27185386, -0.00094479, 0.00057918, 7.27090907, 0.99711260, 0.99847603, 0.49304399],\
+[	-6.27185477, -0.00094450, 0.00057901, 7.27091027, 0.99711348, 0.99847649, 0.49304412],\
+[	-6.27185568, -0.00094421, 0.00057883, 7.27091147, 0.99711436, 0.99847696, 0.49304419],\
+[	-6.27185659, -0.00094393, 0.00057865, 7.27091267, 0.99711524, 0.99847742, 0.49304433],\
+[	-6.27185750, -0.00094364, 0.00057848, 7.27091386, 0.99711612, 0.99847789, 0.49304445],\
+[	-6.27185841, -0.00094335, 0.00057830, 7.27091506, 0.99711700, 0.99847835, 0.49304453],\
+[	-6.27185932, -0.00094306, 0.00057812, 7.27091625, 0.99711788, 0.99847881, 0.49304463],\
+[	-6.27186022, -0.00094278, 0.00057795, 7.27091745, 0.99711876, 0.99847928, 0.49304471],\
+[	-6.27186113, -0.00094249, 0.00057777, 7.27091864, 0.99711964, 0.99847974, 0.49304488],\
+[	-6.27186203, -0.00094220, 0.00057759, 7.27091983, 0.99712051, 0.99848020, 0.49304496],\
+[	-6.27186293, -0.00094192, 0.00057742, 7.27092101, 0.99712139, 0.99848067, 0.49304509],\
+[	-6.27186383, -0.00094163, 0.00057724, 7.27092220, 0.99712227, 0.99848113, 0.49304521],\
+[	-6.27186473, -0.00094134, 0.00057707, 7.27092339, 0.99712314, 0.99848159, 0.49304528],\
+[	-6.27186563, -0.00094106, 0.00057689, 7.27092457, 0.99712402, 0.99848205, 0.49304542],\
+[	-6.27186652, -0.00094077, 0.00057672, 7.27092575, 0.99712489, 0.99848251, 0.49304552],\
+[	-6.27186742, -0.00094049, 0.00057654, 7.27092693, 0.99712577, 0.99848297, 0.49304562],\
+[	-6.27186831, -0.00094020, 0.00057636, 7.27092811, 0.99712664, 0.99848344, 0.49304571],\
+[	-6.27186920, -0.00093991, 0.00057619, 7.27092929, 0.99712751, 0.99848390, 0.49304585],\
+[	-6.27187010, -0.00093963, 0.00057601, 7.27093047, 0.99712839, 0.99848436, 0.49304595],\
+[	-6.27187098, -0.00093934, 0.00057584, 7.27093164, 0.99712926, 0.99848482, 0.49304606],\
+[	-6.27187187, -0.00093906, 0.00057567, 7.27093281, 0.99713013, 0.99848528, 0.49304619],\
+[	-6.27187276, -0.00093877, 0.00057549, 7.27093399, 0.99713100, 0.99848574, 0.49304625],\
+[	-6.27187365, -0.00093849, 0.00057532, 7.27093516, 0.99713187, 0.99848619, 0.49304638],\
+[	-6.27187453, -0.00093821, 0.00057514, 7.27093633, 0.99713274, 0.99848665, 0.49304650],\
+[	-6.27187541, -0.00093792, 0.00057497, 7.27093749, 0.99713361, 0.99848711, 0.49304662],\
+[	-6.27187630, -0.00093764, 0.00057479, 7.27093866, 0.99713448, 0.99848757, 0.49304675],\
+[	-6.27187718, -0.00093735, 0.00057462, 7.27093983, 0.99713535, 0.99848803, 0.49304680],\
+[	-6.27187806, -0.00093707, 0.00057444, 7.27094099, 0.99713622, 0.99848849, 0.49304696],\
+[	-6.27187894, -0.00093679, 0.00057427, 7.27094215, 0.99713708, 0.99848894, 0.49304701],\
+[	-6.27187981, -0.00093650, 0.00057410, 7.27094331, 0.99713795, 0.99848940, 0.49304717],\
+[	-6.27188069, -0.00093622, 0.00057392, 7.27094447, 0.99713882, 0.99848986, 0.49304726],\
+[	-6.27188156, -0.00093594, 0.00057375, 7.27094563, 0.99713968, 0.99849031, 0.49304734],\
+[	-6.27188244, -0.00093565, 0.00057358, 7.27094678, 0.99714055, 0.99849077, 0.49304749],\
+[	-6.27188331, -0.00093537, 0.00057340, 7.27094794, 0.99714141, 0.99849123, 0.49304756],\
+[	-6.27188418, -0.00093509, 0.00057323, 7.27094909, 0.99714228, 0.99849168, 0.49304769],\
+[	-6.27188505, -0.00093481, 0.00057306, 7.27095025, 0.99714314, 0.99849214, 0.49304781],\
+[	-6.27188592, -0.00093452, 0.00057288, 7.27095140, 0.99714400, 0.99849259, 0.49304789],\
+[	-6.27188679, -0.00093424, 0.00057271, 7.27095255, 0.99714486, 0.99849305, 0.49304797],\
+[	-6.27188765, -0.00093396, 0.00057254, 7.27095369, 0.99714573, 0.99849350, 0.49304811],\
+[	-6.27188852, -0.00093368, 0.00057236, 7.27095484, 0.99714659, 0.99849396, 0.49304819],\
+[	-6.27188938, -0.00093340, 0.00057219, 7.27095599, 0.99714745, 0.99849441, 0.49304832],\
+[	-6.27189025, -0.00093312, 0.00057202, 7.27095713, 0.99714831, 0.99849487, 0.49304841],\
+[	-6.27189111, -0.00093283, 0.00057185, 7.27095827, 0.99714917, 0.99849532, 0.49304852],\
+[	-6.27189197, -0.00093255, 0.00057167, 7.27095942, 0.99715003, 0.99849577, 0.49304861],\
+[	-6.27189283, -0.00093227, 0.00057150, 7.27096056, 0.99715089, 0.99849623, 0.49304875],\
+[	-6.27189369, -0.00093199, 0.00057133, 7.27096169, 0.99715175, 0.99849668, 0.49304884],\
+[	-6.27189454, -0.00093171, 0.00057116, 7.27096283, 0.99715260, 0.99849713, 0.49304894],\
+[	-6.27189540, -0.00093143, 0.00057098, 7.27096397, 0.99715346, 0.99849758, 0.49304909],\
+[	-6.27189625, -0.00093115, 0.00057081, 7.27096510, 0.99715432, 0.99849804, 0.49304918],\
+[	-6.27189711, -0.00093087, 0.00057064, 7.27096624, 0.99715517, 0.99849849, 0.49304926],\
+[	-6.27189796, -0.00093059, 0.00057047, 7.27096737, 0.99715603, 0.99849894, 0.49304941],\
+[	-6.27189881, -0.00093031, 0.00057030, 7.27096850, 0.99715689, 0.99849939, 0.49304950],\
+[	-6.27189966, -0.00093003, 0.00057013, 7.27096963, 0.99715774, 0.99849984, 0.49304958],\
+[	-6.27190051, -0.00092975, 0.00056995, 7.27097076, 0.99715860, 0.99850029, 0.49304964],\
+[	-6.27190136, -0.00092947, 0.00056978, 7.27097188, 0.99715945, 0.99850074, 0.49304982],\
+[	-6.27190220, -0.00092919, 0.00056961, 7.27097301, 0.99716030, 0.99850119, 0.49304989],\
+[	-6.27190305, -0.00092892, 0.00056944, 7.27097413, 0.99716115, 0.99850164, 0.49305004],\
+[	-6.27190389, -0.00092864, 0.00056927, 7.27097525, 0.99716201, 0.99850209, 0.49305011],\
+[	-6.27190474, -0.00092836, 0.00056910, 7.27097638, 0.99716286, 0.99850254, 0.49305025],\
+[	-6.27190558, -0.00092808, 0.00056893, 7.27097750, 0.99716371, 0.99850299, 0.49305033],\
+[	-6.27190642, -0.00092780, 0.00056876, 7.27097862, 0.99716456, 0.99850344, 0.49305045],\
+[	-6.27190726, -0.00092752, 0.00056859, 7.27097973, 0.99716541, 0.99850389, 0.49305056],\
+[	-6.27190810, -0.00092725, 0.00056842, 7.27098085, 0.99716626, 0.99850434, 0.49305065],\
+[	-6.27190893, -0.00092697, 0.00056825, 7.27098197, 0.99716711, 0.99850478, 0.49305076],\
+[	-6.27190977, -0.00092669, 0.00056808, 7.27098308, 0.99716796, 0.99850523, 0.49305085],\
+[	-6.27191061, -0.00092641, 0.00056791, 7.27098419, 0.99716881, 0.99850568, 0.49305094],\
+[	-6.27191144, -0.00092614, 0.00056774, 7.27098530, 0.99716965, 0.99850613, 0.49305108],\
+[	-6.27191227, -0.00092586, 0.00056757, 7.27098641, 0.99717050, 0.99850657, 0.49305115],\
+[	-6.27191311, -0.00092558, 0.00056740, 7.27098752, 0.99717135, 0.99850702, 0.49305125],\
+[	-6.27191394, -0.00092531, 0.00056723, 7.27098863, 0.99717219, 0.99850747, 0.49305139],\
+[	-6.27191477, -0.00092503, 0.00056706, 7.27098974, 0.99717304, 0.99850791, 0.49305148],\
+[	-6.27191559, -0.00092475, 0.00056689, 7.27099084, 0.99717389, 0.99850836, 0.49305158],\
+[	-6.27191642, -0.00092448, 0.00056672, 7.27099194, 0.99717473, 0.99850880, 0.49305167],\
+[	-6.27191725, -0.00092420, 0.00056655, 7.27099305, 0.99717557, 0.99850925, 0.49305181],\
+[	-6.27191807, -0.00092393, 0.00056638, 7.27099415, 0.99717642, 0.99850969, 0.49305190],\
+[	-6.27191890, -0.00092365, 0.00056621, 7.27099525, 0.99717726, 0.99851014, 0.49305201],\
+[	-6.27191972, -0.00092338, 0.00056604, 7.27099635, 0.99717810, 0.99851058, 0.49305208],\
+[	-6.27192054, -0.00092310, 0.00056587, 7.27099744, 0.99717895, 0.99851103, 0.49305223],\
+[	-6.27192136, -0.00092282, 0.00056570, 7.27099854, 0.99717979, 0.99851147, 0.49305232],\
+[	-6.27192218, -0.00092255, 0.00056553, 7.27099964, 0.99718063, 0.99851192, 0.49305243],\
+[	-6.27192300, -0.00092227, 0.00056537, 7.27100073, 0.99718147, 0.99851236, 0.49305250],\
+[	-6.27192382, -0.00092200, 0.00056520, 7.27100182, 0.99718231, 0.99851280, 0.49305258],\
+[	-6.27192464, -0.00092173, 0.00056503, 7.27100291, 0.99718315, 0.99851325, 0.49305275],\
+[	-6.27192545, -0.00092145, 0.00056486, 7.27100400, 0.99718399, 0.99851369, 0.49305278],\
+[	-6.27192627, -0.00092118, 0.00056469, 7.27100509, 0.99718483, 0.99851413, 0.49305295],\
+[	-6.27192708, -0.00092090, 0.00056452, 7.27100618, 0.99718566, 0.99851457, 0.49305299],\
+[	-6.27192790, -0.00092063, 0.00056436, 7.27100727, 0.99718650, 0.99851502, 0.49305314],\
+[	-6.27192871, -0.00092036, 0.00056419, 7.27100835, 0.99718734, 0.99851546, 0.49305323],\
+[	-6.27192952, -0.00092008, 0.00056402, 7.27100944, 0.99718818, 0.99851590, 0.49305333],\
+[	-6.27193033, -0.00091981, 0.00056385, 7.27101052, 0.99718901, 0.99851634, 0.49305345],\
+[	-6.27193114, -0.00091954, 0.00056368, 7.27101160, 0.99718985, 0.99851678, 0.49305349],\
+[	-6.27193194, -0.00091926, 0.00056352, 7.27101268, 0.99719068, 0.99851722, 0.49305365],\
+[	-6.27193275, -0.00091899, 0.00056335, 7.27101376, 0.99719152, 0.99851766, 0.49305371],\
+[	-6.27193356, -0.00091872, 0.00056318, 7.27101484, 0.99719235, 0.99851810, 0.49305382],\
+[	-6.27193436, -0.00091844, 0.00056301, 7.27101592, 0.99719318, 0.99851854, 0.49305392],\
+[	-6.27193516, -0.00091817, 0.00056285, 7.27101699, 0.99719402, 0.99851898, 0.49305400],\
+[	-6.27193597, -0.00091790, 0.00056268, 7.27101807, 0.99719485, 0.99851942, 0.49305415],\
+[	-6.27193677, -0.00091763, 0.00056251, 7.27101914, 0.99719568, 0.99851986, 0.49305427],\
+[	-6.27193757, -0.00091736, 0.00056235, 7.27102021, 0.99719651, 0.99852030, 0.49305437],\
+[	-6.27193837, -0.00091708, 0.00056218, 7.27102128, 0.99719735, 0.99852074, 0.49305443],\
+[	-6.27193917, -0.00091681, 0.00056201, 7.27102235, 0.99719818, 0.99852117, 0.49305458],\
+[	-6.27193996, -0.00091654, 0.00056185, 7.27102342, 0.99719901, 0.99852161, 0.49305464],\
+[	-6.27194076, -0.00091627, 0.00056168, 7.27102449, 0.99719984, 0.99852205, 0.49305472],\
+[	-6.27194155, -0.00091600, 0.00056151, 7.27102556, 0.99720066, 0.99852249, 0.49305485],\
+[	-6.27194235, -0.00091573, 0.00056135, 7.27102662, 0.99720149, 0.99852292, 0.49305488],\
+[	-6.27194314, -0.00091546, 0.00056118, 7.27102769, 0.99720232, 0.99852336, 0.49305501],\
+[	-6.27194394, -0.00091519, 0.00056102, 7.27102875, 0.99720315, 0.99852380, 0.49305520],\
+[	-6.27194473, -0.00091492, 0.00056085, 7.27102981, 0.99720398, 0.99852423, 0.49305527],\
+[	-6.27194552, -0.00091465, 0.00056068, 7.27103087, 0.99720480, 0.99852467, 0.49305537],\
+[	-6.27194631, -0.00091438, 0.00056052, 7.27103193, 0.99720563, 0.99852511, 0.49305541],\
+[	-6.27194710, -0.00091411, 0.00056035, 7.27103299, 0.99720646, 0.99852554, 0.49305558],\
+[	-6.27194788, -0.00091384, 0.00056019, 7.27103405, 0.99720728, 0.99852598, 0.49305568],\
+[	-6.27194867, -0.00091357, 0.00056002, 7.27103510, 0.99720811, 0.99852641, 0.49305582],\
+[	-6.27194946, -0.00091330, 0.00055986, 7.27103616, 0.99720893, 0.99852685, 0.49305585],\
+[	-6.27195024, -0.00091303, 0.00055969, 7.27103721, 0.99720975, 0.99852728, 0.49305599],\
+[	-6.27195102, -0.00091276, 0.00055953, 7.27103827, 0.99721058, 0.99852772, 0.49305606],\
+[	-6.27195181, -0.00091249, 0.00055936, 7.27103932, 0.99721140, 0.99852815, 0.49305614],\
+[	-6.27195259, -0.00091222, 0.00055920, 7.27104037, 0.99721222, 0.99852858, 0.49305629],\
+[	-6.27195337, -0.00091195, 0.00055903, 7.27104142, 0.99721304, 0.99852902, 0.49305636],\
+[	-6.27195415, -0.00091168, 0.00055887, 7.27104247, 0.99721387, 0.99852945, 0.49305643],\
+[	-6.27195493, -0.00091141, 0.00055870, 7.27104351, 0.99721469, 0.99852988, 0.49305655],\
+[	-6.27195571, -0.00091115, 0.00055854, 7.27104456, 0.99721551, 0.99853032, 0.49305663],\
+[	-6.27195648, -0.00091088, 0.00055837, 7.27104561, 0.99721633, 0.99853075, 0.49305679],\
+[	-6.27195726, -0.00091061, 0.00055821, 7.27104665, 0.99721715, 0.99853118, 0.49305682],\
+[	-6.27195803, -0.00091034, 0.00055804, 7.27104769, 0.99721796, 0.99853161, 0.49305696],\
+[	-6.27195881, -0.00091007, 0.00055788, 7.27104873, 0.99721878, 0.99853205, 0.49305711],\
+[	-6.27195958, -0.00090981, 0.00055771, 7.27104978, 0.99721960, 0.99853248, 0.49305719],\
+[	-6.27196035, -0.00090954, 0.00055755, 7.27105081, 0.99722042, 0.99853291, 0.49305721],\
+[	-6.27196113, -0.00090927, 0.00055739, 7.27105185, 0.99722124, 0.99853334, 0.49305736],\
+[	-6.27196190, -0.00090901, 0.00055722, 7.27105289, 0.99722205, 0.99853377, 0.49305741],\
+[	-6.27196267, -0.00090874, 0.00055706, 7.27105393, 0.99722287, 0.99853420, 0.49305756],\
+[	-6.27196344, -0.00090847, 0.00055690, 7.27105496, 0.99722368, 0.99853463, 0.49305766],\
+[	-6.27196420, -0.00090821, 0.00055673, 7.27105600, 0.99722450, 0.99853506, 0.49305779],\
+[	-6.27196497, -0.00090794, 0.00055657, 7.27105703, 0.99722531, 0.99853549, 0.49305788],\
+[	-6.27196574, -0.00090767, 0.00055641, 7.27105806, 0.99722613, 0.99853592, 0.49305797],\
+[	-6.27196650, -0.00090741, 0.00055624, 7.27105909, 0.99722694, 0.99853635, 0.49305806],\
+[	-6.27196726, -0.00090714, 0.00055608, 7.27106012, 0.99722776, 0.99853678, 0.49305817],\
+[	-6.27196803, -0.00090688, 0.00055592, 7.27106115, 0.99722857, 0.99853721, 0.49305825],\
+[	-6.27196879, -0.00090661, 0.00055575, 7.27106218, 0.99722938, 0.99853764, 0.49305840],\
+[	-6.27196955, -0.00090634, 0.00055559, 7.27106321, 0.99723019, 0.99853807, 0.49305847],\
+[	-6.27197031, -0.00090608, 0.00055543, 7.27106423, 0.99723100, 0.99853849, 0.49305859],\
+[	-6.27197107, -0.00090581, 0.00055526, 7.27106526, 0.99723181, 0.99853892, 0.49305865],\
+[	-6.27197183, -0.00090555, 0.00055510, 7.27106628, 0.99723262, 0.99853935, 0.49305875],\
+[	-6.27197259, -0.00090528, 0.00055494, 7.27106730, 0.99723343, 0.99853978, 0.49305889],\
+[	-6.27197335, -0.00090502, 0.00055478, 7.27106833, 0.99723424, 0.99854020, 0.49305896],\
+[	-6.27197410, -0.00090476, 0.00055461, 7.27106935, 0.99723505, 0.99854063, 0.49305906],\
+[	-6.27197486, -0.00090449, 0.00055445, 7.27107037, 0.99723586, 0.99854106, 0.49305911],\
+[	-6.27197561, -0.00090423, 0.00055429, 7.27107138, 0.99723667, 0.99854148, 0.49305929],\
+[	-6.27197637, -0.00090396, 0.00055413, 7.27107240, 0.99723748, 0.99854191, 0.49305933],\
+[	-6.27197712, -0.00090370, 0.00055397, 7.27107342, 0.99723828, 0.99854233, 0.49305943],\
+[	-6.27197787, -0.00090344, 0.00055380, 7.27107443, 0.99723909, 0.99854276, 0.49305954],\
+[	-6.27197862, -0.00090317, 0.00055364, 7.27107545, 0.99723990, 0.99854319, 0.49305965],\
+[	-6.27197937, -0.00090291, 0.00055348, 7.27107646, 0.99724070, 0.99854361, 0.49305972],\
+[	-6.27198012, -0.00090264, 0.00055332, 7.27107748, 0.99724151, 0.99854404, 0.49305986],\
+[	-6.27198087, -0.00090238, 0.00055316, 7.27107849, 0.99724231, 0.99854446, 0.49305996],\
+[	-6.27198162, -0.00090212, 0.00055300, 7.27107950, 0.99724312, 0.99854488, 0.49306003],\
+[	-6.27198236, -0.00090186, 0.00055284, 7.27108051, 0.99724392, 0.99854531, 0.49306014],\
+[	-6.27198311, -0.00090159, 0.00055267, 7.27108151, 0.99724472, 0.99854573, 0.49306027],\
+[	-6.27198385, -0.00090133, 0.00055251, 7.27108252, 0.99724553, 0.99854616, 0.49306036],\
+[	-6.27198460, -0.00090107, 0.00055235, 7.27108353, 0.99724633, 0.99854658, 0.49306043],\
+[	-6.27198534, -0.00090081, 0.00055219, 7.27108453, 0.99724713, 0.99854700, 0.49306047],\
+[	-6.27198608, -0.00090054, 0.00055203, 7.27108554, 0.99724793, 0.99854742, 0.49306066],\
+[	-6.27198682, -0.00090028, 0.00055187, 7.27108654, 0.99724873, 0.99854785, 0.49306072],\
+[	-6.27198756, -0.00090002, 0.00055171, 7.27108754, 0.99724953, 0.99854827, 0.49306079],\
+[	-6.27198830, -0.00089976, 0.00055155, 7.27108855, 0.99725033, 0.99854869, 0.49306090],\
+[	-6.27198904, -0.00089950, 0.00055139, 7.27108955, 0.99725113, 0.99854911, 0.49306100],\
+[	-6.27198978, -0.00089924, 0.00055123, 7.27109054, 0.99725193, 0.99854954, 0.49306107],\
+[	-6.27199052, -0.00089898, 0.00055107, 7.27109154, 0.99725273, 0.99854996, 0.49306122],\
+[	-6.27199126, -0.00089871, 0.00055091, 7.27109254, 0.99725353, 0.99855038, 0.49306129],\
+[	-6.27199199, -0.00089845, 0.00055075, 7.27109354, 0.99725433, 0.99855080, 0.49306135],\
+[	-6.27199273, -0.00089819, 0.00055059, 7.27109453, 0.99725512, 0.99855122, 0.49306146],\
+[	-6.27199346, -0.00089793, 0.00055043, 7.27109553, 0.99725592, 0.99855164, 0.49306163],\
+[	-6.27199419, -0.00089767, 0.00055027, 7.27109652, 0.99725672, 0.99855206, 0.49306163],\
+[	-6.27199493, -0.00089741, 0.00055011, 7.27109751, 0.99725751, 0.99855248, 0.49306178],\
+[	-6.27199566, -0.00089715, 0.00054995, 7.27109851, 0.99725831, 0.99855290, 0.49306188],\
+[	-6.27199639, -0.00089689, 0.00054979, 7.27109950, 0.99725910, 0.99855332, 0.49306196],\
+[	-6.27199712, -0.00089663, 0.00054963, 7.27110049, 0.99725990, 0.99855374, 0.49306206],\
+[	-6.27199785, -0.00089637, 0.00054947, 7.27110147, 0.99726069, 0.99855416, 0.49306218],\
+[	-6.27199857, -0.00089611, 0.00054931, 7.27110246, 0.99726149, 0.99855458, 0.49306227],\
+[	-6.27199930, -0.00089585, 0.00054915, 7.27110345, 0.99726228, 0.99855499, 0.49306238],\
+[	-6.27200003, -0.00089559, 0.00054899, 7.27110443, 0.99726307, 0.99855541, 0.49306244],\
+[	-6.27200076, -0.00089534, 0.00054883, 7.27110542, 0.99726386, 0.99855583, 0.49306254],\
+[	-6.27200148, -0.00089508, 0.00054868, 7.27110640, 0.99726465, 0.99855625, 0.49306260],\
+[	-6.27200220, -0.00089482, 0.00054852, 7.27110739, 0.99726545, 0.99855667, 0.49306270],\
+[	-6.27200293, -0.00089456, 0.00054836, 7.27110837, 0.99726624, 0.99855708, 0.49306284],\
+[	-6.27200365, -0.00089430, 0.00054820, 7.27110935, 0.99726703, 0.99855750, 0.49306289],\
+[	-6.27200437, -0.00089404, 0.00054804, 7.27111033, 0.99726782, 0.99855792, 0.49306299],\
+[	-6.27200509, -0.00089378, 0.00054788, 7.27111131, 0.99726861, 0.99855833, 0.49306315],\
+[	-6.27200581, -0.00089353, 0.00054772, 7.27111229, 0.99726940, 0.99855875, 0.49306325],\
+[	-6.27200653, -0.00089327, 0.00054757, 7.27111326, 0.99727018, 0.99855916, 0.49306334],\
+[	-6.27200725, -0.00089301, 0.00054741, 7.27111424, 0.99727097, 0.99855958, 0.49306342],\
+[	-6.27200797, -0.00089275, 0.00054725, 7.27111522, 0.99727176, 0.99856000, 0.49306348],\
+[	-6.27200869, -0.00089250, 0.00054709, 7.27111619, 0.99727255, 0.99856041, 0.49306360],\
+[	-6.27200940, -0.00089224, 0.00054693, 7.27111717, 0.99727333, 0.99856083, 0.49306368],\
+[	-6.27201012, -0.00089198, 0.00054678, 7.27111814, 0.99727412, 0.99856124, 0.49306382],\
+[	-6.27201083, -0.00089172, 0.00054662, 7.27111911, 0.99727491, 0.99856166, 0.49306389],\
+[	-6.27201155, -0.00089147, 0.00054646, 7.27112008, 0.99727569, 0.99856207, 0.49306395],\
+[	-6.27201226, -0.00089121, 0.00054630, 7.27112105, 0.99727648, 0.99856248, 0.49306405],\
+[	-6.27201297, -0.00089095, 0.00054615, 7.27112202, 0.99727726, 0.99856290, 0.49306415],\
+[	-6.27201369, -0.00089070, 0.00054599, 7.27112299, 0.99727804, 0.99856331, 0.49306425],\
+[	-6.27201440, -0.00089044, 0.00054583, 7.27112395, 0.99727883, 0.99856373, 0.49306438],\
+[	-6.27201511, -0.00089019, 0.00054568, 7.27112492, 0.99727961, 0.99856414, 0.49306445],\
+[	-6.27201582, -0.00088993, 0.00054552, 7.27112589, 0.99728039, 0.99856455, 0.49306454],\
+[	-6.27201653, -0.00088967, 0.00054536, 7.27112685, 0.99728118, 0.99856496, 0.49306460],\
+[	-6.27201723, -0.00088942, 0.00054520, 7.27112782, 0.99728196, 0.99856538, 0.49306473],\
+[	-6.27201794, -0.00088916, 0.00054505, 7.27112878, 0.99728274, 0.99856579, 0.49306481],\
+[	-6.27201865, -0.00088891, 0.00054489, 7.27112974, 0.99728352, 0.99856620, 0.49306490],\
+[	-6.27201935, -0.00088865, 0.00054473, 7.27113070, 0.99728430, 0.99856661, 0.49306499],\
+[	-6.27202006, -0.00088840, 0.00054458, 7.27113166, 0.99728508, 0.99856702, 0.49306507],\
+[	-6.27202076, -0.00088814, 0.00054442, 7.27113262, 0.99728586, 0.99856744, 0.49306519],\
+[	-6.27202147, -0.00088789, 0.00054427, 7.27113358, 0.99728664, 0.99856785, 0.49306522],\
+[	-6.27202217, -0.00088763, 0.00054411, 7.27113454, 0.99728742, 0.99856826, 0.49306541],\
+[	-6.27202287, -0.00088738, 0.00054395, 7.27113549, 0.99728820, 0.99856867, 0.49306548],\
+[	-6.27202357, -0.00088713, 0.00054380, 7.27113645, 0.99728897, 0.99856908, 0.49306558],\
+[	-6.27202427, -0.00088687, 0.00054364, 7.27113740, 0.99728975, 0.99856949, 0.49306563],\
+[	-6.27202497, -0.00088662, 0.00054349, 7.27113836, 0.99729053, 0.99856990, 0.49306575],\
+[	-6.27202567, -0.00088636, 0.00054333, 7.27113931, 0.99729130, 0.99857031, 0.49306582],\
+[	-6.27202637, -0.00088611, 0.00054317, 7.27114026, 0.99729208, 0.99857072, 0.49306593],\
+[	-6.27202707, -0.00088586, 0.00054302, 7.27114121, 0.99729285, 0.99857113, 0.49306602],\
+[	-6.27202777, -0.00088560, 0.00054286, 7.27114216, 0.99729363, 0.99857153, 0.49306615],\
+[	-6.27202846, -0.00088535, 0.00054271, 7.27114311, 0.99729440, 0.99857194, 0.49306620],\
+[	-6.27202916, -0.00088510, 0.00054255, 7.27114406, 0.99729518, 0.99857235, 0.49306631],\
+[	-6.27202985, -0.00088484, 0.00054240, 7.27114501, 0.99729595, 0.99857276, 0.49306638],\
+[	-6.27203055, -0.00088459, 0.00054224, 7.27114596, 0.99729673, 0.99857317, 0.49306650],\
+[	-6.27203124, -0.00088434, 0.00054209, 7.27114690, 0.99729750, 0.99857358, 0.49306661],\
+[	-6.27203193, -0.00088409, 0.00054193, 7.27114785, 0.99729827, 0.99857398, 0.49306664],\
+[	-6.27203262, -0.00088383, 0.00054178, 7.27114879, 0.99729904, 0.99857439, 0.49306674],\
+[	-6.27203332, -0.00088358, 0.00054162, 7.27114973, 0.99729981, 0.99857480, 0.49306687],\
+[	-6.27203401, -0.00088333, 0.00054147, 7.27115068, 0.99730059, 0.99857520, 0.49306699],\
+[	-6.27203470, -0.00088308, 0.00054131, 7.27115162, 0.99730136, 0.99857561, 0.49306701],\
+[	-6.27203539, -0.00088282, 0.00054116, 7.27115256, 0.99730213, 0.99857602, 0.49306713],\
+[	-6.27203607, -0.00088257, 0.00054100, 7.27115350, 0.99730290, 0.99857642, 0.49306721],\
+[	-6.27203676, -0.00088232, 0.00054085, 7.27115444, 0.99730366, 0.99857683, 0.49306728],\
+[	-6.27203745, -0.00088207, 0.00054069, 7.27115538, 0.99730443, 0.99857724, 0.49306742],\
+[	-6.27203813, -0.00088182, 0.00054054, 7.27115632, 0.99730520, 0.99857764, 0.49306753],\
+[	-6.27203882, -0.00088157, 0.00054039, 7.27115725, 0.99730597, 0.99857805, 0.49306761],\
+[	-6.27203950, -0.00088132, 0.00054023, 7.27115819, 0.99730674, 0.99857845, 0.49306769],\
+[	-6.27204019, -0.00088107, 0.00054008, 7.27115912, 0.99730750, 0.99857886, 0.49306776],\
+[	-6.27204087, -0.00088082, 0.00053992, 7.27116006, 0.99730827, 0.99857926, 0.49306785],\
+[	-6.27204156, -0.00088056, 0.00053977, 7.27116099, 0.99730904, 0.99857966, 0.49306801],\
+[	-6.27204224, -0.00088031, 0.00053962, 7.27116192, 0.99730980, 0.99858007, 0.49306813],\
+[	-6.27204292, -0.00088006, 0.00053946, 7.27116286, 0.99731057, 0.99858047, 0.49306816],\
+[	-6.27204360, -0.00087981, 0.00053931, 7.27116379, 0.99731133, 0.99858088, 0.49306827],\
+[	-6.27204428, -0.00087956, 0.00053916, 7.27116472, 0.99731210, 0.99858128, 0.49306833],\
+[	-6.27204496, -0.00087931, 0.00053900, 7.27116565, 0.99731286, 0.99858168, 0.49306842],\
+[	-6.27204564, -0.00087906, 0.00053885, 7.27116657, 0.99731363, 0.99858209, 0.49306852],\
+[	-6.27204632, -0.00087881, 0.00053870, 7.27116750, 0.99731439, 0.99858249, 0.49306865],\
+[	-6.27204699, -0.00087857, 0.00053854, 7.27116843, 0.99731515, 0.99858289, 0.49306872],\
+[	-6.27204767, -0.00087832, 0.00053839, 7.27116935, 0.99731591, 0.99858329, 0.49306875],\
+[	-6.27204835, -0.00087807, 0.00053824, 7.27117028, 0.99731668, 0.99858369, 0.49306889],\
+[	-6.27204902, -0.00087782, 0.00053809, 7.27117120, 0.99731744, 0.99858410, 0.49306899],\
+[	-6.27204970, -0.00087757, 0.00053793, 7.27117213, 0.99731820, 0.99858450, 0.49306909],\
+[	-6.27205037, -0.00087732, 0.00053778, 7.27117305, 0.99731896, 0.99858490, 0.49306915],\
+[	-6.27205104, -0.00087707, 0.00053763, 7.27117397, 0.99731972, 0.99858530, 0.49306931],\
+[	-6.27205172, -0.00087682, 0.00053748, 7.27117489, 0.99732048, 0.99858570, 0.49306931],\
+[	-6.27205239, -0.00087658, 0.00053732, 7.27117581, 0.99732124, 0.99858610, 0.49306947],\
+[	-6.27205306, -0.00087633, 0.00053717, 7.27117673, 0.99732200, 0.99858650, 0.49306949],\
+[	-6.27205373, -0.00087608, 0.00053702, 7.27117765, 0.99732276, 0.99858690, 0.49306961],\
+[	-6.27205440, -0.00087583, 0.00053687, 7.27117857, 0.99732351, 0.99858730, 0.49306974],\
+[	-6.27205507, -0.00087558, 0.00053671, 7.27117949, 0.99732427, 0.99858770, 0.49306982],\
+[	-6.27205574, -0.00087534, 0.00053656, 7.27118040, 0.99732503, 0.99858810, 0.49306986],\
+[	-6.27205641, -0.00087509, 0.00053641, 7.27118132, 0.99732579, 0.99858850, 0.49306997],\
+[	-6.27205707, -0.00087484, 0.00053626, 7.27118223, 0.99732654, 0.99858890, 0.49307002],\
+[	-6.27205774, -0.00087459, 0.00053611, 7.27118315, 0.99732730, 0.99858930, 0.49307020],\
+[	-6.27205841, -0.00087435, 0.00053596, 7.27118406, 0.99732805, 0.99858970, 0.49307021],\
+[	-6.27205907, -0.00087410, 0.00053580, 7.27118497, 0.99732881, 0.99859010, 0.49307035],\
+[	-6.27205974, -0.00087385, 0.00053565, 7.27118588, 0.99732956, 0.99859049, 0.49307047],\
+[	-6.27206040, -0.00087361, 0.00053550, 7.27118679, 0.99733032, 0.99859089, 0.49307051],\
+[	-6.27206106, -0.00087336, 0.00053535, 7.27118770, 0.99733107, 0.99859129, 0.49307062],\
+[	-6.27206173, -0.00087311, 0.00053520, 7.27118861, 0.99733182, 0.99859169, 0.49307069],\
+[	-6.27206239, -0.00087287, 0.00053505, 7.27118952, 0.99733258, 0.99859208, 0.49307080],\
+[	-6.27206305, -0.00087262, 0.00053490, 7.27119043, 0.99733333, 0.99859248, 0.49307089],\
+[	-6.27206371, -0.00087238, 0.00053475, 7.27119134, 0.99733408, 0.99859288, 0.49307096],\
+[	-6.27206437, -0.00087213, 0.00053460, 7.27119224, 0.99733483, 0.99859327, 0.49307103],\
+[	-6.27206503, -0.00087188, 0.00053445, 7.27119315, 0.99733558, 0.99859367, 0.49307121],\
+[	-6.27206569, -0.00087164, 0.00053429, 7.27119405, 0.99733633, 0.99859407, 0.49307121],\
+[	-6.27206635, -0.00087139, 0.00053414, 7.27119496, 0.99733709, 0.99859446, 0.49307131],\
+[	-6.27206701, -0.00087115, 0.00053399, 7.27119586, 0.99733783, 0.99859486, 0.49307143],\
+[	-6.27206767, -0.00087090, 0.00053384, 7.27119676, 0.99733858, 0.99859525, 0.49307152],\
+[	-6.27206832, -0.00087066, 0.00053369, 7.27119766, 0.99733933, 0.99859565, 0.49307163],\
+[	-6.27206898, -0.00087041, 0.00053354, 7.27119856, 0.99734008, 0.99859604, 0.49307170],\
+[	-6.27206963, -0.00087017, 0.00053339, 7.27119946, 0.99734083, 0.99859644, 0.49307178],\
+[	-6.27207029, -0.00086992, 0.00053324, 7.27120036, 0.99734158, 0.99859683, 0.49307182],\
+[	-6.27207094, -0.00086968, 0.00053309, 7.27120126, 0.99734233, 0.99859723, 0.49307196],\
+[	-6.27207160, -0.00086944, 0.00053294, 7.27120216, 0.99734307, 0.99859762, 0.49307197],\
+[	-6.27207225, -0.00086919, 0.00053279, 7.27120306, 0.99734382, 0.99859802, 0.49307220],\
+[	-6.27207290, -0.00086895, 0.00053264, 7.27120395, 0.99734457, 0.99859841, 0.49307226],\
+[	-6.27207355, -0.00086870, 0.00053249, 7.27120485, 0.99734531, 0.99859880, 0.49307233],\
+[	-6.27207420, -0.00086846, 0.00053234, 7.27120574, 0.99734606, 0.99859920, 0.49307241],\
+[	-6.27207485, -0.00086822, 0.00053219, 7.27120664, 0.99734680, 0.99859959, 0.49307252],\
+[	-6.27207550, -0.00086797, 0.00053205, 7.27120753, 0.99734755, 0.99859998, 0.49307258],\
+[	-6.27207615, -0.00086773, 0.00053190, 7.27120842, 0.99734829, 0.99860037, 0.49307271],\
+[	-6.27207680, -0.00086749, 0.00053175, 7.27120931, 0.99734903, 0.99860077, 0.49307274],\
+[	-6.27207745, -0.00086724, 0.00053160, 7.27121021, 0.99734978, 0.99860116, 0.49307287],\
+[	-6.27207810, -0.00086700, 0.00053145, 7.27121110, 0.99735052, 0.99860155, 0.49307293],\
+[	-6.27207874, -0.00086676, 0.00053130, 7.27121199, 0.99735126, 0.99860194, 0.49307303],\
+[	-6.27207939, -0.00086652, 0.00053115, 7.27121287, 0.99735200, 0.99860233, 0.49307313],\
+[	-6.27208004, -0.00086627, 0.00053100, 7.27121376, 0.99735275, 0.99860273, 0.49307325],\
+[	-6.27208068, -0.00086603, 0.00053085, 7.27121465, 0.99735349, 0.99860312, 0.49307329],\
+[	-6.27208132, -0.00086579, 0.00053070, 7.27121554, 0.99735423, 0.99860351, 0.49307333],\
+[	-6.27208197, -0.00086555, 0.00053056, 7.27121642, 0.99735497, 0.99860390, 0.49307349],\
+[	-6.27208261, -0.00086530, 0.00053041, 7.27121731, 0.99735571, 0.99860429, 0.49307355],\
+[	-6.27208325, -0.00086506, 0.00053026, 7.27121819, 0.99735645, 0.99860468, 0.49307366],\
+[	-6.27208390, -0.00086482, 0.00053011, 7.27121907, 0.99735719, 0.99860507, 0.49307376],\
+[	-6.27208454, -0.00086458, 0.00052996, 7.27121996, 0.99735792, 0.99860546, 0.49307384],\
+[	-6.27208518, -0.00086434, 0.00052981, 7.27122084, 0.99735866, 0.99860585, 0.49307389],\
+[	-6.27208582, -0.00086410, 0.00052967, 7.27122172, 0.99735940, 0.99860624, 0.49307398],\
+[	-6.27208646, -0.00086386, 0.00052952, 7.27122260, 0.99736014, 0.99860663, 0.49307410],\
+[	-6.27208710, -0.00086361, 0.00052937, 7.27122348, 0.99736088, 0.99860701, 0.49307418],\
+[	-6.27208774, -0.00086337, 0.00052922, 7.27122436, 0.99736161, 0.99860740, 0.49307431],\
+[	-6.27208837, -0.00086313, 0.00052908, 7.27122524, 0.99736235, 0.99860779, 0.49307430],\
+[	-6.27208901, -0.00086289, 0.00052893, 7.27122612, 0.99736308, 0.99860818, 0.49307450],\
+[	-6.27208965, -0.00086265, 0.00052878, 7.27122700, 0.99736382, 0.99860857, 0.49307452],\
+[	-6.27209028, -0.00086241, 0.00052863, 7.27122787, 0.99736455, 0.99860896, 0.49307461],\
+[	-6.27209092, -0.00086217, 0.00052849, 7.27122875, 0.99736529, 0.99860934, 0.49307473],\
+[	-6.27209155, -0.00086193, 0.00052834, 7.27122962, 0.99736602, 0.99860973, 0.49307476],\
+[	-6.27209219, -0.00086169, 0.00052819, 7.27123050, 0.99736676, 0.99861012, 0.49307493],\
+[	-6.27209282, -0.00086145, 0.00052804, 7.27123137, 0.99736749, 0.99861050, 0.49307491],\
+[	-6.27209346, -0.00086121, 0.00052790, 7.27123224, 0.99736822, 0.99861089, 0.49307506],\
+[	-6.27209409, -0.00086097, 0.00052775, 7.27123312, 0.99736896, 0.99861128, 0.49307515],\
+[	-6.27209472, -0.00086073, 0.00052760, 7.27123399, 0.99736969, 0.99861166, 0.49307527],\
+[	-6.27209535, -0.00086049, 0.00052746, 7.27123486, 0.99737042, 0.99861205, 0.49307528],\
+[	-6.27209598, -0.00086025, 0.00052731, 7.27123573, 0.99737115, 0.99861244, 0.49307544],\
+[	-6.27209661, -0.00086002, 0.00052716, 7.27123660, 0.99737188, 0.99861282, 0.49307551],\
+[	-6.27209724, -0.00085978, 0.00052702, 7.27123747, 0.99737261, 0.99861321, 0.49307555],\
+[	-6.27209787, -0.00085954, 0.00052687, 7.27123833, 0.99737334, 0.99861359, 0.49307566],\
+[	-6.27209850, -0.00085930, 0.00052672, 7.27123920, 0.99737407, 0.99861398, 0.49307570],\
+[	-6.27209913, -0.00085906, 0.00052658, 7.27124007, 0.99737480, 0.99861436, 0.49307581],\
+[	-6.27209976, -0.00085882, 0.00052643, 7.27124094, 0.99737553, 0.99861475, 0.49307599],\
+[	-6.27210038, -0.00085858, 0.00052628, 7.27124180, 0.99737626, 0.99861513, 0.49307598],\
+[	-6.27210101, -0.00085835, 0.00052614, 7.27124266, 0.99737699, 0.99861551, 0.49307614],\
+[	-6.27210164, -0.00085811, 0.00052599, 7.27124353, 0.99737771, 0.99861590, 0.49307614],\
+[	-6.27210226, -0.00085787, 0.00052585, 7.27124439, 0.99737844, 0.99861628, 0.49307625],\
+[	-6.27210289, -0.00085763, 0.00052570, 7.27124525, 0.99737917, 0.99861667, 0.49307637],\
+[	-6.27210351, -0.00085740, 0.00052555, 7.27124612, 0.99737989, 0.99861705, 0.49307645],\
+[	-6.27210414, -0.00085716, 0.00052541, 7.27124698, 0.99738062, 0.99861743, 0.49307653],\
+[	-6.27210476, -0.00085692, 0.00052526, 7.27124784, 0.99738135, 0.99861782, 0.49307663],\
+[	-6.27210538, -0.00085668, 0.00052512, 7.27124870, 0.99738207, 0.99861820, 0.49307669],\
+[	-6.27210600, -0.00085645, 0.00052497, 7.27124956, 0.99738280, 0.99861858, 0.49307677],\
+[	-6.27210663, -0.00085621, 0.00052483, 7.27125042, 0.99738352, 0.99861896, 0.49307688],\
+[	-6.27210725, -0.00085597, 0.00052468, 7.27125127, 0.99738424, 0.99861934, 0.49307699],\
+[	-6.27210787, -0.00085574, 0.00052454, 7.27125213, 0.99738497, 0.99861973, 0.49307706],\
+[	-6.27210849, -0.00085550, 0.00052439, 7.27125299, 0.99738569, 0.99862011, 0.49307704],\
+[	-6.27210911, -0.00085526, 0.00052425, 7.27125384, 0.99738641, 0.99862049, 0.49307723],\
+[	-6.27210973, -0.00085503, 0.00052410, 7.27125470, 0.99738714, 0.99862087, 0.49307731],\
+[	-6.27211034, -0.00085479, 0.00052396, 7.27125555, 0.99738786, 0.99862125, 0.49307742],\
+[	-6.27211096, -0.00085456, 0.00052381, 7.27125641, 0.99738858, 0.99862163, 0.49307753],\
+[	-6.27211158, -0.00085432, 0.00052367, 7.27125726, 0.99738930, 0.99862201, 0.49307753],\
+[	-6.27211220, -0.00085408, 0.00052352, 7.27125811, 0.99739002, 0.99862239, 0.49307764],\
+[	-6.27211281, -0.00085385, 0.00052338, 7.27125896, 0.99739074, 0.99862277, 0.49307770],\
+[	-6.27211343, -0.00085361, 0.00052323, 7.27125981, 0.99739146, 0.99862315, 0.49307780],\
+[	-6.27211404, -0.00085338, 0.00052309, 7.27126067, 0.99739218, 0.99862353, 0.49307792],\
+[	-6.27211466, -0.00085314, 0.00052295, 7.27126152, 0.99739290, 0.99862391, 0.49307794],\
+[	-6.27211527, -0.00085291, 0.00052280, 7.27126236, 0.99739362, 0.99862429, 0.49307803],\
+[	-6.27211589, -0.00085267, 0.00052266, 7.27126321, 0.99739434, 0.99862467, 0.49307820],\
+[	-6.27211650, -0.00085244, 0.00052251, 7.27126406, 0.99739506, 0.99862505, 0.49307827],\
+[	-6.27211711, -0.00085220, 0.00052237, 7.27126491, 0.99739577, 0.99862543, 0.49307830],\
+[	-6.27211772, -0.00085197, 0.00052222, 7.27126575, 0.99739649, 0.99862581, 0.49307839],\
+[	-6.27211833, -0.00085173, 0.00052208, 7.27126660, 0.99739721, 0.99862618, 0.49307851],\
+[	-6.27211895, -0.00085150, 0.00052194, 7.27126745, 0.99739792, 0.99862656, 0.49307861],\
+[	-6.27211956, -0.00085127, 0.00052179, 7.27126829, 0.99739864, 0.99862694, 0.49307868],\
+[	-6.27212017, -0.00085103, 0.00052165, 7.27126913, 0.99739936, 0.99862732, 0.49307878],\
+[	-6.27212078, -0.00085080, 0.00052151, 7.27126998, 0.99740007, 0.99862770, 0.49307884],\
+[	-6.27212138, -0.00085056, 0.00052136, 7.27127082, 0.99740079, 0.99862807, 0.49307888],\
+[	-6.27212199, -0.00085033, 0.00052122, 7.27127166, 0.99740150, 0.99862845, 0.49307902],\
+[	-6.27212260, -0.00085010, 0.00052108, 7.27127250, 0.99740221, 0.99862883, 0.49307911],\
+[	-6.27212321, -0.00084986, 0.00052093, 7.27127334, 0.99740293, 0.99862920, 0.49307920],\
+[	-6.27212381, -0.00084963, 0.00052079, 7.27127418, 0.99740364, 0.99862958, 0.49307926],\
+[	-6.27212442, -0.00084940, 0.00052065, 7.27127502, 0.99740435, 0.99862996, 0.49307935],\
+[	-6.27212503, -0.00084916, 0.00052050, 7.27127586, 0.99740507, 0.99863033, 0.49307944],\
+[	-6.27212563, -0.00084893, 0.00052036, 7.27127670, 0.99740578, 0.99863071, 0.49307944],\
+[	-6.27212624, -0.00084870, 0.00052022, 7.27127754, 0.99740649, 0.99863108, 0.49307954],\
+[	-6.27212684, -0.00084847, 0.00052008, 7.27127837, 0.99740720, 0.99863146, 0.49307961],\
+[	-6.27212744, -0.00084823, 0.00051993, 7.27127921, 0.99740791, 0.99863183, 0.49307978],\
+[	-6.27212805, -0.00084800, 0.00051979, 7.27128005, 0.99740862, 0.99863221, 0.49307983],\
+[	-6.27212865, -0.00084777, 0.00051965, 7.27128088, 0.99740933, 0.99863258, 0.49307996],\
+[	-6.27212925, -0.00084754, 0.00051951, 7.27128172, 0.99741004, 0.99863296, 0.49308005],\
+[	-6.27212986, -0.00084730, 0.00051936, 7.27128255, 0.99741075, 0.99863333, 0.49308014],\
+[	-6.27213046, -0.00084707, 0.00051922, 7.27128338, 0.99741146, 0.99863371, 0.49308018],\
+[	-6.27213106, -0.00084684, 0.00051908, 7.27128422, 0.99741217, 0.99863408, 0.49308030],\
+[	-6.27213166, -0.00084661, 0.00051894, 7.27128505, 0.99741288, 0.99863445, 0.49308040],\
+[	-6.27213226, -0.00084638, 0.00051879, 7.27128588, 0.99741359, 0.99863483, 0.49308040],\
+[	-6.27213286, -0.00084615, 0.00051865, 7.27128671, 0.99741429, 0.99863520, 0.49308050],\
+[	-6.27213345, -0.00084592, 0.00051851, 7.27128754, 0.99741500, 0.99863557, 0.49308061],\
+[	-6.27213405, -0.00084568, 0.00051837, 7.27128837, 0.99741571, 0.99863595, 0.49308064],\
+[	-6.27213465, -0.00084545, 0.00051823, 7.27128920, 0.99741641, 0.99863632, 0.49308083],\
+[	-6.27213525, -0.00084522, 0.00051809, 7.27129003, 0.99741712, 0.99863669, 0.49308089],\
+[	-6.27213585, -0.00084499, 0.00051794, 7.27129085, 0.99741783, 0.99863706, 0.49308103],\
+[	-6.27213644, -0.00084476, 0.00051780, 7.27129168, 0.99741853, 0.99863744, 0.49308104],\
+[	-6.27213704, -0.00084453, 0.00051766, 7.27129251, 0.99741924, 0.99863781, 0.49308114],\
+[	-6.27213763, -0.00084430, 0.00051752, 7.27129333, 0.99741994, 0.99863818, 0.49308122],\
+[	-6.27213823, -0.00084407, 0.00051738, 7.27129416, 0.99742064, 0.99863855, 0.49308125],\
+[	-6.27213882, -0.00084384, 0.00051724, 7.27129498, 0.99742135, 0.99863892, 0.49308128],\
+[	-6.27213942, -0.00084361, 0.00051710, 7.27129581, 0.99742205, 0.99863929, 0.49308149],\
+[	-6.27214001, -0.00084338, 0.00051696, 7.27129663, 0.99742275, 0.99863966, 0.49308153],\
+[	-6.27214060, -0.00084315, 0.00051681, 7.27129745, 0.99742346, 0.99864003, 0.49308160],\
+[	-6.27214120, -0.00084292, 0.00051667, 7.27129827, 0.99742416, 0.99864041, 0.49308174],\
+[	-6.27214179, -0.00084269, 0.00051653, 7.27129910, 0.99742486, 0.99864078, 0.49308171],\
+[	-6.27214238, -0.00084246, 0.00051639, 7.27129992, 0.99742556, 0.99864115, 0.49308189],\
+[	-6.27214297, -0.00084223, 0.00051625, 7.27130074, 0.99742626, 0.99864152, 0.49308189],\
+[	-6.27214356, -0.00084200, 0.00051611, 7.27130156, 0.99742696, 0.99864188, 0.49308208],\
+[	-6.27214415, -0.00084178, 0.00051597, 7.27130237, 0.99742766, 0.99864225, 0.49308218],\
+[	-6.27214474, -0.00084155, 0.00051583, 7.27130319, 0.99742836, 0.99864262, 0.49308217],\
+[	-6.27214533, -0.00084132, 0.00051569, 7.27130401, 0.99742906, 0.99864299, 0.49308225],\
+[	-6.27214592, -0.00084109, 0.00051555, 7.27130483, 0.99742976, 0.99864336, 0.49308239],\
+[	-6.27214651, -0.00084086, 0.00051541, 7.27130564, 0.99743046, 0.99864373, 0.49308247],\
+[	-6.27214709, -0.00084063, 0.00051527, 7.27130646, 0.99743116, 0.99864410, 0.49308255],\
+[	-6.27214768, -0.00084040, 0.00051513, 7.27130728, 0.99743186, 0.99864447, 0.49308258],\
+[	-6.27214827, -0.00084018, 0.00051499, 7.27130809, 0.99743255, 0.99864483, 0.49308266],\
+[	-6.27214885, -0.00083995, 0.00051485, 7.27130891, 0.99743325, 0.99864520, 0.49308274],\
+[	-6.27214944, -0.00083972, 0.00051471, 7.27130972, 0.99743395, 0.99864557, 0.49308290],\
+[	-6.27215002, -0.00083949, 0.00051457, 7.27131053, 0.99743464, 0.99864594, 0.49308290],\
+[	-6.27215061, -0.00083926, 0.00051443, 7.27131134, 0.99743534, 0.99864631, 0.49308300],\
+[	-6.27215119, -0.00083904, 0.00051429, 7.27131216, 0.99743604, 0.99864667, 0.49308315],\
+[	-6.27215178, -0.00083881, 0.00051415, 7.27131297, 0.99743673, 0.99864704, 0.49308314],\
+[	-6.27215236, -0.00083858, 0.00051401, 7.27131378, 0.99743743, 0.99864741, 0.49308324],\
+[	-6.27215294, -0.00083836, 0.00051387, 7.27131459, 0.99743812, 0.99864777, 0.49308338],\
+[	-6.27215353, -0.00083813, 0.00051373, 7.27131540, 0.99743881, 0.99864814, 0.49308338],\
+[	-6.27215411, -0.00083790, 0.00051359, 7.27131621, 0.99743951, 0.99864850, 0.49308350],\
+[	-6.27215469, -0.00083768, 0.00051345, 7.27131702, 0.99744020, 0.99864887, 0.49308357],\
+[	-6.27215527, -0.00083745, 0.00051332, 7.27131782, 0.99744089, 0.99864924, 0.49308374],\
+[	-6.27215585, -0.00083722, 0.00051318, 7.27131863, 0.99744159, 0.99864960, 0.49308379],\
+[	-6.27215643, -0.00083700, 0.00051304, 7.27131944, 0.99744228, 0.99864997, 0.49308384],\
+[	-6.27215701, -0.00083677, 0.00051290, 7.27132024, 0.99744297, 0.99865033, 0.49308393],\
+[	-6.27215759, -0.00083654, 0.00051276, 7.27132105, 0.99744366, 0.99865070, 0.49308399],\
+[	-6.27215817, -0.00083632, 0.00051262, 7.27132185, 0.99744435, 0.99865106, 0.49308412],\
+[	-6.27215875, -0.00083609, 0.00051248, 7.27132266, 0.99744504, 0.99865143, 0.49308421],\
+[	-6.27215933, -0.00083587, 0.00051234, 7.27132346, 0.99744574, 0.99865179, 0.49308425],\
+[	-6.27215990, -0.00083564, 0.00051221, 7.27132426, 0.99744643, 0.99865215, 0.49308434],\
+[	-6.27216048, -0.00083541, 0.00051207, 7.27132507, 0.99744711, 0.99865252, 0.49308442],\
+[	-6.27216106, -0.00083519, 0.00051193, 7.27132587, 0.99744780, 0.99865288, 0.49308450],\
+[	-6.27216164, -0.00083496, 0.00051179, 7.27132667, 0.99744849, 0.99865324, 0.49308461],\
+[	-6.27216221, -0.00083474, 0.00051165, 7.27132747, 0.99744918, 0.99865361, 0.49308467],\
+[	-6.27216279, -0.00083451, 0.00051151, 7.27132827, 0.99744987, 0.99865397, 0.49308473],\
+[	-6.27216336, -0.00083429, 0.00051138, 7.27132907, 0.99745056, 0.99865433, 0.49308483],\
+[	-6.27216394, -0.00083406, 0.00051124, 7.27132987, 0.99745124, 0.99865470, 0.49308489],\
+[	-6.27216451, -0.00083384, 0.00051110, 7.27133067, 0.99745193, 0.99865506, 0.49308501],\
+[	-6.27216508, -0.00083361, 0.00051096, 7.27133147, 0.99745262, 0.99865542, 0.49308509],\
+[	-6.27216566, -0.00083339, 0.00051083, 7.27133227, 0.99745330, 0.99865578, 0.49308519],\
+[	-6.27216623, -0.00083317, 0.00051069, 7.27133306, 0.99745399, 0.99865615, 0.49308520],\
+[	-6.27216680, -0.00083294, 0.00051055, 7.27133386, 0.99745468, 0.99865651, 0.49308532],\
+[	-6.27216737, -0.00083272, 0.00051041, 7.27133465, 0.99745536, 0.99865687, 0.49308537],\
+[	-6.27216794, -0.00083249, 0.00051028, 7.27133545, 0.99745605, 0.99865723, 0.49308548],\
+[	-6.27216851, -0.00083227, 0.00051014, 7.27133624, 0.99745673, 0.99865759, 0.49308555],\
+[	-6.27216909, -0.00083205, 0.00051000, 7.27133704, 0.99745741, 0.99865795, 0.49308568],\
+[	-6.27216966, -0.00083182, 0.00050986, 7.27133783, 0.99745810, 0.99865831, 0.49308575],\
+[	-6.27217022, -0.00083160, 0.00050973, 7.27133863, 0.99745878, 0.99865867, 0.49308580],\
+[	-6.27217079, -0.00083138, 0.00050959, 7.27133942, 0.99745946, 0.99865903, 0.49308589],\
+[	-6.27217136, -0.00083115, 0.00050945, 7.27134021, 0.99746015, 0.99865939, 0.49308593],\
+[	-6.27217193, -0.00083093, 0.00050932, 7.27134100, 0.99746083, 0.99865975, 0.49308603],\
+[	-6.27217250, -0.00083071, 0.00050918, 7.27134179, 0.99746151, 0.99866011, 0.49308603],\
+[	-6.27217307, -0.00083048, 0.00050904, 7.27134258, 0.99746219, 0.99866047, 0.49308626],\
+[	-6.27217363, -0.00083026, 0.00050891, 7.27134337, 0.99746287, 0.99866083, 0.49308628],\
+[	-6.27217420, -0.00083004, 0.00050877, 7.27134416, 0.99746355, 0.99866119, 0.49308633],\
+[	-6.27217477, -0.00082982, 0.00050863, 7.27134495, 0.99746424, 0.99866155, 0.49308648],\
+[	-6.27217533, -0.00082959, 0.00050850, 7.27134574, 0.99746492, 0.99866191, 0.49308650],\
+[	-6.27217590, -0.00082937, 0.00050836, 7.27134653, 0.99746559, 0.99866227, 0.49308659],\
+[	-6.27217646, -0.00082915, 0.00050822, 7.27134731, 0.99746627, 0.99866263, 0.49308664],\
+[	-6.27217703, -0.00082893, 0.00050809, 7.27134810, 0.99746695, 0.99866299, 0.49308674],\
+[	-6.27217759, -0.00082871, 0.00050795, 7.27134888, 0.99746763, 0.99866334, 0.49308688],\
+[	-6.27217815, -0.00082848, 0.00050782, 7.27134967, 0.99746831, 0.99866370, 0.49308691],\
+[	-6.27217872, -0.00082826, 0.00050768, 7.27135045, 0.99746899, 0.99866406, 0.49308700],\
+[	-6.27217928, -0.00082804, 0.00050754, 7.27135124, 0.99746967, 0.99866442, 0.49308706],\
+[	-6.27217984, -0.00082782, 0.00050741, 7.27135202, 0.99747034, 0.99866477, 0.49308711],\
+[	-6.27218040, -0.00082760, 0.00050727, 7.27135281, 0.99747102, 0.99866513, 0.49308731],\
+[	-6.27218097, -0.00082738, 0.00050714, 7.27135359, 0.99747170, 0.99866549, 0.49308733],\
+[	-6.27218153, -0.00082716, 0.00050700, 7.27135437, 0.99747237, 0.99866584, 0.49308746],\
+[	-6.27218209, -0.00082693, 0.00050686, 7.27135515, 0.99747305, 0.99866620, 0.49308753],\
+[	-6.27218265, -0.00082671, 0.00050673, 7.27135593, 0.99747372, 0.99866656, 0.49308759],\
+[	-6.27218321, -0.00082649, 0.00050659, 7.27135671, 0.99747440, 0.99866691, 0.49308757],\
+[	-6.27218377, -0.00082627, 0.00050646, 7.27135749, 0.99747507, 0.99866727, 0.49308770],\
+[	-6.27218433, -0.00082605, 0.00050632, 7.27135827, 0.99747575, 0.99866763, 0.49308772],\
+[	-6.27218488, -0.00082583, 0.00050619, 7.27135905, 0.99747642, 0.99866798, 0.49308784],\
+[	-6.27218544, -0.00082561, 0.00050605, 7.27135983, 0.99747709, 0.99866834, 0.49308794],\
+[	-6.27218600, -0.00082539, 0.00050592, 7.27136061, 0.99747777, 0.99866869, 0.49308810],\
+[	-6.27218656, -0.00082517, 0.00050578, 7.27136139, 0.99747844, 0.99866905, 0.49308812],\
+[	-6.27218711, -0.00082495, 0.00050565, 7.27136216, 0.99747911, 0.99866940, 0.49308821],\
+[	-6.27218767, -0.00082473, 0.00050551, 7.27136294, 0.99747978, 0.99866976, 0.49308825],\
+[	-6.27218823, -0.00082451, 0.00050538, 7.27136371, 0.99748046, 0.99867011, 0.49308833],\
+[	-6.27218878, -0.00082429, 0.00050524, 7.27136449, 0.99748113, 0.99867046, 0.49308847],\
+[	-6.27218934, -0.00082407, 0.00050511, 7.27136526, 0.99748180, 0.99867082, 0.49308860],\
+[	-6.27218989, -0.00082385, 0.00050497, 7.27136604, 0.99748247, 0.99867117, 0.49308859],\
+[	-6.27219045, -0.00082363, 0.00050484, 7.27136681, 0.99748314, 0.99867153, 0.49308869],\
+[	-6.27219100, -0.00082341, 0.00050471, 7.27136759, 0.99748381, 0.99867188, 0.49308873],\
+[	-6.27219155, -0.00082320, 0.00050457, 7.27136836, 0.99748448, 0.99867223, 0.49308878],\
+[	-6.27219211, -0.00082298, 0.00050444, 7.27136913, 0.99748515, 0.99867259, 0.49308888],\
+[	-6.27219266, -0.00082276, 0.00050430, 7.27136990, 0.99748582, 0.99867294, 0.49308897],\
+[	-6.27219321, -0.00082254, 0.00050417, 7.27137067, 0.99748649, 0.99867329, 0.49308901],\
+[	-6.27219376, -0.00082232, 0.00050403, 7.27137144, 0.99748715, 0.99867364, 0.49308913],\
+[	-6.27219432, -0.00082210, 0.00050390, 7.27137221, 0.99748782, 0.99867400, 0.49308916],\
+[	-6.27219487, -0.00082188, 0.00050377, 7.27137298, 0.99748849, 0.99867435, 0.49308935],\
+[	-6.27219542, -0.00082167, 0.00050363, 7.27137375, 0.99748916, 0.99867470, 0.49308938],\
+[	-6.27219597, -0.00082145, 0.00050350, 7.27137452, 0.99748982, 0.99867505, 0.49308944],\
+[	-6.27219652, -0.00082123, 0.00050337, 7.27137529, 0.99749049, 0.99867540, 0.49308959],\
+[	-6.27219707, -0.00082101, 0.00050323, 7.27137606, 0.99749116, 0.99867576, 0.49308961],\
+[	-6.27219762, -0.00082080, 0.00050310, 7.27137682, 0.99749182, 0.99867611, 0.49308966],\
+[	-6.27219817, -0.00082058, 0.00050296, 7.27137759, 0.99749249, 0.99867646, 0.49308979],\
+[	-6.27219872, -0.00082036, 0.00050283, 7.27137836, 0.99749315, 0.99867681, 0.49308985],\
+[	-6.27219926, -0.00082014, 0.00050270, 7.27137912, 0.99749382, 0.99867716, 0.49308989],\
+[	-6.27219981, -0.00081993, 0.00050256, 7.27137989, 0.99749448, 0.99867751, 0.49309002],\
+[	-6.27220036, -0.00081971, 0.00050243, 7.27138065, 0.99749514, 0.99867786, 0.49309006],\
+[	-6.27220091, -0.00081949, 0.00050230, 7.27138141, 0.99749581, 0.99867821, 0.49309016],\
+[	-6.27220145, -0.00081927, 0.00050216, 7.27138218, 0.99749647, 0.99867856, 0.49309022],\
+[	-6.27220200, -0.00081906, 0.00050203, 7.27138294, 0.99749713, 0.99867891, 0.49309028],\
+[	-6.27220254, -0.00081884, 0.00050190, 7.27138370, 0.99749780, 0.99867926, 0.49309037],\
+[	-6.27220309, -0.00081862, 0.00050177, 7.27138446, 0.99749846, 0.99867961, 0.49309053],\
+[	-6.27220363, -0.00081841, 0.00050163, 7.27138523, 0.99749912, 0.99867996, 0.49309055],\
+[	-6.27220418, -0.00081819, 0.00050150, 7.27138599, 0.99749978, 0.99868031, 0.49309069],\
+[	-6.27220472, -0.00081798, 0.00050137, 7.27138675, 0.99750044, 0.99868066, 0.49309070],\
+[	-6.27220527, -0.00081776, 0.00050124, 7.27138751, 0.99750110, 0.99868100, 0.49309083],\
+[	-6.27220581, -0.00081754, 0.00050110, 7.27138827, 0.99750176, 0.99868135, 0.49309090],\
+[	-6.27220635, -0.00081733, 0.00050097, 7.27138902, 0.99750242, 0.99868170, 0.49309098],\
+[	-6.27220690, -0.00081711, 0.00050084, 7.27138978, 0.99750308, 0.99868205, 0.49309101],\
+[	-6.27220744, -0.00081690, 0.00050071, 7.27139054, 0.99750374, 0.99868240, 0.49309113],\
+[	-6.27220798, -0.00081668, 0.00050057, 7.27139130, 0.99750440, 0.99868275, 0.49309116],\
+[	-6.27220852, -0.00081647, 0.00050044, 7.27139205, 0.99750506, 0.99868309, 0.49309123],\
+[	-6.27220906, -0.00081625, 0.00050031, 7.27139281, 0.99750572, 0.99868344, 0.49309142],\
+[	-6.27220960, -0.00081604, 0.00050018, 7.27139357, 0.99750638, 0.99868379, 0.49309142],\
+[	-6.27221014, -0.00081582, 0.00050005, 7.27139432, 0.99750703, 0.99868413, 0.49309146],\
+[	-6.27221068, -0.00081561, 0.00049991, 7.27139508, 0.99750769, 0.99868448, 0.49309158],\
+[	-6.27221122, -0.00081539, 0.00049978, 7.27139583, 0.99750835, 0.99868483, 0.49309166],\
+[	-6.27221176, -0.00081518, 0.00049965, 7.27139659, 0.99750901, 0.99868517, 0.49309171],\
+[	-6.27221230, -0.00081496, 0.00049952, 7.27139734, 0.99750966, 0.99868552, 0.49309183],\
+[	-6.27221284, -0.00081475, 0.00049939, 7.27139809, 0.99751032, 0.99868587, 0.49309186],\
+[	-6.27221338, -0.00081453, 0.00049926, 7.27139884, 0.99751097, 0.99868621, 0.49309196],\
+[	-6.27221391, -0.00081432, 0.00049912, 7.27139960, 0.99751163, 0.99868656, 0.49309197],\
+[	-6.27221445, -0.00081410, 0.00049899, 7.27140035, 0.99751228, 0.99868690, 0.49309212],\
+[	-6.27221499, -0.00081389, 0.00049886, 7.27140110, 0.99751294, 0.99868725, 0.49309226],\
+[	-6.27221552, -0.00081368, 0.00049873, 7.27140185, 0.99751359, 0.99868759, 0.49309233],\
+[	-6.27221606, -0.00081346, 0.00049860, 7.27140260, 0.99751425, 0.99868794, 0.49309240],\
+[	-6.27221660, -0.00081325, 0.00049847, 7.27140335, 0.99751490, 0.99868828, 0.49309241],\
+[	-6.27221713, -0.00081303, 0.00049834, 7.27140410, 0.99751555, 0.99868863, 0.49309250],\
+[	-6.27221767, -0.00081282, 0.00049821, 7.27140485, 0.99751621, 0.99868897, 0.49309252],\
+[	-6.27221820, -0.00081261, 0.00049807, 7.27140559, 0.99751686, 0.99868932, 0.49309262],\
+[	-6.27221874, -0.00081239, 0.00049794, 7.27140634, 0.99751751, 0.99868966, 0.49309274],\
+[	-6.27221927, -0.00081218, 0.00049781, 7.27140709, 0.99751816, 0.99869001, 0.49309277],\
+[	-6.27221980, -0.00081197, 0.00049768, 7.27140784, 0.99751881, 0.99869035, 0.49309287],\
+[	-6.27222034, -0.00081176, 0.00049755, 7.27140858, 0.99751946, 0.99869069, 0.49309295],\
+[	-6.27222087, -0.00081154, 0.00049742, 7.27140933, 0.99752012, 0.99869104, 0.49309305],\
+[	-6.27222140, -0.00081133, 0.00049729, 7.27141007, 0.99752077, 0.99869138, 0.49309311],\
+[	-6.27222193, -0.00081112, 0.00049716, 7.27141082, 0.99752142, 0.99869172, 0.49309317],\
+[	-6.27222247, -0.00081090, 0.00049703, 7.27141156, 0.99752207, 0.99869207, 0.49309328],\
+[	-6.27222300, -0.00081069, 0.00049690, 7.27141230, 0.99752271, 0.99869241, 0.49309332],\
+[	-6.27222353, -0.00081048, 0.00049677, 7.27141305, 0.99752336, 0.99869275, 0.49309344],\
+[	-6.27222406, -0.00081027, 0.00049664, 7.27141379, 0.99752401, 0.99869309, 0.49309341],\
+[	-6.27222459, -0.00081006, 0.00049651, 7.27141453, 0.99752466, 0.99869344, 0.49309354],\
+[	-6.27222512, -0.00080984, 0.00049638, 7.27141527, 0.99752531, 0.99869378, 0.49309361],\
+[	-6.27222565, -0.00080963, 0.00049625, 7.27141602, 0.99752596, 0.99869412, 0.49309375],\
+[	-6.27222618, -0.00080942, 0.00049612, 7.27141676, 0.99752660, 0.99869446, 0.49309380],\
+[	-6.27222671, -0.00080921, 0.00049599, 7.27141750, 0.99752725, 0.99869480, 0.49309382],\
+[	-6.27222723, -0.00080900, 0.00049586, 7.27141824, 0.99752790, 0.99869514, 0.49309395],\
+[	-6.27222776, -0.00080879, 0.00049573, 7.27141898, 0.99752854, 0.99869548, 0.49309403],\
+[	-6.27222829, -0.00080857, 0.00049560, 7.27141972, 0.99752919, 0.99869582, 0.49309409],\
+[	-6.27222882, -0.00080836, 0.00049547, 7.27142045, 0.99752984, 0.99869617, 0.49309410],\
+[	-6.27222934, -0.00080815, 0.00049534, 7.27142119, 0.99753048, 0.99869651, 0.49309425],\
+[	-6.27222987, -0.00080794, 0.00049521, 7.27142193, 0.99753113, 0.99869685, 0.49309434],\
+[	-6.27223040, -0.00080773, 0.00049508, 7.27142267, 0.99753177, 0.99869719, 0.49309443],\
+[	-6.27223092, -0.00080752, 0.00049495, 7.27142340, 0.99753241, 0.99869753, 0.49309447],\
+[	-6.27223145, -0.00080731, 0.00049482, 7.27142414, 0.99753306, 0.99869787, 0.49309457],\
+[	-6.27223197, -0.00080710, 0.00049469, 7.27142488, 0.99753370, 0.99869821, 0.49309459],\
+[	-6.27223250, -0.00080689, 0.00049457, 7.27142561, 0.99753435, 0.99869855, 0.49309463],\
+[	-6.27223302, -0.00080668, 0.00049444, 7.27142635, 0.99753499, 0.99869888, 0.49309473],\
+[	-6.27223355, -0.00080647, 0.00049431, 7.27142708, 0.99753563, 0.99869922, 0.49309486],\
+[	-6.27223407, -0.00080626, 0.00049418, 7.27142781, 0.99753627, 0.99869956, 0.49309496],\
+[	-6.27223460, -0.00080605, 0.00049405, 7.27142855, 0.99753692, 0.99869990, 0.49309501],\
+[	-6.27223512, -0.00080584, 0.00049392, 7.27142928, 0.99753756, 0.99870024, 0.49309506],\
+[	-6.27223564, -0.00080563, 0.00049379, 7.27143001, 0.99753820, 0.99870058, 0.49309510],\
+[	-6.27223616, -0.00080542, 0.00049366, 7.27143074, 0.99753884, 0.99870092, 0.49309524],\
+[	-6.27223669, -0.00080521, 0.00049354, 7.27143148, 0.99753948, 0.99870125, 0.49309538],\
+[	-6.27223721, -0.00080500, 0.00049341, 7.27143221, 0.99754012, 0.99870159, 0.49309541],\
+[	-6.27223773, -0.00080479, 0.00049328, 7.27143294, 0.99754076, 0.99870193, 0.49309547],\
+[	-6.27223825, -0.00080458, 0.00049315, 7.27143367, 0.99754140, 0.99870227, 0.49309552],\
+[	-6.27223877, -0.00080437, 0.00049302, 7.27143440, 0.99754204, 0.99870260, 0.49309562],\
+[	-6.27223929, -0.00080416, 0.00049289, 7.27143513, 0.99754268, 0.99870294, 0.49309564],\
+[	-6.27223981, -0.00080395, 0.00049277, 7.27143586, 0.99754332, 0.99870328, 0.49309575],\
+[	-6.27224033, -0.00080375, 0.00049264, 7.27143658, 0.99754395, 0.99870362, 0.49309585],\
+[	-6.27224085, -0.00080354, 0.00049251, 7.27143731, 0.99754459, 0.99870395, 0.49309591],\
+[	-6.27224137, -0.00080333, 0.00049238, 7.27143804, 0.99754523, 0.99870429, 0.49309595],\
+[	-6.27224189, -0.00080312, 0.00049225, 7.27143877, 0.99754587, 0.99870463, 0.49309610],\
+[	-6.27224241, -0.00080291, 0.00049213, 7.27143949, 0.99754650, 0.99870496, 0.49309609],\
+[	-6.27224292, -0.00080270, 0.00049200, 7.27144022, 0.99754714, 0.99870530, 0.49309625],\
+[	-6.27224344, -0.00080250, 0.00049187, 7.27144094, 0.99754778, 0.99870563, 0.49309625],\
+[	-6.27224396, -0.00080229, 0.00049174, 7.27144167, 0.99754841, 0.99870597, 0.49309632],\
+[	-6.27224447, -0.00080208, 0.00049162, 7.27144239, 0.99754905, 0.99870630, 0.49309639],\
+[	-6.27224499, -0.00080187, 0.00049149, 7.27144312, 0.99754968, 0.99870664, 0.49309648],\
+[	-6.27224551, -0.00080166, 0.00049136, 7.27144384, 0.99755032, 0.99870697, 0.49309655],\
+[	-6.27224602, -0.00080146, 0.00049123, 7.27144457, 0.99755095, 0.99870731, 0.49309667],\
+[	-6.27224654, -0.00080125, 0.00049111, 7.27144529, 0.99755159, 0.99870764, 0.49309666],\
+[	-6.27224705, -0.00080104, 0.00049098, 7.27144601, 0.99755222, 0.99870798, 0.49309679],\
+[	-6.27224757, -0.00080084, 0.00049085, 7.27144673, 0.99755286, 0.99870831, 0.49309687],\
+[	-6.27224808, -0.00080063, 0.00049072, 7.27144746, 0.99755349, 0.99870865, 0.49309695],\
+[	-6.27224860, -0.00080042, 0.00049060, 7.27144818, 0.99755412, 0.99870898, 0.49309704],\
+[	-6.27224911, -0.00080021, 0.00049047, 7.27144890, 0.99755476, 0.99870932, 0.49309706],\
+[	-6.27224962, -0.00080001, 0.00049034, 7.27144962, 0.99755539, 0.99870965, 0.49309713],\
+[	-6.27225014, -0.00079980, 0.00049022, 7.27145034, 0.99755602, 0.99870998, 0.49309722],\
+[	-6.27225065, -0.00079959, 0.00049009, 7.27145106, 0.99755665, 0.99871032, 0.49309728],\
+[	-6.27225116, -0.00079939, 0.00048996, 7.27145178, 0.99755728, 0.99871065, 0.49309738],\
+[	-6.27225168, -0.00079918, 0.00048984, 7.27145249, 0.99755791, 0.99871098, 0.49309747],\
+[	-6.27225219, -0.00079897, 0.00048971, 7.27145321, 0.99755854, 0.99871131, 0.49309753],\
+[	-6.27225270, -0.00079877, 0.00048958, 7.27145393, 0.99755918, 0.99871165, 0.49309771],\
+[	-6.27225321, -0.00079856, 0.00048946, 7.27145465, 0.99755981, 0.99871198, 0.49309765],\
+[	-6.27225372, -0.00079836, 0.00048933, 7.27145536, 0.99756044, 0.99871231, 0.49309782],\
+[	-6.27225423, -0.00079815, 0.00048921, 7.27145608, 0.99756106, 0.99871264, 0.49309784],\
+[	-6.27225474, -0.00079795, 0.00048908, 7.27145680, 0.99756169, 0.99871298, 0.49309793],\
+[	-6.27225525, -0.00079774, 0.00048895, 7.27145751, 0.99756232, 0.99871331, 0.49309799],\
+[	-6.27225576, -0.00079753, 0.00048883, 7.27145823, 0.99756295, 0.99871364, 0.49309812],\
+[	-6.27225627, -0.00079733, 0.00048870, 7.27145894, 0.99756358, 0.99871397, 0.49309805],\
+[	-6.27225678, -0.00079712, 0.00048857, 7.27145966, 0.99756421, 0.99871430, 0.49309821],\
+[	-6.27225729, -0.00079692, 0.00048845, 7.27146037, 0.99756483, 0.99871463, 0.49309831],\
+[	-6.27225780, -0.00079671, 0.00048832, 7.27146108, 0.99756546, 0.99871496, 0.49309836],\
+[	-6.27225830, -0.00079651, 0.00048820, 7.27146180, 0.99756609, 0.99871529, 0.49309842],\
+[	-6.27225881, -0.00079630, 0.00048807, 7.27146251, 0.99756671, 0.99871563, 0.49309856],\
+[	-6.27225932, -0.00079610, 0.00048795, 7.27146322, 0.99756734, 0.99871596, 0.49309861],\
+[	-6.27225983, -0.00079589, 0.00048782, 7.27146393, 0.99756797, 0.99871629, 0.49309861],\
+[	-6.27226033, -0.00079569, 0.00048769, 7.27146464, 0.99756859, 0.99871662, 0.49309873],\
+[	-6.27226084, -0.00079548, 0.00048757, 7.27146535, 0.99756922, 0.99871695, 0.49309877],\
+[	-6.27226134, -0.00079528, 0.00048744, 7.27146606, 0.99756984, 0.99871728, 0.49309886],\
+[	-6.27226185, -0.00079508, 0.00048732, 7.27146677, 0.99757047, 0.99871761, 0.49309893],\
+[	-6.27226235, -0.00079487, 0.00048719, 7.27146748, 0.99757109, 0.99871793, 0.49309902],\
+[	-6.27226286, -0.00079467, 0.00048707, 7.27146819, 0.99757172, 0.99871826, 0.49309912],\
+[	-6.27226336, -0.00079446, 0.00048694, 7.27146890, 0.99757234, 0.99871859, 0.49309921],\
+[	-6.27226387, -0.00079426, 0.00048682, 7.27146961, 0.99757296, 0.99871892, 0.49309921],\
+[	-6.27226437, -0.00079406, 0.00048669, 7.27147032, 0.99757359, 0.99871925, 0.49309928],\
+[	-6.27226488, -0.00079385, 0.00048657, 7.27147102, 0.99757421, 0.99871958, 0.49309939],\
+[	-6.27226538, -0.00079365, 0.00048644, 7.27147173, 0.99757483, 0.99871991, 0.49309945],\
+[	-6.27226588, -0.00079345, 0.00048632, 7.27147244, 0.99757545, 0.99872024, 0.49309958],\
+[	-6.27226639, -0.00079324, 0.00048619, 7.27147314, 0.99757607, 0.99872056, 0.49309958],\
+[	-6.27226689, -0.00079304, 0.00048607, 7.27147385, 0.99757670, 0.99872089, 0.49309961],\
+[	-6.27226739, -0.00079284, 0.00048594, 7.27147455, 0.99757732, 0.99872122, 0.49309967],\
+[	-6.27226789, -0.00079263, 0.00048582, 7.27147526, 0.99757794, 0.99872155, 0.49309986],\
+[	-6.27226839, -0.00079243, 0.00048570, 7.27147596, 0.99757856, 0.99872187, 0.49309996],\
+[	-6.27226889, -0.00079223, 0.00048557, 7.27147667, 0.99757918, 0.99872220, 0.49309999],\
+[	-6.27226939, -0.00079202, 0.00048545, 7.27147737, 0.99757980, 0.99872253, 0.49310010],\
+[	-6.27226990, -0.00079182, 0.00048532, 7.27147807, 0.99758042, 0.99872286, 0.49310015],\
+[	-6.27227040, -0.00079162, 0.00048520, 7.27147878, 0.99758104, 0.99872318, 0.49310022],\
+[	-6.27227090, -0.00079142, 0.00048507, 7.27147948, 0.99758166, 0.99872351, 0.49310023],\
+[	-6.27227139, -0.00079121, 0.00048495, 7.27148018, 0.99758227, 0.99872384, 0.49310029],\
+[	-6.27227189, -0.00079101, 0.00048483, 7.27148088, 0.99758289, 0.99872416, 0.49310038],\
+[	-6.27227239, -0.00079081, 0.00048470, 7.27148158, 0.99758351, 0.99872449, 0.49310046],\
+[	-6.27227289, -0.00079061, 0.00048458, 7.27148228, 0.99758413, 0.99872481, 0.49310052],\
+[	-6.27227339, -0.00079041, 0.00048445, 7.27148298, 0.99758474, 0.99872514, 0.49310058],\
+[	-6.27227389, -0.00079020, 0.00048433, 7.27148368, 0.99758536, 0.99872546, 0.49310064],\
+[	-6.27227439, -0.00079000, 0.00048421, 7.27148438, 0.99758598, 0.99872579, 0.49310077],\
+[	-6.27227488, -0.00078980, 0.00048408, 7.27148508, 0.99758659, 0.99872612, 0.49310085],\
+[	-6.27227538, -0.00078960, 0.00048396, 7.27148578, 0.99758721, 0.99872644, 0.49310092],\
+[	-6.27227588, -0.00078940, 0.00048384, 7.27148648, 0.99758783, 0.99872677, 0.49310100],\
+[	-6.27227637, -0.00078920, 0.00048371, 7.27148717, 0.99758844, 0.99872709, 0.49310112],\
+[	-6.27227687, -0.00078900, 0.00048359, 7.27148787, 0.99758906, 0.99872741, 0.49310113],\
+[	-6.27227736, -0.00078880, 0.00048347, 7.27148857, 0.99758967, 0.99872774, 0.49310122],\
+[	-6.27227786, -0.00078859, 0.00048334, 7.27148927, 0.99759029, 0.99872806, 0.49310127],\
+[	-6.27227836, -0.00078839, 0.00048322, 7.27148996, 0.99759090, 0.99872839, 0.49310130],\
+[	-6.27227885, -0.00078819, 0.00048310, 7.27149066, 0.99759151, 0.99872871, 0.49310141],\
+[	-6.27227934, -0.00078799, 0.00048297, 7.27149135, 0.99759213, 0.99872903, 0.49310152],\
+[	-6.27227984, -0.00078779, 0.00048285, 7.27149205, 0.99759274, 0.99872936, 0.49310152],\
+[	-6.27228033, -0.00078759, 0.00048273, 7.27149274, 0.99759335, 0.99872968, 0.49310163],\
+[	-6.27228083, -0.00078739, 0.00048260, 7.27149344, 0.99759397, 0.99873001, 0.49310168],\
+[	-6.27228132, -0.00078719, 0.00048248, 7.27149413, 0.99759458, 0.99873033, 0.49310178],\
+[	-6.27228181, -0.00078699, 0.00048236, 7.27149482, 0.99759519, 0.99873065, 0.49310189],\
+[	-6.27228231, -0.00078679, 0.00048224, 7.27149552, 0.99759580, 0.99873097, 0.49310191],\
+[	-6.27228280, -0.00078659, 0.00048211, 7.27149621, 0.99759641, 0.99873130, 0.49310203],\
+[	-6.27228329, -0.00078639, 0.00048199, 7.27149690, 0.99759702, 0.99873162, 0.49310202],\
+[	-6.27228378, -0.00078619, 0.00048187, 7.27149759, 0.99759763, 0.99873194, 0.49310216],\
+[	-6.27228427, -0.00078599, 0.00048175, 7.27149828, 0.99759825, 0.99873226, 0.49310220],\
+[	-6.27228476, -0.00078579, 0.00048162, 7.27149897, 0.99759886, 0.99873259, 0.49310228],\
+[	-6.27228526, -0.00078559, 0.00048150, 7.27149966, 0.99759946, 0.99873291, 0.49310231],\
+[	-6.27228575, -0.00078539, 0.00048138, 7.27150035, 0.99760007, 0.99873323, 0.49310245],\
+[	-6.27228624, -0.00078519, 0.00048126, 7.27150104, 0.99760068, 0.99873355, 0.49310250],\
+[	-6.27228673, -0.00078500, 0.00048113, 7.27150173, 0.99760129, 0.99873387, 0.49310256],\
+[	-6.27228722, -0.00078480, 0.00048101, 7.27150242, 0.99760190, 0.99873419, 0.49310269],\
+[	-6.27228771, -0.00078460, 0.00048089, 7.27150311, 0.99760251, 0.99873451, 0.49310278],\
+[	-6.27228819, -0.00078440, 0.00048077, 7.27150380, 0.99760312, 0.99873483, 0.49310277],\
+[	-6.27228868, -0.00078420, 0.00048065, 7.27150448, 0.99760372, 0.99873515, 0.49310291],\
+[	-6.27228917, -0.00078400, 0.00048052, 7.27150517, 0.99760433, 0.99873548, 0.49310291],\
+[	-6.27228966, -0.00078380, 0.00048040, 7.27150586, 0.99760494, 0.99873580, 0.49310301],\
+[	-6.27229015, -0.00078360, 0.00048028, 7.27150654, 0.99760555, 0.99873612, 0.49310307],\
+[	-6.27229064, -0.00078341, 0.00048016, 7.27150723, 0.99760615, 0.99873644, 0.49310321],\
+[	-6.27229112, -0.00078321, 0.00048004, 7.27150792, 0.99760676, 0.99873676, 0.49310322],\
+[	-6.27229161, -0.00078301, 0.00047992, 7.27150860, 0.99760736, 0.99873707, 0.49310330],\
+[	-6.27229210, -0.00078281, 0.00047979, 7.27150929, 0.99760797, 0.99873739, 0.49310330],\
+[	-6.27229258, -0.00078261, 0.00047967, 7.27150997, 0.99760857, 0.99873771, 0.49310340],\
+[	-6.27229307, -0.00078242, 0.00047955, 7.27151065, 0.99760918, 0.99873803, 0.49310344],\
+[	-6.27229356, -0.00078222, 0.00047943, 7.27151134, 0.99760978, 0.99873835, 0.49310362],\
+[	-6.27229404, -0.00078202, 0.00047931, 7.27151202, 0.99761039, 0.99873867, 0.49310362],\
+[	-6.27229453, -0.00078182, 0.00047919, 7.27151270, 0.99761099, 0.99873899, 0.49310369],\
+[	-6.27229501, -0.00078163, 0.00047907, 7.27151339, 0.99761160, 0.99873931, 0.49310382],\
+[	-6.27229550, -0.00078143, 0.00047895, 7.27151407, 0.99761220, 0.99873963, 0.49310378],\
+[	-6.27229598, -0.00078123, 0.00047882, 7.27151475, 0.99761280, 0.99873994, 0.49310395],\
+[	-6.27229646, -0.00078103, 0.00047870, 7.27151543, 0.99761340, 0.99874026, 0.49310398],\
+[	-6.27229695, -0.00078084, 0.00047858, 7.27151611, 0.99761401, 0.99874058, 0.49310409],\
+[	-6.27229743, -0.00078064, 0.00047846, 7.27151679, 0.99761461, 0.99874090, 0.49310410],\
+[	-6.27229791, -0.00078044, 0.00047834, 7.27151747, 0.99761521, 0.99874122, 0.49310419],\
+[	-6.27229840, -0.00078025, 0.00047822, 7.27151815, 0.99761581, 0.99874153, 0.49310426],\
+[	-6.27229888, -0.00078005, 0.00047810, 7.27151883, 0.99761641, 0.99874185, 0.49310431],\
+[	-6.27229936, -0.00077985, 0.00047798, 7.27151951, 0.99761701, 0.99874217, 0.49310439],\
+[	-6.27229984, -0.00077966, 0.00047786, 7.27152019, 0.99761762, 0.99874248, 0.49310456],\
+[	-6.27230033, -0.00077946, 0.00047774, 7.27152087, 0.99761822, 0.99874280, 0.49310453],\
+[	-6.27230081, -0.00077926, 0.00047762, 7.27152154, 0.99761882, 0.99874312, 0.49310456],\
+[	-6.27230129, -0.00077907, 0.00047750, 7.27152222, 0.99761942, 0.99874343, 0.49310472],\
+[	-6.27230177, -0.00077887, 0.00047738, 7.27152290, 0.99762001, 0.99874375, 0.49310478],\
+[	-6.27230225, -0.00077868, 0.00047726, 7.27152357, 0.99762061, 0.99874407, 0.49310482],\
+[	-6.27230273, -0.00077848, 0.00047714, 7.27152425, 0.99762121, 0.99874438, 0.49310485],\
+[	-6.27230321, -0.00077828, 0.00047702, 7.27152493, 0.99762181, 0.99874470, 0.49310496],\
+[	-6.27230369, -0.00077809, 0.00047690, 7.27152560, 0.99762241, 0.99874501, 0.49310508],\
+[	-6.27230417, -0.00077789, 0.00047678, 7.27152628, 0.99762301, 0.99874533, 0.49310514],\
+[	-6.27230465, -0.00077770, 0.00047666, 7.27152695, 0.99762360, 0.99874564, 0.49310512],\
+[	-6.27230513, -0.00077750, 0.00047654, 7.27152763, 0.99762420, 0.99874596, 0.49310522],\
+[	-6.27230561, -0.00077731, 0.00047642, 7.27152830, 0.99762480, 0.99874627, 0.49310530],\
+[	-6.27230609, -0.00077711, 0.00047630, 7.27152897, 0.99762540, 0.99874659, 0.49310543],\
+[	-6.27230656, -0.00077692, 0.00047618, 7.27152965, 0.99762599, 0.99874690, 0.49310543],\
+[	-6.27230704, -0.00077672, 0.00047606, 7.27153032, 0.99762659, 0.99874722, 0.49310556],\
+[	-6.27230752, -0.00077653, 0.00047594, 7.27153099, 0.99762718, 0.99874753, 0.49310555],\
+[	-6.27230800, -0.00077633, 0.00047582, 7.27153166, 0.99762778, 0.99874785, 0.49310570],\
+[	-6.27230847, -0.00077614, 0.00047570, 7.27153233, 0.99762837, 0.99874816, 0.49310570],\
+[	-6.27230895, -0.00077594, 0.00047558, 7.27153301, 0.99762897, 0.99874848, 0.49310582],\
+[	-6.27230943, -0.00077575, 0.00047546, 7.27153368, 0.99762956, 0.99874879, 0.49310585],\
+[	-6.27230990, -0.00077556, 0.00047534, 7.27153435, 0.99763016, 0.99874910, 0.49310599],\
+[	-6.27231038, -0.00077536, 0.00047522, 7.27153502, 0.99763075, 0.99874942, 0.49310605],\
+[	-6.27231085, -0.00077517, 0.00047510, 7.27153569, 0.99763135, 0.99874973, 0.49310608],\
+[	-6.27231133, -0.00077497, 0.00047498, 7.27153636, 0.99763194, 0.99875004, 0.49310612],\
+[	-6.27231180, -0.00077478, 0.00047487, 7.27153702, 0.99763253, 0.99875036, 0.49310624],\
+[	-6.27231228, -0.00077458, 0.00047475, 7.27153769, 0.99763312, 0.99875067, 0.49310622],\
+[	-6.27231275, -0.00077439, 0.00047463, 7.27153836, 0.99763372, 0.99875098, 0.49310639],\
+[	-6.27231323, -0.00077420, 0.00047451, 7.27153903, 0.99763431, 0.99875129, 0.49310643],\
+[	-6.27231370, -0.00077400, 0.00047439, 7.27153970, 0.99763490, 0.99875161, 0.49310644],\
+[	-6.27231417, -0.00077381, 0.00047427, 7.27154036, 0.99763549, 0.99875192, 0.49310654],\
+[	-6.27231465, -0.00077362, 0.00047415, 7.27154103, 0.99763608, 0.99875223, 0.49310665],\
+[	-6.27231512, -0.00077342, 0.00047403, 7.27154170, 0.99763668, 0.99875254, 0.49310674],\
+[	-6.27231559, -0.00077323, 0.00047392, 7.27154236, 0.99763727, 0.99875285, 0.49310670],\
+[	-6.27231607, -0.00077304, 0.00047380, 7.27154303, 0.99763786, 0.99875317, 0.49310684],\
+[	-6.27231654, -0.00077284, 0.00047368, 7.27154369, 0.99763845, 0.99875348, 0.49310692],\
+[	-6.27231701, -0.00077265, 0.00047356, 7.27154436, 0.99763904, 0.99875379, 0.49310699],\
+[	-6.27231748, -0.00077246, 0.00047344, 7.27154502, 0.99763963, 0.99875410, 0.49310700],\
+[	-6.27231795, -0.00077227, 0.00047332, 7.27154569, 0.99764021, 0.99875441, 0.49310703],\
+[	-6.27231842, -0.00077207, 0.00047321, 7.27154635, 0.99764080, 0.99875472, 0.49310722],\
+[	-6.27231889, -0.00077188, 0.00047309, 7.27154701, 0.99764139, 0.99875503, 0.49310725],\
+[	-6.27231936, -0.00077169, 0.00047297, 7.27154768, 0.99764198, 0.99875534, 0.49310729],\
+[	-6.27231984, -0.00077150, 0.00047285, 7.27154834, 0.99764257, 0.99875565, 0.49310745],\
+[	-6.27232031, -0.00077130, 0.00047273, 7.27154900, 0.99764316, 0.99875596, 0.49310751],\
+[	-6.27232077, -0.00077111, 0.00047262, 7.27154966, 0.99764374, 0.99875627, 0.49310749],\
+[	-6.27232124, -0.00077092, 0.00047250, 7.27155032, 0.99764433, 0.99875658, 0.49310765],\
+[	-6.27232171, -0.00077073, 0.00047238, 7.27155099, 0.99764492, 0.99875689, 0.49310767],\
+[	-6.27232218, -0.00077054, 0.00047226, 7.27155165, 0.99764550, 0.99875720, 0.49310775],\
+[	-6.27232265, -0.00077034, 0.00047215, 7.27155231, 0.99764609, 0.99875751, 0.49310781],\
+[	-6.27232312, -0.00077015, 0.00047203, 7.27155297, 0.99764668, 0.99875782, 0.49310787],\
+[	-6.27232359, -0.00076996, 0.00047191, 7.27155363, 0.99764726, 0.99875813, 0.49310796],\
+[	-6.27232406, -0.00076977, 0.00047179, 7.27155429, 0.99764785, 0.99875844, 0.49310787],\
+[	-6.27232452, -0.00076958, 0.00047168, 7.27155494, 0.99764843, 0.99875875, 0.49310807],\
+[	-6.27232499, -0.00076939, 0.00047156, 7.27155560, 0.99764902, 0.99875906, 0.49310819],\
+[	-6.27232546, -0.00076920, 0.00047144, 7.27155626, 0.99764960, 0.99875936, 0.49310824],\
+[	-6.27232592, -0.00076900, 0.00047132, 7.27155692, 0.99765019, 0.99875967, 0.49310831],\
+[	-6.27232639, -0.00076881, 0.00047121, 7.27155758, 0.99765077, 0.99875998, 0.49310826],\
+[	-6.27232686, -0.00076862, 0.00047109, 7.27155823, 0.99765135, 0.99876029, 0.49310841],\
+[	-6.27232732, -0.00076843, 0.00047097, 7.27155889, 0.99765194, 0.99876060, 0.49310851],\
+[	-6.27232779, -0.00076824, 0.00047086, 7.27155955, 0.99765252, 0.99876090, 0.49310855],\
+[	-6.27232825, -0.00076805, 0.00047074, 7.27156020, 0.99765310, 0.99876121, 0.49310862],\
+[	-6.27232872, -0.00076786, 0.00047062, 7.27156086, 0.99765369, 0.99876152, 0.49310868],\
+[	-6.27232918, -0.00076767, 0.00047050, 7.27156151, 0.99765427, 0.99876183, 0.49310870],\
+[	-6.27232965, -0.00076748, 0.00047039, 7.27156217, 0.99765485, 0.99876213, 0.49310885],\
+[	-6.27233011, -0.00076729, 0.00047027, 7.27156282, 0.99765543, 0.99876244, 0.49310881],\
+[	-6.27233058, -0.00076710, 0.00047015, 7.27156348, 0.99765601, 0.99876275, 0.49310901],\
+[	-6.27233104, -0.00076691, 0.00047004, 7.27156413, 0.99765660, 0.99876305, 0.49310905],\
+[	-6.27233150, -0.00076672, 0.00046992, 7.27156478, 0.99765718, 0.99876336, 0.49310906],\
+[	-6.27233197, -0.00076653, 0.00046981, 7.27156544, 0.99765776, 0.99876367, 0.49310915],\
+[	-6.27233243, -0.00076634, 0.00046969, 7.27156609, 0.99765834, 0.99876397, 0.49310926],\
+[	-6.27233289, -0.00076615, 0.00046957, 7.27156674, 0.99765892, 0.99876428, 0.49310922],\
+[	-6.27233336, -0.00076596, 0.00046946, 7.27156740, 0.99765950, 0.99876458, 0.49310945],\
+[	-6.27233382, -0.00076577, 0.00046934, 7.27156805, 0.99766008, 0.99876489, 0.49310949],\
+[	-6.27233428, -0.00076558, 0.00046922, 7.27156870, 0.99766065, 0.99876520, 0.49310955],\
+[	-6.27233474, -0.00076539, 0.00046911, 7.27156935, 0.99766123, 0.99876550, 0.49310960],\
+[	-6.27233520, -0.00076520, 0.00046899, 7.27157000, 0.99766181, 0.99876581, 0.49310966],\
+[	-6.27233566, -0.00076501, 0.00046888, 7.27157065, 0.99766239, 0.99876611, 0.49310976],\
+[	-6.27233612, -0.00076482, 0.00046876, 7.27157130, 0.99766297, 0.99876642, 0.49310982],\
+[	-6.27233658, -0.00076464, 0.00046864, 7.27157195, 0.99766355, 0.99876672, 0.49310988],\
+[	-6.27233705, -0.00076445, 0.00046853, 7.27157260, 0.99766412, 0.99876703, 0.49310995],\
+[	-6.27233751, -0.00076426, 0.00046841, 7.27157325, 0.99766470, 0.99876733, 0.49310998],\
+[	-6.27233797, -0.00076407, 0.00046830, 7.27157390, 0.99766528, 0.99876763, 0.49311004],\
+[	-6.27233843, -0.00076388, 0.00046818, 7.27157454, 0.99766585, 0.99876794, 0.49311017],\
+[	-6.27233888, -0.00076369, 0.00046806, 7.27157519, 0.99766643, 0.99876824, 0.49311019],\
+[	-6.27233934, -0.00076350, 0.00046795, 7.27157584, 0.99766701, 0.99876855, 0.49311023],\
+[	-6.27233980, -0.00076332, 0.00046783, 7.27157649, 0.99766758, 0.99876885, 0.49311028],\
+[	-6.27234026, -0.00076313, 0.00046772, 7.27157713, 0.99766816, 0.99876915, 0.49311042],\
+[	-6.27234072, -0.00076294, 0.00046760, 7.27157778, 0.99766873, 0.99876946, 0.49311047],\
+[	-6.27234118, -0.00076275, 0.00046749, 7.27157843, 0.99766931, 0.99876976, 0.49311045],\
+[	-6.27234163, -0.00076256, 0.00046737, 7.27157907, 0.99766988, 0.99877006, 0.49311061],\
+[	-6.27234209, -0.00076238, 0.00046726, 7.27157972, 0.99767046, 0.99877037, 0.49311059],\
+[	-6.27234255, -0.00076219, 0.00046714, 7.27158036, 0.99767103, 0.99877067, 0.49311072],\
+[	-6.27234301, -0.00076200, 0.00046703, 7.27158101, 0.99767160, 0.99877097, 0.49311081],\
+[	-6.27234346, -0.00076181, 0.00046691, 7.27158165, 0.99767218, 0.99877128, 0.49311088],\
+[	-6.27234392, -0.00076163, 0.00046680, 7.27158229, 0.99767275, 0.99877158, 0.49311099],\
+[	-6.27234438, -0.00076144, 0.00046668, 7.27158294, 0.99767332, 0.99877188, 0.49311100],\
+[	-6.27234483, -0.00076125, 0.00046657, 7.27158358, 0.99767389, 0.99877218, 0.49311108],\
+[	-6.27234529, -0.00076106, 0.00046645, 7.27158422, 0.99767447, 0.99877248, 0.49311114],\
+[	-6.27234574, -0.00076088, 0.00046634, 7.27158487, 0.99767504, 0.99877279, 0.49311126],\
+[	-6.27234620, -0.00076069, 0.00046622, 7.27158551, 0.99767561, 0.99877309, 0.49311118],\
+[	-6.27234665, -0.00076050, 0.00046611, 7.27158615, 0.99767618, 0.99877339, 0.49311132],\
+[	-6.27234711, -0.00076032, 0.00046599, 7.27158679, 0.99767675, 0.99877369, 0.49311134],\
+[	-6.27234756, -0.00076013, 0.00046588, 7.27158743, 0.99767732, 0.99877399, 0.49311138],\
+[	-6.27234802, -0.00075994, 0.00046576, 7.27158807, 0.99767789, 0.99877429, 0.49311158],\
+[	-6.27234847, -0.00075976, 0.00046565, 7.27158872, 0.99767846, 0.99877459, 0.49311152],\
+[	-6.27234892, -0.00075957, 0.00046554, 7.27158935, 0.99767903, 0.99877489, 0.49311170],\
+[	-6.27234938, -0.00075938, 0.00046542, 7.27158999, 0.99767960, 0.99877519, 0.49311176],\
+[	-6.27234983, -0.00075920, 0.00046531, 7.27159063, 0.99768017, 0.99877550, 0.49311184],\
+[	-6.27235028, -0.00075901, 0.00046519, 7.27159127, 0.99768074, 0.99877580, 0.49311180],\
+[	-6.27235074, -0.00075882, 0.00046508, 7.27159191, 0.99768131, 0.99877610, 0.49311187],\
+[	-6.27235119, -0.00075864, 0.00046496, 7.27159255, 0.99768188, 0.99877640, 0.49311206],\
+[	-6.27235164, -0.00075845, 0.00046485, 7.27159319, 0.99768245, 0.99877670, 0.49311212],\
+[	-6.27235209, -0.00075827, 0.00046474, 7.27159383, 0.99768302, 0.99877700, 0.49311212],\
+[	-6.27235255, -0.00075808, 0.00046462, 7.27159446, 0.99768358, 0.99877730, 0.49311214],\
+[	-6.27235300, -0.00075790, 0.00046451, 7.27159510, 0.99768415, 0.99877759, 0.49311223],\
+[	-6.27235345, -0.00075771, 0.00046440, 7.27159574, 0.99768472, 0.99877789, 0.49311231],\
+[	-6.27235390, -0.00075753, 0.00046428, 7.27159637, 0.99768529, 0.99877819, 0.49311242],\
+[	-6.27235435, -0.00075734, 0.00046417, 7.27159701, 0.99768585, 0.99877849, 0.49311242],\
+[	-6.27235480, -0.00075715, 0.00046405, 7.27159765, 0.99768642, 0.99877879, 0.49311257],\
+[	-6.27235525, -0.00075697, 0.00046394, 7.27159828, 0.99768699, 0.99877909, 0.49311263],\
+[	-6.27235570, -0.00075678, 0.00046383, 7.27159892, 0.99768755, 0.99877939, 0.49311265],\
+[	-6.27235615, -0.00075660, 0.00046371, 7.27159955, 0.99768812, 0.99877969, 0.49311271],\
+[	-6.27235660, -0.00075641, 0.00046360, 7.27160019, 0.99768868, 0.99877999, 0.49311273],\
+[	-6.27235705, -0.00075623, 0.00046349, 7.27160082, 0.99768925, 0.99878028, 0.49311292],\
+[	-6.27235750, -0.00075605, 0.00046337, 7.27160145, 0.99768981, 0.99878058, 0.49311290],\
+[	-6.27235795, -0.00075586, 0.00046326, 7.27160209, 0.99769038, 0.99878088, 0.49311294],\
+[	-6.27235840, -0.00075568, 0.00046315, 7.27160272, 0.99769094, 0.99878118, 0.49311305],\
+[	-6.27235884, -0.00075549, 0.00046303, 7.27160335, 0.99769150, 0.99878147, 0.49311309],\
+[	-6.27235929, -0.00075531, 0.00046292, 7.27160398, 0.99769207, 0.99878177, 0.49311327],\
+[	-6.27235974, -0.00075512, 0.00046281, 7.27160462, 0.99769263, 0.99878207, 0.49311324],\
+[	-6.27236019, -0.00075494, 0.00046269, 7.27160525, 0.99769319, 0.99878237, 0.49311327],\
+[	-6.27236063, -0.00075475, 0.00046258, 7.27160588, 0.99769376, 0.99878266, 0.49311333],\
+[	-6.27236108, -0.00075457, 0.00046247, 7.27160651, 0.99769432, 0.99878296, 0.49311348],\
+[	-6.27236153, -0.00075439, 0.00046236, 7.27160714, 0.99769488, 0.99878326, 0.49311361],\
+[	-6.27236197, -0.00075420, 0.00046224, 7.27160777, 0.99769544, 0.99878355, 0.49311357],\
+[	-6.27236242, -0.00075402, 0.00046213, 7.27160840, 0.99769601, 0.99878385, 0.49311362],\
+[	-6.27236287, -0.00075384, 0.00046202, 7.27160903, 0.99769657, 0.99878415, 0.49311367],\
+[	-6.27236331, -0.00075365, 0.00046191, 7.27160966, 0.99769713, 0.99878444, 0.49311366],\
+[	-6.27236376, -0.00075347, 0.00046179, 7.27161029, 0.99769769, 0.99878474, 0.49311384],\
+[	-6.27236420, -0.00075329, 0.00046168, 7.27161092, 0.99769825, 0.99878503, 0.49311393],\
+[	-6.27236465, -0.00075310, 0.00046157, 7.27161155, 0.99769881, 0.99878533, 0.49311405],\
+[	-6.27236509, -0.00075292, 0.00046146, 7.27161217, 0.99769937, 0.99878563, 0.49311410],\
+[	-6.27236554, -0.00075274, 0.00046134, 7.27161280, 0.99769993, 0.99878592, 0.49311401],\
+[	-6.27236598, -0.00075255, 0.00046123, 7.27161343, 0.99770049, 0.99878622, 0.49311424],\
+[	-6.27236643, -0.00075237, 0.00046112, 7.27161406, 0.99770105, 0.99878651, 0.49311425],\
+[	-6.27236687, -0.00075219, 0.00046101, 7.27161468, 0.99770161, 0.99878681, 0.49311423],\
+[	-6.27236731, -0.00075200, 0.00046089, 7.27161531, 0.99770217, 0.99878710, 0.49311442],\
+[	-6.27236776, -0.00075182, 0.00046078, 7.27161594, 0.99770272, 0.99878740, 0.49311431],\
+[	-6.27236820, -0.00075164, 0.00046067, 7.27161656, 0.99770328, 0.99878769, 0.49311449],\
+[	-6.27236864, -0.00075146, 0.00046056, 7.27161719, 0.99770384, 0.99878798, 0.49311451],\
+[	-6.27236909, -0.00075127, 0.00046045, 7.27161781, 0.99770440, 0.99878828, 0.49311462],\
+[	-6.27236953, -0.00075109, 0.00046034, 7.27161844, 0.99770496, 0.99878857, 0.49311465],\
+[	-6.27236997, -0.00075091, 0.00046022, 7.27161906, 0.99770551, 0.99878887, 0.49311479],\
+[	-6.27237041, -0.00075073, 0.00046011, 7.27161968, 0.99770607, 0.99878916, 0.49311488],\
+[	-6.27237085, -0.00075055, 0.00046000, 7.27162031, 0.99770663, 0.99878945, 0.49311489],\
+[	-6.27237130, -0.00075036, 0.00045989, 7.27162093, 0.99770718, 0.99878975, 0.49311496],\
+[	-6.27237174, -0.00075018, 0.00045978, 7.27162155, 0.99770774, 0.99879004, 0.49311494],\
+[	-6.27237218, -0.00075000, 0.00045967, 7.27162218, 0.99770829, 0.99879033, 0.49311510],\
+[	-6.27237262, -0.00074982, 0.00045955, 7.27162280, 0.99770885, 0.99879063, 0.49311504],\
+[	-6.27237306, -0.00074964, 0.00045944, 7.27162342, 0.99770941, 0.99879092, 0.49311523],\
+[	-6.27237350, -0.00074946, 0.00045933, 7.27162404, 0.99770996, 0.99879121, 0.49311526],\
+[	-6.27237394, -0.00074927, 0.00045922, 7.27162466, 0.99771051, 0.99879151, 0.49311531],\
+[	-6.27237438, -0.00074909, 0.00045911, 7.27162529, 0.99771107, 0.99879180, 0.49311549],\
+[	-6.27237482, -0.00074891, 0.00045900, 7.27162591, 0.99771162, 0.99879209, 0.49311546],\
+[	-6.27237526, -0.00074873, 0.00045889, 7.27162653, 0.99771218, 0.99879238, 0.49311554],\
+[	-6.27237570, -0.00074855, 0.00045878, 7.27162715, 0.99771273, 0.99879268, 0.49311557],\
+[	-6.27237614, -0.00074837, 0.00045866, 7.27162777, 0.99771328, 0.99879297, 0.49311573],\
+[	-6.27237657, -0.00074819, 0.00045855, 7.27162839, 0.99771384, 0.99879326, 0.49311571],\
+[	-6.27237701, -0.00074801, 0.00045844, 7.27162901, 0.99771439, 0.99879355, 0.49311580],\
+[	-6.27237745, -0.00074783, 0.00045833, 7.27162962, 0.99771494, 0.99879384, 0.49311585],\
+[	-6.27237789, -0.00074765, 0.00045822, 7.27163024, 0.99771549, 0.99879413, 0.49311592],\
+[	-6.27237833, -0.00074747, 0.00045811, 7.27163086, 0.99771605, 0.99879442, 0.49311607],\
+[	-6.27237876, -0.00074728, 0.00045800, 7.27163148, 0.99771660, 0.99879472, 0.49311608],\
+[	-6.27237920, -0.00074710, 0.00045789, 7.27163210, 0.99771715, 0.99879501, 0.49311612],\
+[	-6.27237964, -0.00074692, 0.00045778, 7.27163271, 0.99771770, 0.99879530, 0.49311622],\
+[	-6.27238007, -0.00074674, 0.00045767, 7.27163333, 0.99771825, 0.99879559, 0.49311623],\
+[	-6.27238051, -0.00074656, 0.00045756, 7.27163395, 0.99771880, 0.99879588, 0.49311629],\
+[	-6.27238095, -0.00074638, 0.00045745, 7.27163456, 0.99771935, 0.99879617, 0.49311629],\
+[	-6.27238138, -0.00074620, 0.00045734, 7.27163518, 0.99771990, 0.99879646, 0.49311644],\
+[	-6.27238182, -0.00074602, 0.00045723, 7.27163580, 0.99772045, 0.99879675, 0.49311641],\
+[	-6.27238225, -0.00074584, 0.00045712, 7.27163641, 0.99772100, 0.99879704, 0.49311653],\
+[	-6.27238269, -0.00074566, 0.00045701, 7.27163703, 0.99772155, 0.99879733, 0.49311671],\
+[	-6.27238312, -0.00074548, 0.00045690, 7.27163764, 0.99772210, 0.99879762, 0.49311673],\
+[	-6.27238356, -0.00074531, 0.00045679, 7.27163825, 0.99772265, 0.99879791, 0.49311683],\
+[	-6.27238399, -0.00074513, 0.00045668, 7.27163887, 0.99772320, 0.99879820, 0.49311676],\
+[	-6.27238443, -0.00074495, 0.00045657, 7.27163948, 0.99772375, 0.99879849, 0.49311684],\
+[	-6.27238486, -0.00074477, 0.00045646, 7.27164010, 0.99772429, 0.99879878, 0.49311690],\
+[	-6.27238530, -0.00074459, 0.00045635, 7.27164071, 0.99772484, 0.99879907, 0.49311703],\
+[	-6.27238573, -0.00074441, 0.00045624, 7.27164132, 0.99772539, 0.99879936, 0.49311710],\
+[	-6.27238616, -0.00074423, 0.00045613, 7.27164193, 0.99772594, 0.99879964, 0.49311708],\
+[	-6.27238660, -0.00074405, 0.00045602, 7.27164255, 0.99772648, 0.99879993, 0.49311725],\
+[	-6.27238703, -0.00074387, 0.00045591, 7.27164316, 0.99772703, 0.99880022, 0.49311732],\
+[	-6.27238746, -0.00074369, 0.00045580, 7.27164377, 0.99772758, 0.99880051, 0.49311738],\
+[	-6.27238790, -0.00074352, 0.00045569, 7.27164438, 0.99772812, 0.99880080, 0.49311739],\
+[	-6.27238833, -0.00074334, 0.00045558, 7.27164499, 0.99772867, 0.99880109, 0.49311746],\
+[	-6.27238876, -0.00074316, 0.00045547, 7.27164560, 0.99772921, 0.99880137, 0.49311752],\
+[	-6.27238919, -0.00074298, 0.00045536, 7.27164621, 0.99772976, 0.99880166, 0.49311758],\
+[	-6.27238962, -0.00074280, 0.00045525, 7.27164682, 0.99773030, 0.99880195, 0.49311766],\
+[	-6.27239006, -0.00074262, 0.00045514, 7.27164743, 0.99773085, 0.99880224, 0.49311772],\
+[	-6.27239049, -0.00074245, 0.00045503, 7.27164804, 0.99773139, 0.99880252, 0.49311777],\
+[	-6.27239092, -0.00074227, 0.00045492, 7.27164865, 0.99773194, 0.99880281, 0.49311785],\
+[	-6.27239135, -0.00074209, 0.00045481, 7.27164926, 0.99773248, 0.99880310, 0.49311791],\
+[	-6.27239178, -0.00074191, 0.00045470, 7.27164987, 0.99773303, 0.99880339, 0.49311797],\
+[	-6.27239221, -0.00074173, 0.00045459, 7.27165048, 0.99773357, 0.99880367, 0.49311806],\
+[	-6.27239264, -0.00074156, 0.00045449, 7.27165108, 0.99773411, 0.99880396, 0.49311809],\
+[	-6.27239307, -0.00074138, 0.00045438, 7.27165169, 0.99773466, 0.99880425, 0.49311816],\
+[	-6.27239350, -0.00074120, 0.00045427, 7.27165230, 0.99773520, 0.99880453, 0.49311824],\
+[	-6.27239393, -0.00074102, 0.00045416, 7.27165291, 0.99773574, 0.99880482, 0.49311829],\
+[	-6.27239436, -0.00074085, 0.00045405, 7.27165351, 0.99773628, 0.99880510, 0.49311835],\
+[	-6.27239479, -0.00074067, 0.00045394, 7.27165412, 0.99773683, 0.99880539, 0.49311839],\
+[	-6.27239522, -0.00074049, 0.00045383, 7.27165472, 0.99773737, 0.99880568, 0.49311849],\
+[	-6.27239564, -0.00074031, 0.00045372, 7.27165533, 0.99773791, 0.99880596, 0.49311853],\
+[	-6.27239607, -0.00074014, 0.00045362, 7.27165593, 0.99773845, 0.99880625, 0.49311862],\
+[	-6.27239650, -0.00073996, 0.00045351, 7.27165654, 0.99773899, 0.99880653, 0.49311867],\
+[	-6.27239693, -0.00073978, 0.00045340, 7.27165714, 0.99773953, 0.99880682, 0.49311873],\
+[	-6.27239736, -0.00073961, 0.00045329, 7.27165775, 0.99774007, 0.99880710, 0.49311878],\
+[	-6.27239778, -0.00073943, 0.00045318, 7.27165835, 0.99774061, 0.99880739, 0.49311885],\
+[	-6.27239821, -0.00073925, 0.00045307, 7.27165896, 0.99774115, 0.99880767, 0.49311891],\
+[	-6.27239864, -0.00073908, 0.00045296, 7.27165956, 0.99774169, 0.99880796, 0.49311897],\
+[	-6.27239906, -0.00073890, 0.00045286, 7.27166016, 0.99774223, 0.99880824, 0.49311905],\
+[	-6.27239949, -0.00073872, 0.00045275, 7.27166077, 0.99774277, 0.99880853, 0.49311912],\
+[	-6.27239992, -0.00073855, 0.00045264, 7.27166137, 0.99774331, 0.99880881, 0.49311918],\
+[	-6.27240034, -0.00073837, 0.00045253, 7.27166197, 0.99774385, 0.99880910, 0.49311924],\
+[	-6.27240077, -0.00073820, 0.00045242, 7.27166257, 0.99774439, 0.99880938, 0.49311929],\
+[	-6.27240119, -0.00073802, 0.00045232, 7.27166317, 0.99774492, 0.99880966, 0.49311935],\
+[	-6.27240162, -0.00073784, 0.00045221, 7.27166378, 0.99774546, 0.99880995, 0.49311941],\
+[	-6.27240205, -0.00073767, 0.00045210, 7.27166438, 0.99774600, 0.99881023, 0.49311949],\
+[	-6.27240247, -0.00073749, 0.00045199, 7.27166498, 0.99774654, 0.99881051, 0.49311956],\
+[	-6.27240289, -0.00073732, 0.00045188, 7.27166558, 0.99774707, 0.99881080, 0.49311961],\
+[	-6.27240332, -0.00073714, 0.00045178, 7.27166618, 0.99774761, 0.99881108, 0.49311968],\
+[	-6.27240374, -0.00073697, 0.00045167, 7.27166678, 0.99774815, 0.99881136, 0.49311975],\
+[	-6.27240417, -0.00073679, 0.00045156, 7.27166738, 0.99774868, 0.99881165, 0.49311980],\
+[	-6.27240459, -0.00073662, 0.00045145, 7.27166798, 0.99774922, 0.99881193, 0.49311987],\
+[	-6.27240502, -0.00073644, 0.00045135, 7.27166858, 0.99774976, 0.99881221, 0.49311992],\
+[	-6.27240544, -0.00073626, 0.00045124, 7.27166917, 0.99775029, 0.99881250, 0.49312000],\
+[	-6.27240586, -0.00073609, 0.00045113, 7.27166977, 0.99775083, 0.99881278, 0.49312006],\
+[	-6.27240628, -0.00073591, 0.00045102, 7.27167037, 0.99775136, 0.99881306, 0.49312011],\
+[	-6.27240671, -0.00073574, 0.00045092, 7.27167097, 0.99775190, 0.99881334, 0.49312017],\
+[	-6.27240713, -0.00073556, 0.00045081, 7.27167157, 0.99775243, 0.99881362, 0.49312022],\
+[	-6.27240755, -0.00073539, 0.00045070, 7.27167216, 0.99775297, 0.99881391, 0.49312031],\
+[	-6.27240797, -0.00073522, 0.00045060, 7.27167276, 0.99775350, 0.99881419, 0.49312033],\
+[	-6.27240840, -0.00073504, 0.00045049, 7.27167336, 0.99775403, 0.99881447, 0.49312043],\
+[	-6.27240882, -0.00073487, 0.00045038, 7.27167395, 0.99775457, 0.99881475, 0.49312049],\
+[	-6.27240924, -0.00073469, 0.00045027, 7.27167455, 0.99775510, 0.99881503, 0.49312054],\
+[	-6.27240966, -0.00073452, 0.00045017, 7.27167514, 0.99775563, 0.99881531, 0.49312061],\
+[	-6.27241008, -0.00073434, 0.00045006, 7.27167574, 0.99775617, 0.99881560, 0.49312068],\
+[	-6.27241050, -0.00073417, 0.00044995, 7.27167633, 0.99775670, 0.99881588, 0.49312074],\
+[	-6.27241092, -0.00073400, 0.00044985, 7.27167693, 0.99775723, 0.99881616, 0.49312080],\
+[	-6.27241134, -0.00073382, 0.00044974, 7.27167752, 0.99775776, 0.99881644, 0.49312087],\
+[	-6.27241176, -0.00073365, 0.00044963, 7.27167812, 0.99775829, 0.99881672, 0.49312093],\
+[	-6.27241218, -0.00073347, 0.00044953, 7.27167871, 0.99775883, 0.99881700, 0.49312099],\
+[	-6.27241260, -0.00073330, 0.00044942, 7.27167930, 0.99775936, 0.99881728, 0.49312106],\
+[	-6.27241302, -0.00073313, 0.00044931, 7.27167990, 0.99775989, 0.99881756, 0.49312110],\
+[	-6.27241344, -0.00073295, 0.00044921, 7.27168049, 0.99776042, 0.99881784, 0.49312117],\
+[	-6.27241386, -0.00073278, 0.00044910, 7.27168108, 0.99776095, 0.99881812, 0.49312124],\
+[	-6.27241428, -0.00073261, 0.00044899, 7.27168167, 0.99776148, 0.99881840, 0.49312129],\
+[	-6.27241470, -0.00073243, 0.00044889, 7.27168227, 0.99776201, 0.99881868, 0.49312137],\
+[	-6.27241512, -0.00073226, 0.00044878, 7.27168286, 0.99776254, 0.99881896, 0.49312141],\
+[	-6.27241554, -0.00073209, 0.00044868, 7.27168345, 0.99776307, 0.99881924, 0.49312147],\
+[	-6.27241595, -0.00073191, 0.00044857, 7.27168404, 0.99776360, 0.99881952, 0.49312156],\
+[	-6.27241637, -0.00073174, 0.00044846, 7.27168463, 0.99776413, 0.99881980, 0.49312161],\
+[	-6.27241679, -0.00073157, 0.00044836, 7.27168522, 0.99776466, 0.99882008, 0.49312166],\
+[	-6.27241721, -0.00073139, 0.00044825, 7.27168581, 0.99776518, 0.99882035, 0.49312172],\
+[	-6.27241762, -0.00073122, 0.00044815, 7.27168640, 0.99776571, 0.99882063, 0.49312178],\
+[	-6.27241804, -0.00073105, 0.00044804, 7.27168699, 0.99776624, 0.99882091, 0.49312185],\
+[	-6.27241846, -0.00073088, 0.00044793, 7.27168758, 0.99776677, 0.99882119, 0.49312193],\
+[	-6.27241887, -0.00073070, 0.00044783, 7.27168817, 0.99776730, 0.99882147, 0.49312197],\
+[	-6.27241929, -0.00073053, 0.00044772, 7.27168876, 0.99776782, 0.99882175, 0.49312203],\
+[	-6.27241971, -0.00073036, 0.00044762, 7.27168935, 0.99776835, 0.99882202, 0.49312211],\
+[	-6.27242012, -0.00073019, 0.00044751, 7.27168994, 0.99776888, 0.99882230, 0.49312215],\
+[	-6.27242054, -0.00073001, 0.00044741, 7.27169052, 0.99776940, 0.99882258, 0.49312222],\
+[	-6.27242095, -0.00072984, 0.00044730, 7.27169111, 0.99776993, 0.99882286, 0.49312230],\
+[	-6.27242137, -0.00072967, 0.00044719, 7.27169170, 0.99777045, 0.99882314, 0.49312233],\
+[	-6.27242178, -0.00072950, 0.00044709, 7.27169229, 0.99777098, 0.99882341, 0.49312241],\
+[	-6.27242220, -0.00072933, 0.00044698, 7.27169287, 0.99777151, 0.99882369, 0.49312246],\
+[	-6.27242261, -0.00072915, 0.00044688, 7.27169346, 0.99777203, 0.99882397, 0.49312253],\
+[	-6.27242303, -0.00072898, 0.00044677, 7.27169405, 0.99777256, 0.99882424, 0.49312260],\
+[	-6.27242344, -0.00072881, 0.00044667, 7.27169463, 0.99777308, 0.99882452, 0.49312265],\
+[	-6.27242386, -0.00072864, 0.00044656, 7.27169522, 0.99777361, 0.99882480, 0.49312272],\
+[	-6.27242427, -0.00072847, 0.00044646, 7.27169580, 0.99777413, 0.99882508, 0.49312276],\
+[	-6.27242468, -0.00072830, 0.00044635, 7.27169639, 0.99777465, 0.99882535, 0.49312285],\
+[	-6.27242510, -0.00072813, 0.00044625, 7.27169697, 0.99777518, 0.99882563, 0.49312291],\
+[	-6.27242551, -0.00072795, 0.00044614, 7.27169756, 0.99777570, 0.99882590, 0.49312295],\
+[	-6.27242592, -0.00072778, 0.00044604, 7.27169814, 0.99777622, 0.99882618, 0.49312303],\
+[	-6.27242634, -0.00072761, 0.00044593, 7.27169872, 0.99777675, 0.99882646, 0.49312307],\
+[	-6.27242675, -0.00072744, 0.00044583, 7.27169931, 0.99777727, 0.99882673, 0.49312312],\
+[	-6.27242716, -0.00072727, 0.00044572, 7.27169989, 0.99777779, 0.99882701, 0.49312319],\
+[	-6.27242757, -0.00072710, 0.00044562, 7.27170047, 0.99777831, 0.99882728, 0.49312326],\
+[	-6.27242798, -0.00072693, 0.00044551, 7.27170106, 0.99777884, 0.99882756, 0.49312335],\
+[	-6.27242840, -0.00072676, 0.00044541, 7.27170164, 0.99777936, 0.99882783, 0.49312338],\
+[	-6.27242881, -0.00072659, 0.00044530, 7.27170222, 0.99777988, 0.99882811, 0.49312345],\
+[	-6.27242922, -0.00072642, 0.00044520, 7.27170280, 0.99778040, 0.99882838, 0.49312349],\
+[	-6.27242963, -0.00072625, 0.00044509, 7.27170338, 0.99778092, 0.99882866, 0.49312358],\
+[	-6.27243004, -0.00072608, 0.00044499, 7.27170397, 0.99778144, 0.99882893, 0.49312364],\
+[	-6.27243045, -0.00072591, 0.00044488, 7.27170455, 0.99778196, 0.99882921, 0.49312368],\
+[	-6.27243086, -0.00072574, 0.00044478, 7.27170513, 0.99778248, 0.99882948, 0.49312376],\
+[	-6.27243127, -0.00072557, 0.00044468, 7.27170571, 0.99778300, 0.99882976, 0.49312381],\
+[	-6.27243168, -0.00072540, 0.00044457, 7.27170629, 0.99778352, 0.99883003, 0.49312388],\
+[	-6.27243209, -0.00072523, 0.00044447, 7.27170687, 0.99778404, 0.99883031, 0.49312394],\
+[	-6.27243250, -0.00072506, 0.00044436, 7.27170745, 0.99778456, 0.99883058, 0.49312397],\
+[	-6.27243291, -0.00072489, 0.00044426, 7.27170803, 0.99778508, 0.99883086, 0.49312405],\
+[	-6.27243332, -0.00072472, 0.00044416, 7.27170860, 0.99778560, 0.99883113, 0.49312410],\
+[	-6.27243373, -0.00072455, 0.00044405, 7.27170918, 0.99778612, 0.99883140, 0.49312419],\
+[	-6.27243414, -0.00072438, 0.00044395, 7.27170976, 0.99778664, 0.99883168, 0.49312424],\
+[	-6.27243455, -0.00072421, 0.00044384, 7.27171034, 0.99778716, 0.99883195, 0.49312429],\
+[	-6.27243496, -0.00072404, 0.00044374, 7.27171092, 0.99778767, 0.99883222, 0.49312436],\
+[	-6.27243536, -0.00072387, 0.00044364, 7.27171150, 0.99778819, 0.99883250, 0.49312441],\
+[	-6.27243577, -0.00072370, 0.00044353, 7.27171207, 0.99778871, 0.99883277, 0.49312447],\
+[	-6.27243618, -0.00072353, 0.00044343, 7.27171265, 0.99778923, 0.99883304, 0.49312454],\
+[	-6.27243659, -0.00072336, 0.00044332, 7.27171323, 0.99778974, 0.99883331, 0.49312460],\
+[	-6.27243700, -0.00072319, 0.00044322, 7.27171380, 0.99779026, 0.99883359, 0.49312464],\
+[	-6.27243740, -0.00072302, 0.00044312, 7.27171438, 0.99779078, 0.99883386, 0.49312471],\
+[	-6.27243781, -0.00072285, 0.00044301, 7.27171495, 0.99779129, 0.99883413, 0.49312476],\
+[	-6.27243822, -0.00072269, 0.00044291, 7.27171553, 0.99779181, 0.99883440, 0.49312483],\
+[	-6.27243862, -0.00072252, 0.00044281, 7.27171611, 0.99779232, 0.99883468, 0.49312489],\
+[	-6.27243903, -0.00072235, 0.00044270, 7.27171668, 0.99779284, 0.99883495, 0.49312495],\
+[	-6.27243944, -0.00072218, 0.00044260, 7.27171726, 0.99779336, 0.99883522, 0.49312500],\
+[	-6.27243984, -0.00072201, 0.00044250, 7.27171783, 0.99779387, 0.99883549, 0.49312508],\
+[	-6.27244025, -0.00072184, 0.00044239, 7.27171840, 0.99779438, 0.99883576, 0.49312514],\
+[	-6.27244065, -0.00072167, 0.00044229, 7.27171898, 0.99779490, 0.99883604, 0.49312518],\
+[	-6.27244106, -0.00072151, 0.00044219, 7.27171955, 0.99779541, 0.99883631, 0.49312525],\
+[	-6.27244146, -0.00072134, 0.00044208, 7.27172012, 0.99779593, 0.99883658, 0.49312531],\
+[	-6.27244187, -0.00072117, 0.00044198, 7.27172070, 0.99779644, 0.99883685, 0.49312537],\
+[	-6.27244227, -0.00072100, 0.00044188, 7.27172127, 0.99779696, 0.99883712, 0.49312544],\
+[	-6.27244268, -0.00072083, 0.00044177, 7.27172184, 0.99779747, 0.99883739, 0.49312550],\
+[	-6.27244308, -0.00072067, 0.00044167, 7.27172242, 0.99779798, 0.99883766, 0.49312555],\
+[	-6.27244349, -0.00072050, 0.00044157, 7.27172299, 0.99779849, 0.99883793, 0.49312563],\
+[	-6.27244389, -0.00072033, 0.00044147, 7.27172356, 0.99779901, 0.99883820, 0.49312567],\
+[	-6.27244429, -0.00072016, 0.00044136, 7.27172413, 0.99779952, 0.99883847, 0.49312573],\
+[	-6.27244470, -0.00072000, 0.00044126, 7.27172470, 0.99780003, 0.99883874, 0.49312578],\
+[	-6.27244510, -0.00071983, 0.00044116, 7.27172527, 0.99780054, 0.99883901, 0.49312585],\
+[	-6.27244550, -0.00071966, 0.00044105, 7.27172584, 0.99780105, 0.99883928, 0.49312592],\
+[	-6.27244591, -0.00071949, 0.00044095, 7.27172641, 0.99780157, 0.99883955, 0.49312598],\
+[	-6.27244631, -0.00071933, 0.00044085, 7.27172698, 0.99780208, 0.99883982, 0.49312604],\
+[	-6.27244671, -0.00071916, 0.00044075, 7.27172755, 0.99780259, 0.99884009, 0.49312608],\
+[	-6.27244712, -0.00071899, 0.00044064, 7.27172812, 0.99780310, 0.99884036, 0.49312614],\
+[	-6.27244752, -0.00071883, 0.00044054, 7.27172869, 0.99780361, 0.99884063, 0.49312622],\
+[	-6.27244792, -0.00071866, 0.00044044, 7.27172926, 0.99780412, 0.99884090, 0.49312626],\
+[	-6.27244832, -0.00071849, 0.00044034, 7.27172983, 0.99780463, 0.99884117, 0.49312632],\
+[	-6.27244872, -0.00071833, 0.00044024, 7.27173040, 0.99780514, 0.99884144, 0.49312638],\
+[	-6.27244912, -0.00071816, 0.00044013, 7.27173097, 0.99780565, 0.99884171, 0.49312645],\
+[	-6.27244953, -0.00071799, 0.00044003, 7.27173153, 0.99780616, 0.99884198, 0.49312649],\
+[	-6.27244993, -0.00071783, 0.00043993, 7.27173210, 0.99780667, 0.99884225, 0.49312657],\
+[	-6.27245033, -0.00071766, 0.00043983, 7.27173267, 0.99780718, 0.99884251, 0.49312664],\
+[	-6.27245073, -0.00071749, 0.00043972, 7.27173323, 0.99780768, 0.99884278, 0.49312669],\
+[	-6.27245113, -0.00071733, 0.00043962, 7.27173380, 0.99780819, 0.99884305, 0.49312674],\
+[	-6.27245153, -0.00071716, 0.00043952, 7.27173437, 0.99780870, 0.99884332, 0.49312680],\
+[	-6.27245193, -0.00071699, 0.00043942, 7.27173493, 0.99780921, 0.99884359, 0.49312685],\
+[	-6.27245233, -0.00071683, 0.00043932, 7.27173550, 0.99780972, 0.99884385, 0.49312691],\
+[	-6.27245273, -0.00071666, 0.00043922, 7.27173607, 0.99781022, 0.99884412, 0.49312701],\
+[	-6.27245313, -0.00071650, 0.00043911, 7.27173663, 0.99781073, 0.99884439, 0.49312703],\
+[	-6.27245353, -0.00071633, 0.00043901, 7.27173720, 0.99781124, 0.99884466, 0.49312710],\
+[	-6.27245393, -0.00071617, 0.00043891, 7.27173776, 0.99781174, 0.99884492, 0.49312716],\
+[	-6.27245432, -0.00071600, 0.00043881, 7.27173833, 0.99781225, 0.99884519, 0.49312722],\
+[	-6.27245472, -0.00071583, 0.00043871, 7.27173889, 0.99781276, 0.99884546, 0.49312728],\
+[	-6.27245512, -0.00071567, 0.00043861, 7.27173945, 0.99781326, 0.99884573, 0.49312736],\
+[	-6.27245552, -0.00071550, 0.00043850, 7.27174002, 0.99781377, 0.99884599, 0.49312741],\
+[	-6.27245592, -0.00071534, 0.00043840, 7.27174058, 0.99781427, 0.99884626, 0.49312745],\
+[	-6.27245632, -0.00071517, 0.00043830, 7.27174114, 0.99781478, 0.99884653, 0.49312752],\
+[	-6.27245671, -0.00071501, 0.00043820, 7.27174171, 0.99781528, 0.99884679, 0.49312756],\
+[	-6.27245711, -0.00071484, 0.00043810, 7.27174227, 0.99781579, 0.99884706, 0.49312763],\
+[	-6.27245751, -0.00071468, 0.00043800, 7.27174283, 0.99781629, 0.99884733, 0.49312770],\
+[	-6.27245791, -0.00071451, 0.00043790, 7.27174339, 0.99781680, 0.99884759, 0.49312773],\
+[	-6.27245830, -0.00071435, 0.00043779, 7.27174396, 0.99781730, 0.99884786, 0.49312781],\
+[	-6.27245870, -0.00071418, 0.00043769, 7.27174452, 0.99781781, 0.99884812, 0.49312788],\
+[	-6.27245910, -0.00071402, 0.00043759, 7.27174508, 0.99781831, 0.99884839, 0.49312794],\
+[	-6.27245949, -0.00071385, 0.00043749, 7.27174564, 0.99781881, 0.99884866, 0.49312798],\
+[	-6.27245989, -0.00071369, 0.00043739, 7.27174620, 0.99781932, 0.99884892, 0.49312802],\
+[	-6.27246028, -0.00071352, 0.00043729, 7.27174676, 0.99781982, 0.99884919, 0.49312810],\
+[	-6.27246068, -0.00071336, 0.00043719, 7.27174732, 0.99782032, 0.99884945, 0.49312816],\
+[	-6.27246108, -0.00071320, 0.00043709, 7.27174788, 0.99782083, 0.99884972, 0.49312820],\
+[	-6.27246147, -0.00071303, 0.00043699, 7.27174844, 0.99782133, 0.99884998, 0.49312828],\
+[	-6.27246187, -0.00071287, 0.00043689, 7.27174900, 0.99782183, 0.99885025, 0.49312834],\
+[	-6.27246226, -0.00071270, 0.00043679, 7.27174956, 0.99782233, 0.99885051, 0.49312839],\
+[	-6.27246266, -0.00071254, 0.00043669, 7.27175012, 0.99782283, 0.99885078, 0.49312847],\
+[	-6.27246305, -0.00071237, 0.00043658, 7.27175068, 0.99782333, 0.99885104, 0.49312849],\
+[	-6.27246345, -0.00071221, 0.00043648, 7.27175123, 0.99782384, 0.99885131, 0.49312857],\
+[	-6.27246384, -0.00071205, 0.00043638, 7.27175179, 0.99782434, 0.99885157, 0.49312862],\
+[	-6.27246423, -0.00071188, 0.00043628, 7.27175235, 0.99782484, 0.99885183, 0.49312870],\
+[	-6.27246463, -0.00071172, 0.00043618, 7.27175291, 0.99782534, 0.99885210, 0.49312875],\
+[	-6.27246502, -0.00071156, 0.00043608, 7.27175347, 0.99782584, 0.99885236, 0.49312878],\
+[	-6.27246541, -0.00071139, 0.00043598, 7.27175402, 0.99782634, 0.99885263, 0.49312886],\
+[	-6.27246581, -0.00071123, 0.00043588, 7.27175458, 0.99782684, 0.99885289, 0.49312892],\
+[	-6.27246620, -0.00071107, 0.00043578, 7.27175514, 0.99782734, 0.99885315, 0.49312899],\
+[	-6.27246659, -0.00071090, 0.00043568, 7.27175569, 0.99782784, 0.99885342, 0.49312906],\
+[	-6.27246699, -0.00071074, 0.00043558, 7.27175625, 0.99782833, 0.99885368, 0.49312908],\
+[	-6.27246738, -0.00071058, 0.00043548, 7.27175680, 0.99782883, 0.99885394, 0.49312914],\
+[	-6.27246777, -0.00071041, 0.00043538, 7.27175736, 0.99782933, 0.99885421, 0.49312922],\
+[	-6.27246816, -0.00071025, 0.00043528, 7.27175791, 0.99782983, 0.99885447, 0.49312926],\
+[	-6.27246856, -0.00071009, 0.00043518, 7.27175847, 0.99783033, 0.99885473, 0.49312934],\
+[	-6.27246895, -0.00070992, 0.00043508, 7.27175902, 0.99783083, 0.99885499, 0.49312938],\
+[	-6.27246934, -0.00070976, 0.00043498, 7.27175958, 0.99783132, 0.99885526, 0.49312944],\
+[	-6.27246973, -0.00070960, 0.00043488, 7.27176013, 0.99783182, 0.99885552, 0.49312948],\
+[	-6.27247012, -0.00070944, 0.00043478, 7.27176069, 0.99783232, 0.99885578, 0.49312957],\
+[	-6.27247051, -0.00070927, 0.00043468, 7.27176124, 0.99783282, 0.99885604, 0.49312962],\
+[	-6.27247090, -0.00070911, 0.00043458, 7.27176179, 0.99783331, 0.99885631, 0.49312968],\
+[	-6.27247129, -0.00070895, 0.00043448, 7.27176235, 0.99783381, 0.99885657, 0.49312972],\
+[	-6.27247168, -0.00070879, 0.00043438, 7.27176290, 0.99783431, 0.99885683, 0.49312980],\
+[	-6.27247207, -0.00070862, 0.00043428, 7.27176345, 0.99783480, 0.99885709, 0.49312985],\
+[	-6.27247246, -0.00070846, 0.00043418, 7.27176400, 0.99783530, 0.99885735, 0.49312992],\
+[	-6.27247285, -0.00070830, 0.00043409, 7.27176456, 0.99783579, 0.99885762, 0.49312999],\
+[	-6.27247324, -0.00070814, 0.00043399, 7.27176511, 0.99783629, 0.99885788, 0.49313003],\
+[	-6.27247363, -0.00070798, 0.00043389, 7.27176566, 0.99783678, 0.99885814, 0.49313009],\
+[	-6.27247402, -0.00070781, 0.00043379, 7.27176621, 0.99783728, 0.99885840, 0.49313014],\
+[	-6.27247441, -0.00070765, 0.00043369, 7.27176676, 0.99783777, 0.99885866, 0.49313021],\
+[	-6.27247480, -0.00070749, 0.00043359, 7.27176731, 0.99783827, 0.99885892, 0.49313025],\
+[	-6.27247519, -0.00070733, 0.00043349, 7.27176786, 0.99783876, 0.99885918, 0.49313031],\
+[	-6.27247558, -0.00070717, 0.00043339, 7.27176841, 0.99783926, 0.99885944, 0.49313036],\
+[	-6.27247597, -0.00070701, 0.00043329, 7.27176896, 0.99783975, 0.99885970, 0.49313043],\
+[	-6.27247636, -0.00070684, 0.00043319, 7.27176951, 0.99784024, 0.99885996, 0.49313047],\
+[	-6.27247674, -0.00070668, 0.00043309, 7.27177006, 0.99784074, 0.99886022, 0.49313056],\
+[	-6.27247713, -0.00070652, 0.00043299, 7.27177061, 0.99784123, 0.99886048, 0.49313062],\
+[	-6.27247752, -0.00070636, 0.00043290, 7.27177116, 0.99784172, 0.99886074, 0.49313067],\
+[	-6.27247791, -0.00070620, 0.00043280, 7.27177171, 0.99784222, 0.99886100, 0.49313072],\
+[	-6.27247829, -0.00070604, 0.00043270, 7.27177226, 0.99784271, 0.99886126, 0.49313077],\
+[	-6.27247868, -0.00070588, 0.00043260, 7.27177280, 0.99784320, 0.99886152, 0.49313084],\
+[	-6.27247907, -0.00070572, 0.00043250, 7.27177335, 0.99784369, 0.99886178, 0.49313089],\
+[	-6.27247945, -0.00070556, 0.00043240, 7.27177390, 0.99784418, 0.99886204, 0.49313094],\
+[	-6.27247984, -0.00070539, 0.00043230, 7.27177445, 0.99784468, 0.99886230, 0.49313101],\
+[	-6.27248023, -0.00070523, 0.00043220, 7.27177499, 0.99784517, 0.99886256, 0.49313105],\
+[	-6.27248061, -0.00070507, 0.00043211, 7.27177554, 0.99784566, 0.99886282, 0.49313111],\
+[	-6.27248100, -0.00070491, 0.00043201, 7.27177609, 0.99784615, 0.99886308, 0.49313117],\
+[	-6.27248139, -0.00070475, 0.00043191, 7.27177663, 0.99784664, 0.99886334, 0.49313123],\
+[	-6.27248177, -0.00070459, 0.00043181, 7.27177718, 0.99784713, 0.99886360, 0.49313129],\
+[	-6.27248216, -0.00070443, 0.00043171, 7.27177773, 0.99784762, 0.99886386, 0.49313133],\
+[	-6.27248254, -0.00070427, 0.00043161, 7.27177827, 0.99784811, 0.99886411, 0.49313142],\
+[	-6.27248293, -0.00070411, 0.00043152, 7.27177882, 0.99784860, 0.99886437, 0.49313147],\
+[	-6.27248331, -0.00070395, 0.00043142, 7.27177936, 0.99784909, 0.99886463, 0.49313152],\
+[	-6.27248370, -0.00070379, 0.00043132, 7.27177991, 0.99784958, 0.99886489, 0.49313157],\
+[	-6.27248408, -0.00070363, 0.00043122, 7.27178045, 0.99785007, 0.99886515, 0.49313161],\
+[	-6.27248447, -0.00070347, 0.00043112, 7.27178099, 0.99785056, 0.99886541, 0.49313168],\
+[	-6.27248485, -0.00070331, 0.00043103, 7.27178154, 0.99785104, 0.99886566, 0.49313174],\
+[	-6.27248523, -0.00070315, 0.00043093, 7.27178208, 0.99785153, 0.99886592, 0.49313183],\
+[	-6.27248562, -0.00070299, 0.00043083, 7.27178263, 0.99785202, 0.99886618, 0.49313186],\
+[	-6.27248600, -0.00070283, 0.00043073, 7.27178317, 0.99785251, 0.99886644, 0.49313191],\
+[	-6.27248638, -0.00070267, 0.00043063, 7.27178371, 0.99785300, 0.99886669, 0.49313198],\
+[	-6.27248677, -0.00070251, 0.00043054, 7.27178425, 0.99785348, 0.99886695, 0.49313204],\
+[	-6.27248715, -0.00070235, 0.00043044, 7.27178480, 0.99785397, 0.99886721, 0.49313208],\
+[	-6.27248753, -0.00070219, 0.00043034, 7.27178534, 0.99785446, 0.99886747, 0.49313214],\
+[	-6.27248792, -0.00070203, 0.00043024, 7.27178588, 0.99785495, 0.99886772, 0.49313220],\
+[	-6.27248830, -0.00070188, 0.00043014, 7.27178642, 0.99785543, 0.99886798, 0.49313224],\
+[	-6.27248868, -0.00070172, 0.00043005, 7.27178696, 0.99785592, 0.99886824, 0.49313233],\
+[	-6.27248906, -0.00070156, 0.00042995, 7.27178751, 0.99785641, 0.99886849, 0.49313235],\
+[	-6.27248945, -0.00070140, 0.00042985, 7.27178805, 0.99785689, 0.99886875, 0.49313243],\
+[	-6.27248983, -0.00070124, 0.00042975, 7.27178859, 0.99785738, 0.99886901, 0.49313250],\
+[	-6.27249021, -0.00070108, 0.00042966, 7.27178913, 0.99785786, 0.99886926, 0.49313254],\
+[	-6.27249059, -0.00070092, 0.00042956, 7.27178967, 0.99785835, 0.99886952, 0.49313259],\
+[	-6.27249097, -0.00070076, 0.00042946, 7.27179021, 0.99785883, 0.99886977, 0.49313265],\
+[	-6.27249135, -0.00070060, 0.00042937, 7.27179075, 0.99785932, 0.99887003, 0.49313270],\
+[	-6.27249173, -0.00070045, 0.00042927, 7.27179129, 0.99785980, 0.99887029, 0.49313277],\
+[	-6.27249211, -0.00070029, 0.00042917, 7.27179183, 0.99786029, 0.99887054, 0.49313282],\
+[	-6.27249250, -0.00070013, 0.00042907, 7.27179237, 0.99786077, 0.99887080, 0.49313289],\
+[	-6.27249288, -0.00069997, 0.00042898, 7.27179290, 0.99786126, 0.99887105, 0.49313291],\
+[	-6.27249326, -0.00069981, 0.00042888, 7.27179344, 0.99786174, 0.99887131, 0.49313301],\
+[	-6.27249364, -0.00069965, 0.00042878, 7.27179398, 0.99786222, 0.99887156, 0.49313305],\
+[	-6.27249402, -0.00069950, 0.00042869, 7.27179452, 0.99786271, 0.99887182, 0.49313311],\
+[	-6.27249440, -0.00069934, 0.00042859, 7.27179506, 0.99786319, 0.99887207, 0.49313316],\
+[	-6.27249477, -0.00069918, 0.00042849, 7.27179559, 0.99786367, 0.99887233, 0.49313322],\
+[	-6.27249515, -0.00069902, 0.00042840, 7.27179613, 0.99786415, 0.99887258, 0.49313329],\
+[	-6.27249553, -0.00069887, 0.00042830, 7.27179667, 0.99786464, 0.99887284, 0.49313333],\
+[	-6.27249591, -0.00069871, 0.00042820, 7.27179720, 0.99786512, 0.99887309, 0.49313340],\
+[	-6.27249629, -0.00069855, 0.00042810, 7.27179774, 0.99786560, 0.99887335, 0.49313343],\
+[	-6.27249667, -0.00069839, 0.00042801, 7.27179828, 0.99786608, 0.99887360, 0.49313349],\
+[	-6.27249705, -0.00069823, 0.00042791, 7.27179881, 0.99786656, 0.99887385, 0.49313355],\
+[	-6.27249743, -0.00069808, 0.00042781, 7.27179935, 0.99786705, 0.99887411, 0.49313361],\
+[	-6.27249780, -0.00069792, 0.00042772, 7.27179988, 0.99786753, 0.99887436, 0.49313365],\
+[	-6.27249818, -0.00069776, 0.00042762, 7.27180042, 0.99786801, 0.99887462, 0.49313373],\
+[	-6.27249856, -0.00069761, 0.00042753, 7.27180095, 0.99786849, 0.99887487, 0.49313378],\
+[	-6.27249894, -0.00069745, 0.00042743, 7.27180149, 0.99786897, 0.99887512, 0.49313382],\
+[	-6.27249931, -0.00069729, 0.00042733, 7.27180202, 0.99786945, 0.99887538, 0.49313387],\
+[	-6.27249969, -0.00069713, 0.00042724, 7.27180256, 0.99786993, 0.99887563, 0.49313395],\
+[	-6.27250007, -0.00069698, 0.00042714, 7.27180309, 0.99787041, 0.99887588, 0.49313401],\
+[	-6.27250045, -0.00069682, 0.00042704, 7.27180363, 0.99787089, 0.99887614, 0.49313405],\
+[	-6.27250082, -0.00069666, 0.00042695, 7.27180416, 0.99787137, 0.99887639, 0.49313411],\
+[	-6.27250120, -0.00069651, 0.00042685, 7.27180469, 0.99787185, 0.99887664, 0.49313417],\
+[	-6.27250158, -0.00069635, 0.00042676, 7.27180523, 0.99787233, 0.99887689, 0.49313425],\
+[	-6.27250195, -0.00069619, 0.00042666, 7.27180576, 0.99787281, 0.99887715, 0.49313428],\
+[	-6.27250233, -0.00069604, 0.00042656, 7.27180629, 0.99787328, 0.99887740, 0.49313433],\
+[	-6.27250270, -0.00069588, 0.00042647, 7.27180682, 0.99787376, 0.99887765, 0.49313436],\
+[	-6.27250308, -0.00069572, 0.00042637, 7.27180736, 0.99787424, 0.99887790, 0.49313447],\
+[	-6.27250345, -0.00069557, 0.00042628, 7.27180789, 0.99787472, 0.99887816, 0.49313453],\
+[	-6.27250383, -0.00069541, 0.00042618, 7.27180842, 0.99787520, 0.99887841, 0.49313456],\
+[	-6.27250420, -0.00069525, 0.00042608, 7.27180895, 0.99787567, 0.99887866, 0.49313463],\
+[	-6.27250458, -0.00069510, 0.00042599, 7.27180948, 0.99787615, 0.99887891, 0.49313466],\
+[	-6.27250495, -0.00069494, 0.00042589, 7.27181001, 0.99787663, 0.99887916, 0.49313471],\
+[	-6.27250533, -0.00069479, 0.00042580, 7.27181054, 0.99787711, 0.99887942, 0.49313478],\
+[	-6.27250570, -0.00069463, 0.00042570, 7.27181107, 0.99787758, 0.99887967, 0.49313484],\
+[	-6.27250608, -0.00069447, 0.00042561, 7.27181160, 0.99787806, 0.99887992, 0.49313489],\
+[	-6.27250645, -0.00069432, 0.00042551, 7.27181213, 0.99787854, 0.99888017, 0.49313499],\
+[	-6.27250683, -0.00069416, 0.00042541, 7.27181266, 0.99787901, 0.99888042, 0.49313500],\
+[	-6.27250720, -0.00069401, 0.00042532, 7.27181319, 0.99787949, 0.99888067, 0.49313506],\
+[	-6.27250757, -0.00069385, 0.00042522, 7.27181372, 0.99787996, 0.99888092, 0.49313510],\
+[	-6.27250795, -0.00069370, 0.00042513, 7.27181425, 0.99788044, 0.99888117, 0.49313518],\
+[	-6.27250832, -0.00069354, 0.00042503, 7.27181478, 0.99788091, 0.99888143, 0.49313523],\
+[	-6.27250869, -0.00069339, 0.00042494, 7.27181531, 0.99788139, 0.99888168, 0.49313528],\
+[	-6.27250906, -0.00069323, 0.00042484, 7.27181583, 0.99788186, 0.99888193, 0.49313532],\
+[	-6.27250944, -0.00069308, 0.00042475, 7.27181636, 0.99788234, 0.99888218, 0.49313537],\
+[	-6.27250981, -0.00069292, 0.00042465, 7.27181689, 0.99788281, 0.99888243, 0.49313545],\
+[	-6.27251018, -0.00069277, 0.00042456, 7.27181742, 0.99788329, 0.99888268, 0.49313551],\
+[	-6.27251055, -0.00069261, 0.00042446, 7.27181794, 0.99788376, 0.99888293, 0.49313557],\
+[	-6.27251093, -0.00069246, 0.00042437, 7.27181847, 0.99788423, 0.99888318, 0.49313560],\
+[	-6.27251130, -0.00069230, 0.00042427, 7.27181900, 0.99788471, 0.99888343, 0.49313566],\
+[	-6.27251167, -0.00069215, 0.00042418, 7.27181952, 0.99788518, 0.99888368, 0.49313574],\
+[	-6.27251204, -0.00069199, 0.00042408, 7.27182005, 0.99788565, 0.99888393, 0.49313579],\
+[	-6.27251241, -0.00069184, 0.00042399, 7.27182058, 0.99788613, 0.99888418, 0.49313583],\
+[	-6.27251278, -0.00069168, 0.00042389, 7.27182110, 0.99788660, 0.99888443, 0.49313587],\
+[	-6.27251315, -0.00069153, 0.00042380, 7.27182163, 0.99788707, 0.99888468, 0.49313593],\
+[	-6.27251353, -0.00069137, 0.00042370, 7.27182215, 0.99788754, 0.99888492, 0.49313600],\
+[	-6.27251390, -0.00069122, 0.00042361, 7.27182268, 0.99788801, 0.99888517, 0.49313604],\
+[	-6.27251427, -0.00069106, 0.00042351, 7.27182320, 0.99788849, 0.99888542, 0.49313613],\
+[	-6.27251464, -0.00069091, 0.00042342, 7.27182373, 0.99788896, 0.99888567, 0.49313616],\
+[	-6.27251501, -0.00069076, 0.00042332, 7.27182425, 0.99788943, 0.99888592, 0.49313621],\
+[	-6.27251538, -0.00069060, 0.00042323, 7.27182478, 0.99788990, 0.99888617, 0.49313628],\
+[	-6.27251575, -0.00069045, 0.00042314, 7.27182530, 0.99789037, 0.99888642, 0.49313634],\
+[	-6.27251612, -0.00069029, 0.00042304, 7.27182582, 0.99789084, 0.99888667, 0.49313637],\
+[	-6.27251649, -0.00069014, 0.00042295, 7.27182635, 0.99789131, 0.99888691, 0.49313644],\
+[	-6.27251685, -0.00068999, 0.00042285, 7.27182687, 0.99789178, 0.99888716, 0.49313651],\
+[	-6.27251722, -0.00068983, 0.00042276, 7.27182739, 0.99789225, 0.99888741, 0.49313656],\
+[	-6.27251759, -0.00068968, 0.00042266, 7.27182791, 0.99789272, 0.99888766, 0.49313664],\
+[	-6.27251796, -0.00068952, 0.00042257, 7.27182844, 0.99789319, 0.99888791, 0.49313666],\
+[	-6.27251833, -0.00068937, 0.00042248, 7.27182896, 0.99789366, 0.99888815, 0.49313670],\
+[	-6.27251870, -0.00068922, 0.00042238, 7.27182948, 0.99789413, 0.99888840, 0.49313677],\
+[	-6.27251907, -0.00068906, 0.00042229, 7.27183000, 0.99789460, 0.99888865, 0.49313683],\
+[	-6.27251943, -0.00068891, 0.00042219, 7.27183052, 0.99789507, 0.99888890, 0.49313687],\
+[	-6.27251980, -0.00068876, 0.00042210, 7.27183104, 0.99789554, 0.99888914, 0.49313691],\
+[	-6.27252017, -0.00068860, 0.00042200, 7.27183157, 0.99789601, 0.99888939, 0.49313700],\
+[	-6.27252054, -0.00068845, 0.00042191, 7.27183209, 0.99789647, 0.99888964, 0.49313706],\
+[	-6.27252091, -0.00068830, 0.00042182, 7.27183261, 0.99789694, 0.99888988, 0.49313707],\
+[	-6.27252127, -0.00068815, 0.00042172, 7.27183313, 0.99789741, 0.99889013, 0.49313711],\
+[	-6.27252164, -0.00068799, 0.00042163, 7.27183365, 0.99789788, 0.99889038, 0.49313720],\
+[	-6.27252201, -0.00068784, 0.00042154, 7.27183417, 0.99789835, 0.99889062, 0.49313727],\
+[	-6.27252237, -0.00068769, 0.00042144, 7.27183469, 0.99789881, 0.99889087, 0.49313733],\
+[	-6.27252274, -0.00068753, 0.00042135, 7.27183521, 0.99789928, 0.99889112, 0.49313737],\
+[	-6.27252311, -0.00068738, 0.00042125, 7.27183572, 0.99789975, 0.99889136, 0.49313744],\
+[	-6.27252347, -0.00068723, 0.00042116, 7.27183624, 0.99790021, 0.99889161, 0.49313749],\
+[	-6.27252384, -0.00068708, 0.00042107, 7.27183676, 0.99790068, 0.99889186, 0.49313754],\
+[	-6.27252420, -0.00068692, 0.00042097, 7.27183728, 0.99790115, 0.99889210, 0.49313760],\
+[	-6.27252457, -0.00068677, 0.00042088, 7.27183780, 0.99790161, 0.99889235, 0.49313767],\
+[	-6.27252494, -0.00068662, 0.00042079, 7.27183832, 0.99790208, 0.99889259, 0.49313771],\
+[	-6.27252530, -0.00068647, 0.00042069, 7.27183883, 0.99790254, 0.99889284, 0.49313775],\
+[	-6.27252567, -0.00068631, 0.00042060, 7.27183935, 0.99790301, 0.99889309, 0.49313782],\
+[	-6.27252603, -0.00068616, 0.00042051, 7.27183987, 0.99790347, 0.99889333, 0.49313786],\
+[	-6.27252640, -0.00068601, 0.00042041, 7.27184039, 0.99790394, 0.99889358, 0.49313791],\
+[	-6.27252676, -0.00068586, 0.00042032, 7.27184090, 0.99790440, 0.99889382, 0.49313797],\
+[	-6.27252712, -0.00068571, 0.00042023, 7.27184142, 0.99790487, 0.99889407, 0.49313801],\
+[	-6.27252749, -0.00068555, 0.00042013, 7.27184193, 0.99790533, 0.99889431, 0.49313810],\
+[	-6.27252785, -0.00068540, 0.00042004, 7.27184245, 0.99790579, 0.99889456, 0.49313815],\
+[	-6.27252822, -0.00068525, 0.00041995, 7.27184297, 0.99790626, 0.99889480, 0.49313818],\
+[	-6.27252858, -0.00068510, 0.00041985, 7.27184348, 0.99790672, 0.99889505, 0.49313824],\
+[	-6.27252895, -0.00068495, 0.00041976, 7.27184400, 0.99790719, 0.99889529, 0.49313828],\
+[	-6.27252931, -0.00068480, 0.00041967, 7.27184451, 0.99790765, 0.99889553, 0.49313835],\
+[	-6.27252967, -0.00068464, 0.00041958, 7.27184503, 0.99790811, 0.99889578, 0.49313842],\
+[	-6.27253004, -0.00068449, 0.00041948, 7.27184554, 0.99790857, 0.99889602, 0.49313845],\
+[	-6.27253040, -0.00068434, 0.00041939, 7.27184606, 0.99790904, 0.99889627, 0.49313853],\
+[	-6.27253076, -0.00068419, 0.00041930, 7.27184657, 0.99790950, 0.99889651, 0.49313854],\
+[	-6.27253112, -0.00068404, 0.00041920, 7.27184708, 0.99790996, 0.99889676, 0.49313861],\
+[	-6.27253149, -0.00068389, 0.00041911, 7.27184760, 0.99791042, 0.99889700, 0.49313867],\
+[	-6.27253185, -0.00068374, 0.00041902, 7.27184811, 0.99791089, 0.99889724, 0.49313874],\
+[	-6.27253221, -0.00068359, 0.00041893, 7.27184862, 0.99791135, 0.99889749, 0.49313876],\
+[	-6.27253257, -0.00068344, 0.00041883, 7.27184914, 0.99791181, 0.99889773, 0.49313881],\
+[	-6.27253293, -0.00068328, 0.00041874, 7.27184965, 0.99791227, 0.99889797, 0.49313886],\
+[	-6.27253330, -0.00068313, 0.00041865, 7.27185016, 0.99791273, 0.99889822, 0.49313893],\
+[	-6.27253366, -0.00068298, 0.00041856, 7.27185068, 0.99791319, 0.99889846, 0.49313897],\
+[	-6.27253402, -0.00068283, 0.00041846, 7.27185119, 0.99791365, 0.99889870, 0.49313904],\
+[	-6.27253438, -0.00068268, 0.00041837, 7.27185170, 0.99791411, 0.99889895, 0.49313909],\
+[	-6.27253474, -0.00068253, 0.00041828, 7.27185221, 0.99791457, 0.99889919, 0.49313915],\
+[	-6.27253510, -0.00068238, 0.00041819, 7.27185272, 0.99791503, 0.99889943, 0.49313920],\
+[	-6.27253546, -0.00068223, 0.00041810, 7.27185323, 0.99791549, 0.99889967, 0.49313924],\
+[	-6.27253582, -0.00068208, 0.00041800, 7.27185374, 0.99791595, 0.99889992, 0.49313932],\
+[	-6.27253618, -0.00068193, 0.00041791, 7.27185425, 0.99791641, 0.99890016, 0.49313937],\
+[	-6.27253654, -0.00068178, 0.00041782, 7.27185477, 0.99791687, 0.99890040, 0.49313944],\
+[	-6.27253690, -0.00068163, 0.00041773, 7.27185528, 0.99791733, 0.99890064, 0.49313947],\
+[	-6.27253726, -0.00068148, 0.00041763, 7.27185579, 0.99791779, 0.99890089, 0.49313953],\
+[	-6.27253762, -0.00068133, 0.00041754, 7.27185630, 0.99791825, 0.99890113, 0.49313960],\
+[	-6.27253798, -0.00068118, 0.00041745, 7.27185680, 0.99791871, 0.99890137, 0.49313964],\
+[	-6.27253834, -0.00068103, 0.00041736, 7.27185731, 0.99791916, 0.99890161, 0.49313969],\
+[	-6.27253870, -0.00068088, 0.00041727, 7.27185782, 0.99791962, 0.99890185, 0.49313973],\
+[	-6.27253906, -0.00068073, 0.00041718, 7.27185833, 0.99792008, 0.99890209, 0.49313978],\
+[	-6.27253942, -0.00068058, 0.00041708, 7.27185884, 0.99792054, 0.99890234, 0.49313983],\
+[	-6.27253978, -0.00068043, 0.00041699, 7.27185935, 0.99792099, 0.99890258, 0.49313991],\
+[	-6.27254014, -0.00068028, 0.00041690, 7.27185986, 0.99792145, 0.99890282, 0.49313998],\
+[	-6.27254050, -0.00068013, 0.00041681, 7.27186036, 0.99792191, 0.99890306, 0.49314002],\
+[	-6.27254086, -0.00067998, 0.00041672, 7.27186087, 0.99792237, 0.99890330, 0.49314008],\
+[	-6.27254121, -0.00067983, 0.00041662, 7.27186138, 0.99792282, 0.99890354, 0.49314012],\
+[	-6.27254157, -0.00067968, 0.00041653, 7.27186189, 0.99792328, 0.99890378, 0.49314018],\
+[	-6.27254193, -0.00067953, 0.00041644, 7.27186239, 0.99792373, 0.99890402, 0.49314019],\
+[	-6.27254229, -0.00067939, 0.00041635, 7.27186290, 0.99792419, 0.99890426, 0.49314025],\
+[	-6.27254264, -0.00067924, 0.00041626, 7.27186341, 0.99792465, 0.99890450, 0.49314034],\
+[	-6.27254300, -0.00067909, 0.00041617, 7.27186391, 0.99792510, 0.99890474, 0.49314040],\
+[	-6.27254336, -0.00067894, 0.00041608, 7.27186442, 0.99792556, 0.99890499, 0.49314044],\
+[	-6.27254372, -0.00067879, 0.00041598, 7.27186493, 0.99792601, 0.99890523, 0.49314049],\
+[	-6.27254407, -0.00067864, 0.00041589, 7.27186543, 0.99792647, 0.99890547, 0.49314054],\
+[	-6.27254443, -0.00067849, 0.00041580, 7.27186594, 0.99792692, 0.99890571, 0.49314058],\
+[	-6.27254479, -0.00067834, 0.00041571, 7.27186644, 0.99792738, 0.99890595, 0.49314062],\
+[	-6.27254514, -0.00067819, 0.00041562, 7.27186695, 0.99792783, 0.99890618, 0.49314070],\
+[	-6.27254550, -0.00067805, 0.00041553, 7.27186745, 0.99792828, 0.99890642, 0.49314075],\
+[	-6.27254585, -0.00067790, 0.00041544, 7.27186796, 0.99792874, 0.99890666, 0.49314079],\
+[	-6.27254621, -0.00067775, 0.00041535, 7.27186846, 0.99792919, 0.99890690, 0.49314085],\
+[	-6.27254657, -0.00067760, 0.00041526, 7.27186897, 0.99792965, 0.99890714, 0.49314090],\
+[	-6.27254692, -0.00067745, 0.00041516, 7.27186947, 0.99793010, 0.99890738, 0.49314094],\
+[	-6.27254728, -0.00067730, 0.00041507, 7.27186997, 0.99793055, 0.99890762, 0.49314100],\
+[	-6.27254763, -0.00067716, 0.00041498, 7.27187048, 0.99793101, 0.99890786, 0.49314106],\
+[	-6.27254799, -0.00067701, 0.00041489, 7.27187098, 0.99793146, 0.99890810, 0.49314111],\
+[	-6.27254834, -0.00067686, 0.00041480, 7.27187148, 0.99793191, 0.99890834, 0.49314118],\
+[	-6.27254870, -0.00067671, 0.00041471, 7.27187199, 0.99793236, 0.99890858, 0.49314123],\
+[	-6.27254905, -0.00067656, 0.00041462, 7.27187249, 0.99793282, 0.99890882, 0.49314127],\
+[	-6.27254941, -0.00067642, 0.00041453, 7.27187299, 0.99793327, 0.99890905, 0.49314132],\
+[	-6.27254976, -0.00067627, 0.00041444, 7.27187349, 0.99793372, 0.99890929, 0.49314138],\
+[	-6.27255012, -0.00067612, 0.00041435, 7.27187399, 0.99793417, 0.99890953, 0.49314144],\
+[	-6.27255047, -0.00067597, 0.00041426, 7.27187450, 0.99793462, 0.99890977, 0.49314149],\
+[	-6.27255082, -0.00067583, 0.00041417, 7.27187500, 0.99793507, 0.99891001, 0.49314155],\
+[	-6.27255118, -0.00067568, 0.00041408, 7.27187550, 0.99793552, 0.99891025, 0.49314159],\
+[	-6.27255153, -0.00067553, 0.00041399, 7.27187600, 0.99793597, 0.99891048, 0.49314164],\
+[	-6.27255188, -0.00067538, 0.00041390, 7.27187650, 0.99793643, 0.99891072, 0.49314169],\
+[	-6.27255224, -0.00067524, 0.00041381, 7.27187700, 0.99793688, 0.99891096, 0.49314176],\
+[	-6.27255259, -0.00067509, 0.00041372, 7.27187750, 0.99793733, 0.99891120, 0.49314181],\
+[	-6.27255294, -0.00067494, 0.00041362, 7.27187800, 0.99793778, 0.99891143, 0.49314185],\
+[	-6.27255330, -0.00067479, 0.00041353, 7.27187850, 0.99793823, 0.99891167, 0.49314190],\
+[	-6.27255365, -0.00067465, 0.00041344, 7.27187900, 0.99793868, 0.99891191, 0.49314197],\
+[	-6.27255400, -0.00067450, 0.00041335, 7.27187950, 0.99793912, 0.99891215, 0.49314200],\
+[	-6.27255435, -0.00067435, 0.00041326, 7.27188000, 0.99793957, 0.99891238, 0.49314208],\
+[	-6.27255470, -0.00067421, 0.00041317, 7.27188050, 0.99794002, 0.99891262, 0.49314213],\
+[	-6.27255506, -0.00067406, 0.00041308, 7.27188100, 0.99794047, 0.99891286, 0.49314217],\
+[	-6.27255541, -0.00067391, 0.00041299, 7.27188150, 0.99794092, 0.99891309, 0.49314220],\
+[	-6.27255576, -0.00067377, 0.00041290, 7.27188199, 0.99794137, 0.99891333, 0.49314225],\
+[	-6.27255611, -0.00067362, 0.00041281, 7.27188249, 0.99794182, 0.99891357, 0.49314232],\
+[	-6.27255646, -0.00067347, 0.00041272, 7.27188299, 0.99794227, 0.99891380, 0.49314238],\
+[	-6.27255681, -0.00067333, 0.00041263, 7.27188349, 0.99794271, 0.99891404, 0.49314241],\
+[	-6.27255717, -0.00067318, 0.00041254, 7.27188398, 0.99794316, 0.99891428, 0.49314247],\
+[	-6.27255752, -0.00067303, 0.00041245, 7.27188448, 0.99794361, 0.99891451, 0.49314253],\
+[	-6.27255787, -0.00067289, 0.00041236, 7.27188498, 0.99794406, 0.99891475, 0.49314258],\
+[	-6.27255822, -0.00067274, 0.00041228, 7.27188548, 0.99794450, 0.99891498, 0.49314263],\
+[	-6.27255857, -0.00067260, 0.00041219, 7.27188597, 0.99794495, 0.99891522, 0.49314268],\
+[	-6.27255892, -0.00067245, 0.00041210, 7.27188647, 0.99794540, 0.99891545, 0.49314274],\
+[	-6.27255927, -0.00067230, 0.00041201, 7.27188696, 0.99794584, 0.99891569, 0.49314280],\
+[	-6.27255962, -0.00067216, 0.00041192, 7.27188746, 0.99794629, 0.99891593, 0.49314284],\
+[	-6.27255997, -0.00067201, 0.00041183, 7.27188796, 0.99794673, 0.99891616, 0.49314287],\
+[	-6.27256032, -0.00067187, 0.00041174, 7.27188845, 0.99794718, 0.99891640, 0.49314297],\
+[	-6.27256067, -0.00067172, 0.00041165, 7.27188895, 0.99794763, 0.99891663, 0.49314303],\
+[	-6.27256102, -0.00067157, 0.00041156, 7.27188944, 0.99794807, 0.99891687, 0.49314307],\
+[	-6.27256137, -0.00067143, 0.00041147, 7.27188994, 0.99794852, 0.99891710, 0.49314312],\
+[	-6.27256171, -0.00067128, 0.00041138, 7.27189043, 0.99794896, 0.99891734, 0.49314315],\
+[	-6.27256206, -0.00067114, 0.00041129, 7.27189093, 0.99794941, 0.99891757, 0.49314322],\
+[	-6.27256241, -0.00067099, 0.00041120, 7.27189142, 0.99794985, 0.99891781, 0.49314325],\
+[	-6.27256276, -0.00067085, 0.00041111, 7.27189191, 0.99795030, 0.99891804, 0.49314333],\
+[	-6.27256311, -0.00067070, 0.00041102, 7.27189241, 0.99795074, 0.99891828, 0.49314337],\
+[	-6.27256346, -0.00067056, 0.00041093, 7.27189290, 0.99795119, 0.99891851, 0.49314340],\
+[	-6.27256381, -0.00067041, 0.00041085, 7.27189339, 0.99795163, 0.99891874, 0.49314348],\
+[	-6.27256415, -0.00067027, 0.00041076, 7.27189389, 0.99795207, 0.99891898, 0.49314353],\
+[	-6.27256450, -0.00067012, 0.00041067, 7.27189438, 0.99795252, 0.99891921, 0.49314358],\
+[	-6.27256485, -0.00066998, 0.00041058, 7.27189487, 0.99795296, 0.99891945, 0.49314365],\
+[	-6.27256520, -0.00066983, 0.00041049, 7.27189537, 0.99795340, 0.99891968, 0.49314368],\
+[	-6.27256554, -0.00066969, 0.00041040, 7.27189586, 0.99795385, 0.99891991, 0.49314376],\
+[	-6.27256589, -0.00066954, 0.00041031, 7.27189635, 0.99795429, 0.99892015, 0.49314379],\
+[	-6.27256624, -0.00066940, 0.00041022, 7.27189684, 0.99795473, 0.99892038, 0.49314383],\
+[	-6.27256658, -0.00066925, 0.00041013, 7.27189733, 0.99795517, 0.99892061, 0.49314389],\
+[	-6.27256693, -0.00066911, 0.00041005, 7.27189782, 0.99795562, 0.99892085, 0.49314395],\
+[	-6.27256728, -0.00066896, 0.00040996, 7.27189832, 0.99795606, 0.99892108, 0.49314398],\
+[	-6.27256762, -0.00066882, 0.00040987, 7.27189881, 0.99795650, 0.99892131, 0.49314403],\
+[	-6.27256797, -0.00066867, 0.00040978, 7.27189930, 0.99795694, 0.99892155, 0.49314409],\
+[	-6.27256832, -0.00066853, 0.00040969, 7.27189979, 0.99795738, 0.99892178, 0.49314415],\
+[	-6.27256866, -0.00066838, 0.00040960, 7.27190028, 0.99795782, 0.99892201, 0.49314419],\
+[	-6.27256901, -0.00066824, 0.00040951, 7.27190077, 0.99795827, 0.99892225, 0.49314425],\
+[	-6.27256935, -0.00066810, 0.00040943, 7.27190126, 0.99795871, 0.99892248, 0.49314428],\
+[	-6.27256970, -0.00066795, 0.00040934, 7.27190175, 0.99795915, 0.99892271, 0.49314436],\
+[	-6.27257004, -0.00066781, 0.00040925, 7.27190224, 0.99795959, 0.99892294, 0.49314439],\
+[	-6.27257039, -0.00066766, 0.00040916, 7.27190273, 0.99796003, 0.99892318, 0.49314446],\
+[	-6.27257073, -0.00066752, 0.00040907, 7.27190322, 0.99796047, 0.99892341, 0.49314452],\
+[	-6.27257108, -0.00066738, 0.00040898, 7.27190370, 0.99796091, 0.99892364, 0.49314453],\
+[	-6.27257142, -0.00066723, 0.00040890, 7.27190419, 0.99796135, 0.99892387, 0.49314460],\
+[	-6.27257177, -0.00066709, 0.00040881, 7.27190468, 0.99796179, 0.99892410, 0.49314466],\
+[	-6.27257211, -0.00066694, 0.00040872, 7.27190517, 0.99796223, 0.99892434, 0.49314470],\
+[	-6.27257246, -0.00066680, 0.00040863, 7.27190566, 0.99796267, 0.99892457, 0.49314476],\
+[	-6.27257280, -0.00066666, 0.00040854, 7.27190615, 0.99796311, 0.99892480, 0.49314482],\
+[	-6.27257315, -0.00066651, 0.00040846, 7.27190663, 0.99796354, 0.99892503, 0.49314486],\
+[	-6.27257349, -0.00066637, 0.00040837, 7.27190712, 0.99796398, 0.99892526, 0.49314490],\
+[	-6.27257383, -0.00066623, 0.00040828, 7.27190761, 0.99796442, 0.99892549, 0.49314498],\
+[	-6.27257418, -0.00066608, 0.00040819, 7.27190809, 0.99796486, 0.99892573, 0.49314501],\
+[	-6.27257452, -0.00066594, 0.00040810, 7.27190858, 0.99796530, 0.99892596, 0.49314505],\
+[	-6.27257486, -0.00066580, 0.00040802, 7.27190907, 0.99796574, 0.99892619, 0.49314512],\
+[	-6.27257521, -0.00066565, 0.00040793, 7.27190955, 0.99796617, 0.99892642, 0.49314515],\
+[	-6.27257555, -0.00066551, 0.00040784, 7.27191004, 0.99796661, 0.99892665, 0.49314521],\
+[	-6.27257589, -0.00066537, 0.00040775, 7.27191053, 0.99796705, 0.99892688, 0.49314528],\
+[	-6.27257623, -0.00066522, 0.00040766, 7.27191101, 0.99796748, 0.99892711, 0.49314532],\
+[	-6.27257658, -0.00066508, 0.00040758, 7.27191150, 0.99796792, 0.99892734, 0.49314537],\
+[	-6.27257692, -0.00066494, 0.00040749, 7.27191198, 0.99796836, 0.99892757, 0.49314541],\
+[	-6.27257726, -0.00066480, 0.00040740, 7.27191247, 0.99796880, 0.99892780, 0.49314547],\
+[	-6.27257760, -0.00066465, 0.00040731, 7.27191295, 0.99796923, 0.99892803, 0.49314555],\
+[	-6.27257795, -0.00066451, 0.00040723, 7.27191344, 0.99796967, 0.99892826, 0.49314558],\
+[	-6.27257829, -0.00066437, 0.00040714, 7.27191392, 0.99797010, 0.99892849, 0.49314564],\
+[	-6.27257863, -0.00066422, 0.00040705, 7.27191440, 0.99797054, 0.99892872, 0.49314568],\
+[	-6.27257897, -0.00066408, 0.00040696, 7.27191489, 0.99797098, 0.99892895, 0.49314573],\
+[	-6.27257931, -0.00066394, 0.00040688, 7.27191537, 0.99797141, 0.99892918, 0.49314579],\
+[	-6.27257965, -0.00066380, 0.00040679, 7.27191586, 0.99797185, 0.99892941, 0.49314582],\
+[	-6.27257999, -0.00066366, 0.00040670, 7.27191634, 0.99797228, 0.99892964, 0.49314588],\
+[	-6.27258033, -0.00066351, 0.00040662, 7.27191682, 0.99797272, 0.99892987, 0.49314593],\
+[	-6.27258068, -0.00066337, 0.00040653, 7.27191730, 0.99797315, 0.99893010, 0.49314598],\
+[	-6.27258102, -0.00066323, 0.00040644, 7.27191779, 0.99797358, 0.99893033, 0.49314603],\
+[	-6.27258136, -0.00066309, 0.00040635, 7.27191827, 0.99797402, 0.99893056, 0.49314608],\
+[	-6.27258170, -0.00066294, 0.00040627, 7.27191875, 0.99797445, 0.99893079, 0.49314611],\
+[	-6.27258204, -0.00066280, 0.00040618, 7.27191923, 0.99797489, 0.99893102, 0.49314621],\
+[	-6.27258238, -0.00066266, 0.00040609, 7.27191972, 0.99797532, 0.99893125, 0.49314623],\
+[	-6.27258272, -0.00066252, 0.00040601, 7.27192020, 0.99797575, 0.99893148, 0.49314626],\
+[	-6.27258306, -0.00066238, 0.00040592, 7.27192068, 0.99797619, 0.99893170, 0.49314635],\
+[	-6.27258340, -0.00066224, 0.00040583, 7.27192116, 0.99797662, 0.99893193, 0.49314639],\
+[	-6.27258373, -0.00066209, 0.00040574, 7.27192164, 0.99797705, 0.99893216, 0.49314644],\
+[	-6.27258407, -0.00066195, 0.00040566, 7.27192212, 0.99797749, 0.99893239, 0.49314649],\
+[	-6.27258441, -0.00066181, 0.00040557, 7.27192260, 0.99797792, 0.99893262, 0.49314651],\
+[	-6.27258475, -0.00066167, 0.00040548, 7.27192308, 0.99797835, 0.99893285, 0.49314660],\
+[	-6.27258509, -0.00066153, 0.00040540, 7.27192356, 0.99797878, 0.99893307, 0.49314663],\
+[	-6.27258543, -0.00066139, 0.00040531, 7.27192404, 0.99797922, 0.99893330, 0.49314669],\
+[	-6.27258577, -0.00066125, 0.00040522, 7.27192452, 0.99797965, 0.99893353, 0.49314673],\
+[	-6.27258611, -0.00066110, 0.00040514, 7.27192500, 0.99798008, 0.99893376, 0.49314679],\
+[	-6.27258644, -0.00066096, 0.00040505, 7.27192548, 0.99798051, 0.99893399, 0.49314686],\
+[	-6.27258678, -0.00066082, 0.00040496, 7.27192596, 0.99798094, 0.99893421, 0.49314689],\
+[	-6.27258712, -0.00066068, 0.00040488, 7.27192644, 0.99798137, 0.99893444, 0.49314694],\
+[	-6.27258746, -0.00066054, 0.00040479, 7.27192692, 0.99798181, 0.99893467, 0.49314700],\
+[	-6.27258780, -0.00066040, 0.00040471, 7.27192740, 0.99798224, 0.99893490, 0.49314705],\
+[	-6.27258813, -0.00066026, 0.00040462, 7.27192788, 0.99798267, 0.99893512, 0.49314708],\
+[	-6.27258847, -0.00066012, 0.00040453, 7.27192835, 0.99798310, 0.99893535, 0.49314712],\
+[	-6.27258881, -0.00065998, 0.00040445, 7.27192883, 0.99798353, 0.99893558, 0.49314719],\
+[	-6.27258914, -0.00065984, 0.00040436, 7.27192931, 0.99798396, 0.99893580, 0.49314727],\
+[	-6.27258948, -0.00065970, 0.00040427, 7.27192979, 0.99798439, 0.99893603, 0.49314727],\
+[	-6.27258982, -0.00065955, 0.00040419, 7.27193026, 0.99798482, 0.99893626, 0.49314731],\
+[	-6.27259015, -0.00065941, 0.00040410, 7.27193074, 0.99798525, 0.99893648, 0.49314740],\
+[	-6.27259049, -0.00065927, 0.00040401, 7.27193122, 0.99798568, 0.99893671, 0.49314745],\
+[	-6.27259083, -0.00065913, 0.00040393, 7.27193169, 0.99798610, 0.99893694, 0.49314746],\
+[	-6.27259116, -0.00065899, 0.00040384, 7.27193217, 0.99798653, 0.99893716, 0.49314754],\
+[	-6.27259150, -0.00065885, 0.00040376, 7.27193265, 0.99798696, 0.99893739, 0.49314761],\
+[	-6.27259184, -0.00065871, 0.00040367, 7.27193312, 0.99798739, 0.99893762, 0.49314766],\
+[	-6.27259217, -0.00065857, 0.00040358, 7.27193360, 0.99798782, 0.99893784, 0.49314769],\
+[	-6.27259251, -0.00065843, 0.00040350, 7.27193407, 0.99798825, 0.99893807, 0.49314775],\
+[	-6.27259284, -0.00065829, 0.00040341, 7.27193455, 0.99798868, 0.99893829, 0.49314778],\
+[	-6.27259318, -0.00065815, 0.00040333, 7.27193502, 0.99798910, 0.99893852, 0.49314784],\
+[	-6.27259351, -0.00065801, 0.00040324, 7.27193550, 0.99798953, 0.99893875, 0.49314788],\
+[	-6.27259385, -0.00065787, 0.00040316, 7.27193597, 0.99798996, 0.99893897, 0.49314794],\
+[	-6.27259418, -0.00065773, 0.00040307, 7.27193645, 0.99799039, 0.99893920, 0.49314799],\
+[	-6.27259452, -0.00065759, 0.00040298, 7.27193692, 0.99799081, 0.99893942, 0.49314805],\
+[	-6.27259485, -0.00065745, 0.00040290, 7.27193740, 0.99799124, 0.99893965, 0.49314807],\
+[	-6.27259519, -0.00065731, 0.00040281, 7.27193787, 0.99799167, 0.99893987, 0.49314813],\
+[	-6.27259552, -0.00065717, 0.00040273, 7.27193835, 0.99799209, 0.99894010, 0.49314822],\
+[	-6.27259585, -0.00065703, 0.00040264, 7.27193882, 0.99799252, 0.99894032, 0.49314825],\
+[	-6.27259619, -0.00065690, 0.00040256, 7.27193929, 0.99799295, 0.99894055, 0.49314830],\
+[	-6.27259652, -0.00065676, 0.00040247, 7.27193977, 0.99799337, 0.99894077, 0.49314836],\
+[	-6.27259686, -0.00065662, 0.00040239, 7.27194024, 0.99799380, 0.99894100, 0.49314839],\
+[	-6.27259719, -0.00065648, 0.00040230, 7.27194071, 0.99799422, 0.99894122, 0.49314844],\
+[	-6.27259752, -0.00065634, 0.00040221, 7.27194118, 0.99799465, 0.99894145, 0.49314848],\
+[	-6.27259786, -0.00065620, 0.00040213, 7.27194166, 0.99799507, 0.99894167, 0.49314852],\
+[	-6.27259819, -0.00065606, 0.00040204, 7.27194213, 0.99799550, 0.99894190, 0.49314858],\
+[	-6.27259852, -0.00065592, 0.00040196, 7.27194260, 0.99799593, 0.99894212, 0.49314864],\
+[	-6.27259885, -0.00065578, 0.00040187, 7.27194307, 0.99799635, 0.99894234, 0.49314867],\
+[	-6.27259919, -0.00065564, 0.00040179, 7.27194354, 0.99799677, 0.99894257, 0.49314872],\
+[	-6.27259952, -0.00065550, 0.00040170, 7.27194402, 0.99799720, 0.99894279, 0.49314880],\
+[	-6.27259985, -0.00065537, 0.00040162, 7.27194449, 0.99799762, 0.99894302, 0.49314880],\
+[	-6.27260018, -0.00065523, 0.00040153, 7.27194496, 0.99799805, 0.99894324, 0.49314888],\
+[	-6.27260052, -0.00065509, 0.00040145, 7.27194543, 0.99799847, 0.99894346, 0.49314897],\
+[	-6.27260085, -0.00065495, 0.00040136, 7.27194590, 0.99799889, 0.99894369, 0.49314899],\
+[	-6.27260118, -0.00065481, 0.00040128, 7.27194637, 0.99799932, 0.99894391, 0.49314902],\
+[	-6.27260151, -0.00065467, 0.00040119, 7.27194684, 0.99799974, 0.99894413, 0.49314908],\
+[	-6.27260184, -0.00065453, 0.00040111, 7.27194731, 0.99800016, 0.99894436, 0.49314911],\
+[	-6.27260217, -0.00065440, 0.00040102, 7.27194778, 0.99800059, 0.99894458, 0.49314920],\
+[	-6.27260251, -0.00065426, 0.00040094, 7.27194825, 0.99800101, 0.99894480, 0.49314922],\
+[	-6.27260284, -0.00065412, 0.00040085, 7.27194872, 0.99800143, 0.99894503, 0.49314928],\
+[	-6.27260317, -0.00065398, 0.00040077, 7.27194919, 0.99800186, 0.99894525, 0.49314931],\
+[	-6.27260350, -0.00065384, 0.00040068, 7.27194966, 0.99800228, 0.99894547, 0.49314937],\
+[	-6.27260383, -0.00065370, 0.00040060, 7.27195013, 0.99800270, 0.99894570, 0.49314942],\
+[	-6.27260416, -0.00065357, 0.00040051, 7.27195059, 0.99800312, 0.99894592, 0.49314947],\
+[	-6.27260449, -0.00065343, 0.00040043, 7.27195106, 0.99800354, 0.99894614, 0.49314952],\
+[	-6.27260482, -0.00065329, 0.00040035, 7.27195153, 0.99800397, 0.99894636, 0.49314960],\
+[	-6.27260515, -0.00065315, 0.00040026, 7.27195200, 0.99800439, 0.99894659, 0.49314963],\
+[	-6.27260548, -0.00065302, 0.00040018, 7.27195247, 0.99800481, 0.99894681, 0.49314965],\
+[	-6.27260581, -0.00065288, 0.00040009, 7.27195293, 0.99800523, 0.99894703, 0.49314972],\
+[	-6.27260614, -0.00065274, 0.00040001, 7.27195340, 0.99800565, 0.99894725, 0.49314975],\
+[	-6.27260647, -0.00065260, 0.00039992, 7.27195387, 0.99800607, 0.99894747, 0.49314983],\
+[	-6.27260680, -0.00065246, 0.00039984, 7.27195434, 0.99800649, 0.99894770, 0.49314987],\
+[	-6.27260713, -0.00065233, 0.00039975, 7.27195480, 0.99800691, 0.99894792, 0.49314994],\
+[	-6.27260746, -0.00065219, 0.00039967, 7.27195527, 0.99800733, 0.99894814, 0.49314996],\
+[	-6.27260779, -0.00065205, 0.00039959, 7.27195573, 0.99800775, 0.99894836, 0.49314998],\
+[	-6.27260812, -0.00065192, 0.00039950, 7.27195620, 0.99800817, 0.99894858, 0.49315004],\
+[	-6.27260844, -0.00065178, 0.00039942, 7.27195667, 0.99800859, 0.99894880, 0.49315011],\
+[	-6.27260877, -0.00065164, 0.00039933, 7.27195713, 0.99800901, 0.99894903, 0.49315016],\
+[	-6.27260910, -0.00065150, 0.00039925, 7.27195760, 0.99800943, 0.99894925, 0.49315020],\
+[	-6.27260943, -0.00065137, 0.00039917, 7.27195806, 0.99800985, 0.99894947, 0.49315028],\
+[	-6.27260976, -0.00065123, 0.00039908, 7.27195853, 0.99801027, 0.99894969, 0.49315027],\
+[	-6.27261009, -0.00065109, 0.00039900, 7.27195899, 0.99801069, 0.99894991, 0.49315035],\
+[	-6.27261041, -0.00065096, 0.00039891, 7.27195946, 0.99801110, 0.99895013, 0.49315041],\
+[	-6.27261074, -0.00065082, 0.00039883, 7.27195992, 0.99801152, 0.99895035, 0.49315047],\
+[	-6.27261107, -0.00065068, 0.00039875, 7.27196039, 0.99801194, 0.99895057, 0.49315053],\
+[	-6.27261140, -0.00065055, 0.00039866, 7.27196085, 0.99801236, 0.99895079, 0.49315055],\
+[	-6.27261172, -0.00065041, 0.00039858, 7.27196132, 0.99801278, 0.99895101, 0.49315059],\
+[	-6.27261205, -0.00065027, 0.00039849, 7.27196178, 0.99801320, 0.99895123, 0.49315063],\
+[	-6.27261238, -0.00065014, 0.00039841, 7.27196224, 0.99801361, 0.99895145, 0.49315070],\
+[	-6.27261271, -0.00065000, 0.00039833, 7.27196271, 0.99801403, 0.99895167, 0.49315074],\
+[	-6.27261303, -0.00064986, 0.00039824, 7.27196317, 0.99801445, 0.99895189, 0.49315081],\
+[	-6.27261336, -0.00064973, 0.00039816, 7.27196363, 0.99801486, 0.99895212, 0.49315083],\
+[	-6.27261369, -0.00064959, 0.00039808, 7.27196410, 0.99801528, 0.99895233, 0.49315088],\
+[	-6.27261401, -0.00064945, 0.00039799, 7.27196456, 0.99801570, 0.99895255, 0.49315095],\
+[	-6.27261434, -0.00064932, 0.00039791, 7.27196502, 0.99801611, 0.99895277, 0.49315102],\
+[	-6.27261466, -0.00064918, 0.00039782, 7.27196548, 0.99801653, 0.99895299, 0.49315101],\
+[	-6.27261499, -0.00064904, 0.00039774, 7.27196595, 0.99801695, 0.99895321, 0.49315109],\
+[	-6.27261532, -0.00064891, 0.00039766, 7.27196641, 0.99801736, 0.99895343, 0.49315112],\
+[	-6.27261564, -0.00064877, 0.00039757, 7.27196687, 0.99801778, 0.99895365, 0.49315120],\
+[	-6.27261597, -0.00064864, 0.00039749, 7.27196733, 0.99801819, 0.99895387, 0.49315122],\
+[	-6.27261629, -0.00064850, 0.00039741, 7.27196779, 0.99801861, 0.99895409, 0.49315129],\
+[	-6.27261662, -0.00064836, 0.00039732, 7.27196825, 0.99801902, 0.99895431, 0.49315134],\
+[	-6.27261694, -0.00064823, 0.00039724, 7.27196871, 0.99801944, 0.99895453, 0.49315136],\
+[	-6.27261727, -0.00064809, 0.00039716, 7.27196917, 0.99801985, 0.99895475, 0.49315141],\
+[	-6.27261759, -0.00064796, 0.00039707, 7.27196963, 0.99802027, 0.99895497, 0.49315149],\
+[	-6.27261792, -0.00064782, 0.00039699, 7.27197009, 0.99802068, 0.99895519, 0.49315153],\
+[	-6.27261824, -0.00064769, 0.00039691, 7.27197056, 0.99802110, 0.99895540, 0.49315156],\
+[	-6.27261857, -0.00064755, 0.00039683, 7.27197101, 0.99802151, 0.99895562, 0.49315162],\
+[	-6.27261889, -0.00064742, 0.00039674, 7.27197147, 0.99802193, 0.99895584, 0.49315167],\
+[	-6.27261921, -0.00064728, 0.00039666, 7.27197193, 0.99802234, 0.99895606, 0.49315173],\
+[	-6.27261954, -0.00064715, 0.00039658, 7.27197239, 0.99802275, 0.99895628, 0.49315176],\
+[	-6.27261986, -0.00064701, 0.00039649, 7.27197285, 0.99802317, 0.99895650, 0.49315180],\
+[	-6.27262019, -0.00064687, 0.00039641, 7.27197331, 0.99802358, 0.99895671, 0.49315186],\
+[	-6.27262051, -0.00064674, 0.00039633, 7.27197377, 0.99802399, 0.99895693, 0.49315191],\
+[	-6.27262083, -0.00064660, 0.00039624, 7.27197423, 0.99802441, 0.99895715, 0.49315198],\
+[	-6.27262116, -0.00064647, 0.00039616, 7.27197469, 0.99802482, 0.99895737, 0.49315200],\
+[	-6.27262148, -0.00064633, 0.00039608, 7.27197515, 0.99802523, 0.99895759, 0.49315204],\
+[	-6.27262180, -0.00064620, 0.00039600, 7.27197560, 0.99802564, 0.99895780, 0.49315211],\
+[	-6.27262213, -0.00064606, 0.00039591, 7.27197606, 0.99802606, 0.99895802, 0.49315216],\
+[	-6.27262245, -0.00064593, 0.00039583, 7.27197652, 0.99802647, 0.99895824, 0.49315219],\
+[	-6.27262277, -0.00064579, 0.00039575, 7.27197698, 0.99802688, 0.99895846, 0.49315225],\
+[	-6.27262309, -0.00064566, 0.00039567, 7.27197743, 0.99802729, 0.99895867, 0.49315226],\
+[	-6.27262342, -0.00064553, 0.00039558, 7.27197789, 0.99802770, 0.99895889, 0.49315233],\
+[	-6.27262374, -0.00064539, 0.00039550, 7.27197835, 0.99802812, 0.99895911, 0.49315238],\
+[	-6.27262406, -0.00064526, 0.00039542, 7.27197880, 0.99802853, 0.99895933, 0.49315244],\
+[	-6.27262438, -0.00064512, 0.00039534, 7.27197926, 0.99802894, 0.99895954, 0.49315248],\
+[	-6.27262470, -0.00064499, 0.00039525, 7.27197972, 0.99802935, 0.99895976, 0.49315254],\
+[	-6.27262503, -0.00064485, 0.00039517, 7.27198017, 0.99802976, 0.99895998, 0.49315255],\
+[	-6.27262535, -0.00064472, 0.00039509, 7.27198063, 0.99803017, 0.99896019, 0.49315260],\
+[	-6.27262567, -0.00064458, 0.00039501, 7.27198108, 0.99803058, 0.99896041, 0.49315266],\
+[	-6.27262599, -0.00064445, 0.00039492, 7.27198154, 0.99803099, 0.99896063, 0.49315272],\
+[	-6.27262631, -0.00064432, 0.00039484, 7.27198199, 0.99803140, 0.99896084, 0.49315276],\
+[	-6.27262663, -0.00064418, 0.00039476, 7.27198245, 0.99803181, 0.99896106, 0.49315283],\
+[	-6.27262695, -0.00064405, 0.00039468, 7.27198290, 0.99803222, 0.99896127, 0.49315287],\
+[	-6.27262727, -0.00064391, 0.00039460, 7.27198336, 0.99803263, 0.99896149, 0.49315291],\
+[	-6.27262759, -0.00064378, 0.00039451, 7.27198381, 0.99803304, 0.99896171, 0.49315298],\
+[	-6.27262792, -0.00064365, 0.00039443, 7.27198427, 0.99803345, 0.99896192, 0.49315301],\
+[	-6.27262824, -0.00064351, 0.00039435, 7.27198472, 0.99803386, 0.99896214, 0.49315305],\
+[	-6.27262856, -0.00064338, 0.00039427, 7.27198518, 0.99803427, 0.99896235, 0.49315310],\
+[	-6.27262888, -0.00064325, 0.00039418, 7.27198563, 0.99803468, 0.99896257, 0.49315315],\
+[	-6.27262920, -0.00064311, 0.00039410, 7.27198608, 0.99803508, 0.99896279, 0.49315320],\
+[	-6.27262952, -0.00064298, 0.00039402, 7.27198654, 0.99803549, 0.99896300, 0.49315324],\
+[	-6.27262984, -0.00064284, 0.00039394, 7.27198699, 0.99803590, 0.99896322, 0.49315329],\
+[	-6.27263015, -0.00064271, 0.00039386, 7.27198744, 0.99803631, 0.99896343, 0.49315335],\
+[	-6.27263047, -0.00064258, 0.00039378, 7.27198790, 0.99803672, 0.99896365, 0.49315341],\
+[	-6.27263079, -0.00064244, 0.00039369, 7.27198835, 0.99803712, 0.99896386, 0.49315341],\
+[	-6.27263111, -0.00064231, 0.00039361, 7.27198880, 0.99803753, 0.99896408, 0.49315348],\
+[	-6.27263143, -0.00064218, 0.00039353, 7.27198925, 0.99803794, 0.99896429, 0.49315355],\
+[	-6.27263175, -0.00064204, 0.00039345, 7.27198971, 0.99803835, 0.99896451, 0.49315360],\
+[	-6.27263207, -0.00064191, 0.00039337, 7.27199016, 0.99803875, 0.99896472, 0.49315362],\
+[	-6.27263239, -0.00064178, 0.00039329, 7.27199061, 0.99803916, 0.99896494, 0.49315366],\
+[	-6.27263271, -0.00064165, 0.00039320, 7.27199106, 0.99803957, 0.99896515, 0.49315370],\
+[	-6.27263302, -0.00064151, 0.00039312, 7.27199151, 0.99803997, 0.99896537, 0.49315378],\
+[	-6.27263334, -0.00064138, 0.00039304, 7.27199196, 0.99804038, 0.99896558, 0.49315382],\
+[	-6.27263366, -0.00064125, 0.00039296, 7.27199241, 0.99804079, 0.99896579, 0.49315384],\
+[	-6.27263398, -0.00064111, 0.00039288, 7.27199287, 0.99804119, 0.99896601, 0.49315390],\
+[	-6.27263430, -0.00064098, 0.00039280, 7.27199332, 0.99804160, 0.99896622, 0.49315398],\
+[	-6.27263461, -0.00064085, 0.00039271, 7.27199377, 0.99804200, 0.99896644, 0.49315398],\
+[	-6.27263493, -0.00064072, 0.00039263, 7.27199422, 0.99804241, 0.99896665, 0.49315402],\
+[	-6.27263525, -0.00064058, 0.00039255, 7.27199467, 0.99804281, 0.99896686, 0.49315410],\
+[	-6.27263557, -0.00064045, 0.00039247, 7.27199512, 0.99804322, 0.99896708, 0.49315415],\
+[	-6.27263588, -0.00064032, 0.00039239, 7.27199557, 0.99804362, 0.99896729, 0.49315420],\
+[	-6.27263620, -0.00064019, 0.00039231, 7.27199602, 0.99804403, 0.99896751, 0.49315423],\
+[	-6.27263652, -0.00064005, 0.00039223, 7.27199646, 0.99804443, 0.99896772, 0.49315429],\
+[	-6.27263683, -0.00063992, 0.00039215, 7.27199691, 0.99804484, 0.99896793, 0.49315433],\
+[	-6.27263715, -0.00063979, 0.00039206, 7.27199736, 0.99804524, 0.99896815, 0.49315438],\
+[	-6.27263747, -0.00063966, 0.00039198, 7.27199781, 0.99804565, 0.99896836, 0.49315441],\
+[	-6.27263778, -0.00063952, 0.00039190, 7.27199826, 0.99804605, 0.99896857, 0.49315445],\
+[	-6.27263810, -0.00063939, 0.00039182, 7.27199871, 0.99804645, 0.99896879, 0.49315452],\
+[	-6.27263842, -0.00063926, 0.00039174, 7.27199916, 0.99804686, 0.99896900, 0.49315453],\
+[	-6.27263873, -0.00063913, 0.00039166, 7.27199960, 0.99804726, 0.99896921, 0.49315461],\
+[	-6.27263905, -0.00063900, 0.00039158, 7.27200005, 0.99804766, 0.99896942, 0.49315465],\
+[	-6.27263936, -0.00063886, 0.00039150, 7.27200050, 0.99804807, 0.99896964, 0.49315471],\
+[	-6.27263968, -0.00063873, 0.00039142, 7.27200095, 0.99804847, 0.99896985, 0.49315476],\
+[	-6.27263999, -0.00063860, 0.00039134, 7.27200139, 0.99804887, 0.99897006, 0.49315480],\
+[	-6.27264031, -0.00063847, 0.00039126, 7.27200184, 0.99804928, 0.99897028, 0.49315486],\
+[	-6.27264063, -0.00063834, 0.00039117, 7.27200229, 0.99804968, 0.99897049, 0.49315489],\
+[	-6.27264094, -0.00063821, 0.00039109, 7.27200273, 0.99805008, 0.99897070, 0.49315491],\
+[	-6.27264126, -0.00063807, 0.00039101, 7.27200318, 0.99805048, 0.99897091, 0.49315503],\
+[	-6.27264157, -0.00063794, 0.00039093, 7.27200363, 0.99805088, 0.99897112, 0.49315504],\
+[	-6.27264188, -0.00063781, 0.00039085, 7.27200407, 0.99805129, 0.99897134, 0.49315507],\
+[	-6.27264220, -0.00063768, 0.00039077, 7.27200452, 0.99805169, 0.99897155, 0.49315512],\
+[	-6.27264251, -0.00063755, 0.00039069, 7.27200496, 0.99805209, 0.99897176, 0.49315517],\
+[	-6.27264283, -0.00063742, 0.00039061, 7.27200541, 0.99805249, 0.99897197, 0.49315521],\
+[	-6.27264314, -0.00063729, 0.00039053, 7.27200586, 0.99805289, 0.99897218, 0.49315529],\
+[	-6.27264346, -0.00063716, 0.00039045, 7.27200630, 0.99805329, 0.99897240, 0.49315533],\
+[	-6.27264377, -0.00063702, 0.00039037, 7.27200675, 0.99805369, 0.99897261, 0.49315538],\
+[	-6.27264408, -0.00063689, 0.00039029, 7.27200719, 0.99805409, 0.99897282, 0.49315540],\
+[	-6.27264440, -0.00063676, 0.00039021, 7.27200764, 0.99805450, 0.99897303, 0.49315545],\
+[	-6.27264471, -0.00063663, 0.00039013, 7.27200808, 0.99805490, 0.99897324, 0.49315550],\
+[	-6.27264502, -0.00063650, 0.00039005, 7.27200852, 0.99805530, 0.99897345, 0.49315556],\
+[	-6.27264534, -0.00063637, 0.00038997, 7.27200897, 0.99805570, 0.99897366, 0.49315563],\
+[	-6.27264565, -0.00063624, 0.00038989, 7.27200941, 0.99805610, 0.99897387, 0.49315563],\
+[	-6.27264596, -0.00063611, 0.00038981, 7.27200986, 0.99805649, 0.99897409, 0.49315568],\
+[	-6.27264628, -0.00063598, 0.00038973, 7.27201030, 0.99805689, 0.99897430, 0.49315572],\
+[	-6.27264659, -0.00063585, 0.00038965, 7.27201074, 0.99805729, 0.99897451, 0.49315579],\
+[	-6.27264690, -0.00063572, 0.00038957, 7.27201119, 0.99805769, 0.99897472, 0.49315582],\
+[	-6.27264721, -0.00063559, 0.00038949, 7.27201163, 0.99805809, 0.99897493, 0.49315589],\
+[	-6.27264753, -0.00063545, 0.00038941, 7.27201207, 0.99805849, 0.99897514, 0.49315595],\
+[	-6.27264784, -0.00063532, 0.00038933, 7.27201251, 0.99805889, 0.99897535, 0.49315600],\
+[	-6.27264815, -0.00063519, 0.00038925, 7.27201296, 0.99805929, 0.99897556, 0.49315603],\
+[	-6.27264846, -0.00063506, 0.00038917, 7.27201340, 0.99805969, 0.99897577, 0.49315606],\
+[	-6.27264877, -0.00063493, 0.00038909, 7.27201384, 0.99806008, 0.99897598, 0.49315609],\
+[	-6.27264909, -0.00063480, 0.00038901, 7.27201428, 0.99806048, 0.99897619, 0.49315614],\
+[	-6.27264940, -0.00063467, 0.00038893, 7.27201472, 0.99806088, 0.99897640, 0.49315621],\
+[	-6.27264971, -0.00063454, 0.00038885, 7.27201517, 0.99806128, 0.99897661, 0.49315622],\
+[	-6.27265002, -0.00063441, 0.00038877, 7.27201561, 0.99806168, 0.99897682, 0.49315632],\
+[	-6.27265033, -0.00063428, 0.00038869, 7.27201605, 0.99806207, 0.99897703, 0.49315636],\
+[	-6.27265064, -0.00063415, 0.00038861, 7.27201649, 0.99806247, 0.99897724, 0.49315639],\
+[	-6.27265095, -0.00063402, 0.00038853, 7.27201693, 0.99806287, 0.99897745, 0.49315644],\
+[	-6.27265126, -0.00063389, 0.00038845, 7.27201737, 0.99806326, 0.99897766, 0.49315648],\
+[	-6.27265157, -0.00063376, 0.00038837, 7.27201781, 0.99806366, 0.99897787, 0.49315654],\
+[	-6.27265189, -0.00063363, 0.00038829, 7.27201825, 0.99806406, 0.99897808, 0.49315656],\
+[	-6.27265220, -0.00063350, 0.00038821, 7.27201869, 0.99806445, 0.99897829, 0.49315663],\
+[	-6.27265251, -0.00063337, 0.00038813, 7.27201913, 0.99806485, 0.99897849, 0.49315664],\
+[	-6.27265282, -0.00063324, 0.00038805, 7.27201957, 0.99806525, 0.99897870, 0.49315672],\
+[	-6.27265313, -0.00063312, 0.00038797, 7.27202001, 0.99806564, 0.99897891, 0.49315678],\
+[	-6.27265344, -0.00063299, 0.00038789, 7.27202045, 0.99806604, 0.99897912, 0.49315679],\
+[	-6.27265375, -0.00063286, 0.00038781, 7.27202089, 0.99806643, 0.99897933, 0.49315682],\
+[	-6.27265406, -0.00063273, 0.00038773, 7.27202133, 0.99806683, 0.99897954, 0.49315688],\
+[	-6.27265436, -0.00063260, 0.00038765, 7.27202177, 0.99806722, 0.99897975, 0.49315697],\
+[	-6.27265467, -0.00063247, 0.00038758, 7.27202221, 0.99806762, 0.99897996, 0.49315698],\
+[	-6.27265498, -0.00063234, 0.00038750, 7.27202264, 0.99806801, 0.99898016, 0.49315705],\
+[	-6.27265529, -0.00063221, 0.00038742, 7.27202308, 0.99806841, 0.99898037, 0.49315710],\
+[	-6.27265560, -0.00063208, 0.00038734, 7.27202352, 0.99806880, 0.99898058, 0.49315714],\
+[	-6.27265591, -0.00063195, 0.00038726, 7.27202396, 0.99806920, 0.99898079, 0.49315716],\
+[	-6.27265622, -0.00063182, 0.00038718, 7.27202440, 0.99806959, 0.99898100, 0.49315722],\
+[	-6.27265653, -0.00063169, 0.00038710, 7.27202483, 0.99806999, 0.99898121, 0.49315726],\
+[	-6.27265684, -0.00063157, 0.00038702, 7.27202527, 0.99807038, 0.99898141, 0.49315731],\
+[	-6.27265714, -0.00063144, 0.00038694, 7.27202571, 0.99807077, 0.99898162, 0.49315737],\
+[	-6.27265745, -0.00063131, 0.00038686, 7.27202614, 0.99807117, 0.99898183, 0.49315740],\
+[	-6.27265776, -0.00063118, 0.00038678, 7.27202658, 0.99807156, 0.99898204, 0.49315744],\
+[	-6.27265807, -0.00063105, 0.00038671, 7.27202702, 0.99807195, 0.99898224, 0.49315747],\
+[	-6.27265838, -0.00063092, 0.00038663, 7.27202745, 0.99807235, 0.99898245, 0.49315751],\
+[	-6.27265868, -0.00063079, 0.00038655, 7.27202789, 0.99807274, 0.99898266, 0.49315758],\
+[	-6.27265899, -0.00063066, 0.00038647, 7.27202833, 0.99807313, 0.99898287, 0.49315760],\
+[	-6.27265930, -0.00063054, 0.00038639, 7.27202876, 0.99807353, 0.99898307, 0.49315770],\
+[	-6.27265961, -0.00063041, 0.00038631, 7.27202920, 0.99807392, 0.99898328, 0.49315771],\
+[	-6.27265991, -0.00063028, 0.00038623, 7.27202963, 0.99807431, 0.99898349, 0.49315780],\
+[	-6.27266022, -0.00063015, 0.00038615, 7.27203007, 0.99807470, 0.99898369, 0.49315780],\
+[	-6.27266053, -0.00063002, 0.00038608, 7.27203051, 0.99807510, 0.99898390, 0.49315786],\
+[	-6.27266083, -0.00062989, 0.00038600, 7.27203094, 0.99807549, 0.99898411, 0.49315792],\
+[	-6.27266114, -0.00062977, 0.00038592, 7.27203138, 0.99807588, 0.99898432, 0.49315794],\
+[	-6.27266145, -0.00062964, 0.00038584, 7.27203181, 0.99807627, 0.99898452, 0.49315802],\
+[	-6.27266175, -0.00062951, 0.00038576, 7.27203224, 0.99807666, 0.99898473, 0.49315805],\
+[	-6.27266206, -0.00062938, 0.00038568, 7.27203268, 0.99807705, 0.99898493, 0.49315808],\
+[	-6.27266237, -0.00062925, 0.00038560, 7.27203311, 0.99807744, 0.99898514, 0.49315812],\
+[	-6.27266267, -0.00062913, 0.00038553, 7.27203355, 0.99807784, 0.99898535, 0.49315818],\
+[	-6.27266298, -0.00062900, 0.00038545, 7.27203398, 0.99807823, 0.99898555, 0.49315821],\
+[	-6.27266329, -0.00062887, 0.00038537, 7.27203441, 0.99807862, 0.99898576, 0.49315828],\
+[	-6.27266359, -0.00062874, 0.00038529, 7.27203485, 0.99807901, 0.99898597, 0.49315830],\
+[	-6.27266390, -0.00062862, 0.00038521, 7.27203528, 0.99807940, 0.99898617, 0.49315836],\
+[	-6.27266420, -0.00062849, 0.00038513, 7.27203571, 0.99807979, 0.99898638, 0.49315841],\
+[	-6.27266451, -0.00062836, 0.00038506, 7.27203615, 0.99808018, 0.99898658, 0.49315847],\
+[	-6.27266481, -0.00062823, 0.00038498, 7.27203658, 0.99808057, 0.99898679, 0.49315850],\
+[	-6.27266512, -0.00062811, 0.00038490, 7.27203701, 0.99808096, 0.99898700, 0.49315856],\
+[	-6.27266542, -0.00062798, 0.00038482, 7.27203744, 0.99808135, 0.99898720, 0.49315859],\
+[	-6.27266573, -0.00062785, 0.00038474, 7.27203788, 0.99808174, 0.99898741, 0.49315862],\
+[	-6.27266603, -0.00062772, 0.00038467, 7.27203831, 0.99808213, 0.99898761, 0.49315867],\
+[	-6.27266634, -0.00062760, 0.00038459, 7.27203874, 0.99808251, 0.99898782, 0.49315875],\
+[	-6.27266664, -0.00062747, 0.00038451, 7.27203917, 0.99808290, 0.99898802, 0.49315880],\
+[	-6.27266695, -0.00062734, 0.00038443, 7.27203960, 0.99808329, 0.99898823, 0.49315883],\
+[	-6.27266725, -0.00062721, 0.00038435, 7.27204004, 0.99808368, 0.99898843, 0.49315887],\
+[	-6.27266755, -0.00062709, 0.00038428, 7.27204047, 0.99808407, 0.99898864, 0.49315892],\
+[	-6.27266786, -0.00062696, 0.00038420, 7.27204090, 0.99808446, 0.99898884, 0.49315895],\
+[	-6.27266816, -0.00062683, 0.00038412, 7.27204133, 0.99808485, 0.99898905, 0.49315899],\
+[	-6.27266847, -0.00062671, 0.00038404, 7.27204176, 0.99808523, 0.99898925, 0.49315906],\
+[	-6.27266877, -0.00062658, 0.00038396, 7.27204219, 0.99808562, 0.99898946, 0.49315910],\
+[	-6.27266907, -0.00062645, 0.00038389, 7.27204262, 0.99808601, 0.99898966, 0.49315911],\
+[	-6.27266938, -0.00062633, 0.00038381, 7.27204305, 0.99808640, 0.99898987, 0.49315917],\
+[	-6.27266968, -0.00062620, 0.00038373, 7.27204348, 0.99808678, 0.99899007, 0.49315922],\
+[	-6.27266998, -0.00062607, 0.00038365, 7.27204391, 0.99808717, 0.99899027, 0.49315926],\
+[	-6.27267028, -0.00062595, 0.00038358, 7.27204434, 0.99808756, 0.99899048, 0.49315930],\
+[	-6.27267059, -0.00062582, 0.00038350, 7.27204477, 0.99808794, 0.99899068, 0.49315934],\
+[	-6.27267089, -0.00062569, 0.00038342, 7.27204520, 0.99808833, 0.99899089, 0.49315940],\
+[	-6.27267119, -0.00062557, 0.00038334, 7.27204563, 0.99808872, 0.99899109, 0.49315945],\
+[	-6.27267150, -0.00062544, 0.00038327, 7.27204606, 0.99808910, 0.99899129, 0.49315950],\
+[	-6.27267180, -0.00062531, 0.00038319, 7.27204648, 0.99808949, 0.99899150, 0.49315953],\
+[	-6.27267210, -0.00062519, 0.00038311, 7.27204691, 0.99808988, 0.99899170, 0.49315956],\
+[	-6.27267240, -0.00062506, 0.00038303, 7.27204734, 0.99809026, 0.99899191, 0.49315961],\
+[	-6.27267270, -0.00062494, 0.00038296, 7.27204777, 0.99809065, 0.99899211, 0.49315968],\
+[	-6.27267301, -0.00062481, 0.00038288, 7.27204820, 0.99809103, 0.99899231, 0.49315973],\
+[	-6.27267331, -0.00062468, 0.00038280, 7.27204863, 0.99809142, 0.99899252, 0.49315977],\
+[	-6.27267361, -0.00062456, 0.00038272, 7.27204905, 0.99809180, 0.99899272, 0.49315980],\
+[	-6.27267391, -0.00062443, 0.00038265, 7.27204948, 0.99809219, 0.99899292, 0.49315984],\
+[	-6.27267421, -0.00062431, 0.00038257, 7.27204991, 0.99809257, 0.99899313, 0.49315989],\
+[	-6.27267451, -0.00062418, 0.00038249, 7.27205033, 0.99809296, 0.99899333, 0.49315993],\
+[	-6.27267481, -0.00062405, 0.00038241, 7.27205076, 0.99809334, 0.99899353, 0.49315999],\
+[	-6.27267512, -0.00062393, 0.00038234, 7.27205119, 0.99809373, 0.99899373, 0.49316004],\
+[	-6.27267542, -0.00062380, 0.00038226, 7.27205162, 0.99809411, 0.99899394, 0.49316007],\
+[	-6.27267572, -0.00062368, 0.00038218, 7.27205204, 0.99809450, 0.99899414, 0.49316011],\
+[	-6.27267602, -0.00062355, 0.00038211, 7.27205247, 0.99809488, 0.99899434, 0.49316016],\
+[	-6.27267632, -0.00062342, 0.00038203, 7.27205289, 0.99809527, 0.99899455, 0.49316020],\
+[	-6.27267662, -0.00062330, 0.00038195, 7.27205332, 0.99809565, 0.99899475, 0.49316023],\
+[	-6.27267692, -0.00062317, 0.00038188, 7.27205375, 0.99809603, 0.99899495, 0.49316033],\
+[	-6.27267722, -0.00062305, 0.00038180, 7.27205417, 0.99809642, 0.99899515, 0.49316032],\
+[	-6.27267752, -0.00062292, 0.00038172, 7.27205460, 0.99809680, 0.99899536, 0.49316037],\
+[	-6.27267782, -0.00062280, 0.00038164, 7.27205502, 0.99809718, 0.99899556, 0.49316043],\
+[	-6.27267812, -0.00062267, 0.00038157, 7.27205545, 0.99809757, 0.99899576, 0.49316049],\
+[	-6.27267842, -0.00062255, 0.00038149, 7.27205587, 0.99809795, 0.99899596, 0.49316053],\
+[	-6.27267872, -0.00062242, 0.00038141, 7.27205630, 0.99809833, 0.99899616, 0.49316060],\
+[	-6.27267902, -0.00062230, 0.00038134, 7.27205672, 0.99809871, 0.99899637, 0.49316061],\
+[	-6.27267932, -0.00062217, 0.00038126, 7.27205715, 0.99809910, 0.99899657, 0.49316068],\
+[	-6.27267962, -0.00062205, 0.00038118, 7.27205757, 0.99809948, 0.99899677, 0.49316072],\
+[	-6.27267992, -0.00062192, 0.00038111, 7.27205799, 0.99809986, 0.99899697, 0.49316074],\
+[	-6.27268021, -0.00062180, 0.00038103, 7.27205842, 0.99810024, 0.99899717, 0.49316079],\
+[	-6.27268051, -0.00062167, 0.00038095, 7.27205884, 0.99810062, 0.99899737, 0.49316083],\
+[	-6.27268081, -0.00062155, 0.00038088, 7.27205927, 0.99810100, 0.99899757, 0.49316088],\
+[	-6.27268111, -0.00062142, 0.00038080, 7.27205969, 0.99810139, 0.99899778, 0.49316090],\
+[	-6.27268141, -0.00062130, 0.00038072, 7.27206011, 0.99810177, 0.99899798, 0.49316099],\
+[	-6.27268171, -0.00062117, 0.00038065, 7.27206053, 0.99810215, 0.99899818, 0.49316102],\
+[	-6.27268201, -0.00062105, 0.00038057, 7.27206096, 0.99810253, 0.99899838, 0.49316107],\
+[	-6.27268230, -0.00062092, 0.00038050, 7.27206138, 0.99810291, 0.99899858, 0.49316107],\
+[	-6.27268260, -0.00062080, 0.00038042, 7.27206180, 0.99810329, 0.99899878, 0.49316112],\
+[	-6.27268290, -0.00062067, 0.00038034, 7.27206223, 0.99810367, 0.99899898, 0.49316121],\
+[	-6.27268320, -0.00062055, 0.00038027, 7.27206265, 0.99810405, 0.99899918, 0.49316122],\
+[	-6.27268350, -0.00062043, 0.00038019, 7.27206307, 0.99810443, 0.99899938, 0.49316127],\
+[	-6.27268379, -0.00062030, 0.00038011, 7.27206349, 0.99810481, 0.99899958, 0.49316133],\
+[	-6.27268409, -0.00062018, 0.00038004, 7.27206391, 0.99810519, 0.99899978, 0.49316137],\
+[	-6.27268439, -0.00062005, 0.00037996, 7.27206433, 0.99810557, 0.99899999, 0.49316141],\
+[	-6.27268468, -0.00061993, 0.00037989, 7.27206476, 0.99810595, 0.99900019, 0.49316145],\
+[	-6.27268498, -0.00061980, 0.00037981, 7.27206518, 0.99810633, 0.99900039, 0.49316150],\
+[	-6.27268528, -0.00061968, 0.00037973, 7.27206560, 0.99810671, 0.99900059, 0.49316152],\
+[	-6.27268558, -0.00061956, 0.00037966, 7.27206602, 0.99810709, 0.99900079, 0.49316158],\
+[	-6.27268587, -0.00061943, 0.00037958, 7.27206644, 0.99810747, 0.99900099, 0.49316160],\
+[	-6.27268617, -0.00061931, 0.00037951, 7.27206686, 0.99810785, 0.99900119, 0.49316174],\
+[	-6.27268647, -0.00061919, 0.00037943, 7.27206728, 0.99810823, 0.99900139, 0.49316174],\
+[	-6.27268676, -0.00061906, 0.00037935, 7.27206770, 0.99810860, 0.99900159, 0.49316173],\
+[	-6.27268706, -0.00061894, 0.00037928, 7.27206812, 0.99810898, 0.99900179, 0.49316182],\
+[	-6.27268735, -0.00061881, 0.00037920, 7.27206854, 0.99810936, 0.99900198, 0.49316185],\
+[	-6.27268765, -0.00061869, 0.00037913, 7.27206896, 0.99810974, 0.99900218, 0.49316190],\
+[	-6.27268795, -0.00061857, 0.00037905, 7.27206938, 0.99811012, 0.99900238, 0.49316194],\
+[	-6.27268824, -0.00061844, 0.00037897, 7.27206980, 0.99811049, 0.99900258, 0.49316199],\
+[	-6.27268854, -0.00061832, 0.00037890, 7.27207022, 0.99811087, 0.99900278, 0.49316201],\
+[	-6.27268883, -0.00061820, 0.00037882, 7.27207064, 0.99811125, 0.99900298, 0.49316207],\
+[	-6.27268913, -0.00061807, 0.00037875, 7.27207106, 0.99811163, 0.99900318, 0.49316215],\
+[	-6.27268942, -0.00061795, 0.00037867, 7.27207147, 0.99811200, 0.99900338, 0.49316215],\
+[	-6.27268972, -0.00061783, 0.00037860, 7.27207189, 0.99811238, 0.99900358, 0.49316222],\
+[	-6.27269001, -0.00061770, 0.00037852, 7.27207231, 0.99811276, 0.99900378, 0.49316225],\
+[	-6.27269031, -0.00061758, 0.00037844, 7.27207273, 0.99811313, 0.99900398, 0.49316226],\
+[	-6.27269060, -0.00061746, 0.00037837, 7.27207315, 0.99811351, 0.99900418, 0.49316232],\
+[	-6.27269090, -0.00061733, 0.00037829, 7.27207356, 0.99811389, 0.99900437, 0.49316241],\
+[	-6.27269119, -0.00061721, 0.00037822, 7.27207398, 0.99811426, 0.99900457, 0.49316240],\
+[	-6.27269149, -0.00061709, 0.00037814, 7.27207440, 0.99811464, 0.99900477, 0.49316244],\
+[	-6.27269178, -0.00061696, 0.00037807, 7.27207482, 0.99811502, 0.99900497, 0.49316250],\
+[	-6.27269208, -0.00061684, 0.00037799, 7.27207523, 0.99811539, 0.99900517, 0.49316255],\
+[	-6.27269237, -0.00061672, 0.00037792, 7.27207565, 0.99811577, 0.99900537, 0.49316260],\
+[	-6.27269266, -0.00061660, 0.00037784, 7.27207607, 0.99811614, 0.99900556, 0.49316268],\
+[	-6.27269296, -0.00061647, 0.00037777, 7.27207648, 0.99811652, 0.99900576, 0.49316264],\
+[	-6.27269325, -0.00061635, 0.00037769, 7.27207690, 0.99811689, 0.99900596, 0.49316274],\
+[	-6.27269354, -0.00061623, 0.00037762, 7.27207732, 0.99811727, 0.99900616, 0.49316275],\
+[	-6.27269384, -0.00061610, 0.00037754, 7.27207773, 0.99811764, 0.99900636, 0.49316280],\
+[	-6.27269413, -0.00061598, 0.00037746, 7.27207815, 0.99811802, 0.99900655, 0.49316280],\
+[	-6.27269442, -0.00061586, 0.00037739, 7.27207857, 0.99811839, 0.99900675, 0.49316288],\
+[	-6.27269472, -0.00061574, 0.00037731, 7.27207898, 0.99811877, 0.99900695, 0.49316293],\
+[	-6.27269501, -0.00061561, 0.00037724, 7.27207940, 0.99811914, 0.99900715, 0.49316299],\
+[	-6.27269530, -0.00061549, 0.00037716, 7.27207981, 0.99811952, 0.99900734, 0.49316305],\
+[	-6.27269560, -0.00061537, 0.00037709, 7.27208023, 0.99811989, 0.99900754, 0.49316305],\
+[	-6.27269589, -0.00061525, 0.00037701, 7.27208064, 0.99812026, 0.99900774, 0.49316309],\
+[	-6.27269618, -0.00061512, 0.00037694, 7.27208106, 0.99812064, 0.99900794, 0.49316319],\
+[	-6.27269647, -0.00061500, 0.00037686, 7.27208147, 0.99812101, 0.99900813, 0.49316320],\
+[	-6.27269677, -0.00061488, 0.00037679, 7.27208189, 0.99812138, 0.99900833, 0.49316326],\
+[	-6.27269706, -0.00061476, 0.00037671, 7.27208230, 0.99812176, 0.99900853, 0.49316331],\
+[	-6.27269735, -0.00061464, 0.00037664, 7.27208271, 0.99812213, 0.99900872, 0.49316334],\
+[	-6.27269764, -0.00061451, 0.00037656, 7.27208313, 0.99812250, 0.99900892, 0.49316337],\
+[	-6.27269793, -0.00061439, 0.00037649, 7.27208354, 0.99812288, 0.99900912, 0.49316343],\
+[	-6.27269823, -0.00061427, 0.00037642, 7.27208396, 0.99812325, 0.99900931, 0.49316350],\
+[	-6.27269852, -0.00061415, 0.00037634, 7.27208437, 0.99812362, 0.99900951, 0.49316348],\
+[	-6.27269881, -0.00061403, 0.00037627, 7.27208478, 0.99812399, 0.99900971, 0.49316356],\
+[	-6.27269910, -0.00061390, 0.00037619, 7.27208520, 0.99812437, 0.99900990, 0.49316359],\
+[	-6.27269939, -0.00061378, 0.00037612, 7.27208561, 0.99812474, 0.99901010, 0.49316364],\
+[	-6.27269968, -0.00061366, 0.00037604, 7.27208602, 0.99812511, 0.99901030, 0.49316368],\
+[	-6.27269997, -0.00061354, 0.00037597, 7.27208643, 0.99812548, 0.99901049, 0.49316372],\
+[	-6.27270027, -0.00061342, 0.00037589, 7.27208685, 0.99812585, 0.99901069, 0.49316379],\
+[	-6.27270056, -0.00061330, 0.00037582, 7.27208726, 0.99812623, 0.99901089, 0.49316380],\
+[	-6.27270085, -0.00061318, 0.00037574, 7.27208767, 0.99812660, 0.99901108, 0.49316383],\
+[	-6.27270114, -0.00061305, 0.00037567, 7.27208808, 0.99812697, 0.99901128, 0.49316392],\
+[	-6.27270143, -0.00061293, 0.00037559, 7.27208850, 0.99812734, 0.99901147, 0.49316393],\
+[	-6.27270172, -0.00061281, 0.00037552, 7.27208891, 0.99812771, 0.99901167, 0.49316398],\
+[	-6.27270201, -0.00061269, 0.00037545, 7.27208932, 0.99812808, 0.99901186, 0.49316403],\
+[	-6.27270230, -0.00061257, 0.00037537, 7.27208973, 0.99812845, 0.99901206, 0.49316407],\
+[	-6.27270259, -0.00061245, 0.00037530, 7.27209014, 0.99812882, 0.99901226, 0.49316411],\
+[	-6.27270288, -0.00061233, 0.00037522, 7.27209055, 0.99812919, 0.99901245, 0.49316419],\
+[	-6.27270317, -0.00061221, 0.00037515, 7.27209096, 0.99812956, 0.99901265, 0.49316420],\
+[	-6.27270346, -0.00061208, 0.00037507, 7.27209137, 0.99812993, 0.99901284, 0.49316424],\
+[	-6.27270375, -0.00061196, 0.00037500, 7.27209178, 0.99813030, 0.99901304, 0.49316431],\
+[	-6.27270404, -0.00061184, 0.00037493, 7.27209219, 0.99813067, 0.99901323, 0.49316432],\
+[	-6.27270433, -0.00061172, 0.00037485, 7.27209260, 0.99813104, 0.99901343, 0.49316435],\
+[	-6.27270462, -0.00061160, 0.00037478, 7.27209301, 0.99813141, 0.99901362, 0.49316437],\
+[	-6.27270490, -0.00061148, 0.00037470, 7.27209342, 0.99813178, 0.99901382, 0.49316447],\
+[	-6.27270519, -0.00061136, 0.00037463, 7.27209383, 0.99813215, 0.99901401, 0.49316452],\
+[	-6.27270548, -0.00061124, 0.00037456, 7.27209424, 0.99813252, 0.99901421, 0.49316453],\
+[	-6.27270577, -0.00061112, 0.00037448, 7.27209465, 0.99813289, 0.99901440, 0.49316460],\
+[	-6.27270606, -0.00061100, 0.00037441, 7.27209506, 0.99813326, 0.99901460, 0.49316462],\
+[	-6.27270635, -0.00061088, 0.00037433, 7.27209547, 0.99813362, 0.99901479, 0.49316468],\
+[	-6.27270664, -0.00061076, 0.00037426, 7.27209588, 0.99813399, 0.99901498, 0.49316472],\
+[	-6.27270692, -0.00061064, 0.00037419, 7.27209629, 0.99813436, 0.99901518, 0.49316476],\
+[	-6.27270721, -0.00061051, 0.00037411, 7.27209670, 0.99813473, 0.99901537, 0.49316483],\
+[	-6.27270750, -0.00061039, 0.00037404, 7.27209711, 0.99813510, 0.99901557, 0.49316482],\
+[	-6.27270779, -0.00061027, 0.00037396, 7.27209751, 0.99813547, 0.99901576, 0.49316493],\
+[	-6.27270808, -0.00061015, 0.00037389, 7.27209792, 0.99813583, 0.99901596, 0.49316495],\
+[	-6.27270836, -0.00061003, 0.00037382, 7.27209833, 0.99813620, 0.99901615, 0.49316498],\
+[	-6.27270865, -0.00060991, 0.00037374, 7.27209874, 0.99813657, 0.99901634, 0.49316501],\
+[	-6.27270894, -0.00060979, 0.00037367, 7.27209915, 0.99813694, 0.99901654, 0.49316504],\
+[	-6.27270923, -0.00060967, 0.00037360, 7.27209955, 0.99813730, 0.99901673, 0.49316509],\
+[	-6.27270951, -0.00060955, 0.00037352, 7.27209996, 0.99813767, 0.99901692, 0.49316516],\
+[	-6.27270980, -0.00060943, 0.00037345, 7.27210037, 0.99813804, 0.99901712, 0.49316521],\
+[	-6.27271009, -0.00060931, 0.00037338, 7.27210078, 0.99813840, 0.99901731, 0.49316522],\
+[	-6.27271038, -0.00060919, 0.00037330, 7.27210118, 0.99813877, 0.99901751, 0.49316529],\
+[	-6.27271066, -0.00060907, 0.00037323, 7.27210159, 0.99813914, 0.99901770, 0.49316533],\
+[	-6.27271095, -0.00060895, 0.00037315, 7.27210200, 0.99813950, 0.99901789, 0.49316538],\
+[	-6.27271124, -0.00060883, 0.00037308, 7.27210240, 0.99813987, 0.99901808, 0.49316545],\
+[	-6.27271152, -0.00060871, 0.00037301, 7.27210281, 0.99814023, 0.99901828, 0.49316550],\
+[	-6.27271181, -0.00060859, 0.00037293, 7.27210321, 0.99814060, 0.99901847, 0.49316550],\
+[	-6.27271209, -0.00060847, 0.00037286, 7.27210362, 0.99814097, 0.99901866, 0.49316554],\
+[	-6.27271238, -0.00060836, 0.00037279, 7.27210403, 0.99814133, 0.99901886, 0.49316555],\
+[	-6.27271267, -0.00060824, 0.00037271, 7.27210443, 0.99814170, 0.99901905, 0.49316564],\
+[	-6.27271295, -0.00060812, 0.00037264, 7.27210484, 0.99814206, 0.99901924, 0.49316569],\
+[	-6.27271324, -0.00060800, 0.00037257, 7.27210524, 0.99814243, 0.99901944, 0.49316569],\
+[	-6.27271352, -0.00060788, 0.00037249, 7.27210565, 0.99814279, 0.99901963, 0.49316572],\
+[	-6.27271381, -0.00060776, 0.00037242, 7.27210605, 0.99814316, 0.99901982, 0.49316582],\
+[	-6.27271410, -0.00060764, 0.00037235, 7.27210646, 0.99814352, 0.99902001, 0.49316585],\
+[	-6.27271438, -0.00060752, 0.00037228, 7.27210686, 0.99814389, 0.99902021, 0.49316587],\
+[	-6.27271467, -0.00060740, 0.00037220, 7.27210727, 0.99814425, 0.99902040, 0.49316592],\
+[	-6.27271495, -0.00060728, 0.00037213, 7.27210767, 0.99814461, 0.99902059, 0.49316598],\
+[	-6.27271524, -0.00060716, 0.00037206, 7.27210807, 0.99814498, 0.99902078, 0.49316599],\
+[	-6.27271552, -0.00060704, 0.00037198, 7.27210848, 0.99814534, 0.99902097, 0.49316604],\
+[	-6.27271581, -0.00060692, 0.00037191, 7.27210888, 0.99814571, 0.99902117, 0.49316608],\
+[	-6.27271609, -0.00060680, 0.00037184, 7.27210929, 0.99814607, 0.99902136, 0.49316611],\
+[	-6.27271637, -0.00060669, 0.00037176, 7.27210969, 0.99814643, 0.99902155, 0.49316616],\
+[	-6.27271666, -0.00060657, 0.00037169, 7.27211009, 0.99814680, 0.99902174, 0.49316618],\
+[	-6.27271694, -0.00060645, 0.00037162, 7.27211050, 0.99814716, 0.99902193, 0.49316624],\
+[	-6.27271723, -0.00060633, 0.00037155, 7.27211090, 0.99814752, 0.99902213, 0.49316630],\
+[	-6.27271751, -0.00060621, 0.00037147, 7.27211130, 0.99814789, 0.99902232, 0.49316633],\
+[	-6.27271780, -0.00060609, 0.00037140, 7.27211170, 0.99814825, 0.99902251, 0.49316640],\
+[	-6.27271808, -0.00060597, 0.00037133, 7.27211211, 0.99814861, 0.99902270, 0.49316642],\
+[	-6.27271836, -0.00060585, 0.00037125, 7.27211251, 0.99814897, 0.99902289, 0.49316649],\
+[	-6.27271865, -0.00060574, 0.00037118, 7.27211291, 0.99814934, 0.99902308, 0.49316653],\
+[	-6.27271893, -0.00060562, 0.00037111, 7.27211331, 0.99814970, 0.99902327, 0.49316657],\
+[	-6.27271921, -0.00060550, 0.00037104, 7.27211371, 0.99815006, 0.99902346, 0.49316659],\
+[	-6.27271950, -0.00060538, 0.00037096, 7.27211412, 0.99815042, 0.99902366, 0.49316664],\
+[	-6.27271978, -0.00060526, 0.00037089, 7.27211452, 0.99815079, 0.99902385, 0.49316670],\
+[	-6.27272006, -0.00060514, 0.00037082, 7.27211492, 0.99815115, 0.99902404, 0.49316670],\
+[	-6.27272035, -0.00060503, 0.00037075, 7.27211532, 0.99815151, 0.99902423, 0.49316673],\
+[	-6.27272063, -0.00060491, 0.00037067, 7.27211572, 0.99815187, 0.99902442, 0.49316679],\
+[	-6.27272091, -0.00060479, 0.00037060, 7.27211612, 0.99815223, 0.99902461, 0.49316685],\
+[	-6.27272120, -0.00060467, 0.00037053, 7.27211652, 0.99815259, 0.99902480, 0.49316688],\
+[	-6.27272148, -0.00060455, 0.00037046, 7.27211692, 0.99815295, 0.99902499, 0.49316692],\
+[	-6.27272176, -0.00060444, 0.00037038, 7.27211732, 0.99815331, 0.99902518, 0.49316699],\
+[	-6.27272204, -0.00060432, 0.00037031, 7.27211773, 0.99815367, 0.99902537, 0.49316698],\
+[	-6.27272232, -0.00060420, 0.00037024, 7.27211813, 0.99815404, 0.99902556, 0.49316707],\
+[	-6.27272261, -0.00060408, 0.00037017, 7.27211853, 0.99815440, 0.99902575, 0.49316710],\
+[	-6.27272289, -0.00060396, 0.00037009, 7.27211893, 0.99815476, 0.99902594, 0.49316715],\
+[	-6.27272317, -0.00060385, 0.00037002, 7.27211933, 0.99815512, 0.99902613, 0.49316718],\
+[	-6.27272345, -0.00060373, 0.00036995, 7.27211972, 0.99815548, 0.99902632, 0.49316722],\
+[	-6.27272373, -0.00060361, 0.00036988, 7.27212012, 0.99815584, 0.99902651, 0.49316726],\
+[	-6.27272402, -0.00060349, 0.00036981, 7.27212052, 0.99815620, 0.99902670, 0.49316729],\
+[	-6.27272430, -0.00060337, 0.00036973, 7.27212092, 0.99815656, 0.99902689, 0.49316735],\
+[	-6.27272458, -0.00060326, 0.00036966, 7.27212132, 0.99815691, 0.99902708, 0.49316741],\
+[	-6.27272486, -0.00060314, 0.00036959, 7.27212172, 0.99815727, 0.99902727, 0.49316741],\
+[	-6.27272514, -0.00060302, 0.00036952, 7.27212212, 0.99815763, 0.99902746, 0.49316748],\
+[	-6.27272542, -0.00060290, 0.00036945, 7.27212252, 0.99815799, 0.99902765, 0.49316753],\
+[	-6.27272570, -0.00060279, 0.00036937, 7.27212292, 0.99815835, 0.99902784, 0.49316756],\
+[	-6.27272598, -0.00060267, 0.00036930, 7.27212331, 0.99815871, 0.99902803, 0.49316761],\
+[	-6.27272626, -0.00060255, 0.00036923, 7.27212371, 0.99815907, 0.99902822, 0.49316767],\
+[	-6.27272654, -0.00060244, 0.00036916, 7.27212411, 0.99815943, 0.99902841, 0.49316768],\
+[	-6.27272683, -0.00060232, 0.00036909, 7.27212451, 0.99815978, 0.99902860, 0.49316772],\
+[	-6.27272711, -0.00060220, 0.00036901, 7.27212490, 0.99816014, 0.99902879, 0.49316778],\
+[	-6.27272739, -0.00060208, 0.00036894, 7.27212530, 0.99816050, 0.99902897, 0.49316778],\
+[	-6.27272767, -0.00060197, 0.00036887, 7.27212570, 0.99816086, 0.99902916, 0.49316783],\
+[	-6.27272795, -0.00060185, 0.00036880, 7.27212610, 0.99816122, 0.99902935, 0.49316788],\
+[	-6.27272823, -0.00060173, 0.00036873, 7.27212649, 0.99816157, 0.99902954, 0.49316787],\
+[	-6.27272851, -0.00060162, 0.00036865, 7.27212689, 0.99816193, 0.99902973, 0.49316799],\
+[	-6.27272879, -0.00060150, 0.00036858, 7.27212729, 0.99816229, 0.99902992, 0.49316801],\
+[	-6.27272907, -0.00060138, 0.00036851, 7.27212768, 0.99816265, 0.99903011, 0.49316805],\
+[	-6.27272934, -0.00060127, 0.00036844, 7.27212808, 0.99816300, 0.99903029, 0.49316810],\
+[	-6.27272962, -0.00060115, 0.00036837, 7.27212848, 0.99816336, 0.99903048, 0.49316812],\
+[	-6.27272990, -0.00060103, 0.00036830, 7.27212887, 0.99816372, 0.99903067, 0.49316815],\
+[	-6.27273018, -0.00060092, 0.00036823, 7.27212927, 0.99816407, 0.99903086, 0.49316824],\
+[	-6.27273046, -0.00060080, 0.00036815, 7.27212966, 0.99816443, 0.99903105, 0.49316825],\
+[	-6.27273074, -0.00060068, 0.00036808, 7.27213006, 0.99816479, 0.99903124, 0.49316832],\
+[	-6.27273102, -0.00060057, 0.00036801, 7.27213045, 0.99816514, 0.99903142, 0.49316835],\
+[	-6.27273130, -0.00060045, 0.00036794, 7.27213085, 0.99816550, 0.99903161, 0.49316839],\
+[	-6.27273158, -0.00060033, 0.00036787, 7.27213124, 0.99816585, 0.99903180, 0.49316844],\
+[	-6.27273186, -0.00060022, 0.00036780, 7.27213164, 0.99816621, 0.99903199, 0.49316848],\
+[	-6.27273213, -0.00060010, 0.00036773, 7.27213203, 0.99816657, 0.99903218, 0.49316850],\
+[	-6.27273241, -0.00059998, 0.00036765, 7.27213243, 0.99816692, 0.99903236, 0.49316856],\
+[	-6.27273269, -0.00059987, 0.00036758, 7.27213282, 0.99816728, 0.99903255, 0.49316861],\
+[	-6.27273297, -0.00059975, 0.00036751, 7.27213322, 0.99816763, 0.99903274, 0.49316864],\
+[	-6.27273325, -0.00059963, 0.00036744, 7.27213361, 0.99816799, 0.99903293, 0.49316869],\
+[	-6.27273352, -0.00059952, 0.00036737, 7.27213401, 0.99816834, 0.99903311, 0.49316872],\
+[	-6.27273380, -0.00059940, 0.00036730, 7.27213440, 0.99816870, 0.99903330, 0.49316876],\
+[	-6.27273408, -0.00059929, 0.00036723, 7.27213479, 0.99816905, 0.99903349, 0.49316877],\
+[	-6.27273436, -0.00059917, 0.00036716, 7.27213519, 0.99816941, 0.99903367, 0.49316887],\
+[	-6.27273463, -0.00059905, 0.00036708, 7.27213558, 0.99816976, 0.99903386, 0.49316888],\
+[	-6.27273491, -0.00059894, 0.00036701, 7.27213597, 0.99817012, 0.99903405, 0.49316895],\
+[	-6.27273519, -0.00059882, 0.00036694, 7.27213637, 0.99817047, 0.99903424, 0.49316897],\
+[	-6.27273547, -0.00059871, 0.00036687, 7.27213676, 0.99817082, 0.99903442, 0.49316901],\
+[	-6.27273574, -0.00059859, 0.00036680, 7.27213715, 0.99817118, 0.99903461, 0.49316906],\
+[	-6.27273602, -0.00059848, 0.00036673, 7.27213754, 0.99817153, 0.99903480, 0.49316911],\
+[	-6.27273630, -0.00059836, 0.00036666, 7.27213794, 0.99817189, 0.99903498, 0.49316913],\
+[	-6.27273657, -0.00059824, 0.00036659, 7.27213833, 0.99817224, 0.99903517, 0.49316914],\
+[	-6.27273685, -0.00059813, 0.00036652, 7.27213872, 0.99817259, 0.99903535, 0.49316924],\
+[	-6.27273713, -0.00059801, 0.00036645, 7.27213911, 0.99817295, 0.99903554, 0.49316926],\
+[	-6.27273740, -0.00059790, 0.00036637, 7.27213951, 0.99817330, 0.99903573, 0.49316930],\
+[	-6.27273768, -0.00059778, 0.00036630, 7.27213990, 0.99817365, 0.99903591, 0.49316938],\
+[	-6.27273796, -0.00059767, 0.00036623, 7.27214029, 0.99817400, 0.99903610, 0.49316938],\
+[	-6.27273823, -0.00059755, 0.00036616, 7.27214068, 0.99817436, 0.99903629, 0.49316938],\
+[	-6.27273851, -0.00059744, 0.00036609, 7.27214107, 0.99817471, 0.99903647, 0.49316946],\
+[	-6.27273878, -0.00059732, 0.00036602, 7.27214146, 0.99817506, 0.99903666, 0.49316948],\
+[	-6.27273906, -0.00059721, 0.00036595, 7.27214185, 0.99817541, 0.99903684, 0.49316954],\
+[	-6.27273933, -0.00059709, 0.00036588, 7.27214224, 0.99817577, 0.99903703, 0.49316961],\
+[	-6.27273961, -0.00059698, 0.00036581, 7.27214263, 0.99817612, 0.99903722, 0.49316964],\
+[	-6.27273989, -0.00059686, 0.00036574, 7.27214303, 0.99817647, 0.99903740, 0.49316966],\
+[	-6.27274016, -0.00059674, 0.00036567, 7.27214342, 0.99817682, 0.99903759, 0.49316973],\
+[	-6.27274044, -0.00059663, 0.00036560, 7.27214381, 0.99817717, 0.99903777, 0.49316976],\
+[	-6.27274071, -0.00059651, 0.00036553, 7.27214420, 0.99817752, 0.99903796, 0.49316978],\
+[	-6.27274099, -0.00059640, 0.00036546, 7.27214459, 0.99817788, 0.99903814, 0.49316985],\
+[	-6.27274126, -0.00059629, 0.00036539, 7.27214498, 0.99817823, 0.99903833, 0.49316985],\
+[	-6.27274154, -0.00059617, 0.00036532, 7.27214537, 0.99817858, 0.99903851, 0.49316990],\
+[	-6.27274181, -0.00059606, 0.00036525, 7.27214575, 0.99817893, 0.99903870, 0.49316996],\
+[	-6.27274208, -0.00059594, 0.00036517, 7.27214614, 0.99817928, 0.99903888, 0.49317001],\
+[	-6.27274236, -0.00059583, 0.00036510, 7.27214653, 0.99817963, 0.99903907, 0.49317000],\
+[	-6.27274263, -0.00059571, 0.00036503, 7.27214692, 0.99817998, 0.99903925, 0.49317004],\
+[	-6.27274291, -0.00059560, 0.00036496, 7.27214731, 0.99818033, 0.99903944, 0.49317008],\
+[	-6.27274318, -0.00059548, 0.00036489, 7.27214770, 0.99818068, 0.99903962, 0.49317014],\
+[	-6.27274346, -0.00059537, 0.00036482, 7.27214809, 0.99818103, 0.99903981, 0.49317022],\
+[	-6.27274373, -0.00059525, 0.00036475, 7.27214848, 0.99818138, 0.99903999, 0.49317024],\
+[	-6.27274400, -0.00059514, 0.00036468, 7.27214886, 0.99818173, 0.99904018, 0.49317029],\
+[	-6.27274428, -0.00059502, 0.00036461, 7.27214925, 0.99818208, 0.99904036, 0.49317032],\
+[	-6.27274455, -0.00059491, 0.00036454, 7.27214964, 0.99818243, 0.99904055, 0.49317037],\
+[	-6.27274482, -0.00059480, 0.00036447, 7.27215003, 0.99818278, 0.99904073, 0.49317042],\
+[	-6.27274510, -0.00059468, 0.00036440, 7.27215042, 0.99818313, 0.99904092, 0.49317048],\
+[	-6.27274537, -0.00059457, 0.00036433, 7.27215080, 0.99818348, 0.99904110, 0.49317047],\
+[	-6.27274564, -0.00059445, 0.00036426, 7.27215119, 0.99818383, 0.99904128, 0.49317056],\
+[	-6.27274592, -0.00059434, 0.00036419, 7.27215158, 0.99818418, 0.99904147, 0.49317055],\
+[	-6.27274619, -0.00059422, 0.00036412, 7.27215197, 0.99818452, 0.99904165, 0.49317062],\
+[	-6.27274646, -0.00059411, 0.00036405, 7.27215235, 0.99818487, 0.99904184, 0.49317064],\
+[	-6.27274674, -0.00059400, 0.00036398, 7.27215274, 0.99818522, 0.99904202, 0.49317066],\
+[	-6.27274701, -0.00059388, 0.00036391, 7.27215313, 0.99818557, 0.99904220, 0.49317073],\
+[	-6.27274728, -0.00059377, 0.00036384, 7.27215351, 0.99818592, 0.99904239, 0.49317076],\
+[	-6.27274755, -0.00059365, 0.00036377, 7.27215390, 0.99818627, 0.99904257, 0.49317082],\
+[	-6.27274783, -0.00059354, 0.00036370, 7.27215428, 0.99818661, 0.99904276, 0.49317086],\
+[	-6.27274810, -0.00059343, 0.00036363, 7.27215467, 0.99818696, 0.99904294, 0.49317091],\
+[	-6.27274837, -0.00059331, 0.00036356, 7.27215506, 0.99818731, 0.99904312, 0.49317096],\
+[	-6.27274864, -0.00059320, 0.00036349, 7.27215544, 0.99818766, 0.99904331, 0.49317092],\
+[	-6.27274891, -0.00059309, 0.00036342, 7.27215583, 0.99818800, 0.99904349, 0.49317097],\
+[	-6.27274919, -0.00059297, 0.00036335, 7.27215621, 0.99818835, 0.99904367, 0.49317108],\
+[	-6.27274946, -0.00059286, 0.00036329, 7.27215660, 0.99818870, 0.99904386, 0.49317108],\
+[	-6.27274973, -0.00059275, 0.00036322, 7.27215698, 0.99818905, 0.99904404, 0.49317113],\
+[	-6.27275000, -0.00059263, 0.00036315, 7.27215737, 0.99818939, 0.99904422, 0.49317119],\
+[	-6.27275027, -0.00059252, 0.00036308, 7.27215775, 0.99818974, 0.99904440, 0.49317125],\
+[	-6.27275054, -0.00059241, 0.00036301, 7.27215814, 0.99819009, 0.99904459, 0.49317124],\
+[	-6.27275081, -0.00059229, 0.00036294, 7.27215852, 0.99819043, 0.99904477, 0.49317130],\
+[	-6.27275109, -0.00059218, 0.00036287, 7.27215891, 0.99819078, 0.99904495, 0.49317131],\
+[	-6.27275136, -0.00059207, 0.00036280, 7.27215929, 0.99819113, 0.99904514, 0.49317136],\
+[	-6.27275163, -0.00059195, 0.00036273, 7.27215968, 0.99819147, 0.99904532, 0.49317137],\
+[	-6.27275190, -0.00059184, 0.00036266, 7.27216006, 0.99819182, 0.99904550, 0.49317148],\
+[	-6.27275217, -0.00059173, 0.00036259, 7.27216044, 0.99819216, 0.99904568, 0.49317152],\
+[	-6.27275244, -0.00059161, 0.00036252, 7.27216083, 0.99819251, 0.99904587, 0.49317157],\
+[	-6.27275271, -0.00059150, 0.00036245, 7.27216121, 0.99819285, 0.99904605, 0.49317157],\
+[	-6.27275298, -0.00059139, 0.00036238, 7.27216159, 0.99819320, 0.99904623, 0.49317163],\
+[	-6.27275325, -0.00059127, 0.00036231, 7.27216198, 0.99819355, 0.99904641, 0.49317168],\
+[	-6.27275352, -0.00059116, 0.00036224, 7.27216236, 0.99819389, 0.99904660, 0.49317166],\
+[	-6.27275379, -0.00059105, 0.00036217, 7.27216274, 0.99819424, 0.99904678, 0.49317177],\
+[	-6.27275406, -0.00059094, 0.00036211, 7.27216313, 0.99819458, 0.99904696, 0.49317179],\
+[	-6.27275433, -0.00059082, 0.00036204, 7.27216351, 0.99819493, 0.99904714, 0.49317185],\
+[	-6.27275460, -0.00059071, 0.00036197, 7.27216389, 0.99819527, 0.99904732, 0.49317189],\
+[	-6.27275487, -0.00059060, 0.00036190, 7.27216427, 0.99819561, 0.99904751, 0.49317188],\
+[	-6.27275514, -0.00059048, 0.00036183, 7.27216466, 0.99819596, 0.99904769, 0.49317197],\
+[	-6.27275541, -0.00059037, 0.00036176, 7.27216504, 0.99819630, 0.99904787, 0.49317199],\
+[	-6.27275568, -0.00059026, 0.00036169, 7.27216542, 0.99819665, 0.99904805, 0.49317206],\
+[	-6.27275595, -0.00059015, 0.00036162, 7.27216580, 0.99819699, 0.99904823, 0.49317206],\
+[	-6.27275622, -0.00059003, 0.00036155, 7.27216618, 0.99819733, 0.99904841, 0.49317210],\
+[	-6.27275649, -0.00058992, 0.00036148, 7.27216656, 0.99819768, 0.99904859, 0.49317215],\
+[	-6.27275675, -0.00058981, 0.00036141, 7.27216695, 0.99819802, 0.99904878, 0.49317218],\
+[	-6.27275702, -0.00058970, 0.00036135, 7.27216733, 0.99819837, 0.99904896, 0.49317220],\
+[	-6.27275729, -0.00058958, 0.00036128, 7.27216771, 0.99819871, 0.99904914, 0.49317224],\
+[	-6.27275756, -0.00058947, 0.00036121, 7.27216809, 0.99819905, 0.99904932, 0.49317231],\
+[	-6.27275783, -0.00058936, 0.00036114, 7.27216847, 0.99819939, 0.99904950, 0.49317228],\
+[	-6.27275810, -0.00058925, 0.00036107, 7.27216885, 0.99819974, 0.99904968, 0.49317238],\
+[	-6.27275837, -0.00058914, 0.00036100, 7.27216923, 0.99820008, 0.99904986, 0.49317241],\
+[	-6.27275863, -0.00058902, 0.00036093, 7.27216961, 0.99820042, 0.99905004, 0.49317245],\
+[	-6.27275890, -0.00058891, 0.00036086, 7.27216999, 0.99820077, 0.99905022, 0.49317253],\
+[	-6.27275917, -0.00058880, 0.00036080, 7.27217037, 0.99820111, 0.99905040, 0.49317256],\
+[	-6.27275944, -0.00058869, 0.00036073, 7.27217075, 0.99820145, 0.99905059, 0.49317260],\
+[	-6.27275971, -0.00058858, 0.00036066, 7.27217113, 0.99820179, 0.99905077, 0.49317263],\
+[	-6.27275997, -0.00058846, 0.00036059, 7.27217151, 0.99820213, 0.99905095, 0.49317270],\
+[	-6.27276024, -0.00058835, 0.00036052, 7.27217189, 0.99820248, 0.99905113, 0.49317272],\
+[	-6.27276051, -0.00058824, 0.00036045, 7.27217227, 0.99820282, 0.99905131, 0.49317275],\
+[	-6.27276078, -0.00058813, 0.00036038, 7.27217265, 0.99820316, 0.99905149, 0.49317277],\
+[	-6.27276104, -0.00058802, 0.00036032, 7.27217303, 0.99820350, 0.99905167, 0.49317281],\
+[	-6.27276131, -0.00058790, 0.00036025, 7.27217341, 0.99820384, 0.99905185, 0.49317287],\
+[	-6.27276158, -0.00058779, 0.00036018, 7.27217378, 0.99820418, 0.99905203, 0.49317289],\
+[	-6.27276184, -0.00058768, 0.00036011, 7.27217416, 0.99820453, 0.99905221, 0.49317299],\
+[	-6.27276211, -0.00058757, 0.00036004, 7.27217454, 0.99820487, 0.99905239, 0.49317296],\
+[	-6.27276238, -0.00058746, 0.00035997, 7.27217492, 0.99820521, 0.99905257, 0.49317302],\
+[	-6.27276265, -0.00058735, 0.00035991, 7.27217530, 0.99820555, 0.99905275, 0.49317307],\
+[	-6.27276291, -0.00058724, 0.00035984, 7.27217568, 0.99820589, 0.99905293, 0.49317310],\
+[	-6.27276318, -0.00058712, 0.00035977, 7.27217605, 0.99820623, 0.99905311, 0.49317316],\
+[	-6.27276344, -0.00058701, 0.00035970, 7.27217643, 0.99820657, 0.99905329, 0.49317319],\
+[	-6.27276371, -0.00058690, 0.00035963, 7.27217681, 0.99820691, 0.99905347, 0.49317321],\
+[	-6.27276398, -0.00058679, 0.00035956, 7.27217719, 0.99820725, 0.99905365, 0.49317328],\
+[	-6.27276424, -0.00058668, 0.00035950, 7.27217756, 0.99820759, 0.99905383, 0.49317329],\
+[	-6.27276451, -0.00058657, 0.00035943, 7.27217794, 0.99820793, 0.99905400, 0.49317335],\
+[	-6.27276478, -0.00058646, 0.00035936, 7.27217832, 0.99820827, 0.99905418, 0.49317337],\
+[	-6.27276504, -0.00058635, 0.00035929, 7.27217870, 0.99820861, 0.99905436, 0.49317339],\
+[	-6.27276531, -0.00058623, 0.00035922, 7.27217907, 0.99820895, 0.99905454, 0.49317346],\
+[	-6.27276557, -0.00058612, 0.00035916, 7.27217945, 0.99820929, 0.99905472, 0.49317350],\
+[	-6.27276584, -0.00058601, 0.00035909, 7.27217982, 0.99820963, 0.99905490, 0.49317354],\
+[	-6.27276610, -0.00058590, 0.00035902, 7.27218020, 0.99820997, 0.99905508, 0.49317358],\
+[	-6.27276637, -0.00058579, 0.00035895, 7.27218058, 0.99821030, 0.99905526, 0.49317361],\
+[	-6.27276663, -0.00058568, 0.00035888, 7.27218095, 0.99821064, 0.99905544, 0.49317361],\
+[	-6.27276690, -0.00058557, 0.00035882, 7.27218133, 0.99821098, 0.99905562, 0.49317370],\
+[	-6.27276716, -0.00058546, 0.00035875, 7.27218170, 0.99821132, 0.99905579, 0.49317372],\
+[	-6.27276743, -0.00058535, 0.00035868, 7.27218208, 0.99821166, 0.99905597, 0.49317378],\
+[	-6.27276769, -0.00058524, 0.00035861, 7.27218246, 0.99821200, 0.99905615, 0.49317376],\
+[	-6.27276796, -0.00058513, 0.00035854, 7.27218283, 0.99821233, 0.99905633, 0.49317387],\
+[	-6.27276822, -0.00058502, 0.00035848, 7.27218321, 0.99821267, 0.99905651, 0.49317387],\
+[	-6.27276849, -0.00058491, 0.00035841, 7.27218358, 0.99821301, 0.99905669, 0.49317394],\
+[	-6.27276875, -0.00058480, 0.00035834, 7.27218396, 0.99821335, 0.99905686, 0.49317397],\
+[	-6.27276902, -0.00058468, 0.00035827, 7.27218433, 0.99821369, 0.99905704, 0.49317398],\
+[	-6.27276928, -0.00058457, 0.00035820, 7.27218471, 0.99821402, 0.99905722, 0.49317402],\
+[	-6.27276954, -0.00058446, 0.00035814, 7.27218508, 0.99821436, 0.99905740, 0.49317408],\
+[	-6.27276981, -0.00058435, 0.00035807, 7.27218545, 0.99821470, 0.99905758, 0.49317410],\
+[	-6.27277007, -0.00058424, 0.00035800, 7.27218583, 0.99821504, 0.99905775, 0.49317417],\
+[	-6.27277034, -0.00058413, 0.00035793, 7.27218620, 0.99821537, 0.99905793, 0.49317422],\
+[	-6.27277060, -0.00058402, 0.00035787, 7.27218658, 0.99821571, 0.99905811, 0.49317425],\
+[	-6.27277086, -0.00058391, 0.00035780, 7.27218695, 0.99821605, 0.99905829, 0.49317429],\
+[	-6.27277113, -0.00058380, 0.00035773, 7.27218732, 0.99821638, 0.99905847, 0.49317428],\
+[	-6.27277139, -0.00058369, 0.00035766, 7.27218770, 0.99821672, 0.99905864, 0.49317437],\
+[	-6.27277165, -0.00058358, 0.00035760, 7.27218807, 0.99821706, 0.99905882, 0.49317446],\
+[	-6.27277192, -0.00058347, 0.00035753, 7.27218844, 0.99821739, 0.99905900, 0.49317445],\
+[	-6.27277218, -0.00058336, 0.00035746, 7.27218882, 0.99821773, 0.99905918, 0.49317449],\
+[	-6.27277244, -0.00058325, 0.00035739, 7.27218919, 0.99821806, 0.99905935, 0.49317453],\
+[	-6.27277270, -0.00058314, 0.00035733, 7.27218956, 0.99821840, 0.99905953, 0.49317457],\
+[	-6.27277297, -0.00058303, 0.00035726, 7.27218993, 0.99821874, 0.99905971, 0.49317458],\
+[	-6.27277323, -0.00058292, 0.00035719, 7.27219031, 0.99821907, 0.99905988, 0.49317467],\
+[	-6.27277349, -0.00058281, 0.00035712, 7.27219068, 0.99821941, 0.99906006, 0.49317464],\
+[	-6.27277376, -0.00058270, 0.00035706, 7.27219105, 0.99821974, 0.99906024, 0.49317472],\
+[	-6.27277402, -0.00058259, 0.00035699, 7.27219142, 0.99822008, 0.99906042, 0.49317476],\
+[	-6.27277428, -0.00058248, 0.00035692, 7.27219180, 0.99822041, 0.99906059, 0.49317478],\
+[	-6.27277454, -0.00058237, 0.00035686, 7.27219217, 0.99822075, 0.99906077, 0.49317481],\
+[	-6.27277480, -0.00058227, 0.00035679, 7.27219254, 0.99822108, 0.99906095, 0.49317486],\
+[	-6.27277507, -0.00058216, 0.00035672, 7.27219291, 0.99822142, 0.99906112, 0.49317492],\
+[	-6.27277533, -0.00058205, 0.00035665, 7.27219328, 0.99822175, 0.99906130, 0.49317497],\
+[	-6.27277559, -0.00058194, 0.00035659, 7.27219365, 0.99822209, 0.99906148, 0.49317500],\
+[	-6.27277585, -0.00058183, 0.00035652, 7.27219402, 0.99822242, 0.99906165, 0.49317504],\
+[	-6.27277611, -0.00058172, 0.00035645, 7.27219440, 0.99822275, 0.99906183, 0.49317502],\
+[	-6.27277637, -0.00058161, 0.00035639, 7.27219477, 0.99822309, 0.99906200, 0.49317510],\
+[	-6.27277664, -0.00058150, 0.00035632, 7.27219514, 0.99822342, 0.99906218, 0.49317515],\
+[	-6.27277690, -0.00058139, 0.00035625, 7.27219551, 0.99822376, 0.99906236, 0.49317515],\
+[	-6.27277716, -0.00058128, 0.00035619, 7.27219588, 0.99822409, 0.99906253, 0.49317527],\
+[	-6.27277742, -0.00058117, 0.00035612, 7.27219625, 0.99822442, 0.99906271, 0.49317521],\
+[	-6.27277768, -0.00058106, 0.00035605, 7.27219662, 0.99822476, 0.99906289, 0.49317533],\
+[	-6.27277794, -0.00058095, 0.00035598, 7.27219699, 0.99822509, 0.99906306, 0.49317536],\
+[	-6.27277820, -0.00058084, 0.00035592, 7.27219736, 0.99822542, 0.99906324, 0.49317532],\
+[	-6.27277846, -0.00058074, 0.00035585, 7.27219773, 0.99822576, 0.99906341, 0.49317542],\
+[	-6.27277872, -0.00058063, 0.00035578, 7.27219810, 0.99822609, 0.99906359, 0.49317544],\
+[	-6.27277898, -0.00058052, 0.00035572, 7.27219847, 0.99822642, 0.99906376, 0.49317549],\
+[	-6.27277924, -0.00058041, 0.00035565, 7.27219884, 0.99822675, 0.99906394, 0.49317552],\
+[	-6.27277950, -0.00058030, 0.00035558, 7.27219920, 0.99822709, 0.99906412, 0.49317558],\
+[	-6.27277977, -0.00058019, 0.00035552, 7.27219957, 0.99822742, 0.99906429, 0.49317562],\
+[	-6.27278003, -0.00058008, 0.00035545, 7.27219994, 0.99822775, 0.99906447, 0.49317566],\
+[	-6.27278029, -0.00057997, 0.00035538, 7.27220031, 0.99822808, 0.99906464, 0.49317568],\
+[	-6.27278055, -0.00057987, 0.00035532, 7.27220068, 0.99822842, 0.99906482, 0.49317573],\
+[	-6.27278080, -0.00057976, 0.00035525, 7.27220105, 0.99822875, 0.99906499, 0.49317574],\
+[	-6.27278106, -0.00057965, 0.00035518, 7.27220142, 0.99822908, 0.99906517, 0.49317581],\
+[	-6.27278132, -0.00057954, 0.00035512, 7.27220178, 0.99822941, 0.99906534, 0.49317584],\
+[	-6.27278158, -0.00057943, 0.00035505, 7.27220215, 0.99822974, 0.99906552, 0.49317591],\
+[	-6.27278184, -0.00057932, 0.00035498, 7.27220252, 0.99823008, 0.99906569, 0.49317591],\
+[	-6.27278210, -0.00057921, 0.00035492, 7.27220289, 0.99823041, 0.99906587, 0.49317595],\
+[	-6.27278236, -0.00057911, 0.00035485, 7.27220326, 0.99823074, 0.99906604, 0.49317597],\
+[	-6.27278262, -0.00057900, 0.00035479, 7.27220362, 0.99823107, 0.99906622, 0.49317601],\
+[	-6.27278288, -0.00057889, 0.00035472, 7.27220399, 0.99823140, 0.99906639, 0.49317609],\
+[	-6.27278314, -0.00057878, 0.00035465, 7.27220436, 0.99823173, 0.99906657, 0.49317610],\
+[	-6.27278340, -0.00057867, 0.00035459, 7.27220472, 0.99823206, 0.99906674, 0.49317615],\
+[	-6.27278366, -0.00057857, 0.00035452, 7.27220509, 0.99823239, 0.99906691, 0.49317621],\
+[	-6.27278392, -0.00057846, 0.00035445, 7.27220546, 0.99823272, 0.99906709, 0.49317622],\
+[	-6.27278417, -0.00057835, 0.00035439, 7.27220582, 0.99823305, 0.99906726, 0.49317632],\
+[	-6.27278443, -0.00057824, 0.00035432, 7.27220619, 0.99823338, 0.99906744, 0.49317629],\
+[	-6.27278469, -0.00057813, 0.00035425, 7.27220656, 0.99823371, 0.99906761, 0.49317636],\
+[	-6.27278495, -0.00057802, 0.00035419, 7.27220692, 0.99823404, 0.99906779, 0.49317638],\
+[	-6.27278521, -0.00057792, 0.00035412, 7.27220729, 0.99823437, 0.99906796, 0.49317641],\
+[	-6.27278547, -0.00057781, 0.00035406, 7.27220766, 0.99823470, 0.99906813, 0.49317644],\
+[	-6.27278572, -0.00057770, 0.00035399, 7.27220802, 0.99823503, 0.99906831, 0.49317646],\
+[	-6.27278598, -0.00057759, 0.00035392, 7.27220839, 0.99823536, 0.99906848, 0.49317651],\
+[	-6.27278624, -0.00057749, 0.00035386, 7.27220875, 0.99823569, 0.99906866, 0.49317654],\
+[	-6.27278650, -0.00057738, 0.00035379, 7.27220912, 0.99823602, 0.99906883, 0.49317660],\
+[	-6.27278675, -0.00057727, 0.00035373, 7.27220948, 0.99823635, 0.99906900, 0.49317666],\
+[	-6.27278701, -0.00057716, 0.00035366, 7.27220985, 0.99823668, 0.99906918, 0.49317668],\
+[	-6.27278727, -0.00057706, 0.00035359, 7.27221021, 0.99823701, 0.99906935, 0.49317676],\
+[	-6.27278753, -0.00057695, 0.00035353, 7.27221058, 0.99823734, 0.99906952, 0.49317676],\
+[	-6.27278778, -0.00057684, 0.00035346, 7.27221094, 0.99823766, 0.99906970, 0.49317678],\
+[	-6.27278804, -0.00057673, 0.00035340, 7.27221131, 0.99823799, 0.99906987, 0.49317683],\
+[	-6.27278830, -0.00057663, 0.00035333, 7.27221167, 0.99823832, 0.99907004, 0.49317687],\
+[	-6.27278855, -0.00057652, 0.00035326, 7.27221204, 0.99823865, 0.99907022, 0.49317691],\
+[	-6.27278881, -0.00057641, 0.00035320, 7.27221240, 0.99823898, 0.99907039, 0.49317697],\
+[	-6.27278907, -0.00057630, 0.00035313, 7.27221277, 0.99823931, 0.99907056, 0.49317699],\
+[	-6.27278933, -0.00057620, 0.00035307, 7.27221313, 0.99823963, 0.99907074, 0.49317702],\
+[	-6.27278958, -0.00057609, 0.00035300, 7.27221349, 0.99823996, 0.99907091, 0.49317708],\
+[	-6.27278984, -0.00057598, 0.00035294, 7.27221386, 0.99824029, 0.99907108, 0.49317710],\
+[	-6.27279009, -0.00057587, 0.00035287, 7.27221422, 0.99824062, 0.99907126, 0.49317717],\
+[	-6.27279035, -0.00057577, 0.00035280, 7.27221458, 0.99824094, 0.99907143, 0.49317720],\
+[	-6.27279061, -0.00057566, 0.00035274, 7.27221495, 0.99824127, 0.99907160, 0.49317720],\
+[	-6.27279086, -0.00057555, 0.00035267, 7.27221531, 0.99824160, 0.99907177, 0.49317727],\
+[	-6.27279112, -0.00057545, 0.00035261, 7.27221567, 0.99824193, 0.99907195, 0.49317735],\
+[	-6.27279137, -0.00057534, 0.00035254, 7.27221604, 0.99824225, 0.99907212, 0.49317732],\
+[	-6.27279163, -0.00057523, 0.00035248, 7.27221640, 0.99824258, 0.99907229, 0.49317739],\
+[	-6.27279189, -0.00057513, 0.00035241, 7.27221676, 0.99824291, 0.99907246, 0.49317738],\
+[	-6.27279214, -0.00057502, 0.00035235, 7.27221712, 0.99824323, 0.99907264, 0.49317745],\
+[	-6.27279240, -0.00057491, 0.00035228, 7.27221749, 0.99824356, 0.99907281, 0.49317748],\
+[	-6.27279265, -0.00057480, 0.00035221, 7.27221785, 0.99824389, 0.99907298, 0.49317752],\
+[	-6.27279291, -0.00057470, 0.00035215, 7.27221821, 0.99824421, 0.99907315, 0.49317757],\
+[	-6.27279316, -0.00057459, 0.00035208, 7.27221857, 0.99824454, 0.99907332, 0.49317760],\
+[	-6.27279342, -0.00057448, 0.00035202, 7.27221893, 0.99824486, 0.99907350, 0.49317764],\
+[	-6.27279367, -0.00057438, 0.00035195, 7.27221930, 0.99824519, 0.99907367, 0.49317766],\
+[	-6.27279393, -0.00057427, 0.00035189, 7.27221966, 0.99824551, 0.99907384, 0.49317770],\
+[	-6.27279418, -0.00057417, 0.00035182, 7.27222002, 0.99824584, 0.99907401, 0.49317777],\
+[	-6.27279444, -0.00057406, 0.00035176, 7.27222038, 0.99824617, 0.99907418, 0.49317774],\
+[	-6.27279469, -0.00057395, 0.00035169, 7.27222074, 0.99824649, 0.99907436, 0.49317781],\
+[	-6.27279495, -0.00057385, 0.00035163, 7.27222110, 0.99824682, 0.99907453, 0.49317792],\
+[	-6.27279520, -0.00057374, 0.00035156, 7.27222146, 0.99824714, 0.99907470, 0.49317788],\
+[	-6.27279546, -0.00057363, 0.00035150, 7.27222182, 0.99824747, 0.99907487, 0.49317793],\
+[	-6.27279571, -0.00057353, 0.00035143, 7.27222218, 0.99824779, 0.99907504, 0.49317800],\
+[	-6.27279596, -0.00057342, 0.00035137, 7.27222254, 0.99824812, 0.99907521, 0.49317798],\
+[	-6.27279622, -0.00057331, 0.00035130, 7.27222290, 0.99824844, 0.99907538, 0.49317810],\
+[	-6.27279647, -0.00057321, 0.00035124, 7.27222326, 0.99824877, 0.99907556, 0.49317811],\
+[	-6.27279673, -0.00057310, 0.00035117, 7.27222362, 0.99824909, 0.99907573, 0.49317808],\
+[	-6.27279698, -0.00057300, 0.00035111, 7.27222398, 0.99824941, 0.99907590, 0.49317818],\
+[	-6.27279723, -0.00057289, 0.00035104, 7.27222434, 0.99824974, 0.99907607, 0.49317820],\
+[	-6.27279749, -0.00057278, 0.00035098, 7.27222470, 0.99825006, 0.99907624, 0.49317824],\
+[	-6.27279774, -0.00057268, 0.00035091, 7.27222506, 0.99825039, 0.99907641, 0.49317828],\
+[	-6.27279799, -0.00057257, 0.00035085, 7.27222542, 0.99825071, 0.99907658, 0.49317828],\
+[	-6.27279825, -0.00057247, 0.00035078, 7.27222578, 0.99825103, 0.99907675, 0.49317836],\
+[	-6.27279850, -0.00057236, 0.00035072, 7.27222614, 0.99825136, 0.99907692, 0.49317841],\
+[	-6.27279875, -0.00057225, 0.00035065, 7.27222650, 0.99825168, 0.99907709, 0.49317844],\
+[	-6.27279901, -0.00057215, 0.00035059, 7.27222686, 0.99825200, 0.99907727, 0.49317846],\
+[	-6.27279926, -0.00057204, 0.00035052, 7.27222722, 0.99825233, 0.99907744, 0.49317853],\
+[	-6.27279951, -0.00057194, 0.00035046, 7.27222758, 0.99825265, 0.99907761, 0.49317855],\
+[	-6.27279977, -0.00057183, 0.00035039, 7.27222793, 0.99825297, 0.99907778, 0.49317862],\
+[	-6.27280002, -0.00057173, 0.00035033, 7.27222829, 0.99825330, 0.99907795, 0.49317862],\
+[	-6.27280027, -0.00057162, 0.00035026, 7.27222865, 0.99825362, 0.99907812, 0.49317865],\
+[	-6.27280052, -0.00057152, 0.00035020, 7.27222901, 0.99825394, 0.99907829, 0.49317872],\
+[	-6.27280078, -0.00057141, 0.00035013, 7.27222937, 0.99825426, 0.99907846, 0.49317874],\
+[	-6.27280103, -0.00057130, 0.00035007, 7.27222972, 0.99825459, 0.99907863, 0.49317875],\
+[	-6.27280128, -0.00057120, 0.00035000, 7.27223008, 0.99825491, 0.99907880, 0.49317879],\
+[	-6.27280153, -0.00057109, 0.00034994, 7.27223044, 0.99825523, 0.99907897, 0.49317885],\
+[	-6.27280178, -0.00057099, 0.00034987, 7.27223080, 0.99825555, 0.99907914, 0.49317886],\
+[	-6.27280204, -0.00057088, 0.00034981, 7.27223115, 0.99825587, 0.99907931, 0.49317891],\
+[	-6.27280229, -0.00057078, 0.00034974, 7.27223151, 0.99825620, 0.99907948, 0.49317896],\
+[	-6.27280254, -0.00057067, 0.00034968, 7.27223187, 0.99825652, 0.99907965, 0.49317901],\
+[	-6.27280279, -0.00057057, 0.00034962, 7.27223222, 0.99825684, 0.99907982, 0.49317904],\
+[	-6.27280304, -0.00057046, 0.00034955, 7.27223258, 0.99825716, 0.99907999, 0.49317904],\
+[	-6.27280329, -0.00057036, 0.00034949, 7.27223294, 0.99825748, 0.99908016, 0.49317910],\
+[	-6.27280355, -0.00057025, 0.00034942, 7.27223329, 0.99825780, 0.99908033, 0.49317919],\
+[	-6.27280380, -0.00057015, 0.00034936, 7.27223365, 0.99825812, 0.99908050, 0.49317919],\
+[	-6.27280405, -0.00057004, 0.00034929, 7.27223401, 0.99825844, 0.99908066, 0.49317919],\
+[	-6.27280430, -0.00056994, 0.00034923, 7.27223436, 0.99825877, 0.99908083, 0.49317929],\
+[	-6.27280455, -0.00056983, 0.00034916, 7.27223472, 0.99825909, 0.99908100, 0.49317932],\
+[	-6.27280480, -0.00056973, 0.00034910, 7.27223507, 0.99825941, 0.99908117, 0.49317933],\
+[	-6.27280505, -0.00056962, 0.00034904, 7.27223543, 0.99825973, 0.99908134, 0.49317936],\
+[	-6.27280530, -0.00056952, 0.00034897, 7.27223579, 0.99826005, 0.99908151, 0.49317942],\
+[	-6.27280555, -0.00056941, 0.00034891, 7.27223614, 0.99826037, 0.99908168, 0.49317941],\
+[	-6.27280580, -0.00056931, 0.00034884, 7.27223650, 0.99826069, 0.99908185, 0.49317944],\
+[	-6.27280606, -0.00056920, 0.00034878, 7.27223685, 0.99826101, 0.99908202, 0.49317951],\
+[	-6.27280631, -0.00056910, 0.00034872, 7.27223721, 0.99826133, 0.99908219, 0.49317958],\
+[	-6.27280656, -0.00056899, 0.00034865, 7.27223756, 0.99826165, 0.99908235, 0.49317962],\
+[	-6.27280681, -0.00056889, 0.00034859, 7.27223792, 0.99826197, 0.99908252, 0.49317961],\
+[	-6.27280706, -0.00056878, 0.00034852, 7.27223827, 0.99826229, 0.99908269, 0.49317963],\
+[	-6.27280731, -0.00056868, 0.00034846, 7.27223863, 0.99826261, 0.99908286, 0.49317970],\
+[	-6.27280756, -0.00056858, 0.00034839, 7.27223898, 0.99826293, 0.99908303, 0.49317974],\
+[	-6.27280781, -0.00056847, 0.00034833, 7.27223933, 0.99826324, 0.99908320, 0.49317978],\
+[	-6.27280806, -0.00056837, 0.00034827, 7.27223969, 0.99826356, 0.99908337, 0.49317977],\
+[	-6.27280830, -0.00056826, 0.00034820, 7.27224004, 0.99826388, 0.99908353, 0.49317984],\
+[	-6.27280855, -0.00056816, 0.00034814, 7.27224040, 0.99826420, 0.99908370, 0.49317991],\
+[	-6.27280880, -0.00056805, 0.00034807, 7.27224075, 0.99826452, 0.99908387, 0.49317993],\
+[	-6.27280905, -0.00056795, 0.00034801, 7.27224110, 0.99826484, 0.99908404, 0.49317997],\
+[	-6.27280930, -0.00056785, 0.00034795, 7.27224146, 0.99826516, 0.99908421, 0.49317999],\
+[	-6.27280955, -0.00056774, 0.00034788, 7.27224181, 0.99826547, 0.99908438, 0.49318004],\
+[	-6.27280980, -0.00056764, 0.00034782, 7.27224216, 0.99826579, 0.99908454, 0.49318009],\
+[	-6.27281005, -0.00056753, 0.00034776, 7.27224252, 0.99826611, 0.99908471, 0.49318013],\
+[	-6.27281030, -0.00056743, 0.00034769, 7.27224287, 0.99826643, 0.99908488, 0.49318014],\
+[	-6.27281055, -0.00056733, 0.00034763, 7.27224322, 0.99826675, 0.99908505, 0.49318020],\
+[	-6.27281080, -0.00056722, 0.00034756, 7.27224357, 0.99826706, 0.99908521, 0.49318023],\
+[	-6.27281104, -0.00056712, 0.00034750, 7.27224393, 0.99826738, 0.99908538, 0.49318021],\
+[	-6.27281129, -0.00056701, 0.00034744, 7.27224428, 0.99826770, 0.99908555, 0.49318033],\
+[	-6.27281154, -0.00056691, 0.00034737, 7.27224463, 0.99826802, 0.99908572, 0.49318033],\
+[	-6.27281179, -0.00056681, 0.00034731, 7.27224498, 0.99826833, 0.99908588, 0.49318036],\
+[	-6.27281204, -0.00056670, 0.00034725, 7.27224534, 0.99826865, 0.99908605, 0.49318042],\
+[	-6.27281229, -0.00056660, 0.00034718, 7.27224569, 0.99826897, 0.99908622, 0.49318046],\
+[	-6.27281253, -0.00056649, 0.00034712, 7.27224604, 0.99826929, 0.99908639, 0.49318048],\
+[	-6.27281278, -0.00056639, 0.00034706, 7.27224639, 0.99826960, 0.99908655, 0.49318053],\
+[	-6.27281303, -0.00056629, 0.00034699, 7.27224674, 0.99826992, 0.99908672, 0.49318056],\
+[	-6.27281328, -0.00056618, 0.00034693, 7.27224709, 0.99827024, 0.99908689, 0.49318059],\
+[	-6.27281353, -0.00056608, 0.00034686, 7.27224745, 0.99827055, 0.99908705, 0.49318066],\
+[	-6.27281377, -0.00056598, 0.00034680, 7.27224780, 0.99827087, 0.99908722, 0.49318067],\
+[	-6.27281402, -0.00056587, 0.00034674, 7.27224815, 0.99827119, 0.99908739, 0.49318073],\
+[	-6.27281427, -0.00056577, 0.00034667, 7.27224850, 0.99827150, 0.99908756, 0.49318072],\
+[	-6.27281452, -0.00056567, 0.00034661, 7.27224885, 0.99827182, 0.99908772, 0.49318077],\
+[	-6.27281476, -0.00056556, 0.00034655, 7.27224920, 0.99827213, 0.99908789, 0.49318079],\
+[	-6.27281501, -0.00056546, 0.00034648, 7.27224955, 0.99827245, 0.99908806, 0.49318086],\
+[	-6.27281526, -0.00056536, 0.00034642, 7.27224990, 0.99827276, 0.99908822, 0.49318086],\
+[	-6.27281550, -0.00056525, 0.00034636, 7.27225025, 0.99827308, 0.99908839, 0.49318091],\
+[	-6.27281575, -0.00056515, 0.00034629, 7.27225060, 0.99827340, 0.99908856, 0.49318093],\
+[	-6.27281600, -0.00056505, 0.00034623, 7.27225095, 0.99827371, 0.99908872, 0.49318097],\
+[	-6.27281624, -0.00056494, 0.00034617, 7.27225130, 0.99827403, 0.99908889, 0.49318102],\
+[	-6.27281649, -0.00056484, 0.00034610, 7.27225165, 0.99827434, 0.99908905, 0.49318109],\
+[	-6.27281674, -0.00056474, 0.00034604, 7.27225200, 0.99827466, 0.99908922, 0.49318111],\
+[	-6.27281698, -0.00056463, 0.00034598, 7.27225235, 0.99827497, 0.99908939, 0.49318114],\
+[	-6.27281723, -0.00056453, 0.00034592, 7.27225270, 0.99827529, 0.99908955, 0.49318118],\
+[	-6.27281748, -0.00056443, 0.00034585, 7.27225305, 0.99827560, 0.99908972, 0.49318122],\
+[	-6.27281772, -0.00056433, 0.00034579, 7.27225340, 0.99827591, 0.99908988, 0.49318124],\
+[	-6.27281797, -0.00056422, 0.00034573, 7.27225375, 0.99827623, 0.99909005, 0.49318128],\
+[	-6.27281822, -0.00056412, 0.00034566, 7.27225409, 0.99827654, 0.99909022, 0.49318131],\
+[	-6.27281846, -0.00056402, 0.00034560, 7.27225444, 0.99827686, 0.99909038, 0.49318135],\
+[	-6.27281871, -0.00056391, 0.00034554, 7.27225479, 0.99827717, 0.99909055, 0.49318140],\
+[	-6.27281895, -0.00056381, 0.00034547, 7.27225514, 0.99827749, 0.99909071, 0.49318139],\
+[	-6.27281920, -0.00056371, 0.00034541, 7.27225549, 0.99827780, 0.99909088, 0.49318148],\
+[	-6.27281944, -0.00056361, 0.00034535, 7.27225584, 0.99827811, 0.99909105, 0.49318152],\
+[	-6.27281969, -0.00056350, 0.00034528, 7.27225619, 0.99827843, 0.99909121, 0.49318156],\
+[	-6.27281993, -0.00056340, 0.00034522, 7.27225653, 0.99827874, 0.99909138, 0.49318159],\
+[	-6.27282018, -0.00056330, 0.00034516, 7.27225688, 0.99827905, 0.99909154, 0.49318163],\
+[	-6.27282043, -0.00056320, 0.00034510, 7.27225723, 0.99827937, 0.99909171, 0.49318166],\
+[	-6.27282067, -0.00056309, 0.00034503, 7.27225758, 0.99827968, 0.99909187, 0.49318168],\
+[	-6.27282092, -0.00056299, 0.00034497, 7.27225792, 0.99827999, 0.99909204, 0.49318179],\
+[	-6.27282116, -0.00056289, 0.00034491, 7.27225827, 0.99828031, 0.99909220, 0.49318171],\
+[	-6.27282141, -0.00056279, 0.00034485, 7.27225862, 0.99828062, 0.99909237, 0.49318177],\
+[	-6.27282165, -0.00056268, 0.00034478, 7.27225897, 0.99828093, 0.99909253, 0.49318188],\
+[	-6.27282189, -0.00056258, 0.00034472, 7.27225931, 0.99828124, 0.99909270, 0.49318185],\
+[	-6.27282214, -0.00056248, 0.00034466, 7.27225966, 0.99828156, 0.99909286, 0.49318190],\
+[	-6.27282238, -0.00056238, 0.00034459, 7.27226001, 0.99828187, 0.99909303, 0.49318196],\
+[	-6.27282263, -0.00056228, 0.00034453, 7.27226035, 0.99828218, 0.99909319, 0.49318197],\
+[	-6.27282287, -0.00056217, 0.00034447, 7.27226070, 0.99828249, 0.99909336, 0.49318203],\
+[	-6.27282312, -0.00056207, 0.00034441, 7.27226104, 0.99828281, 0.99909352, 0.49318204],\
+[	-6.27282336, -0.00056197, 0.00034434, 7.27226139, 0.99828312, 0.99909369, 0.49318210],\
+[	-6.27282360, -0.00056187, 0.00034428, 7.27226174, 0.99828343, 0.99909385, 0.49318213],\
+[	-6.27282385, -0.00056177, 0.00034422, 7.27226208, 0.99828374, 0.99909402, 0.49318217],\
+[	-6.27282409, -0.00056166, 0.00034416, 7.27226243, 0.99828405, 0.99909418, 0.49318219],\
+[	-6.27282434, -0.00056156, 0.00034409, 7.27226277, 0.99828436, 0.99909434, 0.49318217],\
+[	-6.27282458, -0.00056146, 0.00034403, 7.27226312, 0.99828467, 0.99909451, 0.49318229],\
+[	-6.27282482, -0.00056136, 0.00034397, 7.27226347, 0.99828499, 0.99909467, 0.49318235],\
+[	-6.27282507, -0.00056126, 0.00034391, 7.27226381, 0.99828530, 0.99909484, 0.49318234],\
+[	-6.27282531, -0.00056115, 0.00034384, 7.27226416, 0.99828561, 0.99909500, 0.49318238],\
+[	-6.27282555, -0.00056105, 0.00034378, 7.27226450, 0.99828592, 0.99909516, 0.49318244],\
+[	-6.27282580, -0.00056095, 0.00034372, 7.27226485, 0.99828623, 0.99909533, 0.49318245],\
+[	-6.27282604, -0.00056085, 0.00034366, 7.27226519, 0.99828654, 0.99909549, 0.49318251],\
+[	-6.27282628, -0.00056075, 0.00034360, 7.27226554, 0.99828685, 0.99909566, 0.49318249],\
+[	-6.27282653, -0.00056065, 0.00034353, 7.27226588, 0.99828716, 0.99909582, 0.49318260],\
+[	-6.27282677, -0.00056055, 0.00034347, 7.27226622, 0.99828747, 0.99909598, 0.49318256],\
+[	-6.27282701, -0.00056044, 0.00034341, 7.27226657, 0.99828778, 0.99909615, 0.49318268],\
+[	-6.27282725, -0.00056034, 0.00034335, 7.27226691, 0.99828809, 0.99909631, 0.49318269],\
+[	-6.27282750, -0.00056024, 0.00034328, 7.27226726, 0.99828840, 0.99909648, 0.49318273],\
+[	-6.27282774, -0.00056014, 0.00034322, 7.27226760, 0.99828871, 0.99909664, 0.49318276],\
+[	-6.27282798, -0.00056004, 0.00034316, 7.27226794, 0.99828902, 0.99909680, 0.49318278],\
+[	-6.27282822, -0.00055994, 0.00034310, 7.27226829, 0.99828933, 0.99909697, 0.49318281],\
+[	-6.27282847, -0.00055984, 0.00034304, 7.27226863, 0.99828964, 0.99909713, 0.49318285],\
+[	-6.27282871, -0.00055973, 0.00034297, 7.27226898, 0.99828995, 0.99909729, 0.49318289],\
+[	-6.27282895, -0.00055963, 0.00034291, 7.27226932, 0.99829026, 0.99909746, 0.49318294],\
+[	-6.27282919, -0.00055953, 0.00034285, 7.27226966, 0.99829057, 0.99909762, 0.49318296],\
+[	-6.27282944, -0.00055943, 0.00034279, 7.27227000, 0.99829088, 0.99909778, 0.49318295],\
+[	-6.27282968, -0.00055933, 0.00034273, 7.27227035, 0.99829119, 0.99909794, 0.49318302],\
+[	-6.27282992, -0.00055923, 0.00034266, 7.27227069, 0.99829150, 0.99909811, 0.49318310],\
+[	-6.27283016, -0.00055913, 0.00034260, 7.27227103, 0.99829180, 0.99909827, 0.49318311],\
+[	-6.27283040, -0.00055903, 0.00034254, 7.27227138, 0.99829211, 0.99909843, 0.49318314],\
+[	-6.27283064, -0.00055893, 0.00034248, 7.27227172, 0.99829242, 0.99909860, 0.49318318],\
+[	-6.27283089, -0.00055882, 0.00034242, 7.27227206, 0.99829273, 0.99909876, 0.49318320],\
+[	-6.27283113, -0.00055872, 0.00034235, 7.27227240, 0.99829304, 0.99909892, 0.49318320],\
+[	-6.27283137, -0.00055862, 0.00034229, 7.27227274, 0.99829335, 0.99909908, 0.49318327],\
+[	-6.27283161, -0.00055852, 0.00034223, 7.27227309, 0.99829365, 0.99909925, 0.49318333],\
+[	-6.27283185, -0.00055842, 0.00034217, 7.27227343, 0.99829396, 0.99909941, 0.49318333],\
+[	-6.27283209, -0.00055832, 0.00034211, 7.27227377, 0.99829427, 0.99909957, 0.49318336],\
+[	-6.27283233, -0.00055822, 0.00034204, 7.27227411, 0.99829458, 0.99909973, 0.49318343],\
+[	-6.27283257, -0.00055812, 0.00034198, 7.27227445, 0.99829489, 0.99909990, 0.49318344],\
+[	-6.27283281, -0.00055802, 0.00034192, 7.27227479, 0.99829519, 0.99910006, 0.49318351],\
+[	-6.27283305, -0.00055792, 0.00034186, 7.27227514, 0.99829550, 0.99910022, 0.49318353],\
+[	-6.27283329, -0.00055782, 0.00034180, 7.27227548, 0.99829581, 0.99910038, 0.49318358],\
+[	-6.27283353, -0.00055772, 0.00034174, 7.27227582, 0.99829611, 0.99910055, 0.49318362],\
+[	-6.27283378, -0.00055762, 0.00034168, 7.27227616, 0.99829642, 0.99910071, 0.49318360],\
+[	-6.27283402, -0.00055752, 0.00034161, 7.27227650, 0.99829673, 0.99910087, 0.49318367],\
+[	-6.27283426, -0.00055742, 0.00034155, 7.27227684, 0.99829704, 0.99910103, 0.49318371],\
+[	-6.27283450, -0.00055732, 0.00034149, 7.27227718, 0.99829734, 0.99910119, 0.49318374],\
+[	-6.27283474, -0.00055722, 0.00034143, 7.27227752, 0.99829765, 0.99910136, 0.49318380],\
+[	-6.27283498, -0.00055712, 0.00034137, 7.27227786, 0.99829796, 0.99910152, 0.49318376],\
+[	-6.27283522, -0.00055701, 0.00034131, 7.27227820, 0.99829826, 0.99910168, 0.49318386],\
+[	-6.27283546, -0.00055691, 0.00034124, 7.27227854, 0.99829857, 0.99910184, 0.49318389],\
+[	-6.27283570, -0.00055681, 0.00034118, 7.27227888, 0.99829887, 0.99910200, 0.49318390],\
+[	-6.27283593, -0.00055671, 0.00034112, 7.27227922, 0.99829918, 0.99910216, 0.49318396],\
+[	-6.27283617, -0.00055661, 0.00034106, 7.27227956, 0.99829949, 0.99910233, 0.49318401],\
+[	-6.27283641, -0.00055651, 0.00034100, 7.27227990, 0.99829979, 0.99910249, 0.49318410],\
+[	-6.27283665, -0.00055641, 0.00034094, 7.27228024, 0.99830010, 0.99910265, 0.49318407],\
+[	-6.27283689, -0.00055631, 0.00034088, 7.27228058, 0.99830040, 0.99910281, 0.49318407],\
+[	-6.27283713, -0.00055621, 0.00034081, 7.27228092, 0.99830071, 0.99910297, 0.49318414],\
+[	-6.27283737, -0.00055611, 0.00034075, 7.27228126, 0.99830101, 0.99910313, 0.49318415],\
+[	-6.27283761, -0.00055601, 0.00034069, 7.27228159, 0.99830132, 0.99910329, 0.49318423],\
+[	-6.27283785, -0.00055591, 0.00034063, 7.27228193, 0.99830163, 0.99910345, 0.49318423],\
+[	-6.27283809, -0.00055581, 0.00034057, 7.27228227, 0.99830193, 0.99910362, 0.49318427],\
+[	-6.27283833, -0.00055571, 0.00034051, 7.27228261, 0.99830224, 0.99910378, 0.49318428],\
+[	-6.27283856, -0.00055562, 0.00034045, 7.27228295, 0.99830254, 0.99910394, 0.49318433],\
+[	-6.27283880, -0.00055552, 0.00034039, 7.27228329, 0.99830285, 0.99910410, 0.49318443],\
+[	-6.27283904, -0.00055542, 0.00034033, 7.27228363, 0.99830315, 0.99910426, 0.49318443],\
+[	-6.27283928, -0.00055532, 0.00034026, 7.27228396, 0.99830345, 0.99910442, 0.49318449],\
+[	-6.27283952, -0.00055522, 0.00034020, 7.27228430, 0.99830376, 0.99910458, 0.49318449],\
+[	-6.27283976, -0.00055512, 0.00034014, 7.27228464, 0.99830406, 0.99910474, 0.49318454],\
+[	-6.27283999, -0.00055502, 0.00034008, 7.27228498, 0.99830437, 0.99910490, 0.49318457],\
+[	-6.27284023, -0.00055492, 0.00034002, 7.27228531, 0.99830467, 0.99910506, 0.49318459],\
+[	-6.27284047, -0.00055482, 0.00033996, 7.27228565, 0.99830498, 0.99910522, 0.49318460],\
+[	-6.27284071, -0.00055472, 0.00033990, 7.27228599, 0.99830528, 0.99910538, 0.49318465],\
+[	-6.27284095, -0.00055462, 0.00033984, 7.27228633, 0.99830558, 0.99910554, 0.49318472],\
+[	-6.27284118, -0.00055452, 0.00033978, 7.27228666, 0.99830589, 0.99910570, 0.49318477],\
+[	-6.27284142, -0.00055442, 0.00033972, 7.27228700, 0.99830619, 0.99910586, 0.49318479],\
+[	-6.27284166, -0.00055432, 0.00033965, 7.27228734, 0.99830649, 0.99910602, 0.49318483],\
+[	-6.27284190, -0.00055422, 0.00033959, 7.27228767, 0.99830680, 0.99910618, 0.49318487],\
+[	-6.27284213, -0.00055412, 0.00033953, 7.27228801, 0.99830710, 0.99910634, 0.49318489],\
+[	-6.27284237, -0.00055402, 0.00033947, 7.27228835, 0.99830740, 0.99910650, 0.49318490],\
+[	-6.27284261, -0.00055393, 0.00033941, 7.27228868, 0.99830771, 0.99910666, 0.49318496],\
+[	-6.27284285, -0.00055383, 0.00033935, 7.27228902, 0.99830801, 0.99910682, 0.49318499],\
+[	-6.27284308, -0.00055373, 0.00033929, 7.27228936, 0.99830831, 0.99910698, 0.49318499],\
+[	-6.27284332, -0.00055363, 0.00033923, 7.27228969, 0.99830861, 0.99910714, 0.49318509],\
+[	-6.27284356, -0.00055353, 0.00033917, 7.27229003, 0.99830892, 0.99910730, 0.49318511],\
+[	-6.27284379, -0.00055343, 0.00033911, 7.27229036, 0.99830922, 0.99910746, 0.49318515],\
+[	-6.27284403, -0.00055333, 0.00033905, 7.27229070, 0.99830952, 0.99910762, 0.49318516],\
+[	-6.27284427, -0.00055323, 0.00033899, 7.27229103, 0.99830982, 0.99910778, 0.49318524],\
+[	-6.27284450, -0.00055313, 0.00033893, 7.27229137, 0.99831013, 0.99910794, 0.49318524],\
+[	-6.27284474, -0.00055303, 0.00033887, 7.27229170, 0.99831043, 0.99910810, 0.49318528],\
+[	-6.27284498, -0.00055294, 0.00033880, 7.27229204, 0.99831073, 0.99910826, 0.49318529],\
+[	-6.27284521, -0.00055284, 0.00033874, 7.27229237, 0.99831103, 0.99910842, 0.49318533],\
+[	-6.27284545, -0.00055274, 0.00033868, 7.27229271, 0.99831133, 0.99910858, 0.49318539],\
+[	-6.27284568, -0.00055264, 0.00033862, 7.27229304, 0.99831164, 0.99910874, 0.49318542],\
+[	-6.27284592, -0.00055254, 0.00033856, 7.27229338, 0.99831194, 0.99910890, 0.49318543],\
+[	-6.27284616, -0.00055244, 0.00033850, 7.27229371, 0.99831224, 0.99910906, 0.49318547],\
+[	-6.27284639, -0.00055234, 0.00033844, 7.27229405, 0.99831254, 0.99910921, 0.49318555],\
+[	-6.27284663, -0.00055225, 0.00033838, 7.27229438, 0.99831284, 0.99910937, 0.49318557],\
+[	-6.27284686, -0.00055215, 0.00033832, 7.27229472, 0.99831314, 0.99910953, 0.49318561],\
+[	-6.27284710, -0.00055205, 0.00033826, 7.27229505, 0.99831344, 0.99910969, 0.49318565],\
+[	-6.27284733, -0.00055195, 0.00033820, 7.27229538, 0.99831374, 0.99910985, 0.49318570],\
+[	-6.27284757, -0.00055185, 0.00033814, 7.27229572, 0.99831404, 0.99911001, 0.49318569],\
+[	-6.27284781, -0.00055175, 0.00033808, 7.27229605, 0.99831435, 0.99911017, 0.49318574],\
+[	-6.27284804, -0.00055165, 0.00033802, 7.27229639, 0.99831465, 0.99911033, 0.49318575],\
+[	-6.27284828, -0.00055156, 0.00033796, 7.27229672, 0.99831495, 0.99911048, 0.49318581],\
+[	-6.27284851, -0.00055146, 0.00033790, 7.27229705, 0.99831525, 0.99911064, 0.49318582],\
+[	-6.27284875, -0.00055136, 0.00033784, 7.27229739, 0.99831555, 0.99911080, 0.49318586],\
+[	-6.27284898, -0.00055126, 0.00033778, 7.27229772, 0.99831585, 0.99911096, 0.49318588],\
+[	-6.27284922, -0.00055116, 0.00033772, 7.27229805, 0.99831615, 0.99911112, 0.49318595],\
+[	-6.27284945, -0.00055107, 0.00033766, 7.27229838, 0.99831645, 0.99911128, 0.49318599],\
+[	-6.27284968, -0.00055097, 0.00033760, 7.27229872, 0.99831675, 0.99911143, 0.49318604],\
+[	-6.27284992, -0.00055087, 0.00033754, 7.27229905, 0.99831705, 0.99911159, 0.49318604],\
+[	-6.27285015, -0.00055077, 0.00033748, 7.27229938, 0.99831735, 0.99911175, 0.49318612],\
+[	-6.27285039, -0.00055067, 0.00033742, 7.27229971, 0.99831765, 0.99911191, 0.49318613],\
+[	-6.27285062, -0.00055058, 0.00033736, 7.27230005, 0.99831794, 0.99911207, 0.49318622],\
+[	-6.27285086, -0.00055048, 0.00033730, 7.27230038, 0.99831824, 0.99911223, 0.49318623],\
+[	-6.27285109, -0.00055038, 0.00033724, 7.27230071, 0.99831854, 0.99911238, 0.49318626],\
+[	-6.27285133, -0.00055028, 0.00033718, 7.27230104, 0.99831884, 0.99911254, 0.49318626],\
+[	-6.27285156, -0.00055018, 0.00033712, 7.27230138, 0.99831914, 0.99911270, 0.49318628],\
+[	-6.27285179, -0.00055009, 0.00033706, 7.27230171, 0.99831944, 0.99911286, 0.49318633],\
+[	-6.27285203, -0.00054999, 0.00033700, 7.27230204, 0.99831974, 0.99911301, 0.49318637],\
+[	-6.27285226, -0.00054989, 0.00033694, 7.27230237, 0.99832004, 0.99911317, 0.49318637],\
+[	-6.27285249, -0.00054979, 0.00033688, 7.27230270, 0.99832034, 0.99911333, 0.49318644],\
+[	-6.27285273, -0.00054970, 0.00033682, 7.27230303, 0.99832063, 0.99911349, 0.49318645],\
+[	-6.27285296, -0.00054960, 0.00033676, 7.27230336, 0.99832093, 0.99911364, 0.49318646],\
+[	-6.27285319, -0.00054950, 0.00033670, 7.27230369, 0.99832123, 0.99911380, 0.49318651],\
+[	-6.27285343, -0.00054940, 0.00033664, 7.27230403, 0.99832153, 0.99911396, 0.49318650],\
+[	-6.27285366, -0.00054931, 0.00033658, 7.27230436, 0.99832183, 0.99911412, 0.49318659],\
+[	-6.27285389, -0.00054921, 0.00033652, 7.27230469, 0.99832212, 0.99911427, 0.49318666],\
+[	-6.27285413, -0.00054911, 0.00033646, 7.27230502, 0.99832242, 0.99911443, 0.49318665],\
+[	-6.27285436, -0.00054901, 0.00033640, 7.27230535, 0.99832272, 0.99911459, 0.49318670],\
+[	-6.27285459, -0.00054892, 0.00033634, 7.27230568, 0.99832302, 0.99911474, 0.49318673],\
+[	-6.27285483, -0.00054882, 0.00033628, 7.27230601, 0.99832332, 0.99911490, 0.49318677],\
+[	-6.27285506, -0.00054872, 0.00033622, 7.27230634, 0.99832361, 0.99911506, 0.49318685],\
+[	-6.27285529, -0.00054862, 0.00033616, 7.27230667, 0.99832391, 0.99911522, 0.49318683],\
+[	-6.27285552, -0.00054853, 0.00033610, 7.27230700, 0.99832421, 0.99911537, 0.49318692],\
+[	-6.27285576, -0.00054843, 0.00033604, 7.27230733, 0.99832450, 0.99911553, 0.49318690],\
+[	-6.27285599, -0.00054833, 0.00033598, 7.27230766, 0.99832480, 0.99911569, 0.49318694],\
+[	-6.27285622, -0.00054824, 0.00033592, 7.27230799, 0.99832510, 0.99911584, 0.49318700],\
+[	-6.27285645, -0.00054814, 0.00033586, 7.27230832, 0.99832539, 0.99911600, 0.49318701],\
+[	-6.27285669, -0.00054804, 0.00033580, 7.27230865, 0.99832569, 0.99911616, 0.49318705],\
+[	-6.27285692, -0.00054794, 0.00033574, 7.27230897, 0.99832599, 0.99911631, 0.49318711],\
+[	-6.27285715, -0.00054785, 0.00033568, 7.27230930, 0.99832628, 0.99911647, 0.49318708],\
+[	-6.27285738, -0.00054775, 0.00033563, 7.27230963, 0.99832658, 0.99911662, 0.49318719],\
+[	-6.27285761, -0.00054765, 0.00033557, 7.27230996, 0.99832688, 0.99911678, 0.49318717],\
+[	-6.27285785, -0.00054756, 0.00033551, 7.27231029, 0.99832717, 0.99911694, 0.49318724],\
+[	-6.27285808, -0.00054746, 0.00033545, 7.27231062, 0.99832747, 0.99911709, 0.49318723],\
+[	-6.27285831, -0.00054736, 0.00033539, 7.27231095, 0.99832776, 0.99911725, 0.49318729],\
+[	-6.27285854, -0.00054727, 0.00033533, 7.27231127, 0.99832806, 0.99911741, 0.49318737],\
+[	-6.27285877, -0.00054717, 0.00033527, 7.27231160, 0.99832836, 0.99911756, 0.49318736],\
+[	-6.27285900, -0.00054707, 0.00033521, 7.27231193, 0.99832865, 0.99911772, 0.49318737],\
+[	-6.27285923, -0.00054698, 0.00033515, 7.27231226, 0.99832895, 0.99911787, 0.49318744],\
+[	-6.27285947, -0.00054688, 0.00033509, 7.27231259, 0.99832924, 0.99911803, 0.49318747],\
+[	-6.27285970, -0.00054678, 0.00033503, 7.27231291, 0.99832954, 0.99911819, 0.49318750],\
+[	-6.27285993, -0.00054669, 0.00033497, 7.27231324, 0.99832983, 0.99911834, 0.49318752],\
+[	-6.27286016, -0.00054659, 0.00033491, 7.27231357, 0.99833013, 0.99911850, 0.49318756],\
+[	-6.27286039, -0.00054649, 0.00033485, 7.27231390, 0.99833042, 0.99911865, 0.49318760],\
+[	-6.27286062, -0.00054640, 0.00033480, 7.27231422, 0.99833072, 0.99911881, 0.49318765],\
+[	-6.27286085, -0.00054630, 0.00033474, 7.27231455, 0.99833101, 0.99911896, 0.49318766],\
+[	-6.27286108, -0.00054620, 0.00033468, 7.27231488, 0.99833131, 0.99911912, 0.49318767],\
+[	-6.27286131, -0.00054611, 0.00033462, 7.27231521, 0.99833160, 0.99911927, 0.49318769],\
+[	-6.27286154, -0.00054601, 0.00033456, 7.27231553, 0.99833190, 0.99911943, 0.49318777],\
+[	-6.27286177, -0.00054591, 0.00033450, 7.27231586, 0.99833219, 0.99911959, 0.49318778],\
+[	-6.27286200, -0.00054582, 0.00033444, 7.27231619, 0.99833248, 0.99911974, 0.49318783],\
+[	-6.27286223, -0.00054572, 0.00033438, 7.27231651, 0.99833278, 0.99911990, 0.49318785],\
+[	-6.27286246, -0.00054563, 0.00033432, 7.27231684, 0.99833307, 0.99912005, 0.49318790],\
+[	-6.27286269, -0.00054553, 0.00033426, 7.27231716, 0.99833337, 0.99912021, 0.49318796],\
+[	-6.27286292, -0.00054543, 0.00033420, 7.27231749, 0.99833366, 0.99912036, 0.49318798],\
+[	-6.27286315, -0.00054534, 0.00033415, 7.27231782, 0.99833395, 0.99912052, 0.49318802],\
+[	-6.27286338, -0.00054524, 0.00033409, 7.27231814, 0.99833425, 0.99912067, 0.49318801],\
+[	-6.27286361, -0.00054515, 0.00033403, 7.27231847, 0.99833454, 0.99912083, 0.49318810],\
+[	-6.27286384, -0.00054505, 0.00033397, 7.27231879, 0.99833483, 0.99912098, 0.49318815],\
+[	-6.27286407, -0.00054495, 0.00033391, 7.27231912, 0.99833513, 0.99912114, 0.49318815],\
+[	-6.27286430, -0.00054486, 0.00033385, 7.27231944, 0.99833542, 0.99912129, 0.49318821],\
+[	-6.27286453, -0.00054476, 0.00033379, 7.27231977, 0.99833571, 0.99912145, 0.49318820],\
+[	-6.27286476, -0.00054467, 0.00033373, 7.27232010, 0.99833601, 0.99912160, 0.49318828],\
+[	-6.27286499, -0.00054457, 0.00033368, 7.27232042, 0.99833630, 0.99912175, 0.49318827],\
+[	-6.27286522, -0.00054447, 0.00033362, 7.27232075, 0.99833659, 0.99912191, 0.49318830],\
+[	-6.27286545, -0.00054438, 0.00033356, 7.27232107, 0.99833689, 0.99912206, 0.49318834],\
+[	-6.27286568, -0.00054428, 0.00033350, 7.27232139, 0.99833718, 0.99912222, 0.49318840],\
+[	-6.27286591, -0.00054419, 0.00033344, 7.27232172, 0.99833747, 0.99912237, 0.49318849],\
+[	-6.27286614, -0.00054409, 0.00033338, 7.27232204, 0.99833776, 0.99912253, 0.49318845],\
+[	-6.27286636, -0.00054400, 0.00033332, 7.27232237, 0.99833805, 0.99912268, 0.49318852],\
+[	-6.27286659, -0.00054390, 0.00033326, 7.27232269, 0.99833835, 0.99912283, 0.49318851],\
+[	-6.27286682, -0.00054380, 0.00033321, 7.27232302, 0.99833864, 0.99912299, 0.49318855],\
+[	-6.27286705, -0.00054371, 0.00033315, 7.27232334, 0.99833893, 0.99912314, 0.49318857],\
+[	-6.27286728, -0.00054361, 0.00033309, 7.27232366, 0.99833922, 0.99912330, 0.49318863],\
+[	-6.27286751, -0.00054352, 0.00033303, 7.27232399, 0.99833951, 0.99912345, 0.49318865],\
+[	-6.27286774, -0.00054342, 0.00033297, 7.27232431, 0.99833981, 0.99912360, 0.49318871],\
+[	-6.27286796, -0.00054333, 0.00033291, 7.27232464, 0.99834010, 0.99912376, 0.49318871],\
+[	-6.27286819, -0.00054323, 0.00033286, 7.27232496, 0.99834039, 0.99912391, 0.49318882],\
+[	-6.27286842, -0.00054314, 0.00033280, 7.27232528, 0.99834068, 0.99912407, 0.49318885],\
+[	-6.27286865, -0.00054304, 0.00033274, 7.27232561, 0.99834097, 0.99912422, 0.49318882],\
+[	-6.27286888, -0.00054295, 0.00033268, 7.27232593, 0.99834126, 0.99912437, 0.49318888],\
+[	-6.27286910, -0.00054285, 0.00033262, 7.27232625, 0.99834155, 0.99912453, 0.49318890],\
+[	-6.27286933, -0.00054276, 0.00033256, 7.27232657, 0.99834184, 0.99912468, 0.49318892],\
+[	-6.27286956, -0.00054266, 0.00033250, 7.27232690, 0.99834214, 0.99912483, 0.49318896],\
+[	-6.27286979, -0.00054257, 0.00033245, 7.27232722, 0.99834243, 0.99912499, 0.49318900],\
+[	-6.27287001, -0.00054247, 0.00033239, 7.27232754, 0.99834272, 0.99912514, 0.49318899],\
+[	-6.27287024, -0.00054238, 0.00033233, 7.27232787, 0.99834301, 0.99912529, 0.49318908],\
+[	-6.27287047, -0.00054228, 0.00033227, 7.27232819, 0.99834330, 0.99912545, 0.49318910],\
+[	-6.27287070, -0.00054219, 0.00033221, 7.27232851, 0.99834359, 0.99912560, 0.49318913],\
+[	-6.27287092, -0.00054209, 0.00033216, 7.27232883, 0.99834388, 0.99912575, 0.49318913],\
+[	-6.27287115, -0.00054200, 0.00033210, 7.27232915, 0.99834417, 0.99912591, 0.49318919],\
+[	-6.27287138, -0.00054190, 0.00033204, 7.27232948, 0.99834446, 0.99912606, 0.49318918],\
+[	-6.27287160, -0.00054181, 0.00033198, 7.27232980, 0.99834475, 0.99912621, 0.49318924],\
+[	-6.27287183, -0.00054171, 0.00033192, 7.27233012, 0.99834504, 0.99912637, 0.49318928],\
+[	-6.27287206, -0.00054162, 0.00033186, 7.27233044, 0.99834533, 0.99912652, 0.49318937],\
+[	-6.27287228, -0.00054152, 0.00033181, 7.27233076, 0.99834562, 0.99912667, 0.49318939],\
+[	-6.27287251, -0.00054143, 0.00033175, 7.27233108, 0.99834591, 0.99912682, 0.49318942],\
+[	-6.27287274, -0.00054133, 0.00033169, 7.27233140, 0.99834620, 0.99912698, 0.49318944],\
+[	-6.27287296, -0.00054124, 0.00033163, 7.27233173, 0.99834649, 0.99912713, 0.49318945],\
+[	-6.27287319, -0.00054114, 0.00033157, 7.27233205, 0.99834677, 0.99912728, 0.49318948],\
+[	-6.27287342, -0.00054105, 0.00033152, 7.27233237, 0.99834706, 0.99912744, 0.49318948],\
+[	-6.27287364, -0.00054095, 0.00033146, 7.27233269, 0.99834735, 0.99912759, 0.49318960],\
+[	-6.27287387, -0.00054086, 0.00033140, 7.27233301, 0.99834764, 0.99912774, 0.49318965],\
+[	-6.27287409, -0.00054076, 0.00033134, 7.27233333, 0.99834793, 0.99912789, 0.49318963],\
+[	-6.27287432, -0.00054067, 0.00033128, 7.27233365, 0.99834822, 0.99912805, 0.49318967],\
+[	-6.27287455, -0.00054058, 0.00033123, 7.27233397, 0.99834851, 0.99912820, 0.49318974],\
+[	-6.27287477, -0.00054048, 0.00033117, 7.27233429, 0.99834880, 0.99912835, 0.49318975],\
+[	-6.27287500, -0.00054039, 0.00033111, 7.27233461, 0.99834908, 0.99912850, 0.49318982],\
+[	-6.27287522, -0.00054029, 0.00033105, 7.27233493, 0.99834937, 0.99912865, 0.49318976],\
+[	-6.27287545, -0.00054020, 0.00033100, 7.27233525, 0.99834966, 0.99912881, 0.49318982],\
+[	-6.27287568, -0.00054010, 0.00033094, 7.27233557, 0.99834995, 0.99912896, 0.49318990],\
+[	-6.27287590, -0.00054001, 0.00033088, 7.27233589, 0.99835024, 0.99912911, 0.49318991],\
+[	-6.27287613, -0.00053992, 0.00033082, 7.27233621, 0.99835052, 0.99912926, 0.49318988],\
+[	-6.27287635, -0.00053982, 0.00033076, 7.27233653, 0.99835081, 0.99912941, 0.49319001],\
+[	-6.27287658, -0.00053973, 0.00033071, 7.27233685, 0.99835110, 0.99912957, 0.49318998],\
+[	-6.27287680, -0.00053963, 0.00033065, 7.27233717, 0.99835139, 0.99912972, 0.49319007],\
+[	-6.27287703, -0.00053954, 0.00033059, 7.27233749, 0.99835168, 0.99912987, 0.49319009],\
+[	-6.27287725, -0.00053945, 0.00033053, 7.27233781, 0.99835196, 0.99913002, 0.49319013],\
+[	-6.27287748, -0.00053935, 0.00033048, 7.27233812, 0.99835225, 0.99913017, 0.49319012],\
+[	-6.27287770, -0.00053926, 0.00033042, 7.27233844, 0.99835254, 0.99913032, 0.49319022],\
+[	-6.27287793, -0.00053916, 0.00033036, 7.27233876, 0.99835282, 0.99913048, 0.49319019],\
+[	-6.27287815, -0.00053907, 0.00033030, 7.27233908, 0.99835311, 0.99913063, 0.49319021],\
+[	-6.27287838, -0.00053898, 0.00033025, 7.27233940, 0.99835340, 0.99913078, 0.49319029],\
+[	-6.27287860, -0.00053888, 0.00033019, 7.27233972, 0.99835368, 0.99913093, 0.49319029],\
+[	-6.27287882, -0.00053879, 0.00033013, 7.27234004, 0.99835397, 0.99913108, 0.49319033],\
+[	-6.27287905, -0.00053869, 0.00033007, 7.27234035, 0.99835426, 0.99913123, 0.49319038],\
+[	-6.27287927, -0.00053860, 0.00033002, 7.27234067, 0.99835454, 0.99913138, 0.49319044],\
+[	-6.27287950, -0.00053851, 0.00032996, 7.27234099, 0.99835483, 0.99913153, 0.49319044],\
+[	-6.27287972, -0.00053841, 0.00032990, 7.27234131, 0.99835512, 0.99913169, 0.49319052],\
+[	-6.27287994, -0.00053832, 0.00032984, 7.27234162, 0.99835540, 0.99913184, 0.49319053],\
+[	-6.27288017, -0.00053823, 0.00032979, 7.27234194, 0.99835569, 0.99913199, 0.49319055],\
+[	-6.27288039, -0.00053813, 0.00032973, 7.27234226, 0.99835598, 0.99913214, 0.49319059],\
+[	-6.27288062, -0.00053804, 0.00032967, 7.27234258, 0.99835626, 0.99913229, 0.49319064],\
+[	-6.27288084, -0.00053795, 0.00032961, 7.27234289, 0.99835655, 0.99913244, 0.49319065],\
+[	-6.27288106, -0.00053785, 0.00032956, 7.27234321, 0.99835683, 0.99913259, 0.49319063],\
+[	-6.27288129, -0.00053776, 0.00032950, 7.27234353, 0.99835712, 0.99913274, 0.49319073],\
+[	-6.27288151, -0.00053767, 0.00032944, 7.27234385, 0.99835740, 0.99913289, 0.49319071],\
+[	-6.27288173, -0.00053757, 0.00032938, 7.27234416, 0.99835769, 0.99913304, 0.49319080],\
+[	-6.27288196, -0.00053748, 0.00032933, 7.27234448, 0.99835797, 0.99913319, 0.49319079],\
+[	-6.27288218, -0.00053739, 0.00032927, 7.27234480, 0.99835826, 0.99913334, 0.49319084],\
+[	-6.27288240, -0.00053729, 0.00032921, 7.27234511, 0.99835854, 0.99913349, 0.49319094],\
+[	-6.27288263, -0.00053720, 0.00032916, 7.27234543, 0.99835883, 0.99913365, 0.49319090],\
+[	-6.27288285, -0.00053711, 0.00032910, 7.27234574, 0.99835911, 0.99913380, 0.49319093],\
+[	-6.27288307, -0.00053701, 0.00032904, 7.27234606, 0.99835940, 0.99913395, 0.49319095],\
+[	-6.27288330, -0.00053692, 0.00032898, 7.27234638, 0.99835968, 0.99913410, 0.49319102],\
+[	-6.27288352, -0.00053683, 0.00032893, 7.27234669, 0.99835997, 0.99913425, 0.49319110],\
+[	-6.27288374, -0.00053673, 0.00032887, 7.27234701, 0.99836025, 0.99913440, 0.49319107],\
+[	-6.27288396, -0.00053664, 0.00032881, 7.27234732, 0.99836054, 0.99913455, 0.49319115],\
+[	-6.27288419, -0.00053655, 0.00032876, 7.27234764, 0.99836082, 0.99913470, 0.49319113],\
+[	-6.27288441, -0.00053645, 0.00032870, 7.27234795, 0.99836111, 0.99913485, 0.49319119],\
+[	-6.27288463, -0.00053636, 0.00032864, 7.27234827, 0.99836139, 0.99913500, 0.49319119],\
+[	-6.27288485, -0.00053627, 0.00032859, 7.27234859, 0.99836167, 0.99913515, 0.49319124],\
+[	-6.27288508, -0.00053618, 0.00032853, 7.27234890, 0.99836196, 0.99913530, 0.49319131],\
+[	-6.27288530, -0.00053608, 0.00032847, 7.27234922, 0.99836224, 0.99913545, 0.49319132],\
+[	-6.27288552, -0.00053599, 0.00032841, 7.27234953, 0.99836253, 0.99913560, 0.49319134],\
+[	-6.27288574, -0.00053590, 0.00032836, 7.27234985, 0.99836281, 0.99913575, 0.49319141],\
+[	-6.27288596, -0.00053580, 0.00032830, 7.27235016, 0.99836309, 0.99913590, 0.49319142],\
+[	-6.27288619, -0.00053571, 0.00032824, 7.27235047, 0.99836338, 0.99913604, 0.49319138],\
+[	-6.27288641, -0.00053562, 0.00032819, 7.27235079, 0.99836366, 0.99913619, 0.49319145],\
+[	-6.27288663, -0.00053553, 0.00032813, 7.27235110, 0.99836394, 0.99913634, 0.49319149],\
+[	-6.27288685, -0.00053543, 0.00032807, 7.27235142, 0.99836423, 0.99913649, 0.49319155],\
+[	-6.27288707, -0.00053534, 0.00032802, 7.27235173, 0.99836451, 0.99913664, 0.49319156],\
+[	-6.27288729, -0.00053525, 0.00032796, 7.27235205, 0.99836479, 0.99913679, 0.49319156],\
+[	-6.27288752, -0.00053516, 0.00032790, 7.27235236, 0.99836507, 0.99913694, 0.49319162],\
+[	-6.27288774, -0.00053506, 0.00032785, 7.27235267, 0.99836536, 0.99913709, 0.49319169],\
+[	-6.27288796, -0.00053497, 0.00032779, 7.27235299, 0.99836564, 0.99913724, 0.49319169],\
+[	-6.27288818, -0.00053488, 0.00032773, 7.27235330, 0.99836592, 0.99913739, 0.49319176],\
+[	-6.27288840, -0.00053479, 0.00032768, 7.27235361, 0.99836620, 0.99913754, 0.49319177],\
+[	-6.27288862, -0.00053469, 0.00032762, 7.27235393, 0.99836649, 0.99913769, 0.49319182],\
+[	-6.27288884, -0.00053460, 0.00032756, 7.27235424, 0.99836677, 0.99913784, 0.49319183],\
+[	-6.27288906, -0.00053451, 0.00032751, 7.27235455, 0.99836705, 0.99913798, 0.49319186],\
+[	-6.27288928, -0.00053442, 0.00032745, 7.27235487, 0.99836733, 0.99913813, 0.49319195],\
+[	-6.27288950, -0.00053432, 0.00032739, 7.27235518, 0.99836762, 0.99913828, 0.49319191],\
+[	-6.27288973, -0.00053423, 0.00032734, 7.27235549, 0.99836790, 0.99913843, 0.49319195],\
+[	-6.27288995, -0.00053414, 0.00032728, 7.27235581, 0.99836818, 0.99913858, 0.49319198],\
+[	-6.27289017, -0.00053405, 0.00032722, 7.27235612, 0.99836846, 0.99913873, 0.49319204],\
+[	-6.27289039, -0.00053396, 0.00032717, 7.27235643, 0.99836874, 0.99913888, 0.49319208],\
+[	-6.27289061, -0.00053386, 0.00032711, 7.27235674, 0.99836902, 0.99913903, 0.49319213],\
+[	-6.27289083, -0.00053377, 0.00032705, 7.27235706, 0.99836931, 0.99913917, 0.49319212],\
+[	-6.27289105, -0.00053368, 0.00032700, 7.27235737, 0.99836959, 0.99913932, 0.49319218],\
+[	-6.27289127, -0.00053359, 0.00032694, 7.27235768, 0.99836987, 0.99913947, 0.49319222],\
+[	-6.27289149, -0.00053350, 0.00032689, 7.27235799, 0.99837015, 0.99913962, 0.49319223],\
+[	-6.27289171, -0.00053340, 0.00032683, 7.27235830, 0.99837043, 0.99913977, 0.49319229],\
+[	-6.27289193, -0.00053331, 0.00032677, 7.27235862, 0.99837071, 0.99913992, 0.49319228],\
+[	-6.27289215, -0.00053322, 0.00032672, 7.27235893, 0.99837099, 0.99914006, 0.49319230],\
+[	-6.27289237, -0.00053313, 0.00032666, 7.27235924, 0.99837127, 0.99914021, 0.49319236],\
+[	-6.27289259, -0.00053304, 0.00032660, 7.27235955, 0.99837155, 0.99914036, 0.49319240],\
+[	-6.27289281, -0.00053294, 0.00032655, 7.27235986, 0.99837183, 0.99914051, 0.49319244],\
+[	-6.27289303, -0.00053285, 0.00032649, 7.27236017, 0.99837211, 0.99914066, 0.49319243],\
+[	-6.27289325, -0.00053276, 0.00032643, 7.27236048, 0.99837239, 0.99914080, 0.49319249],\
+[	-6.27289346, -0.00053267, 0.00032638, 7.27236080, 0.99837267, 0.99914095, 0.49319257],\
+[	-6.27289368, -0.00053258, 0.00032632, 7.27236111, 0.99837295, 0.99914110, 0.49319253],\
+[	-6.27289390, -0.00053249, 0.00032627, 7.27236142, 0.99837323, 0.99914125, 0.49319261],\
+[	-6.27289412, -0.00053239, 0.00032621, 7.27236173, 0.99837351, 0.99914140, 0.49319263],\
+[	-6.27289434, -0.00053230, 0.00032615, 7.27236204, 0.99837379, 0.99914154, 0.49319267],\
+[	-6.27289456, -0.00053221, 0.00032610, 7.27236235, 0.99837407, 0.99914169, 0.49319271],\
+[	-6.27289478, -0.00053212, 0.00032604, 7.27236266, 0.99837435, 0.99914184, 0.49319271],\
+[	-6.27289500, -0.00053203, 0.00032599, 7.27236297, 0.99837463, 0.99914199, 0.49319270],\
+[	-6.27289522, -0.00053194, 0.00032593, 7.27236328, 0.99837491, 0.99914213, 0.49319278],\
+[	-6.27289544, -0.00053185, 0.00032587, 7.27236359, 0.99837519, 0.99914228, 0.49319281],\
+[	-6.27289565, -0.00053175, 0.00032582, 7.27236390, 0.99837547, 0.99914243, 0.49319284],\
+[	-6.27289587, -0.00053166, 0.00032576, 7.27236421, 0.99837575, 0.99914258, 0.49319286],\
+[	-6.27289609, -0.00053157, 0.00032571, 7.27236452, 0.99837603, 0.99914272, 0.49319287],\
+[	-6.27289631, -0.00053148, 0.00032565, 7.27236483, 0.99837631, 0.99914287, 0.49319297],\
+[	-6.27289653, -0.00053139, 0.00032559, 7.27236514, 0.99837659, 0.99914302, 0.49319300],\
+[	-6.27289675, -0.00053130, 0.00032554, 7.27236545, 0.99837687, 0.99914316, 0.49319302],\
+[	-6.27289696, -0.00053121, 0.00032548, 7.27236576, 0.99837714, 0.99914331, 0.49319305],\
+[	-6.27289718, -0.00053112, 0.00032543, 7.27236607, 0.99837742, 0.99914346, 0.49319306],\
+[	-6.27289740, -0.00053102, 0.00032537, 7.27236638, 0.99837770, 0.99914361, 0.49319318],\
+[	-6.27289762, -0.00053093, 0.00032531, 7.27236668, 0.99837798, 0.99914375, 0.49319313],\
+[	-6.27289784, -0.00053084, 0.00032526, 7.27236699, 0.99837826, 0.99914390, 0.49319318],\
+[	-6.27289805, -0.00053075, 0.00032520, 7.27236730, 0.99837854, 0.99914405, 0.49319320],\
+[	-6.27289827, -0.00053066, 0.00032515, 7.27236761, 0.99837881, 0.99914419, 0.49319315],\
+[	-6.27289849, -0.00053057, 0.00032509, 7.27236792, 0.99837909, 0.99914434, 0.49319329],\
+[	-6.27289871, -0.00053048, 0.00032504, 7.27236823, 0.99837937, 0.99914449, 0.49319329],\
+[	-6.27289892, -0.00053039, 0.00032498, 7.27236854, 0.99837965, 0.99914463, 0.49319336],\
+[	-6.27289914, -0.00053030, 0.00032492, 7.27236884, 0.99837993, 0.99914478, 0.49319338],\
+[	-6.27289936, -0.00053021, 0.00032487, 7.27236915, 0.99838020, 0.99914493, 0.49319340],\
+[	-6.27289958, -0.00053012, 0.00032481, 7.27236946, 0.99838048, 0.99914507, 0.49319339],\
+[	-6.27289979, -0.00053002, 0.00032476, 7.27236977, 0.99838076, 0.99914522, 0.49319350],\
+[	-6.27290001, -0.00052993, 0.00032470, 7.27237008, 0.99838104, 0.99914536, 0.49319352],\
+[	-6.27290023, -0.00052984, 0.00032465, 7.27237038, 0.99838131, 0.99914551, 0.49319359],\
+[	-6.27290044, -0.00052975, 0.00032459, 7.27237069, 0.99838159, 0.99914566, 0.49319354],\
+[	-6.27290066, -0.00052966, 0.00032453, 7.27237100, 0.99838187, 0.99914580, 0.49319355],\
+[	-6.27290088, -0.00052957, 0.00032448, 7.27237131, 0.99838214, 0.99914595, 0.49319365],\
+[	-6.27290109, -0.00052948, 0.00032442, 7.27237161, 0.99838242, 0.99914610, 0.49319372],\
+[	-6.27290131, -0.00052939, 0.00032437, 7.27237192, 0.99838270, 0.99914624, 0.49319371],\
+[	-6.27290153, -0.00052930, 0.00032431, 7.27237223, 0.99838297, 0.99914639, 0.49319369],\
+[	-6.27290174, -0.00052921, 0.00032426, 7.27237254, 0.99838325, 0.99914653, 0.49319379],\
+[	-6.27290196, -0.00052912, 0.00032420, 7.27237284, 0.99838353, 0.99914668, 0.49319379],\
+[	-6.27290218, -0.00052903, 0.00032415, 7.27237315, 0.99838380, 0.99914683, 0.49319387],\
+[	-6.27290239, -0.00052894, 0.00032409, 7.27237346, 0.99838408, 0.99914697, 0.49319384],\
+[	-6.27290261, -0.00052885, 0.00032404, 7.27237376, 0.99838436, 0.99914712, 0.49319390],\
+[	-6.27290283, -0.00052876, 0.00032398, 7.27237407, 0.99838463, 0.99914726, 0.49319391],\
+[	-6.27290304, -0.00052867, 0.00032392, 7.27237438, 0.99838491, 0.99914741, 0.49319397],\
+[	-6.27290326, -0.00052858, 0.00032387, 7.27237468, 0.99838518, 0.99914755, 0.49319399],\
+[	-6.27290347, -0.00052849, 0.00032381, 7.27237499, 0.99838546, 0.99914770, 0.49319399],\
+[	-6.27290369, -0.00052840, 0.00032376, 7.27237529, 0.99838574, 0.99914785, 0.49319402],\
+[	-6.27290391, -0.00052831, 0.00032370, 7.27237560, 0.99838601, 0.99914799, 0.49319410],\
+[	-6.27290412, -0.00052822, 0.00032365, 7.27237591, 0.99838629, 0.99914814, 0.49319411],\
+[	-6.27290434, -0.00052813, 0.00032359, 7.27237621, 0.99838656, 0.99914828, 0.49319417],\
+[	-6.27290455, -0.00052804, 0.00032354, 7.27237652, 0.99838684, 0.99914843, 0.49319421],\
+[	-6.27290477, -0.00052795, 0.00032348, 7.27237682, 0.99838711, 0.99914857, 0.49319423],\
+[	-6.27290498, -0.00052786, 0.00032343, 7.27237713, 0.99838739, 0.99914872, 0.49319424],\
+[	-6.27290520, -0.00052777, 0.00032337, 7.27237743, 0.99838766, 0.99914886, 0.49319429],\
+[	-6.27290541, -0.00052768, 0.00032332, 7.27237774, 0.99838794, 0.99914901, 0.49319426],\
+[	-6.27290563, -0.00052759, 0.00032326, 7.27237804, 0.99838821, 0.99914915, 0.49319434],\
+[	-6.27290584, -0.00052750, 0.00032321, 7.27237835, 0.99838849, 0.99914930, 0.49319436],\
+[	-6.27290606, -0.00052741, 0.00032315, 7.27237865, 0.99838876, 0.99914944, 0.49319441],\
+[	-6.27290627, -0.00052732, 0.00032310, 7.27237896, 0.99838904, 0.99914959, 0.49319443],\
+[	-6.27290649, -0.00052723, 0.00032304, 7.27237926, 0.99838931, 0.99914973, 0.49319450],\
+[	-6.27290670, -0.00052714, 0.00032299, 7.27237957, 0.99838959, 0.99914988, 0.49319447],\
+[	-6.27290692, -0.00052705, 0.00032293, 7.27237987, 0.99838986, 0.99915002, 0.49319454],\
+[	-6.27290713, -0.00052696, 0.00032288, 7.27238018, 0.99839013, 0.99915017, 0.49319453],\
+[	-6.27290735, -0.00052687, 0.00032282, 7.27238048, 0.99839041, 0.99915031, 0.49319457],\
+[	-6.27290756, -0.00052678, 0.00032277, 7.27238078, 0.99839068, 0.99915046, 0.49319463],\
+[	-6.27290778, -0.00052669, 0.00032271, 7.27238109, 0.99839096, 0.99915060, 0.49319468],\
+[	-6.27290799, -0.00052660, 0.00032266, 7.27238139, 0.99839123, 0.99915075, 0.49319471],\
+[	-6.27290821, -0.00052651, 0.00032260, 7.27238170, 0.99839150, 0.99915089, 0.49319472],\
+[	-6.27290842, -0.00052642, 0.00032255, 7.27238200, 0.99839178, 0.99915103, 0.49319477],\
+[	-6.27290863, -0.00052633, 0.00032249, 7.27238230, 0.99839205, 0.99915118, 0.49319479],\
+[	-6.27290885, -0.00052624, 0.00032244, 7.27238261, 0.99839232, 0.99915132, 0.49319479],\
+[	-6.27290906, -0.00052615, 0.00032238, 7.27238291, 0.99839260, 0.99915147, 0.49319486],\
+[	-6.27290928, -0.00052606, 0.00032233, 7.27238321, 0.99839287, 0.99915161, 0.49319496],\
+[	-6.27290949, -0.00052597, 0.00032227, 7.27238352, 0.99839314, 0.99915176, 0.49319494],\
+[	-6.27290970, -0.00052588, 0.00032222, 7.27238382, 0.99839342, 0.99915190, 0.49319490],\
+[	-6.27290992, -0.00052579, 0.00032216, 7.27238412, 0.99839369, 0.99915204, 0.49319495],\
+[	-6.27291013, -0.00052570, 0.00032211, 7.27238443, 0.99839396, 0.99915219, 0.49319503],\
+[	-6.27291034, -0.00052561, 0.00032205, 7.27238473, 0.99839424, 0.99915233, 0.49319499],\
+[	-6.27291056, -0.00052553, 0.00032200, 7.27238503, 0.99839451, 0.99915248, 0.49319506],\
+[	-6.27291077, -0.00052544, 0.00032194, 7.27238534, 0.99839478, 0.99915262, 0.49319516],\
+[	-6.27291098, -0.00052535, 0.00032189, 7.27238564, 0.99839505, 0.99915276, 0.49319515],\
+[	-6.27291120, -0.00052526, 0.00032183, 7.27238594, 0.99839533, 0.99915291, 0.49319519],\
+[	-6.27291141, -0.00052517, 0.00032178, 7.27238624, 0.99839560, 0.99915305, 0.49319519],\
+[	-6.27291162, -0.00052508, 0.00032173, 7.27238654, 0.99839587, 0.99915320, 0.49319522],\
+[	-6.27291184, -0.00052499, 0.00032167, 7.27238685, 0.99839614, 0.99915334, 0.49319528],\
+[	-6.27291205, -0.00052490, 0.00032162, 7.27238715, 0.99839642, 0.99915348, 0.49319533],\
+[	-6.27291226, -0.00052481, 0.00032156, 7.27238745, 0.99839669, 0.99915363, 0.49319536],\
+[	-6.27291248, -0.00052472, 0.00032151, 7.27238775, 0.99839696, 0.99915377, 0.49319537],\
+[	-6.27291269, -0.00052463, 0.00032145, 7.27238805, 0.99839723, 0.99915391, 0.49319544],\
+[	-6.27291290, -0.00052455, 0.00032140, 7.27238836, 0.99839750, 0.99915406, 0.49319545],\
+[	-6.27291311, -0.00052446, 0.00032134, 7.27238866, 0.99839777, 0.99915420, 0.49319547],\
+[	-6.27291333, -0.00052437, 0.00032129, 7.27238896, 0.99839805, 0.99915434, 0.49319547],\
+[	-6.27291354, -0.00052428, 0.00032123, 7.27238926, 0.99839832, 0.99915449, 0.49319552],\
+[	-6.27291375, -0.00052419, 0.00032118, 7.27238956, 0.99839859, 0.99915463, 0.49319555],\
+[	-6.27291396, -0.00052410, 0.00032113, 7.27238986, 0.99839886, 0.99915477, 0.49319555],\
+[	-6.27291418, -0.00052401, 0.00032107, 7.27239016, 0.99839913, 0.99915492, 0.49319565],\
+[	-6.27291439, -0.00052392, 0.00032102, 7.27239046, 0.99839940, 0.99915506, 0.49319563],\
+[	-6.27291460, -0.00052384, 0.00032096, 7.27239077, 0.99839967, 0.99915520, 0.49319565],\
+[	-6.27291481, -0.00052375, 0.00032091, 7.27239107, 0.99839994, 0.99915534, 0.49319571],\
+[	-6.27291503, -0.00052366, 0.00032085, 7.27239137, 0.99840021, 0.99915549, 0.49319576],\
+[	-6.27291524, -0.00052357, 0.00032080, 7.27239167, 0.99840049, 0.99915563, 0.49319577],\
+[	-6.27291545, -0.00052348, 0.00032075, 7.27239197, 0.99840076, 0.99915577, 0.49319579],\
+[	-6.27291566, -0.00052339, 0.00032069, 7.27239227, 0.99840103, 0.99915592, 0.49319582],\
+[	-6.27291587, -0.00052330, 0.00032064, 7.27239257, 0.99840130, 0.99915606, 0.49319587],\
+[	-6.27291608, -0.00052322, 0.00032058, 7.27239287, 0.99840157, 0.99915620, 0.49319592],\
+[	-6.27291630, -0.00052313, 0.00032053, 7.27239317, 0.99840184, 0.99915634, 0.49319593],\
+[	-6.27291651, -0.00052304, 0.00032047, 7.27239347, 0.99840211, 0.99915649, 0.49319594],\
+[	-6.27291672, -0.00052295, 0.00032042, 7.27239377, 0.99840238, 0.99915663, 0.49319596],\
+[	-6.27291693, -0.00052286, 0.00032037, 7.27239407, 0.99840265, 0.99915677, 0.49319602],\
+[	-6.27291714, -0.00052277, 0.00032031, 7.27239437, 0.99840292, 0.99915691, 0.49319607],\
+[	-6.27291735, -0.00052269, 0.00032026, 7.27239467, 0.99840319, 0.99915706, 0.49319609],\
+[	-6.27291756, -0.00052260, 0.00032020, 7.27239497, 0.99840346, 0.99915720, 0.49319609],\
+[	-6.27291777, -0.00052251, 0.00032015, 7.27239526, 0.99840373, 0.99915734, 0.49319619],\
+[	-6.27291799, -0.00052242, 0.00032010, 7.27239556, 0.99840400, 0.99915748, 0.49319624],\
+[	-6.27291820, -0.00052233, 0.00032004, 7.27239586, 0.99840427, 0.99915763, 0.49319616],\
+[	-6.27291841, -0.00052225, 0.00031999, 7.27239616, 0.99840453, 0.99915777, 0.49319625],\
+[	-6.27291862, -0.00052216, 0.00031993, 7.27239646, 0.99840480, 0.99915791, 0.49319632],\
+[	-6.27291883, -0.00052207, 0.00031988, 7.27239676, 0.99840507, 0.99915805, 0.49319625],\
+[	-6.27291904, -0.00052198, 0.00031983, 7.27239706, 0.99840534, 0.99915819, 0.49319634],\
+[	-6.27291925, -0.00052189, 0.00031977, 7.27239736, 0.99840561, 0.99915834, 0.49319638],\
+[	-6.27291946, -0.00052180, 0.00031972, 7.27239766, 0.99840588, 0.99915848, 0.49319640],\
+[	-6.27291967, -0.00052172, 0.00031966, 7.27239795, 0.99840615, 0.99915862, 0.49319643],\
+[	-6.27291988, -0.00052163, 0.00031961, 7.27239825, 0.99840642, 0.99915876, 0.49319646],\
+[	-6.27292009, -0.00052154, 0.00031956, 7.27239855, 0.99840669, 0.99915890, 0.49319643],\
+[	-6.27292030, -0.00052145, 0.00031950, 7.27239885, 0.99840695, 0.99915904, 0.49319651],\
+[	-6.27292051, -0.00052137, 0.00031945, 7.27239915, 0.99840722, 0.99915919, 0.49319652],\
+[	-6.27292072, -0.00052128, 0.00031939, 7.27239944, 0.99840749, 0.99915933, 0.49319657],\
+[	-6.27292093, -0.00052119, 0.00031934, 7.27239974, 0.99840776, 0.99915947, 0.49319663],\
+[	-6.27292114, -0.00052110, 0.00031929, 7.27240004, 0.99840803, 0.99915961, 0.49319665],\
+[	-6.27292135, -0.00052101, 0.00031923, 7.27240034, 0.99840830, 0.99915975, 0.49319671],\
+[	-6.27292156, -0.00052093, 0.00031918, 7.27240063, 0.99840856, 0.99915989, 0.49319676],\
+[	-6.27292177, -0.00052084, 0.00031913, 7.27240093, 0.99840883, 0.99916004, 0.49319677],\
+[	-6.27292198, -0.00052075, 0.00031907, 7.27240123, 0.99840910, 0.99916018, 0.49319672],\
+[	-6.27292219, -0.00052066, 0.00031902, 7.27240153, 0.99840937, 0.99916032, 0.49319676],\
+[	-6.27292240, -0.00052058, 0.00031896, 7.27240182, 0.99840964, 0.99916046, 0.49319684],\
+[	-6.27292261, -0.00052049, 0.00031891, 7.27240212, 0.99840990, 0.99916060, 0.49319683],\
+[	-6.27292282, -0.00052040, 0.00031886, 7.27240242, 0.99841017, 0.99916074, 0.49319688],\
+[	-6.27292303, -0.00052031, 0.00031880, 7.27240271, 0.99841044, 0.99916088, 0.49319696],\
+[	-6.27292324, -0.00052023, 0.00031875, 7.27240301, 0.99841070, 0.99916102, 0.49319696],\
+[	-6.27292345, -0.00052014, 0.00031870, 7.27240331, 0.99841097, 0.99916117, 0.49319698],\
+[	-6.27292366, -0.00052005, 0.00031864, 7.27240360, 0.99841124, 0.99916131, 0.49319702],\
+[	-6.27292386, -0.00051996, 0.00031859, 7.27240390, 0.99841151, 0.99916145, 0.49319705],\
+[	-6.27292407, -0.00051988, 0.00031854, 7.27240420, 0.99841177, 0.99916159, 0.49319708],\
+[	-6.27292428, -0.00051979, 0.00031848, 7.27240449, 0.99841204, 0.99916173, 0.49319705],\
+[	-6.27292449, -0.00051970, 0.00031843, 7.27240479, 0.99841231, 0.99916187, 0.49319715],\
+[	-6.27292470, -0.00051962, 0.00031837, 7.27240508, 0.99841257, 0.99916201, 0.49319716],\
+[	-6.27292491, -0.00051953, 0.00031832, 7.27240538, 0.99841284, 0.99916215, 0.49319722],\
+[	-6.27292512, -0.00051944, 0.00031827, 7.27240568, 0.99841311, 0.99916229, 0.49319725],\
+[	-6.27292533, -0.00051935, 0.00031821, 7.27240597, 0.99841337, 0.99916243, 0.49319725],\
+[	-6.27292553, -0.00051927, 0.00031816, 7.27240627, 0.99841364, 0.99916257, 0.49319734],\
+[	-6.27292574, -0.00051918, 0.00031811, 7.27240656, 0.99841390, 0.99916271, 0.49319744],\
+[	-6.27292595, -0.00051909, 0.00031805, 7.27240686, 0.99841417, 0.99916285, 0.49319739],\
+[	-6.27292616, -0.00051901, 0.00031800, 7.27240715, 0.99841444, 0.99916299, 0.49319736],\
+[	-6.27292637, -0.00051892, 0.00031795, 7.27240745, 0.99841470, 0.99916313, 0.49319748],\
+[	-6.27292658, -0.00051883, 0.00031789, 7.27240774, 0.99841497, 0.99916327, 0.49319747],\
+[	-6.27292678, -0.00051874, 0.00031784, 7.27240804, 0.99841523, 0.99916341, 0.49319748],\
+[	-6.27292699, -0.00051866, 0.00031779, 7.27240833, 0.99841550, 0.99916355, 0.49319753],\
+[	-6.27292720, -0.00051857, 0.00031773, 7.27240863, 0.99841577, 0.99916369, 0.49319759],\
+[	-6.27292741, -0.00051848, 0.00031768, 7.27240892, 0.99841603, 0.99916384, 0.49319759],\
+[	-6.27292762, -0.00051840, 0.00031763, 7.27240922, 0.99841630, 0.99916398, 0.49319759],\
+[	-6.27292782, -0.00051831, 0.00031757, 7.27240951, 0.99841656, 0.99916412, 0.49319764],\
+[	-6.27292803, -0.00051822, 0.00031752, 7.27240981, 0.99841683, 0.99916426, 0.49319769],\
+[	-6.27292824, -0.00051814, 0.00031747, 7.27241010, 0.99841709, 0.99916440, 0.49319768],\
+[	-6.27292845, -0.00051805, 0.00031742, 7.27241040, 0.99841736, 0.99916453, 0.49319773],\
+[	-6.27292865, -0.00051796, 0.00031736, 7.27241069, 0.99841762, 0.99916467, 0.49319777],\
+[	-6.27292886, -0.00051788, 0.00031731, 7.27241098, 0.99841789, 0.99916481, 0.49319789],\
+[	-6.27292907, -0.00051779, 0.00031726, 7.27241128, 0.99841815, 0.99916495, 0.49319781],\
+[	-6.27292927, -0.00051770, 0.00031720, 7.27241157, 0.99841842, 0.99916509, 0.49319785],\
+[	-6.27292948, -0.00051762, 0.00031715, 7.27241186, 0.99841868, 0.99916523, 0.49319784],\
+[	-6.27292969, -0.00051753, 0.00031710, 7.27241216, 0.99841895, 0.99916537, 0.49319795],\
+[	-6.27292990, -0.00051744, 0.00031704, 7.27241245, 0.99841921, 0.99916551, 0.49319794],\
+[	-6.27293010, -0.00051736, 0.00031699, 7.27241275, 0.99841947, 0.99916565, 0.49319797],\
+[	-6.27293031, -0.00051727, 0.00031694, 7.27241304, 0.99841974, 0.99916579, 0.49319807],\
+[	-6.27293052, -0.00051718, 0.00031688, 7.27241333, 0.99842000, 0.99916593, 0.49319800],\
+[	-6.27293072, -0.00051710, 0.00031683, 7.27241363, 0.99842027, 0.99916607, 0.49319809],\
+[	-6.27293093, -0.00051701, 0.00031678, 7.27241392, 0.99842053, 0.99916621, 0.49319811],\
+[	-6.27293114, -0.00051693, 0.00031673, 7.27241421, 0.99842079, 0.99916635, 0.49319811],\
+[	-6.27293134, -0.00051684, 0.00031667, 7.27241450, 0.99842106, 0.99916649, 0.49319817],\
+[	-6.27293155, -0.00051675, 0.00031662, 7.27241480, 0.99842132, 0.99916663, 0.49319820],\
+[	-6.27293176, -0.00051667, 0.00031657, 7.27241509, 0.99842159, 0.99916677, 0.49319821],\
+[	-6.27293196, -0.00051658, 0.00031651, 7.27241538, 0.99842185, 0.99916691, 0.49319833],\
+[	-6.27293217, -0.00051649, 0.00031646, 7.27241567, 0.99842211, 0.99916704, 0.49319829],\
+[	-6.27293237, -0.00051641, 0.00031641, 7.27241597, 0.99842238, 0.99916718, 0.49319831],\
+[	-6.27293258, -0.00051632, 0.00031636, 7.27241626, 0.99842264, 0.99916732, 0.49319838],\
+[	-6.27293279, -0.00051624, 0.00031630, 7.27241655, 0.99842290, 0.99916746, 0.49319843],\
+[	-6.27293299, -0.00051615, 0.00031625, 7.27241684, 0.99842316, 0.99916760, 0.49319840],\
+[	-6.27293320, -0.00051606, 0.00031620, 7.27241713, 0.99842343, 0.99916774, 0.49319841],\
+[	-6.27293340, -0.00051598, 0.00031614, 7.27241743, 0.99842369, 0.99916788, 0.49319849],\
+[	-6.27293361, -0.00051589, 0.00031609, 7.27241772, 0.99842395, 0.99916802, 0.49319850],\
+[	-6.27293382, -0.00051581, 0.00031604, 7.27241801, 0.99842422, 0.99916816, 0.49319856],\
+[	-6.27293402, -0.00051572, 0.00031599, 7.27241830, 0.99842448, 0.99916829, 0.49319860],\
+[	-6.27293423, -0.00051563, 0.00031593, 7.27241859, 0.99842474, 0.99916843, 0.49319855],\
+[	-6.27293443, -0.00051555, 0.00031588, 7.27241888, 0.99842500, 0.99916857, 0.49319861],\
+[	-6.27293464, -0.00051546, 0.00031583, 7.27241918, 0.99842527, 0.99916871, 0.49319870],\
+[	-6.27293484, -0.00051538, 0.00031578, 7.27241947, 0.99842553, 0.99916885, 0.49319866],\
+[	-6.27293505, -0.00051529, 0.00031572, 7.27241976, 0.99842579, 0.99916899, 0.49319873],\
+[	-6.27293525, -0.00051520, 0.00031567, 7.27242005, 0.99842605, 0.99916912, 0.49319872],\
+[	-6.27293546, -0.00051512, 0.00031562, 7.27242034, 0.99842632, 0.99916926, 0.49319875],\
+[	-6.27293566, -0.00051503, 0.00031557, 7.27242063, 0.99842658, 0.99916940, 0.49319885],\
+[	-6.27293587, -0.00051495, 0.00031551, 7.27242092, 0.99842684, 0.99916954, 0.49319881],\
+[	-6.27293607, -0.00051486, 0.00031546, 7.27242121, 0.99842710, 0.99916968, 0.49319885],\
+[	-6.27293628, -0.00051478, 0.00031541, 7.27242150, 0.99842736, 0.99916982, 0.49319897],\
+[	-6.27293648, -0.00051469, 0.00031536, 7.27242179, 0.99842762, 0.99916995, 0.49319898],\
+[	-6.27293669, -0.00051461, 0.00031530, 7.27242208, 0.99842789, 0.99917009, 0.49319895],\
+[	-6.27293689, -0.00051452, 0.00031525, 7.27242237, 0.99842815, 0.99917023, 0.49319902],\
+[	-6.27293710, -0.00051443, 0.00031520, 7.27242266, 0.99842841, 0.99917037, 0.49319899],\
+[	-6.27293730, -0.00051435, 0.00031515, 7.27242295, 0.99842867, 0.99917051, 0.49319907],\
+[	-6.27293751, -0.00051426, 0.00031509, 7.27242324, 0.99842893, 0.99917064, 0.49319910],\
+[	-6.27293771, -0.00051418, 0.00031504, 7.27242353, 0.99842919, 0.99917078, 0.49319911],\
+[	-6.27293792, -0.00051409, 0.00031499, 7.27242382, 0.99842945, 0.99917092, 0.49319911],\
+[	-6.27293812, -0.00051401, 0.00031494, 7.27242411, 0.99842971, 0.99917106, 0.49319918],\
+[	-6.27293832, -0.00051392, 0.00031488, 7.27242440, 0.99842997, 0.99917119, 0.49319923],\
+[	-6.27293853, -0.00051384, 0.00031483, 7.27242469, 0.99843024, 0.99917133, 0.49319919],\
+[	-6.27293873, -0.00051375, 0.00031478, 7.27242498, 0.99843050, 0.99917147, 0.49319924],\
+[	-6.27293894, -0.00051367, 0.00031473, 7.27242527, 0.99843076, 0.99917161, 0.49319925],\
+[	-6.27293914, -0.00051358, 0.00031467, 7.27242556, 0.99843102, 0.99917174, 0.49319934],\
+[	-6.27293934, -0.00051350, 0.00031462, 7.27242585, 0.99843128, 0.99917188, 0.49319932],\
+[	-6.27293955, -0.00051341, 0.00031457, 7.27242614, 0.99843154, 0.99917202, 0.49319938],\
+[	-6.27293975, -0.00051333, 0.00031452, 7.27242643, 0.99843180, 0.99917216, 0.49319942],\
+[	-6.27293995, -0.00051324, 0.00031447, 7.27242671, 0.99843206, 0.99917229, 0.49319947],\
+[	-6.27294016, -0.00051315, 0.00031441, 7.27242700, 0.99843232, 0.99917243, 0.49319948],\
+[	-6.27294036, -0.00051307, 0.00031436, 7.27242729, 0.99843258, 0.99917257, 0.49319954],\
+[	-6.27294057, -0.00051298, 0.00031431, 7.27242758, 0.99843284, 0.99917271, 0.49319956],\
+[	-6.27294077, -0.00051290, 0.00031426, 7.27242787, 0.99843310, 0.99917284, 0.49319957],\
+[	-6.27294097, -0.00051281, 0.00031421, 7.27242816, 0.99843336, 0.99917298, 0.49319962],\
+[	-6.27294118, -0.00051273, 0.00031415, 7.27242845, 0.99843362, 0.99917312, 0.49319969],\
+[	-6.27294138, -0.00051265, 0.00031410, 7.27242873, 0.99843388, 0.99917325, 0.49319972],\
+[	-6.27294158, -0.00051256, 0.00031405, 7.27242902, 0.99843414, 0.99917339, 0.49319967],\
+[	-6.27294178, -0.00051248, 0.00031400, 7.27242931, 0.99843439, 0.99917353, 0.49319971],\
+[	-6.27294199, -0.00051239, 0.00031395, 7.27242960, 0.99843465, 0.99917366, 0.49319975],\
+[	-6.27294219, -0.00051231, 0.00031389, 7.27242988, 0.99843491, 0.99917380, 0.49319976],\
+[	-6.27294239, -0.00051222, 0.00031384, 7.27243017, 0.99843517, 0.99917394, 0.49319985],\
+[	-6.27294260, -0.00051214, 0.00031379, 7.27243046, 0.99843543, 0.99917407, 0.49319980],\
+[	-6.27294280, -0.00051205, 0.00031374, 7.27243075, 0.99843569, 0.99917421, 0.49319987],\
+[	-6.27294300, -0.00051197, 0.00031369, 7.27243103, 0.99843595, 0.99917435, 0.49319991],\
+[	-6.27294320, -0.00051188, 0.00031363, 7.27243132, 0.99843621, 0.99917448, 0.49319996],\
+[	-6.27294341, -0.00051180, 0.00031358, 7.27243161, 0.99843647, 0.99917462, 0.49320001],\
+[	-6.27294361, -0.00051171, 0.00031353, 7.27243190, 0.99843673, 0.99917476, 0.49319998],\
+[	-6.27294381, -0.00051163, 0.00031348, 7.27243218, 0.99843698, 0.99917489, 0.49320000],\
+[	-6.27294401, -0.00051154, 0.00031343, 7.27243247, 0.99843724, 0.99917503, 0.49320003],\
+[	-6.27294422, -0.00051146, 0.00031337, 7.27243276, 0.99843750, 0.99917517, 0.49320007],\
+[	-6.27294442, -0.00051137, 0.00031332, 7.27243304, 0.99843776, 0.99917530, 0.49320006],\
+[	-6.27294462, -0.00051129, 0.00031327, 7.27243333, 0.99843802, 0.99917544, 0.49320012],\
+[	-6.27294482, -0.00051121, 0.00031322, 7.27243362, 0.99843827, 0.99917558, 0.49320018],\
+[	-6.27294502, -0.00051112, 0.00031317, 7.27243390, 0.99843853, 0.99917571, 0.49320018],\
+[	-6.27294523, -0.00051104, 0.00031312, 7.27243419, 0.99843879, 0.99917585, 0.49320017],\
+[	-6.27294543, -0.00051095, 0.00031306, 7.27243448, 0.99843905, 0.99917598, 0.49320022],\
+[	-6.27294563, -0.00051087, 0.00031301, 7.27243476, 0.99843931, 0.99917612, 0.49320033],\
+[	-6.27294583, -0.00051078, 0.00031296, 7.27243505, 0.99843956, 0.99917626, 0.49320035],\
+[	-6.27294603, -0.00051070, 0.00031291, 7.27243533, 0.99843982, 0.99917639, 0.49320035],\
+[	-6.27294623, -0.00051062, 0.00031286, 7.27243562, 0.99844008, 0.99917653, 0.49320037],\
+[	-6.27294644, -0.00051053, 0.00031281, 7.27243590, 0.99844034, 0.99917666, 0.49320040],\
+[	-6.27294664, -0.00051045, 0.00031275, 7.27243619, 0.99844059, 0.99917680, 0.49320046],\
+[	-6.27294684, -0.00051036, 0.00031270, 7.27243648, 0.99844085, 0.99917693, 0.49320050],\
+[	-6.27294704, -0.00051028, 0.00031265, 7.27243676, 0.99844111, 0.99917707, 0.49320049],\
+[	-6.27294724, -0.00051019, 0.00031260, 7.27243705, 0.99844136, 0.99917721, 0.49320054],\
+[	-6.27294744, -0.00051011, 0.00031255, 7.27243733, 0.99844162, 0.99917734, 0.49320055],\
+[	-6.27294764, -0.00051003, 0.00031250, 7.27243762, 0.99844188, 0.99917748, 0.49320064],\
+[	-6.27294784, -0.00050994, 0.00031244, 7.27243790, 0.99844214, 0.99917761, 0.49320065],\
+[	-6.27294805, -0.00050986, 0.00031239, 7.27243819, 0.99844239, 0.99917775, 0.49320067],\
+[	-6.27294825, -0.00050977, 0.00031234, 7.27243847, 0.99844265, 0.99917788, 0.49320073],\
+[	-6.27294845, -0.00050969, 0.00031229, 7.27243876, 0.99844291, 0.99917802, 0.49320072],\
+[	-6.27294865, -0.00050961, 0.00031224, 7.27243904, 0.99844316, 0.99917815, 0.49320076],\
+[	-6.27294885, -0.00050952, 0.00031219, 7.27243933, 0.99844342, 0.99917829, 0.49320077],\
+[	-6.27294905, -0.00050944, 0.00031214, 7.27243961, 0.99844367, 0.99917843, 0.49320076],\
+[	-6.27294925, -0.00050936, 0.00031208, 7.27243989, 0.99844393, 0.99917856, 0.49320084],\
+[	-6.27294945, -0.00050927, 0.00031203, 7.27244018, 0.99844419, 0.99917870, 0.49320087],\
+[	-6.27294965, -0.00050919, 0.00031198, 7.27244046, 0.99844444, 0.99917883, 0.49320088],\
+[	-6.27294985, -0.00050910, 0.00031193, 7.27244075, 0.99844470, 0.99917897, 0.49320097],\
+[	-6.27295005, -0.00050902, 0.00031188, 7.27244103, 0.99844495, 0.99917910, 0.49320091],\
+[	-6.27295025, -0.00050894, 0.00031183, 7.27244132, 0.99844521, 0.99917924, 0.49320097],\
+[	-6.27295045, -0.00050885, 0.00031178, 7.27244160, 0.99844547, 0.99917937, 0.49320101],\
+[	-6.27295065, -0.00050877, 0.00031173, 7.27244188, 0.99844572, 0.99917951, 0.49320102],\
+[	-6.27295085, -0.00050869, 0.00031167, 7.27244217, 0.99844598, 0.99917964, 0.49320101],\
+[	-6.27295105, -0.00050860, 0.00031162, 7.27244245, 0.99844623, 0.99917978, 0.49320112],\
+[	-6.27295125, -0.00050852, 0.00031157, 7.27244273, 0.99844649, 0.99917991, 0.49320117],\
+[	-6.27295145, -0.00050844, 0.00031152, 7.27244302, 0.99844674, 0.99918004, 0.49320117],\
+[	-6.27295165, -0.00050835, 0.00031147, 7.27244330, 0.99844700, 0.99918018, 0.49320119],\
+[	-6.27295185, -0.00050827, 0.00031142, 7.27244358, 0.99844725, 0.99918031, 0.49320122],\
+[	-6.27295205, -0.00050818, 0.00031137, 7.27244387, 0.99844751, 0.99918045, 0.49320128],\
+[	-6.27295225, -0.00050810, 0.00031132, 7.27244415, 0.99844776, 0.99918058, 0.49320130],\
+[	-6.27295245, -0.00050802, 0.00031126, 7.27244443, 0.99844802, 0.99918072, 0.49320132],\
+[	-6.27295265, -0.00050793, 0.00031121, 7.27244472, 0.99844827, 0.99918085, 0.49320130],\
+[	-6.27295285, -0.00050785, 0.00031116, 7.27244500, 0.99844853, 0.99918099, 0.49320137],\
+[	-6.27295305, -0.00050777, 0.00031111, 7.27244528, 0.99844878, 0.99918112, 0.49320141],\
+[	-6.27295325, -0.00050768, 0.00031106, 7.27244556, 0.99844904, 0.99918126, 0.49320145],\
+[	-6.27295345, -0.00050760, 0.00031101, 7.27244585, 0.99844929, 0.99918139, 0.49320144],\
+[	-6.27295365, -0.00050752, 0.00031096, 7.27244613, 0.99844955, 0.99918152, 0.49320149],\
+[	-6.27295385, -0.00050743, 0.00031091, 7.27244641, 0.99844980, 0.99918166, 0.49320154],\
+[	-6.27295404, -0.00050735, 0.00031086, 7.27244669, 0.99845005, 0.99918179, 0.49320156],\
+[	-6.27295424, -0.00050727, 0.00031081, 7.27244697, 0.99845031, 0.99918193, 0.49320161],\
+[	-6.27295444, -0.00050719, 0.00031075, 7.27244726, 0.99845056, 0.99918206, 0.49320163],\
+[	-6.27295464, -0.00050710, 0.00031070, 7.27244754, 0.99845082, 0.99918219, 0.49320168],\
+[	-6.27295484, -0.00050702, 0.00031065, 7.27244782, 0.99845107, 0.99918233, 0.49320163],\
+[	-6.27295504, -0.00050694, 0.00031060, 7.27244810, 0.99845132, 0.99918246, 0.49320171],\
+[	-6.27295524, -0.00050685, 0.00031055, 7.27244838, 0.99845158, 0.99918260, 0.49320174],\
+[	-6.27295544, -0.00050677, 0.00031050, 7.27244867, 0.99845183, 0.99918273, 0.49320177],\
+[	-6.27295563, -0.00050669, 0.00031045, 7.27244895, 0.99845208, 0.99918286, 0.49320176],\
+[	-6.27295583, -0.00050660, 0.00031040, 7.27244923, 0.99845234, 0.99918300, 0.49320182],\
+[	-6.27295603, -0.00050652, 0.00031035, 7.27244951, 0.99845259, 0.99918313, 0.49320186],\
+[	-6.27295623, -0.00050644, 0.00031030, 7.27244979, 0.99845284, 0.99918327, 0.49320185],\
+[	-6.27295643, -0.00050636, 0.00031025, 7.27245007, 0.99845310, 0.99918340, 0.49320186],\
+[	-6.27295663, -0.00050627, 0.00031019, 7.27245035, 0.99845335, 0.99918353, 0.49320197],\
+[	-6.27295682, -0.00050619, 0.00031014, 7.27245063, 0.99845360, 0.99918367, 0.49320197],\
+[	-6.27295702, -0.00050611, 0.00031009, 7.27245091, 0.99845386, 0.99918380, 0.49320194],\
+[	-6.27295722, -0.00050602, 0.00031004, 7.27245120, 0.99845411, 0.99918393, 0.49320202],\
+[	-6.27295742, -0.00050594, 0.00030999, 7.27245148, 0.99845436, 0.99918407, 0.49320205],\
+[	-6.27295762, -0.00050586, 0.00030994, 7.27245176, 0.99845462, 0.99918420, 0.49320207],\
+[	-6.27295781, -0.00050578, 0.00030989, 7.27245204, 0.99845487, 0.99918433, 0.49320207],\
+[	-6.27295801, -0.00050569, 0.00030984, 7.27245232, 0.99845512, 0.99918447, 0.49320217],\
+[	-6.27295821, -0.00050561, 0.00030979, 7.27245260, 0.99845537, 0.99918460, 0.49320221],\
+[	-6.27295841, -0.00050553, 0.00030974, 7.27245288, 0.99845563, 0.99918473, 0.49320219],\
+[	-6.27295860, -0.00050545, 0.00030969, 7.27245316, 0.99845588, 0.99918487, 0.49320222],\
+[	-6.27295880, -0.00050536, 0.00030964, 7.27245344, 0.99845613, 0.99918500, 0.49320228],\
+[	-6.27295900, -0.00050528, 0.00030959, 7.27245372, 0.99845638, 0.99918513, 0.49320230],\
+[	-6.27295920, -0.00050520, 0.00030954, 7.27245400, 0.99845663, 0.99918526, 0.49320235],\
+[	-6.27295939, -0.00050512, 0.00030949, 7.27245428, 0.99845689, 0.99918540, 0.49320231],\
+[	-6.27295959, -0.00050503, 0.00030944, 7.27245456, 0.99845714, 0.99918553, 0.49320239],\
+[	-6.27295979, -0.00050495, 0.00030938, 7.27245484, 0.99845739, 0.99918566, 0.49320239],\
+[	-6.27295998, -0.00050487, 0.00030933, 7.27245512, 0.99845764, 0.99918580, 0.49320243],\
+[	-6.27296018, -0.00050479, 0.00030928, 7.27245539, 0.99845789, 0.99918593, 0.49320240],\
+[	-6.27296038, -0.00050470, 0.00030923, 7.27245567, 0.99845814, 0.99918606, 0.49320248],\
+[	-6.27296058, -0.00050462, 0.00030918, 7.27245595, 0.99845840, 0.99918619, 0.49320254],\
+[	-6.27296077, -0.00050454, 0.00030913, 7.27245623, 0.99845865, 0.99918633, 0.49320254],\
+[	-6.27296097, -0.00050446, 0.00030908, 7.27245651, 0.99845890, 0.99918646, 0.49320257],\
+[	-6.27296117, -0.00050438, 0.00030903, 7.27245679, 0.99845915, 0.99918659, 0.49320260],\
+[	-6.27296136, -0.00050429, 0.00030898, 7.27245707, 0.99845940, 0.99918673, 0.49320260],\
+[	-6.27296156, -0.00050421, 0.00030893, 7.27245735, 0.99845965, 0.99918686, 0.49320264],\
+[	-6.27296176, -0.00050413, 0.00030888, 7.27245763, 0.99845990, 0.99918699, 0.49320270],\
+[	-6.27296195, -0.00050405, 0.00030883, 7.27245790, 0.99846015, 0.99918712, 0.49320271],\
+[	-6.27296215, -0.00050397, 0.00030878, 7.27245818, 0.99846040, 0.99918726, 0.49320271],\
+[	-6.27296234, -0.00050388, 0.00030873, 7.27245846, 0.99846066, 0.99918739, 0.49320279],\
+[	-6.27296254, -0.00050380, 0.00030868, 7.27245874, 0.99846091, 0.99918752, 0.49320285],\
+[	-6.27296274, -0.00050372, 0.00030863, 7.27245902, 0.99846116, 0.99918765, 0.49320278],\
+[	-6.27296293, -0.00050364, 0.00030858, 7.27245930, 0.99846141, 0.99918778, 0.49320286],\
+[	-6.27296313, -0.00050356, 0.00030853, 7.27245957, 0.99846166, 0.99918792, 0.49320284],\
+[	-6.27296332, -0.00050347, 0.00030848, 7.27245985, 0.99846191, 0.99918805, 0.49320294],\
+[	-6.27296352, -0.00050339, 0.00030843, 7.27246013, 0.99846216, 0.99918818, 0.49320297],\
+[	-6.27296372, -0.00050331, 0.00030838, 7.27246041, 0.99846241, 0.99918831, 0.49320295],\
+[	-6.27296391, -0.00050323, 0.00030833, 7.27246068, 0.99846266, 0.99918844, 0.49320301],\
+[	-6.27296411, -0.00050315, 0.00030828, 7.27246096, 0.99846291, 0.99918858, 0.49320303],\
+[	-6.27296430, -0.00050306, 0.00030823, 7.27246124, 0.99846316, 0.99918871, 0.49320305],\
+[	-6.27296450, -0.00050298, 0.00030818, 7.27246152, 0.99846341, 0.99918884, 0.49320310],\
+[	-6.27296469, -0.00050290, 0.00030813, 7.27246179, 0.99846366, 0.99918897, 0.49320314],\
+[	-6.27296489, -0.00050282, 0.00030808, 7.27246207, 0.99846391, 0.99918910, 0.49320318],\
+[	-6.27296509, -0.00050274, 0.00030803, 7.27246235, 0.99846416, 0.99918924, 0.49320319],\
+[	-6.27296528, -0.00050266, 0.00030798, 7.27246263, 0.99846441, 0.99918937, 0.49320326],\
+[	-6.27296548, -0.00050257, 0.00030793, 7.27246290, 0.99846466, 0.99918950, 0.49320325],\
+[	-6.27296567, -0.00050249, 0.00030788, 7.27246318, 0.99846490, 0.99918963, 0.49320329],\
+[	-6.27296587, -0.00050241, 0.00030783, 7.27246346, 0.99846515, 0.99918976, 0.49320330],\
+[	-6.27296606, -0.00050233, 0.00030778, 7.27246373, 0.99846540, 0.99918989, 0.49320333],\
+[	-6.27296626, -0.00050225, 0.00030773, 7.27246401, 0.99846565, 0.99919002, 0.49320339],\
+[	-6.27296645, -0.00050217, 0.00030768, 7.27246429, 0.99846590, 0.99919016, 0.49320339],\
+[	-6.27296665, -0.00050209, 0.00030763, 7.27246456, 0.99846615, 0.99919029, 0.49320338],\
+[	-6.27296684, -0.00050200, 0.00030758, 7.27246484, 0.99846640, 0.99919042, 0.49320344],\
+[	-6.27296704, -0.00050192, 0.00030753, 7.27246511, 0.99846665, 0.99919055, 0.49320353],\
+[	-6.27296723, -0.00050184, 0.00030748, 7.27246539, 0.99846690, 0.99919068, 0.49320349],\
+[	-6.27296743, -0.00050176, 0.00030743, 7.27246567, 0.99846715, 0.99919081, 0.49320357],\
+[	-6.27296762, -0.00050168, 0.00030738, 7.27246594, 0.99846739, 0.99919094, 0.49320354],\
+[	-6.27296781, -0.00050160, 0.00030733, 7.27246622, 0.99846764, 0.99919108, 0.49320360],\
+[	-6.27296801, -0.00050152, 0.00030728, 7.27246649, 0.99846789, 0.99919121, 0.49320366],\
+[	-6.27296820, -0.00050143, 0.00030723, 7.27246677, 0.99846814, 0.99919134, 0.49320363],\
+[	-6.27296840, -0.00050135, 0.00030718, 7.27246704, 0.99846839, 0.99919147, 0.49320369],\
+[	-6.27296859, -0.00050127, 0.00030713, 7.27246732, 0.99846864, 0.99919160, 0.49320376],\
+[	-6.27296879, -0.00050119, 0.00030708, 7.27246760, 0.99846888, 0.99919173, 0.49320377],\
+[	-6.27296898, -0.00050111, 0.00030703, 7.27246787, 0.99846913, 0.99919186, 0.49320381],\
+[	-6.27296917, -0.00050103, 0.00030698, 7.27246815, 0.99846938, 0.99919199, 0.49320377],\
+[	-6.27296937, -0.00050095, 0.00030693, 7.27246842, 0.99846963, 0.99919212, 0.49320384],\
+[	-6.27296956, -0.00050087, 0.00030688, 7.27246870, 0.99846987, 0.99919225, 0.49320380],\
+[	-6.27296976, -0.00050079, 0.00030683, 7.27246897, 0.99847012, 0.99919238, 0.49320387],\
+[	-6.27296995, -0.00050070, 0.00030678, 7.27246925, 0.99847037, 0.99919251, 0.49320387],\
+[	-6.27297014, -0.00050062, 0.00030673, 7.27246952, 0.99847062, 0.99919265, 0.49320397],\
+[	-6.27297034, -0.00050054, 0.00030668, 7.27246980, 0.99847086, 0.99919278, 0.49320397],\
+[	-6.27297053, -0.00050046, 0.00030663, 7.27247007, 0.99847111, 0.99919291, 0.49320399],\
+[	-6.27297073, -0.00050038, 0.00030658, 7.27247034, 0.99847136, 0.99919304, 0.49320405],\
+[	-6.27297092, -0.00050030, 0.00030653, 7.27247062, 0.99847161, 0.99919317, 0.49320409],\
+[	-6.27297111, -0.00050022, 0.00030648, 7.27247089, 0.99847185, 0.99919330, 0.49320412],\
+[	-6.27297131, -0.00050014, 0.00030643, 7.27247117, 0.99847210, 0.99919343, 0.49320414],\
+[	-6.27297150, -0.00050006, 0.00030638, 7.27247144, 0.99847235, 0.99919356, 0.49320414],\
+[	-6.27297169, -0.00049998, 0.00030633, 7.27247172, 0.99847259, 0.99919369, 0.49320417],\
+[	-6.27297189, -0.00049990, 0.00030629, 7.27247199, 0.99847284, 0.99919382, 0.49320418],\
+[	-6.27297208, -0.00049982, 0.00030624, 7.27247226, 0.99847309, 0.99919395, 0.49320420],\
+[	-6.27297227, -0.00049973, 0.00030619, 7.27247254, 0.99847333, 0.99919408, 0.49320426],\
+[	-6.27297246, -0.00049965, 0.00030614, 7.27247281, 0.99847358, 0.99919421, 0.49320420],\
+[	-6.27297266, -0.00049957, 0.00030609, 7.27247308, 0.99847383, 0.99919434, 0.49320435],\
+[	-6.27297285, -0.00049949, 0.00030604, 7.27247336, 0.99847407, 0.99919447, 0.49320431],\
+[	-6.27297304, -0.00049941, 0.00030599, 7.27247363, 0.99847432, 0.99919460, 0.49320437],\
+[	-6.27297324, -0.00049933, 0.00030594, 7.27247390, 0.99847457, 0.99919473, 0.49320437],\
+[	-6.27297343, -0.00049925, 0.00030589, 7.27247418, 0.99847481, 0.99919486, 0.49320443],\
+[	-6.27297362, -0.00049917, 0.00030584, 7.27247445, 0.99847506, 0.99919499, 0.49320448],\
+[	-6.27297381, -0.00049909, 0.00030579, 7.27247472, 0.99847530, 0.99919512, 0.49320448],\
+[	-6.27297401, -0.00049901, 0.00030574, 7.27247500, 0.99847555, 0.99919525, 0.49320449],\
+[	-6.27297420, -0.00049893, 0.00030569, 7.27247527, 0.99847580, 0.99919538, 0.49320451],\
+[	-6.27297439, -0.00049885, 0.00030564, 7.27247554, 0.99847604, 0.99919551, 0.49320453],\
+[	-6.27297458, -0.00049877, 0.00030559, 7.27247582, 0.99847629, 0.99919564, 0.49320461],\
+[	-6.27297478, -0.00049869, 0.00030554, 7.27247609, 0.99847653, 0.99919577, 0.49320461],\
+[	-6.27297497, -0.00049861, 0.00030550, 7.27247636, 0.99847678, 0.99919590, 0.49320465],\
+[	-6.27297516, -0.00049853, 0.00030545, 7.27247663, 0.99847702, 0.99919603, 0.49320475],\
+[	-6.27297535, -0.00049845, 0.00030540, 7.27247691, 0.99847727, 0.99919616, 0.49320473],\
+[	-6.27297554, -0.00049837, 0.00030535, 7.27247718, 0.99847751, 0.99919629, 0.49320474],\
+[	-6.27297574, -0.00049829, 0.00030530, 7.27247745, 0.99847776, 0.99919641, 0.49320475],\
+[	-6.27297593, -0.00049821, 0.00030525, 7.27247772, 0.99847800, 0.99919654, 0.49320486],\
+[	-6.27297612, -0.00049813, 0.00030520, 7.27247799, 0.99847825, 0.99919667, 0.49320483],\
+[	-6.27297631, -0.00049805, 0.00030515, 7.27247827, 0.99847849, 0.99919680, 0.49320494],\
+[	-6.27297650, -0.00049797, 0.00030510, 7.27247854, 0.99847874, 0.99919693, 0.49320494],\
+[	-6.27297670, -0.00049789, 0.00030505, 7.27247881, 0.99847898, 0.99919706, 0.49320488],\
+[	-6.27297689, -0.00049781, 0.00030500, 7.27247908, 0.99847923, 0.99919719, 0.49320497],\
+[	-6.27297708, -0.00049773, 0.00030495, 7.27247935, 0.99847947, 0.99919732, 0.49320498],\
+[	-6.27297727, -0.00049765, 0.00030491, 7.27247962, 0.99847972, 0.99919745, 0.49320504],\
+[	-6.27297746, -0.00049757, 0.00030486, 7.27247990, 0.99847996, 0.99919758, 0.49320498],\
+[	-6.27297765, -0.00049749, 0.00030481, 7.27248017, 0.99848021, 0.99919771, 0.49320508],\
+[	-6.27297784, -0.00049741, 0.00030476, 7.27248044, 0.99848045, 0.99919784, 0.49320506],\
+[	-6.27297804, -0.00049733, 0.00030471, 7.27248071, 0.99848070, 0.99919796, 0.49320512],\
+[	-6.27297823, -0.00049725, 0.00030466, 7.27248098, 0.99848094, 0.99919809, 0.49320520],\
+[	-6.27297842, -0.00049717, 0.00030461, 7.27248125, 0.99848118, 0.99919822, 0.49320518],\
+[	-6.27297861, -0.00049709, 0.00030456, 7.27248152, 0.99848143, 0.99919835, 0.49320519],\
+[	-6.27297880, -0.00049701, 0.00030451, 7.27248179, 0.99848167, 0.99919848, 0.49320524],\
+[	-6.27297899, -0.00049693, 0.00030446, 7.27248206, 0.99848192, 0.99919861, 0.49320527],\
+[	-6.27297918, -0.00049685, 0.00030442, 7.27248233, 0.99848216, 0.99919874, 0.49320529],\
+[	-6.27297937, -0.00049677, 0.00030437, 7.27248260, 0.99848240, 0.99919887, 0.49320530],\
+[	-6.27297956, -0.00049669, 0.00030432, 7.27248288, 0.99848265, 0.99919899, 0.49320533],\
+[	-6.27297975, -0.00049661, 0.00030427, 7.27248315, 0.99848289, 0.99919912, 0.49320533],\
+[	-6.27297994, -0.00049653, 0.00030422, 7.27248342, 0.99848313, 0.99919925, 0.49320545],\
+[	-6.27298013, -0.00049645, 0.00030417, 7.27248369, 0.99848338, 0.99919938, 0.49320550],\
+[	-6.27298033, -0.00049637, 0.00030412, 7.27248396, 0.99848362, 0.99919951, 0.49320544],\
+[	-6.27298052, -0.00049629, 0.00030407, 7.27248423, 0.99848386, 0.99919964, 0.49320542],\
+[	-6.27298071, -0.00049621, 0.00030403, 7.27248450, 0.99848411, 0.99919976, 0.49320549],\
+[	-6.27298090, -0.00049613, 0.00030398, 7.27248477, 0.99848435, 0.99919989, 0.49320553],\
+[	-6.27298109, -0.00049605, 0.00030393, 7.27248504, 0.99848459, 0.99920002, 0.49320549],\
+[	-6.27298128, -0.00049597, 0.00030388, 7.27248531, 0.99848484, 0.99920015, 0.49320559],\
+[	-6.27298147, -0.00049589, 0.00030383, 7.27248557, 0.99848508, 0.99920028, 0.49320560],\
+[	-6.27298166, -0.00049581, 0.00030378, 7.27248584, 0.99848532, 0.99920041, 0.49320562],\
+[	-6.27298185, -0.00049573, 0.00030373, 7.27248611, 0.99848556, 0.99920053, 0.49320572],\
+[	-6.27298204, -0.00049565, 0.00030368, 7.27248638, 0.99848581, 0.99920066, 0.49320570],\
+[	-6.27298223, -0.00049557, 0.00030364, 7.27248665, 0.99848605, 0.99920079, 0.49320571],\
+[	-6.27298242, -0.00049550, 0.00030359, 7.27248692, 0.99848629, 0.99920092, 0.49320573],\
+[	-6.27298261, -0.00049542, 0.00030354, 7.27248719, 0.99848653, 0.99920105, 0.49320576],\
+[	-6.27298280, -0.00049534, 0.00030349, 7.27248746, 0.99848678, 0.99920117, 0.49320585],\
+[	-6.27298299, -0.00049526, 0.00030344, 7.27248773, 0.99848702, 0.99920130, 0.49320584],\
+[	-6.27298318, -0.00049518, 0.00030339, 7.27248800, 0.99848726, 0.99920143, 0.49320590],\
+[	-6.27298336, -0.00049510, 0.00030334, 7.27248827, 0.99848750, 0.99920156, 0.49320592],\
+[	-6.27298355, -0.00049502, 0.00030330, 7.27248853, 0.99848774, 0.99920168, 0.49320594],\
+[	-6.27298374, -0.00049494, 0.00030325, 7.27248880, 0.99848799, 0.99920181, 0.49320595],\
+[	-6.27298393, -0.00049486, 0.00030320, 7.27248907, 0.99848823, 0.99920194, 0.49320597],\
+[	-6.27298412, -0.00049478, 0.00030315, 7.27248934, 0.99848847, 0.99920207, 0.49320596],\
+[	-6.27298431, -0.00049470, 0.00030310, 7.27248961, 0.99848871, 0.99920220, 0.49320603],\
+[	-6.27298450, -0.00049462, 0.00030305, 7.27248988, 0.99848895, 0.99920232, 0.49320613],\
+[	-6.27298469, -0.00049455, 0.00030300, 7.27249014, 0.99848919, 0.99920245, 0.49320607],\
+[	-6.27298488, -0.00049447, 0.00030296, 7.27249041, 0.99848944, 0.99920258, 0.49320616],\
+[	-6.27298507, -0.00049439, 0.00030291, 7.27249068, 0.99848968, 0.99920270, 0.49320618],\
+[	-6.27298526, -0.00049431, 0.00030286, 7.27249095, 0.99848992, 0.99920283, 0.49320613],\
+[	-6.27298545, -0.00049423, 0.00030281, 7.27249122, 0.99849016, 0.99920296, 0.49320620],\
+[	-6.27298563, -0.00049415, 0.00030276, 7.27249148, 0.99849040, 0.99920309, 0.49320622],\
+[	-6.27298582, -0.00049407, 0.00030271, 7.27249175, 0.99849064, 0.99920321, 0.49320626],\
+[	-6.27298601, -0.00049399, 0.00030267, 7.27249202, 0.99849088, 0.99920334, 0.49320625],\
+[	-6.27298620, -0.00049391, 0.00030262, 7.27249229, 0.99849112, 0.99920347, 0.49320640],\
+[	-6.27298639, -0.00049384, 0.00030257, 7.27249255, 0.99849136, 0.99920360, 0.49320640],\
+[	-6.27298658, -0.00049376, 0.00030252, 7.27249282, 0.99849161, 0.99920372, 0.49320636],\
+[	-6.27298677, -0.00049368, 0.00030247, 7.27249309, 0.99849185, 0.99920385, 0.49320641],\
+[	-6.27298695, -0.00049360, 0.00030242, 7.27249336, 0.99849209, 0.99920398, 0.49320644],\
+[	-6.27298714, -0.00049352, 0.00030238, 7.27249362, 0.99849233, 0.99920410, 0.49320643],\
+[	-6.27298733, -0.00049344, 0.00030233, 7.27249389, 0.99849257, 0.99920423, 0.49320647],\
+[	-6.27298752, -0.00049336, 0.00030228, 7.27249416, 0.99849281, 0.99920436, 0.49320649],\
+[	-6.27298771, -0.00049328, 0.00030223, 7.27249442, 0.99849305, 0.99920448, 0.49320659],\
+[	-6.27298790, -0.00049321, 0.00030218, 7.27249469, 0.99849329, 0.99920461, 0.49320657],\
+[	-6.27298808, -0.00049313, 0.00030214, 7.27249496, 0.99849353, 0.99920474, 0.49320661],\
+[	-6.27298827, -0.00049305, 0.00030209, 7.27249522, 0.99849377, 0.99920486, 0.49320660],\
+[	-6.27298846, -0.00049297, 0.00030204, 7.27249549, 0.99849401, 0.99920499, 0.49320663],\
+[	-6.27298865, -0.00049289, 0.00030199, 7.27249576, 0.99849425, 0.99920512, 0.49320673],\
+[	-6.27298883, -0.00049281, 0.00030194, 7.27249602, 0.99849449, 0.99920524, 0.49320673],\
+[	-6.27298902, -0.00049273, 0.00030189, 7.27249629, 0.99849473, 0.99920537, 0.49320669],\
+[	-6.27298921, -0.00049266, 0.00030185, 7.27249655, 0.99849497, 0.99920550, 0.49320677],\
+[	-6.27298940, -0.00049258, 0.00030180, 7.27249682, 0.99849521, 0.99920562, 0.49320680],\
+[	-6.27298959, -0.00049250, 0.00030175, 7.27249709, 0.99849545, 0.99920575, 0.49320687],\
+[	-6.27298977, -0.00049242, 0.00030170, 7.27249735, 0.99849569, 0.99920588, 0.49320693],\
+[	-6.27298996, -0.00049234, 0.00030165, 7.27249762, 0.99849593, 0.99920600, 0.49320681],\
+[	-6.27299015, -0.00049226, 0.00030161, 7.27249788, 0.99849616, 0.99920613, 0.49320699],\
+[	-6.27299033, -0.00049219, 0.00030156, 7.27249815, 0.99849640, 0.99920626, 0.49320687],\
+[	-6.27299052, -0.00049211, 0.00030151, 7.27249841, 0.99849664, 0.99920638, 0.49320699],\
+[	-6.27299071, -0.00049203, 0.00030146, 7.27249868, 0.99849688, 0.99920651, 0.49320705],\
+[	-6.27299090, -0.00049195, 0.00030141, 7.27249894, 0.99849712, 0.99920663, 0.49320709],\
+[	-6.27299108, -0.00049187, 0.00030137, 7.27249921, 0.99849736, 0.99920676, 0.49320704],\
+[	-6.27299127, -0.00049180, 0.00030132, 7.27249948, 0.99849760, 0.99920689, 0.49320700],\
+[	-6.27299146, -0.00049172, 0.00030127, 7.27249974, 0.99849784, 0.99920701, 0.49320709],\
+[	-6.27299164, -0.00049164, 0.00030122, 7.27250001, 0.99849808, 0.99920714, 0.49320722],\
+[	-6.27299183, -0.00049156, 0.00030118, 7.27250027, 0.99849831, 0.99920726, 0.49320713],\
+[	-6.27299202, -0.00049148, 0.00030113, 7.27250053, 0.99849855, 0.99920739, 0.49320717],\
+[	-6.27299220, -0.00049140, 0.00030108, 7.27250080, 0.99849879, 0.99920752, 0.49320720],\
+[	-6.27299239, -0.00049133, 0.00030103, 7.27250106, 0.99849903, 0.99920764, 0.49320724],\
+[	-6.27299258, -0.00049125, 0.00030098, 7.27250133, 0.99849927, 0.99920777, 0.49320731],\
+[	-6.27299276, -0.00049117, 0.00030094, 7.27250159, 0.99849951, 0.99920789, 0.49320733],\
+[	-6.27299295, -0.00049109, 0.00030089, 7.27250186, 0.99849974, 0.99920802, 0.49320736],\
+[	-6.27299314, -0.00049102, 0.00030084, 7.27250212, 0.99849998, 0.99920814, 0.49320742],\
+[	-6.27299332, -0.00049094, 0.00030079, 7.27250239, 0.99850022, 0.99920827, 0.49320737],\
+[	-6.27299351, -0.00049086, 0.00030075, 7.27250265, 0.99850046, 0.99920840, 0.49320741],\
+[	-6.27299370, -0.00049078, 0.00030070, 7.27250291, 0.99850070, 0.99920852, 0.49320747],\
+[	-6.27299388, -0.00049070, 0.00030065, 7.27250318, 0.99850093, 0.99920865, 0.49320746],\
+[	-6.27299407, -0.00049063, 0.00030060, 7.27250344, 0.99850117, 0.99920877, 0.49320747],\
+[	-6.27299425, -0.00049055, 0.00030055, 7.27250371, 0.99850141, 0.99920890, 0.49320753],\
+[	-6.27299444, -0.00049047, 0.00030051, 7.27250397, 0.99850165, 0.99920902, 0.49320754],\
+[	-6.27299463, -0.00049039, 0.00030046, 7.27250423, 0.99850188, 0.99920915, 0.49320761],\
+[	-6.27299481, -0.00049032, 0.00030041, 7.27250450, 0.99850212, 0.99920927, 0.49320761],\
+[	-6.27299500, -0.00049024, 0.00030036, 7.27250476, 0.99850236, 0.99920940, 0.49320763],\
+[	-6.27299518, -0.00049016, 0.00030032, 7.27250502, 0.99850260, 0.99920952, 0.49320763],\
+[	-6.27299537, -0.00049008, 0.00030027, 7.27250529, 0.99850283, 0.99920965, 0.49320764],\
+[	-6.27299556, -0.00049000, 0.00030022, 7.27250555, 0.99850307, 0.99920977, 0.49320768],\
+[	-6.27299574, -0.00048993, 0.00030017, 7.27250581, 0.99850331, 0.99920990, 0.49320774],\
+[	-6.27299593, -0.00048985, 0.00030013, 7.27250608, 0.99850354, 0.99921002, 0.49320770],\
+[	-6.27299611, -0.00048977, 0.00030008, 7.27250634, 0.99850378, 0.99921015, 0.49320782],\
+[	-6.27299630, -0.00048969, 0.00030003, 7.27250660, 0.99850402, 0.99921027, 0.49320781],\
+[	-6.27299648, -0.00048962, 0.00029998, 7.27250687, 0.99850426, 0.99921040, 0.49320784],\
+[	-6.27299667, -0.00048954, 0.00029994, 7.27250713, 0.99850449, 0.99921052, 0.49320787],\
+[	-6.27299685, -0.00048946, 0.00029989, 7.27250739, 0.99850473, 0.99921065, 0.49320791],\
+[	-6.27299704, -0.00048938, 0.00029984, 7.27250765, 0.99850496, 0.99921077, 0.49320794],\
+[	-6.27299722, -0.00048931, 0.00029979, 7.27250792, 0.99850520, 0.99921090, 0.49320795],\
+[	-6.27299741, -0.00048923, 0.00029975, 7.27250818, 0.99850544, 0.99921102, 0.49320801],\
+[	-6.27299759, -0.00048915, 0.00029970, 7.27250844, 0.99850567, 0.99921115, 0.49320802],\
+[	-6.27299778, -0.00048908, 0.00029965, 7.27250870, 0.99850591, 0.99921127, 0.49320805],\
+[	-6.27299796, -0.00048900, 0.00029960, 7.27250896, 0.99850615, 0.99921140, 0.49320810],\
+[	-6.27299815, -0.00048892, 0.00029956, 7.27250923, 0.99850638, 0.99921152, 0.49320806],\
+[	-6.27299833, -0.00048884, 0.00029951, 7.27250949, 0.99850662, 0.99921165, 0.49320815],\
+[	-6.27299852, -0.00048877, 0.00029946, 7.27250975, 0.99850685, 0.99921177, 0.49320816],\
+[	-6.27299870, -0.00048869, 0.00029941, 7.27251001, 0.99850709, 0.99921190, 0.49320817],\
+[	-6.27299889, -0.00048861, 0.00029937, 7.27251027, 0.99850733, 0.99921202, 0.49320820],\
+[	-6.27299907, -0.00048854, 0.00029932, 7.27251054, 0.99850756, 0.99921214, 0.49320826],\
+[	-6.27299926, -0.00048846, 0.00029927, 7.27251080, 0.99850780, 0.99921227, 0.49320827],\
+[	-6.27299944, -0.00048838, 0.00029923, 7.27251106, 0.99850803, 0.99921239, 0.49320823],\
+[	-6.27299962, -0.00048830, 0.00029918, 7.27251132, 0.99850827, 0.99921252, 0.49320833],\
+[	-6.27299981, -0.00048823, 0.00029913, 7.27251158, 0.99850850, 0.99921264, 0.49320833],\
+[	-6.27299999, -0.00048815, 0.00029908, 7.27251184, 0.99850874, 0.99921277, 0.49320839],\
+[	-6.27300018, -0.00048807, 0.00029904, 7.27251210, 0.99850897, 0.99921289, 0.49320841],\
+[	-6.27300036, -0.00048800, 0.00029899, 7.27251236, 0.99850921, 0.99921301, 0.49320850],\
+[	-6.27300055, -0.00048792, 0.00029894, 7.27251263, 0.99850944, 0.99921314, 0.49320846],\
+[	-6.27300073, -0.00048784, 0.00029890, 7.27251289, 0.99850968, 0.99921326, 0.49320848],\
+[	-6.27300091, -0.00048777, 0.00029885, 7.27251315, 0.99850991, 0.99921339, 0.49320847],\
+[	-6.27300110, -0.00048769, 0.00029880, 7.27251341, 0.99851015, 0.99921351, 0.49320858],\
+[	-6.27300128, -0.00048761, 0.00029875, 7.27251367, 0.99851038, 0.99921363, 0.49320864],\
+[	-6.27300146, -0.00048754, 0.00029871, 7.27251393, 0.99851062, 0.99921376, 0.49320855],\
+[	-6.27300165, -0.00048746, 0.00029866, 7.27251419, 0.99851085, 0.99921388, 0.49320856],\
+[	-6.27300183, -0.00048738, 0.00029861, 7.27251445, 0.99851109, 0.99921401, 0.49320863],\
+[	-6.27300202, -0.00048730, 0.00029857, 7.27251471, 0.99851132, 0.99921413, 0.49320867],\
+[	-6.27300220, -0.00048723, 0.00029852, 7.27251497, 0.99851156, 0.99921425, 0.49320861],\
+[	-6.27300238, -0.00048715, 0.00029847, 7.27251523, 0.99851179, 0.99921438, 0.49320874],\
+[	-6.27300257, -0.00048707, 0.00029842, 7.27251549, 0.99851202, 0.99921450, 0.49320874],\
+[	-6.27300275, -0.00048700, 0.00029838, 7.27251575, 0.99851226, 0.99921462, 0.49320881],\
+[	-6.27300293, -0.00048692, 0.00029833, 7.27251601, 0.99851249, 0.99921475, 0.49320880],\
+[	-6.27300312, -0.00048685, 0.00029828, 7.27251627, 0.99851273, 0.99921487, 0.49320887],\
+[	-6.27300330, -0.00048677, 0.00029824, 7.27251653, 0.99851296, 0.99921499, 0.49320886],\
+[	-6.27300348, -0.00048669, 0.00029819, 7.27251679, 0.99851320, 0.99921512, 0.49320893],\
+[	-6.27300367, -0.00048662, 0.00029814, 7.27251705, 0.99851343, 0.99921524, 0.49320893],\
+[	-6.27300385, -0.00048654, 0.00029810, 7.27251731, 0.99851366, 0.99921536, 0.49320895],\
+[	-6.27300403, -0.00048646, 0.00029805, 7.27251757, 0.99851390, 0.99921549, 0.49320892],\
+[	-6.27300421, -0.00048639, 0.00029800, 7.27251783, 0.99851413, 0.99921561, 0.49320898],\
+[	-6.27300440, -0.00048631, 0.00029796, 7.27251809, 0.99851436, 0.99921573, 0.49320901],\
+[	-6.27300458, -0.00048623, 0.00029791, 7.27251835, 0.99851460, 0.99921586, 0.49320901],\
+[	-6.27300476, -0.00048616, 0.00029786, 7.27251861, 0.99851483, 0.99921598, 0.49320912],\
+[	-6.27300495, -0.00048608, 0.00029782, 7.27251886, 0.99851506, 0.99921610, 0.49320910],\
+[	-6.27300513, -0.00048600, 0.00029777, 7.27251912, 0.99851530, 0.99921623, 0.49320913],\
+[	-6.27300531, -0.00048593, 0.00029772, 7.27251938, 0.99851553, 0.99921635, 0.49320917],\
+[	-6.27300549, -0.00048585, 0.00029768, 7.27251964, 0.99851576, 0.99921647, 0.49320916],\
+[	-6.27300568, -0.00048578, 0.00029763, 7.27251990, 0.99851600, 0.99921660, 0.49320920],\
+[	-6.27300586, -0.00048570, 0.00029758, 7.27252016, 0.99851623, 0.99921672, 0.49320924],\
+[	-6.27300604, -0.00048562, 0.00029753, 7.27252042, 0.99851646, 0.99921684, 0.49320926],\
+[	-6.27300622, -0.00048555, 0.00029749, 7.27252068, 0.99851669, 0.99921696, 0.49320930],\
+[	-6.27300640, -0.00048547, 0.00029744, 7.27252093, 0.99851693, 0.99921709, 0.49320931],\
+[	-6.27300659, -0.00048539, 0.00029739, 7.27252119, 0.99851716, 0.99921721, 0.49320938],\
+[	-6.27300677, -0.00048532, 0.00029735, 7.27252145, 0.99851739, 0.99921733, 0.49320939],\
+[	-6.27300695, -0.00048524, 0.00029730, 7.27252171, 0.99851763, 0.99921746, 0.49320948],\
+[	-6.27300713, -0.00048517, 0.00029725, 7.27252197, 0.99851786, 0.99921758, 0.49320954],\
+[	-6.27300732, -0.00048509, 0.00029721, 7.27252222, 0.99851809, 0.99921770, 0.49320950],\
+[	-6.27300750, -0.00048501, 0.00029716, 7.27252248, 0.99851832, 0.99921782, 0.49320952],\
+[	-6.27300768, -0.00048494, 0.00029712, 7.27252274, 0.99851855, 0.99921795, 0.49320954],\
+[	-6.27300786, -0.00048486, 0.00029707, 7.27252300, 0.99851879, 0.99921807, 0.49320960],\
+[	-6.27300804, -0.00048479, 0.00029702, 7.27252326, 0.99851902, 0.99921819, 0.49320959],\
+[	-6.27300822, -0.00048471, 0.00029698, 7.27252351, 0.99851925, 0.99921831, 0.49320958],\
+[	-6.27300841, -0.00048463, 0.00029693, 7.27252377, 0.99851948, 0.99921844, 0.49320965],\
+[	-6.27300859, -0.00048456, 0.00029688, 7.27252403, 0.99851971, 0.99921856, 0.49320967],\
+[	-6.27300877, -0.00048448, 0.00029684, 7.27252429, 0.99851995, 0.99921868, 0.49320972],\
+[	-6.27300895, -0.00048441, 0.00029679, 7.27252454, 0.99852018, 0.99921880, 0.49320973],\
+[	-6.27300913, -0.00048433, 0.00029674, 7.27252480, 0.99852041, 0.99921893, 0.49320972],\
+[	-6.27300931, -0.00048426, 0.00029670, 7.27252506, 0.99852064, 0.99921905, 0.49320980],\
+[	-6.27300949, -0.00048418, 0.00029665, 7.27252531, 0.99852087, 0.99921917, 0.49320981],\
+[	-6.27300968, -0.00048410, 0.00029660, 7.27252557, 0.99852110, 0.99921929, 0.49320974],\
+[	-6.27300986, -0.00048403, 0.00029656, 7.27252583, 0.99852134, 0.99921941, 0.49320985],\
+[	-6.27301004, -0.00048395, 0.00029651, 7.27252608, 0.99852157, 0.99921954, 0.49320992],\
+[	-6.27301022, -0.00048388, 0.00029646, 7.27252634, 0.99852180, 0.99921966, 0.49320992],\
+[	-6.27301040, -0.00048380, 0.00029642, 7.27252660, 0.99852203, 0.99921978, 0.49320993],\
+[	-6.27301058, -0.00048373, 0.00029637, 7.27252685, 0.99852226, 0.99921990, 0.49320993],\
+[	-6.27301076, -0.00048365, 0.00029633, 7.27252711, 0.99852249, 0.99922002, 0.49321001],\
+[	-6.27301094, -0.00048357, 0.00029628, 7.27252737, 0.99852272, 0.99922015, 0.49321003],\
+[	-6.27301112, -0.00048350, 0.00029623, 7.27252762, 0.99852295, 0.99922027, 0.49321005],\
+[	-6.27301130, -0.00048342, 0.00029619, 7.27252788, 0.99852318, 0.99922039, 0.49321008],\
+[	-6.27301148, -0.00048335, 0.00029614, 7.27252814, 0.99852341, 0.99922051, 0.49321008],\
+[	-6.27301166, -0.00048327, 0.00029609, 7.27252839, 0.99852364, 0.99922063, 0.49321010],\
+[	-6.27301185, -0.00048320, 0.00029605, 7.27252865, 0.99852388, 0.99922075, 0.49321017],\
+[	-6.27301203, -0.00048312, 0.00029600, 7.27252890, 0.99852411, 0.99922088, 0.49321023],\
+[	-6.27301221, -0.00048305, 0.00029596, 7.27252916, 0.99852434, 0.99922100, 0.49321020],\
+[	-6.27301239, -0.00048297, 0.00029591, 7.27252942, 0.99852457, 0.99922112, 0.49321023],\
+[	-6.27301257, -0.00048290, 0.00029586, 7.27252967, 0.99852480, 0.99922124, 0.49321024],\
+[	-6.27301275, -0.00048282, 0.00029582, 7.27252993, 0.99852503, 0.99922136, 0.49321030],\
+[	-6.27301293, -0.00048275, 0.00029577, 7.27253018, 0.99852526, 0.99922148, 0.49321031],\
+[	-6.27301311, -0.00048267, 0.00029572, 7.27253044, 0.99852549, 0.99922161, 0.49321030],\
+[	-6.27301329, -0.00048259, 0.00029568, 7.27253069, 0.99852572, 0.99922173, 0.49321030],\
+[	-6.27301347, -0.00048252, 0.00029563, 7.27253095, 0.99852595, 0.99922185, 0.49321039],\
+[	-6.27301365, -0.00048244, 0.00029559, 7.27253120, 0.99852618, 0.99922197, 0.49321037],\
+[	-6.27301383, -0.00048237, 0.00029554, 7.27253146, 0.99852641, 0.99922209, 0.49321046],\
+[	-6.27301401, -0.00048229, 0.00029549, 7.27253171, 0.99852664, 0.99922221, 0.49321048],\
+[	-6.27301419, -0.00048222, 0.00029545, 7.27253197, 0.99852687, 0.99922233, 0.49321049],\
+[	-6.27301437, -0.00048214, 0.00029540, 7.27253222, 0.99852710, 0.99922245, 0.49321046],\
+[	-6.27301455, -0.00048207, 0.00029536, 7.27253248, 0.99852732, 0.99922258, 0.49321053],\
+[	-6.27301473, -0.00048199, 0.00029531, 7.27253273, 0.99852755, 0.99922270, 0.49321060],\
+[	-6.27301491, -0.00048192, 0.00029526, 7.27253299, 0.99852778, 0.99922282, 0.49321066],\
+[	-6.27301509, -0.00048184, 0.00029522, 7.27253324, 0.99852801, 0.99922294, 0.49321062],\
+[	-6.27301526, -0.00048177, 0.00029517, 7.27253350, 0.99852824, 0.99922306, 0.49321065],\
+[	-6.27301544, -0.00048169, 0.00029513, 7.27253375, 0.99852847, 0.99922318, 0.49321069],\
+[	-6.27301562, -0.00048162, 0.00029508, 7.27253400, 0.99852870, 0.99922330, 0.49321066],\
+[	-6.27301580, -0.00048154, 0.00029503, 7.27253426, 0.99852893, 0.99922342, 0.49321075],\
+[	-6.27301598, -0.00048147, 0.00029499, 7.27253451, 0.99852916, 0.99922354, 0.49321074],\
+[	-6.27301616, -0.00048139, 0.00029494, 7.27253477, 0.99852939, 0.99922366, 0.49321082],\
+[	-6.27301634, -0.00048132, 0.00029490, 7.27253502, 0.99852962, 0.99922378, 0.49321081],\
+[	-6.27301652, -0.00048124, 0.00029485, 7.27253528, 0.99852984, 0.99922391, 0.49321083],\
+[	-6.27301670, -0.00048117, 0.00029480, 7.27253553, 0.99853007, 0.99922403, 0.49321094],\
+[	-6.27301688, -0.00048109, 0.00029476, 7.27253578, 0.99853030, 0.99922415, 0.49321096],\
+[	-6.27301706, -0.00048102, 0.00029471, 7.27253604, 0.99853053, 0.99922427, 0.49321093],\
+[	-6.27301724, -0.00048095, 0.00029467, 7.27253629, 0.99853076, 0.99922439, 0.49321094],\
+[	-6.27301741, -0.00048087, 0.00029462, 7.27253654, 0.99853099, 0.99922451, 0.49321098],\
+[	-6.27301759, -0.00048080, 0.00029458, 7.27253680, 0.99853121, 0.99922463, 0.49321102],\
+[	-6.27301777, -0.00048072, 0.00029453, 7.27253705, 0.99853144, 0.99922475, 0.49321101],\
+[	-6.27301795, -0.00048065, 0.00029448, 7.27253730, 0.99853167, 0.99922487, 0.49321109],\
+[	-6.27301813, -0.00048057, 0.00029444, 7.27253756, 0.99853190, 0.99922499, 0.49321107],\
+[	-6.27301831, -0.00048050, 0.00029439, 7.27253781, 0.99853213, 0.99922511, 0.49321107],\
+[	-6.27301849, -0.00048042, 0.00029435, 7.27253806, 0.99853235, 0.99922523, 0.49321110],\
+[	-6.27301866, -0.00048035, 0.00029430, 7.27253832, 0.99853258, 0.99922535, 0.49321118],\
+[	-6.27301884, -0.00048027, 0.00029426, 7.27253857, 0.99853281, 0.99922547, 0.49321119],\
+[	-6.27301902, -0.00048020, 0.00029421, 7.27253882, 0.99853304, 0.99922559, 0.49321116],\
+[	-6.27301920, -0.00048012, 0.00029416, 7.27253907, 0.99853327, 0.99922571, 0.49321127],\
+[	-6.27301938, -0.00048005, 0.00029412, 7.27253933, 0.99853349, 0.99922583, 0.49321123],\
+[	-6.27301956, -0.00047998, 0.00029407, 7.27253958, 0.99853372, 0.99922595, 0.49321129],\
+[	-6.27301973, -0.00047990, 0.00029403, 7.27253983, 0.99853395, 0.99922607, 0.49321135],\
+[	-6.27301991, -0.00047983, 0.00029398, 7.27254008, 0.99853418, 0.99922619, 0.49321135],\
+[	-6.27302009, -0.00047975, 0.00029394, 7.27254034, 0.99853440, 0.99922631, 0.49321139],\
+[	-6.27302027, -0.00047968, 0.00029389, 7.27254059, 0.99853463, 0.99922643, 0.49321146],\
+[	-6.27302044, -0.00047960, 0.00029384, 7.27254084, 0.99853486, 0.99922655, 0.49321142],\
+[	-6.27302062, -0.00047953, 0.00029380, 7.27254109, 0.99853508, 0.99922667, 0.49321144],\
+[	-6.27302080, -0.00047946, 0.00029375, 7.27254135, 0.99853531, 0.99922679, 0.49321144],\
+[	-6.27302098, -0.00047938, 0.00029371, 7.27254160, 0.99853554, 0.99922691, 0.49321157],\
+[	-6.27302116, -0.00047931, 0.00029366, 7.27254185, 0.99853577, 0.99922703, 0.49321152],\
+[	-6.27302133, -0.00047923, 0.00029362, 7.27254210, 0.99853599, 0.99922715, 0.49321153],\
+[	-6.27302151, -0.00047916, 0.00029357, 7.27254235, 0.99853622, 0.99922727, 0.49321157],\
+[	-6.27302169, -0.00047908, 0.00029353, 7.27254260, 0.99853645, 0.99922739, 0.49321160],\
+[	-6.27302187, -0.00047901, 0.00029348, 7.27254286, 0.99853667, 0.99922751, 0.49321170],\
+[	-6.27302204, -0.00047894, 0.00029344, 7.27254311, 0.99853690, 0.99922763, 0.49321172],\
+[	-6.27302222, -0.00047886, 0.00029339, 7.27254336, 0.99853712, 0.99922775, 0.49321163],\
+[	-6.27302240, -0.00047879, 0.00029334, 7.27254361, 0.99853735, 0.99922787, 0.49321166],\
+[	-6.27302257, -0.00047871, 0.00029330, 7.27254386, 0.99853758, 0.99922799, 0.49321175],\
+[	-6.27302275, -0.00047864, 0.00029325, 7.27254411, 0.99853780, 0.99922811, 0.49321177],\
+[	-6.27302293, -0.00047857, 0.00029321, 7.27254436, 0.99853803, 0.99922823, 0.49321185],\
+[	-6.27302311, -0.00047849, 0.00029316, 7.27254461, 0.99853826, 0.99922834, 0.49321182],\
+[	-6.27302328, -0.00047842, 0.00029312, 7.27254486, 0.99853848, 0.99922846, 0.49321190],\
+[	-6.27302346, -0.00047834, 0.00029307, 7.27254512, 0.99853871, 0.99922858, 0.49321191],\
+[	-6.27302364, -0.00047827, 0.00029303, 7.27254537, 0.99853893, 0.99922870, 0.49321187],\
+[	-6.27302381, -0.00047820, 0.00029298, 7.27254562, 0.99853916, 0.99922882, 0.49321186],\
+[	-6.27302399, -0.00047812, 0.00029294, 7.27254587, 0.99853939, 0.99922894, 0.49321193],\
+[	-6.27302417, -0.00047805, 0.00029289, 7.27254612, 0.99853961, 0.99922906, 0.49321201],\
+[	-6.27302434, -0.00047797, 0.00029285, 7.27254637, 0.99853984, 0.99922918, 0.49321205],\
+[	-6.27302452, -0.00047790, 0.00029280, 7.27254662, 0.99854006, 0.99922930, 0.49321210],\
+[	-6.27302470, -0.00047783, 0.00029276, 7.27254687, 0.99854029, 0.99922942, 0.49321211],\
+[	-6.27302487, -0.00047775, 0.00029271, 7.27254712, 0.99854051, 0.99922954, 0.49321206],\
+[	-6.27302505, -0.00047768, 0.00029267, 7.27254737, 0.99854074, 0.99922965, 0.49321212],\
+[	-6.27302523, -0.00047761, 0.00029262, 7.27254762, 0.99854096, 0.99922977, 0.49321212],\
+[	-6.27302540, -0.00047753, 0.00029257, 7.27254787, 0.99854119, 0.99922989, 0.49321221],\
+[	-6.27302558, -0.00047746, 0.00029253, 7.27254812, 0.99854141, 0.99923001, 0.49321218],\
+[	-6.27302575, -0.00047739, 0.00029248, 7.27254837, 0.99854164, 0.99923013, 0.49321223],\
+[	-6.27302593, -0.00047731, 0.00029244, 7.27254862, 0.99854186, 0.99923025, 0.49321227],\
+[	-6.27302611, -0.00047724, 0.00029239, 7.27254887, 0.99854209, 0.99923037, 0.49321227],\
+[	-6.27302628, -0.00047716, 0.00029235, 7.27254912, 0.99854231, 0.99923049, 0.49321226],\
+[	-6.27302646, -0.00047709, 0.00029230, 7.27254937, 0.99854254, 0.99923060, 0.49321229],\
+[	-6.27302664, -0.00047702, 0.00029226, 7.27254962, 0.99854276, 0.99923072, 0.49321232],\
+[	-6.27302681, -0.00047694, 0.00029221, 7.27254987, 0.99854299, 0.99923084, 0.49321239],\
+[	-6.27302699, -0.00047687, 0.00029217, 7.27255012, 0.99854321, 0.99923096, 0.49321240],\
+[	-6.27302716, -0.00047680, 0.00029212, 7.27255037, 0.99854344, 0.99923108, 0.49321246],\
+[	-6.27302734, -0.00047672, 0.00029208, 7.27255061, 0.99854366, 0.99923120, 0.49321244],\
+[	-6.27302751, -0.00047665, 0.00029203, 7.27255086, 0.99854388, 0.99923132, 0.49321242],\
+[	-6.27302769, -0.00047658, 0.00029199, 7.27255111, 0.99854411, 0.99923143, 0.49321242],\
+[	-6.27302787, -0.00047650, 0.00029194, 7.27255136, 0.99854433, 0.99923155, 0.49321258],\
+[	-6.27302804, -0.00047643, 0.00029190, 7.27255161, 0.99854456, 0.99923167, 0.49321251],\
+[	-6.27302822, -0.00047636, 0.00029185, 7.27255186, 0.99854478, 0.99923179, 0.49321261],\
+[	-6.27302839, -0.00047628, 0.00029181, 7.27255211, 0.99854501, 0.99923191, 0.49321264],\
+[	-6.27302857, -0.00047621, 0.00029176, 7.27255236, 0.99854523, 0.99923203, 0.49321265],\
+[	-6.27302874, -0.00047614, 0.00029172, 7.27255261, 0.99854545, 0.99923214, 0.49321268],\
+[	-6.27302892, -0.00047606, 0.00029167, 7.27255285, 0.99854568, 0.99923226, 0.49321269],\
+[	-6.27302909, -0.00047599, 0.00029163, 7.27255310, 0.99854590, 0.99923238, 0.49321277],\
+[	-6.27302927, -0.00047592, 0.00029158, 7.27255335, 0.99854612, 0.99923250, 0.49321272],\
+[	-6.27302944, -0.00047584, 0.00029154, 7.27255360, 0.99854635, 0.99923262, 0.49321278],\
+[	-6.27302962, -0.00047577, 0.00029150, 7.27255385, 0.99854657, 0.99923273, 0.49321287],\
+[	-6.27302979, -0.00047570, 0.00029145, 7.27255410, 0.99854679, 0.99923285, 0.49321280],\
+[	-6.27302997, -0.00047562, 0.00029141, 7.27255434, 0.99854702, 0.99923297, 0.49321291],\
+[	-6.27303014, -0.00047555, 0.00029136, 7.27255459, 0.99854724, 0.99923309, 0.49321279],\
+[	-6.27303032, -0.00047548, 0.00029132, 7.27255484, 0.99854746, 0.99923321, 0.49321284],\
+[	-6.27303049, -0.00047541, 0.00029127, 7.27255509, 0.99854769, 0.99923332, 0.49321288],\
+[	-6.27303067, -0.00047533, 0.00029123, 7.27255533, 0.99854791, 0.99923344, 0.49321294],\
+[	-6.27303084, -0.00047526, 0.00029118, 7.27255558, 0.99854813, 0.99923356, 0.49321292],\
+[	-6.27303102, -0.00047519, 0.00029114, 7.27255583, 0.99854836, 0.99923368, 0.49321300],\
+[	-6.27303119, -0.00047511, 0.00029109, 7.27255608, 0.99854858, 0.99923379, 0.49321302],\
+[	-6.27303137, -0.00047504, 0.00029105, 7.27255632, 0.99854880, 0.99923391, 0.49321303],\
+[	-6.27303154, -0.00047497, 0.00029100, 7.27255657, 0.99854903, 0.99923403, 0.49321311],\
+[	-6.27303171, -0.00047490, 0.00029096, 7.27255682, 0.99854925, 0.99923415, 0.49321311],\
+[	-6.27303189, -0.00047482, 0.00029091, 7.27255707, 0.99854947, 0.99923426, 0.49321315],\
+[	-6.27303206, -0.00047475, 0.00029087, 7.27255731, 0.99854969, 0.99923438, 0.49321319],\
+[	-6.27303224, -0.00047468, 0.00029082, 7.27255756, 0.99854992, 0.99923450, 0.49321317],\
+[	-6.27303241, -0.00047460, 0.00029078, 7.27255781, 0.99855014, 0.99923462, 0.49321321],\
+[	-6.27303259, -0.00047453, 0.00029073, 7.27255805, 0.99855036, 0.99923473, 0.49321326],\
+[	-6.27303276, -0.00047446, 0.00029069, 7.27255830, 0.99855058, 0.99923485, 0.49321318],\
+[	-6.27303293, -0.00047439, 0.00029065, 7.27255855, 0.99855081, 0.99923497, 0.49321326],\
+[	-6.27303311, -0.00047431, 0.00029060, 7.27255879, 0.99855103, 0.99923509, 0.49321333],\
+[	-6.27303328, -0.00047424, 0.00029056, 7.27255904, 0.99855125, 0.99923520, 0.49321333],\
+[	-6.27303345, -0.00047417, 0.00029051, 7.27255929, 0.99855147, 0.99923532, 0.49321344],\
+[	-6.27303363, -0.00047410, 0.00029047, 7.27255953, 0.99855169, 0.99923544, 0.49321337],\
+[	-6.27303380, -0.00047402, 0.00029042, 7.27255978, 0.99855192, 0.99923555, 0.49321345],\
+[	-6.27303398, -0.00047395, 0.00029038, 7.27256003, 0.99855214, 0.99923567, 0.49321337],\
+[	-6.27303415, -0.00047388, 0.00029033, 7.27256027, 0.99855236, 0.99923579, 0.49321344],\
+[	-6.27303432, -0.00047380, 0.00029029, 7.27256052, 0.99855258, 0.99923591, 0.49321346],\
+[	-6.27303450, -0.00047373, 0.00029025, 7.27256076, 0.99855280, 0.99923602, 0.49321354],\
+[	-6.27303467, -0.00047366, 0.00029020, 7.27256101, 0.99855302, 0.99923614, 0.49321353],\
+[	-6.27303484, -0.00047359, 0.00029016, 7.27256126, 0.99855325, 0.99923626, 0.49321361],\
+[	-6.27303502, -0.00047351, 0.00029011, 7.27256150, 0.99855347, 0.99923637, 0.49321358],\
+[	-6.27303519, -0.00047344, 0.00029007, 7.27256175, 0.99855369, 0.99923649, 0.49321363],\
+[	-6.27303536, -0.00047337, 0.00029002, 7.27256199, 0.99855391, 0.99923661, 0.49321367],\
+[	-6.27303554, -0.00047330, 0.00028998, 7.27256224, 0.99855413, 0.99923672, 0.49321364],\
+[	-6.27303571, -0.00047323, 0.00028993, 7.27256248, 0.99855435, 0.99923684, 0.49321377],\
+[	-6.27303588, -0.00047315, 0.00028989, 7.27256273, 0.99855457, 0.99923696, 0.49321375],\
+[	-6.27303606, -0.00047308, 0.00028985, 7.27256298, 0.99855479, 0.99923707, 0.49321379],\
+[	-6.27303623, -0.00047301, 0.00028980, 7.27256322, 0.99855501, 0.99923719, 0.49321377],\
+[	-6.27303640, -0.00047294, 0.00028976, 7.27256347, 0.99855524, 0.99923731, 0.49321372],\
+[	-6.27303658, -0.00047286, 0.00028971, 7.27256371, 0.99855546, 0.99923742, 0.49321383],\
+[	-6.27303675, -0.00047279, 0.00028967, 7.27256396, 0.99855568, 0.99923754, 0.49321384],\
+[	-6.27303692, -0.00047272, 0.00028962, 7.27256420, 0.99855590, 0.99923766, 0.49321394],\
+[	-6.27303709, -0.00047265, 0.00028958, 7.27256445, 0.99855612, 0.99923777, 0.49321386],\
+[	-6.27303727, -0.00047258, 0.00028954, 7.27256469, 0.99855634, 0.99923789, 0.49321390],\
+[	-6.27303744, -0.00047250, 0.00028949, 7.27256494, 0.99855656, 0.99923801, 0.49321401],\
+[	-6.27303761, -0.00047243, 0.00028945, 7.27256518, 0.99855678, 0.99923812, 0.49321394],\
+[	-6.27303778, -0.00047236, 0.00028940, 7.27256543, 0.99855700, 0.99923824, 0.49321395],\
+[	-6.27303796, -0.00047229, 0.00028936, 7.27256567, 0.99855722, 0.99923835, 0.49321400],\
+[	-6.27303813, -0.00047221, 0.00028931, 7.27256591, 0.99855744, 0.99923847, 0.49321392],\
+[	-6.27303830, -0.00047214, 0.00028927, 7.27256616, 0.99855766, 0.99923859, 0.49321409],\
+[	-6.27303847, -0.00047207, 0.00028923, 7.27256640, 0.99855788, 0.99923870, 0.49321404],\
+[	-6.27303865, -0.00047200, 0.00028918, 7.27256665, 0.99855810, 0.99923882, 0.49321416],\
+[	-6.27303882, -0.00047193, 0.00028914, 7.27256689, 0.99855832, 0.99923893, 0.49321409],\
+[	-6.27303899, -0.00047185, 0.00028909, 7.27256714, 0.99855854, 0.99923905, 0.49321418],\
+[	-6.27303916, -0.00047178, 0.00028905, 7.27256738, 0.99855876, 0.99923917, 0.49321418],\
+[	-6.27303933, -0.00047171, 0.00028901, 7.27256762, 0.99855898, 0.99923928, 0.49321424],\
+[	-6.27303951, -0.00047164, 0.00028896, 7.27256787, 0.99855920, 0.99923940, 0.49321434],\
+[	-6.27303968, -0.00047157, 0.00028892, 7.27256811, 0.99855942, 0.99923951, 0.49321431],\
+[	-6.27303985, -0.00047150, 0.00028887, 7.27256835, 0.99855964, 0.99923963, 0.49321429],\
+[	-6.27304002, -0.00047142, 0.00028883, 7.27256860, 0.99855986, 0.99923975, 0.49321428],\
+[	-6.27304019, -0.00047135, 0.00028879, 7.27256884, 0.99856008, 0.99923986, 0.49321434],\
+[	-6.27304037, -0.00047128, 0.00028874, 7.27256909, 0.99856030, 0.99923998, 0.49321435],\
+[	-6.27304054, -0.00047121, 0.00028870, 7.27256933, 0.99856052, 0.99924009, 0.49321437],\
+[	-6.27304071, -0.00047114, 0.00028865, 7.27256957, 0.99856073, 0.99924021, 0.49321446],\
+[	-6.27304088, -0.00047106, 0.00028861, 7.27256982, 0.99856095, 0.99924032, 0.49321442],\
+[	-6.27304105, -0.00047099, 0.00028857, 7.27257006, 0.99856117, 0.99924044, 0.49321442],\
+[	-6.27304122, -0.00047092, 0.00028852, 7.27257030, 0.99856139, 0.99924056, 0.49321451],\
+[	-6.27304139, -0.00047085, 0.00028848, 7.27257054, 0.99856161, 0.99924067, 0.49321455],\
+[	-6.27304157, -0.00047078, 0.00028843, 7.27257079, 0.99856183, 0.99924079, 0.49321455],\
+[	-6.27304174, -0.00047071, 0.00028839, 7.27257103, 0.99856205, 0.99924090, 0.49321459],\
+[	-6.27304191, -0.00047064, 0.00028835, 7.27257127, 0.99856227, 0.99924102, 0.49321464],\
+[	-6.27304208, -0.00047056, 0.00028830, 7.27257152, 0.99856249, 0.99924113, 0.49321460],\
+[	-6.27304225, -0.00047049, 0.00028826, 7.27257176, 0.99856270, 0.99924125, 0.49321463],\
+[	-6.27304242, -0.00047042, 0.00028822, 7.27257200, 0.99856292, 0.99924136, 0.49321476],\
+[	-6.27304259, -0.00047035, 0.00028817, 7.27257224, 0.99856314, 0.99924148, 0.49321475],\
+[	-6.27304276, -0.00047028, 0.00028813, 7.27257249, 0.99856336, 0.99924159, 0.49321471],\
+[	-6.27304294, -0.00047021, 0.00028808, 7.27257273, 0.99856358, 0.99924171, 0.49321475],\
+[	-6.27304311, -0.00047013, 0.00028804, 7.27257297, 0.99856380, 0.99924183, 0.49321476],\
+[	-6.27304328, -0.00047006, 0.00028800, 7.27257321, 0.99856401, 0.99924194, 0.49321484],\
+[	-6.27304345, -0.00046999, 0.00028795, 7.27257346, 0.99856423, 0.99924206, 0.49321477],\
+[	-6.27304362, -0.00046992, 0.00028791, 7.27257370, 0.99856445, 0.99924217, 0.49321483],\
+[	-6.27304379, -0.00046985, 0.00028787, 7.27257394, 0.99856467, 0.99924229, 0.49321495],\
+[	-6.27304396, -0.00046978, 0.00028782, 7.27257418, 0.99856489, 0.99924240, 0.49321491],\
+[	-6.27304413, -0.00046971, 0.00028778, 7.27257442, 0.99856510, 0.99924252, 0.49321493],\
+[	-6.27304430, -0.00046964, 0.00028773, 7.27257467, 0.99856532, 0.99924263, 0.49321498],\
+[	-6.27304447, -0.00046956, 0.00028769, 7.27257491, 0.99856554, 0.99924275, 0.49321496],\
+[	-6.27304464, -0.00046949, 0.00028765, 7.27257515, 0.99856576, 0.99924286, 0.49321502],\
+[	-6.27304481, -0.00046942, 0.00028760, 7.27257539, 0.99856597, 0.99924298, 0.49321503],\
+[	-6.27304498, -0.00046935, 0.00028756, 7.27257563, 0.99856619, 0.99924309, 0.49321507],\
+[	-6.27304515, -0.00046928, 0.00028752, 7.27257587, 0.99856641, 0.99924320, 0.49321515],\
+[	-6.27304532, -0.00046921, 0.00028747, 7.27257611, 0.99856663, 0.99924332, 0.49321508],\
+[	-6.27304549, -0.00046914, 0.00028743, 7.27257636, 0.99856684, 0.99924343, 0.49321514],\
+[	-6.27304566, -0.00046907, 0.00028738, 7.27257660, 0.99856706, 0.99924355, 0.49321526],\
+[	-6.27304583, -0.00046900, 0.00028734, 7.27257684, 0.99856728, 0.99924366, 0.49321521],\
+[	-6.27304600, -0.00046892, 0.00028730, 7.27257708, 0.99856750, 0.99924378, 0.49321521],\
+[	-6.27304617, -0.00046885, 0.00028725, 7.27257732, 0.99856771, 0.99924389, 0.49321523],\
+[	-6.27304634, -0.00046878, 0.00028721, 7.27257756, 0.99856793, 0.99924401, 0.49321526],\
+[	-6.27304651, -0.00046871, 0.00028717, 7.27257780, 0.99856815, 0.99924412, 0.49321530],\
+[	-6.27304668, -0.00046864, 0.00028712, 7.27257804, 0.99856836, 0.99924424, 0.49321535],\
+[	-6.27304685, -0.00046857, 0.00028708, 7.27257828, 0.99856858, 0.99924435, 0.49321541],\
+[	-6.27304702, -0.00046850, 0.00028704, 7.27257852, 0.99856880, 0.99924446, 0.49321529],\
+[	-6.27304719, -0.00046843, 0.00028699, 7.27257876, 0.99856901, 0.99924458, 0.49321541],\
+[	-6.27304736, -0.00046836, 0.00028695, 7.27257901, 0.99856923, 0.99924469, 0.49321535],\
+[	-6.27304753, -0.00046829, 0.00028691, 7.27257925, 0.99856945, 0.99924481, 0.49321543],\
+[	-6.27304770, -0.00046821, 0.00028686, 7.27257949, 0.99856966, 0.99924492, 0.49321548],\
+[	-6.27304787, -0.00046814, 0.00028682, 7.27257973, 0.99856988, 0.99924504, 0.49321551],\
+[	-6.27304804, -0.00046807, 0.00028678, 7.27257997, 0.99857010, 0.99924515, 0.49321545],\
+[	-6.27304821, -0.00046800, 0.00028673, 7.27258021, 0.99857031, 0.99924526, 0.49321554],\
+[	-6.27304838, -0.00046793, 0.00028669, 7.27258045, 0.99857053, 0.99924538, 0.49321557],\
+[	-6.27304855, -0.00046786, 0.00028665, 7.27258069, 0.99857074, 0.99924549, 0.49321561],\
+[	-6.27304872, -0.00046779, 0.00028660, 7.27258093, 0.99857096, 0.99924561, 0.49321567],\
+[	-6.27304889, -0.00046772, 0.00028656, 7.27258117, 0.99857118, 0.99924572, 0.49321567],\
+[	-6.27304906, -0.00046765, 0.00028652, 7.27258141, 0.99857139, 0.99924583, 0.49321571],\
+[	-6.27304922, -0.00046758, 0.00028647, 7.27258165, 0.99857161, 0.99924595, 0.49321566],\
+[	-6.27304939, -0.00046751, 0.00028643, 7.27258189, 0.99857182, 0.99924606, 0.49321576],\
+[	-6.27304956, -0.00046744, 0.00028639, 7.27258213, 0.99857204, 0.99924618, 0.49321567],\
+[	-6.27304973, -0.00046737, 0.00028634, 7.27258236, 0.99857226, 0.99924629, 0.49321585],\
+[	-6.27304990, -0.00046730, 0.00028630, 7.27258260, 0.99857247, 0.99924640, 0.49321576],\
+[	-6.27305007, -0.00046723, 0.00028626, 7.27258284, 0.99857269, 0.99924652, 0.49321581],\
+[	-6.27305024, -0.00046715, 0.00028621, 7.27258308, 0.99857290, 0.99924663, 0.49321580],\
+[	-6.27305041, -0.00046708, 0.00028617, 7.27258332, 0.99857312, 0.99924675, 0.49321590],\
+[	-6.27305057, -0.00046701, 0.00028613, 7.27258356, 0.99857333, 0.99924686, 0.49321582],\
+[	-6.27305074, -0.00046694, 0.00028608, 7.27258380, 0.99857355, 0.99924697, 0.49321587],\
+[	-6.27305091, -0.00046687, 0.00028604, 7.27258404, 0.99857376, 0.99924709, 0.49321595],\
+[	-6.27305108, -0.00046680, 0.00028600, 7.27258428, 0.99857398, 0.99924720, 0.49321595],\
+[	-6.27305125, -0.00046673, 0.00028595, 7.27258452, 0.99857419, 0.99924731, 0.49321600],\
+[	-6.27305142, -0.00046666, 0.00028591, 7.27258476, 0.99857441, 0.99924743, 0.49321598],\
+[	-6.27305159, -0.00046659, 0.00028587, 7.27258499, 0.99857462, 0.99924754, 0.49321613],\
+[	-6.27305175, -0.00046652, 0.00028582, 7.27258523, 0.99857484, 0.99924765, 0.49321611],\
+[	-6.27305192, -0.00046645, 0.00028578, 7.27258547, 0.99857505, 0.99924777, 0.49321600],\
+[	-6.27305209, -0.00046638, 0.00028574, 7.27258571, 0.99857527, 0.99924788, 0.49321621],\
+[	-6.27305226, -0.00046631, 0.00028570, 7.27258595, 0.99857548, 0.99924799, 0.49321615],\
+[	-6.27305243, -0.00046624, 0.00028565, 7.27258619, 0.99857570, 0.99924811, 0.49321620],\
+[	-6.27305259, -0.00046617, 0.00028561, 7.27258642, 0.99857591, 0.99924822, 0.49321625],\
+[	-6.27305276, -0.00046610, 0.00028557, 7.27258666, 0.99857613, 0.99924833, 0.49321621],\
+[	-6.27305293, -0.00046603, 0.00028552, 7.27258690, 0.99857634, 0.99924845, 0.49321630],\
+[	-6.27305310, -0.00046596, 0.00028548, 7.27258714, 0.99857656, 0.99924856, 0.49321623],\
+[	-6.27305327, -0.00046589, 0.00028544, 7.27258738, 0.99857677, 0.99924867, 0.49321633],\
+[	-6.27305343, -0.00046582, 0.00028539, 7.27258761, 0.99857698, 0.99924879, 0.49321637],\
+[	-6.27305360, -0.00046575, 0.00028535, 7.27258785, 0.99857720, 0.99924890, 0.49321640],\
+[	-6.27305377, -0.00046568, 0.00028531, 7.27258809, 0.99857741, 0.99924901, 0.49321641],\
+[	-6.27305394, -0.00046561, 0.00028527, 7.27258833, 0.99857763, 0.99924913, 0.49321644],\
+[	-6.27305410, -0.00046554, 0.00028522, 7.27258857, 0.99857784, 0.99924924, 0.49321640],\
+[	-6.27305427, -0.00046547, 0.00028518, 7.27258880, 0.99857805, 0.99924935, 0.49321644],\
+[	-6.27305444, -0.00046540, 0.00028514, 7.27258904, 0.99857827, 0.99924946, 0.49321647],\
+[	-6.27305461, -0.00046533, 0.00028509, 7.27258928, 0.99857848, 0.99924958, 0.49321655],\
+[	-6.27305477, -0.00046526, 0.00028505, 7.27258952, 0.99857870, 0.99924969, 0.49321652],\
+[	-6.27305494, -0.00046519, 0.00028501, 7.27258975, 0.99857891, 0.99924980, 0.49321651],\
+[	-6.27305511, -0.00046512, 0.00028497, 7.27258999, 0.99857912, 0.99924992, 0.49321656],\
+[	-6.27305528, -0.00046505, 0.00028492, 7.27259023, 0.99857934, 0.99925003, 0.49321656],\
+[	-6.27305544, -0.00046498, 0.00028488, 7.27259046, 0.99857955, 0.99925014, 0.49321665],\
+[	-6.27305561, -0.00046491, 0.00028484, 7.27259070, 0.99857976, 0.99925025, 0.49321668],\
+[	-6.27305578, -0.00046484, 0.00028479, 7.27259094, 0.99857998, 0.99925037, 0.49321665],\
+[	-6.27305594, -0.00046477, 0.00028475, 7.27259117, 0.99858019, 0.99925048, 0.49321672],\
+[	-6.27305611, -0.00046470, 0.00028471, 7.27259141, 0.99858040, 0.99925059, 0.49321675],\
+[	-6.27305628, -0.00046463, 0.00028467, 7.27259165, 0.99858062, 0.99925070, 0.49321677],\
+[	-6.27305645, -0.00046456, 0.00028462, 7.27259188, 0.99858083, 0.99925082, 0.49321675],\
+[	-6.27305661, -0.00046449, 0.00028458, 7.27259212, 0.99858104, 0.99925093, 0.49321677],\
+[	-6.27305678, -0.00046442, 0.00028454, 7.27259236, 0.99858126, 0.99925104, 0.49321687],\
+[	-6.27305695, -0.00046435, 0.00028449, 7.27259259, 0.99858147, 0.99925115, 0.49321692],\
+[	-6.27305711, -0.00046428, 0.00028445, 7.27259283, 0.99858168, 0.99925127, 0.49321690],\
+[	-6.27305728, -0.00046421, 0.00028441, 7.27259307, 0.99858189, 0.99925138, 0.49321690],\
+[	-6.27305745, -0.00046414, 0.00028437, 7.27259330, 0.99858211, 0.99925149, 0.49321703],\
+[	-6.27305761, -0.00046407, 0.00028432, 7.27259354, 0.99858232, 0.99925160, 0.49321695],\
+[	-6.27305778, -0.00046400, 0.00028428, 7.27259377, 0.99858253, 0.99925171, 0.49321702],\
+[	-6.27305795, -0.00046393, 0.00028424, 7.27259401, 0.99858275, 0.99925183, 0.49321702],\
+[	-6.27305811, -0.00046386, 0.00028420, 7.27259425, 0.99858296, 0.99925194, 0.49321707],\
+[	-6.27305828, -0.00046380, 0.00028415, 7.27259448, 0.99858317, 0.99925205, 0.49321711],\
+[	-6.27305844, -0.00046373, 0.00028411, 7.27259472, 0.99858338, 0.99925216, 0.49321702],\
+[	-6.27305861, -0.00046366, 0.00028407, 7.27259495, 0.99858359, 0.99925227, 0.49321714],\
+[	-6.27305878, -0.00046359, 0.00028403, 7.27259519, 0.99858381, 0.99925239, 0.49321714],\
+[	-6.27305894, -0.00046352, 0.00028398, 7.27259543, 0.99858402, 0.99925250, 0.49321712],\
+[	-6.27305911, -0.00046345, 0.00028394, 7.27259566, 0.99858423, 0.99925261, 0.49321724],\
+[	-6.27305927, -0.00046338, 0.00028390, 7.27259590, 0.99858444, 0.99925272, 0.49321723],\
+[	-6.27305944, -0.00046331, 0.00028386, 7.27259613, 0.99858465, 0.99925283, 0.49321718],\
+[	-6.27305961, -0.00046324, 0.00028381, 7.27259637, 0.99858487, 0.99925295, 0.49321725],\
+[	-6.27305977, -0.00046317, 0.00028377, 7.27259660, 0.99858508, 0.99925306, 0.49321729],\
+[	-6.27305994, -0.00046310, 0.00028373, 7.27259684, 0.99858529, 0.99925317, 0.49321728],\
+[	-6.27306010, -0.00046303, 0.00028369, 7.27259707, 0.99858550, 0.99925328, 0.49321728],\
+[	-6.27306027, -0.00046296, 0.00028364, 7.27259731, 0.99858571, 0.99925339, 0.49321738],\
+[	-6.27306044, -0.00046289, 0.00028360, 7.27259754, 0.99858593, 0.99925351, 0.49321730],\
+[	-6.27306060, -0.00046282, 0.00028356, 7.27259778, 0.99858614, 0.99925362, 0.49321736],\
+[	-6.27306077, -0.00046276, 0.00028352, 7.27259801, 0.99858635, 0.99925373, 0.49321743],\
+[	-6.27306093, -0.00046269, 0.00028347, 7.27259825, 0.99858656, 0.99925384, 0.49321740],\
+[	-6.27306110, -0.00046262, 0.00028343, 7.27259848, 0.99858677, 0.99925395, 0.49321757],\
+[	-6.27306126, -0.00046255, 0.00028339, 7.27259872, 0.99858698, 0.99925406, 0.49321754],\
+[	-6.27306143, -0.00046248, 0.00028335, 7.27259895, 0.99858719, 0.99925417, 0.49321760],\
+[	-6.27306159, -0.00046241, 0.00028330, 7.27259918, 0.99858740, 0.99925429, 0.49321757],\
+[	-6.27306176, -0.00046234, 0.00028326, 7.27259942, 0.99858762, 0.99925440, 0.49321761],\
+[	-6.27306192, -0.00046227, 0.00028322, 7.27259965, 0.99858783, 0.99925451, 0.49321757],\
+[	-6.27306209, -0.00046220, 0.00028318, 7.27259989, 0.99858804, 0.99925462, 0.49321764],\
+[	-6.27306225, -0.00046213, 0.00028314, 7.27260012, 0.99858825, 0.99925473, 0.49321769],\
+[	-6.27306242, -0.00046206, 0.00028309, 7.27260036, 0.99858846, 0.99925484, 0.49321767],\
+[	-6.27306259, -0.00046200, 0.00028305, 7.27260059, 0.99858867, 0.99925495, 0.49321773],\
+[	-6.27306275, -0.00046193, 0.00028301, 7.27260082, 0.99858888, 0.99925506, 0.49321772],\
+[	-6.27306292, -0.00046186, 0.00028297, 7.27260106, 0.99858909, 0.99925518, 0.49321771],\
+[	-6.27306308, -0.00046179, 0.00028292, 7.27260129, 0.99858930, 0.99925529, 0.49321779],\
+[	-6.27306324, -0.00046172, 0.00028288, 7.27260152, 0.99858951, 0.99925540, 0.49321779],\
+[	-6.27306341, -0.00046165, 0.00028284, 7.27260176, 0.99858972, 0.99925551, 0.49321780],\
+[	-6.27306357, -0.00046158, 0.00028280, 7.27260199, 0.99858993, 0.99925562, 0.49321791],\
+[	-6.27306374, -0.00046151, 0.00028275, 7.27260223, 0.99859014, 0.99925573, 0.49321791],\
+[	-6.27306390, -0.00046144, 0.00028271, 7.27260246, 0.99859035, 0.99925584, 0.49321788],\
+[	-6.27306407, -0.00046138, 0.00028267, 7.27260269, 0.99859056, 0.99925595, 0.49321791],\
+[	-6.27306423, -0.00046131, 0.00028263, 7.27260293, 0.99859077, 0.99925606, 0.49321799],\
+[	-6.27306440, -0.00046124, 0.00028259, 7.27260316, 0.99859098, 0.99925618, 0.49321795],\
+[	-6.27306456, -0.00046117, 0.00028254, 7.27260339, 0.99859119, 0.99925629, 0.49321797],\
+[	-6.27306473, -0.00046110, 0.00028250, 7.27260363, 0.99859140, 0.99925640, 0.49321800],\
+[	-6.27306489, -0.00046103, 0.00028246, 7.27260386, 0.99859161, 0.99925651, 0.49321804],\
+[	-6.27306505, -0.00046096, 0.00028242, 7.27260409, 0.99859182, 0.99925662, 0.49321800],\
+[	-6.27306522, -0.00046090, 0.00028238, 7.27260432, 0.99859203, 0.99925673, 0.49321804],\
+[	-6.27306538, -0.00046083, 0.00028233, 7.27260456, 0.99859224, 0.99925684, 0.49321806],\
+[	-6.27306555, -0.00046076, 0.00028229, 7.27260479, 0.99859245, 0.99925695, 0.49321814],\
+[	-6.27306571, -0.00046069, 0.00028225, 7.27260502, 0.99859266, 0.99925706, 0.49321818],\
+[	-6.27306588, -0.00046062, 0.00028221, 7.27260525, 0.99859287, 0.99925717, 0.49321811],\
+[	-6.27306604, -0.00046055, 0.00028217, 7.27260549, 0.99859308, 0.99925728, 0.49321821],\
+[	-6.27306620, -0.00046048, 0.00028212, 7.27260572, 0.99859329, 0.99925739, 0.49321828],\
+[	-6.27306637, -0.00046042, 0.00028208, 7.27260595, 0.99859350, 0.99925750, 0.49321829],\
+[	-6.27306653, -0.00046035, 0.00028204, 7.27260618, 0.99859371, 0.99925761, 0.49321826],\
+[	-6.27306670, -0.00046028, 0.00028200, 7.27260642, 0.99859392, 0.99925772, 0.49321833],\
+[	-6.27306686, -0.00046021, 0.00028196, 7.27260665, 0.99859413, 0.99925783, 0.49321833],\
+[	-6.27306702, -0.00046014, 0.00028191, 7.27260688, 0.99859434, 0.99925794, 0.49321830],\
+[	-6.27306719, -0.00046007, 0.00028187, 7.27260711, 0.99859455, 0.99925805, 0.49321842],\
+[	-6.27306735, -0.00046000, 0.00028183, 7.27260735, 0.99859475, 0.99925817, 0.49321838],\
+[	-6.27306751, -0.00045994, 0.00028179, 7.27260758, 0.99859496, 0.99925828, 0.49321849],\
+[	-6.27306768, -0.00045987, 0.00028175, 7.27260781, 0.99859517, 0.99925839, 0.49321848],\
+[	-6.27306784, -0.00045980, 0.00028170, 7.27260804, 0.99859538, 0.99925850, 0.49321848],\
+[	-6.27306800, -0.00045973, 0.00028166, 7.27260827, 0.99859559, 0.99925861, 0.49321852],\
+[	-6.27306817, -0.00045966, 0.00028162, 7.27260850, 0.99859580, 0.99925872, 0.49321855],\
+[	-6.27306833, -0.00045959, 0.00028158, 7.27260874, 0.99859601, 0.99925883, 0.49321849],\
+[	-6.27306849, -0.00045953, 0.00028154, 7.27260897, 0.99859622, 0.99925894, 0.49321861],\
+[	-6.27306866, -0.00045946, 0.00028150, 7.27260920, 0.99859642, 0.99925905, 0.49321858],\
+[	-6.27306882, -0.00045939, 0.00028145, 7.27260943, 0.99859663, 0.99925916, 0.49321869],\
+[	-6.27306898, -0.00045932, 0.00028141, 7.27260966, 0.99859684, 0.99925927, 0.49321873],\
+[	-6.27306915, -0.00045925, 0.00028137, 7.27260989, 0.99859705, 0.99925938, 0.49321868],\
+[	-6.27306931, -0.00045919, 0.00028133, 7.27261012, 0.99859726, 0.99925949, 0.49321872],\
+[	-6.27306947, -0.00045912, 0.00028129, 7.27261035, 0.99859746, 0.99925960, 0.49321879],\
+[	-6.27306964, -0.00045905, 0.00028124, 7.27261059, 0.99859767, 0.99925971, 0.49321873],\
+[	-6.27306980, -0.00045898, 0.00028120, 7.27261082, 0.99859788, 0.99925982, 0.49321881],\
+[	-6.27306996, -0.00045891, 0.00028116, 7.27261105, 0.99859809, 0.99925993, 0.49321869],\
+[	-6.27307012, -0.00045885, 0.00028112, 7.27261128, 0.99859830, 0.99926003, 0.49321889],\
+[	-6.27307029, -0.00045878, 0.00028108, 7.27261151, 0.99859850, 0.99926014, 0.49321883],\
+[	-6.27307045, -0.00045871, 0.00028104, 7.27261174, 0.99859871, 0.99926025, 0.49321889],\
+[	-6.27307061, -0.00045864, 0.00028099, 7.27261197, 0.99859892, 0.99926036, 0.49321886],\
+[	-6.27307078, -0.00045857, 0.00028095, 7.27261220, 0.99859913, 0.99926047, 0.49321894],\
+[	-6.27307094, -0.00045851, 0.00028091, 7.27261243, 0.99859934, 0.99926058, 0.49321894],\
+[	-6.27307110, -0.00045844, 0.00028087, 7.27261266, 0.99859954, 0.99926069, 0.49321891],\
+[	-6.27307126, -0.00045837, 0.00028083, 7.27261289, 0.99859975, 0.99926080, 0.49321907],\
+[	-6.27307142, -0.00045830, 0.00028079, 7.27261312, 0.99859996, 0.99926091, 0.49321892],\
+[	-6.27307159, -0.00045823, 0.00028074, 7.27261335, 0.99860016, 0.99926102, 0.49321904],\
+[	-6.27307175, -0.00045817, 0.00028070, 7.27261358, 0.99860037, 0.99926113, 0.49321907],\
+[	-6.27307191, -0.00045810, 0.00028066, 7.27261381, 0.99860058, 0.99926124, 0.49321903],\
+[	-6.27307207, -0.00045803, 0.00028062, 7.27261404, 0.99860079, 0.99926135, 0.49321912],\
+[	-6.27307224, -0.00045796, 0.00028058, 7.27261427, 0.99860099, 0.99926146, 0.49321912],\
+[	-6.27307240, -0.00045790, 0.00028054, 7.27261450, 0.99860120, 0.99926157, 0.49321912],\
+[	-6.27307256, -0.00045783, 0.00028050, 7.27261473, 0.99860141, 0.99926168, 0.49321924],\
+[	-6.27307272, -0.00045776, 0.00028045, 7.27261496, 0.99860161, 0.99926179, 0.49321924],\
+[	-6.27307288, -0.00045769, 0.00028041, 7.27261519, 0.99860182, 0.99926190, 0.49321921],\
+[	-6.27307305, -0.00045762, 0.00028037, 7.27261542, 0.99860203, 0.99926200, 0.49321927],\
+[	-6.27307321, -0.00045756, 0.00028033, 7.27261565, 0.99860223, 0.99926211, 0.49321925],\
+[	-6.27307337, -0.00045749, 0.00028029, 7.27261588, 0.99860244, 0.99926222, 0.49321926],\
+[	-6.27307353, -0.00045742, 0.00028025, 7.27261611, 0.99860265, 0.99926233, 0.49321932],\
+[	-6.27307369, -0.00045735, 0.00028021, 7.27261634, 0.99860285, 0.99926244, 0.49321935],\
+[	-6.27307386, -0.00045729, 0.00028016, 7.27261657, 0.99860306, 0.99926255, 0.49321931],\
+[	-6.27307402, -0.00045722, 0.00028012, 7.27261680, 0.99860327, 0.99926266, 0.49321940],\
+[	-6.27307418, -0.00045715, 0.00028008, 7.27261703, 0.99860347, 0.99926277, 0.49321940],\
+[	-6.27307434, -0.00045708, 0.00028004, 7.27261726, 0.99860368, 0.99926288, 0.49321938],\
+[	-6.27307450, -0.00045702, 0.00028000, 7.27261749, 0.99860389, 0.99926299, 0.49321955],\
+[	-6.27307466, -0.00045695, 0.00027996, 7.27261771, 0.99860409, 0.99926309, 0.49321946],\
+[	-6.27307482, -0.00045688, 0.00027992, 7.27261794, 0.99860430, 0.99926320, 0.49321952],\
+[	-6.27307499, -0.00045681, 0.00027987, 7.27261817, 0.99860450, 0.99926331, 0.49321956],\
+[	-6.27307515, -0.00045675, 0.00027983, 7.27261840, 0.99860471, 0.99926342, 0.49321950],\
+[	-6.27307531, -0.00045668, 0.00027979, 7.27261863, 0.99860492, 0.99926353, 0.49321959],\
+[	-6.27307547, -0.00045661, 0.00027975, 7.27261886, 0.99860512, 0.99926364, 0.49321954],\
+[	-6.27307563, -0.00045654, 0.00027971, 7.27261909, 0.99860533, 0.99926375, 0.49321964],\
+[	-6.27307579, -0.00045648, 0.00027967, 7.27261931, 0.99860553, 0.99926385, 0.49321960],\
+[	-6.27307595, -0.00045641, 0.00027963, 7.27261954, 0.99860574, 0.99926396, 0.49321972],\
+[	-6.27307611, -0.00045634, 0.00027959, 7.27261977, 0.99860595, 0.99926407, 0.49321973],\
+[	-6.27307628, -0.00045628, 0.00027954, 7.27262000, 0.99860615, 0.99926418, 0.49321968],\
+[	-6.27307644, -0.00045621, 0.00027950, 7.27262023, 0.99860636, 0.99926429, 0.49321967],\
+[	-6.27307660, -0.00045614, 0.00027946, 7.27262046, 0.99860656, 0.99926440, 0.49321972],\
+[	-6.27307676, -0.00045607, 0.00027942, 7.27262068, 0.99860677, 0.99926451, 0.49321981],\
+[	-6.27307692, -0.00045601, 0.00027938, 7.27262091, 0.99860697, 0.99926461, 0.49321979],\
+[	-6.27307708, -0.00045594, 0.00027934, 7.27262114, 0.99860718, 0.99926472, 0.49321986],\
+[	-6.27307724, -0.00045587, 0.00027930, 7.27262137, 0.99860738, 0.99926483, 0.49321988],\
+[	-6.27307740, -0.00045581, 0.00027926, 7.27262160, 0.99860759, 0.99926494, 0.49321990],\
+[	-6.27307756, -0.00045574, 0.00027921, 7.27262182, 0.99860779, 0.99926505, 0.49321998],\
+[	-6.27307772, -0.00045567, 0.00027917, 7.27262205, 0.99860800, 0.99926516, 0.49322003],\
+[	-6.27307788, -0.00045560, 0.00027913, 7.27262228, 0.99860820, 0.99926526, 0.49321994],\
+[	-6.27307804, -0.00045554, 0.00027909, 7.27262251, 0.99860841, 0.99926537, 0.49322002],\
+[	-6.27307820, -0.00045547, 0.00027905, 7.27262273, 0.99860861, 0.99926548, 0.49321999],\
+[	-6.27307836, -0.00045540, 0.00027901, 7.27262296, 0.99860882, 0.99926559, 0.49322005],\
+[	-6.27307852, -0.00045534, 0.00027897, 7.27262319, 0.99860902, 0.99926570, 0.49322007],\
+[	-6.27307868, -0.00045527, 0.00027893, 7.27262342, 0.99860923, 0.99926580, 0.49322002],\
+[	-6.27307884, -0.00045520, 0.00027889, 7.27262364, 0.99860943, 0.99926591, 0.49322013],\
+[	-6.27307900, -0.00045514, 0.00027884, 7.27262387, 0.99860964, 0.99926602, 0.49322009],\
+[	-6.27307916, -0.00045507, 0.00027880, 7.27262410, 0.99860984, 0.99926613, 0.49322010],\
+[	-6.27307932, -0.00045500, 0.00027876, 7.27262432, 0.99861004, 0.99926624, 0.49322020],\
+[	-6.27307949, -0.00045493, 0.00027872, 7.27262455, 0.99861025, 0.99926634, 0.49322020],\
+[	-6.27307964, -0.00045487, 0.00027868, 7.27262478, 0.99861045, 0.99926645, 0.49322021],\
+[	-6.27307980, -0.00045480, 0.00027864, 7.27262500, 0.99861066, 0.99926656, 0.49322031],\
+[	-6.27307996, -0.00045473, 0.00027860, 7.27262523, 0.99861086, 0.99926667, 0.49322031],\
+[	-6.27308012, -0.00045467, 0.00027856, 7.27262546, 0.99861107, 0.99926677, 0.49322033],\
+[	-6.27308028, -0.00045460, 0.00027852, 7.27262568, 0.99861127, 0.99926688, 0.49322029],\
+[	-6.27308044, -0.00045453, 0.00027848, 7.27262591, 0.99861147, 0.99926699, 0.49322034],\
+[	-6.27308060, -0.00045447, 0.00027844, 7.27262614, 0.99861168, 0.99926710, 0.49322033],\
+[	-6.27308076, -0.00045440, 0.00027839, 7.27262636, 0.99861188, 0.99926721, 0.49322036],\
+[	-6.27308092, -0.00045433, 0.00027835, 7.27262659, 0.99861209, 0.99926731, 0.49322047],\
+[	-6.27308108, -0.00045427, 0.00027831, 7.27262682, 0.99861229, 0.99926742, 0.49322045],\
+[	-6.27308124, -0.00045420, 0.00027827, 7.27262704, 0.99861249, 0.99926753, 0.49322049],\
+[	-6.27308140, -0.00045413, 0.00027823, 7.27262727, 0.99861270, 0.99926764, 0.49322055],\
+[	-6.27308156, -0.00045407, 0.00027819, 7.27262749, 0.99861290, 0.99926774, 0.49322054],\
+[	-6.27308172, -0.00045400, 0.00027815, 7.27262772, 0.99861310, 0.99926785, 0.49322056],\
+[	-6.27308188, -0.00045393, 0.00027811, 7.27262795, 0.99861331, 0.99926796, 0.49322059],\
+[	-6.27308204, -0.00045387, 0.00027807, 7.27262817, 0.99861351, 0.99926807, 0.49322050],\
+[	-6.27308220, -0.00045380, 0.00027803, 7.27262840, 0.99861371, 0.99926817, 0.49322063],\
+[	-6.27308236, -0.00045373, 0.00027799, 7.27262862, 0.99861392, 0.99926828, 0.49322066],\
+[	-6.27308252, -0.00045367, 0.00027795, 7.27262885, 0.99861412, 0.99926839, 0.49322063],\
+[	-6.27308268, -0.00045360, 0.00027790, 7.27262907, 0.99861432, 0.99926849, 0.49322070],\
+[	-6.27308284, -0.00045353, 0.00027786, 7.27262930, 0.99861453, 0.99926860, 0.49322066],\
+[	-6.27308299, -0.00045347, 0.00027782, 7.27262953, 0.99861473, 0.99926871, 0.49322073],\
+[	-6.27308315, -0.00045340, 0.00027778, 7.27262975, 0.99861493, 0.99926882, 0.49322074],\
+[	-6.27308331, -0.00045334, 0.00027774, 7.27262998, 0.99861514, 0.99926892, 0.49322073],\
+[	-6.27308347, -0.00045327, 0.00027770, 7.27263020, 0.99861534, 0.99926903, 0.49322080],\
+[	-6.27308363, -0.00045320, 0.00027766, 7.27263043, 0.99861554, 0.99926914, 0.49322087],\
+[	-6.27308379, -0.00045314, 0.00027762, 7.27263065, 0.99861574, 0.99926924, 0.49322079],\
+[	-6.27308395, -0.00045307, 0.00027758, 7.27263088, 0.99861595, 0.99926935, 0.49322088],\
+[	-6.27308411, -0.00045300, 0.00027754, 7.27263110, 0.99861615, 0.99926946, 0.49322089],\
+[	-6.27308426, -0.00045294, 0.00027750, 7.27263133, 0.99861635, 0.99926956, 0.49322091],\
+[	-6.27308442, -0.00045287, 0.00027746, 7.27263155, 0.99861655, 0.99926967, 0.49322099],\
+[	-6.27308458, -0.00045281, 0.00027742, 7.27263178, 0.99861676, 0.99926978, 0.49322093],\
+[	-6.27308474, -0.00045274, 0.00027738, 7.27263200, 0.99861696, 0.99926989, 0.49322094],\
+[	-6.27308490, -0.00045267, 0.00027734, 7.27263223, 0.99861716, 0.99926999, 0.49322104],\
+[	-6.27308506, -0.00045261, 0.00027729, 7.27263245, 0.99861736, 0.99927010, 0.49322101],\
+[	-6.27308522, -0.00045254, 0.00027725, 7.27263268, 0.99861757, 0.99927021, 0.49322100],\
+[	-6.27308537, -0.00045247, 0.00027721, 7.27263290, 0.99861777, 0.99927031, 0.49322109],\
+[	-6.27308553, -0.00045241, 0.00027717, 7.27263312, 0.99861797, 0.99927042, 0.49322112],\
+[	-6.27308569, -0.00045234, 0.00027713, 7.27263335, 0.99861817, 0.99927053, 0.49322118],\
+[	-6.27308585, -0.00045228, 0.00027709, 7.27263357, 0.99861837, 0.99927063, 0.49322108],\
+[	-6.27308601, -0.00045221, 0.00027705, 7.27263380, 0.99861858, 0.99927074, 0.49322119],\
+[	-6.27308616, -0.00045214, 0.00027701, 7.27263402, 0.99861878, 0.99927085, 0.49322124],\
+[	-6.27308632, -0.00045208, 0.00027697, 7.27263424, 0.99861898, 0.99927095, 0.49322120],\
+[	-6.27308648, -0.00045201, 0.00027693, 7.27263447, 0.99861918, 0.99927106, 0.49322125],\
+[	-6.27308664, -0.00045195, 0.00027689, 7.27263469, 0.99861938, 0.99927116, 0.49322131],\
+[	-6.27308680, -0.00045188, 0.00027685, 7.27263492, 0.99861959, 0.99927127, 0.49322139],\
+[	-6.27308695, -0.00045181, 0.00027681, 7.27263514, 0.99861979, 0.99927138, 0.49322128],\
+[	-6.27308711, -0.00045175, 0.00027677, 7.27263536, 0.99861999, 0.99927148, 0.49322133],\
+[	-6.27308727, -0.00045168, 0.00027673, 7.27263559, 0.99862019, 0.99927159, 0.49322134],\
+[	-6.27308743, -0.00045162, 0.00027669, 7.27263581, 0.99862039, 0.99927170, 0.49322141],\
+[	-6.27308759, -0.00045155, 0.00027665, 7.27263604, 0.99862059, 0.99927180, 0.49322137],\
+[	-6.27308774, -0.00045148, 0.00027661, 7.27263626, 0.99862079, 0.99927191, 0.49322148],\
+[	-6.27308790, -0.00045142, 0.00027657, 7.27263648, 0.99862099, 0.99927202, 0.49322145],\
+[	-6.27308806, -0.00045135, 0.00027653, 7.27263671, 0.99862120, 0.99927212, 0.49322138],\
+[	-6.27308822, -0.00045129, 0.00027649, 7.27263693, 0.99862140, 0.99927223, 0.49322155],\
+[	-6.27308837, -0.00045122, 0.00027645, 7.27263715, 0.99862160, 0.99927233, 0.49322147],\
+[	-6.27308853, -0.00045116, 0.00027641, 7.27263737, 0.99862180, 0.99927244, 0.49322164],\
+[	-6.27308869, -0.00045109, 0.00027636, 7.27263760, 0.99862200, 0.99927255, 0.49322155],\
+[	-6.27308884, -0.00045102, 0.00027632, 7.27263782, 0.99862220, 0.99927265, 0.49322156],\
+[	-6.27308900, -0.00045096, 0.00027628, 7.27263804, 0.99862240, 0.99927276, 0.49322154],\
+[	-6.27308916, -0.00045089, 0.00027624, 7.27263827, 0.99862260, 0.99927286, 0.49322167],\
+[	-6.27308932, -0.00045083, 0.00027620, 7.27263849, 0.99862280, 0.99927297, 0.49322165],\
+[	-6.27308947, -0.00045076, 0.00027616, 7.27263871, 0.99862300, 0.99927308, 0.49322177],\
+[	-6.27308963, -0.00045070, 0.00027612, 7.27263894, 0.99862320, 0.99927318, 0.49322172],\
+[	-6.27308979, -0.00045063, 0.00027608, 7.27263916, 0.99862340, 0.99927329, 0.49322177],\
+[	-6.27308994, -0.00045056, 0.00027604, 7.27263938, 0.99862360, 0.99927339, 0.49322171],\
+[	-6.27309010, -0.00045050, 0.00027600, 7.27263960, 0.99862381, 0.99927350, 0.49322172],\
+[	-6.27309026, -0.00045043, 0.00027596, 7.27263983, 0.99862401, 0.99927360, 0.49322182],\
+[	-6.27309042, -0.00045037, 0.00027592, 7.27264005, 0.99862421, 0.99927371, 0.49322183],\
+[	-6.27309057, -0.00045030, 0.00027588, 7.27264027, 0.99862441, 0.99927382, 0.49322187],\
+[	-6.27309073, -0.00045024, 0.00027584, 7.27264049, 0.99862461, 0.99927392, 0.49322184],\
+[	-6.27309089, -0.00045017, 0.00027580, 7.27264071, 0.99862481, 0.99927403, 0.49322189],\
+[	-6.27309104, -0.00045011, 0.00027576, 7.27264094, 0.99862501, 0.99927413, 0.49322190],\
+[	-6.27309120, -0.00045004, 0.00027572, 7.27264116, 0.99862521, 0.99927424, 0.49322188],\
+[	-6.27309136, -0.00044997, 0.00027568, 7.27264138, 0.99862541, 0.99927434, 0.49322197],\
+[	-6.27309151, -0.00044991, 0.00027564, 7.27264160, 0.99862561, 0.99927445, 0.49322195],\
+[	-6.27309167, -0.00044984, 0.00027560, 7.27264182, 0.99862581, 0.99927455, 0.49322198],\
+[	-6.27309183, -0.00044978, 0.00027556, 7.27264205, 0.99862601, 0.99927466, 0.49322195],\
+[	-6.27309198, -0.00044971, 0.00027552, 7.27264227, 0.99862621, 0.99927477, 0.49322211],\
+[	-6.27309214, -0.00044965, 0.00027548, 7.27264249, 0.99862641, 0.99927487, 0.49322215],\
+[	-6.27309229, -0.00044958, 0.00027544, 7.27264271, 0.99862660, 0.99927498, 0.49322209],\
+[	-6.27309245, -0.00044952, 0.00027540, 7.27264293, 0.99862680, 0.99927508, 0.49322211],\
+[	-6.27309261, -0.00044945, 0.00027536, 7.27264315, 0.99862700, 0.99927519, 0.49322213],\
+[	-6.27309276, -0.00044939, 0.00027532, 7.27264338, 0.99862720, 0.99927529, 0.49322220],\
+[	-6.27309292, -0.00044932, 0.00027528, 7.27264360, 0.99862740, 0.99927540, 0.49322206],\
+[	-6.27309307, -0.00044926, 0.00027524, 7.27264382, 0.99862760, 0.99927550, 0.49322222],\
+[	-6.27309323, -0.00044919, 0.00027520, 7.27264404, 0.99862780, 0.99927561, 0.49322230],\
+[	-6.27309339, -0.00044913, 0.00027516, 7.27264426, 0.99862800, 0.99927571, 0.49322233],\
+[	-6.27309354, -0.00044906, 0.00027512, 7.27264448, 0.99862820, 0.99927582, 0.49322226],\
+[	-6.27309370, -0.00044900, 0.00027508, 7.27264470, 0.99862840, 0.99927592, 0.49322237],\
+[	-6.27309385, -0.00044893, 0.00027504, 7.27264492, 0.99862860, 0.99927603, 0.49322238],\
+[	-6.27309401, -0.00044887, 0.00027500, 7.27264514, 0.99862880, 0.99927613, 0.49322229],\
+[	-6.27309417, -0.00044880, 0.00027496, 7.27264537, 0.99862899, 0.99927624, 0.49322245],\
+[	-6.27309432, -0.00044874, 0.00027492, 7.27264559, 0.99862919, 0.99927634, 0.49322245],\
+[	-6.27309448, -0.00044867, 0.00027488, 7.27264581, 0.99862939, 0.99927645, 0.49322246],\
+[	-6.27309463, -0.00044861, 0.00027484, 7.27264603, 0.99862959, 0.99927655, 0.49322247],\
+[	-6.27309479, -0.00044854, 0.00027480, 7.27264625, 0.99862979, 0.99927666, 0.49322254],\
+[	-6.27309494, -0.00044848, 0.00027476, 7.27264647, 0.99862999, 0.99927676, 0.49322253],\
+[	-6.27309510, -0.00044841, 0.00027472, 7.27264669, 0.99863019, 0.99927687, 0.49322258],\
+[	-6.27309526, -0.00044835, 0.00027468, 7.27264691, 0.99863039, 0.99927697, 0.49322250],\
+[	-6.27309541, -0.00044828, 0.00027464, 7.27264713, 0.99863058, 0.99927708, 0.49322253],\
+[	-6.27309557, -0.00044822, 0.00027460, 7.27264735, 0.99863078, 0.99927718, 0.49322260],\
+[	-6.27309572, -0.00044815, 0.00027456, 7.27264757, 0.99863098, 0.99927729, 0.49322265],\
+[	-6.27309588, -0.00044809, 0.00027452, 7.27264779, 0.99863118, 0.99927739, 0.49322261],\
+[	-6.27309603, -0.00044802, 0.00027448, 7.27264801, 0.99863138, 0.99927750, 0.49322265],\
+[	-6.27309619, -0.00044796, 0.00027444, 7.27264823, 0.99863158, 0.99927760, 0.49322274],\
+[	-6.27309634, -0.00044789, 0.00027440, 7.27264845, 0.99863177, 0.99927770, 0.49322271],\
+[	-6.27309650, -0.00044783, 0.00027436, 7.27264867, 0.99863197, 0.99927781, 0.49322271],\
+[	-6.27309665, -0.00044776, 0.00027432, 7.27264889, 0.99863217, 0.99927791, 0.49322277],\
+[	-6.27309681, -0.00044770, 0.00027429, 7.27264911, 0.99863237, 0.99927802, 0.49322282],\
+[	-6.27309696, -0.00044763, 0.00027425, 7.27264933, 0.99863256, 0.99927812, 0.49322277],\
+[	-6.27309712, -0.00044757, 0.00027421, 7.27264955, 0.99863276, 0.99927823, 0.49322279],\
+[	-6.27309727, -0.00044750, 0.00027417, 7.27264977, 0.99863296, 0.99927833, 0.49322290],\
+[	-6.27309743, -0.00044744, 0.00027413, 7.27264999, 0.99863316, 0.99927844, 0.49322286],\
+[	-6.27309758, -0.00044737, 0.00027409, 7.27265021, 0.99863336, 0.99927854, 0.49322289],\
+[	-6.27309774, -0.00044731, 0.00027405, 7.27265043, 0.99863355, 0.99927864, 0.49322292],\
+[	-6.27309789, -0.00044724, 0.00027401, 7.27265065, 0.99863375, 0.99927875, 0.49322303],\
+[	-6.27309805, -0.00044718, 0.00027397, 7.27265087, 0.99863395, 0.99927885, 0.49322297],\
+[	-6.27309820, -0.00044712, 0.00027393, 7.27265108, 0.99863415, 0.99927896, 0.49322299],\
+[	-6.27309835, -0.00044705, 0.00027389, 7.27265130, 0.99863434, 0.99927906, 0.49322300],\
+[	-6.27309851, -0.00044699, 0.00027385, 7.27265152, 0.99863454, 0.99927916, 0.49322302],\
+[	-6.27309866, -0.00044692, 0.00027381, 7.27265174, 0.99863474, 0.99927927, 0.49322302],\
+[	-6.27309882, -0.00044686, 0.00027377, 7.27265196, 0.99863493, 0.99927937, 0.49322309],\
+[	-6.27309897, -0.00044679, 0.00027373, 7.27265218, 0.99863513, 0.99927948, 0.49322304],\
+[	-6.27309913, -0.00044673, 0.00027369, 7.27265240, 0.99863533, 0.99927958, 0.49322317],\
+[	-6.27309928, -0.00044666, 0.00027365, 7.27265262, 0.99863553, 0.99927968, 0.49322317],\
+[	-6.27309944, -0.00044660, 0.00027361, 7.27265284, 0.99863572, 0.99927979, 0.49322320],\
+[	-6.27309959, -0.00044653, 0.00027357, 7.27265305, 0.99863592, 0.99927989, 0.49322325],\
+[	-6.27309974, -0.00044647, 0.00027353, 7.27265327, 0.99863612, 0.99928000, 0.49322322],\
+[	-6.27309990, -0.00044641, 0.00027349, 7.27265349, 0.99863631, 0.99928010, 0.49322331],\
+[	-6.27310005, -0.00044634, 0.00027345, 7.27265371, 0.99863651, 0.99928020, 0.49322327],\
+[	-6.27310021, -0.00044628, 0.00027341, 7.27265393, 0.99863671, 0.99928031, 0.49322319],\
+[	-6.27310036, -0.00044621, 0.00027338, 7.27265415, 0.99863690, 0.99928041, 0.49322336],\
+[	-6.27310051, -0.00044615, 0.00027334, 7.27265436, 0.99863710, 0.99928052, 0.49322341],\
+[	-6.27310067, -0.00044608, 0.00027330, 7.27265458, 0.99863730, 0.99928062, 0.49322335],\
+[	-6.27310082, -0.00044602, 0.00027326, 7.27265480, 0.99863749, 0.99928072, 0.49322336],\
+[	-6.27310097, -0.00044596, 0.00027322, 7.27265502, 0.99863769, 0.99928083, 0.49322343],\
+[	-6.27310113, -0.00044589, 0.00027318, 7.27265524, 0.99863789, 0.99928093, 0.49322345],\
+[	-6.27310128, -0.00044583, 0.00027314, 7.27265546, 0.99863808, 0.99928103, 0.49322341],\
+[	-6.27310144, -0.00044576, 0.00027310, 7.27265567, 0.99863828, 0.99928114, 0.49322343],\
+[	-6.27310159, -0.00044570, 0.00027306, 7.27265589, 0.99863847, 0.99928124, 0.49322353],\
+[	-6.27310174, -0.00044563, 0.00027302, 7.27265611, 0.99863867, 0.99928134, 0.49322355],\
+[	-6.27310190, -0.00044557, 0.00027298, 7.27265633, 0.99863887, 0.99928145, 0.49322359],\
+[	-6.27310205, -0.00044551, 0.00027294, 7.27265654, 0.99863906, 0.99928155, 0.49322357],\
+[	-6.27310220, -0.00044544, 0.00027290, 7.27265676, 0.99863926, 0.99928165, 0.49322365],\
+[	-6.27310236, -0.00044538, 0.00027286, 7.27265698, 0.99863945, 0.99928176, 0.49322365],\
+[	-6.27310251, -0.00044531, 0.00027282, 7.27265720, 0.99863965, 0.99928186, 0.49322366],\
+[	-6.27310266, -0.00044525, 0.00027279, 7.27265741, 0.99863984, 0.99928196, 0.49322350],\
+[	-6.27310282, -0.00044519, 0.00027275, 7.27265763, 0.99864004, 0.99928207, 0.49322363],\
+[	-6.27310297, -0.00044512, 0.00027271, 7.27265785, 0.99864024, 0.99928217, 0.49322376],\
+[	-6.27310312, -0.00044506, 0.00027267, 7.27265807, 0.99864043, 0.99928227, 0.49322376],\
+[	-6.27310328, -0.00044499, 0.00027263, 7.27265828, 0.99864063, 0.99928238, 0.49322386],\
+[	-6.27310343, -0.00044493, 0.00027259, 7.27265850, 0.99864082, 0.99928248, 0.49322387],\
+[	-6.27310358, -0.00044487, 0.00027255, 7.27265872, 0.99864102, 0.99928258, 0.49322377],\
+[	-6.27310374, -0.00044480, 0.00027251, 7.27265893, 0.99864121, 0.99928269, 0.49322371],\
+[	-6.27310389, -0.00044474, 0.00027247, 7.27265915, 0.99864141, 0.99928279, 0.49322385],\
+[	-6.27310404, -0.00044467, 0.00027243, 7.27265937, 0.99864160, 0.99928289, 0.49322391],\
+[	-6.27310419, -0.00044461, 0.00027239, 7.27265958, 0.99864180, 0.99928300, 0.49322388],\
+[	-6.27310435, -0.00044455, 0.00027235, 7.27265980, 0.99864199, 0.99928310, 0.49322387],\
+[	-6.27310450, -0.00044448, 0.00027231, 7.27266002, 0.99864219, 0.99928320, 0.49322394],\
+[	-6.27310465, -0.00044442, 0.00027228, 7.27266023, 0.99864238, 0.99928330, 0.49322403],\
+[	-6.27310481, -0.00044436, 0.00027224, 7.27266045, 0.99864258, 0.99928341, 0.49322393],\
+[	-6.27310496, -0.00044429, 0.00027220, 7.27266067, 0.99864277, 0.99928351, 0.49322396],\
+[	-6.27310511, -0.00044423, 0.00027216, 7.27266088, 0.99864297, 0.99928361, 0.49322397],\
+[	-6.27310526, -0.00044416, 0.00027212, 7.27266110, 0.99864316, 0.99928372, 0.49322408],\
+[	-6.27310542, -0.00044410, 0.00027208, 7.27266132, 0.99864336, 0.99928382, 0.49322399],\
+[	-6.27310557, -0.00044404, 0.00027204, 7.27266153, 0.99864355, 0.99928392, 0.49322405],\
+[	-6.27310572, -0.00044397, 0.00027200, 7.27266175, 0.99864375, 0.99928402, 0.49322411],\
+[	-6.27310587, -0.00044391, 0.00027196, 7.27266196, 0.99864394, 0.99928413, 0.49322415],\
+[	-6.27310603, -0.00044385, 0.00027192, 7.27266218, 0.99864414, 0.99928423, 0.49322414],\
+[	-6.27310618, -0.00044378, 0.00027189, 7.27266240, 0.99864433, 0.99928433, 0.49322429],\
+[	-6.27310633, -0.00044372, 0.00027185, 7.27266261, 0.99864453, 0.99928444, 0.49322422],\
+[	-6.27310648, -0.00044365, 0.00027181, 7.27266283, 0.99864472, 0.99928454, 0.49322422],\
+[	-6.27310663, -0.00044359, 0.00027177, 7.27266304, 0.99864491, 0.99928464, 0.49322418],\
+[	-6.27310679, -0.00044353, 0.00027173, 7.27266326, 0.99864511, 0.99928474, 0.49322426],\
+[	-6.27310694, -0.00044346, 0.00027169, 7.27266347, 0.99864530, 0.99928485, 0.49322432],\
+[	-6.27310709, -0.00044340, 0.00027165, 7.27266369, 0.99864550, 0.99928495, 0.49322429],\
+[	-6.27310724, -0.00044334, 0.00027161, 7.27266391, 0.99864569, 0.99928505, 0.49322440],\
+[	-6.27310739, -0.00044327, 0.00027157, 7.27266412, 0.99864589, 0.99928515, 0.49322431],\
+[	-6.27310755, -0.00044321, 0.00027153, 7.27266434, 0.99864608, 0.99928526, 0.49322435],\
+[	-6.27310770, -0.00044315, 0.00027150, 7.27266455, 0.99864627, 0.99928536, 0.49322446],\
+[	-6.27310785, -0.00044308, 0.00027146, 7.27266477, 0.99864647, 0.99928546, 0.49322440],\
+[	-6.27310800, -0.00044302, 0.00027142, 7.27266498, 0.99864666, 0.99928556, 0.49322441],\
+[	-6.27310815, -0.00044296, 0.00027138, 7.27266520, 0.99864685, 0.99928566, 0.49322447],\
+[	-6.27310831, -0.00044289, 0.00027134, 7.27266541, 0.99864705, 0.99928577, 0.49322449],\
+[	-6.27310846, -0.00044283, 0.00027130, 7.27266563, 0.99864724, 0.99928587, 0.49322455],\
+[	-6.27310861, -0.00044277, 0.00027126, 7.27266584, 0.99864744, 0.99928597, 0.49322455],\
+[	-6.27310876, -0.00044270, 0.00027122, 7.27266606, 0.99864763, 0.99928607, 0.49322448],\
+[	-6.27310891, -0.00044264, 0.00027119, 7.27266627, 0.99864782, 0.99928618, 0.49322460],\
+[	-6.27310906, -0.00044258, 0.00027115, 7.27266649, 0.99864802, 0.99928628, 0.49322463],\
+[	-6.27310921, -0.00044251, 0.00027111, 7.27266670, 0.99864821, 0.99928638, 0.49322466],\
+[	-6.27310937, -0.00044245, 0.00027107, 7.27266692, 0.99864840, 0.99928648, 0.49322476],\
+[	-6.27310952, -0.00044239, 0.00027103, 7.27266713, 0.99864860, 0.99928658, 0.49322465],\
+[	-6.27310967, -0.00044232, 0.00027099, 7.27266735, 0.99864879, 0.99928669, 0.49322471],\
+[	-6.27310982, -0.00044226, 0.00027095, 7.27266756, 0.99864898, 0.99928679, 0.49322475],\
+[	-6.27310997, -0.00044220, 0.00027091, 7.27266777, 0.99864917, 0.99928689, 0.49322474],\
+[	-6.27311012, -0.00044213, 0.00027088, 7.27266799, 0.99864937, 0.99928699, 0.49322474],\
+[	-6.27311027, -0.00044207, 0.00027084, 7.27266820, 0.99864956, 0.99928709, 0.49322480],\
+[	-6.27311042, -0.00044201, 0.00027080, 7.27266842, 0.99864975, 0.99928719, 0.49322485],\
+[	-6.27311058, -0.00044194, 0.00027076, 7.27266863, 0.99864995, 0.99928730, 0.49322481],\
+[	-6.27311073, -0.00044188, 0.00027072, 7.27266884, 0.99865014, 0.99928740, 0.49322488],\
+[	-6.27311088, -0.00044182, 0.00027068, 7.27266906, 0.99865033, 0.99928750, 0.49322485],\
+[	-6.27311103, -0.00044176, 0.00027064, 7.27266927, 0.99865052, 0.99928760, 0.49322488],\
+[	-6.27311118, -0.00044169, 0.00027060, 7.27266949, 0.99865072, 0.99928770, 0.49322494],\
+[	-6.27311133, -0.00044163, 0.00027057, 7.27266970, 0.99865091, 0.99928780, 0.49322492],\
+[	-6.27311148, -0.00044157, 0.00027053, 7.27266991, 0.99865110, 0.99928791, 0.49322499],\
+[	-6.27311163, -0.00044150, 0.00027049, 7.27267013, 0.99865129, 0.99928801, 0.49322490],\
+[	-6.27311178, -0.00044144, 0.00027045, 7.27267034, 0.99865149, 0.99928811, 0.49322494],\
+[	-6.27311193, -0.00044138, 0.00027041, 7.27267056, 0.99865168, 0.99928821, 0.49322503],\
+[	-6.27311208, -0.00044131, 0.00027037, 7.27267077, 0.99865187, 0.99928831, 0.49322507],\
+[	-6.27311223, -0.00044125, 0.00027033, 7.27267098, 0.99865206, 0.99928841, 0.49322506],\
+[	-6.27311238, -0.00044119, 0.00027030, 7.27267120, 0.99865226, 0.99928852, 0.49322507],\
+[	-6.27311253, -0.00044113, 0.00027026, 7.27267141, 0.99865245, 0.99928862, 0.49322511],\
+[	-6.27311269, -0.00044106, 0.00027022, 7.27267162, 0.99865264, 0.99928872, 0.49322515],\
+[	-6.27311284, -0.00044100, 0.00027018, 7.27267184, 0.99865283, 0.99928882, 0.49322525],\
+[	-6.27311299, -0.00044094, 0.00027014, 7.27267205, 0.99865302, 0.99928892, 0.49322511],\
+[	-6.27311314, -0.00044087, 0.00027010, 7.27267226, 0.99865322, 0.99928902, 0.49322518],\
+[	-6.27311329, -0.00044081, 0.00027006, 7.27267247, 0.99865341, 0.99928912, 0.49322526],\
+[	-6.27311344, -0.00044075, 0.00027003, 7.27267269, 0.99865360, 0.99928922, 0.49322521],\
+[	-6.27311359, -0.00044069, 0.00026999, 7.27267290, 0.99865379, 0.99928933, 0.49322528],\
+[	-6.27311374, -0.00044062, 0.00026995, 7.27267311, 0.99865398, 0.99928943, 0.49322529],\
+[	-6.27311389, -0.00044056, 0.00026991, 7.27267333, 0.99865418, 0.99928953, 0.49322527],\
+[	-6.27311404, -0.00044050, 0.00026987, 7.27267354, 0.99865437, 0.99928963, 0.49322539],\
+[	-6.27311419, -0.00044044, 0.00026983, 7.27267375, 0.99865456, 0.99928973, 0.49322538],\
+[	-6.27311434, -0.00044037, 0.00026980, 7.27267396, 0.99865475, 0.99928983, 0.49322547],\
+[	-6.27311449, -0.00044031, 0.00026976, 7.27267418, 0.99865494, 0.99928993, 0.49322544],\
+[	-6.27311464, -0.00044025, 0.00026972, 7.27267439, 0.99865513, 0.99929003, 0.49322545],\
+[	-6.27311479, -0.00044018, 0.00026968, 7.27267460, 0.99865532, 0.99929013, 0.49322545],\
+[	-6.27311494, -0.00044012, 0.00026964, 7.27267481, 0.99865551, 0.99929024, 0.49322537],\
+[	-6.27311509, -0.00044006, 0.00026960, 7.27267503, 0.99865571, 0.99929034, 0.49322549],\
+[	-6.27311524, -0.00044000, 0.00026957, 7.27267524, 0.99865590, 0.99929044, 0.49322552],\
+[	-6.27311539, -0.00043993, 0.00026953, 7.27267545, 0.99865609, 0.99929054, 0.49322561],\
+[	-6.27311554, -0.00043987, 0.00026949, 7.27267566, 0.99865628, 0.99929064, 0.49322551],\
+[	-6.27311569, -0.00043981, 0.00026945, 7.27267588, 0.99865647, 0.99929074, 0.49322559],\
+[	-6.27311583, -0.00043975, 0.00026941, 7.27267609, 0.99865666, 0.99929084, 0.49322564],\
+[	-6.27311598, -0.00043968, 0.00026937, 7.27267630, 0.99865685, 0.99929094, 0.49322558],\
+[	-6.27311613, -0.00043962, 0.00026934, 7.27267651, 0.99865704, 0.99929104, 0.49322567],\
+[	-6.27311628, -0.00043956, 0.00026930, 7.27267672, 0.99865723, 0.99929114, 0.49322564],\
+[	-6.27311643, -0.00043950, 0.00026926, 7.27267693, 0.99865742, 0.99929124, 0.49322573],\
+[	-6.27311658, -0.00043944, 0.00026922, 7.27267715, 0.99865762, 0.99929134, 0.49322571],\
+[	-6.27311673, -0.00043937, 0.00026918, 7.27267736, 0.99865781, 0.99929144, 0.49322569],\
+[	-6.27311688, -0.00043931, 0.00026914, 7.27267757, 0.99865800, 0.99929155, 0.49322578],\
+[	-6.27311703, -0.00043925, 0.00026911, 7.27267778, 0.99865819, 0.99929165, 0.49322578],\
+[	-6.27311718, -0.00043919, 0.00026907, 7.27267799, 0.99865838, 0.99929175, 0.49322584],\
+[	-6.27311733, -0.00043912, 0.00026903, 7.27267820, 0.99865857, 0.99929185, 0.49322586],\
+[	-6.27311748, -0.00043906, 0.00026899, 7.27267842, 0.99865876, 0.99929195, 0.49322590],\
+[	-6.27311763, -0.00043900, 0.00026895, 7.27267863, 0.99865895, 0.99929205, 0.49322588],\
+[	-6.27311777, -0.00043894, 0.00026892, 7.27267884, 0.99865914, 0.99929215, 0.49322594],\
+[	-6.27311792, -0.00043887, 0.00026888, 7.27267905, 0.99865933, 0.99929225, 0.49322584],\
+[	-6.27311807, -0.00043881, 0.00026884, 7.27267926, 0.99865952, 0.99929235, 0.49322593],\
+[	-6.27311822, -0.00043875, 0.00026880, 7.27267947, 0.99865971, 0.99929245, 0.49322593],\
+[	-6.27311837, -0.00043869, 0.00026876, 7.27267968, 0.99865990, 0.99929255, 0.49322599],\
+[	-6.27311852, -0.00043863, 0.00026872, 7.27267989, 0.99866009, 0.99929265, 0.49322601],\
+[	-6.27311867, -0.00043856, 0.00026869, 7.27268010, 0.99866028, 0.99929275, 0.49322609],\
+[	-6.27311882, -0.00043850, 0.00026865, 7.27268032, 0.99866047, 0.99929285, 0.49322605],\
+[	-6.27311897, -0.00043844, 0.00026861, 7.27268053, 0.99866066, 0.99929295, 0.49322609],\
+[	-6.27311911, -0.00043838, 0.00026857, 7.27268074, 0.99866085, 0.99929305, 0.49322609],\
+[	-6.27311926, -0.00043832, 0.00026853, 7.27268095, 0.99866104, 0.99929315, 0.49322617],\
+[	-6.27311941, -0.00043825, 0.00026850, 7.27268116, 0.99866123, 0.99929325, 0.49322622],\
+[	-6.27311956, -0.00043819, 0.00026846, 7.27268137, 0.99866142, 0.99929335, 0.49322614],\
+[	-6.27311971, -0.00043813, 0.00026842, 7.27268158, 0.99866161, 0.99929345, 0.49322631],\
+[	-6.27311986, -0.00043807, 0.00026838, 7.27268179, 0.99866180, 0.99929355, 0.49322620],\
+[	-6.27312000, -0.00043800, 0.00026834, 7.27268200, 0.99866199, 0.99929365, 0.49322616],\
+[	-6.27312015, -0.00043794, 0.00026831, 7.27268221, 0.99866217, 0.99929375, 0.49322624],\
+[	-6.27312030, -0.00043788, 0.00026827, 7.27268242, 0.99866236, 0.99929385, 0.49322623],\
+[	-6.27312045, -0.00043782, 0.00026823, 7.27268263, 0.99866255, 0.99929395, 0.49322635],\
+[	-6.27312060, -0.00043776, 0.00026819, 7.27268284, 0.99866274, 0.99929405, 0.49322632],\
+[	-6.27312075, -0.00043770, 0.00026815, 7.27268305, 0.99866293, 0.99929415, 0.49322635],\
+[	-6.27312089, -0.00043763, 0.00026812, 7.27268326, 0.99866312, 0.99929425, 0.49322639],\
+[	-6.27312104, -0.00043757, 0.00026808, 7.27268347, 0.99866331, 0.99929435, 0.49322639],\
+[	-6.27312119, -0.00043751, 0.00026804, 7.27268368, 0.99866350, 0.99929445, 0.49322638],\
+[	-6.27312134, -0.00043745, 0.00026800, 7.27268389, 0.99866369, 0.99929455, 0.49322647],\
+[	-6.27312149, -0.00043739, 0.00026796, 7.27268410, 0.99866388, 0.99929465, 0.49322642],\
+[	-6.27312163, -0.00043732, 0.00026793, 7.27268431, 0.99866407, 0.99929475, 0.49322644],\
+[	-6.27312178, -0.00043726, 0.00026789, 7.27268452, 0.99866425, 0.99929485, 0.49322646],\
+[	-6.27312193, -0.00043720, 0.00026785, 7.27268473, 0.99866444, 0.99929495, 0.49322653],\
+[	-6.27312208, -0.00043714, 0.00026781, 7.27268494, 0.99866463, 0.99929505, 0.49322663],\
+[	-6.27312223, -0.00043708, 0.00026778, 7.27268515, 0.99866482, 0.99929515, 0.49322655],\
+[	-6.27312237, -0.00043702, 0.00026774, 7.27268536, 0.99866501, 0.99929525, 0.49322658],\
+[	-6.27312252, -0.00043695, 0.00026770, 7.27268557, 0.99866520, 0.99929535, 0.49322660],\
+[	-6.27312267, -0.00043689, 0.00026766, 7.27268578, 0.99866539, 0.99929545, 0.49322666],\
+[	-6.27312282, -0.00043683, 0.00026762, 7.27268599, 0.99866557, 0.99929555, 0.49322663],\
+[	-6.27312296, -0.00043677, 0.00026759, 7.27268619, 0.99866576, 0.99929564, 0.49322672],\
+[	-6.27312311, -0.00043671, 0.00026755, 7.27268640, 0.99866595, 0.99929574, 0.49322669],\
+[	-6.27312326, -0.00043665, 0.00026751, 7.27268661, 0.99866614, 0.99929584, 0.49322667],\
+[	-6.27312341, -0.00043658, 0.00026747, 7.27268682, 0.99866633, 0.99929594, 0.49322665],\
+[	-6.27312355, -0.00043652, 0.00026744, 7.27268703, 0.99866652, 0.99929604, 0.49322678],\
+[	-6.27312370, -0.00043646, 0.00026740, 7.27268724, 0.99866670, 0.99929614, 0.49322680],\
+[	-6.27312385, -0.00043640, 0.00026736, 7.27268745, 0.99866689, 0.99929624, 0.49322677],\
+[	-6.27312399, -0.00043634, 0.00026732, 7.27268766, 0.99866708, 0.99929634, 0.49322687],\
+[	-6.27312414, -0.00043628, 0.00026728, 7.27268787, 0.99866727, 0.99929644, 0.49322695],\
+[	-6.27312429, -0.00043622, 0.00026725, 7.27268807, 0.99866746, 0.99929654, 0.49322684],\
+[	-6.27312444, -0.00043615, 0.00026721, 7.27268828, 0.99866764, 0.99929664, 0.49322695],\
+[	-6.27312458, -0.00043609, 0.00026717, 7.27268849, 0.99866783, 0.99929674, 0.49322694],\
+[	-6.27312473, -0.00043603, 0.00026713, 7.27268870, 0.99866802, 0.99929684, 0.49322694],\
+[	-6.27312488, -0.00043597, 0.00026710, 7.27268891, 0.99866821, 0.99929693, 0.49322692],\
+[	-6.27312502, -0.00043591, 0.00026706, 7.27268912, 0.99866839, 0.99929703, 0.49322694],\
+[	-6.27312517, -0.00043585, 0.00026702, 7.27268932, 0.99866858, 0.99929713, 0.49322699],\
+[	-6.27312532, -0.00043579, 0.00026698, 7.27268953, 0.99866877, 0.99929723, 0.49322697],\
+[	-6.27312546, -0.00043572, 0.00026695, 7.27268974, 0.99866896, 0.99929733, 0.49322709],\
+[	-6.27312561, -0.00043566, 0.00026691, 7.27268995, 0.99866914, 0.99929743, 0.49322698],\
+[	-6.27312576, -0.00043560, 0.00026687, 7.27269016, 0.99866933, 0.99929753, 0.49322713],\
+[	-6.27312590, -0.00043554, 0.00026683, 7.27269037, 0.99866952, 0.99929763, 0.49322708],\
+[	-6.27312605, -0.00043548, 0.00026680, 7.27269057, 0.99866971, 0.99929773, 0.49322723],\
+[	-6.27312620, -0.00043542, 0.00026676, 7.27269078, 0.99866989, 0.99929782, 0.49322717],\
+[	-6.27312634, -0.00043536, 0.00026672, 7.27269099, 0.99867008, 0.99929792, 0.49322722],\
+[	-6.27312649, -0.00043529, 0.00026668, 7.27269120, 0.99867027, 0.99929802, 0.49322714],\
+[	-6.27312664, -0.00043523, 0.00026665, 7.27269140, 0.99867045, 0.99929812, 0.49322725],\
+[	-6.27312678, -0.00043517, 0.00026661, 7.27269161, 0.99867064, 0.99929822, 0.49322739],\
+[	-6.27312693, -0.00043511, 0.00026657, 7.27269182, 0.99867083, 0.99929832, 0.49322721],\
+[	-6.27312708, -0.00043505, 0.00026653, 7.27269203, 0.99867101, 0.99929842, 0.49322728],\
+[	-6.27312722, -0.00043499, 0.00026650, 7.27269223, 0.99867120, 0.99929852, 0.49322731],\
+[	-6.27312737, -0.00043493, 0.00026646, 7.27269244, 0.99867139, 0.99929861, 0.49322735],\
+[	-6.27312752, -0.00043487, 0.00026642, 7.27269265, 0.99867158, 0.99929871, 0.49322737],\
+[	-6.27312766, -0.00043481, 0.00026638, 7.27269286, 0.99867176, 0.99929881, 0.49322735],\
+[	-6.27312781, -0.00043474, 0.00026635, 7.27269306, 0.99867195, 0.99929891, 0.49322744],\
+[	-6.27312795, -0.00043468, 0.00026631, 7.27269327, 0.99867214, 0.99929901, 0.49322745],\
+[	-6.27312810, -0.00043462, 0.00026627, 7.27269348, 0.99867232, 0.99929911, 0.49322747],\
+[	-6.27312825, -0.00043456, 0.00026623, 7.27269368, 0.99867251, 0.99929920, 0.49322750],\
+[	-6.27312839, -0.00043450, 0.00026620, 7.27269389, 0.99867269, 0.99929930, 0.49322745],\
+[	-6.27312854, -0.00043444, 0.00026616, 7.27269410, 0.99867288, 0.99929940, 0.49322761],\
+[	-6.27312868, -0.00043438, 0.00026612, 7.27269431, 0.99867307, 0.99929950, 0.49322746],\
+[	-6.27312883, -0.00043432, 0.00026608, 7.27269451, 0.99867325, 0.99929960, 0.49322757],\
+[	-6.27312898, -0.00043426, 0.00026605, 7.27269472, 0.99867344, 0.99929970, 0.49322765],\
+[	-6.27312912, -0.00043420, 0.00026601, 7.27269493, 0.99867363, 0.99929979, 0.49322763],\
+[	-6.27312927, -0.00043413, 0.00026597, 7.27269513, 0.99867381, 0.99929989, 0.49322751],\
+[	-6.27312941, -0.00043407, 0.00026593, 7.27269534, 0.99867400, 0.99929999, 0.49322758],\
+[	-6.27312956, -0.00043401, 0.00026590, 7.27269555, 0.99867418, 0.99930009, 0.49322771],\
+[	-6.27312970, -0.00043395, 0.00026586, 7.27269575, 0.99867437, 0.99930019, 0.49322770],\
+[	-6.27312985, -0.00043389, 0.00026582, 7.27269596, 0.99867456, 0.99930029, 0.49322772],\
+[	-6.27313000, -0.00043383, 0.00026579, 7.27269616, 0.99867474, 0.99930038, 0.49322775],\
+[	-6.27313014, -0.00043377, 0.00026575, 7.27269637, 0.99867493, 0.99930048, 0.49322776],\
+[	-6.27313029, -0.00043371, 0.00026571, 7.27269658, 0.99867511, 0.99930058, 0.49322779],\
+[	-6.27313043, -0.00043365, 0.00026567, 7.27269678, 0.99867530, 0.99930068, 0.49322775],\
+[	-6.27313058, -0.00043359, 0.00026564, 7.27269699, 0.99867548, 0.99930078, 0.49322782],\
+[	-6.27313072, -0.00043353, 0.00026560, 7.27269720, 0.99867567, 0.99930087, 0.49322777],\
+[	-6.27313087, -0.00043347, 0.00026556, 7.27269740, 0.99867586, 0.99930097, 0.49322785],\
+[	-6.27313101, -0.00043341, 0.00026552, 7.27269761, 0.99867604, 0.99930107, 0.49322785],\
+[	-6.27313116, -0.00043335, 0.00026549, 7.27269781, 0.99867623, 0.99930117, 0.49322792],\
+[	-6.27313130, -0.00043328, 0.00026545, 7.27269802, 0.99867641, 0.99930127, 0.49322802],\
+[	-6.27313145, -0.00043322, 0.00026541, 7.27269823, 0.99867660, 0.99930136, 0.49322800],\
+[	-6.27313159, -0.00043316, 0.00026538, 7.27269843, 0.99867678, 0.99930146, 0.49322801],\
+[	-6.27313174, -0.00043310, 0.00026534, 7.27269864, 0.99867697, 0.99930156, 0.49322793],\
+[	-6.27313188, -0.00043304, 0.00026530, 7.27269884, 0.99867715, 0.99930166, 0.49322797],\
+[	-6.27313203, -0.00043298, 0.00026526, 7.27269905, 0.99867734, 0.99930175, 0.49322808],\
+[	-6.27313217, -0.00043292, 0.00026523, 7.27269925, 0.99867752, 0.99930185, 0.49322805],\
+[	-6.27313232, -0.00043286, 0.00026519, 7.27269946, 0.99867771, 0.99930195, 0.49322811],\
+[	-6.27313246, -0.00043280, 0.00026515, 7.27269966, 0.99867789, 0.99930205, 0.49322809],\
+[	-6.27313261, -0.00043274, 0.00026512, 7.27269987, 0.99867808, 0.99930214, 0.49322806],\
+[	-6.27313275, -0.00043268, 0.00026508, 7.27270007, 0.99867826, 0.99930224, 0.49322819],\
+[	-6.27313290, -0.00043262, 0.00026504, 7.27270028, 0.99867845, 0.99930234, 0.49322820],\
+[	-6.27313304, -0.00043256, 0.00026501, 7.27270049, 0.99867863, 0.99930244, 0.49322821],\
+[	-6.27313319, -0.00043250, 0.00026497, 7.27270069, 0.99867882, 0.99930253, 0.49322826],\
+[	-6.27313333, -0.00043244, 0.00026493, 7.27270090, 0.99867900, 0.99930263, 0.49322825],\
+[	-6.27313348, -0.00043238, 0.00026489, 7.27270110, 0.99867919, 0.99930273, 0.49322828],\
+[	-6.27313362, -0.00043232, 0.00026486, 7.27270131, 0.99867937, 0.99930283, 0.49322824],\
+[	-6.27313377, -0.00043226, 0.00026482, 7.27270151, 0.99867955, 0.99930292, 0.49322829],\
+[	-6.27313391, -0.00043220, 0.00026478, 7.27270171, 0.99867974, 0.99930302, 0.49322833],\
+[	-6.27313405, -0.00043214, 0.00026475, 7.27270192, 0.99867992, 0.99930312, 0.49322832],\
+[	-6.27313420, -0.00043207, 0.00026471, 7.27270212, 0.99868011, 0.99930322, 0.49322832],\
+[	-6.27313434, -0.00043201, 0.00026467, 7.27270233, 0.99868029, 0.99930331, 0.49322841],\
+[	-6.27313449, -0.00043195, 0.00026464, 7.27270253, 0.99868048, 0.99930341, 0.49322842],\
+[	-6.27313463, -0.00043189, 0.00026460, 7.27270274, 0.99868066, 0.99930351, 0.49322850],\
+[	-6.27313478, -0.00043183, 0.00026456, 7.27270294, 0.99868084, 0.99930360, 0.49322849],\
+[	-6.27313492, -0.00043177, 0.00026452, 7.27270315, 0.99868103, 0.99930370, 0.49322832],\
+[	-6.27313506, -0.00043171, 0.00026449, 7.27270335, 0.99868121, 0.99930380, 0.49322850],\
+[	-6.27313521, -0.00043165, 0.00026445, 7.27270356, 0.99868140, 0.99930390, 0.49322849],\
+[	-6.27313535, -0.00043159, 0.00026441, 7.27270376, 0.99868158, 0.99930399, 0.49322851],\
+[	-6.27313550, -0.00043153, 0.00026438, 7.27270396, 0.99868176, 0.99930409, 0.49322842],\
+[	-6.27313564, -0.00043147, 0.00026434, 7.27270417, 0.99868195, 0.99930419, 0.49322856],\
+[	-6.27313578, -0.00043141, 0.00026430, 7.27270437, 0.99868213, 0.99930428, 0.49322852],\
+[	-6.27313593, -0.00043135, 0.00026427, 7.27270458, 0.99868232, 0.99930438, 0.49322857],\
+[	-6.27313607, -0.00043129, 0.00026423, 7.27270478, 0.99868250, 0.99930448, 0.49322857],\
+[	-6.27313622, -0.00043123, 0.00026419, 7.27270498, 0.99868268, 0.99930458, 0.49322862],\
+[	-6.27313636, -0.00043117, 0.00026416, 7.27270519, 0.99868287, 0.99930467, 0.49322867],\
+[	-6.27313650, -0.00043111, 0.00026412, 7.27270539, 0.99868305, 0.99930477, 0.49322876],\
+[	-6.27313665, -0.00043105, 0.00026408, 7.27270560, 0.99868323, 0.99930487, 0.49322877],\
+[	-6.27313679, -0.00043099, 0.00026405, 7.27270580, 0.99868342, 0.99930496, 0.49322873],\
+[	-6.27313693, -0.00043093, 0.00026401, 7.27270600, 0.99868360, 0.99930506, 0.49322870],\
+[	-6.27313708, -0.00043087, 0.00026397, 7.27270621, 0.99868378, 0.99930516, 0.49322877],\
+[	-6.27313722, -0.00043081, 0.00026394, 7.27270641, 0.99868397, 0.99930525, 0.49322879],\
+[	-6.27313737, -0.00043075, 0.00026390, 7.27270661, 0.99868415, 0.99930535, 0.49322891],\
+[	-6.27313751, -0.00043069, 0.00026386, 7.27270682, 0.99868433, 0.99930545, 0.49322887],\
+[	-6.27313765, -0.00043063, 0.00026382, 7.27270702, 0.99868452, 0.99930554, 0.49322881],\
+[	-6.27313780, -0.00043057, 0.00026379, 7.27270722, 0.99868470, 0.99930564, 0.49322892],\
+[	-6.27313794, -0.00043051, 0.00026375, 7.27270743, 0.99868488, 0.99930574, 0.49322891],\
+[	-6.27313808, -0.00043045, 0.00026371, 7.27270763, 0.99868507, 0.99930583, 0.49322891],\
+[	-6.27313823, -0.00043039, 0.00026368, 7.27270783, 0.99868525, 0.99930593, 0.49322893],\
+[	-6.27313837, -0.00043033, 0.00026364, 7.27270804, 0.99868543, 0.99930603, 0.49322886],\
+[	-6.27313851, -0.00043027, 0.00026360, 7.27270824, 0.99868561, 0.99930612, 0.49322902],\
+[	-6.27313865, -0.00043021, 0.00026357, 7.27270844, 0.99868580, 0.99930622, 0.49322900],\
+[	-6.27313880, -0.00043015, 0.00026353, 7.27270864, 0.99868598, 0.99930632, 0.49322904],\
+[	-6.27313894, -0.00043009, 0.00026349, 7.27270885, 0.99868616, 0.99930641, 0.49322903],\
+[	-6.27313908, -0.00043003, 0.00026346, 7.27270905, 0.99868634, 0.99930651, 0.49322900],\
+[	-6.27313923, -0.00042997, 0.00026342, 7.27270925, 0.99868653, 0.99930660, 0.49322904],\
+[	-6.27313937, -0.00042991, 0.00026338, 7.27270946, 0.99868671, 0.99930670, 0.49322912],\
+[	-6.27313951, -0.00042985, 0.00026335, 7.27270966, 0.99868689, 0.99930680, 0.49322917],\
+[	-6.27313966, -0.00042980, 0.00026331, 7.27270986, 0.99868707, 0.99930689, 0.49322903],\
+[	-6.27313980, -0.00042974, 0.00026328, 7.27271006, 0.99868726, 0.99930699, 0.49322919],\
+[	-6.27313994, -0.00042968, 0.00026324, 7.27271027, 0.99868744, 0.99930709, 0.49322915],\
+[	-6.27314008, -0.00042962, 0.00026320, 7.27271047, 0.99868762, 0.99930718, 0.49322921],\
+[	-6.27314023, -0.00042956, 0.00026317, 7.27271067, 0.99868780, 0.99930728, 0.49322918],\
+[	-6.27314037, -0.00042950, 0.00026313, 7.27271087, 0.99868799, 0.99930737, 0.49322930],\
+[	-6.27314051, -0.00042944, 0.00026309, 7.27271107, 0.99868817, 0.99930747, 0.49322927],\
+[	-6.27314065, -0.00042938, 0.00026306, 7.27271128, 0.99868835, 0.99930757, 0.49322931],\
+[	-6.27314080, -0.00042932, 0.00026302, 7.27271148, 0.99868853, 0.99930766, 0.49322934],\
+[	-6.27314094, -0.00042926, 0.00026298, 7.27271168, 0.99868871, 0.99930776, 0.49322928],\
+[	-6.27314108, -0.00042920, 0.00026295, 7.27271188, 0.99868890, 0.99930785, 0.49322942],\
+[	-6.27314122, -0.00042914, 0.00026291, 7.27271208, 0.99868908, 0.99930795, 0.49322942],\
+[	-6.27314137, -0.00042908, 0.00026287, 7.27271229, 0.99868926, 0.99930805, 0.49322944],\
+[	-6.27314151, -0.00042902, 0.00026284, 7.27271249, 0.99868944, 0.99930814, 0.49322951],\
+[	-6.27314165, -0.00042896, 0.00026280, 7.27271269, 0.99868962, 0.99930824, 0.49322944],\
+[	-6.27314179, -0.00042890, 0.00026276, 7.27271289, 0.99868980, 0.99930833, 0.49322951],\
+[	-6.27314194, -0.00042884, 0.00026273, 7.27271309, 0.99868999, 0.99930843, 0.49322954],\
+[	-6.27314208, -0.00042878, 0.00026269, 7.27271329, 0.99869017, 0.99930853, 0.49322961],\
+[	-6.27314222, -0.00042872, 0.00026265, 7.27271350, 0.99869035, 0.99930862, 0.49322958],\
+[	-6.27314236, -0.00042866, 0.00026262, 7.27271370, 0.99869053, 0.99930872, 0.49322958],\
+[	-6.27314250, -0.00042861, 0.00026258, 7.27271390, 0.99869071, 0.99930881, 0.49322960],\
+[	-6.27314265, -0.00042855, 0.00026255, 7.27271410, 0.99869089, 0.99930891, 0.49322954],\
+[	-6.27314279, -0.00042849, 0.00026251, 7.27271430, 0.99869107, 0.99930900, 0.49322960],\
+[	-6.27314293, -0.00042843, 0.00026247, 7.27271450, 0.99869125, 0.99930910, 0.49322964],\
+[	-6.27314307, -0.00042837, 0.00026244, 7.27271470, 0.99869144, 0.99930920, 0.49322967],\
+[	-6.27314321, -0.00042831, 0.00026240, 7.27271491, 0.99869162, 0.99930929, 0.49322963],\
+[	-6.27314336, -0.00042825, 0.00026236, 7.27271511, 0.99869180, 0.99930939, 0.49322972],\
+[	-6.27314350, -0.00042819, 0.00026233, 7.27271531, 0.99869198, 0.99930948, 0.49322962],\
+[	-6.27314364, -0.00042813, 0.00026229, 7.27271551, 0.99869216, 0.99930958, 0.49322977],\
+[	-6.27314378, -0.00042807, 0.00026226, 7.27271571, 0.99869234, 0.99930967, 0.49322982],\
+[	-6.27314392, -0.00042801, 0.00026222, 7.27271591, 0.99869252, 0.99930977, 0.49322974],\
+[	-6.27314406, -0.00042795, 0.00026218, 7.27271611, 0.99869270, 0.99930986, 0.49322983],\
+[	-6.27314421, -0.00042789, 0.00026215, 7.27271631, 0.99869288, 0.99930996, 0.49322981],\
+[	-6.27314435, -0.00042783, 0.00026211, 7.27271651, 0.99869306, 0.99931005, 0.49322987],\
+[	-6.27314449, -0.00042778, 0.00026207, 7.27271671, 0.99869325, 0.99931015, 0.49322991],\
+[	-6.27314463, -0.00042772, 0.00026204, 7.27271691, 0.99869343, 0.99931025, 0.49322985],\
+[	-6.27314477, -0.00042766, 0.00026200, 7.27271711, 0.99869361, 0.99931034, 0.49322989],\
+[	-6.27314491, -0.00042760, 0.00026197, 7.27271731, 0.99869379, 0.99931044, 0.49322995],\
+[	-6.27314505, -0.00042754, 0.00026193, 7.27271752, 0.99869397, 0.99931053, 0.49322998],\
+[	-6.27314520, -0.00042748, 0.00026189, 7.27271772, 0.99869415, 0.99931063, 0.49322992],\
+[	-6.27314534, -0.00042742, 0.00026186, 7.27271792, 0.99869433, 0.99931072, 0.49322999],\
+[	-6.27314548, -0.00042736, 0.00026182, 7.27271812, 0.99869451, 0.99931082, 0.49323014],\
+[	-6.27314562, -0.00042730, 0.00026178, 7.27271832, 0.99869469, 0.99931091, 0.49323001],\
+[	-6.27314576, -0.00042724, 0.00026175, 7.27271852, 0.99869487, 0.99931101, 0.49323007],\
+[	-6.27314590, -0.00042719, 0.00026171, 7.27271872, 0.99869505, 0.99931110, 0.49323010],\
+[	-6.27314604, -0.00042713, 0.00026168, 7.27271892, 0.99869523, 0.99931120, 0.49323018],\
+[	-6.27314618, -0.00042707, 0.00026164, 7.27271912, 0.99869541, 0.99931129, 0.49323018],\
+[	-6.27314633, -0.00042701, 0.00026160, 7.27271932, 0.99869559, 0.99931139, 0.49323016],\
+[	-6.27314647, -0.00042695, 0.00026157, 7.27271952, 0.99869577, 0.99931148, 0.49323007],\
+[	-6.27314661, -0.00042689, 0.00026153, 7.27271972, 0.99869595, 0.99931158, 0.49323022],\
+[	-6.27314675, -0.00042683, 0.00026150, 7.27271992, 0.99869613, 0.99931167, 0.49323025],\
+[	-6.27314689, -0.00042677, 0.00026146, 7.27272012, 0.99869631, 0.99931177, 0.49323030],\
+[	-6.27314703, -0.00042671, 0.00026142, 7.27272032, 0.99869649, 0.99931186, 0.49323027],\
+[	-6.27314717, -0.00042666, 0.00026139, 7.27272051, 0.99869667, 0.99931196, 0.49323031],\
+[	-6.27314731, -0.00042660, 0.00026135, 7.27272071, 0.99869685, 0.99931205, 0.49323029],\
+[	-6.27314745, -0.00042654, 0.00026132, 7.27272091, 0.99869703, 0.99931215, 0.49323033],\
+[	-6.27314759, -0.00042648, 0.00026128, 7.27272111, 0.99869721, 0.99931224, 0.49323043],\
+[	-6.27314773, -0.00042642, 0.00026124, 7.27272131, 0.99869739, 0.99931234, 0.49323035],\
+[	-6.27314787, -0.00042636, 0.00026121, 7.27272151, 0.99869757, 0.99931243, 0.49323032],\
+[	-6.27314801, -0.00042630, 0.00026117, 7.27272171, 0.99869775, 0.99931253, 0.49323043],\
+[	-6.27314815, -0.00042624, 0.00026114, 7.27272191, 0.99869792, 0.99931262, 0.49323038],\
+[	-6.27314830, -0.00042619, 0.00026110, 7.27272211, 0.99869810, 0.99931272, 0.49323055],\
+[	-6.27314844, -0.00042613, 0.00026106, 7.27272231, 0.99869828, 0.99931281, 0.49323047],\
+[	-6.27314858, -0.00042607, 0.00026103, 7.27272251, 0.99869846, 0.99931290, 0.49323039],\
+[	-6.27314872, -0.00042601, 0.00026099, 7.27272271, 0.99869864, 0.99931300, 0.49323039],\
+[	-6.27314886, -0.00042595, 0.00026096, 7.27272291, 0.99869882, 0.99931309, 0.49323057],\
+[	-6.27314900, -0.00042589, 0.00026092, 7.27272310, 0.99869900, 0.99931319, 0.49323051],\
+[	-6.27314914, -0.00042583, 0.00026088, 7.27272330, 0.99869918, 0.99931328, 0.49323056],\
+[	-6.27314928, -0.00042578, 0.00026085, 7.27272350, 0.99869936, 0.99931338, 0.49323064],\
+[	-6.27314942, -0.00042572, 0.00026081, 7.27272370, 0.99869954, 0.99931347, 0.49323065],\
+[	-6.27314956, -0.00042566, 0.00026078, 7.27272390, 0.99869972, 0.99931357, 0.49323065],\
+[	-6.27314970, -0.00042560, 0.00026074, 7.27272410, 0.99869989, 0.99931366, 0.49323070],\
+[	-6.27314984, -0.00042554, 0.00026070, 7.27272430, 0.99870007, 0.99931375, 0.49323062],\
+[	-6.27314998, -0.00042548, 0.00026067, 7.27272450, 0.99870025, 0.99931385, 0.49323063],\
+[	-6.27315012, -0.00042542, 0.00026063, 7.27272469, 0.99870043, 0.99931394, 0.49323075],\
+[	-6.27315026, -0.00042537, 0.00026060, 7.27272489, 0.99870061, 0.99931404, 0.49323074],\
+[	-6.27315040, -0.00042531, 0.00026056, 7.27272509, 0.99870079, 0.99931413, 0.49323081],\
+[	-6.27315054, -0.00042525, 0.00026052, 7.27272529, 0.99870097, 0.99931423, 0.49323082],\
+[	-6.27315068, -0.00042519, 0.00026049, 7.27272549, 0.99870115, 0.99931432, 0.49323079],\
+[	-6.27315082, -0.00042513, 0.00026045, 7.27272569, 0.99870132, 0.99931441, 0.49323072],\
+[	-6.27315096, -0.00042507, 0.00026042, 7.27272588, 0.99870150, 0.99931451, 0.49323088],\
+[	-6.27315110, -0.00042502, 0.00026038, 7.27272608, 0.99870168, 0.99931460, 0.49323096],\
+[	-6.27315124, -0.00042496, 0.00026035, 7.27272628, 0.99870186, 0.99931470, 0.49323088],\
+[	-6.27315138, -0.00042490, 0.00026031, 7.27272648, 0.99870204, 0.99931479, 0.49323085],\
+[	-6.27315152, -0.00042484, 0.00026027, 7.27272668, 0.99870222, 0.99931489, 0.49323089],\
+[	-6.27315165, -0.00042478, 0.00026024, 7.27272687, 0.99870239, 0.99931498, 0.49323085],\
+[	-6.27315179, -0.00042472, 0.00026020, 7.27272707, 0.99870257, 0.99931507, 0.49323101],\
+[	-6.27315193, -0.00042467, 0.00026017, 7.27272727, 0.99870275, 0.99931517, 0.49323094],\
+[	-6.27315207, -0.00042461, 0.00026013, 7.27272747, 0.99870293, 0.99931526, 0.49323104],\
+[	-6.27315221, -0.00042455, 0.00026010, 7.27272766, 0.99870311, 0.99931535, 0.49323100],\
+[	-6.27315235, -0.00042449, 0.00026006, 7.27272786, 0.99870328, 0.99931545, 0.49323105],\
+[	-6.27315249, -0.00042443, 0.00026002, 7.27272806, 0.99870346, 0.99931554, 0.49323112],\
+[	-6.27315263, -0.00042437, 0.00025999, 7.27272826, 0.99870364, 0.99931564, 0.49323100],\
+[	-6.27315277, -0.00042432, 0.00025995, 7.27272845, 0.99870382, 0.99931573, 0.49323104],\
+[	-6.27315291, -0.00042426, 0.00025992, 7.27272865, 0.99870399, 0.99931582, 0.49323113],\
+[	-6.27315305, -0.00042420, 0.00025988, 7.27272885, 0.99870417, 0.99931592, 0.49323100],\
+[	-6.27315319, -0.00042414, 0.00025985, 7.27272905, 0.99870435, 0.99931601, 0.49323118],\
+[	-6.27315333, -0.00042408, 0.00025981, 7.27272924, 0.99870453, 0.99931611, 0.49323122],\
+[	-6.27315347, -0.00042403, 0.00025978, 7.27272944, 0.99870470, 0.99931620, 0.49323123],\
+[	-6.27315360, -0.00042397, 0.00025974, 7.27272964, 0.99870488, 0.99931629, 0.49323124],\
+[	-6.27315374, -0.00042391, 0.00025970, 7.27272983, 0.99870506, 0.99931639, 0.49323127],\
+[	-6.27315388, -0.00042385, 0.00025967, 7.27273003, 0.99870524, 0.99931648, 0.49323133],\
+[	-6.27315402, -0.00042379, 0.00025963, 7.27273023, 0.99870541, 0.99931657, 0.49323140],\
+[	-6.27315416, -0.00042374, 0.00025960, 7.27273042, 0.99870559, 0.99931667, 0.49323133],\
+[	-6.27315430, -0.00042368, 0.00025956, 7.27273062, 0.99870577, 0.99931676, 0.49323138],\
+[	-6.27315444, -0.00042362, 0.00025953, 7.27273082, 0.99870595, 0.99931685, 0.49323140],\
+[	-6.27315458, -0.00042356, 0.00025949, 7.27273101, 0.99870612, 0.99931695, 0.49323145],\
+[	-6.27315472, -0.00042350, 0.00025946, 7.27273121, 0.99870630, 0.99931704, 0.49323139],\
+[	-6.27315485, -0.00042345, 0.00025942, 7.27273141, 0.99870648, 0.99931713, 0.49323136],\
+[	-6.27315499, -0.00042339, 0.00025938, 7.27273160, 0.99870665, 0.99931723, 0.49323144],\
+[	-6.27315513, -0.00042333, 0.00025935, 7.27273180, 0.99870683, 0.99931732, 0.49323141],\
+[	-6.27315527, -0.00042327, 0.00025931, 7.27273200, 0.99870701, 0.99931741, 0.49323140],\
+[	-6.27315541, -0.00042321, 0.00025928, 7.27273219, 0.99870719, 0.99931751, 0.49323155],\
+[	-6.27315555, -0.00042316, 0.00025924, 7.27273239, 0.99870736, 0.99931760, 0.49323157],\
+[	-6.27315569, -0.00042310, 0.00025921, 7.27273259, 0.99870754, 0.99931769, 0.49323161],\
+[	-6.27315582, -0.00042304, 0.00025917, 7.27273278, 0.99870772, 0.99931779, 0.49323157],\
+[	-6.27315596, -0.00042298, 0.00025914, 7.27273298, 0.99870789, 0.99931788, 0.49323162],\
+[	-6.27315610, -0.00042292, 0.00025910, 7.27273318, 0.99870807, 0.99931797, 0.49323164],\
+[	-6.27315624, -0.00042287, 0.00025907, 7.27273337, 0.99870825, 0.99931807, 0.49323172],\
+[	-6.27315638, -0.00042281, 0.00025903, 7.27273357, 0.99870842, 0.99931816, 0.49323163],\
+[	-6.27315652, -0.00042275, 0.00025899, 7.27273376, 0.99870860, 0.99931825, 0.49323158],\
+[	-6.27315665, -0.00042269, 0.00025896, 7.27273396, 0.99870877, 0.99931835, 0.49323168],\
+[	-6.27315679, -0.00042264, 0.00025892, 7.27273416, 0.99870895, 0.99931844, 0.49323175],\
+[	-6.27315693, -0.00042258, 0.00025889, 7.27273435, 0.99870913, 0.99931853, 0.49323172],\
+[	-6.27315707, -0.00042252, 0.00025885, 7.27273455, 0.99870930, 0.99931863, 0.49323175],\
+[	-6.27315721, -0.00042246, 0.00025882, 7.27273474, 0.99870948, 0.99931872, 0.49323179],\
+[	-6.27315734, -0.00042241, 0.00025878, 7.27273494, 0.99870966, 0.99931881, 0.49323178],\
+[	-6.27315748, -0.00042235, 0.00025875, 7.27273513, 0.99870983, 0.99931891, 0.49323183],\
+[	-6.27315762, -0.00042229, 0.00025871, 7.27273533, 0.99871001, 0.99931900, 0.49323180],\
+[	-6.27315776, -0.00042223, 0.00025868, 7.27273552, 0.99871018, 0.99931909, 0.49323181],\
+[	-6.27315790, -0.00042218, 0.00025864, 7.27273572, 0.99871036, 0.99931918, 0.49323188],\
+[	-6.27315803, -0.00042212, 0.00025861, 7.27273592, 0.99871054, 0.99931928, 0.49323197],\
+[	-6.27315817, -0.00042206, 0.00025857, 7.27273611, 0.99871071, 0.99931937, 0.49323190],\
+[	-6.27315831, -0.00042200, 0.00025854, 7.27273631, 0.99871089, 0.99931946, 0.49323185],\
+[	-6.27315845, -0.00042194, 0.00025850, 7.27273650, 0.99871106, 0.99931956, 0.49323199],\
+[	-6.27315858, -0.00042189, 0.00025846, 7.27273670, 0.99871124, 0.99931965, 0.49323204],\
+[	-6.27315872, -0.00042183, 0.00025843, 7.27273689, 0.99871141, 0.99931974, 0.49323191],\
+[	-6.27315886, -0.00042177, 0.00025839, 7.27273709, 0.99871159, 0.99931983, 0.49323202],\
+[	-6.27315900, -0.00042171, 0.00025836, 7.27273728, 0.99871177, 0.99931993, 0.49323199],\
+[	-6.27315913, -0.00042166, 0.00025832, 7.27273748, 0.99871194, 0.99932002, 0.49323200],\
+[	-6.27315927, -0.00042160, 0.00025829, 7.27273767, 0.99871212, 0.99932011, 0.49323212],\
+[	-6.27315941, -0.00042154, 0.00025825, 7.27273787, 0.99871229, 0.99932020, 0.49323215],\
+[	-6.27315955, -0.00042149, 0.00025822, 7.27273806, 0.99871247, 0.99932030, 0.49323211],\
+[	-6.27315968, -0.00042143, 0.00025818, 7.27273826, 0.99871264, 0.99932039, 0.49323217],\
+[	-6.27315982, -0.00042137, 0.00025815, 7.27273845, 0.99871282, 0.99932048, 0.49323219],\
+[	-6.27315996, -0.00042131, 0.00025811, 7.27273864, 0.99871299, 0.99932057, 0.49323223],\
+[	-6.27316010, -0.00042126, 0.00025808, 7.27273884, 0.99871317, 0.99932067, 0.49323224],\
+[	-6.27316023, -0.00042120, 0.00025804, 7.27273903, 0.99871334, 0.99932076, 0.49323221],\
+[	-6.27316037, -0.00042114, 0.00025801, 7.27273923, 0.99871352, 0.99932085, 0.49323224],\
+[	-6.27316051, -0.00042108, 0.00025797, 7.27273942, 0.99871369, 0.99932094, 0.49323220],\
+[	-6.27316064, -0.00042103, 0.00025794, 7.27273962, 0.99871387, 0.99932104, 0.49323229],\
+[	-6.27316078, -0.00042097, 0.00025790, 7.27273981, 0.99871404, 0.99932113, 0.49323228],\
+[	-6.27316092, -0.00042091, 0.00025787, 7.27274001, 0.99871422, 0.99932122, 0.49323228],\
+[	-6.27316105, -0.00042085, 0.00025783, 7.27274020, 0.99871439, 0.99932131, 0.49323234],\
+[	-6.27316119, -0.00042080, 0.00025780, 7.27274039, 0.99871457, 0.99932141, 0.49323243],\
+[	-6.27316133, -0.00042074, 0.00025776, 7.27274059, 0.99871474, 0.99932150, 0.49323241],\
+[	-6.27316147, -0.00042068, 0.00025773, 7.27274078, 0.99871492, 0.99932159, 0.49323242],\
+[	-6.27316160, -0.00042063, 0.00025769, 7.27274098, 0.99871509, 0.99932168, 0.49323234],\
+[	-6.27316174, -0.00042057, 0.00025766, 7.27274117, 0.99871527, 0.99932177, 0.49323243],\
+[	-6.27316188, -0.00042051, 0.00025762, 7.27274136, 0.99871544, 0.99932187, 0.49323249],\
+[	-6.27316201, -0.00042045, 0.00025759, 7.27274156, 0.99871562, 0.99932196, 0.49323249],\
+[	-6.27316215, -0.00042040, 0.00025755, 7.27274175, 0.99871579, 0.99932205, 0.49323255],\
+[	-6.27316229, -0.00042034, 0.00025752, 7.27274195, 0.99871597, 0.99932214, 0.49323261],\
+[	-6.27316242, -0.00042028, 0.00025748, 7.27274214, 0.99871614, 0.99932223, 0.49323266],\
+[	-6.27316256, -0.00042023, 0.00025745, 7.27274233, 0.99871631, 0.99932233, 0.49323261],\
+[	-6.27316270, -0.00042017, 0.00025741, 7.27274253, 0.99871649, 0.99932242, 0.49323265],\
+[	-6.27316283, -0.00042011, 0.00025738, 7.27274272, 0.99871666, 0.99932251, 0.49323261],\
+[	-6.27316297, -0.00042006, 0.00025734, 7.27274291, 0.99871684, 0.99932260, 0.49323268],\
+[	-6.27316311, -0.00042000, 0.00025731, 7.27274311, 0.99871701, 0.99932269, 0.49323261],\
+[	-6.27316324, -0.00041994, 0.00025727, 7.27274330, 0.99871719, 0.99932279, 0.49323277],\
+[	-6.27316338, -0.00041988, 0.00025724, 7.27274349, 0.99871736, 0.99932288, 0.49323278],\
+[	-6.27316351, -0.00041983, 0.00025720, 7.27274369, 0.99871753, 0.99932297, 0.49323270],\
+[	-6.27316365, -0.00041977, 0.00025717, 7.27274388, 0.99871771, 0.99932306, 0.49323262],\
+[	-6.27316379, -0.00041971, 0.00025713, 7.27274407, 0.99871788, 0.99932315, 0.49323267],\
+[	-6.27316392, -0.00041966, 0.00025710, 7.27274427, 0.99871806, 0.99932325, 0.49323282],\
+[	-6.27316406, -0.00041960, 0.00025706, 7.27274446, 0.99871823, 0.99932334, 0.49323274],\
+[	-6.27316420, -0.00041954, 0.00025703, 7.27274465, 0.99871840, 0.99932343, 0.49323276],\
+[	-6.27316433, -0.00041949, 0.00025699, 7.27274485, 0.99871858, 0.99932352, 0.49323279],\
+[	-6.27316447, -0.00041943, 0.00025696, 7.27274504, 0.99871875, 0.99932361, 0.49323285],\
+[	-6.27316460, -0.00041937, 0.00025692, 7.27274523, 0.99871892, 0.99932370, 0.49323286],\
+[	-6.27316474, -0.00041932, 0.00025689, 7.27274542, 0.99871910, 0.99932380, 0.49323296],\
+[	-6.27316488, -0.00041926, 0.00025685, 7.27274562, 0.99871927, 0.99932389, 0.49323294],\
+[	-6.27316501, -0.00041920, 0.00025682, 7.27274581, 0.99871944, 0.99932398, 0.49323292],\
+[	-6.27316515, -0.00041915, 0.00025678, 7.27274600, 0.99871962, 0.99932407, 0.49323285],\
+[	-6.27316528, -0.00041909, 0.00025675, 7.27274619, 0.99871979, 0.99932416, 0.49323292],\
+[	-6.27316542, -0.00041903, 0.00025671, 7.27274639, 0.99871996, 0.99932425, 0.49323303],\
+[	-6.27316555, -0.00041898, 0.00025668, 7.27274658, 0.99872014, 0.99932435, 0.49323312],\
+[	-6.27316569, -0.00041892, 0.00025664, 7.27274677, 0.99872031, 0.99932444, 0.49323326],\
+[	-6.27316583, -0.00041886, 0.00025661, 7.27274696, 0.99872048, 0.99932453, 0.49323308],\
+[	-6.27316596, -0.00041881, 0.00025658, 7.27274716, 0.99872066, 0.99932462, 0.49323307],\
+[	-6.27316610, -0.00041875, 0.00025654, 7.27274735, 0.99872083, 0.99932471, 0.49323314],\
+[	-6.27316623, -0.00041869, 0.00025651, 7.27274754, 0.99872100, 0.99932480, 0.49323312],\
+[	-6.27316637, -0.00041864, 0.00025647, 7.27274773, 0.99872118, 0.99932489, 0.49323320],\
+[	-6.27316650, -0.00041858, 0.00025644, 7.27274793, 0.99872135, 0.99932498, 0.49323311],\
+[	-6.27316664, -0.00041852, 0.00025640, 7.27274812, 0.99872152, 0.99932508, 0.49323311],\
+[	-6.27316677, -0.00041847, 0.00025637, 7.27274831, 0.99872170, 0.99932517, 0.49323317],\
+[	-6.27316691, -0.00041841, 0.00025633, 7.27274850, 0.99872187, 0.99932526, 0.49323323],\
+[	-6.27316705, -0.00041835, 0.00025630, 7.27274869, 0.99872204, 0.99932535, 0.49323325],\
+[	-6.27316718, -0.00041830, 0.00025626, 7.27274888, 0.99872221, 0.99932544, 0.49323334],\
+[	-6.27316732, -0.00041824, 0.00025623, 7.27274908, 0.99872239, 0.99932553, 0.49323332],\
+[	-6.27316745, -0.00041818, 0.00025619, 7.27274927, 0.99872256, 0.99932562, 0.49323331],\
+[	-6.27316759, -0.00041813, 0.00025616, 7.27274946, 0.99872273, 0.99932571, 0.49323331],\
+[	-6.27316772, -0.00041807, 0.00025612, 7.27274965, 0.99872290, 0.99932581, 0.49323346],\
+[	-6.27316786, -0.00041801, 0.00025609, 7.27274984, 0.99872308, 0.99932590, 0.49323331],\
+[	-6.27316799, -0.00041796, 0.00025606, 7.27275003, 0.99872325, 0.99932599, 0.49323339],\
+[	-6.27316813, -0.00041790, 0.00025602, 7.27275023, 0.99872342, 0.99932608, 0.49323343],\
+[	-6.27316826, -0.00041784, 0.00025599, 7.27275042, 0.99872359, 0.99932617, 0.49323337],\
+[	-6.27316840, -0.00041779, 0.00025595, 7.27275061, 0.99872377, 0.99932626, 0.49323342],\
+[	-6.27316853, -0.00041773, 0.00025592, 7.27275080, 0.99872394, 0.99932635, 0.49323347],\
+[	-6.27316867, -0.00041768, 0.00025588, 7.27275099, 0.99872411, 0.99932644, 0.49323353],\
+[	-6.27316880, -0.00041762, 0.00025585, 7.27275118, 0.99872428, 0.99932653, 0.49323349],\
+[	-6.27316894, -0.00041756, 0.00025581, 7.27275137, 0.99872446, 0.99932662, 0.49323358],\
+[	-6.27316907, -0.00041751, 0.00025578, 7.27275157, 0.99872463, 0.99932671, 0.49323354],\
+[	-6.27316921, -0.00041745, 0.00025574, 7.27275176, 0.99872480, 0.99932681, 0.49323350],\
+[	-6.27316934, -0.00041739, 0.00025571, 7.27275195, 0.99872497, 0.99932690, 0.49323356],\
+[	-6.27316948, -0.00041734, 0.00025568, 7.27275214, 0.99872514, 0.99932699, 0.49323355],\
+[	-6.27316961, -0.00041728, 0.00025564, 7.27275233, 0.99872532, 0.99932708, 0.49323359],\
+[	-6.27316974, -0.00041722, 0.00025561, 7.27275252, 0.99872549, 0.99932717, 0.49323360],\
+[	-6.27316988, -0.00041717, 0.00025557, 7.27275271, 0.99872566, 0.99932726, 0.49323362],\
+[	-6.27317001, -0.00041711, 0.00025554, 7.27275290, 0.99872583, 0.99932735, 0.49323369],\
+[	-6.27317015, -0.00041706, 0.00025550, 7.27275309, 0.99872600, 0.99932744, 0.49323369],\
+[	-6.27317028, -0.00041700, 0.00025547, 7.27275328, 0.99872617, 0.99932753, 0.49323368],\
+[	-6.27317042, -0.00041694, 0.00025543, 7.27275347, 0.99872635, 0.99932762, 0.49323375],\
+[	-6.27317055, -0.00041689, 0.00025540, 7.27275366, 0.99872652, 0.99932771, 0.49323378],\
+[	-6.27317069, -0.00041683, 0.00025537, 7.27275385, 0.99872669, 0.99932780, 0.49323373],\
+[	-6.27317082, -0.00041678, 0.00025533, 7.27275405, 0.99872686, 0.99932789, 0.49323370],\
+[	-6.27317095, -0.00041672, 0.00025530, 7.27275424, 0.99872703, 0.99932798, 0.49323379],\
+[	-6.27317109, -0.00041666, 0.00025526, 7.27275443, 0.99872720, 0.99932807, 0.49323375],\
+[	-6.27317122, -0.00041661, 0.00025523, 7.27275462, 0.99872738, 0.99932816, 0.49323392],\
+[	-6.27317136, -0.00041655, 0.00025519, 7.27275481, 0.99872755, 0.99932826, 0.49323391],\
+[	-6.27317149, -0.00041649, 0.00025516, 7.27275500, 0.99872772, 0.99932835, 0.49323391],\
+[	-6.27317163, -0.00041644, 0.00025512, 7.27275519, 0.99872789, 0.99932844, 0.49323388],\
+[	-6.27317176, -0.00041638, 0.00025509, 7.27275538, 0.99872806, 0.99932853, 0.49323395],\
+[	-6.27317189, -0.00041633, 0.00025506, 7.27275557, 0.99872823, 0.99932862, 0.49323385],\
+[	-6.27317203, -0.00041627, 0.00025502, 7.27275576, 0.99872840, 0.99932871, 0.49323392],\
+[	-6.27317216, -0.00041621, 0.00025499, 7.27275595, 0.99872857, 0.99932880, 0.49323402],\
+[	-6.27317230, -0.00041616, 0.00025495, 7.27275614, 0.99872874, 0.99932889, 0.49323405],\
+[	-6.27317243, -0.00041610, 0.00025492, 7.27275633, 0.99872892, 0.99932898, 0.49323405],\
+[	-6.27317256, -0.00041605, 0.00025488, 7.27275652, 0.99872909, 0.99932907, 0.49323408],\
+[	-6.27317270, -0.00041599, 0.00025485, 7.27275671, 0.99872926, 0.99932916, 0.49323410],\
+[	-6.27317283, -0.00041594, 0.00025482, 7.27275690, 0.99872943, 0.99932925, 0.49323410],\
+[	-6.27317297, -0.00041588, 0.00025478, 7.27275709, 0.99872960, 0.99932934, 0.49323416],\
+[	-6.27317310, -0.00041582, 0.00025475, 7.27275728, 0.99872977, 0.99932943, 0.49323413],\
+[	-6.27317323, -0.00041577, 0.00025471, 7.27275746, 0.99872994, 0.99932952, 0.49323409],\
+[	-6.27317337, -0.00041571, 0.00025468, 7.27275765, 0.99873011, 0.99932961, 0.49323425],\
+[	-6.27317350, -0.00041566, 0.00025465, 7.27275784, 0.99873028, 0.99932970, 0.49323426],\
+[	-6.27317363, -0.00041560, 0.00025461, 7.27275803, 0.99873045, 0.99932979, 0.49323421],\
+[	-6.27317377, -0.00041554, 0.00025458, 7.27275822, 0.99873062, 0.99932988, 0.49323430],\
+[	-6.27317390, -0.00041549, 0.00025454, 7.27275841, 0.99873079, 0.99932997, 0.49323422],\
+[	-6.27317403, -0.00041543, 0.00025451, 7.27275860, 0.99873096, 0.99933006, 0.49323429],\
+[	-6.27317417, -0.00041538, 0.00025447, 7.27275879, 0.99873113, 0.99933015, 0.49323420],\
+[	-6.27317430, -0.00041532, 0.00025444, 7.27275898, 0.99873130, 0.99933024, 0.49323427],\
+[	-6.27317443, -0.00041527, 0.00025441, 7.27275917, 0.99873147, 0.99933033, 0.49323431],\
+[	-6.27317457, -0.00041521, 0.00025437, 7.27275936, 0.99873164, 0.99933042, 0.49323443],\
+[	-6.27317470, -0.00041515, 0.00025434, 7.27275955, 0.99873181, 0.99933051, 0.49323428],\
+[	-6.27317483, -0.00041510, 0.00025430, 7.27275974, 0.99873198, 0.99933060, 0.49323443],\
+[	-6.27317497, -0.00041504, 0.00025427, 7.27275992, 0.99873215, 0.99933069, 0.49323437],\
+[	-6.27317510, -0.00041499, 0.00025424, 7.27276011, 0.99873232, 0.99933078, 0.49323454],\
+[	-6.27317523, -0.00041493, 0.00025420, 7.27276030, 0.99873249, 0.99933087, 0.49323446],\
+[	-6.27317537, -0.00041488, 0.00025417, 7.27276049, 0.99873266, 0.99933096, 0.49323436],\
+[	-6.27317550, -0.00041482, 0.00025413, 7.27276068, 0.99873283, 0.99933105, 0.49323455],\
+[	-6.27317563, -0.00041476, 0.00025410, 7.27276087, 0.99873300, 0.99933114, 0.49323443],\
+[	-6.27317577, -0.00041471, 0.00025406, 7.27276106, 0.99873317, 0.99933123, 0.49323444],\
+[	-6.27317590, -0.00041465, 0.00025403, 7.27276124, 0.99873334, 0.99933132, 0.49323452],\
+[	-6.27317603, -0.00041460, 0.00025400, 7.27276143, 0.99873351, 0.99933140, 0.49323465],\
+[	-6.27317616, -0.00041454, 0.00025396, 7.27276162, 0.99873368, 0.99933149, 0.49323452],\
+[	-6.27317630, -0.00041449, 0.00025393, 7.27276181, 0.99873385, 0.99933158, 0.49323459],\
+[	-6.27317643, -0.00041443, 0.00025389, 7.27276200, 0.99873402, 0.99933167, 0.49323462],\
+[	-6.27317656, -0.00041438, 0.00025386, 7.27276219, 0.99873419, 0.99933176, 0.49323457],\
+[	-6.27317670, -0.00041432, 0.00025383, 7.27276237, 0.99873436, 0.99933185, 0.49323468],\
+[	-6.27317683, -0.00041427, 0.00025379, 7.27276256, 0.99873453, 0.99933194, 0.49323479],\
+[	-6.27317696, -0.00041421, 0.00025376, 7.27276275, 0.99873470, 0.99933203, 0.49323481],\
+[	-6.27317709, -0.00041415, 0.00025372, 7.27276294, 0.99873487, 0.99933212, 0.49323465],\
+[	-6.27317723, -0.00041410, 0.00025369, 7.27276313, 0.99873504, 0.99933221, 0.49323467],\
+[	-6.27317736, -0.00041404, 0.00025366, 7.27276332, 0.99873521, 0.99933230, 0.49323474],\
+[	-6.27317749, -0.00041399, 0.00025362, 7.27276350, 0.99873538, 0.99933239, 0.49323475],\
+[	-6.27317762, -0.00041393, 0.00025359, 7.27276369, 0.99873555, 0.99933248, 0.49323489],\
+[	-6.27317776, -0.00041388, 0.00025355, 7.27276388, 0.99873572, 0.99933257, 0.49323478],\
+[	-6.27317789, -0.00041382, 0.00025352, 7.27276407, 0.99873588, 0.99933266, 0.49323490],\
+[	-6.27317802, -0.00041377, 0.00025349, 7.27276425, 0.99873605, 0.99933275, 0.49323500],\
+[	-6.27317815, -0.00041371, 0.00025345, 7.27276444, 0.99873622, 0.99933283, 0.49323486],\
+[	-6.27317829, -0.00041366, 0.00025342, 7.27276463, 0.99873639, 0.99933292, 0.49323491],\
+[	-6.27317842, -0.00041360, 0.00025339, 7.27276482, 0.99873656, 0.99933301, 0.49323473],\
+[	-6.27317855, -0.00041355, 0.00025335, 7.27276500, 0.99873673, 0.99933310, 0.49323495],\
+[	-6.27317868, -0.00041349, 0.00025332, 7.27276519, 0.99873690, 0.99933319, 0.49323495],\
+[	-6.27317882, -0.00041344, 0.00025328, 7.27276538, 0.99873707, 0.99933328, 0.49323487],\
+[	-6.27317895, -0.00041338, 0.00025325, 7.27276557, 0.99873724, 0.99933337, 0.49323500],\
+[	-6.27317908, -0.00041333, 0.00025322, 7.27276575, 0.99873740, 0.99933346, 0.49323493],\
+[	-6.27317921, -0.00041327, 0.00025318, 7.27276594, 0.99873757, 0.99933355, 0.49323497],\
+[	-6.27317934, -0.00041321, 0.00025315, 7.27276613, 0.99873774, 0.99933364, 0.49323507],\
+[	-6.27317948, -0.00041316, 0.00025311, 7.27276632, 0.99873791, 0.99933373, 0.49323512],\
+[	-6.27317961, -0.00041310, 0.00025308, 7.27276650, 0.99873808, 0.99933381, 0.49323500],\
+[	-6.27317974, -0.00041305, 0.00025305, 7.27276669, 0.99873825, 0.99933390, 0.49323510],\
+[	-6.27317987, -0.00041299, 0.00025301, 7.27276688, 0.99873842, 0.99933399, 0.49323520],\
+[	-6.27318000, -0.00041294, 0.00025298, 7.27276706, 0.99873858, 0.99933408, 0.49323515],\
+[	-6.27318014, -0.00041288, 0.00025295, 7.27276725, 0.99873875, 0.99933417, 0.49323523],\
+[	-6.27318027, -0.00041283, 0.00025291, 7.27276744, 0.99873892, 0.99933426, 0.49323516],\
+[	-6.27318040, -0.00041277, 0.00025288, 7.27276762, 0.99873909, 0.99933435, 0.49323517],\
+[	-6.27318053, -0.00041272, 0.00025284, 7.27276781, 0.99873926, 0.99933444, 0.49323519],\
+[	-6.27318066, -0.00041266, 0.00025281, 7.27276800, 0.99873942, 0.99933453, 0.49323515],\
+[	-6.27318079, -0.00041261, 0.00025278, 7.27276818, 0.99873959, 0.99933461, 0.49323538],\
+[	-6.27318093, -0.00041255, 0.00025274, 7.27276837, 0.99873976, 0.99933470, 0.49323529],\
+[	-6.27318106, -0.00041250, 0.00025271, 7.27276856, 0.99873993, 0.99933479, 0.49323537],\
+[	-6.27318119, -0.00041244, 0.00025268, 7.27276874, 0.99874010, 0.99933488, 0.49323534],\
+[	-6.27318132, -0.00041239, 0.00025264, 7.27276893, 0.99874026, 0.99933497, 0.49323537],\
+[	-6.27318145, -0.00041233, 0.00025261, 7.27276912, 0.99874043, 0.99933506, 0.49323540],\
+[	-6.27318158, -0.00041228, 0.00025258, 7.27276930, 0.99874060, 0.99933515, 0.49323539],\
+[	-6.27318171, -0.00041222, 0.00025254, 7.27276949, 0.99874077, 0.99933523, 0.49323536],\
+[	-6.27318185, -0.00041217, 0.00025251, 7.27276968, 0.99874094, 0.99933532, 0.49323541],\
+[	-6.27318198, -0.00041211, 0.00025247, 7.27276986, 0.99874110, 0.99933541, 0.49323529],\
+[	-6.27318211, -0.00041206, 0.00025244, 7.27277005, 0.99874127, 0.99933550, 0.49323554],\
+[	-6.27318224, -0.00041200, 0.00025241, 7.27277023, 0.99874144, 0.99933559, 0.49323556],\
+[	-6.27318237, -0.00041195, 0.00025237, 7.27277042, 0.99874161, 0.99933568, 0.49323548],\
+[	-6.27318250, -0.00041190, 0.00025234, 7.27277061, 0.99874177, 0.99933577, 0.49323555],\
+[	-6.27318263, -0.00041184, 0.00025231, 7.27277079, 0.99874194, 0.99933585, 0.49323555],\
+[	-6.27318276, -0.00041179, 0.00025227, 7.27277098, 0.99874211, 0.99933594, 0.49323566],\
+[	-6.27318290, -0.00041173, 0.00025224, 7.27277117, 0.99874228, 0.99933603, 0.49323552],\
+[	-6.27318303, -0.00041168, 0.00025221, 7.27277135, 0.99874244, 0.99933612, 0.49323561],\
+[	-6.27318316, -0.00041162, 0.00025217, 7.27277154, 0.99874261, 0.99933621, 0.49323566],\
+[	-6.27318329, -0.00041157, 0.00025214, 7.27277172, 0.99874278, 0.99933630, 0.49323555],\
+[	-6.27318342, -0.00041151, 0.00025210, 7.27277191, 0.99874294, 0.99933638, 0.49323560],\
+[	-6.27318355, -0.00041146, 0.00025207, 7.27277209, 0.99874311, 0.99933647, 0.49323570],\
+[	-6.27318368, -0.00041140, 0.00025204, 7.27277228, 0.99874328, 0.99933656, 0.49323566],\
+[	-6.27318381, -0.00041135, 0.00025200, 7.27277246, 0.99874345, 0.99933665, 0.49323580],\
+[	-6.27318394, -0.00041129, 0.00025197, 7.27277265, 0.99874361, 0.99933674, 0.49323573],\
+[	-6.27318407, -0.00041124, 0.00025194, 7.27277284, 0.99874378, 0.99933682, 0.49323588],\
+[	-6.27318420, -0.00041118, 0.00025190, 7.27277302, 0.99874395, 0.99933691, 0.49323574],\
+[	-6.27318434, -0.00041113, 0.00025187, 7.27277321, 0.99874411, 0.99933700, 0.49323584],\
+[	-6.27318447, -0.00041107, 0.00025184, 7.27277339, 0.99874428, 0.99933709, 0.49323574],\
+[	-6.27318460, -0.00041102, 0.00025180, 7.27277358, 0.99874445, 0.99933718, 0.49323586],\
+[	-6.27318473, -0.00041097, 0.00025177, 7.27277376, 0.99874461, 0.99933726, 0.49323593],\
+[	-6.27318486, -0.00041091, 0.00025174, 7.27277395, 0.99874478, 0.99933735, 0.49323592],\
+[	-6.27318499, -0.00041086, 0.00025170, 7.27277413, 0.99874495, 0.99933744, 0.49323598],\
+[	-6.27318512, -0.00041080, 0.00025167, 7.27277432, 0.99874511, 0.99933753, 0.49323589],\
+[	-6.27318525, -0.00041075, 0.00025164, 7.27277450, 0.99874528, 0.99933762, 0.49323587],\
+[	-6.27318538, -0.00041069, 0.00025160, 7.27277469, 0.99874545, 0.99933770, 0.49323605],\
+[	-6.27318551, -0.00041064, 0.00025157, 7.27277487, 0.99874561, 0.99933779, 0.49323594],\
+[	-6.27318564, -0.00041058, 0.00025154, 7.27277506, 0.99874578, 0.99933788, 0.49323599],\
+[	-6.27318577, -0.00041053, 0.00025150, 7.27277524, 0.99874595, 0.99933797, 0.49323604],\
+[	-6.27318590, -0.00041048, 0.00025147, 7.27277543, 0.99874611, 0.99933806, 0.49323602],\
+[	-6.27318603, -0.00041042, 0.00025144, 7.27277561, 0.99874628, 0.99933814, 0.49323601],\
+[	-6.27318616, -0.00041037, 0.00025140, 7.27277580, 0.99874645, 0.99933823, 0.49323601],\
+[	-6.27318629, -0.00041031, 0.00025137, 7.27277598, 0.99874661, 0.99933832, 0.49323608],\
+[	-6.27318642, -0.00041026, 0.00025134, 7.27277616, 0.99874678, 0.99933841, 0.49323616],\
+[	-6.27318655, -0.00041020, 0.00025130, 7.27277635, 0.99874694, 0.99933849, 0.49323617],\
+[	-6.27318668, -0.00041015, 0.00025127, 7.27277653, 0.99874711, 0.99933858, 0.49323615],\
+[	-6.27318681, -0.00041009, 0.00025124, 7.27277672, 0.99874728, 0.99933867, 0.49323614],\
+[	-6.27318694, -0.00041004, 0.00025120, 7.27277690, 0.99874744, 0.99933876, 0.49323615],\
+[	-6.27318707, -0.00040999, 0.00025117, 7.27277709, 0.99874761, 0.99933884, 0.49323610],\
+[	-6.27318720, -0.00040993, 0.00025114, 7.27277727, 0.99874777, 0.99933893, 0.49323628],\
+[	-6.27318733, -0.00040988, 0.00025110, 7.27277746, 0.99874794, 0.99933902, 0.49323634],\
+[	-6.27318746, -0.00040982, 0.00025107, 7.27277764, 0.99874811, 0.99933911, 0.49323627],\
+[	-6.27318759, -0.00040977, 0.00025104, 7.27277782, 0.99874827, 0.99933919, 0.49323622],\
+[	-6.27318772, -0.00040971, 0.00025100, 7.27277801, 0.99874844, 0.99933928, 0.49323631],\
+[	-6.27318785, -0.00040966, 0.00025097, 7.27277819, 0.99874860, 0.99933937, 0.49323628],\
+[	-6.27318798, -0.00040961, 0.00025094, 7.27277838, 0.99874877, 0.99933946, 0.49323627],\
+[	-6.27318811, -0.00040955, 0.00025090, 7.27277856, 0.99874893, 0.99933954, 0.49323637],\
+[	-6.27318824, -0.00040950, 0.00025087, 7.27277874, 0.99874910, 0.99933963, 0.49323632],\
+[	-6.27318837, -0.00040944, 0.00025084, 7.27277893, 0.99874927, 0.99933972, 0.49323640],\
+[	-6.27318850, -0.00040939, 0.00025080, 7.27277911, 0.99874943, 0.99933981, 0.49323651],\
+[	-6.27318863, -0.00040934, 0.00025077, 7.27277929, 0.99874960, 0.99933989, 0.49323644],\
+[	-6.27318876, -0.00040928, 0.00025074, 7.27277948, 0.99874976, 0.99933998, 0.49323637],\
+[	-6.27318889, -0.00040923, 0.00025070, 7.27277966, 0.99874993, 0.99934007, 0.49323647],\
+[	-6.27318902, -0.00040917, 0.00025067, 7.27277985, 0.99875009, 0.99934016, 0.49323644],\
+[	-6.27318915, -0.00040912, 0.00025064, 7.27278003, 0.99875026, 0.99934024, 0.49323643],\
+[	-6.27318928, -0.00040906, 0.00025060, 7.27278021, 0.99875042, 0.99934033, 0.49323648],\
+[	-6.27318941, -0.00040901, 0.00025057, 7.27278040, 0.99875059, 0.99934042, 0.49323655],\
+[	-6.27318954, -0.00040896, 0.00025054, 7.27278058, 0.99875075, 0.99934050, 0.49323657],\
+[	-6.27318967, -0.00040890, 0.00025051, 7.27278076, 0.99875092, 0.99934059, 0.49323664],\
+[	-6.27318979, -0.00040885, 0.00025047, 7.27278095, 0.99875108, 0.99934068, 0.49323657],\
+[	-6.27318992, -0.00040879, 0.00025044, 7.27278113, 0.99875125, 0.99934077, 0.49323666],\
+[	-6.27319005, -0.00040874, 0.00025041, 7.27278131, 0.99875141, 0.99934085, 0.49323663],\
+[	-6.27319018, -0.00040869, 0.00025037, 7.27278150, 0.99875158, 0.99934094, 0.49323672],\
+[	-6.27319031, -0.00040863, 0.00025034, 7.27278168, 0.99875174, 0.99934103, 0.49323665],\
+[	-6.27319044, -0.00040858, 0.00025031, 7.27278186, 0.99875191, 0.99934111, 0.49323670],\
+[	-6.27319057, -0.00040852, 0.00025027, 7.27278204, 0.99875207, 0.99934120, 0.49323671],\
+[	-6.27319070, -0.00040847, 0.00025024, 7.27278223, 0.99875224, 0.99934129, 0.49323673],\
+[	-6.27319083, -0.00040842, 0.00025021, 7.27278241, 0.99875240, 0.99934137, 0.49323684],\
+[	-6.27319096, -0.00040836, 0.00025017, 7.27278259, 0.99875257, 0.99934146, 0.49323687],\
+[	-6.27319109, -0.00040831, 0.00025014, 7.27278278, 0.99875273, 0.99934155, 0.49323685],\
+[	-6.27319121, -0.00040826, 0.00025011, 7.27278296, 0.99875290, 0.99934164, 0.49323688],\
+[	-6.27319134, -0.00040820, 0.00025008, 7.27278314, 0.99875306, 0.99934172, 0.49323675],\
+[	-6.27319147, -0.00040815, 0.00025004, 7.27278332, 0.99875322, 0.99934181, 0.49323678],\
+[	-6.27319160, -0.00040809, 0.00025001, 7.27278351, 0.99875339, 0.99934190, 0.49323687],\
+[	-6.27319173, -0.00040804, 0.00024998, 7.27278369, 0.99875355, 0.99934198, 0.49323686],\
+[	-6.27319186, -0.00040799, 0.00024994, 7.27278387, 0.99875372, 0.99934207, 0.49323698],\
+[	-6.27319199, -0.00040793, 0.00024991, 7.27278405, 0.99875388, 0.99934216, 0.49323692],\
+[	-6.27319212, -0.00040788, 0.00024988, 7.27278424, 0.99875405, 0.99934224, 0.49323708],\
+[	-6.27319224, -0.00040783, 0.00024985, 7.27278442, 0.99875421, 0.99934233, 0.49323704],\
+[	-6.27319237, -0.00040777, 0.00024981, 7.27278460, 0.99875437, 0.99934242, 0.49323700],\
+[	-6.27319250, -0.00040772, 0.00024978, 7.27278478, 0.99875454, 0.99934250, 0.49323693],\
+[	-6.27319263, -0.00040766, 0.00024975, 7.27278497, 0.99875470, 0.99934259, 0.49323702],\
+[	-6.27319276, -0.00040761, 0.00024971, 7.27278515, 0.99875487, 0.99934268, 0.49323716],\
+[	-6.27319289, -0.00040756, 0.00024968, 7.27278533, 0.99875503, 0.99934276, 0.49323703],\
+[	-6.27319302, -0.00040750, 0.00024965, 7.27278551, 0.99875519, 0.99934285, 0.49323706],\
+[	-6.27319314, -0.00040745, 0.00024961, 7.27278569, 0.99875536, 0.99934294, 0.49323706],\
+[	-6.27319327, -0.00040740, 0.00024958, 7.27278588, 0.99875552, 0.99934302, 0.49323714],\
+[	-6.27319340, -0.00040734, 0.00024955, 7.27278606, 0.99875569, 0.99934311, 0.49323706],\
+[	-6.27319353, -0.00040729, 0.00024952, 7.27278624, 0.99875585, 0.99934320, 0.49323708],\
+[	-6.27319366, -0.00040724, 0.00024948, 7.27278642, 0.99875601, 0.99934328, 0.49323729],\
+[	-6.27319379, -0.00040718, 0.00024945, 7.27278660, 0.99875618, 0.99934337, 0.49323724],\
+[	-6.27319391, -0.00040713, 0.00024942, 7.27278679, 0.99875634, 0.99934345, 0.49323721],\
+[	-6.27319404, -0.00040707, 0.00024938, 7.27278697, 0.99875650, 0.99934354, 0.49323728],\
+[	-6.27319417, -0.00040702, 0.00024935, 7.27278715, 0.99875667, 0.99934363, 0.49323732],\
+[	-6.27319430, -0.00040697, 0.00024932, 7.27278733, 0.99875683, 0.99934371, 0.49323735],\
+[	-6.27319443, -0.00040691, 0.00024929, 7.27278751, 0.99875700, 0.99934380, 0.49323736],\
+[	-6.27319455, -0.00040686, 0.00024925, 7.27278769, 0.99875716, 0.99934389, 0.49323725],\
+[	-6.27319468, -0.00040681, 0.00024922, 7.27278788, 0.99875732, 0.99934397, 0.49323738],\
+[	-6.27319481, -0.00040675, 0.00024919, 7.27278806, 0.99875749, 0.99934406, 0.49323735],\
+[	-6.27319494, -0.00040670, 0.00024916, 7.27278824, 0.99875765, 0.99934414, 0.49323731],\
+[	-6.27319507, -0.00040665, 0.00024912, 7.27278842, 0.99875781, 0.99934423, 0.49323743],\
+[	-6.27319519, -0.00040659, 0.00024909, 7.27278860, 0.99875798, 0.99934432, 0.49323750],\
+[	-6.27319532, -0.00040654, 0.00024906, 7.27278878, 0.99875814, 0.99934440, 0.49323738],\
+[	-6.27319545, -0.00040649, 0.00024902, 7.27278896, 0.99875830, 0.99934449, 0.49323751],\
+[	-6.27319558, -0.00040643, 0.00024899, 7.27278914, 0.99875846, 0.99934457, 0.49323752],\
+[	-6.27319571, -0.00040638, 0.00024896, 7.27278933, 0.99875863, 0.99934466, 0.49323741],\
+[	-6.27319583, -0.00040633, 0.00024893, 7.27278951, 0.99875879, 0.99934475, 0.49323749],\
+[	-6.27319596, -0.00040627, 0.00024889, 7.27278969, 0.99875895, 0.99934483, 0.49323755],\
+[	-6.27319609, -0.00040622, 0.00024886, 7.27278987, 0.99875912, 0.99934492, 0.49323762],\
+[	-6.27319622, -0.00040617, 0.00024883, 7.27279005, 0.99875928, 0.99934501, 0.49323759],\
+[	-6.27319634, -0.00040611, 0.00024880, 7.27279023, 0.99875944, 0.99934509, 0.49323760],\
+[	-6.27319647, -0.00040606, 0.00024876, 7.27279041, 0.99875960, 0.99934518, 0.49323757],\
+[	-6.27319660, -0.00040601, 0.00024873, 7.27279059, 0.99875977, 0.99934526, 0.49323761],\
+[	-6.27319673, -0.00040595, 0.00024870, 7.27279077, 0.99875993, 0.99934535, 0.49323762],\
+[	-6.27319685, -0.00040590, 0.00024867, 7.27279095, 0.99876009, 0.99934543, 0.49323771],\
+[	-6.27319698, -0.00040585, 0.00024863, 7.27279113, 0.99876026, 0.99934552, 0.49323775],\
+[	-6.27319711, -0.00040579, 0.00024860, 7.27279131, 0.99876042, 0.99934561, 0.49323777],\
+[	-6.27319724, -0.00040574, 0.00024857, 7.27279149, 0.99876058, 0.99934569, 0.49323761],\
+[	-6.27319736, -0.00040569, 0.00024853, 7.27279168, 0.99876074, 0.99934578, 0.49323772],\
+[	-6.27319749, -0.00040563, 0.00024850, 7.27279186, 0.99876091, 0.99934586, 0.49323767],\
+[	-6.27319762, -0.00040558, 0.00024847, 7.27279204, 0.99876107, 0.99934595, 0.49323779],\
+[	-6.27319774, -0.00040553, 0.00024844, 7.27279222, 0.99876123, 0.99934603, 0.49323782],\
+[	-6.27319787, -0.00040547, 0.00024840, 7.27279240, 0.99876139, 0.99934612, 0.49323776],\
+[	-6.27319800, -0.00040542, 0.00024837, 7.27279258, 0.99876156, 0.99934621, 0.49323782],\
+[	-6.27319813, -0.00040537, 0.00024834, 7.27279276, 0.99876172, 0.99934629, 0.49323787],\
+[	-6.27319825, -0.00040532, 0.00024831, 7.27279294, 0.99876188, 0.99934638, 0.49323783],\
+[	-6.27319838, -0.00040526, 0.00024827, 7.27279312, 0.99876204, 0.99934646, 0.49323795],\
+[	-6.27319851, -0.00040521, 0.00024824, 7.27279330, 0.99876220, 0.99934655, 0.49323788],\
+[	-6.27319863, -0.00040516, 0.00024821, 7.27279348, 0.99876237, 0.99934663, 0.49323798],\
+[	-6.27319876, -0.00040510, 0.00024818, 7.27279366, 0.99876253, 0.99934672, 0.49323799],\
+[	-6.27319889, -0.00040505, 0.00024814, 7.27279384, 0.99876269, 0.99934681, 0.49323794],\
+[	-6.27319901, -0.00040500, 0.00024811, 7.27279402, 0.99876285, 0.99934689, 0.49323812],\
+[	-6.27319914, -0.00040494, 0.00024808, 7.27279420, 0.99876301, 0.99934698, 0.49323800],\
+[	-6.27319927, -0.00040489, 0.00024805, 7.27279438, 0.99876318, 0.99934706, 0.49323799],\
+[	-6.27319939, -0.00040484, 0.00024801, 7.27279456, 0.99876334, 0.99934715, 0.49323807],\
+[	-6.27319952, -0.00040479, 0.00024798, 7.27279474, 0.99876350, 0.99934723, 0.49323804],\
+[	-6.27319965, -0.00040473, 0.00024795, 7.27279492, 0.99876366, 0.99934732, 0.49323807],\
+[	-6.27319977, -0.00040468, 0.00024792, 7.27279510, 0.99876382, 0.99934740, 0.49323796],\
+[	-6.27319990, -0.00040463, 0.00024788, 7.27279527, 0.99876398, 0.99934749, 0.49323820],\
+[	-6.27320003, -0.00040457, 0.00024785, 7.27279545, 0.99876415, 0.99934757, 0.49323815],\
+[	-6.27320015, -0.00040452, 0.00024782, 7.27279563, 0.99876431, 0.99934766, 0.49323813],\
+[	-6.27320028, -0.00040447, 0.00024779, 7.27279581, 0.99876447, 0.99934774, 0.49323819],\
+[	-6.27320041, -0.00040442, 0.00024776, 7.27279599, 0.99876463, 0.99934783, 0.49323817],\
+[	-6.27320053, -0.00040436, 0.00024772, 7.27279617, 0.99876479, 0.99934791, 0.49323809],\
+[	-6.27320066, -0.00040431, 0.00024769, 7.27279635, 0.99876495, 0.99934800, 0.49323823],\
+[	-6.27320079, -0.00040426, 0.00024766, 7.27279653, 0.99876511, 0.99934809, 0.49323818],\
+[	-6.27320091, -0.00040420, 0.00024763, 7.27279671, 0.99876528, 0.99934817, 0.49323822],\
+[	-6.27320104, -0.00040415, 0.00024759, 7.27279689, 0.99876544, 0.99934826, 0.49323828],\
+[	-6.27320117, -0.00040410, 0.00024756, 7.27279707, 0.99876560, 0.99934834, 0.49323852],\
+[	-6.27320129, -0.00040405, 0.00024753, 7.27279725, 0.99876576, 0.99934843, 0.49323826],\
+[	-6.27320142, -0.00040399, 0.00024750, 7.27279743, 0.99876592, 0.99934851, 0.49323833],\
+[	-6.27320154, -0.00040394, 0.00024746, 7.27279760, 0.99876608, 0.99934860, 0.49323832],\
+[	-6.27320167, -0.00040389, 0.00024743, 7.27279778, 0.99876624, 0.99934868, 0.49323839],\
+[	-6.27320180, -0.00040383, 0.00024740, 7.27279796, 0.99876640, 0.99934877, 0.49323831],\
+[	-6.27320192, -0.00040378, 0.00024737, 7.27279814, 0.99876656, 0.99934885, 0.49323847],\
+[	-6.27320205, -0.00040373, 0.00024733, 7.27279832, 0.99876673, 0.99934894, 0.49323846],\
+[	-6.27320217, -0.00040368, 0.00024730, 7.27279850, 0.99876689, 0.99934902, 0.49323853],\
+[	-6.27320230, -0.00040362, 0.00024727, 7.27279868, 0.99876705, 0.99934911, 0.49323849],\
+[	-6.27320243, -0.00040357, 0.00024724, 7.27279886, 0.99876721, 0.99934919, 0.49323847],\
+[	-6.27320255, -0.00040352, 0.00024721, 7.27279903, 0.99876737, 0.99934928, 0.49323843],\
+[	-6.27320268, -0.00040347, 0.00024717, 7.27279921, 0.99876753, 0.99934936, 0.49323854],\
+[	-6.27320280, -0.00040341, 0.00024714, 7.27279939, 0.99876769, 0.99934944, 0.49323862],\
+[	-6.27320293, -0.00040336, 0.00024711, 7.27279957, 0.99876785, 0.99934953, 0.49323861],\
+[	-6.27320306, -0.00040331, 0.00024708, 7.27279975, 0.99876801, 0.99934961, 0.49323862],\
+[	-6.27320318, -0.00040326, 0.00024704, 7.27279993, 0.99876817, 0.99934970, 0.49323859],\
+[	-6.27320331, -0.00040320, 0.00024701, 7.27280010, 0.99876833, 0.99934978, 0.49323864],\
+[	-6.27320343, -0.00040315, 0.00024698, 7.27280028, 0.99876849, 0.99934987, 0.49323872],\
+[	-6.27320356, -0.00040310, 0.00024695, 7.27280046, 0.99876865, 0.99934995, 0.49323853],\
+[	-6.27320368, -0.00040305, 0.00024692, 7.27280064, 0.99876881, 0.99935004, 0.49323874],\
+[	-6.27320381, -0.00040299, 0.00024688, 7.27280082, 0.99876897, 0.99935012, 0.49323866],\
+[	-6.27320394, -0.00040294, 0.00024685, 7.27280099, 0.99876913, 0.99935021, 0.49323878],\
+[	-6.27320406, -0.00040289, 0.00024682, 7.27280117, 0.99876929, 0.99935029, 0.49323872],\
+[	-6.27320419, -0.00040284, 0.00024679, 7.27280135, 0.99876945, 0.99935038, 0.49323872],\
+[	-6.27320431, -0.00040278, 0.00024676, 7.27280153, 0.99876961, 0.99935046, 0.49323876],\
+[	-6.27320444, -0.00040273, 0.00024672, 7.27280171, 0.99876978, 0.99935055, 0.49323884],\
+[	-6.27320456, -0.00040268, 0.00024669, 7.27280188, 0.99876994, 0.99935063, 0.49323875],\
+[	-6.27320469, -0.00040263, 0.00024666, 7.27280206, 0.99877010, 0.99935071, 0.49323881],\
+[	-6.27320481, -0.00040257, 0.00024663, 7.27280224, 0.99877026, 0.99935080, 0.49323883],\
+[	-6.27320494, -0.00040252, 0.00024659, 7.27280242, 0.99877042, 0.99935088, 0.49323893],\
+[	-6.27320506, -0.00040247, 0.00024656, 7.27280259, 0.99877058, 0.99935097, 0.49323897],\
+[	-6.27320519, -0.00040242, 0.00024653, 7.27280277, 0.99877073, 0.99935105, 0.49323888],\
+[	-6.27320532, -0.00040237, 0.00024650, 7.27280295, 0.99877089, 0.99935114, 0.49323894],\
+[	-6.27320544, -0.00040231, 0.00024647, 7.27280313, 0.99877105, 0.99935122, 0.49323891],\
+[	-6.27320557, -0.00040226, 0.00024643, 7.27280330, 0.99877121, 0.99935130, 0.49323883],\
+[	-6.27320569, -0.00040221, 0.00024640, 7.27280348, 0.99877137, 0.99935139, 0.49323900],\
+[	-6.27320582, -0.00040216, 0.00024637, 7.27280366, 0.99877153, 0.99935147, 0.49323894],\
+[	-6.27320594, -0.00040210, 0.00024634, 7.27280384, 0.99877169, 0.99935156, 0.49323913],\
+[	-6.27320607, -0.00040205, 0.00024631, 7.27280401, 0.99877185, 0.99935164, 0.49323892],\
+[	-6.27320619, -0.00040200, 0.00024627, 7.27280419, 0.99877201, 0.99935173, 0.49323905],\
+[	-6.27320632, -0.00040195, 0.00024624, 7.27280437, 0.99877217, 0.99935181, 0.49323908],\
+[	-6.27320644, -0.00040190, 0.00024621, 7.27280455, 0.99877233, 0.99935189, 0.49323912],\
+[	-6.27320657, -0.00040184, 0.00024618, 7.27280472, 0.99877249, 0.99935198, 0.49323907],\
+[	-6.27320669, -0.00040179, 0.00024615, 7.27280490, 0.99877265, 0.99935206, 0.49323901],\
+[	-6.27320682, -0.00040174, 0.00024611, 7.27280508, 0.99877281, 0.99935215, 0.49323923],\
+[	-6.27320694, -0.00040169, 0.00024608, 7.27280525, 0.99877297, 0.99935223, 0.49323914],\
+[	-6.27320706, -0.00040163, 0.00024605, 7.27280543, 0.99877313, 0.99935231, 0.49323921],\
+[	-6.27320719, -0.00040158, 0.00024602, 7.27280561, 0.99877329, 0.99935240, 0.49323926],\
+[	-6.27320731, -0.00040153, 0.00024599, 7.27280578, 0.99877345, 0.99935248, 0.49323926],\
+[	-6.27320744, -0.00040148, 0.00024595, 7.27280596, 0.99877361, 0.99935257, 0.49323918],\
+[	-6.27320756, -0.00040143, 0.00024592, 7.27280614, 0.99877376, 0.99935265, 0.49323936],\
+[	-6.27320769, -0.00040137, 0.00024589, 7.27280631, 0.99877392, 0.99935273, 0.49323929],\
+[	-6.27320781, -0.00040132, 0.00024586, 7.27280649, 0.99877408, 0.99935282, 0.49323934],\
+[	-6.27320794, -0.00040127, 0.00024583, 7.27280667, 0.99877424, 0.99935290, 0.49323932],\
+[	-6.27320806, -0.00040122, 0.00024580, 7.27280684, 0.99877440, 0.99935299, 0.49323931],\
+[	-6.27320819, -0.00040117, 0.00024576, 7.27280702, 0.99877456, 0.99935307, 0.49323926],\
+[	-6.27320831, -0.00040111, 0.00024573, 7.27280720, 0.99877472, 0.99935315, 0.49323938],\
+[	-6.27320843, -0.00040106, 0.00024570, 7.27280737, 0.99877488, 0.99935324, 0.49323939],\
+[	-6.27320856, -0.00040101, 0.00024567, 7.27280755, 0.99877504, 0.99935332, 0.49323934],\
+[	-6.27320868, -0.00040096, 0.00024564, 7.27280773, 0.99877519, 0.99935341, 0.49323939],\
+[	-6.27320881, -0.00040091, 0.00024560, 7.27280790, 0.99877535, 0.99935349, 0.49323943],\
+[	-6.27320893, -0.00040085, 0.00024557, 7.27280808, 0.99877551, 0.99935357, 0.49323942],\
+[	-6.27320906, -0.00040080, 0.00024554, 7.27280825, 0.99877567, 0.99935366, 0.49323947],\
+[	-6.27320918, -0.00040075, 0.00024551, 7.27280843, 0.99877583, 0.99935374, 0.49323951],\
+[	-6.27320930, -0.00040070, 0.00024548, 7.27280861, 0.99877599, 0.99935382, 0.49323953],\
+[	-6.27320943, -0.00040065, 0.00024545, 7.27280878, 0.99877615, 0.99935391, 0.49323955],\
+[	-6.27320955, -0.00040059, 0.00024541, 7.27280896, 0.99877630, 0.99935399, 0.49323962],\
+[	-6.27320968, -0.00040054, 0.00024538, 7.27280913, 0.99877646, 0.99935408, 0.49323956],\
+[	-6.27320980, -0.00040049, 0.00024535, 7.27280931, 0.99877662, 0.99935416, 0.49323962],\
+[	-6.27320993, -0.00040044, 0.00024532, 7.27280949, 0.99877678, 0.99935424, 0.49323958],\
+[	-6.27321005, -0.00040039, 0.00024529, 7.27280966, 0.99877694, 0.99935433, 0.49323965],\
+[	-6.27321017, -0.00040034, 0.00024525, 7.27280984, 0.99877710, 0.99935441, 0.49323969],\
+[	-6.27321030, -0.00040028, 0.00024522, 7.27281001, 0.99877725, 0.99935449, 0.49323976],\
+[	-6.27321042, -0.00040023, 0.00024519, 7.27281019, 0.99877741, 0.99935458, 0.49323970],\
+[	-6.27321054, -0.00040018, 0.00024516, 7.27281036, 0.99877757, 0.99935466, 0.49323974],\
+[	-6.27321067, -0.00040013, 0.00024513, 7.27281054, 0.99877773, 0.99935474, 0.49323974],\
+[	-6.27321079, -0.00040008, 0.00024510, 7.27281072, 0.99877789, 0.99935483, 0.49323966],\
+[	-6.27321092, -0.00040003, 0.00024506, 7.27281089, 0.99877804, 0.99935491, 0.49323980],\
+[	-6.27321104, -0.00039997, 0.00024503, 7.27281107, 0.99877820, 0.99935499, 0.49323982],\
+[	-6.27321116, -0.00039992, 0.00024500, 7.27281124, 0.99877836, 0.99935508, 0.49323984],\
+[	-6.27321129, -0.00039987, 0.00024497, 7.27281142, 0.99877852, 0.99935516, 0.49323979],\
+[	-6.27321141, -0.00039982, 0.00024494, 7.27281159, 0.99877868, 0.99935524, 0.49323984],\
+[	-6.27321153, -0.00039977, 0.00024491, 7.27281177, 0.99877883, 0.99935533, 0.49323987],\
+[	-6.27321166, -0.00039972, 0.00024487, 7.27281194, 0.99877899, 0.99935541, 0.49323994],\
+[	-6.27321178, -0.00039966, 0.00024484, 7.27281212, 0.99877915, 0.99935549, 0.49323989],\
+[	-6.27321191, -0.00039961, 0.00024481, 7.27281229, 0.99877931, 0.99935558, 0.49323986],\
+[	-6.27321203, -0.00039956, 0.00024478, 7.27281247, 0.99877946, 0.99935566, 0.49323995],\
+[	-6.27321215, -0.00039951, 0.00024475, 7.27281264, 0.99877962, 0.99935574, 0.49323997],\
+[	-6.27321228, -0.00039946, 0.00024472, 7.27281282, 0.99877978, 0.99935583, 0.49323996],\
+[	-6.27321240, -0.00039941, 0.00024468, 7.27281299, 0.99877994, 0.99935591, 0.49323998],\
+[	-6.27321252, -0.00039935, 0.00024465, 7.27281317, 0.99878009, 0.99935599, 0.49323996],\
+[	-6.27321265, -0.00039930, 0.00024462, 7.27281334, 0.99878025, 0.99935608, 0.49324002],\
+[	-6.27321277, -0.00039925, 0.00024459, 7.27281352, 0.99878041, 0.99935616, 0.49323998],\
+[	-6.27321289, -0.00039920, 0.00024456, 7.27281369, 0.99878057, 0.99935624, 0.49324001],\
+[	-6.27321302, -0.00039915, 0.00024453, 7.27281387, 0.99878072, 0.99935632, 0.49324014],\
+[	-6.27321314, -0.00039910, 0.00024450, 7.27281404, 0.99878088, 0.99935641, 0.49324019],\
+[	-6.27321326, -0.00039905, 0.00024446, 7.27281422, 0.99878104, 0.99935649, 0.49324012],\
+[	-6.27321338, -0.00039899, 0.00024443, 7.27281439, 0.99878120, 0.99935657, 0.49324003],\
+[	-6.27321351, -0.00039894, 0.00024440, 7.27281457, 0.99878135, 0.99935666, 0.49324013],\
+[	-6.27321363, -0.00039889, 0.00024437, 7.27281474, 0.99878151, 0.99935674, 0.49324013],\
+[	-6.27321375, -0.00039884, 0.00024434, 7.27281491, 0.99878167, 0.99935682, 0.49324017],\
+[	-6.27321388, -0.00039879, 0.00024431, 7.27281509, 0.99878182, 0.99935690, 0.49324022],\
+[	-6.27321400, -0.00039874, 0.00024427, 7.27281526, 0.99878198, 0.99935699, 0.49324015],\
+[	-6.27321412, -0.00039869, 0.00024424, 7.27281544, 0.99878214, 0.99935707, 0.49324036],\
+[	-6.27321425, -0.00039863, 0.00024421, 7.27281561, 0.99878229, 0.99935715, 0.49324026],\
+[	-6.27321437, -0.00039858, 0.00024418, 7.27281579, 0.99878245, 0.99935724, 0.49324022],\
+[	-6.27321449, -0.00039853, 0.00024415, 7.27281596, 0.99878261, 0.99935732, 0.49324031],\
+[	-6.27321461, -0.00039848, 0.00024412, 7.27281613, 0.99878277, 0.99935740, 0.49324028],\
+[	-6.27321474, -0.00039843, 0.00024409, 7.27281631, 0.99878292, 0.99935748, 0.49324030],\
+[	-6.27321486, -0.00039838, 0.00024405, 7.27281648, 0.99878308, 0.99935757, 0.49324023],\
+[	-6.27321498, -0.00039833, 0.00024402, 7.27281666, 0.99878324, 0.99935765, 0.49324037],\
+[	-6.27321511, -0.00039828, 0.00024399, 7.27281683, 0.99878339, 0.99935773, 0.49324036],\
+[	-6.27321523, -0.00039822, 0.00024396, 7.27281700, 0.99878355, 0.99935782, 0.49324044],\
+[	-6.27321535, -0.00039817, 0.00024393, 7.27281718, 0.99878370, 0.99935790, 0.49324039],\
+[	-6.27321547, -0.00039812, 0.00024390, 7.27281735, 0.99878386, 0.99935798, 0.49324042],\
+[	-6.27321560, -0.00039807, 0.00024387, 7.27281752, 0.99878402, 0.99935806, 0.49324055],\
+[	-6.27321572, -0.00039802, 0.00024383, 7.27281770, 0.99878417, 0.99935815, 0.49324042],\
+[	-6.27321584, -0.00039797, 0.00024380, 7.27281787, 0.99878433, 0.99935823, 0.49324044],\
+[	-6.27321596, -0.00039792, 0.00024377, 7.27281805, 0.99878449, 0.99935831, 0.49324041],\
+[	-6.27321609, -0.00039787, 0.00024374, 7.27281822, 0.99878464, 0.99935839, 0.49324060],\
+[	-6.27321621, -0.00039781, 0.00024371, 7.27281839, 0.99878480, 0.99935848, 0.49324044],\
+[	-6.27321633, -0.00039776, 0.00024368, 7.27281857, 0.99878496, 0.99935856, 0.49324054],\
+[	-6.27321645, -0.00039771, 0.00024365, 7.27281874, 0.99878511, 0.99935864, 0.49324046],\
+[	-6.27321658, -0.00039766, 0.00024362, 7.27281891, 0.99878527, 0.99935872, 0.49324052],\
+[	-6.27321670, -0.00039761, 0.00024358, 7.27281909, 0.99878542, 0.99935881, 0.49324063],\
+[	-6.27321682, -0.00039756, 0.00024355, 7.27281926, 0.99878558, 0.99935889, 0.49324081],\
+[	-6.27321694, -0.00039751, 0.00024352, 7.27281943, 0.99878574, 0.99935897, 0.49324067],\
+[	-6.27321706, -0.00039746, 0.00024349, 7.27281961, 0.99878589, 0.99935905, 0.49324080],\
+[	-6.27321719, -0.00039741, 0.00024346, 7.27281978, 0.99878605, 0.99935913, 0.49324070],\
+[	-6.27321731, -0.00039736, 0.00024343, 7.27281995, 0.99878620, 0.99935922, 0.49324061],\
+[	-6.27321743, -0.00039730, 0.00024340, 7.27282013, 0.99878636, 0.99935930, 0.49324072],\
+[	-6.27321755, -0.00039725, 0.00024337, 7.27282030, 0.99878652, 0.99935938, 0.49324071],\
+[	-6.27321767, -0.00039720, 0.00024333, 7.27282047, 0.99878667, 0.99935946, 0.49324076],\
+[	-6.27321780, -0.00039715, 0.00024330, 7.27282064, 0.99878683, 0.99935955, 0.49324084],\
+[	-6.27321792, -0.00039710, 0.00024327, 7.27282082, 0.99878698, 0.99935963, 0.49324086],\
+[	-6.27321804, -0.00039705, 0.00024324, 7.27282099, 0.99878714, 0.99935971, 0.49324068],\
+[	-6.27321816, -0.00039700, 0.00024321, 7.27282116, 0.99878729, 0.99935979, 0.49324078],\
+[	-6.27321828, -0.00039695, 0.00024318, 7.27282134, 0.99878745, 0.99935987, 0.49324088],\
+[	-6.27321841, -0.00039690, 0.00024315, 7.27282151, 0.99878760, 0.99935996, 0.49324077],\
+[	-6.27321853, -0.00039685, 0.00024312, 7.27282168, 0.99878776, 0.99936004, 0.49324091],\
+[	-6.27321865, -0.00039680, 0.00024308, 7.27282185, 0.99878792, 0.99936012, 0.49324089],\
+[	-6.27321877, -0.00039674, 0.00024305, 7.27282203, 0.99878807, 0.99936020, 0.49324098],\
+[	-6.27321889, -0.00039669, 0.00024302, 7.27282220, 0.99878823, 0.99936028, 0.49324089],\
+[	-6.27321901, -0.00039664, 0.00024299, 7.27282237, 0.99878838, 0.99936037, 0.49324096],\
+[	-6.27321914, -0.00039659, 0.00024296, 7.27282254, 0.99878854, 0.99936045, 0.49324110],\
+[	-6.27321926, -0.00039654, 0.00024293, 7.27282272, 0.99878869, 0.99936053, 0.49324104],\
+[	-6.27321938, -0.00039649, 0.00024290, 7.27282289, 0.99878885, 0.99936061, 0.49324115],\
+[	-6.27321950, -0.00039644, 0.00024287, 7.27282306, 0.99878900, 0.99936069, 0.49324105],\
+[	-6.27321962, -0.00039639, 0.00024284, 7.27282323, 0.99878916, 0.99936078, 0.49324108],\
+[	-6.27321974, -0.00039634, 0.00024280, 7.27282341, 0.99878931, 0.99936086, 0.49324101],\
+[	-6.27321987, -0.00039629, 0.00024277, 7.27282358, 0.99878947, 0.99936094, 0.49324102],\
+[	-6.27321999, -0.00039624, 0.00024274, 7.27282375, 0.99878962, 0.99936102, 0.49324113],\
+[	-6.27322011, -0.00039619, 0.00024271, 7.27282392, 0.99878978, 0.99936110, 0.49324108],\
+[	-6.27322023, -0.00039613, 0.00024268, 7.27282409, 0.99878993, 0.99936119, 0.49324117],\
+[	-6.27322035, -0.00039608, 0.00024265, 7.27282427, 0.99879009, 0.99936127, 0.49324125],\
+[	-6.27322047, -0.00039603, 0.00024262, 7.27282444, 0.99879024, 0.99936135, 0.49324106],\
+[	-6.27322059, -0.00039598, 0.00024259, 7.27282461, 0.99879040, 0.99936143, 0.49324119],\
+[	-6.27322071, -0.00039593, 0.00024256, 7.27282478, 0.99879055, 0.99936151, 0.49324110],\
+[	-6.27322084, -0.00039588, 0.00024252, 7.27282495, 0.99879071, 0.99936159, 0.49324126],\
+[	-6.27322096, -0.00039583, 0.00024249, 7.27282513, 0.99879086, 0.99936168, 0.49324122],\
+[	-6.27322108, -0.00039578, 0.00024246, 7.27282530, 0.99879102, 0.99936176, 0.49324129],\
+[	-6.27322120, -0.00039573, 0.00024243, 7.27282547, 0.99879117, 0.99936184, 0.49324129],\
+[	-6.27322132, -0.00039568, 0.00024240, 7.27282564, 0.99879133, 0.99936192, 0.49324124],\
+[	-6.27322144, -0.00039563, 0.00024237, 7.27282581, 0.99879148, 0.99936200, 0.49324135],\
+[	-6.27322156, -0.00039558, 0.00024234, 7.27282598, 0.99879163, 0.99936208, 0.49324138],\
+[	-6.27322168, -0.00039553, 0.00024231, 7.27282616, 0.99879179, 0.99936216, 0.49324133],\
+[	-6.27322180, -0.00039548, 0.00024228, 7.27282633, 0.99879194, 0.99936225, 0.49324140],\
+[	-6.27322193, -0.00039543, 0.00024225, 7.27282650, 0.99879210, 0.99936233, 0.49324130],\
+[	-6.27322205, -0.00039538, 0.00024221, 7.27282667, 0.99879225, 0.99936241, 0.49324149],\
+[	-6.27322217, -0.00039533, 0.00024218, 7.27282684, 0.99879241, 0.99936249, 0.49324143],\
+[	-6.27322229, -0.00039528, 0.00024215, 7.27282701, 0.99879256, 0.99936257, 0.49324140],\
+[	-6.27322241, -0.00039522, 0.00024212, 7.27282718, 0.99879271, 0.99936265, 0.49324158],\
+[	-6.27322253, -0.00039517, 0.00024209, 7.27282736, 0.99879287, 0.99936273, 0.49324147],\
+[	-6.27322265, -0.00039512, 0.00024206, 7.27282753, 0.99879302, 0.99936282, 0.49324156],\
+[	-6.27322277, -0.00039507, 0.00024203, 7.27282770, 0.99879318, 0.99936290, 0.49324153],\
+[	-6.27322289, -0.00039502, 0.00024200, 7.27282787, 0.99879333, 0.99936298, 0.49324143],\
+[	-6.27322301, -0.00039497, 0.00024197, 7.27282804, 0.99879349, 0.99936306, 0.49324134],\
+[	-6.27322313, -0.00039492, 0.00024194, 7.27282821, 0.99879364, 0.99936314, 0.49324161],\
+[	-6.27322325, -0.00039487, 0.00024191, 7.27282838, 0.99879379, 0.99936322, 0.49324161],\
+[	-6.27322337, -0.00039482, 0.00024187, 7.27282855, 0.99879395, 0.99936330, 0.49324164],\
+[	-6.27322349, -0.00039477, 0.00024184, 7.27282872, 0.99879410, 0.99936339, 0.49324176],\
+[	-6.27322362, -0.00039472, 0.00024181, 7.27282889, 0.99879425, 0.99936347, 0.49324160],\
+[	-6.27322374, -0.00039467, 0.00024178, 7.27282907, 0.99879441, 0.99936355, 0.49324157],\
+[	-6.27322386, -0.00039462, 0.00024175, 7.27282924, 0.99879456, 0.99936363, 0.49324158],\
+[	-6.27322398, -0.00039457, 0.00024172, 7.27282941, 0.99879472, 0.99936371, 0.49324166],\
+[	-6.27322410, -0.00039452, 0.00024169, 7.27282958, 0.99879487, 0.99936379, 0.49324172],\
+[	-6.27322422, -0.00039447, 0.00024166, 7.27282975, 0.99879502, 0.99936387, 0.49324177],\
+[	-6.27322434, -0.00039442, 0.00024163, 7.27282992, 0.99879518, 0.99936395, 0.49324175],\
+[	-6.27322446, -0.00039437, 0.00024160, 7.27283009, 0.99879533, 0.99936403, 0.49324173],\
+[	-6.27322458, -0.00039432, 0.00024157, 7.27283026, 0.99879548, 0.99936412, 0.49324183],\
+[	-6.27322470, -0.00039427, 0.00024154, 7.27283043, 0.99879564, 0.99936420, 0.49324189],\
+[	-6.27322482, -0.00039422, 0.00024150, 7.27283060, 0.99879579, 0.99936428, 0.49324183],\
+[	-6.27322494, -0.00039417, 0.00024147, 7.27283077, 0.99879594, 0.99936436, 0.49324176],\
+[	-6.27322506, -0.00039412, 0.00024144, 7.27283094, 0.99879610, 0.99936444, 0.49324183],\
+[	-6.27322518, -0.00039407, 0.00024141, 7.27283111, 0.99879625, 0.99936452, 0.49324186],\
+[	-6.27322530, -0.00039402, 0.00024138, 7.27283128, 0.99879640, 0.99936460, 0.49324198],\
+[	-6.27322542, -0.00039397, 0.00024135, 7.27283145, 0.99879656, 0.99936468, 0.49324210],\
+[	-6.27322554, -0.00039392, 0.00024132, 7.27283162, 0.99879671, 0.99936476, 0.49324198],\
+[	-6.27322566, -0.00039387, 0.00024129, 7.27283179, 0.99879686, 0.99936484, 0.49324205],\
+[	-6.27322578, -0.00039382, 0.00024126, 7.27283196, 0.99879702, 0.99936492, 0.49324207],\
+[	-6.27322590, -0.00039377, 0.00024123, 7.27283213, 0.99879717, 0.99936501, 0.49324191],\
+[	-6.27322602, -0.00039372, 0.00024120, 7.27283230, 0.99879732, 0.99936509, 0.49324201],\
+[	-6.27322614, -0.00039367, 0.00024117, 7.27283247, 0.99879748, 0.99936517, 0.49324194],\
+[	-6.27322626, -0.00039362, 0.00024114, 7.27283264, 0.99879763, 0.99936525, 0.49324211],\
+[	-6.27322638, -0.00039357, 0.00024111, 7.27283281, 0.99879778, 0.99936533, 0.49324210],\
+[	-6.27322650, -0.00039352, 0.00024107, 7.27283298, 0.99879793, 0.99936541, 0.49324195],\
+[	-6.27322662, -0.00039347, 0.00024104, 7.27283315, 0.99879809, 0.99936549, 0.49324205],\
+[	-6.27322674, -0.00039342, 0.00024101, 7.27283332, 0.99879824, 0.99936557, 0.49324210],\
+[	-6.27322686, -0.00039337, 0.00024098, 7.27283349, 0.99879839, 0.99936565, 0.49324214],\
+[	-6.27322698, -0.00039332, 0.00024095, 7.27283366, 0.99879855, 0.99936573, 0.49324202],\
+[	-6.27322710, -0.00039327, 0.00024092, 7.27283383, 0.99879870, 0.99936581, 0.49324209],\
+[	-6.27322722, -0.00039322, 0.00024089, 7.27283400, 0.99879885, 0.99936589, 0.49324208],\
+[	-6.27322734, -0.00039317, 0.00024086, 7.27283417, 0.99879900, 0.99936597, 0.49324207],\
+[	-6.27322746, -0.00039312, 0.00024083, 7.27283434, 0.99879916, 0.99936605, 0.49324215],\
+[	-6.27322757, -0.00039307, 0.00024080, 7.27283451, 0.99879931, 0.99936613, 0.49324220],\
+[	-6.27322769, -0.00039302, 0.00024077, 7.27283468, 0.99879946, 0.99936621, 0.49324229],\
+[	-6.27322781, -0.00039297, 0.00024074, 7.27283485, 0.99879961, 0.99936630, 0.49324226],\
+[	-6.27322793, -0.00039292, 0.00024071, 7.27283502, 0.99879977, 0.99936638, 0.49324230],\
+[	-6.27322805, -0.00039287, 0.00024068, 7.27283519, 0.99879992, 0.99936646, 0.49324236],\
+[	-6.27322817, -0.00039282, 0.00024065, 7.27283535, 0.99880007, 0.99936654, 0.49324229],\
+[	-6.27322829, -0.00039277, 0.00024062, 7.27283552, 0.99880022, 0.99936662, 0.49324245],\
+[	-6.27322841, -0.00039272, 0.00024059, 7.27283569, 0.99880038, 0.99936670, 0.49324230],\
+[	-6.27322853, -0.00039267, 0.00024055, 7.27283586, 0.99880053, 0.99936678, 0.49324241],\
+[	-6.27322865, -0.00039262, 0.00024052, 7.27283603, 0.99880068, 0.99936686, 0.49324234],\
+[	-6.27322877, -0.00039257, 0.00024049, 7.27283620, 0.99880083, 0.99936694, 0.49324231],\
+[	-6.27322889, -0.00039252, 0.00024046, 7.27283637, 0.99880098, 0.99936702, 0.49324244],\
+[	-6.27322901, -0.00039247, 0.00024043, 7.27283654, 0.99880114, 0.99936710, 0.49324243],\
+[	-6.27322913, -0.00039242, 0.00024040, 7.27283671, 0.99880129, 0.99936718, 0.49324251],\
+[	-6.27322924, -0.00039237, 0.00024037, 7.27283688, 0.99880144, 0.99936726, 0.49324242],\
+[	-6.27322936, -0.00039232, 0.00024034, 7.27283704, 0.99880159, 0.99936734, 0.49324245],\
+[	-6.27322948, -0.00039227, 0.00024031, 7.27283721, 0.99880174, 0.99936742, 0.49324248],\
+[	-6.27322960, -0.00039222, 0.00024028, 7.27283738, 0.99880190, 0.99936750, 0.49324240],\
+[	-6.27322972, -0.00039217, 0.00024025, 7.27283755, 0.99880205, 0.99936758, 0.49324256],\
+[	-6.27322984, -0.00039212, 0.00024022, 7.27283772, 0.99880220, 0.99936766, 0.49324270],\
+[	-6.27322996, -0.00039207, 0.00024019, 7.27283789, 0.99880235, 0.99936774, 0.49324265],\
+[	-6.27323008, -0.00039202, 0.00024016, 7.27283806, 0.99880250, 0.99936782, 0.49324254],\
+[	-6.27323020, -0.00039197, 0.00024013, 7.27283822, 0.99880265, 0.99936790, 0.49324268],\
+[	-6.27323032, -0.00039192, 0.00024010, 7.27283839, 0.99880281, 0.99936798, 0.49324263],\
+[	-6.27323043, -0.00039187, 0.00024007, 7.27283856, 0.99880296, 0.99936806, 0.49324257],\
+[	-6.27323055, -0.00039182, 0.00024004, 7.27283873, 0.99880311, 0.99936814, 0.49324271],\
+[	-6.27323067, -0.00039177, 0.00024001, 7.27283890, 0.99880326, 0.99936822, 0.49324263],\
+[	-6.27323079, -0.00039172, 0.00023998, 7.27283907, 0.99880341, 0.99936830, 0.49324259],\
+[	-6.27323091, -0.00039167, 0.00023995, 7.27283923, 0.99880356, 0.99936838, 0.49324272],\
+[	-6.27323103, -0.00039162, 0.00023992, 7.27283940, 0.99880372, 0.99936846, 0.49324266],\
+[	-6.27323115, -0.00039158, 0.00023989, 7.27283957, 0.99880387, 0.99936854, 0.49324277],\
+[	-6.27323126, -0.00039153, 0.00023985, 7.27283974, 0.99880402, 0.99936862, 0.49324283],\
+[	-6.27323138, -0.00039148, 0.00023982, 7.27283991, 0.99880417, 0.99936870, 0.49324288],\
+[	-6.27323150, -0.00039143, 0.00023979, 7.27284008, 0.99880432, 0.99936878, 0.49324274],\
+[	-6.27323162, -0.00039138, 0.00023976, 7.27284024, 0.99880447, 0.99936886, 0.49324289],\
+[	-6.27323174, -0.00039133, 0.00023973, 7.27284041, 0.99880462, 0.99936894, 0.49324287],\
+[	-6.27323186, -0.00039128, 0.00023970, 7.27284058, 0.99880477, 0.99936902, 0.49324285],\
+[	-6.27323198, -0.00039123, 0.00023967, 7.27284075, 0.99880493, 0.99936910, 0.49324283],\
+[	-6.27323209, -0.00039118, 0.00023964, 7.27284091, 0.99880508, 0.99936918, 0.49324290],\
+[	-6.27323221, -0.00039113, 0.00023961, 7.27284108, 0.99880523, 0.99936926, 0.49324280],\
+[	-6.27323233, -0.00039108, 0.00023958, 7.27284125, 0.99880538, 0.99936934, 0.49324296],\
+[	-6.27323245, -0.00039103, 0.00023955, 7.27284142, 0.99880553, 0.99936942, 0.49324284],\
+[	-6.27323257, -0.00039098, 0.00023952, 7.27284159, 0.99880568, 0.99936950, 0.49324285],\
+[	-6.27323268, -0.00039093, 0.00023949, 7.27284175, 0.99880583, 0.99936958, 0.49324302],\
+[	-6.27323280, -0.00039088, 0.00023946, 7.27284192, 0.99880598, 0.99936966, 0.49324295],\
+[	-6.27323292, -0.00039083, 0.00023943, 7.27284209, 0.99880613, 0.99936974, 0.49324320],\
+[	-6.27323304, -0.00039078, 0.00023940, 7.27284226, 0.99880628, 0.99936982, 0.49324315],\
+[	-6.27323316, -0.00039073, 0.00023937, 7.27284242, 0.99880643, 0.99936990, 0.49324296],\
+[	-6.27323328, -0.00039069, 0.00023934, 7.27284259, 0.99880658, 0.99936997, 0.49324298],\
+[	-6.27323339, -0.00039064, 0.00023931, 7.27284276, 0.99880674, 0.99937005, 0.49324310],\
+[	-6.27323351, -0.00039059, 0.00023928, 7.27284292, 0.99880689, 0.99937013, 0.49324316],\
+[	-6.27323363, -0.00039054, 0.00023925, 7.27284309, 0.99880704, 0.99937021, 0.49324305],\
+[	-6.27323375, -0.00039049, 0.00023922, 7.27284326, 0.99880719, 0.99937029, 0.49324317],\
+[	-6.27323387, -0.00039044, 0.00023919, 7.27284343, 0.99880734, 0.99937037, 0.49324316],\
+[	-6.27323398, -0.00039039, 0.00023916, 7.27284359, 0.99880749, 0.99937045, 0.49324322],\
+[	-6.27323410, -0.00039034, 0.00023913, 7.27284376, 0.99880764, 0.99937053, 0.49324310],\
+[	-6.27323422, -0.00039029, 0.00023910, 7.27284393, 0.99880779, 0.99937061, 0.49324325],\
+[	-6.27323434, -0.00039024, 0.00023907, 7.27284409, 0.99880794, 0.99937069, 0.49324319],\
+[	-6.27323445, -0.00039019, 0.00023904, 7.27284426, 0.99880809, 0.99937077, 0.49324326],\
+[	-6.27323457, -0.00039014, 0.00023901, 7.27284443, 0.99880824, 0.99937085, 0.49324329],\
+[	-6.27323469, -0.00039009, 0.00023898, 7.27284460, 0.99880839, 0.99937093, 0.49324333],\
+[	-6.27323481, -0.00039005, 0.00023895, 7.27284476, 0.99880854, 0.99937101, 0.49324318],\
+[	-6.27323493, -0.00039000, 0.00023892, 7.27284493, 0.99880869, 0.99937109, 0.49324318],\
+[	-6.27323504, -0.00038995, 0.00023889, 7.27284510, 0.99880884, 0.99937117, 0.49324337],\
+[	-6.27323516, -0.00038990, 0.00023886, 7.27284526, 0.99880899, 0.99937124, 0.49324337],\
+[	-6.27323528, -0.00038985, 0.00023883, 7.27284543, 0.99880914, 0.99937132, 0.49324350],\
+[	-6.27323540, -0.00038980, 0.00023880, 7.27284560, 0.99880929, 0.99937140, 0.49324334],\
+[	-6.27323551, -0.00038975, 0.00023877, 7.27284576, 0.99880944, 0.99937148, 0.49324341],\
+[	-6.27323563, -0.00038970, 0.00023874, 7.27284593, 0.99880959, 0.99937156, 0.49324338],\
+[	-6.27323575, -0.00038965, 0.00023871, 7.27284609, 0.99880974, 0.99937164, 0.49324344],\
+[	-6.27323587, -0.00038960, 0.00023868, 7.27284626, 0.99880989, 0.99937172, 0.49324362],\
+[	-6.27323598, -0.00038955, 0.00023865, 7.27284643, 0.99881004, 0.99937180, 0.49324347],\
+[	-6.27323610, -0.00038951, 0.00023862, 7.27284659, 0.99881019, 0.99937188, 0.49324345],\
+[	-6.27323622, -0.00038946, 0.00023859, 7.27284676, 0.99881034, 0.99937196, 0.49324353],\
+[	-6.27323633, -0.00038941, 0.00023856, 7.27284693, 0.99881049, 0.99937204, 0.49324361],\
+[	-6.27323645, -0.00038936, 0.00023853, 7.27284709, 0.99881064, 0.99937211, 0.49324364],\
+[	-6.27323657, -0.00038931, 0.00023850, 7.27284726, 0.99881079, 0.99937219, 0.49324360],\
+[	-6.27323669, -0.00038926, 0.00023847, 7.27284743, 0.99881094, 0.99937227, 0.49324354],\
+[	-6.27323680, -0.00038921, 0.00023844, 7.27284759, 0.99881109, 0.99937235, 0.49324359],\
+[	-6.27323692, -0.00038916, 0.00023841, 7.27284776, 0.99881124, 0.99937243, 0.49324355],\
+[	-6.27323704, -0.00038911, 0.00023838, 7.27284792, 0.99881139, 0.99937251, 0.49324369],\
+[	-6.27323715, -0.00038907, 0.00023835, 7.27284809, 0.99881154, 0.99937259, 0.49324366],\
+[	-6.27323727, -0.00038902, 0.00023832, 7.27284826, 0.99881169, 0.99937267, 0.49324363],\
+[	-6.27323739, -0.00038897, 0.00023829, 7.27284842, 0.99881184, 0.99937275, 0.49324368],\
+[	-6.27323751, -0.00038892, 0.00023826, 7.27284859, 0.99881198, 0.99937282, 0.49324385],\
+[	-6.27323762, -0.00038887, 0.00023823, 7.27284875, 0.99881213, 0.99937290, 0.49324375],\
+[	-6.27323774, -0.00038882, 0.00023820, 7.27284892, 0.99881228, 0.99937298, 0.49324381],\
+[	-6.27323786, -0.00038877, 0.00023817, 7.27284908, 0.99881243, 0.99937306, 0.49324383],\
+[	-6.27323797, -0.00038872, 0.00023814, 7.27284925, 0.99881258, 0.99937314, 0.49324389],\
+[	-6.27323809, -0.00038867, 0.00023811, 7.27284942, 0.99881273, 0.99937322, 0.49324387],\
+[	-6.27323821, -0.00038863, 0.00023808, 7.27284958, 0.99881288, 0.99937330, 0.49324385],\
+[	-6.27323832, -0.00038858, 0.00023805, 7.27284975, 0.99881303, 0.99937338, 0.49324378],\
+[	-6.27323844, -0.00038853, 0.00023802, 7.27284991, 0.99881318, 0.99937345, 0.49324377],\
+[	-6.27323856, -0.00038848, 0.00023799, 7.27285008, 0.99881333, 0.99937353, 0.49324388],\
+[	-6.27323867, -0.00038843, 0.00023796, 7.27285024, 0.99881348, 0.99937361, 0.49324392],\
+[	-6.27323879, -0.00038838, 0.00023793, 7.27285041, 0.99881362, 0.99937369, 0.49324396],\
+[	-6.27323891, -0.00038833, 0.00023790, 7.27285057, 0.99881377, 0.99937377, 0.49324387],\
+[	-6.27323902, -0.00038828, 0.00023787, 7.27285074, 0.99881392, 0.99937385, 0.49324395],\
+[	-6.27323914, -0.00038824, 0.00023784, 7.27285090, 0.99881407, 0.99937393, 0.49324401],\
+[	-6.27323926, -0.00038819, 0.00023781, 7.27285107, 0.99881422, 0.99937400, 0.49324397],\
+[	-6.27323937, -0.00038814, 0.00023778, 7.27285124, 0.99881437, 0.99937408, 0.49324409],\
+[	-6.27323949, -0.00038809, 0.00023775, 7.27285140, 0.99881452, 0.99937416, 0.49324390],\
+[	-6.27323961, -0.00038804, 0.00023772, 7.27285157, 0.99881467, 0.99937424, 0.49324412],\
+[	-6.27323972, -0.00038799, 0.00023769, 7.27285173, 0.99881481, 0.99937432, 0.49324405],\
+[	-6.27323984, -0.00038794, 0.00023766, 7.27285190, 0.99881496, 0.99937440, 0.49324413],\
+[	-6.27323996, -0.00038789, 0.00023763, 7.27285206, 0.99881511, 0.99937448, 0.49324398],\
+[	-6.27324007, -0.00038785, 0.00023760, 7.27285223, 0.99881526, 0.99937455, 0.49324408],\
+[	-6.27324019, -0.00038780, 0.00023757, 7.27285239, 0.99881541, 0.99937463, 0.49324411],\
+[	-6.27324030, -0.00038775, 0.00023754, 7.27285256, 0.99881556, 0.99937471, 0.49324404],\
+[	-6.27324042, -0.00038770, 0.00023751, 7.27285272, 0.99881571, 0.99937479, 0.49324417],\
+[	-6.27324054, -0.00038765, 0.00023748, 7.27285289, 0.99881585, 0.99937487, 0.49324417],\
+[	-6.27324065, -0.00038760, 0.00023745, 7.27285305, 0.99881600, 0.99937495, 0.49324417],\
+[	-6.27324077, -0.00038755, 0.00023742, 7.27285321, 0.99881615, 0.99937502, 0.49324410],\
+[	-6.27324089, -0.00038751, 0.00023739, 7.27285338, 0.99881630, 0.99937510, 0.49324415],\
+[	-6.27324100, -0.00038746, 0.00023736, 7.27285354, 0.99881645, 0.99937518, 0.49324415],\
+[	-6.27324112, -0.00038741, 0.00023733, 7.27285371, 0.99881660, 0.99937526, 0.49324428],\
+[	-6.27324123, -0.00038736, 0.00023730, 7.27285387, 0.99881674, 0.99937534, 0.49324427],\
+[	-6.27324135, -0.00038731, 0.00023727, 7.27285404, 0.99881689, 0.99937541, 0.49324429],\
+[	-6.27324147, -0.00038726, 0.00023724, 7.27285420, 0.99881704, 0.99937549, 0.49324429],\
+[	-6.27324158, -0.00038722, 0.00023721, 7.27285437, 0.99881719, 0.99937557, 0.49324431],\
+[	-6.27324170, -0.00038717, 0.00023718, 7.27285453, 0.99881734, 0.99937565, 0.49324418],\
+[	-6.27324181, -0.00038712, 0.00023715, 7.27285469, 0.99881748, 0.99937573, 0.49324436],\
+[	-6.27324193, -0.00038707, 0.00023712, 7.27285486, 0.99881763, 0.99937581, 0.49324427],\
+[	-6.27324205, -0.00038702, 0.00023709, 7.27285502, 0.99881778, 0.99937588, 0.49324438],\
+[	-6.27324216, -0.00038697, 0.00023706, 7.27285519, 0.99881793, 0.99937596, 0.49324441],\
+[	-6.27324228, -0.00038693, 0.00023704, 7.27285535, 0.99881807, 0.99937604, 0.49324425],\
+[	-6.27324239, -0.00038688, 0.00023701, 7.27285552, 0.99881822, 0.99937612, 0.49324444],\
+[	-6.27324251, -0.00038683, 0.00023698, 7.27285568, 0.99881837, 0.99937620, 0.49324437],\
+[	-6.27324262, -0.00038678, 0.00023695, 7.27285584, 0.99881852, 0.99937627, 0.49324451],\
+[	-6.27324274, -0.00038673, 0.00023692, 7.27285601, 0.99881867, 0.99937635, 0.49324443],\
+[	-6.27324286, -0.00038668, 0.00023689, 7.27285617, 0.99881881, 0.99937643, 0.49324463],\
+[	-6.27324297, -0.00038664, 0.00023686, 7.27285634, 0.99881896, 0.99937651, 0.49324464],\
+[	-6.27324309, -0.00038659, 0.00023683, 7.27285650, 0.99881911, 0.99937659, 0.49324460],\
+[	-6.27324320, -0.00038654, 0.00023680, 7.27285666, 0.99881926, 0.99937666, 0.49324474],\
+[	-6.27324332, -0.00038649, 0.00023677, 7.27285683, 0.99881940, 0.99937674, 0.49324457],\
+[	-6.27324343, -0.00038644, 0.00023674, 7.27285699, 0.99881955, 0.99937682, 0.49324464],\
+[	-6.27324355, -0.00038639, 0.00023671, 7.27285716, 0.99881970, 0.99937690, 0.49324452],\
+[	-6.27324366, -0.00038635, 0.00023668, 7.27285732, 0.99881985, 0.99937697, 0.49324451],\
+[	-6.27324378, -0.00038630, 0.00023665, 7.27285748, 0.99881999, 0.99937705, 0.49324463],\
+[	-6.27324390, -0.00038625, 0.00023662, 7.27285765, 0.99882014, 0.99937713, 0.49324460],\
+[	-6.27324401, -0.00038620, 0.00023659, 7.27285781, 0.99882029, 0.99937721, 0.49324461],\
+[	-6.27324413, -0.00038615, 0.00023656, 7.27285797, 0.99882043, 0.99937729, 0.49324473],\
+[	-6.27324424, -0.00038610, 0.00023653, 7.27285814, 0.99882058, 0.99937736, 0.49324474],\
+[	-6.27324436, -0.00038606, 0.00023650, 7.27285830, 0.99882073, 0.99937744, 0.49324465],\
+[	-6.27324447, -0.00038601, 0.00023647, 7.27285846, 0.99882088, 0.99937752, 0.49324475],\
+[	-6.27324459, -0.00038596, 0.00023644, 7.27285863, 0.99882102, 0.99937760, 0.49324482],\
+[	-6.27324470, -0.00038591, 0.00023641, 7.27285879, 0.99882117, 0.99937767, 0.49324468],\
+[	-6.27324482, -0.00038586, 0.00023638, 7.27285895, 0.99882132, 0.99937775, 0.49324472],\
+[	-6.27324493, -0.00038582, 0.00023636, 7.27285912, 0.99882146, 0.99937783, 0.49324478],\
+[	-6.27324505, -0.00038577, 0.00023633, 7.27285928, 0.99882161, 0.99937791, 0.49324486],\
+[	-6.27324516, -0.00038572, 0.00023630, 7.27285944, 0.99882176, 0.99937798, 0.49324500],\
+[	-6.27324528, -0.00038567, 0.00023627, 7.27285961, 0.99882190, 0.99937806, 0.49324482],\
+[	-6.27324539, -0.00038562, 0.00023624, 7.27285977, 0.99882205, 0.99937814, 0.49324496],\
+[	-6.27324551, -0.00038558, 0.00023621, 7.27285993, 0.99882220, 0.99937822, 0.49324495],\
+[	-6.27324562, -0.00038553, 0.00023618, 7.27286009, 0.99882234, 0.99937829, 0.49324492],\
+[	-6.27324574, -0.00038548, 0.00023615, 7.27286026, 0.99882249, 0.99937837, 0.49324476],\
+[	-6.27324585, -0.00038543, 0.00023612, 7.27286042, 0.99882264, 0.99937845, 0.49324499],\
+[	-6.27324597, -0.00038538, 0.00023609, 7.27286058, 0.99882278, 0.99937853, 0.49324495],\
+[	-6.27324608, -0.00038534, 0.00023606, 7.27286075, 0.99882293, 0.99937860, 0.49324497],\
+[	-6.27324620, -0.00038529, 0.00023603, 7.27286091, 0.99882308, 0.99937868, 0.49324499],\
+[	-6.27324631, -0.00038524, 0.00023600, 7.27286107, 0.99882322, 0.99937876, 0.49324496],\
+[	-6.27324643, -0.00038519, 0.00023597, 7.27286123, 0.99882337, 0.99937884, 0.49324507],\
+[	-6.27324654, -0.00038514, 0.00023594, 7.27286140, 0.99882352, 0.99937891, 0.49324506],\
+[	-6.27324666, -0.00038510, 0.00023591, 7.27286156, 0.99882366, 0.99937899, 0.49324519],\
+[	-6.27324677, -0.00038505, 0.00023588, 7.27286172, 0.99882381, 0.99937907, 0.49324510],\
+[	-6.27324689, -0.00038500, 0.00023586, 7.27286188, 0.99882396, 0.99937914, 0.49324509],\
+[	-6.27324700, -0.00038495, 0.00023583, 7.27286205, 0.99882410, 0.99937922, 0.49324510],\
+[	-6.27324711, -0.00038490, 0.00023580, 7.27286221, 0.99882425, 0.99937930, 0.49324517],\
+[	-6.27324723, -0.00038486, 0.00023577, 7.27286237, 0.99882440, 0.99937938, 0.49324527],\
+[	-6.27324734, -0.00038481, 0.00023574, 7.27286253, 0.99882454, 0.99937945, 0.49324519],\
+[	-6.27324746, -0.00038476, 0.00023571, 7.27286270, 0.99882469, 0.99937953, 0.49324516],\
+[	-6.27324757, -0.00038471, 0.00023568, 7.27286286, 0.99882483, 0.99937961, 0.49324513],\
+[	-6.27324769, -0.00038467, 0.00023565, 7.27286302, 0.99882498, 0.99937968, 0.49324519],\
+[	-6.27324780, -0.00038462, 0.00023562, 7.27286318, 0.99882513, 0.99937976, 0.49324509],\
+[	-6.27324792, -0.00038457, 0.00023559, 7.27286335, 0.99882527, 0.99937984, 0.49324532],\
+[	-6.27324803, -0.00038452, 0.00023556, 7.27286351, 0.99882542, 0.99937992, 0.49324518],\
+[	-6.27324814, -0.00038447, 0.00023553, 7.27286367, 0.99882556, 0.99937999, 0.49324537],\
+[	-6.27324826, -0.00038443, 0.00023550, 7.27286383, 0.99882571, 0.99938007, 0.49324536],\
+[	-6.27324837, -0.00038438, 0.00023547, 7.27286399, 0.99882586, 0.99938015, 0.49324540],\
+[	-6.27324849, -0.00038433, 0.00023545, 7.27286416, 0.99882600, 0.99938022, 0.49324531],\
+[	-6.27324860, -0.00038428, 0.00023542, 7.27286432, 0.99882615, 0.99938030, 0.49324544],\
+[	-6.27324872, -0.00038424, 0.00023539, 7.27286448, 0.99882629, 0.99938038, 0.49324534],\
+[	-6.27324883, -0.00038419, 0.00023536, 7.27286464, 0.99882644, 0.99938045, 0.49324551],\
+[	-6.27324894, -0.00038414, 0.00023533, 7.27286480, 0.99882658, 0.99938053, 0.49324541],\
+[	-6.27324906, -0.00038409, 0.00023530, 7.27286497, 0.99882673, 0.99938061, 0.49324551],\
+[	-6.27324917, -0.00038405, 0.00023527, 7.27286513, 0.99882688, 0.99938068, 0.49324541],\
+[	-6.27324929, -0.00038400, 0.00023524, 7.27286529, 0.99882702, 0.99938076, 0.49324543],\
+[	-6.27324940, -0.00038395, 0.00023521, 7.27286545, 0.99882717, 0.99938084, 0.49324548],\
+[	-6.27324951, -0.00038390, 0.00023518, 7.27286561, 0.99882731, 0.99938092, 0.49324547],\
+[	-6.27324963, -0.00038385, 0.00023515, 7.27286577, 0.99882746, 0.99938099, 0.49324552],\
+[	-6.27324974, -0.00038381, 0.00023512, 7.27286594, 0.99882760, 0.99938107, 0.49324561],\
+[	-6.27324986, -0.00038376, 0.00023509, 7.27286610, 0.99882775, 0.99938115, 0.49324575],\
+[	-6.27324997, -0.00038371, 0.00023507, 7.27286626, 0.99882789, 0.99938122, 0.49324555],\
+[	-6.27325008, -0.00038366, 0.00023504, 7.27286642, 0.99882804, 0.99938130, 0.49324561],\
+[	-6.27325020, -0.00038362, 0.00023501, 7.27286658, 0.99882818, 0.99938138, 0.49324560],\
+[	-6.27325031, -0.00038357, 0.00023498, 7.27286674, 0.99882833, 0.99938145, 0.49324567],\
+[	-6.27325043, -0.00038352, 0.00023495, 7.27286690, 0.99882847, 0.99938153, 0.49324557],\
+[	-6.27325054, -0.00038347, 0.00023492, 7.27286706, 0.99882862, 0.99938161, 0.49324572],\
+[	-6.27325065, -0.00038343, 0.00023489, 7.27286723, 0.99882877, 0.99938168, 0.49324570],\
+[	-6.27325077, -0.00038338, 0.00023486, 7.27286739, 0.99882891, 0.99938176, 0.49324576],\
+[	-6.27325088, -0.00038333, 0.00023483, 7.27286755, 0.99882906, 0.99938184, 0.49324591],\
+[	-6.27325099, -0.00038328, 0.00023480, 7.27286771, 0.99882920, 0.99938191, 0.49324569],\
+[	-6.27325111, -0.00038324, 0.00023477, 7.27286787, 0.99882935, 0.99938199, 0.49324559],\
+[	-6.27325122, -0.00038319, 0.00023475, 7.27286803, 0.99882949, 0.99938207, 0.49324564],\
+[	-6.27325133, -0.00038314, 0.00023472, 7.27286819, 0.99882964, 0.99938214, 0.49324576],\
+[	-6.27325145, -0.00038309, 0.00023469, 7.27286835, 0.99882978, 0.99938222, 0.49324581],\
+[	-6.27325156, -0.00038305, 0.00023466, 7.27286851, 0.99882993, 0.99938229, 0.49324590],\
+[	-6.27325168, -0.00038300, 0.00023463, 7.27286868, 0.99883007, 0.99938237, 0.49324573],\
+[	-6.27325179, -0.00038295, 0.00023460, 7.27286884, 0.99883021, 0.99938245, 0.49324578],\
+[	-6.27325190, -0.00038291, 0.00023457, 7.27286900, 0.99883036, 0.99938252, 0.49324585],\
+[	-6.27325202, -0.00038286, 0.00023454, 7.27286916, 0.99883050, 0.99938260, 0.49324579],\
+[	-6.27325213, -0.00038281, 0.00023451, 7.27286932, 0.99883065, 0.99938268, 0.49324589],\
+[	-6.27325224, -0.00038276, 0.00023448, 7.27286948, 0.99883079, 0.99938275, 0.49324588],\
+[	-6.27325236, -0.00038272, 0.00023446, 7.27286964, 0.99883094, 0.99938283, 0.49324586],\
+[	-6.27325247, -0.00038267, 0.00023443, 7.27286980, 0.99883108, 0.99938291, 0.49324588],\
+[	-6.27325258, -0.00038262, 0.00023440, 7.27286996, 0.99883123, 0.99938298, 0.49324600],\
+[	-6.27325269, -0.00038257, 0.00023437, 7.27287012, 0.99883137, 0.99938306, 0.49324602],\
+[	-6.27325281, -0.00038253, 0.00023434, 7.27287028, 0.99883152, 0.99938313, 0.49324593],\
+[	-6.27325292, -0.00038248, 0.00023431, 7.27287044, 0.99883166, 0.99938321, 0.49324600],\
+[	-6.27325303, -0.00038243, 0.00023428, 7.27287060, 0.99883180, 0.99938329, 0.49324594],\
+[	-6.27325315, -0.00038238, 0.00023425, 7.27287076, 0.99883195, 0.99938336, 0.49324594],\
+[	-6.27325326, -0.00038234, 0.00023422, 7.27287092, 0.99883209, 0.99938344, 0.49324616],\
+[	-6.27325337, -0.00038229, 0.00023419, 7.27287108, 0.99883224, 0.99938352, 0.49324609],\
+[	-6.27325349, -0.00038224, 0.00023417, 7.27287124, 0.99883238, 0.99938359, 0.49324615],\
+[	-6.27325360, -0.00038220, 0.00023414, 7.27287140, 0.99883253, 0.99938367, 0.49324616],\
+[	-6.27325371, -0.00038215, 0.00023411, 7.27287156, 0.99883267, 0.99938374, 0.49324616],\
+[	-6.27325383, -0.00038210, 0.00023408, 7.27287172, 0.99883281, 0.99938382, 0.49324603],\
+[	-6.27325394, -0.00038205, 0.00023405, 7.27287188, 0.99883296, 0.99938390, 0.49324614],\
+[	-6.27325405, -0.00038201, 0.00023402, 7.27287204, 0.99883310, 0.99938397, 0.49324629],\
+[	-6.27325416, -0.00038196, 0.00023399, 7.27287220, 0.99883325, 0.99938405, 0.49324628],\
+[	-6.27325428, -0.00038191, 0.00023396, 7.27287236, 0.99883339, 0.99938412, 0.49324634],\
+[	-6.27325439, -0.00038187, 0.00023393, 7.27287252, 0.99883353, 0.99938420, 0.49324618],\
+[	-6.27325450, -0.00038182, 0.00023391, 7.27287268, 0.99883368, 0.99938428, 0.49324620],\
+[	-6.27325462, -0.00038177, 0.00023388, 7.27287284, 0.99883382, 0.99938435, 0.49324621],\
+[	-6.27325473, -0.00038172, 0.00023385, 7.27287300, 0.99883397, 0.99938443, 0.49324620],\
+[	-6.27325484, -0.00038168, 0.00023382, 7.27287316, 0.99883411, 0.99938450, 0.49324631],\
+[	-6.27325495, -0.00038163, 0.00023379, 7.27287332, 0.99883425, 0.99938458, 0.49324616],\
+[	-6.27325507, -0.00038158, 0.00023376, 7.27287348, 0.99883440, 0.99938466, 0.49324629],\
+[	-6.27325518, -0.00038154, 0.00023373, 7.27287364, 0.99883454, 0.99938473, 0.49324635],\
+[	-6.27325529, -0.00038149, 0.00023370, 7.27287380, 0.99883469, 0.99938481, 0.49324648],\
+[	-6.27325540, -0.00038144, 0.00023367, 7.27287396, 0.99883483, 0.99938488, 0.49324638],\
+[	-6.27325552, -0.00038140, 0.00023365, 7.27287412, 0.99883497, 0.99938496, 0.49324637],\
+[	-6.27325563, -0.00038135, 0.00023362, 7.27287428, 0.99883512, 0.99938503, 0.49324641],\
+[	-6.27325574, -0.00038130, 0.00023359, 7.27287444, 0.99883526, 0.99938511, 0.49324645],\
+[	-6.27325585, -0.00038125, 0.00023356, 7.27287460, 0.99883540, 0.99938519, 0.49324647],\
+[	-6.27325597, -0.00038121, 0.00023353, 7.27287476, 0.99883555, 0.99938526, 0.49324642],\
+[	-6.27325608, -0.00038116, 0.00023350, 7.27287492, 0.99883569, 0.99938534, 0.49324651],\
+[	-6.27325619, -0.00038111, 0.00023347, 7.27287508, 0.99883583, 0.99938541, 0.49324649],\
+[	-6.27325630, -0.00038107, 0.00023344, 7.27287524, 0.99883598, 0.99938549, 0.49324647],\
+[	-6.27325642, -0.00038102, 0.00023342, 7.27287540, 0.99883612, 0.99938556, 0.49324658],\
+[	-6.27325653, -0.00038097, 0.00023339, 7.27287555, 0.99883626, 0.99938564, 0.49324664],\
+[	-6.27325664, -0.00038093, 0.00023336, 7.27287571, 0.99883641, 0.99938572, 0.49324649],\
+[	-6.27325675, -0.00038088, 0.00023333, 7.27287587, 0.99883655, 0.99938579, 0.49324658],\
+[	-6.27325686, -0.00038083, 0.00023330, 7.27287603, 0.99883669, 0.99938587, 0.49324653],\
+[	-6.27325698, -0.00038079, 0.00023327, 7.27287619, 0.99883684, 0.99938594, 0.49324658],\
+[	-6.27325709, -0.00038074, 0.00023324, 7.27287635, 0.99883698, 0.99938602, 0.49324649],\
+[	-6.27325720, -0.00038069, 0.00023321, 7.27287651, 0.99883712, 0.99938609, 0.49324663],\
+[	-6.27325731, -0.00038065, 0.00023319, 7.27287667, 0.99883727, 0.99938617, 0.49324670],\
+[	-6.27325742, -0.00038060, 0.00023316, 7.27287683, 0.99883741, 0.99938624, 0.49324665],\
+[	-6.27325754, -0.00038055, 0.00023313, 7.27287699, 0.99883755, 0.99938632, 0.49324681],\
+[	-6.27325765, -0.00038050, 0.00023310, 7.27287714, 0.99883769, 0.99938640, 0.49324678],\
+[	-6.27325776, -0.00038046, 0.00023307, 7.27287730, 0.99883784, 0.99938647, 0.49324668],\
+[	-6.27325787, -0.00038041, 0.00023304, 7.27287746, 0.99883798, 0.99938655, 0.49324676],\
+[	-6.27325798, -0.00038036, 0.00023301, 7.27287762, 0.99883812, 0.99938662, 0.49324679],\
+[	-6.27325810, -0.00038032, 0.00023299, 7.27287778, 0.99883827, 0.99938670, 0.49324680],\
+[	-6.27325821, -0.00038027, 0.00023296, 7.27287794, 0.99883841, 0.99938677, 0.49324686],\
+[	-6.27325832, -0.00038022, 0.00023293, 7.27287810, 0.99883855, 0.99938685, 0.49324703],\
+[	-6.27325843, -0.00038018, 0.00023290, 7.27287825, 0.99883869, 0.99938692, 0.49324683],\
+[	-6.27325854, -0.00038013, 0.00023287, 7.27287841, 0.99883884, 0.99938700, 0.49324688],\
+[	-6.27325866, -0.00038008, 0.00023284, 7.27287857, 0.99883898, 0.99938707, 0.49324687],\
+[	-6.27325877, -0.00038004, 0.00023281, 7.27287873, 0.99883912, 0.99938715, 0.49324692],\
+[	-6.27325888, -0.00037999, 0.00023279, 7.27287889, 0.99883926, 0.99938722, 0.49324678],\
+[	-6.27325899, -0.00037994, 0.00023276, 7.27287905, 0.99883941, 0.99938730, 0.49324693],\
+[	-6.27325910, -0.00037990, 0.00023273, 7.27287920, 0.99883955, 0.99938737, 0.49324693],\
+[	-6.27325921, -0.00037985, 0.00023270, 7.27287936, 0.99883969, 0.99938745, 0.49324695],\
+[	-6.27325932, -0.00037980, 0.00023267, 7.27287952, 0.99883983, 0.99938752, 0.49324704],\
+[	-6.27325944, -0.00037976, 0.00023264, 7.27287968, 0.99883998, 0.99938760, 0.49324699],\
+[	-6.27325955, -0.00037971, 0.00023261, 7.27287984, 0.99884012, 0.99938768, 0.49324702],\
+[	-6.27325966, -0.00037966, 0.00023259, 7.27287999, 0.99884026, 0.99938775, 0.49324694],\
+[	-6.27325977, -0.00037962, 0.00023256, 7.27288015, 0.99884040, 0.99938783, 0.49324708],\
+[	-6.27325988, -0.00037957, 0.00023253, 7.27288031, 0.99884055, 0.99938790, 0.49324716],\
+[	-6.27325999, -0.00037953, 0.00023250, 7.27288047, 0.99884069, 0.99938798, 0.49324712],\
+[	-6.27326011, -0.00037948, 0.00023247, 7.27288063, 0.99884083, 0.99938805, 0.49324715],\
+[	-6.27326022, -0.00037943, 0.00023244, 7.27288078, 0.99884097, 0.99938813, 0.49324707],\
+[	-6.27326033, -0.00037939, 0.00023241, 7.27288094, 0.99884111, 0.99938820, 0.49324704],\
+[	-6.27326044, -0.00037934, 0.00023239, 7.27288110, 0.99884126, 0.99938828, 0.49324718],\
+[	-6.27326055, -0.00037929, 0.00023236, 7.27288126, 0.99884140, 0.99938835, 0.49324714],\
+[	-6.27326066, -0.00037925, 0.00023233, 7.27288142, 0.99884154, 0.99938843, 0.49324726],\
+[	-6.27326077, -0.00037920, 0.00023230, 7.27288157, 0.99884168, 0.99938850, 0.49324702],\
+[	-6.27326088, -0.00037915, 0.00023227, 7.27288173, 0.99884182, 0.99938858, 0.49324721],\
+[	-6.27326100, -0.00037911, 0.00023224, 7.27288189, 0.99884197, 0.99938865, 0.49324723],\
+[	-6.27326111, -0.00037906, 0.00023221, 7.27288205, 0.99884211, 0.99938873, 0.49324718],\
+[	-6.27326122, -0.00037901, 0.00023219, 7.27288220, 0.99884225, 0.99938880, 0.49324712],\
+[	-6.27326133, -0.00037897, 0.00023216, 7.27288236, 0.99884239, 0.99938887, 0.49324742],\
+[	-6.27326144, -0.00037892, 0.00023213, 7.27288252, 0.99884253, 0.99938895, 0.49324731],\
+[	-6.27326155, -0.00037887, 0.00023210, 7.27288268, 0.99884267, 0.99938902, 0.49324731],\
+[	-6.27326166, -0.00037883, 0.00023207, 7.27288283, 0.99884282, 0.99938910, 0.49324735],\
+[	-6.27326177, -0.00037878, 0.00023204, 7.27288299, 0.99884296, 0.99938917, 0.49324724],\
+[	-6.27326188, -0.00037874, 0.00023202, 7.27288315, 0.99884310, 0.99938925, 0.49324733],\
+[	-6.27326199, -0.00037869, 0.00023199, 7.27288331, 0.99884324, 0.99938932, 0.49324726],\
+[	-6.27326211, -0.00037864, 0.00023196, 7.27288346, 0.99884338, 0.99938940, 0.49324734],\
+[	-6.27326222, -0.00037860, 0.00023193, 7.27288362, 0.99884352, 0.99938947, 0.49324737],\
+[	-6.27326233, -0.00037855, 0.00023190, 7.27288378, 0.99884367, 0.99938955, 0.49324746],\
+[	-6.27326244, -0.00037850, 0.00023187, 7.27288393, 0.99884381, 0.99938962, 0.49324742],\
+[	-6.27326255, -0.00037846, 0.00023185, 7.27288409, 0.99884395, 0.99938970, 0.49324750],\
+[	-6.27326266, -0.00037841, 0.00023182, 7.27288425, 0.99884409, 0.99938977, 0.49324754],\
+[	-6.27326277, -0.00037837, 0.00023179, 7.27288441, 0.99884423, 0.99938985, 0.49324741],\
+[	-6.27326288, -0.00037832, 0.00023176, 7.27288456, 0.99884437, 0.99938992, 0.49324760],\
+[	-6.27326299, -0.00037827, 0.00023173, 7.27288472, 0.99884451, 0.99939000, 0.49324751],\
+[	-6.27326310, -0.00037823, 0.00023170, 7.27288488, 0.99884466, 0.99939007, 0.49324747],\
+[	-6.27326321, -0.00037818, 0.00023168, 7.27288503, 0.99884480, 0.99939014, 0.49324756],\
+[	-6.27326332, -0.00037813, 0.00023165, 7.27288519, 0.99884494, 0.99939022, 0.49324744],\
+[	-6.27326343, -0.00037809, 0.00023162, 7.27288535, 0.99884508, 0.99939029, 0.49324765],\
+[	-6.27326354, -0.00037804, 0.00023159, 7.27288550, 0.99884522, 0.99939037, 0.49324755],\
+[	-6.27326366, -0.00037800, 0.00023156, 7.27288566, 0.99884536, 0.99939044, 0.49324760],\
+[	-6.27326377, -0.00037795, 0.00023153, 7.27288582, 0.99884550, 0.99939052, 0.49324764],\
+[	-6.27326388, -0.00037790, 0.00023151, 7.27288597, 0.99884564, 0.99939059, 0.49324764],\
+[	-6.27326399, -0.00037786, 0.00023148, 7.27288613, 0.99884578, 0.99939067, 0.49324768],\
+[	-6.27326410, -0.00037781, 0.00023145, 7.27288629, 0.99884592, 0.99939074, 0.49324772],\
+[	-6.27326421, -0.00037777, 0.00023142, 7.27288644, 0.99884607, 0.99939081, 0.49324775],\
+[	-6.27326432, -0.00037772, 0.00023139, 7.27288660, 0.99884621, 0.99939089, 0.49324763],\
+[	-6.27326443, -0.00037767, 0.00023136, 7.27288676, 0.99884635, 0.99939096, 0.49324773],\
+[	-6.27326454, -0.00037763, 0.00023134, 7.27288691, 0.99884649, 0.99939104, 0.49324770],\
+[	-6.27326465, -0.00037758, 0.00023131, 7.27288707, 0.99884663, 0.99939111, 0.49324772],\
+[	-6.27326476, -0.00037753, 0.00023128, 7.27288722, 0.99884677, 0.99939119, 0.49324778],\
+[	-6.27326487, -0.00037749, 0.00023125, 7.27288738, 0.99884691, 0.99939126, 0.49324783],\
+[	-6.27326498, -0.00037744, 0.00023122, 7.27288754, 0.99884705, 0.99939133, 0.49324780],\
+[	-6.27326509, -0.00037740, 0.00023120, 7.27288769, 0.99884719, 0.99939141, 0.49324776],\
+[	-6.27326520, -0.00037735, 0.00023117, 7.27288785, 0.99884733, 0.99939148, 0.49324786],\
+[	-6.27326531, -0.00037730, 0.00023114, 7.27288801, 0.99884747, 0.99939156, 0.49324788],\
+[	-6.27326542, -0.00037726, 0.00023111, 7.27288816, 0.99884761, 0.99939163, 0.49324776],\
+[	-6.27326553, -0.00037721, 0.00023108, 7.27288832, 0.99884775, 0.99939171, 0.49324788],\
+[	-6.27326564, -0.00037717, 0.00023105, 7.27288847, 0.99884789, 0.99939178, 0.49324801],\
+[	-6.27326575, -0.00037712, 0.00023103, 7.27288863, 0.99884803, 0.99939185, 0.49324790],\
+[	-6.27326586, -0.00037707, 0.00023100, 7.27288879, 0.99884817, 0.99939193, 0.49324783],\
+[	-6.27326597, -0.00037703, 0.00023097, 7.27288894, 0.99884831, 0.99939200, 0.49324795],\
+[	-6.27326608, -0.00037698, 0.00023094, 7.27288910, 0.99884846, 0.99939208, 0.49324808],\
+[	-6.27326619, -0.00037694, 0.00023091, 7.27288925, 0.99884860, 0.99939215, 0.49324796],\
+[	-6.27326630, -0.00037689, 0.00023089, 7.27288941, 0.99884874, 0.99939222, 0.49324802],\
+[	-6.27326641, -0.00037685, 0.00023086, 7.27288956, 0.99884888, 0.99939230, 0.49324786],\
+[	-6.27326652, -0.00037680, 0.00023083, 7.27288972, 0.99884902, 0.99939237, 0.49324795],\
+[	-6.27326663, -0.00037675, 0.00023080, 7.27288988, 0.99884916, 0.99939245, 0.49324822],\
+[	-6.27326674, -0.00037671, 0.00023077, 7.27289003, 0.99884930, 0.99939252, 0.49324803],\
+[	-6.27326685, -0.00037666, 0.00023074, 7.27289019, 0.99884944, 0.99939259, 0.49324799],\
+[	-6.27326696, -0.00037662, 0.00023072, 7.27289034, 0.99884958, 0.99939267, 0.49324798],\
+[	-6.27326707, -0.00037657, 0.00023069, 7.27289050, 0.99884972, 0.99939274, 0.49324802],\
+[	-6.27326718, -0.00037652, 0.00023066, 7.27289065, 0.99884986, 0.99939282, 0.49324803],\
+[	-6.27326729, -0.00037648, 0.00023063, 7.27289081, 0.99885000, 0.99939289, 0.49324811],\
+[	-6.27326740, -0.00037643, 0.00023060, 7.27289096, 0.99885014, 0.99939296, 0.49324817],\
+[	-6.27326751, -0.00037639, 0.00023058, 7.27289112, 0.99885028, 0.99939304, 0.49324821],\
+[	-6.27326762, -0.00037634, 0.00023055, 7.27289127, 0.99885042, 0.99939311, 0.49324821],\
+[	-6.27326773, -0.00037630, 0.00023052, 7.27289143, 0.99885056, 0.99939318, 0.49324827],\
+[	-6.27326783, -0.00037625, 0.00023049, 7.27289159, 0.99885070, 0.99939326, 0.49324820],\
+[	-6.27326794, -0.00037620, 0.00023046, 7.27289174, 0.99885084, 0.99939333, 0.49324832],\
+[	-6.27326805, -0.00037616, 0.00023044, 7.27289190, 0.99885097, 0.99939341, 0.49324834],\
+[	-6.27326816, -0.00037611, 0.00023041, 7.27289205, 0.99885111, 0.99939348, 0.49324841],\
+[	-6.27326827, -0.00037607, 0.00023038, 7.27289221, 0.99885125, 0.99939355, 0.49324834],\
+[	-6.27326838, -0.00037602, 0.00023035, 7.27289236, 0.99885139, 0.99939363, 0.49324834],\
+[	-6.27326849, -0.00037598, 0.00023032, 7.27289252, 0.99885153, 0.99939370, 0.49324836],\
+[	-6.27326860, -0.00037593, 0.00023030, 7.27289267, 0.99885167, 0.99939377, 0.49324838],\
+[	-6.27326871, -0.00037588, 0.00023027, 7.27289283, 0.99885181, 0.99939385, 0.49324843],\
+[	-6.27326882, -0.00037584, 0.00023024, 7.27289298, 0.99885195, 0.99939392, 0.49324818],\
+[	-6.27326893, -0.00037579, 0.00023021, 7.27289314, 0.99885209, 0.99939399, 0.49324852],\
+[	-6.27326904, -0.00037575, 0.00023018, 7.27289329, 0.99885223, 0.99939407, 0.49324850],\
+[	-6.27326915, -0.00037570, 0.00023016, 7.27289345, 0.99885237, 0.99939414, 0.49324851],\
+[	-6.27326926, -0.00037566, 0.00023013, 7.27289360, 0.99885251, 0.99939422, 0.49324838],\
+[	-6.27326937, -0.00037561, 0.00023010, 7.27289375, 0.99885265, 0.99939429, 0.49324847],\
+[	-6.27326947, -0.00037557, 0.00023007, 7.27289391, 0.99885279, 0.99939436, 0.49324849],\
+[	-6.27326958, -0.00037552, 0.00023004, 7.27289406, 0.99885293, 0.99939444, 0.49324851],\
+[	-6.27326969, -0.00037547, 0.00023002, 7.27289422, 0.99885307, 0.99939451, 0.49324844],\
+[	-6.27326980, -0.00037543, 0.00022999, 7.27289437, 0.99885321, 0.99939458, 0.49324862],\
+[	-6.27326991, -0.00037538, 0.00022996, 7.27289453, 0.99885334, 0.99939466, 0.49324845],\
+[	-6.27327002, -0.00037534, 0.00022993, 7.27289468, 0.99885348, 0.99939473, 0.49324866],\
+[	-6.27327013, -0.00037529, 0.00022991, 7.27289484, 0.99885362, 0.99939480, 0.49324850],\
+[	-6.27327024, -0.00037525, 0.00022988, 7.27289499, 0.99885376, 0.99939488, 0.49324874],\
+[	-6.27327035, -0.00037520, 0.00022985, 7.27289514, 0.99885390, 0.99939495, 0.49324863],\
+[	-6.27327045, -0.00037516, 0.00022982, 7.27289530, 0.99885404, 0.99939502, 0.49324861],\
+[	-6.27327056, -0.00037511, 0.00022979, 7.27289545, 0.99885418, 0.99939510, 0.49324863],\
+[	-6.27327067, -0.00037506, 0.00022977, 7.27289561, 0.99885432, 0.99939517, 0.49324878],\
+[	-6.27327078, -0.00037502, 0.00022974, 7.27289576, 0.99885446, 0.99939524, 0.49324852],\
+[	-6.27327089, -0.00037497, 0.00022971, 7.27289592, 0.99885459, 0.99939532, 0.49324868],\
+[	-6.27327100, -0.00037493, 0.00022968, 7.27289607, 0.99885473, 0.99939539, 0.49324870],\
+[	-6.27327111, -0.00037488, 0.00022965, 7.27289622, 0.99885487, 0.99939546, 0.49324867],\
+[	-6.27327122, -0.00037484, 0.00022963, 7.27289638, 0.99885501, 0.99939554, 0.49324861],\
+[	-6.27327132, -0.00037479, 0.00022960, 7.27289653, 0.99885515, 0.99939561, 0.49324879],\
+[	-6.27327143, -0.00037475, 0.00022957, 7.27289669, 0.99885529, 0.99939568, 0.49324878],\
+[	-6.27327154, -0.00037470, 0.00022954, 7.27289684, 0.99885543, 0.99939576, 0.49324873],\
+[	-6.27327165, -0.00037466, 0.00022952, 7.27289699, 0.99885557, 0.99939583, 0.49324877],\
+[	-6.27327176, -0.00037461, 0.00022949, 7.27289715, 0.99885570, 0.99939590, 0.49324893],\
+[	-6.27327187, -0.00037457, 0.00022946, 7.27289730, 0.99885584, 0.99939597, 0.49324876],\
+[	-6.27327198, -0.00037452, 0.00022943, 7.27289746, 0.99885598, 0.99939605, 0.49324876],\
+[	-6.27327208, -0.00037447, 0.00022940, 7.27289761, 0.99885612, 0.99939612, 0.49324883],\
+[	-6.27327219, -0.00037443, 0.00022938, 7.27289776, 0.99885626, 0.99939619, 0.49324897],\
+[	-6.27327230, -0.00037438, 0.00022935, 7.27289792, 0.99885640, 0.99939627, 0.49324903],\
+[	-6.27327241, -0.00037434, 0.00022932, 7.27289807, 0.99885653, 0.99939634, 0.49324897],\
+[	-6.27327252, -0.00037429, 0.00022929, 7.27289822, 0.99885667, 0.99939641, 0.49324915],\
+[	-6.27327263, -0.00037425, 0.00022927, 7.27289838, 0.99885681, 0.99939649, 0.49324899],\
+[	-6.27327273, -0.00037420, 0.00022924, 7.27289853, 0.99885695, 0.99939656, 0.49324895],\
+[	-6.27327284, -0.00037416, 0.00022921, 7.27289869, 0.99885709, 0.99939663, 0.49324901],\
+[	-6.27327295, -0.00037411, 0.00022918, 7.27289884, 0.99885723, 0.99939671, 0.49324899],\
+[	-6.27327306, -0.00037407, 0.00022915, 7.27289899, 0.99885736, 0.99939678, 0.49324910],\
+[	-6.27327317, -0.00037402, 0.00022913, 7.27289915, 0.99885750, 0.99939685, 0.49324893],\
+[	-6.27327328, -0.00037398, 0.00022910, 7.27289930, 0.99885764, 0.99939692, 0.49324897],\
+[	-6.27327338, -0.00037393, 0.00022907, 7.27289945, 0.99885778, 0.99939700, 0.49324903],\
+[	-6.27327349, -0.00037389, 0.00022904, 7.27289961, 0.99885792, 0.99939707, 0.49324907],\
+[	-6.27327360, -0.00037384, 0.00022902, 7.27289976, 0.99885805, 0.99939714, 0.49324912],\
+[	-6.27327371, -0.00037380, 0.00022899, 7.27289991, 0.99885819, 0.99939722, 0.49324911],\
+[	-6.27327382, -0.00037375, 0.00022896, 7.27290007, 0.99885833, 0.99939729, 0.49324918],\
+[	-6.27327392, -0.00037371, 0.00022893, 7.27290022, 0.99885847, 0.99939736, 0.49324911],\
+[	-6.27327403, -0.00037366, 0.00022891, 7.27290037, 0.99885861, 0.99939743, 0.49324922],\
+[	-6.27327414, -0.00037362, 0.00022888, 7.27290052, 0.99885874, 0.99939751, 0.49324912],\
+[	-6.27327425, -0.00037357, 0.00022885, 7.27290068, 0.99885888, 0.99939758, 0.49324914],\
+[	-6.27327436, -0.00037353, 0.00022882, 7.27290083, 0.99885902, 0.99939765, 0.49324919],\
+[	-6.27327446, -0.00037348, 0.00022880, 7.27290098, 0.99885916, 0.99939772, 0.49324915],\
+[	-6.27327457, -0.00037344, 0.00022877, 7.27290114, 0.99885929, 0.99939780, 0.49324920],\
+[	-6.27327468, -0.00037339, 0.00022874, 7.27290129, 0.99885943, 0.99939787, 0.49324914],\
+[	-6.27327479, -0.00037335, 0.00022871, 7.27290144, 0.99885957, 0.99939794, 0.49324927],\
+[	-6.27327490, -0.00037330, 0.00022868, 7.27290160, 0.99885971, 0.99939801, 0.49324924],\
+[	-6.27327500, -0.00037326, 0.00022866, 7.27290175, 0.99885984, 0.99939809, 0.49324926],\
+[	-6.27327511, -0.00037321, 0.00022863, 7.27290190, 0.99885998, 0.99939816, 0.49324920],\
+[	-6.27327522, -0.00037317, 0.00022860, 7.27290205, 0.99886012, 0.99939823, 0.49324932],\
+[	-6.27327533, -0.00037312, 0.00022857, 7.27290221, 0.99886026, 0.99939831, 0.49324939],\
+[	-6.27327543, -0.00037308, 0.00022855, 7.27290236, 0.99886039, 0.99939838, 0.49324946],\
+[	-6.27327554, -0.00037303, 0.00022852, 7.27290251, 0.99886053, 0.99939845, 0.49324935],\
+[	-6.27327565, -0.00037299, 0.00022849, 7.27290266, 0.99886067, 0.99939852, 0.49324930],\
+[	-6.27327576, -0.00037294, 0.00022846, 7.27290282, 0.99886081, 0.99939860, 0.49324950],\
+[	-6.27327586, -0.00037290, 0.00022844, 7.27290297, 0.99886094, 0.99939867, 0.49324938],\
+[	-6.27327597, -0.00037285, 0.00022841, 7.27290312, 0.99886108, 0.99939874, 0.49324942],\
+[	-6.27327608, -0.00037281, 0.00022838, 7.27290327, 0.99886122, 0.99939881, 0.49324944],\
+[	-6.27327619, -0.00037276, 0.00022835, 7.27290343, 0.99886136, 0.99939888, 0.49324942],\
+[	-6.27327629, -0.00037272, 0.00022833, 7.27290358, 0.99886149, 0.99939896, 0.49324940],\
+[	-6.27327640, -0.00037267, 0.00022830, 7.27290373, 0.99886163, 0.99939903, 0.49324954],\
+[	-6.27327651, -0.00037263, 0.00022827, 7.27290388, 0.99886177, 0.99939910, 0.49324936],\
+[	-6.27327662, -0.00037258, 0.00022824, 7.27290404, 0.99886190, 0.99939917, 0.49324945],\
+[	-6.27327672, -0.00037254, 0.00022822, 7.27290419, 0.99886204, 0.99939925, 0.49324953],\
+[	-6.27327683, -0.00037249, 0.00022819, 7.27290434, 0.99886218, 0.99939932, 0.49324957],\
+[	-6.27327694, -0.00037245, 0.00022816, 7.27290449, 0.99886231, 0.99939939, 0.49324952],\
+[	-6.27327705, -0.00037240, 0.00022813, 7.27290464, 0.99886245, 0.99939946, 0.49324959],\
+[	-6.27327715, -0.00037236, 0.00022811, 7.27290480, 0.99886259, 0.99939954, 0.49324957],\
+[	-6.27327726, -0.00037231, 0.00022808, 7.27290495, 0.99886273, 0.99939961, 0.49324964],\
+[	-6.27327737, -0.00037227, 0.00022805, 7.27290510, 0.99886286, 0.99939968, 0.49324963],\
+[	-6.27327747, -0.00037222, 0.00022802, 7.27290525, 0.99886300, 0.99939975, 0.49324974],\
+[	-6.27327758, -0.00037218, 0.00022800, 7.27290540, 0.99886314, 0.99939982, 0.49324966],\
+[	-6.27327769, -0.00037213, 0.00022797, 7.27290556, 0.99886327, 0.99939990, 0.49324952],\
+[	-6.27327780, -0.00037209, 0.00022794, 7.27290571, 0.99886341, 0.99939997, 0.49324969],\
+[	-6.27327790, -0.00037204, 0.00022791, 7.27290586, 0.99886355, 0.99940004, 0.49324970],\
+[	-6.27327801, -0.00037200, 0.00022789, 7.27290601, 0.99886368, 0.99940011, 0.49324976],\
+[	-6.27327812, -0.00037195, 0.00022786, 7.27290616, 0.99886382, 0.99940019, 0.49324984],\
+[	-6.27327822, -0.00037191, 0.00022783, 7.27290631, 0.99886396, 0.99940026, 0.49324963],\
+[	-6.27327833, -0.00037187, 0.00022781, 7.27290647, 0.99886409, 0.99940033, 0.49324968],\
+[	-6.27327844, -0.00037182, 0.00022778, 7.27290662, 0.99886423, 0.99940040, 0.49324978],\
+[	-6.27327855, -0.00037178, 0.00022775, 7.27290677, 0.99886436, 0.99940047, 0.49324985],\
+[	-6.27327865, -0.00037173, 0.00022772, 7.27290692, 0.99886450, 0.99940055, 0.49325000],\
+[	-6.27327876, -0.00037169, 0.00022770, 7.27290707, 0.99886464, 0.99940062, 0.49324984],\
+[	-6.27327887, -0.00037164, 0.00022767, 7.27290722, 0.99886477, 0.99940069, 0.49324982],\
+[	-6.27327897, -0.00037160, 0.00022764, 7.27290737, 0.99886491, 0.99940076, 0.49324988],\
+[	-6.27327908, -0.00037155, 0.00022761, 7.27290753, 0.99886505, 0.99940083, 0.49325015],\
+[	-6.27327919, -0.00037151, 0.00022759, 7.27290768, 0.99886518, 0.99940091, 0.49324977],\
+[	-6.27327929, -0.00037146, 0.00022756, 7.27290783, 0.99886532, 0.99940098, 0.49324993],\
+[	-6.27327940, -0.00037142, 0.00022753, 7.27290798, 0.99886546, 0.99940105, 0.49325002],\
+[	-6.27327951, -0.00037137, 0.00022750, 7.27290813, 0.99886559, 0.99940112, 0.49324999],\
+[	-6.27327961, -0.00037133, 0.00022748, 7.27290828, 0.99886573, 0.99940119, 0.49325000],\
+[	-6.27327972, -0.00037129, 0.00022745, 7.27290843, 0.99886586, 0.99940126, 0.49325006],\
+[	-6.27327983, -0.00037124, 0.00022742, 7.27290858, 0.99886600, 0.99940134, 0.49324994],\
+[	-6.27327993, -0.00037120, 0.00022740, 7.27290874, 0.99886614, 0.99940141, 0.49324986],\
+[	-6.27328004, -0.00037115, 0.00022737, 7.27290889, 0.99886627, 0.99940148, 0.49325009],\
+[	-6.27328015, -0.00037111, 0.00022734, 7.27290904, 0.99886641, 0.99940155, 0.49325012],\
+[	-6.27328025, -0.00037106, 0.00022731, 7.27290919, 0.99886654, 0.99940162, 0.49325015],\
+[	-6.27328036, -0.00037102, 0.00022729, 7.27290934, 0.99886668, 0.99940170, 0.49325010],\
+[	-6.27328047, -0.00037097, 0.00022726, 7.27290949, 0.99886682, 0.99940177, 0.49325020],\
+[	-6.27328057, -0.00037093, 0.00022723, 7.27290964, 0.99886695, 0.99940184, 0.49325004],\
+[	-6.27328068, -0.00037089, 0.00022720, 7.27290979, 0.99886709, 0.99940191, 0.49325014],\
+[	-6.27328078, -0.00037084, 0.00022718, 7.27290994, 0.99886722, 0.99940198, 0.49325025],\
+[	-6.27328089, -0.00037080, 0.00022715, 7.27291009, 0.99886736, 0.99940205, 0.49325008],\
+[	-6.27328100, -0.00037075, 0.00022712, 7.27291024, 0.99886749, 0.99940213, 0.49325032],\
+[	-6.27328110, -0.00037071, 0.00022710, 7.27291040, 0.99886763, 0.99940220, 0.49325016],\
+[	-6.27328121, -0.00037066, 0.00022707, 7.27291055, 0.99886777, 0.99940227, 0.49325010],\
+[	-6.27328132, -0.00037062, 0.00022704, 7.27291070, 0.99886790, 0.99940234, 0.49325006],\
+[	-6.27328142, -0.00037057, 0.00022701, 7.27291085, 0.99886804, 0.99940241, 0.49325022],\
+[	-6.27328153, -0.00037053, 0.00022699, 7.27291100, 0.99886817, 0.99940248, 0.49325031],\
+[	-6.27328163, -0.00037049, 0.00022696, 7.27291115, 0.99886831, 0.99940255, 0.49325037],\
+[	-6.27328174, -0.00037044, 0.00022693, 7.27291130, 0.99886844, 0.99940263, 0.49325027],\
+[	-6.27328185, -0.00037040, 0.00022691, 7.27291145, 0.99886858, 0.99940270, 0.49325034],\
+[	-6.27328195, -0.00037035, 0.00022688, 7.27291160, 0.99886871, 0.99940277, 0.49325020],\
+[	-6.27328206, -0.00037031, 0.00022685, 7.27291175, 0.99886885, 0.99940284, 0.49325035],\
+[	-6.27328217, -0.00037026, 0.00022682, 7.27291190, 0.99886898, 0.99940291, 0.49325022],\
+[	-6.27328227, -0.00037022, 0.00022680, 7.27291205, 0.99886912, 0.99940298, 0.49325038],\
+[	-6.27328238, -0.00037018, 0.00022677, 7.27291220, 0.99886926, 0.99940305, 0.49325045],\
+[	-6.27328248, -0.00037013, 0.00022674, 7.27291235, 0.99886939, 0.99940313, 0.49325055],\
+[	-6.27328259, -0.00037009, 0.00022672, 7.27291250, 0.99886953, 0.99940320, 0.49325042],\
+[	-6.27328269, -0.00037004, 0.00022669, 7.27291265, 0.99886966, 0.99940327, 0.49325036],\
+[	-6.27328280, -0.00037000, 0.00022666, 7.27291280, 0.99886980, 0.99940334, 0.49325057],\
+[	-6.27328291, -0.00036995, 0.00022663, 7.27291295, 0.99886993, 0.99940341, 0.49325047],\
+[	-6.27328301, -0.00036991, 0.00022661, 7.27291310, 0.99887007, 0.99940348, 0.49325050],\
+[	-6.27328312, -0.00036987, 0.00022658, 7.27291325, 0.99887020, 0.99940355, 0.49325044],\
+[	-6.27328322, -0.00036982, 0.00022655, 7.27291340, 0.99887034, 0.99940363, 0.49325060],\
+[	-6.27328333, -0.00036978, 0.00022653, 7.27291355, 0.99887047, 0.99940370, 0.49325046],\
+[	-6.27328344, -0.00036973, 0.00022650, 7.27291370, 0.99887061, 0.99940377, 0.49325049],\
+[	-6.27328354, -0.00036969, 0.00022647, 7.27291385, 0.99887074, 0.99940384, 0.49325054],\
+[	-6.27328365, -0.00036965, 0.00022644, 7.27291400, 0.99887088, 0.99940391, 0.49325051],\
+[	-6.27328375, -0.00036960, 0.00022642, 7.27291415, 0.99887101, 0.99940398, 0.49325068],\
+[	-6.27328386, -0.00036956, 0.00022639, 7.27291430, 0.99887115, 0.99940405, 0.49325059],\
+[	-6.27328396, -0.00036951, 0.00022636, 7.27291445, 0.99887128, 0.99940412, 0.49325082],\
+[	-6.27328407, -0.00036947, 0.00022634, 7.27291460, 0.99887142, 0.99940419, 0.49325077],\
+[	-6.27328418, -0.00036942, 0.00022631, 7.27291475, 0.99887155, 0.99940427, 0.49325076],\
+[	-6.27328428, -0.00036938, 0.00022628, 7.27291490, 0.99887168, 0.99940434, 0.49325073],\
+[	-6.27328439, -0.00036934, 0.00022626, 7.27291505, 0.99887182, 0.99940441, 0.49325073],\
+[	-6.27328449, -0.00036929, 0.00022623, 7.27291520, 0.99887195, 0.99940448, 0.49325059],\
+[	-6.27328460, -0.00036925, 0.00022620, 7.27291535, 0.99887209, 0.99940455, 0.49325071],\
+[	-6.27328470, -0.00036920, 0.00022617, 7.27291550, 0.99887222, 0.99940462, 0.49325075],\
+[	-6.27328481, -0.00036916, 0.00022615, 7.27291565, 0.99887236, 0.99940469, 0.49325074],\
+[	-6.27328491, -0.00036912, 0.00022612, 7.27291580, 0.99887249, 0.99940476, 0.49325076],\
+[	-6.27328502, -0.00036907, 0.00022609, 7.27291595, 0.99887263, 0.99940483, 0.49325069],\
+[	-6.27328512, -0.00036903, 0.00022607, 7.27291610, 0.99887276, 0.99940491, 0.49325089],\
+[	-6.27328523, -0.00036898, 0.00022604, 7.27291624, 0.99887290, 0.99940498, 0.49325087],\
+[	-6.27328533, -0.00036894, 0.00022601, 7.27291639, 0.99887303, 0.99940505, 0.49325089],\
+[	-6.27328544, -0.00036890, 0.00022599, 7.27291654, 0.99887316, 0.99940512, 0.49325087],\
+[	-6.27328555, -0.00036885, 0.00022596, 7.27291669, 0.99887330, 0.99940519, 0.49325085],\
+[	-6.27328565, -0.00036881, 0.00022593, 7.27291684, 0.99887343, 0.99940526, 0.49325080],\
+[	-6.27328576, -0.00036876, 0.00022590, 7.27291699, 0.99887357, 0.99940533, 0.49325071],\
+[	-6.27328586, -0.00036872, 0.00022588, 7.27291714, 0.99887370, 0.99940540, 0.49325095],\
+[	-6.27328597, -0.00036868, 0.00022585, 7.27291729, 0.99887384, 0.99940547, 0.49325080],\
+[	-6.27328607, -0.00036863, 0.00022582, 7.27291744, 0.99887397, 0.99940554, 0.49325088],\
+[	-6.27328618, -0.00036859, 0.00022580, 7.27291759, 0.99887410, 0.99940561, 0.49325100],\
+[	-6.27328628, -0.00036855, 0.00022577, 7.27291774, 0.99887424, 0.99940568, 0.49325106],\
+[	-6.27328639, -0.00036850, 0.00022574, 7.27291789, 0.99887437, 0.99940576, 0.49325085],\
+[	-6.27328649, -0.00036846, 0.00022572, 7.27291803, 0.99887451, 0.99940583, 0.49325087],\
+[	-6.27328660, -0.00036841, 0.00022569, 7.27291818, 0.99887464, 0.99940590, 0.49325084],\
+[	-6.27328670, -0.00036837, 0.00022566, 7.27291833, 0.99887477, 0.99940597, 0.49325118],\
+[	-6.27328681, -0.00036833, 0.00022564, 7.27291848, 0.99887491, 0.99940604, 0.49325112],\
+[	-6.27328691, -0.00036828, 0.00022561, 7.27291863, 0.99887504, 0.99940611, 0.49325104],\
+[	-6.27328702, -0.00036824, 0.00022558, 7.27291878, 0.99887518, 0.99940618, 0.49325104],\
+[	-6.27328712, -0.00036819, 0.00022556, 7.27291893, 0.99887531, 0.99940625, 0.49325116],\
+[	-6.27328723, -0.00036815, 0.00022553, 7.27291907, 0.99887544, 0.99940632, 0.49325111],\
+[	-6.27328733, -0.00036811, 0.00022550, 7.27291922, 0.99887558, 0.99940639, 0.49325116],\
+[	-6.27328744, -0.00036806, 0.00022547, 7.27291937, 0.99887571, 0.99940646, 0.49325108],\
+[	-6.27328754, -0.00036802, 0.00022545, 7.27291952, 0.99887584, 0.99940653, 0.49325111],\
+[	-6.27328764, -0.00036798, 0.00022542, 7.27291967, 0.99887598, 0.99940660, 0.49325113],\
+[	-6.27328775, -0.00036793, 0.00022539, 7.27291982, 0.99887611, 0.99940667, 0.49325130],\
+[	-6.27328785, -0.00036789, 0.00022537, 7.27291997, 0.99887625, 0.99940674, 0.49325114],\
+[	-6.27328796, -0.00036784, 0.00022534, 7.27292011, 0.99887638, 0.99940681, 0.49325125],\
+[	-6.27328806, -0.00036780, 0.00022531, 7.27292026, 0.99887651, 0.99940689, 0.49325120],\
+[	-6.27328817, -0.00036776, 0.00022529, 7.27292041, 0.99887665, 0.99940696, 0.49325118],\
+[	-6.27328827, -0.00036771, 0.00022526, 7.27292056, 0.99887678, 0.99940703, 0.49325120],\
+[	-6.27328838, -0.00036767, 0.00022523, 7.27292071, 0.99887691, 0.99940710, 0.49325135],\
+[	-6.27328848, -0.00036763, 0.00022521, 7.27292086, 0.99887705, 0.99940717, 0.49325134],\
+[	-6.27328859, -0.00036758, 0.00022518, 7.27292100, 0.99887718, 0.99940724, 0.49325139],\
+[	-6.27328869, -0.00036754, 0.00022515, 7.27292115, 0.99887731, 0.99940731, 0.49325135],\
+[	-6.27328880, -0.00036749, 0.00022513, 7.27292130, 0.99887745, 0.99940738, 0.49325126],\
+[	-6.27328890, -0.00036745, 0.00022510, 7.27292145, 0.99887758, 0.99940745, 0.49325131],\
+[	-6.27328900, -0.00036741, 0.00022507, 7.27292160, 0.99887771, 0.99940752, 0.49325136],\
+[	-6.27328911, -0.00036736, 0.00022505, 7.27292174, 0.99887785, 0.99940759, 0.49325152],\
+[	-6.27328921, -0.00036732, 0.00022502, 7.27292189, 0.99887798, 0.99940766, 0.49325159],\
+[	-6.27328932, -0.00036728, 0.00022499, 7.27292204, 0.99887811, 0.99940773, 0.49325140],\
+[	-6.27328942, -0.00036723, 0.00022497, 7.27292219, 0.99887825, 0.99940780, 0.49325141],\
+[	-6.27328953, -0.00036719, 0.00022494, 7.27292234, 0.99887838, 0.99940787, 0.49325131],\
+[	-6.27328963, -0.00036715, 0.00022491, 7.27292248, 0.99887851, 0.99940794, 0.49325145],\
+[	-6.27328973, -0.00036710, 0.00022489, 7.27292263, 0.99887864, 0.99940801, 0.49325145],\
+[	-6.27328984, -0.00036706, 0.00022486, 7.27292278, 0.99887878, 0.99940808, 0.49325157],\
+[	-6.27328994, -0.00036702, 0.00022483, 7.27292293, 0.99887891, 0.99940815, 0.49325149],\
+[	-6.27329005, -0.00036697, 0.00022481, 7.27292307, 0.99887904, 0.99940822, 0.49325164],\
+[	-6.27329015, -0.00036693, 0.00022478, 7.27292322, 0.99887918, 0.99940829, 0.49325155],\
+[	-6.27329025, -0.00036689, 0.00022475, 7.27292337, 0.99887931, 0.99940836, 0.49325164],\
+[	-6.27329036, -0.00036684, 0.00022473, 7.27292352, 0.99887944, 0.99940843, 0.49325151],\
+[	-6.27329046, -0.00036680, 0.00022470, 7.27292366, 0.99887958, 0.99940850, 0.49325168],\
+[	-6.27329057, -0.00036675, 0.00022467, 7.27292381, 0.99887971, 0.99940857, 0.49325138],\
+[	-6.27329067, -0.00036671, 0.00022465, 7.27292396, 0.99887984, 0.99940864, 0.49325171],\
+[	-6.27329078, -0.00036667, 0.00022462, 7.27292411, 0.99887997, 0.99940871, 0.49325159],\
+[	-6.27329088, -0.00036662, 0.00022459, 7.27292425, 0.99888011, 0.99940878, 0.49325160],\
+[	-6.27329098, -0.00036658, 0.00022457, 7.27292440, 0.99888024, 0.99940885, 0.49325177],\
+[	-6.27329109, -0.00036654, 0.00022454, 7.27292455, 0.99888037, 0.99940892, 0.49325177],\
+[	-6.27329119, -0.00036649, 0.00022451, 7.27292470, 0.99888050, 0.99940899, 0.49325164],\
+[	-6.27329129, -0.00036645, 0.00022449, 7.27292484, 0.99888064, 0.99940906, 0.49325172],\
+[	-6.27329140, -0.00036641, 0.00022446, 7.27292499, 0.99888077, 0.99940913, 0.49325179],\
+[	-6.27329150, -0.00036636, 0.00022443, 7.27292514, 0.99888090, 0.99940920, 0.49325181],\
+[	-6.27329161, -0.00036632, 0.00022441, 7.27292529, 0.99888103, 0.99940927, 0.49325178],\
+[	-6.27329171, -0.00036628, 0.00022438, 7.27292543, 0.99888117, 0.99940934, 0.49325178],\
+[	-6.27329181, -0.00036623, 0.00022435, 7.27292558, 0.99888130, 0.99940941, 0.49325183],\
+[	-6.27329192, -0.00036619, 0.00022433, 7.27292573, 0.99888143, 0.99940948, 0.49325179],\
+[	-6.27329202, -0.00036615, 0.00022430, 7.27292587, 0.99888156, 0.99940955, 0.49325183],\
+[	-6.27329212, -0.00036610, 0.00022427, 7.27292602, 0.99888170, 0.99940962, 0.49325178],\
+[	-6.27329223, -0.00036606, 0.00022425, 7.27292617, 0.99888183, 0.99940969, 0.49325167],\
+[	-6.27329233, -0.00036602, 0.00022422, 7.27292631, 0.99888196, 0.99940976, 0.49325180],\
+[	-6.27329244, -0.00036597, 0.00022419, 7.27292646, 0.99888209, 0.99940983, 0.49325201],\
+[	-6.27329254, -0.00036593, 0.00022417, 7.27292661, 0.99888222, 0.99940990, 0.49325190],\
+[	-6.27329264, -0.00036589, 0.00022414, 7.27292675, 0.99888236, 0.99940997, 0.49325201],\
+[	-6.27329275, -0.00036584, 0.00022412, 7.27292690, 0.99888249, 0.99941004, 0.49325203],\
+[	-6.27329285, -0.00036580, 0.00022409, 7.27292705, 0.99888262, 0.99941011, 0.49325195],\
+[	-6.27329295, -0.00036576, 0.00022406, 7.27292720, 0.99888275, 0.99941018, 0.49325194],\
+[	-6.27329306, -0.00036571, 0.00022404, 7.27292734, 0.99888289, 0.99941025, 0.49325187],\
+[	-6.27329316, -0.00036567, 0.00022401, 7.27292749, 0.99888302, 0.99941032, 0.49325203],\
+[	-6.27329326, -0.00036563, 0.00022398, 7.27292764, 0.99888315, 0.99941039, 0.49325193],\
+[	-6.27329337, -0.00036559, 0.00022396, 7.27292778, 0.99888328, 0.99941046, 0.49325192],\
+[	-6.27329347, -0.00036554, 0.00022393, 7.27292793, 0.99888341, 0.99941053, 0.49325212],\
+[	-6.27329357, -0.00036550, 0.00022390, 7.27292807, 0.99888355, 0.99941060, 0.49325192],\
+[	-6.27329368, -0.00036546, 0.00022388, 7.27292822, 0.99888368, 0.99941067, 0.49325204],\
+[	-6.27329378, -0.00036541, 0.00022385, 7.27292837, 0.99888381, 0.99941074, 0.49325210],\
+[	-6.27329388, -0.00036537, 0.00022382, 7.27292851, 0.99888394, 0.99941081, 0.49325200],\
+[	-6.27329399, -0.00036533, 0.00022380, 7.27292866, 0.99888407, 0.99941088, 0.49325216],\
+[	-6.27329409, -0.00036528, 0.00022377, 7.27292881, 0.99888420, 0.99941095, 0.49325212],\
+[	-6.27329419, -0.00036524, 0.00022374, 7.27292895, 0.99888434, 0.99941102, 0.49325214],\
+[	-6.27329430, -0.00036520, 0.00022372, 7.27292910, 0.99888447, 0.99941108, 0.49325208],\
+[	-6.27329440, -0.00036515, 0.00022369, 7.27292925, 0.99888460, 0.99941115, 0.49325230],\
+[	-6.27329450, -0.00036511, 0.00022367, 7.27292939, 0.99888473, 0.99941122, 0.49325225],\
+[	-6.27329461, -0.00036507, 0.00022364, 7.27292954, 0.99888486, 0.99941129, 0.49325212],\
+[	-6.27329471, -0.00036502, 0.00022361, 7.27292968, 0.99888499, 0.99941136, 0.49325221],\
+[	-6.27329481, -0.00036498, 0.00022359, 7.27292983, 0.99888513, 0.99941143, 0.49325215],\
+[	-6.27329491, -0.00036494, 0.00022356, 7.27292998, 0.99888526, 0.99941150, 0.49325228],\
+[	-6.27329502, -0.00036490, 0.00022353, 7.27293012, 0.99888539, 0.99941157, 0.49325236],\
+[	-6.27329512, -0.00036485, 0.00022351, 7.27293027, 0.99888552, 0.99941164, 0.49325238],\
+[	-6.27329522, -0.00036481, 0.00022348, 7.27293041, 0.99888565, 0.99941171, 0.49325230],\
+[	-6.27329533, -0.00036477, 0.00022345, 7.27293056, 0.99888578, 0.99941178, 0.49325233],\
+[	-6.27329543, -0.00036472, 0.00022343, 7.27293071, 0.99888591, 0.99941185, 0.49325243],\
+[	-6.27329553, -0.00036468, 0.00022340, 7.27293085, 0.99888605, 0.99941192, 0.49325248],\
+[	-6.27329564, -0.00036464, 0.00022338, 7.27293100, 0.99888618, 0.99941199, 0.49325226],\
+[	-6.27329574, -0.00036460, 0.00022335, 7.27293114, 0.99888631, 0.99941206, 0.49325247],\
+[	-6.27329584, -0.00036455, 0.00022332, 7.27293129, 0.99888644, 0.99941213, 0.49325235],\
+[	-6.27329594, -0.00036451, 0.00022330, 7.27293143, 0.99888657, 0.99941219, 0.49325238],\
+[	-6.27329605, -0.00036447, 0.00022327, 7.27293158, 0.99888670, 0.99941226, 0.49325236],\
+[	-6.27329615, -0.00036442, 0.00022324, 7.27293173, 0.99888683, 0.99941233, 0.49325251],\
+[	-6.27329625, -0.00036438, 0.00022322, 7.27293187, 0.99888696, 0.99941240, 0.49325244],\
+[	-6.27329635, -0.00036434, 0.00022319, 7.27293202, 0.99888709, 0.99941247, 0.49325243],\
+[	-6.27329646, -0.00036429, 0.00022317, 7.27293216, 0.99888723, 0.99941254, 0.49325235],\
+[	-6.27329656, -0.00036425, 0.00022314, 7.27293231, 0.99888736, 0.99941261, 0.49325265],\
+[	-6.27329666, -0.00036421, 0.00022311, 7.27293245, 0.99888749, 0.99941268, 0.49325266],\
+[	-6.27329677, -0.00036417, 0.00022309, 7.27293260, 0.99888762, 0.99941275, 0.49325241],\
+[	-6.27329687, -0.00036412, 0.00022306, 7.27293274, 0.99888775, 0.99941282, 0.49325251],\
+[	-6.27329697, -0.00036408, 0.00022303, 7.27293289, 0.99888788, 0.99941289, 0.49325244],\
+[	-6.27329707, -0.00036404, 0.00022301, 7.27293304, 0.99888801, 0.99941295, 0.49325256],\
+[	-6.27329718, -0.00036399, 0.00022298, 7.27293318, 0.99888814, 0.99941302, 0.49325261],\
+[	-6.27329728, -0.00036395, 0.00022296, 7.27293333, 0.99888827, 0.99941309, 0.49325262],\
+[	-6.27329738, -0.00036391, 0.00022293, 7.27293347, 0.99888840, 0.99941316, 0.49325272],\
+[	-6.27329748, -0.00036387, 0.00022290, 7.27293362, 0.99888853, 0.99941323, 0.49325264],\
+[	-6.27329758, -0.00036382, 0.00022288, 7.27293376, 0.99888866, 0.99941330, 0.49325271],\
+[	-6.27329769, -0.00036378, 0.00022285, 7.27293391, 0.99888879, 0.99941337, 0.49325250],\
+[	-6.27329779, -0.00036374, 0.00022282, 7.27293405, 0.99888893, 0.99941344, 0.49325276],\
+[	-6.27329789, -0.00036370, 0.00022280, 7.27293420, 0.99888906, 0.99941351, 0.49325279],\
+[	-6.27329799, -0.00036365, 0.00022277, 7.27293434, 0.99888919, 0.99941358, 0.49325256],\
+[	-6.27329810, -0.00036361, 0.00022275, 7.27293449, 0.99888932, 0.99941364, 0.49325269],\
+[	-6.27329820, -0.00036357, 0.00022272, 7.27293463, 0.99888945, 0.99941371, 0.49325274],\
+[	-6.27329830, -0.00036352, 0.00022269, 7.27293478, 0.99888958, 0.99941378, 0.49325276],\
+[	-6.27329840, -0.00036348, 0.00022267, 7.27293492, 0.99888971, 0.99941385, 0.49325275],\
+[	-6.27329851, -0.00036344, 0.00022264, 7.27293507, 0.99888984, 0.99941392, 0.49325266],\
+[	-6.27329861, -0.00036340, 0.00022261, 7.27293521, 0.99888997, 0.99941399, 0.49325274],\
+[	-6.27329871, -0.00036335, 0.00022259, 7.27293536, 0.99889010, 0.99941406, 0.49325275],\
+[	-6.27329881, -0.00036331, 0.00022256, 7.27293550, 0.99889023, 0.99941413, 0.49325279],\
+[	-6.27329891, -0.00036327, 0.00022254, 7.27293565, 0.99889036, 0.99941420, 0.49325277],\
+[	-6.27329902, -0.00036323, 0.00022251, 7.27293579, 0.99889049, 0.99941426, 0.49325299],\
+[	-6.27329912, -0.00036318, 0.00022248, 7.27293593, 0.99889062, 0.99941433, 0.49325298],\
+[	-6.27329922, -0.00036314, 0.00022246, 7.27293608, 0.99889075, 0.99941440, 0.49325274],\
+[	-6.27329932, -0.00036310, 0.00022243, 7.27293622, 0.99889088, 0.99941447, 0.49325294],\
+[	-6.27329942, -0.00036306, 0.00022241, 7.27293637, 0.99889101, 0.99941454, 0.49325297],\
+[	-6.27329953, -0.00036301, 0.00022238, 7.27293651, 0.99889114, 0.99941461, 0.49325278],\
+[	-6.27329963, -0.00036297, 0.00022235, 7.27293666, 0.99889127, 0.99941468, 0.49325281],\
+[	-6.27329973, -0.00036293, 0.00022233, 7.27293680, 0.99889140, 0.99941474, 0.49325304],\
+[	-6.27329983, -0.00036289, 0.00022230, 7.27293695, 0.99889153, 0.99941481, 0.49325295],\
+[	-6.27329993, -0.00036284, 0.00022228, 7.27293709, 0.99889166, 0.99941488, 0.49325311],\
+[	-6.27330004, -0.00036280, 0.00022225, 7.27293723, 0.99889179, 0.99941495, 0.49325291],\
+[	-6.27330014, -0.00036276, 0.00022222, 7.27293738, 0.99889192, 0.99941502, 0.49325317],\
+[	-6.27330024, -0.00036272, 0.00022220, 7.27293752, 0.99889205, 0.99941509, 0.49325298],\
+[	-6.27330034, -0.00036267, 0.00022217, 7.27293767, 0.99889218, 0.99941516, 0.49325316],\
+[	-6.27330044, -0.00036263, 0.00022215, 7.27293781, 0.99889231, 0.99941522, 0.49325310],\
+[	-6.27330054, -0.00036259, 0.00022212, 7.27293796, 0.99889244, 0.99941529, 0.49325314],\
+[	-6.27330065, -0.00036255, 0.00022209, 7.27293810, 0.99889257, 0.99941536, 0.49325310],\
+[	-6.27330075, -0.00036250, 0.00022207, 7.27293824, 0.99889270, 0.99941543, 0.49325300],\
+[	-6.27330085, -0.00036246, 0.00022204, 7.27293839, 0.99889283, 0.99941550, 0.49325323],\
+[	-6.27330095, -0.00036242, 0.00022202, 7.27293853, 0.99889296, 0.99941557, 0.49325313],\
+[	-6.27330105, -0.00036238, 0.00022199, 7.27293868, 0.99889309, 0.99941564, 0.49325318],\
+[	-6.27330115, -0.00036233, 0.00022196, 7.27293882, 0.99889322, 0.99941570, 0.49325325],\
+[	-6.27330126, -0.00036229, 0.00022194, 7.27293896, 0.99889335, 0.99941577, 0.49325315],\
+[	-6.27330136, -0.00036225, 0.00022191, 7.27293911, 0.99889348, 0.99941584, 0.49325312],\
+[	-6.27330146, -0.00036221, 0.00022189, 7.27293925, 0.99889361, 0.99941591, 0.49325327],\
+[	-6.27330156, -0.00036216, 0.00022186, 7.27293940, 0.99889374, 0.99941598, 0.49325334],\
+[	-6.27330166, -0.00036212, 0.00022183, 7.27293954, 0.99889387, 0.99941605, 0.49325318],\
+[	-6.27330176, -0.00036208, 0.00022181, 7.27293968, 0.99889400, 0.99941611, 0.49325339],\
+[	-6.27330186, -0.00036204, 0.00022178, 7.27293983, 0.99889412, 0.99941618, 0.49325320],\
+[	-6.27330197, -0.00036199, 0.00022176, 7.27293997, 0.99889425, 0.99941625, 0.49325327],\
+[	-6.27330207, -0.00036195, 0.00022173, 7.27294011, 0.99889438, 0.99941632, 0.49325329],\
+[	-6.27330217, -0.00036191, 0.00022170, 7.27294026, 0.99889451, 0.99941639, 0.49325333],\
+[	-6.27330227, -0.00036187, 0.00022168, 7.27294040, 0.99889464, 0.99941646, 0.49325330],\
+[	-6.27330237, -0.00036182, 0.00022165, 7.27294055, 0.99889477, 0.99941652, 0.49325321],\
+[	-6.27330247, -0.00036178, 0.00022163, 7.27294069, 0.99889490, 0.99941659, 0.49325343],\
+[	-6.27330257, -0.00036174, 0.00022160, 7.27294083, 0.99889503, 0.99941666, 0.49325334],\
+[	-6.27330267, -0.00036170, 0.00022157, 7.27294098, 0.99889516, 0.99941673, 0.49325333],\
+[	-6.27330278, -0.00036166, 0.00022155, 7.27294112, 0.99889529, 0.99941680, 0.49325328],\
+[	-6.27330288, -0.00036161, 0.00022152, 7.27294126, 0.99889542, 0.99941686, 0.49325344],\
+[	-6.27330298, -0.00036157, 0.00022150, 7.27294141, 0.99889555, 0.99941693, 0.49325340],\
+[	-6.27330308, -0.00036153, 0.00022147, 7.27294155, 0.99889568, 0.99941700, 0.49325337],\
+[	-6.27330318, -0.00036149, 0.00022144, 7.27294169, 0.99889580, 0.99941707, 0.49325346],\
+[	-6.27330328, -0.00036144, 0.00022142, 7.27294184, 0.99889593, 0.99941714, 0.49325350],\
+[	-6.27330338, -0.00036140, 0.00022139, 7.27294198, 0.99889606, 0.99941720, 0.49325355],\
+[	-6.27330348, -0.00036136, 0.00022137, 7.27294212, 0.99889619, 0.99941727, 0.49325362],\
+[	-6.27330358, -0.00036132, 0.00022134, 7.27294227, 0.99889632, 0.99941734, 0.49325356],\
+[	-6.27330368, -0.00036128, 0.00022132, 7.27294241, 0.99889645, 0.99941741, 0.49325360],\
+[	-6.27330379, -0.00036123, 0.00022129, 7.27294255, 0.99889658, 0.99941748, 0.49325348],\
+[	-6.27330389, -0.00036119, 0.00022126, 7.27294269, 0.99889671, 0.99941754, 0.49325378],\
+[	-6.27330399, -0.00036115, 0.00022124, 7.27294284, 0.99889684, 0.99941761, 0.49325364],\
+[	-6.27330409, -0.00036111, 0.00022121, 7.27294298, 0.99889696, 0.99941768, 0.49325361],\
+[	-6.27330419, -0.00036107, 0.00022119, 7.27294312, 0.99889709, 0.99941775, 0.49325386],\
+[	-6.27330429, -0.00036102, 0.00022116, 7.27294327, 0.99889722, 0.99941782, 0.49325359],\
+[	-6.27330439, -0.00036098, 0.00022113, 7.27294341, 0.99889735, 0.99941788, 0.49325371],\
+[	-6.27330449, -0.00036094, 0.00022111, 7.27294355, 0.99889748, 0.99941795, 0.49325375],\
+[	-6.27330459, -0.00036090, 0.00022108, 7.27294370, 0.99889761, 0.99941802, 0.49325371],\
+[	-6.27330469, -0.00036085, 0.00022106, 7.27294384, 0.99889774, 0.99941809, 0.49325378],\
+[	-6.27330479, -0.00036081, 0.00022103, 7.27294398, 0.99889786, 0.99941816, 0.49325370],\
+[	-6.27330489, -0.00036077, 0.00022101, 7.27294412, 0.99889799, 0.99941822, 0.49325364],\
+[	-6.27330499, -0.00036073, 0.00022098, 7.27294427, 0.99889812, 0.99941829, 0.49325373],\
+[	-6.27330510, -0.00036069, 0.00022095, 7.27294441, 0.99889825, 0.99941836, 0.49325372],\
+[	-6.27330520, -0.00036064, 0.00022093, 7.27294455, 0.99889838, 0.99941843, 0.49325391],\
+[	-6.27330530, -0.00036060, 0.00022090, 7.27294469, 0.99889851, 0.99941849, 0.49325378],\
+[	-6.27330540, -0.00036056, 0.00022088, 7.27294484, 0.99889863, 0.99941856, 0.49325387],\
+[	-6.27330550, -0.00036052, 0.00022085, 7.27294498, 0.99889876, 0.99941863, 0.49325370],\
+[	-6.27330560, -0.00036048, 0.00022083, 7.27294512, 0.99889889, 0.99941870, 0.49325386],\
+[	-6.27330570, -0.00036043, 0.00022080, 7.27294526, 0.99889902, 0.99941877, 0.49325387],\
+[	-6.27330580, -0.00036039, 0.00022077, 7.27294541, 0.99889915, 0.99941883, 0.49325384],\
+[	-6.27330590, -0.00036035, 0.00022075, 7.27294555, 0.99889928, 0.99941890, 0.49325392],\
+[	-6.27330600, -0.00036031, 0.00022072, 7.27294569, 0.99889940, 0.99941897, 0.49325387],\
+[	-6.27330610, -0.00036027, 0.00022070, 7.27294583, 0.99889953, 0.99941904, 0.49325390],\
+[	-6.27330620, -0.00036023, 0.00022067, 7.27294598, 0.99889966, 0.99941910, 0.49325400],\
+[	-6.27330630, -0.00036018, 0.00022065, 7.27294612, 0.99889979, 0.99941917, 0.49325409],\
+[	-6.27330640, -0.00036014, 0.00022062, 7.27294626, 0.99889992, 0.99941924, 0.49325386],\
+[	-6.27330650, -0.00036010, 0.00022059, 7.27294640, 0.99890004, 0.99941931, 0.49325408],\
+[	-6.27330660, -0.00036006, 0.00022057, 7.27294654, 0.99890017, 0.99941937, 0.49325391],\
+[	-6.27330670, -0.00036002, 0.00022054, 7.27294669, 0.99890030, 0.99941944, 0.49325389],\
+[	-6.27330680, -0.00035997, 0.00022052, 7.27294683, 0.99890043, 0.99941951, 0.49325379],\
+[	-6.27330690, -0.00035993, 0.00022049, 7.27294697, 0.99890056, 0.99941958, 0.49325409],\
+[	-6.27330700, -0.00035989, 0.00022047, 7.27294711, 0.99890068, 0.99941964, 0.49325388],\
+[	-6.27330710, -0.00035985, 0.00022044, 7.27294726, 0.99890081, 0.99941971, 0.49325402],\
+[	-6.27330720, -0.00035981, 0.00022041, 7.27294740, 0.99890094, 0.99941978, 0.49325423],\
+[	-6.27330730, -0.00035976, 0.00022039, 7.27294754, 0.99890107, 0.99941985, 0.49325405],\
+[	-6.27330740, -0.00035972, 0.00022036, 7.27294768, 0.99890119, 0.99941991, 0.49325402],\
+[	-6.27330750, -0.00035968, 0.00022034, 7.27294782, 0.99890132, 0.99941998, 0.49325409],\
+[	-6.27330760, -0.00035964, 0.00022031, 7.27294796, 0.99890145, 0.99942005, 0.49325408],\
+[	-6.27330770, -0.00035960, 0.00022029, 7.27294811, 0.99890158, 0.99942012, 0.49325430],\
+[	-6.27330780, -0.00035956, 0.00022026, 7.27294825, 0.99890171, 0.99942018, 0.49325412],\
+[	-6.27330790, -0.00035951, 0.00022024, 7.27294839, 0.99890183, 0.99942025, 0.49325410],\
+[	-6.27330800, -0.00035947, 0.00022021, 7.27294853, 0.99890196, 0.99942032, 0.49325444],\
+[	-6.27330810, -0.00035943, 0.00022018, 7.27294867, 0.99890209, 0.99942039, 0.49325431],\
+[	-6.27330820, -0.00035939, 0.00022016, 7.27294882, 0.99890222, 0.99942045, 0.49325422],\
+[	-6.27330830, -0.00035935, 0.00022013, 7.27294896, 0.99890234, 0.99942052, 0.49325435],\
+[	-6.27330840, -0.00035931, 0.00022011, 7.27294910, 0.99890247, 0.99942059, 0.49325426],\
+[	-6.27330850, -0.00035926, 0.00022008, 7.27294924, 0.99890260, 0.99942065, 0.49325433],\
+[	-6.27330860, -0.00035922, 0.00022006, 7.27294938, 0.99890273, 0.99942072, 0.49325432],\
+[	-6.27330870, -0.00035918, 0.00022003, 7.27294952, 0.99890285, 0.99942079, 0.49325444],\
+[	-6.27330880, -0.00035914, 0.00022001, 7.27294966, 0.99890298, 0.99942086, 0.49325435],\
+[	-6.27330890, -0.00035910, 0.00021998, 7.27294981, 0.99890311, 0.99942092, 0.49325422],\
+[	-6.27330900, -0.00035906, 0.00021995, 7.27294995, 0.99890323, 0.99942099, 0.49325439],\
+[	-6.27330910, -0.00035901, 0.00021993, 7.27295009, 0.99890336, 0.99942106, 0.49325438],\
+[	-6.27330920, -0.00035897, 0.00021990, 7.27295023, 0.99890349, 0.99942113, 0.49325454],\
+[	-6.27330930, -0.00035893, 0.00021988, 7.27295037, 0.99890362, 0.99942119, 0.49325448],\
+[	-6.27330940, -0.00035889, 0.00021985, 7.27295051, 0.99890374, 0.99942126, 0.49325441],\
+[	-6.27330950, -0.00035885, 0.00021983, 7.27295065, 0.99890387, 0.99942133, 0.49325438],\
+[	-6.27330960, -0.00035881, 0.00021980, 7.27295079, 0.99890400, 0.99942139, 0.49325444],\
+[	-6.27330970, -0.00035876, 0.00021978, 7.27295094, 0.99890412, 0.99942146, 0.49325455],\
+[	-6.27330980, -0.00035872, 0.00021975, 7.27295108, 0.99890425, 0.99942153, 0.49325435],\
+[	-6.27330990, -0.00035868, 0.00021972, 7.27295122, 0.99890438, 0.99942159, 0.49325446],\
+[	-6.27331000, -0.00035864, 0.00021970, 7.27295136, 0.99890451, 0.99942166, 0.49325463],\
+[	-6.27331010, -0.00035860, 0.00021967, 7.27295150, 0.99890463, 0.99942173, 0.49325459],\
+[	-6.27331020, -0.00035856, 0.00021965, 7.27295164, 0.99890476, 0.99942180, 0.49325444],\
+[	-6.27331030, -0.00035851, 0.00021962, 7.27295178, 0.99890489, 0.99942186, 0.49325446],\
+[	-6.27331040, -0.00035847, 0.00021960, 7.27295192, 0.99890501, 0.99942193, 0.49325470],\
+[	-6.27331050, -0.00035843, 0.00021957, 7.27295206, 0.99890514, 0.99942200, 0.49325447],\
+[	-6.27331059, -0.00035839, 0.00021955, 7.27295220, 0.99890527, 0.99942206, 0.49325451],\
+[	-6.27331069, -0.00035835, 0.00021952, 7.27295235, 0.99890539, 0.99942213, 0.49325471],\
+[	-6.27331079, -0.00035831, 0.00021950, 7.27295249, 0.99890552, 0.99942220, 0.49325479],\
+[	-6.27331089, -0.00035827, 0.00021947, 7.27295263, 0.99890565, 0.99942226, 0.49325465],\
+[	-6.27331099, -0.00035822, 0.00021944, 7.27295277, 0.99890577, 0.99942233, 0.49325460],\
+[	-6.27331109, -0.00035818, 0.00021942, 7.27295291, 0.99890590, 0.99942240, 0.49325463],\
+[	-6.27331119, -0.00035814, 0.00021939, 7.27295305, 0.99890603, 0.99942246, 0.49325475],\
+[	-6.27331129, -0.00035810, 0.00021937, 7.27295319, 0.99890615, 0.99942253, 0.49325484],\
+[	-6.27331139, -0.00035806, 0.00021934, 7.27295333, 0.99890628, 0.99942260, 0.49325478],\
+[	-6.27331149, -0.00035802, 0.00021932, 7.27295347, 0.99890641, 0.99942267, 0.49325476],\
+[	-6.27331159, -0.00035798, 0.00021929, 7.27295361, 0.99890653, 0.99942273, 0.49325474],\
+[	-6.27331169, -0.00035793, 0.00021927, 7.27295375, 0.99890666, 0.99942280, 0.49325471],\
+[	-6.27331179, -0.00035789, 0.00021924, 7.27295389, 0.99890679, 0.99942287, 0.49325479],\
+[	-6.27331188, -0.00035785, 0.00021922, 7.27295403, 0.99890691, 0.99942293, 0.49325475],\
+[	-6.27331198, -0.00035781, 0.00021919, 7.27295417, 0.99890704, 0.99942300, 0.49325483],\
+[	-6.27331208, -0.00035777, 0.00021917, 7.27295431, 0.99890717, 0.99942307, 0.49325488],\
+[	-6.27331218, -0.00035773, 0.00021914, 7.27295445, 0.99890729, 0.99942313, 0.49325468],\
+[	-6.27331228, -0.00035769, 0.00021911, 7.27295459, 0.99890742, 0.99942320, 0.49325487],\
+[	-6.27331238, -0.00035764, 0.00021909, 7.27295473, 0.99890754, 0.99942327, 0.49325491],\
+[	-6.27331248, -0.00035760, 0.00021906, 7.27295487, 0.99890767, 0.99942333, 0.49325485],\
+[	-6.27331258, -0.00035756, 0.00021904, 7.27295501, 0.99890780, 0.99942340, 0.49325494],\
+[	-6.27331268, -0.00035752, 0.00021901, 7.27295515, 0.99890792, 0.99942347, 0.49325489],\
+[	-6.27331277, -0.00035748, 0.00021899, 7.27295529, 0.99890805, 0.99942353, 0.49325507],\
+[	-6.27331287, -0.00035744, 0.00021896, 7.27295544, 0.99890818, 0.99942360, 0.49325487],\
+[	-6.27331297, -0.00035740, 0.00021894, 7.27295558, 0.99890830, 0.99942367, 0.49325485],\
+[	-6.27331307, -0.00035736, 0.00021891, 7.27295572, 0.99890843, 0.99942373, 0.49325494],\
+[	-6.27331317, -0.00035731, 0.00021889, 7.27295586, 0.99890855, 0.99942380, 0.49325502],\
+[	-6.27331327, -0.00035727, 0.00021886, 7.27295600, 0.99890868, 0.99942386, 0.49325506],\
+[	-6.27331337, -0.00035723, 0.00021884, 7.27295614, 0.99890881, 0.99942393, 0.49325501],\
+[	-6.27331347, -0.00035719, 0.00021881, 7.27295628, 0.99890893, 0.99942400, 0.49325503],\
+[	-6.27331356, -0.00035715, 0.00021879, 7.27295642, 0.99890906, 0.99942406, 0.49325490],\
+[	-6.27331366, -0.00035711, 0.00021876, 7.27295655, 0.99890918, 0.99942413, 0.49325500],\
+[	-6.27331376, -0.00035707, 0.00021874, 7.27295669, 0.99890931, 0.99942420, 0.49325510],\
+[	-6.27331386, -0.00035703, 0.00021871, 7.27295683, 0.99890943, 0.99942426, 0.49325499],\
+[	-6.27331396, -0.00035698, 0.00021869, 7.27295697, 0.99890956, 0.99942433, 0.49325505],\
+[	-6.27331406, -0.00035694, 0.00021866, 7.27295711, 0.99890969, 0.99942440, 0.49325506],\
+[	-6.27331416, -0.00035690, 0.00021863, 7.27295725, 0.99890981, 0.99942446, 0.49325523],\
+[	-6.27331425, -0.00035686, 0.00021861, 7.27295739, 0.99890994, 0.99942453, 0.49325511],\
+[	-6.27331435, -0.00035682, 0.00021858, 7.27295753, 0.99891006, 0.99942460, 0.49325502],\
+[	-6.27331445, -0.00035678, 0.00021856, 7.27295767, 0.99891019, 0.99942466, 0.49325512],\
+[	-6.27331455, -0.00035674, 0.00021853, 7.27295781, 0.99891032, 0.99942473, 0.49325535],\
+[	-6.27331465, -0.00035670, 0.00021851, 7.27295795, 0.99891044, 0.99942479, 0.49325526],\
+[	-6.27331475, -0.00035666, 0.00021848, 7.27295809, 0.99891057, 0.99942486, 0.49325504],\
+[	-6.27331485, -0.00035661, 0.00021846, 7.27295823, 0.99891069, 0.99942493, 0.49325512],\
+[	-6.27331494, -0.00035657, 0.00021843, 7.27295837, 0.99891082, 0.99942499, 0.49325533],\
+[	-6.27331504, -0.00035653, 0.00021841, 7.27295851, 0.99891094, 0.99942506, 0.49325523],\
+[	-6.27331514, -0.00035649, 0.00021838, 7.27295865, 0.99891107, 0.99942513, 0.49325528],\
+[	-6.27331524, -0.00035645, 0.00021836, 7.27295879, 0.99891119, 0.99942519, 0.49325526],\
+[	-6.27331534, -0.00035641, 0.00021833, 7.27295893, 0.99891132, 0.99942526, 0.49325527],\
+[	-6.27331543, -0.00035637, 0.00021831, 7.27295907, 0.99891144, 0.99942532, 0.49325541],\
+[	-6.27331553, -0.00035633, 0.00021828, 7.27295921, 0.99891157, 0.99942539, 0.49325526],\
+[	-6.27331563, -0.00035629, 0.00021826, 7.27295935, 0.99891169, 0.99942546, 0.49325518],\
+[	-6.27331573, -0.00035625, 0.00021823, 7.27295948, 0.99891182, 0.99942552, 0.49325527],\
+[	-6.27331583, -0.00035620, 0.00021821, 7.27295962, 0.99891195, 0.99942559, 0.49325543],\
+[	-6.27331593, -0.00035616, 0.00021818, 7.27295976, 0.99891207, 0.99942566, 0.49325535],\
+[	-6.27331602, -0.00035612, 0.00021816, 7.27295990, 0.99891220, 0.99942572, 0.49325531],\
+[	-6.27331612, -0.00035608, 0.00021813, 7.27296004, 0.99891232, 0.99942579, 0.49325537],\
+[	-6.27331622, -0.00035604, 0.00021811, 7.27296018, 0.99891245, 0.99942585, 0.49325536],\
+[	-6.27331632, -0.00035600, 0.00021808, 7.27296032, 0.99891257, 0.99942592, 0.49325546],\
+[	-6.27331642, -0.00035596, 0.00021806, 7.27296046, 0.99891270, 0.99942599, 0.49325549],\
+[	-6.27331651, -0.00035592, 0.00021803, 7.27296060, 0.99891282, 0.99942605, 0.49325546],\
+[	-6.27331661, -0.00035588, 0.00021801, 7.27296074, 0.99891295, 0.99942612, 0.49325542],\
+[	-6.27331671, -0.00035584, 0.00021798, 7.27296087, 0.99891307, 0.99942618, 0.49325537],\
+[	-6.27331681, -0.00035579, 0.00021796, 7.27296101, 0.99891320, 0.99942625, 0.49325535],\
+[	-6.27331691, -0.00035575, 0.00021793, 7.27296115, 0.99891332, 0.99942632, 0.49325540],\
+[	-6.27331700, -0.00035571, 0.00021791, 7.27296129, 0.99891345, 0.99942638, 0.49325546],\
+[	-6.27331710, -0.00035567, 0.00021788, 7.27296143, 0.99891357, 0.99942645, 0.49325545],\
+[	-6.27331720, -0.00035563, 0.00021786, 7.27296157, 0.99891370, 0.99942651, 0.49325569],\
+[	-6.27331730, -0.00035559, 0.00021783, 7.27296171, 0.99891382, 0.99942658, 0.49325550],\
+[	-6.27331740, -0.00035555, 0.00021781, 7.27296185, 0.99891395, 0.99942664, 0.49325563],\
+[	-6.27331749, -0.00035551, 0.00021778, 7.27296198, 0.99891407, 0.99942671, 0.49325568],\
+[	-6.27331759, -0.00035547, 0.00021776, 7.27296212, 0.99891420, 0.99942678, 0.49325547],\
+[	-6.27331769, -0.00035543, 0.00021773, 7.27296226, 0.99891432, 0.99942684, 0.49325550],\
+[	-6.27331779, -0.00035539, 0.00021771, 7.27296240, 0.99891444, 0.99942691, 0.49325571],\
+[	-6.27331788, -0.00035535, 0.00021768, 7.27296254, 0.99891457, 0.99942697, 0.49325568],\
+[	-6.27331798, -0.00035530, 0.00021766, 7.27296268, 0.99891469, 0.99942704, 0.49325562],\
+[	-6.27331808, -0.00035526, 0.00021763, 7.27296281, 0.99891482, 0.99942711, 0.49325569],\
+[	-6.27331818, -0.00035522, 0.00021761, 7.27296295, 0.99891494, 0.99942717, 0.49325576],\
+[	-6.27331827, -0.00035518, 0.00021758, 7.27296309, 0.99891507, 0.99942724, 0.49325584],\
+[	-6.27331837, -0.00035514, 0.00021756, 7.27296323, 0.99891519, 0.99942730, 0.49325572],\
+[	-6.27331847, -0.00035510, 0.00021753, 7.27296337, 0.99891532, 0.99942737, 0.49325557],\
+[	-6.27331857, -0.00035506, 0.00021751, 7.27296351, 0.99891544, 0.99942743, 0.49325555],\
+[	-6.27331866, -0.00035502, 0.00021748, 7.27296364, 0.99891557, 0.99942750, 0.49325590],\
+[	-6.27331876, -0.00035498, 0.00021746, 7.27296378, 0.99891569, 0.99942757, 0.49325582],\
+[	-6.27331886, -0.00035494, 0.00021743, 7.27296392, 0.99891581, 0.99942763, 0.49325599],\
+[	-6.27331896, -0.00035490, 0.00021741, 7.27296406, 0.99891594, 0.99942770, 0.49325596],\
+[	-6.27331905, -0.00035486, 0.00021738, 7.27296420, 0.99891606, 0.99942776, 0.49325600],\
+[	-6.27331915, -0.00035482, 0.00021736, 7.27296434, 0.99891619, 0.99942783, 0.49325578],\
+[	-6.27331925, -0.00035478, 0.00021733, 7.27296447, 0.99891631, 0.99942789, 0.49325597],\
+[	-6.27331935, -0.00035473, 0.00021731, 7.27296461, 0.99891644, 0.99942796, 0.49325578],\
+[	-6.27331944, -0.00035469, 0.00021728, 7.27296475, 0.99891656, 0.99942802, 0.49325601],\
+[	-6.27331954, -0.00035465, 0.00021726, 7.27296489, 0.99891668, 0.99942809, 0.49325574],\
+[	-6.27331964, -0.00035461, 0.00021723, 7.27296503, 0.99891681, 0.99942816, 0.49325598],\
+[	-6.27331974, -0.00035457, 0.00021721, 7.27296516, 0.99891693, 0.99942822, 0.49325602],\
+[	-6.27331983, -0.00035453, 0.00021718, 7.27296530, 0.99891706, 0.99942829, 0.49325595],\
+[	-6.27331993, -0.00035449, 0.00021716, 7.27296544, 0.99891718, 0.99942835, 0.49325608],\
+[	-6.27332003, -0.00035445, 0.00021713, 7.27296558, 0.99891730, 0.99942842, 0.49325597],\
+[	-6.27332012, -0.00035441, 0.00021711, 7.27296571, 0.99891743, 0.99942848, 0.49325598],\
+[	-6.27332022, -0.00035437, 0.00021708, 7.27296585, 0.99891755, 0.99942855, 0.49325613],\
+[	-6.27332032, -0.00035433, 0.00021706, 7.27296599, 0.99891768, 0.99942861, 0.49325588],\
+[	-6.27332042, -0.00035429, 0.00021703, 7.27296613, 0.99891780, 0.99942868, 0.49325598],\
+[	-6.27332051, -0.00035425, 0.00021701, 7.27296626, 0.99891792, 0.99942874, 0.49325592],\
+[	-6.27332061, -0.00035421, 0.00021698, 7.27296640, 0.99891805, 0.99942881, 0.49325612],\
+[	-6.27332071, -0.00035417, 0.00021696, 7.27296654, 0.99891817, 0.99942888, 0.49325620],\
+[	-6.27332080, -0.00035413, 0.00021693, 7.27296668, 0.99891830, 0.99942894, 0.49325610],\
+[	-6.27332090, -0.00035409, 0.00021691, 7.27296681, 0.99891842, 0.99942901, 0.49325614],\
+[	-6.27332100, -0.00035405, 0.00021688, 7.27296695, 0.99891854, 0.99942907, 0.49325612],\
+[	-6.27332109, -0.00035400, 0.00021686, 7.27296709, 0.99891867, 0.99942914, 0.49325613],\
+[	-6.27332119, -0.00035396, 0.00021683, 7.27296723, 0.99891879, 0.99942920, 0.49325604],\
+[	-6.27332129, -0.00035392, 0.00021681, 7.27296736, 0.99891891, 0.99942927, 0.49325626],\
+[	-6.27332139, -0.00035388, 0.00021678, 7.27296750, 0.99891904, 0.99942933, 0.49325625],\
+[	-6.27332148, -0.00035384, 0.00021676, 7.27296764, 0.99891916, 0.99942940, 0.49325605],\
+[	-6.27332158, -0.00035380, 0.00021673, 7.27296778, 0.99891928, 0.99942946, 0.49325626],\
+[	-6.27332168, -0.00035376, 0.00021671, 7.27296791, 0.99891941, 0.99942953, 0.49325629],\
+[	-6.27332177, -0.00035372, 0.00021669, 7.27296805, 0.99891953, 0.99942959, 0.49325630],\
+[	-6.27332187, -0.00035368, 0.00021666, 7.27296819, 0.99891966, 0.99942966, 0.49325628],\
+[	-6.27332197, -0.00035364, 0.00021664, 7.27296833, 0.99891978, 0.99942972, 0.49325635],\
+[	-6.27332206, -0.00035360, 0.00021661, 7.27296846, 0.99891990, 0.99942979, 0.49325625],\
+[	-6.27332216, -0.00035356, 0.00021659, 7.27296860, 0.99892003, 0.99942985, 0.49325617],\
+[	-6.27332226, -0.00035352, 0.00021656, 7.27296874, 0.99892015, 0.99942992, 0.49325641],\
+[	-6.27332235, -0.00035348, 0.00021654, 7.27296887, 0.99892027, 0.99942998, 0.49325636],\
+[	-6.27332245, -0.00035344, 0.00021651, 7.27296901, 0.99892040, 0.99943005, 0.49325630],\
+[	-6.27332255, -0.00035340, 0.00021649, 7.27296915, 0.99892052, 0.99943011, 0.49325637],\
+[	-6.27332264, -0.00035336, 0.00021646, 7.27296928, 0.99892064, 0.99943018, 0.49325631],\
+[	-6.27332274, -0.00035332, 0.00021644, 7.27296942, 0.99892077, 0.99943024, 0.49325656],\
+[	-6.27332284, -0.00035328, 0.00021641, 7.27296956, 0.99892089, 0.99943031, 0.49325631],\
+[	-6.27332293, -0.00035324, 0.00021639, 7.27296970, 0.99892101, 0.99943037, 0.49325638],\
+[	-6.27332303, -0.00035320, 0.00021636, 7.27296983, 0.99892114, 0.99943044, 0.49325647],\
+[	-6.27332313, -0.00035316, 0.00021634, 7.27296997, 0.99892126, 0.99943050, 0.49325639],\
+[	-6.27332322, -0.00035312, 0.00021631, 7.27297011, 0.99892138, 0.99943057, 0.49325638],\
+[	-6.27332332, -0.00035308, 0.00021629, 7.27297024, 0.99892150, 0.99943063, 0.49325638],\
+[	-6.27332341, -0.00035304, 0.00021626, 7.27297038, 0.99892163, 0.99943070, 0.49325643],\
+[	-6.27332351, -0.00035300, 0.00021624, 7.27297052, 0.99892175, 0.99943076, 0.49325659],\
+[	-6.27332361, -0.00035296, 0.00021622, 7.27297065, 0.99892187, 0.99943083, 0.49325672],\
+[	-6.27332370, -0.00035291, 0.00021619, 7.27297079, 0.99892200, 0.99943089, 0.49325654],\
+[	-6.27332380, -0.00035287, 0.00021617, 7.27297093, 0.99892212, 0.99943096, 0.49325642],\
+[	-6.27332390, -0.00035283, 0.00021614, 7.27297106, 0.99892224, 0.99943102, 0.49325660],\
+[	-6.27332399, -0.00035279, 0.00021612, 7.27297120, 0.99892237, 0.99943109, 0.49325667],\
+[	-6.27332409, -0.00035275, 0.00021609, 7.27297133, 0.99892249, 0.99943115, 0.49325649],\
+[	-6.27332418, -0.00035271, 0.00021607, 7.27297147, 0.99892261, 0.99943122, 0.49325655],\
+[	-6.27332428, -0.00035267, 0.00021604, 7.27297161, 0.99892273, 0.99943128, 0.49325662],\
+[	-6.27332438, -0.00035263, 0.00021602, 7.27297174, 0.99892286, 0.99943135, 0.49325664],\
+[	-6.27332447, -0.00035259, 0.00021599, 7.27297188, 0.99892298, 0.99943141, 0.49325657],\
+[	-6.27332457, -0.00035255, 0.00021597, 7.27297202, 0.99892310, 0.99943148, 0.49325670],\
+[	-6.27332467, -0.00035251, 0.00021594, 7.27297215, 0.99892322, 0.99943154, 0.49325664],\
+[	-6.27332476, -0.00035247, 0.00021592, 7.27297229, 0.99892335, 0.99943161, 0.49325680],\
+[	-6.27332486, -0.00035243, 0.00021590, 7.27297243, 0.99892347, 0.99943167, 0.49325677],\
+[	-6.27332495, -0.00035239, 0.00021587, 7.27297256, 0.99892359, 0.99943174, 0.49325674],\
+[	-6.27332505, -0.00035235, 0.00021585, 7.27297270, 0.99892371, 0.99943180, 0.49325673],\
+[	-6.27332515, -0.00035231, 0.00021582, 7.27297283, 0.99892384, 0.99943187, 0.49325687],\
+[	-6.27332524, -0.00035227, 0.00021580, 7.27297297, 0.99892396, 0.99943193, 0.49325676],\
+[	-6.27332534, -0.00035223, 0.00021577, 7.27297311, 0.99892408, 0.99943200, 0.49325694],\
+[	-6.27332543, -0.00035219, 0.00021575, 7.27297324, 0.99892420, 0.99943206, 0.49325684],\
+[	-6.27332553, -0.00035215, 0.00021572, 7.27297338, 0.99892433, 0.99943212, 0.49325673],\
+[	-6.27332563, -0.00035211, 0.00021570, 7.27297351, 0.99892445, 0.99943219, 0.49325679],\
+[	-6.27332572, -0.00035207, 0.00021567, 7.27297365, 0.99892457, 0.99943225, 0.49325687],\
+[	-6.27332582, -0.00035203, 0.00021565, 7.27297379, 0.99892469, 0.99943232, 0.49325682],\
+[	-6.27332591, -0.00035199, 0.00021563, 7.27297392, 0.99892482, 0.99943238, 0.49325693],\
+[	-6.27332601, -0.00035195, 0.00021560, 7.27297406, 0.99892494, 0.99943245, 0.49325706],\
+[	-6.27332611, -0.00035191, 0.00021558, 7.27297419, 0.99892506, 0.99943251, 0.49325679],\
+[	-6.27332620, -0.00035187, 0.00021555, 7.27297433, 0.99892518, 0.99943258, 0.49325693],\
+[	-6.27332630, -0.00035183, 0.00021553, 7.27297446, 0.99892531, 0.99943264, 0.49325690],\
+[	-6.27332639, -0.00035179, 0.00021550, 7.27297460, 0.99892543, 0.99943271, 0.49325679],\
+[	-6.27332649, -0.00035175, 0.00021548, 7.27297474, 0.99892555, 0.99943277, 0.49325703],\
+[	-6.27332658, -0.00035171, 0.00021545, 7.27297487, 0.99892567, 0.99943283, 0.49325709],\
+[	-6.27332668, -0.00035167, 0.00021543, 7.27297501, 0.99892579, 0.99943290, 0.49325716],\
+[	-6.27332678, -0.00035163, 0.00021540, 7.27297514, 0.99892592, 0.99943296, 0.49325688],\
+[	-6.27332687, -0.00035159, 0.00021538, 7.27297528, 0.99892604, 0.99943303, 0.49325701],\
+[	-6.27332697, -0.00035155, 0.00021536, 7.27297541, 0.99892616, 0.99943309, 0.49325699],\
+[	-6.27332706, -0.00035151, 0.00021533, 7.27297555, 0.99892628, 0.99943316, 0.49325716],\
+[	-6.27332716, -0.00035147, 0.00021531, 7.27297569, 0.99892640, 0.99943322, 0.49325705],\
+[	-6.27332725, -0.00035143, 0.00021528, 7.27297582, 0.99892653, 0.99943329, 0.49325714],\
+[	-6.27332735, -0.00035139, 0.00021526, 7.27297596, 0.99892665, 0.99943335, 0.49325697],\
+[	-6.27332744, -0.00035135, 0.00021523, 7.27297609, 0.99892677, 0.99943341, 0.49325706],\
+[	-6.27332754, -0.00035131, 0.00021521, 7.27297623, 0.99892689, 0.99943348, 0.49325710],\
+[	-6.27332763, -0.00035127, 0.00021518, 7.27297636, 0.99892701, 0.99943354, 0.49325718],\
+[	-6.27332773, -0.00035123, 0.00021516, 7.27297650, 0.99892714, 0.99943361, 0.49325714],\
+[	-6.27332783, -0.00035119, 0.00021514, 7.27297663, 0.99892726, 0.99943367, 0.49325704],\
+[	-6.27332792, -0.00035115, 0.00021511, 7.27297677, 0.99892738, 0.99943374, 0.49325724],\
+[	-6.27332802, -0.00035111, 0.00021509, 7.27297690, 0.99892750, 0.99943380, 0.49325727],\
+[	-6.27332811, -0.00035107, 0.00021506, 7.27297704, 0.99892762, 0.99943386, 0.49325718],\
+[	-6.27332821, -0.00035103, 0.00021504, 7.27297717, 0.99892774, 0.99943393, 0.49325715],\
+[	-6.27332830, -0.00035099, 0.00021501, 7.27297731, 0.99892787, 0.99943399, 0.49325736],\
+[	-6.27332840, -0.00035095, 0.00021499, 7.27297744, 0.99892799, 0.99943406, 0.49325725],\
+[	-6.27332849, -0.00035091, 0.00021496, 7.27297758, 0.99892811, 0.99943412, 0.49325737],\
+[	-6.27332859, -0.00035087, 0.00021494, 7.27297771, 0.99892823, 0.99943418, 0.49325733],\
+[	-6.27332868, -0.00035084, 0.00021492, 7.27297785, 0.99892835, 0.99943425, 0.49325727],\
+[	-6.27332878, -0.00035080, 0.00021489, 7.27297798, 0.99892847, 0.99943431, 0.49325722],\
+[	-6.27332887, -0.00035076, 0.00021487, 7.27297812, 0.99892859, 0.99943438, 0.49325726],\
+[	-6.27332897, -0.00035072, 0.00021484, 7.27297825, 0.99892872, 0.99943444, 0.49325746],\
+[	-6.27332906, -0.00035068, 0.00021482, 7.27297839, 0.99892884, 0.99943451, 0.49325735],\
+[	-6.27332916, -0.00035064, 0.00021479, 7.27297852, 0.99892896, 0.99943457, 0.49325729],\
+[	-6.27332925, -0.00035060, 0.00021477, 7.27297866, 0.99892908, 0.99943463, 0.49325733],\
+[	-6.27332935, -0.00035056, 0.00021475, 7.27297879, 0.99892920, 0.99943470, 0.49325743],\
+[	-6.27332944, -0.00035052, 0.00021472, 7.27297893, 0.99892932, 0.99943476, 0.49325745],\
+[	-6.27332954, -0.00035048, 0.00021470, 7.27297906, 0.99892944, 0.99943483, 0.49325763],\
+[	-6.27332963, -0.00035044, 0.00021467, 7.27297920, 0.99892956, 0.99943489, 0.49325734],\
+[	-6.27332973, -0.00035040, 0.00021465, 7.27297933, 0.99892969, 0.99943495, 0.49325743],\
+[	-6.27332982, -0.00035036, 0.00021462, 7.27297947, 0.99892981, 0.99943502, 0.49325746],\
+[	-6.27332992, -0.00035032, 0.00021460, 7.27297960, 0.99892993, 0.99943508, 0.49325750],\
+[	-6.27333001, -0.00035028, 0.00021458, 7.27297973, 0.99893005, 0.99943515, 0.49325754],\
+[	-6.27333011, -0.00035024, 0.00021455, 7.27297987, 0.99893017, 0.99943521, 0.49325751],\
+[	-6.27333020, -0.00035020, 0.00021453, 7.27298000, 0.99893029, 0.99943527, 0.49325761],\
+[	-6.27333030, -0.00035016, 0.00021450, 7.27298014, 0.99893041, 0.99943534, 0.49325752],\
+[	-6.27333039, -0.00035012, 0.00021448, 7.27298027, 0.99893053, 0.99943540, 0.49325748],\
+[	-6.27333049, -0.00035008, 0.00021445, 7.27298041, 0.99893065, 0.99943546, 0.49325770],\
+[	-6.27333058, -0.00035004, 0.00021443, 7.27298054, 0.99893078, 0.99943553, 0.49325749],\
+[	-6.27333068, -0.00035000, 0.00021441, 7.27298068, 0.99893090, 0.99943559, 0.49325754],\
+[	-6.27333077, -0.00034996, 0.00021438, 7.27298081, 0.99893102, 0.99943566, 0.49325757],\
+[	-6.27333087, -0.00034992, 0.00021436, 7.27298094, 0.99893114, 0.99943572, 0.49325772],\
+[	-6.27333096, -0.00034988, 0.00021433, 7.27298108, 0.99893126, 0.99943578, 0.49325749],\
+[	-6.27333106, -0.00034984, 0.00021431, 7.27298121, 0.99893138, 0.99943585, 0.49325746],\
+[	-6.27333115, -0.00034980, 0.00021428, 7.27298135, 0.99893150, 0.99943591, 0.49325763],\
+[	-6.27333125, -0.00034976, 0.00021426, 7.27298148, 0.99893162, 0.99943597, 0.49325780],\
+[	-6.27333134, -0.00034973, 0.00021424, 7.27298162, 0.99893174, 0.99943604, 0.49325773],\
+[	-6.27333144, -0.00034969, 0.00021421, 7.27298175, 0.99893186, 0.99943610, 0.49325774],\
+[	-6.27333153, -0.00034965, 0.00021419, 7.27298188, 0.99893198, 0.99943617, 0.49325768],\
+[	-6.27333162, -0.00034961, 0.00021416, 7.27298202, 0.99893210, 0.99943623, 0.49325772],\
+[	-6.27333172, -0.00034957, 0.00021414, 7.27298215, 0.99893223, 0.99943629, 0.49325780],\
+[	-6.27333181, -0.00034953, 0.00021412, 7.27298229, 0.99893235, 0.99943636, 0.49325790],\
+[	-6.27333191, -0.00034949, 0.00021409, 7.27298242, 0.99893247, 0.99943642, 0.49325769],\
+[	-6.27333200, -0.00034945, 0.00021407, 7.27298255, 0.99893259, 0.99943648, 0.49325784],\
+[	-6.27333210, -0.00034941, 0.00021404, 7.27298269, 0.99893271, 0.99943655, 0.49325781],\
+[	-6.27333219, -0.00034937, 0.00021402, 7.27298282, 0.99893283, 0.99943661, 0.49325781],\
+[	-6.27333229, -0.00034933, 0.00021399, 7.27298296, 0.99893295, 0.99943668, 0.49325775],\
+[	-6.27333238, -0.00034929, 0.00021397, 7.27298309, 0.99893307, 0.99943674, 0.49325777],\
+[	-6.27333247, -0.00034925, 0.00021395, 7.27298322, 0.99893319, 0.99943680, 0.49325794],\
+[	-6.27333257, -0.00034921, 0.00021392, 7.27298336, 0.99893331, 0.99943687, 0.49325786],\
+[	-6.27333266, -0.00034917, 0.00021390, 7.27298349, 0.99893343, 0.99943693, 0.49325783],\
+[	-6.27333276, -0.00034913, 0.00021387, 7.27298362, 0.99893355, 0.99943699, 0.49325777],\
+[	-6.27333285, -0.00034909, 0.00021385, 7.27298376, 0.99893367, 0.99943706, 0.49325800],\
+[	-6.27333295, -0.00034905, 0.00021383, 7.27298389, 0.99893379, 0.99943712, 0.49325788],\
+[	-6.27333304, -0.00034902, 0.00021380, 7.27298402, 0.99893391, 0.99943718, 0.49325796],\
+[	-6.27333313, -0.00034898, 0.00021378, 7.27298416, 0.99893403, 0.99943725, 0.49325777],\
+[	-6.27333323, -0.00034894, 0.00021375, 7.27298429, 0.99893415, 0.99943731, 0.49325803],\
+[	-6.27333332, -0.00034890, 0.00021373, 7.27298443, 0.99893427, 0.99943737, 0.49325799],\
+[	-6.27333342, -0.00034886, 0.00021370, 7.27298456, 0.99893439, 0.99943744, 0.49325815],\
+[	-6.27333351, -0.00034882, 0.00021368, 7.27298469, 0.99893451, 0.99943750, 0.49325810],\
+[	-6.27333360, -0.00034878, 0.00021366, 7.27298483, 0.99893463, 0.99943756, 0.49325805],\
+[	-6.27333370, -0.00034874, 0.00021363, 7.27298496, 0.99893475, 0.99943763, 0.49325805],\
+[	-6.27333379, -0.00034870, 0.00021361, 7.27298509, 0.99893487, 0.99943769, 0.49325810],\
+[	-6.27333389, -0.00034866, 0.00021358, 7.27298523, 0.99893499, 0.99943775, 0.49325812],\
+[	-6.27333398, -0.00034862, 0.00021356, 7.27298536, 0.99893511, 0.99943782, 0.49325800],\
+[	-6.27333408, -0.00034858, 0.00021354, 7.27298549, 0.99893523, 0.99943788, 0.49325798],\
+[	-6.27333417, -0.00034854, 0.00021351, 7.27298563, 0.99893535, 0.99943794, 0.49325819],\
+[	-6.27333426, -0.00034850, 0.00021349, 7.27298576, 0.99893547, 0.99943801, 0.49325809],\
+[	-6.27333436, -0.00034847, 0.00021346, 7.27298589, 0.99893559, 0.99943807, 0.49325811],\
+[	-6.27333445, -0.00034843, 0.00021344, 7.27298602, 0.99893571, 0.99943813, 0.49325804],\
+[	-6.27333454, -0.00034839, 0.00021342, 7.27298616, 0.99893583, 0.99943820, 0.49325814],\
+[	-6.27333464, -0.00034835, 0.00021339, 7.27298629, 0.99893595, 0.99943826, 0.49325817],\
+[	-6.27333473, -0.00034831, 0.00021337, 7.27298642, 0.99893607, 0.99943832, 0.49325810],\
+[	-6.27333483, -0.00034827, 0.00021334, 7.27298656, 0.99893619, 0.99943839, 0.49325810],\
+[	-6.27333492, -0.00034823, 0.00021332, 7.27298669, 0.99893631, 0.99943845, 0.49325813],\
+[	-6.27333501, -0.00034819, 0.00021330, 7.27298682, 0.99893643, 0.99943851, 0.49325821],\
+[	-6.27333511, -0.00034815, 0.00021327, 7.27298696, 0.99893655, 0.99943858, 0.49325825],\
+[	-6.27333520, -0.00034811, 0.00021325, 7.27298709, 0.99893667, 0.99943864, 0.49325802],\
+[	-6.27333530, -0.00034807, 0.00021322, 7.27298722, 0.99893679, 0.99943870, 0.49325839],\
+[	-6.27333539, -0.00034803, 0.00021320, 7.27298735, 0.99893691, 0.99943877, 0.49325824],\
+[	-6.27333548, -0.00034800, 0.00021318, 7.27298749, 0.99893703, 0.99943883, 0.49325827],\
+[	-6.27333558, -0.00034796, 0.00021315, 7.27298762, 0.99893715, 0.99943889, 0.49325830],\
+[	-6.27333567, -0.00034792, 0.00021313, 7.27298775, 0.99893727, 0.99943895, 0.49325817],\
+[	-6.27333576, -0.00034788, 0.00021310, 7.27298789, 0.99893739, 0.99943902, 0.49325841],\
+[	-6.27333586, -0.00034784, 0.00021308, 7.27298802, 0.99893751, 0.99943908, 0.49325836],\
+[	-6.27333595, -0.00034780, 0.00021306, 7.27298815, 0.99893763, 0.99943914, 0.49325836],\
+[	-6.27333604, -0.00034776, 0.00021303, 7.27298828, 0.99893774, 0.99943921, 0.49325838],\
+[	-6.27333614, -0.00034772, 0.00021301, 7.27298842, 0.99893786, 0.99943927, 0.49325845],\
+[	-6.27333623, -0.00034768, 0.00021298, 7.27298855, 0.99893798, 0.99943933, 0.49325848],\
+[	-6.27333632, -0.00034764, 0.00021296, 7.27298868, 0.99893810, 0.99943940, 0.49325833],\
+[	-6.27333642, -0.00034760, 0.00021294, 7.27298881, 0.99893822, 0.99943946, 0.49325843],\
+[	-6.27333651, -0.00034757, 0.00021291, 7.27298895, 0.99893834, 0.99943952, 0.49325849],\
+[	-6.27333661, -0.00034753, 0.00021289, 7.27298908, 0.99893846, 0.99943958, 0.49325841],\
+[	-6.27333670, -0.00034749, 0.00021286, 7.27298921, 0.99893858, 0.99943965, 0.49325856],\
+[	-6.27333679, -0.00034745, 0.00021284, 7.27298934, 0.99893870, 0.99943971, 0.49325841],\
+[	-6.27333689, -0.00034741, 0.00021282, 7.27298948, 0.99893882, 0.99943977, 0.49325845],\
+[	-6.27333698, -0.00034737, 0.00021279, 7.27298961, 0.99893894, 0.99943984, 0.49325852],\
+[	-6.27333707, -0.00034733, 0.00021277, 7.27298974, 0.99893906, 0.99943990, 0.49325863],\
+[	-6.27333717, -0.00034729, 0.00021275, 7.27298987, 0.99893918, 0.99943996, 0.49325866],\
+[	-6.27333726, -0.00034725, 0.00021272, 7.27299000, 0.99893929, 0.99944002, 0.49325856],\
+[	-6.27333735, -0.00034721, 0.00021270, 7.27299014, 0.99893941, 0.99944009, 0.49325854],\
+[	-6.27333745, -0.00034718, 0.00021267, 7.27299027, 0.99893953, 0.99944015, 0.49325858],\
+[	-6.27333754, -0.00034714, 0.00021265, 7.27299040, 0.99893965, 0.99944021, 0.49325856],\
+[	-6.27333763, -0.00034710, 0.00021263, 7.27299053, 0.99893977, 0.99944028, 0.49325873],\
+[	-6.27333772, -0.00034706, 0.00021260, 7.27299067, 0.99893989, 0.99944034, 0.49325877],\
+[	-6.27333782, -0.00034702, 0.00021258, 7.27299080, 0.99894001, 0.99944040, 0.49325864],\
+[	-6.27333791, -0.00034698, 0.00021255, 7.27299093, 0.99894013, 0.99944046, 0.49325857],\
+[	-6.27333800, -0.00034694, 0.00021253, 7.27299106, 0.99894025, 0.99944053, 0.49325852],\
+[	-6.27333810, -0.00034690, 0.00021251, 7.27299119, 0.99894036, 0.99944059, 0.49325872],\
+[	-6.27333819, -0.00034686, 0.00021248, 7.27299133, 0.99894048, 0.99944065, 0.49325865],\
+[	-6.27333828, -0.00034683, 0.00021246, 7.27299146, 0.99894060, 0.99944072, 0.49325884],\
+[	-6.27333838, -0.00034679, 0.00021244, 7.27299159, 0.99894072, 0.99944078, 0.49325864],\
+[	-6.27333847, -0.00034675, 0.00021241, 7.27299172, 0.99894084, 0.99944084, 0.49325865],\
+[	-6.27333856, -0.00034671, 0.00021239, 7.27299185, 0.99894096, 0.99944090, 0.49325871],\
+[	-6.27333866, -0.00034667, 0.00021236, 7.27299199, 0.99894108, 0.99944097, 0.49325862],\
+[	-6.27333875, -0.00034663, 0.00021234, 7.27299212, 0.99894120, 0.99944103, 0.49325892],\
+[	-6.27333884, -0.00034659, 0.00021232, 7.27299225, 0.99894131, 0.99944109, 0.49325886],\
+[	-6.27333893, -0.00034655, 0.00021229, 7.27299238, 0.99894143, 0.99944115, 0.49325892],\
+[	-6.27333903, -0.00034652, 0.00021227, 7.27299251, 0.99894155, 0.99944122, 0.49325878],\
+[	-6.27333912, -0.00034648, 0.00021225, 7.27299264, 0.99894167, 0.99944128, 0.49325893],\
+[	-6.27333921, -0.00034644, 0.00021222, 7.27299278, 0.99894179, 0.99944134, 0.49325882],\
+[	-6.27333931, -0.00034640, 0.00021220, 7.27299291, 0.99894191, 0.99944140, 0.49325880],\
+[	-6.27333940, -0.00034636, 0.00021217, 7.27299304, 0.99894202, 0.99944147, 0.49325884],\
+[	-6.27333949, -0.00034632, 0.00021215, 7.27299317, 0.99894214, 0.99944153, 0.49325871],\
+[	-6.27333958, -0.00034628, 0.00021213, 7.27299330, 0.99894226, 0.99944159, 0.49325888],\
+[	-6.27333968, -0.00034624, 0.00021210, 7.27299343, 0.99894238, 0.99944165, 0.49325907],\
+[	-6.27333977, -0.00034620, 0.00021208, 7.27299356, 0.99894250, 0.99944172, 0.49325884],\
+[	-6.27333986, -0.00034617, 0.00021206, 7.27299370, 0.99894262, 0.99944178, 0.49325906],\
+[	-6.27333995, -0.00034613, 0.00021203, 7.27299383, 0.99894273, 0.99944184, 0.49325903],\
+[	-6.27334005, -0.00034609, 0.00021201, 7.27299396, 0.99894285, 0.99944190, 0.49325895],\
+[	-6.27334014, -0.00034605, 0.00021198, 7.27299409, 0.99894297, 0.99944197, 0.49325883],\
+[	-6.27334023, -0.00034601, 0.00021196, 7.27299422, 0.99894309, 0.99944203, 0.49325893],\
+[	-6.27334033, -0.00034597, 0.00021194, 7.27299435, 0.99894321, 0.99944209, 0.49325903],\
+[	-6.27334042, -0.00034593, 0.00021191, 7.27299448, 0.99894333, 0.99944215, 0.49325919],\
+[	-6.27334051, -0.00034590, 0.00021189, 7.27299461, 0.99894344, 0.99944222, 0.49325911],\
+[	-6.27334060, -0.00034586, 0.00021187, 7.27299475, 0.99894356, 0.99944228, 0.49325916],\
+[	-6.27334070, -0.00034582, 0.00021184, 7.27299488, 0.99894368, 0.99944234, 0.49325910],\
+[	-6.27334079, -0.00034578, 0.00021182, 7.27299501, 0.99894380, 0.99944240, 0.49325905],\
+[	-6.27334088, -0.00034574, 0.00021179, 7.27299514, 0.99894392, 0.99944246, 0.49325907],\
+[	-6.27334097, -0.00034570, 0.00021177, 7.27299527, 0.99894403, 0.99944253, 0.49325918],\
+[	-6.27334107, -0.00034566, 0.00021175, 7.27299540, 0.99894415, 0.99944259, 0.49325910],\
+[	-6.27334116, -0.00034563, 0.00021172, 7.27299553, 0.99894427, 0.99944265, 0.49325909],\
+[	-6.27334125, -0.00034559, 0.00021170, 7.27299566, 0.99894439, 0.99944271, 0.49325903],\
+[	-6.27334134, -0.00034555, 0.00021168, 7.27299579, 0.99894451, 0.99944278, 0.49325934],\
+[	-6.27334143, -0.00034551, 0.00021165, 7.27299593, 0.99894462, 0.99944284, 0.49325921],\
+[	-6.27334153, -0.00034547, 0.00021163, 7.27299606, 0.99894474, 0.99944290, 0.49325916],\
+[	-6.27334162, -0.00034543, 0.00021161, 7.27299619, 0.99894486, 0.99944296, 0.49325905],\
+[	-6.27334171, -0.00034539, 0.00021158, 7.27299632, 0.99894498, 0.99944302, 0.49325932],\
+[	-6.27334180, -0.00034536, 0.00021156, 7.27299645, 0.99894509, 0.99944309, 0.49325918],\
+[	-6.27334190, -0.00034532, 0.00021153, 7.27299658, 0.99894521, 0.99944315, 0.49325928],\
+[	-6.27334199, -0.00034528, 0.00021151, 7.27299671, 0.99894533, 0.99944321, 0.49325927],\
+[	-6.27334208, -0.00034524, 0.00021149, 7.27299684, 0.99894545, 0.99944327, 0.49325910],\
+[	-6.27334217, -0.00034520, 0.00021146, 7.27299697, 0.99894557, 0.99944334, 0.49325933],\
+[	-6.27334226, -0.00034516, 0.00021144, 7.27299710, 0.99894568, 0.99944340, 0.49325931],\
+[	-6.27334236, -0.00034512, 0.00021142, 7.27299723, 0.99894580, 0.99944346, 0.49325913],\
+[	-6.27334245, -0.00034509, 0.00021139, 7.27299736, 0.99894592, 0.99944352, 0.49325935],\
+[	-6.27334254, -0.00034505, 0.00021137, 7.27299749, 0.99894604, 0.99944358, 0.49325926],\
+[	-6.27334263, -0.00034501, 0.00021135, 7.27299762, 0.99894615, 0.99944365, 0.49325931],\
+[	-6.27334273, -0.00034497, 0.00021132, 7.27299776, 0.99894627, 0.99944371, 0.49325923],\
+[	-6.27334282, -0.00034493, 0.00021130, 7.27299789, 0.99894639, 0.99944377, 0.49325932],\
+[	-6.27334291, -0.00034489, 0.00021128, 7.27299802, 0.99894651, 0.99944383, 0.49325937],\
+[	-6.27334300, -0.00034486, 0.00021125, 7.27299815, 0.99894662, 0.99944389, 0.49325925],\
+[	-6.27334309, -0.00034482, 0.00021123, 7.27299828, 0.99894674, 0.99944396, 0.49325938],\
+[	-6.27334319, -0.00034478, 0.00021120, 7.27299841, 0.99894686, 0.99944402, 0.49325937],\
+[	-6.27334328, -0.00034474, 0.00021118, 7.27299854, 0.99894697, 0.99944408, 0.49325933],\
+[	-6.27334337, -0.00034470, 0.00021116, 7.27299867, 0.99894709, 0.99944414, 0.49325964],\
+[	-6.27334346, -0.00034466, 0.00021113, 7.27299880, 0.99894721, 0.99944420, 0.49325932],\
+[	-6.27334355, -0.00034462, 0.00021111, 7.27299893, 0.99894733, 0.99944426, 0.49325939],\
+[	-6.27334364, -0.00034459, 0.00021109, 7.27299906, 0.99894744, 0.99944433, 0.49325953],\
+[	-6.27334374, -0.00034455, 0.00021106, 7.27299919, 0.99894756, 0.99944439, 0.49325955],\
+[	-6.27334383, -0.00034451, 0.00021104, 7.27299932, 0.99894768, 0.99944445, 0.49325952],\
+[	-6.27334392, -0.00034447, 0.00021102, 7.27299945, 0.99894780, 0.99944451, 0.49325957],\
+[	-6.27334401, -0.00034443, 0.00021099, 7.27299958, 0.99894791, 0.99944457, 0.49325952],\
+[	-6.27334410, -0.00034439, 0.00021097, 7.27299971, 0.99894803, 0.99944464, 0.49325948],\
+[	-6.27334420, -0.00034436, 0.00021095, 7.27299984, 0.99894815, 0.99944470, 0.49325953],\
+[	-6.27334429, -0.00034432, 0.00021092, 7.27299997, 0.99894826, 0.99944476, 0.49325969],\
+[	-6.27334438, -0.00034428, 0.00021090, 7.27300010, 0.99894838, 0.99944482, 0.49325951],\
+[	-6.27334447, -0.00034424, 0.00021088, 7.27300023, 0.99894850, 0.99944488, 0.49325964],\
+[	-6.27334456, -0.00034420, 0.00021085, 7.27300036, 0.99894861, 0.99944494, 0.49325959],\
+[	-6.27334465, -0.00034417, 0.00021083, 7.27300049, 0.99894873, 0.99944501, 0.49325984],\
+[	-6.27334475, -0.00034413, 0.00021081, 7.27300062, 0.99894885, 0.99944507, 0.49325961],\
+[	-6.27334484, -0.00034409, 0.00021078, 7.27300075, 0.99894897, 0.99944513, 0.49325970],\
+[	-6.27334493, -0.00034405, 0.00021076, 7.27300088, 0.99894908, 0.99944519, 0.49325973],\
+[	-6.27334502, -0.00034401, 0.00021073, 7.27300101, 0.99894920, 0.99944525, 0.49325965],\
+[	-6.27334511, -0.00034397, 0.00021071, 7.27300114, 0.99894932, 0.99944531, 0.49325961],\
+[	-6.27334520, -0.00034394, 0.00021069, 7.27300127, 0.99894943, 0.99944538, 0.49325970],\
+[	-6.27334529, -0.00034390, 0.00021066, 7.27300140, 0.99894955, 0.99944544, 0.49325947],\
+[	-6.27334539, -0.00034386, 0.00021064, 7.27300153, 0.99894967, 0.99944550, 0.49325970],\
+[	-6.27334548, -0.00034382, 0.00021062, 7.27300166, 0.99894978, 0.99944556, 0.49325986],\
+[	-6.27334557, -0.00034378, 0.00021059, 7.27300179, 0.99894990, 0.99944562, 0.49325975],\
+[	-6.27334566, -0.00034374, 0.00021057, 7.27300192, 0.99895002, 0.99944568, 0.49325973],\
+[	-6.27334575, -0.00034371, 0.00021055, 7.27300205, 0.99895013, 0.99944575, 0.49325990],\
+[	-6.27334584, -0.00034367, 0.00021052, 7.27300217, 0.99895025, 0.99944581, 0.49325987],\
+[	-6.27334593, -0.00034363, 0.00021050, 7.27300230, 0.99895037, 0.99944587, 0.49325975],\
+[	-6.27334603, -0.00034359, 0.00021048, 7.27300243, 0.99895048, 0.99944593, 0.49325986],\
+[	-6.27334612, -0.00034355, 0.00021045, 7.27300256, 0.99895060, 0.99944599, 0.49325980],\
+[	-6.27334621, -0.00034352, 0.00021043, 7.27300269, 0.99895072, 0.99944605, 0.49325999],\
+[	-6.27334630, -0.00034348, 0.00021041, 7.27300282, 0.99895083, 0.99944611, 0.49326005],\
+[	-6.27334639, -0.00034344, 0.00021038, 7.27300295, 0.99895095, 0.99944618, 0.49325989],\
+[	-6.27334648, -0.00034340, 0.00021036, 7.27300308, 0.99895106, 0.99944624, 0.49325982],\
+[	-6.27334657, -0.00034336, 0.00021034, 7.27300321, 0.99895118, 0.99944630, 0.49326004],\
+[	-6.27334666, -0.00034333, 0.00021031, 7.27300334, 0.99895130, 0.99944636, 0.49325987],\
+[	-6.27334676, -0.00034329, 0.00021029, 7.27300347, 0.99895141, 0.99944642, 0.49326003],\
+[	-6.27334685, -0.00034325, 0.00021027, 7.27300360, 0.99895153, 0.99944648, 0.49325986],\
+[	-6.27334694, -0.00034321, 0.00021024, 7.27300373, 0.99895165, 0.99944654, 0.49326013],\
+[	-6.27334703, -0.00034317, 0.00021022, 7.27300386, 0.99895176, 0.99944661, 0.49326001],\
+[	-6.27334712, -0.00034313, 0.00021020, 7.27300399, 0.99895188, 0.99944667, 0.49325997],\
+[	-6.27334721, -0.00034310, 0.00021017, 7.27300411, 0.99895199, 0.99944673, 0.49325982],\
+[	-6.27334730, -0.00034306, 0.00021015, 7.27300424, 0.99895211, 0.99944679, 0.49326004],\
+[	-6.27334739, -0.00034302, 0.00021013, 7.27300437, 0.99895223, 0.99944685, 0.49326000],\
+[	-6.27334748, -0.00034298, 0.00021010, 7.27300450, 0.99895234, 0.99944691, 0.49326002],\
+[	-6.27334758, -0.00034294, 0.00021008, 7.27300463, 0.99895246, 0.99944697, 0.49326019],\
+[	-6.27334767, -0.00034291, 0.00021006, 7.27300476, 0.99895258, 0.99944704, 0.49326022],\
+[	-6.27334776, -0.00034287, 0.00021003, 7.27300489, 0.99895269, 0.99944710, 0.49325991],\
+[	-6.27334785, -0.00034283, 0.00021001, 7.27300502, 0.99895281, 0.99944716, 0.49326017],\
+[	-6.27334794, -0.00034279, 0.00020999, 7.27300515, 0.99895292, 0.99944722, 0.49326012],\
+[	-6.27334803, -0.00034276, 0.00020996, 7.27300527, 0.99895304, 0.99944728, 0.49326022],\
+[	-6.27334812, -0.00034272, 0.00020994, 7.27300540, 0.99895316, 0.99944734, 0.49326001],\
+[	-6.27334821, -0.00034268, 0.00020992, 7.27300553, 0.99895327, 0.99944740, 0.49326024],\
+[	-6.27334830, -0.00034264, 0.00020989, 7.27300566, 0.99895339, 0.99944746, 0.49326021],\
+[	-6.27334839, -0.00034260, 0.00020987, 7.27300579, 0.99895350, 0.99944753, 0.49326029],\
+[	-6.27334848, -0.00034257, 0.00020985, 7.27300592, 0.99895362, 0.99944759, 0.49326016],\
+[	-6.27334857, -0.00034253, 0.00020983, 7.27300605, 0.99895373, 0.99944765, 0.49326016],\
+[	-6.27334867, -0.00034249, 0.00020980, 7.27300618, 0.99895385, 0.99944771, 0.49326045],\
+[	-6.27334876, -0.00034245, 0.00020978, 7.27300630, 0.99895397, 0.99944777, 0.49326011],\
+[	-6.27334885, -0.00034241, 0.00020976, 7.27300643, 0.99895408, 0.99944783, 0.49326023],\
+[	-6.27334894, -0.00034238, 0.00020973, 7.27300656, 0.99895420, 0.99944789, 0.49326007],\
+[	-6.27334903, -0.00034234, 0.00020971, 7.27300669, 0.99895431, 0.99944795, 0.49326021],\
+[	-6.27334912, -0.00034230, 0.00020969, 7.27300682, 0.99895443, 0.99944801, 0.49326027],\
+[	-6.27334921, -0.00034226, 0.00020966, 7.27300695, 0.99895454, 0.99944807, 0.49326040],\
+[	-6.27334930, -0.00034222, 0.00020964, 7.27300708, 0.99895466, 0.99944814, 0.49326032],\
+[	-6.27334939, -0.00034219, 0.00020962, 7.27300720, 0.99895478, 0.99944820, 0.49326028],\
+[	-6.27334948, -0.00034215, 0.00020959, 7.27300733, 0.99895489, 0.99944826, 0.49326022],\
+[	-6.27334957, -0.00034211, 0.00020957, 7.27300746, 0.99895501, 0.99944832, 0.49326044],\
+[	-6.27334966, -0.00034207, 0.00020955, 7.27300759, 0.99895512, 0.99944838, 0.49326036],\
+[	-6.27334975, -0.00034204, 0.00020952, 7.27300772, 0.99895524, 0.99944844, 0.49326052],\
+[	-6.27334984, -0.00034200, 0.00020950, 7.27300785, 0.99895535, 0.99944850, 0.49326050],\
+[	-6.27334993, -0.00034196, 0.00020948, 7.27300797, 0.99895547, 0.99944856, 0.49326047],\
+[	-6.27335002, -0.00034192, 0.00020945, 7.27300810, 0.99895558, 0.99944862, 0.49326049],\
+[	-6.27335011, -0.00034188, 0.00020943, 7.27300823, 0.99895570, 0.99944868, 0.49326038],\
+[	-6.27335021, -0.00034185, 0.00020941, 7.27300836, 0.99895582, 0.99944875, 0.49326054],\
+[	-6.27335030, -0.00034181, 0.00020938, 7.27300849, 0.99895593, 0.99944881, 0.49326041],\
+[	-6.27335039, -0.00034177, 0.00020936, 7.27300861, 0.99895605, 0.99944887, 0.49326059],\
+[	-6.27335048, -0.00034173, 0.00020934, 7.27300874, 0.99895616, 0.99944893, 0.49326058],\
+[	-6.27335057, -0.00034170, 0.00020932, 7.27300887, 0.99895628, 0.99944899, 0.49326043],\
+[	-6.27335066, -0.00034166, 0.00020929, 7.27300900, 0.99895639, 0.99944905, 0.49326062],\
+[	-6.27335075, -0.00034162, 0.00020927, 7.27300913, 0.99895651, 0.99944911, 0.49326067],\
+[	-6.27335084, -0.00034158, 0.00020925, 7.27300925, 0.99895662, 0.99944917, 0.49326078],\
+[	-6.27335093, -0.00034154, 0.00020922, 7.27300938, 0.99895674, 0.99944923, 0.49326065],\
+[	-6.27335102, -0.00034151, 0.00020920, 7.27300951, 0.99895685, 0.99944929, 0.49326059],\
+[	-6.27335111, -0.00034147, 0.00020918, 7.27300964, 0.99895697, 0.99944935, 0.49326055],\
+[	-6.27335120, -0.00034143, 0.00020915, 7.27300977, 0.99895708, 0.99944941, 0.49326066],\
+[	-6.27335129, -0.00034139, 0.00020913, 7.27300989, 0.99895720, 0.99944948, 0.49326077],\
+[	-6.27335138, -0.00034136, 0.00020911, 7.27301002, 0.99895731, 0.99944954, 0.49326066],\
+[	-6.27335147, -0.00034132, 0.00020908, 7.27301015, 0.99895743, 0.99944960, 0.49326075],\
+[	-6.27335156, -0.00034128, 0.00020906, 7.27301028, 0.99895754, 0.99944966, 0.49326055],\
+[	-6.27335165, -0.00034124, 0.00020904, 7.27301040, 0.99895766, 0.99944972, 0.49326086],\
+[	-6.27335174, -0.00034121, 0.00020902, 7.27301053, 0.99895777, 0.99944978, 0.49326055],\
+[	-6.27335183, -0.00034117, 0.00020899, 7.27301066, 0.99895789, 0.99944984, 0.49326069],\
+[	-6.27335192, -0.00034113, 0.00020897, 7.27301079, 0.99895800, 0.99944990, 0.49326076],\
+[	-6.27335201, -0.00034109, 0.00020895, 7.27301092, 0.99895812, 0.99944996, 0.49326064],\
+[	-6.27335210, -0.00034106, 0.00020892, 7.27301104, 0.99895823, 0.99945002, 0.49326064],\
+[	-6.27335219, -0.00034102, 0.00020890, 7.27301117, 0.99895835, 0.99945008, 0.49326079],\
+[	-6.27335228, -0.00034098, 0.00020888, 7.27301130, 0.99895846, 0.99945014, 0.49326094],\
+[	-6.27335237, -0.00034094, 0.00020885, 7.27301143, 0.99895858, 0.99945020, 0.49326073],\
+[	-6.27335246, -0.00034091, 0.00020883, 7.27301155, 0.99895869, 0.99945026, 0.49326067],\
+[	-6.27335255, -0.00034087, 0.00020881, 7.27301168, 0.99895881, 0.99945032, 0.49326096],\
+[	-6.27335264, -0.00034083, 0.00020878, 7.27301181, 0.99895892, 0.99945038, 0.49326074],\
+[	-6.27335273, -0.00034079, 0.00020876, 7.27301194, 0.99895903, 0.99945045, 0.49326072],\
+[	-6.27335282, -0.00034076, 0.00020874, 7.27301206, 0.99895915, 0.99945051, 0.49326097],\
+[	-6.27335291, -0.00034072, 0.00020872, 7.27301219, 0.99895926, 0.99945057, 0.49326095],\
+[	-6.27335300, -0.00034068, 0.00020869, 7.27301232, 0.99895938, 0.99945063, 0.49326083],\
+[	-6.27335309, -0.00034064, 0.00020867, 7.27301244, 0.99895949, 0.99945069, 0.49326094],\
+[	-6.27335318, -0.00034061, 0.00020865, 7.27301257, 0.99895961, 0.99945075, 0.49326071],\
+[	-6.27335327, -0.00034057, 0.00020862, 7.27301270, 0.99895972, 0.99945081, 0.49326094],\
+[	-6.27335336, -0.00034053, 0.00020860, 7.27301283, 0.99895984, 0.99945087, 0.49326119],\
+[	-6.27335345, -0.00034049, 0.00020858, 7.27301295, 0.99895995, 0.99945093, 0.49326102],\
+[	-6.27335354, -0.00034046, 0.00020856, 7.27301308, 0.99896007, 0.99945099, 0.49326095],\
+[	-6.27335363, -0.00034042, 0.00020853, 7.27301321, 0.99896018, 0.99945105, 0.49326111],\
+[	-6.27335372, -0.00034038, 0.00020851, 7.27301333, 0.99896029, 0.99945111, 0.49326093],\
+[	-6.27335380, -0.00034034, 0.00020849, 7.27301346, 0.99896041, 0.99945117, 0.49326092],\
+[	-6.27335389, -0.00034031, 0.00020846, 7.27301359, 0.99896052, 0.99945123, 0.49326086],\
+[	-6.27335398, -0.00034027, 0.00020844, 7.27301372, 0.99896064, 0.99945129, 0.49326111],\
+[	-6.27335407, -0.00034023, 0.00020842, 7.27301384, 0.99896075, 0.99945135, 0.49326085],\
+[	-6.27335416, -0.00034019, 0.00020839, 7.27301397, 0.99896087, 0.99945141, 0.49326107],\
+[	-6.27335425, -0.00034016, 0.00020837, 7.27301410, 0.99896098, 0.99945147, 0.49326138],\
+[	-6.27335434, -0.00034012, 0.00020835, 7.27301422, 0.99896109, 0.99945153, 0.49326107],\
+[	-6.27335443, -0.00034008, 0.00020833, 7.27301435, 0.99896121, 0.99945159, 0.49326110],\
+[	-6.27335452, -0.00034004, 0.00020830, 7.27301448, 0.99896132, 0.99945165, 0.49326107],\
+[	-6.27335461, -0.00034001, 0.00020828, 7.27301460, 0.99896144, 0.99945171, 0.49326111],\
+[	-6.27335470, -0.00033997, 0.00020826, 7.27301473, 0.99896155, 0.99945177, 0.49326094],\
+[	-6.27335479, -0.00033993, 0.00020823, 7.27301486, 0.99896166, 0.99945183, 0.49326116],\
+[	-6.27335488, -0.00033989, 0.00020821, 7.27301498, 0.99896178, 0.99945189, 0.49326119],\
+[	-6.27335497, -0.00033986, 0.00020819, 7.27301511, 0.99896189, 0.99945195, 0.49326130],\
+[	-6.27335506, -0.00033982, 0.00020817, 7.27301524, 0.99896201, 0.99945201, 0.49326119],\
+[	-6.27335515, -0.00033978, 0.00020814, 7.27301536, 0.99896212, 0.99945207, 0.49326105],\
+[	-6.27335524, -0.00033975, 0.00020812, 7.27301549, 0.99896223, 0.99945213, 0.49326119],\
+[	-6.27335533, -0.00033971, 0.00020810, 7.27301562, 0.99896235, 0.99945219, 0.49326118],\
+[	-6.27335541, -0.00033967, 0.00020807, 7.27301574, 0.99896246, 0.99945225, 0.49326126],\
+[	-6.27335550, -0.00033963, 0.00020805, 7.27301587, 0.99896258, 0.99945231, 0.49326104],\
+[	-6.27335559, -0.00033960, 0.00020803, 7.27301600, 0.99896269, 0.99945237, 0.49326124],\
+[	-6.27335568, -0.00033956, 0.00020801, 7.27301612, 0.99896280, 0.99945243, 0.49326121],\
+[	-6.27335577, -0.00033952, 0.00020798, 7.27301625, 0.99896292, 0.99945249, 0.49326126],\
+[	-6.27335586, -0.00033948, 0.00020796, 7.27301638, 0.99896303, 0.99945255, 0.49326146],\
+[	-6.27335595, -0.00033945, 0.00020794, 7.27301650, 0.99896315, 0.99945261, 0.49326123],\
+[	-6.27335604, -0.00033941, 0.00020791, 7.27301663, 0.99896326, 0.99945267, 0.49326137],\
+[	-6.27335613, -0.00033937, 0.00020789, 7.27301675, 0.99896337, 0.99945274, 0.49326124],\
+[	-6.27335622, -0.00033934, 0.00020787, 7.27301688, 0.99896349, 0.99945279, 0.49326144],\
+[	-6.27335631, -0.00033930, 0.00020785, 7.27301701, 0.99896360, 0.99945286, 0.49326118],\
+[	-6.27335639, -0.00033926, 0.00020782, 7.27301713, 0.99896371, 0.99945291, 0.49326131],\
+[	-6.27335648, -0.00033922, 0.00020780, 7.27301726, 0.99896383, 0.99945297, 0.49326131],\
+[	-6.27335657, -0.00033919, 0.00020778, 7.27301739, 0.99896394, 0.99945303, 0.49326137],\
+[	-6.27335666, -0.00033915, 0.00020776, 7.27301751, 0.99896405, 0.99945309, 0.49326160],\
+[	-6.27335675, -0.00033911, 0.00020773, 7.27301764, 0.99896417, 0.99945315, 0.49326160],\
+[	-6.27335684, -0.00033908, 0.00020771, 7.27301776, 0.99896428, 0.99945321, 0.49326123],\
+[	-6.27335693, -0.00033904, 0.00020769, 7.27301789, 0.99896439, 0.99945327, 0.49326161],\
+[	-6.27335702, -0.00033900, 0.00020766, 7.27301802, 0.99896451, 0.99945333, 0.49326152],\
+[	-6.27335711, -0.00033896, 0.00020764, 7.27301814, 0.99896462, 0.99945339, 0.49326143],\
+[	-6.27335720, -0.00033893, 0.00020762, 7.27301827, 0.99896473, 0.99945345, 0.49326145],\
+[	-6.27335728, -0.00033889, 0.00020760, 7.27301839, 0.99896485, 0.99945351, 0.49326173],\
+[	-6.27335737, -0.00033885, 0.00020757, 7.27301852, 0.99896496, 0.99945357, 0.49326144],\
+[	-6.27335746, -0.00033882, 0.00020755, 7.27301865, 0.99896507, 0.99945363, 0.49326151],\
+[	-6.27335755, -0.00033878, 0.00020753, 7.27301877, 0.99896519, 0.99945369, 0.49326137],\
+[	-6.27335764, -0.00033874, 0.00020751, 7.27301890, 0.99896530, 0.99945375, 0.49326159],\
+[	-6.27335773, -0.00033870, 0.00020748, 7.27301902, 0.99896541, 0.99945381, 0.49326170],\
+[	-6.27335782, -0.00033867, 0.00020746, 7.27301915, 0.99896553, 0.99945387, 0.49326167],\
+[	-6.27335791, -0.00033863, 0.00020744, 7.27301927, 0.99896564, 0.99945393, 0.49326166],\
+[	-6.27335799, -0.00033859, 0.00020741, 7.27301940, 0.99896575, 0.99945399, 0.49326169],\
+[	-6.27335808, -0.00033856, 0.00020739, 7.27301953, 0.99896587, 0.99945405, 0.49326162],\
+[	-6.27335817, -0.00033852, 0.00020737, 7.27301965, 0.99896598, 0.99945411, 0.49326183],\
+[	-6.27335826, -0.00033848, 0.00020735, 7.27301978, 0.99896609, 0.99945417, 0.49326173],\
+[	-6.27335835, -0.00033845, 0.00020732, 7.27301990, 0.99896621, 0.99945423, 0.49326171],\
+[	-6.27335844, -0.00033841, 0.00020730, 7.27302003, 0.99896632, 0.99945429, 0.49326166],\
+[	-6.27335853, -0.00033837, 0.00020728, 7.27302015, 0.99896643, 0.99945435, 0.49326165],\
+[	-6.27335861, -0.00033833, 0.00020726, 7.27302028, 0.99896655, 0.99945441, 0.49326181],\
+[	-6.27335870, -0.00033830, 0.00020723, 7.27302041, 0.99896666, 0.99945447, 0.49326156],\
+[	-6.27335879, -0.00033826, 0.00020721, 7.27302053, 0.99896677, 0.99945453, 0.49326193],\
+[	-6.27335888, -0.00033822, 0.00020719, 7.27302066, 0.99896688, 0.99945459, 0.49326181],\
+[	-6.27335897, -0.00033819, 0.00020716, 7.27302078, 0.99896700, 0.99945465, 0.49326163],\
+[	-6.27335906, -0.00033815, 0.00020714, 7.27302091, 0.99896711, 0.99945471, 0.49326173],\
+[	-6.27335915, -0.00033811, 0.00020712, 7.27302103, 0.99896722, 0.99945477, 0.49326188],\
+[	-6.27335923, -0.00033808, 0.00020710, 7.27302116, 0.99896734, 0.99945483, 0.49326193],\
+[	-6.27335932, -0.00033804, 0.00020707, 7.27302128, 0.99896745, 0.99945489, 0.49326203],\
+[	-6.27335941, -0.00033800, 0.00020705, 7.27302141, 0.99896756, 0.99945495, 0.49326181],\
+[	-6.27335950, -0.00033797, 0.00020703, 7.27302153, 0.99896767, 0.99945501, 0.49326178],\
+[	-6.27335959, -0.00033793, 0.00020701, 7.27302166, 0.99896779, 0.99945507, 0.49326183],\
+[	-6.27335968, -0.00033789, 0.00020698, 7.27302178, 0.99896790, 0.99945512, 0.49326183],\
+[	-6.27335976, -0.00033785, 0.00020696, 7.27302191, 0.99896801, 0.99945518, 0.49326190],\
+[	-6.27335985, -0.00033782, 0.00020694, 7.27302203, 0.99896813, 0.99945524, 0.49326204],\
+[	-6.27335994, -0.00033778, 0.00020692, 7.27302216, 0.99896824, 0.99945530, 0.49326197],\
+[	-6.27336003, -0.00033774, 0.00020689, 7.27302228, 0.99896835, 0.99945536, 0.49326200],\
+[	-6.27336012, -0.00033771, 0.00020687, 7.27302241, 0.99896846, 0.99945542, 0.49326187],\
+[	-6.27336021, -0.00033767, 0.00020685, 7.27302253, 0.99896858, 0.99945548, 0.49326214],\
+[	-6.27336029, -0.00033763, 0.00020683, 7.27302266, 0.99896869, 0.99945554, 0.49326210],\
+[	-6.27336038, -0.00033760, 0.00020680, 7.27302278, 0.99896880, 0.99945560, 0.49326210],\
+[	-6.27336047, -0.00033756, 0.00020678, 7.27302291, 0.99896891, 0.99945566, 0.49326201],\
+[	-6.27336056, -0.00033752, 0.00020676, 7.27302303, 0.99896903, 0.99945572, 0.49326223],\
+[	-6.27336065, -0.00033749, 0.00020674, 7.27302316, 0.99896914, 0.99945578, 0.49326214],\
+[	-6.27336073, -0.00033745, 0.00020671, 7.27302328, 0.99896925, 0.99945584, 0.49326184],\
+[	-6.27336082, -0.00033741, 0.00020669, 7.27302341, 0.99896936, 0.99945590, 0.49326190],\
+[	-6.27336091, -0.00033738, 0.00020667, 7.27302353, 0.99896948, 0.99945596, 0.49326192],\
+[	-6.27336100, -0.00033734, 0.00020665, 7.27302366, 0.99896959, 0.99945602, 0.49326215],\
+[	-6.27336109, -0.00033730, 0.00020662, 7.27302378, 0.99896970, 0.99945607, 0.49326198],\
+[	-6.27336117, -0.00033727, 0.00020660, 7.27302391, 0.99896981, 0.99945613, 0.49326211],\
+[	-6.27336126, -0.00033723, 0.00020658, 7.27302403, 0.99896992, 0.99945619, 0.49326202],\
+[	-6.27336135, -0.00033719, 0.00020656, 7.27302416, 0.99897004, 0.99945625, 0.49326208],\
+[	-6.27336144, -0.00033716, 0.00020653, 7.27302428, 0.99897015, 0.99945631, 0.49326216],\
+[	-6.27336153, -0.00033712, 0.00020651, 7.27302441, 0.99897026, 0.99945637, 0.49326199],\
+[	-6.27336161, -0.00033708, 0.00020649, 7.27302453, 0.99897037, 0.99945643, 0.49326218],\
+[	-6.27336170, -0.00033705, 0.00020647, 7.27302466, 0.99897049, 0.99945649, 0.49326214],\
+[	-6.27336179, -0.00033701, 0.00020644, 7.27302478, 0.99897060, 0.99945655, 0.49326240],\
+[	-6.27336188, -0.00033697, 0.00020642, 7.27302491, 0.99897071, 0.99945661, 0.49326199],\
+[	-6.27336197, -0.00033694, 0.00020640, 7.27302503, 0.99897082, 0.99945667, 0.49326203],\
+[	-6.27336205, -0.00033690, 0.00020638, 7.27302515, 0.99897093, 0.99945673, 0.49326224],\
+[	-6.27336214, -0.00033686, 0.00020635, 7.27302528, 0.99897105, 0.99945679, 0.49326220],\
+[	-6.27336223, -0.00033683, 0.00020633, 7.27302540, 0.99897116, 0.99945684, 0.49326222],\
+[	-6.27336232, -0.00033679, 0.00020631, 7.27302553, 0.99897127, 0.99945690, 0.49326242],\
+[	-6.27336240, -0.00033675, 0.00020629, 7.27302565, 0.99897138, 0.99945696, 0.49326213],\
+[	-6.27336249, -0.00033672, 0.00020626, 7.27302578, 0.99897149, 0.99945702, 0.49326219],\
+[	-6.27336258, -0.00033668, 0.00020624, 7.27302590, 0.99897161, 0.99945708, 0.49326219],\
+[	-6.27336267, -0.00033664, 0.00020622, 7.27302603, 0.99897172, 0.99945714, 0.49326250],\
+[	-6.27336275, -0.00033661, 0.00020620, 7.27302615, 0.99897183, 0.99945720, 0.49326244],\
+[	-6.27336284, -0.00033657, 0.00020617, 7.27302627, 0.99897194, 0.99945726, 0.49326221],\
+[	-6.27336293, -0.00033653, 0.00020615, 7.27302640, 0.99897205, 0.99945732, 0.49326264],\
+[	-6.27336302, -0.00033650, 0.00020613, 7.27302652, 0.99897216, 0.99945738, 0.49326232],\
+[	-6.27336311, -0.00033646, 0.00020611, 7.27302665, 0.99897228, 0.99945743, 0.49326230],\
+[	-6.27336319, -0.00033642, 0.00020608, 7.27302677, 0.99897239, 0.99945749, 0.49326227],\
+[	-6.27336328, -0.00033639, 0.00020606, 7.27302689, 0.99897250, 0.99945755, 0.49326245],\
+[	-6.27336337, -0.00033635, 0.00020604, 7.27302702, 0.99897261, 0.99945761, 0.49326242],\
+[	-6.27336346, -0.00033631, 0.00020602, 7.27302714, 0.99897272, 0.99945767, 0.49326246],\
+[	-6.27336354, -0.00033628, 0.00020599, 7.27302727, 0.99897283, 0.99945773, 0.49326241],\
+[	-6.27336363, -0.00033624, 0.00020597, 7.27302739, 0.99897295, 0.99945779, 0.49326240],\
+[	-6.27336372, -0.00033620, 0.00020595, 7.27302751, 0.99897306, 0.99945785, 0.49326249],\
+[	-6.27336381, -0.00033617, 0.00020593, 7.27302764, 0.99897317, 0.99945791, 0.49326270],\
+[	-6.27336389, -0.00033613, 0.00020590, 7.27302776, 0.99897328, 0.99945797, 0.49326235],\
+[	-6.27336398, -0.00033609, 0.00020588, 7.27302789, 0.99897339, 0.99945802, 0.49326239],\
+[	-6.27336407, -0.00033606, 0.00020586, 7.27302801, 0.99897350, 0.99945808, 0.49326248],\
+[	-6.27336415, -0.00033602, 0.00020584, 7.27302813, 0.99897362, 0.99945814, 0.49326264],\
+[	-6.27336424, -0.00033598, 0.00020582, 7.27302826, 0.99897373, 0.99945820, 0.49326263],\
+[	-6.27336433, -0.00033595, 0.00020579, 7.27302838, 0.99897384, 0.99945826, 0.49326243],\
+[	-6.27336442, -0.00033591, 0.00020577, 7.27302851, 0.99897395, 0.99945832, 0.49326267],\
+[	-6.27336450, -0.00033587, 0.00020575, 7.27302863, 0.99897406, 0.99945838, 0.49326234],\
+[	-6.27336459, -0.00033584, 0.00020573, 7.27302875, 0.99897417, 0.99945844, 0.49326251],\
+[	-6.27336468, -0.00033580, 0.00020570, 7.27302888, 0.99897428, 0.99945849, 0.49326259],\
+[	-6.27336477, -0.00033577, 0.00020568, 7.27302900, 0.99897439, 0.99945855, 0.49326266],\
+[	-6.27336485, -0.00033573, 0.00020566, 7.27302912, 0.99897451, 0.99945861, 0.49326257],\
+[	-6.27336494, -0.00033569, 0.00020564, 7.27302925, 0.99897462, 0.99945867, 0.49326257],\
+[	-6.27336503, -0.00033566, 0.00020561, 7.27302937, 0.99897473, 0.99945873, 0.49326264],\
+[	-6.27336511, -0.00033562, 0.00020559, 7.27302949, 0.99897484, 0.99945879, 0.49326274],\
+[	-6.27336520, -0.00033558, 0.00020557, 7.27302962, 0.99897495, 0.99945885, 0.49326286],\
+[	-6.27336529, -0.00033555, 0.00020555, 7.27302974, 0.99897506, 0.99945891, 0.49326289],\
+[	-6.27336538, -0.00033551, 0.00020553, 7.27302986, 0.99897517, 0.99945896, 0.49326274],\
+[	-6.27336546, -0.00033547, 0.00020550, 7.27302999, 0.99897528, 0.99945902, 0.49326267],\
+[	-6.27336555, -0.00033544, 0.00020548, 7.27303011, 0.99897540, 0.99945908, 0.49326282],\
+[	-6.27336564, -0.00033540, 0.00020546, 7.27303023, 0.99897551, 0.99945914, 0.49326268],\
+[	-6.27336572, -0.00033537, 0.00020544, 7.27303036, 0.99897562, 0.99945920, 0.49326305],\
+[	-6.27336581, -0.00033533, 0.00020541, 7.27303048, 0.99897573, 0.99945926, 0.49326276],\
+[	-6.27336590, -0.00033529, 0.00020539, 7.27303060, 0.99897584, 0.99945932, 0.49326281],\
+[	-6.27336598, -0.00033526, 0.00020537, 7.27303073, 0.99897595, 0.99945937, 0.49326294],\
+[	-6.27336607, -0.00033522, 0.00020535, 7.27303085, 0.99897606, 0.99945943, 0.49326286],\
+[	-6.27336616, -0.00033518, 0.00020532, 7.27303097, 0.99897617, 0.99945949, 0.49326281],\
+[	-6.27336625, -0.00033515, 0.00020530, 7.27303110, 0.99897628, 0.99945955, 0.49326286],\
+[	-6.27336633, -0.00033511, 0.00020528, 7.27303122, 0.99897639, 0.99945961, 0.49326297],\
+[	-6.27336642, -0.00033508, 0.00020526, 7.27303134, 0.99897650, 0.99945967, 0.49326279],\
+[	-6.27336651, -0.00033504, 0.00020524, 7.27303147, 0.99897662, 0.99945973, 0.49326311],\
+[	-6.27336659, -0.00033500, 0.00020521, 7.27303159, 0.99897673, 0.99945978, 0.49326289],\
+[	-6.27336668, -0.00033497, 0.00020519, 7.27303171, 0.99897684, 0.99945984, 0.49326305],\
+[	-6.27336677, -0.00033493, 0.00020517, 7.27303184, 0.99897695, 0.99945990, 0.49326297],\
+[	-6.27336685, -0.00033489, 0.00020515, 7.27303196, 0.99897706, 0.99945996, 0.49326277],\
+[	-6.27336694, -0.00033486, 0.00020512, 7.27303208, 0.99897717, 0.99946002, 0.49326308],\
+[	-6.27336703, -0.00033482, 0.00020510, 7.27303221, 0.99897728, 0.99946008, 0.49326289],\
+[	-6.27336711, -0.00033479, 0.00020508, 7.27303233, 0.99897739, 0.99946013, 0.49326298],\
+[	-6.27336720, -0.00033475, 0.00020506, 7.27303245, 0.99897750, 0.99946019, 0.49326300],\
+[	-6.27336729, -0.00033471, 0.00020504, 7.27303257, 0.99897761, 0.99946025, 0.49326304],\
+[	-6.27336737, -0.00033468, 0.00020501, 7.27303270, 0.99897772, 0.99946031, 0.49326311],\
+[	-6.27336746, -0.00033464, 0.00020499, 7.27303282, 0.99897783, 0.99946037, 0.49326309],\
+[	-6.27336755, -0.00033460, 0.00020497, 7.27303294, 0.99897794, 0.99946043, 0.49326303],\
+[	-6.27336763, -0.00033457, 0.00020495, 7.27303306, 0.99897805, 0.99946048, 0.49326308],\
+[	-6.27336772, -0.00033453, 0.00020493, 7.27303319, 0.99897816, 0.99946054, 0.49326287],\
+[	-6.27336781, -0.00033450, 0.00020490, 7.27303331, 0.99897827, 0.99946060, 0.49326314],\
+[	-6.27336789, -0.00033446, 0.00020488, 7.27303343, 0.99897839, 0.99946066, 0.49326307],\
+[	-6.27336798, -0.00033442, 0.00020486, 7.27303356, 0.99897850, 0.99946072, 0.49326307],\
+[	-6.27336807, -0.00033439, 0.00020484, 7.27303368, 0.99897861, 0.99946078, 0.49326322],\
+[	-6.27336815, -0.00033435, 0.00020481, 7.27303380, 0.99897872, 0.99946083, 0.49326311],\
+[	-6.27336824, -0.00033432, 0.00020479, 7.27303392, 0.99897883, 0.99946089, 0.49326322],\
+[	-6.27336833, -0.00033428, 0.00020477, 7.27303405, 0.99897894, 0.99946095, 0.49326339],\
+[	-6.27336841, -0.00033424, 0.00020475, 7.27303417, 0.99897905, 0.99946101, 0.49326319],\
+[	-6.27336850, -0.00033421, 0.00020473, 7.27303429, 0.99897916, 0.99946107, 0.49326315],\
+[	-6.27336858, -0.00033417, 0.00020470, 7.27303441, 0.99897927, 0.99946113, 0.49326326],\
+[	-6.27336867, -0.00033413, 0.00020468, 7.27303454, 0.99897938, 0.99946118, 0.49326320],\
+[	-6.27336876, -0.00033410, 0.00020466, 7.27303466, 0.99897949, 0.99946124, 0.49326335],\
+[	-6.27336884, -0.00033406, 0.00020464, 7.27303478, 0.99897960, 0.99946130, 0.49326321],\
+[	-6.27336893, -0.00033403, 0.00020462, 7.27303490, 0.99897971, 0.99946136, 0.49326341],\
+[	-6.27336902, -0.00033399, 0.00020459, 7.27303503, 0.99897982, 0.99946142, 0.49326319],\
+[	-6.27336910, -0.00033395, 0.00020457, 7.27303515, 0.99897993, 0.99946147, 0.49326349],\
+[	-6.27336919, -0.00033392, 0.00020455, 7.27303527, 0.99898004, 0.99946153, 0.49326330],\
+[	-6.27336927, -0.00033388, 0.00020453, 7.27303539, 0.99898015, 0.99946159, 0.49326316],\
+[	-6.27336936, -0.00033385, 0.00020451, 7.27303551, 0.99898026, 0.99946165, 0.49326319],\
+[	-6.27336945, -0.00033381, 0.00020448, 7.27303564, 0.99898037, 0.99946171, 0.49326337],\
+[	-6.27336953, -0.00033377, 0.00020446, 7.27303576, 0.99898048, 0.99946176, 0.49326350],\
+[	-6.27336962, -0.00033374, 0.00020444, 7.27303588, 0.99898059, 0.99946182, 0.49326333],\
+[	-6.27336971, -0.00033370, 0.00020442, 7.27303600, 0.99898070, 0.99946188, 0.49326343],\
+[	-6.27336979, -0.00033367, 0.00020439, 7.27303613, 0.99898081, 0.99946194, 0.49326342],\
+[	-6.27336988, -0.00033363, 0.00020437, 7.27303625, 0.99898092, 0.99946200, 0.49326348],\
+[	-6.27336996, -0.00033359, 0.00020435, 7.27303637, 0.99898103, 0.99946205, 0.49326358],\
+[	-6.27337005, -0.00033356, 0.00020433, 7.27303649, 0.99898114, 0.99946211, 0.49326344],\
+[	-6.27337014, -0.00033352, 0.00020431, 7.27303661, 0.99898125, 0.99946217, 0.49326333],\
+[	-6.27337022, -0.00033349, 0.00020428, 7.27303674, 0.99898136, 0.99946223, 0.49326344],\
+[	-6.27337031, -0.00033345, 0.00020426, 7.27303686, 0.99898147, 0.99946229, 0.49326346],\
+[	-6.27337039, -0.00033342, 0.00020424, 7.27303698, 0.99898158, 0.99946234, 0.49326354],\
+[	-6.27337048, -0.00033338, 0.00020422, 7.27303710, 0.99898169, 0.99946240, 0.49326336],\
+[	-6.27337057, -0.00033334, 0.00020420, 7.27303722, 0.99898180, 0.99946246, 0.49326349],\
+[	-6.27337065, -0.00033331, 0.00020417, 7.27303734, 0.99898191, 0.99946252, 0.49326348],\
+[	-6.27337074, -0.00033327, 0.00020415, 7.27303747, 0.99898202, 0.99946258, 0.49326342],\
+[	-6.27337082, -0.00033324, 0.00020413, 7.27303759, 0.99898213, 0.99946263, 0.49326343],\
+[	-6.27337091, -0.00033320, 0.00020411, 7.27303771, 0.99898224, 0.99946269, 0.49326362],\
+[	-6.27337100, -0.00033316, 0.00020409, 7.27303783, 0.99898234, 0.99946275, 0.49326356],\
+[	-6.27337108, -0.00033313, 0.00020406, 7.27303795, 0.99898245, 0.99946281, 0.49326362],\
+[	-6.27337117, -0.00033309, 0.00020404, 7.27303808, 0.99898256, 0.99946287, 0.49326353],\
+[	-6.27337125, -0.00033306, 0.00020402, 7.27303820, 0.99898267, 0.99946292, 0.49326384],\
+[	-6.27337134, -0.00033302, 0.00020400, 7.27303832, 0.99898278, 0.99946298, 0.49326355],\
+[	-6.27337142, -0.00033298, 0.00020398, 7.27303844, 0.99898289, 0.99946304, 0.49326361],\
+[	-6.27337151, -0.00033295, 0.00020395, 7.27303856, 0.99898300, 0.99946310, 0.49326362],\
+[	-6.27337160, -0.00033291, 0.00020393, 7.27303868, 0.99898311, 0.99946315, 0.49326349],\
+[	-6.27337168, -0.00033288, 0.00020391, 7.27303880, 0.99898322, 0.99946321, 0.49326369],\
+[	-6.27337177, -0.00033284, 0.00020389, 7.27303893, 0.99898333, 0.99946327, 0.49326369],\
+[	-6.27337185, -0.00033281, 0.00020387, 7.27303905, 0.99898344, 0.99946333, 0.49326369],\
+[	-6.27337194, -0.00033277, 0.00020385, 7.27303917, 0.99898355, 0.99946338, 0.49326367],\
+[	-6.27337202, -0.00033273, 0.00020382, 7.27303929, 0.99898366, 0.99946344, 0.49326359],\
+[	-6.27337211, -0.00033270, 0.00020380, 7.27303941, 0.99898377, 0.99946350, 0.49326376],\
+[	-6.27337220, -0.00033266, 0.00020378, 7.27303953, 0.99898388, 0.99946356, 0.49326382],\
+[	-6.27337228, -0.00033263, 0.00020376, 7.27303965, 0.99898399, 0.99946362, 0.49326384],\
+[	-6.27337237, -0.00033259, 0.00020374, 7.27303978, 0.99898409, 0.99946367, 0.49326379],\
+[	-6.27337245, -0.00033256, 0.00020371, 7.27303990, 0.99898420, 0.99946373, 0.49326389],\
+[	-6.27337254, -0.00033252, 0.00020369, 7.27304002, 0.99898431, 0.99946379, 0.49326390],\
+[	-6.27337262, -0.00033248, 0.00020367, 7.27304014, 0.99898442, 0.99946385, 0.49326379],\
+[	-6.27337271, -0.00033245, 0.00020365, 7.27304026, 0.99898453, 0.99946390, 0.49326384],\
+[	-6.27337279, -0.00033241, 0.00020363, 7.27304038, 0.99898464, 0.99946396, 0.49326381],\
+[	-6.27337288, -0.00033238, 0.00020360, 7.27304050, 0.99898475, 0.99946402, 0.49326372],\
+[	-6.27337297, -0.00033234, 0.00020358, 7.27304062, 0.99898486, 0.99946408, 0.49326377],\
+[	-6.27337305, -0.00033231, 0.00020356, 7.27304075, 0.99898497, 0.99946413, 0.49326406],\
+[	-6.27337314, -0.00033227, 0.00020354, 7.27304087, 0.99898508, 0.99946419, 0.49326380],\
+[	-6.27337322, -0.00033223, 0.00020352, 7.27304099, 0.99898519, 0.99946425, 0.49326407],\
+[	-6.27337331, -0.00033220, 0.00020350, 7.27304111, 0.99898529, 0.99946431, 0.49326377],\
+[	-6.27337339, -0.00033216, 0.00020347, 7.27304123, 0.99898540, 0.99946436, 0.49326399],\
+[	-6.27337348, -0.00033213, 0.00020345, 7.27304135, 0.99898551, 0.99946442, 0.49326392],\
+[	-6.27337356, -0.00033209, 0.00020343, 7.27304147, 0.99898562, 0.99946448, 0.49326402],\
+[	-6.27337365, -0.00033206, 0.00020341, 7.27304159, 0.99898573, 0.99946454, 0.49326407],\
+[	-6.27337373, -0.00033202, 0.00020339, 7.27304171, 0.99898584, 0.99946459, 0.49326397],\
+[	-6.27337382, -0.00033198, 0.00020336, 7.27304183, 0.99898595, 0.99946465, 0.49326388],\
+[	-6.27337390, -0.00033195, 0.00020334, 7.27304196, 0.99898606, 0.99946471, 0.49326400],\
+[	-6.27337399, -0.00033191, 0.00020332, 7.27304208, 0.99898616, 0.99946477, 0.49326405],\
+[	-6.27337407, -0.00033188, 0.00020330, 7.27304220, 0.99898627, 0.99946482, 0.49326405],\
+[	-6.27337416, -0.00033184, 0.00020328, 7.27304232, 0.99898638, 0.99946488, 0.49326395],\
+[	-6.27337425, -0.00033181, 0.00020326, 7.27304244, 0.99898649, 0.99946494, 0.49326406],\
+[	-6.27337433, -0.00033177, 0.00020323, 7.27304256, 0.99898660, 0.99946500, 0.49326412],\
+[	-6.27337442, -0.00033174, 0.00020321, 7.27304268, 0.99898671, 0.99946505, 0.49326418],\
+[	-6.27337450, -0.00033170, 0.00020319, 7.27304280, 0.99898682, 0.99946511, 0.49326405],\
+[	-6.27337459, -0.00033166, 0.00020317, 7.27304292, 0.99898693, 0.99946517, 0.49326394],\
+[	-6.27337467, -0.00033163, 0.00020315, 7.27304304, 0.99898703, 0.99946522, 0.49326407],\
+[	-6.27337476, -0.00033159, 0.00020312, 7.27304316, 0.99898714, 0.99946528, 0.49326381],\
+[	-6.27337484, -0.00033156, 0.00020310, 7.27304328, 0.99898725, 0.99946534, 0.49326400],\
+[	-6.27337493, -0.00033152, 0.00020308, 7.27304340, 0.99898736, 0.99946540, 0.49326414],\
+[	-6.27337501, -0.00033149, 0.00020306, 7.27304352, 0.99898747, 0.99946545, 0.49326426],\
+[	-6.27337510, -0.00033145, 0.00020304, 7.27304364, 0.99898758, 0.99946551, 0.49326422],\
+[	-6.27337518, -0.00033142, 0.00020302, 7.27304376, 0.99898768, 0.99946557, 0.49326412],\
+[	-6.27337527, -0.00033138, 0.00020299, 7.27304389, 0.99898779, 0.99946563, 0.49326410],\
+[	-6.27337535, -0.00033135, 0.00020297, 7.27304401, 0.99898790, 0.99946568, 0.49326415],\
+[	-6.27337544, -0.00033131, 0.00020295, 7.27304413, 0.99898801, 0.99946574, 0.49326422],\
+[	-6.27337552, -0.00033127, 0.00020293, 7.27304425, 0.99898812, 0.99946580, 0.49326416],\
+[	-6.27337561, -0.00033124, 0.00020291, 7.27304437, 0.99898823, 0.99946585, 0.49326449],\
+[	-6.27337569, -0.00033120, 0.00020289, 7.27304449, 0.99898833, 0.99946591, 0.49326425],\
+[	-6.27337578, -0.00033117, 0.00020286, 7.27304461, 0.99898844, 0.99946597, 0.49326435],\
+[	-6.27337586, -0.00033113, 0.00020284, 7.27304473, 0.99898855, 0.99946603, 0.49326445],\
+[	-6.27337594, -0.00033110, 0.00020282, 7.27304485, 0.99898866, 0.99946608, 0.49326455],\
+[	-6.27337603, -0.00033106, 0.00020280, 7.27304497, 0.99898877, 0.99946614, 0.49326433],\
+[	-6.27337611, -0.00033103, 0.00020278, 7.27304509, 0.99898888, 0.99946620, 0.49326418],\
+[	-6.27337620, -0.00033099, 0.00020275, 7.27304521, 0.99898898, 0.99946625, 0.49326429],\
+[	-6.27337628, -0.00033096, 0.00020273, 7.27304533, 0.99898909, 0.99946631, 0.49326433],\
+[	-6.27337637, -0.00033092, 0.00020271, 7.27304545, 0.99898920, 0.99946637, 0.49326438],\
+[	-6.27337645, -0.00033088, 0.00020269, 7.27304557, 0.99898931, 0.99946643, 0.49326440],\
+[	-6.27337654, -0.00033085, 0.00020267, 7.27304569, 0.99898942, 0.99946648, 0.49326448],\
+[	-6.27337662, -0.00033081, 0.00020265, 7.27304581, 0.99898952, 0.99946654, 0.49326440],\
+[	-6.27337671, -0.00033078, 0.00020262, 7.27304593, 0.99898963, 0.99946660, 0.49326441],\
+[	-6.27337679, -0.00033074, 0.00020260, 7.27304605, 0.99898974, 0.99946665, 0.49326439],\
+[	-6.27337688, -0.00033071, 0.00020258, 7.27304617, 0.99898985, 0.99946671, 0.49326444],\
+[	-6.27337696, -0.00033067, 0.00020256, 7.27304629, 0.99898996, 0.99946677, 0.49326437],\
+[	-6.27337705, -0.00033064, 0.00020254, 7.27304641, 0.99899006, 0.99946682, 0.49326463],\
+[	-6.27337713, -0.00033060, 0.00020252, 7.27304653, 0.99899017, 0.99946688, 0.49326433],\
+[	-6.27337721, -0.00033057, 0.00020250, 7.27304665, 0.99899028, 0.99946694, 0.49326452],\
+[	-6.27337730, -0.00033053, 0.00020247, 7.27304677, 0.99899039, 0.99946700, 0.49326464],\
+[	-6.27337738, -0.00033050, 0.00020245, 7.27304689, 0.99899050, 0.99946705, 0.49326462],\
+[	-6.27337747, -0.00033046, 0.00020243, 7.27304701, 0.99899060, 0.99946711, 0.49326446],\
+[	-6.27337755, -0.00033043, 0.00020241, 7.27304713, 0.99899071, 0.99946717, 0.49326448],\
+[	-6.27337764, -0.00033039, 0.00020239, 7.27304725, 0.99899082, 0.99946722, 0.49326479],\
+[	-6.27337772, -0.00033035, 0.00020237, 7.27304737, 0.99899093, 0.99946728, 0.49326445],\
+[	-6.27337781, -0.00033032, 0.00020234, 7.27304749, 0.99899103, 0.99946734, 0.49326446],\
+[	-6.27337789, -0.00033028, 0.00020232, 7.27304761, 0.99899114, 0.99946739, 0.49326446],\
+[	-6.27337797, -0.00033025, 0.00020230, 7.27304773, 0.99899125, 0.99946745, 0.49326456],\
+[	-6.27337806, -0.00033021, 0.00020228, 7.27304785, 0.99899136, 0.99946751, 0.49326462],\
+[	-6.27337814, -0.00033018, 0.00020226, 7.27304796, 0.99899146, 0.99946756, 0.49326466],\
+[	-6.27337823, -0.00033014, 0.00020224, 7.27304808, 0.99899157, 0.99946762, 0.49326469],\
+[	-6.27337831, -0.00033011, 0.00020221, 7.27304820, 0.99899168, 0.99946768, 0.49326455],\
+[	-6.27337840, -0.00033007, 0.00020219, 7.27304832, 0.99899179, 0.99946773, 0.49326445],\
+[	-6.27337848, -0.00033004, 0.00020217, 7.27304844, 0.99899190, 0.99946779, 0.49326466],\
+[	-6.27337856, -0.00033000, 0.00020215, 7.27304856, 0.99899200, 0.99946785, 0.49326467],\
+[	-6.27337865, -0.00032997, 0.00020213, 7.27304868, 0.99899211, 0.99946790, 0.49326472],\
+[	-6.27337873, -0.00032993, 0.00020211, 7.27304880, 0.99899222, 0.99946796, 0.49326465],\
+[	-6.27337882, -0.00032990, 0.00020208, 7.27304892, 0.99899233, 0.99946802, 0.49326487],\
+[	-6.27337890, -0.00032986, 0.00020206, 7.27304904, 0.99899243, 0.99946807, 0.49326453],\
+[	-6.27337899, -0.00032983, 0.00020204, 7.27304916, 0.99899254, 0.99946813, 0.49326462],\
+[	-6.27337907, -0.00032979, 0.00020202, 7.27304928, 0.99899265, 0.99946819, 0.49326466],\
+[	-6.27337915, -0.00032976, 0.00020200, 7.27304940, 0.99899275, 0.99946824, 0.49326470],\
+[	-6.27337924, -0.00032972, 0.00020198, 7.27304952, 0.99899286, 0.99946830, 0.49326485],\
+[	-6.27337932, -0.00032969, 0.00020196, 7.27304964, 0.99899297, 0.99946836, 0.49326493],\
+[	-6.27337941, -0.00032965, 0.00020193, 7.27304976, 0.99899308, 0.99946841, 0.49326472],\
+[	-6.27337949, -0.00032962, 0.00020191, 7.27304987, 0.99899318, 0.99946847, 0.49326466],\
+[	-6.27337957, -0.00032958, 0.00020189, 7.27304999, 0.99899329, 0.99946853, 0.49326475],\
+[	-6.27337966, -0.00032955, 0.00020187, 7.27305011, 0.99899340, 0.99946858, 0.49326474],\
+[	-6.27337974, -0.00032951, 0.00020185, 7.27305023, 0.99899351, 0.99946864, 0.49326494],\
+[	-6.27337983, -0.00032948, 0.00020183, 7.27305035, 0.99899361, 0.99946870, 0.49326475],\
+[	-6.27337991, -0.00032944, 0.00020181, 7.27305047, 0.99899372, 0.99946875, 0.49326504],\
+[	-6.27337999, -0.00032941, 0.00020178, 7.27305059, 0.99899383, 0.99946881, 0.49326510],\
+[	-6.27338008, -0.00032937, 0.00020176, 7.27305071, 0.99899393, 0.99946887, 0.49326506],\
+[	-6.27338016, -0.00032934, 0.00020174, 7.27305083, 0.99899404, 0.99946892, 0.49326491],\
+[	-6.27338025, -0.00032930, 0.00020172, 7.27305095, 0.99899415, 0.99946898, 0.49326495],\
+[	-6.27338033, -0.00032927, 0.00020170, 7.27305106, 0.99899425, 0.99946904, 0.49326488],\
+[	-6.27338041, -0.00032923, 0.00020168, 7.27305118, 0.99899436, 0.99946909, 0.49326492],\
+[	-6.27338050, -0.00032920, 0.00020165, 7.27305130, 0.99899447, 0.99946915, 0.49326492],\
+[	-6.27338058, -0.00032916, 0.00020163, 7.27305142, 0.99899458, 0.99946921, 0.49326493],\
+[	-6.27338067, -0.00032913, 0.00020161, 7.27305154, 0.99899468, 0.99946926, 0.49326498],\
+[	-6.27338075, -0.00032909, 0.00020159, 7.27305166, 0.99899479, 0.99946932, 0.49326509],\
+[	-6.27338083, -0.00032906, 0.00020157, 7.27305178, 0.99899490, 0.99946938, 0.49326511],\
+[	-6.27338092, -0.00032902, 0.00020155, 7.27305190, 0.99899500, 0.99946943, 0.49326491],\
+[	-6.27338100, -0.00032899, 0.00020153, 7.27305201, 0.99899511, 0.99946949, 0.49326497],\
+[	-6.27338108, -0.00032895, 0.00020150, 7.27305213, 0.99899522, 0.99946954, 0.49326517],\
+[	-6.27338117, -0.00032892, 0.00020148, 7.27305225, 0.99899532, 0.99946960, 0.49326501],\
+[	-6.27338125, -0.00032888, 0.00020146, 7.27305237, 0.99899543, 0.99946966, 0.49326506],\
+[	-6.27338134, -0.00032885, 0.00020144, 7.27305249, 0.99899554, 0.99946971, 0.49326507],\
+[	-6.27338142, -0.00032881, 0.00020142, 7.27305261, 0.99899564, 0.99946977, 0.49326497],\
+[	-6.27338150, -0.00032878, 0.00020140, 7.27305273, 0.99899575, 0.99946983, 0.49326508],\
+[	-6.27338159, -0.00032874, 0.00020138, 7.27305284, 0.99899586, 0.99946988, 0.49326522],\
+[	-6.27338167, -0.00032871, 0.00020135, 7.27305296, 0.99899596, 0.99946994, 0.49326525],\
+[	-6.27338175, -0.00032867, 0.00020133, 7.27305308, 0.99899607, 0.99946999, 0.49326527],\
+[	-6.27338184, -0.00032864, 0.00020131, 7.27305320, 0.99899618, 0.99947005, 0.49326512],\
+[	-6.27338192, -0.00032860, 0.00020129, 7.27305332, 0.99899628, 0.99947011, 0.49326544],\
+[	-6.27338200, -0.00032857, 0.00020127, 7.27305344, 0.99899639, 0.99947016, 0.49326511],\
+[	-6.27338209, -0.00032853, 0.00020125, 7.27305356, 0.99899650, 0.99947022, 0.49326525],\
+[	-6.27338217, -0.00032850, 0.00020123, 7.27305367, 0.99899660, 0.99947028, 0.49326517],\
+[	-6.27338225, -0.00032846, 0.00020121, 7.27305379, 0.99899671, 0.99947033, 0.49326515],\
+[	-6.27338234, -0.00032843, 0.00020118, 7.27305391, 0.99899682, 0.99947039, 0.49326512],\
+[	-6.27338242, -0.00032839, 0.00020116, 7.27305403, 0.99899692, 0.99947045, 0.49326510],\
+[	-6.27338250, -0.00032836, 0.00020114, 7.27305415, 0.99899703, 0.99947050, 0.49326538],\
+[	-6.27338259, -0.00032832, 0.00020112, 7.27305427, 0.99899714, 0.99947056, 0.49326526],\
+[	-6.27338267, -0.00032829, 0.00020110, 7.27305438, 0.99899724, 0.99947061, 0.49326555],\
+[	-6.27338275, -0.00032825, 0.00020108, 7.27305450, 0.99899735, 0.99947067, 0.49326559],\
+[	-6.27338284, -0.00032822, 0.00020106, 7.27305462, 0.99899745, 0.99947073, 0.49326528],\
+[	-6.27338292, -0.00032818, 0.00020103, 7.27305474, 0.99899756, 0.99947078, 0.49326542],\
+[	-6.27338300, -0.00032815, 0.00020101, 7.27305486, 0.99899767, 0.99947084, 0.49326519],\
+[	-6.27338309, -0.00032811, 0.00020099, 7.27305497, 0.99899777, 0.99947089, 0.49326536],\
+[	-6.27338317, -0.00032808, 0.00020097, 7.27305509, 0.99899788, 0.99947095, 0.49326533],\
+[	-6.27338325, -0.00032804, 0.00020095, 7.27305521, 0.99899799, 0.99947101, 0.49326540],\
+[	-6.27338334, -0.00032801, 0.00020093, 7.27305533, 0.99899809, 0.99947106, 0.49326552],\
+[	-6.27338342, -0.00032797, 0.00020091, 7.27305545, 0.99899820, 0.99947112, 0.49326543],\
+[	-6.27338350, -0.00032794, 0.00020089, 7.27305556, 0.99899830, 0.99947117, 0.49326548],\
+[	-6.27338359, -0.00032791, 0.00020086, 7.27305568, 0.99899841, 0.99947123, 0.49326555],\
+[	-6.27338367, -0.00032787, 0.00020084, 7.27305580, 0.99899852, 0.99947129, 0.49326550],\
+[	-6.27338375, -0.00032784, 0.00020082, 7.27305592, 0.99899862, 0.99947134, 0.49326539],\
+[	-6.27338384, -0.00032780, 0.00020080, 7.27305604, 0.99899873, 0.99947140, 0.49326537],\
+[	-6.27338392, -0.00032777, 0.00020078, 7.27305615, 0.99899884, 0.99947145, 0.49326540],\
+[	-6.27338400, -0.00032773, 0.00020076, 7.27305627, 0.99899894, 0.99947151, 0.49326552],\
+[	-6.27338409, -0.00032770, 0.00020074, 7.27305639, 0.99899905, 0.99947157, 0.49326544],\
+[	-6.27338417, -0.00032766, 0.00020072, 7.27305651, 0.99899915, 0.99947162, 0.49326541],\
+[	-6.27338425, -0.00032763, 0.00020069, 7.27305662, 0.99899926, 0.99947168, 0.49326544],\
+[	-6.27338433, -0.00032759, 0.00020067, 7.27305674, 0.99899937, 0.99947173, 0.49326555],\
+[	-6.27338442, -0.00032756, 0.00020065, 7.27305686, 0.99899947, 0.99947179, 0.49326592],\
+[	-6.27338450, -0.00032752, 0.00020063, 7.27305698, 0.99899958, 0.99947185, 0.49326555],\
+[	-6.27338458, -0.00032749, 0.00020061, 7.27305709, 0.99899968, 0.99947190, 0.49326556],\
+[	-6.27338467, -0.00032745, 0.00020059, 7.27305721, 0.99899979, 0.99947196, 0.49326577],\
+[	-6.27338475, -0.00032742, 0.00020057, 7.27305733, 0.99899989, 0.99947201, 0.49326572],\
+[	-6.27338483, -0.00032739, 0.00020055, 7.27305745, 0.99900000, 0.99947207, 0.49326564],\
+[	-6.27338492, -0.00032735, 0.00020052, 7.27305756, 0.99900011, 0.99947213, 0.49326574],\
+[	-6.27338500, -0.00032732, 0.00020050, 7.27305768, 0.99900021, 0.99947218, 0.49326570],\
+[	-6.27338508, -0.00032728, 0.00020048, 7.27305780, 0.99900032, 0.99947224, 0.49326585],\
+[	-6.27338516, -0.00032725, 0.00020046, 7.27305792, 0.99900042, 0.99947229, 0.49326561],\
+[	-6.27338525, -0.00032721, 0.00020044, 7.27305804, 0.99900053, 0.99947235, 0.49326554],\
+[	-6.27338533, -0.00032718, 0.00020042, 7.27305815, 0.99900063, 0.99947240, 0.49326565],\
+[	-6.27338541, -0.00032714, 0.00020040, 7.27305827, 0.99900074, 0.99947246, 0.49326560],\
+[	-6.27338550, -0.00032711, 0.00020038, 7.27305839, 0.99900085, 0.99947252, 0.49326561],\
+[	-6.27338558, -0.00032707, 0.00020035, 7.27305850, 0.99900095, 0.99947257, 0.49326588],\
+[	-6.27338566, -0.00032704, 0.00020033, 7.27305862, 0.99900106, 0.99947263, 0.49326567],\
+[	-6.27338574, -0.00032700, 0.00020031, 7.27305874, 0.99900116, 0.99947268, 0.49326573],\
+[	-6.27338583, -0.00032697, 0.00020029, 7.27305886, 0.99900127, 0.99947274, 0.49326588],\
+[	-6.27338591, -0.00032694, 0.00020027, 7.27305897, 0.99900137, 0.99947279, 0.49326587],\
+[	-6.27338599, -0.00032690, 0.00020025, 7.27305909, 0.99900148, 0.99947285, 0.49326591],\
+[	-6.27338607, -0.00032687, 0.00020023, 7.27305921, 0.99900158, 0.99947291, 0.49326568],\
+[	-6.27338616, -0.00032683, 0.00020021, 7.27305932, 0.99900169, 0.99947296, 0.49326586],\
+[	-6.27338624, -0.00032680, 0.00020019, 7.27305944, 0.99900180, 0.99947302, 0.49326595],\
+[	-6.27338632, -0.00032676, 0.00020016, 7.27305956, 0.99900190, 0.99947307, 0.49326594],\
+[	-6.27338640, -0.00032673, 0.00020014, 7.27305968, 0.99900201, 0.99947313, 0.49326576],\
+[	-6.27338649, -0.00032669, 0.00020012, 7.27305979, 0.99900211, 0.99947318, 0.49326600],\
+[	-6.27338657, -0.00032666, 0.00020010, 7.27305991, 0.99900222, 0.99947324, 0.49326567],\
+[	-6.27338665, -0.00032663, 0.00020008, 7.27306003, 0.99900232, 0.99947330, 0.49326591],\
+[	-6.27338674, -0.00032659, 0.00020006, 7.27306014, 0.99900243, 0.99947335, 0.49326584],\
+[	-6.27338682, -0.00032656, 0.00020004, 7.27306026, 0.99900253, 0.99947341, 0.49326591],\
+[	-6.27338690, -0.00032652, 0.00020002, 7.27306038, 0.99900264, 0.99947346, 0.49326598],\
+[	-6.27338698, -0.00032649, 0.00020000, 7.27306050, 0.99900274, 0.99947352, 0.49326605],\
+[	-6.27338706, -0.00032645, 0.00019997, 7.27306061, 0.99900285, 0.99947357, 0.49326584],\
+[	-6.27338715, -0.00032642, 0.00019995, 7.27306073, 0.99900295, 0.99947363, 0.49326610],\
+[	-6.27338723, -0.00032638, 0.00019993, 7.27306085, 0.99900306, 0.99947368, 0.49326584],\
+[	-6.27338731, -0.00032635, 0.00019991, 7.27306096, 0.99900316, 0.99947374, 0.49326595],\
+[	-6.27338739, -0.00032632, 0.00019989, 7.27306108, 0.99900327, 0.99947379, 0.49326574],\
+[	-6.27338748, -0.00032628, 0.00019987, 7.27306120, 0.99900337, 0.99947385, 0.49326593],\
+[	-6.27338756, -0.00032625, 0.00019985, 7.27306131, 0.99900348, 0.99947391, 0.49326617],\
+[	-6.27338764, -0.00032621, 0.00019983, 7.27306143, 0.99900358, 0.99947396, 0.49326608],\
+[	-6.27338772, -0.00032618, 0.00019981, 7.27306155, 0.99900369, 0.99947402, 0.49326601],\
+[	-6.27338781, -0.00032614, 0.00019978, 7.27306166, 0.99900379, 0.99947407, 0.49326595],\
+[	-6.27338789, -0.00032611, 0.00019976, 7.27306178, 0.99900390, 0.99947413, 0.49326615],\
+[	-6.27338797, -0.00032607, 0.00019974, 7.27306190, 0.99900400, 0.99947418, 0.49326594],\
+[	-6.27338805, -0.00032604, 0.00019972, 7.27306201, 0.99900411, 0.99947424, 0.49326623],\
+[	-6.27338814, -0.00032601, 0.00019970, 7.27306213, 0.99900421, 0.99947429, 0.49326628],\
+[	-6.27338822, -0.00032597, 0.00019968, 7.27306225, 0.99900432, 0.99947435, 0.49326618],\
+[	-6.27338830, -0.00032594, 0.00019966, 7.27306236, 0.99900442, 0.99947440, 0.49326621],\
+[	-6.27338838, -0.00032590, 0.00019964, 7.27306248, 0.99900453, 0.99947446, 0.49326598],\
+[	-6.27338846, -0.00032587, 0.00019962, 7.27306260, 0.99900463, 0.99947452, 0.49326615],\
+[	-6.27338855, -0.00032583, 0.00019960, 7.27306271, 0.99900474, 0.99947457, 0.49326647],\
+[	-6.27338863, -0.00032580, 0.00019957, 7.27306283, 0.99900484, 0.99947463, 0.49326621],\
+[	-6.27338871, -0.00032577, 0.00019955, 7.27306294, 0.99900495, 0.99947468, 0.49326643],\
+[	-6.27338879, -0.00032573, 0.00019953, 7.27306306, 0.99900505, 0.99947474, 0.49326629],\
+[	-6.27338887, -0.00032570, 0.00019951, 7.27306318, 0.99900516, 0.99947479, 0.49326635],\
+[	-6.27338896, -0.00032566, 0.00019949, 7.27306329, 0.99900526, 0.99947485, 0.49326632],\
+[	-6.27338904, -0.00032563, 0.00019947, 7.27306341, 0.99900537, 0.99947490, 0.49326626],\
+[	-6.27338912, -0.00032559, 0.00019945, 7.27306353, 0.99900547, 0.99947496, 0.49326639],\
+[	-6.27338920, -0.00032556, 0.00019943, 7.27306364, 0.99900558, 0.99947501, 0.49326627],\
+[	-6.27338928, -0.00032553, 0.00019941, 7.27306376, 0.99900568, 0.99947507, 0.49326645],\
+[	-6.27338937, -0.00032549, 0.00019939, 7.27306387, 0.99900578, 0.99947512, 0.49326623],\
+[	-6.27338945, -0.00032546, 0.00019936, 7.27306399, 0.99900589, 0.99947518, 0.49326607],\
+[	-6.27338953, -0.00032542, 0.00019934, 7.27306411, 0.99900599, 0.99947523, 0.49326641],\
+[	-6.27338961, -0.00032539, 0.00019932, 7.27306422, 0.99900610, 0.99947529, 0.49326644],\
+[	-6.27338969, -0.00032536, 0.00019930, 7.27306434, 0.99900620, 0.99947534, 0.49326635],\
+[	-6.27338978, -0.00032532, 0.00019928, 7.27306446, 0.99900631, 0.99947540, 0.49326617],\
+[	-6.27338986, -0.00032529, 0.00019926, 7.27306457, 0.99900641, 0.99947545, 0.49326647],\
+[	-6.27338994, -0.00032525, 0.00019924, 7.27306469, 0.99900652, 0.99947551, 0.49326638],\
+[	-6.27339002, -0.00032522, 0.00019922, 7.27306480, 0.99900662, 0.99947556, 0.49326625],\
+[	-6.27339010, -0.00032518, 0.00019920, 7.27306492, 0.99900673, 0.99947562, 0.49326654],\
+[	-6.27339019, -0.00032515, 0.00019918, 7.27306504, 0.99900683, 0.99947567, 0.49326643],\
+[	-6.27339027, -0.00032512, 0.00019915, 7.27306515, 0.99900693, 0.99947573, 0.49326639],\
+[	-6.27339035, -0.00032508, 0.00019913, 7.27306527, 0.99900704, 0.99947578, 0.49326643],\
+[	-6.27339043, -0.00032505, 0.00019911, 7.27306538, 0.99900714, 0.99947584, 0.49326613],\
+[	-6.27339051, -0.00032501, 0.00019909, 7.27306550, 0.99900725, 0.99947589, 0.49326635],\
+[	-6.27339059, -0.00032498, 0.00019907, 7.27306561, 0.99900735, 0.99947595, 0.49326654],\
+[	-6.27339068, -0.00032495, 0.00019905, 7.27306573, 0.99900746, 0.99947600, 0.49326649],\
+[	-6.27339076, -0.00032491, 0.00019903, 7.27306585, 0.99900756, 0.99947606, 0.49326645],\
+[	-6.27339084, -0.00032488, 0.00019901, 7.27306596, 0.99900766, 0.99947611, 0.49326635],\
+[	-6.27339092, -0.00032484, 0.00019899, 7.27306608, 0.99900777, 0.99947617, 0.49326646],\
+[	-6.27339100, -0.00032481, 0.00019897, 7.27306619, 0.99900787, 0.99947622, 0.49326660],\
+[	-6.27339108, -0.00032477, 0.00019895, 7.27306631, 0.99900798, 0.99947628, 0.49326653],\
+[	-6.27339117, -0.00032474, 0.00019892, 7.27306642, 0.99900808, 0.99947633, 0.49326655],\
+[	-6.27339125, -0.00032471, 0.00019890, 7.27306654, 0.99900818, 0.99947639, 0.49326642],\
+[	-6.27339133, -0.00032467, 0.00019888, 7.27306666, 0.99900829, 0.99947644, 0.49326648],\
+[	-6.27339141, -0.00032464, 0.00019886, 7.27306677, 0.99900839, 0.99947650, 0.49326679],\
+[	-6.27339149, -0.00032460, 0.00019884, 7.27306689, 0.99900850, 0.99947655, 0.49326686],\
+[	-6.27339157, -0.00032457, 0.00019882, 7.27306700, 0.99900860, 0.99947661, 0.49326656],\
+[	-6.27339165, -0.00032454, 0.00019880, 7.27306712, 0.99900870, 0.99947666, 0.49326662],\
+[	-6.27339174, -0.00032450, 0.00019878, 7.27306723, 0.99900881, 0.99947672, 0.49326679],\
+[	-6.27339182, -0.00032447, 0.00019876, 7.27306735, 0.99900891, 0.99947677, 0.49326673],\
+[	-6.27339190, -0.00032443, 0.00019874, 7.27306746, 0.99900902, 0.99947683, 0.49326675],\
+[	-6.27339198, -0.00032440, 0.00019872, 7.27306758, 0.99900912, 0.99947688, 0.49326682],\
+[	-6.27339206, -0.00032437, 0.00019870, 7.27306770, 0.99900922, 0.99947694, 0.49326647],\
+[	-6.27339214, -0.00032433, 0.00019867, 7.27306781, 0.99900933, 0.99947699, 0.49326653],\
+[	-6.27339222, -0.00032430, 0.00019865, 7.27306793, 0.99900943, 0.99947705, 0.49326669],\
+[	-6.27339231, -0.00032426, 0.00019863, 7.27306804, 0.99900954, 0.99947710, 0.49326657],\
+[	-6.27339239, -0.00032423, 0.00019861, 7.27306816, 0.99900964, 0.99947716, 0.49326679],\
+[	-6.27339247, -0.00032420, 0.00019859, 7.27306827, 0.99900974, 0.99947721, 0.49326690],\
+[	-6.27339255, -0.00032416, 0.00019857, 7.27306839, 0.99900985, 0.99947727, 0.49326680],\
+[	-6.27339263, -0.00032413, 0.00019855, 7.27306850, 0.99900995, 0.99947732, 0.49326670],\
+[	-6.27339271, -0.00032409, 0.00019853, 7.27306862, 0.99901005, 0.99947738, 0.49326690],\
+[	-6.27339279, -0.00032406, 0.00019851, 7.27306873, 0.99901016, 0.99947743, 0.49326682],\
+[	-6.27339287, -0.00032403, 0.00019849, 7.27306885, 0.99901026, 0.99947749, 0.49326670],\
+[	-6.27339296, -0.00032399, 0.00019847, 7.27306896, 0.99901036, 0.99947754, 0.49326689],\
+[	-6.27339304, -0.00032396, 0.00019845, 7.27306908, 0.99901047, 0.99947760, 0.49326683],\
+[	-6.27339312, -0.00032393, 0.00019843, 7.27306919, 0.99901057, 0.99947765, 0.49326682],\
+[	-6.27339320, -0.00032389, 0.00019840, 7.27306931, 0.99901068, 0.99947770, 0.49326694],\
+[	-6.27339328, -0.00032386, 0.00019838, 7.27306942, 0.99901078, 0.99947776, 0.49326682],\
+[	-6.27339336, -0.00032382, 0.00019836, 7.27306954, 0.99901088, 0.99947781, 0.49326696],\
+[	-6.27339344, -0.00032379, 0.00019834, 7.27306965, 0.99901099, 0.99947787, 0.49326703],\
+[	-6.27339352, -0.00032376, 0.00019832, 7.27306977, 0.99901109, 0.99947792, 0.49326705],\
+[	-6.27339360, -0.00032372, 0.00019830, 7.27306988, 0.99901119, 0.99947798, 0.49326683],\
+[	-6.27339369, -0.00032369, 0.00019828, 7.27307000, 0.99901130, 0.99947803, 0.49326692],\
+[	-6.27339377, -0.00032365, 0.00019826, 7.27307011, 0.99901140, 0.99947809, 0.49326694],\
+[	-6.27339385, -0.00032362, 0.00019824, 7.27307023, 0.99901150, 0.99947814, 0.49326688],\
+[	-6.27339393, -0.00032359, 0.00019822, 7.27307034, 0.99901161, 0.99947820, 0.49326687],\
+[	-6.27339401, -0.00032355, 0.00019820, 7.27307046, 0.99901171, 0.99947825, 0.49326697],\
+[	-6.27339409, -0.00032352, 0.00019818, 7.27307057, 0.99901181, 0.99947830, 0.49326717],\
+[	-6.27339417, -0.00032349, 0.00019816, 7.27307069, 0.99901192, 0.99947836, 0.49326712],\
+[	-6.27339425, -0.00032345, 0.00019813, 7.27307080, 0.99901202, 0.99947841, 0.49326703],\
+[	-6.27339433, -0.00032342, 0.00019811, 7.27307092, 0.99901212, 0.99947847, 0.49326706],\
+[	-6.27339441, -0.00032338, 0.00019809, 7.27307103, 0.99901223, 0.99947852, 0.49326716],\
+[	-6.27339450, -0.00032335, 0.00019807, 7.27307115, 0.99901233, 0.99947858, 0.49326689],\
+[	-6.27339458, -0.00032332, 0.00019805, 7.27307126, 0.99901243, 0.99947863, 0.49326699],\
+[	-6.27339466, -0.00032328, 0.00019803, 7.27307137, 0.99901254, 0.99947869, 0.49326696],\
+[	-6.27339474, -0.00032325, 0.00019801, 7.27307149, 0.99901264, 0.99947874, 0.49326718],\
+[	-6.27339482, -0.00032321, 0.00019799, 7.27307160, 0.99901274, 0.99947880, 0.49326717],\
+[	-6.27339490, -0.00032318, 0.00019797, 7.27307172, 0.99901285, 0.99947885, 0.49326705],\
+[	-6.27339498, -0.00032315, 0.00019795, 7.27307183, 0.99901295, 0.99947890, 0.49326716],\
+[	-6.27339506, -0.00032311, 0.00019793, 7.27307195, 0.99901305, 0.99947896, 0.49326730],\
+[	-6.27339514, -0.00032308, 0.00019791, 7.27307206, 0.99901315, 0.99947901, 0.49326718],\
+[	-6.27339522, -0.00032305, 0.00019789, 7.27307218, 0.99901326, 0.99947907, 0.49326722],\
+[	-6.27339530, -0.00032301, 0.00019787, 7.27307229, 0.99901336, 0.99947912, 0.49326715],\
+[	-6.27339538, -0.00032298, 0.00019785, 7.27307241, 0.99901346, 0.99947918, 0.49326728],\
+[	-6.27339546, -0.00032295, 0.00019782, 7.27307252, 0.99901357, 0.99947923, 0.49326724],\
+[	-6.27339555, -0.00032291, 0.00019780, 7.27307263, 0.99901367, 0.99947928, 0.49326701],\
+[	-6.27339563, -0.00032288, 0.00019778, 7.27307275, 0.99901377, 0.99947934, 0.49326708],\
+[	-6.27339571, -0.00032284, 0.00019776, 7.27307286, 0.99901388, 0.99947939, 0.49326726],\
+[	-6.27339579, -0.00032281, 0.00019774, 7.27307298, 0.99901398, 0.99947945, 0.49326720],\
+[	-6.27339587, -0.00032278, 0.00019772, 7.27307309, 0.99901408, 0.99947950, 0.49326714],\
+[	-6.27339595, -0.00032274, 0.00019770, 7.27307321, 0.99901418, 0.99947956, 0.49326729],\
+[	-6.27339603, -0.00032271, 0.00019768, 7.27307332, 0.99901429, 0.99947961, 0.49326744],\
+[	-6.27339611, -0.00032268, 0.00019766, 7.27307343, 0.99901439, 0.99947966, 0.49326726],\
+[	-6.27339619, -0.00032264, 0.00019764, 7.27307355, 0.99901449, 0.99947972, 0.49326746],\
+[	-6.27339627, -0.00032261, 0.00019762, 7.27307366, 0.99901459, 0.99947977, 0.49326747],\
+[	-6.27339635, -0.00032258, 0.00019760, 7.27307378, 0.99901470, 0.99947983, 0.49326746],\
+[	-6.27339643, -0.00032254, 0.00019758, 7.27307389, 0.99901480, 0.99947988, 0.49326737],\
+[	-6.27339651, -0.00032251, 0.00019756, 7.27307400, 0.99901490, 0.99947994, 0.49326725],\
+[	-6.27339659, -0.00032247, 0.00019754, 7.27307412, 0.99901501, 0.99947999, 0.49326744],\
+[	-6.27339667, -0.00032244, 0.00019752, 7.27307423, 0.99901511, 0.99948004, 0.49326734],\
+[	-6.27339675, -0.00032241, 0.00019749, 7.27307435, 0.99901521, 0.99948010, 0.49326748],\
+[	-6.27339683, -0.00032237, 0.00019747, 7.27307446, 0.99901531, 0.99948015, 0.49326735],\
+[	-6.27339691, -0.00032234, 0.00019745, 7.27307457, 0.99901542, 0.99948021, 0.49326718],\
+[	-6.27339699, -0.00032231, 0.00019743, 7.27307469, 0.99901552, 0.99948026, 0.49326726],\
+[	-6.27339708, -0.00032227, 0.00019741, 7.27307480, 0.99901562, 0.99948031, 0.49326739],\
+[	-6.27339716, -0.00032224, 0.00019739, 7.27307492, 0.99901572, 0.99948037, 0.49326736],\
+[	-6.27339724, -0.00032221, 0.00019737, 7.27307503, 0.99901583, 0.99948042, 0.49326751],\
+[	-6.27339732, -0.00032217, 0.00019735, 7.27307514, 0.99901593, 0.99948048, 0.49326746],\
+[	-6.27339740, -0.00032214, 0.00019733, 7.27307526, 0.99901603, 0.99948053, 0.49326750],\
+[	-6.27339748, -0.00032210, 0.00019731, 7.27307537, 0.99901613, 0.99948059, 0.49326720],\
+[	-6.27339756, -0.00032207, 0.00019729, 7.27307549, 0.99901624, 0.99948064, 0.49326742],\
+[	-6.27339764, -0.00032204, 0.00019727, 7.27307560, 0.99901634, 0.99948069, 0.49326770],\
+[	-6.27339772, -0.00032200, 0.00019725, 7.27307571, 0.99901644, 0.99948075, 0.49326757],\
+[	-6.27339780, -0.00032197, 0.00019723, 7.27307583, 0.99901654, 0.99948080, 0.49326750],\
+[	-6.27339788, -0.00032194, 0.00019721, 7.27307594, 0.99901664, 0.99948086, 0.49326781],\
+[	-6.27339796, -0.00032190, 0.00019719, 7.27307605, 0.99901675, 0.99948091, 0.49326776],\
+[	-6.27339804, -0.00032187, 0.00019717, 7.27307617, 0.99901685, 0.99948096, 0.49326747],\
+[	-6.27339812, -0.00032184, 0.00019715, 7.27307628, 0.99901695, 0.99948102, 0.49326778],\
+[	-6.27339820, -0.00032180, 0.00019713, 7.27307639, 0.99901705, 0.99948107, 0.49326749],\
+[	-6.27339828, -0.00032177, 0.00019710, 7.27307651, 0.99901716, 0.99948113, 0.49326751],\
+[	-6.27339836, -0.00032174, 0.00019708, 7.27307662, 0.99901726, 0.99948118, 0.49326780],\
+[	-6.27339844, -0.00032170, 0.00019706, 7.27307674, 0.99901736, 0.99948123, 0.49326747],\
+[	-6.27339852, -0.00032167, 0.00019704, 7.27307685, 0.99901746, 0.99948129, 0.49326772],\
+[	-6.27339860, -0.00032164, 0.00019702, 7.27307696, 0.99901756, 0.99948134, 0.49326768],\
+[	-6.27339868, -0.00032160, 0.00019700, 7.27307708, 0.99901767, 0.99948139, 0.49326756],\
+[	-6.27339876, -0.00032157, 0.00019698, 7.27307719, 0.99901777, 0.99948145, 0.49326753],\
+[	-6.27339884, -0.00032154, 0.00019696, 7.27307730, 0.99901787, 0.99948150, 0.49326754],\
+[	-6.27339892, -0.00032150, 0.00019694, 7.27307742, 0.99901797, 0.99948156, 0.49326763],\
+[	-6.27339900, -0.00032147, 0.00019692, 7.27307753, 0.99901807, 0.99948161, 0.49326773],\
+[	-6.27339908, -0.00032144, 0.00019690, 7.27307764, 0.99901818, 0.99948166, 0.49326760],\
+[	-6.27339916, -0.00032140, 0.00019688, 7.27307776, 0.99901828, 0.99948172, 0.49326795],\
+[	-6.27339924, -0.00032137, 0.00019686, 7.27307787, 0.99901838, 0.99948177, 0.49326781],\
+[	-6.27339932, -0.00032134, 0.00019684, 7.27307798, 0.99901848, 0.99948183, 0.49326791],\
+[	-6.27339940, -0.00032130, 0.00019682, 7.27307810, 0.99901858, 0.99948188, 0.49326782],\
+[	-6.27339948, -0.00032127, 0.00019680, 7.27307821, 0.99901869, 0.99948193, 0.49326774],\
+[	-6.27339956, -0.00032124, 0.00019678, 7.27307832, 0.99901879, 0.99948199, 0.49326801],\
+[	-6.27339964, -0.00032120, 0.00019676, 7.27307843, 0.99901889, 0.99948204, 0.49326796],\
+[	-6.27339972, -0.00032117, 0.00019674, 7.27307855, 0.99901899, 0.99948209, 0.49326796],\
+[	-6.27339980, -0.00032114, 0.00019672, 7.27307866, 0.99901909, 0.99948215, 0.49326764],\
+[	-6.27339988, -0.00032110, 0.00019670, 7.27307877, 0.99901920, 0.99948220, 0.49326786],\
+[	-6.27339996, -0.00032107, 0.00019668, 7.27307889, 0.99901930, 0.99948226, 0.49326797],\
+[	-6.27340004, -0.00032104, 0.00019665, 7.27307900, 0.99901940, 0.99948231, 0.49326772],\
+[	-6.27340012, -0.00032100, 0.00019663, 7.27307911, 0.99901950, 0.99948236, 0.49326808],\
+[	-6.27340020, -0.00032097, 0.00019661, 7.27307923, 0.99901960, 0.99948242, 0.49326793],\
+[	-6.27340028, -0.00032094, 0.00019659, 7.27307934, 0.99901970, 0.99948247, 0.49326800],\
+[	-6.27340036, -0.00032090, 0.00019657, 7.27307945, 0.99901981, 0.99948252, 0.49326818],\
+[	-6.27340043, -0.00032087, 0.00019655, 7.27307956, 0.99901991, 0.99948258, 0.49326800],\
+[	-6.27340051, -0.00032084, 0.00019653, 7.27307968, 0.99902001, 0.99948263, 0.49326833],\
+[	-6.27340059, -0.00032080, 0.00019651, 7.27307979, 0.99902011, 0.99948268, 0.49326799],\
+[	-6.27340067, -0.00032077, 0.00019649, 7.27307990, 0.99902021, 0.99948274, 0.49326805],\
+[	-6.27340075, -0.00032074, 0.00019647, 7.27308002, 0.99902031, 0.99948279, 0.49326790],\
+[	-6.27340083, -0.00032070, 0.00019645, 7.27308013, 0.99902042, 0.99948285, 0.49326822],\
+[	-6.27340091, -0.00032067, 0.00019643, 7.27308024, 0.99902052, 0.99948290, 0.49326817],\
+[	-6.27340099, -0.00032064, 0.00019641, 7.27308035, 0.99902062, 0.99948295, 0.49326820],\
+[	-6.27340107, -0.00032060, 0.00019639, 7.27308047, 0.99902072, 0.99948301, 0.49326814],\
+[	-6.27340115, -0.00032057, 0.00019637, 7.27308058, 0.99902082, 0.99948306, 0.49326794],\
+[	-6.27340123, -0.00032054, 0.00019635, 7.27308069, 0.99902092, 0.99948311, 0.49326788],\
+[	-6.27340131, -0.00032050, 0.00019633, 7.27308081, 0.99902102, 0.99948317, 0.49326824],\
+[	-6.27340139, -0.00032047, 0.00019631, 7.27308092, 0.99902113, 0.99948322, 0.49326821],\
+[	-6.27340147, -0.00032044, 0.00019629, 7.27308103, 0.99902123, 0.99948327, 0.49326804],\
+[	-6.27340155, -0.00032040, 0.00019627, 7.27308114, 0.99902133, 0.99948333, 0.49326826],\
+[	-6.27340163, -0.00032037, 0.00019625, 7.27308126, 0.99902143, 0.99948338, 0.49326837],\
+[	-6.27340171, -0.00032034, 0.00019623, 7.27308137, 0.99902153, 0.99948343, 0.49326808],\
+[	-6.27340179, -0.00032031, 0.00019621, 7.27308148, 0.99902163, 0.99948349, 0.49326814],\
+[	-6.27340187, -0.00032027, 0.00019619, 7.27308159, 0.99902173, 0.99948354, 0.49326823],\
+[	-6.27340194, -0.00032024, 0.00019617, 7.27308171, 0.99902183, 0.99948359, 0.49326820],\
+[	-6.27340202, -0.00032021, 0.00019615, 7.27308182, 0.99902194, 0.99948365, 0.49326819],\
+[	-6.27340210, -0.00032017, 0.00019613, 7.27308193, 0.99902204, 0.99948370, 0.49326828],\
+[	-6.27340218, -0.00032014, 0.00019611, 7.27308204, 0.99902214, 0.99948376, 0.49326815],\
+[	-6.27340226, -0.00032011, 0.00019608, 7.27308216, 0.99902224, 0.99948381, 0.49326833],\
+[	-6.27340234, -0.00032007, 0.00019606, 7.27308227, 0.99902234, 0.99948386, 0.49326820],\
+[	-6.27340242, -0.00032004, 0.00019604, 7.27308238, 0.99902244, 0.99948392, 0.49326839],\
+[	-6.27340250, -0.00032001, 0.00019602, 7.27308249, 0.99902254, 0.99948397, 0.49326825],\
+[	-6.27340258, -0.00031997, 0.00019600, 7.27308261, 0.99902264, 0.99948402, 0.49326820],\
+[	-6.27340266, -0.00031994, 0.00019598, 7.27308272, 0.99902274, 0.99948408, 0.49326829],\
+[	-6.27340274, -0.00031991, 0.00019596, 7.27308283, 0.99902285, 0.99948413, 0.49326838],\
+[	-6.27340282, -0.00031987, 0.00019594, 7.27308294, 0.99902295, 0.99948418, 0.49326829],\
+[	-6.27340290, -0.00031984, 0.00019592, 7.27308305, 0.99902305, 0.99948424, 0.49326812],\
+[	-6.27340297, -0.00031981, 0.00019590, 7.27308317, 0.99902315, 0.99948429, 0.49326825],\
+[	-6.27340305, -0.00031978, 0.00019588, 7.27308328, 0.99902325, 0.99948434, 0.49326844],\
+[	-6.27340313, -0.00031974, 0.00019586, 7.27308339, 0.99902335, 0.99948440, 0.49326822],\
+[	-6.27340321, -0.00031971, 0.00019584, 7.27308350, 0.99902345, 0.99948445, 0.49326848],\
+[	-6.27340329, -0.00031968, 0.00019582, 7.27308361, 0.99902355, 0.99948450, 0.49326823],\
+[	-6.27340337, -0.00031964, 0.00019580, 7.27308373, 0.99902365, 0.99948455, 0.49326831],\
+[	-6.27340345, -0.00031961, 0.00019578, 7.27308384, 0.99902375, 0.99948461, 0.49326842],\
+[	-6.27340353, -0.00031958, 0.00019576, 7.27308395, 0.99902385, 0.99948466, 0.49326833],\
+[	-6.27340361, -0.00031954, 0.00019574, 7.27308406, 0.99902396, 0.99948471, 0.49326844],\
+[	-6.27340369, -0.00031951, 0.00019572, 7.27308417, 0.99902406, 0.99948477, 0.49326841],\
+[	-6.27340377, -0.00031948, 0.00019570, 7.27308429, 0.99902416, 0.99948482, 0.49326813],\
+[	-6.27340384, -0.00031945, 0.00019568, 7.27308440, 0.99902426, 0.99948487, 0.49326861],\
+[	-6.27340392, -0.00031941, 0.00019566, 7.27308451, 0.99902436, 0.99948493, 0.49326836],\
+[	-6.27340400, -0.00031938, 0.00019564, 7.27308462, 0.99902446, 0.99948498, 0.49326869],\
+[	-6.27340408, -0.00031935, 0.00019562, 7.27308473, 0.99902456, 0.99948503, 0.49326883],\
+[	-6.27340416, -0.00031931, 0.00019560, 7.27308485, 0.99902466, 0.99948509, 0.49326857],\
+[	-6.27340424, -0.00031928, 0.00019558, 7.27308496, 0.99902476, 0.99948514, 0.49326861],\
+[	-6.27340432, -0.00031925, 0.00019556, 7.27308507, 0.99902486, 0.99948519, 0.49326841],\
+[	-6.27340440, -0.00031922, 0.00019554, 7.27308518, 0.99902496, 0.99948525, 0.49326856],\
+[	-6.27340448, -0.00031918, 0.00019552, 7.27308529, 0.99902506, 0.99948530, 0.49326867],\
+[	-6.27340455, -0.00031915, 0.00019550, 7.27308540, 0.99902516, 0.99948535, 0.49326859],\
+[	-6.27340463, -0.00031912, 0.00019548, 7.27308552, 0.99902526, 0.99948541, 0.49326854],\
+[	-6.27340471, -0.00031908, 0.00019546, 7.27308563, 0.99902536, 0.99948546, 0.49326869],\
+[	-6.27340479, -0.00031905, 0.00019544, 7.27308574, 0.99902546, 0.99948551, 0.49326853],\
+[	-6.27340487, -0.00031902, 0.00019542, 7.27308585, 0.99902557, 0.99948556, 0.49326880],\
+[	-6.27340495, -0.00031899, 0.00019540, 7.27308596, 0.99902567, 0.99948562, 0.49326872],\
+[	-6.27340503, -0.00031895, 0.00019538, 7.27308607, 0.99902577, 0.99948567, 0.49326861],\
+[	-6.27340511, -0.00031892, 0.00019536, 7.27308619, 0.99902587, 0.99948572, 0.49326878],\
+[	-6.27340518, -0.00031889, 0.00019534, 7.27308630, 0.99902597, 0.99948578, 0.49326876],\
+[	-6.27340526, -0.00031885, 0.00019532, 7.27308641, 0.99902607, 0.99948583, 0.49326873],\
+[	-6.27340534, -0.00031882, 0.00019530, 7.27308652, 0.99902617, 0.99948588, 0.49326869],\
+[	-6.27340542, -0.00031879, 0.00019528, 7.27308663, 0.99902627, 0.99948594, 0.49326868],\
+[	-6.27340550, -0.00031876, 0.00019526, 7.27308674, 0.99902637, 0.99948599, 0.49326886],\
+[	-6.27340558, -0.00031872, 0.00019524, 7.27308685, 0.99902647, 0.99948604, 0.49326868],\
+[	-6.27340566, -0.00031869, 0.00019522, 7.27308697, 0.99902657, 0.99948609, 0.49326883],\
+[	-6.27340573, -0.00031866, 0.00019520, 7.27308708, 0.99902667, 0.99948615, 0.49326876],\
+[	-6.27340581, -0.00031862, 0.00019518, 7.27308719, 0.99902677, 0.99948620, 0.49326874],\
+[	-6.27340589, -0.00031859, 0.00019516, 7.27308730, 0.99902687, 0.99948625, 0.49326882],\
+[	-6.27340597, -0.00031856, 0.00019514, 7.27308741, 0.99902697, 0.99948631, 0.49326866],\
+[	-6.27340605, -0.00031853, 0.00019512, 7.27308752, 0.99902707, 0.99948636, 0.49326860],\
+[	-6.27340613, -0.00031849, 0.00019510, 7.27308763, 0.99902717, 0.99948641, 0.49326865],\
+[	-6.27340621, -0.00031846, 0.00019508, 7.27308775, 0.99902727, 0.99948646, 0.49326872],\
+[	-6.27340628, -0.00031843, 0.00019506, 7.27308786, 0.99902737, 0.99948652, 0.49326863],\
+[	-6.27340636, -0.00031839, 0.00019504, 7.27308797, 0.99902747, 0.99948657, 0.49326869],\
+[	-6.27340644, -0.00031836, 0.00019502, 7.27308808, 0.99902757, 0.99948662, 0.49326888],\
+[	-6.27340652, -0.00031833, 0.00019500, 7.27308819, 0.99902767, 0.99948668, 0.49326895],\
+[	-6.27340660, -0.00031830, 0.00019498, 7.27308830, 0.99902777, 0.99948673, 0.49326876],\
+[	-6.27340668, -0.00031826, 0.00019496, 7.27308841, 0.99902787, 0.99948678, 0.49326889],\
+[	-6.27340675, -0.00031823, 0.00019494, 7.27308852, 0.99902797, 0.99948683, 0.49326878],\
+[	-6.27340683, -0.00031820, 0.00019492, 7.27308863, 0.99902807, 0.99948689, 0.49326887],\
+[	-6.27340691, -0.00031817, 0.00019490, 7.27308875, 0.99902817, 0.99948694, 0.49326916],\
+[	-6.27340699, -0.00031813, 0.00019488, 7.27308886, 0.99902827, 0.99948699, 0.49326908],\
+[	-6.27340707, -0.00031810, 0.00019486, 7.27308897, 0.99902837, 0.99948704, 0.49326893],\
+[	-6.27340715, -0.00031807, 0.00019484, 7.27308908, 0.99902847, 0.99948710, 0.49326890],\
+[	-6.27340722, -0.00031803, 0.00019482, 7.27308919, 0.99902857, 0.99948715, 0.49326887],\
+[	-6.27340730, -0.00031800, 0.00019480, 7.27308930, 0.99902867, 0.99948720, 0.49326878],\
+[	-6.27340738, -0.00031797, 0.00019478, 7.27308941, 0.99902877, 0.99948726, 0.49326894],\
+[	-6.27340746, -0.00031794, 0.00019476, 7.27308952, 0.99902887, 0.99948731, 0.49326894],\
+[	-6.27340754, -0.00031790, 0.00019474, 7.27308963, 0.99902897, 0.99948736, 0.49326908],\
+[	-6.27340761, -0.00031787, 0.00019472, 7.27308974, 0.99902907, 0.99948741, 0.49326876],\
+[	-6.27340769, -0.00031784, 0.00019470, 7.27308985, 0.99902917, 0.99948747, 0.49326912],\
+[	-6.27340777, -0.00031781, 0.00019468, 7.27308996, 0.99902927, 0.99948752, 0.49326904],\
+[	-6.27340785, -0.00031777, 0.00019466, 7.27309008, 0.99902937, 0.99948757, 0.49326901],\
+[	-6.27340793, -0.00031774, 0.00019464, 7.27309019, 0.99902947, 0.99948762, 0.49326930],\
+[	-6.27340801, -0.00031771, 0.00019462, 7.27309030, 0.99902957, 0.99948768, 0.49326907],\
+[	-6.27340808, -0.00031768, 0.00019460, 7.27309041, 0.99902967, 0.99948773, 0.49326924],\
+[	-6.27340816, -0.00031764, 0.00019458, 7.27309052, 0.99902977, 0.99948778, 0.49326904],\
+[	-6.27340824, -0.00031761, 0.00019456, 7.27309063, 0.99902987, 0.99948783, 0.49326893],\
+[	-6.27340832, -0.00031758, 0.00019454, 7.27309074, 0.99902997, 0.99948789, 0.49326909],\
+[	-6.27340840, -0.00031755, 0.00019452, 7.27309085, 0.99903006, 0.99948794, 0.49326930],\
+[	-6.27340847, -0.00031751, 0.00019450, 7.27309096, 0.99903016, 0.99948799, 0.49326922],\
+[	-6.27340855, -0.00031748, 0.00019448, 7.27309107, 0.99903026, 0.99948804, 0.49326913],\
+[	-6.27340863, -0.00031745, 0.00019446, 7.27309118, 0.99903036, 0.99948810, 0.49326905],\
+[	-6.27340871, -0.00031742, 0.00019444, 7.27309129, 0.99903046, 0.99948815, 0.49326923],\
+[	-6.27340879, -0.00031738, 0.00019442, 7.27309140, 0.99903056, 0.99948820, 0.49326938],\
+[	-6.27340886, -0.00031735, 0.00019440, 7.27309151, 0.99903066, 0.99948825, 0.49326909],\
+[	-6.27340894, -0.00031732, 0.00019438, 7.27309162, 0.99903076, 0.99948831, 0.49326912],\
+[	-6.27340902, -0.00031728, 0.00019436, 7.27309173, 0.99903086, 0.99948836, 0.49326920],\
+[	-6.27340910, -0.00031725, 0.00019434, 7.27309184, 0.99903096, 0.99948841, 0.49326917],\
+[	-6.27340917, -0.00031722, 0.00019432, 7.27309196, 0.99903106, 0.99948846, 0.49326921],\
+[	-6.27340925, -0.00031719, 0.00019430, 7.27309207, 0.99903116, 0.99948852, 0.49326919],\
+[	-6.27340933, -0.00031715, 0.00019428, 7.27309218, 0.99903126, 0.99948857, 0.49326928],\
+[	-6.27340941, -0.00031712, 0.00019426, 7.27309229, 0.99903136, 0.99948862, 0.49326918],\
+[	-6.27340949, -0.00031709, 0.00019424, 7.27309240, 0.99903146, 0.99948867, 0.49326958],\
+[	-6.27340956, -0.00031706, 0.00019422, 7.27309251, 0.99903156, 0.99948873, 0.49326936],\
+[	-6.27340964, -0.00031702, 0.00019420, 7.27309262, 0.99903165, 0.99948878, 0.49326927],\
+[	-6.27340972, -0.00031699, 0.00019418, 7.27309273, 0.99903175, 0.99948883, 0.49326942],\
+[	-6.27340980, -0.00031696, 0.00019416, 7.27309284, 0.99903185, 0.99948888, 0.49326912],\
+[	-6.27340987, -0.00031693, 0.00019414, 7.27309295, 0.99903195, 0.99948894, 0.49326924],\
+[	-6.27340995, -0.00031690, 0.00019412, 7.27309306, 0.99903205, 0.99948899, 0.49326951],\
+[	-6.27341003, -0.00031686, 0.00019410, 7.27309317, 0.99903215, 0.99948904, 0.49326942],\
+[	-6.27341011, -0.00031683, 0.00019408, 7.27309328, 0.99903225, 0.99948909, 0.49326925],\
+[	-6.27341019, -0.00031680, 0.00019406, 7.27309339, 0.99903235, 0.99948914, 0.49326927],\
+[	-6.27341026, -0.00031677, 0.00019404, 7.27309350, 0.99903245, 0.99948920, 0.49326936],\
+[	-6.27341034, -0.00031673, 0.00019402, 7.27309361, 0.99903255, 0.99948925, 0.49326944],\
+[	-6.27341042, -0.00031670, 0.00019400, 7.27309372, 0.99903265, 0.99948930, 0.49326949],\
+[	-6.27341050, -0.00031667, 0.00019398, 7.27309383, 0.99903274, 0.99948935, 0.49326915],\
+[	-6.27341057, -0.00031664, 0.00019396, 7.27309394, 0.99903284, 0.99948941, 0.49326929],\
+[	-6.27341065, -0.00031660, 0.00019394, 7.27309405, 0.99903294, 0.99948946, 0.49326955],\
+[	-6.27341073, -0.00031657, 0.00019392, 7.27309416, 0.99903304, 0.99948951, 0.49326921],\
+[	-6.27341081, -0.00031654, 0.00019390, 7.27309427, 0.99903314, 0.99948956, 0.49326941],\
+[	-6.27341088, -0.00031651, 0.00019388, 7.27309438, 0.99903324, 0.99948961, 0.49326954],\
+[	-6.27341096, -0.00031647, 0.00019386, 7.27309449, 0.99903334, 0.99948967, 0.49326935],\
+[	-6.27341104, -0.00031644, 0.00019384, 7.27309460, 0.99903344, 0.99948972, 0.49326969],\
+[	-6.27341112, -0.00031641, 0.00019382, 7.27309471, 0.99903354, 0.99948977, 0.49326971],\
+[	-6.27341119, -0.00031638, 0.00019380, 7.27309482, 0.99903363, 0.99948982, 0.49326945],\
+[	-6.27341127, -0.00031634, 0.00019378, 7.27309493, 0.99903373, 0.99948988, 0.49326964],\
+[	-6.27341135, -0.00031631, 0.00019376, 7.27309504, 0.99903383, 0.99948993, 0.49326955],\
+[	-6.27341143, -0.00031628, 0.00019374, 7.27309515, 0.99903393, 0.99948998, 0.49326931],\
+[	-6.27341150, -0.00031625, 0.00019372, 7.27309526, 0.99903403, 0.99949003, 0.49326939],\
+[	-6.27341158, -0.00031622, 0.00019370, 7.27309537, 0.99903413, 0.99949008, 0.49326953],\
+[	-6.27341166, -0.00031618, 0.00019368, 7.27309547, 0.99903423, 0.99949014, 0.49326974],\
+[	-6.27341173, -0.00031615, 0.00019366, 7.27309558, 0.99903433, 0.99949019, 0.49326980],\
+[	-6.27341181, -0.00031612, 0.00019364, 7.27309569, 0.99903442, 0.99949024, 0.49326965],\
+[	-6.27341189, -0.00031609, 0.00019362, 7.27309580, 0.99903452, 0.99949029, 0.49326969],\
+[	-6.27341197, -0.00031605, 0.00019360, 7.27309591, 0.99903462, 0.99949034, 0.49326954],\
+[	-6.27341204, -0.00031602, 0.00019358, 7.27309602, 0.99903472, 0.99949040, 0.49326953],\
+[	-6.27341212, -0.00031599, 0.00019356, 7.27309613, 0.99903482, 0.99949045, 0.49326986],\
+[	-6.27341220, -0.00031596, 0.00019354, 7.27309624, 0.99903492, 0.99949050, 0.49326990],\
+[	-6.27341228, -0.00031592, 0.00019352, 7.27309635, 0.99903502, 0.99949055, 0.49326950],\
+[	-6.27341235, -0.00031589, 0.00019350, 7.27309646, 0.99903511, 0.99949060, 0.49326968],\
+[	-6.27341243, -0.00031586, 0.00019348, 7.27309657, 0.99903521, 0.99949066, 0.49326946],\
+[	-6.27341251, -0.00031583, 0.00019346, 7.27309668, 0.99903531, 0.99949071, 0.49326958],\
+[	-6.27341258, -0.00031580, 0.00019344, 7.27309679, 0.99903541, 0.99949076, 0.49326990],\
+[	-6.27341266, -0.00031576, 0.00019342, 7.27309690, 0.99903551, 0.99949081, 0.49326972],\
+[	-6.27341274, -0.00031573, 0.00019340, 7.27309701, 0.99903561, 0.99949086, 0.49326980],\
+[	-6.27341282, -0.00031570, 0.00019338, 7.27309712, 0.99903570, 0.99949092, 0.49327001],\
+[	-6.27341289, -0.00031567, 0.00019336, 7.27309723, 0.99903580, 0.99949097, 0.49326985],\
+[	-6.27341297, -0.00031563, 0.00019334, 7.27309734, 0.99903590, 0.99949102, 0.49326983],\
+[	-6.27341305, -0.00031560, 0.00019333, 7.27309744, 0.99903600, 0.99949107, 0.49326985],\
+[	-6.27341312, -0.00031557, 0.00019331, 7.27309755, 0.99903610, 0.99949112, 0.49327005],\
+[	-6.27341320, -0.00031554, 0.00019329, 7.27309766, 0.99903620, 0.99949118, 0.49326985],\
+[	-6.27341328, -0.00031551, 0.00019327, 7.27309777, 0.99903629, 0.99949123, 0.49326980],\
+[	-6.27341336, -0.00031547, 0.00019325, 7.27309788, 0.99903639, 0.99949128, 0.49326990],\
+[	-6.27341343, -0.00031544, 0.00019323, 7.27309799, 0.99903649, 0.99949133, 0.49326985],\
+[	-6.27341351, -0.00031541, 0.00019321, 7.27309810, 0.99903659, 0.99949138, 0.49326999],\
+[	-6.27341359, -0.00031538, 0.00019319, 7.27309821, 0.99903669, 0.99949144, 0.49326989],\
+[	-6.27341366, -0.00031535, 0.00019317, 7.27309832, 0.99903679, 0.99949149, 0.49326987],\
+[	-6.27341374, -0.00031531, 0.00019315, 7.27309843, 0.99903688, 0.99949154, 0.49327012],\
+[	-6.27341382, -0.00031528, 0.00019313, 7.27309854, 0.99903698, 0.99949159, 0.49326994],\
+[	-6.27341389, -0.00031525, 0.00019311, 7.27309864, 0.99903708, 0.99949164, 0.49327001],\
+[	-6.27341397, -0.00031522, 0.00019309, 7.27309875, 0.99903718, 0.99949169, 0.49327008],\
+[	-6.27341405, -0.00031519, 0.00019307, 7.27309886, 0.99903728, 0.99949175, 0.49327008],\
+[	-6.27341412, -0.00031515, 0.00019305, 7.27309897, 0.99903737, 0.99949180, 0.49326970],\
+[	-6.27341420, -0.00031512, 0.00019303, 7.27309908, 0.99903747, 0.99949185, 0.49326989],\
+[	-6.27341428, -0.00031509, 0.00019301, 7.27309919, 0.99903757, 0.99949190, 0.49326992],\
+[	-6.27341435, -0.00031506, 0.00019299, 7.27309930, 0.99903767, 0.99949195, 0.49327000],\
+[	-6.27341443, -0.00031502, 0.00019297, 7.27309941, 0.99903777, 0.99949200, 0.49327006],\
+[	-6.27341451, -0.00031499, 0.00019295, 7.27309952, 0.99903786, 0.99949206, 0.49327023],\
+[	-6.27341459, -0.00031496, 0.00019293, 7.27309962, 0.99903796, 0.99949211, 0.49327002],\
+[	-6.27341466, -0.00031493, 0.00019291, 7.27309973, 0.99903806, 0.99949216, 0.49327004],\
+[	-6.27341474, -0.00031490, 0.00019289, 7.27309984, 0.99903816, 0.99949221, 0.49327010],\
+[	-6.27341482, -0.00031486, 0.00019287, 7.27309995, 0.99903826, 0.99949226, 0.49327000],\
+[	-6.27341489, -0.00031483, 0.00019285, 7.27310006, 0.99903835, 0.99949231, 0.49326994],\
+[	-6.27341497, -0.00031480, 0.00019283, 7.27310017, 0.99903845, 0.99949237, 0.49327008],\
+[	-6.27341505, -0.00031477, 0.00019281, 7.27310028, 0.99903855, 0.99949242, 0.49327002],\
+[	-6.27341512, -0.00031474, 0.00019279, 7.27310039, 0.99903865, 0.99949247, 0.49327015],\
+[	-6.27341520, -0.00031470, 0.00019277, 7.27310049, 0.99903874, 0.99949252, 0.49326998],\
+[	-6.27341528, -0.00031467, 0.00019275, 7.27310060, 0.99903884, 0.99949257, 0.49327030],\
+[	-6.27341535, -0.00031464, 0.00019274, 7.27310071, 0.99903894, 0.99949262, 0.49326995],\
+[	-6.27341543, -0.00031461, 0.00019272, 7.27310082, 0.99903904, 0.99949268, 0.49327013],\
+[	-6.27341550, -0.00031458, 0.00019270, 7.27310093, 0.99903914, 0.99949273, 0.49327030],\
+[	-6.27341558, -0.00031454, 0.00019268, 7.27310104, 0.99903923, 0.99949278, 0.49327016],\
+[	-6.27341566, -0.00031451, 0.00019266, 7.27310115, 0.99903933, 0.99949283, 0.49327003],\
+[	-6.27341573, -0.00031448, 0.00019264, 7.27310125, 0.99903943, 0.99949288, 0.49327020],\
+[	-6.27341581, -0.00031445, 0.00019262, 7.27310136, 0.99903953, 0.99949293, 0.49327016],\
+[	-6.27341589, -0.00031442, 0.00019260, 7.27310147, 0.99903962, 0.99949298, 0.49327038],\
+[	-6.27341596, -0.00031438, 0.00019258, 7.27310158, 0.99903972, 0.99949304, 0.49327020],\
+[	-6.27341604, -0.00031435, 0.00019256, 7.27310169, 0.99903982, 0.99949309, 0.49326989],\
+[	-6.27341612, -0.00031432, 0.00019254, 7.27310180, 0.99903992, 0.99949314, 0.49327033],\
+[	-6.27341619, -0.00031429, 0.00019252, 7.27310190, 0.99904001, 0.99949319, 0.49327021],\
+[	-6.27341627, -0.00031426, 0.00019250, 7.27310201, 0.99904011, 0.99949324, 0.49327047],\
+[	-6.27341635, -0.00031423, 0.00019248, 7.27310212, 0.99904021, 0.99949329, 0.49327024],\
+[	-6.27341642, -0.00031419, 0.00019246, 7.27310223, 0.99904031, 0.99949335, 0.49327034],\
+[	-6.27341650, -0.00031416, 0.00019244, 7.27310234, 0.99904040, 0.99949340, 0.49327024],\
+[	-6.27341658, -0.00031413, 0.00019242, 7.27310245, 0.99904050, 0.99949345, 0.49327049],\
+[	-6.27341665, -0.00031410, 0.00019240, 7.27310255, 0.99904060, 0.99949350, 0.49327029],\
+[	-6.27341673, -0.00031407, 0.00019238, 7.27310266, 0.99904070, 0.99949355, 0.49327027],\
+[	-6.27341680, -0.00031403, 0.00019236, 7.27310277, 0.99904079, 0.99949360, 0.49327052],\
+[	-6.27341688, -0.00031400, 0.00019234, 7.27310288, 0.99904089, 0.99949365, 0.49327062],\
+[	-6.27341696, -0.00031397, 0.00019232, 7.27310299, 0.99904099, 0.99949370, 0.49327051],\
+[	-6.27341703, -0.00031394, 0.00019231, 7.27310309, 0.99904108, 0.99949376, 0.49327035],\
+[	-6.27341711, -0.00031391, 0.00019229, 7.27310320, 0.99904118, 0.99949381, 0.49327029],\
+[	-6.27341719, -0.00031387, 0.00019227, 7.27310331, 0.99904128, 0.99949386, 0.49327040],\
+[	-6.27341726, -0.00031384, 0.00019225, 7.27310342, 0.99904138, 0.99949391, 0.49327054],\
+[	-6.27341734, -0.00031381, 0.00019223, 7.27310353, 0.99904147, 0.99949396, 0.49327057],\
+[	-6.27341741, -0.00031378, 0.00019221, 7.27310363, 0.99904157, 0.99949401, 0.49327065],\
+[	-6.27341749, -0.00031375, 0.00019219, 7.27310374, 0.99904167, 0.99949406, 0.49327055],\
+[	-6.27341757, -0.00031372, 0.00019217, 7.27310385, 0.99904177, 0.99949412, 0.49327044],\
+[	-6.27341764, -0.00031368, 0.00019215, 7.27310396, 0.99904186, 0.99949417, 0.49327060],\
+[	-6.27341772, -0.00031365, 0.00019213, 7.27310407, 0.99904196, 0.99949422, 0.49327062],\
+[	-6.27341779, -0.00031362, 0.00019211, 7.27310417, 0.99904206, 0.99949427, 0.49327057],\
+[	-6.27341787, -0.00031359, 0.00019209, 7.27310428, 0.99904215, 0.99949432, 0.49327068],\
+[	-6.27341795, -0.00031356, 0.00019207, 7.27310439, 0.99904225, 0.99949437, 0.49327087],\
+[	-6.27341802, -0.00031353, 0.00019205, 7.27310450, 0.99904235, 0.99949442, 0.49327065],\
+[	-6.27341810, -0.00031349, 0.00019203, 7.27310461, 0.99904244, 0.99949447, 0.49327040],\
+[	-6.27341817, -0.00031346, 0.00019201, 7.27310471, 0.99904254, 0.99949453, 0.49327056],\
+[	-6.27341825, -0.00031343, 0.00019199, 7.27310482, 0.99904264, 0.99949458, 0.49327057],\
+[	-6.27341833, -0.00031340, 0.00019197, 7.27310493, 0.99904274, 0.99949463, 0.49327059],\
+[	-6.27341840, -0.00031337, 0.00019195, 7.27310504, 0.99904283, 0.99949468, 0.49327075],\
+[	-6.27341848, -0.00031333, 0.00019194, 7.27310514, 0.99904293, 0.99949473, 0.49327058],\
+[	-6.27341855, -0.00031330, 0.00019192, 7.27310525, 0.99904303, 0.99949478, 0.49327073],\
+[	-6.27341863, -0.00031327, 0.00019190, 7.27310536, 0.99904312, 0.99949483, 0.49327054],\
+[	-6.27341871, -0.00031324, 0.00019188, 7.27310547, 0.99904322, 0.99949488, 0.49327048],\
+[	-6.27341878, -0.00031321, 0.00019186, 7.27310557, 0.99904332, 0.99949493, 0.49327086],\
+[	-6.27341886, -0.00031318, 0.00019184, 7.27310568, 0.99904341, 0.99949499, 0.49327056],\
+[	-6.27341893, -0.00031314, 0.00019182, 7.27310579, 0.99904351, 0.99949504, 0.49327071],\
+[	-6.27341901, -0.00031311, 0.00019180, 7.27310590, 0.99904361, 0.99949509, 0.49327045],\
+[	-6.27341909, -0.00031308, 0.00019178, 7.27310600, 0.99904370, 0.99949514, 0.49327067],\
+[	-6.27341916, -0.00031305, 0.00019176, 7.27310611, 0.99904380, 0.99949519, 0.49327067],\
+[	-6.27341924, -0.00031302, 0.00019174, 7.27310622, 0.99904390, 0.99949524, 0.49327074],\
+[	-6.27341931, -0.00031299, 0.00019172, 7.27310633, 0.99904399, 0.99949529, 0.49327107],\
+[	-6.27341939, -0.00031295, 0.00019170, 7.27310643, 0.99904409, 0.99949534, 0.49327064],\
+[	-6.27341946, -0.00031292, 0.00019168, 7.27310654, 0.99904419, 0.99949539, 0.49327063],\
+[	-6.27341954, -0.00031289, 0.00019166, 7.27310665, 0.99904428, 0.99949545, 0.49327050],\
+[	-6.27341962, -0.00031286, 0.00019164, 7.27310676, 0.99904438, 0.99949550, 0.49327069],\
+[	-6.27341969, -0.00031283, 0.00019162, 7.27310686, 0.99904448, 0.99949555, 0.49327081],\
+[	-6.27341977, -0.00031280, 0.00019161, 7.27310697, 0.99904457, 0.99949560, 0.49327077],\
+[	-6.27341984, -0.00031276, 0.00019159, 7.27310708, 0.99904467, 0.99949565, 0.49327081],\
+[	-6.27341992, -0.00031273, 0.00019157, 7.27310719, 0.99904477, 0.99949570, 0.49327088],\
+[	-6.27341999, -0.00031270, 0.00019155, 7.27310729, 0.99904486, 0.99949575, 0.49327082],\
+[	-6.27342007, -0.00031267, 0.00019153, 7.27310740, 0.99904496, 0.99949580, 0.49327067],\
+[	-6.27342015, -0.00031264, 0.00019151, 7.27310751, 0.99904506, 0.99949585, 0.49327061],\
+[	-6.27342022, -0.00031261, 0.00019149, 7.27310761, 0.99904515, 0.99949590, 0.49327079],\
+[	-6.27342030, -0.00031258, 0.00019147, 7.27310772, 0.99904525, 0.99949595, 0.49327103],\
+[	-6.27342037, -0.00031254, 0.00019145, 7.27310783, 0.99904535, 0.99949601, 0.49327107],\
+[	-6.27342045, -0.00031251, 0.00019143, 7.27310794, 0.99904544, 0.99949606, 0.49327084],\
+[	-6.27342052, -0.00031248, 0.00019141, 7.27310804, 0.99904554, 0.99949611, 0.49327096],\
+[	-6.27342060, -0.00031245, 0.00019139, 7.27310815, 0.99904563, 0.99949616, 0.49327062],\
+[	-6.27342067, -0.00031242, 0.00019137, 7.27310826, 0.99904573, 0.99949621, 0.49327088],\
+[	-6.27342075, -0.00031239, 0.00019135, 7.27310836, 0.99904583, 0.99949626, 0.49327094],\
+[	-6.27342083, -0.00031235, 0.00019133, 7.27310847, 0.99904592, 0.99949631, 0.49327095],\
+[	-6.27342090, -0.00031232, 0.00019132, 7.27310858, 0.99904602, 0.99949636, 0.49327111],\
+[	-6.27342098, -0.00031229, 0.00019130, 7.27310869, 0.99904612, 0.99949641, 0.49327066],\
+[	-6.27342105, -0.00031226, 0.00019128, 7.27310879, 0.99904621, 0.99949646, 0.49327112],\
+[	-6.27342113, -0.00031223, 0.00019126, 7.27310890, 0.99904631, 0.99949651, 0.49327094],\
+[	-6.27342120, -0.00031220, 0.00019124, 7.27310901, 0.99904641, 0.99949656, 0.49327097],\
+[	-6.27342128, -0.00031217, 0.00019122, 7.27310911, 0.99904650, 0.99949662, 0.49327094],\
+[	-6.27342135, -0.00031213, 0.00019120, 7.27310922, 0.99904660, 0.99949667, 0.49327120],\
+[	-6.27342143, -0.00031210, 0.00019118, 7.27310933, 0.99904669, 0.99949672, 0.49327123],\
+[	-6.27342150, -0.00031207, 0.00019116, 7.27310943, 0.99904679, 0.99949677, 0.49327124],\
+[	-6.27342158, -0.00031204, 0.00019114, 7.27310954, 0.99904689, 0.99949682, 0.49327089],\
+[	-6.27342166, -0.00031201, 0.00019112, 7.27310965, 0.99904698, 0.99949687, 0.49327096],\
+[	-6.27342173, -0.00031198, 0.00019110, 7.27310975, 0.99904708, 0.99949692, 0.49327093],\
+[	-6.27342181, -0.00031195, 0.00019108, 7.27310986, 0.99904717, 0.99949697, 0.49327128],\
+[	-6.27342188, -0.00031191, 0.00019106, 7.27310997, 0.99904727, 0.99949702, 0.49327122],\
+[	-6.27342196, -0.00031188, 0.00019105, 7.27311007, 0.99904737, 0.99949707, 0.49327128],\
+[	-6.27342203, -0.00031185, 0.00019103, 7.27311018, 0.99904746, 0.99949712, 0.49327113],\
+[	-6.27342211, -0.00031182, 0.00019101, 7.27311029, 0.99904756, 0.99949717, 0.49327121],\
+[	-6.27342218, -0.00031179, 0.00019099, 7.27311039, 0.99904765, 0.99949722, 0.49327115],\
+[	-6.27342226, -0.00031176, 0.00019097, 7.27311050, 0.99904775, 0.99949727, 0.49327114],\
+[	-6.27342233, -0.00031173, 0.00019095, 7.27311061, 0.99904785, 0.99949733, 0.49327102],\
+[	-6.27342241, -0.00031169, 0.00019093, 7.27311071, 0.99904794, 0.99949738, 0.49327120],\
+[	-6.27342248, -0.00031166, 0.00019091, 7.27311082, 0.99904804, 0.99949743, 0.49327130],\
+[	-6.27342256, -0.00031163, 0.00019089, 7.27311093, 0.99904813, 0.99949748, 0.49327109],\
+[	-6.27342263, -0.00031160, 0.00019087, 7.27311103, 0.99904823, 0.99949753, 0.49327132],\
+[	-6.27342271, -0.00031157, 0.00019085, 7.27311114, 0.99904833, 0.99949758, 0.49327146],\
+[	-6.27342278, -0.00031154, 0.00019083, 7.27311125, 0.99904842, 0.99949763, 0.49327090],\
+[	-6.27342286, -0.00031151, 0.00019081, 7.27311135, 0.99904852, 0.99949768, 0.49327123],\
+[	-6.27342293, -0.00031147, 0.00019080, 7.27311146, 0.99904861, 0.99949773, 0.49327134],\
+[	-6.27342301, -0.00031144, 0.00019078, 7.27311156, 0.99904871, 0.99949778, 0.49327133],\
+[	-6.27342308, -0.00031141, 0.00019076, 7.27311167, 0.99904880, 0.99949783, 0.49327117],\
+[	-6.27342316, -0.00031138, 0.00019074, 7.27311178, 0.99904890, 0.99949788, 0.49327124],\
+[	-6.27342323, -0.00031135, 0.00019072, 7.27311188, 0.99904900, 0.99949793, 0.49327116],\
+[	-6.27342331, -0.00031132, 0.00019070, 7.27311199, 0.99904909, 0.99949798, 0.49327125],\
+[	-6.27342338, -0.00031129, 0.00019068, 7.27311210, 0.99904919, 0.99949803, 0.49327132],\
+[	-6.27342346, -0.00031126, 0.00019066, 7.27311220, 0.99904928, 0.99949808, 0.49327161],\
+[	-6.27342353, -0.00031122, 0.00019064, 7.27311231, 0.99904938, 0.99949813, 0.49327137],\
+[	-6.27342361, -0.00031119, 0.00019062, 7.27311242, 0.99904947, 0.99949818, 0.49327141],\
+[	-6.27342368, -0.00031116, 0.00019060, 7.27311252, 0.99904957, 0.99949824, 0.49327151],\
+[	-6.27342376, -0.00031113, 0.00019058, 7.27311263, 0.99904966, 0.99949829, 0.49327147],\
+[	-6.27342383, -0.00031110, 0.00019057, 7.27311273, 0.99904976, 0.99949834, 0.49327157],\
+[	-6.27342391, -0.00031107, 0.00019055, 7.27311284, 0.99904986, 0.99949839, 0.49327158],\
+[	-6.27342398, -0.00031104, 0.00019053, 7.27311295, 0.99904995, 0.99949844, 0.49327140],\
+[	-6.27342406, -0.00031101, 0.00019051, 7.27311305, 0.99905005, 0.99949849, 0.49327149],\
+[	-6.27342413, -0.00031097, 0.00019049, 7.27311316, 0.99905014, 0.99949854, 0.49327130],\
+[	-6.27342421, -0.00031094, 0.00019047, 7.27311326, 0.99905024, 0.99949859, 0.49327138],\
+[	-6.27342428, -0.00031091, 0.00019045, 7.27311337, 0.99905033, 0.99949864, 0.49327154],\
+[	-6.27342436, -0.00031088, 0.00019043, 7.27311348, 0.99905043, 0.99949869, 0.49327144],\
+[	-6.27342443, -0.00031085, 0.00019041, 7.27311358, 0.99905052, 0.99949874, 0.49327149],\
+[	-6.27342451, -0.00031082, 0.00019039, 7.27311369, 0.99905062, 0.99949879, 0.49327160],\
+[	-6.27342458, -0.00031079, 0.00019037, 7.27311379, 0.99905071, 0.99949884, 0.49327162],\
+[	-6.27342466, -0.00031076, 0.00019035, 7.27311390, 0.99905081, 0.99949889, 0.49327146],\
+[	-6.27342473, -0.00031072, 0.00019034, 7.27311401, 0.99905091, 0.99949894, 0.49327178],\
+[	-6.27342480, -0.00031069, 0.00019032, 7.27311411, 0.99905100, 0.99949899, 0.49327156],\
+[	-6.27342488, -0.00031066, 0.00019030, 7.27311422, 0.99905110, 0.99949904, 0.49327151],\
+[	-6.27342495, -0.00031063, 0.00019028, 7.27311432, 0.99905119, 0.99949909, 0.49327157],\
+[	-6.27342503, -0.00031060, 0.00019026, 7.27311443, 0.99905129, 0.99949914, 0.49327162],\
+[	-6.27342510, -0.00031057, 0.00019024, 7.27311453, 0.99905138, 0.99949919, 0.49327180],\
+[	-6.27342518, -0.00031054, 0.00019022, 7.27311464, 0.99905148, 0.99949924, 0.49327153],\
+[	-6.27342525, -0.00031051, 0.00019020, 7.27311475, 0.99905157, 0.99949929, 0.49327170],\
+[	-6.27342533, -0.00031047, 0.00019018, 7.27311485, 0.99905167, 0.99949934, 0.49327164],\
+[	-6.27342540, -0.00031044, 0.00019016, 7.27311496, 0.99905176, 0.99949939, 0.49327177],\
+[	-6.27342548, -0.00031041, 0.00019014, 7.27311506, 0.99905186, 0.99949944, 0.49327171],\
+[	-6.27342555, -0.00031038, 0.00019013, 7.27311517, 0.99905195, 0.99949949, 0.49327163],\
+[	-6.27342563, -0.00031035, 0.00019011, 7.27311527, 0.99905205, 0.99949954, 0.49327148],\
+[	-6.27342570, -0.00031032, 0.00019009, 7.27311538, 0.99905214, 0.99949959, 0.49327177],\
+[	-6.27342577, -0.00031029, 0.00019007, 7.27311549, 0.99905224, 0.99949964, 0.49327190],\
+[	-6.27342585, -0.00031026, 0.00019005, 7.27311559, 0.99905233, 0.99949969, 0.49327174],\
+[	-6.27342592, -0.00031023, 0.00019003, 7.27311570, 0.99905243, 0.99949974, 0.49327179],\
+[	-6.27342600, -0.00031019, 0.00019001, 7.27311580, 0.99905252, 0.99949979, 0.49327165],\
+[	-6.27342607, -0.00031016, 0.00018999, 7.27311591, 0.99905262, 0.99949984, 0.49327180],\
+[	-6.27342615, -0.00031013, 0.00018997, 7.27311601, 0.99905271, 0.99949989, 0.49327176],\
+[	-6.27342622, -0.00031010, 0.00018995, 7.27311612, 0.99905281, 0.99949994, 0.49327155],\
+[	-6.27342630, -0.00031007, 0.00018993, 7.27311622, 0.99905290, 0.99949999, 0.49327169],\
+[	-6.27342637, -0.00031004, 0.00018992, 7.27311633, 0.99905300, 0.99950004, 0.49327184],\
+[	-6.27342644, -0.00031001, 0.00018990, 7.27311644, 0.99905309, 0.99950009, 0.49327184],\
+[	-6.27342652, -0.00030998, 0.00018988, 7.27311654, 0.99905319, 0.99950014, 0.49327176],\
+[	-6.27342659, -0.00030995, 0.00018986, 7.27311665, 0.99905328, 0.99950019, 0.49327184],\
+[	-6.27342667, -0.00030992, 0.00018984, 7.27311675, 0.99905338, 0.99950024, 0.49327166],\
+[	-6.27342674, -0.00030988, 0.00018982, 7.27311686, 0.99905347, 0.99950029, 0.49327222],\
+[	-6.27342682, -0.00030985, 0.00018980, 7.27311696, 0.99905357, 0.99950034, 0.49327211],\
+[	-6.27342689, -0.00030982, 0.00018978, 7.27311707, 0.99905366, 0.99950039, 0.49327202],\
+[	-6.27342696, -0.00030979, 0.00018976, 7.27311717, 0.99905376, 0.99950044, 0.49327179],\
+[	-6.27342704, -0.00030976, 0.00018974, 7.27311728, 0.99905385, 0.99950049, 0.49327176],\
+[	-6.27342711, -0.00030973, 0.00018973, 7.27311738, 0.99905394, 0.99950054, 0.49327202],\
+[	-6.27342719, -0.00030970, 0.00018971, 7.27311749, 0.99905404, 0.99950059, 0.49327184],\
+[	-6.27342726, -0.00030967, 0.00018969, 7.27311759, 0.99905413, 0.99950064, 0.49327198],\
+[	-6.27342733, -0.00030964, 0.00018967, 7.27311770, 0.99905423, 0.99950069, 0.49327205],\
+[	-6.27342741, -0.00030961, 0.00018965, 7.27311780, 0.99905432, 0.99950074, 0.49327200],\
+[	-6.27342748, -0.00030957, 0.00018963, 7.27311791, 0.99905442, 0.99950079, 0.49327197],\
+[	-6.27342756, -0.00030954, 0.00018961, 7.27311801, 0.99905451, 0.99950084, 0.49327183],\
+[	-6.27342763, -0.00030951, 0.00018959, 7.27311812, 0.99905461, 0.99950089, 0.49327208],\
+[	-6.27342771, -0.00030948, 0.00018957, 7.27311822, 0.99905470, 0.99950094, 0.49327205],\
+[	-6.27342778, -0.00030945, 0.00018956, 7.27311833, 0.99905480, 0.99950099, 0.49327194]]);
+
+	if value=='h':
+		series=love_numbers[:,0];
+	elif value=='k':
+		series=love_numbers[:,1];
+	elif value=='l':
+		series=love_numbers[:,2];
+	elif value=='gamma':
+		series=love_numbers[:,3];
+	elif value=='lambda':
+		series=love_numbers[:,4];
+	else:
+		raise RuntimeError(['love_numbers error message: unknow value:', value])
+		
+	return series
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBcomponents.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBcomponents.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBcomponents.m	(revision 21239)
@@ -0,0 +1,98 @@
+%SMBcomponents Class definition
+%
+%   Usage:
+%      SMBcomponents=SMBcomponents();
+
+classdef SMBcomponents
+	properties (SetAccess=public) 
+		accumulation = NaN;
+		runoff = NaN;
+		evaporation = NaN;
+		requested_outputs      = {};
+	end
+	methods
+		function self = SMBcomponents(varargin) % {{{
+			switch nargin
+				case 0
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+			self.accumulation=project3d(md,'vector',self.accumulation,'type','node');
+			self.runoff=project3d(md,'vector',self.runoff,'type','node');
+			self.evaporation=project3d(md,'vector',self.evaporation,'type','node');
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+
+			list = {''};
+
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.accumulation)
+				self.accumulation=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.accumulation specified: values set as zero');
+			end
+			if isnan(self.evaporation)
+				self.evaporation=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.evaporation specified: values set as zero');
+			end
+			if isnan(self.runoff)
+				self.runoff=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.runoff specified: values set as zero');
+			end
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1,'Inf',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			end
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.runoff','timeseries',1,'NaN',1,'Inf',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.runoff','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			end
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1,'Inf',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters (SMB=accumulation-runoff-evaporation) :'));
+			fielddisplay(self,'accumulation','accumulated snow [m/yr ice eq]');
+			fielddisplay(self,'runoff','amount of ice melt lost from the ice column [m/yr ice eq]');
+			fielddisplay(self,'evaporation','amount of ice lost to evaporative processes [m/yr ice eq]');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',2,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBcomponents.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBcomponents.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBcomponents.py	(revision 21239)
@@ -0,0 +1,95 @@
+from fielddisplay import fielddisplay
+from checkfield import *
+from project3d import *
+from WriteData import *
+
+class SMBcomponents(object):
+	"""
+	SMBcomponents Class definition
+
+	   Usage:
+	      SMBcomponents=SMBcomponents();
+	"""
+
+	def __init__(self): # {{{
+		self.accumulation = float('NaN')
+		self.runoff = float('NaN')
+		self.evaporation = float('NaN')
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters (SMB=accumulation-runoff-evaporation) :"
+		string="%s\n%s"%(string,fielddisplay(self,'accumulation','accumulated snow [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'runoff','amount of ice melt lost from the ice column [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'evaporation','mount of ice lost to evaporative processes [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		self.mass_balance=project3d(md,'vector',self.accumulation,'type','node');
+		self.mass_balance=project3d(md,'vector',self.runoff,'type','node');
+		self.mass_balance=project3d(md,'vector',self.evaporation,'type','node');
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.accumulation)):
+			self.accumulation=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMB.accumulation specified: values set as zero"
+
+		if numpy.all(numpy.isnan(self.runoff)):
+			self.runoff=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMB.runoff specified: values set as zero"
+
+		if numpy.all(numpy.isnan(self.evaporation)):
+			self.evaporation=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMB.evaporation specified: values set as zero"
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if 'MasstransportAnalysis' in analyses:
+			md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1,'Inf',1)
+
+		if 'BalancethicknessAnalysis' in analyses:
+			md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		if 'MasstransportAnalysis' in analyses:
+			md = checkfield(md,'fieldname','smb.runoff','timeseries',1,'NaN',1,'Inf',1)
+
+		if 'BalancethicknessAnalysis' in analyses:
+			md = checkfield(md,'fieldname','smb.runoff','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		if 'MasstransportAnalysis' in analyses:
+			md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1,'Inf',1)
+
+		if 'BalancethicknessAnalysis' in analyses:
+			md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+		
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		yts=md.constants.yts
+
+		WriteData(fid,prefix,'name','md.smb.model','data',2,'format','Integer');
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray')
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBd18opdd.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBd18opdd.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBd18opdd.m	(revision 21239)
@@ -0,0 +1,138 @@
+%SMBd18opdd Class definition
+%
+%   Usage:
+%      SMBd18opdd=SMBd18opdd();
+
+classdef SMBd18opdd
+	properties (SetAccess=public) 
+		desfac                    = 0;
+		s0p                       = NaN;
+		s0t                       = NaN;
+		rlaps                     = 0;
+		rlapslgm                  = 0; 
+		dpermil                   = 0; 
+		Tdiff                     = NaN;
+		sealev                    = NaN;
+		ismungsm                  = 0;
+		isd18opd                  = 0;
+		delta18o                  = NaN;
+		delta18o_surface          = NaN;
+		temperatures_presentday   = NaN;
+		precipitations_presentday = NaN;
+		requested_outputs      = {};
+	end
+	methods
+		function self = SMBd18opdd(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			if(self.isd18opd),self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node');end
+			if(self.isd18opd),self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node');end
+			self.s0p=project3d(md,'vector',self.s0p,'type','node');
+			self.s0t=project3d(md,'vector',self.s0t,'type','node');
+
+		end % }}}
+			function list = defaultoutputs(self,md) % {{{
+
+			list = {''};
+
+		end % }}}
+		function self = initialize(self,md) % {{{
+                    
+			if isnan(self.s0p),
+			 	self.s0p=zeros(md.mesh.numberofvertices,1);
+			 	disp('      no SMBd18opdd.s0p specified: values set as zero');
+			end
+			if isnan(self.s0t),
+				self.s0t=zeros(md.mesh.numberofvertices,1);
+				disp('      no SMBd18opdd.s0t specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		  self.ismungsm   = 0;
+		  self.isd18opd   = 1;
+		  self.desfac     = 0.5;
+		  self.rlaps      = 6.5;
+		  self.rlapslgm   = 6.5;
+		  self.dpermil    = 2.4;
+                  
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',1);
+				md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',1);
+				if(self.isd18opd==1) 
+					md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.dpermil','>=',0,'numel',1);
+				end
+			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+
+			disp(sprintf('\n   PDD and deltaO18 parameters:'));
+			fielddisplay(self,'isd18opd','is delta18o parametrisation from present day temperature and precipitation activated (0 or 1, default is 0)');
+			fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]');
+			fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]');
+			fielddisplay(self,'s0t','should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]');
+			fielddisplay(self,'rlaps','present day lapse rate [degree/km]');
+			if(self.isd18opd==1) 
+				fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm/d18opd is activated');
+				fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o/mungsm/d18opd is activated');
+				fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and d18opd activated');  
+				fielddisplay(self,'dpermil','degree per mil, required if d18opd is activated');                            
+			end
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+			% No need to display rlapslgm, Tdiff, ismungsm
+			% as they are not used in this case but are still needed as default values in
+			% PositiveDegreeDay (Tria.cpp) used in that case
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',5,'format','Integer');
+
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','ismungsm','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isd18opd','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','desfac','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlaps','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlapslgm','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+
+			if self.isd18opd
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','dpermil','format','Double');
+			end
+			
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBd18opdd.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBd18opdd.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBd18opdd.py	(revision 21239)
@@ -0,0 +1,137 @@
+import numpy
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+from project3d import project3d
+
+class SMBd18opdd(object):
+	"""
+	SMBd18opdd Class definition
+
+	   Usage:
+	      SMBd18opdd=SMBd18opdd();
+	"""
+
+	def __init__(self): # {{{
+		self.desfac                    = 0.
+		self.s0p                       = float('NaN')
+		self.s0t                       = float('NaN')
+		self.rlaps                     = 0.
+		self.rlapslgm                  = 0.
+		self.dpermil                   = 0.
+		self.Tdiff                     = float('NaN')
+		self.sealev                    = float('NaN')
+		self.ismungsm                  = 0
+		self.isd18opd                  = 0
+		self.delta18o                  = float('NaN')
+		self.delta18o_surface          = float('NaN')
+		self.temperatures_presentday   = float('NaN')
+		self.precipitations_presentday = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,'isd18opd','is delta18o parametrisation from present day temperature and precipitation activated (0 or 1, default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'s0t','should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'rlaps','present day lapse rate [degree/km]'))
+		if self.isd18opd:
+			string="%s\n%s"%(string,fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated'))
+			string="%s\n%s"%(string,fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+			string="%s\n%s"%(string,fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and delta18o activated'))
+			string="%s\n%s"%(string,fielddisplay(self,'dpermil','degree per mil, required if d18opd is activated'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		if self.isd18opd: self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node')
+		if self.isd18opd: self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node')
+		self.s0p=project3d(md,'vector',self.s0p,'type','node')
+		self.s0t=project3d(md,'vector',self.s0t,'type','node')
+
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.s0p)):
+			self.s0p=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMBd18opdd.s0p specified: values set as zero"
+
+		if numpy.all(numpy.isnan(self.s0t)):
+			self.s0t=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMBd18opdd.s0t specified: values set as zero"
+			
+		return self
+	# }}}
+	def setdefaultparameters(self): # {{{
+
+		#pdd method not used in default mode
+		self.ismungsm   = 0
+		self.isd18opd   = 1
+		self.desfac     = 0.5
+		self.rlaps      = 6.5 
+		self.rlapslgm   = 6.5
+		self.dpermil    = 2.4
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if 'MasstransportAnalysis' in analyses:
+			md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',[1])
+			md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',[1])
+			md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',[1])
+
+			if self.isd18opd:
+				md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.dpermil','>=',0,'numel',[1])
+		
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		yts=md.constants.yts
+
+		WriteData(fid,prefix,'name','md.smb.model','data',5,'format','Integer')
+
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','ismungsm','format','Boolean')
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','isd18opd','format','Boolean')
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','desfac','format','Double')
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlaps','format','Double')
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlapslgm','format','Double')
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
+
+		if self.isd18opd:
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dpermil','format','Double')
+			
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray')
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBforcing.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBforcing.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBforcing.js	(revision 21239)
@@ -0,0 +1,72 @@
+//SMBforcing Class definition
+//
+//   Usage:
+//      SMB=SMBforcing();
+
+function SMBforcing(){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		this.requested_outputs=['default'];
+	} // }}}
+	this.disp = function(){ // {{{
+		console.log(sprintf('   surface forcings parameters:'));
+		fielddisplay(this,'mass_balance','surface mass balance [m/yr ice eq]');
+		fielddisplay(this,'requested_outputs','additional outputs requested');
+	} // }}}
+	this.defaultoutputs = function(){ // {{{
+		return '';
+	}//}}}
+    this.classname = function(){ // {{{
+        return "SMBforcing";
+    } // }}}
+    this.extrude = function(md) {//{{{
+        this.mass_balance=project3d(md,'vector',this.mass_balance,'type','node');
+        return this;
+    }//}}}
+    this.initialize = function(md) {// {{{
+
+        if (isNaN(this.mass_balance)){
+            this.mass_balance=NewArrayFill(md.mesh.numberofvertices,0);
+            console.log('      no smb.mass_balance specified: values set as zero');
+        }
+
+    } // }}}
+    this.checkconsistency = function(md,solution,analyses) { //{{{
+
+        if(ArrayAnyEqual(ArrayIsMember('MasstransportAnalysis',analyses),1)){
+            checkfield(md,'fieldname','smb.mass_balance','timeseries',1,'NaN',1,'Inf',1);
+        }
+        if(ArrayAnyEqual(ArrayIsMember('BalancethicknessAnalysis',analyses),1)){
+            checkfield(md,'fieldname','smb.mass_balance','size',[md.mesh.numberofvertices,1],'NaN',1,'Inf',1);
+        }
+        checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+
+    } // }}}
+    this.marshall=function(md,prefix,fid) { //{{{
+
+        var yts=md.constants.yts;
+
+        WriteData(fid,prefix,'name','md.smb.model','data',1,'format','Integer');
+        WriteData(fid,prefix,'object',this,'class','smb','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+
+        //process requested outputs
+        var outputs = this.requested_outputs.slice();
+        for (var i=0;i<outputs.length;i++){
+            if (outputs[i] == 'default') {
+                outputs.splice(i,1);
+                var newoutputs=this.defaultoutputs(md);
+                for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+            }
+        }
+        WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+    }//}}}
+    this.fix=function() { //{{{
+    }//}}}
+	//properties 
+    // {{{
+	this.mass_balance = NaN;
+	this.requested_outputs      = [];
+	this.setdefaultparameters();
+    // }}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBforcing.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBforcing.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBforcing.m	(revision 21239)
@@ -0,0 +1,89 @@
+%SMBforcing Class definition
+%
+%   Usage:
+%      SMB=SMBforcing();
+
+classdef SMBforcing
+	properties (SetAccess=public) 
+		mass_balance = NaN;
+		requested_outputs      = {};
+	end
+	methods
+		function self = SMBforcing(varargin) % {{{
+			switch nargin
+				case 0
+
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('SMBforcing');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+
+			list = {''};
+
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+			self.mass_balance=project3d(md,'vector',self.mass_balance,'type','node');
+
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.mass_balance)
+				self.mass_balance=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.mass_balance specified: values set as zero');
+			end
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if (strcmp(solution,'TransientSolution') & md.transient.issmb == 0), return; end
+			
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.mass_balance','timeseries',1,'NaN',1,'Inf',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.mass_balance','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+			fielddisplay(self,'mass_balance','surface mass balance [m/yr ice eq]');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.smb.mass_balance'],self.mass_balance);
+			writejscellstring(fid,[modelname '.smb.requested_outputs'],self.requested_outputs);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBforcing.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBforcing.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBforcing.py	(revision 21239)
@@ -0,0 +1,67 @@
+import numpy
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+from project3d import project3d
+
+class SMBforcing(object):
+	"""
+	SMBforcing Class definition
+
+	   Usage:
+	      SMB=SMBforcing();
+	"""
+
+	def __init__(self): # {{{
+		self.mass_balance = float('NaN')
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters:"
+		string="%s\n%s"%(string,fielddisplay(self,'mass_balance','surface mass balance [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		self.mass_balance=project3d(md,'vector',self.mass_balance,'type','node');
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.mass_balance)):
+			self.mass_balance=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMBforcing.mass_balance specified: values set as zero"
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if 'MasstransportAnalysis' in analyses:
+			md = checkfield(md,'fieldname','smb.mass_balance','timeseries',1,'NaN',1,'Inf',1)
+
+		if 'BalancethicknessAnalysis' in analyses:
+			md = checkfield(md,'fieldname','smb.mass_balance','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		yts=md.constants.yts
+
+		WriteData(fid,prefix,'name','md.smb.model','data',1,'format','Integer');
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray')
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBgemb.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBgemb.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBgemb.m	(revision 21239)
@@ -0,0 +1,376 @@
+%SMBgemb Class definition. 
+%   This is the class that hosts all the inputs for the Alberta Glacier Surface Mass Balance Model 
+%   Alex Gardner, University of Alberta.
+%   
+%   Usage:
+%      SMBgemb=SMBgemb();
+
+classdef SMBgemb
+	properties (SetAccess=public)  
+	% {{{
+		%each one of these properties is a transient forcing to the GEMB model, loaded from meteorological data derived 
+		%from an automatic weather stations (AWS). Each property is therefore a matrix, of size (numberofvertices x number 
+		%of time steps. )
+
+		%solution choices
+		isgraingrowth;
+		isalbedo;
+		isshortwave;
+		isthermal;
+		isaccumulation;
+		ismelt;
+		isdensification;
+		isturbulentflux;    
+
+		%inputs: 
+		Ta    = NaN; %2 m air temperature, in Kelvin
+		V     = NaN; %wind speed (m/s-1)
+		dswrf = NaN; %downward shortwave radiation flux [W/m^2]
+		dlwrf = NaN; %downward longwave radiation flux [W/m^2]
+		P     = NaN; %precipitation [mm w.e. / m^2]
+		eAir  = NaN; %screen level vapor pressure [Pa]
+		pAir  = NaN; %surface pressure [Pa]
+		
+		Tmean = NaN; %mean annual temperature [K]
+		C     = NaN; %mean annual snow accumulation [kg m-2 yr-1]
+		Tz    = NaN; %height above ground at which temperature (T) was sampled [m]
+		Vz    = NaN; %height above ground at which wind (V) eas sampled [m]
+        
+		% Initialization of snow properties
+		Dzini = NaN; %cell depth (m)
+		Dini = NaN; %snow density (kg m-3)
+		Reini = NaN; %effective grain size (mm)
+		Gdnini = NaN; %grain dendricity (0-1)
+		Gspini = NaN; %grain sphericity (0-1)
+		ECini = NaN; %evaporation/condensation (kg m-2)
+		Wini = NaN; %Water content (kg m-2)
+		Aini = NaN; %albedo (0-1)
+		Tini = NaN; %snow temperature (K)
+		Sizeini = NaN; %Number of layers
+
+		%settings: 
+		aIdx   = NaN; %method for calculating albedo and subsurface absorption (default is 1)
+		              % 1: effective grain radius [Gardner & Sharp, 2009]
+					  % 2: effective grain radius [Brun et al., 2009]
+					  % 3: density and cloud amount [Greuell & Konzelmann, 1994]
+					  % 4: exponential time decay & wetness [Bougamont & Bamber, 2005]
+		swIdx  = NaN; % apply all SW to top grid cell (0) or allow SW to penetrate surface (1) (default 1)
+
+		denIdx = NaN; %densification model to use (default is 2):
+					% 1 = emperical model of Herron and Langway (1980)
+					% 2 = semi-emerical model of Anthern et al. (2010)
+					% 3 = DO NOT USE: physical model from Appendix B of Anthern et al. (2010)
+					% 4 = DO NOT USE: emperical model of Li and Zwally (2004)
+					% 5 = DO NOT USE: modified emperical model (4) by Helsen et al. (2008)
+
+		zTop  = NaN; % depth over which grid length is constant at the top of the snopack (default 10) [m]
+		dzTop = NaN; % initial top vertical grid spacing (default .05) [m] 
+		dzMin = NaN; % initial min vertical allowable grid spacing (default dzMin/2) [m] 
+		zY    = NaN; % strech grid cells bellow top_z by a [top_dz * y ^ (cells bellow top_z)]
+		zMax = NaN; %initial max model depth (default is min(thickness,500)) [m]
+		zMin = NaN; %initial min model depth (default is min(thickness,30)) [m]
+		outputFreq = NaN; %output frequency in days (default is monthly, 30)
+
+		%specific albedo parameters: 
+		%Method 1 and 2: 
+		aSnow = NaN; % new snow albedo (0.64 - 0.89)
+		aIce  = NaN; % range 0.27-0.58 for old snow
+		%Method 3: Radiation Correction Factors -> only used for met station data and Greuell & Konzelmann, 1994 albedo
+		cldFrac = NaN; % average cloud amount
+		%Method 4: additonal tuning parameters albedo as a funtion of age and water content (Bougamont et al., 2005)
+		t0wet = NaN; % time scale for wet snow (15-21.9) 
+		t0dry = NaN; % warm snow timescale (30) 
+		K     = NaN; % time scale temperature coef. (7) 
+
+		%densities:
+		InitDensityScaling= NaN; %initial scaling factor multiplying the density of ice, which describes the density of the snowpack.
+		
+		requested_outputs      = {};
+
+		%Several fields are missing from the standard GEMB model, which are capture intrinsically by ISSM. 
+		%dateN: that's the last row of the above fields. 
+		%dt:    included in dateN. Not an input.  
+		%elev:  this is taken from the ISSM surface itself.
+
+	end % }}}
+	methods
+		function self = SMBgemb(varargin) % {{{
+			switch nargin
+				case 2
+					mesh=varargin{1}; 
+					geometry=varargin{2}; 
+					self=setdefaultparameters(self,mesh,geometry);
+				otherwise
+					error('constructor not supported: need geometry and mesh to set defaults');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+			self.Ta=project3d(md,'vector',self.Ta,'type','node');
+			self.V=project3d(md,'vector',self.V,'type','node');
+			self.dswrf=project3d(md,'vector',self.dswrf,'type','node');
+			self.dswrf=project3d(md,'vector',self.dswrf,'type','node');
+			self.P=project3d(md,'vector',self.P,'type','node');
+			self.eAir=project3d(md,'vector',self.eAir,'type','node');
+			self.pAir=project3d(md,'vector',self.pAir,'type','node');
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'SmbMassBalance'};
+		end % }}}
+		function self = setdefaultparameters(self,mesh,geometry) % {{{
+
+		self.isgraingrowth=1;
+		self.isalbedo=1;
+		self.isshortwave=1;
+		self.isthermal=1;
+		self.isaccumulation=1;
+		self.ismelt=1;
+		self.isdensification=1;
+		self.isturbulentflux=1;
+	
+		self.aIdx = 1;
+		self.swIdx = 1;
+		self.denIdx = 2;
+		self.zTop=10*ones(mesh.numberofelements,1);
+		self.dzTop = .05* ones (mesh.numberofelements,1);
+		self.dzMin = self.dzTop/2;
+		self.InitDensityScaling = 1.0;
+		
+		self.zMax=250*ones(mesh.numberofelements,1);
+		self.zMin=130*ones(mesh.numberofelements,1);
+		self.zY = 1.10*ones(mesh.numberofelements,1);
+		self.outputFreq = 30;
+		
+		%additional albedo parameters
+		self.aSnow = 0.85;
+		self.aIce = 0.48;
+		self.cldFrac = 0.1; 
+		self.t0wet = 15;
+		self.t0dry = 30;
+		self.K = 7;
+        
+		self.Dzini=0.05*ones(mesh.numberofelements,2);
+		self.Dini=910.0*ones(mesh.numberofelements,2); 
+		self.Reini=2.5*ones(mesh.numberofelements,2);
+		self.Gdnini=0.0*ones(mesh.numberofelements,2);
+		self.Gspini=0.0*ones(mesh.numberofelements,2);
+		self.ECini=0.0*ones(mesh.numberofelements,1);
+		self.Wini=0.0*ones(mesh.numberofelements,2);
+		self.Aini=self.aSnow*ones(mesh.numberofelements,2); 
+		self.Tini=273.15*ones(mesh.numberofelements,2); 
+% 		/!\ Default value of Tini must be equal to Tmean but don't know Tmean yet (computed when atmospheric forcings are interpolated on mesh). 
+% 		If initialization without restart, this value will be overwritten when snow parameters are retrieved in Element.cpp 
+		self.Sizeini=2*ones(mesh.numberofelements,1);
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+
+			md = checkfield(md,'fieldname','smb.isgraingrowth','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isalbedo','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isshortwave','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isthermal','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isaccumulation','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.ismelt','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isdensification','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isturbulentflux','values',[0 1]);
+
+			md = checkfield(md,'fieldname','smb.Ta','timeseries',1,'NaN',1,'Inf',1,'>',273-100,'<',273+100); %-100/100 celsius min/max value
+			md = checkfield(md,'fieldname','smb.V','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<',45); %max 500 km/h
+			md = checkfield(md,'fieldname','smb.dswrf','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<=',1400);
+			md = checkfield(md,'fieldname','smb.dlwrf','timeseries',1,'NaN',1,'Inf',1,'>=',0);
+			md = checkfield(md,'fieldname','smb.P','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<=',100);
+			md = checkfield(md,'fieldname','smb.eAir','timeseries',1,'NaN',1,'Inf',1);
+
+			md = checkfield(md,'fieldname','smb.Tmean','size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1,'>',273-100,'<',273+100); %-100/100 celsius min/max value
+			md = checkfield(md,'fieldname','smb.C','size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1,'>=',0); 
+			md = checkfield(md,'fieldname','smb.Tz','size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1,'>=',0,'<=',5000); 
+			md = checkfield(md,'fieldname','smb.Vz','size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1,'>=',0,'<=',5000); 
+
+			md = checkfield(md,'fieldname','smb.aIdx','NaN',1,'Inf',1,'values',[1,2,3,4]);
+			md = checkfield(md,'fieldname','smb.swIdx','NaN',1,'Inf',1,'values',[0,1]);
+			md = checkfield(md,'fieldname','smb.denIdx','NaN',1,'Inf',1,'values',[1,2,3,4,5]);
+
+			md = checkfield(md,'fieldname','smb.zTop','NaN',1,'Inf',1,'>=',0);
+			md = checkfield(md,'fieldname','smb.dzTop','NaN',1,'Inf',1,'>',0);
+			md = checkfield(md,'fieldname','smb.dzMin','NaN',1,'Inf',1,'>',0);
+			md = checkfield(md,'fieldname','smb.zY','NaN',1,'Inf',1,'>=',1);
+			md = checkfield(md,'fieldname','smb.outputFreq','NaN',1,'Inf',1,'>',0,'<',10*365); %10 years max 
+			md = checkfield(md,'fieldname','smb.InitDensityScaling','NaN',1,'Inf',1,'>=',0,'<=',1);
+
+			switch self.aIdx,
+				case {1 2}
+					md = checkfield(md,'fieldname','smb.aSnow','NaN',1,'Inf',1,'>=',.64,'<=',.89);
+					md = checkfield(md,'fieldname','smb.aIce','NaN',1,'Inf',1,'>=',.27,'<=',.58);
+				case 3
+					md = checkfield(md,'fieldname','smb.cldFrac','NaN',1,'Inf',1,'>=',0,'<=',1);
+				case 4
+					md = checkfield(md,'fieldname','smb.t0wet','NaN',1,'Inf',1,'>=',15,'<=',21.9);
+					md = checkfield(md,'fieldname','smb.t0dry','NaN',1,'Inf',1,'>=',30,'<=',30);
+					md = checkfield(md,'fieldname','smb.K','NaN',1,'Inf',1,'>=',7,'<=',7);
+			end
+
+			%check zTop is < local thickness:
+			he=sum(md.geometry.thickness(md.mesh.elements),2)/size(md.mesh.elements,2);
+			if any(he<self.zTop),
+				error('SMBgemb consistency check error: zTop should be smaller than local ice thickness');
+			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+
+		end % }}}
+		function disp(self) % {{{
+			
+			disp(sprintf('   surface forcings for SMB GEMB model :'));
+			
+			fielddisplay(self,'isgraingrowth','run grain growth module (default true)');
+			fielddisplay(self,'isalbedo','run albedo module (default true)');
+			fielddisplay(self,'isshortwave','run short wave module (default true)');
+			fielddisplay(self,'isthermal','run thermal module (default true)');
+			fielddisplay(self,'isaccumulation','run accumulation module (default true)');
+			fielddisplay(self,'ismelt','run melting  module (default true)');
+			fielddisplay(self,'isdensification','run densification module (default true)');
+			fielddisplay(self,'isturbulentflux','run turbulant heat fluxes module (default true)');
+			fielddisplay(self,'Ta','2 m air temperature, in Kelvin');
+			fielddisplay(self,'V','wind speed (m/s-1)');
+			fielddisplay(self,'dlwrf','downward shortwave radiation flux [W/m^2]');
+			fielddisplay(self,'dswrf','downward longwave radiation flux [W/m^2]');
+			fielddisplay(self,'P','precipitation [mm w.e. / m^2]');
+			fielddisplay(self,'eAir','screen level vapor pressure [Pa]');
+			fielddisplay(self,'pAir','surface pressure [Pa]');
+			fielddisplay(self,'Tmean','mean annual temperature [K]');
+			fielddisplay(self,'C','mean annual snow accumulation [kg m-2 yr-1]');
+			fielddisplay(self,'Tz','height above ground at which temperature (T) was sampled [m]');
+			fielddisplay(self,'Vz','height above ground at which wind (V) eas sampled [m]');
+			fielddisplay(self,'zTop','depth over which grid length is constant at the top of the snopack (default 10) [m]');
+			fielddisplay(self,'dzTop','initial top vertical grid spacing (default .05) [m] ');
+			fielddisplay(self,'dzMin','initial min vertical allowable grid spacing (default dzMin/2) [m] ');
+			fielddisplay(self,'zMax','initial max model depth (default is min(thickness,500)) [m]');
+			fielddisplay(self,'zMin','initial min model depth (default is min(thickness,30)) [m]');
+			fielddisplay(self,'zY','strech grid cells bellow top_z by a [top_dz * y ^ (cells bellow top_z)]');
+			fielddisplay(self,'InitDensityScaling',{'initial scaling factor multiplying the density of ice','which describes the density of the snowpack.'});
+			fielddisplay(self,'outputFreq','output frequency in days (default is monthly, 30)');
+			fielddisplay(self,'aIdx',{'method for calculating albedo and subsurface absorption (default is 1)',...
+									'1: effective grain radius [Gardner & Sharp, 2009]',...
+									'2: effective grain radius [Brun et al., 2009]',...
+									'3: density and cloud amount [Greuell & Konzelmann, 1994]',...
+									'4: exponential time decay & wetness [Bougamont & Bamber, 2005]'});
+                                
+			%snow properties init
+			fielddisplay(self,'Dzini','Initial cel depth when restart [m]');
+			fielddisplay(self,'Dini','Initial snow density when restart [kg m-3]');
+			fielddisplay(self,'Reini','Initial grain size when restart [mm]');
+			fielddisplay(self,'Gdnini','Initial grain dendricity when restart [-]');
+			fielddisplay(self,'Gspini','Initial grain sphericity when restart [-]');
+			fielddisplay(self,'ECini','Initial evaporation/condensation when restart [kg m-2]');
+			fielddisplay(self,'Wini','Initial snow water content when restart [kg m-2]');
+			fielddisplay(self,'Aini','Initial albedo when restart [-]');
+			fielddisplay(self,'Tini','Initial snow temperature when restart [K]');
+			fielddisplay(self,'Sizeini','Initial number of layers when restart [K]');
+            
+            
+			%additional albedo parameters: 
+			switch self.aIdx
+			case {1 2}
+				fielddisplay(self,'aSnow','new snow albedo (0.64 - 0.89)');
+				fielddisplay(self,'aIce','albedo of ice (0.27-0.58)');
+			case 3
+				fielddisplay(self,'cldFrac','average cloud amount');
+			case 4
+				fielddisplay(self,'t0wet','time scale for wet snow (15-21.9) [d]');
+				fielddisplay(self,'t0dry','warm snow timescale (30) [d]');
+				fielddisplay(self,'K','time scale temperature coef. (7) [d]');
+			end
+
+			fielddisplay(self,'swIdx','apply all SW to top grid cell (0) or allow SW to penetrate surface (1) [default 1]');
+			fielddisplay(self,'denIdx',{'densification model to use (default is 2):',...
+									'1 = emperical model of Herron and Langway (1980)',...
+									'2 = semi-emerical model of Anthern et al. (2010)',...
+									'3 = DO NOT USE: physical model from Appendix B of Anthern et al. (2010)',...
+									'4 = DO NOT USE: emperical model of Li and Zwally (2004)',...
+									'5 = DO NOT USE: modified emperical model (4) by Helsen et al. (2008)'});
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+									
+			
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',8,'format','Integer');
+			
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isgraingrowth','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isalbedo','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isshortwave','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isthermal','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isaccumulation','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','ismelt','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isdensification','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isturbulentflux','format','Boolean');
+            
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Ta','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','V','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dswrf','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dlwrf','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','P','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','eAir','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','pAir','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);         
+
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tmean','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','C','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tz','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Vz','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','zTop','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dzTop','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dzMin','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','zY','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','zMax','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','zMin','format','DoubleMat','mattype',2);
+		
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','aIdx','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','swIdx','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','denIdx','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','InitDensityScaling','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','outputFreq','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','aSnow','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','aIce','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','cldFrac','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','t0wet','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','t0dry','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','K','format','Double');
+            
+			%snow properties init
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Dzini','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Dini','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Reini','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Gdnini','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Gspini','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','ECini','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Wini','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Aini','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tini','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Sizeini','format','IntMat','mattype',2);
+
+			%figure out dt from forcings: 
+			time=self.Ta(end,:); %assume all forcings are on the same time step
+			dtime=diff(time,1);
+			dt=min(dtime);
+            
+			WriteData(fid,prefix,'data',dt,'name','md.smb.dt','format','Double','scale',yts);
+            
+			% Check if smb_dt goes evenly into transient core time step
+			if (mod(md.timestepping.time_step,dt) >= 1e-10)
+                error('smb_dt/dt = %f. The number of SMB time steps in one transient core time step has to be an an integer',md.timestepping.time_step/dt);
+			end
+			
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBgradients.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBgradients.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBgradients.m	(revision 21239)
@@ -0,0 +1,83 @@
+%SMBgradients Class definition
+%
+%   Usage:
+%      SMBgradients=SMBgradients();
+
+classdef SMBgradients
+	properties (SetAccess=public) 
+		href   = NaN;
+		smbref = NaN;
+		b_pos  = NaN;
+		b_neg  = NaN;
+		requested_outputs      = {};
+	end
+	methods
+		function self = SMBgradients(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+			%Nothing for now
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {''};
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			%Nothing done for now
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Nothing for now
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.href','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.smbref','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.b_pos','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.b_neg','timeseries',1,'NaN',1,'Inf',1);
+			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+
+			disp(sprintf('\n   SMB gradients parameters:'));
+			fielddisplay(self,'href',' reference elevation from which deviation is used to calculate SMB adjustment in smb gradients method [m]');
+			fielddisplay(self,'smbref',' reference smb from which deviation is calculated in smb gradients method [mm/yr water equiv]');
+			fielddisplay(self,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated');
+			fielddisplay(self,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',6,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','href','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBgradients.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBgradients.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBgradients.py	(revision 21239)
@@ -0,0 +1,76 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+from project3d import project3d
+
+class SMBgradients(object):
+	"""
+	SMBgradients Class definition
+
+	   Usage:
+	      SMBgradients=SMBgradients();
+	"""
+
+	def __init__(self): # {{{
+		self.href    = float('NaN')
+		self.smbref  = float('NaN')
+		self.b_pos   = float('NaN')
+		self.b_neg   = float('NaN')
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,'issmbgradients','is smb gradients method activated (0 or 1, default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'href',' reference elevation from which deviation is used to calculate SMB adjustment in smb gradients method'))
+		string="%s\n%s"%(string,fielddisplay(self,'smbref',' reference smb from which deviation is calculated in smb gradients method'))
+		string="%s\n%s"%(string,fielddisplay(self,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated'))
+		string="%s\n%s"%(string,fielddisplay(self,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		#Nothing for now
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		#Nothing for now
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if 'MasstransportAnalysis' in analyses:
+			md = checkfield(md,'fieldname','smb.href','timeseries',1,'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','smb.smbref','timeseries',1,'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','smb.b_pos','timeseries',1,'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','smb.b_neg','timeseries',1,'NaN',1,'Inf',1)
+
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		yts=md.constants.yts
+
+		WriteData(fid,prefix,'name','md.smb.model','data',6,'format','Integer');
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','href','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray')
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBhenning.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBhenning.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBhenning.m	(revision 21239)
@@ -0,0 +1,78 @@
+%SMBhenning Class definition
+%
+%   Usage:
+%      SMBhenning=SMBhenning();
+
+classdef SMBhenning
+	properties (SetAccess=public) 
+		smbref = NaN;
+		requested_outputs      = {};
+	end
+	methods
+		function self = SMBhenning(varargin) % {{{
+			switch nargin
+				case 0
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('SMBhenning');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+			self.smbref=project3d(md,'vector',self.smbref,'type','node');
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {''};
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.smbref)
+				self.smbref=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.smbref specified: values set as zero');
+			end
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.smbref','timeseries',1,'NaN',1,'Inf',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.smbref','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+			fielddisplay(self,'smbref','reference smb from which deviation is calculated [m/yr ice eq]');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',7,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBmeltcomponents.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBmeltcomponents.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBmeltcomponents.m	(revision 21239)
@@ -0,0 +1,110 @@
+%SMBmeltcomponents Class definition
+%
+%   Usage:
+%      SMBmeltcomponents=SMBmeltcomponents();
+
+classdef SMBmeltcomponents
+	properties (SetAccess=public) 
+		accumulation = NaN;
+		evaporation = NaN;
+		melt = NaN;
+		refreeze = NaN;
+		requested_outputs      = {};
+	end
+	methods
+		function self = SMBmeltcomponents(varargin) % {{{
+			switch nargin
+				case 0
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+			self.accumulation=project3d(md,'vector',self.accumulation,'type','node');
+			self.evaporation=project3d(md,'vector',self.evaporation,'type','node');
+			self.melt=project3d(md,'vector',self.melt,'type','node');
+			self.refreeze=project3d(md,'vector',self.refreeze,'type','node');
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {''};
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.accumulation)
+				self.accumulation=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.accumulation specified: values set as zero');
+			end
+			if isnan(self.evaporation)
+				self.evaporation=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.evaporation specified: values set as zero');
+			end
+			if isnan(self.refreeze)
+				self.refreeze=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.refreeze specified: values set as zero');
+			end
+			if isnan(self.melt)
+				self.melt=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.melt specified: values set as zero');
+			end
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1,'Inf',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			end
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1,'Inf',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			end
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.refreeze','timeseries',1,'NaN',1,'Inf',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.refreeze','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			end
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.melt','timeseries',1,'NaN',1,'Inf',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.melt','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters with melt (SMB=accumulation-evaporation-melt+refreeze) :'));
+			fielddisplay(self,'accumulation','accumulated snow [m/yr ice eq]');
+			fielddisplay(self,'evaporation','amount of ice lost to evaporative processes [m/yr ice eq]');
+			fielddisplay(self,'melt','amount of ice melt in ice column [m/yr ice eq]');
+			fielddisplay(self,'refreeze','amount of ice melt refrozen in ice column [m/yr ice eq]');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',3,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','melt','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','refreeze','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBmeltcomponents.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBmeltcomponents.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBmeltcomponents.py	(revision 21239)
@@ -0,0 +1,107 @@
+from fielddisplay import fielddisplay
+from checkfield import *
+from project3d import *
+from WriteData import *
+
+class SMBmeltcomponents(object):
+	"""
+	SMBmeltcomponents Class definition
+
+	   Usage:
+	      SMBmeltcomponents=SMBmeltcomponents();
+	"""
+
+	def __init__(self): # {{{
+		self.accumulation = float('NaN')
+		self.runoff = float('NaN')
+		self.evaporation = float('NaN')
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters with melt (SMB=accumulation-evaporation-melt+refreeze) :"
+		string="%s\n%s"%(string,fielddisplay(self,'accumulation','accumulated snow [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'evaporation','mount of ice lost to evaporative processes [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'melt','amount of ice melt in the ice column [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'refreeze','amount of ice melt refrozen in the ice column [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		self.mass_balance=project3d(md,'vector',self.accumulation,'type','node');
+		self.mass_balance=project3d(md,'vector',self.evaporation,'type','node');
+		self.mass_balance=project3d(md,'vector',self.melt,'type','node');
+		self.mass_balance=project3d(md,'vector',self.refreeze,'type','node');
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.accumulation)):
+			self.accumulation=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMB.accumulation specified: values set as zero"
+
+		if numpy.all(numpy.isnan(self.evaporation)):
+			self.evaporation=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMB.evaporation specified: values set as zero"
+
+		if numpy.all(numpy.isnan(self.melt)):
+			self.melt=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMB.melt specified: values set as zero"
+
+		if numpy.all(numpy.isnan(self.refreeze)):
+			self.refreeze=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMB.refreeze specified: values set as zero"
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if 'MasstransportAnalysis' in analyses:
+			md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1,'Inf',1)
+
+		if 'BalancethicknessAnalysis' in analyses:
+			md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		if 'MasstransportAnalysis' in analyses:
+			md = checkfield(md,'fieldname','smb.melt','timeseries',1,'NaN',1,'Inf',1)
+
+		if 'BalancethicknessAnalysis' in analyses:
+			md = checkfield(md,'fieldname','smb.melt','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		if 'MasstransportAnalysis' in analyses:
+			md = checkfield(md,'fieldname','smb.refreeze','timeseries',1,'NaN',1,'Inf',1)
+
+		if 'BalancethicknessAnalysis' in analyses:
+			md = checkfield(md,'fieldname','smb.refreeze','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		if 'MasstransportAnalysis' in analyses:
+			md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1,'Inf',1)
+
+		if 'BalancethicknessAnalysis' in analyses:
+			md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		yts=md.constants.yts
+
+		WriteData(fid,prefix,'name','md.smb.model','data',3,'format','Integer');
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','melt','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','refreeze','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray')
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBpdd.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBpdd.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBpdd.m	(revision 21239)
@@ -0,0 +1,191 @@
+%SMBpdd Class definition
+%
+%   Usage:
+%      SMBpdd=SMBpdd();
+
+classdef SMBpdd
+	properties (SetAccess=public) 
+		precipitation             = NaN;
+		monthlytemperatures       = NaN;
+		desfac                    = 0;
+		s0p                       = NaN;
+		s0t                       = NaN;
+		rlaps                     = 0;
+		rlapslgm                  = 0; 
+		Pfac                      = NaN;
+		Tdiff                     = NaN;
+		sealev                    = NaN;
+		isdelta18o                = 0;
+		ismungsm                  = 0;
+		delta18o                  = NaN;
+		delta18o_surface          = NaN;
+		temperatures_presentday   = NaN;
+		temperatures_lgm          = NaN;
+		precipitations_presentday = NaN;
+		precipitations_lgm        = NaN;
+		requested_outputs      = {};
+	end
+	methods
+		function self = SMBpdd(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			if(self.isdelta18o==0 & self.ismungsm==0),self.precipitation=project3d(md,'vector',self.precipitation,'type','node');end
+			if(self.isdelta18o==0 & self.ismungsm==0),self.monthlytemperatures=project3d(md,'vector',self.monthlytemperatures,'type','node');end
+			if(self.isdelta18o),self.temperatures_lgm=project3d(md,'vector',self.temperatures_lgm,'type','node');end
+			if(self.isdelta18o),self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node');end
+			if(self.isdelta18o),self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node');end
+			if(self.isdelta18o),self.precipitations_lgm=project3d(md,'vector',self.precipitations_lgm,'type','node');end
+			if(self.ismungsm),self.temperatures_lgm=project3d(md,'vector',self.temperatures_lgm,'type','node');end
+			if(self.ismungsm),self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node');end
+			if(self.ismungsm),self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node');end
+			if(self.ismungsm),self.precipitations_lgm=project3d(md,'vector',self.precipitations_lgm,'type','node');end
+			self.s0p=project3d(md,'vector',self.s0p,'type','node');
+			self.s0t=project3d(md,'vector',self.s0t,'type','node');
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {''};
+		end % }}}
+		function self = initialize(self,md) % {{{
+                    
+			if isnan(self.s0p),
+				self.s0p=zeros(md.mesh.numberofvertices,1);
+				disp('      no SMBpdd.s0p specified: values set as zero');
+			end
+			if isnan(self.s0t),
+				self.s0t=zeros(md.mesh.numberofvertices,1);
+				disp('      no SMBpdd.s0t specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		  self.isdelta18o = 0;
+		  self.ismungsm   = 0;
+		  self.desfac     = 0.5;
+		  self.rlaps      = 6.5;
+		  self.rlapslgm   = 6.5;
+                  
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',1);
+				md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',1);
+				if(self.isdelta18o==0 & self.ismungsm==0)
+					md = checkfield(md,'fieldname','smb.monthlytemperatures','timeseries',1,'NaN',1,'Inf',1);
+					md = checkfield(md,'fieldname','smb.precipitation','timeseries',1,'NaN',1,'Inf',1);
+				elseif(self.isdelta18o==1) 
+					md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.delta18o_surface','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);                                       
+					md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.sealev','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+				elseif(self.ismungsm==1) 
+					md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);                                       
+					md = checkfield(md,'fieldname','smb.Pfac','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.sealev','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+				end
+			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+			
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+
+			disp(sprintf('\n   PDD and deltaO18 parameters:'));
+			fielddisplay(self,'isdelta18o','is temperature and precipitation delta18o parametrisation activated (0 or 1, default is 0)');
+			fielddisplay(self,'ismungsm','is temperature and precipitation mungsm parametrisation activated (0 or 1, default is 0)');
+			fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]');
+			fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]');
+			fielddisplay(self,'s0t','should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]');
+			fielddisplay(self,'rlaps','present day lapse rate [degree/km]');
+			fielddisplay(self,'rlapslgm','LGM lapse rate [degree/km]');
+			if(self.isdelta18o==0 & self.ismungsm==0)
+				fielddisplay(self,'monthlytemperatures',['monthly surface temperatures [K], required if pdd is activated and delta18o not activated']);
+				fielddisplay(self,'precipitation',['monthly surface precipitation [m/yr water eq], required if pdd is activated and delta18o or mungsm not activated']);
+			elseif(self.isdelta18o==1)
+				fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and delta18o activated');
+				fielddisplay(self,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated');
+				fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated');
+				fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated');
+				fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o/mungsm is activated');
+				fielddisplay(self,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o/mungsm is activated');
+				fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated');
+				fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated');
+			elseif(self.ismungsm==1)
+				fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated');
+				fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated');
+				fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o/mungsm is activated');
+				fielddisplay(self,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o/mungsm is activated');
+				fielddisplay(self,'Pfac','time interpolation parameter for precipitation, 1D(year), required if mungsm is activated');
+				fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated');
+				fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated');
+			end
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',4,'format','Integer');
+
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isdelta18o','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','ismungsm','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','desfac','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlaps','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlapslgm','format','Double');
+
+			if(self.isdelta18o==0 & self.ismungsm==0)
+				%WriteData(fid,prefix,'object',self,'class','smb','fieldname','monthlytemperatures','format','DoubleMat','mattype',1);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			elseif self.isdelta18o
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','delta18o_surface','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+			elseif self.ismungsm
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','Pfac','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+			end
+			
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBpdd.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBpdd.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/SMBpdd.py	(revision 21239)
@@ -0,0 +1,193 @@
+import numpy
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+from project3d import project3d
+
+class SMBpdd(object):
+	"""
+	SMBpdd Class definition
+
+	   Usage:
+	      SMBpdd=SMBpdd();
+	"""
+
+	def __init__(self): # {{{
+		self.precipitation             = float('NaN')
+		self.monthlytemperatures       = float('NaN')
+		self.desfac                    = 0.
+		self.s0p                       = float('NaN')
+		self.s0t                       = float('NaN')
+		self.rlaps                     = 0.
+		self.rlapslgm                  = 0.
+		self.Pfac                      = float('NaN')
+		self.Tdiff                     = float('NaN')
+		self.sealev                    = float('NaN')
+		self.isdelta18o                = 0
+		self.ismungsm                  = 0
+		self.delta18o                  = float('NaN')
+		self.delta18o_surface          = float('NaN')
+		self.temperatures_presentday   = float('NaN')
+		self.temperatures_lgm          = float('NaN')
+		self.precipitations_presentday = float('NaN')
+		self.precipitations_lgm        = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,'isdelta18o','is temperature and precipitation delta18o parametrisation activated (0 or 1, default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'ismungsm','is temperature and precipitation mungsm parametrisation activated (0 or 1, default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'s0t','should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'rlaps','present day lapse rate [degree/km]'))
+		string="%s\n%s"%(string,fielddisplay(self,'rlapslgm','LGM lapse rate [degree/km]'))
+		if not (self.isdelta18o and self.ismungsm):
+			string="%s\n%s"%(string,fielddisplay(self,'monthlytemperatures',['monthly surface temperatures [K], required if pdd is activated and delta18o not activated']))
+			string="%s\n%s"%(string,fielddisplay(self,'precipitation',['monthly surface precipitation [m/yr water eq], required if pdd is activated and delta18o or mungsm not activated']))
+			if self.isdelta18o:
+				string="%s\n%s"%(string,fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and delta18o activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated'))
+			if self.ismungsm:
+				string="%s\n%s"%(string,fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'Pfac','time interpolation parameter for precipitation, 1D(year), required if mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+				
+		return string
+	# }}}
+	def extrude(self,md): # {{{
+
+		if not (self.isdelta18o and self.ismungsm):
+			self.precipitation=project3d(md,'vector',self.precipitation,'type','node')
+			self.monthlytemperatures=project3d(md,'vector',self.monthlytemperatures,'type','node')
+		if self.isdelta18o: self.temperatures_lgm=project3d(md,'vector',self.temperatures_lgm,'type','node')
+		if self.isdelta18o: self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node')
+		if self.isdelta18o: self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node')
+		if self.isdelta18o: self.precipitations_lgm=project3d(md,'vector',self.precipitations_lgm,'type','node')
+		if self.ismungsm: self.temperatures_lgm=project3d(md,'vector',self.temperatures_lgm,'type','node')
+		if self.ismungsm: self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node')
+		if self.ismungsm: self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node')
+		if self.ismungsm: self.precipitations_lgm=project3d(md,'vector',self.precipitations_lgm,'type','node')
+		self.s0p=project3d(md,'vector',self.s0p,'type','node')
+		self.s0t=project3d(md,'vector',self.s0t,'type','node')
+
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.s0p)):
+			self.s0p=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMBpdd.s0p specified: values set as zero"
+
+		if numpy.all(numpy.isnan(self.s0t)):
+			self.s0t=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMBpdd.s0t specified: values set as zero"
+
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		#pdd method not used in default mode
+		self.isdelta18o = 0
+		self.ismungsm   = 0
+		self.desfac     = 0.5
+		self.rlaps      = 6.5 
+		self.rlapslgm   = 6.5
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if 'MasstransportAnalysis' in analyses:
+			md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',[1])
+			md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',[1])
+			md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',[1])
+
+			if (self.isdelta18o==0 and self.ismungsm==0):
+				md = checkfield(md,'fieldname','smb.monthlytemperatures','NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitation','NaN',1,'Inf',1,'timeseries',1)
+			elif self.isdelta18o:
+				md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.delta18o_surface','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)                                       
+				md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.sealev','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+			elif self.ismungsm:
+				md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)                                       
+				md = checkfield(md,'fieldname','smb.Pfac','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.sealev','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+		return md
+	#}}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		yts=md.constants.yts
+
+		WriteData(fid,prefix,'name','md.smb.model','data',4,'format','Integer')
+
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','isdelta18o','format','Boolean')
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','ismungsm','format','Boolean')
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','desfac','format','Double')
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlaps','format','Double')
+		WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlapslgm','format','Double')
+
+		if (self.isdelta18o==0 and self.ismungsm==0):
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		elif self.isdelta18o:
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','delta18o_surface','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)			
+		elif self.ismungsm:
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Pfac','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
+			
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray')
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/adinversion.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/adinversion.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/adinversion.m	(revision 21239)
@@ -0,0 +1,188 @@
+%ADINVERSION class definition
+%
+%   Usage:
+%      adinversion=adinversion();
+
+classdef adinversion
+	properties (SetAccess=public) 
+		iscontrol                   = 0
+		control_parameters          = NaN
+		control_scaling_factors     = NaN
+		maxsteps                    = 0
+		maxiter                     = 0
+		dxmin                       = 0
+		gttol                       = 0
+		cost_functions              = NaN
+		cost_functions_coefficients = NaN
+		min_parameters              = NaN
+		max_parameters              = NaN
+		vx_obs                      = NaN
+		vy_obs                      = NaN
+		vz_obs                      = NaN
+		vel_obs                     = NaN
+		thickness_obs               = NaN
+		surface_obs                 = NaN
+
+	end
+	methods
+		function self = adinversion(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(adinversion(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%parameter to be inferred by control methods (only
+			%drag and B are supported yet)
+			self.control_parameters={'FrictionCoefficient'};
+
+			%Scaling factor for each control
+			self.control_scaling_factors=1;
+
+			%number of iterations
+			self.maxsteps=20;
+			self.maxiter=40;
+
+			%several responses can be used:
+			self.cost_functions={'FrictionCoefficient'};
+
+			%m1qn3 parameters
+			self.dxmin  = 0.1;
+			self.gttol = 1e-4;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~self.iscontrol, return; end
+
+			if ~IssmConfig('_HAVE_M1QN3_'),
+				md = checkmessage(md,['M1QN3 has not been installed, ISSM needs to be reconfigured and recompiled with AD']);
+			end
+
+			num_controls=numel(md.inversion.control_parameters);
+			num_costfunc=size(md.inversion.cost_functions,2);
+
+			md = checkfield(md,'fieldname','inversion.iscontrol','values',[0 1]);
+			md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',...
+				{'BalancethicknessThickeningRate' 'FrictionCoefficient' 'MaterialsRheologyBbar' 'DamageDbar',...
+				'Vx' 'Vy' 'Thickness' 'BalancethicknessOmega' 'BalancethicknessApparentMassbalance'});
+			md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[1 num_controls],'>',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.maxiter','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.dxmin','numel',1,'>',0);
+			md = checkfield(md,'fieldname','inversion.gttol','numel',1,'>',0);
+			md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values',[101:105 201 501:506 601:604 1001:1010]);
+			md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0);
+			md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices num_controls]);
+			md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices num_controls]);
+
+			if strcmp(solution,'BalancethicknessSolution')
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','inversion.surface_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			elseif strcmp(solution,'BalancethicknessSoftSolution')
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			else
+				md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				if ~strcmp(domaintype(md.mesh),'2Dvertical'),
+					md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				end
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   adinversion parameters:'));
+			fielddisplay(self,'iscontrol','is inversion activated?');
+			fielddisplay(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
+			fielddisplay(self,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)');
+			fielddisplay(self,'maxsteps','maximum number of iterations (gradient computation)');
+			fielddisplay(self,'maxiter','maximum number of Function evaluation (forward run)');
+			fielddisplay(self,'dxmin','convergence criterion: two points less than dxmin from eachother (sup-norm) are considered identical');
+			fielddisplay(self,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)');
+			fielddisplay(self,'cost_functions','indicate the type of response for each optimization step');
+			fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
+			fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'vx_obs','observed velocity x component [m/yr]');
+			fielddisplay(self,'vy_obs','observed velocity y component [m/yr]');
+			fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]');
+			fielddisplay(self,'thickness_obs','observed thickness [m]');
+			fielddisplay(self,'surface_obs','observed surface elevation [m]');
+			
+			disp('Available cost functions:');
+			disp('   101: SurfaceAbsVelMisfit');
+			disp('   102: SurfaceRelVelMisfit');
+			disp('   103: SurfaceLogVelMisfit');
+			disp('   104: SurfaceLogVxVyMisfit');
+			disp('   105: SurfaceAverageVelMisfit');
+			disp('   201: ThicknessAbsMisfit');
+			disp('   501: DragCoefficientAbsGradient');
+			disp('   502: RheologyBbarAbsGradient');
+			disp('   503: ThicknessAbsGradient');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean');
+			WriteData(fid,prefix,'name','md.inversion.type','data',4,'format','Integer');
+			if ~self.iscontrol, return; end
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxsteps','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','dxmin','format','Double');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','gttol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			if(numel(self.thickness_obs)==md.mesh.numberofelements),
+				mattype=2;
+			else
+				mattype=1;
+			end
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
+
+			%process control parameters
+			num_control_parameters=numel(self.control_parameters);
+			WriteData(fid,prefix,'object',self,'fieldname','control_parameters','format','StringArray');
+			WriteData(fid,prefix,'data',num_control_parameters,'name','md.inversion.num_control_parameters','format','Integer');
+
+			%process cost functions
+			num_cost_functions=size(self.cost_functions,2);
+			data=self.cost_functions;
+			pos=find(self.cost_functions==101); data(pos)={'SurfaceAbsVelMisfit'};
+			pos=find(self.cost_functions==102); data(pos)={'SurfaceRelVelMisfit'};
+			pos=find(self.cost_functions==103); data(pos)={'SurfaceLogVelMisfit'};
+			pos=find(self.cost_functions==104); data(pos)={'SurfaceLogVxVyMisfit'};
+			pos=find(self.cost_functions==105); data(pos)={'SurfaceAverageVelMisfit'};
+			pos=find(self.cost_functions==201); data(pos)={'ThicknessAbsMisfit'};
+			pos=find(self.cost_functions==501); data(pos)={'DragCoefficientAbsGradient'};
+			pos=find(self.cost_functions==502); data(pos)={'RheologyBbarAbsGradient'};
+			pos=find(self.cost_functions==503); data(pos)={'ThicknessAbsGradient'};
+			pos=find(self.cost_functions==504); data(pos)={'ThicknessAlongGradient'};
+			pos=find(self.cost_functions==505); data(pos)={'ThicknessAcrossGradient'};
+			pos=find(self.cost_functions==506); data(pos)={'BalancethicknessMisfit'};
+			pos=find(self.cost_functions==601); data(pos)={'SurfaceAbsMisfit'};
+			pos=find(self.cost_functions==1001); data(pos)={'Outputdefinition1'};
+			pos=find(self.cost_functions==1002); data(pos)={'Outputdefinition2'};
+			pos=find(self.cost_functions==1003); data(pos)={'Outputdefinition3'};
+			pos=find(self.cost_functions==1004); data(pos)={'Outputdefinition4'};
+			pos=find(self.cost_functions==1005); data(pos)={'Outputdefinition5'};
+			pos=find(self.cost_functions==1006); data(pos)={'Outputdefinition6'};
+			pos=find(self.cost_functions==1007); data(pos)={'Outputdefinition7'};
+			pos=find(self.cost_functions==1008); data(pos)={'Outputdefinition8'};
+			pos=find(self.cost_functions==1009); data(pos)={'Outputdefinition8'};
+			pos=find(self.cost_functions==1010); data(pos)={'Outputdefinition10'};
+			WriteData(fid,prefix,'data',data,'name','md.inversion.cost_functions','format','StringArray');
+			WriteData(fid,prefix,'data',num_cost_functions,'name','md.inversion.num_cost_functions','format','Integer');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/adinversion.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/adinversion.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/adinversion.py	(revision 21239)
@@ -0,0 +1,198 @@
+"""
+== == == == == == == == == == == == == == == == == == ==
+Auto generated python script for ISSM:   /home/andrei/issm/trunk-jpl/src/m/classes/adinversion.m
+Created on 2015-05-15 via translateToPy.py Ver 1.0 by andrei
+== == == == == == == == == == == == == == == == == == ==
+
+Matlab script conversion into python
+translateToPy.py Author: Michael Pellegrin
+translateToPy.py Date: 09/24/12
+== == == == == == == == == == == == == == == == == == ==
+"""
+
+from MatlabFuncs import *
+from numpy import *
+
+# ADINVERSION class definition
+
+# 
+
+#    Usage:
+
+#       adinversion=adinversion();
+
+
+
+class adinversion:
+	def __init__(self): 
+		iscontrol                   = 0
+		control_parameters          = float('Nan')
+		control_scaling_factors     = float('Nan')
+		maxsteps                    = 0
+		maxiter                     = 0
+		dxmin                       = 0
+		gttol                       = 0
+		cost_functions              = float('Nan')
+		cost_functions_coefficients = float('Nan')
+		min_parameters              = float('Nan')
+		max_parameters              = float('Nan')
+		vx_obs                      = float('Nan')
+		vy_obs                      = float('Nan')
+		vz_obs                      = float('Nan')
+		vel_obs                     = float('Nan')
+		thickness_obs               = float('Nan')
+		surface_obs                 = float('Nan')
+
+	def setdefaultparameters(self):
+
+		self.control_parameters=['FrictionCoefficient']
+
+
+# 		Scaling factor for each control
+		self.control_scaling_factors=1
+
+# 		number of iterations
+		self.maxsteps=20
+		self.maxiter=40
+
+#		several responses can be used:
+		self.cost_functions=['FrictionCoefficient']
+
+# 		m1qn3 parameters
+		self.dxmin  = 0.1
+		self.gttol = 1e-4
+
+		return self
+	
+	def checkconsistency(self, md, solution, analyses): 
+
+# 			Early return
+		if not self.iscontrol:
+			return
+
+		if not IssmConfig('_HAVE_M1QN3_')[0]:
+			md = checkmessage(md,['M1QN3 has not been installed, ISSM needs to be reconfigured and recompiled with AD'])
+
+
+		num_controls=numpy.numel(md.inversion.control_parameters)
+		num_costfunc=numpy.size(md.inversion.cost_functions,2)
+
+
+		md = checkfield(md,'fieldname','inversion.iscontrol','values',[0, 1])
+		md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',\
+			['BalancethicknessThickeningRate' 'FrictionCoefficient' 'MaterialsRheologyBbar' 'DamageDbar',\
+			'Vx' 'Vy' 'Thickness' 'BalancethicknessOmega' 'BalancethicknessApparentMassbalance'])
+		md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[1, num_controls],'>',0,float('Nan'),1)
+		md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.maxiter','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.dxmin','numel',1,'>',0)
+		md = checkfield(md,'fieldname','inversion.gttol','numel',1,'>',0)
+		md = checkfield(md,'fieldname','inversion.cost_functions','size',[1, num_costfunc],'values', [i for i in range(101,106)]+[201]+[i for i in range(501,507)]+[i for i in range(601,605)]+[i for i in range(1001, 1011)])
+		md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices, num_costfunc],'>=',0)
+		md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices, num_controls])
+		md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices, num_controls])
+
+
+		if solution=='BalancethicknessSolution':
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)
+			md = checkfield(md,'fieldname','inversion.surface_obs','size',[md.mesh.numberofvertices, 1], float('Nan'),1)
+		elif solution=='BalancethicknessSoftSolution':
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)
+		else:
+			md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)
+			if not numpy.strcmp(domaintype(md.mesh),'2Dvertical'):
+				md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)
+		return md
+
+	def __repr__(self):
+		string = '   adinversion parameters:'
+		string ="%s\n\%s"%(string, fielddisplay(self,'iscontrol','is inversion activated?'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'control_parameters','ex: [''FrictionCoefficient''], or [''MaterialsRheologyBbar'']'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'maxsteps','maximum number of iterations (gradient computation)'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'maxiter','maximum number of Function evaluation (forward run)'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'dxmin','convergence criterion: two points less than dxmin from eachother (sup-norm) are considered identical'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'cost_functions','indicate the type of response for each optimization step'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'vx_obs','observed velocity x component [m/yr]'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'vy_obs','observed velocity y component [m/yr]'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'thickness_obs','observed thickness [m]'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'surface_obs','observed surface elevation [m]'))
+		string ="%s\n%s"%(string,'Available cost functions:');
+		string ="%s\n%s"%(string,'   101: SurfaceAbsVelMisfit');
+		string ="%s\n%s"%(string,'   102: SurfaceRelVelMisfit');
+		string ="%s\n%s"%(string,'   103: SurfaceLogVelMisfit');
+		string ="%s\n%s"%(string,'   104: SurfaceLogVxVyMisfit');
+		string ="%s\n%s"%(string,'   105: SurfaceAverageVelMisfit');
+		string ="%s\n%s"%(string,'   201: ThicknessAbsMisfit');
+		string ="%s\n%s"%(string,'   501: DragCoefficientAbsGradient');
+		string ="%s\n%s"%(string,'   502: RheologyBbarAbsGradient');
+		string ="%s\n%s"%(string,'   503: ThicknessAbsGradient');
+		
+		return string
+
+	def marshall(self):
+
+		yts=md.constants.yts;
+
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean');
+		WriteData(fid,prefix,'name','md.inversion.type','data',4,'format','Integer');
+		if not self.iscontrol:
+			return
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3);
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxsteps','format','Integer');
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxiter','format','Integer');
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','dxmin','format','Double');
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','gttol','format','Double');
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+		if(numel(self.thickness_obs)==md.mesh.numberofelements):
+			mattype=2;
+		else:
+			mattype=1;
+		
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
+
+		#process control parameters
+		num_control_parameters = numpy.numel(self.control_parameters);
+		WriteData(fid,prefix,'object',self,'fieldname','control_parameters','format','StringArray');
+		WriteData(fid,prefix,'data',num_control_parameters,'name','md.inversion.num_control_parameters','format','Integer');
+
+		#process cost functions
+		num_cost_functions=numpy.size(self.cost_functions,2);
+		data=copy.deepcopy(self.cost_functions)
+		data[numpy.nonzero(self.cost_functions==101)] =['SurfaceAbsVelMisfit'];
+		data[numpy.nonzero(self.cost_functions==102)]=['SurfaceRelVelMisfit'];
+		data[numpy.nonzero(self.cost_functions==103)]=['SurfaceLogVelMisfit'];
+		data[numpy.nonzero(self.cost_functions==104)]=['SurfaceLogVxVyMisfit'];
+		data[numpy.nonzero(self.cost_functions==105)]=['SurfaceAverageVelMisfit'];
+		data[numpy.nonzero(self.cost_functions==201)]=['ThicknessAbsMisfit'];
+		data[numpy.nonzero(self.cost_functions==501)]=['DragCoefficientAbsGradient'];
+		data[numpy.nonzero(self.cost_functions==502)]=['RheologyBbarAbsGradient'];
+		data[numpy.nonzero(self.cost_functions==503)]=['ThicknessAbsGradient'];
+		data[numpy.nonzero(self.cost_functions==504)]=['ThicknessAlongGradient'];
+		data[numpy.nonzero(self.cost_functions==505)]=['ThicknessAcrossGradient'];
+		data[numpy.nonzero(self.cost_functions==506)]=['BalancethicknessMisfit'];
+		data[numpy.nonzero(self.cost_functions==601)]=['SurfaceAbsMisfit'];
+		data[numpy.nonzero(self.cost_functions==1001)]=['Outputdefinition1'];
+		data[numpy.nonzero(self.cost_functions==1002)]=['Outputdefinition2'];
+		data[numpy.nonzero(self.cost_functions==1003)]=['Outputdefinition3'];
+		data[numpy.nonzero(self.cost_functions==1004)]=['Outputdefinition4'];
+		data[numpy.nonzero(self.cost_functions==1005)]=['Outputdefinition5'];
+		data[numpy.nonzero(self.cost_functions==1006)]=['Outputdefinition6'];
+		data[numpy.nonzero(self.cost_functions==1007)]=['Outputdefinition7'];
+		data[numpy.nonzero(self.cost_functions==1008)]=['Outputdefinition8'];
+		data[numpy.nonzero(self.cost_functions==1009)]=['Outputdefinition8'];
+		data[numpy.nonzero(self.cost_functions==1010)]=['Outputdefinition10'];
+		WriteData(fid,prefix,'data',data,'name','md.inversion.cost_functions','format','StringArray');
+		WriteData(fid,prefix,'data',num_cost_functions,'name','md.inversion.num_cost_functions','format','Integer');
+		
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/autodiff.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/autodiff.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/autodiff.js	(revision 21239)
@@ -0,0 +1,234 @@
+//AUTODIFF class definition
+//
+//   Usage:
+//      autodiff=new autodiff();
+
+function autodiff (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		this.obufsize     = 524288;
+		this.lbufsize     = 524288;
+		this.cbufsize     = 524288;
+		this.tbufsize     = 524288;
+		this.gcTriggerRatio=2.0;
+		this.gcTriggerMaxSize=65536;
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   automatic differentiation parameters:'));
+		fielddisplay(this,'isautodiff','indicates if the automatic differentiation is activated');
+		fielddisplay(this,'dependents','list of dependent variables');
+		fielddisplay(this,'independents','list of independent variables');
+		fielddisplay(this,'driver',"ADOLC driver ('fos_forward' or 'fov_forward')");
+		fielddisplay(this,'obufsize','Number of operations per buffer (==OBUFSIZE in usrparms.h)');
+		fielddisplay(this,'lbufsize','Number of locations per buffer (==LBUFSIZE in usrparms.h)');
+		fielddisplay(this,'cbufsize','Number of values per buffer (==CBUFSIZE in usrparms.h)');
+		fielddisplay(this,'tbufsize','Number of taylors per buffer (<=TBUFSIZE in usrparms.h)');
+		fielddisplay(this,'gcTriggerRatio','free location block sorting/consolidation triggered if the ratio between allocated and used locations exceeds gcTriggerRatio');
+		fielddisplay(this,'gcTriggerMaxSize','free location block sorting/consolidation triggered if the allocated locations exceed gcTriggerMaxSize');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "autodiff";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			//Early return 
+			if (!this.isautodiff) return; 
+
+			//Driver value:
+			checkfield(md,'fieldname','autodiff.driver','values',['fos_forward','fov_forward','fov_forward_all','fos_reverse','fov_reverse','fov_reverse_all']);
+			
+			//buffer values: 
+			checkfield(md,'fieldname','autodiff.obufsize','>=',16);
+			checkfield(md,'fieldname','autodiff.lbufsize','>=',16);
+			checkfield(md,'fieldname','autodiff.cbufsize','>=',16);
+			checkfield(md,'fieldname','autodiff.tbufsize','>=',16);
+			checkfield(md,'fieldname','autodiff.gcTriggerRatio','>=',0);
+			checkfield(md,'fieldname','autodiff.gcTriggerMaxSize','>=',65536);
+
+			//go through our dependents and independents and check consistency: 
+			for (var i=0;i<this.dependents.length;i++){
+				dep=this.dependents[i];
+				dep.checkconsistency(md,solution,analyses);
+			}
+			for (var i=0;i<this.independents.length;i++){
+				indep=this.independents[i];
+				indep.checkconsistency(md,i,solution,analyses,this.driver);
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			WriteData(fid,prefix,'object',this,'fieldname','isautodiff','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','driver','format','String');
+
+			//early return
+			if (!this.isautodiff){
+				WriteData(fid,prefix,'data',false,'name','md.autodiff.mass_flux_segments_present','format','Boolean');
+				WriteData(fid,prefix,'data',false,'name','md.autodiff.keep','format','Boolean');
+				return;
+			}
+
+			//buffer sizes {{{
+			WriteData(fid,prefix,'object',this,'fieldname','obufsize','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','lbufsize','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','cbufsize','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','tbufsize','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','gcTriggerRatio','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','gcTriggerMaxSize','format','Double');
+			//}}}
+			//process dependent variables {{{
+			num_dependent_objects=this.dependents.length;
+			WriteData(fid,prefix,'data',num_dependent_objects,'name','md.autodiff.num_dependent_objects','format','Integer');
+
+			if(num_dependent_objects){
+				var names=[];
+				types=NewArrayFill(num_dependent_objects,0);
+				indices=NewArrayFill(num_dependent_objects,0);
+
+				for (var i=0;i<num_dependent_objects;i++){
+					dep=this.dependents[i];
+
+					names.push(dep.name);
+					types[i]=dep.typetoscalar();
+					indices[i]=dep.index;
+				}
+				WriteData(fid,prefix,'data',names,'name','md.autodiff.dependent_object_names','format','StringArray');
+				WriteData(fid,prefix,'data',types,'name','md.autodiff.dependent_object_types','format','IntMat','mattype',3);
+				WriteData(fid,prefix,'data',indices,'name','md.autodiff.dependent_object_indices','format','IntMat','mattype',3);
+			}
+			//}}}
+			//process independent variables {{{
+			num_independent_objects=this.independents.length;
+			WriteData(fid,prefix,'data',num_independent_objects,'name','md.autodiff.num_independent_objects','format','Integer');
+
+			if(num_independent_objects){
+				names=NewArrayFill(num_independent_objects,0);
+				types=NewArrayFill(num_independent_objects,0);
+
+				for (var i=0;i<num_independent_objects;i++){
+					indep=this.independents[i];
+
+					names[i]=indep.name;
+					types[i]=indep.typetoscalar();
+				}
+				WriteData(fid,prefix,'data',names,'name','md.autodiff.independent_object_names','format','StringArray');
+				WriteData(fid,prefix,'data',types,'name','md.autodiff.independent_object_types','format','IntMat','mattype',3);
+			}
+			//}}}
+			//if driver is fos_forward, build index:  {{{
+			if (this.driver == 'fos_forward'){
+				var index=0;
+
+				for (var i=0;i<num_independent_objects;i++){
+					indep=this.independents[i];
+					if (!(isNaN(indep.fos_forward_index))){
+						index=index+indep.fos_forward_index;
+						break;
+					}
+					else{
+						if (indep.type=='scalar') index=index+1;
+						else index=index+indep.nods;
+					}
+				}
+				index=index-1; //get c-index numbering going
+				WriteData(fid,prefix,'data',index,'name','md.autodiff.fos_forward_index','format','Integer');
+			}
+			//}}}
+			//if driver is fos_reverse, build index:  {{{
+			if (this.driver  == 'fos_reverse'){
+				var index=0;
+
+				for (var i=0;i<num_dependent_objects;i++){
+					dep=this.dependents[i];
+					if (!(isNaN(dep.fos_reverse_index))){
+						index=index+dep.fos_reverse_index;
+						break;
+					}
+					else{
+						if (dep.type =='scalar') index=index+1;
+						else index=index+dep.nods;
+					}
+				}
+				index=index-1; //get c-index numbering going
+				WriteData(fid,prefix,'data',index,'name','md.autodiff.fos_reverse_index','format','Integer');
+			}
+			//}}}
+			//if driver is fov_forward, build indices:  {{{
+			if (this.driver == 'fov_forward'){
+				var indices=0;
+
+				for (var i=0;i<num_independent_objects;i++){
+					indep=this.independents[i];
+					if (!indep.fos_forward_index.length){
+						indices=indices+indep.fov_forward_indices;
+						break;
+					}
+					else{
+						if (indep.type =='scalar') indices=indices+1;
+						else indices=indices+indep.nods;
+					}
+				}
+				indices=indices-1; //get c-indices numbering going
+				WriteData(fid,prefix,'data',indices,'name','md.autodiff.fov_forward_indices','format','IntMat','mattype',3);
+			}
+			//}}}
+			//deal with mass fluxes:  {{{
+			mass_flux_segments=[];
+			for (var i=0;i<num_dependent_objects;i++){
+				dep=this.dependents[i];
+				if (dep.name =='MassFlux'){
+					mass_flux_segments.push(dep.segments);
+				}
+			}
+			if (mass_flux_segments.length){
+				WriteData(fid,prefix,'data',mass_flux_segments,'name','md.autodiff.mass_flux_segments','format','MatArray');
+				flag=true;
+			}
+			else flag=false;
+			WriteData(fid,prefix,'data',flag,'name','md.autodiff.mass_flux_segments_present','format','Boolean');
+			//}}}
+			//deal with trace keep on: {{{
+			keep=false;
+
+			//From ADOLC userdoc: 
+			// The optional integer argument keep of trace on determines whether the numerical values of all active variables are 
+			// recorded in a buffered temporary array or file called the taylor stack. This option takes effect if keep = 1 and 
+			// prepares the scene for an immediately following gradient evaluation by a call to a routine implementing the reverse 
+			// mode as described in the Section 4 and Section 5. 
+			//
+
+			if (this.driver.length<=3) keep=false; //there is no "_reverse" string within the driver string: 
+			else{
+				if (this.driver.splice(4) == '_reverse') keep=true;
+				else keep=false;
+			}
+			WriteData(fid,prefix,'data',keep,'name','md.autodiff.keep','format','Boolean');
+			//}}}
+		}//}}}
+		this.fix=function() { //{{{
+			this.obufsize=NullFix(this.obufsize,NaN);
+			this.lbufsize=NullFix(this.lbufsize,NaN);
+			this.cbufsize=NullFix(this.cbufsize,NaN);
+			this.tbufsize=NullFix(this.tbufsize,NaN);
+			this.gcTriggerRatio=NullFix(this.gcTriggerRatio,NaN);
+			this.gcTriggerMaxSize=NullFix(this.gcTriggerMaxSize,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.isautodiff   = false;
+	this.dependents   = [];
+	this.independents = [];
+	this.driver       = 'fos_forward';
+	this.obufsize     = NaN;
+	this.lbufsize     = NaN;
+	this.cbufsize     = NaN;
+	this.tbufsize     = NaN;
+	this.gcTriggerRatio = NaN;
+	this.gcTriggerMaxSize = NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/autodiff.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/autodiff.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/autodiff.m	(revision 21239)
@@ -0,0 +1,246 @@
+%AUTODIFF class definition
+%
+%   Usage:
+%      autodiff=autodiff();
+
+classdef autodiff
+	properties (SetAccess=public)  
+		% {{{ 
+		isautodiff   = false;
+		dependents   = {};
+		independents = {};
+		driver       = 'fos_forward';
+		obufsize     = NaN;
+		lbufsize     = NaN;
+		cbufsize     = NaN;
+		tbufsize     = NaN;
+		gcTriggerRatio = NaN;
+		gcTriggerMaxSize = NaN;
+		end
+		%}}}
+	methods
+		function self = autodiff(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		self.obufsize     = 524288;
+		self.lbufsize     = 524288;
+		self.cbufsize     = 524288;
+		self.tbufsize     = 524288;
+		self.gcTriggerRatio=2.0;
+		self.gcTriggerMaxSize=65536;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return 
+			if ~self.isautodiff, return; end
+
+			%Driver value:
+			md = checkfield(md,'fieldname','autodiff.driver','values',{'fos_forward','fov_forward','fov_forward_all','fos_reverse','fov_reverse','fov_reverse_all'});
+			
+			%buffer values: 
+			md = checkfield(md,'fieldname','autodiff.obufsize','>=',16);
+			md = checkfield(md,'fieldname','autodiff.lbufsize','>=',16);
+			md = checkfield(md,'fieldname','autodiff.cbufsize','>=',16);
+			md = checkfield(md,'fieldname','autodiff.tbufsize','>=',16);
+			md = checkfield(md,'fieldname','autodiff.gcTriggerRatio','>=',0);
+			md = checkfield(md,'fieldname','autodiff.gcTriggerMaxSize','>=',65536);
+
+			%go through our dependents and independents and check consistency: 
+			for i=1:numel(self.dependents),
+				dep=self.dependents{i};
+				md=checkconsistency(dep,md,solution,analyses);
+			end
+			for i=1:numel(self.independents),
+				indep=self.independents{i};
+				md=checkconsistency(indep,md,i,solution,analyses,self.driver);
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   automatic differentiation parameters:'));
+			fielddisplay(self,'isautodiff','indicates if the automatic differentiation is activated');
+			fielddisplay(self,'dependents','list of dependent variables');
+			fielddisplay(self,'independents','list of independent variables');
+			fielddisplay(self,'driver','ADOLC driver (''fos_forward'' or ''fov_forward'')');
+			fielddisplay(self,'obufsize','Number of operations per buffer (==OBUFSIZE in usrparms.h)');
+			fielddisplay(self,'lbufsize','Number of locations per buffer (==LBUFSIZE in usrparms.h)');
+			fielddisplay(self,'cbufsize','Number of values per buffer (==CBUFSIZE in usrparms.h)');
+			fielddisplay(self,'tbufsize','Number of taylors per buffer (<=TBUFSIZE in usrparms.h)');
+			fielddisplay(self,'gcTriggerRatio','free location block sorting/consolidation triggered if the ratio between allocated and used locations exceeds gcTriggerRatio');
+			fielddisplay(self,'gcTriggerMaxSize','free location block sorting/consolidation triggered if the allocated locations exceed gcTriggerMaxSize');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'object',self,'fieldname','isautodiff','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','driver','format','String');
+
+			%early return
+			if ~self.isautodiff,
+				WriteData(fid,prefix,'data',false,'name','md.autodiff.mass_flux_segments_present','format','Boolean');
+				WriteData(fid,prefix,'data',false,'name','md.autodiff.keep','format','Boolean');
+				return;
+			end
+
+			%buffer sizes {{{
+			WriteData(fid,prefix,'object',self,'fieldname','obufsize','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','lbufsize','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','cbufsize','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','tbufsize','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','gcTriggerRatio','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','gcTriggerMaxSize','format','Double');
+			%}}}
+			%process dependent variables {{{
+			num_dependent_objects=numel(self.dependents);
+			WriteData(fid,prefix,'data',num_dependent_objects,'name','md.autodiff.num_dependent_objects','format','Integer');
+
+			if(num_dependent_objects),
+				names={};
+				types=zeros(num_dependent_objects,1);
+				indices=zeros(num_dependent_objects,1);
+
+				for i=1:num_dependent_objects,
+					dep=self.dependents{i};
+
+					names{i}=dep.name;
+					types(i)=dep.typetoscalar();
+					indices(i)=dep.index;
+				end
+				WriteData(fid,prefix,'data',names,'name','md.autodiff.dependent_object_names','format','StringArray');
+				WriteData(fid,prefix,'data',types,'name','md.autodiff.dependent_object_types','format','IntMat','mattype',3);
+				WriteData(fid,prefix,'data',indices,'name','md.autodiff.dependent_object_indices','format','IntMat','mattype',3);
+			end
+			%}}}
+			%process independent variables {{{
+			num_independent_objects=numel(self.independents);
+			WriteData(fid,prefix,'data',num_independent_objects,'name','md.autodiff.num_independent_objects','format','Integer');
+
+			if(num_independent_objects),
+				names=cell(num_independent_objects,1);
+				types=zeros(num_independent_objects,1);
+
+				for i=1:num_independent_objects,
+					indep=self.independents{i};
+
+					names{i}=indep.name;
+					types(i)=indep.typetoscalar();
+				end
+				WriteData(fid,prefix,'data',names,'name','md.autodiff.independent_object_names','format','StringArray');
+				WriteData(fid,prefix,'data',types,'name','md.autodiff.independent_object_types','format','IntMat','mattype',3);
+			end
+			%}}}
+			%if driver is fos_forward, build index:  {{{
+			if strcmpi(self.driver,'fos_forward'),
+				index=0;
+
+				for i=1:num_independent_objects,
+					indep=self.independents{i};
+					if ~isnan(indep.fos_forward_index),
+						index=index+indep.fos_forward_index;
+						break;
+					else
+						if strcmpi(indep.type,'scalar'),
+							index=index+1;
+						else
+							index=index+indep.nods;
+						end
+					end
+				end
+				index=index-1; %get c-index numbering going
+				WriteData(fid,prefix,'data',index,'name','md.autodiff.fos_forward_index','format','Integer');
+			end
+			%}}}
+			%if driver is fos_reverse, build index:  {{{
+			if strcmpi(self.driver,'fos_reverse'),
+				index=0;
+
+				for i=1:num_dependent_objects,
+					dep=self.dependents{i};
+					if ~isnan(dep.fos_reverse_index),
+						index=index+dep.fos_reverse_index;
+						break;
+					else
+						if strcmpi(dep.type,'scalar'),
+							index=index+1;
+						else
+							index=index+dep.nods;
+						end
+					end
+				end
+				index=index-1; %get c-index numbering going
+				WriteData(fid,prefix,'data',index,'name','md.autodiff.fos_reverse_index','format','Integer');
+			end
+			%}}}
+			%if driver is fov_forward, build indices:  {{{
+			if strcmpi(self.driver,'fov_forward'),
+				indices=0;
+
+				for i=1:num_independent_objects,
+					indep=self.independents{i};
+					if ~isempty(indep.fos_forward_index),
+						indices=indices+indep.fov_forward_indices;
+						break;
+					else
+						if strcmpi(indep.type,'scalar'),
+							indices=indices+1;
+						else
+							indices=indices+indep.nods;
+						end
+					end
+				end
+				indices=indices-1; %get c-indices numbering going
+				WriteData(fid,prefix,'data',indices,'name','md.autodiff.fov_forward_indices','format','IntMat','mattype',3);
+			end
+			%}}}
+			%deal with mass fluxes:  {{{
+			mass_flux_segments=cell(0,1);
+			for i=1:num_dependent_objects,
+				dep=self.dependents{i};
+				if strcmpi(dep.name,'MassFlux'),
+					mass_flux_segments{end+1,1}=dep.segments;
+				end
+			end
+			if ~isempty(mass_flux_segments), 
+				WriteData(fid,prefix,'data',mass_flux_segments,'name','md.autodiff.mass_flux_segments','format','MatArray');
+				flag=true;
+			else
+				flag=false;
+			end
+			WriteData(fid,prefix,'data',flag,'name','md.autodiff.mass_flux_segments_present','format','Boolean');
+			%}}}
+			%deal with trace keep on: {{{
+			keep=false;
+
+			%From ADOLC userdoc: 
+			% The optional integer argument keep of trace on determines whether the numerical values of all active variables are 
+			% recorded in a buffered temporary array or file called the taylor stack. This option takes effect if keep = 1 and 
+			% prepares the scene for an immediately following gradient evaluation by a call to a routine implementing the reverse 
+			% mode as described in the Section 4 and Section 5. 
+			%
+
+			if length(self.driver)<=3,
+				keep=false; %there is no "_reverse" string within the driver string: 
+			else
+				if strncmpi(self.driver(4:end),'_reverse',8),
+					keep=true;
+				else
+					keep=false;
+				end
+			end
+			WriteData(fid,prefix,'data',keep,'name','md.autodiff.keep','format','Boolean');
+			%}}}
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+			%do nothing for now
+			if self.isautodiff,
+				error('autodiff savemodeljs error message: not implemented yet!');
+			end
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/autodiff.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/autodiff.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/autodiff.py	(revision 21239)
@@ -0,0 +1,215 @@
+import numpy
+from dependent import dependent
+from independent import independent
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+from MatlabFuncs import *
+
+class autodiff(object):
+	"""
+	AUTODIFF class definition
+
+	   Usage:
+	      autodiff=autodiff();
+	"""
+	def __init__(self,*args):    # {{{
+		self.isautodiff   = False
+		self.dependents   = []
+		self.independents = []
+		self.driver       = 'fos_forward'
+		self.obufsize     = float('NaN')
+		self.lbufsize     = float('NaN')
+		self.cbufsize     = float('NaN')
+		self.tbufsize     = float('NaN')
+		self.gcTriggerMaxSize     = float('NaN')
+		self.gcTriggerRatio     = float('NaN')
+		if not len(args):
+			self.setdefaultparameters()
+		else:
+			raise RuntimeError("constructor not supported")
+	# }}}
+	def __repr__(self):    # {{{
+		s ="      automatic differentiation parameters:\n"
+
+		s+="%s\n" % fielddisplay(self,'isautodiff',"indicates if the automatic differentiation is activated")
+		s+="%s\n" % fielddisplay(self,'dependents',"list of dependent variables")
+		s+="%s\n" % fielddisplay(self,'independents',"list of independent variables")
+		s+="%s\n" % fielddisplay(self,'driver',"ADOLC driver ('fos_forward' or 'fov_forward')")
+		s+="%s\n" % fielddisplay(self,'obufsize',"Number of operations per buffer (==OBUFSIZE in usrparms.h)")
+		s+="%s\n" % fielddisplay(self,'lbufsize',"Number of locations per buffer (==LBUFSIZE in usrparms.h)")
+		s+="%s\n" % fielddisplay(self,'cbufsize',"Number of values per buffer (==CBUFSIZE in usrparms.h)")
+		s+="%s\n" % fielddisplay(self,'tbufsize',"Number of taylors per buffer (<=TBUFSIZE in usrparms.h)")
+		s+="%s\n" % fielddisplay(self,'gcTriggerRatio',"free location block sorting/consolidation triggered if the ratio between allocated and used locations exceeds gcTriggerRatio")
+		s+="%s\n" % fielddisplay(self,'gcTriggerMaxSize',"free location block sorting/consolidation triggered if the allocated locations exceed gcTriggerMaxSize)")
+
+		return s
+	# }}}
+	def setdefaultparameters(self):    # {{{
+		
+		self.obufsize     = 524288
+		self.lbufsize     = 524288
+		self.cbufsize     = 524288
+		self.tbufsize     = 524288
+		self.gcTriggerRatio=2.0
+		self.gcTriggerMaxSize=65536
+		return self
+	# }}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return 
+		if not self.isautodiff:
+			return md 
+		
+		md = checkfield(md,'fieldname','autodiff.obufsize','>=',524288)
+		md = checkfield(md,'fieldname','autodiff.lbufsize','>=',524288)
+		md = checkfield(md,'fieldname','autodiff.cbufsize','>=',524288)
+		md = checkfield(md,'fieldname','autodiff.tbufsize','>=',524288)
+		md = checkfield(md,'fieldname','autodiff.gcTriggerRatio','>=',2.0)
+		md = checkfield(md,'fieldname','autodiff.gcTriggerMaxSize','>=',65536)
+
+		#Driver value:
+		md = checkfield(md,'fieldname','autodiff.driver','values',['fos_forward','fov_forward','fov_forward_all','fos_reverse','fov_reverse','fov_reverse_all'])
+
+		#go through our dependents and independents and check consistency: 
+		for dep in self.dependents:
+			dep.checkconsistency(md,solution,analyses)
+		for i,indep in enumerate(self.independents):
+			indep.checkconsistency(md,i,solution,analyses,self.driver)
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'object',self,'fieldname','isautodiff','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','driver','format','String')
+
+		#early return
+		if not self.isautodiff:
+			WriteData(fid,prefix,'data',False,'name','md.autodiff.mass_flux_segments_present','format','Boolean')
+			WriteData(fid,prefix,'data',False,'name','md.autodiff.keep','format','Boolean')
+			return
+			
+		#buffer sizes {{{
+		WriteData(fid,prefix,'object',self,'fieldname','obufsize','format','Double');
+		WriteData(fid,prefix,'object',self,'fieldname','lbufsize','format','Double');
+		WriteData(fid,prefix,'object',self,'fieldname','cbufsize','format','Double');
+		WriteData(fid,prefix,'object',self,'fieldname','tbufsize','format','Double');
+		WriteData(fid,prefix,'object',self,'fieldname','gcTriggerRatio','format','Double');
+		WriteData(fid,prefix,'object',self,'fieldname','gcTriggerMaxSize','format','Double');
+		#}}}
+		#process dependent variables {{{
+		num_dependent_objects=len(self.dependents)
+		WriteData(fid,prefix,'data',num_dependent_objects,'name','md.autodiff.num_dependent_objects','format','Integer')
+
+		if num_dependent_objects:
+			names=[]
+			types=numpy.zeros(num_dependent_objects)
+			indices=numpy.zeros(num_dependent_objects)
+
+			for i,dep in enumerate(self.dependents):
+				names.append(dep.name)
+				types[i]=dep.typetoscalar()
+				indices[i]=dep.index
+
+			WriteData(fid,prefix,'data',names,'name','md.autodiff.dependent_object_names','format','StringArray')
+			WriteData(fid,prefix,'data',types,'name','md.autodiff.dependent_object_types','format','IntMat','mattype',3)
+			WriteData(fid,prefix,'data',indices,'name','md.autodiff.dependent_object_indices','format','IntMat','mattype',3)
+		#}}}
+		#process independent variables {{{
+		num_independent_objects=len(self.independents)
+		WriteData(fid,prefix,'data',num_independent_objects,'name','md.autodiff.num_independent_objects','format','Integer')
+
+		if num_independent_objects:
+			names=[None] * num_independent_objects
+			types=numpy.zeros(num_independent_objects)
+
+			for i,indep in enumerate(self.independents):
+				names[i]=indep.name
+				types[i]=indep.typetoscalar()
+
+			WriteData(fid,prefix,'data',names,'name','md.autodiff.independent_object_names','format','StringArray')
+			WriteData(fid,prefix,'data',types,'name','md.autodiff.independent_object_types','format','IntMat','mattype',3)
+		#}}}
+		#if driver is fos_forward, build index:  {{{
+		if strcmpi(self.driver,'fos_forward'):
+			index=0
+
+			for indep in self.independents:
+				if not numpy.isnan(indep.fos_forward_index):
+					index+=indep.fos_forward_index
+					break
+				else:
+					if strcmpi(indep.type,'scalar'):
+						index+=1
+					else:
+						index+=indep.nods
+
+			index-=1    #get c-index numbering going
+			WriteData(fid,prefix,'data',index,'name','md.autodiff.fos_forward_index','format','Integer')
+		#}}}
+		#if driver is fos_reverse, build index:  {{{
+		if strcmpi(self.driver,'fos_reverse'):
+			index=0
+
+			for dep in self.dependents:
+				if not numpy.isnan(dep.fos_reverse_index):
+					index+=dep.fos_reverse_index
+					break
+				else:
+					if strcmpi(dep.type,'scalar'):
+						index+=1
+					else:
+						index+=dep.nods
+
+			index-=1    #get c-index numbering going
+			WriteData(fid,prefix,'data',index,'name','md.autodiff.fos_reverse_index','format','Integer')
+		#}}}
+		#if driver is fov_forward, build indices:  {{{
+		if strcmpi(self.driver,'fov_forward'):
+			indices=0
+
+			for indep in self.independents:
+				if indep.fos_forward_index:
+					indices+=indep.fov_forward_indices
+					break
+				else:
+					if strcmpi(indep.type,'scalar'):
+						indices+=1
+					else:
+						indices+=indep.nods
+
+			indices-=1    #get c-indices numbering going
+			WriteData(fid,prefix,'data',indices,'name','md.autodiff.fov_forward_indices','format','IntMat','mattype',3)
+		#}}}
+		#deal with mass fluxes:  {{{
+		mass_flux_segments=[dep.segments for dep in self.dependents if strcmpi(dep.name,'MassFlux')]
+
+		if mass_flux_segments:
+			WriteData(fid,prefix,'data',mass_flux_segments,'name','md.autodiff.mass_flux_segments','format','MatArray')
+			flag=True
+		else:
+			flag=False
+		WriteData(fid,prefix,'data',flag,'name','md.autodiff.mass_flux_segments_present','format','Boolean')
+		#}}}
+		#deal with trace keep on: {{{
+		keep=False
+
+		#From ADOLC userdoc: 
+		# The optional integer argument keep of trace on determines whether the numerical values of all active variables are 
+		# recorded in a buffered temporary array or file called the taylor stack. This option takes effect if keep = 1 and 
+		# prepares the scene for an immediately following gradient evaluation by a call to a routine implementing the reverse 
+		# mode as described in the Section 4 and Section 5. 
+		#
+
+		if len(self.driver)<=3:
+			keep=False    #there is no "_reverse" string within the driver string: 
+		else:
+			if strncmpi(self.driver[3:],'_reverse',8):
+				keep=True
+			else:
+				keep=False
+		WriteData(fid,prefix,'data',keep,'name','md.autodiff.keep','format','Boolean')
+		#}}}
+
+		return
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/balancethickness.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/balancethickness.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/balancethickness.js	(revision 21239)
@@ -0,0 +1,58 @@
+//BALANCETHICKNESS class definition
+//
+//   Usage:
+//      balancethickness=new balancethickness();
+
+function balancethickness (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//Type of stabilization used
+		this.stabilization=1;
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   balance thickness solution parameters:'));
+
+		fielddisplay(this,'spcthickness','thickness constraints (NaN means no constraint) [m]');
+		fielddisplay(this,'thickening_rate','ice thickening rate used in the mass conservation (dh/dt) [m/yr]');
+		fielddisplay(this,'stabilization',"0: None, 1: SU, 2: SSA's artificial diffusivity, 3:DG");
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "balancethickness";
+
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses){ // {{{
+			//Early return
+			if (solution!='BalancethicknessSolution')return;
+
+			checkfield(md,'fieldname','balancethickness.spcthickness');
+			checkfield(md,'fieldname','balancethickness.thickening_rate','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','balancethickness.stabilization','size',[1, 1],'values',[0, 1, 2 ,3]);
+			//checkfield(md,'fieldname','balancethickness.omega','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1,'>=',0);
+		} //}}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',this,'fieldname','spcthickness','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','thickening_rate','format','DoubleMat','mattype',1,'scale',1/yts);
+			WriteData(fid,prefix,'object',this,'fieldname','stabilization','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','omega','format','DoubleMat','mattype',1);
+
+		}//}}}
+		this.fix=function() { //{{{
+			this.spcthickness=NullFix(this.spcthickness,NaN);
+			this.thicknening_rate=NullFix(this.thicknening_rate,NaN);
+			this.omega=NullFix(this.omega,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.spcthickness      = NaN;
+	this.thickening_rate   = NaN;
+	this.stabilization     = 0;
+	this.omega             = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/balancethickness.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/balancethickness.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/balancethickness.m	(revision 21239)
@@ -0,0 +1,66 @@
+%BALANCETHICKNESS class definition
+%
+%   Usage:
+%      balancethickness=balancethickness();
+
+classdef balancethickness
+	properties (SetAccess=public) 
+		spcthickness      = NaN;
+		thickening_rate   = NaN;
+		stabilization     = 0;
+
+		omega             = NaN;
+	end
+	methods
+		function self = balancethickness(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Type of stabilization used
+			self.stabilization=1;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if ~strcmp(solution,'BalancethicknessSolution'), return; end
+
+			md = checkfield(md,'fieldname','balancethickness.spcthickness');
+			md = checkfield(md,'fieldname','balancethickness.thickening_rate','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','balancethickness.stabilization','size',[1 1],'values',[0 1 2 3]);
+
+			%md = checkfield(md,'fieldname','balancethickness.omega','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1,'>=',0);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   balance thickness solution parameters:'));
+
+			fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint) [m]');
+			fielddisplay(self,'thickening_rate','ice thickening rate used in the mass conservation (dh/dt) [m/yr]');
+			fielddisplay(self,'stabilization','0: None, 1: SU, 2: SSA''s artificial diffusivity, 3:DG');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'fieldname','spcthickness','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','thickening_rate','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer');
+
+			WriteData(fid,prefix,'object',self,'fieldname','omega','format','DoubleMat','mattype',1);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.balancethickness.spcthickness'],self.spcthickness);
+			writejs1Darray(fid,[modelname '.balancethickness.thickening_rate'],self.thickening_rate);
+			writejsdouble(fid,[modelname '.balancethickness.stabilization'],self.stabilization);
+			writejs1Darray(fid,[modelname '.balancethickness.omega'],self.omega);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/balancethickness.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/balancethickness.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/balancethickness.py	(revision 21239)
@@ -0,0 +1,56 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+class balancethickness(object):
+	"""
+	BALANCETHICKNESS class definition
+
+	   Usage:
+	      balancethickness=balancethickness();
+	"""
+
+	def __init__(self): # {{{
+		self.spcthickness      = float('NaN')
+		self.thickening_rate   = float('NaN')
+		self.stabilization     = 0
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		
+		string='   balance thickness solution parameters:' 
+		
+		string="%s\n%s"%(string,fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'thickening_rate','ice thickening rate used in the mass conservation (dh/dt) [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'stabilization',"0: None, 1: SU, 2: SSA's artificial diffusivity, 3:DG"))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#Type of stabilization used
+		self.stabilization=1
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		#Early return
+		if not solution=='BalancethicknessSolution':
+			return md
+
+		md = checkfield(md,'fieldname','balancethickness.spcthickness')
+		md = checkfield(md,'fieldname','balancethickness.thickening_rate','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','balancethickness.stabilization','size',[1],'values',[0,1,2,3])
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		yts=md.constants.yts
+
+		WriteData(fid,prefix,'object',self,'fieldname','spcthickness','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','thickening_rate','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/bamggeom.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/bamggeom.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/bamggeom.m	(revision 21239)
@@ -0,0 +1,51 @@
+%BAMGGEOM class definition
+%
+%   Usage:
+%      bamggeom(varargin)
+
+classdef bamggeom
+	properties (SetAccess=public) 
+		% {{{
+		Vertices=[];
+		Edges=[];
+		TangentAtEdges=[];
+		Corners=[];
+		RequiredVertices=[];
+		RequiredEdges=[];
+		CrackedEdges=[];
+		SubDomains=[];
+		% }}}
+	end
+	methods
+		function bg = bamggeom(varargin)% {{{
+		%BAMGGEOM - constructor for bamggeom object
+		%
+		%   Usage:
+		%      bamggeom = bamggeom(varargin)
+
+		switch nargin
+			case 0
+				% if no input arguments, create a default object
+
+			case 1
+
+				bg=bamggeom;
+				object=varargin{1};
+				fields=fieldnames(object);
+				for i=1:length(fields)
+					field=fields{i};
+					if ismember(field,properties('bamggeom')),
+						bg.(field)=object.(field);
+					end
+				end
+
+			otherwise
+				error('bamggeom constructor error message: unknown type of constructor call');
+			end
+		end%}}}
+		function display(bg)% {{{
+			disp(sprintf('\n%s = \n',inputname(1)));
+			disp(struct(bg))
+		end%}}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/bamggeom.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/bamggeom.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/bamggeom.py	(revision 21239)
@@ -0,0 +1,45 @@
+import numpy
+
+class bamggeom(object):
+	"""
+	BAMGGEOM class definition
+
+	   Usage:
+	      bamggeom(varargin)
+	"""
+
+	def __init__(self,*args):    # {{{
+		self.Vertices=numpy.empty((0,3))
+		self.Edges=numpy.empty((0,3))
+		self.TangentAtEdges=numpy.empty((0,4))
+		self.Corners=numpy.empty((0,1))
+		self.RequiredVertices=numpy.empty((0,1))
+		self.RequiredEdges=numpy.empty((0,1))
+		self.CrackedEdges=numpy.empty((0,0))
+		self.SubDomains=numpy.empty((0,4))
+
+		if not len(args):
+			# if no input arguments, create a default object
+			pass
+
+		elif len(args) == 1:
+			object=args[0]
+			for field in object.iterkeys():
+				if field in vars(self):
+					setattr(self,field,object[field])
+
+		else:
+			raise TypeError("bamggeom constructor error message: unknown type of constructor call")
+	# }}}
+	def __repr__(self):    # {{{
+		s ="class '%s' object '%s' = \n" % (type(self),'self')
+		s+="    Vertices: %s\n" % str(self.Vertices)
+		s+="    Edges: %s\n" % str(self.Edges)
+		s+="    TangentAtEdges: %s\n" % str(self.TangentAtEdges)
+		s+="    Corners: %s\n" % str(self.Corners)
+		s+="    RequiredVertices: %s\n" % str(self.RequiredVertices)
+		s+="    RequiredEdges: %s\n" % str(self.RequiredEdges)
+		s+="    CrackedEdges: %s\n" % str(self.CrackedEdges)
+		s+="    SubDomains: %s\n" % str(self.SubDomains)
+		return s
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/bamgmesh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/bamgmesh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/bamgmesh.m	(revision 21239)
@@ -0,0 +1,56 @@
+%BAMGMESH class definition
+%
+%   Usage:
+%      bamgmesh(varargin)
+
+classdef bamgmesh
+	properties (SetAccess=public) 
+		% {{{
+		Vertices=[];
+		Edges=[];
+		Triangles=[];
+		Quadrilaterals=[];
+		IssmEdges=[];
+		IssmSegments=[];
+		VerticesOnGeomVertex=[];
+		VerticesOnGeomEdge=[];
+		EdgesOnGeomEdge=[];
+		SubDomains=[];
+		SubDomainsFromGeom=[];
+		ElementConnectivity=[];
+		NodalConnectivity=[];
+		NodalElementConnectivity=[];
+		CrackedVertices=[];
+		CrackedEdges=[];
+		PreviousNumbering=[];
+		% }}}
+	end
+	methods
+		function bg = bamgmesh(varargin)% {{{
+
+		switch nargin
+			case 0
+				% if no input arguments, create a default object
+
+			case 1
+
+				bg=bamgmesh;
+				object=varargin{1};
+				fields=fieldnames(object);
+				for i=1:length(fields)
+					field=fields{i};
+					if ismember(field,properties('bamgmesh')),
+						bg.(field)=object.(field);
+					end
+				end
+
+			otherwise
+				error('bamgmesh constructor error message: unknown type of constructor call');
+			end
+		end%}}}
+		function display(bm)% {{{
+			disp(sprintf('\n%s = \n',inputname(1)));
+			disp(struct(bm))
+		end%}}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/bamgmesh.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/bamgmesh.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/bamgmesh.py	(revision 21239)
@@ -0,0 +1,61 @@
+import numpy
+
+class bamgmesh(object):
+	"""
+	BAMGMESH class definition
+
+	   Usage:
+	      bamgmesh(varargin)
+	"""
+
+	def __init__(self,*args):    # {{{
+		self.Vertices=numpy.empty((0,3))
+		self.Edges=numpy.empty((0,3))
+		self.Triangles=numpy.empty((0,0))
+		self.Quadrilaterals=numpy.empty((0,0))
+		self.IssmEdges=numpy.empty((0,0))
+		self.IssmSegments=numpy.empty((0,0))
+		self.VerticesOnGeomVertex=numpy.empty((0,0))
+		self.VerticesOnGeomEdge=numpy.empty((0,0))
+		self.EdgesOnGeomEdge=numpy.empty((0,0))
+		self.SubDomains=numpy.empty((0,4))
+		self.SubDomainsFromGeom=numpy.empty((0,0))
+		self.ElementConnectivity=numpy.empty((0,0))
+		self.NodalConnectivity=numpy.empty((0,0))
+		self.NodalElementConnectivity=numpy.empty((0,0))
+		self.CrackedVertices=numpy.empty((0,0))
+		self.CrackedEdges=numpy.empty((0,0))
+
+		if not len(args):
+			# if no input arguments, create a default object
+			pass
+
+		elif len(args) == 1:
+			object=args[0]
+			for field in object.iterkeys():
+				if field in vars(self):
+					setattr(self,field,object[field])
+
+		else:
+			raise TypeError("bamgmesh constructor error message: unknown type of constructor call")
+	# }}}
+	def __repr__(self):    # {{{
+		s ="class '%s' object '%s' = \n" % (type(self),'self')
+		s+="    Vertices: %s\n" % str(self.Vertices)
+		s+="    Edges: %s\n" % str(self.Edges)
+		s+="    Triangles: %s\n" % str(self.Triangles)
+		s+="    Quadrilaterals: %s\n" % str(self.Quadrilaterals)
+		s+="    IssmEdges: %s\n" % str(self.IssmEdges)
+		s+="    IssmSegments: %s\n" % str(self.IssmSegments)
+		s+="    VerticesOnGeomVertex: %s\n" % str(self.VerticesOnGeomVertex)
+		s+="    VerticesOnGeomEdge: %s\n" % str(self.VerticesOnGeomEdge)
+		s+="    EdgesOnGeomEdge: %s\n" % str(self.EdgesOnGeomEdge)
+		s+="    SubDomains: %s\n" % str(self.SubDomains)
+		s+="    SubDomainsFromGeom: %s\n" % str(self.SubDomainsFromGeom)
+		s+="    ElementConnectivity: %s\n" % str(self.ElementConnectivity)
+		s+="    NodalConnectivity: %s\n" % str(self.NodalConnectivity)
+		s+="    NodalElementConnectivity: %s\n" % str(self.NodalElementConnectivity)
+		s+="    CrackedVertices: %s\n" % str(self.CrackedVertices)
+		s+="    CrackedEdges: %s\n" % str(self.CrackedEdges)
+		return s
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/basalforcings.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/basalforcings.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/basalforcings.js	(revision 21239)
@@ -0,0 +1,80 @@
+//BASAL FORCINGS class definition
+//
+//   Usage:
+//      basalforcings=basalforcings();
+
+function basalforcings(){
+	//methods
+	this.setdefaultparameters = function() {//{{{
+
+	} // }}}
+	this.disp = function(){ // {{{
+		console.log(sprintf('   basal forcings parameters:'));
+
+		fielddisplay(this,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+		fielddisplay(this,'floatingice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+		fielddisplay(this,'geothermalflux','geothermal heat flux [W/m^2]');
+
+	} // }}}
+    this.extrude = function(md) {//{{{
+        this.groundedice_melting_rate=project3d(md,'vector',this.groundedice_melting_rate,'type','node','layer',1); 
+        this.floatingice_melting_rate=project3d(md,'vector',this.floatingice_melting_rate,'type','node','layer',1); 
+        this.geothermalflux=project3d(md,'vector',this.geothermalflux,'type','node','layer',1); //bedrock only gets geothermal flux
+        return this;
+    }//}}}
+	this.classname = function(){ // {{{
+		return "basalforcings";
+	} // }}}
+		this.initialize = function (md){ // {{{
+
+			if (isNaN(this.groundedice_melting_rate)){
+				this.groundedice_melting_rate=NewArrayFill(md.mesh.numberofvertices,0);
+				console.log('      no basalforcings.groundedice_melting_rate specified: values set as zero');
+			}
+
+			if (isNaN(this.floatingice_melting_rate)){
+				this.floatingice_melting_rate=NewArrayFill(md.mesh.numberofvertices,0);
+				console.log('      no basalforcings.floatingice_melting_rate specified: values set as zero');
+			}
+
+		} // }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			if(ArrayAnyEqual(ArrayIsMember('MasstransportAnalysis',analyses),1)){
+				if (!(solution=='TransientSolution' & md.trans.ismasstransport==0)){
+					checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+					checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				}
+			}
+
+			if(ArrayAnyEqual(ArrayIsMember('BalancethicknessAnalysis',analyses),1)){
+				checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			}
+			if(ArrayAnyEqual(ArrayIsMember('ThermalAnalysis',analyses),1)){
+				if (!(solution=='TransientSolution' & md.trans.isthermal==0)){
+					checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+					checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+					checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+				}
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.basalforcings.model','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',this,'fieldname','floatingice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',this,'fieldname','geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties
+	//{{{
+	this.groundedice_melting_rate  = NaN;
+	this.floatingice_melting_rate  = NaN;
+	this.geothermalflux            = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/basalforcings.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/basalforcings.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/basalforcings.m	(revision 21239)
@@ -0,0 +1,83 @@
+%BASAL FORCINGS class definition
+%
+%   Usage:
+%      basalforcings=basalforcings();
+
+classdef basalforcings
+	properties (SetAccess=public) 
+		groundedice_melting_rate  = NaN;
+		floatingice_melting_rate  = NaN;
+		geothermalflux            = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1); 
+			self.floatingice_melting_rate=project3d(md,'vector',self.floatingice_melting_rate,'type','node','layer',1); 
+			self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1); %bedrock only gets geothermal flux
+		end % }}}
+		function self = basalforcings(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.groundedice_melting_rate),
+				self.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.groundedice_melting_rate specified: values set as zero');
+			end
+
+			if isnan(self.floatingice_melting_rate),
+				self.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.floatingice_melting_rate specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.ismasstransport==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			end
+			if ismember('ThermalAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.isthermal==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   basal forcings parameters:'));
+
+			fielddisplay(self,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+			fielddisplay(self,'floatingice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+			fielddisplay(self,'geothermalflux','geothermal heat flux [W/m^2]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.basalforcings.model','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'fieldname','floatingice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.basalforcings.groundedice_melting_rate'],self.groundedice_melting_rate);
+			writejs1Darray(fid,[modelname '.basalforcings.floatingice_melting_rate'],self.floatingice_melting_rate);
+			writejs1Darray(fid,[modelname '.basalforcings.geothermalflux'],self.geothermalflux);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/basalforcings.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/basalforcings.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/basalforcings.py	(revision 21239)
@@ -0,0 +1,78 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from checkfield import checkfield
+from WriteData import WriteData
+import numpy
+
+class basalforcings(object):
+	"""
+	BASAL FORCINGS class definition
+
+	   Usage:
+	      basalforcings=basalforcings();
+	"""
+
+	def __init__(self): # {{{
+		self.groundedice_melting_rate  = float('NaN')
+		self.floatingice_melting_rate  = float('NaN')
+		self.geothermalflux            = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   basal forcings parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"groundedice_melting_rate","basal melting rate (positive if melting) [m/yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"floatingice_melting_rate","basal melting rate (positive if melting) [m/yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"geothermalflux","geothermal heat flux [W/m^2]"))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1)
+		self.floatingice_melting_rate=project3d(md,'vector',self.floatingice_melting_rate,'type','node','layer',1)
+		self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1)    #bedrock only gets geothermal flux
+		return self
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.groundedice_melting_rate)):
+			self.groundedice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no basalforcings.groundedice_melting_rate specified: values set as zero"
+
+		if numpy.all(numpy.isnan(self.floatingice_melting_rate)):
+			self.floatingice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no basalforcings.floatingice_melting_rate specified: values set as zero"
+
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if 'MasstransportAnalysis' in analyses and not (solution=='TransientSolution' and not md.transient.ismasstransport):
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+
+		if 'BalancethicknessAnalysis' in analyses:
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+
+		if 'ThermalAnalysis' in analyses and not (solution=='TransientSolution' and not md.transient.isthermal):
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0)
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		yts=md.constants.yts
+
+		WriteData(fid,prefix,'name','md.basalforcings.model','data',1,'format','Integer');
+		WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'fieldname','floatingice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calving.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calving.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calving.js	(revision 21239)
@@ -0,0 +1,51 @@
+//CALVING class definition
+//
+//   Usage:
+//      calving=new calving();
+
+function calving (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   Calving parameters:'));
+		fielddisplay(this,'calvingrate','calving rate at given location [m/a]');
+		fielddisplay(this,'meltingrate','melting rate at given location [m/a]');
+
+	}// }}}
+    this.extrude = function(md) {//{{{
+        this.calvingrate=project3d(md,'vector',this.calvingrate,'type','node');
+        this.meltingrate=project3d(md,'vector',this.meltingrate,'type','node');
+        return this;
+    }//}}}
+	this.classname= function(){// {{{
+		return "calving";
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) { // {{{
+		//Early return
+		if (solution!='TransientSolution' | md.trans.ismovingfront==0) return;
+
+		checkfield(md,'fieldname','calving.calvingrate(1:md.mesh.numberofvertices,:)','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','calving.meltingrate(1:md.mesh.numberofvertices,:)','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+	} //}}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			var yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.calving.law','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','calvingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
+			WriteData(fid,prefix,'object',this,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
+		}//}}}
+		this.fix=function() { //{{{
+			this.calvingrate=NullFix(this.calvingrate,NaN);
+			this.meltingrate=NullFix(this.meltingrate,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.calvingrate   = NaN;
+	this.meltingrate   = NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calving.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calving.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calving.m	(revision 21239)
@@ -0,0 +1,62 @@
+%CALVING class definition
+%
+%   Usage:
+%      calving=calving();
+
+classdef calving
+	properties (SetAccess=public) 
+		calvingrate   = NaN;
+		meltingrate   = NaN;
+	end
+	methods
+		function self = calving(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('calving');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.calvingrate=project3d(md,'vector',self.calvingrate,'type','node');
+			self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','calving.calvingrate','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','calving.meltingrate','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Calving parameters:'));
+			fielddisplay(self,'calvingrate','calving rate at given location [m/a]');
+			fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.calving.law','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','calvingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.calving.calvingrate'],self.calvingrate);
+			writejs1Darray(fid,[modelname '.calving.meltingrate'],self.meltingrate);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calving.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calving.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calving.py	(revision 21239)
@@ -0,0 +1,57 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from checkfield import checkfield
+from WriteData import WriteData
+
+class calving(object):
+	"""
+	CALVING class definition
+
+	   Usage:
+	      calving=calving();
+	"""
+
+	def __init__(self): # {{{
+
+		self.calvingrate   = float('NaN')
+		self.meltingrate   = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   Calving parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'calvingrate','calving rate at given location [m/a]'))
+		string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.calvingrate=project3d(md,'vector',self.calvingrate,'type','node')
+		self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if (solution!='TransientSolution') or (not md.transient.ismovingfront):
+			return md
+
+		md = checkfield(md,'fieldname','calving.calvingrate','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+		md = checkfield(md,'fieldname','calving.meltingrate','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		yts=md.constants.yts
+
+		WriteData(fid,prefix,'name','md.calving.law','data',1,'format','Integer');
+		WriteData(fid,prefix,'object',self,'fieldname','calvingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts)
+		WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calvingdev.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calvingdev.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calvingdev.m	(revision 21239)
@@ -0,0 +1,59 @@
+%CALVINGDEV class definition
+%
+%   Usage:
+%      calvingdev=calvingdev();
+
+classdef calvingdev
+	properties (SetAccess=public) 
+		coeff         = NaN;
+		meltingrate   = NaN;
+	end
+	methods
+		function self = calvingdev(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('calvingdev');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.coeff=project3d(md,'vector',self.coeff,'type','node');
+			self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Proportionality coefficient in Pi model
+			self.coeff=2e13;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','calving.coeff','>',0,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Calving Pi parameters:'));
+			fielddisplay(self,'coeff','proportionality coefficient in Pi model');
+			fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.calving.law','data',2,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','coeff','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calvinglevermann.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calvinglevermann.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calvinglevermann.m	(revision 21239)
@@ -0,0 +1,59 @@
+%CALVINGLEVERMANN class definition
+%
+%   Usage:
+%      calvinglevermann=calvinglevermann();
+
+classdef calvinglevermann
+	properties (SetAccess=public) 
+		coeff         = NaN;
+		meltingrate   = NaN;
+	end
+	methods
+		function self = calvinglevermann(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('calvinglevermann');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.coeff=project3d(md,'vector',self.coeff,'type','node');
+			self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Proportionality coefficient in Levermann model
+			self.coeff=2e13;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','calving.coeff','>',0,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>=',0);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Calving Levermann parameters:'));
+			fielddisplay(self,'coeff','proportionality coefficient in Levermann model');
+			fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.calving.law','data',3,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','coeff','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calvinglevermann.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calvinglevermann.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calvinglevermann.py	(revision 21239)
@@ -0,0 +1,54 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+class calvinglevermann(object):
+	"""
+	CALVINGLEVERMANN class definition
+
+	   Usage:
+	      calvinglevermann=calvinglevermann();
+	"""
+
+	def __init__(self): # {{{
+
+		self.coeff         = float('NaN')
+		self.meltingrate   = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   Calving Levermann parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'coeff','proportionality coefficient in Levermann model'))
+		string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.coeff=project3d(md,'vector',self.coeff,'type','node')
+		self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		#Proportionality coefficient in Levermann model
+		self.coeff=2e13;
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if (solution!='TransientSolution') or (not md.transient.ismovingfront):
+			return md
+
+		md = checkfield(md,'fieldname','calving.coeff','size',[md.mesh.numberofvertices],'>',0)
+		md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices],'>=',0)
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		yts=md.constants.yts
+		WriteData(fid,prefix,'name','md.calving.law','data',3,'format','Integer');
+		WriteData(fid,prefix,'object',self,'fieldname','coeff','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calvingminthickness.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calvingminthickness.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/calvingminthickness.m	(revision 21239)
@@ -0,0 +1,58 @@
+%CALVINGMINTHICKNESS class definition
+%
+%   Usage:
+%      calvingminthickness=calvingminthickness();
+
+classdef calvingminthickness
+	properties (SetAccess=public) 
+		min_thickness = 0.;
+		meltingrate   = NaN;
+	end
+	methods
+		function self = calvingminthickness(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('calvingminthickness');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%minimum thickness is 100 m by default
+			self.min_thickness=100.;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','calving.min_thickness','>',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>=',0);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Calving Pi parameters:'));
+			fielddisplay(self,'coeff','proportionality coefficient in Pi model');
+			fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.calving.law','data',4,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','min_thickness','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/README
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/README	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/README	(revision 21239)
@@ -0,0 +1,12 @@
+This directory holds classes corresponding to every cluster 
+that can be used. 
+
+Why classes? 
+Because handling the specificity of every cluster is hard in a general 
+code. Having classes with generic methods, such as: BuildQueueScript, 
+LaunchQueueJob,  and internal data corresponding to every cluster's specificity 
+is much more manageable and powerful.
+
+How to add your cluster? 
+use an existing cluster script, such as pfe.m, and rename it to your cluster name.
+update the methods.
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/acenet.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/acenet.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/acenet.m	(revision 21239)
@@ -0,0 +1,170 @@
+%ACENET class definition
+%
+%   Usage:
+%      cluster=acenet();
+%      cluster=acenet('np',3);
+%      cluster=acenet('np',3,'login','username');
+
+classdef acenet
+    properties (SetAccess=public) 
+		 % {{{
+		 %name='glacdyn.ace-net.ca'
+		 name='placentia.ace-net.ca'
+		 %name='brasdor.ace-net.ca'
+		 login='klemorza';
+		 np=10;
+		 port=0;
+		 queue='longq';
+		 time=10;
+		 % codepath='/usr/local/issm-r11321/bin'; % this one is for issm on acenet global
+		 codepath='/home/klemorza/issm/trunk-jpl/bin'; % this one is for issm on my acenet directory
+		 %executionpath='/home/klemorza/issm/trunk-jpl/execution';
+		 %executionpath='/home/klemorza/scratch/issmres.dir';
+		 executionpath='/net/glacdyn-data/glacdyn/1/klemorza/issm.dir';                 
+		 %}}}
+	 end
+	 methods
+		 function cluster=acenet(varargin) % {{{
+			 %use provided options to change fields
+			 options=pairoptions(varargin{:});
+			 %initialize cluster using user settings if provided
+			 if (exist([cluster.name '_settings'])==2), eval([cluster.name '_settings']); end
+
+			 %OK get other fields
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		 end
+		 %}}} 
+		 function disp(cluster) % {{{
+			 %  display the object
+			 disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			 disp(sprintf('    name: %s',cluster.name));
+			 disp(sprintf('    login: %s',cluster.login));
+			 disp(sprintf('    np: %i',cluster.np));
+			 disp(sprintf('    port: %i',cluster.port));
+			 disp(sprintf('    queue: %s',cluster.queue));
+			 disp(sprintf('    time: %i',cluster.time));
+			 disp(sprintf('    codepath: %s',cluster.codepath));
+			 disp(sprintf('    executionpath: %s',cluster.executionpath));
+                 end
+		 %}}}
+		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			 available_queues={'debug','shortq','longq'};
+			 queue_requirements_time=[48*1 48*7 48*15];
+			 queue_requirements_np=[32 128 256];
+			 QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,cluster.time)
+		 end
+		 %}}}
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#!/bin/bash\n');
+			 fprintf(fid,'#$ -cwd\n');
+
+                         fprintf(fid,'#$ -N issm\n');
+                         % fprintf(fid,'#$ -l h_rt=00:15:00\n');
+                         % fprintf(fid,'#$ -l h_rt=5:00:0\n');
+                         % fprintf(fid,'#$ -l h_rt=25:00:0\n');
+                         % fprintf(fid,'#$ -l h_rt=47:59:00\n');
+                         % fprintf(fid,'#$ -l h_rt=72:00:0\n');
+                         % fprintf(fid,'#$ -l h_rt=96:00:0\n');
+                         % fprintf(fid,'#$ -l h_rt=336:00:0\n');
+                         tstr = sprintf('#$ -l h_rt=%i:00:00\n',cluster.time);
+                         fprintf(fid,tstr);
+
+                         fprintf(fid,'#$ -l h_vmem=2G\n');
+
+                         if strcmp(cluster.executionpath,'/home/klemorza/scratch/issmres.dir')
+                             % ---- Which acent queue to use ----
+                             fprintf(fid,'#$ -q short.q@*,medium.q@*\n');
+                             %fprintf(fid,'#$ -q medium.q@*,long.q@*\n');
+                             %fprintf(fid,'#$ -q medium.q@*\n');
+                             %fprintf(fid,'#$ -q short.q@*\n');
+                             % Acenet nodes with 16cpus and more than 60G mem
+                             % fprintf(fid,'#$ -l h=cl001|cl002|cl003|cl004|cl005|cl006|cl007|cl008|cl009|cl010|cl011|cl012|cl021|cl022|cl023|cl024 \n');
+                             % ---- cpus on different nodes ----
+                             if cluster.np==4
+                                 % -------- All cpus in the same node --------          
+                                 fprintf(fid,'#$ -pe openmp %i\n',cluster.np);
+                             else
+                                 fprintf(fid,'#$ -pe ompi %i\n',cluster.np); % To avoid green acenet that does not have InfiniBand
+                             end
+                         
+                         elseif strcmp(cluster.executionpath,'/net/glacdyn-data/glacdyn/1/klemorza/issm.dir')
+                             % ---- Which node for Lev's queue are selected ----
+                             fprintf(fid,'#$ -q tarasov.q\n');
+                             fprintf(fid,'#$ -l h=cl27*|cl28*|cl29*|cl30*|cl31*|cl320|cl267|cl268|cl269|cl338 \n');
+                             %fprintf(fid,'#$ -l h=cl27*|cl28*|cl29*|cl30*|cl31*|cl320|cl267|cl268|cl269 \n');
+                             %fprintf(fid,'#$ -l h=cl0* \n');
+                             % fprintf(fid,'#$ -l h=cl338 \n');
+                             
+                             if cluster.np==4
+                                 % -------- All cpus in the same node --------          
+                                 fprintf(fid,'#$ -pe openmp %i\n',cluster.np);
+                             else
+                                 fprintf(fid,'#$ -pe ompi* %i\n',cluster.np);
+                                 %fprintf(fid,'#$ -pe 4per %i\n',cluster.np);
+                                 %fprintf(fid,'#$ -pe 8per %i\n',cluster.np);
+                             end
+                         end
+                                                  
+                         % ---- misc ----
+                         fprintf(fid,'#$ -j y\n');
+                         
+                         fprintf(fid,'module purge\n');
+                         %fprintf(fid,'module load gcc openmpi/gcc\n');
+                         %fprintf(fid,'module unload openmpi\n');
+                         fprintf(fid,'module load intel/12.1.7.367\n');
+                         fprintf(fid,'module load openmpi/intel/1.2.9\n');
+
+                         fprintf(fid,'module load gsl\n');
+                         %fprintf(fid,'module load issm\n');
+                         fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+                         fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+                         fprintf(fid,'\n');
+                         fprintf(fid,'mpiexec %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog\n',...
+                                 cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname,modelname,modelname);
+                         %fprintf(fid,'echo $HOSTNAME >>%s.outlog',modelname);
+			 fclose(fid);
+
+		 end
+		 %}}}
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			 %compress the files into one zip.
+			 compressstring=['tar -zcf ' dirname '.tar.gz '];
+			 for i=1:numel(filelist),
+				 compressstring = [compressstring ' ' filelist{i}];
+			 end
+			 system(compressstring);
+
+			 disp('uploading input file and queueing script');
+			 issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		 end %}}}
+
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
+
+			 disp('launching solution sequence on remote cluster');
+			 if ~isempty(restart)
+				 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+			 else
+				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz && qsub ' modelname '.queue '];
+			 end
+			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		 end %}}}
+
+		 function Download(cluster,dirname,filelist)% {{{
+
+			 %copy files from cluster to current directory
+			 directory=[cluster.executionpath '/' dirname '/'];
+			 issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		 end %}}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/castor.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/castor.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/castor.m	(revision 21239)
@@ -0,0 +1,107 @@
+%CASTOR class definition
+%
+%   Usage:
+%      cluster=castor();
+%      cluster=castor('np',3);
+%      cluster=castor('np',3,'login','username');
+
+classdef castor
+    properties (SetAccess=public) 
+		 % {{{
+		 name='castor'
+		 login='username';
+		 np   =128;
+		 port=0;
+		 queue='shortc';
+		 time=180;
+		 codepath='/workp/edw/issm-2.0/bin'
+		 executionpath='/workp/edw/Testing/Execution'
+		 %}}}
+	 end
+	 methods
+		 function cluster=castor(varargin) % {{{
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		 end
+		 %}}}
+		 function disp(cluster) % {{{
+			 %  display the object
+			 disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			 disp(sprintf('    name: %s',cluster.name));
+			 disp(sprintf('    login: %s',cluster.login));
+			 disp(sprintf('    np: %i',cluster.np));
+			 disp(sprintf('    port: %i',cluster.port));
+			 disp(sprintf('    queue: %s',cluster.queue));
+			 disp(sprintf('    time: %i',cluster.time));
+			 disp(sprintf('    codepath: %s',cluster.codepath));
+			 disp(sprintf('    executionpath: %s',cluster.executionpath));
+		 end
+		 %}}}
+		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			 available_queues={'shortc','longc'};
+			 queue_requirements_time=[180 720];
+			 queue_requirements_np=[128 128];
+
+			 QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,cluster.time)
+		 end
+		 %}}}
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#!/bin/sh\n');
+			 fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); %walltime is in seconds.
+			 fprintf(fid,'#PBS -N %s\n',modelname);
+			 fprintf(fid,'#PBS -l ncpus=%i\n',cluster.np);
+			 if ~isempty(queue),
+				 fprintf(fid,'#PBS -q %s\n',cluster.queue);
+			 end
+			 fprintf(fid,'#PBS -o %s.outlog \n',modelname);
+			 fprintf(fid,'#PBS -e %s.errlog \n',modelname);
+			 fprintf(fid,'export PBS_O_WORKDIR=%s\n',[cluster.executionpath '/' dirname]);
+			 fprintf(fid,'cd $PBS_O_WORKDIR\n');
+			 fprintf(fid,'export OMP_NUM_THREADS=1\n');
+			 fprintf(fid,'dplace -s1 -c0-%i mpiexec -np %i %s/issm.exe %s %s %s',cluster.np-1,cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			 fclose(fid);
+
+		 end
+		 %}}}
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			 %compress the files into one zip.
+			 compressstring=['tar -zcf ' dirname '.tar.gz '];
+			 for i=1:numel(filelist),
+				 compressstring = [compressstring ' ' filelist{i}];
+			 end
+			 if cluster.interactive,
+				 compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			 end
+			 system(compressstring);
+
+			 disp('uploading input file and queueing script');
+			 issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		 end %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
+
+			 disp('launching solution sequence on remote cluster');
+			 if ~isempty(restart)
+				 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+			 else
+				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+			 end
+			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		 end %}}}
+		 function Download(cluster,dirname,filelist)% {{{
+
+			 %copy files from cluster to current directory
+			 directory=[cluster.executionpath '/' dirname '/'];
+			 issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		 end %}}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/cloud.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/cloud.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/cloud.m	(revision 21239)
@@ -0,0 +1,110 @@
+%CLOUD cluster class definition
+%
+%   Usage:
+%      cluster=cloud('name','astrid','np',3);
+%      cluster=cloud('name',oshostname(),'np',3,'login','username');
+
+classdef cloud
+	properties (SetAccess=public) 
+		% {{{
+		name='';
+		login='';
+		np=1;
+		codepath='';
+		executionpath='';
+		interactive=0;
+		%}}}
+	end
+	methods
+		function cluster=cloud(varargin) % {{{
+
+			%initialize cluster using user settings if provided
+			if (exist('cloud_settings')==2), 
+				eval('cloud_settings'); 
+			end
+
+			%OK get other fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    np: %i',cluster.np));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    interactive: %i',cluster.interactive));
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+			if cluster.np<1
+				md = checkmessage(md,['number of processors should be at least 1']);
+			end
+			if isnan(cluster.np),
+				md = checkmessage(md,'number of processors should not be NaN!');
+			end
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			if cluster.interactive
+				fprintf(fid,'source %s%s\n',cluster.codepath,'/../etc/environment.sh');
+				fprintf(fid,'cd %s\n',[cluster.executionpath '/' dirname]);
+				fprintf(fid,'mpiexec -np %i -f /home/mpich2.hosts %s/issm.exe %s %s %s 2> %s.errlog > /dev/stdout | tee %s.outlog ',cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname,modelname,modelname);
+			else
+				fprintf(fid,'source %s%s\n',cluster.codepath,'/../etc/environment.sh');
+				fprintf(fid,'cd %s\n',[cluster.executionpath '/' dirname]);
+				fprintf(fid,'mpiexec -np %i -f /home/mpich2.hosts %s/issm.exe %s %s %s 2> %s.errlog > /dev/stdout | tee %s.outlog ',cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname,modelname,modelname);
+			end
+		end
+		%}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			system(compressstring);
+
+			if isempty(cluster.login),
+				error('cloud BuildQueueScript: login should be supplied!');
+			end
+			disp('uploading input file and queueing script');
+			issmstscpout(cluster.name,cluster.executionpath,cluster.login,{[dirname '.tar.gz']});
+
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
+
+			if cluster.interactive, 
+				disp('sending files to remote cluster. once done, please log into cluster and launch job');
+				if ~isempty(restart)
+					launchcommand=['cd ' cluster.executionpath ' && cd ' dirname];
+				else
+					launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz '];
+				end
+			else
+				disp('launching solution sequence on remote cluster');
+				if ~isempty(restart)
+					launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub  ' modelname '.queue '];
+				else
+					launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub  ' modelname '.queue '];
+				end
+			end
+			issmstssh(cluster.name,cluster.login,launchcommand);
+		end %}}}
+		function Download(cluster,dirname,filelist)% {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmstscpin(cluster.name,cluster.login,directory,filelist);
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/cosmos.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/cosmos.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/cosmos.m	(revision 21239)
@@ -0,0 +1,107 @@
+%COSMOS class definition
+%
+%   Usage:
+%      cluster=cosmos();
+%      cluster=cosmos('np',3);
+%      cluster=cosmos('np',3,'login','username');
+
+classdef cosmos
+    properties (SetAccess=public) 
+		 % {{{
+		 name='cosmos'
+		 login='username';
+		 np=128;
+		 port=0;
+		 queue='shortq';
+		 time=3*60;
+		 codepath='/work00/edw/issm-2.0/bin';
+		 executionpath='/work00/edw/Execution';
+		 %}}}
+	 end
+	 methods
+		 function cluster=cosmos(varargin) % {{{
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		 end
+		 %}}}
+		 function disp(cluster) % {{{
+			 %  display the object
+			 disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			 disp(sprintf('    name: %s',cluster.name));
+			 disp(sprintf('    login: %s',cluster.login));
+			 disp(sprintf('    np: %i',cluster.np));
+			 disp(sprintf('    port: %i',cluster.port));
+			 disp(sprintf('    queue: %s',cluster.queue));
+			 disp(sprintf('    time: %i',cluster.time));
+			 disp(sprintf('    codepath: %s',cluster.codepath));
+			 disp(sprintf('    executionpath: %s',cluster.executionpath));
+		 end
+		 %}}}
+		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			 available_queues={'debug','shortq','longq'};
+			 queue_requirements_time=[60*1 60*3 60*17];
+			 queue_requirements_np=[32 128 256];
+
+			 QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,cluster.time)
+		 end
+		 %}}}
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#!/bin/bash\n');
+			 fprintf(fid,'#PBS -l select=%i:ncpus=1\n',cluster.np);
+			 fprintf(fid,'#PBS -N %s\n',modelname);
+			 fprintf(fid,'#PBS -l walltime=%i\n',time*60); %walltime is in seconds.
+			 fprintf(fid,'#PBS -q %s\n',queue);
+			 fprintf(fid,'#PBS -o %s.outlog \n',modelname);
+			 fprintf(fid,'#PBS -e %s.errlog \n',modelname);
+			 fprintf(fid,'export PBS_O_WORKDIR=%s\n',[cluster.executionpath '/' dirname]);
+			 fprintf(fid,'cd $PBS_O_WORKDIR\n');
+			 fprintf(fid,'export OMP_NUM_THREADS=1\n');
+			 fprintf(fid,'ulimit -s unlimited\n');
+			 fprintf(fid,'ulimit -c 0\n');
+			 fprintf(fid,'/opt/mpich/gm/intel10.1/bin/mpiexec -np %i %s/issm.exe %s %s %s',cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			 fclose(fid);
+
+		 end
+		 %}}}
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			 %compress the files into one zip.
+			 compressstring=['tar -zcf ' dirname '.tar.gz '];
+			 for i=1:numel(filelist),
+				 compressstring = [compressstring ' ' filelist{i}];
+			 end
+			 if cluster.interactive,
+				 compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			 end
+			 system(compressstring);
+
+			 disp('uploading input file and queueing script');
+			 issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		 end %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
+
+			 disp('launching solution sequence on remote cluster');
+			 if ~isempty(restart)
+				 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+			 else
+				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+			 end
+			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		 end %}}}
+		 function Download(cluster,dirname,filelist)% {{{
+
+			 %copy files from cluster to current directory
+			 directory=[cluster.executionpath '/' dirname '/'];
+			 issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		 end %}}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/cyclone.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/cyclone.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/cyclone.py	(revision 21239)
@@ -0,0 +1,124 @@
+import subprocess
+from fielddisplay import fielddisplay
+from pairoptions import pairoptions
+from issmssh import issmssh
+from issmscpin import issmscpin
+from issmscpout import issmscpout
+from QueueRequirements import QueueRequirements
+import datetime
+try:
+	from cyclone_settings import cyclone_settings
+except ImportError:
+	print 'You need cyclone_settings.py to proceed, check presence and sys.path'
+	
+class cyclone(object):
+	"""
+	Be aware that this is not a cluster as we usually know them. There is no scheduling and ressources are pretty low.
+	The Computer have 20 cpus and 512Gb of memory used by a number of person so be respectful with your usage.
+	I putted some restrictive upper limits to avoid over-use. (Basile)
+ 
+	   Usage:
+	      cluster=cyclone();
+	"""
+
+	def __init__(self,*args):
+		# {{{
+		self.name           = 'cyclone'
+		self.login          = ''
+		self.np             = 2
+		self.time           = 100
+		self.codepath       = ''
+		self.executionpath  = ''
+		self.port           = ''
+		self.interactive    = 0
+
+		#use provided options to change fields
+		options=pairoptions(*args)
+
+		#initialize cluster using user settings if provided
+		self=cyclone_settings(self)
+		#OK get other fields
+		self=options.AssignObjectFields(self)
+		
+		# }}}
+
+	def __repr__(self):
+	# {{{
+		#  display the object
+		s = "class cyclone object:"
+		s = "%s\n%s"%(s,fielddisplay(self,'name','name of the cluster'))
+		s = "%s\n%s"%(s,fielddisplay(self,'login','login'))
+		s = "%s\n%s"%(s,fielddisplay(self,'np','number of processes'))
+		s = "%s\n%s"%(s,fielddisplay(self,'time','walltime requested in minutes'))
+		s = "%s\n%s"%(s,fielddisplay(self,'codepath','code path on the cluster'))
+		s = "%s\n%s"%(s,fielddisplay(self,'executionpath','execution path on the cluster'))
+		return s
+	# }}}
+
+	def checkconsistency(self,md,solution,analyses):
+		# {{{
+		#Miscelaneous
+		if not self.login:
+			md = md.checkmessage('login empty')
+		if not self.codepath:
+			md = md.checkmessage('codepath empty')
+		if not self.executionpath:
+			md = md.checkmessage('executionpath empty')
+		if self.time>72:
+			md = md.checkmessage('walltime exceeds 72h for niceness this is not allowed, if you need more time consider shifting to one of the Notur systems')
+		if self.np >10:
+			md = md.checkmessage('number of process excess 10, if you need more processing power consider shifting to one of the Notur systems')
+
+		return self
+                # }}}
+	def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota):
+		# {{{
+
+		executable='issm.exe'
+		
+		#write queuing script 
+		shortname=modelname[0:min(12,len(modelname))]
+		fid=open(modelname+'.queue','w')
+		fid.write('export ISSM_DIR="%s/../"\n' % self.codepath)
+		fid.write('source $ISSM_DIR/etc/environment.sh\n')
+		fid.write('INTELLIBS="/opt/intel/intelcompiler-12.04/composerxe-2011.4.191/compiler/lib/intel64"\n')
+		fid.write('export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/:$INTELLIBS\n')
+		fid.write('export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/include/x86_64-linux-gnu/c++/4.8\n')
+		fid.write('cd %s/%s/\n\n' % (self.executionpath,dirname))
+		rundir=self.executionpath+'/'+dirname
+		runfile=self.executionpath+'/'+dirname+'/'+modelname
+		fid.write('mpiexec -np %i %s/%s %s %s %s >%s.outlog 2>%s.errlog\n' % (self.np,self.codepath,executable,str(solution),rundir,modelname,runfile,runfile))
+		fid.close()
+
+		# }}}
+	def UploadQueueJob(self,modelname,dirname,filelist):
+		# {{{
+
+		#compress the files into one zip.
+		compressstring='tar -zcf %s.tar.gz ' % dirname
+		for file in filelist:
+			compressstring += ' %s' % file
+		subprocess.call(compressstring,shell=True)
+
+		print 'uploading input file and queueing script'
+		issmscpout(self.name,self.executionpath,self.login,self.port,[dirname+'.tar.gz'])
+
+		# }}}
+	def LaunchQueueJob(self,modelname,dirname,filelist,restart,batch):
+                # {{{
+
+		print 'launching solution sequence on remote cluster'
+		if restart:
+			launchcommand='cd %s && cd %s && qsub %s.queue' % (self.executionpath,dirname,modelname)
+		else:
+			launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && chmod +x ./%s.queue && ./%s.queue' % (self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname,modelname)
+		issmssh(self.name,self.login,self.port,launchcommand)
+
+		# }}}
+	def Download(self,dirname,filelist):
+		# {{{
+
+		#copy files from cluster to current directory
+		directory='%s/%s/' % (self.executionpath,dirname)
+		issmscpin(self.name,self.login,self.port,directory,filelist)
+		# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/discover.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/discover.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/discover.m	(revision 21239)
@@ -0,0 +1,220 @@
+%PFE class definition
+%
+%   Usage:
+%      cluster=discover();
+%      cluster=discover('np',3);
+%      cluster=discover('np',3,'login','username');
+
+classdef discover 
+    properties (SetAccess=public)  
+		 % {{{
+		 name=oshostname();
+		 login='';
+		 modules        = {};
+		 numnodes=20;
+		 cpuspernode=8; 
+		 port=0;
+		 queue='general';
+		 time=12*60*60;
+		 processor='west';
+		 codepath='';
+		 executionpath='';
+		 interactive=0;
+		 bbftp=0;
+		 numstreams=8;
+		 hyperthreading=0;
+		 email='';
+	 end
+	 %}}}
+	 methods
+		 function cluster=discover(varargin) % {{{
+
+			 %initialize cluster using default settings if provided
+			 if (exist('discover_settings')==2), discover_settings; end
+
+			 %use provided options to change fields
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		 end
+		 %}}}
+		 function disp(cluster) % {{{
+			 %  display the object
+			 disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			 disp(sprintf('    name: %s',cluster.name));
+			 disp(sprintf('    login: %s',cluster.login));
+			 disp(sprintf('    modules: %s',strjoin(cluster.modules,', ')));
+			 disp(sprintf('    port: %i',cluster.port));
+			 disp(sprintf('    numnodes: %i',cluster.numnodes));
+			 disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			 disp(sprintf('    np: %i',cluster.cpuspernode*cluster.numnodes));
+			 disp(sprintf('    queue: %s',cluster.queue));
+			 disp(sprintf('    time: %i',cluster.time));
+			 disp(sprintf('    processor: %s',cluster.processor));
+			 disp(sprintf('    codepath: %s',cluster.codepath));
+			 disp(sprintf('    executionpath: %s',cluster.executionpath));
+			 disp(sprintf('    interactive: %i',cluster.interactive));
+			 disp(sprintf('    hyperthreading: %i',cluster.hyperthreading));
+			 disp(sprintf('    email: %s',cluster.email));
+		 end
+		 %}}}
+		 function numprocs=np(cluster) % {{{
+			 %compute number of processors
+			 numprocs=cluster.numnodes*cluster.cpuspernode;
+		 end
+		 %}}}
+		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			 available_queues={'long','general','debug'};
+			 queue_requirements_time=[24*60*60 12*60*60 60];
+			 queue_requirements_np=[4116 532 532];
+
+			 QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,cluster.time)
+
+			 %now, check cluster.cpuspernode according to processor type
+			 if ( strcmpi(cluster.processor,'sand')),
+				 if ((cluster.cpuspernode>16 ) | (cluster.cpuspernode<1)),
+					 md = checkmessage(md,'cpuspernode should be between 1 and 16 for ''sand'' processors');
+				 end
+			 elseif strcmpi(cluster.processor,'hasw'),
+				 if ((cluster.cpuspernode>28 ) | (cluster.cpuspernode<1)),
+					 md = checkmessage(md,'cpuspernode should be between 1 and 28 for ''hasw'' processors');
+				 end
+			 else
+				 md = checkmessage(md,'unknown processor type, should be ''sand'' or ''hasw'' ');
+			 end
+
+			 %Miscelaneous
+			 if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			 if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			 if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+
+		 end
+		 %}}}
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
+
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 executable='issm.exe';
+			 if isdakota,
+				 version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				 if (version>=6),
+					 executable='issm_dakota.exe';
+				 end
+			 end
+
+			 %write queuing script
+			 fid=fopen([modelname '.queue'],'w');
+
+			 fprintf(fid,'#!/bin/bash\n');
+			 fprintf(fid,'#SBATCH -J %s \n',modelname);
+			 fprintf(fid,'#SBATCH --qos=%s \n',cluster.queue);
+			 fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			 fprintf(fid,'#SBATCH -e %s.errlog \n',modelname);
+			 fprintf(fid,'#SBATCH -n %i \n',cluster.numnodes*cluster.cpuspernode);
+			 fprintf(fid,'#SBATCH -N %i \n',cluster.numnodes);
+			 fprintf(fid,'#SBATCH -t %02i:%02i:00 \n',floor(cluster.time/3600),floor(mod(cluster.time,3600)/60));
+			 fprintf(fid,'#SBATCH -A s1010 \n\n');
+			 for i=1:numel(cluster.modules),
+				 fprintf(fid,['module load ' cluster.modules{i} '\n']);
+			 end
+			 if length(find(cluster.email=='@'))>0
+				 fprintf(fid,'#SBATCH --mail-user=%s \n',cluster.email);
+				 fprintf(fid,'#SBATCH --mail-type=end \n\n');
+			 end
+			 fprintf(fid,'. /usr/share/modules/init/bash\n\n');
+			 fprintf(fid,'module load comp/intel-15.0.0.090\n');
+			 fprintf(fid,'module load mpi/impi-4.0.3.008\n');
+			 fprintf(fid,'export PATH="$PATH:."\n\n');
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			 fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+
+			 fprintf(fid,'mpirun -np %i %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+			 if ~io_gather, %concatenate the output files:
+				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			 end
+			 fclose(fid);
+
+			 %in interactive mode, create a run file, and errlog and outlog file
+			 if cluster.interactive,
+				 fid=fopen([modelname '.run'],'w');
+				 if ~isvalgrind,
+					 fprintf(fid,'mpirun -np %i %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+				 else
+					 fprintf(fid,'mpirun -np %i valgrind --leak-check=full %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+				 end
+				 if ~io_gather, %concatenate the output files:
+					 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				 end
+				 fclose(fid);
+				 fid=fopen([modelname '.errlog'],'w');
+				 fclose(fid);
+				 fid=fopen([modelname '.outlog'],'w');
+				 fclose(fid);
+			 end
+		 end %}}}
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			 %compress the files into one zip.
+			 compressstring=['tar -zcf ' dirname '.tar.gz '];
+			 for i=1:numel(filelist),
+				 compressstring = [compressstring ' ' filelist{i}];
+			 end
+			 if cluster.interactive,
+				 compressstring = [compressstring ' ' modelname '.run '  modelname '.errlog ' modelname '.outlog '];
+			 end
+			 system(compressstring);
+
+			 disp('uploading input file and queueing script');
+			 if cluster.interactive,
+				 directory=[cluster.executionpath '/Interactive' num2str(cluster.interactive)];
+			 else 
+				 directory=cluster.executionpath;
+			 end
+
+			 if ~cluster.bbftp,
+				 issmscpout(cluster.name,directory,cluster.login,cluster.port,{[dirname '.tar.gz']});
+			 else
+				 issmbbftpout(cluster.name,directory,cluster.login,cluster.port,cluster.numstreams,{[dirname '.tar.gz']});
+			 end
+
+		 end
+		 %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch)% {{{
+
+			 if ~cluster.interactive, 
+				 if ~isempty(restart)
+					 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+				 else
+					 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+				 end
+			 else
+				 if ~isempty(restart)
+					 launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive)];
+				 else
+					 launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive) ' && tar -zxf ' dirname '.tar.gz'];
+				 end
+			 end
+
+			 disp('launching solution sequence on remote cluster');
+			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		 end
+		 %}}}
+		 function Download(cluster,dirname,filelist)% {{{
+
+			 %copy files from cluster to current directory
+			 if ~cluster.interactive,
+				 directory=[cluster.executionpath '/' dirname '/'];
+			 else
+				 directory=[cluster.executionpath '/Interactive' num2str(cluster.interactive) '/'];
+			 end
+
+			 if ~cluster.bbftp,
+				 issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+			 else
+				 issmbbftpin(cluster.name, cluster.login, cluster.port, cluster.numstreams, directory, filelist);
+			 end
+
+		 end %}}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/gemini.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/gemini.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/gemini.m	(revision 21239)
@@ -0,0 +1,108 @@
+%GEMINI class definition
+%
+%   Usage:
+%      cluster=gemini();
+%      cluster=gemini('np',3);
+%      cluster=gemini('np',3,'login','username');
+
+classdef gemini
+    properties (SetAccess=public) 
+	% {{{
+		name='gemini'
+		login='username';
+		np=50;
+		port=0;
+		queue='debug';
+		time=60;
+		codepath='/workg/edw/issm-2.0/bin'
+		executionpath='/workg/edw/Testing/Execution'
+	%}}}
+    end
+    methods
+		 function cluster=gemini(varargin) % {{{
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		 end
+		 %}}}
+		 function disp(cluster) % {{{
+			 %  display the object
+			 disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			 disp(sprintf('    name: %s',cluster.name));
+			 disp(sprintf('    login: %s',cluster.login));
+			 disp(sprintf('    np: %i',cluster.np));
+			 disp(sprintf('    port: %i',cluster.port));
+			 disp(sprintf('    queue: %s',cluster.queue));
+			 disp(sprintf('    time: %i',cluster.time));
+			 disp(sprintf('    codepath: %s',cluster.codepath));
+			 disp(sprintf('    executionpath: %s',cluster.executionpath));
+		 end
+		 %}}}
+		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			 available_queues={'debug','shortg','longg'};
+			 queue_requirements_time=[60 180 720];
+			 queue_requirements_np=[50 50 50];
+
+			 QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,cluster.time)
+		 end
+		 %}}}
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#!/bin/sh\n');
+			 fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); %walltime is in seconds.
+			 fprintf(fid,'#PBS -N %s\n',modelname);
+			 fprintf(fid,'#PBS -l ncpus=%i\n',cluster.np);
+			 if ~isempty(queue),
+				 fprintf(fid,'#PBS -q %s\n',cluster.queue);
+			 end
+			 fprintf(fid,'#PBS -o %s.outlog \n',modelname);
+			 fprintf(fid,'#PBS -e %s.errlog \n',modelname);
+
+			 fprintf(fid,'export PBS_O_WORKDIR=%s\n',[cluster.executionpath '/' dirname]);
+			 fprintf(fid,'cd $PBS_O_WORKDIR\n');
+			 fprintf(fid,'export OMP_NUM_THREADS=1\n');
+			 fprintf(fid,'dplace -s1 -c0-%i mpiexec -np %i %s/issm.exe %s %s %s',cluster.np-1,cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			 fclose(fid);
+
+		 end
+		 %}}}
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			 %compress the files into one zip.
+			 compressstring=['tar -zcf ' dirname '.tar.gz '];
+			 for i=1:numel(filelist),
+				 compressstring = [compressstring ' ' filelist{i}];
+			 end
+			 if cluster.interactive,
+				 compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			 end
+			 system(compressstring);
+
+			 disp('uploading input file and queueing script');
+			 issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		 end %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
+
+			 disp('launching solution sequence on remote cluster');
+			 if ~isempty(restart)
+				 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+			 else
+				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+			 end
+			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		 end %}}}
+		 function Download(cluster,dirname,filelist)% {{{
+
+			 %copy files from cluster to current directory
+			 directory=[cluster.executionpath '/' dirname '/'];
+			 issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		 end %}}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/generic.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/generic.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/generic.js	(revision 21239)
@@ -0,0 +1,161 @@
+//GENERIC class definition
+//
+//   Usage:
+//      generic=new generic();
+
+function generic (){
+	//properties 
+	// {{{
+	var args = Array.prototype.slice.call(arguments);
+	var options = new pairoptions(args.slice(0,args.length));
+
+	this.url=options.getfieldvalue('url','');
+	this.np=options.getfieldvalue('np',3);
+	this.codeversion=options.getfieldvalue('codeversion',20486);
+	this.codepath=options.getfieldvalue('codepath','issmdir/bin');
+	this.executionpath=options.getfieldvalue('executionpath','issmdir/execution');
+	//}}}
+	//methods
+	this.disp= function(){// {{{
+		console.log(sprintf('   generic class echo:'));
+		console.log(sprintf('    url: "%s"',this.url));
+		console.log(sprintf('    np: %i',this.np));
+		console.log(sprintf('    codepath: "%s"',this.codepath));
+		console.log(sprintf('    executionpath: "%s"',this.executionpath));
+	}// }}}
+	this.classname= function(){// {{{
+		return "generic";
+	}// }}}
+	this.checkconsistency = function (md,solution,analyses) { //{{{
+		if (cluster.np<1){
+			md.checkmessage('number of processors should be at least 1');
+		}
+		if (isNaN(cluster.np)){
+			md.checkmessage('number of processors should not be NaN!');
+		}
+	} //}}}
+	this.BuildQueueScript = function (cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) { // {{{
+
+			//write queuing script 
+			//what is the executable being called? 
+			executable='issm.exe';
+
+			fid=fopen(modelname+'.queue','w');
+			fprintf(fid,'#!%s\n',cluster.shell);
+			fprintf(fid,'mpiexec -np %i %s/%s %s %s %s 2> %s.errlog >%s.outlog ',cluster.np,cluster.codepath,executable,solution,cluster.executionpath+'/'+dirname,modelname,modelname,modelname);					
+			fclose(fid);
+	} //}}}
+	this.UploadAndRun = function (md,callbackfunction,callbackerrorfunction,callbackid,fid,toolkitsstring,solutionstring,name,runtimename) { //{{{
+
+		var request = new XMLHttpRequest();
+		$(callbackid).html(sprintf("%-16s", "CONNECTING...")).prop("disabled", true);
+		request.position = 0; //Keep track of current parsing position in repsonseText
+		request.timeout = 180000;
+		request.ontimeout = function (event) { //{{{
+			$(callbackid).html(sprintf("%-16s", "TIMEOUT")).prop("disabled", false);
+			callbackerrorfunction();
+		} //}}}
+		request.onerror = function (event) { //{{{
+			$(callbackid).html(sprintf("%-16s", "COULD NOT RUN")).prop("disabled", false);
+			callbackerrorfunction();
+		} //}}}
+		request.upload.onprogress = function(event) { //{{{
+			var progress = (event.loaded / event.total * 100).toFixed(0);
+			$(callbackid).html(sprintf("%-20s", "UPLOADING: " + progress + "%"));
+        } //}}}
+		request.onprogress = function (event) { //{{{
+			//Receive updates by parsing message length as a 32-bit hex string of form 0x*09ABCDEF))
+			var startIndex = request.position;
+			var endIndex = request.position + 10;
+			if (request.responseText.length >= endIndex) { //Ensure entire hex string is loaded
+				var chunkSize = parseInt(request.responseText.slice(startIndex, endIndex));
+				startIndex = endIndex;
+				endIndex = startIndex + chunkSize;
+				if (chunkSize >= 1024) { //Arbitrary maximium size of message (Must be below minimium size of model results)
+					$(callbackid).html(sprintf("%-20s", "DOWNLOADING: " + ((request.responseText.length - request.position) / chunkSize * 100).toFixed(0) + "%")).prop("disabled", true);
+				}
+				else if (request.responseText.length >= endIndex) { //Ensure entire chunk is loaded
+					var responseChunk = request.responseText.slice(startIndex, endIndex);
+					$(callbackid).html(responseChunk);
+					request.position = endIndex;
+				}
+			}
+		}; //}}}
+		request.onload = function (event) { //{{{
+			//get context to this.str2ab to avoid duplciation
+			function str2ab(str) {
+				var buf = new Uint8Array(str.length);
+				for (var i=0, strLen=str.length; i < strLen; i++) {
+					buf[i] = str.charCodeAt(i);
+				}
+				return buf;
+			}
+			var responseText = window.atob(request.responseText.slice(request.position + 10).replace(/\s/g, ''));
+            var buffer = str2ab(responseText);
+			var returnBuffer = new Uint8Array(buffer);
+			var returnBuffer_size = returnBuffer.byteLength;
+			try {
+				md.results = parseresultsfrombuffer(md,returnBuffer,returnBuffer_size);
+				$(callbackid).html(sprintf("%-16s", "RUN")).prop("disabled", false);
+				callbackfunction();
+			}
+			catch (e) {
+				if (responseText.startsWith('Error')) {
+					console.log(responseText);
+					$(callbackid).html(sprintf("%-16s", "ISSM ERROR")).prop("disabled", false);
+				}
+				else {
+					$(callbackid).html(sprintf("%-16s", "JS ERROR")).prop("disabled", false);
+					console.log(e);
+				}
+				callbackerrorfunction();
+			}
+			
+		}; //}}}
+		
+		var npbuffer = this.str2ab(md.cluster.np.toString());
+		var nplength = new Uint32Array(1);
+		nplength[0] = npbuffer.byteLength;
+		
+		var codeversionbuffer = this.str2ab(md.cluster.codeversion.toString());
+		var codeversionlength = new Uint32Array(1);
+		codeversionlength[0] = codeversionbuffer.byteLength;
+		
+		var runtimenamebuffer = this.str2ab(runtimename);
+		var runtimenamelength = new Uint32Array(1);
+		runtimenamelength[0] = runtimenamebuffer.byteLength;
+		
+		var namebuffer = this.str2ab(name);
+		var namelength = new Uint32Array(1);
+		namelength[0] = namebuffer.byteLength;
+		
+		var toolkitsbuffer = this.str2ab(toolkitsstring);
+		var toolkitslength = new Uint32Array(1);
+		toolkitslength[0] = toolkitsbuffer.byteLength;
+		
+		var solutionbuffer = this.str2ab(solutionstring);
+		var solutionlength = new Uint32Array(1);
+		solutionlength[0] = solutionbuffer.byteLength;
+		
+		var binbuffer = new Uint8Array(fid.rawbuffer()); //seems that 16 array bytes length could be incompatible.
+		var binlength = new Uint32Array(1);
+		binlength[0] = binbuffer.byteLength;
+		
+		var data = new Blob([nplength,npbuffer,codeversionlength,codeversionbuffer,runtimenamelength,runtimenamebuffer,namelength,namebuffer,toolkitslength,toolkitsbuffer,solutionlength,solutionbuffer,binlength,binbuffer]);
+	
+		request.open("POST", this.url, true);
+		request.responseType = 'application/octet-stream';
+		request.send(data);
+		
+	} //}}}
+	this.ab2str = function(buf) { //{{{
+		return String.fromCharCode.apply(null, new Uint16Array(buf));
+	} //}}}
+	this.str2ab = function(str) { //{{{
+		var buf = new Uint8Array(str.length);
+		for (var i=0, strLen=str.length; i < strLen; i++) {
+			buf[i] = str.charCodeAt(i);
+		}
+		return buf;
+	} //}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/generic.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/generic.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/generic.m	(revision 21239)
@@ -0,0 +1,314 @@
+%GENERIC cluster class definition
+%
+%   Usage:
+%      cluster=generic('name','astrid','np',3);
+%      cluster=generic('name',oshostname(),'np',3,'login','username');
+
+classdef generic
+	properties (SetAccess=public) 
+		% {{{
+		name          = '';
+		login         = '';
+		np            = 1;
+		port          = 0;
+		interactive   = 1;
+		codepath      = [IssmConfig('ISSM_PREFIX') '/bin'];
+		etcpath       = [issmdir() '/etc'];
+		executionpath = [issmdir() '/execution'];
+		valgrind      = [issmdir() '/externalpackages/valgrind/install/bin/valgrind'];
+		valgrindlib   = [issmdir() '/externalpackages/valgrind/install/lib/libmpidebug.so'];
+		valgrindsup   = [issmdir() '/externalpackages/valgrind/issm.supp'];
+		verbose       = 1;
+		shell         = '/bin/sh';
+		%}}}
+	end
+	methods
+		function cluster=generic(varargin) % {{{
+
+			%Change the defaults if ispc
+			if ispc,
+				cluster.codepath      = [issmdir() '\bin'];
+				cluster.etcpath       = [issmdir() '\etc'];
+				cluster.executionpath = [issmdir() '\execution'];
+			end
+
+			%use provided options to change fields
+			options=pairoptions(varargin{:});
+
+			%get name
+			cluster.name=getfieldvalue(options,'name',oshostname());
+
+			%initialize cluster using user settings if provided
+			if (exist([cluster.name '_settings'])==2), eval([cluster.name '_settings']); end
+
+			%OK get other fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    np: %i',cluster.np));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    etcpath: %s',cluster.etcpath));
+			disp(sprintf('    valgrind: %s',cluster.valgrind));
+			disp(sprintf('    valgrindlib: %s',cluster.valgrindlib));
+			disp(sprintf('    valgrindsup: %s',cluster.valgrindsup));
+			disp(sprintf('    verbose: %s',cluster.verbose));
+			disp(sprintf('    shell: %s',cluster.shell));
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+			if cluster.np<1
+				md = checkmessage(md,['number of processors should be at least 1']);
+			end
+			if isnan(cluster.np),
+				md = checkmessage(md,'number of processors should not be NaN!');
+			end
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
+
+			%write queuing script 
+			%what is the executable being called? 
+			executable='issm.exe';
+			if isdakota,
+				version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				if (version>=6),
+					executable='issm_dakota.exe';
+				end
+			end
+
+			if ~ispc(),
+
+				fid=fopen([modelname '.queue'],'w');
+				fprintf(fid,'#!%s\n',cluster.shell);
+				if ~isvalgrind,
+					if cluster.interactive
+						if IssmConfig('_HAVE_MPI_'),
+							fprintf(fid,'mpiexec -np %i %s/%s %s %s %s \n',cluster.np,cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+						else
+							fprintf(fid,'%s/%s %s %s %s ',cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+						end
+					else
+						if IssmConfig('_HAVE_MPI_'),
+							fprintf(fid,'mpiexec -np %i %s/%s %s %s %s 2> %s.errlog >%s.outlog &',cluster.np,cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname,modelname,modelname);
+						else
+							fprintf(fid,'%s/%s %s %s %s 2> %s.errlog >%s.outlog &',cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname,modelname,modelname);
+						end
+					end
+				elseif isgprof,
+					fprintf(fid,'\n gprof %s/issm.exe gmon.out > %s.performance',cluster.codepath,modelname);
+				else
+					%Add --gen-suppressions=all to get suppression lines
+					fprintf(fid,'LD_PRELOAD=%s \\\n',cluster.valgrindlib);
+					if ismac, 
+						if IssmConfig('_HAVE_MPI_'),
+							fprintf(fid,'mpiexec -np %i %s --leak-check=full --error-limit=no --dsymutil=yes --suppressions=%s %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog ',...
+							cluster.np,cluster.valgrind,cluster.valgrindsup,cluster.codepath,solution,[cluster.executionpath '/' dirname], modelname,modelname,modelname);
+						else
+							fprintf(fid,'%s --leak-check=full --dsymutil=yes --error-limit=no --suppressions=%s %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog ',...
+							cluster.valgrind,cluster.valgrindsup,cluster.codepath,solution,[cluster.executionpath '/' dirname], modelname,modelname,modelname);
+						end
+					else
+						if IssmConfig('_HAVE_MPI_'),
+							fprintf(fid,'mpiexec -np %i %s --leak-check=full --error-limit=no --suppressions=%s %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog ',...
+							cluster.np,cluster.valgrind,cluster.valgrindsup,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname,modelname,modelname);
+						else
+							fprintf(fid,'%s --leak-check=full --error-limit=no --suppressions=%s %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog ',...
+							cluster.valgrind,cluster.valgrindsup,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname,modelname,modelname);
+						end
+					end
+				end
+				if ~io_gather, %concatenate the output files:
+					fprintf(fid,'\ncat %s.outbin.* > %s.outbin',modelname,modelname);
+				end
+				fclose(fid);
+
+			else % Windows
+
+				fid=fopen([modelname '.bat'],'w');
+				fprintf(fid,'@echo off\n');
+
+				if IssmConfig('_HAVE_PETSC_MPI_'),
+					warning('parallel runs not allowed yet in Windows. Defaulting to 1 cpus');
+					cluster.np=1;
+				end
+
+				if cluster.np>1,
+					fprintf(fid,'"C:\\Program Files\\MPICH2\\bin\\mpiexec.exe" -n %i "%s/issm.exe" %s ./ %s ',cluster.np,cluster.codepath,solution,modelname);
+				else
+					fprintf(fid,'"%s/issm.exe" %s ./ %s ',cluster.codepath,solution,modelname);
+				end
+				fclose(fid);
+			end
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.errlog'],'w'); fclose(fid);
+				fid=fopen([modelname '.outlog'],'w'); fclose(fid);
+			end
+		end
+		%}}}
+		function BuildQueueScriptMultipleModels(cluster,dirname,modelname,solution,dirnames,modelnames,nps) % {{{
+		
+			%some checks: 
+			if isempty(modelname), error('BuildQueueScriptMultipleModels error message: need a non empty model name!');end
+
+			%what is the executable being called? 
+			executable='issm_slr.exe';
+
+			if ispc(), error('BuildQueueScriptMultipleModels not support yet on windows machines');end;
+			
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			
+			fprintf(fid,'#!%s\n',cluster.shell);
+
+			%number of cpus: 
+			mpistring=sprintf('mpiexec -np %i ',cluster.np);
+
+			%executable: 
+			mpistring=[mpistring sprintf('%s/%s ',cluster.codepath,executable)];
+			
+			%solution name: 
+			mpistring=[mpistring sprintf('%s ',solution)];
+
+			%execution directory and model name: 
+			mpistring=[mpistring sprintf('%s/%s %s',cluster.executionpath,dirname,modelname)];
+
+			%inform main executable of how many icecaps, glaciers and earth models are being run: 
+			mpistring=[mpistring sprintf(' %i ',length(dirnames))];
+			
+			%icecaps, glaciers and earth location, names and number of processors associated:
+			for i=1:length(dirnames),
+			mpistring=[mpistring sprintf(' %s/%s %s %i ',cluster.executionpath,dirnames{i},modelnames{i},nps{i})];
+			end
+
+			%log files: 
+			if ~cluster.interactive,
+				mpistring=[mpistring sprintf('2> %s.errlog> %s.outlog',modelname,modelname)];
+			end
+
+			%write this long string to disk: 
+			fprintf(fid,mpistring);
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.errlog'],'w'); fclose(fid);
+				fid=fopen([modelname '.outlog'],'w'); fclose(fid);
+			end
+		end
+		%}}}
+		function BuildKrigingQueueScript(cluster,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+
+			%write queuing script 
+			if ~ispc(),
+
+				fid=fopen([modelname '.queue'],'w');
+				fprintf(fid,'#!/bin/sh\n');
+				if ~isvalgrind,
+					if cluster.interactive
+						fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s ',cluster.np,cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+					else
+						fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s 2> %s.errlog >%s.outlog ',cluster.np,cluster.codepath,[cluster.executionpath '/' modelname],modelname,modelname,modelname);
+					end
+				elseif isgprof,
+					fprintf(fid,'\n gprof %s/kriging.exe gmon.out > %s.performance',cluster.codepath,modelname);
+				else
+					%Add --gen-suppressions=all to get suppression lines
+					fprintf(fid,'LD_PRELOAD=%s \\\n',cluster.valgrindlib);
+					fprintf(fid,'mpiexec -np %i %s --leak-check=full --suppressions=%s %s/kriging.exe %s %s 2> %s.errlog >%s.outlog ',...
+						cluster.np,cluster.valgrind,cluster.valgrindsup,cluster.codepath,[cluster.executionpath '/' modelname],modelname,modelname,modelname);
+				end
+				if ~io_gather, %concatenate the output files:
+					fprintf(fid,'\ncat %s.outbin.* > %s.outbin',modelname,modelname);
+				end
+				fclose(fid);
+
+			else % Windows
+
+				fid=fopen([modelname '.bat'],'w');
+				fprintf(fid,'@echo off\n');
+				if cluster.interactive
+					fprintf(fid,'"%s/issm.exe" %s "%s" %s ',cluster.codepath,solution,[cluster.executionpath '/' modelname],modelname);
+				else
+					fprintf(fid,'"%s/issm.exe" %s "%s" %s 2> %s.errlog >%s.outlog',...
+						cluster.codepath,solution,[cluster.executionpath '/' modelname],modelname,modelname,modelname);
+				end
+				fclose(fid);
+			end
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.errlog'],'w'); fclose(fid);
+				fid=fopen([modelname '.outlog'],'w'); fclose(fid);
+			end
+		end
+		%}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			if ~ispc,
+
+				%compress the files into one zip.
+				compressstring=['tar -zcf ' dirname '.tar.gz '];
+				for i=1:numel(filelist),
+					compressstring = [compressstring ' ' filelist{i}];
+				end
+				if cluster.interactive,
+					compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+				end
+				system(compressstring);
+
+				if cluster.verbose, disp('uploading input file and queueing script'); end
+				issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+			end
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch)% {{{
+
+			if ~ispc,
+
+				%figure out what shell extension we will use:
+				if isempty(strfind(cluster.shell,'csh')),
+					shellext='sh';
+				else
+					shellext='csh';
+				end
+
+				if cluster.verbose, disp('launching solution sequence on remote cluster'); end
+
+				if ~isempty(restart)
+					launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && cd ' dirname ' && source ' modelname '.queue '];
+				else
+					if ~batch,
+					launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && source  ' modelname '.queue '];
+					else
+					launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz '];
+					end
+				end
+				issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+			else
+				system([modelname '.bat']);
+			end
+
+		end %}}}
+		function Download(cluster,dirname,filelist)% {{{
+
+			if ispc(),
+				%do nothing
+				return;
+			end
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/generic.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/generic.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/generic.py	(revision 21239)
@@ -0,0 +1,207 @@
+import socket
+import os
+import math
+import subprocess
+from IssmConfig import IssmConfig
+from issmdir import issmdir
+from pairoptions import pairoptions
+from issmssh import issmssh
+from issmscpin import issmscpin
+from issmscpout import issmscpout
+import MatlabFuncs as m
+
+class generic(object):
+	"""
+	GENERIC cluster class definition
+ 
+	   Usage:
+	      cluster=generic('name','astrid','np',3);
+	      cluster=generic('name',oshostname(),'np',3,'login','username');
+	"""
+
+	def __init__(self,*args):    # {{{
+
+		self.name=''
+		self.login=''
+		self.np=1
+		self.port=0
+		self.interactive=1
+		self.codepath=IssmConfig('ISSM_PREFIX')[0]+'/bin'
+		self.executionpath=issmdir()+'/execution'
+		self.valgrind=issmdir()+'/externalpackages/valgrind/install/bin/valgrind'
+		self.valgrindlib=issmdir()+'/externalpackages/valgrind/install/lib/libmpidebug.so'
+		self.valgrindsup=issmdir()+'/externalpackages/valgrind/issm.supp'
+
+		#use provided options to change fields
+		options=pairoptions(*args)
+
+		#get name
+		self.name=socket.gethostname()
+
+		#initialize cluster using user settings if provided
+		if os.path.exists(self.name+'_settings.py'):
+			execfile(self.name+'_settings.py',globals())
+
+		#OK get other fields
+		self=options.AssignObjectFields(self)
+	# }}}
+	def __repr__(self):    # {{{
+		#  display the object
+		s ="class '%s' object '%s' = \n" % (type(self),'self')
+		s+="    name: %s\n" % self.name
+		s+="    login: %s\n" % self.login
+		s+="    np: %i\n" % self.np
+		s+="    port: %i\n" % self.port
+		s+="    codepath: %s\n" % self.codepath
+		s+="    executionpath: %s\n" % self.executionpath
+		s+="    valgrind: %s\n" % self.valgrind
+		s+="    valgrindlib: %s\n" % self.valgrindlib
+		s+="    valgrindsup: %s\n" % self.valgrindsup
+		return s
+	# }}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		if self.np<1:
+			md = checkmessage(md,'number of processors should be at least 1')
+		if math.isnan(self.np):
+			md = checkmessage(md,'number of processors should not be NaN!')
+
+		return md
+	# }}}
+	def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota):    # {{{
+
+		executable='issm.exe';
+		if isdakota:
+			version=IssmConfig('_DAKOTA_VERSION_')[0:2]
+			version=float(version)
+			if version>=6:
+				executable='issm_dakota.exe'
+
+		#write queuing script 
+		if not m.ispc():
+
+			fid=open(modelname+'.queue','w')
+			fid.write('#!/bin/sh\n')
+			if not isvalgrind:
+				if self.interactive: 
+					if IssmConfig('_HAVE_MPI_')[0]:
+						fid.write('mpiexec -np %i %s/%s %s %s/%s %s ' % (self.np,self.codepath,executable,solution,self.executionpath,dirname,modelname))
+					else:
+						fid.write('%s/%s %s %s/%s %s ' % (self.codepath,executable,solution,self.executionpath,dirname,modelname))
+				else:
+					if IssmConfig('_HAVE_MPI_')[0]:
+						fid.write('mpiexec -np %i %s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % (self.np,self.codepath,executable,solution,self.executionpath,dirname,modelname,modelname,modelname))
+					else:
+						fid.write('%s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % (self.codepath,executable,solution,self.executionpath,dirname,modelname,modelname,modelname))
+			elif isgprof:
+				fid.write('\n gprof %s/%s gmon.out > %s.performance' % (self.codepath,executable,modelname))
+			else:
+				#Add --gen-suppressions=all to get suppression lines
+				fid.write('LD_PRELOAD=%s \\\n' % self.valgrindlib)
+				if IssmConfig('_HAVE_MPI_')[0]:
+					fid.write('mpiexec -np %i %s --leak-check=full --suppressions=%s %s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % \
+							(self.np,self.valgrind,self.valgrindsup,self.codepath,executable,solution,self.executionpath,dirname,modelname,modelname,modelname))
+				else:	
+					fid.write('%s --leak-check=full --suppressions=%s %s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % \
+							(self.valgrind,self.valgrindsup,self.codepath,executable,solution,self.executionpath,dirname,modelname,modelname,modelname))
+
+			if not io_gather:    #concatenate the output files:
+				fid.write('\ncat %s.outbin.* > %s.outbin' % (modelname,modelname))
+			fid.close()
+
+		else:    # Windows
+
+			fid=open(modelname+'.bat','w')
+			fid.write('@echo off\n')
+			if self.interactive:
+				fid.write('"%s/%s" %s "%s/%s" %s ' % (self.codepath,executable,solution,self.executionpath,dirname,modelname))
+			else:
+				fid.write('"%s/%s" %s "%s/%s" %s 2> %s.errlog >%s.outlog' % \
+					(self.codepath,executable,solution,self.executionpath,dirname,modelname,modelname,modelname))
+			fid.close()
+
+		#in interactive mode, create a run file, and errlog and outlog file
+		if self.interactive:
+			fid=open(modelname+'.errlog','w')
+			fid.close()
+			fid=open(modelname+'.outlog','w')
+			fid.close()
+	# }}}
+	def BuildKrigingQueueScript(self,modelname,solution,io_gather,isvalgrind,isgprof):    # {{{
+
+		#write queuing script 
+		if not m.ispc():
+
+			fid=open(modelname+'.queue','w')
+			fid.write('#!/bin/sh\n')
+			if not isvalgrind:
+				if self.interactive:
+					fid.write('mpiexec -np %i %s/kriging.exe %s/%s %s ' % (self.np,self.codepath,self.executionpath,modelname,modelname))
+				else:
+					fid.write('mpiexec -np %i %s/kriging.exe %s/%s %s 2> %s.errlog >%s.outlog ' % (self.np,self.codepath,self.executionpath,modelname,modelname,modelname,modelname))
+			elif isgprof:
+				fid.write('\n gprof %s/kriging.exe gmon.out > %s.performance' & (self.codepath,modelname))
+			else:
+				#Add --gen-suppressions=all to get suppression lines
+				fid.write('LD_PRELOAD=%s \\\n' % self.valgrindlib)
+				fid.write('mpiexec -np %i %s --leak-check=full --suppressions=%s %s/kriging.exe %s/%s %s 2> %s.errlog >%s.outlog ' % \
+					(self.np,self.valgrind,self.valgrindsup,self.codepath,self.executionpath,modelname,modelname,modelname,modelname))
+			if not io_gather:    #concatenate the output files:
+				fid.write('\ncat %s.outbin.* > %s.outbin' % (modelname,modelname))
+			fid.close()
+
+		else:    # Windows
+
+			fid=open(modelname+'.bat','w')
+			fid.write('@echo off\n')
+			if self.interactive:
+				fid.write('"%s/issm.exe" %s "%s/%s" %s ' % (self.codepath,solution,self.executionpath,modelname,modelname))
+			else:
+				fid.write('"%s/issm.exe" %s "%s/%s" %s 2> %s.errlog >%s.outlog' % \
+					(self.codepath,solution,self.executionpath,modelname,modelname,modelname,modelname))
+			fid.close()
+
+		#in interactive mode, create a run file, and errlog and outlog file
+		if self.interactive:
+			fid=open(modelname+'.errlog','w')
+			fid.close()
+			fid=open(modelname+'.outlog','w')
+			fid.close()
+	# }}}
+	def UploadQueueJob(self,modelname,dirname,filelist):    # {{{
+
+		#compress the files into one zip.
+		compressstring='tar -zcf %s.tar.gz ' % dirname
+		for file in filelist:
+			compressstring += ' %s' % file
+		if self.interactive:
+			compressstring += ' %s.errlog %s.outlog ' % (modelname,modelname)
+		subprocess.call(compressstring,shell=True)
+
+		print 'uploading input file and queueing script'
+		issmscpout(self.name,self.executionpath,self.login,self.port,[dirname+'.tar.gz'])
+
+	# }}}
+	def LaunchQueueJob(self,modelname,dirname,filelist,restart,batch):    # {{{
+
+		print 'launching solution sequence on remote cluster'
+		if restart:
+			launchcommand='cd %s && cd %s chmod 777 %s.queue && ./%s.queue' % (self.executionpath,dirname,modelname,modelname)
+		else:
+			if batch:
+				launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz' % \
+						(self.executionpath,dirname,dirname,dirname,dirname,dirname)
+			else:
+				launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && chmod 777 %s.queue && ./%s.queue' % \
+					(self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname,modelname)
+		issmssh(self.name,self.login,self.port,launchcommand)
+	# }}}
+	def Download(self,dirname,filelist):     # {{{
+
+		if m.ispc():
+			#do nothing
+			return
+
+		#copy files from cluster to current directory
+		directory='%s/%s/' % (self.executionpath,dirname)
+		issmscpin(self.name,self.login,self.port,directory,filelist)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/generic_static.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/generic_static.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/generic_static.m	(revision 21239)
@@ -0,0 +1,109 @@
+%GENERIC cluster class definition
+%
+%   Usage:
+%      cluster=generic_static('name','astrid','np',3);
+
+classdef generic_static
+	properties (SetAccess=public) 
+		% {{{
+		name='';
+		np=1;
+		codepath=fileparts(which('issm.exe'));
+		executionpath = '.';
+		interactive = 1;
+		shell='/bin/sh';
+		%}}}
+	end
+	methods
+		function cluster=generic_static(varargin) % {{{
+
+			%use provided options to change fields
+			options=pairoptions(varargin{:});
+
+			%get name
+			cluster.name=getfieldvalue(options,'name',oshostname());
+
+			%initialize cluster using user settings if provided
+			if (exist([cluster.name '_settings'])==2), eval([cluster.name '_settings']); end
+
+			%OK get other fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    np: %i',cluster.np));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    shell: %s',cluster.shell));
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+			if cluster.np<1
+				md = checkmessage(md,['number of processors should be at least 1']);
+			end
+			if isnan(cluster.np),
+				md = checkmessage(md,'number of processors should not be NaN!');
+			end
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
+
+			%Check that issm.exe exists in the right path
+			if ~exist([cluster.codepath '/issm.exe'],'file'),
+				error(['File ' cluster.codepath '/issm.exe does not exist']);
+			end
+
+			%Now process codepath and replace empty spaces with \ to avoid errors in queuing script
+			codepath2=strrep(cluster.codepath,' ','\ ');
+
+			%write queuing script
+			%what is the executable being called?
+			executable='issm.exe';
+			if isdakota,
+				version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				if (version>=6),
+					executable='issm_dakota.exe';
+				end
+			end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!%s\n',cluster.shell);
+			fprintf(fid,['%s/mpiexec -np %i %s/%s %s %s %s \n'],codepath2,cluster.np,codepath2,executable,solution,'./',modelname);
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			fid=fopen([modelname '.errlog'],'w'); fclose(fid);
+			fid=fopen([modelname '.outlog'],'w'); fclose(fid);
+		end
+		%}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			%do nothing
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch)% {{{
+
+			if ~ispc,
+
+				%figure out what shell extension we will use:
+				if isempty(strfind(cluster.shell,'csh')),
+					shellext='sh';
+				else
+					shellext='csh';
+				end
+
+				disp('launching solution sequence');
+				launchcommand=['source  ' modelname '.queue '];
+				issmssh(cluster.name,'',0,launchcommand);
+			else
+				system([modelname '.bat']);
+			end
+		end %}}}
+		function Download(cluster,dirname,filelist)% {{{
+				%do nothing
+				return;
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/greenplanet.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/greenplanet.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/greenplanet.m	(revision 21239)
@@ -0,0 +1,169 @@
+%PFE class definition
+%
+%   Usage:
+%      cluster=greenplanet();
+%      cluster=greenplanet('np',3);
+%      cluster=greenplanet('np',3,'login','username');
+
+classdef greenplanet
+    properties (SetAccess=public)  
+		 % {{{
+		 name          = 'greenplanet'
+		 login         = '';
+		 numnodes      = 20;
+		 cpuspernode   = 8;
+		 port          = 8000;
+		 queue         = 'c6145';
+		 codepath      = '';
+		 executionpath = '';
+		 interactive   = 0;
+		 time          = 24*60;
+		 memory        = 2;
+	 end
+	 %}}}
+	 methods
+		 function cluster=greenplanet(varargin) % {{{
+
+			 %initialize cluster using default settings if provided
+			 if (exist('greenplanet_settings')==2), greenplanet_settings; end
+
+			 %use provided options to change fields
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		 end
+		 %}}}
+		 function disp(cluster) % {{{
+			 %  display the object
+			 disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			 disp(sprintf('    name: %s',cluster.name));
+			 disp(sprintf('    login: %s',cluster.login));
+			 disp(sprintf('    port: %i',cluster.port));
+			 disp(sprintf('    numnodes: %i',cluster.numnodes));
+			 disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			 disp(sprintf('    np: %i',cluster.cpuspernode*cluster.numnodes));
+			 disp(sprintf('    queue: %s',cluster.queue));
+			 disp(sprintf('    codepath: %s',cluster.codepath));
+			 disp(sprintf('    executionpath: %s',cluster.executionpath));
+			 disp(sprintf('    interactive: %i',cluster.interactive));
+			 disp(sprintf('    time: %i',cluster.time));
+			 disp(sprintf('    memory: %i',cluster.memory));
+		 end
+		 %}}}
+		 function numprocs=np(cluster) % {{{
+			 %compute number of processors
+			 numprocs=cluster.numnodes*cluster.cpuspernode;
+		 end
+		 %}}}
+		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			 available_queues={'c6145','default'};
+			 queue_requirements_time=[Inf Inf];
+			 queue_requirements_np=[80 80];
+
+			 QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,1)
+
+			 %Miscelaneous
+			 if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			 if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			 if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+
+		 end
+		 %}}}
+		 function BuildKrigingQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#!/bin/bash\n');
+			 fprintf(fid,'#SBATCH --job-name=%s\n',modelname);
+			 fprintf(fid,'#SBATCH -p %s \n',cluster.queue);
+			 fprintf(fid,'#SBATCH -N %i -n %i\n',cluster.numnodes,cluster.cpuspernode);
+			 fprintf(fid,'#SBATCH --time=%i\n',cluster.time*60); %walltime is in seconds.
+			 fprintf(fid,'#SBATCH --mem-per-cpu=%igb\n',cluster.memory);
+			 fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			 fprintf(fid,'#SBATCH -e %s.errlog \n\n',modelname);
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			 fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+			 fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s\n',cluster.np,cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+			 if ~io_gather, %concatenate the output files:
+				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			 end
+			 fclose(fid);
+		 end
+		 %}}}
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#!/bin/bash\n');
+			 fprintf(fid,'#SBATCH --job-name=%s\n',modelname);
+			 fprintf(fid,'#SBATCH -p %s \n',cluster.queue);
+			 fprintf(fid,'#SBATCH -N %i -n %i\n',cluster.numnodes,cluster.cpuspernode);
+			 fprintf(fid,'#SBATCH --time=%i\n',cluster.time*60); %walltime is in seconds.
+			 fprintf(fid,'#SBATCH --mem-per-cpu=%igb\n',cluster.memory);
+			 fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			 fprintf(fid,'#SBATCH -e %s.errlog \n\n',modelname);
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			 fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+			 fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			 if ~io_gather, %concatenate the output files:
+				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			 end
+			 fclose(fid);
+
+			 %in interactive mode, create a run file, and errlog and outlog file
+			 if cluster.interactive,
+				 fid=fopen([modelname '.run'],'w');
+				 fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+				 if ~io_gather, %concatenate the output files:
+					 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				 end
+				 fclose(fid);
+				 fid=fopen([modelname '.errlog'],'w');
+				 fclose(fid);
+				 fid=fopen([modelname '.outlog'],'w');
+				 fclose(fid);
+			 end
+		 end %}}}
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			 %compress the files into one zip.
+			 compressstring=['tar -zcf ' dirname '.tar.gz '];
+			 for i=1:numel(filelist),
+				 compressstring = [compressstring ' ' filelist{i}];
+			 end
+			 if cluster.interactive,
+				 compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			 end
+			 system(compressstring);
+
+			 disp('uploading input file and queueing script');
+			 issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		 end %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch)% {{{
+
+			 disp('launching solution sequence on remote cluster');
+			 if ~isempty(restart)
+				 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && qsub ' modelname '.queue '];
+			 else
+				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && qsub ' modelname '.queue '];
+			 end
+			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		 end %}}}
+		 function Download(cluster,dirname,filelist)% {{{
+
+			 %copy files from cluster to current directory
+			 directory=[cluster.executionpath '/' dirname '/'];
+			 issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		 end %}}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/hexagon.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/hexagon.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/hexagon.py	(revision 21239)
@@ -0,0 +1,146 @@
+import subprocess
+from fielddisplay import fielddisplay
+from pairoptions import pairoptions
+from issmssh import issmssh
+from issmscpin import issmscpin
+from issmscpout import issmscpout
+from QueueRequirements import QueueRequirements
+import datetime
+try:
+	from hexagon_settings import hexagon_settings
+except ImportError:
+	print 'You need hexagon_settings.py to proceed, check presence and sys.path'
+	
+class hexagon(object):
+	"""
+	Hexagon cluster class definition
+	Hexagon have nodes built of 2*16 CPUs. Nodes are dedicated to one job so the best usage is to use 32 procs per nodes (16 per cores) as it is what is billed anyway. 
+	You can reduce this number if you run out of memory as the total node memory is divided by the number of procs
+	   Usage:
+	      cluster=hexagon();
+	"""
+
+	def __init__(self,*args):
+		# {{{
+		self.name           = 'hexagon'
+		self.login          = ''
+		self.numnodes       = 2
+		self.procspernodes  = 32
+		self.mem            = 32000
+		self.queue          = 'batch'
+		self.time           = 2*60
+		self.codepath       = ''
+		self.executionpath  = ''
+		self.interactive    = 0
+		self.port           = []
+		self.accountname    = ''
+
+		#use provided options to change fields
+		options=pairoptions(*args)
+
+		#initialize cluster using user settings if provided
+		self=hexagon_settings(self)
+		self.np=self.numnodes*self.procspernodes
+		#OK get other fields
+		self=options.AssignObjectFields(self)
+		
+		# }}}
+	def __repr__(self):
+		# {{{
+		#  display the object
+		s = "class hexagon object:"
+		s = "%s\n%s"%(s,fielddisplay(self,'name','name of the cluster'))
+		s = "%s\n%s"%(s,fielddisplay(self,'login','login'))
+		s = "%s\n%s"%(s,fielddisplay(self,'numnodes','number of nodes'))
+		s = "%s\n%s"%(s,fielddisplay(self,'procspernodes','number of mpi procs per nodes  default and optimal is 32'))
+		s = "%s\n%s"%(s,fielddisplay(self,'mem','Total node memory'))
+		s = "%s\n%s"%(s,fielddisplay(self,'queue','name of the queue'))
+		s = "%s\n%s"%(s,fielddisplay(self,'time','walltime requested in minutes'))
+		s = "%s\n%s"%(s,fielddisplay(self,'codepath','code path on the cluster'))
+		s = "%s\n%s"%(s,fielddisplay(self,'executionpath','execution path on the cluster'))
+		s = "%s\n%s"%(s,fielddisplay(self,'interactive',''))
+		s = "%s\n%s"%(s,fielddisplay(self,'accountname','your cluster account'))
+		return s
+                # }}}
+	def checkconsistency(self,md,solution,analyses):
+		# {{{
+		#mem should not be over 32000mb
+		#numprocs should not be over 4096
+		#we have cpupernodes*numberofcpus=mppwidth and mppnppn=cpupernodes, 
+		#Miscelaneous
+		if not self.login:
+			md = md.checkmessage('login empty')
+		if not self.codepath:
+			md = md.checkmessage('codepath empty')
+		if not self.executionpath:
+			md = md.checkmessage('executionpath empty')
+		if self.interactive==1:
+			md = md.checkmessage('interactive mode not implemented')
+		if self.mem>32000:
+			md = md.checkmessage('asking too much memory max is 32000 per node')
+		return self
+                # }}}
+	def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota):
+		# {{{
+
+		executable='issm.exe'
+		if isdakota:
+			version=IssmConfig('_DAKOTA_VERSION_')[0:2]
+			version=float(version)
+			if version>=6:
+				executable='issm_dakota.exe'
+
+		#write queuing script 
+		shortname=modelname[0:min(12,len(modelname))]
+		fid=open(modelname+'.queue','w')
+		fid.write('#!/bin/bash\n')
+		fid.write('#PBS -N %s \n' % shortname)
+		fid.write('#PBS -l mppwidth=%i,mppnppn=%i\n' % (self.np,self.procspernodes))
+		timestring= str(datetime.timedelta(minutes=self.time))
+		fid.write('#PBS -l walltime=%s\n' % timestring) #walltime is hh:mm:ss
+		fid.write('#PBS -l mppmem=%imb\n' % int(self.mem/self.procspernodes))
+		fid.write('#PBS -A %s\n' % self.accountname) 
+		fid.write('#PBS -o %s/%s/%s.outlog \n' % (self.executionpath,dirname,modelname))
+		fid.write('#PBS -e %s/%s/%s.errlog \n\n' % (self.executionpath,dirname,modelname))
+		fid.write('export ISSM_DIR="%s/../"\n' % self.codepath)
+		fid.write('export CRAY_ROOTFS=DSL\n')
+		fid.write('module swap PrgEnv-cray/5.2.40 PrgEnv-gnu\n')
+		fid.write('module load cray-petsc\n')
+		fid.write('module load cray-tpsl\n')
+		fid.write('module load cray-mpich\n')
+		fid.write('module load gsl\n')
+		fid.write('cd %s/%s/\n\n' % (self.executionpath,dirname))
+		fid.write('aprun -B %s/%s %s %s/%s %s\n' % (self.codepath,executable,str(solution),self.executionpath,dirname,modelname))
+		fid.close()
+
+		# }}}
+	def UploadQueueJob(self,modelname,dirname,filelist):
+		# {{{
+
+		#compress the files into one zip.
+		compressstring='tar -zcf %s.tar.gz ' % dirname
+		for file in filelist:
+			compressstring += ' %s' % file
+		subprocess.call(compressstring,shell=True)
+
+		print 'uploading input file and queueing script'
+		issmscpout(self.name,self.executionpath,self.login,self.port,[dirname+'.tar.gz'])
+
+		# }}}
+	def LaunchQueueJob(self,modelname,dirname,filelist,restart,batch):
+		# {{{
+
+		print 'launching solution sequence on remote cluster'
+		if restart:
+			launchcommand='cd %s && cd %s && qsub %s.queue' % (self.executionpath,dirname,modelname)
+		else:
+			launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && qsub %s.queue' % (self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname)
+		issmssh(self.name,self.login,self.port,launchcommand)
+
+		# }}}
+	def Download(self,dirname,filelist):
+		# {{{
+		#copy files from cluster to current directory
+		directory='%s/%s/' % (self.executionpath,dirname)
+		issmscpin(self.name,self.login,self.port,directory,filelist)
+		# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/hpc.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/hpc.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/hpc.m	(revision 21239)
@@ -0,0 +1,165 @@
+%HPC class definition
+%
+%   Usage:
+%      cluster=hpc();
+%      cluster=hpc('np',3);
+%      cluster=hpc('np',3,'login','username');
+
+classdef hpc
+    properties (SetAccess=public)  
+		 % {{{
+		 name='hpc.oit.uci.edu'
+		 login='';
+		 numnodes=1;
+		 cpuspernode=4; 
+		 port=0;
+		 queue='pub64';
+		 codepath='';
+		 executionpath='';
+		 interactive=0;
+	 end
+	 %}}}
+	 methods
+		 function cluster=hpc(varargin) % {{{
+
+			 %initialize cluster using default settings if provided
+			 if (exist('hpc_settings')==2), hpc_settings; end
+
+			 %use provided options to change fields
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		 end
+		 %}}}
+		 function disp(cluster) % {{{
+			 %  display the object
+			 disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			 disp(sprintf('    name: %s',cluster.name));
+			 disp(sprintf('    login: %s',cluster.login));
+			 disp(sprintf('    port: %i',cluster.port));
+			 disp(sprintf('    numnodes: %i',cluster.numnodes));
+			 disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			 disp(sprintf('    np: %i',cluster.cpuspernode*cluster.numnodes));
+			 disp(sprintf('    queue: %s',cluster.queue));
+			 disp(sprintf('    codepath: %s',cluster.codepath));
+			 disp(sprintf('    executionpath: %s',cluster.executionpath));
+			 disp(sprintf('    interactive: %i',cluster.interactive));
+		 end
+		 %}}}
+		 function numprocs=np(cluster) % {{{
+			 %compute number of processors
+			 numprocs=cluster.numnodes*cluster.cpuspernode;
+		 end
+		 %}}}
+		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			 available_queues={'pub64','free64','free48','free*,pub64','free*'};
+			 queue_requirements_time=[Inf Inf Inf Inf Inf];
+			 queue_requirements_np=[64 64 48 48 48];
+
+			 QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,1)
+
+			 %Miscelaneous
+			 if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			 if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			 if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+
+		 end
+		 %}}}
+		 function BuildKrigingQueueScript(cluster,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#!/bin/bash\n');
+			 fprintf(fid,'#$ -N %s\n',modelname);
+			 fprintf(fid,'#$ -q %s \n',cluster.queue);
+			 fprintf(fid,'#$ -pe one-node-mpi 2-64\n');
+			 fprintf(fid,'#$ -R y\n');
+			 fprintf(fid,'#$ -m beas\n');
+			 fprintf(fid,'#$ -o %s.outlog \n',modelname);
+			 fprintf(fid,'#$ -e %s.errlog \n\n',modelname);
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			 fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,modelname);
+			 fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s\n',cluster.np,cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+			 if ~io_gather, %concatenate the output files:
+				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			 end
+			 fclose(fid);
+		 end
+		 %}}}
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#!/bin/bash\n');
+			 fprintf(fid,'#$ -N %s\n',modelname);
+			 fprintf(fid,'#$ -q %s \n',cluster.queue);
+			 fprintf(fid,'#$ -pe one-node-mpi 2-64\n');
+			 fprintf(fid,'#$ -R y\n');
+			 %fprintf(fid,'#$ -m beas\n');
+			 fprintf(fid,'#$ -o %s.outlog \n',modelname);
+			 fprintf(fid,'#$ -e %s.errlog \n\n',modelname);
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			 fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+			 fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			 if ~io_gather, %concatenate the output files:
+				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			 end
+			 fclose(fid);
+
+			 %in interactive mode, create a run file, and errlog and outlog file
+			 if cluster.interactive,
+				 fid=fopen([modelname '.run'],'w');
+				 fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+				 if ~io_gather, %concatenate the output files:
+					 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				 end
+				 fclose(fid);
+				 fid=fopen([modelname '.errlog'],'w');
+				 fclose(fid);
+				 fid=fopen([modelname '.outlog'],'w');
+				 fclose(fid);
+			 end
+		 end %}}}
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			 %compress the files into one zip.
+			 compressstring=['tar -zcf ' dirname '.tar.gz '];
+			 for i=1:numel(filelist),
+				 compressstring = [compressstring ' ' filelist{i}];
+			 end
+			 if cluster.interactive,
+				 compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			 end
+			 system(compressstring);
+
+			 disp('uploading input file and queueing script');
+			 issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		 end %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
+
+			 disp('launching solution sequence on remote cluster');
+			 if ~isempty(restart)
+				 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && qsub ' modelname '.queue '];
+			 else
+				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && qsub ' modelname '.queue '];
+			 end
+			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		 end %}}}
+		 function Download(cluster,dirname,filelist)% {{{
+
+			 %copy files from cluster to current directory
+			 directory=[cluster.executionpath '/' dirname '/'];
+			 issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		 end %}}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/local.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/local.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/local.js	(revision 21239)
@@ -0,0 +1,22 @@
+//LOCAL cluster class definition
+//
+//   Usage:
+//      local=new local();
+
+function local (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   local cluster class echo: []'));
+	}// }}}
+	this.classname= function(){// {{{
+		return "local";
+	}// }}}
+		this.checkconsistency = function (md,solution,analyses) { //{{{
+		} //}}}
+	//properties 
+	// {{{
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/lonestar.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/lonestar.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/lonestar.m	(revision 21239)
@@ -0,0 +1,199 @@
+%LONESTAR class definition
+%
+%   Usage:
+%      cluster=lonestar();
+%      cluster=lonestar('np',3);
+%      cluster=lonestar('np',3,'login','username');
+
+classdef lonestar
+    properties (SetAccess=public)  
+		 % {{{
+		 name          = 'ls5.tacc.utexas.edu'
+		 login         = '';
+		 modules        = {};
+		 numnodes      = 1;
+		 cpuspernode   = 24;
+		 port          = 0;
+		 queue         = 'normal';
+		 codepath      = '';
+		 executionpath = '';
+		 interactive   = 0;
+		 time          = 48*60*60;
+		 email         = '';
+	 end
+	 %}}}
+	 methods
+		 function cluster=lonestar(varargin) % {{{
+
+			 %initialize cluster using default settings if provided
+			 if (exist('lonestar_settings')==2), lonestar_settings; end
+
+			 %use provided options to change fields
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+
+		 end
+		 %}}}
+		 function disp(cluster) % {{{
+			 %  display the object
+			 disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			 disp(sprintf('    name: %s',cluster.name));
+			 disp(sprintf('    login: %s',cluster.login));
+			 disp(sprintf('    modules: %s',strjoin(cluster.modules,', ')));
+			 disp(sprintf('    port: %i',cluster.port));
+			 disp(sprintf('    numnodes: %i',cluster.numnodes));
+			 disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			 disp(sprintf('    np: %i',cluster.np));
+			 disp(sprintf('    queue: %s',cluster.queue));
+			 disp(sprintf('    codepath: %s',cluster.codepath));
+			 disp(sprintf('    executionpath: %s',cluster.executionpath));
+			 disp(sprintf('    interactive: %i',cluster.interactive));
+			 disp(sprintf('    time: %i',cluster.time));
+			 disp(sprintf('    email: %s',cluster.email));
+		 end
+		 %}}}
+		 function numprocs=np(cluster) % {{{
+			 %compute number of processors
+			 numprocs=cluster.numnodes*cluster.cpuspernode;
+		 end
+		 %}}}
+		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			 available_queues={'normal','development'};
+			 queue_requirements_time=[48*60*60 2*60*60];
+			 queue_requirements_np=[4104 264];
+
+			 QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,cluster.time)
+
+			 %Miscelaneous
+			 if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			 if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			 if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+		 end
+		 %}}}
+		 function BuildKrigingQueueScript(cluster,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#!/bin/bash\n');
+			 fprintf(fid,'#$ -N %s\n',modelname);
+			 fprintf(fid,'#$ -q %s \n',cluster.queue);
+			 fprintf(fid,'#$ -pe one-node-mpi 2-64\n');
+			 fprintf(fid,'#$ -R y\n');
+			 fprintf(fid,'#$ -m beas\n');
+			 fprintf(fid,'#$ -o %s.outlog \n',modelname);
+			 fprintf(fid,'#$ -e %s.errlog \n\n',modelname);
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			 fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,modelname);
+			 fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s\n',cluster.np,cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+			 if ~io_gather, %concatenate the output files:
+				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			 end
+			 fclose(fid);
+		 end
+		 %}}}
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 executable='issm.exe';
+			 if isdakota,
+				 version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				 if (version>=6),
+					 executable='issm_dakota.exe';
+				 end
+			 end
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+
+			 fprintf(fid,'#!/bin/bash\n');
+			 fprintf(fid,'#SBATCH -J %s \n',modelname);
+			 fprintf(fid,'#SBATCH -p %s \n',cluster.queue);
+			 fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			 fprintf(fid,'#SBATCH -e %s.errlog \n',modelname);
+			 fprintf(fid,'#SBATCH -n %i \n',cluster.numnodes*cluster.cpuspernode);
+			 fprintf(fid,'#SBATCH -N %i \n',cluster.numnodes);
+			 fprintf(fid,'#SBATCH -t %02i:%02i:00 \n\n',floor(cluster.time/3600),floor(mod(cluster.time,3600)/60));
+			 for i=1:numel(cluster.modules),
+				 fprintf(fid,['module load ' cluster.modules{i} '\n']);
+			 end
+
+			 %fprintf(fid,'export KMP_AFFINITY="granularity=fine,compact,verbose" \n\n');
+
+			 if length(find(cluster.email=='@'))>0
+				 %fprintf(fid,'#SBATCH --mail-user=%s \n',cluster.email);
+				 %fprintf(fid,'#SBATCH --mail-type=end \n\n');
+
+				 fprintf(fid,'ssh login1 "mail -s ''SLURM Jobid=${SLURM_JOBID} Name=${SLURM_JOB_NAME} Began on Lonestar 5.'' %s <<< ''Job Started'' " \n\n',cluster.email);
+			 end
+
+			 fprintf(fid,'export PATH="$PATH:."\n\n');
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			 fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+			 fprintf(fid,'ibrun -np %i %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+			 if ~io_gather, %concatenate the output files:
+				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			 end
+
+			 if length(find(cluster.email=='@'))>0
+				 fprintf(fid,'\n');
+				 fprintf(fid,'ssh login1 "mail -s ''SLURM Jobid=${SLURM_JOBID} Name=${SLURM_JOB_NAME} Ended on Lonestar 5.'' %s <<< ''Job Ended'' " \n\n',cluster.email);
+			 end
+			 fclose(fid);
+
+			 %in interactive mode, create a run file, and errlog and outlog file
+			 if cluster.interactive,
+				 fid=fopen([modelname '.run'],'w');
+				 fprintf(fid,'ibrun -np %i %s/%s %s %s %s\n',cluster.np,executable,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+				 if ~io_gather, %concatenate the output files:
+					 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				 end
+				 fclose(fid);
+				 fid=fopen([modelname '.errlog'],'w');
+				 fclose(fid);
+				 fid=fopen([modelname '.outlog'],'w');
+				 fclose(fid);
+			 end
+		 end %}}}
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			 %compress the files into one zip.
+			 compressstring=['tar -zcf ' dirname '.tar.gz '];
+			 for i=1:numel(filelist),
+				 compressstring = [compressstring ' ' filelist{i}];
+			 end
+			 if cluster.interactive,
+				 compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			 end
+			 system(compressstring);
+
+			 disp('uploading input file and queueing script');
+			 issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		 end %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch)% {{{
+
+			 disp('launching solution sequence on remote cluster');
+			 if ~isempty(restart)
+				 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && sbatch ' modelname '.queue '];
+			 else
+				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && sbatch ' modelname '.queue '];
+			 end
+			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		 end %}}}
+		 function Download(cluster,dirname,filelist)% {{{
+
+			 %copy files from cluster to current directory
+			 directory=[cluster.executionpath '/' dirname '/'];
+			 issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		 end %}}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/pfe.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/pfe.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/pfe.m	(revision 21239)
@@ -0,0 +1,454 @@
+%PFE class definition
+%
+%   Usage:
+%      cluster=pfe();
+%      cluster=pfe('np',3);
+%      cluster=pfe('np',3,'login','username');
+
+classdef pfe
+    properties (SetAccess=public)  
+		 % {{{
+		 name           = 'pfe'
+		 login          = '';
+		 modules        = {'comp-intel/2015.0.090' 'mpi-sgi/mpt.2.12r16'};
+		 numnodes       = 20;
+		 cpuspernode    = 8;
+		 port           = 1025;
+		 queue          = 'long';
+		 time           = 12*60;
+		 processor      = 'ivy';
+		 codepath       = '';
+		 executionpath  = '';
+		 grouplist     = 's1010';
+		 interactive    = 0;
+		 bbftp          = 0;
+		 numstreams     = 8;
+		 hyperthreading = 0;
+	 end
+	 %}}}
+	 methods
+		 function cluster=pfe(varargin) % {{{
+
+			 %initialize cluster using default settings if provided
+			 if (exist('pfe_settings')==2), pfe_settings; end
+
+			 %use provided options to change fields
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		 end
+		 %}}}
+		 function disp(cluster) % {{{
+			 %  display the object
+			 disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			 disp(sprintf('    name: %s',cluster.name));
+			 disp(sprintf('    login: %s',cluster.login));
+			 modules=''; for i=1:length(cluster.modules), modules=[modules cluster.modules{i} ',']; end; modules=modules(1:end-1); 
+			 disp(sprintf('    modules: %s',modules));
+			 disp(sprintf('    port: %i',cluster.port));
+			 disp(sprintf('    numnodes: %i',cluster.numnodes));
+			 disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			 disp(sprintf('    np: %i',cluster.cpuspernode*cluster.numnodes));
+			 disp(sprintf('    queue: %s',cluster.queue));
+			 disp(sprintf('    time: %i',cluster.time));
+			 disp(sprintf('    processor: %s',cluster.processor));
+			 disp(sprintf('    codepath: %s',cluster.codepath));
+			 disp(sprintf('    executionpath: %s',cluster.executionpath));
+			 disp(sprintf('    grouplist: %s',cluster.grouplist));
+			 disp(sprintf('    interactive: %i',cluster.interactive));
+			 disp(sprintf('    hyperthreading: %i',cluster.hyperthreading));
+		 end
+		 %}}}
+		 function numprocs=np(cluster) % {{{
+			 %compute number of processors
+			 numprocs=cluster.numnodes*cluster.cpuspernode;
+		 end
+		 %}}}
+		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			 available_queues={'long','normal','debug','devel','alphatst@pbspl233'};
+			 queue_requirements_time=[5*24*60 8*60 2*60 2*60 24*60];
+			 queue_requirements_np=[2048 2048 150 150 2048];
+
+			 QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,cluster.time)
+
+			 %now, check cluster.cpuspernode according to processor type
+			 if strcmpi(cluster.processor,'wes'),
+				 if cluster.hyperthreading,
+					 if ((cluster.cpuspernode>24 ) | (cluster.cpuspernode<1)),
+						 md = checkmessage(md,'cpuspernode should be between 1 and 24 for ''wes'' processors in hyperthreading mode');
+					 end
+				 else
+					 if ((cluster.cpuspernode>12 ) | (cluster.cpuspernode<1)),
+						 md = checkmessage(md,'cpuspernode should be between 1 and 12 for ''wes'' processors');
+					 end
+				 end
+			 elseif strcmpi(cluster.processor,'ivy'),
+				 if cluster.hyperthreading,
+					 if ((cluster.cpuspernode>40 ) | (cluster.cpuspernode<1)),
+						 md = checkmessage(md,'cpuspernode should be between 1 and 40 for ''ivy'' processors in hyperthreading mode');
+					 end
+				 else
+					 if ((cluster.cpuspernode>20 ) | (cluster.cpuspernode<1)),
+						 md = checkmessage(md,'cpuspernode should be between 1 and 20 for ''ivy'' processors');
+					 end
+				 end
+			 elseif strcmpi(cluster.processor,'bro'),
+				 if cluster.hyperthreading,
+					 if ((cluster.cpuspernode>56 ) | (cluster.cpuspernode<1)),
+						 md = checkmessage(md,'cpuspernode should be between 1 and 56 for ''bro'' processors in hyperthreading mode');
+					 end
+				 else
+					 if ((cluster.cpuspernode>28 ) | (cluster.cpuspernode<1)),
+						 md = checkmessage(md,'cpuspernode should be between 1 and 28 for ''bro'' processors');
+					 end
+				 end
+			 elseif strcmpi(cluster.processor,'has'),
+				 if cluster.hyperthreading,
+					 if ((cluster.cpuspernode>48 ) | (cluster.cpuspernode<1)),
+						 md = checkmessage(md,'cpuspernode should be between 1 and 48 for ''has'' processors in hyperthreading mode');
+					 end
+				 else
+					 if ((cluster.cpuspernode>24 ) | (cluster.cpuspernode<1)),
+						 md = checkmessage(md,'cpuspernode should be between 1 and 24 for ''has'' processors');
+					 end
+				 end
+			 
+			 elseif strcmpi(cluster.processor,'san'),
+				 if cluster.hyperthreading,
+					 if ((cluster.cpuspernode>32 ) | (cluster.cpuspernode<1)),
+						 md = checkmessage(md,'cpuspernode should be between 1 and 32 for ''san'' processors in hyperthreading mode');
+					 end
+				 else
+					 if ((cluster.cpuspernode>16 ) | (cluster.cpuspernode<1)),
+						 md = checkmessage(md,'cpuspernode should be between 1 and 16 for ''san'' processors');
+					 end
+				 end
+
+			 else
+				 md = checkmessage(md,'unknown processor type, should be ''wes'' or ''has'' or ''ivy'' or ''san''');
+			 end
+
+			 %Miscelaneous
+			 if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			 if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			 if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+			 if isempty(cluster.grouplist), md = checkmessage(md,'grouplist empty'); end
+
+		 end
+		 %}}}
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
+
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 executable='issm.exe';
+			 if isdakota,
+				 version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				 if (version>=6),
+					 executable='issm_dakota.exe';
+				 end
+			 end
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#PBS -S /bin/bash\n');
+%			 fprintf(fid,'#PBS -N %s\n',modelname);
+			 fprintf(fid,'#PBS -l select=%i:ncpus=%i:model=%s\n',cluster.numnodes,cluster.cpuspernode,cluster.processor);
+			 fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); %walltime is in seconds.
+			 fprintf(fid,'#PBS -q %s \n',cluster.queue);
+			 fprintf(fid,'#PBS -W group_list=%s\n',cluster.grouplist);
+			 fprintf(fid,'#PBS -m e\n');
+			 fprintf(fid,'#PBS -o %s.outlog \n',[cluster.executionpath '/' dirname '/' modelname]);
+			 fprintf(fid,'#PBS -e %s.errlog \n\n',[cluster.executionpath '/' dirname '/' modelname]);
+			 fprintf(fid,'. /usr/share/modules/init/bash\n\n');
+			 fprintf(fid,'module load comp-intel/2015.0.090\n');
+			 fprintf(fid,'module load mpi-sgi/mpt.2.12r16\n');
+			 fprintf(fid,'export PATH="$PATH:."\n\n');
+			 fprintf(fid,'export MPI_GROUP_MAX=64\n\n');
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			 fprintf(fid,'cd %s/%s/\n\n',cluster.executionpath,dirname);
+			 if ~isvalgrind,
+				 fprintf(fid,'mpiexec -np %i %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+			 else
+				 fprintf(fid,'mpiexec -np %i valgrind --leak-check=full %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+			 end
+			 if ~io_gather, %concatenate the output files:
+				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			 end
+			 fclose(fid);
+
+			 %in interactive mode, create a run file, and errlog and outlog file
+			 if cluster.interactive,
+				 fid=fopen([modelname '.run'],'w');
+				 if cluster.interactive==10,
+						 fprintf(fid,'module unload mpi-mvapich2/1.4.1/gcc\n');
+						 fprintf(fid,'mpiexec -np %i %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,solution,[pwd() '/run'],modelname);
+				 else
+					 if ~isvalgrind,
+						 fprintf(fid,'mpiexec -np %i %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,solution,[cluster.executionpath '/Interactive' num2str(cluster.interactive)],modelname);
+					 else
+						 fprintf(fid,'mpiexec -np %i valgrind --leak-check=full %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,solution,[cluster.executionpath '/Interactive' num2str(cluster.interactive)],modelname);
+					 end
+				 end
+				 if ~io_gather, %concatenate the output files:
+					 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				 end
+				 fclose(fid);
+				 fid=fopen([modelname '.errlog'],'w');
+				 fclose(fid);
+				 fid=fopen([modelname '.outlog'],'w');
+				 fclose(fid);
+			 end
+		 end %}}}
+		 function BuildQueueScriptMultipleModels(cluster,dirname,modelname,solution,dirnames,modelnames,nps) % {{{
+
+			 %some checks: 
+			 if isempty(modelname), error('BuildQueueScriptMultipleModels error message: need a non empty model name!');end
+
+			 %what is the executable being called? 
+			 executable='issm_slr.exe';
+
+			 if ispc(), error('BuildQueueScriptMultipleModels not support yet on windows machines');end;
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+
+			 fprintf(fid,'#PBS -S /bin/bash\n');
+			 fprintf(fid,'#PBS -N %s\n',modelname);
+			 fprintf(fid,'#PBS -l select=%i:ncpus=%i:model=%s\n',cluster.numnodes,cluster.cpuspernode,cluster.processor);
+			 fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); %walltime is in seconds.
+			 fprintf(fid,'#PBS -q %s \n',cluster.queue);
+			 fprintf(fid,'#PBS -W group_list=%s\n',cluster.grouplist);
+			 fprintf(fid,'#PBS -m e\n');
+			 fprintf(fid,'#PBS -o %s.outlog \n',[cluster.executionpath '/' dirname '/' modelname]);
+			 fprintf(fid,'#PBS -e %s.errlog \n\n',[cluster.executionpath '/' dirname '/' modelname]);
+			 fprintf(fid,'. /usr/share/modules/init/bash\n\n');
+			 fprintf(fid,'module load comp-intel/2015.0.090\n');
+			 fprintf(fid,'module load mpi-sgi/mpt.2.12r16\n');
+			 fprintf(fid,'export PATH="$PATH:."\n\n');
+			 fprintf(fid,'export MPI_GROUP_MAX=64\n\n');
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			 fprintf(fid,'cd %s/%s/\n\n',cluster.executionpath,dirname);
+
+			 %number of cpus: 
+			 mpistring=sprintf('mpiexec -np %i ',cluster.numnodes*cluster.cpuspernode);
+
+			 %executable: 
+			 mpistring=[mpistring sprintf('%s/%s ',cluster.codepath,executable)];
+
+			 %solution name: 
+			 mpistring=[mpistring sprintf('%s ',solution)];
+
+			 %execution directory and model name: 
+			 mpistring=[mpistring sprintf('%s/%s %s',cluster.executionpath,dirname,modelname)];
+
+			 %inform main executable of how many icecaps, glaciers and earth models are being run: 
+			 mpistring=[mpistring sprintf(' %i ',length(dirnames))];
+
+			 %icecaps, glaciers and earth location, names and number of processors associated:
+			 for i=1:length(dirnames),
+				 mpistring=[mpistring sprintf(' %s/%s %s %i ',cluster.executionpath,dirnames{i},modelnames{i},nps{i})];
+			 end
+
+			 %write this long string to disk: 
+			 fprintf(fid,mpistring);
+			 fclose(fid);
+
+			 if cluster.interactive,
+				 fid=fopen([modelname '.run'],'w');
+
+				 %number of cpus: 
+				 mpistring=sprintf('mpiexec -np %i ',cluster.numnodes*cluster.cpuspernode);
+
+				 %executable: 
+				 mpistring=[mpistring sprintf('%s/%s ',cluster.codepath,executable)];
+
+				 %solution name: 
+				 mpistring=[mpistring sprintf('%s ',solution)];
+
+				 %execution directory and model name: 
+				 mpistring=[mpistring sprintf('%s/%s %s',cluster.executionpath,dirname,modelname)];
+
+				 %inform main executable of how many icecaps, glaciers and earth models are being run: 
+				 mpistring=[mpistring sprintf(' %i ',length(dirnames))];
+
+				 %icecaps, glaciers and earth location, names and number of processors associated:
+				 for i=1:length(dirnames),
+					 mpistring=[mpistring sprintf(' %s/Interactive%i %s %i ',cluster.executionpath,cluster.interactive,modelnames{i},nps{i})];
+				 end
+
+				 %write this long string to disk: 
+				 fprintf(fid,mpistring);
+				 fclose(fid);
+
+				 fid=fopen([modelname '.errlog'],'w');
+				 fclose(fid);
+				 fid=fopen([modelname '.outlog'],'w');
+				 fclose(fid);
+			 end
+		 end
+		 %}}}
+		 function BuildKrigingQueueScript(cluster,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#PBS -S /bin/bash\n');
+			 %			 fprintf(fid,'#PBS -N %s\n',modelname);
+			 fprintf(fid,'#PBS -l select=%i:ncpus=%i:model=%s\n',cluster.numnodes,cluster.cpuspernode,cluster.processor);
+			 fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); %walltime is in seconds.
+			 fprintf(fid,'#PBS -q %s \n',cluster.queue);
+			 fprintf(fid,'#PBS -W group_list=%s\n',cluster.grouplist);
+			 fprintf(fid,'#PBS -m e\n');
+			 fprintf(fid,'#PBS -o %s.outlog \n',modelname);
+			 fprintf(fid,'#PBS -e %s.errlog \n\n',modelname);
+			 fprintf(fid,'. /usr/share/modules/init/bash\n\n');
+			 for i=1:numel(cluster.modules),
+				 fprintf(fid,['module load ' cluster.modules{i} '\n']);
+			 end
+			 fprintf(fid,'export PATH="$PATH:."\n');
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			 fprintf(fid,'export MPI_GROUP_MAX=64\n\n');
+			 fprintf(fid,'cd %s/%s/\n\n',cluster.executionpath,modelname);
+			 fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s\n',cluster.np,cluster.codepath,[cluster.executionpath '/' modelname],modelname); %FIXME
+			 if ~io_gather, %concatenate the output files:
+				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			 end
+			 fclose(fid);
+
+			 %in interactive mode, create a run file, and errlog and outlog file
+			 if cluster.interactive,
+				 fid=fopen([modelname '.run'],'w');
+				 if ~isvalgrind,
+					 fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s\n',cluster.np,cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+				 else
+					 fprintf(fid,'mpiexec -np %i valgrind --leak-check=full %s/kriging.exe %s %s\n',cluster.np,cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+				 end
+				 if ~io_gather, %concatenate the output files:
+					 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				 end
+				 fclose(fid);
+				 fid=fopen([modelname '.errlog'],'w');
+				 fclose(fid);
+				 fid=fopen([modelname '.outlog'],'w');
+				 fclose(fid);
+			 end
+		 end %}}}
+		 function BuildOceanQueueScript(np,cluster,modelname) % {{{
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#PBS -S /bin/bash\n');
+			 fprintf(fid,'#PBS -l select=1:ncpus=%i:model=%s\n',np,cluster.processor);
+			 fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); %walltime is in seconds.
+			 fprintf(fid,'#PBS -q %s \n',cluster.queue);
+			 fprintf(fid,'#PBS -W group_list=%s\n',cluster.grouplist);
+			 fprintf(fid,'#PBS -m e\n');
+			 fprintf(fid,'#PBS -o %s.outlog \n',modelname);
+			 fprintf(fid,'#PBS -e %s.errlog \n\n',modelname);
+			 fprintf(fid,'. /usr/share/modules/init/bash\n\n');
+			 fprintf(fid,'module load comp-intel/2015.0.090\n');
+			 fprintf(fid,'module load test/mpt.2.11r8\n');
+			 fprintf(fid,'module load netcdf/4.0\n');
+			 fprintf(fid,'module load mpi-mvapich2/1.4.1/gcc\n');
+			 fprintf(fid,'module load gcc/4.4.4\n');
+			 fprintf(fid,'export PATH="$PATH:."\n');
+			 fprintf(fid,'export MPI_GROUP_MAX=64\n\n');
+			 fprintf(fid,['cd ' pwd() ' \n\n']);
+			 fprintf(fid,'mpiexec -np %i ./mitgcmuv\n',np); 
+		%	 if ~io_gather, %concatenate the output files:
+		%		 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+		%	 end
+			 fclose(fid);
+
+			 %in interactive mode, create a run file, and errlog and outlog file
+			 if cluster.interactive,
+				 fid=fopen([modelname '.run'],'w');
+				 fprintf(fid,'module load mpi-mvapich2/1.4.1/gcc\n');
+				 fprintf(fid,['mpiexec -np %i ./mitgcmuv \n'],np);
+				 fprintf(fid,['touch ' modelname '.lock %s\n']);
+				 fclose(fid);
+				 fid=fopen([modelname '.errlog'],'w');
+				 fclose(fid);
+				 fid=fopen([modelname '.outlog'],'w');
+				 fclose(fid);
+			 end
+
+		 end %}}}
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			 %compress the files into one zip.
+			 compressstring=['tar -zcf ' dirname '.tar.gz '];
+			 for i=1:numel(filelist),
+				 compressstring = [compressstring ' ' filelist{i}];
+			 end
+			 if cluster.interactive,
+				 compressstring = [compressstring ' ' modelname '.run '  modelname '.errlog ' modelname '.outlog '];
+			 end
+			 system(compressstring);
+
+			 disp('uploading input file and queueing script');
+			 if cluster.interactive==10,
+				 directory=[pwd() '/run/'];
+			 elseif cluster.interactive,
+				 directory=[cluster.executionpath '/Interactive' num2str(cluster.interactive)];
+			 else 
+				 directory=cluster.executionpath;
+			 end
+
+			 if ~cluster.bbftp,
+				 issmscpout(cluster.name,directory,cluster.login,cluster.port,{[dirname '.tar.gz']});
+			 else
+				 issmbbftpout(cluster.name,directory,cluster.login,cluster.port,cluster.numstreams,{[dirname '.tar.gz']});
+			 end
+
+		 end
+		 %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch)% {{{
+
+			 %lauch command, to be executed via ssh
+			 if ~cluster.interactive, 
+				 if ~isempty(restart)
+					 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+				 else
+					 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+				 end
+			 else
+				 if ~isempty(restart)
+					 launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive)];
+				 else
+					 if cluster.interactive==10,
+						 launchcommand=['cd ' pwd() '/run && tar -zxf ' dirname '.tar.gz'];
+					 else
+						 launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive) ' && tar -zxf ' dirname '.tar.gz'];
+					 end
+				 end
+			 end
+
+			 disp('launching solution sequence on remote cluster');
+			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		 end
+		 %}}}
+		 function Download(cluster,dirname,filelist)% {{{
+
+			 %copy files from cluster to current directory
+			 if cluster.interactive==10,
+				 directory=[pwd() '/run/'];
+			 elseif ~cluster.interactive,
+				 directory=[cluster.executionpath '/' dirname '/'];
+			 else
+				 directory=[cluster.executionpath '/Interactive' num2str(cluster.interactive) '/'];
+			 end
+
+			 if ~cluster.bbftp,
+				 issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+			 else
+				 issmbbftpin(cluster.name, cluster.login, cluster.port, cluster.numstreams, directory, filelist);
+			 end
+
+		 end %}}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/pfe.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/pfe.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/pfe.py	(revision 21239)
@@ -0,0 +1,198 @@
+# import socket
+# import os
+# import math
+import subprocess
+from fielddisplay import fielddisplay
+from pairoptions import pairoptions
+from issmssh import issmssh
+from issmscpin import issmscpin
+from issmscpout import issmscpout
+from QueueRequirements import QueueRequirements
+try:
+	from pfe_settings import pfe_settings
+except ImportError:
+	print 'You need pfe_settings.py to proceed, check presence and sys.path'
+	
+class pfe(object):
+	"""
+	PFE cluster class definition
+ 
+	   Usage:
+	      cluster=pfe();
+	      cluster=pfe('np',3);
+	      cluster=pfe('np',3,'login','username');
+	"""
+
+	def __init__(self,*args):
+		# {{{
+
+		self.name           = 'pfe'
+		self.login          = ''
+		self.numnodes       = 20
+		self.cpuspernode    = 8
+		self.port           = 1025
+		self.queue          = 'long'
+		self.time           = 12*60
+		self.processor      = 'wes'
+		self.codepath       = ''
+		self.executionpath  = ''
+		self.grouplist      = 's1010'
+		self.interactive    = 0
+		self.bbftp          = 0
+		self.numstreams     = 8
+		self.hyperthreading = 0
+
+		#use provided options to change fields
+		options=pairoptions(*args)
+
+		#initialize cluster using user settings if provided
+		self=pfe_settings(self)
+		self.np=self.nprocs()
+		#OK get other fields
+		self=options.AssignObjectFields(self)
+		
+		# }}}
+
+	def __repr__(self):
+		# {{{
+		#  display the object
+		s = "class pfe object:"
+		s	= "%s\n%s"%(s,fielddisplay(self,'name','name of the cluster'))
+		s	= "%s\n%s"%(s,fielddisplay(self,'login','login'))
+		s = "%s\n%s"%(s,fielddisplay(self,'numnodes','number of nodes'))
+		s = "%s\n%s"%(s,fielddisplay(self,'cpuspernode','number of nodes per CPUs'))
+		s = "%s\n%s"%(s,fielddisplay(self,'np','number of CPUs'))
+		s = "%s\n%s"%(s,fielddisplay(self,'port','machine access port'))
+		s = "%s\n%s"%(s,fielddisplay(self,'codepath','code path on the cluster'))
+		s = "%s\n%s"%(s,fielddisplay(self,'executionpath','execution path on the cluster'))
+		s = "%s\n%s"%(s,fielddisplay(self,'queue','name of the queue'))
+		s = "%s\n%s"%(s,fielddisplay(self,'time','walltime requested'))
+		s = "%s\n%s"%(s,fielddisplay(self,'processor','type of processor'))
+		s = "%s\n%s"%(s,fielddisplay(self,'grouplist','name of the group'))
+		s = "%s\n%s"%(s,fielddisplay(self,'interactive',''))
+		s = "%s\n%s"%(s,fielddisplay(self,'bbftp',''))
+		s = "%s\n%s"%(s,fielddisplay(self,'numstreams',''))
+		s = "%s\n%s"%(s,fielddisplay(self,'hyperthreading',''))
+		return s
+	# }}}
+
+	def nprocs(self):
+		# {{{
+		self.np=self.numnodes*self.cpuspernode
+		return self.np
+		# }}}
+	def checkconsistency(self,md,solution,analyses):
+		# {{{
+
+
+		queuedict = {'long': [5*24*60, 2048],
+								 'normal': [8*60, 2048],
+								 'debug':[2*60,150],
+								 'devel':[2*60,150]}
+		QueueRequirements(queuedict,self.queue,self.nprocs(),self.time)
+
+		#now, check cluster.cpuspernode according to processor type
+		if self.processor=='har' or self.processor=='neh':
+			if self.hyperthreading:
+				if not 0<self.cpuspernode<17:
+					md = md.checkmessage('cpuspernode should be between 1 and 16 for ''neh'' and ''har'' processors in hyperthreading mode')
+			else:
+				if not 0<self.cpuspernode<9:
+					md = md.checkmessage('cpuspernode should be between 1 and 8 for ''neh'' and ''har'' processors')
+
+		elif self.processor=='wes':
+			if self.hyperthreading:
+				if not 0<self.cpuspernode<25:
+					md = md.checkmessage('cpuspernode should be between 1 and 24 for ''wes'' processors in hyperthreading mode')
+			else:
+				if not 0<self.cpuspernode<13:
+					md = md.checkmessage('cpuspernode should be between 1 and 12 for ''wes'' processors')
+
+		elif self.processor=='ivy':
+			if self.hyperthreading:
+				if not 0<self.cpuspernode<41:
+					md = md.checkmessage('cpuspernode should be between 1 and 40 for ''ivy'' processors in hyperthreading mode')
+			else:
+				if not 0<self.cpuspernode<21:
+					md = md.checkmessage('cpuspernode should be between 1 and 20 for ''ivy'' processors')
+		else:
+			md = md.checkmessage('unknown processor type, should be ''neh'',''wes'' or ''har'' or ''ivy''')
+	
+		#Miscelaneous
+		if not self.login:
+			md = md.checkmessage('login empty')
+		if not self.codepath:
+			md = md.checkmessage('codepath empty')
+		if not self.executionpath:
+			md = md.checkmessage('executionpath empty')
+		if not self.grouplist:
+			md = md.checkmessage('grouplist empty')
+		if self.interactive==1:
+			md = md.checkmessage('interactive mode not implemented')
+			
+		return self
+	# }}}
+	def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota):
+		# {{{
+
+		executable='issm.exe'
+		if isdakota:
+			version=IssmConfig('_DAKOTA_VERSION_')[0:2]
+			version=float(version)
+			if version>=6:
+				executable='issm_dakota.exe'
+
+		#write queuing script 
+		fid=open(modelname+'.queue','w')
+		fid.write('#PBS -S /bin/bash\n')
+		fid.write('#PBS -l select=%i:ncpus=%i:model=%s\n' % (self.numnodes,self.cpuspernode,self.processor))
+		fid.write('#PBS -l walltime=%i\n' % (self.time*60))
+		fid.write('#PBS -q %s \n' % self.queue)
+		fid.write('#PBS -W group_list=%s\n' % self.grouplist)
+		fid.write('#PBS -m e\n')
+		fid.write('#PBS -o %s/%s/%s.outlog \n' % (self.executionpath,dirname,modelname))
+		fid.write('#PBS -e %s/%s/%s.errlog \n\n' % (self.executionpath,dirname,modelname))
+		fid.write('. /usr/share/modules/init/bash\n\n')
+		fid.write('module load comp-intel/2015.0.090\n')
+		fid.write('module load mpi-sgi/mpt.2.11r13\n')
+		fid.write('export PATH="$PATH:."\n\n')
+		fid.write('export MPI_GROUP_MAX=64\n\n')
+		fid.write('export ISSM_DIR="%s/../"\n' % self.codepath)
+		fid.write('source $ISSM_DIR/etc/environment.sh\n')
+		fid.write('cd %s/%s/\n\n' % (self.executionpath,dirname))
+		fid.write('mpiexec -np %i %s/%s %s %s/%s %s\n' % (self.nprocs(),self.codepath,executable,str(solution),self.executionpath,dirname,modelname))
+		
+		fid.close()
+
+	# }}}
+	def UploadQueueJob(self,modelname,dirname,filelist):
+			# {{{
+
+		#compress the files into one zip.
+		compressstring='tar -zcf %s.tar.gz ' % dirname
+		for file in filelist:
+			compressstring += ' %s' % file
+		subprocess.call(compressstring,shell=True)
+
+		print 'uploading input file and queueing script'
+		issmscpout(self.name,self.executionpath,self.login,self.port,[dirname+'.tar.gz'])
+
+		# }}}
+	def LaunchQueueJob(self,modelname,dirname,filelist,restart,batch):
+			# {{{
+
+		print 'launching solution sequence on remote cluster'
+		if restart:
+			launchcommand='cd %s && cd %s && qsub %s.queue' % (self.executionpath,dirname,modelname)
+		else:
+			launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && qsub %s.queue' % (self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname)
+		issmssh(self.name,self.login,self.port,launchcommand)
+
+		# }}}
+	def Download(self,dirname,filelist):
+		# {{{
+
+		#copy files from cluster to current directory
+		directory='%s/%s/' % (self.executionpath,dirname)
+		issmscpin(self.name,self.login,self.port,directory,filelist)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/pollux.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/pollux.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/pollux.m	(revision 21239)
@@ -0,0 +1,104 @@
+%POLLUX class definition
+%
+%   Usage:
+%      cluster=pollux();
+%      cluster=pollux('np',3);
+%      cluster=pollux('np',3,'login','username');
+
+classdef pollux
+    properties (SetAccess=public) 
+		 % {{{
+		 name='pollux'
+		 login='username';
+		 np=128;
+		 port=0;
+		 queue='shortp';
+		 time=180;
+		 codepath='/workc/edw/issm-2.0/bin'
+		 executionpath='/workc/edw/Testing/Execution'
+		 %}}}
+	 end
+	 methods
+		 function cluster=pollux(varargin) % {{{
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		 end
+		 %}}}
+		 function disp(cluster) % {{{
+			 %  display the object
+			 disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			 disp(sprintf('    name: %s',cluster.name));
+			 disp(sprintf('    login: %s',cluster.login));
+			 disp(sprintf('    port: %i',cluster.port));
+			 disp(sprintf('    np: %i',cluster.np));
+			 disp(sprintf('    queue: %s',cluster.queue));
+			 disp(sprintf('    time: %i',cluster.time));
+			 disp(sprintf('    codepath: %s',cluster.codepath));
+			 disp(sprintf('    executionpath: %s',cluster.executionpath));
+		 end
+		 %}}}
+		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			 available_queues={'shortp','longp'};
+			 queue_requirements_time=[180 720];
+			 queue_requirements_np=[128 128];
+
+			 QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,cluster.time)
+		 end
+		 %}}}
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#!/bin/sh\n');
+			 fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); %walltime is in seconds.
+			 fprintf(fid,'#PBS -N %s\n',modelname);
+			 fprintf(fid,'#PBS -l ncpus=%i\n',cluster.np);
+			 if ~isempty(queue),
+				 fprintf(fid,'#PBS -q %s\n',cluster.queue);
+			 end
+			 fprintf(fid,'#PBS -o %s.outlog \n',modelname);
+			 fprintf(fid,'#PBS -e %s.errlog \n',modelname);
+			 fprintf(fid,'export PBS_O_WORKDIR=%s\n',[cluster.executionpath '/' dirname]);
+			 fprintf(fid,'cd $PBS_O_WORKDIR\n');
+			 fprintf(fid,'export OMP_NUM_THREADS=1\n');
+			 fprintf(fid,'dplace -s1 -c0-%i mpiexec -np %i %s/issm.exe %s %s %s',cluster.np-1,cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			 fclose(fid);
+
+		 end
+		 %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
+
+			 disp('launching solution sequence on remote cluster');
+			 if ~isempty(restart)
+				 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+			 else
+				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+			 end
+			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		 end %}}}
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			 %compress the files into one zip.
+			 compressstring=['tar -zcf ' dirname '.tar.gz '];
+			 for i=1:numel(filelist),
+				 compressstring = [compressstring ' ' filelist{i}];
+			 end
+			 if cluster.interactive,
+				 compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			 end
+			 system(compressstring);
+
+		 end %}}}
+		 function Download(cluster,dirname,filelist)% {{{
+
+			 %copy files from cluster to current directory
+			 directory=[cluster.executionpath '/' dirname '/'];
+			 issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		 end %}}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/raijin.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/raijin.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/raijin.m	(revision 21239)
@@ -0,0 +1,125 @@
+%RAIJIN class definition
+%
+%   Usage:
+%      cluster=raijin();
+%      cluster=raijin('np',3);
+%      cluster=raijin('np',3,'login','username');
+
+classdef raijin
+    properties (SetAccess=public)  
+		 % {{{
+		 name='';
+		 login='';
+		 np=0;
+                 mem=0;
+                 time=0;
+                 project='';
+                 email='';
+		 port=0;
+		 queue='';
+		 codepath='';
+		 executionpath='';
+                 modules={};
+	 end
+	 %}}}
+	 methods
+		 function cluster=raijin(varargin) % {{{
+
+			 %initialize cluster using default settings if provided
+			 if (exist('raijin_settings')==2), raijin_settings; end
+
+			 %use provided options to change fields
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		 end
+		 %}}}
+		 function disp(cluster) % {{{
+			 %  display the object
+			 disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			 disp(sprintf('    name: %s',cluster.name));
+			 disp(sprintf('    login: %s',cluster.login));
+			 disp(sprintf('    port: %i',cluster.port));
+			 disp(sprintf('    mem: %i',cluster.mem));
+			 disp(sprintf('    time: %i',cluster.time));
+			 disp(sprintf('    np: %i',cluster.np));
+			 disp(sprintf('    queue: %s',cluster.queue));
+                         disp(sprintf('    project: %s',cluster.project));
+			 disp(sprintf('    codepath: %s',cluster.codepath));
+			 disp(sprintf('    executionpath: %s',cluster.executionpath));
+		 end
+		 %}}}
+		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			 available_queues={'express', 'normal'};
+			 queue_requirements_time=[5*60 40*60];
+			 queue_requirements_np=[256 1024];
+
+			 QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,1)
+
+			 %Miscelaneous
+			 if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			 if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			 if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+
+		 end
+		 %}}}
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
+                     
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+                         fprintf(fid,'#PBS -S /bin/bash\n');
+                         fprintf(fid,'#PBS -P %s\n', cluster.project);
+                         fprintf(fid,'#PBS -q %s\n',cluster.queue);
+                         fprintf(fid,'#PBS -l ncpus=%i\n',cluster.np);
+                         fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); % walltime is in seconds
+                         fprintf(fid,'#PBS -l mem=%igb\n', cluster.mem);
+                         fprintf(fid,'#PBS -M %s\n', cluster.email);
+                         fprintf(fid,'#PBS -o %s.outlog\n',(modelname));
+                         fprintf(fid,'#PBS -e %s.errlog\n',(modelname));
+                         fprintf(fid,'#PBS -l wd\n\n');
+                         fprintf(fid,'source ~/.bashrc\n');
+                         fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');
+                         for i=1:numel(cluster.modules)
+                             fprintf(fid,'module load %s\n', cluster.modules{i});
+                         end
+			 fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			 if ~io_gather, %concatenate the output files:
+				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			 end
+			 fclose(fid);
+		 end %}}}
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			 %compress the files into one zip.
+			 compressstring=['tar -zcf ' dirname '.tar.gz '];
+			 for i=1:numel(filelist),
+				 compressstring = [compressstring ' ' filelist{i}];
+			 end
+			 system(compressstring);
+
+			 disp('uploading input file and queueing script');
+			 issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		 end %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch)% {{{
+                         
+			 disp('launching solution sequence on remote cluster');
+			 if ~isempty(restart)
+				 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && qsub ' modelname '.queue '];
+			 else
+				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && qsub ' modelname '.queue '];
+			 end
+			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		 end %}}}
+		 function Download(cluster,dirname,filelist)% {{{
+
+			 %copy files from cluster to current directory
+			 directory=[cluster.executionpath '/' dirname '/'];
+			 issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		 end %}}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/vilje.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/vilje.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/vilje.m	(revision 21239)
@@ -0,0 +1,186 @@
+%PFE class definition
+%
+%   Usage:
+%      cluster=greenplanet();
+%      cluster=greenplanet('np',3);
+%      cluster=greenplanet('np',3,'login','username');
+
+classdef vilje
+    properties (SetAccess=public)  
+		 % {{{
+     name           = 'vilje';
+		 login          = '';
+		 numnodes       = 2;
+		 cpuspernode    = 32;
+     procspernodes  = 16;
+     mem            = 28;
+		 queue          = 'workq';
+		 time           = 2*60;
+		 codepath       = '';
+		 executionpath  = '';
+		 interactive    = 0;
+     port           = [];
+     accountname    = '';
+
+	 end
+	 properties (SetAccess=private) 
+		 np=numnodes*procspernodes;
+		 % }}}
+	 end
+	 methods
+		 function cluster=vilje(varargin) % {{{
+
+			 %initialize cluster using default settings if provided
+			 if (exist('vilje_settings')==2), vilje_settings; end
+
+			 %use provided options to change fields
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		 end
+		 %}}}
+		 function disp(cluster) % {{{
+			 %  display the object
+			 disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			 disp(sprintf('    name: %s',cluster.name));
+			 disp(sprintf('    login: %s',cluster.login));
+       disp(sprintf('    accountname: %s',cluster.accountname));
+			 disp(sprintf('    numnodes: %i',cluster.numnodes));
+			 disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			 disp(sprintf('    np: %i', cluster.cpuspernode*cluster.numnodes));
+			 disp(sprintf('    procspernodes: %i',cluster.procspernodes));
+			 disp(sprintf('    queue: %s',cluster.queue));
+			 disp(sprintf('    codepath: %s',cluster.codepath));
+			 disp(sprintf('    executionpath: %s',cluster.executionpath));
+			 disp(sprintf('    interactive: %i',cluster.interactive));
+			 disp(sprintf('    time: %i',cluster.time));
+			 disp(sprintf('    memory: %i',cluster.mem));
+		 end
+		 %}}}
+		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			 available_queues={'workq'};
+			 queue_requirements_time=[5*24*60];
+			 queue_requirements_np=[30];
+
+			 QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,1)
+
+			 %Miscelaneous
+			 if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+       if isempty(cluster.accountname), md = checkmessage(md,'accountname empty'); end
+			 if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			 if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+
+		 end
+		 %}}}
+		 function BuildKrigingQueueScript(cluster,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 %compute number of processors
+			 cluster.np=cluster.numnodes*cluster.cpuspernode;
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#PBS -S /bin/bash\n');
+			 fprintf(fid,'#PBS -N %s\n',modelname);
+       fprintf(fid,'#PBS -l select=%i:ncpus=%i:mpiprocs=%i\n',cluster.numnodes,cluster.cpuspernode,16);
+       fprintf(fid,'#PBS -l walltime=%s\n',cluster.time); %walltime is in seconds.
+       fprintf(fid,'#PBS -A %s\n',cluster.accountname);
+			 fprintf(fid,'#PBS -o %s.outlog \n',modelname);
+			 fprintf(fid,'#PBS -e %s.errlog \n\n',modelname);
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			 fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,modelname);
+			 fprintf(fid,'mpiexec_mpt -n %i %s/kriging.exe %s %s\n',cluster.np,cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+			 if ~io_gather, %concatenate the output files:
+				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			 end
+			 fclose(fid);
+		 end
+		 %}}}
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 executable='issm.exe';
+			 if isdakota,
+				 version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				 if (version>=6),
+					 executable='issm_dakota.exe';
+				 end
+			 end
+
+			 %compute number of processors
+			 cluster.np=cluster.numnodes*cluster.cpuspernode;                     
+       shortname = substring(modelname,1,min(12,length(modelname)));
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#PBS -S /bin/bash\n');
+			 fprintf(fid,'#PBS -N %s\n',shortname);
+			 fprintf(fid,'#PBS -q %s \n',cluster.queue);
+       fprintf(fid,'#PBS -l select=%i:ncpus=%i:mpiprocs=%i\n',cluster.numnodes,cluster.cpuspernode,cluster.procspernodes);
+			 fprintf(fid,'#PBS -l walltime=%s\n',duration(0,cluster.time,0)); %walltime is in minutes.
+       fprintf(fid,'#PBS -A %s\n',cluster.accountname);
+			 fprintf(fid,'#PBS -o %s.outlog \n',[cluster.executionpath '/' dirname '/' modelname]);
+			 fprintf(fid,'#PBS -e %s.errlog \n\n',[cluster.executionpath '/' dirname '/' modelname]);
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			 fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+       fprintf(fid,'mpiexec -np %i %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+
+			 if ~io_gather, %concatenate the output files:
+				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			 end
+			 fclose(fid);
+
+			 %in interactive mode, create a run file, and errlog and outlog file
+			 if cluster.interactive,
+				 fid=fopen([modelname '.run'],'w');
+				 fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+				 if ~io_gather, %concatenate the output files:
+					 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				 end
+				 fclose(fid);
+				 fid=fopen([modelname '.errlog'],'w');
+				 fclose(fid);
+				 fid=fopen([modelname '.outlog'],'w');
+				 fclose(fid);
+			 end
+		 end %}}}
+
+
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			 %compress the files into one zip.
+			 compressstring=['tar -zcf ' dirname '.tar.gz '];
+			 for i=1:numel(filelist),
+				 compressstring = [compressstring ' ' filelist{i}];
+			 end
+			 system(compressstring);
+			 disp('uploading input file and queueing script');
+			 directory=cluster.executionpath;
+			 issmbbftpout(cluster.name,directory,cluster.login,cluster.port,cluster.numstreams,{[dirname '.tar.gz']});
+
+		 end
+		 %}}}
+
+
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			 disp('launching solution sequence on remote cluster');
+			  launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+											 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && qsub ' modelname '.queue '];
+			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		 end %}}}
+
+		 function Download(cluster,dirname,filelist)% {{{
+
+			 %copy files from cluster to current directory
+			 directory=[cluster.executionpath '/' dirname '/'];
+			 issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		 end %}}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/vilje.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/vilje.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/clusters/vilje.py	(revision 21239)
@@ -0,0 +1,149 @@
+import subprocess
+from fielddisplay import fielddisplay
+from pairoptions import pairoptions
+from issmssh import issmssh
+from issmscpin import issmscpin
+from issmscpout import issmscpout
+from QueueRequirements import QueueRequirements
+import datetime
+try:
+	from vilje_settings import vilje_settings
+except ImportError:
+	print 'You need vilje_settings.py to proceed, check presence and sys.path'
+	
+class vilje(object):
+	"""
+	Vilje cluster class definition
+ 
+	   Usage:
+	      cluster=vilje();
+	"""
+
+	def __init__(self,*args):
+		# {{{
+		self.name           = 'vilje'
+		self.login          = ''
+		self.numnodes       = 2
+		self.cpuspernode    = 32
+		self.procspernodes  = 16
+		self.mem            = 28
+		self.queue          = 'workq'
+		self.time           = 2*60
+		self.codepath       = ''
+		self.executionpath  = ''
+		self.interactive    = 0
+		self.port           = []
+		self.accountname    = ''
+
+		#use provided options to change fields
+		options=pairoptions(*args)
+
+		#initialize cluster using user settings if provided
+		self=vilje_settings(self)
+		self.np=self.numnodes*self.procspernodes
+		#OK get other fields
+		self=options.AssignObjectFields(self)
+		
+		# }}}
+
+	def __repr__(self):
+		# {{{
+		#  display the object
+		s = "class vilje object:"
+		s = "%s\n%s"%(s,fielddisplay(self,'name','name of the cluster'))
+		s = "%s\n%s"%(s,fielddisplay(self,'login','login'))
+		s = "%s\n%s"%(s,fielddisplay(self,'numnodes','number of nodes'))
+		s = "%s\n%s"%(s,fielddisplay(self,'cpuspernode','number of nodes per CPUs (32)'))
+		s = "%s\n%s"%(s,fielddisplay(self,'procspernodes','number of mpi procs per nodes'))
+		s = "%s\n%s"%(s,fielddisplay(self,'mem','node memory'))
+		s = "%s\n%s"%(s,fielddisplay(self,'queue','name of the queue'))
+		s = "%s\n%s"%(s,fielddisplay(self,'time','walltime requested in minutes'))
+		s = "%s\n%s"%(s,fielddisplay(self,'codepath','code path on the cluster'))
+		s = "%s\n%s"%(s,fielddisplay(self,'executionpath','execution path on the cluster'))
+		s = "%s\n%s"%(s,fielddisplay(self,'interactive',''))
+		s = "%s\n%s"%(s,fielddisplay(self,'accountname','your cluster account'))
+		return s
+                # }}}
+
+	def checkconsistency(self,md,solution,analyses):
+		# {{{
+                #Queue dictionarry  gives queu name as key and max walltime and cpus as var
+		queuedict = {'workq'  :[5*24*60, 30]}
+		QueueRequirements(queuedict,self.queue,self.np,self.time)
+
+		#Miscelaneous
+		if not self.login:
+			md = md.checkmessage('login empty')
+		if not self.codepath:
+			md = md.checkmessage('codepath empty')
+		if not self.executionpath:
+			md = md.checkmessage('executionpath empty')
+		if self.interactive==1:
+			md = md.checkmessage('interactive mode not implemented')
+		return self
+                # }}}
+	def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota):
+		# {{{
+
+		executable='issm.exe'
+		if isdakota:
+			version=IssmConfig('_DAKOTA_VERSION_')[0:2]
+			version=float(version)
+			if version>=6:
+				executable='issm_dakota.exe'
+
+		#write queuing script 
+		shortname=modelname[0:min(12,len(modelname))]
+		fid=open(modelname+'.queue','w')
+		fid.write('#PBS -S /bin/bash\n')
+		fid.write('#PBS -N %s \n' % shortname)
+		fid.write('#PBS -q %s \n' % self.queue)
+		fid.write('#PBS -l select=%i:ncpus=%i:mpiprocs=%s\n' % (self.numnodes,self.cpuspernode,self.procspernodes))
+                timestring= str(datetime.timedelta(minutes=self.time))
+		fid.write('#PBS -l walltime=%s\n' % timestring) #walltime is hh:mm:ss
+		#fid.write('#PBS -l mem=%igb\n' % self.mem)
+		fid.write('#PBS -A %s\n' % self.accountname) 
+		fid.write('#PBS -o %s/%s/%s.outlog \n' % (self.executionpath,dirname,modelname))
+		fid.write('#PBS -e %s/%s/%s.errlog \n\n' % (self.executionpath,dirname,modelname))
+		fid.write('export ISSM_DIR="%s/../"\n' % self.codepath)
+		fid.write('module load intelcomp/13.0.1\n') 
+		fid.write('module load mpt/2.06\n')
+		fid.write('module load petsc/3.4.1d\n')
+		fid.write('module load parmetis/4.0.2\n') 
+		fid.write('module load mumps/4.10.0\n')
+		fid.write('cd %s/%s/\n\n' % (self.executionpath,dirname))
+		fid.write('mpiexec_mpt -np %i %s/%s %s %s/%s %s\n' % (self.np,self.codepath,executable,str(solution),self.executionpath,dirname,modelname))
+                fid.close()
+
+                # }}}
+	def UploadQueueJob(self,modelname,dirname,filelist):
+		# {{{
+
+		#compress the files into one zip.
+		compressstring='tar -zcf %s.tar.gz ' % dirname
+		for file in filelist:
+			compressstring += ' %s' % file
+		subprocess.call(compressstring,shell=True)
+
+		print 'uploading input file and queueing script'
+		issmscpout(self.name,self.executionpath,self.login,self.port,[dirname+'.tar.gz'])
+
+		# }}}
+	def LaunchQueueJob(self,modelname,dirname,filelist,restart,batch):
+		# {{{
+
+		print 'launching solution sequence on remote cluster'
+		if restart:
+			launchcommand='cd %s && cd %s && qsub %s.queue' % (self.executionpath,dirname,modelname)
+		else:
+			launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && qsub %s.queue' % (self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname)
+		issmssh(self.name,self.login,self.port,launchcommand)
+
+		# }}}
+	def Download(self,dirname,filelist):
+		# {{{
+
+		#copy files from cluster to current directory
+		directory='%s/%s/' % (self.executionpath,dirname)
+		issmscpin(self.name,self.login,self.port,directory,filelist)
+                # }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/constants.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/constants.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/constants.js	(revision 21239)
@@ -0,0 +1,58 @@
+//CONSTANTS class definition
+//
+//   Usage:
+//      constants=constants();
+
+function constants() {
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+
+			//acceleration due to gravity (m/s^2)
+			this.g=9.81;
+
+			//Earth's rotation speed 
+			this.omega = 7.292*1e-5;
+
+			//converstion from year to seconds
+			this.yts=365.*24.*3600.;
+
+			//the reference temperature for enthalpy model (cf Aschwanden)
+			this.referencetemperature=223.15;
+		}// }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   Constants parameters:")); 
+			
+			fielddisplay(this,'g','gravitational acceleration [m/s^2]');
+			fielddisplay(this,'omega','angular velocity of Earth [rad/s]');
+			fielddisplay(this,'yts','number of seconds in a year [s/yr]');
+			fielddisplay(this,'referencetemperature','reference temperature used in the enthalpy model [K]');
+
+		} //}}}
+		this.classname = function () { //{{{
+			return "constants";
+
+		} //}}}
+		this.checkconsistency = function(md,solution,analyses) {//% {{{
+
+			checkfield(md,'fieldname','constants.g','>=',0,'size',[1,1]); //We allow 0 for validation tests
+			checkfield(md,'fieldname','constants.omega','>=',0,'size',[1,1]);
+			checkfield(md,'fieldname','constants.yts','>',0,'size',[1,1]);
+			checkfield(md,'fieldname','constants.referencetemperature','size',[1,1]);
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','g','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','yts','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','referencetemperature','format','Double');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+		this.g                    = 0.;
+		this.omega                = 0.;
+		this.yts                  = 0.;
+		this.referencetemperature = 0.;
+		this.setdefaultparameters();
+		//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/constants.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/constants.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/constants.m	(revision 21239)
@@ -0,0 +1,68 @@
+%CONSTANTS class definition
+%
+%   Usage:
+%      constants=constants();
+
+classdef constants
+	properties (SetAccess=public) 
+		g                    = 0.;
+		omega                = 0.;
+		yts                  = 0.;
+		referencetemperature = 0.;
+	end
+	methods
+		function self = constants(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%acceleration due to gravity (m/s^2)
+			self.g=9.81;
+
+			%Earth's rotation speed 
+			self.omega = 7.292*1e-5;
+
+			%converstion from year to seconds
+			self.yts=365.*24.*3600.;
+
+			%the reference temperature for enthalpy model (cf Aschwanden)
+			self.referencetemperature=223.15;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','constants.g','>=',0,'size',[1 1]); %We allow 0 for validation tests
+			md = checkfield(md,'fieldname','constants.omega','>=',0,'size',[1 1]);
+			md = checkfield(md,'fieldname','constants.yts','>',0,'size',[1 1]);
+			md = checkfield(md,'fieldname','constants.referencetemperature','size',[1 1]);
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   constants parameters:'));
+
+			fielddisplay(self,'g','gravitational acceleration [m/s^2]');
+			fielddisplay(self,'omega','angular velocity of Earth [rad/s]');
+			fielddisplay(self,'yts','number of seconds in a year [s/yr]');
+			fielddisplay(self,'referencetemperature','reference temperature used in the enthalpy model [K]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','g','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','yts','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','referencetemperature','format','Double');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.constants.g'],self.g);
+			writejsdouble(fid,[modelname '.constants.omega'],self.omega);
+			writejsdouble(fid,[modelname '.constants.yts'],self.yts);
+			writejsdouble(fid,[modelname '.constants.referencetemperature'],self.referencetemperature);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/constants.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/constants.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/constants.py	(revision 21239)
@@ -0,0 +1,56 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+class constants(object):
+	"""
+	CONSTANTS class definition
+
+	   Usage:
+	      constants=constants();
+	"""
+
+	def __init__(self): # {{{
+		self.g                    = 0
+		self.yts                  = 0
+		self.referencetemperature = 0
+		
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   constants parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"g","gravitational acceleration [m/s^2]"))
+		string="%s\n%s"%(string,fielddisplay(self,"yts","number of seconds in a year [s/yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"referencetemperature","reference temperature used in the enthalpy model [K]"))
+
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#acceleration due to gravity (m/s^2)
+		self.g=9.81
+
+		#converstion from year to seconds
+		self.yts=365.*24.*3600.
+
+		#the reference temperature for enthalpy model (cf Aschwanden)
+		self.referencetemperature=223.15
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','constants.g','>',0,'size',[1])
+		md = checkfield(md,'fieldname','constants.yts','>',0,'size',[1])
+		md = checkfield(md,'fieldname','constants.referencetemperature','size',[1])
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'object',self,'fieldname','g','format','Double')
+		WriteData(fid,prefix,'object',self,'fieldname','yts','format','Double')
+		WriteData(fid,prefix,'object',self,'fieldname','referencetemperature','format','Double')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/damage.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/damage.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/damage.js	(revision 21239)
@@ -0,0 +1,168 @@
+//DAMAGE class definition
+//
+//   Usage:
+//      damage=new damage();
+
+function damage (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		
+		//damage parameters: 
+		this.isdamage=0;
+		this.D=0;
+		this.law=0;
+
+		this.max_damage=1-1e-5; //if damage reaches 1, solve becomes singular, as viscosity becomes nil
+
+		//Type of stabilization used
+		this.stabilization=4;
+
+		//Maximum number of iterations
+		this.maxiter=100;
+
+		//finite element interpolation
+		this.elementinterp='P1';
+
+		//damage evolution parameters 
+		this.stress_threshold=1.3e5;
+		this.kappa=2.8;
+		this.healing=0;
+		this.c1=0;
+		this.c2=0;
+		this.c3=0;
+		this.c4=0;
+		this.equiv_stress=0;
+
+		//output default:
+		this.requested_outputs=['default'];
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   Damage:\n'));
+
+		fielddisplay(this,'isdamage','is damage mechanics being used? {true,false}');
+		if (this.isdamage){
+			fielddisplay(this,'law',"damage law ['0: analytical','1: pralong']");
+			fielddisplay(this,'D','damage tensor (scalar)');
+			fielddisplay(this,'spcdamage','damage constraints (NaN means no constraint)');
+			fielddisplay(this,'max_damage','maximum possible damage (0<=max_damage<1)');
+
+			fielddisplay(this,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG (not working), 4: flux corrected transport');
+			fielddisplay(this,'maxiter','maximum number of non linear iterations');
+			fielddisplay(this,'elementinterp',"interpolation scheme for finite elements {'P1','P2'}");
+			fielddisplay(this,'stress_threshold','stress threshold for damage initiation [Pa]');
+			fielddisplay(this,'kappa','ductility parameter for stress softening and damage');
+			fielddisplay(this,'c1','damage parameter 1');
+			fielddisplay(this,'c2','damage parameter 2');
+			fielddisplay(this,'c3','damage parameter 3');
+			fielddisplay(this,'c4','damage parameter 4');
+			fielddisplay(this,'healing','damage healing parameter');
+			fielddisplay(this,'equiv_stress','0: von Mises, 1: max principal');
+			fielddisplay(this,'requested_outputs','additional outputs requested');
+		}
+	}// }}}
+    this.extrude = function(md) {//{{{
+        this.D=project3d(md,'vector',this.D,'type','node');
+        this.spcdamage=project3d(md,'vector',this.spcdamage,'type','node');
+        return this;
+    }//}}}
+	this.classname= function(){// {{{
+		return "damage";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+			
+			checkfield(md,'fieldname','damage.isdamage','values',[1,0]);
+			if (this.isdamage){
+				checkfield(md,'fieldname','damage.law','numel',[1],'values',[0,1,2]);
+				checkfield(md,'fieldname','damage.D','>=',0,'<=',this.max_damage,'size',[md.mesh.numberofvertices ,1]);
+				checkfield(md,'fieldname','damage.spcdamage','Inf',1,'timeseries',1);
+				checkfield(md,'fieldname','damage.max_damage','<',1,'>=',0);
+				checkfield(md,'fieldname','damage.stabilization','numel',[1],'values',[0, 1, 2, 4]);
+				checkfield(md,'fieldname','damage.maxiter','>=0',0);
+				checkfield(md,'fieldname','damage.elementinterp','values',['P1','P2']);
+				checkfield(md,'fieldname','damage.stress_threshold','>=',0);
+				checkfield(md,'fieldname','damage.kappa','>',1);
+				checkfield(md,'fieldname','damage.healing','>=',0);
+				checkfield(md,'fieldname','damage.c1','>=',0);
+				checkfield(md,'fieldname','damage.c2','>=',0);
+				checkfield(md,'fieldname','damage.c3','>=',0);
+				checkfield(md,'fieldname','damage.c4','>=',0);
+				checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0, 1]);
+				checkfield(md,'fieldname','damage.requested_outputs','stringrow',1);
+			}
+			else if (this.law!=0){
+				if (solution=='DamageEvolutionSolution'){
+					throw Error('Invalid evolution law (md.damage.law) for a damage solution');
+				}
+			}
+		} //}}}
+		this.marshall=function(md,prefix,fid) { //{{{
+		
+			WriteData(fid,prefix,'object',this,'fieldname','isdamage','format','Boolean');
+			if (this.isdamage){
+				WriteData(fid,prefix,'object',this,'fieldname','law','format','Integer');
+				WriteData(fid,prefix,'object',this,'fieldname','D','format','DoubleMat','mattype',1);
+				WriteData(fid,prefix,'object',this,'fieldname','spcdamage','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',this,'fieldname','max_damage','format','Double');
+
+				WriteData(fid,prefix,'object',this,'fieldname','stabilization','format','Integer');
+				WriteData(fid,prefix,'object',this,'fieldname','maxiter','format','Integer');
+				WriteData(fid,prefix,'name','md.damage.elementinterp','data',this.elementinterp,'format','String');
+				WriteData(fid,prefix,'object',this,'fieldname','stress_threshold','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','kappa','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','c1','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','c2','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','c3','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','c4','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','healing','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','equiv_stress','format','Integer');
+			}
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					outputs.push(this.defaultoutputs(md));
+				}
+			}
+			if (this.isdamage){
+				WriteData(fid,prefix,'data',outputs,'name','md.damage.requested_outputs','format','StringArray');
+			}
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+		this.defaultoutputs = function(md){ //{{{
+
+			if (md.mesh.domaintype() == '2Dhorizontal') return 'DamageDbar';
+			else return 'DamageD';
+
+		}//}}}
+	//properties 
+	// {{{
+	this.isdamage            = 0;
+	this.D                   = NaN;
+	this.law                 = 0;
+	this.spcdamage           = NaN; 
+	this.max_damage          = 0;
+
+	//numerical
+	this.stabilization       = 0;
+	this.maxiter             = 0;
+	this.elementinterp       = '';
+
+	//general parameters for evolution law: 
+	this.stress_threshold    = 0;
+	this.kappa               = 0;
+	this.c1                  = 0;
+	this.c2                  = 0;
+	this.c3                  = 0;
+	this.c4                  = 0;
+	this.healing             = 0;
+	this.equiv_stress		  = 0;
+	this.requested_outputs   = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/damage.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/damage.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/damage.m	(revision 21239)
@@ -0,0 +1,188 @@
+%DAMAGEICE class definition
+%
+%   Usage:
+%      damage=damage();
+
+classdef damage
+	properties (SetAccess=public)  
+		%damage 
+		isdamage            = 0;
+		D                   = NaN;
+		law                 = 0;
+		spcdamage           = NaN; 
+		max_damage          = 0;
+	
+		%numerical
+		stabilization       = 0;
+		maxiter             = 0;
+		elementinterp       = '';
+		
+		%general parameters for evolution law: 
+		stress_threshold    = 0;
+		kappa               = 0;
+		c1                  = 0;
+		c2                  = 0;
+		c3                  = 0;
+		c4                  = 0;
+		healing             = 0;
+		equiv_stress		  = 0;
+		requested_outputs   = {};
+	end
+	methods
+		function self = damage(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('damage');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.D=project3d(md,'vector',self.D,'type','node');
+			self.spcdamage=project3d(md,'vector',self.spcdamage,'type','node');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%damage parameters: 
+			self.isdamage=0;
+			self.D=0;
+			self.law=0;
+			
+			self.max_damage=1-1e-5; %if damage reaches 1, solve becomes singular, as viscosity becomes nil
+		
+			%Type of stabilization used
+			self.stabilization=4;
+			
+			%Maximum number of iterations
+			self.maxiter=100;
+
+			%finite element interpolation
+			self.elementinterp='P1';
+
+			%damage evolution parameters 
+			self.stress_threshold=1.3e5;
+			self.kappa=2.8;
+			self.healing=0;
+			self.c1=0;
+			self.c2=0;
+			self.c3=0;
+			self.c4=0;
+			self.equiv_stress=0;
+
+			 %output default:
+			 self.requested_outputs={'default'};
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			
+			md = checkfield(md,'fieldname','damage.isdamage','values',[1,0]);
+			if self.isdamage,
+				md = checkfield(md,'fieldname','damage.law','numel',[1],'values',[0,1,2]);
+				md = checkfield(md,'fieldname','damage.D','>=',0,'<=',self.max_damage,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','damage.spcdamage','Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','damage.max_damage','<',1,'>=',0);
+				md = checkfield(md,'fieldname','damage.stabilization','numel',[1],'values',[0 1 2 4]);
+				md = checkfield(md,'fieldname','damage.maxiter','>=0',0);
+				md = checkfield(md,'fieldname','damage.elementinterp','values',{'P1','P2'});
+				md = checkfield(md,'fieldname','damage.stress_threshold','>=',0);
+				md = checkfield(md,'fieldname','damage.kappa','>',1);
+				md = checkfield(md,'fieldname','damage.healing','>=',0);
+				md = checkfield(md,'fieldname','damage.c1','>=',0);
+				md = checkfield(md,'fieldname','damage.c2','>=',0);
+				md = checkfield(md,'fieldname','damage.c3','>=',0);
+				md = checkfield(md,'fieldname','damage.c4','>=',0);
+				md = checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0 1]);
+				md = checkfield(md,'fieldname','damage.requested_outputs','stringrow',1);
+			elseif (self.law~=0),
+				if (strcmp(solution,'DamageEvolutionSolution')),
+					error('Invalid evolution law (md.damage.law) for a damage solution');
+				end
+			end
+		end % }}}
+		function list=defaultoutputs(self,md) % {{{
+
+			if strcmp(domaintype(md.mesh),'2Dhorizontal'),
+            list = {'DamageDbar'};
+         else
+            list = {'DamageD'};
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Damage:\n'));
+
+			fielddisplay(self,'isdamage','is damage mechanics being used? {true,false}');
+			if self.isdamage,
+				fielddisplay(self,'law','damage law {''0: analytical'',''1: pralong''}');
+				fielddisplay(self,'D','damage tensor (scalar)');
+				fielddisplay(self,'spcdamage','damage constraints (NaN means no constraint)');
+				fielddisplay(self,'max_damage','maximum possible damage (0<=max_damage<1)');
+				
+				fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG (not working), 4: flux corrected transport');
+				fielddisplay(self,'maxiter','maximum number of non linear iterations');
+				fielddisplay(self,'elementinterp','interpolation scheme for finite elements {''P1'',''P2''}');
+				fielddisplay(self,'stress_threshold','stress threshold for damage initiation [Pa]');
+				fielddisplay(self,'kappa','ductility parameter for stress softening and damage');
+				fielddisplay(self,'c1','damage parameter 1');
+				fielddisplay(self,'c2','damage parameter 2');
+				fielddisplay(self,'c3','damage parameter 3');
+				fielddisplay(self,'c4','damage parameter 4');
+				fielddisplay(self,'healing','damage healing parameter');
+				fielddisplay(self,'equiv_stress','0: von Mises, 1: max principal');
+				fielddisplay(self,'requested_outputs','additional outputs requested');
+			end
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+		
+			WriteData(fid,prefix,'object',self,'fieldname','isdamage','format','Boolean');
+			if self.isdamage,
+				WriteData(fid,prefix,'object',self,'fieldname','law','format','Integer');
+				WriteData(fid,prefix,'object',self,'fieldname','D','format','DoubleMat','mattype',1);
+				WriteData(fid,prefix,'object',self,'fieldname','spcdamage','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'fieldname','max_damage','format','Double');
+
+				WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer');
+				WriteData(fid,prefix,'object',self,'fieldname','maxiter','format','Integer');
+				WriteData(fid,prefix,'name','md.damage.elementinterp','data',self.elementinterp,'format','String');
+				WriteData(fid,prefix,'object',self,'fieldname','stress_threshold','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','kappa','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','c1','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','c2','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','c3','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','c4','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','healing','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','equiv_stress','format','Integer');
+			end
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			if self.isdamage,
+				WriteData(fid,prefix,'data',outputs,'name','md.damage.requested_outputs','format','StringArray');
+			end
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.damage.isdamage'],self.isdamage);
+			if self.isdamage,
+				error('savemodeljs error message: not implemented  yet!');
+			end
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/damage.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/damage.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/damage.py	(revision 21239)
@@ -0,0 +1,173 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class damage(object):
+	"""
+	DAMAGE class definition
+
+	   Usage:
+	      damage=damage()
+	"""
+
+	def __init__(self,*args):    # {{{
+			
+		#damage: 
+		self.isdamage           = 0.
+		self.D			= float('NaN')
+		self.law		= float('NaN')
+		self.spcdamage		= float('NaN')
+		self.max_damage		= float('NaN')
+		
+		#numerical
+		self.stabilization	= float('NaN')
+		self.maxiter		= float('NaN')
+		self.elementinterp      = ''
+
+		#general parameters for evolution law: 
+		self.stress_threshold   = float('NaN')
+		self.kappa              = float('NaN')
+		self.c1                 = float('NaN')
+		self.c2                 = float('NaN')
+		self.c3                 = float('NaN')
+		self.c4                 = float('NaN')
+		self.healing		= float('NaN')
+		self.equiv_stress       = float('NaN')
+		self.requested_outputs  = []
+
+		if not len(args):
+			self.setdefaultparameters()
+		else:
+			raise RuntimeError("constructor not supported")
+
+	# }}}
+	def __repr__(self):    # {{{
+		s ='   Damage:\n'
+		
+		s+="%s\n" % fielddisplay(self,"isdamage","is damage mechanics being used? [0 (default) or 1]")
+		if self.isdamage:
+			s+="%s\n" % fielddisplay(self,"D","damage tensor (scalar for now)")
+			s+="%s\n" % fielddisplay(self,"law","damage law ['0: analytical','1: pralong']")
+			s+="%s\n" % fielddisplay(self,"spcdamage","damage constraints (NaN means no constraint)")
+			s+="%s\n" % fielddisplay(self,"max_damage","maximum possible damage (0<=max_damage<1)")
+
+                        s+="%s\n" % fielddisplay(self,"stabilization","0: no, 1: artificial_diffusivity, 2: SUPG (not working), 4: Flux corrected transport")
+			s+="%s\n" % fielddisplay(self,"maxiter","maximum number of non linear iterations")
+			s+="%s\n" %	fielddisplay(self,"elementinterp","interpolation scheme for finite elements [''P1'',''P2'']")
+			s+="%s\n" % fielddisplay(self,"stress_threshold","stress threshold for damage initiation [Pa]")
+			s+="%s\n" % fielddisplay(self,"kappa","ductility parameter for stress softening and damage [>1]")
+			s+="%s\n" % fielddisplay(self,"c1","damage parameter 1 ")
+			s+="%s\n" % fielddisplay(self,"c2","damage parameter 2 ")
+			s+="%s\n" % fielddisplay(self,"c3","damage parameter 3 ")
+			s+="%s\n" % fielddisplay(self,"c4","damage parameter 4 ")
+			s+="%s\n" % fielddisplay(self,"healing","damage healing parameter")
+			s+="%s\n" % fielddisplay(self,"equiv_stress","0: von Mises, 1: max principal")
+			s+="%s\n" % fielddisplay(self,'requested_outputs','additional outputs requested')
+
+		return s
+	# }}}
+	def extrude(self,md): # {{{
+		self.D=project3d(md,'vector',self.D,'type','node')
+		self.spcdamage=project3d(md,'vector',self.spcdamage,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self):    # {{{
+
+		#damage parameters: 
+		self.isdamage=0
+		self.D=0
+		self.law=0
+
+		self.max_damage=1-1e-5 #if damage reaches 1, solve becomes singular, as viscosity becomes nil
+		
+		#Type of stabilization used
+		self.stabilization=4
+			
+		#Maximum number of iterations
+		self.maxiter=100
+
+		#finite element interpolation
+		self.elementinterp='P1'
+
+		#damage evolution parameters 
+		self.stress_threshold=1.3e5
+		self.kappa=2.8
+		self.c1=0
+		self.c2=0
+		self.c3=0
+		self.c4=0
+		self.healing=0
+		self.equiv_stress=0
+
+		#output default:
+		self.requested_outputs=['default']
+
+		return self
+	# }}}
+	def defaultoutputs(self,md): # {{{
+		
+		if md.mesh.domaintype().lower()=='2dhorizontal':
+			list = ['DamageDbar']
+		else:
+			list = ['DamageD']
+		return list
+
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','damage.isdamage','numel',[1],'values',[0,1])
+		if self.isdamage:
+			md = checkfield(md,'fieldname','damage.D','>=',0,'<=',self.max_damage,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','damage.max_damage','<',1,'>=',0)
+			md = checkfield(md,'fieldname','damage.law','numel',[1],'values',[0,1,2,3])
+			md = checkfield(md,'fieldname','damage.spcdamage','Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','damage.stabilization','numel',[1],'values',[0,1,2,4])
+			md = checkfield(md,'fieldname','damage.maxiter','>=0',0)
+			md = checkfield(md,'fieldname','damage.elementinterp','values',['P1','P2'])
+			md = checkfield(md,'fieldname','damage.stress_threshold','>=',0)
+			md = checkfield(md,'fieldname','damage.kappa','>',1)
+			md = checkfield(md,'fieldname','damage.healing','>=',0)
+			md = checkfield(md,'fieldname','damage.c1','>=',0)
+			md = checkfield(md,'fieldname','damage.c2','>=',0)
+			md = checkfield(md,'fieldname','damage.c3','>=',0)
+			md = checkfield(md,'fieldname','damage.c4','>=',0)
+			md = checkfield(md,'fieldname','damage.healing','>=',0)
+			md = checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0,1])
+			md = checkfield(md,'fieldname','damage.requested_outputs','stringrow',1)
+		elif self.law != 0:
+			if (solution=='DamageEvolutionSolution'):
+				raise RuntimeError('Invalid evolution law (md.damage.law) for a damage solution')
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		WriteData(fid,prefix,'object',self,'fieldname','isdamage','format','Boolean')
+		if self.isdamage:
+			WriteData(fid,prefix,'object',self,'fieldname','D','format','DoubleMat','mattype',1)
+			WriteData(fid,prefix,'object',self,'fieldname','law','format','Integer')
+			WriteData(fid,prefix,'object',self,'fieldname','spcdamage','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'fieldname','max_damage','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer')
+			WriteData(fid,prefix,'object',self,'fieldname','maxiter','format','Integer')
+			WriteData(fid,prefix,'name','md.damage.elementinterp','data',self.elementinterp,'format','String')
+			WriteData(fid,prefix,'object',self,'fieldname','stress_threshold','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','kappa','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','c1','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','c2','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','c3','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','c4','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','healing','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','equiv_stress','format','Integer')
+			
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		if self.isdamage:
+			WriteData(fid,prefix,'data',outputs,'name','md.damage.requested_outputs','format','StringArray')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/debug.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/debug.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/debug.js	(revision 21239)
@@ -0,0 +1,35 @@
+//DEBUG class definition
+//
+//   Usage:
+//      debug=new debug();
+
+function debug (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.classname= function(){// {{{
+		return "debug";
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   debug parameters:'));
+		console.log(sprintf('   debug parameters:'));
+
+		fielddisplay(this,'valgrind','use Valgrind to debug (0 or 1)');
+		fielddisplay(this,'gprof','use gnu-profiler to find out where the time is spent');
+		fielddisplay(this,'profiling','enables profiling (memory, flops, time)');
+
+	}// }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','profiling','format','Boolean');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+
+	//properties 
+	// {{{
+	this.valgrind = false;
+	this.gprof    = false;
+	this.profiling = false;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/debug.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/debug.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/debug.m	(revision 21239)
@@ -0,0 +1,43 @@
+%DEBUG class definition
+%
+%   Usage:
+%      debug=debug();
+
+classdef debug
+	properties (SetAccess=public) 
+		valgrind = false;
+		gprof    = false;
+		profiling = false;
+	end
+	methods
+		function self = debug(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+				end
+			end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   debug parameters:'));
+
+			fielddisplay(self,'valgrind','use Valgrind to debug (0 or 1)');
+			fielddisplay(self,'gprof','use gnu-profiler to find out where the time is spent');
+			fielddisplay(self,'profiling','enables profiling (memory, flops, time)');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','profiling','format','Boolean');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.debug.valgrind'],self.valgrind);
+			writejsdouble(fid,[modelname '.debug.gprof'],self.gprof);
+			writejsdouble(fid,[modelname '.debug.profiling'],self.profiling);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/debug.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/debug.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/debug.py	(revision 21239)
@@ -0,0 +1,34 @@
+from fielddisplay import fielddisplay
+from WriteData import *
+
+class debug(object):
+	"""
+	DEBUG class definition
+
+	   Usage:
+	      debug=debug();
+	"""
+
+	def __init__(self): # {{{
+		self.valgrind  = False
+		self.gprof     = False
+		self.profiling = False
+		
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   debug parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"valgrind","use Valgrind to debug (0 or 1)"))
+		string="%s\n%s"%(string,fielddisplay(self,"gprof","use gnu-profiler to find out where the time is spent"))
+		string="%s\n%s"%(string,fielddisplay(self,'profiling','enables profiling (memory, flops, time)'))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'object',self,'fieldname','profiling','format','Boolean')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/dependent.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/dependent.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/dependent.m	(revision 21239)
@@ -0,0 +1,87 @@
+%DEPENDENT class definition
+%
+%   Usage:
+%      dependent=dependent();
+
+classdef dependent
+	properties (SetAccess=public) 
+		name                 = '';
+		type                 = '';
+		fos_reverse_index    = NaN;
+		exp                  = '';
+		segments             = [];
+		index                = -1;
+		nods                 = 0;
+	end
+	methods
+		function self = dependent(varargin) % {{{
+
+			%use provided options to change fields
+			options=pairoptions(varargin{:});
+
+			self.name=getfieldvalue(options,'name','');
+			self.type=getfieldvalue(options,'type','');
+			self.exp=getfieldvalue(options,'exp','');
+			self.segments=getfieldvalue(options,'segments',[]);
+			self.index=getfieldvalue(options,'index',-1);
+			self.nods=getfieldvalue(options,'nods',0);
+
+			%if name is mass flux: 
+			if strcmpi(self.name,'MassFlux'),
+				%make sure that we supplied a file and that it exists! 
+				if exist(self.exp)~=2,
+					error('dependent checkconsistency: specified ''exp'' file does not exist!');
+				end
+				%process the file and retrieve segments
+				mesh=getfieldvalue(options,'mesh');
+				self.segments=MeshProfileIntersection(mesh.elements,mesh.x,mesh.y,self.exp);
+			end
+		end
+		%}}}
+		function self = setdefaultparameters(self) % {{{
+			%do nothing
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			if strcmpi(self.name,'MassFlux'),
+				if isempty(self.segments),
+					error('dependent checkconsistency error: need segments to compute this dependent response');
+				end
+				if self.index<=0,
+					error('dependent checkconsistency error: index for segments should be >=1');
+				end
+			end
+			if ~isnan(self.fos_reverse_index),
+				if ~strcmpi(driver,'fos_reverse'),
+					error('cannot declare a dependent with a fos_reverse_index when the driver is not fos_reverse!');
+				end
+				if self.nods==0,
+					error('dependent checkconsistency error: nods should be set to the size of the independent variable');
+				end
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   dependent variable:'));
+
+			fielddisplay(self,'name','variable name (must match corresponding String)');
+			fielddisplay(self,'type','type of variable (''vertex'' or ''scalar'')');
+
+			if ~isnan(self.fos_reverse_index),
+				fielddisplay(self,'fos_reverse_index','index for fos_reverse driver of ADOLC');
+			end
+			if ~isempty(self.exp),
+				fielddisplay(self,'exp','file needed to compute dependent variable');
+				fielddisplay(self,'segments','mass flux segments');
+			end
+
+		end % }}}
+		function scalar=typetoscalar(self) % {{{
+			if strcmpi(self.type,'scalar'),
+				scalar=0;
+			elseif strcmpi(self.type,'vertex'),
+				scalar=1;
+			end
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/dependent.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/dependent.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/dependent.py	(revision 21239)
@@ -0,0 +1,87 @@
+import os.path
+import numpy
+from pairoptions import pairoptions
+from fielddisplay import fielddisplay
+from MatlabFuncs import *
+from MeshProfileIntersection import MeshProfileIntersection
+
+class dependent(object):
+	"""
+	DEPENDENT class definition
+
+	   Usage:
+	      dependent=dependent();
+	"""
+
+	def __init__(self,*args):    # {{{
+		self.name                 = ''
+		self.type                 = ''
+		self.fos_reverse_index    = float('NaN')
+		self.exp                  = ''
+		self.segments             = []
+		self.index                = -1
+		self.nods                 = 0
+
+		#set defaults 
+		self.setdefaultparameters()
+
+		#use provided options to change fields
+		options=pairoptions(*args)
+
+		self.name=options.getfieldvalue('name','')
+		self.type=options.getfieldvalue('type','')
+		self.exp=options.getfieldvalue('exp','')
+		self.segments=options.getfieldvalue('segments',[])
+		self.index=options.getfieldvalue('index',-1)
+		self.nods=options.getfieldvalue('nods',0)
+
+		#if name is mass flux: 
+		if strcmpi(self.name,'MassFlux'):
+			#make sure that we supplied a file and that it exists! 
+			if not os.path.exists(self.exp):
+				raise IOError("dependent checkconsistency: specified 'exp' file does not exist!")
+			#process the file and retrieve segments
+			mesh=options.getfieldvalue('mesh')
+			self.segments=MeshProfileIntersection(mesh.elements,mesh.x,mesh.y,self.exp)[0]
+	# }}}
+	def __repr__(self):    # {{{
+		s ="   dependent variable:\n"
+
+		s+="%s\n" % fielddisplay(self,'name',"variable name (must match corresponding String)")
+		s+="%s\n" % fielddisplay(self,'type',"type of variable ('vertex' or 'scalar')")
+
+		if not numpy.isnan(self.fos_reverse_index):
+			s+="%s\n" % fielddisplay(self,'fos_reverse_index',"index for fos_reverse driver of ADOLC")
+		if self.exp:
+			s+="%s\n" % fielddisplay(self,'exp',"file needed to compute dependent variable")
+			s+="%s\n" % fielddisplay(self,'segments',"mass flux segments")
+
+		return s
+	# }}}
+	def setdefaultparameters(self):    # {{{
+		#do nothing
+		return self
+	# }}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		if strcmpi(self.name,'MassFlux'):
+			if not self.segments:
+				raise RuntimeError("dependent checkconsistency error: need segments to compute this dependent response")
+			if self.index<0:
+				raise RuntimeError("dependent checkconsistency error: index for segments should be >=0")
+
+		if not numpy.isnan(self.fos_reverse_index):
+			if not strcmpi(driver,'fos_reverse'):
+				raise TypeError("cannot declare a dependent with a fos_reverse_index when the driver is not fos_reverse!")
+			if self.nods==0:
+				raise TypeError("dependent checkconsistency error: nods should be set to the size of the independent variable")
+
+		return md
+	# }}}
+	def typetoscalar(self):    # {{{
+		if   strcmpi(self.type,'scalar'):
+			scalar=0
+		elif strcmpi(self.type,'vertex'):
+			scalar=1
+
+		return scalar
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/flowequation.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/flowequation.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/flowequation.js	(revision 21239)
@@ -0,0 +1,148 @@
+//FLOWEQUATION class definition
+//
+//   Usage:
+//      flowequation=new flowequation();
+
+function flowequation (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		//P1 for SSA
+		this.fe_SSA= 'P1';
+
+		//P1 for HO
+		this.fe_HO= 'P1';
+
+		//MINI condensed element for FS by default
+		this.fe_FS = 'MINIcondensed';
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   flow equation parameters:'));
+
+		fielddisplay(this,'isSIA','is the Shallow Ice Approximation (SIA) used ?');
+		fielddisplay(this,'isSSA','is the Shelfy-Stream Approximation (SSA) used ?');
+		fielddisplay(this,'isL1L2','is the L1L2 approximation used ?');
+		fielddisplay(this,'isHO','is the Higher-Order (HO) approximation used ?');
+		fielddisplay(this,'isFS','are the Full-FS (FS) equations used ?');
+		fielddisplay(this,'fe_SSA',"Finite Element for SSA  'P1', 'P1bubble' 'P1bubblecondensed' 'P2'");
+		fielddisplay(this,'fe_HO', "Finite Element for HO   'P1' 'P1bubble' 'P1bubblecondensed' 'P1xP2' 'P2xP1' 'P2'");
+		fielddisplay(this,'fe_FS', "Finite Element for FS   'P1P1' (debugging only) 'P1P1GLS' 'MINIcondensed' 'MINI' 'TaylorHood' 'XTaylorHood'");
+		fielddisplay(this,'vertex_equation','flow equation for each vertex');
+		fielddisplay(this,'element_equation','flow equation for each element');
+		fielddisplay(this,'borderSSA',"vertices on SSA's border (for tiling)");
+		fielddisplay(this,'borderHO',"vertices on HO's border (for tiling)");
+		fielddisplay(this,'borderFS',"vertices on FS' border (for tiling)");
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "flowequation";
+
+	}// }}}
+    this.extrude = function(md) {//{{{
+        this.element_equation=project3d(md,'vector',this.element_equation,'type','element');
+        this.vertex_equation=project3d(md,'vector',this.vertex_equation,'type','node');
+        this.borderSSA=project3d(md,'vector',this.borderSSA,'type','node');
+        this.borderHO=project3d(md,'vector',this.borderHO,'type','node');
+        this.borderFS=project3d(md,'vector',this.borderFS,'type','node');
+        return this;
+    }//}}}
+		this.checkconsistency = function(md,solution,analyses) {//{{{
+
+			//Early return
+			if ( ((!ArrayAnyEqual(ArrayIsMember('StressbalanceAnalysis',analyses),1)) & (!ArrayAnyEqual(ArrayIsMember('StressbalanceSIAAnalysis',analyses),1))) | 
+					(solution=='TransientSolution' & md.trans.isstressbalance==0)
+			   ) return ;
+
+			checkfield(md,'fieldname','flowequation.isSIA','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.isSSA','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.isL1L2','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.isHO','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.isFS','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.fe_SSA','values',['P1','P1bubble','P1bubblecondensed','P2','P2bubble']);
+			checkfield(md,'fieldname','flowequation.fe_HO' ,'values',['P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P2bubble','P1xP3','P2xP4']);
+			checkfield(md,'fieldname','flowequation.fe_FS' ,'values',['P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','LATaylorHood','XTaylorHood','OneLayerP4z','CrouzeixRaviart','LACrouzeixRaviart']);
+			checkfield(md,'fieldname','flowequation.augmented_lagrangian_r','numel',[1],'>=',0.);
+			checkfield(md,'fieldname','flowequation.augmented_lagrangian_rlambda','numel',[1],'>=',0.);
+			checkfield(md,'fieldname','flowequation.augmented_lagrangian_rhop','numel',[1],'>=',0.);
+			checkfield(md,'fieldname','flowequation.augmented_lagrangian_rholambda','numel',[1],'>=',0.);
+			checkfield(md,'fieldname','flowequation.XTH_theta','numel',[1],'>=',0.,'<',0.5);
+			checkfield(md,'fieldname','flowequation.borderSSA','size',[md.mesh.numberofvertices, 1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.borderHO','size',[md.mesh.numberofvertices, 1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.borderFS','size',[md.mesh.numberofvertices, 1],'values',[0, 1]);
+			if (md.mesh.domaintype() == '2Dhorizontal'){
+				checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices, 1],'values',[1,2]);
+				checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements, 1],'values',[1,2]);
+			}
+			else if (md.mesh.domaintype() == '3Dsurface'){
+				checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices, 1],'values',[1,2]);
+				checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements, 1],'values',[1,2]);
+			}
+			else if (md.mesh.domaintype() =='2Dvertical'){
+				checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices, 1],'values',[2,4,5]);
+				checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements, 1],'values',[2,4,5]);
+			}
+			else if (md.mesh.domaintype() =='3D'){
+				checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices, 1],'values',[0,1,2,3,4,5,6,7,8]);
+				checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements, 1],'values',[0,1,2,3,4,5,6,7,8]);
+			}
+			else throw Error('Case not supported yet');
+			
+			if (!(this.isSIA | this.isSSA | this.isL1L2 | this.isHO | this.isFS)){
+				md = checkmessage(md,['no element types set for this model']);
+			}
+			if(ArrayAnyEqual(ArrayIsMember('StressbalanceSIAAnalysis', analyses),1)){
+				if (ArrayAnyEqual(this.element_equation,1)){
+					if(this.vertex_equation & ArrayAnyBelowStrict(md.mask.groundedice_levelset)){
+						console.log(sprintf("\n !!! Warning: SIA's model is not consistent on ice shelves !!!\n"));
+					}
+				}
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','isSIA','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isSSA','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isL1L2','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isHO','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isFS','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','fe_SSA','data',this.fe_SSA,'format','String');
+			WriteData(fid,prefix,'object',this,'fieldname','fe_HO','data',this.fe_HO,'format','String');
+			WriteData(fid,prefix,'object',this,'fieldname','fe_FS','data',this.fe_FS,'format','String');
+
+			WriteData(fid,prefix,'object',this,'fieldname','augmented_lagrangian_r','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','augmented_lagrangian_rhop','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','augmented_lagrangian_rlambda','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','augmented_lagrangian_rholambda','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','XTH_theta','data',this.XTH_theta ,'format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','borderSSA','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','borderHO','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','borderFS','format','DoubleMat','mattype',1);
+
+			//convert approximations to integers 
+			WriteData(fid,prefix,'data',this.vertex_equation,'name','md.flowequation.vertex_equation','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'data',this.element_equation,'name','md.flowequation.element_equation','format','DoubleMat','mattype',2);
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.isSIA                          = 0;
+	this.isSSA                          = 0;
+	this.isL1L2                         = 0;
+	this.isHO                           = 0;
+	this.isFS                           = 0;
+	this.fe_SSA                         = '';
+	this.fe_HO                          = '';
+	this.fe_FS                          = '';
+	this.augmented_lagrangian_r         = 1.;
+	this.augmented_lagrangian_rhop      = 1.;
+	this.augmented_lagrangian_rlambda   = 1.;
+	this.augmented_lagrangian_rholambda = 1.;
+	this.XTH_theta                      = 0.;
+	this.vertex_equation                = NaN;
+	this.element_equation               = NaN;
+	this.borderSSA                      = NaN;
+	this.borderHO                       = NaN;
+	this.borderFS                       = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/flowequation.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/flowequation.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/flowequation.m	(revision 21239)
@@ -0,0 +1,200 @@
+%FLOWEQUATION class definition
+%
+%   Usage:
+%      flowequation=flowequation();
+
+classdef flowequation
+	properties (SetAccess=public) 
+		isSIA                          = 0;
+		isSSA                          = 0;
+		isL1L2                         = 0;
+		isHO                           = 0;
+		isFS                           = 0;
+		fe_SSA                         = '';
+		fe_HO                          = '';
+		fe_FS                          = '';
+		augmented_lagrangian_r         = 1.;
+		augmented_lagrangian_rhop      = 1.;
+		augmented_lagrangian_rlambda   = 1.;
+		augmented_lagrangian_rholambda = 1.;
+		XTH_theta                      = 0.;
+		vertex_equation                = NaN;
+		element_equation               = NaN;
+		borderSSA                      = NaN;
+		borderHO                       = NaN;
+		borderFS                       = NaN;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. If the input is a struct it is an old version of this class and
+			% old fields must be recovered (make sure they are in the deprecated
+			% model properties)
+
+			if verLessThan('matlab','7.9'),
+				disp('Warning: your matlab version is old and there is a risk that load does not work correctly');
+				disp('         if the model is not loaded correctly, rename temporarily loadobj so that matlab does not use it');
+
+				% This is a Matlab bug: all the fields of md have their default value
+				% Example of error message:
+				% Warning: Error loading an object of class 'model':
+				% Undefined function or method 'exist' for input arguments of type 'cell'
+				%
+				% This has been fixed in MATLAB 7.9 (R2009b) and later versions
+			end
+
+			if isstruct(self)
+				disp('Recovering flowequation from older version');
+				objstruct = self;
+				self = structtoobj(flowequation(),objstruct);
+
+				%2013 July 23rd
+				if isfield(objstruct,'ishutter'),      self.isSIA     = objstruct.ishutter;       end; 
+				if isfield(objstruct,'ismacayeal'),    self.isSSA     = objstruct.ismacayeal;     end; 
+				if isfield(objstruct,'ispattyn'),      self.isHO      = objstruct.ispattyn;       end; 
+				if isfield(objstruct,'isstokes'),      self.isFS      = objstruct.isstokes;       end; 
+				if isfield(objstruct,'bordermacayeal'),self.borderSSA = objstruct.bordermacayeal; end; 
+				if isfield(objstruct,'borderpattyn'),  self.borderHO  = objstruct.borderpattyn;   end; 
+				if isfield(objstruct,'borderstokes'),  self.borderFS  = objstruct.borderstokes;   end; 
+			end
+
+		end% }}}
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.element_equation=project3d(md,'vector',self.element_equation,'type','element');
+			self.vertex_equation=project3d(md,'vector',self.vertex_equation,'type','node');
+			self.borderSSA=project3d(md,'vector',self.borderSSA,'type','node');
+			self.borderHO=project3d(md,'vector',self.borderHO,'type','node');
+			self.borderFS=project3d(md,'vector',self.borderFS,'type','node');
+		end % }}}
+		function self = flowequation(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%P1 for SSA
+			self.fe_SSA= 'P1';
+
+			%P1 for HO
+			self.fe_HO= 'P1';
+
+			%MINI condensed element for FS by default
+			self.fe_FS = 'MINIcondensed';
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if (~ismember('StressbalanceAnalysis',analyses) & ~ismember('StressbalanceSIAAnalysis',analyses)) | (strcmp(solution,'TransientSolution') & md.transient.isstressbalance==0), return; end
+
+			md = checkfield(md,'fieldname','flowequation.isSIA','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','flowequation.isSSA','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','flowequation.isL1L2','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','flowequation.isHO','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','flowequation.isFS','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','flowequation.fe_SSA','values',{'P1','P1bubble','P1bubblecondensed','P2','P2bubble'});
+			md = checkfield(md,'fieldname','flowequation.fe_HO' ,'values',{'P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P2bubble','P1xP3','P2xP4'});
+			md = checkfield(md,'fieldname','flowequation.fe_FS' ,'values',{'P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','LATaylorHood','XTaylorHood','OneLayerP4z','CrouzeixRaviart','LACrouzeixRaviart'});
+			md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_r','numel',[1],'>=',0.);
+			md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rlambda','numel',[1],'>=',0.);
+			md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rhop','numel',[1],'>=',0.);
+			md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rholambda','numel',[1],'>=',0.);
+			md = checkfield(md,'fieldname','flowequation.XTH_theta','numel',[1],'>=',0.,'<',0.5);
+			md = checkfield(md,'fieldname','flowequation.borderSSA','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+			md = checkfield(md,'fieldname','flowequation.borderHO','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+			md = checkfield(md,'fieldname','flowequation.borderFS','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+			if strcmp(domaintype(md.mesh),'2Dhorizontal')
+				md = checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices 1],'values',[1:2]);
+				md = checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements 1],'values',[1:2]);
+			elseif strcmp(domaintype(md.mesh),'3Dsurface')
+				md = checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices 1],'values',[1:2]);
+				md = checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements 1],'values',[1:2]);
+			elseif strcmp(domaintype(md.mesh),'2Dvertical')
+				md = checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices 1],'values',[2,4,5]);
+				md = checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements 1],'values',[2,4,5]);
+			elseif strcmp(domaintype(md.mesh),'3D'),
+				md = checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices 1],'values',[0:8]);
+				md = checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements 1],'values',[0:8]);
+			else
+				error('Case not supported yet');
+			end
+			if ~(self.isSIA || self.isSSA || self.isL1L2 || self.isHO || self.isFS),
+				md = checkmessage(md,['no element types set for this model']);
+			end
+			if ismember('StressbalanceSIAAnalysis',analyses),
+				if any(self.element_equation==1),
+					if(self.vertex_equation & md.mask.groundedice_levelset<0.),
+						disp(sprintf('\n !!! Warning: SIA''s model is not consistent on ice shelves !!!\n'));
+					end
+				end
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   flow equation parameters:'));
+
+			fielddisplay(self,'isSIA','is the Shallow Ice Approximation (SIA) used ?');
+			fielddisplay(self,'isSSA','is the Shelfy-Stream Approximation (SSA) used ?');
+			fielddisplay(self,'isL1L2','is the L1L2 approximation used ?');
+			fielddisplay(self,'isHO','is the Higher-Order (HO) approximation used ?');
+			fielddisplay(self,'isFS','are the Full-FS (FS) equations used ?');
+			fielddisplay(self,'fe_SSA','Finite Element for SSA  ''P1'', ''P1bubble'' ''P1bubblecondensed'' ''P2''');
+			fielddisplay(self,'fe_HO', 'Finite Element for HO   ''P1'' ''P1bubble'' ''P1bubblecondensed'' ''P1xP2'' ''P2xP1'' ''P2''');
+			fielddisplay(self,'fe_FS', 'Finite Element for FS   ''P1P1'' (debugging only) ''P1P1GLS'' ''MINIcondensed'' ''MINI'' ''TaylorHood'' ''XTaylorHood''');
+			fielddisplay(self,'vertex_equation','flow equation for each vertex');
+			fielddisplay(self,'element_equation','flow equation for each element');
+			fielddisplay(self,'borderSSA','vertices on SSA''s border (for tiling)');
+			fielddisplay(self,'borderHO','vertices on HO''s border (for tiling)');
+			fielddisplay(self,'borderFS','vertices on FS'' border (for tiling)');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','isSIA','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isSSA','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isL1L2','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isHO','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isFS','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','fe_SSA','data',self.fe_SSA,'format','String');
+			WriteData(fid,prefix,'object',self,'fieldname','fe_HO' ,'data',self.fe_HO,'format','String');
+			WriteData(fid,prefix,'object',self,'fieldname','fe_FS' ,'data',self.fe_FS,'format','String');
+			WriteData(fid,prefix,'object',self,'fieldname','augmented_lagrangian_r','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','augmented_lagrangian_rhop','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','augmented_lagrangian_rlambda','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','augmented_lagrangian_rholambda','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','XTH_theta','data',self.XTH_theta ,'format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','borderSSA','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','borderHO','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','borderFS','format','DoubleMat','mattype',1);
+			%convert approximations to enums
+			WriteData(fid,prefix,'data',self.vertex_equation,'name','md.flowequation.vertex_equation','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'data',self.element_equation,'name','md.flowequation.element_equation','format','DoubleMat','mattype',2);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.flowequation.isSIA'],self.isSIA);
+			writejsdouble(fid,[modelname '.flowequation.isSSA'],self.isSSA);
+			writejsdouble(fid,[modelname '.flowequation.isL1L2'],self.isL1L2);
+			writejsdouble(fid,[modelname '.flowequation.isHO'],self.isHO);
+			writejsdouble(fid,[modelname '.flowequation.isFS'],self.isFS);
+			writejsstring(fid,[modelname '.flowequation.fe_SSA'],self.fe_SSA);
+			writejsstring(fid,[modelname '.flowequation.fe_HO'],self.fe_HO);
+			writejsstring(fid,[modelname '.flowequation.fe_FS'],self.fe_FS);
+			writejsdouble(fid,[modelname '.flowequation.augmented_lagrangian_r'],self.augmented_lagrangian_r);
+			writejsdouble(fid,[modelname '.flowequation.augmented_lagrangian_rhop'],self.augmented_lagrangian_rhop);
+			writejsdouble(fid,[modelname '.flowequation.augmented_lagrangian_rlambda'],self.augmented_lagrangian_rlambda);
+			writejsdouble(fid,[modelname '.flowequation.augmented_lagrangian_rholambda'],self.augmented_lagrangian_rholambda);
+			writejsdouble(fid,[modelname '.flowequation.XTH_theta'],self.XTH_theta);
+			writejs1Darray(fid,[modelname '.flowequation.vertex_equation'],self.vertex_equation);
+			writejs1Darray(fid,[modelname '.flowequation.element_equation'],self.element_equation);
+			writejs1Darray(fid,[modelname '.flowequation.borderSSA'],self.borderSSA);
+			writejs1Darray(fid,[modelname '.flowequation.borderHO'],self.borderHO);
+			writejs1Darray(fid,[modelname '.flowequation.borderFS'],self.borderFS);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/flowequation.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/flowequation.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/flowequation.py	(revision 21239)
@@ -0,0 +1,142 @@
+import numpy
+import copy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class flowequation(object):
+	"""
+	FLOWEQUATION class definition
+
+	   Usage:
+	      flowequation=flowequation();
+	"""
+
+	def __init__(self): # {{{
+		
+		self.isSIA                          = 0
+		self.isSSA                          = 0
+		self.isL1L2                         = 0
+		self.isHO                           = 0
+		self.isFS                           = 0
+		self.fe_SSA                         = ''
+		self.fe_HO                          = ''
+		self.fe_FS                          = ''
+		self.augmented_lagrangian_r         = 1.
+		self.augmented_lagrangian_rhop      = 1.
+		self.augmented_lagrangian_rlambda   = 1.
+		self.augmented_lagrangian_rholambda = 1.
+		self.XTH_theta                      = 0.
+		self.vertex_equation                = float('NaN')
+		self.element_equation               = float('NaN')
+		self.borderSSA                      = float('NaN')
+		self.borderHO                       = float('NaN')
+		self.borderFS                       = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   flow equation parameters:'
+
+		string="%s\n%s"%(string,fielddisplay(self,'isSIA',"is the Shallow Ice Approximation (SIA) used ?"))
+		string="%s\n%s"%(string,fielddisplay(self,'isSSA',"is the Shelfy-Stream Approximation (SSA) used ?"))
+		string="%s\n%s"%(string,fielddisplay(self,'isL1L2',"are L1L2 equations used ?"))
+		string="%s\n%s"%(string,fielddisplay(self,'isHO',"is the Higher-Order (HO) approximation used ?"))
+		string="%s\n%s"%(string,fielddisplay(self,'isFS',"are the Full-FS (FS) equations used ?"))
+		string="%s\n%s"%(string,fielddisplay(self,'fe_SSA',"Finite Element for SSA: 'P1', 'P1bubble' 'P1bubblecondensed' 'P2'"))
+		string="%s\n%s"%(string,fielddisplay(self,'fe_HO' ,"Finite Element for HO:  'P1' 'P1bubble' 'P1bubblecondensed' 'P1xP2' 'P2xP1' 'P2'"))
+		string="%s\n%s"%(string,fielddisplay(self,'fe_FS' ,"Finite Element for FS:  'P1P1' (debugging only) 'P1P1GLS' 'MINIcondensed' 'MINI' 'TaylorHood' 'LATaylorHood' 'XTaylorHood'"))
+		string="%s\n%s"%(string,fielddisplay(self,'vertex_equation',"flow equation for each vertex"))
+		string="%s\n%s"%(string,fielddisplay(self,'element_equation',"flow equation for each element"))
+		string="%s\n%s"%(string,fielddisplay(self,'borderSSA',"vertices on SSA's border (for tiling)"))
+		string="%s\n%s"%(string,fielddisplay(self,'borderHO',"vertices on HO's border (for tiling)"))
+		string="%s\n%s"%(string,fielddisplay(self,'borderFS',"vertices on FS' border (for tiling)"))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.element_equation=project3d(md,'vector',self.element_equation,'type','element')
+		self.vertex_equation=project3d(md,'vector',self.vertex_equation,'type','node')
+		self.borderSSA=project3d(md,'vector',self.borderSSA,'type','node')
+		self.borderHO=project3d(md,'vector',self.borderHO,'type','node')
+		self.borderFS=project3d(md,'vector',self.borderFS,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		#P1 for SSA
+		self.fe_SSA= 'P1';
+
+		#P1 for HO
+		self.fe_HO= 'P1';
+
+		#MINI condensed element for FS by default
+		self.fe_FS = 'MINIcondensed';
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if ('StressbalanceAnalysis' not in analyses and 'StressbalanceSIAAnalysis' not in analyses) or (solution=='TransientSolution' and not md.transient.isstressbalance):
+			return md
+
+		md = checkfield(md,'fieldname','flowequation.isSIA','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.isSSA','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.isL1L2','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.isHO','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.isFS','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.fe_SSA','values',['P1','P1bubble','P1bubblecondensed','P2','P2bubble'])
+		md = checkfield(md,'fieldname','flowequation.fe_HO' ,'values',['P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P2bubble','P1xP3','P2xP4'])
+		md = checkfield(md,'fieldname','flowequation.fe_FS' ,'values',['P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','XTaylorHood','OneLayerP4z','CrouzeixRaviart'])
+		md = checkfield(md,'fieldname','flowequation.borderSSA','size',[md.mesh.numberofvertices],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.borderHO','size',[md.mesh.numberofvertices],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.borderFS','size',[md.mesh.numberofvertices],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_r','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rhop','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rlambda','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rholambda','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','flowequation.XTH_theta','numel',[1],'>=',0.,'<',.5)
+		if m.strcmp(md.mesh.domaintype(),'2Dhorizontal'):
+			md = checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',[1,2])
+			md = checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements],'values',[1,2])
+		elif m.strcmp(md.mesh.domaintype(),'3D'):
+			md = checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',numpy.arange(0,8+1))
+			md = checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements],'values',numpy.arange(0,8+1))
+		else:
+			raise RuntimeError('mesh type not supported yet')
+		if not (self.isSIA or self.isSSA or self.isL1L2 or self.isHO or self.isFS):
+			md.checkmessage("no element types set for this model")
+
+		if 'StressbalanceSIAAnalysis' in analyses:
+			if any(self.element_equation==1):
+				if numpy.any(numpy.logical_and(self.vertex_equation,md.mask.groundedice_levelset)):
+					print "\n !!! Warning: SIA's model is not consistent on ice shelves !!!\n"
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'object',self,'fieldname','isSIA','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','isSSA','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','isL1L2','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','isHO','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','isFS','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','fe_SSA','data',self.fe_SSA,'format','String')
+		WriteData(fid,prefix,'object',self,'fieldname','fe_HO','data',self.fe_HO,'format','String')
+		WriteData(fid,prefix,'object',self,'fieldname','fe_FS','data',self.fe_FS ,'format','String')
+		WriteData(fid,prefix,'object',self,'fieldname','augmented_lagrangian_r','format','Double');
+		WriteData(fid,prefix,'object',self,'fieldname','augmented_lagrangian_rhop','format','Double');
+		WriteData(fid,prefix,'object',self,'fieldname','augmented_lagrangian_rlambda','format','Double');
+		WriteData(fid,prefix,'object',self,'fieldname','augmented_lagrangian_rholambda','format','Double');
+		WriteData(fid,prefix,'object',self,'fieldname','XTH_theta','data',self.XTH_theta ,'format','Double')
+		WriteData(fid,prefix,'object',self,'fieldname','borderSSA','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','borderHO','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','borderFS','format','DoubleMat','mattype',1)
+		#convert approximations to enums
+		WriteData(fid,prefix,'data',self.vertex_equation,'name','md.flowequation.vertex_equation','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'data',self.element_equation,'name','md.flowequation.element_equation','format','DoubleMat','mattype',2)
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/friction.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/friction.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/friction.js	(revision 21239)
@@ -0,0 +1,57 @@
+//FRICTION class definition
+//
+//   Usage:
+//      friction=friction();
+
+function friction (){
+	//methods
+	this.setdefaultparameters = function(){ // {{{
+
+	} // }}}
+	this.disp= function (){// {{{
+		console.log(sprintf('Basal shear stress parameters: Sigma_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p)'));
+		fielddisplay(this,'coefficient','friction coefficient [SI]');
+		fielddisplay(this,'p','p exponent');
+		fielddisplay(this,'q','q exponent');
+	} // }}}
+    this.extrude = function(md) {//{{{
+        this.coefficient = project3d(md, 'vector', this.coefficient, 'type', 'node', 'layer', 1);
+        this.p = project3d(md, 'vector', this.p, 'type', 'element');
+        this.q = project3d(md, 'vector', this.q, 'type', 'element');
+        return this;
+    }//}}}
+	this.classname= function (){// {{{
+		return "friction";
+	} // }}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			//Early return
+			if ((!ArrayAnyEqual(ArrayIsMember('StressbalanceAnalysis',analyses),1)) & (!ArrayAnyEqual(ArrayIsMember('StressbalanceAnalysis',analyses),1))){
+				return; 
+			}
+			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements ,1]);
+			md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements ,1]);
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			var yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.friction.law','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			//WriteData(fid,prefix,'object',this,'fieldname','coefficient','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','p','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',this,'fieldname','q','format','DoubleMat','mattype',2);
+			
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	//{{{
+	this.coefficient = NaN;
+	this.p           = NaN;
+	this.q           = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/friction.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/friction.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/friction.m	(revision 21239)
@@ -0,0 +1,63 @@
+%FRICTION class definition
+%
+%   Usage:
+%      friction=friction();
+
+classdef friction
+	properties (SetAccess=public) 
+		coefficient = NaN;
+		p           = NaN;
+		q           = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1);
+			self.p=project3d(md,'vector',self.p,'type','element');
+			self.q=project3d(md,'vector',self.q,'type','element');
+		end % }}}
+		function self = friction(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+			if (strcmp(solution,'TransientSolution') &  md.transient.isstressbalance ==0 & md.transient.isthermal == 0), return; end
+
+			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('Basal shear stress parameters: Sigma_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p)'));
+			fielddisplay(self,'coefficient','friction coefficient [SI]');
+			fielddisplay(self,'p','p exponent');
+			fielddisplay(self,'q','q exponent');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.friction.law','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','p','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'fieldname','q','format','DoubleMat','mattype',2);
+			
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.friction.coefficient'],self.coefficient);
+			writejs1Darray(fid,[modelname '.friction.p'],self.p);
+			writejs1Darray(fid,[modelname '.friction.q'],self.q);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/friction.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/friction.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/friction.py	(revision 21239)
@@ -0,0 +1,57 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from checkfield import checkfield
+from WriteData import WriteData
+
+class friction(object):
+	"""
+	FRICTION class definition
+
+	   Usage:
+	      friction=friction()
+	"""
+
+	def __init__(self): # {{{
+		self.coefficient = float('NaN')
+		self.p           = float('NaN')
+		self.q           = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="Basal shear stress parameters: Sigma_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b,\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p)"
+
+		string="%s\n%s"%(string,fielddisplay(self,"coefficient","friction coefficient [SI]"))
+		string="%s\n%s"%(string,fielddisplay(self,"p","p exponent"))
+		string="%s\n%s"%(string,fielddisplay(self,"q","q exponent"))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1)
+		self.p=project3d(md,'vector',self.p,'type','element')
+		self.q=project3d(md,'vector',self.q,'type','element')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if 'StressbalanceAnalysis' not in analyses and 'ThermalAnalysis' not in analyses:
+			return md
+
+		md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
+		md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'name','md.friction.law','data',1,'format','Integer')
+		WriteData(fid,prefix,'object',self,'fieldname','coefficient','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','p','format','DoubleMat','mattype',2)
+		WriteData(fid,prefix,'object',self,'fieldname','q','format','DoubleMat','mattype',2)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictioncoulomb.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictioncoulomb.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictioncoulomb.m	(revision 21239)
@@ -0,0 +1,57 @@
+%FRICTIONCOULOMB class definition
+%
+%   Usage:
+%      frictioncoulomb=frictioncoulomb();
+
+classdef frictioncoulomb
+	properties (SetAccess=public) 
+		coefficient        = NaN;
+		p                  = NaN;
+		q                  = NaN;
+		coefficientcoulomb = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1);
+			self.coefficientcoulomb=project3d(md,'vector',self.coefficientcoulomb,'type','node','layer',1);
+			self.p=project3d(md,'vector',self.p,'type','element');
+			self.q=project3d(md,'vector',self.q,'type','element');
+		end % }}}
+		function self = frictioncoulomb(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.coefficientcoulomb','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('Basal shear stress parameters: Sigma_b = min( coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b\n, coefficientcoulomb^2 * rho_i * g * (h-h_f)) (effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p, floatation thickness h_f=max(0,-rho_sw / rho_i * bed))'));
+			fielddisplay(self,'coefficient','power law (Weertman) friction coefficient [SI]');
+			fielddisplay(self,'coefficientcoulomb','Coulomb friction coefficient [SI]');
+			fielddisplay(self,'p','p exponent');
+			fielddisplay(self,'q','q exponent');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'name','md.friction.law','data',7,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','coefficientcoulomb','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','p','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'fieldname','q','format','DoubleMat','mattype',2);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictioncoulomb.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictioncoulomb.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictioncoulomb.py	(revision 21239)
@@ -0,0 +1,62 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from checkfield import checkfield
+from WriteData import WriteData
+
+class frictioncoulomb(object):
+    """
+    FRICTIONCOULOMB class definition
+
+    Usage:
+        frictioncoulomb=frictioncoulomb()
+    """
+
+    def __init__(self): # {{{
+        self.coefficient = float('NaN')
+        self.coefficientcoulomb = float('NaN')
+        self.p = float('NaN')
+	self.q = float('NaN')
+
+	#set defaults
+	self.setdefaultparameters()
+
+    #}}}
+    def __repr__(self): # {{{
+	string="Basal shear stress parameters: Sigma_b = min(coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b,\n coefficientcoulomb^2 * rho_i * g * (h-h_f)), (effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p)."
+
+	string="%s\n%s"%(string,fielddisplay(self,"coefficient","power law (Weertman) friction coefficient [SI]"))
+	string="%s\n%s"%(string,fielddisplay(self,"coefficientcoulomb","Coulomb friction coefficient [SI]"))
+	string="%s\n%s"%(string,fielddisplay(self,"p","p exponent"))
+	string="%s\n%s"%(string,fielddisplay(self,"q","q exponent"))
+	return string
+    #}}}
+    def extrude(self,md): # {{{
+	self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1)
+	self.coefficientcoulomb=project3d(md,'vector',self.coefficientcoulomb,'type','node','layer',1)
+	self.p=project3d(md,'vector',self.p,'type','element')
+	self.q=project3d(md,'vector',self.q,'type','element')
+	return self
+    #}}}
+    def setdefaultparameters(self): # {{{
+	return self
+    #}}}
+    def checkconsistency(self,md,solution,analyses):    # {{{
+
+	#Early return
+	if 'StressbalanceAnalysis' not in analyses and 'ThermalAnalysis' not in analyses:
+	    return md
+
+	md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1)
+	md = checkfield(md,'fieldname','friction.coefficientcoulomb','timeseries',1,'NaN',1,'Inf',1)
+	md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
+	md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
+
+	return md
+    # }}}
+    def marshall(self,prefix,md,fid):    # {{{
+	WriteData(fid,prefix,'name','md.friction.law','data',1,'format','Integer')
+	WriteData(fid,prefix,'object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+	WriteData(fid,prefix,'object',self,'fieldname','coefficientcoulomb','format','DoubleMat','mattype',1)
+	WriteData(fid,prefix,'object',self,'fieldname','p','format','DoubleMat','mattype',2)
+	WriteData(fid,prefix,'object',self,'fieldname','q','format','DoubleMat','mattype',2)
+    # }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictionhydro.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictionhydro.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictionhydro.m	(revision 21239)
@@ -0,0 +1,65 @@
+%FRICTIONWEERTMAN class definition
+%
+%   Usage:
+%      friction=frictionhydro();
+
+classdef frictionhydro
+	properties (SetAccess=public) 
+		Coupling           = 0;
+		q                  = NaN;
+		C                  = NaN;
+		As                 = NaN;
+		effective_pressure = NaN; 
+	end
+	methods
+		function self = frictionhydro(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','friction.Coupling','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.C','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.As','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			if self.Coupling==0,
+				md = checkfield(md,'fieldname','friction.effective_pressure','NaN',1,'Inf',1,'timeseries',1);
+	    end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.q=project3d(md,'vector',self.q,'type','element');
+			self.C=project3d(md,'vector',self.C,'type','element');
+			self.As=project3d(md,'vector',self.As,'type','element');
+			if self.Coupling==0,
+				self.effective_pressure=project3d(md,'vector',self.effective_pressure,'type','node','layer',1);
+			end
+	  end % }}}
+		function disp(self) % {{{
+			disp(sprintf('Effective Pressure based friction law described in Gagliardini 2007'));
+			fielddisplay(self,'Coupling','Coupling flag, 1 for coupling and 0 for forcing');
+			fielddisplay(self,'q','friction law exponent q>=1');
+			fielddisplay(self,'C','friction law max value [SI]');
+			fielddisplay(self,'As','Sliding Parameter without cavitation [m Pa^-n s^-1]');
+			fielddisplay(self,'effective_pressure','Effective Pressure for the forcing if not coupled [Pa]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.friction.law','data',3,'format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','Coupling','format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','As','format','DoubleMat','mattype',2);
+			if self.Coupling==0,
+				WriteData(fid,prefix,'class','friction','object',self,'fieldname','effective_pressure','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			end
+	  end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictionsommers.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictionsommers.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictionsommers.m	(revision 21239)
@@ -0,0 +1,45 @@
+%FRICTIONSOMMERS class definition
+%
+%   Usage:
+%      friction=frictionsommers();
+
+classdef frictionsommers
+	properties (SetAccess=public) 
+		coefficient = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1);
+		end % }}}
+		function self = frictionsommers(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(frictionsommers(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('Basal shear stress parameters: Sigma_b = coefficient^2 * Neff * u_b\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*(head-b))'));
+			fielddisplay(self,'coefficient','friction coefficient [SI]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.friction.law','data',8,'format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictiontemp.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictiontemp.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictiontemp.m	(revision 21239)
@@ -0,0 +1,65 @@
+%FRICTIONTEMP class definition
+%
+%   Usage:
+%      frictiontemp=frictiontemp();
+
+classdef frictiontemp
+	properties (SetAccess=public) 
+		gamma       = 0;
+		coefficient = NaN;
+		p           = NaN;
+		q           = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1);
+			self.p=project3d(md,'vector',self.p,'type','element');
+			self.q=project3d(md,'vector',self.q,'type','element');
+		end % }}}
+		function self = frictiontemp(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(frictiontemp(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%By default gamma = 1;
+			self.gamma = 1;
+
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+
+			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.gamma','NaN',1,'Inf',1,'numel',1,'>',0.);
+
+			%Check that temperature is provided
+			md = checkfield(md,'fieldname','initialization.temperature','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('Basal shear stress parameters: tau_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b * 1/f(T)\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p)'));
+			fielddisplay(self,'gamma','submelt sliding parameter f(T) = exp((T-Tpmp)/gamma)');
+			fielddisplay(self,'coefficient','frictiontemp coefficient [SI]');
+			fielddisplay(self,'p','p exponent');
+			fielddisplay(self,'q','q exponent');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'name','md.friction.law','data',4,'format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','gamma','format','Double');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','p','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictionwaterlayer.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictionwaterlayer.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictionwaterlayer.m	(revision 21239)
@@ -0,0 +1,64 @@
+%FRICTIONWATERLAYER class definition
+%
+%   Usage:
+%      frictionwaterlayer=frictionwaterlayer();
+
+classdef frictionwaterlayer
+	properties (SetAccess=public) 
+		coefficient = NaN;
+		f           = NaN;
+		p           = NaN;
+		q           = NaN;
+		water_layer = NaN;
+	end
+	methods
+		function self = frictionwaterlayer(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(frictionwaterlayer(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+
+			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.f','size',[1 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','thermal.spctemperature','Inf',1,'timeseries',1,'>=',0.);
+
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1);
+			self.p=project3d(md,'vector',self.p,'type','element');
+			self.q=project3d(md,'vector',self.q,'type','element');
+			self.water_layer=project3d(md,'vector',self.water_layer,'type','node','layer',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('Basal shear stress parameters: tau_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b * 1/f(T)\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*(bed+water_layer), r=q/p and s=1/p)'));
+			fielddisplay(self,'coefficient','frictiontemp coefficient [SI]');
+			fielddisplay(self,'f','f variable for effective pressure');
+			fielddisplay(self,'p','p exponent');
+			fielddisplay(self,'q','q exponent');
+			fielddisplay(self,'water_layer','water thickness at the base of the ice (m)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'name','md.friction.law','data',5,'format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','f','format','Double');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','p','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','water_layer','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictionweertman.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictionweertman.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictionweertman.m	(revision 21239)
@@ -0,0 +1,54 @@
+%FRICTIONWEERTMAN class definition
+%
+%   Usage:
+%      frictionweertman=frictionweertman();
+
+classdef frictionweertman
+	properties (SetAccess=public) 
+		C = NaN;
+		m = NaN;
+	end
+	methods
+		function self = frictionweertman(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			md.friction.C=project3d(md,'vector',md.friction.C,'type','node','layer',1);
+			md.friction.m=project3d(md,'vector',md.friction.m,'type','element');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','friction.C','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.m','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+		end % }}}
+		function disp(self) % {{{
+			disp('Weertman sliding law parameters:');
+			disp('   Weertman''s sliding law reads:');
+			disp('      v_b = C * Sigma_b^m');
+			disp('   In ISSM, this law is rewritten as:');
+			disp('      Sigma_b = C^(-1/m) * |u_b|^(1/m-1)  u_b');
+			disp(' ');
+			fielddisplay(self,'C','friction coefficient [SI]');
+			fielddisplay(self,'m','m exponent');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.friction.law','data',2,'format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','m','format','DoubleMat','mattype',2);
+			
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictionweertman.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictionweertman.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictionweertman.py	(revision 21239)
@@ -0,0 +1,47 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from checkfield import checkfield
+from WriteData import WriteData
+
+class frictionweertman(object):
+	"""
+	FRICTIONWEERTMAN class definition
+
+	   Usage:
+	      frictionweertman=frictionweertman();
+	"""
+
+	def __init__(self): # {{{
+		self.C = float('NaN')
+		self.m = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="Weertman sliding law parameters: Sigma_b = C^(-1/m) * |u_b|^(1/m-1) * u_b"
+
+		string="%s\n%s"%(string,fielddisplay(self,"C","friction coefficient [SI]"))
+		string="%s\n%s"%(string,fielddisplay(self,"m","m exponent"))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if 'StressbalanceAnalysis' not in analyses and 'ThermalAnalysis' not in analyses:
+			return md
+
+		md = checkfield(md,'fieldname','friction.C','timeseries',1,'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','friction.m','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'name','md.friction.law','data',2,'format','Integer')
+		WriteData(fid,prefix,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'class','friction','object',self,'fieldname','m','format','DoubleMat','mattype',2)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictionweertmantemp.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictionweertmantemp.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/frictionweertmantemp.m	(revision 21239)
@@ -0,0 +1,50 @@
+%FRICTIONWEERTMAN class definition
+%
+%   Usage:
+%      frictionweertmantemp=frictionweertmantemp();
+
+classdef frictionweertmantemp
+	properties (SetAccess=public) 
+		gamma = 0;
+		C = NaN;
+		m = NaN;
+	end
+	methods
+		function self = frictionweertmantemp(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','friction.C','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.m','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+		end % }}}
+		function disp(self) % {{{
+			disp('Weertman sliding law parameters:');
+			disp('      Sigma_b = C^(-1/m) * |u_b|^(1/m-1)  u_b * 1/f(T)');
+			disp(' ');
+			fielddisplay(self,'gamma','submelt sliding parameter f(T) = exp((T-Tpmp)/gamma)');
+			fielddisplay(self,'C','friction coefficient [SI]');
+			fielddisplay(self,'m','m exponent');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.friction.law','data',6,'format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','gamma','format','Double');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','m','format','DoubleMat','mattype',2);
+			
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/geometry.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/geometry.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/geometry.js	(revision 21239)
@@ -0,0 +1,68 @@
+//GEOMETRY class definition
+//
+//   Usage:
+//      geometry=geometry();
+
+function geometry(){
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+		}// }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   Geometry parameters:"));
+
+			fielddisplay(this,'surface','ice upper surface elevation [m]');
+			fielddisplay(this,'thickness','ice thickness [m]');
+			fielddisplay(this,'base','ice base elevation [m]');
+			fielddisplay(this,'bed','bed elevation [m]');
+		} //}}}
+        this.extrude = function(md) {//{{{
+            this.surface=project3d(md,'vector',this.surface,'type','node');
+            this.thickness=project3d(md,'vector',this.thickness,'type','node');
+            this.hydrostatic_ratio=project3d(md,'vector',this.hydrostatic_ratio,'type','node');
+            this.base=project3d(md,'vector',this.base,'type','node');
+            this.bed=project3d(md,'vector',this.bed,'type','node');
+            return this;
+        }//}}}
+		this.classname = function () { //{{{
+			return 'geometry';
+		} //}}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			if ((solution=='TransientSolution' & md.trans.isgia) | (solution=='GiaSolution')){
+				checkfield(md,'fieldname','geometry.thickness','timeseries',1,'NaN',1,'Inf',1,'>=',0);
+			}
+			else{
+				checkfield(md,'fieldname','geometry.surface'  ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','geometry.base'      ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','geometry.thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1],'>',0);
+				for(var i=0;i<md.mesh.numberofvertices;i++){
+					if (Math.abs(md.geometry.thickness.thickness-md.geometry.surface+md.geometry.base)>Math.pow(10,9)){
+						md = checkmessage(md,'equality thickness=surface-base violated');
+						break;
+					}
+				}
+				if (solution=='TransientSolution' & md.trans.isgroundingline){
+					checkfield(md,'fieldname','geometry.bed','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				}
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','surface','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','thickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',this,'fieldname','base','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','bed','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','hydrostatic_ratio','format','DoubleMat','mattype',1);
+		}//}}}
+		this.fix=function() { //{{{
+			this.hydrostatic_ratio=NullFix(this.hydrostatic_ratio,NaN);
+		}//}}}
+	//properties 
+	// {{{
+		this.surface           = NaN;
+		this.thickness         = NaN;
+		this.base              = NaN;
+		this.bed               = NaN;
+		this.hydrostatic_ratio = NaN;
+		this.setdefaultparameters();
+		//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/geometry.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/geometry.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/geometry.m	(revision 21239)
@@ -0,0 +1,95 @@
+%GEOMETRY class definition
+%
+%   Usage:
+%      geometry=geometry();
+
+classdef geometry
+	properties (SetAccess=public) 
+		surface           = NaN;
+		thickness         = NaN;
+		base              = NaN;
+		bed               = NaN;
+		hydrostatic_ratio = NaN;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. Update old properties here
+
+			%2014 March 26th
+			if isstruct(self),
+				disp('WARNING: updating geometry');
+				disp('         md.geometry.bed        is now md.geometry.base');
+				disp('         md.geometry.bathymetry is now md.geometry.bed');
+				obj2 = self;
+				self = geometry();
+				self.surface    = obj2.surface;
+				self.thickness  = obj2.thickness;
+				self.base       = obj2.bed;
+				self.bed        = obj2.bathymetry;
+			end
+
+		end% }}}
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.surface=project3d(md,'vector',self.surface,'type','node');
+			self.thickness=project3d(md,'vector',self.thickness,'type','node');
+			self.hydrostatic_ratio=project3d(md,'vector',self.hydrostatic_ratio,'type','node');
+			self.base=project3d(md,'vector',self.base,'type','node');
+			self.bed=project3d(md,'vector',self.bed,'type','node');
+		end % }}}
+		function self = geometry(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if (strcmp(solution,'TransientSolution') & md.transient.isgia) | strcmp(solution,'GiaSolution'),
+				md = checkfield(md,'fieldname','geometry.thickness','timeseries',1,'NaN',1,'Inf',1,'>=',0);
+			else
+				md = checkfield(md,'fieldname','geometry.surface'  ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','geometry.base'      ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','geometry.thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>',0);
+				if any(abs(self.thickness-self.surface+self.base)>10^-9),
+					md = checkmessage(md,['equality thickness=surface-base violated']);
+				end 
+				if strcmp(solution,'TransientSolution') & md.transient.isgroundingline,
+					md = checkfield(md,'fieldname','geometry.bed','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				end
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   geometry parameters:'));
+
+			fielddisplay(self,'surface','ice upper surface elevation [m]');
+			fielddisplay(self,'thickness','ice thickness [m]');
+			fielddisplay(self,'base','ice base elevation [m]');
+			fielddisplay(self,'bed','bed elevation [m]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','surface','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','thickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','base','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','bed','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','hydrostatic_ratio','format','DoubleMat','mattype',1);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.geometry.surface'],self.surface);
+			writejs1Darray(fid,[modelname '.geometry.thickness'],self.thickness);
+			writejs1Darray(fid,[modelname '.geometry.base'],self.base);
+			writejs1Darray(fid,[modelname '.geometry.bed'],self.bed);
+			writejs1Darray(fid,[modelname '.geometry.hydrostatic_ratio'],self.hydrostatic_ratio);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/geometry.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/geometry.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/geometry.py	(revision 21239)
@@ -0,0 +1,66 @@
+from project3d import project3d
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+class geometry(object):
+	"""
+	GEOMETRY class definition
+
+	   Usage:
+	      geometry=geometry();
+	"""
+
+	def __init__(self): # {{{
+		self.surface           = float('NaN')
+		self.thickness         = float('NaN')
+		self.base               = float('NaN')
+		self.bed        = float('NaN')
+		self.hydrostatic_ratio = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+
+		string="   geometry parameters:"
+		string="%s\n%s"%(string,fielddisplay(self,'surface','ice upper surface elevation [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'thickness','ice thickness [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'base','ice base elevation [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'bed','bed elevation [m]'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.surface=project3d(md,'vector',self.surface,'type','node')
+		self.thickness=project3d(md,'vector',self.thickness,'type','node')
+		self.hydrostatic_ratio=project3d(md,'vector',self.hydrostatic_ratio,'type','node')
+		self.base=project3d(md,'vector',self.base,'type','node')
+		self.bed=project3d(md,'vector',self.bed,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if (solution=='TransientSolution' and md.transient.isgia) or (solution=='GiaSolution'):
+			md = checkfield(md,'fieldname','geometry.thickness','NaN',1,'Inf',1,'>=',0,'timeseries',1)
+		else:
+			md = checkfield(md,'fieldname','geometry.surface'  ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','geometry.base'      ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','geometry.thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices],'>',0,'timeseries',1)
+			if any(abs(self.thickness-self.surface+self.base)>10**-9):
+				md.checkmessage("equality thickness=surface-base violated")
+			if solution=='TransientSolution' and md.transient.isgroundingline:
+				md = checkfield(md,'fieldname','geometry.bed','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'object',self,'fieldname','surface','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','thickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'fieldname','base','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','bed','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','hydrostatic_ratio','format','DoubleMat','mattype',1)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/gia.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/gia.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/gia.js	(revision 21239)
@@ -0,0 +1,64 @@
+//GIA class definition
+//
+//   Usage:
+//      gia=new gia();
+
+function gia (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		this.cross_section_shape=1; //square as default (see iedge in GiaDeflectionCorex)
+	
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   gia parameters:'));
+
+		fielddisplay(this,'mantle_viscosity','mantle viscosity[Pa s]');
+		fielddisplay(this,'lithosphere_thickness','lithosphere thickness (km)');
+		fielddisplay(this,'cross_section_shape','1: square-edged (default). 2: elliptical.  See iedge in GiaDeflectionCore');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "gia";
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) { // {{{
+
+		if(!ArrayAnyEqual(ArrayIsMember('GiaAnalysis',analyses),1))return;
+
+		checkfield(md,'fieldname','gia.mantle_viscosity','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0);
+		checkfield(md,'fieldname','gia.lithosphere_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0);
+		checkfield(md,'fieldname','gia.cross_section_shape','numel',[1],'values',[1,2]);
+
+		//be sure that if we are running a masstransport ice flow model coupled with gia, that thickness forcings 
+		//are not provided into the future.
+		if (solution=='TransientSolution' & md.trans.ismasstransport & md.trans.isgia){
+			//figure out if thickness is a transient forcing: 
+			if (md.geometry.thickness.length == (md.mesh.numberofvertices+1)){
+				//recover the furthest time "in time": 
+				t=md.geometry.thickness[0].length;
+				if(md.geometry.thickness[md.geometry.thickness.length-1][t-1]!=md.timestepping.start_time){
+					md.checkmessage('if ismasstransport is on, transient thickness forcing for the gia model should not be provided in the future. Synchronize your start_time to correspond to the most recent transient thickness forcing timestep');
+				}
+			}
+		}
+	} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','mantle_viscosity','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','lithosphere_thickness','format','DoubleMat','mattype',1,'scale',Math.pow(10,3)); //from km to m
+			WriteData(fid,prefix,'object',this,'fieldname','cross_section_shape','format','Integer');
+		}//}}}
+		this.fix=function() { //{{{
+			this.mantle_viscosity=NullFix(this.mantle_viscosity,NaN);
+			this.lithosphere_thickness=NullFix(this.lithosphere_thickness,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.mantle_viscosity              = NaN;
+	this.lithosphere_thickness         = NaN;
+	this.cross_section_shape           = 0;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/gia.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/gia.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/gia.m	(revision 21239)
@@ -0,0 +1,72 @@
+%GIA class definition
+%
+%   Usage:
+%      gia=gia();
+
+classdef gia
+	properties (SetAccess=public) 
+		mantle_viscosity              = NaN;
+		lithosphere_thickness         = NaN;
+		cross_section_shape           = 0;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.mantle_viscosity=project3d(md,'vector',self.mantle_viscosity,'type','node');
+			self.lithosphere_thickness=project3d(md,'vector',self.lithosphere_thickness,'type','node');
+		end % }}}
+		function self = gia(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		self.cross_section_shape=1; %square as default (see iedge in GiaDeflectionCorex)
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ismember('GiaAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','gia.mantle_viscosity','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>',0);
+			md = checkfield(md,'fieldname','gia.lithosphere_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>',0);
+			md = checkfield(md,'fieldname','gia.cross_section_shape','numel',[1],'values',[1,2]);
+
+			%be sure that if we are running a masstransport ice flow model coupled with gia, that thickness forcings 
+			%are not provided into the future.
+			if strcmp(solution,'TransientSolution') & md.transient.ismasstransport & md.transient.isgia,
+				%figure out if thickness is a transient forcing: 
+				if size(md.geometry.thickness,1)==md.mesh.numberofvertices+1,
+					%recover the furthest time "in time": 
+					if(thickness(end,end)~=md.timestepping.start_time),
+						md = checkmessage(md,['if ismasstransport is on, transient thickness forcing'...
+							' for the gia model should not be provided in the future.'...
+							' Synchronize your start_time to correspond to the most recent transient'...
+							' thickness forcing timestep']);
+					end
+				end
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   gia parameters:'));
+
+			fielddisplay(self,'mantle_viscosity','mantle viscosity[Pa s]');
+			fielddisplay(self,'lithosphere_thickness','lithosphere thickness (km)');
+			fielddisplay(self,'cross_section_shape','1: square-edged (default). 2: elliptical.  See iedge in GiaDeflectionCore');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','mantle_viscosity','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','lithosphere_thickness','format','DoubleMat','mattype',1,'scale',10^3); %from km to m
+			WriteData(fid,prefix,'object',self,'fieldname','cross_section_shape','format','Integer');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.gia.mantle_viscosity'],self.mantle_viscosity);
+			writejsdouble(fid,[modelname '.gia.lithosphere_thickness'],self.lithosphere_thickness);
+			writejsdouble(fid,[modelname '.gia.cross_section_shape'],self.cross_section_shape);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/gia.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/gia.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/gia.py	(revision 21239)
@@ -0,0 +1,63 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from checkfield import checkfield
+from WriteData import WriteData
+
+class gia(object):
+	"""
+	GIA class definition
+
+	   Usage:
+	      gia=gia();
+	"""
+
+	def __init__(self): # {{{
+		self.mantle_viscosity              = float('NaN');
+		self.lithosphere_thickness         = float('NaN');
+		self.cross_section_shape           = 0;
+	
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		
+		string='   gia solution parameters:' 
+		
+		string="%s\n%s"%(string,fielddisplay(self,'mantle_viscosity','mantle viscosity constraints (NaN means no constraint) (Pa s)'))
+		string="%s\n%s"%(string,fielddisplay(self,'lithosphere_thickness','lithosphere thickness constraints (NaN means no constraint) (m)'))
+		string="%s\n%s"%(string,fielddisplay(self,'cross_section_shape',"1: square-edged, 2: elliptical-edged surface"))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.mantle_viscosity=project3d(md,'vector',self.mantle_viscosity,'type','node')
+		self.lithosphere_thickness=project3d(md,'vector',self.lithosphere_thickness,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		self.cross_section_shape=1; 
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		# Early return 
+		if ('GiaAnalysis' not in  analyses):
+			return md 
+		
+		md = checkfield(md,'fieldname','gia.mantle_viscosity','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0)
+		md = checkfield(md,'fieldname','gia.lithosphere_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0)
+		md = checkfield(md,'fieldname','gia.cross_section_shape','numel',[1],'values',[1,2])
+
+		#be sure that if we are running a masstransport ice flow model coupled with gia, that thickness forcings 
+		#are not provided into the future.
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		WriteData(fid,prefix,'object',self,'fieldname','mantle_viscosity','format','DoubleMat','mattype',1);
+		WriteData(fid,prefix,'object',self,'fieldname','lithosphere_thickness','format','DoubleMat','mattype',1,'scale',10.**3.);
+		WriteData(fid,prefix,'object',self,'fieldname','cross_section_shape','format','Integer');
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/groundingline.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/groundingline.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/groundingline.js	(revision 21239)
@@ -0,0 +1,52 @@
+//GROUNDINGLINE class definition
+//
+//   Usage:
+//      groundingline=new groundingline();
+
+function groundingline (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		//Type of migration
+		this.migration='None';
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   grounding line migration parameters:'));
+		fielddisplay(this,'migration',"type of grounding line migration: 'SoftMigration','AggressiveMigration','SubelementMigration','SubelementMigration2' or 'None'");
+
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "groundingline";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) {// {{{
+
+			checkfield(md,'fieldname','groundingline.migration','values',['None', 'AggressiveMigration', 'SoftMigration', 'SubelementMigration', 'SubelementMigration2', 'Contact', 'None', 'GroundingOnly']);
+
+			if (this.migration !='None'){
+				if (isNaN(md.geometry.bed)){
+					md.checkmessage('requesting grounding line migration, but bathymetry is absent!');
+				}
+				for (var i=0;i<md.mesh.numberofvertices;i++){
+					if(md.mask.groundedice_levelset[i]>0){
+						md.checkmessage('base not equal to bed on grounded ice!');
+						break;
+					}
+					if(md.geometry.bed[i] - md.geometry.base[i] > Math.pow(10,-9)){
+						md = checkmessage(md,'bed superior to base on floating ice!');
+						break;
+					}
+				}
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'data',this.migration,'name','md.groundingline.migration','format','String');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.migration    = '';
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/groundingline.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/groundingline.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/groundingline.m	(revision 21239)
@@ -0,0 +1,58 @@
+%GROUNDINGLINE class definition
+%
+%   Usage:
+%      groundingline=groundingline();
+
+classdef groundingline
+	properties (SetAccess=public) 
+		migration    = '';
+	end
+	methods
+		function self = groundingline(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Type of migration
+			self.migration='None';
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','groundingline.migration','values',{'None' 'AggressiveMigration' 'SoftMigration' 'SubelementMigration' 'SubelementMigration2' 'Contact' 'None' 'GroundingOnly'});
+
+			if ~strcmp(self.migration,'None'),
+				if isnan(md.geometry.bed),
+					md = checkmessage(md,['requesting grounding line migration, but bathymetry is absent!']);
+				end
+				pos=find(md.mask.groundedice_levelset>0. & md.mask.ice_levelset<=0);
+				if any(abs(md.geometry.base(pos)-md.geometry.bed(pos))>10^-10),
+					md = checkmessage(md,['base not equal to bed on grounded ice!']);
+				end
+				pos=find(md.mask.groundedice_levelset<=0. & md.mask.ice_levelset<=0);
+				if any(md.geometry.bed(pos) - md.geometry.base(pos) > 10^-9),
+					md = checkmessage(md,['bed superior to base on floating ice!']);
+				end
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   grounding line migration parameters:'));
+			fielddisplay(self,'migration','type of grounding line migration: ''SoftMigration'',''AggressiveMigration'',''SubelementMigration'',''SubelementMigration2'' or ''None''');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'data',self.migration,'name','md.groundingline.migration','format','String');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsstring(fid,[modelname '.groundingline.migration'],self.migration);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/groundingline.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/groundingline.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/groundingline.py	(revision 21239)
@@ -0,0 +1,52 @@
+import numpy
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class groundingline(object):
+	"""
+	GROUNDINGLINE class definition
+
+	   Usage:
+	      groundingline=groundingline();
+	"""
+
+	def __init__(self): # {{{
+		self.migration=''
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   grounding line migration parameters:'
+
+		string="%s\n%s"%(string,fielddisplay(self,'migration','type of grounding line migration: ''SoftMigration'',''AggressiveMigration'',''SubelementMigration'',''SubelementMigration2'',''Contact'',''None'''))
+		return string
+		#}}}	
+	def setdefaultparameters(self): # {{{
+
+		#Type of migration
+		self.migration='None'
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','groundingline.migration','values',['None','AggressiveMigration','SoftMigration','SubelementMigration','SubelementMigration2','Contact','GroundingOnly'])
+
+		if not m.strcmp(self.migration,'None'):
+			if numpy.any(numpy.isnan(md.geometry.bed)):
+				md.checkmessage("requesting grounding line migration, but bathymetry is absent!")
+			pos=numpy.nonzero(md.mask.groundedice_levelset>0.)[0]
+			if any(numpy.abs(md.geometry.base[pos]-md.geometry.bed[pos])>10**-10):
+				md.checkmessage("base not equal to bed on grounded ice!")
+			if any(md.geometry.bed - md.geometry.base > 10**-9):
+				md.checkmessage("bed superior to base on floating ice!")
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'data',self.migration,'name','md.groundingline.migration','format','String')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/hydrologydc.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/hydrologydc.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/hydrologydc.m	(revision 21239)
@@ -0,0 +1,229 @@
+%Hydrologydc class definition
+%
+%   Usage:
+%      hydrologydc=hydrologydc();
+
+classdef hydrologydc
+	properties (SetAccess=public) 
+		water_compressibility    = 0;
+		isefficientlayer         = 0;
+		penalty_factor           = 0;
+		penalty_lock             = 0;
+		rel_tol                  = 0;
+		max_iter                 = 0;
+		sedimentlimit_flag       = 0;
+		sedimentlimit            = 0;
+		transfer_flag            = 0;
+		leakage_factor           = 0;
+		basal_moulin_input       = NaN;
+
+		spcsediment_head         = NaN;
+		sediment_transmitivity   = NaN;
+		sediment_compressibility = 0;
+		sediment_porosity        = 0;
+		sediment_thickness       = 0;
+
+
+		spcepl_head              = NaN;
+		mask_eplactive_node      = NaN;
+		epl_compressibility      = 0;
+		epl_porosity             = 0;
+		epl_initial_thickness    = 0;
+		epl_colapse_thickness    = 0;
+		epl_thick_comp           = 0;
+		epl_max_thickness        = 0;
+		epl_conductivity         = 0;
+		eplflip_lock             = 0;
+  end
+	methods
+		function self = extrude(self,md) % {{{
+			self.spcsediment_head=project3d(md,'vector',self.spcsediment_head,'type','node','layer',1);
+			self.mask_eplactive_node=project3d(md,'vector',self.mask_eplactive_node,'type','node','layer',1);
+			self.sediment_transmitivity=project3d(md,'vector',self.sediment_transmitivity,'type','node','layer',1);
+			self.basal_moulin_input=project3d(md,'vector',self.basal_moulin_input,'type','node','layer',1);
+			if(self.isefficientlayer==1);
+				self.spcepl_head=project3d(md,'vector',self.spcepl_head,'type','node','layer',1);
+			end
+		end % }}}
+		% {{{ function self = hydrologydc(varargin) 
+		function self = hydrologydc(varargin) 
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end 
+		% }}}
+		function self = initialize(self,md) % {{{
+			if isnan(self.basal_moulin_input),
+				self.basal_moulin_input=zeros(md.mesh.numberofvertices,1);
+				disp('      no hydrology.basal_moulin_input specified: values set as zero');
+			end
+
+		end % }}}
+		% {{{ function self = setdefaultparameters(self) 
+		function self = setdefaultparameters(self) 
+
+			%Parameters from de Fleurian 2014
+			self.water_compressibility    = 5.04e-10;
+			self.isefficientlayer         = 1;
+			self.penalty_factor           = 3;
+			self.penalty_lock             = 0;
+			self.rel_tol                  = 1.0e-06;
+			self.max_iter                 = 100;
+			self.sedimentlimit_flag       = 0;
+			self.sedimentlimit            = 0;
+			self.transfer_flag            = 0;
+			self.leakage_factor           = 10.0;
+
+			self.sediment_compressibility = 1.0e-08;
+			self.sediment_porosity        = 0.4;
+			self.sediment_thickness       = 20.0;
+			self.sediment_transmitivity   = 8.0e-04;
+
+			self.epl_compressibility      = 1.0e-08;
+			self.epl_porosity             = 0.4;
+			self.epl_initial_thickness    = 1.0;
+			self.epl_colapse_thickness    = 1.0e-3;
+			self.epl_thick_comp           = 1;
+			self.epl_max_thickness        = 5.0;
+			self.epl_conductivity         = 8.0e-02;
+			self.eplflip_lock             = 0;
+		end 
+		% }}}
+		% {{{ function md = checkconsistency(self,md,solution,analyses) 
+		function md = checkconsistency(self,md,solution,analyses) 
+			%Early return
+			if ~ismember('HydrologyDCInefficientAnalysis',analyses) & ~ismember('HydrologyDCEfficientAnalysis',analyses),
+				return;
+			end
+
+			md = checkfield(md,'fieldname','hydrology.water_compressibility','>',0,'numel',1);
+			md = checkfield(md,'fieldname','hydrology.isefficientlayer','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','hydrology.penalty_factor','>',0,'numel',1);
+			md = checkfield(md,'fieldname','hydrology.penalty_lock','>=',0,'numel',1);
+			md = checkfield(md,'fieldname','hydrology.rel_tol','>',0,'numel',1);
+			md = checkfield(md,'fieldname','hydrology.max_iter','>',0,'numel',1);
+			md = checkfield(md,'fieldname','hydrology.sedimentlimit_flag','numel',[1],'values',[0 1 2 3]);
+			md = checkfield(md,'fieldname','hydrology.transfer_flag','numel',[1],'values',[0 1]);
+			if self.sedimentlimit_flag==1,
+				md = checkfield(md,'fieldname','hydrology.sedimentlimit','>',0,'numel',1);
+			end
+			if self.transfer_flag==1,
+				md = checkfield(md,'fieldname','hydrology.leakage_factor','>',0,'numel',1);
+			end
+			md = checkfield(md,'fieldname','hydrology.basal_moulin_input','NaN',1,'Inf',1,'timeseries',1);
+
+			md = checkfield(md,'fieldname','hydrology.spcsediment_head','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','hydrology.sediment_compressibility','>',0,'numel',1);
+			md = checkfield(md,'fieldname','hydrology.sediment_porosity','>',0,'numel',1);
+			md = checkfield(md,'fieldname','hydrology.sediment_thickness','>',0,'numel',1);
+			md = checkfield(md,'fieldname','hydrology.sediment_transmitivity','>=',0,'size',[md.mesh.numberofvertices 1]);
+
+			if self.isefficientlayer==1,
+				md = checkfield(md,'fieldname','hydrology.spcepl_head','Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','hydrology.mask_eplactive_node','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+				md = checkfield(md,'fieldname','hydrology.epl_compressibility','>',0,'numel',1);
+				md = checkfield(md,'fieldname','hydrology.epl_porosity','>',0,'numel',1);
+				md = checkfield(md,'fieldname','hydrology.epl_initial_thickness','>',0,'numel',1);
+				md = checkfield(md,'fieldname','hydrology.epl_colapse_thickness','>',0,'numel',1);
+				md = checkfield(md,'fieldname','hydrology.epl_thick_comp','numel',[1],'values',[0 1]);
+				md = checkfield(md,'fieldname','hydrology.epl_max_thickness','>',0,'numel',1);
+				md = checkfield(md,'fieldname','hydrology.epl_conductivity','>',0,'numel',1);
+				md = checkfield(md,'fieldname','hydrology.eplflip_lock','>=',0,'numel',1);
+				if (self.epl_colapse_thickness>self.epl_initial_thickness),
+					md = checkmessage(md,'Colapsing thickness for EPL larger than initial thickness');
+				end 
+			end
+		end 
+		% }}}
+		% {{{ function disp(self)
+		function disp(self) 
+			disp(sprintf('   hydrology Dual Porous Continuum Equivalent parameters:'));
+			disp(sprintf('   - general parameters'));
+			fielddisplay(self,'water_compressibility','compressibility of water [Pa^-1]');
+			fielddisplay(self,'isefficientlayer','do we use an efficient drainage system [1: true; 0: false]');
+			fielddisplay(self,'penalty_factor','exponent of the value used in the penalisation method [dimensionless]');
+			fielddisplay(self,'penalty_lock','stabilize unstable constraints that keep zigzagging after n iteration (default is 0, no stabilization)');
+			fielddisplay(self,'rel_tol','tolerance of the nonlinear iteration for the transfer between layers [dimensionless]');
+			fielddisplay(self,'max_iter','maximum number of nonlinear iteration');
+			fielddisplay(self,'sedimentlimit_flag','what kind of upper limit is applied for the inefficient layer');
+			disp(sprintf('%55s  0: no limit',' '));
+			disp(sprintf('%55s  1: user defined: %s',' ','sedimentlimit'));
+			disp(sprintf('%55s  2: hydrostatic pressure',' '));
+			disp(sprintf('%55s  3: normal stress',' '));
+			if self.sedimentlimit_flag==1,
+				fielddisplay(self,'sedimentlimit','user defined upper limit for the inefficient layer [m]');
+			end
+			fielddisplay(self,'transfer_flag',['what kind of transfer method is applied between the layers']);
+			disp(sprintf('%55s  0: no transfer',' '));
+			disp(sprintf('%55s  1: constant leakage factor: %s',' ','leakage_factor'));
+			if self.transfer_flag==1,
+				fielddisplay(self,'leakage_factor','user defined leakage factor [m]');
+			end
+			fielddisplay(self,'basal_moulin_input','water flux at a given point [m3 s-1]');
+			disp(sprintf('   - for the sediment layer'));
+			fielddisplay(self,'spcsediment_head','sediment water head constraints (NaN means no constraint) [m above MSL]');
+			fielddisplay(self,'sediment_compressibility','sediment compressibility [Pa^-1]');
+			fielddisplay(self,'sediment_porosity','sediment [dimensionless]');
+			fielddisplay(self,'sediment_thickness','sediment thickness [m]');
+			fielddisplay(self,'sediment_transmitivity','sediment transmitivity [m^2/s]');
+
+			if self.isefficientlayer==1,
+				disp(sprintf('   - for the epl layer'));
+				fielddisplay(self,'spcepl_head','epl water head constraints (NaN means no constraint) [m above MSL]');
+				fielddisplay(self,'mask_eplactive_node','active (1) or not (0) EPL');
+				fielddisplay(self,'epl_compressibility','epl compressibility [Pa^-1]');
+				fielddisplay(self,'epl_porosity','epl [dimensionless]');
+				fielddisplay(self,'epl_initial_thickness','epl initial thickness [m]');
+				fielddisplay(self,'epl_colapse_thickness','epl colapsing thickness [m]');
+				fielddisplay(self,'epl_thick_comp','epl thickness computation flag');
+				fielddisplay(self,'epl_max_thickness','epl maximal thickness [m]');
+				fielddisplay(self,'epl_conductivity','epl conductivity [m^2/s]');
+				fielddisplay(self,'eplflip_lock','lock the epl activation to avoid fli-floping (default is 0, no stabilization)');
+			end
+
+		end 
+		% }}}
+		% {{{ function marshall(self,prefix,md,fid) 
+		function marshall(self,prefix,md,fid) 
+			WriteData(fid,prefix,'name','md.hydrology.model','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','water_compressibility','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','isefficientlayer','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','penalty_factor','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','penalty_lock','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','rel_tol','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','max_iter','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','sedimentlimit_flag','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','transfer_flag','format','Integer');
+			if self.sedimentlimit_flag==1,
+				WriteData(fid,prefix,'object',self,'fieldname','sedimentlimit','format','Double');
+			end
+			if self.transfer_flag==1,
+				WriteData(fid,prefix,'object',self,'fieldname','leakage_factor','format','Double');
+			end
+			WriteData(fid,prefix,'object',self,'fieldname','basal_moulin_input','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+
+			WriteData(fid,prefix,'object',self,'fieldname','spcsediment_head','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','sediment_compressibility','format','Double');			
+			WriteData(fid,prefix,'object',self,'fieldname','sediment_porosity','format','Double');			
+			WriteData(fid,prefix,'object',self,'fieldname','sediment_thickness','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','sediment_transmitivity','format','DoubleMat','mattype',1');		
+
+			if self.isefficientlayer==1,	
+				WriteData(fid,prefix,'object',self,'fieldname','spcepl_head','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);	
+				WriteData(fid,prefix,'object',self,'fieldname','mask_eplactive_node','format','DoubleMat','mattype',1);
+				WriteData(fid,prefix,'object',self,'fieldname','epl_compressibility','format','Double');			
+				WriteData(fid,prefix,'object',self,'fieldname','epl_porosity','format','Double');			
+				WriteData(fid,prefix,'object',self,'fieldname','epl_initial_thickness','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','epl_colapse_thickness','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','epl_thick_comp','format','Integer');
+				WriteData(fid,prefix,'object',self,'fieldname','epl_max_thickness','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','epl_conductivity','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','eplflip_lock','format','Integer');
+			end
+		end 
+		% }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/hydrologydc.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/hydrologydc.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/hydrologydc.py	(revision 21239)
@@ -0,0 +1,218 @@
+import numpy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+class hydrologydc(object):
+	"""
+	Hydrologydc class definition
+
+	Usage:
+		hydrologydc=hydrologydc();
+	"""
+
+	def __init__(self): # {{{
+		self.water_compressibility    = 0
+		self.isefficientlayer         = 0
+		self.penalty_factor           = 0
+		self.penalty_lock             = 0
+		self.rel_tol                  = 0
+		self.max_iter                 = 0
+		self.sedimentlimit_flag       = 0
+		self.sedimentlimit            = 0
+		self.transfer_flag            = 0
+		self.leakage_factor           = 0
+		self.basal_moulin_input       = float('NaN')
+
+		self.spcsediment_head         = float('NaN')
+		self.sediment_transmitivity   = float('NaN')
+		self.sediment_compressibility = 0
+		self.sediment_porosity        = 0
+		self.sediment_thickness       = 0
+
+
+		self.spcepl_head              = float('NaN')
+		self.mask_eplactive_node      = float('NaN')
+		self.epl_compressibility      = 0
+		self.epl_porosity             = 0
+		self.epl_initial_thickness    = 0
+		self.epl_colapse_thickness    = 0
+		self.epl_thick_comp           = 0
+		self.epl_max_thickness        = 0
+		self.epl_conductivity         = 0
+		self.eplflip_lock             = 0
+				 
+		#set defaults
+		self.setdefaultparameters()
+	#}}}
+	def __repr__(self): # {{{
+		string='   hydrology Dual Porous Continuum Equivalent parameters:'
+		string='   - general parameters'
+		string="%s\n%s"%(string,fielddisplay(self,'water_compressibility','compressibility of water [Pa^-1]'))
+		string="%s\n%s"%(string,fielddisplay(self,'isefficientlayer','do we use an efficient drainage system [1: true 0: false]'))
+		string="%s\n%s"%(string,fielddisplay(self,'penalty_factor','exponent of the value used in the penalisation method [dimensionless]'))
+		string="%s\n%s"%(string,fielddisplay(self,'penalty_lock','stabilize unstable constraints that keep zigzagging after n iteration (default is 0, no stabilization)'))
+		string="%s\n%s"%(string,fielddisplay(self,'rel_tol','tolerance of the nonlinear iteration for the transfer between layers [dimensionless]'))
+		string="%s\n%s"%(string,fielddisplay(self,'max_iter','maximum number of nonlinear iteration'))
+		string="%s\n%s"%(string,fielddisplay(self,'basal_moulin_input','water flux at a given point [m3 s-1]'))
+		string="%s\n%s"%(string,fielddisplay(self,'sedimentlimit_flag','what kind of upper limit is applied for the inefficient layer'))
+		string="%s\n\t\t%s"%(string,'0: no limit')
+		string="%s\n\t\t%s"%(string,'1: user defined sedimentlimit')
+		string="%s\n\t\t%s"%(string,'2: hydrostatic pressure')
+		string="%s\n\t\t%s"%(string,'3: normal stress')
+	
+		if self.sedimentlimit_flag==1:
+			string="%s\n%s"%(string,fielddisplay(self,'sedimentlimit','user defined upper limit for the inefficient layer [m]'))
+
+		string="%s\n%s"%(string,fielddisplay(self,'transfer_flag','what kind of transfer method is applied between the layers'))
+		string="%s\n\t\t%s"%(string,'0: no transfer')
+		string="%s\n\t\t%s"%(string,'1: constant leakage factor: leakage_factor')
+			 
+		if self.transfer_flag is 1:
+			string="%s\n%s"%(string,fielddisplay(self,'leakage_factor','user defined leakage factor [m]'))
+
+		string="%s\n%s"%(string,'   - for the sediment layer')
+		string="%s\n%s"%(string,fielddisplay(self,'spcsediment_head','sediment water head constraints (NaN means no constraint) [m above MSL]'))
+		string="%s\n%s"%(string,fielddisplay(self,'sediment_compressibility','sediment compressibility [Pa^-1]'))
+		string="%s\n%s"%(string,fielddisplay(self,'sediment_porosity','sediment [dimensionless]'))
+		string="%s\n%s"%(string,fielddisplay(self,'sediment_thickness','sediment thickness [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'sediment_transmitivity','sediment transmitivity [m^2/s]'))
+
+		if self.isefficientlayer==1:
+			string="%s\n%s"%(string,'   - for the epl layer')
+			string="%s\n%s"%(string,fielddisplay(self,'spcepl_head','epl water head constraints (NaN means no constraint) [m above MSL]'))
+			string="%s\n%s"%(string,fielddisplay(self,'mask_eplactive_node','active (1) or not (0) EPL'))
+			string="%s\n%s"%(string,fielddisplay(self,'epl_compressibility','epl compressibility [Pa^-1]'))
+			string="%s\n%s"%(string,fielddisplay(self,'epl_porosity','epl [dimensionless]'))
+			string="%s\n%s"%(string,fielddisplay(self,'epl_max_thickness','epl initial thickness [m]'))
+			string="%s\n%s"%(string,fielddisplay(self,'epl_initial_thickness','epl initial thickness [m]'))			
+			string="%s\n%s"%(string,fielddisplay(self,'epl_colapse_thickness','epl colapsing thickness [m]'))
+			string="%s\n%s"%(string,fielddisplay(self,'epl_thick_comp','epl thickness computation flag'))
+			string="%s\n%s"%(string,fielddisplay(self,'epl_conductivity','epl conductivity [m^2/s]'))
+			string="%s\n%s"%(string,fielddisplay(self,'eplflip_lock','lock epl activity to avoid flip-floping (default is 0, no stabilization)'))
+		return string
+#}}}
+	def extrude(self,md): # {{{
+		self.spcsediment_head=project3d(md,'vector',self.spcsediment_head,'type','node','layer',1)
+		self.spcepl_head=project3d(md,'vector',self.spcepl_head,'type','node','layer',1)
+		self.mask_eplactive_node=project3d(md,'vector',self.mask_eplactive_node,'type','node','layer',1)
+		self.sediment_transmitivity=project3d(md,'vector',self.sediment_transmitivity,'type','node','layer',1)
+		self.basal_moulin_input=project3d(md,'vector',self.basal_moulin_input,'type','node','layer',1)
+		if self.isefficientlayer==1 :
+			self.spcepl_head=project3d(md,'vector',self.spcepl_head,'type','node','layer',1)
+		return self
+	#}}}
+	def setdefaultparameters(self): #{{{ 
+
+		#Parameters from de Fleurian 2014
+		self.water_compressibility    = 5.04e-10
+		self.isefficientlayer         = 1
+		self.penalty_factor           = 3
+		self.penalty_lock             = 0
+		self.rel_tol                  = 1.0e-06
+		self.max_iter                 = 100
+		self.sedimentlimit_flag       = 0
+		self.sedimentlimit            = 0
+		self.transfer_flag            = 0
+		self.leakage_factor           = 10.0
+
+		self.sediment_compressibility = 1.0e-08
+		self.sediment_porosity        = 0.4
+		self.sediment_thickness       = 20.0
+		self.sediment_transmitivity   = 8.0e-04
+
+		self.epl_compressibility      = 1.0e-08
+		self.epl_porosity             = 0.4
+		self.epl_initial_thickness    = 1.0
+		self.epl_colapse_thickness    = 1.0e-3
+		self.epl_thick_comp           = 1
+		self.epl_max_thickness        = 5.0
+		self.epl_conductivity         = 8.0e-02
+		self.eplflip_lock             = 0
+		
+		return self
+	# }}}
+	def initialize(self,md): # {{{
+		if numpy.all(numpy.isnan(self.basal_moulin_input)):
+			self.basal_moulin_input=numpy.zeros((md.mesh.numberofvertices,1))
+			print"      no hydrology.basal_moulin_input specified: values set as zero"
+
+		return self
+	# }}}
+	def checkconsistency(self,md,solution,analyses): #{{{ 
+
+		#Early return
+		if 'HydrologyDCInefficientAnalysis' not in analyses and 'HydrologyDCEfficientAnalysis' not in analyses:
+			return md
+
+		md = checkfield(md,'fieldname','hydrology.water_compressibility','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','hydrology.isefficientlayer','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','hydrology.penalty_factor','>',0.,'numel',[1])
+		md = checkfield(md,'fieldname','hydrology.penalty_lock','>=',0.,'numel',[1])
+		md = checkfield(md,'fieldname','hydrology.rel_tol','>',0.,'numel',[1])
+		md = checkfield(md,'fieldname','hydrology.max_iter','>',0.,'numel',[1])
+		md = checkfield(md,'fieldname','hydrology.sedimentlimit_flag','numel',[1],'values',[0,1,2,3])
+		md = checkfield(md,'fieldname','hydrology.transfer_flag','numel',[1],'values',[0,1])
+
+		if self.sedimentlimit_flag==1:
+			md = checkfield(md,'fieldname','hydrology.sedimentlimit','>',0.,'numel',[1])
+
+		if self.transfer_flag==1:
+			md = checkfield(md,'fieldname','hydrology.leakage_factor','>',0.,'numel',[1])
+
+		md = checkfield(md,'fieldname','hydrology.basal_moulin_input','NaN',1,'Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','hydrology.spcsediment_head','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','hydrology.sediment_compressibility','>',0.,'numel',[1])
+		md = checkfield(md,'fieldname','hydrology.sediment_porosity','>',0.,'numel',[1])
+		md = checkfield(md,'fieldname','hydrology.sediment_thickness','>',0.,'numel',[1])
+		md = checkfield(md,'fieldname','hydrology.sediment_transmitivity','>=',0,'size',[md.mesh.numberofvertices,1])
+		if self.isefficientlayer==1:
+			md = checkfield(md,'fieldname','hydrology.spcepl_head','Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','hydrology.mask_eplactive_node','size',[md.mesh.numberofvertices,1],'values',[0,1])
+			md = checkfield(md,'fieldname','hydrology.epl_compressibility','>',0.,'numel',[1])
+			md = checkfield(md,'fieldname','hydrology.epl_porosity','>',0.,'numel',[1])
+			md = checkfield(md,'fieldname','hydrology.epl_max_thickness','numel',[1],'>',0.)
+			md = checkfield(md,'fieldname','hydrology.epl_initial_thickness','numel',[1],'>',0.)
+			md = checkfield(md,'fieldname','hydrology.epl_colapse_thickness','numel',[1],'>',0.)
+			md = checkfield(md,'fieldname','hydrology.epl_thick_comp','numel',[1],'values',[0,1])
+			md = checkfield(md,'fieldname','hydrology.eplflip_lock','>=',0.,'numel',[1])
+			if self.epl_colapse_thickness > self.epl_initial_thickness:
+				md.checkmessage('Colapsing thickness for EPL larger than initial thickness')
+			md = checkfield(md,'fieldname','hydrology.epl_conductivity','numel',[1],'>',0.)
+	# }}}
+	def marshall(self,prefix,md,fid): #{{{ 
+		WriteData(fid,prefix,'name','md.hydrology.model','data',1,'format','Integer')
+		WriteData(fid,prefix,'object',self,'fieldname','water_compressibility','format','Double')
+		WriteData(fid,prefix,'object',self,'fieldname','isefficientlayer','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','penalty_factor','format','Double')
+		WriteData(fid,prefix,'object',self,'fieldname','penalty_lock','format','Integer')
+		WriteData(fid,prefix,'object',self,'fieldname','rel_tol','format','Double')
+		WriteData(fid,prefix,'object',self,'fieldname','max_iter','format','Integer')
+		WriteData(fid,prefix,'object',self,'fieldname','sedimentlimit_flag','format','Integer')
+		WriteData(fid,prefix,'object',self,'fieldname','transfer_flag','format','Integer')
+		if self.sedimentlimit_flag==1:
+			WriteData(fid,prefix,'object',self,'fieldname','sedimentlimit','format','Double')
+
+		if self.transfer_flag==1:
+			WriteData(fid,prefix,'object',self,'fieldname','leakage_factor','format','Double')
+
+		WriteData(fid,prefix,'object',self,'fieldname','basal_moulin_input','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'fieldname','spcsediment_head','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'fieldname','sediment_compressibility','format','Double')
+		WriteData(fid,prefix,'object',self,'fieldname','sediment_porosity','format','Double')			
+		WriteData(fid,prefix,'object',self,'fieldname','sediment_thickness','format','Double')
+		WriteData(fid,prefix,'object',self,'fieldname','sediment_transmitivity','format','DoubleMat','mattype',1)		
+
+		if self.isefficientlayer==1:	
+			WriteData(fid,prefix,'object',self,'fieldname','spcepl_head','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)	
+			WriteData(fid,prefix,'object',self,'fieldname','mask_eplactive_node','format','DoubleMat','mattype',1)
+			WriteData(fid,prefix,'object',self,'fieldname','epl_compressibility','format','Double')			
+			WriteData(fid,prefix,'object',self,'fieldname','epl_porosity','format','Double')			
+			WriteData(fid,prefix,'object',self,'fieldname','epl_max_thickness','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','epl_initial_thickness','format','Double')			
+			WriteData(fid,prefix,'object',self,'fieldname','epl_colapse_thickness','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','epl_thick_comp','format','Integer')			
+			WriteData(fid,prefix,'object',self,'fieldname','epl_conductivity','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','eplflip_lock','format','Integer')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/hydrologyshreve.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/hydrologyshreve.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/hydrologyshreve.js	(revision 21239)
@@ -0,0 +1,55 @@
+//HYDROLOGYSHREVE class definition
+//
+//   Usage:
+//      hydrologyshreve=new hydrologyshreve();
+
+function hydrologyshreve (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//Type of stabilization to use 0:nothing 1:artificial_diffusivity
+		this.stabilization=1;
+
+	}// }}}
+		this.disp= function(){// {{{
+
+		console.log(sprintf('   hydrologyshreve solution parameters:'));
+		fielddisplay(this,'spcwatercolumn','water thickness constraints (NaN means no constraint) [m]');
+		fielddisplay(this,'stabilization','artificial diffusivity (default is 1). can be more than 1 to increase diffusivity.');
+
+	}// }}}
+    this.extrude = function(md) {//{{{
+        return this;
+    };//}}}
+		this.classname= function(){// {{{
+			return "hydrologyshreve";
+
+		}// }}}
+	this.type= function(){// {{{
+
+		return "hydrologyshreve";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			//Early return
+			if(!ArrayAnyEqual(ArrayIsMember('HydrologyShreveAnalysis',analyses),1)) return;
+
+			checkfield(md,'fieldname','hydrology.spcwatercolumn','Inf',1,'timeseries',1);
+			checkfield(md,'fieldname','hydrology.stabilization','>=',0);
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'name','md.hydrology.model','data',2,'format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',this,'fieldname','stabilization','format','Double');
+		}//}}}
+		this.fix=function() { //{{{
+			this.spcwatercolumn=NullFix(this.spcwatercolumn,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.spcwatercolumn = NaN;
+	this.stabilization  = 0;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/hydrologyshreve.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/hydrologyshreve.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/hydrologyshreve.m	(revision 21239)
@@ -0,0 +1,58 @@
+%HYDROLOGYSHREVE class definition
+%
+%   Usage:
+%      hydrologyshreve=hydrologyshreve();
+
+classdef hydrologyshreve
+	properties (SetAccess=public) 
+		spcwatercolumn = NaN;
+		stabilization  = 0;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function self = hydrologyshreve(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(self,varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Type of stabilization to use 0:nothing 1:artificial_diffusivity
+			self.stabilization=1;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('HydrologyShreveAnalysis',analyses)
+				return;
+			end
+
+			md = checkfield(md,'fieldname','hydrology.spcwatercolumn','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','hydrology.stabilization','>=',0);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   hydrologyshreve solution parameters:'));
+			fielddisplay(self,'spcwatercolumn','water thickness constraints (NaN means no constraint) [m]');
+			fielddisplay(self,'stabilization','artificial diffusivity (default is 1). can be more than 1 to increase diffusivity.');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.hydrology.model','data',2,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Double');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.hydrology.spcwatercolumn'],self.spcwatercolumn);
+			writejsdouble(fid,[modelname '.hydrology.stabilization'],self.stabilization);
+
+		end % }}}
+	end
+end
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/hydrologyshreve.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/hydrologyshreve.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/hydrologyshreve.py	(revision 21239)
@@ -0,0 +1,53 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+class hydrologyshreve(object):
+	"""
+	HYDROLOGYSHREVE class definition
+
+	   Usage:
+	      hydrologyshreve=hydrologyshreve();
+	"""
+
+	def __init__(self): # {{{
+		self.spcwatercolumn = float('NaN')
+		self.stabilization  = 0
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		
+		string='   hydrologyshreve solution parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'spcwatercolumn','water thickness constraints (NaN means no constraint) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'stabilization','artificial diffusivity (default is 1). can be more than 1 to increase diffusivity.'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#Type of stabilization to use 0:nothing 1:artificial_diffusivity
+		self.stabilization=1
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		
+		#Early return
+		if 'HydrologyShreveAnalysis' not in analyses:
+			return md
+
+		md = checkfield(md,'fieldname','hydrology.spcwatercolumn','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','hydrology.stabilization','>=',0)
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'name','md.hydrology.model','data',2,'format','Integer');
+		WriteData(fid,prefix,'object',self,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Double')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/hydrologysommers.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/hydrologysommers.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/hydrologysommers.m	(revision 21239)
@@ -0,0 +1,79 @@
+%HYDROLOGYSOMMERS class definition
+%
+%   Usage:
+%      hydrologysommers=hydrologysommers();
+
+classdef hydrologysommers
+	properties (SetAccess=public) 
+		head            = NaN;
+		gap_height      = NaN;
+		bump_spacing    = NaN;
+		bump_height     = NaN;
+		englacial_input = NaN;
+		moulin_input    = NaN;
+		reynolds        = NaN;
+		spchead         = NaN;
+		neumannflux     = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function self = hydrologysommers(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(self,varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('HydrologySommersAnalysis',analyses)
+				return;
+			end
+
+			md = checkfield(md,'fieldname','hydrology.head','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.gap_height','>=',0,'size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.bump_spacing','>',0,'size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.bump_height','>=',0,'size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.englacial_input','>=',0,'NaN',1,'Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','hydrology.moulin_input','>=',0,'NaN',1,'Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','hydrology.reynolds','>',0,'size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.neumannflux','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.spchead','size',[md.mesh.numberofvertices 1]);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   hydrologysommers solution parameters:'));
+			fielddisplay(self,'head','subglacial hydrology water head (m)');
+			fielddisplay(self,'gap_height','height of gap separating ice to bed (m)');
+			fielddisplay(self,'bump_spacing','characteristic bedrock bump spacing (m)');
+			fielddisplay(self,'bump_height','characteristic bedrock bump height (m)');
+			fielddisplay(self,'englacial_input','liquid water input from englacial to subglacial system (m/yr)');
+			fielddisplay(self,'moulin_input','liquid water input from moulins (at the vertices) to subglacial system (m^3/s)');
+			fielddisplay(self,'reynolds','Reynolds'' number');
+			fielddisplay(self,'neumannflux','water flux applied along the model boundary (m^2/s)');
+			fielddisplay(self,'spchead','water head constraints (NaN means no constraint) (m)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.hydrology.model','data',3,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','head','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','gap_height','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','bump_spacing','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','bump_height','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','englacial_input','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','moulin_input','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','reynolds','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','neumannflux','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','spchead','format','DoubleMat','mattype',1);
+		end % }}}
+	end
+end
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/independent.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/independent.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/independent.m	(revision 21239)
@@ -0,0 +1,74 @@
+%INDEPENDENT class definition
+%
+%   Usage:
+%      independent=independent();
+
+classdef independent
+	properties (SetAccess=public) 
+		name                 = '';
+		type                 = '';
+		fos_forward_index    = NaN;
+		fov_forward_indices  = [];
+		nods                 = 0;
+	end
+	methods
+		function self = independent(varargin) % {{{
+
+			%use provided options to change fields
+			options=pairoptions(varargin{:});
+
+			%OK get other fields
+			self=AssignObjectFields(pairoptions(varargin{:}),self);
+
+		end
+		%}}}
+		function self = setdefaultparameters(self) % {{{
+			%do nothing
+
+		end % }}}
+		function md = checkconsistency(self,md,i,solution,analyses,driver) % {{{
+			if ~isnan(self.fos_forward_index),
+				if ~strcmpi(driver,'fos_forward'),
+					error('cannot declare an independent with a fos_forward_index when the driver is not fos_forward!');
+				end
+				if self.nods==0,
+					error('independent checkconsistency error: nods should be set to the size of the independent variable');
+				end
+			end
+
+			if ~isempty(self.fov_forward_indices),
+				if ~strcmpi(driver,'fov_forward'),
+					error('cannot declare an independent with fov_forward_indices when the driver is not fov_forward!');
+				end
+				if self.nods==0,
+					error('independent checkconsistency error: nods should be set to the size of the independent variable');
+				end
+				md = checkfield(md,'fieldname',['autodiff.independents{' num2str(i) '}.fov_forward_indices'],'>=',1,'<=',self.nods,'size',[NaN 1]);
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   independent variable:'));
+
+			fielddisplay(self,'name','variable name (must match corresponding String)');
+			fielddisplay(self,'type','type of variable (''vertex'' or ''scalar'')');
+			fielddisplay(self,'nods','size of dependent variables');
+			if ~isnan(self.fos_forward_index),
+				fielddisplay(self,'fos_forward_index','index for fos_foward driver of ADOLC');
+			end
+			if ~isnan(self.fov_forward_indices),
+				fielddisplay(self,'fov_forward_indices','indices for fov_foward driver of ADOLC');
+			end
+		end % }}}
+		function scalartype=typetoscalar(self) % {{{
+			if strcmpi(self.type,'scalar'),
+				scalartype=0;
+			elseif strcmpi(self.type,'vertex'),
+				scalartype=1;
+			elseif strcmpi(self.type,'matrix'),
+				scalartype=1;
+			else error([self.type ' not supported yet!']);
+			end
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/independent.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/independent.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/independent.py	(revision 21239)
@@ -0,0 +1,70 @@
+import numpy
+from pairoptions import pairoptions
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from MatlabFuncs import *
+
+class independent(object):
+	"""
+	INDEPENDENT class definition
+
+	   Usage:
+	      independent=independent();
+	"""
+
+	def __init__(self,*args):    # {{{
+		self.name                 = ''
+		self.type                 = ''
+		self.fos_forward_index    = float('NaN')
+		self.fov_forward_indices  = numpy.array([])
+		self.nods                 = 0
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#use provided options to change fields
+		options=pairoptions(*args)
+
+		#OK get other fields
+		self=options.AssignObjectFields(self)
+	# }}}
+	def __repr__(self):    # {{{
+		s ="   independent variable:\n"
+
+		s+="%s\n" % fielddisplay(self,'name',"variable name (must match corresponding String)")
+		s+="%s\n" % fielddisplay(self,'type',"type of variable ('vertex' or 'scalar')")
+		if not numpy.isnan(self.fos_forward_index):
+			s+="%s\n" % fielddisplay(self,'fos_forward_index',"index for fos_foward driver of ADOLC")
+		if numpy.any(numpy.logical_not(numpy.isnan(self.fov_forward_indices))):
+			s+="%s\n" % fielddisplay(self,'fov_forward_indices',"indices for fov_foward driver of ADOLC")
+
+		return s
+	# }}}
+	def setdefaultparameters(self):    # {{{
+		#do nothing
+		return self
+	# }}}
+	def checkconsistency(self,md,i,solution,analyses,driver):    # {{{
+		if not numpy.isnan(self.fos_forward_index):
+			if not strcmpi(driver,'fos_forward'):
+				raise TypeError("cannot declare an independent with a fos_forward_index when the driver is not fos_forward!")
+			if self.nods==0:
+				raise TypeError("independent checkconsistency error: nods should be set to the size of the independent variable")
+
+		if len(self.fov_forward_indices) > 0:
+			if not strcmpi(driver,'fov_forward'):
+				raise TypeError("cannot declare an independent with fov_forward_indices when the driver is not fov_forward!")
+			if self.nods==0:
+				raise TypeError("independent checkconsistency error: nods should be set to the size of the independent variable")
+			md = checkfield(md,'fieldname',"autodiff.independents[%d].fov_forward_indices" % i,'>=',1,'<=',self.nods)
+
+		return md
+	# }}}
+	def typetoscalar(self):    # {{{
+		if   strcmpi(self.type,'scalar'):
+			scalar=0
+		elif strcmpi(self.type,'vertex'):
+			scalar=1
+
+		return scalar
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/initialization.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/initialization.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/initialization.js	(revision 21239)
@@ -0,0 +1,152 @@
+//INITIALIZATION class definition
+//
+//   Usage:
+//      initialization=new initialization();
+
+function initialization (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   initial field values:'));
+
+		fielddisplay(this,'vx','x component of velocity [m/yr]');
+		fielddisplay(this,'vy','y component of velocity [m/yr]');
+		fielddisplay(this,'vz','z component of velocity [m/yr]');
+		fielddisplay(this,'vel','velocity norm [m/yr]');
+		fielddisplay(this,'pressure','pressure field [Pa]');
+		fielddisplay(this,'temperature','temperature [K]');
+		fielddisplay(this,'waterfraction','fraction of water in the ice');
+		fielddisplay(this,'sediment_head','sediment water head of subglacial system [m]');
+		fielddisplay(this,'epl_head','epl water head of subglacial system [m]');
+		fielddisplay(this,'epl_thickness','epl layer thickness [m]');
+		fielddisplay(this,'watercolumn','thickness of subglacial water [m]');
+
+	}// }}}
+    this.extrude = function(md) {//{{{
+        this.vx=project3d(md,'vector',this.vx,'type','node');
+        this.vy=project3d(md,'vector',this.vy,'type','node');
+        this.vz=project3d(md,'vector',this.vz,'type','node');
+        this.vel=project3d(md,'vector',this.vel,'type','node');
+        this.temperature=project3d(md,'vector',this.temperature,'type','node');
+        this.waterfraction=project3d(md,'vector',this.waterfraction,'type','node');
+        this.watercolumn=project3d(md,'vector',this.watercolumn,'type','node','layer',1);
+        this.sediment_head=project3d(md,'vector',this.sediment_head,'type','node','layer',1);
+        this.epl_head=project3d(md,'vector',this.epl_head,'type','node','layer',1);
+        this.epl_thickness=project3d(md,'vector',this.epl_thickness,'type','node','layer',1);
+
+        //Lithostatic pressure by default
+        this.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.z);
+        return this;
+    }//}}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+			if(ArrayAnyEqual(ArrayIsMember('StressbalanceAnalysis',analyses),1)){
+				if (!(isNaN(md.initialization.vx) | isNaN(md.initialization.vy))){
+					checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+					checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				}
+			}
+			if(ArrayAnyEqual(ArrayIsMember('MasstransportAnalysis',analyses),1)){
+				checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			}
+			if(ArrayAnyEqual(ArrayIsMember('BalancethicknessSolution',analyses),1) & (solution=='BalancethicknessSolution')){
+				checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				//Triangle with zero velocity
+				for(var i=0;i<md.mesh.numberofelements;i++){
+					var sum=0;
+					for(var j=0;j<md.mesh.elements[0].length;j++){
+						if  ((md.initialization.vx[md.mesh.elements[i][j]-1]==0) & (md.initialization.vy[md.mesh.elements[i][j]-1]==0)) sum+=1;
+					}
+					if (sum==md.mesh.elements[0].length){
+						md.checkmessage('at least one triangle has all its vertices with a zero velocity');
+					}
+				}
+			}
+			if(ArrayAnyEqual(ArrayIsMember('ThermalAnalysis',analyses),1)){
+				checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				if (md.mesh.dimension() == 3){
+					checkfield(md,'fieldname','initialization.vz','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+				}
+				checkfield(md,'fieldname','initialization.pressure','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+				checkfield(md,'fieldname','initialization.temperature','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+			}
+			if( ArrayAnyEqual(ArrayIsMember('EnthalpyAnalysis',analyses),1) & md.thermal.isenthalpy){
+				checkfield(md,'fieldname','initialization.waterfraction','>=',0,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','initialization.watercolumn'  ,'>=',0,'size',[md.mesh.numberofvertices, 1]);
+			}
+			if(ArrayAnyEqual(ArrayIsMember('HydrologyShreveAnalysis',analyses),1)){
+				if (md.hydrology.type() == 'hydrologyshreve'){
+					checkfield(md,'fieldname','initialization.watercolumn','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+				}
+			}
+			if(ArrayAnyEqual(ArrayIsMember('HydrologyDCInefficientAnalysis',analyses),1)){
+				if (md.hydrology.type() == 'hydrologydc'){
+					checkfield(md,'fieldname','initialization.sediment_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				}
+			}
+			if(ArrayAnyEqual(ArrayIsMember('HydrologyDCEfficientAnalysis',analyses),1)){
+				if (md.hydrology.type() == 'hydrologydc'){
+					if (md.hydrology.isefficientlayer==1){
+						checkfield(md,'fieldname','initialization.epl_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+						checkfield(md,'fieldname','initialization.epl_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+					}
+				}
+			}
+		} //}}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',this,'fieldname','vx','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',this,'fieldname','vy','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',this,'fieldname','vz','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',this,'fieldname','pressure','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','temperature','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','waterfraction','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','sediment_head','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','epl_head','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','epl_thickness','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','watercolumn','format','DoubleMat','mattype',1);
+
+			if (md.thermal.isenthalpy){
+				tpmp=NewArrayFill(md.mesh.numberofvertices,0);
+				for (var i=0;i<md.mesh.numberofvertices;i++) tpmp[i]= md.materials.meltingpoint - md.materials.beta*md.initialization.pressure[i];
+				enthalpy=NewArrayFill(md.mesh.numberofvertices,0); 
+				for (var i=0;i<md.mesh.numberofvertices;i++)enthalpy[i] = md.materials.heatcapacity*(md.initialization.temperature[i]-md.constants.referencetemperature);
+				
+				for (var i=0;i<md.mesh.numberofvertices;i++)if(md.initialization.temperature[i]>=tpmp[i]){
+					enthalpy[i] = md.materials.heatcapacity*(tpmp[i] - md.constants.referencetemperature) + md.materials.latentheat*md.initialization.waterfraction[i];
+				}
+				WriteData(fid,prefix,'data',enthalpy,'format','DoubleMat','mattype',1,'name','md.initialization.enthalpy');
+			}
+		}//}}}
+		this.fix=function(md) { //{{{
+			this.vx=FloatFix(this.vx,md.mesh.numberofvertices); 
+			this.vy=FloatFix(this.vx,md.mesh.numberofvertices); 
+			this.vy=FloatFix(this.vx,md.mesh.numberofvertices); 
+			this.waterfraction=NullFix(this.waterfraction,NaN);
+			this.sediment_head=NullFix(this.sediment_head,NaN);
+			this.epl_head=NullFix(this.epl_head,NaN);
+			this.epl_thickness=NullFix(this.epl_thickness,NaN);
+			this.watercolumn=NullFix(this.watercolumn,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.vx            = NaN;
+	this.vy            = NaN;
+	this.vz            = NaN;
+	this.vel           = NaN;
+	this.pressure      = NaN;
+	this.temperature   = NaN;
+	this.waterfraction = NaN;
+	this.sediment_head = NaN;
+	this.epl_head      = NaN;
+	this.epl_thickness = NaN;
+	this.watercolumn   = NaN;
+	this.setdefaultparameters();
+
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/initialization.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/initialization.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/initialization.m	(revision 21239)
@@ -0,0 +1,153 @@
+%INITIALIZATION class definition
+%
+%   Usage:
+%      initialization=initialization();
+
+classdef initialization
+	properties (SetAccess=public) 
+		vx            = NaN;
+		vy            = NaN;
+		vz            = NaN;
+		vel           = NaN;
+		pressure      = NaN;
+		temperature   = NaN;
+		waterfraction = NaN;
+		sediment_head = NaN;
+		epl_head      = NaN;
+		epl_thickness = NaN;
+		watercolumn   = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.vx=project3d(md,'vector',self.vx,'type','node');
+			self.vy=project3d(md,'vector',self.vy,'type','node');
+			self.vz=project3d(md,'vector',self.vz,'type','node');
+			self.vel=project3d(md,'vector',self.vel,'type','node');
+			self.temperature=project3d(md,'vector',self.temperature,'type','node');
+			self.waterfraction=project3d(md,'vector',self.waterfraction,'type','node');
+			self.watercolumn=project3d(md,'vector',self.watercolumn,'type','node','layer',1);
+			self.sediment_head=project3d(md,'vector',self.sediment_head,'type','node','layer',1);
+			self.epl_head=project3d(md,'vector',self.epl_head,'type','node','layer',1);
+			self.epl_thickness=project3d(md,'vector',self.epl_thickness,'type','node','layer',1);
+
+			%Lithostatic pressure by default
+			self.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.z);
+		end % }}}
+		function self = initialization(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			if ismember('StressbalanceAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.isstressbalance == 0),
+				if ~(isnan(md.initialization.vx) | isnan(md.initialization.vy)),
+					md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+					md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				end
+			end
+			if ismember('MasstransportAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.ismasstransport == 0),
+				md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			end
+			if ismember('BalancethicknessAnalysis',analyses) & strcmp(solution,'BalancethicknessSolution'),
+				md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				%Triangle with zero velocity
+				if any(sum(abs(md.initialization.vx(md.mesh.elements)),2)==0 & sum(abs(md.initialization.vy(md.mesh.elements)),2)==0)
+					md = checkmessage(md,'at least one triangle has all its vertices with a zero velocity');
+				end
+			end
+			if ismember('ThermalAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.isthermal == 0),
+				md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				if dimension(md.mesh)==3
+					md = checkfield(md,'fieldname','initialization.vz','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				end
+				md = checkfield(md,'fieldname','initialization.pressure','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','initialization.temperature','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			end
+			if (ismember('EnthalpyAnalysis',analyses) & md.thermal.isenthalpy)
+				md = checkfield(md,'fieldname','initialization.waterfraction','>=',0,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','initialization.watercolumn'  ,'>=',0,'size',[md.mesh.numberofvertices 1]);
+			end
+			if ismember('HydrologyShreveAnalysis',analyses),
+				if isa(md.hydrology,'hydrologyshreve'),
+					md = checkfield(md,'fieldname','initialization.watercolumn','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				end
+			end
+			if ismember('HydrologyDCInefficientAnalysis',analyses),
+				if isa(md.hydrology,'hydrologydc'),
+					md = checkfield(md,'fieldname','initialization.sediment_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				end
+			end
+			if ismember('HydrologyDCEfficientAnalysis',analyses),
+				if isa(md.hydrology,'hydrologydc'),
+					if md.hydrology.isefficientlayer==1,
+						md = checkfield(md,'fieldname','initialization.epl_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+						md = checkfield(md,'fieldname','initialization.epl_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+					end
+				end
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   initial field values:'));
+
+			fielddisplay(self,'vx','x component of velocity [m/yr]');
+			fielddisplay(self,'vy','y component of velocity [m/yr]');
+			fielddisplay(self,'vz','z component of velocity [m/yr]');
+			fielddisplay(self,'vel','velocity norm [m/yr]');
+			fielddisplay(self,'pressure','pressure field [Pa]');
+			fielddisplay(self,'temperature','temperature [K]');
+			fielddisplay(self,'waterfraction','fraction of water in the ice');
+			fielddisplay(self,'sediment_head','sediment water head of subglacial system [m]');
+			fielddisplay(self,'epl_head','epl water head of subglacial system [m]');
+			fielddisplay(self,'epl_thickness','epl layer thickness [m]');
+			fielddisplay(self,'watercolumn','thickness of subglacial water [m]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'fieldname','vx','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'fieldname','vy','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'fieldname','vz','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'fieldname','pressure','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','temperature','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','waterfraction','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','sediment_head','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','epl_head','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','epl_thickness','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','watercolumn','format','DoubleMat','mattype',1);
+
+			if md.thermal.isenthalpy,
+				tpmp = md.materials.meltingpoint - md.materials.beta*md.initialization.pressure;
+				pos  = find(md.initialization.temperature>=tpmp);
+				enthalpy      = md.materials.heatcapacity*(md.initialization.temperature-md.constants.referencetemperature);
+				enthalpy(pos) = md.materials.heatcapacity*(tpmp(pos) - md.constants.referencetemperature) + md.materials.latentheat*md.initialization.waterfraction(pos);
+				WriteData(fid,prefix,'data',enthalpy,'format','DoubleMat','mattype',1,'name','md.initialization.enthalpy');
+			end
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.initialization.vx'],self.vx);
+			writejs1Darray(fid,[modelname '.initialization.vy'],self.vy);
+			writejs1Darray(fid,[modelname '.initialization.vz'],self.vz);
+			writejs1Darray(fid,[modelname '.initialization.vel'],self.vel);
+			writejs1Darray(fid,[modelname '.initialization.pressure'],self.pressure);
+			writejs1Darray(fid,[modelname '.initialization.temperature'],self.temperature);
+			writejs1Darray(fid,[modelname '.initialization.waterfraction'],self.waterfraction);
+			writejs1Darray(fid,[modelname '.initialization.sediment_head'],self.sediment_head);
+			writejs1Darray(fid,[modelname '.initialization.epl_head'],self.epl_head);
+			writejs1Darray(fid,[modelname '.initialization.epl_thickness'],self.epl_thickness);
+			writejs1Darray(fid,[modelname '.initialization.watercolumn'],self.watercolumn);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/initialization.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/initialization.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/initialization.py	(revision 21239)
@@ -0,0 +1,131 @@
+import numpy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class initialization(object):
+	"""
+	INITIALIZATION class definition
+	
+	Usage:
+	initialization=initialization();
+	"""
+
+	def __init__(self): # {{{
+					
+		self.vx            = float('NaN')
+		self.vy            = float('NaN')
+		self.vz            = float('NaN')
+		self.vel           = float('NaN')
+		self.pressure      = float('NaN')
+		self.temperature   = float('NaN')
+		self.waterfraction = float('NaN')
+		self.watercolumn   = float('NaN')
+		self.sediment_head = float('NaN')
+		self.epl_head      = float('NaN')
+		self.epl_thickness = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   initial field values:'
+		string="%s\n%s"%(string,fielddisplay(self,'vx','x component of velocity [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vy','y component of velocity [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vz','z component of velocity [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vel','velocity norm [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'pressure','pressure [Pa]'))
+		string="%s\n%s"%(string,fielddisplay(self,'temperature','temperature [K]'))
+		string="%s\n%s"%(string,fielddisplay(self,'waterfraction','fraction of water in the ice'))
+		string="%s\n%s"%(string,fielddisplay(self,'watercolumn','thickness of subglacial water [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'sediment_head','sediment water head of subglacial system [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'epl_head','epl water head of subglacial system [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'epl_thickness','thickness of the epl [m]'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.vx=project3d(md,'vector',self.vx,'type','node')
+		self.vy=project3d(md,'vector',self.vy,'type','node')
+		self.vz=project3d(md,'vector',self.vz,'type','node')
+		self.vel=project3d(md,'vector',self.vel,'type','node')
+		self.temperature=project3d(md,'vector',self.temperature,'type','node')
+		self.waterfraction=project3d(md,'vector',self.waterfraction,'type','node')
+		self.watercolumn=project3d(md,'vector',self.watercolumn,'type','node')
+		self.sediment_head=project3d(md,'vector',self.sediment_head,'type','node','layer',1)
+		self.epl_head=project3d(md,'vector',self.epl_head,'type','node','layer',1)
+		self.epl_thickness=project3d(md,'vector',self.epl_thickness,'type','node','layer',1)
+
+		#Lithostatic pressure by default
+		self.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface[:,0]-md.mesh.z)
+		#self.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.z.reshape(-1,1))
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		if 'StressbalanceAnalysis' in analyses:
+			if not numpy.any(numpy.logical_or(numpy.isnan(md.initialization.vx),numpy.isnan(md.initialization.vy))):
+				md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+				md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		if 'MasstransportAnalysis' in analyses:
+			md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		if 'BalancethicknessAnalysis' in analyses:
+			md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			#Triangle with zero velocity
+			if numpy.any(numpy.logical_and(numpy.sum(numpy.abs(md.initialization.vx[md.mesh.elements-1]),axis=1)==0,\
+			                               numpy.sum(numpy.abs(md.initialization.vy[md.mesh.elements-1]),axis=1)==0)):
+				md.checkmessage("at least one triangle has all its vertices with a zero velocity")
+		if 'ThermalAnalysis' in analyses:
+			md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.temperature','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			if md.mesh.dimension()==3:
+				md = checkfield(md,'fieldname','initialization.vz','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.pressure','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			if ('EnthalpyAnalysis' in analyses and md.thermal.isenthalpy):
+				md = checkfield(md,'fieldname','initialization.waterfraction','>=',0,'size',[md.mesh.numberofvertices])
+				md = checkfield(md,'fieldname','initialization.watercolumn'  ,'>=',0,'size',[md.mesh.numberofvertices])
+		if 'HydrologyShreveAnalysis' in analyses:
+			if hasattr(md.hydrology,'hydrologyshreve'):
+				md = checkfield(md,'fieldname','initialization.watercolumn','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		if 'HydrologyDCInefficientAnalysis' in analyses:
+			if hasattr(md.hydrology,'hydrologydc'):
+				md = checkfield(md,'fieldname','initialization.sediment_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+		if 'HydrologyDCEfficientAnalysis' in analyses:
+			if hasattr(md.hydrology,'hydrologydc'):
+				if md.hydrology.isefficientlayer==1:
+					md = checkfield(md,'fieldname','initialization.epl_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+					md = checkfield(md,'fieldname','initialization.epl_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		yts=md.constants.yts
+
+		WriteData(fid,prefix,'object',self,'fieldname','vx','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,prefix,'object',self,'fieldname','vy','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,prefix,'object',self,'fieldname','vz','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,prefix,'object',self,'fieldname','pressure','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','temperature','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','waterfraction','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','sediment_head','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','epl_head','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','epl_thickness','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','watercolumn','format','DoubleMat','mattype',1)
+		
+		if md.thermal.isenthalpy:
+			tpmp = md.materials.meltingpoint - md.materials.beta*md.initialization.pressure;
+			pos  = numpy.nonzero(md.initialization.temperature > tpmp)[0]
+			enthalpy      = md.materials.heatcapacity*(md.initialization.temperature-md.constants.referencetemperature);
+			enthalpy[pos] = md.materials.heatcapacity*tpmp[pos].reshape(-1,1) - md.constants.referencetemperature + md.materials.latentheat*md.initialization.waterfraction[pos].reshape(-1,1)
+			WriteData(fid,prefix,'data',enthalpy,'format','DoubleMat','mattype',1,'name','md.initialization.enthalpy');
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/inversion.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/inversion.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/inversion.js	(revision 21239)
@@ -0,0 +1,211 @@
+//INVERSION class definition
+//
+//   Usage:
+//      inversion=new inversion();
+
+function inversion (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//default is incomplete adjoint for now
+		this.incomplete_adjoint=1;
+
+		//parameter to be inferred by control methods (only
+		//drag and B are supported yet)
+		this.control_parameters=['FrictionCoefficient'];
+
+		//number of steps in the control methods
+		this.nsteps=20;
+
+		//maximum number of iteration in the optimization algorithm for
+		//each step
+		this.maxiter_per_step=20*NewArrayFill(this.nsteps,1);
+
+		//the inversed parameter is updated as follows:
+		//new_par=old_par + gradient_scaling(n)*C*gradient with C in [0 1];
+		//usually the gradient_scaling must be of the order of magnitude of the 
+		//inversed parameter (10^8 for B, 50 for drag) and can be decreased
+		//after the first iterations
+		this.gradient_scaling=NewArrayFill(this.nsteps,50);
+
+		//several responses can be used:
+		this.cost_functions=101;
+
+		//step_threshold is used to speed up control method. When
+		//misfit(1)/misfit(0) < this.step_threshold, we go directly to
+		//the next step
+		this.step_threshold=NewArrayFill(this.nsteps,.7); //30 per cent decrement.
+
+		//cost_function_threshold is a criteria to stop the control methods.
+		//if J[n]-J[n-1]/J[n] < criteria, the control run stops
+		//NaN if not applied
+		this.cost_function_threshold=NaN; //not activated
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   inversion parameters:'));
+		fielddisplay(this,'iscontrol','is inversion activated?');
+		fielddisplay(this,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
+		fielddisplay(this,'control_parameters',"ex: {'FrictionCoefficient'}, or {'MaterialsRheologyBbar'}");
+		fielddisplay(this,'nsteps','number of optimization searches');
+		fielddisplay(this,'cost_functions','indicate the type of response for each optimization step');
+		fielddisplay(this,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
+		fielddisplay(this,'cost_function_threshold','misfit convergence criterion. Default is 1%, NaN if not applied');
+		fielddisplay(this,'maxiter_per_step','maximum iterations during each optimization step');
+		fielddisplay(this,'gradient_scaling','scaling factor on gradient direction during optimization, for each optimization step');
+		fielddisplay(this,'step_threshold','decrease threshold for misfit, default is 30%');
+		fielddisplay(this,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
+		fielddisplay(this,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
+		fielddisplay(this,'vx_obs','observed velocity x component [m/yr]');
+		fielddisplay(this,'vy_obs','observed velocity y component [m/yr]');
+		fielddisplay(this,'vel_obs','observed velocity magnitude [m/yr]');
+		fielddisplay(this,'thickness_obs','observed thickness [m]');
+		fielddisplay(this,'surface_obs','observed surface elevation [m]');
+		console.log('Available cost functions:');
+		console.log('   101: SurfaceAbsVelMisfit');
+		console.log('   102: SurfaceRelVelMisfit');
+		console.log('   103: SurfaceLogVelMisfit');
+		console.log('   104: SurfaceLogVxVyMisfit');
+		console.log('   105: SurfaceAverageVelMisfit');
+		console.log('   201: ThicknessAbsMisfit');
+		console.log('   501: DragCoefficientAbsGradient');
+		console.log('   502: RheologyBbarAbsGradient');
+		console.log('   503: ThicknessAbsGradient');
+
+	}// }}}
+    this.extrude = function(md) {//{{{
+        this.vx_obs=project3d(md, 'vector', this.vx_obs, 'type', 'node');
+        this.vy_obs=project3d(md,'vector',this.vy_obs,'type','node');
+        this.vel_obs=project3d(md,'vector',this.vel_obs,'type','node');
+        this.thickness_obs=project3d(md,'vector',this.thickness_obs,'type','node');
+
+        if (numel(this.cost_functions_coefficients)>1) {
+            this.cost_functions_coefficients=project3d(md,'vector',this.cost_functions_coefficients,'type','node');
+        }			
+        if (numel(this.min_parameters)>1) {
+            this.min_parameters=project3d(md,'vector',this.min_parameters,'type','node');
+        }
+        if (numel(this.max_parameters)>1) {
+            this.max_parameters=project3d(md,'vector',this.max_parameters,'type','node');
+        }
+        return this;
+    }//}}}
+	this.classname= function(){// {{{
+		return "inversion";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			//Early return
+			if (!this.iscontrol) return;
+
+			num_controls=md.inversion.control_parameters.length;
+			num_costfunc=md.inversion.control_parameters[0].length;
+
+			checkfield(md,'fieldname','inversion.iscontrol','values',[0, 1]);
+			checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 ,1]);
+			checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols());
+			checkfield(md,'fieldname','inversion.nsteps','numel',1,'>=',0);
+			checkfield(md,'fieldname','inversion.maxiter_per_step','size',[md.inversion.nsteps, 1],'>=',0);
+			checkfield(md,'fieldname','inversion.step_threshold','size',[md.inversion.nsteps, 1]);
+			checkfield(md,'fieldname','inversion.cost_functions','size',[1, num_costfunc],'values',supportedcostfunctions());
+			checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices, num_costfunc],'>=',0);
+			checkfield(md,'fieldname','inversion.gradient_scaling','size',[md.inversion.nsteps, num_controls]);
+			checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices , num_controls]);
+			checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices ,num_controls]);
+
+			//Only SSA, HO and FS are supported right now
+			if (solution=='StressbalanceSolution'){
+				if (!(md.flowequation.isSSA | md.flowequation.isHO | md.flowequation.isFS | md.flowequation.isL1L2)){
+					md.checkmessage('inversion can only be performed for SSA, HO or FS ice flow models');
+				}
+			}
+
+			if (solution=='BalancethicknessSolution'){
+				checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1);
+			}
+			else if (solution=='BalancethicknessSoftSolution'){
+				checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1);
+			}
+			else{
+				checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1);
+				checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1);
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.inversion.type','data',0,'format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','iscontrol','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','incomplete_adjoint','format','Boolean');
+			if (!this.iscontrol) return;
+			WriteData(fid,prefix,'object',this,'fieldname','nsteps','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','maxiter_per_step','format','IntMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','gradient_scaling','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'fieldname','cost_function_threshold','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','min_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'fieldname','max_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'fieldname','step_threshold','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',this,'fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',this,'fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			if(this.thickness_obs.length==md.mesh.numberofelements) mattype=2;
+			else mattype=1;
+			WriteData(fid,prefix,'object',this,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
+			WriteData(fid,prefix,'object',this,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
+
+			//process control parameters
+			num_control_parameters=this.control_parameters.length;
+			WriteData(fid,prefix,'object',this,'fieldname','control_parameters','format','StringArray');
+			WriteData(fid,prefix,'data',num_control_parameters,'name','md.inversion.num_control_parameters','format','Integer');
+
+			//process cost functions
+			num_cost_functions=this.cost_functions[0].length;
+			data=marshallcostfunctions(this.cost_functions);
+			WriteData(fid,prefix,'data',data,'name','md.inversion.cost_functions','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'data',num_cost_functions,'name','md.inversion.num_cost_functions','format','Integer');
+		}//}}}
+		this.fix=function() { //{{{
+			this.control_parameters=NullFix(this.control_parameters,NaN);
+			this.maxiter_per_step=NullFix(this.maxiter_per_step,NaN);
+			this.cost_functions=NullFix(this.cost_functions,NaN);
+			this.cost_functions_coefficients=NullFix(this.cost_functions_coefficients,NaN);
+			this.cost_function_threshold=NullFix(this.cost_function_threshold,NaN);
+			this.gradient_scaling=NullFix(this.gradient_scaling,NaN);
+			this.min_parameters=NullFix(this.min_parameters,NaN);
+			this.max_parameters=NullFix(this.max_parameters,NaN);
+			this.step_threshold=NullFix(this.step_threshold,NaN);
+			this.vx_obs=NullFix(this.vx_obs,NaN);
+			this.vy_obs=NullFix(this.vy_obs,NaN);
+			this.vz_obs=NullFix(this.vz_obs,NaN);
+			this.vel_obs=NullFix(this.vel_obs,NaN);
+			this.thickness_obs=NullFix(this.thickness_obs,NaN);
+			this.surface_obs=NullFix(this.surface_obs,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.iscontrol                   = 0;
+	this.incomplete_adjoint          = 0;
+	this.control_parameters          = NaN;
+	this.nsteps                      = 0;
+	this.maxiter_per_step            = NaN;
+	this.cost_functions              = NaN;
+	this.cost_functions_coefficients = NaN;
+	this.gradient_scaling            = NaN;
+	this.cost_function_threshold     = 0;
+	this.min_parameters              = NaN;
+	this.max_parameters              = NaN;
+	this.step_threshold              = NaN;
+	this.vx_obs                      = NaN;
+	this.vy_obs                      = NaN;
+	this.vz_obs                      = NaN;
+	this.vel_obs                     = NaN;
+	this.thickness_obs               = NaN;
+	this.surface_obs                 = NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/inversion.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/inversion.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/inversion.m	(revision 21239)
@@ -0,0 +1,206 @@
+%INVERSION class definition
+%
+%   Usage:
+%      inversion=inversion();
+
+classdef inversion
+	properties (SetAccess=public) 
+		iscontrol                   = 0
+		incomplete_adjoint          = 0
+		control_parameters          = NaN
+		nsteps                      = 0
+		maxiter_per_step            = NaN
+		cost_functions              = NaN
+		cost_functions_coefficients = NaN
+		gradient_scaling            = NaN
+		cost_function_threshold     = 0
+		min_parameters              = NaN
+		max_parameters              = NaN
+		step_threshold              = NaN
+		vx_obs                      = NaN
+		vy_obs                      = NaN
+		vz_obs                      = NaN
+		vel_obs                     = NaN
+		thickness_obs               = NaN
+		surface_obs                 = NaN
+	end
+	methods
+		function self = inversion(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self =structtoobj(inversion(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node');
+			self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node');
+			self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node');
+			self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node');
+			if numel(self.cost_functions_coefficients)>1,self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node');end;
+			if numel(self.min_parameters)>1,self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node');end;
+			if numel(self.max_parameters)>1,self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node');end;
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%default is incomplete adjoint for now
+			self.incomplete_adjoint=1;
+
+			%parameter to be inferred by control methods (only
+			%drag and B are supported yet)
+			self.control_parameters={'FrictionCoefficient'};
+
+			%number of steps in the control methods
+			self.nsteps=20;
+
+			%maximum number of iteration in the optimization algorithm for
+			%each step
+			self.maxiter_per_step=20*ones(self.nsteps,1);
+
+			%the inversed parameter is updated as follows:
+			%new_par=old_par + gradient_scaling(n)*C*gradient with C in [0 1];
+			%usually the gradient_scaling must be of the order of magnitude of the 
+			%inversed parameter (10^8 for B, 50 for drag) and can be decreased
+			%after the first iterations
+			self.gradient_scaling=50*ones(self.nsteps,1);
+
+			%several responses can be used:
+			self.cost_functions=101;
+
+			%step_threshold is used to speed up control method. When
+			%misfit(1)/misfit(0) < self.step_threshold, we go directly to
+			%the next step
+			self.step_threshold=.7*ones(self.nsteps,1); %30 per cent decrement.
+
+			%cost_function_threshold is a criteria to stop the control methods.
+			%if J[n]-J[n-1]/J[n] < criteria, the control run stops
+			%NaN if not applied
+			self.cost_function_threshold=NaN; %not activated
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~self.iscontrol, return; end
+
+			num_controls=numel(md.inversion.control_parameters);
+			num_costfunc=size(md.inversion.cost_functions,2);
+
+			md = checkfield(md,'fieldname','inversion.iscontrol','values',[0 1]);
+			md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 1]);
+			md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols());
+			md = checkfield(md,'fieldname','inversion.nsteps','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.maxiter_per_step','size',[md.inversion.nsteps 1],'>=',0);
+			md = checkfield(md,'fieldname','inversion.step_threshold','size',[md.inversion.nsteps 1]);
+			md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values',supportedcostfunctions());
+			md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0);
+			md = checkfield(md,'fieldname','inversion.gradient_scaling','size',[md.inversion.nsteps num_controls]);
+			md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices num_controls]);
+			md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices num_controls]);
+
+			%Only SSA, HO and FS are supported right now
+			if strcmp(solution,'StressbalanceSolution')
+				if ~(md.flowequation.isSSA || md.flowequation.isHO || md.flowequation.isFS || md.flowequation.isL1L2),
+					md = checkmessage(md,['inversion can only be performed for SSA, HO or FS ice flow models']);
+				end
+			end
+
+			if strcmp(solution,'BalancethicknessSolution')
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			elseif strcmp(solution,'BalancethicknessSoftSolution')
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			else
+				md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   inversion parameters:'));
+			fielddisplay(self,'iscontrol','is inversion activated?');
+			fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
+			fielddisplay(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
+			fielddisplay(self,'nsteps','number of optimization searches');
+			fielddisplay(self,'cost_functions','indicate the type of response for each optimization step');
+			fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
+			fielddisplay(self,'cost_function_threshold','misfit convergence criterion. Default is 1%, NaN if not applied');
+			fielddisplay(self,'maxiter_per_step','maximum iterations during each optimization step');
+			fielddisplay(self,'gradient_scaling','scaling factor on gradient direction during optimization, for each optimization step');
+			fielddisplay(self,'step_threshold','decrease threshold for misfit, default is 30%');
+			fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'vx_obs','observed velocity x component [m/yr]');
+			fielddisplay(self,'vy_obs','observed velocity y component [m/yr]');
+			fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]');
+			fielddisplay(self,'thickness_obs','observed thickness [m]');
+			fielddisplay(self,'surface_obs','observed surface elevation [m]');
+			disp('Available cost functions:');
+			disp('   101: SurfaceAbsVelMisfit');
+			disp('   102: SurfaceRelVelMisfit');
+			disp('   103: SurfaceLogVelMisfit');
+			disp('   104: SurfaceLogVxVyMisfit');
+			disp('   105: SurfaceAverageVelMisfit');
+			disp('   201: ThicknessAbsMisfit');
+			disp('   501: DragCoefficientAbsGradient');
+			disp('   502: RheologyBbarAbsGradient');
+			disp('   503: ThicknessAbsGradient');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.inversion.type','data',0,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','iscontrol','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','incomplete_adjoint','format','Boolean');
+			if ~self.iscontrol, return; end
+			WriteData(fid,prefix,'object',self,'fieldname','nsteps','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','maxiter_per_step','format','IntMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','gradient_scaling','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'fieldname','cost_function_threshold','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','min_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'fieldname','max_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'fieldname','step_threshold','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			if(numel(self.thickness_obs)==md.mesh.numberofelements),
+				mattype=2;
+			else
+				mattype=1;
+			end
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
+
+			%process control parameters
+			WriteData(fid,prefix,'object',self,'fieldname','control_parameters','format','StringArray');
+			WriteData(fid,prefix,'data',numel(self.control_parameters),'name','md.inversion.num_control_parameters','format','Integer');
+
+			%process cost functions
+			num_cost_functions=size(self.cost_functions,2);
+			data=marshallcostfunctions(self.cost_functions);
+			WriteData(fid,prefix,'data',data,'name','md.inversion.cost_functions','format','StringArray');
+			WriteData(fid,prefix,'data',num_cost_functions,'name','md.inversion.num_cost_functions','format','Integer');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.inversion.iscontrol'],self.iscontrol);
+			writejsdouble(fid,[modelname '.inversion.incomplete_adjoint'],self.incomplete_adjoint);
+			writejscellstring(fid,[modelname '.inversion.control_parameters'],self.control_parameters);
+			writejsdouble(fid,[modelname '.inversion.nsteps'],self.nsteps);
+			writejs1Darray(fid,[modelname '.inversion.maxiter_per_step'],self.maxiter_per_step);
+			writejs2Darray(fid,[modelname '.inversion.cost_functions'],self.cost_functions);
+			writejs2Darray(fid,[modelname '.inversion.cost_functions_coefficients'],self.cost_functions_coefficients);
+			writejs1Darray(fid,[modelname '.inversion.min_parameters'],self.min_parameters);
+			writejs1Darray(fid,[modelname '.inversion.max_parameters'],self.max_parameters);
+			writejs1Darray(fid,[modelname '.inversion.vx_obs'],self.vx_obs);
+			writejs1Darray(fid,[modelname '.inversion.vy_obs'],self.vy_obs);
+			writejs1Darray(fid,[modelname '.inversion.vz_obs'],self.vz_obs);
+			writejs1Darray(fid,[modelname '.inversion.vel_obs'],self.vel_obs);
+			writejs1Darray(fid,[modelname '.inversion.thickness_obs'],self.thickness_obs);
+			writejs1Darray(fid,[modelname '.inversion.surface_obs'],self.surface_obs);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/inversion.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/inversion.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/inversion.py	(revision 21239)
@@ -0,0 +1,191 @@
+import numpy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+from supportedcontrols import supportedcontrols
+from supportedcostfunctions import supportedcostfunctions
+from marshallcostfunctions import marshallcostfunctions
+
+class inversion(object):
+	"""
+	INVERSION class definition
+
+	   Usage:
+	      inversion=inversion()
+	"""
+
+	def __init__(self): # {{{
+		self.iscontrol                   = 0
+		self.incomplete_adjoint          = 0
+		self.control_parameters          = float('NaN')
+		self.nsteps                      = 0
+		self.maxiter_per_step            = float('NaN')
+		self.cost_functions              = '' 
+		self.cost_functions_coefficients = float('NaN')
+		self.gradient_scaling            = float('NaN')
+		self.cost_function_threshold     = 0
+		self.min_parameters              = float('NaN')
+		self.max_parameters              = float('NaN')
+		self.step_threshold              = float('NaN')
+		self.vx_obs                      = float('NaN')
+		self.vy_obs                      = float('NaN')
+		self.vz_obs                      = float('NaN')
+		self.vel_obs                     = float('NaN')
+		self.thickness_obs               = float('NaN')
+		self.surface_obs                 = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   inversion parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'iscontrol','is inversion activated?'))
+		string="%s\n%s"%(string,fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity'))
+		string="%s\n%s"%(string,fielddisplay(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))
+		string="%s\n%s"%(string,fielddisplay(self,'nsteps','number of optimization searches'))
+		string="%s\n%s"%(string,fielddisplay(self,'cost_functions','indicate the type of response for each optimization step'))
+		string="%s\n%s"%(string,fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
+		string="%s\n%s"%(string,fielddisplay(self,'cost_function_threshold','misfit convergence criterion. Default is 1%, NaN if not applied'))
+		string="%s\n%s"%(string,fielddisplay(self,'maxiter_per_step','maximum iterations during each optimization step'))
+		string="%s\n%s"%(string,fielddisplay(self,'gradient_scaling','scaling factor on gradient direction during optimization, for each optimization step'))
+		string="%s\n%s"%(string,fielddisplay(self,'step_threshold','decrease threshold for misfit, default is 30%'))
+		string="%s\n%s"%(string,fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fielddisplay(self,'vx_obs','observed velocity x component [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vy_obs','observed velocity y component [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'thickness_obs','observed thickness [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'surface_obs','observed surface elevation [m]'))
+		string="%s\n%s"%(string,'Available cost functions:')
+		string="%s\n%s"%(string,'   101: SurfaceAbsVelMisfit')
+		string="%s\n%s"%(string,'   102: SurfaceRelVelMisfit')
+		string="%s\n%s"%(string,'   103: SurfaceLogVelMisfit')
+		string="%s\n%s"%(string,'   104: SurfaceLogVxVyMisfit')
+		string="%s\n%s"%(string,'   105: SurfaceAverageVelMisfit')
+		string="%s\n%s"%(string,'   201: ThicknessAbsMisfit')
+		string="%s\n%s"%(string,'   501: DragCoefficientAbsGradient')
+		string="%s\n%s"%(string,'   502: RheologyBbarAbsGradient')
+		string="%s\n%s"%(string,'   503: ThicknessAbsGradient')
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node')
+		self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node')
+		self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node')
+		self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node')
+		if not numpy.any(numpy.isnan(self.cost_functions_coefficients)):
+			self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node')
+		if not numpy.any(numpy.isnan(self.min_parameters)):
+			self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node')
+		if not numpy.any(numpy.isnan(self.max_parameters)):
+			self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#default is incomplete adjoint for now
+		self.incomplete_adjoint=1
+
+		#parameter to be inferred by control methods (only
+		#drag and B are supported yet)
+		self.control_parameters='FrictionCoefficient'
+
+		#number of steps in the control methods
+		self.nsteps=20
+
+		#maximum number of iteration in the optimization algorithm for
+		#each step
+		self.maxiter_per_step=20*numpy.ones(self.nsteps)
+
+		#the inversed parameter is updated as follows:
+		#new_par=old_par + gradient_scaling(n)*C*gradient with C in [0 1];
+		#usually the gradient_scaling must be of the order of magnitude of the 
+		#inversed parameter (10^8 for B, 50 for drag) and can be decreased
+		#after the first iterations
+		self.gradient_scaling=50*numpy.ones((self.nsteps,1))
+
+		#several responses can be used:
+		self.cost_functions=101
+
+		#step_threshold is used to speed up control method. When
+		#misfit(1)/misfit(0) < self.step_threshold, we go directly to
+		#the next step
+		self.step_threshold=.7*numpy.ones(self.nsteps) #30 per cent decrement
+
+		#cost_function_threshold is a criteria to stop the control methods.
+		#if J[n]-J[n-1]/J[n] < criteria, the control run stops
+		#NaN if not applied
+		self.cost_function_threshold=float('NaN')    #not activated 
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if not self.iscontrol:
+			return md
+
+		num_controls=numpy.size(md.inversion.control_parameters)
+		num_costfunc=numpy.size(md.inversion.cost_functions)
+
+		md = checkfield(md,'fieldname','inversion.iscontrol','values',[0,1])
+		md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0,1])
+		md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())
+		md = checkfield(md,'fieldname','inversion.nsteps','numel',[1],'>=',0)
+		md = checkfield(md,'fieldname','inversion.maxiter_per_step','size',[md.inversion.nsteps],'>=',0)
+		md = checkfield(md,'fieldname','inversion.step_threshold','size',[md.inversion.nsteps])
+		md = checkfield(md,'fieldname','inversion.cost_functions','size',[num_costfunc],'values',supportedcostfunctions())
+		md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices,num_costfunc],'>=',0)
+		md = checkfield(md,'fieldname','inversion.gradient_scaling','size',[md.inversion.nsteps,num_controls])
+		md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices,num_controls])
+		md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices,num_controls])
+
+		#Only SSA, HO and FS are supported right now
+		if solution=='StressbalanceSolution':
+			if not (md.flowequation.isSSA or md.flowequation.isHO or md.flowequation.isFS or md.flowequation.isL1L2):
+				md.checkmessage("'inversion can only be performed for SSA, HO or FS ice flow models");
+
+		if solution=='BalancethicknessSolution':
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+		else:
+			md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		yts=md.constants.yts
+
+		WriteData(fid,prefix,'name','md.inversion.type','data',0,'format','Integer')
+		WriteData(fid,prefix,'object',self,'fieldname','iscontrol','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','incomplete_adjoint','format','Boolean')
+		if not self.iscontrol:
+			return
+		WriteData(fid,prefix,'object',self,'fieldname','nsteps','format','Integer')
+		WriteData(fid,prefix,'object',self,'fieldname','maxiter_per_step','format','DoubleMat','mattype',3)
+		WriteData(fid,prefix,'object',self,'fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','gradient_scaling','format','DoubleMat','mattype',3)
+		WriteData(fid,prefix,'object',self,'fieldname','cost_function_threshold','format','Double')
+		WriteData(fid,prefix,'object',self,'fieldname','min_parameters','format','DoubleMat','mattype',3)
+		WriteData(fid,prefix,'object',self,'fieldname','max_parameters','format','DoubleMat','mattype',3)
+		WriteData(fid,prefix,'object',self,'fieldname','step_threshold','format','DoubleMat','mattype',3)
+		WriteData(fid,prefix,'object',self,'fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,prefix,'object',self,'fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,prefix,'object',self,'fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,prefix,'object',self,'fieldname','thickness_obs','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','surface_obs','format','DoubleMat','mattype',1)
+
+		#process control parameters
+		num_control_parameters=len(self.control_parameters)
+		WriteData(fid,prefix,'object',self,'fieldname','control_parameters','format','StringArray')
+		WriteData(fid,prefix,'data',num_control_parameters,'name','md.inversion.num_control_parameters','format','Integer')
+
+		#process cost functions
+		num_cost_functions=numpy.size(self.cost_functions)
+		data=marshallcostfunctions(self.cost_functions)
+		WriteData(fid,prefix,'data',data,'name','md.inversion.cost_functions','format','StringArray')
+		WriteData(fid,prefix,'data',num_cost_functions,'name','md.inversion.num_cost_functions','format','Integer')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/inversionvalidation.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/inversionvalidation.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/inversionvalidation.m	(revision 21239)
@@ -0,0 +1,147 @@
+%INVERSIONVALIDATION class definition
+%
+%   Usage:
+%      inversionvalidation=inversionvalidation();
+
+classdef inversionvalidation
+	properties (SetAccess=public) 
+		iscontrol                   = 0
+		incomplete_adjoint          = 0
+		control_parameters          = NaN
+		control_scaling_factors     = NaN
+		cost_functions              = NaN
+		cost_functions_coefficients = NaN
+		min_parameters              = NaN
+		max_parameters              = NaN
+		vx_obs                      = NaN
+		vy_obs                      = NaN
+		vz_obs                      = NaN
+		vel_obs                     = NaN
+		thickness_obs               = NaN
+		surface_obs                 = NaN
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node');
+			self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node');
+			self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node');
+			self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node');
+			if numel(self.cost_functions_coefficients)>1,self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node');end;
+			if numel(self.min_parameters)>1,self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node');end;
+			if numel(self.max_parameters)>1,self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node');end;
+		end % }}}
+		function self = inversionvalidation(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(inversionvalidation(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%default is incomplete adjoint for now
+			self.incomplete_adjoint=1;
+
+			%parameter to be inferred by control methods (only
+			%drag and B are supported yet)
+			self.control_parameters={'FrictionCoefficient'};
+
+			%Scaling factor for each control
+			self.control_scaling_factors=1;
+
+			%several responses can be used:
+			self.cost_functions=101;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~self.iscontrol, return; end
+
+			num_controls=numel(md.inversion.control_parameters);
+			num_costfunc=size(md.inversion.cost_functions,2);
+
+			md = checkfield(md,'fieldname','inversion.iscontrol','values',[0 1]);
+			md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 1]);
+			md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols());
+			md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[1 num_controls],'>',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values',supportedcostfunctions());
+			md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0);
+			md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices num_controls]);
+			md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices num_controls]);
+
+			if strcmp(solution,'BalancethicknessSolution')
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			elseif strcmp(solution,'BalancethicknessSoftSolution')
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			else
+				md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				if ~strcmp(domaintype(md.mesh),'2Dvertical'),
+					md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				end
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   inversionvalidation parameters:'));
+			fielddisplay(self,'iscontrol','is inversion activated?');
+			fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
+			fielddisplay(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
+			fielddisplay(self,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)');
+			fielddisplay(self,'cost_functions','indicate the type of response for each optimization step');
+			fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
+			fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'vx_obs','observed velocity x component [m/yr]');
+			fielddisplay(self,'vy_obs','observed velocity y component [m/yr]');
+			fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]');
+			fielddisplay(self,'thickness_obs','observed thickness [m]');
+			fielddisplay(self,'surface_obs','observed surface elevation [m]');
+			disp('Available cost functions:');
+			disp('   101: SurfaceAbsVelMisfit');
+			disp('   102: SurfaceRelVelMisfit');
+			disp('   103: SurfaceLogVelMisfit');
+			disp('   104: SurfaceLogVxVyMisfit');
+			disp('   105: SurfaceAverageVelMisfit');
+			disp('   201: ThicknessAbsMisfit');
+			disp('   501: DragCoefficientAbsGradient');
+			disp('   502: RheologyBbarAbsGradient');
+			disp('   503: ThicknessAbsGradient');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean');
+			WriteData(fid,prefix,'name','md.inversion.type','data',3,'format','Integer');
+			if ~self.iscontrol, return; end
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','incomplete_adjoint','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			if(numel(self.thickness_obs)==md.mesh.numberofelements),
+				mattype=2; 
+			else
+				mattype=1;
+			end
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
+
+			%process control parameters
+			num_control_parameters=numel(self.control_parameters);
+			WriteData(fid,prefix,'object',self,'fieldname','control_parameters','format','StringArray');
+			WriteData(fid,prefix,'data',num_control_parameters,'name','md.inversion.num_control_parameters','format','Integer');
+
+			%process cost functions
+			num_cost_functions=size(self.cost_functions,2);
+			data=marshallcostfunctions(self.cost_functions);
+			WriteData(fid,prefix,'data',data,'name','md.inversion.cost_functions','format','StringArray');
+			WriteData(fid,prefix,'data',num_cost_functions,'name','md.inversion.num_cost_functions','format','Integer');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/levelset.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/levelset.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/levelset.js	(revision 21239)
@@ -0,0 +1,55 @@
+//LEVELSET class definition
+//
+//   Usage:
+//      levelset=new levelset();
+
+function levelset (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//stabilization = 2 by default
+		this.stabilization		= 2;
+		this.reinit_frequency	= 5;
+	
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   Level-set parameters:'));
+		fielddisplay(this,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
+		fielddisplay(this,'spclevelset','Levelset constraints (NaN means no constraint)');
+		fielddisplay(this,'reinit_frequency','Amount of time steps after which the levelset function in re-initialized (NaN: no re-initialization).');
+
+	}// }}}
+    this.extrude = function(md) {//{{{
+        this.spclevelset=project3d(md,'vector',this.spclevelset,'type','node');
+        return this;
+    }//}}}
+	this.classname= function(){// {{{
+		return "levelset";
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) { // {{{
+		//Early return
+		if (solution!='TransientSolution' | md.trans.ismovingfront==0) return;
+
+		checkfield(md,'fieldname','levelset.spclevelset','Inf',1,'timeseries',1);
+		checkfield(md,'fieldname','levelset.stabilization','values',[0,1,2]);
+	} //}}}
+	this.marshall=function(md,prefix,fid) { //{{{
+		WriteData(fid,prefix,'object',this,'fieldname','stabilization','format','Integer');
+		WriteData(fid,prefix,'object',this,'fieldname','spclevelset','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'object',this,'fieldname','reinit_frequency','format','Integer');
+
+	}//}}}
+		this.fix=function() { //{{{
+			this.spclevelset=NullFix(this.spclevelset,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.stabilization		= 0;
+	this.spclevelset			= NaN;
+	this.reinit_frequency	= NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/levelset.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/levelset.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/levelset.m	(revision 21239)
@@ -0,0 +1,69 @@
+%LEVELSET class definition
+%
+%   Usage:
+%      levelset=levelset();
+
+classdef levelset
+	properties (SetAccess=public) 
+		stabilization		= 0;
+		spclevelset			= NaN;
+		reinit_frequency	= 5;
+	end
+	methods
+		function self = levelset(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('levelset');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+			self.spclevelset=project3d(md,'vector',self.spclevelset,'type','node');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%stabilization = 2 by default
+			self.stabilization = 2;
+			self.reinit_frequency = 5;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','levelset.spclevelset','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','levelset.stabilization','values',[0 1 2]);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Level-set parameters:'));
+			fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
+			fielddisplay(self,'spclevelset','Levelset constraints (NaN means no constraint)');
+			fielddisplay(self,'reinit_frequency','Amount of time steps after which the levelset function in re-initialized');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','spclevelset','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','reinit_frequency','format','Integer');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.levelset.stabilization'],self.stabilization);
+			writejs1Darray(fid,[modelname '.levelset.spclevelset'],self.spclevelset);
+			writejs1Darray(fid,[modelname '.levelset.reinit_frequency'],self.reinit_frequency);
+
+		end % }}}
+	end
+end
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/levelset.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/levelset.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/levelset.py	(revision 21239)
@@ -0,0 +1,60 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from checkfield import checkfield
+from WriteData import WriteData
+
+class levelset(object):
+	"""
+	LEVELSET class definition
+
+	   Usage:
+	      levelset=levelset();
+	"""
+
+	def __init__(self): # {{{
+
+		self.stabilization = 0
+		self.spclevelset   = float('NaN')
+		self.reinit_frequency = 0
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   Level-set parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding'))
+		string="%s\n%s"%(string,fielddisplay(self,'spclevelset','levelset constraints (NaN means no constraint)'))
+		string="%s\n%s"%(string,fielddisplay(self,'reinit_frequency','Amount of time steps after which the levelset function in re-initialized'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.spclevelset=project3d(md,'vector',self.spclevelset,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		#stabilization = 2 by default
+		self.stabilization = 2
+		self.reinit_frequency = 5
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if (solution!='TransientSolution') or (not md.transient.ismovingfront):
+			return md
+
+		md = checkfield(md,'fieldname','levelset.spclevelset','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','levelset.stabilization','values',[0,1,2]);
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer');
+		WriteData(fid,prefix,'object',self,'fieldname','spclevelset','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'object',self,'fieldname','reinit_frequency','format','Integer');
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/linearbasalforcings.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/linearbasalforcings.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/linearbasalforcings.m	(revision 21239)
@@ -0,0 +1,90 @@
+%LINEAR BASAL FORCINGS class definition
+%
+%   Usage:
+%      linearbasalforcings=linearbasalforcings();
+
+classdef linearbasalforcings
+	properties (SetAccess=public) 
+		groundedice_melting_rate  = NaN;
+		deepwater_melting_rate    = NaN;
+		deepwater_elevation       = NaN;
+		upperwater_elevation      = NaN;
+		geothermalflux            = NaN;
+	end
+	methods
+		function self = linearbasalforcings(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(linearbasalforcings(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.groundedice_melting_rate),
+				self.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.groundedice_melting_rate specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%default values for melting parameterization
+			self.deepwater_melting_rate = 50;
+			self.deepwater_elevation    = -800;
+			self.upperwater_elevation   = -400;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.ismasstransport==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','numel',1);
+				md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0,'numel',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','numel',1);
+				md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0,'numel',1);
+			end
+			if ismember('ThermalAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.isthermal==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','numel',1);
+				md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   basal forcings parameters:'));
+
+			fielddisplay(self,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+			fielddisplay(self,'deepwater_melting_rate','basal melting rate (positive if melting applied for floating ice whith base < deepwater_elevation) [m/yr]');
+			fielddisplay(self,'deepwater_elevation','elevation of ocean deepwater [m]');
+			fielddisplay(self,'upperwater_elevation','elevation of ocean upperwater [m]');
+			fielddisplay(self,'geothermalflux','geothermal heat flux [W/m^2]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+			floatingice_melting_rate(find(md.geometry.base<=md.basalforcings.deepwater_elevation))=md.basalforcings.deepwater_melting_rate;
+			pos=find(md.geometry.base>md.basalforcings.deepwater_elevation & md.geometry.base<md.basalforcings.upperwater_elevation);
+			floatingice_melting_rate(pos)=md.basalforcings.deepwater_melting_rate*(md.geometry.base(pos)-md.basalforcings.upperwater_elevation)/(md.basalforcings.deepwater_elevation-md.basalforcings.upperwater_elevation);
+			WriteData(fid,prefix,'name','md.basalforcings.model','data',2,'format','Integer');
+			WriteData(fid,prefix,'data',floatingice_melting_rate,'format','DoubleMat','name','md.basalforcings.floatingice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','name','md.basalforcings.groundedice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','name','md.basalforcings.geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','deepwater_melting_rate','format','Double','name','md.basalforcings.deepwater_melting_rate','scale',1./yts)
+			WriteData(fid,prefix,'object',self,'fieldname','deepwater_elevation','format','Double','name','md.basalforcings.deepwater_elevation')
+			WriteData(fid,prefix,'object',self,'fieldname','upperwater_elevation','format','Double','name','md.basalforcings.upperwater_elevation')
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/linearbasalforcings.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/linearbasalforcings.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/linearbasalforcings.py	(revision 21239)
@@ -0,0 +1,107 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+import numpy
+
+class linearbasalforcings(object):
+	"""
+	LINEAR BASAL FORCINGS class definition
+
+	   Usage:
+	      basalforcings=linearbasalforcings();
+	"""
+
+	def __init__(self,*args): # {{{
+
+		if not len(args):
+			print 'empty init'
+			self.groundedice_melting_rate  = float('NaN')
+			self.deepwater_melting_rate    = 0.
+			self.deepwater_elevation       = 0.
+			self.upperwater_elevation      = 0.
+			self.geothermalflux            = float('NaN')
+
+			#set defaults
+			self.setdefaultparameters()
+		elif len(args)==1 and args[0].__module__=='basalforcings':
+			print 'converting basalforings to linearbasalforcings'
+			inv=args[0]
+			self.groundedice_melting_rate  = inv.groundedice_melting_rate
+			self.geothermalflux            = inv.geothermalflux
+			self.deepwater_melting_rate    = 0.
+			self.deepwater_elevation       = 0.
+			self.upperwater_elevation      = 0.
+
+			#set defaults
+			self.setdefaultparameters()
+		else:
+			raise Exception('constructor not supported')
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   linear basal forcings parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"groundedice_melting_rate","basal melting rate (positive if melting) [m/yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"deepwater_melting_rate","basal melting rate (positive if melting applied for floating ice whith base < deepwater_elevation) [m/yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"deepwater_elevation","elevation of ocean deepwater [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"upperwater_elevation","elevation of ocean upper water [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"geothermalflux","geothermal heat flux [W/m^2]"))
+		return string
+		#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.groundedice_melting_rate)):
+			self.groundedice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no basalforcings.groundedice_melting_rate specified: values set as zero"
+
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		self.deepwater_melting_rate   = 50.0
+		self.deepwater_elevation      = -800.0
+		self.upperwater_elevation     = -400.0
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if 'MasstransportAnalysis' in analyses and not (solution=='TransientSolution' and not md.transient.ismasstransport):
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);
+			md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);
+			md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0);
+
+		if 'BalancethicknessAnalysis' in analyses:
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);
+			md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);
+			md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0);
+
+		if 'ThermalAnalysis' in analyses and not (solution=='TransientSolution' and not md.transient.isthermal):
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);
+			md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);
+			md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0);
+			md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0)
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		yts=md.constants.yts
+
+		floatingice_melting_rate = numpy.zeros((md.mesh.numberofvertices,1))
+		pos=numpy.nonzero(md.geometry.base<=md.basalforcings.deepwater_elevation)
+		floatingice_melting_rate[pos]=md.basalforcings.deepwater_melting_rate
+		pos=numpy.nonzero(numpy.logical_and(md.geometry.base>md.basalforcings.deepwater_elevation,md.geometry.base<md.basalforcings.upperwater_elevation))
+		floatingice_melting_rate[pos]=md.basalforcings.deepwater_melting_rate*(md.geometry.base[pos]-md.basalforcings.upperwater_elevation)/(md.basalforcings.deepwater_elevation-md.basalforcings.upperwater_elevation)
+
+		WriteData(fid,prefix,'name','md.basalforcings.model','data',2,'format','Integer');
+		WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','name','md.basalforcings.groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'data',floatingice_melting_rate,'name','md.basalforcings.floatingice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','name','md.basalforcings.geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'fieldname','deepwater_melting_rate','name','md.basalforcings.deepwater_melting_rate','format','Double','scale',1./yts)
+		WriteData(fid,prefix,'object',self,'fieldname','deepwater_elevation','name','md.basalforcings.deepwater_elevation','format','Double')
+		WriteData(fid,prefix,'object',self,'fieldname','upperwater_elevation','name','md.basalforcings.upperwater_elevation','format','Double')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/m1qn3inversion.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/m1qn3inversion.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/m1qn3inversion.m	(revision 21239)
@@ -0,0 +1,199 @@
+%M1QN3INVERSION class definition
+%
+%   Usage:
+%      m1qn3inversion=m1qn3inversion();
+
+classdef m1qn3inversion
+	properties (SetAccess=public) 
+		iscontrol                   = 0
+		incomplete_adjoint          = 0
+		control_parameters          = NaN
+		control_scaling_factors     = NaN
+		maxsteps                    = 0
+		maxiter                     = 0
+		dxmin                       = 0
+		gttol                       = 0
+		cost_functions              = NaN
+		cost_functions_coefficients = NaN
+		min_parameters              = NaN
+		max_parameters              = NaN
+		vx_obs                      = NaN
+		vy_obs                      = NaN
+		vz_obs                      = NaN
+		vel_obs                     = NaN
+		thickness_obs               = NaN
+		surface_obs                 = NaN
+
+	end
+	methods
+		function self = m1qn3inversion(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(m1qn3inversion(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node');
+			self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node');
+			self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node');
+			self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node');
+			if numel(self.cost_functions_coefficients)>1,self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node');end;
+			if numel(self.min_parameters)>1,self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node');end;
+			if numel(self.max_parameters)>1,self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node');end;
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%default is incomplete adjoint for now
+			self.incomplete_adjoint=1;
+
+			%parameter to be inferred by control methods (only
+			%drag and B are supported yet)
+			self.control_parameters={'FrictionCoefficient'};
+
+			%Scaling factor for each control
+			self.control_scaling_factors=1;
+
+			%number of iterations
+			self.maxsteps=20;
+			self.maxiter=40;
+
+			%several responses can be used:
+			self.cost_functions=101;
+
+			%m1qn3 parameters
+			self.dxmin  = 0.1;
+			self.gttol = 1e-4;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~self.iscontrol, return; end
+
+			if ~IssmConfig('_HAVE_M1QN3_'),
+				md = checkmessage(md,['M1QN3 has not been installed, ISSM needs to be reconfigured and recompiled with M1QN3']);
+			end
+			num_controls=numel(md.inversion.control_parameters);
+			num_costfunc=size(md.inversion.cost_functions,2);
+
+			md = checkfield(md,'fieldname','inversion.iscontrol','values',[0 1]);
+			md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 1]);
+			md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols());
+			md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[1 num_controls],'>',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.maxiter','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.dxmin','numel',1,'>',0);
+			md = checkfield(md,'fieldname','inversion.gttol','numel',1,'>',0);
+			md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values',supportedcostfunctions());
+			md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0);
+			md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices num_controls]);
+			md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices num_controls]);
+
+			if strcmp(solution,'BalancethicknessSolution')
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','inversion.surface_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			elseif strcmp(solution,'BalancethicknessSoftSolution')
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			else
+				md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				if ~strcmp(domaintype(md.mesh),'2Dvertical'),
+					md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				end
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   m1qn3inversion parameters:'));
+			fielddisplay(self,'iscontrol','is inversion activated?');
+			fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
+			fielddisplay(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
+			fielddisplay(self,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)');
+			fielddisplay(self,'maxsteps','maximum number of iterations (gradient computation)');
+			fielddisplay(self,'maxiter','maximum number of Function evaluation (forward run)');
+			fielddisplay(self,'dxmin','convergence criterion: two points less than dxmin from eachother (sup-norm) are considered identical');
+			fielddisplay(self,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)');
+			fielddisplay(self,'cost_functions','indicate the type of response for each optimization step');
+			fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
+			fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'vx_obs','observed velocity x component [m/yr]');
+			fielddisplay(self,'vy_obs','observed velocity y component [m/yr]');
+			fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]');
+			fielddisplay(self,'thickness_obs','observed thickness [m]');
+			fielddisplay(self,'surface_obs','observed surface elevation [m]');
+			disp('Available cost functions:');
+			disp('   101: SurfaceAbsVelMisfit');
+			disp('   102: SurfaceRelVelMisfit');
+			disp('   103: SurfaceLogVelMisfit');
+			disp('   104: SurfaceLogVxVyMisfit');
+			disp('   105: SurfaceAverageVelMisfit');
+			disp('   201: ThicknessAbsMisfit');
+			disp('   501: DragCoefficientAbsGradient');
+			disp('   502: RheologyBbarAbsGradient');
+			disp('   503: ThicknessAbsGradient');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean');
+			WriteData(fid,prefix,'name','md.inversion.type','data',2,'format','Integer');
+			if ~self.iscontrol, return; end
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','incomplete_adjoint','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxsteps','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','dxmin','format','Double');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','gttol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			if(numel(self.thickness_obs)==md.mesh.numberofelements),
+				mattype=2;
+			else
+				mattype=1;
+			end
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
+
+			%process control parameters
+			num_control_parameters=numel(self.control_parameters);
+			WriteData(fid,prefix,'object',self,'fieldname','control_parameters','format','StringArray');
+			WriteData(fid,prefix,'data',num_control_parameters,'name','md.inversion.num_control_parameters','format','Integer');
+
+			%process cost functions
+			num_cost_functions=size(self.cost_functions,2);
+			data=marshallcostfunctions(self.cost_functions);
+			WriteData(fid,prefix,'data',data,'name','md.inversion.cost_functions','format','StringArray');
+			WriteData(fid,prefix,'data',num_cost_functions,'name','md.inversion.num_cost_functions','format','Integer');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.inversion.iscontrol'],self.iscontrol);
+			writejsdouble(fid,[modelname '.inversion.incomplete_adjoint'],self.incomplete_adjoint);
+			writejscellstring(fid,[modelname '.inversion.control_parameters'],self.control_parameters);
+			writejsdouble(fid,[modelname '.inversion.control_scaling_factors'],self.control_scaling_factors);
+			writejsdouble(fid,[modelname '.inversion.maxsteps'],self.maxsteps);
+			writejsdouble(fid,[modelname '.inversion.maxiter'],self.maxiter);
+			writejsdouble(fid,[modelname '.inversion.dxmin'],self.dxmin);
+			writejsdouble(fid,[modelname '.inversion.gttol'],self.gttol);
+			writejs2Darray(fid,[modelname '.inversion.cost_functions'],self.cost_functions);
+			writejs2Darray(fid,[modelname '.inversion.cost_functions_coefficients'],self.cost_functions_coefficients);
+			writejs1Darray(fid,[modelname '.inversion.min_parameters'],self.min_parameters);
+			writejs1Darray(fid,[modelname '.inversion.max_parameters'],self.max_parameters);
+			writejs1Darray(fid,[modelname '.inversion.vx_obs'],self.vx_obs);
+			writejs1Darray(fid,[modelname '.inversion.vy_obs'],self.vy_obs);
+			writejs1Darray(fid,[modelname '.inversion.vz_obs'],self.vz_obs);
+			writejs1Darray(fid,[modelname '.inversion.vel_obs'],self.vel_obs);
+			writejs1Darray(fid,[modelname '.inversion.thickness_obs'],self.thickness_obs);
+			writejs1Darray(fid,[modelname '.inversion.surface_obs'],self.surface_obs);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/m1qn3inversion.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/m1qn3inversion.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/m1qn3inversion.py	(revision 21239)
@@ -0,0 +1,195 @@
+import numpy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+from supportedcontrols import supportedcontrols
+from supportedcostfunctions import supportedcostfunctions
+from marshallcostfunctions import marshallcostfunctions
+
+class m1qn3inversion(object):
+	'''
+	M1QN3 class definition
+
+   Usage:
+      m1qn3inversion=m1qn3inversion()
+	'''
+
+	def __init__(self,*args): # {{{
+
+		if not len(args):
+			print 'empty init'
+			self.iscontrol                   = 0
+			self.incomplete_adjoint          = 0
+			self.control_parameters          = float('NaN')
+			self.control_scaling_factors     = float('NaN')
+			self.maxsteps                    = 0
+			self.maxiter                     = 0
+			self.dxmin                       = 0.
+			self.gttol                       = 0.
+			self.cost_functions              = float('NaN')
+			self.cost_functions_coefficients = float('NaN')
+			self.min_parameters              = float('NaN')
+			self.max_parameters              = float('NaN')
+			self.vx_obs                      = float('NaN')
+			self.vy_obs                      = float('NaN')
+			self.vz_obs                      = float('NaN')
+			self.vel_obs                     = float('NaN')
+			self.thickness_obs               = float('NaN')
+
+			#set defaults
+			self.setdefaultparameters()
+		elif len(args)==1 and args[0].__module__=='inversion':
+			print 'converting inversion to m1qn3inversion'
+			inv=args[0]
+			#first call setdefaultparameters: 
+			self.setdefaultparameters()
+
+			#then go fish whatever is available in the inversion object provided to the constructor
+			self.iscontrol                   = inv.iscontrol
+			self.incomplete_adjoint          = inv.incomplete_adjoint
+			self.control_parameters          = inv.control_parameters
+			self.maxsteps                    = inv.nsteps
+			self.cost_functions              = inv.cost_functions
+			self.cost_functions_coefficients = inv.cost_functions_coefficients
+			self.min_parameters              = inv.min_parameters
+			self.max_parameters              = inv.max_parameters
+			self.vx_obs                      = inv.vx_obs
+			self.vy_obs                      = inv.vy_obs
+			self.vz_obs                      = inv.vz_obs
+			self.vel_obs                     = inv.vel_obs
+			self.thickness_obs               = inv.thickness_obs
+		else:
+			raise Exception('constructor not supported')
+		#}}}
+	def __repr__(self): # {{{
+		string='   m1qn3inversion parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'iscontrol','is inversion activated?'))
+		string="%s\n%s"%(string,fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity'))
+		string="%s\n%s"%(string,fielddisplay(self,'control_parameters','ex: [''FrictionCoefficient''], or [''MaterialsRheologyBbar'']'))
+		string="%s\n%s"%(string,fielddisplay(self,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)'))
+		string="%s\n%s"%(string,fielddisplay(self,'maxsteps','maximum number of iterations (gradient computation)'))
+		string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of Function evaluation (forward run)'))
+		string="%s\n%s"%(string,fielddisplay(self,'dxmin','convergence criterion: two points less than dxmin from eachother (sup-norm) are considered identical'))
+		string="%s\n%s"%(string,fielddisplay(self,'gttol','||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'cost_functions','indicate the type of response for each optimization step'))
+		string="%s\n%s"%(string,fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
+		string="%s\n%s"%(string,fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fielddisplay(self,'vx_obs','observed velocity x component [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vy_obs','observed velocity y component [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'thickness_obs','observed thickness [m]'))
+		string="%s\n%s"%(string,'Available cost functions:')
+		string="%s\n%s"%(string,'   101: SurfaceAbsVelMisfit')
+		string="%s\n%s"%(string,'   102: SurfaceRelVelMisfit')
+		string="%s\n%s"%(string,'   103: SurfaceLogVelMisfit')
+		string="%s\n%s"%(string,'   104: SurfaceLogVxVyMisfit')
+		string="%s\n%s"%(string,'   105: SurfaceAverageVelMisfit')
+		string="%s\n%s"%(string,'   201: ThicknessAbsMisfit')
+		string="%s\n%s"%(string,'   501: DragCoefficientAbsGradient')
+		string="%s\n%s"%(string,'   502: RheologyBbarAbsGradient')
+		string="%s\n%s"%(string,'   503: ThicknessAbsGradient')
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node')
+		self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node')
+		self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node')
+		self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node')
+		if not numpy.any(numpy.isnan(self.cost_functions_coefficients)):
+			self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node')
+		if not numpy.any(numpy.isnan(self.min_parameters)):
+			self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node')
+		if not numpy.any(numpy.isnan(self.max_parameters)):
+			self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#default is incomplete adjoint for now
+		self.incomplete_adjoint=1
+
+		#parameter to be inferred by control methods (only
+		#drag and B are supported yet)
+		self.control_parameters='FrictionCoefficient'
+		
+		#Scaling factor for each control
+		self.control_scaling_factors=1
+
+		#number of iterations
+		self.maxsteps=20
+		self.maxiter=40
+
+		#several responses can be used:
+		self.cost_functions=101
+
+		#m1qn3 parameters
+		self.dxmin  = 0.1
+		self.gttol = 1e-4
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if not self.iscontrol:
+			return md
+
+		num_controls=numpy.size(md.inversion.control_parameters)
+		num_costfunc=numpy.size(md.inversion.cost_functions)
+
+		md = checkfield(md,'fieldname','inversion.iscontrol','values',[0,1])
+		md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0,1])
+		md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())
+		md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[num_controls],'>',0,'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','inversion.maxsteps','numel',[1],'>=',0)
+		md = checkfield(md,'fieldname','inversion.maxiter','numel',[1],'>=',0)
+		md = checkfield(md,'fieldname','inversion.dxmin','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','inversion.gttol','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','inversion.cost_functions','size',[num_costfunc],'values',supportedcostfunctions())
+		md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices,num_costfunc],'>=',0)
+		md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices,num_controls])
+		md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices,num_controls])
+
+		if solution=='BalancethicknessSolution':
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+		else:
+			md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		yts=md.constants.yts
+
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean')
+		WriteData(fid,prefix,'name','md.inversion.type','data',2,'format','Integer')
+		if not self.iscontrol:
+			return
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','incomplete_adjoint','format','Boolean')
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3)
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxsteps','format','Integer')
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxiter','format','Integer')
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','dxmin','format','Double')
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','gttol','format','Double')
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3)
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3)
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,prefix,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',1)
+
+		#process control parameters
+		num_control_parameters=len(self.control_parameters)
+		WriteData(fid,prefix,'object',self,'fieldname','control_parameters','format','StringArray')
+		WriteData(fid,prefix,'data',num_control_parameters,'name','md.inversion.num_control_parameters','format','Integer')
+
+		#process cost functions
+		num_cost_functions=numpy.size(self.cost_functions)
+		data=marshallcostfunctions(self.cost_functions)
+		WriteData(fid,prefix,'data',data,'name','md.inversion.cost_functions','format','StringArray')
+		WriteData(fid,prefix,'data',num_cost_functions,'name','md.inversion.num_cost_functions','format','Integer')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mask.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mask.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mask.js	(revision 21239)
@@ -0,0 +1,49 @@
+//MASK class definition
+//
+//   Usage:
+//      mask= new mask();
+
+function mask () {
+	//properties 
+	// {{{
+		this.groundedice_levelset                           = NaN;
+		this.ice_levelset                           = NaN;
+		//}}}
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+		} // }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   mask:")); 
+
+			fielddisplay(this,"groundedice_levelset","is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0");
+			fielddisplay(this,"ice_levelset","presence of ice if < 0, icefront position if = 0, no ice if > 0");
+		} //}}}
+		this.extrude = function(md) {//{{{
+			this.groundedice_levelset=project3d(md,'vector',this.groundedice_levelset,'type','node');
+			this.ice_levelset=project3d(md,'vector',this.ice_levelset,'type','node');
+			return this;
+		}//}}}
+		this.classname = function () { //{{{
+			return "mask";
+		} //}}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			checkfield(md,'fieldname','mask.groundedice_levelset','size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices, 1]);
+			var isice=NewArrayFill(md.mesh.numberofvertices,0); 
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(md.mask.ice_levelset[i]<=0)isice[i]=1;
+			if (ArraySum(isice)==0){
+				console.log('no ice present in the domain');
+			}
+			if (ArrayMax(md.mask.ice_levelset)<0){
+				console.log('no ice front provided');
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+            WriteData(fid,prefix,'object',this,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1);
+            WriteData(fid,prefix,'object',this,'fieldname','ice_levelset','format','DoubleMat','mattype',1);
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mask.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mask.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mask.m	(revision 21239)
@@ -0,0 +1,68 @@
+%MASK class definition
+%
+%   Usage:
+%      mask=mask();
+
+classdef mask
+	properties (SetAccess=public) 
+		groundedice_levelset = NaN;
+		ice_levelset         = NaN;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. Update old properties here
+
+			%2014 February 5th
+			if numel(self.ice_levelset)>1 & all(self.ice_levelset>=0),
+				disp('WARNING: md.mask.ice_levelset>=0, you probably need to change the sign of this levelset');
+			end
+
+		end% }}}
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.groundedice_levelset=project3d(md,'vector',self.groundedice_levelset,'type','node');
+			self.ice_levelset=project3d(md,'vector',self.ice_levelset,'type','node');
+		end % }}}
+		function self = mask(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','mask.groundedice_levelset','forcing',1,'NaN',1);
+			md = checkfield(md,'fieldname','mask.ice_levelset','NaN',1,'size',[md.mesh.numberofvertices 1]);
+			isice=(md.mask.ice_levelset<=0);
+			if sum(isice)==0,
+				warning('no ice present in the domain');
+			end
+			if max(md.mask.ice_levelset)<0,
+				disp('WARNING: no ice front provided');
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   masks:'));
+
+			fielddisplay(self,'groundedice_levelset','is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0');
+			fielddisplay(self,'ice_levelset','presence of ice if < 0, icefront position if = 0, no ice if > 0');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.mask.groundedice_levelset'],self.groundedice_levelset);
+			writejs1Darray(fid,[modelname '.mask.ice_levelset'],self.ice_levelset);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mask.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mask.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mask.py	(revision 21239)
@@ -0,0 +1,51 @@
+import numpy
+from fielddisplay import fielddisplay
+from project3d import project3d
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class mask(object):
+	"""
+	MASK class definition
+
+	   Usage:
+	      mask=mask();
+	"""
+
+	def __init__(self): # {{{
+		self.ice_levelset         = float('NaN')
+		self.groundedice_levelset = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   masks:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"groundedice_levelset","is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0"))
+		string="%s\n%s"%(string,fielddisplay(self,"ice_levelset","presence of ice if < 0, icefront position if = 0, no ice if > 0"))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.ice_levelset=project3d(md,'vector',self.ice_levelset,'type','node')
+		self.groundedice_levelset=project3d(md,'vector',self.groundedice_levelset,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices])
+		isice=numpy.array(md.mask.ice_levelset<=0,int)
+		if numpy.sum(isice)==0:
+			raise TypeError("no ice present in the domain")
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'object',self,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/maskpsl.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/maskpsl.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/maskpsl.js	(revision 21239)
@@ -0,0 +1,69 @@
+//MASKPSL class definition
+//
+//   Usage:
+//      maskpsl= new maskpsl();
+
+function maskpsl () {
+	//properties 
+	// {{{
+		this.groundedice_levelset                           = NaN;
+		this.ice_levelset                           = NaN;
+		this.land_levelset                           = NaN;
+		this.ocean_levelset                           = NaN;
+		//}}}
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+		} // }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   mask:")); 
+
+			fielddisplay(this,"groundedice_levelset","is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0");
+			fielddisplay(this,"ice_levelset","presence of ice if < 0, icefront position if = 0, no ice if > 0");
+			fielddisplay(this,"ocean_levelset","is the vertex on the ocean? yes if = 1, no if = 0");
+			fielddisplay(this,"land_levelset","is the vertex on land? yes if = 1, no if = 0");
+		} //}}}
+		this.classname = function () { //{{{
+			return "maskpsl";
+		} //}}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			checkfield(md,'fieldname','mask.groundedice_levelset','size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mask.ocean_levelset'        ,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mask.land_levelset'        ,'size',[md.mesh.numberofvertices, 1]);
+			
+			var isice=NewArrayFill(md.mesh.numberofvertices,0); 
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(md.mask.ice_levelset[i]<=0)isice[i]=1;
+			if (ArraySum(isice)==0){
+				console.log('no ice present in the domain');
+			}
+			if (ArrayMax(md.mask.ice_levelset)<0){
+				console.log('no ice front provided');
+			}
+				
+			var icefront=NewArrayFill(md.mesh.numberofelements,0);
+			for(var i=0;i<md.mesh.numberofelements;i++){
+				for(var j=0;j<md.mesh.elements[0].length;j++){
+					icefront[i]+=(md.mask.ice_levelset[md.mesh.elements[i][j]-1]==0);
+				}
+			}
+			if ((ArrayMax(icefront)==3 & (md.mesh.elementtype() == 'Tria')) | (ArrayMax(icefront)==6 & md.mesh.elementtype() == 'Penta')){
+				if (md.mesh.elementtype()=='Tria'){
+					var pos=ArrayFindEqual(icefront,3); numberemptyelements=pos.length;
+				}
+				else if (md.mesh.elementtype() == 'Penta'){
+					var pos=ArrayFindEqual(icefront,6); numberemptyelements=pos.length;
+				}
+				throw Error(sprintf(" %i have all nodes on ice front, change md.mask.ice_levelset to fix it",numberemptyelements));
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'class','mask','fieldname','groundedice_levelset','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mask','fieldname','ice_levelset','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mask','fieldname','land_levelset','format','DoubleMat','mattype',1);
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/maskpsl.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/maskpsl.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/maskpsl.m	(revision 21239)
@@ -0,0 +1,85 @@
+%MASKPSL class definition
+%
+%   Usage:
+%      maskpsl=maskpsl();
+
+classdef maskpsl 
+	properties (SetAccess=public) 
+		groundedice_levelset = NaN;
+		ice_levelset         = NaN;
+		ocean_levelset = NaN;
+		land_levelset = NaN;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. Update old properties here
+
+			%2014 February 5th
+			if numel(self.ice_levelset)>1 & all(self.ice_levelset>=0),
+				disp('WARNING: md.mask.ice_levelset>=0, you probably need to change the sign of this levelset');
+			end
+
+		end% }}}
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.groundedice_levelset=project3d(md,'vector',self.groundedice_levelset,'type','node');
+			self.ice_levelset=project3d(md,'vector',self.ice_levelset,'type','node');
+			self.ocean_levelset=project3d(md,'vector',self.ocean_levelset,'type','node');
+			self.land_levelset=project3d(md,'vector',self.land_levelset,'type','node');
+		end % }}}
+		function self = mask(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','mask.groundedice_levelset','size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mask.ocean_levelset','size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mask.land_levelset','size',[md.mesh.numberofvertices 1]);
+			isice=(md.mask.ice_levelset<=0);
+			if sum(isice)==0,
+				warning('no ice present in the domain');
+			end
+			if max(md.mask.ice_levelset)<0,
+				warning('no ice front provided');
+			end
+			icefront=sum(md.mask.ice_levelset(md.mesh.elements)==0,2);
+			if (max(icefront)==3 & strcmp(elementtype(md.mesh),'Tria')) | (max(icefront==6) & strcmp(elementtype(md.mesh),'Penta')),
+				error('At least one element has all nodes on ice front, change md.mask.ice_levelset to fix it')
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   masks:'));
+
+			fielddisplay(self,'groundedice_levelset','is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0');
+			fielddisplay(self,'ice_levelset','presence of ice if < 0, icefront position if = 0, no ice if > 0');
+			fielddisplay(self,'ocean_levelset','is the vertex on the ocean ? yes if = 1, no if = 0');
+			fielddisplay(self,'land_levelset','is the vertex on the land ? yes if = 1, no if = 0');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'class','mask','fieldname','groundedice_levelset','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mask','fieldname','ice_levelset','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mask','fieldname','land_levelset','format','DoubleMat','mattype',1);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			fprintf(fid,'%s.mask=new maskpsl();\n',modelname);
+			writejs1Darray(fid,[modelname '.mask.groundedice_levelset'],self.groundedice_levelset);
+			writejs1Darray(fid,[modelname '.mask.ice_levelset'],self.ice_levelset);
+			writejs1Darray(fid,[modelname '.mask.ocean_levelset'],self.ocean_levelset);
+			writejs1Darray(fid,[modelname '.mask.land_levelset'],self.land_levelset);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/maskpsl.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/maskpsl.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/maskpsl.py	(revision 21239)
@@ -0,0 +1,93 @@
+import numpy
+import MatlabFuncs as m
+from model import *
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+class maskpsl(object):
+#MASKPSL class definition
+#
+#   Usage:
+#      maskpsl=maskpsl();
+	def __init__(self,*args): # {{{
+		self.groundedice_levelset = float('NaN')
+		self.ice_levelset         = float('NaN')
+		self.ocean_levelset = float('NaN')
+		self.land_levelset = float('NaN')
+		
+		if not len(args):
+			self.setdefaultparameters()
+		else:
+			raise RuntimeError('constructor not supported')
+	# }}}
+	def __repr__(self): # {{{
+		string='   masks:'
+		
+		string="%s\n%s"%(string,fielddisplay(self,'groundedice_levelset','is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0'))
+		string="%s\n%s"%(string,fielddisplay(self,'ice_levelset','presence of ice if < 0, icefront position if = 0, no ice if > 0'))
+		string="%s\n%s"%(string,fielddisplay(self,'ocean_levelset','is the vertex on the ocean ? yes if = 1, no if = 0'))
+		string="%s\n%s"%(string,fielddisplay(self,'land_levelset','is the vertex on the land ? yes if = 1, no if = 0'))
+	
+		return string
+	# }}}	
+	def loadobj(self): # {{{
+		# This def is directly called by matlab when a model object is
+		# loaded. Update old properties here
+
+		#2014 February 5th
+		if numel(self.ice_levelset)>1 and all(self.ice_levelset>=0):
+			print('WARNING: md.mask.ice_levelset>=0, you probably need to change the sign of this levelset')
+		return self
+	# }}}
+	def setdefaultparameters(self): # {{{
+		return self
+	# }}}
+	def checkconsistency(self,md,solution,analyses): # {{{
+
+		md = checkfield(md,'fieldname','mask.groundedice_levelset','size',[md.mesh.numberofvertices, 1])
+		md = checkfield(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices, 1])
+		md = checkfield(md,'fieldname','mask.ocean_levelset','size',[md.mesh.numberofvertices, 1])
+		md = checkfield(md,'fieldname','mask.land_levelset','size',[md.mesh.numberofvertices, 1])
+		isice=(md.mask.ice_levelset<=0)
+		if sum(isice)==0:
+			print('no ice present in the domain')
+
+		if max(md.mask.ice_levelset)<0:
+			print('no ice front provided')
+		
+		elements=md.mesh.elements-1; elements=elements.astype(numpy.int32, copy=False);
+		icefront=numpy.sum(md.mask.ice_levelset[elements]==0,axis=1)
+		if (max(icefront)==3 & m.strcmp(md.mesh.elementtype(),'Tria')) or (max(icefront==6) & m.strcmp(md.mesh.elementtype(),'Penta')):
+			raise RuntimeError('At least one element has all nodes on ice front, change md.mask.ice_levelset to fix it')
+		
+		return md
+	# }}}
+	def extrude(self,md): # {{{
+		self.groundedice_levelset=project3d(md,'vector',self.groundedice_levelset,'type','node')
+		self.ice_levelset=project3d(md,'vector',self.ice_levelset,'type','node')
+		self.ocean_levelset=project3d(md,'vector',self.ocean_levelset,'type','node')
+		self.land_levelset=project3d(md,'vector',self.land_levelset,'type','node')
+		return self
+	# }}}
+	def mask(*args): # {{{
+		if not len(args):
+			self.setdefaultparameters()
+		else:
+			raise RuntimeError('constructor not supported')
+		return self
+	# }}}
+	def marshall(self,prefix,md,fid): # {{{
+		WriteData(fid,prefix,'object',self,'class','mask','fieldname','groundedice_levelset','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'class','mask','fieldname','ice_levelset','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'class','mask','fieldname','land_levelset','format','DoubleMat','mattype',1)
+	# }}}
+	def savemodeljs(self,fid,modelname): # {{{
+
+		writejs1Darray(fid,[modelname, '.mask.groundedice_levelset'],self.groundedice_levelset)
+		writejs1Darray(fid,[modelname, '.mask.ice_levelset'],self.ice_levelset)
+		writejs1Darray(fid,[modelname, '.mask.ocean_levelset'],self.ocean_levelset)
+		writejs1Darray(fid,[modelname, '.mask.land_levelset'],self.land_levelset)
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/masscon.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/masscon.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/masscon.m	(revision 21239)
@@ -0,0 +1,69 @@
+%MASSCON class definition
+%
+%   Usage:
+%      masscon=masscon();
+%      masscon=masscon('name','MassCon58',... %name of a North-East Greenland JPL MassCon
+%                    'levelset',level);
+% 
+%   where level is a levelset vectorial field.
+%
+%   See also: MISFIT
+
+classdef masscon
+	properties (SetAccess=public)
+		%masscon
+		name              = '';
+		definitionstring   = ''; %string that identifies this output definition uniquely, from 'Outputdefinition[1-10]'
+		levelset          = NaN; %levelset vectorial field which identifies the boundaries of the masscon
+	end
+	
+	methods
+		function self = masscon(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name=getfieldvalue(options,'name','');
+				self.levelset=getfieldvalue(options,'levelset');
+				self.definitionstring=getfieldvalue(options,'definitionstring');
+
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ischar(self.name),
+				error('masscon error message: ''name'' field should be a string!');
+			end
+			
+			OutputdefinitionStringArray={};
+			for i=1:100
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+
+			md = checkfield(md,'fieldname','self.definitionstring','field',self.definitionstring,'values','Outputdefinition');
+			md = checkfield(md,'fieldname','self.levelset','field',self.levelset,'timeseries',1,'NaN',1,'Inf',1);
+
+		end % }}}
+		function md = disp(self) % {{{
+		
+			disp(sprintf('   Misfit:\n'));
+
+			fielddisplay(self,'name','identifier for this masscon response');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from ''Outputdefinition[1-10]''');
+			fielddisplay(self,'levelset','levelset vectorial field which identifies the boundaries of the masscon');
+
+		end % }}}
+		function md = marshall(self,prefix,md,fid) % {{{
+
+		WriteData(fid,prefix,'object',self,'fieldname','name','format','String');
+		WriteData(fid,prefix,'object',self,'fieldname','definitionstring','format','String');
+		WriteData(fid,prefix,'object',self,'fieldname','levelset','format','DoubleMat','mattype',1);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/massconaxpby.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/massconaxpby.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/massconaxpby.m	(revision 21239)
@@ -0,0 +1,88 @@
+%MASSCONAXPBY class definition
+%
+%   Usage:
+%      massconaxpby=massconaxpby();
+%      massconsumaxpby=massconaxpby('name','MassCon58+35','namex','MassCon58','alpha',.5,'namey','MassCon35','beta',.5); 
+% 
+%   where name is the name of the massconaxpby object, namex is the name of the first masscon, namey the name of the second masscon and alpha,beta the 
+%         multiplicators. The meaning of axpby here is: resulting masscon is the linear combination (alpha *x + beta * y) 
+%         of two masscons.
+%
+%   See also: MASSCON
+
+classdef massconaxpby
+	properties (SetAccess=public)
+		%masscon axpby
+		name              = '';
+		definitionstring   = ''; %String that identifies this output definition uniquely, from 'Outputdefinition[1-10]'
+		namex              = '';
+		namey              = '';
+		alpha              = NaN;
+		beta              = NaN;
+	end
+	
+	methods
+		function self = massconaxpby(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get names
+				self.name=getfieldvalue(options,'name','');
+				self.definitionstring=getfieldvalue(options,'definitionstring');
+				self.namex=getfieldvalue(options,'namex');
+				self.namey=getfieldvalue(options,'namey');
+
+				%get multiplicators: 
+				self.alpha=getfieldvalue(options,'alpha');
+				self.beta=getfieldvalue(options,'beta');
+
+
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ischar(self.name), error('masscon error message: ''name'' field should be a string!'); end
+			if ~ischar(self.namex), error('masscon error message: ''namex'' field should be a string!'); end
+			if ~ischar(self.namey), error('masscon error message: ''namey'' field should be a string!'); end
+		
+			% Create output definition cell array for check
+			OutputdefinitionStringArray={};
+			for i=1:100
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+
+			md = checkfield(md,'fieldname','self.definitionstring','field',self.definitionstring,'values',OutputdefinitionStringArray);
+
+			md = checkfield(md,'fieldname','self.alpha','field',self.alpha,'NaN',1,'Inf',1,'size',[1 1]);
+			md = checkfield(md,'fieldname','self.betaa','field',self.beta,'NaN',1,'Inf',1,'size',[1 1]);
+
+		end % }}}
+		function md = disp(self) % {{{
+		
+			disp(sprintf('   Misfit:\n'));
+
+			fielddisplay(self,'name','name');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from Outputdefinition[1-10]');
+			fielddisplay(self,'namex','identifier for the first masscon');
+			fielddisplay(self,'alpha','first masscon multiplicator');
+			fielddisplay(self,'namey','identifier for the second masscon');
+			fielddisplay(self,'beta','second masscon multiplicator');
+
+		end % }}}
+		function md = marshall(self,prefix,md,fid) % {{{
+
+		WriteData(fid,prefix,'object',self,'fieldname','name','format','String');
+		WriteData(fid,prefix,'object',self,'fieldname','definitionstring','format','Integer');
+		WriteData(fid,prefix,'object',self,'fieldname','namex','format','String');
+		WriteData(fid,prefix,'object',self,'fieldname','namey','format','String');
+		WriteData(fid,prefix,'object',self,'fieldname','alpha','format','Double');
+		WriteData(fid,prefix,'object',self,'fieldname','beta','format','Double');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/massfluxatgate.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/massfluxatgate.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/massfluxatgate.m	(revision 21239)
@@ -0,0 +1,73 @@
+%MASSFLUXATGATE class definition
+%
+%   Usage:
+%      massfluxatgate=massfluxatgate();
+%      massfluxatgate=massfluxatgate('name','GateName','definitionname','Outputdefinition1','profilename','PathToExpFile');
+
+classdef massfluxatgate
+	properties (SetAccess=public)  
+		%massfluxatgate 
+		name            = '';
+		definitionstring  = '';
+		profilename     = ''; 
+	end
+	properties (SetAccess=private)  
+		segments        = NaN;
+	end
+	methods
+		function self = massfluxatgate(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name=getfieldvalue(options,'name','');
+				self.definitionstring=getfieldvalue(options,'definitionstring');
+				self.profilename=getfieldvalue(options,'profilename');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			
+			if ~ischar(self.name),
+				error('massfluxatgate error message: ''name'' field should be a string!');
+			end
+			if ~ischar(self.profilename),
+				error('massfluxatgate error message: ''profilename'' field should be a string!');
+			end
+		
+			OutputdefinitionStringArray={};
+			for i=1:100
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+			md = checkfield(md,'field',self.definitionstring,'values',OutputdefinitionStringArray);
+
+			%check the profilename points to a file!: 
+			if exist(self.profilename,'file')~=2,
+				error('massfluxatgate error message: file name for profile corresponding to gate does not point to a legitimate file on disk!');
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Massfluxatgate:\n'));
+
+			fielddisplay(self,'name','identifier for this massfluxatgate response');
+			fielddisplay(self,'profilename','name of file (shapefile or argus file) defining a profile (or gate)');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from ''Outputdefinition[1-10]''');
+			
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+		%before marshalling, we need to create the segments out of the profilename: 
+		self.segments=MeshProfileIntersection(md.mesh.elements,md.mesh.x,md.mesh.y,self.profilename);
+
+		%ok, marshall name and segments: 
+		WriteData(fid,prefix,'data',self.name,'name','md.massfluxatgate.name','format','String');
+		WriteData(fid,prefix,'data',self.definitionstring,'name','md.massfluxatgate.definitionstring','format','String');
+		WriteData(fid,prefix,'data',self.segments,'name','md.massfluxatgate.segments','format','DoubleMat','mattype',1);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/massfluxatgate.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/massfluxatgate.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/massfluxatgate.py	(revision 21239)
@@ -0,0 +1,70 @@
+from fielddisplay import fielddisplay
+from pairoptions import pairoptions
+from checkfield import checkfield
+from WriteData import WriteData
+from MeshProfileIntersection import MeshProfileIntersection
+import os
+
+class massfluxatgate(object):
+	"""
+	MASSFLUXATEGATE class definition
+
+	   Usage:
+		  massfluxatgate=massfluxatgate('GateName','PathToExpFile')
+	"""
+
+	def __init__(self,*args): # {{{
+
+		self.name            = ''
+		self.definitionstring  = ''
+		self.profilename     = ''
+		self.segments        = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#use provided options to change fields
+		options=pairoptions(*args)
+
+		#OK get other fields
+		self=options.AssignObjectFields(self)
+
+		#}}}
+	def __repr__(self): # {{{
+
+		string="   Massfluxatgate:"
+		string="%s\n%s"%(string,fielddisplay(self,'name','identifier for this massfluxatgate response'))
+		string="%s\n%s"%(string,fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from Outputdefinition[1-10]'))
+		string="%s\n%s"%(string,fielddisplay(self,'profilename','name of file (shapefile or argus file) defining a profile (or gate)'))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		
+		if  not isinstance(self.name, basestring):
+			raise RuntimeError("massfluxatgate error message: 'name' field should be a string!")
+			
+		if  not isinstance(self.profilename, basestring):
+			raise RuntimeError("massfluxatgate error message: 'profilename' field should be a string!") 
+
+			md = checkfield(md,'field',self.definitionstring,'values',['Outputdefinition1','Outputdefinition2','Outputdefinition3','Outputdefinition4','Outputdefinition5','Outputdefinition6','Outputdefinition7','Outputdefinition8','Outputdefinition9','Outputdefinition10'])
+		
+		#check the profilename points to a file!: 
+		if not os.path.isfile(self.profilename):
+			raise RuntimeError("massfluxatgate error message: file name for profile corresponding to gate does not point to a legitimate file on disk!")
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		
+		#before marshalling, we need to create the segments out of the profilename: 
+		self.segments=MeshProfileIntersection(md.mesh.elements,md.mesh.x,md.mesh.y,self.profilename)[0]
+
+		#ok, marshall name and segments: 
+		WriteData(fid,prefix,'data',self.name,'name','md.massfluxatgate.name','format','String');
+		WriteData(fid,prefix,'data',self.definitionstring,'name','md.massfluxatgate.definitionstring','format','String');
+		WriteData(fid,prefix,'data',self.segments,'name','md.massfluxatgate.segments','format','DoubleMat','mattype',1);
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/masstransport.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/masstransport.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/masstransport.js	(revision 21239)
@@ -0,0 +1,104 @@
+//MASSTRANSPORT class definition
+//
+//   Usage:
+//      masstransport=new masstransport();
+
+function masstransport (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//Type of stabilization to use 0:nothing 1:artificial_diffusivity 3:Discontinuous Galerkin
+		this.stabilization=1;
+
+		//Factor applied to compute the penalties kappa=max(stiffness matrix)*10^penalty_factor
+		this.penalty_factor=3;
+
+		//Minimum ice thickness that can be used
+		this.min_thickness=1;
+
+		//Hydrostatic adjustment
+		this.hydrostatic_adjustment='Absolute';
+
+		//default output
+		this.requested_outputs=['default'];
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   Masstransport solution parameters:'));
+		fielddisplay(this,'spcthickness','thickness constraints (NaN means no constraint) [m]');
+		fielddisplay(this,'isfreesurface','do we use free surfaces (FS only) are mass conservation');
+		fielddisplay(this,'min_thickness','minimum ice thickness allowed [m]');
+		fielddisplay(this,'hydrostatic_adjustment',"adjustment of ice shelves surface and bed elevations: 'Incremental' or 'Absolute' ");
+		fielddisplay(this,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding, 3: discontinuous Galerkin, 4: Flux Correction Transport');
+
+		console.log(sprintf('\n      %s','Penalty options:'));
+		fielddisplay(this,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset');
+		fielddisplay(this,'vertex_pairing','pairs of vertices that are penalized');
+		fielddisplay(this,'requested_outputs','additional outputs requested');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "masstransport";
+	}// }}}
+    this.extrude = function(md) {//{{{
+        this.spcthickness=project3d(md,'vector',this.spcthickness,'type','node');
+        return this;
+    }//}}}
+		this.checkconsistency = function (md,solution,analyses){  // {{{
+
+			//Early return
+			if(!ArrayAnyEqual(ArrayIsMember('HydrologyShreveAnalysis',analyses),1) | (solution=='TransientSolution' & md.trans.ismasstransport==0)) return; 
+
+			checkfield(md,'fieldname','masstransport.spcthickness','Inf',1,'timeseries',1);
+			checkfield(md,'fieldname','masstransport.isfreesurface','values',[0 ,1]);
+			checkfield(md,'fieldname','masstransport.hydrostatic_adjustment','values',['Absolute', 'Incremental']);
+			checkfield(md,'fieldname','masstransport.stabilization','values',[0,1,2,3,4]);
+			checkfield(md,'fieldname','masstransport.min_thickness','>',0);
+			checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1);
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',this,'fieldname','spcthickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',this,'fieldname','isfreesurface','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','min_thickness','format','Double');
+			WriteData(fid,prefix,'data',this.hydrostatic_adjustment,'format','String','name','md.masstransport.hydrostatic_adjustment');
+			WriteData(fid,prefix,'object',this,'fieldname','stabilization','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','vertex_pairing','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'fieldname','penalty_factor','format','Double');
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}
+			WriteData(fid,prefix,'data',outputs,'name','md.masstransport.requested_outputs','format','StringArray');
+		}//}}}
+		this.defaultoutputs = function(md) { //{{{
+			return ['Thickness','Surface','Base'];
+		}//}}}
+		this.fix=function() { //{{{
+			this.spcthickness=NullFix(this.spcthickness,NaN);
+			this.vertex_pairing=NullFix(this.vertex_pairing,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.spcthickness           = NaN;
+	this.isfreesurface          = 0;
+	this.min_thickness          = 0;
+	this.hydrostatic_adjustment = 0;
+	this.stabilization          = 0;
+	this.vertex_pairing         = NaN;
+	this.penalty_factor         = 0;
+	this.requested_outputs      = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/masstransport.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/masstransport.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/masstransport.m	(revision 21239)
@@ -0,0 +1,147 @@
+%MASSTRANSPORT class definition
+%
+%   Usage:
+%      masstransport=masstransport();
+
+classdef masstransport
+	properties (SetAccess=public) 
+		 spcthickness           = NaN;
+		 isfreesurface          = 0;
+		 min_thickness          = 0;
+		 hydrostatic_adjustment = 0;
+		 stabilization          = 0;
+		 vertex_pairing         = NaN;
+		 penalty_factor         = 0;
+		 requested_outputs      = {};
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. If the input is a struct it is an old version of this class and
+			% old fields must be recovered (make sure they are in the deprecated
+			% model properties)
+
+			if verLessThan('matlab','7.9'),
+				disp('Warning: your matlab version is old and there is a risk that load does not work correctly');
+				disp('         if the model is not loaded correctly, rename temporarily loadobj so that matlab does not use it');
+
+				% This is a Matlab bug: all the fields of md have their default value
+				% Example of error message:
+				% Warning: Error loading an object of class 'model':
+				% Undefined function or method 'exist' for input arguments of type 'cell'
+				%
+				% This has been fixed in MATLAB 7.9 (R2009b) and later versions
+			end
+
+			if isstruct(self)
+				disp('Recovering masstransport from older version');
+				self = structtoobj(masstransport(),self);
+			end
+		end% }}}
+	end
+	methods
+		function self = masstransport(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('masstransport');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.spcthickness=project3d(md,'vector',self.spcthickness,'type','node');
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+
+			list = {'Thickness','Surface','Base'};
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Type of stabilization to use 0:nothing 1:artificial_diffusivity 3:Discontinuous Galerkin
+			self.stabilization=1;
+
+			%Factor applied to compute the penalties kappa=max(stiffness matrix)*10^penalty_factor
+			self.penalty_factor=3;
+
+			%Minimum ice thickness that can be used
+			self.min_thickness=1;
+
+			%Hydrostatic adjustment
+			self.hydrostatic_adjustment='Absolute';
+
+			%default output
+			self.requested_outputs={'default'};
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('MasstransportAnalysis',analyses) |  (strcmp(solution,'TransientSolution') & md.transient.ismasstransport==0), return; end
+
+			md = checkfield(md,'fieldname','masstransport.spcthickness','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','masstransport.isfreesurface','values',[0 1]);
+			md = checkfield(md,'fieldname','masstransport.hydrostatic_adjustment','values',{'Absolute' 'Incremental'});
+			md = checkfield(md,'fieldname','masstransport.stabilization','values',[0 1 2 3 4]);
+			md = checkfield(md,'fieldname','masstransport.min_thickness','>',0);
+			md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1);
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Masstransport solution parameters:'));
+			fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint) [m]');
+			fielddisplay(self,'isfreesurface','do we use free surfaces (FS only) are mass conservation');
+			fielddisplay(self,'min_thickness','minimum ice thickness allowed [m]');
+			fielddisplay(self,'hydrostatic_adjustment','adjustment of ice shelves surface and bed elevations: ''Incremental'' or ''Absolute'' ');
+			fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding, 3: discontinuous Galerkin, 4: Flux Correction Transport');
+
+			disp(sprintf('\n      %s','Penalty options:'));
+			fielddisplay(self,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset');
+			fielddisplay(self,'vertex_pairing','pairs of vertices that are penalized');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'fieldname','spcthickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','isfreesurface','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','min_thickness','format','Double');
+			WriteData(fid,prefix,'data',self.hydrostatic_adjustment,'format','String','name','md.masstransport.hydrostatic_adjustment');
+			WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','vertex_pairing','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'fieldname','penalty_factor','format','Double');
+			
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.masstransport.requested_outputs','format','StringArray');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.masstransport.spcthickness'],self.spcthickness);
+			writejsdouble(fid,[modelname '.masstransport.isfreesurface'],self.isfreesurface);
+			writejsdouble(fid,[modelname '.masstransport.min_thickness'],self.min_thickness);
+			writejsstring(fid,[modelname '.masstransport.hydrostatic_adjustment'],self.hydrostatic_adjustment);
+			writejsdouble(fid,[modelname '.masstransport.stabilization'],self.stabilization);
+			writejs2Darray(fid,[modelname '.masstransport.vertex_pairing'],self.vertex_pairing);
+			writejsdouble(fid,[modelname '.masstransport.penalty_factor'],self.penalty_factor);
+			writejscellstring(fid,[modelname '.masstransport.requested_outputs'],self.requested_outputs);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/masstransport.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/masstransport.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/masstransport.py	(revision 21239)
@@ -0,0 +1,100 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from checkfield import checkfield
+from WriteData import WriteData
+
+class masstransport(object):
+	"""
+	MASSTRANSPORT class definition
+
+	   Usage:
+	      masstransport=masstransport();
+	"""
+
+	def __init__(self): # {{{
+		self.spcthickness           = float('NaN')
+		self.isfreesurface          = 0
+		self.min_thickness          = 0.
+		self.hydrostatic_adjustment = 0
+		self.stabilization          = 0
+		self.vertex_pairing         = float('NaN')
+		self.penalty_factor         = 0
+		self.requested_outputs      = []
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   Masstransport solution parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'isfreesurface','do we use free surfaces (FS only) are mass conservation'))
+		string="%s\n%s"%(string,fielddisplay(self,'min_thickness','minimum ice thickness allowed [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'hydrostatic_adjustment','adjustment of ice shelves surface and bed elevations: ''Incremental'' or ''Absolute'' '))
+		string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding, 3: discontinuous Galerkin, 4: Flux Correction Transport'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.spcthickness=project3d(md,'vector',self.spcthickness,'type','node')
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+
+		return ['Thickness','Surface','Base']
+
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		#Type of stabilization to use 0:nothing 1:artificial_diffusivity 3:Discontinuous Galerkin
+		self.stabilization=1
+
+		#Factor applied to compute the penalties kappa=max(stiffness matrix)*10^penalty_factor
+		self.penalty_factor=3
+
+		#Minimum ice thickness that can be used
+		self.min_thickness=1
+
+		#Hydrostatic adjustment
+		self.hydrostatic_adjustment='Absolute'
+
+		#default output
+		self.requested_outputs=['default']
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if ('MasstransportAnalysis' not in analyses) or (solution=='TransientSolution' and not md.transient.ismasstransport):
+			return md
+
+		md = checkfield(md,'fieldname','masstransport.spcthickness','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','masstransport.isfreesurface','values',[0,1])
+		md = checkfield(md,'fieldname','masstransport.hydrostatic_adjustment','values',['Absolute','Incremental'])
+		md = checkfield(md,'fieldname','masstransport.stabilization','values',[0,1,2,3,4])
+		md = checkfield(md,'fieldname','masstransport.min_thickness','>',0)
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		yts=md.constants.yts
+
+		WriteData(fid,prefix,'object',self,'fieldname','spcthickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'fieldname','isfreesurface','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','min_thickness','format','Double')
+		WriteData(fid,prefix,'data',self.hydrostatic_adjustment,'format','String','name','md.masstransport.hydrostatic_adjustment')
+		WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer')
+		WriteData(fid,prefix,'object',self,'fieldname','vertex_pairing','format','DoubleMat','mattype',3)
+		WriteData(fid,prefix,'object',self,'fieldname','penalty_factor','format','Double')
+
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,prefix,'data',outputs,'name','md.masstransport.requested_outputs','format','StringArray')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/matdamageice.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/matdamageice.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/matdamageice.m	(revision 21239)
@@ -0,0 +1,180 @@
+%MATDAMAGEICE class definition
+%
+%   Usage:
+%      matdamageice=matdamageice();
+
+classdef matdamageice
+	properties (SetAccess=public) 
+		rho_ice                    = 0.;
+		rho_water                  = 0.;
+		rho_freshwater             = 0.;
+		mu_water                   = 0.;
+		heatcapacity               = 0.;
+		latentheat                 = 0.;
+		thermalconductivity        = 0.;
+		temperateiceconductivity   = 0.;
+		meltingpoint               = 0.;
+		beta                       = 0.;
+		mixed_layer_capacity       = 0.;
+		thermal_exchange_velocity  = 0.;
+		rheology_B   = NaN;
+		rheology_n   = NaN;
+		rheology_law = '';
+
+		%gia: 
+		lithosphere_shear_modulus  = 0.;
+		lithosphere_density        = 0.;
+		mantle_shear_modulus       = 0.;
+		mantle_density             = 0.;
+
+		%slr
+		earth_density              = 0;
+
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node');
+			self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element');
+		end % }}}
+		function self = matdamageice(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('matdamageice');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%ice density (kg/m^3)
+			self.rho_ice=917.;
+
+			%ocean water density (kg/m^3)
+			self.rho_water=1023.;
+
+			%fresh water density (kg/m^3)
+			self.rho_freshwater=1000.;
+
+			%water viscosity (N.s/m^2)
+			self.mu_water=0.001787;  
+
+			%ice heat capacity cp (J/kg/K)
+			self.heatcapacity=2093.;
+
+			%ice latent heat of fusion L (J/kg)
+			self.latentheat=3.34*10^5;
+
+			%ice thermal conductivity (W/m/K)
+			self.thermalconductivity=2.4;
+			
+			%wet ice thermal conductivity (W/m/K)
+			self.temperateiceconductivity=.24;
+
+			%the melting point of ice at 1 atmosphere of pressure in K
+			self.meltingpoint=273.15;
+
+			%rate of change of melting point with pressure (K/Pa)
+			self.beta=9.8*10^-8;
+
+			%mixed layer (ice-water interface) heat capacity (J/kg/K)
+			self.mixed_layer_capacity=3974.;
+
+			%thermal exchange velocity (ice-water interface) (m/s)
+			self.thermal_exchange_velocity=1.00*10^-4;
+
+			%Rheology law: what is the temperature dependence of B with T
+			%available: none, paterson and arrhenius
+			self.rheology_law='Paterson';
+
+			% GIA:
+			self.lithosphere_shear_modulus  = 6.7*10^10;  % (Pa)
+			self.lithosphere_density        = 3.32;       % (g/cm^-3)
+			self.mantle_shear_modulus       = 1.45*10^11; % (Pa)
+			self.mantle_density             = 3.34;       % (g/cm^-3)
+
+			%SLR
+			self.earth_density= 5512;  % average density of the Earth, (kg/m^3)
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			md = checkfield(md,'fieldname','materials.rho_ice','>',0);
+			md = checkfield(md,'fieldname','materials.rho_water','>',0);
+			md = checkfield(md,'fieldname','materials.rho_freshwater','>',0);
+			md = checkfield(md,'fieldname','materials.mu_water','>',0);
+			md = checkfield(md,'fieldname','materials.rheology_B','>',0,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','materials.rheology_law','values',{'None' 'Cuffey' 'CuffeyTemperate' 'Paterson' 'Arrhenius' 'LliboutryDuval'});
+
+			if ismember('GiaAnalysis',analyses),
+				md = checkfield(md,'fieldname','materials.lithosphere_shear_modulus','>',0,'numel',1);
+				md = checkfield(md,'fieldname','materials.lithosphere_density','>',0,'numel',1);
+				md = checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',1);
+				md = checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',1);
+			end
+			if ismember('SealevelriseAnalysis',analyses),
+				md = checkfield(md,'fieldname','materials.earth_density','>',0,'numel',1);
+			end
+
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Materials:'));
+
+			fielddisplay(self,'rho_ice','ice density [kg/m^3]');
+			fielddisplay(self,'rho_water','ocean water density [kg/m^3]');
+			fielddisplay(self,'rho_freshwater','fresh water density [kg/m^3]');
+			fielddisplay(self,'mu_water','water viscosity [N s/m^2]');
+			fielddisplay(self,'heatcapacity','heat capacity [J/kg/K]');
+			fielddisplay(self,'thermalconductivity',['ice thermal conductivity [W/m/K]']);
+			fielddisplay(self,'temperateiceconductivity','temperate ice thermal conductivity [W/m/K]');
+			fielddisplay(self,'meltingpoint','melting point of ice at 1atm in K');
+			fielddisplay(self,'latentheat','latent heat of fusion [J/kg]');
+			fielddisplay(self,'beta','rate of change of melting point with pressure [K/Pa]');
+			fielddisplay(self,'mixed_layer_capacity','mixed layer capacity [W/kg/K]');
+			fielddisplay(self,'thermal_exchange_velocity','thermal exchange velocity [m/s]');
+			fielddisplay(self,'rheology_B','flow law parameter [Pa/s^(1/n)]');
+			fielddisplay(self,'rheology_n','Glen''s flow law exponent');
+			fielddisplay(self,'rheology_law',['law for the temperature dependance of the rheology: ''None'', ''Cuffey'', ''CuffeyTemperate'', ''Paterson'', ''Arrhenius'' or ''LliboutryDuval''']);
+			fielddisplay(self,'lithosphere_shear_modulus','Lithosphere shear modulus [Pa]');
+			fielddisplay(self,'lithosphere_density','Lithosphere density [g/cm^-3]');
+			fielddisplay(self,'mantle_shear_modulus','Mantle shear modulus [Pa]');
+			fielddisplay(self,'mantle_density','Mantle density [g/cm^-3]');
+			fielddisplay(self,'earth_density','Mantle density [kg/m^-3]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.materials.type','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_ice','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_water','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_freshwater','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mu_water','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','heatcapacity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','latentheat','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermalconductivity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','meltingpoint','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','beta','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'data',self.rheology_law,'name','md.materials.rheology_law','format','String');
+
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','lithosphere_shear_modulus','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','lithosphere_density','format','Double','scale',10^3);
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10^3);
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','earth_density','format','Double');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/matdamageice.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/matdamageice.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/matdamageice.py	(revision 21239)
@@ -0,0 +1,168 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from checkfield import checkfield
+from WriteData import WriteData
+
+class matdamageice(object):
+	"""
+	MATICE class definition
+
+	   Usage:
+	      matdamagice=matdamageice();
+	"""
+
+	def __init__(self): # {{{
+		self.rho_ice                   = 0.
+		self.rho_water                 = 0.
+		self.rho_freshwater            = 0.
+		self.mu_water                  = 0.
+		self.heatcapacity              = 0.
+		self.latentheat                = 0.
+		self.thermalconductivity       = 0.
+		self.temperateiceconductivity  = 0.
+		self.meltingpoint              = 0.
+		self.beta                      = 0.
+		self.mixed_layer_capacity      = 0.
+		self.thermal_exchange_velocity = 0.
+		self.rheology_B                = float('NaN')
+		self.rheology_n                = float('NaN')
+		self.rheology_law              = ''
+
+		#gia: 
+		self.lithosphere_shear_modulus  = 0.
+		self.lithosphere_density        = 0.
+		self.mantle_shear_modulus       = 0.
+		self.mantle_density             = 0.
+		
+		#SLR
+		self.earth_density= 5512;  # average density of the Earth, (kg/m^3)
+
+
+		self.setdefaultparameters()
+		#}}}
+	def __repr__(self): # {{{
+		string="   Materials:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"rho_ice","ice density [kg/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rho_water","water density [kg/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rho_freshwater","fresh water density [kg/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mu_water","water viscosity [N s/m^2]"))
+		string="%s\n%s"%(string,fielddisplay(self,"heatcapacity","heat capacity [J/kg/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"thermalconductivity","ice thermal conductivity [W/m/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"temperateiceconductivity","temperate ice thermal conductivity [W/m/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"meltingpoint","melting point of ice at 1atm in K"))
+		string="%s\n%s"%(string,fielddisplay(self,"latentheat","latent heat of fusion [J/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"beta","rate of change of melting point with pressure [K/Pa]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mixed_layer_capacity","mixed layer capacity [W/kg/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"thermal_exchange_velocity","thermal exchange velocity [m/s]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rheology_B","flow law parameter [Pa/s^(1/n)]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rheology_n","Glen's flow law exponent"))
+		string="%s\n%s"%(string,fielddisplay(self,"rheology_law","law for the temperature dependance of the rheology: 'None', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius' or 'LliboutryDuval'"))
+		string="%s\n%s"%(string,fielddisplay(self,"lithosphere_shear_modulus","Lithosphere shear modulus [Pa]"))
+		string="%s\n%s"%(string,fielddisplay(self,"lithosphere_density","Lithosphere density [g/cm^-3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mantle_shear_modulus","Mantle shear modulus [Pa]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mantle_density","Mantle density [g/cm^-3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"earth_density","Mantle density [kg/m^-3]"))
+
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node')
+		self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		#ice density (kg/m^3)
+		self.rho_ice=917.
+
+		#ocean water density (kg/m^3)
+		self.rho_water=1023.
+
+		#fresh water density (kg/m^3)
+		self.rho_freshwater=1000.
+
+		#water viscosity (N.s/m^2)
+		self.mu_water=0.001787  
+
+		#ice heat capacity cp (J/kg/K)
+		self.heatcapacity=2093.
+
+		#ice latent heat of fusion L (J/kg)
+		self.latentheat=3.34*10**5
+
+		#ice thermal conductivity (W/m/K)
+		self.thermalconductivity=2.4
+
+		#temperate ice thermal conductivity (W/m/K)
+		self.temperateiceconductivity=0.24
+
+		#the melting point of ice at 1 atmosphere of pressure in K
+		self.meltingpoint=273.15
+
+		#rate of change of melting point with pressure (K/Pa)
+		self.beta=9.8*10**-8
+
+		#mixed layer (ice-water interface) heat capacity (J/kg/K)
+		self.mixed_layer_capacity=3974.
+
+		#thermal exchange velocity (ice-water interface) (m/s)
+		self.thermal_exchange_velocity=1.00*10**-4
+
+		#Rheology law: what is the temperature dependence of B with T
+		#available: none, paterson and arrhenius
+		self.rheology_law='Paterson'
+
+		# GIA:
+		self.lithosphere_shear_modulus  = 6.7*10**10  # (Pa)
+		self.lithosphere_density        = 3.32        # (g/cm^-3)
+		self.mantle_shear_modulus       = 1.45*10**11 # (Pa)
+		self.mantle_density             = 3.34        # (g/cm^-3)
+		
+		#SLR
+		self.earth_density= 5512;  #average density of the Earth, (kg/m^3)
+
+
+		return self
+		#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		md = checkfield(md,'fieldname','materials.rho_ice','>',0)
+		md = checkfield(md,'fieldname','materials.rho_water','>',0)
+		md = checkfield(md,'fieldname','materials.rho_freshwater','>',0)
+		md = checkfield(md,'fieldname','materials.mu_water','>',0)
+		md = checkfield(md,'fieldname','materials.rheology_B','>',0,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements])
+		md = checkfield(md,'fieldname','materials.rheology_law','values',['None','Cuffey', 'CuffeyTemperate', 'Paterson','Arrhenius','LliboutryDuval'])
+		md = checkfield(md,'fieldname','materials.lithosphere_shear_modulus','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.lithosphere_density','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.earth_density','>',0,'numel',[1]);
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'name','md.materials.type','data',1,'format','Integer');
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_ice','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_water','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_freshwater','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','mu_water','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','heatcapacity','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','latentheat','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermalconductivity','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','meltingpoint','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','beta','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2)
+		WriteData(fid,prefix,'data',self.rheology_law,'name','md.materials.rheology_law','format','String')
+
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','lithosphere_shear_modulus','format','Double');
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','lithosphere_density','format','Double','scale',10.**3.);
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double');
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10.**3.);
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','earth_density','format','Double');
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/matestar.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/matestar.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/matestar.m	(revision 21239)
@@ -0,0 +1,216 @@
+%MATICE class definition
+%
+%   Usage:
+%      matestar=matestar();
+
+classdef matestar
+	properties (SetAccess=public) 
+		rho_ice                    = 0.;
+		rho_water                  = 0.;
+		rho_freshwater             = 0.;
+		mu_water                   = 0.;
+		heatcapacity               = 0.;
+		latentheat                 = 0.;
+		thermalconductivity        = 0.;
+		temperateiceconductivity   = 0.;
+		meltingpoint               = 0.;
+		beta                       = 0.;
+		mixed_layer_capacity       = 0.;
+		thermal_exchange_velocity  = 0.;
+		rheology_ko   = NaN;
+		rheology_Ec   = NaN;
+		rheology_Es   = NaN;
+		rheology_law = '';
+
+		%gia: 
+		lithosphere_shear_modulus  = 0.;
+		lithosphere_density        = 0.;
+		mantle_shear_modulus       = 0.;
+		mantle_density             = 0.;
+
+		%slr
+		earth_density              = 0;
+
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.rheology_ko=project3d(md,'vector',self.rheology_ko,'type','node');
+			self.rheology_Ec=project3d(md,'vector',self.rheology_Ec,'type','node');
+			self.rheology_Es=project3d(md,'vector',self.rheology_Es,'type','node');
+		end % }}}
+		function self = matestar(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('matestar');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+					if strcmp(class(inputstruct),'matice'),
+						disp('Converting materials to ESTAR, keeping a Glen type relation');
+						%Set parameters so that we still use a Glen's like flow relation
+						self.rheology_Es = ones(size(inputstruct.rheology_B));
+						self.rheology_Ec = ones(size(inputstruct.rheology_B));
+						self.rheology_ko = inputstruct.rheology_B.^(-3)*3/2;
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%ice density (kg/m^3)
+			self.rho_ice=917.;
+
+			%ocean water density (kg/m^3)
+			self.rho_water=1023.;
+
+			%fresh water density (kg/m^3)
+			self.rho_freshwater=1000.;
+
+			%water viscosity (N.s/m^2)
+			self.mu_water=0.001787;  
+
+			%ice heat capacity cp (J/kg/K)
+			self.heatcapacity=2093.;
+
+			%ice latent heat of fusion L (J/kg)
+			self.latentheat=3.34*10^5;
+
+			%ice thermal conductivity (W/m/K)
+			self.thermalconductivity=2.4;
+			
+			%wet ice thermal conductivity (W/m/K)
+			self.temperateiceconductivity=.24;
+
+			%the melting point of ice at 1 atmosphere of pressure in K
+			self.meltingpoint=273.15;
+
+			%rate of change of melting point with pressure (K/Pa)
+			self.beta=9.8*10^-8;
+
+			%mixed layer (ice-water interface) heat capacity (J/kg/K)
+			self.mixed_layer_capacity=3974.;
+
+			%thermal exchange velocity (ice-water interface) (m/s)
+			self.thermal_exchange_velocity=1.00*10^-4;
+
+			%Rheology law: what is the temperature dependence of B with T
+			%available: none, paterson and arrhenius
+			self.rheology_law='Paterson';
+
+			% GIA:
+			self.lithosphere_shear_modulus  = 6.7*10^10;  % (Pa)
+			self.lithosphere_density        = 3.32;       % (g/cm^-3)
+			self.mantle_shear_modulus       = 1.45*10^11; % (Pa)
+			self.mantle_density             = 3.34;       % (g/cm^-3)
+
+			%SLR
+			self.earth_density= 5512;  % average density of the Earth, (kg/m^3)
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			md = checkfield(md,'fieldname','materials.rho_ice','>',0);
+			md = checkfield(md,'fieldname','materials.rho_water','>',0);
+			md = checkfield(md,'fieldname','materials.rho_freshwater','>',0);
+			md = checkfield(md,'fieldname','materials.mu_water','>',0);
+			md = checkfield(md,'fieldname','materials.rheology_ko','>',0,'size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','materials.rheology_Ec','>',0,'size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','materials.rheology_Es','>',0,'size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','materials.rheology_law','values',{'None' 'Cuffey' 'CuffeyTemperate' 'Paterson' 'Arrhenius' 'LliboutryDuval'});
+
+			if ismember('GiaAnalysis',analyses),
+				md = checkfield(md,'fieldname','materials.lithosphere_shear_modulus','>',0,'numel',1);
+				md = checkfield(md,'fieldname','materials.lithosphere_density','>',0,'numel',1);
+				md = checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',1);
+				md = checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',1);
+			end
+			if ismember('SealevelriseAnalysis',analyses),
+				md = checkfield(md,'fieldname','materials.earth_density','>',0,'numel',1);
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Materials:'));
+
+			fielddisplay(self,'rho_ice','ice density [kg/m^3]');
+			fielddisplay(self,'rho_water','ocean water density [kg/m^3]');
+			fielddisplay(self,'rho_freshwater','fresh water density [kg/m^3]');
+			fielddisplay(self,'mu_water','water viscosity [N s/m^2]');
+			fielddisplay(self,'heatcapacity','heat capacity [J/kg/K]');
+			fielddisplay(self,'thermalconductivity',['ice thermal conductivity [W/m/K]']);
+			fielddisplay(self,'temperateiceconductivity','temperate ice thermal conductivity [W/m/K]');
+			fielddisplay(self,'meltingpoint','melting point of ice at 1atm in K');
+			fielddisplay(self,'latentheat','latent heat of fusion [J/kg]');
+			fielddisplay(self,'beta','rate of change of melting point with pressure [K/Pa]');
+			fielddisplay(self,'mixed_layer_capacity','mixed layer capacity [W/kg/K]');
+			fielddisplay(self,'thermal_exchange_velocity','thermal exchange velocity [m/s]');
+			fielddisplay(self,'rheology_ko','octahedral flow law parameter [s^-1 Pa^-2]');
+			fielddisplay(self,'rheology_Ec','compressive enhancement factor');
+			fielddisplay(self,'rheology_Es','shear enhancement factor');
+			fielddisplay(self,'rheology_law',['law for the temperature dependance of the rheology: ''None'', ''Cuffey'', ''CuffeyTemperate'', ''Paterson'', ''Arrhenius'' or ''LliboutryDuval''']);
+			fielddisplay(self,'lithosphere_shear_modulus','Lithosphere shear modulus [Pa]');
+			fielddisplay(self,'lithosphere_density','Lithosphere density [g/cm^-3]');
+			fielddisplay(self,'mantle_shear_modulus','Mantle shear modulus [Pa]');
+			fielddisplay(self,'mantle_density','Mantle density [g/cm^-3]');
+			fielddisplay(self,'earth_density','Mantle density [kg/m^-3]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.materials.type','data',2,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_ice','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_water','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_freshwater','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mu_water','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','heatcapacity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','latentheat','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermalconductivity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','meltingpoint','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','beta','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_ko','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_Ec','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_Es','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'data',self.rheology_law,'name','md.materials.rheology_law','format','String');
+
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','lithosphere_shear_modulus','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','lithosphere_density','format','Double','scale',10^3);
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10^3);
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','earth_density','format','Double');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.materials.rho_ice'],self.rho_ice);
+			writejsdouble(fid,[modelname '.materials.rho_water'],self.rho_water);
+			writejsdouble(fid,[modelname '.materials.rho_freshwater'],self.rho_freshwater);
+			writejsdouble(fid,[modelname '.materials.mu_water'],self.mu_water);
+			writejsdouble(fid,[modelname '.materials.heatcapacity'],self.heatcapacity);
+			writejsdouble(fid,[modelname '.materials.latentheat'],self.latentheat);
+			writejsdouble(fid,[modelname '.materials.thermalconductivity'],self.thermalconductivity);
+			writejsdouble(fid,[modelname '.materials.temperateiceconductivity'],self.temperateiceconductivity);
+			writejsdouble(fid,[modelname '.materials.meltingpoint'],self.meltingpoint);
+			writejsdouble(fid,[modelname '.materials.beta'],self.beta);
+			writejsdouble(fid,[modelname '.materials.mixed_layer_capacity'],self.mixed_layer_capacity);
+			writejsdouble(fid,[modelname '.materials.thermal_exchange_velocity'],self.thermal_exchange_velocity);
+			writejsdouble(fid,[modelname '.materials.mixed_layer_capacity'],self.mixed_layer_capacity);
+			writejs1Darray(fid,[modelname '.materials.rheology_ko'],self.rheology_ko);
+			writejs1Darray(fid,[modelname '.materials.rheology_Ec'],self.rheology_Ec);
+			writejs1Darray(fid,[modelname '.materials.rheology_Es'],self.rheology_Es);
+			writejsstring(fid,[modelname '.materials.rheology_law'],self.rheology_law);
+			writejsdouble(fid,[modelname '.materials.lithosphere_shear_modulus'],self.lithosphere_shear_modulus);
+			writejsdouble(fid,[modelname '.materials.lithosphere_density'],self.lithosphere_density);
+			writejsdouble(fid,[modelname '.materials.mantle_shear_modulus'],self.mantle_shear_modulus);
+			writejsdouble(fid,[modelname '.materials.mantle_density'],self.mantle_density);
+			writejsdouble(fid,[modelname '.materials.earth_density'],self.earth_density);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/matice.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/matice.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/matice.js	(revision 21239)
@@ -0,0 +1,170 @@
+//MATICE class definition
+//
+//   Usage:
+//      matice=matice();
+
+function matice(){
+	//methods
+		this.setdefaultparameters = function(){ // {{{
+
+			//ice density (kg/m^3)
+			this.rho_ice=917.;
+
+			//ocean water density (kg/m^3)
+			this.rho_water=1023.;
+
+			//fresh water density (kg/m^3)
+			this.rho_freshwater=1000.;
+
+			//water viscosity (N.s/m^2)
+			this.mu_water=0.001787;  
+
+			//ice heat capacity cp (J/kg/K)
+			this.heatcapacity=2093.;
+
+			//ice latent heat of fusion L (J/kg)
+			this.latentheat=3.34*Math.pow(10,5);
+
+			//ice thermal conductivity (W/m/K)
+			this.thermalconductivity=2.4;
+			
+			//wet ice thermal conductivity (W/m/K)
+			this.temperateiceconductivity=.24;
+
+			//the melting point of ice at 1 atmosphere of pressure in K
+			this.meltingpoint=273.15;
+
+			//rate of change of melting point with pressure (K/Pa)
+			this.beta=9.8*Math.pow(10,-8);
+
+			//mixed layer (ice-water interface) heat capacity (J/kg/K)
+			this.mixed_layer_capacity=3974.;
+
+			//thermal exchange velocity (ice-water interface) (m/s)
+			this.thermal_exchange_velocity=1.00*Math.pow(10,-4);
+
+			//Rheology law: what is the temperature dependence of B with T
+			//available: none, paterson and arrhenius
+			this.rheology_law='Paterson';
+
+			// GIA:
+			this.lithosphere_shear_modulus  = 6.7*Math.pow(10,10);  // (Pa)
+			this.lithosphere_density        = 3.32;       // (g/cm^-3)
+			this.mantle_shear_modulus       = 1.45*Math.pow(10,11); // (Pa)
+			this.mantle_density             = 3.34;       // (g/cm^-3)
+			
+			//SLR
+			this.earth_density= 5512;  // average density of the Earth, (kg/m^3)
+
+
+		} //}}}
+		this.disp = function() {// {{{
+			console.log(sprintf('   Materials:'));
+
+			fielddisplay(this,'rho_ice','ice density [kg/m^3]');
+			fielddisplay(this,'rho_water','ocean water density [kg/m^3]');
+			fielddisplay(this,'rho_freshwater','fresh water density [kg/m^3]');
+			fielddisplay(this,'mu_water','water viscosity [N s/m^2]');
+			fielddisplay(this,'heatcapacity','heat capacity [J/kg/K]');
+			fielddisplay(this,'thermalconductivity','ice thermal conductivity [W/m/K]');
+			fielddisplay(this,'temperateiceconductivity','temperate ice thermal conductivity [W/m/K]');
+			fielddisplay(this,'meltingpoint','melting point of ice at 1atm in K');
+			fielddisplay(this,'latentheat','latent heat of fusion [J/kg]');
+			fielddisplay(this,'beta','rate of change of melting point with pressure [K/Pa]');
+			fielddisplay(this,'mixed_layer_capacity','mixed layer capacity [W/kg/K]');
+			fielddisplay(this,'thermal_exchange_velocity','thermal exchange velocity [m/s]');
+			fielddisplay(this,'rheology_B','flow law parameter [Pa/s^(1/n)]');
+			fielddisplay(this,'rheology_n',"Glen's flow law exponent");
+			fielddisplay(this,'rheology_law',"law for the temperature dependance of the rheology: 'None', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius' or 'LliboutryDuval'");
+			fielddisplay(this,'lithosphere_shear_modulus','Lithosphere shear modulus [Pa]');
+			fielddisplay(this,'lithosphere_density','Lithosphere density [g/cm^-3]');
+			fielddisplay(this,'mantle_shear_modulus','Mantle shear modulus [Pa]');
+			fielddisplay(this,'mantle_density','Mantle density [g/cm^-3]');
+			fielddisplay(this,'earth_density','Mantle density [kg/m^-3]');
+
+		} // }}}
+        this.extrude = function(md) {//{{{
+            this.rheology_B=project3d(md,'vector',this.rheology_B,'type','node');
+            this.rheology_n=project3d(md,'vector',this.rheology_n,'type','element');
+            return this;
+        }//}}}
+		this.classname = function() {// {{{
+			return "matice";
+		} // }}}
+		this.checkconsistency = function(md,solution,analyses) { // {{{
+			checkfield(md,'fieldname','materials.rho_ice','>',0);
+			checkfield(md,'fieldname','materials.rho_water','>',0);
+			checkfield(md,'fieldname','materials.rho_freshwater','>',0);
+			checkfield(md,'fieldname','materials.mu_water','>',0);
+			checkfield(md,'fieldname','materials.rheology_B','>',0,'timeseries',1,'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements,1]);
+			checkfield(md,'fieldname','materials.rheology_law','values',['None','Cuffey','CuffeyTemperate','Paterson','Arrhenius','LliboutryDuval']);
+
+			if(ArrayAnyEqual(ArrayIsMember('GiaAnalysis',analyses),1)){
+				checkfield(md,'fieldname','materials.lithosphere_shear_modulus','>',0,'numel',1);
+				checkfield(md,'fieldname','materials.lithosphere_density','>',0,'numel',1);
+				checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',1);
+				checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',1);
+			}
+			if (ArrayAnyEqual(ArrayIsMember('SealevelriseAnalysis',analyses),1)){
+				checkfield(md,'fieldname','materials.earth_density','>',0,'numel',1);
+			}
+
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'name','md.materials.type','data',3,'format','Integer');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','rho_ice','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','rho_water','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','rho_freshwater','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','mu_water','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','heatcapacity','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','latentheat','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','thermalconductivity','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','temperateiceconductivity','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','meltingpoint','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','beta','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','mixed_layer_capacity','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','thermal_exchange_velocity','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'data',this.rheology_law,'name','md.materials.rheology_law','format','String');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','lithosphere_shear_modulus','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','lithosphere_density','format','Double','scale',Math.pow(10,3));
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','mantle_shear_modulus','format','Double');
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','mantle_density','format','Double','scale',Math.pow(10,3));
+			WriteData(fid,prefix,'object',this,'class','materials','fieldname','earth_density','format','Double');
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+		this.rho_ice                    = 0.;
+		this.rho_water                  = 0.;
+		this.rho_freshwater             = 0.;
+		this.mu_water                   = 0.;
+		this.heatcapacity               = 0.;
+		this.latentheat                 = 0.;
+		this.thermalconductivity        = 0.;
+		this.temperateiceconductivity   = 0.;
+		this.meltingpoint               = 0.;
+		this.beta                       = 0.;
+		this.mixed_layer_capacity       = 0.;
+		this.thermal_exchange_velocity  = 0.;
+		this.rheology_B   = NaN;
+		this.rheology_n   = NaN;
+		this.rheology_law = '';
+
+		//gia: 
+		this.lithosphere_shear_modulus  = 0.;
+		this.lithosphere_density        = 0.;
+		this.mantle_shear_modulus       = 0.;
+		this.mantle_density             = 0.;
+
+		//SLR
+		this.earth_density= 5512;  // average density of the Earth, (kg/m^3)
+
+		this.setdefaultparameters();
+		//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/matice.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/matice.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/matice.m	(revision 21239)
@@ -0,0 +1,203 @@
+%MATICE class definition
+%
+%   Usage:
+%      matice=matice();
+
+classdef matice
+	properties (SetAccess=public) 
+		rho_ice                    = 0.;
+		rho_water                  = 0.;
+		rho_freshwater             = 0.;
+		mu_water                   = 0.;
+		heatcapacity               = 0.;
+		latentheat                 = 0.;
+		thermalconductivity        = 0.;
+		temperateiceconductivity   = 0.;
+		meltingpoint               = 0.;
+		beta                       = 0.;
+		mixed_layer_capacity       = 0.;
+		thermal_exchange_velocity  = 0.;
+		rheology_B   = NaN;
+		rheology_n   = NaN;
+		rheology_law = '';
+
+		%gia: 
+		lithosphere_shear_modulus  = 0.;
+		lithosphere_density        = 0.;
+		mantle_shear_modulus       = 0.;
+		mantle_density             = 0.;
+
+		%slr
+		earth_density              = 0;
+
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node');
+			self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element');
+		end % }}}
+		function self = matice(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('matice');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%ice density (kg/m^3)
+			self.rho_ice=917.;
+
+			%ocean water density (kg/m^3)
+			self.rho_water=1023.;
+
+			%fresh water density (kg/m^3)
+			self.rho_freshwater=1000.;
+
+			%water viscosity (N.s/m^2)
+			self.mu_water=0.001787;  
+
+			%ice heat capacity cp (J/kg/K)
+			self.heatcapacity=2093.;
+
+			%ice latent heat of fusion L (J/kg)
+			self.latentheat=3.34*10^5;
+
+			%ice thermal conductivity (W/m/K)
+			self.thermalconductivity=2.4;
+			
+			%wet ice thermal conductivity (W/m/K)
+			self.temperateiceconductivity=.24;
+
+			%the melting point of ice at 1 atmosphere of pressure in K
+			self.meltingpoint=273.15;
+
+			%rate of change of melting point with pressure (K/Pa)
+			self.beta=9.8*10^-8;
+
+			%mixed layer (ice-water interface) heat capacity (J/kg/K)
+			self.mixed_layer_capacity=3974.;
+
+			%thermal exchange velocity (ice-water interface) (m/s)
+			self.thermal_exchange_velocity=1.00*10^-4;
+
+			%Rheology law: what is the temperature dependence of B with T
+			%available: none, paterson and arrhenius
+			self.rheology_law='Paterson';
+
+			% GIA:
+			self.lithosphere_shear_modulus  = 6.7*10^10;  % (Pa)
+			self.lithosphere_density        = 3.32;       % (g/cm^-3)
+			self.mantle_shear_modulus       = 1.45*10^11; % (Pa)
+			self.mantle_density             = 3.34;       % (g/cm^-3)
+
+			%SLR
+			self.earth_density= 5512;  % average density of the Earth, (kg/m^3)
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			md = checkfield(md,'fieldname','materials.rho_ice','>',0);
+			md = checkfield(md,'fieldname','materials.rho_water','>',0);
+			md = checkfield(md,'fieldname','materials.rho_freshwater','>',0);
+			md = checkfield(md,'fieldname','materials.mu_water','>',0);
+			md = checkfield(md,'fieldname','materials.rheology_B','>',0,'timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','materials.rheology_law','values',{'None' 'Cuffey' 'CuffeyTemperate' 'Paterson' 'Arrhenius' 'LliboutryDuval'});
+
+			if ismember('GiaAnalysis',analyses),
+				md = checkfield(md,'fieldname','materials.lithosphere_shear_modulus','>',0,'numel',1);
+				md = checkfield(md,'fieldname','materials.lithosphere_density','>',0,'numel',1);
+				md = checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',1);
+				md = checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',1);
+			end
+			if ismember('SealevelriseAnalysis',analyses),
+				md = checkfield(md,'fieldname','materials.earth_density','>',0,'numel',1);
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Materials:'));
+
+			fielddisplay(self,'rho_ice','ice density [kg/m^3]');
+			fielddisplay(self,'rho_water','ocean water density [kg/m^3]');
+			fielddisplay(self,'rho_freshwater','fresh water density [kg/m^3]');
+			fielddisplay(self,'mu_water','water viscosity [N s/m^2]');
+			fielddisplay(self,'heatcapacity','heat capacity [J/kg/K]');
+			fielddisplay(self,'thermalconductivity',['ice thermal conductivity [W/m/K]']);
+			fielddisplay(self,'temperateiceconductivity','temperate ice thermal conductivity [W/m/K]');
+			fielddisplay(self,'meltingpoint','melting point of ice at 1atm in K');
+			fielddisplay(self,'latentheat','latent heat of fusion [J/kg]');
+			fielddisplay(self,'beta','rate of change of melting point with pressure [K/Pa]');
+			fielddisplay(self,'mixed_layer_capacity','mixed layer capacity [W/kg/K]');
+			fielddisplay(self,'thermal_exchange_velocity','thermal exchange velocity [m/s]');
+			fielddisplay(self,'rheology_B','flow law parameter [Pa/s^(1/n)]');
+			fielddisplay(self,'rheology_n','Glen''s flow law exponent');
+			fielddisplay(self,'rheology_law',['law for the temperature dependance of the rheology: ''None'', ''Cuffey'', ''CuffeyTemperate'', ''Paterson'', ''Arrhenius'' or ''LliboutryDuval''']);
+			fielddisplay(self,'lithosphere_shear_modulus','Lithosphere shear modulus [Pa]');
+			fielddisplay(self,'lithosphere_density','Lithosphere density [g/cm^-3]');
+			fielddisplay(self,'mantle_shear_modulus','Mantle shear modulus [Pa]');
+			fielddisplay(self,'mantle_density','Mantle density [g/cm^-3]');
+			fielddisplay(self,'earth_density','Mantle density [kg/m^-3]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.materials.type','data',3,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_ice','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_water','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_freshwater','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mu_water','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','heatcapacity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','latentheat','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermalconductivity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','meltingpoint','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','beta','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'data',self.rheology_law,'name','md.materials.rheology_law','format','String');
+
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','lithosphere_shear_modulus','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','lithosphere_density','format','Double','scale',10^3);
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10^3);
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','earth_density','format','Double');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.materials.rho_ice'],self.rho_ice);
+			writejsdouble(fid,[modelname '.materials.rho_water'],self.rho_water);
+			writejsdouble(fid,[modelname '.materials.rho_freshwater'],self.rho_freshwater);
+			writejsdouble(fid,[modelname '.materials.mu_water'],self.mu_water);
+			writejsdouble(fid,[modelname '.materials.heatcapacity'],self.heatcapacity);
+			writejsdouble(fid,[modelname '.materials.latentheat'],self.latentheat);
+			writejsdouble(fid,[modelname '.materials.thermalconductivity'],self.thermalconductivity);
+			writejsdouble(fid,[modelname '.materials.temperateiceconductivity'],self.temperateiceconductivity);
+			writejsdouble(fid,[modelname '.materials.meltingpoint'],self.meltingpoint);
+			writejsdouble(fid,[modelname '.materials.beta'],self.beta);
+			writejsdouble(fid,[modelname '.materials.mixed_layer_capacity'],self.mixed_layer_capacity);
+			writejsdouble(fid,[modelname '.materials.thermal_exchange_velocity'],self.thermal_exchange_velocity);
+			writejsdouble(fid,[modelname '.materials.mixed_layer_capacity'],self.mixed_layer_capacity);
+			writejs1Darray(fid,[modelname '.materials.rheology_B'],self.rheology_B);
+			writejs1Darray(fid,[modelname '.materials.rheology_n'],self.rheology_n);
+			writejsstring(fid,[modelname '.materials.rheology_law'],self.rheology_law);
+			writejsdouble(fid,[modelname '.materials.lithosphere_shear_modulus'],self.lithosphere_shear_modulus);
+			writejsdouble(fid,[modelname '.materials.lithosphere_density'],self.lithosphere_density);
+			writejsdouble(fid,[modelname '.materials.mantle_shear_modulus'],self.mantle_shear_modulus);
+			writejsdouble(fid,[modelname '.materials.mantle_density'],self.mantle_density);
+			writejsdouble(fid,[modelname '.materials.earth_density'],self.earth_density);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/matice.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/matice.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/matice.py	(revision 21239)
@@ -0,0 +1,169 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from checkfield import checkfield
+from WriteData import WriteData
+
+class matice(object):
+	"""
+	MATICE class definition
+
+	   Usage:
+	      matice=matice();
+	"""
+
+	def __init__(self): # {{{
+		self.rho_ice                   = 0.
+		self.rho_water                 = 0.
+		self.rho_freshwater            = 0.
+		self.mu_water                  = 0.
+		self.heatcapacity              = 0.
+		self.latentheat                = 0.
+		self.thermalconductivity       = 0.
+		self.temperateiceconductivity  = 0.
+		self.meltingpoint              = 0.
+		self.beta                      = 0.
+		self.mixed_layer_capacity      = 0.
+		self.thermal_exchange_velocity = 0.
+		self.rheology_B                = float('NaN')
+		self.rheology_n                = float('NaN')
+		self.rheology_law              = ''
+
+		#gia: 
+		self.lithosphere_shear_modulus  = 0.
+		self.lithosphere_density        = 0.
+		self.mantle_shear_modulus       = 0.
+		self.mantle_density             = 0.  
+		
+		#SLR
+		self.earth_density= 5512;  
+
+
+
+		self.setdefaultparameters()
+		#}}}
+	def __repr__(self): # {{{
+		string="   Materials:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"rho_ice","ice density [kg/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rho_water","water density [kg/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rho_freshwater","fresh water density [kg/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mu_water","water viscosity [N s/m^2]"))
+		string="%s\n%s"%(string,fielddisplay(self,"heatcapacity","heat capacity [J/kg/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"thermalconductivity","ice thermal conductivity [W/m/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"temperateiceconductivity","temperate ice thermal conductivity [W/m/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"meltingpoint","melting point of ice at 1atm in K"))
+		string="%s\n%s"%(string,fielddisplay(self,"latentheat","latent heat of fusion [J/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"beta","rate of change of melting point with pressure [K/Pa]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mixed_layer_capacity","mixed layer capacity [W/kg/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"thermal_exchange_velocity","thermal exchange velocity [m/s]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rheology_B","flow law parameter [Pa/s^(1/n)]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rheology_n","Glen's flow law exponent"))
+		string="%s\n%s"%(string,fielddisplay(self,"rheology_law","law for the temperature dependance of the rheology: 'None', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius' or 'LliboutryDuval'"))
+		string="%s\n%s"%(string,fielddisplay(self,"lithosphere_shear_modulus","Lithosphere shear modulus [Pa]"))
+		string="%s\n%s"%(string,fielddisplay(self,"lithosphere_density","Lithosphere density [g/cm^-3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mantle_shear_modulus","Mantle shear modulus [Pa]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mantle_density","Mantle density [g/cm^-3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"earth_density","Mantle density [kg/m^-3]"))
+
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node')
+		self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		#ice density (kg/m^3)
+		self.rho_ice=917.
+
+		#ocean water density (kg/m^3)
+		self.rho_water=1023.
+
+		#fresh water density (kg/m^3)
+		self.rho_freshwater=1000.
+
+		#water viscosity (N.s/m^2)
+		self.mu_water=0.001787  
+
+		#ice heat capacity cp (J/kg/K)
+		self.heatcapacity=2093.
+
+		#ice latent heat of fusion L (J/kg)
+		self.latentheat=3.34*10**5
+
+		#ice thermal conductivity (W/m/K)
+		self.thermalconductivity=2.4
+
+		#temperate ice thermal conductivity (W/m/K)
+		self.temperateiceconductivity=0.24
+
+		#the melting point of ice at 1 atmosphere of pressure in K
+		self.meltingpoint=273.15
+
+		#rate of change of melting point with pressure (K/Pa)
+		self.beta=9.8*10**-8
+
+		#mixed layer (ice-water interface) heat capacity (J/kg/K)
+		self.mixed_layer_capacity=3974.
+
+		#thermal exchange velocity (ice-water interface) (m/s)
+		self.thermal_exchange_velocity=1.00*10**-4
+
+		#Rheology law: what is the temperature dependence of B with T
+		#available: none, paterson and arrhenius
+		self.rheology_law='Paterson'
+
+		# GIA:
+		self.lithosphere_shear_modulus  = 6.7*10**10  # (Pa)
+		self.lithosphere_density        = 3.32        # (g/cm^-3)
+		self.mantle_shear_modulus       = 1.45*10**11 # (Pa)
+		self.mantle_density             = 3.34        # (g/cm^-3)
+		
+		#SLR
+		self.earth_density= 5512;  # average density of the Earth, (kg/m^3)
+
+
+		return self
+		#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		md = checkfield(md,'fieldname','materials.rho_ice','>',0)
+		md = checkfield(md,'fieldname','materials.rho_water','>',0)
+		md = checkfield(md,'fieldname','materials.rho_freshwater','>',0)
+		md = checkfield(md,'fieldname','materials.mu_water','>',0)
+		md = checkfield(md,'fieldname','materials.rheology_B','>',0,'timeseries',1,'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements])
+		md = checkfield(md,'fieldname','materials.rheology_law','values',['None','Cuffey','CuffeyTemperate','Paterson','Arrhenius','LliboutryDuval'])
+		md = checkfield(md,'fieldname','materials.lithosphere_shear_modulus','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.lithosphere_density','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.earth_density','>',0,'numel',[1]);
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'name','md.materials.type','data',3,'format','Integer');
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_ice','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_water','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_freshwater','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','mu_water','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','heatcapacity','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','latentheat','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermalconductivity','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','meltingpoint','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','beta','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double')
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2)
+		WriteData(fid,prefix,'data',self.rheology_law,'name','md.materials.rheology_law','format','String')
+
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','lithosphere_shear_modulus','format','Double');
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','lithosphere_density','format','Double','scale',10.**3.);
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double');
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10.**3.);
+		WriteData(fid,prefix,'object',self,'class','materials','fieldname','earth_density','format','Double');
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh2d.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh2d.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh2d.js	(revision 21239)
@@ -0,0 +1,135 @@
+//MESH2D class definition
+//
+//   Usage:
+//      mesh2d= new mesh2d();
+
+function mesh2d () {
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+
+			//the connectivity is the averaged number of nodes linked to a
+			//given node through an edge. This connectivity is used to initially
+			//allocate memory to the stiffness matrix. A value of 16 seems to
+			//give a good memory/time ration. This value can be checked in
+			//trunk/test/Miscellaneous/runme.m
+			this.average_vertex_connectivity=25;
+		}
+		// }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   2D tria Mesh (horizontal):")); 
+
+			console.log(sprintf("\n      Elements and vertices:"));
+			fielddisplay(this,"numberofelements","number of elements");
+			fielddisplay(this,"numberofvertices","number of vertices");
+			fielddisplay(this,"elements","vertex indices of the mesh elements");
+			fielddisplay(this,"x","vertices x coordinate [m]");
+			fielddisplay(this,"y","vertices y coordinate [m]");
+			fielddisplay(this,"edges","edges of the 2d mesh (vertex1 vertex2 element1 element2)");
+			fielddisplay(this,"numberofedges","number of edges of the 2d mesh");
+
+			console.log(sprintf("\n      Properties:"));
+			fielddisplay(this,"vertexonboundary","vertices on the boundary of the domain flag list");
+			fielddisplay(this,"segments","edges on domain boundary (vertex1 vertex2 element)");
+			fielddisplay(this,"segmentmarkers","number associated to each segment");
+			fielddisplay(this,"vertexconnectivity","list of vertices connected to vertex_i");
+			fielddisplay(this,"elementconnectivity","list of vertices connected to element_i");
+			fielddisplay(this,"average_vertex_connectivity","average number of vertices connected to one vertex");
+
+			console.log(sprintf("\n      Extracted model:"));
+			fielddisplay(this,"extractedvertices","vertices extracted from the model");
+			fielddisplay(this,"extractedelements","elements extracted from the model");
+
+			console.log(sprintf("\n      Projection:"));
+			fielddisplay(this,"lat","vertices latitude [degrees]");
+			fielddisplay(this,"long","vertices longitude [degrees]");
+			fielddisplay(this,"epsg","EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)");
+		} //}}}
+		this.classname = function () { //{{{
+			return "mesh2d";
+		} //}}}
+		this.domaintype=function (){ // {{{
+			return '2Dhorizontal';
+		} // }}}
+		this.dimension = function () { //{{{
+			return 2;
+		} //}}}
+		this.elementtype = function() {//{{{
+			return 'Tria';
+		} // }}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',NewArrayFillIncrement(md.mesh.numberofvertices,1,1));
+			checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements, 3]);
+			if(ArrayAnyEqual(ArrayIsMember(NewArrayFillIncrement(md.mesh.numberofvertices,1,1),ArraySort(ArrayUnique(MatrixToList(md.mesh.elements)))),0)){
+				md.checkmessage('orphan nodes have been found. Check the mesh outline');
+			}
+			checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message',"'mesh.average_vertex_connectivity' should be at least 9 in 2d");
+			checkfield(md,'fieldname','mesh.segments','NaN',1,'Inf',1,'>',0,'size',[NaN, 3]);
+
+			switch(solution){
+			case 'ThermalSolution':
+				checkmessage(md,'thermal not supported for 2d mesh');
+				break;
+			default:
+				break
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'name','md.mesh.domain_type','data','Domain' + this.domaintype(),'format','String');
+			WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',this.dimension(),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.elementtype','data',this.elementtype(),'format','String');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'name','md.mesh.z','data',NewArrayFill(this.numberofvertices,0),'format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','vertexonboundary','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','segments','format','DoubleMat','mattype',3);
+		}//}}}
+		this.fix=function() { //{{{
+			//Transform objects into Float64Arrays:
+			this.x=FloatFix(this.x,this.numberofvertices); 
+			this.y=FloatFix(this.y,this.numberofvertices); 
+			this.edges=NullFix(this.edges,NaN);
+			this.vertexonboundary=FloatFix(this.vertexonboundary,this.numberofvertices); 
+			this.segmentmarkers=FloatFix(this.segmentmarkers,this.segments.length);
+			this.extractedvertices=NullFix(this.extractedvertices,NaN);
+			this.extractedelements=NullFix(this.extractedelements,NaN);
+			this.lat=NullFix(this.lat,NaN);
+			this.long=NullFix(this.long,NaN);
+		}//}}}
+
+	//properties 
+	// {{{
+		this.x                           = NaN;
+		this.y                           = NaN;
+		this.elements                    = NaN;
+		this.numberofelements            = 0;
+		this.numberofvertices            = 0;
+		this.numberofedges               = 0;
+
+		this.lat                         = NaN;
+		this.long                        = NaN;
+		this.epsg                        = 0;
+
+		this.vertexonboundary            = NaN;
+
+		this.edges                       = NaN;
+		this.segments                    = NaN;
+		this.segmentmarkers              = NaN;
+		this.vertexconnectivity          = NaN;
+		this.elementconnectivity         = NaN;
+		this.average_vertex_connectivity = 0;
+
+		this.extractedvertices           = NaN;
+		this.extractedelements           = NaN;
+
+		this.setdefaultparameters();
+		//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh2d.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh2d.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh2d.m	(revision 21239)
@@ -0,0 +1,174 @@
+%MESH2D class definition
+%
+%   Usage:
+%      mesh2d=mesh2d();
+
+classdef mesh2d
+	properties (SetAccess=public) 
+		x                           = NaN;
+		y                           = NaN;
+		elements                    = NaN;
+		numberofelements            = 0;
+		numberofvertices            = 0;
+		numberofedges               = 0;
+
+		lat                         = NaN;
+		long                        = NaN;
+		epsg                        = 0;
+
+		vertexonboundary            = NaN;
+
+		edges                       = NaN;
+		segments                    = NaN;
+		segmentmarkers              = NaN;
+		vertexconnectivity          = NaN;
+		elementconnectivity         = NaN;
+		average_vertex_connectivity = 0;
+
+		extractedvertices           = NaN;
+		extractedelements           = NaN;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model selfect is
+			% loaded. Update old properties here
+
+			%2014 Oct. 1st
+			if isstruct(self),
+				oldself=self;
+				%Assign property values from struct
+				self=structtoobj(mesh2d(),oldself);
+				if isfield(oldself,'hemisphere'),
+					disp('md.mesh.hemisphere has been automatically converted to EPSG code');
+					if strcmpi(oldself.hemisphere,'n'),
+						self.epsg=3413;
+					else
+						self.epsg=3031;
+					end
+				end
+			end
+
+		end% }}}
+	end
+	methods
+		function self = mesh2d(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=mesh2d();
+					object=varargin{1};
+					fields=fieldnames(object);
+					for i=1:length(fields)
+						field=fields{i};
+						if ismember(field,properties('mesh2d')),
+							self.(field)=object.(field);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%the connectivity is the averaged number of nodes linked to a
+			%given node through an edge. This connectivity is used to initially
+			%allocate memory to the stiffness matrix. A value of 16 seems to
+			%give a good memory/time ration. This value can be checked in
+			%trunk/test/Miscellaneous/runme.m
+			self.average_vertex_connectivity=25;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',1:md.mesh.numberofvertices);
+			md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements 3]);
+			if any(~ismember(1:md.mesh.numberofvertices,sort(unique(md.mesh.elements(:)))));
+				md = checkmessage(md,'orphan nodes have been found. Check the mesh outline');
+			end
+			md = checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			md = checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message','''mesh.average_vertex_connectivity'' should be at least 9 in 2d');
+			md = checkfield(md,'fieldname','mesh.segments','NaN',1,'Inf',1,'>',0,'size',[NaN 3]);
+
+			if strcmp(solution,'ThermalSolution')
+					md = checkmessage(md,'thermal not supported for 2d mesh');
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   2D tria Mesh (horizontal):')); 
+
+			disp(sprintf('\n      Elements and vertices:'));
+			fielddisplay(self,'numberofelements','number of elements');
+			fielddisplay(self,'numberofvertices','number of vertices');
+			fielddisplay(self,'elements','vertex indices of the mesh elements');
+			fielddisplay(self,'x','vertices x coordinate [m]');
+			fielddisplay(self,'y','vertices y coordinate [m]');
+			fielddisplay(self,'edges','edges of the 2d mesh (vertex1 vertex2 element1 element2)');
+			fielddisplay(self,'numberofedges','number of edges of the 2d mesh');
+
+			disp(sprintf('\n      Properties:'));
+			fielddisplay(self,'vertexonboundary','vertices on the boundary of the domain flag list');
+			fielddisplay(self,'segments','edges on domain boundary (vertex1 vertex2 element)');
+			fielddisplay(self,'segmentmarkers','number associated to each segment');
+			fielddisplay(self,'vertexconnectivity','list of vertices connected to vertex_i');
+			fielddisplay(self,'elementconnectivity','list of vertices connected to element_i');
+			fielddisplay(self,'average_vertex_connectivity','average number of vertices connected to one vertex');
+
+			disp(sprintf('\n      Extracted model:'));
+			fielddisplay(self,'extractedvertices','vertices extracted from the model');
+			fielddisplay(self,'extractedelements','elements extracted from the model');
+
+			disp(sprintf('\n      Projection:'));
+			fielddisplay(self,'lat','vertices latitude [degrees]');
+			fielddisplay(self,'long','vertices longitude [degrees]');
+			fielddisplay(self,'epsg','EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.mesh.domain_type','data',['Domain' domaintype(self)],'format','String');
+			WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',dimension(self),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.elementtype','data',elementtype(self),'format','String');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'name','md.mesh.z','data',zeros(self.numberofvertices,1),'format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonboundary','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','segments','format','DoubleMat','mattype',3);
+		end % }}}
+		function t = domaintype(self) % {{{
+			t = '2Dhorizontal';
+		end % }}}
+		function d = dimension(self) % {{{
+			d = 2;
+		end % }}}
+		function s = elementtype(self) % {{{
+			s = 'Tria';
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.mesh.x'],self.x);
+			writejs1Darray(fid,[modelname '.mesh.y'],self.y);
+			writejs2Darray(fid,[modelname '.mesh.elements'],self.elements);
+			writejsdouble(fid,[modelname '.mesh.numberofelements'],self.numberofelements);
+			writejsdouble(fid,[modelname '.mesh.numberofvertices'],self.numberofvertices);
+			writejsdouble(fid,[modelname '.mesh.numberofedges'],self.numberofedges);
+			writejs1Darray(fid,[modelname '.mesh.lat'],self.lat);
+			writejs1Darray(fid,[modelname '.mesh.long'],self.long);
+			writejsdouble(fid,[modelname '.mesh.epsg'],self.epsg);
+			writejs1Darray(fid,[modelname '.mesh.vertexonboundary'],self.vertexonboundary);
+			writejs2Darray(fid,[modelname '.mesh.edges'],self.edges);
+			writejs2Darray(fid,[modelname '.mesh.segments'],self.segments);
+			writejs2Darray(fid,[modelname '.mesh.segmentmarkers'],self.segmentmarkers);
+			writejs2Darray(fid,[modelname '.mesh.vertexconnectivity'],self.vertexconnectivity);
+			writejs2Darray(fid,[modelname '.mesh.elementconnectivity'],self.elementconnectivity);
+			writejsdouble(fid,[modelname '.mesh.average_vertex_connectivity'],self.average_vertex_connectivity);
+			writejs1Darray(fid,[modelname '.mesh.extractedvertices'],self.extractedvertices);
+			writejs1Darray(fid,[modelname '.mesh.extractedelements'],self.extractedelements);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh2d.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh2d.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh2d.py	(revision 21239)
@@ -0,0 +1,119 @@
+import numpy
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+import MatlabFuncs as m
+from WriteData import WriteData
+
+class mesh2d(object):
+	"""
+	MESH2D class definition
+
+	   Usage:
+	      mesh2d=mesh2d();
+	"""
+
+	def __init__(self): # {{{
+		self.x                           = float('NaN');
+		self.y                           = float('NaN');
+		self.elements                    = float('NaN');
+		self.numberofelements            = 0;
+		self.numberofvertices            = 0;
+		self.numberofedges               = 0;
+		
+		self.lat                         = float('NaN');
+		self.long                        = float('NaN');
+		self.epsg                        = 0;
+
+		self.vertexonboundary            = float('NaN');
+		self.edges                       = float('NaN');
+		self.segments                    = float('NaN');
+		self.segmentmarkers              = float('NaN');
+		self.vertexconnectivity          = float('NaN');
+		self.elementconnectivity         = float('NaN');
+		self.average_vertex_connectivity = 0;
+
+		self.extractedvertices           = float('NaN');
+		self.extractedelements           = float('NaN');
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   2D tria Mesh (horizontal):" 
+
+		string="%s\n%s"%(string,"\n      Elements and vertices:")
+		string="%s\n%s"%(string,fielddisplay(self,"numberofelements","number of elements"))
+		string="%s\n%s"%(string,fielddisplay(self,"numberofvertices","number of vertices"))
+		string="%s\n%s"%(string,fielddisplay(self,"elements","vertex indices of the mesh elements"))
+		string="%s\n%s"%(string,fielddisplay(self,"x","vertices x coordinate [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"y","vertices y coordinate [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"edges","edges of the 2d mesh (vertex1 vertex2 element1 element2)"))
+		string="%s\n%s"%(string,fielddisplay(self,"numberofedges","number of edges of the 2d mesh"))
+
+		string="%s%s"%(string,"\n\n      Properties:")
+		string="%s\n%s"%(string,fielddisplay(self,"vertexonboundary","vertices on the boundary of the domain flag list"))
+		string="%s\n%s"%(string,fielddisplay(self,"segments","edges on domain boundary (vertex1 vertex2 element)"))
+		string="%s\n%s"%(string,fielddisplay(self,"segmentmarkers","number associated to each segment"))
+		string="%s\n%s"%(string,fielddisplay(self,"vertexconnectivity","list of vertices connected to vertex_i"))
+		string="%s\n%s"%(string,fielddisplay(self,"elementconnectivity","list of vertices connected to element_i"))
+		string="%s\n%s"%(string,fielddisplay(self,"average_vertex_connectivity","average number of vertices connected to one vertex"))
+
+		string="%s%s"%(string,"\n\n      Extracted model:")
+		string="%s\n%s"%(string,fielddisplay(self,"extractedvertices","vertices extracted from the model"))
+		string="%s\n%s"%(string,fielddisplay(self,"extractedelements","elements extracted from the model"))
+
+		string="%s%s"%(string,"\n\n      Projection:")
+		string="%s\n%s"%(string,fielddisplay(self,"lat","vertices latitude [degrees]"))
+		string="%s\n%s"%(string,fielddisplay(self,"long","vertices longitude [degrees]"))
+		string="%s\n%s"%(string,fielddisplay(self,"epsg","EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)"))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#the connectivity is the averaged number of nodes linked to a
+		#given node through an edge. This connectivity is used to initially
+		#allocate memory to the stiffness matrix. A value of 16 seems to
+		#give a good memory/time ration. This value can be checked in
+		#trunk/test/Miscellaneous/runme.m
+		self.average_vertex_connectivity=25
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',numpy.arange(1,md.mesh.numberofvertices+1))
+		md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements,3])
+		if numpy.any(numpy.logical_not(m.ismember(numpy.arange(1,md.mesh.numberofvertices+1),md.mesh.elements))):
+			md.checkmessage("orphan nodes have been found. Check the mesh outline")
+		md = checkfield(md,'fieldname','mesh.numberofelements','>',0)
+		md = checkfield(md,'fieldname','mesh.numberofvertices','>',0)
+		md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message',"'mesh.average_vertex_connectivity' should be at least 9 in 2d")
+		if solution=='ThermalSolution':
+			md.checkmessage("thermal not supported for 2d mesh")
+
+		return md
+	# }}}
+	def domaintype(self): # {{{
+		return "2Dhorizontal"
+	#}}}
+	def dimension(self): # {{{
+		return 2
+	#}}}
+	def elementtype(self): # {{{
+		return "Tria"
+	#}}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'name','md.mesh.domain_type','data',"Domain"+self.domaintype(),'format','String');
+		WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',self.dimension(),'format','Integer');
+		WriteData(fid,prefix,'name','md.mesh.elementtype','data',self.elementtype(),'format','String');
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'name','md.mesh.z','data',numpy.zeros(self.numberofvertices),'format','DoubleMat','mattype',1);
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2)
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofelements','format','Integer')
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer')
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh2dvertical.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh2dvertical.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh2dvertical.m	(revision 21239)
@@ -0,0 +1,261 @@
+%MESH2DVERTICAL class definition
+%
+%   Usage:
+%      mesh2dvertical=mesh2dvertical();
+
+classdef mesh2dvertical
+	properties (SetAccess=public) 
+		x                           = NaN;
+		y                           = NaN;
+		elements                    = NaN;
+		numberofelements            = 0;
+		numberofvertices            = 0;
+		numberofedges               = 0;
+
+		lat                         = NaN;
+		long                        = NaN;
+		epsg                        = NaN;
+
+		vertexonboundary            = NaN;
+		vertexonbase                = NaN;
+		vertexonsurface             = NaN;
+
+		edges                       = NaN;
+		segments                    = NaN;
+		segmentmarkers              = NaN;
+		vertexconnectivity          = NaN;
+		elementconnectivity         = NaN;
+		average_vertex_connectivity = 0;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model selfect is
+			% loaded. Update old properties here
+
+			%2014 Oct. 1st
+			if isstruct(self),
+				oldself=self;
+				%Assign property values from struct
+				self=structtoobj(mesh2dvertical(),oldself);
+				if isfield(oldself,'hemisphere'),
+					disp('md.mesh.hemisphere has been automatically converted to EPSG code');
+					if strcmpi(oldself.hemisphere,'n'),
+						self.epsg=3413;
+					else
+						self.epsg=3031;
+					end
+				end
+			end
+
+		end% }}}
+	end
+	methods
+		function self = mesh2dvertical(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('mesh2dvertical');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%the connectivity is the averaged number of nodes linked to a
+			%given node through an edge. This connectivity is used to initially
+			%allocate memory to the stiffness matrix. A value of 16 seems to
+			%give a good memory/time ration. This value can be checked in
+			%trunk/test/Miscellaneous/runme.m
+			self.average_vertex_connectivity=25;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',1:md.mesh.numberofvertices);
+			md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements 3]);
+			if any(~ismember(1:md.mesh.numberofvertices,sort(unique(md.mesh.elements(:)))));
+				md = checkmessage(md,'orphan nodes have been found. Check the mesh outline');
+			end
+			md = checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			md = checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			md = checkfield(md,'fieldname','mesh.vertexonbase','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+			md = checkfield(md,'fieldname','mesh.vertexonsurface','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+			md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message','''mesh.average_vertex_connectivity'' should be at least 9 in 2d');
+
+			if strcmp(solution,'ThermalSolution')
+				md = checkmessage(md,'thermal not supported for 2d mesh');
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   2D tria Mesh (vertical):')); 
+
+			disp(sprintf('\n      Elements and vertices:'));
+			fielddisplay(self,'numberofelements','number of elements');
+			fielddisplay(self,'numberofvertices','number of vertices');
+			fielddisplay(self,'elements','vertex indices of the mesh elements');
+			fielddisplay(self,'x','vertices x coordinate [m]');
+			fielddisplay(self,'y','vertices y coordinate [m]');
+			fielddisplay(self,'edges','edges of the 2d mesh (vertex1 vertex2 element1 element2)');
+			fielddisplay(self,'numberofedges','number of edges of the 2d mesh');
+
+			disp(sprintf('\n      Properties:'));
+			fielddisplay(self,'vertexonboundary','vertices on the boundary of the domain flag list');
+			fielddisplay(self,'vertexonbase','vertices on the bed of the domain flag list');
+			fielddisplay(self,'vertexonsurface','vertices on the surface of the domain flag list');
+			fielddisplay(self,'segments','edges on domain boundary (vertex1 vertex2 element)');
+			fielddisplay(self,'segmentmarkers','number associated to each segment');
+			fielddisplay(self,'vertexconnectivity','list of vertices connected to vertex_i');
+			fielddisplay(self,'elementconnectivity','list of vertices connected to element_i');
+			fielddisplay(self,'average_vertex_connectivity','average number of vertices connected to one vertex');
+
+			disp(sprintf('\n      Projection:'));
+			fielddisplay(self,'lat','vertices latitude [degrees]');
+			fielddisplay(self,'long','vertices longitude [degrees]');
+			fielddisplay(self,'epsg','EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.mesh.domain_type','data',['Domain' domaintype(self)],'format','String');
+			WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',dimension(self),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.elementtype','data',elementtype(self),'format','String');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'name','md.mesh.z','data',zeros(self.numberofvertices,1),'format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonbase','format','BooleanMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonsurface','format','BooleanMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
+		end % }}}
+		function t = domaintype(self) % {{{
+			t = '2Dvertical';
+		end % }}}
+		function d = dimension(self) % {{{
+			d = 2;
+		end % }}}
+		function s = elementtype(self) % {{{
+			s = 'Tria';
+		end % }}}
+		function flags = vertexflags(self,value) % {{{
+			flags = zeros(self.numberofvertices,1);
+			pos   = self.segments(find(self.segmentmarkers==value),1:2);
+			flags(pos) = 1;
+		end % }}}
+		function [data datatype] = processdata(self,md,data,options) % {{{
+
+			%transpose data if necessary
+			if (size(data,2) > size(data,1)),
+				data=data';
+			end
+			datasize=size(data);
+
+			%convert to double if necessary
+			if ~isnumeric(data);
+				disp('processdata info message: data is not numeric (logical?). Converted to double');
+				data=double(data);
+			end
+
+			%check length
+			if datasize(1)~=md.mesh.numberofvertices & datasize(1)~=md.mesh.numberofelements
+				error('plotmodel error message: data not supported yet');
+			end
+
+			%quiver?
+			if datasize(2)>1,
+				datatype=3;
+			end
+
+			%smoothing?
+			if exist(options,'smooth')
+				data=averaging(md,data,getfieldvalue(options,'smooth'));
+				datasize(1)=md.mesh.numberofvertices;
+				%---> go to node data
+			end
+
+			%element data
+			if (datasize(1)==md.mesh.numberofelements & datasize(2)==1),
+				datatype=1;
+
+				%Mask?
+				if exist(options,'mask'),
+					flags=getfieldvalue(options,'mask');
+					pos=find(~flags);
+					if length(flags)==md.mesh.numberofvertices,
+						[pos2 dummy]=find(ismember(md.mesh.elements,pos));
+						data(pos2,:)=NaN;
+					elseif length(flags)==md.mesh.numberofelements
+						data(pos,:)=NaN;
+					else
+						disp('plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements');
+					end
+				end
+
+				%log?
+				if exist(options,'log'),
+					bounds=getfieldvalue(options,'caxis',[min(data(:)) max(data(:))]);
+					data(find(data<bounds(1)))=bounds(1);
+					if any(data<=0),
+						error('Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])');
+					end
+					pos=find(~isnan(data));
+					data(pos)=log(data(pos))/log(getfieldvalue(options,'log'));
+				end
+			end
+
+			%node data
+			if (datasize(1)==md.mesh.numberofvertices & datasize(2)==1),
+				datatype=2;
+
+				%Mask?
+				if exist(options,'mask'),
+					flags=getfieldvalue(options,'mask');
+					pos=find(~flags);
+					if length(flags)==md.mesh.numberofvertices,
+						data(pos,:)=NaN;
+					elseif length(flags)==md.mesh.numberofelements
+						data(md.mesh.elements(pos,:),:)=NaN;
+					else
+						disp('plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements');
+					end
+				end
+
+				%log?
+				if exist(options,'log'),
+					%if any(data<=0),
+					%	error('Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])');
+					%end
+					data=log(data)/log(getfieldvalue(options,'log'));
+				end
+			end
+		end % }}}
+		function [x y z elements is2d isplanet] = processmesh(self,options) % {{{
+
+			isplanet = 0;
+			is2d     = 1;
+
+			elements = self.elements;
+			x        = self.x;
+			y        = self.y;
+			z        = zeros(self.numberofvertices,1);
+
+			if exist(options,'xunit'),
+				unit=getfieldvalue(options,'xunit');
+				x=x*unit; % Apply to x only
+			end
+			if exist(options,'yunit'),
+				unit=getfieldvalue(options,'yunit');
+				x=x*unit; % Apply to x only
+			end
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dprisms.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dprisms.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dprisms.js	(revision 21239)
@@ -0,0 +1,158 @@
+//MESH3DPRISMS class definition
+//
+//   Usage:
+//      mesh=mesh3dprisms();
+
+function mesh3dprisms() {
+		this.setdefaultparameters = function() { // {{{)
+
+			//the connectivity is the averaged number of nodes linked to a
+			//given node through an edge. This connectivity is used to initially
+			//allocate memory to the stiffness matrix. A value of 16 seems to
+			//give a good memory/time ration. This value can be checked in
+			//trunk/test/Miscellaneous/runme.m
+			this.average_vertex_connectivity=25;
+		} // }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{[)
+
+			checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',NewArrayFillIncrement(md.mesh.numberofvertices,1,1));
+			checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements, 6]);
+
+            if(ArrayAnyEqual(ArrayIsMember(NewArrayFillIncrement(md.mesh.numberofvertices,1,1),ArraySort(ArrayUnique(MatrixToList(md.mesh.elements)))),0)){
+				//md = checkmessage(md,'orphan nodes have been found. Check the mesh outline'); @TODO
+                md.checkmessage('orphan nodes have been found. Check the mesh outline');
+			}
+			checkfield(md,'fieldname','mesh.numberoflayers','>=',0);
+			checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			checkfield(md,'fieldname','mesh.vertexonbase','size',[md.mesh.numberofvertices, 1],'values',[0, 1]);
+			checkfield(md,'fieldname','mesh.vertexonsurface','size',[md.mesh.numberofvertices, 1],'values',[0, 1]);
+			checkfield(md,'fieldname','mesh.z','>=',md.geometry.base-Math.pow(10, -10),'message','\'mesh.z\' lower than bedrock');
+			checkfield(md,'fieldname','mesh.z','<=',md.geometry.surface+Math.pow(10, -10),'message','\'mesh.z\' higher than surface elevation');
+			checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',24,'message','\'mesh.average_vertex_connectivity\' should be at least 24 in 3d');
+		} // }}}
+		this.disp = function()  { // {{{
+			console.log(sprintf('   3D prism Mesh:')); 
+
+			console.log(sprintf('\n      Elements and vertices of the original 2d mesh:'));
+			fielddisplay(this,'numberofelements2d','number of elements');
+			fielddisplay(this,'numberofvertices2d','number of vertices');
+			fielddisplay(this,'elements2d','vertex indices of the mesh elements');
+			fielddisplay(this,'x2d','vertices x coordinate [m]');
+			fielddisplay(this,'y2d','vertices y coordinate [m]');
+
+            console.log(sprintf('\n      Elements and vertices of the extruded 3d mesh:'));
+			fielddisplay(this,'numberofelements','number of elements');
+			fielddisplay(this,'numberofvertices','number of vertices');
+			fielddisplay(this,'elements','vertex indices of the mesh elements');
+			fielddisplay(this,'x','vertices x coordinate [m]');
+			fielddisplay(this,'y','vertices y coordinate [m]');
+			fielddisplay(this,'z','vertices z coordinate [m]');
+
+			console.log(sprintf('\n      Properties:'));
+			fielddisplay(this,'numberoflayers','number of extrusion layers');
+			fielddisplay(this,'vertexonbase','lower vertices flags list');
+			fielddisplay(this,'vertexonsurface','upper vertices flags list');
+			fielddisplay(this,'uppervertex','upper vertex list (NaN for vertex on the upper surface)');
+			fielddisplay(this,'upperelements','upper element list (NaN for element on the upper layer)');
+			fielddisplay(this,'lowervertex','lower vertex list (NaN for vertex on the lower surface)');
+			fielddisplay(this,'lowerelements','lower element list (NaN for element on the lower layer');
+			fielddisplay(this,'vertexonboundary','vertices on the boundary of the domain flag list');
+
+			fielddisplay(this,'vertexconnectivity','list of vertices connected to vertex_i');
+			fielddisplay(this,'elementconnectivity','list of vertices connected to element_i');
+			fielddisplay(this,'average_vertex_connectivity','average number of vertices connected to one vertex');
+
+			console.log(sprintf('\n      Extracted model:'));
+			fielddisplay(this,'extractedvertices','vertices extracted from the model');
+			fielddisplay(this,'extractedelements','elements extracted from the model');
+
+			console.log(sprintf('\n      Projection:'));
+			fielddisplay(this,'lat','vertices latitude [degrees]');
+			fielddisplay(this,'long','vertices longitude [degrees]');
+			fielddisplay(this,'epsg','EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
+		} // }}}
+		this.marshall = function(md,prefix,fid) { // {{{
+			WriteData(fid,prefix,'name','md.mesh.domain_type','data','Domain' + this.domaintype(),'format','String');
+			WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',this.dimension(),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.elementtype','data',this.elementtype(),'format','String');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','z','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','numberoflayers','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','vertexonbase','format','BooleanMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','vertexonsurface','format','BooleanMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','lowerelements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','upperelements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','elements2d','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','numberofvertices2d','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','numberofelements2d','format','Integer');
+		} // }}}
+        this.fix=function() { //{{{
+            //Transform objects into Float64Arrays:
+            this.x=FloatFix(this.x,this.numberofvertices); 
+            this.y=FloatFix(this.y,this.numberofvertices); 
+            this.z=FloatFix(this.y,this.numberofvertices); 
+            this.r=FloatFix(this.y,this.numberofvertices); 
+            this.edges=NaNFix(this.edges,NaN);
+            this.vertexonboundary=FloatFix(this.vertexonboundary,this.numberofvertices); 
+            this.segmentmarkers=FloatFix(this.segmentmarkers,this.segments.length);
+            this.extractedvertices=NaNFix(this.extractedvertices,NaN);
+            this.extractedelements=NaNFix(this.extractedelements,NaN);
+            this.lat=NaNFix(this.lat,NaN);
+            this.long=NaNFix(this.long,NaN);
+        }//}}}
+		this.domaintype = function() { // {{{)
+			return '3D';
+		} // }}}
+		this.dimension = function() { // {{{)
+			return 3;
+		} // }}}
+		this.elementtype = function() { // {{{)
+			return 'Penta';
+		} // }}}
+        this.classname = function () { //{{{
+            return "mesh3dprisms";
+        } //}}}
+
+        //properties (SetAccess=public) 
+        this.x                           = NaN;
+        this.y                           = NaN;
+        this.z                           = NaN;
+        this.elements                    = NaN;
+        this.numberoflayers              = 0;
+        this.numberofelements            = 0;
+        this.numberofvertices            = 0;
+
+        this.lat                         = NaN;
+        this.long                        = NaN;
+        this.epsg                        = 0;
+
+        this.vertexonbase                = NaN;
+        this.vertexonsurface             = NaN;
+        this.lowerelements               = NaN;
+        this.lowervertex                 = NaN;
+        this.upperelements               = NaN;
+        this.uppervertex                 = NaN;
+        this.vertexonboundary            = NaN;
+
+        this.vertexconnectivity          = NaN;
+        this.elementconnectivity         = NaN;
+        this.average_vertex_connectivity = 0;
+
+        this.x2d                         = NaN;
+        this.y2d                         = NaN;
+        this.elements2d                  = NaN;
+        this.numberofvertices2d          = 0;
+        this.numberofelements2d          = 0;
+
+        this.extractedvertices           = NaN;
+        this.extractedelements           = NaN;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dprisms.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dprisms.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dprisms.m	(revision 21239)
@@ -0,0 +1,215 @@
+%MESH3DPRISMS class definition
+%
+%   Usage:
+%      mesh=mesh3dprisms();
+
+classdef mesh3dprisms
+	properties (SetAccess=public) 
+		x                           = NaN;
+		y                           = NaN;
+		z                           = NaN;
+		elements                    = NaN;
+		numberoflayers              = 0;
+		numberofelements            = 0;
+		numberofvertices            = 0;
+
+		lat                         = NaN;
+		long                        = NaN;
+		epsg                        = 0;
+
+		vertexonbase                = NaN;
+		vertexonsurface             = NaN;
+		lowerelements               = NaN;
+		lowervertex                 = NaN;
+		upperelements               = NaN;
+		uppervertex                 = NaN;
+		vertexonboundary            = NaN;
+
+		vertexconnectivity          = NaN;
+		elementconnectivity         = NaN;
+		average_vertex_connectivity = 0;
+
+		x2d                         = NaN;
+		y2d                         = NaN;
+		elements2d                  = NaN;
+		numberofvertices2d          = 0;
+		numberofelements2d          = 0;
+
+		extractedvertices           = NaN;
+		extractedelements           = NaN;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model selfect is
+			% loaded. Update old properties here
+
+			%2014 Oct. 1st
+			if isstruct(self),
+				oldself=self;
+				%Assign property values from struct
+				self=structtoobj(mesh3dprisms(),oldself);
+				if isfield(oldself,'hemisphere'),
+					disp('md.mesh.hemisphere has been automatically converted to EPSG code');
+					if strcmpi(oldself.hemisphere,'n'),
+						self.epsg=3413;
+					else
+						self.epsg=3031;
+					end
+				end
+			end
+
+		end% }}}
+	end
+	methods
+		function self = mesh3dprisms(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=mesh3dprisms();
+					object=varargin{1};
+					fields=fieldnames(object);
+					for i=1:length(fields)
+						field=fields{i};
+						if ismember(field,properties('mesh3dprisms')),
+							self.(field)=object.(field);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%the connectivity is the averaged number of nodes linked to a
+			%given node through an edge. This connectivity is used to initially
+			%allocate memory to the stiffness matrix. A value of 16 seems to
+			%give a good memory/time ration. This value can be checked in
+			%trunk/test/Miscellaneous/runme.m
+			self.average_vertex_connectivity=25;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',1:md.mesh.numberofvertices);
+			md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements 6]);
+			if any(~ismember(1:md.mesh.numberofvertices,sort(unique(md.mesh.elements(:)))));
+				md = checkmessage(md,'orphan nodes have been found. Check the mesh outline');
+			end
+			md = checkfield(md,'fieldname','mesh.numberoflayers','>=',0);
+			md = checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			md = checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			md = checkfield(md,'fieldname','mesh.vertexonbase','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+			md = checkfield(md,'fieldname','mesh.vertexonsurface','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+			md = checkfield(md,'fieldname','mesh.z','>=',md.geometry.base-10^-10,'message','''mesh.z'' lower than bedrock');
+			md = checkfield(md,'fieldname','mesh.z','<=',md.geometry.surface+10^-10,'message','''mesh.z'' higher than surface elevation');
+			md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',24,'message','''mesh.average_vertex_connectivity'' should be at least 24 in 3d');
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   3D prism Mesh:')); 
+
+			disp(sprintf('\n      Elements and vertices of the original 2d mesh:'));
+			fielddisplay(self,'numberofelements2d','number of elements');
+			fielddisplay(self,'numberofvertices2d','number of vertices');
+			fielddisplay(self,'elements2d','vertex indices of the mesh elements');
+			fielddisplay(self,'x2d','vertices x coordinate [m]');
+			fielddisplay(self,'y2d','vertices y coordinate [m]');
+
+			disp(sprintf('\n      Elements and vertices of the extruded 3d mesh:'));
+			fielddisplay(self,'numberofelements','number of elements');
+			fielddisplay(self,'numberofvertices','number of vertices');
+			fielddisplay(self,'elements','vertex indices of the mesh elements');
+			fielddisplay(self,'x','vertices x coordinate [m]');
+			fielddisplay(self,'y','vertices y coordinate [m]');
+			fielddisplay(self,'z','vertices z coordinate [m]');
+
+			disp(sprintf('\n      Properties:'));
+			fielddisplay(self,'numberoflayers','number of extrusion layers');
+			fielddisplay(self,'vertexonbase','lower vertices flags list');
+			fielddisplay(self,'vertexonsurface','upper vertices flags list');
+			fielddisplay(self,'uppervertex','upper vertex list (NaN for vertex on the upper surface)');
+			fielddisplay(self,'upperelements','upper element list (NaN for element on the upper layer)');
+			fielddisplay(self,'lowervertex','lower vertex list (NaN for vertex on the lower surface)');
+			fielddisplay(self,'lowerelements','lower element list (NaN for element on the lower layer');
+			fielddisplay(self,'vertexonboundary','vertices on the boundary of the domain flag list');
+
+			fielddisplay(self,'vertexconnectivity','list of vertices connected to vertex_i');
+			fielddisplay(self,'elementconnectivity','list of vertices connected to element_i');
+			fielddisplay(self,'average_vertex_connectivity','average number of vertices connected to one vertex');
+
+			disp(sprintf('\n      Extracted model:'));
+			fielddisplay(self,'extractedvertices','vertices extracted from the model');
+			fielddisplay(self,'extractedelements','elements extracted from the model');
+
+			disp(sprintf('\n      Projection:'));
+			fielddisplay(self,'lat','vertices latitude [degrees]');
+			fielddisplay(self,'long','vertices longitude [degrees]');
+			fielddisplay(self,'epsg','EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.mesh.domain_type','data',['Domain' domaintype(self)],'format','String');
+			WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',dimension(self),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.elementtype','data',elementtype(self),'format','String');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','z','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberoflayers','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonbase','format','BooleanMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonsurface','format','BooleanMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','lowerelements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','upperelements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','elements2d','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofvertices2d','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofelements2d','format','Integer');
+		end % }}}
+		function type = domaintype(self) % {{{
+			type = '3D';
+		end % }}}
+		function d = dimension(self) % {{{
+			d = 3;
+		end % }}}
+		function s = elementtype(self) % {{{
+			s = 'Penta';
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			fprintf(fid,'%s.mesh=new mesh3dprisms();\n',modelname);
+			writejs1Darray(fid,[modelname '.mesh.x'],self.x);
+			writejs1Darray(fid,[modelname '.mesh.y'],self.y);
+			writejs1Darray(fid,[modelname '.mesh.z'],self.z);
+			writejs2Darray(fid,[modelname '.mesh.elements'],self.elements);
+			writejsdouble(fid,[modelname '.mesh.numberoflayers'],self.numberoflayers);
+			writejsdouble(fid,[modelname '.mesh.numberofelements'],self.numberofelements);
+			writejsdouble(fid,[modelname '.mesh.numberofvertices'],self.numberofvertices);
+			writejs1Darray(fid,[modelname '.mesh.lat'],self.lat);
+			writejs1Darray(fid,[modelname '.mesh.long'],self.long);
+			writejs1Darray(fid,[modelname '.mesh.epsg'],self.epsg);
+			writejs1Darray(fid,[modelname '.mesh.vertexonbase'],self.vertexonbase);
+			writejs1Darray(fid,[modelname '.mesh.vertexonsurface'],self.vertexonsurface);
+			writejs1Darray(fid,[modelname '.mesh.lowerelements'],self.lowerelements);
+			writejs1Darray(fid,[modelname '.mesh.upperelements'],self.upperelements);
+			writejs1Darray(fid,[modelname '.mesh.uppervertex'],self.uppervertex);
+			writejs1Darray(fid,[modelname '.mesh.vertexonboundary'],self.vertexonboundary);
+
+			writejs2Darray(fid,[modelname '.mesh.vertexconnectivity'],self.vertexconnectivity);
+			writejs2Darray(fid,[modelname '.mesh.elementconnectivity'],self.elementconnectivity);
+			writejsdouble(fid,[modelname '.mesh.average_vertex_connectivity'],self.average_vertex_connectivity);
+			
+			writejs1Darray(fid,[modelname '.mesh.x2d'],self.x2d);
+			writejs1Darray(fid,[modelname '.mesh.y2d'],self.y2d);
+			writejs2Darray(fid,[modelname '.mesh.elements2d'],self.elements2d);
+			writejsdouble(fid,[modelname '.mesh.numberofvertices2d'],self.numberofvertices2d);
+			writejsdouble(fid,[modelname '.mesh.numberofelements2d'],self.numberofelements2d);
+
+			writejs1Darray(fid,[modelname '.mesh.extractedvertices'],self.extractedvertices);
+			writejs1Darray(fid,[modelname '.mesh.extractedelements'],self.extractedelements);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dprisms.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dprisms.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dprisms.py	(revision 21239)
@@ -0,0 +1,151 @@
+import numpy
+from fielddisplay import fielddisplay
+from checkfield import *
+import MatlabFuncs as m
+from WriteData import WriteData
+
+class mesh3dprisms(object):
+	"""
+	MESH3DPRISMS class definition
+
+	   Usage:
+	      mesh3d=mesh3dprisms();
+	"""
+
+	def __init__(self): # {{{
+		self.x                           = float('NaN');
+		self.y                           = float('NaN');
+		self.z                           = float('NaN');
+		self.elements                    = float('NaN');
+		self.numberoflayers              = 0;
+		self.numberofelements            = 0;
+		self.numberofvertices            = 0;
+		
+		self.lat                         = float('NaN');
+		self.long                        = float('NaN');
+		self.epsg                        = 0;
+
+		self.vertexonbase                = float('NaN');
+		self.vertexonsurface             = float('NaN');
+		self.lowerelements               = float('NaN');
+		self.lowervertex                 = float('NaN');
+		self.upperelements               = float('NaN');
+		self.uppervertex                 = float('NaN');
+		self.vertexonboundary            = float('NaN');
+
+		self.vertexconnectivity          = float('NaN');
+		self.elementconnectivity         = float('NaN');
+		self.average_vertex_connectivity = 0;
+
+		self.x2d                         = float('NaN');
+		self.y2d                         = float('NaN');
+		self.elements2d                  = float('NaN');
+		self.numberofvertices2d          = 0;
+		self.numberofelements2d          = 0;
+
+		self.extractedvertices           = float('NaN');
+		self.extractedelements           = float('NaN');
+
+		#set defaults
+		self.setdefaultparameters()
+		#}}}
+	def __repr__(self): # {{{
+		string="   3D prism Mesh:" 
+
+		string="%s\n%s"%(string,"\n      Elements and vertices of the original 2d mesh3dprisms:")
+		
+		string="%s\n%s"%(string,fielddisplay(self,"numberofelements2d","number of elements"))
+		string="%s\n%s"%(string,fielddisplay(self,"numberofvertices2d","number of vertices"))
+		string="%s\n%s"%(string,fielddisplay(self,"elements2d","vertex indices of the mesh3dprisms elements"))
+		string="%s\n%s"%(string,fielddisplay(self,"x2d","vertices x coordinate [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"y2d","vertices y coordinate [m]"))
+
+		string="%s\n%s"%(string,"\n\n      Elements and vertices of the extruded 3d mesh3dprisms:")
+		string="%s\n%s"%(string,fielddisplay(self,"numberofelements","number of elements"))
+		string="%s\n%s"%(string,fielddisplay(self,"numberofvertices","number of vertices"))
+		string="%s\n%s"%(string,fielddisplay(self,"elements","vertex indices of the mesh3dprisms elements"))
+		string="%s\n%s"%(string,fielddisplay(self,"x","vertices x coordinate [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"y","vertices y coordinate [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"z","vertices z coordinate [m]"))
+
+		string="%s%s"%(string,"\n\n      Properties:")
+		string="%s\n%s"%(string,fielddisplay(self,"numberoflayers","number of extrusion layers"))
+		string="%s\n%s"%(string,fielddisplay(self,"vertexonbase","lower vertices flags list"))
+		string="%s\n%s"%(string,fielddisplay(self,"vertexonsurface","upper vertices flags list"))
+		string="%s\n%s"%(string,fielddisplay(self,"uppervertex","upper vertex list (-1 for vertex on the upper surface)"))
+		string="%s\n%s"%(string,fielddisplay(self,"upperelements","upper element list (-1 for element on the upper layer)"))
+		string="%s\n%s"%(string,fielddisplay(self,"lowervertex","lower vertex list (-1 for vertex on the lower surface)"))
+		string="%s\n%s"%(string,fielddisplay(self,"lowerelements","lower element list (-1 for element on the lower layer)"))
+		string="%s\n%s"%(string,fielddisplay(self,"vertexonboundary","vertices on the boundary of the domain flag list"))
+		string="%s\n%s"%(string,fielddisplay(self,"vertexconnectivity","list of vertices connected to vertex_i"))
+		string="%s\n%s"%(string,fielddisplay(self,"elementconnectivity","list of vertices connected to element_i"))
+		string="%s\n%s"%(string,fielddisplay(self,"average_vertex_connectivity","average number of vertices connected to one vertex"))
+
+		string="%s%s"%(string,"\n\n      Extracted model:")
+		string="%s\n%s"%(string,fielddisplay(self,"extractedvertices","vertices extracted from the model"))
+		string="%s\n%s"%(string,fielddisplay(self,"extractedelements","elements extracted from the model"))
+
+		string="%s%s"%(string,"\n\n      Projection:")
+		string="%s\n%s"%(string,fielddisplay(self,"lat","vertices latitude [degrees]"))
+		string="%s\n%s"%(string,fielddisplay(self,"long","vertices longitude [degrees]"))
+		string="%s\n%s"%(string,fielddisplay(self,"epsg","EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)"))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#the connectivity is the averaged number of nodes linked to a
+		#given node through an edge. This connectivity is used to initially
+		#allocate memory to the stiffness matrix. A value of 16 seems to
+		#give a good memory/time ration. This value can be checked in
+		#trunk/test/Miscellaneous/runme.m
+		self.average_vertex_connectivity=25
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',numpy.arange(1,md.mesh.numberofvertices+1))
+		md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements,6])
+		if numpy.any(numpy.logical_not(m.ismember(numpy.arange(1,md.mesh.numberofvertices+1),md.mesh.elements))):
+			md.checkmessage("orphan nodes have been found. Check the mesh3dprisms outline")
+		md = checkfield(md,'fieldname','mesh.numberoflayers','>=',0)
+		md = checkfield(md,'fieldname','mesh.numberofelements','>',0)
+		md = checkfield(md,'fieldname','mesh.numberofvertices','>',0)
+		md = checkfield(md,'fieldname','mesh.vertexonbase','size',[md.mesh.numberofvertices],'values',[0,1])
+		md = checkfield(md,'fieldname','mesh.vertexonsurface','size',[md.mesh.numberofvertices],'values',[0,1])
+		md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',24,'message',"'mesh.average_vertex_connectivity' should be at least 24 in 3d")
+
+		return md
+	# }}}
+	def domaintype(self): # {{{
+		return "3D"
+	#}}}
+	def dimension(self): # {{{
+		return 3
+	#}}}
+	def elementtype(self): # {{{
+		return "Penta"
+	#}}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'name','md.mesh.domain_type','data',"Domain"+self.domaintype(),'format','String');
+		WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',self.dimension(),'format','Integer');
+		WriteData(fid,prefix,'name','md.mesh.elementtype','data',self.elementtype(),'format','String');
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','z','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2)
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberoflayers','format','Integer')
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofelements','format','Integer')
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer')
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonbase','format','BooleanMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonsurface','format','BooleanMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','lowerelements','format','DoubleMat','mattype',2)
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','upperelements','format','DoubleMat','mattype',2)
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer')
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','elements2d','format','DoubleMat','mattype',3)
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofvertices2d','format','Integer')
+		WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofelements2d','format','Integer')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dsurface.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dsurface.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dsurface.js	(revision 21239)
@@ -0,0 +1,138 @@
+//MESH3DSURFACE class definition
+//
+//   Usage:
+//      mesh3dsurface= new mesh3dsurface();
+
+function mesh3dsurface () {
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+
+			//the connectivity is the averaged number of nodes linked to a
+			//given node through an edge. This connectivity is used to initially
+			//allocate memory to the stiffness matrix. A value of 16 seems to
+			//give a good memory/time ration. This value can be checked in
+			//trunk/test/Miscellaneous/runme.m
+			this.average_vertex_connectivity=25;
+		}
+		// }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   2D tria Mesh (3D surface):")); 
+
+			console.log(sprintf("\n      Elements and vertices:"));
+			fielddisplay(this,"numberofelements","number of elements");
+			fielddisplay(this,"numberofvertices","number of vertices");
+			fielddisplay(this,"elements","vertex indices of the mesh elements");
+			fielddisplay(this,"x","vertices x coordinate [m]");
+			fielddisplay(this,"y","vertices y coordinate [m]");
+			fielddisplay(this,"z","vertices z coordinate [m]");
+			fielddisplay(this,"edges","edges of the 2d mesh (vertex1 vertex2 element1 element2)");
+			fielddisplay(this,"numberofedges","number of edges of the 2d mesh");
+
+			console.log(sprintf("\n      Properties:"));
+			fielddisplay(this,"vertexonboundary","vertices on the boundary of the domain flag list");
+			fielddisplay(this,"segments","edges on domain boundary (vertex1 vertex2 element)");
+			fielddisplay(this,"segmentmarkers","number associated to each segment");
+			fielddisplay(this,"vertexconnectivity","list of vertices connected to vertex_i");
+			fielddisplay(this,"elementconnectivity","list of vertices connected to element_i");
+			fielddisplay(this,"average_vertex_connectivity","average number of vertices connected to one vertex");
+
+			console.log(sprintf("\n      Extracted model:"));
+			fielddisplay(this,"extractedvertices","vertices extracted from the model");
+			fielddisplay(this,"extractedelements","elements extracted from the model");
+
+			console.log(sprintf("\n      Projection:"));
+			fielddisplay(this,"lat","vertices latitude [degrees]");
+			fielddisplay(this,"long","vertices longitude [degrees]");
+			fielddisplay(this,"r","vertices radius [m]");
+		} //}}}
+		this.classname = function () { //{{{
+			return "mesh3dsurface";
+		} //}}}
+		this.domaintype=function (){ // {{{
+			return '3Dsurface';
+		} // }}}
+		this.dimension = function () { //{{{
+			return 2;
+		} //}}}
+		this.elementtype = function() {//{{{
+			return 'Tria';
+		} // }}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.lat','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.long','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.r','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',NewArrayFillIncrement(md.mesh.numberofvertices,1,1));
+			checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements, 3]);
+			if(ArrayAnyEqual(ArrayIsMember(NewArrayFillIncrement(md.mesh.numberofvertices,1,1),ArraySort(ArrayUnique(MatrixToList(md.mesh.elements)))),0)){
+				md.checkmessage('orphan nodes have been found. Check the mesh outline');
+			}
+			checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message',"'mesh.average_vertex_connectivity' should be at least 9 in 2d");
+			checkfield(md,'fieldname','mesh.segments','NaN',1,'Inf',1,'>',0,'size',[NaN, 3]);
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'name','md.mesh.domain_type','data','Domain' + this.domaintype(),'format','String');
+			WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',this.dimension(),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.elementtype','data',this.elementtype(),'format','String');
+			WriteData(fid,prefix,'object',this,'fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','z','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','lat','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','long','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','r','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',this,'fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','average_vertex_connectivity','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','vertexonboundary','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','segments','format','DoubleMat','mattype',3);
+		}//}}}
+		this.fix=function() { //{{{
+			//Transform objects into Float64Arrays:
+			this.x=FloatFix(this.x,this.numberofvertices); 
+			this.y=FloatFix(this.y,this.numberofvertices); 
+			this.z=FloatFix(this.y,this.numberofvertices); 
+			this.r=FloatFix(this.y,this.numberofvertices); 
+			this.edges=NullFix(this.edges,NaN);
+			this.vertexonboundary=FloatFix(this.vertexonboundary,this.numberofvertices); 
+			this.segmentmarkers=FloatFix(this.segmentmarkers,this.segments.length);
+			this.extractedvertices=NullFix(this.extractedvertices,NaN);
+			this.extractedelements=NullFix(this.extractedelements,NaN);
+			this.lat=NullFix(this.lat,NaN);
+			this.long=NullFix(this.long,NaN);
+		}//}}}
+
+	//properties 
+	// {{{
+		this.x                           = NaN;
+		this.y                           = NaN;
+		this.z                           = NaN;
+		this.elements                    = NaN;
+		this.numberofelements            = 0;
+		this.numberofvertices            = 0;
+		this.numberofedges               = 0;
+
+		this.lat                         = NaN;
+		this.long                        = NaN;
+		this.r                           = NaN;
+
+		this.vertexonboundary            = NaN;
+		this.edges                       = NaN;
+		this.segments                    = NaN;
+		this.segmentmarkers              = NaN;
+		this.vertexconnectivity          = NaN;
+		this.elementconnectivity         = NaN;
+		this.average_vertex_connectivity = 0;
+
+		this.extractedvertices           = NaN;
+		this.extractedelements           = NaN;
+
+		this.setdefaultparameters();
+		//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dsurface.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dsurface.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dsurface.m	(revision 21239)
@@ -0,0 +1,192 @@
+%MESH3DSURFACE class definition
+%
+%   Usage:
+%      mesh3dsurface=mesh3dsurface();
+
+classdef mesh3dsurface
+	properties (SetAccess=public) 
+		x                           = NaN;
+		y                           = NaN;
+		z                           = NaN;
+		elements                    = NaN;
+		numberofelements            = 0;
+		numberofvertices            = 0;
+		numberofedges               = 0;
+
+		lat                         = NaN;
+		long                        = NaN;
+		r                           = NaN;
+
+		vertexonboundary            = NaN;
+		edges                       = NaN;
+		segments                    = NaN;
+		segmentmarkers              = NaN;
+		vertexconnectivity          = NaN;
+		elementconnectivity         = NaN;
+		average_vertex_connectivity = 0;
+
+		extractedvertices           = NaN;
+		extractedelements           = NaN;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model selfect is
+			% loaded. Update old properties here
+
+			%2014 Oct. 1st
+			if isstruct(self),
+				oldself=self;
+				%Assign property values from struct
+				self=structtoobj(mesh3dsurface(),oldself);
+				if isfield(oldself,'hemisphere'),
+					disp('md.mesh.hemisphere has been automatically converted to EPSG code');
+					if strcmpi(oldself.hemisphere,'n'),
+						self.epsg=3413;
+					else
+						self.epsg=3031;
+					end
+				end
+			end
+
+		end% }}}
+	end
+	methods
+		function self = mesh3dsurface(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=mesh3dsurface();
+					object=varargin{1};
+					fields=fieldnames(object);
+					for i=1:length(fields)
+						field=fields{i};
+						if ismember(field,properties('mesh3dsurface')),
+							self.(field)=object.(field);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function obj = setdefaultparameters(obj) % {{{
+
+			%the connectivity is the averaged number of nodes linked to a
+			%given node through an edge. This connectivity is used to initially
+			%allocate memory to the stiffness matrix. A value of 16 seems to
+			%give a good memory/time ration. This value can be checked in
+			%trunk/test/Miscellaneous/runme.m
+			obj.average_vertex_connectivity=25;
+		end % }}}
+		function md = checkconsistency(obj,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.lat','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.long','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.r','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',1:md.mesh.numberofvertices);
+			md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements 3]);
+			if any(~ismember(1:md.mesh.numberofvertices,sort(unique(md.mesh.elements(:)))));
+				md = checkmessage(md,'orphan nodes have been found. Check the mesh outline');
+			end
+			md = checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			md = checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message','''mesh.average_vertex_connectivity'' should be at least 9 in 2d');
+
+			if strcmp(solution,'ThermalSolution')
+				md = checkmessage(md,'thermal not supported for 2d mesh');
+			end
+		end % }}}
+		function disp(obj) % {{{
+			disp(sprintf('   2D tria Mesh (horizontal):')); 
+
+			disp(sprintf('\n      Elements and vertices:'));
+			fielddisplay(obj,'numberofelements','number of elements');
+			fielddisplay(obj,'numberofvertices','number of vertices');
+			fielddisplay(obj,'elements','vertex indices of the mesh elements');
+			fielddisplay(obj,'x','vertices x coordinate [m]');
+			fielddisplay(obj,'y','vertices y coordinate [m]');
+			fielddisplay(obj,'z','vertices z coordinate [m]');
+			fielddisplay(obj,'lat','vertices latitude [degrees]');
+			fielddisplay(obj,'long','vertices longitude [degrees]');
+			fielddisplay(obj,'r','vertices radius [m]');
+			
+			fielddisplay(obj,'edges','edges of the 2d mesh (vertex1 vertex2 element1 element2)');
+			fielddisplay(obj,'numberofedges','number of edges of the 2d mesh');
+
+			disp(sprintf('\n      Properties:'));
+			fielddisplay(obj,'vertexonboundary','vertices on the boundary of the domain flag list');
+			fielddisplay(obj,'segments','edges on domain boundary (vertex1 vertex2 element)');
+			fielddisplay(obj,'segmentmarkers','number associated to each segment');
+			fielddisplay(obj,'vertexconnectivity','list of vertices connected to vertex_i');
+			fielddisplay(obj,'elementconnectivity','list of vertices connected to element_i');
+			fielddisplay(obj,'average_vertex_connectivity','average number of vertices connected to one vertex');
+
+			disp(sprintf('\n      Extracted model:'));
+			fielddisplay(obj,'extractedvertices','vertices extracted from the model');
+			fielddisplay(obj,'extractedelements','elements extracted from the model'); 
+		end % }}}
+		function marshall(obj,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.mesh.domain_type','data',['Domain' domaintype(obj)],'format','String');
+			WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',dimension(obj),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.elementtype','data',elementtype(obj),'format','String');
+			WriteData(fid,prefix,'object',obj,'fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',obj,'fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',obj,'fieldname','z','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',obj,'fieldname','lat','data',obj.lat,'format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',obj,'fieldname','long','data',obj.long,'format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',obj,'fieldname','r','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'name','md.mesh.z','data',zeros(obj.numberofvertices,1),'format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',obj,'fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',obj,'fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',obj,'fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',obj,'fieldname','average_vertex_connectivity','format','Integer');
+			WriteData(fid,prefix,'object',obj,'fieldname','vertexonboundary','format','DoubleMat','mattype',1);
+		end % }}}
+		function t = domaintype(obj) % {{{
+			t = '3Dsurface';
+		end % }}}
+		function d = dimension(obj) % {{{
+			d = 2;
+		end % }}}
+		function s = elementtype(obj) % {{{
+			s = 'Tria';
+		end % }}}
+		function [x y z elements is2d isplanet] = processmesh(self,options) % {{{
+
+			isplanet = 1;
+			is2d     = 0;
+
+			elements = self.elements;
+			x        = self.x;
+			y        = self.y;
+			z        = self.z;
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			fprintf(fid,'%s.mesh=new mesh3dsurface();\n',modelname);
+			writejs1Darray(fid,[modelname '.mesh.x'],self.x);
+			writejs1Darray(fid,[modelname '.mesh.y'],self.y);
+			writejs1Darray(fid,[modelname '.mesh.z'],self.z);
+			writejs2Darray(fid,[modelname '.mesh.elements'],self.elements);
+			writejsdouble(fid,[modelname '.mesh.numberofelements'],self.numberofelements);
+			writejsdouble(fid,[modelname '.mesh.numberofvertices'],self.numberofvertices);
+			writejsdouble(fid,[modelname '.mesh.numberofedges'],self.numberofedges);
+			writejs1Darray(fid,[modelname '.mesh.lat'],self.lat);
+			writejs1Darray(fid,[modelname '.mesh.long'],self.long);
+			writejs1Darray(fid,[modelname '.mesh.r'],self.r);
+			writejs1Darray(fid,[modelname '.mesh.vertexonboundary'],self.vertexonboundary);
+			writejs2Darray(fid,[modelname '.mesh.edges'],self.edges);
+			writejs2Darray(fid,[modelname '.mesh.segments'],self.segments);
+			writejs2Darray(fid,[modelname '.mesh.segmentmarkers'],self.segmentmarkers);
+			writejs2Darray(fid,[modelname '.mesh.vertexconnectivity'],self.vertexconnectivity);
+			writejs2Darray(fid,[modelname '.mesh.elementconnectivity'],self.elementconnectivity);
+			writejsdouble(fid,[modelname '.mesh.average_vertex_connectivity'],self.average_vertex_connectivity);
+			writejs1Darray(fid,[modelname '.mesh.extractedvertices'],self.extractedvertices);
+			writejs1Darray(fid,[modelname '.mesh.extractedelements'],self.extractedelements);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dsurface.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dsurface.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dsurface.py	(revision 21239)
@@ -0,0 +1,192 @@
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+class mesh3dsurface(object):
+#MESH3DSURFACE class definition
+#
+#   Usage:
+#      mesh3dsurface=mesh3dsurface();
+	def __init__(self,*args): # {{{
+		self.x                           = NaN
+		self.y                           = NaN
+		self.z                           = NaN
+		self.elements                    = NaN
+		self.numberofelements            = 0
+		self.numberofvertices            = 0
+		self.numberofedges               = 0
+
+		self.lat                         = NaN
+		self.long                        = NaN
+		self.r                           = NaN
+
+		self.vertexonboundary            = NaN
+		self.edges                       = NaN
+		self.segments                    = NaN
+		self.segmentmarkers              = NaN
+		self.vertexconnectivity          = NaN
+		self.elementconnectivity         = NaN
+		self.average_vertex_connectivity = 0
+
+		self.extractedvertices           = NaN
+		self.extractedelements           = NaN
+		
+		if not len(args):
+			self.setdefaultparameters()
+		elif len(args)==1:
+			self=mesh3dsurface()
+			arg=args[1]
+			fields=fieldnames(arg)
+			for i in range(len(fields)):
+				field=fields[i]
+				if ismember(field,properties('mesh3dsurface')):
+					self.field=arg.field
+		else:
+			raise RuntimeError('constructor not supported')	
+
+	# }}}
+	def __repr__(self): # {{{
+		string='   2D tria Mesh (horizontal):'
+		
+		string+='\n      Elements and vertices:'
+		string="%s\n%s"%(string,fielddisplay(self,'numberofelements','number of elements'))
+		string="%s\n%s"%(string,fielddisplay(self,'numberofvertices','number of vertices'))
+		string="%s\n%s"%(string,fielddisplay(self,'elements','vertex indices of the mesh elements'))
+		string="%s\n%s"%(string,fielddisplay(self,'x','vertices x coordinate [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'y','vertices y coordinate [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'z','vertices z coordinate [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'lat','vertices latitude [degrees]'))
+		string="%s\n%s"%(string,fielddisplay(self,'long','vertices longitude [degrees]'))
+		string="%s\n%s"%(string,fielddisplay(self,'r','vertices radius [m]'))
+		
+		string="%s\n%s"%(string,fielddisplay(self,'edges','edges of the 2d mesh (vertex1 vertex2 element1 element2)'))
+		string="%s\n%s"%(string,fielddisplay(self,'numberofedges','number of edges of the 2d mesh'))
+
+		string+='\n      Properties:'
+		string="%s\n%s"%(string,fielddisplay(self,'vertexonboundary','vertices on the boundary of the domain flag list'))
+		string="%s\n%s"%(string,fielddisplay(self,'segments','edges on domain boundary (vertex1 vertex2 element)'))
+		string="%s\n%s"%(string,fielddisplay(self,'segmentmarkers','number associated to each segment'))
+		string="%s\n%s"%(string,fielddisplay(self,'vertexconnectivity','list of vertices connected to vertex_i'))
+		string="%s\n%s"%(string,fielddisplay(self,'elementconnectivity','list of vertices connected to element_i'))
+		string="%s\n%s"%(string,fielddisplay(self,'average_vertex_connectivity','average number of vertices connected to one vertex'))
+
+		string+='\n      Extracted model():'
+		string="%s\n%s"%(string,fielddisplay(self,'extractedvertices','vertices extracted from the model()'))
+		string="%s\n%s"%(string,fielddisplay(self,'extractedelements','elements extracted from the model()')) 
+		
+		return string
+	# }}}
+	def loadobj(self): # {{{
+		# This def is directly called by matlab when a model() selfect is
+		# loaded. Update old properties here
+
+		#2014 Oct. 1st
+		if isstruct(self):
+			oldself=self
+			#Assign property values from struct
+			self=structtoobj(mesh3dsurface(),oldself)
+			if isfield(oldself,'hemisphere'):
+				print ('md.mesh.hemisphere has been automatically converted to EPSG code')
+				if strcmpi(oldself.hemisphere,'n'):
+					self.epsg=3413
+				else:
+					self.epsg=3031
+		return self
+	# }}}
+	def setdefaultparameters(self): # {{{
+
+		#the connectivity is the averaged number of nodes linked to a
+		#given node through an edge. This connectivity is used to initially
+		#allocate memory to the stiffness matrix. A value of 16 seems to
+		#give a good memory/time ration. This value can be checked in
+		#trunk/test/Miscellaneous/runme.m
+		self.average_vertex_connectivity=25
+		return self
+	# }}}
+	def checkconsistency(self,md,solution,analyses): # {{{
+
+		md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.lat','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.long','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.r','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',arange(1,md.mesh.numberofvertices+1))
+		md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements,3])
+		if any(not ismember([md.mesh.numberofvertices],sort(unique(md.mesh.elements)))):
+			md = checkmessage(md,'orphan nodes have been found. Check the mesh outline')
+		
+		md = checkfield(md,'fieldname','mesh.numberofelements','>',0)
+		md = checkfield(md,'fieldname','mesh.numberofvertices','>',0)
+		md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message','"mesh.average_vertex_connectivity" should be at least 9 in 2d')
+
+		if (solution=='ThermalSolution'):
+			md = checkmessage(md,'thermal not supported for 2d mesh');
+			
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid): # {{{
+		WriteData(fid,prefix,'name','md.mesh.domain_type','data','Domain' + self.domaintype(),'format','String')
+		WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',self.dimension(),'format','Integer')
+		WriteData(fid,prefix,'name','md.mesh.elementtype','data',self.elementtype(),'format','String')
+		WriteData(fid,prefix,'object',self,'fieldname','x','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','y','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','z','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','lat','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','long','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','r','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'name','md.mesh.z','data',zeros(md.mesh.numberofvertices),'format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','elements','format','DoubleMat','mattype',2)
+		WriteData(fid,prefix,'object',self,'fieldname','numberofelements','format','Integer')
+		WriteData(fid,prefix,'object',self,'fieldname','numberofvertices','format','Integer')
+		WriteData(fid,prefix,'object',self,'fieldname','average_vertex_connectivity','format','Integer')
+		WriteData(fid,prefix,'object',self,'fieldname','vertexonboundary','format','DoubleMat','mattype',1)
+	# }}}
+	def domaintype(self): # {{{
+		return '3Dsurface'
+	# }}}
+	def dimension(self): # {{{
+		return 2
+	# }}}
+	def elementtype(self): # {{{
+		return 'Tria'
+	# }}}
+	def processmesh(self,options): # {{{
+	
+		isplanet = 1
+		is2d     = 0
+
+		elements = self.elements
+		x        = self.x
+		y        = self.y
+		z        = self.z
+		return [x, y, z, elements, is2d, isplanet]
+	# }}}
+	def savemodeljs(self,fid,modelname): # {{{
+	
+		fid.write('#s.mesh=new mesh3dsurface()\n'%modelname)
+		writejs1Darray(fid,[modelname, '.mesh.x'],self.x)
+		writejs1Darray(fid,[modelname, '.mesh.y'],self.y)
+		writejs1Darray(fid,[modelname, '.mesh.z'],self.z)
+		writejs2Darray(fid,[modelname, '.mesh.elements'],self.elements)
+		writejsdouble(fid,[modelname, '.mesh.numberofelements'],self.numberofelements)
+		writejsdouble(fid,[modelname, '.mesh.numberofvertices'],self.numberofvertices)
+		writejsdouble(fid,[modelname, '.mesh.numberofedges'],self.numberofedges)
+		writejs1Darray(fid,[modelname, '.mesh.lat'],self.lat)
+		writejs1Darray(fid,[modelname, '.mesh.long'],self.long)
+		writejs1Darray(fid,[modelname, '.mesh.r'],self.r)
+		writejs1Darray(fid,[modelname, '.mesh.vertexonboundary'],self.vertexonboundary)
+		writejs2Darray(fid,[modelname, '.mesh.edges'],self.edges)
+		writejs2Darray(fid,[modelname, '.mesh.segments'],self.segments)
+		writejs2Darray(fid,[modelname, '.mesh.segmentmarkers'],self.segmentmarkers)
+		writejs2Darray(fid,[modelname, '.mesh.vertexconnectivity'],self.vertexconnectivity)
+		writejs2Darray(fid,[modelname, '.mesh.elementconnectivity'],self.elementconnectivity)
+		writejsdouble(fid,[modelname, '.mesh.average_vertex_connectivity'],self.average_vertex_connectivity)
+		writejs1Darray(fid,[modelname, '.mesh.extractedvertices'],self.extractedvertices)
+		writejs1Darray(fid,[modelname, '.mesh.extractedelements'],self.extractedelements)
+
+	# }}}
+	
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dtetras.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dtetras.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mesh3dtetras.m	(revision 21239)
@@ -0,0 +1,181 @@
+%MESH3DTETRAS class definition
+%
+%   Usage:
+%      mesh=mesh3dtetras();
+
+classdef mesh3dtetras
+	properties (SetAccess=public) 
+		x                           = NaN;
+		y                           = NaN;
+		z                           = NaN;
+		elements                    = NaN;
+		numberoflayers              = 0;
+		numberofelements            = 0;
+		numberofvertices            = 0;
+
+		lat                         = NaN;
+		long                        = NaN;
+		epsg                        = 0;
+
+		vertexonbase                = NaN;
+		vertexonsurface             = NaN;
+		lowerelements               = NaN;
+		lowervertex                 = NaN;
+		upperelements               = NaN;
+		uppervertex                 = NaN;
+		vertexonboundary            = NaN;
+
+		vertexconnectivity          = NaN;
+		elementconnectivity         = NaN;
+		average_vertex_connectivity = 0;
+
+		x2d                         = NaN;
+		y2d                         = NaN;
+		elements2d                  = NaN;
+		numberofvertices2d          = 0;
+		numberofelements2d          = 0;
+
+		extractedvertices           = NaN;
+		extractedelements           = NaN;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model selfect is
+			% loaded. Update old properties here
+
+			%2014 Oct. 1st
+			if isstruct(self),
+				oldself=self;
+				%Assign property values from struct
+				self=structtoobj(mesh3dtetras(),oldself);
+				if isfield(oldself,'hemisphere'),
+					disp('md.mesh.hemisphere has been automatically converted to EPSG code');
+					if strcmpi(oldself.hemisphere,'n'),
+						self.epsg=3413;
+					else
+						self.epsg=3031;
+					end
+				end
+			end
+
+		end% }}}
+	end
+	methods
+		function self = mesh3dtetras(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('mesh3dtetras');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%the connectivity is the averaged number of nodes linked to a
+			%given node through an edge. This connectivity is used to initially
+			%allocate memory to the stiffness matrix. A value of 16 seems to
+			%give a good memory/time ration. This value can be checked in
+			%trunk/test/Miscellaneous/runme.m
+			self.average_vertex_connectivity=25;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',1:md.mesh.numberofvertices);
+			md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements 4]);
+			if any(~ismember(1:md.mesh.numberofvertices,sort(unique(md.mesh.elements(:)))));
+				md = checkmessage(md,'orphan nodes have been found. Check the mesh outline');
+			end
+			md = checkfield(md,'fieldname','mesh.numberoflayers','>=',0);
+			md = checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			md = checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			md = checkfield(md,'fieldname','mesh.vertexonbase','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+			md = checkfield(md,'fieldname','mesh.vertexonsurface','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+			md = checkfield(md,'fieldname','mesh.z','>=',md.geometry.base-10^-10,'message','''mesh.z'' lower than bedrock');
+			md = checkfield(md,'fieldname','mesh.z','<=',md.geometry.surface+10^-10,'message','''mesh.z'' higher than surface elevation');
+			md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',24,'message','''mesh.average_vertex_connectivity'' should be at least 24 in 3d');
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   3D tetra Mesh:')); 
+
+			disp(sprintf('\n      Elements and vertices of the original 2d mesh:'));
+			fielddisplay(self,'numberofelements2d','number of elements');
+			fielddisplay(self,'numberofvertices2d','number of vertices');
+			fielddisplay(self,'elements2d','vertex indices of the mesh elements');
+			fielddisplay(self,'x2d','vertices x coordinate [m]');
+			fielddisplay(self,'y2d','vertices y coordinate [m]');
+
+			disp(sprintf('\n      Elements and vertices of the extruded 3d mesh:'));
+			fielddisplay(self,'numberofelements','number of elements');
+			fielddisplay(self,'numberofvertices','number of vertices');
+			fielddisplay(self,'elements','vertex indices of the mesh elements');
+			fielddisplay(self,'x','vertices x coordinate [m]');
+			fielddisplay(self,'y','vertices y coordinate [m]');
+			fielddisplay(self,'z','vertices z coordinate [m]');
+
+			disp(sprintf('\n      Properties:'));
+			fielddisplay(self,'numberoflayers','number of extrusion layers');
+			fielddisplay(self,'vertexonbase','lower vertices flags list');
+			fielddisplay(self,'vertexonsurface','upper vertices flags list');
+			fielddisplay(self,'uppervertex','upper vertex list (NaN for vertex on the upper surface)');
+			fielddisplay(self,'upperelements','upper element list (NaN for element on the upper layer)');
+			fielddisplay(self,'lowervertex','lower vertex list (NaN for vertex on the lower surface)');
+			fielddisplay(self,'lowerelements','lower element list (NaN for element on the lower layer');
+			fielddisplay(self,'vertexonboundary','vertices on the boundary of the domain flag list');
+
+			fielddisplay(self,'vertexconnectivity','list of vertices connected to vertex_i');
+			fielddisplay(self,'elementconnectivity','list of vertices connected to element_i');
+			fielddisplay(self,'average_vertex_connectivity','average number of vertices connected to one vertex');
+
+			disp(sprintf('\n      Extracted model:'));
+			fielddisplay(self,'extractedvertices','vertices extracted from the model');
+			fielddisplay(self,'extractedelements','elements extracted from the model');
+
+			disp(sprintf('\n      Projection:'));
+			fielddisplay(self,'lat','vertices latitude [degrees]');
+			fielddisplay(self,'long','vertices longitude [degrees]');
+			fielddisplay(self,'epsg','EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.mesh.domain_type','data',['Domain' domaintype(self)],'format','String');
+			WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',dimension(self),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.elementtype','data',elementtype(self),'format','String');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','z','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberoflayers','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonbase','format','BooleanMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonsurface','format','BooleanMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','lowerelements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','upperelements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','elements2d','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofvertices2d','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofelements2d','format','Integer');
+		end % }}}
+		function t = domaintype(self) % {{{
+			t = '3D';
+		end % }}}
+		function d = dimension(self) % {{{
+			d = 3;
+		end % }}}
+		function s = elementtype(self) % {{{
+			s = 'Tetra';
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/miscellaneous.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/miscellaneous.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/miscellaneous.js	(revision 21239)
@@ -0,0 +1,39 @@
+//MISCELLANEOUS class definition
+//
+//   Usage:
+//      miscellaneous=new miscellaneous();
+
+function miscellaneous (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   miscellaneous parameters:'));
+
+		fielddisplay(this,'notes','notes in a cell of strings');
+		fielddisplay(this,'name','model name');
+		fielddisplay(this,'dummy','empty field to store some data');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "miscellaneous";
+	}// }}}
+		this.checkconsistency= function(md,solution,analyses) {// {{{
+
+			checkfield(md,'fieldname','miscellaneous.name','empty',1);
+		}// }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','name','format','String');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.notes = '';
+	this.name  = '';
+	this.dummy = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/miscellaneous.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/miscellaneous.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/miscellaneous.m	(revision 21239)
@@ -0,0 +1,54 @@
+%MISCELLANEOUS class definition
+%
+%   Usage:
+%      miscellaneous=miscellaneous();
+
+classdef miscellaneous
+	properties (SetAccess=public) 
+		notes = '';
+		name  = '';
+		dummy = struct();
+	end
+	methods
+		function self = miscellaneous(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','miscellaneous.name','empty',1);
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   miscellaneous parameters:'));
+
+			fielddisplay(self,'notes','notes in a cell of strings');
+			fielddisplay(self,'name','model name');
+			fielddisplay(self,'dummy','empty field to store some data');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','name','format','String');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			writejsstring(fid,[modelname '.miscellaneous.notes'],self.notes);
+			writejsstring(fid,[modelname '.miscellaneous.name'],self.name);
+			if strcmpi(class(self.dummy),'double'),
+				if size(self.dummy,2)==1,
+					writejs1Darray(fid,[modelname '.miscellaneous.dummy'],self.dummy);
+				else
+					writejs2Darray(fid,[modelname '.miscellaneous.dummy'],self.dummy);
+				end
+			end
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/miscellaneous.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/miscellaneous.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/miscellaneous.py	(revision 21239)
@@ -0,0 +1,40 @@
+from collections import OrderedDict
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+class miscellaneous(object):
+	"""
+	MISCELLANEOUS class definition
+
+	   Usage:
+	      miscellaneous=miscellaneous();
+	"""
+
+	def __init__(self): # {{{
+		self.notes = ''
+		self.name  = ''
+		self.dummy = OrderedDict()
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   miscellaneous parameters:'
+
+		string="%s\n%s"%(string,fielddisplay(self,'notes','notes in a cell of strings'))
+		string="%s\n%s"%(string,fielddisplay(self,'name','model name'))
+		string="%s\n%s"%(string,fielddisplay(self,'dummy','empty field to store some data'))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		md = checkfield(md,'fieldname','miscellaneous.name','empty',1)
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    #  {{{
+		WriteData(fid,prefix,'object',self,'fieldname','name','format','String');
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/misfit.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/misfit.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/misfit.m	(revision 21239)
@@ -0,0 +1,105 @@
+%MISFIT class definition
+%
+%   Usage:
+%      misfit=misfit();
+%      misfit=misfit('name','SurfaceAltimetry',...
+%                    'definitionstring','Outputdefinition1',... 
+%							'model_string','Surface',...
+%                    'observation_string','SurfaceObservations',...
+%                    'observation',md.geometry.surface,...
+%                    'timeinterpolation','nearestneighbor',...
+%                    'local',1,...
+%                    'weights',ones(md.mesh.numberofvertices,1),...
+%                    'weights_string','WeightsSurfaceObservations');
+%
+%
+
+classdef misfit
+	properties (SetAccess=public)
+		%misfit
+		name						= '';
+		definitionstring		= ''; %string that identifies this output definition uniquely, from 'Outputdefinition[1-10]'
+		model_string			= ''; %string for field that is modeled
+		observation				= NaN; %observed field that we compare the model against
+		observation_string	= ''; %string for observed field.
+		timeinterpolation		= '';
+		local						= 1;
+		weights					= NaN; %weight coefficients for every vertex
+		weights_string			= ''; %string to identify this particular set of weights
+		cumulated				= NaN; %do we cumulate misfit through time?
+	end
+	
+	methods
+		function self = misfit(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name=getfieldvalue(options,'name','');
+				self.definitionstring=getfieldvalue(options,'definitionstring');
+				self.model_string=getfieldvalue(options,'model_string');
+				self.observation=getfieldvalue(options,'observation',NaN);
+				self.observation_string=getfieldvalue(options,'observation_string');
+				self.local=getfieldvalue(options,'local',1);
+				self.timeinterpolation=getfieldvalue(options,'timeinterpolation','nearestneighbor');
+				self.weights=getfieldvalue(options,'weights',NaN);
+				self.weights_string=getfieldvalue(options,'weights_string','');
+
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			self.local=1;
+			self.timeinterpolation='nearestneighbor';
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ischar(self.name),
+				error('misfit error message: ''name'' field should be a string!');
+			end
+			OutputdefinitionStringArray={};
+			for i=1:100
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+			md = checkfield(md,'fieldname','self.definitionstring','field',self.definitionstring,'values',OutputdefinitionStringArray);
+
+			if ~ischar(self.timeinterpolation),
+				error('misfit error message: ''timeinterpolation'' field should be a string!');
+			end
+			md = checkfield(md,'fieldname','self.observation','field',self.observation,'timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','self.timeinterpolation','field',self.timeinterpolation,'values',{'nearestneighbor'});
+			md = checkfield(md,'fieldname','self.weights','field',self.weights,'timeseries',1,'NaN',1,'Inf',1);
+
+		end % }}}
+		function md = disp(self) % {{{
+		
+			disp(sprintf('   Misfit:\n'));
+
+			fielddisplay(self,'name','identifier for this misfit response');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from ''Outputdefinition[1-10]''');
+			fielddisplay(self,'model_string','string for field that is modeled');
+			fielddisplay(self,'observation','observed field that we compare the model against');
+			fielddisplay(self,'observation_string','observation string');
+			fielddisplay(self,'local','is the response local to the elements, or global? (default is 1)''');
+			fielddisplay(self,'timeinterpolation','interpolation routine used to interpolate misfit between two time steps (default is ''nearestneighbor''');
+			fielddisplay(self,'weights','weights (at vertices) to apply to the misfit');
+			fielddisplay(self,'weights_string','string for weights for identification purposes');
+
+		end % }}}
+		function md = marshall(self,prefix,md,fid) % {{{
+
+		WriteData(fid,prefix,'data',self.name,'name','md.misfit.name','format','String');
+		WriteData(fid,prefix,'data',self.definitionstring,'name','md.misfit.definitionstring','format','String');
+		WriteData(fid,prefix,'data',self.model_string,'name','md.misfit.model_string','format','String');
+		WriteData(fid,prefix,'data',self.observation,'name','md.misfit.observation','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'data',self.observation_string,'name','md.misfit.observation_string','format','String');
+		WriteData(fid,prefix,'data',self.local,'name','md.misfit.local','format','Integer');
+		WriteData(fid,prefix,'data',self.timeinterpolation,'name','md.misfit.timeinterpolation','format','String');
+		WriteData(fid,prefix,'data',self.weights,'name','md.misfit.weights','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'data',self.weights_string,'name','md.misfit.weights_string','format','String');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mismipbasalforcings.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mismipbasalforcings.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mismipbasalforcings.m	(revision 21239)
@@ -0,0 +1,99 @@
+%MISMIP BASAL FORCINGS class definition
+%
+%   Usage:
+%      mismipbasalforcings=mismipbasalforcings();
+
+classdef mismipbasalforcings
+	properties (SetAccess=public) 
+		groundedice_melting_rate  = NaN;
+		meltrate_factor           = NaN;
+		threshold_thickness       = NaN;
+		upperdepth_melt           = NaN;
+		geothermalflux            = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1); 
+			self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1); %bedrock only gets geothermal flux
+		end % }}}
+		function self = mismipbasalforcings(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(mismipbasalforcings(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.groundedice_melting_rate),
+				self.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.groundedice_melting_rate specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%default values for melting parameterization
+			self.meltrate_factor        = 0.2;
+			self.threshold_thickness    = 75;
+			self.upperdepth_melt        = -100;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.ismasstransport==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',1);
+			end
+			if ismember('ThermalAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.isthermal==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+			end
+			if isnan(md.geometry.bed),
+				md = checkmessage(md,['requesting mismip basal melting parameterization, but bathymetry is absent!']);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   MISMIP+ basal melt parameterization:'));
+
+			fielddisplay(self,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+			fielddisplay(self,'meltrate_factor','Melt-rate rate factor [1/yr] (sign is opposite to MISMIP+ benchmark to remain consistent with ISSM convention of positive values for melting)');
+			fielddisplay(self,'threshold_thickness','threshold thickness for saturation of basal melting [m]');
+			fielddisplay(self,'upperdepth_melt','depth above which the melt rate is zero [m]');
+			fielddisplay(self,'geothermalflux','geothermal heat flux [W/m^2]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+			if yts~=365.2422*24.*3600.
+				disp('WARNING: value of yts for MISMIP+ runs different from ISSM default!');
+			end
+
+			floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+			floatingice_melting_rate=md.basalforcings.meltrate_factor*tanh((md.geometry.base-md.geometry.bed)./md.basalforcings.threshold_thickness).*max(md.basalforcings.upperdepth_melt-md.geometry.base,0);
+
+			WriteData(fid,prefix,'name','md.basalforcings.model','data',3,'format','Integer');
+			WriteData(fid,prefix,'data',floatingice_melting_rate,'format','DoubleMat','name','md.basalforcings.floatingice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','name','md.basalforcings.groundedice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','name','md.basalforcings.geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','meltrate_factor','format','Double','scale',1./yts)
+			WriteData(fid,prefix,'object',self,'fieldname','threshold_thickness','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','upperdepth_melt','format','Double')
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mismipbasalforcings.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mismipbasalforcings.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/mismipbasalforcings.py	(revision 21239)
@@ -0,0 +1,96 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+import numpy
+
+class mismipbasalforcings(object):
+    """
+    MISMIP Basal Forcings class definition
+
+        Usage:
+	    mismipbasalforcings=mismipbasalforcings()
+    """
+
+    def __init__(self,md): # {{{
+
+        self.groundedice_melting_rate = float('NaN')
+        self.meltrate_factor = float('NaN')
+        self.threshold_thickness = float('NaN')
+        self.upperdepth_melt = float('NaN')
+        self.geothermalflux = float('NaN')
+
+        if numpy.all(numpy.isnan(self.groundedice_melting_rate)):
+            self.groundedice_melting_rate=numpy.zeros(md.mesh.numberofvertices)
+            print ' no basalforcings.groundedice_melting_rate specified: values set as zero'
+
+	self.setdefaultparameters()
+
+    #}}}
+    def __repr__(self): # {{{
+        string=" MISMIP+ basal melt parameterization\n"
+        string="%s\n%s"%(string,fielddisplay(self,"groundedice_melting_rate","basal melting rate (positive if melting) [m/yr]"))
+        string="%s\n%s"%(string,fielddisplay(self,"meltrate_factor","Melt-rate rate factor [1/yr] (sign is opposite to MISMIP+ benchmark to remain consistent with ISSM convention of positive values for melting)"))
+        string="%s\n%s"%(string,fielddisplay(self,"threshold_thickness","Threshold thickness for saturation of basal melting [m]"))
+        string="%s\n%s"%(string,fielddisplay(self,"upperdepth_melt","Depth above which melt rate is zero [m]"))
+        string="%s\n%s"%(string,fielddisplay(self,"geothermalflux","Geothermal heat flux [W/m^2]"))
+
+	return string
+    #}}}
+	 def extrude(self,md): # {{{
+		 self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1)
+		 self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1)    #bedrock only gets geothermal flux
+	return self
+    #}}}
+    def setdefaultparameters(self): # {{{
+
+        # default values for melting parameterization
+        self.meltrate_factor = 0.2
+        self.threshold_thickness = 75.
+        self.upperdepth_melt = -100.
+
+	return self
+    #}}}
+    def checkconsistency(self,md,solution,analyses):    # {{{
+
+	#Early return
+        if 'MasstransportAnalysis' in analyses and not (solution=='TransientSolution' and md.transient.ismasstransport==0):
+
+	    md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+	    md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
+
+        if 'BalancethicknessAnalysis' in analyses:
+
+	    md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+	    md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
+
+        if 'ThermalAnalysis' in analyses and not (solution=='TransientSolution' and md.transient.isthermal==0):
+
+	    md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+	    md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0)
+	return md
+    # }}}
+    def marshall(self,prefix,md,fid):    # {{{
+
+        yts=md.constants.yts
+        if yts!=365.2422*24.*3600.:
+            print 'WARNING: value of yts for MISMIP+ runs different from ISSM default!'
+
+        floatingice_melting_rate = numpy.zeros((md.mesh.numberofvertices,1))
+        floatingice_melting_rate = md.basalforcings.meltrate_factor*numpy.tanh((md.geometry.base-md.geometry.bed)/md.basalforcings.threshold_thickness)*numpy.amax(md.basalforcings.upperdepth_melt-md.geometry.base,0)
+
+	WriteData(fid,prefix,'name','md.basalforcings.model','data',3,'format','Integer')
+	WriteData(fid,prefix,'data',floatingice_melting_rate,'format','DoubleMat','name','md.basalforcings.floatingice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+	WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','name','md.basalforcings.groundedice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+	WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','name','md.basalforcings.geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+	WriteData(fid,prefix,'object',self,'fieldname','meltrate_factor','format','Double','scale',1./yts)
+	WriteData(fid,prefix,'object',self,'fieldname','threshold_thickness','format','Double')
+	WriteData(fid,prefix,'object',self,'fieldname','upperdepth_melt','format','Double')
+
+    # }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/model.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/model.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/model.js	(revision 21239)
@@ -0,0 +1,625 @@
+//MODEL class definition
+//
+//   Usage:
+//      md = new model()
+
+function model () {
+	//methods
+		this.disp = function() { //{{{
+			console.log(sprintf("class model echo: "));
+			console.log(sprintf("//19s: //-22s -- //s","mesh"            ,"[1x1 " + typeof(this.mesh) + "]","mesh properties"));
+			console.log(sprintf("//19s: //-22s -- //s","mask"            ,"[1x1 " + typeof(this.mask) + "]","defines grounded and floating elements"));
+			console.log(sprintf("//19s: //-22s -- //s","geometry"        ,"[1x1 " + typeof(this.geometry) + "]","surface elevation, bedrock topography, ice thickness,..."));
+			console.log(sprintf("//19s: //-22s -- //s","constants"       ,"[1x1 " + typeof(this.constants) + "]","physical constants"));
+			console.log(sprintf("//19s: //-22s -- //s","smb"             ,"[1x1 " + typeof(this.smb) + "]","surface mass balance"));
+			console.log(sprintf("//19s: //-22s -- //s","basalforcings"   ,"[1x1 " + typeof(this.basalforcings) + "]","bed forcings"));
+			console.log(sprintf("//19s: //-22s -- //s","materials"       ,"[1x1 " + typeof(this.materials) + "]","material properties"));
+			console.log(sprintf("//19s: //-22s -- //s","damage"          ,"[1x1 " + typeof(this.damage) + "]","parameters for damage evolution solution"));
+			console.log(sprintf("//19s: //-22s -- //s","friction"        ,"[1x1 " + typeof(this.friction) + "]","basal friction/drag properties"));
+			console.log(sprintf("//19s: //-22s -- //s","flowequation"    ,"[1x1 " + typeof(this.flowequation) + "]","flow equations"));
+			console.log(sprintf("//19s: //-22s -- //s","timestepping"    ,"[1x1 " + typeof(this.timestepping) + "]","time stepping for trans models"));
+			console.log(sprintf("//19s: //-22s -- //s","initialization"  ,"[1x1 " + typeof(this.initialization) + "]","initial guess/state"));
+			console.log(sprintf("//19s: //-22s -- //s","rifts"           ,"[1x1 " + typeof(this.rifts) + "]","rifts properties"));
+			console.log(sprintf("//19s: //-22s -- //s","slr"             ,"[1x1 " + typeof(this.slr) + "]","slr forcings"));
+			console.log(sprintf("//19s: //-22s -- //s","debug"           ,"[1x1 " + typeof(this.debug) + "]","debugging tools (valgrind, gprof)"));
+			console.log(sprintf("//19s: //-22s -- //s","verbose"         ,"[1x1 " + typeof(this.verbose) + "]","verbosity level in solve"));
+			console.log(sprintf("//19s: //-22s -- //s","settings"        ,"[1x1 " + typeof(this.settings) + "]","settings properties"));
+			console.log(sprintf("//19s: //-22s -- //s","toolkits"        ,"[1x1 " + typeof(this.toolkits) + "]","PETSc options for each solution"));
+			console.log(sprintf("//19s: //-22s -- //s","cluster"         ,"[1x1 " + typeof(this.cluster) + "]","cluster parameters (number of cpus...)"));
+			console.log(sprintf("//19s: //-22s -- //s","balancethickness","[1x1 " + typeof(this.balancethickness) + "]","parameters for balancethickness solution"));
+			console.log(sprintf("//19s: //-22s -- //s","stressbalance"   ,"[1x1 " + typeof(this.stressbalance) + "]","parameters for stressbalance solution"));
+			console.log(sprintf("//19s: //-22s -- //s","groundingline"   ,"[1x1 " + typeof(this.groundingline) + "]","parameters for groundingline solution"));
+			console.log(sprintf("//19s: //-22s -- //s","hydrology"       ,"[1x1 " + typeof(this.hydrology) + "]","parameters for hydrology solution"));
+			console.log(sprintf("//19s: //-22s -- //s","masstransport"   ,"[1x1 " + typeof(this.masstransport) + "]","parameters for masstransport solution"));
+			console.log(sprintf("//19s: //-22s -- //s","thermal"         ,"[1x1 " + typeof(this.thermal) + "]","parameters for thermal solution"));
+			console.log(sprintf("//19s: //-22s -- //s","steadystate"     ,"[1x1 " + typeof(this.steadystate) + "]","parameters for steadystate solution"));
+			console.log(sprintf("//19s: //-22s -- //s","trans"       ,"[1x1 " + typeof(this.trans) + "]","parameters for trans solution"));
+			console.log(sprintf("//19s: //-22s -- //s","levelset"        ,"[1x1 " + typeof(this.levelset) + "]","parameters for moving boundaries (level-set method)"));
+			console.log(sprintf("//19s: //-22s -- //s","calving"         ,"[1x1 " + typeof(this.calving) + "]","parameters for calving"));
+			console.log(sprintf("//19s: //-22s -- //s","gia"             ,"[1x1 " + typeof(this.gia) + "]","parameters for gia solution"));
+			console.log(sprintf("//19s: //-22s -- //s","autodiff"        ,"[1x1 " + typeof(this.autodiff) + "]","automatic differentiation parameters"));
+			console.log(sprintf("//19s: //-22s -- //s","inversion"       ,"[1x1 " + typeof(this.inversion) + "]","parameters for inverse methods"));
+			console.log(sprintf("//19s: //-22s -- //s","qmu"             ,"[1x1 " + typeof(this.qmu) + "]","dakota properties"));
+			console.log(sprintf("//19s: //-22s -- //s","outputdefinition","[1x1 " + typeof(this.outputdefinition) + "]","output definition"));
+			console.log(sprintf("//19s: //-22s -- //s","results"         ,"[1x1 " + typeof(this.results) + "]","model results"));
+			console.log(sprintf("//19s: //-22s -- //s","radaroverlay"    ,"[1x1 " + typeof(this.radaroverlay) + "]","radar image for plot overlay"));
+			console.log(sprintf("//19s: //-22s -- //s","miscellaneous"   ,"[1x1 " + typeof(this.miscellaneous) + "]","miscellaneous fields"));
+		} //}}}
+		this.setdefaultparameters = function () { // {{{
+
+			//initialize subclasses
+			this.mesh             = new mesh2d();
+			this.mask             = new mask();
+			this.constants        = new constants();
+			this.geometry         = new geometry();
+			this.initialization   = new initialization();
+			this.smb              = new SMBforcing();
+			this.basalforcings    = new basalforcings();
+			this.friction         = new friction();
+			this.rifts            = new rifts();
+			this.slr              = new slr();
+			this.timestepping     = new timestepping();
+			this.groundingline    = new groundingline();
+			this.materials        = new matice();
+			this.damage           = new damage();
+			this.flowequation     = new flowequation();
+			this.debug            = new debug();
+			this.verbose          = new verbose();
+			this.settings         = new settings();
+			this.toolkits         = new toolkits();
+			this.cluster          = new local();
+			this.balancethickness = new balancethickness();
+			this.stressbalance    = new stressbalance();
+			this.hydrology        = new hydrologyshreve();
+			this.masstransport    = new masstransport();
+			this.thermal          = new thermal();
+			this.steadystate      = new steadystate();
+			this.trans            = new trans();
+			this.levelset		  = new levelset();
+			this.calving          = new calving();
+			this.gia              = new gia();
+			this.autodiff         = new autodiff();
+			this.inversion        = new inversion();
+			this.qmu              = new qmu();
+			this.radaroverlay     = new radaroverlay();
+			this.results          = {};
+			this.outputdefinition = new outputdefinition();
+			this.miscellaneous    = new miscellaneous();
+			this.priv             = new priv();
+		} //}}}
+		this.checkmessage = function(string){ //{{{
+			console.log('model not consistent: ' + string);
+			this.priv.isconsistent=false;
+		} //}}}
+		this.fix = function(){ //{{{
+
+			for (var field in this){
+
+				//Some properties do not need to be fixed
+				if (field == 'results' | field =='radaroverlay' | field == 'toolkits' | field =='cluster' | field == 'priv') continue;
+
+				//Check that current field is a class
+				if(typeof this[field] == 'function'){
+					continue;
+				}
+
+				//Fix current object
+				this[field].fix(this);
+			}
+
+		} //}}}
+        this.extrude = function(md) { //{{{
+        //EXTRUDE - vertically extrude a 2d mesh
+        //
+        //   vertically extrude a 2d mesh and create corresponding 3d mesh.
+        //   The vertical distribution can:
+        //    - follow a polynomial law
+        //    - follow two polynomial laws, one for the lower part and one for the upper part of the mesh
+        //    - be discribed by a list of coefficients (between 0 and 1)
+        //   
+        //
+        //   Usage:
+        //      md=extrude(md,numlayers,extrusionexponent);
+        //      md=extrude(md,numlayers,lowerexponent,upperexponent);
+        //      md=extrude(md,listofcoefficients);
+        //
+        //   Example:
+        //      md=extrude(md,15,1.3);
+        //      md=extrude(md,15,1.3,1.2);
+        //      md=extrude(md,[0 0.2 0.5 0.7 0.9 0.95 1]);
+        //
+        //   See also: MODELEXTRACT, COLLAPSE
+
+        //some checks on list of arguments
+            var argc = arguments.length;
+
+            if ((argc > 4) | (argc < 2)) {
+                throw "extrude error message";
+            }
+
+            //Extrude the mesh
+            if (argc==2) { //list of coefficients
+                clist=arguments[0];
+
+                if (clist.some(function(x) { return x < 0; }) | clist.some(function(x) { return x > 1; }))
+                    throw 'extrusioncoefficients must be between 0 and 1';
+                clistcopy.push.apply(clistcopy, [0, 1]);
+
+                extrusionlist=clistcopy.reverse().filter(function(e, i, arr) { //only keep unique elements
+                    return arr.indexOf(e, i+1) === -1;
+                }).sort();
+
+                numlayers=extrusionlist.length;
+            } else if (argc==3) { //one polynomial law
+                if (arguments[1]<=0) {
+                    //help extrude;
+                    throw 'extrusionexponent must be >=0';
+                }
+                numlayers=arguments[0];
+
+                extrusionlist = [];
+
+                for (var i = 0; i < numlayers; i++) {
+                    extrusionlist.push(Math.pow(i/(numlayers-1), arguments[1]));
+                };
+
+            } else if (argc==4) { //two polynomial laws
+                numlayers=arguments[0];
+                lowerexp=arguments[1];
+                upperexp=arguments[2];
+
+                if (arguments[1]<=0 | args[2]<=0) {
+                    throw 'lower and upper extrusionexponents must be >=0';
+                }
+
+                lowerextrusionlist = [];
+                for (var i = 0; i <= 1; i += (2/(numlayers-1))) {
+                    lowerextrusionlist.push(Math.pow(i, lowerexp)/2)
+                };
+
+                upperextrusionlist = [];
+                for (var i = 0; i <= 1; i += (2/(numlayers-1))) {
+                    upperextrusionlist.push(Math.pow(i, upperexp)/2)
+                };
+
+                //lowerextrusionlist=[(0:2/(numlayers-1):1).^lowerexp]/2;
+                //upperextrusionlist=[(0:2/(numlayers-1):1).^upperexp]/2;
+
+                var temp = lowerextrusionlist;
+                temp.push.apply(temp, [1]);
+
+                var temp2 = upperextrusionlist.map(function(x) { return -x; });
+                temp.push.apply(temp, temp2);
+
+                clistcopy.push.apply(clistcopy, [0, 1]);
+                //extrusionlist=sort(unique([lowerextrusionlist 1-upperextrusionlist]));
+                extrusionlist=temp.sort();
+            }
+
+            if (numlayers<2) {
+                console.error('number of layers should be at least 2');
+            }
+
+            if (md.mesh.domaintype() === '3D') {
+                console.error('Cannot extrude a 3d mesh (extrude cannot be called more than once)');
+            }
+
+            //Initialize with the 2d mesh
+            var mesh2d = md.mesh;
+            md.mesh=new mesh3dprisms();
+
+            md.mesh.x                           = mesh2d.x;
+            md.mesh.y                           = mesh2d.y;
+            md.mesh.elements                    = mesh2d.elements;
+            md.mesh.numberofelements            = mesh2d.numberofelements;
+            md.mesh.numberofvertices            = mesh2d.numberofvertices;
+
+            md.mesh.lat                         = mesh2d.lat;
+            md.mesh.long                        = mesh2d.long;
+            md.mesh.epsg                        = mesh2d.epsg;
+
+            md.mesh.vertexonboundary            = mesh2d.vertexonboundary;
+            md.mesh.vertexconnectivity          = mesh2d.vertexconnectivity;
+            md.mesh.elementconnectivity         = mesh2d.elementconnectivity;
+            md.mesh.average_vertex_connectivity = mesh2d.average_vertex_connectivity;
+
+            md.mesh.extractedvertices           = mesh2d.extractedvertices;
+            md.mesh.extractedelements           = mesh2d.extractedelements;
+
+            x3d=[]; 
+            y3d=[];
+            z3d=[];  //the lower node is on the bed
+            thickness3d=md.geometry.thickness; //thickness and bed for these nodes
+                bed3d=md.geometry.base;
+
+            //Create the new layers
+            for (var i = 1; i <= numlayers; i++) {
+                x3d=[x3d, md.mesh.x]; 
+                y3d=[y3d, md.mesh.y];
+                //nodes are distributed between bed and surface accordingly to the given exponent
+                z3d=[z3d, bed3d+thickness3d*extrusionlist(i)]; 
+            };
+
+            number_nodes3d=x3d.length; //number of 3d nodes for the non extruded part of the mesh
+
+            //Extrude elements 
+            elements3d=[];
+            for (var i = 0; i < numlayers; i++) {
+                elements3d.push(md.mesh.elements+(i-1)*md.mesh.numberofvertices, md.mesh.elements+i*md.mesh.numberofvertices); //Create the elements of the 3d mesh for the non extruded part
+            };
+
+            number_el3d=elements3d.length; //number of 3d nodes for the non extruded part of the mesh
+
+            function fillArray(value, len) {
+                if (len == 0) return [];
+                var a = [value];
+                while (a.length * 2 <= len) a = a.concat(a);
+                if (a.length < len) a = a.concat(a.slice(0, len - a.length));
+                return a;
+            }
+
+            //Keep a trace of lower and upper nodes
+            //lowervertex=NaN*ones(number_nodes3d,1);
+            //uppervertex=NaN*ones(number_nodes3d,1);
+
+            lowervertex = fillArray(NaN, number_nodes3d);
+            uppervertex = fillArray(NaN, number_nodes3d);
+
+            //lowervertex(md.mesh.numberofvertices+1:end)=1:(numlayers-1)*md.mesh.numberofvertices;
+            //uppervertex(1:(numlayers-1)*md.mesh.numberofvertices)=md.mesh.numberofvertices+1:number_nodes3d;
+
+            for (var i = md.mesh.numberofvertices+1, k = 1; i < lowervertex.length && k <= (numlayers-1)*md.mesh.numberofvertices; i++, k++) {
+                lowervertex[i] = k;
+            };
+
+            for (var i = 1, k = md.mesh.numberofvertices+1; i <= (numlayers-1)*md.mesh.numberofvertices && k <= number_nodes3d; i++, k++) {
+                uppervertex[i] = k;
+            };
+
+            md.mesh.lowervertex=lowervertex;
+            md.mesh.uppervertex=uppervertex;
+
+            //same for lower and upper elements
+            lowerelements = fillArray(NaN, number_el3d);
+            upperelements = fillArray(NaN, number_el3d);
+            //lowerelements(md.mesh.numberofelements+1:end)=1:(numlayers-2)*md.mesh.numberofelements;
+            //upperelements(1:(numlayers-2)*md.mesh.numberofelements)=md.mesh.numberofelements+1:(numlayers-1)*md.mesh.numberofelements;
+
+            for (var i = md.mesh.numberofvertices+1, k = 1; i < lowerelements.length && k <= (numlayers-2)*md.mesh.numberofelements; i++, k++) {
+                lowerelements[i] = k;
+            };
+
+            for (var i = 1, k = md.mesh.numberofelements + 1; i <= (numlayers-2)*md.mesh.numberofelements && k <= (numlayers-1)*md.mesh.numberofelements; i++, k++) {
+                upperelements[i] = k;
+            };
+
+            md.mesh.lowerelements=lowerelements;
+            md.mesh.upperelements=upperelements;
+
+            //Save old mesh 
+            md.mesh.x2d=md.mesh.x;
+            md.mesh.y2d=md.mesh.y;
+            md.mesh.elements2d=md.mesh.elements;
+            md.mesh.numberofelements2d=md.mesh.numberofelements;
+            md.mesh.numberofvertices2d=md.mesh.numberofvertices;
+
+            //Build global 3d mesh 
+            md.mesh.elements=elements3d;
+            md.mesh.x=x3d;
+            md.mesh.y=y3d;
+            md.mesh.z=z3d;
+            md.mesh.numberofelements=number_el3d;
+            md.mesh.numberofvertices=number_nodes3d;
+            md.mesh.numberoflayers=numlayers;
+
+            //Ok, now deal with the other fields from the 2d mesh:
+
+            //bedinfo and surface info
+            md.mesh.vertexonbase=project3d(md,'vector',ones(md.mesh.numberofvertices2d,1),'type','node','layer',1);
+            md.mesh.vertexonsurface=project3d(md,'vector',ones(md.mesh.numberofvertices2d,1),'type','node','layer',md.mesh.numberoflayers);
+            md.mesh.vertexonboundary=project3d(md,'vector',md.mesh.vertexonboundary,'type','node');
+
+            //lat long
+            md.mesh.lat=project3d(md,'vector',md.mesh.lat,'type','node');
+            md.mesh.long=project3d(md,'vector',md.mesh.long,'type','node');
+
+                //md.geometry=md.geometry.extrude(md);
+                //md.friction=md.friction.extrude(md);
+                //md.inversion=md.inversion.extrude(md);
+                //md.smb=md.smb.extrude(md);
+                //md.initialization=md.initialization.extrude(md);
+
+                //md.flowequation=md.flowequation.extrude(md);
+                //md.stressbalance=md.stressbalance.extrude(md);
+                //md.thermal=md.thermal.extrude(md);
+                //md.masstransport=md.masstransport.extrude(md);
+                //md.levelset=md.levelset.extrude(md);
+                //md.calving=md.calving.extrude(md);
+                //md.hydrology = md.hydrology.extrude(md);
+
+                ////connectivity
+                ////if ~isnan(md.mesh.elementconnectivity)
+
+                //if (md.mesh.elementconnectivity.every(function(e, i, arr) { return e !== null && typeof e !== 'undefined'; })) {
+                    //var temparr = [];
+                    //for (var i = 0; i < numlayers; i++) {
+                        //temparr.push(md.mesh.elementconnectivity);
+                    //};
+
+                    ////md.mesh.elementconnectivity=repmat(md.mesh.elementconnectivity,numlayers-1,1);
+
+                    //md.mesh.elementconnectivity = temparr;
+
+                    ////md.mesh.elementconnectivity(find(md.mesh.elementconnectivity==0))=NaN;
+
+                    //for (var i = 0; i < md.mesh.elementconnectivity.length; i++) {
+                        //if (md.mesh.elementconnectivity[i] == 0) {
+                            //md.mesh.elementconnectivity[i] = NaN;
+                        //}
+                    //};
+
+                    //for (var i = 2; i < numlayers; i++) {
+                        //for (var j = (i-1)*md.mesh.nuberofelements2d+1; i <= (i)*md.mesh.numberofelements2d; i++) {
+                            //md.mesh.elementconnectivity[i] += md.mesh.numberofelements2d;
+                        //};
+                        ////md.mesh.elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)...
+                            ////=md.mesh.elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)+md.mesh.numberofelements2d;
+                    //};
+
+                    //md.mesh.elementconnectivity.map(function(x) { return (isNaN(x)) ? 0 : x; });
+                //}
+
+                //md.materials=md.materials.extrude(md);
+                //md.damage=md.damage.extrude(md);
+                //md.mask=md.mask.extrude(md);
+                //md.qmu=md.qmu.extrude(md);
+                //md.basalforcings=md.basalforcings.extrude(md);
+
+                ////increase connectivity if less than 25:
+                //if (md.mesh.average_vertex_connectivity<=25)
+                    //md.mesh.average_vertex_connectivity=100;
+        } //}}}
+        this.collapse = function(md) { //{{{
+            /*
+             *COLLAPSE - collapses a 3d mesh into a 2d mesh
+             *
+             *   This routine collapses a 3d model into a 2d model
+             *   and collapses all the fileds of the 3d model by
+             *   taking their depth-averaged values
+             *
+             *   Usage:
+             *     md=collapse(md)
+             *
+             *   See also: EXTRUDE, MODELEXTRACT
+             */
+
+            // Check that the model is really a 3d model
+            if (md.mesh.elementtype() !== 'Penta') {
+                console.error('collapse error message: only 3d mesh can be collapsed')
+            }
+
+            // Start with changing all the fields from the 3d mesh 
+
+            // dealing with the friction law
+            // drag is limited to nodes that are on the bedrock.
+            if (md.friction.classname() === 'friction') {
+                md.friction.coefficient=project2d(md,md.friction.coefficient,1);
+                md.friction.p=project2d(md,md.friction.p,1);
+                md.friction.q=project2d(md,md.friction.q,1);
+            } else if (md.friction.classname() === 'frictionhydro') {
+                md.friction.q=project2d(md,md.friction.q,1);
+                md.friction.C=project2d(md,md.friction.C,1);
+                md.friction.As=project2d(md,md.friction.As,1);
+                md.friction.effective_pressure=project2d(md,md.friction.effective_pressure,1);
+            } else if (md.friction.classname() === 'frictionwaterlayer') {
+                md.friction.coefficient=project2d(md,md.friction.coefficient,1);
+                md.friction.p=project2d(md,md.friction.p,1);
+                md.friction.q=project2d(md,md.friction.q,1);
+                md.friction.water_layer=project2d(md,md.friction.water_layer,1);
+            } else if (md.friction.classname() === 'frictionweertman') {
+                md.friction.C=project2d(md,md.friction.C,1);
+                md.friction.m=project2d(md,md.friction.m,1);
+            } else if (md.friction.classname() === 'frictionweertmantemp') {
+                md.friction.C=project2d(md,md.friction.C,1);
+                md.friction.m=project2d(md,md.friction.m,1);
+            } else {
+                disp('friction type not supported');
+            }
+
+            // observations
+            if (!isNaN(md.inversion.vx_obs))
+                md.inversion.vx_obs=project2d(md,md.inversion.vx_obs,md.mesh.numberoflayers);
+
+            if (!isNaN(md.inversion.vy_obs))
+                md.inversion.vy_obs=project2d(md,md.inversion.vy_obs,md.mesh.numberoflayers);
+
+            if (!isNaN(md.inversion.vel_obs))
+                md.inversion.vel_obs=project2d(md,md.inversion.vel_obs,md.mesh.numberoflayers);
+
+            if (!isNaN(md.inversion.cost_functions_coefficients))
+                md.inversion.cost_functions_coefficients=project2d(md,md.inversion.cost_functions_coefficients,md.mesh.numberoflayers);
+
+            if (numel(md.inversion.min_parameters)>1)
+                md.inversion.min_parameters=project2d(md,md.inversion.min_parameters,md.mesh.numberoflayers);
+
+            if (numel(md.inversion.max_parameters)>1) 
+                md.inversion.max_parameters=project2d(md,md.inversion.max_parameters,md.mesh.numberoflayers);
+
+            if (md.smb.classname() === 'SMBforcing' && !isNaN(md.smb.mass_balance)) {
+                md.smb.mass_balance=project2d(md,md.smb.mass_balance,md.mesh.numberoflayers);
+            } else if (md.smb.classname() === 'SMBhenning' && !isNaN(md.smb.smbref)) {
+                md.smb.smbref=project2d(md,md.smb.smbref,md.mesh.numberoflayers);
+            }
+
+            // results
+            if (!isNaN(md.initialization.vx))
+                md.initialization.vx=DepthAverage(md,md.initialization.vx);
+            if (!isNaN(md.initialization.vy))
+                md.initialization.vy=DepthAverage(md,md.initialization.vy);
+            if (!isNaN(md.initialization.vz))
+                md.initialization.vz=DepthAverage(md,md.initialization.vz);
+            if (!isNaN(md.initialization.vel))
+                md.initialization.vel=DepthAverage(md,md.initialization.vel);
+            if (!isNaN(md.initialization.temperature))
+                md.initialization.temperature=DepthAverage(md,md.initialization.temperature);
+            if (!isNaN(md.initialization.pressure))
+                md.initialization.pressure=project2d(md,md.initialization.pressure,1);
+            if (!isNaN(md.initialization.sediment_head))
+                md.initialization.sediment_head=project2d(md,md.initialization.sediment_head,1);
+            if (!isNaN(md.initialization.epl_head))
+                md.initialization.epl_head=project2d(md,md.initialization.epl_head,1);
+            if (!isNaN(md.initialization.epl_thickness))
+                md.initialization.epl_thickness=project2d(md,md.initialization.epl_thickness,1);
+
+            // gia
+            if (!isNaN(md.gia.mantle_viscosity))
+                md.gia.mantle_viscosity=project2d(md,md.gia.mantle_viscosity,1);
+            if (!isNaN(md.gia.lithosphere_thickness))
+                md.gia.lithosphere_thickness=project2d(md,md.gia.lithosphere_thickness,1);
+
+            // elementstype
+            if (!isNaN(md.flowequation.element_equation)) {
+                md.flowequation.element_equation=project2d(md,md.flowequation.element_equation,1);
+                md.flowequation.vertex_equation=project2d(md,md.flowequation.vertex_equation,1);
+                md.flowequation.borderSSA=project2d(md,md.flowequation.borderSSA,1);
+                md.flowequation.borderHO=project2d(md,md.flowequation.borderHO,1);
+                md.flowequation.borderFS=project2d(md,md.flowequation.borderFS,1);
+            }
+
+            // boundary conditions
+            md.stressbalance.spcvx=project2d(md,md.stressbalance.spcvx,md.mesh.numberoflayers);
+            md.stressbalance.spcvy=project2d(md,md.stressbalance.spcvy,md.mesh.numberoflayers);
+            md.stressbalance.spcvz=project2d(md,md.stressbalance.spcvz,md.mesh.numberoflayers);
+            md.stressbalance.referential=project2d(md,md.stressbalance.referential,md.mesh.numberoflayers);
+            md.stressbalance.loadingforce=project2d(md,md.stressbalance.loadingforce,md.mesh.numberoflayers);
+            md.masstransport.spcthickness=project2d(md,md.masstransport.spcthickness,md.mesh.numberoflayers);
+            if (!isNaN(md.damage.spcdamage))
+                md.damage.spcdamage=project2d(md,md.damage.spcdamage,md.mesh.numberoflayers);
+            md.thermal.spctemperature=project2d(md,md.thermal.spctemperature,md.mesh.numberoflayers);
+
+            // Hydrologydc variables
+            if (md.hydrology.classname() === 'hydrologydc') {
+                md.hydrology.spcsediment_head=project2d(md,md.hydrology.spcsediment_head,1);
+                md.hydrology.mask_eplactive_node=project2d(md,md.hydrology.mask_eplactive_node,1);
+                md.hydrology.sediment_transmitivity=project2d(md,md.hydrology.sediment_transmitivity,1);
+                md.hydrology.basal_moulin_input=project2d(md,md.hydrology.basal_moulin_input,1);
+
+                if(md.hydrology.isefficientlayer==1)
+                    md.hydrology.spcepl_head=project2d(md,md.hydrology.spcepl_head,1);
+            }
+            
+            // materials
+            md.materials.rheology_B=DepthAverage(md,md.materials.rheology_B);
+            md.materials.rheology_n=project2d(md,md.materials.rheology_n,1);
+            
+            // damage: 
+            if (md.damage.isdamage)
+                md.damage.D=DepthAverage(md,md.damage.D);
+
+            // special for thermal modeling:
+            if (!isNaN(md.basalforcings.groundedice_melting_rate))
+                md.basalforcings.groundedice_melting_rate=project2d(md,md.basalforcings.groundedice_melting_rate,1); 
+
+            if (!isNaN(md.basalforcings.floatingice_melting_rate))
+                md.basalforcings.floatingice_melting_rate=project2d(md,md.basalforcings.floatingice_melting_rate,1); 
+
+            md.basalforcings.geothermalflux=project2d(md,md.basalforcings.geothermalflux,1); // bedrock only gets geothermal flux
+
+            // update of connectivity matrix
+            md.mesh.average_vertex_connectivity=25;
+
+            // Collapse the mesh
+            var nodes2d=md.mesh.numberofvertices2d;
+            var elements2d=md.mesh.numberofelements2d;
+
+            // parameters
+            md.geometry.surface=project2d(md,md.geometry.surface,1);
+            md.geometry.thickness=project2d(md,md.geometry.thickness,1);
+            md.geometry.base=project2d(md,md.geometry.base,1);
+            if (!isNaN(md.geometry.bed))
+                md.geometry.bed=project2d(md,md.geometry.bed,1);
+
+            if (!isNaN(md.mask.groundedice_levelset))
+                md.mask.groundedice_levelset=project2d(md,md.mask.groundedice_levelset,1);
+
+            if (!isNaN(md.mask.ice_levelset))
+                md.mask.ice_levelset=project2d(md,md.mask.ice_levelset,1);
+
+            // lat long
+            if (numel(md.mesh.lat) === md.mesh.numberofvertices)
+                md.mesh.lat=project2d(md,md.mesh.lat,1);
+            if (numel(md.mesh.long) === md.mesh.numberofvertices)
+                md.mesh.long=project2d(md,md.mesh.long,1);
+
+            // Initialize with the 2d mesh
+            var mesh = new mesh2d();
+            mesh.x=md.mesh.x2d;
+            mesh.y=md.mesh.y2d;
+            mesh.numberofvertices=md.mesh.numberofvertices2d;
+            mesh.numberofelements=md.mesh.numberofelements2d;
+            mesh.elements=md.mesh.elements2d;
+
+            if (!isNaN(md.mesh.vertexonboundary))
+                mesh.vertexonboundary=project2d(md,md.mesh.vertexonboundary,1);
+            if (!isNaN(md.mesh.elementconnectivity))
+                mesh.elementconnectivity=project2d(md,md.mesh.elementconnectivity,1);
+
+            md.mesh=mesh;
+            md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+            md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+            md.mesh.segments=contourenvelope(md.mesh);
+
+            return md;
+        } /*}}}*/
+	//properties
+	// {{{
+		//Careful here: no other class should be used as default value this is a bug of matlab
+		this.mesh             = 0;
+		this.mask             = 0;
+
+		this.geometry         = 0;
+		this.constants        = 0;
+		this.smb              = 0;
+		this.basalforcings    = 0;
+		this.materials        = 0;
+		this.damage           = 0;
+		this.friction         = 0;
+		this.flowequation     = 0;
+		this.timestepping     = 0;
+		this.initialization   = 0;
+		this.rifts            = 0;
+		this.slr              = 0;
+
+		this.debug            = 0;
+		this.verbose          = 0;
+		this.settings         = 0;
+		this.toolkits         = 0;
+		this.cluster          = 0;
+
+		this.balancethickness = 0;
+		this.stressbalance    = 0;
+		this.groundingline    = 0;
+		this.hydrology        = 0;
+		this.masstransport    = 0;
+		this.thermal          = 0;
+		this.steadystate      = 0;
+		this.trans            = 0;
+		this.levelset         = 0;
+		this.calving          = 0;
+		this.gia              = 0;
+
+		this.autodiff         = 0;
+		this.inversion        = 0;
+		this.qmu              = 0;
+
+		this.results          = 0;
+		this.outputdefinition = 0;
+		this.radaroverlay     = 0;
+		this.miscellaneous    = 0;
+		this.priv             = 0;
+
+		//set default values for fields
+		this.setdefaultparameters();
+
+		//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/model.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/model.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/model.m	(revision 21239)
@@ -0,0 +1,1402 @@
+%MODEL class definition
+%
+%   Usage:
+%      md = model(varargin)
+
+classdef model
+	properties (SetAccess=public) %Model fields
+		% {{{
+		%Careful here: no other class should be used as default value this is a bug of matlab
+		mesh             = 0;
+		mask             = 0;
+
+		geometry         = 0;
+		constants        = 0;
+		smb              = 0;
+		basalforcings    = 0;
+		materials        = 0;
+		damage           = 0;
+		friction         = 0;
+		flowequation     = 0;
+		timestepping     = 0;
+		initialization   = 0;
+		rifts            = 0;
+		slr              = 0;
+
+		debug            = 0;
+		verbose          = 0;
+		settings         = 0;
+		toolkits         = 0;
+		cluster          = 0;
+
+		balancethickness = 0;
+		stressbalance    = 0;
+		groundingline    = 0;
+		hydrology        = 0;
+		masstransport    = 0;
+		thermal          = 0;
+		steadystate      = 0;
+		transient        = 0;
+		levelset			  = 0;
+		calving          = 0;
+		gia              = 0;
+
+		autodiff         = 0;
+		inversion        = 0;
+		qmu              = 0;
+
+		results          = 0;
+		outputdefinition = 0;
+		radaroverlay     = 0;
+		miscellaneous    = 0;
+		private          = 0;
+
+		%}}}
+	end
+	methods (Static)
+		function md = loadobj(md) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. If the input is a struct it is an old version of model and
+			% old fields must be recovered (make sure they are in the deprecated
+			% model properties)
+
+			if verLessThan('matlab','7.9'),
+				disp('Warning: your matlab version is old and there is a risk that load does not work correctly');
+				disp('         if the model is not loaded correctly, rename temporarily loadobj so that matlab does not use it');
+
+				% This is a Matlab bug: all the fields of md have their default value
+				% Example of error message:
+				% Warning: Error loading an object of class 'model':
+				% Undefined function or method 'exist' for input arguments of type 'cell'
+				%
+				% This has been fixed in MATLAB 7.9 (R2009b) and later versions
+			end
+
+			if isstruct(md)
+				disp('Recovering model object from a previous version');
+				md = structtomodel(model,md);
+			end
+
+			%2012 August 4th
+			if isa(md.materials,'materials'),
+				disp('Recovering old materials');
+				if numel(md.materials.rheology_Z)==1 & isnan(md.materials.rheology_Z),
+					md.materials=matice(md.materials);
+				else
+					md.materials=matdamageice(md.materials);
+				end
+			end
+			%2013 April 12
+			if numel(md.stressbalance.loadingforce==1)
+				md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+			end
+			%2013 April 17
+			if isa(md.hydrology,'hydrology'),
+				disp('Recovering old hydrology class');
+				md.hydrology=hydrologyshreve(md.materials);
+			end
+			%2013 October 9
+			if ~isa(md.damage,'damage'),
+				md.damage=damage();
+				md.damage.D=zeros(md.mesh.numberofvertices,1);
+				md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+			end
+			%2013 November 18
+			if ~isa(md.outputdefinition,'outputdefinition'),
+				md.outputdefinition=outputdefinition();
+			end
+			%2014 March 26th
+			if isa(md.mesh,'mesh'),
+				disp('Recovering old mesh class');
+				if isprop(md.mesh,'dimension'),
+					if md.mesh.dimension==2,
+						md.mesh=mesh2d(md.mesh);
+					else
+						md.mesh=mesh3dprisms(md.mesh);
+					end
+				else
+					md.mesh=mesh2dvertical(md.mesh);
+				end
+			end
+			%2014 November 12
+			if isa(md.calving,'double');
+				md.calving=calving();
+			end
+			%2016 February 3
+			if isa(md.slr,'double');
+				md.slr=slr();
+			end
+
+		end% }}}
+	end
+	methods
+		function md = model(varargin) % {{{
+
+			switch nargin
+				case 0
+					md=setdefaultparameters(md);
+				case 1
+					error('model constructor not supported yet');
+
+				otherwise
+					error('model constructor error message: 0 of 1 argument only in input.');
+				end
+		end
+		%}}}
+		function md = checkmessage(md,string) % {{{
+			if(nargout~=1) error('wrong usage, model must be an output'); end
+			disp(['model not consistent: ' string]);
+			md.private.isconsistent=false;
+		end
+		%}}}
+		function md = collapse(md)% {{{
+			%COLLAPSE - collapses a 3d mesh into a 2d mesh
+			%
+			%   This routine collapses a 3d model into a 2d model
+			%   and collapses all the fileds of the 3d model by
+			%   taking their depth-averaged values
+			%
+			%   Usage:
+			%      md=collapse(md)
+			%
+			%   See also: EXTRUDE, MODELEXTRACT
+
+			%Check that the model is really a 3d model
+			if ~strcmp(md.mesh.elementtype(),'Penta'),
+				error('collapse error message: only 3d mesh can be collapsed')
+			end
+
+			%Start with changing all the fields from the 3d mesh 
+
+			%dealing with the friciton law
+			%drag is limited to nodes that are on the bedrock.
+			if isa(md.friction,'friction'),
+				md.friction.coefficient=project2d(md,md.friction.coefficient,1);
+				md.friction.p=project2d(md,md.friction.p,1);
+				md.friction.q=project2d(md,md.friction.q,1);
+			elseif isa(md.friction,'frictionhydro'),
+				md.friction.q=project2d(md,md.friction.q,1);
+				md.friction.C=project2d(md,md.friction.C,1);
+				md.friction.As=project2d(md,md.friction.As,1);
+				md.friction.effective_pressure=project2d(md,md.friction.effective_pressure,1);
+			elseif isa(md.friction,'frictionwaterlayer'),
+				md.friction.coefficient=project2d(md,md.friction.coefficient,1);
+				md.friction.p=project2d(md,md.friction.p,1);
+				md.friction.q=project2d(md,md.friction.q,1);
+				md.friction.water_layer=project2d(md,md.friction.water_layer,1);
+			elseif isa(md.friction,'frictionweertman'),
+				md.friction.C=project2d(md,md.friction.C,1);
+				md.friction.m=project2d(md,md.friction.m,1);
+			elseif isa(md.friction,'frictionweertmantemp'),
+				md.friction.C=project2d(md,md.friction.C,1);
+				md.friction.m=project2d(md,md.friction.m,1);
+			else
+				disp('friction type not supported');
+	    end
+
+			%observations
+			if ~isnan(md.inversion.vx_obs), md.inversion.vx_obs=project2d(md,md.inversion.vx_obs,md.mesh.numberoflayers); end;
+			if ~isnan(md.inversion.vy_obs), md.inversion.vy_obs=project2d(md,md.inversion.vy_obs,md.mesh.numberoflayers); end;
+			if ~isnan(md.inversion.vel_obs), md.inversion.vel_obs=project2d(md,md.inversion.vel_obs,md.mesh.numberoflayers); end;
+			if ~isnan(md.inversion.cost_functions_coefficients), md.inversion.cost_functions_coefficients=project2d(md,md.inversion.cost_functions_coefficients,md.mesh.numberoflayers); end;
+			if numel(md.inversion.min_parameters)>1, md.inversion.min_parameters=project2d(md,md.inversion.min_parameters,md.mesh.numberoflayers); end;
+			if numel(md.inversion.max_parameters)>1, md.inversion.max_parameters=project2d(md,md.inversion.max_parameters,md.mesh.numberoflayers); end;
+			if isa(md.smb,'SMBforcing') & ~isnan(md.smb.mass_balance),
+				md.smb.mass_balance=project2d(md,md.smb.mass_balance,md.mesh.numberoflayers); 
+			elseif isa(md.smb,'SMBhenning') & ~isnan(md.smb.smbref),
+				md.smb.smbref=project2d(md,md.smb.smbref,md.mesh.numberoflayers);
+			end;
+
+			%results
+			if ~isnan(md.initialization.vx),md.initialization.vx=DepthAverage(md,md.initialization.vx);end;
+			if ~isnan(md.initialization.vy),md.initialization.vy=DepthAverage(md,md.initialization.vy);end;
+			if ~isnan(md.initialization.vz),md.initialization.vz=DepthAverage(md,md.initialization.vz);end;
+			if ~isnan(md.initialization.vel),md.initialization.vel=DepthAverage(md,md.initialization.vel);end;
+			if ~isnan(md.initialization.temperature),md.initialization.temperature=DepthAverage(md,md.initialization.temperature);end;
+			if ~isnan(md.initialization.pressure),md.initialization.pressure=project2d(md,md.initialization.pressure,1);end;
+			if ~isnan(md.initialization.sediment_head),md.initialization.sediment_head=project2d(md,md.initialization.sediment_head,1);end;
+			if ~isnan(md.initialization.epl_head),md.initialization.epl_head=project2d(md,md.initialization.epl_head,1);end;
+			if ~isnan(md.initialization.epl_thickness),md.initialization.epl_thickness=project2d(md,md.initialization.epl_thickness,1);end;
+			%gia
+			if ~isnan(md.gia.mantle_viscosity), md.gia.mantle_viscosity=project2d(md,md.gia.mantle_viscosity,1); end
+			if ~isnan(md.gia.lithosphere_thickness), md.gia.lithosphere_thickness=project2d(md,md.gia.lithosphere_thickness,1); end
+
+			%elementstype
+			if ~isnan(md.flowequation.element_equation)
+				md.flowequation.element_equation=project2d(md,md.flowequation.element_equation,1);
+				md.flowequation.vertex_equation=project2d(md,md.flowequation.vertex_equation,1);
+				md.flowequation.borderSSA=project2d(md,md.flowequation.borderSSA,1);
+				md.flowequation.borderHO=project2d(md,md.flowequation.borderHO,1);
+				md.flowequation.borderFS=project2d(md,md.flowequation.borderFS,1);
+			end	
+
+			%boundary conditions
+			md.stressbalance.spcvx=project2d(md,md.stressbalance.spcvx,md.mesh.numberoflayers);
+			md.stressbalance.spcvy=project2d(md,md.stressbalance.spcvy,md.mesh.numberoflayers);
+			md.stressbalance.spcvz=project2d(md,md.stressbalance.spcvz,md.mesh.numberoflayers);
+			md.stressbalance.referential=project2d(md,md.stressbalance.referential,md.mesh.numberoflayers);
+			md.stressbalance.loadingforce=project2d(md,md.stressbalance.loadingforce,md.mesh.numberoflayers);
+			md.masstransport.spcthickness=project2d(md,md.masstransport.spcthickness,md.mesh.numberoflayers);
+			if ~isnan(md.damage.spcdamage), md.damage.spcdamage=project2d(md,md.damage.spcdamage,md.mesh.numberoflayers); end
+			md.thermal.spctemperature=project2d(md,md.thermal.spctemperature,md.mesh.numberoflayers);
+
+			% Hydrologydc variables
+			if isa(md.hydrology,'hydrologydc');
+				md.hydrology.spcsediment_head=project2d(md,md.hydrology.spcsediment_head,1);
+				md.hydrology.mask_eplactive_node=project2d(md,md.hydrology.mask_eplactive_node,1);
+				md.hydrology.sediment_transmitivity=project2d(md,md.hydrology.sediment_transmitivity,1);
+				md.hydrology.basal_moulin_input=project2d(md,md.hydrology.basal_moulin_input,1);
+				if(md.hydrology.isefficientlayer==1)
+					md.hydrology.spcepl_head=project2d(md,md.hydrology.spcepl_head,1);
+		    end
+	    end
+			
+			%materials
+			md.materials.rheology_B=DepthAverage(md,md.materials.rheology_B);
+			md.materials.rheology_n=project2d(md,md.materials.rheology_n,1);
+			
+			%damage: 
+			if md.damage.isdamage,
+				md.damage.D=DepthAverage(md,md.damage.D);
+			end
+
+			%special for thermal modeling:
+			if ~isnan(md.basalforcings.groundedice_melting_rate),
+				md.basalforcings.groundedice_melting_rate=project2d(md,md.basalforcings.groundedice_melting_rate,1); 
+			end
+			if ~isnan(md.basalforcings.floatingice_melting_rate),
+				md.basalforcings.floatingice_melting_rate=project2d(md,md.basalforcings.floatingice_melting_rate,1); 
+			end
+			md.basalforcings.geothermalflux=project2d(md,md.basalforcings.geothermalflux,1); %bedrock only gets geothermal flux
+
+			%update of connectivity matrix
+			md.mesh.average_vertex_connectivity=25;
+
+			%Collapse the mesh
+			nodes2d=md.mesh.numberofvertices2d;
+			elements2d=md.mesh.numberofelements2d;
+
+			%parameters
+			md.geometry.surface=project2d(md,md.geometry.surface,1);
+			md.geometry.thickness=project2d(md,md.geometry.thickness,1);
+			md.geometry.base=project2d(md,md.geometry.base,1);
+			if ~isnan(md.geometry.bed),
+				md.geometry.bed=project2d(md,md.geometry.bed,1);
+			end
+
+			if ~isnan(md.mask.groundedice_levelset),
+				md.mask.groundedice_levelset=project2d(md,md.mask.groundedice_levelset,1);
+			end
+			if ~isnan(md.mask.ice_levelset),
+				md.mask.ice_levelset=project2d(md,md.mask.ice_levelset,1);
+			end
+
+			%lat long
+			if numel(md.mesh.lat) ==md.mesh.numberofvertices,  md.mesh.lat=project2d(md,md.mesh.lat,1); end
+			if numel(md.mesh.long)==md.mesh.numberofvertices, md.mesh.long=project2d(md,md.mesh.long,1); end
+
+			%Initialize with the 2d mesh
+			mesh=mesh2d();
+			mesh.x=md.mesh.x2d;
+			mesh.y=md.mesh.y2d;
+			mesh.numberofvertices=md.mesh.numberofvertices2d;
+			mesh.numberofelements=md.mesh.numberofelements2d;
+			mesh.elements=md.mesh.elements2d;
+			if ~isnan(md.mesh.vertexonboundary), mesh.vertexonboundary=project2d(md,md.mesh.vertexonboundary,1); end
+			if ~isnan(md.mesh.elementconnectivity), mesh.elementconnectivity=project2d(md,md.mesh.elementconnectivity,1); end
+			md.mesh=mesh;
+			md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+			md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+			md.mesh.segments=contourenvelope(md.mesh);
+
+		end % }}}
+		function md2 = extract(md,area) % {{{
+			%extract - extract a model according to an Argus contour or flag list
+			%
+			%   This routine extracts a submodel from a bigger model with respect to a given contour
+			%   md must be followed by the corresponding exp file or flags list
+			%   It can either be a domain file (argus type, .exp extension), or an array of element flags. 
+			%   If user wants every element outside the domain to be 
+			%   extract2d, add '~' to the name of the domain file (ex: '~HO.exp');
+			%   an empty string '' will be considered as an empty domain
+			%   a string 'all' will be considered as the entire domain
+			%
+			%   Usage:
+			%      md2=extract(md,area);
+			%
+			%   Examples:
+			%      md2=extract(md,'Domain.exp');
+			%
+			%   See also: EXTRUDE, COLLAPSE
+
+			%copy model
+			md1=md;
+
+			%some checks
+			if ((nargin~=2) | (nargout~=1)),
+				help extract
+				error('extract error message: bad usage');
+			end
+
+			%get elements that are inside area
+			flag_elem=FlagElements(md1,area);
+			if ~any(flag_elem),
+				error('extracted model is empty');
+			end
+
+			%kick out all elements with 3 dirichlets
+			spc_elem=find(~flag_elem);
+			spc_node=sort(unique(md1.mesh.elements(spc_elem,:)));
+			flag=ones(md1.mesh.numberofvertices,1);
+			flag(spc_node)=0;
+			pos=find(sum(flag(md1.mesh.elements),2)==0);
+			flag_elem(pos)=0;
+
+			%extracted elements and nodes lists
+			pos_elem=find(flag_elem);
+			pos_node=sort(unique(md1.mesh.elements(pos_elem,:)));
+
+			%keep track of some fields
+			numberofvertices1=md1.mesh.numberofvertices;
+			numberofelements1=md1.mesh.numberofelements;
+			numberofvertices2=length(pos_node);
+			numberofelements2=length(pos_elem);
+			flag_node=zeros(numberofvertices1,1);
+			flag_node(pos_node)=1;
+
+			%Create Pelem and Pnode (transform old nodes in new nodes and same thing for the elements)
+			Pelem=zeros(numberofelements1,1);
+			Pelem(pos_elem)=[1:numberofelements2]';
+			Pnode=zeros(numberofvertices1,1);
+			Pnode(pos_node)=[1:numberofvertices2]';
+
+			%renumber the elements (some nodes won't exist anymore)
+			elements_1=md1.mesh.elements;
+			elements_2=elements_1(pos_elem,:);
+			elements_2(:,1)=Pnode(elements_2(:,1));
+			elements_2(:,2)=Pnode(elements_2(:,2));
+			elements_2(:,3)=Pnode(elements_2(:,3));
+			if isa(md1.mesh,'mesh3dprisms'),
+				elements_2(:,4)=Pnode(elements_2(:,4));
+				elements_2(:,5)=Pnode(elements_2(:,5));
+				elements_2(:,6)=Pnode(elements_2(:,6));
+			end
+
+			%OK, now create the new model!
+
+			%take every field from model
+			md2=md1;
+
+			%automatically modify fields
+
+			%loop over model fields
+			model_fields=fields(md1);
+			for i=1:length(model_fields),
+				%get field
+				field=md1.(model_fields{i});
+				fieldsize=size(field);
+				if isobject(field), %recursive call
+					object_fields=fields(md1.(model_fields{i}));
+					for j=1:length(object_fields),
+						%get field
+						field=md1.(model_fields{i}).(object_fields{j});
+						fieldsize=size(field);
+						%size = number of nodes * n
+						if fieldsize(1)==numberofvertices1
+							md2.(model_fields{i}).(object_fields{j})=field(pos_node,:);
+						elseif (fieldsize(1)==numberofvertices1+1)
+							md2.(model_fields{i}).(object_fields{j})=[field(pos_node,:); field(end,:)];
+						%size = number of elements * n
+						elseif fieldsize(1)==numberofelements1
+							md2.(model_fields{i}).(object_fields{j})=field(pos_elem,:);
+						end
+					end
+				else
+					%size = number of nodes * n
+					if fieldsize(1)==numberofvertices1
+						md2.(model_fields{i})=field(pos_node,:);
+					elseif (fieldsize(1)==numberofvertices1+1)
+						md2.(model_fields{i})=[field(pos_node,:); field(end,:)];
+					%size = number of elements * n
+					elseif fieldsize(1)==numberofelements1
+						md2.(model_fields{i})=field(pos_elem,:);
+					end
+				end
+			end
+
+			%modify some specific fields
+
+			%Mesh
+			md2.mesh.numberofelements=numberofelements2;
+			md2.mesh.numberofvertices=numberofvertices2;
+			md2.mesh.elements=elements_2;
+
+			%mesh.uppervertex mesh.lowervertex
+			if isa(md1.mesh,'mesh3dprisms'),
+				md2.mesh.uppervertex=md1.mesh.uppervertex(pos_node);
+				pos=find(~isnan(md2.mesh.uppervertex));
+				md2.mesh.uppervertex(pos)=Pnode(md2.mesh.uppervertex(pos));
+
+				md2.mesh.lowervertex=md1.mesh.lowervertex(pos_node);
+				pos=find(~isnan(md2.mesh.lowervertex));
+				md2.mesh.lowervertex(pos)=Pnode(md2.mesh.lowervertex(pos));
+
+				md2.mesh.upperelements=md1.mesh.upperelements(pos_elem);
+				pos=find(~isnan(md2.mesh.upperelements));
+				md2.mesh.upperelements(pos)=Pelem(md2.mesh.upperelements(pos));
+
+				md2.mesh.lowerelements=md1.mesh.lowerelements(pos_elem);
+				pos=find(~isnan(md2.mesh.lowerelements));
+				md2.mesh.lowerelements(pos)=Pelem(md2.mesh.lowerelements(pos));
+			end
+
+			%Initial 2d mesh 
+			if isa(md1.mesh,'mesh3dprisms'),
+				flag_elem_2d=flag_elem(1:md1.mesh.numberofelements2d);
+				pos_elem_2d=find(flag_elem_2d);
+				flag_node_2d=flag_node(1:md1.mesh.numberofvertices2d);
+				pos_node_2d=find(flag_node_2d);
+
+				md2.mesh.numberofelements2d=length(pos_elem_2d);
+				md2.mesh.numberofvertices2d=length(pos_node_2d);
+				md2.mesh.elements2d=md1.mesh.elements2d(pos_elem_2d,:);
+				md2.mesh.elements2d(:,1)=Pnode(md2.mesh.elements2d(:,1));
+				md2.mesh.elements2d(:,2)=Pnode(md2.mesh.elements2d(:,2));
+				md2.mesh.elements2d(:,3)=Pnode(md2.mesh.elements2d(:,3));
+
+				md2.mesh.x2d=md1.mesh.x(pos_node_2d);
+				md2.mesh.y2d=md1.mesh.y(pos_node_2d);
+			end
+
+			%Edges
+			if(dimension(md.mesh)==2),
+				if size(md2.mesh.edges,2)>1, %do not use ~isnan because there are some NaNs...
+					%renumber first two columns
+					pos=find(md2.mesh.edges(:,4)~=-1);
+					md2.mesh.edges(:  ,1)=Pnode(md2.mesh.edges(:,1));
+					md2.mesh.edges(:  ,2)=Pnode(md2.mesh.edges(:,2));
+					md2.mesh.edges(:  ,3)=Pelem(md2.mesh.edges(:,3));
+					md2.mesh.edges(pos,4)=Pelem(md2.mesh.edges(pos,4));
+					%remove edges when the 2 vertices are not in the domain.
+					md2.mesh.edges=md2.mesh.edges(find(md2.mesh.edges(:,1) & md2.mesh.edges(:,2)),:);
+					%Replace all zeros by -1 in the last two columns
+					pos=find(md2.mesh.edges(:,3)==0);
+					md2.mesh.edges(pos,3)=-1;
+					pos=find(md2.mesh.edges(:,4)==0);
+					md2.mesh.edges(pos,4)=-1;
+					%Invert -1 on the third column with last column (Also invert first two columns!!)
+					pos=find(md2.mesh.edges(:,3)==-1);
+					md2.mesh.edges(pos,3)=md2.mesh.edges(pos,4);
+					md2.mesh.edges(pos,4)=-1;
+					values=md2.mesh.edges(pos,2);
+					md2.mesh.edges(pos,2)=md2.mesh.edges(pos,1);
+					md2.mesh.edges(pos,1)=values;
+					%Finally remove edges that do not belong to any element
+					pos=find(md2.mesh.edges(:,3)==-1 & md2.mesh.edges(:,4)==-1);
+					md2.mesh.edges(pos,:)=[];
+				end
+			end
+
+			%Penalties
+			if ~isnan(md2.stressbalance.vertex_pairing),
+				for i=1:size(md1.stressbalance.vertex_pairing,1);
+					md2.stressbalance.vertex_pairing(i,:)=Pnode(md1.stressbalance.vertex_pairing(i,:));
+				end
+				md2.stressbalance.vertex_pairing=md2.stressbalance.vertex_pairing(find(md2.stressbalance.vertex_pairing(:,1)),:);
+			end
+			if ~isnan(md2.masstransport.vertex_pairing),
+				for i=1:size(md1.masstransport.vertex_pairing,1);
+					md2.masstransport.vertex_pairing(i,:)=Pnode(md1.masstransport.vertex_pairing(i,:));
+				end
+				md2.masstransport.vertex_pairing=md2.masstransport.vertex_pairing(find(md2.masstransport.vertex_pairing(:,1)),:);
+			end
+
+			%recreate segments
+			if isa(md1.mesh,'mesh2d') | isa(md1.mesh','mesh3dsurface'),
+				md2.mesh.vertexconnectivity=NodeConnectivity(md2.mesh.elements,md2.mesh.numberofvertices);
+				md2.mesh.elementconnectivity=ElementConnectivity(md2.mesh.elements,md2.mesh.vertexconnectivity);
+				md2.mesh.segments=contourenvelope(md2.mesh);
+				md2.mesh.vertexonboundary=zeros(numberofvertices2,1); md2.mesh.vertexonboundary(md2.mesh.segments(:,1:2))=1;
+			else
+				%First do the connectivity for the contourenvelope in 2d
+				md2.mesh.vertexconnectivity=NodeConnectivity(md2.mesh.elements2d,md2.mesh.numberofvertices2d);
+				md2.mesh.elementconnectivity=ElementConnectivity(md2.mesh.elements2d,md2.mesh.vertexconnectivity);
+				segments=contourenvelope(md2.mesh);
+				md2.mesh.vertexonboundary=zeros(numberofvertices2/md2.mesh.numberoflayers,1); md2.mesh.vertexonboundary(segments(:,1:2))=1;
+				md2.mesh.vertexonboundary=repmat(md2.mesh.vertexonboundary,md2.mesh.numberoflayers,1);
+				%Then do it for 3d as usual
+				md2.mesh.vertexconnectivity=NodeConnectivity(md2.mesh.elements,md2.mesh.numberofvertices);
+				md2.mesh.elementconnectivity=ElementConnectivity(md2.mesh.elements,md2.mesh.vertexconnectivity);
+			end
+
+			%Boundary conditions: Dirichlets on new boundary
+			%Catch the elements that have not been extracted
+			orphans_elem=find(~flag_elem);
+			orphans_node=unique(md1.mesh.elements(orphans_elem,:))';
+			%Figure out which node are on the boundary between md2 and md1
+			nodestoflag1=intersect(orphans_node,pos_node);
+			nodestoflag2=Pnode(nodestoflag1);
+			if numel(md1.stressbalance.spcvx)>1 & numel(md1.stressbalance.spcvy)>2 & numel(md1.stressbalance.spcvz)>2,
+				if numel(md1.inversion.vx_obs)>1 & numel(md1.inversion.vy_obs)>1
+					md2.stressbalance.spcvx(nodestoflag2)=md2.inversion.vx_obs(nodestoflag2); 
+					md2.stressbalance.spcvy(nodestoflag2)=md2.inversion.vy_obs(nodestoflag2);
+				else
+					md2.stressbalance.spcvx(nodestoflag2)=NaN;
+					md2.stressbalance.spcvy(nodestoflag2)=NaN;
+					disp(' ')
+					disp('!! extract warning: spc values should be checked !!')
+					disp(' ')
+				end
+				%put 0 for vz
+				md2.stressbalance.spcvz(nodestoflag2)=0;
+			end
+			if ~isnan(md1.thermal.spctemperature),
+				md2.thermal.spctemperature(nodestoflag2,1)=1;
+			end
+
+			%Results fields
+			if isstruct(md1.results),
+				md2.results=struct();
+				solutionfields=fields(md1.results);
+				for i=1:length(solutionfields),
+					if isstruct(md1.results.(solutionfields{i}))
+						%get subfields
+						solutionsubfields=fields(md1.results.(solutionfields{i}));
+						for j=1:length(solutionsubfields),
+							field=md1.results.(solutionfields{i}).(solutionsubfields{j});
+							if length(field)==numberofvertices1,
+								md2.results.(solutionfields{i}).(solutionsubfields{j})=field(pos_node);
+							elseif length(field)==numberofelements1,
+								md2.results.(solutionfields{i}).(solutionsubfields{j})=field(pos_elem);
+							else
+								md2.results.(solutionfields{i}).(solutionsubfields{j})=field;
+							end
+						end
+					else
+						field=md1.results.(solutionfields{i});
+						if length(field)==numberofvertices1,
+							md2.results.(solutionfields{i})=field(pos_node);
+						elseif length(field)==numberofelements1,
+							md2.results.(solutionfields{i})=field(pos_elem);
+						else
+							md2.results.(solutionfields{i})=field;
+						end
+					end
+				end
+			end
+
+			%Keep track of pos_node and pos_elem
+			md2.mesh.extractedvertices=pos_node;
+			md2.mesh.extractedelements=pos_elem;
+		end % }}}
+		function md = extrude(md,varargin) % {{{
+			%EXTRUDE - vertically extrude a 2d mesh
+			%
+			%   vertically extrude a 2d mesh and create corresponding 3d mesh.
+			%   The vertical distribution can:
+			%    - follow a polynomial law
+			%    - follow two polynomial laws, one for the lower part and one for the upper part of the mesh
+			%    - be discribed by a list of coefficients (between 0 and 1)
+			%   
+			%
+			%   Usage:
+			%      md=extrude(md,numlayers,extrusionexponent);
+			%      md=extrude(md,numlayers,lowerexponent,upperexponent);
+			%      md=extrude(md,listofcoefficients);
+			%
+			%   Example:
+			%      md=extrude(md,15,1.3);
+			%      md=extrude(md,15,1.3,1.2);
+			%      md=extrude(md,[0 0.2 0.5 0.7 0.9 0.95 1]);
+			%
+			%   See also: MODELEXTRACT, COLLAPSE
+
+			%some checks on list of arguments
+			if ((nargin>4) | (nargin<2) | (nargout~=1)),
+				help extrude;
+				error('extrude error message');
+			end
+
+			%Extrude the mesh
+			if nargin==2, %list of coefficients
+				clist=varargin{1};
+				if any(clist<0) | any(clist>1),
+					error('extrusioncoefficients must be between 0 and 1');
+				end
+				extrusionlist=sort(unique([clist(:);0;1]));
+				numlayers=length(extrusionlist);
+			elseif nargin==3, %one polynomial law
+				if varargin{2}<=0,
+					help extrude;
+					error('extrusionexponent must be >=0');
+				end
+				numlayers=varargin{1};
+				extrusionlist=((0:1:numlayers-1)/(numlayers-1)).^varargin{2};
+			elseif nargin==4, %two polynomial laws
+				numlayers=varargin{1};
+				lowerexp=varargin{2};
+				upperexp=varargin{3};
+
+				if varargin{2}<=0 | varargin{3}<=0,
+					help extrude;
+					error('lower and upper extrusionexponents must be >=0');
+				end
+
+				lowerextrusionlist=[(0:2/(numlayers-1):1).^lowerexp]/2;
+				upperextrusionlist=[(0:2/(numlayers-1):1).^upperexp]/2;
+				extrusionlist=sort(unique([lowerextrusionlist 1-upperextrusionlist]));
+
+			end
+
+			if numlayers<2,
+				error('number of layers should be at least 2');
+			end
+			if strcmp(md.mesh.domaintype(),'3D')
+				error('Cannot extrude a 3d mesh (extrude cannot be called more than once)');
+			end
+
+			%Initialize with the 2d mesh
+			mesh2d = md.mesh;
+			md.mesh=mesh3dprisms();
+			md.mesh.x                           = mesh2d.x;
+			md.mesh.y                           = mesh2d.y;
+			md.mesh.elements                    = mesh2d.elements;
+			md.mesh.numberofelements            = mesh2d.numberofelements;
+			md.mesh.numberofvertices            = mesh2d.numberofvertices;
+
+			md.mesh.lat                         = mesh2d.lat;
+			md.mesh.long                        = mesh2d.long;
+			md.mesh.epsg                        = mesh2d.epsg;
+
+			md.mesh.vertexonboundary            = mesh2d.vertexonboundary;
+			md.mesh.vertexconnectivity          = mesh2d.vertexconnectivity;
+			md.mesh.elementconnectivity         = mesh2d.elementconnectivity;
+			md.mesh.average_vertex_connectivity = mesh2d.average_vertex_connectivity;
+
+			md.mesh.extractedvertices           = mesh2d.extractedvertices;
+			md.mesh.extractedelements           = mesh2d.extractedelements;
+
+			x3d=[]; 
+			y3d=[];
+			z3d=[];  %the lower node is on the bed
+			thickness3d=md.geometry.thickness; %thickness and bed for these nodes
+			bed3d=md.geometry.base;
+
+			%Create the new layers
+			for i=1:numlayers,
+				x3d=[x3d; md.mesh.x]; 
+				y3d=[y3d; md.mesh.y];
+				%nodes are distributed between bed and surface accordingly to the given exponent
+				z3d=[z3d; bed3d+thickness3d*extrusionlist(i)]; 
+			end
+			number_nodes3d=size(x3d,1); %number of 3d nodes for the non extruded part of the mesh
+
+			%Extrude elements 
+			elements3d=[];
+			for i=1:numlayers-1,
+				elements3d=[elements3d;[md.mesh.elements+(i-1)*md.mesh.numberofvertices md.mesh.elements+i*md.mesh.numberofvertices]]; %Create the elements of the 3d mesh for the non extruded part
+			end
+			number_el3d=size(elements3d,1); %number of 3d nodes for the non extruded part of the mesh
+
+			%Keep a trace of lower and upper nodes
+			lowervertex=NaN*ones(number_nodes3d,1);
+			uppervertex=NaN*ones(number_nodes3d,1);
+			lowervertex(md.mesh.numberofvertices+1:end)=1:(numlayers-1)*md.mesh.numberofvertices;
+			uppervertex(1:(numlayers-1)*md.mesh.numberofvertices)=md.mesh.numberofvertices+1:number_nodes3d;
+			md.mesh.lowervertex=lowervertex;
+			md.mesh.uppervertex=uppervertex;
+
+			%same for lower and upper elements
+			lowerelements=NaN*ones(number_el3d,1);
+			upperelements=NaN*ones(number_el3d,1);
+			lowerelements(md.mesh.numberofelements+1:end)=1:(numlayers-2)*md.mesh.numberofelements;
+			upperelements(1:(numlayers-2)*md.mesh.numberofelements)=md.mesh.numberofelements+1:(numlayers-1)*md.mesh.numberofelements;
+			md.mesh.lowerelements=lowerelements;
+			md.mesh.upperelements=upperelements;
+
+			%Save old mesh 
+			md.mesh.x2d=md.mesh.x;
+			md.mesh.y2d=md.mesh.y;
+			md.mesh.elements2d=md.mesh.elements;
+			md.mesh.numberofelements2d=md.mesh.numberofelements;
+			md.mesh.numberofvertices2d=md.mesh.numberofvertices;
+
+			%Build global 3d mesh 
+			md.mesh.elements=elements3d;
+			md.mesh.x=x3d;
+			md.mesh.y=y3d;
+			md.mesh.z=z3d;
+			md.mesh.numberofelements=number_el3d;
+			md.mesh.numberofvertices=number_nodes3d;
+			md.mesh.numberoflayers=numlayers;
+
+			%Ok, now deal with the other fields from the 2d mesh:
+
+			%bedinfo and surface info
+			md.mesh.vertexonbase=project3d(md,'vector',ones(md.mesh.numberofvertices2d,1),'type','node','layer',1);
+			md.mesh.vertexonsurface=project3d(md,'vector',ones(md.mesh.numberofvertices2d,1),'type','node','layer',md.mesh.numberoflayers);
+			md.mesh.vertexonboundary=project3d(md,'vector',md.mesh.vertexonboundary,'type','node');
+
+			%lat long
+			md.mesh.lat=project3d(md,'vector',md.mesh.lat,'type','node');
+			md.mesh.long=project3d(md,'vector',md.mesh.long,'type','node');
+
+			md.geometry=extrude(md.geometry,md);
+			md.friction  = extrude(md.friction,md);
+			md.inversion = extrude(md.inversion,md);
+			md.smb = extrude(md.smb,md);
+			md.initialization = extrude(md.initialization,md);
+
+			md.flowequation=md.flowequation.extrude(md);
+			md.stressbalance=extrude(md.stressbalance,md);
+			md.thermal=md.thermal.extrude(md);
+			md.masstransport=md.masstransport.extrude(md);
+			md.levelset=extrude(md.levelset,md);
+			md.calving=extrude(md.calving,md);
+			md.hydrology = extrude(md.hydrology,md);
+
+			%connectivity
+			if ~isnan(md.mesh.elementconnectivity)
+				md.mesh.elementconnectivity=repmat(md.mesh.elementconnectivity,numlayers-1,1);
+				md.mesh.elementconnectivity(find(md.mesh.elementconnectivity==0))=NaN;
+				for i=2:numlayers-1,
+					md.mesh.elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)...
+						=md.mesh.elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)+md.mesh.numberofelements2d;
+				end
+				md.mesh.elementconnectivity(find(isnan(md.mesh.elementconnectivity)))=0;
+			end
+
+			md.materials=extrude(md.materials,md);
+			md.damage=extrude(md.damage,md);
+			md.mask=extrude(md.mask,md);
+			md.qmu=extrude(md.qmu,md);
+			md.basalforcings=extrude(md.basalforcings,md);
+
+			%increase connectivity if less than 25:
+			if md.mesh.average_vertex_connectivity<=25,
+				md.mesh.average_vertex_connectivity=100;
+			end
+			end % }}}
+		function md = structtomodel(md,structmd) % {{{
+
+			if ~isstruct(structmd) error('input model is not a structure'); end
+
+			%loaded model is a struct, initialize output and recover all fields
+			md = structtoobj(model,structmd);
+
+			%Old field now classes
+			if (isfield(structmd,'timestepping') & isnumeric(md.timestepping)), md.timestepping=timestepping(); end
+			if (isfield(structmd,'mask') & isnumeric(md.mask)),md.mask=mask(); end
+
+			%Field name change
+			if isfield(structmd,'drag'), md.friction.coefficient=structmd.drag; end
+			if isfield(structmd,'p'), md.friction.p=structmd.p; end
+			if isfield(structmd,'q'), md.friction.q=structmd.p; end
+			if isfield(structmd,'melting'), md.basalforcings.floatingice_melting_rate=structmd.melting; end
+			if isfield(structmd,'melting_rate'), md.basalforcings.floatingice_melting_rate=structmd.melting_rate; end
+			if isfield(structmd,'melting_rate'), md.basalforcings.groundedice_melting_rate=structmd.melting_rate; end
+			if isfield(structmd,'accumulation'), md.smb.mass_balance=structmd.accumulation; end
+			if isfield(structmd,'numberofgrids'), md.mesh.numberofvertices=structmd.numberofgrids; end
+			if isfield(structmd,'numberofgrids2d'), md.mesh.numberofvertices2d=structmd.numberofgrids2d; end
+			if isfield(structmd,'uppergrids'), md.mesh.uppervertex=structmd.uppergrids; end
+			if isfield(structmd,'lowergrids'), md.mesh.lowervertex=structmd.lowergrids; end
+			if isfield(structmd,'gridonbase'), md.mesh.vertexonbase=structmd.gridonbase; end
+			if isfield(structmd,'gridonsurface'), md.mesh.vertexonsurface=structmd.gridonsurface; end
+			if isfield(structmd,'extractedgrids'), md.mesh.extractedvertices=structmd.extractedgrids; end
+			if isfield(structmd,'gridonboundary'), md.mesh.vertexonboundary=structmd.gridonboundary; end
+			if isfield(structmd,'petscoptions') & ~isempty(structmd.petscoptions), md.toolkits=structmd.petscoptions; end
+			if isfield(structmd,'g'), md.constants.g=structmd.g; end
+			if isfield(structmd,'yts'), md.constants.yts=structmd.yts; end
+			if isfield(structmd,'surface_mass_balance'), md.smb.mass_balance=structmd.surface_mass_balance; end
+			if isfield(structmd,'basal_melting_rate'), md.basalforcings.floatingice_melting_rate=structmd.basal_melting_rate; end
+			if isfield(structmd,'geothermalflux'), md.basalforcings.geothermalflux=structmd.geothermalflux; end
+			if isfield(structmd,'drag'), md.friction.coefficient=structmd.drag; end
+			if isfield(structmd,'drag_coefficient'), md.friction.coefficient=structmd.drag_coefficient; end
+			if isfield(structmd,'drag_p'), md.friction.p=structmd.drag_p; end
+			if isfield(structmd,'drag_q'), md.friction.q=structmd.drag_q; end
+			if isfield(structmd,'riftproperties'), %old implementation
+				md.rifts=rifts();
+				md.rifts.riftproperties=structmd.riftproperties; 
+				md.rifts.riftstruct=structmd.rifts;
+				md.rifts.riftproperties=structmd.riftinfo;
+			end
+			if isfield(structmd,'bamg'), md.private.bamg=structmd.bamg; end
+			if isfield(structmd,'lowmem'), md.settings.lowmem=structmd.lowmem; end
+			if isfield(structmd,'io_gather'), md.settings.io_gather=structmd.io_gather; end
+			if isfield(structmd,'spcwatercolumn'), md.hydrology.spcwatercolumn=structmd.spcwatercolumn; end
+			if isfield(structmd,'hydro_n'), md.hydrology.n=structmd.hydro_n; end
+			if isfield(structmd,'hydro_p'), md.hydrology.p=structmd.hydro_p; end
+			if isfield(structmd,'hydro_q'), md.hydrology.q=structmd.hydro_q; end
+			if isfield(structmd,'hydro_CR'), md.hydrology.CR=structmd.hydro_CR; end
+			if isfield(structmd,'hydro_kn'), md.hydrology.kn=structmd.hydro_kn; end
+			if isfield(structmd,'spctemperature'), md.thermal.spctemperature=structmd.spctemperature; end
+			if isfield(structmd,'min_thermal_constraints'), md.thermal.penalty_threshold=structmd.min_thermal_constraints; end
+			if isfield(structmd,'artificial_diffusivity'), md.thermal.stabilization=structmd.artificial_diffusivity; end
+			if isfield(structmd,'max_nonlinear_iterations'), md.thermal.maxiter=structmd.max_nonlinear_iterations; end
+			if isfield(structmd,'stabilize_constraints'), md.thermal.penalty_lock=structmd.stabilize_constraints; end
+			if isfield(structmd,'penalty_offset'), md.thermal.penalty_factor=structmd.penalty_offset; end
+			if isfield(structmd,'name'), md.miscellaneous.name=structmd.name; end
+			if isfield(structmd,'notes'), md.miscellaneous.notes=structmd.notes; end
+			if isfield(structmd,'dummy'), md.miscellaneous.dummy=structmd.dummy; end
+			if isfield(structmd,'dt'), md.timestepping.time_step=structmd.dt; end
+			if isfield(structmd,'ndt'), md.timestepping.final_time=structmd.ndt; end
+			if isfield(structmd,'time_adapt'), md.timestepping.time_adapt=structmd.time_adapt; end
+			if isfield(structmd,'cfl_coefficient'), md.timestepping.cfl_coefficient=structmd.cfl_coefficient; end
+			if isfield(structmd,'spcthickness'), md.masstransport.spcthickness=structmd.spcthickness; end
+			if isfield(structmd,'artificial_diffusivity'), md.masstransport.stabilization=structmd.artificial_diffusivity; end
+			if isfield(structmd,'hydrostatic_adjustment'), md.masstransport.hydrostatic_adjustment=structmd.hydrostatic_adjustment; end
+			if isfield(structmd,'penalties'), md.masstransport.vertex_pairing=structmd.penalties; end
+			if isfield(structmd,'penalty_offset'), md.masstransport.penalty_factor=structmd.penalty_offset; end
+			if isfield(structmd,'B'), md.materials.rheology_B=structmd.B; end
+			if isfield(structmd,'n'), md.materials.rheology_n=structmd.n; end
+			if isfield(structmd,'rheology_B'), md.materials.rheology_B=structmd.rheology_B; end
+			if isfield(structmd,'rheology_n'), md.materials.rheology_n=structmd.rheology_n; end
+			if isfield(structmd,'rheology_Z'), md.damage.D=(1-structmd.rheology_Z); end
+			if isfield(structmd,'spcthickness'), md.balancethickness.spcthickness=structmd.spcthickness; end
+			if isfield(structmd,'artificial_diffusivity'), md.balancethickness.stabilization=structmd.artificial_diffusivity; end
+			if isfield(structmd,'dhdt'), md.balancethickness.thickening_rate=structmd.dhdt; end
+			if isfield(structmd,'isSIA'), md.flowequation.isSIA=structmd.isSIA; end
+			if isfield(structmd,'isFS'), md.flowequation.isFS=structmd.isFS; end
+			if isfield(structmd,'elements_type'), md.flowequation.element_equation=structmd.elements_type; end
+			if isfield(structmd,'vertices_type'), md.flowequation.vertex_equation=structmd.vertices_type; end
+			if isfield(structmd,'eps_rel'), md.steadystate.reltol=structmd.eps_rel; end
+			if isfield(structmd,'max_steadystate_iterations'), md.steadystate.maxiter=structmd.max_steadystate_iterations; end
+			if isfield(structmd,'isdiagnostic'), md.transient.isstressbalance=structmd.isdiagnostic; end
+			if isfield(structmd,'isprognostic'), md.transient.ismasstransport=structmd.isprognostic; end
+			if isfield(structmd,'isthermal'), md.transient.isthermal=structmd.isthermal; end
+			if isfield(structmd,'control_analysis'), md.inversion.iscontrol=structmd.control_analysis; end
+			if isfield(structmd,'weights'), md.inversion.cost_functions_coefficients=structmd.weights; end
+			if isfield(structmd,'nsteps'), md.inversion.nsteps=structmd.nsteps; end
+			if isfield(structmd,'maxiter_per_step'), md.inversion.maxiter_per_step=structmd.maxiter_per_step; end
+			if isfield(structmd,'cm_min'), md.inversion.min_parameters=structmd.cm_min; end
+			if isfield(structmd,'cm_max'), md.inversion.max_parameters=structmd.cm_max; end
+			if isfield(structmd,'vx_obs'), md.inversion.vx_obs=structmd.vx_obs; end
+			if isfield(structmd,'vy_obs'), md.inversion.vy_obs=structmd.vy_obs; end
+			if isfield(structmd,'vel_obs'), md.inversion.vel_obs=structmd.vel_obs; end
+			if isfield(structmd,'thickness_obs'), md.inversion.thickness_obs=structmd.thickness_obs; end
+			if isfield(structmd,'vx'), md.initialization.vx=structmd.vx; end
+			if isfield(structmd,'vy'), md.initialization.vy=structmd.vy; end
+			if isfield(structmd,'vz'), md.initialization.vz=structmd.vz; end
+			if isfield(structmd,'vel'), md.initialization.vel=structmd.vel; end
+			if isfield(structmd,'pressure'), md.initialization.pressure=structmd.pressure; end
+			if isfield(structmd,'temperature'), md.initialization.temperature=structmd.temperature; end
+			if isfield(structmd,'waterfraction'), md.initialization.waterfraction=structmd.waterfraction; end
+			if isfield(structmd,'watercolumn'), md.initialization.watercolumn=structmd.watercolumn; end
+			if isfield(structmd,'surface'), md.geometry.surface=structmd.surface; end
+			if isfield(structmd,'bed'), md.geometry.base=structmd.bed; end
+			if isfield(structmd,'thickness'), md.geometry.thickness=structmd.thickness; end
+			if isfield(structmd,'bathymetry'), md.geometry.bed=structmd.bathymetry; end
+			if isfield(structmd,'thickness_coeff'), md.geometry.hydrostatic_ratio=structmd.thickness_coeff; end
+			if isfield(structmd,'connectivity'), md.mesh.average_vertex_connectivity=structmd.connectivity; end
+			if isfield(structmd,'extractednodes'), md.mesh.extractedvertices=structmd.extractednodes; end
+			if isfield(structmd,'extractedelements'), md.mesh.extractedelements=structmd.extractedelements; end
+			if isfield(structmd,'nodeonboundary'), md.mesh.vertexonboundary=structmd.nodeonboundary; end
+			if isfield(structmd,'lat'), md.mesh.lat=structmd.lat; end
+			if isfield(structmd,'long'), md.mesh.long=structmd.long; end
+			if isfield(structmd,'segments'), md.mesh.segments=structmd.segments; end
+			if isfield(structmd,'segmentmarkers'), md.mesh.segmentmarkers=structmd.segmentmarkers; end
+			if isfield(structmd,'numlayers'), md.mesh.numberoflayers=structmd.numlayers; end
+			if isfield(structmd,'numberofelements'), md.mesh.numberofelements=structmd.numberofelements; end
+			if isfield(structmd,'numberofvertices'), md.mesh.numberofvertices=structmd.numberofvertices; end
+			if isfield(structmd,'numberofnodes'), md.mesh.numberofvertices=structmd.numberofnodes; end
+			if isfield(structmd,'numberofedges'), md.mesh.numberofedges=structmd.numberofedges; end
+			if isfield(structmd,'numberofelements2d'), md.mesh.numberofelements2d=structmd.numberofelements2d; end
+			if isfield(structmd,'numberofnodes2d'), md.mesh.numberofvertices2d=structmd.numberofnodes2d; end
+			if isfield(structmd,'nodeconnectivity'), md.mesh.vertexconnectivity=structmd.nodeconnectivity; end
+			if isfield(structmd,'elementconnectivity'), md.mesh.elementconnectivity=structmd.elementconnectivity; end
+			if isfield(structmd,'uppernodes'), md.mesh.uppervertex=structmd.uppernodes; end
+			if isfield(structmd,'lowernodes'), md.mesh.lowervertex=structmd.lowernodes; end
+			if isfield(structmd,'upperelements'), md.mesh.upperelements=structmd.upperelements; end
+			if isfield(structmd,'lowerelements'), md.mesh.lowerelements=structmd.lowerelements; end
+			if isfield(structmd,'nodeonsurface'), md.mesh.vertexonsurface=structmd.nodeonsurface; end
+			if isfield(structmd,'nodeonbase'), md.mesh.vertexonbase=structmd.nodeonbase; end
+			if isfield(structmd,'elements2d'), md.mesh.elements2d=structmd.elements2d; end
+			if isfield(structmd,'y2d'), md.mesh.y2d=structmd.y2d; end
+			if isfield(structmd,'x2d'), md.mesh.x2d=structmd.x2d; end
+			if isfield(structmd,'elements'), md.mesh.elements=structmd.elements; end
+			if isfield(structmd,'edges'), 
+				md.mesh.edges=structmd.edges; 
+				md.mesh.edges(isnan(md.mesh.edges))=-1;
+			end
+			if isfield(structmd,'y'), md.mesh.y=structmd.y; end
+			if isfield(structmd,'x'), md.mesh.x=structmd.x; end
+			if isfield(structmd,'z'), md.mesh.z=structmd.z; end
+			if isfield(structmd,'diagnostic_ref'), md.stressbalance.referential=structmd.diagnostic_ref; end
+			if isfield(structmd,'npart'); md.qmu.numberofpartitions=structmd.npart; end
+			if isfield(structmd,'part'); md.qmu.partition=structmd.part; end
+
+			if isnumeric(md.verbose),
+				md.verbose=verbose;
+			end
+
+			if isfield(structmd,'spcvelocity'), 
+				md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+				md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+				md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+				pos=find(structmd.spcvelocity(:,1)); md.stressbalance.spcvx(pos)=structmd.spcvelocity(pos,4); 
+				pos=find(structmd.spcvelocity(:,2)); md.stressbalance.spcvy(pos)=structmd.spcvelocity(pos,5); 
+				pos=find(structmd.spcvelocity(:,3)); md.stressbalance.spcvz(pos)=structmd.spcvelocity(pos,6); 
+			end
+			if isfield(structmd,'spcvx'), 
+				md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+				pos=find(~isnan(structmd.spcvx)); md.stressbalance.spcvx(pos)=structmd.spcvx(pos); 
+			end
+			if isfield(structmd,'spcvy'),
+				md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+				pos=find(~isnan(structmd.spcvy)); md.stressbalance.spcvy(pos)=structmd.spcvy(pos);     
+			end
+			if isfield(structmd,'spcvz'),
+				md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+				pos=find(~isnan(structmd.spcvz)); md.stressbalance.spcvz(pos)=structmd.spcvz(pos);     
+			end
+			if isfield(structmd,'pressureload'),
+				if ~isempty(structmd.pressureload) & ismember(structmd.pressureload(end,end),[118 119 120]),
+					pos=find(structmd.pressureload(:,end)==120); md.stressbalance.icefront(pos,end)=0;
+					pos=find(structmd.pressureload(:,end)==118); md.stressbalance.icefront(pos,end)=1;
+					pos=find(structmd.pressureload(:,end)==119); md.stressbalance.icefront(pos,end)=2;
+				end
+			end
+			if isfield(structmd,'elements_type') & structmd.elements_type(end,end)>50,
+				pos=find(structmd.elements_type==59); md.flowequation.element_equation(pos,end)=0;
+				pos=find(structmd.elements_type==55); md.flowequation.element_equation(pos,end)=1;
+				pos=find(structmd.elements_type==56); md.flowequation.element_equation(pos,end)=2;
+				pos=find(structmd.elements_type==60); md.flowequation.element_equation(pos,end)=3;
+				pos=find(structmd.elements_type==62); md.flowequation.element_equation(pos,end)=4;
+				pos=find(structmd.elements_type==57); md.flowequation.element_equation(pos,end)=5;
+				pos=find(structmd.elements_type==58); md.flowequation.element_equation(pos,end)=6;
+				pos=find(structmd.elements_type==61); md.flowequation.element_equation(pos,end)=7;
+			end
+			if isfield(structmd,'vertices_type') & structmd.vertices_type(end,end)>50,
+				pos=find(structmd.vertices_type==59); md.flowequation.vertex_equation(pos,end)=0;
+				pos=find(structmd.vertices_type==55); md.flowequation.vertex_equation(pos,end)=1;
+				pos=find(structmd.vertices_type==56); md.flowequation.vertex_equation(pos,end)=2;
+				pos=find(structmd.vertices_type==60); md.flowequation.vertex_equation(pos,end)=3;
+				pos=find(structmd.vertices_type==62); md.flowequation.vertex_equation(pos,end)=4;
+				pos=find(structmd.vertices_type==57); md.flowequation.vertex_equation(pos,end)=5;
+				pos=find(structmd.vertices_type==58); md.flowequation.vertex_equation(pos,end)=6;
+				pos=find(structmd.vertices_type==61); md.flowequation.vertex_equation(pos,end)=7;
+			end
+			if isfield(structmd,'rheology_law') & isnumeric(structmd.rheology_law),
+				if (structmd.rheology_law==272), md.materials.rheology_law='None';      end
+				if (structmd.rheology_law==368), md.materials.rheology_law='Paterson';  end
+				if (structmd.rheology_law==369), md.materials.rheology_law='Arrhenius'; end
+			end
+			if isfield(structmd,'groundingline_migration') & isnumeric(structmd.groundingline_migration),
+				if (structmd.groundingline_migration==272), md.groundingline.migration='None';      end
+				if (structmd.groundingline_migration==273), md.groundingline.migration='AggressiveMigration';  end
+				if (structmd.groundingline_migration==274), md.groundingline.migration='SoftMigration'; end
+			end
+			if isfield(structmd,'control_type') & isnumeric(structmd.control_type),
+				if (structmd.control_type==143), md.inversion.control_parameters={'FrictionCoefficient'}; end
+				if (structmd.control_type==190), md.inversion.control_parameters={'RheologyBbar'}; end
+				if (structmd.control_type==147), md.inversion.control_parameters={'Thickeningrate'}; end
+			end
+			if isfield(structmd,'cm_responses') & ismember(structmd.cm_responses(end,end),[165:170 383 388 389]),
+				pos=find(structmd.cm_responses==166); md.inversion.cost_functions(pos)=101;
+				pos=find(structmd.cm_responses==167); md.inversion.cost_functions(pos)=102;
+				pos=find(structmd.cm_responses==168); md.inversion.cost_functions(pos)=103;
+				pos=find(structmd.cm_responses==169); md.inversion.cost_functions(pos)=104;
+				pos=find(structmd.cm_responses==170); md.inversion.cost_functions(pos)=105;
+				pos=find(structmd.cm_responses==165); md.inversion.cost_functions(pos)=201;
+				pos=find(structmd.cm_responses==389); md.inversion.cost_functions(pos)=501;
+				pos=find(structmd.cm_responses==388); md.inversion.cost_functions(pos)=502;
+				pos=find(structmd.cm_responses==382); md.inversion.cost_functions(pos)=503;
+			end
+
+			if isfield(structmd,'artificial_diffusivity') & structmd.artificial_diffusivity==2,
+					md.thermal.stabilization=2;
+					md.masstransport.stabilization=1;
+					md.balancethickness.stabilization=1;
+			end
+			if isnumeric(md.masstransport.hydrostatic_adjustment)
+				if md.masstransport.hydrostatic_adjustment==269,
+					md.masstransport.hydrostatic_adjustment='Incremental';
+				else
+					md.masstransport.hydrostatic_adjustment='Absolute';
+				end
+			end
+
+			%New fields
+			if ~isfield(structmd,'upperelements') & isa(md.mesh,'mesh3dprisms')
+				md.mesh.upperelements=transpose(1:md.mesh.numberofelements)+md.mesh.numberofelements2d;
+				md.mesh.upperelements(end-md.mesh.numberofelements2d+1:end)=NaN;
+			end
+			if ~isfield(structmd,'lowerelements') & isa(md.mesh,'mesh3dprisms')
+				md.mesh.lowerelements=transpose(1:md.mesh.numberofelements)-md.mesh.numberofelements2d;
+				md.mesh.lowerelements(1:md.mesh.numberofelements2d)=NaN;
+			end
+			if ~isfield(structmd,'diagnostic_ref');
+				md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+			end
+			if ~isfield(structmd,'loadingforce');
+				md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+			end
+
+			%2013 August 9
+			if isfield(structmd,'prognostic') & isa(structmd.prognostic,'prognostic'),
+				disp('Recovering old prognostic class');
+				md.masstransport=masstransport(structmd.prognostic);
+			end
+			%2013 August 9
+			if isfield(structmd,'diagnostic') & (isa(structmd.diagnostic,'diagnostic') || isa(structmd.diagnostic,'stressbalance')),
+				disp('Recovering old diagnostic class');
+				md.stressbalance=stressbalance(structmd.diagnostic);
+			end
+			%2014 January 9th
+			if isfield(structmd,'surfaceforcings') & isa(md.smb,'surfaceforcings'),
+				disp('Recovering old surfaceforcings class');
+				mass_balance=structmd.surfaceforcings.mass_balance;
+				md.smb=SMB();
+				md.smb.mass_balance=mass_balance;
+			end
+			%2015 September 10
+			if isfield(structmd,'surfaceforcings') & isa(structmd.surfaceforcings,'SMB'),
+				disp('Recovering old SMB class');
+				md.smb=SMBforcing(structmd.surfaceforcings);
+			end
+			if isfield(structmd,'surfaceforcings') & isa(structmd.surfaceforcings,'SMBhenning'),
+				disp('Recovering old SMBhenning class');
+				md.smb=SMBhenning(structmd.surfaceforcings);
+			end
+
+		end% }}}
+		function md = setdefaultparameters(md) % {{{
+
+			%initialize subclasses
+			md.mesh             = mesh2d();
+			md.mask             = mask();
+			md.constants        = constants();
+			md.geometry         = geometry();
+			md.initialization   = initialization();
+			md.smb              = SMBforcing();
+			md.basalforcings    = basalforcings();
+			md.friction         = friction();
+			md.rifts            = rifts();
+			md.slr              = slr();
+			md.timestepping     = timestepping();
+			md.groundingline    = groundingline();
+			md.materials        = matice();
+			md.damage           = damage();
+			md.flowequation     = flowequation();
+			md.debug            = debug();
+			md.verbose          = verbose();
+			md.settings         = settings();
+			md.toolkits         = toolkits();
+			md.cluster          = generic();
+			md.balancethickness = balancethickness();
+			md.stressbalance    = stressbalance();
+			md.hydrology        = hydrologyshreve();
+			md.masstransport    = masstransport();
+			md.thermal          = thermal();
+			md.steadystate      = steadystate();
+			md.transient        = transient();
+			md.levelset			  = levelset();
+			md.calving          = calving();
+			md.gia              = gia();
+			md.autodiff         = autodiff();
+			md.inversion        = inversion();
+			md.qmu              = qmu();
+			md.radaroverlay     = radaroverlay();
+			md.results          = struct();
+			md.outputdefinition = outputdefinition();
+			md.miscellaneous    = miscellaneous();
+			md.private          = private();
+		end
+		%}}}
+		function md = tetras(md,varargin) % {{{
+			%TETRAS - split 3d prismatic mesh into 3 tetrahedrons
+			%
+			%   Usage:
+			%      md=tetra(md)
+
+			if ~isa(md.mesh,'mesh3dprisms')
+				error('mesh is not a 3d prismatic mesh');
+			end
+
+			%Initialize tetra mesh
+			md.mesh=mesh3dtetras(md.mesh);
+
+			%Subdivision from Philipp Furnstahl (http://studierstube.icg.tugraz.at/thesis/fuernstahl_thesis.pdf)
+			steiner  = 0;
+			nbv      = md.mesh.numberofvertices;
+			nbt      = 3*md.mesh.numberofelements;
+			elements = zeros(nbt,4);
+			for i=1:md.mesh.numberofelements
+				v1=md.mesh.elements(i,1); v2=md.mesh.elements(i,2); v3=md.mesh.elements(i,3);
+				v4=md.mesh.elements(i,4); v5=md.mesh.elements(i,5); v6=md.mesh.elements(i,6);
+				if(min(v2,v4)<min(v1,v5) & min(v1,v6)<min(v3,v4) & min(v3,v5)<min(v2,v6)),
+					steiner = steiner+1; nbv = nbv+1; nbt = nbt+5; v7 = nbv;
+					md.mesh.x=[md.mesh.x; mean(md.mesh.x(md.mesh.elements(i,:)))];
+					md.mesh.y=[md.mesh.y; mean(md.mesh.y(md.mesh.elements(i,:)))];
+					md.mesh.z=[md.mesh.z; mean(md.mesh.z(md.mesh.elements(i,:)))];
+					elements(3*(i-1)+1,:) = [v1 v2 v3 v7];
+					elements(3*(i-1)+2,:) = [v1 v2 v4 v7];
+					elements(3*(i-1)+3,:) = [v2 v4 v5 v7];
+					elements(end+1,:) = [v2 v3 v5 v7];
+					elements(end+1,:) = [v3 v5 v6 v7];
+					elements(end+1,:) = [v1 v3 v6 v7];
+					elements(end+1,:) = [v1 v4 v6 v7];
+					elements(end+1,:) = [v4 v5 v6 v7];
+				elseif(min(v2,v4)<min(v1,v5) & min(v1,v6)<min(v3,v4) & min(v3,v5)>min(v2,v6)),
+					elements(3*(i-1)+1,:) = [v1 v2 v4 v6];
+					elements(3*(i-1)+2,:) = [v2 v4 v5 v6];
+					elements(3*(i-1)+3,:) = [v1 v2 v3 v6];
+				elseif(min(v2,v4)<min(v1,v5) & min(v1,v6)>min(v3,v4) & min(v3,v5)<min(v2,v6)),
+					elements(3*(i-1)+1,:) = [v1 v2 v3 v4];
+					elements(3*(i-1)+2,:) = [v2 v3 v4 v5];
+					elements(3*(i-1)+3,:) = [v3 v4 v5 v6];
+				elseif(min(v2,v4)<min(v1,v5) & min(v1,v6)>min(v3,v4) & min(v3,v5)>min(v2,v6)),
+					elements(3*(i-1)+1,:) = [v1 v2 v3 v4];
+					elements(3*(i-1)+2,:) = [v2 v4 v5 v6];
+					elements(3*(i-1)+3,:) = [v2 v3 v4 v6];
+				elseif(min(v2,v4)>min(v1,v5) & min(v1,v6)<min(v3,v4) & min(v3,v5)<min(v2,v6)),
+					elements(3*(i-1)+1,:) = [v1 v4 v5 v6];
+					elements(3*(i-1)+2,:) = [v1 v2 v3 v5];
+					elements(3*(i-1)+3,:) = [v1 v3 v5 v6];
+				elseif(min(v2,v4)>min(v1,v5) & min(v1,v6)<min(v3,v4) & min(v3,v5)>min(v2,v6)),
+					elements(3*(i-1)+1,:) = [v1 v4 v5 v6];
+					elements(3*(i-1)+2,:) = [v1 v2 v5 v6];
+					elements(3*(i-1)+3,:) = [v1 v2 v3 v6];
+				elseif(min(v2,v4)>min(v1,v5) & min(v1,v6)>min(v3,v4) & min(v3,v5)<min(v2,v6)),
+					elements(3*(i-1)+1,:) = [v1 v3 v4 v5];
+					elements(3*(i-1)+2,:) = [v1 v2 v3 v5];
+					elements(3*(i-1)+3,:) = [v3 v4 v5 v6];
+				elseif(min(v2,v4)>min(v1,v5) & min(v1,v6)<min(v3,v4) & min(v3,v5)<min(v2,v6)),
+					elements(3*(i-1)+1,:) = [v1 v5 v6 v4];
+					elements(3*(i-1)+2,:) = [v1 v2 v3 v5];
+					elements(3*(i-1)+3,:) = [v5 v6 v3 v1];
+				elseif(min(v2,v4)>min(v1,v5) & min(v1,v6)>min(v3,v4) & min(v3,v5)>min(v2,v6)),
+					steiner = steiner+1; nbv = nbv+1; nbt = nbt+5; v7 = nbv;
+					md.mesh.x=[md.mesh.x; mean(md.mesh.x(md.mesh.elements(i,:)))];
+					md.mesh.y=[md.mesh.y; mean(md.mesh.y(md.mesh.elements(i,:)))];
+					md.mesh.z=[md.mesh.z; mean(md.mesh.z(md.mesh.elements(i,:)))];
+					elements(3*(i-1)+1,:) = [v1 v2 v3 v7];
+					elements(3*(i-1)+2,:) = [v1 v4 v5 v7];
+					elements(3*(i-1)+3,:) = [v1 v2 v5 v7];
+					elements(end+1,:) = [v2 v5 v6 v7];
+					elements(end+1,:) = [v2 v3 v6 v7];
+					elements(end+1,:) = [v3 v4 v6 v7];
+					elements(end+1,:) = [v1 v3 v4 v7];
+					elements(end+1,:) = [v4 v5 v6 v7];
+				else
+					error('Case not supported'); %not supposed to happen!
+				end
+				%Reorder elements to make sure they are direct
+				for j=1:3
+					element = elements(3*(i-1)+j,:);
+					matrix = [md.mesh.x(element), md.mesh.y(element), md.mesh.z(element), ones(4,1)];
+					if det(matrix)>0,
+						elements(3*(i-1)+j,1)=element(2);
+						elements(3*(i-1)+j,2)=element(1);
+					end
+				end
+			end
+			%%Split in 3 tetras
+			%subelement1 = [1 2 3 5];
+			%subelement2 = [4 6 5 1];
+			%subelement3 = [5 6 3 1];
+			%elements=[md.mesh.elements(:,subelement1);md.mesh.elements(:,subelement2);md.mesh.elements(:,subelement3)];
+			if steiner==0,
+				disp('No Steiner point required to split prismatic mesh into tets');
+			else
+				disp([num2str(steiner) ' Steiner points had to be included'])
+				error('Steiner point not supported yet');
+			end
+
+			pos_elements = repmat([1:md.mesh.numberofelements]',3,1);
+
+			md.mesh.elements=elements;
+			md.mesh.numberofelements=size(elements,1);
+
+			%p and q (same deal, except for element that are on the bedrock: )
+			if ~isnan(md.friction.p),
+				md.friction.p=md.friction.p(pos_elements);
+				md.friction.q=md.friction.q(pos_elements);
+			end
+
+			%elementstype
+			if ~isnan(md.flowequation.element_equation)
+				oldelements_type=md.flowequation.element_equation;
+				md.flowequation.element_equation=md.flowequation.element_equation(pos_elements);
+			end
+
+			%connectivity
+			md.mesh.elementconnectivity=NaN;
+
+			%materials
+			if ~isnan(md.materials.rheology_n),
+				md.materials.rheology_n=md.materials.rheology_n(pos_elements);
+			end
+
+			%increase connectivity if less than 25:
+			if md.mesh.average_vertex_connectivity<=25,
+				md.mesh.average_vertex_connectivity=100;
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('%19s: %-22s -- %s','mesh'            ,['[1x1 ' class(self.mesh) ']'],'mesh properties'));
+			disp(sprintf('%19s: %-22s -- %s','mask'            ,['[1x1 ' class(self.mask) ']'],'defines grounded and floating elements'));
+			disp(sprintf('%19s: %-22s -- %s','geometry'        ,['[1x1 ' class(self.geometry) ']'],'surface elevation, bedrock topography, ice thickness,...'));
+			disp(sprintf('%19s: %-22s -- %s','constants'       ,['[1x1 ' class(self.constants) ']'],'physical constants'));
+			disp(sprintf('%19s: %-22s -- %s','smb'             ,['[1x1 ' class(self.smb) ']'],'surface mass balance'));
+			disp(sprintf('%19s: %-22s -- %s','basalforcings'   ,['[1x1 ' class(self.basalforcings) ']'],'bed forcings'));
+			disp(sprintf('%19s: %-22s -- %s','materials'       ,['[1x1 ' class(self.materials) ']'],'material properties'));
+			disp(sprintf('%19s: %-22s -- %s','damage'          ,['[1x1 ' class(self.damage) ']'],'parameters for damage evolution solution'));
+			disp(sprintf('%19s: %-22s -- %s','friction'        ,['[1x1 ' class(self.friction) ']'],'basal friction/drag properties'));
+			disp(sprintf('%19s: %-22s -- %s','flowequation'    ,['[1x1 ' class(self.flowequation) ']'],'flow equations'));
+			disp(sprintf('%19s: %-22s -- %s','timestepping'    ,['[1x1 ' class(self.timestepping) ']'],'time stepping for transient models'));
+			disp(sprintf('%19s: %-22s -- %s','initialization'  ,['[1x1 ' class(self.initialization) ']'],'initial guess/state'));
+			disp(sprintf('%19s: %-22s -- %s','rifts'           ,['[1x1 ' class(self.rifts) ']'],'rifts properties'));
+			disp(sprintf('%19s: %-22s -- %s','slr'             ,['[1x1 ' class(self.slr) ']'],'slr forcings'));
+			disp(sprintf('%19s: %-22s -- %s','debug'           ,['[1x1 ' class(self.debug) ']'],'debugging tools (valgrind, gprof)'));
+			disp(sprintf('%19s: %-22s -- %s','verbose'         ,['[1x1 ' class(self.verbose) ']'],'verbosity level in solve'));
+			disp(sprintf('%19s: %-22s -- %s','settings'        ,['[1x1 ' class(self.settings) ']'],'settings properties'));
+			disp(sprintf('%19s: %-22s -- %s','toolkits'        ,['[1x1 ' class(self.toolkits) ']'],'PETSc options for each solution'));
+			disp(sprintf('%19s: %-22s -- %s','cluster'         ,['[1x1 ' class(self.cluster) ']'],'cluster parameters (number of cpus...)'));
+			disp(sprintf('%19s: %-22s -- %s','balancethickness',['[1x1 ' class(self.balancethickness) ']'],'parameters for balancethickness solution'));
+			disp(sprintf('%19s: %-22s -- %s','stressbalance'   ,['[1x1 ' class(self.stressbalance) ']'],'parameters for stressbalance solution'));
+			disp(sprintf('%19s: %-22s -- %s','groundingline'   ,['[1x1 ' class(self.groundingline) ']'],'parameters for groundingline solution'));
+			disp(sprintf('%19s: %-22s -- %s','hydrology'       ,['[1x1 ' class(self.hydrology) ']'],'parameters for hydrology solution'));
+			disp(sprintf('%19s: %-22s -- %s','masstransport'   ,['[1x1 ' class(self.masstransport) ']'],'parameters for masstransport solution'));
+			disp(sprintf('%19s: %-22s -- %s','thermal'         ,['[1x1 ' class(self.thermal) ']'],'parameters for thermal solution'));
+			disp(sprintf('%19s: %-22s -- %s','steadystate'     ,['[1x1 ' class(self.steadystate) ']'],'parameters for steadystate solution'));
+			disp(sprintf('%19s: %-22s -- %s','transient'       ,['[1x1 ' class(self.transient) ']'],'parameters for transient solution'));
+			disp(sprintf('%19s: %-22s -- %s','levelset'         ,['[1x1 ' class(self.levelset) ']'],'parameters for moving boundaries (level-set method)'));
+			disp(sprintf('%19s: %-22s -- %s','calving'         ,['[1x1 ' class(self.calving) ']'],'parameters for calving'));
+			disp(sprintf('%19s: %-22s -- %s','gia'             ,['[1x1 ' class(self.gia) ']'],'parameters for gia solution'));
+			disp(sprintf('%19s: %-22s -- %s','autodiff'        ,['[1x1 ' class(self.autodiff) ']'],'automatic differentiation parameters'));
+			disp(sprintf('%19s: %-22s -- %s','inversion'       ,['[1x1 ' class(self.inversion) ']'],'parameters for inverse methods'));
+			disp(sprintf('%19s: %-22s -- %s','qmu'             ,['[1x1 ' class(self.qmu) ']'],'dakota properties'));
+			disp(sprintf('%19s: %-22s -- %s','outputdefinition',['[1x1 ' class(self.outputdefinition) ']'],'output definition'));
+			disp(sprintf('%19s: %-22s -- %s','results'         ,['[1x1 ' class(self.results) ']'],'model results'));
+			disp(sprintf('%19s: %-22s -- %s','radaroverlay'    ,['[1x1 ' class(self.radaroverlay) ']'],'radar image for plot overlay'));
+			disp(sprintf('%19s: %-22s -- %s','miscellaneous'   ,['[1x1 ' class(self.miscellaneous) ']'],'miscellaneous fields'));
+		end % }}}
+		function memory(self) % {{{
+
+		disp(sprintf('\nMemory imprint:\n'));
+
+		fields=properties('model');
+		mem=0;
+
+		for i=1:length(fields),
+			field=self.(fields{i});
+			s=whos('field'); 
+			mem=mem+s.bytes/1e6;
+			disp(sprintf('%19s: %6.2f Mb',fields{i},s.bytes/1e6));
+		end
+		disp(sprintf('%19s--%10s','--------------','--------------'));
+		disp(sprintf('%19s: %g Mb','Total',mem));
+		end % }}}
+		function netcdf(self,filename) % {{{
+		%NETCDF - save model as netcdf
+		%
+		%   Usage:
+		%      netcdf(md,filename)
+		%
+		%   Example:
+		%      netcdf(md,'model.nc');
+
+		disp('Saving model as NetCDF');
+		%1. Create NetCDF file
+		ncid=netcdf.create(filename,'CLOBBER');
+		netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Conventions','CF-1.4');
+		netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Title',['ISSM model (' self.miscellaneous.name ')']);
+		netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Author',getenv('USER'));
+		netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Date',datestr(now));
+
+		%Preallocate variable id, needed to write variables in netcdf file
+		var_id=zeros(1000,1);%preallocate
+
+		for step=1:2,
+			counter=0;
+			[var_id,counter]=structtonc(ncid,'md',self,0,var_id,counter,step);
+			if step==1, netcdf.endDef(ncid); end
+		end
+
+		if counter>1000,
+			warning(['preallocation of var_id need to be updated from ' num2str(1000) ' to ' num2str(counter)]);
+		end
+
+		netcdf.close(ncid)
+		end % }}}
+		function xylim(self) % {{{
+
+			xlim([min(self.mesh.x) max(self.mesh.x)]);
+			ylim([min(self.mesh.y) max(self.mesh.y)])
+		end % }}}
+		function md=upload(md) % {{{
+		%the goal of this routine is to upload the model onto a server, and to empty it.
+		%So first, save the model with a unique name and upload the file to the server: 
+		random_part=fix(rand(1)*10000);
+		id=[md.miscellaneous.name '-' regexprep(datestr(now),'[^\w'']','') '-' num2str(random_part)  '-' getenv('USER') '-' oshostname() '.upload']; 
+		eval(['save ' id ' md']);
+
+		%Now, upload the file: 
+		issmscpout(md.settings.upload_server,md.settings.upload_path,md.settings.upload_login,md.settings.upload_port,{id},1);
+
+		%Now, empty this model of everything except settings, and record name of file we just uploaded!
+		settings_back=md.settings;
+		md=model();
+		md.settings=settings_back;
+		md.settings.upload_filename=id;
+
+		%get locally rid of file that was uploaded
+		eval(['delete ' id]);
+
+		end % }}}
+		function md=download(md) % {{{
+
+		%the goal of this routine is to download the internals of the current model from a server, because 
+		%this model is empty, except for the settings which tell us where to go and find this model!
+
+		%Download the file: 
+		issmscpin(md.settings.upload_server, md.settings.upload_login, md.settings.upload_port, md.settings.upload_path, {md.settings.upload_filename});
+
+		name=md.settings.upload_filename;
+
+		%Now, load this model: 
+		md=loadmodel(md.settings.upload_filename);
+
+		%get locally rid of file that was downloaded
+		eval(['delete ' name]);
+
+		end % }}}
+		function savemodeljs(md,modelname,websiteroot) % {{{
+
+			%the goal of this routine is to save the model as a javascript array that can be included in any html 
+			%file: 
+
+			%disp: 
+			disp(['saving model ''' modelname ''' in file ' websiteroot '/js/' modelname '.js']);
+
+			%open file for writing and declare the model:
+			fid=fopen([websiteroot '/js/' modelname '.js'],'w');
+			fprintf(fid,'var %s=new model();\n',modelname);
+
+			%now go through all the classes and fwrite all the corresponding fields: 
+			
+			fields=properties('model');
+			for i=1:length(fields),
+				field=fields{i};
+
+				%Some properties do not need to be saved
+				if ismember(field,{'results','cluster' }),
+					continue;
+				end
+
+				%Check that current field is an object
+				if ~isobject(md.(field))
+					error(['field ''' char(field) ''' is not an object']);
+				end
+
+				%savemodeljs for current object
+				%disp(['javascript saving ' field '...']);
+				savemodeljs(md.(field),fid,modelname);
+			end
+
+			%done, close file:
+			fclose(fid);
+		end
+	end
+ end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/model.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/model.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/model.py	(revision 21239)
@@ -0,0 +1,778 @@
+#module imports {{{
+import numpy
+import copy
+import sys
+from mesh2d import mesh2d
+from mesh3dprisms import mesh3dprisms
+from mask import mask
+from geometry import geometry
+from constants import constants
+from SMBforcing import SMBforcing
+from SMBpdd import SMBpdd
+from SMBd18opdd import SMBd18opdd
+from SMBgradients import SMBgradients
+from SMBcomponents import SMBcomponents
+from SMBmeltcomponents import SMBmeltcomponents
+from basalforcings import basalforcings
+from matice import matice
+from levelset import levelset 
+from calving import calving
+from calvinglevermann import calvinglevermann
+#from calvingpi import calvingpi
+from damage import damage
+from friction import friction
+from flowequation import flowequation
+from timestepping import timestepping
+from initialization import initialization
+from rifts import rifts
+from slr import slr
+from debug import debug
+from verbose import verbose
+from settings import settings
+from toolkits import toolkits
+from generic import generic
+from pfe import pfe
+from vilje import vilje
+from hexagon import hexagon
+from cyclone import cyclone
+from balancethickness import balancethickness
+from stressbalance import stressbalance
+from groundingline import groundingline
+from hydrologyshreve import hydrologyshreve
+from hydrologydc import hydrologydc
+from masstransport import masstransport
+from thermal import thermal
+from steadystate import steadystate
+from transient import transient
+from gia import gia
+from autodiff import autodiff
+from inversion import inversion
+from outputdefinition import outputdefinition
+from qmu import qmu
+from results import results
+from radaroverlay import radaroverlay
+from miscellaneous import miscellaneous
+from private import private
+from mumpsoptions import mumpsoptions
+from iluasmoptions import iluasmoptions
+from project3d import project3d
+from project2d import project2d
+from FlagElements import FlagElements
+from NodeConnectivity import NodeConnectivity
+from ElementConnectivity import ElementConnectivity
+from contourenvelope import contourenvelope
+import MatlabFuncs as m
+from DepthAverage import DepthAverage
+#}}}
+
+class model(object):
+	#properties
+	def __init__(self):#{{{
+
+		# classtype=model.properties
+				
+		# for classe in dict.keys(classtype):
+		# 	print classe
+		# 	self.__dict__[classe] = classtype[str(classe)]
+
+		self.mesh             = mesh2d()
+		self.mask             = mask()
+		self.geometry         = geometry()
+		self.constants        = constants()
+		self.smb              = SMBforcing()
+		self.basalforcings    = basalforcings()
+		self.materials        = matice()
+		self.damage           = damage()
+		self.friction         = friction()
+		self.flowequation     = flowequation()
+		self.timestepping     = timestepping()
+		self.initialization   = initialization()
+		self.rifts            = rifts()
+		self.slr              = slr()
+
+		self.debug            = debug()
+		self.verbose          = verbose()
+		self.settings         = settings()
+		self.toolkits         = toolkits()
+		self.cluster          = generic()
+
+		self.balancethickness = balancethickness()
+		self.stressbalance    = stressbalance()
+		self.groundingline    = groundingline()
+		self.hydrology        = hydrologyshreve()
+		self.masstransport    = masstransport()
+		self.thermal          = thermal()
+		self.steadystate      = steadystate()
+		self.transient        = transient()
+		self.levelset         = levelset()
+		self.calving          = calving()
+		self.gia              = gia()
+
+		self.autodiff         = autodiff()
+		self.inversion        = inversion()
+		self.qmu              = qmu()
+
+		self.results          = results()
+		self.outputdefinition = outputdefinition()
+		self.radaroverlay     = radaroverlay()
+		self.miscellaneous    = miscellaneous()
+		self.private          = private()
+		#}}}
+	def properties(self):    # {{{
+		# ordered list of properties since vars(self) is random
+		return ['mesh',\
+		        'mask',\
+		        'geometry',\
+		        'constants',\
+		        'smb',\
+		        'basalforcings',\
+		        'materials',\
+		        'damage',\
+		        'friction',\
+		        'flowequation',\
+		        'timestepping',\
+		        'initialization',\
+		        'rifts',\
+		        'slr',\
+		        'debug',\
+		        'verbose',\
+		        'settings',\
+		        'toolkits',\
+		        'cluster',\
+		        'balancethickness',\
+		        'stressbalance',\
+		        'groundingline',\
+		        'hydrology',\
+		        'masstransport',\
+		        'thermal',\
+		        'steadystate',\
+		        'transient',\
+		        'levelset',\
+		        'calving',\
+						'gia',\
+		        'autodiff',\
+		        'inversion',\
+		        'qmu',\
+		        'outputdefinition',\
+		        'results',\
+		        'radaroverlay',\
+		        'miscellaneous',\
+		        'private']
+	# }}}
+	def __repr__(obj): #{{{
+		#print "Here %s the number: %d" % ("is", 37)
+		string="%19s: %-22s -- %s" % ("mesh","[%s,%s]" % ("1x1",obj.mesh.__class__.__name__),"mesh properties")
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("mask","[%s,%s]" % ("1x1",obj.mask.__class__.__name__),"defines grounded and floating elements"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("geometry","[%s,%s]" % ("1x1",obj.geometry.__class__.__name__),"surface elevation, bedrock topography, ice thickness,..."))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("constants","[%s,%s]" % ("1x1",obj.constants.__class__.__name__),"physical constants"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("smb","[%s,%s]" % ("1x1",obj.smb.__class__.__name__),"surface mass balance"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("basalforcings","[%s,%s]" % ("1x1",obj.basalforcings.__class__.__name__),"bed forcings"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("materials","[%s,%s]" % ("1x1",obj.materials.__class__.__name__),"material properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("damage","[%s,%s]" % ("1x1",obj.damage.__class__.__name__),"damage propagation laws"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("friction","[%s,%s]" % ("1x1",obj.friction.__class__.__name__),"basal friction/drag properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("flowequation","[%s,%s]" % ("1x1",obj.flowequation.__class__.__name__),"flow equations"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("timestepping","[%s,%s]" % ("1x1",obj.timestepping.__class__.__name__),"time stepping for transient models"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("initialization","[%s,%s]" % ("1x1",obj.initialization.__class__.__name__),"initial guess/state"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("rifts","[%s,%s]" % ("1x1",obj.rifts.__class__.__name__),"rifts properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("slr","[%s,%s]" % ("1x1",obj.slr.__class__.__name__),"slr forcings"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("debug","[%s,%s]" % ("1x1",obj.debug.__class__.__name__),"debugging tools (valgrind, gprof)"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("verbose","[%s,%s]" % ("1x1",obj.verbose.__class__.__name__),"verbosity level in solve"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("settings","[%s,%s]" % ("1x1",obj.settings.__class__.__name__),"settings properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("toolkits","[%s,%s]" % ("1x1",obj.toolkits.__class__.__name__),"PETSc options for each solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("cluster","[%s,%s]" % ("1x1",obj.cluster.__class__.__name__),"cluster parameters (number of cpus...)"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("balancethickness","[%s,%s]" % ("1x1",obj.balancethickness.__class__.__name__),"parameters for balancethickness solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("stressbalance","[%s,%s]" % ("1x1",obj.stressbalance.__class__.__name__),"parameters for stressbalance solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("groundingline","[%s,%s]" % ("1x1",obj.groundingline.__class__.__name__),"parameters for groundingline solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("hydrology","[%s,%s]" % ("1x1",obj.hydrology.__class__.__name__),"parameters for hydrology solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("masstransport","[%s,%s]" % ("1x1",obj.masstransport.__class__.__name__),"parameters for masstransport solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("thermal","[%s,%s]" % ("1x1",obj.thermal.__class__.__name__),"parameters for thermal solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("steadystate","[%s,%s]" % ("1x1",obj.steadystate.__class__.__name__),"parameters for steadystate solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("transient","[%s,%s]" % ("1x1",obj.transient.__class__.__name__),"parameters for transient solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("levelset","[%s,%s]" % ("1x1",obj.levelset.__class__.__name__),"parameters for moving boundaries (level-set method)"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("calving","[%s,%s]" % ("1x1",obj.calving.__class__.__name__),"parameters for calving"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("autodiff","[%s,%s]" % ("1x1",obj.autodiff.__class__.__name__),"automatic differentiation parameters"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("inversion","[%s,%s]" % ("1x1",obj.inversion.__class__.__name__),"parameters for inverse methods"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("qmu","[%s,%s]" % ("1x1",obj.qmu.__class__.__name__),"dakota properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("outputdefinition","[%s,%s]" % ("1x1",obj.outputdefinition.__class__.__name__),"output definition"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("results","[%s,%s]" % ("1x1",obj.results.__class__.__name__),"model results"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("radaroverlay","[%s,%s]" % ("1x1",obj.radaroverlay.__class__.__name__),"radar image for plot overlay"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("miscellaneous","[%s,%s]" % ("1x1",obj.miscellaneous.__class__.__name__),"miscellaneous fields"))
+		return string
+	# }}}
+	def checkmessage(self,string):    # {{{
+		print "model not consistent: ", string
+		self.private.isconsistent=False
+		return self
+	# }}}
+	def extract(md,area):    # {{{
+		"""
+		extract - extract a model according to an Argus contour or flag list
+
+		   This routine extracts a submodel from a bigger model with respect to a given contour
+		   md must be followed by the corresponding exp file or flags list
+		   It can either be a domain file (argus type, .exp extension), or an array of element flags. 
+		   If user wants every element outside the domain to be 
+		   extract2d, add '~' to the name of the domain file (ex: '~HO.exp')
+		   an empty string '' will be considered as an empty domain
+		   a string 'all' will be considered as the entire domain
+
+		   Usage:
+		      md2=extract(md,area)
+
+		   Examples:
+		      md2=extract(md,'Domain.exp')
+
+		   See also: EXTRUDE, COLLAPSE
+		"""
+
+		#copy model
+		md1=copy.deepcopy(md)
+
+		#get elements that are inside area
+		flag_elem=FlagElements(md1,area)
+		if not numpy.any(flag_elem):
+			raise RuntimeError("extracted model is empty")
+
+		#kick out all elements with 3 dirichlets
+		spc_elem=numpy.nonzero(numpy.logical_not(flag_elem))[0]
+		spc_node=numpy.unique(md1.mesh.elements[spc_elem,:])-1
+		flag=numpy.ones(md1.mesh.numberofvertices)
+		flag[spc_node]=0
+		pos=numpy.nonzero(numpy.logical_not(numpy.sum(flag[md1.mesh.elements-1],axis=1)))[0]
+		flag_elem[pos]=0
+
+		#extracted elements and nodes lists
+		pos_elem=numpy.nonzero(flag_elem)[0]
+		pos_node=numpy.unique(md1.mesh.elements[pos_elem,:])-1
+
+		#keep track of some fields
+		numberofvertices1=md1.mesh.numberofvertices
+		numberofelements1=md1.mesh.numberofelements
+		numberofvertices2=numpy.size(pos_node)
+		numberofelements2=numpy.size(pos_elem)
+		flag_node=numpy.zeros(numberofvertices1)
+		flag_node[pos_node]=1
+
+		#Create Pelem and Pnode (transform old nodes in new nodes and same thing for the elements)
+		Pelem=numpy.zeros(numberofelements1,int)
+		Pelem[pos_elem]=numpy.arange(1,numberofelements2+1)
+		Pnode=numpy.zeros(numberofvertices1,int)
+		Pnode[pos_node]=numpy.arange(1,numberofvertices2+1)
+
+		#renumber the elements (some node won't exist anymore)
+		elements_1=copy.deepcopy(md1.mesh.elements)
+		elements_2=elements_1[pos_elem,:]
+		elements_2[:,0]=Pnode[elements_2[:,0]-1]
+		elements_2[:,1]=Pnode[elements_2[:,1]-1]
+		elements_2[:,2]=Pnode[elements_2[:,2]-1]
+		if md1.mesh.__class__.__name__=='mesh3dprisms':
+			elements_2[:,3]=Pnode[elements_2[:,3]-1]
+			elements_2[:,4]=Pnode[elements_2[:,4]-1]
+			elements_2[:,5]=Pnode[elements_2[:,5]-1]
+
+		#OK, now create the new model!
+
+		#take every field from model
+		md2=copy.deepcopy(md1)
+
+		#automatically modify fields
+
+		#loop over model fields
+		model_fields=vars(md1)
+		for fieldi in model_fields:
+			#get field
+			field=getattr(md1,fieldi)
+			fieldsize=numpy.shape(field)
+			if hasattr(field,'__dict__') and not m.ismember(fieldi,['results'])[0]:    #recursive call
+				object_fields=vars(field)
+				for fieldj in object_fields:
+					#get field
+					field=getattr(getattr(md1,fieldi),fieldj)
+					fieldsize=numpy.shape(field)
+					if len(fieldsize):
+						#size = number of nodes * n
+						if   fieldsize[0]==numberofvertices1:
+							setattr(getattr(md2,fieldi),fieldj,field[pos_node])
+						elif fieldsize[0]==numberofvertices1+1:
+							setattr(getattr(md2,fieldi),fieldj,numpy.vstack((field[pos_node],field[-1,:])))
+						#size = number of elements * n
+						elif fieldsize[0]==numberofelements1:
+							setattr(getattr(md2,fieldi),fieldj,field[pos_elem])
+			else:
+				if len(fieldsize):
+					#size = number of nodes * n
+					if   fieldsize[0]==numberofvertices1:
+						setattr(md2,fieldi,field[pos_node])
+					elif fieldsize[0]==numberofvertices1+1:
+						setattr(md2,fieldi,numpy.hstack((field[pos_node],field[-1,:])))
+					#size = number of elements * n
+					elif fieldsize[0]==numberofelements1:
+						setattr(md2,fieldi,field[pos_elem])
+
+		#modify some specific fields
+
+		#Mesh
+		md2.mesh.numberofelements=numberofelements2
+		md2.mesh.numberofvertices=numberofvertices2
+		md2.mesh.elements=elements_2
+
+		#mesh.uppervertex mesh.lowervertex
+		if md1.mesh.__class__.__name__=='mesh3dprisms':
+			md2.mesh.uppervertex=md1.mesh.uppervertex[pos_node]
+			pos=numpy.nonzero(numpy.logical_not(md2.mesh.uppervertex==-1))[0]
+			md2.mesh.uppervertex[pos]=Pnode[md2.mesh.uppervertex[pos]-1]
+
+			md2.mesh.lowervertex=md1.mesh.lowervertex[pos_node]
+			pos=numpy.nonzero(numpy.logical_not(md2.mesh.lowervertex==-1))[0]
+			md2.mesh.lowervertex[pos]=Pnode[md2.mesh.lowervertex[pos]-1]
+
+			md2.mesh.upperelements=md1.mesh.upperelements[pos_elem]
+			pos=numpy.nonzero(numpy.logical_not(md2.mesh.upperelements==-1))[0]
+			md2.mesh.upperelements[pos]=Pelem[md2.mesh.upperelements[pos]-1]
+
+			md2.mesh.lowerelements=md1.mesh.lowerelements[pos_elem]
+			pos=numpy.nonzero(numpy.logical_not(md2.mesh.lowerelements==-1))[0]
+			md2.mesh.lowerelements[pos]=Pelem[md2.mesh.lowerelements[pos]-1]
+
+		#Initial 2d mesh 
+		if md1.mesh.__class__.__name__=='mesh3dprisms':
+			flag_elem_2d=flag_elem[numpy.arange(0,md1.mesh.numberofelements2d)]
+			pos_elem_2d=numpy.nonzero(flag_elem_2d)[0]
+			flag_node_2d=flag_node[numpy.arange(0,md1.mesh.numberofvertices2d)]
+			pos_node_2d=numpy.nonzero(flag_node_2d)[0]
+
+			md2.mesh.numberofelements2d=numpy.size(pos_elem_2d)
+			md2.mesh.numberofvertices2d=numpy.size(pos_node_2d)
+			md2.mesh.elements2d=md1.mesh.elements2d[pos_elem_2d,:]
+			md2.mesh.elements2d[:,0]=Pnode[md2.mesh.elements2d[:,0]-1]
+			md2.mesh.elements2d[:,1]=Pnode[md2.mesh.elements2d[:,1]-1]
+			md2.mesh.elements2d[:,2]=Pnode[md2.mesh.elements2d[:,2]-1]
+
+			md2.mesh.x2d=md1.mesh.x[pos_node_2d]
+			md2.mesh.y2d=md1.mesh.y[pos_node_2d]
+
+		#Edges
+		if m.strcmp(md.mesh.domaintype(),'2Dhorizontal'):
+			if numpy.ndim(md2.mesh.edges)>1 and numpy.size(md2.mesh.edges,axis=1)>1:    #do not use ~isnan because there are some numpy.nans...
+				#renumber first two columns
+				pos=numpy.nonzero(md2.mesh.edges[:,3]!=-1)[0]
+				md2.mesh.edges[:  ,0]=Pnode[md2.mesh.edges[:,0]-1]
+				md2.mesh.edges[:  ,1]=Pnode[md2.mesh.edges[:,1]-1]
+				md2.mesh.edges[:  ,2]=Pelem[md2.mesh.edges[:,2]-1]
+				md2.mesh.edges[pos,3]=Pelem[md2.mesh.edges[pos,3]-1]
+				#remove edges when the 2 vertices are not in the domain.
+				md2.mesh.edges=md2.mesh.edges[numpy.nonzero(numpy.logical_and(md2.mesh.edges[:,0],md2.mesh.edges[:,1]))[0],:]
+				#Replace all zeros by -1 in the last two columns
+				pos=numpy.nonzero(md2.mesh.edges[:,2]==0)[0]
+				md2.mesh.edges[pos,2]=-1
+				pos=numpy.nonzero(md2.mesh.edges[:,3]==0)[0]
+				md2.mesh.edges[pos,3]=-1
+				#Invert -1 on the third column with last column (Also invert first two columns!!)
+				pos=numpy.nonzero(md2.mesh.edges[:,2]==-1)[0]
+				md2.mesh.edges[pos,2]=md2.mesh.edges[pos,3]
+				md2.mesh.edges[pos,3]=-1
+				values=md2.mesh.edges[pos,1]
+				md2.mesh.edges[pos,1]=md2.mesh.edges[pos,0]
+				md2.mesh.edges[pos,0]=values
+				#Finally remove edges that do not belong to any element
+				pos=numpy.nonzero(numpy.logical_and(md2.mesh.edges[:,1]==-1,md2.mesh.edges[:,2]==-1))[0]
+				md2.mesh.edges=numpy.delete(md2.mesh.edges,pos,axis=0)
+
+		#Penalties
+		if numpy.any(numpy.logical_not(numpy.isnan(md2.stressbalance.vertex_pairing))):
+			for i in xrange(numpy.size(md1.stressbalance.vertex_pairing,axis=0)):
+				md2.stressbalance.vertex_pairing[i,:]=Pnode[md1.stressbalance.vertex_pairing[i,:]]
+			md2.stressbalance.vertex_pairing=md2.stressbalance.vertex_pairing[numpy.nonzero(md2.stressbalance.vertex_pairing[:,0])[0],:]
+		if numpy.any(numpy.logical_not(numpy.isnan(md2.masstransport.vertex_pairing))):
+			for i in xrange(numpy.size(md1.masstransport.vertex_pairing,axis=0)):
+				md2.masstransport.vertex_pairing[i,:]=Pnode[md1.masstransport.vertex_pairing[i,:]]
+			md2.masstransport.vertex_pairing=md2.masstransport.vertex_pairing[numpy.nonzero(md2.masstransport.vertex_pairing[:,0])[0],:]
+
+		#recreate segments
+		if md1.mesh.__class__.__name__=='mesh2d':
+			md2.mesh.vertexconnectivity=NodeConnectivity(md2.mesh.elements,md2.mesh.numberofvertices)[0]
+			md2.mesh.elementconnectivity=ElementConnectivity(md2.mesh.elements,md2.mesh.vertexconnectivity)[0]
+			md2.mesh.segments=contourenvelope(md2)
+			md2.mesh.vertexonboundary=numpy.zeros(numberofvertices2,bool)
+			md2.mesh.vertexonboundary[md2.mesh.segments[:,0:2]-1]=True
+		else:
+			#First do the connectivity for the contourenvelope in 2d
+			md2.mesh.vertexconnectivity=NodeConnectivity(md2.mesh.elements2d,md2.mesh.numberofvertices2d)[0]
+			md2.mesh.elementconnectivity=ElementConnectivity(md2.mesh.elements2d,md2.mesh.vertexconnectivity)[0]
+			segments=contourenvelope(md2)
+			md2.mesh.vertexonboundary=numpy.zeros(numberofvertices2/md2.mesh.numberoflayers,bool)
+			md2.mesh.vertexonboundary[segments[:,0:2]-1]=True
+			md2.mesh.vertexonboundary=numpy.tile(md2.mesh.vertexonboundary,md2.mesh.numberoflayers)
+			#Then do it for 3d as usual
+			md2.mesh.vertexconnectivity=NodeConnectivity(md2.mesh.elements,md2.mesh.numberofvertices)[0]
+			md2.mesh.elementconnectivity=ElementConnectivity(md2.mesh.elements,md2.mesh.vertexconnectivity)[0]
+
+		#Boundary conditions: Dirichlets on new boundary
+		#Catch the elements that have not been extracted
+		orphans_elem=numpy.nonzero(numpy.logical_not(flag_elem))[0]
+		orphans_node=numpy.unique(md1.mesh.elements[orphans_elem,:])-1
+		#Figure out which node are on the boundary between md2 and md1
+		nodestoflag1=numpy.intersect1d(orphans_node,pos_node)
+		nodestoflag2=Pnode[nodestoflag1].astype(int)-1
+		if numpy.size(md1.stressbalance.spcvx)>1 and numpy.size(md1.stressbalance.spcvy)>2 and numpy.size(md1.stressbalance.spcvz)>2:
+			if numpy.size(md1.inversion.vx_obs)>1 and numpy.size(md1.inversion.vy_obs)>1:
+				md2.stressbalance.spcvx[nodestoflag2]=md2.inversion.vx_obs[nodestoflag2] 
+				md2.stressbalance.spcvy[nodestoflag2]=md2.inversion.vy_obs[nodestoflag2]
+			else:
+				md2.stressbalance.spcvx[nodestoflag2]=numpy.nan
+				md2.stressbalance.spcvy[nodestoflag2]=numpy.nan
+				print "\n!! extract warning: spc values should be checked !!\n\n"
+			#put 0 for vz
+			md2.stressbalance.spcvz[nodestoflag2]=0
+		if numpy.any(numpy.logical_not(numpy.isnan(md1.thermal.spctemperature))):
+			md2.thermal.spctemperature[nodestoflag2,0]=1
+
+		#Results fields
+		if md1.results:
+			md2.results=results()
+			for solutionfield,field in md1.results.__dict__.iteritems():
+				if   isinstance(field,list):
+					setattr(md2.results,solutionfield,[])
+					#get time step
+					for i,fieldi in enumerate(field):
+						if isinstance(fieldi,results) and fieldi:
+							getattr(md2.results,solutionfield).append(results())
+							fieldr=getattr(md2.results,solutionfield)[i]
+							#get subfields
+							for solutionsubfield,subfield in fieldi.__dict__.iteritems():
+								if   numpy.size(subfield)==numberofvertices1:
+									setattr(fieldr,solutionsubfield,subfield[pos_node])
+								elif numpy.size(subfield)==numberofelements1:
+									setattr(fieldr,solutionsubfield,subfield[pos_elem])
+								else:
+									setattr(fieldr,solutionsubfield,subfield)
+						else:
+							getattr(md2.results,solutionfield).append(None)
+				elif isinstance(field,results):
+					setattr(md2.results,solutionfield,results())
+					if isinstance(field,results) and field:
+						fieldr=getattr(md2.results,solutionfield)
+						#get subfields
+						for solutionsubfield,subfield in field.__dict__.iteritems():
+							if   numpy.size(subfield)==numberofvertices1:
+								setattr(fieldr,solutionsubfield,subfield[pos_node])
+							elif numpy.size(subfield)==numberofelements1:
+								setattr(fieldr,solutionsubfield,subfield[pos_elem])
+							else:
+								setattr(fieldr,solutionsubfield,subfield)
+
+		#Keep track of pos_node and pos_elem
+		md2.mesh.extractedvertices=pos_node+1
+		md2.mesh.extractedelements=pos_elem+1
+
+		return md2
+	# }}}
+	def extrude(md,*args):    # {{{
+		"""
+		EXTRUDE - vertically extrude a 2d mesh
+
+		   vertically extrude a 2d mesh and create corresponding 3d mesh.
+		   The vertical distribution can:
+		    - follow a polynomial law
+		    - follow two polynomial laws, one for the lower part and one for the upper part of the mesh
+		    - be discribed by a list of coefficients (between 0 and 1)
+ 
+
+		   Usage:
+		      md=extrude(md,numlayers,extrusionexponent)
+		      md=extrude(md,numlayers,lowerexponent,upperexponent)
+		      md=extrude(md,listofcoefficients)
+
+		   Example:
+				md=extrude(md,15,1.3);
+				md=extrude(md,15,1.3,1.2);
+				md=extrude(md,[0 0.2 0.5 0.7 0.9 0.95 1])
+
+		   See also: MODELEXTRACT, COLLAPSE
+		"""
+
+		#some checks on list of arguments
+		if len(args)>3 or len(args)<1:
+			raise RuntimeError("extrude error message")
+
+		#Extrude the mesh
+		if   len(args)==1:    #list of coefficients
+			clist=args[0]
+			if any(clist<0) or any(clist>1):
+				raise TypeError("extrusioncoefficients must be between 0 and 1")
+			clist.extend([0.,1.])
+			clist.sort()
+			extrusionlist=list(set(clist))
+			numlayers=len(extrusionlist)
+
+		elif len(args)==2:    #one polynomial law
+			if args[1]<=0:
+				raise TypeError("extrusionexponent must be >=0")
+			numlayers=args[0]
+			extrusionlist=(numpy.arange(0.,float(numlayers-1)+1.,1.)/float(numlayers-1))**args[1]
+
+		elif len(args)==3:    #two polynomial laws
+			numlayers=args[0]
+			lowerexp=args[1]
+			upperexp=args[2]
+
+			if args[1]<=0 or args[2]<=0:
+				raise TypeError("lower and upper extrusionexponents must be >=0")
+
+			lowerextrusionlist=(numpy.arange(0.,1.+2./float(numlayers-1),2./float(numlayers-1)))**lowerexp/2.
+			upperextrusionlist=(numpy.arange(0.,1.+2./float(numlayers-1),2./float(numlayers-1)))**upperexp/2.
+			extrusionlist=numpy.unique(numpy.concatenate((lowerextrusionlist,1.-upperextrusionlist)))
+
+		if numlayers<2:
+			raise TypeError("number of layers should be at least 2")
+		if md.mesh.__class__.__name__=='mesh3dprisms':
+			raise TypeError("Cannot extrude a 3d mesh (extrude cannot be called more than once)")
+
+		#Initialize with the 2d mesh
+		mesh2d = md.mesh
+		md.mesh=mesh3dprisms()
+		md.mesh.x                           = mesh2d.x
+		md.mesh.y                           = mesh2d.y
+		md.mesh.elements                    = mesh2d.elements
+		md.mesh.numberofelements            = mesh2d.numberofelements
+		md.mesh.numberofvertices            = mesh2d.numberofvertices
+
+		md.mesh.lat                         = mesh2d.lat
+		md.mesh.long                        = mesh2d.long
+		md.mesh.epsg                        = mesh2d.epsg
+
+		md.mesh.vertexonboundary            = mesh2d.vertexonboundary
+		md.mesh.vertexconnectivity          = mesh2d.vertexconnectivity
+		md.mesh.elementconnectivity         = mesh2d.elementconnectivity
+		md.mesh.average_vertex_connectivity = mesh2d.average_vertex_connectivity
+
+		md.mesh.extractedvertices           = mesh2d.extractedvertices
+		md.mesh.extractedelements           = mesh2d.extractedelements
+
+		x3d=numpy.empty((0))
+		y3d=numpy.empty((0))
+		z3d=numpy.empty((0))    #the lower node is on the bed
+		thickness3d=md.geometry.thickness    #thickness and bed for these nodes
+		bed3d=md.geometry.base
+
+		#Create the new layers
+		for i in xrange(numlayers):
+			x3d=numpy.concatenate((x3d,md.mesh.x))
+			y3d=numpy.concatenate((y3d,md.mesh.y))
+			#nodes are distributed between bed and surface accordingly to the given exponent
+			z3d=numpy.concatenate((z3d,(bed3d+thickness3d*extrusionlist[i]).reshape(-1)))
+		number_nodes3d=numpy.size(x3d)    #number of 3d nodes for the non extruded part of the mesh
+
+		#Extrude elements 
+		elements3d=numpy.empty((0,6),int)
+		for i in xrange(numlayers-1):
+			elements3d=numpy.vstack((elements3d,numpy.hstack((md.mesh.elements+i*md.mesh.numberofvertices,md.mesh.elements+(i+1)*md.mesh.numberofvertices))))    #Create the elements of the 3d mesh for the non extruded part
+		number_el3d=numpy.size(elements3d,axis=0)    #number of 3d nodes for the non extruded part of the mesh
+
+		#Keep a trace of lower and upper nodes
+		lowervertex=-1*numpy.ones(number_nodes3d,int)
+		uppervertex=-1*numpy.ones(number_nodes3d,int)
+		lowervertex[md.mesh.numberofvertices:]=numpy.arange(1,(numlayers-1)*md.mesh.numberofvertices+1)
+		uppervertex[:(numlayers-1)*md.mesh.numberofvertices]=numpy.arange(md.mesh.numberofvertices+1,number_nodes3d+1)
+		md.mesh.lowervertex=lowervertex
+		md.mesh.uppervertex=uppervertex
+
+		#same for lower and upper elements
+		lowerelements=-1*numpy.ones(number_el3d,int)
+		upperelements=-1*numpy.ones(number_el3d,int)
+		lowerelements[md.mesh.numberofelements:]=numpy.arange(1,(numlayers-2)*md.mesh.numberofelements+1)
+		upperelements[:(numlayers-2)*md.mesh.numberofelements]=numpy.arange(md.mesh.numberofelements+1,(numlayers-1)*md.mesh.numberofelements+1)
+		md.mesh.lowerelements=lowerelements
+		md.mesh.upperelements=upperelements
+
+		#Save old mesh 
+		md.mesh.x2d=md.mesh.x
+		md.mesh.y2d=md.mesh.y
+		md.mesh.elements2d=md.mesh.elements
+		md.mesh.numberofelements2d=md.mesh.numberofelements
+		md.mesh.numberofvertices2d=md.mesh.numberofvertices
+
+		#Build global 3d mesh 
+		md.mesh.elements=elements3d
+		md.mesh.x=x3d
+		md.mesh.y=y3d
+		md.mesh.z=z3d
+		md.mesh.numberofelements=number_el3d
+		md.mesh.numberofvertices=number_nodes3d
+		md.mesh.numberoflayers=numlayers
+
+		#Ok, now deal with the other fields from the 2d mesh:
+
+		#bedinfo and surface info
+		md.mesh.vertexonbase=project3d(md,'vector',numpy.ones(md.mesh.numberofvertices2d,bool),'type','node','layer',1)
+		md.mesh.vertexonsurface=project3d(md,'vector',numpy.ones(md.mesh.numberofvertices2d,bool),'type','node','layer',md.mesh.numberoflayers)
+		md.mesh.vertexonboundary=project3d(md,'vector',md.mesh.vertexonboundary,'type','node')
+
+		#lat long
+		md.mesh.lat=project3d(md,'vector',md.mesh.lat,'type','node')
+		md.mesh.long=project3d(md,'vector',md.mesh.long,'type','node')
+
+		md.geometry.extrude(md)
+		md.friction.extrude(md)
+		md.inversion.extrude(md)
+		md.smb.extrude(md)
+		md.initialization.extrude(md)
+		md.flowequation.extrude(md)
+
+		md.stressbalance.extrude(md)
+		md.thermal.extrude(md)
+		md.masstransport.extrude(md)
+
+		# Calving variables
+		md.hydrology.extrude(md)
+		md.levelset.extrude(md)
+		md.calving.extrude(md)
+
+		#connectivity
+		md.mesh.elementconnectivity=numpy.tile(md.mesh.elementconnectivity,(numlayers-1,1))
+		md.mesh.elementconnectivity[numpy.nonzero(md.mesh.elementconnectivity==0)]=-sys.maxint-1
+		if not numpy.isnan(md.mesh.elementconnectivity).all():
+			for i in xrange(1,numlayers-1):
+				md.mesh.elementconnectivity[i*md.mesh.numberofelements2d:(i+1)*md.mesh.numberofelements2d,:] \
+						=md.mesh.elementconnectivity[i*md.mesh.numberofelements2d:(i+1)*md.mesh.numberofelements2d,:]+md.mesh.numberofelements2d
+				md.mesh.elementconnectivity[numpy.nonzero(md.mesh.elementconnectivity<0)]=0
+
+		md.materials.extrude(md)
+		md.damage.extrude(md)
+		md.gia.extrude(md)
+		md.mask.extrude(md)
+		md.qmu.extrude(md)
+		md.basalforcings.extrude(md)
+
+		#increase connectivity if less than 25:
+		if md.mesh.average_vertex_connectivity<=25:
+			md.mesh.average_vertex_connectivity=100
+
+		return md
+		# }}}
+	def collapse(md): #{{{
+		'''
+		collapses a 3d mesh into a 2d mesh
+			
+		This routine collapses a 3d model into a 2d model and collapses all
+		the fileds of the 3d model by taking their depth-averaged values
+			
+		Usage:
+			md=collapse(md)
+		'''	
+
+		#Check that the model is really a 3d model
+		if md.mesh.domaintype().lower() != '3d':
+			raise StandardError("only a 3D model can be collapsed")
+		
+		#drag is limited to nodes that are on the bedrock.
+		md.friction.coefficient=project2d(md,md.friction.coefficient,1)
+
+		#p and q (same deal, except for element that are on the bedrock: )
+		md.friction.p=project2d(md,md.friction.p,1)
+		md.friction.q=project2d(md,md.friction.q,1)
+
+		#observations
+		if not numpy.isnan(md.inversion.vx_obs).all(): md.inversion.vx_obs=project2d(md,md.inversion.vx_obs,md.mesh.numberoflayers) 
+		if not numpy.isnan(md.inversion.vy_obs).all(): md.inversion.vy_obs=project2d(md,md.inversion.vy_obs,md.mesh.numberoflayers) 
+		if not numpy.isnan(md.inversion.vel_obs).all(): md.inversion.vel_obs=project2d(md,md.inversion.vel_obs,md.mesh.numberoflayers) 
+		if not numpy.isnan(md.inversion.cost_functions_coefficients).all(): md.inversion.cost_functions_coefficients=project2d(md,md.inversion.cost_functions_coefficients,md.mesh.numberoflayers) 
+                if isinstance(md.inversion.min_parameters,numpy.ndarray):
+                    if md.inversion.min_parameters.size>1: md.inversion.min_parameters=project2d(md,md.inversion.min_parameters,md.mesh.numberoflayers) 
+                if isinstance(md.inversion.max_parameters,numpy.ndarray):
+		    if md.inversion.max_parameters.size>1: md.inversion.max_parameters=project2d(md,md.inversion.max_parameters,md.mesh.numberoflayers) 
+		if not numpy.isnan(md.smb.mass_balance).all():
+			md.smb.mass_balance=project2d(md,md.smb.mass_balance,md.mesh.numberoflayers) 
+		
+		#results
+		if not numpy.isnan(md.initialization.vx).all(): md.initialization.vx=DepthAverage(md,md.initialization.vx)
+		if not numpy.isnan(md.initialization.vy).all(): md.initialization.vy=DepthAverage(md,md.initialization.vy)
+		if not numpy.isnan(md.initialization.vz).all(): md.initialization.vz=DepthAverage(md,md.initialization.vz)
+		if not numpy.isnan(md.initialization.vel).all(): md.initialization.vel=DepthAverage(md,md.initialization.vel)
+		if not numpy.isnan(md.initialization.temperature).all(): md.initialization.temperature=DepthAverage(md,md.initialization.temperature)
+                if not numpy.isnan(md.initialization.pressure).all(): md.initialization.pressure=project2d(md,md.initialization.pressure,1)
+                if not numpy.isnan(md.initialization.sediment_head).all(): md.initialization.sediment_head=project2d(md,md.initialization.sediment_head,1)
+                if not numpy.isnan(md.initialization.epl_head).all(): md.initialization.epl_head=project2d(md,md.initialization.epl_head,1)
+                if not numpy.isnan(md.initialization.epl_thickness).all(): md.initialization.epl_thickness=project2d(md,md.initialization.epl_thickness,1)
+
+		#gia
+		if not numpy.isnan(md.gia.mantle_viscosity).all(): md.gia.mantle_viscosity=project2d(md,md.gia.mantle_viscosity,1) 
+		if not numpy.isnan(md.gia.lithosphere_thickness).all(): md.gia.lithosphere_thickness=project2d(md,md.gia.lithosphere_thickness,1) 
+
+		#elementstype
+		if not numpy.isnan(md.flowequation.element_equation).all():
+			md.flowequation.element_equation=project2d(md,md.flowequation.element_equation,1)
+			md.flowequation.vertex_equation=project2d(md,md.flowequation.vertex_equation,1)
+			md.flowequation.borderSSA=project2d(md,md.flowequation.borderSSA,1)
+			md.flowequation.borderHO=project2d(md,md.flowequation.borderHO,1)
+			md.flowequation.borderFS=project2d(md,md.flowequation.borderFS,1)
+
+
+                # Hydrologydc variables
+                if hasattr(md.hydrology,'hydrologydc'):
+                    md.hydrology.spcsediment_head=project2d(md,md.hydrology.spcsediment_head,1)
+                    md.hydrology.mask_eplactive_node=project2d(md,md.hydrology.mask_eplactive_node,1)
+                    md.hydrology.sediment_transmitivity=project2d(md,md.hydrology.sediment_transmitivity,1)
+                    md.hydrology.basal_moulin_input=project2d(md,md.hydrology.basal_moulin_input,1)
+                    if md.hydrology.isefficientlayer == 1:
+                        md.hydrology.spcepl_head=project2d(md,md.hydrology.spcepl_head,1)
+
+		#boundary conditions
+		md.stressbalance.spcvx=project2d(md,md.stressbalance.spcvx,md.mesh.numberoflayers)
+		md.stressbalance.spcvy=project2d(md,md.stressbalance.spcvy,md.mesh.numberoflayers)
+		md.stressbalance.spcvz=project2d(md,md.stressbalance.spcvz,md.mesh.numberoflayers)
+		md.stressbalance.referential=project2d(md,md.stressbalance.referential,md.mesh.numberoflayers)
+		md.stressbalance.loadingforce=project2d(md,md.stressbalance.loadingforce,md.mesh.numberoflayers)
+		md.masstransport.spcthickness=project2d(md,md.masstransport.spcthickness,md.mesh.numberoflayers)
+		if not numpy.isnan(md.damage.spcdamage).all(): md.damage.spcdamage=project2d(md,md.damage.spcdamage,md.mesh.numberoflayers-1)
+		md.thermal.spctemperature=project2d(md,md.thermal.spctemperature,md.mesh.numberoflayers-1)
+
+		#materials
+		md.materials.rheology_B=DepthAverage(md,md.materials.rheology_B)
+		md.materials.rheology_n=project2d(md,md.materials.rheology_n,1)
+		
+		#damage: 
+		if md.damage.isdamage:
+			md.damage.D=DepthAverage(md,md.damage.D)
+
+		#special for thermal modeling:
+		md.basalforcings.groundedice_melting_rate=project2d(md,md.basalforcings.groundedice_melting_rate,1) 
+		md.basalforcings.floatingice_melting_rate=project2d(md,md.basalforcings.floatingice_melting_rate,1) 
+		md.basalforcings.geothermalflux=project2d(md,md.basalforcings.geothermalflux,1) #bedrock only gets geothermal flux
+
+		#update of connectivity matrix
+		md.mesh.average_vertex_connectivity=25
+
+		#Collapse the mesh
+		nodes2d=md.mesh.numberofvertices2d
+		elements2d=md.mesh.numberofelements2d
+
+		#parameters
+		md.geometry.surface=project2d(md,md.geometry.surface,1)
+		md.geometry.thickness=project2d(md,md.geometry.thickness,1)
+		md.geometry.base=project2d(md,md.geometry.base,1)
+                if isinstance(md.geometry.bed,numpy.ndarray):
+                    md.geometry.bed=project2d(md,md.geometry.bed,1)
+		md.mask.groundedice_levelset=project2d(md,md.mask.groundedice_levelset,1)
+		md.mask.ice_levelset=project2d(md,md.mask.ice_levelset,1)
+
+		#lat long
+                if isinstance(md.mesh.lat,numpy.ndarray):
+                    if md.mesh.lat.size==md.mesh.numberofvertices:  md.mesh.lat=project2d(md,md.mesh.lat,1) 
+                if isinstance(md.mesh.long,numpy.ndarray):
+		    if md.mesh.long.size==md.mesh.numberofvertices: md.mesh.long=project2d(md,md.mesh.long,1) 
+
+		#Initialize with the 2d mesh
+		mesh=mesh2d()
+		mesh.x=md.mesh.x2d
+		mesh.y=md.mesh.y2d
+		mesh.numberofvertices=md.mesh.numberofvertices2d
+		mesh.numberofelements=md.mesh.numberofelements2d
+		mesh.elements=md.mesh.elements2d
+		if not numpy.isnan(md.mesh.vertexonboundary).all(): mesh.vertexonboundary=project2d(md,md.mesh.vertexonboundary,1)
+		if not numpy.isnan(md.mesh.elementconnectivity).all(): mesh.elementconnectivity=project2d(md,md.mesh.elementconnectivity,1)
+		md.mesh=mesh
+
+		return md
+
+#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/modellist.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/modellist.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/modellist.m	(revision 21239)
@@ -0,0 +1,385 @@
+%MODELLIST class definition
+%
+%   Usage:
+%      modellist=modellist({md1 md2 md3});
+
+classdef modellist
+	properties (SetAccess=public) 
+		models  = cell(0,1);
+		cluster = generic();
+	end
+	methods
+		function md_list=modelsextract(md,flags,minel,varargin) % {{{
+			%modelsextract - extract several self contained models according to a list of element flags.
+			%
+			%   The difference between this routine and the modelextract.m routine (without an 's') is that 
+			%   as many models are extracted as there are closed contours defined in area. 
+			%   This routine is needed for example when doing data assimilation of ice shelves in Antarctica. 
+			%   Many independent ice shelves are present, and we don't want data assimilation on one ice shelf 
+			%   to be hindered by another totally independent ice shelf.
+			%
+			%   Usage:
+			%      md_list=modelsextract(md,elementfalgs,minel);
+			%
+			%   Examples:
+			%      md_list=modelsextract(md...,,1000);
+			%
+			%   See also: EXTRUDE, COLLAPSE, MODELEXTRACT
+
+			disp('selecting pools of elements');
+			%go through flags and build as many independent element flags as there are groups of connected 1s
+			%in flags.
+
+			%2D or 3D?
+			if dimension(md.mesh)==3,
+				numberofelements=md.mesh.numberofelements2d; %this will be forgotten when we get out.
+				flags=project2d(md,flags,1);
+			else
+				numberofelements=md.mesh.numberofelements;
+			end
+
+			%recover extra arguments: 
+			distance=0;
+			if nargin==4,
+				distance=varargin{1};
+			end
+
+			flag_list=cell(0,1);
+
+			for i=1:size(flags,1),
+
+				if (flags(i)),
+
+					%ok, we are sure element i is part of a new pool.
+					pool=zeros(numberofelements,1);
+					pool=PropagateFlagsFromConnectivity(md.mesh.elementconnectivity,pool,i,flags);
+					flag_list{end+1,1}=pool;
+
+					%speed up rest of computation by taking pool out of flags: 
+					pos=find(pool);flags(pos)=0;
+
+				end
+			end
+
+			%go through flag_list and discard any pool of less than minel elements: 
+			ex_pos=[];
+			for i=1:length(flag_list),
+				if length(find(flag_list{i}))<minel,
+					ex_pos=[ex_pos; i];
+				end
+			end
+			flag_list(ex_pos)=[];
+
+			%now, if distance was specified, expand the flag_list by distance km: 
+			if distance,
+				for i=1:length(flag_list),
+					flag_list{i}=PropagateFlagsUntilDistance(md,flag_list{i},distance);
+				end
+			end
+
+			%now, go use the pools of flags to extract models: 
+			disp(['extracting ' num2str(size(flag_list,1)) ' models']);
+			models=cell(0,1);
+
+			for i=1:size(flag_list,1),
+				disp(['   ' num2str(i) '/' num2str(size(flag_list,1))]);
+				if dimension(md.mesh)==3,
+					flags2d=flag_list{i};
+					realflags=project3d(md,flags2d,'element');
+				else
+					realflags=flag_list{i};
+				end
+				models{end+1,1}=modelextract(md,realflags);
+			end
+
+			%return model list
+			md_list=modellist(models);
+
+		end %end of this function }}}
+		function md_list=modelsextractfromdomains(md,directory) % {{{
+			%modelsextractfromdomains- extract several self contained models according to a list of domains
+			%
+			%   Usage:
+			%      md_list=modelsextractfromdomains(md,'Basins/');
+			%
+			%   Examples:
+			%      md_list=modelsextract(md,'Basins/');
+			%
+			%   See also: MODELSEXTRACTS, MODELEXTRACT
+
+			%go into directory and get list of files.
+			cd(directory);
+			basins=listfiles;
+			cd ..
+
+			models=cell(0,1);
+			for i=1:length(basins),
+				models{end+1,1}=modelextract(md,[directory '/' basins{i}]);
+			end
+
+			%return model list: 
+			md_list=modellist(models);
+
+		end % }}}
+		function self = modellist(varargin) % {{{
+
+			%initialize list
+			if nargin==0,
+				%Do nothing,
+			elseif nargin==1,
+				if ~isa(varargin{1},'cell'),
+					error('not supported yet');
+				end
+
+				celllist=varargin{1};
+
+				%check on size of cell list: 
+				if (size(celllist,2)~=1),
+					error('modellist constructor error message: list of models should be a cell list of column size 1');
+				end
+
+				%check that only models are in the celllist: 
+				for i=1:size(celllist,1),
+					if ~isa(celllist{i},'model')
+						error(['modellist constructor error message: element ' num2str(i) ' of cell list is not a model!']);
+					end
+				end
+
+				self.models  = celllist;
+				self.cluster = self.models{1}.cluster;
+			end
+		end % }}}
+		function val = get(self, propName)% {{{
+		%GET - gets model propertie from a specified object ans returns the value
+		% 
+		%   Usage:
+		%      val = get(a, propName)
+
+			switch propName
+				case 'numberofelements'
+					val = self.numberofelements;
+				case 'numberofnodes'
+					val = self.numberofnodes;
+				case 'elements' 
+					val = self.elements;
+				case 'x' 
+					val = self.x;
+				case 'y' 
+					val = self.y;
+				case 'z' 
+					val = self.z;
+				otherwise
+					error(['get error message: ' propName,' is not a valid model property'])
+			end
+		end % }}}
+		function self = loadmultipleresultsfromcluster(self) % {{{
+			%LOADMULTIPLERESULTSFROMCLUSTER - load multiple results of solution sequences from cluster
+			%
+			%   Usage:
+			%      self=loadresultsfromcluster(self);
+
+			nummodels=length(self.models);
+
+			%Get cluster settings
+			cluster=self.cluster;
+			name=self.name;
+			cluster_rc_location=which('cluster.rc');
+			[codepath,executionpath]=ClusterParameters(cluster,cluster_rc_location);
+
+			%Remote tar: 
+			disp('tarring results');
+			issmssh(cluster,['"cd ' executionpath '/' name ' && rm -rf file_list.txt ModelResults.tar.gz && find -iname ''*-*vs*.outbin'' > file_list.txt && tar zcvf ModelResults.tar.gz --files-from file_list.txt  && rm -rf file_list.txt "']);
+
+			%copy results from cluster to present directory
+			scpin(cluster, [executionpath '/' name], {'ModelResults.tar.gz'});
+
+			%untar:
+			!tar -zxvf ModelResults.tar.gz
+
+			%ok, go through list and load results from disk: 
+			for i=1:nummodels,
+				%load  results for this model
+				self.models{i}=loadresultsfromdisk(self.models{i},[name '-' num2str(i) 'vs' num2str(nummodels) '.outbin']);
+
+				delete([name '-' num2str(i) 'vs' num2str(nummodels) '.outbin']);
+			end
+
+			%erase files 
+			delete('ModelResults.tar.gz');
+		end % }}}
+		function self = solve(self,varargin)% {{{
+			%SOLVE - apply solution sequence for  a list of models. Used in batch mode.
+			%
+			%   Usage:
+			%      self=solve(self,varargin)
+			%      where varargin is a lit of paired arguments. 
+			%      arguments can be: 'analysis_type': 'stressbalance','thermal','masstransport','transient'
+			%
+			%   Examples:
+			%      self=solve(self,'analysis_type','stressbalance');
+
+			%recover options
+			options=pairoptions(varargin{:});
+
+			%add default options
+			options=process_solve_options(options);
+
+			%length of list
+			nummodels=length(self.models);
+
+			%name of queue: to make it unique, add a time stamp
+			name=[self.name '-' datestr(now,1) '-' datestr(now,'HH-MM-SS') ];
+
+			%name of cluster will be first name of list
+			cluster=self.cluster;
+
+			%Figure out parameters for this particular cluster
+			cluster_rc_location=which('cluster.rc');
+			[codepath,executionpath]=ClusterParameters(cluster,cluster_rc_location);
+
+			%solve in batch mode: 
+			for i=1:nummodels,
+
+				%model
+				mdex=self.models{i};
+
+				%recover some fields
+				mdex.analysis_type=options.analysis_type;
+
+				mdex.name=[name '-' num2str(i) 'vs' num2str(nummodels)];
+				mdex.time=self.time;
+				mdex.queue=self.queue;
+				mdex.cluster=self.cluster;
+				if ~isnan(self.np),
+					mdex.np=self.np;
+				end
+
+				%call solve in batch mode:
+				if strcmpi(cluster,oshostname),
+					mdex=solve(mdex,varargin{:});
+				else
+					mdex=solve(mdex,varargin{:},'batch','yes','directory',name);
+				end
+
+				%feed back
+				self.models{i}=mdex;
+			end
+
+			%locally, we are done.
+			if strcmpi(cluster,oshostname),
+				return
+			end
+
+			%now, tar all the files and then erase them.
+			eval(['!find -iname ''' name '-*'' > file_list.txt']);
+			!tar zcvf ModelList.tar.gz --files-from file_list.txt
+			!rm -rf *.bin *.queue file_list.txt
+
+			%still have to build a launching script.
+			BuildMultipleQueueingScript(cluster,name,executionpath,codepath);
+
+			%launch jobs on remote cluster
+			LaunchMultipleQueueJob(cluster,name,executionpath);
+
+			%erase files: 
+			delete([name '.queue']);
+			delete('ModelList.tar.gz');
+
+			%save name: 
+			self.name=name;
+		end % }}}
+	end
+end
+
+function BuildMultipleQueueingScript(cluster,name,executionpath,codepath)% {{{
+%BUILDMULTIPLEQUEUEINGSCRIPT - 
+%
+%   Usage:
+%      BuildMultipleQueueingScript(executionpath,codepath)
+
+disp('building queueing script');
+
+%First try and figure out if there is a special script for this particular cluster
+function_name=['BuildMultipleQueueingScript' cluster]
+
+%some specific treatment of identical cluster, gemini, castor and pollux
+if strcmpi(cluster,'castor') || strcmpi(cluster,'pollux'),
+	function_name='BuildMultipleQueueingScriptgemini';
+end
+
+if exist(function_name,'file'),
+	%Call this function:
+	eval([function_name '(name,executionpath,codepath);']);
+else
+	%Call the generic BuildQueueingScript:
+	BuildMultipleQueueingScriptGeneric(name,executionpath,codepath);
+end
+end % }}}
+function BuildQueueingScriptgemini(name,executionpath,codepath)% {{{
+%BUILDQUEUEINGSCRIPTGEMINI - ...
+%
+%   Usage:
+%      BuildQueueingScriptgemini(md,executionpath,codepath)
+
+scriptname=[name '.queue'];
+
+fid=fopen(scriptname,'w');
+if fid==-1,
+	error(['BuildQueueingScriptgeminierror message: could not open ' scriptname ' file for ascii writing']);
+end
+
+fprintf(fid,'#!/bin/sh\n');
+fprintf(fid,'cd %s\n',executionpath);
+fprintf(fid,'mkdir %s\n',name);
+fprintf(fid,'cd %s\n',name);
+fprintf(fid,'mv ../ModelList.tar.gz ./\n');
+fprintf(fid,'tar -zxvf ModelList.tar.gz\n');
+fprintf(fid,'foreach i (%s-*vs*.queue)\n',name);
+fprintf(fid,'qsub $i\n');
+fprintf(fid,'end\n');
+fclose(fid);
+end% }}}
+function LaunchMultipleQueueJob(cluster,name,executionpath)% {{{
+%LAUNCHMULTIPLEQUEUEJOB - ...
+%
+%   Usage:
+%      LaunchMultipleQueueJob(executionpath)
+
+%First try and figure out if there is a special script for thie particular cluster
+function_name=['LaunchMultipleQueueJob' cluster]
+
+%some specific treatment of identical cluster, gemini, castor and pollux
+if strcmpi(cluster,'castor') || strcmpi(cluster,'pollux'),
+	function_name='LaunchMultipleQueueJobgemini';
+end
+
+if exist(function_name,'file'),
+	%Call this function:
+	eval([function_name '(cluster,name,executionpath);']);
+else
+	%Call the generic LaunchMultipleQueueJob:
+	LaunchMultipleQueueJobGeneric(cluster,name,executionpath);
+end
+end% }}}
+function md=LaunchMultipleQueueJobgemini(cluster,name,executionpath)% {{{
+%LAUNCHMULTIPLEQUEUEJOBGEMINI - Launch multiple queueing script on Gemini cluster
+%
+%   Usage:
+%      LaunchMultipleQueueJobgemini(cluster,name,executionpath)
+
+%first, check we have the binary file and the queueing script
+if ~exist([ name '.queue'],'file'),
+	error('LaunchMultipleQueueJobgemini error message: queueing script issing, cannot go forward');
+end
+
+if ~exist('ModelList.tar.gz','file'),
+	error('LaunchMultipleQueueJobgemini error message: inputs models file missing, cannot go forward');
+end
+
+%upload both files to cluster
+disp('uploading input file,  queueing script and variables script');
+eval(['!scp ModelList.tar.gz ' name '.queue '  cluster ':' executionpath]);
+
+disp('launching solution sequence on remote cluster');
+issmssh(cluster,login,['"cd ' executionpath ' && source ' name '.queue "']);
+end% }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/nodalvalue.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/nodalvalue.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/nodalvalue.m	(revision 21239)
@@ -0,0 +1,69 @@
+%NODALVALUE class definition
+%
+%   Usage:
+%      nodalvalue=nodalvalue();
+%      nodalvalue=nodalvalue('name','SealevelriseSNodalValue',...
+%                    'definitionstring','Outputdefinition1', 
+%                    'model_string','SealevelriseS',
+%                    'node',1);
+
+classdef nodalvalue
+	properties (SetAccess=public)
+		%nodalvalue
+		name              = '';
+		definitionstring   = ''; %string that identifies this output definition uniquely, from 'Outputdefinition[1-10]'
+		model_string      = ''; %string for field that is being retrieved
+		node             = NaN; %for which node are we retrieving the value?
+	end
+	
+	methods
+		function self = nodalvalue(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name=getfieldvalue(options,'name','');
+				self.definitionstring=getfieldvalue(options,'definitionstring');
+				self.model_string=getfieldvalue(options,'model_string');
+				self.node=getfieldvalue(options,'node',NaN);
+
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ischar(self.name),
+				error('nodalvalue error message: ''name'' field should be a string!');
+			end
+			OutputdefinitionStringArray={};
+			for i=1:100
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+			md = checkfield(md,'fieldname','self.definitionstring','field',self.definitionstring,'values',OutputdefinitionStringArray);
+			md = checkfield(md,'fieldname','self.node','field',self.node,'values',[1:md.mesh.numberofvertices]);
+
+		end % }}}
+		function md = disp(self) % {{{
+		
+			disp(sprintf('   Nodalvalue:\n'));
+
+			fielddisplay(self,'name','identifier for this nodalvalue response');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from ''Outputdefinition[1-10]''');
+			fielddisplay(self,'model_string','string for field that is being retrieved');
+			fielddisplay(self,'node','vertex index at which we retrieve the value');
+
+		end % }}}
+		function md = marshall(self,prefix,md,fid) % {{{
+
+		WriteData(fid,prefix,'object',self,'fieldname','name','format','String');
+		WriteData(fid,prefix,'object',self,'fieldname','definitionstring','format','String');
+		WriteData(fid,prefix,'object',self,'fieldname','model_string','format','String');
+		WriteData(fid,prefix,'object',self,'fieldname','node','format','Integer');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/README
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/README	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/README	(revision 21239)
@@ -0,0 +1,4 @@
+We put here all old classes so that matlab can still load old models
+When an object is renamed or deleted, matlab is not able to load it
+anymore. We keep it here so that matlab can load the object (just remove all
+methods)
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/SMB.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/SMB.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/SMB.m	(revision 21239)
@@ -0,0 +1,10 @@
+%SMB Class definition
+%
+%   Usage:
+%      SMB=SMB();
+
+classdef SMB
+	properties (SetAccess=public) 
+		mass_balance = NaN;
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/diagnostic.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/diagnostic.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/diagnostic.m	(revision 21239)
@@ -0,0 +1,28 @@
+%DIAGNOSTIC class definition
+%
+%   Usage:
+%      diagnostic=diagnostic();
+
+classdef diagnostic
+	properties (SetAccess=public) 
+		spcvx                    = NaN;
+		spcvy                    = NaN;
+		spcvz                    = NaN;
+		restol                   = 0;
+		reltol                   = 0;
+		abstol                   = 0;
+		isnewton                 = 0;
+		FSreconditioning     = 0;
+		viscosity_overshoot      = 0;
+		icefront                 = NaN;
+		maxiter                  = 0;
+		shelf_dampening          = 0;
+		vertex_pairing           = NaN;
+		penalty_factor           = NaN;
+		rift_penalty_lock        = NaN;
+		rift_penalty_threshold   = 0;
+		referential              = NaN;
+		loadingforce             = NaN;
+		requested_outputs        = NaN;
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/flaim.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/flaim.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/flaim.m	(revision 21239)
@@ -0,0 +1,22 @@
+%FLAIM class definition
+%
+%   Usage:
+%      flaim=flaim();
+
+classdef flaim
+	properties (SetAccess=public) 
+		targets            = ''
+		tracks             = ''
+		flightreqs         = struct()
+		criterion          = NaN
+		gridsatequator     = 200000
+		usevalueordering   = true
+		split_antimeridian = true
+		solution           = ''
+		quality            = 0
+		path_optimize      = false
+		opt_ndir           = 1
+		opt_dist           = 25
+		opt_niter          = 30000
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/hydrology.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/hydrology.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/hydrology.m	(revision 21239)
@@ -0,0 +1,16 @@
+%HYDROLOGY class definition
+%
+%   Usage:
+%      hydrology=hydrology();
+
+classdef hydrology
+	properties (SetAccess=public) 
+		spcwatercolumn = NaN;
+		n              = 0;
+		CR             = 0;
+		p              = 0;
+		q              = 0;
+		kn             = 0;
+		stabilization  = 0;
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/materials.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/materials.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/materials.m	(revision 21239)
@@ -0,0 +1,21 @@
+%OLD materials class definition
+
+classdef materials
+	properties (SetAccess=public) 
+		rho_ice                    = 0.;
+		rho_water                  = 0.;
+		rho_freshwater             = 0.;
+		mu_water                   = 0.;
+		heatcapacity               = 0.;
+		latentheat                 = 0.;
+		thermalconductivity        = 0.;
+		meltingpoint               = 0.;
+		beta                       = 0.;
+		mixed_layer_capacity       = 0.;
+		thermal_exchange_velocity  = 0.;
+		rheology_B   = NaN;
+		rheology_n   = NaN;
+		rheology_Z   = NaN;
+		rheology_law = '';
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/mesh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/mesh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/mesh.m	(revision 21239)
@@ -0,0 +1,43 @@
+classdef mesh
+	properties (SetAccess=public) 
+		x                           = NaN;
+		y                           = NaN;
+		z                           = NaN
+		elements                    = NaN
+		dimension                   = 0;
+		numberoflayers              = 0;
+		numberofelements            = 0;
+		numberofvertices            = 0;
+		numberofedges               = 0;
+
+		lat                         = NaN
+		long                        = NaN
+		hemisphere                  = NaN
+
+		elementonbed                = NaN
+		elementonsurface            = NaN
+		vertexonbed                 = NaN
+		vertexonsurface             = NaN
+		lowerelements               = NaN
+		lowervertex                 = NaN
+		upperelements               = NaN
+		uppervertex                 = NaN
+		vertexonboundary            = NaN
+
+		edges                       = NaN
+		segments                    = NaN
+		segmentmarkers              = NaN
+		vertexconnectivity          = NaN
+		elementconnectivity         = NaN
+		average_vertex_connectivity = 0;
+
+		x2d                         = NaN
+		y2d                         = NaN
+		elements2d                  = NaN
+		numberofvertices2d          = 0;
+		numberofelements2d          = 0;
+
+		extractedvertices           = NaN
+		extractedelements           = NaN
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/prognostic.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/prognostic.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/prognostic.m	(revision 21239)
@@ -0,0 +1,16 @@
+%MASSTRANSPORT class definition
+%
+%   Usage:
+%      prognostic=prognostic();
+
+classdef prognostic
+	properties (SetAccess=public) 
+		 spcthickness           = NaN;
+		 min_thickness          = 0;
+		 hydrostatic_adjustment = 0;
+		 stabilization          = 0;
+		 vertex_pairing         = NaN;
+		 penalty_factor         = 0;
+		 requested_outputs      = NaN;
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/surfaceforcings.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/surfaceforcings.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/oldclasses/surfaceforcings.m	(revision 21239)
@@ -0,0 +1,26 @@
+%SURFACEFORCINGS Class definition
+%
+%   Usage:
+%      smb=surfaceforcings();
+
+classdef surfaceforcings
+	properties (SetAccess=public) 
+		precipitation             = NaN;
+		mass_balance              = NaN;
+		ispdd                     = 0;
+		issmbgradients            = 0;
+		isdelta18o                = 0;
+		href                      = NaN;
+		smbref                    = NaN;
+		b_pos                     = NaN;
+		b_neg                     = NaN;
+		monthlytemperatures       = NaN;
+		delta18o                  = NaN;
+		delta18o_surface          = NaN;
+		temperatures_presentday   = NaN;
+		temperatures_lgm          = NaN;
+		precipitations_presentday = NaN;
+		desfac                    = 0.5;
+		s0p                       = 0;
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/organizer.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/organizer.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/organizer.m	(revision 21239)
@@ -0,0 +1,198 @@
+%ORGANIZER class definition
+%
+%   Supported options:
+%      repository: directory where all models will be saved
+%      prefix:     prefix for saved model names
+%      steps:      requested steps
+%      color:      color of step title (default is '41;37')
+%
+%   Usage:
+%      org = organizer(varargin)
+%
+%   Examples:
+%      org = organizer('repository','Models/','prefix','AGU2015','steps',0);  %build an empty organizer object with a given repository
+
+classdef organizer < handle
+    properties (SetAccess=private) 
+		% {{{
+		currentstep   =0;
+	end
+    properties (SetAccess=public) 
+		repository    ='';
+		prefix        ='';
+		color         ='';
+		steps         =[];
+		requestedsteps=[0];
+		%}}}
+	end
+	methods
+		function org=organizer(varargin) % {{{
+
+			%process options
+			options=pairoptions(varargin{:});
+
+			%Get prefix
+			prefix=getfieldvalue(options,'prefix','model_');
+			if ~ischar(prefix),                            error('prefix is not a string'); end
+			if ~strcmp(regexprep(prefix,'\s+',''),prefix), error('prefix should not have any white space'); end
+			org.prefix=prefix;
+
+			%Get repository
+			repository=getfieldvalue(options,'repository','./');
+			if ~ischar(repository),        error('repository is not a string'); end
+			if exist(repository,'dir')~=7, error(['Directory ' repository ' not found']), end
+			org.repository=repository;
+
+			%Color
+			org.color=getfieldvalue(options,'color','41;37');
+
+			%Get steps
+			org.requestedsteps=getfieldvalue(options,'steps',0);
+
+		end
+		%}}}
+		function disp(org) % {{{
+			disp(sprintf('   Repository: ''%s''',org.repository));
+			disp(sprintf('   Prefix:     ''%s''\n',org.prefix));
+			disp(sprintf('   Color:      ''%s''\n',org.color));
+			if isempty(org.steps)
+				disp('   no step');
+			else
+				for i=1:length(org.steps),
+					disp(sprintf('   step #%2i: ''%s''',org.steps(i).id,org.steps(i).string));
+				end
+			end
+		end
+		%}}}
+		function md=load(org,string),% {{{
+
+			%Get model path
+			if ~ischar(string), error('argument provided is not a string'); end
+			path=[org.repository '/' org.prefix string];
+
+			%figure out if the model is there
+			if exist(path,'file'),
+				path=path;
+			elseif exist([path '.mat'],'file'),
+				path=[path '.mat'];
+			else
+				error(['Could not find ' path ]);
+			end
+
+			struc=load(path,'-mat');
+			name=char(fieldnames(struc));
+			md=struc.(name);
+			if nargout,
+				varargout{1}=md;
+			end
+		end%}}}
+		function md=loadmodel(org,string),% {{{
+
+			%Get model path
+			if ~ischar(string), error('argument provided is not a string'); end
+			path=[org.repository '/' org.prefix string];
+
+			%figure out if the model is there, otherwise, we have to use the default path supplied by user.
+			if exist(path,'file') | exist([path '.mat'],'file'),
+				md=loadmodel(path);
+				return;
+			end
+
+			%If we are here, the data has not been found. 
+			error(['Could not find ' path ]);
+		end%}}}
+		function loaddata(org,string),% {{{
+
+			%Get model path
+			if ~ischar(string), error('argument provided is not a string'); end
+			path=[org.repository '/' org.prefix string];
+
+			%figure out if the data is there, otherwise, we have to use the default path supplied by user.
+			if exist(path,'file') | exist([path '.mat'],'file'),
+				evalin('caller',['load -mat ' path]);
+				return;
+			end
+
+			%If we are here, the data has not been found. 
+			error(['Could not find ' path ]);
+		end%}}}
+		function bool=perform(org,varargin) % {{{
+
+			bool=false;
+			
+			%group,string are the variable arguments length: 
+			if nargin==2,
+				string=varargin{1};
+			elseif nargin==3,
+				string=sprintf('%s.%s',varargin{1},varargin{2});
+			end
+
+			%Some checks
+			if ~ischar(string),                            error('Step provided should be a string'); end
+			if ~strcmp(regexprep(string,'\s+',''),string), error('Step provided should not have any white space'); end
+			if (org.currentstep>0 & ismember({string},{org.steps.string})) 
+				error(['Step ' string ' already present. Change name']); 
+			end
+
+			%Add step
+			org.steps(end+1).id=length(org.steps)+1;
+			org.steps(end).string=string;
+			org.currentstep=org.currentstep+1;
+
+			%if requestedsteps = 0, print all steps in org 
+			if any(org.requestedsteps==0),
+				if org.currentstep==1,
+					disp(sprintf('   prefix: %s',org.prefix));
+				end
+				disp(sprintf('   step #%2i : %s',org.steps(org.currentstep).id,org.steps(org.currentstep).string));
+			end
+
+			%Ok, now if currentstep is a member of steps, return true
+			if ismember(org.currentstep,org.requestedsteps),
+				if usejava('desktop'),
+					disp(sprintf('\n   step #%i : %s\n',org.steps(org.currentstep).id,org.steps(org.currentstep).string));
+				else
+					%Print on a red background
+					fprintf(['\n\033[' org.color 'm   step #' num2str(org.steps(org.currentstep).id) ': ' org.steps(org.currentstep).string '   \033[0m\n\n']);
+				end
+				bool=true;
+			end
+		end%}}}
+		function savemodel(org,md) % {{{
+
+			%check
+			if (org.currentstep==0), error('Cannot save model because organizer (org) is empty! Make sure you did not skip any perform call'); end
+			if (org.currentstep>length(org.steps)), error('Cannot save model because organizer (org) is not up to date!'); end
+
+			name=[org.repository '/' org.prefix org.steps(org.currentstep).string ];
+			disp(['saving model as: ' name]);
+
+			%check that md is a model
+			if ~isa(md,'model') & ~isa(md,'sealevelmodel'), warning('second argument is not a model'); end
+			if (org.currentstep>length(org.steps)), error(['organizer error message: element with id ' num2str(org.currentstep) ' not found']); end
+
+			%save model
+			save(name,'md','-v7.3');
+		end%}}}
+		function savedata(org,varargin) % {{{
+
+			%check
+			if (org.currentstep==0), error('Cannot save data because organizer (org) is empty! Make sure you did not skip any perform call'); end
+			if (org.currentstep>length(org.steps)), error('Cannot save data because organizer (org) is not up to date!'); end
+
+			name=[org.repository '/' org.prefix org.steps(org.currentstep).string ];
+			disp(['saving data in: ' name]);
+
+			%check that md is a model
+			if (org.currentstep>length(org.steps)), error(['organizer error message: element with id ' num2str(org.currentstep) ' not found']); end
+
+			%list of variable names: 
+			variables='';
+			for i=2:nargin, 
+				variables=[variables ',' '''' inputname(i) ''''];
+				eval([inputname(i) '= varargin{' num2str(i-1) '};']);
+			end
+			eval(['save(''' name '''' variables ',''-v7.3'');']);
+		end%}}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/organizer.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/organizer.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/organizer.py	(revision 21239)
@@ -0,0 +1,179 @@
+import os.path
+from collections import OrderedDict
+import pairoptions
+from loadvars import loadvars
+from loadmodel import loadmodel
+from savevars import savevars
+from model import model
+from whichdb import whichdb
+import MatlabFuncs as m
+
+class organizer(object):
+	"""
+	ORGANIZER class definition
+
+	   Supported options:
+	      repository: directory where all models will be saved
+	      prefix:     prefix for saved model names
+	      steps:      requested steps
+	      trunkprefix:prefix of previous run with a different prefix. Used to branch.
+
+	   Usage:
+	      org = organizer(varargin)
+
+	   Examples:
+	      org = organizer('repository','Models/','prefix','AGU2015','steps',0);  %build an empty organizer object with a given repository
+	"""
+
+	def __init__(self,*args):    # {{{
+		self._currentstep  =0
+		self.repository    ='./'
+		self.prefix        ='model.'
+		self.trunkprefix   =''
+		self.steps         =[]
+		self.requestedsteps=[0]
+
+		#process options
+		options=pairoptions.pairoptions(*args)
+
+		#Get prefix
+		prefix=options.getfieldvalue('prefix','model.')
+		if not isinstance(prefix,(str,unicode)):
+			raise TypeError("prefix is not a string")
+		if not m.strcmp(prefix,prefix.strip()) or len(prefix.split()) > 1:
+			raise TypeError("prefix should not have any white space")
+		self.prefix=prefix
+
+		#Get repository
+		repository=options.getfieldvalue('repository','./')
+		if not isinstance(repository,(str,unicode)):
+			raise TypeError("repository is not a string")
+		if not os.path.isdir(repository):
+			raise IOError("Directory '%s' not found" % repository)
+		self.repository=repository
+
+		#Get steps
+		self.requestedsteps=options.getfieldvalue('steps',[0])
+		
+		#Get trunk prefix (only if provided by user)
+		if options.exist('trunkprefix'):
+			trunkprefix=options.getfieldvalue('trunkprefix','')
+			if not isinstance(trunkprefix,(str,unicode)):
+				raise TypeError("trunkprefix is not a string")
+			if not m.strcmp(trunkprefix,trunkprefix.strip()) or len(trunkprefix.split()) > 1:
+				raise TypeError("trunkprefix should not have any white space")
+			self.trunkprefix=trunkprefix
+	#}}}
+	def __repr__(self):    # {{{
+		s =""
+
+		s+="%s\n" % "   Repository: '%s'" % self.repository
+		s+="%s\n" % "   Prefix:     '%s'" % self.prefix
+		if not self.steps:
+			s+="%s\n" % "   no step"
+		else:
+			for step in self.steps:
+				s+="%s\n" % "   step #%2i: '%s'",step['id'],step['string']
+	#}}}
+	def load(self,string):    # {{{
+
+		#Get model path
+		if not isinstance(string,(str,unicode)):
+			raise TypeError("argument provided is not a string")
+		path=os.path.join(self.repository,self.prefix+string)
+
+		#figure out if the model is there
+		if os.path.exists(path):
+			struc=loadvars(path)
+			name=name=[key for key in struc.iterkeys()]
+			md=struc.name[0]
+		else:
+			raise IOError("Could not find '%s'" % path)
+
+		return md
+	#}}}
+	def loadmodel(self,string):    # {{{
+
+		#Get model path
+		if not isinstance(string,(str,unicode)):
+			raise TypeError("argument provided is not a string")
+		path1=os.path.join(self.repository,self.prefix+string+'.python')
+		path2=os.path.join(self.repository,string)
+
+		#figure out if the model is there, otherwise, we have to use the default path supplied by user.
+		if whichdb(path1):
+			md=loadmodel(path1)
+			return md
+                elif whichdb(path2):
+                        md=loadmodel(path2)
+                        return md
+
+		#If we are here, the model has not been found. Try trunk prefix if provided
+		if self.trunkprefix:
+			path2=os.path.join(self.repository,self.trunkprefix+string)
+			if not os.path.exists(path2):
+				raise IOError("Could find neither '%s' nor '%s'" % (path,path2))
+			else:
+				print "--> Branching '%s' from trunk '%s'" % (self.prefix,self.trunkprefix)
+				md=loadmodel(path2)
+				return md
+		else:
+			raise IOError("Could not find '%s'" % path1)
+	#}}}
+	def perform(self,string):    # {{{
+
+		bool=False
+
+		#Some checks
+		if not isinstance(string,(str,unicode)):
+			raise TypeError("Step provided should be a string")
+		if not m.strcmp(string,string.strip()) or len(string.split()) > 1:
+			raise TypeError("Step provided should not have any white space")
+		if self._currentstep>0 and string in [step['string'] for step in self.steps]:
+			raise RuntimeError("Step '%s' already present. Change name" % string) 
+
+		#Add step
+		self.steps.append(OrderedDict())
+		self.steps[-1]['id']=len(self.steps)
+		self.steps[-1]['string']=string
+		self._currentstep+=1
+
+		#if requestedsteps = 0, print all steps in self 
+		if 0 in self.requestedsteps:
+			if self._currentstep==1:
+				print "   prefix: %s" % self.prefix
+			print "   step #%i : %s" % (self.steps[self._currentstep-1]['id'],self.steps[self._currentstep-1]['string'])
+
+		#Ok, now if _currentstep is a member of steps, return true
+		if self._currentstep in self.requestedsteps:
+			print "\n   step #%i : %s\n" % (self.steps[self._currentstep-1]['id'],self.steps[self._currentstep-1]['string'])
+			bool=True
+
+		#assign self back to calling workspace
+		# (no need, since Python modifies class instance directly)
+
+		return bool
+	#}}}
+	def savemodel(self,md, name='default'):    # {{{
+
+		#check
+		if self._currentstep==0:
+			raise RuntimeError("Cannot save model because organizer (org) is empty! Make sure you did not skip any perform call")
+		if self._currentstep>len(self.steps):
+			raise RuntimeError("Cannot save model because organizer (org) is not up to date!")
+
+		if (name=='default'):
+			name=os.path.join(self.repository,self.prefix+self.steps[self._currentstep-1]['string']+'.python')
+		else:
+			name=os.path.join(self.repository,name)
+		print "saving model as: '%s'" % name
+
+		#check that md is a model
+		if not isinstance(md,model):
+			print("second argument is not a model")
+		if self._currentstep>len(self.steps):
+			raise RuntimeError("organizer error message: element with id %d not found" % self._currentstep)
+
+		#save model
+		savevars(name,'md',md)
+	#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/outputdefinition.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/outputdefinition.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/outputdefinition.js	(revision 21239)
@@ -0,0 +1,50 @@
+//OUTPUTDEFINITION class definition
+//
+//   Usage:
+//      outputdefinition=new outputdefinition();
+
+function outputdefinition (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		this.definitions=[];
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   outputdefinition:'));
+		fielddisplay(this,'definitions','list of potential outputs that can be requested, but which need additional data to be defined');
+
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "outputdefinition";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			checkfield(md,'fieldname','outputdefinition.definitions','cell',1);
+
+			for (var i=0;i<this.definitions.length;i++){
+				this.definitions[i].checkconsistency(md,solution,analyses);
+			}
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var data=NewArrayFill(this.definitions.length,'');	
+			for(var i=0;i<this.definitions.length;i++){
+				this.definitions[i].marshall(md,fid,prefix);
+				classdefinition=this.definitions[i].classname();
+				classdefinition=classdefinition.charAt(0).toUpperCase() + classdefinition.slice(1); // we match our string definitions
+				data[i]=classdefinition;
+			}
+			data=ArrayUnique(data);
+			if(data.length==0){ data=''; }
+
+			WriteData(fid,prefix,'data',data,'name','md.outputdefinition.list','format','StringArray');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.definitions                 = [];
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/outputdefinition.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/outputdefinition.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/outputdefinition.m	(revision 21239)
@@ -0,0 +1,58 @@
+%CONSTANTS class definition
+%
+%   Usage:
+%      outputdefinition=outputdefinition();
+
+classdef outputdefinition
+	properties (SetAccess=public) 
+		definitions                 = {};
+	end
+	methods
+		function self = outputdefinition(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			self.definitions={};
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','outputdefinition.definitions','cell',1);
+
+			for i=1:length(self.definitions),
+				md=checkconsistency(self.definitions{i},md,solution,analyses);
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   outputdefinition:'));
+			fielddisplay(self,'definitions','list of potential outputs that can be requested, but which need additional data to be defined');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+		data={};
+		for i=1:length(self.definitions)
+			self.definitions{i}.marshall(prefix,md,fid);
+			classdefinition=class(self.definitions{i});
+			classdefinition(1)=upper(classdefinition(1));
+			data{i}=classdefinition;
+		end
+		data_unique=unique(data);
+		WriteData(fid,prefix,'data',data_unique,'name','md.outputdefinition.list','format','StringArray');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			fprintf(fid,'%s.outputdefinition.definitions=[];\n',modelname);
+			if ~isempty(self.definitions),
+				error('outputdefinition savemodeljs error message: not supported yet!');
+			end
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/outputdefinition.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/outputdefinition.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/outputdefinition.py	(revision 21239)
@@ -0,0 +1,44 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+import numpy as npy
+
+class outputdefinition(object):
+	"""
+	OUTPUTDEFINITION class definition
+
+	   Usage:
+	      outputdefinition=outputdefinition();
+	"""
+
+	def __init__(self): # {{{
+		self.definitions                   = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   Outputdefinitions:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"definitions","list of potential outputs that can be requested, but which need additional data to be defined"))
+
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+		#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		
+		md = checkfield(md,'fieldname','outputdefinition.definitions','cell',1)
+		for definition in self.definitions:
+			definition.checkconsistency(md,solution,analyses);
+
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		data=[];
+		for i in range(len(self.definitions)):
+			self.definitions[i].marshall(prefix,md,fid);
+			classdefinition=self.definitions[i].__class__.__name__;
+			classdefinition=classdefinition[0].upper()+classdefinition[1:]
+			data.append(classdefinition)
+
+		data=npy.unique(data);
+		WriteData(fid,prefix,'data',data,'name','md.outputdefinition.list','format','StringArray');
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/pairoptions.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/pairoptions.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/pairoptions.js	(revision 21239)
@@ -0,0 +1,269 @@
+//PAIROPTIONS class definition
+//
+//   Usage:
+//      pairoptions=pairoptions();
+//      pairoptions=pairoptions('module',true,'solver',false);
+
+function pairoptions(args) { 
+
+
+	//methods
+	this.constructor = function (args) {// {{{
+
+		//initialize list
+		if (args.length==0){
+			this.list=[];
+		}
+		else{
+
+			//check length of input
+			if (args.length % 2){
+				throw Error('pairoptions error message: invalid parameter/value pair arguments') 
+			}
+			numoptions = args.length/2;
+
+			//Allocate memory
+			this.list= Create2DArray(numoptions,3);
+
+			//go through args and build list of obj
+			for (var i=0;i<numoptions;i++){
+				if (typeof args[2*i] === 'string'){
+					this.list[i][0]=args[2*i];
+					this.list[i][1]=args[2*i+1];
+					this.list[i][2]=false;  //used?
+				}
+				else{
+					//option is not a string, ignore it
+					console.log(sprintf('%s%i%s\n','WARNING: option number ',i,' is not a string, it will be ignored'));
+					this.list[i][0]=[];
+					this.list[i][1]=[];
+					this.list[i][2]=[];
+					continue
+				}
+			}
+		}
+	}// }}}
+	this.addfield = function (field, value){ // {{{
+		if (typeof field === 'string'){
+			this.list.push([field,value,false]);
+		}
+	}// }}}
+	this.numoptions = function (){ // {{{
+		return this.list.length;
+	}// }}}
+	this.addfielddefault = function (field,value){ // {{{
+		//ADDFIELDDEFAULT - add a field to an options list if it does not exist
+		if (typeof field === 'string'){
+			if (!this.exist(field)){
+				this.list.push([field,value,true]); //true is a default so user will not be notified if not used
+			}
+		}
+	} // }}}
+	this.AssignObjectFields = function(object){ // {{{
+		//ASSIGNOBJECTFIELDS - assign object fields from options
+		for (var i=0;i<list.length;i++){
+			fieldname=list[i][0];
+			fieldvalue=list[i][1];
+			if (fieldname in object){
+				obj2[fieldname]=fieldvalue;
+			}
+			else{
+				console.log(sprintf("%s'%s'%s%s\n",'WARNING: ',fieldname, 'is not a property of ',typeof object));
+			}
+		}
+	} // }}}
+	this.changefieldvalue = function(field,newvalue){ // {{{
+		//CHANGEOPTIONVALUE - change the value of an option in an option list
+
+		var found=0;
+		for (var i=0;i<this.list.length;i++){
+			if (this.list[i][0] === field){
+				found=1;
+			}
+		}
+
+		if (found==0){
+			this.list.push([field,newvalue,true]); // do not notify user if unused
+		}
+		else{
+			for (var i=0;i<this.list.length;i++){
+				if (this.list[i][0] === field){
+					this.list[i][1] = newvalue;
+				}
+			}
+		}
+	} // }}}
+	this.deleteduplicates = function(warn){ // {{{
+		//DELETEDUPLICATES - delete duplicates in an option list
+
+		//track the first occurrence of each option
+		var indices=NewArrayFill(this.list.length,0);
+		for (var i=0;i<this.list.length;i++){
+			if(indices[i]==0){
+				for(var j=i+1;j<this.list.length;j++){
+					if (this.list[i][0] === this.list[j][0])indices[j]=1;
+				}
+			}
+		}
+		sumindices=ArraySum(indices);
+
+		//remove duplicates from the options list
+		newlist=Create2DArray(sumindices,3);
+		var count=0;
+		for (var i=0;i<this.list.length;i++){
+			if (indices[i]==1) if (warn) console.log(sprintf("%s%s%s\n",'WARNING: option ', this.list[i,0],' appeared more than once. Only its first occurrence will be kept'));
+			else{
+				newlist[count]=this.list[i];
+				count++;
+			}
+		}
+	} // }}}
+	this.displayunused = function (){ // {{{
+		//DISPLAYUNUSED - display unused options
+
+		for (var i=0;i<this.list.length;i++){
+			if (!(this.list[i][2])){
+				console.log(sprintf("%s%s%s\n",'WARNING: option ',this.list[i][0],' was not used'));
+			}
+		}
+	}// }}}
+	this.disp = function (){ //{{{
+		if (this.list.length){
+			console.log(sprintf('   pairoptions: (%i)\n',this.list.length));
+			for (var i=0;i<this.list.length;i++){
+				if (typeof this.list[i][1] === 'string'){
+					console.log(sprintf("     field: '%s' value(string): ''%s''",this.list[i][0],this.list[i][1]));
+				}
+				else if( typeof this.list[i][1] === 'number'){
+					console.log(sprintf("     field: '%s' value(number): %g",this.list[i][0],this.list[i][1]));
+				}
+				else if( IsArray(this.list[i][1])){
+					console.log(sprintf("     field: '%s' value(array): [%i]",this.list[i][0],this.list[i][1].length));
+				}
+			}
+		}
+		else{
+			console.log(sprintf('   list: empty'));
+		}
+	}// }}}
+	this.exist = function (field) { //{{{
+
+		//EXIST - check if the option exists
+		//some argument checking: 
+		if (!(typeof field === 'string')){
+			throw Error('exist error message: field should be a string');
+		}
+
+		//Recover option
+		var bool=0;
+		for (var i=0;i<this.list.length;i++){
+			if (this.list[i][0] === field){
+				bool=1;
+				this.list[i][2]=1; //It is a default so user will not be notified if not used
+				break;
+			}
+		}
+		return bool;
+	} // }}}
+	this.fieldoccurrences = function(field){ // {{{
+
+		//FIELDOCCURRENCES - get number of occurrence of a field
+		var num=0;
+
+		//check input 
+		if (!(typeof field === 'string')){
+			throw Error('exist error message: field should be a string');
+		}
+
+		//count number of occurrences:
+		for (var i=0;i<this.list.length;i++) if (this.list[i][0] === field)num++;
+
+		return num;
+
+	} // }}}
+	this.getfieldvalue = function(field){ // {{{
+		//GETOPTION - get the value of an option
+		//
+		//   Usage:
+		//      value=pairoptions.getfieldvalue(field,varargin)
+		//
+		//   Find an option value from a field. A default option
+		//   can be given in input if the field does not exist
+		//
+		//   Examples:
+		//      value=pairoptions.getfieldvalue('caxis');
+		//      value=pairoptions.getfieldvalue('caxis',[0 2]);
+
+		//some argument checking: 
+		if(!(arguments.length==1 | arguments.length==2)){
+			error('pairoptions usage error: getfieldvalue bad usage');
+		}
+
+		if (!(typeof field === 'string')){
+			throw Error('pairoptions error message: field should be a string');
+		}
+
+		//Recover option
+		for(var i=0;i<this.list.length;i++){
+			if (this.list[i][0] === field){
+				this.list[i][2]=1; //option used
+				return value=this.list[i][1];
+			}
+		}
+
+		//The option has not been found, output default if provided
+		if (arguments.length==2){
+			return arguments[1];
+		}
+		else{
+			throw Error(sprintf("%s%s%s\n",'error message: field ',field,' has not been provided by user (and no default value has been specified)'));
+		}
+	} // }}}
+	this.removefield = function(field,warn){// {{{
+
+		//REMOVEFIELD - delete a field in an option list
+		//
+		//   Usage:
+		//      options.removefield(field,warn)
+		//
+		//   if warn==1 display an info message to warn user that
+		//   some of his options have been removed.
+
+		//check if field exists
+		if (this.exist(field)){
+
+			var indices;
+			var count;
+
+			//find where the field is located
+			indices=NewArrayFill(this.list.length,1);
+			for (var i=0;i<this.list.length;i++)if(this.list[i][1] === field)indices[i]=0;
+			sumindices=ArraySum(indices);
+
+			//remove duplicates from the options list
+			newlist=Create2DArray(sumindices,3);
+
+			count=0;
+			for (var i=0;i<this.list.length;i++){
+				if(!(this.list[i][1] === field)){
+					newlist[count]=this.list[i];
+					count++;
+				}
+			}
+			this.list=newlist;
+
+			//warn user if requested
+			if (warn){
+				console.log(sprintf("%s%s%s\n",'removefield info: option ',field,' has been removed from the list of options.'));
+			}
+		}
+	} // }}}
+	this.marshall = function(fid,firstindex){// {{{
+
+		throw Error('pairoptions marshall error: not implemented yet!');
+	} // }}}
+
+	//properties 
+	this.list         = [];
+	this.constructor(args);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/pairoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/pairoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/pairoptions.m	(revision 21239)
@@ -0,0 +1,303 @@
+%PAIROPTIONS class definition
+%
+%   Usage:
+%      pairoptions=pairoptions();
+%      pairoptions=pairoptions('module',true,'solver',false);
+
+classdef pairoptions < handle
+	properties (SetAccess = private,GetAccess = private) 
+		functionname = '';
+		list         = cell(0,3);
+	end
+	methods
+		function self = pairoptions(varargin) % {{{
+
+			%get calling function name
+			a=dbstack;
+			if length(a)>1,
+				self.functionname=a(2).file(1:end-2);
+			else
+				self.functionname='';
+			end
+
+			%initialize list
+			if nargin==0,
+				%Do nothing,
+			else
+				self=buildlist(self,varargin{:});
+			end
+		end % }}}
+		function self = buildlist(self,varargin) % {{{
+		%BUILDLIST - build list of obj from input
+
+			%check length of input
+			if mod((nargin-1),2),
+				error('Invalid parameter/value pair arguments') 
+			end
+			numoptions = (nargin-1)/2;
+
+			%Allocate memory
+			self.list=cell(numoptions,3);
+
+			%go through varargin and build list of obj
+			for i=1:numoptions,
+				if ischar(varargin{2*i-1}),
+					self.list{i,1}=varargin{2*i-1};
+					self.list{i,2}=varargin{2*i};
+					self.list{i,3}=false; %used?
+				else
+					%option is not a string, ignore it
+					disp(['WARNING: option number ' num2str(i) ' is not a string, it will be ignored']);
+					self.list(i,:)=[];
+					continue
+				end
+			end
+		end % }}}
+		function self = addfield(self,field,value) % {{{
+			if ischar(field),
+				self.list{end+1,1} = field;
+				self.list{end,2}   = value;
+				self.list{end,3}   = false;
+			end
+		end % }}}
+		function self = addfielddefault(self,field,value) % {{{
+		%ADDFIELDDEFAULT - add a field to an options list if it does not exist
+			if ischar(field),
+				if ~exist(self,field),
+					self.list{end+1,1} = field;
+					self.list{end,2}   = value;
+					self.list{end,3}   = true;  %It is a default so user will not be notified if not used
+				end
+			end
+		end % }}}
+		function obj2 = AssignObjectFields(options,obj2) % {{{
+		%ASSIGNOBJECTFIELDS - assign object fields from options
+			listproperties=properties(obj2);
+			for i=1:size(options.list,1),
+				fieldname=options.list{i,1};
+				fieldvalue=options.list{i,2};
+				if ismember(fieldname,listproperties),
+					obj2.(fieldname)=fieldvalue;
+				else
+					disp(['WARNING: ''' fieldname ''' is not a property of ''' class(obj2) '''']);
+				end
+			end
+		end % }}}
+		function self = changefieldvalue(self,field,newvalue) % {{{
+		%CHANGEOPTIONVALUE - change the value of an option in an option list
+
+			%track occurrence of field
+			lines=find(strcmpi(self.list(:,1),field));
+
+			%replace value
+			if isempty(lines),
+				%add new field if not found
+				self=addfield(self,field,newvalue);
+				self.list{end,3}=true; % do not notify user if unused
+			else
+				for i=1:length(lines),
+					self.list{lines(i),2}=newvalue;
+				end
+			end
+		end % }}}
+		function self = deleteduplicates(self,warn) % {{{
+		%DELETEDUPLICATES - delete duplicates in an option list
+
+			%track the first occurrence of each option
+			[dummy lines]=unique(self.list(:,1),'first');
+			clear dummy
+
+			%warn user if requested
+			if warn,
+				numoptions=size(self.list,1);
+				for i=1:numoptions,
+					if ~ismember(i,lines),
+						disp(['WARNING: option ' self.list{i,1} ' appeared more than once. Only its first occurrence will be kept'])
+					end
+				end
+			end
+
+			%remove duplicates from the options list
+			self.list=self.list(lines,:);
+		end % }}}
+		function displayunused(self) % {{{
+			%DISPLAYUNUSED - display unused options
+
+			numoptions=size(self.list,1);
+			for i=1:numoptions,
+				if ~self.list{i,3},
+					disp(['WARNING: option ' self.list{i,1} ' was not used'])
+				end
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   functionname: %s',self.functionname));
+			if ~isempty(self.list),
+				disp(sprintf('   list: (%ix%i)\n',size(self.list,1),size(self.list,2)));
+				for i=1:size(self.list,1),
+					if ischar(self.list{i,2}),
+						disp(sprintf('     field: %-10s value: ''%s''',self.list{i,1},self.list{i,2}));
+					elseif isnumeric(self.list{i,2}) & length(self.list{i,2})==1,
+						disp(sprintf('     field: %-10s value: %g',self.list{i,1},self.list{i,2}));
+					elseif isnumeric(self.list{i,2}) & length(self.list{i,2})==2,
+						disp(sprintf('     field: %-10s value: [%g %g]',self.list{i,1},self.list{i,2}));
+					else
+						disp(sprintf('     field: %-10s value: (%ix%i)',self.list{i,1},size(self.list{i,2},1),size(self.list{i,2},2)));
+					end
+				end
+			else
+				disp(sprintf('   list: empty'));
+			end
+		end % }}}
+		function bool = exist(self,field) % {{{
+		%EXIST - check if the option exists
+
+			%some argument checking: 
+			if ((nargin~=2) | (nargout~=1)),
+				error('exist error message: bad usage');
+			end
+			if ~ischar(field),
+				error('exist error message: field should be a string');
+			end
+
+			%Recover option
+			pos=find(strcmpi(field,self.list(:,1)));
+			if ~isempty(pos),
+				bool=true;
+				self.list{pos,3}   = true;  %It is a default so user will not be notified if not used
+			else
+				bool=false;
+			end
+		end % }}}
+		function num = fieldoccurrences(self,field), % {{{
+		%FIELDOCCURRENCES - get number of occurrence of a field
+
+			%check input 
+			if ~ischar(field),
+				error('fieldoccurrences error message: field should be a string');
+			end
+
+			%get number of occurrence
+			num=sum(strcmpi(field,self.list(:,1)));
+		end % }}}
+		function value = getfieldvalue(self,field,varargin), % {{{
+		%GETOPTION - get the value of an option
+		%
+		%   Usage:
+		%      value=getfieldvalue(self,field,varargin)
+		%
+		%   Find an option value from a field. A default option
+		%   can be given in input if the field does not exist
+		%
+		%   Examples:
+		%      value=getfieldvalue(options,'caxis');
+		%      value=getfieldvalue(options,'caxis',[0 2]);
+
+			%some argument checking: 
+			if nargin~=2 && nargin~=3,
+				help getfieldvalue
+				error('getfieldvalue error message: bad usage');
+			end
+
+			if ~ischar(field),
+				error('getfieldvalue error message: field should be a string');
+			end
+
+			%Recover option
+			pos=find(strcmpi(self.list(:,1),field));
+			if ~isempty(pos),
+				value=self.list{pos(1),2}; % ignore extra entry
+				self.list{pos(1),3}=true;  % option used
+				return;
+			end
+
+			%The option has not been found, output default if provided
+			if nargin==3,
+				value=varargin{1};
+			else
+				error(['error message: field ' field ' has not been provided by user (and no default value has been specified)'])
+			end
+		end % }}}
+		function values = getfieldvalues(self,field,varargin), % {{{
+		%GETOPTION - get the value of an option (if the option is repeated, return multiple values)
+		%
+		%   Usage:
+		%      values=getfieldvalues(self,field,varargin)
+		%
+		%   Find all option values from a field. Default options
+		%   can be given in input if the field does not exist
+		%
+		%   Examples:
+		%      values=getfieldvalue(options,'caxis');
+		%      values=getfieldvalue(options,'caxis',{[0 2],[3 4]});
+
+			%some argument checking: 
+			if nargin~=2 && nargin~=3,
+				help getfieldvalues
+				error('getfieldvalues error message: bad usage');
+			end
+
+			if ~ischar(field),
+				error('getfieldvalues error message: field should be a string');
+			end
+
+			%Recover options
+			pos=find(strcmpi(self.list(:,1),field));
+			if ~isempty(pos),
+				values={};
+				for i=1:length(pos),
+					values{i}=self.list{pos(i),2};
+					self.list{pos(i),3}=true;  % option used
+				end
+				return;
+			end
+
+			%The option has not been found, output default if provided
+			if nargin==3,
+				values=varargin{1};
+			else
+				error(['error message: field ' field ' has not been provided by user (and no default value has been specified)'])
+			end
+		end % }}}
+		function self = removefield(self,field,warn)% {{{
+		%REMOVEFIELD - delete a field in an option list
+		%
+		%   Usage:
+		%      self=removefield(self,field,warn)
+		%
+		%   if warn==1 display an info message to warn user that
+		%   some of his options have been removed.
+
+			%check is field exist
+			if exist(self,field),
+
+				%find where the field is located
+				lines=find(~strcmpi(self.list(:,1),field));
+
+				%remove duplicates from the options list
+				self.list=self.list(lines,:);
+
+				%warn user if requested
+				if warn
+					disp(['removefield info: option ' field ' has been removed from the list of options.'])
+				end
+			end
+		end % }}}
+		function marshall(self,fid)% {{{
+
+			for i=1:size(self.list,1),
+				name  = self.list{i,1};
+				value = self.list{i,2};
+
+				%Write option value
+				if (isnumeric(value) & numel(value)==1),
+					WriteData(fid,'','name',['md.' name],'data',value,'format','Double');
+				elseif ischar(value),
+					WriteData(fid,'','name',['md.' name],'data',value,'format','String');
+				else
+					error(['Cannot marshall option ' name ': format not supported yet']);
+				end
+			end
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/pairoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/pairoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/pairoptions.py	(revision 21239)
@@ -0,0 +1,172 @@
+from collections import OrderedDict
+from WriteData import WriteData
+
+class pairoptions(object):
+	"""
+	PAIROPTIONS class definition
+ 
+	   Usage:
+	      pairoptions=pairoptions();
+	      pairoptions=pairoptions('module',true,'solver',false);
+	"""
+
+	def __init__(self,*arg): # {{{
+		self.functionname = ''
+		self.list         = OrderedDict()
+
+		#get calling function name
+		import inspect
+		if len(inspect.stack()) > 1:
+			self.functionname=inspect.stack()[1][3]
+
+		#initialize list
+		if not len(arg):
+			pass    #Do nothing,
+		else:
+			self.buildlist(*arg)
+	# }}}
+	def __repr__(self):    # {{{
+		s="   functionname: '%s'\n" % self.functionname
+		if self.list:
+			s+="   list: (%ix%i)\n\n" % (len(self.list),2)
+			for item in self.list.iteritems():
+				if   isinstance(item[1],(str,unicode)):
+					s+="     field: %-10s value: '%s'\n" % (item[0],item[1])
+				elif isinstance(item[1],(bool,int,long,float)):
+					s+="     field: %-10s value: %g\n" % (item[0],item[1])
+				else:
+					s+="     field: %-10s value: %s\n" % (item[0],type(item[1]))
+		else:
+			s+="   list: empty\n"
+		return s
+	# }}}
+	def buildlist(self,*arg):    # {{{
+		"""BUILDLIST - build list of objects from input"""
+
+		#check length of input
+		if len(arg) % 2:
+			raise TypeError('Invalid parameter/value pair arguments') 
+		numoptions = len(arg)/2
+
+		#go through arg and build list of objects
+		for i in xrange(numoptions):
+			if isinstance(arg[2*i],(str,unicode)):
+				self.list[arg[2*i]] = arg[2*i+1];
+			else:
+				#option is not a string, ignore it
+				print "WARNING: option number %d is not a string and will be ignored." % (i+1)
+	# }}}
+	def addfield(self,field,value):    # {{{
+		"""ADDFIELD - add a field to an options list"""
+		if isinstance(field,(str,unicode)):
+			if field in self.list:
+				print "WARNING: field '%s' with value=%s exists and will be overwritten with value=%s." % (field,str(self.list[field]),str(value))
+			self.list[field] = value
+	# }}}
+	def addfielddefault(self,field,value):    # {{{
+		"""ADDFIELDDEFAULT - add a field to an options list if it does not already exist"""
+		if isinstance(field,(str,unicode)):
+			if field not in self.list:
+				self.list[field] = value
+	# }}}
+	def AssignObjectFields(self,obj2):    # {{{
+		"""ASSIGNOBJECTFIELDS - assign object fields from options"""
+		for item in self.list.iteritems():
+			if item[0] in dir(obj2):
+				setattr(obj2,item[0],item[1])
+			else:
+				print "WARNING: field '%s' is not a property of '%s'." % (item[0],type(obj2))
+		return obj2
+	# }}}
+	def changefieldvalue(self,field,newvalue):    # {{{
+		"""CHANGEOPTIONVALUE - change the value of an option in an option list"""
+
+		self.list[field]=newvalue;
+	# }}}
+	def exist(self,field):    # {{{
+		"""EXIST - check if the option exist"""
+
+		#some argument checking: 
+		if field == None or field == '':
+			raise ValueError('exist error message: bad usage');
+		if not isinstance(field,(str,unicode)):
+			raise TypeError("exist error message: field '%s' should be a string." % str(field));
+
+		#Recover option
+		if field in self.list:
+			return True
+		else:
+			return False
+	# }}}
+	def getfieldvalue(self,field,default=None):    # {{{
+		"""
+		GETOPTION - get the value of an option
+	
+		Usage:
+		   value=options.getfieldvalue(field,default)
+	 
+		Find an option value from a field. A default option
+		can be given in input if the field does not exist
+	 
+		Examples:
+		   value=options.getfieldvalue(options,'caxis')
+		   value=options.getfieldvalue(options,'caxis',[0 2])
+		"""
+
+		#some argument checking: 
+		if field == None or field == '':
+			raise ValueError('getfieldvalue error message: bad usage');
+		if not isinstance(field,(str,unicode)):
+			raise TypeError("getfieldvalue error message: field '%s' should be a string." % str(field));
+
+		#Recover option
+		if field in self.list:
+			value=self.list[field]
+		else:
+			if not default == None:
+				value=default
+			else:
+				raise KeyError("error message: field '%s' has not been provided by user (and no default value has been specified)." % field)
+
+		return value
+	# }}}
+	def removefield(self,field,warn):    # {{{
+		"""
+		REMOVEFIELD - delete a field in an option list
+	 
+		Usage:
+		   obj=removefield(self,field,warn)
+	 
+		if warn==1 display an info message to warn user that
+		some of his options have been removed.
+		"""
+
+		#check if field exist
+		if field in self.list:
+
+			#remove duplicates from the options list
+			del self.list[field]
+
+			#warn user if requested
+			if warn:
+				print "removefield info: option '%s' has been removed from the list of options." % field
+	# }}}
+	def marshall(self,md,fid,firstindex):    # {{{
+
+		for i,item in enumerate(self.list.iteritems()):
+			name  = item[0]
+			value = item[1]
+
+			raise NameError('need to sync with MATLAB')
+
+			##Write option name
+			#WriteData(fid,prefix,'enum',(firstindex-1)+2*i+1,'data',name,'format','String')
+
+			##Write option value
+			#if   isinstance(value,(str,unicode)):
+			#	WriteData(fid,prefix,'enum',(firstindex-1)+2*i+2,'data',value,'format','String')
+			#elif isinstance(value,(bool,int,long,float)):
+			#	WriteData(fid,prefix,'enum',(firstindex-1)+2*i+2,'data',value,'format','Double')
+			#else:
+				#raise TypeError("Cannot marshall option '%s': format not supported yet." % name)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/plotoptions.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/plotoptions.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/plotoptions.js	(revision 21239)
@@ -0,0 +1,173 @@
+//PLOTOPTIONS class definition
+//
+//   Usage:
+//      plotoptions = plotoptions(varargin)
+
+function plotoptions(args) {
+	//methods
+	this.disp = function (){ // {{{
+		console.log(sprintf('\nplotoptions = \n'));
+		console.log(sprintf('   figurenumber: %i',this.figurenumber));
+		console.log(sprintf('   numberofplots: %i',this.numberofplots));
+		if (this.list.length){
+			for (var i=0;i<this.list.length;i++){
+				console.log(sprintf('\n   options of plot number %i',i+1));
+				this.list[i].disp();
+			}
+		}
+		else{
+			console.log(sprintf('   list: empty'));
+		}
+	}
+	//}}}
+	this.constructor = function (args){ // {{{
+
+		//check length of input
+		if (args.length % 2){
+			for (i=0;i<args.length;i+=2){
+				if (!(typeof args[i] === 'string')){
+					console.log('Last valid option: ' + args[i-2]);
+					break;
+				}
+			}
+			throw Error('plotoptions error message: invalid parameter/value pair arguments');
+		}
+
+		//go through varargin and build list (like pairoptions)
+		var rawoptions=new pairoptions(args);
+		numoptions=rawoptions.numoptions();
+
+		var counter=0;
+		for (i=0;i<numoptions;i++){
+			if(typeof args[2*i] === 'string')counter++;
+		}
+		rawlist=Create2DArray(counter,2);
+		var counter=0;
+		for (i=0;i<numoptions;i++){
+			optionname=args[2*i];
+			optionval=args[2*i+1];
+			if(typeof optionname === 'string'){
+				rawlist[counter][0]=optionname;
+				rawlist[counter][1]=optionval;
+				counter++;
+			}
+			else{
+				//option is not a string, ignore it
+				console.log(sprintf("%s%i%s\n",'WARNING: option number ',i,' is not a string, it will be ignored'));
+				rawlist[counter]=[];
+				continue
+			}
+		}
+		
+			
+		//get number of data to be plotted
+		numberofplots=rawoptions.fieldoccurrences('data');
+		this.numberofplots=numberofplots;
+
+		//figure out wether alloptions flog is on
+		if (rawoptions.getfieldvalue('alloptions','off') === 'on') allflag=1;
+		else allflag=0;
+
+		//initialize list
+		var list=new Array(numberofplots);
+		for (i=0;i<numberofplots;i++){
+			list[i]=new pairoptions([]);
+		}
+				
+		//process plot options
+		for(var i=0;i<rawlist.length;i++){
+
+			//If alloptions flag has is on, apply to all plots
+			if (allflag & !(rawlist[i][0] === 'data') & (rawlist[i][0].indexOf('#') == -1)){
+				for(var j=0;j<numberofplots;j++){
+					list[j].addfield(rawlist[i][0],rawlist[i][1]);
+				}
+			}
+			else if (rawlist[i][0].indexOf('#') != -1){ //option contains '#'
+
+				//get suplot(s) associated
+				string=rawlist[i][0].split('#');
+				plotnums=string[1];
+				field=string[0];
+
+				//divide plotnums if there is a comma ','
+				plotnums=plotnums.split(',');
+
+				//loop over plotnums
+				for (k=0;k<plotnums.length;k++){
+					plotnum=plotnums[k];
+
+					//Empty
+					if (plotnum === '') continue;
+
+					else if (plotnum === 'all'){ //pound all
+						for(var j=0;j<numberofplots;j++){
+							list[j].addfield(field,rawlist[i][1]);
+						}
+					}
+					else if (plotnum.indexOf('-')!=-1){  //pound i-j
+						nums=plotnum.split('-');
+						if (nums.length!=2) continue;
+						if ((nums[0] == '') | (nums[1] === '')){
+							throw Error(sprintf("%s%s\n",'the option #i-j is not set properly for ',field));
+						}
+						for (j=(Number(nums[0])-1);j<(Number(nums[1])); j++){
+							list[j].addfield(field,rawlist[i][1]);
+						}
+					}
+					else{ //pound i
+						//assign to subplot
+						if (Number(plotnum)>numberofplots){
+							throw Error(sprintf("%s%s%s%i%s\n",'plotoptions error message: ',field,' cannot be assigned (',plotnum,' exceeds maximum number of plot)'));
+						}
+						list[Number(plotnum)-1].addfield(field,rawlist[i][1]);
+					}
+				}
+			}
+			else{ //assign option field to corresponding subplot
+
+				
+				//go through all subplot and assign to the first one free
+				var inc=0;
+				
+				while (inc<numberofplots){
+					
+					if (!list[inc].exist(rawlist[i][0])){
+						list[inc].addfield(rawlist[i][0],rawlist[i][1]);
+						break
+					}
+					else inc++;
+				}
+
+				if (inc>numberofplots-1){
+					console.log(sprintf("%s%s%s\n",'plot info message: too many ',rawlist[i][0],' options'));
+				}
+			}
+		}
+
+		//check that there is no duplicates
+		for (var i=0;i<numberofplots;i++) list[i].deleteduplicates();
+
+		//allocate canvasid automatically
+		for (var i=0;i<numberofplots;i++) {
+			if (!list[i].exist('canvasid')) {
+				list[i].addfield('canvasid',i);
+			}
+		}
+
+		//Get figure number (should be in options for subplot 1)
+		this.figurenumber=list[0].getfieldvalue('figure',1);
+		list[0].removefield('figure',0);
+
+		//asign output
+		this.list=list;
+
+	} //}}}
+	//properties
+	// {{{
+	this.numberofplots = 0;
+	this.figurenumber  = 1;
+	this.list          = [];
+	this.constructor(args);
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/plotoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/plotoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/plotoptions.m	(revision 21239)
@@ -0,0 +1,179 @@
+%PLOTOPTIONS class definition
+%
+%   Usage:
+%      plotoptions = plotoptions(varargin)
+
+classdef plotoptions
+    properties (SetAccess=public) 
+		 % {{{
+		 numberofplots = 0;
+		 figurenumber  = 1;
+		 list          = cell(0,0);
+		 %}}}
+	 end
+	 methods
+		 function opt=plotoptions(varargin) % {{{
+			 opt=buildlist(opt,varargin{:});
+		 end
+		 %}}}
+		 function disp(opt) % {{{
+			 disp(sprintf('\n%s = \n',inputname(1)));
+			 disp(sprintf('   numberofplots: %i',opt.numberofplots));
+			 disp(sprintf('   figurenumber: %i',opt.figurenumber));
+			 if ~isempty(opt.list),
+				 disp(sprintf('   list: (%ix%i)',size(opt.list,1),size(opt.list,2)));
+				 for i=1:size(opt.list,1),
+					 unit=opt.list{i};
+					 disp(sprintf('\n   options of plot number %i',i));
+					 for j=1:size(unit.list,1)
+						 if ischar(unit.list{j,2}),
+							 disp(sprintf('     field: %-10s value: ''%s''',unit.list{j,1},unit.list{j,2}));
+						 elseif isnumeric(unit.list{j,2}) & length(unit.list{j,2})==1,
+							 disp(sprintf('     field: %-10s value: %g',unit.list{j,1},unit.list{j,2}));
+						 else
+							 disp(sprintf('     field: %-10s value: (%ix%i)',unit.list{j,1},size(unit.list{j,2},1),size(unit.list{j,2},2)));
+						 end
+					 end
+				 end
+			 else
+				 disp(sprintf('   list: empty'));
+			 end
+		 end
+		 %}}}
+		 function opt=buildlist(opt,varargin) % {{{
+
+			 %check length of input
+			 if mod((nargin-1),2),
+				 for i=1:2:(nargin-1)
+					 if ~ischar(varargin{i}),
+						 disp(['Last valid option: ' varargin{i-2} ]);
+						 break;
+					 end
+				 end
+				 error('Invalid parameter/value pair arguments')
+			 end
+
+			 %go through varargin and build list (like pairoptions)
+			 rawoptions=pairoptions(varargin{:});
+			 numoptions = (nargin-1)/2;
+			 rawlist=cell(numoptions,2);
+			 counter=1;
+			 for i=1:numoptions,
+				 optionname = varargin{2*i-1};
+				 optionval  = varargin{2*i};
+				 if ischar(optionname),
+					 rawlist{counter,1}=optionname;
+					 rawlist{counter,2}=optionval;
+					 counter=counter+1;
+				 else
+					 %option is not a string, ignore it
+					 disp(['WARNING: option number ' num2str(i) ' is not a string, it will be ignored']);
+					 rawlist(counter,:)=[];
+					 continue
+				 end
+			 end
+
+			 %get number of data to be plotted
+			 numberofplots=fieldoccurrences(rawoptions,'data');
+			 opt.numberofplots=numberofplots;
+
+			 %figure out wether alloptions flog is on
+			 if strcmpi(getfieldvalue(rawoptions,'alloptions','off'),'on'),
+				 allflag=1;
+			 else
+				 allflag=0;
+			 end
+
+			 %initialize opt.list
+			 opt.list=cell(numberofplots,1);
+			 for i=1:numberofplots,
+				 opt.list{i}=pairoptions;
+			 end
+
+			 %process plot options
+			 for i=1:size(rawlist,1),
+
+				 %If alloptions flag has is on, apply to all plots
+				 if (allflag & ~strcmpi(rawlist{i,1},'data') & ~ismember('#',rawlist{i,1})),
+					 for j=1:numberofplots,
+						 opt.list{j}=addfield(opt.list{j},rawlist{i,1},rawlist{i,2});
+					 end
+
+					 %option contains '#'
+				 elseif ismember('#',rawlist{i,1}),
+
+					 %get suplot(s) associated
+					 string=strsplit_strict(rawlist{i,1},'#');
+					 plotnums=string{end};
+					 field=string{1};
+
+					 %divide plotnums if there is a comma ','
+					 plotnums=strsplit_strict(plotnums,',');
+
+					 %loop over plotnums
+					 for k=1:length(plotnums);
+						 plotnum=plotnums{k};
+
+						 %Empty
+						 if isempty(plotnum),
+							 continue;
+
+							 %pound all
+						 elseif strcmpi(plotnum,'all');
+							 for j=1:numberofplots,
+								 opt.list{j}=addfield(opt.list{j},field,rawlist{i,2});
+							 end
+
+							 %pound i-j
+						 elseif ismember('-',plotnum)
+							 nums=strsplit_strict(plotnum,'-');
+							 if length(nums)~=2, continue; end
+							 if isempty(str2num(nums{1}))|isempty(str2num(nums{2}))
+								 error(['the option #i-j is not set properly for ' field]);
+							 end
+							 for j=str2num(nums{1}):str2num(nums{2}),
+								 opt.list{j}=addfield(opt.list{j},field,rawlist{i,2});
+							 end
+
+							 %pound i
+						 else
+							 %assign to subplot
+							 if str2num(plotnum)>numberofplots,
+								 error(['opt error message: ' field ' cannot be assigned (' plotnum ' exceed maximum number of plot)']);
+							 end
+							 opt.list{str2num(plotnum)}=addfield(opt.list{str2num(plotnum)},field,rawlist{i,2});
+						 end
+					 end
+
+					 %assign option field to corresponding subplot
+				 else
+
+					 %go through all subplot and assign to the first one free
+					 j=1;
+					 while (j<=numberofplots),
+						 if ~exist(opt.list{j},rawlist{i,1});
+							 opt.list{j}=addfield(opt.list{j},rawlist{i,1},rawlist{i,2});
+							 break
+						 else
+							 j=j+1;
+						 end
+					 end
+					 if j>numberofplots,
+						 disp(['plot info message: too many ''' rawlist{i,1} ''' options']);
+					 end
+				 end
+			 end
+
+			 %check that there is no duplicates
+			 for i=1:numberofplots,
+				 opt.list{i}=deleteduplicates(opt.list{i},1);
+			 end
+
+			 %Get figure number (should be in options for subplot 1)
+			 opt.figurenumber=getfieldvalue(opt.list{1},'figure',1);
+			 removefield(opt.list{1},'figure',0);
+
+		 end
+		 %}}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/plotoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/plotoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/plotoptions.py	(revision 21239)
@@ -0,0 +1,128 @@
+from collections import OrderedDict, Counter, defaultdict
+import pairoptions
+
+class plotoptions(object):
+	'''
+	PLOTOPTIONS class definition
+
+		Usage:
+			plotoptions=plotoptions(*arg)
+	'''
+
+	def __init__(self,*arg):# {{{
+		self.numberofplots = 0
+		self.figurenumber  = 1
+		self.list          = OrderedDict()
+
+		self.buildlist(*arg)
+		#}}}
+	def __repr__(self): #{{{
+		s="\n"
+		s+="	numberofplots: %i\n" % self.numberofplots
+		s+="	figurenumber: %i\n"  % self.figurenumber
+		if self.list:
+			s+="	list: (%ix%i)\n" % (len(self.list),2)
+			for item in self.list.iteritems():
+				#s+="	options of plot number %i\n" % item
+				if   isinstance(item[1],(str,unicode)):
+					s+="	field: %-10s value: '%s'\n" % (item[0],item[1])
+				elif isinstance(item[1],(bool,int,long,float)):
+					s+="	field: %-10s value: '%g'\n" % (item[0],item[1])
+				else:
+					s+="	field: %-10s value: '%s'\n" % (item[0],item[1])
+		else:
+			s+="	list: empty\n"
+		return s
+	#}}}
+	def buildlist(self,*arg): #{{{
+		#check length of input
+		if len(arg) % 2:
+			raise TypeError('Invalid parameter/value pair arguments')
+
+		#go through args and build list (like pairoptions)
+		rawoptions=pairoptions.pairoptions(*arg)
+		numoptions=len(arg)/2
+		rawlist=[] # cannot be a dict since they do not support duplicate keys
+
+		for i in xrange(numoptions):
+			if isinstance(arg[2*i],(str,unicode)):
+				rawlist.append([arg[2*i],arg[2*i+1]])
+			else:
+				#option is not a string, ignore it
+				print "WARNING: option number %d is not a string and will be ignored." % (i+1)
+
+		#get figure number 
+		self.figurenumber=rawoptions.getfieldvalue('figure',1)
+		rawoptions.removefield('figure',0)
+
+		#get number of subplots 
+		numberofplots=Counter(x for sublist in rawlist for x in sublist if isinstance(x,(str,unicode)))['data']
+		self.numberofplots=numberofplots
+
+		#figure out whether alloptions flag is on
+		if rawoptions.getfieldvalue('alloptions','off') is 'on':
+			allflag=1
+		else:
+			allflag=0
+
+		#initialize self.list (will need a list of dict's (or nested dict) for numberofplots>1)
+		#self.list=defaultdict(dict)
+		for i in xrange(numberofplots):
+			self.list[i]=pairoptions.pairoptions()
+
+		#process plot options
+		for i in xrange(len(rawlist)):
+
+			#if alloptions flag is on, apply to all plots
+			if (allflag and 'data' not in rawlist[i][0] and '#' not in rawlist[i][0]):
+				
+				for j in xrange(numberofplots):
+					self.list[j].addfield(rawlist[i][0],rawlist[i][1])
+
+			elif '#' in rawlist[i][0]:
+
+				#get subplots associated
+				string=rawlist[i][0].split('#')
+				plotnums=string[-1].split(',')
+				field=string[0]
+
+				#loop over plotnums
+				for k in xrange(len(plotnums)):
+					plotnum=plotnums[k]
+
+					#Empty
+					if not plotnum: continue
+
+					# '#all'
+					elif 'all' in plotnum:
+						for j in xrange(numberofplots):
+							self.list[j].addfield(field,rawlist[i][1])
+
+					# '#i-j'
+					elif '-' in plotnum:
+						nums=plotnum.split('-')
+						if len(nums)!=2: continue
+						if False in [x.isdigit() for x in nums]:
+							raise ValueError('error: in option i-j both i and j must be integers')
+						for j in xrange(int(nums[0])-1,int(nums[1])):
+							self.list[j].addfield(field,rawlist[i][1])	
+
+					# Deal with #i
+					else:
+						#assign to subplot
+						if int(plotnum)>numberofplots:
+							raise ValueError('error: %s cannot be assigned %d which exceeds the number of subplots' % (field,plotnum))
+						self.list[int(plotnum)-1].addfield(field,rawlist[i][1])
+			else:
+				
+				#go through all subplots and assign key-value pairs
+				j=0
+				while j <= numberofplots-1:
+					if not self.list[j].exist(rawlist[i][0]):
+						self.list[j].addfield(rawlist[i][0],rawlist[i][1])
+						break
+					else:
+						j=j+1
+				if j+1>numberofplots:
+					print "WARNING: too many instances of '%s' in options" % rawlist[i][0]
+	#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/plumebasalforcings.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/plumebasalforcings.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/plumebasalforcings.m	(revision 21239)
@@ -0,0 +1,132 @@
+%PLUME BASAL FORCINGS class definition
+%
+%   Usage:
+%      plumebasalforcings=plumebasalforcings();
+
+classdef plumebasalforcings
+	properties (SetAccess=public) 
+		floatingice_melting_rate  = NaN;
+		groundedice_melting_rate  = NaN;
+		mantleconductivity        = NaN;
+		nusselt                   = NaN;
+		dtbg                      = NaN;
+		plumeradius               = NaN;
+		topplumedepth             = NaN;
+		bottomplumedepth          = NaN;
+		plumex                    = NaN;
+		plumey                    = NaN;
+		crustthickness            = NaN;
+		uppercrustthickness       = NaN;
+		uppercrustheat            = NaN;
+		lowercrustheat            = NaN;
+
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1); 
+			self.floatingice_melting_rate=project3d(md,'vector',self.floatingice_melting_rate,'type','node','layer',1); 
+		end % }}}
+		function self = plumebasalforcings(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(plumebasalforcings(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.groundedice_melting_rate),
+				self.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.groundedice_melting_rate specified: values set as zero');
+			end
+			if isnan(self.floatingice_melting_rate),
+				self.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.floatingice_melting_rate specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%default values for melting parameterization
+			self.mantleconductivity     = 2.2;
+			self.nusselt                = 300;
+			self.dtbg                   = 11/1000.;
+			self.plumeradius            = 100000;
+			self.topplumedepth          = 10000;
+			self.bottomplumedepth       = 1050000;
+			self.crustthickness         = 30000;
+			self.uppercrustthickness    = 14000;
+			self.uppercrustheat         = 1.7*10^-6;
+			self.lowercrustheat         = 0.4*10^-6;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.ismasstransport==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'timeseries',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices 1]);
+			end
+			if ismember('ThermalAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.isthermal==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.mantleconductivity','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.nusselt','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.dtbg','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.topplumedepth','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.bottomplumedepth','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.plumex','numel',1);
+				md = checkfield(md,'fieldname','basalforcings.plumey','numel',1);
+				md = checkfield(md,'fieldname','basalforcings.crustthickness','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.uppercrustthickness','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.uppercrustheat','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.lowercrustheat','>',0,'numel',1);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   mantle plume basal melt parameterization:'));
+
+			fielddisplay(self,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+			fielddisplay(self,'floatingice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+			fielddisplay(self,'mantleconductivity','mantle heat conductivity [W/m^3]');
+			fielddisplay(self,'nusselt','nusselt number, ratio of mantle to plume [1]');
+			fielddisplay(self,'dtbg','background temperature gradient [degree/m]');
+			fielddisplay(self,'plumeradius','radius of the mantle plume [m]');
+			fielddisplay(self,'topplumedepth','depth of the mantle plume top below the crust [m]');
+			fielddisplay(self,'bottomplumedepth','depth of the mantle plume base below the crust [m]');
+			fielddisplay(self,'plumex','x coordinate of the center of the plume [m]');
+			fielddisplay(self,'plumey','y coordinate of the center of the plume [m]');
+			fielddisplay(self,'crustthickness','thickness of the crust [m]');
+			fielddisplay(self,'uppercrustthickness','thickness of the upper crust [m]');
+			fielddisplay(self,'uppercrustheat','volumic heat of the upper crust [w/m^3]');
+			fielddisplay(self,'lowercrustheat','volumic heat of the lowercrust [w/m^3]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.basalforcings.model','data',4,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','floatingice_melting_rate','format','DoubleMat','name','md.basalforcings.floatingice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','name','md.basalforcings.groundedice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'fieldname','mantleconductivity','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','nusselt','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','dtbg','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','plumeradius','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','topplumedepth','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','bottomplumedepth','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','plumex','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','plumey','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','crustthickness','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','uppercrustthickness','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','uppercrustheat','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','lowercrustheat','format','Double')
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/priv.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/priv.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/priv.js	(revision 21239)
@@ -0,0 +1,30 @@
+//PRIV class definition
+//
+//   Usage:
+//      priv =new priv();
+
+function priv (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   private parameters: do not change'));
+
+		fielddisplay(this,'isconsistent','is model this consistent');
+		fielddisplay(this,'runtimename','name of the run launched');
+		fielddisplay(this,'bamg','structure with mesh properties constructed if bamg is used to mesh the domain');
+		fielddisplay(this,'solution','type of solution launched');
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses){ // {{{
+
+	}// % }}}
+	//properties 
+	// {{{
+	this.isconsistent = true;
+	this.runtimename  = '';
+	this.bamg         = {};
+	this.solution     = '';
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/private.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/private.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/private.m	(revision 21239)
@@ -0,0 +1,46 @@
+%PRIVATE class definition
+%
+%   Usage:
+%      private=private();
+
+classdef private
+	properties (SetAccess=public) 
+		isconsistent = true;
+		runtimename  = '';
+		bamg         = struct();
+		solution     = '';
+	end
+	methods
+		function self = private(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   private parameters: do not change'));
+
+			fielddisplay(self,'isconsistent','is model self consistent');
+			fielddisplay(self,'runtimename','name of the run launched');
+			fielddisplay(self,'bamg','structure with mesh properties constructed if bamg is used to mesh the domain');
+			fielddisplay(self,'solution','type of solution launched');
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.priv.isconsistent'],self.isconsistent);
+			writejsstring(fid,[modelname '.priv.runtimename'],self.runtimename);
+			writejsstring(fid,[modelname '.priv.solution'],self.solution);
+			%no bamg 
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/private.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/private.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/private.py	(revision 21239)
@@ -0,0 +1,37 @@
+from collections import OrderedDict
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+
+class private(object):
+	"""
+	PRIVATE class definition
+
+	   Usage:
+	      private=private();
+	"""
+
+	def __init__(self): # {{{
+		self.isconsistent = True
+		self.runtimename  = ''
+		self.bamg         = OrderedDict()
+		self.solution     = ''
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   private parameters: do not change'
+
+		string="%s\n%s"%(string,fielddisplay(self,'isconsistent','is model self consistent'))
+		string="%s\n%s"%(string,fielddisplay(self,'runtimename','name of the run launched'))
+		string="%s\n%s"%(string,fielddisplay(self,'bamg','structure with mesh properties constructed if bamg is used to mesh the domain'))
+		string="%s\n%s"%(string,fielddisplay(self,'solution','type of solution launched'))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		return md
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu.js	(revision 21239)
@@ -0,0 +1,149 @@
+//QMU class definition
+//
+//   Usage:
+//      qmu=new qmu();
+
+function qmu (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   qmu parameters:'));
+
+		/*fielddisplay(this,'isdakota','is qmu analysis activated?');
+		for (var i=0;i<this.variables.length;i++){
+			console.log(sprintf('         variables%s:  (arrays of each variable class)',...
+						string_dim(this.variables,i)));
+		}
+		fnames=fieldnames(this.variables(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+
+			for j=1:numel(fnames)
+				console.log(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+							fnames{j},size(this.variables.(fnames{j})),class(this.variables.(fnames{j}))));
+		end
+			end
+			for i=1:numel(this.responses)
+				console.log(sprintf('         responses%s:  (arrays of each response class)',...
+							string_dim(this.responses,i)));
+		fnames=fieldnames(this.responses(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+
+			for j=1:numel(fnames)
+				console.log(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+							fnames{j},size(this.responses.(fnames{j})),class(this.responses.(fnames{j}))));
+		end
+			end
+			fielddisplay(this,'numberofresponses','number of responses') 
+			for i=1:numel(this.method);
+		if strcmp(class(this.method(i)),'dakota_method')
+			console.log(sprintf('            method%s :    ''%s''',...
+						string_dim(this.method,i),this.method(i).method));
+		end
+			end
+			for i=1:numel(this.params)
+				console.log(sprintf('         params%s:  (array of method-independent parameters)',...
+							string_dim(this.params,i)));
+		fnames=fieldnames(this.params(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+
+			for j=1:numel(fnames)
+				console.log(sprintf(['            %-' num2str(maxlen+1) 's: %s'],...
+							fnames{j},any2str(this.params(i).(fnames{j}))));
+		end
+			end
+			for i=1:numel(this.results)
+				console.log(sprintf('         results%s:  (information from dakota files)',...
+							string_dim(this.results,i)));
+		fnames=fieldnames(this.results(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+
+			for j=1:numel(fnames)
+				console.log(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+							fnames{j},size(this.results.(fnames{j})),class(this.results.(fnames{j}))));
+		end
+			end
+			fielddisplay(this,'partition','user provided mesh partitioning, defaults to metis if not specified') 
+			fielddisplay(this,'numberofpartitions','number of partitions for semi-discrete qmu') 
+			fielddisplay(this,'variabledescriptors','');
+		fielddisplay(this,'responsedescriptors','');
+		fielddisplay(this,'method','array of dakota_method class');
+		fielddisplay(this,'mass_flux_profile_directory','directory for mass flux profiles');
+		fielddisplay(this,'mass_flux_profiles','list of mass_flux profiles');
+		fielddisplay(this,'mass_flux_segments','');
+		fielddisplay(this,'adjacency','');
+		fielddisplay(this,'vertex_weight','weight applied to each mesh vertex');
+		*/
+
+	}// }}}
+    this.extrude = function(md) {//{{{
+        this.partition=project3d(md,'vector',math.transpose(this.partition),'type','node');
+        return this;
+    }//}}}
+	this.classname= function(){// {{{
+		return "qmu";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			///Early return
+			if (!md.qmu.isdakota) return;
+			else md.checkmessage('qmu runs not supported yet!');
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','isdakota','format','Boolean');
+			if (!this.isdakota){
+				WriteData(fid,prefix,'data',0,'name','md.qmu.mass_flux_segments_present','format','Boolean');
+			}
+			else{
+				WriteData(fid,prefix,'object',this,'fieldname','partition','format','DoubleMat','mattype',2);
+				WriteData(fid,prefix,'object',this,'fieldname','numberofpartitions','format','Integer');
+				WriteData(fid,prefix,'object',this,'fieldname','numberofresponses','format','Integer');
+				WriteData(fid,prefix,'object',this,'fieldname','variabledescriptors','format','StringArray');
+				WriteData(fid,prefix,'object',this,'fieldname','responsedescriptors','format','StringArray');
+				if (this.mass_flux_segments.length){
+					WriteData(fid,prefix,'data',this.mass_flux_segments,'name','md.qmu.mass_flux_segments','format','MatArray');
+					flag=true; 
+				}
+				else flag=false; 
+				WriteData(fid,prefix,'data',flag,'name','md.qmu.mass_flux_segments_present','format','Boolean');
+			}
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+
+	this.isdakota                    = 0;
+	this.variables                   = []
+	this.responses                   = [];
+	this.method                      = []
+	this.params                      = []
+	this.results                     = []
+	this.partition                   = NaN;
+	this.numberofpartitions          = 0;
+	this.numberofresponses           = 0;
+	this.variabledescriptors         = []
+	this.responsedescriptors         = []
+	this.mass_flux_profile_directory = NaN;
+	this.mass_flux_profiles          = NaN;
+	this.mass_flux_segments          = []
+	this.adjacency                   = NaN;
+	this.vertex_weight               = NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu.m	(revision 21239)
@@ -0,0 +1,190 @@
+%QMU class definition
+%
+%   Usage:
+%      qmu=qmu();
+
+classdef qmu
+	properties (SetAccess=public) 
+		isdakota                    = 0;
+		variables                   = struct();
+		responses                   = struct();
+		method                      = struct();
+		params                      = struct();
+		results                     = struct();
+		partition                   = NaN;
+		numberofpartitions          = 0;
+		numberofresponses           = 0;
+		variabledescriptors         = {};
+		responsedescriptors         = {};
+		mass_flux_profile_directory = NaN;
+		mass_flux_profiles          = NaN;
+		mass_flux_segments          = {};
+		adjacency                   = NaN;
+		vertex_weight               = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.partition=project3d(md,'vector',self.partition','type','node');
+		end % }}}
+		function self = qmu(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~md.qmu.isdakota, return; end
+
+			version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+
+			if version < 6,
+				if md.qmu.params.evaluation_concurrency~=1,
+					md = checkmessage(md,['concurrency should be set to 1 when running dakota in library mode']);
+				end
+			else
+				if ~strcmpi(self.params.evaluation_scheduling,'master'),
+					md = checkmessage(md,['evaluation_scheduling in qmu.params should be set to ''master''']);
+				end
+				if md.cluster.np<=1,
+					md = checkmessage(md,['in parallel library mode, Dakota needs to run on at least 2 cpus, 1 cpu for the master, 1 cpu for the slave. Modify md.cluser.np accordingly.']);
+				end
+					
+				if self.params.processors_per_evaluation<1,
+					md = checkmessage(md,['in parallel library mode, Dakota needs to run at least one slave on one cpu (md.qmu.params.processors_per_evaluation >=1)!']);
+				end
+				if mod(md.cluster.np-1,self.params.processors_per_evaluation), 
+					md = checkmessage(md,['in parallel library mode, the requirement is for md.cluster.np = md.qmu.params.processors_per_evaluation * number_of_slaves, where number_of_slaves will automatically be determined by Dakota. Modify md.cluster.np accordingly']);
+				end
+			end
+			if ~isempty(md.qmu.partition),
+				if numel(md.qmu.partition)~=md.mesh.numberofvertices,
+					md = checkmessage(md,['user supplied partition for qmu analysis should have size md.mesh.numberofvertices x 1 ']);
+				end
+				if min(md.qmu.partition)~=0,
+					md = checkmessage(md,['partition vector not indexed from 0 on']);
+				end
+				if max(md.qmu.partition)>=md.qmu.numberofpartitions,
+					md = checkmessage(md,['for qmu analysis, partitioning vector cannot go over npart, number of partition areas']);
+				end
+			end
+
+			if ~strcmpi(md.cluster.name,'none'),
+				if md.settings.waitonlock==0,
+					md = checkmessage(md,['waitonlock should be activated when running qmu in parallel mode!']);
+				end
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   qmu parameters:'));
+
+			fielddisplay(self,'isdakota','is qmu analysis activated?');
+			for i=1:numel(self.variables)
+				disp(sprintf('         variables%s:  (arrays of each variable class)',...
+					string_dim(self.variables,i)));
+				fnames=fieldnames(self.variables(i));
+				maxlen=0;
+				for j=1:numel(fnames)
+					maxlen=max(maxlen,length(fnames{j}));
+				end
+
+				for j=1:numel(fnames)
+					disp(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+						fnames{j},size(self.variables.(fnames{j})),class(self.variables.(fnames{j}))));
+				end
+			end
+			for i=1:numel(self.responses)
+				disp(sprintf('         responses%s:  (arrays of each response class)',...
+					string_dim(self.responses,i)));
+				fnames=fieldnames(self.responses(i));
+				maxlen=0;
+				for j=1:numel(fnames)
+					maxlen=max(maxlen,length(fnames{j}));
+				end
+
+				for j=1:numel(fnames)
+					disp(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+						fnames{j},size(self.responses.(fnames{j})),class(self.responses.(fnames{j}))));
+				end
+			end
+			fielddisplay(self,'numberofresponses','number of responses') 
+			for i=1:numel(self.method);
+				if strcmp(class(self.method(i)),'dakota_method')
+					disp(sprintf('            method%s :    ''%s''',...
+						string_dim(self.method,i),self.method(i).method));
+				end
+			end
+			for i=1:numel(self.params)
+				disp(sprintf('         params%s:  (array of method-independent parameters)',...
+					string_dim(self.params,i)));
+				fnames=fieldnames(self.params(i));
+				maxlen=0;
+				for j=1:numel(fnames)
+					maxlen=max(maxlen,length(fnames{j}));
+				end
+
+				for j=1:numel(fnames)
+					disp(sprintf(['            %-' num2str(maxlen+1) 's: %s'],...
+						fnames{j},any2str(self.params(i).(fnames{j}))));
+				end
+			end
+			for i=1:numel(self.results)
+				disp(sprintf('         results%s:  (information from dakota files)',...
+					string_dim(self.results,i)));
+				fnames=fieldnames(self.results(i));
+				maxlen=0;
+				for j=1:numel(fnames)
+					maxlen=max(maxlen,length(fnames{j}));
+				end
+
+				for j=1:numel(fnames)
+					disp(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+						fnames{j},size(self.results.(fnames{j})),class(self.results.(fnames{j}))));
+				end
+			end
+			fielddisplay(self,'partition','user provided mesh partitioning, defaults to metis if not specified') 
+			fielddisplay(self,'numberofpartitions','number of partitions for semi-discrete qmu') 
+			fielddisplay(self,'variabledescriptors','');
+			fielddisplay(self,'responsedescriptors','');
+			fielddisplay(self,'method','array of dakota_method class');
+			fielddisplay(self,'mass_flux_profile_directory','directory for mass flux profiles');
+			fielddisplay(self,'mass_flux_profiles','list of mass_flux profiles');
+			fielddisplay(self,'mass_flux_segments','');
+			fielddisplay(self,'adjacency','');
+			fielddisplay(self,'vertex_weight','weight applied to each mesh vertex');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','isdakota','format','Boolean');
+			if ~self.isdakota, 
+				WriteData(fid,prefix,'data',false,'name','md.qmu.mass_flux_segments_present','format','Boolean');
+				return; 
+			end
+			WriteData(fid,prefix,'object',self,'fieldname','partition','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'fieldname','numberofpartitions','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','numberofresponses','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','variabledescriptors','format','StringArray');
+			WriteData(fid,prefix,'object',self,'fieldname','responsedescriptors','format','StringArray');
+			if ~isempty(self.mass_flux_segments), 
+				WriteData(fid,prefix,'data',self.mass_flux_segments,'name','md.qmu.mass_flux_segments','format','MatArray');
+				flag=true; 
+			else 
+				flag=false; 
+			end
+			WriteData(fid,prefix,'data',flag,'name','md.qmu.mass_flux_segments_present','format','Boolean');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			if self.isdakota,
+				error('qmu savemodeljs error message: not supported yet!');
+			end
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu.py	(revision 21239)
@@ -0,0 +1,156 @@
+import numpy
+from project3d import project3d
+from collections import OrderedDict
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class qmu(object):
+	"""
+	QMU class definition
+
+	   Usage:
+	      qmu=qmu();
+	"""
+
+	def __init__(self): # {{{
+		self.isdakota                    = 0
+		self.variables                   = OrderedDict()
+		self.responses                   = OrderedDict()
+		self.method                      = OrderedDict()
+		self.params                      = OrderedDict()
+		self.results                     = OrderedDict()
+		self.partition                   = float('NaN')
+		self.numberofpartitions          = 0
+		self.numberofresponses           = 0
+		self.variabledescriptors         = []
+		self.responsedescriptors         = []
+		self.mass_flux_profile_directory = float('NaN')
+		self.mass_flux_profiles          = float('NaN')
+		self.mass_flux_segments          = []
+		self.adjacency                   = float('NaN')
+		self.vertex_weight               = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self):    # {{{
+		s ='   qmu parameters:\n'
+
+		s+="%s\n" % fielddisplay(self,'isdakota','is qmu analysis activated?')
+		for i,variable in enumerate(self.variables.iteritems()):
+			s+="         variables%s:  (arrays of each variable class)\n" % \
+					string_dim(self.variables,i)
+			fnames=vars(variable)
+			maxlen=0
+			for fname in fnames:
+				maxlen=max(maxlen,len(fname))
+
+			for fname in fnames:
+				s+="'            %-*s:    [%ix%i]    '%s'\n" % \
+						(maxlen+1,fname,size(getattr(variable,fname)),type(getattr(variable,fname)))
+
+		for i,response in enumerate(self.responses.iteritems()):
+			s+="         responses%s:  (arrays of each response class)\n" % \
+					string_dim(self.responses,i)
+			fnames=vars(response)
+			maxlen=0
+			for fname in fnames:
+				maxlen=max(maxlen,len(fname))
+
+			for fname in fnames:
+				s+="            %-*s:    [%ix%i]    '%s'\n" % \
+						(maxlen+1,fname,size(getattr(response,fname)),type(getattr(response,fname)))
+
+		s+="%s\n" % fielddisplay(self,'numberofresponses','number of responses') 
+
+		for i,method in enumerate(self.method.iteritems()):
+			if isinstance(method,'dakota_method'):
+				s+="            method%s :    '%s'\n" % \
+						(string_dim(method,i),method.method)
+
+		for i,param in enumerate(self.params.iteritems()):
+			s+="         params%s:  (array of method-independent parameters)\n" % \
+					string_dim(self.params,i)
+			fnames=vars(param)
+			maxlen=0
+			for fname in fnames:
+				maxlen=max(maxlen,len(fname))
+
+			for fname in fnames:
+				s+="            %-*s: %s\n" % \
+						(maxlen+1,fname,any2str(getattr(param,fname)))
+
+		for i,result in enumerate(self.results.iteritems()):
+			s+="         results%s:  (information from dakota files)\n" % \
+					string_dim(self.results,i)
+			fnames=vars(result)
+			maxlen=0
+			for fname in fnames:
+				maxlen=max(maxlen,len(fname))
+
+			for fname in fnames:
+				s+="            %-*s:    [%ix%i]    '%s'\n" % \
+						(maxlen+1,fname,size(getattr(result,fname)),type(getattr(result,fname)))
+
+		s+="%s\n" % fielddisplay(self,'partition','user provided mesh partitioning, defaults to metis if not specified') 
+		s+="%s\n" % fielddisplay(self,'numberofpartitions','number of partitions for semi-discrete qmu') 
+		s+="%s\n" % fielddisplay(self,'variabledescriptors','')
+		s+="%s\n" % fielddisplay(self,'responsedescriptors','')
+		s+="%s\n" % fielddisplay(self,'method','array of dakota_method class')
+		s+="%s\n" % fielddisplay(self,'mass_flux_profile_directory','directory for mass flux profiles')
+		s+="%s\n" % fielddisplay(self,'mass_flux_profiles','list of mass_flux profiles')
+		s+="%s\n" % fielddisplay(self,'mass_flux_segments','')
+		s+="%s\n" % fielddisplay(self,'adjacency','')
+		s+="%s\n" % fielddisplay(self,'vertex_weight','weight applied to each mesh vertex')
+
+		return s
+	# }}}
+	def extrude(self,md): # {{{
+		self.partition=project3d(md,'vector',numpy.transpose(self.partition),'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if not md.qmu.isdakota:
+			return
+
+		if not md.qmu.params.evaluation_concurrency==1:
+			md.checkmessage("concurrency should be set to 1 when running dakota in library mode")
+		if md.qmu.partition:
+			if not numpy.size(md.qmu.partition)==md.mesh.numberofvertices:
+				md.checkmessage("user supplied partition for qmu analysis should have size md.mesh.numberofvertices x 1")
+			if not min(md.qmu.partition)==0:
+				md.checkmessage("partition vector not indexed from 0 on")
+			if max(md.qmu.partition)>=md.qmu.numberofpartitions:
+				md.checkmessage("for qmu analysis, partitioning vector cannot go over npart, number of partition areas")
+
+		if not m.strcmpi(md.cluster.name,'none'):
+			if not md.settings.waitonlock:
+				md.checkmessage("waitonlock should be activated when running qmu in parallel mode!")
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'object',self,'fieldname','isdakota','format','Boolean')
+		if not self.isdakota:
+			WriteData(fid,prefix,'data',False,'name','md.qmu.mass_flux_segments_present','format','Boolean');
+			return
+		WriteData(fid,prefix,'object',self,'fieldname','partition','format','DoubleMat','mattype',2)
+		WriteData(fid,prefix,'object',self,'fieldname','numberofpartitions','format','Integer')
+		WriteData(fid,prefix,'object',self,'fieldname','numberofresponses','format','Integer')
+		WriteData(fid,prefix,'object',self,'fieldname','variabledescriptors','format','StringArray')
+		WriteData(fid,prefix,'object',self,'fieldname','responsedescriptors','format','StringArray')
+		if not self.mass_flux_segments:
+			WriteData(fid,prefix,'data',self.mass_flux_segments,'name','md.qmu.mass_flux_segments','format','MatArray');
+			flag=True; 
+		else:
+			flag=False; 
+		WriteData(fid,prefix,'data',flag,'name','md.qmu.mass_flux_segments_present','format','Boolean');
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/@dakota_method/dakota_method.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/@dakota_method/dakota_method.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/@dakota_method/dakota_method.m	(revision 21239)
@@ -0,0 +1,872 @@
+%
+%  definition for the dakota_method class.
+%
+%  [dm]=dakota_method(method)
+%
+%  where the required input is:
+%    method       (char, beginning of method name)
+%
+%  and the output properties and defaults are:
+%    method       (char, full method name, '')
+%    type         (char, type of method, '')
+%    variables    (cell array, applicable variable types, {})
+%    lcspec       (cell array, linear constraint specs, {})
+%    responses    (cell array, applicable response types, {})
+%    ghspec       (cell array, gradient and hessian specs, {})
+%    params       (structure, method-dependent parameters, [])
+%
+%  this class is used to guide the writing of a dakota input
+%  file for the specified dakota_method.
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and one argument
+%  with enough characters to match a unique method constructs
+%  a new instance of that method.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef dakota_method
+    properties (SetAccess=private)
+        method   ='';
+        type     ='';
+        variables={};
+        lcspec   ={};
+        responses={};
+        ghspec   ={};
+    end
+    properties
+        params   =struct();
+    end
+
+    methods
+        function [dm]=dakota_method(method)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                case 1
+                    if  (nargin == 1) && isa(method,'dakota_method')
+                        dm=method;
+                    else
+                        mlist={...
+                            'dot_bfgs',...
+                            'dot_frcg',...
+                            'dot_mmfd',...
+                            'dot_slp',...
+                            'dot_sqp',...
+                            'npsol_sqp',...
+                            'conmin_frcg',...
+                            'conmin_mfd',...
+                            'optpp_cg',...
+                            'optpp_q_newton',...
+                            'optpp_fd_newton',...
+                            'optpp_newton',...
+                            'optpp_pds',...
+                            'asynch_pattern_search',...
+                            'coliny_cobyla',...
+                            'coliny_direct',...
+                            'coliny_ea',...
+                            'coliny_pattern_search',...
+                            'coliny_solis_wets',...
+                            'ncsu_direct',...
+                            'surrogate_based_local',...
+                            'surrogate_based_global',...
+                            'moga',...
+                            'soga',...
+                            'nl2sol',...
+                            'nlssol_sqp',...
+                            'optpp_g_newton',...
+                            'nond_sampling',...
+                            'nond_local_reliability',...
+                            'nond_global_reliability',...
+                            'nond_polynomial_chaos',...
+                            'nond_stoch_collocation',...
+                            'nond_evidence',...
+                            'dace',...
+                            'fsu_quasi_mc',...
+                            'fsu_cvt',...
+                            'vector_parameter_study',...
+                            'list_parameter_study',...
+                            'centered_parameter_study',...
+                            'multidim_parameter_study',...
+                            };
+
+                        mlist2={};
+                        for i=1:length(mlist)
+                            if strncmpi(method,mlist{i},length(method))
+                                mlist2(end+1)=mlist(i);
+                            end
+                        end
+
+%  check for a unique match in the list of methods
+
+                        switch length(mlist2)
+                            case 0
+                                error('Unrecognized method: ''%s''.',...
+                                    method);
+                            case 1
+                                dm.method=mlist2{1};
+                            otherwise
+                                error('Non-unique method: ''%s'' matches %s.',...
+                                    method,string_cell(mlist2));
+                        end
+
+%  assign the default values for the method
+
+                        switch dm.method
+                            case {'dot_bfgs',...
+                                  'dot_frcg'}
+                                dm.type     ='dot';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.constraint_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+                                dm.params.optimization_type='minimize';
+                            case {'dot_mmfd',...
+                                  'dot_slp',...
+                                  'dot_sqp'}
+                                dm.type     ='dot';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.constraint_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+                                dm.params.optimization_type='minimize';
+
+                            case {'npsol_sqp'}
+                                dm.type     ='npsol';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.constraint_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+                                dm.params.verify_level=-1;
+                                dm.params.function_precision=1.e-10;
+                                dm.params.linesearch_tolerance=0.9;
+
+                            case {'conmin_frcg'}
+                                dm.type     ='conmin';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.constraint_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+                            case {'conmin_mfd'}
+                                dm.type     ='conmin';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.constraint_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+
+                            case {'optpp_cg'}
+                                dm.type     ='optpp';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+                                dm.params.max_step=1000.;
+                                dm.params.gradient_tolerance=1.e-4;
+                            case {'optpp_q_newton',...
+                                  'optpp_fd_newton',...
+                                  'optpp_newton'}
+                                dm.type     ='optpp';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+                                dm.params.value_based_line_search=false;
+                                dm.params.gradient_based_line_search=false;
+                                dm.params.trust_region=false;
+                                dm.params.tr_pds=false;
+                                dm.params.max_step=1000.;
+                                dm.params.gradient_tolerance=1.e-4;
+                                dm.params.merit_function='argaez_tapia';
+                                dm.params.central_path=dm.params.merit_function;
+                                dm.params.steplength_to_boundary=0.99995;
+                                dm.params.centering_parameter=0.2;
+                            case {'optpp_pds'}
+                                dm.type     ='optpp';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+                                dm.params.search_scheme_size=32;
+
+                            case {'asynch_pattern_search'}
+                                dm.type     ='apps';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_function_evaluations=false;
+                                dm.params.constraint_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.scaling=false;
+                                dm.params.initial_delta=1.0;
+                                dm.params.threshold_delta=0.01;
+                                dm.params.contraction_factor=0.5;
+                                dm.params.solution_target=false;
+                                dm.params.synchronization='nonblocking';
+                                dm.params.merit_function='merit2_smooth';
+                                dm.params.constraint_penalty=1.0;
+                                dm.params.smoothing_factor=1.0;
+
+                            case {'coliny_cobyla'}
+                                dm.type     ='coliny';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.scaling=false;
+                                dm.params.show_misc_options=false;
+                                dm.params.misc_options={};
+                                dm.params.solution_accuracy=-Inf;
+                                dm.params.initial_delta=[];
+                                dm.params.threshold_delta=[];
+                            case {'coliny_direct'}
+                                dm.type     ='coliny';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.scaling=false;
+                                dm.params.show_misc_options=false;
+                                dm.params.misc_options={};
+                                dm.params.solution_accuracy=-Inf;
+                                dm.params.division='major_dimension';
+                                dm.params.global_balance_parameter=0.0;
+                                dm.params.local_balance_parameter=1.e-8;
+                                dm.params.max_boxsize_limit=0.0;
+                                dm.params.min_boxsize_limit=0.0001;
+                                dm.params.constraint_penalty=1000.0;
+                            case {'coliny_ea'}
+                                dm.type     ='coliny';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.scaling=false;
+                                dm.params.show_misc_options=false;
+                                dm.params.misc_options={};
+                                dm.params.solution_accuracy=-Inf;
+                                dm.params.seed=false;
+                                dm.params.population_size=50;
+                                dm.params.initialization_type='unique_random';
+                                dm.params.fitness_type='linear_rank';
+                                dm.params.replacement_type='elitist';
+                                dm.params.random=[];
+                                dm.params.chc=[];
+                                dm.params.elitist=[];
+                                dm.params.new_solutions_generated='population_size - replacement_size';
+                                dm.params.crossover_type='two_point';
+                                dm.params.crossover_rate=0.8;
+                                dm.params.mutation_type='offset_normal';
+                                dm.params.mutation_scale=0.1;
+                                dm.params.mutation_range=1;
+                                dm.params.dimension_ratio=1.0;
+                                dm.params.mutation_rate=1.0;
+                                dm.params.non_adaptive=false;
+                            case {'coliny_pattern_search'}
+                                dm.type     ='coliny';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.scaling=false;
+                                dm.params.show_misc_options=false;
+                                dm.params.misc_options={};
+                                dm.params.solution_accuracy=-Inf;
+                                dm.params.stochastic=false;
+                                dm.params.seed=false;
+                                dm.params.initial_delta=[];
+                                dm.params.threshold_delta=[];
+                                dm.params.constraint_penalty=1.0;
+                                dm.params.constant_penalty=false;
+                                dm.params.pattern_basis='coordinate';
+                                dm.params.total_pattern_size=false;
+                                dm.params.no_expansion=false;
+                                dm.params.expand_after_success=1;
+                                dm.params.contraction_factor=0.5;
+                                dm.params.synchronization='nonblocking';
+                                dm.params.exploratory_moves='basic_pattern';
+                            case {'coliny_solis_wets'}
+                                dm.type     ='coliny';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.scaling=false;
+                                dm.params.show_misc_options=false;
+                                dm.params.misc_options={};
+                                dm.params.solution_accuracy=-Inf;
+                                dm.params.seed=false;
+                                dm.params.initial_delta=[];
+                                dm.params.threshold_delta=[];
+                                dm.params.no_expansion=false;
+                                dm.params.expand_after_success=5;
+                                dm.params.contract_after_failure=3;
+                                dm.params.contraction_factor=0.5;
+                                dm.params.constraint_penalty=1.0;
+                                dm.params.constant_penalty=false;
+
+                            case {'ncsu_direct'}
+                                dm.type     ='ncsu';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};  %  ?
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};  %  ?
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.scaling=false;
+                                dm.params.solution_accuracy=0.;
+                                dm.params.min_boxsize_limit=1.e-8;
+                                dm.params.vol_boxsize_limit=1.e-8;
+
+%                             case {'surrogate_based_local',...
+%                                   'surrogate_based_global'}
+
+                            case {'moga'}
+                                dm.type     ='jega';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.output=false;
+                                dm.params.scaling=false;
+                                dm.params.seed=false;
+                                dm.params.log_file='JEGAGlobal.log';
+                                dm.params.population_size=50;
+                                dm.params.print_each_pop=false;
+%                               according to documentation, uses method-independent control
+%                               dm.params.output='normal';
+                                dm.params.initialization_type='unique_random';
+                                dm.params.mutation_type='replace_uniform';
+                                dm.params.mutation_scale=0.15;
+                                dm.params.mutation_rate=0.08;
+                                dm.params.replacement_type='';
+                                dm.params.below_limit=6;
+                                dm.params.shrinkage_percentage=0.9;
+                                dm.params.crossover_type='shuffle_random';
+                                dm.params.multi_point_binary=[];
+                                dm.params.multi_point_parameterized_binary=[];
+                                dm.params.multi_point_real=[];
+                                dm.params.shuffle_random=[];
+                                dm.params.num_parents=2;
+                                dm.params.num_offspring=2;
+                                dm.params.crossover_rate=0.8;
+                                dm.params.fitness_type='';
+                                dm.params.niching_type=false;
+                                dm.params.radial=[0.01];
+                                dm.params.distance=[0.01];
+                                dm.params.metric_tracker=false;
+                                dm.params.percent_change=0.1;
+                                dm.params.num_generations=10;
+                                dm.params.postprocessor_type=false;
+                                dm.params.orthogonal_distance=[0.01];
+                            case {'soga'}
+                                dm.type     ='jega';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.output=false;
+                                dm.params.scaling=false;
+                                dm.params.seed=false;
+                                dm.params.log_file='JEGAGlobal.log';
+                                dm.params.population_size=50;
+                                dm.params.print_each_pop=false;
+                                dm.params.output='normal';
+                                dm.params.initialization_type='unique_random';
+                                dm.params.mutation_type='replace_uniform';
+                                dm.params.mutation_scale=0.15;
+                                dm.params.mutation_rate=0.08;
+                                dm.params.replacement_type='';
+                                dm.params.below_limit=6;
+                                dm.params.shrinkage_percentage=0.9;
+                                dm.params.crossover_type='shuffle_random';
+                                dm.params.multi_point_binary=[];
+                                dm.params.multi_point_parameterized_binary=[];
+                                dm.params.multi_point_real=[];
+                                dm.params.shuffle_random=[];
+                                dm.params.num_parents=2;
+                                dm.params.num_offspring=2;
+                                dm.params.crossover_rate=0.8;
+                                dm.params.fitness_type='merit_function';
+                                dm.params.constraint_penalty=1.0;
+                                dm.params.replacement_type='';
+                                dm.params.convergence_type=false;
+                                dm.params.num_generations=10;
+                                dm.params.percent_change=0.1;
+
+                            case {'nl2sol'}
+                                dm.type     ='lsq';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'least_squares_term'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.scaling=false;
+                                dm.params.function_precision=1.e-10;
+                                dm.params.absolute_conv_tol=-1.;
+                                dm.params.x_conv_tol=-1.;
+                                dm.params.singular_conv_tol=-1.;
+                                dm.params.singular_radius=-1.;
+                                dm.params.false_conv_tol=-1.;
+                                dm.params.initial_trust_radius=-1.;
+                                dm.params.covariance=0;
+                                dm.params.regression_stressbalances=false;
+                            case {'nlssol_sqp'}
+                                dm.type     ='lsq';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'least_squares_term',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.constraint_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+                                dm.params.verify_level=-1;
+                                dm.params.function_precision=1.e-10;
+                                dm.params.linesearch_tolerance=0.9;
+                            case {'optpp_g_newton'}
+                                dm.type     ='lsq';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'least_squares_term',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+                                dm.params.value_based_line_search=false;
+                                dm.params.gradient_based_line_search=false;
+                                dm.params.trust_region=false;
+                                dm.params.tr_pds=false;
+                                dm.params.max_step=1000.;
+                                dm.params.gradient_tolerance=1.e-4;
+                                dm.params.merit_function='argaez_tapia';
+                                dm.params.central_path=dm.params.merit_function;
+                                dm.params.steplength_to_boundary=0.99995;
+                                dm.params.centering_parameter=0.2;
+
+                            case {'nond_sampling'}
+                                dm.type     ='nond';
+                                dm.variables={'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'response_function'};
+                                dm.ghspec   ={};
+%                               not documented, but apparently works
+                                dm.params.output=false;
+                                dm.params.seed=false;
+                                dm.params.fixed_seed=false;
+                                dm.params.rng=false;
+                                dm.params.samples=false;
+                                dm.params.sample_type='lhs';
+                                dm.params.all_variables=false;
+                                dm.params.variance_based_decomp=false;
+                                dm.params.previous_samples=0;
+                            case {'nond_local_reliability'}
+                                dm.type     ='nond';
+                                dm.variables={'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'response_function'};
+                                dm.ghspec   ={'grad'};
+%                               not documented, but may work
+                                dm.params.output=false;
+                                dm.params.max_iterations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.mpp_search=false;
+                                dm.params.sqp=false;
+                                dm.params.nip=false;
+                                dm.params.integration='first_order';
+                                dm.params.refinement=false;
+                                dm.params.samples=0;
+                                dm.params.seed=false;
+                            case {'nond_global_reliability'}
+                                dm.type     ='nond';
+                                dm.variables={'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'response_function'};
+                                dm.ghspec   ={'grad'};
+%                               not documented, but may work
+                                dm.params.output=false;
+                                dm.params.x_gaussian_process=false;
+                                dm.params.u_gaussian_process=false;
+                                dm.params.all_variables=false;
+                                dm.params.seed=false;
+                            case {'nond_polynomial_chaos'}
+                                dm.type     ='nond';
+                                dm.variables={'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'response_function'};
+                                dm.ghspec   ={'grad'};
+%                               not documented, but may work
+                                dm.params.output=false;
+                                dm.params.expansion_order=[];
+                                dm.params.expansion_terms=[];
+                                dm.params.quadrature_order=[];
+                                dm.params.sparse_grid_level=[];
+                                dm.params.expansion_samples=[];
+                                dm.params.incremental_lhs=false;
+                                dm.params.collocation_points=[];
+                                dm.params.collocation_ratio=[];
+                                dm.params.reuse_samples=false;
+                                dm.params.expansion_import_file='';
+                                dm.params.seed=false;
+                                dm.params.fixed_seed=false;
+                                dm.params.samples=0;
+                                dm.params.sample_type='lhs';
+                                dm.params.all_variables=false;
+                            case {'nond_stoch_collocation'}
+                                dm.type     ='nond';
+                                dm.variables={'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'response_function'};
+                                dm.ghspec   ={'grad'};
+%                               not documented, but may work
+                                dm.params.output=false;
+                                dm.params.quadrature_order=[];
+                                dm.params.sparse_grid_level=[];
+                                dm.params.seed=false;
+                                dm.params.fixed_seed=false;
+                                dm.params.samples=0;
+                                dm.params.sample_type='lhs';
+                                dm.params.all_variables=false;
+                            case {'nond_evidence'}
+                                dm.type     ='nond';
+                                dm.variables={'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'response_function'};
+                                dm.ghspec   ={'grad'};
+%                               not documented, but may work
+                                dm.params.output=false;
+                                dm.params.seed=false;
+                                dm.params.samples=10000;
+
+                            case {'dace'}
+                                dm.type     ='dace';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
+                                dm.ghspec   ={};
+                                dm.params.grid=false;
+                                dm.params.random=false;
+                                dm.params.oas=false;
+                                dm.params.lhs=false;
+                                dm.params.oa_lhs=false;
+                                dm.params.box_behnken=false;
+                                dm.params.central_composite=false;
+                                dm.params.seed=false;
+                                dm.params.fixed_seed=false;
+                                dm.params.samples=false;
+                                dm.params.symbols=false;
+                                dm.params.quality_metrics=false;
+                                dm.params.variance_based_decomp=false;
+                            case {'fsu_quasi_mc'}
+                                dm.type     ='dace';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
+                                dm.ghspec   ={};
+                                dm.params.halton=false;
+                                dm.params.hammersley=false;
+                                dm.params.samples=0;
+                                dm.params.sequence_start=[0];
+                                dm.params.sequence_leap=[1];
+                                dm.params.prime_base=false;
+                                dm.params.fixed_sequence=false;
+                                dm.params.latinize=false;
+                                dm.params.variance_based_decomp=false;
+                                dm.params.quality_metrics=false;
+                            case {'fsu_cvt'}
+                                dm.type     ='dace';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
+                                dm.ghspec   ={};
+                                dm.params.seed=false;
+                                dm.params.fixed_seed=false;
+                                dm.params.samples=0;
+                                dm.params.num_trials=10000;
+                                dm.params.trial_type='random';
+                                dm.params.latinize=false;
+                                dm.params.variance_based_decomp=false;
+                                dm.params.quality_metrics=false;
+
+                            case {'vector_parameter_study'}
+                                dm.type     ='param';
+                                dm.variables={'continuous_design',...
+                                              'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
+                                dm.ghspec   ={};
+                                dm.params.output=false;
+                                dm.params.final_point=[];
+                                dm.params.step_length=[];
+                                dm.params.num_steps=[];
+                                dm.params.step_vector=[];
+                                dm.params.num_steps=[];
+                            case {'list_parameter_study'}
+                                dm.type     ='param';
+                                dm.variables={'continuous_design',...
+                                              'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
+                                dm.ghspec   ={};
+                                dm.params.output=false;
+                                dm.params.list_of_points=[];
+                            case {'centered_parameter_study'}
+                                dm.type     ='param';
+                                dm.variables={'continuous_design',...
+                                              'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
+                                dm.ghspec   ={};
+                                dm.params.output=false;
+                                dm.params.percent_delta=[];
+                                dm.params.deltas_per_variable=[];
+                            case {'multidim_parameter_study'}
+                                dm.type     ='param';
+                                dm.variables={'continuous_design',...
+                                              'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
+                                dm.ghspec   ={};
+                                dm.params.output=false;
+                                dm.params.partitions=[];
+
+                            otherwise
+                                error('Unimplemented method: ''%s''.',dm.method);
+                        end
+
+                    end
+
+%  if more than one argument, issue warning
+
+                otherwise
+                    warning('dakota_method:extra_arg',...
+                        'Extra arguments for object of class ''%s''.',...
+                        class(dm));
+            end
+
+        end
+
+        function []=disp(dm)
+
+%  display the object
+
+            for i=1:numel(dm)
+                disp(sprintf('\nclass ''%s'' object ''%s%s'' = \n',...
+                    class(dm),inputname(1),string_dim(dm,i)));
+                disp(sprintf('       method: ''%s'''  ,dm(i).method));
+                disp(sprintf('         type: ''%s'''  ,dm(i).type));
+                disp(sprintf('    variables: %s'      ,string_cell(dm(i).variables)));
+                disp(sprintf('       lcspec: %s'      ,string_cell(dm(i).lcspec)));
+                disp(sprintf('    responses: %s'      ,string_cell(dm(i).responses)));
+                disp(sprintf('       ghspec: %s\n'    ,string_cell(dm(i).ghspec)));
+
+%  display the parameters within the object
+
+                fnames=fieldnames(dm(i).params);
+                maxlen=0;
+                for j=1:numel(fnames)
+                    maxlen=max(maxlen,length(fnames{j}));
+                end
+
+                for j=1:numel(fnames)
+                    disp(sprintf(['       params.%-' num2str(maxlen+1) 's: %s'],...
+                        fnames{j},any2str(dm(i).params.(fnames{j}))));
+                end
+            end
+
+        end
+    end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/@dakota_method/dmeth_params_merge.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/@dakota_method/dmeth_params_merge.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/@dakota_method/dmeth_params_merge.m	(revision 21239)
@@ -0,0 +1,27 @@
+%
+%  merge a structure of parameters into a dakota_method object.
+%
+%  [dm]=dmeth_params_merge(dm,params)
+%
+function [dm]=dmeth_params_merge(dm,params)
+
+if ~isa(dm,'dakota_method')
+    error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+        inputname(1),class(dm),'dakota_method');
+end
+
+%  loop through each parameter field in the structure
+
+fnames=fieldnames(params);
+
+for i=1:numel(fnames)
+    if isfield(dm.params,fnames{i})
+        dm.params.(fnames{i})=params.(fnames{i});
+    else
+        warning('dmeth_params_merge:unknown_param',...
+            'No parameter ''%s'' for dakota_method ''%s''.',...
+            fnames{i},dm.method);
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/@dakota_method/dmeth_params_set.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/@dakota_method/dmeth_params_set.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/@dakota_method/dmeth_params_set.m	(revision 21239)
@@ -0,0 +1,25 @@
+%
+%  set parameters of a dakota_method object.
+%
+%  [dm]=dmeth_params_set(dm,varargin)
+%
+function [dm]=dmeth_params_set(dm,varargin)
+
+if ~isa(dm,'dakota_method')
+    error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+        inputname(1),class(dm),'dakota_method');
+end
+
+%  loop through each parameter field in the input list
+
+for i=1:2:length(varargin)
+    if isfield(dm.params,varargin{i})
+        dm.params.(varargin{i})=varargin{i+1};
+    else
+        warning('dmeth_params_set:unknown_param',...
+            'No parameter ''%s'' for dakota_method ''%s''.',...
+            varargin{i},dm.method);
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/@dakota_method/dmeth_params_write.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/@dakota_method/dmeth_params_write.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/@dakota_method/dmeth_params_write.m	(revision 21239)
@@ -0,0 +1,582 @@
+%
+%  write the parameters from a dakota_method object.
+%
+%  []=dmeth_params_write(dm,fid,sbeg)
+%
+function []=dmeth_params_write(dm,fid,sbeg)
+
+if ~isa(dm,'dakota_method')
+    error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+        inputname(1),class(dm),'dakota_method');
+end
+
+if ~exist('sbeg','var')
+    sbeg='\t  ';
+end
+
+%  perform some error checking, but leave the rest to dakota.
+%  unfortunately this prevents merely looping through the fields
+%  of the parameters structure.
+
+%  write method-independent controls
+
+% param_write(fid,sbeg,'id_method','                = ','\n',dm.params);
+% param_write(fid,sbeg,'model_pointer','            = ','\n',dm.params);
+
+%  write method-dependent controls
+
+switch dm.type
+    case {'dot'}
+        param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+        param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+        param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params);
+        param_write(fid,sbeg,'constraint_tolerance','     = ','\n',dm.params);
+        param_write(fid,sbeg,'output',' ','\n',dm.params);
+        param_write(fid,sbeg,'speculative','','\n',dm.params);
+        param_write(fid,sbeg,'scaling','','\n',dm.params);
+        switch dm.method
+            case{'dot_bfgs',...
+                 'dot_frcg',...
+                 'dot_mmfd',...
+                 'dot_slp',...
+                 'dot_sqp'}
+                param_write(fid,sbeg,'optimization_type',' = ','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'npsol'}
+        param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+        param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+        param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params);
+        param_write(fid,sbeg,'constraint_tolerance','     = ','\n',dm.params);
+        param_write(fid,sbeg,'output',' ','\n',dm.params);
+        param_write(fid,sbeg,'speculative','','\n',dm.params);
+        param_write(fid,sbeg,'scaling','','\n',dm.params);
+        switch dm.method
+            case {'npsol_sqp'}
+                param_write(fid,sbeg,'verify_level','         = ','\n',dm.params);
+                param_write(fid,sbeg,'function_precision','   = ','\n',dm.params);
+                param_write(fid,sbeg,'linesearch_tolerance',' = ','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'conmin'}
+        param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+        param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+        param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params);
+        param_write(fid,sbeg,'constraint_tolerance','     = ','\n',dm.params);
+        param_write(fid,sbeg,'output',' ','\n',dm.params);
+        param_write(fid,sbeg,'speculative','','\n',dm.params);
+        param_write(fid,sbeg,'scaling','','\n',dm.params);
+        switch dm.method
+            case {'conmin_frcg',...
+                  'conmin_mfd'}
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'optpp'}
+        param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+        param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+        param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params);
+        param_write(fid,sbeg,'output',' ','\n',dm.params);
+        param_write(fid,sbeg,'speculative','','\n',dm.params);
+        param_write(fid,sbeg,'scaling','','\n',dm.params);
+        switch dm.method
+            case {'optpp_cg'}
+                param_write(fid,sbeg,'max_step','           = ','\n',dm.params);
+                param_write(fid,sbeg,'gradient_tolerance',' = ','\n',dm.params);
+
+            case {'optpp_q_newton',...
+                  'optpp_fd_newton',...
+                  'optpp_newton'}
+                if (dm.params.value_based_line_search + ...
+                    dm.params.gradient_based_line_search + ...
+                    dm.params.trust_region + ...
+                    dm.params.tr_pds > 1)
+                    error('''%s'' method must have only one algorithm.',...
+                        dm.method);
+                end
+                param_write(fid,sbeg,'value_based_line_search','','\n',dm.params);
+                param_write(fid,sbeg,'gradient_based_line_search','','\n',dm.params);
+                param_write(fid,sbeg,'trust_region','','\n',dm.params);
+                param_write(fid,sbeg,'tr_pds','','\n',dm.params);
+                param_write(fid,sbeg,'max_step','               = ','\n',dm.params);
+                param_write(fid,sbeg,'gradient_tolerance','     = ','\n',dm.params);
+                param_write(fid,sbeg,'merit_function','         = ','\n',dm.params);
+                param_write(fid,sbeg,'central_path','           = ','\n',dm.params);
+                param_write(fid,sbeg,'steplength_to_boundary',' = ','\n',dm.params);
+                param_write(fid,sbeg,'centering_parameter','    = ','\n',dm.params);
+
+            case {'optpp_pds'}
+                param_write(fid,sbeg,'search_scheme_size',' = ','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'apps'}
+        param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+        param_write(fid,sbeg,'constraint_tolerance','     = ','\n',dm.params);
+        param_write(fid,sbeg,'output',' ','\n',dm.params);
+        param_write(fid,sbeg,'scaling','','\n',dm.params);
+        switch dm.method
+            case {'asynch_pattern_search'}
+                param_write(fid,sbeg,'initial_delta','      = ','\n',dm.params);
+                param_write(fid,sbeg,'threshold_delta','    = ','\n',dm.params);
+                param_write(fid,sbeg,'contraction_factor',' = ','\n',dm.params);
+                param_write(fid,sbeg,'solution_target','    = ','\n',dm.params);
+                param_write(fid,sbeg,'synchronization','    = ','\n',dm.params);
+                param_write(fid,sbeg,'merit_function','     = ','\n',dm.params);
+                param_write(fid,sbeg,'constraint_penalty',' = ','\n',dm.params);
+                param_write(fid,sbeg,'smoothing_factor','   = ','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'coliny'}
+        param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+        param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+        param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params);
+        param_write(fid,sbeg,'output',' ','\n',dm.params);
+        param_write(fid,sbeg,'scaling','','\n',dm.params);
+
+        param_write(fid,sbeg,'show_misc_options','','\n',dm.params);
+        param_write(fid,sbeg,'misc_options','      = ','\n',dm.params);
+        param_write(fid,sbeg,'solution_accuracy',' = ','\n',dm.params);
+        switch dm.method
+            case {'coliny_cobyla'}
+                param_write(fid,sbeg,'initial_delta','   = ','\n',dm.params);
+                param_write(fid,sbeg,'threshold_delta',' = ','\n',dm.params);
+
+            case {'coliny_direct'}
+                param_write(fid,sbeg,'division','                 = ','\n',dm.params);
+                param_write(fid,sbeg,'global_balance_parameter',' = ','\n',dm.params);
+                param_write(fid,sbeg,'local_balance_parameter','  = ','\n',dm.params);
+                param_write(fid,sbeg,'max_boxsize_limit','        = ','\n',dm.params);
+                param_write(fid,sbeg,'min_boxsize_limit','        = ','\n',dm.params);
+                param_write(fid,sbeg,'constraint_penalty','       = ','\n',dm.params);
+
+            case {'coliny_ea'}
+                param_write(fid,sbeg,'seed','                    = ','\n',dm.params);
+                param_write(fid,sbeg,'population_size','         = ','\n',dm.params);
+                param_write(fid,sbeg,'initialization_type','     = ','\n',dm.params);
+                param_write(fid,sbeg,'fitness_type','            = ','\n',dm.params);
+                param_write(fid,sbeg,'replacement_type','        = ','\n',dm.params);
+                param_write(fid,sbeg,'random','                  = ','\n',dm.params);
+                param_write(fid,sbeg,'chc','                     = ','\n',dm.params);
+                param_write(fid,sbeg,'elitist','                 = ','\n',dm.params);
+                param_write(fid,sbeg,'new_solutions_generated',' = ','\n',dm.params);
+                param_write(fid,sbeg,'crossover_type','          = ','\n',dm.params);
+                param_write(fid,sbeg,'crossover_rate','          = ','\n',dm.params);
+                param_write(fid,sbeg,'mutation_type','           = ','\n',dm.params);
+                param_write(fid,sbeg,'mutation_scale','          = ','\n',dm.params);
+                param_write(fid,sbeg,'mutation_range','          = ','\n',dm.params);
+                param_write(fid,sbeg,'dimension_ratio','         = ','\n',dm.params);
+                param_write(fid,sbeg,'mutation_rate','           = ','\n',dm.params);
+                param_write(fid,sbeg,'non_adaptive','','\n',dm.params);
+
+            case {'coliny_pattern_search'}
+                param_write(fid,sbeg,'stochastic','','\n',dm.params);
+                param_write(fid,sbeg,'seed','                 = ','\n',dm.params);
+                param_write(fid,sbeg,'initial_delta','        = ','\n',dm.params);
+                param_write(fid,sbeg,'threshold_delta','      = ','\n',dm.params);
+                param_write(fid,sbeg,'constraint_penalty','   = ','\n',dm.params);
+                param_write(fid,sbeg,'constant_penalty','','\n',dm.params);
+                param_write(fid,sbeg,'pattern_basis','        = ','\n',dm.params);
+                param_write(fid,sbeg,'total_pattern_size','   = ','\n',dm.params);
+                param_write(fid,sbeg,'no_expansion','','\n',dm.params);
+                param_write(fid,sbeg,'expand_after_success',' = ','\n',dm.params);
+                param_write(fid,sbeg,'contraction_factor','   = ','\n',dm.params);
+                param_write(fid,sbeg,'synchronization','      = ','\n',dm.params);
+                param_write(fid,sbeg,'exploratory_moves','    = ','\n',dm.params);
+
+            case {'coliny_solis_wets'}
+                param_write(fid,sbeg,'seed','                   = ','\n',dm.params);
+                param_write(fid,sbeg,'initial_delta','          = ','\n',dm.params);
+                param_write(fid,sbeg,'threshold_delta','        = ','\n',dm.params);
+                param_write(fid,sbeg,'no_expansion','','\n',dm.params);
+                param_write(fid,sbeg,'expand_after_success','   = ','\n',dm.params);
+                param_write(fid,sbeg,'contract_after_failure',' = ','\n',dm.params);
+                param_write(fid,sbeg,'contraction_factor','     = ','\n',dm.params);
+                param_write(fid,sbeg,'constraint_penalty','     = ','\n',dm.params);
+                param_write(fid,sbeg,'constant_penalty','','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'ncsu'}
+        param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+        param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+        param_write(fid,sbeg,'scaling','','\n',dm.params);
+        switch dm.method
+            case {'ncsu_direct'}
+                param_write(fid,sbeg,'solution_accuracy',' = ','\n',dm.params);
+                param_write(fid,sbeg,'min_boxsize_limit',' = ','\n',dm.params);
+                param_write(fid,sbeg,'vol_boxsize_limit',' = ','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'jega'}
+        param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+        param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+        param_write(fid,sbeg,'output',' ','\n',dm.params);
+        param_write(fid,sbeg,'scaling','','\n',dm.params);
+
+        param_write(fid,sbeg,'seed','                             = ','\n',dm.params);
+        param_write(fid,sbeg,'log_file','                         = ','\n',dm.params);
+        param_write(fid,sbeg,'population_size','                  = ','\n',dm.params);
+        param_write(fid,sbeg,'print_each_pop','','\n',dm.params);
+        param_write(fid,sbeg,'output','                           = ','\n',dm.params);
+        param_write(fid,sbeg,'initialization_type','              = ','\n',dm.params);
+        param_write(fid,sbeg,'mutation_type','                    = ','\n',dm.params);
+        param_write(fid,sbeg,'mutation_scale','                   = ','\n',dm.params);
+        param_write(fid,sbeg,'mutation_rate','                    = ','\n',dm.params);
+        param_write(fid,sbeg,'replacement_type','                 = ','\n',dm.params);
+        param_write(fid,sbeg,'below_limit','                      = ','\n',dm.params);
+        param_write(fid,sbeg,'shrinkage_percentage','             = ','\n',dm.params);
+        param_write(fid,sbeg,'crossover_type','                   = ','\n',dm.params);
+        param_write(fid,sbeg,'multi_point_binary','               = ','\n',dm.params);
+        param_write(fid,sbeg,'multi_point_parameterized_binary',' = ','\n',dm.params);
+        param_write(fid,sbeg,'multi_point_real','                 = ','\n',dm.params);
+        param_write(fid,sbeg,'shuffle_random','                   = ','\n',dm.params);
+        param_write(fid,sbeg,'num_parents','                      = ','\n',dm.params);
+        param_write(fid,sbeg,'num_offspring','                    = ','\n',dm.params);
+        param_write(fid,sbeg,'crossover_rate','                   = ','\n',dm.params);
+
+        switch dm.method
+            case {'moga'}
+                param_write(fid,sbeg,'fitness_type','        = ','\n',dm.params);
+                param_write(fid,sbeg,'niching_type','        = ','\n',dm.params);
+                if ~isempty(dm.params.radial) && ...
+                   ~isempty(dm.params.distance)
+                    error('''%s'' method must have only one niching distance.',...
+                        dm.method);
+                end
+                param_write(fid,sbeg,'radial','              = ','\n',dm.params);
+                param_write(fid,sbeg,'distance','            = ','\n',dm.params);
+                param_write(fid,sbeg,'metric_tracker','','\n',dm.params);
+                param_write(fid,sbeg,'percent_change','      = ','\n',dm.params);
+                param_write(fid,sbeg,'num_generations','     = ','\n',dm.params);
+                param_write(fid,sbeg,'postprocessor_type','  = ','\n',dm.params);
+                param_write(fid,sbeg,'orthogonal_distance',' = ','\n',dm.params);
+
+            case {'soga'}
+                param_write(fid,sbeg,'fitness_type','       = ','\n',dm.params);
+                param_write(fid,sbeg,'constraint_penalty',' = ','\n',dm.params);
+                param_write(fid,sbeg,'replacement_type','   = ','\n',dm.params);
+                param_write(fid,sbeg,'convergence_type','   = ','\n',dm.params);
+                param_write(fid,sbeg,'num_generations','    = ','\n',dm.params);
+                param_write(fid,sbeg,'percent_change','     = ','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'lsq'}
+        switch dm.method
+            case {'nl2sol'}
+                param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+                param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+                param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params);
+                param_write(fid,sbeg,'output',' ','\n',dm.params);
+                param_write(fid,sbeg,'scaling','','\n',dm.params);
+
+                param_write(fid,sbeg,'function_precision','   = ','\n',dm.params);
+                param_write(fid,sbeg,'absolute_conv_tol','    = ','\n',dm.params);
+                param_write(fid,sbeg,'x_conv_tol','           = ','\n',dm.params);
+                param_write(fid,sbeg,'singular_conv_tol','    = ','\n',dm.params);
+                param_write(fid,sbeg,'singular_radius','      = ','\n',dm.params);
+                param_write(fid,sbeg,'false_conv_tol','       = ','\n',dm.params);
+                param_write(fid,sbeg,'initial_trust_radius',' = ','\n',dm.params);
+                param_write(fid,sbeg,'covariance','           = ','\n',dm.params);
+                param_write(fid,sbeg,'regression_stressbalances','','\n',dm.params);
+
+            case {'nlssol_sqp'}
+                param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+                param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+                param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params);
+                param_write(fid,sbeg,'constraint_tolerance','     = ','\n',dm.params);
+                param_write(fid,sbeg,'output',' ','\n',dm.params);
+                param_write(fid,sbeg,'speculative','','\n',dm.params);
+                param_write(fid,sbeg,'scaling','','\n',dm.params);
+
+                param_write(fid,sbeg,'verify_level','         = ','\n',dm.params);
+                param_write(fid,sbeg,'function_precision','   = ','\n',dm.params);
+                param_write(fid,sbeg,'linesearch_tolerance',' = ','\n',dm.params);
+
+            case {'optpp_g_newton'}
+                param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+                param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+                param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params);
+                param_write(fid,sbeg,'output',' ','\n',dm.params);
+                param_write(fid,sbeg,'speculative','','\n',dm.params);
+                param_write(fid,sbeg,'scaling','','\n',dm.params);
+
+                if (dm.params.value_based_line_search + ...
+                    dm.params.gradient_based_line_search + ...
+                    dm.params.trust_region + ...
+                    dm.params.tr_pds > 1)
+                    error('''%s'' method must have only one algorithm.',...
+                        dm.method);
+                end
+                param_write(fid,sbeg,'value_based_line_search','','\n',dm.params);
+                param_write(fid,sbeg,'gradient_based_line_search','','\n',dm.params);
+                param_write(fid,sbeg,'trust_region','','\n',dm.params);
+                param_write(fid,sbeg,'tr_pds','','\n',dm.params);
+                param_write(fid,sbeg,'max_step','               = ','\n',dm.params);
+                param_write(fid,sbeg,'gradient_tolerance','     = ','\n',dm.params);
+                param_write(fid,sbeg,'merit_function','         = ','\n',dm.params);
+                param_write(fid,sbeg,'central_path','           = ','\n',dm.params);
+                param_write(fid,sbeg,'steplength_to_boundary',' = ','\n',dm.params);
+                param_write(fid,sbeg,'centering_parameter','    = ','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'nond'}
+        switch dm.method
+            case {'nond_sampling'}
+                param_write(fid,sbeg,'seed','             = ','\n',dm.params);
+                param_write(fid,sbeg,'fixed_seed','','\n',dm.params);
+                dver=textscan(IssmConfig('_DAKOTA_VERSION_'),'%[0123456789].%[0123456789].%[0123456789]');
+                if ((str2num(dver{1}{1})==4 && str2num(dver{2}{1})>2) || str2num(dver{1}{1})>4)
+                    param_write(fid,sbeg,'rng','                ','\n',dm.params);
+                end
+                param_write(fid,sbeg,'samples','          = ','\n',dm.params);
+                param_write(fid,sbeg,'sample_type','        ','\n',dm.params);
+                param_write(fid,sbeg,'all_variables','','\n',dm.params);
+                param_write(fid,sbeg,'variance_based_decomp','','\n',dm.params);
+                if strcmp(dm.params.sample_type,'incremental_random') || ...
+                   strcmp(dm.params.sample_type,'incremental_lhs'   )
+                    param_write(fid,sbeg,'previous_samples',' = ','\n',dm.params);
+                end
+                param_write(fid,sbeg,'output',' ','\n',dm.params);
+
+            case {'nond_local_reliability'}
+                param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+                param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params);
+
+                param_write(fid,sbeg,'mpp_search','  = ','\n',dm.params);
+                if ischar(dm.params.mpp_search)
+                    if (dm.params.sqp + ...
+                        dm.params.nip > 1)
+                        error('''%s'' method must have only one algorithm.',...
+                            dm.method);
+                    end
+                    param_write(fid,sbeg,'sqp','','\n',dm.params);
+                    param_write(fid,sbeg,'nip','','\n',dm.params);
+                    param_write(fid,sbeg,'integration','   ','\n',dm.params);
+                    param_write(fid,sbeg,'refinement','  = ','\n',dm.params);
+                    if ischar(dm.params.refinement)
+                        param_write(fid,sbeg,'samples','     = ','\n',dm.params);
+                        param_write(fid,sbeg,'seed','        = ','\n',dm.params);
+                    end
+                end
+                param_write(fid,sbeg,'output',' ','\n',dm.params);
+
+            case {'nond_global_reliability'}
+                if (dm.params.x_gaussian_process + ...
+                    dm.params.u_gaussian_process ~= 1)
+                    error('''%s'' method must have one and only one algorithm.',...
+                        dm.method);
+                end
+                param_write(fid,sbeg,'x_gaussian_process','','\n',dm.params);
+                param_write(fid,sbeg,'u_gaussian_process','','\n',dm.params);
+                param_write(fid,sbeg,'all_variables','','\n',dm.params);
+                param_write(fid,sbeg,'seed',' = ','\n',dm.params);
+
+            case {'nond_polynomial_chaos'}
+                param_write(fid,sbeg,'expansion_order','       = ','\n',dm.params);
+                param_write(fid,sbeg,'expansion_terms','       = ','\n',dm.params);
+                param_write(fid,sbeg,'quadrature_order','      = ','\n',dm.params);
+                param_write(fid,sbeg,'sparse_grid_level','     = ','\n',dm.params);
+                param_write(fid,sbeg,'expansion_samples','     = ','\n',dm.params);
+                param_write(fid,sbeg,'incremental_lhs','','\n',dm.params);
+                param_write(fid,sbeg,'collocation_points','    = ','\n',dm.params);
+                param_write(fid,sbeg,'collocation_ratio','     = ','\n',dm.params);
+                param_write(fid,sbeg,'reuse_samples','','\n',dm.params);
+                param_write(fid,sbeg,'expansion_import_file',' = ','\n',dm.params);
+                param_write(fid,sbeg,'seed','                  = ','\n',dm.params);
+                param_write(fid,sbeg,'fixed_seed','','\n',dm.params);
+                param_write(fid,sbeg,'samples','               = ','\n',dm.params);
+                param_write(fid,sbeg,'sample_type','           = ','\n',dm.params);
+                param_write(fid,sbeg,'all_variables','','\n',dm.params);
+
+            case {'nond_stoch_collocation'}
+                param_write(fid,sbeg,'quadrature_order','  = ','\n',dm.params);
+                param_write(fid,sbeg,'sparse_grid_level',' = ','\n',dm.params);
+                param_write(fid,sbeg,'seed','              = ','\n',dm.params);
+                param_write(fid,sbeg,'fixed_seed','','\n',dm.params);
+                param_write(fid,sbeg,'samples','           = ','\n',dm.params);
+                param_write(fid,sbeg,'sample_type','       = ','\n',dm.params);
+                param_write(fid,sbeg,'all_variables','','\n',dm.params);
+
+            case {'nond_evidence'}
+                param_write(fid,sbeg,'seed','    = ','\n',dm.params);
+                param_write(fid,sbeg,'samples',' = ','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'dace'}
+        switch dm.method
+            case {'dace'}
+                if (dm.params.grid + ...
+                    dm.params.random + ...
+                    dm.params.oas + ...
+                    dm.params.lhs + ...
+                    dm.params.oa_lhs + ...
+                    dm.params.box_behnken + ...
+                    dm.params.central_composite ~= 1)
+                    error('''%s'' method must have one and only one algorithm.',...
+                        dm.method);
+                end
+                param_write(fid,sbeg,'grid','','\n',dm.params);
+                param_write(fid,sbeg,'random','','\n',dm.params);
+                param_write(fid,sbeg,'oas','','\n',dm.params);
+                param_write(fid,sbeg,'lhs','','\n',dm.params);
+                param_write(fid,sbeg,'oa_lhs','','\n',dm.params);
+                param_write(fid,sbeg,'box_behnken','','\n',dm.params);
+                param_write(fid,sbeg,'central_composite','','\n',dm.params);
+                param_write(fid,sbeg,'seed','    = ','\n',dm.params);
+                param_write(fid,sbeg,'fixed_seed','','\n',dm.params);
+                param_write(fid,sbeg,'samples',' = ','\n',dm.params);
+                param_write(fid,sbeg,'symbols',' = ','\n',dm.params);
+                param_write(fid,sbeg,'quality_metrics','','\n',dm.params);
+                param_write(fid,sbeg,'variance_based_decomp','','\n',dm.params);
+
+            case {'fsu_quasi_mc'}
+                if (dm.params.halton + ...
+                    dm.params.hammersley ~= 1)
+                    error('''%s'' method must have one and only one sequence type.',...
+                        dm.method);
+                end
+                param_write(fid,sbeg,'halton','','\n',dm.params);
+                param_write(fid,sbeg,'hammersley','','\n',dm.params);
+                param_write(fid,sbeg,'samples','        = ','\n',dm.params);
+                param_write(fid,sbeg,'sequence_start',' = ','\n',dm.params);
+                param_write(fid,sbeg,'sequence_leap','  = ','\n',dm.params);
+                param_write(fid,sbeg,'prime_base','     = ','\n',dm.params);
+                param_write(fid,sbeg,'fixed_sequence','','\n',dm.params);
+                param_write(fid,sbeg,'latinize','','\n',dm.params);
+                param_write(fid,sbeg,'variance_based_decomp','','\n',dm.params);
+                param_write(fid,sbeg,'quality_metrics','','\n',dm.params);
+
+            case {'fsu_cvt'}
+                param_write(fid,sbeg,'seed','       = ','\n',dm.params);
+                param_write(fid,sbeg,'fixed_seed','','\n',dm.params);
+                param_write(fid,sbeg,'samples','    = ','\n',dm.params);
+                param_write(fid,sbeg,'num_trials',' = ','\n',dm.params);
+                param_write(fid,sbeg,'trial_type',' = ','\n',dm.params);
+                param_write(fid,sbeg,'latinize','','\n',dm.params);
+                param_write(fid,sbeg,'variance_based_decomp','','\n',dm.params);
+                param_write(fid,sbeg,'quality_metrics','','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'param'}
+        param_write(fid,sbeg,'output',' ','\n',dm.params);
+        switch dm.method
+            case {'vector_parameter_study'}
+                if ~xor(isempty(dm.params.final_point), ...
+                        isempty(dm.params.step_vector))
+                    error('''%s'' method must have one and only one specification.',...
+                        dm.method);
+                end
+                if     ~isempty(dm.params.final_point)
+                    param_write(fid,sbeg,'final_point',' = ','\n',dm.params);
+                    param_write(fid,sbeg,'step_length',' = ','\n',dm.params);
+                    param_write(fid,sbeg,'num_steps','   = ','\n',dm.params);
+                elseif ~isempty(dm.params.step_vector)
+                    param_write(fid,sbeg,'step_vector',' = ','\n',dm.params);
+                    param_write(fid,sbeg,'num_steps','   = ','\n',dm.params);
+                end
+
+            case {'list_parameter_study'}
+                param_write(fid,sbeg,'list_of_points',' = ','\n',dm.params);
+
+            case {'centered_parameter_study'}
+                param_write(fid,sbeg,'percent_delta','       = ','\n',dm.params);
+                param_write(fid,sbeg,'deltas_per_variable',' = ','\n',dm.params);
+
+            case {'multidim_parameter_study'}
+                param_write(fid,sbeg,'partitions',' = ','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    otherwise
+        error('Unrecognized method type: ''%s''.',dm.type);
+end
+
+end
+
+%%  function to write a structure of parameters
+
+function []=param_struc_write(fidi,sbeg,smid,send,params)
+
+%  loop through each parameter field in the structure
+
+fnames=fieldnames(params);
+
+for i=1:numel(fnames)
+    param_write(fidi,sbeg,fnames{i},smid,send,params);
+end
+
+end
+
+%%  function to write a parameter
+
+function []=param_write(fidi,sbeg,pname,smid,send,params)
+
+%  check for errors
+
+if ~isfield(params,pname)
+    warning('param_write:param_not_found',...
+        'Parameter ''%s'' not found in ''%s''.',...
+        pname,inputname(6));
+    return
+elseif islogical(params.(pname)) && ~params.(pname)
+    return
+elseif isempty(params.(pname))
+    warning('param_write:param_empty',...
+        'Parameter ''%s'' requires input of type ''%s''.',...
+        pname,class(params.(pname)));
+    return
+end
+
+%  construct the parameter string based on type
+
+if     islogical(params.(pname))
+    fprintf(fidi,[sbeg '%s' send],pname);
+elseif isnumeric(params.(pname))
+    fprintf(fidi,[sbeg '%s' smid '%g'],pname,params.(pname)(1));
+    for i=2:numel(params.(pname))
+        fprintf(fidi,[' %g'],params.(pname)(i));
+    end
+    fprintf(fidi,[send]);
+elseif ischar   (params.(pname))
+    fprintf(fidi,[sbeg '%s' smid '%s' send],pname,params.(pname));
+else
+    warning('param_write:param_unrecog',...
+        'Parameter ''%s'' is of unrecognized type ''%s''.',...
+        pname,class(params.(pname)));
+    return
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/continuous_design.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/continuous_design.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/continuous_design.m	(revision 21239)
@@ -0,0 +1,227 @@
+%
+%  definition for the continuous_design class.
+%
+%  [cdv]=continuous_design(varargin)
+%
+%  where the required varargin are:
+%    descriptor    (char, description, '')
+%    initpt        (double, initial point, 0.)
+%  and the optional varargin and defaults are:
+%    lower         (double, lower bound, -Inf)
+%    upper         (double, upper bound,  Inf)
+%    scale_type    (char, scaling type, 'none')
+%    scale         (double, scaling factor, 1.)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef continuous_design
+    properties
+        descriptor='';
+        initpt    = 0.;
+        lower     =-Inf;
+        upper     = Inf;
+        scale_type='none';
+        scale     = 1.;
+    end
+
+    methods
+        function [cdv]=continuous_design(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object
+
+                case 1
+                    if isa(varargin{1},'continuous_design')
+                        cdv=varargin{1};
+                    else
+                        error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+                            inputname(1),class(varargin{1}),'continuous_design');
+                    end
+
+%  create the object from the input
+
+                otherwise
+                    asizec=num2cell(array_size(varargin{1:min(nargin,6)}));
+                    cdv(asizec{:})=continuous_design;
+                    clear asizec
+
+                    if ischar(varargin{1})
+                        varargin{1}=cellstr(varargin{1});
+                    end
+                    for i=1:numel(cdv)
+                        if (numel(varargin{1}) > 1)
+                            cdv(i).descriptor=varargin{1}{i};
+                        else
+                            cdv(i).descriptor=[char(varargin{1}) string_dim(cdv,i,'vector')];
+                        end
+                    end
+
+                    if (nargin >= 2)
+                        for i=1:numel(cdv)
+                            if (numel(varargin{2}) > 1)
+                                cdv(i).initpt    =varargin{2}(i);
+                            else
+                                cdv(i).initpt    =varargin{2};
+                            end
+                        end
+                        if (nargin >= 3)
+                            for i=1:numel(cdv)
+                                if (numel(varargin{3}) > 1)
+                                    cdv(i).lower     =varargin{3}(i);
+                                else
+                                    cdv(i).lower     =varargin{3};
+                                end
+                            end
+                            if (nargin >= 4)
+                                for i=1:numel(cdv)
+                                    if (numel(varargin{4}) > 1)
+                                        cdv(i).upper     =varargin{4}(i);
+                                    else
+                                        cdv(i).upper     =varargin{4};
+                                    end
+                                end
+                                if (nargin >= 5)
+                                    if ischar(varargin{5})
+                                        varargin{5}=cellstr(varargin{5});
+                                    end
+                                    for i=1:numel(cdv)
+                                        if (numel(varargin{5}) > 1)
+                                            cdv(i).scale_type=varargin{5}{i};
+                                        else
+                                            cdv(i).scale_type=char(varargin{5});
+                                        end
+                                    end
+                                    if (nargin >= 6)
+                                        for i=1:numel(cdv)
+                                            if (numel(varargin{6}) > 1)
+                                                cdv(i).scale     =varargin{6}(i);
+                                            else
+                                                cdv(i).scale     =varargin{6};
+                                            end
+                                        end
+                                        if (nargin > 6)
+                                            warning('continuous_design:extra_arg',...
+                                                'Extra arguments for object of class ''%s''.',...
+                                                class(cdv));
+                                        end
+                                    end
+                                end
+                            end
+                        end
+                    end
+            end
+
+        end
+
+        function []=disp(cdv)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(cdv)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(cdv),inputname(1),string_dim(cdv,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,cdv(i).descriptor));
+                disp(sprintf('        initpt: %g'      ,cdv(i).initpt));
+                disp(sprintf('         lower: %g'      ,cdv(i).lower));
+                disp(sprintf('         upper: %g'      ,cdv(i).upper));
+                disp(sprintf('    scale_type: ''%s'''  ,cdv(i).scale_type));
+                disp(sprintf('         scale: %g\n'    ,cdv(i).scale));
+            end
+
+        end
+
+        function [desc]  =prop_desc(cdv,dstr)
+            desc=cell(1,numel(cdv));
+            for i=1:numel(cdv)
+                if ~isempty(cdv(i).descriptor)
+                    desc(i)=cellstr(cdv(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(cdv,i,'vector')]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(cdv,i,'vector')]);
+                else
+                    desc(i)=cellstr(['cdv'        string_dim(cdv,i,'vector')]);
+                end
+            end
+            desc=allempty(desc);
+        end
+        function [initpt]=prop_initpt(cdv)
+            initpt=zeros(1,numel(cdv));
+            for i=1:numel(cdv)
+                initpt(i)=cdv(i).initpt;
+            end
+            initpt=allequal(initpt,0.);
+        end
+        function [lower] =prop_lower(cdv)
+            lower=zeros(1,numel(cdv));
+            for i=1:numel(cdv)
+                lower(i)=cdv(i).lower;
+            end
+            lower=allequal(lower,-Inf);
+        end
+        function [upper] =prop_upper(cdv)
+            upper=zeros(1,numel(cdv));
+            for i=1:numel(cdv)
+                upper(i)=cdv(i).upper;
+            end
+            upper=allequal(upper, Inf);
+        end
+        function [mean]  =prop_mean(cdv)
+            mean=[];
+        end
+        function [stddev]=prop_stddev(cdv)
+            stddev=[];
+        end
+        function [initst]=prop_initst(cdv)
+            initst=[];
+        end
+        function [stype] =prop_stype(cdv)
+            stype=cell(1,numel(cdv));
+            for i=1:numel(cdv)
+                stype(i)=cellstr(cdv(i).scale_type);
+            end
+            stype=allequal(stype,'none');
+        end
+        function [scale] =prop_scale(cdv)
+            scale=zeros(1,numel(cdv));
+            for i=1:numel(cdv)
+                scale(i)=cdv(i).scale;
+            end
+            scale=allequal(scale,1.);
+        end
+    end
+
+    methods (Static)
+        function []=dakota_write(fidi,dvar)
+
+%  collect only the variables of the appropriate class
+
+            cdv=struc_class(dvar,'continuous_design');
+
+%  write variables
+
+            vlist_write(fidi,'continuous_design','cdv',cdv);
+        end
+    end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/continuous_state.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/continuous_state.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/continuous_state.m	(revision 21239)
@@ -0,0 +1,192 @@
+%
+%  definition for the continuous_state class.
+%
+%  [csv]=continuous_state(varargin)
+%
+%  where the required varargin are:
+%    descriptor    (char, description, '')
+%    initst        (double, initial state, 0.)
+%  and the optional varargin and defaults are:
+%    lower         (double, lower bound, -Inf)
+%    upper         (double, upper bound,  Inf)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef continuous_state
+    properties
+        descriptor='';
+        initst    = 0.;
+        lower     =-Inf;
+        upper     = Inf;
+    end
+
+    methods
+        function [csv]=continuous_state(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object
+
+                case 1
+                    if isa(varargin{1},'continuous_state')
+                        csv=varargin{1};
+                    else
+                        error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+                            inputname(1),class(varargin{1}),'continuous_state');
+                    end
+
+%  create the object from the input
+
+                otherwise
+                    asizec=num2cell(array_size(varargin{1:min(nargin,4)}));
+                    csv(asizec{:})=continuous_state;
+                    clear asizec
+
+                    if ischar(varargin{1})
+                        varargin{1}=cellstr(varargin{1});
+                    end
+                    for i=1:numel(csv)
+                        if (numel(varargin{1}) > 1)
+                            csv(i).descriptor=varargin{1}{i};
+                        else
+                            csv(i).descriptor=[char(varargin{1}) string_dim(csv,i,'vector')];
+                        end
+                    end
+
+                    if (nargin >= 2)
+                        for i=1:numel(csv)
+                            if (numel(varargin{2}) > 1)
+                                csv(i).initst    =varargin{2}(i);
+                            else
+                                csv(i).initst    =varargin{2};
+                            end
+                        end
+                        if (nargin >= 3)
+                            for i=1:numel(csv)
+                                if (numel(varargin{3}) > 1)
+                                    csv(i).lower     =varargin{3}(i);
+                                else
+                                    csv(i).lower     =varargin{3};
+                                end
+                            end
+                            if (nargin >= 4)
+                                for i=1:numel(csv)
+                                    if (numel(varargin{4}) > 1)
+                                        csv(i).upper     =varargin{4}(i);
+                                    else
+                                        csv(i).upper     =varargin{4};
+                                    end
+                                end
+                                if (nargin > 4)
+                                    warning('continuous_state:extra_arg',...
+                                        'Extra arguments for object of class ''%s''.',...
+                                        class(csv));
+                                end
+                            end
+                        end
+                    end
+            end
+
+        end
+
+        function []=disp(csv)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(csv)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(csv),inputname(1),string_dim(csv,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,csv(i).descriptor));
+                disp(sprintf('        initst: %g'      ,csv(i).initst));
+                disp(sprintf('         lower: %g'      ,csv(i).lower));
+                disp(sprintf('         upper: %g\n'    ,csv(i).upper));
+            end
+
+        end
+
+        function [desc]  =prop_desc(csv,dstr)
+            desc=cell(1,numel(csv));
+            for i=1:numel(csv)
+                if ~isempty(csv(i).descriptor)
+                    desc(i)=cellstr(csv(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(csv,i,'vector')]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(csv,i,'vector')]);
+                else
+                    desc(i)=cellstr(['csv'        string_dim(csv,i,'vector')]);
+                end
+            end
+            desc=allempty(desc);
+        end
+        function [initpt]=prop_initpt(csv)
+            initpt=[];
+        end
+        function [lower] =prop_lower(csv)
+            lower=zeros(1,numel(csv));
+            for i=1:numel(csv)
+                lower(i)=csv(i).lower;
+            end
+            lower=allequal(lower,-Inf);
+        end
+        function [upper] =prop_upper(csv)
+            upper=zeros(1,numel(csv));
+            for i=1:numel(csv)
+                upper(i)=csv(i).upper;
+            end
+            upper=allequal(upper, Inf);
+        end
+        function [mean]  =prop_mean(csv)
+            mean=[];
+        end
+        function [stddev]=prop_stddev(csv)
+            stddev=[];
+        end
+        function [initst]=prop_initst(csv)
+            initst=zeros(1,numel(csv));
+            for i=1:numel(csv)
+                initst(i)=csv(i).initst;
+            end
+            initst=allequal(initst,0.);
+        end
+        function [stype] =prop_stype(csv)
+            stype={};
+        end
+        function [scale] =prop_scale(csv)
+            scale=[];
+        end
+    end
+
+    methods (Static)
+        function []=dakota_write(fidi,dvar)
+
+%  collect only the variables of the appropriate class
+
+            csv=struc_class(dvar,'continuous_state');
+
+%  write variables
+
+            vlist_write(fidi,'continuous_state','csv',csv);
+        end
+    end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/least_squares_term.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/least_squares_term.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/least_squares_term.m	(revision 21239)
@@ -0,0 +1,187 @@
+%
+%  definition for the least_squares_term class.
+%
+%  [lst]=least_squares_term(varargin)
+%
+%  where the required varargin are:
+%    descriptor    (char, description, '')
+%  and the optional varargin and defaults are:
+%    scale_type    (char, scaling type, 'none')
+%    scale         (double, scaling factor, 1.)
+%    weight        (double, weighting factor, 1.)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and one or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef least_squares_term
+    properties
+        descriptor='';
+        scale_type='none';
+        scale     = 1.;
+        weight    = 1.;
+    end
+
+    methods
+        function [lst]=least_squares_term(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if  (nargin == 1) && isa(varargin{1},'least_squares_term')
+                        lst=varargin{1};
+                    else
+                        asizec=num2cell(array_size(varargin{1:min(nargin,4)}));
+                        lst(asizec{:})=least_squares_term;
+                        clear asizec
+
+                        if ischar(varargin{1})
+                            varargin{1}=cellstr(varargin{1});
+                        end
+                        for i=1:numel(lst)
+                            if (numel(varargin{1}) > 1)
+                                lst(i).descriptor=varargin{1}{i};
+                            else
+                                lst(i).descriptor=[char(varargin{1}) string_dim(lst,i,'vector')];
+                            end
+                        end
+
+                        if (nargin >= 2)
+                            if ischar(varargin{2})
+                                varargin{2}=cellstr(varargin{2});
+                            end
+                            for i=1:numel(lst)
+                                if (numel(varargin{2}) > 1)
+                                    lst(i).scale_type=varargin{2}{i};
+                                else
+                                    lst(i).scale_type=char(varargin{2});
+                                end
+                            end
+                            if (nargin >= 3)
+                                for i=1:numel(lst)
+                                    if (numel(varargin{3}) > 1)
+                                        lst(i).scale     =varargin{3}(i);
+                                    else
+                                        lst(i).scale     =varargin{3};
+                                    end
+                                end
+                                if (nargin >= 4)
+                                    for i=1:numel(lst)
+                                        if (numel(varargin{4}) > 1)
+                                            lst(i).weight    =varargin{4}(i);
+                                        else
+                                            lst(i).weight    =varargin{4};
+                                        end
+                                    end
+
+                                    if (nargin > 4)
+                                        warning('least_squares_term:extra_arg',...
+                                            'Extra arguments for object of class ''%s''.',...
+                                            class(lst));
+                                    end
+                                end
+                            end
+                        end
+                    end
+            end
+
+        end
+
+        function []=disp(lst)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(lst)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(lst),inputname(1),string_dim(lst,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,lst(i).descriptor));
+                disp(sprintf('    scale_type: ''%s'''  ,lst(i).scale_type));
+                disp(sprintf('         scale: %g'      ,lst(i).scale));
+                disp(sprintf('        weight: %g\n'    ,lst(i).weight));
+            end
+
+        end
+
+        function [desc]  =prop_desc(lst,dstr)
+            desc=cell(1,numel(lst));
+            for i=1:numel(lst)
+                if ~isempty(lst(i).descriptor)
+                    desc(i)=cellstr(lst(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(lst,i,'vector')]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(lst,i,'vector')]);
+                else
+                    desc(i)=cellstr(['lst'        string_dim(lst,i,'vector')]);
+                end
+            end
+            desc=allempty(desc);
+        end
+        function [stype] =prop_stype(lst)
+            stype=cell(1,numel(lst));
+            for i=1:numel(lst)
+                stype(i)=cellstr(lst(i).scale_type);
+            end
+            stype=allequal(stype,'none');
+        end
+        function [scale] =prop_scale(lst)
+            scale=zeros(1,numel(lst));
+            for i=1:numel(lst)
+                scale(i)=lst(i).scale;
+            end
+            scale=allequal(scale,1.);
+        end
+        function [weight]=prop_weight(lst)
+            weight=zeros(1,numel(lst));
+            for i=1:numel(lst)
+                weight(i)=lst(i).weight;
+            end
+            weight=allequal(weight,1.);
+        end
+        function [lower] =prop_lower(lst)
+            lower=[];
+        end
+        function [upper] =prop_upper(lst)
+            upper=[];
+        end
+        function [target]=prop_target(lst)
+            target=[];
+        end
+    end
+
+    methods (Static)
+        function [rdesc]=dakota_write(fidi,dresp,rdesc)
+
+%  collect only the responses of the appropriate class
+
+            lst=struc_class(dresp,'least_squares_term');
+
+%  write responses
+
+            [rdesc]=rlist_write(fidi,'least_squares_terms','least_squares_term',lst,rdesc);
+        end
+
+        function []=dakota_rlev_write(fidi,dresp,params)
+        end
+    end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/linear_equality_constraint.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/linear_equality_constraint.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/linear_equality_constraint.m	(revision 21239)
@@ -0,0 +1,182 @@
+%
+%  constructor for the linear_equality_constraint class.
+%
+%  [lec]=linear_equality_constraint(varargin)
+%
+%  where the required varargin are:
+%    matrix        (double row, variable coefficients, NaN)
+%    target        (double vector, target values, 0.)
+%  and the optional varargin and defaults are:
+%    scale_type    (char, scaling type, 'none')
+%    scale         (double, scaling factor, 1.)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef linear_equality_constraint
+    properties
+        matrix    = NaN;
+        target    = 0.;
+        scale_type='none';
+        scale     = 1.;
+    end
+
+    methods
+        function [lec]=linear_equality_constraint(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object
+
+                case 1
+                    if isa(varargin{1},'linear_equality_constraint')
+                        lec=varargin{1};
+                    else
+                        error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+                            inputname(1),class(varargin{1}),'linear_equality_constraint');
+                    end
+
+%  create the object from the input
+
+                otherwise
+                    if     (size(varargin{1},1) == array_numel(varargin{2:min(nargin,4)}) || ...
+                            size(varargin{1},1) == 1)
+                        asizec=num2cell(array_size(varargin{2:min(nargin,4)}));
+                    elseif (array_numel(varargin{2:min(nargin,4)}) == 1)
+                        asizec=num2cell([size(varargin{1},1) 1]);
+                    else
+                        error('Matrix for object of class ''%s'' has inconsistent number of rows.',...
+                              class(lec));
+                    end
+                    lec(asizec{:})=linear_equality_constraint;
+                    clear asizec
+
+                    for i=1:numel(lec)
+                        if (size(varargin{1},1) > 1)
+                            lec(i).matrix    =varargin{1}(i,:);
+                        else
+                            lec(i).matrix    =varargin{1};
+                        end
+                    end
+
+                    if (nargin >= 2)
+                        for i=1:numel(lec)
+                            if (numel(varargin{2}) > 1)
+                                lec(i).target    =varargin{2}(i);
+                            else
+                                lec(i).target    =varargin{2};
+                            end
+                        end
+                        if (nargin >= 3)
+                            if ischar(varargin{3})
+                                varargin{3}=cellstr(varargin{3});
+                            end
+                            for i=1:numel(lec)
+                                if (numel(varargin{3}) > 1)
+                                    lec(i).scale_type=varargin{3}{i};
+                                else
+                                    lec(i).scale_type=char(varargin{3});
+                                end
+                            end
+                            if (nargin >= 4)
+                                for i=1:numel(lec)
+                                    if (numel(varargin{4}) > 1)
+                                        lec(i).scale     =varargin{4}(i);
+                                    else
+                                        lec(i).scale     =varargin{4};
+                                    end
+                                end
+
+                                if (nargin > 4)
+                                    warning('linear_equality_constraint:extra_arg',...
+                                        'Extra arguments for object of class ''%s''.',...
+                                        class(lec));
+                                end
+                            end
+                        end
+                    end
+            end
+        end
+
+        function []=disp(lec)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(lec)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(lec),inputname(1),string_dim(lec,i)));
+                disp(sprintf('        matrix: %s'      ,string_vec(lec(i).matrix)));
+                disp(sprintf('        target: %g'      ,lec(i).target));
+                disp(sprintf('    scale_type: ''%s'''  ,lec(i).scale_type));
+                disp(sprintf('         scale: %g\n'    ,lec(i).scale));
+            end
+
+        end
+
+        function [matrix]=prop_matrix(lec)
+            matrix=zeros(numel(lec),0);
+            for i=1:numel(lec)
+                matrix(i,1:size(lec(i).matrix,2))=lec(i).matrix(1,:);
+            end
+        end
+        function [lower] =prop_lower(lec)
+            lower=[];
+        end
+        function [upper] =prop_upper(lec)
+            upper=[];
+        end
+        function [target]=prop_target(lec)
+            target=zeros(size(lec));
+            for i=1:numel(lec)
+                target(i)=lec(i).target;
+            end
+            target=allequal(target,0.);
+        end
+        function [stype] =prop_stype(lec)
+            stype=cell(size(lec));
+            for i=1:numel(lec)
+                stype(i)=cellstr(lec(i).scale_type);
+            end
+            stype=allequal(stype,'none');
+        end
+        function [scale] =prop_scale(lec)
+            scale=zeros(size(lec));
+            for i=1:numel(lec)
+                scale(i)=lec(i).scale;
+            end
+            scale=allequal(scale,1.);
+        end
+    end
+
+    methods (Static)
+        function []=dakota_write(fidi,dvar)
+
+%  collect only the variables of the appropriate class
+
+            lec=struc_class(dvar,'linear_equality_constraint');
+
+%  write constraints
+
+            lclist_write(fidi,'linear_equality_constraints','linear_equality',lec);
+        end
+    end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/linear_inequality_constraint.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/linear_inequality_constraint.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/linear_inequality_constraint.m	(revision 21239)
@@ -0,0 +1,204 @@
+%
+%  constructor for the linear_inequality_constraint class.
+%
+%  [lic]=linear_inequality_constraint(varargin)
+%
+%  where the required varargin are:
+%    matrix        (double row, variable coefficients, NaN)
+%    lower         (double vector, lower bounds, -Inf)
+%    upper         (double vector, upper bounds, 0.)
+%  and the optional varargin and defaults are:
+%    scale_type    (char, scaling type, 'none')
+%    scale         (double, scaling factor, 1.)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and three or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef linear_inequality_constraint
+    properties
+        matrix    = NaN;
+        lower     =-Inf;
+        upper     = 0.;
+        scale_type='none';
+        scale     = 1.;
+    end
+
+    methods
+        function [lic]=linear_inequality_constraint(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object
+
+                case 1
+                    if isa(varargin{1},'linear_inequality_constraint')
+                        lic=varargin{1};
+                    else
+                        error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+                            inputname(1),class(varargin{1}),'linear_inequality_constraint');
+                    end
+
+%  not enough arguments
+
+                case 2
+                    error('Construction of ''%s'' class object requires at least %d inputs.',...
+                        'linear_inequality_constraint',3)
+
+%  create the object from the input
+
+                otherwise
+                    if     (size(varargin{1},1) == array_numel(varargin{2:min(nargin,5)}) || ...
+                            size(varargin{1},1) == 1)
+                        asizec=num2cell(array_size(varargin{2:min(nargin,5)}));
+                    elseif (array_numel(varargin{2:min(nargin,5)}) == 1)
+                        asizec=num2cell([size(varargin{1},1) 1]);
+                    else
+                        error('Matrix for object of class ''%s'' has inconsistent number of rows.',...
+                              class(lic));
+                    end
+                    lic(asizec{:})=linear_inequality_constraint;
+                    clear asizec
+
+                    for i=1:numel(lic)
+                        if (size(varargin{1},1) > 1)
+                            lic(i).matrix    =varargin{1}(i,:);
+                        else
+                            lic(i).matrix    =varargin{1};
+                        end
+                    end
+
+                    if (nargin >= 2)
+                        for i=1:numel(lic)
+                            if (numel(varargin{2}) > 1)
+                                lic(i).lower     =varargin{2}(i);
+                            else
+                                lic(i).lower     =varargin{2};
+                            end
+                        end
+                        if (nargin >= 3)
+                            for i=1:numel(lic)
+                                if (numel(varargin{3}) > 1)
+                                    lic(i).upper     =varargin{3}(i);
+                                else
+                                    lic(i).upper     =varargin{3};
+                                end
+                            end
+                            if (nargin >= 4)
+                                if ischar(varargin{4})
+                                    varargin{4}=cellstr(varargin{4});
+                                end
+                                for i=1:numel(lic)
+                                    if (numel(varargin{4}) > 1)
+                                        lic(i).scale_type=varargin{4}{i};
+                                    else
+                                        lic(i).scale_type=char(varargin{4});
+                                    end
+                                end
+                                if (nargin >= 5)
+                                    for i=1:numel(lic)
+                                        if (numel(varargin{5}) > 1)
+                                            lic(i).scale     =varargin{5}(i);
+                                        else
+                                            lic(i).scale     =varargin{5};
+                                        end
+                                    end
+
+                                    if (nargin > 5)
+                                        warning('linear_inequality_constraint:extra_arg',...
+                                            'Extra arguments for object of class ''%s''.',...
+                                            class(lic));
+                                    end
+                                end
+                            end
+                        end
+                    end
+            end
+        end
+
+        function []=disp(lic)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(lic)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(lic),inputname(1),string_dim(lic,i)));
+                disp(sprintf('        matrix: %s'      ,string_vec(lic(i).matrix)));
+                disp(sprintf('         lower: %g'      ,lic(i).lower));
+                disp(sprintf('         upper: %g'      ,lic(i).upper));
+                disp(sprintf('    scale_type: ''%s'''  ,lic(i).scale_type));
+                disp(sprintf('         scale: %g\n'    ,lic(i).scale));
+            end
+
+        end
+
+        function [matrix]=prop_matrix(lic)
+            matrix=zeros(numel(lic),0);
+            for i=1:numel(lic)
+                matrix(i,1:size(lic(i).matrix,2))=lic(i).matrix(1,:);
+            end
+        end
+        function [lower] =prop_lower(lic)
+            lower=zeros(size(lic));
+            for i=1:numel(lic)
+                lower(i)=lic(i).lower;
+            end
+            lower=allequal(lower,-Inf);
+        end
+        function [upper] =prop_upper(lic)
+            upper=zeros(size(lic));
+            for i=1:numel(lic)
+                upper(i)=lic(i).upper;
+            end
+            upper=allequal(upper,0.);
+        end
+        function [target]=prop_target(lic)
+            target=[];
+        end
+        function [stype] =prop_stype(lic)
+            stype=cell(size(lic));
+            for i=1:numel(lic)
+                stype(i)=cellstr(lic(i).scale_type);
+            end
+            stype=allequal(stype,'none');
+        end
+        function [scale] =prop_scale(lic)
+            scale=zeros(size(lic));
+            for i=1:numel(lic)
+                scale(i)=lic(i).scale;
+            end
+            scale=allequal(scale,1.);
+        end
+    end
+
+    methods (Static)
+        function []=dakota_write(fidi,dvar)
+
+%  collect only the variables of the appropriate class
+
+            lic=struc_class(dvar,'linear_inequality_constraint');
+
+%  write constraints
+
+            lclist_write(fidi,'linear_inequality_constraints','linear_inequality',lic);
+        end
+    end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/nonlinear_equality_constraint.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/nonlinear_equality_constraint.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/nonlinear_equality_constraint.m	(revision 21239)
@@ -0,0 +1,189 @@
+%
+%  constructor for the nonlinear_equality_constraint class.
+%
+%  [nec]=nonlinear_equality_constraint(varargin)
+%
+%  where the required varargin are:
+%    descriptor    (char, description, '')
+%    target        (double, target value, 0.)
+%  and the optional varargin and defaults are:
+%    scale_type    (char, scaling type, 'none')
+%    scale         (double, scaling factor, 1.)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef nonlinear_equality_constraint
+    properties
+        descriptor='';
+        target    = 0.;
+        scale_type='none';
+        scale     = 1.;
+    end
+
+    methods
+        function [nec]=nonlinear_equality_constraint(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object
+
+                case 1
+                    if isa(varargin{1},'nonlinear_equality_constraint')
+                        nec=varargin{1};
+                    else
+                        error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+                            inputname(1),class(varargin{1}),'nonlinear_equality_constraint');
+                    end
+
+%  create the object from the input
+
+                otherwise
+                    asizec=num2cell(array_size(varargin{1:min(nargin,4)}));
+                    nec(asizec{:})=nonlinear_equality_constraint;
+                    clear asizec
+
+                    if ischar(varargin{1})
+                        varargin{1}=cellstr(varargin{1});
+                    end
+                    for i=1:numel(nec)
+                        if (numel(varargin{1}) > 1)
+                            nec(i).descriptor=varargin{1}{i};
+                        else
+                            nec(i).descriptor=[char(varargin{1}) string_dim(nec,i,'vector')];
+                        end
+                        if (numel(varargin{2}) > 1)
+                            nec(i).target    =varargin{2}(i);
+                        else
+                            nec(i).target    =varargin{2};
+                        end
+                    end
+
+                    if (nargin >= 3)
+                        if ischar(varargin{3})
+                            varargin{3}=cellstr(varargin{3});
+                        end
+                        for i=1:numel(nec)
+                            if (numel(varargin{3}) > 1)
+                                nec(i).scale_type=varargin{3}{i};
+                            else
+                                nec(i).scale_type=char(varargin{3});
+                            end
+                        end
+                        if (nargin >= 4)
+                            for i=1:numel(nec)
+                                if (numel(varargin{4}) > 1)
+                                    nec(i).scale     =varargin{4}(i);
+                                else
+                                    nec(i).scale     =varargin{4};
+                                end
+                            end
+
+                            if (nargin > 4)
+                                warning('objective_function:extra_arg',...
+                                    'Extra arguments for object of class ''%s''.',...
+                                    class(nec));
+                            end
+                        end
+                    end
+            end
+
+        end
+
+        function []=disp(nec)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(nec)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(nec),inputname(1),string_dim(nec,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,nec(i).descriptor));
+                disp(sprintf('        target: %g'      ,nec(i).target));
+                disp(sprintf('    scale_type: ''%s'''  ,nec(i).scale_type));
+                disp(sprintf('         scale: %g\n'    ,nec(i).scale));
+            end
+
+        end
+
+        function [desc]  =prop_desc(nec,dstr)
+            desc=cell(1,numel(nec));
+            for i=1:numel(nec)
+                if ~isempty(nec(i).descriptor)
+                    desc(i)=cellstr(nec(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(nec,i,'vector')]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(nec,i,'vector')]);
+                else
+                    desc(i)=cellstr(['nec'        string_dim(nec,i,'vector')]);
+                end
+            end
+            desc=allempty(desc);
+        end
+        function [stype] =prop_stype(nec)
+            stype=cell(size(nec));
+            for i=1:numel(nec)
+                stype(i)=cellstr(nec(i).scale_type);
+            end
+            stype=allequal(stype,'none');
+        end
+        function [scale] =prop_scale(nec)
+            scale=zeros(size(nec));
+            for i=1:numel(nec)
+                scale(i)=nec(i).scale;
+            end
+            scale=allequal(scale,1.);
+        end
+        function [weight]=prop_weight(nec)
+            weight=[];
+        end
+        function [lower] =prop_lower(nec)
+            lower=[];
+        end
+        function [upper] =prop_upper(nec)
+            upper=[];
+        end
+        function [target]=prop_target(nec)
+            target=zeros(size(nec));
+            for i=1:numel(nec)
+                target(i)=nec(i).target;
+            end
+            target=allequal(target,0.);
+        end
+    end
+
+    methods (Static)
+        function [rdesc]=dakota_write(fidi,dresp,rdesc)
+
+%  collect only the responses of the appropriate class
+
+            nec=struc_class(dresp,'nonlinear_equality_constraint');
+
+%  write responses
+
+            [rdesc]=rlist_write(fidi,'nonlinear_equality_constraints','nonlinear_equality',nec,rdesc);
+        end
+
+        function []=dakota_rlev_write(fidi,dresp,params)
+        end
+    end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/nonlinear_inequality_constraint.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/nonlinear_inequality_constraint.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/nonlinear_inequality_constraint.m	(revision 21239)
@@ -0,0 +1,207 @@
+%
+%  constructor for the nonlinear_inequality_constraint class.
+%
+%  [nic]=nonlinear_inequality_constraint(varargin)
+%
+%  where the required varargin are:
+%    descriptor    (char, description, '')
+%    lower         (double, lower bound, -Inf)
+%    upper         (double, upper bound, 0.)
+%  and the optional varargin and defaults are:
+%    scale_type    (char, scaling type, 'none')
+%    scale         (double, scaling factor, 1.)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and three or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef nonlinear_inequality_constraint
+    properties
+        descriptor='';
+        lower     =-Inf;
+        upper     = 0.;
+        scale_type='none';
+        scale     = 1.;
+    end
+
+    methods
+        function [nic]=nonlinear_inequality_constraint(varargin)
+
+            switch nargin
+
+ %  create a default object
+
+                case 0
+
+%  copy the object
+
+                case 1
+                    if isa(varargin{1},'nonlinear_inequality_constraint')
+                        nic=varargin{1};
+                    else
+                        error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+                            inputname(1),class(varargin{1}),'nonlinear_inequality_constraint');
+                    end
+
+%  not enough arguments
+
+                case 2
+                    error('Construction of ''%s'' class object requires at least %d inputs.',...
+                        'nonlinear_inequality_constraint',3)
+
+%  create the object from the input
+
+                otherwise
+                    asizec=num2cell(array_size(varargin{1:min(nargin,5)}));
+                    nic(asizec{:})=nonlinear_inequality_constraint;
+                    clear asizec
+
+                    if ischar(varargin{1})
+                        varargin{1}=cellstr(varargin{1});
+                    end
+                    for i=1:numel(nic)
+                        if (numel(varargin{1}) > 1)
+                            nic(i).descriptor=varargin{1}{i};
+                        else
+                            nic(i).descriptor=[char(varargin{1}) string_dim(nic,i,'vector')];
+                        end
+                        if (numel(varargin{2}) > 1)
+                            nic(i).lower     =varargin{2}(i);
+                        else
+                            nic(i).lower     =varargin{2};
+                        end
+                        if (numel(varargin{3}) > 1)
+                            nic(i).upper     =varargin{3}(i);
+                        else
+                            nic(i).upper     =varargin{3};
+                        end
+                    end
+
+                    if (nargin >= 4)
+                        if ischar(varargin{4})
+                            varargin{4}=cellstr(varargin{4});
+                        end
+                        for i=1:numel(nic)
+                            if (numel(varargin{4}) > 1)
+                                nic(i).scale_type=varargin{4}{i};
+                            else
+                                nic(i).scale_type=char(varargin{4});
+                            end
+                        end
+                        if (nargin >= 5)
+                            for i=1:numel(nic)
+                                if (numel(varargin{5}) > 1)
+                                    nic(i).scale     =varargin{5}(i);
+                                else
+                                    nic(i).scale     =varargin{5};
+                                end
+                            end
+
+                            if (nargin > 5)
+                                warning('objective_function:extra_arg',...
+                                    'Extra arguments for object of class ''%s''.',...
+                                    class(nic));
+                            end
+                        end
+                    end
+            end
+
+        end
+
+        function []=disp(nic)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(nic)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(nic),inputname(1),string_dim(nic,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,nic(i).descriptor));
+                disp(sprintf('         lower: %g'      ,nic(i).lower));
+                disp(sprintf('         upper: %g'      ,nic(i).upper));
+                disp(sprintf('    scale_type: ''%s'''  ,nic(i).scale_type));
+                disp(sprintf('         scale: %g\n'    ,nic(i).scale));
+            end
+
+        end
+
+        function [desc]  =prop_desc(nic,dstr)
+            desc=cell(1,numel(nic));
+            for i=1:numel(nic)
+                if ~isempty(nic(i).descriptor)
+                    desc(i)=cellstr(nic(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(nic,i,'vector')]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(nic,i,'vector')]);
+                else
+                    desc(i)=cellstr(['nic'        string_dim(nic,i,'vector')]);
+                end
+            end
+            desc=allempty(desc);
+        end
+        function [stype] =prop_stype(nic)
+            stype=cell(size(nic));
+            for i=1:numel(nic)
+                stype(i)=cellstr(nic(i).scale_type);
+            end
+            stype=allequal(stype,'none');
+        end
+        function [scale] =prop_scale(nic)
+            scale=zeros(size(nic));
+            for i=1:numel(nic)
+                scale(i)=nic(i).scale;
+            end
+            scale=allequal(scale,1.);
+        end
+        function [weight]=prop_weight(nic)
+            weight=[];
+        end
+        function [lower] =prop_lower(nic)
+            lower=zeros(size(nic));
+            for i=1:numel(nic)
+                lower(i)=nic(i).lower;
+            end
+            lower=allequal(lower,-Inf);
+        end
+        function [upper] =prop_upper(nic)
+            upper=zeros(size(nic));
+            for i=1:numel(nic)
+                upper(i)=nic(i).upper;
+            end
+            upper=allequal(upper,0.);
+        end
+        function [target]=prop_target(nic)
+            target=[];
+        end
+    end
+
+    methods (Static)
+        function [rdesc]=dakota_write(fidi,dresp,rdesc)
+
+%  collect only the responses of the appropriate class
+
+            nic=struc_class(dresp,'nonlinear_inequality_constraint');
+
+%  write responses
+
+            [rdesc]=rlist_write(fidi,'nonlinear_inequality_constraints','nonlinear_inequality',nic,rdesc);
+        end
+
+        function []=dakota_rlev_write(fidi,dresp,params)
+        end
+    end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/normal_uncertain.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/normal_uncertain.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/normal_uncertain.m	(revision 21239)
@@ -0,0 +1,208 @@
+%
+%  definition for the normal_uncertain class.
+%
+%  [nuv]=normal_uncertain(varargin)
+%
+%  where the required varargin are:
+%    descriptor    (char, description, '')
+%    mean          (double, mean, NaN)
+%    stddev        (double, standard deviation, NaN)
+%  and the optional varargin and defaults are:
+%    lower         (double, lower bound, -Inf)
+%    upper         (double, upper bound,  Inf)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and three or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef normal_uncertain
+    properties
+        descriptor='';
+        mean      = NaN;
+        stddev    = NaN;
+        lower     =-Inf;
+        upper     = Inf;
+    end
+
+    methods
+        function [nuv]=normal_uncertain(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object
+
+                case 1
+                    if isa(varargin{1},'normal_uncertain')
+                        nuv=varargin{1};
+                    else
+                        error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+                            inputname(1),class(varargin{1}),'normal_uncertain');
+                    end
+
+%  not enough arguments
+
+                case 2
+                    error('Construction of ''%s'' class object requires at least %d inputs.',...
+                        'normal_uncertain',3)
+
+%  create the object from the input
+
+                otherwise
+                    asizec=num2cell(array_size(varargin{1:min(nargin,5)}));
+                    nuv(asizec{:})=normal_uncertain;
+                    clear asizec
+
+                    if ischar(varargin{1})
+                        varargin{1}=cellstr(varargin{1});
+                    end
+                    for i=1:numel(nuv)
+                        if (numel(varargin{1}) > 1)
+                            nuv(i).descriptor=varargin{1}{i};
+                        else
+                            if numel(nuv)==1,
+								nuv(i).descriptor=char(varargin{1});
+							else
+								nuv(i).descriptor=[char(varargin{1}) num2str(i)];
+							end
+                        end
+                        if (numel(varargin{2}) > 1)
+                            nuv(i).mean      =varargin{2}(i);
+                        else
+                            nuv(i).mean      =varargin{2};
+                        end
+                        if (numel(varargin{3}) > 1)
+                            nuv(i).stddev    =varargin{3}(i);
+                        else
+                            nuv(i).stddev    =varargin{3};
+                        end
+                    end
+
+                    if (nargin >= 4)
+                        for i=1:numel(nuv)
+                            if (numel(varargin{4}) > 1)
+                                nuv(i).lower     =varargin{4}(i);
+                            else
+                                nuv(i).lower     =varargin{4};
+                            end
+                        end
+                        if (nargin >= 5)
+                            for i=1:numel(nuv)
+                                if (numel(varargin{5}) > 1)
+                                    nuv(i).upper     =varargin{5}(i);
+                                else
+                                    nuv(i).upper     =varargin{5};
+                                end
+                            end
+                            if (nargin > 5)
+                                warning('normal_uncertain:extra_arg',...
+                                    'Extra arguments for object of class ''%s''.',...
+                                    class(nuv));
+                            end
+                        end
+                    end
+            end
+
+        end
+
+        function []=disp(nuv)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(nuv)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(nuv),inputname(1),string_dim(nuv,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,nuv(i).descriptor));
+                disp(sprintf('          mean: %g'      ,nuv(i).mean));
+                disp(sprintf('        stddev: %g'      ,nuv(i).stddev));
+                disp(sprintf('         lower: %g'      ,nuv(i).lower));
+                disp(sprintf('         upper: %g\n'    ,nuv(i).upper));
+            end
+
+        end
+
+        function [desc]  =prop_desc(nuv,dstr)
+            desc=cell(1,numel(nuv));
+            for i=1:numel(nuv)
+                if ~isempty(nuv(i).descriptor)
+                    desc(i)=cellstr(nuv(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(nuv,i,'vector')]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(nuv,i,'vector')]);
+                else
+                    desc(i)=cellstr(['nuv'        string_dim(nuv,i,'vector')]);
+                end
+            end
+            desc=allempty(desc);
+        end
+        function [initpt]=prop_initpt(nuv)
+            initpt=[];
+        end
+        function [lower] =prop_lower(nuv)
+            lower=zeros(1,numel(nuv));
+            for i=1:numel(nuv)
+                lower(i)=nuv(i).lower;
+            end
+            lower=allequal(lower,-Inf);
+        end
+        function [upper] =prop_upper(nuv)
+            upper=zeros(1,numel(nuv));
+            for i=1:numel(nuv)
+                upper(i)=nuv(i).upper;
+            end
+            upper=allequal(upper, Inf);
+        end
+        function [mean]  =prop_mean(nuv)
+            mean=zeros(1,numel(nuv));
+            for i=1:numel(nuv)
+                mean(i)=nuv(i).mean;
+            end
+        end
+        function [stddev]=prop_stddev(nuv)
+            stddev=zeros(1,numel(nuv));
+            for i=1:numel(nuv)
+                stddev(i)=nuv(i).stddev;
+            end
+        end
+        function [initst]=prop_initst(nuv)
+            initst=[];
+        end
+        function [stype] =prop_stype(nuv)
+            stype={};
+        end
+        function [scale] =prop_scale(nuv)
+            scale=[];
+        end
+    end
+
+    methods (Static)
+        function []=dakota_write(fidi,dvar)
+
+%  collect only the variables of the appropriate class
+
+            nuv=struc_class(dvar,'normal_uncertain');
+
+%  write variables
+
+            vlist_write(fidi,'normal_uncertain','nuv',nuv);
+        end
+    end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/objective_function.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/objective_function.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/objective_function.m	(revision 21239)
@@ -0,0 +1,187 @@
+%
+%  definition for the objective_function class.
+%
+%  [of]=objective_function(varargin)
+%
+%  where the required varargin are:
+%    descriptor    (char, description, '')
+%  and the optional varargin and defaults are:
+%    scale_type    (char, scaling type, 'none')
+%    scale         (double, scaling factor, 1.)
+%    weight        (double, weighting factor, 1.)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and one or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef objective_function
+    properties
+        descriptor='';
+        scale_type='none';
+        scale     = 1.;
+        weight    = 1.;
+    end
+
+    methods
+        function [of]=objective_function(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if  (nargin == 1) && isa(varargin{1},'objective_function')
+                        of=varargin{1};
+                    else
+                        asizec=num2cell(array_size(varargin{1:min(nargin,4)}));
+                        of(asizec{:})=objective_function;
+                        clear asizec
+
+                        if ischar(varargin{1})
+                            varargin{1}=cellstr(varargin{1});
+                        end
+                        for i=1:numel(of)
+                            if (numel(varargin{1}) > 1)
+                                of(i).descriptor=varargin{1}{i};
+                            else
+                                of(i).descriptor=[char(varargin{1}) string_dim(of,i,'vector')];
+                            end
+                        end
+
+                        if (nargin >= 2)
+                            if ischar(varargin{2})
+                                varargin{2}=cellstr(varargin{2});
+                            end
+                            for i=1:numel(of)
+                                if (numel(varargin{2}) > 1)
+                                    of(i).scale_type=varargin{2}{i};
+                                else
+                                    of(i).scale_type=char(varargin{2});
+                                end
+                            end
+                            if (nargin >= 3)
+                                for i=1:numel(of)
+                                    if (numel(varargin{3}) > 1)
+                                        of(i).scale     =varargin{3}(i);
+                                    else
+                                        of(i).scale     =varargin{3};
+                                    end
+                                end
+                                if (nargin >= 4)
+                                    for i=1:numel(of)
+                                        if (numel(varargin{4}) > 1)
+                                            of(i).weight    =varargin{4}(i);
+                                        else
+                                            of(i).weight    =varargin{4};
+                                        end
+                                    end
+
+                                    if (nargin > 4)
+                                        warning('objective_function:extra_arg',...
+                                            'Extra arguments for object of class ''%s''.',...
+                                            class(of));
+                                    end
+                                end
+                            end
+                        end
+                    end
+            end
+
+        end
+
+        function []=disp(of)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(of)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(of),inputname(1),string_dim(of,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,of(i).descriptor));
+                disp(sprintf('    scale_type: ''%s'''  ,of(i).scale_type));
+                disp(sprintf('         scale: %g'      ,of(i).scale));
+                disp(sprintf('        weight: %g\n'    ,of(i).weight));
+            end
+
+        end
+
+        function [desc]  =prop_desc(of,dstr)
+            desc=cell(1,numel(of));
+            for i=1:numel(of)
+                if ~isempty(of(i).descriptor)
+                    desc(i)=cellstr(of(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(of,i,'vector')]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(of,i,'vector')]);
+                else
+                    desc(i)=cellstr(['of'         string_dim(of,i,'vector')]);
+                end
+            end
+            desc=allempty(desc);
+        end
+        function [stype] =prop_stype(of)
+            stype=cell(1,numel(of));
+            for i=1:numel(of)
+                stype(i)=cellstr(of(i).scale_type);
+            end
+            stype=allequal(stype,'none');
+        end
+        function [scale] =prop_scale(of)
+            scale=zeros(1,numel(of));
+            for i=1:numel(of)
+                scale(i)=of(i).scale;
+            end
+            scale=allequal(scale,1.);
+        end
+        function [weight]=prop_weight(of)
+            weight=zeros(1,numel(of));
+            for i=1:numel(of)
+                weight(i)=of(i).weight;
+            end
+            weight=allequal(weight,1.);
+        end
+        function [lower] =prop_lower(of)
+            lower=[];
+        end
+        function [upper] =prop_upper(of)
+            upper=[];
+        end
+        function [target]=prop_target(of)
+            target=[];
+        end
+    end
+
+    methods (Static)
+        function [rdesc]=dakota_write(fidi,dresp,rdesc)
+
+%  collect only the responses of the appropriate class
+
+            of=struc_class(dresp,'objective_function');
+
+%  write responses
+
+            [rdesc]=rlist_write(fidi,'objective_functions','objective_function',of,rdesc);
+        end
+
+        function []=dakota_rlev_write(fidi,dresp,params)
+        end
+    end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/response_function.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/response_function.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/response_function.m	(revision 21239)
@@ -0,0 +1,192 @@
+%
+%  definition for the response_function class.
+%
+%  [rf]=response_function(varargin)
+%
+%  where the required varargin are:
+%    descriptor    (char, description, '')
+%  and the optional varargin and defaults are:
+%    respl         (double vector, response levels, [])
+%    probl         (double vector, probability levels, [])
+%    rell          (double vector, reliability levels, [])
+%    grell         (double vector, gen. reliability levels, [])
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and one or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef response_function
+    properties
+        descriptor='';
+        respl     =[];
+        probl     =[];
+        rell      =[];
+        grell     =[];
+    end
+
+    methods
+        function [rf]=response_function(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if  (nargin == 1) && isa(varargin{1},'response_function')
+                        rf=varargin{1};
+                    else
+                        asizec=num2cell(array_size(varargin{1:min(nargin,1)}));
+                        rf(asizec{:})=response_function;
+                        clear asizec
+
+                        if ischar(varargin{1})
+                            varargin{1}=cellstr(varargin{1});
+                        end
+                        for i=1:numel(rf)
+                            if (numel(varargin{1}) > 1)
+                                rf(i).descriptor=varargin{1}{i};
+                            else
+                                rf(i).descriptor=[char(varargin{1}) string_dim(rf,i,'vector')];
+                            end
+                        end
+
+                        if (nargin >= 2)
+                            for i=1:numel(rf)
+                                rf(i).respl     =varargin{2};
+                            end
+                            if (nargin >= 3)
+                                for i=1:numel(rf)
+                                    rf(i).probl     =varargin{3};
+                                end
+                                if (nargin >= 4)
+                                    for i=1:numel(rf)
+                                        rf(i).rell      =varargin{4};
+                                    end
+                                    if (nargin >= 5)
+                                        for i=1:numel(rf)
+                                            rf(i).grell     =varargin{5};
+                                        end
+
+                                        if (nargin > 5)
+                                            warning('response_function:extra_arg',...
+                                                'Extra arguments for object of class ''%s''.',...
+                                                class(rf));
+                                        end
+                                    end
+                                end
+                            end
+                        end
+                    end
+            end
+
+        end
+
+        function []=disp(rf)
+
+        %  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(rf)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(rf),inputname(1),string_dim(rf,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,rf(i).descriptor));
+                disp(sprintf('         respl: %s'      ,string_vec(rf(i).respl)));
+                disp(sprintf('         probl: %s'      ,string_vec(rf(i).probl)));
+                disp(sprintf('          rell: %s'      ,string_vec(rf(i).rell)));
+                disp(sprintf('         grell: %s\n'    ,string_vec(rf(i).grell)));
+            end
+
+        end
+
+        function [desc]  =prop_desc(rf,dstr)
+            desc=cell(1,numel(rf));
+            for i=1:numel(rf)
+                if ~isempty(rf(i).descriptor)
+                    desc(i)=cellstr(rf(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(rf,i,'vector')]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(rf,i,'vector')]);
+                else
+                    desc(i)=cellstr(['rf'         string_dim(rf,i,'vector')]);
+                end
+            end
+            desc=allempty(desc);
+        end
+        function [stype] =prop_stype(rf)
+            stype={};
+        end
+        function [scale] =prop_scale(rf)
+            scale=[];
+        end
+        function [weight]=prop_weight(rf)
+            weight=[];
+        end
+        function [lower] =prop_lower(rf)
+            lower=[];
+        end
+        function [upper] =prop_upper(rf)
+            upper=[];
+        end
+        function [target]=prop_target(rf)
+            target=[];
+        end
+        function [respl,probl,rell,grell]=prop_levels(rf)
+            respl=cell(1,numel(rf));
+            probl=cell(1,numel(rf));
+            rell =cell(1,numel(rf));
+            grell=cell(1,numel(rf));
+            for i=1:numel(rf)
+                respl(i)={rf(i).respl};
+                probl(i)={rf(i).probl};
+                rell (i)={rf(i).rell};
+                grell(i)={rf(i).grell};
+            end
+            respl=allempty(respl);
+            probl=allempty(probl);
+            rell =allempty(rell);
+            grell=allempty(grell);
+        end
+    end
+
+    methods (Static)
+        function [rdesc]=dakota_write(fidi,dresp,rdesc)
+
+%  collect only the responses of the appropriate class
+
+            rf=struc_class(dresp,'response_function');
+
+%  write responses
+
+            [rdesc]=rlist_write(fidi,'response_functions','response_function',rf,rdesc);
+        end
+
+        function []=dakota_rlev_write(fidi,dresp,params)
+
+%  collect only the responses of the appropriate class
+
+            rf=struc_class(dresp,'response_function');
+
+%  write response levels
+
+            rlev_write(fidi,rf,params);
+        end
+    end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/uniform_uncertain.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/uniform_uncertain.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/qmu/uniform_uncertain.m	(revision 21239)
@@ -0,0 +1,167 @@
+%
+%  definition for the uniform_uncertain class.
+%
+%  [uuv]=uniform_uncertain(varargin)
+%
+%  where the required varargin are:
+%    descriptor    (char, description, '')
+%    lower         (double, lower bound, -Inf)
+%    upper         (double, upper bound,  Inf)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and three or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef uniform_uncertain
+    properties
+        descriptor='';
+        lower     =-Inf;
+        upper     = Inf;
+    end
+
+    methods
+        function [uuv]=uniform_uncertain(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object
+
+                case 1
+                    if isa(varargin{1},'uniform_uncertain')
+                        uuv=varargin{1};
+                    else
+                        error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+                            inputname(1),class(varargin{1}),'uniform_uncertain');
+                    end
+
+%  not enough arguments
+
+                case 2
+                    error('Construction of ''%s'' class object requires at least %d inputs.',...
+                        'uniform_uncertain',3)
+
+%  create the object from the input
+
+                otherwise
+                    asizec=num2cell(array_size(varargin{1:min(nargin,3)}));
+                    uuv(asizec{:})=uniform_uncertain;
+                    clear asizec
+
+                    if ischar(varargin{1})
+                        varargin{1}=cellstr(varargin{1});
+                    end
+                    for i=1:numel(uuv)
+                        if (numel(varargin{1}) > 1)
+                            uuv(i).descriptor=varargin{1}{i};
+                        else
+                            uuv(i).descriptor=[char(varargin{1}) string_dim(uuv,i,'vector')];
+                        end
+                        if (numel(varargin{2}) > 1)
+                            uuv(i).lower     =varargin{2}(i);
+                        else
+                            uuv(i).lower     =varargin{2};
+                        end
+                        if (numel(varargin{3}) > 1)
+                            uuv(i).upper     =varargin{3}(i);
+                        else
+                            uuv(i).upper     =varargin{3};
+                        end
+                    end
+            end
+
+        end
+
+        function []=disp(uuv)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(uuv)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(uuv),inputname(1),string_dim(uuv,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,uuv(i).descriptor));
+                disp(sprintf('         lower: %g'      ,uuv(i).lower));
+                disp(sprintf('         upper: %g\n'    ,uuv(i).upper));
+            end
+
+        end
+
+        function [desc]  =prop_desc(uuv,dstr)
+            desc=cell(1,numel(uuv));
+            for i=1:numel(uuv)
+                if ~isempty(uuv(i).descriptor)
+                    desc(i)=cellstr(uuv(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(uuv,i,'vector')]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(uuv,i,'vector')]);
+                else
+                    desc(i)=cellstr(['uuv'        string_dim(uuv,i,'vector')]);
+                end
+            end
+            desc=allempty(desc);
+        end
+        function [initpt]=prop_initpt(uuv)
+            initpt=[];
+        end
+        function [lower] =prop_lower(uuv)
+            lower=zeros(1,numel(uuv));
+            for i=1:numel(uuv)
+                lower(i)=uuv(i).lower;
+            end
+            lower=allequal(lower,-Inf);
+        end
+        function [upper] =prop_upper(uuv)
+            upper=zeros(1,numel(uuv));
+            for i=1:numel(uuv)
+                upper(i)=uuv(i).upper;
+            end
+            upper=allequal(upper, Inf);
+        end
+        function [mean]  =prop_mean(uuv)
+            mean=[];
+        end
+        function [stddev]=prop_stddev(uuv)
+            stddev=[];
+        end
+        function [initst]=prop_initst(uuv)
+            initst=[];
+        end
+        function [stype] =prop_stype(uuv)
+            stype={};
+        end
+        function [scale] =prop_scale(uuv)
+            scale=[];
+        end
+    end
+
+    methods (Static)
+        function []=dakota_write(fidi,dvar)
+
+%  collect only the variables of the appropriate class
+
+            uuv=struc_class(dvar,'uniform_uncertain');
+
+%  write variables
+
+            vlist_write(fidi,'uniform_uncertain','uuv',uuv);
+        end
+    end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/radaroverlay.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/radaroverlay.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/radaroverlay.js	(revision 21239)
@@ -0,0 +1,29 @@
+//RADAROVERLAY class definition
+//
+//   Usage:
+//      radaroverlay=new radaroverlay();
+
+function radaroverlay (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   radaroverlay parameters:'));
+
+		fielddisplay(this,'xlim','corresponding x boundaries[m]');
+		fielddisplay(this,'ylim','corresponding y boundaries [m]');
+		fielddisplay(this,'outerindex','outer triangulation between mesh and bounding box');
+		fielddisplay(this,'outerx','outer triangulation x coordinate between mesh and bounding box');
+		fielddisplay(this,'outery','outer triangulation y coordinate between mesh and bounding box');
+
+	}// }}}
+	//properties 
+	// {{{
+	this.xlim   = NaN;
+	this.ylim   = NaN;
+	this.outerindex   = NaN;
+	this.outerx   = NaN;
+	this.outery   = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/radaroverlay.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/radaroverlay.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/radaroverlay.m	(revision 21239)
@@ -0,0 +1,53 @@
+%RADAROVERLAY class definition
+%
+%   Usage:
+%      radaroverlay=radaroverlay();
+
+classdef radaroverlay
+	properties (SetAccess=public) 
+		pwr = NaN;
+		x   = NaN;
+		y   = NaN;
+		outerindex = NaN;
+		outerx = NaN;
+		outery = NaN;
+		outerheight = NaN;
+	end
+	methods
+		function self = radaroverlay(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   radaroverlay parameters:'));
+
+			fielddisplay(self,'pwr','radar power image (matrix)');
+			fielddisplay(self,'x','corresponding x coordinates [m]');
+			fielddisplay(self,'y','corresponding y coordinates [m]');
+			fielddisplay(self,'outerindex','outer triangulation corresponding to space between mesh and the bounding box');
+			fielddisplay(self,'outerx','outer x corresponding to space between mesh and the bounding box');
+			fielddisplay(self,'outery','outer y corresponding to space between mesh and the bounding box');
+			fielddisplay(self,'outerheight','outer height corresponding to space between mesh and the bounding box');
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			if ~isnan(self.pwr),
+				writejs1Darray(fid,[modelname '.radaroverlay.xlim'],[min(self.x) max(self.x)]);
+				writejs1Darray(fid,[modelname '.radaroverlay.ylim'],[min(self.y) max(self.y)]);
+				writejs2Darray(fid,[modelname '.radaroverlay.outerindex'],self.outerindex);
+				writejs1Darray(fid,[modelname '.radaroverlay.outerx'],self.outerx);
+				writejs1Darray(fid,[modelname '.radaroverlay.outery'],self.outery);
+				writejs1Darray(fid,[modelname '.radaroverlay.outerheight'],self.outerheight)
+			end
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/radaroverlay.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/radaroverlay.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/radaroverlay.py	(revision 21239)
@@ -0,0 +1,29 @@
+from fielddisplay import fielddisplay
+
+class radaroverlay(object):
+	"""
+	RADAROVERLAY class definition
+
+	   Usage:
+	      radaroverlay=radaroverlay();
+	"""
+
+	def __init__(self): # {{{
+		self.pwr = float('NaN')
+		self.x   = float('NaN')
+		self.y   = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   radaroverlay parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'pwr','radar power image (matrix)'))
+		string="%s\n%s"%(string,fielddisplay(self,'x','corresponding x coordinates [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'y','corresponding y coordinates [m]'))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/results.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/results.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/results.py	(revision 21239)
@@ -0,0 +1,52 @@
+import numpy
+from pairoptions import pairoptions
+from fielddisplay import fielddisplay
+import MatlabFuncs as m
+
+class results(object):
+	"""
+	RESULTS class definition
+
+	   Usage:
+	      results=results();
+	"""
+
+	def __init__(self,*args):    # {{{
+		pass
+	# }}}
+	def __repr__(self):    # {{{
+		s ="   Model results:\n"
+
+		if 'step' in self.__dict__:
+			s+="%s\n" % fielddisplay(self,'step',"step number")
+		if 'time' in self.__dict__:
+			s+="%s\n" % fielddisplay(self,'time',"time value")
+		if 'SolutionType' in self.__dict__:
+			s+="%s\n" % fielddisplay(self,'SolutionType',"solution type")
+
+		for name in self.__dict__.iterkeys():
+			if name not in ['step','time','SolutionType','errlog','outlog']:
+				if   isinstance(getattr(self,name),list):
+					s+="%s\n" % fielddisplay(self,name,"model results list")
+				elif isinstance(getattr(self,name),results):
+					s+="%s\n" % fielddisplay(self,name,"model results case")
+				else:
+					s+="%s\n" % fielddisplay(self,name,"")
+
+		if 'errlog' in self.__dict__:
+			s+="%s\n" % fielddisplay(self,'errlog',"error log file")
+		if 'outlog' in self.__dict__:
+			s+="%s\n" % fielddisplay(self,'outlog',"output log file")
+
+		return s
+	# }}}
+	def setdefaultparameters(self):    # {{{
+		#do nothing
+		return self
+	# }}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		pass
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/rifts.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/rifts.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/rifts.js	(revision 21239)
@@ -0,0 +1,91 @@
+//RIFTS class definition
+//
+//   Usage:
+//      rifts=new rifts();
+
+function rifts (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.classname= function(){// {{{
+		return "rifts";
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   rifts class echo:'));
+		fielddisplay(this,'riftstruct','structure containing all rift information (vertices coordinates, segments, type of melange, ...)');
+		fielddisplay(this,'riftproperties','');
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+			var numrifts;
+			if (isNaN(this.riftstruct) | this.riftstruct.length==0){
+				numrifts=0;
+			}
+			else{
+				numrifts=this.riftstruct.length;
+			}
+			if (numrifts){
+				if (!(md.mesh.domaintype() == '2Dhorizontal')){
+					md.checkmessage('models with rifts are only supported in 2d for now!');
+				}
+				if (!IsArray(this.riftstruct)){
+					md.checkmessage('rifts.riftstruct should be a structure!');
+				}
+				for(var i=0;i<md.mesh.segmentmarkers.length;i++){
+					if (md.mesh.segmentmarkers[i]>=2){
+						//We have segments with rift markers, but no rift structure!
+						md.checkmessage(['model should be processed for rifts (run meshprocessrifts)!']);
+						break;
+					}
+				}
+				for (var i=0;i<numrifts;i++){
+					md = checkfield(md,'fieldname',sprintf('rifts.riftstruct[%i].fill',i),'values',['Water', 'Air', 'Ice', 'Melange']);
+				}
+			}
+			else{
+				if (!isNaN(this.riftstruct)) md.checkmessage('riftstruct should be NaN since numrifts is 0!');
+			}
+		} //}}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var numrifts;
+			//Process rift info
+			if ((this.riftstruct.length==0) | (this.riftstruct == null)){
+				numrifts=0;
+			}
+			else{
+				numrifts=this.riftstruct.length;
+			}
+			var numpairs=0;
+			for (var i=0;i<numrifts;i++){
+				numpairs=numpairs+this.riftstruct[i].penaltypairs.length;
+			}
+
+			// 2 for nodes + 2 for elements+ 2 for  normals + 1 for length + 1 for fill + 1 for friction + 1 for fraction + 1 for fractionincrement + 1 for state.
+			data=Create2DArray(numpairs,12);
+			var count=0;
+			for (var i=0;i<numrifts;i++){
+				numpairsforthisrift=this.riftstruct[i].penaltypairs.length;
+				for(var j=0;j<numpairsforthisrift;j++){
+					for(var k=0;k<7;k++)data[count+j][k]=this.riftstruct[i].penaltypairs;
+					data[count+j][7]=this.riftstruct[i].fill;
+					data[count+j][8]=this.riftstruct[i].friction;
+					data[count+j][9]=this.riftstruct[i].fraction;
+					data[count+j][10]=this.riftstruct[i].fractionincrement;
+					data[count+j][11]=this.riftstruct[i].state;
+					count+=numpairsforthisrift;
+				}
+			}
+			WriteData(fid,prefix,'data',numrifts,'name','md.rifts.numrifts','format','Integer');
+			WriteData(fid,prefix,'data',data,'name','md.rifts.riftstruct','format','StringArray');
+		}//}}}
+		this.fix=function() { //{{{
+			this.riftstruct=NullFix(this.riftstruct,'');
+			this.riftproperties=NullFix(this.riftproperties,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.riftstruct     = NaN;
+	this.riftproperties = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/rifts.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/rifts.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/rifts.m	(revision 21239)
@@ -0,0 +1,115 @@
+%RIFTS class definition
+%
+%   Usage:
+%      rifts=rifts();
+
+classdef rifts
+	properties (SetAccess=public) 
+		riftstruct     = NaN;
+		riftproperties = NaN;
+	end
+	methods
+		function self = rifts(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			if isempty(self.riftstruct) | isnans(self.riftstruct),
+				numrifts=0;
+			else
+				numrifts=numel(self.riftstruct);
+			end
+			if numrifts,
+				if ~(strcmp(domaintype(md.mesh),'2Dhorizontal')),
+					md = checkmessage(md,['models with rifts are only supported in 2d for now!']);
+				end
+				if ~isstruct(self.riftstruct),
+					md = checkmessage(md,['rifts.riftstruct should be a structure!']);
+				end
+				if ~isempty(find(md.mesh.segmentmarkers>=2)),
+					%We have segments with rift markers, but no rift structure!
+					md = checkmessage(md,['model should be processed for rifts (run meshprocessrifts)!']);
+				end
+				for i=1:numrifts,
+					md = checkfield(md,'fieldname',sprintf('rifts.riftstruct(%d).fill',i),'values',{'Air','Ice','Melange','Water'});
+				end
+			else
+				if ~isnans(self.riftstruct),
+					md = checkmessage(md,['riftstruct should be NaN since numrifts is 0!']);
+				end
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   rifts parameters:'));
+
+			fielddisplay(self,'riftstruct','structure containing all rift information (vertices coordinates, segments, type of melange, ...)');
+			fielddisplay(self,'riftproperties','');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			%Process rift info
+			if isempty(self.riftstruct) | isnans(self.riftstruct),
+				numrifts=0;
+			else
+				numrifts=numel(self.riftstruct);
+			end
+
+			numpairs=0;
+			for i=1:numrifts,
+				numpairs=numpairs+size(self.riftstruct(i).penaltypairs,1);
+			end
+			
+			for i=1:numrifts
+				if (strcmpi(self.riftstruct(i).fill,'Air'))
+					self.riftstruct(i).fill = 0;
+				elseif (strcmpi(self.riftstruct(i).fill,'Ice'))
+					self.riftstruct(i).fill = 1;
+				elseif (strcmpi(self.riftstruct(i).fill,'Melange'))
+					self.riftstruct(i).fill = 2;
+				elseif (strcmpi(self.riftstruct(i).fill,'Water'))
+					self.riftstruct(i).fill = 3;
+				else
+					error(['Could not convert string in riftstruct to integer for marshalling']);	
+				end
+			end
+
+			% 2 for nodes + 2 for elements+ 2 for  normals + 1 for length + 1 for fill + 1 for friction + 1 for fraction + 1 for fractionincrement + 1 for state.
+			data=zeros(numpairs,12);
+			count=1;
+			for i=1:numrifts,
+				numpairsforthisrift=size(self.riftstruct(i).penaltypairs,1);
+				data(count:count+numpairsforthisrift-1,1:7)=self.riftstruct(i).penaltypairs;
+				data(count:count+numpairsforthisrift-1,8)=self.riftstruct(i).fill;
+				data(count:count+numpairsforthisrift-1,9)=self.riftstruct(i).friction;
+				data(count:count+numpairsforthisrift-1,10)=self.riftstruct(i).fraction;
+				data(count:count+numpairsforthisrift-1,11)=self.riftstruct(i).fractionincrement;
+				data(count:count+numpairsforthisrift-1,12)=self.riftstruct(i).state;
+				count=count+numpairsforthisrift;
+			end
+
+			WriteData(fid,prefix,'data',numrifts,'name','md.rifts.numrifts','format','Integer');
+			WriteData(fid,prefix,'data',data,    'name','md.rifts.riftstruct','format','DoubleMat','mattype',3);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+	
+			if isempty(self.riftstruct) | isnans(self.riftstruct),
+				numrifts=0;
+			else
+				numrifts=numel(self.riftstruct);
+			end
+			
+			if numrifts,
+				error('rifts savemodeljs error message: not supported yet!');
+			end
+	
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/rifts.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/rifts.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/rifts.py	(revision 21239)
@@ -0,0 +1,96 @@
+import numpy
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+from isnans import isnans
+import MatlabFuncs as m
+
+class rifts(object):
+	"""
+	RIFTS class definition
+
+	   Usage:
+	      rifts=rifts();
+	"""
+
+	def __init__(self): # {{{
+		self.riftstruct     = []
+		self.riftproperties = []
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   rifts parameters:'
+
+		string="%s\n%s"%(string,fielddisplay(self,'riftstruct','structure containing all rift information (vertices coordinates, segments, type of melange, ...)'))
+		string="%s\n%s"%(string,fielddisplay(self,'riftproperties',''))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		if (not self.riftstruct) or numpy.any(isnans(self.riftstruct)):
+			numrifts=0
+		else:
+			numrifts=len(self.riftstruct)
+
+		if numrifts:
+			if not m.strcmp(md.mesh.domaintype(),'2Dhorizontal'):
+				md.checkmessage("models with rifts are only supported in 2d for now!")
+			if not isinstance(self.riftstruct,list):
+				md.checkmessage("rifts.riftstruct should be a structure!")
+			if numpy.any(md.mesh.segmentmarkers>=2):
+				#We have segments with rift markers, but no rift structure!
+				md.checkmessage("model should be processed for rifts (run meshprocessrifts)!")
+			for i,rift in enumerate(self.riftstruct):
+				md = checkfield(md,'fieldname',"rifts.riftstruct[%d]['fill']" % i,'values',['Water','Air','Ice','Melange'])
+		else:
+			if self.riftstruct and numpy.any(numpy.logical_not(isnans(self.riftstruct))):
+				md.checkmessage("riftstruct should be NaN since numrifts is 0!")
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		#Process rift info
+		if (not self.riftstruct) or numpy.any(isnans(self.riftstruct)):
+			numrifts=0
+		else:
+			numrifts=len(self.riftstruct)
+
+		numpairs=0
+		for rift in self.riftstruct:
+			numpairs+=numpy.size(rift['penaltypairs'],axis=0)
+
+		# Convert strings in riftstruct to hard coded numbers
+		for i,rift in enumerate(self.riftstruct):
+			if rift['fill'] == 'Air':
+				rift['fill'] = 0;
+			elif rift['fill'] == 'Ice':
+				rift['fill'] = 1;
+			elif rift['fill'] == 'Melange':
+				rift['fill'] = 2;
+			elif rift['fill'] == 'Water':
+				rift['fill'] = 3;
+			else:
+				error('Could not convert strings in riftstruct to integers for marshalling')
+
+		# 2 for nodes + 2 for elements+ 2 for  normals + 1 for length + 1 for fill + 1 for friction + 1 for fraction + 1 for fractionincrement + 1 for state.
+		data=numpy.zeros((numpairs,12))
+		count=0
+		for rift in self.riftstruct:
+			numpairsforthisrift=numpy.size(rift['penaltypairs'],0)
+			data[count:count+numpairsforthisrift,0:7]=rift['penaltypairs']
+			data[count:count+numpairsforthisrift,7]=rift['fill']
+			data[count:count+numpairsforthisrift,8]=rift['friction']
+			data[count:count+numpairsforthisrift,9]=rift['fraction']
+			data[count:count+numpairsforthisrift,10]=rift['fractionincrement']
+			data[count:count+numpairsforthisrift,11]=rift['state'].reshape(-1)
+			count+=numpairsforthisrift
+
+		WriteData(fid,prefix,'data',numrifts,'name','md.rifts.numrifts','format','Integer')
+		WriteData(fid,prefix,'data',data,'name','md.rifts.riftstruct','format','DoubleMat','mattype',3)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/sealevelmodel.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/sealevelmodel.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/sealevelmodel.m	(revision 21239)
@@ -0,0 +1,82 @@
+%SEALEVELMODEL class definition
+%
+%   Usage:
+%      slm = sealevelmodel(varargin)
+%
+%      where varargin is a variable list of options: 
+%
+%   Example: 
+%      slm = sealevel('icecap',md_greenland,'icecap',md_antarctica,'earth',md_earth);
+
+classdef sealevelmodel
+	properties (SetAccess=public) %Model fields
+		% {{{
+		icecaps          = {}; % list of ice cap models
+		earth            = 0;  % model for the whole earth
+		cluster          = 0;
+		miscellaneous    = 0;
+		settings         = 0;
+		private          = 0;
+		%}}}
+	end
+	methods
+		function slm = sealevelmodel(varargin) % {{{
+
+			if nargin==0, 
+				slm=setdefaultparameters(slm);
+			else 
+				slm=setdefaultparameters(slm);
+
+				options=pairoptions(varargin{:}); 
+			
+				%recover all the icecap models: 
+				slm.icecaps=getfieldvalues(options,'ice_cap',{}); 
+				
+				%recover the earth model:
+				slm.earth = getfieldvalue(options,'earth');
+			end
+		end
+		%}}}
+		function checkconsistency(slm,solutiontype) % {{{
+
+			%is the coupler turned on? 
+			for i=1:length(slm.icecaps),
+				if slm.icecaps{i}.transient.iscoupler==0,
+					error(sprintf('sealevelmodel checkconsistenty error:  icecap model %s should have the transient coupler option turned on!',slm.icecaps{i}.miscellaneous.name));
+				end
+			end
+				
+			if slm.earth.transient.iscoupler==0,
+				error('sealevelmodel checkconsistenty error:  earth model should have the transient coupler option turned on!');
+			end
+
+			%check that the transition vectors have the right size: 
+			for i=1:length(slm.icecaps),
+				if slm.icecaps{i}.mesh.numberofvertices ~= length(slm.earth.slr.transitions{i}),
+					error('sealevelmodel checkconsistenty issue with size of transition vectors!');
+				end
+			end
+
+
+		end
+		%}}}
+		function slm = setdefaultparameters(slm) % {{{
+
+			%initialize subclasses
+			slm.icecaps           = {};
+			slm.earth             = {};
+			slm.miscellaneous     = miscellaneous();
+			slm.settings          = settings();
+			slm.private           = private();
+			slm.cluster           = generic();
+		end
+		%}}}
+		function disp(self) % {{{
+			disp(sprintf('%19s: %-22s -- %s','icecaps'         ,['[' num2str(length(self.icecaps)) 'x1 ' class(self.icecaps) ']'],'ice caps'));
+			disp(sprintf('%19s: %-22s -- %s','earth'           ,['[1x1 ' class(self.earth) ']'],'earth'));
+			disp(sprintf('%19s: %-22s -- %s','settings'        ,['[1x1 ' class(self.settings) ']'],'settings properties'));
+			disp(sprintf('%19s: %-22s -- %s','cluster'         ,['[1x1 ' class(self.cluster) ']'],'cluster parameters (number of cpus...)'));
+			disp(sprintf('%19s: %-22s -- %s','miscellaneous'   ,['[1x1 ' class(self.miscellaneous) ']'],'miscellaneous fields'));
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/settings.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/settings.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/settings.js	(revision 21239)
@@ -0,0 +1,87 @@
+//SETTINGS class definition
+//
+//   Usage:
+//      settings=new settings();
+
+function settings (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		//are we short in memory ? (0 faster but requires more memory)
+		this.lowmem=0;
+
+		//i/o:
+		this.io_gather=1;
+
+		//results frequency by default every step
+		this.output_frequency=1;
+
+		//checkpoints frequency, by default never: 
+		this.recording_frequency=0;
+
+		//this option can be activated to load automatically the results
+		//onto the model after a parallel run by waiting for the lock file
+		//N minutes that is generated once the solution has converged
+		//0 to deactivate
+		this.waitonlock=Infinity;
+
+		//upload options: 
+		upload_port         = 0;
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   settings class echo:'));
+		
+		fielddisplay(this,'results_on_nodes','results are output for all the nodes of each element');
+		fielddisplay(this,'io_gather','I/O gathering strategy for result outputs (default 1)');
+		fielddisplay(this,'lowmem','is the memory limited ? (0 or 1)');
+		fielddisplay(this,'output_frequency','frequency at which results are saved in all solutions with multiple time_steps');
+		fielddisplay(this,'recording_frequency','frequency at which the runs are being recorded, allowing for a restart');
+		fielddisplay(this,'waitonlock','maximum number of minutes to wait for batch results (NaN to deactivate)');
+		fielddisplay(this,'upload_server','server hostname where model should be uploaded');
+		fielddisplay(this,'upload_path','path on server where model should be uploaded');
+		fielddisplay(this,'upload_login','server login');
+		fielddisplay(this,'upload_port','port login (default is 0)');
+		fielddisplay(this,'upload_filename','unique id generated when uploading the file to server');
+
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "settings";
+
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { // {{{
+
+			checkfield(md,'fieldname','settings.results_on_nodes','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','settings.io_gather','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','settings.lowmem','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','settings.output_frequency','numel',[1],'>=',1);
+			checkfield(md,'fieldname','settings.recording_frequency','numel',[1],'>=',0);
+			checkfield(md,'fieldname','settings.waitonlock','numel',[1]);
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','results_on_nodes','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','io_gather','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','lowmem','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','output_frequency','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','recording_frequency','format','Integer');
+			if (this.waitonlock>0) WriteData(fid,prefix,'name','md.settings.waitonlock','data',true,'format','Boolean');
+			else WriteData(fid,prefix,'name','md.settings.waitonlock','data',false,'format','Boolean');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.results_on_nodes    = 0;
+	this.io_gather           = 0;
+	this.lowmem              = 0;
+	this.output_frequency    = 0;
+	this.recording_frequency   = 0;
+	this.waitonlock          = 0;
+	this.upload_server       = '';
+	this.upload_path         = '';
+	this.upload_login        = '';
+	this.upload_port         = 0;
+	this.upload_filename     = '';
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/settings.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/settings.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/settings.m	(revision 21239)
@@ -0,0 +1,103 @@
+%SETTINGS class definition
+%
+%   Usage:
+%      settings=settings();
+
+classdef settings
+	properties (SetAccess=public) 
+		results_on_nodes    = 0;
+		io_gather           = 0;
+		lowmem              = 0;
+		output_frequency    = 0;
+		recording_frequency   = 0;
+		waitonlock          = 0;
+		upload_server       = '';
+		upload_path         = '';
+		upload_login        = '';
+		upload_port         = 0;
+		upload_filename     = '';
+	end
+	methods
+		function self = settings(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%are we short in memory ? (0 faster but requires more memory)
+			self.lowmem=0;
+
+			%i/o:
+			self.io_gather=1;
+
+			%results frequency by default every step
+			self.output_frequency=1;
+
+			%checkpoints frequency, by default never: 
+			self.recording_frequency=0;
+
+			%this option can be activated to load automatically the results
+			%onto the model after a parallel run by waiting for the lock file
+			%N minutes that is generated once the solution has converged
+			%0 to deactivate
+			self.waitonlock=Inf;
+
+			%upload options: 
+			upload_port         = 0;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','settings.results_on_nodes','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','settings.io_gather','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','settings.lowmem','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','settings.output_frequency','numel',[1],'>=',1);
+			md = checkfield(md,'fieldname','settings.recording_frequency','numel',[1],'>=',0);
+			md = checkfield(md,'fieldname','settings.waitonlock','numel',[1]);
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   general settings parameters:'));
+
+			fielddisplay(self,'results_on_nodes','results are output for all the nodes of each element');
+			fielddisplay(self,'io_gather','I/O gathering strategy for result outputs (default 1)');
+			fielddisplay(self,'lowmem','is the memory limited ? (0 or 1)');
+			fielddisplay(self,'output_frequency','frequency at which results are saved in all solutions with multiple time_steps');
+			fielddisplay(self,'recording_frequency','frequency at which the runs are being recorded, allowing for a restart');
+			fielddisplay(self,'waitonlock','maximum number of minutes to wait for batch results (NaN to deactivate)');
+			fielddisplay(self,'upload_server','server hostname where model should be uploaded');
+			fielddisplay(self,'upload_path','path on server where model should be uploaded');
+			fielddisplay(self,'upload_login','server login');
+			fielddisplay(self,'upload_port','port login (default is 0)');
+			fielddisplay(self,'upload_filename','unique id generated when uploading the file to server');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','results_on_nodes','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','io_gather','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','lowmem','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','output_frequency','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','recording_frequency','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','waitonlock','data',self.waitonlock>0,'format','Boolean');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.settings.results_on_nodes'],self.results_on_nodes);
+			writejsdouble(fid,[modelname '.settings.io_gather'],self.io_gather);
+			writejsdouble(fid,[modelname '.settings.lowmem'],self.lowmem);
+			writejsdouble(fid,[modelname '.settings.output_frequency'],self.output_frequency);
+			writejsdouble(fid,[modelname '.settings.recording_frequency'],self.recording_frequency);
+			writejsdouble(fid,[modelname '.settings.waitonlock'],self.waitonlock);
+			writejsstring(fid,[modelname '.settings.upload_server'],self.upload_server);
+			writejsstring(fid,[modelname '.settings.upload_path'],self.upload_path);
+			writejsstring(fid,[modelname '.settings.upload_login'],self.upload_login);
+			writejsdouble(fid,[modelname '.settings.upload_port'],self.upload_port);
+			writejsstring(fid,[modelname '.settings.upload_filename'],self.upload_filename);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/settings.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/settings.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/settings.py	(revision 21239)
@@ -0,0 +1,79 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+class settings(object):
+	"""
+	SETTINGS class definition
+
+	   Usage:
+	      settings=settings();
+	"""
+
+	def __init__(self): # {{{
+		self.results_on_nodes    = 0
+		self.io_gather           = 0
+		self.lowmem              = 0
+		self.output_frequency    = 0
+		self.recording_frequency    = 0
+		self.waitonlock          = 0
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   general settings parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"results_on_nodes","results are output for all the nodes of each element"))
+		string="%s\n%s"%(string,fielddisplay(self,"io_gather","I/O gathering strategy for result outputs (default 1)"))
+		string="%s\n%s"%(string,fielddisplay(self,"lowmem","is the memory limited ? (0 or 1)"))
+		string="%s\n%s"%(string,fielddisplay(self,"output_frequency","frequency at which results are saved in all solutions with multiple time_steps"))
+		string="%s\n%s"%(string,fielddisplay(self,"recording_frequency","frequency at which the runs are being recorded, allowing for a restart"))
+		string="%s\n%s"%(string,fielddisplay(self,"waitonlock","maximum number of minutes to wait for batch results, or return 0"))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#are we short in memory ? (0 faster but requires more memory)
+		self.lowmem=0
+
+		#i/o:
+		self.io_gather=1
+
+		#results frequency by default every step
+		self.output_frequency=1
+
+		#checkpoints frequency, by default never: 
+		self.recording_frequency=0
+
+
+		#this option can be activated to load automatically the results
+		#onto the model after a parallel run by waiting for the lock file
+		#N minutes that is generated once the solution has converged
+		#0 to deactivate
+		self.waitonlock=2**31-1
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		md = checkfield(md,'fieldname','settings.results_on_nodes','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','settings.io_gather','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','settings.lowmem','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','settings.output_frequency','numel',[1],'>=',1)
+		md = checkfield(md,'fieldname','settings.recording_frequency','numel',[1],'>=',0)
+		md = checkfield(md,'fieldname','settings.waitonlock','numel',[1])
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'object',self,'fieldname','results_on_nodes','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','io_gather','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','lowmem','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','output_frequency','format','Integer')
+		WriteData(fid,prefix,'object',self,'fieldname','recording_frequency','format','Integer')
+		if self.waitonlock>0:
+			WriteData(fid,prefix,'name','md.settings.waitonlock','data',True,'format','Boolean');
+		else:
+			WriteData(fid,prefix,'name','md.settings.waitonlock','data',False,'format','Boolean');
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/slr.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/slr.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/slr.js	(revision 21239)
@@ -0,0 +1,152 @@
+//SLR class definition
+//
+//   Usage:
+//      slr=slr();
+
+function slr(){
+	//methods
+		this.setdefaultparameters = function (){ //{{{
+		
+		//Convergence criterion: absolute, relative and residual
+		this.reltol=NaN; //default
+		this.abstol=0.001; //1 mm of sea level rise
+
+		//maximum of non-linear iterations.
+		this.maxiter=10;
+
+		//computational flags: 
+		this.rigid=1;
+		this.elastic=1;
+		this.rotation=1;
+		
+		//tidal love numbers: 
+		this.tide_love_h=0.6149; //degree 2
+		this.tide_love_k=0.3055; //degree 2
+
+		//numerical discretization accuracy
+		this.degacc=.01;
+		
+		//output default:
+		this.requested_outputs=['default'];
+
+		//transitions should be a cell array of vectors: 
+		this.transitions=[];
+		
+		}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			//Early return
+			if(ArrayAnyEqual(ArrayIsMember('SealevelriseAnalysis',analyses),0))return;
+			
+			md = checkfield(md,'fieldname','slr.deltathickness','NaN',1,'Inf',1,'size',[md.mesh.numberofelements, 1]);
+			md = checkfield(md,'fieldname','slr.sealevel','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			md = checkfield(md,'fieldname','slr.love_h','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.love_k','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.love_l','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.tide_love_h','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.tide_love_k','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.reltol','size',[1, 1]);
+			md = checkfield(md,'fieldname','slr.abstol','size',[1, 1]);
+			md = checkfield(md,'fieldname','slr.maxiter','size',[1, 1],'>=',1);
+			md = checkfield(md,'fieldname','slr.degacc','size',[1, 1],'>=',1e-10);
+			md = checkfield(md,'fieldname','slr.requested_outputs','stringrow',1);
+			
+			//check that love numbers are provided at the same level of accuracy: 
+			if (this.love_h.length != this.love_k.length || this.love_h.length != this.love_l.length){
+				throw Error('slr error message: love numbers should be provided at the same level of accuracy');
+			}
+
+		} // }}}
+		this.defaultoutputs = function(md){ // {{{
+			return ['Sealevel'];
+		}//}}}
+		this.classname= function(){// {{{
+			return "slr";
+		}// }}}
+		this.disp= function(){// {{{
+			
+		console.log(sprintf('   Sealevelrise solution parameters:'));
+
+		fielddisplay(this,'deltathickness','thickness change (main loading of the slr solution core [m]');
+		fielddisplay(this,'sealevel','current sea level (prior to computation) [m]');
+		fielddisplay(this,'reltol','sea level rise relative convergence criterion, (default, NaN: not applied)');
+		fielddisplay(this,'abstol','sea level rise absolute convergence criterion, NaN: not applied');
+		fielddisplay(this,'maxiter','maximum number of nonlinear iterations');
+		fielddisplay(this,'love_h','load Love number for radial displacement');
+		fielddisplay(this,'love_k','load Love number for gravitational potential perturbation');
+		fielddisplay(this,'love_l','load Love number for horizontal displacements'); 
+		fielddisplay(this,'tide_love_h','tidal love number (degree 2)');
+		fielddisplay(this,'tide_love_k','tidal love number (degree 2)');
+		fielddisplay(this,'rigid','rigid earth graviational potential perturbation');
+		fielddisplay(this,'elastic','elastic earth graviational potential perturbation');
+		fielddisplay(this,'rotation','rotational earth potential perturbation');
+		fielddisplay(this,'degacc',"accuracy (default .01 deg) for numerical discretization of the Green's functions");
+		fielddisplay(this,'transitions','indices into parts of the mesh that will be icecaps');
+		fielddisplay(this,'requested_outputs','additional outputs requested');
+		} //}}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			WriteData(fid,prefix,'object',this,'fieldname','deltathickness','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',this,'fieldname','sealevel','mattype',1,'format','DoubleMat','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',this,'fieldname','reltol','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','abstol','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','love_h','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','love_k','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','love_l','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','tide_love_h','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','tide_love_k','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','rigid','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','elastic','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','rotation','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','degacc','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','transitions','format','MatArray');
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}
+			WriteData(fid,prefix,'data',outputs,'name','md.slr.requested_outputs','format','StringArray');
+		}//}}}
+		this.fix=function() { //{{{
+			this.deltathickness=NullFix(this.deltathickness,NaN);
+			this.sealevel=NullFix(this.sealevel,NaN);
+			this.maxiter=NullFix(this.maxiter,NaN);
+			this.reltol=NullFix(this.reltol,NaN);
+			this.abstol=NullFix(this.abstol,NaN);
+			this.love_h=NullFix(this.love_h,NaN);
+			this.love_k=NullFix(this.love_k,NaN);
+			this.love_l=NullFix(this.love_l,NaN);
+			this.tide_love_h=NullFix(this.tide_love_h,NaN);
+			this.tide_love_k=NullFix(this.tide_love_k,NaN);
+			this.rigid=NullFix(this.rigid,NaN);
+			this.elastic=NullFix(this.elastic,NaN);
+			this.rotation=NullFix(this.rotation,NaN);
+			this.degacc=NullFix(this.degacc,NaN);
+		}//}}}
+	//properties
+	//{{{
+	this.deltathickness = NaN;
+	this.sealevel       = NaN; 
+	this.maxiter        = 0;
+	this.reltol         = 0;
+	this.abstol         = 0;
+	this.love_h         = 0; //provided by PREM model
+	this.love_k         = 0; //idam
+	this.love_l         = 0; //idam
+	this.tide_love_h    = 0; 
+	this.tide_love_k    = 0; 
+	this.rigid          = 0;
+	this.elastic        = 0;
+	this.rotation       = 0;
+	this.degacc         = 0;
+	this.requested_outputs = [];
+	this.transitions    = [];
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/slr.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/slr.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/slr.m	(revision 21239)
@@ -0,0 +1,163 @@
+%SLR class definition
+%
+%   Usage:
+%      slr=slr();
+
+classdef slr
+	properties (SetAccess=public) 
+		deltathickness = NaN;
+		sealevel       = NaN; 
+		maxiter        = 0;
+		reltol         = 0;
+		abstol         = 0;
+		love_h         = 0; %provided by PREM model
+		love_k         = 0; %ideam
+		love_l         = 0; %ideam
+		tide_love_k    = 0; %ideam
+		tide_love_h    = 0; %ideam
+		rigid          = 0;
+		elastic        = 0;
+		rotation       = 0;
+		degacc         = 0;
+		requested_outputs      = {};
+		transitions    = {};
+	end
+	methods
+		function self = slr(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		
+		%Convergence criterion: absolute, relative and residual
+		self.reltol=NaN; %default
+		self.abstol=0.001; %1 mm of sea level rise
+
+		%maximum of non-linear iterations.
+		self.maxiter=10;
+
+		%computational flags: 
+		self.rigid=1;
+		self.elastic=1;
+		self.rotation=1;
+
+		%tidal love numbers: 
+		self.tide_love_h=0.6149; %degree 2
+		self.tide_love_k=0.3055; % degree 2
+
+		%numerical discretization accuracy
+		self.degacc=.01;
+		
+		%output default:
+		self.requested_outputs={'default'};
+
+		%transitions should be a cell array of vectors: 
+		self.transitions={};
+		
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ismember('SealevelriseAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','slr.deltathickness','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','slr.sealevel','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','slr.love_h','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.love_k','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.love_l','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.tide_love_h','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.tide_love_k','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.reltol','size',[1 1]);
+			md = checkfield(md,'fieldname','slr.abstol','size',[1 1]);
+			md = checkfield(md,'fieldname','slr.maxiter','size',[1 1],'>=',1);
+			md = checkfield(md,'fieldname','slr.degacc','size',[1 1],'>=',1e-10);
+			md = checkfield(md,'fieldname','slr.requested_outputs','stringrow',1);
+
+			%check that love numbers are provided at the same level of accuracy: 
+			if (size(self.love_h,1)~=size(self.love_k,1) | size(self.love_h,1)~=size(self.love_l,1)),
+				error('slr error message: love numbers should be provided at the same level of accuracy');
+			end
+
+			%cross check that whereever we have an ice load, the mask is <0 on each vertex: 
+			pos=find(self.deltathickness);
+			maskpos=md.mask.ice_levelset(md.mesh.elements(pos,:)); 
+			[els,vertices]=find(maskpos>0);
+			if length(els),
+				error('slr checkconsistency fail: there are elements with ice loads where some vertices are not on the ice!');
+			end
+
+		end % }}}
+		function list=defaultoutputs(self,md) % {{{
+			list = {'Sealevel'};
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   slr parameters:'));
+
+			fielddisplay(self,'deltathickness','thickness change (main loading of the slr solution core [m]');
+			fielddisplay(self,'sealevel','current sea level (prior to computation) [m]');
+			fielddisplay(self,'reltol','sea level rise relative convergence criterion, (default, NaN: not applied)');
+			fielddisplay(self,'abstol','sea level rise absolute convergence criterion, NaN: not applied');
+			fielddisplay(self,'maxiter','maximum number of nonlinear iterations');
+			fielddisplay(self,'love_h','load Love number for radial displacement');
+			fielddisplay(self,'love_k','load Love number for gravitational potential perturbation');
+			fielddisplay(self,'love_l','load Love number for horizontal displacements');
+			fielddisplay(self,'tide_love_k','tidal load Love number (deg 2)');
+			fielddisplay(self,'tide_love_h','tidal load Love number (deg 2)');
+			fielddisplay(self,'rotation','earth rotational potential perturbation');
+			fielddisplay(self,'rigid','rigid earth graviational potential perturbation');
+			fielddisplay(self,'elastic','elastic earth graviational potential perturbation');
+			fielddisplay(self,'degacc','accuracy (default .01 deg) for numerical discretization of the Green''s functions');
+			fielddisplay(self,'transitions','indices into parts of the mesh that will be icecaps');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','deltathickness','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'fieldname','sealevel','mattype',1,'format','DoubleMat','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','reltol','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','abstol','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','love_h','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','love_k','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','love_l','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','tide_love_h','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','tide_love_k','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','rigid','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','elastic','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','rotation','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','degacc','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','transitions','format','MatArray');
+			
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.slr.requested_outputs','format','StringArray');
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.slr.deltathickness'],self.deltathickness);
+			writejs1Darray(fid,[modelname '.slr.sealevel'],self.sealevel);
+			writejsdouble(fid,[modelname '.slr.maxiter'],self.maxiter);
+			writejsdouble(fid,[modelname '.slr.reltol'],self.reltol);
+			writejsdouble(fid,[modelname '.slr.abstol'],self.abstol);
+			writejs1Darray(fid,[modelname '.slr.love_h'],self.love_h);
+			writejs1Darray(fid,[modelname '.slr.love_k'],self.love_k);
+			writejs1Darray(fid,[modelname '.slr.love_l'],self.love_l);
+			writejsdouble(fid,[modelname '.slr.tide_love_k'],self.tide_love_k);
+			writejsdouble(fid,[modelname '.slr.tide_love_h'],self.tide_love_h);
+			writejsdouble(fid,[modelname '.slr.rigid'],self.rigid);
+			writejsdouble(fid,[modelname '.slr.rotation'],self.rotation);
+			writejsdouble(fid,[modelname '.slr.elastic'],self.elastic);
+			writejsdouble(fid,[modelname '.slr.degacc'],self.degacc);
+			writejscellstring(fid,[modelname '.slr.requested_outputs'],self.requested_outputs);
+			writejscellarray(fid,[modelname '.slr.transitions'],self.transitions);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/slr.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/slr.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/slr.py	(revision 21239)
@@ -0,0 +1,139 @@
+from fielddisplay import fielddisplay
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class slr(object):
+	"""
+	SLR class definition
+	
+		Usage:
+		  slr=slr();
+	"""
+	
+	def __init__(self): # {{{
+		self.deltathickness    = NaN
+		self.sealevel          = NaN
+		self.maxiter           = 0
+		self.reltol            = 0
+		self.abstol            = 0
+		self.love_h            = 0 #provided by PREM model()
+		self.love_k            = 0 #ideam
+		self.love_l            = 0 #ideam
+		self.tide_love_h       = 0
+		self.tide_love_k       = 0
+		self.rigid             = 0
+		self.elastic           = 0
+		self.rotation          = 0
+		self.degacc            = 0
+		self.requested_outputs = []
+		self.transitions       = []
+		
+		#set defaults
+		self.setdefaultparameters()
+		#}}}
+	def __repr__(self): # {{{
+			string='   slr parameters:'
+			string="%s\n%s"%(string,fielddisplay(self,'deltathickness','thickness change (main loading of the slr solution core [m]'))
+			string="%s\n%s"%(string,fielddisplay(self,'reltol','sea level rise relative convergence criterion, (default, NaN: not applied)'))
+			string="%s\n%s"%(string,fielddisplay(self,'abstol','sea level rise absolute convergence criterion, NaN: not applied'))
+			string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of nonlinear iterations'))
+			string="%s\n%s"%(string,fielddisplay(self,'love_h','load Love number for radial displacement'))
+			string="%s\n%s"%(string,fielddisplay(self,'love_k','load Love number for gravitational potential perturbation'))
+			string="%s\n%s"%(string,fielddisplay(self,'love_l','load Love number for horizontal displaements'))
+			string="%s\n%s"%(string,fielddisplay(self,'tide_love_k','tidal load Love number (degree 2)'))
+			string="%s\n%s"%(string,fielddisplay(self,'tide_love_h','tidal load Love number (degree 2)'))
+			string="%s\n%s"%(string,fielddisplay(self,'rigid','rigid earth graviational potential perturbation'))
+			string="%s\n%s"%(string,fielddisplay(self,'elastic','elastic earth graviational potential perturbation'))
+			string="%s\n%s"%(string,fielddisplay(self,'rotation','earth rotational potential perturbation'))
+			string="%s\n%s"%(string,fielddisplay(self,'degacc','accuracy (default .01 deg) for numerical discretization of the Green''s functions'))
+			string="%s\n%s"%(string,fielddisplay(self,'transitions','indices into parts of the mesh that will be icecaps'))
+			string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+
+			return string
+		# }}}
+	def setdefaultparameters(self): # {{{
+		
+		#Convergence criterion: absolute, relative and residual
+		self.reltol=NaN #default
+		self.abstol=0.001 #1 mm of sea level rise
+
+		#maximum of non-linear iterations.
+		self.maxiter=10
+
+		#computational flags: 
+		self.rigid=1
+		self.elastic=1
+		self.rotation=1
+
+		#tidal love numbers: 
+		self.tide_love_h=0.6149; #degree 2
+		self.tide_love_k=0.3055; #degree 2
+
+		#numerical discretization accuracy
+		self.degacc=.01
+		
+		#output default:
+		self.requested_outputs=['default']
+
+		#transitions should be a cell array of vectors: 
+		self.transitions=[]
+
+		#default output
+		self.requested_outputs=['default']
+		return self
+		#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if (solution!='SealevelriseAnalysis'):
+			return md
+
+		md = checkfield(md,'fieldname','slr.deltathickness','NaN',1,'Inf',1,'size',[md.mesh.numberofelements,1])
+		md = checkfield(md,'fieldname','slr.sealevel','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+		md = checkfield(md,'fieldname','slr.love_h','NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','slr.love_k','NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','slr.love_l','NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','slr.tide_love_h','NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','slr.tide_love_k','NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','slr.reltol','size',[1,1])
+		md = checkfield(md,'fieldname','slr.abstol','size',[1,1])
+		md = checkfield(md,'fieldname','slr.maxiter','size',[1,1],'>=',1)
+		md = checkfield(md,'fieldname','slr.degacc','size',[1,1],'>=',1e-10)
+		md = checkfield(md,'fieldname','slr.requested_outputs','stringrow',1)
+
+		#check that love numbers are provided at the same level of accuracy: 
+		if (size(self.love_h,0) != size(self.love_k,0) | size(self.love_h,0) != size(self.love_l,0)):
+			error('slr error message: love numbers should be provided at the same level of accuracy')
+		return md
+	# }}}
+	def defaultoutputs(self,md): # {{{
+		return ['Sealevel']
+	# }}}
+	def marshall(self,prefix,md,fid): # {{{
+		WriteData(fid,prefix,'object',self,'fieldname','deltathickness','format','DoubleMat','mattype',2)
+		WriteData(fid,prefix,'object',self,'fieldname','sealevel','mattype',1,'format','DoubleMat','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'fieldname','reltol','format','Double')
+		WriteData(fid,prefix,'object',self,'fieldname','abstol','format','Double')
+		WriteData(fid,prefix,'object',self,'fieldname','maxiter','format','Integer')
+		WriteData(fid,prefix,'object',self,'fieldname','love_h','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','love_k','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','love_l','format','DoubleMat','mattype',1)
+		WriteData(fid,prefix,'object',self,'fieldname','tide_love_h','format','Double');
+		WriteData(fid,prefix,'object',self,'fieldname','tide_love_k','format','Double');
+		WriteData(fid,prefix,'object',self,'fieldname','rigid','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','elastic','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','rotation','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','degacc','format','Double')
+		WriteData(fid,prefix,'object',self,'fieldname','transitions','format','MatArray')
+	
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,prefix,'data',outputs,'name','md.slr.requested_outputs','format','StringArray')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/snowpack.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/snowpack.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/snowpack.m	(revision 21239)
@@ -0,0 +1,476 @@
+%SNOWPACK class definition
+%
+%   Usage:
+%      snowpack=snowpack();
+
+classdef snowpack
+	properties (SetAccess=public) 
+
+		%first, the configuration fields, by category: 
+		%snowpack:  %{{{
+		snowpack_meas_tss = 0;
+		snowpack_enforce_measured_snow_heights = 0;
+		snowpack_sw_mode = 0;
+		snowpack_incoming_longwave = 0;
+		snowpack_height_of_wind_value = 0;
+		snowpack_height_of_meteo_values = 0;
+		snowpack_neutral = 0;
+		snowpack_roughness_length = 0;
+		snowpack_number_slopes = 0;
+		snowpack_snow_redistribution = 0;
+		snowpack_calculation_step_length = 0;
+		snowpack_change_bc = 0;
+		snowpack_thresh_change_bc = 0;
+		snowpack_snp_soil = 0;
+		snowpack_soil_flux = 0;
+		snowpack_geo_heat = 0;
+		snowpack_canopy = 0;
+		%}}}
+		%snowpackadvanced:  %{{{
+		snowpackadvanced_variant = ''; % use 320 kg m-3 for fixed density
+		snowpackadvanced_hn_density = '';
+		%}}}
+		%general:  %{{{
+		general_pluginpath = '';
+		general_buff_chunk_size = 0;
+		general_buff_before = 0;
+		%}}}
+		%input {{{
+		input_coordsys = '';
+		input_coordparam = '';
+		input_time_zone = 0;
+		input_meteo = '';
+		input_meteopath = '';
+		input_station1 = '';
+		input_snowfile1 = '';
+		%}}}
+		%output {{{
+		output_coordsys = '';
+		output_coordparam = '';
+		output_time_zone = 0;
+		output_meteopath = '';
+		output_experiment = '';
+		output_ts_write = 0;
+		output_ts_start = 0;
+		output_ts_days_between = 0;
+		output_profile = '';
+		output_prof_write = 0;
+		output_prof_start = 0;
+		output_prof_days_between = 0;
+		%}}}
+		%interpolations1d %{{{
+		interpolations1d_window_size = 0; %that is 5 d and 2 h; 1 d = 86400
+		interpolations1d_hnw_resample = '';
+		interpolations1d_hs_resample = '';
+		interpolations1d_tsg_resample = '';
+		interpolations1d_rho_hn_resample = '';
+		interpolations1d_vw_resample = '';
+		interpolations1d_vw_args = '';
+		%}}}
+		%filters {{{
+		filters={'TA::filter1',{'soft',[-20 10]}};
+		filters=NaN;
+		filter_values=NaN;
+
+		filters_ta_filter1 = '';
+		filters_ta_arg1 = NaN;
+		filters_rh_filter1 = '';
+		filters_rh_arg1 = NaN;
+		filters_rh_filter2 = '';
+		filters_rh_arg2 = NaN;
+		filters_iswr_filter1 = '';
+		filters_iswr_arg1 = NaN;
+		filters_iswr_filter2 = '';
+		filters_iswr_arg2 = NaN;
+		filters_rswr_filter1 = '';
+		filters_rswr_arg1 = NaN;
+		filters_rswr_filter2 = '';
+		filters_rswr_arg2 = NaN;
+
+		%for ta between 190 and 280 k;
+		filters_ilwr_filter1 = '';
+		filters_ilwr_arg1 = NaN;
+		filters_ilwr_filter2 = '';
+		filters_ilwr_arg2 = NaN;
+		filters_tss_filter1 = '';
+		filters_tss_arg1 = NaN;
+		filters_tsg_filter1 = '';
+		filters_tsg_arg1 = NaN;
+		filters_vw_filter1 = '';
+		filters_vw_arg1 = NaN;
+		filters_vw_filter2 = '';
+		filters_vw_arg2 = NaN;
+		%}}}
+
+	end
+	methods
+		function self = snowpack(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('snowpack');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		%snowpack:  %{{{
+		self.snowpack_meas_tss = 1;
+		self.snowpack_enforce_measured_snow_heights = 0;
+		self.snowpack_sw_mode = 0;
+		self.snowpack_incoming_longwave = 1;
+		self.snowpack_height_of_wind_value = 12.;
+		self.snowpack_height_of_meteo_values = 12.;
+		self.snowpack_neutral = 0;
+		self.snowpack_roughness_length = 0.002;
+		self.snowpack_number_slopes = 1;
+		self.snowpack_snow_redistribution = 1;
+		self.snowpack_calculation_step_length = 15.0;
+		self.snowpack_change_bc = 0;
+		self.snowpack_thresh_change_bc = -1.0;
+		self.snowpack_snp_soil = 0;
+		self.snowpack_soil_flux = 0;
+		self.snowpack_geo_heat = 0.06;
+		self.snowpack_canopy = 0;
+		%}}}
+		%snowpackadvanced:  %{{{
+		self.snowpackadvanced_variant = 'ANTARCTICA'; % use 320 kg m-3 for fixed density
+		self.snowpackadvanced_hn_density = 'EVENT';
+		%}}}
+		%general:  %{{{
+		self.general_pluginpath = '/usr/local/lib/meteoio/plugins/';
+		self.general_buff_chunk_size = 90;
+		self.general_buff_before = 1.5;
+		%}}}
+		%input {{{
+		self.input_coordsys = 'ch1903';
+		self.input_coordparam = 'null';
+		self.input_time_zone = 8;
+		self.input_meteo = 'smet';
+		self.input_meteopath = './input';
+		self.input_station1 = 'domec.smet';
+		self.input_snowfile1 = 'domec.sno';
+		%}}}
+		%output {{{
+		self.output_coordsys = 'ch1903';
+		self.output_coordparam = 'null';
+		self.output_time_zone = 8;
+		self.output_meteopath = './output';
+		self.output_experiment = 'smet';
+		self.output_ts_write = 1;
+		self.output_ts_start = 0.0;
+		self.output_ts_days_between = 0.04166667;
+		self.output_profile = 'ascii';
+		self.output_prof_write = 1;
+		self.output_prof_start = 0.0;
+		self.output_prof_days_between = 0.04166667;
+		%}}}
+		%interpolations1d %{{{
+		self.interpolations1d_window_size = 439200; %that is 5 d and 2 h; 1 d = 86400
+		self.interpolations1d_hnw_resample = 'none';
+		self.interpolations1d_hs_resample = 'linear';
+		self.interpolations1d_tsg_resample = 'linear';
+		self.interpolations1d_rho_hn_resample = 'none';
+		self.interpolations1d_vw_resample = 'nearest_neighbour';
+		self.interpolations1d_vw_args = 'extrapolate';
+		%}}}
+		%filters {{{
+		self.filters_ta_filter1 = 'min_max';
+		self.filters_ta_arg1 = [190 280];
+		self.filters_rh_filter1 = 'min_max';
+		self.filters_rh_arg1 = [0.01 1.2];
+		self.filters_rh_filter2 = 'min_max';
+		self.filters_rh_arg2 = {'soft' 0.01 1.0};
+		self.filters_iswr_filter1 = 'min_max';
+		self.filters_iswr_arg1 = [-10 1500];
+		self.filters_iswr_filter2 = 'min_max';
+		self.filters_iswr_arg2 = {'soft' 0 1500};
+		self.filters_rswr_filter1 = 'min_max';
+		self.filters_rswr_arg1 = [-10 1500];
+		self.filters_rswr_filter2 = 'min_max';
+		self.filters_rswr_arg2 = {'soft' 0 1500};
+
+		%for ta between 190 and 280 k;
+		self.filters_ilwr_filter1 = 'min_max';
+		self.filters_ilwr_arg1 = [30 355];
+		self.filters_ilwr_filter2 = 'min_max';
+		self.filters_ilwr_arg2 = {'soft' 35 350};
+		self.filters_tss_filter1 = 'min_max';
+		self.filters_tss_arg1 = [180 275];
+		self.filters_tsg_filter1 = 'min_max';
+		self.filters_tsg_arg1 = [200 275];
+		self.filters_vw_filter1 = 'min_max';
+		self.filters_vw_arg1 = [-2 70];
+		self.filters_vw_filter2 = 'min_max';
+		self.filters_vw_arg2 = {'soft' 0 50};
+		%}}}
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%snowpack:  %{{{
+			md=checkfield(md,'fieldname','snowpack.snowpack_meas_tss','values',[0 1]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_enforce_measured_snow_heights','values',[0 1]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_sw_mode','values',[0 1 2]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_incoming_longwave','values',[0 1]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_height_of_wind_value','>=',0);
+			md=checkfield(md,'fieldname','snowpack.snowpack_height_of_meteo_values','>=',0);
+			md=checkfield(md,'fieldname','snowpack.snowpack_neutral','values',[-1 0 1]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_roughness_length','>=',0);
+			md=checkfield(md,'fieldname','snowpack.snowpack_number_slopes','values',[1 3 5 9]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_snow_redistribution','values',[0 1]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_calculation_step_length','>',0);
+			md=checkfield(md,'fieldname','snowpack.snowpack_change_bc','values',[0 1]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_thresh_change_bc','<=',0);
+			md=checkfield(md,'fieldname','snowpack.snowpack_snp_soil','values',[0 1]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_soil_flux','values',[0 1]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_geo_heat','>=',0);
+			md=checkfield(md,'fieldname','snowpack.snowpack_canopy','values',[0 1]);
+			%}}}
+			%snowpackadvanced:  %{{{
+			md=checkfield(md,'fieldname','snowpack.snowpackadvanced_variant','values',{'JAPAN','DEFAULT','ANTARCTICA'});
+			md=checkfield(md,'fieldname','snowpack.snowpackadvanced_hn_density','values',{'PARAMETERIZED','EVENT','MEASURED'});
+			%}}}
+			%general:  %{{{
+			md=checkfield(md,'fieldname','snowpack.general_buff_chunk_size','>',0);
+			md=checkfield(md,'fieldname','snowpack.general_buff_before','>',0);
+			%}}}
+			%input {{{
+			md=checkfield(md,'fieldname','snowpack.input_coordsys','values',{'CH1903','UTM','UPS','PROJ4','LOCAL'});
+			md=checkfield(md,'fieldname','snowpack.input_coordparam','values','null');
+			md=checkfield(md,'fieldname','snowpack.input_time_zone','>',-12,'<',12);
+			md=checkfield(md,'fieldname','snowpack.input_meteo','values',{'BORMA','COSMO','GEOTOP','GRIB','GSN','IMIS','SMET','SNOWPACK'});
+			md=checkfield(md,'fieldname','snowpack.input_meteopath','empty',1);
+			md=checkfield(md,'fieldname','snowpack.input_station1 ','empty',1);
+			md=checkfield(md,'fieldname','snowpack.input_snowfile1','empty',1);
+			%}}}
+			%output {{{
+			md=checkfield(md,'fieldname','snowpack.output_coordsys','values',{'CH1903','UTM','UPS','PROJ4','LOCAL'});
+			md=checkfield(md,'fieldname','snowpack.output_coordparam','values','null');
+			md=checkfield(md,'fieldname','snowpack.output_time_zone','>',-12,'<',12);
+			md=checkfield(md,'fieldname','snowpack.output_meteopath','empty',1);
+			md=checkfield(md,'fieldname','snowpack.output_experiment','empty',1);
+			md=checkfield(md,'fieldname','snowpack.output_ts_write','values',[0 1]);
+			md=checkfield(md,'fieldname','snowpack.output_ts_start','>=',0);
+			md=checkfield(md,'fieldname','snowpack.output_ts_days_between','>=',0);
+			md=checkfield(md,'fieldname','snowpack.output_profile','values',{'ASCII','IMIS','ASCII IMIS'});
+			md=checkfield(md,'fieldname','snowpack.output_prof_write','values',[0 1]);
+			md=checkfield(md,'fieldname','snowpack.output_prof_start','>=',0);
+			md=checkfield(md,'fieldname','snowpack.output_prof_days_between','>=',0);
+			%}}}
+			%interpolations1d %{{{
+			md=checkfield(md,'fieldname','snowpack.interpolations1d_window_size','>',0);
+			md=checkfield(md,'fieldname','snowpack.interpolations1d_hnw_resample','values',{'NONE','NEAREST_NEIGHBOUR','ACCUMULATE','LINEAR'});
+			md=checkfield(md,'fieldname','snowpack.interpolations1d_hs_resample','values',{'NONE','NEAREST_NEIGHBOUR','ACCUMULATE','LINEAR'});
+			md=checkfield(md,'fieldname','snowpack.interpolations1d_tsg_resample','values',{'NONE','NEAREST_NEIGHBOUR','ACCUMULATE','LINEAR'});
+			md=checkfield(md,'fieldname','snowpack.interpolations1d_rho_hn_resample','values',{'NONE','NEAREST_NEIGHBOUR','ACCUMULATE','LINEAR'});
+			md=checkfield(md,'fieldname','snowpack.interpolations1d_vw_resample','values',{'NONE','NEAREST_NEIGHBOUR','ACCUMULATE','LINEAR'});
+			md=checkfield(md,'fieldname','snowpack.interpolations1d_vw_args','values',{'EXTRAPOLATE'});
+			%}}}
+			%filters {{{
+			filter_values={'MIN_MAX','RATE_FILTER1','RATE_FILTER2','UNHEATED_RAIN_GAUGE_FILTER','WMO_UNDERCATCH_FILTER','WMO_UNDERCATCH_FILTER-SIMPLIFIED','UNVENTILLATED_TEMPERATURE_SENSOR','ADD_AN_OFFSET'};
+
+			md=checkfield(md,'fieldname','snowpack.filters_ta_filter1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_ta_filter1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_ta_filter1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_ta_arg1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_ta_arg1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_ta_arg1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_rh_filter1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_rh_filter1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_rh_filter1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_rh_arg1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_rh_arg1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_rh_arg1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_rh_filter2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_rh_filter2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_rh_filter2','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_rh_arg2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_rh_arg2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_rh_arg2','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_iswr_filter1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_iswr_filter1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_iswr_filter1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_iswr_arg1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_iswr_arg1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_iswr_arg1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_iswr_filter2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_iswr_filter2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_iswr_filter2','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_iswr_arg2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_iswr_arg2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_iswr_arg2','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_rswr_filter1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_rswr_filter1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_rswr_filter1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_rswr_arg1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_rswr_arg1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_rswr_arg1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_rswr_filter2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_rswr_filter2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_rswr_filter2','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_rswr_arg2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_rswr_arg2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_rswr_arg2','size',[1 NaN]); end
+
+			%for ta between 190 and 280 k;
+			md=checkfield(md,'fieldname','snowpack.filters_ilwr_filter1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_ilwr_filter1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_ilwr_filter1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_ilwr_arg1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_ilwr_arg1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_ilwr_arg1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_ilwr_filter2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_ilwr_filter2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_ilwr_filter2','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_ilwr_arg2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_ilwr_arg2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_ilwr_arg2','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_tss_filter1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_tss_filter1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_tss_filter1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_tss_arg1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_tss_arg1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_tss_arg1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_tsg_filter1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_tsg_filter1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_tsg_filter1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_tsg_arg1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_tsg_arg1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_tsg_arg1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_vw_filter1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_vw_filter1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_vw_filter1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_vw_arg1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_vw_arg1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_vw_arg1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_vw_filter2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_vw_filter2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_vw_filter2','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_vw_arg2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_vw_arg2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_vw_arg2','size',[1 NaN]); end
+
+			%}}}
+		end % }}}
+		function disp(self) % {{{
+
+			disp(sprintf('   Snowpack solution parameters:'));
+			disp(sprintf('\n	%s','Snowpack parameters:')); % {{{
+			fielddisplay(self,'snowpack_meas_tss',{'A measured surface temperature is available and can be reliably ','used for various consistency tests (it needs to be set to true if enabling CHANGE_BC) (0 or 1)'});
+			fielddisplay(self,'snowpack_enforce_measured_snow_heights','Input mode by which a measurement of snow depth is used to drive the snow cover mass balance (0 or 1)');
+			fielddisplay(self,'snowpack_sw_mode',{'Define the shortwave radiation input:',...
+				'0 Incoming shortwave radiation is measured and albedo estimated by the model',...
+				'1 Reflected shortwave radiation is available as input and albedo is estimated by the model (IMIS standard)',...
+				'2 Incoming and reflected shortwave radiation are both measured and the albedo is estimated from both measurements subject to plausibility checks.'});
+			fielddisplay(self,'snowpack_incoming_longwave','Use the provided incoming long wave on the virtual slopes? (0 or 1)');
+			fielddisplay(self,'snowpack_height_of_wind_value',{'The instrument height (or model layer height) for wind input data; note that height ',...
+				'is above ground for a standard SNOWPACK application but above surface (snow or ground) for Alpine3D applications '});
+			fielddisplay(self,'snowpack_height_of_meteo_values',{'The instrument height (or model layer height) for meteorological input data except for wind,',...
+				'which may be at a different height; note that height is above ground for a standard SNOWPACK ',...
+				'application but above surface (snow or ground) for Alpine3D applications. '});
+			fielddisplay(self,'snowpack_neutral',{'Select the atmospheric stability correction model:',...
+				'-1 use a simplified Richardson number stability correction',...
+				'0 assume standard Monin-Obukhov bulk formulation for surface exchange iteration with Paulson, Stearns and Weidner (can be used with BC_CHANGE=0)',...
+				'1 force Monin-Obukhov formulation to assume neutral conditions regardless of the actual stratification; it has been shown to work well in ',...
+				'complex terrain settings. It should be used with BC_CHANGE=1, i.e., Dirichlet /* but also is recommended with Neumann b.c., i.e., BC_CHANGE=0.'});
+			fielddisplay(self,'snowpack_roughness_length',{'Aerodynamic roughness length as a parameter for the Monin-Obukhov bulk formulation;',...
+				'A typical value for complex terrain is 0.01 m and for snow covered flat sites 0.001 m. '});
+			fielddisplay(self,'snowpack_number_slopes',{'Based on meteorological input from a (flat field) automatic station or numerical weather model,',...
+				'up to 8 expositions can be calculated in addition to the flat field if the corresponding *.sno files are provided. For example,',...
+				'if you provide a flat field *.snow file (mandatory), which is named KLO3.sno and you want 4 slopes to be calculated the corresponding',...
+				'slope files should be named KLO21.sno, ...,KLO24.sno '});
+			fielddisplay(self,'snowpack_snow_redistribution',{'Specifies if redistribution of snow is allowed from (upwind) expositions to lee slopes.',...
+				'In case just the flat field is calculated, snow erosion is enabled but only for "ENFORCE_MEASURED_SNOW_HEIGHTS".'});
+				fielddisplay(self,'snowpack_calculation_step_length',{'Internal time step (in minutes) used for model simulation. Please note that this MUST ',...
+				'be the same as HNW::accumulate (the latter being in seconds) if re-acumulating precipitation, otherwise it would lead to wrong results.'});
+			fielddisplay(self,'snowpack_change_bc',{'Use measured surface temperature as Dirichlet temperature BC for sub-freezing snowpacks and switch to ',...
+			'Neumann only for melting snowpacks. If set to false, assumes Neumann boundary conditions.'});
+			fielddisplay(self,'snowpack_thresh_change_bc','Threshold value (small number below freezing), which switches from Dirichlet to Neumann BCs if CHANGE_BC is selected');
+			fielddisplay(self,'snowpack_snp_soil','Soil layers as defined by the *.sno files are included in the simulation');
+			fielddisplay(self,'snowpack_soil_flux','Assume that the lower temperature boundary condition is given by GEO_HEAT (Neumann) and not by a measured temperature');
+			fielddisplay(self,'snowpack_geo_heat','Constant geothermal heat flux at great) depth W m-2): Lower flux boundary condition for temperature equation if BC is Neumann');
+			fielddisplay(self,'snowpack_canopy','Switch to tell the model that canopy is present (note that Canopy parameters should then be provided in the *.sno file)');
+			% }}}
+			disp(sprintf('\n	%s','Snowpackadvanced parameters:')); % {{{
+			fielddisplay(self,'snowpackadvanced_variant','variant selection (includes a choice of specific models, DEFAULT, ANTARCTICA and JAPAN )'); % use 320 kg m-3 for fixed density
+			fielddisplay(self,'snowpackadvanced_hn_density',{'Fixed value to be used as new snow density if a constant density model is chosen, otherwise the choices are "PARAMETERIZED" "EVENT" "MEASURED"'});
+			% }}}
+			disp(sprintf('\n	%s','General parameters:')); % {{{
+			fielddisplay(self,'general_pluginpath','');
+			fielddisplay(self,'general_buff_chunk_size','Size in days of a chunk of data to read at once.');
+			fielddisplay(self,'general_buff_before','Alternate way of buffer centering: When rebuffering, the new date will be located BUFF_BEFORE days from the beginning of the buffer (therefore, it takes a value in days). ');
+			% }}}
+			disp(sprintf('\n	%s','Input  parameter:')); % {{{
+			fielddisplay(self,'input_coordsys','coordinates in the Swiss Grid (http://geomatics.ladetto.ch/ch1903_wgs84_de.pdf). One of CH1903,UTM,UPS,PROJ4 or LOCAL');
+			fielddisplay(self,'input_coordparam',' ');
+			fielddisplay(self,'input_time_zone',' ');
+			fielddisplay(self,'input_meteo','plugin for METEO data (one of BORMA,COSMO,GEOTOP,GRIB,GS,IMIS,SMET,SNOWPACK');
+			fielddisplay(self,'input_meteopath','string containing the path to the xml files.');
+			fielddisplay(self,'input_station1','Meteorology file for station number #');
+			fielddisplay(self,'input_snowfile1','File name for the initial snow profile for station number #');
+			% }}}
+			disp(sprintf('\n	%s','Output parameters:')); % {{{
+			fielddisplay(self,'output_coordsys','Coordinates in the Swiss Grid http://geomatics.ladetto.ch/ch1903_wgs84_de.pdf. One of CH1903,UTM,UPS,PROJ4 or LOCAL ');
+			fielddisplay(self,'output_coordparam','');
+			fielddisplay(self,'output_time_zone','');
+			fielddisplay(self,'output_meteopath','Path to the outputs (this path MUST exist, it won''t be created)');
+			fielddisplay(self,'output_experiment','Option to give an additional simulation specific output name to the run in addition to "STATION_NAME"');
+			fielddisplay(self,'output_ts_write','Write meteo data out? (0 or 1)');
+			fielddisplay(self,'output_ts_start','When to start writing meteo data out (offset, in days)');
+			fielddisplay(self,'output_ts_days_between','How often to write meteo data out (in days: 3 hours=.125, 1 hour=4.1666e-2)');
+			fielddisplay(self,'output_profile','How to write the profiles (default: ASCII, choice is ASCII,IMIS or ASCII IMIS)');
+)');
+			fielddisplay(self,'output_prof_write','Write profile data out? (0 or 1) ');
+			fielddisplay(self,'output_prof_start','When to start writing profile data out (offset, in days)');
+			fielddisplay(self,'output_prof_days_between','How often to write profile data out (in days: 3 hours=.125, 1 hour=4.1666e-2)');
+			% }}}
+			disp(sprintf('\n	%s','Interpolations1d parameters:')); % {{{
+			fielddisplay(self,'interpolations1d_window_size','Affects resampling: expresses (in seconds) how far a valid point can be searched for when re-interpolating a missing value'); 
+			fielddisplay(self,'interpolations1d_hnw_resample','NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR');
+ ');
+			fielddisplay(self,'interpolations1d_hs_resample','Mean average processing. The mean average filter returns the mean value of all values within a user given time window. (NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR)');
+			fielddisplay(self,'interpolations1d_tsg_resample','Mean average processing. The mean average filter returns the mean value of all values within a user given time window.(NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR)');
+			fielddisplay(self,'interpolations1d_rho_hn_resample','(NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR)');
+			fielddisplay(self,'interpolations1d_vw_resample','(NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR)');
+			fielddisplay(self,'interpolations1d_vw_args','default nothing, otherwise, ''extrapolcate''');
+			% }}}
+			disp(sprintf('\n	%s','Filters parameters:')); % {{{
+			fielddisplay(self,'filters_ta_filter1',' ');
+			fielddisplay(self,'filters_ta_arg1','');
+			fielddisplay(self,'filters_rh_filter1',' ');
+			fielddisplay(self,'filters_rh_arg1','');
+			fielddisplay(self,'filters_rh_filter2',' ');
+			fielddisplay(self,'filters_rh_arg2','');
+			fielddisplay(self,'filters_iswr_filter1',' ');
+			fielddisplay(self,'filters_iswr_arg1','');
+			fielddisplay(self,'filters_iswr_filter2',' ');
+			fielddisplay(self,'filters_iswr_arg2','');
+			fielddisplay(self,'filters_rswr_filter1',' ');
+			fielddisplay(self,'filters_rswr_arg1','');
+			fielddisplay(self,'filters_rswr_filter2',' ');
+			fielddisplay(self,'filters_rswr_arg2','');
+
+			%for ta between 190 and 280 k;
+			fielddisplay(self,'filters_ilwr_filter1',' ');
+			fielddisplay(self,'filters_ilwr_arg1','');
+			fielddisplay(self,'filters_ilwr_filter2',' ');
+			fielddisplay(self,'filters_ilwr_arg2','');
+			fielddisplay(self,'filters_tss_filter1',' ');
+			fielddisplay(self,'filters_tss_arg1','');
+			fielddisplay(self,'filters_tsg_filter1',' ');
+			fielddisplay(self,'filters_tsg_arg1','');
+			fielddisplay(self,'filters_vw_filter1',' ');
+			fielddisplay(self,'filters_vw_arg1','');
+			fielddisplay(self,'filters_vw_filter2',' ');
+			fielddisplay(self,'filters_vw_arg2','');
+			% }}}
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','restol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','reltol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','abstol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','isnewton','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','FSreconditioning','format','Double');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','viscosity_overshoot','format','Double');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','shelf_dampening','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','vertex_pairing','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','penalty_factor','format','Double');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','rift_penalty_lock','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','rift_penalty_threshold','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','referential','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','requested_outputs','format','StringArray');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/spheremesh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/spheremesh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/spheremesh.m	(revision 21239)
@@ -0,0 +1,96 @@
+%SPHEREMESH class definition
+%
+%   Usage:
+%      spheremesh=spheremesh();
+
+classdef spheremesh
+	properties (SetAccess=public) 
+		x                           = NaN;
+		y                           = NaN;
+		z                           = NaN;
+		r                           = NaN;
+		theta                       = NaN;
+		phi                         = NaN
+		elements                    = NaN
+		numberoflayers              = 0;
+		numberofelements            = 0;
+		numberofvertices            = 0;
+
+		vertexconnectivity          = NaN
+		elementconnectivity         = NaN
+		average_vertex_connectivity = 0;
+	end
+	methods
+		function self = spheremesh(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%the connectivity is the avergaded number of nodes linked to a
+			%given node through an edge. This connectivity is used to initially
+			%allocate memory to the stiffness matrix. A value of 16 seems to
+			%give a good memory/time ration. This value can be checked in
+			%trunk/test/Miscellaneous/runme.m
+			self.average_vertex_connectivity=25;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','spheremesh.x','NaN',1,'Inf',1,'size',[md.spheremesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','spheremesh.y','NaN',1,'Inf',1,'size',[md.spheremesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','spheremesh.z','NaN',1,'Inf',1,'size',[md.spheremesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','spheremesh.r','NaN',1,'Inf',1,'size',[md.spheremesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','spheremesh.theta','NaN',1,'Inf',1,'size',[md.spheremesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','spheremesh.phi','NaN',1,'Inf',1,'size',[md.spheremesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','spheremesh.elements','NaN',1,'Inf',1,'>',0,'values',1:md.spheremesh.numberofvertices);
+			md = checkfield(md,'fieldname','spheremesh.elements','size',[md.spheremesh.numberofelements 3]);
+			if any(~ismember(1:md.spheremesh.numberofvertices,sort(unique(md.spheremesh.elements(:)))));
+				md = checkmessage(md,'orphan nodes have been found. Check the spheremesh outline');
+			end
+			md = checkfield(md,'fieldname','spheremesh.numberoflayers','>=',0);
+			md = checkfield(md,'fieldname','spheremesh.numberofelements','>',0);
+			md = checkfield(md,'fieldname','spheremesh.numberofvertices','>',0);
+			md = checkfield(md,'fieldname','spheremesh.elementconnectivity','size',[md.spheremesh.numberofelements 3],'NaN',1,'Inf',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Mesh:')); 
+
+			disp(sprintf('\n      Elements and vertices:'));
+			fielddisplay(self,'numberofelements','number of elements');
+			fielddisplay(self,'numberofvertices','number of vertices');
+			fielddisplay(self,'elements','vertex indices of the mesh elements');
+			fielddisplay(self,'x','vertices x coordinate [m]');
+			fielddisplay(self,'y','vertices y coordinate [m]');
+			fielddisplay(self,'z','vertices z coordinate [m]');
+			fielddisplay(self,'r','vertices r coordinate [m]');
+			fielddisplay(self,'theta','vertices theta coordinate [degrees]');
+			fielddisplay(self,'phi','vertices phi coordinate [degrees]');
+
+			disp(sprintf('\n      Properties:'));
+			fielddisplay(self,'numberoflayers','number of extrusion layers');
+
+			fielddisplay(self,'vertexconnectivity','list of vertices connected to vertex_i');
+			fielddisplay(self,'elementconnectivity','list of vertices connected to element_i');
+			fielddisplay(self,'average_vertex_connectivity','average number of vertices connected to one vertex');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','z','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','r','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','theta','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','phi','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'fieldname','numberoflayers','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','elementconnectivity','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'fieldname','average_vertex_connectivity','format','Integer');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/steadystate.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/steadystate.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/steadystate.js	(revision 21239)
@@ -0,0 +1,84 @@
+//STEADYSTATE class definition
+//
+//   Usage:
+//      steadystate=new steadystate();
+
+function steadystate (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//maximum of steady state iterations
+		this.maxiter=100;
+
+		//Relative tolerance for the steadystate convertgence
+		this.reltol=0.01;
+
+		//default output
+		this.requested_outputs=['default'];
+
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   steadystate solution parameters:'));
+
+		fielddisplay(this,'reltol','relative tolerance criterion');
+		fielddisplay(this,'maxiter','maximum number of iterations');
+		fielddisplay(this,'requested_outputs','additional requested outputs');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "steadystate";
+
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) {// {{{
+
+		//Early return
+		if (solution!='SteadystateSolution') return;
+
+		if (md.timestepping.time_step!=0){
+			md.checkmessage('for a steadystate computation, timestepping.time_step must be zero.');
+		}
+		checkfield(md,'fieldname','steadystate.requested_outputs','stringrow',1);
+
+		if (isNaN(md.stressbalance.reltol)){
+			md.checkmessage('for a steadystate computation, stressbalance.reltol (relative convergence criterion) must be defined!');
+		}
+	} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','reltol','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','maxiter','format','Integer');
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}
+			WriteData(fid,prefix,'data',outputs,'name','md.steadystate.requested_outputs','format','StringArray');
+		}//}}}
+		this.defaultoutputs = function(md) { //{{{
+
+			var list=[];
+
+			for (var i=0;i<md.stressbalance.defaultoutputs(md).length;i++)list.push(md.stressbalance.defaultoutputs(md)[i]);
+			for (var i=0;i<md.thermal.defaultoutputs(md).length;i++)list.push(md.thermal.defaultoutputs(md)[i]);
+
+			return list;
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+
+	this.reltol            = 0;
+	this.maxiter           = 0;
+	this.requested_outputs = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/steadystate.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/steadystate.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/steadystate.m	(revision 21239)
@@ -0,0 +1,79 @@
+%STEADYSTATE class definition
+%
+%   Usage:
+%      steadystate=steadystate();
+
+classdef steadystate
+	properties (SetAccess=public) 
+		reltol            = 0;
+		maxiter           = 0;
+		requested_outputs = {};
+	end
+	methods
+		function self = steadystate(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			%maximum of steady state iterations
+			self.maxiter=100;
+
+			%Relative tolerance for the steadystate convertgence
+			self.reltol=0.01;
+
+			%default output
+			self.requested_outputs={'default'};
+		end % }}}
+		function list=defaultoutputs(self,md) % {{{
+
+			list =  [md.stressbalance.defaultoutputs(md) md.thermal.defaultoutputs(md)];
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~strcmp(solution,'SteadystateSolution'), return; end;
+
+			if md.timestepping.time_step~=0,
+				md = checkmessage(md,['for a steadystate computation, timestepping.time_step must be zero.']);
+			end
+			md = checkfield(md,'fieldname','steadystate.requested_outputs','stringrow',1);
+
+			if isnan(md.stressbalance.reltol),
+				md = checkmessage(md,['for a steadystate computation, stressbalance.reltol (relative convergence criterion) must be defined!']);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   steadystate solution parameters:'));
+
+			fielddisplay(self,'reltol','relative tolerance criterion');
+			fielddisplay(self,'maxiter','maximum number of iterations');
+			fielddisplay(self,'requested_outputs','additional requested outputs');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','reltol','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','maxiter','format','Integer');
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.steadystate.requested_outputs','format','StringArray');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.steadystate.reltol'],self.reltol);
+			writejsdouble(fid,[modelname '.steadystate.maxiter'],self.maxiter);
+			writejscellstring(fid,[modelname '.steadystate.requested_outputs'],self.requested_outputs);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/steadystate.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/steadystate.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/steadystate.py	(revision 21239)
@@ -0,0 +1,74 @@
+import numpy
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+class steadystate(object):
+	"""
+	STEADYSTATE class definition
+
+	   Usage:
+	      steadystate=steadystate();
+	"""
+
+	def __init__(self): # {{{
+		self.reltol            = 0
+		self.maxiter           = 0
+		self.requested_outputs = []
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   steadystate solution parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'reltol','relative tolerance criterion'))
+		string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of iterations'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional requested outputs'))
+		return string
+		#}}}
+	def defaultoutputs(self,md): # {{{
+
+		return md.stressbalance.defaultoutputs(md)+md.thermal.defaultoutputs(md)
+
+	#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#maximum of steady state iterations
+		self.maxiter=100
+
+		#Relative tolerance for the steadystate convertgence
+		self.reltol=0.01
+
+		#default output
+		self.requested_outputs=['default']
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if not solution=='SteadystateSolution':
+			return md
+
+		if not md.timestepping.time_step==0:
+			md.checkmessage("for a steadystate computation, timestepping.time_step must be zero.")
+
+		if numpy.isnan(md.stressbalance.reltol):
+			md.checkmessage("for a steadystate computation, stressbalance.reltol (relative convergence criterion) must be defined!")
+
+		md = checkfield(md,'fieldname','steadystate.requested_outputs','stringrow',1)
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'object',self,'fieldname','reltol','format','Double')
+		WriteData(fid,prefix,'object',self,'fieldname','maxiter','format','Integer')
+
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,prefix,'data',outputs,'name','md.steadystate.requested_outputs','format','StringArray')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/stressbalance.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/stressbalance.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/stressbalance.js	(revision 21239)
@@ -0,0 +1,229 @@
+//STRESSBALANCE class definition
+//
+//   Usage:
+//      stressbalance=new stressbalance();
+
+function stressbalance (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//maximum of non-linear iterations.
+		this.maxiter=100;
+
+		//Convergence criterion: absolute, relative and residual
+		this.restol=Math.pow(10,-4); 
+		this.reltol=0.01;
+		this.abstol=10;
+
+		this.FSreconditioning=Math.pow(10,13);
+		this.shelf_dampening=0;
+
+		//Penalty factor applied kappa=max(stiffness matrix)*10^penalty_factor
+		this.penalty_factor=3;
+
+		//coefficient to update the viscosity between each iteration of
+		//a stressbalance according to the following formula
+		//viscosity(n)=viscosity(n)+viscosity_overshoot(viscosity(n)-viscosity(n-1))
+		this.viscosity_overshoot=0;
+
+		//Stop the iterations of rift if below a threshold
+		this.rift_penalty_threshold=0;
+
+		//in some solutions, it might be needed to stop a run when only
+		//a few constraints remain unstable. For thermal computation, this
+		//parameter is often used.
+		this.rift_penalty_lock=10;
+
+		//output default:
+		this.requested_outputs=['default'];
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   StressBalance solution parameters:'));
+
+		console.log(sprintf('\n      %s','Convergence criteria:'));
+		fielddisplay(this,'restol','mechanical equilibrium residual convergence criterion');
+		fielddisplay(this,'reltol','velocity relative convergence criterion, NaN: not applied');
+		fielddisplay(this,'abstol','velocity absolute convergence criterion, NaN: not applied');
+		fielddisplay(this,'isnewton',"0: Picard's fixed point, 1: Newton's method, 2: hybrid");
+		fielddisplay(this,'maxiter','maximum number of nonlinear iterations');
+		fielddisplay(this,'viscosity_overshoot','over-shooting constant new=new+C*(new-old)');
+
+		console.log(sprintf('\n      %s','boundary conditions:'));
+		fielddisplay(this,'spcvx','x-axis velocity constraint (NaN means no constraint) [m/yr]');
+		fielddisplay(this,'spcvy','y-axis velocity constraint (NaN means no constraint) [m/yr]');
+		fielddisplay(this,'spcvz','z-axis velocity constraint (NaN means no constraint) [m/yr]');
+
+		console.log(sprintf('\n      %s','Rift options:'));
+		fielddisplay(this,'rift_penalty_threshold','threshold for instability of mechanical constraints');
+		fielddisplay(this,'rift_penalty_lock','number of iterations before rift penalties are locked');
+
+		console.log(sprintf('\n      %s','Penalty options:'));
+		fielddisplay(this,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset');
+		fielddisplay(this,'vertex_pairing','pairs of vertices that are penalized');
+
+		console.log(sprintf('\n      %s','Other:'));
+		fielddisplay(this,'shelf_dampening','use dampening for floating ice ? Only for FS model');
+		fielddisplay(this,'FSreconditioning','multiplier for incompressibility equation. Only for FS model');
+		fielddisplay(this,'referential','local referential');
+		fielddisplay(this,'loadingforce','loading force applied on each point [N/m^3]');
+		fielddisplay(this,'requested_outputs','additional outputs requested');
+
+
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "stressbalance";
+	}// }}}
+	this.extrude = function(md) {//{{{
+		this.spcvx=project3d(md,'vector',this.spcvx,'type','node');
+		this.spcvy=project3d(md,'vector',this.spcvy,'type','node');
+		this.spcvz=project3d(md,'vector',this.spcvz,'type','node');
+		this.referential=project3d(md,'vector',this.referential,'type','node');
+		this.loadingforce=project3d(md,'vector',this.loadingforce,'type','node');
+		return this;
+	}//}}}
+	this.checkconsistency = function(md,solution,analyses) { //{{{
+
+		//Early return
+		if(ArrayAnyEqual(ArrayIsMember('StressbalanceAnalysis',analyses),0))return;
+
+		checkfield(md,'fieldname','stressbalance.spcvx','Inf',1,'timeseries',1);
+		checkfield(md,'fieldname','stressbalance.spcvy','Inf',1,'timeseries',1);
+		checkfield(md,'fieldname','stressbalance.spcvz','Inf',1,'timeseries',1);
+		checkfield(md,'fieldname','stressbalance.restol','size',[1, 1],'>',0,'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','stressbalance.reltol','size',[1, 1]);
+		checkfield(md,'fieldname','stressbalance.abstol','size',[1, 1]);
+		checkfield(md,'fieldname','stressbalance.isnewton','numel',[1],'values',[0, 1, 2]);
+		checkfield(md,'fieldname','stressbalance.FSreconditioning','size',[1, 1],'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','stressbalance.viscosity_overshoot','size',[1, 1],'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','stressbalance.maxiter','size',[1, 1],'>=',1);
+		checkfield(md,'fieldname','stressbalance.referential','size',[md.mesh.numberofvertices, 6]);
+		checkfield(md,'fieldname','stressbalance.loadingforce','size',[md.mesh.numberofvertices, 3]);
+		checkfield(md,'fieldname','stressbalance.requested_outputs','stringrow',1);
+
+		//singular solution
+		if(!ArrayAnyNaN(md.stressbalance.spcvx) | !ArrayAnyNaN(md.stressbalance.spcvy) |  !ArrayAnyAboveStrict(md.mask.groundedice_levelset,0)){
+			md = checkmessage(md,'model is not well posed (singular). You need at least one node with fixed velocity!');
+			console.log(sprintf('\n !!! Warning: no spc applied, model might not be well posed if no basal friction is applied, check for solution crash\n'));
+		}
+		//CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES
+		for(var i=0;i<md.stressbalance.referential.length;i++){
+			var sum=0;
+			for(j=0;j<md.stressbalance.referential[0].length;j++)sum+=md.stressbalance.referential[i][j];
+			if (sum!=0 & sum!=6){
+				md = checkmessage(md,'Each line of stressbalance.referential should contain either only NaN values or no NaN values');
+				break;
+			}
+		}
+		//CHECK THAT THE TWO VECTORS PROVIDED ARE ORTHOGONAL
+		for(var i=0;i<md.stressbalance.referential.length;i++){
+			var sum=0;
+			for(j=0;j<md.stressbalance.referential[0].length;j++)sum+=md.stressbalance.referential[i][j];
+			if(sum==0){
+				var dot=0;
+				for(j=0;j<3;j++)dot+=md.stressbalance.referential[i][j]*md.stressbalance.referential[i][j+3];
+				dot=Math.abs(dot);
+				if(dot>Math.pow(10,-18)){
+					md.checkmessage('Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal');
+					break;
+				}
+			}
+		}
+		//CHECK THAT NO rotation specified for FS Grounded ice at base
+		if (md.mesh.domaintype() == '3D' & md.flowequation.isFS){
+			for(var i=0;i<md.mask.groundedice_levelset.length;i++){
+				if(md.mask.groundedice_levelset[i]>0 & md.mesh.vertexonbase[i]){
+					if(!ArrayIsNan(md.stressbalance.referential[i])){
+						md.checkmessage('no referential should be specified for basal vertices of grounded ice');
+						break;
+					}
+				}
+			}
+			checkfield(md,'fieldname','stressbalance.FSreconditioning','>',0);
+		}
+	} // }}}
+	this.marshall=function(md,prefix,fid) { //{{{
+
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','vertex_pairing','format','DoubleMat','mattype',3);
+
+		var yts=md.constants.yts;
+
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','restol','format','Double');
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','reltol','format','Double');
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','abstol','format','Double','scale',1./yts);
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','isnewton','format','Integer');
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','FSreconditioning','format','Double');
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','viscosity_overshoot','format','Double');
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','maxiter','format','Integer');
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','shelf_dampening','format','Integer');
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','penalty_factor','format','Double');
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','rift_penalty_lock','format','Integer');
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','rift_penalty_threshold','format','Integer');
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1);
+
+		var lx=NewArrayFill(this.loadingforce.length,0); for(var i=0;i<lx.length;i++)lx[i]=this.loadingforce[i][0];
+		var ly=NewArrayFill(this.loadingforce.length,0); for(var i=0;i<lx.length;i++)ly[i]=this.loadingforce[i][1];
+		var lz=NewArrayFill(this.loadingforce.length,0); for(var i=0;i<lx.length;i++)lz[i]=this.loadingforce[i][2];
+
+		WriteData(fid,prefix,'data',lx,'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcex');
+		WriteData(fid,prefix,'data',ly,'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcey');
+		WriteData(fid,prefix,'data',lz,'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcez');
+
+		//process requested outputs
+		var outputs = this.requested_outputs;
+		for (var i=0;i<outputs.length;i++){
+			if (outputs[i] == 'default') {
+				outputs.splice(i,1);
+				var newoutputs=this.defaultoutputs(md);
+				for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+			}
+		}
+		WriteData(fid,prefix,'data',outputs,'name','md.stressbalance.requested_outputs','format','StringArray');
+	}//}}}
+	this.defaultoutputs = function(md){ // {{{
+
+		var list;
+		if (md.mesh.dimension() == 3) list = ['Vx','Vy','Vz','Vel','Pressure'];
+		else if (md.mesh.dimension()==2) list = ['Vx','Vy','Vel','Pressure'];
+		else throw Error('mesh type not supported yet');
+		return list;
+
+	}//}}}
+	this.fix=function() { //{{{
+		this.abstol=NullFix(this.abstol,NaN);
+		this.rift_penalty_lock=NullFix(this.rift_penalty_lock,NaN);
+		this.referential=NullFix(this.referential,NaN);
+		this.loadingforce=NullFix(this.loadingforce,NaN);
+		this.spcvx=NullFix(this.spcvx,NaN);
+		this.spcvy=NullFix(this.spcvy,NaN);
+		this.spcvz=NullFix(this.spcvz,NaN);
+		if(this.vertex_pairing=[])this.vertex_pairing=NaN;
+	}//}}}
+	//properties 
+	// {{{
+	this.spcvx                  = NaN;
+	this.spcvy                  = NaN;
+	this.spcvz                  = NaN;
+	this.restol                 = 0;
+	this.reltol                 = 0;
+	this.abstol                 = 0;
+	this.isnewton               = 0;
+	this.FSreconditioning       = 0;
+	this.viscosity_overshoot    = 0;
+	this.maxiter                = 0;
+	this.shelf_dampening        = 0;
+	this.vertex_pairing         = NaN;
+	this.penalty_factor         = NaN;
+	this.rift_penalty_lock      = NaN;
+	this.rift_penalty_threshold = 0;
+	this.referential            = NaN;
+	this.loadingforce           = NaN;
+	this.requested_outputs      = []
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/stressbalance.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/stressbalance.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/stressbalance.m	(revision 21239)
@@ -0,0 +1,235 @@
+%STRESSBALANCE class definition
+%
+%   Usage:
+%      stressbalance=stressbalance();
+
+classdef stressbalance
+	properties (SetAccess=public) 
+		spcvx                  = NaN;
+		spcvy                  = NaN;
+		spcvz                  = NaN;
+		restol                 = 0;
+		reltol                 = 0;
+		abstol                 = 0;
+		isnewton               = 0;
+		FSreconditioning       = 0;
+		viscosity_overshoot    = 0;
+		maxiter                = 0;
+		shelf_dampening        = 0;
+		vertex_pairing         = NaN;
+		penalty_factor         = NaN;
+		rift_penalty_lock      = NaN;
+		rift_penalty_threshold = 0;
+		referential            = NaN;
+		loadingforce           = NaN;
+		requested_outputs      = {};
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.spcvx=project3d(md,'vector',self.spcvx,'type','node');
+			self.spcvy=project3d(md,'vector',self.spcvy,'type','node');
+			self.spcvz=project3d(md,'vector',self.spcvz,'type','node');
+			self.referential=project3d(md,'vector',self.referential,'type','node');
+			self.loadingforce=project3d(md,'vector',self.loadingforce,'type','node');
+
+		end % }}}
+		function self = stressbalance(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('stressbalance');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			 %maximum of non-linear iterations.
+			 self.maxiter=100;
+
+			 %Convergence criterion: absolute, relative and residual
+			 self.restol=10^-4; 
+			 self.reltol=0.01;
+			 self.abstol=10;
+
+			 self.FSreconditioning=10^13;
+			 self.shelf_dampening=0;
+
+			 %Penalty factor applied kappa=max(stiffness matrix)*10^penalty_factor
+			 self.penalty_factor=3;
+
+			 %coefficient to update the viscosity between each iteration of
+			 %a stressbalance according to the following formula
+			 %viscosity(n)=viscosity(n)+viscosity_overshoot(viscosity(n)-viscosity(n-1))
+			 self.viscosity_overshoot=0;
+
+			 %Stop the iterations of rift if below a threshold
+			 self.rift_penalty_threshold=0;
+
+			 %in some solutions, it might be needed to stop a run when only
+			 %a few constraints remain unstable. For thermal computation, this
+			 %parameter is often used.
+			 self.rift_penalty_lock=10;
+
+			 %output default:
+			 self.requested_outputs={'default'};
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses), return; end
+			if (strcmp(solution,'TransientSolution') & md.transient.isstressbalance == 0), return; end
+
+			md = checkfield(md,'fieldname','stressbalance.spcvx','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','stressbalance.spcvy','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','stressbalance.spcvz','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','stressbalance.restol','size',[1 1],'>',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','stressbalance.reltol','size',[1 1]);
+			md = checkfield(md,'fieldname','stressbalance.abstol','size',[1 1]);
+			md = checkfield(md,'fieldname','stressbalance.isnewton','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','stressbalance.FSreconditioning','size',[1 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','stressbalance.viscosity_overshoot','size',[1 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','stressbalance.maxiter','size',[1 1],'>=',1);
+			md = checkfield(md,'fieldname','stressbalance.referential','size',[md.mesh.numberofvertices 6]);
+			md = checkfield(md,'fieldname','stressbalance.loadingforce','size',[md.mesh.numberofvertices 3]);
+			md = checkfield(md,'fieldname','stressbalance.requested_outputs','stringrow',1);
+
+			%singular solution
+			if ((~(any(~isnan(md.stressbalance.spcvx)) | any(~isnan(md.stressbalance.spcvy)))) & ~any(md.mask.groundedice_levelset>0)),
+				disp(sprintf('\n !!! Warning: no spc applied, model might not be well posed if no basal friction is applied, check for solution crash\n'));
+			end
+			%CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES
+			if any(sum(isnan(md.stressbalance.referential),2)~=0 & sum(isnan(md.stressbalance.referential),2)~=6),
+				md = checkmessage(md,['Each line of stressbalance.referential should contain either only NaN values or no NaN values']);
+			end
+			%CHECK THAT THE TWO VECTORS PROVIDED ARE ORTHOGONAL
+			if any(sum(isnan(md.stressbalance.referential),2)==0),
+				pos=find(sum(isnan(md.stressbalance.referential),2)==0);
+				if any(abs(dot(md.stressbalance.referential(pos,1:3),md.stressbalance.referential(pos,4:6),2))>eps),
+					md = checkmessage(md,['Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal']);
+				end
+			end
+			%CHECK THAT NO rotation specified for FS Grounded ice at base
+			if strcmp(domaintype(md.mesh),'3D') & md.flowequation.isFS,
+				pos=find(md.mask.groundedice_levelset>0. & md.mesh.vertexonbase);
+				if any(~isnan(md.stressbalance.referential(pos,:))),
+					md = checkmessage(md,['no referential should be specified for basal vertices of grounded ice']);
+				end
+				md = checkfield(md,'fieldname','stressbalance.FSreconditioning','>',0);
+			end
+		end % }}}
+		function list=defaultoutputs(self,md) % {{{
+
+			if dimension(md.mesh)==3,
+				list = {'Vx','Vy','Vz','Vel','Pressure'};
+			elseif dimension(md.mesh)==2,
+				list = {'Vx','Vy','Vel','Pressure'};
+			else
+				error('mesh type not supported yet');
+			end
+
+		end % }}}
+		function disp(self) % {{{
+
+			disp(sprintf('   StressBalance solution parameters:'));
+
+			disp(sprintf('\n      %s','Convergence criteria:'));
+			fielddisplay(self,'restol','mechanical equilibrium residual convergence criterion');
+			fielddisplay(self,'reltol','velocity relative convergence criterion, NaN: not applied');
+			fielddisplay(self,'abstol','velocity absolute convergence criterion, NaN: not applied');
+			fielddisplay(self,'isnewton','0: Picard''s fixed point, 1: Newton''s method, 2: hybrid');
+			fielddisplay(self,'maxiter','maximum number of nonlinear iterations');
+			fielddisplay(self,'viscosity_overshoot','over-shooting constant new=new+C*(new-old)');
+
+			disp(sprintf('\n      %s','boundary conditions:'));
+			fielddisplay(self,'spcvx','x-axis velocity constraint (NaN means no constraint) [m/yr]');
+			fielddisplay(self,'spcvy','y-axis velocity constraint (NaN means no constraint) [m/yr]');
+			fielddisplay(self,'spcvz','z-axis velocity constraint (NaN means no constraint) [m/yr]');
+
+			disp(sprintf('\n      %s','Rift options:'));
+			fielddisplay(self,'rift_penalty_threshold','threshold for instability of mechanical constraints');
+			fielddisplay(self,'rift_penalty_lock','number of iterations before rift penalties are locked');
+
+			disp(sprintf('\n      %s','Penalty options:'));
+			fielddisplay(self,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset');
+			fielddisplay(self,'vertex_pairing','pairs of vertices that are penalized');
+
+			disp(sprintf('\n      %s','Other:'));
+			fielddisplay(self,'shelf_dampening','use dampening for floating ice ? Only for FS model');
+			fielddisplay(self,'FSreconditioning','multiplier for incompressibility equation. Only for FS model');
+			fielddisplay(self,'referential','local referential');
+			fielddisplay(self,'loadingforce','loading force applied on each point [N/m^3]');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','vertex_pairing','format','DoubleMat','mattype',3);
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','restol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','reltol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','abstol','format','Double','scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','isnewton','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','FSreconditioning','format','Double');
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','viscosity_overshoot','format','Double');
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','shelf_dampening','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','penalty_factor','format','Double');
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','rift_penalty_lock','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','rift_penalty_threshold','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1);
+
+			if size(self.loadingforce,2)==3,
+				WriteData(fid,prefix,'data',self.loadingforce(:,1),'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcex');
+				WriteData(fid,prefix,'data',self.loadingforce(:,2),'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcey');
+				WriteData(fid,prefix,'data',self.loadingforce(:,3),'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcez');
+			end
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.stressbalance.requested_outputs','format','StringArray');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.stressbalance.spcvx'],self.spcvx);
+			writejs1Darray(fid,[modelname '.stressbalance.spcvy'],self.spcvy);
+			writejs1Darray(fid,[modelname '.stressbalance.spcvz'],self.spcvz);
+			writejsdouble(fid,[modelname '.stressbalance.restol'],self.restol);
+			writejsdouble(fid,[modelname '.stressbalance.reltol'],self.reltol);
+			writejsdouble(fid,[modelname '.stressbalance.abstol'],self.abstol);
+			writejsdouble(fid,[modelname '.stressbalance.isnewton'],self.isnewton);
+			writejsdouble(fid,[modelname '.stressbalance.FSreconditioning'],self.FSreconditioning);
+			writejsdouble(fid,[modelname '.stressbalance.viscosity_overshoot'],self.viscosity_overshoot);
+			writejsdouble(fid,[modelname '.stressbalance.maxiter'],self.maxiter);
+			writejsdouble(fid,[modelname '.stressbalance.shelf_dampening'],self.shelf_dampening);
+			writejs1Darray(fid,[modelname '.stressbalance.vertex_pairing'],self.vertex_pairing);
+			writejsdouble(fid,[modelname '.stressbalance.penalty_factor'],self.penalty_factor);
+			writejsdouble(fid,[modelname '.stressbalance.rift_penalty_lock'],self.rift_penalty_lock);
+			writejsdouble(fid,[modelname '.stressbalance.rift_penalty_threshold'],self.rift_penalty_threshold);
+			writejs2Darray(fid,[modelname '.stressbalance.referential'],self.referential);
+			writejs2Darray(fid,[modelname '.stressbalance.loadingforce'],self.loadingforce);
+			writejscellstring(fid,[modelname '.stressbalance.requested_outputs'],self.requested_outputs);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/stressbalance.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/stressbalance.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/stressbalance.py	(revision 21239)
@@ -0,0 +1,215 @@
+import numpy
+import sys
+import copy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class stressbalance(object):
+	"""
+	STRESSBALANCE class definition
+
+	   Usage:
+	      stressbalance=stressbalance();
+	"""
+
+	def __init__(self): # {{{
+		self.spcvx                    = float('NaN')
+		self.spcvy                    = float('NaN')
+		self.spcvz                    = float('NaN')
+		self.restol                   = 0
+		self.reltol                   = 0
+		self.abstol                   = 0
+		self.isnewton                 = 0
+		self.FSreconditioning     = 0
+		self.viscosity_overshoot      = 0
+		self.icefront                 = float('NaN')
+		self.maxiter                  = 0
+		self.shelf_dampening          = 0
+		self.vertex_pairing           = float('NaN')
+		self.penalty_factor           = float('NaN')
+		self.rift_penalty_lock        = float('NaN')
+		self.rift_penalty_threshold   = 0
+		self.referential              = float('NaN')
+		self.loadingforce             = float('NaN')
+		self.requested_outputs        = []
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		
+		string='   StressBalance solution parameters:'
+		string="%s\n%s"%(string,'      Convergence criteria:')
+		string="%s\n%s"%(string,fielddisplay(self,'restol','mechanical equilibrium residual convergence criterion'))
+		string="%s\n%s"%(string,fielddisplay(self,'reltol','velocity relative convergence criterion, NaN: not applied'))
+		string="%s\n%s"%(string,fielddisplay(self,'abstol','velocity absolute convergence criterion, NaN: not applied'))
+		string="%s\n%s"%(string,fielddisplay(self,'isnewton',"0: Picard's fixed point, 1: Newton's method, 2: hybrid"))
+		string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of nonlinear iterations'))
+		string="%s\n%s"%(string,fielddisplay(self,'viscosity_overshoot','over-shooting constant new=new+C*(new-old)'))
+
+		string="%s\n%s"%(string,'\n      boundary conditions:')
+		string="%s\n%s"%(string,fielddisplay(self,'spcvx','x-axis velocity constraint (NaN means no constraint) [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'spcvy','y-axis velocity constraint (NaN means no constraint) [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'spcvz','z-axis velocity constraint (NaN means no constraint) [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'icefront','segments on ice front list (last column 0: Air, 1: Water, 2: Ice'))
+
+		string="%s\n%s"%(string,'\n      Rift options:')
+		string="%s\n%s"%(string,fielddisplay(self,'rift_penalty_threshold','threshold for instability of mechanical constraints'))
+		string="%s\n%s"%(string,fielddisplay(self,'rift_penalty_lock','number of iterations before rift penalties are locked'))
+
+		string="%s\n%s"%(string,'\n      Penalty options:')
+		string="%s\n%s"%(string,fielddisplay(self,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset'))
+		string="%s\n%s"%(string,fielddisplay(self,'vertex_pairing','pairs of vertices that are penalized'))
+
+		string="%s\n%s"%(string,'\n      Other:')
+		string="%s\n%s"%(string,fielddisplay(self,'shelf_dampening','use dampening for floating ice ? Only for FS model'))
+		string="%s\n%s"%(string,fielddisplay(self,'FSreconditioning','multiplier for incompressibility equation. Only for FS model'))
+		string="%s\n%s"%(string,fielddisplay(self,'referential','local referential'))
+		string="%s\n%s"%(string,fielddisplay(self,'loadingforce','loading force applied on each point [N/m^3]'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.spcvx=project3d(md,'vector',self.spcvx,'type','node')
+		self.spcvy=project3d(md,'vector',self.spcvy,'type','node')
+		self.spcvz=project3d(md,'vector',self.spcvz,'type','node')
+		self.referential=project3d(md,'vector',self.referential,'type','node')
+		self.loadingforce=project3d(md,'vector',self.loadingforce,'type','node')
+
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		#maximum of non-linear iterations.
+		self.maxiter=100
+
+		#Convergence criterion: absolute, relative and residual
+		self.restol=10**-4
+		self.reltol=0.01
+		self.abstol=10
+
+		self.FSreconditioning=10**13
+		self.shelf_dampening=0
+
+		#Penalty factor applied kappa=max(stiffness matrix)*10^penalty_factor
+		self.penalty_factor=3
+
+		#coefficient to update the viscosity between each iteration of
+		#a stressbalance according to the following formula
+		#viscosity(n)=viscosity(n)+viscosity_overshoot(viscosity(n)-viscosity(n-1))
+		self.viscosity_overshoot=0
+
+		#Stop the iterations of rift if below a threshold
+		self.rift_penalty_threshold=0
+
+		#in some solutions, it might be needed to stop a run when only
+		#a few constraints remain unstable. For thermal computation, this
+		#parameter is often used.
+		self.rift_penalty_lock=10
+
+		#output default:
+		self.requested_outputs=['default']
+
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+
+		if md.mesh.dimension()==3:
+			list = ['Vx','Vy','Vz','Vel','Pressure']
+		else:
+			list = ['Vx','Vy','Vel','Pressure']
+		return list
+
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if 'StressbalanceAnalysis' not in analyses:
+			return md
+
+		md = checkfield(md,'fieldname','stressbalance.spcvx','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','stressbalance.spcvy','Inf',1,'timeseries',1)
+		if m.strcmp(md.mesh.domaintype(),'3D'):
+			md = checkfield(md,'fieldname','stressbalance.spcvz','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','stressbalance.restol','size',[1],'>',0)
+		md = checkfield(md,'fieldname','stressbalance.reltol','size',[1])
+		md = checkfield(md,'fieldname','stressbalance.abstol','size',[1])
+		md = checkfield(md,'fieldname','stressbalance.isnewton','numel',[1],'values',[0,1,2])
+		md = checkfield(md,'fieldname','stressbalance.FSreconditioning','size',[1],'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','stressbalance.viscosity_overshoot','size',[1],'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','stressbalance.maxiter','size',[1],'>=',1)
+		md = checkfield(md,'fieldname','stressbalance.referential','size',[md.mesh.numberofvertices,6])
+		md = checkfield(md,'fieldname','stressbalance.loadingforce','size',[md.mesh.numberofvertices,3])
+		md = checkfield(md,'fieldname','stressbalance.requested_outputs','stringrow',1);
+
+		#singular solution
+#		if ~any((~isnan(md.stressbalance.spcvx)+~isnan(md.stressbalance.spcvy))==2),
+		if not numpy.any(numpy.logical_and(numpy.logical_not(numpy.isnan(md.stressbalance.spcvx)),numpy.logical_not(numpy.isnan(md.stressbalance.spcvy)))):
+			print "\n !!! Warning: no spc applied, model might not be well posed if no basal friction is applied, check for solution crash\n"
+		#CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES
+#		if any(sum(isnan(md.stressbalance.referential),2)~=0 & sum(isnan(md.stressbalance.referential),2)~=6),
+		if numpy.any(numpy.logical_and(numpy.sum(numpy.isnan(md.stressbalance.referential),axis=1)!=0,numpy.sum(numpy.isnan(md.stressbalance.referential),axis=1)!=6)):
+			md.checkmessage("Each line of stressbalance.referential should contain either only NaN values or no NaN values")
+		#CHECK THAT THE TWO VECTORS PROVIDED ARE ORTHOGONAL
+#		if any(sum(isnan(md.stressbalance.referential),2)==0),
+		if numpy.any(numpy.sum(numpy.isnan(md.stressbalance.referential),axis=1)==0):
+			pos=[i for i,item in enumerate(numpy.sum(numpy.isnan(md.stressbalance.referential),axis=1)) if item==0]
+#			numpy.inner (and numpy.dot) calculate all the dot product permutations, resulting in a full matrix multiply
+#			if numpy.any(numpy.abs(numpy.inner(md.stressbalance.referential[pos,0:2],md.stressbalance.referential[pos,3:5]).diagonal())>sys.float_info.epsilon):
+#				md.checkmessage("Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal")
+			for item in md.stressbalance.referential[pos,:]:
+				if numpy.abs(numpy.inner(item[0:2],item[3:5]))>sys.float_info.epsilon:
+					md.checkmessage("Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal")
+		#CHECK THAT NO rotation specified for FS Grounded ice at base
+		if m.strcmp(md.mesh.domaintype(),'3D') and md.flowequation.isFS:
+			pos=numpy.nonzero(numpy.logical_and(md.mask.groundedice_levelset,md.mesh.vertexonbase))
+			if numpy.any(numpy.logical_not(numpy.isnan(md.stressbalance.referential[pos,:]))):
+				md.checkmessage("no referential should be specified for basal vertices of grounded ice")
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','vertex_pairing','format','DoubleMat','mattype',3)
+
+		yts=md.constants.yts
+
+		WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','restol','format','Double')
+		WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','reltol','format','Double')
+		WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','abstol','format','Double','scale',1./yts)
+		WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','isnewton','format','Integer')
+		WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','FSreconditioning','format','Double')
+		WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','viscosity_overshoot','format','Double')
+		WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','maxiter','format','Integer')
+		WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','shelf_dampening','format','Integer')
+		WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','penalty_factor','format','Double')
+		WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','rift_penalty_lock','format','Integer')
+		WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','rift_penalty_threshold','format','Integer')
+		WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1)
+		
+		if isinstance(self.loadingforce, (list, tuple, numpy.ndarray)):
+			lx=self.loadingforce[:,0];
+			ly=self.loadingforce[:,1];
+			lz=self.loadingforce[:,2];
+		else:
+			lx=float('NaN'); ly=float('NaN'); lz=float('NaN');
+
+		WriteData(fid,prefix,'data',lx,'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcex')
+		WriteData(fid,prefix,'data',ly,'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcey')
+		WriteData(fid,prefix,'data',lz,'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcez')
+
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,prefix,'data',outputs,'name','md.stressbalance.requested_outputs','format','StringArray')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/taoinversion.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/taoinversion.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/taoinversion.m	(revision 21239)
@@ -0,0 +1,198 @@
+%TAOINVERSION class definition
+%
+%   Usage:
+%      taoinversion=taoinversion();
+
+classdef taoinversion
+	properties (SetAccess=public) 
+		iscontrol                   = 0
+		incomplete_adjoint          = 0
+		control_parameters          = NaN
+		maxsteps                    = 0
+		maxiter                     = 0
+		fatol                       = 0
+		frtol                       = 0
+		gatol                       = 0
+		grtol                       = 0
+		gttol                       = 0
+		algorithm                   = ''
+		cost_functions              = NaN
+		cost_functions_coefficients = NaN
+		min_parameters              = NaN
+		max_parameters              = NaN
+		vx_obs                      = NaN
+		vy_obs                      = NaN
+		vz_obs                      = NaN
+		vel_obs                     = NaN
+		thickness_obs               = NaN
+		surface_obs               = NaN
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node');
+			self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node');
+			self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node');
+			self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node');
+			if numel(self.cost_functions_coefficients)>1,self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node');end;
+			if numel(self.min_parameters)>1,self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node');end;
+			if numel(self.max_parameters)>1,self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node');end;
+		end % }}}
+		function self = taoinversion(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(taoinversion(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%default is incomplete adjoint for now
+			self.incomplete_adjoint=1;
+
+			%parameter to be inferred by control methods (only
+			%drag and B are supported yet)
+			self.control_parameters={'FrictionCoefficient'};
+
+			%number of iterations and steps
+			self.maxsteps=20;
+			self.maxiter =30;
+
+			%default tolerances
+			self.fatol = 0;
+			self.frtol = 0;
+			self.gatol = 0;
+			self.grtol = 0;
+			self.gttol = 1e-4;
+
+			%minimization algorithm
+			PETSCMAJOR = IssmConfig('_PETSC_MAJOR_');
+			PETSCMINOR = IssmConfig('_PETSC_MINOR_');
+			if(PETSCMAJOR>3 | (PETSCMAJOR==3 & PETSCMINOR>=5))
+				self.algorithm = 'blmvm';
+			else
+				self.algorithm = 'tao_blmvm';
+			end
+
+			%several responses can be used:
+			self.cost_functions=101;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~self.iscontrol, return; end
+
+			if ~IssmConfig('_HAVE_TAO_'),
+				md = checkmessage(md,['TAO has not been installed, ISSM needs to be reconfigured and recompiled with TAO']);
+			end
+
+			num_controls=numel(md.inversion.control_parameters);
+			num_costfunc=size(md.inversion.cost_functions,2);
+
+			md = checkfield(md,'fieldname','inversion.iscontrol','values',[0 1]);
+			md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 1]);
+			md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols());
+			md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.maxiter','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.fatol','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.frtol','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.gatol','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.grtol','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.gttol','numel',1,'>=',0);
+
+			PETSCMAJOR = IssmConfig('_PETSC_MAJOR_');
+			PETSCMINOR = IssmConfig('_PETSC_MINOR_');
+			if(PETSCMAJOR>3 | (PETSCMAJOR==3 & PETSCMINOR>=5))
+				md = checkfield(md,'fieldname','inversion.algorithm','values',{'blmvm','cg','lmvm'});
+			else
+				md = checkfield(md,'fieldname','inversion.algorithm','values',{'tao_blmvm','tao_cg','tao_lmvm'});
+			end
+
+			md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values',supportedcostfunctions());
+			md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0);
+			md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices num_controls]);
+			md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices num_controls]);
+
+			if strcmp(solution,'BalancethicknessSolution')
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			elseif strcmp(solution,'BalancethicknessSoftSolution')
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			else
+				md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   taoinversion parameters:'));
+			fielddisplay(self,'iscontrol','is inversion activated?');
+			fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
+			fielddisplay(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
+			fielddisplay(self,'maxsteps','maximum number of iterations (gradient computation)');
+			fielddisplay(self,'maxiter','maximum number of Function evaluation (forward run)');
+			fielddisplay(self,'fatol','convergence criterion: f(X)-f(X*) (X: current iteration, X*: "true" solution, f: cost function)');
+			fielddisplay(self,'frtol','convergence criterion: |f(X)-f(X*)|/|f(X*)|');
+			fielddisplay(self,'gatol','convergence criterion: ||g(X)|| (g: gradient of the cost function)');
+			fielddisplay(self,'grtol','convergence criterion: ||g(X)||/|f(X)|');
+			fielddisplay(self,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)');
+			fielddisplay(self,'algorithm','minimization algorithm: ''tao_blmvm'', ''tao_cg'', ''tao_lmvm''');
+			fielddisplay(self,'cost_functions','indicate the type of response for each optimization step');
+			fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
+			fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'vx_obs','observed velocity x component [m/yr]');
+			fielddisplay(self,'vy_obs','observed velocity y component [m/yr]');
+			fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]');
+			fielddisplay(self,'thickness_obs','observed thickness [m]');
+			fielddisplay(self,'surface_obs','observed surface elevation [m]');
+			disp('Available cost functions:');
+			disp('   101: SurfaceAbsVelMisfit');
+			disp('   102: SurfaceRelVelMisfit');
+			disp('   103: SurfaceLogVelMisfit');
+			disp('   104: SurfaceLogVxVyMisfit');
+			disp('   105: SurfaceAverageVelMisfit');
+			disp('   201: ThicknessAbsMisfit');
+			disp('   501: DragCoefficientAbsGradient');
+			disp('   502: RheologyBbarAbsGradient');
+			disp('   503: ThicknessAbsGradient');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean');
+			WriteData(fid,prefix,'name','md.inversion.type','data',1,'format','Integer');
+			if ~self.iscontrol, return; end
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','incomplete_adjoint','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxsteps','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','fatol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','frtol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','gatol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','grtol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','gttol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','algorithm','format','String');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',1);
+
+			%process control parameters
+			num_control_parameters=numel(self.control_parameters);
+			WriteData(fid,prefix,'object',self,'fieldname','control_parameters','format','StringArray');
+			WriteData(fid,prefix,'data',num_control_parameters,'name','md.inversion.num_control_parameters','format','Integer');
+
+			%process cost functions
+			num_cost_functions=size(self.cost_functions,2);
+			data=marshallcostfunctions(self.cost_functions);
+			WriteData(fid,prefix,'data',data,'name','md.inversion.cost_functions','format','StringArray');
+			WriteData(fid,prefix,'data',num_cost_functions,'name','md.inversion.num_cost_functions','format','Integer');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/taoinversion.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/taoinversion.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/taoinversion.py	(revision 21239)
@@ -0,0 +1,198 @@
+import numpy
+from project3d import project3d
+from WriteData import WriteData
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from IssmConfig import IssmConfig
+from marshallcostfunctions import marshallcostfunctions
+
+
+class taoinversion:
+	def __init__(self):
+		iscontrol                   = 0
+		incomplete_adjoint          = 0
+		control_parameters          = float('NaN')
+		maxsteps                    = 0
+		maxiter                     = 0
+		fatol                       = 0
+		frtol                       = 0
+		gatol                       = 0
+		grtol                       = 0
+		gttol                       = 0
+		algorithm                   = ''
+		cost_functions              = float('NaN')
+		cost_functions_coefficients = float('NaN')
+		min_parameters              = float('NaN')
+		max_parameters              = float('NaN')
+		vx_obs                      = float('NaN')
+		vy_obs                      = float('NaN')
+		vz_obs                      = float('NaN')
+		vel_obs                     = float('NaN')
+		thickness_obs               = float('NaN')
+		surface_obs                 = float('NaN')
+
+	def __repr__(self):
+		string = '   taoinversion parameters:'
+		string = "%s\n\%s"%(string, fieldstring(self,'iscontrol','is inversion activated?'))
+		string="%s\n%s"%(string,fieldstring(self,'mantle_viscosity','mantle viscosity constraints (NaN means no constraint) (Pa s)'))
+		string="%s\n%s"%(string,fieldstring(self,'lithosphere_thickness','lithosphere thickness constraints (NaN means no constraint) (m)'))
+		string="%s\n%s"%(string,fieldstring(self,'cross_section_shape',"1: square-edged, 2: elliptical-edged surface"))
+		string="%s\n%s"%(string,fieldstring(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity'))
+		string="%s\n%s"%(string,fieldstring(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))
+		string="%s\n%s"%(string,fieldstring(self,'maxsteps','maximum number of iterations (gradient computation)'))
+		string="%s\n%s"%(string,fieldstring(self,'maxiter','maximum number of Function evaluation (forward run)'))
+		string="%s\n%s"%(string,fieldstring(self,'fatol','convergence criterion: f(X)-f(X*) (X: current iteration, X*: "true" solution, f: cost function)'))
+		string="%s\n%s"%(string,fieldstring(self,'frtol','convergence criterion: |f(X)-f(X*)|/|f(X*)|'))
+		string="%s\n%s"%(string,fieldstring(self,'gatol','convergence criterion: ||g(X)|| (g: gradient of the cost function)'))
+		string="%s\n%s"%(string,fieldstring(self,'grtol','convergence criterion: ||g(X)||/|f(X)|'))
+		string="%s\n%s"%(string,fieldstring(self,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)'))
+		string="%s\n%s"%(string,fieldstring(self,'algorithm','minimization algorithm: ''tao_blmvm'', ''tao_cg'', ''tao_lmvm'''))
+		string="%s\n%s"%(string,fieldstring(self,'cost_functions','indicate the type of response for each optimization step'))
+		string="%s\n%s"%(string,fieldstring(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
+		string="%s\n%s"%(string,fieldstring(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fieldstring(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fieldstring(self,'vx_obs','observed velocity x component [m/yr]'))
+		string="%s\n%s"%(string,fieldstring(self,'vy_obs','observed velocity y component [m/yr]'))
+		string="%s\n%s"%(string,fieldstring(self,'vel_obs','observed velocity magnitude [m/yr]'))
+		string="%s\n%s"%(string,fieldstring(self,'thickness_obs','observed thickness [m]'))
+		string="%s\n%s"%(string,fieldstring(self,'surface_obs','observed surface elevation [m]'))
+		string="%s\n%s"%(string,'Available cost functions:')
+		string="%s\n%s"%(string, '   101: SurfaceAbsVelMisfit')
+		string="%s\n%s"%(string, '   102: SurfaceRelVelMisfit')
+		string="%s\n%s"%(string, '   103: SurfaceLogVelMisfit')
+		string="%s\n%s"%(string, '   104: SurfaceLogVxVyMisfit')
+		string="%s\n%s"%(string, '   105: SurfaceAverageVelMisfit')
+		string="%s\n%s"%(string, '   201: ThicknessAbsMisfit')
+		string="%s\n%s"%(string, '   501: DragCoefficientAbsGradient')
+		string="%s\n%s"%(string, '   502: RheologyBbarAbsGradient')
+		string="%s\n%s"%(string, '   503: ThicknessAbsGradient')
+		return string
+	def setdefaultparameters(self):
+
+		#default is incomplete adjoint for now
+		self.incomplete_adjoint=1
+
+		#parameter to be inferred by control methods (only
+		#drag and B are supported yet)
+		self.control_parameters=['FrictionCoefficient']
+
+		#number of iterations and steps
+		self.maxsteps=20;
+		self.maxiter =30;
+
+		#default tolerances
+		self.fatol = 0;
+		self.frtol = 0;
+		self.gatol = 0;
+		self.grtol = 0;
+		self.gttol = 1e-4;
+
+		#minimization algorithm
+		PETSCMAJOR = IssmConfig('_PETSC_MAJOR_')[0]
+		PETSCMINOR = IssmConfig('_PETSC_MINOR_')[0]
+		if(PETSCMAJOR>3 or (PETSCMAJOR==3 and PETSCMINOR>=5)):
+			self.algorithm = 'blmvm';
+		else:
+			self.algorithm = 'tao_blmvm';
+		
+		#several responses can be used:
+		self.cost_functions=101;
+
+		return self
+
+	def extrude(self,md):
+		self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node')
+		self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node')
+		self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node')
+		self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node')
+
+		if numel(self.cost_functions_coefficients) > 1:
+			self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node')
+		
+		if numel(self.min_parameters) > 1:
+			self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node')
+		
+		if numel(self.max_parameters)>1:
+			self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node')
+
+		return self
+
+	def checkconsistency(self,md,solution,analyses):
+		if not self.control:
+			return md
+		if not IssmConfig('_HAVE_TAO_')[0]:
+			md = checkmessage(md,['TAO has not been installed, ISSM needs to be reconfigured and recompiled with TAO'])
+
+
+		num_controls= numpy.numel(md.inversion.control_parameters)
+		num_costfunc= numpy.size(md.inversion.cost_functions,2)
+
+		md = checkfield(md,'fieldname','inversion.iscontrol','values',[0, 1])
+		md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0, 1])
+		md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())
+		md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.maxiter','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.fatol','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.frtol','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.gatol','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.grtol','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.gttol','numel',1,'>=',0)
+
+
+		PETSCMAJOR = IssmConfig('_PETSC_MAJOR_')[0]
+		PETSCMINOR = IssmConfig('_PETSC_MINOR_')[0]
+		if(PETSCMAJOR>3 or (PETSCMAJOR==3 and PETSCMINOR>=5)):
+			md = checkfield(md,'fieldname','inversion.algorithm','values',{'blmvm','cg','lmvm'})
+		else:
+			md = checkfield(md,'fieldname','inversion.algorithm','values',{'tao_blmvm','tao_cg','tao_lmvm'})
+
+
+		md = checkfield(md,'fieldname','inversion.cost_functions','size',[1, num_costfunc],'values',supportedcostfunctions())
+		md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices, num_costfunc],'>=',0)
+		md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices, num_controls])
+		md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices, num_controls])
+
+
+		if solution=='BalancethicknessSolution':
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1)
+		elif solution=='BalancethicknessSoftSolution':
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1)
+		else:
+			md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1)
+
+		def marshall(self, md, fid):
+
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean')
+			WriteData(fid,prefix,'name','md.inversion.type','data',1,'format','Integer')
+			if not self.iscontrol:
+				return
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','incomplete_adjoint','format','Boolean')
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxsteps','format','Integer')
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxiter','format','Integer')
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','fatol','format','Double')
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','frtol','format','Double')
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','gatol','format','Double')
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','grtol','format','Double')
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','gttol','format','Double')
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','algorithm','format','String')
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1)
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3)
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3)
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',1)
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',1)
+
+			#process control parameters
+			num_control_parameters = numpy.numel(self.control_parameters)
+			WriteData(fid,prefix,'object',self,'fieldname','control_parameters','format','StringArray')
+			WriteData(fid,prefix,'data',num_control_parameters,'name','md.inversion.num_control_parameters','format','Integer')
+
+			#process cost functions
+			num_cost_functions = numpy.size(self.cost_functions,2)
+			data= marshallcostfunctions(self.cost_functions)
+			WriteData(fid,prefix,'data',data,'name','md.inversion.cost_functions','format','StringArray')
+			WriteData(fid,prefix,'data',num_cost_functions,'name','md.inversion.num_cost_functions','format','Integer')
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/template.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/template.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/template.js	(revision 21239)
@@ -0,0 +1,18 @@
+//TEMPLATE class definition
+//
+//   Usage:
+//      template=new template();
+
+function template (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   template class echo:'));
+
+	}// }}}
+	//properties 
+	// {{{
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/thermal.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/thermal.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/thermal.js	(revision 21239)
@@ -0,0 +1,144 @@
+//THERMAL class definition
+//
+//   Usage:
+//      thermal=new thermal();
+
+function thermal (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//Number of unstable constraints acceptable
+		this.penalty_threshold=0;
+
+		//Type of stabilization used
+		this.stabilization=1;
+
+		//Relative tolerance for the enthalpy convergence
+		this.reltol=0.01;
+
+		//Maximum number of iterations
+		this.maxiter=100;
+
+		//factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor
+		this.penalty_factor=3;
+
+		//Should we use cold ice (default) or enthalpy formulation
+		this.isenthalpy=0;
+
+		//will basal boundary conditions be set dynamically
+		this.isdynamicbasalspc=0;
+
+		//default output
+		this.requested_outputs=['default'];
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   Thermal solution parameters:'));
+
+		fielddisplay(this,'spctemperature','temperature constraints (NaN means no constraint) [K]');
+		fielddisplay(this,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG');
+		fielddisplay(this,'reltol','relative tolerance convergence criterion for enthalpy');
+		fielddisplay(this,'maxiter','maximum number of non linear iterations');
+		fielddisplay(this,'penalty_lock','stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)');
+		fielddisplay(this,'penalty_threshold','threshold to declare convergence of thermal solution (default is 0)');
+		fielddisplay(this,'penalty_factor','scaling exponent (default is 3)');
+		fielddisplay(this,'isenthalpy','use an enthalpy formulation to include temperate ice (default is 0)');
+		fielddisplay(this,'isdynamicbasalspc','enable dynamic setting of basal forcing. required for enthalpy formulation (default is 0)');
+		fielddisplay(this,'requested_outputs','additional outputs requested');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "thermal";
+	}// }}}
+    this.extrude = function(md) {//{{{
+        this.spctemperature=project3d(md,'vector',this.spctemperature,'type','node','layer',md.mesh.numberoflayers,'padding',NaN);
+        if (md.initialization.temperature.length===md.mesh.numberofvertices) {
+            this.spctemperature = ArrayFill2D(Create2DArray(md.mesh.numberofvertices, 1), NaN);
+            var pos=ArrayFindNot2D(md.mesh.vertexonsurface, 0);
+            pos.forEach(function(x) { // impose observed temperature on surface
+                this.spctemperature[x] = md.initialization.temperature[x];
+            });
+        }
+
+        return this;
+    }//}}}
+	this.checkconsistency = function(md,solution,analyses){ // {{{
+
+		//Early return
+		if(!ArrayAnyEqual(ArrayIsMember('ThermalAnalysis',analyses),1) & !ArrayAnyEqual(ArrayIsMember('EnthalpyAnalysis',analyses),1)  | (solution == 'TransientSolution' & md.trans.isthermal==0)) return;
+
+		checkfield(md,'fieldname','thermal.stabilization','numel',[1],'values',[0 ,1, 2]);
+		checkfield(md,'fieldname','thermal.spctemperature','Inf',1,'timeseries',1);
+		if(ArrayAnyEqual(ArrayIsMember('EnthalpyAnalysis',analyses),1) & md.thermal.isenthalpy & md.mesh.dimension() == 3){
+			
+			for(var i=0;i<md.mesh.numberofvertices;i++){
+				for(var j=0;j<md.thermal.spctemperature[0].length;j++){
+					if (!isNaN(md.thermal.spctemperature[i][j])){
+						var rep=md.geometry.surface[i]-md.mesh.z[i];
+						if (md.thermal.spctemperature[i][j] <= md.materials.melting-md.materials.beta*md.materials.rho_ice*md.constants.g*rep+Math.pow(10,-5)){
+
+							md.checkmessage('spctemperature should be less or equal than the adjusted melting point');
+							break;
+						}
+					}
+				}
+			}
+			checkfield(md,'fieldname','thermal.isenthalpy','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','thermal.isdynamicbasalspc','numel', [1],'values',[0, 1]);
+			if(md.thermal.isenthalpy){
+				if (isNan(md.stressbalance.reltol)){
+					md.checkmessage('for a steadystate computation, thermal.reltol (relative convergence criterion) must be defined!');
+				}
+			}
+			checkfield(md,'fieldname','thermal.reltol','>',0.,'message','reltol must be larger than zero');
+		}
+		checkfield(md,'fieldname','thermal.requested_outputs','stringrow',1);
+	} // }}} 
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','spctemperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',this,'fieldname','penalty_threshold','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','stabilization','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','reltol','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','penalty_lock','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','penalty_factor','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','isenthalpy','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isdynamicbasalspc','format','Boolean');
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}
+			WriteData(fid,prefix,'data',outputs,'name','md.thermal.requested_outputs','format','StringArray');
+        	}//}}}
+		this.defaultoutputs = function(md) { //{{{
+
+			if (this.isenthalpy) return ['Enthalpy','Temperature','Waterfraction','Watercolumn','BasalforcingsGroundediceMeltingRate'];
+			else return ['Temperature','BasalforcingsGroundediceMeltingRate'];
+		}//}}}
+		this.fix=function() { //{{{
+			this.spctemperature=NullFix(this.spctemperature,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.spctemperature    = NaN;
+	this.penalty_threshold = 0;
+	this.stabilization     = 0;
+	this.reltol				= 0;
+	this.maxiter           = 0;
+	this.penalty_lock      = 0;
+	this.penalty_factor    = 0;
+	this.isenthalpy        = 0;
+	this.isdynamicbasalspc = 0;
+	this.requested_outputs = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/thermal.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/thermal.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/thermal.m	(revision 21239)
@@ -0,0 +1,150 @@
+%THERMAL class definition
+%
+%   Usage:
+%      thermal=thermal();
+
+classdef thermal
+	properties (SetAccess=public) 
+		spctemperature    = NaN;
+		penalty_threshold = 0;
+		stabilization     = 0;
+		reltol				= 0;
+		maxiter           = 0;
+		penalty_lock      = 0;
+		penalty_factor    = 0;
+		isenthalpy        = 0;
+		isdynamicbasalspc = 0;
+		requested_outputs = {};
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.spctemperature=project3d(md,'vector',self.spctemperature,'type','node','layer',md.mesh.numberoflayers,'padding',NaN);
+			if (length(md.initialization.temperature)==md.mesh.numberofvertices),
+				self.spctemperature=NaN(md.mesh.numberofvertices,1);
+				pos=find(md.mesh.vertexonsurface);
+				self.spctemperature(pos)=md.initialization.temperature(pos); %impose observed temperature on surface
+			end
+		end % }}}
+		function self = thermal(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+
+			if self.isenthalpy,
+				list = {'Enthalpy','Temperature','Waterfraction','Watercolumn','BasalforcingsGroundediceMeltingRate'};
+			else
+				list = {'Temperature','BasalforcingsGroundediceMeltingRate'};
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Number of unstable constraints acceptable
+			self.penalty_threshold=0;
+
+			%Type of stabilization used
+			self.stabilization=1;
+
+			%Relative tolerance for the enthalpy convergence
+			self.reltol=0.01;
+
+			%Maximum number of iterations
+			self.maxiter=100;
+
+			%factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor
+			self.penalty_factor=3;
+
+			%Should we use cold ice (default) or enthalpy formulation
+			self.isenthalpy=0;
+
+			%will basal boundary conditions be set dynamically
+			self.isdynamicbasalspc=0;
+
+			%default output
+			self.requested_outputs={'default'};
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if (~ismember('ThermalAnalysis',analyses) & ~ismember('EnthalpyAnalysis',analyses)) | (strcmp(solution,'TransientSolution') & md.transient.isthermal==0), return; end
+
+			md = checkfield(md,'fieldname','thermal.stabilization','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','thermal.spctemperature','Inf',1,'timeseries',1,'>=',0);
+			if (ismember('EnthalpyAnalysis',analyses) & md.thermal.isenthalpy & dimension(md.mesh)==3),
+
+				%Make sure the spc are less than melting point
+				TEMP=md.thermal.spctemperature(1:md.mesh.numberofvertices,:);
+				replicate=repmat(md.geometry.surface-md.mesh.z,1,size(md.thermal.spctemperature,2));
+				pos=find(~isnan(TEMP));
+				md = checkfield(md,'fieldname','thermal.spctemperature','field',TEMP(pos)',...
+					'<=',md.materials.meltingpoint-md.materials.beta*md.materials.rho_ice*md.constants.g*replicate(pos)+10^-5,...
+					'message','spctemperature should be less or equal than the adjusted melting point');
+
+				md = checkfield(md,'fieldname','thermal.isenthalpy','numel',[1],'values',[0 1]);
+				md = checkfield(md,'fieldname','thermal.isdynamicbasalspc','numel', [1],'values',[0 1]);
+				if(md.thermal.isenthalpy)
+					if isnan(md.stressbalance.reltol),
+						md = checkmessage(md,['for a steadystate computation, thermal.reltol (relative convergence criterion) must be defined!']);
+					end 
+					md = checkfield(md,'fieldname','thermal.reltol','>',0.,'message','reltol must be larger than zero');
+				end
+	    end
+
+		 md = checkfield(md,'fieldname','thermal.requested_outputs','stringrow',1);
+    end % }}} 
+		function disp(self) % {{{
+			disp(sprintf('   Thermal solution parameters:'));
+
+			fielddisplay(self,'spctemperature','temperature constraints (NaN means no constraint) [K]');
+			fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG');
+			fielddisplay(self,'reltol','relative tolerance convergence criterion for enthalpy');
+			fielddisplay(self,'maxiter','maximum number of non linear iterations');
+			fielddisplay(self,'penalty_lock','stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)');
+			fielddisplay(self,'penalty_threshold','threshold to declare convergence of thermal solution (default is 0)');
+			fielddisplay(self,'penalty_factor','scaling exponent (default is 3)');
+			fielddisplay(self,'isenthalpy','use an enthalpy formulation to include temperate ice (default is 0)');
+			fielddisplay(self,'isdynamicbasalspc',['enable dynamic setting of basal forcing. required for enthalpy formulation (default is 0)']);
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','spctemperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','penalty_threshold','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','reltol','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','penalty_lock','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','penalty_factor','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','isenthalpy','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isdynamicbasalspc','format','Boolean');
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.thermal.requested_outputs','format','StringArray');
+        	end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.thermal.spctemperature'],self.spctemperature);
+			writejsdouble(fid,[modelname '.thermal.penalty_threshold'],self.penalty_threshold);
+			writejsdouble(fid,[modelname '.thermal.stabilization'],self.stabilization);
+			writejsdouble(fid,[modelname '.thermal.reltol'],self.reltol);
+			writejsdouble(fid,[modelname '.thermal.maxiter'],self.maxiter);
+			writejsdouble(fid,[modelname '.thermal.penalty_lock'],self.penalty_lock);
+			writejsdouble(fid,[modelname '.thermal.penalty_factor'],self.penalty_factor);
+			writejsdouble(fid,[modelname '.thermal.isenthalpy'],self.isenthalpy);
+			writejsdouble(fid,[modelname '.thermal.isdynamicbasalspc'],self.isdynamicbasalspc);
+			writejscellstring(fid,[modelname '.thermal.requested_outputs'],self.requested_outputs);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/thermal.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/thermal.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/thermal.py	(revision 21239)
@@ -0,0 +1,129 @@
+import numpy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class thermal(object):
+	"""
+	THERMAL class definition
+
+	   Usage:
+	      thermal=thermal();
+	"""
+
+	def __init__(self): # {{{
+		self.spctemperature    = float('NaN')
+		self.penalty_threshold = 0
+		self.stabilization     = 0
+		self.reltol            = 0
+		self.maxiter           = 0
+		self.penalty_lock      = 0
+		self.penalty_factor    = 0
+		self.isenthalpy        = 0
+		self.isdynamicbasalspc = 0;
+		self.requested_outputs = []
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   Thermal solution parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'spctemperature','temperature constraints (NaN means no constraint) [K]'))
+		string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG'))
+		string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of non linear iterations'))
+		string="%s\n%s"%(string,fielddisplay(self,'reltol','relative tolerance criterion'))
+		string="%s\n%s"%(string,fielddisplay(self,'penalty_lock','stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)'))
+		string="%s\n%s"%(string,fielddisplay(self,'penalty_threshold','threshold to declare convergence of thermal solution (default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'isenthalpy','use an enthalpy formulation to include temperate ice (default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'isdynamicbasalspc','enable dynamic setting of basal forcing. required for enthalpy formulation (default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.spctemperature=project3d(md,'vector',self.spctemperature,'type','node','layer',md.mesh.numberoflayers,'padding',numpy.nan)
+		if isinstance(md.initialization.temperature,numpy.ndarray) and numpy.size(md.initialization.temperature,axis=0)==md.mesh.numberofvertices:
+			self.spctemperature=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+			pos=numpy.nonzero(md.mesh.vertexonsurface)[0]
+			self.spctemperature[pos]=md.initialization.temperature[pos]    #impose observed temperature on surface
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+
+		if self.isenthalpy:
+			return ['Enthalpy','Temperature','Waterfraction','Watercolumn','BasalforcingsGroundediceMeltingRate']
+		else:
+			return ['Temperature','BasalforcingsGroundediceMeltingRate']
+
+	#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#Number of unstable constraints acceptable
+		self.penalty_threshold=0
+
+		#Type of stabilization used
+		self.stabilization=1
+
+		#Relative tolerance for the enthalpy convergence
+		self.reltol=0.01
+
+		#Maximum number of iterations
+		self.maxiter=100
+
+		#factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor
+		self.penalty_factor=3
+
+		#Should we use cold ice (default) or enthalpy formulation
+		self.isenthalpy=0
+
+		#will basal boundary conditions be set dynamically
+		self.isdynamicbasalspc=0;
+
+		#default output
+		self.requested_outputs=['default']
+		return self
+
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if ('ThermalAnalysis' not in analyses and 'EnthalpyAnalysis' not in analyses) or (solution=='TransientSolution' and not md.transient.isthermal):
+			return md
+
+		md = checkfield(md,'fieldname','thermal.stabilization','numel',[1],'values',[0,1,2])
+		md = checkfield(md,'fieldname','thermal.spctemperature','Inf',1,'timeseries',1)
+		if 'EnthalpyAnalysis' in analyses and md.thermal.isenthalpy and md.mesh.dimension()==3:
+			pos=numpy.nonzero(numpy.logical_not(numpy.isnan(md.thermal.spctemperature[0:md.mesh.numberofvertices])))
+			replicate=numpy.tile(md.geometry.surface-md.mesh.z,(1,numpy.size(md.thermal.spctemperature,axis=1)))
+			md = checkfield(md,'fieldname','thermal.spctemperature[numpy.nonzero(numpy.logical_not(numpy.isnan(md.thermal.spctemperature[0:md.mesh.numberofvertices,:])))]','<',md.materials.meltingpoint-md.materials.beta*md.materials.rho_ice*md.constants.g*replicate[pos],'message',"spctemperature should be below the adjusted melting point")
+			md = checkfield(md,'fieldname','thermal.isenthalpy','numel',[1],'values',[0,1])
+			md = checkfield(md,'fieldname','thermal.isdynamicbasalspc','numel',[1],'values',[0,1]);
+			if(md.thermal.isenthalpy):
+				if numpy.isnan(md.stressbalance.reltol):
+					md.checkmessage("for a steadystate computation, thermal.reltol (relative convergence criterion) must be defined!")
+				md = checkfield(md,'fieldname','thermal.reltol','>',0.,'message',"reltol must be larger than zero");
+		md = checkfield(md,'fieldname','thermal.requested_outputs','stringrow',1)
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'object',self,'fieldname','spctemperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		WriteData(fid,prefix,'object',self,'fieldname','penalty_threshold','format','Integer')
+		WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer')
+		WriteData(fid,prefix,'object',self,'fieldname','reltol','format','Double');
+		WriteData(fid,prefix,'object',self,'fieldname','maxiter','format','Integer')
+		WriteData(fid,prefix,'object',self,'fieldname','penalty_lock','format','Integer')
+		WriteData(fid,prefix,'object',self,'fieldname','penalty_factor','format','Double')
+		WriteData(fid,prefix,'object',self,'fieldname','isenthalpy','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','isdynamicbasalspc','format','Boolean');
+
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,prefix,'data',outputs,'name','md.thermal.requested_outputs','format','StringArray')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/timestepping.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/timestepping.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/timestepping.js	(revision 21239)
@@ -0,0 +1,77 @@
+//TIMESTEPPING class definition
+//
+//   Usage:
+//      timestepping=new timestepping();
+
+function timestepping (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		//time between 2 time steps
+		this.time_step=1./2.;
+
+		//final time
+		this.final_time=10.*this.time_step;
+
+		//time adaptation? 
+		this.time_adapt=0;
+		this.cfl_coefficient=0.5;
+
+		//should we interpolate forcings between timesteps?
+		this.interp_forcings=1;
+	}// }}}
+	this.disp= function(){// {{{
+
+		var unit;
+		console.log(sprintf('   timestepping parameters:'));
+		unit = 'yr';
+		fielddisplay(this,'start_time','simulation starting time ['+ unit + ']');
+		fielddisplay(this,'final_time','final time to stop the simulation ['+ unit + ']');
+		fielddisplay(this,'time_step','length of time steps [' +unit+ ']');
+		fielddisplay(this,'time_adapt','use cfl condition to define time step ? (0 or 1) ');
+		fielddisplay(this,'cfl_coefficient','coefficient applied to cfl condition');
+		fielddisplay(this,'interp_forcings','interpolate in time between requested forcing values ? (0 or 1)');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "timestepping";
+
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+			
+			checkfield(md,'fieldname','timestepping.start_time','numel',[1],'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','timestepping.final_time','numel',[1],'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','timestepping.time_adapt','numel',[1],'values',[0,1]);
+			checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1);
+			checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0,1]);
+			if (this.final_time-this.start_time<0){
+				md.checkmessage('timestepping.final_time should be larger than timestepping.start_time');
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var scale;
+			scale = md.constants.yts;
+			
+			WriteData(fid,prefix,'object',this,'fieldname','start_time','format','Double','scale',scale);
+			WriteData(fid,prefix,'object',this,'fieldname','final_time','format','Double','scale',scale);
+			WriteData(fid,prefix,'object',this,'fieldname','time_step','format','Double','scale',scale);
+			WriteData(fid,prefix,'object',this,'fieldname','time_adapt','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','cfl_coefficient','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','interp_forcings','format','Boolean');
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.start_time      = 0.;
+	this.final_time      = 0.;
+	this.time_step       = 0.;
+	this.time_adapt      = 0;
+	this.cfl_coefficient = 0.;
+	this.interp_forcings = 1;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/timestepping.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/timestepping.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/timestepping.m	(revision 21239)
@@ -0,0 +1,84 @@
+%TIMESTEPPING Class definition
+%
+%   Usage:
+%      timestepping=timestepping();
+
+classdef timestepping
+	properties (SetAccess=public) 
+		start_time      = 0.;
+		final_time      = 0.;
+		time_step       = 0.;
+		time_adapt      = 0;
+		cfl_coefficient = 0.;
+		interp_forcings = 1;
+	end
+	methods
+		function self = timestepping(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%time between 2 time steps
+			self.time_step=1./2.;
+
+			%final time
+			self.final_time=10.*self.time_step;
+
+			%time adaptation? 
+			self.time_adapt=0;
+			self.cfl_coefficient=0.5;
+
+			%should we interpolate forcings between timesteps?
+			self.interp_forcings=1;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','timestepping.start_time','numel',[1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','timestepping.final_time','numel',[1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','timestepping.time_adapt','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1);
+			md = checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0 1]);
+			if self.final_time-self.start_time<0,
+				md = checkmessage(md,'timestepping.final_time should be larger than timestepping.start_time');
+			end 
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   timestepping parameters:'));
+
+			unit = 'yr';
+			fielddisplay(self,'start_time',['simulation starting time [' unit ']']);
+			fielddisplay(self,'final_time',['final time to stop the simulation [' unit ']']);
+			fielddisplay(self,'time_step',['length of time steps [' unit ']']);
+			fielddisplay(self,'time_adapt','use cfl condition to define time step ? (0 or 1) ');
+			fielddisplay(self,'cfl_coefficient','coefficient applied to cfl condition');
+			fielddisplay(self,'interp_forcings','interpolate in time between requested forcing values ? (0 or 1)');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			scale = md.constants.yts;
+			WriteData(fid,prefix,'object',self,'fieldname','start_time','format','Double','scale',scale);
+			WriteData(fid,prefix,'object',self,'fieldname','final_time','format','Double','scale',scale);
+			WriteData(fid,prefix,'object',self,'fieldname','time_step','format','Double','scale',scale);
+			WriteData(fid,prefix,'object',self,'fieldname','time_adapt','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','cfl_coefficient','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','interp_forcings','format','Boolean');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.timestepping.start_time'],self.start_time);
+			writejsdouble(fid,[modelname '.timestepping.final_time'],self.final_time);
+			writejsdouble(fid,[modelname '.timestepping.time_step'],self.time_step);
+			writejsdouble(fid,[modelname '.timestepping.time_adapt'],self.time_adapt);
+			writejsdouble(fid,[modelname '.timestepping.cfl_coefficient'],self.cfl_coefficient);
+			writejsdouble(fid,[modelname '.timestepping.interp_forcings'],self.interp_forcings);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/timestepping.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/timestepping.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/timestepping.py	(revision 21239)
@@ -0,0 +1,74 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+class timestepping(object):
+	"""
+	TIMESTEPPING Class definition
+
+	   Usage:
+	      timestepping=timestepping();
+	"""
+
+	def __init__(self): # {{{
+		self.start_time      = 0.
+		self.final_time      = 0.
+		self.time_step       = 0.
+		self.time_adapt      = 0
+		self.cfl_coefficient = 0.
+		self.interp_forcings = 1
+		
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   timestepping parameters:"
+		string="%s\n%s"%(string,fielddisplay(self,"start_time","simulation starting time [yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"final_time","final time to stop the simulation [yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"time_step","length of time steps [yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"time_adapt","use cfl condition to define time step ? (0 or 1) "))
+		string="%s\n%s"%(string,fielddisplay(self,"cfl_coefficient","coefficient applied to cfl condition"))
+		string="%s\n%s"%(string,fielddisplay(self,"interp_forcings","interpolate in time between requested forcing values ? (0 or 1)"))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#time between 2 time steps
+		self.time_step=1./2.
+
+		#final time
+		self.final_time=10.*self.time_step
+
+		#time adaptation? 
+		self.time_adapt=0
+		self.cfl_coefficient=0.5
+		
+		#should we interpolate forcings between timesteps?
+		self.interp_forcings=1
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','timestepping.start_time','numel',[1],'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','timestepping.final_time','numel',[1],'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','timestepping.time_adapt','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1)
+		if self.final_time-self.start_time<0:
+			md.checkmessage("timestepping.final_time should be larger than timestepping.start_time")
+		md = checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0,1])
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+		yts=md.constants.yts
+		WriteData(fid,prefix,'object',self,'fieldname','start_time','format','Double','scale',yts)
+		WriteData(fid,prefix,'object',self,'fieldname','final_time','format','Double','scale',yts)
+		WriteData(fid,prefix,'object',self,'fieldname','time_step','format','Double','scale',yts)
+		WriteData(fid,prefix,'object',self,'fieldname','time_adapt','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','cfl_coefficient','format','Double')
+		WriteData(fid,prefix,'object',self,'fieldname','interp_forcings','format','Boolean')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/toolkits.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/toolkits.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/toolkits.js	(revision 21239)
@@ -0,0 +1,100 @@
+//TOOLKITS class definition
+//
+//   Usage:
+//      toolkits=new toolkits();
+
+function toolkits (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//default toolkits: 
+		if (IssmConfig('_HAVE_PETSC_')){
+			//MUMPS is the default toolkits
+			if (IssmConfig('_HAVE_MUMPS_')){
+				this.DefaultAnalysis           = mumpsoptions();
+			}
+			else{
+				this.DefaultAnalysis           = iluasmoptions(); 
+			}
+		}
+		else{
+			if (IssmConfig('_HAVE_MUMPS_')){
+				this.DefaultAnalysis           = issmmumpssolver(); 
+			}
+			else if (IssmConfig('_HAVE_GSL_')){
+				this.DefaultAnalysis           = issmgslsolver(); 
+			}
+			else{
+				console.warn('toolkits setdefaultparameters message: need at least Mumps or Gsl to define an issm solver type, no default solver assigned');
+			}
+		}
+	}// }}}
+	this.disp = function(){// {{{
+		console.log(sprintf('List of toolkits options per analysis:\n'));
+		for(var prop in this){
+			if(typeof this[prop] == 'object'){
+				console.log(prop+ ':',this[prop]);
+			}
+		}
+	}// }}}
+	this.checkconsistency = function (md,solution,analyses) { // {{{
+		for(var prop in this){
+			if(typeof this[prop] == 'object'){
+				if (this[prop] == ''){
+					md.checkmessage(sprintf("md.toolkits.%s is empty",prop));
+				}
+			}
+		}
+	} // }}}
+		 this.ToolkitsFile = function(filename) { //{{{
+		 //TOOLKITSFILE - build toolkits file (in string format)
+		 //
+		 //   Build a Petsc compatible options string, from the toolkits model field  + return options string. 
+		 //   This file string will also be used when the toolkit used is 'issm' instead of 'petsc'
+		 //
+		 //   Usage:     var toolkitsstring = toolkits.ToolkitsFile();
+
+			 var string = '';
+
+			 //write header
+			 string += sprintf('%s%s%s\n','\%Toolkits options file: ',filename,' written from Javascript toolkits array');
+
+			 //start writing options
+			 for (var analysis in this){
+				 var options;
+				 
+				 if(typeof this[analysis] == 'object') options=this[analysis]; else continue;
+
+				 //first write analysis:
+				 string += sprintf('\n+%s\n',analysis); //append a + to recognize it's an analysis string
+
+				 //now, write options
+			
+				 for(var optionname in options){
+					 var optionvalue=options[optionname];
+
+					 if (optionvalue.length==0){
+						 //this option has only one argument
+						 string+=sprintf('-%s\n',optionname);
+					 }
+					 else{
+						 //option with value. value can be string or scalar
+						 if (typeof optionvalue == 'number'){
+							 string+=sprintf('-%s %g\n',optionname,optionvalue);
+						 }
+						 else if (typeof optionvalue == 'string'){
+							 string+=sprintf('-%s %s\n',optionname,optionvalue);
+						 }
+						 else throw Error(sprintf("ToolkitsFile error: option '%s' is not well formatted",optionname));
+					 }
+				 }
+			 }
+			 return string;
+		 } //}}}
+	//properties 
+	// {{{
+	this.DefaultAnalysis           = [];
+	//The other properties are dynamic
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/toolkits.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/toolkits.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/toolkits.m	(revision 21239)
@@ -0,0 +1,137 @@
+%TOOLKITS class definition
+%
+%   Usage:
+%      self=toolkits();
+
+classdef toolkits < dynamicprops
+    properties (SetAccess=public) 
+		 DefaultAnalysis           = struct();
+		 %The other properties are dynamic
+	 end
+	 methods
+		 function self = toolkits(varargin) % {{{
+			 switch nargin
+				 case 0
+					 self=setdefaultparameters(self);
+				 case 1
+					 self=structtoobj(self,varargin{1});
+				 otherwise
+					 error('constructor not supported');
+				 end
+			 end % }}}
+		 function self = addoptions(self,analysis,varargin) % {{{
+		 % Usage example:
+		 %    md.toolkits=addoptions(md.toolkits,'StressbalanceAnalysis',FSoptions());
+		 %    md.toolkits=addoptions(md.toolkits,'StressbalanceAnalysis');
+
+			 %Create dynamic property if property does not exist yet
+			 if ~ismember(analysis,properties(self)),
+				 self.addprop(analysis);
+			 end
+
+			 %Add toolkits options to analysis
+			 if nargin==3, self.(analysis) = varargin{1}; end
+		 end
+		 %}}}
+		 function self = setdefaultparameters(self) % {{{
+
+			 %default toolkits: 
+			 if IssmConfig('_HAVE_PETSC_'),
+				 %MUMPS is the default toolkits
+				 if IssmConfig('_HAVE_MUMPS_'),
+					 self.DefaultAnalysis           = mumpsoptions();
+				 else
+					 self.DefaultAnalysis           = iluasmoptions(); 
+				 end
+			 else
+				 if IssmConfig('_HAVE_MUMPS_'),
+					 self.DefaultAnalysis           = issmmumpssolver(); 
+				 elseif IssmConfig('_HAVE_GSL_'),
+					 self.DefaultAnalysis           = issmgslsolver(); 
+				 else 
+					 disp('WARNING: Need at least Mumps or Gsl to define an issm solver type, no default solver assigned');
+				 end
+			 end
+
+		 end % }}}
+		 function disp(self) % {{{
+			 analyses=properties(self);
+			 disp(sprintf('List of toolkits options per analysis:\n'));
+			 for i=1:numel(analyses),
+				 analysis=analyses{i};
+				 disp([analysis ':']);
+				 disp(self.(analysis));
+			 end
+		 end % }}}
+		 function md = checkconsistency(self,md,solution,analyses) % {{{
+			 analyses=properties(self);
+			 for i=1:numel(analyses),
+				 if isempty(fieldnames(self.(analyses{i})))
+					 md = checkmessage(md,['md.toolkits.' analyses{i} ' is empty']);
+				 end
+			 end
+		 end % }}}
+		 function ToolkitsFile(toolkits,filename) % {{{
+		 %TOOLKITSFILE - build toolkits file
+		 %
+		 %   Build a Petsc compatible options file, from the toolkits model field  + return options string. 
+		 %   This file will also be used when the toolkit used is 'issm' instead of 'petsc'
+		 %
+		 %   Usage:     ToolkitsFile(toolkits,filename);
+
+			 %open file for writing
+			 fid=fopen(filename,'w');
+			 if fid==-1,
+				 error(['ToolkitsFile error: could not open ' filename ' for writing']);
+			 end
+
+			 %write header
+			 fprintf(fid,'%s%s%s\n','%Toolkits options file: ',filename,' written from Matlab toolkits array');
+
+			 %start writing options
+			 analyses=properties(toolkits);
+			 for i=1:numel(analyses),
+				 analysis=analyses{i};
+				 options=toolkits.(analysis);
+
+				 %first write analysis:
+				 fprintf(fid,'\n+%s\n',analysis); %append a + to recognize it's an analysis enum
+
+				 %now, write options
+				 optionslist=fieldnames(options);
+				 for j=1:numel(optionslist),
+					 optionname=optionslist{j};
+					 optionvalue=options.(optionname);
+
+					 if isempty(optionvalue),
+						 %this option has only one argument
+						 fprintf(fid,'-%s\n',optionname);
+					 else
+						 %option with value. value can be string or scalar
+						 if isnumeric(optionvalue),
+							 fprintf(fid,'-%s %g\n',optionname,optionvalue);
+						 elseif ischar(optionvalue),
+							 fprintf(fid,'-%s %s\n',optionname,optionvalue);
+						 else
+							 error(['ToolkitsFile error: option ' optionname ' is not well formatted']);
+						 end
+					 end
+				 end
+			 end
+
+			 fclose(fid);
+		 end %}}}
+		function savemodeljs(self,fid,modelname) % {{{
+	
+			analyses=properties(self);
+			 for i=1:numel(analyses),
+				 if isempty(fieldnames(self.(analyses{i})))
+					 error(['md.toolkits.' analyses{i} ' is empty']);
+				 else
+					 writejsstruct(fid,[modelname '.toolkits.' analyses{i}],self.(analyses{i}));
+				 end
+			 end
+	
+		end % }}}
+	 end
+ end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/toolkits.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/toolkits.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/toolkits.py	(revision 21239)
@@ -0,0 +1,107 @@
+from IssmConfig import IssmConfig
+from mumpsoptions import mumpsoptions
+from iluasmoptions import iluasmoptions
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from issmgslsolver import issmgslsolver
+from issmmumpssolver import issmmumpssolver
+
+class toolkits(object):
+	"""
+	TOOLKITS class definition
+
+	   Usage:
+	      self=toolkits();
+	"""
+
+	def __init__(self):    # {{{
+		#default toolkits
+		if IssmConfig('_HAVE_PETSC_')[0]:
+			#MUMPS is the default toolkits
+			if IssmConfig('_HAVE_MUMPS_')[0]:
+				self.DefaultAnalysis           = mumpsoptions()
+			else:
+				self.DefaultAnalysis           = iluasmoptions()
+		else:
+			if IssmConfig('_HAVE_MUMPS_')[0]:
+				self.DefaultAnalysis           = issmmumpssolver()
+			elif IssmConfig('_HAVE_GSL_')[0]:
+				self.DefaultAnalysis           = issmgslsolver()
+			else:
+				raise IOError("ToolkitsFile error: need at least Mumps or Gsl to define issm solver type")
+
+		#The other properties are dynamic
+	# }}}
+	def __repr__(self):    # {{{
+		s ="List of toolkits options per analysis:\n\n"
+		for analysis in vars(self).iterkeys():
+			s+="%s\n" % fielddisplay(self,analysis,'')
+
+		return s
+	# }}}
+	def addoptions(self,analysis,*args):    # {{{
+		# Usage example:
+		#    md.toolkits=addoptions(md.toolkits,'StressbalanceAnalysis',FSoptions());
+		#    md.toolkits=addoptions(md.toolkits,'StressbalanceAnalysis');
+
+		#Create dynamic property if property does not exist yet
+		if not hasattr(self,analysis):
+			setattr(self,analysis,None)
+
+		#Add toolkits options to analysis
+		if len(args)==1:
+			setattr(self,analysis,args[0])
+
+		return self
+	# }}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		for analysis in vars(self).iterkeys():
+			if not getattr(self,analysis):
+				md.checkmessage("md.toolkits.%s is empty" % analysis)
+
+		return md
+	# }}}
+	def ToolkitsFile(self,filename):    # {{{
+		"""
+		TOOLKITSFILE- build toolkits file
+
+		   Build a Petsc compatible options file, from the toolkits model field  + return options string
+		   This file will also be used when the toolkit used is 'issm' instead of 'petsc'
+
+
+		   Usage:     ToolkitsFile(toolkits,filename);
+		"""
+
+		#open file for writing
+		try:
+			fid=open(filename,'w')
+		except IOError as e:
+			raise IOError("ToolkitsFile error: could not open '%s' for writing." % filename)
+
+		#write header
+		fid.write("%s%s%s\n" % ('%Petsc options file: ',filename,' written from Matlab toolkits array'))
+
+		#start writing options
+		for analysis in vars(self).iterkeys():
+			options=getattr(self,analysis)
+
+			#first write analysis:
+			fid.write("\n+%s\n" % analysis)    #append a + to recognize it's an analysis enum
+
+			#now, write options
+			for optionname,optionvalue in options.iteritems():
+
+				if not optionvalue:
+					#this option has only one argument
+					fid.write("-%s\n" % optionname)
+				else:
+					#option with value. value can be string or scalar
+					if   isinstance(optionvalue,(bool,int,long,float)):
+						fid.write("-%s %g\n" % (optionname,optionvalue))
+					elif isinstance(optionvalue,(str,unicode)):
+						fid.write("-%s %s\n" % (optionname,optionvalue))
+					else:
+						raise TypeError("ToolkitsFile error: option '%s' is not well formatted." % optionname)
+
+		fid.close()
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/trans.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/trans.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/trans.js	(revision 21239)
@@ -0,0 +1,117 @@
+//TRANS class definition
+//
+//   Usage:
+//      trans =new trans();
+
+function trans (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
+		this.issmb           = 1;
+		this.ismasstransport = 1;
+		this.isstressbalance = 1;
+		this.isthermal       = 1;
+		this.isgroundingline = 0;
+		this.isgia           = 0;
+		this.isdamageevolution = 0;
+		this.ismovingfront   = 0;
+		this.ishydrology     = 0;
+		this.isslr           = 0;
+		this.iscoupler       = 0;
+
+		//default output
+		this.requested_outputs=['default'];
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   transient solution parameters:'));
+
+		fielddisplay(this,'issmb','indicates whether a surface mass balance solution is used in the transient');
+		fielddisplay(this,'ismasstransport','indicates whether a masstransport solution is used in the transient');
+		fielddisplay(this,'isstressbalance','indicates whether a stressbalance solution is used in the transient');
+		fielddisplay(this,'isthermal','indicates whether a thermal solution is used in the transient');
+		fielddisplay(this,'isgroundingline','indicates whether a groundingline migration is used in the transient');
+		fielddisplay(this,'isgia','indicates whether a postglacial rebound model is used in the transient');
+		fielddisplay(this,'isdamageevolution','indicates whether damage evolution is used in the transient');
+		fielddisplay(this,'ismovingfront','indicates whether a moving front capability is used in the transient');
+		fielddisplay(this,'ishydrology','indicates whether an hydrology model is used');
+		fielddisplay(this,'isslr','indicates whether a sea-level rise model is used');
+		fielddisplay(this,'iscoupler','indicates whether different models are being run with need for coupling');
+		fielddisplay(this,'requested_outputs','list of additional outputs requested');
+
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "transient";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { // {{{
+
+			//Early return
+			if (solution!='TransientSolution') return;
+
+			checkfield(md,'fieldname','trans.issmb','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.ismasstransport','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.isstressbalance','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.isthermal','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.isgroundingline','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','trans.isgia','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','trans.isdamageevolution','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','trans.ismovingfront','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','trans.ishydrology','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.iscoupler','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.isslr','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.requested_outputs','stringrow',1);
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			prefix='md.transient';
+			WriteData(fid,prefix,'object',this,'fieldname','issmb','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','ismasstransport','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isstressbalance','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isthermal','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isgroundingline','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isgia','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isdamageevolution','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','ishydrology','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','ismovingfront','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isslr','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','iscoupler','format','Boolean');
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}			
+			WriteData(fid,prefix,'data',outputs,'name','md.transient.requested_outputs','format','StringArray');
+		}//}}}
+		this.defaultoutputs = function(md) { //{{{
+			if(this.issmb)return ['SmbMassBalance'];
+			else return [];
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+
+	this.issmb             = 0;
+	this.ismasstransport   = 0;
+	this.isstressbalance   = 0;
+	this.isthermal         = 0;
+	this.isgroundingline   = 0;
+	this.isgia             = 0;
+	this.isdamageevolution = 0;
+	this.ismovingfront     = 0;
+	this.ishydrology       = 0;
+	this.isslr             = 0;
+	this.iscoupler         = 0;
+	this.requested_outputs = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/transient.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/transient.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/transient.m	(revision 21239)
@@ -0,0 +1,148 @@
+%TRANSIENT class definition
+%
+%   Usage:
+%      transient=transient();
+
+classdef transient
+	properties (SetAccess=public) 
+		issmb             = 0;
+		ismasstransport   = 0;
+		isstressbalance   = 0;
+		isthermal         = 0;
+		isgroundingline   = 0;
+		isgia             = 0;
+		isdamageevolution = 0;
+		ismovingfront     = 0;
+		ishydrology       = 0;
+		isslr             = 0;
+		iscoupler         = 0;
+		requested_outputs = {};
+	end
+	methods
+		function self = transient(varargin) % {{{
+			switch nargin
+				case 0
+					self = setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = deactivateall(self) % {{{
+
+			%full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
+			self.issmb           = 0;
+			self.ismasstransport = 0;
+			self.isstressbalance = 0;
+			self.isthermal       = 0;
+			self.isgroundingline = 0;
+			self.isgia           = 0;
+			self.isdamageevolution = 0;
+			self.ismovingfront   =0;
+			self.ishydrology     = 0;
+			self.isslr           = 0;
+			self.iscoupler       = 0;
+
+			%default output
+			self.requested_outputs={};
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
+			self.issmb           = 1;
+			self.ismasstransport = 1;
+			self.isstressbalance = 1;
+			self.isthermal       = 1;
+			self.isgroundingline = 0;
+			self.isgia           = 0;
+			self.isdamageevolution = 0;
+			self.ismovingfront   = 0;
+			self.ishydrology     = 0;
+			self.isslr           = 0;
+			self.iscoupler       = 0;
+
+			%default output
+			self.requested_outputs={'default'};
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			if(self.issmb)
+				list = {'SmbMassBalance'};
+			else
+				list = {};
+			end
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~strcmp(solution,'TransientSolution'), return; end
+
+			md = checkfield(md,'fieldname','transient.issmb','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.ismasstransport','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.isstressbalance','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.isthermal','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.isgroundingline','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.isgia','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.isdamageevolution','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.ismovingfront','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.ishydrology','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.requested_outputs','stringrow',1);
+			md = checkfield(md,'fieldname','transient.isslr','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.iscoupler','numel',[1],'values',[0 1]);
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   transient solution parameters:'));
+
+			fielddisplay(self,'issmb','indicates whether a surface mass balance solution is used in the transient');
+			fielddisplay(self,'ismasstransport','indicates whether a masstransport solution is used in the transient');
+			fielddisplay(self,'isstressbalance','indicates whether a stressbalance solution is used in the transient');
+			fielddisplay(self,'isthermal','indicates whether a thermal solution is used in the transient');
+			fielddisplay(self,'isgroundingline','indicates whether a groundingline migration is used in the transient');
+			fielddisplay(self,'isgia','indicates whether a postglacial rebound model is used in the transient');
+			fielddisplay(self,'isdamageevolution','indicates whether damage evolution is used in the transient');
+			fielddisplay(self,'ismovingfront','indicates whether a moving front capability is used in the transient');
+			fielddisplay(self,'ishydrology','indicates whether an hydrology model is used');
+			fielddisplay(self,'isslr','indicates whether a sea-level rise solution is used in the transient');
+			fielddisplay(self,'iscoupler','indicates whether different models are being run with need for coupling');
+			fielddisplay(self,'requested_outputs','list of additional outputs requested');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','issmb','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','ismasstransport','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isstressbalance','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isthermal','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isgroundingline','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isgia','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isdamageevolution','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','ishydrology','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','ismovingfront','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isslr','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','iscoupler','format','Boolean');
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.transient.requested_outputs','format','StringArray');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.trans.issmb'],self.issmb);
+			writejsdouble(fid,[modelname '.trans.ismasstransport'],self.ismasstransport);
+			writejsdouble(fid,[modelname '.trans.isstressbalance'],self.isstressbalance);
+			writejsdouble(fid,[modelname '.trans.isthermal'],self.isthermal);
+			writejsdouble(fid,[modelname '.trans.isgroundingline'],self.isgroundingline);
+			writejsdouble(fid,[modelname '.trans.isgia'],self.isgia);
+			writejsdouble(fid,[modelname '.trans.isdamageevolution'],self.isdamageevolution);
+			writejsdouble(fid,[modelname '.trans.ismovingfront'],self.ismovingfront);
+			writejsdouble(fid,[modelname '.trans.ishydrology'],self.ishydrology);
+			writejsdouble(fid,[modelname '.trans.isslr'],self.isslr);
+			writejsdouble(fid,[modelname '.trans.iscoupler'],self.iscoupler);
+			writejscellstring(fid,[modelname '.trans.requested_outputs'],self.requested_outputs);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/transient.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/transient.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/transient.py	(revision 21239)
@@ -0,0 +1,134 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+class transient(object):
+	"""
+	TRANSIENT class definition
+
+	   Usage:
+	      transient=transient();
+	"""
+
+	def __init__(self): # {{{
+		self.issmb   = False
+		self.ismasstransport   = False
+		self.isstressbalance   = False
+		self.isthermal         = False
+		self.isgroundingline   = False
+		self.isgia             = False
+		self.isdamageevolution = False
+		self.ismovingfront     = False
+		self.ishydrology       = False
+		self.isslr             = False
+		self.iscoupler         = False
+		self.requested_outputs = []
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   transient solution parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'issmb','indicates if a surface mass balance solution is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'ismasstransport','indicates if a masstransport solution is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'isstressbalance','indicates if a stressbalance solution is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'isthermal','indicates if a thermal solution is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'isgroundingline','indicates if a groundingline migration is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'isgia','indicates if a postglacial rebound is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'isdamageevolution','indicates whether damage evolution is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'ismovingfront','indicates whether a moving front capability is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'ishydrology','indicates whether an hydrology model is used'))
+		string="%s\n%s"%(string,fielddisplay(self,'isslr','indicates if a sea level rise solution is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'iscoupler','indicates whether different models are being run with need for coupling'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','list of additional outputs requested'))
+		return string
+		#}}}
+	def defaultoutputs(self,md): # {{{
+
+		if self.issmb:
+			return ['SmbMassBalance']
+		else:
+			return []
+
+	#}}}
+	def setallnullparameters(self): # {{{
+		
+		#Nothing done
+		self.issmb   = False
+		self.ismasstransport   = False
+		self.isstressbalance   = False
+		self.isthermal         = False
+		self.isgroundingline   = False
+		self.isgia             = False
+		self.isdamageevolution = False
+		self.ismovingfront     = False
+		self.ishydrology       = False
+		self.isslr             = False
+		self.iscoupler         = False
+
+		#default output
+		self.requested_outputs=[]
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
+		self.issmb = True
+		self.ismasstransport = True
+		self.isstressbalance = True
+		self.isthermal       = True
+		self.isgroundingline = False
+		self.isgia           = False
+		self.isdamageevolution = False
+		self.ismovingfront   = False
+		self.ishydrology     = False
+		self.isslr           = False
+		self.iscoupler       = False
+
+		#default output
+		self.requested_outputs=['default']
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if not solution=='TransientSolution':
+			return md
+
+		md = checkfield(md,'fieldname','transient.issmb','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.ismasstransport','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.isstressbalance','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.isthermal','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.isgroundingline','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.isgia','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.isdamageevolution','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.ishydrology','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.ismovingfront','numel',[1],'values',[0,1]);
+		md = checkfield(md,'fieldname','transient.isslr','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.iscoupler','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.requested_outputs','stringrow',1)
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'object',self,'fieldname','issmb','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','ismasstransport','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','isstressbalance','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','isthermal','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','isgroundingline','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','isgia','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','isdamageevolution','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','ishydrology','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','ismovingfront','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','isslr','format','Boolean')
+		WriteData(fid,prefix,'object',self,'fieldname','iscoupler','format','Boolean')
+
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,prefix,'data',outputs,'name','md.transient.requested_outputs','format','StringArray')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/verbose.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/verbose.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/verbose.js	(revision 21239)
@@ -0,0 +1,83 @@
+//VERBOSE class definition
+//
+//   Available verbosity levels:
+//      mprocessor  : model processing 
+//      module      : modules
+//      solution    : solution sequence
+//      solver      : solver info (extensive)
+//      convergence : convergence criteria
+//      control     : control method
+//      qmu         : sensitivity analysis
+//      autodiff    : AD analysis
+//      smb         : smb analysis
+//
+//   Usage:
+//      verbose=verbose();
+//      verbose=verbose(3);
+//      verbose=verbose('all');
+//      verbose=verbose('001100');
+//      verbose=verbose('module',true,'solver',false);
+
+//WARNING: some parts of this file are Synchronized with src/c/shared/Numerics/Verbosity.h
+//         Do not modify these sections. See src/c/shared/Numerics/README for more info
+
+function verbose (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		//BEGINDISP
+		console.log(sprintf('verbose class echo:'));
+		console.log(sprintf('   %s : %i','mprocessor',this.mprocessor));
+		console.log(sprintf('   %s : %i','module',this.module));
+		console.log(sprintf('   %s : %i','solution',this.solution));
+		console.log(sprintf('   %s : %i','solver',this.solver));
+		console.log(sprintf('   %s : %i','convergence',this.convergence));
+		console.log(sprintf('   %s : %i','control',this.control));
+		console.log(sprintf('   %s : %i','qmu',this.qmu));
+		console.log(sprintf('   %s : %i','autodiff',this.autodiff));
+		console.log(sprintf('   %s : %i','smb',this.smb));
+		//ENDDISP
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses){ // {{{
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'data',this.VerboseToBinary(),'name','md.verbose','format','Integer');
+		}//}}}
+		this.VerboseToBinary = function () { //{{{
+
+			//BEGINVERB2BIN
+			var binary=0;
+			if (this.mprocessor) binary=binary|1; 
+			if (this.module) binary=binary|2; 
+			if (this.solution) binary=binary|4; 
+			if (this.solver) binary=binary|8; 
+			if (this.convergence) binary=binary|16; 
+			if (this.control) binary=binary|32; 
+			if (this.qmu) binary=binary|64; 
+			if (this.autodiff) binary=binary|128; 
+			if (this.smb) binary=binary|256; 
+			//ENDVERB2BIN
+			return binary;
+
+		} //}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	//BEGINFIELDS
+	this.mprocessor=false;
+	this.module=false;
+	this.solution=false;
+	this.solver=false;
+	this.convergence=false;
+	this.control=false;
+	this.qmu=false;
+	this.autodiff=false;
+	this.smb=false;
+	//ENDFIELDS
+	// }}}
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/verbose.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/verbose.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/verbose.m	(revision 21239)
@@ -0,0 +1,151 @@
+%VERBOSE class definition
+%
+%   Available verbosity levels:
+%      mprocessor  : model processing 
+%      module      : modules
+%      solution    : solution sequence
+%      solver      : solver info (extensive)
+%      convergence : convergence criteria
+%      control     : control method
+%      qmu         : sensitivity analysis
+%      autodiff    : AD analysis
+%      smb         : smb analysis
+%
+%   Usage:
+%      verbose=verbose();
+%      verbose=verbose(3);
+%      verbose=verbose('all');
+%      verbose=verbose('001100');
+%      verbose=verbose('module',true,'solver',false);
+
+%WARNING: some parts of this file are Synchronized with src/c/shared/Numerics/Verbosity.h
+%         Do not modify these sections. See src/c/shared/Numerics/README for more info
+
+classdef verbose
+	properties (SetAccess=public) 
+		% {{{
+		%BEGINFIELDS
+		mprocessor=false;
+		module=false;
+		solution=false;
+		solver=false;
+		convergence=false;
+		control=false;
+		qmu=false;
+		autodiff=false;
+		smb=false;
+		%ENDFIELDS
+		% }}}
+	end
+	%}}}
+	methods
+		function verbose=verbose(varargin) % {{{
+
+			switch(nargin),
+				case 0,
+					verbose.solution=true;
+					verbose.qmu=true;
+					verbose.control=true;
+				case 1,
+					binary=varargin{1};
+					if     ischar(binary),
+						if strcmpi(binary,'all'),
+							binary=2^11-1; %all ones
+							verbose=BinaryToVerbose(verbose,binary);
+							verbose.solver=false; %Do not use by default
+						else
+							binary=bin2dec(binary);
+							verbose=BinaryToVerbose(verbose,binary);
+						end
+					elseif isnumeric(binary),
+						verbose=BinaryToVerbose(verbose,binary);
+					end 
+				otherwise,
+					%Use options to initialize object
+					verbose=AssignObjectFields(pairoptions(varargin{:}),verbose);
+
+					%Cast to logicals
+					listproperties=properties('verbose');
+					for i=1:numel(listproperties),
+						fieldname=listproperties{i};
+						fieldvalue=verbose.(fieldname);
+						if (islogical(fieldvalue) | isnumeric(fieldvalue)) & numel(fieldvalue)==1,
+							verbose.(fieldname)=logical(fieldvalue);
+						else
+							error('verbose supported field values are logicals only (true or false)');
+						end
+					end
+			end
+		end
+		%}}}
+		function binary=VerboseToBinary(verbose) % {{{
+
+		%BEGINVERB2BIN
+		binary=0;
+		if (verbose.mprocessor), binary=bitor(binary,1); end
+		if (verbose.module), binary=bitor(binary,2); end
+		if (verbose.solution), binary=bitor(binary,4); end
+		if (verbose.solver), binary=bitor(binary,8); end
+		if (verbose.convergence), binary=bitor(binary,16); end
+		if (verbose.control), binary=bitor(binary,32); end
+		if (verbose.qmu), binary=bitor(binary,64); end
+		if (verbose.autodiff), binary=bitor(binary,128); end
+		if (verbose.smb), binary=bitor(binary,256); end
+		%ENDVERB2BIN
+
+		end
+		%}}}
+		function verbose=BinaryToVerbose(verbose,binary) % {{{
+
+		%BEGINBIN2VERB
+		if bitand(binary,1), verbose.mprocessor=true; else verbose.mprocessor=false; end
+		if bitand(binary,2), verbose.module=true; else verbose.module=false; end
+		if bitand(binary,4), verbose.solution=true; else verbose.solution=false; end
+		if bitand(binary,8), verbose.solver=true; else verbose.solver=false; end
+		if bitand(binary,16), verbose.convergence=true; else verbose.convergence=false; end
+		if bitand(binary,32), verbose.control=true; else verbose.control=false; end
+		if bitand(binary,64), verbose.qmu=true; else verbose.qmu=false; end
+		if bitand(binary,128), verbose.autodiff=true; else verbose.autodiff=false; end
+		if bitand(binary,256), verbose.smb=true; else verbose.smb=false; end
+		%ENDBIN2VERB
+
+		end
+		%}}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+		end % }}}
+		function disp(verbose) % {{{
+
+		%BEGINDISP
+		disp(sprintf('class ''%s''  = ',class(verbose)));
+		disp(sprintf('   %15s : %s','mprocessor',mat2str(verbose.mprocessor)));
+		disp(sprintf('   %15s : %s','module',mat2str(verbose.module)));
+		disp(sprintf('   %15s : %s','solution',mat2str(verbose.solution)));
+		disp(sprintf('   %15s : %s','solver',mat2str(verbose.solver)));
+		disp(sprintf('   %15s : %s','convergence',mat2str(verbose.convergence)));
+		disp(sprintf('   %15s : %s','control',mat2str(verbose.control)));
+		disp(sprintf('   %15s : %s','qmu',mat2str(verbose.qmu)));
+		disp(sprintf('   %15s : %s','autodiff',mat2str(verbose.autodiff)));
+		disp(sprintf('   %15s : %s','smb',mat2str(verbose.smb)));
+		%ENDDISP
+
+		end
+		%}}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'data',VerboseToBinary(self),'name','md.verbose','format','Integer');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.verbose.mprocessor'],self.mprocessor);
+			writejsdouble(fid,[modelname '.verbose.module'],self.module);
+			writejsdouble(fid,[modelname '.verbose.solution'],self.solution);
+			writejsdouble(fid,[modelname '.verbose.solver'],self.solver);
+			writejsdouble(fid,[modelname '.verbose.convergence'],self.convergence);
+			writejsdouble(fid,[modelname '.verbose.control'],self.control);
+			writejsdouble(fid,[modelname '.verbose.qmu'],self.qmu);
+			writejsdouble(fid,[modelname '.verbose.autodiff'],self.autodiff);
+			writejsdouble(fid,[modelname '.verbose.smb'],self.smb);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/verbose.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/verbose.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/classes/verbose.py	(revision 21239)
@@ -0,0 +1,137 @@
+from pairoptions import pairoptions
+import MatlabFuncs as m
+from WriteData import WriteData
+
+class verbose(object):
+	"""
+	VERBOSE class definition
+
+	   Available verbosity levels:
+	      mprocessor  : model processing 
+	      module      : modules
+	      solution    : solution sequence
+	      solver      : solver info (extensive)
+	      convergence : convergence criteria
+	      control     : control method
+	      qmu         : sensitivity analysis
+	      autodiff    : AD analysis
+	      smb         : SMB analysis
+
+	   Usage:
+	      verbose=verbose();
+	      verbose=verbose(3);
+	      verbose=verbose('001100');
+	      verbose=verbose('module',True,'solver',False);
+
+	WARNING: some parts of this file are Synchronized with src/c/shared/Numerics/Verbosity.h
+	         Do not modify these sections. See src/c/shared/Numerics/README for more info
+	"""
+
+	def __init__(self,*args):    # {{{
+		#BEGINFIELDS
+		self.mprocessor  = False
+		self.module      = False
+		self.solution    = False
+		self.solver      = False
+		self.convergence = False
+		self.control     = False
+		self.qmu         = False
+		self.autodiff    = False
+		self.smb         = False
+		#ENDFIELDS
+
+		if not len(args):
+			#Don't do anything
+			self.solution=True;
+			self.qmu=True;
+			self.control=True;
+			pass
+
+		elif len(args) == 1:
+			binary=args[0]
+			if   isinstance(binary,(str,unicode)):
+				if binary.lower()=='all':
+					binary=2**11-1    #all ones
+					self.BinaryToVerbose(binary)
+					self.solver=False    #Do not use by default
+				else:
+					binary=int(binary,2)
+					self.BinaryToVerbose(binary)
+			elif isinstance(binary,(int,long,float)):
+				self.BinaryToVerbose(int(binary))
+
+		else:
+			#Use options to initialize object
+			self=pairoptions(*args).AssignObjectFields(self)
+
+			#Cast to logicals
+			listproperties=vars(self)
+			for fieldname,fieldvalue in listproperties.iteritems():
+				if isinstance(fieldvalue,bool) or isinstance(fieldvalue,(int,long,float)):
+					setattr(self,fieldname,bool(fieldvalue))
+				else:
+					raise TypeError("verbose supported field values are logicals only (True or False)")
+	# }}}
+	def __repr__(self):    # {{{
+			
+		#BEGINDISP
+		s ="class '%s'  = \n" % type(self)
+		s+="   %15s : %s\n" % ('mprocessor',self.mprocessor)
+		s+="   %15s : %s\n" % ('module',self.module)
+		s+="   %15s : %s\n" % ('solution',self.solution)
+		s+="   %15s : %s\n" % ('solver',self.solver)
+		s+="   %15s : %s\n" % ('convergence',self.convergence)
+		s+="   %15s : %s\n" % ('control',self.control)
+		s+="   %15s : %s\n" % ('qmu',self.qmu)
+		s+="   %15s : %s\n" % ('autodiff',self.autodiff)
+		s+="   %15s : %s\n" % ('smb',self.smb)
+		#ENDDISP
+
+		return s
+	# }}}
+	def VerboseToBinary(self):    # {{{
+
+		#BEGINVERB2BIN
+		binary=0
+		if self.mprocessor:
+			binary=binary |  1
+		if self.module:
+			binary=binary |  2
+		if self.solution:
+			binary=binary |  4
+		if self.solver:
+			binary=binary |  8
+		if self.convergence:
+			binary=binary | 16
+		if self.control:
+			binary=binary | 32
+		if self.qmu:
+			binary=binary | 64
+		if self.autodiff:
+			binary=binary | 128
+		if self.smb:
+			binary=binary | 256
+		#ENDVERB2BIN
+
+		return binary
+	# }}}
+	def BinaryToVerbose(self,binary):    # {{{
+
+		#BEGINBIN2VERB
+		self.mprocessor =bool(binary &   1)
+		self.module     =bool(binary &   2)
+		self.solution   =bool(binary &   4)
+		self.solver     =bool(binary &   8)
+		self.convergence=bool(binary &  16)
+		self.control    =bool(binary &  32)
+		self.qmu        =bool(binary &  64)
+		self.autodiff   =bool(binary & 128)
+		self.smb        =bool(binary & 256)
+		#ENDBIN2VERB
+	# }}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+		WriteData(fid,prefix,'data',self.VerboseToBinary(),'name','md.verbose','format','Integer')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/QueueRequirements.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/QueueRequirements.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/QueueRequirements.m	(revision 21239)
@@ -0,0 +1,35 @@
+function QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,queue,np,time)
+%QUEUEREQUIREMENTS - queue requirements in time, number of cpus, by name of queue.
+%
+%   Usage: 
+%      QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,np,time)
+
+%Ok, go through requirements for current queue:
+index=ismemberi(queue,available_queues);
+if  ~index,
+	%ok, either we a generic cluster, with 'none' queue, or we could not find the queue reqruirements
+	if strcmpi(available_queues{1},'none'),
+		%reset index to 1, so we can fish the requirements
+		index=1;
+	else
+		string=available_queues{1};
+		for i=2:length(available_queues),
+			string=[string ' ' available_queues{i}];
+		end
+		error(['QueueRequirements error message: availables queues are ' string]);
+	end
+end
+
+%check on time requirements
+rtime=queue_requirements_time(index);
+if time<=0,
+	error('QueueRequirements: time should be a positive number');
+end
+if time>rtime,
+	error(['QueueRequirements: time should be < ' num2str(rtime) ' for queue: ' queue]);
+end
+
+%check on np requirements
+if np<=0,
+	error('QueueRequirements: np should be a positive number');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/QueueRequirements.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/QueueRequirements.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/QueueRequirements.py	(revision 21239)
@@ -0,0 +1,20 @@
+def QueueRequirements(queudict,queue,np,time):
+	#QUEUEREQUIREMENTS - queue requirements in time, number of cpus, by name of queue.
+	#
+	#   Usage: 
+	#      QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,np,time)
+
+	#Ok, go through requirements for current queue:
+	try:
+		rtime=queudict[queue][0]
+	except KeyError:
+		raise Exception('QueueRequirements error message: availables queues are '+ queuedict.keys)
+		
+	if time<=0:
+		raise Exception('QueueRequirements: time should be a positive number')
+	if time>rtime:
+		raise Exception('QueueRequirements: time should be < '+ str(rtime)+ ' for queue: '+ queue)
+
+	#check on np requirements
+	if np<=0:
+		raise Exception('QueueRequirements: np should be a positive number')
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/checkfield.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/checkfield.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/checkfield.js	(revision 21239)
@@ -0,0 +1,272 @@
+function checkfield(md){
+//CHECKFIELD - check field consistency
+//
+//   Used to check model consistency.
+//   Requires: 
+//     'field' or 'fieldname' option. If 'fieldname' is provided, it will retrieve it from the model md. (md.(fieldname)) 
+//             If 'field' is provided, it will assume the argument following 'field' is a numeric array.
+//   Available options:
+//      - NaN: 1 if check that there is no NaN
+//      - Inf: 1 if check that there is no Inf
+//      - size: [lines cols], NaN for non checked dimensions
+//      - >:  greater than provided value
+//      - >=: greater or equal to provided value
+//      - <:  smallerthan provided value
+//      - <=: smaller or equal to provided value
+//      - < vec:  smallerthan provided values on each vertex
+//      - timeseries: 1 if check time series consistency (size and time)
+//      - values: array of strings or vector of acceptable values
+//      - numel: list of acceptable number of elements
+//      - array: 1 if check that is array
+//      - empty: 1 if check that non empty
+//      - message: overloaded error message
+//
+//   Usage:
+//      checkfield(md,fieldname,options);
+
+	//get options
+	var args = Array.prototype.slice.call(arguments);
+	var  options = new pairoptions(args.slice(1,args.length));
+	
+	//get field: 
+	if (options.exist('field')){
+		field=options.getfieldvalue('field'); 
+		fieldname=options.getfieldvalue('fieldname','no fieldname'); 
+	}
+	else{
+		fieldname=options.getfieldvalue('fieldname'); 
+		eval("field=md." + fieldname + ";");
+	}
+
+	//check empty
+	if (options.exist('empty')){
+		if (field.length == 0){
+			md.checkmessage(options.getfieldvalue('message','field ' + "'" + fieldname + "'" + 'is empty'));
+		}
+	}
+
+	//Check size
+	if (options.exist('size')){
+		fieldsize=options.getfieldvalue('size');
+		if (isNaN(fieldsize[0])){
+			if (field[0].length !=fieldsize[1]){
+				md.checkmessage(options.getfieldvalue('message', sprintf("field '%s' should have %i columns",fieldname,fieldsize[1])));
+			}
+		}
+		else if (isNaN(fieldsize[1])){
+			if (field.length!= fieldsize[0]){
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have %i lines",fieldname,fieldsize[0])));
+			}
+		}
+		else{
+			if (IsArray(field)){
+				if ((field.length!=fieldsize[0])){
+					md.checkmessage(options.getfieldvalue('message', sprintf("field '%s' should be %ix%i",fieldname,fieldsize[0],fieldsize[1])));
+				}
+			}
+			if (IsArray(field[0])){
+				if(field[0].length!=fieldsize[1]){
+					md.checkmessage(options.getfieldvalue('message', sprintf("field '%s' should be %ix%i",fieldname,fieldsize[0],fieldsize[1])));
+				}
+			}
+		}
+	}
+
+	//Check numel
+	if (options.exist('numel')){
+		fieldnumel=options.getfieldvalue('numel');
+		if (!ArrayIsMember(fieldnumel,[field.length])){
+			if (fieldnumel.length==1){
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' size should be %i",fieldname,fieldnumel[0])));
+			}
+			else if (fieldnumel.length==2){
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' size should be %i or %i",fieldname,fieldnumel[0],fieldnumel[1])));
+			}
+			else{
+				var string=''; 
+				for (var i=0;i<fieldnumel.length;i++)string=sprintf("%s or %i",string,fieldnumel[i]);
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' size should be %s",fieldname,string)));
+			}
+		}
+	}
+
+	//check NaN
+	if (options.getfieldvalue('NaN',0)){
+		field2=MatrixToList(field);
+		if (ArrayAnyEqual(field2,NaN)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("NaN values found in field %s",field)));
+		}
+	}
+
+	//check Inf
+	if (options.getfieldvalue('Inf',0)){
+		field2=MatrixToList(field);
+		if (ArrayAnyEqual(field2,Infinity)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("Inf values found in field %s",field)));
+		}
+	}
+
+	//check arry
+	if (options.getfieldvalue('array',0)){
+		if (!IsArray(field)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should be an array!",fieldname)));
+		}
+	}
+
+	//check values
+	if (options.exist('values')){
+		fieldvalues=options.getfieldvalue('values');
+		if (typeof fieldvalues[0]== 'string'){
+			if (typeof field == 'string'){
+				if(ArrayAnyEqual(ArrayIsMember([field],fieldvalues),0)){
+					if (fieldvalues.length==1){
+						md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' value should be %s",fieldname,fieldvalues[0])));
+					}
+					else if (fieldvalues.length==2){
+						md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' values should be %s or %s",fieldname,fieldvalues[0],fieldvalues[1])));
+					}
+					else{
+						var string=''; 
+						for (var i=0;i<fieldvalues.length;i++)string=sprintf("%s or %s",string,fieldvalues[i]);
+						md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values in %s",fieldname,string)));
+					}
+				}
+			}
+			else{
+				var string=''; for (var i=0;i<fieldvalues.length;i++)string=sprintf("%s or %s",string,fieldvalues[i]);
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values in %s",fieldname,string)));
+			}
+		}
+		else{
+			if (typeof field == 'number') field2=MatrixToList([field]);
+			else field2=MatrixToList(field);
+			if (typeof field2[0] == 'number'){
+				if(ArrayAnyEqual(ArrayIsMember(field2,fieldvalues),0)){
+					var string=''; for (var i=0;i<fieldvalues.length;i++)string=sprintf("%s or %g",string,fieldvalues[i]);
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values in %s",fieldname,string)));
+				}
+			}
+			else{
+				var string=''; for (var i=0;i<fieldvalues.length;i++)string=sprintf("%s or %g",string,fieldvalues[i]);
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should be a number in %s",fieldname,string)));
+			}
+		}
+	}
+	
+	//check greater
+	if (options.exist('>=')){
+		lowerbound=options.getfieldvalue('>=');
+		field2=MatrixToList(field);
+		if (options.getfieldvalue('timeseries',0)) field2=MatrixToList(ArrayCopy(field).splice(-1,1));
+
+		if (ArrayAnyBelowStrict(field2,lowerbound)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values above %g",fieldname,lowerbound)));
+		}
+	}
+	if (options.exist('>')){
+		lowerbound=options.getfieldvalue('>');
+		field2=MatrixToList(field);
+		if (options.getfieldvalue('timeseries',0)) field2=MatrixToList(ArrayCopy(field).splice(-1,1));
+
+		if (ArrayAnyBelowOrEqual(field2,lowerbound)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values above %g",fieldname,lowerbound)));
+		}
+	}
+	
+	//check smaller
+	if (options.exist('<=')){
+		upperbound=options.getfieldvalue('<=');
+		field2=MatrixToList(field);
+		if (options.getfieldvalue('timeseries',0)) field2=MatrixToList(ArrayCopy(field).splice(-1,1));
+
+		if (ArrayAnyAboveOrEqual(field2,upperbound)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values below %g",fieldname,upperbound)));
+		}
+	}
+	
+	
+	if (options.exist('<')){
+		upperbound=options.getfieldvalue('<');
+		field2=MatrixToList(field);
+		if (options.getfieldvalue('timeseries',0)) field2=MatrixToList(ArrayCopy(field).splice(-1,1));
+		if (ArrayAnyAboveStrict(field2,upperbound)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values below %g",fieldname,upperbound)));
+		}
+	}
+
+	//Check row of stringrow
+	if (options.getfieldvalue('stringrow',0)){
+		if (IsArray(field[0])){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have only one row",field)));
+		}
+		if (!IsArray(field)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should be an array of string",fieldname)));
+		}
+		else{
+			for(var i=0;i<field.length;i++){
+				if (!(typeof field[i] == 'string')){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' values should be a cell of strings",fieldname)));
+				}
+			}
+		}
+	}
+
+	//check file
+	if (options.getfieldvalue('file',0)){
+		/*if ~exist(field,'file')
+			md.checkmessage(['file provided in ''' fieldname ''': ''' field ''' does not exist']);
+		end*/
+		throw Error("checkfield error message: file checking on javascript not supported yet!");
+	}
+
+	//Check forcings (size and times)
+	if (options.getfieldvalue('timeseries',0)){
+		if (field.length==md.mesh.numberofvertices | field.length==md.mesh.numberofelements){
+			if (IsArray(field[0])){
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have only one column as there are md.mesh.numberofvertices lines",fieldname)));
+			}
+		}
+		else if ((field.length==md.mesh.numberofvertices+1) | (field.length==md.mesh.numberofelements+1)){
+			var times=field[field.length-1]; var sorted_times=ArraySort(times);
+			for(var i=0;i<times.length;i++){
+				if(times[i] !=sorted_times[i]){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' columns should be sorted chronologically",fieldname)));
+					break;
+				}
+			}
+			var timesm=ArrayCopy(times).splice(0,-1); var timesp=ArrayCopy(times).shift();
+			for(var i=0;i<timesm.length;i++){
+				if(timesm[i]==timesp[i]){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' columns must not contain duplicate timesteps",fieldname)));
+					break;
+				}
+			}
+		}
+		else{
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have md.mesh.numberofvertices or md.mesh.numberofvertices+1 lines",fieldname)));
+		}
+	}
+
+	//Check single value forcings (size and times)
+	if (options.getfieldvalue('singletimeseries',0)){
+		if (field.length==2){
+			var times=field[1]; var sorted_times=ArraySort(times);
+			for(var i=0;i<times.length;i++){
+				if(times[i] !=sorted_times[i]){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' columns should be sorted chronologically",fieldname)));
+					break;
+				}
+			}
+			var timesm=ArrayCopy(times).splice(0,-1); var timesp=ArrayCopy(times).shift();
+			for(var i=0;i<timesm.length;i++){
+				if(timesm[i]==timesp[i]){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' columns must not contain duplicate timesteps",fieldname)));
+					break;
+				}
+			}
+		}
+		else{
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have 2 lines",fieldname)));
+		}
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/checkfield.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/checkfield.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/checkfield.m	(revision 21239)
@@ -0,0 +1,250 @@
+function md = checkfield(md,varargin)
+%CHECKFIELD - check field consistency
+%
+%   Used to check model consistency.
+%   Requires: 
+%     'field' or 'fieldname' option. If 'fieldname' is provided, it will retrieve it from the model md. (md.(fieldname)) 
+%             If 'field' is provided, it will assume the argument following 'field' is a numeric array.
+%   Available options:
+%      - NaN: 1 if check that there is no NaN
+%      - Inf: 1 if check that there is no Inf
+%      - size: [lines cols], NaN for non checked dimensions
+%      - >:  greater than provided value
+%      - >=: greater or equal to provided value
+%      - <:  smallerthan provided value
+%      - <=: smaller or equal to provided value
+%      - < vec:  smallerthan provided values on each vertex
+%      - timeseries: 1 if check time series consistency (size and time)
+%      - values: cell of strings or vector of acceptable values
+%      - numel: list of acceptable number of elements
+%      - cell: 1 if check that is cell
+%      - empty: 1 if check that non empty
+%      - message: overloaded error message
+%
+%   Usage:
+%      md = checkfield(md,fieldname,options);
+
+%get options
+options=pairoptions(varargin{:});
+
+%get field: 
+if exist(options,'field'), 
+	field=getfieldvalue(options,'field'); 
+	fieldname=getfieldvalue(options,'fieldname','no fieldname'); 
+else
+	fieldname=getfieldvalue(options,'fieldname'); 
+	eval(['field=md.' fieldname ';']);
+end
+
+%check empty
+if exist(options,'empty')
+	if isempty(field),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' is empty']));
+	end
+end
+
+%Check size
+if exist(options,'size')
+	fieldsize=getfieldvalue(options,'size');
+	if isnan(fieldsize(1)),
+		if (size(field,2)~=fieldsize(2)),
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' should have ' num2str(fieldsize(2)) ' columns']));
+		end
+	elseif isnan(fieldsize(2)),
+		if (size(field,1)~=fieldsize(1)),
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' should have ' num2str(fieldsize(1)) ' lines']));
+		end
+	else
+		if ((size(field,1)~=fieldsize(1)) |  (size(field,2)~=fieldsize(2)))
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' size should be ' num2str(fieldsize(1)) ' x ' num2str(fieldsize(2))]));
+		end
+	end
+end
+
+%Check numel
+if exist(options,'numel')
+	fieldnumel=getfieldvalue(options,'numel');
+	if ~ismember(numel(field),fieldnumel),
+		if length(fieldnumel)==1
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' size should be ' sprintf('%g ',fieldnumel) ]));
+		elseif length(fieldnumel)==2
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' size should be ' num2str(fieldnumel(1)) ' or ' num2str(fieldnumel(2)) ]));
+		else
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' size should be ' sprintf('%g, ',fieldnumel(1:end-1)) ' or ' num2str(fieldnumel(end)) ]));
+		end
+	end
+end
+
+%check NaN
+if getfieldvalue(options,'NaN',0);
+	field2=reshape(field,prod(size(field)),1);
+	if any(isnan(field2)),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['NaN values found in field ''' fieldname '''']));
+	end
+end
+
+%check Inf
+if getfieldvalue(options,'Inf',0);
+	field2=reshape(field,prod(size(field)),1);
+	if any(isinf(field2)),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['Inf values found in field ''' fieldname '''']));
+	end
+end
+
+
+%check cell
+if getfieldvalue(options,'cell',0);
+	if ~iscell(field),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' should be a cell']));
+	end
+end
+
+%check values
+if exist(options,'values')
+	fieldvalues=getfieldvalue(options,'values');
+	if iscell(fieldvalues), %strings
+		if ischar(field) | iscell(fieldvalues),
+			if any(~ismember(field,fieldvalues)),
+				if length(fieldvalues)==1
+					md = checkmessage(md,getfieldvalue(options,'message',...
+						['field ''' fieldname ''' value should be ''' fieldvalues{1} '''']));
+				elseif length(fieldvalues)==2
+					md = checkmessage(md,getfieldvalue(options,'message',...
+						['field ''' fieldname ''' values should be ''' fieldvalues{1} ''' or ''' fieldvalues{2} '''']));
+				else
+					md = checkmessage(md,getfieldvalue(options,'message',...
+						['field ''' fieldname ''' should have values in ' sprintf('''%s'', ',fieldvalues{1:end-1}) 'or ''' fieldvalues{end} '''']));
+				end
+			end
+		else
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' should be one of the following strings: ' sprintf('''%s'', ',fieldvalues{1:end-1}) 'or ''' fieldvalues{end} '''']));
+		end
+	else
+		field2=reshape(field,prod(size(field)),1);
+		if isnumeric(field),
+			if any(~ismember(field2,fieldvalues)),
+				md = checkmessage(md,getfieldvalue(options,'message',...
+					['field ''' fieldname ''' should have values in [' num2str(fieldvalues) ']']));
+			end
+		else
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' should be a number in [' num2str(fieldvalues) ']']));
+		end
+	end
+end
+
+%check greater
+if exist(options,'>=')
+	lowerbound=getfieldvalue(options,'>=');
+	field2=reshape(field,prod(size(field)),1);
+	if getfieldvalue(options,'timeseries',0), field2=reshape(field(1:end-1,:),prod(size(field(1:end-1,:))),1); end
+	if any(field2<lowerbound),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' should have values above ' num2str(lowerbound(1,1))]));
+	end
+end
+if exist(options,'>')
+	lowerbound=getfieldvalue(options,'>');
+	field2=reshape(field,prod(size(field)),1);
+	if getfieldvalue(options,'timeseries',0), field2=reshape(field(1:end-1,:),prod(size(field(1:end-1,:))),1); end
+	if any(field2<=lowerbound),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' should have values above ' num2str(lowerbound(1,1))]));
+	end
+end
+
+%check smaller
+if exist(options,'<=')
+	upperbound=getfieldvalue(options,'<=');
+	field2=reshape(field,prod(size(field)),1);
+	if getfieldvalue(options,'timeseries',0), field2=reshape(field(1:end-1,:),prod(size(field(1:end-1,:))),1); end
+	if any(field2>upperbound),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' should have values below ' num2str(upperbound(1,1))]));
+	end
+end
+if exist(options,'<')
+	upperbound=getfieldvalue(options,'<');
+	field2=reshape(field,prod(size(field)),1);
+	if getfieldvalue(options,'timeseries',0), field2=reshape(field(1:end-1,:),prod(size(field(1:end-1,:))),1); end
+	if any(field2>=upperbound),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' should have values below ' num2str(upperbound(1,1))]));
+	end
+end
+
+%Check row of stringrow
+if getfieldvalue(options,'stringrow',0),
+	if(size(field,1)~=1 & size(field,1)~=0),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' should have only one row']));
+	end
+	if ~iscell(field),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' should be a cell of strings']));
+	else
+		for i=1:size(field,2),
+			if ~ischar(field{i}),
+				md = checkmessage(md,getfieldvalue(options,'message',...
+					['field ''' fieldname ''' values should a cell of chars']));
+			end
+		end
+	end
+end
+
+%check file
+if getfieldvalue(options,'file',0),
+	if ~exist(field,'file')
+		md = checkmessage(md,['file provided in ''' fieldname ''': ''' field ''' does not exist']);
+	end
+end
+
+%Check forcings (size and times)
+if getfieldvalue(options,'timeseries',0),
+	if (size(field,1)==md.mesh.numberofvertices | size(field,1)==md.mesh.numberofelements),
+		if ~size(field,2)==1,
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' should have only one column as there are md.mesh.numberofvertices lines']));
+		end
+	elseif (size(field,1)==md.mesh.numberofvertices+1 | size(field,1)==md.mesh.numberofelements+1),
+		if any(field(end,:)~=sort(field(end,:))),
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' columns should be sorted chronologically']));
+		end
+		if any(field(end,1:end-1)==field(end,2:end)),
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' columns must not contain duplicate timesteps']));
+		end
+	else
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' should have md.mesh.numberofvertices or md.mesh.numberofvertices+1 lines']));
+	end
+end
+
+%Check single value forcings (size and times)
+if getfieldvalue(options,'singletimeseries',0),
+	if size(field,1)==2
+		if any(field(end,:)~=sort(field(end,:))),
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' columns should be sorted chronologically']));
+		end
+		if any(field(end,1:end-1)==field(end,2:end)),
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' columns must not contain duplicate timesteps']));
+		end
+	else
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' should have 2 lines']));
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/checkfield.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/checkfield.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/checkfield.py	(revision 21239)
@@ -0,0 +1,189 @@
+import numpy
+import os
+from pairoptions import pairoptions
+import MatlabFuncs as m
+
+def checkfield(md,*args):
+	"""
+	CHECKFIELD - check field consistency
+
+	   Used to check model consistency.,
+	   Requires: 
+	   'field' or 'fieldname' option. If 'fieldname' is provided, it will retrieve it from the model md. (md.(fieldname)) 
+             If 'field' is provided, it will assume the argument following 'field' is a numeric array.
+
+	   Available options:
+	      - NaN: 1 if check that there is no NaN
+	      - size: [lines cols], NaN for non checked dimensions
+	      - >:  greater than provided value
+	      - >=: greater or equal to provided value
+	      - <:  smallerthan provided value
+	      - <=: smaller or equal to provided value
+	      - < vec:  smallerthan provided values on each vertex
+	      - timeseries: 1 if check time series consistency (size and time)
+	      - values: cell of strings or vector of acceptable values
+	      - numel: list of acceptable number of elements
+	      - cell: 1 if check that is cell
+	      - empty: 1 if check that non empty
+	      - message: overloaded error message
+
+	   Usage:
+	      md = checkfield(md,fieldname,options);
+	"""
+
+	#get options
+	options=pairoptions(*args)
+
+	#get field from model
+	if options.exist('field'):
+		field=options.getfieldvalue('field')
+		fieldname=options.getfieldvalue('fieldname','no fieldname')
+	else:
+		fieldname=options.getfieldvalue('fieldname') 
+		exec("field=md.{}".format(fieldname))
+
+	if isinstance(field,(bool,int,long,float)):
+		field=numpy.array([field])
+
+	#check empty
+	if options.exist('empty'):
+		if not field:
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' is empty" % fieldname))
+
+	#Check size
+	if options.exist('size'):
+		fieldsize=options.getfieldvalue('size')
+		if   len(fieldsize) == 1:
+			if   numpy.isnan(fieldsize[0]):
+				pass
+			elif not numpy.size(field,0)==fieldsize[0]:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' size should be %d" % (fieldname,fieldsize[0])))
+		elif len(fieldsize) == 2:
+			if   numpy.isnan(fieldsize[0]):
+				if not numpy.size(field,1)==fieldsize[1]:
+					md = md.checkmessage(options.getfieldvalue('message',\
+						"field '%s' should have %d columns" % (fieldname,fieldsize[1])))
+			elif numpy.isnan(fieldsize[1]):
+				if not numpy.size(field,0)==fieldsize[0]:
+					md = md.checkmessage(options.getfieldvalue('message',\
+						"field '%s' should have %d lines" % (fieldname,fieldsize[0])))
+			else:
+				if (not numpy.size(field,0)==fieldsize[0]) or (not numpy.size(field,1)==fieldsize[1]):
+					md = md.checkmessage(options.getfieldvalue('message',\
+						"field '%s' size should be %d x %d" % (fieldname,fieldsize[0],fieldsize[1])))
+	
+	#Check numel
+	if options.exist('numel'):
+		fieldnumel=options.getfieldvalue('numel')
+		if numpy.size(field) not in fieldnumel:
+			if   len(fieldnumel)==1:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' size should be %d" % (fieldname,fieldnumel)))
+			elif len(fieldnumel)==2:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' size should be %d or %d" % (fieldname,fieldnumel[0],fieldnumel[1])))
+			else:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' size should be %s" % (fieldname,fieldnumel)))
+
+	#check NaN
+	if options.getfieldvalue('NaN',0):
+		if numpy.any(numpy.isnan(field)):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"NaN values found in field '%s'" % fieldname))
+
+	#check Inf
+	if options.getfieldvalue('Inf',0):
+		if numpy.any(numpy.isinf(field)):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"Inf values found in field '%s'" % fieldname))
+
+	#check cell
+	if options.getfieldvalue('cell',0):
+		if not isinstance(field,(tuple,list,dict)):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should be a cell" % fieldname))
+
+	#check values
+	if options.exist('values'):
+		fieldvalues=options.getfieldvalue('values')
+		if False in m.ismember(field,fieldvalues):
+			if   len(fieldvalues)==1:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' value should be '%s'"  % (fieldname,fieldvalues[0])))
+			elif len(fieldvalues)==2:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' values should be '%s' or '%s'"  % (fieldname,fieldvalues[0],fieldvalues[1])))
+			else:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' should have values in %s" % (fieldname,fieldvalues)))
+
+	#check greater
+	if options.exist('>='):
+		lowerbound=options.getfieldvalue('>=')
+		if numpy.any(field<lowerbound):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should have values above %d" % (fieldname,lowerbound)))
+	if options.exist('>'):
+		lowerbound=options.getfieldvalue('>')
+		if numpy.any(field<=lowerbound):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should have values above %d" % (fieldname,lowerbound)))
+
+	#check smaller
+	if options.exist('<='):
+		upperbound=options.getfieldvalue('<=')
+		if numpy.any(field>upperbound):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should have values below %d" % (fieldname,upperbound)))
+	if options.exist('<'):
+		upperbound=options.getfieldvalue('<')
+		if numpy.any(field>=upperbound):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should have values below %d" % (fieldname,upperbound)))
+
+	#check file
+	if options.getfieldvalue('file',0):
+		if not os.path.exists(field):
+			md = md.checkmessage("file provided in '%s': '%s' does not exist" % (fieldname,field))
+
+	#Check row of strings
+	if options.exist('stringrow'):
+		if not isinstance(field,list):
+			md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' should be a list" %fieldname))
+
+	#Check forcings (size and times)
+	if options.getfieldvalue('timeseries',0):
+		if   numpy.size(field,0)==md.mesh.numberofvertices:
+			if numpy.ndim(field)>1 and not numpy.size(field,1)==1:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' should have only one column as there are md.mesh.numberofvertices lines" % fieldname))
+		elif numpy.size(field,0)==md.mesh.numberofvertices+1 or numpy.size(field,0)==2:
+			if not all(field[-1,:]==numpy.sort(field[-1,:])):
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' columns should be sorted chronologically" % fieldname))
+			if any(field[-1,0:-1]==field[-1,1:]):
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' columns must not contain duplicate timesteps" % fieldname))
+		else:
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should have md.mesh.numberofvertices or md.mesh.numberofvertices+1 lines" % fieldname))
+
+	#Check single value forcings (size and times)
+	if options.getfieldvalue('singletimeseries',0):
+		if numpy.size(field,0)==2:
+			if not all(field[-1,:]==numpy.sort(field[-1,:])):
+				md = md.checkmessage(options.getfieldvalue('message',\
+						"field '%s' columns should be sorted chronologically" % fieldname))
+			if any(field[-1,0:-1]==field[-1,1:]):
+				md = md.checkmessage(options.getfieldvalue('message',\
+						"field '%s' columns must not contain duplicate timesteps" % fieldname))
+		else:
+				md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should have 2 lines" % fieldname))
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/comparemodels.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/comparemodels.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/comparemodels.m	(revision 21239)
@@ -0,0 +1,47 @@
+function comparemodels(md1,md2);
+
+	%loop over model fields
+	model_fields=fields(md1);
+	for i=1:length(model_fields),
+		field1=md1.(model_fields{i});
+		field2=md2.(model_fields{i});
+		if isobject(field1), %recursive call
+			if ~strcmp(class(field1),class(field2))
+				disp(['Skipping ''' model_fields{i} ''' because classes are not consistent']);
+				continue;
+			end
+			object_fields=fields(md1.(model_fields{i}));
+			for j=1:length(object_fields),
+				field1=md1.(model_fields{i}).(object_fields{j});
+				field2=md2.(model_fields{i}).(object_fields{j});
+				compare([model_fields{i} '.' object_fields{j}],field1,field2);
+			end
+		else
+			compare(model_fields{i},field1,field2);
+		end
+	end
+
+end
+
+function compare(fieldname,field1,field2),
+	if any(size(field1)~=size(field2)),
+		disp([fieldname ' do not have the same size']);
+	elseif isnumeric(field1),
+		if numel(field1)==1 & isnan(field1) & isnan(field2),
+			%Do not do anything
+		elseif any(field1~=field2),
+			%Deal with NaN...
+			pos1=find(isnan(field1));
+			pos2=find(isnan(field2));
+			if numel(pos1)==numel(pos2) & all(pos1==pos2),
+				field1(pos1)=0; field2(pos2)=0;
+				if any(field1~=field2),
+					disp([fieldname ' differs']);
+				end
+			else
+				disp([fieldname ' differs']);
+			end
+		end
+	end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/ismodelselfconsistent.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/ismodelselfconsistent.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/ismodelselfconsistent.js	(revision 21239)
@@ -0,0 +1,95 @@
+function ismodelselfconsistent(md){
+//ISMODELSELFCONSISTENT - check that model forms a closed form solvable problem.
+//
+//   Usage:
+//      ismodelselfconsistent(md),
+
+	//initialize consistency as true
+	md.priv.isconsistent=true;
+
+	//Get solution and associated analyses
+	solution=md.priv.solution;
+	if(typeof solution !== 'string')throw Error('ismodelselfconsistent: did not provide correct solution type in the private class!');
+	
+	var analyses = AnalysisConfiguration(solution);
+
+	//Go through a model field, check that it is a class, and call checkconsistency
+	for(field in md){
+
+		//Some properties do not need to be checked
+		if (field == 'results' | field == 'debug' | field == 'radaroverlay'){
+			continue;
+		}
+
+		//Check that current field is a class
+		if(typeof md[field] == 'function'){
+			continue;
+		}
+
+		//Check consistency of the class
+		md[field].checkconsistency(md,solution,analyses);
+	}
+
+	//error message if mode is not consistent
+	if (md.priv.isconsistent==false){
+		throw Error('Model not consistent, see messages above');
+	}
+}
+
+function AnalysisConfiguration(solutiontype){ // {{{
+	//ANALYSISCONFIGURATION - return type of analyses, number of analyses 
+	//
+	//   Usage:
+	//      [analyses]=AnalysisConfiguration(solutiontype);
+
+	var analyses=[];
+		
+	if(solutiontype === 'StressbalanceSolution'){
+		analyses=['StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis'];
+		
+	}else if(solutiontype ==='SteadystateSolution'){
+		analyses=['StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis','ThermalAnalysis','MeltingAnalysis'];
+		
+	}else if(solutiontype ==='ThermalSolution'){
+		analyses=['EnthalpyAnalysis','ThermalAnalysis','MeltingAnalysis'];
+		
+	}else if(solutiontype ==='MasstransportSolution'){
+		analyses=['MasstransportAnalysis'];
+		
+	}else if(solutiontype ==='BalancethicknessSolution'){
+		analyses=['BalancethicknessAnalysis'];
+		
+	}else if(solutiontype ==='Balancethickness2Solution'){
+		analyses=['Balancethickness2Analysis'];
+		
+	}else if(solutiontype ==='BalancethicknessSoftSolution'){
+		analyses=['BalancethicknessAnalysis'];
+		
+	}else if(solutiontype ==='BalancevelocitySolution'){
+		analyses=['BalancevelocityAnalysis'];
+		
+	}else if(solutiontype ==='SurfaceSlopeSolution'){
+		analyses=['L2ProjectionBaseAnalysis'];
+		
+	}else if(solutiontype ==='BedSlopeSolution'){
+		analyses=['L2ProjectionBaseAnalysis'];
+		
+	}else if(solutiontype ==='GiaSolution'){
+		analyses=['GiaAnalysis'];
+		
+	}else if(solutiontype ==='TransientSolution'){
+		analyses=['StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis','ThermalAnalysis','MeltingAnalysis','EnthalpyAnalysis','MasstransportAnalysis','HydrologySommersAnalysis'];
+		
+	}else if(solutiontype ==='SealevelriseSolution'){
+		analyses=['SealevelriseAnalysis'];
+		
+	}else if(solutiontype ==='HydrologySolution'){
+		analyses=['L2ProjectionBaseAnalysis','HydrologyShreveAnalysis','HydrologyDCInefficientAnalysis','HydrologyDCEfficientAnalysis'];
+		
+	}else if(solutiontype ==='DamageEvolutionSolution'){
+		analyses=['DamageEvolutionAnalysis'];
+	}else{
+		throw Error(sprintf("%s%s%s\n",' solution type: ',solutiontype,' not supported yet!'));
+	}
+	return analyses;
+} // }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/ismodelselfconsistent.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/ismodelselfconsistent.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/ismodelselfconsistent.m	(revision 21239)
@@ -0,0 +1,79 @@
+function ismodelselfconsistent(md),
+%ISMODELSELFCONSISTENT - check that model forms a closed form solvable problem.
+%
+%   Usage:
+%      ismodelselfconsistent(md),
+
+%initialize consistency as true
+md.private.isconsistent=true;
+
+%Get solution and associated analyses
+solution=md.private.solution;
+[analyses]=AnalysisConfiguration(solution);
+
+%Go through a model field, check that it is a class, and call checkconsistency
+fields=properties('model');
+for i=1:length(fields),
+	field=fields{i};
+
+	%Some properties do not need to be checked
+	if ismember(field,{'results' 'debug' 'radaroverlay'}),
+		continue;
+	end
+
+	%Check that current field is an object
+	if ~isobject(md.(field))
+		md=checkmessage(md,['field ''' char(field) ''' is not an object']);
+		continue;
+	end
+
+	%Check consistency of the object
+	md=checkconsistency(md.(field),md,solution,analyses);
+end
+
+%error message if mode is not consistent
+if md.private.isconsistent==false,
+	error('Model not consistent, see messages above');
+end
+end
+
+function [analyses]=AnalysisConfiguration(solutiontype), % {{{
+%ANALYSISCONFIGURATION - return type of analyses, number of analyses 
+%
+%   Usage:
+%      [analyses]=AnalysisConfiguration(solutiontype);
+
+	if strcmp(solutiontype,'StressbalanceSolution')
+		analyses={'StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis'};
+	elseif strcmp(solutiontype,'SteadystateSolution')
+		analyses={'StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis','ThermalAnalysis','MeltingAnalysis','EnthalpyAnalysis'};
+	elseif strcmp(solutiontype,'ThermalSolution')
+		analyses={'EnthalpyAnalysis','ThermalAnalysis','MeltingAnalysis'};
+	elseif strcmp(solutiontype,'MasstransportSolution')
+		analyses={'MasstransportAnalysis'};
+	elseif strcmp(solutiontype,'BalancethicknessSolution')
+		analyses={'BalancethicknessAnalysis'};
+	elseif strcmp(solutiontype,'Balancethickness2Solution')
+		analyses={'Balancethickness2Analysis'};
+	elseif strcmp(solutiontype,'BalancethicknessSoftSolution')
+		analyses={'BalancethicknessAnalysis'};
+	elseif strcmp(solutiontype,'BalancevelocitySolution')
+		analyses={'BalancevelocityAnalysis'};
+	elseif strcmp(solutiontype,'SurfaceSlopeSolution')
+		analyses={'L2ProjectionBaseAnalysis'};
+	elseif strcmp(solutiontype,'BedSlopeSolution')
+		analyses={'L2ProjectionBaseAnalysis'};
+	elseif strcmp(solutiontype,'GiaSolution')
+		analyses={'GiaAnalysis'};
+	elseif strcmp(solutiontype,'TransientSolution')
+		analyses={'StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis','ThermalAnalysis','MeltingAnalysis','EnthalpyAnalysis','MasstransportAnalysis','HydrologySommersAnalysis'};
+	elseif strcmp(solutiontype,'SealevelriseSolution')
+		analyses={'SealevelriseAnalysis'};
+	elseif strcmp(solutiontype,'HydrologySolution')
+		analyses={'L2ProjectionBaseAnalysis','HydrologyShreveAnalysis','HydrologyDCInefficientAnalysis','HydrologyDCEfficientAnalysis'};
+	elseif strcmp(solutiontype,'DamageEvolutionSolution')
+		analyses={'DamageEvolutionAnalysis'};
+	else
+		error(' solution type: %s' , solutiontype, ' not supported yet!');
+	end
+end % }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/ismodelselfconsistent.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/ismodelselfconsistent.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/consistency/ismodelselfconsistent.py	(revision 21239)
@@ -0,0 +1,85 @@
+def AnalysisConfiguration(solutiontype): #{{{
+	"""
+	ANALYSISCONFIGURATION - return type of analyses, number of analyses 
+
+		Usage:
+			[analyses]=AnalysisConfiguration(solutiontype);
+	"""
+
+	if   solutiontype == 'StressbalanceSolution':
+		analyses=['StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis']
+
+	elif solutiontype == 'SteadystateSolution':
+		analyses=['StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis','ThermalAnalysis','MeltingAnalysis','EnthalpyAnalysis']
+
+	elif solutiontype == 'ThermalSolution':
+		analyses=['EnthalpyAnalysis','ThermalAnalysis','MeltingAnalysis']
+
+	elif solutiontype == 'MasstransportSolution':
+		analyses=['MasstransportAnalysis']
+
+	elif solutiontype == 'BalancethicknessSolution':
+		analyses=['BalancethicknessAnalysis']
+
+	elif solutiontype == 'SurfaceSlopeSolution':
+		analyses=['L2ProjectionBaseAnalysis']
+
+	elif solutiontype == 'BalancevelocitySolution':
+		analyses=['BalancevelocityAnalysis']
+
+	elif solutiontype == 'BedSlopeSolution':
+		analyses=['L2ProjectionBaseAnalysis']
+
+	elif solutiontype == 'GiaSolution':
+		analyses=['GiaAnalysis']
+
+	elif solutiontype == 'TransientSolution':
+		analyses=['StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis','ThermalAnalysis','MeltingAnalysis','EnthalpyAnalysis','MasstransportAnalysis']
+
+	elif solutiontype == 'HydrologySolution':
+		analyses=['L2ProjectionBaseAnalysis','HydrologyShreveAnalysis','HydrologyDCInefficientAnalysis','HydrologyDCEfficientAnalysis']
+
+	elif 'DamageEvolutionSolution':
+		analyses=['DamageEvolutionAnalysis']
+
+	else:
+		raise TypeError("solution type: '%s' not supported yet!" % solutiontype)
+
+	return analyses
+#}}}
+
+def ismodelselfconsistent(md):
+	"""
+	ISMODELSELFCONSISTENT - check that model forms a closed form solvable problem.
+
+	   Usage:
+	      ismodelselfconsistent(md),
+	"""
+
+	#initialize consistency as true
+	md.private.isconsistent=True
+
+	#Get solution and associated analyses
+	solution=md.private.solution
+	analyses=AnalysisConfiguration(solution)
+
+	#Go through a model fields, check that it is a class, and call checkconsistency
+	fields=vars(md)
+#	for field in fields.iterkeys():
+	for field in md.properties():
+
+		#Some properties do not need to be checked
+		if field in ['results','debug','radaroverlay']:
+			continue
+
+		#Check that current field is an object
+		if not hasattr(getattr(md,field),'checkconsistency'):
+			md.checkmessage("field '%s' is not an object." % field)
+
+		#Check consistency of the object
+		exec("md.{}.checkconsistency(md,solution,analyses)".format(field))
+
+	#error message if mode is not consistent
+	if not md.private.isconsistent:
+		raise RuntimeError('Model not consistent, see messages above.')
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/Makefile
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/Makefile	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/Makefile	(revision 21239)
@@ -0,0 +1,11 @@
+all:
+		g++ vfsa_mpi.cpp  \
+			-I$(ISSM_DIR)/externalpackages/gsl/install/include \
+			-L$(ISSM_DIR)/externalpackages/gsl/install/lib -lgsl -lgslcblas \
+		   -I$(ISSM_DIR)/externalpackages/mpich/install/include/ \
+		   -L$(ISSM_DIR)/externalpackages/mpich/install/lib/ -lmpich -lpmpich -lmpl -o forward.exe 
+
+forward:
+	   mpirun -np 4 ./forward.exe
+clean:
+		rm ./forward.exe
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/code_densite/Makefile
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/code_densite/Makefile	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/code_densite/Makefile	(revision 21239)
@@ -0,0 +1,11 @@
+all:
+		g++ density_rock_uneven.cpp  \
+			-I$(ISSM_DIR)/externalpackages/gsl/install/include \
+			-L$(ISSM_DIR)/externalpackages/gsl/install/lib -lgsl -lgslcblas \
+		   -I$(ISSM_DIR)/externalpackages/mpich/install/include/ \
+		   -L$(ISSM_DIR)/externalpackages/mpich/install/lib/ -lmpich -lpmpich -lmpl -o forward.exe 
+
+forward:
+	   mpirun -np 4 ./forward.exe
+run -np 4 ./forward.execlean:
+		rm ./forward.exe
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/code_densite/density_rock.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/code_densite/density_rock.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/code_densite/density_rock.cpp	(revision 21239)
@@ -0,0 +1,510 @@
+#include <iostream>
+#include <cmath>
+#include <fstream>
+#include <string>
+#include <cstdio>
+#include <cstdlib>
+#include <time.h>
+#include <cassert>
+#include <gsl/gsl_multifit.h>
+#include "mpi.h"
+using namespace std;
+
+class Matrix{/*{{{*/
+	private:
+		int     M;        /*Number of lines   */
+		int     N;        /*Number if Columns */
+		double *values;
+	public:
+		Matrix(int m_in,int n_in){/*{{{*/
+			this->M = m_in;
+			this->N = n_in;
+			this->values = new double[M*N]();
+		}/*}}}*/
+		~Matrix(){/*{{{*/
+			delete [] this->values;
+		}/*}}}*/
+		void Echo(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					cout << " " << this->values[i*N+j];
+				}
+				cout << endl;
+			}
+		}/*}}}*/
+		void SetValue(int i,int j,double value){/*{{{*/
+			this->values[i*N+j] = value;
+		}/*}}}*/
+		double GetValue(int i,int j){/*{{{*/
+			return this->values[i*N+j];
+		}/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM = this->M;
+			*pN = this->N;
+		}/*}}}*/
+		double* GetPointer(void){/*{{{*/
+			return this->values;
+		}/*}}}*/
+		void MatrixSum(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) + B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixDiff(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) - B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixAbs(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,fabs(A->GetValue(i,j)));
+				}
+			}
+		}/*}}}*/
+		void MatrixEqual(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		double MatrixInternSum(){/*{{{*/
+			double sum=0;
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					sum+=this->GetValue(i,j);
+				}
+			}
+			return sum;
+		}/*}}}*/
+		void ExtractLine(Matrix* A,int i){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(M_A==1 && this->N==N_A);
+			for(int j=0;j<this->N;j++){
+				A->SetValue(0,j,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void ExtractColumn(Matrix* A,int j){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(N_A==1 && this->M==M_A);
+			for(int i=0;i<this->M;i++){
+				A->SetValue(i,0,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void AddNumber(double a){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,this->GetValue(i,j) + a);
+				}
+			}
+		}/*}}}*/
+};/*}}}*/
+
+/*Local prototypes{{{*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy);
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny);
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel);
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix *evalid,int my_rank,int num_procs);
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny);
+void reshape(Matrix* V,Matrix* V1,int nx,int ny);
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs);
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B);
+/*}}}*/
+
+int main(int argc,char *argv[]){/*{{{*/
+
+	int my_rank,num_procs;
+
+	MPI_Init(&argc, &argv);
+
+	MPI_Comm_size(MPI_COMM_WORLD,&num_procs);
+	MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
+
+	/* Define the variables {{{*/
+
+	int    dx     = 1000;   /* prism dimension in x-direction                           */
+	int    dy     = 1000;   /* prism dimension in y-direction                           */
+	int    mx     = 99;    /* number of prisms in x-direction                          */
+	int    my     = 99;    /* number of prisms in y-direction                          */
+	int    nx     = 99;    /* number of data points in x-direction                     */
+	int    ny     = 99;    /* number of data points in y-direction                     */
+	int    dn     = 15000; /* distance for neighbouting prisms for gravity calculation */
+
+	Matrix *Pobs=new Matrix(nx*ny,2); /* data positions */
+	makep(Pobs,nx,ny,dx,dy);
+	// Pobs->Echo();
+
+
+
+	Matrix *Pp=new Matrix(mx*my,2); /* prisms positions */
+	makep(Pp,mx,my,dx,dy);
+	// Pp->Echo();
+
+	double  rhoi = 917;           /* ice density     */
+	double  rhow = 1030;          /* water density   */
+	// double  rhos = 2013;		      /* sediment density */
+
+	double rhoc_min=2000.;
+	double rhoc_max=3000.;
+
+	Matrix *Rho  = new Matrix(1,2);
+	Rho->SetValue(0,0,rhoi);
+	Rho->SetValue(0,1,rhow);
+	Matrix *rho1  = new Matrix(1,3);
+	rho1->SetValue(0,0,rhoi);
+	rho1->SetValue(0,1,rhow);
+	rho1->SetValue(0,2,rhoc_min);
+	Matrix *rho2  = new Matrix(1,2);
+	rho2->SetValue(0,0,rhoi-rhoc_min);
+	rho2->SetValue(0,1,rhow-rhoc_min);
+
+	double dlevel=3134;         /* level of data acquisition */
+
+
+	Matrix *xobs= new Matrix(ny,nx);
+	Matrix *yobs= new Matrix(ny,nx);
+
+	vec2grid(Pobs,xobs,yobs,nx,ny);
+	//	xobs->Echo();
+	//	yobs->Echo();
+
+
+	/*}}}*/     
+	/* load the data {{{*/
+
+
+	double inputnumber;
+
+	/* Observed gravity anomaly */
+
+	ifstream file1("gravityraw.txt");
+	Matrix * gobs= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){ 
+		file1 >> inputnumber;
+		gobs->SetValue(i,0, inputnumber*1e-5);
+	}
+	file1.close();
+	//	gobs->Echo();
+
+
+	/* id of grid to evaluate misfit */
+
+
+	ifstream file4("evalid1.txt");
+	Matrix * evalid= new Matrix(nx*ny,1);
+	for(int s=0;s<nx*ny; s++){ 
+		file4 >> inputnumber;
+		evalid->SetValue(s,0,inputnumber);
+	}
+	file4.close();
+	//	evalid->Echo();
+
+	/* initial guess of the model */
+
+	ifstream file5("m0_102714contzach.txt");
+	Matrix * mesh_ini= new Matrix(mx*my,3);
+	for(int s=0;s<mx*my; s++){ 
+		for(int j=0;j<3;j++){
+			file5 >> inputnumber;
+			mesh_ini->SetValue(s,j,inputnumber);
+		}
+	}
+	file5.close();
+	//	mesh_ini->Echo();
+	/*}}}*/
+	/* Test {{{ */
+
+
+	double rhoc=rhoc_min;
+	double rhoc_opti=rhoc_min;
+	double E=misfit(mesh_ini,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my,my_rank,num_procs);
+	double E_opti=E;
+
+	for(int i=rhoc_min;i<rhoc_max+1;i++){
+		rhoc=i;
+		rho1->SetValue(0,2,rhoc);
+		rho2->SetValue(0,0,rhoi-rhoc);
+		rho2->SetValue(0,1,rhow-rhoc);
+
+		E=misfit(mesh_ini,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my,my_rank,num_procs);
+
+		if(E<E_opti){
+			E_opti=E;
+			rhoc_opti=rhoc;
+		}
+		if(my_rank==0){
+			cout<<rhoc<<"  "<<rhoc_opti<<"  "<<E<<"  "<<E_opti<<endl;
+		}
+	}
+
+
+
+
+	delete Pobs;
+	delete Pp;
+	delete Rho;
+	delete rho1;
+	delete rho2;
+	delete xobs;
+	delete yobs;
+	delete mesh_ini;
+	delete evalid;
+	delete gobs;
+
+	/*}}}*/
+
+	MPI_Finalize();
+
+	return 0;
+}/*}}}*/
+
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B){/*{{{*/
+
+	/*GSL Matrices and vectors: */
+	int    M,N;
+	double chisq;
+	/*Get system size*/
+	A->GetSize(&M,&N);
+
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix* a = gsl_matrix_alloc(M,N);
+	for(int i=0;i<M;i++){
+		for(int j=0;j<N;j++){
+			gsl_matrix_set (a,i,j,A->GetValue(i,j));
+		}
+	}
+	gsl_vector* b = gsl_vector_alloc(M);
+	for(int i=0;i<M;i++){
+		gsl_vector_set(b,i,B->GetValue(i,0));
+	}
+
+	gsl_vector* x = gsl_vector_alloc(N);
+	gsl_matrix* cov = gsl_matrix_alloc(N,N);
+
+	/*Least square fit: */
+	gsl_multifit_linear_workspace* work = gsl_multifit_linear_alloc(M,N);
+	gsl_multifit_linear (a, b, x, cov, &chisq, work);
+	gsl_multifit_linear_free (work);
+
+	/*Clean up and assign output pointer*/
+	Matrix* X = new Matrix(N,1);
+	for(int j=0;j<N;j++){
+		X->SetValue(j,0,gsl_vector_get(x,j));
+	}
+	*pX = X;
+
+	gsl_matrix_free(a);
+	gsl_vector_free(x);
+	gsl_vector_free(b);
+	gsl_matrix_free(cov);
+
+}/*}}}*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			Pobs->SetValue(j+nx*i,0,j*dx);
+			Pobs->SetValue(j+nx*i,1,i*dy);
+		}
+	}
+}/*}}}*/
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+			V2->SetValue(i,j, V->GetValue(j+nx*i,1));
+		}
+	}
+}/*}}}*/
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel){/*{{{*/
+	int sizem1,sizem2;
+	m->GetSize(&sizem1,&sizem2);
+	for(int i=0;i<sizem1;i++){
+		for(int j=0;j<sizem2+1;j++){
+			if(j<sizem2){
+				m1->SetValue(i,j,1e-10*(sizem2+1-j));
+				m2->SetValue(i,j,m->GetValue(i,j));
+				if(m->GetValue(i,j)<0){
+					m1->SetValue(i,j,m->GetValue(i,j));
+					m2->SetValue(i,j,i*1e-10);
+				}
+				m1->SetValue(i,j,m1->GetValue(i,j));
+				m2->SetValue(i,j,m2->GetValue(i,j));
+			}
+			else{
+				m1->SetValue(i,j,1e-10);
+			}
+		}
+	}
+	m1->AddNumber(dlevel);
+	m2->AddNumber(dlevel);
+}/*}}}*/
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix *evalid,int my_rank,int num_procs){/*{{{*/
+	double gg=6.673e-11;
+	int si,sj,id,s;
+	double R,Q,P;
+	Matrix *xp= new Matrix(1,2);
+	Matrix *yp= new Matrix(1,2);
+	Matrix *xpp= new Matrix(1,2);
+	Matrix *ypp= new Matrix(1,2);
+	Matrix *U= new Matrix(l,4);
+	Matrix *U1=new Matrix(1,4);
+	Matrix *U2=new Matrix(1,4);
+	Matrix *gl= new Matrix(1,l-1);
+	bool test=true;
+
+	double *glocal=new double[n]();
+
+	for(int c=my_rank;c<n;c+=num_procs){
+		glocal[c]=0;
+		if(evalid->GetValue(c,0)==1){
+			for(int a=0;a<m;a++){
+				test=true;
+				xp->SetValue(0,0,Pp->GetValue(a,0)-Pobs->GetValue(c,0));
+				xp->SetValue(0,1,Pp->GetValue(a,0)-Pobs->GetValue(c,0)+dx);
+				if(xp->GetValue(0,0)<0 && xp->GetValue(0,0)<xp->GetValue(0,1) && xp->GetValue(0,0)*xp->GetValue(0,1)>=0){
+					xpp->SetValue(0,0,xp->GetValue(0,1));
+					xpp->SetValue(0,1,xp->GetValue(0,0));
+					xp->MatrixAbs(xpp);
+				}
+				yp->SetValue(0,0,Pp->GetValue(a,1)-Pobs->GetValue(c,1));
+				yp->SetValue(0,1,Pp->GetValue(a,1)-Pobs->GetValue(c,1)+dy);
+				if(yp->GetValue(0,0)<0 && yp->GetValue(0,0)<yp->GetValue(0,1) && yp->GetValue(0,0)*yp->GetValue(0,1)>=0){
+					ypp->SetValue(0,0,yp->GetValue(0,1));
+					ypp->SetValue(0,1,yp->GetValue(0,0));
+					yp->MatrixAbs(ypp);
+				}
+				P=sqrt(xp->GetValue(0,0)*xp->GetValue(0,0)+yp->GetValue(0,0)*yp->GetValue(0,0));
+				if(P>dn){
+					test=false;
+					for(int i=0;i<l-1;i++){
+						gl->SetValue(0,i,0);
+					}
+				}
+				if(test==true){
+					si=1;
+					sj=1;
+					id=0;
+					for(int i=0;i<2;i++){
+						si*=-1;
+						for(int j=0;j<2;j++){
+							sj*=-1;
+							s=si*sj;
+							for(int k=0;k<l;k++){
+								R=sqrt(xp->GetValue(0,i)*xp->GetValue(0,i)+yp->GetValue(0,j)*yp->GetValue(0,j)+mesh->GetValue(a,k)*mesh->GetValue(a,k));
+								Q=atan(xp->GetValue(0,i)*yp->GetValue(0,j)/(mesh->GetValue(a,k)*R));
+								U->SetValue(k,id,s*(mesh->GetValue(a,k)*Q-xp->GetValue(0,i)*log(R+yp->GetValue(0,j))-yp->GetValue(0,j)*log(R+xp->GetValue(0,i))));
+							}
+							id++;
+						}
+					}
+					for(int b=0;b<l-1;b++){
+						U->ExtractLine(U1,b);
+						U->ExtractLine(U2,b+1);
+						gl->SetValue(0,b,rho->GetValue(0,b)*(U1->MatrixInternSum()*(-1)+U2->MatrixInternSum()));
+					}
+				}
+				glocal[c]=glocal[c]+gg*gl->MatrixInternSum();
+			}
+		}
+	}
+
+	MPI_Allreduce(glocal,g->GetPointer(),n,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
+
+	delete xp;
+	delete yp;
+	delete xpp;
+	delete ypp;
+	delete gl;
+	delete U;
+	delete U1;
+	delete U2;
+	delete []glocal;
+}/*}}}*/
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+		}
+	}
+}/*}}}*/
+void reshape(Matrix* V,Matrix* V1,int nx,int ny){/*{{{*/
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			V1->SetValue(j+nx*i,0,V->GetValue(i,j));
+		}
+	}
+}/*}}}*/
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs){/*{{{*/
+	Matrix* m1=new Matrix(mx*my,4);
+	Matrix* m2=new Matrix(mx*my,3);
+	Matrix* g1=new Matrix(nx*ny,1);
+	Matrix* g2=new Matrix(nx*ny,1);
+	Matrix* g=new Matrix(nx*ny,1);
+	Matrix* gcalgr=new Matrix(ny,nx);
+	Matrix* gcalvec=new Matrix(nx*ny,1);
+	Matrix* df=new Matrix(nx*ny,1);
+	Matrix* G=new Matrix(nx*ny,3);
+	double a=0;
+	double b=0;
+	double e=0;
+	msplit(m0,m1,m2,dlevel);
+	plouff(g1,Pobs,Pp,m1,rho1,dx,dy,dn,mx*my,nx*ny,4,evalid, my_rank, num_procs);
+	plouff(g2,Pobs,Pp,m2,rho2,dx,dy,dn,mx*my,nx*ny,3,evalid, my_rank, num_procs);
+	g->MatrixSum(g1,g2);
+	vec2gridsimple(g,gcalgr,nx,ny);
+	reshape(gcalgr,gcalvec,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		df->SetValue(i,0,evalid->GetValue(i,0)*(gobs->GetValue(i,0)-gcalvec->GetValue(i,0)));
+		G->SetValue(i,0,evalid->GetValue(i,0)*Pobs->GetValue(i,0));
+		G->SetValue(i,1,evalid->GetValue(i,0)*Pobs->GetValue(i,1));
+		G->SetValue(i,2,evalid->GetValue(i,0));
+	}
+	Matrix* M = NULL;
+	GSLsquarefit(&M,G,df);
+
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			gcalgr->SetValue(i,j,gcalgr->GetValue(i,j)+xobs->GetValue(i,j)*M->GetValue(0,0)+yobs->GetValue(i,j)*M->GetValue(1,0)+M->GetValue(2,0));
+		}
+	}
+	reshape(gcalgr,g,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		a=a+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)-g->GetValue(i,0)));
+		b=b+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)+g->GetValue(i,0)));
+	}
+	e=2*a/(a+b);
+
+	delete m1;
+	delete m2;
+	delete g1;
+	delete g2;
+	delete g;
+	delete gcalgr;
+	delete gcalvec;
+	delete df;
+	delete G;
+	delete M;
+
+	return e;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/code_densite/density_rock_uneven.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/code_densite/density_rock_uneven.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/code_densite/density_rock_uneven.cpp	(revision 21239)
@@ -0,0 +1,516 @@
+#include <iostream>
+#include <cmath>
+#include <fstream>
+#include <string>
+#include <cstdio>
+#include <cstdlib>
+#include <time.h>
+#include <cassert>
+#include <gsl/gsl_multifit.h>
+#include "mpi.h"
+using namespace std;
+
+class Matrix{/*{{{*/
+	private:
+		int     M;        /*Number of lines   */
+		int     N;        /*Number if Columns */
+		double *values;
+	public:
+		Matrix(int m_in,int n_in){/*{{{*/
+			this->M = m_in;
+			this->N = n_in;
+			this->values = new double[M*N]();
+		}/*}}}*/
+		~Matrix(){/*{{{*/
+			delete [] this->values;
+		}/*}}}*/
+		void Echo(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					cout << " " << this->values[i*N+j];
+				}
+				cout << endl;
+			}
+		}/*}}}*/
+		void SetValue(int i,int j,double value){/*{{{*/
+			this->values[i*N+j] = value;
+		}/*}}}*/
+		double GetValue(int i,int j){/*{{{*/
+			return this->values[i*N+j];
+		}/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM = this->M;
+			*pN = this->N;
+		}/*}}}*/
+		double* GetPointer(void){/*{{{*/
+			return this->values;
+		}/*}}}*/
+		void MatrixSum(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) + B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixDiff(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) - B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixAbs(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,fabs(A->GetValue(i,j)));
+				}
+			}
+		}/*}}}*/
+		void MatrixEqual(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		double MatrixInternSum(){/*{{{*/
+			double sum=0;
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					sum+=this->GetValue(i,j);
+				}
+			}
+			return sum;
+		}/*}}}*/
+		void ExtractLine(Matrix* A,int i){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(M_A==1 && this->N==N_A);
+			for(int j=0;j<this->N;j++){
+				A->SetValue(0,j,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void ExtractColumn(Matrix* A,int j){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(N_A==1 && this->M==M_A);
+			for(int i=0;i<this->M;i++){
+				A->SetValue(i,0,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void AddNumber(double a){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,this->GetValue(i,j) + a);
+				}
+			}
+		}/*}}}*/
+};/*}}}*/
+
+/*Local prototypes{{{*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy);
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny);
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,Matrix *dlevel);
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix *evalid,int my_rank,int num_procs);
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny);
+void reshape(Matrix* V,Matrix* V1,int nx,int ny);
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,Matrix *dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs);
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B);
+/*}}}*/
+
+int main(int argc,char *argv[]){/*{{{*/
+
+	int my_rank,num_procs;
+
+	MPI_Init(&argc, &argv);
+
+	MPI_Comm_size(MPI_COMM_WORLD,&num_procs);
+	MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
+
+	/* Define the variables {{{*/
+
+	int    dx     = 1000;   /* prism dimension in x-direction                           */
+	int    dy     = 1000;   /* prism dimension in y-direction                           */
+	int    mx     = 99;    /* number of prisms in x-direction                          */
+	int    my     = 99;    /* number of prisms in y-direction                          */
+	int    nx     = 99;    /* number of data points in x-direction                     */
+	int    ny     = 99;    /* number of data points in y-direction                     */
+	int    dn     = 15000; /* distance for neighbouting prisms for gravity calculation */
+
+	Matrix *Pobs=new Matrix(nx*ny,2); /* data positions */
+	makep(Pobs,nx,ny,dx,dy);
+	// Pobs->Echo();
+
+
+
+	Matrix *Pp=new Matrix(mx*my,2); /* prisms positions */
+	makep(Pp,mx,my,dx,dy);
+	// Pp->Echo();
+
+	double  rhoi = 917;           /* ice density     */
+	double  rhow = 1030;          /* water density   */
+	// double  rhos = 2013;		      /* sediment density */
+
+	double rhoc_min=2000.;
+	double rhoc_max=3000.;
+
+	Matrix *Rho  = new Matrix(1,2);
+	Rho->SetValue(0,0,rhoi);
+	Rho->SetValue(0,1,rhow);
+	Matrix *rho1  = new Matrix(1,3);
+	rho1->SetValue(0,0,rhoi);
+	rho1->SetValue(0,1,rhow);
+	rho1->SetValue(0,2,rhoc_min);
+	Matrix *rho2  = new Matrix(1,2);
+	rho2->SetValue(0,0,rhoi-rhoc_min);
+	rho2->SetValue(0,1,rhow-rhoc_min);
+
+
+	Matrix *xobs= new Matrix(ny,nx);
+	Matrix *yobs= new Matrix(ny,nx);
+
+	vec2grid(Pobs,xobs,yobs,nx,ny);
+	//	xobs->Echo();
+	//	yobs->Echo();
+
+
+	/*}}}*/     
+	/* load the data {{{*/
+
+
+	double inputnumber;
+
+	/* Levels of data acquisition */
+
+	ifstream file0("dataalti.txt");
+	Matrix * dlevel= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){
+		file0 >> inputnumber;
+		dlevel->SetValue(i,0,inputnumber);
+	}
+	file0.close();
+
+	/* Observed gravity anomaly */
+
+	ifstream file1("gravityraw.txt");
+	Matrix * gobs= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){ 
+		file1 >> inputnumber;
+		gobs->SetValue(i,0, inputnumber*1e-5);
+	}
+	file1.close();
+	//	gobs->Echo();
+
+
+	/* id of grid to evaluate misfit */
+
+
+	ifstream file4("evalid1.txt");
+	Matrix * evalid= new Matrix(nx*ny,1);
+	for(int s=0;s<nx*ny; s++){ 
+		file4 >> inputnumber;
+		evalid->SetValue(s,0,inputnumber);
+	}
+	file4.close();
+	//	evalid->Echo();
+
+	/* initial guess of the model */
+
+	ifstream file5("m0_102714contzach.txt");
+	Matrix * mesh_ini= new Matrix(mx*my,3);
+	for(int s=0;s<mx*my; s++){ 
+		for(int j=0;j<3;j++){
+			file5 >> inputnumber;
+			mesh_ini->SetValue(s,j,inputnumber);
+		}
+	}
+	file5.close();
+	//	mesh_ini->Echo();
+	/*}}}*/
+	/* Test {{{ */
+
+
+	double rhoc=rhoc_min;
+	double rhoc_opti=rhoc_min;
+	double E=misfit(mesh_ini,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my,my_rank,num_procs);
+	double E_opti=E;
+
+	for(int i=rhoc_min;i<rhoc_max+1;i++){
+		rhoc=i;
+		rho1->SetValue(0,2,rhoc);
+		rho2->SetValue(0,0,rhoi-rhoc);
+		rho2->SetValue(0,1,rhow-rhoc);
+
+		E=misfit(mesh_ini,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my,my_rank,num_procs);
+
+		if(E<E_opti){
+			E_opti=E;
+			rhoc_opti=rhoc;
+		}
+		if(my_rank==0){
+			cout<<rhoc<<"  "<<rhoc_opti<<"  "<<E<<"  "<<E_opti<<endl;
+		}
+	}
+
+
+
+
+	delete Pobs;
+	delete Pp;
+	delete Rho;
+	delete rho1;
+	delete rho2;
+	delete xobs;
+	delete yobs;
+	delete mesh_ini;
+	delete evalid;
+	delete gobs;
+
+	/*}}}*/
+
+	MPI_Finalize();
+
+	return 0;
+}/*}}}*/
+
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B){/*{{{*/
+
+	/*GSL Matrices and vectors: */
+	int    M,N;
+	double chisq;
+	/*Get system size*/
+	A->GetSize(&M,&N);
+
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix* a = gsl_matrix_alloc(M,N);
+	for(int i=0;i<M;i++){
+		for(int j=0;j<N;j++){
+			gsl_matrix_set (a,i,j,A->GetValue(i,j));
+		}
+	}
+	gsl_vector* b = gsl_vector_alloc(M);
+	for(int i=0;i<M;i++){
+		gsl_vector_set(b,i,B->GetValue(i,0));
+	}
+
+	gsl_vector* x = gsl_vector_alloc(N);
+	gsl_matrix* cov = gsl_matrix_alloc(N,N);
+
+	/*Least square fit: */
+	gsl_multifit_linear_workspace* work = gsl_multifit_linear_alloc(M,N);
+	gsl_multifit_linear (a, b, x, cov, &chisq, work);
+	gsl_multifit_linear_free (work);
+
+	/*Clean up and assign output pointer*/
+	Matrix* X = new Matrix(N,1);
+	for(int j=0;j<N;j++){
+		X->SetValue(j,0,gsl_vector_get(x,j));
+	}
+	*pX = X;
+
+	gsl_matrix_free(a);
+	gsl_vector_free(x);
+	gsl_vector_free(b);
+	gsl_matrix_free(cov);
+
+}/*}}}*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			Pobs->SetValue(j+nx*i,0,j*dx);
+			Pobs->SetValue(j+nx*i,1,i*dy);
+		}
+	}
+}/*}}}*/
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+			V2->SetValue(i,j, V->GetValue(j+nx*i,1));
+		}
+	}
+}/*}}}*/
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,Matrix* dlevel){/*{{{*/
+	int sizem1,sizem2;
+	m->GetSize(&sizem1,&sizem2);
+	for(int i=0;i<sizem1;i++){
+		for(int j=0;j<sizem2+1;j++){
+			if(j<sizem2){
+				m1->SetValue(i,j,1e-10*(sizem2+1-j));
+				m2->SetValue(i,j,m->GetValue(i,j));
+				if(m->GetValue(i,j)<0){
+					m1->SetValue(i,j,m->GetValue(i,j));
+					m2->SetValue(i,j,i*1e-10);
+				}
+				m1->SetValue(i,j,m1->GetValue(i,j)+dlevel->GetValue(i,1));
+				m2->SetValue(i,j,m2->GetValue(i,j)+dlevel->GetValue(i,1));
+			}
+			else{
+				m1->SetValue(i,j,1e-10+dlevel->GetValue(i,1));
+			}
+		}
+	}
+}/*}}}*/
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix *evalid,int my_rank,int num_procs){/*{{{*/
+	double gg=6.673e-11;
+	int si,sj,id,s;
+	double R,Q,P;
+	Matrix *xp= new Matrix(1,2);
+	Matrix *yp= new Matrix(1,2);
+	Matrix *xpp= new Matrix(1,2);
+	Matrix *ypp= new Matrix(1,2);
+	Matrix *U= new Matrix(l,4);
+	Matrix *U1=new Matrix(1,4);
+	Matrix *U2=new Matrix(1,4);
+	Matrix *gl= new Matrix(1,l-1);
+	bool test=true;
+
+	double *glocal=new double[n]();
+
+	for(int c=my_rank;c<n;c+=num_procs){
+		glocal[c]=0;
+		if(evalid->GetValue(c,0)==1){
+			for(int a=0;a<m;a++){
+				test=true;
+				xp->SetValue(0,0,Pp->GetValue(a,0)-Pobs->GetValue(c,0));
+				xp->SetValue(0,1,Pp->GetValue(a,0)-Pobs->GetValue(c,0)+dx);
+				if(xp->GetValue(0,0)<0 && xp->GetValue(0,0)<xp->GetValue(0,1) && xp->GetValue(0,0)*xp->GetValue(0,1)>=0){
+					xpp->SetValue(0,0,xp->GetValue(0,1));
+					xpp->SetValue(0,1,xp->GetValue(0,0));
+					xp->MatrixAbs(xpp);
+				}
+				yp->SetValue(0,0,Pp->GetValue(a,1)-Pobs->GetValue(c,1));
+				yp->SetValue(0,1,Pp->GetValue(a,1)-Pobs->GetValue(c,1)+dy);
+				if(yp->GetValue(0,0)<0 && yp->GetValue(0,0)<yp->GetValue(0,1) && yp->GetValue(0,0)*yp->GetValue(0,1)>=0){
+					ypp->SetValue(0,0,yp->GetValue(0,1));
+					ypp->SetValue(0,1,yp->GetValue(0,0));
+					yp->MatrixAbs(ypp);
+				}
+				P=sqrt(xp->GetValue(0,0)*xp->GetValue(0,0)+yp->GetValue(0,0)*yp->GetValue(0,0));
+				if(P>dn){
+					test=false;
+					for(int i=0;i<l-1;i++){
+						gl->SetValue(0,i,0);
+					}
+				}
+				if(test==true){
+					si=1;
+					sj=1;
+					id=0;
+					for(int i=0;i<2;i++){
+						si*=-1;
+						for(int j=0;j<2;j++){
+							sj*=-1;
+							s=si*sj;
+							for(int k=0;k<l;k++){
+								R=sqrt(xp->GetValue(0,i)*xp->GetValue(0,i)+yp->GetValue(0,j)*yp->GetValue(0,j)+mesh->GetValue(a,k)*mesh->GetValue(a,k));
+								Q=atan(xp->GetValue(0,i)*yp->GetValue(0,j)/(mesh->GetValue(a,k)*R));
+								U->SetValue(k,id,s*(mesh->GetValue(a,k)*Q-xp->GetValue(0,i)*log(R+yp->GetValue(0,j))-yp->GetValue(0,j)*log(R+xp->GetValue(0,i))));
+							}
+							id++;
+						}
+					}
+					for(int b=0;b<l-1;b++){
+						U->ExtractLine(U1,b);
+						U->ExtractLine(U2,b+1);
+						gl->SetValue(0,b,rho->GetValue(0,b)*(U1->MatrixInternSum()*(-1)+U2->MatrixInternSum()));
+					}
+				}
+				glocal[c]=glocal[c]+gg*gl->MatrixInternSum();
+			}
+		}
+	}
+
+	MPI_Allreduce(glocal,g->GetPointer(),n,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
+
+	delete xp;
+	delete yp;
+	delete xpp;
+	delete ypp;
+	delete gl;
+	delete U;
+	delete U1;
+	delete U2;
+	delete []glocal;
+}/*}}}*/
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+		}
+	}
+}/*}}}*/
+void reshape(Matrix* V,Matrix* V1,int nx,int ny){/*{{{*/
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			V1->SetValue(j+nx*i,0,V->GetValue(i,j));
+		}
+	}
+}/*}}}*/
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,Matrix *dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs){/*{{{*/
+	Matrix* m1=new Matrix(mx*my,4);
+	Matrix* m2=new Matrix(mx*my,3);
+	Matrix* g1=new Matrix(nx*ny,1);
+	Matrix* g2=new Matrix(nx*ny,1);
+	Matrix* g=new Matrix(nx*ny,1);
+	Matrix* gcalgr=new Matrix(ny,nx);
+	Matrix* gcalvec=new Matrix(nx*ny,1);
+	Matrix* df=new Matrix(nx*ny,1);
+	Matrix* G=new Matrix(nx*ny,3);
+	double a=0;
+	double b=0;
+	double e=0;
+	msplit(m0,m1,m2,dlevel);
+	plouff(g1,Pobs,Pp,m1,rho1,dx,dy,dn,mx*my,nx*ny,4,evalid, my_rank, num_procs);
+	plouff(g2,Pobs,Pp,m2,rho2,dx,dy,dn,mx*my,nx*ny,3,evalid, my_rank, num_procs);
+	g->MatrixSum(g1,g2);
+	vec2gridsimple(g,gcalgr,nx,ny);
+	reshape(gcalgr,gcalvec,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		df->SetValue(i,0,evalid->GetValue(i,0)*(gobs->GetValue(i,0)-gcalvec->GetValue(i,0)));
+		G->SetValue(i,0,evalid->GetValue(i,0)*Pobs->GetValue(i,0));
+		G->SetValue(i,1,evalid->GetValue(i,0)*Pobs->GetValue(i,1));
+		G->SetValue(i,2,evalid->GetValue(i,0));
+	}
+	Matrix* M = NULL;
+	GSLsquarefit(&M,G,df);
+
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			gcalgr->SetValue(i,j,gcalgr->GetValue(i,j)+xobs->GetValue(i,j)*M->GetValue(0,0)+yobs->GetValue(i,j)*M->GetValue(1,0)+M->GetValue(2,0));
+		}
+	}
+	reshape(gcalgr,g,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		a=a+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)-g->GetValue(i,0)));
+		b=b+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)+g->GetValue(i,0)));
+	}
+	e=2*a/(a+b);
+
+	delete m1;
+	delete m2;
+	delete g1;
+	delete g2;
+	delete g;
+	delete gcalgr;
+	delete gcalvec;
+	delete df;
+	delete G;
+	delete M;
+
+	return e;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/code_inversion/vfsa_mpi.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/code_inversion/vfsa_mpi.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/code_inversion/vfsa_mpi.cpp	(revision 21239)
@@ -0,0 +1,876 @@
+#include <iostream>
+#include <cmath>
+#include <fstream>
+#include <string>
+#include <cstdio>
+#include <cstdlib>
+#include <time.h>
+#include <cassert>
+#include <gsl/gsl_multifit.h>
+#include "mpi.h"
+using namespace std;
+
+class Matrix{/*{{{*/
+	private:
+		int     M;        /*Number of lines   */
+		int     N;        /*Number if Columns */
+		double *values;
+	public:
+		Matrix(int m_in,int n_in){/*{{{*/
+			this->M = m_in;
+			this->N = n_in;
+			this->values = new double[M*N]();
+		}/*}}}*/
+		~Matrix(){/*{{{*/
+			delete [] this->values;
+		}/*}}}*/
+		void Echo(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					cout << " " << this->values[i*N+j];
+				}
+				cout << endl;
+			}
+		}/*}}}*/
+		void SetValue(int i,int j,double value){/*{{{*/
+			this->values[i*N+j] = value;
+		}/*}}}*/
+		double GetValue(int i,int j){/*{{{*/
+			return this->values[i*N+j];
+		}/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM = this->M;
+			*pN = this->N;
+		}/*}}}*/
+		double* GetPointer(void){/*{{{*/
+			return this->values;
+		}/*}}}*/
+		void MatrixSum(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) + B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixDiff(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) - B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixAbs(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,fabs(A->GetValue(i,j)));
+				}
+			}
+		}/*}}}*/
+		void MatrixEqual(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		double MatrixInternSum(){/*{{{*/
+			double sum=0;
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					sum+=this->GetValue(i,j);
+				}
+			}
+			return sum;
+		}/*}}}*/
+		void ExtractLine(Matrix* A,int i){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(M_A==1 && this->N==N_A);
+			for(int j=0;j<this->N;j++){
+				A->SetValue(0,j,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void ExtractColumn(Matrix* A,int j){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(N_A==1 && this->M==M_A);
+			for(int i=0;i<this->M;i++){
+				A->SetValue(i,0,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void AddNumber(double a){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,this->GetValue(i,j) + a);
+				}
+			}
+		}/*}}}*/
+};/*}}}*/
+
+/*Local prototypes{{{*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy);
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny);
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel);
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix *evalid,int my_rank,int num_procs);
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny);
+void reshape(Matrix* V,Matrix* V1,int nx,int ny);
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs);
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B);
+double signe(double a);
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my);
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd, Matrix *landmask);
+double coolshed(double T0,double k,double c,double D);
+/*}}}*/
+
+int main(int argc,char *argv[]){/*{{{*/
+	
+	int my_rank,num_procs;
+
+	MPI_Init(&argc, &argv);
+
+	MPI_Comm_size(MPI_COMM_WORLD,&num_procs);
+	MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
+
+	/* Seed the random number generator {{{*/
+		srand (time(NULL));            /*}}}*/
+	/* Define the variables {{{*/
+
+	int    dx     = 1000;   /* prism dimension in x-direction                           */
+	int    dy     = 1000;   /* prism dimension in y-direction                           */
+	int    mx     = 99;    /* number of prisms in x-direction                          */
+	int    my     = 99;    /* number of prisms in y-direction                          */
+	int    nx     = 99;    /* number of data points in x-direction                     */
+	int    ny     = 99;    /* number of data points in y-direction                     */
+	int    dn     = 15000; /* distance for neighbouting prisms for gravity calculation */
+	double ptval  = 100.;  /* max. amount to perturb model                             */
+	double ptval2 = 100.;
+
+	Matrix *Pobs=new Matrix(nx*ny,2); /* data positions */
+	makep(Pobs,nx,ny,dx,dy);
+	// Pobs->Echo();
+
+
+	Matrix *Pp=new Matrix(mx*my,2); /* prisms positions */
+	makep(Pp,mx,my,dx,dy);
+	// Pp->Echo();
+
+	double  rhoi = 917;           /* ice density     */
+	double  rhow = 1030;          /* water density   */
+	// double  rhos = 2013;		      /* sediment density */
+	double  rhoc = 2670;          /* bedrock density */
+
+	Matrix *Rho  = new Matrix(1,2);
+	Rho->SetValue(0,0,rhoi);
+	Rho->SetValue(0,1,rhow);
+	Matrix *rho1  = new Matrix(1,3);
+	rho1->SetValue(0,0,rhoi);
+	rho1->SetValue(0,1,rhow);
+	rho1->SetValue(0,2,rhoc);
+	Matrix *rho2  = new Matrix(1,2);
+	rho2->SetValue(0,0,rhoi-rhoc);
+	rho2->SetValue(0,1,rhow-rhoc);
+
+	double dlevel=3134;         /* level of data acquisition */
+
+	double ctr=1;            /* parameter for filtering */
+	double sd=0.1;
+
+	Matrix *xobs= new Matrix(ny,nx);
+	Matrix *yobs= new Matrix(ny,nx);
+
+	vec2grid(Pobs,xobs,yobs,nx,ny);
+	//	xobs->Echo();
+	//	yobs->Echo();
+
+
+	double mmax  = 1000;               /* max value for layer interfaces */
+	double mmax2 = 1000;
+	double mmax3 = 1000;
+
+	/* control parameter for temperature schedule  */
+
+	double ca=0.9;                    /* for acceptance */
+	double cm=0.5;                    /* for model perturbation */
+
+	double T0a          = 0.1;      /* initial temperature for acceptance           */
+	double T0m          = 0.9;      /* initial temperature for model perturbation   */
+	double D            = 2;        /* dimension of the model                       */
+	int    maxconsecrej = 1000;     /* max consecutive rejection                    */
+	int    maxsuccess   = 100;      /* max number of success within one temperature */
+	double T_min        = 1e-10;    /* stopping temp                                */
+	double Tred         = 1;
+	double E_min        = -1000000;
+	double E_exp        = 0.0291;   /* expected misfit                              */
+	int    maxiter      = 10000;
+	int    maxtotaliter = 1000000;
+	double Tol          = 1e-10;    /* tolerance on misfit                          */
+	int    sfreq        = 100;
+
+	/*}}}*/     
+	/* load the data {{{*/
+
+	/*landmask */
+
+	ifstream file("landmaskzach.txt");
+	Matrix * landmask= new Matrix(nx*ny,1);
+	double inputnumber;
+	for(int i=0;i<ny*nx; i++){ 
+		file >> inputnumber;
+		landmask->SetValue(i,0,inputnumber);
+	}
+	file.close();
+
+	/* Observed gravity anomaly */
+
+	ifstream file1("gravityzach.txt");
+	Matrix * gobs= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){ 
+		file1 >> inputnumber;
+		gobs->SetValue(i,0, inputnumber*1e-5);
+	}
+	file1.close();
+	//	gobs->Echo();
+
+	/* load data about the ice thickness */
+
+	ifstream file2("icethickzach.txt");
+	Matrix * icethick= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file2 >> inputnumber;
+		icethick->SetValue(s,0,inputnumber);
+	}
+	file2.close();
+	//	icethick->Echo();
+
+	/* load the batimethry data */
+
+	ifstream file3("bathymetryzach.txt");
+	Matrix * bathy= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file3 >> inputnumber;
+		bathy->SetValue(s,0,inputnumber);
+	}
+	file3.close();
+	//	bathy->Echo();
+
+	/* id of grid to evaluate misfit */
+
+
+	ifstream file4("evalidzach.txt");
+	Matrix * evalid= new Matrix(nx*ny,1);
+	for(int s=0;s<nx*ny; s++){ 
+		file4 >> inputnumber;
+		evalid->SetValue(s,0,inputnumber);
+	}
+	file4.close();
+	//	evalid->Echo();
+
+	/* initial guess of the model */
+
+	ifstream file5("m0_102714contzach.txt");
+	Matrix * mesh_ini= new Matrix(mx*my,3);
+	for(int s=0;s<mx*my; s++){ 
+		for(int j=0;j<3;j++){
+			file5 >> inputnumber;
+			mesh_ini->SetValue(s,j,inputnumber);
+		}
+	}
+	file5.close();
+	//	mesh_ini->Echo();
+	/*}}}*/
+	/* VFSA {{{ */
+
+	/* name of the files to save results */
+	std::ofstream savefile1 ("r_zach.txt");
+	std::ofstream savefile2("m_zach.txt");
+
+	/* counters initialization */
+	int    success   = 0;
+	int    finished  = 0;
+	int    consec    = 0;
+	double Ta        = T0a;
+	double Tm        = T0m;
+	int    iterT     = 0;   /* iteration within a T      */
+	int    total     = 0;   /* total number of iteration */
+	int    totaliter = 0;
+	int    msave     = 0;
+	double E_new;
+	double E_final;
+	double dE;
+	double P;
+	double rn;
+	Matrix* m_old    = new Matrix(mx *my,3);
+	Matrix* m_min    = new Matrix(mx *my,3);
+	Matrix* m_new    = new Matrix(mx *my,3);
+	m_old->MatrixEqual(mesh_ini);
+
+	/* calculate initial misfit */
+	double E_old=misfit(m_old,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my, my_rank, num_procs);
+	/* record initial settings */
+	if(!my_rank){
+		savefile1 << "P     "<< "Ta    "<< "Tm    "<< "Eold  "<< "totaliter "<< "Tred   "<< endl;
+		savefile1 << "nan   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+		savefile2 << totaliter<< endl;
+		for(int i=0;i<mx*my;i++){
+			savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+		}
+		savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+	}
+	/* beginning of the loop */
+
+	while(finished==0){
+		iterT++;
+		totaliter++;
+
+		/* stop or reduce T */
+		if(iterT>=maxiter || success>maxsuccess){
+			if(Ta<T_min || total>maxtotaliter || fabs(E_old)<=Tol){
+				finished=1;
+				total+=iterT;
+				break;
+			}
+			else{ /* reduce T */
+				Ta=coolshed(T0a,Tred,ca,D);
+				Tm=coolshed(T0m,Tred,cm,D);
+				total+=iterT;
+				iterT=0;
+				success=1;
+				Tred++;
+				consec=0;
+			}
+		}
+
+		/* update model and calculate energy */
+
+		newmodelgen(m_old,m_new,bathy,icethick,mx,my,Tm,ptval,mmax,mmax2,ctr,sd, landmask);  /* new model */
+		E_new=misfit(m_new,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my, my_rank, num_procs); /* new energy */
+		dE=E_new-E_old;                                        /* energy difference */
+
+		/* acceptance probability */
+
+		P=exp(-dE/Ta);
+
+		/* stop if energy is lower than specified minimum */
+		if (E_new<E_min){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			break;
+		}
+
+		rn=rand()/double (RAND_MAX);
+
+		/* accept new model or not */
+		if(dE<=0){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			E_final=E_old;
+			success++;
+			consec=0;
+			if(!my_rank){
+				savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+			}
+			if(Ta<1e-3){
+				if(!my_rank){
+					savefile2 << totaliter<< endl;
+					for(int i=0;i<mx*my;i++){
+						savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+					}
+					savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+				}
+			}
+		}
+		else{
+			if(P>rn){
+				m_old->MatrixEqual(m_new);
+				E_old=E_new;
+				success++;
+				consec=0;
+				if(!my_rank){
+					savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+					if(Ta<1e-3){
+						savefile2 << totaliter<< endl;
+						for(int i=0;i<mx*my;i++){
+							savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+						}
+						savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+					}
+				}
+			}
+			else{
+				consec++;
+			}
+		}
+	}
+
+	m_min->MatrixEqual(m_old);
+	if(!my_rank){
+		savefile1 << "nan"<<"   "<<  "nan"<<"   "<< "nan"<<"   "<< E_final<<"     "<< "nan"<<"         "<< "nan" <<"  "<< endl;
+		savefile2 << " Mesh final"<< endl;
+		for(int i=0;i<mx*my;i++){
+			savefile2 << m_min->GetValue(i,0)<<"   "<< m_min->GetValue(i,1)<<"   "<< m_min->GetValue(i,2)<<endl;
+		}
+	}
+	savefile1.close();
+	savefile2.close();
+
+	delete m_old;
+	delete m_min;
+	delete m_new;
+	delete Pobs;
+	delete Pp;
+	delete Rho;
+	delete rho1;
+	delete rho2;
+	delete xobs;
+	delete yobs;
+	delete mesh_ini;
+	delete bathy;
+	delete icethick;
+	delete evalid;
+	delete gobs;
+	delete landmask;
+
+	/*}}}*/
+
+   MPI_Finalize();
+
+	return 0;
+}/*}}}*/
+
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B){/*{{{*/
+
+	/*GSL Matrices and vectors: */
+	int    M,N;
+	double chisq;
+	/*Get system size*/
+	A->GetSize(&M,&N);
+
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix* a = gsl_matrix_alloc(M,N);
+	for(int i=0;i<M;i++){
+		for(int j=0;j<N;j++){
+			gsl_matrix_set (a,i,j,A->GetValue(i,j));
+		}
+	}
+	gsl_vector* b = gsl_vector_alloc(M);
+	for(int i=0;i<M;i++){
+		gsl_vector_set(b,i,B->GetValue(i,0));
+	}
+
+	gsl_vector* x = gsl_vector_alloc(N);
+	gsl_matrix* cov = gsl_matrix_alloc(N,N);
+
+	/*Least square fit: */
+	gsl_multifit_linear_workspace* work = gsl_multifit_linear_alloc(M,N);
+	gsl_multifit_linear (a, b, x, cov, &chisq, work);
+	gsl_multifit_linear_free (work);
+
+	/*Clean up and assign output pointer*/
+	Matrix* X = new Matrix(N,1);
+	for(int j=0;j<N;j++){
+		X->SetValue(j,0,gsl_vector_get(x,j));
+	}
+	*pX = X;
+
+	gsl_matrix_free(a);
+	gsl_vector_free(x);
+	gsl_vector_free(b);
+	gsl_matrix_free(cov);
+
+}/*}}}*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			Pobs->SetValue(j+nx*i,0,j*dx);
+			Pobs->SetValue(j+nx*i,1,i*dy);
+		}
+	}
+}/*}}}*/
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+			V2->SetValue(i,j, V->GetValue(j+nx*i,1));
+		}
+	}
+}/*}}}*/
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel){/*{{{*/
+	int sizem1,sizem2;
+	m->GetSize(&sizem1,&sizem2);
+	for(int i=0;i<sizem1;i++){
+		for(int j=0;j<sizem2+1;j++){
+			if(j<sizem2){
+				m1->SetValue(i,j,1e-10*(sizem2+1-j));
+				m2->SetValue(i,j,m->GetValue(i,j));
+				if(m->GetValue(i,j)<0){
+					m1->SetValue(i,j,m->GetValue(i,j));
+					m2->SetValue(i,j,i*1e-10);
+				}
+				m1->SetValue(i,j,m1->GetValue(i,j));
+				m2->SetValue(i,j,m2->GetValue(i,j));
+			}
+			else{
+				m1->SetValue(i,j,1e-10);
+			}
+		}
+	}
+	m1->AddNumber(dlevel);
+	m2->AddNumber(dlevel);
+}/*}}}*/
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix* evalid,int my_rank,int num_procs){/*{{{*/
+	double gg=6.673e-11;
+	int si,sj,id,s;
+	double R,Q,P;
+	Matrix *xp= new Matrix(1,2);
+	Matrix *yp= new Matrix(1,2);
+	Matrix *xpp= new Matrix(1,2);
+	Matrix *ypp= new Matrix(1,2);
+	Matrix *U= new Matrix(l,4);
+	Matrix *U1=new Matrix(1,4);
+	Matrix *U2=new Matrix(1,4);
+	Matrix *gl= new Matrix(1,l-1);
+	bool test=true;
+
+	double *glocal=new double[n]();
+
+	for(int c=my_rank;c<n;c+=num_procs){
+		glocal[c]=0;
+		if(evalid->GetValue(i,0)==1){
+			for(int a=0;a<m;a++){
+				test=true;
+				xp->SetValue(0,0,Pp->GetValue(a,0)-Pobs->GetValue(c,0));
+				xp->SetValue(0,1,Pp->GetValue(a,0)-Pobs->GetValue(c,0)+dx);
+				if(xp->GetValue(0,0)<0 && xp->GetValue(0,0)<xp->GetValue(0,1) && xp->GetValue(0,0)*xp->GetValue(0,1)>=0){
+					xpp->SetValue(0,0,xp->GetValue(0,1));
+					xpp->SetValue(0,1,xp->GetValue(0,0));
+					xp->MatrixAbs(xpp);
+				}
+				yp->SetValue(0,0,Pp->GetValue(a,1)-Pobs->GetValue(c,1));
+				yp->SetValue(0,1,Pp->GetValue(a,1)-Pobs->GetValue(c,1)+dy);
+				if(yp->GetValue(0,0)<0 && yp->GetValue(0,0)<yp->GetValue(0,1) && yp->GetValue(0,0)*yp->GetValue(0,1)>=0){
+					ypp->SetValue(0,0,yp->GetValue(0,1));
+					ypp->SetValue(0,1,yp->GetValue(0,0));
+					yp->MatrixAbs(ypp);
+				}
+				P=sqrt(xp->GetValue(0,0)*xp->GetValue(0,0)+yp->GetValue(0,0)*yp->GetValue(0,0));
+				if(P>dn){
+					test=false;
+					for(int i=0;i<l-1;i++){
+						gl->SetValue(0,i,0);
+					}
+				}
+				if(test==true){
+					si=1;
+					sj=1;
+					id=0;
+					for(int i=0;i<2;i++){
+						si*=-1;
+						for(int j=0;j<2;j++){
+							sj*=-1;
+							s=si*sj;
+							for(int k=0;k<l;k++){
+								R=sqrt(xp->GetValue(0,i)*xp->GetValue(0,i)+yp->GetValue(0,j)*yp->GetValue(0,j)+mesh->GetValue(a,k)*mesh->GetValue(a,k));
+								Q=atan(xp->GetValue(0,i)*yp->GetValue(0,j)/(mesh->GetValue(a,k)*R));
+								U->SetValue(k,id,s*(mesh->GetValue(a,k)*Q-xp->GetValue(0,i)*log(R+yp->GetValue(0,j))-yp->GetValue(0,j)*log(R+xp->GetValue(0,i))));
+							}
+							id++;
+						}
+					}
+					for(int b=0;b<l-1;b++){
+						U->ExtractLine(U1,b);
+						U->ExtractLine(U2,b+1);
+						gl->SetValue(0,b,rho->GetValue(0,b)*(U1->MatrixInternSum()*(-1)+U2->MatrixInternSum()));
+					}
+				}
+				glocal[c]=glocal[c]+gg*gl->MatrixInternSum();
+			}
+		}
+	}
+
+	MPI_Allreduce(glocal,g->GetPointer(),n,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
+
+	delete xp;
+	delete yp;
+	delete xpp;
+	delete ypp;
+	delete gl;
+	delete U;
+	delete U1;
+	delete U2;
+	delete []glocal;
+}/*}}}*/
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+		}
+	}
+}/*}}}*/
+void reshape(Matrix* V,Matrix* V1,int nx,int ny){/*{{{*/
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			V1->SetValue(j+nx*i,0,V->GetValue(i,j));
+		}
+	}
+}/*}}}*/
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs){/*{{{*/
+	Matrix* m1=new Matrix(mx*my,4);
+	Matrix* m2=new Matrix(mx*my,3);
+	Matrix* g1=new Matrix(nx*ny,1);
+	Matrix* g2=new Matrix(nx*ny,1);
+	Matrix* g=new Matrix(nx*ny,1);
+	Matrix* gcalgr=new Matrix(ny,nx);
+	Matrix* gcalvec=new Matrix(nx*ny,1);
+	Matrix* df=new Matrix(nx*ny,1);
+	Matrix* G=new Matrix(nx*ny,3);
+	double a=0;
+	double b=0;
+	double e=0;
+	msplit(m0,m1,m2,dlevel);
+	plouff(g1,Pobs,Pp,m1,rho1,dx,dy,dn,mx*my,nx*ny,4,evalid, my_rank, num_procs);
+	plouff(g2,Pobs,Pp,m2,rho2,dx,dy,dn,mx*my,nx*ny,3,evalid, my_rank, num_procs);
+	g->MatrixSum(g1,g2);
+	vec2gridsimple(g,gcalgr,nx,ny);
+	reshape(gcalgr,gcalvec,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		df->SetValue(i,0,evalid->GetValue(i,0)*(gobs->GetValue(i,0)-gcalvec->GetValue(i,0)));
+		G->SetValue(i,0,evalid->GetValue(i,0)*Pobs->GetValue(i,0));
+		G->SetValue(i,1,evalid->GetValue(i,0)*Pobs->GetValue(i,1));
+		G->SetValue(i,2,evalid->GetValue(i,0));
+	}
+	Matrix* M = NULL;
+	GSLsquarefit(&M,G,df);
+
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			gcalgr->SetValue(i,j,gcalgr->GetValue(i,j)+xobs->GetValue(i,j)*M->GetValue(0,0)+yobs->GetValue(i,j)*M->GetValue(1,0)+M->GetValue(2,0));
+		}
+	}
+	reshape(gcalgr,g,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		a=a+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)-g->GetValue(i,0)));
+		b=b+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)+g->GetValue(i,0)));
+	}
+	e=2*a/(a+b);
+
+	delete m1;
+	delete m2;
+	delete g1;
+	delete g2;
+	delete g;
+	delete gcalgr;
+	delete gcalvec;
+	delete df;
+	delete G;
+	delete M;
+
+	return e;
+}/*}}}*/
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd, Matrix *landmask){/*{{{*/
+	Matrix* m1gr=new Matrix(my,mx);
+	Matrix* m1grsm=new Matrix(my,mx);
+	Matrix* m1col=new Matrix(mx*my,1);
+	Matrix* m1gr2=new Matrix(my,mx);
+	Matrix* m1grsm2=new Matrix(my,mx);
+	Matrix* m1col2=new Matrix(mx*my,1);
+	Matrix* nptflag= new Matrix(mx*my,1);
+	double u=0;
+	double y=0;
+	m1->MatrixEqual(m0);
+	nptflag->MatrixSum(icethick,bathy);
+	/* first layer: ice */
+	for (int i=0;i<mx*my;i++){
+		if(landmask->GetValue(i,0)==2){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,1,m0->GetValue(i,1)+y*ptval);
+				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(m1->GetValue(i,1)>=m1->GetValue(i,0)+mmax){
+					m1->SetValue(i,1,m1->GetValue(i,0)+mmax);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+		}
+		else if(landmask->GetValue(i,0)==0){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+				if(m1->GetValue(i,2)<=m1->GetValue(i,0)){
+					m1->SetValue(i,2,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,2)>=m1->GetValue(i,0)+mmax2){
+					m1->SetValue(i,2,m1->GetValue(i,0)+mmax2);
+				}
+			}
+		}
+		else if(landmask->GetValue(i,0)==3){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,1,m0->GetValue(i,1)+y*ptval);
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,1)>=m1->GetValue(i,0)+mmax){
+					m1->SetValue(i,1,m1->GetValue(i,0)+mmax);
+				}
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+				if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(m1->GetValue(i,2)>=m1->GetValue(i,1)+mmax2){
+					m1->SetValue(i,2,m1->GetValue(i,1)+mmax2);
+				}
+			}
+		}
+	}
+
+	m1->ExtractColumn(m1col,1);
+	vec2gridsimple(m1col,m1gr,mx,my);
+	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+	reshape(m1grsm,m1col,mx,my);
+	m1->ExtractColumn(m1col2,2);
+	vec2gridsimple(m1col2,m1gr2,mx,my);
+	filtergrav(m1grsm2,m1gr2,ctr,sd,mx,my);
+	reshape(m1grsm2,m1col2,mx,my);
+
+	for (int i=0;i<mx*my;i++){
+		if(landmask->GetValue(i,0)==2){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,1,m1col->GetValue(i,0));
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(fabs(m1->GetValue(i,2)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else if(landmask->GetValue(i,0)==0){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,2)<=m1->GetValue(i,0)){
+					m1->SetValue(i,2,m1->GetValue(i,0)+1e-10);
+				}
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else if(landmask->GetValue(i,0)==3){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,1,m1col->GetValue(i,0));
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else {
+			if(nptflag->GetValue(i,0)==0){
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,1,m1->GetValue(i,0));
+				}
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,2))>1){
+					m1->SetValue(i,2,m1->GetValue(i,0));
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+	}
+
+				/* second layer: water */
+//	for (int i=0;i<mx*my;i++){
+//		if(bathy->GetValue(i,0)==0){
+//			u=double (rand())/ double(RAND_MAX);
+//			y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+//			m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+//			if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+//				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+//			}
+//			if(m1->GetValue(i,2)>=m1->GetValue(i,1)+mmax2){
+//				m1->SetValue(i,2,m1->GetValue(i,1)+mmax2);
+//			}
+//		}
+//	}
+//	m1->ExtractColumn(m1col,2);
+//	vec2gridsimple(m1col,m1gr,mx,my);
+//	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+//	reshape(m1grsm,m1col,mx,my);
+//	for (int i=0;i<mx*my;i++){
+//		if(bathy->GetValue(i,0)==0){
+//			m1->SetValue(i,2,m1col->GetValue(i,0));
+//		}
+//		else{
+//			m1->SetValue(i,2,m0->GetValue(i,2));
+//		}
+//		if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+//			m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+//		}
+//	}
+	delete m1gr;
+	delete m1grsm;
+	delete m1col;
+	delete m1gr2;
+	delete m1grsm2;
+	delete m1col2;
+	delete nptflag;
+}/*}}}*/
+double signe(double a){/*{{{*/
+	if(a<0){return -1;}
+	else{return 1;}
+}/*}}}*/
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my){/*{{{*/
+	A->MatrixEqual(Ain);
+	for (int i=1;i<my-1;i++){
+		for(int j=1;j<mx-1;j++){
+			A->SetValue(i,j,(ctr*Ain->GetValue(i,j)+sd*(Ain->GetValue(i-1,j)+Ain->GetValue(i+1,j)+Ain->GetValue(i,j-1)+Ain->GetValue(i,j+1)))/(ctr+4*sd));
+		}
+	}
+}/*}}}*/
+double coolshed(double T0,double k,double c,double D){/*{{{*/
+	double T1=T0*exp(-c*pow(k,1/D));
+	return T1;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/code_inversion/vfsa_mpi_uneven.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/code_inversion/vfsa_mpi_uneven.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/code_inversion/vfsa_mpi_uneven.cpp	(revision 21239)
@@ -0,0 +1,882 @@
+#include <iostream>
+#include <cmath>
+#include <fstream>
+#include <string>
+#include <cstdio>
+#include <cstdlib>
+#include <time.h>
+#include <cassert>
+#include <gsl/gsl_multifit.h>
+#include "mpi.h"
+using namespace std;
+
+class Matrix{/*{{{*/
+	private:
+		int     M;        /*Number of lines   */
+		int     N;        /*Number if Columns */
+		double *values;
+	public:
+		Matrix(int m_in,int n_in){/*{{{*/
+			this->M = m_in;
+			this->N = n_in;
+			this->values = new double[M*N]();
+		}/*}}}*/
+		~Matrix(){/*{{{*/
+			delete [] this->values;
+		}/*}}}*/
+		void Echo(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					cout << " " << this->values[i*N+j];
+				}
+				cout << endl;
+			}
+		}/*}}}*/
+		void SetValue(int i,int j,double value){/*{{{*/
+			this->values[i*N+j] = value;
+		}/*}}}*/
+		double GetValue(int i,int j){/*{{{*/
+			return this->values[i*N+j];
+		}/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM = this->M;
+			*pN = this->N;
+		}/*}}}*/
+		double* GetPointer(void){/*{{{*/
+			return this->values;
+		}/*}}}*/
+		void MatrixSum(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) + B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixDiff(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) - B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixAbs(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,fabs(A->GetValue(i,j)));
+				}
+			}
+		}/*}}}*/
+		void MatrixEqual(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		double MatrixInternSum(){/*{{{*/
+			double sum=0;
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					sum+=this->GetValue(i,j);
+				}
+			}
+			return sum;
+		}/*}}}*/
+		void ExtractLine(Matrix* A,int i){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(M_A==1 && this->N==N_A);
+			for(int j=0;j<this->N;j++){
+				A->SetValue(0,j,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void ExtractColumn(Matrix* A,int j){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(N_A==1 && this->M==M_A);
+			for(int i=0;i<this->M;i++){
+				A->SetValue(i,0,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void AddNumber(double a){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,this->GetValue(i,j) + a);
+				}
+			}
+		}/*}}}*/
+};/*}}}*/
+
+/*Local prototypes{{{*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy);
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny);
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,Matrix *dlevel);
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix *evalid,int my_rank,int num_procs);
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny);
+void reshape(Matrix* V,Matrix* V1,int nx,int ny);
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,Matrix *dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs);
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B);
+double signe(double a);
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my);
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd, Matrix *landmask);
+double coolshed(double T0,double k,double c,double D);
+/*}}}*/
+
+int main(int argc,char *argv[]){/*{{{*/
+	
+	int my_rank,num_procs;
+
+	MPI_Init(&argc, &argv);
+
+	MPI_Comm_size(MPI_COMM_WORLD,&num_procs);
+	MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
+
+	/* Seed the random number generator {{{*/
+		srand (time(NULL));            /*}}}*/
+	/* Define the variables {{{*/
+
+	int    dx     = 1000;   /* prism dimension in x-direction                           */
+	int    dy     = 1000;   /* prism dimension in y-direction                           */
+	int    mx     = 99;    /* number of prisms in x-direction                          */
+	int    my     = 99;    /* number of prisms in y-direction                          */
+	int    nx     = 99;    /* number of data points in x-direction                     */
+	int    ny     = 99;    /* number of data points in y-direction                     */
+	int    dn     = 15000; /* distance for neighbouting prisms for gravity calculation */
+	double ptval  = 100.;  /* max. amount to perturb model                             */
+	double ptval2 = 100.;
+
+	Matrix *Pobs=new Matrix(nx*ny,2); /* data positions */
+	makep(Pobs,nx,ny,dx,dy);
+	// Pobs->Echo();
+
+
+	Matrix *Pp=new Matrix(mx*my,2); /* prisms positions */
+	makep(Pp,mx,my,dx,dy);
+	// Pp->Echo();
+
+	double  rhoi = 917;           /* ice density     */
+	double  rhow = 1030;          /* water density   */
+	// double  rhos = 2013;		      /* sediment density */
+	double  rhoc = 2670;          /* bedrock density */
+
+	Matrix *Rho  = new Matrix(1,2);
+	Rho->SetValue(0,0,rhoi);
+	Rho->SetValue(0,1,rhow);
+	Matrix *rho1  = new Matrix(1,3);
+	rho1->SetValue(0,0,rhoi);
+	rho1->SetValue(0,1,rhow);
+	rho1->SetValue(0,2,rhoc);
+	Matrix *rho2  = new Matrix(1,2);
+	rho2->SetValue(0,0,rhoi-rhoc);
+	rho2->SetValue(0,1,rhow-rhoc);
+
+	double ctr=1;            /* parameter for filtering */
+	double sd=0.1;
+
+	Matrix *xobs= new Matrix(ny,nx);
+	Matrix *yobs= new Matrix(ny,nx);
+
+	vec2grid(Pobs,xobs,yobs,nx,ny);
+	//	xobs->Echo();
+	//	yobs->Echo();
+
+
+	double mmax  = 1000;               /* max value for layer interfaces */
+	double mmax2 = 1000;
+	double mmax3 = 1000;
+
+	/* control parameter for temperature schedule  */
+
+	double ca=0.9;                    /* for acceptance */
+	double cm=0.5;                    /* for model perturbation */
+
+	double T0a          = 0.1;      /* initial temperature for acceptance           */
+	double T0m          = 0.9;      /* initial temperature for model perturbation   */
+	double D            = 2;        /* dimension of the model                       */
+	int    maxconsecrej = 1000;     /* max consecutive rejection                    */
+	int    maxsuccess   = 100;      /* max number of success within one temperature */
+	double T_min        = 1e-10;    /* stopping temp                                */
+	double Tred         = 1;
+	double E_min        = -1000000;
+	double E_exp        = 0.0291;   /* expected misfit                              */
+	int    maxiter      = 10000;
+	int    maxtotaliter = 1000000;
+	double Tol          = 1e-10;    /* tolerance on misfit                          */
+	int    sfreq        = 100;
+
+	/*}}}*/     
+	/* load the data {{{*/
+
+	/*landmask */
+
+	ifstream file("landmaskzach.txt");
+	Matrix * landmask= new Matrix(nx*ny,1);
+	double inputnumber;
+	for(int i=0;i<ny*nx; i++){ 
+		file >> inputnumber;
+		landmask->SetValue(i,0,inputnumber);
+	}
+	file.close();
+
+	/* Levels of data acquisition */
+
+	ifstream file0("altizach.txt");
+	Matrix * dlevel= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){
+		file0 >> inputnumber;
+		dlevel->SetValue(i,0,inputnumber);
+	}
+	file0.close();
+
+	/* Observed gravity anomaly */
+
+	ifstream file1("gravityzach.txt");
+	Matrix * gobs= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){ 
+		file1 >> inputnumber;
+		gobs->SetValue(i,0, inputnumber*1e-5);
+	}
+	file1.close();
+	//	gobs->Echo();
+
+	/* load data about the ice thickness */
+
+	ifstream file2("icethickzach.txt");
+	Matrix * icethick= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file2 >> inputnumber;
+		icethick->SetValue(s,0,inputnumber);
+	}
+	file2.close();
+	//	icethick->Echo();
+
+	/* load the batimethry data */
+
+	ifstream file3("bathymetryzach.txt");
+	Matrix * bathy= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file3 >> inputnumber;
+		bathy->SetValue(s,0,inputnumber);
+	}
+	file3.close();
+	//	bathy->Echo();
+
+	/* id of grid to evaluate misfit */
+
+
+	ifstream file4("evalidzach.txt");
+	Matrix * evalid= new Matrix(nx*ny,1);
+	for(int s=0;s<nx*ny; s++){ 
+		file4 >> inputnumber;
+		evalid->SetValue(s,0,inputnumber);
+	}
+	file4.close();
+	//	evalid->Echo();
+
+	/* initial guess of the model */
+
+	ifstream file5("m0_102714contzach.txt");
+	Matrix * mesh_ini= new Matrix(mx*my,3);
+	for(int s=0;s<mx*my; s++){ 
+		for(int j=0;j<3;j++){
+			file5 >> inputnumber;
+			mesh_ini->SetValue(s,j,inputnumber);
+		}
+	}
+	file5.close();
+	//	mesh_ini->Echo();
+	/*}}}*/
+	/* VFSA {{{ */
+
+	/* name of the files to save results */
+	std::ofstream savefile1 ("r_zach.txt");
+	std::ofstream savefile2("m_zach.txt");
+
+	/* counters initialization */
+	int    success   = 0;
+	int    finished  = 0;
+	int    consec    = 0;
+	double Ta        = T0a;
+	double Tm        = T0m;
+	int    iterT     = 0;   /* iteration within a T      */
+	int    total     = 0;   /* total number of iteration */
+	int    totaliter = 0;
+	int    msave     = 0;
+	double E_new;
+	double E_final;
+	double dE;
+	double P;
+	double rn;
+	Matrix* m_old    = new Matrix(mx *my,3);
+	Matrix* m_min    = new Matrix(mx *my,3);
+	Matrix* m_new    = new Matrix(mx *my,3);
+	m_old->MatrixEqual(mesh_ini);
+
+	/* calculate initial misfit */
+	double E_old=misfit(m_old,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my, my_rank, num_procs);
+	/* record initial settings */
+	if(!my_rank){
+		savefile1 << "P     "<< "Ta    "<< "Tm    "<< "Eold  "<< "totaliter "<< "Tred   "<< endl;
+		savefile1 << "nan   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+		savefile2 << totaliter<< endl;
+		for(int i=0;i<mx*my;i++){
+			savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+		}
+		savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+	}
+	/* beginning of the loop */
+
+	while(finished==0){
+		iterT++;
+		totaliter++;
+
+		/* stop or reduce T */
+		if(iterT>=maxiter || success>maxsuccess){
+			if(Ta<T_min || total>maxtotaliter || fabs(E_old)<=Tol){
+				finished=1;
+				total+=iterT;
+				break;
+			}
+			else{ /* reduce T */
+				Ta=coolshed(T0a,Tred,ca,D);
+				Tm=coolshed(T0m,Tred,cm,D);
+				total+=iterT;
+				iterT=0;
+				success=1;
+				Tred++;
+				consec=0;
+			}
+		}
+
+		/* update model and calculate energy */
+
+		newmodelgen(m_old,m_new,bathy,icethick,mx,my,Tm,ptval,mmax,mmax2,ctr,sd, landmask);  /* new model */
+		E_new=misfit(m_new,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my, my_rank, num_procs); /* new energy */
+		dE=E_new-E_old;                                        /* energy difference */
+
+		/* acceptance probability */
+
+		P=exp(-dE/Ta);
+
+		/* stop if energy is lower than specified minimum */
+		if (E_new<E_min){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			break;
+		}
+
+		rn=rand()/double (RAND_MAX);
+
+		/* accept new model or not */
+		if(dE<=0){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			E_final=E_old;
+			success++;
+			consec=0;
+			if(!my_rank){
+				savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+			}
+			if(Ta<1e-3){
+				if(!my_rank){
+					savefile2 << totaliter<< endl;
+					for(int i=0;i<mx*my;i++){
+						savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+					}
+					savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+				}
+			}
+		}
+		else{
+			if(P>rn){
+				m_old->MatrixEqual(m_new);
+				E_old=E_new;
+				success++;
+				consec=0;
+				if(!my_rank){
+					savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+					if(Ta<1e-3){
+						savefile2 << totaliter<< endl;
+						for(int i=0;i<mx*my;i++){
+							savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+						}
+						savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+					}
+				}
+			}
+			else{
+				consec++;
+			}
+		}
+	}
+
+	m_min->MatrixEqual(m_old);
+	if(!my_rank){
+		savefile1 << "nan"<<"   "<<  "nan"<<"   "<< "nan"<<"   "<< E_final<<"     "<< "nan"<<"         "<< "nan" <<"  "<< endl;
+		savefile2 << " Mesh final"<< endl;
+		for(int i=0;i<mx*my;i++){
+			savefile2 << m_min->GetValue(i,0)<<"   "<< m_min->GetValue(i,1)<<"   "<< m_min->GetValue(i,2)<<endl;
+		}
+	}
+	savefile1.close();
+	savefile2.close();
+
+	delete m_old;
+	delete m_min;
+	delete m_new;
+	delete Pobs;
+	delete Pp;
+	delete Rho;
+	delete rho1;
+	delete rho2;
+	delete xobs;
+	delete yobs;
+	delete mesh_ini;
+	delete bathy;
+	delete icethick;
+	delete evalid;
+	delete gobs;
+	delete landmask;
+
+	/*}}}*/
+
+   MPI_Finalize();
+
+	return 0;
+}/*}}}*/
+
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B){/*{{{*/
+
+	/*GSL Matrices and vectors: */
+	int    M,N;
+	double chisq;
+	/*Get system size*/
+	A->GetSize(&M,&N);
+
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix* a = gsl_matrix_alloc(M,N);
+	for(int i=0;i<M;i++){
+		for(int j=0;j<N;j++){
+			gsl_matrix_set (a,i,j,A->GetValue(i,j));
+		}
+	}
+	gsl_vector* b = gsl_vector_alloc(M);
+	for(int i=0;i<M;i++){
+		gsl_vector_set(b,i,B->GetValue(i,0));
+	}
+
+	gsl_vector* x = gsl_vector_alloc(N);
+	gsl_matrix* cov = gsl_matrix_alloc(N,N);
+
+	/*Least square fit: */
+	gsl_multifit_linear_workspace* work = gsl_multifit_linear_alloc(M,N);
+	gsl_multifit_linear (a, b, x, cov, &chisq, work);
+	gsl_multifit_linear_free (work);
+
+	/*Clean up and assign output pointer*/
+	Matrix* X = new Matrix(N,1);
+	for(int j=0;j<N;j++){
+		X->SetValue(j,0,gsl_vector_get(x,j));
+	}
+	*pX = X;
+
+	gsl_matrix_free(a);
+	gsl_vector_free(x);
+	gsl_vector_free(b);
+	gsl_matrix_free(cov);
+
+}/*}}}*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			Pobs->SetValue(j+nx*i,0,j*dx);
+			Pobs->SetValue(j+nx*i,1,i*dy);
+		}
+	}
+}/*}}}*/
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+			V2->SetValue(i,j, V->GetValue(j+nx*i,1));
+		}
+	}
+}/*}}}*/
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,Matrix* dlevel){/*{{{*/
+	int sizem1,sizem2;
+	m->GetSize(&sizem1,&sizem2);
+	for(int i=0;i<sizem1;i++){
+		for(int j=0;j<sizem2+1;j++){
+			if(j<sizem2){
+				m1->SetValue(i,j,1e-10*(sizem2+1-j));
+				m2->SetValue(i,j,m->GetValue(i,j));
+				if(m->GetValue(i,j)<0){
+					m1->SetValue(i,j,m->GetValue(i,j));
+					m2->SetValue(i,j,i*1e-10);
+				}
+				m1->SetValue(i,j,m1->GetValue(i,j)+dlevel->GetValue(i,1));
+				m2->SetValue(i,j,m2->GetValue(i,j)+dlevel->GetValue(i,1));
+			}
+			else{
+				m1->SetValue(i,j,1e-10+dlevel->GetValue(i,1));
+			}
+		}
+	}
+}/*}}}*/
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix* evalid,int my_rank,int num_procs){/*{{{*/
+	double gg=6.673e-11;
+	int si,sj,id,s;
+	double R,Q,P;
+	Matrix *xp= new Matrix(1,2);
+	Matrix *yp= new Matrix(1,2);
+	Matrix *xpp= new Matrix(1,2);
+	Matrix *ypp= new Matrix(1,2);
+	Matrix *U= new Matrix(l,4);
+	Matrix *U1=new Matrix(1,4);
+	Matrix *U2=new Matrix(1,4);
+	Matrix *gl= new Matrix(1,l-1);
+	bool test=true;
+
+	double *glocal=new double[n]();
+
+	for(int c=my_rank;c<n;c+=num_procs){
+		glocal[c]=0;
+		if(evalid->GetValue(i,0)==1){
+			for(int a=0;a<m;a++){
+				test=true;
+				xp->SetValue(0,0,Pp->GetValue(a,0)-Pobs->GetValue(c,0));
+				xp->SetValue(0,1,Pp->GetValue(a,0)-Pobs->GetValue(c,0)+dx);
+				if(xp->GetValue(0,0)<0 && xp->GetValue(0,0)<xp->GetValue(0,1) && xp->GetValue(0,0)*xp->GetValue(0,1)>=0){
+					xpp->SetValue(0,0,xp->GetValue(0,1));
+					xpp->SetValue(0,1,xp->GetValue(0,0));
+					xp->MatrixAbs(xpp);
+				}
+				yp->SetValue(0,0,Pp->GetValue(a,1)-Pobs->GetValue(c,1));
+				yp->SetValue(0,1,Pp->GetValue(a,1)-Pobs->GetValue(c,1)+dy);
+				if(yp->GetValue(0,0)<0 && yp->GetValue(0,0)<yp->GetValue(0,1) && yp->GetValue(0,0)*yp->GetValue(0,1)>=0){
+					ypp->SetValue(0,0,yp->GetValue(0,1));
+					ypp->SetValue(0,1,yp->GetValue(0,0));
+					yp->MatrixAbs(ypp);
+				}
+				P=sqrt(xp->GetValue(0,0)*xp->GetValue(0,0)+yp->GetValue(0,0)*yp->GetValue(0,0));
+				if(P>dn){
+					test=false;
+					for(int i=0;i<l-1;i++){
+						gl->SetValue(0,i,0);
+					}
+				}
+				if(test==true){
+					si=1;
+					sj=1;
+					id=0;
+					for(int i=0;i<2;i++){
+						si*=-1;
+						for(int j=0;j<2;j++){
+							sj*=-1;
+							s=si*sj;
+							for(int k=0;k<l;k++){
+								R=sqrt(xp->GetValue(0,i)*xp->GetValue(0,i)+yp->GetValue(0,j)*yp->GetValue(0,j)+mesh->GetValue(a,k)*mesh->GetValue(a,k));
+								Q=atan(xp->GetValue(0,i)*yp->GetValue(0,j)/(mesh->GetValue(a,k)*R));
+								U->SetValue(k,id,s*(mesh->GetValue(a,k)*Q-xp->GetValue(0,i)*log(R+yp->GetValue(0,j))-yp->GetValue(0,j)*log(R+xp->GetValue(0,i))));
+							}
+							id++;
+						}
+					}
+					for(int b=0;b<l-1;b++){
+						U->ExtractLine(U1,b);
+						U->ExtractLine(U2,b+1);
+						gl->SetValue(0,b,rho->GetValue(0,b)*(U1->MatrixInternSum()*(-1)+U2->MatrixInternSum()));
+					}
+				}
+				glocal[c]=glocal[c]+gg*gl->MatrixInternSum();
+			}
+		}
+	}
+
+	MPI_Allreduce(glocal,g->GetPointer(),n,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
+
+	delete xp;
+	delete yp;
+	delete xpp;
+	delete ypp;
+	delete gl;
+	delete U;
+	delete U1;
+	delete U2;
+	delete []glocal;
+}/*}}}*/
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+		}
+	}
+}/*}}}*/
+void reshape(Matrix* V,Matrix* V1,int nx,int ny){/*{{{*/
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			V1->SetValue(j+nx*i,0,V->GetValue(i,j));
+		}
+	}
+}/*}}}*/
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,Matrix *dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs){/*{{{*/
+	Matrix* m1=new Matrix(mx*my,4);
+	Matrix* m2=new Matrix(mx*my,3);
+	Matrix* g1=new Matrix(nx*ny,1);
+	Matrix* g2=new Matrix(nx*ny,1);
+	Matrix* g=new Matrix(nx*ny,1);
+	Matrix* gcalgr=new Matrix(ny,nx);
+	Matrix* gcalvec=new Matrix(nx*ny,1);
+	Matrix* df=new Matrix(nx*ny,1);
+	Matrix* G=new Matrix(nx*ny,3);
+	double a=0;
+	double b=0;
+	double e=0;
+	msplit(m0,m1,m2,dlevel);
+	plouff(g1,Pobs,Pp,m1,rho1,dx,dy,dn,mx*my,nx*ny,4,evalid, my_rank, num_procs);
+	plouff(g2,Pobs,Pp,m2,rho2,dx,dy,dn,mx*my,nx*ny,3,evalid, my_rank, num_procs);
+	g->MatrixSum(g1,g2);
+	vec2gridsimple(g,gcalgr,nx,ny);
+	reshape(gcalgr,gcalvec,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		df->SetValue(i,0,evalid->GetValue(i,0)*(gobs->GetValue(i,0)-gcalvec->GetValue(i,0)));
+		G->SetValue(i,0,evalid->GetValue(i,0)*Pobs->GetValue(i,0));
+		G->SetValue(i,1,evalid->GetValue(i,0)*Pobs->GetValue(i,1));
+		G->SetValue(i,2,evalid->GetValue(i,0));
+	}
+	Matrix* M = NULL;
+	GSLsquarefit(&M,G,df);
+
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			gcalgr->SetValue(i,j,gcalgr->GetValue(i,j)+xobs->GetValue(i,j)*M->GetValue(0,0)+yobs->GetValue(i,j)*M->GetValue(1,0)+M->GetValue(2,0));
+		}
+	}
+	reshape(gcalgr,g,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		a=a+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)-g->GetValue(i,0)));
+		b=b+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)+g->GetValue(i,0)));
+	}
+	e=2*a/(a+b);
+
+	delete m1;
+	delete m2;
+	delete g1;
+	delete g2;
+	delete g;
+	delete gcalgr;
+	delete gcalvec;
+	delete df;
+	delete G;
+	delete M;
+
+	return e;
+}/*}}}*/
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd, Matrix *landmask){/*{{{*/
+	Matrix* m1gr=new Matrix(my,mx);
+	Matrix* m1grsm=new Matrix(my,mx);
+	Matrix* m1col=new Matrix(mx*my,1);
+	Matrix* m1gr2=new Matrix(my,mx);
+	Matrix* m1grsm2=new Matrix(my,mx);
+	Matrix* m1col2=new Matrix(mx*my,1);
+	Matrix* nptflag= new Matrix(mx*my,1);
+	double u=0;
+	double y=0;
+	m1->MatrixEqual(m0);
+	nptflag->MatrixSum(icethick,bathy);
+	/* first layer: ice */
+	for (int i=0;i<mx*my;i++){
+		if(landmask->GetValue(i,0)==2){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,1,m0->GetValue(i,1)+y*ptval);
+				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(m1->GetValue(i,1)>=m1->GetValue(i,0)+mmax){
+					m1->SetValue(i,1,m1->GetValue(i,0)+mmax);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+		}
+		else if(landmask->GetValue(i,0)==0){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+				if(m1->GetValue(i,2)<=m1->GetValue(i,0)){
+					m1->SetValue(i,2,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,2)>=m1->GetValue(i,0)+mmax2){
+					m1->SetValue(i,2,m1->GetValue(i,0)+mmax2);
+				}
+			}
+		}
+		else if(landmask->GetValue(i,0)==3){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,1,m0->GetValue(i,1)+y*ptval);
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,1)>=m1->GetValue(i,0)+mmax){
+					m1->SetValue(i,1,m1->GetValue(i,0)+mmax);
+				}
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+				if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(m1->GetValue(i,2)>=m1->GetValue(i,1)+mmax2){
+					m1->SetValue(i,2,m1->GetValue(i,1)+mmax2);
+				}
+			}
+		}
+	}
+
+	m1->ExtractColumn(m1col,1);
+	vec2gridsimple(m1col,m1gr,mx,my);
+	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+	reshape(m1grsm,m1col,mx,my);
+	m1->ExtractColumn(m1col2,2);
+	vec2gridsimple(m1col2,m1gr2,mx,my);
+	filtergrav(m1grsm2,m1gr2,ctr,sd,mx,my);
+	reshape(m1grsm2,m1col2,mx,my);
+
+	for (int i=0;i<mx*my;i++){
+		if(landmask->GetValue(i,0)==2){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,1,m1col->GetValue(i,0));
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(fabs(m1->GetValue(i,2)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else if(landmask->GetValue(i,0)==0){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,2)<=m1->GetValue(i,0)){
+					m1->SetValue(i,2,m1->GetValue(i,0)+1e-10);
+				}
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else if(landmask->GetValue(i,0)==3){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,1,m1col->GetValue(i,0));
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else {
+			if(nptflag->GetValue(i,0)==0){
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,1,m1->GetValue(i,0));
+				}
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,2))>1){
+					m1->SetValue(i,2,m1->GetValue(i,0));
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+	}
+
+				/* second layer: water */
+//	for (int i=0;i<mx*my;i++){
+//		if(bathy->GetValue(i,0)==0){
+//			u=double (rand())/ double(RAND_MAX);
+//			y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+//			m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+//			if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+//				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+//			}
+//			if(m1->GetValue(i,2)>=m1->GetValue(i,1)+mmax2){
+//				m1->SetValue(i,2,m1->GetValue(i,1)+mmax2);
+//			}
+//		}
+//	}
+//	m1->ExtractColumn(m1col,2);
+//	vec2gridsimple(m1col,m1gr,mx,my);
+//	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+//	reshape(m1grsm,m1col,mx,my);
+//	for (int i=0;i<mx*my;i++){
+//		if(bathy->GetValue(i,0)==0){
+//			m1->SetValue(i,2,m1col->GetValue(i,0));
+//		}
+//		else{
+//			m1->SetValue(i,2,m0->GetValue(i,2));
+//		}
+//		if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+//			m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+//		}
+//	}
+	delete m1gr;
+	delete m1grsm;
+	delete m1col;
+	delete m1gr2;
+	delete m1grsm2;
+	delete m1col2;
+	delete nptflag;
+}/*}}}*/
+double signe(double a){/*{{{*/
+	if(a<0){return -1;}
+	else{return 1;}
+}/*}}}*/
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my){/*{{{*/
+	A->MatrixEqual(Ain);
+	for (int i=1;i<my-1;i++){
+		for(int j=1;j<mx-1;j++){
+			A->SetValue(i,j,(ctr*Ain->GetValue(i,j)+sd*(Ain->GetValue(i-1,j)+Ain->GetValue(i+1,j)+Ain->GetValue(i,j-1)+Ain->GetValue(i,j+1)))/(ctr+4*sd));
+		}
+	}
+}/*}}}*/
+double coolshed(double T0,double k,double c,double D){/*{{{*/
+	double T1=T0*exp(-c*pow(k,1/D));
+	return T1;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/vfsa.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/vfsa.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/vfsa.cpp	(revision 21239)
@@ -0,0 +1,823 @@
+#include <iostream>
+#include <cmath>
+#include <fstream>
+#include <string>
+#include <cstdio>
+#include <cstdlib>
+#include <time.h>
+#include <cassert>
+#include <gsl/gsl_multifit.h>
+#include <pthread.h>
+
+using namespace std;
+
+class Matrix{/*{{{*/
+	private:
+		int     M;        /*Number of lines   */
+		int     N;        /*Number if Columns */
+		double *values;
+	public:
+		Matrix(int m_in,int n_in){/*{{{*/
+			this->M = m_in;
+			this->N = n_in;
+			this->values = new double[M*N];
+		}/*}}}*/
+		~Matrix(){/*{{{*/
+			delete [] this->values;
+		}/*}}}*/
+		void Echo(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					cout << " " << this->values[i*N+j];
+				}
+				cout << endl;
+			}
+		}/*}}}*/
+		void SetValue(int i,int j,double value){/*{{{*/
+			this->values[i*N+j] = value;
+		}/*}}}*/
+		double GetValue(int i,int j){/*{{{*/
+			return this->values[i*N+j];
+		}/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM = this->M;
+			*pN = this->N;
+		}/*}}}*/
+		double* GetPointer(void){/*{{{*/
+			return this->values;
+		}/*}}}*/
+		void MatrixSum(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) + B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixDiff(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) - B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixAbs(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,fabs(A->GetValue(i,j)));
+				}
+			}
+		}/*}}}*/
+		void MatrixEqual(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		double MatrixInternSum(){/*{{{*/
+			double sum=0;
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					sum+=this->GetValue(i,j);
+				}
+			}
+			return sum;
+		}/*}}}*/
+		void ExtractLine(Matrix* A,int i){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(M_A==1 && this->N==N_A);
+			for(int j=0;j<this->N;j++){
+				A->SetValue(0,j,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void ExtractColumn(Matrix* A,int j){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(N_A==1 && this->M==M_A);
+			for(int i=0;i<this->M;i++){
+				A->SetValue(i,0,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void AddNumber(double a){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,this->GetValue(i,j) + a);
+				}
+			}
+		}/*}}}*/
+};/*}}}*/
+
+/*Local prototypes{{{*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy);
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny);
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel);
+void* plouffT(void* vpthread_handle);
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny);
+void reshape(Matrix* V,Matrix* V1,int nx,int ny);
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my);
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B);
+double signe(double a);
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my);
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd);
+double coolshed(double T0,double k,double c,double D);
+void   LaunchThread(void* function(void*), void* usr,int num_threads);
+/*}}}*/
+
+/*Multithreading structures {{{*/
+typedef struct{
+	void* usr;
+	int   my_thread;
+	int   num_threads;
+} pthread_handle;
+
+typedef struct{
+	Matrix *g;
+	Matrix *Pobs;
+	Matrix *Pp;
+	Matrix *mesh;
+	Matrix *rho;
+	int dx;
+	int dy;
+	int dn;
+	int m;
+	int n;
+	int l;
+} AppStruct;
+/*}}}*/
+
+int main(){/*{{{*/
+
+	/* Seed the random number generator {{{*/
+	srand (time(NULL));               /*}}}*/
+	/* Define the variables {{{*/
+
+	int    dx     = 500;   /* prism dimension in x-direction                           */
+	int    dy     = 500;   /* prism dimension in y-direction                           */
+	int    mx     = 39;    /* number of prisms in x-direction                          */
+	int    my     = 60;    /* number of prisms in y-direction                          */
+	int    nx     = 39;    /* number of data points in x-direction                     */
+	int    ny     = 60;    /* number of data points in y-direction                     */
+	int    dn     = 15000; /* distance for neighbouting prisms for gravity calculation */
+	double ptval  = 100.;  /* max. amount to perturb model                             */
+	double ptval2 = 100.;
+
+	Matrix *Pobs=new Matrix(nx*ny,2); /* data positions */
+	makep(Pobs,nx,ny,dx,dy);
+// Pobs->Echo();
+
+
+	Matrix *Pp=new Matrix(mx*my,2); /* data positions */
+	makep(Pp,mx,my,dx,dy);
+// Pp->Echo();
+
+	double  rhoi = 890;           /* ice density     */
+	double  rhow = 1030;          /* water density   */
+// double  rhos = 2013;		      /* sediment density */
+	double  rhoc = 2670;          /* bedrock density */
+	
+	Matrix *Rho  = new Matrix(1,2);
+	Rho->SetValue(0,0,rhoi);
+	Rho->SetValue(0,1,rhow);
+	Matrix *rho1  = new Matrix(1,3);
+	rho1->SetValue(0,0,rhoi);
+	rho1->SetValue(0,1,rhow);
+	rho1->SetValue(0,2,rhoc);
+	Matrix *rho2  = new Matrix(1,2);
+	rho2->SetValue(0,0,rhoi-rhoc);
+	rho2->SetValue(0,1,rhow-rhoc);
+	
+	double ctr=1;            /* parameter for filtering */
+	double sd=0.1;
+
+	Matrix *xobs= new Matrix(ny,nx);
+	Matrix *yobs= new Matrix(ny,nx);
+
+	vec2grid(Pobs,xobs,yobs,nx,ny);
+//	xobs->Echo();
+//	yobs->Echo();
+
+	double dlevel= 860;                /* mean level of data acquisition */
+
+	double mmax  = 1000;               /* max value for layer interfaces */
+	double mmax2 = 1000;
+	double mmax3 = 1000;
+
+	/* control parameter for temperature schedule  */
+
+	double ca=0.9;                    /* for acceptance */
+	double cm=0.5;                    /* for model perturbation */
+
+	double T0a          = 0.1;      /* initial temperature for acceptance           */
+	double T0m          = 0.9;      /* initial temperature for model perturbation   */
+	double D            = 2;        /* dimension of the model                       */
+	int    maxconsecrej = 1000;     /* max consecutive rejection                    */
+	int    maxsuccess   = 100;      /* max number of success within one temperature */
+	double T_min        = 1e-10;    /* stopping temp                                */
+	double Tred         = 1;
+	double E_min        = -1000000;
+	double E_exp        = 0.0291;   /* expected misfit                              */
+	int    maxiter      = 10000;
+	int    maxtotaliter = 1000000;
+	double Tol          = 1e-10;    /* tolerance on misfit                          */
+	int    sfreq        = 100;
+
+	                     /*}}}*/     
+	/* load the data {{{*/
+
+	/* Observed gravity anomaly */
+
+	ifstream file1("store_fa500_36s.txt");
+	Matrix * gobs= new Matrix(nx*ny,1);
+	double inputnumber;
+	for(int i=0;i<ny*nx; i++){ 
+		file1 >> inputnumber;
+		gobs->SetValue(i,0, inputnumber*1e-5);
+	}
+	file1.close();
+//	gobs->Echo();
+	
+	/* load data about the ice thickness */
+
+	ifstream file2("store_flag_icethick500.txt");
+	Matrix * icethick= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file2 >> inputnumber;
+		icethick->SetValue(s,0,inputnumber);
+	}
+	file2.close();
+//	icethick->Echo();
+
+	/* load the batimethry data */
+
+	ifstream file3("store_flag_bathy500.txt");
+	Matrix * bathy= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file3 >> inputnumber;
+		bathy->SetValue(s,0,inputnumber);
+	}
+	file3.close();
+//	bathy->Echo();
+	
+	/* id of grid to evaluate misfit */
+
+
+	ifstream file4("store_flag_eval500.txt");
+	Matrix * evalid= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file4 >> inputnumber;
+		evalid->SetValue(s,0,inputnumber);
+	}
+	file4.close();
+//	evalid->Echo();
+	
+	/* initial guess of the model */
+
+	ifstream file5("m0_140114b.txt");
+	Matrix * mesh_ini= new Matrix(mx*my,3);
+	for(int s=0;s<mx*my; s++){ 
+		for(int j=0;j<3;j++){
+		file5 >> inputnumber;
+		mesh_ini->SetValue(s,j,inputnumber);
+	}
+	}
+	file5.close();
+//	mesh_ini->Echo();
+                           /*}}}*/
+		/* VFSA {{{ */
+
+	/* name of the files to save results */
+	std::ofstream savefile1 ("r_140114b.txt");
+	std::ofstream savefile2("m_140114b.txt");
+
+	/* counters initialization */
+	int    success   = 0;
+	int    finished  = 0;
+	int    consec    = 0;
+	double Ta        = T0a;
+	double Tm        = T0m;
+	int    iterT     = 0;   /* iteration within a T      */
+	int    total     = 0;   /* total number of iteration */
+	int    totaliter = 0;
+	int    msave     = 0;
+	double E_new;
+	double E_final;
+	double dE;
+	double P;
+	double rn;
+	Matrix* m_old    = new Matrix(mx *my,3);
+	Matrix* m_min    = new Matrix(mx *my,3);
+	Matrix* m_new    = new Matrix(mx *my,3);
+	m_old->MatrixEqual(mesh_ini);
+
+	/* calculate initial misfit */
+	double E_old=misfit(m_old,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my);
+
+	/* record initial settings */
+	savefile1 << "P     "<< "Ta    "<< "Tm    "<< "Eold  "<< "totaliter "<< "Tred   "<< endl;
+	savefile1 << "nan   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+	savefile2 << totaliter<< endl;
+	for(int i=0;i<mx*my;i++){
+		savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+	}
+	savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+
+	/* beginning of the loop */
+
+	while(finished==0){
+
+		iterT++;
+		totaliter++;
+
+		/* stop or reduce T */
+		if(iterT>=maxiter || success>maxsuccess){
+			if(Ta<T_min || total>maxtotaliter || fabs(E_old)<=Tol){
+				finished=1;
+				total+=iterT;
+				break;
+			}
+			else{ /* reduce T */
+				Ta=coolshed(T0a,Tred,ca,D);
+				Tm=coolshed(T0m,Tred,cm,D);
+				total+=iterT;
+				iterT=0;
+				success=1;
+				Tred++;
+				consec=0;
+			}
+		}
+
+		/* update model and calculate energy */
+
+		newmodelgen(m_old,m_new,bathy,icethick,mx,my,Tm,ptval,mmax,mmax2,ctr,sd);  /* new model */
+		E_new=misfit(m_new,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my); /* new energy */
+		dE=E_new-E_old;                                        /* energy difference */
+
+		/* acceptance probability */
+
+		P=exp(-dE/Ta);
+
+		/* stop if energy is lower than specified minimum */
+		if (E_new<E_min){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			break;
+		}
+
+		rn=rand()/double (RAND_MAX);
+
+		/* accept new model or not */
+		if(dE<=0){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			success++;
+			consec=0;
+			savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+			if(Ta<1e-3){
+				savefile2 << totaliter<< endl;
+				for(int i=0;i<mx*my;i++){
+					savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+				}
+				savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+			}
+		}
+		else{
+			if(P>rn){
+				m_old->MatrixEqual(m_new);
+				E_old=E_new;
+				success++;
+				consec=0;
+				savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+				if(Ta<1e-3){
+					savefile2 << totaliter<< endl;
+					for(int i=0;i<mx*my;i++){
+						savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+					}
+					savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+				}
+			}
+			else{
+				consec++;
+			}
+		}
+	cout<<totaliter<<endl;
+	}
+
+	m_min->MatrixEqual(m_old);
+	E_final=E_old;
+	savefile1 << "nan"<<"   "<<  "nan"<<"   "<< "nan"<<"   "<< E_final<<"     "<< "nan"<<"         "<< "nan" <<"  "<< endl;
+	savefile2 << " Mesh final"<< endl;
+	for(int i=0;i<mx*my;i++){
+		savefile2 << m_min->GetValue(i,0)<<"   "<< m_min->GetValue(i,1)<<"   "<< m_min->GetValue(i,2)<<endl;
+	}
+	savefile1.close();
+	savefile2.close();
+
+	delete m_old;
+	delete m_min;
+	delete m_new;
+	delete Pobs;
+	delete Pp;
+	delete Rho;
+	delete rho1;
+	delete rho2;
+	delete xobs;
+	delete yobs;
+	delete mesh_ini;
+	delete bathy;
+	delete icethick;
+	delete evalid;
+
+			/*}}}*/
+	return 0;
+}/*}}}*/
+
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B){/*{{{*/
+
+	/*GSL Matrices and vectors: */
+	int    M,N;
+	double chisq;
+
+	/*Get system size*/
+	A->GetSize(&M,&N);
+
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix* a = gsl_matrix_alloc(M,N);
+	for(int i=0;i<M;i++){
+		for(int j=0;j<N;j++){
+			gsl_matrix_set (a,i,j,A->GetValue(i,j));
+		}
+	}
+	gsl_vector* b = gsl_vector_alloc(M);
+	for(int i=0;i<M;i++){
+		gsl_vector_set(b,i,B->GetValue(i,0));
+	}
+
+	gsl_vector* x = gsl_vector_alloc(N);
+	gsl_matrix* cov = gsl_matrix_alloc(N,N);
+
+	/*Least square fit: */
+	gsl_multifit_linear_workspace* work = gsl_multifit_linear_alloc(M,N);
+	gsl_multifit_linear (a, b, x, cov, &chisq, work);
+	gsl_multifit_linear_free (work);
+
+	/*Clean up and assign output pointer*/
+	Matrix* X = new Matrix(N,1);
+	for(int j=0;j<N;j++){
+		X->SetValue(j,0,gsl_vector_get(x,j));
+	}
+	*pX = X;
+
+	gsl_matrix_free(a);
+	gsl_vector_free(b);
+	gsl_vector_free(x);
+	gsl_matrix_free(cov);
+
+}/*}}}*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			Pobs->SetValue(j+nx*i,0,j*dx);
+			Pobs->SetValue(j+nx*i,1,i*dy);
+		}
+	}
+}/*}}}*/
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+			V2->SetValue(i,j, V->GetValue(j+nx*i,1));
+		}
+	}
+}/*}}}*/
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel){/*{{{*/
+	int sizem1,sizem2;
+	m->GetSize(&sizem1,&sizem2);
+	for(int i=0;i<sizem1;i++){
+		for(int j=0;j<sizem2+1;j++){
+			if(j<sizem2){
+				m1->SetValue(i,j,1e-10*(sizem2+1-j));
+				m2->SetValue(i,j,m->GetValue(i,j));
+				if(m->GetValue(i,j)<0){
+					m1->SetValue(i,j,m->GetValue(i,j));
+					m2->SetValue(i,j,i*1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,j,1e-10);
+			}
+		}
+	}
+	m1->AddNumber(dlevel);
+	m2->AddNumber(dlevel);
+}/*}}}*/
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+		}
+	}
+}/*}}}*/
+void reshape(Matrix* V,Matrix* V1,int nx,int ny){/*{{{*/
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			V1->SetValue(j+nx*i,0,V->GetValue(i,j));
+		}
+	}
+}/*}}}*/
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my){/*{{{*/
+	Matrix* m1=new Matrix(mx*my,4);
+	Matrix* m2=new Matrix(mx*my,3);
+	Matrix* g1=new Matrix(nx*ny,1);
+	Matrix* g2=new Matrix(nx*ny,1);
+	Matrix* g=new Matrix(nx*ny,1);
+	Matrix* gcalgr=new Matrix(ny,nx);
+	Matrix* gcalvec=new Matrix(mx*my,1);
+	Matrix* df=new Matrix(mx*my,1);
+	Matrix* G=new Matrix(mx*my,3);
+	double a=0;
+	double b=0;
+	double e=0;
+	msplit(m0,m1,m2,dlevel);
+	
+	/*Multithreaded core*/
+	int       num_threads = 8;
+	AppStruct usr;
+	usr.g = g1;
+	usr.Pobs = Pobs;
+	usr.Pp=Pp;
+	usr.mesh= m1;
+	usr.rho= rho1;
+	usr.dx=dx;
+	usr.dy=dy;
+	usr.dn=dn;
+	usr.m=mx*my;
+	usr.n=nx*ny;
+	usr.l=4;
+	LaunchThread(plouffT,(void*)&usr,num_threads);
+	usr.g = g2;
+	usr.mesh= m2;
+	usr.rho= rho2;
+	usr.l=3;
+	LaunchThread(plouffT,(void*)&usr,num_threads);
+	g->MatrixSum(g1,g2);
+	vec2gridsimple(g,gcalgr,nx,ny);
+	reshape(gcalgr,gcalvec,mx,my);
+	for (int i=0;i<mx*my;i++){
+		df->SetValue(i,0,evalid->GetValue(i,0)*(gobs->GetValue(i,0)-gcalvec->GetValue(i,0)));
+		G->SetValue(i,0,evalid->GetValue(i,0)*Pobs->GetValue(i,0));
+		G->SetValue(i,1,evalid->GetValue(i,0)*Pobs->GetValue(i,1));
+		G->SetValue(i,2,evalid->GetValue(i,0));
+	}
+	Matrix* M = NULL;
+	GSLsquarefit(&M,G,df);
+
+	for (int i=0;i<my;i++){
+		for(int j=0;j<mx;j++){
+			gcalgr->SetValue(i,j,gcalgr->GetValue(i,j)+xobs->GetValue(i,j)*M->GetValue(0,0)+yobs->GetValue(i,j)*M->GetValue(1,0)+M->GetValue(2,0));
+		}
+	}
+	reshape(gcalgr,g,mx,my);
+	for (int i=0;i<mx*my;i++){
+		a=a+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)-g->GetValue(i,0)));
+		b=b+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)+g->GetValue(i,0)));
+	}
+	e=2*a/(a+b);
+
+	delete m1;
+	delete m2;
+	delete g1;
+	delete g2;
+	delete g;
+	delete gcalgr;
+	delete gcalvec;
+	delete df;
+	delete G;
+	delete M;
+
+	return e;
+}/*}}}*/
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd){/*{{{*/
+	Matrix* m1gr=new Matrix(my,mx);
+	Matrix* m1grsm=new Matrix(my,mx);
+	Matrix* m1col=new Matrix(mx*my,1);
+	double u=0;
+	double y=0;
+	m1->MatrixEqual(m0);
+	for (int i=0;i<mx*my;i++){
+		if(icethick->GetValue(i,0)==0){
+			u=double (rand())/ double(RAND_MAX);
+			y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+			m1->SetValue(i,1,m0->GetValue(i,1)+y*ptval);
+			if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+				m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+			}
+			if(m1->GetValue(i,1)>=m1->GetValue(i,0)+mmax){
+				m1->SetValue(i,1,m1->GetValue(i,0)+mmax);
+			}
+		}
+	}
+	m1->ExtractColumn(m1col,1);
+	vec2gridsimple(m1col,m1gr,mx,my);
+	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+	reshape(m1grsm,m1col,mx,my);
+	for (int i=0;i<mx*my;i++){
+		if(icethick->GetValue(i,0)==0){
+			m1->SetValue(i,1,m1col->GetValue(i,0));
+		}
+		else{
+			m1->SetValue(i,1,m0->GetValue(i,1));
+		}
+		if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+			m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+		}
+	}
+
+	for (int i=0;i<mx*my;i++){
+		if(bathy->GetValue(i,0)==0){
+			u=double (rand())/ double(RAND_MAX);
+			y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+			m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+			if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+			}
+			if(m1->GetValue(i,2)>=m1->GetValue(i,1)+mmax2){
+				m1->SetValue(i,2,m1->GetValue(i,1)+mmax2);
+			}
+		}
+	}
+	m1->ExtractColumn(m1col,2);
+	vec2gridsimple(m1col,m1gr,mx,my);
+	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+	reshape(m1grsm,m1col,mx,my);
+	for (int i=0;i<mx*my;i++){
+		if(bathy->GetValue(i,0)==0){
+			m1->SetValue(i,2,m1col->GetValue(i,0));
+		}
+		else{
+			m1->SetValue(i,2,m0->GetValue(i,2));
+		}
+		if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+			m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+		}
+	}
+	delete m1gr;
+	delete m1grsm;
+	delete m1col;
+}/*}}}*/
+double signe(double a){/*{{{*/
+	if(a<0){return -1;}
+	else{return 1;}
+}/*}}}*/
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my){/*{{{*/
+	A->MatrixEqual(Ain);
+	for (int i=1;i<my-1;i++){
+		for(int j=1;j<mx-1;j++){
+			A->SetValue(i,j,(ctr*Ain->GetValue(i,j)+sd*(Ain->GetValue(i-1,j)+Ain->GetValue(i+1,j)+Ain->GetValue(i,j-1)+Ain->GetValue(i,j+1)))/(ctr+4*sd));
+		}
+	}
+}/*}}}*/
+double coolshed(double T0,double k,double c,double D){/*{{{*/
+	double T1=T0*exp(-c*pow(k,1/D));
+	return T1;
+}/*}}}*/
+void* plouffT(void* vpthread_handle){/*{{{*/
+
+	/*recover this thread info*/
+	pthread_handle *handle = (pthread_handle*)vpthread_handle;
+	int my_thread   = handle->my_thread;
+	int num_threads = handle->num_threads;
+
+	/*Recover struct*/
+	AppStruct *usr = (AppStruct*)handle->usr;
+	Matrix *g = usr->g;
+	Matrix *Pobs = usr->Pobs;
+	Matrix *Pp = usr->Pp;
+	Matrix *mesh = usr->mesh;
+	Matrix *rho = usr->rho;
+	int dx =usr->dx;
+	int dy =usr->dy;
+	int dn =usr->dn;
+	int m =usr->m;
+	int n =usr->n;
+	int l =usr->l;
+
+	double gg=6.673e-11;
+	int si,sj,id,s;
+	double R,Q,P;
+	Matrix *xp= new Matrix(1,2);
+	Matrix *yp= new Matrix(1,2);
+	Matrix *xpp= new Matrix(1,2);
+	Matrix *ypp= new Matrix(1,2);
+	Matrix *U= new Matrix(l,4);
+	Matrix *U1=new Matrix(1,4);
+	Matrix *U2=new Matrix(1,4);
+	Matrix *gl= new Matrix(1,l-1);
+	bool test=true;
+	for(int c=my_thread;c<n;c+=num_threads){
+		g->SetValue(c,0,0);
+		for(int a=0;a<m;a++){
+			test=true;
+			xp->SetValue(0,0,Pp->GetValue(a,0)-Pobs->GetValue(c,0));
+			xp->SetValue(0,1,Pp->GetValue(a,0)-Pobs->GetValue(c,0)+dx);
+			if(xp->GetValue(0,0)<0 && xp->GetValue(0,0)<xp->GetValue(0,1) && xp->GetValue(0,0)*xp->GetValue(0,1)>=0){
+				xpp->SetValue(0,0,xp->GetValue(0,1));
+				xpp->SetValue(0,1,xp->GetValue(0,0));
+				xp->MatrixAbs(xpp);
+			}
+			yp->SetValue(0,0,Pp->GetValue(a,1)-Pobs->GetValue(c,1));
+			yp->SetValue(0,1,Pp->GetValue(a,1)-Pobs->GetValue(c,1)+dy);
+			if(yp->GetValue(0,0)<0 && yp->GetValue(0,0)<yp->GetValue(0,1) && yp->GetValue(0,0)*yp->GetValue(0,1)>=0){
+				ypp->SetValue(0,0,yp->GetValue(0,1));
+				ypp->SetValue(0,1,yp->GetValue(0,0));
+				yp->MatrixAbs(ypp);
+			}
+			P=sqrt(xp->GetValue(0,0)*xp->GetValue(0,0)+yp->GetValue(0,0)*yp->GetValue(0,0));
+			if(P>dn){
+				test=false;
+				for(int i=0;i<l-1;i++){
+					gl->SetValue(0,i,0);
+				}
+			}
+			if(test==true){
+				si=1;
+				sj=1;
+				id=0;
+				for(int i=0;i<2;i++){
+					si*=-1;
+					for(int j=0;j<2;j++){
+						si*=-1;
+						s=si*sj;
+						for(int k=0;k<l;k++){
+							R=sqrt(xp->GetValue(0,i)*xp->GetValue(0,i)+yp->GetValue(0,j)*yp->GetValue(0,j)+mesh->GetValue(a,k)*mesh->GetValue(a,k));
+							Q=atan(xp->GetValue(0,i)*yp->GetValue(0,j)/(mesh->GetValue(a,k)*R));
+							U->SetValue(k,id,s*(mesh->GetValue(a,k)*Q-xp->GetValue(0,i)*log(R+yp->GetValue(0,j))-yp->GetValue(0,j)*log(R+xp->GetValue(0,i))));
+						}
+						id++;
+					}
+				}
+				for(int b=0;b<l-1;b++){
+					U->ExtractLine(U1,b);
+					U->ExtractLine(U2,b+1);
+					gl->SetValue(0,b,rho->GetValue(0,b)*(U1->MatrixInternSum()*(-1)+U2->MatrixInternSum()));
+				}
+			}
+			g->SetValue(c,0,g->GetValue(c,0)+gg*gl->MatrixInternSum());
+		}
+	}
+	delete xp;
+	delete yp;
+	delete xpp;
+	delete ypp;
+	delete gl;
+	delete U;
+	delete U1;
+	delete U2;
+
+	return NULL;
+}/*}}}*/
+void LaunchThread(void* function(void*), void* usr,int num_threads){/*{{{*/
+
+	int i;
+	int            *status  = NULL;
+	pthread_t      *threads = NULL;
+	pthread_handle *handles = NULL;
+
+	/*dynamically allocate: */
+	threads=(pthread_t*)malloc(num_threads*sizeof(pthread_t));
+	handles=(pthread_handle*)malloc(num_threads*sizeof(pthread_handle));
+
+	for(i=0;i<num_threads;i++){
+		handles[i].usr=usr;
+		handles[i].my_thread  =i;
+		handles[i].num_threads=num_threads;
+	}
+	for(i=0;i<num_threads;i++){
+		if(pthread_create(threads+i,NULL,function,(void*)(handles+i))){
+			std::cerr<<"pthread_create error";
+		}
+	}
+	for(i=0;i<num_threads;i++){
+		if(pthread_join(threads[i],(void**)&status)){
+			std::cerr<<"pthread_join error";
+		}
+	}
+
+	/*Free ressources:*/
+	delete threads;
+	delete handles;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/vfsa_mpi.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/vfsa_mpi.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/buzzi/gravity/vfsa_mpi.cpp	(revision 21239)
@@ -0,0 +1,835 @@
+#include <iostream>
+#include <cmath>
+#include <fstream>
+#include <string>
+#include <cstdio>
+#include <cstdlib>
+#include <time.h>
+#include <cassert>
+#include <gsl/gsl_multifit.h>
+#include "mpi.h"
+using namespace std;
+
+class Matrix{/*{{{*/
+	private:
+		int     M;        /*Number of lines   */
+		int     N;        /*Number if Columns */
+		double *values;
+	public:
+		Matrix(int m_in,int n_in){/*{{{*/
+			this->M = m_in;
+			this->N = n_in;
+			this->values = new double[M*N]();
+		}/*}}}*/
+		~Matrix(){/*{{{*/
+			delete [] this->values;
+		}/*}}}*/
+		void Echo(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					cout << " " << this->values[i*N+j];
+				}
+				cout << endl;
+			}
+		}/*}}}*/
+		void SetValue(int i,int j,double value){/*{{{*/
+			this->values[i*N+j] = value;
+		}/*}}}*/
+		double GetValue(int i,int j){/*{{{*/
+			return this->values[i*N+j];
+		}/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM = this->M;
+			*pN = this->N;
+		}/*}}}*/
+		double* GetPointer(void){/*{{{*/
+			return this->values;
+		}/*}}}*/
+		void MatrixSum(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) + B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixDiff(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) - B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixAbs(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,fabs(A->GetValue(i,j)));
+				}
+			}
+		}/*}}}*/
+		void MatrixEqual(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		double MatrixInternSum(){/*{{{*/
+			double sum=0;
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					sum+=this->GetValue(i,j);
+				}
+			}
+			return sum;
+		}/*}}}*/
+		void ExtractLine(Matrix* A,int i){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(M_A==1 && this->N==N_A);
+			for(int j=0;j<this->N;j++){
+				A->SetValue(0,j,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void ExtractColumn(Matrix* A,int j){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(N_A==1 && this->M==M_A);
+			for(int i=0;i<this->M;i++){
+				A->SetValue(i,0,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void AddNumber(double a){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,this->GetValue(i,j) + a);
+				}
+			}
+		}/*}}}*/
+};/*}}}*/
+
+/*Local prototypes{{{*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy);
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny);
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel);
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,int my_rank,int num_procs);
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny);
+void reshape(Matrix* V,Matrix* V1,int nx,int ny);
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs);
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B);
+double signe(double a);
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my);
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd, Matrix *landmask);
+double coolshed(double T0,double k,double c,double D);
+/*}}}*/
+
+int main(int argc,char *argv[]){/*{{{*/
+	
+	int my_rank,num_procs;
+
+	MPI_Init(&argc, &argv);
+
+	MPI_Comm_size(MPI_COMM_WORLD,&num_procs);
+	MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
+
+	/* Seed the random number generator {{{*/
+		srand (time(NULL));            /*}}}*/
+	/* Define the variables {{{*/
+
+	int    dx     = 1000;   /* prism dimension in x-direction                           */
+	int    dy     = 1000;   /* prism dimension in y-direction                           */
+	int    mx     = 99;    /* number of prisms in x-direction                          */
+	int    my     = 99;    /* number of prisms in y-direction                          */
+	int    nx     = 99;    /* number of data points in x-direction                     */
+	int    ny     = 99;    /* number of data points in y-direction                     */
+	int    dn     = 15000; /* distance for neighbouting prisms for gravity calculation */
+	double ptval  = 100.;  /* max. amount to perturb model                             */
+	double ptval2 = 100.;
+
+	Matrix *Pobs=new Matrix(nx*ny,2); /* data positions */
+	makep(Pobs,nx,ny,dx,dy);
+	// Pobs->Echo();
+
+
+	Matrix *Pp=new Matrix(mx*my,2); /* prisms positions */
+	makep(Pp,mx,my,dx,dy);
+	// Pp->Echo();
+
+	double  rhoi = 917;           /* ice density     */
+	double  rhow = 1030;          /* water density   */
+	// double  rhos = 2013;		      /* sediment density */
+	double  rhoc = 2670;          /* bedrock density */
+
+	Matrix *Rho  = new Matrix(1,2);
+	Rho->SetValue(0,0,rhoi);
+	Rho->SetValue(0,1,rhow);
+	Matrix *rho1  = new Matrix(1,3);
+	rho1->SetValue(0,0,rhoi);
+	rho1->SetValue(0,1,rhow);
+	rho1->SetValue(0,2,rhoc);
+	Matrix *rho2  = new Matrix(1,2);
+	rho2->SetValue(0,0,rhoi-rhoc);
+	rho2->SetValue(0,1,rhow-rhoc);
+
+	double dlevel=2400;         /* level of data acquisition */
+
+	double ctr=1;            /* parameter for filtering */
+	double sd=0.1;
+
+	Matrix *xobs= new Matrix(ny,nx);
+	Matrix *yobs= new Matrix(ny,nx);
+
+	vec2grid(Pobs,xobs,yobs,nx,ny);
+	//	xobs->Echo();
+	//	yobs->Echo();
+
+
+	double mmax  = 2000;               /* max value for layer interfaces */
+	double mmax2 = 2000;
+	double mmax3 = 2000;
+
+	/* control parameter for temperature schedule  */
+
+	double ca=0.9;                    /* for acceptance */
+	double cm=0.5;                    /* for model perturbation */
+
+	double T0a          = 0.1;      /* initial temperature for acceptance           */
+	double T0m          = 0.9;      /* initial temperature for model perturbation   */
+	double D            = 2;        /* dimension of the model                       */
+	int    maxconsecrej = 1000;     /* max consecutive rejection                    */
+	int    maxsuccess   = 100;      /* max number of success within one temperature */
+	double T_min        = 1e-10;    /* stopping temp                                */
+	double Tred         = 1;
+	double E_min        = -1000000;
+	double E_exp        = 0.0291;   /* expected misfit                              */
+	int    maxiter      = 10000;
+	int    maxtotaliter = 1000000;
+	double Tol          = 1e-10;    /* tolerance on misfit                          */
+	int    sfreq        = 100;
+
+	/*}}}*/     
+	/* load the data {{{*/
+
+	/*landmask */
+
+	ifstream file("landmaskzach.txt");
+	Matrix * landmask= new Matrix(nx*ny,1);
+	double inputnumber;
+	for(int i=0;i<ny*nx; i++){ 
+		file >> inputnumber;
+		landmask->SetValue(i,0,inputnumber);
+	}
+	file.close();
+
+	/* Observed gravity anomaly */
+
+	ifstream file1("gravityzach.txt");
+	Matrix * gobs= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){ 
+		file1 >> inputnumber;
+		gobs->SetValue(i,0, inputnumber*1e-5);
+	}
+	file1.close();
+	//	gobs->Echo();
+
+	/* load data about the ice thickness */
+
+	ifstream file2("icethickzach.txt");
+	Matrix * icethick= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file2 >> inputnumber;
+		icethick->SetValue(s,0,inputnumber);
+	}
+	file2.close();
+	//	icethick->Echo();
+
+	/* load the batimethry data */
+
+	ifstream file3("bathymetryzach.txt");
+	Matrix * bathy= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file3 >> inputnumber;
+		bathy->SetValue(s,0,inputnumber);
+	}
+	file3.close();
+	//	bathy->Echo();
+
+	/* id of grid to evaluate misfit */
+
+
+	ifstream file4("evalidzach.txt");
+	Matrix * evalid= new Matrix(nx*ny,1);
+	for(int s=0;s<nx*ny; s++){ 
+		file4 >> inputnumber;
+		evalid->SetValue(s,0,inputnumber);
+	}
+	file4.close();
+	//	evalid->Echo();
+
+	/* initial guess of the model */
+
+	ifstream file5("m0_092614zach.txt");
+	Matrix * mesh_ini= new Matrix(mx*my,3);
+	for(int s=0;s<mx*my; s++){ 
+		for(int j=0;j<3;j++){
+			file5 >> inputnumber;
+			mesh_ini->SetValue(s,j,inputnumber);
+		}
+	}
+	file5.close();
+	//	mesh_ini->Echo();
+	/*}}}*/
+	/* VFSA {{{ */
+
+	/* name of the files to save results */
+	std::ofstream savefile1 ("r_zach.txt");
+	std::ofstream savefile2("m_zach.txt");
+
+	/* counters initialization */
+	int    success   = 0;
+	int    finished  = 0;
+	int    consec    = 0;
+	double Ta        = T0a;
+	double Tm        = T0m;
+	int    iterT     = 0;   /* iteration within a T      */
+	int    total     = 0;   /* total number of iteration */
+	int    totaliter = 0;
+	int    msave     = 0;
+	double E_new;
+	double E_final;
+	double dE;
+	double P;
+	double rn;
+	Matrix* m_old    = new Matrix(mx *my,3);
+	Matrix* m_min    = new Matrix(mx *my,3);
+	Matrix* m_new    = new Matrix(mx *my,3);
+	m_old->MatrixEqual(mesh_ini);
+
+	/* calculate initial misfit */
+	double E_old=misfit(m_old,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my, my_rank, num_procs);
+	/* record initial settings */
+	if(!my_rank){
+		savefile1 << "P     "<< "Ta    "<< "Tm    "<< "Eold  "<< "totaliter "<< "Tred   "<< endl;
+		savefile1 << "nan   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+		savefile2 << totaliter<< endl;
+		for(int i=0;i<mx*my;i++){
+			savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+		}
+		savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+	}
+	/* beginning of the loop */
+
+	while(finished==0){
+		iterT++;
+		totaliter++;
+
+		/* stop or reduce T */
+		if(iterT>=maxiter || success>maxsuccess){
+			if(Ta<T_min || total>maxtotaliter || fabs(E_old)<=Tol){
+				finished=1;
+				total+=iterT;
+				break;
+			}
+			else{ /* reduce T */
+				Ta=coolshed(T0a,Tred,ca,D);
+				Tm=coolshed(T0m,Tred,cm,D);
+				total+=iterT;
+				iterT=0;
+				success=1;
+				Tred++;
+				consec=0;
+			}
+		}
+
+		/* update model and calculate energy */
+
+		newmodelgen(m_old,m_new,bathy,icethick,mx,my,Tm,ptval,mmax,mmax2,ctr,sd, landmask);  /* new model */
+		E_new=misfit(m_new,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my, my_rank, num_procs); /* new energy */
+		dE=E_new-E_old;                                        /* energy difference */
+
+		/* acceptance probability */
+
+		P=exp(-dE/Ta);
+
+		/* stop if energy is lower than specified minimum */
+		if (E_new<E_min){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			break;
+		}
+
+		rn=rand()/double (RAND_MAX);
+
+		/* accept new model or not */
+		if(dE<=0){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			success++;
+			consec=0;
+			if(!my_rank){
+				savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+			}
+			if(Ta<1e-3){
+				if(!my_rank){
+					savefile2 << totaliter<< endl;
+					for(int i=0;i<mx*my;i++){
+						savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+					}
+					savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+				}
+			}
+		}
+		else{
+			if(P>rn){
+				m_old->MatrixEqual(m_new);
+				E_old=E_new;
+				success++;
+				consec=0;
+				if(!my_rank){
+					savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+					if(Ta<1e-3){
+						savefile2 << totaliter<< endl;
+						for(int i=0;i<mx*my;i++){
+							savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+						}
+						savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+					}
+				}
+			}
+			else{
+				consec++;
+			}
+		}
+	}
+
+	m_min->MatrixEqual(m_old);
+	E_final=E_old;
+	if(!my_rank){
+		savefile1 << "nan"<<"   "<<  "nan"<<"   "<< "nan"<<"   "<< E_final<<"     "<< "nan"<<"         "<< "nan" <<"  "<< endl;
+		savefile2 << " Mesh final"<< endl;
+		for(int i=0;i<mx*my;i++){
+			savefile2 << m_min->GetValue(i,0)<<"   "<< m_min->GetValue(i,1)<<"   "<< m_min->GetValue(i,2)<<endl;
+		}
+	}
+	savefile1.close();
+	savefile2.close();
+
+	delete m_old;
+	delete m_min;
+	delete m_new;
+	delete Pobs;
+	delete Pp;
+	delete Rho;
+	delete rho1;
+	delete rho2;
+	delete xobs;
+	delete yobs;
+	delete mesh_ini;
+	delete bathy;
+	delete icethick;
+	delete evalid;
+
+	/*}}}*/
+
+   MPI_Finalize();
+
+	return 0;
+}/*}}}*/
+
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B){/*{{{*/
+
+	/*GSL Matrices and vectors: */
+	int    M,N;
+	double chisq;
+	/*Get system size*/
+	A->GetSize(&M,&N);
+
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix* a = gsl_matrix_alloc(M,N);
+	for(int i=0;i<M;i++){
+		for(int j=0;j<N;j++){
+			gsl_matrix_set (a,i,j,A->GetValue(i,j));
+		}
+	}
+	gsl_vector* b = gsl_vector_alloc(M);
+	for(int i=0;i<M;i++){
+		gsl_vector_set(b,i,B->GetValue(i,0));
+	}
+
+	gsl_vector* x = gsl_vector_alloc(N);
+	gsl_matrix* cov = gsl_matrix_alloc(N,N);
+
+	/*Least square fit: */
+	gsl_multifit_linear_workspace* work = gsl_multifit_linear_alloc(M,N);
+	gsl_multifit_linear (a, b, x, cov, &chisq, work);
+	gsl_multifit_linear_free (work);
+
+	/*Clean up and assign output pointer*/
+	Matrix* X = new Matrix(N,1);
+	for(int j=0;j<N;j++){
+		X->SetValue(j,0,gsl_vector_get(x,j));
+	}
+	*pX = X;
+
+	gsl_matrix_free(a);
+	gsl_vector_free(x);
+	gsl_vector_free(b);
+	gsl_matrix_free(cov);
+
+}/*}}}*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			Pobs->SetValue(j+nx*i,0,j*dx);
+			Pobs->SetValue(j+nx*i,1,i*dy);
+		}
+	}
+}/*}}}*/
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+			V2->SetValue(i,j, V->GetValue(j+nx*i,1));
+		}
+	}
+}/*}}}*/
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel){/*{{{*/
+	int sizem1,sizem2;
+	m->GetSize(&sizem1,&sizem2);
+	for(int i=0;i<sizem1;i++){
+		for(int j=0;j<sizem2+1;j++){
+			if(j<sizem2){
+				m1->SetValue(i,j,1e-10*(sizem2+1-j));
+				m2->SetValue(i,j,m->GetValue(i,j));
+				if(m->GetValue(i,j)<0){
+					m1->SetValue(i,j,m->GetValue(i,j));
+					m2->SetValue(i,j,i*1e-10);
+				}
+				m1->SetValue(i,j,m1->GetValue(i,j));
+				m2->SetValue(i,j,m2->GetValue(i,j));
+			}
+			else{
+				m1->SetValue(i,j,1e-10);
+			}
+		}
+	}
+	m1->AddNumber(dlevel);
+	m2->AddNumber(dlevel);
+}/*}}}*/
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,int my_rank,int num_procs){/*{{{*/
+	double gg=6.673e-11;
+	int si,sj,id,s;
+	double R,Q,P;
+	Matrix *xp= new Matrix(1,2);
+	Matrix *yp= new Matrix(1,2);
+	Matrix *xpp= new Matrix(1,2);
+	Matrix *ypp= new Matrix(1,2);
+	Matrix *U= new Matrix(l,4);
+	Matrix *U1=new Matrix(1,4);
+	Matrix *U2=new Matrix(1,4);
+	Matrix *gl= new Matrix(1,l-1);
+	bool test=true;
+
+	double *glocal=new double[n]();
+
+	for(int c=my_rank;c<n;c+=num_procs){
+		glocal[c]=0;
+		for(int a=0;a<m;a++){
+			test=true;
+			xp->SetValue(0,0,Pp->GetValue(a,0)-Pobs->GetValue(c,0));
+			xp->SetValue(0,1,Pp->GetValue(a,0)-Pobs->GetValue(c,0)+dx);
+			if(xp->GetValue(0,0)<0 && xp->GetValue(0,0)<xp->GetValue(0,1) && xp->GetValue(0,0)*xp->GetValue(0,1)>=0){
+				xpp->SetValue(0,0,xp->GetValue(0,1));
+				xpp->SetValue(0,1,xp->GetValue(0,0));
+				xp->MatrixAbs(xpp);
+			}
+			yp->SetValue(0,0,Pp->GetValue(a,1)-Pobs->GetValue(c,1));
+			yp->SetValue(0,1,Pp->GetValue(a,1)-Pobs->GetValue(c,1)+dy);
+			if(yp->GetValue(0,0)<0 && yp->GetValue(0,0)<yp->GetValue(0,1) && yp->GetValue(0,0)*yp->GetValue(0,1)>=0){
+				ypp->SetValue(0,0,yp->GetValue(0,1));
+				ypp->SetValue(0,1,yp->GetValue(0,0));
+				yp->MatrixAbs(ypp);
+			}
+			P=sqrt(xp->GetValue(0,0)*xp->GetValue(0,0)+yp->GetValue(0,0)*yp->GetValue(0,0));
+			if(P>dn){
+				test=false;
+				for(int i=0;i<l-1;i++){
+					gl->SetValue(0,i,0);
+				}
+			}
+			if(test==true){
+				si=1;
+				sj=1;
+				id=0;
+				for(int i=0;i<2;i++){
+					si*=-1;
+					for(int j=0;j<2;j++){
+						sj*=-1;
+						s=si*sj;
+						for(int k=0;k<l;k++){
+							R=sqrt(xp->GetValue(0,i)*xp->GetValue(0,i)+yp->GetValue(0,j)*yp->GetValue(0,j)+mesh->GetValue(a,k)*mesh->GetValue(a,k));
+							Q=atan(xp->GetValue(0,i)*yp->GetValue(0,j)/(mesh->GetValue(a,k)*R));
+							U->SetValue(k,id,s*(mesh->GetValue(a,k)*Q-xp->GetValue(0,i)*log(R+yp->GetValue(0,j))-yp->GetValue(0,j)*log(R+xp->GetValue(0,i))));
+						}
+						id++;
+					}
+				}
+				for(int b=0;b<l-1;b++){
+					U->ExtractLine(U1,b);
+					U->ExtractLine(U2,b+1);
+					gl->SetValue(0,b,rho->GetValue(0,b)*(U1->MatrixInternSum()*(-1)+U2->MatrixInternSum()));
+				}
+			}
+			glocal[c]=glocal[c]+gg*gl->MatrixInternSum();
+
+		}
+	}
+
+	MPI_Allreduce(glocal,g->GetPointer(),n,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
+
+	delete xp;
+	delete yp;
+	delete xpp;
+	delete ypp;
+	delete gl;
+	delete U;
+	delete U1;
+	delete U2;
+	delete []glocal;
+}/*}}}*/
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+		}
+	}
+}/*}}}*/
+void reshape(Matrix* V,Matrix* V1,int nx,int ny){/*{{{*/
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			V1->SetValue(j+nx*i,0,V->GetValue(i,j));
+		}
+	}
+}/*}}}*/
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs){/*{{{*/
+	Matrix* m1=new Matrix(mx*my,4);
+	Matrix* m2=new Matrix(mx*my,3);
+	Matrix* g1=new Matrix(nx*ny,1);
+	Matrix* g2=new Matrix(nx*ny,1);
+	Matrix* g=new Matrix(nx*ny,1);
+	Matrix* gcalgr=new Matrix(ny,nx);
+	Matrix* gcalvec=new Matrix(nx*ny,1);
+	Matrix* df=new Matrix(nx*ny,1);
+	Matrix* G=new Matrix(nx*ny,3);
+	double a=0;
+	double b=0;
+	double e=0;
+	msplit(m0,m1,m2,dlevel);
+	plouff(g1,Pobs,Pp,m1,rho1,dx,dy,dn,mx*my,nx*ny,4, my_rank, num_procs);
+	plouff(g2,Pobs,Pp,m2,rho2,dx,dy,dn,mx*my,nx*ny,3, my_rank, num_procs);
+	g->MatrixSum(g1,g2);
+	vec2gridsimple(g,gcalgr,nx,ny);
+	reshape(gcalgr,gcalvec,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		df->SetValue(i,0,evalid->GetValue(i,0)*(gobs->GetValue(i,0)-gcalvec->GetValue(i,0)));
+		G->SetValue(i,0,evalid->GetValue(i,0)*Pobs->GetValue(i,0));
+		G->SetValue(i,1,evalid->GetValue(i,0)*Pobs->GetValue(i,1));
+		G->SetValue(i,2,evalid->GetValue(i,0));
+	}
+	Matrix* M = NULL;
+	GSLsquarefit(&M,G,df);
+
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			gcalgr->SetValue(i,j,gcalgr->GetValue(i,j)+xobs->GetValue(i,j)*M->GetValue(0,0)+yobs->GetValue(i,j)*M->GetValue(1,0)+M->GetValue(2,0));
+		}
+	}
+	reshape(gcalgr,g,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		a=a+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)-g->GetValue(i,0)));
+		b=b+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)+g->GetValue(i,0)));
+	}
+	e=2*a/(a+b);
+
+	delete m1;
+	delete m2;
+	delete g1;
+	delete g2;
+	delete g;
+	delete gcalgr;
+	delete gcalvec;
+	delete df;
+	delete G;
+	delete M;
+
+	return e;
+}/*}}}*/
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd, Matrix *landmask){/*{{{*/
+	Matrix* m1gr=new Matrix(my,mx);
+	Matrix* m1grsm=new Matrix(my,mx);
+	Matrix* m1col=new Matrix(mx*my,1);
+	Matrix* m1gr2=new Matrix(my,mx);
+	Matrix* m1grsm2=new Matrix(my,mx);
+	Matrix* m1col2=new Matrix(mx*my,1);
+	Matrix* nptflag= new Matrix(mx*my,1);
+	double u=0;
+	double y=0;
+	m1->MatrixEqual(m0);
+	nptflag->MatrixSum(icethick,bathy);
+	/* first layer: ice */
+	for (int i=0;i<mx*my;i++){
+		if(landmask->GetValue(i,0)==2){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,1,m0->GetValue(i,1)+y*ptval);
+				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(m1->GetValue(i,1)>=m1->GetValue(i,0)+mmax){
+					m1->SetValue(i,1,m1->GetValue(i,0)+mmax);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+		}
+		else if(landmask->GetValue(i,0)==0){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+				if(m1->GetValue(i,2)<=m1->GetValue(i,0)){
+					m1->SetValue(i,2,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,2)>=m1->GetValue(i,0)+mmax2){
+					m1->SetValue(i,2,m1->GetValue(i,0)+mmax2);
+				}
+			}
+		}
+	}
+
+	m1->ExtractColumn(m1col,1);
+	vec2gridsimple(m1col,m1gr,mx,my);
+	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+	reshape(m1grsm,m1col,mx,my);
+	m1->ExtractColumn(m1col2,2);
+	vec2gridsimple(m1col2,m1gr2,mx,my);
+	filtergrav(m1grsm2,m1gr2,ctr,sd,mx,my);
+	reshape(m1grsm2,m1col2,mx,my);
+
+	for (int i=0;i<mx*my;i++){
+		if(landmask->GetValue(i,0)==2){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,1,m1col->GetValue(i,0));
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(fabs(m1->GetValue(i,2)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else if(landmask->GetValue(i,0)==0){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,2)<=m1->GetValue(i,0)){
+					m1->SetValue(i,2,m1->GetValue(i,0)+1e-10);
+				}
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else {
+			if(nptflag->GetValue(i,0)==0){
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,1,m1->GetValue(i,0));
+				}
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,2))>1){
+					m1->SetValue(i,2,m1->GetValue(i,0));
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+	}
+
+				/* second layer: water */
+//	for (int i=0;i<mx*my;i++){
+//		if(bathy->GetValue(i,0)==0){
+//			u=double (rand())/ double(RAND_MAX);
+//			y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+//			m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+//			if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+//				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+//			}
+//			if(m1->GetValue(i,2)>=m1->GetValue(i,1)+mmax2){
+//				m1->SetValue(i,2,m1->GetValue(i,1)+mmax2);
+//			}
+//		}
+//	}
+//	m1->ExtractColumn(m1col,2);
+//	vec2gridsimple(m1col,m1gr,mx,my);
+//	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+//	reshape(m1grsm,m1col,mx,my);
+//	for (int i=0;i<mx*my;i++){
+//		if(bathy->GetValue(i,0)==0){
+//			m1->SetValue(i,2,m1col->GetValue(i,0));
+//		}
+//		else{
+//			m1->SetValue(i,2,m0->GetValue(i,2));
+//		}
+//		if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+//			m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+//		}
+//	}
+	delete m1gr;
+	delete m1grsm;
+	delete m1col;
+	delete m1gr2;
+	delete m1grsm2;
+	delete m1col2;
+	delete nptflag;
+}/*}}}*/
+double signe(double a){/*{{{*/
+	if(a<0){return -1;}
+	else{return 1;}
+}/*}}}*/
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my){/*{{{*/
+	A->MatrixEqual(Ain);
+	for (int i=1;i<my-1;i++){
+		for(int j=1;j<mx-1;j++){
+			A->SetValue(i,j,(ctr*Ain->GetValue(i,j)+sd*(Ain->GetValue(i-1,j)+Ain->GetValue(i+1,j)+Ain->GetValue(i,j-1)+Ain->GetValue(i,j+1)))/(ctr+4*sd));
+		}
+	}
+}/*}}}*/
+double coolshed(double T0,double k,double c,double D){/*{{{*/
+	double T1=T0*exp(-c*pow(k,1/D));
+	return T1;
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/netCDF/ClassTry.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/netCDF/ClassTry.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/netCDF/ClassTry.py	(revision 21239)
@@ -0,0 +1,120 @@
+#module imports {{{
+from netCDF4 import Dataset
+import time
+import collections
+from os import path, remove
+#}}}
+
+				
+class truc(object):
+	#properties
+	def __init__(self,*filename):#{{{
+
+		def netCDFread(filename):
+			def walktree(data):
+				keys = data.groups.keys()
+				yield keys
+				for key in keys:
+					for children in walktree(data.groups[str(key)]):
+						yield children
+
+			if path.exists(filename):
+				print ('Opening {} for reading '.format(filename))
+				NCData=Dataset(filename, 'r')
+				class_dict={}
+				
+				for children in walktree(NCData):
+					for child in children:
+						class_dict[str(child)]=str(getattr(NCData.groups[str(child)],'classtype'))
+
+				return class_dict
+
+		if filename:		
+			classtype=netCDFread(filename[0])
+		else:
+			classtype=self.default_prop()
+			
+		module=map(__import__,dict.values(classtype))
+
+		for i,mod in enumerate(dict.keys(classtype)):
+			self.__dict__[mod] = getattr(module[i],str(classtype[str(mod)]))()
+			
+		#}}}
+	def default_prop(self):    # {{{
+		# ordered list of properties since vars(self) is random
+		return {'mesh':'mesh2d',\
+		        'mask':'mask',\
+		        'geometry':'geometry',\
+		        'constants':'constants',\
+		        'smb':'SMB',\
+		        'basalforcings':'basalforcings',\
+		        'materials':'matice',\
+		        'damage':'damage',\
+		        'friction':'friction',\
+		        'flowequation':'flowequation',\
+		        'timestepping':'timestepping',\
+		        'initialization':'initialization',\
+		        'rifts':'rifts',\
+		        'debug':'debug',\
+		        'verbose':'verbose',\
+		        'settings':'settings',\
+		        'toolkits':'toolkits',\
+		        'cluster':'generic',\
+		        'balancethickness':'balancethickness',\
+		        'stressbalance':'stressbalance',\
+		        'groundingline':'groundingline',\
+		        'hydrology':'hydrologyshreve',\
+		        'masstransport':'masstransport',\
+		        'thermal':'thermal',\
+		        'steadystate':'steadystate',\
+		        'transient':'transient',\
+		        'calving':'calving',\
+						'gia':'gia',\
+		        'autodiff':'autodiff',\
+		        'inversion':'inversion',\
+		        'qmu':'qmu',\
+		        'outputdefinition':'outputdefinition',\
+		        'results':'results',\
+		        'radaroverlay':'radaroverlay',\
+		        'miscellaneous':'miscellaneous',\
+		        'private':'private'}
+	# }}}
+		
+	def __repr__(obj): #{{{
+		#print "Here %s the number: %d" % ("is", 37)
+		string="%19s: %-22s -- %s" % ("mesh","[%s,%s]" % ("1x1",obj.mesh.__class__.__name__),"mesh properties")
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("mask","[%s,%s]" % ("1x1",obj.mask.__class__.__name__),"defines grounded and floating elements"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("geometry","[%s,%s]" % ("1x1",obj.geometry.__class__.__name__),"surface elevation, bedrock topography, ice thickness,..."))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("constants","[%s,%s]" % ("1x1",obj.constants.__class__.__name__),"physical constants"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("smb","[%s,%s]" % ("1x1",obj.smb.__class__.__name__),"surface forcings"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("basalforcings","[%s,%s]" % ("1x1",obj.basalforcings.__class__.__name__),"bed forcings"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("materials","[%s,%s]" % ("1x1",obj.materials.__class__.__name__),"material properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("damage","[%s,%s]" % ("1x1",obj.damage.__class__.__name__),"damage propagation laws"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("friction","[%s,%s]" % ("1x1",obj.friction.__class__.__name__),"basal friction/drag properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("flowequation","[%s,%s]" % ("1x1",obj.flowequation.__class__.__name__),"flow equations"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("timestepping","[%s,%s]" % ("1x1",obj.timestepping.__class__.__name__),"time stepping for transient models"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("initialization","[%s,%s]" % ("1x1",obj.initialization.__class__.__name__),"initial guess/state"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("rifts","[%s,%s]" % ("1x1",obj.rifts.__class__.__name__),"rifts properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("debug","[%s,%s]" % ("1x1",obj.debug.__class__.__name__),"debugging tools (valgrind, gprof)"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("verbose","[%s,%s]" % ("1x1",obj.verbose.__class__.__name__),"verbosity level in solve"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("settings","[%s,%s]" % ("1x1",obj.settings.__class__.__name__),"settings properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("toolkits","[%s,%s]" % ("1x1",obj.toolkits.__class__.__name__),"PETSc options for each solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("cluster","[%s,%s]" % ("1x1",obj.cluster.__class__.__name__),"cluster parameters (number of cpus...)"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("balancethickness","[%s,%s]" % ("1x1",obj.balancethickness.__class__.__name__),"parameters for balancethickness solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("stressbalance","[%s,%s]" % ("1x1",obj.stressbalance.__class__.__name__),"parameters for stressbalance solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("groundingline","[%s,%s]" % ("1x1",obj.groundingline.__class__.__name__),"parameters for groundingline solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("hydrology","[%s,%s]" % ("1x1",obj.hydrology.__class__.__name__),"parameters for hydrology solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("masstransport","[%s,%s]" % ("1x1",obj.masstransport.__class__.__name__),"parameters for masstransport solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("thermal","[%s,%s]" % ("1x1",obj.thermal.__class__.__name__),"parameters for thermal solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("steadystate","[%s,%s]" % ("1x1",obj.steadystate.__class__.__name__),"parameters for steadystate solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("transient","[%s,%s]" % ("1x1",obj.transient.__class__.__name__),"parameters for transient solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("calving","[%s,%s]" % ("1x1",obj.calving.__class__.__name__),"parameters for calving"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("autodiff","[%s,%s]" % ("1x1",obj.autodiff.__class__.__name__),"automatic differentiation parameters"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("inversion","[%s,%s]" % ("1x1",obj.inversion.__class__.__name__),"parameters for inverse methods"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("qmu","[%s,%s]" % ("1x1",obj.qmu.__class__.__name__),"dakota properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("outputdefinition","[%s,%s]" % ("1x1",obj.outputdefinition.__class__.__name__),"output definition"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("results","[%s,%s]" % ("1x1",obj.results.__class__.__name__),"model results"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("radaroverlay","[%s,%s]" % ("1x1",obj.radaroverlay.__class__.__name__),"radar image for plot overlay"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("miscellaneous","[%s,%s]" % ("1x1",obj.miscellaneous.__class__.__name__),"miscellaneous fields"))
+		return string
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/netCDF/export_netCDF.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/netCDF/export_netCDF.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/netCDF/export_netCDF.m	(revision 21239)
@@ -0,0 +1,247 @@
+function export_netCDF(md,filename)	
+	
+%Now going on Real treatment
+	if exist(filename),
+		disp(sprintf('File %s allready exist', filename));
+		prompt = 'Give a new name or "delete" to replace: ';
+		newname = input(prompt,'s');
+		if strcmp(newname,'delete')
+			delete(filename)
+		else
+			disp(sprintf('New file name is %s ', newname));
+			filename=newname
+	  end
+  end
+	%open file and write description
+	mode = netcdf.getConstant('NC_NETCDF4');
+	mode = bitor(mode,netcdf.getConstant('NC_NOCLOBBER'));%NOCLOBBER to avoid overwrite
+	ncid = netcdf.create(filename,mode);
+	netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Title',['Results for run ' md.miscellaneous.name]);
+	netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Date',['Created ' datestr(now)]);
+	
+	%gather geometry and timestepping as dimensions
+	Duration=md.timestepping.final_time-md.timestepping.start_time;
+	if Duration>0 && md.timestepping.time_step*md.settings.output_frequency>0,
+		StepNum=Duration/(md.timestepping.time_step*md.settings.output_frequency);
+	else
+		StepNum=1;
+  end							
+ 
+	%define netcdf dimensions
+	DimSize(1).index=netcdf.defDim(ncid,'Dimension1',md.mesh.numberofelements);
+	DimSize(2).index=netcdf.defDim(ncid,'Dimension2',md.mesh.numberofvertices);
+	DimSize(3).index=netcdf.defDim(ncid,'Dimension3',size(md.mesh.elements,2));
+	DimSize(4).index=netcdf.defDim(ncid,'Dimension4',StepNum);
+	DimSize(5).index=netcdf.defDim(ncid,'Dimension5',40);
+	DimSize(6).index=netcdf.defDim(ncid,'Dimension6',2);
+	
+	for i=1:length(DimSize),
+		[DimSize(i).name,DimSize(i).value]=netcdf.inqDim(ncid,DimSize(i).index);
+		DimValue(i)=DimSize(i).value;% putting vallues in an array for
+                                 % further use
+  end
+ 
+	%Needs a first turn arround for var def
+ 
+	%get all model classes and create respective groups
+	groups=fieldnames(md);
+	for i=1:length(groups),
+		disp(sprintf('group name in tree %s ',groups{i}));
+		groupID=netcdf.defGrp(ncid,groups{i});
+		%In each group gather the fields of the class
+		groupfields=fields(md.(groups{i}));
+		%Special treatment for the results
+		if strcmp(groups(i),'results'),
+			for j=1:length(groupfields)%looping on the differents solutions
+				netcdf.putAtt(groupID,netcdf.getConstant('NC_GLOBAL'),'classtype','results');
+				subgroupID=netcdf.defGrp(groupID,groupfields{j});
+				netcdf.putAtt(subgroupID,netcdf.getConstant('NC_GLOBAL'),'classtype',groupfields{j});
+				%disp(sprintf('=====Field name in tree %s ',groupfields{j}));
+				if length(md.results.(groupfields{j}))>1,
+					%the solution have several timestep get last timesteps and output frequency
+					last_step = length(md.results.(groupfields{j}));
+					%grab first time step
+					subfields=fields(md.results.(groupfields{j})(1));
+					for k=1:length(subfields),
+						if ~strcmp(subfields(k),'errlog') && ~strcmp(subfields(k),'outlog') && ~strcmp(subfields(k),'SolutionType'),
+							%disp(sprintf('==========SubField name in tree %s ',subfields{k}));
+							Var=md.results.(groupfields{j})(1).(subfields{k});
+							[DimSize,DimValue]=DefCreateVar(ncid,Var,subgroupID,subfields{k},DimSize,DimValue,true,last_step,md,groupfields{j});
+			      end
+		      end
+				elseif length(md.results.(groupfields{j}))==1,
+					%only one timestep
+					subfields=fields(md.results.(groupfields{j}));
+					for k=1:length(subfields),
+						%disp(sprintf('==========SubField name in tree %s ',subfields{k}));
+						if ~strcmp(subfields(k),'errlog') && ~strcmp(subfields(k),'outlog') && ~strcmp(subfields(k),'SolutionType'),
+							Var=md.results.(groupfields{1})(1).(subfields{k});
+							[DimSize,DimValue]=DefCreateVar(ncid,Var,groupID,subfields{k},DimSize,DimValue,false);
+			      end
+		      end
+				else
+					print 'Result format not suported'
+		    end
+	    end
+		else
+			for j=1:length(groupfields),
+				disp(sprintf('=====Field name in tree %s ',groupfields{j}));
+				netcdf.putAtt(groupID,netcdf.getConstant('NC_GLOBAL'),'classtype',class(md.(groups{i})));
+				Var=md.(groups{i}).(groupfields{j});
+				[DimSize,DimValue]=DefCreateVar(ncid,Var,groupID,groupfields{j},DimSize,DimValue,false);
+	    end
+	  end	
+  end
+	netcdf.close(ncid);
+end
+
+function [DimSize,DimValue]=DefCreateVar(ncid,Var,groupID,field,DimSize,DimValue,istime,last,md,midfield)
+	varclass=class(Var);
+	varsize=size(Var);
+	varlength=length(Var);
+	if isa(Var,'logical'),
+		if Var,
+			LogicString='True';
+		else,
+			LogicString='False';
+  	end
+		netcdf.putAtt(groupID,netcdf.getConstant('NC_GLOBAL'),field,LogicString);
+	elseif isa(Var,'char'),
+		netcdf.putAtt(groupID,netcdf.getConstant('NC_GLOBAL'),field,Var);
+	elseif isa(Var,'double'), %dealing with arrays
+		[dims,DimSize,DimValue]=GetDims(ncid,Var,groupID,field,DimSize,DimValue,istime);
+ 		varid = netcdf.defVar(groupID,field,'NC_DOUBLE',dims);
+		if istime,
+			VarTab=Var;
+			for i=2:last,
+				TimeVar=md.results.(midfield)(i).(field);
+				VarTab=[VarTab TimeVar];
+	    end
+			netcdf.putVar(groupID,varid,VarTab);
+		else
+			if length(Var)==0,
+				netcdf.putVar(groupID,varid,NaN);
+			else
+				netcdf.putVar(groupID,varid,Var);
+	    end
+	  end
+	elseif isa(Var,'cell'),
+		[dims,DimSize,DimValue]=GetDims(ncid,Var,groupID,field,DimSize,DimValue,istime);
+		%dirty hack to be able to pass strings
+		varid = netcdf.defVar(groupID,field,'NC_CHAR',dims);
+		if length(Var)==0,
+			netcdf.putVar(groupID,varid,0,9,'emptycell')
+		else
+			for i=1:length(Var),
+				startpoint=zeros(size(Var));
+				startpoint(:,i)=i-1;
+				if length(Var)>1,
+					endpoint=[min(length(Var{i}),40) 1];
+				else
+					endpoint=min(length(Var{i}),40);
+		    end
+				if length(Var{i})>40,
+					netcdf.putVar(groupID,varid,startpoint,endpoint,Var{i}(1:40))
+					disp(sprintf('some variable have been truncated'));
+			  else
+					netcdf.putVar(groupID,varid,startpoint,endpoint,Var{i})
+	      end
+	    end
+	  end
+	elseif isa(Var,'struct'),
+		%Start by getting the structure fields and size
+		locfields=fields(Var);
+		[dims,DimSize,DimValue]=GetDims(ncid,Var,groupID,locfields,DimSize,DimValue,istime);
+		varid = netcdf.defVar(groupID,field,'NC_CHAR',dims);
+		if length(locfields)==0,
+			netcdf.putVar(groupID,varid,[0,0],[11,1],'emptystruct')
+		else
+			for i=1:length(locfields),
+				for j=1:2,
+					if j==1,
+						startpoint=[0,0,i-1];
+						CharVar=locfields{i};
+					else
+						startpoint=[0,1,i-1];
+						if isa(Var.(locfields{i}),'char'),
+							CharVar=Var.(locfields{i});
+						else
+							CharVar=num2str(Var.(locfields{i}));
+			      end
+		      end
+					endpoint=[min(length(CharVar),40),1,1];
+					if length(CharVar)>40,
+						netcdf.putVar(groupID,varid,startpoint,endpoint,CharVar(1:40))
+						disp(sprintf('some variable have been truncated'));
+					else
+						netcdf.putVar(groupID,varid,startpoint,endpoint,CharVar)
+		      end
+		    end
+	    end
+		end
+	else
+		disp(sprintf('no support for class %s of field %s',varclass,field));
+  end
+	return
+end
+
+function [dims,DimSize,DimValue]=GetDims(ncid,Var,groupID,field,DimSize,DimValue,istime)
+	dims=[];
+	%specific treatment for structures
+	if isa(Var,'struct')
+		varsize=size(field); %we pass here the fields of the current structure
+		MatOrVec=varsize>1; %checking if we have a matrix (1 1) or vector (1 0)
+		for i=1:sum(MatOrVec), %loop on the number of (non 1) dimensions
+			currentdim=varsize(i);
+			dimexist=DimValue==currentdim;
+			if sum(dimexist)==0, %dimension is new to us, need to create it
+				dimname=strcat('Dimension',int2str(length(DimValue)+1));
+				dimindex=length(DimSize)+1;
+				DimSize(dimindex).index=netcdf.defDim(ncid,dimname,currentdim);
+				[DimSize(dimindex).name,DimSize(dimindex).value]=netcdf.inqDim(ncid,DimSize(dimindex).index);
+				dims(i)=DimSize(dimindex).index;
+				DimValue(dimindex)=currentdim;
+			else
+				dimindex=find(dimexist);
+				if DimSize(dimindex).value~=currentdim,
+					error('Indexation problem with the dimension structure')
+		    end
+	    end
+			dims(i)=DimSize(dimindex).index;
+	  end
+		dims=[DimSize(6).index dims];
+	else
+		%with a cell array need to grab the transposed size to work
+		if isa(Var,'cell'),
+			varsize=size(Var');
+		else
+			varsize=size(Var);
+    end
+		MatOrVec=varsize>1; %checking if we have a matrix (1 1) or vector (1 0)
+		for i=1:sum(MatOrVec), %loop on the number of (non 1) dimensions
+			currentdim=varsize(i);
+			dimexist=DimValue==currentdim;
+			if sum(dimexist)==0, %dimension is new to us, need to create it
+				dimname=strcat('Dimension',int2str(length(DimValue)+1));
+				dimindex=length(DimSize)+1;
+				DimSize(dimindex).index=netcdf.defDim(ncid,dimname,currentdim);
+				[DimSize(dimindex).name,DimSize(dimindex).value]=netcdf.inqDim(ncid,DimSize(dimindex).index);
+				dims(i)=DimSize(dimindex).index;
+				DimValue(dimindex)=currentdim;
+			else
+				dimindex=find(dimexist);
+				if DimSize(dimindex).value~=currentdim,
+					error('Indexation problem with the dimension structure')
+		    end
+	    end
+			dims(i)=DimSize(dimindex).index;
+    end
+  end
+	if istime,
+		dims=[dims DimSize(4).index];%adding the time dimension if necessary
+  end
+	%if we have a cell variable we need to add a stringlength dimension 
+	if isa(Var,'cell') || isa(Var,'struct'),
+		dims=[DimSize(5).index dims]
+  end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/netCDF/export_netCDF.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/netCDF/export_netCDF.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/netCDF/export_netCDF.py	(revision 21239)
@@ -0,0 +1,187 @@
+from netCDF4 import Dataset, stringtochar
+import numpy as np
+import time
+import collections
+from mesh2d import *
+from mesh3dprisms import *
+from results import *
+from os import path, remove
+
+def export_netCDF(md,filename):
+	#Now going on Real treatment
+	if path.exists(filename):
+		print ('File {} allready exist'.format(filename))
+		newname=raw_input('Give a new name or "delete" to replace: ')
+		if newname=='delete':
+			remove(filename)
+		else:
+			print ('New file name is {}'.format(newname))
+			filename=newname
+			
+	NCData=Dataset(filename, 'w', format='NETCDF4')
+	NCData.description = 'Results for run' + md.miscellaneous.name
+	NCData.history = 'Created ' + time.ctime(time.time())
+
+	#gather geometry and timestepping as dimensions
+	Duration=md.timestepping.final_time-md.timestepping.start_time
+	if Duration>0 and md.timestepping.time_step*md.settings.output_frequency>0:
+		StepNum=int(Duration/(md.timestepping.time_step*md.settings.output_frequency))
+	else:
+		StepNum=1
+		
+	Dimension1=NCData.createDimension('Dimension1',md.mesh.numberofelements)
+	Dimension2=NCData.createDimension('Dimension2',md.mesh.numberofvertices)
+	Dimension3=NCData.createDimension('Dimension3',np.shape(md.mesh.elements)[1])
+	Dimension4=NCData.createDimension('Dimension4',StepNum)
+	Dimension5=NCData.createDimension('Dimension5',2)
+
+	DimDict = {len(Dimension1):'Dimension1',
+						 len(Dimension2):'Dimension2',
+						 len(Dimension3):'Dimension3',
+						 len(Dimension4):'Dimension4',
+						 len(Dimension5):'Dimension5'}
+
+	#get all model classes and create respective groups
+	groups=dict.keys(md.__dict__)
+	for group in groups:
+		NCgroup=NCData.createGroup(str(group))
+		#In each group gather the fields of the class
+		fields=dict.keys(md.__dict__[group].__dict__)
+
+		#Special treatment for the results
+		if str(group)=='results':
+			for supfield in fields:#looping on the different solutions
+				NCgroup.__setattr__('classtype', "results")
+				Subgroup=NCgroup.createGroup(str(supfield))
+				#Subgroup.__setattr__('classtype',md.results.__dict__[supfield].__class__.__name__)
+				Subgroup.__setattr__('classtype',md.results.__class__.__name__)
+				if type(md.results.__dict__[supfield])==list:#the solution have several timestep
+					#get last timesteps and output frequency
+					last_step = np.size(md.results.__dict__[supfield])
+					step_freq = md.settings.output_frequency
+					#grab first time step
+					subfields=dict.keys(md.results.__dict__[supfield].__getitem__(0).__dict__)
+					for field in subfields:
+						if str(field)!='errlog' and str(field)!='outlog' and str(field)!='SolutionType':
+							Var=md.results.__dict__[supfield].__getitem__(0).__dict__[field]
+							DimDict=CreateVar(NCData,Var,field,Subgroup,DimDict,True,last_step,step_freq,md,supfield)
+					
+				elif type(md.results.__dict__[supfield])==results:#only one timestep
+					subfields=dict.keys(md.results.__dict__[supfield].__dict__)
+					for field in subfields:
+						if str(field)!='errlog' and str(field)!='outlog' and str(field)!='SolutionType':
+							Var=md.results.__dict__[supfield].__dict__[field]
+							DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict,False)
+				else:
+					print ('Result format not suported')
+		else:
+			
+			for field in fields:
+				NCgroup.__setattr__('classtype', md.__dict__[group].__class__.__name__)
+				Var=md.__dict__[group].__dict__[field]
+				DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict,False)
+	NCData.close()
+
+#============================================================================
+#Define the variables
+def CreateVar(NCData,var,field,Group,DimDict,istime,*step_args):
+	#grab type
+	try:
+		val_type=str(var.dtype)
+	except AttributeError:
+		val_type=type(var)
+		#grab dimension
+	try:
+		val_shape=dict.keys(var)
+	except TypeError:
+		val_shape=np.shape(var)
+
+
+	TypeDict = {float:'f8',
+							'float64':'f8',
+							int:'i8',
+							'int64':'i8'}
+		
+	val_dim=np.shape(val_shape)[0]
+	#Now define and fill up variable
+	#treating scalar string or bool as atribute
+	if val_type==str or val_type==unicode or val_type==bool:
+		Group.__setattr__(str(field), str(var))
+	#treating list as string table
+	elif val_type==list:
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),'str',dimensions,zlib=True)
+		for elt in range(0,val_dim):
+			try:
+				ncvar[elt] = var[elt]
+			except IndexError:
+				ncvar= []
+	#treating bool tables as string tables
+	elif val_type=='bool':
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),'str',dimensions,zlib=True)
+		for elt in range(0,val_shape[0]):
+			ncvar[elt] = str(var[elt])
+	#treating dictionaries as tables of strings
+	elif val_type==collections.OrderedDict:
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),'str',dimensions,zlib=True)
+		for elt in range(0,val_dim):
+			ncvar[elt,0]=dict.keys(var)[elt]
+			ncvar[elt,1]=str(dict.values(var)[elt]) #converting to str to avoid potential problems
+	#Now dealing with numeric variables
+	else:
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),TypeDict[val_type],dimensions,zlib=True)
+		if istime:
+			last=step_args[0]
+			md=step_args[2]
+			supfield=step_args[3]
+			vartab=var
+			for time in range(0,last,1):
+				if time!=0:
+					timevar=md.results.__dict__[supfield].__getitem__(time).__dict__[field]
+					vartab=np.column_stack((vartab,timevar))
+			try:
+				ncvar[:,:]=vartab[:,:]
+			except ValueError:
+				ncvar[:]=vartab.T[:]
+		else:
+			try:
+				nan_val=np.isnan(var)
+				if nan_val.all():
+					ncvar [:] = 'NaN'
+				else:
+					ncvar[:] = var
+			except TypeError: #type does not accept nan, get vallue of the variable
+				ncvar[:] = var
+	return DimDict
+
+#============================================================================
+#retriev the dimension tuple from a dictionnary
+def GetDim(NCData,var,shape,DimDict,i,istime):
+	output=[]
+	#grab dimension
+	for dim in range(0,i): #loop on the dimensions
+		if type(shape[0])==int:
+			try:
+				output=output+[str(DimDict[shape[dim]])] #test if the dimension allready exist
+			except KeyError: #if not create it
+				if (shape[dim])>0:
+					index=len(DimDict)+1
+					NewDim=NCData.createDimension('Dimension'+str(index),(shape[dim]))
+					DimDict[len(NewDim)]='Dimension'+str(index)
+					output=output+[str(DimDict[shape[dim]])]
+		elif type(shape[0])==str:#dealling with a dictionnary
+			try:
+				#dimension5 is 2 to treat with dict
+				output=[str(DimDict[np.shape(shape)[0]])]+['Dimension5']
+			except KeyError:
+				index=len(DimDict)+1
+				NewDim=NCData.createDimension('Dimension'+str(index),np.shape(shape)[0])
+				DimDict[len(NewDim)]='Dimension'+str(index)
+				output=[str(DimDict[np.shape(dict.keys(var))[0]])]+['Dimension5']
+			break
+	if istime:
+		output=output+['Dimension4']
+	return tuple(output), DimDict
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/netCDF/read_netCDF.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/netCDF/read_netCDF.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/netCDF/read_netCDF.m	(revision 21239)
@@ -0,0 +1,134 @@
+function self=read_netCDF(filename)
+
+% Different types in the netcdf standard are:
+%   2 for char
+%   4 for integer
+%   6 for doubles	
+	
+	ncid=netcdf.open(filename,'NC_NOWRITE');
+	groupIDs=netcdf.inqGrps(ncid);%retrieve group IDs
+	self=model;
+	%loop on groups
+	for i=1:length(groupIDs)
+		whichclass = netcdf.getAtt(groupIDs(i),netcdf.getConstant('NC_GLOBAL'),'classtype');
+		groupName = netcdf.inqGrpName(groupIDs(i));		
+		%results needs a special treatment as it is a structure
+		if strcmp(whichclass,'results'),
+			subgroupIDs=netcdf.inqGrps(groupIDs(i));%retrieve group IDs
+			%define the model structure
+			self=setfield(self,groupName,struct);
+			for j=1:length(subgroupIDs)
+				subclass = netcdf.getAtt(subgroupIDs(j),netcdf.getConstant('NC_GLOBAL'),'classtype');
+				self.results=setfield(self.results,subclass,struct);
+				[ndims nvar natts]=netcdf.inq(subgroupIDs(j));
+				varIDs=netcdf.inqVarIDs(subgroupIDs(j));
+				%first loop on group atributes
+				for k=1:natts,
+					attname = netcdf.inqAttName(subgroupIDs(j),netcdf.getConstant('NC_GLOBAL'),k-1);
+					[xtype,attlen] = netcdf.inqAtt(subgroupIDs(j),netcdf.getConstant('NC_GLOBAL'),attname);
+					disp(sprintf('In %s, Treating attribute %s of type %i',subclass,attname,xtype));
+					%classtype have done is job, no need to keep it any more
+					if ~strcmp(attname,'classtype'),
+						attval=netcdf.getAtt(subgroupIDs(i),netcdf.getConstant('NC_GLOBAL'),attname);
+						if strcmp(attval,'False'),
+							self.(groupName).(subclass).(attname)=false;
+						elseif strcmp(attval,'True')
+							self.(groupName).(subclass).(attname)=true;
+						else
+							self.(groupName).(subclass).(attname)=attval;
+			      end
+		      end
+		    end
+				%now loop on variable in group
+				for k=1:length(varIDs),
+					[varname, xtype, varDimIDs, varAtts] =netcdf.inqVar(subgroupIDs(j),varIDs(k));
+					disp(sprintf('In %s, Treating variable %s of type %i',whichclass,varname,xtype));
+					%time dimension seems to be last in our construction
+					for l=1:length(varDimIDs),
+						[dimname, dimlen] = netcdf.inqDim(ncid,varDimIDs(l));
+						count(l)=[dimlen];
+		      end
+					startpoint=zeros(size(varDimIDs));
+					timestep=count(end);
+					count(end)=1;
+					for l=1:timestep,
+						data=netcdf.getVar(subgroupIDs(j),varIDs(k),startpoint,count);
+						self.(groupName).(subclass)(l).(varname)=data;
+						startpoint(end)=startpoint(end)+1;
+						self.(groupName).(subclass)(l).('errlog')='';
+						self.(groupName).(subclass)(l).('outlog')='';
+						self.(groupName).(subclass)(l).('SolutionType')=subclass;
+		     end
+				 clear count
+		    end
+	    end
+			%toolkits too require a specific treatment
+		elseif strcmp(whichclass,'toolkits'),
+			%just one variable here
+			varID=netcdf.inqVarIDs(groupIDs(i));
+			[varname, xtype, varDimIDs, varAtts] =netcdf.inqVar(groupIDs(i),varID);
+			disp(sprintf('In %s, Treating variable %s of type %i',whichclass,varname,xtype));
+			[dimname,numoffields] = netcdf.inqDim(ncid,varDimIDs(end));
+			self.(groupName)=eval(whichclass);
+			for j=1:numoffields,
+				varval=netcdf.getVar(groupIDs(i),varID,[0,1,j-1],[40,1,1])';
+				fieldname=netcdf.getVar(groupIDs(i),varID,[0,0,j-1],[40,1,1])';
+				varval=cellstr(varval);
+				fieldname=cellstr(fieldname);
+				[val, status]=str2num(varval{1});
+				if strcmp(varval{1},'false') |strcmp(varval{1},'true')  ,
+					status=0;
+		    end
+				if status==1,
+					self.(groupName).(varname).(fieldname{1})=val;
+				else
+					self.(groupName).(varname).(fieldname{1})=varval{1};
+			 end
+	   end
+			%Now for the other fields
+
+		else,
+			%define the model structure
+			self.(groupName)=eval(whichclass);
+			varIDs=netcdf.inqVarIDs(groupIDs(i));
+			[ndims nvar natts]=netcdf.inq(groupIDs(i));
+			%first loop on group atributes
+			for j=1:natts,
+				attname = netcdf.inqAttName(groupIDs(i),netcdf.getConstant('NC_GLOBAL'),j-1);
+				[xtype,attlen] = netcdf.inqAtt(groupIDs(i),netcdf.getConstant('NC_GLOBAL'),attname);
+				disp(sprintf('In %s, Treating attribute %s of type %i',whichclass,attname,xtype));
+				%classtype have done is job, no need to keep it any more
+				if ~strcmp(attname,'classtype'),
+					attval=netcdf.getAtt(groupIDs(i),netcdf.getConstant('NC_GLOBAL'),attname);
+					if strcmp(attval,'False'),
+						self.(groupName).(attname)=false;
+					elseif strcmp(attval,'True')
+						self.(groupName).(attname)=true;
+					else
+					self.(groupName).(attname)=attval;
+		    end
+		  end
+	  end
+			%now loop on variable in group
+			for j=1:length(varIDs),
+				[varname, xtype, varDimIDs, varAtts] =netcdf.inqVar(groupIDs(i),varIDs(j));
+				disp(sprintf('In %s, Treating variable %s of type %i',whichclass,varname,xtype));			
+				%if the value is a single string, we need to transpose it (cross check with python file is necessary)
+				if xtype==2
+					varval=netcdf.getVar(groupIDs(i),varIDs(j))';
+					varval=cellstr(varval)';
+					if strcmp(varval{1},'emptystruct'),
+						self.(groupName).(varname)=struct;
+					elseif strcmp(varval{1},'emptycell'),
+						self.(groupName).(varname)=cell(0,0);
+					else
+						self.(groupName).(varname)=varval;
+					end
+				else
+					self.(groupName).(varname)=netcdf.getVar(groupIDs(i),varIDs(j));
+		    end
+		  end
+	  end
+  end
+	netcdf.close(ncid)
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/netCDF/read_netCDF.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/netCDF/read_netCDF.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/netCDF/read_netCDF.py	(revision 21239)
@@ -0,0 +1,25 @@
+from netCDF4 import Dataset
+import time
+import collections
+from os import path, remove
+
+def netCDFRead(filename):
+	
+	def walktree(data):
+		keys = data.groups.keys()
+		yield keys
+		for key in keys:
+			for children in walktree(data.groups[str(key)]):
+				yield children
+				
+	if path.exists(filename):
+		print ('Opening {} for reading '.format(filename))
+		NCData=Dataset(filename, 'r')
+		class_dict={}
+		
+		for children in walktree(NCData):
+			for child in children:
+				class_dict[str(child)]=str(getattr(NCData.groups[str(child)],'classtype')+'()')
+
+		print class_dict
+				
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/paraview/enveloppeVTK.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/paraview/enveloppeVTK.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/paraview/enveloppeVTK.m	(revision 21239)
@@ -0,0 +1,186 @@
+function enveloppeVTK(filename,model,varargin)
+% vtk export
+% function enveloppeVTK(filename,model)
+% creates a directory with the vtk files for displays in paraview
+% only export the enveloppe result (surface and base) on trias
+%
+% input: filename   destination 
+%                   (string)
+%------------------------------------------------------------------
+%        model      this is md 
+%------------------------------------------------------------------
+% By default only the results are exported, you can add whichever
+% field you need as a string:
+% add 'geometry' to export md.geometry
+%
+% Basile de Fleurian:
+
+[path,name,ext]=fileparts(filename);
+separator=filesep;
+mkdir(filename);
+IsEnveloppe=find(model.mesh.vertexonbase | model.mesh.vertexonsurface);
+
+%get the element related variables
+if dimension(model.mesh)==2,
+	points=[model.mesh.x model.mesh.y zeros(model.mesh.numberofvertices,1)];
+	[num_of_elt]=size(model.mesh.elements,1);
+else
+	points=[model.mesh.x(IsEnveloppe) model.mesh.y(IsEnveloppe) model.mesh.z(IsEnveloppe)];
+	[num_of_elt]=size(find(isnan(model.mesh.lowerelements)),1)+size(find(isnan(model.mesh.upperelements)),1);
+	[low_elt_num]=size(find(isnan(model.mesh.lowerelements)),1);
+	[top_elt_num]=size(find(isnan(model.mesh.upperelements)),1);
+end
+
+celltype=5; %triangles
+[num_of_points,dim]=size(points);
+[point_per_elt]=size(model.mesh.elements,2);
+tot_points=model.mesh.numberofvertices;
+
+%this is the result structure
+res_struct=model.results;
+%checking for results
+if (length(fields(res_struct))>0);
+	%Getting all the solutions of the model
+	solnames=fields(res_struct);
+	num_of_sols=length(solnames);
+	num_of_timesteps=1;
+	%building solution structure 
+	for i=1:num_of_sols
+		sol_struct{i}=res_struct.(solnames{i});
+		%looking for multiple time steps
+		if(size(sol_struct{i},2)>num_of_timesteps);
+			num_of_timesteps=size(sol_struct{i},2);
+			outstep=model.timestepping.time_step*model.settings.output_frequency
+    end
+  end
+else
+	num_of_timesteps=1;
+end
+for step=1:num_of_timesteps;
+	
+	timestep=step;
+	fid = fopen(strcat(path,filesep,name,filesep,'timestep.vtk',int2str(timestep),'.vtk'),'w+');
+	fprintf(fid,'# vtk DataFile Version 2.0 \n');
+	fprintf(fid,'Data for run %s \n',model.miscellaneous.name);
+	fprintf(fid,'ASCII \n');
+	fprintf(fid,'DATASET UNSTRUCTURED_GRID \n');
+	
+	fprintf(fid,'POINTS %d float\n',num_of_points);
+	if(dim==3);
+		s='%f %f %f \n';
+	elseif(dim==2);
+		s='%f %f \n';
+  end
+	P=[points zeros(num_of_points,3-dim)];
+	fprintf(fid,s,P');
+	
+	fprintf(fid,'CELLS %d %d\n',num_of_elt,num_of_elt*(3+1));
+	s='%d';
+	for j=1:3
+		s=horzcat(s,{' %d'});
+  end
+	s=cell2mat(horzcat(s,{'\n'}));
+
+	%build the connection matrix for the top and bottom elements
+	if exist('low_elt_num')
+		triaconnect=zeros(num_of_elt,3);
+		triaconnect(1:low_elt_num,:)=model.mesh.elements(find(isnan(model.mesh.lowerelements)),1:3);
+		upshift=-min(min(model.mesh.elements(find(isnan(model.mesh.upperelements)),4:6)))+1+max(max(model.mesh.elements(find(isnan(model.mesh.lowerelements)),1:3)));
+		triaconnect(1+low_elt_num:num_of_elt,:)=model.mesh.elements(find(isnan(model.mesh.upperelements)),4:6)+upshift;
+		fprintf(fid,s,[(3)*ones(num_of_elt,1) triaconnect-1]');
+	else
+		fprintf(fid,s,[(point_per_elt)*ones(num_of_elt,1)	model.mesh.elements-1]');
+  end
+
+	fprintf(fid,'CELL_TYPES %d\n',num_of_elt);
+	s='%d\n';
+	fprintf(fid,s,celltype*ones(num_of_elt,1));
+	fprintf(fid,'POINT_DATA %s \n',num2str(num_of_points));
+
+	%loop over the different solution structures
+	if (exist('num_of_sols'));
+		for j=1:num_of_sols
+			%dealing with results on different timesteps
+			if(size(sol_struct{j},2)>timestep);
+				timestep = step;
+			else
+				timestep = size(sol_struct{j},2);
+	    end
+			%getting the number of fields in the solution
+			resfields=fields(sol_struct{j}(timestep));
+			num_of_fields=length(resfields);
+			%check which field is a real result and print
+			for k=1:num_of_fields
+				if ((numel(sol_struct{j}(timestep).(resfields{k})))==tot_points);
+					%paraview does not like NaN, replacing
+					nanval=find(isnan(sol_struct{j}(timestep).(resfields{k})));
+					sol_struct{j}(timestep).(resfields{k})(nanval)=-9999;
+					%also checking for verry small value that mess up
+					smallval=(abs(sol_struct{j}(timestep).(resfields{k}))<1.0e-20);
+					sol_struct{j}(timestep).(resfields{k})(smallval)=0.0;
+					fprintf(fid,'SCALARS %s float 1 \n',resfields{k});
+					fprintf(fid,'LOOKUP_TABLE default\n');
+					s='%e\n';
+					fprintf(fid,s,sol_struct{j}(timestep).(resfields{k})(IsEnveloppe));
+		    end		
+	    end 
+	  end
+  end
+	%loop on arguments, if something other than result is asked, do
+	%it now
+	for j= 1:nargin-2
+		res_struct=model.(varargin{j});
+		fieldnames=fields(res_struct);
+		num_of_fields=length(fieldnames);
+		for k=1:num_of_fields
+			if ((numel(res_struct.(fieldnames{k})))==tot_points);
+				%paraview does not like NaN, replacing
+				nanval=find(isnan(res_struct.(fieldnames{k})));
+				res_struct.(fieldnames{k})(nanval)=-9999;
+				%also checking for verry small value that mess up
+				smallval=(abs(res_struct.(fieldnames{k}))<1.0e-20);
+				res_struct.(fieldnames{k})(smallval)=0.0;
+				fprintf(fid,'SCALARS %s float 1 \n',fieldnames{k});
+				fprintf(fid,'LOOKUP_TABLE default\n');
+				s='%e\n';
+				fprintf(fid,s,res_struct.(fieldnames{k})(IsEnveloppe));
+				%check for forcings	
+			elseif (size(res_struct.(fieldnames{k}),1)==tot_points+1);
+				%paraview does not like NaN, replacing
+				nanval=find(isnan(res_struct.(fieldnames{k})));
+				res_struct.(fieldnames{k})(nanval)=-9999;
+				%also checking for verry small value that mess up
+				smallval=(abs(res_struct.(fieldnames{k}))<1.0e-20);
+				res_struct.(fieldnames{k})(smallval)=0.0;
+				if (size(res_struct.(fieldnames{k}),2)==num_of_timesteps),
+					fprintf(fid,'SCALARS %s float 1 \n',fieldnames{k});
+					fprintf(fid,'LOOKUP_TABLE default\n');
+					s='%e\n';
+					fprintf(fid,s,res_struct.(fieldnames{k})(IsEnveloppe,timestep));
+				else,
+					%forcing and results not on the same timestep,need some treatment
+					fprintf(fid,'SCALARS %s float 1 \n',fieldnames{k});
+					fprintf(fid,'LOOKUP_TABLE default\n');
+					index=1
+					currenttime=((timestep-1)*outstep)+model.timestepping.start_time+model.timestepping.time_step
+					while (res_struct.(fieldnames{k})(end,index)<=currenttime);
+						index=index+1
+		      end
+					uptime=res_struct.(fieldnames{k})(end,index);
+					uplim=res_struct.(fieldnames{k})(IsEnveloppe,index);
+					uptime
+					while (res_struct.(fieldnames{k})(end,index)>=currenttime);
+						index=index-1
+		      end
+					lowtime=res_struct.(fieldnames{k})(end,index);
+					lowlim=res_struct.(fieldnames{k})(IsEnveloppe,index);
+					lowtime
+					interp=lowlim+(uplim-lowlim)*((currenttime-lowtime)/(uptime-lowtime))
+					s='%e\n';
+					fprintf(fid,s,interp);
+				end	
+		  end		
+		end 
+	end
+	fclose(fid);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/paraview/enveloppeVTK.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/paraview/enveloppeVTK.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/paraview/enveloppeVTK.py	(revision 21239)
@@ -0,0 +1,157 @@
+import numpy
+import os
+import model
+import glob
+def enveloppeVTK(filename,model,*args):
+	'''
+	vtk export
+	function exportVTK(filename,model)
+	creates a directory with the vtk files for displays in paraview
+	(only work for triangle and wedges based on their number of nodes)
+	
+	Give only the results for nw but could be extended to geometry, mask... 
+	
+	input: filename   destination 
+	(string)
+	------------------------------------------------------------------
+model      this is md 
+	------------------------------------------------------------------
+	By default only the results are exported, you can add whichever
+	field you need as a string:
+	add 'geometry' to export md.geometry
+
+	Basile de Fleurian:
+	'''
+	Dir=os.path.basename(filename)
+	Path=filename[:-len(Dir)]
+
+	if os.path.exists(filename):
+		print ('File {} allready exist'.format(filename))
+		newname=raw_input('Give a new name or "delete" to replace: ')
+		if newname=='delete':
+			filelist = glob.glob(filename+'/*')
+			for oldfile in filelist:
+				os.remove(oldfile)
+		else:
+			print ('New file name is {}'.format(newname))
+			filename=newname
+			os.mkdir(filename)
+	else:
+		os.mkdir(filename)
+
+	IsEnveloppe=numpy.where(model.mesh.vertexonbase | model.mesh.vertexonsurface)
+	#get the element related variables
+	if 'z' in dict.keys(model.mesh.__dict__):
+		points=numpy.column_stack((model.mesh.x,model.mesh.y,model.mesh.z))
+		num_of_elt=numpy.size(numpy.isnan(model.mesh.lowerelements))+numpy.size(numpy.isnan(model.mesh.upperelements))
+		low_elt_num=numpy.size(numpy.isnan(model.mesh.lowerelements))
+		top_elt_num=numpy.size(numpy.isnan(model.mesh.upperelements))
+	else:
+		points=numpy.column_stack((model.mesh.x,model.mesh.y,numpy.zeros(numpy.shape(model.mesh.x))))
+		num_of_elt=numpy.shape(model.mesh.elements)[0]
+		
+	num_of_points=numpy.size(points)[0]
+	dim=numpy.size(points)[1]
+	point_per_elt=numpy.shape(model.mesh.elements)[1]
+		
+	celltype=5 #triangles
+	
+	#this is the result structure
+	res_struct=model.results
+	if (len(res_struct.__dict__)>0):
+		#Getting all the solutions of the model
+		solnames=(dict.keys(res_struct.__dict__))
+		num_of_sols=len(solnames)
+		num_of_timesteps=1
+		#%building solutionstructure 
+		for solution in solnames:
+			#looking for multiple time steps
+			if (numpy.size(res_struct.__dict__[solution])>num_of_timesteps):
+				num_of_timesteps=numpy.size(res_struct.__dict__[solution])
+				num_of_timesteps=int(num_of_timesteps)+1
+	else:
+		num_of_timesteps=1
+
+	for step in range(0,num_of_timesteps):
+		timestep=step
+		fid=open((filename +'/Timestep.vtk'+str(timestep)+'.vtk'),'w+')
+		fid.write('# vtk DataFile Version 2.0 \n')
+		fid.write('Data for run %s \n' % model.miscellaneous.name)
+		fid.write('ASCII \n')
+		fid.write('DATASET UNSTRUCTURED_GRID \n')
+		fid.write('POINTS %d float\n' % num_of_points)
+		for point in points:
+			fid.write('%f %f %f \n'%(point[0], point[1], point[2]))
+			
+		fid.write('CELLS %d %d\n' %(num_of_elt, num_of_elt*(point_per_elt+1)))
+
+		# 	if exist('low_elt_num')
+		# triaconnect=zeros(num_of_elt,3);
+		# triaconnect(1:low_elt_num,:)=model.mesh.elements(find(isnan(model.mesh.lowerelements)),1:3);
+		# upshift=-min(min(model.mesh.elements(find(isnan(model.mesh.upperelements)),4:6)))+1+max(max(model.mesh.elements(find(isnan(model.mesh.lowerelements)),1:3)));
+		# triaconnect(1+low_elt_num:num_of_elt,:)=model.mesh.elements(find(isnan(model.mesh.upperelements)),4:6)+upshift;
+		# fprintf(fid,s,[(3)*ones(num_of_elt,1) triaconnect-1]');
+		for elt in range(0, num_of_elt):
+		
+			fid.write('3 %d %d %d\n' %(model.mesh.elements[elt,0]-1,model.mesh.elements[elt,1]-1,model.mesh.elements[elt,2]-1))
+		
+		fid.write('CELL_TYPES %d\n' %num_of_elt)
+		for elt in range(0, num_of_elt):
+			fid.write('%d\n' %celltype)
+
+		fid.write('POINT_DATA %s \n' %str(num_of_points))
+	
+		#loop over the different solution structures
+		if 'solnames' in locals():
+			for sol in solnames:
+				#dealing with results on different timesteps
+				if(numpy.size(res_struct.__dict__[sol])>timestep):
+					timestep = step
+				else:
+					timestep = numpy.size(res_struct.__dict__[sol])
+				
+				#getting the  fields in the solution
+				if(numpy.size(res_struct.__dict__[sol])>1):
+					fieldnames=dict.keys(res_struct.__dict__[sol].__getitem__(timestep-1).__dict__)
+				else:
+					fieldnames=dict.keys(res_struct.__dict__[sol].__dict__)
+				#check which field is a real result and print
+				for field in fieldnames:
+					if(numpy.size(res_struct.__dict__[sol])>1):
+						fieldstruct=res_struct.__dict__[sol].__getitem__(timestep-1).__dict__[field]
+					else:
+						fieldstruct=res_struct.__dict__[sol].__dict__[field]
+
+					if ((numpy.size(fieldstruct))==num_of_points):
+						fid.write('SCALARS %s float 1 \n' % field)
+						fid.write('LOOKUP_TABLE default\n')
+						for node in range(0,num_of_points):
+							#paraview does not like NaN, replacing
+							if numpy.isnan(fieldstruct[node]):
+								fid.write('%e\n' % -9999.9999)
+							#also checking for verry small value that mess up
+							elif (abs(fieldstruct[node])<1.0e-20):
+								fid.write('%e\n' % 0.0)
+							else:
+								fid.write('%e\n' % fieldstruct[node])
+					
+		#loop on arguments, if something other than result is asked, do
+		#it now
+		for other in args:
+			other_struct=model.__dict__[other]
+			othernames=(dict.keys(other_struct.__dict__))
+			for field in othernames:
+#				fprintf(fid,s,res_struct.(fieldnames{k})(IsEnveloppe));
+				if ((numpy.size(other_struct.__dict__[field]))==num_of_points):
+					fid.write('SCALARS %s float 1 \n' % field)
+					fid.write('LOOKUP_TABLE default\n')
+					for node in range(0,num_of_points):
+						#paraview does not like NaN, replacing
+						if numpy.isnan(other_struct.__dict__[field][node]):
+							fid.write('%e\n' % -9999.9999)
+						#also checking for verry small value that mess up
+						elif (abs(other_struct.__dict__[field][node])<1.0e-20):
+							fid.write('%e\n' % 0.0)
+						else:
+							fid.write('%e\n' % other_struct.__dict__[field][node])
+	fid.close();
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/paraview/exportVTK.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/paraview/exportVTK.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/paraview/exportVTK.m	(revision 21239)
@@ -0,0 +1,191 @@
+function exportVTK(filename,model,varargin)
+%EXPORTVTK -  vtk export
+%
+%   function exportVTK(filename,model)
+%   creates a directory with the vtk files for displays in paraview
+%   (only work for triangle and wedges based on their number of nodes)
+%   By default only the results are exported, you can add whichever
+%   field you need as a string:
+%   add 'geometry' to export md.geometry
+%
+%   USAGE:
+%      exportVTK(filename,model,varargin)
+%
+%   EXAMPLE:
+%      exportVTK('ResultSimulation1',md)
+
+[path,name,ext]=fileparts(filename);
+separator=filesep;
+mkdir(filename);
+
+%get the element related variables
+if dimension(model.mesh)==2,
+	points=[model.mesh.x model.mesh.y zeros(model.mesh.numberofvertices,1)];
+else
+	points=[model.mesh.x model.mesh.y model.mesh.z];
+end
+
+[num_of_points,dim]=size(points);
+[num_of_elt]=size(model.mesh.elements,1);
+[point_per_elt]=size(model.mesh.elements,2);
+
+%Select the type of element function of the number of nodes per elements
+if point_per_elt==3;
+	celltype=5; %triangles
+elseif point_per_elt==6;
+	celltype=13; %wedges
+else
+	error('Your Element definition is not taken into account \n');
+end
+
+%this is the result structure
+res_struct=model.results;
+%checking for results
+if (length(fields(res_struct))>0);
+	%Getting all the solutions of the model
+	solnames=fields(res_struct);
+	num_of_sols=length(solnames);
+	num_of_timesteps=1;
+	%building solution structure 
+	for i=1:num_of_sols
+		sol_struct{i}=res_struct.(solnames{i});
+		%looking for multiple time steps
+		if(size(sol_struct{i},2)>num_of_timesteps);
+			num_of_timesteps=size(sol_struct{i},2);
+      outstep=model.timestepping.time_step*model.settings.output_frequency;
+	  end
+  end
+else
+	num_of_timesteps=1;
+end
+for step=1:num_of_timesteps;
+	
+	timestep=step;
+
+	fid = fopen(strcat(path,filesep,name,filesep,'timestep.vtk',int2str(timestep),'.vtk'),'w+');
+	fprintf(fid,'# vtk DataFile Version 2.0 \n');
+	fprintf(fid,'Data for run %s \n',model.miscellaneous.name);
+	fprintf(fid,'ASCII \n');
+	fprintf(fid,'DATASET UNSTRUCTURED_GRID \n');
+	
+	fprintf(fid,'POINTS %d float\n',num_of_points);
+	if(dim==3);
+		s='%f %f %f \n';
+	elseif(dim==2);
+		s='%f %f \n';
+  end
+	P=[points zeros(num_of_points,3-dim)];
+	fprintf(fid,s,P');
+	
+	fprintf(fid,'CELLS %d %d\n',num_of_elt,num_of_elt*(point_per_elt+1));
+	s='%d';
+	for j=1:point_per_elt
+		s=horzcat(s,{' %d'});
+  end
+	s=cell2mat(horzcat(s,{'\n'}));
+		fprintf(fid,s,[(point_per_elt)*ones(num_of_elt,1)	model.mesh.elements-1]');
+	
+	fprintf(fid,'CELL_TYPES %d\n',num_of_elt);
+	s='%d\n';
+	fprintf(fid,s,celltype*ones(num_of_elt,1));
+	fprintf(fid,'POINT_DATA %s \n',num2str(num_of_points));
+
+	%loop over the different solution structures
+	if (exist('num_of_sols'));
+		for j=1:num_of_sols
+			%dealing with results on different timesteps
+			if(size(sol_struct{j},2)>timestep);
+				timestep = step;
+			else
+				timestep = size(sol_struct{j},2);
+	    end
+			
+			%getting the number of fields in the solution
+			fieldnames=fields(sol_struct{j}(timestep));
+			num_of_fields=length(fieldnames);
+			
+			%check which field is a real result and print
+			for k=1:num_of_fields
+				if ((numel(sol_struct{j}(timestep).(fieldnames{k})))==num_of_points);
+					%paraview does not like NaN, replacing
+					nanval=find(isnan(sol_struct{j}(timestep).(fieldnames{k})));
+					sol_struct{j}(timestep).(fieldnames{k})(nanval)=-9999;
+					%also checking for verry small value that mess up
+					smallval=(abs(sol_struct{j}(timestep).(fieldnames{k}))<1.0e-20);
+					sol_struct{j}(timestep).(fieldnames{k})(smallval)=0.0;
+					fprintf(fid,'SCALARS %s float 1 \n',fieldnames{k});
+					fprintf(fid,'LOOKUP_TABLE default\n');
+					s='%e\n';
+					fprintf(fid,s,sol_struct{j}(timestep).(fieldnames{k}));
+		    end		
+	    end 
+	  end
+  end
+	%loop on arguments, if something other than result is asked, do
+	%it now
+	for j= 1:nargin-2
+		res_struct=model.(varargin{j});
+		fieldnames=fields(res_struct);
+		num_of_fields=length(fieldnames);
+		for k=1:num_of_fields
+			if ((numel(res_struct.(fieldnames{k})))==num_of_points);
+				%paraview does not like NaN, replacing
+				nanval=find(isnan(res_struct.(fieldnames{k})));
+				res_struct.(fieldnames{k})(nanval)=-9999;
+				%also checking for verry small value that mess up
+				smallval=(abs(res_struct.(fieldnames{k}))<1.0e-20);
+				res_struct.(fieldnames{k})(smallval)=0.0;
+				fprintf(fid,'SCALARS %s float 1 \n',fieldnames{k});
+				fprintf(fid,'LOOKUP_TABLE default\n');
+				s='%e\n';
+				fprintf(fid,s,res_struct.(fieldnames{k}));
+				%check for forcings	
+			elseif (size(res_struct.(fieldnames{k}),1)==num_of_points+1);
+				%paraview does not like NaN, replacing
+				nanval=find(isnan(res_struct.(fieldnames{k})));
+				res_struct.(fieldnames{k})(nanval)=-9999;
+				%also checking for verry small value that mess up
+				smallval=(abs(res_struct.(fieldnames{k}))<1.0e-20);
+				res_struct.(fieldnames{k})(smallval)=0.0;
+				if (size(res_struct.(fieldnames{k}),2)==num_of_timesteps),
+					fprintf(fid,'SCALARS %s float 1 \n',fieldnames{k});
+					fprintf(fid,'LOOKUP_TABLE default\n');
+					s='%e\n';
+					fprintf(fid,s,res_struct.(fieldnames{k})(1:end-1,timestep));
+				else,
+					%forcing and results not on the same timestep,need some treatment
+					fprintf(fid,'SCALARS %s float 1 \n',fieldnames{k});
+					fprintf(fid,'LOOKUP_TABLE default\n');
+					index=1;
+					currenttime=((timestep-1)*outstep)+model.timestepping.start_time;
+					while (res_struct.(fieldnames{k})(end,index)<=currenttime);
+						if index==size(res_struct.(fieldnames{k}),2)
+							break
+						end	
+						index=index+1;
+		      end
+					uptime=res_struct.(fieldnames{k})(end,index);
+					uplim=res_struct.(fieldnames{k})(1:end-1,index);
+					while (res_struct.(fieldnames{k})(end,index)>=currenttime);
+						if index==1
+							break
+			      end
+						index=index-1;
+		      end
+					lowtime=res_struct.(fieldnames{k})(end,index);
+					lowlim=res_struct.(fieldnames{k})(1:end-1,index);
+					if uptime==currenttime,
+						interp=uplim;
+					elseif lowtime==currenttime,
+						interp=lowlim;
+					else
+						interp=lowlim+(uplim-lowlim)*((currenttime-lowtime)/(uptime-lowtime));
+					end
+					s='%e\n';
+					fprintf(fid,s,interp);
+				end
+		  end		
+		end 
+	end
+	fclose(fid);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/paraview/exportVTK.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/paraview/exportVTK.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/defleurian/paraview/exportVTK.py	(revision 21239)
@@ -0,0 +1,162 @@
+import numpy
+import os
+import model
+import glob
+def exportVTK(filename,model,*args):
+	'''
+	vtk export
+	function exportVTK(filename,model)
+	creates a directory with the vtk files for displays in paraview
+	(only work for triangle and wedges based on their number of nodes)
+	
+	Give only the results for nw but could be extended to geometry, mask... 
+	
+	input: filename   destination 
+	(string)
+	------------------------------------------------------------------
+model      this is md 
+	------------------------------------------------------------------
+	By default only the results are exported, you can add whichever
+	field you need as a string:
+	add 'geometry' to export md.geometry
+
+	Basile de Fleurian:
+	'''
+	Dir=os.path.basename(filename)
+	Path=filename[:-len(Dir)]
+
+	if os.path.exists(filename):
+		print ('File {} allready exist'.format(filename))
+		newname=raw_input('Give a new name or "delete" to replace: ')
+		if newname=='delete':
+			filelist = glob.glob(filename+'/*')
+			for oldfile in filelist:
+				os.remove(oldfile)
+		else:
+			print ('New file name is {}'.format(newname))
+			filename=newname
+			os.mkdir(filename)
+	else:
+		os.mkdir(filename)
+
+	#get the element related variables
+	if 'z' in dict.keys(model.mesh.__dict__):
+		points=numpy.column_stack((model.mesh.x,model.mesh.y,model.mesh.z))
+		dim=3
+	else:
+		points=numpy.column_stack((model.mesh.x,model.mesh.y,numpy.zeros(numpy.shape(model.mesh.x))))
+		dim=2
+
+	num_of_points=numpy.size(model.mesh.x)
+	num_of_elt=numpy.shape(model.mesh.elements)[0]
+	point_per_elt=numpy.shape(model.mesh.elements)[1]
+		
+	#Select the type of element function of the number of nodes per elements
+	if point_per_elt==3:
+		celltype=5 #triangles
+	elif point_per_elt==6:
+		celltype=13 #wedges
+	else:
+		error('Your Element definition is not taken into account \n')
+
+	#this is the result structure
+	res_struct=model.results
+	if (len(res_struct.__dict__)>0):
+		#Getting all the solutions of the model
+		solnames=(dict.keys(res_struct.__dict__))
+		num_of_sols=len(solnames)
+		num_of_timesteps=1
+		#%building solutionstructure 
+		for solution in solnames:
+			#looking for multiple time steps
+			if (numpy.size(res_struct.__dict__[solution])>num_of_timesteps):
+				num_of_timesteps=numpy.size(res_struct.__dict__[solution])
+				num_of_timesteps=int(num_of_timesteps)
+	else:
+		num_of_timesteps=1
+
+	for step in range(0,num_of_timesteps):
+		timestep=step
+		fid=open((filename +'/Timestep.vtk'+str(timestep)+'.vtk'),'w+')
+		fid.write('# vtk DataFile Version 2.0 \n')
+		fid.write('Data for run %s \n' % model.miscellaneous.name)
+		fid.write('ASCII \n')
+		fid.write('DATASET UNSTRUCTURED_GRID \n')
+		fid.write('POINTS %d float\n' % num_of_points)
+		if(dim==3):
+			for point in points:
+				fid.write('%f %f %f \n'%(point[0], point[1], point[2]))
+		elif(dim==2):
+			for point in points:
+				fid.write('%f %f %f \n'%(point[0], point[1], point[2]))
+			
+		fid.write('CELLS %d %d\n' %(num_of_elt, num_of_elt*(point_per_elt+1)))
+		
+		if point_per_elt==3:
+			for elt in range(0, num_of_elt):
+				fid.write('3 %d %d %d\n' %(model.mesh.elements[elt,0]-1,model.mesh.elements[elt,1]-1,model.mesh.elements[elt,2]-1))
+		elif point_per_elt==6:
+			for elt in range(0, num_of_elt):
+				fid.write('6 %d %d %d %d %d %d\n' %(model.mesh.elements[elt,0]-1,model.mesh.elements[elt,1]-1,model.mesh.elements[elt,2]-1,model.mesh.elements[elt,3]-1,model.mesh.elements[elt,4]-1,model.mesh.elements[elt,5]-1))
+		else:
+			print 'Number of nodes per element not supported'
+
+		fid.write('CELL_TYPES %d\n' %num_of_elt)
+		for elt in range(0, num_of_elt):
+			fid.write('%d\n' %celltype)
+
+		fid.write('POINT_DATA %s \n' %str(num_of_points))
+	
+		#loop over the different solution structures
+		if 'solnames' in locals():
+			for sol in solnames:
+				#dealing with results on different timesteps
+				if(numpy.size(res_struct.__dict__[sol])>timestep):
+					timestep = step
+				else:
+					timestep = numpy.size(res_struct.__dict__[sol])
+				
+				#getting the  fields in the solution
+				if(numpy.size(res_struct.__dict__[sol])>1):
+					fieldnames=dict.keys(res_struct.__dict__[sol].__getitem__(timestep).__dict__)
+				else:
+					fieldnames=dict.keys(res_struct.__dict__[sol].__dict__)
+				#check which field is a real result and print
+				for field in fieldnames:
+					if(numpy.size(res_struct.__dict__[sol])>1):
+						fieldstruct=res_struct.__dict__[sol].__getitem__(timestep).__dict__[field]
+					else:
+						fieldstruct=res_struct.__dict__[sol].__dict__[field]
+
+					if ((numpy.size(fieldstruct))==num_of_points):
+						fid.write('SCALARS %s float 1 \n' % field)
+						fid.write('LOOKUP_TABLE default\n')
+						for node in range(0,num_of_points):
+							#paraview does not like NaN, replacing
+							if numpy.isnan(fieldstruct[node]):
+								fid.write('%e\n' % -9999.9999)
+							#also checking for verry small value that mess up
+							elif (abs(fieldstruct[node])<1.0e-20):
+								fid.write('%e\n' % 0.0)
+							else:
+								fid.write('%e\n' % fieldstruct[node])
+					
+		#loop on arguments, if something other than result is asked, do
+		#it now
+		for other in args:
+			other_struct=model.__dict__[other]
+			othernames=(dict.keys(other_struct.__dict__))
+			for field in othernames:
+				if ((numpy.size(other_struct.__dict__[field]))==num_of_points):
+					fid.write('SCALARS %s float 1 \n' % field)
+					fid.write('LOOKUP_TABLE default\n')
+					for node in range(0,num_of_points):
+						#paraview does not like NaN, replacing
+						if numpy.isnan(other_struct.__dict__[field][node]):
+							fid.write('%e\n' % -9999.9999)
+						#also checking for verry small value that mess up
+						elif (abs(other_struct.__dict__[field][node])<1.0e-20):
+							fid.write('%e\n' % 0.0)
+						else:
+							fid.write('%e\n' % other_struct.__dict__[field][node])
+	fid.close();
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/ecco/MeltingGroundingLines.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/ecco/MeltingGroundingLines.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/ecco/MeltingGroundingLines.m	(revision 21239)
@@ -0,0 +1,26 @@
+function md=MeltingGroundingLines(md,distance,value)
+%MELTINGGROUNDINGLINES - set melting near grounding lines to a constant value
+%
+%   Usage:
+%      md=MeltingGroundingLines(md,distance,value)
+%
+
+%get nodes on ice sheet and on ice shelf
+pos_shelf=find(md.mask.groundedice_levelset<0.);
+pos_GL=intersect(unique(md.mesh.elements(find(md.mask.elementongroundedice),:)),unique(md.mesh.elements(find(md.mask.elementonfloatingice),:)));
+
+for i=1:length(pos_shelf)
+
+	if (mod(i,100)==0),
+		fprintf('\b\b\b\b\b\b\b%5.2f%s',i/length(pos_shelf)*100,' %');
+	end
+
+	%search the node on ice sheet the closest to i
+	[d posd]=min(sqrt((md.mesh.x(pos_shelf(i))-md.mesh.x(pos_GL)).^2+(md.mesh.y(pos_shelf(i))-md.mesh.y(pos_GL)).^2));
+
+	if d<distance,
+
+		md.melting(pos_shelf(i))=value;
+
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/ecco/PropagateFlagsUntilDistance.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/ecco/PropagateFlagsUntilDistance.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/ecco/PropagateFlagsUntilDistance.m	(revision 21239)
@@ -0,0 +1,60 @@
+function new_flags=PropagateFlagsUntilDistance(md,flags,distance)
+%PROPAGATEFLAGSUNTILDISTANCE
+%
+% Usage: 
+%              flags=PropagateFlagsUntilDistance(md,flags,distance)
+%
+%
+
+new_flags=flags;
+
+%make 3d work in 2d: 
+if dimension(md.mesh)==3,
+	md.mesh.x=md.mesh.x2d;
+	md.mesh.y=md.mesh.y2d;
+	md.mesh.elements=md.mesh.elements2d;
+end
+
+%find elements that are at the border of flags: 
+flag_elements=find(flags);
+conn=md.mesh.elementconnectivity(flag_elements,:);
+pos=find(conn);conn(pos)=~flags(conn(pos));
+sum_conn=sum(conn,2);
+border_elements=flag_elements(find(sum_conn>=1));
+
+%average x and y over elements: 
+x_elem=md.mesh.x(md.mesh.elements)*[1;1;1]/3;
+y_elem=md.mesh.y(md.mesh.elements)*[1;1;1]/3;
+
+while 1,
+
+	%keep copy of new_flags for this loop: 
+	new_flags_bak=new_flags;
+
+	%extend new flags by connectivity
+	pos=find(new_flags);
+
+	connected_elements=md.mesh.elementconnectivity(pos,:);
+	connected_elements=connected_elements(find(connected_elements));
+	new_flags(connected_elements)=1;
+
+	%get new elements: 
+	new_elements=find(new_flags & ~new_flags_bak);
+	if ~length(new_elements),
+		%we are done!
+		break;
+	end
+
+	%check which of these new elements are more than distance away from the border elements
+	for i=1:length(new_elements),
+		dist=sqrt(     (x_elem(border_elements)-x_elem(new_elements(i))).^2 + (y_elem(border_elements)-y_elem(new_elements(i))).^2)-distance;
+		if ~any(dist<0)
+			%none of the border elements are within distance, this element is outside out area of interest.
+			%ensure this element never gets found again in the connectivity.
+			pos=find(md.mesh.elementconnectivity==new_elements(i));
+			md.mesh.elementconnectivity(pos)=0;
+			%exclude this new element from the new_flags!
+			new_flags(new_elements(i))=0;
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/ecco/ecco32issm.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/ecco/ecco32issm.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/ecco/ecco32issm.m	(revision 21239)
@@ -0,0 +1,8 @@
+function nodefield=ecco32issm(field,transition,xecco3,yecco3)
+
+	xecco3linear=xecco3(:); yecco3linear=yecco3(:); %linearize
+	nodefieldlinear=zeros(length(xecco3linear),1);
+	nodefieldlinear(transition(:,1))=field(transition(:,2));
+	nodefield=xecco3;
+	nodefield(:)=nodefieldlinear;
+	%nodefield=nodefield'; %not sure we need that
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/ecco/issm2ecco3.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/ecco/issm2ecco3.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/ecco/issm2ecco3.m	(revision 21239)
@@ -0,0 +1,8 @@
+function nodefield=issm2ecco3(field,transition,xecco3,yecco3)
+
+	xecco3linear=xecco3(:); yecco3linear=yecco3(:); %linearize
+	nodefieldlinear=zeros(length(xecco3linear),1);
+	nodefieldlinear(transition(:,1))=field(transition(:,2));
+	nodefield=xecco3;
+	nodefield(:)=nodefieldlinear;
+	%nodefield=nodefield'; %not sure we need that
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/aggregation.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/aggregation.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/aggregation.m	(revision 21239)
@@ -0,0 +1,64 @@
+function [mask,varargout]=aggregation(mask,windowsize,threshhold,varargin)
+%AGGREGATION - aggregation of an image to a lower sized image
+% 
+%  mask is an image of arbitrary size, format binary, with values 1 for foreground, and 0 for background
+%  mask is first convoluted with a square matrix of size windowsize (where windowsize is an even number), 
+%       it is then filtered according to the threshhold value, and finally subsampled using 1/windowsize as 
+%       sample scaling. 
+%  x,y can be provided as optional arguments, as coordinates of the center points of the mask. aggregation will 
+%       then return subsampled x,y arguments in output.
+% 
+%  Usage:   mask2=aggregation(mask,7,7^2/2);
+%           [mask2,x2,y2]=aggregation(mask,7,7^2,x,y];
+%
+%  See also CLOSING, OPENING, DILATION, EROSION
+
+%check input arguments  %{{{
+%even windowsize
+if mod(windowsize,2)==0,
+	error('windowsize should be an even number');
+end
+
+%check on presence of varargin: 
+optional=0;
+if nargin>3,
+	if nargin~=5,
+		help aggregation;
+		error('wrong number of optional arguments specified');
+	else
+		optional=1;
+		x=varargin{1};
+		y=varargin{2};
+	end
+end
+
+%check on presence of varargout: 
+if optional,
+	if nargout~=3,
+		help aggregation;
+		error('wrong number of optional output arguments specified');
+	end
+end
+%}}}
+
+%convolve mask
+matrix=ones(windowsize,windowsize); 
+mask=filter2(matrix,mask,'same');
+
+%apply threshhold
+pos=find(mask>threshhold); 
+pos2=find(mask<=threshhold); 
+mask(pos)=1;
+mask(pos2)=0;
+
+%mask has been transformed into double format from the filter2  operation. Bring back to binary. 
+mask=logical(mask);
+
+%subsample: 
+s=size(mask);
+mask=mask(1:windowsize:s(1),1:windowsize:s(2));
+
+if optional,
+	varargout{1}=x(1:windowsize:s(2));
+	varargout{2}=y(1:windowsize:s(1));
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/closing.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/closing.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/closing.m	(revision 21239)
@@ -0,0 +1,5 @@
+function mask=closing(mask,neighboorhood)
+%closing algorithm using neighboorhood pixel neighboors.
+
+mask=dilation(mask,neighboorhood);
+mask=erosion(mask,neighboorhood);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/dilation.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/dilation.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/dilation.m	(revision 21239)
@@ -0,0 +1,25 @@
+function mask=dilation(mask,neighboorhood)
+%deletion algorithm using 4 pixel neighboors.
+
+%convolve: 
+
+matrix=ones(3,3); 
+
+%4 neighboorhood: 
+%corners
+if neighboorhood==4,
+	matrix(1,1)=0;
+	matrix(1,3)=0;
+	matrix(3,1)=0;
+	matrix(3,3)=0;
+end
+%center
+matrix(2,2)=0;
+
+%convolve mask: 
+convol=filter2(matrix,mask,'same');
+
+pos=find(mask==0);
+pos2=find(convol(pos)~=0);
+
+mask(pos(pos2))=1;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/erosion.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/erosion.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/erosion.m	(revision 21239)
@@ -0,0 +1,26 @@
+function mask=erosion(mask,neighboorhood)
+%erosion algorithm using neighboorhood pixel neighboors.
+
+%convolve: 
+
+matrix=ones(3,3); 
+
+%4 neighboorhood: 
+%corners
+if neighboorhood==4,
+	matrix(1,1)=0;
+	matrix(1,3)=0;
+	matrix(3,1)=0;
+	matrix(3,3)=0;
+end
+
+%center
+matrix(2,2)=0;
+
+%convolve mask: 
+convol=filter2(matrix,mask,'same');
+
+pos=find(mask==1);
+pos2=find(convol(pos)<neighboorhood);
+
+mask(pos(pos2))=0;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/nunataks.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/nunataks.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/nunataks.m	(revision 21239)
@@ -0,0 +1,20 @@
+function [mask]=nunataks(mask)
+%NUNATAKS - bias mask towards increased 0 coverage
+% 
+%  mask is an image of arbitrary size, format binary, with values 1 for foreground, and 0 for background
+% 
+%  Usage:   mask=nunataks(mask)
+%           [mask]=aggregation(mask);
+%
+%  See also CLOSING, OPENING, DILATION, EROSION, AGGREGATION
+
+rocks=~mask;
+
+%matrices for convolution: 
+matrix=[0 1 0; 1 0 1; 0 1 0];
+
+%do not exist, i.e. locations that stand pretty much alone. 
+mask=filter2(matrix1,mask,'same');
+pos=find(~crocks & rocks);
+
+mask(pos)=0;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/opening.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/opening.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/opening.m	(revision 21239)
@@ -0,0 +1,5 @@
+function mask=opening(mask,neighboorhood)
+%opening algorithm using neighboorhood pixel neighboors.
+
+mask=erosion(mask,neighboorhood);
+mask=dilation(mask,neighboorhood);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/vectorialize.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/vectorialize.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/morphological/vectorialize.m	(revision 21239)
@@ -0,0 +1,11 @@
+function contours=vectorialize(mask,connectivity);
+
+	vec=bwboundaries(mask,connectivity);
+
+	contours=struct([]);
+	for i=1:length(vec),
+		contours(end+1).x=vec{i}(:,2);
+		contours(end).y=vec{i}(:,1);
+		contours(end).density=1;
+	end
+	contours(1).name='';
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/resultstomatrix.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/resultstomatrix.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/larour/resultstomatrix.m	(revision 21239)
@@ -0,0 +1,64 @@
+function matrix=resultstomatrix(md,resultname,field,varargin)
+%RESULTSTOMATRIX - go grab in the model results structure the vector results for each time step (which is not empty), 
+%                  and line them up in a matrix.  If time vector is provided, resample.
+%
+%   Usage:
+%      matrix=resultstomatrix(model,solutioname,fieldname)
+%
+%   Available options:
+%      - 'time'     : vector providing new time tags used to resample time
+%
+%   Example:
+%      vel=resultstomatrix(md,'TransientSolution','Vel');
+%      vel=resultstomatrix(md,'TransientSolution','Vel','time',2008:1/12:2014);
+%
+%   See also MODEL  resample
+
+
+	options=pairoptions(varargin{:});
+
+	results=md.results.(resultname);
+
+	%first, figure out the size: 
+	count=0;
+	nods=0;
+	for i=1:length(results),
+		if ~isempty(results(i).(field)),
+			count=count+1;
+			nods=size(results(i).(field),1);
+		end
+	end
+
+	if ~count, 
+		error(['could not find any result ' field ' in ' resultname]);
+	end
+
+	%initialize: 
+	matrix=zeros(nods+1,count);
+
+	%fill it up: 
+	count=0;
+	for i=1:length(results),
+		if ~isempty(results(i).(field)),
+			count=count+1;
+			matrix(1:end-1,count)=results(i).(field);
+			matrix(end,count)=results(i).time;
+		end
+	end
+
+	newtime=getfieldvalue(options,'time',[]);
+	if ~isempty(newtime),
+		newmatrix=zeros(nods+1,length(newtime));
+		newmatrix(end,:)=newtime;
+		%we are asked to reinterpolate to this new time: 
+
+		for i=1:nods,
+			warning off;
+			ts=timeseries(matrix(i,:), matrix(end,:));
+			ts=resample(ts,newtime);
+			warning on;
+			newmatrix(i,:)=ts.Data;
+		end
+
+		matrix=newmatrix;
+	end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/BamgCall.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/BamgCall.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/BamgCall.m	(revision 21239)
@@ -0,0 +1,79 @@
+function md=BamgCall(md,field,hmin,hmax,gradation,epsilon),
+%BAMGCALL - call bam
+%
+%   build a metric using the Hessian of the given field
+%   call Bamg and the output mesh is plugged onto the model
+%   -hmin = minimum edge length (m)
+%   -hmax = maximum edge length (m)
+%   -gradation = maximum edge length gradation between 2 elements
+%   -epsilon = average error on each element (m/yr)
+%
+%   Usage:
+%      md=BamgCall(md,field,hmin,hmax,gradation,epsilon);
+%
+%   Example:
+%      md=BamgCall(md,md.inversion.vel_obs,1500,10^8,1.3,0.9);
+
+%2d geometric parameter (do not change)
+scale=2/9; 
+
+%Compute Hessian
+t1=clock; fprintf('%s','      computing Hessian...');
+hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,field,'node');
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%Compute metric
+t1=clock; fprintf('%s','      computing metric...');
+metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,[]);
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%write files
+t1=clock; fprintf('%s','      writing initial mesh files...');
+fid=fopen('carre0.met','w');
+fprintf(fid,'%i %i\n',md.mesh.numberofvertices,3);
+fprintf(fid,'%i %i %i\n',metric');
+fclose(fid);
+
+fid=fopen('carre0.mesh','w');
+
+%initialiation
+fprintf(fid,'%s %i\n','MeshVersionFormatted',0);
+
+%dimension
+fprintf(fid,'\n%s\n%i\n','Dimension',2);
+
+%Vertices
+fprintf(fid,'\n%s\n%i\n\n','Vertices',md.mesh.numberofvertices);
+fprintf(fid,'%8g %8g %i\n',[md.mesh.x md.mesh.y ones(md.mesh.numberofvertices,1)]');
+
+%Triangles
+fprintf(fid,'\n\n%s\n%i\n\n','Triangles',md.mesh.numberofelements);
+fprintf(fid,'%i %i %i %i\n',[md.mesh.elements ones(md.mesh.numberofelements,1)]');
+numberofelements1=md.mesh.numberofelements;
+
+%close
+fclose(fid);
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%call bamg
+fprintf('%s\n','      call Bamg...');
+system(['bamg -ratio ' num2str(gradation) ' -splitpbedge -nbv 1000000 -M carre0.met -b carre0.mesh -o carre1.mesh']);
+
+%plug new mesh
+t1=clock; fprintf('\n%s','      reading final mesh files...');
+A=meshread('carre1.mesh');
+md.mesh.x=A.x;
+md.mesh.y=A.y;
+md.z=zeros(A.nods,1);
+md.mesh.elements=A.index;
+md.mesh.numberofvertices=A.nods;
+md.mesh.numberofelements=A.nels;
+numberofelements2=md.mesh.numberofelements;
+t2=clock;fprintf('%s\n\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%display number of elements
+fprintf('\n%s %i','      inital number of elements:',numberofelements1);
+fprintf('\n%s %i\n\n','      new    number of elements:',numberofelements2);
+
+%clean up:
+system('rm carre0.mesh carre0.met carre1.mesh carre1.mesh.gmsh');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/BamgCallFromMetric.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/BamgCallFromMetric.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/BamgCallFromMetric.m	(revision 21239)
@@ -0,0 +1,65 @@
+function md=BamgCallFromMetric(md,metric,gradation),
+%BAMGCALL - call bam
+%
+%   call Bamg and the output mesh is plugged onto the model
+%   -gradation = maximum edge length gradation between 2 elements
+%
+%   Usage:
+%      md=BamgCallFromMetric(md,metric,gradation);
+%
+%   Example:
+%      md=BamgCall(md,metric,1500,10^8,1.3,0.9);
+
+%2d geometric parameter (do not change)
+scale=2/9; 
+
+%write files
+t1=clock; fprintf('%s','      writing initial mesh files...');
+fid=fopen('carre0.met','w');
+fprintf(fid,'%i %i\n',md.mesh.numberofvertices,3);
+fprintf(fid,'%i %i %i\n',metric');
+fclose(fid);
+
+fid=fopen('carre0.mesh','w');
+
+%initialiation
+fprintf(fid,'%s %i\n','MeshVersionFormatted',0);
+
+%dimension
+fprintf(fid,'\n%s\n%i\n','Dimension',2);
+
+%Vertices
+fprintf(fid,'\n%s\n%i\n\n','Vertices',md.mesh.numberofvertices);
+fprintf(fid,'%8g %8g %i\n',[md.mesh.x md.mesh.y ones(md.mesh.numberofvertices,1)]');
+
+%Triangles
+fprintf(fid,'\n\n%s\n%i\n\n','Triangles',md.mesh.numberofelements);
+fprintf(fid,'%i %i %i %i\n',[md.mesh.elements ones(md.mesh.numberofelements,1)]');
+numberofelements1=md.mesh.numberofelements;
+
+%close
+fclose(fid);
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%call bamg
+fprintf('%s\n','      call Bamg...');
+system(['bamg -ratio ' num2str(gradation) ' -splitpbedge -nbv 1000000 -M carre0.met -b carre0.mesh -o carre1.mesh']);
+
+%plug new mesh
+t1=clock; fprintf('\n%s','      reading final mesh files...');
+A=meshread('carre1.mesh');
+md.mesh.x=A.x;
+md.mesh.y=A.y;
+md.z=zeros(A.nods,1);
+md.mesh.elements=A.index;
+md.mesh.numberofvertices=A.nods;
+md.mesh.numberofelements=A.nels;
+numberofelements2=md.mesh.numberofelements;
+t2=clock;fprintf('%s\n\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%display number of elements
+fprintf('\n%s %i','      inital number of elements:',numberofelements1);
+fprintf('\n%s %i\n\n','      new    number of elements:',numberofelements2);
+
+%clean up:
+system('rm carre0.mesh carre0.met carre1.mesh carre1.mesh.gmsh');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/YamsCall.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/YamsCall.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/YamsCall.m	(revision 21239)
@@ -0,0 +1,98 @@
+function md=YamsCall(md,field,hmin,hmax,gradation,epsilon),
+%YAMSCALL - call yams
+%
+%   build a metric using the Hessian of the given field
+%   call Yams and the output mesh is plugged onto the model
+%   -hmin = minimum edge length (m)
+%   -hmax = maximum edge length (m)
+%   -gradation = maximum edge length gradation between 2 elements
+%   -epsilon = average error on each element (m/yr)
+%
+%   Usage:
+%      md=YamsCall(md,field,hmin,hmax,gradation,epsilon);
+%
+%   Example:
+%      md=YamsCall(md,md.inversion.vel_obs,1500,10^8,1.3,0.9);
+
+%2d geometric parameter (do not change)
+scale=2./9.;
+
+%Compute Hessian
+t1=clock; fprintf('%s','      computing Hessian...');
+hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,field,'node');
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%Compute metric
+t1=clock; fprintf('%s','      computing metric...');
+metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,[]);
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%write files
+t1=clock; fprintf('%s','      writing initial mesh files...');
+save -ascii carre0.met  metric
+
+fid=fopen('carre0.mesh','w');
+
+%initialiation
+fprintf(fid,'\n%s\n%i\n','MeshVersionFormatted',1);
+
+%dimension
+fprintf(fid,'\n%s\n%i\n','Dimension',2);
+
+%Vertices
+fprintf(fid,'\n%s\n%i\n\n','Vertices',md.mesh.numberofvertices);
+fprintf(fid,'%8g %8g %i\n',[md.mesh.x md.mesh.y zeros(md.mesh.numberofvertices,1)]');
+
+%Triangles
+fprintf(fid,'\n\n%s\n%i\n\n','Triangles',md.mesh.numberofelements);
+fprintf(fid,'%i %i %i %i\n',[md.mesh.elements zeros(md.mesh.numberofelements,1)]');
+numberofelements1=md.mesh.numberofelements;
+
+%Deal with rifts
+if ~isnan(md.rifts.riftstruct),
+
+	%we have the list of triangles that make up the rift. keep those triangles around during refinement.
+	triangles=[];
+	for i=1:size(md.rifts.riftstruct,1),
+		triangles=[triangles md.rifts(i).riftstruct.segments(:,3)'];
+	end
+
+	fprintf(fid,'\n\n%s\n%i\n\n','RequiredTriangles',length(triangles));
+	fprintf(fid,'%i\n',triangles);
+end
+
+%close
+fclose(fid);
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%call yams
+fprintf('%s\n','      call Yams...');
+if ispc()
+	%windows
+	system(['yams2-win -O 1 -v -0 -ecp -hgrad ' num2str(gradation)  ' carre0 carre1']);
+elseif ismac()
+	%Macosx
+	system(['yams2-osx -O 1 -v -0 -ecp -hgrad ' num2str(gradation)  ' carre0 carre1']);
+else
+	%Linux
+	system(['yams2-linux -O 1 -v -0 -ecp -hgrad ' num2str(gradation)  ' carre0 carre1']);
+end
+
+%plug new mesh
+t1=clock; fprintf('\n%s','      reading final mesh files...');
+Tria=load('carre1.tria');
+Coor=load('carre1.coor');
+md.mesh.x=Coor(:,1);
+md.mesh.y=Coor(:,2);
+md.mesh.elements=Tria;
+md.mesh.numberofvertices=size(Coor,1);
+md.mesh.numberofelements=size(Tria,1);
+numberofelements2=md.mesh.numberofelements;
+t2=clock;fprintf('%s\n\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%display number of elements
+fprintf('\n%s %i','      inital number of elements:',numberofelements1);
+fprintf('\n%s %i\n\n','      new    number of elements:',numberofelements2);
+
+%clean up:
+system('rm carre0.mesh carre0.met carre1.tria carre1.coor carre1.meshb');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/YamsCall.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/YamsCall.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/YamsCall.py	(revision 21239)
@@ -0,0 +1,123 @@
+import numpy
+import time
+import subprocess
+import os
+from ComputeHessian import ComputeHessian
+from ComputeMetric import ComputeMetric
+
+def YamsCall(md,field,hmin,hmax,gradation,epsilon):
+	"""
+	YAMSCALL - call yams
+
+	   build a metric using the Hessian of the given field
+	   call Yams and the output mesh is plugged onto the model
+	   -hmin = minimum edge length (m)
+	   -hmax = maximum edge length (m)
+	   -gradation = maximum edge length gradation between 2 elements
+	   -epsilon = average error on each element (m/yr)
+
+	   Usage:
+	      md=YamsCall(md,field,hmin,hmax,gradation,epsilon);
+
+	   Example:
+	      md=YamsCall(md,md.inversion.vel_obs,1500,10^8,1.3,0.9);
+	"""
+
+	#2d geometric parameter (do not change)
+	scale=2./9.
+
+	#Compute Hessian
+	t1=time.time()
+	print "%s" % '      computing Hessian...'
+	hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,field,'node')
+	t2=time.time()
+	print "%s%d%s\n" % (' done (',t2-t1,' seconds)')
+
+	#Compute metric
+	t1=time.time()
+	print "%s" % '      computing metric...'
+	metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,numpy.empty(0,int))
+	t2=time.time()
+	print "%s%d%s\n" % (' done (',t2-t1,' seconds)')
+
+	#write files
+	t1=time.time()
+	print "%s" % '      writing initial mesh files...'
+	numpy.savetxt('carre0.met',metric)
+
+	f=open('carre0.mesh','w')
+
+	#initialiation
+	f.write("\n%s\n%i\n" % ('MeshVersionFormatted',1))
+
+	#dimension
+	f.write("\n%s\n%i\n" % ('Dimension',2))
+
+	#Vertices
+	f.write("\n%s\n%i\n\n" % ('Vertices',md.mesh.numberofvertices))
+	for i in xrange(0,md.mesh.numberofvertices):
+		f.write("%8g %8g %i\n" % (md.mesh.x[i],md.mesh.y[i],0))
+
+	#Triangles
+	f.write("\n\n%s\n%i\n\n" % ('Triangles',md.mesh.numberofelements))
+	for i in xrange(0,md.mesh.numberofelements):
+		f.write("%i %i %i %i\n" % (md.mesh.elements[i,0],md.mesh.elements[i,1],md.mesh.elements[i,2],0))
+	numberofelements1=md.mesh.numberofelements
+
+	#Deal with rifts
+	if numpy.any(not numpy.isnan(md.rifts.riftstruct)):
+
+		#we have the list of triangles that make up the rift. keep those triangles around during refinement.
+		triangles=numpy.empty(0,int)
+		for riftstruct in md.rifts.riftstruct:
+			triangles=numpy.concatenate((triangles,riftstruct.segments[:,2]))
+
+		f.write("\n\n%s\n%i\n\n" % ('RequiredTriangles',numpy.size(triangles)))
+		for triangle in triangles:
+			f.write("%i\n" % triangle)
+
+	#close
+	f.close()
+	t2=time.time()
+	print "%s%d%s\n" % (' done (',t2-t1,' seconds)')
+
+	#call yams
+	print "%s\n" % '      call Yams...'
+	if   m.ispc():
+		#windows
+		subprocess.call('yams2-win -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
+	elif ismac():
+		#Macosx
+		subprocess.call('yams2-osx -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
+	else:
+		#Linux
+		subprocess.call('yams2-linux -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
+
+	#plug new mesh
+	t1=time.time()
+	print "\n%s" % '      reading final mesh files...'
+	Tria=numpy.loadtxt('carre1.tria',int)
+	Coor=numpy.loadtxt('carre1.coor',float)
+	md.mesh.x=Coor[:,0]
+	md.mesh.y=Coor[:,1]
+	md.mesh.z=numpy.zeros((numpy.size(Coor,axis=0),1))
+	md.mesh.elements=Tria
+	md.mesh.numberofvertices=numpy.size(Coor,axis=0)
+	md.mesh.numberofelements=numpy.size(Tria,axis=0)
+	numberofelements2=md.mesh.numberofelements
+	t2=time.time()
+	print "%s%d%s\n\n" % (' done (',t2-t1,' seconds)')
+
+	#display number of elements
+	print "\n%s %i" % ('      inital number of elements:',numberofelements1)
+	print "\n%s %i\n\n" % ('      new    number of elements:',numberofelements2)
+
+	#clean up:
+	os.remove('carre0.mesh')
+	os.remove('carre0.met')
+	os.remove('carre1.tria')
+	os.remove('carre1.coor')
+	os.remove('carre1.meshb')
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/gmsh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/gmsh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/gmsh.m	(revision 21239)
@@ -0,0 +1,48 @@
+function md=gmsh(md,domainfile,h),
+
+%Read domain
+domain=expread(domainfile);
+x   = domain.x(1:end-1);
+y   = domain.y(1:end-1);
+nbv = numel(x);
+
+%write files
+t1=clock; fprintf('%s','      writing initial mesh files...');
+fid=fopen('model.geo','w');
+fprintf(fid,['// Gmsh input file, created by ISSM on ' date '\n']);
+for i=1:nbv,
+	fprintf(fid,'Point(%i) = {%8g, %8g, %8g};\n',i,x(i),y(i),0.);
+end
+for i=1:nbv-1
+	fprintf(fid,'Line(%i) = {%i, %i};\n',i,i,i+1);
+end
+fprintf(fid,'Line(%i) = {%i, %i};\n',nbv,nbv,1);
+fprintf(fid,'Line Loop(5) = {');
+for i=1:nbv-1
+	fprintf(fid,'%i,',i);
+end
+fprintf(fid,'%i};\n',nbv);
+fprintf(fid,'Plane Surface(6) = {5};\n');
+
+%Physical lines and surfaces
+fprintf(fid,'Physical Line(2) = {1};\n');
+fprintf(fid,'Physical Line(4) = {2};\n');
+fprintf(fid,'Physical Line(5) = {3};\n');
+fprintf(fid,'Physical Line(1) = {4};\n');
+fprintf(fid,'Physical Surface(7) = {6};\n');
+
+%resolution
+fprintf(fid,'Mesh.CharacteristicLengthMax = %g;',h);
+
+%fprintf(fid,'Plane Surface(7) = {6, 2};\n');
+fclose(fid);
+
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%call gmsh
+fprintf('%s\n','      call gmsh...');
+system([issmdir() '/externalpackages/gmsh/install/gmsh -2 model.geo']);
+
+%plug new mesh
+t1=clock; fprintf('\n%s','      reading final mesh files...');
+md=importgmsh('model.msh',2);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/gmsh3d.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/gmsh3d.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/gmsh3d.m	(revision 21239)
@@ -0,0 +1,103 @@
+function md=gmsh3d(md,domainfile,h),
+
+%Read domain
+domain=expread(domainfile);
+x   = domain.x(1:end-1);
+y   = domain.y(1:end-1);
+nbv = numel(x);
+
+%write files
+t1=clock; fprintf('%s','      writing initial mesh files...');
+fid=fopen('model.geo','w');
+fprintf(fid,['// Gmsh input file, created by ISSM on ' date '\n']);
+
+%Lower points
+for i=1:nbv,
+	fprintf(fid,'Point(%i) = {%8g, %8g, %8g};\n',i,x(i),y(i),0.);
+end
+%Upper points
+for i=1:nbv,
+	fprintf(fid,'Point(%i) = {%8g, %8g, %8g};\n',nbv+i,x(i),y(i),1.);
+end
+
+%Lower lines
+for i=1:nbv-1
+	fprintf(fid,'Line(%i) = {%i, %i};\n',i,i,i+1);
+end
+fprintf(fid,'Line(%i) = {%i, %i};\n',nbv,nbv,1);
+%Upper lines
+for i=nbv+1:2*nbv-1
+	fprintf(fid,'Line(%i) = {%i, %i};\n',i,i,i+1);
+end
+fprintf(fid,'Line(%i) = {%i, %i};\n',2*nbv,2*nbv,nbv+1);
+%Side lines
+for i=1:nbv
+	fprintf(fid,'Line(%i) = {%i, %i};\n',2*nbv+i,i,nbv+i);
+end
+
+counter = 3*nbv;
+ps = zeros(nbv+2,1);
+%Lower surface Loop and surface
+counter = counter+1;
+fprintf(fid,['Line Loop(' num2str(counter) ') = {']);
+for i=1:nbv-1
+	fprintf(fid,'%i,',i);
+end
+fprintf(fid,'%i};\n',nbv);
+fprintf(fid,['Plane Surface(' num2str(counter+1) ') = {' num2str(counter) '};\n']);
+ps(1)=counter+1;
+counter = counter+1;
+%Upper surface Loop and surface
+counter = counter+1;
+fprintf(fid,['Line Loop(' num2str(counter) ') = {']);
+for i=nbv+1:2*nbv-1
+	fprintf(fid,'%i,',i);
+end
+fprintf(fid,'%i};\n',2*nbv);
+ps(2)=counter+1;
+fprintf(fid,['Plane Surface(' num2str(counter+1) ') = {' num2str(counter) '};\n']);
+counter = counter+2;
+%Sides surfaces
+for i=1:nbv-1,
+	fprintf(fid,['Line Loop(' num2str(counter) ') = {' num2str(i) ',' num2str(2*nbv+i+1) ',-' num2str(nbv+i) ',-' num2str(2*nbv+i) '};\n']);
+	fprintf(fid,['Plane Surface(' num2str(counter+1) ') = {' num2str(counter) '};\n']);
+	ps(2+i)=counter+1;
+	counter=counter+2;
+end
+fprintf(fid,['Line Loop(' num2str(counter) ') = {' num2str(nbv) ',' num2str(2*nbv+1) ',-' num2str(2*nbv) ',-' num2str(3*nbv) '};\n']);
+fprintf(fid,['Plane Surface(' num2str(counter+1) ') = {' num2str(counter) '};\n']);
+ps(2+nbv)=counter+1;
+counter=counter+2;
+
+%Physical surfaces
+counter = counter+1;
+fprintf(fid,['Surface Loop(' num2str(counter) ') = {']);
+for i=1:numel(ps)-1
+	fprintf(fid,'%i,',ps(i));
+end
+fprintf(fid,'%i};\n',ps(end));
+fprintf(fid,['Physical Surface(1) = {' num2str(ps(2)) '};\n']);
+fprintf(fid,['Physical Surface(2) = {' num2str(ps(1)) '};\n']);
+fprintf(fid,['Physical Surface(3) = {']);
+for i=3:numel(ps)-1
+	fprintf(fid,'%i,',ps(i));
+end
+fprintf(fid,'%i};\n',ps(end));
+
+%Volume
+fprintf(fid,['Volume(1) = {' num2str(counter) '};\n']);
+fprintf(fid,['Physical Volume(2) = {1};\n']);
+
+%resolution
+fprintf(fid,'Mesh.CharacteristicLengthMax = %g;',h);
+fclose(fid);
+
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%call gmsh
+fprintf('%s\n','      call gmsh...');
+system([issmdir() '/externalpackages/gmsh/install/gmsh -3 -v 0 model.geo']);
+
+%plug new mesh
+t1=clock; fprintf('\n%s','      reading final mesh files...');
+md=importgmsh('model.msh',3);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/meshread.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/meshread.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/meshread.m	(revision 21239)
@@ -0,0 +1,41 @@
+function Struct=meshread(filename)
+
+%some checks
+if ~exist(filename),
+	error(['meshread error message: file ' filename ' not found!']);
+end
+
+fid=fopen(filename,'r');
+
+while (~feof(fid)),
+
+	A=fscanf(fid,'%s',1);
+
+	if strcmp(A,'MeshVersionFormatted');
+		Struct.Version=fscanf(fid,'%s',1);
+
+	elseif strcmp(A,'Dimension'),
+		Struct.Dimension=fscanf(fid,'%i',1);
+
+	elseif strcmp(A,'Vertices'),
+		Struct.nods=fscanf(fid,'%i',1);
+		A=fscanf(fid,'%f %f %f',[3 Struct.nods]);
+		Struct.x=A(1,:)';
+		Struct.y=A(2,:)';
+
+	elseif strcmp(A,'Triangles'),
+		Struct.nels=fscanf(fid,'%i',1);
+		A=fscanf(fid,'%i %i %i',[4 Struct.nels]);
+		Struct.index=A(1:3,:)';
+
+	elseif strcmp(A,'Quadrilaterals'),
+		Struct.nels=fscanf(fid,'%i',1);
+		A=fscanf(fid,'%i %i %i %i',[5 Struct.nels]);
+		Struct.index=A(1:4,:)';
+	else
+		%do nothing
+
+	end
+end
+
+fclose(fid);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/yams.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/yams.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/bamg/yams.m	(revision 21239)
@@ -0,0 +1,153 @@
+function md=yams(md,varargin)
+%MESHYAMS - Build model of Antarctica by refining according to observed velocity error estimator
+%
+%   Usage:
+%      md=yams(md,varargin);
+%      where varargin is a lit of paired arguments. 
+%      arguments can be: 'domainoutline': Argus file containing the outline of the domain to be meshed
+%      arguments can be: 'velocities': matlab file containing the velocities [m/yr]
+%      optional arguments: 'groundeddomain': Argus file containing the outline of the grounded ice
+%                          this option is used to minimize the metric on water (no refinement)
+%      optional arguments: 'resolution': initial mesh resolution [m]
+%      optional arguments: 'nsteps': number of steps of mesh adaptation
+%      optional arguments: 'epsilon': average interpolation error wished [m/yr]
+%      optional arguments: 'hmin': minimum edge length
+%      optional arguments: 'hmanx': maximum edge
+%      optional arguments: 'riftoutline': if rifts are present, specifies rift outline file.
+%      
+%
+%   Examples:
+%      md=yams(md,'domainoutline','Domain.exp','velocities','vel.mat');
+%      md=yams(md,'domainoutline','Domain.exp','velocities','vel.mat','groundeddomain','ground.exp');
+%      md=yams(md,'domainoutline','Domain.exp','velocities','vel.mat','groundeddomain','ground.exp','nsteps',6,'epsilon',2,'hmin',500,'hmax',30000);
+
+%recover options
+options=pairoptions(varargin{:});
+options=deleteduplicates(options,1);
+
+%recover some fields
+disp('MeshYams Options:')
+domainoutline=getfieldvalue(options,'domainoutline');
+disp(sprintf('   %-15s: ''%s''','DomainOutline',domainoutline));
+riftoutline=getfieldvalue(options,'riftoutline','N/A');
+disp(sprintf('   %-15s: ''%s''','riftoutline',riftoutline));
+groundeddomain=getfieldvalue(options,'groundeddomain','N/A');
+disp(sprintf('   %-15s: ''%s''','GroundedDomain',groundeddomain));
+velocities=getfieldvalue(options,'velocities');
+disp(sprintf('   %-15s: ''%s''','Velocities',velocities));
+resolution=getfieldvalue(options,'resolution',5000);
+disp(sprintf('   %-15s: %f','Resolution',resolution));
+nsteps=getfieldvalue(options,'nsteps',6);
+disp(sprintf('   %-15s: %i','nsteps',nsteps));
+gradation=getfieldvalue(options,'gradation',2*ones(nsteps,1));
+disp(sprintf('   %-15s: %g','gradation',gradation(1)));
+epsilon=getfieldvalue(options,'epsilon',3);
+disp(sprintf('   %-15s: %f','epsilon',epsilon));
+hmin=getfieldvalue(options,'hmin',500);
+disp(sprintf('   %-15s: %f','hmin',hmin));
+hmax=getfieldvalue(options,'hmax',150*10^3);
+disp(sprintf('   %-15s: %f\n','hmax',hmax));
+
+%mesh with initial resolution
+disp('Initial mesh generation...');
+if strcmpi(riftoutline,'N/A');
+	md=setmesh(md,domainoutline,resolution);
+else
+	md=setmesh(md,domainoutline,riftoutline,resolution);
+	md=meshprocessrifts(md,domainoutline);
+end
+disp(['Initial mesh, number of elements: ' num2str(md.mesh.numberofelements)]);
+
+%load velocities 
+disp('loading velocities...');
+Names=VelFindVarNames(velocities);
+Vel=load(velocities);
+
+%start mesh adaptation
+for i=1:nsteps,
+	disp(['Iteration #' num2str(i) '/' num2str(nsteps)]);
+
+	%interpolate velocities onto mesh
+	disp('   interpolating velocities...');
+	if strcmpi(Names.interp,'node'),
+		vx_obs=InterpFromGridToMesh(Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vxname),md.mesh.x,md.mesh.y,0);
+		vy_obs=InterpFromGridToMesh(Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vyname),md.mesh.x,md.mesh.y,0);
+	else
+		vx_obs=InterpFromMeshToMesh2d(Vel.(Names.indexname),Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vxname),md.mesh.x,md.mesh.y,0);
+		vy_obs=InterpFromMeshToMesh2d(Vel.(Names.indexname),Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vyname),md.mesh.x,md.mesh.y,0);
+	end
+	field=sqrt(vx_obs.^2+vy_obs.^2);
+
+	%adapt according to velocities
+	disp('   adapting...');
+	md=YamsCall(md,field,hmin,hmax,gradation(i),epsilon);
+
+	%if we have rifts, we just messed them up, we need to recreate the segments that constitute those 
+	%rifts, because the segments are used in YamsCall to freeze the rifts elements during refinement.
+	if md.rifts.numrifts, 
+		md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+		md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+		md.mesh.segments=findsegments(md);
+		md=yamsrecreateriftsegments(md);
+	end
+
+end
+
+disp(['Final mesh, number of elements: ' num2str(md.mesh.numberofelements)]);
+
+%Now, build the connectivity tables for this mesh.
+md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+
+%recreate segments
+md.mesh.segments=findsegments(md);
+md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+
+%Fill in rest of fields:
+md.mesh.z=zeros(md.mesh.numberofvertices,1);
+md.mesh.vertexonbase=ones(md.mesh.numberofvertices,1);
+md.mesh.vertexonsurface=ones(md.mesh.numberofvertices,1);
+if strcmpi(Names.interp,'node'),
+	md.inversion.vx_obs=InterpFromGridToMesh(Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vxname),md.mesh.x,md.mesh.y,0);
+	md.inversion.vy_obs=InterpFromGridToMesh(Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vyname),md.mesh.x,md.mesh.y,0);
+else
+	md.inversion.vx_obs=InterpFromMeshToMesh2d(Vel.(Names.indexname),Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vxname),md.mesh.x,md.mesh.y,0);
+	md.inversion.vy_obs=InterpFromMeshToMesh2d(Vel.(Names.indexname),Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vyname),md.mesh.x,md.mesh.y,0);
+end
+md.inversion.vel_obs=sqrt(md.inversion.vx_obs.^2+md.inversion.vy_obs.^2);
+
+%deal with rifts 
+if md.rifts.numrifts,
+	%first, recreate rift segments
+	md=meshyamsrecreateriftsegments(md);
+
+	%using the segments, recreate the penaltypairs
+	for j=1:md.rifts.numrifts,
+		rift=md.rifts.riftstruct(j);
+
+		%build normals and lengths of segments:
+		lengths=sqrt((md.mesh.x(rift.segments(:,1))-md.mesh.x(rift.segments(:,2))).^2 + (md.mesh.y(rift.segments(:,1))-md.mesh.y(rift.segments(:,2))).^2 );
+		normalsx=cos(atan2((md.mesh.x(rift.segments(:,1))-md.mesh.x(rift.segments(:,2))) , (md.mesh.y(rift.segments(:,2))-md.mesh.y(rift.segments(:,1)))));
+		normalsy=sin(atan2((md.mesh.x(rift.segments(:,1))-md.mesh.x(rift.segments(:,2))) , (md.mesh.y(rift.segments(:,2))-md.mesh.y(rift.segments(:,1)))));
+
+		%ok, build penaltypairs: 
+		numpenaltypairs=length(rift.segments)/2-1;
+		rift.penaltypairs=zeros(numpenaltypairs,7);
+
+		for i=1:numpenaltypairs,
+			rift.penaltypairs(i,1)=rift.segments(i,2);
+			rift.penaltypairs(i,2)=rift.segments(end-i,2);
+			rift.penaltypairs(i,3)=rift.segments(i,3);
+			rift.penaltypairs(i,4)=rift.segments(end-i,3);
+			rift.penaltypairs(i,5)=normalsx(i)+normalsx(i+1);
+			rift.penaltypairs(i,6)=normalsy(i)+normalsy(i+1);
+			rift.penaltypairs(i,7)=(lengths(i)+lengths(i+1))/2;
+		end
+		%renormalize norms: 
+		norms=sqrt(rift.penaltypairs(:,5).^2+rift.penaltypairs(:,6).^2);
+		rift.penaltypairs(:,5)=rift.penaltypairs(:,5)./norms;
+		rift.penaltypairs(:,6)=rift.penaltypairs(:,6)./norms;
+
+		md.rifts.riftstruct(j)=rift;
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/dassflow/exportgmsh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/dassflow/exportgmsh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/dassflow/exportgmsh.m	(revision 21239)
@@ -0,0 +1,52 @@
+function exportgmsh(mesh,groundedice_levelset,filename),
+%EXPORTGMSH - export mesh to gmsh format
+%
+%   http://www.geuz.org/gmsh/doc/texinfo/#MSH-ASCII-file-format
+%
+%   Usage:
+%      exportgmsh(mesh,groundedice_levelset,filename)
+%
+%   Example:
+%      exportgmsh(md.mesh,md.mask.groundedice_levelset,'temp.msh')
+
+fid=fopen(filename,'w');
+
+%Header
+fprintf(fid,'$MeshFormat\n');
+fprintf(fid,'2.2 0 8\n');
+fprintf(fid,'$EndMeshFormat\n');
+
+%Vertices
+nbv = mesh.numberofvertices;
+fprintf(fid,'$Nodes\n');
+fprintf(fid,'%i\n',nbv);
+fprintf(fid,'%i %8g %8g %8g\n',[[1:nbv]' mesh.x mesh.y zeros(nbv,1)]');
+fprintf(fid,'$EndNodes\n');
+
+%Boundary Elements first
+nbe     = mesh.numberofelements;
+nbs     = size(mesh.segments,1);
+segment = 1;
+tria    = 2;
+
+%Create flags
+grounded = sum(groundedice_levelset(mesh.segments(:,1:2))>0,2);
+A = zeros(nbs,2);
+pos = find(mesh.segmentmarkers==4);
+A(pos,:)=repmat([1,4],[numel(pos) 1]);
+pos = find(mesh.segmentmarkers==1 &  grounded);
+A(pos,:)=repmat([2,1],[numel(pos) 1]);
+pos = find(mesh.segmentmarkers==1 & ~grounded);
+A(pos,:)=repmat([3,5],[numel(pos) 1]);
+pos = find(mesh.segmentmarkers==2);
+A(pos,:)=repmat([4,2],[numel(pos) 1]);
+pos = find(mesh.segmentmarkers==3);
+A(pos,:)=repmat([5,3],[numel(pos) 1]);
+
+fprintf(fid,'$Elements\n');
+fprintf(fid,'%i\n',nbe+nbs);
+fprintf(fid,'%i %i %i %i %i %i %i\n',[[1    :nbs    ]' segment*ones(nbs,1) 2*ones(nbs,1) A mesh.segments(:,1:2)]');
+fprintf(fid,'%i %i %i %i %i %i %i %i\n',[[nbs+1:nbs+nbe]' tria*ones(nbe,1) 2*ones(nbe,1) 7*ones(nbe,1) 6*ones(nbe,1) mesh.elements]');
+fprintf(fid,'$EndElements\n');
+
+fclose(fid);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/dassflow/importgmsh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/dassflow/importgmsh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/dassflow/importgmsh.m	(revision 21239)
@@ -0,0 +1,155 @@
+function md = importgmsh(filename,dim)
+
+%some checks
+if ~exist(filename),
+	error(['expread error message: file ' filename ' not found!']);
+end
+
+%open file
+fid=fopen(filename,'r');
+
+%Get Mesh format
+A=fscanf(fid,'%s',1);
+if ~strcmp(A,'$MeshFormat'), 
+	error(['Expecting $MeshFormat (' A ')']);
+end
+A=fscanf(fid,'%f %i %i',[1 3]);
+A=fscanf(fid,'%s',1);
+if ~strcmp(A,'$EndMeshFormat'), 
+	error(['Expecting $EndMeshFormat (' A ')']);
+end
+
+%Nodes
+A=fscanf(fid,'%s',1);
+if ~strcmp(A,'$Nodes'), 
+	error(['Expecting $Nodes (' A ')']);
+end
+nbv=fscanf(fid,'%i',1);
+disp(['Number of nodes: ' num2str(nbv) ]);
+A=fscanf(fid,'%i %f %f %f',[4 nbv]);
+x = A(2,:)';
+y = A(3,:)';
+z = A(4,:)';
+
+A=fscanf(fid,'%s',1);
+if ~strcmp(A,'$EndNodes'), 
+	error(['Expecting $EndNodes (' A ')']);
+end
+
+%Elements
+A=fscanf(fid,'%s',1);
+if ~strcmp(A,'$Elements'), 
+	error(['Expecting $Elements (' A ')']);
+end
+nbt=fscanf(fid,'%i',1);
+disp(['Number of elements: ' num2str(nbt) ]);
+counter = 0;
+if (dim==2),
+	index   = zeros(0,3);
+	segments       = zeros(0,2);
+	segmentmarkers = zeros(0,1);
+elseif (dim==3),
+	index   = zeros(0,4);
+	segments       = zeros(0,3);
+	segmentmarkers = zeros(0,1);
+else
+	error('not supported');
+end
+
+while(counter<nbt);
+	id = fscanf(fid,'%i',1);
+	ty = fscanf(fid,'%i',1);
+	nbf = fscanf(fid,'%i',1);
+	flags = fscanf(fid,'%i',nbf);
+
+	switch(ty)
+		case 1, %segments
+			A=fscanf(fid,'%i %i',2);
+			if (dim==2),  %Actual element
+				segments(end+1,:)=A;
+				if    (flags(1)==5 & flags(2)==3), segmentmarkers(end+1)=3; 
+				elseif(flags(1)==1 & flags(2)==4), segmentmarkers(end+1)=4;
+				elseif(flags(1)==2 & flags(2)==1), segmentmarkers(end+1)=1;
+				elseif(flags(1)==4 & flags(2)==2), segmentmarkers(end+1)=2;
+				else error(['flags ' num2str(flags') ' not supported']);
+				end
+			else
+				error('not supported');
+			end
+		case 2, %tria
+			A=fscanf(fid,'%i %i %i',3);
+			if (dim==2), %Actual element
+				index(end+1,:)=A;
+			else         %Boundary element
+				segments(end+1,:)=A;
+				if    (flags(1)==1), segmentmarkers(end+1)=1; 
+				elseif(flags(1)==2), segmentmarkers(end+1)=2;
+				elseif(flags(1)==3), segmentmarkers(end+1)=3;
+				elseif(flags(1)==4), segmentmarkers(end+1)=4;
+				else error(['flags ' num2str(flags') ' not supported']);
+				end
+			end
+		case 4, %tetra
+			A=fscanf(fid,'%i %i %i %i',4);
+			if (dim==3), %Actual element
+				index(end+1,:)=A;
+			else
+				error('not supported');
+			end
+		case 15, %point
+			A=fscanf(fid,'%i',1);
+			continue;
+		otherwise,
+			error(['Type ' num2str(ty) ' not supported']);
+	end
+	counter = counter + 1;
+end
+
+%recreate segments
+if dim==2,
+	nbs = size(segments,1);
+	segments = [segments zeros(nbs,1)];
+	for i=1:nbs,
+		E = find(sum(ismember(index,segments(i,:)),2)>1);
+		segments(i,3)=E;
+	end
+else
+	nbs = size(segments,1);
+	segments = [segments zeros(nbs,1)];
+	for i=1:nbs,
+		E = find(sum(ismember(index,segments(i,:)),2)>2);
+		segments(i,4)=E;
+	end
+end
+
+%close file
+fclose(fid);
+
+%Create model
+if dim==2, %2d triangles
+	md=meshconvert(model,index,x,y);
+	md.mesh=mesh2dvertical(md.mesh);
+	md.mesh.segmentmarkers=segmentmarkers;
+	md.mesh.segments=segments;
+	md.mesh.vertexonbase=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonbase(find(vertexflags(md.mesh,1)))=1;
+	md.mesh.vertexonsurface=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonsurface(find(vertexflags(md.mesh,3)))=1;
+else
+	md=model();
+	md.mesh=mesh3dtetras();
+	md.mesh.x = x;
+	md.mesh.y = y;
+	md.mesh.z = z;
+	md.mesh.elements = index;
+	md.mesh.numberofelements=size(md.mesh.elements,1);
+	md.mesh.numberofvertices=length(md.mesh.x);
+
+	%base 2, surface 1, inflow 3, outflow 4
+	md.mesh.vertexonbase=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonbase(segments(find(segmentmarkers==2),1:3))=1;
+	md.mesh.vertexonsurface=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonsurface(segments(find(segmentmarkers==1),1:3))=1;
+	md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonboundary(segments(:,1:3))=1;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/gslib/gamv.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/gslib/gamv.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/gslib/gamv.m	(revision 21239)
@@ -0,0 +1,70 @@
+function output = gamv(x,y,data,varargin)
+%GAMV - use gslib for Kriging
+%
+%   Usage:
+%      output = gamv(x,y,data,varargin)
+
+options=pairoptions(varargin{:});
+
+nlag = getfieldvalue(options,'nlag', 20);
+dlag = getfieldvalue(options,'dlag', 1000);
+
+%Write data file
+fid=fopen('cluster.dat','w');
+fprintf(fid,'%s\n','Data file');
+fprintf(fid,'%i\n',3);
+fprintf(fid,'%s\n','Xlocation');
+fprintf(fid,'%s\n','Ylocation');
+fprintf(fid,'%s\n','Data');
+fprintf(fid,'%g %g %g\n',[x y data]');
+fclose(fid);
+
+%Write parameter file
+fid=fopen('gamv.par','w');
+fprintf(fid,'\t\t\t\t%s\n','Parameters for GAMV');
+fprintf(fid,'\t\t\t\t%s\n','*******************');
+fprintf(fid,'\n');
+fprintf(fid,'%s\n','START OF PARAMETERS:');
+fprintf(fid,'%-30s %s\n','./cluster.dat'              ,'\file with data');
+fprintf(fid,'%-30s %s\n','1 2 0'                      ,'\columns for X, Y, Z coordinates');
+fprintf(fid,'%-30s %s\n','1 3  '                      ,'\number of variables, column number');
+fprintf(fid,'%-30s %s\n','-1.0e21 1.0e21'             ,'\trimming limits');
+fprintf(fid,'%-30s %s\n','gamv.out'                   ,'\file for variogram output');
+fprintf(fid,'%-30s %s\n',num2str(nlag,'%i')           ,'\number of lags');
+fprintf(fid,'%-30s %s\n',num2str(dlag,'%g')           ,'\lag separation distance');
+fprintf(fid,'%-30s %s\n',num2str(dlag/2,'%g')         ,'\lag tolerance');
+fprintf(fid,'%-30s %s\n','3'                          ,'\number of directions');
+fprintf(fid,'%-30s %s\n','0.0 90.0 50.0 0.0 90.0 50.0','\azm, atol, bandh, dip, dtol, bandv');
+fprintf(fid,'%-30s %s\n','0.0 22.5 25.0 0.0 22.5 25.0','\azm, atol, bandh, dip, dtol, bandv');
+fprintf(fid,'%-30s %s\n','90. 22.5 25.0 0.0 22.5 25.0','\azm, atol, bandh, dip, dtol, bandv');
+fprintf(fid,'%-30s %s\n','0'                          ,'\standardize sill? (0=no, 1=yes)');
+fprintf(fid,'%-30s %s\n','2'                          ,'\number of variograms');
+fprintf(fid,'%-30s %s\n','1 1 1'                      ,'\tail var., head vars., variogram type');
+fprintf(fid,'%-30s %s\n','1 1 3'                      ,'\tail var., head vars., variogram type');
+fclose(fid);
+
+%Call gamv
+system([issmdir() '/externalpackages/gslib/install/gamv gamv.par']);
+delete('gamv.par');
+
+%Read output
+output   = struct('Semivariogram',[],'Covariance',[]);
+counter1 = 1;
+counter2 = 1;
+fid=fopen('gamv.out','r');
+while (~feof(fid)),
+	A=fscanf(fid,'%s',1);
+	if strcmp(A,'Covariance');
+		A=fscanf(fid,'%s',4); %Read tail:Data head:Data direction  2
+		output(counter1).Covariance=fscanf(fid,'%i %g %g %i %g %g',[6 nlag+2])';
+		counter1=counter1+1;
+	elseif strcmp(A,'Semivariogram'),
+		A=fscanf(fid,'%s',4); %Read tail:Data head:Data direction  2
+		output(counter2).Semivariogram=fscanf(fid,'%i %g %g %i %g %g',[6 nlag+2])';
+		counter2=counter2+1;
+	else
+		%do nothing
+	end
+end
+fclose(fid);
+delete('gamv.out')
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/gslib/gslib.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/gslib/gslib.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/gslib/gslib.m	(revision 21239)
@@ -0,0 +1,107 @@
+function [B E] = gslib(x,y,data,xmin,ymin,nx,ny,deltax,deltay,varargin)
+%GSLIB - use gslib for Kriging
+%
+%   Usage:
+%      output = gslib(x,y,data,varargin)
+
+%process options
+options = pairoptions(varargin{:});
+
+%Variogram
+nugget= getfieldvalue(options,'nugget',10);
+sill  = getfieldvalue(options,'sill',164);
+range = getfieldvalue(options,'range',25763);
+
+%Kriging options
+mindata = getfieldvalue(options,'mindata',1);
+maxdata = getfieldvalue(options,'maxdata',50);
+maxsearchradius = getfieldvalue(options,'searchrange',50000);
+
+%Some intermediaries (Convert to gslib's parameters);
+c = (sill-nugget);
+a = sqrt(3)*range;
+
+%Write data file
+fid=fopen('cluster.dat','w');
+fprintf(fid,'%s\n','Data file');
+fprintf(fid,'%i\n',3);
+fprintf(fid,'%s\n','Xlocation');
+fprintf(fid,'%s\n','Ylocation');
+fprintf(fid,'%s\n','Data');
+fprintf(fid,'%g %g %g\n',[x y data]');
+fclose(fid);
+
+if 0, %GAMV
+	%Write parameter file
+	fid=fopen('gamv.par','w');
+	fprintf(fid,'\t\t\t\t%s\n','Parameters for GAMV');
+	fprintf(fid,'\t\t\t\t%s\n','*******************');
+	fprintf(fid,'\n');
+	fprintf(fid,'%s\n','START OF PARAMETERS:');
+	fprintf(fid,'%-30s %s\n','./cluster.dat'              ,'\file with data');
+	fprintf(fid,'%-30s %s\n','1 2 0'                      ,'\columns for X, Y, Z coordinates');
+	fprintf(fid,'%-30s %s\n','1 3  '                      ,'\number of variables, column number');
+	fprintf(fid,'%-30s %s\n','-1.0e21 1.0e21'             ,'\trimming limits');
+	fprintf(fid,'%-30s %s\n','gamv.out'                   ,'\file for variogram output');
+	fprintf(fid,'%-30s %s\n','20'                         ,'\number of lags');
+	fprintf(fid,'%-30s %s\n','5.0'                        ,'\lag separation distance');
+	fprintf(fid,'%-30s %s\n','3.0'                        ,'\lag tolerance');
+	fprintf(fid,'%-30s %s\n','3'                          ,'\number of directions');
+	fprintf(fid,'%-30s %s\n','0.0 90.0 50.0 0.0 90.0 50.0','\azm, atol, bandh, dip, dtol, bandv');
+	fprintf(fid,'%-30s %s\n','0.0 22.5 25.0 0.0 22.5 25.0','\azm, atol, bandh, dip, dtol, bandv');
+	fprintf(fid,'%-30s %s\n','90. 22.5 25.0 0.0 22.5 25.0','\azm, atol, bandh, dip, dtol, bandv');
+	fprintf(fid,'%-30s %s\n','0'                          ,'\standardize sill? (0=no, 1=yes)');
+	fprintf(fid,'%-30s %s\n','2'                          ,'\number of variograms');
+	fprintf(fid,'%-30s %s\n','1 1 1'                      ,'\tail var., head vars., variogram type');
+	fprintf(fid,'%-30s %s\n','1 1 3'                      ,'\tail var., head vars., variogram type');
+	fclose(fid);
+
+	%Call gamv
+	system([issmdir() '/externalpackages/gslib/install/gamv gamv.par']);
+
+else, %Kriging KB2D
+	%Write parameter file
+	fid=fopen('kb2d.par','w');
+	fprintf(fid,'\t\t\t\t%s\n','Parameters for KB2D');
+	fprintf(fid,'\t\t\t\t%s\n','*******************');
+	fprintf(fid,'\n');
+	fprintf(fid,'%s\n','START OF PARAMETERS:');
+	fprintf(fid,'%-30s %s\n','./cluster.dat'                  ,'\file with data');
+	fprintf(fid,'%-30s %s\n','1 2 3'                          ,'\columns for X, Y and variable');
+	fprintf(fid,'%-30s %s\n','-1.0e21 1.0e21'                 ,'\trimming limits');
+	fprintf(fid,'%-30s %s\n','0'                              ,'\debugging level: 0,1,2,3');
+	fprintf(fid,'%-30s %s\n','kb2d.dbg'                       ,'\file for debuggging output');
+	fprintf(fid,'%-30s %s\n','kb2d.out'                       ,'\file for kriged output');
+	fprintf(fid,'%-30s %s\n',num2str([nx xmin deltax],'%i %10g %6g')  ,'\nx, xmn, xsiz');
+	fprintf(fid,'%-30s %s\n',num2str([ny ymin deltay],'%i %10g %6g')  ,'\nx, xmn, xsiz');
+	fprintf(fid,'%-30s %s\n','1 1'                            ,'\x and y block discretization');
+	fprintf(fid,'%-30s %s\n',num2str([mindata maxdata],'%6g') ,'\min and max data for kriging');
+	fprintf(fid,'%-30s %s\n',num2str(maxsearchradius,'%6g')   ,'\max search radius');
+	fprintf(fid,'%-30s %s\n','1 2.302'                        ,'\0=SK, 1=OK, (mean if SK)');
+	fprintf(fid,'%-30s %s\n',['1 ' num2str(nugget)]           ,'\nst, nugget effect');
+	fprintf(fid,'%-30s %s\n',['3 ' num2str([c 0.0 a a],'%10g')],'\it, c, azm, a_max, a_min');
+	fclose(fid);
+
+	tic;system([issmdir() '/externalpackages/gslib/install/kb2d kb2d.par']);toc;
+	delete('kb2d.par');
+
+	%Read output
+	fid=fopen('kb2d.out','r');
+	while (~feof(fid)),
+		A=fscanf(fid,'%s',1);
+		if strcmp(A,'KB2D');
+			A=fscanf(fid,'%s',1); %Read output
+			params=fscanf(fid,'%i %i %i %i %g %g %g %g %g %g %1',[11 1]);
+		elseif strcmp(A,' Estimate'),
+			continue;
+		elseif strcmp(A,'Estimation'),
+			A=fscanf(fid,'%s',1); %Read Variance
+			A=fscanf(fid,'%g %g',[params(1) params(2)*params(3)]);
+			B=A(1,:); B=reshape(B,[params(3),params(2)])';
+			E=A(2,:); E=reshape(E,[params(3),params(2)])';
+		else
+			%do nothing
+		end
+	end
+	fclose(fid);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/gslib/pkriging.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/gslib/pkriging.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/gslib/pkriging.m	(revision 21239)
@@ -0,0 +1,58 @@
+function [B E]=pkriging(x,y,observations,x_interp,y_interp,varargin)
+%PKRIGING - parallel Kriging
+%
+%   Usage:
+%      [B E]=pkriging(x,y,observations,x_interp,y_interp,varargin);
+
+options=pairoptions(varargin{:});
+cluster=getfieldvalue(options,'cluster',generic('np',1));
+options=removefield(options,'cluster',0);
+name   = ['krig' num2str(feature('GetPid'))];
+
+if 1,
+% =========================================   MARSHALL.m =================================================
+disp(['marshalling file ' name '.bin']);
+fid=fopen([name '.bin'],'wb');
+if fid==-1,
+	error(['marshall error message: could not open ' name '.bin file for binary writing']);
+end
+
+%Write all data
+WriteData(fid,'','name','md.x','data',x,'format','DoubleMat');
+WriteData(fid,'','name','md.y','data',y,'format','DoubleMat');
+WriteData(fid,'','name','md.data','data',observations,'format','DoubleMat');
+WriteData(fid,'','name','md.x_interp','data',x_interp,'format','DoubleMat');
+WriteData(fid,'','name','md.y_interp','data',y_interp,'format','DoubleMat');
+
+%Now, write number of options
+options.marshall(fid);
+
+%Last, write "md.EOF" to make sure that the binary file is not corrupt
+WriteData(fid,'','name','md.EOF','data',true,'format','Boolean');
+
+%Launch job on remote cluster
+BuildKrigingQueueScript(cluster,name,'',1,0,0); %gather, valgrind, gprof
+UploadQueueJob(cluster,name,name,{[name '.bin'] [name '.queue']})
+LaunchQueueJob(cluster,name,name,{[name '.bin'] [name '.queue']},'',0);
+
+%Call waitonlock
+md=model; md.cluster=cluster; md.settings.waitonlock=Inf; md.private.runtimename=name;md.miscellaneous.name=name;
+waitonlock(md);
+
+%Download
+end
+Download(cluster,name,{[name '.outbin']});
+structure=parseresultsfromdisk(md,[name '.outbin'],0);
+delete([name '.outlog']);
+delete([name '.errlog']);
+delete([name '.outbin']);
+delete([name '.bin']);
+if ~ispc(),
+	delete([name '.tar.gz']);
+end
+
+%Process results
+B=structure.predictions;
+B=reshape(B,size(x_interp,2),size(x_interp,1))';
+E=structure.error;
+E=reshape(E,size(x_interp,2),size(x_interp,1))';
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/gslib/varmap.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/gslib/varmap.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/gslib/varmap.m	(revision 21239)
@@ -0,0 +1,55 @@
+function output = varmap(x,y,data,varargin)
+%VARMAP - use gslib for Kriging
+%
+%   Usage:
+%      output = varmap(x,y,data,varargin)
+
+options=pairoptions(varargin{:});
+
+nxlag = getfieldvalue(options,'nxlag', 20);
+nylag = getfieldvalue(options,'nylag', 20);
+dxlag = getfieldvalue(options,'dxlag', 1000);
+dylag = getfieldvalue(options,'dylag', 1000);
+
+%Write data file
+fid=fopen('cluster.dat','w');
+fprintf(fid,'%s\n','Data file');
+fprintf(fid,'%i\n',3);
+fprintf(fid,'%s\n','Xlocation');
+fprintf(fid,'%s\n','Ylocation');
+fprintf(fid,'%s\n','Data');
+fprintf(fid,'%g %g %g\n',[x y data]');
+fclose(fid);
+
+%Write parameter file
+fid=fopen('varmap.par','w');
+fprintf(fid,'\t\t\t\t%s\n','Parameters for GAMV');
+fprintf(fid,'\t\t\t\t%s\n','*******************');
+fprintf(fid,'\n');
+fprintf(fid,'%s\n','START OF PARAMETERS:');
+fprintf(fid,'%-30s %s\n','./cluster.dat'              ,'\file with data');
+fprintf(fid,'%-30s %s\n','1 3  '                      ,'\number of variables, column number');
+fprintf(fid,'%-30s %s\n','-1.0e21 1.0e21'             ,'\trimming limits');
+fprintf(fid,'%-30s %s\n','0    '                      ,'\1=regular grid, 0=scattered values');
+fprintf(fid,'%-30s %s\n','50 50 1'                    ,'\if =1: nx, ny, nz');
+fprintf(fid,'%-30s %s\n','1.0 1.0 1.0'                ,'\       xsiz, ysiz, zsiz if igrid=1');
+fprintf(fid,'%-30s %s\n','1 2 0'                      ,'\if =0: columns for x, y and z coordinates');
+fprintf(fid,'%-30s %s\n','varmap.out'                 ,'\file for variogram output');
+fprintf(fid,'%-30s %s\n',num2str([nxlag nylag 0],'%i '),'\nxlag, nylag, nzlag');
+fprintf(fid,'%-30s %s\n',num2str([dxlag dylag 1],'%g %g %i'),'\dxlag, dylag, dzlag');
+fprintf(fid,'%-30s %s\n','5'                          ,'\minimum number of pairs');
+fprintf(fid,'%-30s %s\n','0'                          ,'\standardize sill? (0=no, 1=yes)');
+fprintf(fid,'%-30s %s\n','1'                          ,'\number of variograms');
+fprintf(fid,'%-30s %s\n','1 1 1'                      ,'\tail, head, variogram type');
+fclose(fid);
+
+%Call varmap
+system([issmdir() '/externalpackages/gslib/install/varmap varmap.par']);
+delete('varmap.par');
+
+%Read output
+fid=fopen('varmap.out','r');
+A = textscan(fid,'%f %f %f %f %f %f','headerlines',8);
+fclose(fid);
+delete('varmap.out')
+output = reshape(A{1},[2*nxlag+1 2*nylag+1]);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/massbalance/contourmassbalance.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/massbalance/contourmassbalance.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/massbalance/contourmassbalance.m	(revision 21239)
@@ -0,0 +1,45 @@
+function dhdt=contourmassbalance(md,file)
+%CONTOURMASSBALANCE - compute the mass balance on a contour
+%
+%   Usage:
+%      dhdt=contourmassbalance(md,file)
+
+%some checks
+if nargin~=2,
+	help contourmassbalance
+	error('contourmassbalance error message: bad usage');
+end
+if ((length(md.initialization.vx)~=md.mesh.numberofvertices)|(length(md.initialization.vy)~=md.mesh.numberofvertices))
+	error(['thicknessevolution error message: vx and vy should have a length of ' num2str(md.mesh.numberofvertices)])
+end
+if ~exist(file),
+	error(['thicknessevolution error message: file ' file ' not found']);
+end
+
+%Get segments enveloping contour
+segments=contourenvelope(md.mesh,file);
+%md.stressbalance.icefront=segments; plotmodel(md,'data','pressureload','expdisp',file);
+
+%get flag list of elements and nodes inside the contour
+nodein=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,file,'node',1);
+elemin=(sum(nodein(md.mesh.elements),2)==size(md.mesh.elements,2));
+
+%conputing Mass flux
+x=md.mesh.x;
+y=md.mesh.y;
+vx=mean(md.initialization.vx(segments(:,1:end-1)),2);
+vy=mean(md.initialization.vy(segments(:,1:end-1)),2);
+H=mean(md.geometry.thickness(segments(:,1:end-1)),2);
+nx=cos(atan2((x(segments(:,1))-x(segments(:,2))) , (y(segments(:,2))-y(segments(:,1)))));
+ny=sin(atan2((x(segments(:,1))-x(segments(:,2))) , (y(segments(:,2))-y(segments(:,1)))));
+L=sqrt((x(segments(:,1))-x(segments(:,2))).^2+(y(segments(:,2))-y(segments(:,1))).^2);
+flux = - md.materials.rho_ice*sum(L.*H.*(vx.*nx+vy.*ny)); %outflux is negative!
+disp(['mass outflux on ' file ' = ' num2str(-flux/10^9) ' Gt/yr']);
+areas=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y);
+dhdt=flux/(sum(areas(find(elemin)))*md.materials.rho_ice);
+disp(['dhdt on ' file ' (Flux  method) = ' num2str(dhdt) ' m/yr']);
+
+dhdt=thicknessevolution(md);
+in=find(elemin);
+dhdt=sum(dhdt(in).*areas(in))/sum(areas(in));
+disp(['dhdt on ' file ' (divHV method) = ' num2str(dhdt) ' m/yr']);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/massbalance/divergence.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/massbalance/divergence.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/massbalance/divergence.m	(revision 21239)
@@ -0,0 +1,27 @@
+function div=divergence(md,a,b)
+%DIVERGENCE - divergence of [a;b] vector, using model's triangulation.
+%
+%   Usage:
+%      div=divergence(md,a,b)
+
+if (dimension(md.mesh)==2),
+	numberofelements=md.mesh.numberofelements;
+	numberofnodes=md.mesh.numberofvertices;
+	index=md.mesh.elements;
+	x=md.mesh.x; y=md.mesh.y; z=md.mesh.z;
+else
+	numberofelements=md.mesh.numberofelements2d;
+	numberofnodes=md.mesh.numberofvertices2d;
+	index=md.mesh.elements2d;
+	x=md.mesh.x2d; y=md.mesh.y2d;
+end
+
+%compute nodal functions coefficients N(x,y)=alpha x + beta y + gamma
+[alpha beta]=GetNodalFunctionsCoeff(index,x,y);
+
+summation=[1;1;1];
+dx=(a(index).*alpha)*summation;
+dy=(b(index).*beta)*summation;
+
+div=dx+dy;
+div=averaging(md,div,1);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/massbalance/outflow.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/massbalance/outflow.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/massbalance/outflow.m	(revision 21239)
@@ -0,0 +1,18 @@
+function flag=outflow(md)
+%OUTFLOW - flag nodes on outflux boundary
+%
+%   Usage:
+%      flag=outflow(md);
+
+A=md.mesh.segments(:,1);
+B=md.mesh.segments(:,2);
+Nx=-(md.mesh.y(A)-md.mesh.y(B));
+Ny=  md.mesh.x(A)-md.mesh.x(B);
+Vx=(md.initialization.vx(A)+md.initialization.vx(B))/2;
+Vy=(md.initialization.vy(A)+md.initialization.vy(B))/2;
+
+%dot product
+VdotN=Vx.*Nx+Vy.*Ny;
+
+flag=zeros(md.mesh.numberofvertices,1);
+flag(A(find(VdotN>0)))=1;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/massbalance/outflux.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/massbalance/outflux.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/massbalance/outflux.m	(revision 21239)
@@ -0,0 +1,48 @@
+function flux=outflux(md,varargin)
+%OUTFLUX - flag nodes on outflux boundary
+%
+%   Usage:
+%      flag=outflow(md);
+%      flag=outflow(md,step);
+
+A=md.mesh.segments(:,1);
+B=md.mesh.segments(:,2);
+
+lx=-(md.mesh.y(A)-md.mesh.y(B));
+ly=  md.mesh.x(A)-md.mesh.x(B);
+L=sqrt(lx.^2+ly.^2);
+Nx=lx./L;
+Ny=ly./L;
+
+if nargin==1,
+	if dimension(md.mesh)==3,
+		vxa=DepthAverage(md,md.initialization.vx);
+		vya=DepthAverage(md,md.initialization.vy);
+	else
+		vxa=md.initialization.vx;
+		vya=md.initialization.vy;
+	end
+	Vx=(vxa(A)+vxa(B))/2;
+	Vy=(vya(A)+vya(B))/2;
+	H=(md.geometry.thickness(A)+md.geometry.thickness(B))/2;
+else
+	step=varargin{1};
+	if dimension(md.mesh)==3,
+		vxa=DepthAverage(md,md.results.TransientSolution(step).Vx);
+		vya=DepthAverage(md,md.results.TransientSolution(step).Vy);
+	else
+		vxa=md.results.TransientSolution(step).Vx;
+		vya=md.results.TransientSolution(step).Vy;
+	end
+	Vx=(vxa(A)+vxa(B))/2;
+	Vy=(vya(A)+vya(B))/2;
+	H=(md.results.TransientSolution(step).Thickness(A)+md.results.TransientSolution(step).Thickness(B))/2;
+end
+
+%dot product
+HVdotN=H.*(Vx.*Nx+Vy.*Ny).*L;
+
+%plot_scatter(md.mesh.x(A),md.mesh.y(A),md.materials.rho_ice*HVdotN,'MarkerSize',4);
+flux=md.materials.rho_ice*sum(HVdotN)/10^12;
+
+disp(['Out flux is ' num2str(flux) ' Gt/yr'])
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/sia.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/sia.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/sia.m	(revision 21239)
@@ -0,0 +1,26 @@
+function [velx,vely,vel]=sia(md)
+%SIA - computation of Shallow Ice velocities
+%
+%   This routine uses the model of SIA to compute the velocities
+%   of a 2d model using the surface slope
+%
+%   Usage:
+%      [velx,vely,vel]=sia(md)
+
+if md.mesh.dimension~=2,
+	error('Only 2d meshes are allowed to compute velocity balances');
+end
+
+%Get slope
+[sx,sy,s]=slope(md);
+
+%Average thickness and B over all elements.
+summer=[1;1;1];
+hel=md.geometry.thickness(md.mesh.elements)*summer/3;
+Bel=md.materials.rheology_B(md.mesh.elements)*summer/3;
+
+Ael=Bel.^(-3);
+
+velx=-2*(md.materials.rho_ice*md.constants.g)^3*s.^2.*sx.*Ael/4.*hel.^4;
+vely=-2*(md.materials.rho_ice*md.constants.g)^3*s.^2.*sy.*Ael/4.*hel.^4;
+vel=sqrt(velx.^2+vely.^2);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/thicknessevolution.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/thicknessevolution.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/morlighem/thicknessevolution.m	(revision 21239)
@@ -0,0 +1,28 @@
+function dhdt=thicknessevolution(md)
+%THICKNESSEVOLUTION - compute the new thickness of a model after ∆t
+%
+%   This routine compute the new thickness of a model after a time step
+%   according to the following formula:
+%   dh/dt=-div(Hu)
+%
+%   Usage:
+%      dhdt=thicknessevolution(md)
+
+if (length(md.initialization.vx)~=md.mesh.numberofvertices)|(length(md.initialization.vy)~=md.mesh.numberofvertices)
+	error(['thicknessevolution error message: vx and vy should have a length of ' num2str(md.mesh.numberofvertices)])
+end
+
+%load some variables 
+H=md.geometry.thickness;
+vx=md.initialization.vx;
+vy=md.initialization.vy;
+index=md.mesh.elements;
+
+%compute nodal functions coefficients N(x,y)=alpha x + beta y + gamma
+[alpha beta]=GetNodalFunctionsCoeff(md.mesh.elements,md.mesh.x,md.mesh.y); 
+
+%compute dhdt=div(Hu)
+summation=1/3*ones(3,1);
+dhdt=(vx(index)*summation).*sum( H(index).*alpha,2) + (vy(index)*summation).*sum(H(index).*beta,2) ...
+	+ ( H(index)*summation).*sum(vx(index).*alpha,2) + ( H(index)*summation).*sum(vy(index).*beta,2);
+dhdt=-dhdt;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/seroussi/oasis/carter.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/seroussi/oasis/carter.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/contrib/seroussi/oasis/carter.m	(revision 21239)
@@ -0,0 +1,28 @@
+function attenuation=carter(temperature)
+%CARTER - attenuation as a function of temperature
+%
+%   TWO WAY - Attenuation (in dB/m) as a function of temperature (K)
+%   From Carter at al. 2007 (Radar-based subglacial lake classification in Antarctica)
+%   Figure 4
+%
+%   Usage:
+%      attenuation=carter(temperature)
+
+if(temperature<0)
+	error('input temperature should be in Kelvin (positive)');
+end
+T=temperature-273.15;
+
+Temp=[-50 -45 -40 -35 -30 -25 -20 -15 -10 -5 0]';
+A=[0.0015 0.002 0.003 0.0042 0.0055 0.0083 0.012 0.0175 0.026 0.038 0.055]';
+
+%Now, do a cubic fit between Temp and B: 
+[cfun,gof,output]=fit(Temp,A,'cubicspline');
+%breaks=cfun.p.breaks;
+%coeff=cfun.p.coefs;
+
+%Calculate attenuation
+attenuation=cfun(T);
+
+%Make it a 2 way attenuation
+attenuation=2*attenuation;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/gdaltransform.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/gdaltransform.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/gdaltransform.m	(revision 21239)
@@ -0,0 +1,37 @@
+function [xout,yout] = gdaltransform(x,y,proj_in,proj_out)
+%GDALTRANSFORM - switch from one projection system to another 
+%
+%   Usage:
+%      [x,y] = gdaltransform(x1,y1,epsg_in, epsg_out);
+%
+%   Example: 
+%      [x,y] = gdaltransform(md.mesh.long,md.mesh.lat,'EPSG:4326','EPSG:3031')
+%
+%   For reference: 
+%      EPSG: 4326 (lat,long)
+%      EPSG: 3411 (Greenland,  UPS 45W, 70N)
+%      EPSG: 3031 (Antarctica, UPS 0E,  71S)
+%
+%      ll2xy default projection Antarctica:
+%        +proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.448564109 +units=m +no_defs
+%      ll2xy default projection Greenland:
+%        +proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.448564109 +units=m +no_defs
+%      Bamber's Greeland projection
+%        +proj=stere +lat_0=90 +lat_ts=71 +lon_0=-39 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.448564109 +units=m +no_defs
+%
+%      To get proj.4 string from EPSG, use gdalsrsinfo. Example:    gdalsrsinfo "EPSG:4326" | grep "PROJ.4"
+
+	%give ourselves a unique temporary directory: 
+	temproot=tempname; mkdir(temproot);
+
+	fid=fopen([temproot '/.rand1234.txt'],'w');
+	fprintf(fid,'%8g %8g\n',[x(:) y(:)]');
+	fclose(fid);
+
+	[s,r]=system(['gdaltransform -s_srs ',proj_in,' -t_srs ',proj_out,'  < ' temproot '/.rand1234.txt > ' temproot '/.rand1235.txt']);
+	if s~=0 | ~isempty(deblank(r)),
+		error(r);
+	end
+	A=load([temproot '/.rand1235.txt']);
+	xout=A(:,1); xout=reshape(xout,size(x));
+	yout=A(:,2); yout=reshape(yout,size(y));
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/gmtmask.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/gmtmask.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/gmtmask.m	(revision 21239)
@@ -0,0 +1,67 @@
+function mask = gmtmask(lat,long,varargin)
+%GMTMASK - figure out which lat,long points are on the ocean
+%
+%   Usage:
+%      mask.ocean = gmtmask(md.mesh.lat,md.mesh.long);
+%
+
+	%are we doing a recursive call? 
+	if nargin==3,
+		recursive=1;
+	else 
+		recursive=0;
+	end
+	
+	if(recursive)disp(sprintf('             recursing: num vertices %i',length(lat)));
+	else disp(sprintf('gmtmask: num vertices %i',length(lat)));
+	end
+	
+	%Check lat and long size is not more than 50,000; If so, recursively call gmtmask: 
+	if length(lat)>50000,
+		for i=1:50000:length(lat),
+			j=i+50000-1;
+			if j>length(lat),
+				j=length(lat);
+			end
+			mask(i:j)=gmtmask(lat(i:j),long(i:j),1);
+		end
+		return
+	end
+	
+	%First, write our lat,long file for gmt:
+	nv=length(lat);
+	dlmwrite('./all_vertices.txt',[long lat (1:nv)'],'delimiter','\t','precision',10);
+
+	%Avoid bypassing of the ld library path by Matlab (:()
+	if ismac,
+		dyld_library_path_old=getenv('DYLD_LIBRARY_PATH');
+		setenv('DYLD_LIBRARY_PATH',[ issmdir '/externalpackages/curl/install/lib:' issmdir '/externalpackages/hdf5/install/lib:' issmdir '/externalpackages/netcdf/install/lib' ]);
+	end
+
+	%figure out which vertices are on the ocean, which one on the continent:
+	[status,result] = system('gmt gmtselect ./all_vertices.txt -h0 -Df -R0/360/-90/90  -A0 -JQ180/200 -Nk/s/s/k/s > ./oce_vertices.txt');
+	if status~=0,
+		error(result);
+	end
+
+	%reset DYLD_LIBRARY_PATH to what it was: 
+	if ismac,
+		setenv('DYLD_LIBRARY_PATH',dyld_library_path_old);
+	end
+	%read the con_vertices.txt file and flag our mesh vertices on the continent
+	fid=fopen('./oce_vertices.txt','r');
+	line=fgets(fid); 
+	line=fgets(fid);
+	oce_vertices=[];
+	while line~=-1,
+		ind=str2num(line); ind=ind(3);
+		oce_vertices=[oce_vertices;ind];
+		line=fgets(fid);
+	end
+
+
+	mask=zeros(nv,1);
+	mask(oce_vertices)=1;
+	
+	system('rm -rf ./all_vertices.txt ./oce_vertices.txt ./gmt.history');
+	if ~recursive, disp(sprintf('gmtmask: done')); end;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/gmtmask.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/gmtmask.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/gmtmask.py	(revision 21239)
@@ -0,0 +1,80 @@
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from os import getenv, putenv
+import subprocess
+
+def gmtmask(lat,long,*varargin):
+#GMTMASK - figure out which lat,long points are on the ocean
+#
+#   Usage:
+#      mask.ocean = gmtmask(md.mesh.lat,md.mesh.long);
+#
+	lenlat=len(lat)
+	mask=empty(lenlat)
+	
+	#are we doing a recursive call? 
+	if len(varargin)==3:
+		recursive=1
+	else:
+		recursive=0
+
+	if recursive:
+		string='             recursing: num vertices #i'+str(lenlat)
+	else:
+		string='gmtmask: num vertices #i'+str(lenlat)
+	
+	#Check lat and long size is not more than 50,000 If so, recursively call gmtmask: 
+
+	if lenlat>50000:
+		for i in range(ceil(lenlat/50000)):
+			j=(i+1)*50000-1
+			if j>lenlat:
+				j=lenlat
+			mask[i:j]=gmtmask(lat[i:j],long[i:j],1)
+		return mask
+	
+	
+	#First, write our lat,long file for gmt:
+	nv=lenlat
+	savetxt('./all_vertices.txt',transpose([long, lat, arange(1,nv+1)]),delimiter='\t',fmt='%.10f')
+
+	#Avoid bypassing of the ld library path by Matlab (:()
+	try:
+		issmdir
+	except:
+		issmdir=getenv('ISSM_DIR')
+	try:
+		ismac
+	except:
+		ismac=False	
+
+	if ismac:
+		dyld_library_path_old=getenv('DYLD_LIBRARY_PATH')
+		putenv('DYLD_LIBRARY_PATH',issmdir+'/externalpackages/curl/install/lib:'+issmdir+'/externalpackages/hdf5/install/lib:'+issmdir+'/externalpackages/netcdf/install/lib')
+		
+	#figure out which vertices are on the ocean, which one on the continent:
+	subprocess.call(issmdir+'/externalpackages/gmt/install/bin/gmt gmtselect ./all_vertices.txt -h0 -Df -R0/360/-90/90  -A0 -JQ180/200 -Nk/s/s/k/s > ./oce_vertices.txt',shell=True)
+
+	#reset DYLD_LIBRARY_PATH to what it was: 
+	if ismac:
+		putenv('DYLD_LIBRARY_PATH',dyld_library_path_old)
+	
+	#read the con_vertices.txt file and flag our mesh vertices on the continent
+	fid=open('./oce_vertices.txt','r')
+	line=fid.readline()
+	line=fid.readline()
+	oce_vertices=[]
+	while line:
+		ind=int(float(line.split()[2]))-1;
+		oce_vertices.append(ind)
+		line=fid.readline()
+	fid.close()
+
+	mask=zeros([nv,1])
+	mask[oce_vertices]=1
+	
+	subprocess.call('rm -rf ./all_vertices.txt ./oce_vertices.txt ./gmt.history',shell=True)
+	if not recursive:
+		string='gmtmask: done'
+	return mask
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/gmtmaskparallel.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/gmtmaskparallel.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/gmtmaskparallel.m	(revision 21239)
@@ -0,0 +1,49 @@
+function mask = gmtmaskparallel(lat,long,ncores)
+%GMTMASKPARALLEL- parallel driver for the gmtmask utility
+%
+%   Usage:
+%      mask.ocean = gmtmaskparallel(md.mesh.lat,md.mesh.long,8);
+%
+
+	%First, write our lat,long file for gmt:
+	nv=length(lat);
+
+	%Split: 
+	nnv=1:floor(nv/ncores):nv;
+	nnv(end)=nv+1;
+
+	%For each segment, write all vertices file: 
+	for i=1:length(nnv)-1,
+		dlmwrite(['./all_vertices' num2str(i) '.txt'],[long(nnv(i):nnv(i+1)-1) lat(nnv(i):nnv(i+1)-1) (nnv(i):nnv(i+1)-1)'],'delimiter','\t');
+	end
+
+	if ismac,
+		dyld_library_path_old=getenv('DYLD_LIBRARY_PATH');
+		setenv('DYLD_LIBRARY_PATH',[ issmdir '/externalpackages/curl/install/lib:' issmdir '/externalpackages/hdf5/install/lib:' issmdir '/externalpackages/netcdf/install/lib' ]);
+	end
+
+	%Build xjobs script:
+	fid=fopen('xjobs.script','w');
+	for i=1:length(nnv)-1,
+		fprintf(fid,'gmt gmtselect ./all_vertices%i.txt -h0 -Df -R0/360/-90/90  -A0 -JQ180/200 -Nk/s/s/k/s > ./oce_vertices%i.txt\n',i,i);
+	end
+	fclose(fid);
+
+	%Call xjobs: 
+	system(sprintf('xjobs -j %i -s ./xjobs.script',ncores));
+
+	%reset DYLD_LIBRARY_PATH to what it was: 
+	if ismac,
+		setenv('DYLD_LIBRARY_PATH',dyld_library_path_old);
+	end
+
+	%concatenate: 
+	system('cat oce_vertices*.txt | grep -v Command | awk ''{printf("%s\n",$3);}''> vertices.txt');
+
+	%read the vertices.txt file and flag our mesh vertices on the continent
+	flags=dlmread('./vertices.txt');
+
+	mask=zeros(nv,1);
+	mask(flags)=1;
+	
+	system('rm -rf ./all_vertices*.txt ./oce_vertices*.txt vertices.txt ./gmt.history ./xjobs.script');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/lambert2xy.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/lambert2xy.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/lambert2xy.m	(revision 21239)
@@ -0,0 +1,68 @@
+function [x,y] = lambert2xy(lat,lon,sgn,projection_center_lat,projection_center_lon)  
+%LAMBERT2XY - converts lat long from Lambert Azimuthal to Polar Stereographic
+%
+%   Converts from geodetic latitude and longitude that are 
+%   in Lambert Azimuthal (equal area) projections to Polar 
+%   Stereographic (X,Y) coordinates for the polar regions.
+%
+%   Usage:
+%      [x,y] = lambert2xy(lat,lon,sgn)
+%      [x,y] = lambert2xy(lat,lon,sgn,projection_center_lat,projection_center_lon)
+%
+%      - provide lat in [-90,90] and lon in [-180,180].
+
+%      - sgn = +1 N hemisphere [default projection center lat = 90 lon=0]
+%              -1 S hemisphere [default projection center lat = -90 lon=0]
+
+%Get projection_center_lat and projection_center_lon 
+if nargin==5,
+	latitude0  = projection_center_lat;
+	longitude0 = projection_center_lon;
+elseif nargin==3,
+	if sgn==1,
+		latitude0 = 90; longitude0 = 0;
+		disp('Info: creating coordinates in polar stereographic (Projection center lat: 90N lon: 0)');
+	elseif sgn==-1,
+		latitude0 = -90; longitude0 = 0;
+		disp('Info: creating coordinates in polar stereographic (Projection center lat: 90S lon: 0)');
+	else
+		error('Sign should be either +1 or -1');
+	end
+else
+	help lambert2xy
+	error('bad usage');
+end
+
+% Radius of the earth in meters 
+a = 6378137.0;
+% Eccentricity of the Hughes ellipsoid squared
+e = 0.081819191;
+
+% Projection center latitude and longitude in radians 
+phi0 = latitude0 * pi/180; 
+lam0 = longitude0 * pi/180; 
+
+% Some constant based on phi0 and lam0
+qp= (1-e^2)*((1/(1-e^2))-((1/(2*e))*log((1-e)/(1+e))));
+q0=(1-e^2)*((sin(phi0)/(1-e^2*sin(phi0)*sin(phi0)))-((1/(2*e))*log((1-e*sin(phi0))/(1+e*sin(phi0)))));
+Rq=a*sqrt(qp/2);
+b0=asin(q0/qp);
+D =a*(cos(phi0)/sqrt(1-e^2*sin(phi0)*sin(phi0)))/(Rq*cos(b0));
+
+% Latitude and longitude in radians 
+phi = lat*pi/180;
+lam = lon*pi/180;
+
+% Some other phi,lam dependent parameters 
+q=(1-e^2)*((sin(phi)/(1-e^2*sin(phi)*sin(phi)))-((1/(2*e))*log((1-e*sin(phi))/(1+e*sin(phi)))));
+b =asin(q/qp);
+B =Rq*sqrt(2/(1+sin(b0)*sin(b)+(cos(b0)*cos(b)*cos(lam-lam0))));
+
+% Calculation of x and y
+if(abs(lat)==90)
+	x=0.0; 
+	y=0.0; 
+else
+	x=(B*D)*(cos(b)*sin(lam-lam0));
+	y=(B/D)*((cos(b0)*sin(b))-(sin(b0)*cos(b)*cos(lam-lam0)));
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/ll2mercator.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/ll2mercator.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/ll2mercator.m	(revision 21239)
@@ -0,0 +1,13 @@
+function [mx my]=ll2mercator(lat, lon),
+%LL2MERCATOR - transform lat long to mercator projection
+%
+%   Usage:
+%      [mx my]=ll2mercator(lat, lon)
+
+EARTH_RADIUS = 6378137;
+EQUATOR_CIRCUMFERENCE = 2 * pi * EARTH_RADIUS;
+ORIGIN_SHIFT = EQUATOR_CIRCUMFERENCE / 2.0;
+
+mx = (lon * ORIGIN_SHIFT) / 180.0;
+my = log(tan((90 + lat) * pi/360.0))/(pi/180.0);
+my = (my * ORIGIN_SHIFT) /180.0;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/ll2utm.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/ll2utm.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/ll2utm.m	(revision 21239)
@@ -0,0 +1,226 @@
+function [x,y,f]=ll2utm(varargin)
+%LL2UTM Lat/Lon to UTM coordinates precise conversion.
+%	[X,Y]=LL2UTM2(LAT,LON) or LL2UTM([LAT,LON]) converts coordinates 
+%	LAT,LON (in degrees) to UTM X and Y (in meters). Default datum is WGS84.
+%
+%	LAT and LON can be scalars, vectors or matrix. Outputs X and Y will
+%	have the same size as inputs.
+%
+%	LL2UTM(...,DATUM) uses specific DATUM for conversion. DATUM can be one
+%	of the following char strings:
+%		'wgs84': World Geodetic System 1984 (default)
+%		'nad27': North American Datum 1927
+%		'clk66': Clarke 1866
+%		'nad83': North American Datum 1983
+%		'grs80': Geodetic Reference System 1980
+%		'int24': International 1924 / Hayford 1909
+%	or DATUM can be a 2-element vector [A,F] where A is semimajor axis (in
+%	meters)	and F is flattening of the user-defined ellipsoid.
+%
+%	LL2UTM(...,ZONE) forces the UTM ZONE (scalar integer) instead of
+%	automatic set.
+%
+%	[X,Y,ZONE]=LL2UTM(...) returns also the computed UTM ZONE (negative
+%	value for southern hemisphere points).
+%
+%
+%	XY=LL2UTM(...) or without any output argument returns a 2-column 
+%	matrix [X,Y].
+%
+%	Note:
+%		- LL2UTM does not perform cross-datum conversion.
+%		- precision is near a millimeter.
+%
+%
+%	Reference:
+%		I.G.N., Projection cartographique Mercator Transverse: Algorithmes,
+%		   Notes Techniques NT/G 76, janvier 1995.
+%
+%	Acknowledgments: Mathieu.
+%
+%
+%	Author: Francois Beauducel, <beauducel@ipgp.fr>
+%	Created: 2003-12-02
+%	Updated: 2014-08-24
+
+
+%	Copyright (c) 2001-2014, François Beauducel, covered by BSD License.
+%	All rights reserved.
+%
+%	Redistribution and use in source and binary forms, with or without 
+%	modification, are permitted provided that the following conditions are 
+%	met:
+%
+%	   * Redistributions of source code must retain the above copyright 
+%	     notice, this list of conditions and the following disclaimer.
+%	   * Redistributions in binary form must reproduce the above copyright 
+%	     notice, this list of conditions and the following disclaimer in 
+%	     the documentation and/or other materials provided with the distribution
+%	                           
+%	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+%	AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+%	IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
+%	ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
+%	LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
+%	CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+%	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+%	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+%	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+%	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
+%	POSSIBILITY OF SUCH DAMAGE.
+
+% Available datums
+datums = [ ...
+	{ 'wgs84', 6378137.0, 298.257223563 };
+	{ 'nad83', 6378137.0, 298.257222101 };
+	{ 'grs80', 6378137.0, 298.257222101 };
+	{ 'nad27', 6378206.4, 294.978698214 };
+	{ 'int24', 6378388.0, 297.000000000 };
+	{ 'clk66', 6378206.4, 294.978698214 };
+];
+
+% constants
+D0 = 180/pi;	% conversion rad to deg
+K0 = 0.9996;	% UTM scale factor
+X0 = 500000;	% UTM false East (m)
+
+% defaults
+datum = 'wgs84';
+zone = [];
+
+if nargin < 1
+	error('Not enough input arguments.')
+end
+
+if isnumeric(varargin{1}) & size(varargin{1},2) == 2
+	lat = varargin{1}(:,1);
+	lon = varargin{1}(:,2);
+	v = 1;
+elseif nargin > 1 & isnumeric(varargin{2})
+	lat = varargin{1};
+	lon = varargin{2};
+	v = 2;
+else
+	error('Single input argument must be a 2-column matrix [LAT,LON].')
+end
+
+if all([numel(lat),numel(lon)] > 1) && any(size(lat) ~= size(lon))
+	error('LAT and LON must be the same size or scalars.')
+end
+
+for n = (v+1):nargin
+	% LL2UTM(...,DATUM)
+	if ischar(varargin{n}) | (isnumeric(varargin{n}) & numel(varargin{n})==2)
+		datum = varargin{n};
+	% LL2UTM(...,ZONE)
+	elseif isnumeric(varargin{n}) & isscalar(varargin{n})
+			zone = round(varargin{n});
+	else
+		error('Unknown argument #%d. See documentation.',n)
+	end
+end
+
+if ischar(datum)
+	% LL2UTM(...,DATUM) with DATUM as char
+	if ~any(strcmpi(datum,datums(:,1)))
+		error('Unkown DATUM name "%s"',datum);
+	end
+	k = find(strcmpi(datum,datums(:,1)));
+	A1 = datums{k,2};
+	F1 = datums{k,3};	
+else
+	% LL2UTM(...,DATUM) with DATUM as [A,F] user-defined
+	A1 = datum(1);
+	F1 = datum(2);
+end
+
+p1 = lat/D0;			% Phi = Latitude (rad)
+l1 = lon/D0;			% Lambda = Longitude (rad)
+
+% UTM zone automatic setting
+if isempty(zone)
+	F0 = round((l1*D0 + 183)/6);
+else
+	F0 = zone;
+end
+
+B1 = A1*(1 - 1/F1);
+E1 = sqrt((A1*A1 - B1*B1)/(A1*A1));
+P0 = 0/D0;
+L0 = (6*F0 - 183)/D0;		% UTM origin longitude (rad)
+Y0 = 1e7*(p1 < 0);		% UTM false northern (m)
+N = K0*A1;
+
+C = coef(E1,0);
+B = C(1)*P0 + C(2)*sin(2*P0) + C(3)*sin(4*P0) + C(4)*sin(6*P0) + C(5)*sin(8*P0);
+YS = Y0 - N*B;
+
+C = coef(E1,2);
+L = log(tan(pi/4 + p1/2).*(((1 - E1*sin(p1))./(1 + E1*sin(p1))).^(E1/2)));
+z = complex(atan(sinh(L)./cos(l1 - L0)),log(tan(pi/4 + asin(sin(l1 - L0)./cosh(L))/2)));
+Z = N.*C(1).*z + N.*(C(2)*sin(2*z) + C(3)*sin(4*z) + C(4)*sin(6*z) + C(5)*sin(8*z));
+xs = imag(Z) + X0;
+ys = real(Z) + YS;
+
+% outputs zone if needed: scalar value if unique, or vector/matrix of the
+% same size as x/y in case of crossed zones
+if nargout > 2
+	fu = unique(F0.*sign(lat));
+	if isscalar(fu)
+		f = fu;
+	else
+		f = F0;
+	end
+end
+
+if nargout < 2
+	x = [xs(:),ys(:)];
+else
+	x = xs;
+	y = ys;
+end
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function c = coef(e,m)
+%COEF Projection coefficients
+%	COEF(E,M) returns a vector of 5 coefficients from:
+%		E = first ellipsoid excentricity
+%		M = 0 for transverse mercator
+%		M = 1 for transverse mercator reverse coefficients
+%		M = 2 for merdian arc
+
+
+if nargin < 2
+	m = 0;
+end
+
+switch m
+	case 0
+	c0 = [-175/16384, 0,   -5/256, 0,  -3/64, 0, -1/4, 0, 1;
+           -105/4096, 0, -45/1024, 0,  -3/32, 0, -3/8, 0, 0;
+           525/16384, 0,  45/1024, 0, 15/256, 0,    0, 0, 0;
+          -175/12288, 0, -35/3072, 0,      0, 0,    0, 0, 0;
+          315/131072, 0,        0, 0,      0, 0,    0, 0, 0];
+	  
+	case 1
+	c0 = [-175/16384, 0,   -5/256, 0,  -3/64, 0, -1/4, 0, 1;
+             1/61440, 0,   7/2048, 0,   1/48, 0,  1/8, 0, 0;
+          559/368640, 0,   3/1280, 0,  1/768, 0,    0, 0, 0;
+          283/430080, 0, 17/30720, 0,      0, 0,    0, 0, 0;
+       4397/41287680, 0,        0, 0,      0, 0,    0, 0, 0];
+
+	case 2
+	c0 = [-175/16384, 0,   -5/256, 0,  -3/64, 0, -1/4, 0, 1;
+         -901/184320, 0,  -9/1024, 0,  -1/96, 0,  1/8, 0, 0;
+         -311/737280, 0,  17/5120, 0, 13/768, 0,    0, 0, 0;
+          899/430080, 0, 61/15360, 0,      0, 0,    0, 0, 0;
+      49561/41287680, 0,        0, 0,      0, 0,    0, 0, 0];
+   
+end
+c = zeros(size(c0,1),1);
+
+for i = 1:size(c0,1)
+    c(i) = polyval(c0(i,:),e);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/ll2xy.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/ll2xy.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/ll2xy.m	(revision 21239)
@@ -0,0 +1,66 @@
+function [x,y] = ll2xy(lat,lon,sgn,central_meridian,standard_parallel)  
+%LL2XY - converts lat long to polar stereographic
+%
+%   Converts from geodetic latitude and longitude to Polar 
+%   Stereographic (X,Y) coordinates for the polar regions.
+%   Author: Michael P. Schodlok, December 2003 (map2ll)
+%
+%   Usage:
+%      [x,y] = ll2xy(lat,lon,sgn)
+%      [x,y] = ll2xy(lat,lon,sgn,central_meridian,standard_parallel)
+%
+%      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+%                               -1 : south latitude (default is mer=0  lat=71)
+
+%Get central_meridian and standard_parallel depending on hemisphere
+if nargin==5,
+	delta = central_meridian;
+	slat  = standard_parallel;
+elseif nargin==3
+	if sgn == 1,
+		delta = 45; slat = 70;
+		disp('Info: creating coordinates in polar stereographic (Std Latitude: 70ºN Meridian: 45º)');
+	elseif sgn==-1,
+		delta = 0;  slat = 71;
+		disp('Info: creating coordinates in polar stereographic (Std Latitude: 71ºS Meridian: 0º)');
+	else
+		error('Sign should be either +1 or -1');
+	end
+else
+	help ll2xy
+	error('bad usage');
+end
+
+% Conversion constant from degrees to radians
+cde  = 57.29577951;
+% Radius of the earth in meters
+re   = 6378.273*10^3;
+% Eccentricity of the Hughes ellipsoid squared
+ex2   = .006693883;
+% Eccentricity of the Hughes ellipsoid
+ex    =  sqrt(ex2);
+
+latitude  = abs(lat) * pi/180.;
+longitude = (lon + delta) * pi/180.;
+
+% compute X and Y in grid coordinates.
+T = tan(pi/4-latitude/2) ./ ((1-ex*sin(latitude))./(1+ex*sin(latitude))).^(ex/2);
+
+if (90 - slat) <  1.e-5 
+	rho = 2.*re*T/sqrt((1.+ex)^(1.+ex)*(1.-ex)^(1.-ex));
+else
+	sl  = slat*pi/180.;
+	tc  = tan(pi/4.-sl/2.)/((1.-ex*sin(sl))/(1.+ex*sin(sl)))^(ex/2.);
+	mc  = cos(sl)/sqrt(1.0-ex2*(sin(sl)^2));
+	rho = re*mc*T/tc;
+end
+
+y = -rho .* sgn .* cos(sgn.*longitude);
+x =  rho .* sgn .* sin(sgn.*longitude);
+
+[cnt1,cnt2] = find(latitude(:) >= pi / 2.);
+
+if cnt1
+	x(cnt1) = 0.0;
+	y(cnt1) = 0.0;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/ll2xy.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/ll2xy.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/ll2xy.py	(revision 21239)
@@ -0,0 +1,62 @@
+import numpy as npy 
+
+def ll2xy(lat,lon,sgn=-1,central_meridian=0,standard_parallel=71):
+	'''
+	LL2XY - converts lat lon to polar stereographic
+
+   Converts from geodetic latitude and longitude to Polar 
+   Stereographic (X,Y) coordinates for the polar regions.
+   Author: Michael P. Schodlok, December 2003 (map2ll)
+
+   Usage:
+      x,y = ll2xy(lat,lon,sgn)
+      x,y = ll2xy(lat,lon,sgn,central_meridian,standard_parallel)
+
+      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+                               -1 : south latitude (default is mer=0  lat=71)
+	'''
+
+	assert sgn==1 or sgn==-1, 'error: sgn should be either +1 or -1'
+
+	#Get central_meridian and standard_parallel depending on hemisphere
+	if sgn == 1:
+		delta = 45
+		slat = 70
+		print '		ll2xy: creating coordinates in north polar stereographic (Std Latitude: 70N Meridian: 45)'
+	else: 
+		delta = central_meridian
+		slat = standard_parallel
+		print '		ll2xy: creating coordinates in south polar stereographic (Std Latitude: 71S Meridian: 0)'
+	
+	# Conversion constant from degrees to radians
+	cde = 57.29577951
+	# Radius of the earth in meters
+	re = 6378.273*10**3
+	# Eccentricity of the Hughes ellipsoid squared
+	ex2 = .006693883
+	# Eccentricity of the Hughes ellipsoid
+	ex = npy.sqrt(ex2)
+	
+	latitude = npy.abs(lat) * npy.pi/180.
+	longitude = (lon + delta) * npy.pi/180.
+	
+	# compute X and Y in grid coordinates.
+	T = npy.tan(npy.pi/4-latitude/2) / ((1-ex*npy.sin(latitude))/(1+ex*npy.sin(latitude)))**(ex/2)
+	
+	if (90 - slat) <  1.e-5:
+		rho = 2.*re*T/npy.sqrt((1.+ex)**(1.+ex)*(1.-ex)**(1.-ex))
+	else:
+		sl  = slat*npy.pi/180.
+		tc  = npy.tan(npy.pi/4.-sl/2.)/((1.-ex*npy.sin(sl))/(1.+ex*npy.sin(sl)))**(ex/2.)
+		mc  = npy.cos(sl)/npy.sqrt(1.0-ex2*(npy.sin(sl)**2))
+		rho = re*mc*T/tc
+	
+	y = -rho * sgn * npy.cos(sgn*longitude)
+	x =  rho * sgn * npy.sin(sgn*longitude)
+
+	cnt1=npy.nonzero(latitude>= npy.pi/2.)[0]
+	
+	if cnt1:
+		x[cnt1,0] = 0.0
+		y[cnt1,0] = 0.0
+	return x,y
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/mercator2ll.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/mercator2ll.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/mercator2ll.m	(revision 21239)
@@ -0,0 +1,13 @@
+function [lat lon]=mercator2ll(mx,my),
+%LL2MERCATOR - transform mercator projection to lat/lon
+%
+%   Usage:
+%      [lat lon]=mercator2ll(mx,my)
+
+EARTH_RADIUS = 6378137;
+EQUATOR_CIRCUMFERENCE = 2 * pi * EARTH_RADIUS;
+ORIGIN_SHIFT = EQUATOR_CIRCUMFERENCE / 2.0;
+
+lon = mx * 180.0 / ORIGIN_SHIFT;
+lat = my * 180.0 /ORIGIN_SHIFT;
+lat = 180.0/pi*(2.0*atan(exp(lat*pi/180.0))-pi/2.0);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/utm2ll.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/utm2ll.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/utm2ll.m	(revision 21239)
@@ -0,0 +1,191 @@
+function [lat,lon]=utm2ll(x,y,f,datum,varargin)
+%UTM2LL UTM to Lat/Lon coordinates precise conversion.
+%	[LAT,LON]=UTM2LL(X,Y,ZONE) converts UTM coordinates X,Y (in meters)
+%	defined in the UTM ZONE (integer) to latitude LAT and longitude LON 
+%	(in degrees). Default datum is WGS84.
+%
+%	X and Y can be scalars, vectors or matrix. Outputs LAT and LON will
+%	have the same size as inputs.
+%
+%	For southern hemisphere points, use negative zone -ZONE.
+%
+%	UTM2LL(X,Y,ZONE,DATUM) uses specific DATUM for conversion. DATUM can be
+%	a string in the following list:
+%		'wgs84': World Geodetic System 1984 (default)
+%		'nad27': North American Datum 1927
+%		'clk66': Clarke 1866
+%		'nad83': North American Datum 1983
+%		'grs80': Geodetic Reference System 1980
+%		'int24': International 1924 / Hayford 1909
+%	or DATUM can be a 2-element vector [A,F] where A is semimajor axis (in
+%	meters)	and F is flattening of the user-defined ellipsoid.
+%
+%	Notice:
+%		- UTM2LL does not perform cross-datum conversion.
+%		- precision is near a millimeter.
+%
+%
+%	Reference:
+%		I.G.N., Projection cartographique Mercator Transverse: Algorithmes,
+%		   Notes Techniques NT/G 76, janvier 1995.
+%
+%	Author: Francois Beauducel, <beauducel@ipgp.fr>
+%	Created: 2001-08-23
+%	Updated: 2014-04-20
+
+
+%	Copyright (c) 2001-2014, François Beauducel, covered by BSD License.
+%	All rights reserved.
+%
+%	Redistribution and use in source and binary forms, with or without 
+%	modification, are permitted provided that the following conditions are 
+%	met:
+%
+%	   * Redistributions of source code must retain the above copyright 
+%	     notice, this list of conditions and the following disclaimer.
+%	   * Redistributions in binary form must reproduce the above copyright 
+%	     notice, this list of conditions and the following disclaimer in 
+%	     the documentation and/or other materials provided with the distribution
+%	                           
+%	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+%	AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+%	IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
+%	ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
+%	LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
+%	CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+%	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+%	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+%	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+%	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
+%	POSSIBILITY OF SUCH DAMAGE.
+
+% Available datums
+datums = [ ...
+	{ 'wgs84', 6378137.0, 298.257223563 };
+	{ 'nad83', 6378137.0, 298.257222101 };
+	{ 'grs80', 6378137.0, 298.257222101 };
+	{ 'nad27', 6378206.4, 294.978698214 };
+	{ 'int24', 6378388.0, 297.000000000 };
+	{ 'clk66', 6378206.4, 294.978698214 };
+];
+
+if nargin < 3
+	error('Not enough input arguments.')
+end
+
+if all([numel(x),numel(y)] > 1) && any(size(x) ~= size(y))
+	error('X and Y must be the same size or scalars.')
+end
+
+if ~isnumeric(f) || ~isscalar(f) || f ~= round(f)
+	error('ZONE must be a scalar integer.')
+end
+
+if nargin < 4
+	datum = 'wgs84';
+end
+
+if ischar(datum)
+	if ~any(strcmpi(datum,datums(:,1)))
+		error('Unkown DATUM name "%s"',datum);
+	end
+	k = find(strcmpi(datum,datums(:,1)));
+	A1 = datums{k,2};
+	F1 = datums{k,3};	
+else
+	if numel(datum) ~= 2
+		error('User defined DATUM must be a vector [A,F].');
+	end
+	A1 = datum(1);
+	F1 = datum(2);
+end
+
+% constants
+D0 = 180/pi;	% conversion rad to deg
+maxiter = 100;	% maximum iteration for latitude computation
+eps = 1e-11;	% minimum residue for latitude computation
+
+K0 = 0.9996;					% UTM scale factor
+X0 = 500000;					% UTM false East (m)
+Y0 = 1e7*(f < 0);				% UTM false North (m)
+P0 = 0;						% UTM origin latitude (rad)
+L0 = (6*abs(f) - 183)/D0;			% UTM origin longitude (rad)
+E1 = sqrt((A1^2 - (A1*(1 - 1/F1))^2)/A1^2);	% ellpsoid excentricity
+N = K0*A1;
+
+% computing parameters for Mercator Transverse projection
+C = coef(E1,0);
+YS = Y0 - N*(C(1)*P0 + C(2)*sin(2*P0) + C(3)*sin(4*P0) + C(4)*sin(6*P0) + C(5)*sin(8*P0));
+
+C = coef(E1,1);
+zt = complex((y - YS)/N/C(1),(x - X0)/N/C(1));
+z = zt - C(2)*sin(2*zt) - C(3)*sin(4*zt) - C(4)*sin(6*zt) - C(5)*sin(8*zt);
+L = real(z);
+LS = imag(z);
+
+l = L0 + atan(sinh(LS)./cos(L));
+p = asin(sin(L)./cosh(LS));
+
+L = log(tan(pi/4 + p/2));
+
+% calculates latitude from the isometric latitude
+p = 2*atan(exp(L)) - pi/2;
+p0 = NaN;
+n = 0;
+while any(isnan(p0) | abs(p - p0) > eps) & n < maxiter
+	p0 = p;
+	es = E1*sin(p0);
+	p = 2*atan(((1 + es)./(1 - es)).^(E1/2).*exp(L)) - pi/2;
+	n = n + 1;
+end
+
+if nargout < 2
+	lat = D0*[p(:),l(:)];
+else
+	lat = p*D0;
+	lon = l*D0;
+end
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function c = coef(e,m)
+%COEF Projection coefficients
+%	COEF(E,M) returns a vector of 5 coefficients from:
+%		E = first ellipsoid excentricity
+%		M = 0 for transverse mercator
+%		M = 1 for transverse mercator reverse coefficients
+%		M = 2 for merdian arc
+
+
+if nargin < 2
+	m = 0;
+end
+
+switch m
+	case 0
+	c0 = [-175/16384, 0,   -5/256, 0,  -3/64, 0, -1/4, 0, 1;
+           -105/4096, 0, -45/1024, 0,  -3/32, 0, -3/8, 0, 0;
+           525/16384, 0,  45/1024, 0, 15/256, 0,    0, 0, 0;
+          -175/12288, 0, -35/3072, 0,      0, 0,    0, 0, 0;
+          315/131072, 0,        0, 0,      0, 0,    0, 0, 0];
+	  
+	case 1
+	c0 = [-175/16384, 0,   -5/256, 0,  -3/64, 0, -1/4, 0, 1;
+             1/61440, 0,   7/2048, 0,   1/48, 0,  1/8, 0, 0;
+          559/368640, 0,   3/1280, 0,  1/768, 0,    0, 0, 0;
+          283/430080, 0, 17/30720, 0,      0, 0,    0, 0, 0;
+       4397/41287680, 0,        0, 0,      0, 0,    0, 0, 0];
+
+	case 2
+	c0 = [-175/16384, 0,   -5/256, 0,  -3/64, 0, -1/4, 0, 1;
+         -901/184320, 0,  -9/1024, 0,  -1/96, 0,  1/8, 0, 0;
+         -311/737280, 0,  17/5120, 0, 13/768, 0,    0, 0, 0;
+          899/430080, 0, 61/15360, 0,      0, 0,    0, 0, 0;
+      49561/41287680, 0,        0, 0,      0, 0,    0, 0, 0];
+   
+end
+c = zeros(size(c0,1),1);
+
+for i = 1:size(c0,1)
+    c(i) = polyval(c0(i,:),e);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/xy2lambert.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/xy2lambert.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/xy2lambert.m	(revision 21239)
@@ -0,0 +1,68 @@
+function [lat,lon] = xy2lambert(x,y,sgn,projection_center_lat,projection_center_lon)  
+%XY2LAMBERT - converts xy to lat lon in Lambert Azimuthal
+%
+%   Converts from Ploar Stereographic (X,Y) coordinates to geodetic 
+%   lat lon that are in Lambert Azimuthal (equal area) projection.
+%
+%   Usage:
+%      [lat,lon] = xy2lambert(x,y,sgn)
+%      [lat,lon] = xy2lambert(x,y,sgn,projection_center_lat,projection_center_lon)
+%
+%      - provide lat in [-90,90] and lon in [-180,180].
+%
+%      - sgn = +1 N hemisphere [default projection center lat = 90 lon=0]
+%              -1 S hemisphere [default projection center lat = -90 lon=0]
+
+%Get projection_center_lat and projection_center_lon 
+if nargin==5,
+	latitude0  = projection_center_lat;
+	longitude0 = projection_center_lon;
+elseif nargin==3,
+	if sgn==1,
+		latitude0 = 90; longitude0 = 0;
+		disp('Info: creating coordinates in Lambert Azimuthal equal-area (Projection center lat: 90N lon: 0)');
+	elseif sgn==-1,
+		latitude0 = -90; longitude0 = 0;
+		disp('Info: creating coordinates in Lambert Azimuthal equal-area (Projection center lat: 90S lon: 0)');
+	else
+		error('Sign should be either +1 or -1');
+	end
+else
+	help xy2lambert
+	error('bad usage');
+end
+
+% Radius of the earth in meters 
+a = 6378137.0;
+% Eccentricity of the Hughes ellipsoid squared
+e = 0.081819191;
+
+% Projection center latitude and longitude in radians 
+phi0 = latitude0 * pi/180; 
+lam0 = longitude0 * pi/180; 
+
+% Some constants based on phi0 and lam0
+% (as in forward calculation)
+qp= (1-e^2)*((1/(1-e^2))-((1/(2*e))*log((1-e)/(1+e))));
+q0=(1-e^2)*((sin(phi0)/(1-e^2*sin(phi0)*sin(phi0)))-((1/(2*e))*log((1-e*sin(phi0))/(1+e*sin(phi0)))));
+Rq=a*sqrt(qp/2);
+b0=asin(q0/qp);
+D =a*(cos(phi0)/sqrt(1-e^2*sin(phi0)*sin(phi0)))/(Rq*cos(b0));
+
+% Some other (x,y) dependent parameters 
+rho=sqrt((x/D)^2+(D*y)^2);
+C=2*asin(rho/(2*Rq));
+b_prime=asin((cos(C)*sin(b0))+((D*y*sin(C)*cos(b0))/rho));
+
+% Calculation of lat and lon 
+dist=sqrt(x^2+y^2);
+if(dist<=0.1)
+	lat=sgn*90.0;
+	lon=0.0;
+else
+	lat_rad=b_prime+((e^2/3+31*e^4/180+517*e^6/5040)*sin(2*b_prime))+((23*e^4/360+251*e^6/3780)*sin(4*b_prime))+((761*e^6/45360)*sin(6*b_prime));
+	lon_rad=lam0+atan(x*sin(C)/(D*rho*cos(b0)*cos(C)-D^2*y*sin(b0)*sin(C)));
+	% in degrees 
+	lat=lat_rad*180/pi;
+	lon=lon_rad*180/pi;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/xy2ll.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/xy2ll.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/xy2ll.m	(revision 21239)
@@ -0,0 +1,72 @@
+function [lat,lon] = xy2ll(x,y,sgn,central_meridian,standard_parallel)
+%XY2LL - converts xy to lat long
+%
+%   Converts Polar  Stereographic (X,Y) coordinates for the polar regions to
+%   latitude and longitude Stereographic (X,Y) coordinates for the polar
+%   regions.
+%   Author: Michael P. Schodlok, December 2003 (map2xy.m)
+%
+%   Usage:
+%      [lat,lon] = xy2ll(x,y,sgn);
+%      [lat,lon] = xy2ll(x,y,sgn,central_meridian,standard_parallel);
+%
+%      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+%                               -1 : south latitude (default is mer=0  lat=71)
+
+%Get central_meridian and standard_parallel depending on hemisphere
+if nargin==5,
+	delta = central_meridian;
+	slat  = standard_parallel;
+elseif nargin==3
+	if sgn == 1,
+		delta = 45; slat = 70;
+		disp('Warning: expecting coordinates in polar stereographic (Std Latitude: 70ºN Meridian: 45º)');
+	elseif sgn==-1,
+		delta = 0;  slat = 71;
+		disp('Warning: expecting coordinates in polar stereographic (Std Latitude: 71ºS Meridian: 0º)');
+	else
+		error('Sign should be either +1 or -1');
+	end
+else
+	help xy2ll
+	error('bad usage');
+end
+
+% Conversion constant from degrees to radians
+cde  = 57.29577951;
+% Radius of the earth in meters
+re   = 6378.273*10^3;
+% Eccentricity of the Hughes ellipsoid squared
+ex2   = .006693883;
+% Eccentricity of the Hughes ellipsoid
+ex    =  sqrt(ex2);
+
+sl  = slat*pi/180.;
+rho = sqrt(x.^2 + y.^2);
+cm = cos(sl) / sqrt(1.0 - ex2 * (sin(sl)^2));
+T = tan((pi / 4.0) - (sl / 2.0)) / ((1.0 - ex * sin(sl)) / (1.0 + ex * sin(sl)))^(ex / 2.0);
+
+if  abs(slat-90.) < 1.e-5
+	T = rho * sqrt((1. + ex)^(1. + ex) * (1. - ex)^(1. - ex)) / 2. / re;
+else
+	T = rho * T / (re * cm);
+end
+
+chi = (pi / 2.0) - 2.0 * atan(T);
+lat = chi + ((ex2 / 2.0) + (5.0 * ex2^2.0 / 24.0) + (ex2^3.0 / 12.0)) * ...
+	sin(2 * chi) + ((7.0 * ex2^2.0 / 48.0) + (29.0 * ex2^3 / 240.0)) * ...
+	sin(4.0 * chi) + (7.0 * ex2^3.0 / 120.0) * sin(6.0 * chi) ;
+
+lat = sgn * lat;
+lon = atan2(sgn * x,-sgn * y);
+lon = sgn * lon;
+
+[res1,res2] = find(rho(:) <= 0.1);
+if res1
+	lat(res1) = 90. * sgn;
+	lon(res1) = 0.0;
+end
+
+lon = lon * 180. / pi;
+lat = lat * 180. / pi;
+lon = lon - delta; 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/xy2ll.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/xy2ll.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/coordsystems/xy2ll.py	(revision 21239)
@@ -0,0 +1,82 @@
+import numpy as npy
+from math import pi
+
+def xy2ll(x, y, sgn, *args):
+	'''
+	XY2LL - converts xy to lat long
+	
+	Converts Polar  Stereographic (X, Y) coordinates for the polar regions to
+	latitude and longitude Stereographic (X, Y) coordinates for the polar
+	regions.
+	Author: Michael P. Schodlok, December 2003 (map2xy.m)
+	
+	Usage:
+	   [lat, lon] = xy2ll(x, y, sgn);
+	   [lat, lon] = xy2ll(x, y, sgn, central_meridian, standard_parallel);
+	
+	   - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+	                            -1 : south latitude (default is mer=0  lat=71)
+	'''
+
+	#Get central_meridian and standard_parallel depending on hemisphere
+	if len(args) == 2:
+		delta = args[0]
+		slat  = args[1]
+	elif len(args) == 0:
+		if sgn == 1:
+			delta = 45. 
+			slat = 70.
+			print '		xy2ll: creating coordinates in north polar stereographic (Std Latitude: 70degN Meridian: 45deg)'
+		elif sgn == -1:
+			delta = 0.  
+			slat = 71.
+			print '		xy2ll: creating coordinates in south polar stereographic (Std Latitude: 71degS Meridian: 0deg)'
+		else:
+			raise ValueError('sgn should be either +1 or -1')
+	else:
+		raise StandardError('bad usage: type "help(xy2ll)" for details')
+
+	# if x,y passed as lists, convert to numpy arrays
+	if type(x) != "numpy.ndarray":
+		x=npy.array(x)
+	if type(y) != "numpy.ndarray":
+		y=npy.array(y)
+
+	## Conversion constant from degrees to radians
+	cde = 57.29577951
+	## Radius of the earth in meters
+	re = 6378.273*10**3
+	## Eccentricity of the Hughes ellipsoid squared
+	ex2 = .006693883
+	## Eccentricity of the Hughes ellipsoid
+	ex = npy.sqrt(ex2)
+	
+	sl = slat*pi/180.
+	rho = npy.sqrt(x**2 + y**2)
+	cm = npy.cos(sl) / npy.sqrt(1.0 - ex2 * (npy.sin(sl)**2))
+	T = npy.tan((pi/4.0) - (sl/2.0)) / ((1.0 - ex*npy.sin(sl)) / (1.0 + ex*npy.sin(sl)))**(ex / 2.0)
+	
+	if abs(slat-90.) < 1.e-5:
+		T = rho*npy.sqrt((1. + ex)**(1. + ex) * (1. - ex)**(1. - ex)) / 2. / re
+	else:
+		T = rho * T / (re * cm)
+	
+	chi = (pi / 2.0) - 2.0 * npy.arctan(T)
+	lat = chi + ((ex2 / 2.0) + (5.0 * ex2**2.0 / 24.0) + (ex2**3.0 / 12.0)) * \
+		npy.sin(2 * chi) + ((7.0 * ex2**2.0 / 48.0) + (29.0 * ex2**3 / 240.0)) * \
+		npy.sin(4.0 * chi) + (7.0 * ex2**3.0 / 120.0) * npy.sin(6.0 * chi) 
+	
+	lat = sgn * lat
+	lon = npy.arctan2(sgn * x,-sgn * y)
+	lon = sgn * lon
+	
+	res1 = npy.nonzero(rho <= 0.1)[0]
+	if len(res1) > 0:
+		lat[res1] = 90. * sgn
+		lon[res1] = 0.0
+	
+	lon = lon * 180. / pi
+	lat = lat * 180. / pi
+	lon = lon - delta 
+
+	return lat, lon
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/dev/devpath.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/dev/devpath.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/dev/devpath.m	(revision 21239)
@@ -0,0 +1,40 @@
+% clear the last warning to focus on the warnings of the ISSM path
+lastwarn(''); 
+
+%Recover ISSM_DIR , or if on a Windows machine, ISSM_DIR_WIN
+if ~ispc,
+	ISSM_DIR=getenv('ISSM_DIR');
+else
+	ISSM_DIR=getenv('ISSM_DIR_WIN');
+end
+if (isempty(ISSM_DIR)),
+	error('''ISSM_DIR'' environment variable is empty! You should define ISSM_DIR in your .cshrc or .bashrc!');
+end
+
+%Now add all issm code paths necessary to run issm smoothly. 
+%We capture the error output, so that we can warn the user to update 
+%the variable ISSM_DIR in this file, in case it is not correctly setup. 
+
+%ISSM path
+addpath([ISSM_DIR '/src/m/os/']); %load recursivepath
+addpath([ISSM_DIR '/lib']);       %load mex
+addpath(recursivepath([ISSM_DIR '/src/m']));
+addpath(recursivepath([ISSM_DIR '/externalpackages/scotch']));
+addpath(recursivepath([ISSM_DIR '/externalpackages/canos']));
+addpath(recursivepath([ISSM_DIR '/externalpackages/kml']));
+addpath(recursivepath([ISSM_DIR '/externalpackages/export_fig']));
+addpath(recursivepath([ISSM_DIR '/externalpackages/googleearthtoolbox']));
+addpath(recursivepath([ISSM_DIR '/externalpackages/howatmask']));
+addpath(recursivepath([ISSM_DIR '/externalpackages/dem']));
+clear ISSM_DIR;
+
+%Check on any warning messages that might indicate that the paths were not correct. 
+if ~isempty(lastwarn),
+	fprintf('\n  Error trying to setup ''ISSM'' code paths. Try and update the ISSM_DIR variable in your .cshrc or .bashrc!\n');
+	fprintf('  ''ISSM'' will not  work at all until this is resolved\n\n');
+else
+	fprintf('\n  ISSM development path correctly loaded\n\n');
+end
+
+%disable matlab bell!
+beep off;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/dev/devpath.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/dev/devpath.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/dev/devpath.py	(revision 21239)
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+import os,sys
+import warnings
+
+#Recover ISSM_DIR and USERNAME
+ISSM_DIR = os.getenv('ISSM_DIR')
+USERNAME = os.getenv('USER')
+JPL_SVN  = os.getenv('JPL_SVN')
+if(ISSM_DIR==None):
+	raise NameError('"ISSM_DIR" environment variable is empty! You should define ISSM_DIR in your .cshrc or .bashrc!')
+
+#Go through src/m and append any directory that contains a *.py file to PATH 
+for root,dirs,files in os.walk(ISSM_DIR+ '/src/m'):
+	if '.svn' in dirs:
+		dirs.remove('.svn')
+	for file in files:
+		if file.find(".py") != -1:
+			if file.find(".pyc") == -1:
+				if root not in sys.path:
+					sys.path.append(root)
+				
+sys.path.append(ISSM_DIR + '/lib')
+sys.path.append(ISSM_DIR + '/src/wrappers/python/.libs')
+# If using clusters, we need to have the path to the cluster settings directory
+if(JPL_SVN!=None):
+	if os.path.exists(JPL_SVN + '/usr/' + USERNAME):
+		sys.path.append(JPL_SVN + '/usr/' + USERNAME)
+	else:
+		warnings.warn('cluster settings should be in, '+ JPL_SVN +'/usr/' + USERNAME)
+
+#Manual imports for commonly used functions
+from plotmodel import plotmodel
+
+#c = get_ipython().config
+#c.InteractiveShellApp.exec_lines = []
+#c.InteractiveShellApp.exec_lines.append('%load_ext autoreload')
+#c.InteractiveShellApp.exec_lines.append('%autoreload 2')
+#c.InteractiveShellApp.exec_lines.append('print "Warning: disable autoreload in startup.py to improve performance." ')
+
+print("\n  ISSM development path correctly loaded\n\n")
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/dev/issmversion.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/dev/issmversion.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/dev/issmversion.m	(revision 21239)
@@ -0,0 +1,22 @@
+function issmversion(),
+%ISSMVERSION - display ISSM version
+%
+%   Usage:
+%      issmversion()
+
+
+if exist('IssmConfig_matlab')~=3,
+	error('ISSM not correctly installed. "IssmConfig_matlab" not found');
+end
+
+disp([' ']);
+disp([IssmConfig('PACKAGE_NAME') ' Version ' IssmConfig('PACKAGE_VERSION')]);
+disp(['(website: ' IssmConfig('PACKAGE_URL') ' contact: ' IssmConfig('PACKAGE_BUGREPORT') ')']);
+disp([' ']);
+disp(['Build date: ' IssmConfig('PACKAGE_BUILD_DATE')]);
+disp(['Compiled on ' IssmConfig('HOST_VENDOR') ' ' IssmConfig('HOST_OS') ' ' IssmConfig('HOST_ARCH') ' by ' IssmConfig('USER_NAME')]);
+disp([' ']);
+disp(['Copyright (c) 2009-2016 California Institute of Technology']);
+disp([' ']);
+disp(['    to get started type: issmdoc']);
+disp([' ']);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/dev/issmversion.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/dev/issmversion.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/dev/issmversion.py	(revision 21239)
@@ -0,0 +1,20 @@
+from IssmConfig import IssmConfig
+
+def issmversion():
+	"""
+	ISSMVERSION - display ISSM version
+
+		Usage:
+			issmversion()
+	"""
+
+
+print ' '
+print IssmConfig('PACKAGE_NAME')[0]+' Version '+IssmConfig('PACKAGE_VERSION')[0]
+print '(website: '+IssmConfig('PACKAGE_URL')[0]+' contact: '+IssmConfig('PACKAGE_BUGREPORT')[0]+')'
+print ' '
+print 'Build date: '+IssmConfig('PACKAGE_BUILD_DATE')[0]
+print 'Copyright (c) 2009-2016 California Institute of Technology'
+print ' '
+print '    to get started type: issmdoc'
+print ' '
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/clicktoflowline.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/clicktoflowline.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/clicktoflowline.m	(revision 21239)
@@ -0,0 +1,24 @@
+function clicktoflowline(index,x,y,u,v,filename)
+%CLICKTOFLOWLINE - create a flowline ARGUS file
+%
+%   create a flowline contour file (named 'filename') by clicking
+%   on a velocity field once (velocity must be plotted first)
+%
+%   Usage: 
+%      clicktoflowline(index,x,y,u,v,x0,y0,filename)
+%
+%   Example: 
+%      clicktoflowline(md.mesh.elements,md.mesh.x,md.mesh.y,md.inversion.vx_obs,md.inversion.vy_obs,'flowline.exp')
+
+%Get click position
+[x0,y0]=ginput(1);
+
+%Get flowline
+line=flowlines(index,x,y,u,v,x0,y0,200);
+
+%plot
+hold on
+plot(line.x,line.y,'r-');
+
+%Write argus file
+expwrite(line,filename);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/contourlevelzero.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/contourlevelzero.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/contourlevelzero.m	(revision 21239)
@@ -0,0 +1,199 @@
+function contours=contourlevelzero(md,mask,level)
+%CONTOURLEVELZERO - figure out the zero level (or offset thereof, specified by the level value) 
+%                   of a vectorial mask, and vectorialize it into an exp or shp compatible 
+%structure.
+%
+%   Usage:
+%      contours=contourlevelzero(md,mask,level)
+%
+%   See also: PLOT_CONTOUR
+
+%process data 
+if dimension(md.mesh)==3,
+	error('contourlevelzero error message: routine not supported for 3d meshes, project on a layer');
+end
+
+x=md.mesh.x;
+y=md.mesh.y;
+index=md.mesh.elements;
+
+if isempty(mask), error('mask provided is empty'); end
+	if length(mask)~=md.mesh.numberofvertices, error('mask provided should be specified at the vertices of the mesh'); end
+
+%initialization of some variables
+numberofelements=size(index,1);
+elementslist=1:numberofelements;
+c=[];
+h=[];
+
+%get unique edges in mesh
+%1: list of edges
+edges=[index(:,[1,2]); index(:,[2,3]); index(:,[3,1])];
+%2: find unique edges
+[edges,I,J]=unique(sort(edges,2),'rows');
+%3: unique edge numbers
+vec=J;
+%4: unique edges numbers in each triangle (2 triangles sharing the same edge will have
+%   the same edge number)
+edges_tria=[vec(elementslist), vec(elementslist+numberofelements), vec(elementslist+2*numberofelements)];
+
+%segments [nodes1 nodes2]
+Seg1=index(:,[1 2]);
+Seg2=index(:,[2 3]);
+Seg3=index(:,[3 1]);
+
+%segment numbers [1;4;6;...]
+Seg1_num=edges_tria(:,1);
+Seg2_num=edges_tria(:,2);
+Seg3_num=edges_tria(:,3);
+
+%value of data on each tips of the segments
+Data1=mask(Seg1);
+Data2=mask(Seg2);
+Data3=mask(Seg3);
+
+%get the ranges for each segment
+Range1=sort(Data1,2);
+Range2=sort(Data2,2);
+Range3=sort(Data3,2);
+
+%find the segments that contain this value
+pos1=(Range1(:,1)<level & Range1(:,2)>level);
+pos2=(Range2(:,1)<level & Range2(:,2)>level);
+pos3=(Range3(:,1)<level & Range3(:,2)>level);
+
+%get elements
+poselem12=(pos1 & pos2);
+poselem13=(pos1 & pos3);
+poselem23=(pos2 & pos3);
+poselem=find(poselem12 | poselem13 | poselem23);
+numelems=length(poselem);
+
+%if no element has been flagged, skip to the next level
+if numelems==0,
+	warning('contourlevelzero warning message: no elements found with corresponding level value in mask');
+	contours=struct([]);
+	return;
+end
+
+%go through the elements and build the coordinates for each segment (1 by element)
+x1=zeros(numelems,1);
+x2=zeros(numelems,1);
+y1=zeros(numelems,1);
+y2=zeros(numelems,1);
+edge_l=zeros(numelems,2);
+
+for j=1:numelems,
+
+	weight1=(level-Data1(poselem(j),1))/(Data1(poselem(j),2)-Data1(poselem(j),1));
+	weight2=(level-Data2(poselem(j),1))/(Data2(poselem(j),2)-Data2(poselem(j),1));
+	weight3=(level-Data3(poselem(j),1))/(Data3(poselem(j),2)-Data3(poselem(j),1));
+
+	if poselem12(poselem(j));
+
+		x1(j)=x(Seg1(poselem(j),1))+weight1*(x(Seg1(poselem(j),2))-x(Seg1(poselem(j),1)));
+		x2(j)=x(Seg2(poselem(j),1))+weight2*(x(Seg2(poselem(j),2))-x(Seg2(poselem(j),1)));
+		y1(j)=y(Seg1(poselem(j),1))+weight1*(y(Seg1(poselem(j),2))-y(Seg1(poselem(j),1)));
+		y2(j)=y(Seg2(poselem(j),1))+weight2*(y(Seg2(poselem(j),2))-y(Seg2(poselem(j),1)));
+		edge_l(j,1)=Seg1_num(poselem(j));
+		edge_l(j,2)=Seg2_num(poselem(j));
+
+	elseif poselem13(poselem(j)),
+
+		x1(j)=x(Seg1(poselem(j),1))+weight1*(x(Seg1(poselem(j),2))-x(Seg1(poselem(j),1)));
+		x2(j)=x(Seg3(poselem(j),1))+weight3*(x(Seg3(poselem(j),2))-x(Seg3(poselem(j),1)));
+		y1(j)=y(Seg1(poselem(j),1))+weight1*(y(Seg1(poselem(j),2))-y(Seg1(poselem(j),1)));
+		y2(j)=y(Seg3(poselem(j),1))+weight3*(y(Seg3(poselem(j),2))-y(Seg3(poselem(j),1)));
+		edge_l(j,1)=Seg1_num(poselem(j));
+		edge_l(j,2)=Seg3_num(poselem(j));
+
+	elseif poselem23(poselem(j)),
+
+		x1(j)=x(Seg2(poselem(j),1))+weight2*(x(Seg2(poselem(j),2))-x(Seg2(poselem(j),1)));
+		x2(j)=x(Seg3(poselem(j),1))+weight3*(x(Seg3(poselem(j),2))-x(Seg3(poselem(j),1)));
+		y1(j)=y(Seg2(poselem(j),1))+weight2*(y(Seg2(poselem(j),2))-y(Seg2(poselem(j),1)));
+		y2(j)=y(Seg3(poselem(j),1))+weight3*(y(Seg3(poselem(j),2))-y(Seg3(poselem(j),1)));
+		edge_l(j,1)=Seg2_num(poselem(j));
+		edge_l(j,2)=Seg3_num(poselem(j));
+	else
+		%it shoud not go here
+	end
+end
+
+%now that we have the segments, we must try to connect them...
+
+%loop over the subcontours
+contours=struct([]);
+
+while ~isempty(edge_l),
+
+	%take the right edge of the second segment and connect it to the next segments if any
+	e1=edge_l(1,1);   e2=edge_l(1,2);
+	xc=[x1(1);x2(1)]; yc=[y1(1);y2(1)];
+
+	%erase the lines corresponding to this edge
+	edge_l(1,:)=[];
+	x1(1)=[]; x2(1)=[];
+	y1(1)=[]; y2(1)=[];
+
+	[ro1,co1]=find(edge_l==e1);
+
+	while ~isempty(ro1)
+
+		if co1==1,
+			xc=[x2(ro1);xc]; yc=[y2(ro1);yc];
+
+			%next edge:
+			e1=edge_l(ro1,2);
+
+		else
+			xc=[x1(ro1);xc]; yc=[y1(ro1);yc];
+
+			%next edge:
+			e1=edge_l(ro1,1);
+		end
+
+		%erase the lines of this
+		edge_l(ro1,:)=[];
+		x1(ro1)=[]; x2(ro1)=[];
+		y1(ro1)=[]; y2(ro1)=[];
+
+		%next connection
+		[ro1,co1]=find(edge_l==e1);
+	end
+
+	%same thing the other way (to the right)
+	[ro2,co2]=find(edge_l==e2);
+
+	while ~isempty(ro2)
+
+		if co2==1,
+			xc=[xc;x2(ro2)]; yc=[yc;y2(ro2)];
+
+			%next edge:
+			e2=edge_l(ro2,2);
+		else
+			xc=[xc;x1(ro2)]; yc=[yc;y1(ro2)];
+
+			%next edge:
+			e2=edge_l(ro2,1);
+		end
+
+		%erase the lines of this
+		edge_l(ro2,:)=[];
+		x1(ro2)=[]; x2(ro2)=[];
+		y1(ro2)=[]; y2(ro2)=[];
+
+		%next connection
+		[ro2,co2]=find(edge_l==e2);
+	end
+
+	%save xc,yc contour: 
+	contours(end+1).x=xc;
+	contours(end).y=yc;
+	contours(end).name='';
+	contours(end).nods=length(xc);
+	contours(end).density=1;
+	contours(end).closed=0;
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/exp2levelsetfunction.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/exp2levelsetfunction.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/exp2levelsetfunction.m	(revision 21239)
@@ -0,0 +1,51 @@
+function lsf=exp2levelsetfunction(md, exp_icedomain)
+	%EXP2LEVELSETFUNCTION: returns signed distance function from EXP-file
+	%
+	%   This routine computes a signed distance function from an EXP-file given in the input.
+	%   It can be used with the level-set method.
+	%
+	%   USAGE:
+	%      levelsetfunction=exp2levelsetfunction(md, exp_icedomain)
+	%
+
+	mesh=md.mesh;
+	profiles=expread(exp_icedomain);
+
+	min_dist=NaN(size(mesh.x));
+	for p=1:size(profiles,2)
+		profile=profiles(p);
+
+		%construct ice domain segments
+		inds_v=1:profile.nods-1;
+		inds_w=2:profile.nods;
+		segments.v.x=profile.x(inds_v);	segments.v.y=profile.y(inds_v);
+		segments.w.x=profile.x(inds_w);	segments.w.y=profile.y(inds_w);
+		segments.numsegments=length(segments.v.x);
+
+		% compute minimum distance to segments
+		for s=1:segments.numsegments
+			segment.v.x=segments.v.x(s);	segment.v.y=segments.v.y(s);
+			segment.w.x=segments.w.x(s);	segment.w.y=segments.w.y(s);
+			min_dist=min(min_dist, compute_distance_to_segment(segment, mesh.x, mesh.y));
+		end
+	end
+
+	% set sign of lsf
+	sign_lsf=ones(mesh.numberofvertices,1);
+	isice=ContourToMesh(mesh.elements,mesh.x,mesh.y,exp_icedomain,'node',2);
+	sign_lsf(find(isice))=-1;
+
+	lsf=sign_lsf.*min_dist;
+
+	function dist=compute_distance_to_segment(segment,x,y)
+		%compute horizontal euclidean distance to segment
+		v=[segment.v.x segment.v.y];
+		w=[segment.w.x segment.w.y];
+		verts=[x y];
+		dist_vw2=norm(w-v)^2;
+		if(dist_vw2==0.),	t=zeros(size(x)); %cover case where segment has length 0
+		else t=[x-v(1) y-v(2)]*(w-v)'/dist_vw2; end %projection of verts on line defined by v and w
+		dist_vec=(ones(length(x),1)*v+max(0,min(1,t))*(w-v))-verts; %vector of shortest distance between verts and segment v-w
+		dist=sqrt(sum(abs(dist_vec).^2,2));
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/exp2shp.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/exp2shp.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/exp2shp.m	(revision 21239)
@@ -0,0 +1,37 @@
+function exp2shp(shapefilename,expfilename,geometry)
+%SHPWRITE - write a shape file from a contour structure
+%
+%   Usage:
+%      exp2shp(shapefilename,expfilename,geometry)
+%
+%   Example:
+%      exp2shp('domainoutline.shp','domainoutline.exp')
+%      exp2shp('domainoutline.shp','domainoutline.exp','Polygon')
+%      exp2shp('massfluxgate.shp','massfluxgate.exp','Line')
+%
+%   See also SHPREAD, SHPWRITE, SHP2EXP
+
+shp=expread(expfilename);
+
+%initialize number of profile
+count=0;
+
+contours=struct([]);
+for i=1:length(shp),
+	if nargin < 3
+		if length(shp(1).x) == 1
+			geometry = 'Point';
+		elseif length(shp(1).x) < 3
+			geometry = 'Line';
+		else
+			geometry = 'Polygon';
+		end
+	end
+	contours(i).Geometry=geometry;
+	contours(i).id=i;
+	contours(i).X=shp(i).x;
+	contours(i).Y=shp(i).y;
+end
+	
+shapewrite(contours,shapefilename);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expbox.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expbox.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expbox.m	(revision 21239)
@@ -0,0 +1,41 @@
+function expbox(filename)
+%EXPBOX - Create an ARGUS file using two clicks
+%
+%   Two clicks on a plot are used to generate a rectangular box
+%   This box is written in EXP format on filename
+%
+%   Usage:
+%      expbox(filename)
+
+%check
+if exist(filename,'file'),
+	choice=input(['A file ' filename ' already exists, do you want to modify it? (y/n)'],'s');
+	if ~strcmpi(choice,'y'),
+		disp('no modification done ... exiting');
+		return
+	end
+end
+
+%Get points
+disp('Click twice to define a rectangular domain. First click for upper left corner, second for lower right corner');
+[x,y]=ginput(2);
+
+x1=x(1);
+x2=x(2);
+x3=x2;
+x4=x1;
+
+y1=y(1);
+y2=y1;
+y3=y(2);
+y4=y3;
+
+%Build Exp structure
+A=struct();
+A.nods=5;
+A.density=1;
+A.x=[x1 x2 x3 x4 x1]';
+A.y=[y1 y2 y3 y4 y1]';
+
+%Write structure
+expwrite(A,filename);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expcircle.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expcircle.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expcircle.m	(revision 21239)
@@ -0,0 +1,31 @@
+function expcircle(filename,x0,y0,radius,numberofnodes)
+%EXPCIRCLE - create a circular contour corresponding to given parameters
+%
+%   Creates a closed argus contour centered on x,y of radius size.
+%   The contour is made of numberofnodes
+%
+%   Usage:
+%      expcircle(filename,x0,y0,radius,numberofnodes)
+%
+%   See also EXPMASTER, EXPDOC
+
+%Calculate the cartesians coordinates of the points
+x_list=ones(numberofnodes+1,1);
+y_list=ones(numberofnodes+1,1);
+
+theta=(0:2*pi/numberofnodes:2*pi*(1-1/numberofnodes))';
+theta=[theta;0];
+
+x_list=radius*x_list.*cos(theta);
+y_list=radius*y_list.*sin(theta);
+
+%offset x_list and y_list by x0 and y0:
+x_list=x_list+x0;
+y_list=y_list+y0;
+
+contour.x=x_list;
+contour.y=y_list;
+contour.density=1;
+contour.name='circle';
+
+expwrite(contour,filename);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expcoarsen.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expcoarsen.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expcoarsen.m	(revision 21239)
@@ -0,0 +1,74 @@
+function expcoarsen(newfile,oldfile,resolution)
+%EXPCOARSEN - coarsen an exp contour
+%
+%   This routine read an Argus file and remove points with respect to
+%   the resolution (in meters) given in input. 
+%
+%   Usage:
+%      expcoarsen(newfile,oldfile,resolution)
+%
+%   Example:
+%       expcoarsen('DomainOutline.exp','Antarctica.exp',4000)
+
+%Some checks
+if nargin~=3 | nargout
+	error('expcoarsen usage: expcoarsen(newfile,oldfile,resolution)')
+elseif ~exist(oldfile)
+	error(['expcut error message: the file ' oldfile ' does not exist'])
+elseif exist(newfile),
+	choice=input(['A file ' newfile ' already exists, do you want to modify it? (y/n)'],'s');
+	if ~strcmpi(choice,'y'),
+		disp('no modification done ... exiting');
+		return;
+	end
+end
+
+%Get exp oldfile
+[path root ext]=fileparts(oldfile);
+A=expread(oldfile);
+numprofiles=size(A,2);
+
+%Go through the profiles
+count=1;
+while count<=numprofiles,
+
+	%get number of points and initialize j
+	numpoints=length(A(count).x);
+	j=1;
+
+	%stop if we have reached end of profile (always keep the last point)
+	while j<numpoints,
+
+		%See whether we keep this point or not
+		distance=sqrt((A(count).x(j)-A(count).x(j+1))^2+(A(count).y(j)-A(count).y(j+1))^2);
+		if distance<resolution & j<numpoints-1  %do not remove last point
+			A(count).x(j+1)=[];
+			A(count).y(j+1)=[];
+			numpoints=numpoints-1;
+		else
+			division=floor(distance/resolution)+1;
+			if division>=2,
+				x=linspace(A(count).x(j),A(count).x(j+1),division)';
+				y=linspace(A(count).y(j),A(count).y(j+1),division)';
+				A(count).x=[A(count).x(1:j);x(2:end-1); A(count).x(j+1:end)];
+				A(count).y=[A(count).y(1:j);y(2:end-1); A(count).y(j+1:end)];
+
+				%update current point
+				j=j+1+division-2;
+				numpoints=numpoints+division-2;
+			else
+				%update current point
+				j=j+1;
+			end
+		end
+	end
+	if length(A(count).x)<=1,
+		A(count)=[];
+		numprofiles=numprofiles-1;
+	else
+		count=count+1;
+	end
+end
+
+%write output
+expwrite(A,newfile);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expcoarsen.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expcoarsen.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expcoarsen.py	(revision 21239)
@@ -0,0 +1,77 @@
+import os.path
+import numpy as npy
+from collections import OrderedDict
+from expread import expread
+from expwrite import expwrite
+
+def expcoarsen(newfile,oldfile,resolution):
+	""" 
+	EXPCOARSEN - coarsen an exp contour
+
+	This routine read an Argus file and remove points with respect to
+	the resolution (in meters) given in input. 
+
+	Usage:
+	  expcoarsen(newfile,oldfile,resolution)
+
+	Example:
+	   expcoarsen('DomainOutline.exp','Antarctica.exp',4000)
+	""" 
+
+	#Some checks
+	if not os.path.exists(oldfile):
+		raise OSError("expcoarsen error message: file '%s' not found!" % oldfile)
+	if os.path.exists(newfile):
+		choice=raw_input('A file ' + newfile + ' already exists, do you want to modify it? (y/n)')
+		if choice not in 'y': 
+			print('no modification done ... exiting')
+			return 0
+
+	#Get exp oldfile
+	contours=expread(oldfile)
+	newcontours=[]
+
+	for contour in  contours:
+		
+		numpoints=npy.size(contour['x'])
+
+		j=0
+		x=contour['x']
+		y=contour['y']
+
+		#stop if we have reached end of profile (always keep the last point)
+		while j<numpoints-1:
+
+			#see whether we keep this point or not
+			distance=npy.sqrt((x[j]-x[j+1])**2+(y[j]-y[j+1])**2)
+			if distance<resolution and j<numpoints-2:   #do not remove last point
+				x=npy.delete(x,j+1,0)
+				y=npy.delete(y,j+1,0)
+				numpoints=numpoints-1
+			else:
+				division=int(npy.floor(distance/resolution)+1)
+				if division>=2:
+					xi=npy.linspace(x[j],x[j+1],division)
+					yi=npy.linspace(y[j],y[j+1],division)
+					
+					x=npy.hstack((x[0:j+1],xi[1:-1],x[j+1:]))
+					y=npy.hstack((y[0:j+1],yi[1:-1],y[j+1:]))
+
+					#update current point
+					j=j+1+division-2
+					numpoints=numpoints+division-2
+				else:
+					#update current point
+					j=j+1
+		
+		if npy.size(x)>1:
+			#keep the (x,y) contour arond
+			newcontour=OrderedDict()
+			newcontour['nods']=npy.size(x)
+			newcontour['density']=contour['density']
+			newcontour['x']=x
+			newcontour['y']=y
+			newcontours.append(newcontour)
+
+	#write output
+	expwrite(newcontours,newfile)
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expcontourlevelzero.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expcontourlevelzero.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expcontourlevelzero.m	(revision 21239)
@@ -0,0 +1,13 @@
+function expcontourlevelzero(md,mask,level,filename)
+%EXPCONTOURLEVELZERO - write an Argus file from a structure recovered from running contourlevelzero 
+%
+%   Usage:
+%      expcontourlevelzero(md,mask,level,filename)
+% 
+%   Example:
+%      expcontourlevelzero(md,md.geometry.thickness,0, 'Level0.exp');
+%
+%   See also CONTOURLEVELZERO, EXPWRITE
+
+contours=contourlevelzero(md,mask,level);
+expwrite(contours,filename);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expcontract.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expcontract.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expcontract.m	(revision 21239)
@@ -0,0 +1,33 @@
+function normal_node=expcontract(newfile,oldfile,distance)
+%EXPCONTRACT - contract or expand a profile, according to the normal.
+% 
+%   Usage:
+%      expcontract(newfile,oldfile,distance)
+%
+%   See also EXPMASTER, EXPDOC
+
+contour=expread(oldfile);
+num=numel(contour.x);
+
+normal=zeros(num-1,2);
+normal_node=zeros(num-1,2);
+
+for i=1:num-1,
+	normal(i,:)=[ contour.y(i)-contour.y(i+1) contour.x(i+1)-contour.x(i)];
+	normal(i,:)=normal(i,:)/sqrt(normal(i,1)^2+normal(i,2)^2);
+end
+
+normal_node(2:end,:)=[normal(1:end-1,:)+normal(2:end,:)];
+normal_node(1,:)=normal(1,:)+normal(end,:);
+
+normal_node_norm=sqrt(normal_node(:,1).^2+normal_node(:,2).^2);
+normal_node(:,1)=normal_node(:,1)./normal_node_norm;
+normal_node(:,2)=normal_node(:,2)./normal_node_norm;
+
+contour.x(1:end-1)=contour.x(1:end-1)+distance*normal_node(:,1);
+contour.y(1:end-1)=contour.y(1:end-1)+distance*normal_node(:,2);
+
+contour.x(end)=contour.x(1);
+contour.y(end)=contour.y(1);
+
+expwrite(contour,newfile);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expdisp.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expdisp.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expdisp.m	(revision 21239)
@@ -0,0 +1,58 @@
+function expdisp(domainoutline,varargin)
+%EXPDISP - plot the contours of a domain outline file
+%
+%   This routine reads in a domain outline file (Argus format) and plots all the contours 
+%
+%   Usage:
+%      expdisp(domainoutline,options)
+%
+%   Available options:
+%      - 'figure'     : figure number or handle
+%      - 'linestyle'  : line style ('r--','-y',...)
+%      - 'linewidth'  : line width (1,2,...)
+%      - 'multiplier' : coordinate multiplier (10^3 if the plot is in km)
+%      - 'title'      : do we add contour names to each contour
+%      - 'patch'      : do we want the contour to be filled
+%
+%   Example:
+%      expdisp('Domain.exp','figure',1,'linestyle','--r','linewidth',2,'multiplier',10^3);
+%
+%   See also EXPMASTER, EXPDOC
+
+%Get and process options
+options = pairoptions(varargin{:});
+unitmultiplier = getfieldvalue(options,'multiplier',1);
+linewidth      = getfieldvalue(options,'linewidth',1);
+linestyle      = getfieldvalue(options,'linestyle','-r');
+ispatch        = getfieldvalue(options,'patch',0);
+
+%read file
+domain=expread(domainoutline);
+
+%Create figure if needed and hold
+if exist(options,'figure'),
+	figure(getfieldvalue(options,'figure'));
+end
+hold on
+
+for i=1:length(domain),		
+	if domain(i).nods==1
+		plot(domain(i).x*unitmultiplier,domain(i).y*unitmultiplier,'o','MarkerEdgeColor','k','MarkerFaceColor','r','MarkerSize',10);
+		if exist(options,'title')
+			text(domain(i).x*unitmultiplier,domain(i).y*unitmultiplier,domain(i).name,'BackgroundColor',[1. .0 .0]);
+		end
+	else
+		if ispatch,
+			patch(domain(i).x*unitmultiplier,domain(i).y*unitmultiplier,linestyle);
+		else
+			if (isnumeric(linestyle))
+				plot(domain(i).x*unitmultiplier,domain(i).y*unitmultiplier,'Color',linestyle,'linewidth',linewidth);
+			else
+				plot(domain(i).x*unitmultiplier,domain(i).y*unitmultiplier,linestyle,'linewidth',linewidth);
+			end
+		end
+		if exist(options,'title')
+			text(domain(i).x(1)*unitmultiplier,domain(i).y(1)*unitmultiplier,domain(i).name,'BackgroundColor',[.7 .9 .7]);
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expdisp.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expdisp.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expdisp.py	(revision 21239)
@@ -0,0 +1,27 @@
+from expread import expread
+import numpy as npy
+
+def expdisp(domainoutline,ax,linestyle='--k',linewidth=1,unitmultiplier=1.):
+    '''
+    plot the contents of a domain outline file
+
+    This routine reads in a domain outline file and plots all of the x,y contours
+
+    'ax' is a handle to the current plot axes, onto which the contours are to be drawn
+
+    Usage:
+        expdisp(domainoutline,ax)
+
+    Example:
+        expdisp('domain.exp',plt.gca(),linestyle='--k',linewidth=2,unitmultiplier=1.e3)
+    '''
+
+    domain=expread(domainoutline)
+
+    for i in xrange(len(domain)):
+        if domain[i]['nods']==1:
+            ax.plot(domain[i]['x']*unitmultiplier,domain[i]['y']*unitmultiplier,'o',mec='k',mfc='r',ms=10)
+        else:
+            x=domain[i]['x'].tolist() # since expread returns a string representation of the arrays
+            y=domain[i]['y'].tolist()
+            ax.plot(x*unitmultiplier,y*unitmultiplier,linestyle,linewidth=linewidth)
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expexcludeoutliers.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expexcludeoutliers.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expexcludeoutliers.m	(revision 21239)
@@ -0,0 +1,18 @@
+function excludeoutliers(newcontourname,contourname,domainname)
+%EXCLUDEOUTLIERS - exclude points of contour that are not within the domain
+%contour. return new contours in a different file.
+%
+%        Usage: excludeoutliers('NewContour.exp','Contour.exp','DomainOutline.exp');
+%
+%
+%   See also EXPMASTER, EXPDOC
+
+contour=expread(contourname);
+
+for i=1:length(contour),
+	flags=ContourToNodes(contour(i).x,contour(i).y,domainname,0);
+	contour(i).x=contour(i).x(find(flags));
+	contour(i).y=contour(i).y(find(flags));
+end
+
+expwrite(contour,newcontourname);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expflip.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expflip.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expflip.m	(revision 21239)
@@ -0,0 +1,15 @@
+function expflip(domainname)
+%EXPFLIP: flip orientation of all contours and domains in domainname exp file.
+%
+%Usage: expflip('MassFlux1.exp');a
+%
+%
+
+a=expread(domainname);
+
+for i=1:length(a),
+	a(i).x=flipud(a(i).x);
+	a(i).y=flipud(a(i).y);
+end
+
+expwrite(a,domainname);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/explink.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/explink.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/explink.m	(revision 21239)
@@ -0,0 +1,28 @@
+function explink(domainoutline,minthreshold,step)
+%EXPLINK - allow to link several segments of domain outline together
+%
+%   Takes a domain outline made of various segments, and links them together in one 
+%   domain outline. Use expview to see end result.
+%
+%   Usage:
+%      explink(domainoutline,minthreshold,step)
+%
+%   See also EXPMASTER, EXPDOC
+
+notdone=1;
+
+while notdone,
+
+	for i=1:1000,
+		status=expconcatenate(domainoutline,minthreshold+(i-1)*step);
+		if status==0,
+			return;
+		end
+		if status==1,
+			break;
+		end
+		if status==-1,
+			continue;
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expll2xy.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expll2xy.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expll2xy.m	(revision 21239)
@@ -0,0 +1,36 @@
+function expll2xy(filename,sgn,central_meridian,standard_parallel)  
+%EXPLL2XY: switch exp argus file from lat,long to x,y
+%   Usage:
+%      expll2xy(filename,sgn,central_meridian,standard_parallel)
+%      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+%                               -1 : south latitude (default is mer=0  lat=71)
+
+%Get central_meridian and standard_parallel depending on hemisphere
+if nargin==4,
+	delta = central_meridian;
+	slat  = standard_parallel;
+elseif nargin==2
+	if sgn == 1,
+		delta = 45; slat = 70;
+		disp('Info: creating coordinates in polar stereographic (Std Latitude: 70ºN Meridian: 45º)');
+	elseif sgn==-1,
+		delta = 0;  slat = 71;
+		disp('Info: creating coordinates in polar stereographic (Std Latitude: 71ºS Meridian: 0º)');
+	else
+		error('Sign should be either +1 or -1');
+	end
+else
+	help expll2xy
+	error('bad usage');
+end
+
+%read filename: 
+domain=expread(filename);
+
+%change to x,y: 
+for i=1:length(domain),
+	[domain(i).x domain(i).y]= ll2xy(domain(i).y,domain(i).x,sgn,delta,slat);
+end
+
+%write back to filename: 
+expwrite(domain,filename);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expread.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expread.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expread.m	(revision 21239)
@@ -0,0 +1,81 @@
+function Struct=expread(filename)
+%EXPREAD - read a file exp and build a Structure
+%
+%   This routine reads a file .exp and build a Structure containing the 
+%   fields x and y corresponding to the coordinates, one for the filename of
+%   the exp file, for the density, for the nodes, and a field closed to 
+%   indicate if the domain is closed. 
+%   The first argument is the .exp file to be read and the second one (optional) 
+%   indicate if the last point shall be read (1 to read it, 0 not to).
+%
+%   Usage:
+%      Struct=expread(filename)
+%
+%   Example:
+%      Struct=expread('domainoutline.exp')
+%      Struct=expread('domainoutline.exp')
+%
+%   See also EXPDOC, EXPWRITEASVERTICES
+
+%some checks
+if ~exist(filename),
+	error(['expread error message: file ' filename ' not found!']);
+end
+
+%initialize number of profile
+count=0;
+
+%open file
+fid=fopen(filename,'r');
+
+%loop over the number of profiles
+while (~feof(fid)),
+
+	%update number of profiles
+	count=count+1;
+
+	%Get file name
+	A=fscanf(fid,'%s %s',2);
+	if ~strncmp(A,'##Name:',7), break; end
+	if length(A)>7, 
+		Struct(count).name=A(8:end);
+	else
+		Struct(count).name='';
+	end
+
+	%Get Icon
+	A=fscanf(fid,'%s %s',2);
+	if ~strncmp(A,'##Icon:',7), break; end
+
+	%Get Info
+	A=fscanf(fid,'%s %s %s %s',4);
+	if ~strncmp(A,'#Points',7), break; end
+
+	%Get number of nodes and density
+	A=fscanf(fid,'%f %f',[1 2]);
+	Struct(count).nods=A(1);
+	Struct(count).density=A(2);
+
+	%Get Info
+	A=fscanf(fid,'%s %s %s %s',5);
+	if ~strncmp(A,'#XposYpos',9), break; end
+
+	%Get Coordinates
+	A=fscanf(fid,'%f %f',[2 Struct(count).nods]);
+	Struct(count).x=A(1,:)';
+	Struct(count).y=A(2,:)';
+
+	if(Struct(count).nods~=length(Struct(count).x))error(['Profile ' num2str(count) ' reports incorrect length']); end;
+
+	%Check if closed
+	if (Struct(count).nods > 1) && ...
+	   (Struct(count).x(end) == Struct(count).x(1)) && ...
+	   (Struct(count).y(end) == Struct(count).y(1))
+		Struct(count).closed=true;
+	else
+		Struct(count).closed=false;
+	end
+end
+
+%close file
+fclose(fid);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expread.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expread.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expread.py	(revision 21239)
@@ -0,0 +1,100 @@
+import os.path
+import numpy
+from collections import OrderedDict
+import MatlabFuncs as m
+
+def expread(filename):
+	"""
+	EXPREAD - read a file exp and build a Structure
+
+	   This routine reads a file .exp and builds a list of dicts containing the 
+	   fields x and y corresponding to the coordinates, one for the filename of
+	   the exp file, for the density, for the nodes, and a field closed to 
+	   indicate if the domain is closed. 
+	   The first argument is the .exp file to be read and the second one (optional) 
+	   indicate if the last point shall be read (1 to read it, 0 not to).
+
+	   Usage:
+	      contours=expread(filename)
+
+	   Example:
+	      contours=expread('domainoutline.exp')
+	      contours=expread('domainoutline.exp')
+
+	   See also EXPDOC, EXPWRITEASVERTICES
+	"""
+
+	#some checks
+	if not os.path.exists(filename):
+		raise OSError("expread error message: file '%s' not found!" % filename)
+
+	#initialize number of profile
+	contours=[]
+
+	#open file
+	fid=open(filename,'r')
+
+	#loop over the number of profiles
+	while True:
+
+		#update number of profiles
+		contour=OrderedDict()
+
+		#Get file name
+		A=fid.readline()
+		while A=='\n':
+			A=fid.readline()
+		if not A:
+			break
+		A=A.split(None,1)
+		if not (len(A) == 2 and m.strcmp(A[0],'##') and m.strncmp(A[1],'Name:',5)):
+			break
+		if len(A[1])>5: 
+			contour['name']=A[1][5:-1]
+		else:
+			contour['name']=''
+
+		#Get Icon
+		A=fid.readline().split(None,1)
+		if not (len(A) == 2 and m.strcmp(A[0],'##') and m.strncmp(A[1],'Icon:',5)):
+			break
+
+		#Get Info
+		A=fid.readline().split()
+		if not (len(A) == 4 and m.strcmp(A[0],'#') and m.strcmp(A[1],'Points')):
+			break
+
+		#Get number of nodes and density
+		A=fid.readline().split()
+		contour['nods']=int(A[0])
+		contour['density']=float(A[1])
+
+		#Get Info
+		A=fid.readline().split()
+		if not (len(A) == 5 and m.strcmp(A[0],'#') and m.strcmp(A[1],'X') and m.strcmp(A[2],'pos') \
+		                                         and m.strcmp(A[3],'Y') and m.strcmp(A[4],'pos')):
+			break
+
+		#Get Coordinates
+		contour['x']=numpy.empty(contour['nods'])
+		contour['y']=numpy.empty(contour['nods'])
+		for i in xrange(int(contour['nods'])):
+			A=fid.readline().split()
+			contour['x'][i]=float(A[0])
+			contour['y'][i]=float(A[1])
+
+		#Check if closed
+		if (contour['nods'] > 1) and \
+		   (contour['x'][-1] == contour['x'][0]) and \
+		   (contour['y'][-1] == contour['y'][0]):
+			contour['closed']=True
+		else:
+			contour['closed']=False
+
+		contours.append(contour)
+
+	#close file
+	fid.close()
+
+	return contours
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expsquare.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expsquare.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expsquare.m	(revision 21239)
@@ -0,0 +1,45 @@
+function expsquare(filename)
+%EXPBOX - Create a ARGUS file using to clicks
+%
+%   Two clicks on a plot are used to generate a square box
+%   This box is written in EXP format on filename
+%
+%   Usage:
+%      expbox(filename)
+
+%check
+if exist(filename,'file'),
+	choice=input(['A file ' filename ' already exists, do you want to modify it? (y/n)'],'s');
+	if ~strcmpi(choice,'y'),
+		disp('no modification done ... exiting');
+		return
+	end
+end
+
+%Get points
+disp('Click twice to define a square domain. First click for upper left corner, second for lower right corner');
+[x,y]=ginput(2);
+
+xmiddle=mean(x);
+ymiddle=mean(y);
+
+x1=x(1); y1=y(1);
+x3=x(2); y3=y(2);
+
+Diag=[x1-xmiddle;y1-ymiddle];
+
+Vector=[xmiddle;ymiddle]+[-Diag(2);Diag(1)];
+x2=Vector(1); y2=Vector(2);
+
+Vector=[xmiddle;ymiddle]-[-Diag(2);Diag(1)];
+x4=Vector(1); y4=Vector(2);
+
+%Build Exp structure
+A=struct();
+A.nods=5;
+A.density=1;
+A.x=[x1 x2 x3 x4 x1]';
+A.y=[y1 y2 y3 y4 y1]';
+
+%Write structure
+expwrite(A,filename);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expswapxy.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expswapxy.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expswapxy.m	(revision 21239)
@@ -0,0 +1,22 @@
+function expswapxy(filename)
+%EXPSWAP - swap x and y fields
+% 
+%   Usage:
+%      expswap(file)
+%
+%   See also EXPMASTER, EXPDOC
+
+contours=expread(filename,1);
+
+newcontours=contours(1);
+
+for i=1:length(contours), 
+	contour=contours(i);
+	newcontour=contour;
+	newcontour.x=contour.y;
+	newcontour.y=contour.x;
+	newcontours(end+1)=newcontour;
+end
+newcontours=newcontours(2:end);
+
+expwrite(newcontours,filename);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/exptool.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/exptool.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/exptool.m	(revision 21239)
@@ -0,0 +1,366 @@
+function exptool(newfile,varargin)
+%EXPTOOL - allow to create, modify, add, cut, .. segments of domain outline together
+%
+%   this routine is used to create, modify, cut,... an Argus file (.exp)
+%
+%   exptool(newprofile,'optionname',optionvalue)
+%      creation of an argus file newprofile
+%
+%   Available options:
+%      - include: include list of existing ARGUS files
+%      - color: line color (default='r')
+%      - selectioncolor: line color of selected profiles (default='b')
+%      - linestyle (default='-')
+%      - linewidth (default=0.2)
+%      - marker (default='+')
+%      - markersize (default=7)
+%      - markeredgecolor (default='r')
+%      - nofigurecopy (default=0) do not copy current figure, this is needed on some plateform to avoid an offset in the figure
+%
+%   Usage:
+%      exptool(newfile,varargin)
+%
+%   Example:
+%      exptool('domain.exp','include',{'domain1.exp' 'domain2.exp'},'color','g','marker','+')
+%
+%   See also EXPDOC
+
+%recover options
+options=pairoptions(varargin{:});
+
+%Some checks
+if ~nargin | nargout
+	error('exptool usage: exptool(newfile,varargin)')
+elseif exist(newfile,'file'),
+	%recursive call to exptool if file already exists
+	if ~exist(options,'include'),
+		exptool(newfile,'include',newfile,varargin{:});
+		return;
+	end
+
+	%check modification
+	choice=input(['A file ' newfile ' already exists, do you want to modify it? (y/n)'],'s');
+	if ~strcmpi(choice,'y'),
+		disp('no modification done ... exiting');
+		return
+	end
+end
+
+%Add default options
+options=addfielddefault(options,'color','r');
+options=addfielddefault(options,'selectioncolor','b');
+options=addfielddefault(options,'LineStyle','-');
+options=addfielddefault(options,'LineWidth',0.2);
+options=addfielddefault(options,'Marker','+');
+options=addfielddefault(options,'MarkerSize',7);
+options=addfielddefault(options,'MarkerEdgeColor','r');
+
+%put all the argus profiles given in input in one structure A
+A=struct([]);
+numprofiles=0;
+numpoints=0;
+closed=[];
+
+%initialize the variables with files provided by 'include' option
+if exist(options,'include'),
+	files=getfieldvalue(options,'include');
+	if ischar(files), files={files}; end
+	for i=1:length(files),
+		filename=files{i};
+		if ~exist(filename,'file'),
+			error(['exptool error message:, ' filename ' does not exist. Exiting...']);
+		else
+			%read file
+			B=expread(filename);
+			%go through all profiles of B
+			for i=1:size(B,2)
+				%plug profile in A
+				if numprofiles
+					A(numprofiles+1)=B(i);
+				else
+					A=B(i);
+				end
+				%update numprofiles and numpoints
+				numpoints=numpoints+length(B(i).x);
+				numprofiles=numprofiles+1;
+				%figure out if the profile is closed or not
+				if (B(i).x(1)==B(i).x(end) & B(i).y(1)==B(i).y(end) & length(B(i).x)>1 )
+					closed(numprofiles)=1;
+				else
+					closed(numprofiles)=0;
+				end
+			end
+		end
+	end
+end
+
+%Get root of newfile
+[path root ext]=fileparts(newfile);
+
+%get current figure
+nofigurecopy=getfieldvalue(options,'nofigurecopy',1);
+if ~nofigurecopy,
+	if ~isempty(get(0,'children')),%if there is already a figure (return the number of opened figures)
+		set(gcf,'Renderer','zbuffer'); %fixes a bug on Mac OS X (not needed in future Matlab version)
+		P=get(gcf,'position');
+		Fp=get(gca,'position');
+		F=getframe(gca);
+		F=F.cdata;
+		%get current axis
+		xlim=get(gca,'Xlim');
+		ylim=get(gca,'Ylim');
+		%recreate x_m and y_m
+		x_m=linspace(xlim(1),xlim(2),size(F,2));
+		y_m=linspace(ylim(2),ylim(1),size(F,1)); %getframe reverse axis...
+		%plot the data in another figure
+		figure; set(gcf,'position',P);
+		imagesc(x_m,y_m,F); set(gca,'Ydir','normal','Position',Fp,'Xlim',xlim,'Ylim',ylim);
+		prevplot=1;
+		prevplot2=1;
+	else
+		figure
+		prevplot=0;
+		prevplot2=0;
+	end
+else
+	g=get(gca,'children');
+	L=length(g);
+	prevplot=L;
+	prevplot2=L;
+end
+
+%plot existing profile if any
+hold on
+
+%Build backup structre for do and redo
+backup=cell(1,3);
+backup{1,1}=A;
+backup{1,2}=numprofiles;
+backup{1,3}=numpoints;
+backup{1,4}=closed;
+
+loop=1;
+counter=1;
+while loop
+
+	%Go through A and rule out the empty profiles
+	list=[];
+	for i=1:size(A,2);
+		if length(A(i).x)==0
+			list(end+1)=i;
+			numprofiles=numprofiles-1;
+		end
+	end
+	A(list)=[];
+	closed(list)=[];
+
+	%Now erase all that have been done and plot the new structure A as it is
+	undoplots(prevplot);
+	if numprofiles
+		if ~nofigurecopy,
+			prevplot2=1;
+		else
+			prevplot2=L;
+		end
+		for i=1:numprofiles
+			if length(A(i).x)==1,
+				plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+					'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker','o');
+			else
+				plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+			end
+			prevplot2=prevplot2+1;
+		end
+	end
+
+	%display menu
+	title('Main Menu','FontSize',14);
+   UIControl_FontSize_bak = get(0, 'DefaultUIControlFontSize');
+   set(0, 'DefaultUIControlFontSize',10);
+   button=menu('exptool menu',...
+      'add a profile (open)',...                %1
+      'add a contour (closed)',...              %2
+      'remove a profile',...                    %3
+      'modify the position of a point',...      %4
+      'add points inside a profile',...         %5
+      'add points at the end of a profile',...  %6
+      'remove points',...                       %7
+      'remove several points',...               %8
+      'cut a segment',...                       %9
+      'cut a large area',...                    %10
+      'merge profiles',...                      %11
+      'close profile',...                       %12
+		'change orientation',...                  %13
+      'undo',...                                %14
+      'redo',...                                %15
+      'quit');                                  %16
+   set(0, 'DefaultUIControlFontSize', UIControl_FontSize_bak);
+
+	%UNDO??
+	if button==14;
+		if counter==1
+			disp('Already at oldest change');
+		else
+			counter=counter-1;
+			A=backup{counter,1};
+			numprofiles=backup{counter,2};
+			numpoints=backup{counter,3};
+			closed=backup{counter,4};
+		end
+	%REDO??
+	elseif button==15
+		if counter==size(backup,1)
+			disp('Already at newest change');
+		else
+			counter=counter+1;
+			A=backup{counter,1};
+			numprofiles=backup{counter,2};
+			numpoints=backup{counter,3};
+			closed=backup{counter,4};
+		end
+	end
+
+	switch button
+
+		case 1
+
+			[A,numprofiles,numpoints,closed]=addprofile(A,numprofiles,numpoints,closed,prevplot2,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 2
+
+			[A,numprofiles,numpoints,closed]=addcontour(A,numprofiles,numpoints,closed,prevplot2,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 3
+
+			[A,numprofiles,numpoints,closed]=removeprofile(A,numprofiles,numpoints,closed,prevplot2,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 4
+
+			[A,numprofiles,numpoints,closed]=modifyposition(A,numprofiles,numpoints,closed,prevplot,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 5
+
+			[A,numprofiles,numpoints,closed]=addinsideprofile(A,numprofiles,numpoints,closed,prevplot,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 6
+
+			[A,numprofiles,numpoints,closed]=addendprofile(A,numprofiles,numpoints,closed,prevplot2,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 7
+
+			[A,numprofiles,numpoints,closed]=removepoints(A,numprofiles,numpoints,closed,prevplot,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 8
+
+			[A,numprofiles,numpoints,closed]=removeseveralpoints(A,numprofiles,numpoints,closed,prevplot,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 9
+
+			[A,numprofiles,numpoints,closed]=cutprofile(A,numprofiles,numpoints,closed,prevplot,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 10
+
+			[A,numprofiles,numpoints,closed]=cutarea(A,numprofiles,numpoints,closed,prevplot,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 11
+
+			[A,numprofiles,numpoints,closed]=mergeprofiles(A,numprofiles,numpoints,closed,prevplot,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 12
+
+			[A,numprofiles,numpoints,closed]=closeprofile(A,numprofiles,numpoints,closed,prevplot,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 13
+
+			[A,numprofiles,numpoints,closed]=orientprofile(A,numprofiles,numpoints,closed,prevplot,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+			%QUIT
+		case 16
+
+			loop=0;
+
+		otherwise
+			%do nothing
+	end
+
+end
+
+hold off
+
+%write contour using expwrite
+title('New file written, exiting...','FontSize',14);
+if isempty(A)
+	disp('Profile empty, no file written')
+else
+	expwrite(A,newfile);
+end
+
+%close window
+if ~nofigurecopy,
+	close;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expwrite.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expwrite.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expwrite.m	(revision 21239)
@@ -0,0 +1,65 @@
+function expwrite(a,filename)
+%EXPWRITE - write an Argus file from a structure given in input
+%
+%   This routine write an Argus file form a structure containing the fields:
+%   x and y of the coordinates of the points.
+%   The first argument is the structure containing the points coordinates 
+%   and the second one the file to be write.
+%
+%   Usage:
+%      expwrite(a,filename)
+% 
+%   Example:
+%      expwrite(coordstruct,'domainoutline.exp')
+%
+%   See also EXPDOC, EXPREAD, EXPWRITEASVERTICES
+
+%check input variable
+if ~isstruct(a),
+	error('first argument is not a structure');
+end
+
+%Add density if it's not there
+if ~isfield(a,'density'),
+	for n=1:length(a),
+		a(n).density=1;
+	end
+end
+
+fid=fopen(filename,'w');
+if fid==-1,
+	choice=input(['WARNING: file ' filename ' could not be created, would you like to save your exp as ./temp_expwrite.exp? (y/n)'],'s');
+	if ~strcmpi(choice,'y'),
+		disp('no file written... exiting');
+		return
+	end
+	fid=fopen('./temp_expwrite.exp','w');
+end
+for n=1:length(a),
+	if(length(a(n).x)~=length(a(n).y)),
+		error('contours x and y coordinates must be of identical size');
+	end
+
+	if isfield(a,'name'),
+		fprintf(fid,'%s%s\n','## Name:',a(n).name);
+	else
+		fprintf(fid,'%s%s\n','## Name:',filename);
+	end
+
+	fprintf(fid,'%s\n','## Icon:0');
+	fprintf(fid,'%s\n','# Points Count Value');
+	if isfield(a,'density'),
+		if ~isempty(a(n).density),
+			fprintf(fid,'%i %f\n',[length(a(n).x) a(n).density]);
+		else
+			fprintf(fid,'%i %f\n',[length(a(n).x) 1.]);
+		end
+	else
+		fprintf(fid,'%i %f\n',[length(a(n).x) 1.]);
+	end
+	fprintf(fid,'%s\n','# X pos Y pos');
+	fprintf(fid,'%10.10f %10.10f\n',[a(n).x(:) a(n).y(:)]');
+	fprintf(fid,'\n');
+
+end
+fclose(fid);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expwrite.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expwrite.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expwrite.py	(revision 21239)
@@ -0,0 +1,47 @@
+import numpy
+
+def expwrite(contours,filename):
+	"""
+	EXPWRITE - write an Argus file from a dictionary given in input
+
+	   This routine writes an Argus file from a dict containing the fields:
+	   x and y of the coordinates of the points.
+	   The first argument is the list containing the points coordinates 
+	   and the second one the file to be written.
+
+	   Usage:
+	      expwrite(contours,filename)
+
+	   Example:
+	      expwrite(coordstruct,'domainoutline.exp')
+
+	   See also EXPDOC, EXPREAD, EXPWRITEASVERTICES
+	"""
+
+	fid=open(filename,'w')
+	for x,y in zip(contours['x'],contours['y']):
+		#if numpy.size(contour['x'])!=numpy.size(contour['y']):
+		if len(x)!=len(y):
+			raise RuntimeError("contours x and y coordinates must be of identical size")
+		if 'name' in contours:
+			fid.write("%s%s\n" % ('## Name:',contours['name']))
+		else:
+			fid.write("%s%s\n" % ('## Name:',filename))
+   
+		#Add density if it's not there FIXME what is this ever used for?
+		#if 'density' not in contours:
+		#	contours['density']=1
+		density=1
+
+		fid.write("%s\n" % '## Icon:0')
+		fid.write("%s\n" % '# Points Count Value')
+		#fid.write("%i %f\n" % (numpy.size(contour['x']),contour['density']))
+		fid.write("%i %f\n" % (numpy.size(x),density))
+		fid.write("%s\n" % '# X pos Y pos')
+		#for x,y in zip(contour['x'],contour['y']):
+		for xi,yi in zip(x,y):
+			fid.write("%10.10f %10.10f\n" % (xi,yi))
+		fid.write("\n")
+
+	fid.close()
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expxy2ll.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expxy2ll.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/expxy2ll.m	(revision 21239)
@@ -0,0 +1,36 @@
+function expxy2ll(filename,sgn,central_meridian,standard_parallel)  
+%EXPLL2XY: switch exp argus file from lat,long to x,y
+%   Usage:
+%      expxy2ll(filename,sgn,central_meridian,standard_parallel)
+%      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+%                               -1 : south latitude (default is mer=0  lat=71)
+
+%Get central_meridian and standard_parallel depending on hemisphere
+if nargin==4,
+	delta = central_meridian;
+	slat  = standard_parallel;
+elseif nargin==2
+	if sgn == 1,
+		delta = 45; slat = 70;
+		disp('Info: creating coordinates in polar stereographic (Std Latitude: 70ºN Meridian: 45º)');
+	elseif sgn==-1,
+		delta = 0;  slat = 71;
+		disp('Info: creating coordinates in polar stereographic (Std Latitude: 71ºS Meridian: 0º)');
+	else
+		error('Sign should be either +1 or -1');
+	end
+else
+	help expxy2ll
+	error('bad usage');
+end
+
+%read filename: 
+domain=expread(filename);
+
+%change to x,y: 
+for i=1:length(domain),
+	[domain(i).y domain(i).x]= xy2ll(domain(i).x,domain(i).y,sgn,delta,slat); %watch out to swap lat and long
+end
+
+%write back to filename: 
+expwrite(domain,filename);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/flowlines.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/flowlines.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/flowlines.m	(revision 21239)
@@ -0,0 +1,168 @@
+function flowpath=flowlines(index,x,y,u,v,x0,y0,varargin)
+%FLOWLINES - compute flowlines from a given set of seed points
+%
+%   Usage:
+%      flowpath=flowlines(index,x,y,u,v,x0,y0,varargin)
+%
+%   the velocity field is given by the couple (u,v) and the coordinates
+%   of the seed points are (x0,y0). One can use one or several seed 
+%   points
+%
+%   Example:
+%      flowpath=flowlines(md.mesh.elements,md.mesh.x,md.mesh.y,md.initialization.vx,md.initialization.vy,x0,y0)
+%
+%   Options:
+%      - 'maxiter':   how many steps upstream and downstream of the seed points (default: 200)
+%      - 'precision': division of each segment (higer precision increases number of segments, default: 1)
+%      - 'downstream':flow line upstream of the seed points (default: 1)
+%      - 'upstream':  flow line upstream of the seed points (default: 1)
+
+%check input
+if (length(x)~=length(y) | length(x)~=length(u) | length(x)~=length(v)),
+	error('flowlines error message: x,y,u and v must have the same length');
+end
+if length(x)<3,
+	error('flowlines error message: at least one element is required');
+end
+if length(x0)~=length(y0),
+	error('flowlines error message: x0 and y0 do not have the same length');
+end
+
+%process options
+options    = pairoptions(varargin{:});
+maxiter    = getfieldvalue(options,'maxiter',200);
+precision  = getfieldvalue(options,'precision',1);
+downstream = getfieldvalue(options,'downstream',1);
+upstream   = getfieldvalue(options,'upstream',1);
+
+%Create triangulation once for all and check seed points
+trep = triangulation(index,x,y);
+tria = pointLocation(trep,[x0 y0]);
+pos=find(isnan(tria));
+x0(pos)=[];
+y0(pos)=[];
+
+%initialize other variables
+N=length(x0);
+X=x0; Y=y0;
+flowpath=struct('x',cell(N,1),'y',cell(N,1),'name','','density',1);
+for i=1:N,
+	flowpath(i).x=x0(i);
+	flowpath(i).y=y0(i);
+end
+done=zeros(N,1);
+
+%get avegared length of each element
+length_tria=1/3*(sqrt( (x(index(:,1))-x(index(:,2))).^2+(y(index(:,1))-y(index(:,2))).^2 )+...
+	sqrt((x(index(:,1))-x(index(:,3))).^2+(y(index(:,1))-y(index(:,3))).^2 )+...
+	sqrt((x(index(:,2))-x(index(:,3))).^2+(y(index(:,2))-y(index(:,3))).^2 ));
+
+%take velocity for each element
+u=u(index)*[1;1;1]/3;
+v=v(index)*[1;1;1]/3;
+
+if downstream,
+	%initialization:
+	counter=1;
+
+	while any(~done) 
+
+		%find current triangle
+		queue=find(~done);
+		tria = pointLocation(trep,[X(queue),Y(queue)]);
+
+		%check that the point is actually inside a triangle of the mesh
+		listnan=find(isnan(tria));
+		for i=1:length(listnan)
+			%remove the last point
+			flowpath(queue(listnan(i))).x(end)=[];
+			flowpath(queue(listnan(i))).y(end)=[];
+			done(queue(listnan(i)))=1;
+		end
+		tria(listnan)=[]; 
+		queue(listnan)=[];
+
+		if isempty(tria),
+			break;
+		end
+
+		%velocity of the current triangle and norm it
+		ut=u(tria); vt=v(tria); normv=max(eps,sqrt(ut.^2+vt.^2));
+		ut=ut./normv;vt=vt./normv;
+
+		%check counter
+		if counter>maxiter
+			disp(['Maximum number of iterations (' num2str(maxiter) ') reached while going forward'])
+			break
+		end
+		counter=counter+1;
+
+		%remove stagnant point
+		done(queue(find(ut==0 & vt==0)))=1;
+
+		%build next point
+		for i=1:length(queue)
+			X(queue(i))=flowpath(queue(i)).x(end)+ut(i)*length_tria(tria(i))/precision;
+			Y(queue(i))=flowpath(queue(i)).y(end)+vt(i)*length_tria(tria(i))/precision;
+			flowpath(queue(i)).x=[flowpath(queue(i)).x;flowpath(queue(i)).x(end)+ut(i)*length_tria(tria(i))/precision];
+			flowpath(queue(i)).y=[flowpath(queue(i)).y;flowpath(queue(i)).y(end)+vt(i)*length_tria(tria(i))/precision];
+		end
+	end
+end
+
+%same process but reverse (vel=-vel) to have a vcomplete flow line
+if upstream,
+	queue=[];
+	counter=1;
+	X=x0; Y=y0;
+	done=zeros(N,1);
+
+	while any(~done) 
+
+		%find current triangle
+		queue=find(~done);
+		tria = pointLocation(trep,[X(queue),Y(queue)]);
+
+		%check that the point is actually inside a triangle of the mesh
+		listnan=find(isnan(tria));
+		for i=1:length(listnan)
+			%remove the last point
+			flowpath(queue(listnan(i))).x(1)=[];
+			flowpath(queue(listnan(i))).y(1)=[];
+			done(queue(listnan(i)))=1;
+		end
+		tria(listnan)=[]; 
+		queue(listnan)=[];
+
+		if isempty(tria),
+			break;
+		end
+
+		%velocity of the current triangle and norm it
+		ut=-u(tria); vt=-v(tria); normv=max(eps,sqrt(ut.^2+vt.^2));
+		ut=ut./normv;vt=vt./normv;
+
+		%check counter
+		if counter>maxiter
+			disp(['Maximum number of iterations (' num2str(maxiter) ') reached while going backward'])
+			break
+		end
+		counter=counter+1;
+
+		%remove stagnant point
+		done(queue(find(ut==0 & vt==0)))=1;
+
+		%build next point
+		for i=1:length(queue)
+			X(queue(i))=flowpath(queue(i)).x(1)+ut(i)*length_tria(tria(i))/precision;
+			Y(queue(i))=flowpath(queue(i)).y(1)+vt(i)*length_tria(tria(i))/precision;
+			flowpath(queue(i)).x=[flowpath(queue(i)).x(1)+ut(i)*length_tria(tria(i))/precision; flowpath(queue(i)).x];
+			flowpath(queue(i)).y=[flowpath(queue(i)).y(1)+vt(i)*length_tria(tria(i))/precision; flowpath(queue(i)).y];
+		end
+	end
+end
+
+%EXP compatibility (add name)
+for i=1:length(queue)
+	flowpath(queue(i)).name=['flowline' num2str(i)];
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/masktoexp.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/masktoexp.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/masktoexp.m	(revision 21239)
@@ -0,0 +1,33 @@
+function masktoexp(x,y,mask,threshold,filename)
+%MASKTOEXP - mask to exp file
+%
+%   Usage:
+%      masktoexp(x,y,mask,threshold,filename)
+%
+%   Example:
+%      if A is a matrix of 0 and 1, and we want an exp for
+%      the transition:
+%      masktoexp(x,y,A,0.5,'contour.exp');
+%      To be combined with ExpSimplify
+
+%Create contour for threshold
+c=contourc(double(x),double(y),double(mask),[threshold threshold]);
+done=0; i=1; j=1;
+while (i<length(c))
+	num=c(2,i); i=i+1;
+	s(j).x=c(1,i:(i+num-1));
+	s(j).y=c(2,i:(i+num-1));
+	s(j).v=c(1,i);
+	i=i+num; j=j+1;
+end;
+
+%Create exp structure
+A=struct();
+if(j-1<1), error('no contour found'); end
+for i=1:j-1,
+	A(i).x=s(i).x;
+	A(i).y=s(i).y;
+end;
+
+%write exp
+expwrite(A,filename);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/meshtodomain.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/meshtodomain.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/meshtodomain.m	(revision 21239)
@@ -0,0 +1,39 @@
+function meshtodomain(mh,domainname,varargin)
+%MESHTODOMAIN - recover a domain outline  from a model's mesh's segments
+%
+%   Usage:
+%      meshtodomain(mh,domainname,varargin)
+%
+%   Example:
+%      meshtodomain(md.mesh,'domainoutline.exp','latlong','on');
+%
+%   See also EXPREAD
+
+	%handle options: 
+	options=pairoptions(varargin{:});
+
+	segments=mh.segments; nt=length(segments);
+
+	%build domain contour: 
+	x=[];  y=[]; 
+
+	if strcmpi(getfieldvalue(options,'latlong','off'),'on'),
+		if isnan(mh.lat) | isnan(mh.long), error('meshtodomain error message: requested domain be output in lat,long referential, but mesh does not contain this information!'); end
+		for i=1:nt,
+		   x=[x;mh.long(segments(i,1))];
+		   y=[y;mh.lat(segments(i,1))];
+		end
+	else
+		for i=1:nt,
+		   x=[x;mh.x(segments(i,1))];
+		   y=[y;mh.y(segments(i,1))];
+		end
+	end
+
+	domain.x=x; 
+	domain.y=y; 
+	domain.density=1; 
+	domain.name=domainname;
+
+	expwrite(domain,domainname);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/addcontour.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/addcontour.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/addcontour.m	(revision 21239)
@@ -0,0 +1,50 @@
+function [A,numprofiles,numpoints,closed]=addcontour(A,numprofiles,numpoints,closed,prevplot,root,options)
+%ADDCONTOUR - add a closed contour
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=addcontour(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	title('click to add a point to the new profile, RETURN to exit','FontSize',14)
+	hold on
+
+	loop=1;
+	x=[];
+	y=[];
+
+	while loop
+
+		[xi,yi] = ginput(1);
+
+		if ~isempty(xi)
+			x(end+1,1)=xi;
+			y(end+1,1)=yi;
+
+			%plot everything
+			undoplots(prevplot);
+			plot(x,y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+				'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+			plot(x(end),y(end),'MarkerEdgeColor',getfieldvalue(options,'selectioncolor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+
+		else
+
+			%check that the profile is not empty
+			if ~isempty(x)
+				x(end+1)=x(1);
+				y(end+1)=y(1);
+				A(end+1).x=x; 
+				A(end).y=y; 
+				A(end).name=root; 
+				A(end).density=1; 
+				numprofiles=numprofiles+1;
+				numpoints=numpoints+length(x);
+				closed(end+1)=1;
+			end
+
+			%get out
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/addendprofile.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/addendprofile.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/addendprofile.m	(revision 21239)
@@ -0,0 +1,86 @@
+function [A,numprofiles,numpoints,closed]=addendprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+%ADDENDPROFILE - add point at the end of a n existing profile
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=addendprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	%some checks
+	if numprofiles==0
+		disp('no profile present, exiting...')
+		return
+	end	   
+	if ~any(~closed)
+		disp('all profiles are closed')
+		return
+	end	   
+	%select a profile first
+	if numprofiles>1
+		%first step, select a profile
+		isclosed=1;
+		title('click on a profile, RETURN to exit','FontSize',14)
+		while isclosed
+			[xi,yi] = ginput(1);
+			if ~isempty(xi)
+				%get the closest point 
+				[profsel indsel]=closestpoint(A,numprofiles,xi,yi);
+				if closed(profsel)
+					disp('selected profile is closed, make another selection')
+				else
+					isclosed=0;
+				end
+
+			else
+				%RETURN -> out
+				return
+			end
+		end
+	else
+		profsel=1;
+	end
+
+	%initialize x and y
+	x=A(profsel).x;
+	y=A(profsel).y;
+
+	%plot the selected profile
+	hold on
+	plot(x,y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+		'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+	plot(x(end),y(end),'MarkerEdgeColor',getfieldvalue(options,'selectioncolor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+
+	loop=1;
+	while loop
+
+		%first step, select a profile
+		title('click to add point to the selected profile, RETURN to exit','FontSize',14)
+		[xi,yi] = ginput(1);
+
+		if ~isempty(xi)
+			x(end+1,1)=xi;
+			y(end+1,1)=yi;
+
+			%plot everything
+			undoplots(prevplot);
+			plot(x,y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+				'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+			plot(x(end),y(end),'MarkerEdgeColor',getfieldvalue(options,'selectioncolor'),'MarkerSize',getfieldvalue(options,'MarkerSize')+2,'Marker',getfieldvalue(options,'Marker'));
+
+		else
+
+			%check that the profile is not empty
+			if ~isempty(x)
+				A(profsel).x=x; 
+				A(profsel).y=y; 
+				A(profsel).name=root; 
+				A(profsel).density=1; 
+				numpoints=numpoints+length(x);
+			end
+
+			%get out
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/addinsideprofile.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/addinsideprofile.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/addinsideprofile.m	(revision 21239)
@@ -0,0 +1,79 @@
+function [A,numprofiles,numpoints,closed]=addinsideprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+%ADDINSIDEPROFILE - add apoint inside a profile
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=addinsideprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	%some checks
+	if numprofiles==0
+		disp('no profile present, exiting...')
+		return
+	end	   
+	if numpoints<2
+		disp('at least two points are required, exiting...')
+		return
+	end	   
+	hold on
+
+	%plot squares
+	for i=1:numprofiles
+		plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+			'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+	end
+
+	loop=1;
+	while loop
+
+		%first step, select a segment
+		title('click on a segment, RETURN to exit','FontSize',14)
+		[xi,yi] = ginput(1);
+
+		%first click
+		if ~isempty(xi)
+
+			%get the closest segment
+			[profsel indsel]=closestsegment(A,numprofiles,xi,yi);
+
+			%check that at least one segment exists
+			if indsel==0
+				disp('at least two points in one profile are required, exiting...')
+				return
+			end
+
+			%highlight selected segment
+			plot([A(profsel).x(indsel) A(profsel).x(indsel+1)],[A(profsel).y(indsel) A(profsel).y(indsel+1)],...
+				'color',getfieldvalue(options,'selectioncolor'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+				'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+
+			%next click
+			title('click on the new point''s location, RETURN to exit','FontSize',14)
+			[xi,yi,but] = ginput(1);
+
+			%second click
+			if ~isempty(xi)
+
+				%add point to A
+				A(profsel).x=[A(profsel).x(1:indsel,1); xi; A(profsel).x(indsel+1:end,1)];
+				A(profsel).y=[A(profsel).y(1:indsel,1); yi; A(profsel).y(indsel+1:end,1)];
+				numpoints=numpoints+1;
+
+				%plot new profile
+				undoplots(prevplot);
+				for i=1:numprofiles
+					plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+						'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+				end
+
+			else
+				%RETURN->exit
+				return
+			end
+		else
+			%RETURN-> exit
+			return
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/addprofile.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/addprofile.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/addprofile.m	(revision 21239)
@@ -0,0 +1,48 @@
+function [A,numprofiles,numpoints,closed]=addprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+%ADDPROFILE - add a profile
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=addprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	title('click to add a point to the new profile, RETURN to exit','FontSize',14)
+	hold on
+
+	loop=1;
+	x=[];
+	y=[];
+
+	while loop
+
+		[xi,yi] = ginput(1);
+
+		if ~isempty(xi)
+			x(end+1,1)=xi;
+			y(end+1,1)=yi;
+
+			%plot everything
+			undoplots(prevplot);
+			plot(x,y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+				'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+			plot(x(end),y(end),'MarkerEdgeColor',getfieldvalue(options,'selectioncolor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+
+		else
+
+			%check that the profile is not empty
+			if ~isempty(x)
+				A(end+1).x=x; 
+				A(end).y=y; 
+				A(end).name=root; 
+				A(end).density=1; 
+				numprofiles=numprofiles+1;
+				numpoints=numpoints+length(x);
+				closed(end+1)=0;
+			end
+
+			%get out
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/closeprofile.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/closeprofile.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/closeprofile.m	(revision 21239)
@@ -0,0 +1,68 @@
+function [A,numprofiles,numpoints,closed]=closeprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+%CLOSEPROFILE - close one or several profile
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=closeprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	%some checks
+	if numprofiles==0
+		disp('no profile to be closed')
+		return
+	end
+
+	title('click on the profiles to be closed, RETURN to exit','FontSize',14)
+	hold on
+
+	loop=1;
+	selection=[];
+
+	while loop
+
+		%some checks,
+		if numprofiles==0    
+			disp('no profile present, exiting...')
+			return            
+		end  
+		if ~any(~closed),
+			disp('All the profiles are closed, exiting...')
+			return
+		end
+
+		[xi,yi] = ginput(1);
+
+		if ~isempty(xi)
+
+			%get closest profile
+			[profsel indsel]=closestpoint(A,numprofiles,xi,yi);
+
+			if ismember(profsel,selection)
+				%profile was in selection, remove it from the selection
+				selection(find(selection==profsel))=[];
+				%back to regular color
+				plot(A(profsel).x,A(profsel).y,...
+					'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+			elseif closed(profsel),
+				%profile already closed, do nothing
+				disp('selected profile aready closed, make another selection'),
+			else
+				%add the profile to the list to be closed
+				selection(end+1)=profsel;
+				%in selectioncolor
+				plot(A(profsel).x,A(profsel).y,...
+					'color',getfieldvalue(options,'selectioncolor'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+			end
+		else
+			%close the profiles
+			for i=1:length(selection),
+				A(selection(i)).x(end+1)=A(selection(i)).x(1);
+				A(selection(i)).y(end+1)=A(selection(i)).y(1);
+				numpoints=numpoints+1;
+				closed(selection(i))=1;
+			end
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/closestpoint.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/closestpoint.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/closestpoint.m	(revision 21239)
@@ -0,0 +1,21 @@
+function [profsel indsel]=closestpoint(A,numprofiles,xi,yi)
+%CLOSESTPOINT - find the closest point of a profile
+%
+%   This routine find the point of the profile A that is the closest
+%   to (xi,yi) and return the number of the profile and the number of
+%   the point
+%
+%   Usage:
+%     [profsel indsel]=closestpoint(A,numprofiles,xi,yi) 
+
+	%loop over the points of each profile, find the closest to (xi,yi)
+	for i=1:numprofiles,
+		distance=(xi-A(i).x).^2+(yi-A(i).y).^2;
+		[newdistance p]=min(distance);
+		if ((i==1) | (newdistance<olddistance)),
+			indsel=p;
+			profsel=i;
+			olddistance=newdistance;
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/closestsegment.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/closestsegment.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/closestsegment.m	(revision 21239)
@@ -0,0 +1,28 @@
+function [profsel indsel]=closestsegment(A,numprofiles,xi,yi)
+%CLOSESTSEGMENT - find the closest segment of a profile
+%
+%   This routine find the segment of the profile A that is the closest
+%   to (xi,yi) and return the number of the profile and the number of
+%   the first point belonging to this closest segment
+%
+%   Usage:
+%     [profsel indsel]=closestsegment(A,numprofiles,xi,yi) 
+
+	%loop over the middles of each profile, find the closest to (xi,yi)
+	profsel=0;
+	indsel=0;
+	first=1;
+	for i=1:numprofiles,
+		if length(A(i).x)>1
+			middles=[(A(i).x(1:end-1)+A(i).x(2:end))/2 (A(i).y(1:end-1)+A(i).y(2:end))/2];
+			distance=(xi-middles(:,1)).^2+(yi-middles(:,2)).^2;
+			[newdistance p]=min(distance);
+			if (first | (newdistance<olddistance)),
+				first=0;
+				indsel=p;
+				profsel=i;
+				olddistance=newdistance;
+			end
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/cutarea.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/cutarea.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/cutarea.m	(revision 21239)
@@ -0,0 +1,156 @@
+function [A,numprofiles,numpoints,closed]=cutarea(A,numprofiles,numpoints,closed,prevplot,root,options)
+%CUTAREA - cut several point of a profile
+%
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile. The user must click 3 times to select the
+%   area to be removed. Twice to select the tips and one to select
+%   the part of the profile to be removed
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=cutarea(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	hold on
+	loop=1;
+
+	%plot squares
+	for i=1:numprofiles
+		plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+			'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+	end
+
+	points=[];
+
+	%loop (at least 3 clicks needed)
+	while loop
+
+		%some checks
+		if numprofiles==0
+			disp('no profile present, exiting...')
+			return
+		end	   
+		if numpoints<3
+			disp('at least two points are needed, exiting...')
+			return
+		end	   
+
+		%select a point
+		if isempty(points)
+			title('click on the first tip, RETURN to exit','FontSize',14)
+		elseif length(points)==1
+			title('click on the second tip, RETURN to exit','FontSize',14)
+		else
+			title('click in the middle of the area to be cut, RETURN to exit','FontSize',14)
+		end
+
+		[xi,yi] = ginput(1);
+
+		if ~isempty(xi)
+			%get the closest point
+			%first time, look at all profiles
+			if isempty(points)
+				[profsel indsel]=closestpoint(A,numprofiles,xi,yi);
+				if ((closed(profsel) & length(A(profsel).x)<4) |  (~closed(profsel) & length(A(profsel).x)<3)),
+					disp('the selected profile has less than 3 points, make another selection');
+				else
+					selection=profsel;
+					points(end+1)=indsel;
+					plot(A(profsel).x,A(profsel).y,...
+						'color',getfieldvalue(options,'selectioncolor'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+					text(A(selection).x(indsel),A(selection).y(indsel),num2str(1),'FontSize',14,'background',[0.7 0.7 0.9]);
+				end
+			else
+				%get the 2d or 3d point for the given contou
+				[profsel indsel]=closestpoint(A(selection),1,xi,yi);
+				if ismember(indsel,points)
+					disp('the selected points must be distinct')
+				else
+					%second click?
+					if length(points)==1,
+						points(end+1)=indsel;
+						text(A(selection).x(indsel),A(selection).y(indsel),num2str(2),'FontSize',14,'background',[0.7 0.7 0.9]);
+					%third click?
+					else
+						p1=points(1); p2=points(2); p3=indsel;
+						x=A(selection).x; y=A(selection).y;
+						if p1<p2
+							if p3>p1 & p3<p2
+								if closed(selection)
+									%open the profile
+									n=length(A(selection).x);
+									A(selection).x=[A(selection).x(p2:end-1,1);A(selection).x(1:p1,1)];
+									A(selection).y=[A(selection).y(p2:end-1,1);A(selection).y(1:p1,1)];
+									numpoints=numpoints-(n-length(A(selection).x));
+									closed(selection)=0;
+								else
+									%cut in 2 profiles
+									A(selection).x=x(1:p1);
+									A(selection).y=y(1:p1);
+									closed(selection)=0;
+									A(end+1).x=x(p2:end);
+									A(end).y=y(p2:end);
+									A(end).density=A(selection).density;
+									A(end).name=A(selection).name;
+									closed(end+1)=0;
+									numprofiles=numprofiles+1;
+									numpoints=numpoints-(p2-p1-1);
+								end
+							else
+								%only point removal
+								n=length(A(selection).x);
+								A(selection).x=x(p1:p2);
+								A(selection).y=y(p1:p2);
+								numpoints=numpoints-(n-length(A(selection).x));
+								closed(selection)=0;
+							end
+						else
+							if p3>p2 & p3<p1
+								if closed(selection)
+									%open the profile
+									n=length(A(selection).x);
+									A(selection).x=[A(selection).x(p1:end-1,1);A(selection).x(1:p2,1)];
+									A(selection).y=[A(selection).y(p1:end-1,1);A(selection).y(1:p2,1)];
+									numpoints=numpoints-(n-length(A(selection).x));
+									closed(selection)=0;
+								else
+									%cut in 2 profiles
+									closed(selection)=0;
+									A(selection).x=x(1:p2);
+									A(selection).y=y(1:p2);
+									A(end+1).x=x(p1:end);
+									A(end).y=y(p1:end);
+									A(end).density=A(selection).density;
+									A(end).name=A(selection).name;
+									closed(end+1)=0;
+									numprofiles=numprofiles+1;
+									numpoints=numpoints-(p1-p2-1);
+								end
+							else
+								%only point removal
+								n=length(A(selection).x);
+								x(1:p2-1)=[];x(p1-p2+2:end)=[];%it should have been x(p2+1:end)
+								y(1:p2-1)=[];y(p1-p2+2:end)=[];
+								A(selection).x=x;
+								A(selection).y=y;
+								numpoints=numpoints-(n-length(A(selection).x));
+								closed(selection)=0;
+							end
+						end
+
+						%plot new profile
+						undoplots(prevplot);
+						for i=1:numprofiles
+							plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+								'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+						end
+						points=[];
+
+					end
+				end
+			end
+		else
+			%RETRUN-> quit
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/cutprofile.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/cutprofile.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/cutprofile.m	(revision 21239)
@@ -0,0 +1,79 @@
+function [A,numprofiles,numpoints,closed]=cutprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+%CUTPROFILE - cut a profile
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=cutprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	%some checks
+	if numprofiles==0
+		disp('no profile present, exiting...')
+		return
+	end	   
+	if numpoints<2
+		disp('at least two points are needed')
+		return
+	end	   
+	hold on
+
+	%plot squares
+	for i=1:numprofiles
+		plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+			'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+	end
+
+	loop=1;
+	while loop
+
+		%select a segment
+		title('click the segment to cut, RETURN to exit','FontSize',14)
+		[xi,yi] = ginput(1);
+
+		if ~isempty(xi)
+
+			%get the closest segment
+			[profsel indsel]=closestsegment(A,numprofiles,xi,yi);
+
+			%check that at least one segment exists
+			if indsel==0
+				disp('at least 2 points are required');
+				return,
+			end
+
+			if ((closed(profsel) & length(A(profsel).x)<3) | (~closed(profsel) & length(A(profsel).x)<2))
+				disp('at least 2 points are required, make another selection');
+			else
+				%cut A
+				if closed(profsel)
+					%open the contour
+					A(profsel).x=[A(profsel).x(indsel+1:end-1,1);A(profsel).x(1:indsel,1)];
+					A(profsel).y=[A(profsel).y(indsel+1:end-1,1);A(profsel).y(1:indsel,1)];
+					numpoints=numpoints-1;
+					closed(profsel)=0;
+				else
+					%cut the contour in 2 profiles
+					A(end+1).x=A(profsel).x(indsel+1:end,1);
+					A(end).y=A(profsel).y(indsel+1:end,1);
+					A(end).name=root; 
+					A(end).density=1; 
+					A(profsel).x=A(profsel).x(1:indsel,1);
+					A(profsel).y=A(profsel).y(1:indsel,1);
+					numprofiles=numprofiles+1;
+					closed(end+1)=0;
+				end
+
+				%plot new profile
+				undoplots(prevplot);
+				for i=1:numprofiles
+					plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+						'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+				end
+			end
+		else
+			%RETURN->exit
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/mergeprofiles.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/mergeprofiles.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/mergeprofiles.m	(revision 21239)
@@ -0,0 +1,152 @@
+function [A,numprofiles,numpoints,closed]=mergeprofiles(A,numprofiles,numpoints,closed,prevplot,root,options)
+%MERGEPROFILES - merge profiles
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile. The user must select the two tips that
+%   he/she wants to merge
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=mergeprofiles(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+hold on
+loop=1;
+
+%Take all the tips coordinates of open profiles
+counter=1; tips=[];
+for i=1:numprofiles
+	if ~closed(i),
+		%x and y coord, profile number, 1 if beginning, 2 and if end
+		if length(A(i).x)==1,
+			tips(counter,:)=[A(i).x(1)   A(i).y(1)   i  1];
+			counter=counter+1;
+		else
+			tips(counter,:)=[A(i).x(1)   A(i).y(1)   i  1];
+			tips(counter+1,:) = [A(i).x(end) A(i).y(end) i  2];
+			counter=counter+2;
+		end
+	end
+end
+
+if size(tips,1)<2
+	disp('at least one unclosed profile is required')
+	return
+end
+
+%plot the tips only
+plot(tips(:,1),tips(:,2),...
+	'LineStyle','none','MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+firsttip=1;
+
+%loop (at least 2 clicks needed)
+while loop
+
+	%some checks
+	if size(tips,1)<2
+		disp('at least one unclosed profiles are required')
+		return
+	end
+
+	%select a point
+	if firsttip
+		title('click on the first tip, RETURN to exit','FontSize',14)
+	else
+		title('click on the second tip, RETURN to exit','FontSize',14)
+	end
+
+	[xi,yi] = ginput(1);
+
+	if ~isempty(xi)
+
+		if firsttip
+			%find the selected tip
+			distance=(xi-tips(:,1)).^2+(yi-tips(:,2)).^2;
+			[dmin tip1]=min(distance);
+			numprofile1=tips(tip1,3);
+			firsttip=0;
+
+			%remove tip1 from tips list
+			newtips=tips;
+			newtips(tip1,:)=[];
+
+			%plot selected tip
+			plot(tips(tip1,1),tips(tip1,2),...
+				'LineStyle','none','MarkerEdgeColor',getfieldvalue(options,'selectioncolor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+			plot(A(numprofile1).x,A(numprofile1).y,...
+				'color',getfieldvalue(options,'selectioncolor'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+
+		%second selection
+		else
+			distance=(xi-newtips(:,1)).^2+(yi-newtips(:,2)).^2;
+			[dmin tip2]=min(distance);
+			numprofile2=newtips(tip2,3);
+
+			if numprofile1==numprofile2
+				%close the profile
+				A(numprofile1).x(end+1)=A(numprofile1).x(1);
+				A(numprofile1).y(end+1)=A(numprofile1).y(1);
+				numpoints=numpoints+1;
+				closed(numprofile1)=1;
+
+			else
+
+				if tips(tip1,4)==1 & newtips(tip2,4)==1,
+					A(numprofile1).x=[flipud(A(numprofile2).x); A(numprofile1).x];
+					A(numprofile1).y=[flipud(A(numprofile2).y); A(numprofile1).y];
+					numprofiles=numprofiles-1;
+
+				elseif tips(tip1,4)==1 & newtips(tip2,4)==2,
+					A(numprofile1).x=[A(numprofile2).x; A(numprofile1).x];
+					A(numprofile1).y=[A(numprofile2).y; A(numprofile1).y];
+					numprofiles=numprofiles-1;
+
+				elseif tips(tip1,4)==2 & newtips(tip2,4)==1,
+					A(numprofile1).x=[A(numprofile1).x; A(numprofile2).x];
+					A(numprofile1).y=[A(numprofile1).y; A(numprofile2).y];
+					numprofiles=numprofiles-1;
+
+				elseif tips(tip1,4)==2 & newtips(tip2,4)==2,
+					A(numprofile1).x=[A(numprofile1).x; flipud(A(numprofile2).x)];
+					A(numprofile1).y=[A(numprofile1).y; flipud(A(numprofile2).y)];
+					numprofiles=numprofiles-1;
+				end
+
+				%delete profile2
+				A(numprofile2)=[];
+				closed(numprofile2)=[];
+
+			end
+
+			%update tips
+			counter=1; tips=[];
+			for i=1:numprofiles
+				if ~closed(i),
+					%x and y coord, profile number, 1 if beginning, 2 and if end
+					if length(A(i).x)==1,
+						tips(counter,:)=[A(i).x(1)   A(i).y(1)   i  1];
+						counter=counter+1;
+					else
+						tips(counter,:)=[A(i).x(1)   A(i).y(1)   i  1];
+						tips(counter+1,:) = [A(i).x(end) A(i).y(end) i  2];
+						counter=counter+2;
+					end
+				end
+			end
+
+			%plot new profile
+			undoplots(prevplot);
+			for i=1:numprofiles
+				plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+			end
+			if ~isempty(tips)
+				plot(tips(:,1),tips(:,2),...
+					'LineStyle','none','MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+			end
+
+			%back to beginning
+			firsttip=1;
+		end
+	else
+		%RETRUN-> quit
+		loop=0;
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/modifyposition.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/modifyposition.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/modifyposition.m	(revision 21239)
@@ -0,0 +1,77 @@
+function [A,numprofiles,numpoints,closed]=modifyposition(A,numprofiles,numpoints,closed,prevplot,root,options)
+%MODIFYPOSITION - modify the prosition of a point of a profile
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=modifyposition(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	%some checks
+	if numprofiles==0
+		disp('no profile present, exiting..')
+		return
+	end
+
+	hold on
+	loop=1;
+
+	%plot squares
+	for i=1:numprofiles
+		plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+			'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+	end
+
+	while loop
+
+		%select a point to be modified 
+		title('click on the point to be modified, RETURN to exit','FontSize',14)
+		[xi,yi] = ginput(1);
+
+		if ~isempty(xi)
+
+			%get the closest point
+			[profsel indsel]=closestpoint(A,numprofiles,xi,yi);
+
+			%plot the point in blue
+			plot(A(profsel).x(indsel),A(profsel).y(indsel),...
+				'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+				'MarkerEdgeColor',getfieldvalue(options,'selectioncolor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+
+			%select new location
+			title('click on the new location, RETURN to exit','FontSize',14)
+			[xi,yi] = ginput(1);
+
+			if ~isempty(xi)
+
+				%modification of its coordinates
+				A(profsel).x(indsel)=xi;
+				A(profsel).y(indsel)=yi;
+
+				%modify the last point if the profile is closed and indsel=end or 1
+				if closed(profsel)
+					if indsel==1 
+						A(profsel).x(end)=xi;
+						A(profsel).y(end)=yi;
+					elseif indsel==length(A(profsel).x)
+						A(profsel).x(1)=xi;
+						A(profsel).y(1)=yi;
+					end
+				end
+
+				%plot new profile
+				undoplots(prevplot);
+				for i=1:numprofiles
+					plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+						'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+				end
+			else
+				%RETURN-> exit
+				loop=0;
+			end
+		else
+			%RETURN-> exit
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/orientprofile.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/orientprofile.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/orientprofile.m	(revision 21239)
@@ -0,0 +1,54 @@
+function [A,numprofiles,numpoints,closed]=orientprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+%ORIENTPROFILE - cahnge profile orientation
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=orientprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	title('click on the profiles to be reoriented, RETURN to exit','FontSize',14)
+	hold on
+
+	loop=1;
+	selection=[];
+
+	while loop
+
+		%some checks
+		if numprofiles==0
+			disp('no profile to be reoriented, exiting...')
+			return
+		end
+
+		[xi,yi] = ginput(1);
+
+		if ~isempty(xi)
+
+			%get closest profile
+			[profsel indsel]=closestpoint(A,numprofiles,xi,yi);
+
+			if ismember(profsel,selection)
+				%profile was in selection, remove it from list
+				selection(find(selection==profsel))=[];
+				%back to regular color
+				plot(A(profsel).x,A(profsel).y,...
+					'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+			else
+				%add the profile to the list to be removed
+				selection(end+1)=profsel;
+				%in selectioncolor
+				plot(A(profsel).x,A(profsel).y,...
+					'color',getfieldvalue(options,'selectioncolor'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+			end
+		else
+			%reorient profiles
+			selection=sort(selection);
+			for i=1:length(selection),
+				A(selection(i)).x=flipud(A(selection(i)).x);
+				A(selection(i)).y=flipud(A(selection(i)).y);
+			end
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/removepoints.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/removepoints.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/removepoints.m	(revision 21239)
@@ -0,0 +1,85 @@
+function [A,numprofiles,numpoints,closed]=removepoints(A,numprofiles,numpoints,closed,prevplot,root,options)
+%REMOVEPOINTS - remove a point from a profile
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=removepoints(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	%some checks
+	if numprofiles==0
+		disp('no profile present, exiting...')
+		return
+	end
+
+	hold on
+	loop=1;
+
+	%plot squares
+	for i=1:numprofiles
+		plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+			'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+
+	end
+
+	while loop
+
+		%check that at least one point is present
+		if numpoints==0
+			disp('at least one point are needed')
+			return
+		end	   
+
+		%select a point to be deleted
+		title('click on the point to be removed, RETURN to exit','FontSize',14)
+		[xi,yi] = ginput(1);
+
+		if ~isempty(xi)
+
+			%get the closest point
+			[profsel indsel]=closestpoint(A,numprofiles,xi,yi);
+
+			%remove point of A
+			A(profsel).x(indsel)=[];
+			A(profsel).y(indsel)=[];
+
+			%unclose the domain if only 2 points remaining
+			if closed(profsel)
+				if length(A(profsel).x)==3
+					A(profsel).x(end)=[];
+					A(profsel).y(end)=[];
+					numpoints=numpoints-1;
+					closed(profsel)=0;
+				end
+			end
+
+			%remove the last point if the profile is closed and indsel=end or 1
+			if closed(profsel)
+				if indsel==1 
+					A(profsel).x(end)=A(profsel).x(1);
+					A(profsel).y(end)=A(profsel).y(1);
+				elseif indsel==length(A(profsel).x)
+					A(profsel).x(1)=A(profsel).x(end);
+					A(profsel).y(1)=A(profsel).y(end);
+				end
+			end
+			numpoints=numpoints-1;
+
+			%plot new profile
+			undoplots(prevplot);
+			for i=1:numprofiles
+				plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+					'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+				if length(A(i).x)==1
+					plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+						'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker','o');
+				end
+			end
+
+		else
+			%RETURN-> exit
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/removeprofile.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/removeprofile.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/removeprofile.m	(revision 21239)
@@ -0,0 +1,56 @@
+function [A,numprofiles,numpoints,closed]=removeprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+%REMOVEPROFILE - delete a profile
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=removeprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	title('click on the profiles to be removed, RETURN to exit','FontSize',14)
+	hold on
+
+	loop=1;
+	selection=[];
+
+	while loop
+
+		%some checks
+		if numprofiles==0
+			disp('no profile to be removed, exiting...')
+			return
+		end
+
+		[xi,yi] = ginput(1);
+
+		if ~isempty(xi)
+
+			%get closest profile
+			[profsel indsel]=closestpoint(A,numprofiles,xi,yi);
+
+			if ismember(profsel,selection)
+				%profile was in selection, remove it
+				selection(find(selection==profsel))=[];
+				%back to regular color
+				plot(A(profsel).x,A(profsel).y,...
+					'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+			else
+				%add the profile to the list to be removed
+				selection(end+1)=profsel;
+				%in selectioncolor
+				plot(A(profsel).x,A(profsel).y,...
+					'color',getfieldvalue(options,'selectioncolor'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+			end
+		else
+			%remove the profiles
+			selection=sort(selection);
+			for i=1:length(selection),
+				numprofiles=numprofiles-1;
+				numpoints=numpoints-length(A(selection(i)-(i-1)).x);
+				A(selection(i)-(i-1))=[];
+				closed(selection(i)-(i-1))=[];
+			end
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/removeseveralpoints.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/removeseveralpoints.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/removeseveralpoints.m	(revision 21239)
@@ -0,0 +1,130 @@
+function [A,numprofiles,numpoints,closed]=removeseveralpoints(A,numprofiles,numpoints,closed,prevplot,root,options)
+%REMOVESEVERALPOINTS - remove several point
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=removeseveralpoints(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	%some checks
+	if numprofiles==0
+		disp('no profile present, exiting...')
+		return
+	end	   
+	if numpoints<3
+		disp('at least 3 points are required, exiting...')
+		return
+	end	   
+	hold on
+	loop=1;
+
+	%plot squares
+	for i=1:numprofiles
+		plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+			'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+	end
+
+	points=[];
+
+	%loop (at least 3 clicks needed)
+	while loop
+
+		%some checks
+		if numpoints<3
+			disp('at least 3 points are required, exiting...')
+			return
+		end
+
+		%select a point
+		if isempty(points)
+			title('click on the first tip, RETURN to exit','FontSize',14)
+		elseif length(points)==1
+			title('click on the second tip, RETURN to exit','FontSize',14)
+		else
+			title('click in the middle of the area to be removed, RETURN to exit','FontSize',14)
+		end
+
+		[xi,yi] = ginput(1);
+
+		if ~isempty(xi)
+			%get the closest point
+			%first time, look at all profiles
+			if isempty(points)
+				[profsel indsel]=closestpoint(A,numprofiles,xi,yi);
+				if ((closed(profsel) & length(A(profsel).x)<4) |  (~closed(profsel) & length(A(profsel).x)<3)),
+					disp('the selected profile has less than 3 points, make another selection');
+				else
+					selection=profsel;
+					points(end+1)=indsel;
+					plot(A(profsel).x,A(profsel).y,...
+						'color',getfieldvalue(options,'selectioncolor'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+					text(A(selection).x(indsel),A(selection).y(indsel),num2str(1),'FontSize',14,'background',[0.7 0.7 0.9]);
+				end
+				%disp(['p1= ' num2str(indsel)]),
+			else
+				%get the 2d or 3d point for the given contou
+				[profsel indsel]=closestpoint(A(selection),1,xi,yi);
+				if ismember(indsel,points)
+					disp('the selected points must be distinct')
+				else
+					%second click?
+					if length(points)==1,
+						points(end+1)=indsel;
+						text(A(selection).x(indsel),A(selection).y(indsel),num2str(2),'FontSize',14,'background',[0.7 0.7 0.9]);
+						%disp(['p2= ' num2str(indsel)]),
+					%third click?
+					else
+						p1=points(1); p2=points(2); p3=indsel;
+						%disp(['p3= ' num2str(indsel)]),
+						if p1<p2
+							if p3>p1 & p3<p2
+								A(selection).x(p1+1:p2-1)=[];
+								A(selection).y(p1+1:p2-1)=[];
+								numpoints=numpoints-(p2-p1-1);
+							else
+								A(selection).x=A(selection).x(p1:p2);
+								A(selection).y=A(selection).y(p1:p2);
+								numpoints=numpoints-(numpoints-1-p2)-(p1-1);
+								if closed(selection)
+									%reattach the tips
+									A(selection).x(end+1)=A(selection).x(1);
+									A(selection).y(end+1)=A(selection).y(1);
+									numpoints=numpoints+1;
+								end
+							end
+						else
+							if p3>p2 & p3<p1
+								A(selection).x(p2+1:p1-1)=[];
+								A(selection).y(p2+1:p1-1)=[];
+								numpoints=numpoints-(p1-p2-1);
+							else
+								A(selection).x=A(selection).x(p2:p1);
+								A(selection).y=A(selection).y(p2:p1);
+								numpoints=numpoints-(numpoints-1-p1)-(p2-1);
+								if closed(selection)
+									%reattach the tips
+									A(selection).x(end+1)=A(selection).x(1);
+									A(selection).y(end+1)=A(selection).y(1);
+									numpoints=numpoints+1;
+								end
+							end
+						end
+
+						%plot new profiles
+						undoplots(prevplot);
+						for i=1:numprofiles
+							plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+								'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+						end
+						points=[];
+
+					end
+				end
+			end
+		else
+			%RETRUN-> quit
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/undoplots.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/undoplots.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/exp/operation/undoplots.m	(revision 21239)
@@ -0,0 +1,12 @@
+function  undoplots(prevplot)
+%UNDOPLOTS - undo plots
+%
+%   Usage:undoplots(prevplot)
+
+	%erase all previous plots
+	g=get(gca,'children');
+	L=length(g);
+	for i=1:L-prevplot
+		delete(g(i));
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/DepthAverage.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/DepthAverage.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/DepthAverage.js	(revision 21239)
@@ -0,0 +1,52 @@
+function DepthAverage(md,vector) {
+    // DEPTHAVERAGE - computes depth average of 3d vector using the trapezoidal rule, and returns the value on 2d mesh. 
+    // 
+    //    Usage:
+    //       vector_average=DepthAverage(md,vector);
+    // 
+    //    Example:
+    //       vel_bar=DepthAverage(md,md.initialization.vel);
+
+    // check that the model given in input is 3d
+    if (md.mesh.elementtype() !== 'Penta') {
+        console.error('DepthAverage error message: the model given in input must be 3d');
+    }
+
+    // nods data
+    if (vector.length === md.mesh.numberofvertices) {
+        var vector_average=zeros(md.mesh.numberofvertices2d,1);
+
+        for (var i = 1; i < md.mesh.numberoflayers-1; ++i) {
+            vector_average = vector_average.map(function(x) {
+                return x + (project2d(md, vector, i) + project2d(md,vector,i+1))/2;
+            }).map(function(y) {
+                return y * (project2d(md, md.mesh.z, i+1) - project2d(md, md.mesh.z, i));
+            });
+        }
+
+        vector_average = vector_average.map(function(z) {
+            return z / project2d(md, md.geometry.thickness, 1);
+        });
+
+        return vector_average;
+    }
+    // element data
+    else if (vector.length === md.mesh.numberofelements) {
+        var vector_average=zeros(md.mesh.numberofelements2d,1);
+        for (var i = 1; i < md.mesh.numberoflayers-1; ++i) {
+            vector_average = vector_average.map(function(x) {
+                return x + project2d(md, vector, i);
+            }).map(function(y) {
+                return y * (project2d(md, md.mesh.z, i+1) - project2d(md, md.mesh.z, i));
+            });
+        }
+
+        vector_average = vector_average.map(function(z) {
+            return z / project2d(md, md.geometry.thickness, 1);
+        });
+
+        return vector_average;
+    } else {
+        console.error('vector size not supported yet');
+    }
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/DepthAverage.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/DepthAverage.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/DepthAverage.m	(revision 21239)
@@ -0,0 +1,33 @@
+function  vector_average=DepthAverage(md,vector)
+%DEPTHAVERAGE - computes depth average of 3d vector using the trapezoidal rule, and returns the value on 2d mesh. 
+%
+%   Usage:
+%      vector_average=DepthAverage(md,vector);
+%
+%   Example:
+%      vel_bar=DepthAverage(md,md.initialization.vel);
+
+%check that the model given in input is 3d
+if ~strcmp(md.mesh.elementtype(),'Penta');
+	error('DepthAverage error message: the model given in input must be 3d')
+end
+
+%nods data
+if (length(vector)==md.mesh.numberofvertices),
+	vector_average=zeros(md.mesh.numberofvertices2d,1);
+	for i=1:md.mesh.numberoflayers-1,
+		vector_average=vector_average+(project2d(md,vector,i)+project2d(md,vector,i+1))/2.*(project2d(md,md.mesh.z,i+1)-project2d(md,md.mesh.z,i));
+	end
+	vector_average=vector_average./project2d(md,md.geometry.thickness,1);
+
+%element data
+elseif (length(vector)==md.mesh.numberofelements),
+	vector_average=zeros(md.mesh.numberofelements2d,1);
+	for i=1:md.mesh.numberoflayers-1,
+		vector_average=vector_average+project2d(md,vector,i).*(project2d(md,md.mesh.z,i+1)-project2d(md,md.mesh.z,i));
+	end
+	vector_average=vector_average./project2d(md,md.geometry.thickness,1);
+
+else
+	error('vector size not supported yet');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/DepthAverage.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/DepthAverage.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/DepthAverage.py	(revision 21239)
@@ -0,0 +1,50 @@
+import numpy as npy
+from project2d import project2d
+
+def DepthAverage(md,vector):
+	'''
+	computes depth average of 3d vector using the trapezoidal rule, and returns
+	the value on the 2d mesh. 
+	
+	Usage:
+		vector_average=DepthAverage(md,vector)
+	
+	Example:
+		vel_bar=DepthAverage(md,md.initialization.vel)
+	'''
+
+	#check that the model given in input is 3d
+	if md.mesh.elementtype() != 'Penta':
+		raise TypeError('DepthAverage error message: the model given in input must be 3d')
+
+	# coerce to array in case float is passed
+	if type(vector)!=npy.ndarray:
+		print 'coercing array'
+		vector=npy.array(value)
+
+	vec2d=False
+	if vector.ndim==2:
+		vec2d=True
+		vector=vector.reshape(-1,)
+
+	#nods data
+	if vector.shape[0]==md.mesh.numberofvertices:
+		vector_average=npy.zeros(md.mesh.numberofvertices2d)
+		for i in xrange(1,md.mesh.numberoflayers):
+			vector_average=vector_average+(project2d(md,vector,i)+project2d(md,vector,i+1))/2.*(project2d(md,md.mesh.z,i+1)-project2d(md,md.mesh.z,i))
+		vector_average=vector_average/project2d(md,md.geometry.thickness,1)
+	
+	#element data
+	elif vector.shape[0]==md.mesh.numberofelements:
+		vector_average=npy.zeros(md.mesh.numberofelements2d)
+		for i in xrange(1,md.mesh.numberoflayers):
+			vector_average=vector_average+project2d(md,vector,i)*(project2d(md,md.mesh.z,i+1)-project2d(md,md.mesh.z,i))
+		vector_average=vector_average/project2d(md,md.geometry.thickness,1)
+	
+	else:
+		raise ValueError('vector size not supported yet');
+
+	if vec2d:
+		vector_average=vector_average.reshape(-1,1)
+
+	return vector_average
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/project2d.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/project2d.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/project2d.js	(revision 21239)
@@ -0,0 +1,46 @@
+function project2d(md3d,value,layer) {
+    // PROJECT2D - returns the value of a field for a given layer of the mesh
+    // 
+    //    returns the value of a vector for a given layer from extruded mesh onto the 2d mesh 
+    //    used to do the extrusion. This function is used to compare values between different
+    //    layers of a 3d mesh.
+    // 
+    //    Usage:
+    //       projection_value=project2d(md3d,value,layer)
+    // 
+    //    Example:
+    //       vel2=project2d(md3d,md3d.initialization.vel,2);
+    //       returns the velocity of the second layer (1 is the base)
+
+    // some checks on list of arguments
+    if (arguments.length !== 3) {
+        console.error('project2d error message');
+    }
+
+    if (md3d.mesh.domaintype() !== '3D') {
+        console.error("wrong model type ... should be ''3d''");
+    }
+
+    if (layer<1 || layer>md3d.mesh.numberoflayers) {
+        console.error(['layer must be between 1 and ' + num2str(md3d.mesh.numberoflayers)]);
+    }
+
+    // Return the projection value
+    var temp = [];
+    if (value.length === md3d.mesh.numberofvertices) {
+        for (var i = (layer-1)*md3d.mesh.numberofvertices2d; i <= layer*md3d.mesh.numberofvertices2d; ++i) {
+            temp.push(value[i]);
+        }
+    } else if (value.length === md3d.mesh.numberofvertices+1) {
+        for (var i = (layer-1)*md3d.mesh.numberofvertices2d; i <= layer*md3d.mesh.numberofvertices2d; ++i) {
+            temp.push(value[i]);
+        }
+        temp.push(value[value.length-1]);
+    } else {
+        for (var i = (layer-1)*md3d.mesh.numberofelements; i <= layer*md3d.mesh.numberofelements2d; ++i) {
+            temp.push(value[i]);
+        }
+    }
+
+    return temp;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/project2d.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/project2d.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/project2d.m	(revision 21239)
@@ -0,0 +1,35 @@
+function projection_value=project2d(md3d,value,layer)
+%PROJECT2D - returns the value of a field for a given layer of the mesh
+%
+%   returns the value of a vector for a given layer from extruded mesh onto the 2d mesh 
+%   used to do the extrusion. This function is used to compare values between different
+%   layers of a 3d mesh.
+%
+%   Usage:
+%      projection_value=project2d(md3d,value,layer)
+%
+%   Example:
+%      vel2=project2d(md3d,md3d.initialization.vel,2);
+%      returns the velocity of the second layer (1 is the base)
+
+%some checks on list of arguments
+if ((nargin~=3) ),
+	help project2d
+	error('project2d error message');
+end
+
+if ~strcmp(md3d.mesh.domaintype,'3D');
+	error('wrong model type ... should be ''3d''');
+end
+
+if ((layer<1) | (layer>md3d.mesh.numberoflayers)),
+	error(['layer must be between 1 and ' num2str(md3d.mesh.numberoflayers)]);
+end
+
+if size(value,1)==md3d.mesh.numberofvertices,
+	projection_value=value((layer-1)*md3d.mesh.numberofvertices2d+1:layer*md3d.mesh.numberofvertices2d,:);
+elseif size(value,1)==md3d.mesh.numberofvertices+1,
+	projection_value=[value((layer-1)*md3d.mesh.numberofvertices2d+1:layer*md3d.mesh.numberofvertices2d,:); value(end,:)];
+else
+	projection_value=value((layer-1)*md3d.mesh.numberofelements2d+1:layer*md3d.mesh.numberofelements2d,:);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/project2d.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/project2d.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/project2d.py	(revision 21239)
@@ -0,0 +1,49 @@
+import numpy as npy
+
+def project2d(md3d,value,layer):
+	'''
+	returns the value of a field for a given layer of the mesh
+	
+
+   returns the value of a vector for a given layer from extruded mesh onto the 2d mesh 
+   used to do the extrusion. This function is used to compare values between different
+   layers of a 3d mesh.
+
+   Usage:
+      projection_value=project2d(md3d,value,layer)
+
+   Example:
+      vel2=project2d(md3d,md3d.initialization.vel,2);
+      returns the velocity of the second layer (1 is the base)
+	'''
+
+	if md3d.mesh.domaintype().lower() != '3d':
+		raise StandardError("model passed to project2d function should be 3D")
+
+	if layer<1 or layer>md3d.mesh.numberoflayers:
+		raise ValueError("layer must be between 0 and %i" % md3d.mesh.numberoflayers)
+	
+	# coerce to array in case float is passed
+	if type(value)!=npy.ndarray:
+		print 'coercing array'
+		value=npy.array(value)
+
+	vec2d=False
+	if value.ndim==2 and value.shape[1]==1: 
+		value=value.reshape(-1,)
+		vec2d=True
+
+	if value.size==1:
+		projection_value=value[(layer-1)*md3d.mesh.numberofelements2d:layer*md3d.mesh.numberofelements2d]
+	elif value.shape[0]==md3d.mesh.numberofvertices:
+		#print 'indices: ', (layer-1)*md3d.mesh.numberofvertices2d, layer*md3d.mesh.numberofvertices2d
+		projection_value=value[(layer-1)*md3d.mesh.numberofvertices2d:layer*md3d.mesh.numberofvertices2d]
+	elif value.shape[0]==md3d.mesh.numberofvertices+1:
+		projection_value=[value[(layer-1)*md3d.mesh.numberofvertices2d:layer*md3d.mesh.numberofvertices2d], value[-1]]
+	else:
+		projection_value=value[(layer-1)*md3d.mesh.numberofelements2d:layer*md3d.mesh.numberofelements2d]
+
+	if vec2d:
+		projection_value=projection_value.reshape(-1,1)
+
+	return projection_value
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/project3d.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/project3d.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/project3d.js	(revision 21239)
@@ -0,0 +1,115 @@
+project3d = function() {
+    //PROJECT3D - vertically project a vector from 2d mesh
+    //
+    //   vertically project a vector from 2d mesh (split in noncoll and coll areas) into a 3d mesh.
+    //   This vector can be a node vector of size (md.mesh.numberofvertices2d,N/A) or an 
+    //   element vector of size (md.mesh.numberofelements2d,N/A). 
+    //   arguments: 
+    //      'vector': 2d vector
+    //      'type': 'element' or 'node'. 
+    //   options: 
+    //      'layer' a layer number where vector should keep its values. If not specified, all layers adopt the 
+    //             value of the 2d vector.
+    //      'padding': default to 0 (value adopted by other 3d layers not being projected0
+    //
+    //   Egs:
+    // md.extruded_vector=project3d(md,'vector',vector2d,'type','node','layer',1,'padding',null);
+    // md.extruded_vector=project3d(md,'vector',vector2d,'type','element','padding',0);
+    // md.extruded_vector=project3d(md,'vector',vector2d,'type','node');
+
+    //some regular checks
+    
+    function remove_first_n(start, arglist) { // Using slice() on arguments is discouraged because it prevents optimizations in engines such as V8
+        var args = [];
+
+        for (var i = start; i < arglist.length; i++) {
+            args.push(arglist[i]);
+        }
+
+        return args;
+    }
+
+    if (arguments.length===1 || arguments.length===0) {
+        //help project3d
+        console.error('project3d bad usage');
+    }
+
+    var md = arguments[0];
+
+    if (md.mesh.elementtype() !== 'Penta') {
+        console.error('input model is not 3d');
+    }
+
+    //retrieve parameters from options.
+    options      = new pairoptions(remove_first_n(1, arguments)); // slice to remove md
+    vector2d     = options.getfieldvalue('vector');     //mandatory
+    type         = options.getfieldvalue('type');       //mandatory
+    layer        = options.getfieldvalue('layer',0);    //optional (do all layers default:)
+    paddingvalue = options.getfieldvalue('padding',0);  //0 by default
+
+    if (isNaN(vector2d) || vector2d === 0 || vector2d.length === 1) { // NaN treated as length 1 in MATLAB
+        projected_vector=vector2d;
+    } else if (type.toLowerCase() === 'node') {
+
+        //Initialize 3d vector
+        if (vector2d.length===md.mesh.numberofvertices2d) {
+                projected_vector=ones(md.mesh.numberofvertices,  vector2d[0].length).map(function(arr) { return arr.fill(paddingvalue); });
+        } else if (vector2d.length===md.mesh.numberofvertices2d+1) {
+            projected_vector=ones(md.mesh.numberofvertices+1,vector2d[0].length).map(function(arr) { return arr.fill(paddingvalue); });
+            projected_vector[projected_vector.length-1] = projected_vector[projected_vector.length-1].map(function(element, index) { return vector2d[vector2d.length-1][index]; });
+            vector2d.pop(); // Remove last array
+        } else {
+            console.error('vector length not supported')
+        }
+
+            //Fill in
+        if (layer===0) {
+            for (var i = 1; i < md.mesh.numberoflayers; ++i) {
+                var vec_idx = 0;
+
+                for (var j = (i-1)*md.mesh.numberofvertices2d+1, vec_idx = 0; j <= i * md.mesh.numberofvertices2d && vec_idx < vector2d.length; ++j, ++vec_idx) {
+                    projected_vector[j].map(function(element, index) { return vector2d[vec_idx][index]; });
+                }
+
+            }
+        } else {
+            var vec_idx = 0;
+
+            for (var i = (layer-1)*md.mesh.numberofvertices2d+1, vec_idx = 0; i <= layer * md.mesh.numberofvertices2d && vec_idx < vector2d.length; ++i, ++vec_idx) {
+                projected_vector[i] = vector2d[vec_idx];
+            }
+        }
+    } else if (type.toLowerCase() === 'element') {
+            //Initialize 3d vector
+        if (vector2d.length===md.mesh.numberofelements2d) {
+                projected_vector = ones(md.mesh.numberofelements,  vector2d[0].length).map(function(arr) { return arr.fill(paddingvalue); });
+        } else if (vector2d.length===md.mesh.numberofelements2d+1) {
+            projected_vector = ones(md.mesh.numberofelements+1,  vector2d[0].length).map(function(arr) { return arr.fill(paddingvalue); });
+
+            projected_vector[projected_vector.length-1].map(function(element, index) { return vector2d[vector2d.length-1][index]; });
+
+            vector2d.pop();
+        } else {
+            console.error('vector length not supported')
+        }
+
+            //Fill in
+        if (layer===0) {
+            for (var i = 1; i < md.mesh.numberoflayers-1; ++i) {
+                var vec_idx=0;
+                for (var j = (i-1)*md.mesh.numberofelements2d+1, vec_idx = 0; j <= i * md.mesh.numberofelements2d && vec_idx < vector2d.length; ++j, ++vec_idx) {
+                    projected_vector[j].map(function(element, index) { return vector2d[vec_idx][index]; });
+                }
+            }
+        } else {
+            var vec_idx=0;
+            for (var i = (layer-1)*md.mesh.numberofelements2d+1, vec_idx = 0; i <= layer * md.mesh.numberofelements2d && vec_idx < vector2d.length; ++i, ++vec_idx) {
+                projected_vector[i].map(function(element, index) { return vector2d[vec_idx][index]; });
+            }
+        }
+    } else {
+        console.error('project3d error message: unknown projection type');
+    }
+
+    return projected_vector;
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/project3d.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/project3d.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/project3d.m	(revision 21239)
@@ -0,0 +1,85 @@
+function projected_vector=project3d(md,varargin)
+%PROJECT3D - vertically project a vector from 2d mesh
+%
+%   vertically project a vector from 2d mesh (split in noncoll and coll areas) into a 3d mesh.
+%   This vector can be a node vector of size (md.mesh.numberofvertices2d,N/A) or an 
+%   element vector of size (md.mesh.numberofelements2d,N/A). 
+%   arguments: 
+%      'vector': 2d vector
+%      'type': 'element' or 'node'. 
+%   options: 
+%      'layer' a layer number where vector should keep its values. If not specified, all layers adopt the 
+%             value of the 2d vector.
+%      'padding': default to 0 (value adopted by other 3d layers not being projected0
+%
+%   Egs:
+%      extruded_vector=project3d(md,'vector',vector2d,'type','node','layer',1,'padding',NaN);
+%      extruded_vector=project3d(md,'vector',vector2d,'type','element','padding',0);
+%      extruded_vector=project3d(md,'vector',vector2d,'type','node');
+
+%some regular checks
+if nargin==0,
+	help project3d
+	error('bad usage');
+end
+if ~strcmp(elementtype(md.mesh),'Penta')
+	error('input model is not 3d');
+end
+
+%retrieve parameters from options.
+options      = pairoptions(varargin{:});
+vector2d     = getfieldvalue(options,'vector');     %mandatory
+type         = getfieldvalue(options,'type');       %mandatory
+layer        = getfieldvalue(options,'layer',0);    %optional (do all layers otherwise)
+paddingvalue = getfieldvalue(options,'padding',0);  %0 by default
+
+if length(vector2d)==1,
+	projected_vector=vector2d;
+
+elseif strcmpi(type,'node'),
+
+	%Initialize 3d vector
+	if size(vector2d,1)==md.mesh.numberofvertices2d
+		projected_vector=paddingvalue*ones(md.mesh.numberofvertices,  size(vector2d,2));
+	elseif size(vector2d,1)==md.mesh.numberofvertices2d+1
+		projected_vector=paddingvalue*ones(md.mesh.numberofvertices+1,size(vector2d,2));
+		projected_vector(end,:)=vector2d(end,:);
+		vector2d=vector2d(1:end-1,:);
+	else
+		error('vector length not supported')
+	end
+
+	%Fill in
+	if layer==0,
+		for i=1:md.mesh.numberoflayers,
+			projected_vector(((i-1)*md.mesh.numberofvertices2d+1):(i*md.mesh.numberofvertices2d),:)=vector2d;
+		end
+	else
+		projected_vector(((layer-1)*md.mesh.numberofvertices2d+1):(layer*md.mesh.numberofvertices2d),:)=vector2d;
+	end
+
+elseif strcmpi(type,'element'),
+
+	%Initialize 3d vector
+	if size(vector2d,1)==md.mesh.numberofelements2d
+		projected_vector=paddingvalue*ones(md.mesh.numberofelements,  size(vector2d,2));
+	elseif size(vector2d,1)==md.mesh.numberofelements2d+1
+		projected_vector=paddingvalue*ones(md.mesh.numberofelements+1,size(vector2d,2));
+		projected_vector(end,:)=vector2d(end,:);
+		vector2d=vector2d(1:end-1,:);
+	else
+		error('vector length not supported')
+	end
+
+	%Fill in
+	if layer==0,
+		for i=1:(md.mesh.numberoflayers-1),
+			projected_vector( ((i-1)*md.mesh.numberofelements2d+1):(i*md.mesh.numberofelements2d),:)=vector2d;
+		end
+	else
+		projected_vector( ((layer-1)*md.mesh.numberofelements2d+1):(layer*md.mesh.numberofelements2d),:)=vector2d;
+	end
+
+else
+	error('project3d error message: unknown projection type');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/project3d.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/project3d.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/extrusion/project3d.py	(revision 21239)
@@ -0,0 +1,90 @@
+import numpy
+from pairoptions import pairoptions
+
+def project3d(md,*args):
+	"""
+	PROJECT3D - vertically project a vector from 2d mesh
+
+	   vertically project a vector from 2d mesh (split in noncoll and coll areas) into a 3d mesh.
+	   This vector can be a node vector of size (md.mesh.numberofvertices2d,N/A) or an 
+	   element vector of size (md.mesh.numberofelements2d,N/A). 
+	   arguments: 
+	      'vector': 2d vector
+	      'type': 'element' or 'node'. 
+	   options: 
+	      'layer' a layer number where vector should keep its values. If not specified, all layers adopt the 
+	             value of the 2d vector.
+	      'padding': default to 0 (value adopted by other 3d layers not being projected
+
+	   Examples:
+	      extruded_vector=project3d(md,'vector',vector2d,'type','node','layer',1,'padding',NaN)
+	      extruded_vector=project3d(md,'vector',vector2d,'type','element','padding',0)
+	      extruded_vector=project3d(md,'vector',vector2d,'type','node')
+	"""
+
+	#some regular checks
+	if not md:
+		raise TypeError("bad usage")
+	if md.mesh.domaintype().lower() != '3d':
+		raise TypeError("input model is not 3d")
+
+	#retrieve parameters from options.
+	options      = pairoptions(*args)
+	vector2d     = options.getfieldvalue('vector')       #mandatory
+	vectype      = options.getfieldvalue('type')         #mandatory
+	layer        = options.getfieldvalue('layer',0)      #optional (do all layers otherwise)
+	paddingvalue = options.getfieldvalue('padding',0)    #0 by default
+
+	vector1d=False
+	if isinstance(vector2d,numpy.ndarray) and numpy.ndim(vector2d)==1:
+		vector1d=True
+		vector2d=vector2d.reshape(-1,1)
+
+	if isinstance(vector2d,(bool,int,long,float)) or numpy.size(vector2d)==1:
+		projected_vector=vector2d
+
+	elif vectype.lower()=='node':
+
+		#Initialize 3d vector
+		if vector2d.shape[0]==md.mesh.numberofvertices2d:
+			projected_vector=(paddingvalue*numpy.ones((md.mesh.numberofvertices,  numpy.size(vector2d,axis=1)))).astype(vector2d.dtype)
+		elif vector2d.shape[0]==md.mesh.numberofvertices2d+1:
+			projected_vector=(paddingvalue*numpy.ones((md.mesh.numberofvertices+1,numpy.size(vector2d,axis=1)))).astype(vector2d.dtype)
+			projected_vector[-1,:]=vector2d[-1,:]
+			vector2d=vector2d[:-1,:]
+		else:
+			raise TypeError("vector length not supported")
+
+		#Fill in
+		if layer==0:
+			for i in xrange(md.mesh.numberoflayers):
+				projected_vector[(i*md.mesh.numberofvertices2d):((i+1)*md.mesh.numberofvertices2d),:]=vector2d
+		else:
+			projected_vector[((layer-1)*md.mesh.numberofvertices2d):(layer*md.mesh.numberofvertices2d),:]=vector2d
+
+	elif vectype.lower()=='element':
+
+		#Initialize 3d vector
+		if vector2d.shape[0]==md.mesh.numberofelements2d:
+			projected_vector=(paddingvalue*numpy.ones((md.mesh.numberofelements,  numpy.size(vector2d,axis=1)))).astype(vector2d.dtype)
+		elif vector2d.shape[0]==md.mesh.numberofelements2d+1:
+			projected_vector=(paddingvalue*numpy.ones((md.mesh.numberofelements+1,numpy.size(vector2d,axis=1)))).astype(vector2d.dtype)
+			projected_vector[-1,:]=vector2d[-1,:]
+			vector2d=vector2d[:-1,:]
+		else:
+			raise TypeError("vector length not supported")
+
+		#Fill in
+		if layer==0:
+			for i in xrange(md.mesh.numberoflayers-1):
+				projected_vector[(i*md.mesh.numberofelements2d):((i+1)*md.mesh.numberofelements2d),:]=vector2d
+		else:
+			projected_vector[((layer-1)*md.mesh.numberofelements2d):(layer*md.mesh.numberofelements2d),:]=vector2d
+
+	else:
+		raise TypeError("project3d error message: unknown projection type")
+
+	if vector1d:
+		projected_vector=projected_vector.reshape(-1,)
+
+	return projected_vector
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/FlagElements.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/FlagElements.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/FlagElements.js	(revision 21239)
@@ -0,0 +1,49 @@
+function FlagElements(md,region){
+//FLAGELEMENTS - flag the elements in an region
+//
+//   The region can be given as a string, or as a javascript array
+//
+//   Usage: 
+//      flag=FlagElements(md,region);
+//
+//   Example:
+//      flag=FlagElements(md,'all');
+//      flag=FlagElements(md,'');
+//      flag=FlagElements(md,domain);
+
+	//variables
+	var flag;
+	
+	if (typeof region == 'string'){
+		if (region === ''){
+			flag=NewArrayFill(md.mesh.numberofelements,0);
+		}
+		else if (region === 'all'){
+			flag=NewArrayFill(md.mesh.numberofelements,1);
+		}
+		else{
+			flag=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,region,'element',1);
+		}
+	}
+	else if(IsArray(region)){
+		if (region.length==md.mesh.numberofelements){
+			flag=region;
+		}
+		else if (region.length==md.mesh.numberofvertices){
+			var flag=NewArrayFill(md.mesh.numberofelements,0);
+			for (var i=0;i<md.mesh.numberofelements;i++)
+				var sum=0;
+				for(var j=0;j<md.mesh.elements[0].length;j++){
+					sum += region[md.mesh.element[i][j]-1];
+				}
+				if (sum==md.mesh.elements[0].length)flag[i]=1;
+		}
+		else{
+			throw Error('Flaglist for region must be of same size as number of elements in model');
+		}
+	}
+	else{
+		throw Error('Invalid region option');
+	}
+	return flag;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/FlagElements.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/FlagElements.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/FlagElements.m	(revision 21239)
@@ -0,0 +1,59 @@
+function flag=FlagElements(md,region),
+%FLAGELEMENTS - flag the elements in an region
+%
+%   The region can be given with an exp file, a list of elements or vertices
+%
+%   Usage: 
+%      flag=FlagElements(md,region);
+%
+%   Example:
+%      flag=FlagElements(md,'all');
+%      flag=FlagElements(md,'');
+%      flag=FlagElements(md,'Domain.exp');
+%      flag=FlagElements(md,'~Domain.exp');
+
+	if ischar(region),
+		if isempty(region),
+			flag=zeros(md.mesh.numberofelements,1);
+			invert=0;
+		elseif strcmpi(region,'all')
+			flag=ones(md.mesh.numberofelements,1);
+			invert=0;
+		else
+			%make sure that we actually don't want the elements outside the domain outline!
+			if strcmpi(region(1),'~'),
+				region=region(2:length(region));
+				invert=1;
+			else
+				invert=0;
+			end
+
+			%does the region domain outline exist or do we have to look for xlim,ylim in basinzoom?
+			if ~exist(region,'file'),
+				if (length(region)>3 & ~strcmp(region(end-3),'.exp')),
+					error(['Error: File ' region ' not found!']);
+				end
+				[xlim,ylim]=basinzoom('basin',region);
+				flag_nodes=double(md.mesh.x<xlim(2) & md.mesh.x>xlim(1) &  md.mesh.y<ylim(2) & md.mesh.y>ylim(1));
+				flag=prod(flag_nodes(md.mesh.elements),2);
+			else
+				%ok, flag elements
+				flag=ContourToMesh(md.mesh.elements(:,1:3),md.mesh.x,md.mesh.y,region,'element',1);
+			end
+		end
+		if invert,
+			flag=~flag;
+		end
+	elseif isfloat(region) | islogical(region),
+		if size(region,1)==md.mesh.numberofelements,
+			flag=region;
+		elseif size(region,1)==md.mesh.numberofvertices,
+			flag=logical(sum(region(md.mesh.elements)>0,2)==size(md.mesh.elements,2));
+		else
+			help FlagElements
+			error('Flaglist for region must be of same size as number of elements in model');
+		end
+	else
+		error('Invalid region option');
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/FlagElements.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/FlagElements.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/FlagElements.py	(revision 21239)
@@ -0,0 +1,67 @@
+import numpy
+import os
+#from basinzoom import basinzoon
+from ContourToMesh import ContourToMesh
+import MatlabFuncs as m
+import PythonFuncs as p
+
+def FlagElements(md,region):
+	"""
+	FLAGELEMENTS - flag the elements in an region
+
+	   The region can be given with an exp file, a list of elements or vertices
+
+	   Usage: 
+	      flag=FlagElements(md,region);
+
+	   Example:
+	      flag=FlagElements(md,'all');
+	      flag=FlagElements(md,'');
+	      flag=FlagElements(md,'Domain.exp');
+	      flag=FlagElements(md,'~Domain.exp');
+	"""
+
+	if   isinstance(region,(str,unicode)):
+		if   not region:
+			flag=numpy.zeros(md.mesh.numberofelements,bool)
+			invert=0
+		elif m.strcmpi(region,'all'):
+			flag=numpy.ones(md.mesh.numberofelements,bool)
+			invert=0
+		else:
+			#make sure that we actually don't want the elements outside the domain outline!
+			if m.strcmpi(region[0],'~'):
+				region=region[1:]
+				invert=1
+			else:
+				invert=0
+
+			#does the region domain outline exist or do we have to look for xlim,ylim in basinzoom?
+			if not os.path.exists(region):
+				if len(region)>3 and not m.strcmp(region[-4:],'.exp'):
+					raise IOError("Error: File 'region' not found!" % region)
+				raise RuntimeError("FlagElements.py calling basinzoom.py is not complete.")
+				xlim,ylim=basinzoom('basin',region)
+				flag_nodes=p.logical_and_n(md.mesh.x<xlim[1],md.mesh.x>xlim[0],md.mesh.y<ylim[1],md.mesh.y>ylim[0])
+				flag=numpy.prod(flag_nodes[md.mesh.elements],axis=1).astype(bool)
+			else:
+				#ok, flag elements
+				flag=ContourToMesh(md.mesh.elements[:,0:3].copy(),md.mesh.x,md.mesh.y,region,'element',1)
+				flag=flag.astype(bool)
+
+		if invert:
+			flag=numpy.logical_not(flag)
+
+	elif isinstance(region,numpy.ndarray) or isinstance(region,bool):
+		if numpy.size(region,0)==md.mesh.numberofelements:
+			flag=region
+		elif numpy.size(region,0)==md.mesh.numberofvertices:
+			flag=(numpy.sum(region[md.mesh.elements-1]>0,axis=1)==numpy.size(md.mesh.elements,1))
+		else:
+			raise TypeError("Flaglist for region must be of same size as number of elements in model.")
+
+	else:
+		raise TypeError("Invalid region option")
+
+	return flag
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/GetAreas.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/GetAreas.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/GetAreas.m	(revision 21239)
@@ -0,0 +1,51 @@
+function areas=GetAreas(index,x,y,varargin)
+%GETAREAS - compute areas or volumes of elements
+%
+%   compute areas of triangular elements or volumes 
+%   of pentahedrons
+%
+%   Usage:
+%      areas  =GetAreas(index,x,y);
+%      volumes=GetAreas(index,x,y,z);
+%
+%   Examples:
+%      areas  =GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y);
+%      volumes=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y,md.z);
+
+%get number of elements and number of nodes
+nels=size(index,1);
+nods=length(x);
+if nargin==4, z=varargin{1}; end
+
+%some checks
+if nargout~=1 | (nargin~=3 & nargin~=4),
+	help GetAreas
+	error('GetAreas error message: bad usage')
+end
+if ((length(y)~=nods) | (nargin==4 & length(z)~=nods)),
+	error('GetAreas error message: x,y and z do not have the same length')
+end
+if max(index(:))>nods,
+	error(['GetAreas error message: index should not have values above ' num2str(nods) ])
+end
+if (nargin==3 & size(index,2)~=3),
+	error('GetAreas error message: index should have 3 columns for 2d meshes.')
+end
+if (nargin==4 & size(index,2)~=6),
+	error('GetAreas error message: index should have 6 columns for 3d meshes.')
+end
+
+%initialization
+areas=zeros(nels,1);
+x1=x(index(:,1)); x2=x(index(:,2)); x3=x(index(:,3));
+y1=y(index(:,1)); y2=y(index(:,2)); y3=y(index(:,3));
+
+%compute the volume of each element
+if nargin==3,
+	%compute the surface of the triangle
+	areas=(0.5*((x2-x1).*(y3-y1)-(y2-y1).*(x3-x1)));
+else
+	%V=area(triangle)*1/3(z1+z2+z3)
+	thickness=mean(z(index(:,4:6)),2)-mean(z(index(:,1:3)),2);
+	areas=(0.5*((x2-x1).*(y3-y1)-(y2-y1).*(x3-x1))).*thickness;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/GetAreas.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/GetAreas.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/GetAreas.py	(revision 21239)
@@ -0,0 +1,52 @@
+import numpy
+
+def GetAreas(index,x,y,z=numpy.array([])):
+	"""
+	GETAREAS - compute areas or volumes of elements
+
+	   compute areas of triangular elements or volumes 
+	   of pentahedrons
+
+	   Usage:
+	      areas  =GetAreas(index,x,y);
+	      volumes=GetAreas(index,x,y,z);
+
+	   Examples:
+	      areas  =GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y);
+	      volumes=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y,md.z);
+	"""
+
+	#get number of elements and number of nodes
+	nels=numpy.size(index,axis=0)
+	nods=numpy.size(x)
+
+	#some checks
+	if numpy.size(y)!=nods or (z and numpy.size(z)!=nods):
+		raise TypeError("GetAreas error message: x,y and z do not have the same length.")
+	if numpy.max(index)>nods:
+		raise TypeError("GetAreas error message: index should not have values above %d." % nods)
+	if (not z and numpy.size(index,axis=1)!=3):
+		raise TypeError("GetAreas error message: index should have 3 columns for 2d meshes.")
+	if (z and numpy.size(index,axis=1)!=6):
+		raise TypeError("GetAreas error message: index should have 6 columns for 3d meshes.")
+
+	#initialization
+	areas=numpy.zeros(nels)
+	x1=x[index[:,0]-1]
+	x2=x[index[:,1]-1]
+	x3=x[index[:,2]-1]
+	y1=y[index[:,0]-1]
+	y2=y[index[:,1]-1]
+	y3=y[index[:,2]-1]
+
+	#compute the volume of each element
+	if not z:
+		#compute the surface of the triangle
+		areas=(0.5*((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)))
+	else:
+		#V=area(triangle)*1/3(z1+z2+z3)
+		thickness=numpy.mean(z[index[:,3:6]-1])-numpy.mean(z[index[:,0:3]-1])
+		areas=(0.5*((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)))*thickness
+
+	return areas
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/GetAreas3DTria.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/GetAreas3DTria.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/GetAreas3DTria.m	(revision 21239)
@@ -0,0 +1,48 @@
+function areas=GetAreas3DTria(index,x,y,z,varargin)
+%GETAREAS3DTRIA - compute areas of triangles with 3D coordinates 
+%
+%   compute areas of trianguls with 3D coordinates 
+%
+%   Usage:
+%      areas  =GetAreas3DTria(index,x,y,z);
+%
+%   Examples:
+%      areas  =GetAreas3DTria(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z);
+
+%get number of elements and number of nodes
+nels=size(index,1); 
+nods=length(x);  
+
+%some checks
+if nargout~=1 | (nargin~=3 & nargin~=4),
+	help GetAreas3DTria
+	error('GetAreas error message: bad usage')
+end
+if ((length(y)~=nods) | (nargin==4 & length(z)~=nods)),
+	error('GetAreas3DTria error message: x,y and z do not have the same length')
+end
+if max(index(:))>nods,
+	error(['GetAreas3DTria error message: index should not have values above ' num2str(nods) ])
+end
+if (nargin==4 & size(index,2)~=3),
+	error('GetAreas3DTria error message: index should have 3 columns for 2d meshes.')
+end
+
+%initialization
+areas=zeros(nels,1);
+x1=x(index(:,1)); x2=x(index(:,2)); x3=x(index(:,3));
+y1=y(index(:,1)); y2=y(index(:,2)); y3=y(index(:,3));
+z1=z(index(:,1)); z2=z(index(:,2)); z3=z(index(:,3));
+
+%compute the volume of each element
+if nargin==4,
+   % area of triangles with 3D coordinats
+   for j=1:nels
+		m1=[x1(j) x2(j) x3(j); y1(j) y2(j) y3(j); 1 1 1];
+	   m2=[y1(j) y2(j) y3(j); z1(j) z2(j) z3(j); 1 1 1];
+	   m3=[z1(j) z2(j) z3(j); x1(j) x2(j) x3(j); 1 1 1];
+      areas(j)=sqrt(det(m1)^2 + det(m2)^2 + det(m3)^2)/2;
+   end
+end 
+
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/GetAreasSphericalTria.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/GetAreasSphericalTria.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/GetAreasSphericalTria.m	(revision 21239)
@@ -0,0 +1,48 @@
+function areas=GetAreasSphericalTria(index,x,y,rad_e,varargin)
+%GETAREASSPHERICALTRIA - compute areas of spherical triangles 
+%
+%   compute areas of spherical trianguls 
+%
+%   Usage:
+%      areas  =GetAreasSphericalTria(index,x,y,r);
+%
+%   Examples:
+%      areas  =GetAreasSphericalTria(md.mesh.elements,md.mesh.lat,md.mesh.long,earth_radius);
+%		 
+
+%get number of elements and number of nodes
+nels=size(index,1); 
+nods=length(x);  
+
+%some checks
+if nargout~=1 | (nargin~=3 & nargin~=4),
+	help GetAreasSphericalTria
+	error('GetAreasSphericalTria error message: bad usage')
+end
+if (length(y)~=nods),
+	error('GetAreasSphericalTria error message: x and y do not have the same length')
+end
+if max(index(:))>nods,
+	error(['GetAreasSphericalTria error message: index should not have values above ' num2str(nods) ])
+end
+
+%initialization
+areas=zeros(nels,1);
+x1=x(index(:,1)); x2=x(index(:,2)); x3=x(index(:,3));
+y1=y(index(:,1)); y2=y(index(:,2)); y3=y(index(:,3));
+
+%compute the volume of each element
+if nargin==4,
+   % arc lengths 
+	arc_12=distance(x1,y1,x2,y2).*pi./180;
+	arc_23=distance(x2,y2,x3,y3).*pi./180;
+	arc_31=distance(x3,y3,x1,y1).*pi./180;
+	% semi perimeter 
+	semi_peri=(arc_12+arc_23+arc_31)./2; 
+	% spherical excess 
+	excess=4*atan(sqrt(tan(semi_peri./2).*tan((semi_peri-arc_12)./2)...
+		.*tan((semi_peri-arc_23)./2).*tan((semi_peri-arc_31)./2))); 
+	% spherical triangle areas 
+	areas=excess.*rad_e.^2; 	
+end 
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/NowickiProfile.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/NowickiProfile.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/NowickiProfile.m	(revision 21239)
@@ -0,0 +1,39 @@
+function [b h sea] = NowickiProfile(x),
+%NOWICKIPROFILE - Create profile at the transition zone based on Sophie Nowicki's thesis
+%
+%   Usage:
+%      [b h] = NowickiProfile(x)
+%
+%      - h = ice thickness
+%      - b = ice base
+%      - x = along flow coordinate
+
+%Constant for theoretical profile
+delta = 0.1;          % ratio of water density and ice density -1
+hg    = 1;            % ice thickness at grounding line
+sea   = hg/(1+delta); % sea level
+lamda = 0.1;          % ration of deviatoric stress and water pressure
+beta  = 5;            % friction coefficient
+ms    = 0.005;        % surface accumulation rat
+mu    = 5;            % viscosity
+q     = 0.801;        % ice mass flux
+
+%mesh parameters
+b=zeros(numel(x),1);
+h=zeros(numel(x),1);
+
+%upstream of the GL
+for i = 1:ceil(numel(x)/2)
+	ss=roots([1,4*lamda*beta,0,0,6*lamda*ms*x(i)^2+12*lamda*q*x(i)-hg^4-4*lamda*beta*hg^3]);
+	for j=1:4
+		if (real(ss(j)) > 0) && (imag(ss(j)) == 0), s(i)=ss(j); end
+	end
+	h(i) = s(i);
+	b(i) = 0.;
+end
+
+%downstream of the GL
+for i = ceil(numel(x)/2):numel(x)
+	h(i) = (x(i)/(4*(delta+1)*q)+hg^(-2))^(-0.5); % ice thickness for ice shelf from (3.1)
+	b(i) = sea-h(i)*(1/(1+delta));
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/SegIntersect.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/SegIntersect.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/SegIntersect.m	(revision 21239)
@@ -0,0 +1,79 @@
+function bval=SegIntersect(seg1,seg2)
+%SEGINTERSECT - test of segments intersection
+%
+%   return 1 if the two segments intersect
+%   seg1=[x1 y1; x2 y2]
+%   seg2=[x1 y1; x2 y2]
+%
+%   Usage:
+%      bval=SegIntersect(seg1,seg2)
+
+bval=1;
+
+xA=seg1(1,1); yA=seg1(1,2);
+xB=seg1(2,1); yB=seg1(2,2);
+xC=seg2(1,1); yC=seg2(1,2);
+xD=seg2(2,1); yD=seg2(2,2);
+
+O2A=[xA;yA]-[xD/2.+xC/2.;yD/2.+yC/2.];
+O2B=[xB;yB]-[xD/2.+xC/2.;yD/2.+yC/2.];
+O1C=[xC;yC]-[xA/2.+xB/2.;yB/2.+yA/2.];
+O1D=[xD;yD]-[xA/2.+xB/2.;yB/2.+yA/2.];
+
+n1=[yA-yB;xB-xA]; %normal vector to segA
+n2=[yC-yD;xD-xC]; %normal vector to segB
+
+test1=n2'*O2A;
+test2=n2'*O2B;
+
+if test1*test2>0
+	bval=0;
+	return;
+end
+
+test3=n1'*O1C;
+test4=n1'*O1D;
+
+if test3*test4>0
+	bval=0;
+	return;
+end
+
+%if colinear
+if test1*test2==0 & test3*test4==0 & det([n1 n2])==0
+
+	%projection on the axis O1O2
+	O2O1=[xA/2.+xB/2.;yB/2.+yA/2.]-[xD/2.+xC/2.;yD/2.+yC/2.];
+	O1A=O2O1'*(O2A-O2O1);
+	O1B=O2O1'*(O2B-O2O1);
+	O1C=O2O1'*O1C;
+	O1D=O2O1'*O1D;
+
+	%test if one point is included in the other segment (->bval=1)
+	if (O1C-O1A)*(O1D-O1A)<0
+		bval=1;
+		return;
+	end
+	if (O1C-O1B)*(O1D-O1B)<0
+		bval=1;
+		return;
+	end
+	if (O1A-O1C)*(O1B-O1C)<0
+		bval=1;
+		return;
+	end
+	if (O1A-O1D)*(O1B-O1D)<0
+		bval=1;
+		return;
+	end
+
+	 %test if the 2 segments have the same middle (->bval=1)
+	if O2O1==0
+		bval=1;
+		return;
+	end
+
+	%else
+	bval=0;
+	return;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/SegIntersect.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/SegIntersect.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/SegIntersect.py	(revision 21239)
@@ -0,0 +1,82 @@
+import numpy
+
+def SegIntersect(seg1,seg2):
+	"""
+	SEGINTERSECT - test of segments intersection
+
+	   return 1 if the two segments intersect
+	   seg1=[x1 y1; x2 y2]
+	   seg2=[x1 y1; x2 y2]
+
+	   Usage:
+	      bval=SegIntersect(seg1,seg2)
+	"""
+
+	bval=1
+
+	xA=seg1[0,0]
+	yA=seg1[0,1]
+	xB=seg1[1,0]
+	yB=seg1[1,1]
+	xC=seg2[0,0]
+	yC=seg2[0,1]
+	xD=seg2[1,0]
+	yD=seg2[1,1]
+
+	O2A=numpy.array([xA,yA])-numpy.array([xD/2.+xC/2.,yD/2.+yC/2.])
+	O2B=numpy.array([xB,yB])-numpy.array([xD/2.+xC/2.,yD/2.+yC/2.])
+	O1C=numpy.array([xC,yC])-numpy.array([xA/2.+xB/2.,yB/2.+yA/2.])
+	O1D=numpy.array([xD,yD])-numpy.array([xA/2.+xB/2.,yB/2.+yA/2.])
+
+	n1=numpy.array([yA-yB,xB-xA])    #normal vector to segA
+	n2=numpy.array([yC-yD,xD-xC])    #normal vector to segB
+
+	test1=numpy.dot(n2,O2A)
+	test2=numpy.dot(n2,O2B)
+
+	if test1*test2>0:
+		bval=0
+		return bval
+
+	test3=numpy.dot(n1,O1C)
+	test4=numpy.dot(n1,O1D)
+
+	if test3*test4>0:
+		bval=0
+		return bval
+
+	#if colinear
+	if test1*test2==0 and test3*test4==0 and numpy.linalg.det(numpy.hstack((n1.reshape((-1,1)),n2.reshape(-1,1))))==0:
+
+		#projection on the axis O1O2
+		O2O1=numpy.array([xA/2.+xB/2.,yB/2.+yA/2.])-numpy.array([xD/2.+xC/2.,yD/2.+yC/2.])
+		O1A=numpy.dot(O2O1,(O2A-O2O1))
+		O1B=numpy.dot(O2O1,(O2B-O2O1))
+		O1C=numpy.dot(O2O1,O1C)
+		O1D=numpy.dot(O2O1,O1D)
+
+		#test if one point is included in the other segment (->bval=1)
+		if (O1C-O1A)*(O1D-O1A)<0:
+			bval=1
+			return bval
+		if (O1C-O1B)*(O1D-O1B)<0:
+			bval=1
+			return bval
+		if (O1A-O1C)*(O1B-O1C)<0:
+			bval=1
+			return bval
+		if (O1A-O1D)*(O1B-O1D)<0:
+			bval=1
+			return bval
+
+		#test if the 2 segments have the same middle (->bval=1)
+		if O2O1==0:
+			bval=1
+			return bval
+
+		#else
+		bval=0
+		return bval
+
+	return bval
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/ThicknessCorrection.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/ThicknessCorrection.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/ThicknessCorrection.m	(revision 21239)
@@ -0,0 +1,77 @@
+function md=ThicknessCorrection(md,varargin)
+%THICKNESSCORRECTION - correct the thickness of the ice shelf near the grounding line
+%
+%   This routine corrects the thickness and the bed on the transition zone
+%   by forcing the hydrostatic equilibrium.
+%   the thickness is modified as follows:
+%      thickness = (1-coeff) * thickness_observation + coeff * thickness_hydrostatic
+%   where:
+%      coeff=(d/distance)^2;
+%      distance=10km by default but can be specified
+%
+%   Usage:
+%      md=ThicknessCorrection(md,varargin);
+%
+%   Example:
+%      md=ThicknessCorrection(md);
+%      md=ThicknessCorrection(md,15000);
+
+%initialize thickness with the observations, and get hydrostatic thickness from the dem
+thickness=md.geometry.thickness;
+thickness_hydro=md.geometry.surface/(1-md.materials.rho_ice/md.materials.rho_water);
+hydrostatic_ratio=zeros(size(md.geometry.thickness));
+
+%get nodes on ice sheet and on ice shelf
+pos_shelf=find(md.mask.groundedice_levelset<0.);
+pos_GL=intersect(unique(md.mesh.elements(find(md.mask.elementongroundedice),:)),unique(md.mesh.elements(find(md.mask.elementonfloatingice),:)));
+debug=(length(pos_shelf)>50000);
+
+%check that there is a GL
+if isempty(pos_GL)
+	error('ThicknessCorrection error message: no grounding line has been detected. Check the model mask');
+end
+
+%get distance
+if nargin==2,
+	distance=varargin{1};
+else
+	distance=10000;
+end
+
+%modify thickness
+if (debug), fprintf('%s','      correction progress:   0.00 %'); end
+for i=1:length(pos_shelf)
+
+	if (debug & mod(i,100)==0),
+		fprintf('\b\b\b\b\b\b\b%5.2f%s',i/length(pos_shelf)*100,' %');
+	end
+
+	%search the node on ice sheet the closest to i
+	[d posd]=min(sqrt((md.mesh.x(pos_shelf(i))-md.mesh.x(pos_GL)).^2+(md.mesh.y(pos_shelf(i))-md.mesh.y(pos_GL)).^2));
+
+	if d>distance,
+
+		%if d > 15km, hydrostatic equilibrium
+		hydrostatic_ratio(pos_shelf(i))=1;
+		thickness(pos_shelf(i))=thickness_hydro(pos_shelf(i));
+
+	else
+
+		%else: quadratic combination of hydrostatic equilibrium and observations
+		hydrostatic_ratio(pos_shelf(i))=(d/distance)^2;
+		thickness(pos_shelf(i))=(1-hydrostatic_ratio(pos_shelf(i)))*thickness(pos_shelf(i))+hydrostatic_ratio(pos_shelf(i))*thickness_hydro(pos_shelf(i));
+
+	end
+end
+if (debug), fprintf('\b\b\b\b\b\b\b%5.2f%s\n',100,' %'); end
+
+%check the computed thickness
+minth=1/(1-md.materials.rho_ice/md.materials.rho_water);
+pos=find(isnan(thickness) | (thickness<=0));
+thickness(pos)=minth;
+hydrostatic_ratio(pos)=-1;
+
+%change bed to take into account the changes in thickness
+md.geometry.thickness=thickness;
+md.geometry.hydrostatic_ratio=hydrostatic_ratio;
+md.geometry.base=md.geometry.surface-md.geometry.thickness;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/find_point.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/find_point.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/find_point.m	(revision 21239)
@@ -0,0 +1,15 @@
+function f=find_point(tabx,taby,pointx,pointy)
+%FIND_POINT - find closest point
+%
+%   find which point of the list (tabx,taby) is
+%   the closest to (poinx,pointy)
+%
+%   Usage:
+%      f=find_point(tabx,taby,pointx,pointy)
+
+%Compute distance between point and cloud of points
+distance=sqrt((tabx-pointx).^2+(taby-pointy).^2);
+
+%find index of the minimum distance and return the first one only
+%f=find(distance==min(min(distance)),1);
+[~,f]=min(distance(:));
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/isconnected.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/isconnected.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/isconnected.m	(revision 21239)
@@ -0,0 +1,13 @@
+function flag=isconnected(elements,A,B)
+%ISCONNECTED: are two nodes connected by a triangulation?
+%
+%   Usage: flag=isconnected(elements,A,B)
+%
+%
+
+elements=ElementsFromEdge(elements,A,B);
+if isempty(elements),
+	flag=0;
+else
+	flag=1;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/locationtonode.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/locationtonode.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/locationtonode.m	(revision 21239)
@@ -0,0 +1,26 @@
+function nodes=locationtonode(md,location,varargin)
+%LOCATIONTONODE - find, given a string location (ex: 'LA', 'new york', the nearest node on a mesh3dsurface.
+%
+%   Usage:
+%      node=locationnode(md,'LA');
+%      nodes=locationnode(md,'LA',100); %option, specify a distance (km) around the location that will return nodes
+%
+%   See also: geoCode (in externalpackages), find_point
+
+	if nargin==3,
+		radius=varargin{1};
+	else
+		radius=0;
+	end
+
+	coords=geoCode(location,'osm');  
+	latny=coords(1); longny=coords(2);
+	node=find_point(md.mesh.lat,md.mesh.long,latny,longny);
+
+	if radius>0,
+		distance=sqrt( (md.mesh.x-md.mesh.x(node)).^2 + (md.mesh.y-md.mesh.y(node)).^2 + (md.mesh.z-md.mesh.z(node)).^2);
+		nodes=find(distance<radius*1000);
+	else
+		nodes=node;
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/slope.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/slope.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/slope.m	(revision 21239)
@@ -0,0 +1,36 @@
+function [sx,sy,s]=slope(md,surf)
+%SLOPE - compute the surface slope
+%
+%   Usage:
+%      [sx,sy,s]=slope(md)
+%      [sx,sy,s]=slope(md,md.results.TransientSolution(1).Surface)
+
+%load some variables (it is much faster if the variab;es are loaded from md once for all) 
+if dimension(md.mesh)==2,
+	numberofelements=md.mesh.numberofelements;
+	numberofnodes=md.mesh.numberofvertices;
+	index=md.mesh.elements;
+	x=md.mesh.x; y=md.mesh.y;
+else
+	numberofelements=md.mesh.numberofelements2d;
+	numberofnodes=md.mesh.numberofvertices2d;
+	index=md.mesh.elements2d;
+	x=md.mesh.x2d; y=md.mesh.y2d;
+end
+
+if nargin==1,
+	surf=md.geometry.surface;
+end
+%compute nodal functions coefficients N(x,y)=alpha x + beta y + gamma
+[alpha beta]=GetNodalFunctionsCoeff(index,x,y);
+
+summation=[1;1;1];
+sx=(surf(index).*alpha)*summation;
+sy=(surf(index).*beta)*summation;
+s=sqrt(sx.^2+sy.^2);
+
+if dimension(md.mesh)==3,
+	sx=project3d(md,'vector',sx,'type','element');
+	sy=project3d(md,'vector',sy,'type','element');
+	s=sqrt(sx.^2+sy.^2);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/slope.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/slope.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/geometry/slope.py	(revision 21239)
@@ -0,0 +1,46 @@
+import numpy as npy
+from GetNodalFunctionsCoeff import  GetNodalFunctionsCoeff
+
+def slope(md,*args):
+	"""
+	SLOPE - compute the surface slope
+
+	Usage:
+		sx,sy,s=slope(md)
+		sx,sy,s=slope(md,md.results.TransientSolution(1).Surface)
+	"""
+
+	#load some variables (it is much faster if the variables are loaded from md once for all) 
+	if md.mesh.dimension()==2:
+		numberofelements=md.mesh.numberofelements
+		numberofnodes=md.mesh.numberofvertices
+		index=md.mesh.elements
+		x=md.mesh.x ; y=md.mesh.y
+	else:
+		numberofelements=md.mesh.numberofelements2d
+		numberofnodes=md.mesh.numberofvertices2d
+		index=md.mesh.elements2d
+		x=md.mesh.x2d; y=md.mesh.y2d
+
+	if len(args)==0:
+		surf=md.geometry.surface
+	elif len(args)==1:
+		surf=args[0]
+	else:
+		raise RuntimeError("slope.py usage error")
+
+	#%compute nodal functions coefficients N(x,y)=alpha x + beta y + gamma
+	alpha,beta=GetNodalFunctionsCoeff(index,x,y)[0:2]
+
+	summation=npy.array([[1],[1],[1]])
+	sx=npy.dot(surf[index-1]*alpha,summation).reshape(-1,)
+	sy=npy.dot(surf[index-1]*beta,summation).reshape(-1,)
+
+	s=npy.sqrt(sx**2+sy**2)
+
+	if md.mesh.dimension()==3:
+		sx=project3d(md,'vector',sx,'type','element')
+		sy=project3d(md,'vector',sy,'type','element')
+		s=npy.sqrt(sx**2+sy**2)
+
+	return (sx,sy,s)
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/InterpFromFile.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/InterpFromFile.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/InterpFromFile.m	(revision 21239)
@@ -0,0 +1,203 @@
+function data_out=InterpFromFile(x,y,filename,default_value)
+%INTERPFROMFILE - load data and interpolate on the given nodes
+%
+%   load a matlab file (extension .mat) which holds 3 or 4 variables
+%   and interpolate the data on the mesh and plug it onto the model.
+%
+%   o 3 variables
+%     - a vector x (if the name of the variable do not begin with "x", an error can appear)
+%     - a vector y (if the name of the variable do not begin with "y", an error can appear)
+%     - a vector or matrix data (if the name of the variable do not begin with the field name, an error can appear)
+%   o 4 variables
+%     - a vector x (if the name of the variable do not begin with "x", an error can appear)
+%     - a vector y (if the name of the variable do not begin with "y", an error can appear)
+%     - a matrix with 3 columns (if the name of the variable do not begin with "index" or "elements", an error can appear)
+%     - a vector data (if the name of the variable do not begin with the field name, an error can appear)
+%
+%   Usage:
+%      data=InterpFromFile(x,y,filename,default_value);
+%
+%   Example:
+%      md.geometry.surface=InterpFromFile(md.mesh.x,md.mesh.y,'surfacefile.mat',0);
+%
+%   See also: PLUGVELOCITIES, INTERPFROMGRID, INTERPFROMMESH2D, INTERPFROMMESH3D
+
+%some checks
+if nargin~=4 | nargout~=1
+	help InterpFromFile
+	error('plugdata error message: bad usage');
+end
+if ~exist(filename)
+	error(['plugdata error message: file ' filename  ' does not exist']);
+end
+if length(x)~=length(y),
+	error('plugdata error message: x and y should have the same length');
+end
+
+%load file
+Names=FieldFindVarNames(filename);
+Data=load(filename);
+disp('WARNING: function deprecated, replace InterpFromFile by the following command:');
+if strcmpi(Names.interp,'node'),
+	disp(['   data=InterpFromGridToMesh(' Names.xname ',' Names.yname ',' Names.dataname ',x,y,default_value);']);
+	data_out=InterpFromGridToMesh(Data.(Names.xname),Data.(Names.yname),Data.(Names.dataname),x,y,default_value);
+else
+	disp(['   data=InterpFromMeshToMesh2d(' Names.indexname ',' Names.xname ',' Names.yname ',' Names.dataname ',x,y);']);
+	data_out=InterpFromMeshToMesh2d(Data.(Names.indexname),Data.(Names.xname),Data.(Names.yname),Data.(Names.dataname),x,y);
+end
+
+end
+function Names=FieldFindVarNames(filename)
+%FIELDFINDVARNAMES - find names of variables in a data set file
+%
+%   This routines looks at the variables contained in a file and finds out
+%   the names of the variables that are needed for an interpolation (x,y,data)
+%   or (index,x,y,data)
+%
+%   Usage:
+%      Names=FieldFindVarNames(filename)
+%
+%   Example:
+%      Names=FieldFindVarNames('thickness.mat')
+%
+%   See also: INTERPFROMFILE, GRIDDATA
+
+%some checks
+if nargin~=1 | nargout~=1
+	help FieldFindVarNames
+	error('FieldFindVarNames error message: bad usage');
+end
+if ~exist(filename)
+	error(['FieldFindVarNames error message: file ' filename  ' does not exist']);
+end
+
+%Get variables
+A=whos('-file',filename);
+
+%find x,y,vx and vy
+xenum=NaN; yenum=NaN; dataenum=NaN; indexenum=NaN;
+if length(A)==3,
+	isnode=1;
+	for i=1:3
+		if strcmpi(A(i).name(1),'x');
+			xenum=i;
+		elseif strcmpi(A(i).name(1),'y');
+			yenum=i;
+		elseif (strncmpi(A(i).name,filename,3) | strncmpi(A(i).name,'data',4)),
+			dataenum=i;
+		else
+			%nothing
+		end
+	end
+elseif length(A)==4,
+	isnode=0;
+	for i=1:4
+		if strcmpi(A(i).name(1),'x');
+			xenum=i;
+		elseif strcmpi(A(i).name(1),'y');
+			yenum=i;
+		elseif (strncmpi(A(i).name,'index',5) | strncmpi(A(i).name,'elements',7));
+			indexenum=i;
+		elseif (strncmpi(A(i).name,filename,3) | strncmpi(A(i).name,'data',4)),
+			dataenum=i;
+		else
+			%nothing
+		end
+	end
+else
+	error(['FieldFindVarNames error message: file ' filename  ' not supported yet (it should hold 3 variables x,y and data (for nodes) OR 4 variables  x,y,index and data (for mesh))']);
+end
+
+%2: if only one item is missing, find it by elimination
+if ~isnode,
+	pos=find(isnan([xenum yenum indexenum dataenum]));
+	if length(pos)==1,
+		list=[xenum yenum indexenum dataenum]; list(pos)=[];
+		if pos==1,
+			xenum=setdiff(1:4,list);
+		elseif pos==2,
+			yenum=setdiff(1:4,list);
+		elseif pos==3,
+			indexenum=setdiff(1:4,list);
+		elseif pos==4,
+			dataenum=setdiff(1:4,list);
+		end
+	end
+else
+	pos=find(isnan([xenum yenum dataenum]));
+	if length(pos)==1,
+		list=[xenum yenum indexenum dataenum]; list(pos)=[];
+		if pos==1,
+			xenum=setdiff(1:3,list);
+		elseif pos==2,
+			yenum=setdiff(1:3,list);
+		elseif pos==3,
+			dataenum=setdiff(1:3,list);
+		end
+	end
+end
+
+%assum that we have found at least xenum and yenum
+if ( isnan(xenum) | isnan(yenum))
+	error(['FieldFindVarNames error message: file ' filename  ' not supported yet (the coordinates vectors should be named x and y)']);
+end
+
+%find index
+if (~isnode & isnan(indexenum)),
+	for i=1:4
+		lengthi=min(A(i).size);
+		if (lengthi==3),
+			indexenum=i;
+		end
+	end
+	if isnan(indexenum),
+		error(['FieldFindVarNames error message: file ' filename  ' not supported yet (index not found)']);
+	end
+end
+
+%4: last chance
+if ~isnode,
+	pos=find(isnan([xenum yenum indexenum dataenum]));
+	if length(pos)==1,
+		list=[xenum yenum indexenum dataenum]; list(pos)=[];
+		if pos==1,
+			xenum=setdiff(1:4,list);
+		elseif pos==2,
+			yenum=setdiff(1:4,list);
+		elseif pos==3,
+			indexenum=setdiff(1:4,list);
+		elseif pos==4,
+			dataenum=setdiff(1:4,list);
+		end
+	end
+else
+	pos=find(isnan([xenum yenum dataenum]));
+	if length(pos)==1,
+		list=[xenum yenum indexenum dataenum]; list(pos)=[];
+		if pos==1,
+			xenum=setdiff(1:3,list);
+		elseif pos==2,
+			yenum=setdiff(1:3,list);
+		elseif pos==3,
+			dataenum=setdiff(1:3,list);
+		end
+	end
+end
+
+%last check
+if isnan(dataenum)
+	error(['FieldFindVarNames error message: file ' filename  ' not supported yet (data not found)']);
+end
+
+%create output
+Names=struct();
+Names.xname=A(xenum).name;
+Names.yname=A(yenum).name;
+Names.dataname=A(dataenum).name;
+if ~isnode,
+	Names.indexname=A(indexenum).name; 
+	Names.interp='mesh';
+else
+	Names.interp='node';
+end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/PointValues.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/PointValues.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/PointValues.m	(revision 21239)
@@ -0,0 +1,14 @@
+function [data_interp]=PointValues(md,data,xpoint,ypoint)
+%POINTVALUES - compute the value of a field on a single point
+%
+%   This routine gets the value of a given field of the model on points
+%
+%   Usage:
+%      [z,data]=PointValues(md,data,X,Y,Z)
+
+%Get bed and surface for each 2d point, offset to make sure that it is inside the glacier system
+%offset=10^-3;
+%bed=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.bed,1),xpoint,ypoint)+offset;
+%surface=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.surface,1),xpoint,ypoint)-offset;
+
+data_interp=InterpFromMeshToMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,data,xpoint,ypoint);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/ProfileValues.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/ProfileValues.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/ProfileValues.m	(revision 21239)
@@ -0,0 +1,20 @@
+function [Z,data_interp]=ProfileValues(md,data,xprof,yprof,resolution)
+%PROFILEVALUES - compute the value of a field on a vertical profile
+%
+%   This routine gets the value of a given field of the model on 
+%   a point given by its coordinates
+%
+%   Usage:
+%      [z,data]=ProfileValues(md,data,xcoord,ycoord,resolution)
+
+%Get bed and surface for each 2d point, offset to make sure that it is inside the glacier system
+offset=10^-3;
+bed=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.base,1),xprof,yprof)+offset;
+surface=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.surface,1),xprof,yprof)-offset;
+
+%Some useful parameters
+layers=ceil(mean(md.geometry.thickness)/resolution);
+Z=(bed:resolution:surface)';
+X=xprof*ones(size(Z));
+Y=yprof*ones(size(Z));
+data_interp=InterpFromMeshToMesh3d(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z,data,X,Y,Z,NaN);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/SectionValues.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/SectionValues.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/SectionValues.m	(revision 21239)
@@ -0,0 +1,126 @@
+function [index,X,Y,Z,S,data_interp]=SectionValues(md,data,infile,resolution)
+%SECTIONVALUES - compute the value of a field on a section
+%
+%   This routine gets the value of a given field of the model on points
+%   given by filname (Argus type file)
+%
+%   Usage:
+%      [elements,x,y,z,s,data]=SectionValues(md,data,filename,resolution)
+%      [elements,x,y,z,s,data]=SectionValues(md,data,profile_structure,resolution)
+
+%check what we have for profile as input
+if ischar(infile),
+	%read infile:
+	profile=expread(infile);
+	nods=profile.nods;
+	x=profile.x;
+	y=profile.y;
+else
+	%read infile:
+	nods=infile.nods;
+	x=infile.x;
+	y=infile.y;
+end
+
+%get the specified resolution
+if isnumeric(resolution(1))
+	res_h=resolution(1);
+else
+	error('SectionValues error message: wrong resolution type. Resolution must be an array [horizontal_resolution vertical_resolution]')
+end
+if dimension(md.mesh)==3
+	if (length(resolution)==2 & isnumeric(resolution(2)))
+		res_v=resolution(2);
+	else
+		error('SectionValues error message: wrong resolution type. Resolution must be an array [horizontal_resolution vertical_resolution]')
+	end
+end
+
+%initialization
+X=[]; %X-coordinate
+Y=[]; %Y-coordinate
+S=0;  %curvilinear coordinate
+
+for i=1:nods-1
+
+	x_start=x(i);
+	x_end=x(i+1);
+	y_start=y(i);
+	y_end=y(i+1);
+	s_start=S(end);
+
+	length_segment=sqrt((x_end-x_start)^2+(y_end-y_start)^2);
+	portion=ceil(length_segment/res_h);
+
+	x_segment=zeros(portion,1);
+	y_segment=zeros(portion,1);
+	s_segment=zeros(portion,1);
+
+	for j=1:portion
+		x_segment(j)=x_start+(j-1)*(x_end-x_start)/portion;
+		y_segment(j)=y_start+(j-1)*(y_end-y_start)/portion;
+		s_segment(j)=s_start+j*length_segment/portion;
+	end
+
+	%plug into X and Y
+	X=[X;x_segment];
+	Y=[Y;y_segment];
+	S=[S;s_segment];
+end
+X(end+1)=x(nods);
+Y(end+1)=y(nods);
+
+%Number of nodes:
+numberofnodes=size(X,1);
+
+%Compute Z
+Z=zeros(numberofnodes,1);
+
+%New mesh and Data interpolation
+if (dimension(md.mesh)==2)
+
+	%Interpolation of data on specified points
+	data_interp=InterpFromMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,data,X,Y);
+	%data_interp=InterpFromMeshToMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,data,X,Y);
+	%data_interp=griddata(md.mesh.x,md.mesh.y,data,X,Y);
+
+	%Compute index
+	index=[1:1:(numberofnodes-1);2:1:numberofnodes]';
+
+else
+
+	%vertically extrude mesh
+
+	%Get base and surface for each 2d point, offset to make sure that it is inside the glacier system
+	offset=10^-3;
+	base=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.base,1),X,Y)+offset;
+	surface=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.surface,1),X,Y)-offset;
+
+	%Some useful parameters
+	layers=ceil(mean(md.geometry.thickness)/res_v);
+	nodesperlayer=numberofnodes;
+	nodestot=nodesperlayer*layers;
+	elementsperlayer=nodesperlayer-1;
+	elementstot=(nodesperlayer-1)*(layers-1);
+
+	%initialization
+	X3=zeros(nodesperlayer*layers,1); Y3=zeros(nodesperlayer*layers,1); Z3=zeros(nodesperlayer*layers,1); S3=zeros(nodesperlayer*layers,1); index3=zeros(elementstot,4);
+
+	%Get new coordinates in 3d
+	for i=1:layers
+		X3(i:layers:end)=X;
+		Y3(i:layers:end)=Y;
+		Z3(i:layers:end)=base+(i-1)*(surface-base)/(layers-1);
+		S3(i:layers:end)=S;
+
+		if i<layers %Build index3 with quads
+			index3((i-1)*elementsperlayer+1:i*elementsperlayer,:)=[i:layers:nodestot-layers; i+1:layers:nodestot-layers; i+layers+1:layers:nodestot; i+layers:layers:nodestot]';
+		end
+	end
+
+	%Interpolation of data on specified points
+	data_interp=InterpFromMeshToMesh3d(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z,data,X3,Y3,Z3,NaN);
+
+	%build outputs
+	X=X3; Y=Y3; Z=Z3;  S=S3; index=index3;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/SectionValues.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/SectionValues.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/SectionValues.py	(revision 21239)
@@ -0,0 +1,139 @@
+import os
+from expread import expread
+import numpy as npy
+from project2d import project2d
+#from InterpFromMesh2d import InterpFromMesh2d
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from InterpFromMeshToMesh3d import InterpFromMeshToMesh3d
+
+def SectionValues(md,data,infile,resolution):
+	'''
+	compute the value of a field on a section
+	
+	This routine gets the value of a given field of the model on points
+	given in the file infile (Argus type file). Resolution must be a list
+	[horizontal_resolution, vertical_resolution]
+	
+	Usage:
+	[elements,x,y,z,s,data]=SectionValues(md,data,filename,resolution)
+	[elements,x,y,z,s,data]=SectionValues(md,data,profile_structure,resolution)
+	'''
+
+	if os.path.isfile(infile):
+		profile=expread(infile)[0]
+		nods=profile['nods']
+		x=profile['x']
+		y=profile['y']
+	else:
+		raise IOError('file %s not found' % infile)
+
+	#get the specified resolution
+	if len(resolution)!=2:
+		raise ValueError('SectionValues error message: Resolution must be a list [horizontal_resolution, vertical_resolution]')
+	else:
+		res_h=resolution[0]
+
+	if md.mesh.domaintype().lower() == '3d':
+		if isinstance(resolution[1],int) or isinstance(resolution[1],float):
+			res_v=resolution[1]
+		else:
+			raise ValueError('SectionValues error: resolution must be a length-2 list of integers or floats')
+
+	#initialization
+	X=npy.array([]) #X-coordinate
+	Y=npy.array([]) #Y-coordinate
+	S=npy.array([0.])  #curvilinear coordinate
+	
+	for i in xrange(nods-1):
+	
+		x_start=x[i]
+		x_end=x[i+1]
+		y_start=y[i]
+		y_end=y[i+1]
+		s_start=S[-1]
+	
+		length_segment=npy.sqrt((x_end-x_start)**2+(y_end-y_start)**2)
+		portion=npy.ceil(length_segment/res_h)
+	
+		x_segment=npy.zeros(portion)
+		y_segment=npy.zeros(portion)
+		s_segment=npy.zeros(portion)
+
+		for j in xrange(int(portion)):
+			x_segment[j]=x_start+(j)*(x_end-x_start)/portion
+			y_segment[j]=y_start+(j)*(y_end-y_start)/portion
+			s_segment[j]=s_start+j*length_segment/portion
+	
+		#plug into X and Y
+		X=npy.append(X,x_segment)
+		Y=npy.append(Y,y_segment)
+		S=npy.append(S,s_segment)
+
+	X=npy.append(X,x[nods-1])
+	Y=npy.append(Y,y[nods-1])
+	
+	#Number of nodes:
+	numberofnodes=X.shape[0]
+	
+	#Compute Z
+	Z=npy.zeros(numberofnodes)
+	
+	#New mesh and Data interpolation
+	if '2d' in md.mesh.domaintype().lower():
+	
+		#Interpolation of data on specified points
+		#data_interp=InterpFromMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,data,X,Y)[0]
+		data_interp=InterpFromMeshToMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,data,X,Y)[0]
+		#data_interp=griddata(md.mesh.x,md.mesh.y,data,X,Y)
+	
+		#Compute index
+		index=npy.array([range(1,numberofnodes),range(2,numberofnodes+1)]).T
+	
+	else:
+	
+		#vertically extrude mesh
+	
+		#Get base and surface for each 2d point, offset to make sure that it is inside the glacier system
+		offset=1.e-3
+		base=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.base,1),X,Y)[0]+offset
+		base=base.reshape(-1,)
+		surface=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.surface,1),X,Y)[0]-offset
+		surface=surface.reshape(-1,)
+	
+		#Some useful parameters
+		layers=int(npy.ceil(npy.mean(md.geometry.thickness)/res_v))
+		nodesperlayer=int(numberofnodes)
+		nodestot=int(nodesperlayer*layers)
+		elementsperlayer=int(nodesperlayer-1)
+		elementstot=int((nodesperlayer-1)*(layers-1))
+	
+		#initialization
+		X3=npy.zeros(nodesperlayer*layers) 
+		Y3=npy.zeros(nodesperlayer*layers) 
+		Z3=npy.zeros(nodesperlayer*layers) 
+		S3=npy.zeros(nodesperlayer*layers) 
+		index3=npy.zeros((elementstot,4))
+	
+		#Get new coordinates in 3d
+		for i in xrange(1,layers+1):
+			X3[i-1::layers]=X
+			Y3[i-1::layers]=Y
+			Z3[i-1::layers]=base+(i-1)*(surface-base)/(layers-1)
+			S3[i-1::layers]=S
+	
+			if i<layers-1:  #Build index3 with quads
+				ids=npy.vstack((npy.arange(i,nodestot-layers,layers),npy.arange(i+1,nodestot-layers,layers),npy.arange(i+layers+1,nodestot,layers),npy.arange(i+layers,nodestot,layers))).T
+				index3[(i-1)*elementsperlayer:i*elementsperlayer,:]=ids
+
+		#Interpolation of data on specified points
+		data_interp=InterpFromMeshToMesh3d(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z,data,X3,Y3,Z3,npy.nan)[0]
+	
+		#build outputs
+		X=X3 
+		Y=Y3 
+		Z=Z3  
+		S=S3 
+
+		index=index3
+
+	return index,X,Y,Z,S,data_interp
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/averaging.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/averaging.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/averaging.m	(revision 21239)
@@ -0,0 +1,90 @@
+function average=averaging(md,data,iterations,varargin)
+%AVERAGING - smooths the input over the mesh
+%
+%   This routine takes a list over the elements or the nodes in input
+%   and return a list over the nodes.
+%   For each iterations it computes the average over each element (average 
+%   of the vertices values) and then computes the average over each node
+%   by taking the average of the element around a node weighted by the
+%   elements volume
+%   For 3d mesh, a last argument can be added to specify the layer to be averaged on.
+%
+%   Usage:
+%      smoothdata=averaging(md,data,iterations)
+%      smoothdata=averaging(md,data,iterations,layer)
+%
+%   Examples:
+%      velsmoothed=averaging(md,md.initialization.vel,4);
+%      pressure=averaging(md,md.initialization.pressure,0);
+%      temperature=averaging(md,md.initialization.temperature,1,1);
+
+if ((nargin~=4) & (nargin~=3)),
+	error('averaging error message: wrong number of arguments');
+end
+if (length(data)~=md.mesh.numberofelements & length(data)~=md.mesh.numberofvertices),
+	error('averaging error message: data not supported yet');
+end
+if dimension(md.mesh)==3 & nargin==4,
+	if varargin{1}<=0 | varargin{1}>md.mesh.numberoflayers,
+		error('layer should be between 1 and md.mesh.numberoflayers');
+	end
+	layer=varargin{1};
+else
+	layer=0;
+end
+
+%initialization
+if layer==0,
+	weights=zeros(md.mesh.numberofvertices,1);
+	data=data(:);
+else 
+	weights=zeros(md.mesh.numberofvertices2d,1);
+	data=data((layer-1)*md.mesh.numberofvertices2d+1:layer*md.mesh.numberofvertices2d,:);
+end
+
+%load some variables (it is much faster if the variabes are loaded from md once for all)
+if layer==0,
+	index=md.mesh.elements;
+	numberofnodes=md.mesh.numberofvertices;
+	numberofelements=md.mesh.numberofelements;
+else
+	index=md.mesh.elements2d;
+	numberofnodes=md.mesh.numberofvertices2d;
+	numberofelements=md.mesh.numberofelements2d;
+end
+
+%build some variables
+line=index(:);
+if dimension(md.mesh)==3 & layer==0,
+	rep=6;
+	areas=GetAreas(index,md.mesh.x,md.mesh.y,md.mesh.z);
+elseif dimension(md.mesh)==2,
+	rep=3;
+	areas=GetAreas(index,md.mesh.x,md.mesh.y);
+else
+	rep=3;
+	areas=GetAreas(index,md.mesh.x2d,md.mesh.y2d);
+end
+summation=1/rep*ones(rep,1);
+linesize=rep*numberofelements;
+
+%update weights that holds the volume of all the element holding the node i
+weights=sparse(line,ones(linesize,1),repmat(areas,rep,1),numberofnodes,1);
+
+%initialization
+if length(data)==numberofelements
+	average_node=sparse(line,ones(linesize,1),repmat(areas.*data,rep,1),numberofnodes,1);
+	average_node=average_node./weights;
+else
+	average_node=data;
+end
+
+%loop over iteration
+for i=1:iterations
+	average_el=average_node(index)*summation;
+	average_node=sparse(line,ones(linesize,1),repmat(areas.*average_el,rep,1),numberofnodes,1);
+	average_node=average_node./weights;
+end
+
+%return output as a full matrix (C code do not like sparse matrices)
+average=full(average_node);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/averaging.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/averaging.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/averaging.py	(revision 21239)
@@ -0,0 +1,96 @@
+import numpy as npy
+from GetAreas import GetAreas
+import MatlabFuncs as m
+try:
+	from scipy.sparse import csc_matrix
+except ImportError:
+	print "could not import scipy, no averaging capabilities enabled"
+
+def averaging(md,data,iterations,layer=0):
+	'''
+	AVERAGING - smooths the input over the mesh
+	
+	   This routine takes a list over the elements or the nodes in input
+	   and return a list over the nodes.
+	   For each iterations it computes the average over each element (average 
+	   of the vertices values) and then computes the average over each node
+	   by taking the average of the element around a node weighted by the
+	   elements volume
+	   For 3d mesh, a last argument can be added to specify the layer to be averaged on.
+	
+	   Usage:
+	      smoothdata=averaging(md,data,iterations)
+	      smoothdata=averaging(md,data,iterations,layer)
+	
+	   Examples:
+	      velsmoothed=averaging(md,md.initialization.vel,4)
+	      pressure=averaging(md,md.initialization.pressure,0)
+	      temperature=averaging(md,md.initialization.temperature,1,1)
+	'''
+
+	if len(data)!=md.mesh.numberofelements and len(data)!=md.mesh.numberofvertices:
+		raise StandardError('averaging error message: data not supported yet')
+	if md.mesh.dimension()==3 and layer!=0:
+		if layer<=0 or layer>md.mesh.numberoflayers:
+			raise ValueError('layer should be between 1 and md.mesh.numberoflayers')
+	else:
+		layer=0
+	
+	#initialization
+	if layer==0:
+		weights=npy.zeros(md.mesh.numberofvertices,)
+		data=data.flatten(1)
+	else:
+		weights=npy.zeros(md.mesh.numberofvertices2d,)
+		data=data[(layer-1)*md.mesh.numberofvertices2d+1:layer*md.mesh.numberofvertices2d,:]
+	
+	#load some variables (it is much faster if the variabes are loaded from md once for all)
+	if layer==0:
+		index=md.mesh.elements
+		numberofnodes=md.mesh.numberofvertices
+		numberofelements=md.mesh.numberofelements
+	else:
+		index=md.mesh.elements2d
+		numberofnodes=md.mesh.numberofvertices2d
+		numberofelements=md.mesh.numberofelements2d
+
+	
+	#build some variables
+	if md.mesh.dimension()==3 and layer==0:
+		rep=6
+		areas=GetAreas(index,md.mesh.x,md.mesh.y,md.mesh.z)
+	elif md.mesh.dimension()==2:
+		rep=3
+		areas=GetAreas(index,md.mesh.x,md.mesh.y)
+	else:
+		rep=3
+		areas=GetAreas(index,md.mesh.x2d,md.mesh.y2d)
+
+	index=index-1 # since python indexes starting from zero
+	line=index.flatten(1)
+	areas=npy.vstack(areas).reshape(-1,)
+	summation=1./rep*npy.ones(rep,)
+	linesize=rep*numberofelements
+	
+	#update weights that holds the volume of all the element holding the node i
+	weights=csc_matrix( (npy.tile(areas,(rep,1)).reshape(-1,),(line,npy.zeros(linesize,))), shape=(numberofnodes,1))
+	
+	#initialization
+	if len(data)==numberofelements:
+		average_node=csc_matrix( (npy.tile(areas*data,(rep,1)).reshape(-1,),(line,npy.zeros(linesize,))), shape=(numberofnodes,1))
+		average_node=average_node/weights
+		average_node = csc_matrix(average_node)
+	else:
+		average_node=csc_matrix(data.reshape(-1,1))
+
+	#loop over iteration
+	for i in npy.arange(1,iterations+1):
+		average_el=npy.asarray(npy.dot(average_node.todense()[index].reshape(numberofelements,rep),npy.vstack(summation))).reshape(-1,)
+		average_node=csc_matrix( (npy.tile(areas*average_el.reshape(-1),(rep,1)).reshape(-1,),(line,npy.zeros(linesize,))), shape=(numberofnodes,1))
+		average_node=average_node/weights
+		average_node=csc_matrix(average_node)
+	
+	#return output as a full matrix (C code do not like sparse matrices)
+	average=npy.asarray(average_node.todense()).reshape(-1,)
+
+	return average
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/holefiller.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/holefiller.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/holefiller.py	(revision 21239)
@@ -0,0 +1,46 @@
+import numpy as npy
+from scipy.spatial import cKDTree
+
+def nearestneighbors(x,y,data,goodids,badids,knn):
+	'''
+	fill holes using nearest neigbors.  Arguments include:
+
+
+	x,y:		the coordinates of data to be filled 
+	data:		the data field to be filled (full field, including holes)
+	goodids:	id's into the vertices that have good data
+	badids:	id's into the vertices with missing/bad data
+	knn:		integer representing the k nearest neighbors to use for filling
+				holes.  The average data value over the k nearest neighbors is 
+				then used to fill the hole.
+
+	Usage:
+		filleddata=nearestneighbors(x,y,data,goodids,badids,knn)
+
+	Example:
+		filledthickness=nearestneighbors(x,y,data,goodids,badids,5)
+	'''
+
+	if type(knn) != int or knn<1:
+		raise TypeError('nearestneighbors error: knn should be an integer>1')
+
+	if len(x) != len(data) or len(y) != len(data):
+		raise StandardError('nearestneighbors error: x and y should have the same length as "data"')
+
+	filled=data
+	
+	XYGood=npy.dstack([x[goodids],y[goodids]])[0]
+	XYBad=npy.dstack([x[badids],y[badids]])[0]
+	tree=cKDTree(XYGood)
+	nearest=tree.query(XYBad,k=knn)[1]
+	
+	if knn==1:
+		filled[badids]=filled[goodids][nearest] # can add k=N to return the N nearest neighbors
+	else:
+		for i in range(len(badids)):
+			neardat=[]
+			for j in range(knn):
+				neardat.append(filled[goodids][nearest[i][j]])
+				filled[badids[i]]=npy.mean(neardat)
+				
+	return filled
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/interp.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/interp.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/interp.py	(revision 21239)
@@ -0,0 +1,240 @@
+# module for inperpolating/smoothing data
+import numpy as npy
+from scipy.interpolate import CloughTocher2DInterpolator, Rbf
+from scipy.spatial import cKDTree
+try:
+	import matplotlib.pyplot as plt
+except ImportError:
+	print 'could not import matplotlib, no plotting functions enabled.\
+			Set plotonly=False in function call'
+
+def MeshSplineToMesh2d(x,y,data,xi,yi,tol=1e-6,fill_nans=False,**kwargs):#{{{
+	'''
+	Piecewise cubic, C1 smooth, curvature-minimizing interpolant in 2D.
+	The interpolant is guaranteed to be continuously differentiable,
+	and the gradients are chosen such that the curvature of the interpolant
+	is approximately minimized.
+
+	Uses scipy.interpolate.CloughTocher2DInterpolator
+
+	x,y:			data point coordinates
+	data:			data to be interpolated (same length as x,y)
+	xi,yi:		coordintes to interpolate data onto
+	tol:			tolerance for gradient estimation (default 1e-6)
+	fill_nans:	fill nan's (holes) in data using the spline fit? 
+	**kwargs:	optional keywork arguments:
+					maxiter: maximum iterations in gradient estimation
+	
+	Returns interpolated data at given x,y coordinates.
+
+	Usage:
+		interpdata=CloughToucher2d(x,y,data)
+
+	Examples:
+		interpdata=CloughToucher2d(md.mesh.x,md.mesh.y,data)
+		interpdata=CloughToucher2d(md.mesh.x,md.mesh.y,data,tol=1e-3,maxiter=100)
+	'''
+
+	# unpack kwargs
+	maxiter=kwargs.pop('maxiter',None)
+	if 'maxiter' in kwargs: del kwargs['maxiter']
+	if maxiter:
+		assert type(maxiter)==int, 'error, maxiter should be an integer'
+	assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
+
+	# create sub-vectors that just cover the limits of xi and yi
+	# TODO x,y not necessarily a grid, so need a better definition of dx,dy (e.g. average element size)
+	dx=500
+	dy=500
+	#dx=x[1]-x[0]
+	#dy=y[1]-y[0]
+	xlim=[min(xi)-dx,max(xi)+dx]
+	ylim=[min(yi)-dy,max(yi)+dy]
+	xflag=npy.logical_and(x>xlim[0],x<xlim[1])
+	yflag=npy.logical_and(y>ylim[0],y<ylim[1])
+	bothind=npy.nonzero(npy.logical_and(xflag,yflag))
+	subdata=data[bothind]
+	subx=x[bothind]
+	suby=y[bothind]
+	points=npy.array([subx,suby]).T
+
+	# mask out any nan's in the data and corresponding coordinate points
+	mask=npy.isnan(subdata)
+	ind=npy.nonzero(mask)[0]
+	if len(ind) and fill_nans:
+		print "		WARNING: filling nans using spline fit through good data points, which may or may not be appropriate. Check results carefully."
+	subdata=npy.delete(subdata,ind)
+	points=npy.delete(points,ind,axis=0)
+
+	if maxiter:
+		spline=CloughTocher2DInterpolator(points,subdata,tol,maxiter=maxiter)
+	else:
+		spline=CloughTocher2DInterpolator(points,subdata,tol)
+
+	interpdata=spline(xi,yi)
+	
+	if not fill_nans:
+		# identify nan's in xi,yi using nearest neighbors
+		xyinterp=npy.dstack([xi,yi])[0]
+		xg,yg=npy.meshgrid(subx,suby)
+		xydata=npy.dstack([subx,suby])[0]
+		tree=cKDTree(xydata)
+		nearest=tree.query(xyinterp)[1]
+		pos=npy.nonzero(npy.isnan(subdata[nearest]))
+		interpdata[pos]=subdata[nearest][pos]
+
+	return interpdata
+#}}}
+def GridSplineToMesh2d(x,y,data,xi,yi,default_value=npy.nan,plotonly=False,fill_nans=False):#{{{
+	'''
+	python analog to InterpFromGridToMesh.  This routine uses
+	scipy.interpolate.CloughTocher2dInterpolator to create a bivariate spline
+	interpolation of the input data and then return values of the spline
+	on the x,y coordinates of the model mesh.  The interpolant is piece-wise
+	cubic, C1 smooth (continuously differentiable) and has approximately 
+	minimized curvature.  See "help(scipy.interpolate.CloughTocher2dInterpolator)"
+	for more information on the routine.
+
+	NOTE: this routine will not be appropriate if there are large holes (nan's) in 
+	the input data.  A non-spline interpolation scheme should be used in that case.
+
+	x,y:				vectors defining the coordinates of the input data
+	data:				2D array of input data
+	xi,yi:			x and y coordinates to be interpolated onto
+	default_value:	default value if points lie outside the convex hull of input
+						points (defaults to nan if not specified)
+	plotonly:		plot the data to be interpolated using imshow (useful for
+	fill_nans:		fill nan's (holes) in data using the spline fit? 
+
+	Usage:
+		interpdata=GridToMesh(x,y,data,xi,yi,default_value=npy.nan,plotonly=False,fill_nans=False)
+
+	Examples:
+		interpdata=GridToMesh(x_m,y_m,data,md.mesh.x,md.mesh.y,0)
+	'''
+
+	if npy.ndim(x)==2:
+		x=x.reshape(-1,)
+	if npy.ndim(y)==2:
+		y=y.reshape(-1,)
+	if len(x) != data.shape[1]+1 and len(x) != data.shape[1]:
+		raise ValueError('x should have same length as ncols(data) or ncols(data)+1')
+	if len(y) != data.shape[0]+1 and len(y) != data.shape[0]:
+		raise ValueError('y should have same length as nrows(data) or nrows(data)+1')
+	
+	# create sub-grid that just covers the limits of xi and yi
+	dx=x[1]-x[0]
+	dy=y[1]-y[0]
+	xlim=[min(xi)-dx,max(xi)+dx]
+	ylim=[min(yi)-dy,max(yi)+dy]
+
+	# TODO create grid differently depending on whether data is defined at x,y
+	# or at the center of a grid cell with corner coordinates defined by xi,yi
+	# create points array and flattened data array
+	if len(x)==data.shape[1] and len(y)==data.shape[0]:
+		print '		x,y taken to define the center of data grid cells'
+		xind=npy.nonzero(npy.logical_and(x>xlim[0],x<xlim[1]))[0]
+		yind=npy.nonzero(npy.logical_and(y>ylim[0],y<ylim[1]))[0]
+		xg,yg=npy.meshgrid(x[xind],y[yind])
+		subdata=data[yind[0]:yind[-1]+1,xind[0]:xind[-1]+1]
+	elif len(x)==data.shape[1]+1 and len(y)==data.shape[0]+1:
+		print '		x,y taken to define the corners of data grid cells'
+		xcenter=npy.fromiter(((x[i]+x[i+1])/2 for i in range(len(x)-1)),npy.float)
+		ycenter=npy.fromiter(((y[i]+y[i+1])/2 for i in range(len(y)-1)),npy.float)
+		xind=npy.nonzero(npy.logical_and(xcenter>xlim[0],xcenter<xlim[1]))[0]
+		yind=npy.nonzero(npy.logical_and(ycenter>ylim[0],ycenter<ylim[1]))[0]
+		xg,yg=npy.meshgrid(xcenter[xind],ycenter[yind])
+		subdata=data[yind[0]:yind[-1]+1,xind[0]:xind[-1]+1]
+	else:
+		raise ValueError('x and y have inconsistent sizes: both should have length ncols(data)/nrows(data) or ncols(data)+1/nrows(data)+1')
+
+	points=npy.array([xg.ravel(),yg.ravel()]).T
+	flatsubdata=subdata.ravel()
+
+	if plotonly:
+		plt.imshow(npy.flipud(subdata),origin='upper')
+		plt.show()
+		return
+
+	# mask out any nan's in the data and corresponding coordinate points
+	mask=npy.isnan(flatsubdata)
+	ind=npy.nonzero(mask)[0]
+	if len(ind) and fill_nans:
+		print "		WARNING: filling nans using spline fit through good data points, which may or may not be appropriate. Check results carefully."
+	goodsubdata=npy.delete(flatsubdata,ind)
+	goodpoints=npy.delete(points,ind,axis=0)
+
+	# create spline and index spline at mesh points
+	spline=CloughTocher2DInterpolator(goodpoints,goodsubdata)
+	interpdata=spline(xi,yi)
+
+	if not fill_nans:
+		# identify nan's in xi,yi using nearest neighbors
+		xyinterp=npy.dstack([xi,yi])[0]
+		xydata=npy.dstack([xg.ravel(),yg.ravel()])[0]
+		tree=cKDTree(xydata)
+		nearest=tree.query(xyinterp)[1]
+		pos=npy.nonzero(npy.isnan(flatsubdata[nearest]))
+		interpdata[pos]=flatsubdata[nearest][pos]
+
+	return interpdata
+#}}}
+def RadialInterp(x,y,data,xi,yi,**kwargs):#{{{
+	'''
+	Interpolation using a radial basis function in 2 or 3 dimensions.
+	Useful for smoothing input data after interpolation.
+
+	Uses scipy.interpolate.Rbf
+
+	x,y:			data point coordinates
+	data:			data to be interpolated (same length as x,y)
+	xi,yi:		coordinates to interpolate onto
+	function:	form of radial basis function for interpolation:
+					'multiquadric': sqrt((r/self.epsilon)**2 + 1) (default)
+					'inverse': 1.0/sqrt((r/self.epsilon)**2 + 1)
+					'gaussian': exp(-(r/self.epsilon)**2)
+					'linear': r
+					'cubic': r**3
+					'quintic': r**5
+					'thin_plate': r**2 * log(r)
+	epsilon:		adjustable constant for scaling radial distance.  Defaults to 
+					approximate average distance between nodes.
+	smooth:		float>0, adjusts the amount of smoothing applied.  Defaults to 0,
+					such that the function always passes through nodal points.
+	z:				coordinate array if interpolating in 3 dimensions
+	zi:			coordinate array if interpolating in 3 dimensions
+
+	Usage:
+		interpdata=RadialInterp(x,y,data,**kwargs)
+
+	Examples:
+		interpdata=RadialInterp(md.mesh.x,md.mesh.y,data)
+		interpdata=RadialInterp(md.mesh.x,md.mesh.y,data,function='gaussian',epsilon=100,smooth=1)
+	'''
+
+	# unpack kwargs
+	function=kwargs.pop('function','gaussian')
+	if 'function' in kwargs: del kwargs['function']
+	epsilon=kwargs.pop('epsilon',None)
+	if 'epsilon' in kwargs: del kwargs['epsilon']
+	smooth=kwargs.pop('smooth',0)
+	if 'smooth' in kwargs: del kwargs['smooth']
+	z=kwargs.pop('z',None)
+	if 'z' in kwargs: del kwargs['z']
+	assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
+
+	if z:
+		if epsilon:
+			rbfi=Rbf(x,y,z,data,function=function,smooth=smooth,epsilon=epsilon)
+		else:
+			rbfi=Rbf(x,y,z,data,function=function,smooth=smooth)
+		interpdata=rbfi(xi,yi,zi)
+	else:
+		if epsilon:
+			rbfi=Rbf(x,y,data,function=function,smooth=smooth,epsilon=epsilon)
+		else:
+			rbfi=Rbf(x,y,data,function=function,smooth=smooth)
+		interpdata=rbfi(xi,yi)
+	
+	return interpdata
+#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/plugvelocities.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/plugvelocities.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/interp/plugvelocities.m	(revision 21239)
@@ -0,0 +1,167 @@
+function md=plugvelocities(md,filename,default_value)
+%PLUGVELOCITIES - load velocities on a model
+%
+%   load a matlab file (extension .mat) which holds 4 variables
+%   x,y,vx,vy to be plugged onto the model (or similar names)
+%   x and y must be vectors, vx, vy matrices
+%
+%   Usage:
+%      md=plugvelocities(md,filename,default_value)
+%
+%   Example:
+%      md=plugvelocities(md,'velocityfile.mat',0);
+%
+%   See also: INTERPFROMFILE, GRIDDATA
+
+disp('WARNING: deprecated functions (plugvelocities)');
+%some checks
+if nargin~=3 | nargout~=1
+	help plugvelocities
+	error('plugvelocities error message: bad usage');
+end
+if ~exist(filename)
+	error(['plugvelocities error message: file ' filename  ' does not exist']);
+end
+
+%load velocities 
+Names=VelFindVarNames(filename);
+Vel=load(filename);
+
+%Interpolation
+if strcmpi(Names.interp,'node'),
+	md.inversion.vx_obs=InterpFromGridToMesh(Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vxname),md.mesh.x,md.mesh.y,default_value);
+	md.inversion.vy_obs=InterpFromGridToMesh(Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vyname),md.mesh.x,md.mesh.y,default_value);
+else
+	md.inversion.vx_obs=InterpFromMeshToMesh2d(Vel.(Names.indexname),Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vxname),md.mesh.x,md.mesh.y,default_value);
+	md.inversion.vy_obs=InterpFromMeshToMesh2d(Vel.(Names.indexname),Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vyname),md.mesh.x,md.mesh.y,default_value);
+end
+
+md.inversion.vel_obs=sqrt(md.inversion.vx_obs.^2+md.inversion.vy_obs.^2);
+md.initialization.vx=md.inversion.vx_obs;
+md.initialization.vy=md.inversion.vy_obs;
+md.initialization.vel=md.inversion.vel_obs;
+end
+
+function Names=VelFindVarNames(filename)
+%VELFINDVARNAMES - find names of variables in a velocity data set file
+%
+%   This routines looks at the variables contained in a file and finds out
+%   the names of the variables that are needed for an interpolation (x,y,vx,vy)
+%   or (index,x,y,vx,vy)
+%
+%   Usage:
+%      Names=VelFindVarNames(filename)
+%
+%   Example:
+%      Names=VelFindVarNames('velocities.mat')
+%
+%   See also: INTERPFROMFILE, GRIDDATA
+
+%some checks
+if nargin~=1 | nargout~=1
+	help VelFindVarNames
+	error('VelFindVarNames error message: bad usage');
+end
+if ~exist(filename)
+	error(['VelFindVarNames error message: file ' filename  ' does not exist']);
+end
+
+%Get variables
+A=whos('-file',filename);
+
+%find x,y,vx and vy
+xenum=NaN; yenum=NaN; vxenum=NaN; vyenum=NaN; indexenum=NaN;
+if length(A)==4,
+	isnode=1;
+	for i=1:4
+		if strcmpi(A(i).name(1),'x');
+			xenum=i;
+		elseif strcmpi(A(i).name(1),'y');
+			yenum=i;
+		else
+			if (strcmpi(A(i).name(end),'x') | strncmpi(A(i).name,'vx',2));
+				vxenum=i;
+			elseif (strcmpi(A(i).name(end),'y') | strncmpi(A(i).name,'vy',2));
+				vyenum=i;
+			end
+		end
+	end
+elseif length(A)==5,
+	isnode=0;
+	for i=1:5
+		if strcmpi(A(i).name(1),'x');
+			xenum=i;
+		elseif strcmpi(A(i).name(1),'y');
+			yenum=i;
+		elseif (strcmpi(A(i).name(1),'index') | strcmpi(A(i).name(1),'elements'));
+			indexenum=i;
+		else
+			if (strcmpi(A(i).name(end),'x') | strncmpi(A(i).name,'vx',2));
+				vxenum=i;
+			elseif (strcmpi(A(i).name(end),'y') | strncmpi(A(i).name,'vy',2));
+				vyenum=i;
+			end
+		end
+	end
+else
+	error(['VelFindVarNames error message: file ' filename  ' not supported yet (it should hold 4 variables x,y,vx and vy (for nodes) OR 5 variables  x,y,index,vx and vy (for mesh))']);
+end
+
+%assum that we have found at least vxenum and vyenum
+if ( isnan(vxenum) | isnan(vyenum))
+	error(['VelFindVarNames error message: file ' filename  ' not supported yet (the velocities should be named vx and vy)']);
+end
+
+%find index
+if (~isnode & isnan(indexenum)),
+	for i=1:5
+		lengthi=min(A(i).size);
+		if (lengthi==3),
+			indexenum=i;
+		end
+	end
+	if isnan(indexenum),
+		error(['VelFindVarNames error message: file ' filename  ' not supported yet (index not found)']);
+	end
+end
+
+%find x y
+if (isnan(xenum) | isnan(yenum))
+
+	%check the size
+	if A(vxenum).size(1)==A(vxenum).size(2),
+		error(['VelFindVarNames error message: file ' filename  ' not supported (velocities is a square matrix, save x and y with another name)']);
+	end
+	if ~(A(vxenum).size(1)==A(vyenum).size(1) & A(vxenum).size(2)==A(vyenum).size(2)),
+		error(['VelFindVarNames error message: file ' filename  ' not supported (vx and vy matrices do not have the same size)']);
+	end
+
+	%find xenum and yenum
+	for i=1:4
+		lengthi=max(A(i).size);
+		if ((i~=vxenum) & (lengthi==A(vxenum).size(1) | lengthi==A(vxenum).size(1)+1)),
+			yenum=i;
+		elseif ((i~=vxenum) & (lengthi==A(vxenum).size(2) | lengthi==A(vxenum).size(2)+1)),
+			xenum=i;
+		end
+	end
+
+	%last check
+	if (isnan(xenum) | isnan(yenum))
+		error(['plugdata error message: file ' filename  ' not supported yet']);
+	end
+end
+
+%create output
+Names=struct();
+Names.xname=A(xenum).name;
+Names.yname=A(yenum).name;
+Names.vxname=A(vxenum).name;
+Names.vyname=A(vyenum).name;
+if ~isnode,
+	Names.indexname=A(indexenum).name; 
+	Names.interp='mesh';
+else
+	Names.interp='node';
+end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/marshallcostfunctions.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/marshallcostfunctions.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/marshallcostfunctions.js	(revision 21239)
@@ -0,0 +1,19 @@
+function  marshallcostfunctions(cost_functions){
+	for(var i=0;i<cost_functions.length;i++){
+		if(cost_functions[i]==101) data[i]='SurfaceAbsVelMisfit';
+		if(cost_functions[i]==102) data[i]='SurfaceRelVelMisfit';
+		if(cost_functions[i]==103) data[i]='SurfaceLogVelMisfit';
+		if(cost_functions[i]==104) data[i]='SurfaceLogVxVyMisfit';
+		if(cost_functions[i]==105) data[i]='SurfaceAverageVelMisfit';
+		if(cost_functions[i]==201) data[i]='ThicknessAbsMisfit';
+		if(cost_functions[i]==501) data[i]='DragCoefficientAbsGradient';
+		if(cost_functions[i]==502) data[i]='RheologyBbarAbsGradient';
+		if(cost_functions[i]==503) data[i]='ThicknessAbsGradient';
+		if(cost_functions[i]==504) data[i]='ThicknessAlongGradient';
+		if(cost_functions[i]==505) data[i]='ThicknessAcrossGradient';
+		if(cost_functions[i]==506) data[i]='BalancethicknessMisfit';
+		if(cost_functions[i]==507) data[i]='RheologyBAbsGradient';
+		if(cost_functions[i]==601) data[i]='SurfaceAbsMisfit';
+	}
+	return data;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/marshallcostfunctions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/marshallcostfunctions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/marshallcostfunctions.m	(revision 21239)
@@ -0,0 +1,16 @@
+function data = marshallcostfunctions(cost_functions)
+	pos=find(cost_functions==101); data(pos) = {'SurfaceAbsVelMisfit'};
+	pos=find(cost_functions==102); data(pos) = {'SurfaceRelVelMisfit'};
+	pos=find(cost_functions==103); data(pos) = {'SurfaceLogVelMisfit'};
+	pos=find(cost_functions==104); data(pos) = {'SurfaceLogVxVyMisfit'};
+	pos=find(cost_functions==105); data(pos) = {'SurfaceAverageVelMisfit'};
+	pos=find(cost_functions==201); data(pos) = {'ThicknessAbsMisfit'};
+	pos=find(cost_functions==501); data(pos) = {'DragCoefficientAbsGradient'};
+	pos=find(cost_functions==502); data(pos) = {'RheologyBbarAbsGradient'};
+	pos=find(cost_functions==503); data(pos) = {'ThicknessAbsGradient'};
+	pos=find(cost_functions==504); data(pos) = {'ThicknessAlongGradient'};
+	pos=find(cost_functions==505); data(pos) = {'ThicknessAcrossGradient'};
+	pos=find(cost_functions==506); data(pos) = {'BalancethicknessMisfit'};
+	pos=find(cost_functions==507); data(pos) = {'RheologyBAbsGradient'};
+	pos=find(cost_functions==510); data(pos) = {'ThicknessPositive'};
+	pos=find(cost_functions==601); data(pos) = {'SurfaceAbsMisfit'};
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/marshallcostfunctions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/marshallcostfunctions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/marshallcostfunctions.py	(revision 21239)
@@ -0,0 +1,32 @@
+import copy
+
+def marshallcostfunctions(cost_functions):
+
+	#copy list first
+	data=copy.deepcopy(cost_functions)
+
+	#convert to strings 
+	pos=[i for i,x in enumerate(cost_functions) if x==101];
+	for i in pos: data[i]='SurfaceAbsVelMisfit'        
+	pos=[i for i,x in enumerate(cost_functions) if x==102];
+	for i in pos: data[i]='SurfaceRelVelMisfit'        
+	pos=[i for i,x in enumerate(cost_functions) if x==103];
+	for i in pos: data[i]='SurfaceLogVelMisfit'        
+	pos=[i for i,x in enumerate(cost_functions) if x==104];
+	for i in pos: data[i]='SurfaceLogVxVyMisfit'       
+	pos=[i for i,x in enumerate(cost_functions) if x==105];
+	for i in pos: data[i]='SurfaceAverageVelMisfit'    
+	pos=[i for i,x in enumerate(cost_functions) if x==201];
+	for i in pos: data[i]='ThicknessAbsMisfit'         
+	pos=[i for i,x in enumerate(cost_functions) if x==501];
+	for i in pos: data[i]='DragCoefficientAbsGradient' 
+	pos=[i for i,x in enumerate(cost_functions) if x==502];
+	for i in pos: data[i]='RheologyBbarAbsGradient'    
+	pos=[i for i,x in enumerate(cost_functions) if x==503];
+	for i in pos: data[i]='ThicknessAbsGradient'       
+	pos=[i for i,x in enumerate(cost_functions) if x==504];
+	for i in pos: data[i]='ThicknessAlongGradient'     
+	pos=[i for i,x in enumerate(cost_functions) if x==505];
+	for i in pos: data[i]='ThicknessAcrossGradient'    
+
+	return data
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/parametercontrolB.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/parametercontrolB.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/parametercontrolB.m	(revision 21239)
@@ -0,0 +1,121 @@
+function md=parametercontrolB(md,varargin),
+%PARAMETERCONTROLB - parameterization for control method on B
+%
+%   It is possible to specify the number of steps, values for the
+%   minimum and maximum values of B, the 
+%   kind of cm_responses to use or the the optscal.
+%   
+%   Usage:
+%       md=parametercontrolB(md,varargin)
+%
+%   Example:
+%      md=parametercontrolB(md)
+%      md=parametercontrolB(md,'nsteps',20,'cm_responses',0)
+%      md=parametercontrolB(md,'cm_min',10,'cm_max',10^8,'cm_jump',0.99,'maxiter',20)
+%      md=parametercontrolB(md,eps_cm',10^-4,'optscal',[10^7 10^8])
+%
+%   See also  PARAMETERCONTROLDRAG
+
+%process options
+options=pairoptions(varargin{:});
+
+%control type
+md.inversion.control_parameters={'MaterialsRheologyBbar'};
+
+%weights
+weights=getfieldvalue(options,'weights',ones(md.mesh.numberofvertices,1));
+if (length(weights)~=md.mesh.numberofvertices)
+	md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+else
+	md.inversion.cost_functions_coefficients=weights;
+end
+
+%nsteps
+nsteps=getfieldvalue(options,'nsteps',100);
+if (length(nsteps)~=1 | nsteps<=0 | floor(nsteps)~=nsteps)
+	md.inversion.nsteps=100;
+else
+	md.inversion.nsteps=nsteps;
+end
+
+%cm_min
+cm_min=getfieldvalue(options,'cm_min',paterson(273.15+5)*ones(md.mesh.numberofvertices,1));
+if (length(cm_min)==1)
+	md.inversion.min_parameters=cm_min*ones(md.mesh.numberofvertices,1);
+elseif (length(cm_min)==md.mesh.numberofvertices)
+	md.inversion.min_parameters=cm_min;
+else
+	md.inversion.min_parameters=cm_min;
+end
+
+%cm_max
+cm_max=getfieldvalue(options,'cm_max',paterson(273.15-70)*ones(md.mesh.numberofvertices,1));
+if (length(cm_max)==1)
+	md.inversion.max_parameters=cm_max*ones(md.mesh.numberofvertices,1);
+elseif (length(cm_max)==md.mesh.numberofvertices)
+	md.inversion.max_parameters=cm_max;
+else
+	md.inversion.max_parameters=cm_max;
+end
+
+%eps_cm
+eps_cm=getfieldvalue(options,'eps_cm',NaN);
+if (length(eps_cm)~=1 | eps_cm<0 )
+	md.inversion.cost_function_threshold=NaN;
+else
+	md.inversion.cost_function_threshold=eps_cm;
+end
+
+%maxiter
+maxiter=getfieldvalue(options,'maxiter',10*ones(md.inversion.nsteps,1));
+if (any(maxiter<0) | any(floor(maxiter)~=maxiter))
+	md.inversion.maxiter_per_step=10*ones(md.inversion.nsteps,1);
+else
+	md.inversion.maxiter_per_step=repmat(maxiter(:),md.inversion.nsteps,1);
+	md.inversion.maxiter_per_step(md.inversion.nsteps+1:end)=[];
+end
+
+%cm_jump
+cm_jump=getfieldvalue(options,'cm_jump',0.9*ones(md.inversion.nsteps,1));
+if ~isreal(cm_jump)
+	md.inversion.step_threshold=0.9*ones(md.inversion.nsteps,1);
+else
+	md.inversion.step_threshold=repmat(cm_jump(:),md.inversion.nsteps,1);
+	md.inversion.step_threshold(md.inversion.nsteps+1:end)=[];
+end
+
+%cm_responses
+found=0;
+if exist(options,'cm_responses'),
+	cm_responses=getfieldvalue(options,'cm_responses');
+	if ~any(~ismember(cm_responses,[ 101:105])),
+		md.inversion.cost_functions=repmat(cm_responses(:),md.inversion.nsteps,1);
+		md.inversion.cost_functions(md.inversion.nsteps+1:end)=[];
+		found=1;
+	end
+end
+if ~found
+	third=ceil(md.inversion.nsteps/3);
+	md.inversion.cost_functions=[...
+		103*ones(third,1);...
+		101*ones(third,1);...
+		repmat([101;101;103;101],third,1)...
+		];
+	md.inversion.cost_functions(md.inversion.nsteps+1:end)=[];
+end
+
+%optscal
+found=0;
+if exist(options,'optscal'),
+	optscal=getfieldvalue(options,'optscal');
+	if ~any(optscal<0),
+		md.inversion.gradient_scaling=repmat(optscal(:),md.inversion.nsteps,1);
+		md.inversion.gradient_scaling(md.inversion.nsteps+1:end)=[];
+		found=1;
+	end
+end
+if ~found
+	third=ceil(md.inversion.nsteps/3);
+	md.inversion.gradient_scaling=[2*10^8*ones(3,1);10^8*ones(third-3,1);10^7*ones(2*third,1);];
+	md.inversion.gradient_scaling(md.inversion.nsteps+1:end)=[];
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/parametercontroldrag.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/parametercontroldrag.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/parametercontroldrag.m	(revision 21239)
@@ -0,0 +1,121 @@
+function md=parametercontroldrag(md,varargin),
+%PARAMETERCONTROLDRAG - parameterization for control method on drag
+%
+%   It is possible to specify the number of steps, values for the
+%   minimum and maximum values of the drag, the 
+%   kind of cm_responses to use or the the optscal.
+%   
+%   Usage:
+%       md=parametercontroldrag(md,varargin)
+%
+%   Example:
+%      md=parametercontroldrag(md)
+%      md=parametercontroldrag(md,'nsteps',20,'cm_responses',0)
+%      md=parametercontroldrag(md,'cm_min',1,'cm_max',150,'cm_jump',0.99,'maxiter',20)
+%      md=parametercontroldrag(md,eps_cm',10^-4,'optscal',[10^7 10^8])
+%
+%   See also PARAMETERCONTROLB
+
+%process options
+options=pairoptions(varargin{:});
+
+%control type
+md.inversion.control_parameters={'FrictionCoefficient'};
+
+%weights
+weights=getfieldvalue(options,'weights',ones(md.mesh.numberofvertices,1));
+if (length(weights)~=md.mesh.numberofvertices)
+	md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+else
+	md.inversion.cost_functions_coefficients=weights;
+end
+
+%nsteps
+nsteps=getfieldvalue(options,'nsteps',100);
+if (length(nsteps)~=1 | nsteps<=0 | floor(nsteps)~=nsteps)
+	md.inversion.nsteps=100;
+else
+	md.inversion.nsteps=nsteps;
+end
+
+%cm_min
+cm_min=getfieldvalue(options,'cm_min',1*ones(md.mesh.numberofvertices,1));
+if (length(cm_min)==1)
+	md.inversion.min_parameters=cm_min*ones(md.mesh.numberofvertices,1);
+elseif (length(cm_min)==md.mesh.numberofvertices)
+	md.inversion.min_parameters=cm_min;
+else
+	md.inversion.min_parameters=cm_min;
+end
+
+%cm_max
+cm_max=getfieldvalue(options,'cm_max',250*ones(md.mesh.numberofvertices,1));
+if (length(cm_max)==1)
+	md.inversion.max_parameters=cm_max*ones(md.mesh.numberofvertices,1);
+elseif (length(cm_max)==md.mesh.numberofvertices)
+	md.inversion.max_parameters=cm_max;
+else
+	md.inversion.max_parameters=cm_max;
+end
+
+%eps_cm
+eps_cm=getfieldvalue(options,'eps_cm',NaN);
+if (length(eps_cm)~=1 | eps_cm<0 )
+	md.inversion.cost_function_threshold=NaN;
+else
+	md.inversion.cost_function_threshold=eps_cm;
+end
+
+%maxiter
+maxiter=getfieldvalue(options,'maxiter',10*ones(md.inversion.nsteps,1));
+if (any(maxiter<0) | any(floor(maxiter)~=maxiter))
+	md.inversion.maxiter_per_step=10*ones(md.inversion.nsteps,1);
+else
+	md.inversion.maxiter_per_step=repmat(maxiter(:),md.inversion.nsteps,1);
+	md.inversion.maxiter_per_step(md.inversion.nsteps+1:end)=[];
+end
+
+%cm_jump
+cm_jump=getfieldvalue(options,'cm_jump',0.8*ones(md.inversion.nsteps,1));
+if ~isreal(cm_jump)
+	md.inversion.step_threshold=0.8*ones(md.inversion.nsteps,1);
+else
+	md.inversion.step_threshold=repmat(cm_jump(:),md.inversion.nsteps,1);
+	md.inversion.step_threshold(md.inversion.nsteps+1:end)=[];
+end
+
+%cm_responses
+found=0;
+if exist(options,'cm_responses'),
+	cm_responses=getfieldvalue(options,'cm_responses');
+	if ~any(~ismember(cm_responses,[101 105]))
+		md.inversion.cost_functions=repmat(cm_responses(:),md.inversion.nsteps,1);
+		md.inversion.cost_functions(md.inversion.nsteps+1:end)=[];
+		found=1;
+	end
+end
+if ~found
+	third=ceil(md.inversion.nsteps/3);
+	md.inversion.cost_functions=[...
+		103*ones(third,1);...
+		101*ones(third,1);...
+		repmat([101;101;103;101],third,1)...
+		];
+	md.inversion.cost_functions(md.inversion.nsteps+1:end)=[];
+end
+
+%optscal
+found=0;
+if exist(options,'optscal'),
+	optscal=getfieldvalue(options,'optscal');
+	if ~any(optscal<0),
+		md.inversion.gradient_scaling=repmat(optscal(:),md.inversion.nsteps,1);
+		md.inversion.gradient_scaling(md.inversion.nsteps+1:end)=[];
+		found=1;
+	end
+end
+if ~found
+	third=ceil(md.inversion.nsteps/3);
+	md.inversion.gradient_scaling=[50*ones(3,1);15*ones(third-3,1);10*ones(third,1);repmat([10;10;20;10],third,1)];
+	md.inversion.gradient_scaling(md.inversion.nsteps+1:end)=[];
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/parametercontroldrag.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/parametercontroldrag.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/parametercontroldrag.py	(revision 21239)
@@ -0,0 +1,118 @@
+def parametercontroldrag(md,*args):
+	"""
+	PARAMETERCONTROLDRAG - parameterization for control method on drag
+
+	It is possible to specify the number of steps, values for the
+	minimum and maximum values of the drag, the 
+	kind of cm_responses to use or the the optscal.
+
+	Usage:
+	   md=parametercontroldrag(md,varargin)
+
+	Example:
+	  md=parametercontroldrag(md)
+	  md=parametercontroldrag(md,'nsteps',20,'cm_responses',0)
+	  md=parametercontroldrag(md,'cm_min',1,'cm_max',150,'cm_jump',0.99,'maxiter',20)
+	  md=parametercontroldrag(md,eps_cm',10^-4,'optscal',[10^7 10^8])
+
+	See also PARAMETERCONTROLB
+	"""
+
+	#process options
+	options=pairoptions(*args)
+
+	#control type
+	md.inversion.control_parameters='FrictionCoefficient'
+
+	#weights
+	weights=options.getfieldvalue('weights',npy.ones(md.mesh.numberofvertices))
+	if npy.size(weights)!=md.mesh.numberofvertices:
+		md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices)
+	else:
+		md.inversion.cost_functions_coefficients=weights
+
+	#nsteps
+	nsteps=options.getfieldvalue('nsteps',100);
+	if (npy.size(nsteps)!=1) | (nsteps<=0) | (floor(nsteps)!=nsteps):
+		md.inversion.nsteps=100
+	else:
+		md.inversion.nsteps=nsteps
+
+	#cm_min
+	cm_min=options.getfieldvalue('cm_min',ones(md.mesh.numberofvertices))
+	if (npy.size(cm_min)==1):
+		md.inversion.min_parameters=cm_min*ones(md.mesh.numberofvertices)
+	elif (npy.size(cm_min)==md.mesh.numberofvertices):
+		md.inversion.min_parameters=cm_min
+	else:
+		md.inversion.min_parameters=cm_min;
+
+	#cm_max
+	cm_max=options.getfieldvalue('cm_max',250*ones(md.mesh.numberofvertices))
+	if (npy.size(cm_max)==1):
+		md.inversion.max_parameters=cm_max*ones(md.mesh.numberofvertices)
+	elif (npy.size(cm_max)==md.mesh.numberofvertices):
+		md.inversion.max_parameters=cm_max
+	else:
+		md.inversion.max_parameters=cm_max
+
+	#eps_cm
+	eps_cm=optoins.getfieldvalue('eps_cm',float('nan'))
+	if (npy.size(eps_cm)~=1 | eps_cm<0 ):
+		md.inversion.cost_function_threshold=float('nan')
+	else:
+		md.inversion.cost_function_threshold=eps_cm
+
+	#maxiter
+	maxiter=options.getfieldvalue('maxiter',10*ones(md.inversion.nsteps))
+	if (npy.any(maxiter<0) | npy.any(floor(maxiter)~=maxiter)):
+		md.inversion.maxiter_per_step=10*ones(md.inversion.nsteps)
+	else:
+		raise RuntimeError("not implemented yet, see below matlab lines")
+		#md.inversion.maxiter_per_step=repmat(maxiter(:),md.inversion.nsteps,1);
+		#md.inversion.maxiter_per_step(md.inversion.nsteps+1:end)=[];
+
+	#cm_jump
+	cm_jump=options.getfieldvalue('cm_jump',0.8*ones(md.inversion.nsteps))
+	if !npy.isreal(cm_jump):
+		md.inversion.step_threshold=0.8*ones(md.inversion.nsteps)
+	else:
+		raise RuntimeError("not implemented yet, see below matlab lines")
+		#md.inversion.step_threshold=repmat(cm_jump(:),md.inversion.nsteps,1);
+		#md.inversion.step_threshold(md.inversion.nsteps+1:end)=[];
+
+	#cm_responses
+	found=0;
+	if options.exist('cm_responses'):
+		cm_responses=options.getfieldvalue('cm_responses')
+		if ~any(~ismember(cm_responses,[101 105])):
+			md.inversion.cost_functions=repmat(cm_responses(:),md.inversion.nsteps,1);
+			md.inversion.cost_functions(md.inversion.nsteps+1:end)=[];
+			found=1;
+	if ~found
+		third=ceil(md.inversion.nsteps/3);
+		md.inversion.cost_functions=[...
+			103*ones(third,1);...
+			101*ones(third,1);...
+			repmat([101;101;103;101],third,1)...
+			];
+		md.inversion.cost_functions(md.inversion.nsteps+1:end)=[];
+	end
+
+	%optscal
+	found=0;
+	if exist(options,'optscal'),
+		optscal=getfieldvalue(options,'optscal');
+		if ~any(optscal<0),
+			md.inversion.gradient_scaling=repmat(optscal(:),md.inversion.nsteps,1);
+			md.inversion.gradient_scaling(md.inversion.nsteps+1:end)=[];
+			found=1;
+		end
+	end
+	if ~found
+		third=ceil(md.inversion.nsteps/3);
+		md.inversion.gradient_scaling=[50*ones(3,1);15*ones(third-3,1);10*ones(third,1);repmat([10;10;20;10],third,1)];
+		md.inversion.gradient_scaling(md.inversion.nsteps+1:end)=[];
+	end
+
+	return md
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/supportedcontrols.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/supportedcontrols.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/supportedcontrols.js	(revision 21239)
@@ -0,0 +1,16 @@
+function supportedcontrols() {
+    var list = [
+        'BalancethicknessThickeningRate',
+        'FrictionCoefficient',
+        'FrictionAs',
+        'MaterialsRheologyBbar',
+        'DamageDbar',
+        'Vx',
+        'Vy',
+        'Thickness',
+        'BalancethicknessOmega',
+        'BalancethicknessApparentMassbalance',
+        'MaterialsRheologyB'];
+
+    return list;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/supportedcontrols.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/supportedcontrols.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/supportedcontrols.m	(revision 21239)
@@ -0,0 +1,14 @@
+function list = supportedcontrols(),
+
+	list = {...
+		'BalancethicknessThickeningRate',...
+		'FrictionCoefficient',...
+		'FrictionAs',...
+		'MaterialsRheologyBbar',...
+		'DamageDbar',...
+		'Vx',...
+		'Vy',...
+		'Thickness',...
+		'BalancethicknessOmega',...
+		'BalancethicknessApparentMassbalance',...
+		'MaterialsRheologyB'};
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/supportedcontrols.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/supportedcontrols.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/supportedcontrols.py	(revision 21239)
@@ -0,0 +1,2 @@
+def supportedcontrols():
+	return ['BalancethicknessThickeningRate','FrictionCoefficient','FrictionAs','MaterialsRheologyBbar','DamageDbar','Vx','Vy']
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/supportedcostfunctions.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/supportedcostfunctions.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/supportedcostfunctions.js	(revision 21239)
@@ -0,0 +1,10 @@
+function supportedcostfunctions() {
+    function range(start, count) {
+      return Array.apply(0, Array(count))
+        .map(function (element, index) { 
+          return index + start;  
+      });
+    }
+    var list = range(101,5).concat(range(201,1).concat(range(501,7)).concat(range(510,1)).concat(range(601,4)));
+    return list;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/supportedcostfunctions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/supportedcostfunctions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/supportedcostfunctions.m	(revision 21239)
@@ -0,0 +1,3 @@
+function list = supportedcostfunctions(),
+
+	list = [101:105 201 501:507 510 601:604];
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/supportedcostfunctions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/supportedcostfunctions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/supportedcostfunctions.py	(revision 21239)
@@ -0,0 +1,2 @@
+def supportedcostfunctions():
+	return [101,102,103,104,105,201,501,502,503,504,505]
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/velocitymisfit.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/velocitymisfit.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/inversions/velocitymisfit.m	(revision 21239)
@@ -0,0 +1,39 @@
+function J=misfit(md)
+%MISFIT - compute misfit
+%
+%   Usage:
+%      J=misfit(md)
+%
+%   Example:
+%      J=misfit(md)
+%
+
+if dimension(md.mesh)==2,
+	elements=md.mesh.elements;
+	x=md.mesh.x;
+	y=md.mesh.y;
+	%vx=md.initialization.vx;
+	%vy=md.initialization.vy;
+	vx=md.results.StressbalanceSolution.Vx;
+	vy=md.results.StressbalanceSolution.Vy;
+	vx_obs=md.inversion.vx_obs;
+	vy_obs=md.inversion.vy_obs;
+else
+	elements=md.mesh.elements2d;
+	x=md.mesh.x2d;
+	y=md.mesh.y2d;
+	vx=project2d(md,md.initialization.vx,md.mesh.numberoflayers);
+	vy=project2d(md,md.initialization.vy,md.mesh.numberoflayers);
+	vx_obs=project2d(md,md.inversion.vx_obs,md.mesh.numberoflayers);
+	vy_obs=project2d(md,md.inversion.vy_obs,md.mesh.numberoflayers);
+end
+
+%compute areas;
+areas=GetAreas(elements,x,y);
+
+%compute delta v on elements
+deltav=1/2*(   (vx-vx_obs).^2+(vy-vy_obs).^2)/md.constants.yts^2;
+deltav_elem=deltav(elements)*[1;1;1]/3;
+
+%compute misfit
+J=sum(deltav_elem.*areas);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/download.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/download.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/download.js	(revision 21239)
@@ -0,0 +1,31 @@
+function download() {
+	//DOWNLOAD - save model/variable data to file
+	//
+	//   Usage:
+	//      download=download('id','slr-download');
+	//      download=download('id','slr-download','data',md.geometry.thickness,'data',md.results.Stressbalance.Vel);
+
+	//Convert arguments to options
+	var args = Array.prototype.slice.call(arguments);
+	var options = new pairoptions(args.slice());
+	
+	//Recover option values:
+	var id = options.getfieldvalue('id','');
+	
+	document.getElementById(id).addEventListener('click', function() {
+		var data = {'elements':md.mesh.elements,'x':md.mesh.x,'y':md.mesh.y,'z':md.mesh.z};
+		for (var i=2; i < args.length; i+=2) {
+			try { 
+				data[args[i]] = args[i+1];
+			}
+			catch (e) { 
+				console.log(e); 
+			}
+		}
+		string = JSONfn.stringify(data);
+		
+		var url='data:text/json:charset=utf8,' + encodeURIComponent(string);
+		window.open(url, '_blank');
+		window.focus();
+	});
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/fileptr.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/fileptr.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/fileptr.js	(revision 21239)
@@ -0,0 +1,151 @@
+//FILEPTR class definition
+////
+//// Usage: 
+//// var fid = new fileptr(); 
+//
+//
+
+function fileptr() {
+	//properties
+	this.increment=NaN;
+	this.buffer =NaN;
+	this.view =NaN;
+	this.ptr =NaN;
+	this.buffersize =NaN;
+	this.mode ='';
+	this.options = new pairoptions(Array.prototype.slice.call(arguments));
+	
+	//methods
+		this.disp = function () { //{{{
+			console.log(sprintf("   fileptr:")); 
+
+			console.log(sprintf("       buffer: ArrayBuffer{ byteLength: %i }\n",this.buffer.byteLength));
+			console.log(sprintf("       ptr: %i\n",this.ptr));
+			console.log(sprintf("       increment: %i\n",this.increment));
+			console.log(sprintf("       mode: %s\n",this.mode));
+
+		} //}}}
+		this.setdefaultparameters = function (options) { //{{{
+	
+			this.mode=options.getfieldvalue('mode');
+			this.ptr=0;
+			this.increment=0;
+			this.buffersize=0;
+			if (this.mode=='w'){
+				this.increment=options.getfieldvalue('increment',8000000); //80000 bytes,  10000 doubles.
+				this.buffer=new ArrayBuffer(this.increment);
+				this.view=new DataView(this.buffer);
+			}
+			else if(this.mode == 'r'){
+				
+				/*recover buffer and its size: */
+				var bufferin= options.getfieldvalue('buffer');
+				this.buffersize= options.getfieldvalue('buffersize');
+				
+				/*crete a typed array buffer: */
+				this.buffer=new ArrayBuffer(this.buffersize);
+				this.view=new DataView(this.buffer); 
+				for(var i=0;i<this.buffersize;i++) this.view.setUint8(i,bufferin[i]);
+			}
+
+		} //}}}
+		this.fwrite = function (value,format) { //{{{
+
+			
+			if(format == 'int'){
+				if(this.ptr+4>=this.buffer.byteLength)this.resize();
+				this.view.setUint32(this.ptr,value,true); this.ptr+=4;
+			}
+			else if(format == 'char'){
+				if(this.ptr+value.length>=this.buffer.byteLength)this.resize();
+				for(var i=0;i<value.length;i++){
+					this.view.setUint8(this.ptr,value.charCodeAt(i),true); 
+					this.ptr+=1;
+				}
+			}
+			else if(format == 'double'){
+				if(this.ptr+8>=this.buffer.byteLength)this.resize();
+				if (!IsArray(value)){
+					this.view.setFloat64(this.ptr,value,true);
+					this.ptr+=8;
+				}
+				else{
+					if (!IsArray(value[0])){
+						if(this.ptr+value.length*8>=this.buffer.byteLength){
+							this.resize();
+							if(this.ptr+value.length*8>=this.buffer.byteLength)throw Error('fileptr.fwrite error: need to increase increment size!');
+						}
+						for(var i=0;i<value.length;i++){
+							this.view.setFloat64(this.ptr,value[i],true);
+							this.ptr+=8;
+						}
+					}
+					else{
+						if(this.ptr+value.length*value[0].length*8>=this.buffer.byteLength)this.resize();
+						for(var i=0;i<value.length;i++){
+							for(var j=0;j<value[0].length;j++){
+								this.view.setFloat64(this.ptr,value[i][j],true);
+								this.ptr+=8;
+							}
+						}
+					}
+				}
+			}
+			else throw Error('fileptr.fwrite error message: wrong type of format');
+		} //}}}
+		this.fread = function (size,format) { //{{{
+			
+			var value;
+
+			if(this.ptr==this.buffersize)return -1;
+			if(format == 'int'){
+				if(size==1){
+					value=this.view.getInt32(this.ptr,true); 
+					this.ptr+=4;
+				}
+				else{
+					value = new Int32Array(size);
+					for(var i=0;i<size;i++){
+						value[i]=this.view.getInt32(this.ptr,true); 
+						this.ptr+=4;
+					}
+				}
+			}
+			else if(format == 'char'){
+				value = ''; 
+				for(var i=0;i<(size-1);i++){
+					value+= String.fromCharCode(this.view.getUint8(this.ptr,true));
+					this.ptr+=1;
+				}
+				this.ptr+=1; //pass over the '\0';
+
+			}
+			else if(format == 'double'){
+				if(size==1){
+					value=this.view.getFloat64(this.ptr,true);
+					this.ptr+=8;
+				}
+				else{ 
+					value = new Float64Array(size);
+					for(var i=0;i<size;i++){
+						value[i]=this.view.getFloat64(this.ptr,true);
+						this.ptr+=8;
+					}
+				}
+			}
+			else throw Error('fileptr.fwrite error message: wrong type of format');
+			
+			return value;
+		} //}}}
+		this.rawbuffer = function () { //{{{
+			return this.buffer.slice(0,this.ptr);
+		} //}}}
+		this.resize = function () { //{{{
+			var  newbuffer = new ArrayBuffer(this.buffer.byteLength+this.increment);
+			new Uint8Array(newbuffer).set(new Uint8Array(this.buffer));
+			this.buffer=newbuffer;
+			this.view=new DataView(this.buffer);
+		} //}}}
+	//set defaults
+	this.setdefaultparameters(this.options);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/getShapeTypeInfo.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/getShapeTypeInfo.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/getShapeTypeInfo.m	(revision 21239)
@@ -0,0 +1,181 @@
+function result = getShapeTypeInfo(shapeTypeCode,requestOrQuery)
+
+% CAUTION:  This file contains experimental code that has had only
+%           minimal, informal testing.
+%
+%GETSHAPETYPEINFO   Get information about a shape type.
+%   Returns a single value, based on the second argument:
+%     'TypeString'             -- Return a string
+%     'IsValid'                -- Return a scalar logical
+%     'IsSupported'            -- Return a scalar logical
+%     'BoundingBoxSubscripts'  -- Return a 1-by-n double array
+%     'ShapeRecordReadFcn'     -- Return a function handle
+%     'ShapeDataFieldNames'    -- Return a cell array of string.
+
+% Copyright 1996-2010 The MathWorks, Inc.
+% $Revision$  $Date$
+
+lutFields = { 'TypeCode',...
+              'TypeString',...
+              'IsValid',...
+              'IsSupported',...
+              'BoundingBoxSubscripts',...
+              'ShapeRecordReadFcn',...
+              'ShapeDataFieldNames' };
+
+% Three kinds of bounding box subscripts
+bbs2D = [1 2; 3 4];
+bbsZ  = [1 2 5; 3 4 6]; % Ignore M for now, otherwise use [1 2 5 7; 3 4 6 8]
+bbsM  = [1 2 7; 3 4 8];
+
+typeLUT = {...
+   -1, 'Not Valid',   false, false, [],    [], {''};... 
+    0, 'Null Shape',  true,  true,  [],    [], {''};... 
+    1, 'Point',       true,  true,  bbs2D, @readPoint,      {'Geometry','X','Y'};... 
+    3, 'PolyLine',    true,  true,  bbs2D, @readPolyLine,   {'Geometry','BoundingBox','X','Y'};...
+    5, 'Polygon',     true,  true,  bbs2D, @readPolygon,    {'Geometry','BoundingBox','X','Y'};...
+    8, 'MultiPoint',  true,  true,  bbs2D, @readMultiPoint, {'Geometry','BoundingBox','X','Y'};...
+   11, 'PointZ',      true,  false, bbsZ,  [], {''};...
+   13, 'PolyLineZ',   true,  true,  bbsZ,  @readPolyLineZ,  {'Geometry','BoundingBox','X','Y','Z'};... 
+   15, 'PolygonZ',    true,  true,  bbsZ,  @readPolygonZ,   {'Geometry','BoundingBox','X','Y','Z'};... 
+   18, 'MultiPointZ', true,  false, bbsZ,  [], {''};... 
+   21, 'PointM',      true,  false, bbsM,  [], {''};... 
+   23, 'PolyLineM',   true,  false, bbsM,  [], {''};... 
+   25, 'PolygonM',    true,  false, bbsM,  [], {''};... 
+   28, 'MultiPointM', true,  false, bbsM,  [], {''};... 
+   31, 'MultiPatch',  true,  false, bbsZ,  [], {''};... 
+  };
+notValidRow = 1;
+types = [typeLUT{:,1}];
+
+% MAINTENANCE NOTE: To add support for additional types, add more rows
+% to the type look up table (typeLUT), but be sure to keep 'Not Valid'
+% in the first row.
+
+row = find(shapeTypeCode == types);
+if length(row) ~= 1
+    row = notValidRow;
+end
+
+col = strmatch(lower(requestOrQuery),lower(lutFields));
+if length(col) ~= 1;
+    eid = sprintf('%s:%s:internalProblem',getcomp,mfilename);
+    error(eid,'Internal error: Invalid second argument in private function.');
+end
+
+result = typeLUT{row,col};
+
+%---------------------------------------------------------------------------
+function shp = readPoint(fid)
+
+point = fread(fid,[2 1],'double','ieee-le');
+shp = {'Point', point(1), point(2)};
+
+%---------------------------------------------------------------------------
+function shp = readMultiPoint(fid)
+
+boundingBox    = fread(fid,4,'double','ieee-le');
+numPoints      = fread(fid,1,'uint32','ieee-le');
+points         = fread(fid,[2 numPoints],'double','ieee-le')';
+shp = {'MultiPoint', boundingBox([1 2; 3 4]), points(:,1)', points(:,2)'};
+
+%---------------------------------------------------------------------------
+function shp = readPolyLine(fid)
+
+boundingBox    = fread(fid,4,'double','ieee-le');
+numPartsPoints = fread(fid,2,'uint32','ieee-le');
+partOffsets    = fread(fid,[1 numPartsPoints(1)],'uint32','ieee-le');
+points         = fread(fid,[2 numPartsPoints(2)],'double','ieee-le')';
+[x,y] = organizeParts2D(partOffsets,points);
+shp = {'Line', boundingBox([1 2; 3 4]), x, y};
+
+%---------------------------------------------------------------------------
+function shp = readPolygon(fid)
+
+boundingBox    = fread(fid,4,'double','ieee-le');
+numPartsPoints = fread(fid,2,'uint32','ieee-le');
+partOffsets    = fread(fid,[1 numPartsPoints(1)],'uint32','ieee-le');
+points         = fread(fid,[2 numPartsPoints(2)],'double','ieee-le')';
+[x,y] = organizeParts2D(partOffsets,points);
+shp = {'Polygon', boundingBox([1 2; 3 4]), x, y};
+
+%---------------------------------------------------------------------------
+function [x,y] = organizeParts2D(partOffsets,points)
+
+numParts  = size(partOffsets,2);
+numPoints = size(points,1);
+% Initialize x and y to be row vectors of NaN
+% with length numPoints * numParts
+x = NaN + zeros(1, numPoints + numParts);
+y = x;
+if numParts == 1
+    x(1, 1:numPoints) = points(:,1);
+    y(1, 1:numPoints) = points(:,2);
+else
+    partStart = 1 + partOffsets;
+    partEnd   = [partOffsets(2:end) numPoints];
+    for k = 1:numParts
+        xyStart = partStart(k) + (k - 1);
+        xyEnd   = partEnd(k)   + (k - 1);
+        x(1, xyStart:xyEnd) = points(partStart(k):partEnd(k), 1);
+        y(1, xyStart:xyEnd) = points(partStart(k):partEnd(k), 2);
+    end
+end
+
+%---------------------------------------------------------------------------
+function shp = readPolyLineZ(fid)
+
+boundingBox    = fread(fid,4,'double','ieee-le');
+numPartsPoints = fread(fid,2,'uint32','ieee-le');
+partOffsets    = fread(fid,[1 numPartsPoints(1)],'uint32','ieee-le');
+points         = fread(fid,[2 numPartsPoints(2)],'double','ieee-le')';
+zRange         = fread(fid,2,'double','ieee-le'); %#ok
+zArray         = fread(fid, numPartsPoints(2), 'double', 'ieee-le');
+[x,y,z] = organizeParts3D(partOffsets,points,zArray);
+% shp = {'Line', [boundingBox([1 2; 3 4]) zRange], x, y, z};
+% Note:
+%   Keep bounding box 2-D for now for compatibility with
+%   mapshow and geoshow.
+shp = {'Line', boundingBox([1 2; 3 4]), x, y, z};
+
+%---------------------------------------------------------------------------
+function shp = readPolygonZ(fid)
+
+boundingBox    = fread(fid,4,'double','ieee-le');
+numPartsPoints = fread(fid,2,'uint32','ieee-le');
+partOffsets    = fread(fid,[1 numPartsPoints(1)],'uint32','ieee-le');
+points         = fread(fid,[2 numPartsPoints(2)],'double','ieee-le')';
+zRange         = fread(fid,2,'double','ieee-le'); %#ok
+zArray         = fread(fid, numPartsPoints(2), 'double', 'ieee-le');
+[x,y,z] = organizeParts3D(partOffsets,points,zArray);
+% shp = {'Polygon', [boundingBox([1 2; 3 4]) zRange], x, y, z};
+% Note:
+%   Keep bounding box 2-D for now for compatibility with
+%   mapshow and geoshow.
+shp = {'Polygon', boundingBox([1 2; 3 4]), x, y, z};
+
+%---------------------------------------------------------------------------
+function [x,y,z] = organizeParts3D(partOffsets,points,zArray)
+
+numParts  = size(partOffsets,2);
+numPoints = size(points,1);
+% Initialize x and y to be row vectors of NaN
+% with length numPoints * numParts
+x = NaN + zeros(1, numPoints + numParts);
+y = x;
+z = x;
+if numParts == 1
+    x(1, 1:numPoints) = points(:,1);
+    y(1, 1:numPoints) = points(:,2);
+    z(1, 1:numPoints) = zArray(:,1);
+else
+    partStart = 1 + partOffsets;
+    partEnd   = [partOffsets(2:end) numPoints];
+    for k = 1:numParts
+        xyzStart = partStart(k) + (k - 1);
+        xyzEnd   = partEnd(k)   + (k - 1);
+        x(1, xyzStart:xyzEnd) = points(partStart(k):partEnd(k), 1);
+        y(1, xyzStart:xyzEnd) = points(partStart(k):partEnd(k), 2);
+        z(1, xyzStart:xyzEnd) = zArray(partStart(k):partEnd(k), 1);
+    end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/loadmodel.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/loadmodel.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/loadmodel.js	(revision 21239)
@@ -0,0 +1,6 @@
+function loadmodel(modelstring) {
+
+	var md=JSONfn.parse(decodeURI(modelstring));
+	md.fix();
+	return md;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/loadmodel.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/loadmodel.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/loadmodel.m	(revision 21239)
@@ -0,0 +1,46 @@
+function varargout=loadmodel(path)
+%LOADMODEL - load a model using built-in load module
+%
+%   check that model prototype has not changed. if so, adapt to new model prototype.
+%
+%   Usage:
+%      md=loadmodel(path)
+%      loadmodel path
+
+%check nargout
+if nargout>1,
+	error('loadmodel usage error: md=loadmodel(path)');
+end
+
+%check existence
+if exist(path,'file')
+	%do nothing
+elseif exist([path '.mat'],'file')
+	%add extension
+	path = [path '.mat'];
+else
+	error(['loadmodel error message: file ' path ' does not exist']);
+end
+
+try,
+	%recover model on file and name it md
+	warning off MATLAB:unknownElementsNowStruc;
+	warning off MATLAB:load:classNotFound
+	struc=load(path,'-mat');
+	warning on MATLAB:unknownElementsNowStruc;
+	warning on MATLAB:load:classNotFound
+
+	name=char(fieldnames(struc));
+	if size(name,1)>1,
+		error(['loadmodel error message: file ' path ' contains several variables. Only one model should be present.']); 
+	end
+	md=struc.(name);
+	if nargout,
+		varargout{1}=md;
+	else
+		assignin('caller',name,md);
+	end
+catch me
+	disp(getReport(me))
+	error(['could not load model ' path]);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/loadmodel.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/loadmodel.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/loadmodel.py	(revision 21239)
@@ -0,0 +1,34 @@
+from loadvars import loadvars
+from whichdb import whichdb
+from netCDF4 import Dataset
+
+def loadmodel(path):
+	"""
+	LOADMODEL - load a model using built-in load module
+
+	   check that model prototype has not changed. if so, adapt to new model prototype.
+	
+	   Usage:
+	      md=loadmodel(path)
+	"""
+
+	#check existence of database (independent of file extension!)
+	if whichdb(path):
+		#do nothing
+		pass
+	else:
+		try:
+			NCFile=Dataset(path,mode='r')
+			NCFile.close()
+			pass
+		except RuntimeError:
+			raise IOError("loadmodel error message: file '%s' does not exist" % path)
+		#	try:
+	#recover model on file and name it md
+	struc=loadvars(path)
+	name=[key for key in struc.iterkeys()]
+	if len(name)>1:
+		raise IOError("loadmodel error message: file '%s' contains several variables. Only one model should be present." % path)
+
+	md=struc[name[0]]
+	return md
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/loadmodellist.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/loadmodellist.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/loadmodellist.m	(revision 21239)
@@ -0,0 +1,50 @@
+function varargout=loadmodellist(path)
+%LOADMODELLIST- load a model using built-in load module
+%
+%   check that modellist prototype has not changed. if so, adapt to new modellist prototype.
+%
+%   Usage:
+%      mds=loadmodellist(path)
+%      loadmodellist path
+
+%check nargout
+if nargout>1,
+	error('loadmodellist usage error: mds=loadmodellist(path)');
+end
+%check existence
+if ~exist(path)
+	error(['loadmodellist error message: file ' path ' does not exist']);
+end
+
+%check that the file is readable
+[stat,mess]=fileattrib(path);
+if( stat==0 | mess.UserRead~=1),
+	error(['loadmodellist error message: file ' path ' is not readable (permission dinied).']);
+end
+
+%check number of variables
+if length(whos('-file',path))>1,
+	error(['loadmodellist error message: file ' path ' contains several variables. Only one model should be present.']);
+end
+
+try,
+	struc=load(path,'-mat');
+
+	%get name of model variable
+	fieldname=char(fieldnames(struc));
+	mds=eval(['struc.' fieldname]);
+	if ~strcmpi(class(mds),'model'),
+		mds2=modellist;
+		mds2=structtomodel(mds2,mds);
+		mds=mds2;
+		clear mds2;
+	end
+	if nargout,
+		varargout{1}=mds;
+	else
+		assignin('caller',fieldname,mds);
+	end
+catch me
+	disp(getReport(me))
+	error(['could not load model ' path]);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/loadvars.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/loadvars.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/loadvars.py	(revision 21239)
@@ -0,0 +1,198 @@
+import shelve
+import os.path
+import numpy as np
+from netCDF4 import Dataset
+from netCDF4 import chartostring
+from os import path
+from whichdb import whichdb
+from model import *
+
+def loadvars(*args):
+	"""
+	LOADVARS - function to load variables to a file.
+
+	This function loads one or more variables from a file.  The names of the variables
+	must be supplied.  If more than one variable is specified, it may be done with
+	a list of names or a dictionary of name as keys.  The output type will correspond
+	to the input type.  All the variables in the file may be loaded by specifying only
+	the file name.
+
+	Usage:
+	   a=loadvars('shelve.dat','a')
+	   [a,b]=loadvars('shelve.dat',['a','b'])
+	   nvdict=loadvars('shelve.dat',{'a':None,'b':None})
+	   nvdict=loadvars('shelve.dat')
+
+	"""
+
+	filename=''
+	nvdict={}
+
+	if len(args) >= 1 and isinstance(args[0],(str,unicode)):
+		filename=args[0]
+		if not filename:
+			filename='/tmp/shelve.dat'
+
+	else:
+		raise TypeError("Missing file name.")
+
+	if   len(args) >= 2 and isinstance(args[1],(str,unicode)):    # (filename,name)
+		for name in args[1:]:
+			nvdict[name]=None
+
+	elif len(args) == 2 and isinstance(args[1],list):    # (filename,[names])
+		for name in args[1]:
+			nvdict[name]=None
+
+	elif len(args) == 2 and isinstance(args[1],dict):    # (filename,{names:values})
+		nvdict=args[1]
+
+	elif len(args) == 1:    #  (filename)
+		pass
+
+	else:
+		raise TypeError("Unrecognized input arguments.")
+
+	if whichdb(filename):
+		print "Loading variables from file '%s'." % filename
+		
+		my_shelf = shelve.open(filename,'r') # 'r' for read-only
+		if nvdict:
+			for name in nvdict.iterkeys():
+				try:
+					nvdict[name] = my_shelf[name]
+					print "Variable '%s' loaded." % name
+				except KeyError:
+					value = None
+					print "Variable '%s' not found." % name
+
+		else:
+			for name in my_shelf.iterkeys():
+				nvdict[name] = my_shelf[name]
+				print "Variable '%s' loaded." % name
+
+		my_shelf.close()
+
+	else:
+		try:
+			NCFile=Dataset(filename,mode='r')
+			NCFile.close()
+			classtype,classtree=netCDFread(filename)
+			nvdict['md']=model()
+			module=map(__import__,dict.values(classtype))
+			for i,mod in enumerate(dict.keys(classtype)):
+#				print('treating md.{}'.format(mod))
+				if np.size(classtree[mod])>1:
+					if classtree[mod][0]=='results':
+						#treating results (Dimension4 is time)
+						resdim=len(NCFile.dimensions['Dimension4'])
+						curclass=NCFile.groups[classtree[mod][0]].groups[classtree[mod][1]]
+						nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]] = [getattr(module[i],classtype[mod])()]
+						if resdim>1:
+							for t in range(1,resdim):
+								nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]].append(getattr(module[i],classtype[mod])())
+						Tree=nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]][:]
+					else:
+						curclass=NCFile.groups[classtree[mod][0]].groups[classtree[mod][1]]
+						nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]] = getattr(module[i],classtype[mod])()
+						Tree=nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]]
+				else:
+					curclass=NCFile.groups[classtree[mod][0]]
+					nvdict['md'].__dict__[mod] = getattr(module[i],classtype[mod])()
+					Tree=nvdict['md'].__dict__[classtree[mod][0]]
+				for var in curclass.variables:
+					#print('    treating {}'.format(var))
+					varval=curclass.variables[str(var)]
+					vardim=varval.ndim
+					try:
+						val_type=str(varval.dtype)
+					except AttributeError:
+						val_type=type(varval)
+					if vardim==0:
+						try:
+							Tree.__dict__[str(var)]=varval.getValue()
+							if varval.getValue()=='True':
+								Tree.__dict__[str(var)]=True
+							elif varval.getValue()=='False':
+								Tree.__dict__[str(var)]=False
+						except IndexError:
+							Tree.__dict__[str(var)]=[]
+					elif vardim==1:
+						if varval.dtype==str:
+							if varval.shape==1:
+								Tree.__dict__[str(var)]=str(varval[0])
+							if 'True' in varval[:] or 'False' in varval[:]:
+								Tree.__dict__[str(var)]=np.asarray(varval[:],dtype=bool)
+						else:
+							if classtree[mod][0]=='results' and resdim>1:
+								for t in range(0,resdim):
+									Tree[t].__dict__[str(var)]=varval[t]
+							else:
+								Tree.__dict__[str(var)]=varval[:]
+					elif vardim==2:
+						#dealling with dict
+						if varval.dtype==str:
+							Tree.__dict__[str(var)]=dict(zip(varval[:,0], varval[:,1]))
+						else:
+							if classtree[mod][0]=='results' and resdim>1:
+								for t in range(0,resdim):
+									Tree[t].__dict__[str(var)]=varval[:,t]
+							else:
+								Tree.__dict__[str(var)]=varval[:,:]
+					elif vardim==3:
+						if classtree[mod][0]=='results' and resdim>1:
+							for t in range(0,resdim):
+								Tree[t].__dict__[str(var)]=varval[:,:,t]
+						else:
+							Tree.__dict__[str(var)]=varval[:,:,:]
+					else:
+						print 'table dimension greater than 3 not implemented yet'
+				for attr in curclass.ncattrs():
+					#print('    treating {}'.format(attr))
+					if classtree[mod][0]!='results' and attr!='classtype': #no attributes in results
+						Tree.__dict__[str(attr)]=str(curclass.getncattr(attr))
+						if curclass.getncattr(attr)=='True':
+							Tree.__dict__[str(attr)]=True
+						elif curclass.getncattr(attr)=='False':
+							Tree.__dict__[str(attr)]=False
+
+		except RuntimeError:
+			raise IOError("File '%s' not found." % filename)
+
+	if   len(args) >= 2 and isinstance(args[1],(str,unicode)):    # (value)
+		value=[nvdict[name] for name in args[1:]]
+		return value
+
+	elif len(args) == 2 and isinstance(args[1],list):    # ([values])
+		value=[nvdict[name] for name in args[1]]
+		return value
+
+	elif (len(args) == 2 and isinstance(args[1],dict)) or (len(args) == 1):    # ({names:values})
+		return nvdict
+
+
+def netCDFread(filename):
+	def walktree(data):
+		keys = data.groups.keys()
+		for key in keys:
+			yield [str(key)]
+			for children in walktree(data.groups[str(key)]):
+				child=[str(key)]
+				child.append(str(children[0]))
+				yield child
+	print ('Opening {} for reading '.format(filename))
+	NCData=Dataset(filename, 'r')
+	class_dict={}
+	class_tree={}
+	
+	for children in walktree(NCData):
+		classe=str(children[0])
+		if np.size(children)>1:
+			for name in children[1:]:
+				classe=classe+'.'+name
+			class_dict[classe]=str(getattr(NCData.groups[children[0]].groups[children[1]],'classtype'))
+		else:
+			class_dict[classe]=str(getattr(NCData.groups[classe],'classtype'))
+		class_tree[classe]=children
+
+	return class_dict,class_tree
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/saveAsFile.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/saveAsFile.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/saveAsFile.js	(revision 21239)
@@ -0,0 +1,6 @@
+function saveAsFile(content) {
+
+	var url='data:text/json:charset=utf8,' + encodeURIComponent(content);
+	window.open(url, '_blank');
+	window.focus();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/savemodel.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/savemodel.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/savemodel.js	(revision 21239)
@@ -0,0 +1,8 @@
+function savemodel(md) {
+
+	var string=encodeURI(JSONfn.stringify(md));
+
+	var url='data:text/json:charset=utf8,' + encodeURIComponent(string);
+	window.open(url, '_blank');
+	window.focus();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/savevars.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/savevars.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/savevars.py	(revision 21239)
@@ -0,0 +1,62 @@
+import shelve
+import os.path
+
+def savevars(*args):
+	"""
+	SAVEVARS - function to save variables to a file.
+
+	This function saves one or more variables to a file.  The names of the variables
+	must be supplied.  If more than one variable is specified, it may be done with
+	lists of names and values or a dictionary of name:value pairs.  All the variables
+	in the workspace may be saved by specifying the globals() dictionary, but this
+	may include a lot of extraneous data.
+
+	Usage:
+	   savevars('shelve.dat','a',a)
+	   savevars('shelve.dat',['a','b'],[a,b])
+	   savevars('shelve.dat',{'a':a,'b':b})
+	   savevars('shelve.dat',globals())
+
+	"""
+
+	filename=''
+	nvdict={}
+
+	if len(args) >= 1 and isinstance(args[0],(str,unicode)):
+		filename=args[0]
+		if not filename:
+			filename='/tmp/shelve.dat'
+
+	else:
+		raise TypeError("Missing file name.")
+
+	if   len(args) >= 3 and isinstance(args[1],(str,unicode)):    # (filename,name,value)
+		for i in xrange(1,len(args),2):
+			nvdict[args[i]]=args[i+1]
+
+	elif len(args) == 3 and isinstance(args[1],list) and isinstance(args[2],list):    # (filename,[names],[values])
+		for name,value in zip(args[1],args[2]):
+			nvdict[name]=value
+
+	elif len(args) == 2 and isinstance(args[1],dict):    # (filename,{names:values})
+		nvdict=args[1]
+
+	else:
+		raise TypeError("Unrecognized input arguments.")
+
+	if os.path.exists(filename):
+		print "Shelving variables to existing file '%s'." % filename
+	else:
+		print "Shelving variables to new file '%s'." % filename
+
+	my_shelf = shelve.open(filename,'c') # 'c' for create if not exist, else 'n' for new
+
+	for name,value in nvdict.iteritems():
+		try:
+			my_shelf[name] = value
+			print "Variable '%s' shelved." % name
+		except TypeError:
+			print "Variable '%s' not shelved." % name
+
+	my_shelf.close()
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/structtonc.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/structtonc.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/structtonc.m	(revision 21239)
@@ -0,0 +1,132 @@
+function [var_id,counter] = structtonc(ncid,fieldname,field,depth,var_id,counter,step);
+%STRUCTTONC- fill nc file with structure fields
+%
+%   WARNING: Do not use this function, this function is called
+%            by netcdf(model);
+%
+
+%update counter
+counter   = counter+1;
+
+%Check that field is not empty
+if isempty(field) | (isa(field,'struct') & numel(fields(field))==0),
+	if(step==1), disp(['skipping ' fieldname ' (empty)...']); end
+	return;
+end
+
+%Write field class
+[var_id,counter] = declareclass(ncid,[fieldname '_class'],class(field),depth,var_id,counter,step);
+
+%Double scalar
+if isa(field,'double') & numel(field)==1,
+	if step==1,
+		var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_DOUBLE',[]);
+	else
+		netcdf.putVar(ncid,var_id(counter),field);
+	end
+
+%Double vector
+elseif isa(field,'double') & size(field,2)==1,
+
+if step==1,
+		dim_id          = netcdf.defDim(ncid,[fieldname '_size1'],size(field,1));
+		var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_DOUBLE',dim_id);
+	else
+		netcdf.putVar(ncid,var_id(counter),field);
+	end
+
+%double matrix
+elseif isa(field,'double') & size(field,2)>1,
+	if step==1,
+		dim1_id         = netcdf.defDim(ncid,[fieldname '_size1'],size(field,1));
+		dim2_id         = netcdf.defDim(ncid,[fieldname '_size2'],size(field,2));
+		var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_DOUBLE',[dim2_id dim1_id]);
+	else
+		netcdf.putVar(ncid,var_id(counter),transpose(field));
+	end
+
+%string
+elseif isa(field,'char') 
+		if step==1,
+			dim_id          = netcdf.defDim(ncid,[fieldname '_size1'],numel(field));
+			var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_CHAR',dim_id);
+		else
+			netcdf.putVar(ncid,var_id(counter),field);
+		end
+
+%Boolean of size 1
+elseif isa(field,'logical') & numel(field)==1,
+	if step==1,
+		var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_BYTE',[]);
+	else
+		netcdf.putVar(ncid,var_id(counter),int8(field));
+	end
+
+%Structures
+elseif isa(field,'struct'),
+	sublength = numel(field);
+	subfields = fields(field);
+	allsubfields = '';
+	for i=1:length(subfields),
+		allsubfields=[allsubfields subfields{i}];
+		if i~=length(subfields), allsubfields=[allsubfields ' ']; end
+	end
+	%Write size
+	if step==1,
+		var_id(counter) = netcdf.defVar(ncid,[fieldname '_length'],'NC_INT',[]);
+	else
+		netcdf.putVar(ncid,var_id(counter),sublength);
+	end
+	counter=counter+1;
+	%Write fields
+	if step==1,
+
+		dim_id          = netcdf.defDim(ncid,[fieldname '_fields_length'],numel(allsubfields));
+		var_id(counter) = netcdf.defVar(ncid,[fieldname '_fields'],'NC_CHAR',dim_id);
+	else
+		netcdf.putVar(ncid,var_id(counter),allsubfields);
+	end
+	for n=1:sublength,
+		for i=1:length(subfields),
+			[var_id,counter] = structtonc(ncid,[fieldname '.' subfields{i} '(' num2str(n) ')'],field(n).(subfields{i}),depth+1,var_id,counter,step);
+		end
+	end
+
+%Cell
+elseif isa(field,'cell'),
+	sublength = numel(field);
+	%Write size
+	if step==1,
+		var_id(counter) = netcdf.defVar(ncid,[fieldname '_length'],'NC_INT',[]);
+	else
+		netcdf.putVar(ncid,var_id(counter),sublength);
+	end
+	for i=1:sublength,
+		[var_id,counter] = structtonc(ncid,[fieldname '{' num2str(i) '}'],field{i},depth+1,var_id,counter,step);
+	end
+
+%Objects
+elseif isobject(field),
+	subfields = fields(field);
+	for i=1:length(subfields),
+		[var_id,counter] = structtonc(ncid,[fieldname '.' subfields{i}],field.(subfields{i}),depth+1,var_id,counter,step);
+	end
+else
+	disp(['skipping ' fieldname ' (format not supported)...']);
+end
+
+function [var_id,counter] = declareclass(ncid,fieldname,field,depth,var_id,counter,step);
+
+if isa(field,'char') 
+	if step==1,
+		dim_id          = netcdf.defDim(ncid,[fieldname '_length'],numel(field));
+		var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_CHAR',dim_id);
+	else
+		netcdf.putVar(ncid,var_id(counter),field);
+	end
+else
+	error('class name is not a string');
+end
+
+%update counter
+counter   = counter+1;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/writetofile.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/writetofile.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/io/writetofile.js	(revision 21239)
@@ -0,0 +1,111 @@
+//download.js v4.0, by dandavis; 2008-2015. [CCBY2] see http://danml.com/download.html for tests/usage
+// v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime
+// v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs
+// v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support. 3.1 improved safari handling.
+// v4 adds AMD/UMD, commonJS, and plain browser support
+// https://github.com/rndme/download
+
+function writetofile(data, strFileName, strMimeType) {
+	
+	var self = window, // this script is only for browsers anyway...
+		u = "application/octet-stream", // this default mime also triggers iframe downloads
+		m = strMimeType || u,
+		x = data,
+		D = document,
+		a = D.createElement("a"),
+		z = function(a){return String(a);},
+		B = (self.Blob || self.MozBlob || self.WebKitBlob || z);
+		B=B.call ? B.bind(self) : Blob ;
+		var fn = strFileName || "download",
+		blob,
+		fr;
+
+	if(String(this)==="true"){ //reverse arguments, allowing download.bind(true, "text/xml", "export.xml") to act as a callback
+		x=[x, m];
+		m=x[0];
+		x=x[1];
+	}
+
+	//go ahead and download dataURLs right away
+	if(String(x).match(/^data\:[\w+\-]+\/[\w+\-]+[,;]/)){
+		return navigator.msSaveBlob ?  // IE10 can't do a[download], only Blobs:
+			navigator.msSaveBlob(d2b(x), fn) :
+			saver(x) ; // everyone else can save dataURLs un-processed
+	}//end if dataURL passed?
+
+	blob = x instanceof B ?
+		x :
+		new B([x], {type: m}) ;
+
+	function d2b(u) {
+		var p= u.split(/[:;,]/),
+		t= p[1],
+		dec= p[2] == "base64" ? atob : decodeURIComponent,
+		bin= dec(p.pop()),
+		mx= bin.length,
+		i= 0,
+		uia= new Uint8Array(mx);
+
+		for(i;i<mx;++i) uia[i]= bin.charCodeAt(i);
+
+		return new B([uia], {type: t});
+	}
+
+	function saver(url, winMode){
+		if ('download' in a) { //html5 A[download]
+			a.href = url;
+			a.setAttribute("download", fn);
+			a.innerHTML = "downloading...";
+			D.body.appendChild(a);
+			setTimeout(function() {
+				a.click();
+				D.body.removeChild(a);
+				if(winMode===true){setTimeout(function(){ self.URL.revokeObjectURL(a.href);}, 250 );}
+			}, 66);
+			return true;
+		}
+
+		if(typeof safari !=="undefined" ){ // handle non-a[download] safari as best we can:
+			url="data:"+url.replace(/^data:([\w\/\-\+]+)/, u);
+			if(!window.open(url)){ // popup blocked, offer direct download:
+				if(confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")){ location.href=url; }
+			}
+			return true;
+		}
+
+		//do iframe dataURL download (old ch+FF):
+		var f = D.createElement("iframe");
+		D.body.appendChild(f);
+
+		if(!winMode){ // force a mime that will download:
+			url="data:"+url.replace(/^data:([\w\/\-\+]+)/, u);
+		}
+		f.src=url;
+		setTimeout(function(){ D.body.removeChild(f); }, 333);
+	}//end saver
+
+	if (navigator.msSaveBlob) { // IE10+ : (has Blob, but not a[download] or URL)
+		return navigator.msSaveBlob(blob, fn);
+	}
+
+	if(self.URL){ // simple fast and modern way using Blob and URL:
+		saver(self.URL.createObjectURL(blob), true);
+	}else{
+		// handle non-Blob()+non-URL browsers:
+		if(typeof blob === "string" || blob.constructor===z ){
+			try{
+				return saver( "data:" +  m   + ";base64,"  +  self.btoa(blob)  );
+			}catch(y){
+				return saver( "data:" +  m   + "," + encodeURIComponent(blob)  );
+			}
+		}
+
+		// Blob but not URL:
+		fr=new FileReader();
+		fr.onload=function(e){
+			saver(this.result);
+		};
+		fr.readAsDataURL(blob);
+	}
+	return true;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejs1Darray.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejs1Darray.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejs1Darray.m	(revision 21239)
@@ -0,0 +1,14 @@
+function writejs1Darray(fid,prefix,array)
+
+	if isempty(array)
+		fprintf(fid,'%s=[];\n',prefix);
+	else if  isscalar(array),
+		fprintf(fid,'%s=%g;\n',prefix,array);
+	else
+		fprintf(fid,'%s=[',prefix);
+		for i=1:length(array)-1,
+			fprintf(fid,'%g,',array(i));
+		end
+		fprintf(fid,'%g];\n',array(end));
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejs2Darray.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejs2Darray.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejs2Darray.m	(revision 21239)
@@ -0,0 +1,20 @@
+function writejs2Darray(fid,prefix,array)
+
+	if  isscalar(array),
+		fprintf(fid,'%s=%g;\n',prefix,array);
+	else
+		fprintf(fid,'%s=[',prefix);
+		for i=1:size(array,1)-1,
+			fprintf(fid,'[%g,',array(i,1));
+			for j=2:size(array,2)-1,
+				fprintf(fid,'%g,',array(i,j));
+			end
+			fprintf(fid,'%g],',array(i,end));
+		end
+		fprintf(fid,'[%g,',array(end,1));
+		for j=2:size(array,2)-1,
+			fprintf(fid,'%g,',array(end,j));
+		end
+		fprintf(fid,'%g]];\n',array(end,end));
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejscellarray.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejscellarray.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejscellarray.m	(revision 21239)
@@ -0,0 +1,21 @@
+function writejscellarray(fid,prefix,cell)
+
+
+	if ~iscell(cell),
+		fprintf(fid,'%s=%g;\n',prefix,cell);
+	else
+		fprintf(fid,'%s=[',prefix);
+		for i=1:length(cell),
+			array=cell{i};
+			fprintf(fid,'[');
+			for j=1:length(array)-1,
+				fprintf(fid,'%g,',array(j));
+			end
+			fprintf(fid,'%g]',array(end));
+			if i<length(cell), fprintf(fid,','); end
+		end
+		fprintf(fid,'];\n');
+	end
+
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejscellstring.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejscellstring.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejscellstring.m	(revision 21239)
@@ -0,0 +1,22 @@
+function writejscellstring(fid,prefix,cell)
+
+
+	if ~iscell(cell),
+		fprintf(fid,'%s=%g;\n',prefix,cell);
+	else
+		if length(cell),
+			if length(cell)==1,
+				fprintf(fid,'%s=[''%s''];\n',prefix,cell{1});
+			else
+				fprintf(fid,'%s=[''%s'',',prefix,cell{1});
+				for i=2:length(cell)-1,
+					fprintf(fid,'''%s'',',cell{i});
+				end
+				fprintf(fid,'''%s''];\n',cell{end});
+			end
+		else
+			fprintf(fid,'%s=[];\n',prefix);
+		end
+	end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejsdouble.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejsdouble.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejsdouble.m	(revision 21239)
@@ -0,0 +1,7 @@
+function writejsdouble(fid,prefix,scalar)
+	if  isinf(scalar),
+		fprintf(fid,'%s=Infinity;\n',prefix);
+	else
+		fprintf(fid,'%s=%g;\n',prefix,scalar);
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejsstring.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejsstring.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejsstring.m	(revision 21239)
@@ -0,0 +1,3 @@
+function writejsstring(fid,prefix,string)
+	fprintf(fid,'%s=''%s'';\n',prefix,string);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejsstruct.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejsstruct.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/js/writejsstruct.m	(revision 21239)
@@ -0,0 +1,16 @@
+function writejsstruct(fid,prefix,structure)
+	
+	fprintf(fid,'%s={};\n',prefix);
+
+	fields=fieldnames(structure);
+	for i=1:numel(fields),
+		fieldname=fields{i};
+		field=structure.(fieldname);
+		if isscalar(field),
+			fprintf(fid,'%s[''%s'']=%g;\n',prefix,fieldname,field);
+		end
+		if ischar(field),
+			fprintf(fid,'%s[''%s'']=''%s'';\n',prefix,fieldname,field);
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/README.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/README.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/README.txt	(revision 21239)
@@ -0,0 +1,66 @@
+The Matlab scripts in the kml directory may be divided into three areas:
+    1. kml class definitions
+    2. kml utilities
+    3. kml drivers
+
+Each of the three will be discussed below.
+
+I.  KML Class Definitions
+
+All the kml is defined using the reference:
+http://code.google.com/apis/kml/documentation/kmlreference.html
+
+Many of the kml objects described in the first figure of the kml reference are defined as Matlab objects, with most or all of the kml properties.  The classes consist of one base class and several levels of derived classes (super and sub, respectively, in Matlab terminology).  The hierarchy of these classes are as follows.
+
+kml_object.m
+    kml_feature.m
+        kml_placemark.m
+        kml_container.m
+            kml_folder.m
+            kml_document.m
+    kml_geometry.m
+        kml_point.m
+        kml_linestring.m
+        kml_linearring.m
+        kml_polygon.m
+        kml_multigeometry.m
+    kml_styleselector.m
+        kml_style.m
+    kml_substyle.m
+        kml_colorstyle.m
+            kml_linestyle.m
+            kml_polystyle.m
+
+For each class, the methods consist of a constructor, a display method, a fieldnames method (since objects can not use the Matlab "fieldnames" function), a set method, and a write method.  All of the methods, as well as the properties, inherit the base classes where appropriate rather than repeating any functionality.  The Matlab "help" command can be used to list the documentation for any of the classes.
+
+II.  KML Utilities
+
+The kml utilities take an ISSM model (and optionally results) and write it into a kml object, typically a kml folder, in various ways.  The kml object could then be written into a file, by itself or with others, and imported into Google Earth.  Note that kml polygons can only be one color, not interpolated.
+
+The following kml utilities have been written.  The kml_mesh_elem and kml_partitions are probably the most useful, because the rest are intermediate results.  The Matlab "help" command can again be used to list the documentation.
+
+kml_mesh_elem.m      - write a kml folder with each ISSM element as a kml polygon (color-coded by results, if provided)
+kml_part_flagedges.m - write a kml folder with each segment between two ISSM partitions as a kml linestring
+kml_unsh_edges.m     - write a kml folder with each unshared segment of an ISSM partition as a kml linestring
+kml_part_elems.m     - write a kml folder with all the elements of each ISSM partition as kml polygons, noting that elements are repeated for each partition in which they have nodes (color-coded by results, if provided)
+kml_part_edges.m     - write a kml folder with all the edges of each ISSM partition as a kml linestring (color-coded by results, if provided)
+kml_partitions.m     - write a kml folder with each ISSM partition as a kml polygon (color-coded by results, if provided)
+
+In order the write any and all kml objects that have been constructed to a file for import into Google Earth, the following function has been written.
+
+kml_file_write.m     - write a kml file of the specified kml objects (may open and/or close file)
+
+III.  KML Drivers
+
+There is one kml driver, which may be used as a model for custom drivers.  It takes an ISSM model, converts the data from node to element (if necessary), and writes some kml headers and style templates.  In addition, it constructs six kml folders for the first six kml utilities above, then writes those to the file and closes the file.
+
+kml_mesh_write.m     - write a kml file of the ISSM model (color-coded by results, if provided)
+
+IV.  Other Utilities
+
+There are some other utilities that are used in the construction of topological tables for the kml writing.
+
+kmlnodeconnectivity.m   - create a node connectivity table (nnodes x mxepg+1)
+edgeadjacency.m      - create an edge adjacency array (elems x edges)
+edgeperimeter.m      - create an edge perimeter (edgeper x 2) and element perimeter (edgeper x 1) list
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/edgeadjacency.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/edgeadjacency.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/edgeadjacency.m	(revision 21239)
@@ -0,0 +1,47 @@
+%
+%  create an edge adjacency table for the elements in the model.
+%
+%  [edgeadj]=edgeadjacency(elem,nodecon)
+%
+%  where the required input is:
+%    elem          (numeric, element connectivity array (elems x nodes))
+%    nodecon       (numeric, node connectivity array (nodes x elems+1))
+%
+%  and the required output is:
+%    edgeadj       (numeric, edge adjacency array (elems x edges))
+%
+function [edgeadj]=edgeadjacency(elem,nodecon)
+
+if ~nargin
+    help edgeadjacency
+    return
+end
+
+%%  create the edge adjacency array
+
+edgeadj=zeros(size(elem));
+
+%  loop over the elements
+
+for i=1:size(elem,1)
+
+%  loop over the edges for each element (trias only for now)
+
+    for j=1:size(elem,2)
+        inode1=elem(i,j);
+        inode2=elem(i,mod(j,size(elem,2))+1);
+
+%  loop over the elements containing the first node of the edge to see
+%  if they contain the second node of the edge
+
+        for k=1:nodecon(inode1,end)
+            if (nodecon(inode1,k) ~= i) && ...
+               ~isempty(find(elem(nodecon(inode1,k),:)==inode2,1))
+                edgeadj(i,j)=nodecon(inode1,k);
+                break;
+            end
+        end
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/edgeperimeter.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/edgeperimeter.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/edgeperimeter.m	(revision 21239)
@@ -0,0 +1,87 @@
+%
+%  create an edge perimeter list for the elements in the model.
+%
+%  [edgeper,elemper,iloop]=edgeperimeter(elem,nodecon,edgeadj)
+%
+%  where the required input is:
+%    elem          (numeric, element connectivity array (elems x nodes))
+%    nodecon       (numeric, node connectivity array (nodes x elems+1))
+%
+%  and the required output is:
+%    edgeper       (numeric, edge perimeter list (edgeper x 2))
+%    elemper       (numeric, element perimeter list (edgeper x 1))
+%    iloop         (numeric, index for each loop (nloop))
+%
+%  the optional input is:
+%    edgeadj       (numeric, edge adjacency array (elems x edges))
+%
+function [edgeper,elemper,iloop]=edgeperimeter(elem,nodecon,edgeadj)
+
+if ~nargin
+    help edgeperimeter
+    return
+end
+
+%%  create the edge adjacency array
+
+if ~exist('edgeadj','var') || isempty(edgeadj)
+    edgeadj=edgeadjacency(elem,nodecon);
+end
+
+%%  create the unshared edge list
+
+[icol,irow]=find(edgeadj'==0);
+edgeuns=zeros(length(irow),2);
+elemuns=zeros(length(irow),1);
+
+%  loop over the edges
+
+for i=1:length(irow)
+    edgeuns(i,1)=elem(irow(i),icol(i));
+    edgeuns(i,2)=elem(irow(i),mod(icol(i),size(elem,2))+1);
+    elemuns(i)=irow(i);
+end
+
+%%  create the edge perimeter list
+
+edgeper=zeros(size(edgeuns));
+elemper=zeros(size(elemuns));
+iloop=[];
+ipt=0;
+
+%  find the beginning of a loop
+
+while ~isempty(find(edgeuns,1))
+    ipt=ipt+1;
+    iloop(end+1)=ipt;
+    [irow,icol]=find(edgeuns,1);
+    edgeper(ipt,:)=edgeuns(irow,:);
+    elemper(ipt)  =elemuns(irow);
+    edgeuns(irow,:)=[0 0];
+    elemuns(irow)  =0;
+    [irow,icol]=find(edgeuns==edgeper(ipt,2),1);
+
+%  continue following the loop
+
+    while ~isempty(irow)
+        ipt=ipt+1;
+        if (icol == 1)
+            edgeper(ipt,:)=edgeuns(irow,:);
+        else
+            edgeper(ipt,1)=edgeuns(irow,2);
+            edgeper(ipt,2)=edgeuns(irow,1);
+        end
+        elemper(ipt)  =elemuns(irow);
+        edgeuns(irow,:)=[0 0];
+        elemuns(irow)  =0;
+        [irow,icol]=find(edgeuns==edgeper(ipt,2),1);
+    end
+
+%  check to see if loop is closed
+
+    if (edgeper(iloop(end),1) ~= edgeper(ipt,2))
+        warning('Loop %d is not closed.\n',length(loop));
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml2exp.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml2exp.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml2exp.m	(revision 21239)
@@ -0,0 +1,26 @@
+function kml2exp(input,output)
+%KML2EXP: transform kml file Argus exp file.
+%
+% Usage:    kmltoexp('temp.kml','temp2.exp')
+%
+%
+
+%First, read polygon kml file.
+structure=kml_shapefile(input);
+
+%create exp file: 
+domain=struct();
+for i=1:length(structure),
+
+	if isfield(structure,'name'),
+		domain(end+1).name=structure(i).name;
+	else
+		domain(end+1).name='NaN';
+	end
+
+	domain(end).density=1;
+	domain(end).x=structure(i).X;
+	domain(end).y=structure(i).Y;
+end
+domain=domain(2:end);
+expwrite(domain,output);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml2expg.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml2expg.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml2expg.m	(revision 21239)
@@ -0,0 +1,13 @@
+function kml2expg(filename)
+
+	[path,name,ext]=fileparts(filename);
+
+	if strcmpi(ext,'.kmz'),
+		eval(['!unzip ' filename]);
+		eval(['!mv doc.kml ' name '.kml']);
+		kml2exp([name '.kml'],[name '.exp']);
+		expll2xy([name '.exp'],1);
+	end
+
+	kml2exp([name '.kml'],[name '.exp']);
+	expll2xy([name '.exp'],1);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_colorstyle.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_colorstyle.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_colorstyle.m	(revision 21239)
@@ -0,0 +1,201 @@
+%
+%  definition for the kml_colorstyle super (base) and sub (derived) abstract class.
+%
+%  [kml]=kml_colorstyle(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, colorstyle id, '')
+%    color         (char, opacity/color in hex aabbggrr, 'ffffffff')
+%    colormode     (char, color mode , 'normal')
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_colorstyle < kml_substyle
+    properties
+        color     ='ffffffff';
+        colormode ='normal';
+    end
+
+    methods
+        function [kml]=kml_colorstyle(varargin)
+
+            kml=kml@kml_substyle(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_colorstyle());
+
+                        for i=length(fieldnames(kml_substyle()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                if strcmp(class(kml),'kml_colorstyle')
+                    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                        class(kml),inputname(1),string_dim(kml,i)));
+                end
+                disp@kml_substyle(kml(i));
+                disp(sprintf('         color: ''%s'''  ,kml(i).color));
+                if strcmp(class(kml),'kml_colorstyle')
+                    disp(sprintf('     colormode: ''%s''\n',kml(i).colormode));
+                else
+                    disp(sprintf('     colormode: ''%s'''  ,kml(i).colormode));
+                end
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_substyle());
+            fnames={fnames{:} ...
+                    'color' ...
+                    'colormode' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the colorstyles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_colorstyle')
+                    if ~isempty(kmli.id)
+                        fprintf(fid,'%s<!ColorStyle id="%s">\n',indent,kmli.id);
+                    else
+                        fprintf(fid,'%s<!ColorStyle>\n',indent);
+                    end
+                end
+                kml_write@kml_substyle(kmli,fid,indent);
+                if ~isempty(kmli.color)
+                    fprintf(fid,'%s  <color>%s</color>\n',indent,kmli.color);
+                end
+                if ~isempty(kmli.colormode)
+                    fprintf(fid,'%s  <colorMode>%s</colorMode>\n',indent,kmli.colormode);
+                end
+                if strcmp(class(kml),'kml_colorstyle')
+                    fprintf(fid,'%s</!ColorStyle>\n',indent);
+                end
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the colorstyles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_colorstyle')
+                    if ~isempty(kmli.id)
+                        sbuf=add(sbuf,sprintf('%s<!ColorStyle id="%s">\n',indent,kmli.id));
+                    else
+                        sbuf=add(sbuf,sprintf('%s<!ColorStyle>\n',indent));
+                    end
+                end
+                sbuf=kml_swrite@kml_substyle(kmli,sbuf,indent);
+                if ~isempty(kmli.color)
+                    sbuf=add(sbuf,sprintf('%s  <color>%s</color>\n',indent,kmli.color));
+                end
+                if ~isempty(kmli.colormode)
+                    sbuf=add(sbuf,sprintf('%s  <colorMode>%s</colorMode>\n',indent,kmli.colormode));
+                end
+                if strcmp(class(kml),'kml_colorstyle')
+                    sbuf=add(sbuf,sprintf('%s</!ColorStyle>\n',indent));
+                end
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_container.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_container.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_container.m	(revision 21239)
@@ -0,0 +1,198 @@
+%
+%  definition for the kml_container super (base) and sub (derived) abstract class.
+%
+%  [kml]=kml_container(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, container id, '')
+%    name          (char, name, '')
+%    visibility    (logical, visibility, true)
+%    open          (logical, open, false)
+%    snippet       (char, snippet, '')
+%    descript      (char, description, '')
+%    styleurl      (char, style url, '')
+%    style         (cell array, styles)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_container < kml_feature
+    properties
+    end
+
+    methods
+        function [kml]=kml_container(varargin)
+
+            kml=kml@kml_feature(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_container());
+
+                        for i=length(fieldnames(kml_feature()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                if strcmp(class(kml),'kml_container')
+                    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                        class(kml),inputname(1),string_dim(kml,i)));
+                end
+                disp@kml_feature(kml(i));
+                if strcmp(class(kml),'kml_container')
+                    disp(sprintf('\n'));
+                end
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_feature());
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the containers
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_container')
+                    if ~isempty(kmli.id)
+                        fprintf(fid,'%s<!Container id="%s">\n',indent,kmli.id);
+                    else
+                        fprintf(fid,'%s<!Container>\n',indent);
+                    end
+                end
+                kml_write@kml_feature(kmli,fid,indent);
+                if strcmp(class(kml),'kml_container')
+                    fprintf(fid,'%s<!/Container>\n',indent);
+                end
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the containers
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_container')
+                    if ~isempty(kmli.id)
+                        sbuf=add(sbuf,sprintf('%s<!Container id="%s">\n',indent,kmli.id));
+                    else
+                        sbuf=add(sbuf,sprintf('%s<!Container>\n',indent));
+                    end
+                end
+                sbuf=kml_swrite@kml_feature(kmli,sbuf,indent);
+                if strcmp(class(kml),'kml_container')
+                    sbuf=add(sbuf,sprintf('%s<!/Container>\n',indent));
+                end
+            end
+
+        end
+
+%  delete the object
+
+        function []=delete(kml)
+
+%  loop over the containers
+
+            for i=numel(kml):-1:1
+                kmli=kml(i);
+                delete@kml_feature(kmli);
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_document.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_document.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_document.m	(revision 21239)
@@ -0,0 +1,235 @@
+%
+%  definition for the kml_document sub (derived) class.
+%
+%  [kml]=kml_document(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, document id, '')
+%    name          (char, name, '')
+%    visibility    (logical, visibility, true)
+%    open          (logical, open, false)
+%    snippet       (char, snippet, '')
+%    descript      (char, description, '')
+%    styleurl      (char, style url, '')
+%    style         (cell array, styles)
+%    feature       (cell array, placemark features)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_document < kml_container
+    properties
+        feature   ={};
+    end
+
+    methods
+        function [kml]=kml_document(varargin)
+
+            kml=kml@kml_container(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_document());
+
+                        for i=length(fieldnames(kml_container()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_container(kml(i));
+                disp(sprintf('       feature: %s %s\n' ,string_size(kml(i).feature),...
+                             class(kml(i).feature)));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_feature());
+            fnames={fnames{:} ...
+                    'feature' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the documents
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<Document id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<Document>\n',indent);
+                end
+                kml_write@kml_container(kmli,fid,indent);
+
+%  loop over the features for each document
+
+                for j=1:numel(kmli.feature)
+                    if ~isempty(kmli.feature{j})
+                        if isa(kmli.feature{j},'kml_feature')
+                            kml_write(kmli.feature{j},fid,[indent '  ']);
+                        else
+                            warning('kml(%d).feature{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmli.feature{j}),'kml_feature');
+                        end
+                    end
+                end
+
+                fprintf(fid,'%s</Document>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the documents
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<Document id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<Document>\n',indent));
+                end
+                sbuf=kml_swrite@kml_container(kmli,sbuf,indent);
+
+%  loop over the features for each document
+
+                for j=1:numel(kmli.feature)
+                    if ~isempty(kmli.feature{j})
+                        if isa(kmli.feature{j},'kml_feature')
+                            sbuf=kml_swrite(kmli.feature{j},sbuf,[indent '  ']);
+                        else
+                            warning('kml(%d).feature{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmli.feature{j}),'kml_feature');
+                        end
+                    end
+                end
+
+                sbuf=add(sbuf,sprintf('%s</Document>\n',indent));
+            end
+
+        end
+
+%  delete the object
+
+        function []=delete(kml)
+
+%  loop over the documents
+
+            for i=numel(kml):-1:1
+                kmli=kml(i);
+                delete@kml_container(kmli);
+
+%  loop over the features for each document
+
+                for j=numel(kmli.feature):-1:1
+                    if ~isempty(kmli.feature{j})
+                        if isa(kmli.feature{j},'kml_feature')
+                            delete(kmli.feature{j});
+                        else
+                            warning('kml(%d).feature{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmli.feature{j}),'kml_feature');
+                        end
+                    end
+                end
+                kmli.feature   ={};
+
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_feature.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_feature.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_feature.m	(revision 21239)
@@ -0,0 +1,294 @@
+%
+%  definition for the kml_feature super (base) and sub (derived) abstract class.
+%
+%  [kml]=kml_feature(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, feature id, '')
+%    name          (char, name, '')
+%    visibility    (logical, visibility, true)
+%    open          (logical, open, false)
+%    snippet       (char, snippet, '')
+%    descript      (char, description, '')
+%    styleurl      (char, style url, '')
+%    style         (cell array, styles)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_feature < kml_object
+    properties
+        name      ='';
+        visibility=true;
+        open      =false;
+        snippet   ='';
+        descript  ='';
+        styleurl  ='';
+        style     ={};
+    end
+
+    methods
+        function [kml]=kml_feature(varargin)
+
+            kml=kml@kml_object(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_feature());
+
+                        for i=length(fieldnames(kml_object()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                if strcmp(class(kml),'kml_feature')
+                    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                        class(kml),inputname(1),string_dim(kml,i)));
+                end
+                disp@kml_object(kml(i));
+                disp(sprintf('          name: ''%s'''  ,kml(i).name));
+                disp(sprintf('    visibility: %g'      ,kml(i).visibility));
+                disp(sprintf('          open: %g'      ,kml(i).open));
+                disp(sprintf('       snippet: ''%s'''  ,kml(i).snippet));
+                disp(sprintf('      descript: ''%s'''  ,kml(i).descript));
+                disp(sprintf('      styleurl: ''%s'''  ,kml(i).styleurl));
+                if strcmp(class(kml),'kml_feature')
+                    disp(sprintf('         style: %s %s\n' ,string_size(kml(i).style),...
+                                 class(kml(i).style)));
+                else
+                    disp(sprintf('         style: %s %s'   ,string_size(kml(i).style),...
+                                 class(kml(i).style)));
+                end
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_object());
+            fnames={fnames{:} ...
+                    'name' ...
+                    'visibility' ...
+                    'open' ...
+                    'snippet' ...
+                    'descript' ...
+                    'styleurl' ...
+                    'style' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the features
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_feature')
+                    if ~isempty(kmli.id)
+                        fprintf(fid,'%s<!Feature id="%s">\n',indent,kmli.id);
+                    else
+                        fprintf(fid,'%s<!Feature>\n',indent);
+                    end
+                end
+                kml_write@kml_object(kmli,fid,indent);
+                if ~isempty(kmli.name)
+                    fprintf(fid,'%s  <name>%s</name>\n',indent,kmli.name);
+                end
+                fprintf(fid,'%s  <visibility>%d</visibility>\n',indent,kmli.visibility);
+                fprintf(fid,'%s  <open>%d</open>\n',indent,kmli.open);
+                if ~isempty(kmli.snippet)
+                    fprintf(fid,'%s  <Snippet maxLines="2">%s</Snippet>\n',indent,kmli.snippet);
+                end
+                if ~isempty(kmli.descript)
+                    fprintf(fid,'%s  <description>%s</description>\n',indent,kmli.descript);
+                end
+                if ~isempty(kmli.styleurl)
+                    fprintf(fid,'%s  <styleUrl>%s</styleUrl>\n',indent,kmli.styleurl);
+                end
+
+%  loop over the styles for each feature
+
+                for j=1:numel(kmli.style)
+                    if ~isempty(kmli.style{j})
+                        if isa(kmli.style{j},'kml_styleselector')
+                            kml_write(kmli.style{j},fid,[indent '  ']);
+                        else
+                            warning('kml(%d).style{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmli.style{j}),'kml_styleselector');
+                        end
+                    end
+                end
+
+                if strcmp(class(kml),'kml_feature')
+                    fprintf(fid,'%s<!/Feature>\n',indent);
+                end
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the features
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_feature')
+                    if ~isempty(kmli.id)
+                        sbuf=add(sbuf,sprintf('%s<!Feature id="%s">\n',indent,kmli.id));
+                    else
+                        sbuf=add(sbuf,sprintf('%s<!Feature>\n',indent));
+                    end
+                end
+                sbuf=kml_swrite@kml_object(kmli,sbuf,indent);
+                if ~isempty(kmli.name)
+                    sbuf=add(sbuf,sprintf('%s  <name>%s</name>\n',indent,kmli.name));
+                end
+                sbuf=add(sbuf,sprintf('%s  <visibility>%d</visibility>\n',indent,kmli.visibility));
+                sbuf=add(sbuf,sprintf('%s  <open>%d</open>\n',indent,kmli.open));
+                if ~isempty(kmli.snippet)
+                    sbuf=add(sbuf,sprintf('%s  <Snippet maxLines="2">%s</Snippet>\n',indent,kmli.snippet));
+                end
+                if ~isempty(kmli.descript)
+                    sbuf=add(sbuf,sprintf('%s  <description>%s</description>\n',indent,kmli.descript));
+                end
+                if ~isempty(kmli.styleurl)
+                    sbuf=add(sbuf,sprintf('%s  <styleUrl>%s</styleUrl>\n',indent,kmli.styleurl));
+                end
+
+%  loop over the styles for each feature
+
+                for j=1:numel(kmli.style)
+                    if ~isempty(kmli.style{j})
+                        if isa(kmli.style{j},'kml_styleselector')
+                            sbuf=kml_swrite(kmli.style{j},sbuf,[indent '  ']);
+                        else
+                            warning('kml(%d).style{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmli.style{j}),'kml_styleselector');
+                        end
+                    end
+                end
+
+                if strcmp(class(kml),'kml_feature')
+                    sbuf=add(sbuf,sprintf('%s<!/Feature>\n',indent));
+                end
+            end
+
+        end
+
+%  delete the object
+
+        function []=delete(kml)
+
+%  loop over the features
+
+            for i=numel(kml):-1:1
+                kmli=kml(i);
+
+%  loop over the styles for each feature
+
+                for j=numel(kmli.style):-1:1
+                    if ~isempty(kmli.style{j})
+                        if isa(kmli.style{j},'kml_styleselector')
+                            delete(kmli.style{j});
+                        else
+                            warning('kml(%d).style{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmli.style{j}),'kml_styleselector');
+                        end
+                    end
+                end
+                kmli.style     ={};
+
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_file_swrite.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_file_swrite.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_file_swrite.m	(revision 21239)
@@ -0,0 +1,131 @@
+%
+%  string write a kml file of the kml objects.
+%
+%  [fid]=kml_file_swrite(kobj,filek,indent)
+%
+%  where the required input is:
+%    kobj          (kml_object, kml object to be written)
+%     or
+%    kobj          (cell array, array of kml objects)
+%
+%  the optional input is:
+%    filek         (char, name of .kml file)
+%     or
+%    filek         (numeric, file ID of already-open file,
+%                            noting 1=stdout and 2=stderr)
+%    indent        (char, indention string)
+%
+%  and the optional output is:
+%    fid           (numeric, file ID of still-open file)
+%
+function [fid]=kml_file_swrite(kobj,filek,indent)
+
+if ~nargin
+    help kml_file_swrite
+    return
+end
+
+%%  process input data
+
+if ~iscell(kobj)
+    kobj={kobj};
+end
+
+fid=0;
+if ~exist('filek' ,'var') || (~ischar(filek) && ~isnumeric(filek))
+    filek='';
+elseif ischar(filek)
+    if     strcmpi(filek,'stdout')
+        fid=1;
+    elseif strcmpi(filek,'stderr')
+        fid=2;
+    end
+elseif isnumeric(filek)
+    fid=filek;
+    if     (fid == 1)
+        filek='stdout';
+    elseif (fid == 2)
+        filek='stderr';
+    else
+        filek='';
+    end
+end
+
+if ~exist('indent','var') || ~ischar(indent)
+    indent='  ';
+end
+
+%%  string write kml file
+
+sbuf=string_buf;
+
+%  open file and write header data (if necessary)
+
+if ~fid
+    if isempty(filek)
+        filek=input('kml file to write?  ','s');
+    end
+    [pathstr,name,ext,versn] = fileparts(filek);
+    if isempty(ext)
+        ext='.kml';
+    end
+    filek=fullfile(pathstr,[name ext versn]);
+
+    display(sprintf('Opening kml file ''%s''.',filek));
+    fid=fopen(sprintf('%s',filek),'w');
+    if (fid < 0)
+        error('File ''%s'' could not be opened.',filek);
+    end
+
+    sbuf=add(sbuf,sprintf('<?xml version="1.0" encoding="UTF-8"?>\n'));
+    sbuf=add(sbuf,sprintf('<kml xmlns="http://www.opengis.net/kml/2.2">\n'));
+end
+
+%  string write kml objects
+
+if ~isempty(filek)
+    display(sprintf('Writing to kml file ''%s'':',filek));
+else
+    display(sprintf('Writing to kml file id=%d:',fid));
+end
+for i=1:numel(kobj)
+    if isa(kobj{i},'kml_object')
+        display(sprintf('  Writing object %d of class ''%s'' and size %s.',...
+            i,class(kobj{i}),string_size(kobj{i})));
+        sbuf=kml_swrite(kobj{i},sbuf,indent);
+    else
+        if ~isempty(inputname(1))
+            warning('Object ''%s{%d}'' is a ''%s'' class object, not ''%s''.',...
+                inputname(1),i,class(kobj{i}),'kml_object');
+        else
+            warning('Object {%d} is a ''%s'' class object, not ''%s''.',...
+                             i,class(kobj{i}),'kml_object');
+        end
+    end
+end
+
+%  write trailer data and close file (if necessary)
+
+if ~nargout && (fid >= 3)
+    sbuf=add(sbuf,sprintf('</kml>\n'));
+    fprintf(fid,'%s',str(sbuf));
+
+    if (fclose(fid) < 0)
+        if ~isempty(filek)
+            error('File ''%s'' could not be closed.',filek);
+        else
+            error('File id=%d could not be closed.',fid);
+        end
+    else
+        if ~isempty(filek)
+            disp(['End of file ''' filek ''' successfully written.']);
+        else
+            disp(['End of file successfully written.']);
+        end
+    end
+
+else
+    fprintf(fid,'%s',str(sbuf));
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_file_write.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_file_write.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_file_write.m	(revision 21239)
@@ -0,0 +1,125 @@
+%
+%  write a kml file of the kml objects.
+%
+%  [fid]=kml_file_write(kobj,filek,indent)
+%
+%  where the required input is:
+%    kobj          (kml_object, kml object to be written)
+%     or
+%    kobj          (cell array, array of kml objects)
+%
+%  the optional input is:
+%    filek         (char, name of .kml file)
+%     or
+%    filek         (numeric, file ID of already-open file,
+%                            noting 1=stdout and 2=stderr)
+%    indent        (char, indention string)
+%
+%  and the optional output is:
+%    fid           (numeric, file ID of still-open file)
+%
+function [fid]=kml_file_write(kobj,filek,indent)
+
+if ~nargin
+    help kml_file_write
+    return
+end
+
+%%  process input data
+
+if ~iscell(kobj)
+    kobj={kobj};
+end
+
+fid=0;
+if ~exist('filek' ,'var') || (~ischar(filek) && ~isnumeric(filek))
+    filek='';
+elseif ischar(filek)
+    if     strcmpi(filek,'stdout')
+        fid=1;
+    elseif strcmpi(filek,'stderr')
+        fid=2;
+    end
+elseif isnumeric(filek)
+    fid=filek;
+    if     (fid == 1)
+        filek='stdout';
+    elseif (fid == 2)
+        filek='stderr';
+    else
+        filek='';
+    end
+end
+
+if ~exist('indent','var') || ~ischar(indent)
+    indent='  ';
+end
+
+%%  write kml file
+
+%  open file and write header data (if necessary)
+
+if ~fid
+    if isempty(filek)
+        filek=input('kml file to write?  ','s');
+    end
+    [pathstr,name,ext,versn] = fileparts(filek);
+    if isempty(ext)
+        ext='.kml';
+    end
+    filek=fullfile(pathstr,[name ext versn]);
+
+    display(sprintf('Opening kml file ''%s''.',filek));
+    fid=fopen(sprintf('%s',filek),'w');
+    if (fid < 0)
+        error('File ''%s'' could not be opened.',filek);
+    end
+
+    fprintf(fid,'<?xml version="1.0" encoding="UTF-8"?>\n');
+    fprintf(fid,'<kml xmlns="http://www.opengis.net/kml/2.2">\n');
+end
+
+%  write kml objects
+
+if ~isempty(filek)
+    display(sprintf('Writing to kml file ''%s'':',filek));
+else
+    display(sprintf('Writing to kml file id=%d:',fid));
+end
+for i=1:numel(kobj)
+    if isa(kobj{i},'kml_object')
+        display(sprintf('  Writing object %d of class ''%s'' and size %s.',...
+            i,class(kobj{i}),string_size(kobj{i})));
+        kml_write(kobj{i},fid,indent);
+    else
+        if ~isempty(inputname(1))
+            warning('Object ''%s{%d}'' is a ''%s'' class object, not ''%s''.',...
+                inputname(1),i,class(kobj{i}),'kml_object');
+        else
+            warning('Object {%d} is a ''%s'' class object, not ''%s''.',...
+                             i,class(kobj{i}),'kml_object');
+        end
+    end
+end
+
+%  write trailer data and close file (if necessary)
+
+if ~nargout && (fid >= 3)
+    fprintf(fid,'</kml>\n');
+
+    if (fclose(fid) < 0)
+        if ~isempty(filek)
+            error('File ''%s'' could not be closed.',filek);
+        else
+            error('File id=%d could not be closed.',fid);
+        end
+    else
+        if ~isempty(filek)
+            disp(['End of file ''' filek ''' successfully written.']);
+        else
+            disp(['End of file successfully written.']);
+        end
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_folder.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_folder.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_folder.m	(revision 21239)
@@ -0,0 +1,235 @@
+%
+%  definition for the kml_folder sub (derived) class.
+%
+%  [kml]=kml_folder(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, folder id, '')
+%    name          (char, name, '')
+%    visibility    (logical, visibility, true)
+%    open          (logical, open, false)
+%    snippet       (char, snippet, '')
+%    descript      (char, description, '')
+%    styleurl      (char, style url, '')
+%    style         (cell array, styles)
+%    feature       (cell array, placemark features)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_folder < kml_container
+    properties
+        feature   ={};
+    end
+
+    methods
+        function [kml]=kml_folder(varargin)
+
+            kml=kml@kml_container(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_folder());
+
+                        for i=length(fieldnames(kml_container()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_container(kml(i));
+                disp(sprintf('       feature: %s %s\n' ,string_size(kml(i).feature),...
+                             class(kml(i).feature)));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_container());
+            fnames={fnames{:} ...
+                    'feature' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the folders
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<Folder id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<Folder>\n',indent);
+                end
+                kml_write@kml_container(kmli,fid,indent);
+
+%  loop over the features for each folder
+
+                for j=1:numel(kmli.feature)
+                    if ~isempty(kmli.feature{j})
+                        if isa(kmli.feature{j},'kml_feature')
+                            kml_write(kmli.feature{j},fid,[indent '  ']);
+                        else
+                            warning('kml(%d).feature{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmli.feature{j}),'kml_feature');
+                        end
+                    end
+                end
+
+                fprintf(fid,'%s</Folder>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the folders
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<Folder id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<Folder>\n',indent));
+                end
+                sbuf=kml_swrite@kml_container(kmli,sbuf,indent);
+
+%  loop over the features for each folder
+
+                for j=1:numel(kmli.feature)
+                    if ~isempty(kmli.feature{j})
+                        if isa(kmli.feature{j},'kml_feature')
+                            sbuf=kml_swrite(kmli.feature{j},sbuf,[indent '  ']);
+                        else
+                            warning('kml(%d).feature{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmli.feature{j}),'kml_feature');
+                        end
+                    end
+                end
+
+                sbuf=add(sbuf,sprintf('%s</Folder>\n',indent));
+            end
+
+        end
+
+%  delete the object
+
+        function []=delete(kml)
+
+%  loop over the folders
+
+            for i=numel(kml):-1:1
+                kmli=kml(i);
+                delete@kml_container(kmli);
+
+%  loop over the features for each folder
+
+                for j=numel(kmli.feature):-1:1
+                    if ~isempty(kmli.feature{j})
+                        if isa(kmli.feature{j},'kml_feature')
+                            delete(kmli.feature{j});
+                        else
+                            warning('kml(%d).feature{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmli.feature{j}),'kml_feature');
+                        end
+                    end
+                end
+                kmli.feature   ={};
+
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_geometry.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_geometry.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_geometry.m	(revision 21239)
@@ -0,0 +1,178 @@
+%
+%  definition for the kml_geometry super (base) and sub (derived) abstract class.
+%
+%  [kml]=kml_geometry(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, geometry id, '')
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_geometry < kml_object
+    properties
+    end
+
+    methods
+        function [kml]=kml_geometry(varargin)
+
+            kml=kml@kml_object(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_geometry());
+
+                        for i=length(fieldnames(kml_object()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                if strcmp(class(kml),'kml_geometry')
+                    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                        class(kml),inputname(1),string_dim(kml,i)));
+                end
+                disp@kml_object(kml(i));
+                if strcmp(class(kml),'kml_geometry')
+                    disp(sprintf('\n'));
+                end
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_object());
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the geometries
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_geometry')
+                    if ~isempty(kmli.id)
+                        fprintf(fid,'%s<!Geometry id="%s">\n',indent,kmli.id);
+                    else
+                        fprintf(fid,'%s<!Geometry>\n',indent);
+                    end
+                end
+                kml_write@kml_object(kmli,fid,indent);
+                if strcmp(class(kml),'kml_geometry')
+                    fprintf(fid,'%s</!Geometry>\n',indent);
+                end
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the geometries
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_geometry')
+                    if ~isempty(kmli.id)
+                        sbuf=add(sbuf,sprintf('%s<!Geometry id="%s">\n',indent,kmli.id));
+                    else
+                        sbuf=add(sbuf,sprintf('%s<!Geometry>\n',indent));
+                    end
+                end
+                sbuf=kml_swrite@kml_object(kmli,sbuf,indent);
+                if strcmp(class(kml),'kml_geometry')
+                    sbuf=add(sbuf,sprintf('%s</!Geometry>\n',indent));
+                end
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_linearring.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_linearring.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_linearring.m	(revision 21239)
@@ -0,0 +1,208 @@
+%
+%  definition for the kml_linearring sub (derived) class.
+%
+%  [kml]=kml_linearring(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, linearring id, '')
+%    extrude       (logical, extrusion, false)
+%    tessellate    (logical, tessellation, false)
+%    altmode       (char, altitude mode, 'clampToGround')
+%    coords        (numeric, long/lat/alt (n x 3), empty)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_linearring < kml_geometry
+    properties
+        extrude   =false;
+        tessellate=false;
+        altmode   ='clampToGround';
+        coords    =zeros(0,3);
+    end
+
+    methods
+        function [kml]=kml_linearring(varargin)
+
+            kml=kml@kml_geometry(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_linearring());
+
+                        for i=length(fieldnames(kml_geometry()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_geometry(kml(i));
+                disp(sprintf('       extrude: %g'      ,kml(i).extrude));
+                disp(sprintf('    tessellate: %g'      ,kml(i).tessellate));
+                disp(sprintf('       altmode: ''%s'''  ,kml(i).altmode));
+                disp(sprintf('        coords: %s %s\n' ,string_size(kml(i).coords),...
+                             class(kml(i).coords)));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_geometry());
+            fnames={fnames{:} ...
+                    'extrude' ...
+                    'tessellate' ...
+                    'altmode' ...
+                    'coords' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+            if ~exist('fid','var') || isempty(fid)
+                fid=1;
+            end
+            if ~exist('indent','var') || isempty(indent)
+                indent='';
+            end
+
+%  loop over the linearrings
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<LinearRing id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<LinearRing>\n',indent);
+                end
+                kml_write@kml_geometry(kmli,fid,indent);
+                fprintf(fid,'%s  <extrude>%d</extrude>\n',indent,kmli.extrude);
+                fprintf(fid,'%s  <tessellate>%d</tessellate>\n',indent,kmli.tessellate);
+                fprintf(fid,'%s  <altitudeMode>%s</altitudeMode>\n',indent,kmli.altmode);
+                fprintf(fid,'%s  <coordinates>\n',indent);
+
+%  loop over the coordinates for each linearring
+
+                for j=1:size(kmli.coords,1)
+                    fprintf(fid,'%s    %0.16g,%0.16g,%0.16g\n',indent,kmli.coords(j,:));
+                end
+
+                fprintf(fid,'%s  </coordinates>\n',indent);
+                fprintf(fid,'%s</LinearRing>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+            if ~exist('sbuf','var') || isempty(sbuf)
+                sbuf=string_buf;
+            end
+            if ~exist('indent','var') || isempty(indent)
+                indent='';
+            end
+
+%  loop over the linearrings
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<LinearRing id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<LinearRing>\n',indent));
+                end
+                sbuf=kml_swrite@kml_geometry(kmli,sbuf,indent);
+                sbuf=add(sbuf,sprintf('%s  <extrude>%d</extrude>\n',indent,kmli.extrude));
+                sbuf=add(sbuf,sprintf('%s  <tessellate>%d</tessellate>\n',indent,kmli.tessellate));
+                sbuf=add(sbuf,sprintf('%s  <altitudeMode>%s</altitudeMode>\n',indent,kmli.altmode));
+                sbuf=add(sbuf,sprintf('%s  <coordinates>\n',indent));
+
+%  loop over the coordinates for each linearring
+
+                for j=1:size(kmli.coords,1)
+                    sbuf=add(sbuf,sprintf('%s    %0.16g,%0.16g,%0.16g\n',indent,kmli.coords(j,:)));
+                end
+
+                sbuf=add(sbuf,sprintf('%s  </coordinates>\n',indent));
+                sbuf=add(sbuf,sprintf('%s</LinearRing>\n',indent));
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_linestring.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_linestring.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_linestring.m	(revision 21239)
@@ -0,0 +1,208 @@
+%
+%  definition for the kml_linestring sub (derived) class.
+%
+%  [kml]=kml_linestring(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, linestring id, '')
+%    extrude       (logical, extrusion, false)
+%    tessellate    (logical, tessellation, false)
+%    altmode       (char, altitude mode, 'clampToGround')
+%    coords        (numeric, long/lat/alt (n x 3), empty)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_linestring < kml_geometry
+    properties
+        extrude   =false;
+        tessellate=false;
+        altmode   ='clampToGround';
+        coords    =zeros(0,3);
+    end
+
+    methods
+        function [kml]=kml_linestring(varargin)
+
+            kml=kml@kml_geometry(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_linestring());
+
+                        for i=length(fieldnames(kml_geometry()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_geometry(kml(i));
+                disp(sprintf('       extrude: %g'      ,kml(i).extrude));
+                disp(sprintf('    tessellate: %g'      ,kml(i).tessellate));
+                disp(sprintf('       altmode: ''%s'''  ,kml(i).altmode));
+                disp(sprintf('        coords: %s %s\n' ,string_size(kml(i).coords),...
+                             class(kml(i).coords)));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_geometry());
+            fnames={fnames{:} ...
+                    'extrude' ...
+                    'tessellate' ...
+                    'altmode' ...
+                    'coords' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+            if ~exist('fid','var') || isempty(fid)
+                fid=1;
+            end
+            if ~exist('indent','var') || isempty(indent)
+                indent='';
+            end
+
+%  loop over the linestrings
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<LineString id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<LineString>\n',indent);
+                end
+                kml_write@kml_geometry(kmli,fid,indent);
+                fprintf(fid,'%s  <extrude>%d</extrude>\n',indent,kmli.extrude);
+                fprintf(fid,'%s  <tessellate>%d</tessellate>\n',indent,kmli.tessellate);
+                fprintf(fid,'%s  <altitudeMode>%s</altitudeMode>\n',indent,kmli.altmode);
+                fprintf(fid,'%s  <coordinates>\n',indent);
+
+%  loop over the coordinates for each linestring
+
+                for j=1:size(kmli.coords,1)
+                    fprintf(fid,'%s    %0.16g,%0.16g,%0.16g\n',indent,kmli.coords(j,:));
+                end
+
+                fprintf(fid,'%s  </coordinates>\n',indent);
+                fprintf(fid,'%s</LineString>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+            if ~exist('sbuf','var') || isempty(sbuf)
+                sbuf=string_buf;
+            end
+            if ~exist('indent','var') || isempty(indent)
+                indent='';
+            end
+
+%  loop over the linestrings
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<LineString id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<LineString>\n',indent));
+                end
+                sbuf=kml_swrite@kml_geometry(kmli,sbuf,indent);
+                sbuf=add(sbuf,sprintf('%s  <extrude>%d</extrude>\n',indent,kmli.extrude));
+                sbuf=add(sbuf,sprintf('%s  <tessellate>%d</tessellate>\n',indent,kmli.tessellate));
+                sbuf=add(sbuf,sprintf('%s  <altitudeMode>%s</altitudeMode>\n',indent,kmli.altmode));
+                sbuf=add(sbuf,sprintf('%s  <coordinates>\n',indent));
+
+%  loop over the coordinates for each linestring
+
+                for j=1:size(kmli.coords,1)
+                    sbuf=add(sbuf,sprintf('%s    %0.16g,%0.16g,%0.16g\n',indent,kmli.coords(j,:)));
+                end
+
+                sbuf=add(sbuf,sprintf('%s  </coordinates>\n',indent));
+                sbuf=add(sbuf,sprintf('%s</LineString>\n',indent));
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_linestyle.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_linestyle.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_linestyle.m	(revision 21239)
@@ -0,0 +1,175 @@
+%
+%  definition for the kml_linestyle sub (derived) class.
+%
+%  [kml]=kml_linestyle(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, linestyle id, '')
+%    color         (char, opacity/color in hex aabbggrr, 'ffffffff')
+%    colormode     (char, color mode , 'normal')
+%    width         (numeric, line width (in pixels), 1)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_linestyle < kml_colorstyle
+    properties
+        width     =1;
+    end
+
+    methods
+        function [kml]=kml_linestyle(varargin)
+
+            kml=kml@kml_colorstyle(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_linestyle());
+
+                        for i=length(fieldnames(kml_colorstyle()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_colorstyle(kml(i));
+                disp(sprintf('         width: %d\n'    ,kml(i).width));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_colorstyle());
+            fnames={fnames{:} ...
+                    'width' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the linestyles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<LineStyle id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<LineStyle>\n',indent);
+                end
+                kml_write@kml_colorstyle(kmli,fid,indent);
+                fprintf(fid,'%s  <width>%d</width>\n',indent,kmli.width);
+                fprintf(fid,'%s</LineStyle>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the linestyles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<LineStyle id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<LineStyle>\n',indent));
+                end
+                sbuf=kml_swrite@kml_colorstyle(kmli,sbuf,indent);
+                sbuf=add(sbuf,sprintf('%s  <width>%d</width>\n',indent,kmli.width));
+                sbuf=add(sbuf,sprintf('%s</LineStyle>\n',indent));
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_mesh_elem.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_mesh_elem.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_mesh_elem.m	(revision 21239)
@@ -0,0 +1,176 @@
+%%
+%  create kml polygons for the element mesh.
+%
+%  [kfold]=kml_mesh_elem(md,params)
+%
+%  where the required input is:
+%    md            (model, model class object)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  and the optional input is:
+%    latsgn        (numeric, +1/-1 for north/south latitude)
+%    data          (numeric, element or nodal results data)
+%    alt           (numeric, altitude for polygons, default 10000)
+%    cmin          (numeric, minimum of color map)
+%    cmax          (numeric, maximum of color map)
+%    cmap          (char or numeric, colormap definition)
+%
+%  and the required output is:
+%    kfold         (kml_folder, folder of polygon placemarks)
+%
+function [kfold]=kml_mesh_elem(varargin)
+
+if ~nargin
+    help kml_mesh_elem
+    return
+end
+
+%%  process input data
+
+iarg=1;
+if (nargin >= 1)
+    md=varargin{1};
+end
+if ~exist('md','var') || isempty(md) || ~isa(md,'model')
+    error(['Model ''' inputname(iarg) ''' is unrecognized class ''' class(md) '''.']);
+end
+
+%  parameters
+
+iarg=iarg+1;
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'latsgn','data','alt',...
+                 'cmin','cmax','cmap'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1},20) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1},20) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    if strcmpi(varargin{iarg},'data')
+        cdata=inputname(iarg+1);
+    end
+    iarg=iarg+2;
+end
+
+if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
+   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
+    if     ~exist('latsgn','var')
+        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
+    elseif (abs(latsgn) ~= 1)
+        error(['Incorrect latsgn=' num2str(latsgn) ' parameter to calculate missing lat/long data.']);
+    else
+        display('Converting x/y data to lat/long data.');
+        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
+    end
+end
+
+if exist('data','var') && ~isempty(data)
+    if     (numel(data)==md.mesh.numberofelements)
+        edata=data;
+    elseif (numel(data)==md.mesh.numberofvertices)
+        ndata=data;
+        display('Averaging nodal data to element data.');
+        edata=zeros(1,md.mesh.numberofelements);
+        for i=1:size(md.mesh.elements,1)
+            for j=1:size(md.mesh.elements,2)
+                edata(i)=edata(i)+ndata(md.mesh.elements(i,j));
+            end
+            edata(i)=edata(i)/size(md.mesh.elements,2);
+        end
+    else
+        error(['Data has incorrect number of ' num2str(numel(data)) ' values.']);
+    end
+end
+
+%  colormap command operates on a figure, so create an invisible one
+%  (could also directly call colormaps, e.g. jet(64), but risky)
+
+hfig=figure('Visible','off');
+if exist('cmap','var')
+    colormap(cmap)
+end
+cmap=colormap;
+close(hfig)
+
+if exist('edata','var')
+    if ~exist('cmin','var')
+        cmin=min(min(edata));
+    end
+    if ~exist('cmax','var')
+        cmax=max(max(edata));
+    end
+end
+
+if ~exist('alt','var')
+    alt=10000;
+end
+
+%%  write folder for mesh
+
+kfold=kml_folder();
+if exist('cdata','var') && ~isempty(cdata)
+    kfold.name      =sprintf('Data: %s',cdata);
+else
+    kfold.name      =sprintf('Mesh');
+end
+kfold.visibility=1;
+kfold.descript  =sprintf('Elements=%d, Nodes=%d',...
+    md.mesh.numberofelements,md.mesh.numberofvertices);
+% see matlab_oop, "initializing a handle object array"
+%kfold.feature   ={repmat(kml_placemark(),1,size(md.mesh.elements,1))};
+kfeat(size(md.mesh.elements,1))=kml_placemark();
+kfold.feature={kfeat};
+
+%  write each element as a polygon placemark
+
+disp(['Writing ' num2str(size(md.mesh.elements,1)) ' tria elements as KML polygons.']);
+for i=1:size(md.mesh.elements,1)
+    kplace=kml_placemark();
+    kplace.name      =sprintf('Element %d',i);
+    kplace.visibility=1;
+    if exist('edata','var')
+%        kplace.descript  =sprintf('Element data: %g',edata(i));
+        kplace.descript  =sprintf('campaign{\n  deformation 1 %g quad_pol ascending right asap;\n}',edata(i));
+        imap = fix((edata(i)-cmin)/(cmax-cmin)*size(cmap,1))+1;
+        if     (imap >= 1) && (imap <= size(cmap,1))
+            kplace.styleurl  =sprintf('#MatlabColor%d',imap);
+        elseif (edata(i) == cmax)
+            kplace.styleurl  =sprintf('#MatlabColor%d',size(cmap,1));
+        else
+            kplace.styleurl  =sprintf('#BlackLineEmptyPoly');
+        end
+    else
+        kplace.styleurl  =sprintf('#BlackLineRandomPoly');
+    end
+
+    kpoly=kml_polygon();
+    kpoly.extrude   =1;
+    kpoly.altmode   ='relativeToGround';
+
+    kring=kml_linearring();
+    kring.coords    =zeros(size(md.mesh.elements,2)+1,3);
+
+    for j=1:size(md.mesh.elements,2)
+        kring.coords(j,:)=[md.mesh.long(md.mesh.elements(i,j)) md.mesh.lat(md.mesh.elements(i,j)) alt];
+    end
+    kring.coords(end,:)=kring.coords(1,:);
+
+    kpoly.outer=kring;
+    kplace.geometry=kpoly;
+    kfold.feature{1}(i)=kplace;
+    clear kring kpoly kplace
+
+    if ~mod(i,1000)
+        disp(['  ' num2str(i) ' tria elements written.']);
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_mesh_write.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_mesh_write.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_mesh_write.m	(revision 21239)
@@ -0,0 +1,260 @@
+%%
+%  write a kml file of the mesh from the model.
+%
+%  []=kml_mesh_write(filek,md,params)
+%
+%  where the required input is:
+%    filek         (char, name of .kml file)
+%    md            (model, model class object)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  and the optional input is:
+%    latsgn        (numeric, +1/-1 for north/south latitude)
+%    data          (numeric, element or nodal results data)
+%    alt           (numeric, altitude for polygons, default 10000)
+%    lwidth        (numeric, line width in pixels, default 1)
+%    popac         (numeric, polygon opacity, default 0.50)
+%    cmin          (numeric, minimum of color map)
+%    cmax          (numeric, maximum of color map)
+%    cmap          (char or numeric, colormap definition)
+%    prtplt        (char, 'off'/'no' for partition segment plot)
+%
+function []=kml_mesh_write(varargin)
+
+if ~nargin
+    help kml_mesh_write
+    return
+end
+
+%%  process input data
+
+iarg=1;
+if (nargin >= 1)
+    filek=varargin{1};
+end
+
+iarg=iarg+1;
+if (nargin >= 2)
+    md=varargin{2};
+end
+if ~exist('md','var') || isempty(md) || ~isa(md,'model')
+    error(['Model ''' inputname(iarg) ''' is unrecognized class ''' class(md) '''.']);
+end
+
+%  parameters
+
+iarg=iarg+1;
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'latsgn','data','alt','lwidth','popac',...
+                 'cmin','cmax','cmap','prtplt'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1},20) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1},20) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    if strcmpi(varargin{iarg},'data')
+        cdata=inputname(iarg+1);
+    end
+    iarg=iarg+2;
+end
+
+if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
+   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
+    if     ~exist('latsgn','var')
+        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
+    elseif (abs(latsgn) ~= 1)
+        error(['Incorrect latsgn=' num2str(latsgn) ' parameter to calculate missing lat/long data.']);
+    else
+        display('Converting x/y data to lat/long data.');
+        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
+    end
+end
+
+if exist('data','var') && ~isempty(data)
+    if     (numel(data)==md.mesh.numberofelements)
+        edata=data;
+    elseif (numel(data)==md.mesh.numberofvertices)
+        ndata=data;
+        display('Averaging nodal data to element data.');
+        edata=zeros(1,md.mesh.numberofelements);
+        for i=1:size(md.mesh.elements,1)
+            for j=1:size(md.mesh.elements,2)
+                edata(i)=edata(i)+ndata(md.mesh.elements(i,j));
+            end
+            edata(i)=edata(i)/size(md.mesh.elements,2);
+        end
+    else
+        error(['Data has incorrect number of ' num2str(numel(data)) ' values.']);
+    end
+end
+
+if exist('edata','var')
+    if ~exist('cmin','var')
+        cmin=min(min(edata));
+    end
+    if ~exist('cmax','var')
+        cmax=max(max(edata));
+    end
+end
+
+if ~exist('alt','var')
+    alt=10000;
+end
+
+%%  construct kml document
+
+kdoc=kml_document();
+kdoc.name      =sprintf('ISSM Mesh: %s',md.miscellaneous.name);
+kdoc.open      =1;
+ifirst=true;
+for i=1:numel(md.miscellaneous.notes)
+    if ~isempty(md.miscellaneous.notes{i})
+        if ~ifirst
+            kdoc.descript  =[kdoc.descript sprintf('\n')];
+        end
+        ifirst=false;
+        kdoc.descript  =[kdoc.descript sprintf('%s',md.miscellaneous.notes{i})];
+    end
+end
+clear ifirst
+kdoc.style     ={repmat(kml_style(),0,0)};
+kdoc.feature   ={repmat(kml_folder(),0,0)};
+
+%  write style templates for defaults and for each color of the matlab
+%  colormap (note that matlab colormap format is rgb, where each varies
+%  from 0 to 1, whereas the kml color format is aabbggrr, where each
+%  varies from 00 to ff.)
+
+if ~exist('lwidth','var')
+    lwidth=1;
+end
+if ~exist('popac','var')
+    popac=0.50;
+end
+
+klsty=kml_linestyle();
+klsty.color     ='ff000000';
+klsty.colormode ='normal';
+klsty.width     =lwidth;
+kpsty=kml_polystyle();
+kpsty.color     =sprintf('%02xffffff',round(popac*255));
+kpsty.colormode ='random';
+kstyle=kml_style();
+kstyle.id        =sprintf('BlackLineRandomPoly');
+kstyle.line      =klsty;
+kstyle.poly      =kpsty;
+kdoc.style{1}(end+1)=kstyle;
+clear kstyle kpsty klsty
+
+klsty=kml_linestyle();
+klsty.color     ='ff000000';
+klsty.colormode ='normal';
+klsty.width     =lwidth;
+kpsty=kml_polystyle();
+kpsty.color     =sprintf('00ffffff');
+kpsty.colormode ='random';
+kstyle=kml_style();
+kstyle.id        =sprintf('BlackLineEmptyPoly');
+kstyle.line      =klsty;
+kstyle.poly      =kpsty;
+kdoc.style{1}(end+1)=kstyle;
+clear kstyle kpsty klsty
+
+klsty=kml_linestyle();
+klsty.color     ='ff0000ff';
+klsty.colormode ='normal';
+klsty.width     =lwidth;
+kpsty=kml_polystyle();
+kpsty.color     =sprintf('%02x0000ff',round(popac*255));
+kpsty.colormode ='random';
+kstyle=kml_style();
+kstyle.id        =sprintf('RedLineRedPoly');
+kstyle.line      =klsty;
+kstyle.poly      =kpsty;
+kdoc.style{1}(end+1)=kstyle;
+clear kstyle kpsty klsty
+
+%  colormap command operates on a figure, so create an invisible one
+%  (could also directly call colormaps, e.g. jet(64), but risky)
+
+if exist('edata','var')
+    hfig=figure('Visible','off');
+    if exist('cmap','var')
+        colormap(cmap)
+    end
+    cmap=colormap;
+    close(hfig)
+
+    disp(['Writing ' num2str(size(cmap,1)) ' Matlab colors as KML style templates.']);
+    for i=1:size(cmap,1)
+        klsty=kml_linestyle();
+        klsty.color     ='ff000000';
+        klsty.colormode ='normal';
+        klsty.width     =lwidth;
+        kpsty=kml_polystyle();
+        kpsty.color     =sprintf('%02x%02x%02x%02x',round(popac*255),...
+            round(cmap(i,3)*255),round(cmap(i,2)*255),round(cmap(i,1)*255));
+        kpsty.colormode ='normal';
+        kstyle=kml_style();
+        kstyle.id        =sprintf('MatlabColor%d',i);
+        kstyle.line      =klsty;
+        kstyle.poly      =kpsty;
+        kdoc.style{1}(end+1)=kstyle;
+        clear kstyle kpsty klsty
+    end
+end
+
+%  write folder for mesh
+
+kdoc.feature{1}(end+1)=kml_mesh_elem(md,varargin{3:end});
+
+%  write folder for partition segments
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    kdoc.feature{1}(end+1)=kml_part_flagedges(md,varargin{3:end});
+end
+
+%  write folder for unshared edges
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    kdoc.feature{1}(end+1)=kml_unsh_edges(md,varargin{3:end});
+end
+
+%  write folder for partition elements
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    kdoc.feature{1}(end+1)=kml_part_elems(md,varargin{3:end});
+end
+
+%  write folder for partition edges
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    kdoc.feature{1}(end+1)=kml_part_edges(md,varargin{3:end});
+end
+
+%  write folder for partitions
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    kdoc.feature{1}(end+1)=kml_partitions(md,varargin{3:end});
+end
+
+%%  write kml file
+
+kml_file_write(kdoc,filek);
+% kml_file_swrite(kdoc,filek);
+delete(kdoc);
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_multigeometry.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_multigeometry.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_multigeometry.m	(revision 21239)
@@ -0,0 +1,230 @@
+%
+%  definition for the kml_multigeometry sub (derived) class.
+%
+%  [kml]=kml_multigeometry(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, multigeometry id, '')
+%    geometry      (cell array, multigeometry geometry)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_multigeometry < kml_geometry
+    properties
+        geometry  ={};
+    end
+
+    methods
+        function [kml]=kml_multigeometry(varargin)
+
+            kml=kml@kml_geometry(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_multigeometry());
+
+                        for i=length(fieldnames(kml_geometry()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_geometry(kml(i));
+                disp(sprintf('      geometry: %s %s\n' ,string_size(kml(i).geometry),...
+                             class(kml(i).geometry)));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_geometry());
+            fnames={fnames{:} ...
+                    'geometry' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the multigeometry
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<MultiGeometry id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<MultiGeometry>\n',indent);
+                end
+                kml_write@kml_geometry(kmli,fid,indent);
+
+%  loop over the geometry elements for each multigeometry
+
+                for j=1:numel(kmli.geometry)
+                    kmlij=kmli.geometry{j};
+                    if ~isempty(kmlij)
+                        if isa(kmlij,'kml_geometry')
+                            kml_write(kmlij,fid,[indent '  ']);
+                        else
+                            warning('kml(%d).geometry{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmlij),'kml_geometry');
+                        end
+                    end
+                end
+
+                fprintf(fid,'%s</MultiGeometry>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the multigeometry
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<MultiGeometry id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<MultiGeometry>\n',indent));
+                end
+                sbuf=kml_swrite@kml_geometry(kmli,sbuf,indent);
+
+%  loop over the geometry elements for each multigeometry
+
+                for j=1:numel(kmli.geometry)
+                    kmlij=kmli.geometry{j};
+                    if ~isempty(kmlij)
+                        if isa(kmlij,'kml_geometry')
+                            sbuf=kml_swrite(kmlij,sbuf,[indent '  ']);
+                        else
+                            warning('kml(%d).geometry{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmlij),'kml_geometry');
+                        end
+                    end
+                end
+
+                sbuf=add(sbuf,sprintf('%s</MultiGeometry>\n',indent));
+            end
+
+        end
+
+%  delete the object
+
+        function []=delete(kml)
+
+%  loop over the multigeometry
+
+            for i=numel(kml):-1:1
+                kmli=kml(i);
+
+%  loop over the geometry elements for each multigeometry
+
+                for j=numel(kmli.geometry):-1:1
+                    kmlij=kmli.geometry{j};
+                    if ~isempty(kmlij)
+                        if isa(kmlij,'kml_geometry')
+                            delete(kmlij);
+                        else
+                            warning('kml(%d).geometry{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmlij),'kml_geometry');
+                        end
+                    end
+                end
+                kmli.geometry  ={};
+
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_object.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_object.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_object.m	(revision 21239)
@@ -0,0 +1,179 @@
+%
+%  definition for the kml_object super (base) abstract class.
+%
+%  [kml]=kml_object(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, object id, '')
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_object < handle
+    properties
+        id        ='';
+    end
+
+    methods
+        function [kml]=kml_object(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_object());
+
+                        for i=1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                if strcmp(class(kml),'kml_object')
+                    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                        class(kml),inputname(1),string_dim(kml,i)));
+                end
+
+                if strcmp(class(kml),'kml_object')
+                    disp(sprintf('            id: ''%s''\n',kml(i).id));
+                else
+                    disp(sprintf('            id: ''%s'''  ,kml(i).id));
+                end
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames={'id'};
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the objects
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_object')
+                    if ~isempty(kmli.id)
+                        fprintf(fid,'%s<!Object id="%s">\n',indent,kmli.id);
+                    else
+                        fprintf(fid,'%s<!Object>\n',indent);
+                    end
+                end
+
+                if strcmp(class(kml),'kml_object')
+                    fprintf(fid,'%s</!Object>\n',indent);
+                end
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the objects
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_object')
+                    if ~isempty(kmli.id)
+                        sbuf=add(sbuf,sprintf('%s<!Object id="%s">\n',indent,kmli.id));
+                    else
+                        sbuf=add(sbuf,sprintf('%s<!Object>\n',indent));
+                    end
+                end
+
+                if strcmp(class(kml),'kml_object')
+                    sbuf=add(sbuf,sprintf('%s</!Object>\n',indent));
+                end
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_part_edges.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_part_edges.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_part_edges.m	(revision 21239)
@@ -0,0 +1,482 @@
+%%
+%  create kml linestrings for the partition edges.
+%
+%  [kfold]=kml_part_edges(md,params)
+%
+%  where the required input is:
+%    md            (model, model class object)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  and the optional input is:
+%    latsgn        (numeric, +1/-1 for north/south latitude)
+%    data          (numeric, element or nodal results data)
+%    alt           (numeric, altitude for polygons, default 10000)
+%    cmin          (numeric, minimum of color map)
+%    cmax          (numeric, maximum of color map)
+%    cmap          (char or numeric, colormap definition)
+%    prtplt        (char, 'off'/'no' for partition segment plot)
+%
+%  and the required output is:
+%    kfold         (kml_folder, folder of linestring placemarks)
+%
+function [kfold]=kml_part_edges(varargin)
+
+if ~nargin
+    help kml_part_edges
+    return
+end
+
+%%  process input data
+
+iarg=1;
+if (nargin >= 1)
+    md=varargin{1};
+end
+if ~exist('md','var') || isempty(md) || ~isa(md,'model')
+    error(['Model ''' inputname(iarg) ''' is unrecognized class ''' class(md) '''.']);
+end
+
+%  parameters
+
+iarg=iarg+1;
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'latsgn','data','alt',...
+                 'cmin','cmax','cmap','prtplt'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1},20) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1},20) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    if strcmpi(varargin{iarg},'data')
+        cdata=inputname(iarg+1);
+    end
+    iarg=iarg+2;
+end
+
+if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
+   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
+    if     ~exist('latsgn','var')
+        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
+    elseif (abs(latsgn) ~= 1)
+        error(['Incorrect latsgn=' num2str(latsgn) ' parameter to calculate missing lat/long data.']);
+    else
+        display('Converting x/y data to lat/long data.');
+        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
+    end
+end
+
+if exist('data','var') && ~isempty(data)
+    if     (numel(data)==md.mesh.numberofelements)
+        edata=data;
+    elseif (numel(data)==md.mesh.numberofvertices)
+        ndata=data;
+        display('Averaging nodal data to element data.');
+        edata=zeros(1,md.mesh.numberofelements);
+        for i=1:size(md.mesh.elements,1)
+            for j=1:size(md.mesh.elements,2)
+                edata(i)=edata(i)+ndata(md.mesh.elements(i,j));
+            end
+            edata(i)=edata(i)/size(md.mesh.elements,2);
+        end
+    else
+        error(['Data has incorrect number of ' num2str(numel(data)) ' values.']);
+    end
+end
+
+%  colormap command operates on a figure, so create an invisible one
+%  (could also directly call colormaps, e.g. jet(64), but risky)
+
+hfig=figure('Visible','off');
+if exist('cmap','var')
+    colormap(cmap)
+end
+cmap=colormap;
+close(hfig)
+
+if exist('edata','var')
+    if ~exist('cmin','var')
+        cmin=min(min(edata));
+    end
+    if ~exist('cmax','var')
+        cmax=max(max(edata));
+    end
+end
+
+if ~exist('alt','var')
+    alt=10000;
+end
+
+%%  write folder for partition edges
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    kfold=kml_folder();
+    kfold.name      ='Partition Edges';
+    kfold.visibility=1;
+    kfold.descript  =sprintf('Partitions=%d, Nodes=%d',...
+        md.qmu.numberofpartitions,md.mesh.numberofvertices);
+    kfold.feature   ={repmat(kml_placemark(),1,md.qmu.numberofpartitions)};
+
+%  write each partition as a linestring multigeometry placemark
+
+    disp(['Writing ' num2str(md.qmu.numberofpartitions) ' partitions as KML linestrings.']);
+    epart=md.qmu.partition(md.mesh.elements)+1;
+    if exist('ndata','var') || exist('edata','var')
+        pdata=zeros(1,md.qmu.numberofpartitions);
+        pdata(:)=NaN;
+    end
+
+%  loop over each partition
+
+    for k=1:md.qmu.numberofpartitions
+%        disp(['partition k=' int2str(k)])
+
+%  for each partition, find all the included elements and determine the
+%  perimeter (including those shared by another partition)
+
+        [icol,irow]=find(epart'==k);
+        if isempty(irow)
+            continue;
+        end
+        irow=unique(irow);
+        elemp=md.mesh.elements(irow,:);
+        epartp=epart(irow,:);
+        nodeconp=kmlnodeconnectivity(elemp,md.mesh.numberofvertices);
+        [edgeadjp]=edgeadjacency(elemp,nodeconp);
+        [edgeper,elemper,iloop]=edgeperimeter(elemp,nodeconp,edgeadjp);
+        iloop(end+1)=size(edgeper,1)+1;
+
+%  determine the data to be used for the colors (if any)
+
+        if exist('ndata','var')
+            pdata(k)=ndata(find(md.qmu.partition+1==k,1));
+        elseif exist('edata','var')
+            for i=1:size(epartp,1)
+                if isempty(find(epart(i,:)~=k,1))
+                    pdata(k)=edata(irow(i));
+                    break
+                end
+            end
+            if isnan(pdata(k))
+                warning('Data for Partition %d is not defined.\n',k)
+            end
+        end
+
+%  set up the placemark with multigeometry
+
+        kplace=kml_placemark();
+        if (length(iloop)-1 > 1)
+            kplace.name      =sprintf('Partition %d (%d loops)',k,length(iloop)-1);
+        else
+            kplace.name      =sprintf('Partition %d',k);
+        end
+        kplace.visibility=1;
+        if exist('pdata','var')
+            kplace.descript  =sprintf('Partition data: %g',pdata(k));
+            imap = fix((pdata(k)-cmin)/(cmax-cmin)*size(cmap,1))+1;
+            if     (imap >= 1) && (imap <= size(cmap,1))
+                kplace.styleurl  =sprintf('#MatlabColor%d',imap);
+            elseif (pdata(k) == cmax)
+                kplace.styleurl  =sprintf('#MatlabColor%d',size(cmap,1));
+            else
+                kplace.styleurl  =sprintf('#BlackLineEmptyPoly');
+            end
+        else
+            kplace.styleurl  =sprintf('#BlackLineRandomPoly');
+        end
+
+        kmgeom=kml_multigeometry();
+        kmgeom.geometry  ={repmat(kml_linestring(),1,length(iloop)-1)};
+
+%  loop over each loop of the perimeter for the given partition
+
+        for i=1:length(iloop)-1
+            kline=kml_linestring();
+            kline.extrude   =1;
+            kline.tessellate=1;
+            kline.altmode   ='relativeToGround';
+            kline.coords    =zeros(0,3);
+
+            elast=0;
+            nlast=0;
+            slast=0;
+            lat=[];
+            long=[];
+
+%  loop over the element edges on the loop of the partition
+
+            j=iloop(i);
+            while (j < iloop(i+1))
+%  find which side of element is referenced in perimeter list
+                for l=1:size(elemp,2)
+                    if ((elemp(elemper(j),l)          == edgeper(j,1)) && ...
+                        (elemp(elemper(j),mod(l,3)+1) == edgeper(j,2))) || ...
+                       ((elemp(elemper(j),l)          == edgeper(j,2)) && ...
+                        (elemp(elemper(j),mod(l,3)+1) == edgeper(j,1)))
+                        jedge=l;
+                        break
+                    end
+                end
+
+%  check if element side connects nodes in partition
+                if (epartp(elemper(j),jedge)          == k) && ...
+                   (epartp(elemper(j),mod(jedge,3)+1) == k)
+%  write out specified element side
+%                    disp(['segment j=' int2str(j) ' unshared edge ' int2str(edgeper(j,1)) ' to ' int2str(edgeper(j,2)) ' on side ' int2str(jedge) ' from element ' int2str(elemper(j)) ' written.'])
+%  if first edge, write out first node
+                    if ~elast
+                        kline.coords(end+1,:)=[md.mesh.long(edgeper(j,1)) md.mesh.lat(edgeper(j,1)) alt];
+                    end
+                    kline.coords(end+1,:)=[md.mesh.long(edgeper(j,2)) md.mesh.lat(edgeper(j,2)) alt];
+                    elast=elemper(j);
+                    nlast=edgeper(j,2);
+                    slast=0;
+                    j=j+1;
+
+%  element not entirely within partition, so figure out boundary
+                else
+%                    disp(['segment j=' int2str(j) ' from element ' int2str(elemper(j)) ' shared by other partitions.'])
+                    ielem=elemper(j);
+
+%  follow partition boundary through elements not wholly in partition
+%  (may include elements not in perimeter list)
+
+                    while 1
+%  if first edge, figure out direction from perimeter edge direction
+                        if ~nlast && ~slast
+                            nlast=find(elemp(ielem,:)==edgeper(j,1));
+                            nnext=find(elemp(ielem,:)==edgeper(j,2));
+                            if     (nlast+nnext == 3)
+                                slast=1;
+                            elseif (nlast+nnext == 5)
+                                slast=2;
+                            elseif (nlast+nnext == 4)
+                                slast=3;
+                            end
+                            if     (nnext+(6-nlast-nnext) == 3)
+                                snext=1;
+                            elseif (nnext+(6-nlast-nnext) == 5)
+                                snext=2;
+                            elseif (nnext+(6-nlast-nnext) == 4)
+                                snext=3;
+                            end
+
+%  find how many nodes of current element are in current partition
+%  (1 or 2, not 3) and handle each permutation separately
+                            ipart=find(epartp(ielem,:)==k);
+%  two nodes are in current partition, so cut off other node
+                            if (length(ipart) == 2)
+                                switch 6-sum(ipart)
+                                    case nlast
+                                        slast=6-slast-snext;
+                                        nlast=0;
+                                    case nnext
+                                        if (epartp(ielem,nnext) == k)
+                                            nlast=nnext;
+                                        end
+                                    otherwise
+                                        slast=6-slast-snext;
+                                        nlast=0;
+                                end
+%  one node is in current partition
+                            else
+%  all different, so cut through centroid
+                                if (epartp(ielem,1) ~= epartp(ielem,2)) && ...
+                                   (epartp(ielem,2) ~= epartp(ielem,3)) && ...
+                                   (epartp(ielem,3) ~= epartp(ielem,1))
+                                    switch ipart
+                                        case {nlast,nnext}
+                                            if (epartp(ielem,nnext) == k)
+                                                nlast=nnext;
+                                            end
+                                        otherwise
+                                            slast=6-slast-snext;
+                                            nlast=0;
+                                    end
+%  other two are in the same partition, so cut them off
+                                else
+                                    switch ipart
+                                        case nlast
+                                            if (epartp(ielem,nnext) == k)
+                                                nlast=nnext;
+                                            end
+                                        case nnext
+                                            slast=snext;
+                                            nlast=0;
+                                        otherwise
+                                            slast=6-slast-snext;
+                                            nlast=0;
+                                    end
+                                end
+                            end
+
+%  last edge exited last element at node
+                            if nlast
+%  write out first node of first side for half-edge to midpoint
+%                                disp(['segment j=' int2str(j) ' unshared half edge from node ' int2str(elemp(ielem,nlast)) ' (node ' int2str(nlast) ') on side ' int2str(slast) ' from element ' int2str(ielem) ' written.'])
+                                kline.coords(end+1,:)=[md.mesh.long(elemp(ielem,nlast)) ...
+                                                       md.mesh.lat(elemp(ielem,nlast)) alt];
+                            end
+                            nlast=0;
+
+%  write out midpoint of first side
+                            kline.coords(end+1,:)=[(md.mesh.long(elemp(ielem,slast))...
+                                                   +md.mesh.long(elemp(ielem,mod(slast,3)+1)))/2. ...
+                                                   (md.mesh.lat(elemp(ielem,slast))...
+                                                   +md.mesh.lat(elemp(ielem,mod(slast,3)+1)))/2. alt];
+                        end
+
+%  last edge exited last element at node
+                        if nlast
+                            if elast
+%  find where last node on previous element occurs on current element
+                                nlast=find(elemp(ielem,:)==nlast,1);
+                            end
+%  half-edge occurs on unshared side from current node (unique unless mesh
+%  is only attached at node)
+                            switch nlast
+                                case 1
+                                    if ~edgeadjp(ielem,1)
+                                        nnext=2;
+                                        slast=1;
+                                    else
+                                        nnext=3;
+                                        slast=3;
+                                    end
+                                case 2
+                                    if ~edgeadjp(ielem,2)
+                                        nnext=3;
+                                        slast=2;
+                                    else
+                                        nnext=1;
+                                        slast=1;
+                                    end
+                                case 3
+                                    if ~edgeadjp(ielem,3)
+                                        nnext=1;
+                                        slast=3;
+                                    else
+                                        nnext=2;
+                                        slast=2;
+                                    end
+                            end
+%  write out half-edge from current node to midpoint of unshared side
+%                            disp(['segment j=' int2str(j) ' unshared half edge from node ' int2str(elemp(ielem,nlast)) ' (node ' int2str(nlast) ') on side ' int2str(slast) ' from element ' int2str(ielem) ' written.'])
+                            kline.coords(end+1,:)=[(md.mesh.long(elemp(ielem,nlast))...
+                                                   +md.mesh.long(elemp(ielem,nnext)))/2. ...
+                                                   (md.mesh.lat(elemp(ielem,nlast))...
+                                                   +md.mesh.lat(elemp(ielem,nnext)))/2. alt];
+                            nlast=0;
+
+%  last edge exited last element at midpoint of side
+                        elseif slast
+                            if elast
+%  find where last side on previous element occurs on current element
+                                slast=find(edgeadjp(ielem,:)==elast,1);
+                            end
+                        end
+
+%  find how many nodes of current element are in current partition
+%  (1 or 2, not 3) and handle each permutation separately
+                        ipart=find(epartp(ielem,:)==k);
+                        if (length(ipart) == 2)
+%  two nodes are in current partition, so cut off other node
+                            switch 6-sum(ipart)
+                                case 1
+                                    snext=3+1-slast;
+                                case 2
+                                    snext=1+2-slast;
+                                case 3
+                                    snext=2+3-slast;
+                            end
+                        else
+                            if (epartp(ielem,1) ~= epartp(ielem,2)) && ...
+                               (epartp(ielem,2) ~= epartp(ielem,3)) && ...
+                               (epartp(ielem,3) ~= epartp(ielem,1))
+%  all different, so cut through centroid
+%                                disp(['element ielem=' int2str(ielem) ' centroid written.'])
+                                kline.coords(end+1,:)=[sum(md.mesh.long(elemp(ielem,:)))/3. ...
+                                                       sum(md.mesh.lat(elemp(ielem,:)))/3. alt];
+                            end
+%  one node is in current partition, so cut off other two nodes
+                            switch ipart
+                                case 1
+                                    snext=3+1-slast;
+                                case 2
+                                    snext=1+2-slast;
+                                case 3
+                                    snext=2+3-slast;
+                            end
+                        end
+%  write out midpoint of opposite side
+%                        disp(['segment j=' int2str(j) ' internal edge from side ' int2str(slast) ' to side ' int2str(snext) ' from element ' int2str(ielem) ' written.'])
+                        kline.coords(end+1,:)=[(md.mesh.long(elemp(ielem,snext))...
+                                               +md.mesh.long(elemp(ielem,mod(snext,3)+1)))/2. ...
+                                               (md.mesh.lat(elemp(ielem,snext))...
+                                               +md.mesh.lat(elemp(ielem,mod(snext,3)+1)))/2. alt];
+                        elast=ielem;
+                        nlast=0;
+                        slast=snext;
+%  find adjacent element to opposite side
+                        ielem=edgeadjp(elast,slast);
+%  if opposite side is unshared, find it in edge perimeter list
+                        if ~ielem
+                            jlast=find(elemper(j:end)==elast)+j-1;
+                            j=0;
+                            for l=1:length(jlast)
+                                if ((elemp(elast,slast)          == edgeper(jlast(l),1)) && ...
+                                    (elemp(elast,mod(slast,3)+1) == edgeper(jlast(l),2))) || ...
+                                   ((elemp(elast,slast)          == edgeper(jlast(l),2)) && ...
+                                    (elemp(elast,mod(slast,3)+1) == edgeper(jlast(l),1)))
+                                    j=jlast(l);
+                                    break
+                                end
+                            end
+                            if ~j
+                                j=iloop(i+1)-1;
+                            end
+%  write out half-edge from midpoint of unshared side to node
+                            if (epartp(elast,slast) == k)
+                                nnext=slast;
+                            else
+                                nnext=mod(slast,3)+1;
+                            end
+%                            disp(['segment j=' int2str(j) ' unshared half edge on side ' int2str(slast) ' to node ' int2str(elemp(elast,nnext)) ' (node ' int2str(nnext) ') from element ' int2str(elast) ' written.'])
+                            kline.coords(end+1,:)=[md.mesh.long(elemp(elast,nnext)) ...
+                                                   md.mesh.lat(elemp(elast,nnext)) alt];
+                            break
+%  if not unshared, advance perimeter list and watch for end
+                        else
+                            if (elast == elemper(j))
+                                if (j+1 < iloop(i+1)) && ...
+                                   ~isempty(find(elemper(j+1:end)~=elast,1))
+                                    j=j+find(elemper(j+1:end)~=elast,1);
+                                else
+                                    break
+                                end
+                            end
+                        end
+                    end
+                    j=j+1;
+                end
+            end
+
+            kmgeom.geometry{1}(i)=kline;
+            clear kline
+        end
+
+        kplace.geometry=kmgeom;
+        kfold.feature{1}(k)=kplace;
+        clear kmgeom kplace
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_part_elems.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_part_elems.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_part_elems.m	(revision 21239)
@@ -0,0 +1,216 @@
+%%
+%  create kml polygons for the partition elements.
+%
+%  [kfold]=kml_part_elems(md,params)
+%
+%  where the required input is:
+%    md            (model, model class object)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  and the optional input is:
+%    latsgn        (numeric, +1/-1 for north/south latitude)
+%    data          (numeric, element or nodal results data)
+%    alt           (numeric, altitude for polygons, default 10000)
+%    cmin          (numeric, minimum of color map)
+%    cmax          (numeric, maximum of color map)
+%    cmap          (char or numeric, colormap definition)
+%    prtplt        (char, 'off'/'no' for partition segment plot)
+%
+%  and the required output is:
+%    kfold         (kml_folder, folder of polygon placemarks)
+%
+function [kfold]=kml_part_elems(varargin)
+
+if ~nargin
+    help kml_part_elems
+    return
+end
+
+%%  process input data
+
+iarg=1;
+if (nargin >= 1)
+    md=varargin{1};
+end
+if ~exist('md','var') || isempty(md) || ~isa(md,'model')
+    error(['Model ''' inputname(iarg) ''' is unrecognized class ''' class(md) '''.']);
+end
+
+%  parameters
+
+iarg=iarg+1;
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'latsgn','data','alt',...
+                 'cmin','cmax','cmap','prtplt'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1},20) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1},20) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    if strcmpi(varargin{iarg},'data')
+        cdata=inputname(iarg+1);
+    end
+    iarg=iarg+2;
+end
+
+if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
+   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
+    if     ~exist('latsgn','var')
+        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
+    elseif (abs(latsgn) ~= 1)
+        error(['Incorrect latsgn=' num2str(latsgn) ' parameter to calculate missing lat/long data.']);
+    else
+        display('Converting x/y data to lat/long data.');
+        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
+    end
+end
+
+if exist('data','var') && ~isempty(data)
+    if     (numel(data)==md.mesh.numberofelements)
+        edata=data;
+    elseif (numel(data)==md.mesh.numberofvertices)
+        ndata=data;
+        display('Averaging nodal data to element data.');
+        edata=zeros(1,md.mesh.numberofelements);
+        for i=1:size(md.mesh.elements,1)
+            for j=1:size(md.mesh.elements,2)
+                edata(i)=edata(i)+ndata(md.mesh.elements(i,j));
+            end
+            edata(i)=edata(i)/size(md.mesh.elements,2);
+        end
+    else
+        error(['Data has incorrect number of ' num2str(numel(data)) ' values.']);
+    end
+end
+
+%  colormap command operates on a figure, so create an invisible one
+%  (could also directly call colormaps, e.g. jet(64), but risky)
+
+hfig=figure('Visible','off');
+if exist('cmap','var')
+    colormap(cmap)
+end
+cmap=colormap;
+close(hfig)
+
+if exist('edata','var')
+    if ~exist('cmin','var')
+        cmin=min(min(edata));
+    end
+    if ~exist('cmax','var')
+        cmax=max(max(edata));
+    end
+end
+
+if ~exist('alt','var')
+    alt=10000;
+end
+
+%  write folder for partition elements
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    kfold=kml_folder();
+    kfold.name      ='Partition Elements';
+    kfold.visibility=1;
+    kfold.descript  =sprintf('Partitions=%d, Nodes=%d\n',...
+        md.qmu.numberofpartitions,md.mesh.numberofvertices);
+    kfold.feature   ={repmat(kml_placemark(),1,md.qmu.numberofpartitions)};
+
+%  write each partition loop as a polygon multigeometry placemark
+
+    disp(['Writing ' num2str(md.qmu.numberofpartitions) ' partitions as KML polygons.']);
+    epart=md.qmu.partition(md.mesh.elements)+1;
+    if exist('ndata','var') || exist('edata','var')
+        pdata=zeros(1,md.qmu.numberofpartitions);
+        pdata(:)=NaN;
+    end
+
+%  loop over each partition
+
+    for k=1:md.qmu.numberofpartitions
+
+%  for each partition, find all the included elements
+
+        [icol,irow]=find(epart'==k);
+        if isempty(irow)
+            continue;
+        end
+        irow=unique(irow);
+        elem=md.mesh.elements(irow,:);
+
+%  determine the data to be used for the colors (if any)
+
+        if exist('ndata','var')
+            pdata(k)=ndata(find(md.qmu.partition+1==k,1));
+        elseif exist('edata','var')
+            for i=1:size(epart,1)
+                if isempty(find(epart(i,:)~=k,1))
+                    pdata(k)=edata(i);
+                    break
+                end
+            end
+            if isnan(pdata(k))
+                warning('Data for Partition %d is not defined.\n',k)
+            end
+        end
+
+%  set up the placemark with multigeometry
+
+        kplace=kml_placemark();
+        kplace.name      =sprintf('Partition %d (%d elements)',k,size(elem,1));
+        kplace.visibility=1;
+        if exist('pdata','var')
+            kplace.descript  =sprintf('Partition data: %g',pdata(k));
+            imap = fix((pdata(k)-cmin)/(cmax-cmin)*size(cmap,1))+1;
+            if     (imap >= 1) && (imap <= size(cmap,1))
+                kplace.styleurl  =sprintf('#MatlabColor%d',imap);
+            elseif (pdata(k) == cmax)
+                kplace.styleurl  =sprintf('#MatlabColor%d',size(cmap,1));
+            else
+                kplace.styleurl  =sprintf('#BlackLineEmptyPoly');
+            end
+        else
+            kplace.styleurl  =sprintf('#BlackLineRandomPoly');
+        end
+
+        kmgeom=kml_multigeometry();
+        kmgeom.geometry  ={repmat(kml_polygon(),1,size(elem,1))};
+
+%  loop over each element for the given partition
+
+        for i=1:size(elem,1)
+            kpoly=kml_polygon();
+            kpoly.extrude   =1;
+            kpoly.altmode   ='relativeToGround';
+
+            kring=kml_linearring();
+            kring.coords    =zeros(size(elem,2)+1,3);
+
+%  loop over the element nodes
+
+            for j=1:size(elem,2)
+                kring.coords(j,:)=[md.mesh.long(elem(i,j)) md.mesh.lat(elem(i,j)) alt];
+            end
+            kring.coords(end,:)=kring.coords(1,:);
+
+            kpoly.outer=kring;
+            kmgeom.geometry{1}(i)=kpoly;
+            clear kring kpoly
+        end
+
+        kplace.geometry=kmgeom;
+        kfold.feature{1}(k)=kplace;
+        clear kmgeom kplace
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_part_flagedges.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_part_flagedges.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_part_flagedges.m	(revision 21239)
@@ -0,0 +1,109 @@
+%%
+%  create kml linestrings for the flagged partition edges.
+%
+%  [kfold]=kml_part_flagedges(md,params)
+%
+%  where the required input is:
+%    md            (model, model class object)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  and the optional input is:
+%    latsgn        (numeric, +1/-1 for north/south latitude)
+%    alt           (numeric, altitude for polygons, default 10000)
+%    prtplt        (char, 'off'/'no' for partition edge plot)
+%
+%  and the required output is:
+%    kfold         (kml_folder, folder of linestring placemarks)
+%
+function [kfold]=kml_part_flagedges(varargin)
+
+if ~nargin
+    help kml_part_flagedges
+    return
+end
+
+%%  process input data
+
+iarg=1;
+if (nargin >= 1)
+    md=varargin{1};
+end
+if ~exist('md','var') || isempty(md) || ~isa(md,'model')
+    error(['Model ''' inputname(iarg) ''' is unrecognized class ''' class(md) '''.']);
+end
+
+%  parameters
+
+iarg=iarg+1;
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'latsgn','alt','prtplt'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1},20) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1},20) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
+   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
+    if     ~exist('latsgn','var')
+        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
+    elseif (abs(latsgn) ~= 1)
+        error(['Incorrect latsgn=' num2str(latsgn) ' parameter to calculate missing lat/long data.']);
+    else
+        display('Converting x/y data to lat/long data.');
+        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
+    end
+end
+
+if ~exist('alt','var')
+    alt=10000;
+end
+
+%%  write folder for partition segments
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    [latseg,lonseg]=flagedges(md.mesh.elements,md.mesh.lat,md.mesh.long,md.qmu.partition);
+    kfold=kml_folder();
+    kfold.name      ='Partition Segments';
+    kfold.visibility=1;
+    kfold.descript  =sprintf('Partitions=%d, Segments=%d',...
+        md.qmu.numberofpartitions,size(latseg,1));
+    kfold.feature   ={repmat(kml_placemark(),1,size(latseg,1))};
+
+%  write each segment as a linestring placemark
+
+    disp(['Writing ' num2str(size(latseg,1)) ' partition segments as KML linestrings.']);
+    for i=1:size(latseg,1)
+        kplace=kml_placemark();
+        kplace.name      =sprintf('Segment %d',i);
+        kplace.visibility=1;
+        kplace.styleurl  ='#RedLineRedPoly';
+
+        kline=kml_linestring();
+        kline.extrude   =1;
+        kline.tessellate=1;
+        kline.altmode   ='relativeToGround';
+        kline.coords    =zeros(2,3);
+
+        for j=1:2
+            kline.coords(j,:)=[lonseg(i,j) latseg(i,j) alt];
+        end
+
+        kplace.geometry=kline;
+        kfold.feature{1}(i)=kplace;
+        clear kline kplace
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_partitions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_partitions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_partitions.m	(revision 21239)
@@ -0,0 +1,485 @@
+%%
+%  create kml polygons for the partitions.
+%
+%  [kfold]=kml_partitions(fid,md,params)
+%
+%  where the required input is:
+%    fid           (char, file ID of .kml file)
+%    md            (model, model class object)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  and the optional input is:
+%    latsgn        (numeric, +1/-1 for north/south latitude)
+%    data          (numeric, element or nodal results data)
+%    alt           (numeric, altitude for polygons, default 10000)
+%    cmin          (numeric, minimum of color map)
+%    cmax          (numeric, maximum of color map)
+%    cmap          (char or numeric, colormap definition)
+%    prtplt        (char, 'off'/'no' for partition segment plot)
+%
+%  and the required output is:
+%    kfold         (kml_folder, folder of polygon placemarks)
+%
+function [kfold]=kml_partitions(varargin)
+
+if ~nargin
+    help kml_part_edges
+    return
+end
+
+%%  process input data
+
+iarg=1;
+if (nargin >= 1)
+    md=varargin{1};
+end
+if ~exist('md','var') || isempty(md) || ~isa(md,'model')
+    error(['Model ''' inputname(iarg) ''' is unrecognized class ''' class(md) '''.']);
+end
+
+%  parameters
+
+iarg=iarg+1;
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'latsgn','data','alt',...
+                 'cmin','cmax','cmap','prtplt'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1},20) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1},20) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    if strcmpi(varargin{iarg},'data')
+        cdata=inputname(iarg+1);
+    end
+    iarg=iarg+2;
+end
+
+if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
+   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
+    if     ~exist('latsgn','var')
+        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
+    elseif (abs(latsgn) ~= 1)
+        error(['Incorrect latsgn=' num2str(latsgn) ' parameter to calculate missing lat/long data.']);
+    else
+        display('Converting x/y data to lat/long data.');
+        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
+    end
+end
+
+if exist('data','var') && ~isempty(data)
+    if     (numel(data)==md.mesh.numberofelements)
+        edata=data;
+    elseif (numel(data)==md.mesh.numberofvertices)
+        ndata=data;
+        display('Averaging nodal data to element data.');
+        edata=zeros(1,md.mesh.numberofelements);
+        for i=1:size(md.mesh.elements,1)
+            for j=1:size(md.mesh.elements,2)
+                edata(i)=edata(i)+ndata(md.mesh.elements(i,j));
+            end
+            edata(i)=edata(i)/size(md.mesh.elements,2);
+        end
+    else
+        error(['Data has incorrect number of ' num2str(numel(data)) ' values.']);
+    end
+end
+
+%  colormap command operates on a figure, so create an invisible one
+%  (could also directly call colormaps, e.g. jet(64), but risky)
+
+hfig=figure('Visible','off');
+if exist('cmap','var')
+    colormap(cmap)
+end
+cmap=colormap;
+close(hfig)
+
+if exist('edata','var')
+    if ~exist('cmin','var')
+        cmin=min(min(edata));
+    end
+    if ~exist('cmax','var')
+        cmax=max(max(edata));
+    end
+end
+
+if ~exist('alt','var')
+    alt=10000;
+end
+
+%%  write folder for partitions
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    kfold=kml_folder();
+    kfold.name      ='Partitions';
+    kfold.visibility=1;
+    kfold.descript  =sprintf('Partitions=%d, Nodes=%d',...
+        md.qmu.numberofpartitions,md.mesh.numberofvertices);
+    kfold.feature   ={repmat(kml_placemark(),1,md.qmu.numberofpartitions)};
+
+%  write each partition as a polygon multigeometry placemark
+
+    disp(['Writing ' num2str(md.qmu.numberofpartitions) ' partitions as KML polygons.']);
+    epart=md.qmu.partition(md.mesh.elements)+1;
+    if exist('ndata','var') || exist('edata','var')
+        pdata=zeros(1,md.qmu.numberofpartitions);
+        pdata(:)=NaN;
+    end
+
+%  loop over each partition
+
+    for k=1:md.qmu.numberofpartitions
+%        disp(['partition k=' int2str(k)])
+
+%  for each partition, find all the included elements and determine the
+%  perimeter (including those shared by another partition)
+
+        [icol,irow]=find(epart'==k);
+        if isempty(irow)
+            continue;
+        end
+        irow=unique(irow);
+        elemp=md.mesh.elements(irow,:);
+        epartp=epart(irow,:);
+        nodeconp=kmlnodeconnectivity(elemp,md.mesh.numberofvertices);
+        [edgeadjp]=edgeadjacency(elemp,nodeconp);
+        [edgeper,elemper,iloop]=edgeperimeter(elemp,nodeconp,edgeadjp);
+        iloop(end+1)=size(edgeper,1)+1;
+
+%  determine the data to be used for the colors (if any)
+
+        if exist('ndata','var')
+            pdata(k)=ndata(find(md.qmu.partition+1==k,1));
+        elseif exist('edata','var')
+            for i=1:size(epartp,1)
+                if isempty(find(epart(i,:)~=k,1))
+                    pdata(k)=edata(irow(i));
+                    break
+                end
+            end
+            if isnan(pdata(k))
+                warning('Data for Partition %d is not defined.\n',k)
+            end
+        end
+
+%  set up the placemark with multigeometry
+
+        kplace=kml_placemark();
+        if (length(iloop)-1 > 1)
+            kplace.name      =sprintf('Partition %d (%d loops)',k,length(iloop)-1);
+        else
+            kplace.name      =sprintf('Partition %d',k);
+        end
+        kplace.visibility=1;
+        if exist('pdata','var')
+            kplace.descript  =sprintf('Partition data: %g',pdata(k));
+            imap = fix((pdata(k)-cmin)/(cmax-cmin)*size(cmap,1))+1;
+            if     (imap >= 1) && (imap <= size(cmap,1))
+                kplace.styleurl  =sprintf('#MatlabColor%d',imap);
+            elseif (pdata(k) == cmax)
+                kplace.styleurl  =sprintf('#MatlabColor%d',size(cmap,1));
+            else
+                kplace.styleurl  =sprintf('#BlackLineEmptyPoly');
+            end
+        else
+            kplace.styleurl  =sprintf('#BlackLineRandomPoly');
+        end
+
+        kmgeom=kml_multigeometry();
+        kmgeom.geometry  ={repmat(kml_polygon(),1,length(iloop)-1)};
+
+%  loop over each loop of the perimeter for the given partition
+
+        for i=1:length(iloop)-1
+            kpoly=kml_polygon();
+            kpoly.extrude   =1;
+            kpoly.altmode   ='relativeToGround';
+
+            kring=kml_linearring();
+            kring.coords    =zeros(0,3);
+
+            elast=0;
+            nlast=0;
+            slast=0;
+            lat=[];
+            long=[];
+
+%  loop over the element edges on the loop of the partition
+
+            j=iloop(i);
+            while (j < iloop(i+1))
+%  find which side of element is referenced in perimeter list
+                for l=1:size(elemp,2)
+                    if ((elemp(elemper(j),l)          == edgeper(j,1)) && ...
+                        (elemp(elemper(j),mod(l,3)+1) == edgeper(j,2))) || ...
+                       ((elemp(elemper(j),l)          == edgeper(j,2)) && ...
+                        (elemp(elemper(j),mod(l,3)+1) == edgeper(j,1)))
+                        jedge=l;
+                        break
+                    end
+                end
+
+%  check if element side connects nodes in partition
+                if (epartp(elemper(j),jedge)          == k) && ...
+                   (epartp(elemper(j),mod(jedge,3)+1) == k)
+%  write out specified element side
+%                    disp(['segment j=' int2str(j) ' unshared edge ' int2str(edgeper(j,1)) ' to ' int2str(edgeper(j,2)) ' on side ' int2str(jedge) ' from element ' int2str(elemper(j)) ' written.'])
+%  if first edge, write out first node
+                    if ~elast
+                        kring.coords(end+1,:)=[md.mesh.long(edgeper(j,1)) md.mesh.lat(edgeper(j,1)) alt];
+                    end
+                    kring.coords(end+1,:)=[md.mesh.long(edgeper(j,2)) md.mesh.lat(edgeper(j,2)) alt];
+                    elast=elemper(j);
+                    nlast=edgeper(j,2);
+                    slast=0;
+                    j=j+1;
+
+%  element not entirely within partition, so figure out boundary
+                else
+%                    disp(['segment j=' int2str(j) ' from element ' int2str(elemper(j)) ' shared by other partitions.'])
+                    ielem=elemper(j);
+
+%  follow partition boundary through elements not wholly in partition
+%  (may include elements not in perimeter list)
+
+                    while 1
+%  if first edge, figure out direction from perimeter edge direction
+                        if ~nlast && ~slast
+                            nlast=find(elemp(ielem,:)==edgeper(j,1));
+                            nnext=find(elemp(ielem,:)==edgeper(j,2));
+                            if     (nlast+nnext == 3)
+                                slast=1;
+                            elseif (nlast+nnext == 5)
+                                slast=2;
+                            elseif (nlast+nnext == 4)
+                                slast=3;
+                            end
+                            if     (nnext+(6-nlast-nnext) == 3)
+                                snext=1;
+                            elseif (nnext+(6-nlast-nnext) == 5)
+                                snext=2;
+                            elseif (nnext+(6-nlast-nnext) == 4)
+                                snext=3;
+                            end
+
+%  find how many nodes of current element are in current partition
+%  (1 or 2, not 3) and handle each permutation separately
+                            ipart=find(epartp(ielem,:)==k);
+%  two nodes are in current partition, so cut off other node
+                            if (length(ipart) == 2)
+                                switch 6-sum(ipart)
+                                    case nlast
+                                        slast=6-slast-snext;
+                                        nlast=0;
+                                    case nnext
+                                        if (epartp(ielem,nnext) == k)
+                                            nlast=nnext;
+                                        end
+                                    otherwise
+                                        slast=6-slast-snext;
+                                        nlast=0;
+                                end
+%  one node is in current partition
+                            else
+%  all different, so cut through centroid
+                                if (epartp(ielem,1) ~= epartp(ielem,2)) && ...
+                                   (epartp(ielem,2) ~= epartp(ielem,3)) && ...
+                                   (epartp(ielem,3) ~= epartp(ielem,1))
+                                    switch ipart
+                                        case {nlast,nnext}
+                                            if (epartp(ielem,nnext) == k)
+                                                nlast=nnext;
+                                            end
+                                        otherwise
+                                            slast=6-slast-snext;
+                                            nlast=0;
+                                    end
+%  other two are in the same partition, so cut them off
+                                else
+                                    switch ipart
+                                        case nlast
+                                            if (epartp(ielem,nnext) == k)
+                                                nlast=nnext;
+                                            end
+                                        case nnext
+                                            slast=snext;
+                                            nlast=0;
+                                        otherwise
+                                            slast=6-slast-snext;
+                                            nlast=0;
+                                    end
+                                end
+                            end
+
+%  last edge exited last element at node
+                            if nlast
+%  write out first node of first side for half-edge to midpoint
+%                                disp(['segment j=' int2str(j) ' unshared half edge from node ' int2str(elemp(ielem,nlast)) ' (node ' int2str(nlast) ') on side ' int2str(slast) ' from element ' int2str(ielem) ' written.'])
+                                kring.coords(end+1,:)=[md.mesh.long(elemp(ielem,nlast)) ...
+                                                       md.mesh.lat(elemp(ielem,nlast)) alt];
+                            end
+                            nlast=0;
+
+%  write out midpoint of first side
+                            kring.coords(end+1,:)=[(md.mesh.long(elemp(ielem,slast))...
+                                                   +md.mesh.long(elemp(ielem,mod(slast,3)+1)))/2. ...
+                                                   (md.mesh.lat(elemp(ielem,slast))...
+                                                   +md.mesh.lat(elemp(ielem,mod(slast,3)+1)))/2. alt];
+                        end
+
+%  last edge exited last element at node
+                        if nlast
+                            if elast
+%  find where last node on previous element occurs on current element
+                                nlast=find(elemp(ielem,:)==nlast,1);
+                            end
+%  half-edge occurs on unshared side from current node (unique unless mesh
+%  is only attached at node)
+                            switch nlast
+                                case 1
+                                    if ~edgeadjp(ielem,1)
+                                        nnext=2;
+                                        slast=1;
+                                    else
+                                        nnext=3;
+                                        slast=3;
+                                    end
+                                case 2
+                                    if ~edgeadjp(ielem,2)
+                                        nnext=3;
+                                        slast=2;
+                                    else
+                                        nnext=1;
+                                        slast=1;
+                                    end
+                                case 3
+                                    if ~edgeadjp(ielem,3)
+                                        nnext=1;
+                                        slast=3;
+                                    else
+                                        nnext=2;
+                                        slast=2;
+                                    end
+                            end
+%  write out half-edge from current node to midpoint of unshared side
+%                            disp(['segment j=' int2str(j) ' unshared half edge from node ' int2str(elemp(ielem,nlast)) ' (node ' int2str(nlast) ') on side ' int2str(slast) ' from element ' int2str(ielem) ' written.'])
+                            kring.coords(end+1,:)=[(md.mesh.long(elemp(ielem,nlast))...
+                                                   +md.mesh.long(elemp(ielem,nnext)))/2. ...
+                                                   (md.mesh.lat(elemp(ielem,nlast))...
+                                                   +md.mesh.lat(elemp(ielem,nnext)))/2. alt];
+                            nlast=0;
+
+%  last edge exited last element at midpoint of side
+                        elseif slast
+                            if elast
+%  find where last side on previous element occurs on current element
+                                slast=find(edgeadjp(ielem,:)==elast,1);
+                            end
+                        end
+
+%  find how many nodes of current element are in current partition
+%  (1 or 2, not 3) and handle each permutation separately
+                        ipart=find(epartp(ielem,:)==k);
+                        if (length(ipart) == 2)
+%  two nodes are in current partition, so cut off other node
+                            switch 6-sum(ipart)
+                                case 1
+                                    snext=3+1-slast;
+                                case 2
+                                    snext=1+2-slast;
+                                case 3
+                                    snext=2+3-slast;
+                            end
+                        else
+                            if (epartp(ielem,1) ~= epartp(ielem,2)) && ...
+                               (epartp(ielem,2) ~= epartp(ielem,3)) && ...
+                               (epartp(ielem,3) ~= epartp(ielem,1))
+%  all different, so cut through centroid
+%                                disp(['element ielem=' int2str(ielem) ' centroid written.'])
+                                kring.coords(end+1,:)=[sum(md.mesh.long(elemp(ielem,:)))/3. ...
+                                                       sum(md.mesh.lat(elemp(ielem,:)))/3. alt];
+                            end
+%  one node is in current partition, so cut off other two nodes
+                            switch ipart
+                                case 1
+                                    snext=3+1-slast;
+                                case 2
+                                    snext=1+2-slast;
+                                case 3
+                                    snext=2+3-slast;
+                            end
+                        end
+%  write out midpoint of opposite side
+%                        disp(['segment j=' int2str(j) ' internal edge from side ' int2str(slast) ' to side ' int2str(snext) ' from element ' int2str(ielem) ' written.'])
+                        kring.coords(end+1,:)=[(md.mesh.long(elemp(ielem,snext))...
+                                               +md.mesh.long(elemp(ielem,mod(snext,3)+1)))/2. ...
+                                               (md.mesh.lat(elemp(ielem,snext))...
+                                               +md.mesh.lat(elemp(ielem,mod(snext,3)+1)))/2. alt];
+                        elast=ielem;
+                        nlast=0;
+                        slast=snext;
+%  find adjacent element to opposite side
+                        ielem=edgeadjp(elast,slast);
+%  if opposite side is unshared, find it in edge perimeter list
+                        if ~ielem
+                            jlast=find(elemper(j:end)==elast)+j-1;
+                            j=0;
+                            for l=1:length(jlast)
+                                if ((elemp(elast,slast)          == edgeper(jlast(l),1)) && ...
+                                    (elemp(elast,mod(slast,3)+1) == edgeper(jlast(l),2))) || ...
+                                   ((elemp(elast,slast)          == edgeper(jlast(l),2)) && ...
+                                    (elemp(elast,mod(slast,3)+1) == edgeper(jlast(l),1)))
+                                    j=jlast(l);
+                                    break
+                                end
+                            end
+                            if ~j
+                                j=iloop(i+1)-1;
+                            end
+%  write out half-edge from midpoint of unshared side to node
+                            if (epartp(elast,slast) == k)
+                                nnext=slast;
+                            else
+                                nnext=mod(slast,3)+1;
+                            end
+%                            disp(['segment j=' int2str(j) ' unshared half edge on side ' int2str(slast) ' to node ' int2str(elemp(elast,nnext)) ' (node ' int2str(nnext) ') from element ' int2str(elast) ' written.'])
+                            kring.coords(end+1,:)=[md.mesh.long(elemp(elast,nnext)) ...
+                                                   md.mesh.lat(elemp(elast,nnext)) alt];
+                            break
+%  if not unshared, advance perimeter list and watch for end
+                        else
+                            if (elast == elemper(j))
+                                if (j+1 < iloop(i+1)) && ...
+                                   ~isempty(find(elemper(j+1:end)~=elast,1))
+                                    j=j+find(elemper(j+1:end)~=elast,1);
+                                else
+                                    break
+                                end
+                            end
+                        end
+                    end
+                    j=j+1;
+                end
+            end
+
+            kpoly.outer=kring;
+            kmgeom.geometry{1}(i)=kpoly;
+            clear kring kpoly
+        end
+
+        kplace.geometry=kmgeom;
+        kfold.feature{1}(k)=kplace;
+        clear kmgeom kplace
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_placemark.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_placemark.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_placemark.m	(revision 21239)
@@ -0,0 +1,238 @@
+%
+%  definition for the kml_placemark sub (derived) class.
+%
+%  [kml]=kml_placemark(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, placemark id, '')
+%    name          (char, name, '')
+%    visibility    (logical, visibility, true)
+%    open          (logical, open, false)
+%    snippet       (char, snippet, '')
+%    descript      (char, description, '')
+%    styleurl      (char, style url, '')
+%    style         (cell array, styles)
+%    geometry      (kml_geometry, placemark geometry)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_placemark < kml_feature
+    properties
+        geometry  =kml_geometry.empty();
+    end
+
+    methods
+        function [kml]=kml_placemark(varargin)
+
+            kml=kml@kml_feature(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_placemark());
+
+                        for i=length(fieldnames(kml_feature()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_feature(kml(i));
+                disp(sprintf('      geometry: %s %s\n' ,string_size(kml(i).geometry),...
+                             class(kml(i).geometry)));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_feature());
+            fnames={fnames{:} ...
+                    'geometry' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the placemarks
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<Placemark id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<Placemark>\n',indent);
+                end
+                kml_write@kml_feature(kmli,fid,indent);
+
+%  loop over the geometry elements for each placemark
+
+                for j=1:min(1,numel(kmli.geometry))
+                    kmlij=kmli.geometry(j);
+                    if ~isempty(kmlij)
+                        if isa(kmlij,'kml_geometry')
+                            kml_write(kmlij,fid,[indent '  ']);
+                        else
+                            warning('kml(%d).geometry(%d) is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmlij),'kml_geometry');
+                        end
+                    end
+                end
+
+                fprintf(fid,'%s</Placemark>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the placemarks
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<Placemark id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<Placemark>\n',indent));
+                end
+                sbuf=kml_swrite@kml_feature(kmli,sbuf,indent);
+
+%  loop over the geometry elements for each placemark
+
+                for j=1:min(1,numel(kmli.geometry))
+                    kmlij=kmli.geometry(j);
+                    if ~isempty(kmlij)
+                        if isa(kmlij,'kml_geometry')
+                            sbuf=kml_swrite(kmlij,sbuf,[indent '  ']);
+                        else
+                            warning('kml(%d).geometry(%d) is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmlij),'kml_geometry');
+                        end
+                    end
+                end
+
+                sbuf=add(sbuf,sprintf('%s</Placemark>\n',indent));
+            end
+
+        end
+
+%  delete the object
+
+        function []=delete(kml)
+
+%  loop over the placemarks
+
+            for i=numel(kml):-1:1
+                kmli=kml(i);
+                delete@kml_feature(kmli);
+
+%  loop over the geometry elements for each placemark
+
+                for j=min(1,numel(kmli.geometry)):-1:1
+                    kmlij=kmli.geometry(j);
+                    if ~isempty(kmlij)
+                        if isa(kmlij,'kml_geometry')
+                            delete(kmlij);
+                        else
+                            warning('kml(%d).geometry(%d) is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmlij),'kml_geometry');
+                        end
+                    end
+                end
+                kmli.geometry  =kml_geometry.empty();
+
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_polygon.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_polygon.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_polygon.m	(revision 21239)
@@ -0,0 +1,271 @@
+%
+%  definition for the kml_polygon sub (derived) class.
+%
+%  [kml]=kml_polygon(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, polygon id, '')
+%    extrude       (logical, extrusion, false)
+%    tessellate    (logical, tessellation, false)
+%    altmode       (char, altitude mode, 'clampToGround')
+%    outer         (kml_linearring, outer boundary)
+%    inner         (kml_linearring, inner boundaries)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_polygon < kml_geometry
+    properties
+        extrude   =false;
+        tessellate=false;
+        altmode   ='clampToGround';
+        outer     =kml_linearring.empty();
+        inner     =kml_linearring.empty();
+    end
+
+    methods
+        function [kml]=kml_polygon(varargin)
+
+            kml=kml@kml_geometry(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_polygon());
+
+                        for i=length(fieldnames(kml_geometry()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_geometry(kml(i));
+                disp(sprintf('       extrude: %g'      ,kml(i).extrude));
+                disp(sprintf('    tessellate: %g'      ,kml(i).tessellate));
+                disp(sprintf('       altmode: ''%s'''  ,kml(i).altmode));
+                disp(sprintf('         outer: %s %s'   ,string_size(kml(i).outer),...
+                             class(kml(i).outer)));
+                disp(sprintf('         inner: %s %s\n' ,string_size(kml(i).inner),...
+                             class(kml(i).inner)));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_geometry());
+            fnames={fnames{:} ...
+                    'extrude' ...
+                    'tessellate' ...
+                    'altmode' ...
+                    'outer' ...
+                    'inner' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the polygons
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<Polygon id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<Polygon>\n',indent);
+                end
+                kml_write@kml_geometry(kmli,fid,indent);
+                fprintf(fid,'%s  <extrude>%d</extrude>\n',indent,kmli.extrude);
+                fprintf(fid,'%s  <tessellate>%d</tessellate>\n',indent,kmli.tessellate);
+                fprintf(fid,'%s  <altitudeMode>%s</altitudeMode>\n',indent,kmli.altmode);
+                fprintf(fid,'%s  <outerBoundaryIs>\n',indent);
+                if isa(kmli.outer,'kml_linearring')
+                    kml_write(kmli.outer,fid,[indent '    ']);
+                else
+                    warning('kml(%d).outer is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.outer),'kml_linearring');
+                end
+                fprintf(fid,'%s  </outerBoundaryIs>\n',indent);
+
+%  loop over any inner boundaries for each polygon
+
+                if isa(kmli.inner,'kml_linearring')
+                    for j=1:numel(kmli.inner)
+                        fprintf(fid,'%s  <innerBoundaryIs>\n',indent);
+                        kml_write(kmli.inner(j),fid,[indent '    ']);
+                        fprintf(fid,'%s  </innerBoundaryIs>\n',indent);
+                    end
+                else
+                    warning('kml(%d).inner is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.inner),'kml_linearring');
+                end
+
+                fprintf(fid,'%s</Polygon>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the polygons
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<Polygon id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<Polygon>\n',indent));
+                end
+                sbuf=kml_swrite@kml_geometry(kmli,sbuf,indent);
+                sbuf=add(sbuf,sprintf('%s  <extrude>%d</extrude>\n',indent,kmli.extrude));
+                sbuf=add(sbuf,sprintf('%s  <tessellate>%d</tessellate>\n',indent,kmli.tessellate));
+                sbuf=add(sbuf,sprintf('%s  <altitudeMode>%s</altitudeMode>\n',indent,kmli.altmode));
+                sbuf=add(sbuf,sprintf('%s  <outerBoundaryIs>\n',indent));
+                if isa(kmli.outer,'kml_linearring')
+                    sbuf=kml_swrite(kmli.outer,sbuf,[indent '    ']);
+                else
+                    warning('kml(%d).outer is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.outer),'kml_linearring');
+                end
+                sbuf=add(sbuf,sprintf('%s  </outerBoundaryIs>\n',indent));
+
+%  loop over any inner boundaries for each polygon
+
+                if isa(kmli.inner,'kml_linearring')
+                    for j=1:numel(kmli.inner)
+                        sbuf=add(sbuf,sprintf('%s  <innerBoundaryIs>\n',indent));
+                        sbuf=kml_swrite(kmli.inner(j),sbuf,[indent '    ']);
+                        sbuf=add(sbuf,sprintf('%s  </innerBoundaryIs>\n',indent));
+                    end
+                else
+                    warning('kml(%d).inner is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.inner),'kml_linearring');
+                end
+
+                sbuf=add(sbuf,sprintf('%s</Polygon>\n',indent));
+            end
+
+        end
+
+%  delete the object
+
+        function []=delete(kml)
+
+%  loop over the polygons
+
+            for i=numel(kml):-1:1
+                kmli=kml(i);
+                if isa(kmli.outer,'kml_linearring')
+                    delete(kmli.outer);
+                else
+                    warning('kml(%d).outer is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.outer),'kml_linearring');
+                end
+                kmli.outer     =kml_linearring.empty();
+
+%  loop over any inner boundaries for each polygon
+
+                if isa(kmli.inner,'kml_linearring')
+                    for j=numel(kmli.inner):-1:1
+                        delete(kmli.inner(j));
+                    end
+                else
+                    warning('kml(%d).inner is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.inner),'kml_linearring');
+                end
+                kmli.inner     =kml_linearring.empty();
+
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_polystyle.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_polystyle.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_polystyle.m	(revision 21239)
@@ -0,0 +1,181 @@
+%
+%  definition for the kml_polystyle sub (derived) class.
+%
+%  [kml]=kml_polystyle(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, polystyle id, '')
+%    color         (char, opacity/color in hex aabbggrr, 'ffffffff')
+%    colormode     (char, color mode , 'normal')
+%    fill          (logical, polygon fill, true)
+%    outline       (logical, polygon outline, true)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_polystyle < kml_colorstyle
+    properties
+        fill      =true;
+        outline   =true;
+    end
+
+    methods
+        function [kml]=kml_polystyle(varargin)
+
+            kml=kml@kml_colorstyle(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_polystyle());
+
+                        for i=length(fieldnames(kml_colorstyle()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_colorstyle(kml(i));
+                disp(sprintf('          fill: %d'      ,kml(i).fill));
+                disp(sprintf('       outline: %d\n'    ,kml(i).outline));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_colorstyle());
+            fnames={fnames{:} ...
+                    'fill' ...
+                    'outline' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the polystyles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<PolyStyle id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<PolyStyle>\n',indent);
+                end
+                kml_write@kml_colorstyle(kmli,fid,indent);
+                fprintf(fid,'%s  <fill>%d</fill>\n',indent,kmli.fill);
+                fprintf(fid,'%s  <outline>%d</outline>\n',indent,kmli.outline);
+                fprintf(fid,'%s</PolyStyle>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the polystyles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<PolyStyle id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<PolyStyle>\n',indent));
+                end
+                sbuf=kml_swrite@kml_colorstyle(kmli,sbuf,indent);
+                sbuf=add(sbuf,sprintf('%s  <fill>%d</fill>\n',indent,kmli.fill));
+                sbuf=add(sbuf,sprintf('%s  <outline>%d</outline>\n',indent,kmli.outline));
+                sbuf=add(sbuf,sprintf('%s</PolyStyle>\n',indent));
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_style.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_style.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_style.m	(revision 21239)
@@ -0,0 +1,327 @@
+%
+%  definition for the kml_style sub (derived) class.
+%
+%  [kml]=kml_style(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, style id, '')
+%    icon          (char, icon style, '')
+%    label         (char, label style, '')
+%    line          (char, line style, '')
+%    poly          (char, poly style, '')
+%    balloon       (char, balloon style, '')
+%    list          (char, list style, '')
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_style < kml_styleselector
+    properties
+%         icon      =kml_iconstyle.empty();
+%         label     =kml_labelstyle.empty();
+        icon      =[];
+        label     =[];
+        line      =kml_linestyle.empty();
+        poly      =kml_polystyle.empty();
+%         balloon   =kml_balloonstyle.empty();
+%         list      =kml_liststyle.empty();
+        balloon   =[];
+        list      =[];
+    end
+
+    methods
+        function [kml]=kml_style(varargin)
+
+            kml=kml@kml_styleselector(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_style());
+
+                        for i=length(fieldnames(kml_styleselector()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_styleselector(kml(i));
+                disp(sprintf('          icon: %s %s'   ,string_size(kml(i).icon),...
+                             class(kml(i).icon)));
+                disp(sprintf('         label: %s %s'   ,string_size(kml(i).label),...
+                             class(kml(i).label)));
+                disp(sprintf('          line: %s %s'   ,string_size(kml(i).line),...
+                             class(kml(i).line)));
+                disp(sprintf('          poly: %s %s'   ,string_size(kml(i).poly),...
+                             class(kml(i).poly)));
+                disp(sprintf('       balloon: %s %s'   ,string_size(kml(i).balloon),...
+                             class(kml(i).balloon)));
+                disp(sprintf('          list: %s %s\n' ,string_size(kml(i).list),...
+                             class(kml(i).list)));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_styleselector());
+            fnames={fnames{:} ...
+                    'icon' ...
+                    'label' ...
+                    'line' ...
+                    'poly' ...
+                    'balloon' ...
+                    'list' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the styles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<Style id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<Style>\n',indent);
+                end
+                kml_write@kml_styleselector(kmli,fid,indent);
+%                 if isa(kmli.icon,'kml_iconstyle')
+%                     kml_write(kmli.icon,fid,[indent '  ']);
+%                 else
+%                     warning('kml(%d).icon is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.icon),'kml_iconstyle');
+%                 end
+%                 if isa(kmli.label,'kml_labelstyle')
+%                     kml_write(kmli.label,fid,[indent '  ']);
+%                 else
+%                     warning('kml(%d).label is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.label),'kml_labelstyle');
+%                 end
+                if isa(kmli.line,'kml_linestyle')
+                    kml_write(kmli.line,fid,[indent '  ']);
+                else
+                    warning('kml(%d).line is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.line),'kml_linestyle');
+                end
+                if isa(kmli.poly,'kml_polystyle')
+                    kml_write(kmli.poly,fid,[indent '  ']);
+                else
+                    warning('kml(%d).poly is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.poly),'kml_polystyle');
+                end
+%                 if isa(kmli.balloon,'kml_balloonstyle')
+%                     kml_write(kmli.balloon,fid,[indent '  ']);
+%                 else
+%                     warning('kml(%d).balloon is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.balloon),'kml_balloonstyle');
+%                 end
+%                 if isa(kmli.list,'kml_liststyle')
+%                     kml_write(kmli.list,fid,[indent '  ']);
+%                 else
+%                     warning('kml(%d).list is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.list),'kml_liststyle');
+%                 end
+                fprintf(fid,'%s</Style>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the styles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<Style id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<Style>\n',indent));
+                end
+                sbuf=kml_swrite@kml_styleselector(kmli,sbuf,indent);
+%                 if isa(kmli.icon,'kml_iconstyle')
+%                     sbuf=kml_swrite(kmli.icon,sbuf,[indent '  ']);
+%                 else
+%                     warning('kml(%d).icon is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.icon),'kml_iconstyle');
+%                 end
+%                 if isa(kmli.label,'kml_labelstyle')
+%                     sbuf=kml_swrite(kmli.label,sbuf,[indent '  ']);
+%                 else
+%                     warning('kml(%d).label is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.label),'kml_labelstyle');
+%                 end
+                if isa(kmli.line,'kml_linestyle')
+                    sbuf=kml_swrite(kmli.line,sbuf,[indent '  ']);
+                else
+                    warning('kml(%d).line is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.line),'kml_linestyle');
+                end
+                if isa(kmli.poly,'kml_polystyle')
+                    sbuf=kml_swrite(kmli.poly,sbuf,[indent '  ']);
+                else
+                    warning('kml(%d).poly is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.poly),'kml_polystyle');
+                end
+%                 if isa(kmli.balloon,'kml_balloonstyle')
+%                     sbuf=kml_swrite(kmli.balloon,sbuf,[indent '  ']);
+%                 else
+%                     warning('kml(%d).balloon is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.balloon),'kml_balloonstyle');
+%                 end
+%                 if isa(kmli.list,'kml_liststyle')
+%                     sbuf=kml_swrite(kmli.list,sbuf,[indent '  ']);
+%                 else
+%                     warning('kml(%d).list is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.list),'kml_liststyle');
+%                 end
+                sbuf=add(sbuf,sprintf('%s</Style>\n',indent));
+            end
+
+        end
+
+%  delete the object
+
+        function []=delete(kml)
+
+%  loop over the styles
+
+            for i=numel(kml):-1:1
+                kmli=kml(i);
+%                 if isa(kmli.icon,'kml_iconstyle')
+%                     delete(kmli.icon);
+%                 else
+%                     warning('kml(%d).icon is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.icon),'kml_iconstyle');
+%                 end
+%                 kmli.icon      =kml_iconstyle.empty();
+%                 if isa(kmli.label,'kml_labelstyle')
+%                     delete(kmli.label);
+%                 else
+%                     warning('kml(%d).label is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.label),'kml_labelstyle');
+%                 end
+%                 kmli.label     =kml_labelstyle.empty();
+                if isa(kmli.line,'kml_linestyle')
+                    delete(kmli.line);
+                else
+                    warning('kml(%d).line is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.line),'kml_linestyle');
+                end
+                kmli.line      =kml_linestyle.empty();
+                if isa(kmli.poly,'kml_polystyle')
+                    delete(kmli.poly);
+                else
+                    warning('kml(%d).poly is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.poly),'kml_polystyle');
+                end
+                kmli.poly      =kml_polystyle.empty();
+%                 if isa(kmli.balloon,'kml_balloonstyle')
+%                     delete(kmli.balloon);
+%                 else
+%                     warning('kml(%d).balloon is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.balloon),'kml_balloonstyle');
+%                 end
+%                 kmli.balloon   =kml_balloonstyle.empty();
+%                 if isa(kmli.list,'kml_liststyle')
+%                     delete(kmli.list);
+%                 else
+%                     warning('kml(%d).list is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.list),'kml_liststyle');
+%                 end
+%                 kmli.list      =kml_liststyle.empty();
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_styleselector.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_styleselector.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_styleselector.m	(revision 21239)
@@ -0,0 +1,178 @@
+%
+%  definition for the kml_styleselector super (base) and sub (derived) abstract class.
+%
+%  [kml]=kml_styleselector(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, styleselector id, '')
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_styleselector < kml_object
+    properties
+    end
+
+    methods
+        function [kml]=kml_styleselector(varargin)
+
+            kml=kml@kml_object(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_styleselector());
+
+                        for i=length(fieldnames(kml_object()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                if strcmp(class(kml),'kml_styleselector')
+                    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                        class(kml),inputname(1),string_dim(kml,i)));
+                end
+                disp@kml_object(kml(i));
+                if strcmp(class(kml),'kml_styleselector')
+                    disp(sprintf('\n'));
+                end
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_object());
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the styleselectors
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_styleselector')
+                    if ~isempty(kmli.id)
+                        fprintf(fid,'%s<!StyleSelector id="%s">\n',indent,kmli.id);
+                    else
+                        fprintf(fid,'%s<!StyleSelector>\n',indent);
+                    end
+                end
+                kml_write@kml_object(kmli,fid,indent);
+                if strcmp(class(kml),'kml_styleselector')
+                    fprintf(fid,'%s</!StyleSelector>\n',indent);
+                end
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the styleselectors
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_styleselector')
+                    if ~isempty(kmli.id)
+                        sbuf=add(sbuf,sprintf('%s<!StyleSelector id="%s">\n',indent,kmli.id));
+                    else
+                        sbuf=add(sbuf,sprintf('%s<!StyleSelector>\n',indent));
+                    end
+                end
+                sbuf=kml_swrite@kml_object(kmli,sbuf,indent);
+                if strcmp(class(kml),'kml_styleselector')
+                    sbuf=add(sbuf,sprintf('%s</!StyleSelector>\n',indent));
+                end
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_substyle.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_substyle.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_substyle.m	(revision 21239)
@@ -0,0 +1,178 @@
+%
+%  definition for the kml_substyle super (base) and sub (derived) abstract class.
+%
+%  [kml]=kml_substyle(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, substyle id, '')
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_substyle < kml_object
+    properties
+    end
+
+    methods
+        function [kml]=kml_substyle(varargin)
+
+            kml=kml@kml_object(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_substyle());
+
+                        for i=length(fieldnames(kml_object()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                if strcmp(class(kml),'kml_substyle')
+                    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                        class(kml),inputname(1),string_dim(kml,i)));
+                end
+                disp@kml_object(kml(i));
+                if strcmp(class(kml),'kml_substyle')
+                    disp(sprintf('\n'));
+                end
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_object());
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the substyles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_substyle')
+                    if ~isempty(kmli.id)
+                        fprintf(fid,'%s<!SubStyle id="%s">\n',indent,kmli.id);
+                    else
+                        fprintf(fid,'%s<!SubStyle>\n',indent);
+                    end
+                end
+                kml_write@kml_object(kmli,fid,indent);
+                if strcmp(class(kml),'kml_substyle')
+                    fprintf(fid,'%s<!/SubStyle>\n',indent);
+                end
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the substyles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_substyle')
+                    if ~isempty(kmli.id)
+                        sbuf=add(sbuf,sprintf('%s<!SubStyle id="%s">\n',indent,kmli.id));
+                    else
+                        sbuf=add(sbuf,sprintf('%s<!SubStyle>\n',indent));
+                    end
+                end
+                sbuf=kml_swrite@kml_object(kmli,sbuf,indent);
+                if strcmp(class(kml),'kml_substyle')
+                    sbuf=add(sbuf,sprintf('%s<!/SubStyle>\n',indent));
+                end
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_unsh_edges.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_unsh_edges.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kml_unsh_edges.m	(revision 21239)
@@ -0,0 +1,115 @@
+%%
+%  create kml linestrings for the unshared element edges.
+%
+%  [kfold]=kml_unsh_edges(md,params)
+%
+%  where the required input is:
+%    md            (model, model class object)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  and the optional input is:
+%    latsgn        (numeric, +1/-1 for north/south latitude)
+%    alt           (numeric, altitude for polygons, default 10000)
+%    prtplt        (char, 'off'/'no' for partition edge plot)
+%
+%  and the required output is:
+%    kfold         (kml_folder, folder of linestring placemarks)
+%
+function [kfold]=kml_unsh_edges(varargin)
+
+if ~nargin
+    help kml_unsh_edges
+    return
+end
+
+%%  process input data
+
+iarg=1;
+if (nargin >= 1)
+    md=varargin{1};
+end
+if ~exist('md','var') || isempty(md) || ~isa(md,'model')
+    error(['Model ''' inputname(iarg) ''' is unrecognized class ''' class(md) '''.']);
+end
+
+%  parameters
+
+iarg=iarg+1;
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'latsgn','alt','prtplt'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1},20) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1},20) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
+   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
+    if     ~exist('latsgn','var')
+        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
+    elseif (abs(latsgn) ~= 1)
+        error(['Incorrect latsgn=' num2str(latsgn) ' parameter to calculate missing lat/long data.']);
+    else
+        display('Converting x/y data to lat/long data.');
+        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
+    end
+end
+
+if ~exist('alt','var')
+    alt=10000;
+end
+
+%%  write folder for unshared edges
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    [edgeadj]=edgeadjacency(md.mesh.elements,md.kmlnodeconnectivity);
+    [icol,irow]=find(edgeadj'==0);
+    edgeuns=zeros(length(irow),2);
+    for i=1:length(irow)
+        edgeuns(i,1)=md.mesh.elements(irow(i),icol(i));
+        edgeuns(i,2)=md.mesh.elements(irow(i),mod(icol(i),size(md.mesh.elements,2))+1);
+    end
+    kfold=kml_folder();
+    kfold.name      ='Unshared Edges';
+    kfold.visibility=1;
+    kfold.descript  =sprintf('Partitions=%d, Edges=%d',...
+        md.qmu.numberofpartitions,size(edgeuns,1));
+    kfold.feature   ={repmat(kml_placemark(),1,size(edgeuns,1))};
+
+%  write each edge as a linestring placemark
+
+    disp(['Writing ' num2str(size(edgeuns,1)) ' unshared edges as KML linestrings.']);
+    for i=1:size(edgeuns,1)
+        kplace=kml_placemark();
+        kplace.name      =sprintf('Edge %d',i);
+        kplace.visibility=1;
+        kplace.styleurl  ='#RedLineRedPoly';
+
+        kline=kml_linestring();
+        kline.extrude   =1;
+        kline.tessellate=1;
+        kline.altmode   ='relativeToGround';
+        kline.coords    =zeros(2,3);
+
+        for j=1:2
+            kline.coords(j,:)=[md.mesh.long(edgeuns(i,j)) md.mesh.lat(edgeuns(i,j)) alt];
+        end
+
+        kplace.geometry=kline;
+        kfold.feature{1}(i)=kplace;
+        clear kline kplace
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kmlimagesc.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kmlimagesc.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kmlimagesc.m	(revision 21239)
@@ -0,0 +1,67 @@
+function kmlimagesc(md,fieldname,varargin)
+%KMLIMAGESC - create lat,long kml image
+%
+%   Usage:
+%      kmlimagesc(md,field,options);
+%
+%   Options: 
+%      'hemisphere': default +1;
+%      'central_meridian: 45 for Greenland and 0 for Antarctica
+%      'standard_parallel: 70 for Greenland and 71 for Antarctica
+%      'posting': default .1 degree
+%
+
+%process varargin for options: 
+options=pairoptions(varargin{:});
+
+%recover field: 
+field=md.(fieldname);
+
+%recover some options, and set defaults
+fontsize=getfieldvalue(options,'fontsize',12);
+posting=getfieldvalue(options,'posting',.1);
+minlong=getfieldvalue(options,'minlong',min(md.mesh.long));
+maxlong=getfieldvalue(options,'maxlong',max(md.mesh.long));
+minlat=getfieldvalue(options,'minlat',min(md.mesh.lat));
+maxlat=getfieldvalue(options,'maxlat',max(md.mesh.lat));
+minfield=getfieldvalue(options,'minfield',min(field));
+maxfield=getfieldvalue(options,'maxfield',max(field));
+
+%do we have hemisphere setup?:
+if ~isstr(md.mesh.hemisphere),
+	error('md.mesh.hemisphere should be ''s'' or ''n''');
+end
+
+if strcmpi(md.mesh.hemisphere,'s'),
+	hemisphere=1;
+	central_meridian=getfieldvalue(options,'central_meridian',45);
+	standard_parallel=getfieldvalue(options,'standard_parallel',70);
+elseif strcmpi(md.mesh.hemisphere,'n'),
+	hemisphere=-1;
+	central_meridian=getfieldvalue(options,'central_meridian',0);
+	standard_parallel=getfieldvalue(options,'standard_parallel',71);
+else
+	error('md.mesh.hemisphere should be ''s'' or ''n''');
+end
+
+%figure out nlines and ncols in our image
+nlines=(maxlat-minlat)/posting;
+ncols=(maxlong-minlong)/posting;
+
+%regrid to lat,long grid
+[x_m,y_m,field]=InterpFromMeshToGrid(md.mesh.elements,md.mesh.long,md.mesh.lat,field,minlong,maxlat,posting,posting,nlines,ncols,NaN);
+field=flipud(field);
+
+%massage  and log:
+pos=find(field<minfield); field(pos)=minfield;
+pos=find(field>maxfield);field(pos)=maxfield;
+
+%create google earth kml file out of this regridded dataset:
+imagestr=ge_imagesc(x_m,y_m,field,'imgURL',[fieldname '.png'],'name',fieldname);
+imagestr=ge_folder(fieldname,imagestr);
+colorbarstr=ge_colorbar((min(x_m)+max(x_m))/2,(min(y_m)+max(y_m))/2,field,'name',fieldname);
+colorbarstr=ge_folder('Colorbar',colorbarstr);
+ge_output([fieldname '.kml'],[imagestr colorbarstr]);
+
+%now, create kmz file:
+system(['mv ' [fieldname '.kml'] ' doc.kml && zip ' [fieldname '.kmz'] ' doc.kml ' fieldname '.png && rm -rf doc.kml ' [fieldname '.png'] ]);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kmlnodeconnectivity.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kmlnodeconnectivity.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/kmlnodeconnectivity.m	(revision 21239)
@@ -0,0 +1,58 @@
+%
+%  create a node connectivity table for the elements in the model.
+%
+%  [nodecon]=edgeadjacency(elem,nnodes,mxepg)
+%
+%  where the required input is:
+%    elem          (numeric, element connectivity array (elems x nodes))
+%
+%  and the required output is:
+%    nodecon       (numeric, node connectivity array (nnodes x mxepg+1))
+%
+%  the optional input is:
+%    nnodes        (numeric, number of nodes)
+%    mxepg         (numeric, max elements per node)
+%
+function [nodecon]=kmlnodeconnectivity(elem,nnodes,mxepg)
+
+if ~nargin
+    help kmlnodeconnectivity
+    return
+end
+
+if ~exist('nnodes','var') || isempty(nnodes)
+    nnodes=max(max(elem));
+end
+if ~exist('mxepg','var') || isempty(mxepg)
+    mxepg=25;
+end
+
+%%  create the node connectivity array
+
+nodecon=zeros(nnodes,mxepg+1);
+
+%  loop over the elements
+
+for i=1:size(elem,1)
+
+%  loop over the nodes for each element
+
+    for j=1:size(elem,2)
+        if elem(i,j)
+            nodecon(elem(i,j),nodecon(elem(i,j),end)+1)=i;
+            nodecon(elem(i,j),end)=nodecon(elem(i,j),end)+1;
+        end
+    end
+end
+
+%%  sort the node connectivity array
+
+%  loop over the nodes
+
+for i=1:size(nodecon,1)
+    if (nodecon(i,end) > 1)
+        nodecon(i,1:nodecon(i,end))=sort(nodecon(i,1:nodecon(i,end)));
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/string_buf.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/string_buf.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/kml/string_buf.m	(revision 21239)
@@ -0,0 +1,188 @@
+%
+%  definition for the string_buf class.
+%
+%  [sbuf]=string_buf(varargin)
+%
+%  where the optional varargin and defaults are:
+%    init          (numeric, initial size)
+%    inc           (numeric, incremental size)
+%    max           (numeric, maximum size)
+%
+%  and the protected properties are:
+%    string        (char, string buffer)
+%    size          (numeric, current size of buffer)
+%    len           (numeric, current length of string in buffer)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef string_buf < handle
+    properties
+        init      =10000000;
+        inc       =1000000;
+        max       =100000000;
+    end
+%     properties (SetAccess = private, GetAccess = private)
+    properties (SetAccess = private)
+        string    ='';
+        size      =0;
+        len       =0;
+    end
+
+    methods
+        function [sbuf]=string_buf(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(string_buf))
+                        sbuf=varargin{1};
+
+                    else
+                        fnames=fieldnames(string_buf());
+
+                        for i=1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(sbuf.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    sbuf.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(sbuf.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(sbuf.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+            sbuf.string=blanks(sbuf.init);
+            sbuf.size  =sbuf.init;
+
+        end
+
+%  display the object
+
+        function []=disp(sbuf)
+
+            for i=1:numel(sbuf)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(sbuf),inputname(1),string_dim(sbuf,i)));
+                disp(sprintf('          init: %d'      ,sbuf(i).init));
+                disp(sprintf('           inc: %d'      ,sbuf(i).inc));
+                disp(sprintf('           max: %d'      ,sbuf(i).max));
+                disp(sprintf('        string: %s'      ,any2str(sbuf(i).string,40)));
+                disp(sprintf('          size: %d'      ,sbuf(i).size));
+                disp(sprintf('           len: %d\n'    ,sbuf(i).len));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(sbuf)
+
+            fnames={'init' ...
+                    'inc' ...
+                    'max' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [sbuf]=set(sbuf,varargin)
+
+            sbufref=feval(class(sbuf));
+            fnames=fieldnames(sbufref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(sbufref.(varargin{i})))
+                        sbuf.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(sbufref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(sbufref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(sbufref));
+                end
+            end
+
+        end
+
+%  add a string to the object
+
+        function [sbuf]=add(sbuf,str)
+
+            if ~ischar(str)
+                if ~isempty(inputname(2))
+                    warning('Argument ''%s'' for string is a ''%s'' class object, not ''%s''.',...
+                        inputname(2),class(str),'char');
+                else
+                    warning('Argument %d for string is a ''%s'' class object, not ''%s''.',...
+                        2           ,class(str),'char');
+                end
+            end
+
+%  check the buffer size and increase as necessary
+
+            slen=length(str);
+            while (sbuf.len+slen > sbuf.size)
+                if (sbuf.size+sbuf.inc <= sbuf.max)
+                    sbuf.string=[sbuf.string blanks(sbuf.inc)];
+                    sbuf.size  =sbuf.size+sbuf.inc;
+                else
+                    error('String buffer length of %d would exceed maximum of %d.',...
+                        sbuf.size+sbuf.inc,sbuf.max);
+                end
+            end
+
+%  copy the string into the buffer
+
+            sbuf.string(sbuf.len+1:sbuf.len+slen)=str;
+            sbuf.len=sbuf.len+slen;
+
+        end
+
+%  return the string from the object
+
+        function [str]=str(sbuf)
+
+           str=sbuf.string(1:sbuf.len);
+
+        end
+
+%  reset the object
+
+        function [sbuf]=reset(sbuf)
+
+            string    ='';
+            size      =0;
+            len       =0;
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/TMeltingPoint.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/TMeltingPoint.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/TMeltingPoint.m	(revision 21239)
@@ -0,0 +1,15 @@
+function Tm=TMeltingPoint(reftemp, pressure)
+%TMELTINGPOINT- calculate pressure melting point of ice
+%
+%   reftemp is the melting temperature at atmospheric pressure (initialized in md.materials.meltingpoint)   
+%
+%   pressure is in Pa   
+%
+%   Usage:
+%   Tm=TMeltingPoint(md.materials.meltingpoint,pressure)
+
+%variables
+beta=7.9e-8; % K Pa^-1
+
+Tm=reftemp-beta*pressure;
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/TMeltingPoint.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/TMeltingPoint.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/TMeltingPoint.py	(revision 21239)
@@ -0,0 +1,21 @@
+import numpy as npy
+
+def TMeltingPoint(reftemp,pressure):
+	'''
+	Calculate the pressure melting point of ice at a given pressure
+
+	reftemp is the melting temperature in K at atmospheric pressure (initialized in md.materials.meltingpoint)
+
+	pressure is in Pa
+
+	Usage:
+		Tm=TMeltingPoint(md.materials.meltingpoint,pressure)
+	'''
+
+	#variables
+	beta=7.9e-8
+
+	#ensure ref is same dimension as pressure
+	ref=reftemp*npy.ones_like(pressure)
+
+	return reftemp-beta*pressure
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/arrhenius.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/arrhenius.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/arrhenius.m	(revision 21239)
@@ -0,0 +1,82 @@
+function rigidity=arrhenius(temperature, waterfraction, pressure)
+%ARRHENIUS - figure out the rigidity of ice for a given temperature and waterfraction
+%
+%   rigidity (in s^(1/3)Pa) is the flow law parameter in the flow law sigma=B*e(1/3) (Paterson, p97). 
+%   temperature is in Kelvin degrees
+%   
+%   Usage:
+%   rigidity=arrhenius(temperature, waterfraction, pressure)
+
+%variables
+T0=273.15;
+n=3.;
+beta=7.9e-8; % K Pa^-1
+R=8.314; % J mol^-1 K^-1  
+T_switch=T0-10.;
+
+if(temperature<0)
+    error('input temperature should be in Kelvin (positive)');
+end
+
+if(temperature>TMeltingPoint(T0,pressure))
+    error('input temperature is above pressure melting point.');
+end
+
+if(isnan(waterfraction))
+    waterfraction=zeros(size(temperature));
+end
+
+if(waterfraction<0)
+    error('waterfraction is negative');
+end
+
+wf_max=1.;
+if(any(waterfraction>wf_max))
+    error(['waterfraction exceeds permitted maximum of ' num2str(wf_max) '.']);
+end
+
+%limit waterfraction to 1%
+pos1p=find(waterfraction>0.01);
+waterfraction(pos1p)=0.01;
+
+pos=find((temperature<TMeltingPoint(T0,pressure)) & (waterfraction>0)); % cold, wet ice
+if (length(pos)>0)
+    error('cold ice with positive waterfraction detected.');
+end
+
+%   values for Activation energy Q and pre-exponential constants from
+%   Grewe/Blatter 2009, p54
+
+    function A0=GetA0(T)
+        A0=zeros(size(T));
+        pos0=find(T<T_switch);
+        pos1=find(T>=T_switch);
+        A0(pos0)=3.985e-13; %Grewe Blatter 2009
+        A0(pos1)=1.916e3;
+    end
+
+    function Q=GetQa(T)
+        Q=zeros(size(T));
+        pos0=find(T<T_switch);
+        pos1=find(T>=T_switch);
+        Q(pos0)=6.e4; % J mol^-1 % Paterson 2010
+        Q(pos1)=1.39e5;
+    end
+
+    function A=GetA(T, w)
+        Qa=GetQa(T); 
+        A0=GetA0(T);
+        if(w>0.01)
+           w=0.01;
+        end
+        A=A0.*exp(-Qa./(R*T)).*(1+181.25*w);        
+    end
+    
+    function B=GetRigidity(T,w,pressure)
+        Thom=TMeltingPoint(T, pressure);
+        A=GetA(Thom, w);
+        B=1./(A.^(1/n));
+    end
+
+rigidity=GetRigidity(temperature, waterfraction, pressure);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/buddjacka.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/buddjacka.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/buddjacka.m	(revision 21239)
@@ -0,0 +1,70 @@
+function rigidity=buddjacka(temperature)
+% BUDDJACKA - calculates ice rigidity as a function of temperature
+%
+%   rigidity (in s^(1/3)Pa) is the flow law parameter in the flow law sigma=B*e(1/3)
+%   Budd and Jacka (1989)
+%   temperature is in Kelvin degrees
+%
+%   Usage:
+%      rigidity=buddjacka(temperature)
+
+if any(temperature<0)
+	error('input temperature should be in Kelvin (positive)');
+end
+T=temperature-273.15;
+
+%BJtable=[-5.0000000e-02   1.1690833e-05
+%-1.0000000e+00   6.6642879e-06
+%-2.0000000e+00   4.0324422e-06
+%-5.0000000e+00   1.3461342e-06
+%-1.0000000e+01   4.6586675e-07
+%-1.5000000e+01   2.2686290e-07
+%-2.0000000e+01   1.1855922e-07
+%-2.5000000e+01   6.3886499e-08
+%-3.0000000e+01   3.5479579e-08
+%-3.5000000e+01   1.9228991e-08
+%-4.0000000e+01   9.1625910e-09
+%-5.0000000e+01   1.4769247e-09];
+%
+%Temp=BJtable(:,1);
+%Ao=BJtable(:,2)*1e-18; %conversion from MPa^-3 to Pa^-3
+%Ae=Ao*(2/3)^((1-3)/2);
+%B=Ae.^(-1/3);
+%fittedmodel=fit(Temp,B,'cubicspline');
+%rigidity=fittedmodel(T);
+%return
+
+%Temp=[-50:1:0];                                    
+%Bcall=buddjacka(Temp+273.15);
+%Bbjall=buddjacka(Temp+273.15);
+%Acall=(Bcall.^-3)*(2/3)*1e18;
+%Abjall=(Bbjall.^-3)*(2/3)*1e18
+%semilogy(Temp,Acall,'--k',Temp,Abjall,'k')
+%semilogy(Temp,Bcall,'--k',Temp,Bbjall,'k')
+
+rigidity=zeros(size(T));
+pos=find(T<=-40);
+rigidity(pos)=1e8*(-0.000237326134296*(T(pos)+50).^3+ 0.017054655749852*(T(pos)+50).^2-0.496435984007500*(T(pos)+50)+7.670967258739796);
+pos=find(-40<T & T<=-35);
+rigidity(pos)=1e8*(-0.000237326134296*(T(pos)+40).^3+ 0.009934871720961*(T(pos)+40).^2-0.226540709299368*(T(pos)+40)+4.174746859353635);
+pos=find(-35<T & T<=-30);
+rigidity(pos)=1e8*(-0.000293001369376*(T(pos)+35).^3+ 0.006374979706516*(T(pos)+35).^2-0.144991452161983*(T(pos)+35)+3.260749339093782);
+pos=find(-30<T & T<=-25);
+rigidity(pos)=1e8*(-0.000053702836500*(T(pos)+30).^3+ 0.001979959165871*(T(pos)+30).^2-0.103216757800049*(T(pos)+30)+2.658541399774723);
+pos=find(-25<T & T<=-20);
+rigidity(pos)=1e8*( 0.000006906867543*(T(pos)+25).^3+ 0.001174416618375*(T(pos)+25).^2-0.087444878878821*(T(pos)+25)+2.185243735358781);
+pos=find(-20<T & T<=-15);
+rigidity(pos)=1e8*(-0.000015460250554*(T(pos)+20).^3+ 0.001278019631513*(T(pos)+20).^2-0.075182697629382*(T(pos)+20)+1.778243114866868);
+pos=find(-15<T & T<=-10);
+rigidity(pos)=1e8*(-0.000110386100241*(T(pos)+15).^3+ 0.001046115873209*(T(pos)+15).^2-0.063562020105772*(T(pos)+15)+1.432347586188582);
+pos=find(-10<T & T<=-5);
+rigidity(pos)=1e8*(-0.000108595885218*(T(pos)+10).^3+-0.000609675630408*(T(pos)+10).^2-0.061379818891767*(T(pos)+10)+1.126892119959808);
+pos=find(-5<T & T<=-2);
+rigidity(pos)=1e8*( 0.000173187986430*(T(pos)+5).^3+-0.002238613908676*(T(pos)+5).^2-0.075621266587187*(T(pos)+5)+0.791176649088537);
+pos=find(-2<T & T<=-1);
+rigidity(pos)=1e8*( 0.000429499435151*(T(pos)+2).^3+-0.000679922030808*(T(pos)+2).^2-0.084376874405640*(T(pos)+2)+0.548841399782495);
+pos=find(-1<T);
+rigidity(pos)=1e8*( 0.000429499435151*(T(pos)+1).^3+ 0.000608576274646*(T(pos)+1).^2-0.084448220161802*(T(pos)+1)+0.464214102781199);
+
+%Now make sure that rigidity is positive
+pos=find(rigidity<0);        rigidity(pos)=10^6;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/cuffey.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/cuffey.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/cuffey.m	(revision 21239)
@@ -0,0 +1,41 @@
+function rigidity=cuffey(temperature)
+%CUFFEY - calculates ice rigidity as a function of temperature
+%
+%   rigidity (in s^(1/3)Pa) is the flow law parameter in the flow law sigma=B*e(1/3)
+%   (Cuffey and Paterson, p75). 
+%   temperature is in Kelvin degrees
+%
+%   Usage:
+%      rigidity=cuffey(temperature)
+
+if any(temperature<0)
+	error('input temperature should be in Kelvin (positive)');
+end
+T=temperature-273.15;
+
+%The routine below is equivalent to:
+% n=3; T=temperature-273;
+% %From cuffey
+% Temp=[0;-2;-5;-10;-15;-20;-25;-30;-35;-40;-45;-50];
+% A=[2.4*10^-24;1.7*10^-24;9.3*10^-25;3.5*10^-25;2.1*10^-25;1.2*10^-25;6.8*10^-26;3.7*10^-26;2.0*10^-26;1.0*10^-26;5.2*10^-27;2.6*10^-27];%s-1(Pa-3)
+% %Convert into rigidity B
+% B=A.^(-1/n); %s^(1/3)Pa
+% %Now, do a cubic fit between Temp and B: 
+% fittedmodel=fit(Temp,B,'cubicspline');
+% rigidity=fittedmodel(temperature);
+
+rigidity=zeros(size(T));
+pos=find(T<=-45);         rigidity(pos)=10^8*(-0.000396645116301*(T(pos)+50).^3+ 0.013345579471334*(T(pos)+50).^2  -0.356868703259105*(T(pos)+50)+7.272363035371383);
+pos=find(-45<=T & T<-40); rigidity(pos)=10^8*(-0.000396645116301*(T(pos)+45).^3+ 0.007395902726819*(T(pos)+45).^2  -0.253161292268336*(T(pos)+45)+5.772078366321591);
+pos=find(-40<=T & T<-35); rigidity(pos)=10^8*(0.000408322072669*(T(pos)+40).^3+  0.001446225982305*(T(pos)+40).^2  -0.208950648722716*(T(pos)+40)+4.641588833612773);
+pos=find(-35<=T & T<-30); rigidity(pos)=10^8*(-0.000423888728124*(T(pos)+35).^3+ 0.007571057072334*(T(pos)+35).^2  -0.163864233449525*(T(pos)+35)+3.684031498640382);
+pos=find(-30<=T & T<-25); rigidity(pos)=10^8*(0.000147154327025*(T(pos)+30).^3+ 0.001212726150476*(T(pos)+30).^2  -0.119945317335478*(T(pos)+30)+3.001000667185614);
+pos=find(-25<=T & T<-20); rigidity(pos)=10^8*(-0.000193435838672*(T(pos)+25).^3+ 0.003420041055847*(T(pos)+25).^2  -0.096781481303861*(T(pos)+25)+2.449986525148220);
+pos=find(-20<=T & T<-15); rigidity(pos)=10^8*(0.000219771255067*(T(pos)+20).^3+  0.000518503475772*(T(pos)+20).^2  -0.077088758645767*(T(pos)+20)+2.027400665191131);
+pos=find(-15<=T & T<-10); rigidity(pos)=10^8*(-0.000653438900191*(T(pos)+15).^3+ 0.003815072301777*(T(pos)+15).^2  -0.055420879758021*(T(pos)+15)+1.682390865739973);
+pos=find(-10<=T & T<-5);  rigidity(pos)=10^8*(0.000692439419762*(T(pos)+10).^3 -0.005986511201093 *(T(pos)+10).^2 -0.066278074254598*(T(pos)+10)+1.418983411970382);
+pos=find(-5<=T & T<-2);   rigidity(pos)=10^8*(-0.000132282004110*(T(pos)+5).^3 +0.004400080095332*(T(pos)+5).^2    -0.074210229783403*(T(pos)+5)+ 1.024485188140279);
+pos=find(-2<=T);          rigidity(pos)=10^8*(-0.000132282004110*(T(pos)+2).^3 +0.003209542058346*(T(pos)+2).^2    -0.051381363322371*(T(pos)+2)+ 0.837883605537096);
+
+%Now make sure that rigidity is positive
+pos=find(rigidity<0);        rigidity(pos)=10^6;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/cuffey.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/cuffey.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/cuffey.py	(revision 21239)
@@ -0,0 +1,49 @@
+import numpy
+
+def cuffey(temperature):
+	"""
+	CUFFEY - calculates ice rigidity as a function of temperature
+
+	   rigidity (in s^(1/3)Pa) is the flow law parameter in the flow law sigma=B*e(1/3)
+		(Cuffey and Paterson, p75). 
+	   temperature is in Kelvin degrees
+
+	   Usage:
+	      rigidity=cuffey(temperature)
+	"""
+	
+	if numpy.any(temperature<0.):
+		raise RuntimeError("input temperature should be in Kelvin (positive)")
+	
+	T = temperature-273.15
+
+	rigidity=numpy.zeros_like(T)
+	pos=numpy.nonzero(T<=-45)
+	rigidity[pos]=10**8*(-0.000396645116301*(T[pos]+50)**3+ 0.013345579471334*(T[pos]+50)**2  -0.356868703259105*(T[pos]+50)+7.272363035371383)
+	pos=numpy.nonzero(numpy.logical_and(-45<=T,T<-40))
+	rigidity[pos]=10**8*(-0.000396645116301*(T[pos]+45)**3+ 0.007395902726819*(T[pos]+45)**2  -0.253161292268336*(T[pos]+45)+5.772078366321591)
+	pos=numpy.nonzero(numpy.logical_and(-40<=T,T<-35))
+	rigidity[pos]=10**8*(0.000408322072669*(T[pos]+40)**3+  0.001446225982305*(T[pos]+40)**2  -0.208950648722716*(T[pos]+40)+4.641588833612773)
+	pos=numpy.nonzero(numpy.logical_and(-35<=T,T<-30))
+	rigidity[pos]=10**8*(-0.000423888728124*(T[pos]+35)**3+ 0.007571057072334*(T[pos]+35)**2  -0.163864233449525*(T[pos]+35)+3.684031498640382)
+	pos=numpy.nonzero(numpy.logical_and(-30<=T,T<-25))
+	rigidity[pos]=10**8*(0.000147154327025*(T[pos]+30)**3+ 0.001212726150476*(T[pos]+30)**2  -0.119945317335478*(T[pos]+30)+3.001000667185614)
+	pos=numpy.nonzero(numpy.logical_and(-25<=T,T<-20))
+	rigidity[pos]=10**8*(-0.000193435838672*(T[pos]+25)**3+ 0.003420041055847*(T[pos]+25)**2  -0.096781481303861*(T[pos]+25)+2.449986525148220)
+	pos=numpy.nonzero(numpy.logical_and(-20<=T,T<-15))
+	rigidity[pos]=10**8*(0.000219771255067*(T[pos]+20)**3+  0.000518503475772*(T[pos]+20)**2  -0.077088758645767*(T[pos]+20)+2.027400665191131)
+	pos=numpy.nonzero(numpy.logical_and(-15<=T,T<-10))
+	rigidity[pos]=10**8*(-0.000653438900191*(T[pos]+15)**3+ 0.003815072301777*(T[pos]+15)**2  -0.055420879758021*(T[pos]+15)+1.682390865739973)
+	pos=numpy.nonzero(numpy.logical_and(-10<=T,T<-5))
+	rigidity[pos]=10**8*(0.000692439419762*(T[pos]+10)**3 -0.005986511201093 *(T[pos]+10)**2 -0.066278074254598*(T[pos]+10)+1.418983411970382)
+	pos=numpy.nonzero(numpy.logical_and(-5<=T,T<-2))
+	rigidity[pos]=10**8*(-0.000132282004110*(T[pos]+5)**3 +0.004400080095332*(T[pos]+5)**2    -0.074210229783403*(T[pos]+5)+ 1.024485188140279)
+	pos=numpy.nonzero(-2<=T)
+	rigidity[pos]=10**8*(-0.000132282004110*(T[pos]+2)**3 +0.003209542058346*(T[pos]+2)**2    -0.051381363322371*(T[pos]+2)+ 0.837883605537096)
+
+	#Now make sure that rigidity is positive
+	pos=numpy.nonzero(rigidity<0)
+	rigidity[pos]=1**6 
+
+	return rigidity
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/cuffeytemperate.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/cuffeytemperate.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/cuffeytemperate.m	(revision 21239)
@@ -0,0 +1,21 @@
+function rigidity=cuffeytemperate(temperature, waterfraction, stressexp)
+%CUFFEYTEMPERATE - calculates ice rigidity as a function of temperature and waterfraction
+%
+%   rigidity (in s^(1/3)Pa) is the flow law parameter in the flow law sigma=B*e(1/3)
+%   (Cuffey and Paterson, p75). 
+%   temperature is in Kelvin degrees
+%
+%   Usage:
+%      rigidity=cuffeytemperate(temperature, waterfraction, stressexp)
+
+if (any(size(temperature)~=size(waterfraction))),
+	error('input temperature and waterfraction should have same size!');
+end
+if any(temperature<0)
+	error('input temperature should be in Kelvin (positive)');
+end
+if any(waterfraction<0 | waterfraction>1)
+	error('input waterfraction should be between 0 and 1');
+end
+
+rigidity=cuffey(temperature).*(1+181.25*max(0., min(0.01, waterfraction))).^(-1/stressexp);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/cuffeytemperate.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/cuffeytemperate.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/cuffeytemperate.py	(revision 21239)
@@ -0,0 +1,29 @@
+import numpy
+import cuffey
+
+def cuffeytemperate(temperature, waterfraction, stressexp)
+
+	"""
+	CUFFEYTEMPERATE - calculates ice rigidity as a function of temperature and waterfraction
+
+   rigidity (in s^(1/3)Pa) is the flow law parameter in the flow law sigma=B*e(1/3)
+   (Cuffey and Paterson, p75). 
+   temperature is in Kelvin degrees
+
+   Usage:
+      rigidity=cuffeytemperate(temperature, waterfraction, stressexp)
+	"""
+
+	if numpy.any(temperature<0.):
+		raise RuntimeError("input temperature should be in Kelvin (positive)")
+
+	if (numpy.any(temperature.shape~=waterfraction.shape)),
+		error('input temperature and waterfraction should have same size!');
+	end
+	if numpy.any(waterfraction<0 | waterfraction>1)
+		error('input waterfraction should be between 0 and 1');
+	end
+
+	rigidity=numpy.multiply(cuffey(temperature), (1*numpy.ones(waterfraction.shape)+181.25*numpy.maximum(numpy.zeros(waterfraction.shape), numpy.minimum(0.01*numpy.ones(waterfraction.shape), waterfraction)))**(-1/stressexp));
+
+	return rigidity
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/paterson.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/paterson.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/paterson.js	(revision 21239)
@@ -0,0 +1,53 @@
+function paterson(temperature){
+//PATERSON - figure out the rigidity of ice for a given temperature
+//
+//   rigidity (in s^(1/3)Pa) is the flow law paramter in the flow law sigma=B*e(1/3) (Paterson, p97). 
+//   temperature is in Kelvin degrees
+//
+//   Usage:
+//      var rigidity=paterson(temperature)
+
+	//variables:
+	var T=[];
+
+	if (ArrayAnyBelowStrict(temperature,0)){
+		throw Error('input temperature should be in Kelvin (positive)');
+	}
+	
+	T=temperature.slice(0);
+	for(var i=0;i<temperature.length;i++)T[i]=temperature[i]-273.15;
+
+	//The routine below is equivalent to:
+
+	// n=3; T=temperature-273;
+	// //From paterson,
+	// Temp=[0;-2;-5;-10;-15;-20;-25;-30;-35;-40;-45;-50];
+	// A=[6.8*10^-15;2.4*10^-15;1.6*10^-15;4.9*10^-16;2.9*10^-16;1.7*10^-16;9.4*
+	// 10^-17;5.1*10^-17;2.7*10^-17;1.4*10^-17;7.3*10^-18;3.6*10^-18];;//s-1(kPa-3)
+	// //Convert into rigidity B
+	// B=A.^(-1/n)*10^3; //s^(1/3)Pa
+	// //Now, do a cubic fit between Temp and B: 
+	// fittedmodel=fit(Temp,B,'cubicspline');
+	// rigidity=fittedmodel(temperature);
+
+	var rigidity=NewArrayFill(T.length,0);
+	
+	for (var i=0;i<T.length;i++){
+		
+		if(T[i]<=-45)              rigidity[i]=Math.pow(10,8)*(-0.000292866376675*Math.pow(T[i]+50,3)+ 0.011672640664130*Math.pow(T[i]+50,2)  -0.325004442485481*(T[i]+50)+  6.524779401948101);
+		if(-45<=T[i] & T[i]<-40)   rigidity[i]=Math.pow(10,8)*(-0.000292866376675*Math.pow(T[i]+45,3)+ 0.007279645014004*Math.pow(T[i]+45,2)  -0.230243014094813*(T[i]+45)+  5.154964909039554);
+		if(-40<=T[i] & T[i]<-35)   rigidity[i]=Math.pow(10,8)*(0.000072737147457*Math.pow(T[i]+40,3)+  0.002886649363879*Math.pow(T[i]+40,2)  -0.179411542205399*(T[i]+40)+  4.149132666831214);
+		if(-35<=T[i] & T[i]<-30)   rigidity[i]=Math.pow(10,8)*(-0.000086144770023*Math.pow(T[i]+35,3)+ 0.003977706575736*Math.pow(T[i]+35,2)  -0.145089762507325*(T[i]+35)+  3.333333333333331);
+		if(-30<=T[i] & T[i]<-25)   rigidity[i]=Math.pow(10,8)*(-0.000043984685769*Math.pow(T[i]+30,3)+ 0.002685535025386*Math.pow(T[i]+30,2)  -0.111773554501713*(T[i]+30)+  2.696559088937191);
+		if(-25<=T[i] & T[i]<-20)   rigidity[i]=Math.pow(10,8)*(-0.000029799523463*Math.pow(T[i]+25,3)+ 0.002025764738854*Math.pow(T[i]+25,2)  -0.088217055680511*(T[i]+25)+  2.199331606342181);
+		if(-20<=T[i] & T[i]<-15)   rigidity[i]=Math.pow(10,8)*(0.000136920904777*Math.pow(T[i]+20,3)+  0.001578771886910*Math.pow(T[i]+20,2)  -0.070194372551690*(T[i]+20)+  1.805165505978111);
+		if(-15<=T[i] & T[i]<-10)   rigidity[i]=Math.pow(10,8)*(-0.000899763781026*Math.pow(T[i]+15,3)+ 0.003632585458564*Math.pow(T[i]+15,2)  -0.044137585824322*(T[i]+15)+  1.510778053489523);
+		if(-10<=T[i] & T[i]<-5)    rigidity[i]=Math.pow(10,8)*(0.001676964325070*Math.pow(T[i]+10,3)-  0.009863871256831*Math.pow(T[i]+10,2)  -0.075294014815659*(T[i]+10)+  1.268434288203714);
+		if(-5<=T[i] & T[i]<-2)     rigidity[i]=Math.pow(10,8)*(-0.003748937622487*Math.pow(T[i]+5,3)+0.015290593619213*Math.pow(T[i]+5,2)  -0.048160403003748*(T[i]+5)+  0.854987973338348);
+		if(-2<=T[i])              rigidity[i]=Math.pow(10,8)*(-0.003748937622488*Math.pow(T[i]+2,3)-0.018449844983174*Math.pow(T[i]+2,2)  -0.057638157095631*(T[i]+2)+  0.746900791092860);
+
+		//Now make sure that rigidity is positive
+		if(rigidity[i]<0)          rigidity[i]=Math.pow(10,6);
+	}
+	return rigidity;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/paterson.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/paterson.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/paterson.m	(revision 21239)
@@ -0,0 +1,42 @@
+function rigidity=paterson(temperature)
+%PATERSON - figure out the rigidity of ice for a given temperature
+%
+%   rigidity (in s^(1/3)Pa) is the flow law paramter in the flow law sigma=B*e(1/3) (Paterson, p97). 
+%   temperature is in Kelvin degrees
+%
+%   Usage:
+%      rigidity=paterson(temperature)
+
+if any(temperature<0)
+	error('input temperature should be in Kelvin (positive)');
+end
+T=temperature-273.15;
+
+%The routine below is equivalent to:
+
+% n=3; T=temperature-273;
+% %From paterson,
+% Temp=[0;-2;-5;-10;-15;-20;-25;-30;-35;-40;-45;-50];
+% A=[6.8*10^-15;2.4*10^-15;1.6*10^-15;4.9*10^-16;2.9*10^-16;1.7*10^-16;9.4*
+% 10^-17;5.1*10^-17;2.7*10^-17;1.4*10^-17;7.3*10^-18;3.6*10^-18];;%s-1(kPa-3)
+% %Convert into rigidity B
+% B=A.^(-1/n)*10^3; %s^(1/3)Pa
+% %Now, do a cubic fit between Temp and B: 
+% fittedmodel=fit(Temp,B,'cubicspline');
+% rigidity=fittedmodel(temperature);
+
+rigidity=zeros(length(T),1);
+pos1=find(T<=-45);           rigidity(pos1)=10^8*(-0.000292866376675*(T(pos1)+50).^3+ 0.011672640664130*(T(pos1)+50).^2  -0.325004442485481*(T(pos1)+50)+  6.524779401948101);
+pos2=find(-45<=T & T<-40);   rigidity(pos2)=10^8*(-0.000292866376675*(T(pos2)+45).^3+ 0.007279645014004*(T(pos2)+45).^2  -0.230243014094813*(T(pos2)+45)+  5.154964909039554);
+pos3=find(-40<=T & T<-35);   rigidity(pos3)=10^8*(0.000072737147457*(T(pos3)+40).^3+  0.002886649363879*(T(pos3)+40).^2  -0.179411542205399*(T(pos3)+40)+  4.149132666831214);
+pos4=find(-35<=T & T<-30);   rigidity(pos4)=10^8*(-0.000086144770023*(T(pos4)+35).^3+ 0.003977706575736*(T(pos4)+35).^2  -0.145089762507325*(T(pos4)+35)+  3.333333333333331);
+pos5=find(-30<=T & T<-25);   rigidity(pos5)=10^8*(-0.000043984685769*(T(pos5)+30).^3+ 0.002685535025386*(T(pos5)+30).^2  -0.111773554501713*(T(pos5)+30)+  2.696559088937191);
+pos6=find(-25<=T & T<-20);   rigidity(pos6)=10^8*(-0.000029799523463*(T(pos6)+25).^3+ 0.002025764738854*(T(pos6)+25).^2  -0.088217055680511*(T(pos6)+25)+  2.199331606342181);
+pos7=find(-20<=T & T<-15);   rigidity(pos7)=10^8*(0.000136920904777*(T(pos7)+20).^3+  0.001578771886910*(T(pos7)+20).^2  -0.070194372551690*(T(pos7)+20)+  1.805165505978111);
+pos8=find(-15<=T & T<-10);   rigidity(pos8)=10^8*(-0.000899763781026*(T(pos8)+15).^3+ 0.003632585458564*(T(pos8)+15).^2  -0.044137585824322*(T(pos8)+15)+  1.510778053489523);
+pos9=find(-10<=T & T<-5);    rigidity(pos9)=10^8*(0.001676964325070*(T(pos9)+10).^3-  0.009863871256831*(T(pos9)+10).^2  -0.075294014815659*(T(pos9)+10)+  1.268434288203714);
+pos10=find(-5<=T & T<-2);    rigidity(pos10)=10^8*(-0.003748937622487*(T(pos10)+5).^3+0.015290593619213*(T(pos10)+5).^2  -0.048160403003748*(T(pos10)+5)+  0.854987973338348);
+pos11=find(-2<=T);           rigidity(pos11)=10^8*(-0.003748937622488*(T(pos11)+2).^3-0.018449844983174*(T(pos11)+2).^2  -0.057638157095631*(T(pos11)+2)+  0.746900791092860);
+
+%Now make sure that rigidity is positive
+pos=find(rigidity<0);        rigidity(pos)=10^6;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/paterson.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/paterson.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/materials/paterson.py	(revision 21239)
@@ -0,0 +1,79 @@
+import numpy
+
+def paterson(temperature):
+	"""
+	PATERSON - figure out the rigidity of ice for a given temperature
+
+	   rigidity (in s^(1/3)Pa) is the flow law paramter in the flow law sigma=B*e(1/3) (Paterson, p97). 
+	   temperature is in Kelvin degrees
+
+	   Usage:
+	      rigidity=paterson(temperature)
+	"""
+	
+	if numpy.any(temperature<0.):
+		raise RuntimeError("input temperature should be in Kelvin (positive)")
+
+	if numpy.ndim(temperature)==2:
+		#T = temperature.reshape(-1,)-273.15
+		T = temperature.flatten()-273.15
+	elif isinstance(temperature,float) or isinstance(temperature,int):
+		T = numpy.array([temperature])-273.15
+	else:
+		T = temperature-273.15
+
+	#The routine below is equivalent to:
+
+	# n=3; T=temperature-273;
+	# %From paterson,
+	# Temp=[0;-2;-5;-10;-15;-20;-25;-30;-35;-40;-45;-50];
+	# A=[6.8*10^-15;2.4*10^-15;1.6*10^-15;4.9*10^-16;2.9*10^-16;1.7*10^-16;9.4*
+	# 10^-17;5.1*10^-17;2.7*10^-17;1.4*10^-17;7.3*10^-18;3.6*10^-18];;%s-1(kPa-3)
+	# %Convert into rigidity B
+	# B=A.^(-1/n)*10^3; %s^(1/3)Pa
+	# %Now, do a cubic fit between Temp and B: 
+	# fittedmodel=fit(Temp,B,'cubicspline');
+	# rigidity=fittedmodel(temperature);
+
+	rigidity=numpy.zeros_like(T)
+	pos1=numpy.nonzero(T<=-45)[0]
+	if len(pos1):
+		rigidity[pos1]=10**8*(-0.000292866376675*(T[pos1]+50)**3+ 0.011672640664130*(T[pos1]+50)**2  -0.325004442485481*(T[pos1]+50)+  6.524779401948101)
+	pos2=numpy.nonzero(numpy.logical_and(-45<=T,T<-40))[0]
+	if len(pos2):
+		rigidity[pos2]=10**8*(-0.000292866376675*(T[pos2]+45)**3+ 0.007279645014004*(T[pos2]+45)**2  -0.230243014094813*(T[pos2]+45)+  5.154964909039554)
+	pos3=numpy.nonzero(numpy.logical_and(-40<=T,T<-35))[0]
+	if len(pos3):
+		rigidity[pos3]=10**8*(0.000072737147457*(T[pos3]+40)**3+  0.002886649363879*(T[pos3]+40)**2  -0.179411542205399*(T[pos3]+40)+  4.149132666831214)
+	pos4=numpy.nonzero(numpy.logical_and(-35<=T,T<-30))[0]
+	if len(pos4):
+		rigidity[pos4]=10**8*(-0.000086144770023*(T[pos4]+35)**3+ 0.003977706575736*(T[pos4]+35)**2  -0.145089762507325*(T[pos4]+35)+  3.333333333333331)
+	pos5=numpy.nonzero(numpy.logical_and(-30<=T,T<-25))[0]
+	if len(pos5):
+		rigidity[pos5]=10**8*(-0.000043984685769*(T[pos5]+30)**3+ 0.002685535025386*(T[pos5]+30)**2  -0.111773554501713*(T[pos5]+30)+  2.696559088937191)
+	pos6=numpy.nonzero(numpy.logical_and(-25<=T,T<-20))[0]
+	if len(pos6):
+		rigidity[pos6]=10**8*(-0.000029799523463*(T[pos6]+25)**3+ 0.002025764738854*(T[pos6]+25)**2  -0.088217055680511*(T[pos6]+25)+  2.199331606342181)
+	pos7=numpy.nonzero(numpy.logical_and(-20<=T,T<-15))[0]
+	if len(pos7):
+		rigidity[pos7]=10**8*(0.000136920904777*(T[pos7]+20)**3+  0.001578771886910*(T[pos7]+20)**2  -0.070194372551690*(T[pos7]+20)+  1.805165505978111)
+	pos8=numpy.nonzero(numpy.logical_and(-15<=T,T<-10))[0]
+	if len(pos8):
+		rigidity[pos8]=10**8*(-0.000899763781026*(T[pos8]+15)**3+ 0.003632585458564*(T[pos8]+15)**2  -0.044137585824322*(T[pos8]+15)+  1.510778053489523)
+	pos9=numpy.nonzero(numpy.logical_and(-10<=T,T<-5))[0]
+	if len(pos9):
+		rigidity[pos9]=10**8*(0.001676964325070*(T[pos9]+10)**3-  0.009863871256831*(T[pos9]+10)**2  -0.075294014815659*(T[pos9]+10)+  1.268434288203714)
+	pos10=numpy.nonzero(numpy.logical_and(-5<=T,T<-2))[0]
+	if len(pos10):
+		rigidity[pos10]=10**8*(-0.003748937622487*(T[pos10]+5)**3+0.015290593619213*(T[pos10]+5)**2  -0.048160403003748*(T[pos10]+5)+  0.854987973338348)
+	pos11=numpy.nonzero(-2<=T)[0]
+	if len(pos11):
+		rigidity[pos11]=10**8*(-0.003748937622488*(T[pos11]+2)**3-0.018449844983174*(T[pos11]+2)**2  -0.057638157095631*(T[pos11]+2)+  0.746900791092860)
+
+	#Now make sure that rigidity is positive
+	pos=numpy.nonzero(rigidity<0)[0]
+	if len(pos):
+		rigidity[pos]=1.e6 
+
+	return rigidity
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/analyticaldamage.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/analyticaldamage.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/analyticaldamage.m	(revision 21239)
@@ -0,0 +1,105 @@
+function [damage,B,backstress]=analyticaldamage(md,varargin)
+%ANALYTICALDAMAGE - compute damage for an ice shelf 
+%
+%	 This routine computes damage as a function of water/ice
+%	 material properties, ice thickness, strain rate, and ice 
+%	 rigidity.  The model must contain computed strain rates,
+%	 either from observed or modeled ice velocities.
+%
+%   Available options:
+%		- 'eq'			: analytical equation to use in the calculation.  Must be one of:
+%								'Weertman1D' for a confined ice shelf free to flow in one direction
+%								'Weertman2D' for an unconfined ice shelf free to spread in any direction
+%								'Thomas' for a 2D ice shelf, taking into account full strain rate tensor (default)
+%		- 'smoothing'	: the amount of smoothing to be applied to the strain rate data.
+%								Type 'help averaging' for more information on its
+%								usage. Defaults to 0.
+%		- 'sigmab'		: a-priori backstress in opposition to the driving stress.
+%								Defaults to 0 everywhere. 
+
+%		- 'coordsys'	: coordinate system for calculating the strain rate
+%							components. Must be one of: 
+%				'longitudinal': x axis aligned along a flowline at every point (default)
+%				'principal': x axis aligned along maximum principal strain rate
+%					at every point
+%				'xy': x and y axes same as in polar stereographic projection 
+%
+%   Return values:
+%		'damage' which is truncated in the range [0,1-1e-9]
+%
+%	   'B' is the ice rigidity calculated assuming D=0 everywhere. 
+%
+%		'backstress' is the inferred backstress necessary to balance the
+%		analytical solution (keeping damage within its appropriate limits, e.g. D
+%		in [0,1]).
+%
+%   Usage:
+%      [damage,B,backstress]=analyticaldamage(md,options)
+%
+%   Example:
+%      [damage,B,backstress]=analyticaldamage(md,'eq','Weertman2D','smoothing',2,'sigmab',10e3,'coordsys','longitudinal');
+
+% check inputs
+if (nargin<1),
+	help analyticaldamage
+	error('bad usage');
+end
+if isempty(fieldnames(md.results)),
+	error(['md.results.strainrate is not present.  Calculate using md=mechanicalproperties(md,vx,vy)']);
+end
+if dimension(md.mesh)~=2,
+	error('only 2d model supported currently');
+end
+if any(md.flowequation.element_equation~=2),
+	disp('Warning: the model has some non SSA elements. These will be treated like SSA elements');
+end
+
+% process options
+options = pairoptions(varargin{:});
+eq = getfieldvalue(options,'eq','Thomas');
+smoothing = getfieldvalue(options,'smoothing',0);
+sigmab = getfieldvalue(options,'sigmab',0);
+coordsys = getfieldvalue(options,'coordsys','longitudinal');
+if length(sigmab)==1,
+	sigmab=sigmab*ones(md.mesh.numberofvertices,1);
+end
+
+[a,b,theta,ex]=thomasparams(md,'eq',eq,'smoothing',smoothing,'coordsys',coordsys);
+
+% spreading stress
+rhoi=md.materials.rho_ice;
+rhow=md.materials.rho_water;
+C=0.5*rhoi*md.constants.g*(1-rhoi/rhow);
+T=C*md.geometry.thickness;
+
+% rheology
+B=md.materials.rheology_B;
+n=averaging(md,md.materials.rheology_n,0);
+
+D=1-(1+a+a.^2+b.^2).^((n-1)./(2*n))./abs(ex).^(1./n).*(T-sigmab)./B./(2+a)./sign(ex);
+
+% D>1 where (2+a).*sign(ex)<0, compressive regions where high backstress needed
+pos=find(D>1);
+D(pos)=0;
+
+backstress=zeros(md.mesh.numberofvertices,1);
+
+% backstress to bring D down to one 
+backstress(pos)=T(pos)-(1-D(pos)).*B(pos).*sign(ex(pos)).*(2+a(pos)).*abs(ex(pos)).^(1./n(pos))./(1+a(pos)+a(pos).^2).^((n(pos)-1)/2./n(pos));
+
+pos=find(D<0);
+mask=ismember(1:md.mesh.numberofvertices,pos);
+D(pos)=0;
+
+% backstress to bring negative damage to zero
+backstress(pos)=T(pos)-(1-D(pos)).*B(pos).*sign(ex(pos)).*(2+a(pos)).*abs(ex(pos)).^(1./n(pos))./(1+a(pos)+a(pos).^2).^((n(pos)-1)/2./n(pos));
+
+pos=find(backstress<0);
+backstress(pos)=0;
+
+% rigidity from Thomas relation for D=0 and backstress=0
+B=sign(ex)./(2+a).*(1+a+a.^2).^((n-1)/2./n).*T./(abs(ex).^(1./n));
+pos=find(B<0);
+B(pos)=md.materials.rheology_B(pos);
+
+damage=D;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/analyticaldamage.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/analyticaldamage.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/analyticaldamage.py	(revision 21239)
@@ -0,0 +1,106 @@
+import numpy as npy
+from averaging import averaging
+#from plotmodel import plotmodel
+from thomasparams import thomasparams
+
+def analyticaldamage(md,**kwargs):
+	'''
+	ANALYTICALDAMAGE - compute damage for an ice shelf 
+	
+		 This routine computes damage as a function of water/ice
+		 material properties, ice thickness, strain rate, and ice 
+		 rigidity.  The model must contain computed strain rates,
+		 either from observed or modeled ice velocities.
+	
+	   Available options:
+			-eq			: analytical equation to use in the calculation.  Must be one of:
+									'Weertman1D' for a confined ice shelf free to flow in one direction
+									'Weertman2D' for an unconfined ice shelf free to spread in any direction
+									'Thomas' for a 2D ice shelf, taking into account full strain rate tensor (default)
+			-smoothing	: the amount of smoothing to be applied to the strain rate data.
+									Type 'help averaging' for more information on its usage.
+			-coordsys	: coordinate system for calculating the strain rate
+						components. Must be one of:
+			-sigmab		: a compressive backstress term to be subtracted from the driving stress 
+									in the damage calculation
+	
+	   Return values:
+			'damage' which is truncated in the range [0,1-1e-9]
+	
+		   'B' is the rigidity, which is equal to md.materials.rheology_B in areas outside
+			those defined by 'mask.'  Within areas defined by 'mask,' where negative damage 
+			is inferred, 'B' is updated to make damage equal to zero.  
+	
+			'backstress' is the inferred backstress necessary to balance the analytical solution
+			(keeping damage within its appropriate limits, e.g. D in [0,1]).
+	
+	   Usage:
+	      damage,B,backstress=analyticaldamage(md,kwargs)
+	
+	   Example:
+	      damage,B,backstress=analyticaldamage(md,eq='Weertman2D',smoothing=2,sigmab=10e3)
+	'''
+
+	#unpack kwargs
+	eq=kwargs.pop('eq','Thomas')
+	if 'eq' in kwargs: del kwargs['eq']
+	smoothing=kwargs.pop('smoothing',0)
+	if 'smoothing' in kwargs: del kwargs['smoothing']
+	coordsys=kwargs.pop('coordsys','longitudinal')
+	if 'coordsys' in kwargs: del kwargs['coordsys']
+	sigmab=kwargs.pop('sigmab',0)
+	if 'sigmab' in kwargs: del kwargs['sigmab']
+	assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
+
+	if isinstance(sigmab,(int,float)):
+		sigmab=sigmab*npy.ones((md.mesh.numberofvertices,))
+
+	# check inputs
+	if 'strainrate' not in md.results.__dict__:
+		raise StandardError('md.results.strainrate not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
+	if not '2d' in md.mesh.__doc__:
+		raise StandardError('only 2d (planview) model supported currently')
+	if npy.any(md.flowequation.element_equation!=2):
+		print 'Warning: the model has some non SSA elements. These will be treated like SSA elements'
+
+	a,b,theta,ex=thomasparams(md,eq=eq,smoothing=smoothing,coordsys=coordsys)
+	
+	# spreading stress
+	rhoi=md.materials.rho_ice
+	rhow=md.materials.rho_water
+	C=0.5*rhoi*md.constants.g*(1.-rhoi/rhow)
+	T=C*md.geometry.thickness
+	
+	# rheology
+	B=md.materials.rheology_B
+	n=averaging(md,md.materials.rheology_n,0)
+	
+	D=1.-(1.+a+a**2+b**2)**((n-1.)/(2.*n))/npy.abs(ex)**(1./n)*(T-sigmab)/B/(2.+a)/npy.sign(ex)
+	
+	# D>1 where (2+a).*sign(ex)<0, compressive regions where high backstress needed
+	pos=npy.nonzero(D>1)
+	D[pos]=0
+	
+	backstress=npy.zeros((md.mesh.numberofvertices,))
+
+	# backstress to bring D down to one 
+	backstress[pos]=T[pos]-(1.-D[pos])*B[pos]*npy.sign(ex[pos])*(2.+a[pos])*npy.abs(ex[pos])**(1./n[pos])/(1.+a[pos]+a[pos]**2)**((n[pos]-1.)/2./n[pos])
+	
+	pos=npy.nonzero(D<0)
+	#mask=ismember(1:md.mesh.numberofvertices,pos);
+	D[pos]=0
+	
+	# backstress to bring negative damage to zero
+	backstress[pos]=T[pos]-(1.-D[pos])*B[pos]*npy.sign(ex[pos])*(2.+a[pos])*npy.abs(ex[pos])**(1./n[pos])/(1.+a[pos]+a[pos]**2)**((n[pos]-1.)/2./n[pos])
+	
+	pos=npy.nonzero(backstress<0)
+	backstress[pos]=0
+	
+	# rigidity from Thomas relation for D=0 and backstress=0
+	B=npy.sign(ex)/(2.+a)*(1.+a+a**2)**((n-1.)/2./n)*T/(npy.abs(ex)**(1./n))
+	pos=npy.nonzero(B<0)
+	B[pos]=md.materials.rheology_B[pos]
+	
+	damage=D
+	
+	return damage, B, backstress
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/backstressfrominversion.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/backstressfrominversion.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/backstressfrominversion.m	(revision 21239)
@@ -0,0 +1,70 @@
+function backstress=backstressfrominversion(md,varargin)
+%BACKSTRESSFROMINVERSION - compute ice shelf backstress from inversion results 
+%
+%	 This routine computes backstress based on the analytical formalism of
+%	 Thomas (1973) and Borstad et al. (2013).  The model must contain inversion
+%	 results for ice rigidity.  Strain rates must also be included, either from
+%	 observed or modeled velocities.  Ice rigidity B is assumed to be
+%	 parameterized by the ice temperature in md.materials.rheology_B.
+%
+%   Available options:
+%		- 'tempmask'	: mask the inverted rigidity to be no more than
+%							appropriate for the temperature of the ice?  
+%							Boolean, defaults to false.
+%		- 'smoothing'	: the amount of smoothing to be applied to the strain rate data.
+%								Type 'help averaging' for more information on its
+%								usage. Defaults to 0.
+%		- 'coordsys'	: coordinate system for calculating the strain rate
+%							components. Must be one of: 
+%				'longitudinal': x axis aligned along a flowline at every point (default)
+%				'principal': x axis aligned along maximum principal strain rate
+%					at every point
+%				'xy': x and y axes same as in polar stereographic projection 
+%
+%   Return values:
+%		'backstress' is the inferred backstress based on the analytical
+%		solution for ice shelf creep
+%
+%   Usage:
+%      backstress=backstressfrominversion(md,options)
+%
+%   Example:
+%      backstress=backstressfrominversion(md,'smoothing',2,'coordsys','longitudinal','tempmask',true);
+
+% check inputs
+if (nargin<1),
+	help backstressfrominversion
+	error('bad usage');
+end
+if isempty(fieldnames(md.results)),
+	error(['md.results.strainrate is not present.  Calculate using md=mechanicalproperties(md,vx,vy)']);
+end
+if dimension(md.mesh)~=2,
+	error('only 2d model supported currently');
+end
+if any(md.flowequation.element_equation~=2),
+	disp('Warning: the model has some non SSA elements. These will be treated like SSA elements');
+end
+
+% process options
+options = pairoptions(varargin{:});
+smoothing = getfieldvalue(options,'smoothing',0);
+coordsys = getfieldvalue(options,'coordsys','longitudinal');
+tempmask = getfieldvalue(options,'tempmask',false);
+
+T=0.5*md.materials.rho_ice*md.constants.g*(1-md.materials.rho_ice/md.materials.rho_water)*md.geometry.thickness;
+n=averaging(md,md.materials.rheology_n,0);
+B=md.materials.rheology_B;
+Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar;
+
+[a0,b0,theta0,ex0]=thomasparams(md,'eq','Thomas','smoothing',smoothing,'coordsys',coordsys);
+
+if tempmask
+	Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar;
+   pos=find(Bi>md.materials.rheology_B);
+   Bi(pos)=md.materials.rheology_B(pos);
+end
+
+% analytical backstress solution
+backstress=T-Bi.*sign(ex0).*(2+a0).*abs(ex0).^(1./n)./((1+a0+a0.^2+b0.^2).^((n-1)/2./n));
+backstress(find(backstress<0))=0;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/backstressfrominversion.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/backstressfrominversion.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/backstressfrominversion.py	(revision 21239)
@@ -0,0 +1,74 @@
+import numpy as npy
+from averaging import averaging
+from thomasparams import thomasparams
+
+def backstressfrominversion(md,**kwargs):
+	'''
+	Compute ice shelf backstress from inversion results.
+
+	This routine computes backstress based on the analytical formalism of
+	Thomas (1973) and Borstad et al. (2013, The Cryosphere).  The model
+	must contain inversion results for ice rigidity.  Strain rates must
+	also be included, either from observed or modeled velocities.  Ice
+	rigidity B is assumed to be parameterized by the ice temperature in
+	md.materials.rheology_B.
+
+   Available options:
+		- 'tempmask'	: mask the inverted rigidity to be no more than
+							appropriate for the temperature of the ice?  
+							Boolean, defaults to false.
+		- 'smoothing'	: the amount of smoothing to be applied to the strain rate data.
+								Type 'help averaging' for more information on its
+								usage. Defaults to 0.
+		- 'coordsys'	: coordinate system for calculating the strain rate
+							components. Must be one of: 
+				'longitudinal': x axis aligned along a flowline at every point (default)
+				'principal': x axis aligned along maximum principal strain rate
+					at every point
+				'xy': x and y axes same as in polar stereographic projection 
+
+   Return values:
+		'backstress' is the inferred backstress based on the analytical
+		solution for ice shelf creep
+
+   Usage:
+      backstress=backstressfrominversion(md,options)
+
+   Example:
+      backstress=backstressfrominversion(md,'smoothing',2,'coordsys','longitudinal','tempmask',true);
+	'''
+
+	# unpack kwargs
+	tempmask=kwargs.pop('tempmask',False)
+	if 'tempmask' in kwargs: del kwargs['maxiter']
+	smoothing=kwargs.pop('smoothing',0)
+	if 'smoothing' in kwargs: del kwargs['smoothing']
+	coordsys=kwargs.pop('coordsys','longitudinal')
+	if 'coordsys' in kwargs: del kwargs['coordsys']
+	assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
+
+	# some checks
+	if not hasattr(md.results,'strainrate'):
+		raise StandardError('md.results.strainrate not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
+	if not '2d' in md.mesh.__doc__:
+		raise StandardError('only 2d (planview) model supported currently')
+	if any(md.flowequation.element_equation!=2):
+		raise StandardError('Warning: the model has some non-SSA elements.  These will be treated like SSA elements')
+
+	T=0.5*md.materials.rho_ice*md.constants.g*(1-md.materials.rho_ice/md.materials.rho_water)*md.geometry.thickness
+	n=averaging(md,md.materials.rheology_n,0)
+	B=md.materials.rheology_B
+	Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar.reshape(-1,)
+	
+	a0,b0,theta0,ex0=thomasparams(md,eq='Thomas',smoothing=smoothing,coordsys=coordsys)
+	
+	if tempmask:
+		Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar
+		pos=npy.nonzero(Bi>md.materials.rheology_B)
+		Bi[pos]=md.materials.rheology_B[pos]
+	
+	# analytical backstress solution
+	backstress=T-Bi*npy.sign(ex0)*(2+a0)*npy.abs(ex0)**(1./n)/((1+a0+a0**2+b0**2)**((n-1.)/2./n))
+	backstress[npy.nonzero(backstress<0)]=0
+
+	return backstress
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/basalstress.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/basalstress.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/basalstress.m	(revision 21239)
@@ -0,0 +1,23 @@
+function [bx by b]=basalstress(md)
+%BASALSTRESS - compute basal stress from basal drag and geometric information. 
+%
+%      Computes basal stress from geometric information and ice velocity in md.initialization.
+%
+%   Usage:
+%      [bx by b]=basalstress(md);
+%
+%   See also: plot_basaldrag
+
+%compute exponents
+s=averaging(md,1./md.friction.p,0);
+r=averaging(md,md.friction.q./md.friction.p,0);
+
+%compute horizontal velocity
+ub=sqrt(md.initialization.vx.^2+md.initialization.vy.^2)/md.constants.yts;
+ubx=md.initialization.vx/md.constants.yts;
+uby=md.initialization.vy/md.constants.yts;
+
+%compute basal drag
+bx=(md.constants.g*(md.materials.rho_ice*md.geometry.thickness+md.materials.rho_water*md.geometry.base)).^r.*(md.friction.coefficient).^2.*ubx.^s;
+by=(md.constants.g*(md.materials.rho_ice*md.geometry.thickness+md.materials.rho_water*md.geometry.base)).^r.*(md.friction.coefficient).^2.*uby.^s;
+b=(md.constants.g*(md.materials.rho_ice*md.geometry.thickness+md.materials.rho_water*md.geometry.base)).^r.*(md.friction.coefficient).^2.*ub.^s;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/calcbackstress.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/calcbackstress.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/calcbackstress.m	(revision 21239)
@@ -0,0 +1,64 @@
+function backstress=calcbackstress(md,varargin)
+%BACKSTRESSFROMINVERSION - compute ice shelf backstress  
+%
+%	 This routine computes backstress based on the analytical formalism of
+%	 Thomas (1973) and Borstad et al. (2013) based on the ice rigidity,
+%	 thickness, the densities of ice and seawater, and (optionally)
+%	 damage. Strain rates must also be included, either from observed or
+%	 modeled velocities.
+
+%   Available options:
+%		- 'smoothing'	: the amount of smoothing to be applied to the strain rate data.
+%								Type 'help averaging' for more information on its
+%								usage. Defaults to 0.
+%		- 'coordsys'	: coordinate system for calculating the strain rate
+%							components. Must be one of: 
+%				'longitudinal': x axis aligned along a flowline at every point (default)
+%				'principal': x axis aligned along maximum principal strain rate
+%					at every point
+%				'xy': x and y axes same as in polar stereographic projection 
+%
+%   Return values:
+%		'backstress' is the inferred backstress based on the analytical
+%		solution for ice shelf creep
+%
+%   Usage:
+%      backstress=calcbackstress(md,options)
+%
+%   Example:
+%      backstress=backstressfrominversion(md,'smoothing',2,'coordsys','longitudinal');
+
+% check inputs
+if (nargin<1),
+	help backstressfrominversion
+	error('bad usage');
+end
+if isempty(fieldnames(md.results)),
+	error(['md.results.strainrate is not present.  Calculate using md=mechanicalproperties(md,vx,vy)']);
+end
+if dimension(md.mesh)~=2,
+	error('only 2d model supported currently');
+end
+if any(md.flowequation.element_equation~=2),
+	disp('Warning: the model has some non SSA elements. These will be treated like SSA elements');
+end
+
+% process options
+options = pairoptions(varargin{:});
+smoothing = getfieldvalue(options,'smoothing',0);
+coordsys = getfieldvalue(options,'coordsys','longitudinal');
+tempmask = getfieldvalue(options,'tempmask',false);
+
+T=0.5*md.materials.rho_ice*md.constants.g*(1-md.materials.rho_ice/md.materials.rho_water)*md.geometry.thickness;
+n=averaging(md,md.materials.rheology_n,0);
+B=md.materials.rheology_B;
+if md.damage.isdamage,
+	D=md.damage.D
+else
+	D=0.
+
+[a0,b0,theta0,ex0]=thomasparams(md,'eq','Thomas','smoothing',smoothing,'coordsys',coordsys);
+
+% analytical backstress solution
+backstress=T-(1.-D).*B.*sign(ex0).*(2+a0).*abs(ex0).^(1./n)./((1+a0+a0.^2+b0.^2).^((n-1)/2./n));
+backstress(find(backstress<0))=0;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/calcbackstress.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/calcbackstress.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/calcbackstress.py	(revision 21239)
@@ -0,0 +1,66 @@
+import numpy as npy
+from averaging import averaging
+from thomasparams import thomasparams
+
+def calcbackstress(md,**kwargs):
+	'''
+	Compute ice shelf backstress.
+
+	This routine computes backstress based on the analytical formalism of
+	Thomas (1973) and Borstad et al. (2013, The Cryosphere) based on the
+	ice rigidity, thickness, the densities of ice and seawater, and
+	(optionally) damage.  Strain rates must also be included, either from
+	observed or modeled velocities. 
+	
+	Available options:
+		- 'smoothing'	: the amount of smoothing to be applied to the strain rate data.
+								Type 'help averaging' for more information on its
+								usage. Defaults to 0.
+		- 'coordsys'	: coordinate system for calculating the strain rate
+							components. Must be one of: 
+				'longitudinal': x axis aligned along a flowline at every point (default)
+				'principal': x axis aligned along maximum principal strain rate
+					at every point
+				'xy': x and y axes same as in polar stereographic projection 
+
+   Return values:
+		'backstress' is the inferred backstress based on the analytical
+		solution for ice shelf creep
+
+   Usage:
+      backstress=calcbackstress(md,options)
+
+   Example:
+      backstress=calcbackstress(md,'smoothing',2,'coordsys','longitudinal')
+	'''
+
+	# unpack kwargs
+	smoothing=kwargs.pop('smoothing',0)
+	if 'smoothing' in kwargs: del kwargs['smoothing']
+	coordsys=kwargs.pop('coordsys','longitudinal')
+	if 'coordsys' in kwargs: del kwargs['coordsys']
+	assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
+
+	# some checks
+	if not hasattr(md.results,'strainrate'):
+		raise StandardError('md.results.strainrate not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
+	if not '2d' in md.mesh.__doc__:
+		raise StandardError('only 2d (planview) model supported currently')
+	if any(md.flowequation.element_equation!=2):
+		raise StandardError('Warning: the model has some non-SSA elements.  These will be treated like SSA elements')
+
+	T=0.5*md.materials.rho_ice*md.constants.g*(1-md.materials.rho_ice/md.materials.rho_water)*md.geometry.thickness
+	n=averaging(md,md.materials.rheology_n,0)
+	B=md.materials.rheology_B
+	if md.damage.isdamage:
+		D=md.damage.D
+	else:
+		D=0.
+	
+	a0,b0,theta0,ex0=thomasparams(md,eq='Thomas',smoothing=smoothing,coordsys=coordsys)
+	
+	# analytical backstress solution
+	backstress=T-(1.-D)*B*npy.sign(ex0)*(2+a0)*npy.abs(ex0)**(1./n)/((1+a0+a0**2+b0**2)**((n-1.)/2./n))
+	backstress[npy.nonzero(backstress<0)]=0
+
+	return backstress
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/cfl_step.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/cfl_step.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/cfl_step.m	(revision 21239)
@@ -0,0 +1,23 @@
+function maxtime=cfl_step(md,vx,vy)
+%CFL_STEP - return the maximum time step for the model in years
+%
+%   Dt < 0.5 / ( u/Dx +v/Dy )
+%
+%   Usage:
+%      maxtime=cfl_step(md,vx,vy);
+%
+%   Example:
+%      dt=cfl_step(md,md.results.StressbalanceSolution.Vx,md.results.StressbalanceSolution.Vy)
+
+%Check length of velocities 
+if size(vx,1)~=md.mesh.numberofvertices & size(vy,1)~=md.mesh.numberofvertices,
+	error('timestpes error message: size of velocity components must be the same as md.mesh.numberofvertices');
+end
+
+index=md.mesh.elements;
+edgex=max(md.mesh.x(index),[],2)-min(md.mesh.x(index),[],2);
+edgey=max(md.mesh.y(index),[],2)-min(md.mesh.y(index),[],2);
+vx=max(abs(vx(index)),[],2);
+vy=max(abs(vy(index)),[],2);
+
+maxtime=1/2*min(1./(vx./edgex+vy./edgey));
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/damagefrominversion.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/damagefrominversion.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/damagefrominversion.m	(revision 21239)
@@ -0,0 +1,33 @@
+function damage=damagefrominversion(md)
+%DAMAGEFROMINVERSION - compute ice shelf damage from inversion results
+%
+%	This routine computes damage based on the analytical formalism of Borstad et
+%	al. (2013).  The model must contain inversion results for ice rigidity.  Ice
+%	rigidity B is assumed to be parameterized by the ice temperature in
+%	md.materials.rheology_B. 
+%
+%	Usage:
+%		damage=damagefrominversion(md)
+%
+%	Example:
+%		damage=damagefrominversion(md)
+
+% check inputs
+if (nargin<1),
+	help backstressfrominversion
+	error('bad usage');
+end
+if isempty(fieldnames(md.results)),
+	error(['md.results.strainrate is not present.  Calculate using md=mechanicalproperties(md,vx,vy)']);
+end
+if dimension(md.mesh)~=2,
+	error('only 2d model supported currently');
+end
+if any(md.flowequation.element_equation~=2),
+	disp('Warning: the model has some non SSA elements. These will be treated like SSA elements');
+end
+
+damage=zeros(md.mesh.numberofvertices,1);
+% Damage where Bi softer than B(T)
+pos=find(md.results.StressbalanceSolution.MaterialsRheologyBbar<md.materials.rheology_B);
+damage(pos)=1-md.results.StressbalanceSolution.MaterialsRheologyBbar(pos)./md.materials.rheology_B(pos);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/damagefrominversion.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/damagefrominversion.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/damagefrominversion.py	(revision 21239)
@@ -0,0 +1,44 @@
+import numpy as npy
+
+def damagefrominversion(md):
+	'''
+	compute ice shelf damage from inversion results
+
+	This routine computes damage based on the analytical formalism of Borstad et
+	al. (2013, The Cryosphere).  The model must contain inversion results for
+	ice rigidity.  Ice rigidity B is assumed to be parameterized by the ice
+	temperature in md.materials.rheology_B. 
+	
+	Usage:
+		damage=damagefrominversion(md)
+	
+	Example:
+		damage=damagefrominversion(md)
+	'''
+
+	# check inputs
+	if not hasattr(md.results,'strainrate'):
+		raise StandardError('md.results.strainrate is not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
+	if not '2d' in md.mesh.__doc__:
+		raise StandardError('only 2d (planview) model supported currently')
+	if any(md.flowequation.element_equation!=2):
+		raise StandardError('Warning: the model has some non-SSA elements.  These will be treated like SSA elements')
+	if npy.ndim(md.results.StressbalanceSolution.MaterialsRheologyBbar)==2:
+		Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar.reshape(-1,)
+	else:
+		Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar
+	if npy.ndim(md.materials.rheology_B)==2:
+		BT=md.materials.rheology_B.reshape(-1,)
+	else:
+		BT=md.materials.rheology_B
+
+	damage=npy.zeros_like(Bi)
+
+	# Damage where Bi softer than B(T)
+	pos=npy.nonzero(Bi<BT)[0]
+	damage[pos]=1.-Bi[pos]/BT[pos]
+	
+	pos=npy.nonzero(damage<0)
+	damage[pos]=0
+
+	return damage
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/drivingstress.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/drivingstress.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/drivingstress.m	(revision 21239)
@@ -0,0 +1,18 @@
+function [px,py,pmag]=drivingstress(md)
+%DRIVINGSTRESS -  evaluates the driving stress
+%
+%   The driving stress is computed according to the following formula: 
+%   driving stress= rho_ice*g*H*slope
+%
+%   Usage:
+%      [Fx,Fy,Fmag]=drivingstress(md)
+
+%Get slope
+[sx,sy,s]=slope(md);
+
+%Average thickness over elements
+thickness_bar=(md.geometry.thickness(md.mesh.elements(:,1))+md.geometry.thickness(md.mesh.elements(:,2))+md.geometry.thickness(md.mesh.elements(:,3)))/3;
+
+px=md.materials.rho_ice*md.constants.g*thickness_bar.*sx;
+py=md.materials.rho_ice*md.constants.g*thickness_bar.*sy;
+pmag=sqrt(px.^2+py.^2);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/mechanicalproperties.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/mechanicalproperties.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/mechanicalproperties.m	(revision 21239)
@@ -0,0 +1,150 @@
+function md=mechanicalproperties(md,vx,vy,varargin)
+%MECHANICALPROPERTIES - compute stress and strain rate for a goven velocity
+%
+%   this routine computes the components of the (deviatoric) stress tensor,
+%   the strain rate tensor, and their respective principal directions.
+%   The results are in the model md: md.results
+%
+%   Usage:
+%      md=mechanicalproperties(md,vx,vy)
+%
+%   Example:
+%      md=mechanicalproperties(md,md.initialization.vx,md.initialization.vy);
+%      md=mechanicalproperties(md,md.inversion.vx_obs,md.inversion.vy_obs);
+
+%some checks
+if length(vx)~=md.mesh.numberofvertices | length(vy)~=md.mesh.numberofvertices,
+	%error(['the input velocity should be of size ' num2str(md.mesh.numberofvertices) '!'])
+end
+if dimension(md.mesh)~=2
+	error('only 2d model supported yet');
+end
+if any(md.flowequation.element_equation~=2),
+	disp('Warning: the model has some non SSA elements. These will be treated like SSA''s elements');
+end
+
+%get damage, if passed
+options = pairoptions(varargin{:});
+damage = getfieldvalue(options,'damage',zeros(md.mesh.numberofvertices,1));
+
+%initialization
+numberofelements=md.mesh.numberofelements;
+index=md.mesh.elements;
+summation=[1;1;1];
+directionsstress=zeros(numberofelements,4);
+directionsstrain=zeros(numberofelements,4);
+valuesstress=zeros(numberofelements,2);
+valuesstrain=zeros(numberofelements,2);
+
+%compute nodal functions coefficients N(x,y)=alpha x + beta y +gamma
+[alpha beta]=GetNodalFunctionsCoeff(index,md.mesh.x,md.mesh.y);
+
+%compute shear
+vxlist=vx(index)/md.constants.yts;
+vylist=vy(index)/md.constants.yts;
+ux=(vxlist.*alpha)*summation;
+uy=(vxlist.*beta)*summation;
+vx=(vylist.*alpha)*summation;
+vy=(vylist.*beta)*summation;						
+uyvx=(vx+uy)./2;
+clear vxlist vylist
+
+%compute viscosity
+nu=zeros(numberofelements,1);
+B_bar=md.materials.rheology_B(index)*summation/3;
+power=(md.materials.rheology_n-1)./(2*md.materials.rheology_n);
+second_inv=(ux.^2+vy.^2+((uy+vx).^2)/4+ux.*vy);
+
+%some corrections
+location=find(second_inv==0 & power~=0);
+nu(location)=10^18; 	%arbitrary maximum viscosity to apply where there is no effective shear
+
+if isa(md.materials,'matice')
+	location=find(second_inv~=0);
+	nu(location)=B_bar(location)./(second_inv(location).^power(location));
+	location=find(second_inv==0 & power==0);
+	nu(location)=B_bar(location);
+elseif isa(md.materials,'matdamageice')
+	Zinv=1-damage(index)*summation/3;
+	location=find(second_inv~=0);
+	nu(location)=Zinv(location).*B_bar(location)./(second_inv(location).^power(location));
+	location=find(second_inv==0 & power==0);
+	nu(location)=Zinv(location).*B_bar(location);
+	clear Zinv
+else
+	error(['class of md.materials (' class(md.materials) ') not recognized or not supported']);
+end
+clear B_bar location second_inv power
+
+%compute stress
+tau_xx=nu.*ux;
+tau_yy=nu.*vy;
+tau_xy=nu.*uyvx;
+
+%compute principal properties of stress
+for i=1:numberofelements,
+
+	%compute stress and strainrate matrices
+	stress=[tau_xx(i) tau_xy(i)
+	tau_xy(i)  tau_yy(i)];
+	strain=[ux(i) uyvx(i)
+	uyvx(i)  vy(i)];
+
+	%eigen values and vectors
+	[directions,value]=eig(stress);
+	%sort by absolute value of eigenvalue in descending order
+	[val,idx]=sort(abs(diag(value)),'descend');
+	%re-order eigenvalues and associated vectors 
+	value=value(idx,idx);
+	directions=directions(:,idx);
+	valuesstress(i,:)=[value(1,1) value(2,2)];
+	directionsstress(i,:)=directions(:)';
+	[directions,value]=eig(strain);
+	%same for strainrate
+	[val,idx]=sort(abs(diag(value)),'descend');
+	value=value(idx,idx);
+	directions=directions(:,idx);
+	valuesstrain(i,:)=[value(1,1) value(2,2)];
+	directionsstrain(i,:)=directions(:)';
+end
+
+%plug onto the model
+%NB: Matlab sorts the eigen value in increasing order, we want the reverse
+%NOTE: all stresses below are deviatoric
+stress=struct('xx',[],'yy',[],'xy',[],'principalvalue1',[],'principalaxis1',[],'principalvalue2',[],'principalaxis2',[],'effectivevalue',[]);
+stress.xx=tau_xx;
+stress.yy=tau_yy;
+stress.xy=tau_xy;
+stress.principalvalue1=valuesstress(:,1);
+stress.principalaxis1=directionsstress(:,1:2);
+stress.principalvalue2=valuesstress(:,2);
+stress.principalaxis2=directionsstress(:,3:4);
+stress.effectivevalue=1/sqrt(2)*sqrt(stress.xx.^2+stress.yy.^2+2*stress.xy.^2); % effective shear stress (sqrt(J2))
+md.results.stress=stress;
+
+strainrate=struct('xx',[],'yy',[],'xy',[],'principalvalue1',[],'principalaxis1',[],'principalvalue2',[],'principalaxis2',[],'effectivevalue',[]);
+strainrate.xx=ux*md.constants.yts; %strain rate in 1/a instead of 1/s
+strainrate.yy=vy*md.constants.yts; 
+strainrate.xy=uyvx*md.constants.yts; 
+strainrate.principalvalue1=valuesstrain(:,1)*md.constants.yts; 
+strainrate.principalaxis1=directionsstrain(:,1:2);
+strainrate.principalvalue2=valuesstrain(:,2)*md.constants.yts; 
+strainrate.principalaxis2=directionsstrain(:,3:4);
+strainrate.effectivevalue=1/sqrt(2)*sqrt(strainrate.xx.^2+strainrate.yy.^2+2*strainrate.xy.^2);
+md.results.strainrate=strainrate;
+
+%exact same stress as above
+deviatoricstress=struct('xx',[],'yy',[],'xy',[],'principalvalue1',[],'principalaxis1',[],'principalvalue2',[],'principalaxis2',[],'effectivevalue',[]);
+deviatoricstress.xx=tau_xx;
+deviatoricstress.yy=tau_yy;
+deviatoricstress.xy=tau_xy;
+deviatoricstress.principalvalue1=valuesstress(:,1);
+deviatoricstress.principalaxis1=directionsstress(:,1:2);
+deviatoricstress.principalvalue2=valuesstress(:,2);
+deviatoricstress.principalaxis2=directionsstress(:,3:4);
+deviatoricstress.effectivevalue=1/sqrt(2)*sqrt(stress.xx.^2+stress.yy.^2+2*stress.xy.^2);
+md.results.deviatoricstress=deviatoricstress;
+
+viscosity=struct('nu',[]);
+viscosity.nu=nu;
+md.results.viscosity=viscosity;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/mechanicalproperties.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/mechanicalproperties.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/mechanicalproperties.py	(revision 21239)
@@ -0,0 +1,160 @@
+import numpy as npy
+from GetNodalFunctionsCoeff import GetNodalFunctionsCoeff
+from results import results
+from averaging import averaging
+
+def mechanicalproperties(md,vx,vy,**kwargs):
+	"""
+	MECHANICALPROPERTIES - compute stress and strain rate for a goven velocity
+	
+   this routine computes the components of the stress tensor
+   strain rate tensor and their respective principal directions.
+   the results are in the model md: md.results
+	
+   Usage:
+      md=mechanicalproperties(md,vx,vy)
+	
+   Example:
+      md=mechanicalproperties(md,md.initialization.vx,md.initialization.vy)
+      md=mechanicalproperties(md,md.inversion.vx_obs,md.inversion.vy_obs)
+	"""
+
+	#some checks
+	if len(vx)!=md.mesh.numberofvertices or len(vy)!=md.mesh.numberofvertices:
+		raise ValueError('the input velocity should be of size ' + md.mesh.numberofvertices)
+	
+	#if md.mesh.dimension!=2:
+	#	raise StandardError('only 2D model supported currently')
+
+	if npy.any(md.flowequation.element_equation!=2):
+		print 'Warning: the model has some non SSA elements. These will be treated like SSA elements'
+
+        #unpack kwargs
+	if 'damage' in kwargs: 
+	    damage=kwargs.pop('damage')
+            if len(damage)!=md.mesh.numberofvertices:
+		raise ValueError('if damage is supplied it should be of size ' + md.mesh.numberofvertices)
+            if npy.ndim(damage)==2:
+                damage=damage.reshape(-1,)
+        else: damage=None
+
+	if npy.ndim(vx)==2:
+		vx=vx.reshape(-1,)
+	if npy.ndim(vy)==2:
+		vy=vy.reshape(-1,)
+	
+	#initialization
+	numberofelements=md.mesh.numberofelements
+	numberofvertices=md.mesh.numberofvertices
+	index=md.mesh.elements
+	summation=npy.array([[1],[1],[1]])
+	directionsstress=npy.zeros((numberofelements,4))
+	directionsstrain=npy.zeros((numberofelements,4))
+	valuesstress=npy.zeros((numberofelements,2))
+	valuesstrain=npy.zeros((numberofelements,2))
+	
+	#compute nodal functions coefficients N(x,y)=alpha x + beta y +gamma
+	alpha,beta=GetNodalFunctionsCoeff(index,md.mesh.x,md.mesh.y)[0:2]
+	
+	#compute shear
+	vxlist=vx[index-1]/md.constants.yts
+	vylist=vy[index-1]/md.constants.yts
+	ux=npy.dot((vxlist*alpha),summation).reshape(-1,)
+	uy=npy.dot((vxlist*beta),summation).reshape(-1,)
+	vx=npy.dot((vylist*alpha),summation).reshape(-1,)
+	vy=npy.dot((vylist*beta),summation).reshape(-1,)
+	uyvx=(vx+uy)/2.
+	#clear vxlist vylist
+	
+	#compute viscosity
+	nu=npy.zeros((numberofelements,))
+	B_bar=npy.dot(md.materials.rheology_B[index-1],summation/3.).reshape(-1,)
+	power=((md.materials.rheology_n-1.)/(2.*md.materials.rheology_n)).reshape(-1,)
+	second_inv=(ux**2.+vy**2.+((uy+vx)**2.)/4.+ux*vy).reshape(-1,)
+	
+	#some corrections
+	location=npy.nonzero(npy.logical_and(second_inv==0,power!=0))
+	nu[location]=10^18 	#arbitrary maximum viscosity to apply where there is no effective shear
+	
+	if 'matice' in md.materials.__module__:
+		location=npy.nonzero(second_inv)
+		nu[location]=B_bar[location]/(second_inv[location]**power[location])
+		location=npy.nonzero(npy.logical_and(second_inv==0,power==0))
+		nu[location]=B_bar[location]
+		location=npy.nonzero(npy.logical_and(second_inv==0,power!=0))
+		nu[location]=10^18
+	elif 'matdamageice' in md.materials.__module__ and damage is not None:
+		print 'computing damage-dependent properties!'
+		Zinv=npy.dot(1-damage[index-1],summation/3.).reshape(-1,)
+		location=npy.nonzero(second_inv)
+		nu[location]=Zinv[location]*B_bar[location]/npy.power(second_inv[location],power[location])
+		location=npy.nonzero(npy.logical_and(second_inv==0,power==0))
+		nu[location]=Zinv[location]*B_bar[location]
+		#clear Zinv
+	else:
+		raise StandardError('class of md.materials (' + md.materials.__module__ + ') not recognized or not supported')
+	
+	#compute stress
+	tau_xx=nu*ux
+	tau_yy=nu*vy
+	tau_xy=nu*uyvx
+	
+	#compute principal properties of stress
+	for i in npy.arange(numberofelements):
+	
+		#compute stress and strainrate matrices
+		stress=npy.array([ [tau_xx[i], tau_xy[i]], [tau_xy[i], tau_yy[i]] ])
+		strain=npy.array([ [ux[i], uyvx[i]], [uyvx[i], vy[i]] ])
+	
+		#eigenvalues and vectors for stress
+		value,directions=npy.linalg.eig(stress);
+		idx=abs(value).argsort()[::-1] # sort in descending order
+		value=value[idx]
+		directions=directions[:,idx]
+		valuesstress[i,:]=[value[0],value[1]]
+		directionsstress[i,:]=directions.transpose().flatten()
+
+		#eigenvalues and vectors for strain
+		value,directions=npy.linalg.eig(strain);
+		idx=abs(value).argsort()[::-1] # sort in descending order
+		value=value[idx]
+		directions=directions[:,idx]
+		valuesstrain[i,:]=[value[0],value[1]]
+		directionsstrain[i,:]=directions.transpose().flatten()
+
+	##plug onto the model
+	##NB: Matlab sorts the eigen value in increasing order, we want the reverse
+	stress=results()
+	stress.xx=tau_xx
+	stress.yy=tau_yy
+	stress.xy=tau_xy
+	stress.principalvalue1=valuesstress[:,0]
+	stress.principalaxis1=directionsstress[:,0:2]
+	stress.principalvalue2=valuesstress[:,1]
+	stress.principalaxis2=directionsstress[:,2:4]
+	stress.effectivevalue=1./npy.sqrt(2.)*npy.sqrt(stress.xx**2+stress.yy**2+2.*stress.xy**2)
+	md.results.stress=stress
+	
+	strainrate=results()
+	strainrate.xx=ux*md.constants.yts #strain rate in 1/a instead of 1/s
+	strainrate.yy=vy*md.constants.yts 
+	strainrate.xy=uyvx*md.constants.yts 
+	strainrate.principalvalue1=valuesstrain[:,0]*md.constants.yts 
+	strainrate.principalaxis1=directionsstrain[:,0:2]
+	strainrate.principalvalue2=valuesstrain[:,1]*md.constants.yts 
+	strainrate.principalaxis2=directionsstrain[:,2:4]
+	strainrate.effectivevalue=1./npy.sqrt(2.)*npy.sqrt(strainrate.xx**2+strainrate.yy**2+2.*strainrate.xy**2)
+	md.results.strainrate=strainrate
+	
+	deviatoricstress=results()
+	deviatoricstress.xx=tau_xx
+	deviatoricstress.yy=tau_yy
+	deviatoricstress.xy=tau_xy
+	deviatoricstress.principalvalue1=valuesstress[:,0]
+	deviatoricstress.principalaxis1=directionsstress[:,1:2]
+	deviatoricstress.principalvalue2=valuesstress[:,1]
+	deviatoricstress.principalaxis2=directionsstress[:,2:4]
+	deviatoricstress.effectivevalue=1./npy.sqrt(2.)*npy.sqrt(stress.xx**2+stress.yy**2+2.*stress.xy**2)
+	md.results.deviatoricstress=deviatoricstress
+
+	return md
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/newforcing.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/newforcing.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/newforcing.m	(revision 21239)
@@ -0,0 +1,35 @@
+function forcing=newforcing(t0,t1,deltaT,f0,f1,nodes)
+%FUNCTION NEWFORCING Build forcing that extends temporally from t0 to t1, and in magnitude from f0 to f1. Equal time 
+%                    and magnitude spacing. 
+%
+%       Usage: forcing=newforcing(t0,t1,deltaT,f0,f1,nodes);  
+%       Where: 
+%          t0:t1: time interval. 
+%          deltaT: time step
+%          f0:f1: magnitude interval.
+%          nodes: number of vertices where we have a temporal forcing
+%
+%       Example: 
+%           md.smb.mass_balance=newforcing(md.timestepping.start_time,md.timestepping.final_time,...
+%                                          md.timestepping.time_step,-1,+2,md.mesh.numberofvertices);
+%
+
+	%some cheks:
+	if nargin~=6, error('newforcing error message: should have 5 input arguments'); end
+
+	%Number of time steps: 
+	nsteps=(t1-t0)/deltaT+1;
+
+	%delta forcing:
+	deltaf=(f1-f0)/(nsteps-1);
+
+	%creates times:
+	times=t0:deltaT:t1;
+
+	%create forcing:
+	forcing=(f0:deltaf:f1);
+
+	%replicate for all nodes
+	forcing=repmat(forcing,nodes+1,1);
+	forcing(end,:)=times;
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/robintemperature.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/robintemperature.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/robintemperature.m	(revision 21239)
@@ -0,0 +1,42 @@
+function tprofile=robintemperature(heatflux,accumrate,thickness,surftemp,z)
+%ROBINTEMPERATURE - compute vertical temperature profile of an ice sheet (Robin, 1955)
+%
+%	This routine computes the vertical temperature profile of an 
+%	ice sheet according to the solution of Robin (1955), neglecting 
+%	friction and horizontal advection.  The solution is thus most
+%  appropriate at an ice divide.
+%
+%	The coordinate system for the solution runs from z=0 at the base 
+%	to z=H at the surface of the ice.
+%
+%	Parameters (SI units):
+%		-heatflux	Geothermal heat flux (W m^-2)
+%		-accumrate	Surface accumulation rate (m s^-1 ice equivalent)
+%		-thickness	Ice thickness (m)
+%		-surftemp	Surface temperature (K)
+%		-z				Vertical position at which to calculate temperature
+%						(z can be a scalar or a vector)
+%
+%	Returns a vector the same length as z containing the temperature in K
+%
+%	Usage:
+%		tprofile=robintemperature(heatflux,accumrate,thickness,surftemp,z)
+
+%checks
+if nargin~=5
+	help robintemperature
+	error('bad usage - wrong number of arguments.')
+end
+
+%some constants (from Holland and Jenkins, 1999)
+alphaT=1.14e-6; % thermal diffusivity (m^2 s^-1)
+c=2009; % specific heat capacity (J kg^-1 K^-1)
+rho=917; % ice density (kg m^-3)
+
+%create vertical coordinate variable
+zstar=sqrt(2*alphaT*thickness./accumrate);
+
+tprofile=surftemp+sqrt(2*thickness*pi./accumrate/alphaT).*(-heatflux)/2/rho/c.*(erf(z./zstar)-erf(thickness./zstar));
+
+% difference between surface and base temperature for check (Cuffey2010 p412):
+% tprofile-surftemp
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/robintemperature.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/robintemperature.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/robintemperature.py	(revision 21239)
@@ -0,0 +1,42 @@
+import numpy as npy
+from scipy.special import erf
+
+def robintemperature(heatflux,accumrate,thickness,surftemp,z):
+	'''
+	Compute vertical temperature profile of an ice sheet (Robin, 1955)
+
+	This routine computes the vertical temperature profile of an ice sheet
+	according to the solution of Robin (1955), neglecting friction and
+	horizontal advection.  The solution is thus most appropriate at an ice
+	divide.
+
+	The coordinate system for the solution runs from z=0 at the base 
+	to z=H at the surface of the ice.
+
+	Parameters (SI units):
+		-heatflux	Geothermal heat flux (W m^-2)
+		-accumrate	Surface accumulation rate (m s^-1 ice equivalent)
+		-thickness	Ice thickness (m)
+		-surftemp	Surface temperature (K)
+		-z				Vertical position at which to calculate temperature
+						(z can be a scalar or a vector)
+
+	Returns a vector the same length as z containing the temperature in K
+
+	Usage:
+		tprofile=robintemperature(heatflux,accumrate,thickness,surftemp,z)
+	'''
+
+	# some constants (from Holland and Jenkins, 1999)
+	alphaT=1.14e-6 # thermal diffusivity (m^2 s^-1)
+	c=2009. # specific heat capacity (J kg^-1 K^-1)
+	rho=917.  # ice density (kg m^-3)
+	
+	#create vertical coordinate variable
+	zstar=npy.sqrt(2.*alphaT*thickness/accumrate)
+	
+	tprofile=surftemp+npy.sqrt(2.*thickness*npy.pi/accumrate/alphaT)*(-heatflux)/2./rho/c*(erf(z/zstar)-erf(thickness/zstar))
+
+	return tprofile	
+	# difference between surface and base temperature for check (Cuffey2010 p412):
+	# print tprofile-surftemp
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/shear2d.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/shear2d.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/shear2d.m	(revision 21239)
@@ -0,0 +1,23 @@
+function [sx,sy,sxy,s]=shear2d(md)
+%SHEAR2D - computes 2d strain rate
+%
+%   This routine computes the strain rate of 2d models
+%
+%   Usage:
+%      [sx,sy,sxy,s]=shear2d(md);
+%      s=shear2d(md);
+
+[alpha beta]=GetNodalFunctionsCoeff(md.mesh.elements,md.mesh.x,md.mesh.y); 
+
+summation=[1;1;1];
+sx=(md.initialization.vx(md.mesh.elements).*alpha)*summation;
+uy=(md.initialization.vx(md.mesh.elements).*beta)*summation;
+vx=(md.initialization.vy(md.mesh.elements).*alpha)*summation;
+sy=(md.initialization.vy(md.mesh.elements).*beta)*summation;						
+sxy=(uy+vx)/2;
+s=sqrt(sx.^2+sy.^2+sxy.^2+sx.*sy);
+
+%if user requested only one output, it must be the norm
+if nargout==1,
+	sx=s;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/steadystateiceshelftemp.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/steadystateiceshelftemp.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/steadystateiceshelftemp.m	(revision 21239)
@@ -0,0 +1,60 @@
+function temperature=steadystateiceshelftemp(md,surfacetemp,basaltemp)
+%STEADYSTATEICESHELFTEMP - compute depth-averaged steady-state temperature of an ice shelf 
+%
+%   This routine computes the depth-averaged temperature accounting for vertical advection 
+%   and diffusion of heat into the base of the ice shelf as a function of surface and 
+%   basal temperature and the basal melting rate.  Horizontal advection is ignored.
+%   The solution is a depth-averaged version of Equation 25 in Holland and Jenkins (1999).
+%
+%	 In addition to supplying md, the surface and basal temperatures of the ice shelf must
+%	 be supplied in degrees Kelvin.
+%
+%	 The model md must also contain the fields: 
+%	 md.geometry.thickness
+%	 md.basalforcings.floatingice_melting_rate (positive for melting, negative for freezing)
+
+%   Usage:
+%      temperature=steadystateiceshelftemp(md,surfacetemp,basaltemp)
+
+if (length(md.geometry.thickness)~=md.mesh.numberofvertices)
+	error(['steadystateiceshelftemp error message: thickness should have a length of ' num2str(md.mesh.numberofvertices)])
+end
+
+%surface and basal temperatures in degrees C
+if (length(surfacetemp)~=md.mesh.numberofvertices)
+	error(['steadystateiceshelftemp error message: surfacetemp should have a length of ' num2str(md.mesh.numberofvertices)])
+end
+
+if (length(basaltemp)~=md.mesh.numberofvertices)
+	error(['steadystateiceshelftemp error message: basaltemp should have a length of ' num2str(md.mesh.numberofvertices)])
+end
+
+% Convert temps to Celsius for Holland and Jenkins (1999) equation
+Ts=-273.15+surfacetemp;
+Tb=-273.15+basaltemp;
+
+Hi=md.geometry.thickness;
+ki=1.14e-6*md.constants.yts; % ice shelf thermal diffusivity from Holland and Jenkins (1999) converted to m^2/yr 
+
+%vertical velocity of ice shelf, calculated from melting rate 
+wi=md.materials.rho_water/md.materials.rho_ice.*md.basalforcings.floatingice_melting_rate; 
+
+%temperature profile is linear if melting rate is zero, depth-averaged temp is simple average in this case
+temperature=(Ts+Tb)/2;  % where wi~=0
+
+pos=find(abs(wi)>=1e-4); % to avoid division by zero
+
+%calculate depth-averaged temperature (in Celsius)
+temperature(pos)=-( (Tb(pos)-Ts(pos))*ki./wi(pos) + Hi(pos).*Tb(pos) - (Hi(pos).*Ts(pos) + (Tb(pos)-Ts(pos))*ki./wi(pos)).*exp(Hi(pos).*wi(pos)/ki) )./( Hi(pos).*(exp(Hi(pos).*wi(pos)/ki)-1));
+%temperature(pos)=-( ((Tb(pos)-Ts(pos))*ki./wi(pos) + Hi(pos).*Tb(pos))./exp(Hi(pos).*wi(pos)/ki) - Hi(pos).*Ts(pos) + (Tb(pos)-Ts(pos))*ki./wi(pos))./( Hi(pos).*(1-exp(-Hi(pos).*wi(pos)/ki)));
+
+%temperature should not be less than surface temp
+pos=find(temperature<Ts);
+temperature(pos)=Ts(pos);
+
+% NaN where melt rates are too high (infinity/infinity in exponential)
+pos=find(isnan(temperature));
+temperature(pos)=Ts(pos);
+
+%convert to Kelvin
+temperature=temperature+273.15;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/steadystateiceshelftemp.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/steadystateiceshelftemp.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/steadystateiceshelftemp.py	(revision 21239)
@@ -0,0 +1,65 @@
+import numpy as npy
+
+def steadystateiceshelftemp(md,surfacetemp,basaltemp):
+	"""
+	Compute the depth-averaged steady-state temperature of an ice shelf 
+	This routine computes the depth-averaged temperature accounting for vertical advection 
+	and diffusion of heat into the base of the ice shelf as a function of surface and basal 
+	temperature and the basal melting rate.  Horizontal advection is ignored.
+   The solution is a depth-averaged version of Equation 25 in Holland and Jenkins (1999).
+
+	In addition to supplying md, the surface and basal temperatures of the ice shelf must be supplied in degrees Kelvin.
+
+	The model md must also contain the fields: 
+	md.geometry.thickness
+	md.basalforcings.floatingice_melting_rate (positive for melting, negative for freezing)
+
+   Usage:
+      temperature=steadystateiceshelftemp(md,surfacetemp,basaltemp)
+	"""
+
+	if len(md.geometry.thickness)!=md.mesh.numberofvertices:
+		raise ValueError('steadystateiceshelftemp error message: thickness should have a length of ' + md.mesh.numberofvertices)
+	
+	#surface and basal temperatures in degrees C
+	if len(surfacetemp)!=md.mesh.numberofvertices:
+		raise ValueError('steadystateiceshelftemp error message: surfacetemp should have a length of ' + md.mesh.numberofvertices)
+	
+	if len(basaltemp)!=md.mesh.numberofvertices:
+		raise ValueError('steadystateiceshelftemp error message: basaltemp should have a length of ' +md.mesh.numberofvertices)
+	
+	# Convert temps to Celsius for Holland and Jenkins (1999) equation
+	Ts=-273.15+surfacetemp
+	Tb=-273.15+basaltemp
+	
+	Hi=md.geometry.thickness
+	ki=1.14e-6*md.constants.yts # ice shelf thermal diffusivity from Holland and Jenkins (1999) converted to m^2/yr 
+	
+	#vertical velocity of ice shelf, calculated from melting rate 
+	wi=md.materials.rho_water/md.materials.rho_ice*md.basalforcings.floatingice_melting_rate 
+	
+	#temperature profile is linear if melting rate is zero, depth-averaged temp is simple average in this case
+	temperature=(Ts+Tb)/2  # where wi~=0
+	
+	pos=npy.nonzero(abs(wi)>=1e-4) # to avoid division by zero
+
+	npy.seterr(over='raise',divide='raise') # raise errors if floating point exceptions are encountered in following calculation
+	#calculate depth-averaged temperature (in Celsius)
+	try:
+		temperature[pos]=-( (Tb[pos]-Ts[pos])*ki/wi[pos] + Hi[pos]*Tb[pos] - (Hi[pos]*Ts[pos] + (Tb[pos]-Ts[pos])*ki/wi[pos])*npy.exp(Hi[pos]*wi[pos]/ki) )/( Hi[pos]*(npy.exp(Hi[pos]*wi[pos]/ki)-1))
+	except FloatingPointError:
+		print 'steadystateiceshelf warning: overflow encountered in multipy/divide/exp, trying another formulation.' 
+		temperature[pos]=-( ((Tb[pos]-Ts[pos])*ki/wi[pos] + Hi[pos]*Tb[pos])/npy.exp(Hi[pos]*wi[pos]/ki) - Hi[pos]*Ts[pos] + (Tb[pos]-Ts[pos])*ki/wi[pos])/( Hi[pos]*(1-npy.exp(-Hi[pos]*wi[pos]/ki)))
+	
+	#temperature should not be less than surface temp
+	pos=npy.nonzero(temperature<Ts)
+	temperature[pos]=Ts[pos]
+	
+	# NaN where melt rates are too high (infinity/infinity in exponential)
+	pos=npy.nonzero(npy.isnan(temperature))
+	temperature[pos]=Ts[pos]
+	
+	#convert to Kelvin
+	temperature=temperature+273.15
+
+	return temperature
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/strainrateuncert.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/strainrateuncert.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/strainrateuncert.m	(revision 21239)
@@ -0,0 +1,73 @@
+function md=strainratuncert(md,vx,vy,dvx,dvy)
+%STRAINRATEUNCERT - compute uncertainty in strain rate components
+%
+%   this routine computes the uncertainties in the strain rate tensor
+%	 components given the uncertainty in surface velocity data.
+%   The results are stored in md.results
+%
+%	 'dvx' and 'dvy' are velocity errors in x and y components in m/yr.  
+%   These can either be scalars or arrays of length md.mesh.numberofvertices
+%
+%   Usage:
+%      md=strainrateuncert(md,vx,vy,dv)
+%
+%   Example:
+%      md=mechanicalproperties(md,md.initialization.vx,md.initialization.vy,5);
+%      md=mechanicalproperties(md,md.inversion.vx_obs,md.inversion.vy_obs,dv);
+
+%some checks
+if length(vx)~=md.mesh.numberofvertices | length(vy)~=md.mesh.numberofvertices,
+	error(['the input velocity should be of size ' num2str(md.mesh.numberofvertices) '!'])
+end
+if length(dvx)==1,
+	dvx=dvx*ones(md.mesh.numberofelements,1);
+end
+if length(dvx)~=md.mesh.numberofelements,
+	error(['the velocity error dvx should be of size ' num2str(md.mesh.numberofelements) ' or 1!'])
+end
+if length(dvy)==1,
+	dvy=dvy*ones(md.mesh.numberofelements,1);
+end
+if length(dvy)~=md.mesh.numberofelements,
+	error(['the velocity error dvy should be of size ' num2str(md.mesh.numberofelements) ' or 1!'])
+end
+if dimension(md.mesh)~=2,
+	error('only 2d model supported yet');
+end
+if any(md.flowequation.element_equation~=2),
+	disp('Warning: the model has some non SSA elements. These will be treated like SSA''s elements');
+end
+
+%initialization
+index=md.mesh.elements;
+summation=[1;1;1];
+dvxlist=dvx(index);
+dvylist=dvy(index);
+
+%compute nodal functions coefficients N(x,y)=alpha x + beta y +gamma
+[alpha beta]=GetNodalFunctionsCoeff(index,md.mesh.x,md.mesh.y);
+
+strainrateuncert=struct('xx',[],'yy',[],'xy',[],'principalvalue1',[],'principalvalue2',[],'effectivevalue',[]);
+
+strainrateuncert.xx=sqrt((dvxlist.*alpha).^2*summation);
+strainrateuncert.yy=sqrt((dvylist.*beta).^2*summation);
+strainrateuncert.xy=0.5*sqrt((dvxlist.*beta).^2*summation+(dvylist.*alpha).^2*summation);
+
+exx=md.results.strainrate.xx; 
+eyy=md.results.strainrate.yy;
+exy=md.results.strainrate.xy;
+p1a=strainrateuncert.xx.*(0.5+0.25*(((exx-eyy)/2).^2+exy.^2).^(-1./2).*(exx-eyy));
+p2a=strainrateuncert.yy.*(0.5-0.25*(((exx-eyy)/2).^2+exy.^2).^(-1./2).*(exx-eyy));
+p3a=strainrateuncert.xy.*((((exx-eyy)/2).^2+exy.^2).^(-1./2).*exy);
+p1b=strainrateuncert.xx.*(0.5-0.25*(((exx-eyy)/2).^2+exy.^2).^(-1./2).*(exx-eyy));
+p2b=strainrateuncert.yy.*(0.5+0.25*(((exx-eyy)/2).^2+exy.^2).^(-1./2).*(exx-eyy));
+p3b=strainrateuncert.xy.*(-(((exx-eyy)/2).^2+exy.^2).^(-1./2).*exy);
+strainrateuncert.principalvalue1=sqrt(p1a.^2+p2a.^2+p3a.^2);
+strainrateuncert.principalvalue2=sqrt(p1b.^2+p2b.^2+p3b.^2);
+
+effa=strainrateuncert.xx/sqrt(2).*(exx.^2+eyy.^2+2*exy.^2).^(-1./2).*exx;
+effb=strainrateuncert.yy/sqrt(2).*(exx.^2+eyy.^2+2*exy.^2).^(-1./2).*eyy;
+effc=2*strainrateuncert.xy/sqrt(2).*(exx.^2+eyy.^2+2*exy.^2).^(-1./2).*exy;
+strainrateuncert.effectivevalue=sqrt(effa.^2+effb.^2+effc.^2);
+
+md.results.strainrateuncert=strainrateuncert;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/thomasparams.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/thomasparams.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/thomasparams.m	(revision 21239)
@@ -0,0 +1,151 @@
+function [alpha,beta,theta,ex,sigxx]=thomasparams(md,varargin)
+%THOMASPARAMS - compute Thomas' geometric parameters for an ice shelf 
+%
+%	 This routine computes geometric parameters representing ratios between
+%	 components of the horizontal strain rate tensor for an ice shelf, as
+%	 originally developed in Thomas (1973).  The model must contain computed
+%	 strain rates, either from observed or modeled ice velocities.
+%
+%   Available options:
+%	 -'eq'			: analytical equation to use in the calculation.  Must be one of:
+%				'Thomas' for a 2D ice shelf, taking into account full strain rate
+%					tensor (default)
+%				'Weertman1D' for a confined ice shelf free to flow in one direction
+%				'Weertman2D' for an unconfined ice shelf free to spread in any direction
+%
+%	 -'smoothing'	: an integer smoothing parameter for the averaging function
+%						(default 0) Type 'help averaging' for more information on its usage.
+%
+%	 -'coordsys'	: coordinate system for calculating the strain rate
+%						components. Must be one of:
+%				'longitudinal': x axis aligned along a flowline at every point (default)
+%				'principal': x axis aligned along maximum principal strain rate
+%					at every point
+%				'xy': x and y axes same as in polar stereographic projection 
+%
+%   Return values: 
+%
+%		'alpha' which is the ratio e_yy/e_xx between components of the strain
+%		rate tensor
+%
+%		'beta' which is the ratio e_xy/e_xx between components of the strain rate
+%		tensor
+%
+%		'theta' which is a combination of alpha and beta arising from the form of
+%		the equivalent stress
+%
+%		'exx' is the strain rate along a coordinate system defined by 'coordsys' 
+%
+%		'sigxx' is the deviatoric stress along a coordinate system defined by 'coordsys' 
+%
+%   Usage: [alpha,beta,theta,exx,sigxx]=ThomasParams(md,options)
+%
+%   Example: [alpha,beta,theta,exx,sigxx]=ThomasParams(md,'eq','Thomas','smoothing',2,'coordsys','longitudinal')
+
+%some checks
+if (nargin<4)
+	help ThomasParams
+	error('bad usage');
+end
+if isempty(fieldnames(md.results)),
+	error(['md.results.strainrate is not present.  Calculate using md=mechanicalproperties(md,vx,vy)'])
+end
+if dimension(md.mesh)~=2,
+	error('only 2d model supported currently');
+end
+if any(md.flowequation.element_equation~=2),
+	disp('Warning: the model has some non SSA elements. These will be treated like SSA elements');
+end
+
+% process options
+options = pairoptions(varargin{:});
+eq = getfieldvalue(options,'eq','Thomas');
+smoothing = getfieldvalue(options,'smoothing',0);
+coordsys = getfieldvalue(options,'coordsys','longitudinal');
+
+% average element strain rates onto vertices
+e1=averaging(md,md.results.strainrate.principalvalue1,smoothing)/md.constants.yts; % convert to s^-1
+e2=averaging(md,md.results.strainrate.principalvalue2,smoothing)/md.constants.yts;
+exx=averaging(md,md.results.strainrate.xx,smoothing)/md.constants.yts;
+eyy=averaging(md,md.results.strainrate.yy,smoothing)/md.constants.yts;
+exy=averaging(md,md.results.strainrate.xy,smoothing)/md.constants.yts;
+
+% checks: any of e1 or e2 equal to zero?
+pos=find(e1==0);
+if any(pos==1)
+	disp('WARNING: first principal strain rate equal to zero.  Value set to 1e-13 s^-1');
+	e1(pos)=1e-13;
+end
+pos=find(e2==0);
+if any(pos==1)
+	disp('WARNING: second principal strain rate equal to zero.  Value set to 1e-13 s^-1');
+	e2(pos)=1e-13;
+end
+
+% rheology
+n=averaging(md,md.materials.rheology_n,0);
+B=md.materials.rheology_B;
+
+switch coordsys
+	case 'principal'
+		b=zeros(md.mesh.numberofvertices,1);
+		ex=e1;
+		a=e2./e1;
+		pos=find(e1<0 & e2>0); % longitudinal compression and lateral tension
+		a(pos)=e1(pos)./e2(pos);
+		ex(pos)=e2(pos);
+		pos2=find(e1<0 & e2<0 & abs(e1)<abs(e2)); % lateral and longitudinal compression
+		a(pos2)=e1(pos2)./e2(pos2);
+		ex(pos2)=e2(pos2);
+		pos3=find(e1>0 & e2>0 & abs(e1)<abs(e2)); % lateral and longitudinal tension
+		a(pos3)=e1(pos3)./e2(pos3);
+		ex(pos3)=e2(pos3);
+		id=find(e1<0 & e2<0);
+		a(id)=-a(id); % where both strain rates are compressive, enforce negative alpha
+		sigxx=(abs(ex)./((1+a+a.^2).^((n-1)/2))).^(1./n).*B;
+		%mask=ismember(1:md.mesh.numberofvertices,id);
+		%plotmodel(md,'data',ex,'mask',mask)
+	case 'xy'
+		ex=exx;
+		a=eyy./exx;
+		b=exy./exx;
+	case 'longitudinal'
+		% using longitudinal strain rates defined by observed velocity vector
+		velangle=atan(md.initialization.vy./md.initialization.vx);
+		pos=find(md.initialization.vx==0);
+		velangle(pos)=pi/2;
+		ex=0.5*(exx+eyy)+0.5*(exx-eyy).*cos(2*velangle)+exy.*sin(2*velangle);
+		ey=exx+eyy-ex; % trace of strain rate tensor is invariant
+		exy=-0.5*(exx-eyy).*sin(2*velangle)+exy.*cos(2*velangle);
+		a=ey./ex;
+		b=exy./ex;
+		%pos=find(ex<0 & ey<0);
+		%a(pos)=-a(pos);
+		%sigxx=(abs(ex)./((1+a+a.^2+b.^2).^((n-1)/2))).^(1./n).*B;
+		sigxx=abs(ex).^(1./n-1).*ex./((1+a+a.^2+b.^2).^((n-1)./(2*n))).*B;
+	otherwise
+		error('argument passed to "coordsys" not valid');
+end
+
+% a < -1 in areas of strong lateral compression or longitudinal compression and
+% theta flips sign at a = -2
+pos=find(abs((abs(a)-2))<1e-3);
+if length(pos)>0,
+	disp(['Warning: ', num2str(length(pos)), ' vertices have alpha within 1e-3 of -2'])
+end
+a(pos)=-2+1e-3;
+
+switch eq
+	case 'Weertman1D'
+		theta=1./8;
+		a=zeros(md.mesh.numberofvertices,1);
+	case 'Weertman2D'
+		theta=1./9;
+		a=ones(md.mesh.numberofvertices,1);
+	case 'Thomas'
+		theta=((1+a+a.^2+b.^2).^((n-1)/2))./(abs(2+a).^n);
+	otherwise
+		error('argument passed to "eq" not valid.  Type "help zinv" for usage');
+end
+alpha=a;
+beta=b;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/thomasparams.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/thomasparams.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mech/thomasparams.py	(revision 21239)
@@ -0,0 +1,145 @@
+import numpy as npy
+from averaging import averaging
+
+def thomasparams(md,**kwargs):
+	'''
+	compute Thomas' geometric parameters for an ice shelf 
+
+	This routine computes geometric parameters representing ratios between
+	components of the horizontal strain rate tensor for an ice shelf, as
+	originally developed in Thomas (1973).  The model must contain computed
+	strain rates, either from observed or modeled ice velocities.
+
+   Available options:
+	 -eq			: analytical equation to use in the calculation.  Must be one of:
+				'Thomas' for a 2D ice shelf, taking into account full strain rate
+					tensor (default)
+				'Weertman1D' for a confined ice shelf free to flow in one direction
+				'Weertman2D' for an unconfined ice shelf free to spread in any direction
+
+	 -smoothing	: an integer smoothing parameter for the averaging function
+						(default 0) Type 'help averaging' for more information on its usage.
+
+	 -coordsys	: coordinate system for calculating the strain rate
+						components. Must be one of:
+				'longitudinal': x axis aligned along a flowline at every point (default)
+				'principal': x axis aligned along maximum principal strain rate
+					at every point
+				'xy': x and y axes same as in polar stereographic projection 
+
+   Return values: 
+
+		'alpha' which is the ratio e_yy/e_xx between components of the strain
+		rate tensor
+
+		'beta' which is the ratio e_xy/e_xx between components of the strain rate
+		tensor
+
+		'theta' which is a combination of alpha and beta arising from the form of
+		the equivalent stress
+
+		'exx' is the strain rate along a coordinate system defined by 'coordsys' 
+
+		'sigxx' is the deviatoric stress along a coordinate system defined by 'coordsys' 
+
+   Usage: 
+		alpha,beta,theta,exx,sigxx=thomasparams(md)
+
+   Example: 
+		alpha,beta,theta,exx,sigxx=thomasparams(md,eq='Thomas',smoothing=2,coordsys='longitudinal')
+	'''
+
+	#unpack kwargs
+	eq=kwargs.pop('eq','Thomas')
+	if 'eq' in kwargs: del kwargs['eq']
+	smoothing=kwargs.pop('smoothing',0)
+	if 'smoothing' in kwargs: del kwargs['smoothing']
+	coordsys=kwargs.pop('coordsys','longitudinal')
+	if 'coordsys' in kwargs: del kwargs['coordsys']
+	assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
+
+	# some checks
+	if not hasattr(md.results,'strainrate'):
+		raise StandardError('md.results.strainrate not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
+	if not '2d' in md.mesh.__doc__:
+		raise StandardError('only 2d (planview) model supported currently')
+	if any(md.flowequation.element_equation!=2):
+		raise StandardError('Warning: the model has some non-SSA elements.  These will be treated like SSA elements')
+
+	# average element strain rates onto vertices
+	e1=averaging(md,md.results.strainrate.principalvalue1,smoothing)/md.constants.yts # convert to s^-1
+	e2=averaging(md,md.results.strainrate.principalvalue2,smoothing)/md.constants.yts
+	exx=averaging(md,md.results.strainrate.xx,smoothing)/md.constants.yts
+	eyy=averaging(md,md.results.strainrate.yy,smoothing)/md.constants.yts
+	exy=averaging(md,md.results.strainrate.xy,smoothing)/md.constants.yts
+	
+	# checks: any of e1 or e2 equal to zero?
+	pos=npy.nonzero(e1==0)
+	if npy.any(pos==1):
+		print 'WARNING: first principal strain rate equal to zero.  Value set to 1e-13 s^-1'
+		e1[pos]=1.e-13
+	pos=npy.nonzero(e2==0)
+	if npy.any(pos==1):
+		print 'WARNING: second principal strain rate equal to zero.  Value set to 1e-13 s^-1'
+		e2[pos]=1.e-13
+	
+	# rheology
+	n=averaging(md,md.materials.rheology_n,0)
+	B=md.materials.rheology_B
+	
+	if coordsys=='principal':
+		b=npy.zeros((md.mesh.numberofvertices,))
+		ex=e1
+		a=e2/e1
+		pos=npy.nonzero(npy.logical_and(e1<0,e2>0)) # longitudinal compression and lateral tension
+		a[pos]=e1[pos]/e2[pos]
+		ex[pos]=e2[pos]
+		pos2=npy.nonzero(e1<0 & e2<0 & npy.abs(e1)<npy.abs(e2)) # lateral and longitudinal compression
+		a[pos2]=e1[pos2]/e2[pos2]
+		ex[pos2]=e2[pos2]
+		pos3=npy.nonzero(e1>0 & e2>0 & npy.abs(e1)<npy.abs(e2)) # lateral and longitudinal tension
+		a[pos3]=e1[pos3]/e2[pos3]
+		ex[pos3]=e2[pos3]
+		ind=npy.nonzero(e1<0 & e2<0)
+		a[ind]=-a[ind] # where both strain rates are compressive, enforce negative alpha
+		sigxx=(npy.abs(ex)/((1.+a+a**2)**((n-1.)/2.)))**(1./n)*B
+	elif coordsys=='xy':
+		ex=exx
+		a=eyy/exx
+		b=exy/exx
+	elif coordsys=='longitudinal':
+		# using longitudinal strain rates defined by observed velocity vector
+		velangle=npy.arctan(md.initialization.vy/md.initialization.vx)
+		pos=npy.nonzero(md.initialization.vx==0)
+		velangle[pos]=npy.pi/2
+		ex=0.5*(exx+eyy)+0.5*(exx-eyy)*npy.cos(2.*velangle)+exy*npy.sin(2.*velangle)
+		ey=exx+eyy-ex # trace of strain rate tensor is invariant
+		exy=-0.5*(exx-eyy)*npy.sin(2.*velangle)+exy*npy.cos(2.*velangle)
+		a=ey/ex
+		b=exy/ex
+		sigxx=abs(ex)**(1./n-1.)*ex/((1.+a+a**2+b**2)**((n-1.)/(2.*n)))*B
+	else:
+		raise ValueError('argument passed to "coordsys" not valid')
+	
+	# a < -1 in areas of strong lateral compression or longitudinal compression and
+	# theta flips sign at a = -2
+	pos=npy.nonzero(npy.abs((npy.abs(a)-2.))<1.e-3)
+	if len(pos)>0:
+		print 'Warning: ', len(pos), ' vertices have alpha within 1e-3 of -2'
+	a[pos]=-2+1e-3
+
+	if eq=='Weertman1D':
+		theta=1./8
+		a=npy.zeros((md.mesh.numberofvertices,))
+	elif eq=='Weertman2D':
+		theta=1./9
+		a=npy.ones((md.mesh.numberofvertices,))
+	elif eq=='Thomas':
+		theta=((1.+a+a**2+b**2)**((n-1.)/2.))/(npy.abs(2.+a)**n)
+	else:
+		raise ValueError('argument passed to "eq" not valid')
+
+	alpha=a
+	beta=b
+
+	return alpha,beta,theta,ex
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ComputeHessian.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ComputeHessian.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ComputeHessian.m	(revision 21239)
@@ -0,0 +1,60 @@
+function hessian=ComputeHessian(index,x,y,field,type)
+%COMPUTEHESSIAN - compute hessian matrix from a field
+%
+%   Compute the hessian matrix of a given field
+%   return the three components Hxx Hxy Hyy
+%   for each element or each node
+%
+%   Usage:
+%      hessian=ComputeHessian(index,x,y,field,type)
+%
+%   Example:
+%      hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,md.inversion.vel_obs,'node')
+
+%some variables
+numberofnodes=length(x);
+numberofelements=size(index,1);
+
+%some checks
+if length(field)~=numberofnodes & length(field)~=numberofelements,
+	error('ComputeHessian error message: the given field size not supported yet');
+end
+if ~strcmpi(type,'node') & ~strcmpi(type,'element'),
+	error('ComputeHessian error message: only ''node'' or ''element'' type supported yet');
+end
+
+%initialization
+line=index(:);
+linesize=3*numberofelements;
+
+%get areas and nodal functions coefficients N(x,y)=alpha x + beta y + gamma 
+[alpha beta]=GetNodalFunctionsCoeff(index,x,y);
+areas=GetAreas(index,x,y);
+
+%compute weights that hold the volume of all the element holding the node i
+weights=sparse(line,ones(linesize,1),repmat(areas,3,1),numberofnodes,1);
+
+%compute field on nodes if on elements
+if length(field)==numberofelements,
+	field=sparse(line,ones(linesize,1),repmat(areas.*field,3,1),numberofnodes,1)./weights ;
+end
+
+%Compute gradient for each element
+grad_elx=sum(field(index).*alpha,2); 
+grad_ely=sum(field(index).*beta,2);
+
+%Compute gradient for each node (average of the elements around)
+gradx=sparse(line,ones(linesize,1),repmat(areas.*grad_elx,3,1),numberofnodes,1);
+grady=sparse(line,ones(linesize,1),repmat(areas.*grad_ely,3,1),numberofnodes,1);
+gradx=gradx./weights;
+grady=grady./weights;
+
+%Compute hessian for each element
+hessian=[sum(gradx(index).*alpha,2) sum(grady(index).*alpha,2) sum(grady(index).*beta,2)];
+
+if strcmpi(type,'node')
+	%Compute Hessian on the nodes (average of the elements around)
+	hessian=[sparse(line,ones(linesize,1),repmat(areas.*hessian(:,1),3,1),numberofnodes,1)./weights ...
+		sparse(line,ones(linesize,1),repmat(areas.*hessian(:,2),3,1),numberofnodes,1)./weights ...
+		sparse(line,ones(linesize,1),repmat(areas.*hessian(:,3),3,1),numberofnodes,1)./weights ];
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ComputeHessian.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ComputeHessian.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ComputeHessian.py	(revision 21239)
@@ -0,0 +1,66 @@
+import numpy
+from GetNodalFunctionsCoeff import GetNodalFunctionsCoeff
+from GetAreas import GetAreas
+import MatlabFuncs as m
+
+def ComputeHessian(index,x,y,field,type):
+	"""
+	COMPUTEHESSIAN - compute hessian matrix from a field
+
+	   Compute the hessian matrix of a given field
+	   return the three components Hxx Hxy Hyy
+	   for each element or each node
+
+	   Usage:
+	      hessian=ComputeHessian(index,x,y,field,type)
+
+	   Example:
+	      hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,md.inversion.vel_obs,'node')
+	"""
+
+	#some variables
+	numberofnodes=numpy.size(x)
+	numberofelements=numpy.size(index,axis=0)
+
+	#some checks
+	if numpy.size(field)!=numberofnodes and numpy.size(field)!=numberofelements:
+		raise TypeError("ComputeHessian error message: the given field size not supported yet")
+	if not m.strcmpi(type,'node') and not m.strcmpi(type,'element'):
+		raise TypeError("ComputeHessian error message: only 'node' or 'element' type supported yet")
+
+	#initialization
+	line=index.reshape(-1,order='F')
+	linesize=3*numberofelements
+
+	#get areas and nodal functions coefficients N(x,y)=alpha x + beta y + gamma 
+	[alpha,beta,dum]=GetNodalFunctionsCoeff(index,x,y)
+	areas=GetAreas(index,x,y)
+
+	#compute weights that hold the volume of all the element holding the node i
+	weights=m.sparse(line,numpy.ones((linesize,1)),numpy.tile(areas.reshape(-1,1),(3,1)),numberofnodes,1)
+
+	#compute field on nodes if on elements
+	if numpy.size(field,axis=0)==numberofelements:
+		field=m.sparse(line,numpy.ones((linesize,1)),numpy.tile(areas*field,(3,1)),numberofnodes,1)/weights
+
+	#Compute gradient for each element
+	grad_elx=numpy.sum(field[index-1,0]*alpha,axis=1) 
+	grad_ely=numpy.sum(field[index-1,0]*beta,axis=1)
+
+	#Compute gradient for each node (average of the elements around)
+	gradx=m.sparse(line,numpy.ones((linesize,1)),numpy.tile((areas*grad_elx).reshape(-1,1),(3,1)),numberofnodes,1)
+	grady=m.sparse(line,numpy.ones((linesize,1)),numpy.tile((areas*grad_ely).reshape(-1,1),(3,1)),numberofnodes,1)
+	gradx=gradx/weights
+	grady=grady/weights
+
+	#Compute hessian for each element
+	hessian=numpy.hstack((numpy.sum(gradx[index-1,0]*alpha,axis=1).reshape(-1,1),numpy.sum(grady[index-1,0]*alpha,axis=1).reshape(-1,1),numpy.sum(grady[index-1,0]*beta,axis=1).reshape(-1,1)))
+
+	if m.strcmpi(type,'node'):
+		#Compute Hessian on the nodes (average of the elements around)
+		hessian=numpy.hstack((m.sparse(line,numpy.ones((linesize,1)),numpy.tile((areas*hessian[:,0]).reshape(-1,1),(3,1)),numberofnodes,1)/weights, \
+			m.sparse(line,numpy.ones((linesize,1)),numpy.tile((areas*hessian[:,1]).reshape(-1,1),(3,1)),numberofnodes,1)/weights, \
+			m.sparse(line,numpy.ones((linesize,1)),numpy.tile((areas*hessian[:,2]).reshape(-1,1),(3,1)),numberofnodes,1)/weights ))
+
+	return hessian
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ComputeMetric.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ComputeMetric.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ComputeMetric.m	(revision 21239)
@@ -0,0 +1,66 @@
+function metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,pos)
+%COMPUTEMETRIC - compute metric from an Hessian
+%
+%   Usage:
+%      metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,pos)
+%      pos is contains the positions where the metric is wished to be maximized (water?)
+%
+%   Example:
+%      metric=ComputeMetric(hessian,2/9,10^-1,100,10^5,[])
+
+%first, find the eigen values of each line of H=[hessian(i,1) hessian(i,2); hessian(i,2) hessian(i,3)]
+a=hessian(:,1); b=hessian(:,2); d=hessian(:,3);
+lambda1=0.5*((a+d)+sqrt(4.*b.^2+(a-d).^2));
+lambda2=0.5*((a+d)-sqrt(4.*b.^2+(a-d).^2));
+pos1=find(lambda1==0.);
+pos2=find(lambda2==0.);
+pos3=find(b==0. & lambda1==lambda2);
+
+%Modify the eigen values to control the shape of the elements
+lambda1=min(max(abs(lambda1)*scale/epsilon,1./hmax^2),1./hmin^2);
+lambda2=min(max(abs(lambda2)*scale/epsilon,1./hmax^2),1./hmin^2);
+
+%compute eigen vectors
+norm1=sqrt(8.*b.^2+2.*(d-a).^2+2.*(d-a).*sqrt((a-d).^2+4.*b.^2));
+v1x=2.*b./norm1;
+v1y=((d-a)+sqrt((a-d).^2+4.*b.^2))./norm1;
+norm2=sqrt(8.*b.^2+2.*(d-a).^2-2.*(d-a).*sqrt((a-d).^2+4.*b.^2));
+v2x=2.*b./norm2;
+v2y=((d-a)-sqrt((a-d).^2+4.*b.^2))./norm2;
+
+v1x(pos3)=1.; v1y(pos3)=0.;
+v2x(pos3)=0.; v2y(pos3)=1.;
+
+%Compute new metric (for each node M=V*Lambda*V^-1)
+metric=full([(v1x.*v2y-v1y.*v2x).^(-1).*(lambda1.*v2y.*v1x-lambda2.*v1y.*v2x) ...
+	(v1x.*v2y-v1y.*v2x).^(-1).*(lambda1.*v1y.*v2y-lambda2.*v1y.*v2y) ...
+	(v1x.*v2y-v1y.*v2x).^(-1).*(-lambda1.*v2x.*v1y+lambda2.*v1x.*v2y)]);
+
+%some corrections for 0 eigen values
+metric(pos1,:)=repmat([1./hmax^2 0. 1./hmax^2],length(pos1),1);
+metric(pos2,:)=repmat([1./hmax^2 0. 1./hmax^2],length(pos2),1);
+
+%take care of water elements
+metric(pos,:)=repmat([1./hmax^2 0. 1./hmax^2],length(pos),1);
+
+%take care of NaNs if any (use Matlab eig in a loop)
+[pos posj]=find(isnan(metric)); clear posj;
+if ~isempty(pos),
+	fprintf(' %i %s',length(pos),'NaN found in the metric. Use Matlab routine...');
+	for i=1:length(pos)
+		H=[hessian(pos(i),1) hessian(pos(i),2)
+		hessian(pos(i),2) hessian(pos(i),3)];
+		[u,v]=eig(full(H));
+		lambda1=v(1,1);
+		lambda2=v(2,2);
+		v(1,1)=min(max(abs(lambda1)*scale/epsilon,1./hmax^2),1./hmin^2);
+		v(2,2)=min(max(abs(lambda2)*scale/epsilon,1./hmax^2),1./hmin^2);
+
+		metricTria=u*v*u^(-1);
+		metric(pos(i),:)=[metricTria(1,1) metricTria(1,2) metricTria(2,2)];
+	end
+end
+
+if any(isnan(metric)),
+	error('ComputeMetric error message: NaN in the metric despite our efforts...')
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ComputeMetric.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ComputeMetric.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ComputeMetric.py	(revision 21239)
@@ -0,0 +1,74 @@
+import numpy
+
+def ComputeMetric(hessian,scale,epsilon,hmin,hmax,pos):
+	"""
+	COMPUTEMETRIC - compute metric from an Hessian
+
+	   Usage:
+	      metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,pos)
+	      pos is contains the positions where the metric is wished to be maximized (water?)
+
+	   Example:
+	      metric=ComputeMetric(hessian,2/9,10^-1,100,10^5,[])
+	"""
+
+	#first, find the eigen values of each line of H=[hessian(i,1) hessian(i,2); hessian(i,2) hessian(i,3)]
+	a=hessian[:,0]
+	b=hessian[:,1]
+	d=hessian[:,2]
+	lambda1=0.5*((a+d)+numpy.sqrt(4.*b**2+(a-d)**2))
+	lambda2=0.5*((a+d)-numpy.sqrt(4.*b**2+(a-d)**2))
+	pos1=numpy.nonzero(lambda1==0.)[0]
+	pos2=numpy.nonzero(lambda2==0.)[0]
+	pos3=numpy.nonzero(numpy.logical_and(b==0.,lambda1==lambda2))[0]
+
+	#Modify the eigen values to control the shape of the elements
+	lambda1=numpy.minimum(numpy.maximum(numpy.abs(lambda1)*scale/epsilon,1./hmax**2),1./hmin**2)
+	lambda2=numpy.minimum(numpy.maximum(numpy.abs(lambda2)*scale/epsilon,1./hmax**2),1./hmin**2)
+
+	#compute eigen vectors
+	norm1=numpy.sqrt(8.*b**2+2.*(d-a)**2+2.*(d-a)*numpy.sqrt((a-d)**2+4.*b**2))
+	v1x=2.*b/norm1
+	v1y=((d-a)+numpy.sqrt((a-d)**2+4.*b**2))/norm1
+	norm2=numpy.sqrt(8.*b**2+2.*(d-a)**2-2.*(d-a)*numpy.sqrt((a-d)**2+4.*b**2))
+	v2x=2.*b/norm2
+	v2y=((d-a)-numpy.sqrt((a-d)**2+4.*b**2))/norm2
+
+	v1x[pos3]=1.
+	v1y[pos3]=0.
+	v2x[pos3]=0.
+	v2y[pos3]=1.
+
+	#Compute new metric (for each node M=V*Lambda*V^-1)
+	metric=numpy.hstack((((v1x*v2y-v1y*v2x)**(-1)*( lambda1*v2y*v1x-lambda2*v1y*v2x)).reshape(-1,1), \
+		                 ((v1x*v2y-v1y*v2x)**(-1)*( lambda1*v1y*v2y-lambda2*v1y*v2y)).reshape(-1,1), \
+		                 ((v1x*v2y-v1y*v2x)**(-1)*(-lambda1*v2x*v1y+lambda2*v1x*v2y)).reshape(-1,1)))
+
+	#some corrections for 0 eigen values
+	metric[pos1,:]=numpy.tile(numpy.array([[1./hmax**2,0.,1./hmax**2]]),(numpy.size(pos1),1))
+	metric[pos2,:]=numpy.tile(numpy.array([[1./hmax**2,0.,1./hmax**2]]),(numpy.size(pos2),1))
+
+	#take care of water elements
+	metric[pos ,:]=numpy.tile(numpy.array([[1./hmax**2,0.,1./hmax**2]]),(numpy.size(pos ),1))
+
+	#take care of NaNs if any (use Numpy eig in a loop)
+	pos=numpy.nonzero(numpy.isnan(metric))[0]
+	if numpy.size(pos):
+		print(" %i NaN found in the metric. Use Numpy routine..." % numpy.size(pos))
+		for posi in pos:
+			H=numpy.array([[hessian[posi,0],hessian[posi,1]],[hessian[posi,1],hessian[posi,2]]])
+			[v,u]=numpy.linalg.eig(H)
+			v=numpy.diag(v)
+			lambda1=v[0,0]
+			lambda2=v[1,1]
+			v[0,0]=numpy.minimum(numpy.maximum(numpy.abs(lambda1)*scale/epsilon,1./hmax**2),1./hmin**2)
+			v[1,1]=numpy.minimum(numpy.maximum(numpy.abs(lambda2)*scale/epsilon,1./hmax**2),1./hmin**2)
+
+			metricTria=numpy.dot(numpy.dot(u,v),numpy.linalg.inv(u))
+			metric[posi,:]=numpy.array([metricTria[0,0],metricTria[0,1],metricTria[1,1]])
+
+	if numpy.any(numpy.isnan(metric)):
+		raise RunTimeError("ComputeMetric error message: NaN in the metric despite our efforts...")
+
+	return metric
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ElementsFromEdge.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ElementsFromEdge.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ElementsFromEdge.m	(revision 21239)
@@ -0,0 +1,15 @@
+function edgeelements=ElementsFromEdge(elements,A,B)
+%ELEMENTSFROMEDGE: find elements connected to one edge defined by nodes A and B
+%
+%   Usage: edgeelements=ElementsFromEdge(elements,A,B) 
+%
+%   Eg:    edgeelements=ElementsFromEdge(md.mesh.elements,tip1,tip2)
+%
+%
+edgeelements=find(...
+	(elements(:,1)==A & elements(:,2)==B )| ...
+	(elements(:,1)==A & elements(:,3)==B )| ...
+	(elements(:,2)==A & elements(:,3)==B )| ...
+	(elements(:,2)==A & elements(:,1)==B )| ...
+	(elements(:,3)==A & elements(:,1)==B )| ...
+	(elements(:,3)==A & elements(:,2)==B ));
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ElementsFromEdge.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ElementsFromEdge.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ElementsFromEdge.py	(revision 21239)
@@ -0,0 +1,24 @@
+import numpy
+import PythonFuncs as p
+
+def ElementsFromEdge(elements,A,B):
+	"""
+	ELEMENTSFROMEDGE: find elements connected to one edge defined by nodes A and B
+
+	   Usage: edgeelements=ElementsFromEdge(elements,A,B) 
+
+	   Eg:    edgeelements=ElementsFromEdge(md.mesh.elements,tip1,tip2)
+
+	"""
+
+	edgeelements=numpy.nonzero(\
+		p.logical_or_n(numpy.logical_and(elements[:,0]==A,elements[:,1]==B), \
+					 numpy.logical_and(elements[:,0]==A,elements[:,2]==B), \
+					 numpy.logical_and(elements[:,1]==A,elements[:,2]==B), \
+					 numpy.logical_and(elements[:,1]==A,elements[:,0]==B), \
+					 numpy.logical_and(elements[:,2]==A,elements[:,0]==B), \
+					 numpy.logical_and(elements[:,2]==A,elements[:,1]==B), \
+		))[0]+1
+
+	return edgeelements
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ExportGmsh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ExportGmsh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ExportGmsh.m	(revision 21239)
@@ -0,0 +1,52 @@
+function ExportGmsh(md,filename)
+%EXPORTGMSH - export mesh to gmsh format
+%
+%   Usage:
+%      ExportGmsh(md,filename)
+
+t1=clock;fprintf('%s',['writing gmsh mesh file']);
+fid=fopen(filename,'w');
+
+%initialiaion
+fprintf(fid,'$MeshFormat \n');
+fprintf(fid,'2.2 0 8 \n');
+fprintf(fid,'$EndMeshFormat \n');
+fprintf(fid,'$Nodes \n');
+fprintf(fid,'%i \n',md.mesh.numberofvertices);
+np=0;
+%printing point positions
+for ii=1:md.mesh.numberofvertices
+	np = np+1;
+	fprintf(fid,'%g %14.7e %14.7e 0.0 \n',np,md.mesh.x(np),md.mesh.y(np));
+end
+
+fprintf(fid,'$EndNodes \n');
+fprintf(fid,'$Elements \n');
+fprintf(fid,'%i \n',md.mesh.numberofelements+size(md.mesh.segments,1));
+np=0;
+
+%printing elements caracteristics for boundaries
+
+for ii=1:size(md.mesh.segments,1)
+	np = np+1;
+	if(md.mesh.x(md.mesh.segments(np,1))==max(md.mesh.x(:))&&md.mesh.x(md.mesh.segments(np,2))==max(md.mesh.x(:))),
+		bc_id=1;
+	elseif(md.mesh.y(md.mesh.segments(np,1))==max(md.mesh.y(:))&&md.mesh.y(md.mesh.segments(np,2))==max(md.mesh.y(:))),
+		bc_id=2;
+	elseif(md.mesh.x(md.mesh.segments(np,1))==min(md.mesh.x(:))&&md.mesh.x(md.mesh.segments(np,2))==min(md.mesh.x(:))),
+		bc_id=3;
+	elseif(md.mesh.y(md.mesh.segments(np,1))==min(md.mesh.y(:))&&md.mesh.y(md.mesh.segments(np,2))==min(md.mesh.y(:))),
+		bc_id=4;
+  end
+		fprintf(fid,'%g 1 2 %g 1 %g %g \n',np,bc_id,md.mesh.segments(np,1),md.mesh.segments(np,2));
+end
+%and for the body
+body_id=1;
+for ii=1:md.mesh.numberofelements
+  np = np+1;
+  fprintf(fid,'%g 2 2 %g 3 %g %g %g \n',np,body_id,md.mesh.elements(ii,1),md.mesh.elements(ii,2),md.mesh.elements(ii,3));
+end
+fprintf(fid,'$EndElements \n');
+%close
+fclose(fid);
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/FixMesh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/FixMesh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/FixMesh.m	(revision 21239)
@@ -0,0 +1,45 @@
+function  [index2 x2 y2 value2]=FixMesh(index,x,y,value)
+% FIXMESH - FixMesh fix mesh with broken triangles, orphan vertices, etc ...
+%
+%   Usage: 
+%      [index2 x2 y2 value2]=FixMesh(index,x,y,value)
+%      where index,x,y is a delaunay triangulation, 
+%      value is a field on the input triangulation, with values at the vertices
+%      index2,x2,y2,value2 is the repaired triangulation, with new values on new vertices
+%
+%
+
+%duplicate inputs
+index2=index;
+x2=x;
+y2=y;
+value2=value;
+
+%First, look for orphan vertices, and take them out.
+flags=zeros(length(x2),1); flags(index2)=1;
+orphans=find(flags==0);
+
+while ~isempty(orphans),
+
+	%take the first orphan, the lower numbered, and take it out
+	orphan=orphans(1);
+
+	%first x,y,value
+	x2(orphan)=[];
+	y2(orphan)=[];
+	value2(orphan)=[];
+
+	%now, the index:
+	pos=find(index2>orphan); index2(pos)=index2(pos)-1;
+
+	%look again for orphans on new mesh
+	flags=zeros(length(x2),1);flags(index2)=1;
+	orphans=find(flags==0);
+end
+
+%Check all triangles are well oriented.
+aires=GetAreas(index2,x2,y2);
+pos=find(aires<0);
+temp=index2(pos,1);
+index2(pos,1)=index2(pos,2);
+index2(pos,2)=temp;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/GetNodalFunctionsCoeff.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/GetNodalFunctionsCoeff.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/GetNodalFunctionsCoeff.m	(revision 21239)
@@ -0,0 +1,56 @@
+function [alpha beta varargout]=GetNodalFunctionsCoeff(index,x,y)
+%GETNODELFUNCTIONSCOEFF - compute nodal functions coefficients
+%
+%   Compute the coefficients alpha beta and optionaly gamma of
+%   2d triangular elements. For each element, the nodal function
+%   is defined as:
+%   N(x,y)=sum(i=1:3) alpha_i * x + beta_i * y + gamma_i
+%
+%   Usage:
+%      [alpha beta]=GetNodalFunctionsCoeff(index,x,y);
+%      [alpha beta gamma]=GetNodalFunctionsCoeff(index,x,y);
+%
+%   Example:
+%      [alpha beta gamma]=GetNodalFunctionsCoeff(md.mesh.elements,md.mesh.x,md.mesh.y);
+
+%make columns out of x and y
+x=x(:); y=y(:);
+
+%get nels and nods
+nels=size(index,1);
+nods=length(x);
+
+%some checks
+if nargin~=3 | (nargout~=2 & nargout~=3),
+	help GetNodalFunctionsCoeff
+	error('GetNodalFunctionsCoeff error message: bad usage')
+end
+if length(y)~=nods,
+	error('GetNodalFunctionsCoeff error message: x and y do not have the same length')
+end
+if max(index(:))>nods,
+	error(['GetNodalFunctionsCoeff error message: index should not have values above ' num2str(nods) ])
+end
+if size(index,2)~=3,
+	error('GetNodalFunctionsCoeff error message: only 2d meshes supported. index should have 3 columns.')
+end
+
+%initialize output
+alpha=zeros(nels,3);
+beta=zeros(nels,3);
+
+%compute nodal functions coefficients N(x,y)=alpha x + beta y +gamma
+x1=x(index(:,1)); x2=x(index(:,2)); x3=x(index(:,3));
+y1=y(index(:,1)); y2=y(index(:,2)); y3=y(index(:,3));
+invdet=1./(x1.*(y2-y3)-x2.*(y1-y3)+x3.*(y1-y2));
+
+%get alpha and beta
+alpha=[invdet.*(y2-y3) invdet.*(y3-y1) invdet.*(y1-y2)];
+beta =[invdet.*(x3-x2) invdet.*(x1-x3) invdet.*(x2-x1)];
+
+%get gamma if requested
+if nargout==3,
+	gamma=zeros(nels,3);
+	gamma=[invdet.*(x2.*y3-x3.*y2) invdet.*(y1.*x3-y3.*x1) invdet.*(x1.*y2-x2.*y1)];
+	varargout{1}=gamma;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/GetNodalFunctionsCoeff.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/GetNodalFunctionsCoeff.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/GetNodalFunctionsCoeff.py	(revision 21239)
@@ -0,0 +1,58 @@
+import numpy
+
+def GetNodalFunctionsCoeff(index,x,y):
+	"""
+	GETNODELFUNCTIONSCOEFF - compute nodal functions coefficients
+
+	   Compute the coefficients alpha beta and optionaly gamma of
+	   2d triangular elements. For each element, the nodal function
+	   is defined as:
+	   N(x,y)=sum(i=1:3) alpha_i * x + beta_i * y + gamma_i
+
+	   Usage:
+	      [alpha beta]=GetNodalFunctionsCoeff(index,x,y);
+	      [alpha beta gamma]=GetNodalFunctionsCoeff(index,x,y);
+
+	   Example:
+	      [alpha beta gamma]=GetNodalFunctionsCoeff(md.mesh.elements,md.mesh.x,md.mesh.y);
+	"""
+
+	#make columns out of x and y
+	x=x.reshape(-1)
+	y=y.reshape(-1)
+
+	#get nels and nods
+	nels=numpy.size(index,axis=0)
+	nods=numpy.size(x)
+
+	#some checks
+	if numpy.size(y)!=nods:
+		raise TypeError("GetNodalFunctionsCoeff error message: x and y do not have the same length.")
+	if numpy.max(index)>nods:
+		raise TypeError("GetNodalFunctionsCoeff error message: index should not have values above %d." % nods)
+	if numpy.size(index,axis=1)!=3:
+		raise TypeError("GetNodalFunctionsCoeff error message: only 2d meshes supported. index should have 3 columns.")
+
+	#initialize output
+	alpha=numpy.zeros((nels,3))
+	beta=numpy.zeros((nels,3))
+
+	#compute nodal functions coefficients N(x,y)=alpha x + beta y +gamma
+	x1=x[index[:,0]-1]
+	x2=x[index[:,1]-1]
+	x3=x[index[:,2]-1]
+	y1=y[index[:,0]-1]
+	y2=y[index[:,1]-1]
+	y3=y[index[:,2]-1]
+	invdet=1./(x1*(y2-y3)-x2*(y1-y3)+x3*(y1-y2))
+
+	#get alpha and beta
+	alpha=numpy.hstack(((invdet*(y2-y3)).reshape(-1,1),(invdet*(y3-y1)).reshape(-1,1),(invdet*(y1-y2)).reshape(-1,1)))
+	beta =numpy.hstack(((invdet*(x3-x2)).reshape(-1,1),(invdet*(x1-x3)).reshape(-1,1),(invdet*(x2-x1)).reshape(-1,1)))
+
+	#get gamma if requested
+	gamma=numpy.zeros((nels,3))
+	gamma=numpy.hstack(((invdet*(x2*y3-x3*y2)).reshape(-1,1),(invdet*(y1*x3-y3*x1)).reshape(-1,1),(invdet*(x1*y2-x2*y1)).reshape(-1,1)))
+
+	return alpha,beta,gamma
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/MergeMetrics.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/MergeMetrics.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/MergeMetrics.m	(revision 21239)
@@ -0,0 +1,15 @@
+function metric=MergeMetrics(metric1,metric2)
+
+M1xx=metric1(:,1); M1xy=metric1(:,2); M1yy=metric1(:,3);
+M1lambda1=0.5*((M1xx+M1yy)+sqrt(4*M1xy.^2+(M1xx-M1yy).^2));
+M1lambda2=0.5*((M1xx+M1yy)-sqrt(4*M1xy.^2+(M1xx-M1yy).^2));
+lambda1=min(M1lambda1,M1lambda2);
+
+M2xx=metric1(:,1); M2xy=metric1(:,2); M2yy=metric1(:,3);
+M2lambda1=0.5*((M2xx+M2yy)+sqrt(4*M2xy.^2+(M2xx-M2yy).^2));
+M2lambda2=0.5*((M2xx+M2yy)-sqrt(4*M2xy.^2+(M2xx-M2yy).^2));
+lambda2=min(M2lambda2,M2lambda2);
+
+metric=metric1;
+pos=find(lambda2<lambda1);
+metric(pos,:)=metric2(pos,:);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/MeshQuality.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/MeshQuality.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/MeshQuality.m	(revision 21239)
@@ -0,0 +1,77 @@
+function quality=MeshQuality(md,epsilon,hmin,hmax)
+%MESHQUALITY - compute mesh quality
+%
+%   Usage:
+%      MeshQuality(md,epsilon,hmin,hmax);
+
+%Get some variables from the model
+index=md.mesh.elements;
+x=md.mesh.x;
+y=md.mesh.y;
+
+%2d geometric parameter (do not change)
+scale=2/9; 
+
+%Compute Hessian
+hessian=ComputeHessian(index,x,y,md.inversion.vel_obs,'node');
+
+%Compute metric
+metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,[]);
+
+%Get Areas
+areas=GetAreas(index,x,y);
+
+%length edges vectors
+e1x=[x(index(:,2))-x(index(:,1))];
+e1y=[y(index(:,2))-y(index(:,1))];
+e2x=[x(index(:,3))-x(index(:,2))];
+e2y=[y(index(:,3))-y(index(:,2))];
+e3x=[x(index(:,1))-x(index(:,3))];
+e3y=[y(index(:,1))-y(index(:,3))];
+
+%metric of each the 3 nodes for each element
+M1=metric(index(:,1),:);
+M2=metric(index(:,2),:);
+M3=metric(index(:,3),:);
+
+%Get edge length in the metric
+L1=1/2*(sqrt(e2x.*(M2(:,1).*e2x+M2(:,2).*e2y)+e2y.*(M2(:,2).*e2x+M2(:,3).*e2y))+sqrt(e1x.*(M1(:,1).*e1x+M1(:,2).*e1y)+e1y.*(M1(:,2).*e1x+M1(:,3).*e1y)));
+L2=1/2*(sqrt(e3x.*(M3(:,1).*e3x+M3(:,2).*e3y)+e3y.*(M3(:,2).*e3x+M3(:,3).*e3y))+sqrt(e2x.*(M2(:,1).*e2x+M2(:,2).*e2y)+e2y.*(M2(:,2).*e2x+M2(:,3).*e2y)));
+L3=1/2*(sqrt(e1x.*(M1(:,1).*e1x+M1(:,2).*e1y)+e1y.*(M1(:,2).*e1x+M1(:,3).*e1y))+sqrt(e3x.*(M3(:,1).*e3x+M3(:,2).*e3y)+e3y.*(M3(:,2).*e3x+M3(:,3).*e3y)));
+
+%area in the metric
+V=1/3*areas.*(sqrt(M1(:,1).*M1(:,3)-M1(:,2).^2)+sqrt(M2(:,1).*M2(:,3)-M2(:,2).^2)+sqrt(M3(:,1).*M3(:,3)-M3(:,2).^2));
+
+%compute quality:
+quality=4*sqrt(3)*V./(L1+L2+L3);
+
+%compute error
+a=hessian(:,1); b=hessian(:,2); d=hessian(:,3);
+a=a(index)*[1;1;1]/3;
+b=b(index)*[1;1;1]/3;
+d=d(index)*[1;1;1]/3;
+lambda1=0.5*((a+d)+sqrt(4*b.^2+(a-d).^2));
+lambda2=0.5*((a+d)-sqrt(4*b.^2+(a-d).^2));
+lambda1=min(max(abs(lambda1)*scale/epsilon,1/hmax^2),1/hmin^2);
+lambda2=min(max(abs(lambda2)*scale/epsilon,1/hmax^2),1/hmin^2);
+if length(md.nodeonwater)==md.mesh.numberofvertices;
+	pos=find(md.nodeonwater);
+	lambda1(pos)=0;
+	lambda2(pos)=0;
+end
+lambda1=lambda1(index)*[1;1;1]/3;
+lambda2=lambda2(index)*[1;1;1]/3;
+
+lambdamax=max(lambda1,lambda2);
+hmax=max(max(sqrt(e1x.^2+e1y.^2),sqrt(e2x.^2+e2y.^2)),sqrt(e3x.^2+e3y.^2));
+epsilon=scale*hmax.^2.*lambdamax;
+
+%display
+%X=0:0.1:4; hist(quality,X); xlim([0 3]); title('mesh quality distribution','FontSize',14);
+%plotmodel(md,'data',epsilon,'title','Interpolation error','figure',2)
+disp(sprintf('\n%s','Mesh Quality'));
+disp(sprintf('   %s %g','Average Mesh quality: ',mean(quality)));
+disp(sprintf('   %s %g','Worst Element quality:',max(quality)));
+disp(sprintf('\n%s','Interpolation Error'));
+disp(sprintf('   %s %g %s','Average interpolation error:',mean(epsilon),'m/yr'));
+disp(sprintf('   %s %g %s','Maximum interpolation error:',max(epsilon),'m/yr'));
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/MeshToShp.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/MeshToShp.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/MeshToShp.m	(revision 21239)
@@ -0,0 +1,14 @@
+function MeshToShp(md,shapefilename)
+%MESHTOSHP - export mesh to shp file
+%
+%   Usage:
+%      MeshToShp(md,'Greenland.shp');
+
+	contours= struct([]);
+	for i=1:md.mesh.numberofvertices,
+		contours(i).x = md.mesh.x(i);
+		contours(i).y = md.mesh.y(i);
+		contours(i).id = i;
+		contours(i).Geometry = 'Point';
+	end
+	shpwrite(contours,shapefilename);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/NodeInElement.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/NodeInElement.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/NodeInElement.m	(revision 21239)
@@ -0,0 +1,42 @@
+function node_in_element=NodeInElement(newx,newy,elements,x,y,nodeconnectivity)
+% NODEINELEMENT - find for a list of nodes (in newx,newy), which elements in the mesh (elements,x,y) they belong to.
+%
+%    Usage:
+%      node_in_element=NodeInElement(newx,newy,elements,x,y,md.mesh.vertexconnectivity);
+%
+%  See also Nodeconnectivity
+%
+epsilon=10^-10;
+
+%compute some quantities that will speed up the process
+x3x1=x(elements(:,1))-x(elements(:,3));
+y3y1=y(elements(:,1))-y(elements(:,3));
+x3x2=x(elements(:,2))-x(elements(:,3));
+y3y2=y(elements(:,2))-y(elements(:,3));
+x3=x(elements(:,3));
+y3=y(elements(:,3));
+delta=x(elements(:,2)).*y(elements(:,3))-y(elements(:,2)).*x(elements(:,3))-x(elements(:,1)).*y(elements(:,3))+y(elements(:,1)).*x(elements(:,3))+x(elements(:,1)).*y(elements(:,2))-y(elements(:,1)).*x(elements(:,2));
+
+%max connectivity:
+max_connectivity=max(nodeconnectivity(:,end));
+node_in_element=zeros(length(newx),max_connectivity+1); %last column is the number of elements to which the row node is connected.
+
+for i=1:length(newx),
+	x0=newx(i);
+	y0=newy(i);
+
+	%first area coordinate
+	area_1=(y3y2.*(x0-x3)-x3x2.*(y0-y3))./delta;
+	%second area coordinate
+	area_2=(x3x1.*(y0-y3)-y3y1.*(x0-x3))./delta;
+	%third area coordinate
+	area_3=1-area_1-area_2;
+
+	%get elements for which all area coordinates are positive (meaning (x0,y0) belongs to these elements
+	pos=find((area_1>=0-epsilon) & (area_2>=0-epsilon) & (area_3>=0-epsilon));
+
+	num_elements=length(pos);
+
+	node_in_element(i,1:num_elements)=pos;
+	node_in_element(i,end)=num_elements;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ProfileProjectOntoMesh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ProfileProjectOntoMesh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/ProfileProjectOntoMesh.m	(revision 21239)
@@ -0,0 +1,66 @@
+function mesh_profile=ProfileProjectOntoMesh(md,profile)
+%PROFILEPROJECTONTOMESH: project a profile (made of arbitrary points) onto a mesh, so that we end 
+%                        up with a list of segments self contained onto elements.
+%
+% Usage: mesh_profile=ProfileProjectOntoMesh(md,profile)
+%
+% See also intersections.m
+
+%make a curve out of the mesh, to use the intersections routine.
+rows=[md.mesh.elements md.mesh.elements(:,1)]'; rows=rows(:);
+x=md.mesh.x(rows);
+y=md.mesh.y(rows);
+
+%[x0,y0] = intersections(profile.x,profile.y,x,y,1);
+[x0,y0,indices,j] = intersections(profile.x,profile.y,x,y);
+
+%  sort intersections to create segments in order and continuous along profile
+[indices,isort]=sort(indices);
+j =j (isort);
+x0=x0(isort);
+y0=y0(isort);
+
+%process x0,y0 so they do not include profile.x or profile.y
+processed_indices=[];
+processed_x=[];
+processed_y=[];
+for i=1:numel(indices),
+	if(((indices(i)-floor(indices(i)))~=0) && ((ceil(indices(i))-indices(i))~=0))
+		processed_indices=[processed_indices;floor(indices(i))];
+		processed_x=[processed_x;x0(i)];
+		processed_y=[processed_y;y0(i)];
+	end
+end
+
+%now merge profile.x,profile.y with processed_x,processed_y, at locations processed_indices:
+newx=profile.x;
+newy=profile.y;
+
+count=1;
+for i=1:numel(profile.x),
+	pos=find(processed_indices==i);
+	if ~isempty(pos),
+		newx=[newx(1:count); processed_x(pos); newx(count+1:end)];
+		newy=[newy(1:count); processed_y(pos); newy(count+1:end)];
+		count=count+length(pos)+1;
+	end
+end
+
+%now, for each node, figure out which element it belongs to.
+node_in_element=NodeInElement(newx,newy,md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.vertexconnectivity);
+
+% eliminate nodes that don't fall in any element
+% (profile may start and/or end externally and/or cross holes in the model)
+
+ind=find(node_in_element(:,end)>0);
+newx=newx(ind,:);
+newy=newy(ind,:);
+node_in_element=node_in_element(ind,:);
+
+mesh_profile=[newx(1:end-1) newy(1:end-1) newx(2:end) newy(2:end) zeros(length(newy(2:end)),1)];
+
+%find which element each segment belongs to.
+for i=1:length(newx)-1,
+	common=intersect(node_in_element(i,1:node_in_element(i,end)), node_in_element(i+1,1:node_in_element(i+1,end)));
+	mesh_profile(i,end)=common(1);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/argusmesh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/argusmesh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/argusmesh.m	(revision 21239)
@@ -0,0 +1,91 @@
+function md=argusmesh(md,infile)
+%ARGUSMESH - load an Argus mesh onto a model
+%
+%   Convert an Argus mesh contained in a file into
+%   fields needed for the mesh in a model md.
+%
+%   Usage:
+%      md=argusmesh(md,infile)
+%
+%   Example:
+%     md=argusmesh(md,'TriMesh.exp')
+
+%some argument check: 
+if nargin~=2 | nargout~=1,
+	help argustomodel;
+	error('argustomodel error message: bad usage');
+end
+
+%determine root of infile: strip extension
+[a,root,b,c]=fileparts(infile);
+
+%inform user we start the script: 
+disp(['   Translating argus file ''' infile ''' into matlab model object']);
+
+%open infile: 
+fileid=fopen(infile,'r');
+if fileid==-1,
+	error(['Could not open file ' infile  ' for reading']);
+end
+
+%Read first line of the argus mesh: node and element parameters
+[buffer,bytecount]=fscanf(fileid,'%i %i %i %i',[1 4]);
+if bytecount~=4, 
+	error(['Problem reading ' infile ' file at line #1']);
+end
+nel=buffer(1);
+nods=buffer(2);
+num_element_parameters=buffer(3);
+num_node_parameters=buffer(4);
+disp(['      argus model '''   root ''' contains ' num2str(nel) ' elements and ' num2str(nods) ' nodes.']);
+
+%initialize elements and nodes
+elements=zeros(nel,3);
+element_parameters=zeros(nel,num_element_parameters);
+x=zeros(nods,1);
+y=zeros(nods,1);
+z=zeros(nods,1);
+node_parameters=zeros(nods,num_node_parameters);
+
+%read nodes:
+format_string='%s %i %f %f ';
+for n=1:num_node_parameters,
+	format_string=[format_string ' %i '];
+end
+
+for n=1:nods,
+	[buffer,bytecount]=fscanf(fileid,format_string,[1,num_node_parameters+4]);
+	x(n)=buffer(3);
+	y(n)=buffer(4);
+	node_parameters(n,:)=buffer(5:length(buffer));
+end
+
+%read elements: 
+format_string='%s %i %i %i %i';
+for n=1:num_element_parameters,
+	format_string=[format_string ' %i '];
+end
+for n=1:nel,
+	[buffer,bytecount]=fscanf(fileid,format_string,[1,num_element_parameters+5]);
+	elements(n,:)=buffer(3:5);
+	element_parameters(n,:)=buffer(6:length(buffer));
+end
+
+%Create a name and a note for this model: 
+notes=['Model created by Argus from input file: ' infile ' and parameter file: ' root '.par on: ' date];
+name=root;
+
+%Finally, use model constructor to build a complete model: 
+md.mesh=mesh2d();
+md.mesh.elements=elements;
+md.mesh.x=x;
+md.mesh.y=y;
+md.mesh.numberofvertices=size(md.mesh.x,1);
+md.mesh.numberofelements=size(md.mesh.elements,1);
+md=addnote(md,notes);
+
+%Add segments and nodes on boundary
+md.mesh.segments=findsegments(md);
+md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1);
+md.mesh.vertexonboundary(md.mesh.segments(:,1))=1;
+md.mesh.vertexonboundary(md.mesh.segments(:,2))=1;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/augment2dmesh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/augment2dmesh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/augment2dmesh.m	(revision 21239)
@@ -0,0 +1,74 @@
+function mh=augment2dmesh(mh,mhband,varargin)
+%AUGMENT2DMESH - augment mh mesh with a band around it (provided by mhband)
+%
+%   Usage:
+%      mh=augment2dmesh(mh,mhband);
+%
+%   Example: 
+%      md.mesh=augment2dmesh(md.mesh,md2.mesh);
+%
+
+%First process options
+options=pairoptions(varargin{:});
+
+%Offset the mesh band elements: 
+mhband.elements=mhband.elements+mh.numberofvertices;
+mhband.segments(:,1:2)=mhband.segments(:,1:2)+mh.numberofvertices;
+mhband.segments(:,3)=mhband.segments(:,3)+mh.numberofelements;
+
+%The innner segments of mhband and the outer segments of mh are identical. Go into  the elements of 
+%mhband and set them to their md1 equivalent: 
+tol=1; %1 meter 
+for i=1:length(mhband.segments),
+	node2=mhband.segments(i,1);
+	%this node2 has an equivalent on the segments  of mdh: 
+	for j=1:length(mh.segments),
+		node1=mh.segments(j,1);
+		%if mhband.x(node2-mh.numberofvertices) == mh.x(node1) &&  mhband.y(node2-mh.numberofvertices) == mh.y(node1),
+		if sqrt((mhband.x(node2-mh.numberofvertices) - mh.x(node1))^2 + (mhband.y(node2-mh.numberofvertices) - mh.y(node1))^2)<tol,
+			%go into the mesh of mhband, and replace by node1.
+			pos=find(mhband.elements==node2); mhband.elements(pos)=node1;
+			segs=mhband.segments(:,1:2); pos=find(segs==node2); segs(pos)=node1; mhband.segments(:,1:2)=segs;
+			break;
+		end
+	end
+end
+
+%Do the merge: 
+mh.elements=[mh.elements;mhband.elements];
+mh.x=[mh.x;mhband.x];
+mh.y=[mh.y;mhband.y];
+mh.lat=[mh.lat;mhband.lat];
+mh.long=[mh.long;mhband.long];
+mh.segments=[mh.segments;mhband.segments];
+
+%Remove orphans:
+x=mh.x; y=mh.y; lat=mh.lat; long=mh.long; 
+elements=mh.elements; segments=mh.segments;
+orphan=find(~ismember([1:length(x)],sort(unique(elements(:)))));
+for i=1:length(orphan),
+	%disp('WARNING: removing orphans');
+	%get rid of the orphan node i
+	%update x and y
+	x=[x(1:orphan(i)-(i-1)-1); x(orphan(i)-(i-1)+1:end)];
+	y=[y(1:orphan(i)-(i-1)-1); y(orphan(i)-(i-1)+1:end)];
+	lat=[lat(1:orphan(i)-(i-1)-1); lat(orphan(i)-(i-1)+1:end)];
+	long=[long(1:orphan(i)-(i-1)-1); long(orphan(i)-(i-1)+1:end)];
+	%update elements
+	pos=find(elements>orphan(i)-(i-1));
+	elements(pos)=elements(pos)-1;
+	%update segments
+	pos1=find(segments(:,1)>orphan(i)-(i-1));
+	pos2=find(segments(:,2)>orphan(i)-(i-1));
+	segments(pos1,1)=segments(pos1,1)-1;
+	segments(pos2,2)=segments(pos2,2)-1;
+end
+
+mh.elements=elements;
+mh.x=x;
+mh.y=y;
+mh.lat=lat;
+mh.long=long;
+mh.segments=segments;
+mh.numberofelements=length(mh.elements);
+mh.numberofvertices=length(mh.x);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/bamg.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/bamg.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/bamg.m	(revision 21239)
@@ -0,0 +1,541 @@
+function md=bamg(md,varargin)
+%BAMG - mesh generation
+%
+%   Available options (for more details see ISSM website http://issm.jpl.nasa.gov/):
+%
+%   - domain :            followed by an ARGUS file that prescribes the domain outline
+%   - hmin :              minimum edge length (default is 10^-100)
+%   - hmax :              maximum edge length (default is 10^100)
+%   - hVertices :         imposed edge length for each vertex (geometry or mesh)
+%   - hminVertices :      minimum edge length for each vertex (mesh)
+%   - hmaxVertices :      maximum edge length for each vertex (mesh)
+%
+%   - anisomax :          maximum ratio between the smallest and largest edges (default is 10^30)
+%   - coeff :             coefficient applied to the metric (2-> twice as many elements, default is 1)
+%   - cutoff :            scalar used to compute the metric when metric type 2 or 3 are applied
+%   - err :               error used to generate the metric from a field
+%   - errg :              geometric error (default is 0.1)
+%   - field :             field of the model that will be used to compute the metric
+%                         to apply several fields, use one column per field
+%   - gradation :         maximum ratio between two adjacent edges
+%   - Hessiantype :       0 -> use double L2 projection (default)
+%                         1 -> use Green formula
+%   - KeepVertices :      try to keep initial vertices when adaptation is done on an existing mesh (default 1)
+%   - MaxCornerAngle :    maximum angle of corners in degree (default is 10)
+%   - maxnbv :            maximum number of vertices used to allocate memory (default is 10^6)
+%   - maxsubdiv :         maximum subdivision of exisiting elements (default is 10)
+%   - metric :            matrix (numberofnodes x 3) used as a metric
+%   - Metrictype :        1 -> absolute error          c/(err coeff^2) * Abs(H)        (default)
+%                         2 -> relative error          c/(err coeff^2) * Abs(H)/max(s,cutoff*max(s))
+%                         3 -> rescaled absolute error c/(err coeff^2) * Abs(H)/(smax-smin)
+%   - nbjacoby :          correction used by Hessiantype=1 (default is 1)
+%   - nbsmooth :          number of metric smoothing procedure (default is 3)
+%   - omega :             relaxation parameter of the smoothing procedure (default is 1.8)
+%   - power :             power applied to the metric (default is 1)
+%   - splitcorners :      split triangles whuch have 3 vertices on the outline (default is 1)
+%   - geometricalmetric : take the geometry into account to generate the metric (default is 0)
+%   - verbose :           level of verbosity (default is 1)
+%
+%   - vertical :          is this a 2d vertical mesh (flowband, default is 0)
+%   - rifts :             followed by an ARGUS file that prescribes the rifts
+%   - toltip :            tolerance to move tip on an existing point of the domain outline
+%   - tracks :            followed by an ARGUS file that prescribes the tracks that the mesh will stick to
+%   - RequiredVertices :  mesh vertices that are required. [x,y,ref]; ref is optional
+%   - tol :               if the distance between 2 points of the domain outline is less than tol, they
+%                         will be merged
+%
+%   Examples:
+%      md=bamg(md,'domain','DomainOutline.exp','hmax',3000);
+%      md=bamg(md,'field',[md.inversion.vel_obs md.geometry.thickness],'hmax',20000,'hmin',1000);
+%      md=bamg(md,'metric',A,'hmin',1000,'hmax',20000,'gradation',3,'anisomax',1);
+
+%process options
+options=pairoptions(varargin{:});
+options=deleteduplicates(options,1);
+
+%initialize the structures required as input of Bamg
+bamg_options=struct();
+bamg_geometry=bamggeom();
+bamg_mesh=bamgmesh();
+
+% Bamg Geometry parameters {{{
+if exist(options,'domain'),
+
+	%Check that file exists
+	domainfile=getfieldvalue(options,'domain');
+	if ischar(domainfile),
+		if ~exist(domainfile,'file') error(['bamg error message: file ' domainfile ' not found']); end
+
+		%read domain according to its extension: 
+		[path,name,ext]=fileparts(domainfile);
+		if strcmp(ext,'.exp'),
+			domain=expread(domainfile);
+		elseif strcmp(ext,'.shp'),
+			domain=shpread(domainfile);
+		else
+			error(['bamg error message: file ' domainfile ' format not supported (.shp or .exp)']);
+		end
+	elseif isstruct(domainfile),
+		domain = domainfile;
+	else
+		error('''domain'' type not supported yet');
+	end
+
+	%Build geometry 
+	count=0;
+	for i=1:length(domain),
+
+		%Check that the domain is closed
+		if (domain(i).x(1)~=domain(i).x(end) | domain(i).y(1)~=domain(i).y(end)),
+			error('bamg error message: all contours provided in ''domain'' should be closed');
+		end
+
+		%Checks that all holes are INSIDE the principle domain outline
+		if i>1,
+			flags=ContourToNodes(domain(i).x,domain(i).y,domain(1),0);
+			if any(~flags),
+				error('bamg error message: All holes should be strictly inside the principal domain');
+			end
+		end
+
+		%Add all points to bamg_geometry
+		nods=domain(i).nods-1; %the domain are closed 1=end;
+		bamg_geometry.Vertices=[bamg_geometry.Vertices; [domain(i).x(1:nods) domain(i).y(1:nods) ones(nods,1)]];
+		bamg_geometry.Edges   =[bamg_geometry.Edges;    [transpose(count+1:count+nods) transpose([count+2:count+nods count+1])  1.*ones(nods,1)]];
+		if i>1, bamg_geometry.SubDomains=[bamg_geometry.SubDomains; 2 count+1 1 1]; end
+
+		%update counter
+		count=count+nods;
+	end
+	if getfieldvalue(options,'vertical',0),
+		if numel(getfieldvalue(options,'Markers',[]))~=size(bamg_geometry.Edges,1),
+			error(['for 2d vertical mesh, ''Markers'' option is required, and should be of size ' num2str(size(bamg_geometry.Edges,1))]);
+		end
+	end
+	if numel(getfieldvalue(options,'Markers',[]))==size(bamg_geometry.Edges,1),
+		bamg_geometry.Edges(:,3)=getfieldvalue(options,'Markers');
+	end
+
+	%take care of rifts
+	if exist(options,'rifts'),
+
+		%Check that file exists
+		riftfile=getfieldvalue(options,'rifts');
+		if ~exist(riftfile,'file')
+			error(['bamg error message: file ' riftfile ' not found ']);
+		end
+		rift=expread(riftfile);
+
+		for i=1:length(rift),
+
+			%detect whether all points of the rift are inside the domain
+			flags=ContourToNodes(rift(i).x,rift(i).y,domain(1),0);
+			if ~flags,
+				error('one rift has all its points outside of the domain outline'),
+
+			elseif any(~flags),
+				%We LOTS of work to do
+				disp('Rift tip outside of or on the domain has been detected and is being processed...');
+
+				%check that only one point is outside (for now)
+				if sum(~flags)~=1,
+					error('bamg error message: only one point outside of the domain is supported yet');
+				end
+
+				%Move tip outside to the first position
+				if flags(1)==0,
+					%OK, first point is outside (do nothing),
+				elseif (flags(end)==0),
+					rift(i).x=flipud(rift(i).x);
+					rift(i).y=flipud(rift(i).y);
+				else
+					error('bamg error message: only a rift tip can be outside of the domain');
+				end
+
+				%Get cordinate of intersection point
+				x1=rift(i).x(1); y1=rift(i).y(1);
+				x2=rift(i).x(2); y2=rift(i).y(2);
+				for j=1:length(domain(1).x)-1;
+					if SegIntersect([x1 y1; x2 y2],[domain(1).x(j) domain(1).y(j); domain(1).x(j+1) domain(1).y(j+1)]),
+
+						%Get position of the two nodes of the edge in domain
+						i1=j;
+						i2=j+1;
+
+						%rift is crossing edge [i1 i2] of the domain
+						%Get coordinate of intersection point (http://mathworld.wolfram.com/Line-LineIntersection.html)
+						x3=domain(1).x(i1); y3=domain(1).y(i1);
+						x4=domain(1).x(i2); y4=domain(1).y(i2);
+						x=det([det([x1 y1; x2 y2])  x1-x2;det([x3 y3; x4 y4])  x3-x4])/det([x1-x2 y1-y2;x3-x4 y3-y4]);
+						y=det([det([x1 y1; x2 y2])  y1-y2;det([x3 y3; x4 y4])  y3-y4])/det([x1-x2 y1-y2;x3-x4 y3-y4]);
+
+						segdis= sqrt((x4-x3)^2+(y4-y3)^2);
+						tipdis=[sqrt((x-x3)^2+(y-y3)^2)  sqrt((x-x4)^2+(y-y4)^2)];
+
+						if (min(tipdis)/segdis) < getfieldvalue(options,'toltip',0),
+							disp('moving tip-domain intersection point');
+
+							%Get position of the closer point
+							if tipdis(1)>tipdis(2),
+								pos=i2;
+							else
+								pos=i1;
+							end
+
+							%This point is only in Vertices (number pos).
+							%OK, now we can add our own rift
+							nods=rift(i).nods-1;
+							bamg_geometry.Vertices=[bamg_geometry.Vertices; [rift(i).x(2:end) rift(i).y(2:end) ones(nods,1)]];
+							bamg_geometry.Edges=[bamg_geometry.Edges;...
+								pos count+1  (1+i);...
+								[transpose(count+1:count+nods-1) transpose(count+2:count+nods)  (1+i)*ones(nods-1,1)]];
+							count=count+nods;
+
+							break;
+
+						else
+							%Add intersection point to Vertices
+							bamg_geometry.Vertices=[bamg_geometry.Vertices; x y 1];
+							count=count+1;
+
+							%Decompose the crossing edge into 2 subedges
+							pos=find(bamg_geometry.Edges(:,1)==i1 & bamg_geometry.Edges(:,2)==i2);
+							if isempty(pos) error('bamg error message: a problem occurred...'); end
+							bamg_geometry.Edges=[bamg_geometry.Edges(1:pos-1,:);...
+								bamg_geometry.Edges(pos,1) count                      bamg_geometry.Edges(pos,3);...
+								count                      bamg_geometry.Edges(pos,2) bamg_geometry.Edges(pos,3);...
+								bamg_geometry.Edges(pos+1:end,:)];
+
+							%OK, now we can add our own rift
+							nods=rift(i).nods-1;
+							bamg_geometry.Vertices=[bamg_geometry.Vertices; [rift(i).x(2:end) rift(i).y(2:end) ones(nods,1)]];
+							bamg_geometry.Edges=[bamg_geometry.Edges;...
+								count  count+1  2 ;...
+								[transpose(count+1:count+nods-1) transpose(count+2:count+nods)  (1+i)*ones(nods-1,1)]];
+							count=count+nods;
+
+							break;
+						end
+					end
+				end
+			else
+				nods=rift(i).nods-1;
+				bamg_geometry.Vertices=[bamg_geometry.Vertices; [rift(i).x(:) rift(i).y(:) ones(nods+1,1)]];
+				bamg_geometry.Edges=[bamg_geometry.Edges; [transpose(count+1:count+nods) transpose(count+2:count+nods+1)  (1+i)*ones(nods,1)]];
+				count=count+nods+1;
+			end
+		end
+	end
+
+	%Deal with tracks
+	if exist(options,'tracks'),
+
+		%read tracks
+		track=getfieldvalue(options,'tracks');
+		if all(ischar(track)),
+			A=expread(track);
+			track=[];
+			for i=1:length(A), 
+				track=[track; [A(i).x A(i).y]];
+			end
+		else
+			track=double(track); %for some reason, it is of class "single"
+		end
+		if(size(track,2)==2), track=[track 3.*ones(size(track,1),1)]; end
+
+		%only keep those inside
+		flags=ContourToNodes(track(:,1),track(:,2),domainfile,0);
+		track=track(find(flags),:);
+
+		%Add all points to bamg_geometry
+		nods=size(track,1);
+		bamg_geometry.Vertices=[bamg_geometry.Vertices; track];
+		bamg_geometry.Edges=[bamg_geometry.Edges; [transpose(count+1:count+nods-1) transpose(count+2:count+nods)  3.*ones(nods-1,1)]];
+
+		%update counter
+		count=count+nods;
+	end
+
+	%Deal with vertices that need to be kept by mesher
+	if exist(options,'RequiredVertices'),
+
+		%recover RequiredVertices
+		requiredvertices=double(getfieldvalue(options,'RequiredVertices')); %for some reason, it is of class "single"
+		if(size(requiredvertices,2)==2), requiredvertices=[requiredvertices 4.*ones(size(requiredvertices,1),1)]; end
+
+		%only keep those inside
+		flags=ContourToNodes(requiredvertices(:,1),requiredvertices(:,2),domain(1),0);
+		requiredvertices=requiredvertices(find(flags),:);
+
+		%Add all points to bamg_geometry
+		nods=size(requiredvertices,1);
+		bamg_geometry.Vertices=[bamg_geometry.Vertices; requiredvertices];
+
+		%update counter
+		count=count+nods;
+
+	end
+
+	%process geom
+	%bamg_geometry=processgeometry(bamg_geometry,getfieldvalue(options,'tol',NaN),domain(1));
+
+elseif isstruct(md.private.bamg) & isfield(md.private.bamg,'geometry'),
+	bamg_geometry=bamggeom(md.private.bamg.geometry); 
+else
+	%do nothing...
+end
+%}}}
+% Bamg Mesh parameters {{{
+if (~exist(options,'domain') & md.mesh.numberofvertices~=0 & strcmp(elementtype(md.mesh),'Tria')),
+
+	if isstruct(md.private.bamg) & isfield(md.private.bamg,'mesh'),
+		bamg_mesh=bamgmesh(md.private.bamg.mesh);
+	else
+		bamg_mesh.Vertices=[md.mesh.x md.mesh.y ones(md.mesh.numberofvertices,1)];
+		bamg_mesh.Triangles=[md.mesh.elements ones(md.mesh.numberofelements,1)];
+	end
+
+	if isstruct(md.rifts.riftstruct)
+		error('bamg error message: rifts not supported yet. Do meshprocessrift AFTER bamg');
+	end
+end
+%}}}
+% Bamg Options {{{
+bamg_options.Crack=getfieldvalue(options,'Crack',0);
+bamg_options.anisomax=getfieldvalue(options,'anisomax',10.^30);
+bamg_options.coeff=getfieldvalue(options,'coeff',1.);
+bamg_options.cutoff=getfieldvalue(options,'cutoff',10.^-5);
+bamg_options.err=getfieldvalue(options,'err',0.01);
+bamg_options.errg=getfieldvalue(options,'errg',0.1);
+bamg_options.field=getfieldvalue(options,'field',[]);
+bamg_options.gradation=getfieldvalue(options,'gradation',1.5);
+bamg_options.Hessiantype=getfieldvalue(options,'Hessiantype',0);
+bamg_options.hmin=getfieldvalue(options,'hmin',10.^-100);
+bamg_options.hmax=getfieldvalue(options,'hmax',10.^100);
+bamg_options.hminVertices=getfieldvalue(options,'hminVertices',[]);
+bamg_options.hmaxVertices=getfieldvalue(options,'hmaxVertices',[]);
+bamg_options.hVertices=getfieldvalue(options,'hVertices',[]);
+bamg_options.KeepVertices=getfieldvalue(options,'KeepVertices',1);
+bamg_options.MaxCornerAngle=getfieldvalue(options,'MaxCornerAngle',10.);
+bamg_options.maxnbv=getfieldvalue(options,'maxnbv',10^6);
+bamg_options.maxsubdiv=getfieldvalue(options,'maxsubdiv',10.);
+bamg_options.metric=getfieldvalue(options,'metric',[]);
+bamg_options.Metrictype=getfieldvalue(options,'Metrictype',0);
+bamg_options.nbjacobi=getfieldvalue(options,'nbjacobi',1);
+bamg_options.nbsmooth=getfieldvalue(options,'nbsmooth',3);
+bamg_options.omega=getfieldvalue(options,'omega',1.8);
+bamg_options.power=getfieldvalue(options,'power',1.);
+bamg_options.splitcorners=getfieldvalue(options,'splitcorners',1);
+bamg_options.geometricalmetric=getfieldvalue(options,'geometricalmetric',0);
+bamg_options.random=getfieldvalue(options,'rand',true);
+bamg_options.verbose=getfieldvalue(options,'verbose',1);
+%}}}
+
+%call Bamg
+[bamgmesh_out bamggeom_out]=BamgMesher(bamg_mesh,bamg_geometry,bamg_options);
+
+if getfieldvalue(options,'vertical',0),
+	md.mesh=mesh2dvertical();
+	md.mesh.x=bamgmesh_out.Vertices(:,1);
+	md.mesh.y=bamgmesh_out.Vertices(:,2);
+	md.mesh.elements=bamgmesh_out.Triangles(:,1:3);
+	md.mesh.edges=bamgmesh_out.IssmEdges;
+	md.mesh.segments=bamgmesh_out.IssmSegments(:,1:3);
+	md.mesh.segmentmarkers=bamgmesh_out.IssmSegments(:,4);
+
+	%Fill in rest of fields:
+	md.mesh.numberofelements=size(md.mesh.elements,1);
+	md.mesh.numberofvertices=length(md.mesh.x);
+	md.mesh.numberofedges=size(md.mesh.edges,1);
+	md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+
+	%Now, build the connectivity tables for this mesh.
+	md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+
+elseif getfieldvalue(options,'3dsurface',0),
+	
+	md.mesh=mesh3dsurface();
+	md.mesh.x=bamgmesh_out.Vertices(:,1);
+	md.mesh.y=bamgmesh_out.Vertices(:,2);
+	md.mesh.z=md.mesh.x; md.mesh.z(:)=0;
+	md.mesh.elements=bamgmesh_out.Triangles(:,1:3);
+	md.mesh.edges=bamgmesh_out.IssmEdges;
+	md.mesh.segments=bamgmesh_out.IssmSegments(:,1:3);
+	md.mesh.segmentmarkers=bamgmesh_out.IssmSegments(:,4);
+
+	%Fill in rest of fields:
+	md.mesh.numberofelements=size(md.mesh.elements,1);
+	md.mesh.numberofvertices=length(md.mesh.x);
+	md.mesh.numberofedges=size(md.mesh.edges,1);
+	md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+
+else 
+	md.mesh=mesh2d();
+	md.mesh.x=bamgmesh_out.Vertices(:,1);
+	md.mesh.y=bamgmesh_out.Vertices(:,2);
+	md.mesh.elements=bamgmesh_out.Triangles(:,1:3);
+	md.mesh.edges=bamgmesh_out.IssmEdges;
+	md.mesh.segments=bamgmesh_out.IssmSegments(:,1:3);
+	md.mesh.segmentmarkers=bamgmesh_out.IssmSegments(:,4);
+
+	%Fill in rest of fields:
+	md.mesh.numberofelements=size(md.mesh.elements,1);
+	md.mesh.numberofvertices=length(md.mesh.x);
+	md.mesh.numberofedges=size(md.mesh.edges,1);
+	md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+end
+
+%Bamg private fields
+md.private.bamg=struct();
+md.private.bamg.mesh=bamgmesh(bamgmesh_out);
+md.private.bamg.geometry=bamggeom(bamggeom_out);
+md.mesh.elementconnectivity=md.private.bamg.mesh.ElementConnectivity;
+md.mesh.elementconnectivity(find(isnan(md.mesh.elementconnectivity)))=0;
+
+%Check for orphan
+if any(~ismember(1:md.mesh.numberofvertices,sort(unique(reshape(md.mesh.elements,3*md.mesh.numberofelements,1)))))
+	error('Output mesh has orphans. Decrease MaxCornerAngle to prevent outside points (ex: 0.01)');
+end
+end 
+
+function geom=processgeometry(geom,tol,outline) % {{{
+
+%Deal with edges
+disp('Checking Edge crossing...');
+i=0;
+while (i<size(geom.Edges,1)),
+
+	%edge counter
+	i=i+1;
+
+	%Get coordinates
+	x1=geom.Vertices(geom.Edges(i,1),1);
+	y1=geom.Vertices(geom.Edges(i,1),2);
+	x2=geom.Vertices(geom.Edges(i,2),1);
+	y2=geom.Vertices(geom.Edges(i,2),2);
+	color1=geom.Edges(i,3);
+
+	j=i; %test edges located AFTER i only
+	while (j<size(geom.Edges,1)),
+
+		%edge counter
+		j=j+1;
+
+		%Skip if the two edges already have a vertex in common
+		if any(ismember(geom.Edges(i,1:2),geom.Edges(j,1:2))),
+			continue
+		end
+
+		%Get coordinates
+		x3=geom.Vertices(geom.Edges(j,1),1);
+		y3=geom.Vertices(geom.Edges(j,1),2);
+		x4=geom.Vertices(geom.Edges(j,2),1);
+		y4=geom.Vertices(geom.Edges(j,2),2);
+		color2=geom.Edges(j,3);
+
+		%Check if the two edges are crossing one another
+		if SegIntersect([x1 y1; x2 y2],[x3 y3; x4 y4]),
+
+			%Get coordinate of intersection point (http://mathworld.wolfram.com/Line-LineIntersection.html)
+			x=det([det([x1 y1; x2 y2])  x1-x2;det([x3 y3; x4 y4])  x3-x4])/det([x1-x2 y1-y2;x3-x4 y3-y4]);
+			y=det([det([x1 y1; x2 y2])  y1-y2;det([x3 y3; x4 y4])  y3-y4])/det([x1-x2 y1-y2;x3-x4 y3-y4]);
+
+			%Add vertex to the list of vertices
+			geom.Vertices(end+1,:)=[x y min(color1,color2)];
+			id=size(geom.Vertices,1);
+
+			%Update edges i and j
+			edgei=geom.Edges(i,:);
+			edgej=geom.Edges(j,:);
+			geom.Edges(i,:)    =[edgei(1) id       edgei(3)];
+			geom.Edges(end+1,:)=[id       edgei(2) edgei(3)];
+			geom.Edges(j,:)    =[edgej(1) id       edgej(3)];
+			geom.Edges(end+1,:)=[id       edgej(2) edgej(3)];
+
+			%update current edge second tip
+			x2=x; y2=y;
+		end
+	end
+
+end
+
+%Check point outside
+disp('Checking for points outside the domain...');
+i=0;
+num=0;
+while (i<size(geom.Vertices,1)),
+
+	%vertex counter
+	i=i+1;
+
+	%Get coordinates
+	x=geom.Vertices(i,1);
+	y=geom.Vertices(i,2);
+	color=geom.Vertices(i,3);
+
+	%Check that the point is inside the domain
+	if (color~=1 & ~ContourToNodes(x,y,outline(1),1)),
+
+		%Remove points from list of Vertices
+		num=num+1;
+		geom.Vertices(i,:)=[];
+
+		%update edges
+		[posedges dummy]=find(geom.Edges==i);
+		geom.Edges(posedges,:)=[];
+		posedges=find(geom.Edges>i);
+		geom.Edges(posedges)=geom.Edges(posedges)-1;
+
+		%update counter
+		i=i-1;
+	end
+end
+if num,
+	disp(['WARNING: ' num2str(num) ' points outside the domain outline have been removed']);
+end
+
+%Check point spacing
+if ~isnan(tol),
+	disp('Checking point spacing...');
+	i=0;
+	while (i<size(geom.Vertices,1)),
+
+		%vertex counter
+		i=i+1;
+
+		%Get coordinates
+		x1=geom.Vertices(i,1);
+		y1=geom.Vertices(i,2);
+
+		j=i; %test edges located AFTER i only
+		while (j<size(geom.Vertices,1)),
+
+			%vertex counter
+			j=j+1;
+
+			%Get coordinates
+			x2=geom.Vertices(j,1);
+			y2=geom.Vertices(j,2);
+
+			%Check whether the two vertices are too close
+			if ((x2-x1)^2+(y2-y1)^2<tol^2)
+
+				%Remove points from list of Vertices
+				geom.Vertices(j,:)=[];
+
+				%update edges
+				posedges=find(ismember(geom.Edges,j));
+				geom.Edges(posedges)=i;
+				posedges=find(geom.Edges>j);
+				geom.Edges(posedges)=geom.Edges(posedges)-1;
+
+				%update counter
+				j=j-1;
+
+			end
+		end
+	end
+end
+%remove empty edges
+geom.Edges(find(geom.Edges(:,1)==geom.Edges(:,2)),:)=[];
+end % }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/bamg.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/bamg.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/bamg.py	(revision 21239)
@@ -0,0 +1,484 @@
+import os.path
+import numpy
+from mesh2d import mesh2d
+from collections import OrderedDict
+from pairoptions import pairoptions
+from bamggeom import bamggeom
+from bamgmesh import bamgmesh
+from expread import expread
+from expwrite import expwrite
+from SegIntersect import SegIntersect
+import MatlabFuncs as m
+from BamgMesher import BamgMesher
+from ContourToNodes import ContourToNodes
+
+def bamg(md,*args):
+	"""
+	BAMG - mesh generation
+
+	   Available options (for more details see ISSM website http://issm.jpl.nasa.gov/):
+
+	   - domain :            followed by an ARGUS file that prescribes the domain outline
+	   - hmin :              minimum edge length (default is 10^-100)
+	   - hmax :              maximum edge length (default is 10^100)
+	   - hVertices :         imposed edge length for each vertex (geometry or mesh)
+	   - hminVertices :      minimum edge length for each vertex (mesh)
+	   - hmaxVertices :      maximum edge length for each vertex (mesh)
+
+	   - anisomax :          maximum ratio between the smallest and largest edges (default is 10^30)
+	   - coeff :             coefficient applied to the metric (2-> twice as many elements, default is 1)
+	   - cutoff :            scalar used to compute the metric when metric type 2 or 3 are applied
+	   - err :               error used to generate the metric from a field
+	   - errg :              geometric error (default is 0.1)
+	   - field :             field of the model that will be used to compute the metric
+	                         to apply several fields, use one column per field
+	   - gradation :         maximum ratio between two adjacent edges
+	   - Hessiantype :       0 -> use double P2 projection (default)
+	                         1 -> use Green formula
+	   - KeepVertices :      try to keep initial vertices when adaptation is done on an existing mesh (default 1)
+	   - MaxCornerAngle :    maximum angle of corners in degree (default is 10)
+	   - maxnbv :            maximum number of vertices used to allocate memory (default is 10^6)
+	   - maxsubdiv :         maximum subdivision of exisiting elements (default is 10)
+	   - metric :            matrix (numberofnodes x 3) used as a metric
+	   - Metrictype :        1 -> absolute error          c/(err coeff^2) * Abs(H)        (default)
+	                         2 -> relative error          c/(err coeff^2) * Abs(H)/max(s,cutoff*max(s))
+	                         3 -> rescaled absolute error c/(err coeff^2) * Abs(H)/(smax-smin)
+	   - nbjacoby :          correction used by Hessiantype=1 (default is 1)
+	   - nbsmooth :          number of metric smoothing procedure (default is 3)
+	   - omega :             relaxation parameter of the smoothing procedure (default is 1.8)
+	   - power :             power applied to the metric (default is 1)
+	   - splitcorners :      split triangles whuch have 3 vertices on the outline (default is 1)
+	   - geometricalmetric : take the geometry into account to generate the metric (default is 0)
+	   - verbose :           level of verbosity (default is 1)
+
+	   - rifts :             followed by an ARGUS file that prescribes the rifts
+	   - toltip :            tolerance to move tip on an existing point of the domain outline
+	   - tracks :            followed by an ARGUS file that prescribes the tracks that the mesh will stick to
+	   - RequiredVertices :  mesh vertices that are required. [x,y,ref]; ref is optional
+	   - tol :               if the distance between 2 points of the domain outline is less than tol, they
+	                         will be merged
+
+	   Examples:
+	      md=bamg(md,'domain','DomainOutline.exp','hmax',3000);
+	      md=bamg(md,'field',[md.inversion.vel_obs md.geometry.thickness],'hmax',20000,'hmin',1000);
+	      md=bamg(md,'metric',A,'hmin',1000,'hmax',20000,'gradation',3,'anisomax',1);
+	"""
+
+	#process options
+	options=pairoptions(*args)
+#	options=deleteduplicates(options,1);
+
+	#initialize the structures required as input of Bamg
+	bamg_options=OrderedDict()
+	bamg_geometry=bamggeom()
+	bamg_mesh=bamgmesh()
+
+	# Bamg Geometry parameters {{{
+	if options.exist('domain'):
+
+		#Check that file exists
+		domainfile=options.getfieldvalue('domain')
+		if not os.path.exists(domainfile):
+			raise IOError("bamg error message: file '%s' not found" % domainfile)
+		domain=expread(domainfile)
+
+		#Build geometry 
+		count=0
+		for i,domaini in enumerate(domain):
+
+			#Check that the domain is closed
+			if (domaini['x'][0]!=domaini['x'][-1] or domaini['y'][0]!=domaini['y'][-1]):
+				raise RuntimeError("bamg error message: all contours provided in ''domain'' should be closed")
+
+			#Checks that all holes are INSIDE the principle domain outline
+			if i:
+				flags=ContourToNodes(domaini['x'],domaini['y'],domainfile,0)[0]
+				if numpy.any(numpy.logical_not(flags)):
+					raise RuntimeError("bamg error message: All holes should be strictly inside the principal domain")
+
+			#Add all points to bamg_geometry
+			nods=domaini['nods']-1    #the domain are closed 0=end
+			bamg_geometry.Vertices=numpy.vstack((bamg_geometry.Vertices,numpy.hstack((domaini['x'][0:nods].reshape(-1,1),domaini['y'][0:nods].reshape(-1,1),numpy.ones((nods,1))))))
+			bamg_geometry.Edges   =numpy.vstack((bamg_geometry.Edges,   numpy.hstack((numpy.arange(count+1,count+nods+1).reshape(-1,1),numpy.hstack((numpy.arange(count+2,count+nods+1),count+1)).reshape(-1,1),1.*numpy.ones((nods,1))))))
+			if i:
+				bamg_geometry.SubDomains=numpy.vstack((bamg_geometry.SubDomains,[2,count+1,1,1]))
+
+			#update counter
+			count+=nods
+
+		#take care of rifts
+		if options.exist('rifts'):
+
+			#Check that file exists
+			riftfile=options.getfieldvalue('rifts')
+			if not os.path.exists(riftfile):
+				raise IOError("bamg error message: file '%s' not found" % riftfile)
+			rift=expread(riftfile)
+
+			for i,rifti in enumerate(rift):
+
+				#detect whether all points of the rift are inside the domain
+				flags=ContourToNodes(rifti['x'],rifti['y'],domain[0],0)[0]
+				if numpy.all(numpy.logical_not(flags)):
+					raise RuntimeError("one rift has all its points outside of the domain outline")
+
+				elif numpy.any(numpy.logical_not(flags)):
+					#We LOTS of work to do
+					print "Rift tip outside of or on the domain has been detected and is being processed..."
+
+					#check that only one point is outside (for now)
+					if numpy.sum(numpy.logical_not(flags).astype(int))!=1:
+						raise RuntimeError("bamg error message: only one point outside of the domain is supported yet")
+
+					#Move tip outside to the first position
+					if   not flags[0]:
+						#OK, first point is outside (do nothing),
+						pass
+					elif not flags[-1]:
+						rifti['x']=numpy.flipud(rifti['x'])
+						rifti['y']=numpy.flipud(rifti['y'])
+					else:
+						raise RuntimeError("bamg error message: only a rift tip can be outside of the domain")
+
+					#Get cordinate of intersection point
+					x1=rifti['x'][0]
+					y1=rifti['y'][0]
+					x2=rifti['x'][1]
+					y2=rifti['y'][1]
+					for j in xrange(0,numpy.size(domain[0]['x'])-1):
+						if SegIntersect(numpy.array([[x1,y1],[x2,y2]]),numpy.array([[domain[0]['x'][j],domain[0]['y'][j]],[domain[0]['x'][j+1],domain[0]['y'][j+1]]])):
+
+							#Get position of the two nodes of the edge in domain
+							i1=j
+							i2=j+1
+
+							#rift is crossing edge [i1 i2] of the domain
+							#Get coordinate of intersection point (http://mathworld.wolfram.com/Line-LineIntersection.html)
+							x3=domain[0]['x'][i1]
+							y3=domain[0]['y'][i1]
+							x4=domain[0]['x'][i2]
+							y4=domain[0]['y'][i2]
+#							x=det([det([x1 y1; x2 y2])  x1-x2;det([x3 y3; x4 y4])  x3-x4])/det([x1-x2 y1-y2;x3-x4 y3-y4]);
+#							y=det([det([x1 y1; x2 y2])  y1-y2;det([x3 y3; x4 y4])  y3-y4])/det([x1-x2 y1-y2;x3-x4 y3-y4]);
+							x=numpy.linalg.det(numpy.array([[numpy.linalg.det(numpy.array([[x1,y1],[x2,y2]])),x1-x2],[numpy.linalg.det(numpy.array([[x3,y3],[x4,y4]])),x3-x4]]))/numpy.linalg.det(numpy.array([[x1-x2,y1-y2],[x3-x4,y3-y4]]))
+							y=numpy.linalg.det(numpy.array([[numpy.linalg.det(numpy.array([[x1,y1],[x2,y2]])),y1-y2],[numpy.linalg.det(numpy.array([[x3,y3],[x4,y4]])),y3-y4]]))/numpy.linalg.det(numpy.array([[x1-x2,y1-y2],[x3-x4,y3-y4]]))
+
+							segdis= sqrt((x4-x3)**2+(y4-y3)**2)
+							tipdis=numpy.array([sqrt((x-x3)**2+(y-y3)**2),sqrt((x-x4)**2+(y-y4)**2)])
+
+							if numpy.min(tipdis)/segdis < options.getfieldvalue('toltip',0):
+								print "moving tip-domain intersection point"
+
+								#Get position of the closer point
+								if tipdis[0]>tipdis[1]:
+									pos=i2
+								else:
+									pos=i1
+
+								#This point is only in Vertices (number pos).
+								#OK, now we can add our own rift
+								nods=rifti['nods']-1
+								bamg_geometry.Vertices=numpy.vstack((bamg_geometry.Vertices,numpy.hstack((rifti['x'][1:].reshape(-1,1),rifti['y'][1:].reshape(-1,1),numpy.ones((nods,1))))))
+								bamg_geometry.Edges=numpy.vstack((bamg_geometry.Edges,\
+									numpy.array([[pos,count+1,(1+i)]]),\
+									numpy.hstack((numpy.arange(count+1,count+nods).reshape(-1,1),numpy.arange(count+2,count+nods+1).reshape(-1,1),(1+i)*numpy.ones((nods-1,1))))))
+								count+=nods
+
+								break
+
+							else:
+								#Add intersection point to Vertices
+								bamg_geometry.Vertices=numpy.vstack((bamg_geometry.Vertices,numpy.array([[x,y,1]])))
+								count+=1
+
+								#Decompose the crossing edge into 2 subedges
+								pos=numpy.nonzero(numpy.logical_and(bamg_geometry.Edges[:,0]==i1,bamg_geometry.Edges[:,1]==i2))[0]
+								if not pos:
+									raise RuntimeError("bamg error message: a problem occurred...")
+								bamg_geometry.Edges=numpy.vstack((bamg_geometry.Edges[0:pos-1,:],\
+									numpy.array([[bamg_geometry.Edges[pos,0],count                     ,bamg_geometry.Edges[pos,2]]]),\
+									numpy.array([[count                     ,bamg_geometry.Edges[pos,1],bamg_geometry.Edges[pos,2]]]),\
+									bamg_geometry.Edges[pos+1:,:]))
+
+								#OK, now we can add our own rift
+								nods=rifti['nods']-1
+								bamg_geometry.Vertices=numpy.vstack((bamg_geometry.Vertices,numpy.hstack((rifti['x'][1:].reshape(-1,1),rifti['y'][1:].reshape(-1,1),numpy.ones((nods,1))))))
+								bamg_geometry.Edges=numpy.vstack((bamg_geometry.Edges,\
+									numpy.array([[count,count+1,2]]),\
+									numpy.hstack((numpy.arange(count+1,count+nods).reshape(-1,1),numpy.arange(count+2,count+nods+1).reshape(-1,1),(1+i)*numpy.ones((nods-1,1))))))
+								count+=nods
+
+								break
+
+				else:
+					nods=rifti['nods']-1
+					bamg_geometry.Vertices=numpy.vstack(bamg_geometry.Vertices, numpy.hstack(rifti['x'][:],rifti['y'][:],numpy.ones((nods+1,1))))
+					bamg_geometry.Edges   =numpy.vstack(bamg_geometry.Edges, numpy.hstack(numpy.arange(count+1,count+nods).reshape(-1,1),numpy.arange(count+2,count+nods+1).reshape(-1,1),i*numpy.ones((nods,1))))
+					count=+nods+1
+
+		#Deal with tracks
+		if options.exist('tracks'):
+
+			#read tracks
+			track=options.getfieldvalue('tracks')
+			if all(isinstance(track,(str,unicode))):
+				A=expread(track)
+				track=numpy.hstack((A.x.reshape(-1,1),A.y.reshape(-1,1)))
+			else:
+				track=float(track)    #for some reason, it is of class "single"
+			if numpy.size(track,axis=1)==2:
+				track=numpy.hstack((track,3.*numpy.ones((size(track,axis=0),1))))
+
+			#only keep those inside
+			flags=ContourToNodes(track[:,0],track[:,1],domainfile,0)[0]
+			track=track[numpy.nonzero(flags),:]
+
+			#Add all points to bamg_geometry
+			nods=numpy.size(track,axis=0)
+			bamg_geometry.Vertices=numpy.vstack((bamg_geometry.Vertices,track))
+			bamg_geometry.Edges   =numpy.vstack((bamg_geometry.Edges,numpy.hstack((numpy.arange(count+1,count+nods).reshape(-1,1),numpy.arange(count+2,count+nods+1).reshape(-1,1),3.*numpy.ones((nods-1,1))))))
+
+			#update counter
+			count+=nods
+
+		#Deal with vertices that need to be kept by mesher
+		if options.exist('RequiredVertices'):
+
+			#recover RequiredVertices
+			requiredvertices=options.getfieldvalue('RequiredVertices')    #for some reason, it is of class "single"
+			if numpy.size(requiredvertices,axis=1)==2:
+				requiredvertices=numpy.hstack((requiredvertices,4.*numpy.ones((numpy.size(requiredvertices,axis=0),1))))
+
+			#only keep those inside
+			flags=ContourToNodes(requiredvertices[:,0],requiredvertices[:,1],domainfile,0)[0]
+			requiredvertices=requiredvertices[numpy.nonzero(flags)[0],:]
+			#Add all points to bamg_geometry
+			nods=numpy.size(requiredvertices,axis=0)
+			bamg_geometry.Vertices=numpy.vstack((bamg_geometry.Vertices,requiredvertices))
+
+			#update counter
+			count+=nods
+
+		#process geom
+		#bamg_geometry=processgeometry(bamg_geometry,options.getfieldvalue('tol',float(nan)),domain[0])
+
+	elif isinstance(md.private.bamg,dict) and 'geometry' in md.private.bamg:
+		bamg_geometry=bamggeom(md.private.bamg['geometry'].__dict__) 
+	else:
+		#do nothing...
+		pass
+	#}}}
+	# Bamg Mesh parameters {{{
+	if not options.exist('domain') and md.mesh.numberofvertices and m.strcmp(md.mesh.elementtype(),'Tria'):
+
+		if isinstance(md.private.bamg,dict) and 'mesh' in md.private.bamg:
+			bamg_mesh=bamgmesh(md.private.bamg['mesh'].__dict__)
+		else:
+			bamg_mesh.Vertices=numpy.hstack((md.mesh.x.reshape(-1,1),md.mesh.y.reshape(-1,1),numpy.ones((md.mesh.numberofvertices,1))))
+			bamg_mesh.Triangles=numpy.hstack((md.mesh.elements,numpy.ones((md.mesh.numberofelements,1))))
+
+		if isinstance(md.rifts.riftstruct,dict):
+			raise TypeError("bamg error message: rifts not supported yet. Do meshprocessrift AFTER bamg")
+	#}}}
+	# Bamg Options {{{
+	bamg_options['Crack']=options.getfieldvalue('Crack',0)
+	bamg_options['anisomax']=options.getfieldvalue('anisomax',10.**30)
+	bamg_options['coeff']=options.getfieldvalue('coeff',1.)
+	bamg_options['cutoff']=options.getfieldvalue('cutoff',10.**-5)
+	bamg_options['err']=options.getfieldvalue('err',numpy.array([[0.01]]))
+	bamg_options['errg']=options.getfieldvalue('errg',0.1)
+	bamg_options['field']=options.getfieldvalue('field',numpy.empty((0,1)))
+	bamg_options['gradation']=options.getfieldvalue('gradation',1.5)
+	bamg_options['Hessiantype']=options.getfieldvalue('Hessiantype',0)
+	bamg_options['hmin']=options.getfieldvalue('hmin',10.**-100)
+	bamg_options['hmax']=options.getfieldvalue('hmax',10.**100)
+	bamg_options['hminVertices']=options.getfieldvalue('hminVertices',numpy.empty((0,1)))
+	bamg_options['hmaxVertices']=options.getfieldvalue('hmaxVertices',numpy.empty((0,1)))
+	bamg_options['hVertices']=options.getfieldvalue('hVertices',numpy.empty((0,1)))
+	bamg_options['KeepVertices']=options.getfieldvalue('KeepVertices',1)
+	bamg_options['MaxCornerAngle']=options.getfieldvalue('MaxCornerAngle',10.)
+	bamg_options['maxnbv']=options.getfieldvalue('maxnbv',10**6)
+	bamg_options['maxsubdiv']=options.getfieldvalue('maxsubdiv',10.)
+	bamg_options['metric']=options.getfieldvalue('metric',numpy.empty((0,1)))
+	bamg_options['Metrictype']=options.getfieldvalue('Metrictype',0)
+	bamg_options['nbjacobi']=options.getfieldvalue('nbjacobi',1)
+	bamg_options['nbsmooth']=options.getfieldvalue('nbsmooth',3)
+	bamg_options['omega']=options.getfieldvalue('omega',1.8)
+	bamg_options['power']=options.getfieldvalue('power',1.)
+	bamg_options['splitcorners']=options.getfieldvalue('splitcorners',1)
+	bamg_options['geometricalmetric']=options.getfieldvalue('geometricalmetric',0)
+	bamg_options['random']=options.getfieldvalue('rand',True)
+	bamg_options['verbose']=options.getfieldvalue('verbose',1)
+	#}}}
+
+	#call Bamg
+	bamgmesh_out,bamggeom_out=BamgMesher(bamg_mesh.__dict__,bamg_geometry.__dict__,bamg_options)
+
+	# plug results onto model
+	md.private.bamg=OrderedDict()
+	md.private.bamg['mesh']=bamgmesh(bamgmesh_out)
+	md.private.bamg['geometry']=bamggeom(bamggeom_out)
+	md.mesh = mesh2d()
+	md.mesh.x=bamgmesh_out['Vertices'][:,0].copy()
+	md.mesh.y=bamgmesh_out['Vertices'][:,1].copy()
+	md.mesh.elements=bamgmesh_out['Triangles'][:,0:3].astype(int)
+	md.mesh.edges=bamgmesh_out['IssmEdges'].astype(int)
+	md.mesh.segments=bamgmesh_out['IssmSegments'][:,0:3].astype(int)
+	md.mesh.segmentmarkers=bamgmesh_out['IssmSegments'][:,3].astype(int)
+
+	#Fill in rest of fields:
+	md.mesh.numberofelements=numpy.size(md.mesh.elements,axis=0)
+	md.mesh.numberofvertices=numpy.size(md.mesh.x)
+	md.mesh.numberofedges=numpy.size(md.mesh.edges,axis=0)
+	md.mesh.vertexonboundary=numpy.zeros(md.mesh.numberofvertices,bool)
+	md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1]=True
+	md.mesh.elementconnectivity=md.private.bamg['mesh'].ElementConnectivity
+	md.mesh.elementconnectivity[numpy.nonzero(numpy.isnan(md.mesh.elementconnectivity))]=0
+	md.mesh.elementconnectivity=md.mesh.elementconnectivity.astype(int)
+
+	#Check for orphan
+	if numpy.any(numpy.logical_not(numpy.in1d(numpy.arange(1,md.mesh.numberofvertices+1),md.mesh.elements.flat))):
+		raise RuntimeError("Output mesh has orphans. Decrease MaxCornerAngle to prevent outside points (ex: 0.01)")
+
+	return md
+
+def processgeometry(geom,tol,outline):    # {{{
+
+	raise RuntimeError("bamg.py/processgeometry is not complete.")
+	#Deal with edges
+	print "Checking Edge crossing..."
+	i=0
+	while (i<numpy.size(geom.Edges,axis=0)):
+
+		#edge counter
+		i+=1
+
+		#Get coordinates
+		x1=geom.Vertices[geom.Edges[i,0],0]
+		y1=geom.Vertices[geom.Edges[i,0],1]
+		x2=geom.Vertices[geom.Edges[i,1],0]
+		y2=geom.Vertices[geom.Edges[i,1],1]
+		color1=geom.Edges[i,2]
+
+		j=i    #test edges located AFTER i only
+		while (j<numpy.size(geom.Edges,axis=0)):
+
+			#edge counter
+			j+=1
+
+			#Skip if the two edges already have a vertex in common
+			if any(m.ismember(geom.Edges[i,0:2],geom.Edges[j,0:2])):
+				continue
+
+			#Get coordinates
+			x3=geom.Vertices[geom.Edges[j,0],0]
+			y3=geom.Vertices[geom.Edges[j,0],1]
+			x4=geom.Vertices[geom.Edges[j,1],0]
+			y4=geom.Vertices[geom.Edges[j,1],1]
+			color2=geom.Edges[j,2]
+
+			#Check if the two edges are crossing one another
+			if SegIntersect(numpy.array([[x1,y1],[x2,y2]]),numpy.array([[x3,y3],[x4,y4]])):
+
+				#Get coordinate of intersection point (http://mathworld.wolfram.com/Line-LineIntersection.html)
+				x=numpy.linalg.det(numpy.array([numpy.linalg.det(numpy.array([[x1,y1],[x2,y2]])),x1-x2],[numpy.linalg.det(numpy.array([[x3,y3],[x4,y4]])),x3-x4])/numpy.linalg.det(numpy.array([[x1-x2,y1-y2],[x3-x4,y3-y4]])))
+				y=numpy.linalg.det(numpy.array([numpy.linalg.det(numpy.array([[x1,y1],[x2,y2]])),y1-y2],[numpy.linalg.det(numpy.array([[x3,y3],[x4,y4]])),y3-y4])/numpy.linalg.det(numpy.array([[x1-x2,y1-y2],[x3-x4,y3-y4]])))
+
+				#Add vertex to the list of vertices
+				geom.Vertices=numpy.vstack((geom.Vertices,[x,y,min(color1,color2)]))
+				id=numpy.size(geom.Vertices,axis=0)
+
+				#Update edges i and j
+				edgei=geom.Edges[i,:].copy()
+				edgej=geom.Edges[j,:].copy()
+				geom.Edges[i,:]    =[edgei(0),id      ,edgei(2)]
+				geom.Edges=numpy.vstack((geom.Edges,[id      ,edgei(1),edgei(2)]))
+				geom.Edges[j,:]    =[edgej(0),id      ,edgej(2)]
+				geom.Edges=numpy.vstack((geom.Edges,[id      ,edgej(1),edgej(2)]))
+
+				#update current edge second tip
+				x2=x
+				y2=y
+
+	#Check point outside
+	print "Checking for points outside the domain..."
+	i=0
+	num=0
+	while (i<numpy.size(geom.Vertices,axis=0)):
+
+		#vertex counter
+		i+=1
+
+		#Get coordinates
+		x=geom.Vertices[i,0]
+		y=geom.Vertices[i,1]
+		color=geom.Vertices[i,2]
+
+		#Check that the point is inside the domain
+		if color!=1 and not ContourToNodes(x,y,outline[0],1):
+
+			#Remove points from list of Vertices
+			num+=1
+			geom.Vertices[i,:]=[]
+
+			#update edges
+			posedges=numpy.nonzero(geom.Edges==i)
+			geom.Edges[posedges[0],:]=[]
+			posedges=numpy.nonzero(geom.Edges>i)
+			geom.Edges[posedges]=geom.Edges[posedges]-1
+
+			#update counter
+			i-=1
+
+	if num:
+		print "WARNING: %d points outside the domain outline have been removed" % num
+
+	"""
+	%Check point spacing
+	if ~isnan(tol),
+		disp('Checking point spacing...');
+		i=0;
+		while (i<size(geom.Vertices,1)),
+
+			%vertex counter
+			i=i+1;
+
+			%Get coordinates
+			x1=geom.Vertices(i,1);
+			y1=geom.Vertices(i,2);
+
+			j=i; %test edges located AFTER i only
+			while (j<size(geom.Vertices,1)),
+
+				%vertex counter
+				j=j+1;
+
+				%Get coordinates
+				x2=geom.Vertices(j,1);
+				y2=geom.Vertices(j,2);
+
+				%Check whether the two vertices are too close
+				if ((x2-x1)**2+(y2-y1)**2<tol**2)
+
+					%Remove points from list of Vertices
+					geom.Vertices(j,:)=[];
+
+					%update edges
+					posedges=find(m.ismember(geom.Edges,j));
+					geom.Edges(posedges)=i;
+					posedges=find(geom.Edges>j);
+					geom.Edges(posedges)=geom.Edges(posedges)-1;
+
+					%update counter
+					j=j-1;
+
+				end
+			end
+		end
+	end
+	%remove empty edges
+	geom.Edges(find(geom.Edges(:,1)==geom.Edges(:,2)),:)=[];
+	"""
+	return geom
+# }}}
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/bamgflowband.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/bamgflowband.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/bamgflowband.m	(revision 21239)
@@ -0,0 +1,36 @@
+function md=bamgflowband(md,x,surf,base,varargin);
+%BAMGFLOWBAND - create flowband mesh with bamg
+%
+%   Usage:
+%      md=bamgflowband(md,x,surf,base,OPTIONS)
+%
+%      surf and bed are the surface elevation and base for each x provided
+%      x must be increasing
+%      OPTIONS are bamg options
+%
+%   Example:
+%      x =[1:100:3000];
+%      h=linspace(1000,300,numel(x));
+%      b=-917/1023*h;
+%      md=bamgflowband(model,b+h,b,'hmax',80,'vertical',1,'Markers',m);
+
+%Write expfile with domain outline
+A=struct();
+A.x=[x;flipud(x);x(1)];
+A.y=[base;flipud(surf);base(1)];
+A.nods = numel(A.x);
+
+%markers:
+m                          = ones(numel(A.x)-1,1); % base        = 1
+m(numel(x))                = 2;                    % right side  = 2
+m(numel(x)+1:2*numel(x)-1) = 3;                    % top surface = 3
+m(2*numel(x))              = 4;                    % left side   = 4
+
+%mesh domain
+md=bamg(model(),'domain',A,'vertical',1,'Markers',m,varargin{:});
+
+%Deal with vertices on bed
+md.mesh.vertexonbase=zeros(md.mesh.numberofvertices,1);
+md.mesh.vertexonbase(find(vertexflags(md.mesh,1)))=1;
+md.mesh.vertexonsurface=zeros(md.mesh.numberofvertices,1);
+md.mesh.vertexonsurface(find(vertexflags(md.mesh,3)))=1;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/findsegments.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/findsegments.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/findsegments.m	(revision 21239)
@@ -0,0 +1,92 @@
+function segments=findsegments(md,varargin)
+%FINDSEGMENTS - build segments model field
+%
+%   Optional inputs:
+%      'mesh.elementconnectivity'
+%
+%   Usage:
+%      segments=findsegments(md,varargin);
+
+%get options
+options=pairoptions(varargin{:});
+
+%Get connectivity
+mesh.elementconnectivity=getfieldvalue(options,'mesh.elementconnectivity',md.mesh.elementconnectivity);
+
+%Now, build the connectivity tables for this mesh if not correclty done
+if size(md.mesh.elementconnectivity,1)~=md.mesh.numberofelements,
+	if exist(options,'mesh.elementconnectivity'),
+		error(' ''mesh.elementconnectivity'' option does not have thge right size.');
+	else
+		mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+	end
+end
+
+%Recreate the segments
+elementonboundary=double(mesh.elementconnectivity(:,3)==0);
+pos=find(elementonboundary);
+num_segments=length(pos);
+segments=zeros(num_segments,3);
+count=1;
+
+%loop over the segments
+for i=1:num_segments,
+
+	%get current element on boundary
+	el1=pos(i);
+
+	%get elements connected to el1
+	els2=mesh.elementconnectivity(el1,find(mesh.elementconnectivity(el1,:)));
+
+	%el1 is connected to 2 other elements
+	if length(els2)>1,
+
+		%get nodes of el1
+		nods1=md.mesh.elements(el1,:);
+
+		%find the common vertices to the two elements connected to el1 (1 or 2)
+		flag=intersect(md.mesh.elements(els2(1),:),md.mesh.elements(els2(2),:));
+
+		%get the vertices on the boundary and build segment
+		nods1(find(ismember(nods1,flag)))=[];
+		segments(count,:)=[nods1 el1];
+
+		%swap segment nodes if necessary
+		ord1=find(nods1(1)==md.mesh.elements(el1,:));
+		ord2=find(nods1(2)==md.mesh.elements(el1,:));
+		if ( (ord1==1 & ord2==2) | (ord1==2 & ord2==3) | (ord1==3 & ord2==1) ),
+			temp=segments(count,1);
+			segments(count,1)=segments(count,2);
+			segments(count,2)=temp;
+		end
+		segments(count,1:2)=fliplr(segments(count,1:2));
+		count=count+1;
+
+	%el1 is connected to only one element
+	else
+		%get nodes of el1
+		nods1=md.mesh.elements(el1,:);
+
+		%find the vertex  the el1 to not share with els2
+		flag=setdiff(nods1,md.mesh.elements(els2,:));
+
+		for j=1:3,
+			nods=nods1; nods(j)=[];
+			if any(ismember(flag,nods)),
+
+				segments(count,:)=[nods el1];
+
+				%swap segment nodes if necessary
+				ord1=find(nods(1)==md.mesh.elements(el1,:));
+				ord2=find(nods(2)==md.mesh.elements(el1,:));
+				if ( (ord1==1 & ord2==2) | (ord1==2 & ord2==3) | (ord1==3 & ord2==1) ),
+					temp=segments(count,1);
+					segments(count,1)=segments(count,2);
+					segments(count,2)=temp;
+				end
+				segments(count,1:2)=fliplr(segments(count,1:2));
+				count=count+1;
+			end
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/intersections.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/intersections.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/intersections.m	(revision 21239)
@@ -0,0 +1,279 @@
+function [x0,y0,iout,jout] = intersections(x1,y1,x2,y2,robust)
+%INTERSECTIONS Intersections of curves.
+%   Computes the (x,y) locations where two curves intersect.  The curves
+%   can be broken with NaNs or have vertical segments.
+%
+% Example:
+%   [X0,Y0] = intersections(X1,Y1,X2,Y2,ROBUST);
+%
+% where X1 and Y1 are equal-length vectors of at least two points and
+% represent curve 1.  Similarly, X2 and Y2 represent curve 2.
+% X0 and Y0 are column vectors containing the points at which the two
+% curves intersect.
+%
+% ROBUST (optional) set to 1 or true means to use a slight variation of the
+% algorithm that might return duplicates of some intersection points, and
+% then remove those duplicates.  The default is true, but since the
+% algorithm is slightly slower you can set it to false if you know that
+% your curves don't intersect at any segment boundaries.  Also, the robust
+% version properly handles parallel and overlapping segments.
+%
+% The algorithm can return two additional vectors that indicate which
+% segment pairs contain intersections and where they are:
+%
+%   [X0,Y0,I,J] = intersections(X1,Y1,X2,Y2,ROBUST);
+%
+% For each element of the vector I, I(k) = (segment number of (X1,Y1)) +
+% (how far along this segment the intersection is).  For example, if I(k) =
+% 45.25 then the intersection lies a quarter of the way between the line
+% segment connecting (X1(45),Y1(45)) and (X1(46),Y1(46)).  Similarly for
+% the vector J and the segments in (X2,Y2).
+%
+% You can also get intersections of a curve with itself.  Simply pass in
+% only one curve, i.e.,
+%
+%   [X0,Y0] = intersections(X1,Y1,ROBUST);
+%
+% where, as before, ROBUST is optional.
+
+% Version: 1.10, 25 February 2008
+% Author:  Douglas M. Schwarz
+% Email:   dmschwarz=ieee*org, dmschwarz=urgrad*rochester*edu
+% Real_email = regexprep(Email,{'=','*'},{'@','.'})
+
+
+% Theory of operation:
+%
+% Given two line segments, L1 and L2,
+%
+%   L1 endpoints:  (x1(1),y1(1)) and (x1(2),y1(2))
+%   L2 endpoints:  (x2(1),y2(1)) and (x2(2),y2(2))
+%
+% we can write four equations with four unknowns and then solve them.  The
+% four unknowns are t1, t2, x0 and y0, where (x0,y0) is the intersection of
+% L1 and L2, t1 is the distance from the starting point of L1 to the
+% intersection relative to the length of L1 and t2 is the distance from the
+% starting point of L2 to the intersection relative to the length of L2.
+%
+% So, the four equations are
+%
+%    (x1(2) - x1(1))*t1 = x0 - x1(1)
+%    (x2(2) - x2(1))*t2 = x0 - x2(1)
+%    (y1(2) - y1(1))*t1 = y0 - y1(1)
+%    (y2(2) - y2(1))*t2 = y0 - y2(1)
+%
+% Rearranging and writing in matrix form,
+%
+%  [x1(2)-x1(1)       0       -1   0;      [t1;      [-x1(1);
+%        0       x2(2)-x2(1)  -1   0;   *   t2;   =   -x2(1);
+%   y1(2)-y1(1)       0        0  -1;       x0;       -y1(1);
+%        0       y2(2)-y2(1)   0  -1]       y0]       -y2(1)]
+%
+% Let's call that A*T = B.  We can solve for T with T = A\B.
+%
+% Once we have our solution we just have to look at t1 and t2 to determine
+% whether L1 and L2 intersect.  If 0 <= t1 < 1 and 0 <= t2 < 1 then the two
+% line segments cross and we can include (x0,y0) in the output.
+%
+% In principle, we have to perform this computation on every pair of line
+% segments in the input data.  This can be quite a large number of pairs so
+% we will reduce it by doing a simple preliminary check to eliminate line
+% segment pairs that could not possibly cross.  The check is to look at the
+% smallest enclosing rectangles (with sides parallel to the axes) for each
+% line segment pair and see if they overlap.  If they do then we have to
+% compute t1 and t2 (via the A\B computation) to see if the line segments
+% cross, but if they don't then the line segments cannot cross.  In a
+% typical application, this technique will eliminate most of the potential
+% line segment pairs.
+
+
+% Input checks.
+error(nargchk(2,5,nargin))
+
+% Adjustments when fewer than five arguments are supplied.
+switch nargin
+	case 2
+		robust = true;
+		x2 = x1;
+		y2 = y1;
+		self_intersect = true;
+	case 3
+		robust = x2;
+		x2 = x1;
+		y2 = y1;
+		self_intersect = true;
+	case 4
+		robust = true;
+		self_intersect = false;
+	case 5
+		self_intersect = false;
+end
+
+% x1 and y1 must be vectors with same number of points (at least 2).
+if sum(size(x1) > 1) ~= 1 || sum(size(y1) > 1) ~= 1 || ...
+		length(x1) ~= length(y1)
+	error('X1 and Y1 must be equal-length vectors of at least 2 points.')
+end
+% x2 and y2 must be vectors with same number of points (at least 2).
+if sum(size(x2) > 1) ~= 1 || sum(size(y2) > 1) ~= 1 || ...
+		length(x2) ~= length(y2)
+	error('X2 and Y2 must be equal-length vectors of at least 2 points.')
+end
+
+
+% Force all inputs to be column vectors.
+x1 = x1(:);
+y1 = y1(:);
+x2 = x2(:);
+y2 = y2(:);
+
+% Compute number of line segments in each curve and some differences we'll
+% need later.
+n1 = length(x1) - 1;
+n2 = length(x2) - 1;
+xy1 = [x1 y1];
+xy2 = [x2 y2];
+dxy1 = diff(xy1);
+dxy2 = diff(xy2);
+
+% Determine the combinations of i and j where the rectangle enclosing the
+% i'th line segment of curve 1 overlaps with the rectangle enclosing the
+% j'th line segment of curve 2.
+[i,j] = find(repmat(min(x1(1:end-1),x1(2:end)),1,n2) <= ...
+	repmat(max(x2(1:end-1),x2(2:end)).',n1,1) & ...
+	repmat(max(x1(1:end-1),x1(2:end)),1,n2) >= ...
+	repmat(min(x2(1:end-1),x2(2:end)).',n1,1) & ...
+	repmat(min(y1(1:end-1),y1(2:end)),1,n2) <= ...
+	repmat(max(y2(1:end-1),y2(2:end)).',n1,1) & ...
+	repmat(max(y1(1:end-1),y1(2:end)),1,n2) >= ...
+	repmat(min(y2(1:end-1),y2(2:end)).',n1,1));
+
+% For one segment in x1,y1, i and j are returned as row vectors.  They
+% need to be column vectors, or iout and jout below will err out.
+% (jes, 6/11/10)
+
+if (size(i,1) == 1)
+    i=i';
+end
+if (size(j,1) == 1)
+    j=j';
+end
+
+% Find segments pairs which have at least one vertex = NaN and remove them.
+% This line is a fast way of finding such segment pairs.  We take
+% advantage of the fact that NaNs propagate through calculations, in
+% particular subtraction (in the calculation of dxy1 and dxy2, which we
+% need anyway) and addition.
+% At the same time we can remove redundant combinations of i and j in the
+% case of finding intersections of a line with itself.
+if self_intersect
+	remove = isnan(sum(dxy1(i,:) + dxy2(j,:),2)) | j <= i + 1;
+else
+	remove = isnan(sum(dxy1(i,:) + dxy2(j,:),2));
+end
+i(remove) = [];
+j(remove) = [];
+
+% Initialize matrices.  We'll put the T's and B's in matrices and use them
+% one column at a time.  AA is a 3-D extension of A where we'll use one
+% plane at a time.
+n = length(i);
+T = zeros(4,n);
+AA = zeros(4,4,n);
+AA([1 2],3,:) = -1;
+AA([3 4],4,:) = -1;
+AA([1 3],1,:) = dxy1(i,:).';
+AA([2 4],2,:) = dxy2(j,:).';
+B = -[x1(i) x2(j) y1(i) y2(j)].';
+
+% Loop through possibilities.  Trap singularity warning and then use
+% lastwarn to see if that plane of AA is near singular.  Process any such
+% segment pairs to determine if they are colinear (overlap) or merely
+% parallel.  That test consists of checking to see if one of the endpoints
+% of the curve 2 segment lies on the curve 1 segment.  This is done by
+% checking the cross product
+%
+%   (x1(2),y1(2)) - (x1(1),y1(1)) x (x2(2),y2(2)) - (x1(1),y1(1)).
+%
+% If this is close to zero then the segments overlap.
+
+% If the robust option is false then we assume no two segment pairs are
+% parallel and just go ahead and do the computation.  If A is ever singular
+% a warning will appear.  This is faster and obviously you should use it
+% only when you know you will never have overlapping or parallel segment
+% pairs.
+
+if robust
+	overlap = false(1,n);
+	warning_state = warning('off','MATLAB:singularMatrix');
+	% Use try-catch to guarantee original warning state is restored.
+	try
+		lastwarn('')
+		for k = 1:n
+			T(:,k) = AA(:,:,k)\B(:,k);
+			[unused,last_warn] = lastwarn;
+			lastwarn('')
+			if strcmp(last_warn,'MATLAB:singularMatrix')
+				% Force in_range(k) to be false.
+				T(1,k) = NaN;
+				% Determine if these segments overlap or are just parallel.
+				overlap(k) = rcond([dxy1(i(k),:);xy2(j(k),:) - xy1(i(k),:)]) < eps;
+			end
+		end
+		warning(warning_state)
+	catch
+		warning(warning_state)
+		rethrow(lasterror)
+	end
+	% Find where t1 and t2 are between 0 and 1 and return the corresponding
+	% x0 and y0 values.
+	in_range = T(1,:) >= 0 & T(2,:) >= 0 & T(1,:) <= 1 & T(2,:) <= 1;
+	% For overlapping segment pairs the algorithm will return an
+	% intersection point that is at the center of the overlapping region.
+	if any(overlap)
+		ia = i(overlap);
+		ja = j(overlap);
+		% set x0 and y0 to middle of overlapping region.
+		T(3,overlap) = (max(min(x1(ia),x1(ia+1)),min(x2(ja),x2(ja+1))) + ...
+			min(max(x1(ia),x1(ia+1)),max(x2(ja),x2(ja+1)))).'/2;
+		T(4,overlap) = (max(min(y1(ia),y1(ia+1)),min(y2(ja),y2(ja+1))) + ...
+			min(max(y1(ia),y1(ia+1)),max(y2(ja),y2(ja+1)))).'/2;
+		selected = in_range | overlap;
+	else
+		selected = in_range;
+	end
+	xy0 = T(3:4,selected).';
+	
+	% Remove duplicate intersection points.
+	[xy0,index] = unique(xy0,'rows');
+	x0 = xy0(:,1);
+	y0 = xy0(:,2);
+	
+	% Compute how far along each line segment the intersections are.
+	if nargout > 2
+		sel_index = find(selected);
+		sel = sel_index(index);
+		iout = i(sel) + T(1,sel).';
+		jout = j(sel) + T(2,sel).';
+	end
+else % non-robust option
+	for k = 1:n
+		[L,U] = lu(AA(:,:,k));
+		T(:,k) = U\(L\B(:,k));
+	end
+	
+	% Find where t1 and t2 are between 0 and 1 and return the corresponding
+	% x0 and y0 values.
+	in_range = T(1,:) >= 0 & T(2,:) >= 0 & T(1,:) < 1 & T(2,:) < 1;
+	x0 = T(3,in_range).';
+	y0 = T(4,in_range).';
+	
+	% Compute how far along each line segment the intersections are.
+	if nargout > 2
+		iout = i(in_range) + T(1,in_range).';
+		jout = j(in_range) + T(2,in_range).';
+	end
+end
+
+% Plot the results (useful for debugging).
+% plot(x1,y1,x2,y2,x0,y0,'ok');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/mesh3dsurfaceplug2d.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/mesh3dsurfaceplug2d.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/mesh3dsurfaceplug2d.m	(revision 21239)
@@ -0,0 +1,77 @@
+function mh=mh3dsurfaceplug2d(mh,mh2,flags,segments,xsegs,ysegs,varargin)
+%MESH3DSURFACEPLUG2D - plug 2d mesh into a 3D surface mesh
+%
+%   Usage:
+%      mh=mesh3dsurfaceplug2d(mh,mh2);
+%
+
+	%First process options
+	options=pairoptions(varargin{:});
+
+	%Remove the elements that are flagged: 
+	pos=find(flags); 
+	mh.elements(pos,:)=[];
+	mh.numberofelements=size(mh.elements,1);
+
+	%Offset mh2.elements by number of vertices in the 3D structure: 
+	mh2.elements=mh2.elements+mh.numberofvertices;
+	mh2.segments(:,1:2)=mh2.segments(:,1:2)+mh.numberofvertices;
+	mh2.segments(:,3)=mh2.segments(:,3)+mh.numberofelements;
+
+	%The segments of md2 and the outer segments of md are identical. Go into  the elements of 
+	%dmd2 and set them to their md equivalent: 
+	for i=1:length(mh2.segments),
+		node2=mh2.segments(i,1);
+		%this node2 has an equivalent on the segments  of md: 
+		for j=1:length(segments),
+			node1=segments(j,1);
+			if mh2.x(node2-mh.numberofvertices) == xsegs(j) &&  mh2.y(node2-mh.numberofvertices) == ysegs(j),
+				%go into the mesh of md2, and replace by node1.
+				pos=find(mh2.elements==node2); mh2.elements(pos)=node1;
+				segs=mh2.segments(:,1:2); pos=find(segs==node2); segs(pos)=node1; mh2.segments(:,1:2)=segs;
+				break;
+			end
+		end
+	end
+
+	%Do the merge: 
+	mh.elements=[mh.elements;mh2.elements];
+	mh.lat=[mh.lat;mh2.lat];
+	mh.long=[mh.long;mh2.long];
+	mh.segments=[mh.segments;mh2.segments];
+	mh.numberofvertices=length(mh.lat);
+	mh.numberofelements=size(mh.elements,1);
+	
+	%Remove orphans:
+	lat=mh.lat; long=mh.long; 
+	elements=mh.elements; segments=mh.segments;
+	orphan=find(~ismember([1:length(lat)],sort(unique(elements(:)))));
+	for i=1:length(orphan),
+		%disp('WARNING: removing orphans');
+		%get rid of the orphan node i
+		%update lat and long
+		lat=[lat(1:orphan(i)-(i-1)-1); lat(orphan(i)-(i-1)+1:end)];
+		long=[long(1:orphan(i)-(i-1)-1); long(orphan(i)-(i-1)+1:end)];
+		%update elements
+		pos=find(elements>orphan(i)-(i-1));
+		elements(pos)=elements(pos)-1;
+		%update segments
+		pos1=find(segments(:,1)>orphan(i)-(i-1));
+		pos2=find(segments(:,2)>orphan(i)-(i-1));
+		segments(pos1,1)=segments(pos1,1)-1;
+		segments(pos2,2)=segments(pos2,2)-1;
+	end
+	
+	mh.elements=elements;
+	mh.lat=lat;
+	mh.long=long;
+	mh.segments=segments;
+	mh.numberofelements=length(mh.elements);
+	mh.numberofvertices=length(mh.lat);
+
+	%reconstruct x,y and z:
+	R=mh.r(1);
+	mh.x = R .* cosd(mh.lat) .* cosd(mh.long);
+	mh.y = R .* cosd(mh.lat) .* sind(mh.long);
+	mh.z = R .* sind(mh.lat);
+	mh.r=sqrt(mh.x.^2+mh.y.^2+mh.z.^2);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/meshconvert.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/meshconvert.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/meshconvert.m	(revision 21239)
@@ -0,0 +1,41 @@
+function md=meshconvert(md,varargin)
+%CONVERTMESH - convert mesh to bamg mesh
+%
+%   Usage:
+%      md=meshconvert(md);
+%      md=meshconvert(md,index,x,y);
+
+if nargin~=1 & nargin~=4,
+	help meshconvert
+	error('meshconvert error message: bad usage');
+end
+
+if nargin==1,
+	index = md.mesh.elements;
+	x     = md.mesh.x;
+	y     = md.mesh.y;
+else
+	index = varargin{1};
+	x     = varargin{2};
+	y     = varargin{3};
+end
+
+%call Bamg
+[bamgmesh_out bamggeom_out]=BamgConvertMesh(index,x,y);
+
+% plug results onto model
+md.private.bamg          = struct();
+md.private.bamg.mesh     = bamgmesh(bamgmesh_out);
+md.private.bamg.geometry = bamggeom(bamggeom_out);
+md.mesh.x              = bamgmesh_out.Vertices(:,1);
+md.mesh.y              = bamgmesh_out.Vertices(:,2);
+md.mesh.elements       = bamgmesh_out.Triangles(:,1:3);
+md.mesh.edges          = bamgmesh_out.IssmEdges;
+md.mesh.segments       = bamgmesh_out.IssmSegments(:,1:3);
+md.mesh.segmentmarkers = bamgmesh_out.IssmSegments(:,4);
+
+%Fill in rest of fields:
+md.mesh.numberofelements = size(md.mesh.elements,1);
+md.mesh.numberofvertices = length(md.mesh.x);
+md.mesh.numberofedges    = size(md.mesh.edges,1);
+md.mesh.vertexonboundary = zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2)) = 1;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/meshconvert.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/meshconvert.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/meshconvert.py	(revision 21239)
@@ -0,0 +1,52 @@
+import numpy
+from collections import OrderedDict
+from BamgConvertMesh import BamgConvertMesh 
+from mesh2d   import mesh2d
+from bamgmesh import bamgmesh
+from bamggeom import bamggeom
+
+def meshconvert(md,*args):
+	"""
+	CONVERTMESH - convert mesh to bamg mesh
+
+	   Usage:
+	      md=meshconvert(md);
+	      md=meshconvert(md,index,x,y);
+	"""
+
+	if not len(args)==0 and not len(args)==3:
+		raise TypeError("meshconvert error message: bad usage")
+
+	if not len(args):
+		index = md.mesh.elements
+		x     = md.mesh.x
+		y     = md.mesh.y
+	else:
+		index = args[0]
+		x     = args[1]
+		y     = args[2]
+
+	#call Bamg
+	bamgmesh_out,bamggeom_out=BamgConvertMesh(index,x,y)
+
+	# plug results onto model
+	md.private.bamg             = OrderedDict()
+	md.private.bamg['mesh']     = bamgmesh(bamgmesh_out)
+	md.private.bamg['geometry'] = bamggeom(bamggeom_out)
+	md.mesh                     = mesh2d()
+	md.mesh.x                   = bamgmesh_out['Vertices'][:,0].copy()
+	md.mesh.y                   = bamgmesh_out['Vertices'][:,1].copy()
+	md.mesh.elements            = bamgmesh_out['Triangles'][:,0:3].astype(int)
+	md.mesh.edges               = bamgmesh_out['IssmEdges'].astype(int)
+	md.mesh.segments            = bamgmesh_out['IssmSegments'][:,0:3].astype(int)
+	md.mesh.segmentmarkers      = bamgmesh_out['IssmSegments'][:,3].astype(int)
+
+	#Fill in rest of fields:
+	md.mesh.numberofelements   = numpy.size(md.mesh.elements,axis=0)
+	md.mesh.numberofvertices   = numpy.size(md.mesh.x)
+	md.mesh.numberofedges      = numpy.size(md.mesh.edges,axis=0)
+	md.mesh.vertexonboundary   = numpy.zeros(md.mesh.numberofvertices,bool)
+	md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1] = True
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/meshintersect.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/meshintersect.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/meshintersect.m	(revision 21239)
@@ -0,0 +1,22 @@
+function indices=meshintersect(lat,long,lats,longs,varargin)
+%MESHINTERSECT - return indices (into lat and long) of common values between (lat,long) and (lats,longs). 
+%  i.e: lat(index)=lats; long(index)=longs;
+%
+%   Usage:
+%      index=meshintersect(md.mesh.lat,md.mesh.long,mdsmaller.mesh.lat,mdsmaller.mesh.long);
+%      index=meshintersect(md.mesh.lat,md.mesh.long,mdsmaller.mesh.lat,mdsmaller.mesh.long,'tolerance',1e-10); %within a certain tolerance.
+
+
+	%process options: 
+	options=pairoptions(varargin{:});
+
+	%retrieve tolerance: 
+	tolerance=getfieldvalue(options,'tolerance',1e-10);
+
+	%go through lats,longs and find within tolerance, the index of the corresponding value in lat,long: 
+	indices=zeros(length(lats),1);
+	
+	for i=1:length(lats),
+		distance=sqrt((lat-lats(i)).^2+(long-longs(i)).^2);
+		indices(i)=find(distance<tolerance);
+	end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/patchglobe.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/patchglobe.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/patchglobe.m	(revision 21239)
@@ -0,0 +1,93 @@
+function mh=patchglobe(mh,mh2d,varargin)
+
+	%process options: 
+	options=pairoptions(varargin{:});
+
+	%recover basic options:
+	bandwidth=getfieldvalue(options,'bandwidth',100000);
+
+	%some checks on the mesh: 
+	if (isempty(mh.x) | isempty(mh.y) | isempty(mh.z) | isempty(mh.lat) | isempty(mh.long) | isempty(mh.r) ) 
+		error('patchglobe error message: 3D planet mesh has one of the following empty: ''x'',''y'',''z'',''lat'',''long'' or ''r''');
+	end
+	if (isempty(mh2d.x) | isempty(mh2d.y) | isempty(mh2d.lat) | isempty(mh2d.long)) 
+		error('patchglobe error message: 3D planet mesh has one of the following empty: ''x'',''y'',''lat'' or ''long''');
+	end
+
+	%give ourselves a unique temporary directory: 
+	temproot=tempname; mkdir(temproot);
+
+	%align external segments on 2d model: 
+	mh2d.segments=alignsegments(mh2d.segments);
+
+	%figure out domain outline: 
+	meshtodomain(mh2d,[temproot '/Patch.exp']);
+
+	%broaden this domain outline: 
+	expcoarsen([temproot '/PatchBroad.exp'],[temproot '/Patch.exp'],200000);
+	expcontract([temproot '/PatchBroad.exp'],[temproot '/PatchBroad.exp'],-bandwidth);
+
+	%now flag vertices (from mh2d's broad contour that are on the global mesh: do this in the local 2d mesh reference system. 
+	[x,y]=gdaltransform(mh.long,mh.lat,'EPSG:4326',['EPSG:' num2str(mh2d.epsg)]);
+	flagsnods=ContourToNodes(x,y,[temproot '/PatchBroad.exp'],1);
+
+	%expand flags to any element that touches the contour: 
+	pos=find(sum(flagsnods(mh.elements),2));
+	flags=zeros(mh.numberofelements,1); flags(pos)=1;
+
+	%need to find the segment enveloppe of these elements:
+	mh.segments=contourenvelope(mh,flags);
+
+	%segments need to be ordered in line: 
+	mh.segments=alignsegments(mh.segments);
+
+	%x,y for segments: 
+	[xsegs,ysegs]=gdaltransform(mh.long(mh.segments(:,1)),mh.lat(mh.segments(:,1)),'EPSG:4326',['EPSG:' num2str(mh2d.epsg)]);
+
+	%create lat,long contour out of these segments:
+	meshtodomain(mh,[temproot '/PatchEnveloppe.exp'],'latlong','on');
+		
+	%get these lat,long transformed to local mesh referencial:
+	env=expread([temproot '/PatchEnveloppe.exp']); 
+	[env.x,env.y]=gdaltransform(env.x,env.y,'EPSG:4326',['EPSG:' num2str(mh2d.epsg)]);
+
+	%now, create domain outine from broad enveloppe and initial mesh 
+	dom=expread([temproot '/Patch.exp']);
+	
+	%close the contours:
+	env(1).x=[env(1).x;env(1).x(1)];
+	env(1).y=[env(1).y;env(1).y(1)];
+	dom(1).x=[dom(1).x;dom(1).x(1)];
+	dom(1).y=[dom(1).y;dom(1).y(1)];
+
+	%flip inner hole: 
+	dom(1).x=flipud(dom(1).x);
+	dom(1).y=flipud(dom(1).y);
+
+	domain(1)=env; 
+	domain(2)=dom;
+	expwrite(domain,[temproot '/PatchBand.exp']);
+
+	%plot mesh: 
+	if  getfieldvalue(options,'plot',0), expdisp([temproot '/PatchBand.exp']); end
+
+	%mesh: 
+	mdb=bamg(model(),'domain',[temproot '/PatchBand.exp'],'MaxCornerAngle',1e-15,'gradation',10000); 
+	mhb=mdb.mesh; clear mdb;
+
+	%double check: 
+	if length(mhb.segments) ~= (length(dom(1).x)+length(env(1).x)-2),
+		%error('band mesh not consistent');
+	end
+
+	%augment patch with band
+	[mhb.long,mhb.lat]=gdaltransform(mhb.x,mhb.y,['EPSG:' num2str(mh2d.epsg)],'EPSG:4326');
+	mh2db=augment2dmesh(mh2d,mhb);
+
+	%merge inner band and earth: 
+	mh=mesh3dsurfaceplug2d(mh,mh2db,flags,mh.segments,xsegs,ysegs);
+
+	%erase temporary directory: 
+	system(['rm -rf ' temproot]);
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/planet/gmsh/gmshplanet.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/planet/gmsh/gmshplanet.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/planet/gmsh/gmshplanet.m	(revision 21239)
@@ -0,0 +1,168 @@
+function mesh=gmshplanet(varargin)
+%GMSHPLANET - mesh generation for a sphere. Very specific code for gmsh. From demo/sphere.geo
+%
+%   Available options (for more details see ISSM website http://issm.jpl.nasa.gov/):
+%
+%   - radius:             radius of the planet in km
+%   - resolution:         resolution in km
+%   - refine:             provide mesh
+%   - refinemetric:       mesh quantity to specify resolution
+%
+%   Returns 'mesh3dsurface' type mesh
+%
+%   Examples:
+%      md.mesh=gmshplanet('radius',6000,'resolution',100);
+%      md.mesh=gmshplanet('radius',6000,'resolution',100);
+
+	%process options
+	options=pairoptions(varargin{:});
+	options=deleteduplicates(options,1);
+
+	%recover parameters:
+	radius=getfieldvalue(options,'radius')*1000;
+	resolution=getfieldvalue(options,'resolution')*1000;
+
+	%initialize mesh: 
+	mesh=mesh3dsurface;
+
+	%create .geo file:  {{{
+	fid=fopen('sphere.geo','w');
+
+	fprintf(fid,'Mesh.Algorithm = 1;\n');
+	if  exist(options,'refine'),
+		fprintf(fid,'Mesh.Algorithm = 7;\n');
+		fprintf(fid,'Mesh.CharacteristicLengthFromPoints= 0;\n');
+		fprintf(fid,'Mesh.SmoothRatio= 3;\n');
+		fprintf(fid,'Mesh.RemeshAlgorithm= 1;\n');
+	end
+	fprintf(fid,'resolution=%g;\n',resolution);
+	fprintf(fid,'radius=%g;\n',radius);
+	fprintf(fid,'Point(1) = {0.0,0.0,0.0,resolution};\n');
+	fprintf(fid,'Point(2) = {radius,0.0,0.0,resolution};\n');
+	fprintf(fid,'Point(3) = {0,radius,0.0,resolution};\n');
+	fprintf(fid,'Circle(1) = {2,1,3};\n');
+	fprintf(fid,'Point(4) = {-radius,0,0.0,resolution};\n');
+	fprintf(fid,'Point(5) = {0,-radius,0.0,resolution};\n');
+	fprintf(fid,'Circle(2) = {3,1,4};\n');
+	fprintf(fid,'Circle(3) = {4,1,5};\n');
+	fprintf(fid,'Circle(4) = {5,1,2};\n');
+	fprintf(fid,'Point(6) = {0,0,-radius,resolution};\n');
+	fprintf(fid,'Point(7) = {0,0,radius,resolution};\n');
+	fprintf(fid,'Circle(5) = {3,1,6};\n');
+	fprintf(fid,'Circle(6) = {6,1,5};\n');
+	fprintf(fid,'Circle(7) = {5,1,7};\n');
+	fprintf(fid,'Circle(8) = {7,1,3};\n');
+	fprintf(fid,'Circle(9) = {2,1,7};\n');
+	fprintf(fid,'Circle(10) = {7,1,4};\n');
+	fprintf(fid,'Circle(11) = {4,1,6};\n');
+	fprintf(fid,'Circle(12) = {6,1,2};\n');
+	fprintf(fid,'Line Loop(13) = {2,8,-10};\n');
+	fprintf(fid,'Ruled Surface(14) = {13};\n');
+	fprintf(fid,'Line Loop(15) = {10,3,7};\n');
+	fprintf(fid,'Ruled Surface(16) = {15};\n');
+	fprintf(fid,'Line Loop(17) = {-8,-9,1};\n');
+	fprintf(fid,'Ruled Surface(18) = {17};\n');
+	fprintf(fid,'Line Loop(19) = {-11,-2,5};\n');
+	fprintf(fid,'Ruled Surface(20) = {19};\n');
+	fprintf(fid,'Line Loop(21) = {-5,-12,-1};\n');
+	fprintf(fid,'Ruled Surface(22) = {21};\n');
+	fprintf(fid,'Line Loop(23) = {-3,11,6};\n');
+	fprintf(fid,'Ruled Surface(24) = {23};\n');
+	fprintf(fid,'Line Loop(25) = {-7,4,9};\n');
+	fprintf(fid,'Ruled Surface(26) = {25};\n');
+	fprintf(fid,'Line Loop(27) = {-4,12,-6};\n');
+	fprintf(fid,'Ruled Surface(28) = {27};\n');
+	fprintf(fid,'Surface Loop(29) = {28,26,16,14,20,24,22,18};\n');
+	fprintf(fid,'Volume(30) = {29};\n');
+	fprintf(fid,'Physical Surface(1) = {28,26,16,14,20,24,22,18};\n');
+	fprintf(fid,'Physical Volume(2) = 30;\n');
+	fclose(fid);
+	%}}}
+
+	if  exist(options,'refine'),
+		meshini=getfieldvalue(options,'refine');
+		metric=getfieldvalue(options,'refinemetric');
+
+		%create .pos file with existing mesh and refining metric:  {{{
+		fid=fopen('sphere.pos','w');
+
+		fprintf(fid,'View "background mesh" {\n');
+		for i=1:meshini.numberofelements,
+			fprintf(fid,'ST(%g,%g,%g,%g,%g,%g,%g,%g,%g){%g,%g,%g};\n',...
+			meshini.x(meshini.elements(i,1)), meshini.y(meshini.elements(i,1)), meshini.z(meshini.elements(i,1)),...
+			meshini.x(meshini.elements(i,2)), meshini.y(meshini.elements(i,2)), meshini.z(meshini.elements(i,2)),...
+			meshini.x(meshini.elements(i,3)), meshini.y(meshini.elements(i,3)), meshini.z(meshini.elements(i,3)),...
+			metric(meshini.elements(i,1)), metric(meshini.elements(i,2)), metric(meshini.elements(i,3))...
+			);
+		end
+		fprintf(fid,'};\n');
+		
+		fclose(fid);
+		% }}}
+	end
+
+	%call gmsh
+	if  exist(options,'refine'),
+		eval(['!gmsh -tol 1e-8 -2 sphere.geo -bgm sphere.pos']);
+	else
+		%call gmsh
+		eval(['!gmsh -tol 1e-8 -2 sphere.geo']);
+	end
+
+	%import mesh:  {{{
+	fid=fopen('sphere.msh','r');
+
+	%Get Mesh format
+	A=fscanf(fid,'%s',1);
+	if ~strcmp(A,'$MeshFormat'),
+		error(['Expecting $MeshFormat (' A ')']);
+	end
+
+	A=fscanf(fid,'%f %i %i',[1 3]);
+	A=fscanf(fid,'%s',1);
+	if ~strcmp(A,'$EndMeshFormat'),
+		error(['Expecting $EndMeshFormat (' A ')']);
+	end
+
+	%Nodes
+	A=fscanf(fid,'%s',1);
+	if ~strcmp(A,'$Nodes'),
+		error(['Expecting $Nodes (' A ')']);
+	end
+
+	mesh.numberofvertices=fscanf(fid,'%i',1);
+	A=fscanf(fid,'%i %f %f %f',[4 mesh.numberofvertices]);
+	mesh.x = A(2,:)';
+	mesh.y = A(3,:)';
+	mesh.z = A(4,:)';
+
+	A=fscanf(fid,'%s',1);
+	if ~strcmp(A,'$EndNodes'),
+		error(['Expecting $EndNodes (' A ')']);
+	end
+
+	%Elements
+	A=fscanf(fid,'%s',1);
+	if ~strcmp(A,'$Elements'),
+		error(['Expecting $Elements (' A ')']);
+	end
+	mesh.numberofelements=fscanf(fid,'%i',1);
+	A=fscanf(fid,'%i %i %i %i %i %i %i %i',[8 mesh.numberofelements]);
+	mesh.elements=A(6:8,:)'; 
+	A=fscanf(fid,'%s',1);
+	if ~strcmp(A,'$EndElements'),
+		error(['Expecting $EndElements (' A ')']);
+	end
+	fclose(fid); 
+	%}}}
+
+	%figure out other fields in mesh3dsurface: 
+	mesh.r=sqrt(mesh.x.^2+mesh.y.^2+mesh.z.^2);
+	mesh.lat = asin(mesh.z./mesh.r)/pi*180;
+	mesh.long = atan2(mesh.y,mesh.x)/pi*180;
+
+	%erase files: 
+	eval(['!rm -rf sphere.geo sphere.msh sphere.pos']);
+
+	%return mesh: 
+	return;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/planet/gmsh/gmshplanet.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/planet/gmsh/gmshplanet.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/planet/gmsh/gmshplanet.py	(revision 21239)
@@ -0,0 +1,172 @@
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from pairoptions import *
+from mesh3dsurface import *
+import subprocess
+
+def gmshplanet(*varargin):
+#GMSHPLANET - mesh generation for a sphere. Very specific code for gmsh. From demo/sphere.geo
+#
+#   Available options (for more details see ISSM website http://issm.jpl.nasa.gov/):
+#
+#   - radius:             radius of the planet in km
+#   - resolution:         resolution in km
+#   - refine:             provide mesh
+#   - refinemetric:       mesh quantity to specify resolution
+#
+#   Returns 'mesh3dsurface' type mesh
+#
+#   Examples:
+#      md.mesh=gmshplanet('radius',6000,'resolution',100);
+#      md.mesh=gmshplanet('radius',6000,'resolution',100);
+
+	#process options
+	options=pairoptions(*varargin)
+	#options=deleteduplicates(options,1)
+
+	#recover parameters:
+	radius=options.getfieldvalue('radius')*1000
+	resolution=options.getfieldvalue('resolution')*1000
+
+	#initialize mesh: 
+	mesh=mesh3dsurface()
+
+	#create .geo file:  {{{
+	fid=open('sphere.geo','w')
+
+	fid.write('Mesh.Algorithm = 1;\n')
+	if options.exist('refine'):
+		fid.write('Mesh.Algorithm = 7;\n')
+		fid.write('Mesh.CharacteristicLengthFromPoints= 0;\n')
+		fid.write('Mesh.SmoothRatio= 3;\n')
+		fid.write('Mesh.RemeshAlgorithm= 1;\n')
+	fid.write('resolution=%g;\n'%resolution)
+	fid.write('radius=%g;\n'%radius)
+	fid.write('Point(1) = {0.0,0.0,0.0,resolution};\n')
+	fid.write('Point(2) = {radius,0.0,0.0,resolution};\n')
+	fid.write('Point(3) = {0,radius,0.0,resolution};\n')
+	fid.write('Circle(1) = {2,1,3};\n')
+	fid.write('Point(4) = {-radius,0,0.0,resolution};\n')
+	fid.write('Point(5) = {0,-radius,0.0,resolution};\n')
+	fid.write('Circle(2) = {3,1,4};\n')
+	fid.write('Circle(3) = {4,1,5};\n')
+	fid.write('Circle(4) = {5,1,2};\n')
+	fid.write('Point(6) = {0,0,-radius,resolution};\n')
+	fid.write('Point(7) = {0,0,radius,resolution};\n')
+	fid.write('Circle(5) = {3,1,6};\n')
+	fid.write('Circle(6) = {6,1,5};\n')
+	fid.write('Circle(7) = {5,1,7};\n')
+	fid.write('Circle(8) = {7,1,3};\n')
+	fid.write('Circle(9) = {2,1,7};\n')
+	fid.write('Circle(10) = {7,1,4};\n')
+	fid.write('Circle(11) = {4,1,6};\n')
+	fid.write('Circle(12) = {6,1,2};\n')
+	fid.write('Line Loop(13) = {2,8,-10};\n')
+	fid.write('Ruled Surface(14) = {13};\n')
+	fid.write('Line Loop(15) = {10,3,7};\n')
+	fid.write('Ruled Surface(16) = {15};\n')
+	fid.write('Line Loop(17) = {-8,-9,1};\n')
+	fid.write('Ruled Surface(18) = {17};\n')
+	fid.write('Line Loop(19) = {-11,-2,5};\n')
+	fid.write('Ruled Surface(20) = {19};\n')
+	fid.write('Line Loop(21) = {-5,-12,-1};\n')
+	fid.write('Ruled Surface(22) = {21};\n')
+	fid.write('Line Loop(23) = {-3,11,6};\n')
+	fid.write('Ruled Surface(24) = {23};\n')
+	fid.write('Line Loop(25) = {-7,4,9};\n')
+	fid.write('Ruled Surface(26) = {25};\n')
+	fid.write('Line Loop(27) = {-4,12,-6};\n')
+	fid.write('Ruled Surface(28) = {27};\n')
+	fid.write('Surface Loop(29) = {28,26,16,14,20,24,22,18};\n')
+	fid.write('Volume(30) = {29};\n')
+	fid.write('Physical Surface(1) = {28,26,16,14,20,24,22,18};\n')
+	fid.write('Physical Volume(2) = 30;\n')
+	fid.close()
+	#}}}
+
+	if options.exist('refine'):
+		meshini=options.getfieldvalue('refine')
+		metric=options.getfieldvalue('refinemetric')
+
+		#create .pos file with existing mesh and refining metric:  {{{
+		fid=open('sphere.pos','w')
+
+		fid.write('View "background mesh" [;\n')
+		for i in range(meshini.numberofelements):
+			fid.write('ST(%g,%g,%g,%g,%g,%g,%g,%g,%g)[%g,%g,%g];\n',\
+			meshini.x(meshini.elements(i,0)), meshini.y(meshini.elements(i,0)), meshini.z(meshini.elements(i,0)),\
+			meshini.x(meshini.elements(i,1)), meshini.y(meshini.elements(i,1)), meshini.z(meshini.elements(i,1)),\
+			meshini.x(meshini.elements(i,2)), meshini.y(meshini.elements(i,2)), meshini.z(meshini.elements(i,2)),\
+			metric(meshini.elements(i,0)), metric(meshini.elements(i,1)), metric(meshini.elements(i,2))\
+			)
+		fid.write('];\n')
+		
+		fid.close()
+		# }}}
+
+	#call gmsh
+	if options.exist('refine'):
+		subprocess.call('gmsh -tol 1e-8 -2 sphere.geo -bgm sphere.pos',shell=True)
+	else:
+		#call gmsh
+		subprocess.call('gmsh -tol 1e-8 -2 sphere.geo',shell=True)
+
+	#import mesh:  {{{
+	fid=open('sphere.msh','r')
+
+	#Get Mesh format
+	A=fid.readline().strip()
+	if not strcmp(A,'$MeshFormat'):
+		raise RuntimeError(['Expecting $MeshFormat (', A, ')'])
+
+	A=fid.readline().split()
+	A=fid.readline().strip()
+	if not strcmp(A,'$EndMeshFormat'):
+		raise RuntimeError(['Expecting $EndMeshFormat (', A, ')'])
+
+	#Nodes
+	A=fid.readline().strip()
+	if not strcmp(A,'$Nodes'):
+		raise RuntimeError(['Expecting $Nodes (', A, ')'])
+
+	mesh.numberofvertices=int(fid.readline().strip())
+	mesh.x=empty(mesh.numberofvertices)
+	mesh.y=empty(mesh.numberofvertices)
+	mesh.z=empty(mesh.numberofvertices)
+	for i in range(mesh.numberofvertices):
+		A=fid.readline().split()
+		mesh.x[i]=float(A[1])
+		mesh.y[i]=float(A[2])
+		mesh.z[i]=float(A[3])
+
+	A=fid.readline().strip()
+	if not strcmp(A,'$EndNodes'):
+		raise RuntimeError(['Expecting $EndNodes (', A, ')'])
+
+	#Elements
+	A=fid.readline().strip()
+	if not strcmp(A,'$Elements'):
+		raise RuntimeError(['Expecting $Elements (', A, ')'])
+	mesh.numberofelements=int(fid.readline().strip())
+	mesh.elements=empty([mesh.numberofelements,3])
+	for i in range(mesh.numberofelements):
+		A=fid.readline().split()
+		mesh.elements[i]=[int(A[5]),int(A[6]),int(A[7])]
+	mesh.elements=mesh.elements.astype(int)
+	A=fid.readline().strip()
+	if not strcmp(A,'$EndElements'):
+		raise RuntimeError(['Expecting $EndElements (', A, ')'])
+	fid.close() 
+	#}}}
+
+	#figure out other fields in mesh3dsurface: 
+	mesh.r=sqrt(mesh.x**2+mesh.y**2+mesh.z**2)
+	mesh.lat = arcsin(mesh.z/mesh.r)/pi*180
+	mesh.long = arctan2(mesh.y,mesh.x)/pi*180
+
+	#erase files: 
+	subprocess.call('rm -rf sphere.geo sphere.msh sphere.pos',shell=True)
+
+	#return mesh: 
+	return mesh
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/planet/spheretri/mesh_refine_tri4.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/planet/spheretri/mesh_refine_tri4.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/planet/spheretri/mesh_refine_tri4.m	(revision 21239)
@@ -0,0 +1,143 @@
+function [ FV ] = mesh_refine_tri4(FV)
+
+% mesh_refine_tri4 - creates 4 triangle from each triangle of a mesh
+%
+% [ FV ] = mesh_refine_tri4( FV )
+%
+% FV.vertices   - mesh vertices (Nx3 matrix)
+% FV.faces      - faces with indices into 3 rows
+%                 of FV.vertices (Mx3 matrix)
+% 
+% For each face, 3 new vertices are created at the 
+% triangle edge midpoints.  Each face is divided into 4
+% faces and returned in FV.
+%
+%        B
+%       /\
+%      /  \
+%    a/____\b       Construct new triangles
+%    /\    /\       [A,a,c]
+%   /  \  /  \      [a,B,b]
+%  /____\/____\     [c,b,C]
+% A	     c	   C    [a,b,c]
+% 
+% It is assumed that the vertices are listed in clockwise order in
+% FV.faces (A,B,C above), as viewed from the outside in a RHS coordinate
+% system.
+% 
+% See also: mesh_refine, sphere_tri, sphere_project
+% 
+
+% ---this method is not implemented, but the idea here remains...
+% This can be done until some minimal distance (D) of the mean 
+% distance between vertices of all triangles is achieved.  If
+% no D argument is given, the function refines the mesh once.
+% Alternatively, it could be done until some minimum mean 
+% area of faces is achieved.  As is, it just refines once.
+
+% $Revision: 1.1 $ $Date: 2004/11/12 01:32:35 $
+
+% Licence:  GNU GPL, no implied or express warranties
+% History:  05/2002, Darren.Weber_at_radiology.ucsf.edu, created
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+tic;
+fprintf('...refining mesh (tri4)...')
+
+% NOTE
+% The centroid is located one third of the way from each vertex to 
+% the midpoint of the opposite side. Each median divides the triangle 
+% into two equal areas; all the medians together divide it into six 
+% equal parts, and the lines from the median point to the vertices 
+% divide the whole into three equivalent triangles.
+
+% Each input triangle with vertices labelled [A,B,C] as shown
+% below will be turned into four new triangles:
+%
+% Make new midpoints
+% a = (A+B)/2
+% b = (B+C)/2
+% c = (C+A)/2
+%
+%        B
+%       /\
+%      /  \
+%    a/____\b       Construct new triangles
+%    /\    /\       [A,a,c]
+%   /  \  /  \      [a,B,b]
+%  /____\/____\     [c,b,C]
+% A	     c	   C    [a,b,c]
+%
+
+% Initialise a new vertices and faces matrix
+Nvert = size(FV.vertices,1);
+Nface = size(FV.faces,1);
+V2 = zeros(Nface*3,3);
+F2 = zeros(Nface*4,3);
+
+for f = 1:Nface,
+
+    % Get the triangle vertex indices
+    NA = FV.faces(f,1);
+    NB = FV.faces(f,2);
+    NC = FV.faces(f,3);
+
+    % Get the triangle vertex coordinates
+    A = FV.vertices(NA,:);
+    B = FV.vertices(NB,:);
+    C = FV.vertices(NC,:);
+
+    % Now find the midpoints between vertices
+    a = (A + B) ./ 2;
+    b = (B + C) ./ 2;
+    c = (C + A) ./ 2;
+
+    % Find the length of each median
+    %A2blen = sqrt ( sum( (A - b).^2, 2 ) );
+    %B2clen = sqrt ( sum( (B - c).^2, 2 ) );
+    %C2alen = sqrt ( sum( (C - a).^2, 2 ) );
+
+    % Store the midpoint vertices, while
+    % checking if midpoint vertex already exists
+    [FV, Na] = mesh_find_vertex(FV,a);
+    [FV, Nb] = mesh_find_vertex(FV,b);
+    [FV, Nc] = mesh_find_vertex(FV,c);
+
+    % Create new faces with orig vertices plus midpoints
+    F2(f*4-3,:) = [ NA, Na, Nc ];
+    F2(f*4-2,:) = [ Na, NB, Nb ];
+    F2(f*4-1,:) = [ Nc, Nb, NC ];
+    F2(f*4-0,:) = [ Na, Nb, Nc ];
+
+end
+
+% Replace the faces matrix
+FV.faces = F2;
+
+t=toc; fprintf('done (%5.2f sec)\n',t);
+
+return
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function [FV, N] = mesh_find_vertex(FV,vertex)
+
+    Vn = size(FV.vertices,1);
+    Va = repmat(vertex,Vn,1);
+    Vexist = find( FV.vertices(:,1) == Va(:,1) & ...
+                   FV.vertices(:,2) == Va(:,2) & ...
+                   FV.vertices(:,3) == Va(:,3) );
+    if Vexist,
+        if size(Vexist) == [1,1],
+            N = Vexist;
+        else,
+            msg = sprintf('replicated vertices');
+            error(msg);
+        end
+    else
+        FV.vertices(end+1,:) = vertex;
+        N = size(FV.vertices,1);
+    end
+
+return
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/planet/spheretri/planettrimesh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/planet/spheretri/planettrimesh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/planet/spheretri/planettrimesh.m	(revision 21239)
@@ -0,0 +1,19 @@
+function md=planettrimesh(md,shape,radius,refinement)
+%PLANETTRIMESH: build 2d shell mesh
+%
+% Usage: md=planettrimesh(md,shape,radius,refinement)
+%
+
+results = sphere_tri(shape,refinement,radius);
+md.mesh=mesh3dsurface(); %???
+md.mesh.x=results.vertices(:,1);
+md.mesh.y=results.vertices(:,2);
+md.mesh.z=results.vertices(:,3);
+md.mesh.elements=results.faces;
+
+md.mesh.r=sqrt(md.mesh.x.^2+md.mesh.y.^2+md.mesh.z.^2);
+md.mesh.lat=acos(md.mesh.z./md.mesh.r);
+md.mesh.long=atan2(md.mesh.y,md.mesh.x);
+
+md.mesh.numberofvertices=length(md.mesh.x);
+md.mesh.numberofelements=size(md.mesh.elements,1);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/planet/spheretri/sphere_project.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/planet/spheretri/sphere_project.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/planet/spheretri/sphere_project.m	(revision 21239)
@@ -0,0 +1,65 @@
+function V = sphere_project(v,r,c)
+
+% sphere_project - project point X,Y,Z to the surface of sphere radius r
+% 
+% V = sphere_project(v,r,c)
+% 
+% Cartesian inputs:
+% v is the vertex matrix, Nx3 (XYZ)
+% r is the sphere radius, 1x1 (default 1)
+% c is the sphere centroid, 1x3 (default 0,0,0)
+%
+% XYZ are converted to spherical coordinates and their radius is
+% adjusted according to r, from c toward XYZ (defined with theta,phi)
+% 
+% V is returned as Cartesian 3D coordinates
+% 
+
+% $Revision: 1.1 $ $Date: 2004/11/12 01:32:36 $
+
+% Licence:  GNU GPL, no implied or express warranties
+% History:  06/2002, Darren.Weber_at_radiology.ucsf.edu, created
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+if ~exist('v','var'),
+    msg = sprintf('SPHERE_PROJECT: No input vertices (X,Y,Z)\n');
+    error(msg);
+end
+
+X = v(:,1);
+Y = v(:,2);
+Z = v(:,3);
+
+if ~exist('c','var'),
+    xo = 0;
+    yo = 0;
+    zo = 0;
+else
+    xo = c(1);
+    yo = c(2);
+    zo = c(3);
+end
+
+if ~exist('r','var'), r = 1; end
+
+% alternate method is to use unit vector of V
+% [ n = 'magnitude(V)'; unitV = V ./ n; ]
+% to change the radius, multiply the unitV
+% by the radius required.  This avoids the
+% use of arctan functions, which have branches.
+
+% Convert Cartesian X,Y,Z to spherical (radians)
+theta = atan2( (Y-yo), (X-xo) );
+phi   = atan2( sqrt( (X-xo).^2 + (Y-yo).^2 ), (Z-zo) );
+% do not calc: r = sqrt( (X-xo).^2 + (Y-yo).^2 + (Z-zo).^2);
+
+%   Recalculate X,Y,Z for constant r, given theta & phi.
+R = ones(size(phi)) * r;
+x = R .* sin(phi) .* cos(theta);
+y = R .* sin(phi) .* sin(theta);
+z = R .* cos(phi);
+
+V = [x y z];
+
+return
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/planet/spheretri/sphere_tri.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/planet/spheretri/sphere_tri.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/planet/spheretri/sphere_tri.m	(revision 21239)
@@ -0,0 +1,200 @@
+function [FV] = sphere_tri(shape,maxlevel,r,winding)
+
+% sphere_tri - generate a triangle mesh approximating a sphere
+% 
+% Usage: FV = sphere_tri(shape,Nrecurse,r,winding)
+% 
+%   shape is a string, either of the following:
+%   'ico'   starts with icosahedron (most even, default)
+%   'oct'   starts with octahedron
+%   'tetra' starts with tetrahedron (least even)
+%
+%   Nrecurse is int >= 0, setting the recursions (default 0)
+%
+%   r is the radius of the sphere (default 1)
+%
+%   winding is 0 for clockwise, 1 for counterclockwise (default 0).  The
+%   matlab patch command gives outward surface normals for clockwise
+%   order of vertices in the faces (viewed from outside the surface).
+%
+%   FV has fields FV.vertices and FV.faces.  The vertices 
+%   are listed in clockwise order in FV.faces, as viewed 
+%   from the outside in a RHS coordinate system.
+% 
+% The function uses recursive subdivision.  The first
+% approximation is an platonic solid, either an  icosahedron,
+% octahedron or a tetrahedron.  Each level of refinement 
+% subdivides each triangle face by a factor of 4 (see also 
+% mesh_refine).  At each refinement, the vertices are 
+% projected to the sphere surface (see sphere_project).
+% 
+% A recursion level of 3 or 4 is a good sphere surface, if
+% gouraud shading is used for rendering.
+% 
+% The returned struct can be used in the patch command, eg:
+% 
+% % create and plot, vertices: [2562x3] and faces: [5120x3]
+% FV = sphere_tri('ico',4,1);
+% lighting phong; shading interp; figure;
+% patch('vertices',FV.vertices,'faces',FV.faces,...
+%       'facecolor',[1 0 0],'edgecolor',[.2 .2 .6]);
+% axis off; camlight infinite; camproj('perspective');
+% 
+% See also: mesh_refine, sphere_project
+%
+
+% $Revision: 1.2 $ $Date: 2005/07/20 23:07:03 $
+
+% Licence:  GNU GPL, no implied or express warranties
+% Jon Leech (leech @ cs.unc.edu) 3/24/89
+% icosahedral code added by Jim Buddenhagen (jb1556@daditz.sbc.com) 5/93
+% 06/2002, adapted from c to matlab by Darren.Weber_at_radiology.ucsf.edu
+% 05/2004, reorder of the faces for the 'ico' surface so they are indeed
+% clockwise!  Now the surface normals are directed outward.  Also reset the
+% default recursions to zero, so we can get out just the platonic solids.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+eegversion = '$Revision: 1.2 $';
+fprintf('SPHERE_TRI [v %s]\n',eegversion(11:15)); tic
+
+if ~exist('shape','var') || isempty(shape),
+    shape = 'ico';
+end
+fprintf('...creating sphere tesselation based on %s\n',shape);
+
+% default maximum subdivision level
+if ~exist('maxlevel','var') || isempty(maxlevel) || maxlevel < 0,
+    maxlevel = 0;
+end
+
+% default radius
+if ~exist('r','var') || isempty(r),
+    r = 1;
+end
+
+if ~exist('winding','var') || isempty(winding),
+    winding = 0;
+end
+
+% -----------------
+% define the starting shapes
+
+shape = lower(shape);
+
+switch shape,
+case 'tetra',
+
+    % Vertices of a tetrahedron
+    sqrt_3 = 0.5773502692;
+
+    tetra.v = [  sqrt_3,  sqrt_3,  sqrt_3 ;   % +X, +Y, +Z  - PPP
+                -sqrt_3, -sqrt_3,  sqrt_3 ;   % -X, -Y, +Z  - MMP
+                -sqrt_3,  sqrt_3, -sqrt_3 ;   % -X, +Y, -Z  - MPM
+                 sqrt_3, -sqrt_3, -sqrt_3 ];  % +X, -Y, -Z  - PMM
+
+    % Structure describing a tetrahedron
+    tetra.f = [ 1, 2, 3;
+                1, 4, 2;
+                3, 2, 4;
+                4, 1, 3 ];
+
+    FV.vertices = tetra.v;
+    FV.faces    = tetra.f;
+
+case 'oct',
+
+    % Six equidistant points lying on the unit sphere
+    oct.v = [  1,  0,  0 ;  %  X
+              -1,  0,  0 ; 	% -X
+               0,  1,  0 ;  %  Y
+               0, -1,  0 ; 	% -Y
+               0,  0,  1 ; 	%  Z
+               0,  0, -1 ];	% -Z
+
+    % Join vertices to create a unit octahedron
+    oct.f = [ 1 5 3 ;    %  X  Z  Y  -  First the top half
+              3 5 2 ;    %  Y  Z -X
+              2 5 4 ;    % -X  Z -Y
+              4 5 1 ;    % -Y  Z  X
+              1 3 6 ;    %  X  Y -Z  -  Now the bottom half
+              3 2 6 ;    %  Y  Z -Z
+              2 4 6 ;    % -X  Z -Z
+              4 1 6 ];   % -Y  Z -Z
+
+    FV.vertices = oct.v;
+    FV.faces    = oct.f;
+
+case 'ico',
+
+    % Twelve vertices of icosahedron on unit sphere
+    tau = 0.8506508084; % t=(1+sqrt(5))/2, tau=t/sqrt(1+t^2)
+    one = 0.5257311121; % one=1/sqrt(1+t^2) , unit sphere
+
+    ico.v( 1,:) = [  tau,  one,    0 ]; % ZA
+    ico.v( 2,:) = [ -tau,  one,    0 ]; % ZB
+    ico.v( 3,:) = [ -tau, -one,    0 ]; % ZC
+    ico.v( 4,:) = [  tau, -one,    0 ]; % ZD
+    ico.v( 5,:) = [  one,   0 ,  tau ]; % YA
+    ico.v( 6,:) = [  one,   0 , -tau ]; % YB
+    ico.v( 7,:) = [ -one,   0 , -tau ]; % YC
+    ico.v( 8,:) = [ -one,   0 ,  tau ]; % YD
+    ico.v( 9,:) = [   0 ,  tau,  one ]; % XA
+    ico.v(10,:) = [   0 , -tau,  one ]; % XB
+    ico.v(11,:) = [   0 , -tau, -one ]; % XC
+    ico.v(12,:) = [   0 ,  tau, -one ]; % XD
+
+    % Structure for unit icosahedron
+    ico.f = [  5,  8,  9 ;
+               5, 10,  8 ;
+               6, 12,  7 ;
+               6,  7, 11 ;
+               1,  4,  5 ;
+               1,  6,  4 ;
+               3,  2,  8 ;
+               3,  7,  2 ;
+               9, 12,  1 ;
+               9,  2, 12 ;
+              10,  4, 11 ;
+              10, 11,  3 ;
+               9,  1,  5 ;
+              12,  6,  1 ;
+               5,  4, 10 ;
+               6, 11,  4 ;
+               8,  2,  9 ;
+               7, 12,  2 ;
+               8, 10,  3 ;
+               7,  3, 11 ];
+
+    FV.vertices = ico.v;
+    FV.faces    = ico.f;
+end
+
+% -----------------
+% refine the starting shapes with subdivisions
+if maxlevel,
+
+    % Subdivide each starting triangle (maxlevel) times
+    for level = 1:maxlevel,
+
+        % Subdivide each triangle and normalize the new points thus
+        % generated to lie on the surface of a sphere radius r.
+        FV = mesh_refine_tri4(FV);
+        FV.vertices = sphere_project(FV.vertices,r);
+
+        % An alternative might be to define a min distance
+        % between vertices and recurse or use fminsearch
+
+    end
+end
+
+if winding,
+    fprintf('...returning counterclockwise vertex order (viewed from outside)\n');
+    FV.faces = FV.faces(:,[1 3 2]);
+else
+    fprintf('...returning clockwise vertex order (viewed from outside)\n');
+end
+
+t=toc; fprintf('...done (%6.2f sec)\n\n',t);
+
+return
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshaddrifts.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshaddrifts.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshaddrifts.m	(revision 21239)
@@ -0,0 +1,85 @@
+function md=meshaddrifts(md,riftname)
+%MESHADDRIFTS - add rifts to a preloaded mesh (typically, an argus mesh)
+%
+%   Usage:
+%      md=meshaddrifts(md,riftname);
+%
+%        where md is a model with a preexisting mesh, and riftname is the name of an .exp file.
+%        The format of the riftname file is as follows: a list of pairs of closed and open contours. 
+%        The closed contour defines the envelop of the rift, the open contour that follows in the 
+%        file defines the rift. The density of the rift should be chosen carefully in the file, as it 
+%        will be used to define the rift contour density of the mesh. The open contour density will 
+%        be preserved. There can be as many pairs of closed contour and rift contour as wished.
+
+%read rift: 
+domains=expread(riftname,1);
+contours=domains(1:2:end);
+rifts=domains(2:2:end);
+
+%now loop over rifts: 
+for rift_i=1:length(rifts),
+
+	%refine rift to desired resolution: 
+	contour=contours(rift_i);
+	rift=rifts(rift_i);
+
+	delete('Meshaddrifts.Rift.exp');
+	expwrite(rift,'Meshaddrifts.Rift.Coarse.exp');
+	expcoarsen('Meshaddrifts.Rift.exp','Meshaddrifts.Rift.Coarse.exp',rift.density);
+	delete('Meshaddrifts.Rift.Coarse.exp');
+
+	%extract model:
+	expwrite(contour,'Meshaddrifts.Contour.exp');
+	md2=modelextract(md,'Meshaddrifts.Contour.exp');
+
+	%create domain of md2 model: 
+	md2.mesh.segments=contourenvelope(md2.mesh,'Meshaddrifts.Contour.exp');
+	domain_index=md2.mesh.segments(1,1:2);
+	while (domain_index(end)~=domain_index(1)),
+		pos=find(md2.mesh.segments(:,1)==domain_index(end));
+		domain_index(end+1)=md2.mesh.segments(pos,2);
+	end
+
+	domain.x=md2.mesh.x(domain_index);
+	domain.y=md2.mesh.y(domain_index);
+	domain.name='Meshaddrifts.Domain.exp';
+	domain.density=1;
+	expwrite(domain,'Meshaddrifts.Domain.exp');
+
+	%unloop domain index: used for later.
+	domain_index=domain_index(1:end-1);
+
+	%remesh md2 using new domain outline, and rift profile: 
+	md2=meshnodensity(md2,'Meshaddrifts.Domain.exp','Meshaddrifts.Rift.exp');
+	md2=meshprocessrifts(md2);
+
+	%plug md2 mesh into md mesh: 
+	[md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z,md.mesh.numberofelements,md.mesh.numberofvertices,elconv,nodeconv,elconv2,nodeconv2]=meshplug(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z,...
+								md2.mesh.elements,md2.mesh.x,md2.mesh.y,md2.mesh.z,md2.extractednodes,md2.extractedelements,domain_index);
+
+	%update md2 rifts using elconv and nodeconv, and plug them into md: 
+	md2.rifts=updateriftindexing(md2.rifts,elconv2,nodeconv2);
+
+	for i=1:md.rifts.numrifts,
+		md.rifts.riftstruct(i)=updateriftindexing(md.rifts.riftstruct(i),elconv,nodeconv);
+	end
+
+	if md.rifts.numrifts==0,
+		md.rifts.riftstruct=md2.rifts;
+		md.rifts.numrifts=1;
+	else
+		md.rifts.riftstruct(end+1,1)=md2.rifts;
+		md.rifts.numrifts=md.rifts.numrifts+1;
+	end
+
+	md.mesh.segments(:,1:2)=nodeconv(md.mesh.segments(:,1:2));
+	md.mesh.segments(:,3)=elconv(md.mesh.segments(:,3));
+
+end
+
+%finish up "a la" mesh.h
+md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+
+%Now, build the connectivity tables for this mesh.
+md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshplug.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshplug.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshplug.m	(revision 21239)
@@ -0,0 +1,85 @@
+function [elements,x,y,z,numberofelements,numberofnodes,elconv,nodeconv,elconv2,nodeconv2]=meshplug(elements,x,y,z,elements2,x2,y2,z2,extractednodes,extractedelements,domain)
+%MESHPLUG - embed mesh into another one
+%     See also meshaddrifts
+
+%initialize elconv,nodeconv conversion tables from md mesh to new md mesh
+elconv=1:size(elements,1); elconv=elconv';
+nodeconv=1:size(x,1); nodeconv=nodeconv';
+
+%take away old elements in area of interest: 
+elements(extractedelements,:)=[];
+element_offset=size(elements,1);
+
+%update elconv after having extracted the area of interest elements
+temp_elconv=elconv; temp_elconv(extractedelements)=[];
+temp_elconvnum=1:length(temp_elconv);
+elconv(temp_elconv)=temp_elconvnum;
+elconv(extractedelements)=NaN;
+
+%initialize elconv2 and nodeconv2, conversion tables from md2 mesh to new md mesh
+elconv2=1:size(elements2,1);elconv2=elconv2'+element_offset;
+nodeconv2=(size(x,1)+1):(size(x,1)+size(x2,1)); nodeconv2=nodeconv2';
+
+extractednodes_minusborder=extractednodes;
+extractednodes_minusborder(domain)=[];
+
+x(extractednodes_minusborder)=NaN;
+y(extractednodes_minusborder)=NaN;
+
+%now, plug md2 mesh: 
+
+%first, offset all ids of md2 mesh
+elements2=elements2+length(x);
+
+%NaN border nodes in second mesh
+x2(1:length(domain))=NaN;
+y2(1:length(domain))=NaN;
+
+%redirect border nodes in elements2  to elements
+for i=1:length(domain),
+	pos=find(elements2==(i+length(x)));
+	elements2(pos)=extractednodes(domain(i));
+end
+
+%same deal for nodeconv2:
+for i=1:length(domain),
+	nodeconv2(i)=extractednodes(domain(i));
+end
+
+%plug elements
+elements=[elements;elements2];
+
+%now, increase number of nodes
+x=[x; x2];
+y=[y; y2];
+z=[z; z2];
+
+%now, get rid of NaN in x:
+while  ~isempty(find(isnan(x))),
+
+	pos=find(isnan(x));
+	node=pos(1);
+
+	%collapse node
+	x(node)=[];
+	y(node)=[];
+	z(node)=[];
+
+	%renumber all nodes > node in elements
+	pos=find(elements>node);
+	elements(pos)=elements(pos)-1;
+
+	%same deal for nodeconv2: 
+	pos=find(nodeconv2>node);
+	nodeconv2(pos)=nodeconv2(pos)-1;
+
+end
+
+numberofnodes=length(x);
+numberofelements=length(elements);
+
+%finish nodeconv: 
+temp_nodeconv=nodeconv;  temp_nodeconv(extractednodes_minusborder)=[];
+temp_nodeconvnum=1:length(temp_nodeconv);
+nodeconv(temp_nodeconv)=temp_nodeconvnum;
+nodeconv(extractednodes_minusborder)=NaN;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshprocessoutsiderifts.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshprocessoutsiderifts.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshprocessoutsiderifts.m	(revision 21239)
@@ -0,0 +1,100 @@
+function md=meshprocessoutsiderifts(md,domainoutline)
+%MESHPROCESSOUTSIDERIFTS - process rifts when they touch the domain outline
+%
+%   Usage:
+%      md=meshprocessoutsiderifts(md,domain)
+%
+
+%go through rifts, and figure out which ones touch the domain outline
+for i=1:length(md.rifts.riftstruct),
+
+	%first, flag nodes that belong to the domain outline
+	flags=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,domainoutline,'node',0);
+
+	rift=md.rifts.riftstruct(i);
+	tips=rift.tips;
+	outsidetips=tips(find(flags(rift.tips)==0));
+
+	%we have found outsidetips, tips that touch the domain outline. go through them
+	for j=1:length(outsidetips),
+
+		tip=outsidetips(j);
+		%find tip in the segments, take first segment (there should be 2) that holds tip, 
+		%and node_connected_to_tip is the other node on this segment:
+		tipindex=find(rift.segments(:,1)==tip); 
+		if length(tipindex),
+			tipindex=tipindex(1);
+			node_connected_to_tip=rift.segments(tipindex,2);
+		else
+			tipindex=find(rift.segments(:,2)==tip); tipindex=tipindex(1);
+			node_connected_to_tip=rift.segments(tipindex,1);
+		end
+
+		%ok, we have the tip node, and the first node connected to it, on the rift. Now, 
+		%identify all the elements that are connected to the tip, and that are on the same 
+		%side of the rift.
+		A=tip;
+		B=node_connected_to_tip;
+
+		elements=[];
+
+		while flags(B), %as long as B does not belong to the domain outline, keep looking.
+			%detect elements on edge A,B:
+			edgeelements=ElementsFromEdge(md.mesh.elements,A,B);
+			%rule out those we already detected
+			already_detected=ismember(edgeelements,elements);
+			nextelement=edgeelements(find(~already_detected));
+			%add new detected element to the list of elements we are looking for.
+			elements=[elements;nextelement];
+			%new B:
+			B=md.mesh.elements(nextelement,find(~ismember(md.mesh.elements(nextelement,:),[A B])));
+		end
+
+		%take the list of elements on one side of the rift that connect to the tip, 
+		%and duplicate the tip on them, so as to open the rift to the outside.
+		num=length(md.mesh.x)+1;
+		md.mesh.x=[md.mesh.x;md.mesh.x(tip)];
+		md.mesh.y=[md.mesh.y;md.mesh.y(tip)];
+		md.mesh.numberofvertices=num;
+
+		%replace tip in elements
+		newelements=md.mesh.elements(elements,:);
+		pos=find(newelements==tip);
+		newelements(pos)=num;
+		md.mesh.elements(elements,:)=newelements;
+		md.rifts.riftstruct(i).tips=[md.rifts.riftstruct(i).tips num];
+
+		%deal with segments
+		tipsegments=find((md.mesh.segments(:,1)==tip) | (md.mesh.segments(:,2)==tip));
+		for k=1:length(tipsegments),
+			segment_index=tipsegments(k);
+			pos=find(md.mesh.segments(segment_index,1:2)~=tip);
+			other_node=md.mesh.segments(segment_index,pos);
+			if ~isconnected(md.mesh.elements,other_node,tip),
+				pos=find(md.mesh.segments(segment_index,1:2)==tip);
+				md.mesh.segments(segment_index,pos)=num;
+			end
+		end
+	end
+end
+
+%Fill in rest of fields:
+md.mesh.numberofelements=length(md.mesh.elements);
+md.mesh.numberofvertices=length(md.mesh.x);
+md.mesh.vertexonboundary=zeros(length(md.mesh.x),1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+end
+
+function flag=isconnected(elements,A,B)% {{{
+	%ISCONNECTED: are two nodes connected by a triangulation?
+	%
+	%   Usage: flag=isconnected(elements,A,B)
+	%
+	%
+
+	elements=ElementsFromEdge(elements,A,B);
+	if isempty(elements),
+		flag=0;
+	else
+		flag=1;
+	end
+end % }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshprocessoutsiderifts.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshprocessoutsiderifts.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshprocessoutsiderifts.py	(revision 21239)
@@ -0,0 +1,104 @@
+import numpy
+from ElementsFromEdge import ElementsFromEdge
+import MatlabFuncs as m
+
+def meshprocessoutsiderifts(md,domainoutline):
+	"""
+	MESHPROCESSOUTSIDERIFTS - process rifts when they touch the domain outline
+
+	   Usage:
+	      md=meshprocessoutsiderifts(md,domain)
+
+	"""
+
+	#go through rifts, and figure out which ones touch the domain outline
+	for rift in md.rifts.riftstruct:
+	
+		#first, flag nodes that belong to the domain outline
+		flags=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,domainoutline,'node',0)
+
+		tips=rift.tips
+		outsidetips=tips[numpy.nonzero(flags[rift.tips-1])[0]]
+
+		#we have found outsidetips, tips that touch the domain outline. go through them
+		for tip in outsidetips:
+		
+			#find tip in the segments, take first segment (there should be 2) that holds tip, 
+			#and node_connected_to_tip is the other node on this segment:
+			tipindex=numpy.nonzero(rift.segments[:,0]==tip)[0]
+			if tipindex:
+				tipindex=tipindex[0]
+				node_connected_to_tip=rift.segments[tipindex,1]
+			else:
+				tipindex=numpy.nonzero(rift.segments[:,1]==tip)[0]
+				tipindex=tipindex[0]
+				node_connected_to_tip=rift.segments[tipindex,1]
+
+			#ok, we have the tip node, and the first node connected to it, on the rift. Now, 
+			#identify all the elements that are connected to the tip, and that are on the same 
+			#side of the rift.
+			A=tip
+			B=node_connected_to_tip
+
+			elements=numpy.empty(0,int)
+
+			while flags(B):    #as long as B does not belong to the domain outline, keep looking.
+				#detect elements on edge A,B:
+				edgeelements=ElementsFromEdge(md.mesh.elements,A,B)
+				#rule out those we already detected
+				already_detected=m.ismember(edgeelements,elements)
+				nextelement=edgeelements(numpy.nonzero(numpy.logical_not(already_detected))[0])
+				#add new detected element to the list of elements we are looking for.
+				elements=numpy.concatenate((elements,nextelement))
+				#new B:
+				B=md.mesh.elements[nextelement-1,numpy.nonzero(numpy.logical_not(m.ismember(md.mesh.elements[nextelement-1,:],numpy.array([A,B]))))]
+		
+			#take the list of elements on one side of the rift that connect to the tip, 
+			#and duplicate the tip on them, so as to open the rift to the outside.
+			num=numpy.size(md.mesh.x)+1
+			md.mesh.x=numpy.concatenate((md.mesh.x,md.mesh.x[tip]))
+			md.mesh.y=numpy.concatenate((md.mesh.y,md.mesh.y[tip]))
+			md.mesh.numberofvertices=num
+		
+			#replace tip in elements
+			newelements=md.mesh.elements[elements-1,:]
+			pos=numpy.nonzero(newelements==tip)
+			newelements[pos]=num
+			md.mesh.elements[elements-1,:]=newelements
+			rift.tips=numpy.concatenate((rift.tips,num))
+
+			#deal with segments
+			tipsegments=numpy.nonzero(numpy.logical_or(md.mesh.segments[:,0]==tip,md.mesh.segments[:,1]==tip))[0]
+			for segment_index in tipsegments:
+				pos=numpy.nonzero(md.mesh.segments[segment_index,0:2]!=tip)[0]
+				other_node=md.mesh.segments[segment_index,pos]
+				if not isconnected(md.mesh.elements,other_node,tip):
+					pos=numpy.nonzero(md.mesh.segments[segment_index,0:2]==tip)[0]
+					md.mesh.segments[segment_index,pos]=num
+
+	#Fill in rest of fields:
+	md.mesh.numberofelements=numpy.size(md.mesh.elements,axis=0)
+	md.mesh.numberofvertices=numpy.size(md.mesh.x)
+	md.mesh.vertexonboundary=numpy.zeros(numpy.size(md.mesh.x),bool)
+	md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1]=True
+	md.rifts.numrifts=length(md.rifts.riftstruct)
+
+	return md
+
+def isconnected(elements,A,B):    # {{{
+	"""
+	ISCONNECTED: are two nodes connected by a triangulation?
+
+	   Usage: flag=isconnected(elements,A,B)
+
+	"""
+
+	elements=ElementsFromEdge(elements,A,B)
+	if not elements:
+		flag=0
+	else:
+		flag=1
+
+	return flag
+	# }}}
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshprocessrifts.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshprocessrifts.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshprocessrifts.m	(revision 21239)
@@ -0,0 +1,69 @@
+function md=meshprocessrifts(md,domainoutline)
+%MESHPROCESSRIFTS - process mesh when rifts are present
+%
+%   split rifts inside mesh (rifts are defined by presence of
+%   segments inside the domain outline)
+%   if domain outline is provided, check for rifts that could touch it, and open them up.
+%
+%   Usage:
+%      md=meshprocessrifts(md,domainoutline)
+%
+%   Ex: 
+%      md=meshprocessrifts(md,'DomainOutline.exp');
+%
+
+%some checks on arguments: 
+if nargout~=1,
+	help meshprocessrifts
+	error('meshprocessrifts usage error:');
+end
+
+if nargin~=2,
+	help meshprocessrifts
+	error('meshprocessrifts usage error:');
+end
+
+%Call MEX file
+[md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.segments,md.mesh.segmentmarkers,md.rifts.riftstruct]=TriMeshProcessRifts(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.segments,md.mesh.segmentmarkers);
+if ~isstruct(md.rifts.riftstruct),
+	error('TriMeshProcessRifts did not find any rift');
+end
+
+%Fill in rest of fields:
+numrifts=length(md.rifts.riftstruct);
+md.mesh.numberofelements=length(md.mesh.elements);
+md.mesh.numberofvertices=length(md.mesh.x);
+md.mesh.vertexonboundary=zeros(length(md.mesh.x),1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+
+%get coordinates of rift tips
+for i=1:numrifts,
+	md.rifts.riftstruct(i).tip1coordinates=[md.mesh.x(md.rifts.riftstruct(i).tips(1)) md.mesh.y(md.rifts.riftstruct(i).tips(1))];
+	md.rifts.riftstruct(i).tip2coordinates=[md.mesh.x(md.rifts.riftstruct(i).tips(2)) md.mesh.y(md.rifts.riftstruct(i).tips(2))];
+end
+
+%In case we have rifts that open up the domain outline, we need to open them: 
+flags=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,domainoutline,'node',0);
+found=0;
+for i=1:numrifts,
+	if flags(md.rifts.riftstruct(i).tips(1))==0,
+		found=1;
+		break;
+	end
+	if flags(md.rifts.riftstruct(i).tips(2))==0,
+		found=1;
+		break;
+	end
+end
+if found,
+	md=meshprocessoutsiderifts(md,domainoutline);
+end
+
+%get elements that are not correctly oriented in the correct direction:
+aires=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y);
+pos=find(aires<0);
+md.mesh.elements(pos,:)=[md.mesh.elements(pos,2) md.mesh.elements(pos,1) md.mesh.elements(pos,3)];
+
+%case of 3D surface mesh: 
+if strcmpi(class(md.mesh),'mesh3dsurface'),
+	md.mesh.z=md.mesh.x; md.mesh.z(:)=0;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshprocessrifts.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshprocessrifts.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshprocessrifts.py	(revision 21239)
@@ -0,0 +1,64 @@
+import numpy
+from TriMeshProcessRifts import TriMeshProcessRifts
+from ContourToMesh import ContourToMesh
+from meshprocessoutsiderifts import meshprocessoutsiderifts
+from GetAreas import GetAreas
+
+def meshprocessrifts(md,domainoutline):
+	"""
+	MESHPROCESSRIFTS - process mesh when rifts are present
+
+	   split rifts inside mesh (rifts are defined by presence of
+	   segments inside the domain outline)
+	   if domain outline is provided, check for rifts that could touch it, and open them up.
+
+	   Usage:
+	      md=meshprocessrifts(md,domainoutline)
+
+	   Ex: 
+	      md=meshprocessrifts(md,'DomainOutline.exp');
+	
+	"""
+
+	#Call MEX file
+	md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.segments,md.mesh.segmentmarkers,md.rifts.riftstruct=TriMeshProcessRifts(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.segments,md.mesh.segmentmarkers)
+	md.mesh.elements=md.mesh.elements.astype(int)
+	md.mesh.x=md.mesh.x.reshape(-1)
+	md.mesh.y=md.mesh.y.reshape(-1)
+	md.mesh.segments=md.mesh.segments.astype(int)
+	md.mesh.segmentmarkers=md.mesh.segmentmarkers.astype(int)
+	if not isinstance(md.rifts.riftstruct,list) or not md.rifts.riftstruct:
+		raise RuntimeError("TriMeshProcessRifts did not find any rift")
+
+	#Fill in rest of fields:
+	numrifts=len(md.rifts.riftstruct)
+	md.mesh.numberofelements=numpy.size(md.mesh.elements,axis=0)
+	md.mesh.numberofvertices=numpy.size(md.mesh.x)
+	md.mesh.vertexonboundary=numpy.zeros(numpy.size(md.mesh.x),bool)
+	md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1]=True
+
+	#get coordinates of rift tips
+	for rift in md.rifts.riftstruct:
+		rift['tip1coordinates']=numpy.hstack((md.mesh.x[rift['tips'][0,0].astype(int)-1].reshape(-1,1),md.mesh.y[rift['tips'][0,0].astype(int)-1].reshape(-1,1)))
+		rift['tip2coordinates']=numpy.hstack((md.mesh.x[rift['tips'][0,1].astype(int)-1].reshape(-1,1),md.mesh.y[rift['tips'][0,1].astype(int)-1].reshape(-1,1)))
+
+	#In case we have rifts that open up the domain outline, we need to open them: 
+	flags=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,domainoutline,'node',0)
+	found=0
+	for rift in md.rifts.riftstruct:
+		if flags[rift['tips'][0,0].astype(int)-1]==0:
+			found=1
+			break
+		if flags[rift['tips'][0,1].astype(int)-1]==0:
+			found=1
+			break
+	if found:
+		md=meshprocessoutsiderifts(md,domainoutline)
+
+	#get elements that are not correctly oriented in the correct direction:
+	aires=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y)
+	pos=numpy.nonzero(aires<0)[0]
+	md.mesh.elements[pos,:]=numpy.hstack((md.mesh.elements[pos,1].reshape(-1,1),md.mesh.elements[pos,0].reshape(-1,1),md.mesh.elements[pos,2].reshape(-1,1)))
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshyamsrecreateriftsegments.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshyamsrecreateriftsegments.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/meshyamsrecreateriftsegments.m	(revision 21239)
@@ -0,0 +1,90 @@
+function md=meshyamsrecreateriftsegments(md)
+
+	%recreate rift segments: just used for yams. temporaroy routine.
+	pos_record=[];
+	if md.rifts.numrifts,
+		for i=1:md.rifts.numrifts,
+			rift=md.rifts.riftstruct(i);
+
+			%closed rifts first:
+			if length(rift.tips)==2,
+
+				%find tip1 and tip2 for this rift, in the new mesh created by yams.
+				pos=find_point(md.mesh.x(md.mesh.segments(:,1)),md.mesh.y(md.mesh.segments(:,1)),rift.tip1coordinates(1),rift.tip1coordinates(2));
+				tip1=md.mesh.segments(pos,1);
+				pos=find_point(md.mesh.x(md.mesh.segments(:,1)),md.mesh.y(md.mesh.segments(:,1)),rift.tip2coordinates(1),rift.tip2coordinates(2));
+				tip2=md.mesh.segments(pos,1);
+
+				%start from tip1, and build segments of this rift. 
+				pos=find_point(md.mesh.x(md.mesh.segments(:,1)),md.mesh.y(md.mesh.segments(:,1)),rift.tip1coordinates(1),rift.tip1coordinates(2));
+				pos_record=[pos_record; pos];
+				riftsegs=md.mesh.segments(pos,:);
+				while 1,
+					A=riftsegs(end,1); B=riftsegs(end,2); el=riftsegs(end,3);
+					%find other segment that holds B.
+					pos=find(md.mesh.segments(:,1)==B);
+					pos_record=[pos_record; pos];
+					riftsegs=[riftsegs; md.mesh.segments(pos,:)];
+					if riftsegs(end,2)==tip1, 
+						break;
+					end
+				end
+				md.rifts.riftstruct(i).segments=riftsegs;
+				md.rifts.riftstruct(i).tips=[tip1 tip2];
+
+			else
+				%ok, this is a rift that opens up to the domain outline.  One tip is going to be 
+				%double, the other one, single. We are going to start from the single tip, towards the two 
+				%other doubles
+
+				%find tip1 and tip2 for this rift, in the new mesh created by yams.
+				pos1=find_point(md.mesh.x(md.mesh.segments(:,1)),md.mesh.y(md.mesh.segments(:,1)),rift.tip1coordinates(1),rift.tip1coordinates(2));
+				tip1=md.mesh.segments(pos1,1);
+				pos2=find_point(md.mesh.x(md.mesh.segments(:,1)),md.mesh.y(md.mesh.segments(:,1)),rift.tip2coordinates(1),rift.tip2coordinates(2));
+				tip2=md.mesh.segments(pos2,1);
+				if length(tip1)==2,
+					%swap.
+					temp=tip1; tip1=tip2; tip2=temp;
+					temp=pos1; pos1=pos2; pos2=temp;
+					pos=pos1;
+				else
+					pos=pos1;
+				end
+
+				pos_record=[pos_record; pos];
+				riftsegs=md.mesh.segments(pos,:);
+				while 1,
+					A=riftsegs(end,1); B=riftsegs(end,2); el=riftsegs(end,3);
+					%find other segment that holds B.
+					pos=find(md.mesh.segments(:,1)==B);
+					pos_record=[pos_record; pos];
+					riftsegs=[riftsegs; md.mesh.segments(pos,:)];
+					if ((riftsegs(end,2)==tip2(1)) | (riftsegs(end,2)==tip2(2))), 
+						%figure out which tip we reached
+						if riftsegs(end,2)==tip2(1), index=2; else index=1; end
+						break;
+					end
+				end
+
+				%ok, now, we start from the other tip2, towards tip1
+				pos=pos2(index);
+				pos_record=[pos_record; pos];
+				riftsegs=[riftsegs; md.mesh.segments(pos,:)];
+				while 1,
+					A=riftsegs(end,1); B=riftsegs(end,2); el=riftsegs(end,3);
+					%find other segment that holds B.
+					pos=find(md.mesh.segments(:,1)==B);
+					pos_record=[pos_record; pos];
+					riftsegs=[riftsegs; md.mesh.segments(pos,:)];
+					if riftsegs(end,2)==tip1, 
+						break;
+					end
+				end
+				md.rifts.riftstruct(i).segments=riftsegs;
+				md.rifts.riftstruct(i).tips=[tip1 tip2(1) tip2(2)];
+
+			end
+		end
+	end
+	%take out rift segments from segments
+	md.mesh.segments(pos_record,:)=[];
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/rifttipsonmesh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/rifttipsonmesh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/rifttipsonmesh.m	(revision 21239)
@@ -0,0 +1,25 @@
+function tips=rifttipsonmesh(md,riftoutline)
+%RIFTTIPSONMESH: identify, using a rift outline, the nodes that are tips of 
+%                rifts.
+
+%read rifts from outline file
+rifts=expread(riftoutline);
+
+tips=[];
+
+for i=1:length(rifts),
+	rift=rifts(i);
+
+	x_tip=rift.x(1);
+	y_tip=rift.y(1);
+
+	index=find_point(md.mesh.x,md.mesh.y,x_tip,y_tip);
+	tips(end+1)=index;
+
+	x_tip=rift.x(end);
+	y_tip=rift.y(end);
+
+	index=find_point(md.mesh.x,md.mesh.y,x_tip,y_tip);
+	tips(end+1)=index;
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/rifttipsrefine.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/rifttipsrefine.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/rifttipsrefine.m	(revision 21239)
@@ -0,0 +1,26 @@
+function md=rifttipsrefine(md,filename,resolution,circleradius)
+%RIFTTIPSREFINE - refine mesh near rift tips
+%
+%   Usage:
+%      md=rifttipsrefine(md,filename,resolution,circleradius);
+
+numberofnodes=50;
+
+%take rifts, and create refinement circles around tips
+rifts=expread(filename,1);
+
+!echo -n "" > Circles.exp
+for i=1:length(rifts),
+	tip1=[rifts(i).x(1) rifts(i).y(1)];
+	tip2=[rifts(i).x(end) rifts(i).y(end)];
+	%create circle around tip
+	expcreatecircle('Circle1.exp',tip1(1),tip1(2),circleradius,numberofnodes);
+	expcreatecircle('Circle2.exp',tip2(1),tip2(2),circleradius,numberofnodes);
+	!cat Circles.exp Circle1.exp Circle2.exp > Circles2.exp
+	!mv Circles2.exp Circles.exp
+	!rm -rf Circle1.exp Circle2.exp
+end
+
+md=meshexprefine(md,'Circles.exp',resolution);
+
+system('rm -rf Circles.exp');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/updateriftindexing.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/updateriftindexing.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/rifts/updateriftindexing.m	(revision 21239)
@@ -0,0 +1,11 @@
+function rift=updateriftindexing(rift,elconv,nodeconv)
+%UPDATERIFTINDEXING - update rift indexing, using mesh to new mesh conversion tables
+%     See also meshaddrift
+
+rift.segments(:,1:2)=nodeconv(rift.segments(:,1:2));
+rift.segments(:,3)=elconv(rift.segments(:,3));
+rift.pairs=elconv(rift.pairs);
+rift.tips=nodeconv(rift.tips);
+
+rift.penaltypairs(:,1:2)=nodeconv(rift.penaltypairs(:,1:2));
+rift.penaltypairs(:,3:4)=elconv(rift.penaltypairs(:,3:4));
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/roundmesh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/roundmesh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/roundmesh.m	(revision 21239)
@@ -0,0 +1,47 @@
+function md=roundmesh(md,radius,resolution)
+%ROUNDMESH - create an unstructured round mesh 
+%
+%   This script will generate a structured round mesh
+%   - radius     : specifies the radius of the circle in meters
+%   - resolution : specifies the resolution in meters
+%
+%   Usage:
+%      md=roundmesh(md,radius,resolution)
+
+%First we have to create the domain outline 
+
+%Get number of points on the circle
+pointsonedge=floor((2.*pi*radius) / resolution);
+
+%Calculate the cartesians coordinates of the points
+x_list=ones(pointsonedge,1); y_list=ones(pointsonedge,1);
+theta=(0.:2.*pi/pointsonedge:2.*pi*(1.-1./pointsonedge))';
+x_list=roundsigfig(radius*x_list.*cos(theta),12);
+y_list=roundsigfig(radius*y_list.*sin(theta),12);
+A=struct('x',x_list,'y',y_list,'density',1.);
+expwrite(A,'RoundDomainOutline.exp');
+
+%Call Bamg
+md=triangle(md,'RoundDomainOutline.exp',resolution);
+%md=bamg(md,'domain','RoundDomainOutline.exp','hmin',resolution);
+
+%move the closest node to the center
+[mini pos]=min(md.mesh.x.^2+md.mesh.y.^2);
+md.mesh.x(pos)=0.;
+md.mesh.y(pos)=0.;
+
+%delete domain
+delete('RoundDomainOutline.exp')
+end
+
+function x=roundsigfig(x,n)
+
+digits=ceil(log10(abs(x)));
+x=x./10.^digits;
+x=round(x.*10.^n)./10.^n;
+x=x.*10.^digits;
+
+pos=find(isnan(x));
+x(pos)=0.;
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/roundmesh.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/roundmesh.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/roundmesh.py	(revision 21239)
@@ -0,0 +1,61 @@
+import numpy
+import os
+from collections import OrderedDict
+from expwrite import expwrite
+from triangle import triangle
+
+def roundmesh(md,radius,resolution):
+	"""
+	ROUNDMESH - create an unstructured round mesh 
+
+	   This script will generate a structured round mesh
+	   - radius     : specifies the radius of the circle in meters
+	   - resolution : specifies the resolution in meters
+
+	   Usage:
+	      md=roundmesh(md,radius,resolution)
+	"""
+
+	#First we have to create the domain outline 
+
+	#Get number of points on the circle
+	pointsonedge=numpy.floor((2.*numpy.pi*radius) / resolution)
+
+	#Calculate the cartesians coordinates of the points
+	x_list=numpy.ones(pointsonedge)
+	y_list=numpy.ones(pointsonedge)
+	theta=numpy.linspace(0.,2.*numpy.pi,num=pointsonedge,endpoint=False)
+	x_list=roundsigfig(radius*x_list*numpy.cos(theta),12)
+	y_list=roundsigfig(radius*y_list*numpy.sin(theta),12)
+	A=OrderedDict()
+	A['x']=[x_list]
+	A['y']=[y_list]
+	A['density']=1.
+	expwrite(A,'RoundDomainOutline.exp')
+
+	#Call Bamg
+	md=triangle(md,'RoundDomainOutline.exp',resolution)
+	#md=bamg(md,'domain','RoundDomainOutline.exp','hmin',resolution)
+
+	#move the closest node to the center
+	pos=numpy.argmin(md.mesh.x**2+md.mesh.y**2)
+	md.mesh.x[pos]=0.
+	md.mesh.y[pos]=0.
+
+	#delete domain
+	os.remove('RoundDomainOutline.exp')
+
+	return md
+
+def roundsigfig(x,n):
+
+	digits=numpy.ceil(numpy.log10(numpy.abs(x)))
+	x=x/10.**digits
+	x=numpy.round(x,decimals=n)
+	x=x*10.**digits
+
+	pos=numpy.nonzero(numpy.isnan(x))
+	x[pos]=0.
+
+	return x
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/squaremesh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/squaremesh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/squaremesh.m	(revision 21239)
@@ -0,0 +1,70 @@
+function md=squaremesh(md,Lx,Ly,nx,ny)
+%SQUAREMESH - create a structured square mesh 
+%
+%   This script will generate a structured square mesh
+%   Lx and Ly are the dimension of the domain (in meters)
+%   nx anx ny are the number of nodes in the x and y direction
+%   The coordinates x and y returned are in meters.
+%
+%   Usage:
+%      [md]=squaremesh(md,Lx,Ly,nx,ny)
+
+%get number of elements and number of nodes
+nel=(nx-1)*(ny-1)*2;
+nods=nx*ny;
+
+%initialization
+index=zeros(nel,3);
+x=zeros(nx*ny,1);
+y=zeros(nx*ny,1);
+
+%create coordinates
+for n=1:nx,
+	for m=1:ny,
+		x((n-1)*ny+m)=(n-1.);
+		y((n-1)*ny+m)=(m-1.);
+	end
+end
+
+%create index
+for n=1:(nx-1)
+	for m=1:(ny-1),
+		A=(n-1)*ny+m;
+		B=A+1;
+		C=n*ny+m;
+		D=C+1;
+		index((n-1)*(ny-1)*2+2*(m-1)+1,:)=[A C B];
+		index((n-1)*(ny-1)*2+2*m,:)=[B C D];
+	end
+end
+
+%Scale  x and y
+x=x/max(x)*Lx;
+y=y/max(y)*Ly;
+
+%create segments
+segments=zeros(2*(nx-1)+2*(ny-1),3);
+%left edge:
+segments(1:ny-1,:)=[[2:ny]' [1:ny-1]' 2*[1:ny-1]'-1];
+%right edge:
+segments(ny:2*(ny-1),:)=[[ny*(nx-1)+1:nx*ny-1]' [ny*(nx-1)+2:nx*ny]' 2*[(ny-1)*(nx-2)+1:(nx-1)*(ny-1)]'];
+%front edge:
+segments(2*(ny-1)+1:2*(ny-1)+(nx-1),:)=[[2*ny:ny:ny*nx]' [ny:ny:ny*(nx-1)]' [2*(ny-1):2*(ny-1):2*(nx-1)*(ny-1)]'];
+%back edge
+segments(2*(ny-1)+(nx-1)+1:2*(nx-1)+2*(ny-1),:)=[[1:ny:(nx-2)*ny+1]' [ny+1:ny:ny*(nx-1)+1]' [1:2*(ny-1):2*(nx-2)*(ny-1)+1]'];
+
+%plug coordinates and nodes
+md.mesh=mesh2d();
+md.mesh.x=x;
+md.mesh.y=y;
+md.mesh.numberofvertices=nods;
+md.mesh.vertexonboundary=zeros(nods,1);md.mesh.vertexonboundary(segments(:,1:2))=1;
+
+%plug elements
+md.mesh.elements=index;
+md.mesh.segments=segments;
+md.mesh.numberofelements=nel;
+
+%Now, build the connectivity tables for this mesh.
+md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/squaremesh.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/squaremesh.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/squaremesh.py	(revision 21239)
@@ -0,0 +1,76 @@
+import numpy
+from NodeConnectivity import NodeConnectivity
+from ElementConnectivity import ElementConnectivity 
+from mesh2d import mesh2d
+
+def squaremesh(md,Lx,Ly,nx,ny):
+	"""
+	SQUAREMESH - create a structured square mesh 
+
+	   This script will generate a structured square mesh
+	   Lx and Ly are the dimension of the domain (in meters)
+	   nx anx ny are the number of nodes in the x and y direction
+	   The coordinates x and y returned are in meters.
+
+	   Usage:
+	      [md]=squaremesh(md,Lx,Ly,nx,ny)
+	"""
+
+	#get number of elements and number of nodes
+	nel=(nx-1)*(ny-1)*2
+	nods=nx*ny
+
+	#initialization
+	index=numpy.zeros((nel,3),int)
+	x=numpy.zeros((nx*ny))
+	y=numpy.zeros((nx*ny))
+
+	#create coordinates
+	for n in xrange(0,nx):
+		for m in xrange(0,ny):
+			x[n*ny+m]=float(n)
+			y[n*ny+m]=float(m)
+
+	#create index
+	for n in xrange(0,nx-1):
+		for m in xrange(0,ny-1):
+			A=n*ny+(m+1)
+			B=A+1
+			C=(n+1)*ny+(m+1)
+			D=C+1
+			index[n*(ny-1)*2+2*m,:]=[A,C,B]
+			index[n*(ny-1)*2+2*(m+1)-1,:]=[B,C,D]
+
+	#Scale  x and y
+	x=x/numpy.max(x)*Lx
+	y=y/numpy.max(y)*Ly
+
+	#create segments
+	segments=numpy.zeros((2*(nx-1)+2*(ny-1),3),int)
+	#left edge:
+	segments[0:ny-1,:]=numpy.hstack((numpy.arange(2,ny+1).reshape(-1,1),numpy.arange(1,ny).reshape(-1,1),(2*numpy.arange(1,ny)-1).reshape(-1,1)))
+	#right edge:
+	segments[ny-1:2*(ny-1),:]=numpy.hstack((numpy.arange(ny*(nx-1)+1,nx*ny).reshape(-1,1),numpy.arange(ny*(nx-1)+2,nx*ny+1).reshape(-1,1),2*numpy.arange((ny-1)*(nx-2)+1,(nx-1)*(ny-1)+1).reshape(-1,1)))
+	#front edge:
+	segments[2*(ny-1):2*(ny-1)+(nx-1),:]=numpy.hstack((numpy.arange(2*ny,ny*nx+1,ny).reshape(-1,1),numpy.arange(ny,ny*(nx-1)+1,ny).reshape(-1,1),numpy.arange(2*(ny-1),2*(nx-1)*(ny-1)+1,2*(ny-1)).reshape(-1,1)))
+	#back edge
+	segments[2*(ny-1)+(nx-1):2*(nx-1)+2*(ny-1),:]=numpy.hstack((numpy.arange(1,(nx-2)*ny+2,ny).reshape(-1,1),numpy.arange(ny+1,ny*(nx-1)+2,ny).reshape(-1,1),numpy.arange(1,2*(nx-2)*(ny-1)+2,2*(ny-1)).reshape(-1,1)))
+
+	#plug coordinates and nodes
+	md.mesh=mesh2d()
+	md.mesh.x=x
+	md.mesh.y=y
+	md.mesh.numberofvertices=nods
+	md.mesh.vertexonboundary=numpy.zeros((nods),bool)
+	md.mesh.vertexonboundary[segments[:,0:2]-1]=True
+
+	#plug elements
+	md.mesh.elements=index
+	md.mesh.segments=segments
+	md.mesh.numberofelements=nel
+
+	#Now, build the connectivity tables for this mesh.
+	md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices)[0]
+	md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity)[0]
+
+	return md
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/triangle.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/triangle.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/triangle.js	(revision 21239)
@@ -0,0 +1,58 @@
+function triangle(md){
+//TRIANGLE - create model mesh using the triangle package
+//
+//   This routine creates a model mesh using TriMesh and a domain outline, to within a certain resolution
+//   where md is a @model object, domainname is the name of an Argus domain outline file, 
+//   and resolution is a characteristic length for the mesh (same unit as the domain outline
+//   unit). Riftname is an optional argument (Argus domain outline) describing rifts.
+//
+//   Usage:
+//      triangle(md,domain,resolution)
+//   or triangle(md,domain,riftname, resolution)
+//
+//   Examples:
+//      triangle(md,domain,1000);
+//      triangle(md,domain, rifts, 1500);
+
+	if (!(arguments.length==3 | arguments.length==4)){
+		console.log('triangle usage error.');
+	}
+	
+	var md=arguments[0];
+	var domain=arguments[1];
+
+	if (arguments.length==3){
+		var resolution=arguments[2];
+		var rifts=[];
+	}
+	if (arguments.length==4){
+		var rifts=arguments[2];
+		var resolution=arguments[3];
+	}
+
+	//Figure out a characteristic area. Resolution is a node oriented concept (ex a 1000m  resolution node would 
+	//be made of 1000*1000 area squares). 
+	var area=Math.pow(resolution,2);
+
+	//Call mesher: 
+	var return_array=TriMesh(md, domain, rifts, area); 
+
+	//Plug into md:
+	md.mesh.elements=return_array[0];
+	md.mesh.x=return_array[1];
+	md.mesh.y=return_array[2];
+	md.mesh.segments=return_array[3];
+	md.mesh.segmentmarkers=return_array[4];
+	
+	//Fill in rest of fields:
+	md.mesh.numberofelements=md.mesh.elements.length;
+	md.mesh.numberofvertices=md.mesh.x.length;
+	md.mesh.vertexonboundary=new Float64Array(md.mesh.numberofvertices); 
+
+	for (i=0;i<md.mesh.segments.length;i++) for(var j=0;j<2;j++) md.mesh.vertexonboundary[md.mesh.segments[i][j]-1]=1;
+
+	//Now, build the connectivity tables for this mesh.
+	md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+	md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);	
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/triangle.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/triangle.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/triangle.m	(revision 21239)
@@ -0,0 +1,83 @@
+function md=triangle(md,domainname,varargin)
+%TRIANGLE - create model mesh using the triangle package
+%
+%   This routine creates a model mesh using TriMesh and a domain outline, to within a certain resolution
+%   where md is a @model object, domainname is the name of an Argus domain outline file, 
+%   and resolution is a characteristic length for the mesh (same unit as the domain outline
+%   unit). Riftname is an optional argument (Argus domain outline) describing rifts.
+%
+%   Usage:
+%      md=triangle(md,domainname,resolution)
+%   or md=triangle(md,domainname,riftname, resolution)
+%
+%   Examples:
+%      md=triangle(md,'DomainOutline.exp',1000);
+%      md=triangle(md,'DomainOutline.exp','Rifts.exp',1500);
+
+%Figure out a characteristic area. Resolution is a node oriented concept (ex a 1000m  resolution node would 
+%be made of 1000*1000 area squares). 
+if (nargin==3),
+	resolution=varargin{1};
+	riftname='';
+end
+if (nargin==4),
+	riftname=varargin{1};
+	resolution=varargin{2};
+end
+
+%Check that mesh was not already run, and warn user: 
+if md.mesh.numberofelements~=0,
+	choice=input('This model already has a mesh. Are you sure you want to go ahead? (y/n)','s');
+	if ~strcmp(choice,'y')
+		disp('no meshing done ... exiting');
+		return
+	end
+end
+
+area=resolution^2;
+
+%Check that file exist (this is a very very common mistake)
+if ~exist(domainname)
+	error(['file "' domainname '" not found']);
+end
+
+%Mesh using TriMesh
+[elements,x,y,segments,segmentmarkers]=TriMesh(domainname,riftname,area);
+
+%check that all the created nodes belong to at least one element
+removeorphans=1;
+if removeorphans,
+	orphan=find(~ismember([1:length(x)],sort(unique(elements(:)))));
+	for i=1:length(orphan),
+		disp('WARNING: removing orphans');
+		%get rid of the orphan node i
+		%update x and y
+		x=[x(1:orphan(i)-(i-1)-1); x(orphan(i)-(i-1)+1:end)];
+		y=[y(1:orphan(i)-(i-1)-1); y(orphan(i)-(i-1)+1:end)];
+		%update elements
+		pos=find(elements>orphan(i)-(i-1));
+		elements(pos)=elements(pos)-1;
+		%update segments
+		pos1=find(segments(:,1)>orphan(i)-(i-1));
+		pos2=find(segments(:,2)>orphan(i)-(i-1));
+		segments(pos1,1)=segments(pos1,1)-1;
+		segments(pos2,2)=segments(pos2,2)-1;
+	end
+end
+
+%plug into md
+md.mesh=mesh2d();
+md.mesh.x=x;
+md.mesh.y=y;
+md.mesh.elements=elements;
+md.mesh.segments=segments;
+md.mesh.segmentmarkers=segmentmarkers;
+
+%Fill in rest of fields:
+md.mesh.numberofelements=size(md.mesh.elements,1);
+md.mesh.numberofvertices=length(md.mesh.x);
+md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+
+%Now, build the connectivity tables for this mesh.
+md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/triangle.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/triangle.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/triangle.py	(revision 21239)
@@ -0,0 +1,67 @@
+import os.path
+import numpy
+from mesh2d import mesh2d
+from TriMesh import TriMesh
+from NodeConnectivity import NodeConnectivity
+from ElementConnectivity import ElementConnectivity
+import MatlabFuncs as m
+
+def triangle(md,domainname,*args):
+	"""
+	TRIANGLE - create model mesh using the triangle package
+
+	   This routine creates a model mesh using TriMesh and a domain outline, to within a certain resolution
+	   where md is a @model object, domainname is the name of an Argus domain outline file, 
+	   and resolution is a characteristic length for the mesh (same unit as the domain outline
+	   unit). Riftname is an optional argument (Argus domain outline) describing rifts.
+
+	   Usage:
+	      md=triangle(md,domainname,resolution)
+	   or md=triangle(md,domainname, resolution, riftname)
+
+	   Examples:
+	      md=triangle(md,'DomainOutline.exp',1000);
+	      md=triangle(md,'DomainOutline.exp',1000,'Rifts.exp');
+	"""
+
+	#Figure out a characteristic area. Resolution is a node oriented concept (ex a 1000m  resolution node would 
+	#be made of 1000*1000 area squares). 
+
+	if len(args)==1:
+		resolution=args[0]
+		riftname=''
+	if len(args)==2:
+		riftname=args[0]
+		resolution=args[1]
+
+	#Check that mesh was not already run, and warn user: 
+	if md.mesh.numberofelements:
+		choice = raw_input('This model already has a mesh. Are you sure you want to go ahead? (y/n)')
+		if not m.strcmp(choice,'y'):
+			print 'no meshing done ... exiting'
+			return None
+
+	area = resolution**2
+
+	#Check that file exist (this is a very very common mistake)
+	if not os.path.exists(domainname):
+		raise IOError("file '%s' not found" % domainname)
+
+	#Mesh using TriMesh
+	md.mesh=mesh2d()
+	md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.segments,md.mesh.segmentmarkers=TriMesh(domainname,riftname,area)
+	md.mesh.elements=md.mesh.elements.astype(int)
+	md.mesh.segments=md.mesh.segments.astype(int)
+	md.mesh.segmentmarkers=md.mesh.segmentmarkers.astype(int)
+
+	#Fill in rest of fields:
+	md.mesh.numberofelements = numpy.size(md.mesh.elements,axis=0)
+	md.mesh.numberofvertices = numpy.size(md.mesh.x)
+	md.mesh.vertexonboundary = numpy.zeros(md.mesh.numberofvertices,bool)
+	md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1] = True
+
+	#Now, build the connectivity tables for this mesh.
+	md.mesh.vertexconnectivity = NodeConnectivity(md.mesh.elements, md.mesh.numberofvertices)[0]
+	md.mesh.elementconnectivity = ElementConnectivity(md.mesh.elements, md.mesh.vertexconnectivity)[0]
+
+	return md
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/triangle2dvertical.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/triangle2dvertical.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/mesh/triangle2dvertical.m	(revision 21239)
@@ -0,0 +1,62 @@
+function md=triangle(md,domainname,resolution)
+%TRIANGLE - create model mesh using the triangle package
+%
+%   This routine creates a model mesh using TriMesh and a domain outline, to within a certain resolution
+%   where md is a @model object, domainname is the name of an Argus domain outline file, 
+%   and resolution is a characteristic length for the mesh (same unit as the domain outline
+%   unit). Riftname is an optional argument (Argus domain outline) describing rifts.
+%
+%   Usage:
+%      md=triangle(md,domainname,resolution)
+%
+%   Examples:
+%      md=triangle(md,'DomainOutline.exp',1000);
+
+%Check that mesh was not already run, and warn user: 
+if md.mesh.numberofelements~=0,
+	choice=input('This model already has a mesh. Are you sure you want to go ahead? (y/n)','s');
+	if ~strcmp(choice,'y')
+		disp('no meshing done ... exiting');
+		return
+	end
+end
+
+area=resolution^2;
+
+%Mesh using TriMesh
+[elements,x,z,segments,segmentmarkers]=TriMesh(domainname,'',area);
+
+%check that all the created nodes belong to at least one element
+orphan=find(~ismember([1:length(x)],sort(unique(elements(:)))));
+for i=1:length(orphan),
+	disp('WARNING: removing orphans');
+	%get rid of the orphan node i
+	%update x and y
+	x=[x(1:orphan(i)-(i-1)-1); x(orphan(i)-(i-1)+1:end)];
+	z=[z(1:orphan(i)-(i-1)-1); z(orphan(i)-(i-1)+1:end)];
+	%update elements
+	pos=find(elements>orphan(i)-(i-1));
+	elements(pos)=elements(pos)-1;
+	%update segments
+	pos1=find(segments(:,1)>orphan(i)-(i-1));
+	pos2=find(segments(:,2)>orphan(i)-(i-1));
+	segments(pos1,1)=segments(pos1,1)-1;
+	segments(pos2,2)=segments(pos2,2)-1;
+end
+
+%plug into md
+md.mesh=mesh2dvertical();
+md.mesh.x=x;
+md.mesh.z=z;
+md.mesh.elements=elements;
+md.mesh.segments=segments;
+md.mesh.segmentmarkers=segmentmarkers;
+
+%Fill in rest of fields:
+md.mesh.numberofelements=size(md.mesh.elements,1);
+md.mesh.numberofvertices=length(md.mesh.x);
+md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+
+%Now, build the connectivity tables for this mesh.
+md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/MatlabFuncs.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/MatlabFuncs.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/MatlabFuncs.py	(revision 21239)
@@ -0,0 +1,107 @@
+def oshostname():
+	import socket
+
+	return socket.gethostname()
+
+def ispc():
+	import platform
+
+	if 'Windows' in platform.system():
+		return True
+	else:
+		return False
+
+def ismac():
+	import platform
+
+	if 'Darwin' in platform.system():
+		return True
+	else:
+		return False
+
+def strcmp(s1,s2):
+
+	if s1 == s2:
+		return True
+	else:
+		return False
+
+def strncmp(s1,s2,n):
+
+	if s1[0:n] == s2[0:n]:
+		return True
+	else:
+		return False
+
+def strcmpi(s1,s2):
+
+	if s1.lower() == s2.lower():
+		return True
+	else:
+		return False
+
+def strncmpi(s1,s2,n):
+
+	if s1.lower()[0:n] == s2.lower()[0:n]:
+		return True
+	else:
+		return False
+
+def ismember(a,s):
+	import numpy
+
+	if not isinstance(s,(tuple,list,dict,numpy.ndarray)):
+		s=[s]
+
+	if not isinstance(a,(tuple,list,dict,numpy.ndarray)):
+		a=[a]
+
+	if not isinstance(a,numpy.ndarray):
+		b=[item in s for item in a]
+
+	else:
+		if not isinstance(s,numpy.ndarray):
+			b=numpy.empty_like(a)
+			for i,item in enumerate(a.flat):
+				b.flat[i]=item in s
+		else:
+			b=numpy.in1d(a.flat,s.flat).reshape(a.shape)
+
+	return b
+
+def det(a):
+	import numpy
+
+	if   a.shape==(1,):
+		return a[0]
+	elif a.shape==(1,1):
+		return a[0,0]
+	elif a.shape==(2,2):
+		return a[0,0]*a[1,1]-a[0,1]*a[1,0]
+	else:
+		raise TypeError("MatlabFunc.det only implemented for shape (2, 2), not for shape %s." % str(a.shape))
+
+def sparse(ivec,jvec,svec,m=0,n=0,nzmax=0):
+	import numpy
+
+	if not m:
+		m=numpy.max(ivec)
+	if not n:
+		n=numpy.max(jvec)
+
+	a=numpy.zeros((m,n))
+
+	for i,j,s in zip(ivec.reshape(-1,order='F'),jvec.reshape(-1,order='F'),svec.reshape(-1,order='F')):
+		a[i-1,j-1]+=s
+
+	return a
+
+def heaviside(x):
+	import numpy
+
+	y=numpy.zeros_like(x)
+	y[numpy.nonzero(x> 0.)]=1.
+	y[numpy.nonzero(x==0.)]=0.5
+
+	return y
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/PythonFuncs.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/PythonFuncs.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/PythonFuncs.py	(revision 21239)
@@ -0,0 +1,24 @@
+def logical_and_n(*arg):
+	from numpy import logical_and
+
+	if len(arg):
+		result=arg[0]
+		for item in arg[1:]:
+			result=logical_and(result,item)
+		return result
+
+	else:
+		return None
+
+def logical_or_n(*arg):
+	from numpy import logical_or
+
+	if len(arg):
+		result=arg[0]
+		for item in arg[1:]:
+			result=logical_or(result,item)
+		return result
+
+	else:
+		return None
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/alignsegments.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/alignsegments.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/alignsegments.m	(revision 21239)
@@ -0,0 +1,19 @@
+function newsegments=alignsegments(segments)
+%ALIGNSEGMENTS: 
+% 
+%
+
+	nt=length(segments);
+	newsegments=zeros(nt,3);
+	newsegments(1,:)=segments(1,:);
+
+	for  i=2:nt, 
+		last=newsegments(i-1,2); %last vertex of the previous segment: 
+		for j=1:nt,
+			if last==segments(j,1),
+				%we found the next segment: 
+				newsegments(i,:)=segments(j,:);
+				break;
+			end
+		end
+	end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/colinearity.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/colinearity.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/colinearity.m	(revision 21239)
@@ -0,0 +1,32 @@
+function theta = colinearity(md)
+
+%load some variables (it is much faster if the variab;es are loaded from md once for all) 
+if ~strcmpi(meshtype(md.mesh),'3D'),
+	numberofelements=md.mesh.numberofelements;
+	numberofnodes=md.mesh.numberofvertices;
+	index=md.mesh.elements;
+	x=md.mesh.x; y=md.mesh.y;
+else
+	numberofelements=md.mesh.numberofelements2d;
+	numberofnodes=md.mesh.numberofvertices2d;
+	index=md.mesh.elements2d;
+	x=md.mesh.x2d; y=md.mesh.y2d;
+end
+
+%compute nodal functions coefficients N(x,y)=alpha x + beta y + gamma
+[alpha beta]=GetNodalFunctionsCoeff(index,x,y);
+
+s = averaging(md,md.geometry.surface,2);
+
+summation=[1;1;1];
+dsdx=(s(index).*alpha)*summation;
+dsdy=(s(index).*beta)*summation;
+dsdx = -averaging(md,dsdx,0);
+dsdy = -averaging(md,dsdy,0);
+
+vx = md.inversion.vx_obs;
+vy = md.inversion.vy_obs;
+v  = md.inversion.vel_obs;
+v2 = sqrt(dsdx.^2 + dsdy.^2);
+
+theta = acos((vx.*dsdx + vy.*dsdy)./(v.*v2+eps));
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/colorbars.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/colorbars.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/colorbars.js	(revision 21239)
@@ -0,0 +1,289 @@
+var colorbars={};
+colorbars["jet"]=[[0.000000,0.000000,0.750000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.250000,1.000000],
+[0.000000,0.500000,1.000000],
+[0.000000,0.750000,1.000000],
+[0.000000,1.000000,1.000000],
+[0.250000,1.000000,0.750000],
+[0.500000,1.000000,0.500000],
+[0.750000,1.000000,0.250000],
+[1.000000,1.000000,0.000000],
+[1.000000,0.750000,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,0.250000,0.000000],
+[1.000000,0.000000,0.000000],
+[0.750000,0.000000,0.000000],
+[0.500000,0.000000,0.000000]];
+colorbars["hsv"]=[[1.000000,0.000000,0.000000],
+[1.000000,0.375000,0.000000],
+[1.000000,0.750000,0.000000],
+[0.875000,1.000000,0.000000],
+[0.500000,1.000000,0.000000],
+[0.125000,1.000000,0.000000],
+[0.000000,1.000000,0.250000],
+[0.000000,1.000000,0.625000],
+[0.000000,1.000000,1.000000],
+[0.000000,0.625000,1.000000],
+[0.000000,0.250000,1.000000],
+[0.125000,0.000000,1.000000],
+[0.500000,0.000000,1.000000],
+[0.875000,0.000000,1.000000],
+[1.000000,0.000000,0.750000],
+[1.000000,0.000000,0.375000]];
+colorbars["hot"]=[[0.166667,0.000000,0.000000],
+[0.333333,0.000000,0.000000],
+[0.500000,0.000000,0.000000],
+[0.666667,0.000000,0.000000],
+[0.833333,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,0.166667,0.000000],
+[1.000000,0.333333,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,0.666667,0.000000],
+[1.000000,0.833333,0.000000],
+[1.000000,1.000000,0.000000],
+[1.000000,1.000000,0.250000],
+[1.000000,1.000000,0.500000],
+[1.000000,1.000000,0.750000],
+[1.000000,1.000000,1.000000]];
+colorbars["gray"]=[[0.000000,0.000000,0.000000],
+[0.066667,0.066667,0.066667],
+[0.133333,0.133333,0.133333],
+[0.200000,0.200000,0.200000],
+[0.266667,0.266667,0.266667],
+[0.333333,0.333333,0.333333],
+[0.400000,0.400000,0.400000],
+[0.466667,0.466667,0.466667],
+[0.533333,0.533333,0.533333],
+[0.600000,0.600000,0.600000],
+[0.666667,0.666667,0.666667],
+[0.733333,0.733333,0.733333],
+[0.800000,0.800000,0.800000],
+[0.866667,0.866667,0.866667],
+[0.933333,0.933333,0.933333],
+[1.000000,1.000000,1.000000]];
+colorbars["bone"]=[[0.000000,0.000000,0.020833],
+[0.058333,0.058333,0.100000],
+[0.116667,0.116667,0.179167],
+[0.175000,0.175000,0.258333],
+[0.233333,0.233333,0.337500],
+[0.291667,0.291667,0.416667],
+[0.350000,0.370833,0.475000],
+[0.408333,0.450000,0.533333],
+[0.466667,0.529167,0.591667],
+[0.525000,0.608333,0.650000],
+[0.583333,0.687500,0.708333],
+[0.641667,0.766667,0.766667],
+[0.731250,0.825000,0.825000],
+[0.820833,0.883333,0.883333],
+[0.910417,0.941667,0.941667],
+[1.000000,1.000000,1.000000]];
+colorbars["copper"]=[[0.000000,0.000000,0.000000],
+[0.083333,0.052080,0.033167],
+[0.166667,0.104160,0.066333],
+[0.250000,0.156240,0.099500],
+[0.333333,0.208320,0.132667],
+[0.416667,0.260400,0.165833],
+[0.500000,0.312480,0.199000],
+[0.583333,0.364560,0.232167],
+[0.666667,0.416640,0.265333],
+[0.750000,0.468720,0.298500],
+[0.833333,0.520800,0.331667],
+[0.916667,0.572880,0.364833],
+[1.000000,0.624960,0.398000],
+[1.000000,0.677040,0.431167],
+[1.000000,0.729120,0.464333],
+[1.000000,0.781200,0.497500]];
+colorbars["pink"]=[[0.235702,0.000000,0.000000],
+[0.394405,0.210819,0.210819],
+[0.505525,0.298142,0.298142],
+[0.596285,0.365148,0.365148],
+[0.674949,0.421637,0.421637],
+[0.745356,0.471405,0.471405],
+[0.774597,0.567646,0.516398],
+[0.802773,0.649786,0.557773],
+[0.829993,0.722649,0.596285],
+[0.856349,0.788811,0.632456],
+[0.881917,0.849837,0.666667],
+[0.906765,0.906765,0.699206],
+[0.930949,0.930949,0.785281],
+[0.954521,0.954521,0.862812],
+[0.977525,0.977525,0.933928],
+[1.000000,1.000000,1.000000]];
+colorbars["white"]=[[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000]];
+colorbars["flag"]=[[1.000000,0.000000,0.000000],
+[1.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000]];
+colorbars["lines"]=[[0.000000,0.000000,1.000000],
+[0.000000,0.500000,0.000000],
+[1.000000,0.000000,0.000000],
+[0.000000,0.750000,0.750000],
+[0.750000,0.000000,0.750000],
+[0.750000,0.750000,0.000000],
+[0.250000,0.250000,0.250000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.500000,0.000000],
+[1.000000,0.000000,0.000000],
+[0.000000,0.750000,0.750000],
+[0.750000,0.000000,0.750000],
+[0.750000,0.750000,0.000000],
+[0.250000,0.250000,0.250000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.500000,0.000000]];
+colorbars["colorcube"]=[[1.000000,1.000000,0.000000],
+[0.000000,1.000000,1.000000],
+[1.000000,0.000000,1.000000],
+[0.333333,0.000000,0.000000],
+[0.666667,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[0.000000,0.333333,0.000000],
+[0.000000,0.666667,0.000000],
+[0.000000,1.000000,0.000000],
+[0.000000,0.000000,0.333333],
+[0.000000,0.000000,0.666667],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[0.333333,0.333333,0.333333],
+[0.666667,0.666667,0.666667],
+[1.000000,1.000000,1.000000]];
+colorbars["vga"]=[[1.000000,1.000000,1.000000],
+[0.750000,0.750000,0.750000],
+[1.000000,0.000000,0.000000],
+[1.000000,1.000000,0.000000],
+[0.000000,1.000000,0.000000],
+[0.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[1.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[0.500000,0.500000,0.500000],
+[0.500000,0.000000,0.000000],
+[0.500000,0.500000,0.000000],
+[0.000000,0.500000,0.000000],
+[0.000000,0.500000,0.500000],
+[0.000000,0.000000,0.500000],
+[0.500000,0.000000,0.500000]];
+colorbars["prism"]=[[1.000000,0.000000,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,1.000000,0.000000],
+[0.000000,1.000000,0.000000],
+[0.000000,0.000000,1.000000],
+[0.666667,0.000000,1.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,1.000000,0.000000],
+[0.000000,1.000000,0.000000],
+[0.000000,0.000000,1.000000],
+[0.666667,0.000000,1.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,1.000000,0.000000],
+[0.000000,1.000000,0.000000]];
+colorbars["cool"]=[[0.000000,1.000000,1.000000],
+[0.066667,0.933333,1.000000],
+[0.133333,0.866667,1.000000],
+[0.200000,0.800000,1.000000],
+[0.266667,0.733333,1.000000],
+[0.333333,0.666667,1.000000],
+[0.400000,0.600000,1.000000],
+[0.466667,0.533333,1.000000],
+[0.533333,0.466667,1.000000],
+[0.600000,0.400000,1.000000],
+[0.666667,0.333333,1.000000],
+[0.733333,0.266667,1.000000],
+[0.800000,0.200000,1.000000],
+[0.866667,0.133333,1.000000],
+[0.933333,0.066667,1.000000],
+[1.000000,0.000000,1.000000]];
+colorbars["autumn"]=[[1.000000,0.000000,0.000000],
+[1.000000,0.066667,0.000000],
+[1.000000,0.133333,0.000000],
+[1.000000,0.200000,0.000000],
+[1.000000,0.266667,0.000000],
+[1.000000,0.333333,0.000000],
+[1.000000,0.400000,0.000000],
+[1.000000,0.466667,0.000000],
+[1.000000,0.533333,0.000000],
+[1.000000,0.600000,0.000000],
+[1.000000,0.666667,0.000000],
+[1.000000,0.733333,0.000000],
+[1.000000,0.800000,0.000000],
+[1.000000,0.866667,0.000000],
+[1.000000,0.933333,0.000000],
+[1.000000,1.000000,0.000000]];
+colorbars["spring"]=[[1.000000,0.000000,1.000000],
+[1.000000,0.066667,0.933333],
+[1.000000,0.133333,0.866667],
+[1.000000,0.200000,0.800000],
+[1.000000,0.266667,0.733333],
+[1.000000,0.333333,0.666667],
+[1.000000,0.400000,0.600000],
+[1.000000,0.466667,0.533333],
+[1.000000,0.533333,0.466667],
+[1.000000,0.600000,0.400000],
+[1.000000,0.666667,0.333333],
+[1.000000,0.733333,0.266667],
+[1.000000,0.800000,0.200000],
+[1.000000,0.866667,0.133333],
+[1.000000,0.933333,0.066667],
+[1.000000,1.000000,0.000000]];
+colorbars["winter"]=[[0.000000,0.000000,1.000000],
+[0.000000,0.066667,0.966667],
+[0.000000,0.133333,0.933333],
+[0.000000,0.200000,0.900000],
+[0.000000,0.266667,0.866667],
+[0.000000,0.333333,0.833333],
+[0.000000,0.400000,0.800000],
+[0.000000,0.466667,0.766667],
+[0.000000,0.533333,0.733333],
+[0.000000,0.600000,0.700000],
+[0.000000,0.666667,0.666667],
+[0.000000,0.733333,0.633333],
+[0.000000,0.800000,0.600000],
+[0.000000,0.866667,0.566667],
+[0.000000,0.933333,0.533333],
+[0.000000,1.000000,0.500000]];
+colorbars["summer"]=[[0.000000,0.500000,0.400000],
+[0.066667,0.533333,0.400000],
+[0.133333,0.566667,0.400000],
+[0.200000,0.600000,0.400000],
+[0.266667,0.633333,0.400000],
+[0.333333,0.666667,0.400000],
+[0.400000,0.700000,0.400000],
+[0.466667,0.733333,0.400000],
+[0.533333,0.766667,0.400000],
+[0.600000,0.800000,0.400000],
+[0.666667,0.833333,0.400000],
+[0.733333,0.866667,0.400000],
+[0.800000,0.900000,0.400000],
+[0.866667,0.933333,0.400000],
+[0.933333,0.966667,0.400000],
+[1.000000,1.000000,0.400000]];
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/converttopowerof2.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/converttopowerof2.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/converttopowerof2.m	(revision 21239)
@@ -0,0 +1,33 @@
+function converttopowerof2(tiffname,pngname)
+%CONVERTTOPOWEROF2: read it a tiff, resize it so its xy dimensions are multiples of 2, and convert to png 
+%
+%  Usage:    converttopowerof2('temp.tif','temp.png')
+%
+
+	if ismac,
+		dyld_library_path_old=getenv('DYLD_LIBRARY_PATH');
+		setenv('DYLD_LIBRARY_PATH','/opt/local/lib:/usr/lib');
+	end
+
+	%figure out the size of the tiff
+	[status,width]=system(['tiffinfo ' tiffname ' 2>/dev/null | grep "Image Width" | awk ''{printf("%s\n",$3);}''']); 
+	[status,length]=system(['tiffinfo ' tiffname ' 2>/dev/null | grep "Image Width" | awk ''{printf("%s\n",$6);}''']);
+	width=str2num(width); length=str2num(length);
+
+	
+	%Now, figure out the highest multiple of 2 for both width and length:
+	width=2^nextpow2(width); length=2^nextpow2(length);
+
+	%make sure the width and length are < 2000: 
+	if width>2^11, width=2^11; end
+	if length>2^11, length=2^11; end
+
+	%convert image to that size: 
+	setenv('DYLD_LIBRARY_PATH','/opt/local/lib:/usr/lib');
+	
+	[status,result]=system(sprintf('convert %s -resize %ix%i! %s',tiffname,width,length,pngname));
+	system(sprintf('rm -rf %s',tiffname));
+
+	%reset DYLD_LIBRARY_PATH to what it was:
+	if ismac, setenv('DYLD_LIBRARY_PATH',dyld_library_path_old); end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/fielddisplay.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/fielddisplay.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/fielddisplay.js	(revision 21239)
@@ -0,0 +1,89 @@
+function fielddisplay(md,name,comment){
+//FIELDDISPLAY - display model field
+//
+//   Usage:
+//      fielddisplay(md,name,comment)
+
+	//get field
+	field=md[name];
+
+	//disp corresponding line as a function of field type (offset set as 9 spaces)
+	parsedisplay('         ',name,field,comment);
+}
+
+function parsedisplay(offset,name,field,comment) { //{{{
+
+	//string
+	if (typeof(field) == "string"){
+
+		if (field.length > 30){
+			displayunit(offset,name,"not displayed",comment);
+		}
+		else{
+			displayunit(offset,name,"'"+field+"'",comment);
+		}
+	}
+	//numeric
+	else if (typeof(field) == "number"){
+		
+		displayunit(offset,name,sprintf("%g",field),comment);
+
+	}
+	//logical
+	else if (typeof(field) == "boolean") {
+
+		if (field){
+			displayunit(offset,name,"true",comment);
+		}
+		else{
+			displayunit(offset,name,"false",comment);
+		}
+
+	}
+	//object
+	else if (typeof(field) == "object"){
+
+		if(field.length == 0) displayunit(offset,name,sprintf("(%i)",field.length),comment);
+		else if ((field[0].length==0) | (typeof field[0].length =='undefined')){
+			displayunit(offset,name,sprintf("(%i)",field.length),comment);
+		}
+		else{
+			displayunit(offset,name,sprintf("(%i,%i)",field.length,field[0].length),comment);
+		}
+
+	}
+	else{
+		displayunit(offset,name,"not displayed",comment);
+	}
+} //}}}
+
+function displayunit(offset,name,characterization,comment){ // {{{
+
+	//take care of name
+	if (name.length>23){
+		name=name.slice(0,21) + "...";
+	}
+
+	//take care of characterization
+	if ( characterization == "\" \"" || characterization == "NaN" ){
+	
+		characterization="N/A";
+	}
+	if (characterization.length>15){
+		characterization=characterization.slice(0,13) + "...";
+	}
+
+	//print
+	if (comment.length==0){
+		console.log(sprintf("%s%-23s: %-15s",offset,name,characterization));
+	}
+	else{
+		if (typeof(comment) == "string"){
+			//console.log(sprintf("%s%-23s: %-15s -- %s",offset,name,characterization,comment));
+			console.log(sprintf("%s%s: %-15s -- %s",offset,name,characterization,comment));
+		}
+		else{
+			throw Error("fielddisplay error message: format for comment not supported yet");
+		}
+	}
+} //}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/fielddisplay.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/fielddisplay.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/fielddisplay.m	(revision 21239)
@@ -0,0 +1,151 @@
+function fielddisplay(md,name,comment)
+%FIELDDISPLAY - display model field
+%
+%   Usage:
+%      fielddisplay(md,name,comment)
+
+	%get field
+	field=md.(name);
+
+	%disp corresponding line as a function of field type (offset set as 9 spaces)
+	parsedisplay('         ',name,field,comment);
+
+end %function
+
+function parsedisplay(offset,name,field,comment) %{{{
+
+	%string
+	if ischar(field),
+
+		if length(field)>30;
+			displayunit(offset,name,'not displayed',comment),
+		else
+			displayunit(offset,name,['''' field ''''],comment),
+		end
+
+	%numeric
+	elseif isnumeric(field)
+
+		%get size
+		fieldsize=size(field);
+
+		%double
+		if max(fieldsize)==1,
+			displayunit(offset,name,num2str(field),comment),
+		%matrix
+		else
+			displayunit(offset,name,['(' num2str(fieldsize(1)) 'x' num2str(fieldsize(2)) ')'],comment),
+		end
+
+	%logical
+	elseif islogical(field)
+
+		%get size
+		fieldsize=size(field);
+
+		%single value
+		if max(fieldsize)==1,
+			if (field)
+				displayunit(offset,name,'true',comment),
+			else
+				displayunit(offset,name,'false',comment),
+			end
+		%matrix
+		else
+			displayunit(offset,name,['(' num2str(fieldsize(1)) 'x' num2str(fieldsize(2)) ')'],comment),
+		end
+
+	%structure
+	elseif isstruct(field),
+		struct_display(offset,name,field,comment),
+
+	%cell
+	elseif iscell(field),
+		cell_display(offset,name,field,comment),
+
+	else
+		displayunit(offset,name,'not displayed',comment),
+
+	end
+end%}}}
+
+function struct_display(offset,name,field,comment) % {{{
+
+	if ~isempty(fields(field))
+		displayunit(offset,name,'(structure)',comment),
+		offset=[offset '   '];
+
+		structure_fields=fields(field);
+
+		for i=1:length(structure_fields),
+
+			%get current field
+			sfield=field.(structure_fields{i});
+
+			%display value
+			parsedisplay(offset,structure_fields{i},sfield,'');
+		end
+
+	else
+		displayunit(offset,name,'N/A',comment),
+
+	end
+end% }}}
+function cell_display(offset,name,field,comment) % {{{
+
+	%initialization
+	string='{';
+
+	%go through the cell and fill string
+	if length(field)<5;
+		for i=1:length(field),
+			if ischar(field{i}),
+				string=[string ''''  field{i} ''','];
+			elseif (isnumeric(field{i}) & length(field{i})==1)
+				string=[string num2str(field{i}) ',' ];
+			else
+				string='{';
+				break
+			end
+		end
+	end
+	if strcmp(string,'{'),
+		string=['(' num2str(size(field,1)) 'x' num2str(size(field,2)) ')'];
+	else
+		string=[string(1:end-1) '}'];
+	end
+
+	%call displayunit
+	displayunit(offset,name,string,comment);
+end% }}}
+function displayunit(offset,name,characterization,comment),% {{{
+
+	%take care of name
+	if length(name)>23,
+		name=[name(1:20) '...'];
+	end
+
+	%take care of characterization
+	if (strcmp(characterization,['''' '''']) | strcmp(characterization,'NaN')),
+		characterization='N/A';
+	end
+	if length(characterization)>15,
+		characterization=[characterization(1:12) '...'];
+	end
+
+	%print
+	if isempty(comment)
+		disp(sprintf('%s%-23s: %-15s',offset,name,characterization));
+	else
+		if ischar(comment),
+			disp(sprintf('%s%-23s: %-15s -- %s',offset,name,characterization,comment));
+		elseif iscell(comment),
+			disp(sprintf('%s%-23s: %-15s -- %s',offset,name,characterization,comment{1}));
+			for i=2:length(comment),
+				disp(sprintf('%s%-23s  %-15s    %s',offset,'','',comment{i}));
+			end
+		else
+			error('fielddisplay error message: format for comment not supported yet');
+		end
+	end
+end% }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/fielddisplay.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/fielddisplay.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/fielddisplay.py	(revision 21239)
@@ -0,0 +1,140 @@
+#Module import 
+import numpy
+from math import isnan
+import MatlabFuncs as m
+
+def fielddisplay(md,name,comment):
+	"""
+	FIELDDISPLAY - display model field
+
+	   Usage:
+	      fielddisplay(md,name,comment)
+	"""
+
+	#get field
+	field=getattr(md,name)
+
+	#disp corresponding line as a function of field type (offset set as 9 spaces)
+	return parsedisplay("         ",name,field,comment);
+
+def parsedisplay(offset,name,field,comment):    # {{{ 
+
+	#string
+	if isinstance(field,(str,unicode)):
+
+		if len(field)>30:
+			string=displayunit(offset,name,"not displayed",comment)
+		else:
+			string=displayunit(offset,name,"'%s'" % field,comment)
+
+	#numeric
+	elif isinstance(field,(int,long,float)):
+		string=displayunit(offset,name,str(field),comment) 
+
+	#matrix
+	elif isinstance(field,numpy.ndarray):
+		string=displayunit(offset,name,str(field.shape),comment)
+
+	#logical
+	elif isinstance(field,bool):
+		if field:
+			string=displayunit(offset,name,"True",comment)
+		else:
+			string=displayunit(offset,name,"False",comment)
+	
+	#dictionary
+	elif isinstance(field,dict):
+		string=dict_display(offset,name,field,comment)
+
+	#list or tuple
+	elif isinstance(field,(list,tuple)):
+		string=list_display(offset,name,field,comment)
+
+	#None
+	elif field is None:
+		string=displayunit(offset,name,"None",comment)
+
+	else:
+		string=displayunit(offset,name,"not displayed",comment)
+		
+	return string
+	# }}}
+
+def dict_display(offset,name,field,comment):    # {{{
+
+	if field:
+		string =displayunit(offset,name,'{dictionary}',comment)+'\n'
+		offset+='   '
+
+		for structure_field,sfield in field.iteritems():
+			string+=parsedisplay(offset,str(structure_field),sfield,'')+'\n'
+
+		if string and string[-1]=='\n':
+			string=string[:-1]
+
+	else:
+		string=displayunit(offset,name,'N/A',comment)
+
+	return string
+	# }}}
+
+def list_display(offset,name,field,comment):    # {{{
+
+	#initialization
+	if   isinstance(field,list):
+		sbeg='['
+		send=']'
+	elif isinstance(field,tuple):
+		sbeg='('
+		send=')'
+	string=sbeg
+
+	#go through the cell and fill string
+	if len(field)<5:
+		for fieldi in field:
+			if   isinstance(fieldi,(str,unicode)):
+				string+="'%s'," % fieldi
+			elif isinstance(fieldi,(bool,int,long,float)):
+				string+="%s," % str(fieldi)
+			else:
+				string=sbeg
+				break
+
+	if m.strcmp(string,sbeg):
+		string="%s%dx1%s" % (sbeg,len(field),send)
+	else:
+		string=string[:-1]+send
+
+	#call displayunit
+	return displayunit(offset,name,string,comment)
+	# }}}
+
+def displayunit(offset,name,characterization,comment):    # {{{
+
+	#take care of name
+	if len(name)>23:
+		name="%s..." % name[:20]
+	
+	#take care of characterization
+	if m.strcmp(characterization,"''") or m.strcmp(characterization,'""') or m.strcmpi(characterization,'nan'):
+		characterization="N/A"
+	
+	if len(characterization)>15:
+		characterization="%s..." % characterization[:12]
+	
+	#print
+	if not comment:
+		string="%s%-23s: %-15s" % (offset,name,characterization)
+	else:
+		if   isinstance(comment,(str,unicode)):
+			string="%s%-23s: %-15s -- %s" % (offset,name,characterization,comment)
+		elif isinstance(comment,list):
+			string="%s%-23s: %-15s -- %s" % (offset,name,characterization,comment[0])
+			for commenti in comment:
+				string+="\n%s%-23s  %-15s    %s" % (offset,'','',commenti)
+		else:
+			raise RuntimeError("fielddisplay error message: format for comment not supported yet")
+
+	return string
+	# }}}
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/isnans.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/isnans.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/isnans.m	(revision 21239)
@@ -0,0 +1,14 @@
+function returnvalue=isnans(array)
+%ISNANS: figure out if an array is nan. wrapper to isnan from matlab which stupidly does not allow this test  for structures!
+%
+%  Usage:    isnans(array)
+%
+%  See also : ISNAN 
+
+if isstruct(array), 
+	returnvalue=0;
+elseif iscell(array)
+	returnvalue=0;
+else
+	returnvalue=isnan(array);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/isnans.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/isnans.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/isnans.py	(revision 21239)
@@ -0,0 +1,18 @@
+import numpy
+
+def isnans(array):
+	"""
+	ISNANS: figure out if an array is nan. wrapper to isnan from matlab which stupidly does not allow this test  for structures!
+
+	   Usage:    isnans(array)
+
+	      See also : ISNAN 
+	"""
+
+	if   isinstance(array,(tuple,list,dict)): 
+		returnvalue=0
+	else:
+		returnvalue=numpy.isnan(array)
+
+	return returnvalue
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/issmdoc.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/issmdoc.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/issmdoc.m	(revision 21239)
@@ -0,0 +1,15 @@
+%Quick documentation for ISSM
+
+%First get ISSM tier: 
+ISSM_DIR=issmdir();
+
+disp('  A comprehensive documentation is available on http://issm.jpl.nasa.gov');
+disp('  Example: how to create a square ice shelf');
+disp(['       go to ',ISSM_DIR,'/examples/SquareIceShelf']);
+disp(sprintf('%-63s %s','       md=model;','%creates a new empty model structure'));
+disp(sprintf('%-63s %s','       md=triangle(md,''DomainOutline.exp'',50000);','%creates a mesh of the domain outline with a resolution of 50000 m'));
+disp(sprintf('%-63s %s','       md=setmask(md,''all'','''');','%defines the glacier system as an ice shelf (no island)'));
+disp(sprintf('%-63s %s','       md=parameterize(md,''Square.par'');','%fills all the other fields of the model'));
+disp(sprintf('%-63s %s','       md=setflowequation(md,''SSA'',''all'');','%defines all elements as SSA''s SSA'));
+disp(sprintf('%-63s %s','       md=solve(md,''Stressbalance'');','%solve for stress balance'));
+disp(sprintf('%-63s %s','       plotmodel(md,''data'',md.results.StressbalanceSolution.Vel);','%displays the velocity (type plotdoc for plotmodel help)'));
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/netcdf2struct.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/netcdf2struct.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/netcdf2struct.m	(revision 21239)
@@ -0,0 +1,173 @@
+function S=netcdf2struct(File)
+%NETCDF2STRUCT - load netcdf file and convert to a matlab structure
+%
+%   Usage:
+%      S=netcdf2struct(File);
+
+	%Read netcdf file
+	data=readnetcdf(File);
+
+	%initialize output
+	S=struct();
+
+	%All the variables are in VarArray field
+	variables=data.VarArray;
+	for i=1:size(variables,2),
+		fieldname=deblank(variables(i).Str);
+		fieldvalue=double(squeeze(variables(i).Data));
+		S.(fieldname)=fieldvalue;
+	end
+
+	%All the variables are in AttArray field
+	variables=data.AttArray;
+	for i=1:size(variables,2),
+		fieldname=deblank(variables(i).Str);
+		fieldvalue=double(variables(i).Val);
+		S.(fieldname)=fieldvalue;
+	end
+end
+
+function S = readnetcdf(File,varargin)
+% Function to read NetCDF files
+%   S = netcdf(File)
+% Input Arguments
+%   File = NetCDF file to read
+% Optional Input Arguments:
+%   'Var',Var - Read data for VarArray(Var), default [1:length(S.VarArray)]
+%   'Rec',Rec - Read data for Record(Rec), default [1:S.NumRecs]
+% Output Arguments:
+%   S    = Structure of NetCDF data organised as per NetCDF definition
+% Notes:
+%   Only version 1, classic 32bit, NetCDF files are supported. By default
+% data are extracted into the S.VarArray().Data field for all variables.
+% To read the header only call S = netcdf(File,'Var',[]);
+%
+% SEE ALSO
+% ---------------------------------------------------------------------------
+S = [];
+
+try
+   if exist(File,'file') fp = fopen(File,'r','b');
+   else fp = []; error('File not found'); end
+   if fp == -1   error('Unable to open file'); end
+
+% Read header
+   Magic = fread(fp,4,'uint8=>char');
+   if strcmp(Magic(1:3),'CDF') error('Not a NetCDF file'); end
+   if uint8(Magic(4))~=1       error('Version not supported'); end
+   S.NumRecs  = fread(fp,1,'uint32=>uint32');
+   S.DimArray = DimArray(fp);
+   S.AttArray = AttArray(fp);
+   S.VarArray = VarArray(fp);
+
+% Setup indexing to arrays and records
+   Var = ones(1,length(S.VarArray));
+   Rec = ones(1,S.NumRecs);
+   for i = 1:2:length(varargin)
+      if     strcmp(upper(varargin{i}),'VAR') Var=Var*0; Var(varargin{i+1})=1;
+      elseif strcmp(upper(varargin{i}),'REC') Rec=Rec*0; Rec(varargin{i+1})=1;
+      else error('Optional input argument not recognised'); end
+   end
+   if sum(Var)==0 fclose(fp); return; end
+
+% Read non-record variables
+   Dim = double(cat(2,S.DimArray.Dim));
+   ID  = double(cat(2,S.VarArray.Type));
+
+   for i = 1:length(S.VarArray)
+      D = Dim(S.VarArray(i).DimID+1); N = prod(D); RecID{i}=find(D==0);
+      if isempty(RecID{i})
+         if length(D)==0 D = [1,1]; N = 1; elseif length(D)==1 D=[D,1]; end
+         if Var(i)
+            S.VarArray(i).Data = ReOrder(fread(fp,N,[Type(ID(i)),'=>',Type(ID(i))]),D);
+            fread(fp,(Pad(N,ID(i))-N)*Size(ID(i)),'uint8=>uint8');
+         else fseek(fp,Pad(N,ID(i))*Size(ID(i)),'cof'); end
+      else S.VarArray(i).Data = []; end
+   end
+
+% Read record variables
+   for k = 1:S.NumRecs
+      for i = 1:length(S.VarArray)
+         if ~isempty(RecID{i})
+            D = Dim(S.VarArray(i).DimID+1); D(RecID{i}) = 1; N = prod(D);
+            if length(D)==1 D=[D,1]; end
+            if Var(i) & Rec(k)
+               S.VarArray(i).Data = cat(RecID{i},S.VarArray(i).Data,...
+                  ReOrder(fread(fp,N,[Type(ID(i)),'=>',Type(ID(i))]),D));
+               if N > 1 fread(fp,(Pad(N,ID(i))-N)*Size(ID(i)),'uint8=>uint8'); end
+            else fseek(fp,Pad(N,ID(i))*Size(ID(i)),'cof'); end
+         end
+      end
+   end
+
+   fclose(fp);
+catch
+   Err = lasterror; fprintf('%s\n',Err.message);
+   if ~isempty(fp) && fp ~= -1 fclose(fp); end
+end
+
+% ---------------------------------------------------------------------------------------
+% Utility functions
+
+function S = Size(ID)
+% Size of NetCDF data type, ID, in bytes
+   S = subsref([1,1,2,4,4,8],struct('type','()','subs',{{ID}}));
+end
+
+function T = Type(ID)
+% Matlab string for CDF data type, ID
+   T = subsref({'int8','char','int16','int32','single','double'},...
+		struct('type','{}','subs',{{ID}}));
+end
+
+function N = Pad(Num,ID)
+% Number of elements to read after padding to 4 bytes for type ID
+   N = (double(Num) + mod(4-double(Num)*Size(ID),4)/Size(ID)).*(Num~=0);
+end
+
+function S = String(fp)
+% Read a CDF string; Size,[String,[Padding]]
+   S = fread(fp,Pad(fread(fp,1,'uint32=>uint32'),1),'uint8=>char').';
+end
+
+function A = ReOrder(A,S)
+% Rearrange CDF array A to size S with matlab ordering
+   A = permute(reshape(A,fliplr(S)),fliplr(1:length(S)));
+end
+
+function S = DimArray(fp)
+% Read DimArray into structure
+   if fread(fp,1,'uint32=>uint32') == 10 % NC_DIMENSION
+      for i = 1:fread(fp,1,'uint32=>uint32')
+         S(i).Str = String(fp);
+         S(i).Dim = fread(fp,1,'uint32=>uint32');
+      end
+   else fread(fp,1,'uint32=>uint32'); S = []; end
+end
+
+function S = AttArray(fp)
+% Read AttArray into structure
+   if fread(fp,1,'uint32=>uint32') == 12 % NC_ATTRIBUTE
+      for i = 1:fread(fp,1,'uint32=>uint32')
+         S(i).Str = String(fp);
+         ID       = fread(fp,1,'uint32=>uint32');
+         Num      = fread(fp,1,'uint32=>uint32');
+         S(i).Val = fread(fp,Pad(Num,ID),[Type(ID),'=>',Type(ID)]).';
+      end
+   else fread(fp,1,'uint32=>uint32'); S = []; end
+end
+
+function S = VarArray(fp)
+% Read VarArray into structure
+   if fread(fp,1,'uint32=>uint32') == 11 % NC_VARIABLE
+      for i = 1:fread(fp,1,'uint32=>uint32')
+         S(i).Str      = String(fp);
+         Num           = double(fread(fp,1,'uint32=>uint32'));
+         S(i).DimID    = double(fread(fp,Num,'uint32=>uint32'));
+         S(i).AttArray = AttArray(fp);
+         S(i).Type     = fread(fp,1,'uint32=>uint32');
+         S(i).VSize    = fread(fp,1,'uint32=>uint32');
+         S(i).Begin    = fread(fp,1,'uint32=>uint32'); % Classic 32 bit format only
+      end
+   else fread(fp,1,'uint32=>uint32'); S = []; end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/normcdf_issm.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/normcdf_issm.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/normcdf_issm.m	(revision 21239)
@@ -0,0 +1,8 @@
+%
+%  wrapper for normcdf to avoid using the matlab statistics toolbox.
+%
+function [p]=normcdf_issm(x,mu,sigma)
+
+	p=(1.+erf((x-mu)/(sigma*sqrt(2.))))/2.;
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/normfit_issm.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/normfit_issm.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/normfit_issm.m	(revision 21239)
@@ -0,0 +1,61 @@
+%
+%  wrapper for normfit to avoid using the matlab statistics toolbox.
+%
+function [muhat,sigmahat,muci,sigmaci]=normfit_issm(x,alpha)
+
+	if ~exist('alpha','var')
+		alpha=0.05;
+	end
+
+%  check for any NaN in any columns
+
+	if ~any(any((isnan(x))))
+
+%  explicitly calculate the moments
+
+		muhat   =mean(x);
+		sigmahat=std(x);
+
+		if (nargout>2)
+			prob=1.-alpha/2.;
+
+			if (size(x,1) == 1)
+				% operate like matlab normfit, mean, std, etc.
+				n=length(x);
+			else
+				n=size(x,1);
+			end
+
+			muci    =zeros(2,length(muhat   ));
+			sigmaci =zeros(2,length(sigmahat));
+
+			try
+				muci(1,:)   =muhat-tinv(prob,n-1)*sigmahat/sqrt(n);
+				muci(2,:)   =muhat+tinv(prob,n-1)*sigmahat/sqrt(n);
+				sigmaci(1,:)=sigmahat*sqrt((n-1)/chi2inv(prob   ,n-1));
+				sigmaci(2,:)=sigmahat*sqrt((n-1)/chi2inv(1.-prob,n-1));
+			catch me
+				muci(1,:)   =muhat;
+				muci(2,:)   =muhat;
+				sigmaci(1,:)=sigmahat;
+				sigmaci(2,:)=sigmahat;
+			end
+		end
+
+	else
+
+%  must loop over columns, since number of elements could be different
+
+		muhat   =zeros(1,size(x,2));
+		sigmahat=zeros(1,size(x,2));
+		muci    =zeros(2,size(x,2));
+		sigmaci =zeros(2,size(x,2));
+
+%  remove any NaN and recursively call column
+
+		for j=1:size(x,2)
+			[muhat(j),sigmahat(j),muci(:,j),sigmaci(:,j)]=normfit_issm(x(~isnan(x(:,j)),j),alpha);
+		end
+	end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/norminv_issm.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/norminv_issm.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/norminv_issm.m	(revision 21239)
@@ -0,0 +1,8 @@
+%
+%  wrapper for norminv to avoid using the matlab statistics toolbox.
+%
+function [x]=norminv_issm(p,mu,sigma)
+
+	x=mu+sigma*sqrt(2.)*erfinv(2.*p-1.);
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/parallelrange.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/parallelrange.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/parallelrange.m	(revision 21239)
@@ -0,0 +1,22 @@
+function [i1,i2]=parallelrange(rank,numprocs,globalsize)
+%PARALLELRANGE - from a rank, and a number of processors, figure out a range, for parallel tasks.
+%
+%   Usage: 
+%      [i1,i1]=parallelrange(rank,numprocs,globalsize)
+
+num_local_rows=zeros(numprocs,1);
+
+for i=1:numprocs,
+	%we use floor. we under distribute rows. The rows left  are then redistributed, therefore resulting in a more even distribution.
+	num_local_rows(i)=floor(globalsize/numprocs);
+end
+
+%There may be some rows left. Distribute evenly.
+row_rest=globalsize - numprocs*floor(globalsize/numprocs);
+
+for i=1:row_rest,
+	num_local_rows(i)=num_local_rows(i)+1;
+end
+
+i1=sum(num_local_rows(1:rank-1))+1;
+i2=i1+num_local_rows(rank)-1;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/parallelrange.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/parallelrange.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/parallelrange.py	(revision 21239)
@@ -0,0 +1,25 @@
+#! /usr/bin/env python
+def parallelrange(rank,numprocs,globalsize):
+	"""
+	PARALLELRANGE - from a rank, and a number of processors, figure out a range, for parallel tasks.
+ 
+	   Usage: 
+	      i1,i2=parallelrange(rank,numprocs,globalsize)
+	"""
+
+	#We use floor. we under distribute rows. The rows left are then redistributed, therefore resulting in a more even distribution.
+	num_local_rows=[int(globalsize/numprocs) for i in xrange(numprocs)]
+
+	#There may be some rows left. Distribute evenly.
+	row_rest=globalsize - numprocs*int(globalsize/numprocs)
+
+	for i in xrange(row_rest):
+		num_local_rows[i]=num_local_rows[i]+1
+
+	i1=0
+	for i in xrange(rank-1):
+		i1+=num_local_rows[i]
+	i2=i1+num_local_rows[rank-1]-1
+
+	return i1,i2
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/prctile_issm.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/prctile_issm.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/prctile_issm.m	(revision 21239)
@@ -0,0 +1,86 @@
+%
+%  wrapper for prctile to avoid using the matlab statistics toolbox.
+%
+function [y]=prctile_issm(x,p,dim)
+
+	try
+		y=prctile(argin{:});
+
+	catch me
+
+		if length(size(x)) > 2
+			error('Number of dimensions %d not implemented.',length(size(x)));
+		end
+		if ~exist('dim','var')
+			dim=0;
+			for i=1:length(size(x))
+				if ~dim && size(x,i)>1
+					dim=i;
+				end
+			end
+			if ~dim
+				dim=1;
+			end
+		end
+
+		psize=size(p);
+		if size(p,2)>1
+			p=transpose(p);
+		end
+
+		xsize=size(x);
+		if dim==2
+			x=transpose(x);
+		end
+
+%  check for any NaN in any columns
+
+		if ~any(any((isnan(x))))
+			x=sort(x,1);
+			n=size(x,1);
+
+%  branch based on number of elements
+
+			if     n>1
+
+%  set up percent values and interpolate
+
+				xi=transpose(100.*([1:n]-0.5)/n);
+				y=interp1q(xi,x,p);
+
+%  fill in high and low values
+
+				y(p<xi(1),:)=repmat(x(1,:),nnz(p<xi(1)),1);
+				y(p>xi(n),:)=repmat(x(n,:),nnz(p>xi(n)),1);
+
+%  if one value, just copy it
+
+			elseif n==1
+				y=repmat(x(1,:),length(p),1);
+
+%  if no values, use NaN
+
+			else
+				y=repmat(NaN,size(p,1),size(x,2));
+			end
+
+		else
+
+%  must loop over columns, since number of elements could be different
+
+			y=zeros(size(p,1),size(x,2));
+			for j=1:size(x,2)
+
+%  remove any NaN and recursively call column
+
+				y(:,j)=prctile_issm(x(~isnan(x(:,j)),j),p);
+			end
+		end
+
+		if (min(xsize)==1 && xsize(dim)>1 && psize(2)>1) || ...
+		   (min(xsize)> 1 && dim==2)
+			y=transpose(y);
+		end
+	end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/readnetcdf.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/readnetcdf.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/readnetcdf.m	(revision 21239)
@@ -0,0 +1,185 @@
+function S = readnetcdf(File,varargin)
+% Function to read NetCDF files
+%   S = netcdf(File)
+% Input Arguments
+%   File = NetCDF file to read
+% Optional Input Arguments:
+%   'Var',Var - Read data for VarArray(Var), default [1:length(S.VarArray)]
+%   'Rec',Rec - Read data for Record(Rec), default [1:S.NumRecs]
+% Output Arguments:
+%   S    = Structure of NetCDF data organised as per NetCDF definition
+% Notes:
+%   Only version 1, classic 32bit, NetCDF files are supported. By default
+% data are extracted into the S.VarArray().Data field for all variables.
+% To read the header only call S = netcdf(File,'Var',[]);
+%
+% SEE ALSO
+% ---------------------------------------------------------------------------
+S = [];
+
+try
+   if exist(File,'file') 
+		fp = fopen(File,'r','b');
+   else 
+		fp = []; 
+		error('File not found'); 
+	end
+   
+	if fp == -1   
+		error('Unable to open file'); 
+	end
+
+% Read header
+   Magic = fread(fp,4,'uint8=>char');
+   if strcmp(Magic(1:3),'CDF') 
+		error('Not a NetCDF file'); 
+	end
+   if uint8(Magic(4))~=1       
+		error('Version not supported'); 
+	end
+  
+	S.NumRecs  = fread(fp,1,'uint32=>uint32');
+   S.DimArray = DimArray(fp);
+   S.AttArray = AttArray(fp);
+   S.VarArray = VarArray(fp);
+
+% Setup indexing to arrays and records
+   Var = ones(1,length(S.VarArray));
+   Rec = ones(1,S.NumRecs);
+   for i = 1:2:length(varargin)
+      if     strcmp(upper(varargin{i}),'VAR') 
+			Var=Var*0; 
+			Var(varargin{i+1})=1;
+      elseif strcmp(upper(varargin{i}),'REC') 
+			Rec=Rec*0; 
+			Rec(varargin{i+1})=1;
+      else 
+			error('Optional input argument not recognised'); 
+		end
+   end
+   
+	if sum(Var)==0 
+		fclose(fp); 
+		return; 
+	end
+
+% Read non-record variables
+   Dim = double(cat(2,S.DimArray.Dim));
+   ID  = double(cat(2,S.VarArray.Type));
+
+   for i = 1:length(S.VarArray)
+      D = Dim(S.VarArray(i).DimID+1); N = prod(D); RecID{i}=find(D==0);
+      if isempty(RecID{i})
+         if length(D)==0 
+				D = [1,1]; 
+				N = 1; 
+			elseif length(D)==1 
+				D=[D,1]; 
+			end
+
+         if Var(i)
+            S.VarArray(i).Data = ReOrder(fread(fp,N,[Type(ID(i)),'=>',Type(ID(i))]),D);
+            fread(fp,(Pad(N,ID(i))-N)*Size(ID(i)),'uint8=>uint8');
+         else 
+				fseek(fp,Pad(N,ID(i))*Size(ID(i)),'cof'); 
+			end
+      else 
+			S.VarArray(i).Data = []; 
+		end
+   end
+
+% Read record variables
+   for k = 1:S.NumRecs
+      for i = 1:length(S.VarArray)
+         if ~isempty(RecID{i})
+            D = Dim(S.VarArray(i).DimID+1); D(RecID{i}) = 1; N = prod(D);
+            if length(D)==1 
+					D=[D,1]; 
+				end
+            if Var(i) & Rec(k)
+               S.VarArray(i).Data = cat(RecID{i},S.VarArray(i).Data,...
+                  ReOrder(fread(fp,N,[Type(ID(i)),'=>',Type(ID(i))]),D));
+               if N > 1 
+						fread(fp,(Pad(N,ID(i))-N)*Size(ID(i)),'uint8=>uint8'); 
+					end
+            else 
+					fseek(fp,Pad(N,ID(i))*Size(ID(i)),'cof'); 
+				end
+         end
+      end
+   end
+
+   fclose(fp);
+catch
+   Err = lasterror; fprintf('%s\n',Err.message);
+   if ~isempty(fp) && fp ~= -1 
+		fclose(fp); 
+	end
+end
+end
+
+% ---------------------------------------------------------------------------------------
+% Utility functions
+
+function S = Size(ID)
+% Size of NetCDF data type, ID, in bytes
+   S = subsref([1,1,2,4,4,8],struct('type','()','subs',{{ID}}));
+end
+
+function T = Type(ID)
+% Matlab string for CDF data type, ID
+   T = subsref({'int8','char','int16','int32','single','double'},...
+		struct('type','{}','subs',{{ID}}));
+end
+
+function N = Pad(Num,ID)
+% Number of elements to read after padding to 4 bytes for type ID
+   N = (double(Num) + mod(4-double(Num)*Size(ID),4)/Size(ID)).*(Num~=0);
+end
+
+function S = String(fp)
+% Read a CDF string; Size,[String,[Padding]]
+   S = fread(fp,Pad(fread(fp,1,'uint32=>uint32'),1),'uint8=>char').';
+end
+
+function A = ReOrder(A,S)
+% Rearrange CDF array A to size S with matlab ordering
+   A = permute(reshape(A,fliplr(S)),fliplr(1:length(S)));
+end
+
+function S = DimArray(fp)
+% Read DimArray into structure
+   if fread(fp,1,'uint32=>uint32') == 10 % NC_DIMENSION
+      for i = 1:fread(fp,1,'uint32=>uint32')
+         S(i).Str = String(fp);
+         S(i).Dim = fread(fp,1,'uint32=>uint32');
+      end
+   else fread(fp,1,'uint32=>uint32'); S = []; end
+end
+
+function S = AttArray(fp)
+% Read AttArray into structure
+   if fread(fp,1,'uint32=>uint32') == 12 % NC_ATTRIBUTE
+      for i = 1:fread(fp,1,'uint32=>uint32')
+         S(i).Str = String(fp);
+         ID       = fread(fp,1,'uint32=>uint32');
+         Num      = fread(fp,1,'uint32=>uint32');
+         S(i).Val = fread(fp,Pad(Num,ID),[Type(ID),'=>',Type(ID)]).';
+      end
+   else fread(fp,1,'uint32=>uint32'); S = []; end
+end
+
+function S = VarArray(fp)
+% Read VarArray into structure
+   if fread(fp,1,'uint32=>uint32') == 11 % NC_VARIABLE
+      for i = 1:fread(fp,1,'uint32=>uint32')
+         S(i).Str      = String(fp);
+         Num           = double(fread(fp,1,'uint32=>uint32'));
+         S(i).DimID    = double(fread(fp,Num,'uint32=>uint32'));
+         S(i).AttArray = AttArray(fp);
+         S(i).Type     = fread(fp,1,'uint32=>uint32');
+         S(i).VSize    = fread(fp,1,'uint32=>uint32');
+         S(i).Begin    = fread(fp,1,'uint32=>uint32'); % Classic 32 bit format only
+      end
+   else fread(fp,1,'uint32=>uint32'); S = []; end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/rgbcolor.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/rgbcolor.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/rgbcolor.js	(revision 21239)
@@ -0,0 +1,288 @@
+/**
+ * A class to parse color values
+ * @author Stoyan Stefanov <sstoo@gmail.com>
+ * @link   http://www.phpied.com/rgb-color-parser-in-javascript/
+ * @license Use it if you like it
+ */
+function RGBColor(color_string)
+{
+    this.ok = false;
+
+    // strip any leading #
+    if (color_string.charAt(0) == '#') { // remove # if any
+        color_string = color_string.substr(1,6);
+    }
+
+    color_string = color_string.replace(/ /g,'');
+    color_string = color_string.toLowerCase();
+
+    // before getting into regexps, try simple matches
+    // and overwrite the input
+    var simple_colors = {
+        aliceblue: 'f0f8ff',
+        antiquewhite: 'faebd7',
+        aqua: '00ffff',
+        aquamarine: '7fffd4',
+        azure: 'f0ffff',
+        beige: 'f5f5dc',
+        bisque: 'ffe4c4',
+        black: '000000',
+        blanchedalmond: 'ffebcd',
+        blue: '0000ff',
+        blueviolet: '8a2be2',
+        brown: 'a52a2a',
+        burlywood: 'deb887',
+        cadetblue: '5f9ea0',
+        chartreuse: '7fff00',
+        chocolate: 'd2691e',
+        coral: 'ff7f50',
+        cornflowerblue: '6495ed',
+        cornsilk: 'fff8dc',
+        crimson: 'dc143c',
+        cyan: '00ffff',
+        darkblue: '00008b',
+        darkcyan: '008b8b',
+        darkgoldenrod: 'b8860b',
+        darkgray: 'a9a9a9',
+        darkgreen: '006400',
+        darkkhaki: 'bdb76b',
+        darkmagenta: '8b008b',
+        darkolivegreen: '556b2f',
+        darkorange: 'ff8c00',
+        darkorchid: '9932cc',
+        darkred: '8b0000',
+        darksalmon: 'e9967a',
+        darkseagreen: '8fbc8f',
+        darkslateblue: '483d8b',
+        darkslategray: '2f4f4f',
+        darkturquoise: '00ced1',
+        darkviolet: '9400d3',
+        deeppink: 'ff1493',
+        deepskyblue: '00bfff',
+        dimgray: '696969',
+        dodgerblue: '1e90ff',
+        feldspar: 'd19275',
+        firebrick: 'b22222',
+        floralwhite: 'fffaf0',
+        forestgreen: '228b22',
+        fuchsia: 'ff00ff',
+        gainsboro: 'dcdcdc',
+        ghostwhite: 'f8f8ff',
+        gold: 'ffd700',
+        goldenrod: 'daa520',
+        gray: '808080',
+        green: '008000',
+        greenyellow: 'adff2f',
+        honeydew: 'f0fff0',
+        hotpink: 'ff69b4',
+        indianred : 'cd5c5c',
+        indigo : '4b0082',
+        ivory: 'fffff0',
+        khaki: 'f0e68c',
+        lavender: 'e6e6fa',
+        lavenderblush: 'fff0f5',
+        lawngreen: '7cfc00',
+        lemonchiffon: 'fffacd',
+        lightblue: 'add8e6',
+        lightcoral: 'f08080',
+        lightcyan: 'e0ffff',
+        lightgoldenrodyellow: 'fafad2',
+        lightgrey: 'd3d3d3',
+        lightgreen: '90ee90',
+        lightpink: 'ffb6c1',
+        lightsalmon: 'ffa07a',
+        lightseagreen: '20b2aa',
+        lightskyblue: '87cefa',
+        lightslateblue: '8470ff',
+        lightslategray: '778899',
+        lightsteelblue: 'b0c4de',
+        lightyellow: 'ffffe0',
+        lime: '00ff00',
+        limegreen: '32cd32',
+        linen: 'faf0e6',
+        magenta: 'ff00ff',
+        maroon: '800000',
+        mediumaquamarine: '66cdaa',
+        mediumblue: '0000cd',
+        mediumorchid: 'ba55d3',
+        mediumpurple: '9370d8',
+        mediumseagreen: '3cb371',
+        mediumslateblue: '7b68ee',
+        mediumspringgreen: '00fa9a',
+        mediumturquoise: '48d1cc',
+        mediumvioletred: 'c71585',
+        midnightblue: '191970',
+        mintcream: 'f5fffa',
+        mistyrose: 'ffe4e1',
+        moccasin: 'ffe4b5',
+        navajowhite: 'ffdead',
+        navy: '000080',
+        oldlace: 'fdf5e6',
+        olive: '808000',
+        olivedrab: '6b8e23',
+        orange: 'ffa500',
+        orangered: 'ff4500',
+        orchid: 'da70d6',
+        palegoldenrod: 'eee8aa',
+        palegreen: '98fb98',
+        paleturquoise: 'afeeee',
+        palevioletred: 'd87093',
+        papayawhip: 'ffefd5',
+        peachpuff: 'ffdab9',
+        peru: 'cd853f',
+        pink: 'ffc0cb',
+        plum: 'dda0dd',
+        powderblue: 'b0e0e6',
+        purple: '800080',
+        red: 'ff0000',
+        rosybrown: 'bc8f8f',
+        royalblue: '4169e1',
+        saddlebrown: '8b4513',
+        salmon: 'fa8072',
+        sandybrown: 'f4a460',
+        seagreen: '2e8b57',
+        seashell: 'fff5ee',
+        sienna: 'a0522d',
+        silver: 'c0c0c0',
+        skyblue: '87ceeb',
+        slateblue: '6a5acd',
+        slategray: '708090',
+        snow: 'fffafa',
+        springgreen: '00ff7f',
+        steelblue: '4682b4',
+        tan: 'd2b48c',
+        teal: '008080',
+        thistle: 'd8bfd8',
+        tomato: 'ff6347',
+        turquoise: '40e0d0',
+        violet: 'ee82ee',
+        violetred: 'd02090',
+        wheat: 'f5deb3',
+        white: 'ffffff',
+        whitesmoke: 'f5f5f5',
+        yellow: 'ffff00',
+        yellowgreen: '9acd32'
+    };
+    for (var key in simple_colors) {
+        if (color_string == key) {
+            color_string = simple_colors[key];
+        }
+    }
+    // emd of simple type-in colors
+
+    // array of color definition objects
+    var color_defs = [
+        {
+            re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
+            example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1]),
+                    parseInt(bits[2]),
+                    parseInt(bits[3])
+                ];
+            }
+        },
+        {
+            re: /^(\w{2})(\w{2})(\w{2})$/,
+            example: ['#00ff00', '336699'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1], 16),
+                    parseInt(bits[2], 16),
+                    parseInt(bits[3], 16)
+                ];
+            }
+        },
+        {
+            re: /^(\w{1})(\w{1})(\w{1})$/,
+            example: ['#fb0', 'f0f'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1] + bits[1], 16),
+                    parseInt(bits[2] + bits[2], 16),
+                    parseInt(bits[3] + bits[3], 16)
+                ];
+            }
+        }
+    ];
+
+    // search through the definitions to find a match
+    for (var i = 0; i < color_defs.length; i++) {
+        var re = color_defs[i].re;
+        var processor = color_defs[i].process;
+        var bits = re.exec(color_string);
+        if (bits) {
+            channels = processor(bits);
+            this.r = channels[0];
+            this.g = channels[1];
+            this.b = channels[2];
+            this.ok = true;
+        }
+
+    }
+
+    // validate/cleanup values
+    this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);
+    this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);
+    this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);
+
+    // some getters
+    this.toRGB = function () {
+        return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';
+    }
+    this.toHex = function () {
+        var r = this.r.toString(16);
+        var g = this.g.toString(16);
+        var b = this.b.toString(16);
+        if (r.length == 1) r = '0' + r;
+        if (g.length == 1) g = '0' + g;
+        if (b.length == 1) b = '0' + b;
+        return '#' + r + g + b;
+    }
+
+    // help
+    this.getHelpXML = function () {
+
+        var examples = new Array();
+        // add regexps
+        for (var i = 0; i < color_defs.length; i++) {
+            var example = color_defs[i].example;
+            for (var j = 0; j < example.length; j++) {
+                examples[examples.length] = example[j];
+            }
+        }
+        // add type-in colors
+        for (var sc in simple_colors) {
+            examples[examples.length] = sc;
+        }
+
+        var xml = document.createElement('ul');
+        xml.setAttribute('id', 'rgbcolor-examples');
+        for (var i = 0; i < examples.length; i++) {
+            try {
+                var list_item = document.createElement('li');
+                var list_color = new RGBColor(examples[i]);
+                var example_div = document.createElement('div');
+                example_div.style.cssText =
+                        'margin: 3px; '
+                        + 'border: 1px solid black; '
+                        + 'background:' + list_color.toHex() + '; '
+                        + 'color:' + list_color.toHex()
+                ;
+                example_div.appendChild(document.createTextNode('test'));
+                var list_item_value = document.createTextNode(
+                    ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()
+                );
+                list_item.appendChild(example_div);
+                list_item.appendChild(list_item_value);
+                xml.appendChild(list_item);
+
+            } catch(e){}
+        }
+        return xml;
+
+    }
+
+}
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/round_ice.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/round_ice.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/round_ice.m	(revision 21239)
@@ -0,0 +1,36 @@
+function new_x=round_ice(x,numnonzeros)
+%ROUND_ICE - rounds up x so that it has only numnonzeros non zero digits
+%
+%   numnonzeros must be an integer larger or equal to 1
+%
+%   Usage:
+%      new_x=round_ice(x,numnonzeros)
+
+%some checks
+if (nargin ~=2 | nargout>1),
+	error('round_ice usage: new_x=round_ice(x,numonzeros)');
+end
+if ~isnumeric(x)
+	error('round_ice error message: x must be a number and numzeros an integer');
+end
+if round(numnonzeros)~=numnonzeros
+	error('round_ice error message: numnonzeros must be an integer larger or equal to 1')
+end
+if any(numnonzeros<1)
+	error('round_ice error message: numnonzeros must be an integer larger or equal to 1')
+end
+if (length(numnonzeros)~=1 & size(numnonzeros)~=size(x))
+	error('round_ice error message: numnonzeros must be an integer larger or equal to 1 or a list of integers of length length(x)')
+end
+
+%figure out how long x is
+lengthx=ceil(log10(abs(x)));
+
+%if x contains 0, lengthx=-Inf
+lengthx(isinf(lengthx))=1;
+
+%get its sign
+si=sign(x);
+
+%rule out zeros
+new_x=si.*round(abs(x).*10.^(-lengthx+numnonzeros)).*10.^(lengthx-numnonzeros);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/structtoobj.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/structtoobj.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/structtoobj.m	(revision 21239)
@@ -0,0 +1,16 @@
+function obj=structtoobj(obj,S),
+%Convert struct to object
+
+	%Get object and structure fields
+	structfields=fields(S);
+	objprops    =properties(class(obj));
+
+	%recover object properties
+	for i=1:length(structfields),
+		fieldname =structfields{i};
+		if ismember(fieldname,objprops),
+			fieldvalue=getfield(S,fieldname);
+			obj=setfield(obj,fieldname,fieldvalue);
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/transientrestart.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/transientrestart.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/transientrestart.m	(revision 21239)
@@ -0,0 +1,47 @@
+function md = transientrestart(md)
+%TRANSIENTRESTART - reinitialize model from last transient step
+%
+%   Usage:
+%      md = transientrestart(md)
+
+%Get result and save it again
+results = md.results.TransientSolution(end);
+
+newname = ['TransientSolution' num2str(numel(fields(md.results))+1)];
+if isfield(md.results,newname)
+	error(['Cannot save ' newname ' in md.results']);
+else
+	disp(['Moving results to ' newname]);
+	md.results.(newname) = md.results.TransientSolution;
+	md.results.TransientSolution  = struct();
+end
+
+%Change time
+md.timestepping.start_time = results.time;
+
+%Change initialization fields
+if isfield(results,'Vx'),          md.initialization.vx=results.Vx; end
+if isfield(results,'Vy'),          md.initialization.vy=results.Vy; end
+if isfield(results,'Vz'),          md.initialization.vz=results.Vz; end
+if isfield(results,'Temperature'), md.initialization.temperature=results.Temperature; end
+if isfield(results,'Pressure'),    md.initialization.pressure=results.Pressure; end
+
+%Deal with new geometry
+if isfield(results,'Base') & isfield(results,'Thickness'),
+	base=results.Base;
+	thickness=results.Thickness;
+	if isa(md.mesh,'mesh3dprisms')
+		md.mesh.z=base+thickness./md.geometry.thickness.*(md.mesh.z-md.geometry.base);
+	end
+	md.geometry.base=base;
+	md.geometry.thickness=thickness;
+	md.geometry.surface=md.geometry.base+md.geometry.thickness;
+end
+
+%Update mask
+if isfield(results,'MaskGroundediceLevelset'),
+	md.mask.groundedice_levelset = results.MaskGroundediceLevelset;
+end
+if isfield(results,'MaskIceLevelset'),
+	md.mask.ice_levelset = results.MaskIceLevelset;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/vorticity.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/vorticity.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/miscellaneous/vorticity.m	(revision 21239)
@@ -0,0 +1,33 @@
+function rot = vorticity(md,vx,vy)
+%VORTICITY - calculates 2d vorticity
+%
+%   rot = d/dx(vy) - d/dy(vx)
+%
+%   Usage:
+%      rot = vorticity(vx,vy)
+
+
+%load some variables (it is much faster if the variab;es are loaded from md once for all) 
+if ~strcmpi(md.mesh.domaintype(),'3D'),
+	numberofelements=md.mesh.numberofelements;
+	numberofnodes=md.mesh.numberofvertices;
+	index=md.mesh.elements;
+	x=md.mesh.x; y=md.mesh.y;
+else
+	numberofelements=md.mesh.numberofelements2d;
+	numberofnodes=md.mesh.numberofvertices2d;
+	index=md.mesh.elements2d;
+	x=md.mesh.x2d; y=md.mesh.y2d;
+end
+
+%compute nodal functions coefficients N(x,y)=alpha x + beta y + gamma
+[alpha beta]=GetNodalFunctionsCoeff(index,x,y);
+
+summation=[1;1;1];
+dvydx=(vy(index).*alpha)*summation;
+dvxdy=(vx(index).*beta)*summation;
+rot=dvxdy - dvydx;
+
+if strcmpi(domaintype(md.mesh),'3D'),
+	rot=project3d(md,'vector',rot,'type','element');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/BamgConvertMesh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/BamgConvertMesh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/BamgConvertMesh.m	(revision 21239)
@@ -0,0 +1,17 @@
+function [bamggeom, bamgmesh] = BamgConvertMesh(index,x,y);
+%BAMGCONVERTMESH - Convert [x y index] to a bamg geom and mesh geom
+%   
+%   Usage:
+%      [bamggeom, bamgmesh] = BamgConvertMesh(index,x,y);
+%   
+%   index: index of the mesh
+%   x,y: coordinates of the nodes
+
+% Check usage
+if nargin~=3
+	help BamgConvertMesh
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[bamggeom, bamgmesh] = BamgConvertMesh_matlab(index,x,y);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/BamgConvertMesh.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/BamgConvertMesh.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/BamgConvertMesh.py	(revision 21239)
@@ -0,0 +1,17 @@
+from BamgConvertMesh_python import BamgConvertMesh_python
+
+def BamgConvertMesh(index,x,y):
+	"""
+	BAMGCONVERTMESH - Convert [index, x, y] to a bamg geom and mesh geom
+
+	Usage:
+		bamggeom, bamgmesh = BamgConvertMesh(index, x, y)
+		index: index of the mesh
+		x,y: coordinates of the nodes
+	"""
+	
+	#Call mex module
+	bamggeom, bamgmesh = BamgConvertMesh_python(index,x,y)
+
+	#return
+	return bamggeom, bamgmesh
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/BamgMesher.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/BamgMesher.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/BamgMesher.m	(revision 21239)
@@ -0,0 +1,19 @@
+function [bamgmesh,bamggeom] = BamgMesher(bamgmesh,bamggeom,bamgoptions);
+%BAMGMESHER
+%
+%   Usage:
+%      [bamgmesh, bamggeom] = BamgMesher(bamgmesh,bamggeom,bamgoptions);
+%
+%   bamgmesh: input bamg mesh
+%   bamggeom: input bamg geometry for the mesh
+%   bamgoptions: options for the bamg mesh
+
+% Check usage
+if nargin~=3
+	help BamgMesher
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[bamgmesh, bamggeom] = BamgMesher_matlab(bamgmesh,bamggeom,bamgoptions);
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/BamgMesher.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/BamgMesher.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/BamgMesher.py	(revision 21239)
@@ -0,0 +1,19 @@
+from BamgMesher_python import BamgMesher_python
+
+def BamgMesher(bamgmesh,bamggeom,bamgoptions):
+	"""
+	BAMGMESHER
+
+	Usage:
+		bamgmesh,bamggeom = BamgMesher(bamgmesh,bamggeom,bamgoptions);
+
+	bamgmesh: input bamg mesh
+	bamggeom: input bamg geometry for the mesh
+	bamgoptions: options for the bamg mesh
+	"""
+	
+	#Call mex module
+	bamgmesh, bamggeom = BamgMesher_python(bamgmesh, bamggeom, bamgoptions)
+
+	#return
+	return bamgmesh, bamggeom
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/BamgTriangulate.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/BamgTriangulate.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/BamgTriangulate.m	(revision 21239)
@@ -0,0 +1,17 @@
+function index = BamgTriangulate(x,y);
+%BAMGTRIANGULATE - Delaunay Triangulation of a list of points
+%
+%   Usage:
+%      index=BamgTriangulate(x,y)
+%
+%      index: index of the triangulation
+%      x,y: coordinates of the nodes
+
+%Check usage
+if nargin~=2
+	help BamgTriangulate
+	error('Wrong usage (see above)');
+end
+
+%Call mex module
+[index] = BamgTriangulate_matlab(x,y);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/BamgTriangulate.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/BamgTriangulate.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/BamgTriangulate.py	(revision 21239)
@@ -0,0 +1,17 @@
+from BamgTriangulate_python import BamgTriangulate_python
+
+def BamgTriangulate(x,y):
+	"""
+	BAMGTRIANGULATE
+
+	Usage:
+		index = BamgTriangulate(x,y)
+
+	index: index of the triangulation
+	x,y: coordinates of the nodes
+	"""
+
+	# Call mex module
+	index = BamgTriangulate_python(x,y)
+	# return
+	return index
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/Chaco.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/Chaco.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/Chaco.m	(revision 21239)
@@ -0,0 +1,22 @@
+function [assgn] = Chaco(A,vwgts,ewgts,x,y,z,options,nparts,goal);
+%CHACO
+%
+%   Usage:
+%      [assgn] = Chaco(A,vwgts,ewgts,x,y,z,options,nparts,goal);
+%
+%   A:			Input adjacency matrix
+%   vwgts:		weights for all vertices
+%   ewgts:		weights for all edges
+%   x,y,z:		coordinates for inertial method
+%   options:		architecture and partitioning options
+%   nparts:		number of parts options
+%   goal:		desired set sizes
+
+% Check usage
+if nargin~=9
+	help Chaco
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[assgn] = Chaco_matlab(A,vwgts,ewgts,x,y,z,options,nparts,goal);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ContourToMesh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ContourToMesh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ContourToMesh.m	(revision 21239)
@@ -0,0 +1,40 @@
+function varargout = ContourToMesh(index,x,y,contourname,interptype,edgevalue);
+%CONTOURTOMESH - Flag the elements or nodes inside a contour
+%
+%   Usage:
+%      [in_nod,in_elem]=ContourToMesh(index,x,y,contourname,interptype,edgevalue);
+%	
+%   index,x,y: mesh triangulation
+%   contourname: name of .exp file containing the contours.
+%   interptype: string defining type of interpolation ('element', or 'node').
+%   edgevalue: integer (0, 1, or 2) defining the value associated to the nodes on the edges of the polygons.
+%   in_nod: vector of flags (0 or 1), of size nods if interptype is set to 'node' or 'element and node',
+%      or of size 0 otherwise
+%   in_elem: vector of flags (0 or 1), of size nel if interptype is set to 'element' or 'element and node',
+%      or of size 0 otherwise.    
+%
+%   Example:
+%      in_nod=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','node',1)
+%      in_elements=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element',0)
+%      [in_nodes,in_elements]=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element and node',0)
+
+%Check usage
+if nargin~=6
+	help ContourToMesh
+	error('Wrong usage(see above)');
+end
+
+%Call mex module
+[in_nod,in_elem] = ContourToMesh_matlab(index,x,y,contourname,interptype,edgevalue);
+
+switch(interptype)
+	case 'element'
+		varargout{1} = in_elem;
+	case 'node'
+		varargout{1} = in_nod;
+	case 'node and element'
+		varargout{1} = in_nod;
+		varargout{2} = in_elem;
+	otherwise
+		error(['interpolation type ''' interptype ''' not supported yet']);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ContourToMesh.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ContourToMesh.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ContourToMesh.py	(revision 21239)
@@ -0,0 +1,35 @@
+from ContourToMesh_python import ContourToMesh_python
+
+def ContourToMesh(index,x,y,contourname,interptype,edgevalue):
+	"""
+	
+	CONTOURTOMESH - Flag the elements or nodes inside a contour
+
+		Usage:
+			[in_nod,in_elem]=ContourToMesh(index,x,y,contourname,interptype,edgevalue)
+
+			index,x,y: mesh triangulation.
+			contourname: name of .exp file containing the contours.
+			interptype: string defining type of interpolation ('element', or 'node').
+			edgevalue: integer (0, 1 or 2) defining the value associated to the nodes on the edges of the polygons.
+			in_nod: vector of flags (0 or 1), of size nel if interptype is set to 'node' or 'element and node',
+				or of size 0 otherwise.
+			in_elem: vector of flags (0 or 1), of size nel if interptype is set to 'element' or 'element and node',
+				or of size 0 otherwise.
+
+		Example:
+			in_nod=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','node',1)
+			in_elements=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element',0)
+			[in_nodes,in_elements]=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element and node',0)
+	"""
+	#Call mex module
+	in_nod,in_elem = ContourToMesh_python(index,x,y,contourname,interptype,edgevalue)
+
+	if interptype=='element':
+		return in_elem
+	elif interptype=='node':
+		return in_nod
+	elif interptype=='element and node':
+		return in_nod,in_elem
+	else:
+		raise TypeError('interpolation type "{}" not supported yet'.format(interptype))
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ContourToNodes.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ContourToNodes.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ContourToNodes.m	(revision 21239)
@@ -0,0 +1,19 @@
+function flags = ContourToNodes(x,y,contourname,edgevalue);
+%CONTOURTONODES - flags vertices inside contour
+%
+%   Usage:
+%      flags = ContourToNodes(x,y,contourname,edgevalue);
+%
+%   x,y: list of nodes
+%   contourname: name of .exp file containing the contours, or resulting structure from call to expread
+%   edgevalue: integer (0, 1 or 2) defining the value associated to the nodes on the edges of the polygons
+%   flags: vector of flags (0 or 1), of size nodes
+
+%Check usage
+if nargin~=4,
+	help ContourToNodes
+	error('Wrong usage (see above)');
+end
+
+%Call mex module
+[flags] = ContourToNodes_matlab(x,y,contourname,edgevalue);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ContourToNodes.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ContourToNodes.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ContourToNodes.py	(revision 21239)
@@ -0,0 +1,20 @@
+from ContourToNodes_python import ContourToNodes_python
+
+def ContourToNodes(x,y,contourname,edgevalue):
+	"""
+	CONTOURTONODES - flags vertices inside contour
+
+		Usage:
+			flags = ContourToNodes(x,y,contourname,edgevalue);
+
+		x,y: list of nodes
+		contourname: name of .exp file containing the contours, or resulting structure from call to expread
+		edgevalue: integer (0, 1 or 2) defining the value associated to the nodes on the edges of the polygons
+		flags: vector of flags (0 or 1), of size nodes
+	"""
+
+	#Call mex module
+	flags = ContourToNodes_python(x,y,contourname,edgevalue)
+
+	#return
+	return flags
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/DistanceToMaskBoundary.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/DistanceToMaskBoundary.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/DistanceToMaskBoundary.m	(revision 21239)
@@ -0,0 +1,19 @@
+function [distance] = DistanceToMaskBoundary(x,y,mask);
+%DISTANCETOMASKBOUNDARY - Compute distance from any point in a mesh to a mask boundary
+%
+%   This is a multi-threaded mex file
+%   
+%   Usage:
+%      [distance]=DistanceToMaskBoundary(x,y,mask)
+%   
+%   x,y,mask: mesh vertices with corresponding mask values.
+%   distance: distance from x,y to the mask transition between 0 and 1
+
+% Check usage
+if nargin~=3
+	help DistanceToMaskBoundary
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[distance] = DistanceToMaskBoundary_matlab(x,y,mask);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ElementConnectivity.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ElementConnectivity.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ElementConnectivity.m	(revision 21239)
@@ -0,0 +1,14 @@
+function elementconnectivity = ElementConnectivity(elements,nodeconnectivity);
+%ELEMENTCONNECTIVITY - Build element connectivity using node connectivity and elements
+%
+%   Usage:
+%      elementconnectivity = ElementConnectivity(elements,nodeconnectivity);
+
+% Check usage
+if nargin~=2
+	help ElementConnectivity
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+elementconnectivity = ElementConnectivity_matlab(elements,nodeconnectivity);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ElementConnectivity.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ElementConnectivity.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ElementConnectivity.py	(revision 21239)
@@ -0,0 +1,14 @@
+from ElementConnectivity_python import ElementConnectivity_python
+
+def ElementConnectivity(elements,nodeconnectivity):
+	"""
+	ELEMENTCONNECTIVITY - Build element connectivity using node connectivity and elements
+
+		Usage:
+			elementconnectivity = ElementConnectivity(elements,nodeconnectivity);
+	"""
+	#Call mex module
+	elementconnectivity = ElementConnectivity_python(elements,nodeconnectivity)
+	
+	#Return
+	return elementconnectivity
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ExpSimplify.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ExpSimplify.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ExpSimplify.m	(revision 21239)
@@ -0,0 +1,30 @@
+function ExpSimplify(varargin);
+%EXPSIMPLIFY - Simplify an Exp contour
+%
+%   Usage:
+%      ExpSimplify(expfile,tol);
+%
+%   expfile:	name of the expfile
+%   tol:	tolerance (maximal euclidean distance allowed between the new line and a vertex)
+%   min:	minimum number of vertices to save contours in an exp file (default is 3) [OPTIONAL]
+%
+%   Example:
+%      ExpSimplify('file.exp',100);
+%      ExpSimplify('file.exp',100,'min','4');
+
+% Check usage
+if nargin~=2 && nargin~=4
+	help ExpSimplify
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+switch nargin
+	case 2
+		ExpSimplify_matlab(varargin{1},varargin{2});
+	case 4
+		ExpSimplify_matlab(varargin{1},varargin{2},varargin{3},varargin{4});
+	otherwise
+		error('Exp2Kml not supported yet');
+end
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ExpToLevelSet.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ExpToLevelSet.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ExpToLevelSet.m	(revision 21239)
@@ -0,0 +1,21 @@
+function distance = ExpToLevelSet(x,y,contourname);
+%EXPTOLEVELSET - Determine levelset distance between a contour and a cloud of points
+%
+%   Usage:
+%      distance=ExpToLevelSet(x,y,contourname);
+%
+%   x,y:	cloud point
+%   contourname:	name of .exp file containing the contours
+%   distance:	distance vector representing a levelset where the 0 level is one of the contour segments
+%
+%   Example:
+%      distance=ExpToLevelSet(md.mesh.x,md.mesh.y,'Contour.exp');
+
+% Check usage
+if nargin~=3
+	help ExpToLevelSet
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+distance = ExpToLevelSet_matlab(x,y,contourname);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromGridToMesh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromGridToMesh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromGridToMesh.m	(revision 21239)
@@ -0,0 +1,23 @@
+function data_mesh = InterpFromGridToMesh(x,y,data,x_mesh,y_mesh,default_value);
+%INTERPFROMGRIDTOMESH - Interpolation from a grid onto a list of points
+%
+%   Usage:
+%      data_mesh=InterpFromGridToMesh(x,y,data,x_mesh,y_mesh,default_value);
+%
+%   data:		matrix holding the data to be interpolated onto the mesh
+%   x,y:		coordinates of matrix data (x and y must be in increasing order)
+%   x_mesh,y_mesh:	coordinates of the points onto which we interpolate
+%   default_value:	vector of mesh interpolated data
+%
+%	 Example:
+%      load('velocities.mat');
+%      md.inversion.vx_obs=InterpFromGridToMesh(x_n,y_m,vx,md.mesh.x,md.mesh.y,0);
+
+% Check usage
+if nargin~=6
+	help InterpFromGridToMesh
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+data_mesh=InterpFromGridToMesh_matlab(x,y,data,x_mesh,y_mesh,default_value);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromGridToMesh.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromGridToMesh.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromGridToMesh.py	(revision 21239)
@@ -0,0 +1,22 @@
+from InterpFromGridToMesh_python import InterpFromGridToMesh_python
+
+def InterpFromGridToMesh(x,y,data,x_mesh,y_mesh,default_value):
+	"""
+	INTERPFROMGRIDTOMESH - Interpolation from a grid onto a list of points
+
+   Usage:
+      data_mesh=InterpFromGridToMesh(x,y,data,x_mesh,y_mesh,default_value);
+
+   data:		matrix holding the data to be interpolated onto the mesh
+   x,y:		coordinates of matrix data (x and y must be in increasing order)
+   x_mesh,y_mesh:	coordinates of the points onto which we interpolate
+	default_value:	vector of mesh interpolated data
+
+	Example:
+		load('velocities.mat');
+		md.inversion.vx_obs=InterpFromGridToMesh(x_n,y_m,vx,md.mesh.x,md.mesh.y,0);
+	"""
+	# Call mex module
+	data_mesh=InterpFromGridToMesh_python(x,y,data,x_mesh,y_mesh,default_value)
+	# Return
+	return data_mesh
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMesh2d.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMesh2d.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMesh2d.m	(revision 21239)
@@ -0,0 +1,38 @@
+function data_prime=InterpFromMesh2d(varargin);
+%INTERPFROMMESH2D
+%
+%   Usage:
+%      data_prime=InterpFromMesh2d(index,x,y,data,x_prime,y_prime);
+%      or data_prime=InterpFromMesh2d(index,x,y,data,x_prime,y_prime,default_value);
+%      or data_prime=InterpFromMesh2d(index,x,y,data,x_prime,y_prime,default_value,contourname);
+%
+%   x,y:	coordinates of the nodes where data is defined
+%   index:	index of the mesh where data is defined
+%   data:	vector holding the data to be interpolated onto the points
+%   x_prime,y_prime:	coordinates of the mesh vertices onto which we interpolate
+%   default_value:	a scalar or vector of size length(x_prime)
+%   contourname:	linear interpolation will happen on all x_interp,y_interp inside the contour,
+%      default value will be adopted on the rest of the mesh.
+%
+%   data_prime:	vector of prime interpolated data
+
+% Check usage
+if nargin~=6 && nargin~=7 && nargin~=8
+	help InterpFromMesh2d
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+switch nargin
+	case 6
+		data_prime=InterpFromMesh2d_matlab(varargin{1},varargin{2},varargin{3},varargin{4},varargin{5},varargin{6});
+	case 7
+		data_prime=InterpFromMesh2d_matlab(varargin{1},varargin{2},varargin{3},varargin{4},varargin{5},varargin{6},varargin{7});
+	case 8 
+		data_prime=InterpFromMesh2d_matlab(varargin{1},varargin{2},varargin{3},varargin{4},varargin{5},varargin{6},varargin{7},varargin{8});
+	otherwise
+		error('InterpFromMesh2d not supported');
+end
+
+
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMeshToGrid.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMeshToGrid.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMeshToGrid.m	(revision 21239)
@@ -0,0 +1,20 @@
+function [x_m,y_m,griddata] = InterpFromMeshToGrid(index,x,y,data,xmin,ymax,xposting,yposting,nlines,ncols,default_value);
+%INTERPFROMMESHTOGRID - Interpolation of a data defined on a mesh onto a grid
+%
+%   This function is a multi-threaded mex file that interpolates a field defined on a triangular
+%   mesh onto a regular grid.
+%
+%   index,x,y:	delaunay triangulation defining the mesh
+%   meshdata:	vertex values of data to be interpolated
+%
+%   xmin,ymax,posting,nlines,ncols: parameters that define the grid
+%   default_value:	value of points located out of the mesh
+
+% Check usage
+if nargin~=11
+	help InterpFromMeshToGrid
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[x_m,y_m,griddata] = InterpFromMeshToGrid_matlab(index,x,y,data,xmin,ymax,xposting,yposting,nlines,ncols,default_value);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMeshToGrid.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMeshToGrid.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMeshToGrid.py	(revision 21239)
@@ -0,0 +1,19 @@
+from InterpFromMeshToGrid_python import InterpFromMeshToGrid_python
+
+def InterpFromMeshToGrid(index,x,y,data,xmin,ymax,xposting,yposting,nlines,ncols,default_value):
+	"""
+	INTERPFROMMESHTOGRID - Interpolation of a data defined on a mesh onto a grid
+
+		This function is a multi-threaded mex file that interpolates a field defined
+		on a triangular mesh onto a regular grid
+
+		index,x,y:	delaunay triangulation defining the mesh
+		meshdata:	vertex values of data to be interpolated
+
+		xmin,ymax,posting,nlines,ncols:	parameters that define the grid
+		default_value:	value of points located out of the mesh
+	"""
+	# Call mex module
+	x_m,y_m,griddata=InterpFromMeshToGrid_python(index,x,y,data,xmin,ymax,xposting,yposting,nlines,ncols,default_value)
+	# Return
+	return x_m,y_m,griddate
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMeshToMesh2d.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMeshToMesh2d.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMeshToMesh2d.m	(revision 21239)
@@ -0,0 +1,28 @@
+function data_interp = InterpFromMeshToMesh2d(varargin);
+%INTERPFROMMESHTOMESH2D - Interpolation from a 2d triangular mesh onto a list of points
+%
+%   Usage:
+%      data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp);
+%      or data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp,OPTIONS);
+%
+%   index:	index of the mesh where data is defined
+%   x,y:	coordinates of the nodes where data is defined
+%   data:	matrix holding the data to be interpolated onto the mesh (one column per field)
+%   x_interp,y_interp:	coordinates of the points onto which we interpolate
+%   data_interp:	vector of mesh interpolated data
+%   Available options:
+%      default:	default value if point is outsite of triangulation (instead of linear interpolation)
+%
+%   Example:
+%      load('temperature.mat');
+%      md.initialization.temperature=InterpFromMeshToMesh2d(index,x,y,temperature,md.mesh.x,md.mesh.y);
+%      md.initialization.temperature=InterpFromMeshToMesh2d(index,x,y,temperature,md.mesh.x,md.mesh.y,'default',253);
+
+% Check usage
+if nargin~=6 && nargin~=8
+	help InterpFromMeshToMesh2d
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+data_interp=InterpFromMeshToMesh2d_matlab(varargin{:});
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMeshToMesh2d.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMeshToMesh2d.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMeshToMesh2d.py	(revision 21239)
@@ -0,0 +1,27 @@
+from InterpFromMeshToMesh2d_python import InterpFromMeshToMesh2d_python 
+
+def InterpFromMeshToMesh2d(*args):
+	"""
+	INTERPFROMMESHTOMESH2D - Interpolation from a 2d triangular mesh onto a list of points
+
+		Usage:
+			data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp);
+			or data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp,OPTIONS);
+		
+		index:	index of the mesh where data is defined
+		x,y:	coordinates of the nodes where data is defined
+		data:	matrix holding the data to be interpolated onto the mesh (one column per field)
+		x_interp,y_interp:	coordinates of the points onto which we interpolate
+		data_interp:	vector of mesh interpolated data
+		Available options:
+			default:	default value if point is outsite of triangulation (instead of linear interpolation)
+
+	Example:
+		load('temperature.mat');
+		md.initialization.temperature=InterpFromMeshToMesh2d(index,x,y,temperature,md.mesh.x,md.mesh.y);
+		md.initialization.temperature=InterpFromMeshToMesh2d(index,x,y,temperature,md.mesh.x,md.mesh.y,'default',253);
+	"""
+	# Call mex module
+	data_interp = InterpFromMeshToMesh2d_python(*args)
+	# Return
+	return data_interp
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMeshToMesh3d.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMeshToMesh3d.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMeshToMesh3d.m	(revision 21239)
@@ -0,0 +1,24 @@
+function data_prime = InterpFromMeshToMesh3d(index,x,y,z,data,x_prime,y_prime,z_prime,default_value);
+%INTERPFROMMESHTOMESH3D - Interpolation from a 3d hexahedron mesh onto a list of points
+%
+%   Usage:
+%      index:	index of the mesh where data is defined
+%      x,y,z:	coordinates of the nodes where data is defined
+%      data:	matrix holding the data to be interpolated onto the mesh
+%      x_prime,y_prime,z_prime:	coordinates of the points onto which we interpolate
+%      default_value:	default value if no data is found (holes)
+%      data_prime:	vector of mesh interpolated data
+%
+%   Example:
+%      load('temperature.mat');
+%      md.initialization.temperature=InterpFromMeshToMesh3d(index,x,y,z,temperature,md.mesh.x,md.mesh.y,md.mesh.z,253);
+
+% Check usage
+if nargin~=9
+	help InterpFromMeshToMesh3d
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+data_prime=InterpFromMeshToMesh3d_matlab(index,x,y,z,data,x_prime,y_prime,z_prime,default_value);
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMeshToMesh3d.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMeshToMesh3d.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/InterpFromMeshToMesh3d.py	(revision 21239)
@@ -0,0 +1,23 @@
+from InterpFromMeshToMesh3d_python import InterpFromMeshToMesh3d_python
+
+def InterpFromMeshToMesh3d(index,x,y,z,data,x_prime,y_prime,z_prime,default_value):
+	"""
+	INTERPFROMMESHTOMESH3D - Interpolation from a 3d hexahedron mesh onto a list of points
+
+   Usage:
+      index:	index of the mesh where data is defined
+      x,y,z:	coordinates of the nodes where data is defined
+      data:	matrix holding the data to be interpolated onto the mesh
+      x_prime,y_prime,z_prime:	coordinates of the points onto which we interpolate
+      default_value:	default value if no data is found (holes)
+      data_prime:	vector of mesh interpolated data
+
+   Example:
+      load('temperature.mat');
+      md.initialization.temperature=InterpFromMeshToMesh3d(index,x,y,z,temperature,md.mesh.x,md.mesh.y,md.mesh.z,253);
+	"""
+	# Call mex module
+	data_prime = InterpFromMeshToMesh3d_python(index,x,y,z,data,x_prime,y_prime,z_prime,default_value)
+	
+	# Return
+	return data_prime
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/IssmConfig.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/IssmConfig.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/IssmConfig.m	(revision 21239)
@@ -0,0 +1,14 @@
+function value = IssmConfig(string);
+%ISSMCONFIG
+%
+%   Usage:
+%      value = IssmConfig('string');
+
+% Check usage
+if nargin~=1
+	help IssmConfig
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+value = IssmConfig_matlab(string);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/IssmConfig.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/IssmConfig.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/IssmConfig.py	(revision 21239)
@@ -0,0 +1,15 @@
+from IssmConfig_python import IssmConfig_python
+
+def IssmConfig(string):
+	"""
+	ISSMCONFIG
+
+		Usage:
+			value = IssmConfig('string');
+	"""
+
+	# Call mex module
+	value = IssmConfig_python(string)
+	# Return
+	return value
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/Kriging.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/Kriging.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/Kriging.m	(revision 21239)
@@ -0,0 +1,22 @@
+function predictions = Kriging(x,y,observations,x_interp,y_interp,varargin);
+%KRIGING - Linear predictor
+%   Usage: predictions = Kriging(x,y,observations,x_interp,y_interp,'options');
+%   
+%   available options:
+%	   -'model': Available variogram models 'gaussian' (default),'spherical','power','exponential'
+%	      -'nugget': nugget effect (default 0.2)
+%	      -'range':  for gaussian, spherical and exponential models (default sqrt(3))
+%	      -'sill':   for gaussian, spherical and exponential models (default 1)
+%	      -'slope':  for power model (default 1)
+%	      -'power':  for power model (default 1)
+%	   -'searchradius': search radius for each prediction (default is observations span)
+%	   -'boxlength':    minimum length of quadtree boxes (useful to decrease the number of observations)
+%	   -'maxdata':      minimum number of observations for a prediction (default is 50)
+%	   -'mindata':      maximum number of observations for a prediction (default is 1)
+%	   -'maxtrimming':  maximum trimming value (default is -1.e+21)
+%	   -'mintrimming':  minimum trimming value (default is +1.e+21)
+%	   -'minspacing':   minimum distance between observation (default is 0.01)
+%	   -'numthreads':   number of threads, default is "<<num << "
+
+% Call mex module
+predictions = Kriging_matlab(x,y,observations,x_interp,y_interp,varargin{:});
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/M1qn3.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/M1qn3.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/M1qn3.m	(revision 21239)
@@ -0,0 +1,11 @@
+function X = M1qn3(varargin);
+%M1QN3 - Data interpolation from a list of (x,y,values) into mesh vertices
+%	   usage:
+%	         X=M1qn3(Xs,Gs);
+%	   where:
+%	      Xs are the X values (m x n, where m is the number of independents, n the number of evaluations previously carried out on X)
+%	      Gs are the G (gradient) values (m x n, where m is the number of independents, n the number of evaluations previously carried out on X,G)
+%	      X - the new direction.
+
+% Call mex module
+X = M1qn3_matlab(varargin{:});
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/MeshPartition.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/MeshPartition.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/MeshPartition.m	(revision 21239)
@@ -0,0 +1,17 @@
+function [element_partitioning, node_partitioning] = MeshPartition(md.mesh,numpartitions);
+%MESHPARTITION - Partition mesh according to the number of areas, using Metis library.
+%
+%	   Usage:
+%			[element_partitioning,node_partitioning]=MeshPartition(md.mesh,numpartitions)");
+%
+%	   element_partitioning: Vector of partitioning area numbers, for every element.
+%	   node_partitioning: Vector of partitioning area numbers, for every node.
+
+% Check usage
+if nargin~=2
+	help MeshPartition
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[element_partitioning, node_partitioning] = MeshPartition_matlab(md.mesh,numpartitions);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/MeshProfileIntersection.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/MeshProfileIntersection.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/MeshProfileIntersection.m	(revision 21239)
@@ -0,0 +1,22 @@
+function [segments] = MeshProfileIntersection(index,x,y,filename);
+%MESHPROFILEINTERSECTION - Take a .exp file (made of several profiles), and figures out its intersection with a mesh.
+%
+%	   usage:
+%	   [segments]=MeshProfileIntersection(index,x,y,filename);
+%
+%	   input:
+%	        index,x,y is a triangulation
+%	        filename: name of Argus style .exp file containing the segments (can be groups of disconnected segments)
+%	   output:
+%	        segments: array made of x1,y1,x2,y2,element_id lines (x1,y1) and (x2,y2) are segment extremities for a segment 
+%	        belonging to the elemnt_id element. there are as many lines in segments as there are segments intersecting the 
+%	        mesh.
+
+% Check usage
+if nargin~=4
+	help MeshProfileIntersection
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[segments] = MeshProfileIntersection_matlab(index,x,y,filename);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/MeshProfileIntersection.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/MeshProfileIntersection.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/MeshProfileIntersection.py	(revision 21239)
@@ -0,0 +1,23 @@
+from MeshProfileIntersection_python import MeshProfileIntersection_python
+
+def MeshProfileIntersection(index,x,y,filename):
+	"""
+	MESHPROFILEINTERSECTION - Takes a .exp file (made of several profiles), and figures out its intersection with a mesh
+		Usage:
+			[segments]=MeshProfileIntersection(index,x,y,filename);
+		
+		input:
+			  index,x,y is a triangulation
+			  filename: name of Argus style .exp file containing the segments (can be groups of disconnected segments)
+
+		output:
+			  segments: array made of x1,y1,x2,y2,element_id lines (x1,y1) and (x2,y2) are segment extremities for a segment 
+			  belonging to the elemnt_id element. there are as many lines in segments as there are segments intersecting the 
+			  mesh.
+	"""
+	
+	# Call mex module
+	segments = MeshProfileIntersection_python(index,x,y,filename)
+
+	# Return
+	return segments
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/NodeConnectivity.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/NodeConnectivity.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/NodeConnectivity.m	(revision 21239)
@@ -0,0 +1,14 @@
+function connectivity = NodeConnectivity(elements,numnodes);
+%NODECONNECTIVITY - Build node connectivity from elements
+%
+%   Usage:
+%      connectivity = NodeConnectivity(elements,numnodes);
+
+% Check usage
+if nargin~=2
+	help NodeConnectivity
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+connectivity = NodeConnectivity_matlab(elements,numnodes);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/NodeConnectivity.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/NodeConnectivity.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/NodeConnectivity.py	(revision 21239)
@@ -0,0 +1,15 @@
+from NodeConnectivity_python import NodeConnectivity_python
+
+def NodeConnectivity(elements,numnodes):
+	"""
+	NODECONNECTIVITY - Build node connectivity from elements
+
+		Usage:
+			connectivity = NodeConnectivity(elements, numnodes);
+	"""
+	# Call mex module
+	connectivity = NodeConnectivity_python(elements,numnodes)
+
+	# Return
+	return connectivity
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/PointCloudFindNeighbors.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/PointCloudFindNeighbors.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/PointCloudFindNeighbors.m	(revision 21239)
@@ -0,0 +1,19 @@
+function [flags] = PointCloudFindNeighbors(x,y,mindistance,multithread);
+%POINTCLOUDFINDNEIGHBORS - Flag points that are too near one another, within an array of point coordinates
+%
+%	   Usage:
+%	      [flags]=PointCloudFindNeighbors(x,y,mindistance,multithread);
+%
+%	      x,y: list of points.
+%	      mindistance: minimum distance that should exist between points in the cloud.
+%	      multithread: run multithreaded or not. with multithreads, flags can get 1 and 2 values in duplicates.
+%	      flags: array of flags (flag==1 means point is within mindistance of another point)
+
+% Check usage
+if nargin~=4
+	help PointCloudFindNeighbors
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[flags] = PointCloudFindNeighbors_matlab(x,y,mindistance,multithread);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/PropagateFlagsFromConnectivity.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/PropagateFlagsFromConnectivity.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/PropagateFlagsFromConnectivity.m	(revision 21239)
@@ -0,0 +1,14 @@
+function [pool] = PropagateFlagsFromConnectivity(connectivity,pool,index,flags);
+%PROPAGATEFLAGSFROMCONNECTIVITY - Propagate flags onto mesh, element by element, using connectivity
+%
+%   Usage:
+%      [pool] = PropagateFlagsFromConnectivity(connectivity,pool,index,flags);
+
+% Check usage
+if nargin~=4
+	help PropagateFlagsFromConnectivity
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[pool] = PropagateFlagsFromConnectivity_matlab(connectivity,pool,index,flags);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/Scotch.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/Scotch.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/Scotch.m	(revision 21239)
@@ -0,0 +1,14 @@
+function [maptab] = Scotch(varargin);
+%SCOTCH - Scotch partitioner
+%
+%   Usage:
+%      [maptab]=Scotch(adjmat,vertlb,vertwt,edgewt,archtyp,archpar,Scotch-specific parameters);
+
+% Check usage
+if nargin<6
+	help Scotch
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[maptab]=Scotch_matlab(varargin{:});
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ShpRead.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ShpRead.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/ShpRead.m	(revision 21239)
@@ -0,0 +1,20 @@
+function ShpRead(filename);
+%	SHPREAD - Read shapefile
+%	
+%	   This module reads shapefiles and converts them to matlab/python structures
+%	
+%	   Usage:
+%	      ShpRead(filename);
+%	      filexp:      file name of exp file to be written
+%	
+%	   Examples:
+%	      ShpRead('file.shp');
+
+% Check usage
+if nargin~=1
+	help ShpRead
+	error('Wrong usage: No file specified');
+end
+
+% Call mex module
+ShpRead_matlab(filename);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/TriMesh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/TriMesh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/TriMesh.m	(revision 21239)
@@ -0,0 +1,21 @@
+function [index,x,y,segments,segmentmarkers] = TriMesh(domainoutlinefilename,rifts,mesh_area);
+%TRIMESH - Mesh a domain using an .exp file
+%
+%   Usage: 
+%     [index,x,y,segments,segmentmarkers]=TriMesh(domainoutlinefilename,rifts,mesh_area);
+%	      
+%   index,x,y:	Defines a triangulation 
+%   segments:	Array made of exterior segments to the mesh domain outline 
+%   segmentmarkers:	Array flagging each segment
+%
+%   domainoutlinefilename:	Argus domain outline file
+%   mesh_area:	Maximum area desired for any element of the resulting mesh
+
+% Check usage
+if nargin~=3 && nargout~=5
+	help TriMesh
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[index,x,y,segments,segmentmarkers]=TriMesh_matlab(domainoutlinefilename,rifts,mesh_area);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/TriMesh.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/TriMesh.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/TriMesh.py	(revision 21239)
@@ -0,0 +1,21 @@
+from TriMesh_python import TriMesh_python
+
+def TriMesh(domainoutlinefilename,rifts,mesh_area):
+	"""
+	TRIMESH - Mesh a domain using an .exp file
+
+	   Usage: 
+			[index,x,y,segments,segmentmarkers]=TriMesh(domainoutlinefilename,rifts,mesh_area); 
+
+	   index,x,y: defines a triangulation 
+		segments: An array made of exterior segments to the mesh domain outline 
+		segmentmarkers: An array flagging each segment
+
+	   domainoutlinefilename: an Argus domain outline file
+		mesh_area: The maximum area desired for any element of the resulting mesh
+	"""
+	# Call mex module
+	index,x,y,segments,segmentmarkers=TriMesh_python(domainoutlinefilename,rifts,mesh_area)
+	# Return
+	return index,x,y,segments,segmentmarkers
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/TriMeshProcessRifts.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/TriMeshProcessRifts.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/TriMeshProcessRifts.m	(revision 21239)
@@ -0,0 +1,17 @@
+function [index2,x2,y2,segments2,segmentmarkers2,rifts2] = TriMeshProcessRifts(index1,x1,y1,segments1,segmentmarkers1);
+%TRIMESHPROCESSRIFTS - Split a mesh where a rift (or fault) is present
+%
+%   Usage: 
+%      [index2,x2,y2,segments2,segmentmarkers2,rifts2]=TriMeshProcessRifts(index1,x1,y1,segments1,segmentmarkers1); 
+%   
+%   (index1,x1,y1,segments1,segmentmarkers1):	An initial triangulation.
+%   [index2,x2,y2,segments2,segmentmarkers2,rifts2]:	The resulting triangulation where rifts have been processed.
+
+% Check usage
+if nargin~=5 && nargout~=6
+	help TriMeshProcessRifts
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[index2,x2,y2,segments2,segmentmarkers2,rifts2] = TriMeshProcessRifts_matlab(index1,x1,y1,segments1,segmentmarkers1);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/TriMeshProcessRifts.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/TriMeshProcessRifts.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/modules/TriMeshProcessRifts.py	(revision 21239)
@@ -0,0 +1,16 @@
+from TriMeshProcessRifts_python import TriMeshProcessRifts_python
+
+def TriMeshProcessRifts(index1,x1,y1,segments1,segmentmarkers1):
+	"""
+	TRIMESHPROCESSRIFTS - Split a mesh where a rift (or fault) is present
+
+	   Usage: 
+		   [index2,x2,y2,segments2,segmentmarkers2,rifts2]=TriMeshProcessRifts(index1,x1,y1,segments1,segmentmarkers1);
+
+	   (index1,x1,y1,segments1,segmentmarkers1):	An initial triangulation.
+	   [index2,x2,y2,segments2,segmentmarkers2,rifts2]:	The resulting triangulation where rifts have been processed.
+	"""
+	# Call mex module
+	index2,x2,y2,segments2,segmentmarkers2,rifts2 = TriMeshProcessRifts_python(index1,x1,y1,segments1,segmentmarkers1)
+	# Return
+	return index2,x2,y2,segments2,segmentmarkers2,rifts2
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmbbftpin.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmbbftpin.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmbbftpin.m	(revision 21239)
@@ -0,0 +1,47 @@
+function issmbbftpin(host, login,port,numstreams,path, packages)
+%BBFTPIN get packages from host, using bbftp. assuming unix system here.
+%
+%   usage: scpin(host,packages,path)
+%
+%
+
+%first get hostname
+hostname=oshostname();
+
+%first be sure packages are not in the current directory, this could conflict with pscp on windows. 
+%get initial warning mode
+state=warning('query', 'all');
+%remove warnings in case the files do not exist
+warning off
+for i=1:numel(packages),
+	delete(packages{i});
+end
+%back to initial warning state
+warning(state);
+
+%if hostname and host are the same, do a simple copy
+if strcmpi(hostname,host),
+
+    for i=1:numel(packages),
+		success=copyfile([path '/' packages{i}]); %keep going, even if success=0
+	end
+
+else
+
+	%build a string of the type: bbftp -s -u elarour -e 'setnbstream 8; cd /nobackupp10/elarour/Testing/Interactive3/; get Antarctica.outbin' pfe1.nas.nasa.gov
+	command=['!bbftp -s -V -u ' login ' -e ''setnbstream 8; cd ' path '; '];
+	for i=1:length(packages),
+		command=[command 'get ' packages{i} ';'];
+	end
+	command=[command '''  pfe22.nas.nasa.gov'];
+
+	eval(command);
+
+	%check bbftp worked
+	for i=1:numel(packages),
+		if ~exist(['./' packages{i}]),
+			error('scpin error message: could not call scp on *nix system');
+		end
+	end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmbbftpout.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmbbftpout.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmbbftpout.m	(revision 21239)
@@ -0,0 +1,30 @@
+function issmbbftpout(host,path,login,port,numstreams,packages)
+%BBFTPOUT put packages onto host, using bbftp. assuming unix system here.
+%
+%   usage: bbftpout(host,path,login,port,numstream,packages)
+%
+%
+
+%get hostname
+hostname=oshostname();
+
+%if hostname and host are the same, do a simple copy
+if strcmpi(host,hostname),
+	for i=1:numel(packages),
+		here=pwd;
+		eval(['cd ' path])
+		system(['rm -rf ' packages{i} ]);
+		system(['ln -s ' here '/' packages{i} ' .']);
+		eval(['cd ' here]);
+	end
+else 
+
+	%build a string of the type: bbftp -s -u elarour -e 'setnbstream 8; cd /nobackupp10/elarour/Testing/Interactive3/; put Antarctica.tar.gz' pfe1.nas.nasa.gov
+	command=['!bbftp -s -V -u ' login ' -e ''setnbstream 8; cd ' path '; '];
+	for i=1:length(packages),
+		command=[command 'put ' packages{i} ';'];
+	end
+	command=[command '''  pfe22.nas.nasa.gov'];
+
+	eval(command);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmdir.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmdir.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmdir.m	(revision 21239)
@@ -0,0 +1,27 @@
+function ISSM_DIR=issmdir()
+%ISSMDIR - Get ISSM_DIR environment variable
+%
+%   Usage:
+%      ISSM_DIR=issmdir()
+
+%Initialize output ISSM_DIR
+ISSM_DIR='';
+slash=filesep();
+
+%Get ISSM_DIR from function path (we do not want to force users to edit their bashrc)
+path=which('issmdir');
+
+%issmdir might be in bin,
+pos=strfind(path,['bin' slash 'issmdir.m']);
+if ~isempty(pos),
+	ISSM_DIR=path(1:pos-1);
+else
+	pos=strfind(path,['src' slash 'm' slash 'os' slash 'issmdir.m']);
+	if ~isempty(pos),
+		ISSM_DIR=path(1:pos-1);
+	end
+end
+
+if isempty(ISSM_DIR),
+	error('Could not determine the location of ISSM...');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmdir.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmdir.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmdir.py	(revision 21239)
@@ -0,0 +1,23 @@
+import os
+import MatlabFuncs as m
+
+def issmdir():
+	"""
+	ISSMDIR - Get ISSM_DIR environment variable
+ 
+	   Usage:
+	      ISSM_DIR=issmdir()
+	"""
+
+	if not m.ispc():
+		ISSM_DIR =os.environ['ISSM_DIR']
+	else:
+		ISSM_DIR =os.environ['ISSM_DIR_WIN']
+		if m.strcmpi(ISSM_DIR[-1],'/') or m.strcmpi(ISSM_DIR[-1],'\\'):
+			ISSM_DIR = ISSM_DIR[:-1]    #shave off the last '/'
+
+	if not ISSM_DIR:
+		raise RuntimeError("issmdir error message: 'ISSM_DIR' environment variable is empty! You should define ISSM_DIR in your .cshrc or .bashrc!")
+
+	return ISSM_DIR
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmscpin.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmscpin.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmscpin.m	(revision 21239)
@@ -0,0 +1,77 @@
+function issmscpin(host, login,port,path, packages)
+%ISSMSCPIN get packages from host, using scp on unix, and pscp on windows
+%
+%   usage: issmscpin(host,packages,path)
+%
+%
+
+%first get hostname
+hostname=oshostname();
+
+%first be sure packages are not in the current directory, this could conflict with pscp on windows. 
+%get initial warning mode
+state=warning('query', 'all');
+%remove warnings in case the files do not exist
+warning off
+for i=1:numel(packages),
+	delete(packages{i});
+end
+%back to initial warning state
+warning(state);
+
+%if hostname and host are the same, do a simple copy
+if strcmpi(hostname,host),
+
+    for i=1:numel(packages),
+		success=copyfile([path '/' packages{i}]); %keep going, even if success=0
+	end
+
+else
+
+	if ispc(),
+		%use the putty project pscp.exe: it should be in the path.
+
+		%get ISSM_DIR variable
+		[status,ISSM_DIR]=system('echo [%ISSM_DIR_WIN%]');
+		if status, 
+			error('issmscpin error message: could not find ISSM_DIR_WIN environment variable');
+		end
+		ISSM_DIR=ISSM_DIR(2:end-2);
+
+		username=input('Username: (quoted string) ');
+		key=input('Key: (quoted string) ');
+
+		for i=1:numel(packages),
+			[status,result]=system([ISSM_DIR '/externalpackages/ssh/pscp.exe -l "' username '" -pw "' key '" ' host ':' path '/' packages{i} ' ./']);
+			if status, 
+				error('issmscpin error message: could not call putty pscp');
+			end
+		end
+
+	else
+		%just use standard unix scp
+		%string to copy multiple files using scp: 
+		if numel(packages)==1,
+			string=packages{1};
+		else
+			string='\{';
+			for i=1:numel(packages)-1,
+				string=[string packages{i} ','];
+			end
+			string=[string packages{end} '\}'];
+		end
+
+		if port,
+			eval(['!scp -P ' num2str(port) ' ' login '@localhost:' path '/' string ' ./']);
+		else
+			eval(['!scp ' login '@' host ':' path '/' string ' ./']);
+		end
+
+		%check scp worked
+		for i=1:numel(packages),
+			if ~exist(['./' packages{i}]),
+				error('issmscpin error message: could not call scp on *nix system');
+			end
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmscpin.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmscpin.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmscpin.py	(revision 21239)
@@ -0,0 +1,68 @@
+from socket import gethostname
+import subprocess
+import os
+import shutil
+import MatlabFuncs as m
+
+def issmscpin(host, login,port,path, packages):
+	"""
+	ISSMSCPIN get packages from host, using scp on unix, and pscp on windows
+ 
+	   usage: issmscpin(host,packages,path)
+	"""
+
+	#first get hostname
+	hostname=gethostname()
+
+	#first be sure packages are not in the current directory, this could conflict with pscp on windows. 
+	#remove warnings in case the files do not exist
+	for package in packages:
+		try:
+			os.remove(package)
+		except OSError as e:
+			pass
+
+	#if hostname and host are the same, do a simple copy
+	if m.strcmpi(hostname,host):
+
+		for package in packages:
+			try:
+				shutil.copy(os.path.join(path,package),os.getcwd())    #keep going, even if success=0
+			except OSError as e:
+				pass
+
+	else:
+
+		if m.ispc():
+			#use the putty project pscp.exe: it should be in the path.
+		
+			#get ISSM_DIR variable
+			if 'ISSM_DIR_WIN' in os.environ:
+				ISSM_DIR=os.environ['ISSM_DIR_WIN'][1:-2]
+			else:
+				raise OSError("issmscpin error message: could not find ISSM_DIR_WIN environment variable.")
+
+			username=raw_input('Username: (quoted string) ')
+			key=raw_input('Key: (quoted string) ')
+
+			for package in packages:
+				try:
+					subprocess.check_call('%s/externalpackages/ssh/pscp.exe -l "%s" -pw "%s" %s:%s %s' % (ISSM_DIR,username,key,host,os.path.join(path,package),os.getcwd()),shell=True)
+				except CalledProcessError as e:
+					raise CalledProcessError("issmscpin error message: could not call putty pscp.")
+
+		else:
+			#just use standard unix scp
+			#string to copy multiple files using scp: 
+			string='\{'+','.join([str(x) for x in packages])+'\}'
+			
+			if port:
+				subprocess.call('scp -P %d %s@localhost:%s %s/. ' % (port,login,os.path.join(path,string),os.getcwd()),shell=True)
+			else:
+				subprocess.call('scp %s@%s:%s %s/.' % (login,host,os.path.join(path,string),os.getcwd()),shell=True)
+		
+			#check scp worked
+			for package in packages:
+				if not os.path.exists(os.path.join('.',package)):
+					raise OSError("issmscpin error message: could not call scp on *nix system.")
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmscpout.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmscpout.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmscpout.m	(revision 21239)
@@ -0,0 +1,68 @@
+function issmscpout(host,path,login,port,packages,varargin)
+%ISSMSCPOUT send packages to a host, using scp on unix, and pscp on windows
+%
+%   usage: issmscpout(host,path,login,port,packages)
+%
+%
+
+%get hostname
+hostname=oshostname();
+
+%are we dis-allowing symbolic links? 
+if nargin==6,
+	no_symlinks=1;
+else
+	no_symlinks=0;
+end
+
+%if hostname and host are the same, do a simple copy
+
+if strcmpi(host,hostname),
+	for i=1:numel(packages),
+		here=pwd;
+		eval(['cd ' path])
+		system(['rm -rf ' packages{i} ]);
+		if no_symlinks,
+			system(['cp  ' here '/' packages{i} ' .']);
+		else
+			system(['ln -s ' here '/' packages{i} ' .']);
+		end
+		eval(['cd ' here]);
+	end
+else 
+	if ispc(),
+		%use the putty project pscp.exe: it should be in the path.
+
+		%get ISSM_DIR variable
+		[status,ISSM_DIR]=system('echo [%ISSM_DIR_WIN%]');
+		if status, 
+			error('issmscpout error message: could not find ISSM_DIR_WIN environment variable');
+		end
+		ISSM_DIR=ISSM_DIR(2:end-2);
+
+		username=input('Username: (quoted string) ');
+		key=input('Key: (quoted string) ');
+
+		for i=1:numel(packages),
+			[status,result]=system([ISSM_DIR '/externalpackages/ssh/pscp.exe -l "' username '" -pw "' key '" ' packages{i} ' ' host ':' path]);
+			if status, 
+				error('issmscpout error message: could not call putty pscp');
+			end
+		end
+
+	else
+		%just use standard unix scp
+		%create string of packages being sent
+		string='';
+		for i=1:numel(packages),
+			string=[string ' ' packages{i}];
+		end
+		string=[string ' '];
+
+		if port,
+			eval(['!scp -P ' num2str(port) ' ' string ' ' login '@localhost:' path]);
+		else
+			eval(['!scp ' string ' ' login '@' host ':' path]);
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmscpout.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmscpout.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmscpout.py	(revision 21239)
@@ -0,0 +1,59 @@
+from socket  import gethostname
+import subprocess
+import os
+import MatlabFuncs as m
+
+def issmscpout(host,path,login,port,packages):
+	"""
+	ISSMSCPOUT send packages to a host, using scp on unix, and pscp on windows
+ 
+	   usage: issmscpout(host,path,packages)
+	"""
+
+	#get hostname
+	hostname=gethostname();
+
+	#if hostname and host are the same, do a simple copy
+
+	if m.strcmpi(host,hostname):
+		for package in packages:
+			here=os.getcwd()
+			os.chdir(path)
+			try:
+				os.remove(package)
+			except OSError as e:
+				pass
+			subprocess.call('ln -s %s %s' % (os.path.join(here,package),path),shell=True)
+			os.chdir(here)
+	else:
+		if m.ispc():
+			#use the putty project pscp.exe: it should be in the path.
+		
+			#get ISSM_DIR variable
+			if 'ISSM_DIR_WIN' in os.environ:
+				ISSM_DIR=os.environ['ISSM_DIR_WIN'][1:-2]
+			else:
+				raise OSError("issmscpout error message: could not find ISSM_DIR_WIN environment variable.")
+
+			username=raw_input('Username: (quoted string) ')
+			key=raw_input('Key: (quoted string) ')
+
+			for package in packages:
+				try:
+					subprocess.check_call('%s/externalpackages/ssh/pscp.exe -l "%s" -pw "%s" %s %s:%s' % (ISSM_DIR,username,key,package,host,path),shell=True)
+				except CalledProcessError as e:
+					raise CalledProcessError("issmscpout error message: could not call putty pscp.")
+
+		else:
+			#just use standard unix scp
+			#create string of packages being sent
+			string=''
+			for package in packages:
+				string+=' '+package
+			string+=' '
+		
+			if port:
+				subprocess.call('scp -P %d %s %s@localhost:%s' % (port,string,login,path),shell=True)
+			else:
+				subprocess.call('scp %s %s@%s:%s' % (string,login,host,path),shell=True)
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmssh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmssh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmssh.m	(revision 21239)
@@ -0,0 +1,37 @@
+function issmssh(host,login,port,command)
+%ISSMSSH - wrapper for OS independent ssh command.
+%
+%   usage: 
+%      issmssh(host,command)
+
+%first get hostname 
+hostname=oshostname();
+
+%if same as host, just run the command. 
+if strcmpi(host,hostname),
+	system(command);
+else
+	if ispc(),
+		%use the putty project plink.exe: it should be in the path.
+
+		%get ISSM_DIR variable
+		[status,ISSM_DIR]=system('echo [%ISSM_DIR_WIN%]');
+		if status, 
+			error('issmssh error message: could not find ISSM_DIR_WIN environment variable');
+		end
+		ISSM_DIR=ISSM_DIR(2:end-2);
+
+		username=input('Username: (quoted string) ');
+		key=input('Key: (quoted string) ');
+
+		system([ISSM_DIR '/externalpackages/ssh/plink.exe -ssh -l "' username '" -pw "' key '" ' host ' "' command '"']);
+
+	else
+		%just use standard unix ssh
+		if port,
+			eval(['!ssh -l ' login ' -p ' num2str(port) ' localhost "' command '"']);
+		else
+			eval(['!ssh -l ' login ' ' host ' "' command '"']);
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmssh.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmssh.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmssh.py	(revision 21239)
@@ -0,0 +1,61 @@
+from socket import gethostname
+from sys import platform as _platform
+import subprocess
+import os
+import MatlabFuncs as m
+
+def issmssh(host,login,port,command):
+	"""
+	ISSMSSH - wrapper for OS independent ssh command.
+ 
+	   usage: 
+	      issmssh(host,command)
+	"""
+
+	#first get hostname 
+	hostname=gethostname()
+
+	#if same as host, just run the command. 
+	if m.strcmpi(host,hostname):
+		subprocess.call(command,shell=True)
+	else:
+		if m.ispc():
+			#use the putty project plink.exe: it should be in the path.
+		
+			#get ISSM_DIR variable
+			if 'ISSM_DIR_WIN' in os.environ:
+				ISSM_DIR=os.environ['ISSM_DIR_WIN'][1:-2]
+			else:
+				raise OSError("issmssh error message: could not find ISSM_DIR_WIN environment variable.")
+
+			username=raw_input('Username: (quoted string) ')
+			key=raw_input('Key: (quoted string) ')
+
+			subprocess.call('%s/externalpackages/ssh/plink.exe -ssh -l "%s" -pw "%s" %s "%s"' % (ISSM_DIR,username,key,host,command),shell=True);
+
+		else:
+			#just use standard unix ssh
+			if port:
+				subprocess.call('ssh -l %s -p %d localhost "%s"' % (login,port,command),shell=True)
+			else:
+				subprocess.call('ssh -l %s %s "%s"' % (login,host,command),shell=True)
+
+	# The following code was added to fix:
+	# "IOError: [Errno 35] Resource temporarily unavailable"
+	# on the Mac when trying to display md after the solution.
+	# (from http://code.google.com/p/robotframework/issues/detail?id=995)
+
+	if _platform == "darwin":
+		# Make FreeBSD use blocking I/O like other platforms
+		import sys
+		import fcntl
+		from os import O_NONBLOCK
+		
+		fd = sys.stdin.fileno()
+		flags = fcntl.fcntl(fd, fcntl.F_GETFL)
+		fcntl.fcntl(fd, fcntl.F_SETFL, flags & ~O_NONBLOCK)
+		
+		fd = sys.stdout.fileno()
+		flags = fcntl.fcntl(fd, fcntl.F_GETFL)
+		fcntl.fcntl(fd, fcntl.F_SETFL, flags & ~O_NONBLOCK)
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmstscpin.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmstscpin.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmstscpin.m	(revision 21239)
@@ -0,0 +1,37 @@
+function issmstscpin(host, login,path, packages)
+%ISSMSCPIN get packages from host, using scp on unix, and pscp on windows
+%
+%   usage: issmstscpin(host,long, path, packages)
+%
+%
+
+%get initial warning mode
+state=warning('query', 'all');
+%remove warnings in case the files do not exist
+warning off
+for i=1:numel(packages),
+	delete(packages{i});
+end
+%back to initial warning state
+warning(state);
+
+%use starcluster to scp 
+%string to copy multiple files using scp: 
+if numel(packages)==1,
+	string=packages{1};
+else
+	string='';
+	for i=1:numel(packages)-1,
+		string=[string ' ' path packages{i} ' '];
+	end
+	string=[string path packages{end}];
+end
+
+system([starcluster() ' get ' host ' -u ' login ' ' string  ' ./']);
+
+%check starcluster get  worked
+for i=1:numel(packages),
+	if ~exist(['./' packages{i}]),
+		error('issmstscpin error message: could not call scp on *nix system');
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmstscpout.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmstscpout.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmstscpout.m	(revision 21239)
@@ -0,0 +1,15 @@
+function issmstscpout(host,path,login,packages)
+%ISSMSTSCPOUT send packages to a host, using starcluster put on unix
+%
+%   usage: issmstscpout(host,path,login,packages)
+%
+%
+
+%create string of packages being sent
+string='';
+for i=1:numel(packages),
+	string=[string ' ' packages{i}];
+end
+string=[string ' '];
+
+system([ starcluster() ' put ' host ' -u ' login ' ' string ' ' path]);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmstssh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmstssh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/issmstssh.m	(revision 21239)
@@ -0,0 +1,9 @@
+function issmstssh(host,login,command)
+%ISSMSSH - wrapper for OS independent ssh command.
+%
+%   usage: 
+%      issmstssh(host,command)
+
+%just use starcluster command to pipe an ssh command through
+system([starcluster() ' sshmaster ' host ' --user ' login ' ''' command '''']);
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/jplsvn.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/jplsvn.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/jplsvn.m	(revision 21239)
@@ -0,0 +1,15 @@
+function JPL_SVN=jplsvn()
+%ISSMDIR - Get JPL_SVN environment variable
+%
+%   Usage:
+%      JPL_SVN=jplsvn()
+
+if ~ispc(),
+	JPL_SVN =getenv('JPL_SVN');
+else
+	JPL_SVN =getenv('JPL_SVN_WIN');
+end
+
+if (isempty(JPL_SVN)),
+	error('jplsvn error message: ''JPL_SVN'' environment variable is empty! You should define JPL_SVN in your .cshrc or .bashrc');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/listfiles.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/listfiles.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/listfiles.m	(revision 21239)
@@ -0,0 +1,22 @@
+function list=listfiles()
+%LISTFILES list files inside a directory
+%        this is very OS dependent.
+%
+%   usage: list=listfiles;
+%
+%
+%   see also LS DIR
+
+%use dir, as it seems to act OS independent
+
+first_list=dir;
+list={};
+
+for i=1:numel(first_list),
+	if (  ~strcmpi(first_list(i).name,'.') &...
+			~strcmpi(first_list(i).name,'..') &...
+			~strcmpi(first_list(i).name,'NightlyRun') &...
+			~strcmpi(first_list(i).name,'.svn')),
+		list{end+1}=first_list(i).name;
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/listfilesparallel.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/listfilesparallel.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/listfilesparallel.m	(revision 21239)
@@ -0,0 +1,15 @@
+function list=listfilesparallel(rank,numprocs)
+%LISTFILESPARALLEL list files inside a directory, depending on rank  and number of processors running this routine.
+%        this is very OS dependent.
+%
+%   usage: list=listfilesparallel(rank,numprocs);
+%
+%
+%   see also LS DIR LISTFILES
+
+list=listfiles';
+numfiles=numel(list);
+
+%we now have a list, split it between all the processors.
+[i1,i2]=parallelrange(rank,numprocs,numfiles);
+list=list(i1:i2);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/oshostname.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/oshostname.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/oshostname.m	(revision 21239)
@@ -0,0 +1,29 @@
+function hostname=oshostname()
+%OSHOSTNAME - Determine hostname, irrespective of os type
+%
+%   Usage:
+%      hostname=oshostname();
+
+%See http://www.mathworks.com/help/matlab/ref/system.html "tips" section
+%We need to add < /dev/null otherwise what is in the clipboard is added
+[status,hostname]=system('hostname < /dev/null');
+
+% If that command did not work, we have an alternative
+if status~=0,
+	if ispc
+		hostname = getenv('COMPUTERNAME');
+	else
+		hostname = getenv('HOSTNAME');
+	end
+end
+
+% Take out minus signs
+hostname = strrep(hostname,'-','');
+
+% Trim and lower case
+hostname = strtrim(lower(hostname));
+
+% Check that machine name is not empty
+if isempty(hostname),
+	error('Cannot determine machine name');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/recursivepath.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/recursivepath.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/recursivepath.m	(revision 21239)
@@ -0,0 +1,39 @@
+function p = recursivepath(d)
+%RECURSIVEPATH - generate paths in a directory
+%
+%   this routine is equivalent to Matlab's genpath except that it skips CVS and
+%   .svn directories
+%
+%   Usage:
+%      p = recursivepath(d)
+
+%initialize path to be returned
+p = '';
+sep=pathsep;  %directory separator
+
+% Generate path based on given root directory
+files=dir(d);
+if isempty(files)
+	return
+end
+
+% Add d to the path even if it is empty.
+p = [p d sep];
+
+% set logical vector for subdirectory entries in d
+isdir = logical(cat(1,files.isdir));
+
+% Recursively goes through the subdirectories of d
+dirs=files(isdir); % select only directory entries from the current listing
+for i=1:length(dirs)
+	dirname=dirs(i).name;
+	if ~strcmp(dirname,'.')    & ...
+		~strcmp(dirname,'..')   & ...
+		~strcmp(dirname,'.svn') & ...
+		~strcmp(dirname,'CVS')  & ...
+		~strncmp(dirname,'@',1) & ... %Method directories not allowed in MATLAB path
+		~strcmp(dirname,'private')    %private directories not allowed in MATLAB path
+
+		p = [p recursivepath(fullfile(d,dirname))];
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/starcluster.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/starcluster.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/os/starcluster.m	(revision 21239)
@@ -0,0 +1,7 @@
+function STARCLUSTER=starcluster()
+%STARCLUSTER - Get path to STARCLUSTER command
+%
+%   Usage:
+%      STARCLUSTER=STARCLUSTER()
+
+STARCLUSTER=[issmdir() '/externalpackages/python/install/bin/starcluster -c ' jplsvn '/proj-group/CloudComputing/starcluster.config'];
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/contourenvelope.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/contourenvelope.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/contourenvelope.m	(revision 21239)
@@ -0,0 +1,138 @@
+function segments=contourenvelope(mh,varargin)
+%CONTOURENVELOPE - build a set of segments enveloping a contour .exp
+%
+%   Usage:
+%      segments=contourenvelope(mh,varargin)
+%
+%   Example:
+%      segments=contourenvelope(mh,'Stream.exp');
+%      segments=contourenvelope(mh);
+
+%some checks
+if nargin>2,
+	help contourenvelope
+	error('contourenvelope error message: bad usage');
+end
+if nargin==2,
+	flags=varargin{1};
+
+	if ischar(flags),
+		file=flags;
+		if ~exist(file),
+			error(['contourenvelope error message: file ' file ' not found']);
+		end
+		isfile=1;
+	elseif isnumeric(flags),
+		%do nothing for now
+		isfile=0;
+	else
+		error('contourenvelope error message:  second argument should be a file or an elements flag');
+	end
+end
+
+%Now, build the connectivity tables for this mesh.
+%Computing connectivity
+if isnan(mh.vertexconnectivity),
+	mh.vertexconnectivity=NodeConnectivity(mh.elements,mh.numberofvertices);
+end
+if isnan(mh.elementconnectivity),
+	mh.elementconnectivity=ElementConnectivity(mh.elements,mh.vertexconnectivity);
+end
+
+%get nodes inside profile
+mesh.elementconnectivity=mh.elementconnectivity;
+if dimension(mh)==2,
+	mesh.elements=mh.elements;
+	mesh.x=mh.x;
+	mesh.y=mh.y;
+	mesh.numberofvertices=mh.numberofvertices;
+	mesh.numberofelements=mh.numberofelements;
+else
+	mesh.elements=mh.elements2d;
+	mesh.x=mh.x2d;
+	mesh.y=mh.y2d;
+	mesh.numberofvertices=mh.numberofvertices2d;
+	mesh.numberofelements=mh.numberofelements2d;
+end
+
+if nargin==2,
+
+	if isfile,
+		%get flag list of elements and nodes inside the contour
+		nodein=ContourToMesh(mesh.elements,mesh.x,mesh.y,file,'node',1);
+		elemin=(sum(nodein(mesh.elements),2)==size(mesh.elements,2));
+		%modify element connectivity
+		elemout=find(~elemin);
+		mesh.elementconnectivity(elemout,:)=0;
+		mesh.elementconnectivity(find(ismember(mesh.elementconnectivity,elemout)))=0;
+	else
+		%get flag list of elements and nodes inside the contour
+		nodein=zeros(mesh.numberofvertices,1);
+		elemin=zeros(mesh.numberofelements,1);
+
+		pos=find(flags);
+		elemin(pos)=1;
+		nodein(mesh.elements(pos,:))=1;
+
+		%modify element connectivity
+		elemout=find(~elemin);
+		mesh.elementconnectivity(elemout,:)=0;
+		mesh.elementconnectivity(find(ismember(mesh.elementconnectivity,elemout)))=0;
+	end
+end
+
+%Find element on boundary
+%First: find elements on the boundary of the domain
+flag=mesh.elementconnectivity;
+if nargin==2,
+	flag(find(flag))=elemin(flag(find(flag)));
+end
+elementonboundary=double(prod(flag,2)==0 & sum(flag,2)>0);
+
+%Find segments on boundary
+pos=find(elementonboundary);
+num_segments=length(pos);
+segments=zeros(num_segments*3,3);
+count=1;
+
+for i=1:num_segments,
+	el1=pos(i);
+	els2=mesh.elementconnectivity(el1,find(mesh.elementconnectivity(el1,:)));
+	if length(els2)>1,
+		flag=intersect(intersect(mesh.elements(els2(1),:),mesh.elements(els2(2),:)),mesh.elements(el1,:));
+		nods1=mesh.elements(el1,:);
+		nods1(find(nods1==flag))=[];
+		segments(count,:)=[nods1 el1];
+
+		ord1=find(nods1(1)==mesh.elements(el1,:));
+		ord2=find(nods1(2)==mesh.elements(el1,:));
+
+		%swap segment nodes if necessary
+		if ( (ord1==1 & ord2==2) | (ord1==2 & ord2==3) | (ord1==3 & ord2==1) ),
+			temp=segments(count,1);
+			segments(count,1)=segments(count,2);
+			segments(count,2)=temp;
+		end
+		segments(count,1:2)=fliplr(segments(count,1:2));
+		count=count+1;
+	else
+		nods1=mesh.elements(el1,:);
+		flag=setdiff(nods1,mesh.elements(els2,:));
+		for j=1:3,
+			nods=nods1; nods(j)=[];
+			if any(ismember(flag,nods)),
+				segments(count,:)=[nods el1];
+				ord1=find(nods(1)==mesh.elements(el1,:));
+				ord2=find(nods(2)==mesh.elements(el1,:));
+				if ( (ord1==1 & ord2==2) | (ord1==2 & ord2==3) | (ord1==3 & ord2==1) ),
+					temp=segments(count,1);
+					segments(count,1)=segments(count,2);
+					segments(count,2)=temp;
+				end
+				segments(count,1:2)=fliplr(segments(count,1:2));
+				count=count+1;
+			end
+		end
+	end
+end
+segments=segments(1:count-1,:);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/contourenvelope.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/contourenvelope.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/contourenvelope.py	(revision 21239)
@@ -0,0 +1,135 @@
+import os.path
+import numpy
+import copy
+from NodeConnectivity import NodeConnectivity
+from ElementConnectivity import ElementConnectivity
+from mesh2d import mesh2d
+from mesh3dprisms import mesh3dprisms
+import MatlabFuncs as m
+
+def contourenvelope(md,*args):
+	"""
+	CONTOURENVELOPE - build a set of segments enveloping a contour .exp
+
+	   Usage:
+	      segments=contourenvelope(md,varargin)
+
+	   Example:
+	      segments=contourenvelope(md,'Stream.exp');
+	      segments=contourenvelope(md);
+	"""
+
+	#some checks
+	if len(args)>1:
+		raise RuntimeError("contourenvelope error message: bad usage")
+
+	if len(args)==1:
+		flags=args[0]
+
+		if   isinstance(flags,(str,unicode)):
+			file=flags
+			if not os.path.exists(file):
+				raise IOError("contourenvelope error message: file '%s' not found" % file)
+			isfile=1
+		elif isinstance(flags,(bool,int,long,float)):
+			#do nothing for now
+			isfile=0
+		else:
+			raise TypeError("contourenvelope error message:  second argument should be a file or an elements flag")
+
+	#Now, build the connectivity tables for this mesh.
+	#Computing connectivity
+	if numpy.size(md.mesh.vertexconnectivity,axis=0)!=md.mesh.numberofvertices and numpy.size(md.mesh.vertexconnectivity,axis=0)!=md.mesh.numberofvertices2d:
+		md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices)[0]
+	if numpy.size(md.mesh.elementconnectivity,axis=0)!=md.mesh.numberofelements and numpy.size(md.mesh.elementconnectivity,axis=0)!=md.mesh.numberofelements2d:
+		md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity)[0]
+
+	#get nodes inside profile
+	elementconnectivity=copy.deepcopy(md.mesh.elementconnectivity)
+	if md.mesh.dimension()==2:
+		elements=copy.deepcopy(md.mesh.elements)
+		x=copy.deepcopy(md.mesh.x)
+		y=copy.deepcopy(md.mesh.y)
+		numberofvertices=copy.deepcopy(md.mesh.numberofvertices)
+		numberofelements=copy.deepcopy(md.mesh.numberofelements)
+	else:
+		elements=copy.deepcopy(md.mesh.elements2d)
+		x=copy.deepcopy(md.mesh.x2d)
+		y=copy.deepcopy(md.mesh.y2d)
+		numberofvertices=copy.deepcopy(md.mesh.numberofvertices2d)
+		numberofelements=copy.deepcopy(md.mesh.numberofelements2d)
+
+	if len(args)==1:
+
+		if isfile:
+			#get flag list of elements and nodes inside the contour
+			nodein=ContourToMesh(elements,x,y,file,'node',1)
+			elemin=(numpy.sum(nodein(elements),axis=1)==numpy.size(elements,axis=1))
+			#modify element connectivity
+			elemout=numpy.nonzero(numpy.logical_not(elemin))[0]
+			elementconnectivity[elemout,:]=0
+			elementconnectivity[numpy.nonzero(m.ismember(elementconnectivity,elemout+1))]=0
+		else:
+			#get flag list of elements and nodes inside the contour
+			nodein=numpy.zeros(numberofvertices)
+			elemin=numpy.zeros(numberofelements)
+
+			pos=numpy.nonzero(flags)
+			elemin[pos]=1
+			nodein[elements[pos,:]-1]=1
+
+			#modify element connectivity
+			elemout=numpy.nonzero(numpy.logical_not(elemin))[0]
+			elementconnectivity[elemout,:]=0
+			elementconnectivity[numpy.nonzero(m.ismember(elementconnectivity,elemout+1))]=0
+
+	#Find element on boundary
+	#First: find elements on the boundary of the domain
+	flag=copy.deepcopy(elementconnectivity)
+	if len(args)==1:
+		flag[numpy.nonzero(flag)]=elemin[flag[numpy.nonzero(flag)]]
+	elementonboundary=numpy.logical_and(numpy.prod(flag,axis=1)==0,numpy.sum(flag,axis=1)>0)
+
+	#Find segments on boundary
+	pos=numpy.nonzero(elementonboundary)[0]
+	num_segments=numpy.size(pos)
+	segments=numpy.zeros((num_segments*3,3),int)
+	count=0
+
+	for el1 in pos:
+		els2=elementconnectivity[el1,numpy.nonzero(elementconnectivity[el1,:])[0]]-1
+		if numpy.size(els2)>1:
+			flag=numpy.intersect1d(numpy.intersect1d(elements[els2[0],:],elements[els2[1],:]),elements[el1,:])
+			nods1=elements[el1,:]
+			nods1=numpy.delete(nods1,numpy.nonzero(nods1==flag))
+			segments[count,:]=[nods1[0],nods1[1],el1+1]
+
+			ord1=numpy.nonzero(nods1[0]==elements[el1,:])[0][0]
+			ord2=numpy.nonzero(nods1[1]==elements[el1,:])[0][0]
+
+			#swap segment nodes if necessary
+			if ( (ord1==0 and ord2==1) or (ord1==1 and ord2==2) or (ord1==2 and ord2==0) ):
+				temp=segments[count,0]
+				segments[count,0]=segments[count,1]
+				segments[count,1]=temp
+			segments[count,0:2]=numpy.flipud(segments[count,0:2])
+			count+=1
+		else:
+			nods1=elements[el1,:]
+			flag=numpy.setdiff1d(nods1,elements[els2,:])
+			for j in xrange(0,3):
+				nods=numpy.delete(nods1,j)
+				if numpy.any(m.ismember(flag,nods)):
+					segments[count,:]=[nods[0],nods[1],el1+1]
+					ord1=numpy.nonzero(nods[0]==elements[el1,:])[0][0]
+					ord2=numpy.nonzero(nods[1]==elements[el1,:])[0][0]
+					if ( (ord1==0 and ord2==1) or (ord1==1 and ord2==2) or (ord1==2 and ord2==0) ):
+						temp=segments[count,0]
+						segments[count,0]=segments[count,1]
+						segments[count,1]=temp
+					segments[count,0:2]=numpy.flipud(segments[count,0:2])
+					count+=1
+	segments=segments[0:count,:]
+
+	return segments
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/parameterize.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/parameterize.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/parameterize.m	(revision 21239)
@@ -0,0 +1,57 @@
+function md=parameterize(md,parametername)
+%PARAMETERIZE - parameterize a model
+%
+%   from a parameter matlab file, start filling in all the @model fields that were not 
+%   filled in by the mesh.m and mask.m @model methods.
+%   Warning: the parameter file must be able to be run in Matlab
+%
+%   Usage:
+%      md=parameterize(md,parametername)
+%
+%   Example:
+%      md=parameterize(md,'Square.par');
+
+%some checks
+if ~exist(parametername),
+	error(['parameterize error message: file ' parametername ' not found!']);
+end
+
+%Try and run parameter file.
+temporaryname=['TemporaryParameterFile' num2str(feature('GetPid')) ];
+copyfile(parametername,[temporaryname '.m']);
+
+%WARNING: this is a bug of matlab: the TemporaryParameterFile must be cleared
+%otherwise matlab keeps the previous version of this file which is not what
+%we want!!!
+eval(['clear ' temporaryname]);
+
+try,
+	eval(temporaryname);
+	delete([temporaryname '.m']);
+catch me,
+	delete([temporaryname '.m']);
+
+	%copy error message
+	me2=struct('message',me.message,'stack',me.stack);
+
+	%rename parameter file
+	me2.message=regexprep(me2.message,[temporaryname '.m'],parametername);
+	for i=1:length(me2.stack)-1,
+		me2.stack(i).file=regexprep(me2.stack(i).file,[temporaryname '.m'],parametername);
+		me2.stack(i).name=regexprep(me2.stack(i).name,[temporaryname],parametername);
+		if strcmp(me2.stack(i).name,'parameterize'),
+			%remove error (eval(temporaryname);) misleading
+			me2.stack(i)=[];
+		end
+	end
+
+	%throw error message
+	rethrow(me2);
+end
+
+%Name and notes
+if isempty(md.miscellaneous.name), 
+	[path,root,ext]=fileparts(parametername);
+	md.miscellaneous.name=root; 
+end
+md.miscellaneous.notes=['Model created by using parameter file: ' parametername ' on: ' datestr(now)];
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/parameterize.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/parameterize.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/parameterize.py	(revision 21239)
@@ -0,0 +1,33 @@
+import os
+import datetime
+
+def parameterize(md,parametername):
+	"""
+	PARAMETERIZE - parameterize a model
+
+	   from a parameter python file, start filling in all the model fields that were not 
+	   filled in by the mesh.py and mask.py model methods.
+	   Warning: the parameter file must be able to be run in Python
+
+	   Usage:
+	      md=parameterize(md,parametername)
+
+	   Example:
+	      md=parameterize(md,'Square.par');
+	"""
+
+	#some checks
+	if not os.path.exists(parametername):
+		raise IOError("parameterize error message: file '%s' not found!" % parametername)
+
+	#Try and run parameter file.
+	execfile(parametername)
+
+	#Name and notes
+	if not md.miscellaneous.name:
+		md.miscellaneous.name=os.path.basename(parametername).split('.')[0]
+
+	md.miscellaneous.notes="Model created by using parameter file: '%s' on: %s." % (parametername,datetime.datetime.strftime(datetime.datetime.now(),'%c'))
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setflowequation.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setflowequation.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setflowequation.js	(revision 21239)
@@ -0,0 +1,309 @@
+function setflowequation(md){
+//SETFLOWEQUATION - associate a solution type to each element
+//
+//   This routine works like plotmodel: it works with an even number of inputs
+//   'SIA','SSA','L1L2','HO','FS' and 'fill' are the possible options
+//   that must be followed by the corresponding exp file or flags list
+//   It can either be a domain file (argus type, .exp extension), or an array of element flags. 
+//   If user wants every element outside the domain to be 
+//   setflowequationd, add '~' to the name of the domain file (ex: '~HO.exp');
+//   an empty string '' will be considered as an empty domain
+//   a string 'all' will be considered as the entire domain
+//   You can specify the type of coupling, 'penalties' or 'tiling', to use with the input 'coupling'
+//   NB: L1L2 cannot currently be coupled to any other ice flow model
+//
+//   Usage:
+//      setflowequation(md,varargin)
+//
+//   Example:
+//      setflowequation(md,'HO',HO,'fill','SIA','coupling','tiling');
+
+	//some checks on list of arguments
+	if(arguments.length<3) throw Error('setflowequation error message');
+
+	//Process options
+	var args = Array.prototype.slice.call(arguments);
+	var options = new pairoptions(args.slice(1,args.length));
+	options.deleteduplicates(1);
+
+	//Find_out what kind of coupling to use
+	coupling_method=options.getfieldvalue('coupling','tiling');
+	if ((coupling_method != 'tiling') & !(coupling_method != 'penalties')){
+		throw error('coupling type can only be: tiling or penalties');
+	}
+
+	//recover elements distribution
+	SIAflag  = FlagElements(md,options.getfieldvalue('SIA',''));
+	SSAflag  = FlagElements(md,options.getfieldvalue('SSA',''));
+	HOflag   = FlagElements(md,options.getfieldvalue('HO',''));
+	L1L2flag = FlagElements(md,options.getfieldvalue('L1L2',''));
+	FSflag   = FlagElements(md,options.getfieldvalue('FS',''));
+	filltype = options.getfieldvalue('fill','none');
+	options.displayunused();
+
+	//Flag the elements that have not been flagged as filltype
+	if (filltype === 'SIA'){
+		for(var i=0;i<md.mesh.numberofelements;i++)if(!(SSAflag[i] | HOflag[i]))SIAflag[i]=1;
+	}
+	else if (filltype === 'SSA'){
+		for(var i=0;i<md.mesh.numberofelements;i++)if(!(SIAflag[i] | HOflag[i] | FSflag[i]))SSAflag[i]=1;
+	}
+	else if (filltype === 'HO'){
+		for(var i=0;i<md.mesh.numberofelements;i++)if(!(SIAflag[i] | SSAflag[i] | FSflag[i]))HOflag[i]=1;
+	}
+
+	//check that each element has at least one flag
+	for(var i=0;i<md.mesh.numberofelements;i++)if((SIAflag[i] + SSAflag[i] + HOflag[i] + L1L2flag[i] + FSflag[i])==0)
+	throw Error("elements type not assigned, supported models are 'SIA','SSA','HO' and 'FS'");
+
+	//check that each element has only one flag
+	if (ArrayAnyAboveStrict(ArrayXPY(SIAflag,SSAflag,HOflag,L1L2flag),1)){
+		console.log('setflowequation warning message: some elements have several types, higher order type is used for them')
+
+		for(var i=0;i<md.mesh.numberofelements;i++){
+			if(SIAflag[i] & SSAflag[i])SIAflag[i]=0;
+			if(SIAflag[i] & HOflag[i])SIAflag[i]=0;
+			if(SSAflag[i] & HOflag[i])SSAflag[i]=0;
+		}
+	}
+
+	//check that L1L2 is not coupled to any other model for now
+	if (ArrayAnyEqual(L1L2flag,1) & ArrayAnyEqual(ArrayOr(SIAflag,SSAflag,HOflag,FSflag),1)) throw Error('L1L2 cannot be coupled to any other model');
+
+	//Check that no HO or FS for 2d mesh
+	if (md.mesh.domaintype() == '2Dhorizontal'){
+		for(var i=0;i<FSflag.length;i++){
+			if(FSflag[i] | HOflag[i]) throw Error('FS and HO elements not allowed in 2d mesh, extrude it first')
+		}
+	}
+
+	//FS can only be used alone for now:
+	if (ArrayAnyEqual(FSflag,1) & ArrayAnyEqual(SIAflag,1)) throw Error('FS cannot be used with any other model for now, put FS everywhere')
+
+	//Initialize node fields
+	nodeonSIA=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(SIAflag,1);
+	for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonSIA[md.mesh.elements[pos[i]][j]-1]=1;
+	
+	nodeonSSA=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(SSAflag,1);
+	for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonSSA[md.mesh.elements[pos[i]][j]-1]=1;
+	
+	nodeonHO=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(HOflag,1);
+	for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonHO[md.mesh.elements[pos[i]][j]-1]=1;
+	
+	nodeonL1L2=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(L1L2flag,1);
+	for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonL1L2[md.mesh.elements[pos[i]][j]-1]=1;
+
+	nodeonFS=NewArrayFill(md.mesh.numberofvertices,0);
+	noneflag=NewArrayFill(md.mesh.numberofvertices,0);
+	
+	
+	//First modify FSflag to get rid of elements contrained everywhere (spc + border with HO or SSA)
+	if (ArrayAnyEqual(FSflag,1)){
+		throw Error("FS elements not supported yet!");
+		/*fullspcnodes=double((~isnan(md.stressbalance.spcvx)+~isnan(md.stressbalance.spcvy)+~isnan(md.stressbalance.spcvz))==3 | (nodeonHO & nodeonFS));         //find all the nodes on the boundary of the domain without icefront
+		fullspcelems=double(sum(fullspcnodes(md.mesh.elements),2)==6);         //find all the nodes on the boundary of the domain without icefront
+		FSflag(find(fullspcelems))=0;
+		nodeonFS(md.mesh.elements(find(FSflag),:))=1;*/
+	}
+
+	//Then complete with NoneApproximation or the other model used if there is no FS
+	if (ArrayAnyEqual(FSflag,1)){
+		throw Error("FS elements not supported yet!");
+		/*if any(HOflag), //fill with HO
+			HOflag(~FSflag)=1;
+			nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+		elseif any(SSAflag), //fill with SSA
+			SSAflag(~FSflag)=1;
+			nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+		else //fill with none 
+			noneflag(find(~FSflag))=1;
+		end*/
+	}
+
+	//Now take care of the coupling between SSA and HO
+	md.stressbalance.vertex_pairing=[];
+	nodeonSSAHO=NewArrayFill(md.mesh.numberofvertices,0);
+	nodeonHOFS=NewArrayFill(md.mesh.numberofvertices,0);
+	nodeonSSAFS=NewArrayFill(md.mesh.numberofvertices,0);
+	SSAHOflag=NewArrayFill(md.mesh.numberofelements,0);
+	SSAFSflag=NewArrayFill(md.mesh.numberofelements,0);
+	HOFSflag=NewArrayFill(md.mesh.numberofelements,0);
+
+	/*if strcmpi(coupling_method,'penalties'),
+		//Create the border nodes between HO and SSA and extrude them
+		numnodes2d=md.mesh.numberofvertices2d;
+		numlayers=md.mesh.numberoflayers;
+		bordernodes2d=find(nodeonHO(1:numnodes2d) & nodeonSSA(1:numnodes2d)); //Nodes connected to two different types of elements
+
+		//initialize and fill in penalties structure
+		if ~isnan(bordernodes2d),
+			penalties=[];
+			for	i=1:numlayers-1,
+				penalties=[penalties; [bordernodes2d bordernodes2d+md.mesh.numberofvertices2d*(i)]];
+			end
+			md.stressbalance.vertex_pairing=penalties;
+		end
+	elseif strcmpi(coupling_method,'tiling'),
+		if any(SSAflag) & any(HOflag), //coupling SSA HO
+			//Find node at the border
+			nodeonSSAHO(find(nodeonSSA & nodeonHO))=1;
+			//SSA elements in contact with this layer become SSAHO elements
+			matrixelements=ismember(md.mesh.elements,find(nodeonSSAHO));
+			commonelements=sum(matrixelements,2)~=0;
+			commonelements(find(HOflag))=0; //only one layer: the elements previously in SSA
+			SSAflag(find(commonelements))=0; //these elements are now SSAHOelements
+			SSAHOflag(find(commonelements))=1;
+			nodeonSSA(:)=0;
+			nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+
+			//rule out elements that don't touch the 2 boundaries
+			pos=find(SSAHOflag);
+			elist=zeros(length(pos),1);
+			elist = elist + any(sum(nodeonSSA(md.mesh.elements(pos,:)),2),2);
+			elist = elist - any(sum(nodeonHO(md.mesh.elements(pos,:))  ,2),2);
+			pos1=find(elist==1);
+			SSAflag(pos(pos1))=1;
+			SSAHOflag(pos(pos1))=0;
+			pos2=find(elist==-1);
+			HOflag(pos(pos2))=1;
+			SSAHOflag(pos(pos2))=0;
+
+			//Recompute nodes associated to these elements
+			nodeonSSA(:)=0;
+			nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+			nodeonHO(:)=0;
+			nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+			nodeonSSAHO(:)=0;
+			nodeonSSAHO(md.mesh.elements(find(SSAHOflag),:))=1;
+
+		elseif any(HOflag) & any(FSflag), //coupling HO FS
+			//Find node at the border
+			nodeonHOFS(find(nodeonHO & nodeonFS))=1;
+			//FS elements in contact with this layer become HOFS elements
+			matrixelements=ismember(md.mesh.elements,find(nodeonHOFS));
+			commonelements=sum(matrixelements,2)~=0;
+			commonelements(find(HOflag))=0; //only one layer: the elements previously in SSA
+			FSflag(find(commonelements))=0; //these elements are now SSAHOelements
+			HOFSflag(find(commonelements))=1;
+			nodeonFS=zeros(md.mesh.numberofvertices,1);
+			nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+
+			//rule out elements that don't touch the 2 boundaries
+			pos=find(HOFSflag);
+			elist=zeros(length(pos),1);
+			elist = elist + any(sum(nodeonFS(md.mesh.elements(pos,:)),2),2);
+			elist = elist - any(sum(nodeonHO(md.mesh.elements(pos,:)),2),2);
+			pos1=find(elist==1);
+			FSflag(pos(pos1))=1;
+			HOFSflag(pos(pos1))=0;
+			pos2=find(elist==-1);
+			HOflag(pos(pos2))=1;
+			HOFSflag(pos(pos2))=0;
+
+			//Recompute nodes associated to these elements
+			nodeonFS(:)=0;
+			nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+			nodeonHO(:)=0;
+			nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+			nodeonHOFS(:)=0;
+			nodeonHOFS(md.mesh.elements(find(HOFSflag),:))=1;
+
+		elseif any(FSflag) & any(SSAflag),
+			//Find node at the border
+			nodeonSSAFS(find(nodeonSSA & nodeonFS))=1;
+			//FS elements in contact with this layer become SSAFS elements
+			matrixelements=ismember(md.mesh.elements,find(nodeonSSAFS));
+			commonelements=sum(matrixelements,2)~=0;
+			commonelements(find(SSAflag))=0; //only one layer: the elements previously in SSA
+			FSflag(find(commonelements))=0; //these elements are now SSASSAelements
+			SSAFSflag(find(commonelements))=1;
+			nodeonFS=zeros(md.mesh.numberofvertices,1);
+			nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+
+			//rule out elements that don't touch the 2 boundaries
+			pos=find(SSAFSflag);
+			elist=zeros(length(pos),1);
+			elist = elist + any(sum(nodeonSSA(md.mesh.elements(pos,:)),2),2);
+			elist = elist - any(sum(nodeonFS(md.mesh.elements(pos,:))  ,2),2);
+			pos1=find(elist==1);
+			SSAflag(pos(pos1))=1;
+			SSAFSflag(pos(pos1))=0;
+			pos2=find(elist==-1);
+			FSflag(pos(pos2))=1;
+			SSAFSflag(pos(pos2))=0;
+
+			//Recompute nodes associated to these elements
+			nodeonSSA(:)=0;
+			nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+			nodeonFS(:)=0;
+			nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+			nodeonSSAFS(:)=0;
+			nodeonSSAFS(md.mesh.elements(find(SSAFSflag),:))=1;
+
+		elseif any(FSflag) & any(SIAflag),
+			error('type of coupling not supported yet');
+		end
+	end*/
+
+	//Create element equations
+	md.flowequation.element_equation=NewArrayFill(md.mesh.numberofelements,0);
+	pos=ArrayFind(noneflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=0;
+	pos=ArrayFind(SIAflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=1;
+	pos=ArrayFind(SSAflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=2;
+	pos=ArrayFind(L1L2flag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=3;
+	pos=ArrayFind(HOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=4;
+	pos=ArrayFind(FSflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=5;
+	pos=ArrayFind(SSAHOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=6;
+	pos=ArrayFind(SSAFSflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=7;
+	pos=ArrayFind(HOFSflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=8;
+
+
+	//border
+	md.flowequation.borderHO=nodeonHO;
+	md.flowequation.borderSSA=nodeonSSA;
+	md.flowequation.borderFS=nodeonFS;
+	
+
+	//Create vertices_type
+	md.flowequation.vertex_equation=NewArrayFill(md.mesh.numberofvertices,0);
+
+	pos=ArrayFind(nodeonSSA,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=2;
+	pos=ArrayFind(nodeonL1L2,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=3;
+	pos=ArrayFind(nodeonHO,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=4;
+	pos=ArrayFind(nodeonFS,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=5;
+	//DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority)
+	pos=ArrayFind(nodeonSIA,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=1;
+	if (ArrayAnyEqual(FSflag,1)){
+		pos=ArrayFind(nodeonFS==0);
+		if(ArrayAnyEqual(HOflag,0) & ArrayAnyEqual(SSA,0)){
+			for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=0;
+		}
+	}
+
+	pos=ArrayFind(nodeonSSAHO,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=6;
+	pos=ArrayFind(nodeonHOFS,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=7;
+	pos=ArrayFind(nodeonSSAFS,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=8;
+
+	//figure out solution types
+	md.flowequation.isSIA  = ArrayAnyEqual(md.flowequation.element_equation,1);
+	md.flowequation.isSSA  = ArrayAnyEqual(md.flowequation.element_equation,2);
+	md.flowequation.isL1L2 = ArrayAnyEqual(md.flowequation.element_equation,3);
+	md.flowequation.isHO   = ArrayAnyEqual(md.flowequation.element_equation,4);
+	md.flowequation.isFS   = ArrayAnyEqual(md.flowequation.element_equation,5);
+	return
+
+	//Check that tiling can work:
+	/*if any(md.flowequation.borderSSA) & any(md.flowequation.borderHO) & any(md.flowequation.borderHO + md.flowequation.borderSSA ~=1),
+		error('error coupling domain too irregular');
+	end
+	if any(md.flowequation.borderSSA) & any(md.flowequation.borderFS) & any(md.flowequation.borderFS + md.flowequation.borderSSA ~=1),
+		error('error coupling domain too irregular');
+	end
+	if any(md.flowequation.borderFS) & any(md.flowequation.borderHO) & any(md.flowequation.borderHO + md.flowequation.borderFS~=1),
+		error('error coupling domain too irregular');
+	end*/
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setflowequation.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setflowequation.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setflowequation.m	(revision 21239)
@@ -0,0 +1,302 @@
+function md=setflowequation(md,varargin)
+%SETFLOWEQUATION - associate a solution type to each element
+%
+%   This routine works like plotmodel: it works with an even number of inputs
+%   'SIA','SSA','L1L2','HO','FS' and 'fill' are the possible options
+%   that must be followed by the corresponding exp file or flags list
+%   It can either be a domain file (argus type, .exp extension), or an array of element flags. 
+%   If user wants every element outside the domain to be 
+%   setflowequationd, add '~' to the name of the domain file (ex: '~HO.exp');
+%   an empty string '' will be considered as an empty domain
+%   a string 'all' will be considered as the entire domain
+%   You can specify the type of coupling, 'penalties' or 'tiling', to use with the input 'coupling'
+%   NB: L1L2 cannot currently be coupled to any other ice flow model
+%
+%   Usage:
+%      md=setflowequation(md,varargin)
+%
+%   Example:
+%      md=setflowequation(md,'HO','HO.exp',fill','SIA','coupling','tiling');
+
+%some checks on list of arguments
+if ((nargin<2) | (nargout~=1)),
+	error('setflowequation error message');
+end
+
+%Process options
+options=pairoptions(varargin{:});
+options=deleteduplicates(options,1);
+
+%Find_out what kind of coupling to use
+coupling_method=getfieldvalue(options,'coupling','tiling');
+if (~strcmpi(coupling_method,'tiling') & ~strcmpi(coupling_method,'penalties')),
+	error('coupling type can only be: tiling or penalties');
+end
+
+%recover elements distribution
+SIAflag  = FlagElements(md,getfieldvalue(options,'SIA',''));
+SSAflag  = FlagElements(md,getfieldvalue(options,'SSA',''));
+HOflag   = FlagElements(md,getfieldvalue(options,'HO',''));
+L1L2flag = FlagElements(md,getfieldvalue(options,'L1L2',''));
+FSflag   = FlagElements(md,getfieldvalue(options,'FS',''));
+filltype = getfieldvalue(options,'fill','none');
+displayunused(options);
+
+%Flag the elements that have not been flagged as filltype
+if strcmpi(filltype,'SIA'),
+	SIAflag(find(~(SSAflag | HOflag)))=1;
+elseif strcmpi(filltype,'SSA'),
+	SSAflag(find(~(SIAflag | HOflag | FSflag)))=1;
+elseif strcmpi(filltype,'HO'),
+	HOflag(find(~(SIAflag | SSAflag | FSflag)))=1;
+end
+
+%check that each element has at least one flag
+if any(SIAflag+SSAflag+HOflag+L1L2flag+FSflag==0),
+	error('elements type not assigned, supported models are ''SIA'',''SSA'',''HO'' and ''FS''')
+end
+
+%check that each element has only one flag
+if any(SIAflag+SSAflag+HOflag+L1L2flag+FSflag>1),
+	disp('setflowequation warning message: some elements have several types, higher order type is used for them')
+	SIAflag(find(SIAflag & SSAflag))=0;
+	SIAflag(find(SIAflag & HOflag))=0;
+	SSAflag(find(SSAflag & HOflag))=0;
+end
+
+%check that L1L2 is not coupled to any other model for now
+if any(L1L2flag) & any(SIAflag | SSAflag | HOflag | FSflag)
+	error('L1L2 cannot be coupled to any other model');
+end
+
+%Check that no HO or FS for 2d mesh
+if strcmp(domaintype(md.mesh),'2Dhorizontal')
+	if any(FSflag | HOflag)
+		error('FS and HO elements not allowed in 2d mesh, extrude it first')
+	end
+end
+
+%FS can only be used alone for now:
+if any(FSflag) &any(SIAflag),
+	error('FS cannot be used with any other model for now, put FS everywhere')
+end
+
+%Initialize node fields
+nodeonSIA=zeros(md.mesh.numberofvertices,1);
+nodeonSIA(md.mesh.elements(find(SIAflag),:))=1;
+nodeonSSA=zeros(md.mesh.numberofvertices,1);
+nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+nodeonHO=zeros(md.mesh.numberofvertices,1);
+nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+nodeonL1L2=zeros(md.mesh.numberofvertices,1);
+nodeonL1L2(md.mesh.elements(find(L1L2flag),:))=1;
+nodeonFS=zeros(md.mesh.numberofvertices,1);
+noneflag=zeros(md.mesh.numberofelements,1);
+
+%First modify FSflag to get rid of elements contrained everywhere (spc + border with HO or SSA)
+if any(FSflag),
+	fullspcnodes=double((~isnan(md.stressbalance.spcvx)+~isnan(md.stressbalance.spcvy)+~isnan(md.stressbalance.spcvz))==3 | (nodeonHO & nodeonFS));         %find all the nodes on the boundary of the domain without icefront
+	fullspcelems=double(sum(fullspcnodes(md.mesh.elements),2)==6);         %find all the nodes on the boundary of the domain without icefront
+	FSflag(find(fullspcelems))=0;
+	nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+end
+
+%Then complete with NoneApproximation or the other model used if there is no FS
+if any(FSflag), 
+	if any(HOflag), %fill with HO
+		HOflag(~FSflag)=1;
+		nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+	elseif any(SSAflag), %fill with SSA
+		SSAflag(~FSflag)=1;
+		nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+	else %fill with none 
+		noneflag(find(~FSflag))=1;
+	end
+end
+
+%Now take care of the coupling between SSA and HO
+md.stressbalance.vertex_pairing=[];
+nodeonSSAHO=zeros(md.mesh.numberofvertices,1);
+nodeonHOFS=zeros(md.mesh.numberofvertices,1);
+nodeonSSAFS=zeros(md.mesh.numberofvertices,1);
+SSAHOflag=zeros(md.mesh.numberofelements,1);
+SSAFSflag=zeros(md.mesh.numberofelements,1);
+HOFSflag=zeros(md.mesh.numberofelements,1);
+if strcmpi(coupling_method,'penalties'),
+	%Create the border nodes between HO and SSA and extrude them
+	numnodes2d=md.mesh.numberofvertices2d;
+	numlayers=md.mesh.numberoflayers;
+	bordernodes2d=find(nodeonHO(1:numnodes2d) & nodeonSSA(1:numnodes2d)); %Nodes connected to two different types of elements
+
+	%initialize and fill in penalties structure
+	if ~isnan(bordernodes2d),
+		penalties=[];
+		for	i=1:numlayers-1,
+			penalties=[penalties; [bordernodes2d bordernodes2d+md.mesh.numberofvertices2d*(i)]];
+		end
+		md.stressbalance.vertex_pairing=penalties;
+	end
+elseif strcmpi(coupling_method,'tiling'),
+	if any(SSAflag) & any(HOflag), %coupling SSA HO
+		%Find node at the border
+		nodeonSSAHO(find(nodeonSSA & nodeonHO))=1;
+		%SSA elements in contact with this layer become SSAHO elements
+		matrixelements=ismember(md.mesh.elements,find(nodeonSSAHO));
+		commonelements=sum(matrixelements,2)~=0;
+		commonelements(find(HOflag))=0; %only one layer: the elements previously in SSA
+		SSAflag(find(commonelements))=0; %these elements are now SSAHOelements
+		SSAHOflag(find(commonelements))=1;
+		nodeonSSA(:)=0;
+		nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+
+		%rule out elements that don't touch the 2 boundaries
+		pos=find(SSAHOflag);
+		elist=zeros(length(pos),1);
+		elist = elist + any(sum(nodeonSSA(md.mesh.elements(pos,:)),2),2);
+		elist = elist - any(sum(nodeonHO(md.mesh.elements(pos,:))  ,2),2);
+		pos1=find(elist==1);
+		SSAflag(pos(pos1))=1;
+		SSAHOflag(pos(pos1))=0;
+		pos2=find(elist==-1);
+		HOflag(pos(pos2))=1;
+		SSAHOflag(pos(pos2))=0;
+
+		%Recompute nodes associated to these elements
+		nodeonSSA(:)=0;
+		nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+		nodeonHO(:)=0;
+		nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+		nodeonSSAHO(:)=0;
+		nodeonSSAHO(md.mesh.elements(find(SSAHOflag),:))=1;
+
+	elseif any(HOflag) & any(FSflag), %coupling HO FS
+		%Find node at the border
+		nodeonHOFS(find(nodeonHO & nodeonFS))=1;
+		%FS elements in contact with this layer become HOFS elements
+		matrixelements=ismember(md.mesh.elements,find(nodeonHOFS));
+		commonelements=sum(matrixelements,2)~=0;
+		commonelements(find(HOflag))=0; %only one layer: the elements previously in SSA
+		FSflag(find(commonelements))=0; %these elements are now SSAHOelements
+		HOFSflag(find(commonelements))=1;
+		nodeonFS=zeros(md.mesh.numberofvertices,1);
+		nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+
+		%rule out elements that don't touch the 2 boundaries
+		pos=find(HOFSflag);
+		elist=zeros(length(pos),1);
+		elist = elist + any(sum(nodeonFS(md.mesh.elements(pos,:)),2),2);
+		elist = elist - any(sum(nodeonHO(md.mesh.elements(pos,:)),2),2);
+		pos1=find(elist==1);
+		FSflag(pos(pos1))=1;
+		HOFSflag(pos(pos1))=0;
+		pos2=find(elist==-1);
+		HOflag(pos(pos2))=1;
+		HOFSflag(pos(pos2))=0;
+
+		%Recompute nodes associated to these elements
+		nodeonFS(:)=0;
+		nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+		nodeonHO(:)=0;
+		nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+		nodeonHOFS(:)=0;
+		nodeonHOFS(md.mesh.elements(find(HOFSflag),:))=1;
+
+	elseif any(FSflag) & any(SSAflag),
+		%Find node at the border
+		nodeonSSAFS(find(nodeonSSA & nodeonFS))=1;
+		%FS elements in contact with this layer become SSAFS elements
+		matrixelements=ismember(md.mesh.elements,find(nodeonSSAFS));
+		commonelements=sum(matrixelements,2)~=0;
+		commonelements(find(SSAflag))=0; %only one layer: the elements previously in SSA
+		FSflag(find(commonelements))=0; %these elements are now SSASSAelements
+		SSAFSflag(find(commonelements))=1;
+		nodeonFS=zeros(md.mesh.numberofvertices,1);
+		nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+
+		%rule out elements that don't touch the 2 boundaries
+		pos=find(SSAFSflag);
+		elist=zeros(length(pos),1);
+		elist = elist + any(sum(nodeonSSA(md.mesh.elements(pos,:)),2),2);
+		elist = elist - any(sum(nodeonFS(md.mesh.elements(pos,:))  ,2),2);
+		pos1=find(elist==1);
+		SSAflag(pos(pos1))=1;
+		SSAFSflag(pos(pos1))=0;
+		pos2=find(elist==-1);
+		FSflag(pos(pos2))=1;
+		SSAFSflag(pos(pos2))=0;
+
+		%Recompute nodes associated to these elements
+		nodeonSSA(:)=0;
+		nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+		nodeonFS(:)=0;
+		nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+		nodeonSSAFS(:)=0;
+		nodeonSSAFS(md.mesh.elements(find(SSAFSflag),:))=1;
+
+	elseif any(FSflag) & any(SIAflag),
+		error('type of coupling not supported yet');
+	end
+end
+
+%Create element equations
+md.flowequation.element_equation=zeros(md.mesh.numberofelements,1);
+md.flowequation.element_equation(find(noneflag))=0;
+md.flowequation.element_equation(find(SIAflag))=1;
+md.flowequation.element_equation(find(SSAflag))=2;
+md.flowequation.element_equation(find(L1L2flag))=3;
+md.flowequation.element_equation(find(HOflag))=4;
+md.flowequation.element_equation(find(FSflag))=5;
+md.flowequation.element_equation(find(SSAHOflag))=6;
+md.flowequation.element_equation(find(SSAFSflag))=7;
+md.flowequation.element_equation(find(HOFSflag))=8;
+
+%border
+md.flowequation.borderHO=nodeonHO;
+md.flowequation.borderSSA=nodeonSSA;
+md.flowequation.borderFS=nodeonFS;
+
+%Create vertices_type
+md.flowequation.vertex_equation=zeros(md.mesh.numberofvertices,1);
+pos=find(nodeonSSA);
+md.flowequation.vertex_equation(pos)=2;
+pos=find(nodeonL1L2);
+md.flowequation.vertex_equation(pos)=3;
+pos=find(nodeonHO);
+md.flowequation.vertex_equation(pos)=4;
+pos=find(nodeonFS);
+md.flowequation.vertex_equation(pos)=5;
+%DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority)
+pos=find(nodeonSIA);
+md.flowequation.vertex_equation(pos)=1;
+if any(FSflag),
+	pos=find(~nodeonFS);
+	if(~any(HOflag) & ~any(SSAflag)),
+		md.flowequation.vertex_equation(pos)=0;
+	end
+end
+pos=find(nodeonSSAHO);
+md.flowequation.vertex_equation(pos)=6;
+pos=find(nodeonHOFS);
+md.flowequation.vertex_equation(pos)=7;
+pos=find(nodeonSSAFS);
+md.flowequation.vertex_equation(pos)=8;
+
+%figure out solution types
+md.flowequation.isSIA  = double(any(md.flowequation.element_equation == 1));
+md.flowequation.isSSA  = double(any(md.flowequation.element_equation == 2));
+md.flowequation.isL1L2 = double(any(md.flowequation.element_equation == 3));
+md.flowequation.isHO   = double(any(md.flowequation.element_equation == 4));
+md.flowequation.isFS   = double(any(md.flowequation.element_equation == 5));
+
+return
+
+%Check that tiling can work:
+if any(md.flowequation.borderSSA) & any(md.flowequation.borderHO) & any(md.flowequation.borderHO + md.flowequation.borderSSA ~=1),
+	error('error coupling domain too irregular');
+end
+if any(md.flowequation.borderSSA) & any(md.flowequation.borderFS) & any(md.flowequation.borderFS + md.flowequation.borderSSA ~=1),
+	error('error coupling domain too irregular');
+end
+if any(md.flowequation.borderFS) & any(md.flowequation.borderHO) & any(md.flowequation.borderHO + md.flowequation.borderFS~=1),
+	error('error coupling domain too irregular');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setflowequation.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setflowequation.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setflowequation.py	(revision 21239)
@@ -0,0 +1,288 @@
+import numpy
+from model import model
+from pairoptions import pairoptions
+import MatlabFuncs as m
+import PythonFuncs as p
+from FlagElements import FlagElements
+
+def setflowequation(md,*args):
+	"""
+	SETFLOWEQUATION - associate a solution type to each element
+
+	   This routine works like plotmodel: it works with an even number of inputs
+	   'SIA','SSA','HO','L1L2','FS' and 'fill' are the possible options
+	   that must be followed by the corresponding exp file or flags list
+	   It can either be a domain file (argus type, .exp extension), or an array of element flags. 
+	   If user wants every element outside the domain to be 
+	   setflowequationd, add '~' to the name of the domain file (ex: '~HO.exp');
+	   an empty string '' will be considered as an empty domain
+	   a string 'all' will be considered as the entire domain
+	   You can specify the type of coupling, 'penalties' or 'tiling', to use with the input 'coupling'
+
+	   Usage:
+	      md=setflowequation(md,varargin)
+
+	   Example:
+	      md=setflowequation(md,'HO','HO.exp',fill','SIA','coupling','tiling');
+	"""
+
+	#some checks on list of arguments
+	if not isinstance(md,model) or not len(args):
+		raise TypeError("setflowequation error message")
+
+	#process options
+	options=pairoptions(*args)
+#	options=deleteduplicates(options,1);
+
+	#Find_out what kind of coupling to use
+	coupling_method=options.getfieldvalue('coupling','tiling')
+	if not m.strcmpi(coupling_method,'tiling') and not m.strcmpi(coupling_method,'penalties'):
+		raise TypeError("coupling type can only be: tiling or penalties")
+
+	#recover elements distribution
+	SIAflag   = FlagElements(md,options.getfieldvalue('SIA',''))
+	SSAflag = FlagElements(md,options.getfieldvalue('SSA',''))
+	HOflag   = FlagElements(md,options.getfieldvalue('HO',''))
+	L1L2flag     = FlagElements(md,options.getfieldvalue('L1L2',''))
+	FSflag   = FlagElements(md,options.getfieldvalue('FS',''))
+	filltype     = options.getfieldvalue('fill','none')
+
+	#Flag the elements that have not been flagged as filltype
+	if   m.strcmpi(filltype,'SIA'):
+		SIAflag[numpy.nonzero(numpy.logical_not(p.logical_or_n(SSAflag,HOflag)))]=True
+	elif m.strcmpi(filltype,'SSA'):
+		SSAflag[numpy.nonzero(numpy.logical_not(p.logical_or_n(SIAflag,HOflag,FSflag)))]=True
+	elif m.strcmpi(filltype,'HO'):
+		HOflag[numpy.nonzero(numpy.logical_not(p.logical_or_n(SIAflag,SSAflag,FSflag)))]=True
+
+	#check that each element has at least one flag
+	if not any(SIAflag+SSAflag+L1L2flag+HOflag+FSflag):
+		raise TypeError("elements type not assigned, supported models are 'SIA','SSA','HO' and 'FS'")
+
+	#check that each element has only one flag
+	if any(SIAflag+SSAflag+L1L2flag+HOflag+FSflag>1):
+		print "setflowequation warning message: some elements have several types, higher order type is used for them"
+		SIAflag[numpy.nonzero(numpy.logical_and(SIAflag,SSAflag))]=False
+		SIAflag[numpy.nonzero(numpy.logical_and(SIAflag,HOflag))]=False
+		SSAflag[numpy.nonzero(numpy.logical_and(SSAflag,HOflag))]=False
+
+	#FS can only be used alone for now:
+	if any(FSflag) and any(SIAflag):
+		raise TypeError("FS cannot be used with any other model for now, put FS everywhere")
+
+	#Initialize node fields
+	nodeonSIA=numpy.zeros(md.mesh.numberofvertices,bool)
+	nodeonSIA[md.mesh.elements[numpy.nonzero(SIAflag),:]-1]=True
+	nodeonSSA=numpy.zeros(md.mesh.numberofvertices,bool)
+	nodeonSSA[md.mesh.elements[numpy.nonzero(SSAflag),:]-1]=True
+	nodeonL1L2=numpy.zeros(md.mesh.numberofvertices,bool)
+	nodeonL1L2[md.mesh.elements[numpy.nonzero(L1L2flag),:]-1]=True
+	nodeonHO=numpy.zeros(md.mesh.numberofvertices,bool)
+	nodeonHO[md.mesh.elements[numpy.nonzero(HOflag),:]-1]=True
+	nodeonFS=numpy.zeros(md.mesh.numberofvertices,bool)
+	noneflag=numpy.zeros(md.mesh.numberofelements,bool)
+
+	#First modify FSflag to get rid of elements contrained everywhere (spc + border with HO or SSA)
+	if any(FSflag):
+#		fullspcnodes=double((~isnan(md.stressbalance.spcvx)+~isnan(md.stressbalance.spcvy)+~isnan(md.stressbalance.spcvz))==3 | (nodeonHO & nodeonFS));         %find all the nodes on the boundary of the domain without icefront
+		fullspcnodes=numpy.logical_or(numpy.logical_not(numpy.isnan(md.stressbalance.spcvx)).astype(int)+ \
+		                              numpy.logical_not(numpy.isnan(md.stressbalance.spcvy)).astype(int)+ \
+		                              numpy.logical_not(numpy.isnan(md.stressbalance.spcvz)).astype(int)==3, \
+		                              numpy.logical_and(nodeonHO,nodeonFS)).astype(int)    #find all the nodes on the boundary of the domain without icefront
+#		fullspcelems=double(sum(fullspcnodes(md.mesh.elements),2)==6);         %find all the nodes on the boundary of the domain without icefront
+		fullspcelems=(numpy.sum(fullspcnodes[md.mesh.elements-1],axis=1)==6).astype(int)    #find all the nodes on the boundary of the domain without icefront
+		FSflag[numpy.nonzero(fullspcelems.reshape(-1))]=False
+		nodeonFS[md.mesh.elements[numpy.nonzero(FSflag),:]-1]=True
+
+	#Then complete with NoneApproximation or the other model used if there is no FS
+	if any(FSflag): 
+		if   any(HOflag):    #fill with HO
+			HOflag[numpy.logical_not(FSflag)]=True
+			nodeonHO[md.mesh.elements[numpy.nonzero(HOflag),:]-1]=True
+		elif any(SSAflag):    #fill with SSA
+			SSAflag[numpy.logical_not(FSflag)]=True
+			nodeonSSA[md.mesh.elements[numpy.nonzero(SSAflag),:]-1]=True
+		else:    #fill with none 
+			noneflag[numpy.nonzero(numpy.logical_not(FSflag))]=True
+
+	#Now take care of the coupling between SSA and HO
+	md.stressbalance.vertex_pairing=numpy.array([])
+	nodeonSSAHO=numpy.zeros(md.mesh.numberofvertices,bool)
+	nodeonHOFS=numpy.zeros(md.mesh.numberofvertices,bool)
+	nodeonSSAFS=numpy.zeros(md.mesh.numberofvertices,bool)
+	SSAHOflag=numpy.zeros(md.mesh.numberofelements,bool)
+	SSAFSflag=numpy.zeros(md.mesh.numberofelements,bool)
+	HOFSflag=numpy.zeros(md.mesh.numberofelements,bool)
+	if   m.strcmpi(coupling_method,'penalties'):
+		#Create the border nodes between HO and SSA and extrude them
+		numnodes2d=md.mesh.numberofvertices2d
+		numlayers=md.mesh.numberoflayers
+		bordernodes2d=numpy.nonzero(numpy.logical_and(nodeonHO[0:numnodes2d],nodeonSSA[0:numnodes2d]))[0]+1    #Nodes connected to two different types of elements
+
+		#initialize and fill in penalties structure
+		if numpy.all(numpy.logical_not(numpy.isnan(bordernodes2d))):
+			penalties=numpy.zeros((0,2))
+			for	i in xrange(1,numlayers):
+				penalties=numpy.vstack((penalties,numpy.hstack((bordernodes2d.reshape(-1,1),bordernodes2d.reshape(-1,1)+md.mesh.numberofvertices2d*(i)))))
+			md.stressbalance.vertex_pairing=penalties
+
+	elif m.strcmpi(coupling_method,'tiling'):
+		if   any(SSAflag) and any(HOflag):    #coupling SSA HO
+			#Find node at the border
+			nodeonSSAHO[numpy.nonzero(numpy.logical_and(nodeonSSA,nodeonHO))]=True
+			#SSA elements in contact with this layer become SSAHO elements
+			matrixelements=m.ismember(md.mesh.elements-1,numpy.nonzero(nodeonSSAHO)[0])
+			commonelements=numpy.sum(matrixelements,axis=1)!=0
+			commonelements[numpy.nonzero(HOflag)]=False    #only one layer: the elements previously in SSA
+			SSAflag[numpy.nonzero(commonelements)]=False    #these elements are now SSAHOelements
+			SSAHOflag[numpy.nonzero(commonelements)]=True
+			nodeonSSA[:]=False
+			nodeonSSA[md.mesh.elements[numpy.nonzero(SSAflag),:]-1]=True
+
+			#rule out elements that don't touch the 2 boundaries
+			pos=numpy.nonzero(SSAHOflag)[0]
+			elist=numpy.zeros(numpy.size(pos),dtype=int)
+			elist = elist + numpy.sum(nodeonSSA[md.mesh.elements[pos,:]-1],axis=1).astype(bool)
+			elist = elist - numpy.sum(nodeonHO[md.mesh.elements[pos,:]-1]  ,axis=1).astype(bool)
+			pos1=numpy.nonzero(elist==1)[0]
+			SSAflag[pos[pos1]]=True
+			SSAHOflag[pos[pos1]]=False
+			pos2=numpy.nonzero(elist==-1)[0]
+			HOflag[pos[pos2]]=True
+			SSAHOflag[pos[pos2]]=False
+
+			#Recompute nodes associated to these elements
+			nodeonSSA[:]=False
+			nodeonSSA[md.mesh.elements[numpy.nonzero(SSAflag),:]-1]=True
+			nodeonHO[:]=False
+			nodeonHO[md.mesh.elements[numpy.nonzero(HOflag),:]-1]=True
+			nodeonSSAHO[:]=False
+			nodeonSSAHO[md.mesh.elements[numpy.nonzero(SSAHOflag),:]-1]=True
+
+		elif any(HOflag) and any(FSflag):    #coupling HO FS
+			#Find node at the border
+			nodeonHOFS[numpy.nonzero(numpy.logical_and(nodeonHO,nodeonFS))]=True
+			#FS elements in contact with this layer become HOFS elements
+			matrixelements=m.ismember(md.mesh.elements-1,numpy.nonzero(nodeonHOFS)[0])
+			commonelements=numpy.sum(matrixelements,axis=1)!=0
+			commonelements[numpy.nonzero(HOflag)]=False    #only one layer: the elements previously in SSA
+			FSflag[numpy.nonzero(commonelements)]=False    #these elements are now SSAHOelements
+			HOFSflag[numpy.nonzero(commonelements)]=True
+			nodeonFS=numpy.zeros(md.mesh.numberofvertices,bool)
+			nodeonFS[md.mesh.elements[numpy.nonzero(FSflag),:]-1]=True
+
+			#rule out elements that don't touch the 2 boundaries
+			pos=numpy.nonzero(HOFSflag)[0]
+			elist=numpy.zeros(numpy.size(pos),dtype=int)
+			elist = elist + numpy.sum(nodeonFS[md.mesh.elements[pos,:]-1],axis=1).astype(bool)
+			elist = elist - numpy.sum(nodeonHO[md.mesh.elements[pos,:]-1],axis=1).astype(bool)
+			pos1=numpy.nonzero(elist==1)[0]
+			FSflag[pos[pos1]]=True
+			HOFSflag[pos[pos1]]=False
+			pos2=numpy.nonzero(elist==-1)[0]
+			HOflag[pos[pos2]]=True
+			HOFSflag[pos[pos2]]=False
+
+			#Recompute nodes associated to these elements
+			nodeonFS[:]=False
+			nodeonFS[md.mesh.elements[numpy.nonzero(FSflag),:]-1]=True
+			nodeonHO[:]=False
+			nodeonHO[md.mesh.elements[numpy.nonzero(HOflag),:]-1]=True
+			nodeonHOFS[:]=False
+			nodeonHOFS[md.mesh.elements[numpy.nonzero(HOFSflag),:]-1]=True
+
+		elif any(FSflag) and any(SSAflag):
+			#Find node at the border
+			nodeonSSAFS[numpy.nonzero(numpy.logical_and(nodeonSSA,nodeonFS))]=True
+			#FS elements in contact with this layer become SSAFS elements
+			matrixelements=m.ismember(md.mesh.elements-1,numpy.nonzero(nodeonSSAFS)[0])
+			commonelements=numpy.sum(matrixelements,axis=1)!=0
+			commonelements[numpy.nonzero(SSAflag)]=False    #only one layer: the elements previously in SSA
+			FSflag[numpy.nonzero(commonelements)]=False    #these elements are now SSASSAelements
+			SSAFSflag[numpy.nonzero(commonelements)]=True
+			nodeonFS=numpy.zeros(md.mesh.numberofvertices,bool)
+			nodeonFS[md.mesh.elements[numpy.nonzero(FSflag),:]-1]=True
+
+			#rule out elements that don't touch the 2 boundaries
+			pos=numpy.nonzero(SSAFSflag)[0]
+			elist=numpy.zeros(numpy.size(pos),dtype=int)
+			elist = elist + numpy.sum(nodeonSSA[md.mesh.elements[pos,:]-1],axis=1).astype(bool)
+			elist = elist - numpy.sum(nodeonFS[md.mesh.elements[pos,:]-1]  ,axis=1).astype(bool)
+			pos1=numpy.nonzero(elist==1)[0]
+			SSAflag[pos[pos1]]=True
+			SSAFSflag[pos[pos1]]=False
+			pos2=numpy.nonzero(elist==-1)[0]
+			FSflag[pos[pos2]]=True
+			SSAFSflag[pos[pos2]]=False
+
+			#Recompute nodes associated to these elements
+			nodeonSSA[:]=False
+			nodeonSSA[md.mesh.elements[numpy.nonzero(SSAflag),:]-1]=True
+			nodeonFS[:]=False
+			nodeonFS[md.mesh.elements[numpy.nonzero(FSflag),:]-1]=True
+			nodeonSSAFS[:]=False
+			nodeonSSAFS[md.mesh.elements[numpy.nonzero(SSAFSflag),:]-1]=True
+
+		elif any(FSflag) and any(SIAflag):
+			raise TypeError("type of coupling not supported yet")
+
+	#Create SSAHOApproximation where needed
+	md.flowequation.element_equation=numpy.zeros(md.mesh.numberofelements,int)
+	md.flowequation.element_equation[numpy.nonzero(noneflag)]=0
+	md.flowequation.element_equation[numpy.nonzero(SIAflag)]=1
+	md.flowequation.element_equation[numpy.nonzero(SSAflag)]=2
+	md.flowequation.element_equation[numpy.nonzero(L1L2flag)]=3
+	md.flowequation.element_equation[numpy.nonzero(HOflag)]=4
+	md.flowequation.element_equation[numpy.nonzero(FSflag)]=5
+	md.flowequation.element_equation[numpy.nonzero(SSAHOflag)]=6
+	md.flowequation.element_equation[numpy.nonzero(SSAFSflag)]=7
+	md.flowequation.element_equation[numpy.nonzero(HOFSflag)]=8
+
+	#border
+	md.flowequation.borderHO=nodeonHO
+	md.flowequation.borderSSA=nodeonSSA
+	md.flowequation.borderFS=nodeonFS
+
+	#Create vertices_type
+	md.flowequation.vertex_equation=numpy.zeros(md.mesh.numberofvertices,int)
+	pos=numpy.nonzero(nodeonSSA)
+	md.flowequation.vertex_equation[pos]=2
+	pos=numpy.nonzero(nodeonL1L2)
+	md.flowequation.vertex_equation[pos]=3
+	pos=numpy.nonzero(nodeonHO)
+	md.flowequation.vertex_equation[pos]=4
+	pos=numpy.nonzero(nodeonFS)
+	md.flowequation.vertex_equation[pos]=5
+	#DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority)
+	pos=numpy.nonzero(nodeonSIA)
+	md.flowequation.vertex_equation[pos]=1
+	if any(FSflag):
+		pos=numpy.nonzero(numpy.logical_not(nodeonFS))
+		if not (any(HOflag) or any(SSAflag)):
+			md.flowequation.vertex_equation[pos]=0
+	pos=numpy.nonzero(nodeonSSAHO)
+	md.flowequation.vertex_equation[pos]=6
+	pos=numpy.nonzero(nodeonHOFS)
+	md.flowequation.vertex_equation[pos]=7
+	pos=numpy.nonzero(nodeonSSAFS)
+	md.flowequation.vertex_equation[pos]=8
+
+	#figure out solution types
+	md.flowequation.isSIA=any(md.flowequation.element_equation==1)
+	md.flowequation.isSSA=any(md.flowequation.element_equation==2)
+	md.flowequation.isL1L2=any(md.flowequation.element_equation==3)
+	md.flowequation.isHO=any(md.flowequation.element_equation==4)
+	md.flowequation.isFS=any(md.flowequation.element_equation==5)
+
+	return md
+
+	#Check that tiling can work:
+	if any(md.flowequation.borderSSA) and any(md.flowequation.borderHO) and any(md.flowequation.borderHO + md.flowequation.borderSSA !=1):
+		raise TypeError("error coupling domain too irregular")
+	if any(md.flowequation.borderSSA) and any(md.flowequation.borderFS) and any(md.flowequation.borderFS + md.flowequation.borderSSA !=1):
+		raise TypeError("error coupling domain too irregular")
+	if any(md.flowequation.borderFS) and any(md.flowequation.borderHO) and any(md.flowequation.borderHO + md.flowequation.borderFS !=1):
+		raise TypeError("error coupling domain too irregular")
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/sethydrostaticmask.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/sethydrostaticmask.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/sethydrostaticmask.m	(revision 21239)
@@ -0,0 +1,29 @@
+function md=sethydrostaticmask(md)
+%SETHYDROSTATICMASK - establish groundedice_levelset field
+%
+%   Determines grounded and floating ice position based on 
+%   md.geometry.bed and md.geometry.thickness
+%
+%   Usage:
+%      md=sethydrostaticmask(md)
+%
+%   Examples:
+%      md=sethydrostaticmask(md);
+
+if(length(md.geometry.bed)~=md.mesh.numberofvertices | length(md.geometry.thickness)~=md.mesh.numberofvertices | length(md.geometry.base)~=md.mesh.numberofvertices),
+		error('hydrostaticmask error message: fields in md.geometry do not have the right size.');
+end
+
+%grounded ice level set
+md.mask.groundedice_levelset=md.geometry.thickness+md.geometry.bed*md.materials.rho_water/md.materials.rho_ice;
+
+%Check consistency of geometry
+pos=find(md.mask.groundedice_levelset>0);
+if(any(md.geometry.base(pos)~=md.geometry.bed(pos))),
+	disp('WARNING: md.geometry.bed and md.geometry.base not equal on grounded ice');
+end
+
+pos=find(md.mask.groundedice_levelset<=0);
+if(any(md.geometry.base(pos)<md.geometry.bed(pos))),
+	disp('WARNING: md.geometry.base < md.geometry.bed on floating ice');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/sethydrostaticmask.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/sethydrostaticmask.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/sethydrostaticmask.py	(revision 21239)
@@ -0,0 +1,35 @@
+import numpy
+import os
+from model import model
+from FlagElements import FlagElements
+import pairoptions
+from ContourToMesh import ContourToMesh
+
+def setmask(md)
+	"""
+	SETHYDROSTATICMASK - establish groundedice_levelset field
+
+   Determines grounded and floating ice position based on 
+   md.geometry.bed and md.geometry.thickness
+
+   Usage:
+      md=sethydrostaticmask(md)
+
+   Examples:
+      md=sethydrostaticmask(md);
+   """
+
+	if numpy.size(md.geometry.bed,axis=0)!=md.mesh.numberofvertices or numpy.size(md.geometry.base,axis=0)!=md.mesh.numberofvertices or numpy.size(md.geometry.thickness,axis=0)!=md.mesh.numberofvertices:
+		raise IOError("hydrostaticmask error message: fields in md.geometry do not have the right size.")
+
+   # grounded ice level set
+   md.mask.groundedice_levelset=md.geometry.thickness+md.geometry.bed*md.materials.rho_water/md.materials.rho_ice
+
+   #Check consistency of geometry
+	if any(md.geometry.base[numpy.nonzero(md.mask.groundedice_levelset>0.)]!=md.geometry.bed[numpy.nonzero(md.mask.groundedice_levelset>0.)]):
+	   print "WARNING: md.geometry.bed and md.geometry.base not equal on grounded ice"
+
+	if any(md.geometry.base[numpy.nonzero(md.mask.groundedice_levelset<=0.)]<md.geometry.bed[numpy.nonzero(md.mask.groundedice_levelset<=0.)]):
+		print "WARNING: md.geometry.base < md.geometry.bed on floating ice"
+
+	return md
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setmask.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setmask.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setmask.js	(revision 21239)
@@ -0,0 +1,78 @@
+function setmask(md,floatingice,groundedice){
+//SETMASK - establish boundaries between grounded and floating ice.
+//
+//   By default, ice is considered grounded. The contour floatingice defines nodes 
+//   for which ice is floating. The contour groundedice defines nodes inside a floatingice, 
+//   that are grounded (ie: ice rises, islands, etc ...)
+//   All inputs are either strings or actually javascript arrays (included in the html file)
+//   For example: 
+//
+//	   floatingice[0]['x']=[0,0,0,1];
+//	   floatingice[0]['y']=[0,1,1,1];
+//	   floatingice[1]['x']=[0,0.5,0.5,.5];
+//	   floatingice[1]['y']=[0,.5,.5,.5];
+//
+//
+//   Usage:
+//      md=setmask(md,floatingice,groundedice)
+//
+//   Examples:
+//      md=setmask(md,'all','');
+//      md=setmask(md,iceshelves,islands);
+
+	//variables: 
+	var  icedomain=[];
+	
+	//some checks on list of arguments
+	if (!((arguments.length==3) | (arguments.length==5))){
+		throw Error('mask error message: wrong usage.');
+	}
+
+	if(arguments.length>3){
+		if (arguments[3]=='icedomain'){
+			icedomain=arguments[4];
+		}
+		else{
+			throw Error('mask error message: wrong field specified. Only icedomain allowed for now.');
+		}
+		if (IsArray(icedomain)){
+			throw Error('setmask error message: icedomain should be an array!');
+		}
+	}
+	
+	//Get assigned fields
+	var x=md.mesh.x;
+	var y=md.mesh.y;
+	var elements=md.mesh.elements;
+
+	//Assign elementonfloatingice, elementongroundedice, vertexongroundedice and vertexonfloatingice. 
+	//Only change at your own peril! This is synchronized heavily with the GroundingLineMigration module. 
+	elementonfloatingice=FlagElements(md,floatingice);
+	elementongroundedice=FlagElements(md,groundedice);
+
+	//Because groundedice nodes and elements can be included into an floatingice, we need to update. Remember, all the previous 
+	//arrays come from domain outlines that can intersect one another: 
+	elementonfloatingice=ArrayAnd(elementonfloatingice,ArrayNot(elementongroundedice));
+	elementongroundedice=ArrayNot(elementonfloatingice);
+
+	//the order here is important. we choose vertexongroundedice as default on the grounding line.
+	vertexonfloatingice=NewArrayFill(md.mesh.numberofvertices,0);
+	vertexongroundedice=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(elementongroundedice,1); for (var i=0;i<pos.length;i++)for(var j=0;j<3;j++) vertexongroundedice[md.mesh.elements[i,j]-1]=1;
+	pos=ArrayFind(vertexongroundedice,0); for (var i=0;i<pos.length;i++)vertexonfloatingice[i]=1;
+
+	//level sets
+	groundedice_levelset=vertexongroundedice;
+	pos=ArrayFind(vertexongroundedice,0);for(var i=0;i<pos.length;i++) groundedice_levelset[i]=-1;
+	md.mask.groundedice_levelset=groundedice_levelset;
+
+	if(arguments.length>3){
+		md.mask.ice_levelset = NewArrayFill(md.mesh.numberofvertices,1.0);
+		//use contourtomesh to set ice values inside ice domain
+		//[vertexinsideicedomain,elementinsideicedomain]=ContourToMesh(elements,x,y,icedomain,'node',1);
+		pos=ArrayFind(vertexinsideicedomain,1.0);for(var i=0;i<pos.length;i++) md.mask.ice_levelset[pos]=-1;
+	}
+	else{
+		md.mask.ice_levelset = NewArrayFill(md.mesh.numberofvertices,-1);
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setmask.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setmask.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setmask.m	(revision 21239)
@@ -0,0 +1,70 @@
+function md=setmask(md,floatingicename,groundedicename,varargin)
+%SETMASK - establish boundaries between grounded and floating ice.
+%
+%   By default, ice is considered grounded. The contour floatingicename defines nodes 
+%   for which ice is floating. The contour groundedicename defines nodes inside an floatingice, 
+%   that are grounded (ie: ice rises, islands, etc ...)
+%   All input files are in the Argus format (extension .exp).
+%
+%   Usage:
+%      md=setmask(md,floatingicename,groundedicename)
+%
+%   Examples:
+%      md=setmask(md,'all','');
+%      md=setmask(md,'Iceshelves.exp','Islands.exp');
+
+%some checks on list of arguments
+if ((mod(nargin,2)==0) | (nargout~=1)),
+	help mask
+	error('mask error message');
+end
+
+if(nargin>3)
+	if(varargin(1)=='icedomain'),
+		icedomainname=varargin(2);	
+	else
+		error('mask error message: wrong field specified. Only icedomain allowed for now.');
+	end
+	if ~exist(icedomainname),
+        error(['setmask error message: file ' icedomainname ' not found!']);
+	end
+end
+
+%Get assigned fields
+x=md.mesh.x;
+y=md.mesh.y;
+elements=md.mesh.elements;
+
+%Assign elementonfloatingice, elementongroundedice, vertexongroundedice and vertexonfloatingice. Only change at your own peril! This is synchronized heavily with the GroundingLineMigration module. {{{
+elementonfloatingice=FlagElements(md,floatingicename);
+elementongroundedice=FlagElements(md,groundedicename);
+
+%Because groundedice nodes and elements can be included into an floatingice, we need to update. Remember, all the previous 
+%arrays come from domain outlines that can intersect one another: 
+elementonfloatingice=double((elementonfloatingice & ~elementongroundedice));
+elementongroundedice=double(~elementonfloatingice);
+
+%the order here is important. we choose vertexongroundedice as default on the grounding line.
+vertexonfloatingice=zeros(md.mesh.numberofvertices,1);
+vertexongroundedice=zeros(md.mesh.numberofvertices,1);
+vertexongroundedice(md.mesh.elements(find(elementongroundedice),:))=1;
+vertexonfloatingice(find(~vertexongroundedice))=1;
+%}}}
+
+%level sets
+md.mask.groundedice_levelset=vertexongroundedice;
+md.mask.groundedice_levelset(find(vertexongroundedice==0.))=-1.;
+
+if(nargin>3)
+	if(varargin(1)=='icedomain')
+		md.mask.ice_levelset = 1.*ones(md.mesh.numberofvertices,1);
+		%use contourtomesh to set ice values inside ice domain
+		[vertexinsideicedomain,elementinsideicedomain]=ContourToMesh(elements,x,y,icedomainname,'node',1);
+		pos=find(vertexinsideicedomain==1.);
+		md.mask.ice_levelset(pos) = -1.;
+	end
+else
+	md.mask.ice_levelset = -1.*ones(md.mesh.numberofvertices,1);
+end
+
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setmask.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setmask.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setmask.py	(revision 21239)
@@ -0,0 +1,71 @@
+import numpy
+import os
+from model import model
+from FlagElements import FlagElements
+import pairoptions
+from ContourToMesh import ContourToMesh
+
+def setmask(md, floatingicename, groundedicename, *args):
+	"""
+	SETMASK - establish boundaries between grounded and floating ice.
+
+	   By default, ice is considered grounded. The contour floatingicename defines nodes 
+	   for which ice is floating. The contour groundedicename defines nodes inside an floatingice, 
+	   that are grounded (ie: ice rises, islands, etc ...)
+	   All input files are in the Argus format (extension .exp).
+
+	   Usage:
+	      md=setmask(md,floatingicename,groundedicename)
+
+	   Examples:
+	      md=setmask(md,'all','');
+	      md=setmask(md,'Iceshelves.exp','Islands.exp');
+	"""
+	#some checks on list of arguments
+	if not isinstance(md,model):
+		raise TypeError("setmask error message")
+
+	if len(args)%2:
+		raise TypeError("odd number of arguments provided in setmask")
+
+	#process options
+	options=pairoptions.pairoptions(*args)
+
+	#Get assigned fields
+	x = md.mesh.x
+	y = md.mesh.y
+	elements = md.mesh.elements
+
+	#Assign elementonfloatingice, elementongroundedice, vertexongroundedice and vertexonfloatingice. Only change at your own peril! This is synchronized heavily with the GroundingLineMigration module. {{{
+	elementonfloatingice = FlagElements(md, floatingicename)
+	elementongroundedice = FlagElements(md, groundedicename) 
+
+	#Because groundedice nodes and elements can be included into an floatingice, we need to update. Remember, all the previous 
+	#arrays come from domain outlines that can intersect one another: 
+
+	elementonfloatingice = numpy.logical_and(elementonfloatingice,numpy.logical_not(elementongroundedice))
+	elementongroundedice = numpy.logical_not(elementonfloatingice)
+
+	#the order here is important. we choose vertexongroundedice as default on the grounding line.
+	vertexonfloatingice = numpy.zeros(md.mesh.numberofvertices,'bool')
+	vertexongroundedice = numpy.zeros(md.mesh.numberofvertices,'bool')
+	vertexongroundedice[md.mesh.elements[numpy.nonzero(elementongroundedice),:]-1]=True
+	vertexonfloatingice[numpy.nonzero(numpy.logical_not(vertexongroundedice))]=True
+	#}}}
+
+	#level sets
+	md.mask.groundedice_levelset = -1.*numpy.ones(md.mesh.numberofvertices)
+	md.mask.groundedice_levelset[md.mesh.elements[numpy.nonzero(elementongroundedice),:]-1]=1.
+
+	if(len(args)):
+		md.mask.ice_levelset = 1.*numpy.ones(md.mesh.numberofvertices)
+		icedomainfile = options.getfieldvalue('icedomain','none')
+		if not os.path.exists(icedomainfile):
+			raise IOError("setmask error message: ice domain file '%s' not found." % icedomainfile)
+		#use contourtomesh to set ice values inside ice domain
+		vertexinsideicedomain,elementinsideicedomain=ContourToMesh(elements,x,y,icedomainfile,'node',1)
+		md.mask.ice_levelset[numpy.nonzero(vertexinsideicedomain)[0]] = -1.
+	else:
+		md.mask.ice_levelset = -1.*numpy.ones(md.mesh.numberofvertices)
+
+	return md
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setmask2.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setmask2.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/parameterization/setmask2.m	(revision 21239)
@@ -0,0 +1,141 @@
+function md=setmask2(md,landname,floatingicename,groundedicename)
+%GEOGRAPHY2 - establish land, ice sheet and ice shelf areas in a domains.
+%
+%   Usage:
+%      md=setmask2(md,landname,floatingicename,groundedicename)
+%
+%   Examples:
+%      md=setmask2(md,'LandName.exp','Iceshelves.exp','Islands.exp');
+
+%Get assigned fields
+x=md.mesh.x;
+y=md.mesh.y;
+elements=md.mesh.elements;
+
+%recover elements and nodes on land.
+if ischar(landname),
+	[vertexonland,elementonland]=ContourToMesh(elements,x,y,landname,'element and node',2);
+elseif isfloat(landname),
+	if size(landname,1)~=md.mesh.numberofelements,
+		error('Landname for area must be of same size as number of elements in model');
+	end
+	elementonland=landname;
+	vertexonland=zeros(md.mesh.numberofvertices,1);
+	vertexonland(md.mesh.elements(find(elementonland),:))=1;
+else
+	error('Invalid area option option');
+end
+
+%Now, build the connectivity tables for this mesh.
+if size(md.mesh.vertexconnectivity,1)~=md.mesh.numberofvertices,
+	md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+end
+if size(md.mesh.elementconnectivity,1)~=md.mesh.numberofelements,
+	md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+end
+
+%any element with 3 nodes on land should be on land:
+elementsonwater=find(~elementonland);
+wrongelements=elementsonwater(find(( vertexonland(md.mesh.elements(elementsonwater,1)) + vertexonland(md.mesh.elements(elementsonwater,2)) + vertexonland(md.mesh.elements(elementsonwater,3)) ...
+                  )==3));
+elementonland(wrongelements)=1;
+
+%any element with its barycentre on land should be on land: (only if landname is an expfile)
+if ischar(landname),
+weights={[1;1;1],[2;1;1],[1;2;1],[1;1;2]};
+	for i=1:length(weights),
+		xelem=x(md.mesh.elements)*weights{i}/sum(weights{i});
+		yelem=y(md.mesh.elements)*weights{i}/sum(weights{i});
+	end
+	baryonland=ContourToNodes(xelem,yelem,landname,1);
+	pos=find(~baryonland); elementonland(pos)=0;
+	pos=find(baryonland); elementonland(pos)=1;
+end
+
+%figure out which elements on land are actually in the middle of the ocean!
+pos1=find(elementonland); 
+connectedtoland=md.mesh.elementconnectivity(pos1,:);
+pos=find(connectedtoland); connectedtoland(pos)=1-elementonland(connectedtoland(pos));
+connectedtolandsum=sum(connectedtoland,2);
+waterelements=pos1(find(connectedtolandsum==3));
+elementonland(waterelements)=0;
+
+%figure out which elements on water  are actually in the middle of the land!
+pos1=find(~elementonland); 
+connectedtowater=md.mesh.elementconnectivity(pos1,:);
+pos=find(connectedtowater); connectedtowater(pos)=elementonland(connectedtowater(pos));
+connectedtowatersum=sum(connectedtowater,2);
+landelements=pos1(find(connectedtowatersum==3));
+elementonland(landelements)=1;
+
+%recover arrays of ice shelf nodes and elements, and ice sheet nodes and elements.
+elementonfloatingice=FlagElements(md,floatingicename);
+elementongroundedice=FlagElements(md,groundedicename);
+
+%Because groundedice nodes and elements can be included into an floatingice, we need to update. Remember, all the previous 
+%arrays come from domain outlines that can intersect one another: 
+vertexonfloatingice=zeros(md.mesh.numberofvertices,1);
+vertexongroundedice=zeros(md.mesh.numberofvertices,1);
+elementonfloatingice=double((elementonfloatingice & ~elementongroundedice));
+elementongroundedice=double(~elementonfloatingice);
+vertexonfloatingice(md.mesh.elements(find(elementonfloatingice),:))=1;
+vertexongroundedice(md.mesh.elements(find(elementongroundedice),:))=1;
+
+%now correct, so that none of the floatingice and groundedice elements and nodes are in the water.
+pos=find(~elementonland);
+elementonfloatingice(pos)=0; 
+elementongroundedice(pos)=0;
+
+pos=find(~vertexonland);
+vertexonfloatingice(pos)=0; 
+vertexongroundedice(pos)=0;
+
+%create vertexonwater and elementonwater: 
+vertexonwater=double(~vertexonland);
+elementonwater=double(~elementonland);
+
+%correct for islands:
+vertexonfloatingice=double(vertexonfloatingice & ~vertexongroundedice);
+elementonfloatingice=double(elementonfloatingice & ~elementongroundedice);
+
+%now, groundedices are everything except iceshelves and water
+vertexongroundedice=double(~vertexonfloatingice & ~vertexonwater);
+elementongroundedice=double(~elementonfloatingice & ~elementonwater);
+
+%Deal with segments on neumann:
+
+%Get current connectivity
+mesh.elementconnectivity=md.mesh.elementconnectivity;
+
+%put 0 for elements on water
+pos=find(mesh.elementconnectivity);
+mesh.elementconnectivity(pos)=mesh.elementconnectivity(pos).*(~elementonwater(mesh.elementconnectivity(pos)));
+
+%put line of ones for elements on water
+pos=find(elementonwater);
+mesh.elementconnectivity(pos,:)=1;% line of ones for elements on water so they won't be considered
+
+%resort lines (zeros must be at the last column for findsegments)
+mesh.elementconnectivity=sort(mesh.elementconnectivity,2,'descend');
+
+%call findsegments to build segment using THIS conectivity
+md.mesh.segments=findsegments(md,'mesh.elementconnectivity',mesh.elementconnectivity);
+
+%some final checks: 
+%check that no node thinks it's on an ice shelf or ice sheet, and lies actually in the middle of the water.
+nodesgrounded=find(~vertexonwater);
+lengthconnectivity=size(md.mesh.vertexconnectivity,2);
+groundedcounters=md.mesh.vertexconnectivity(nodesgrounded,lengthconnectivity);
+groundedconnectivity=md.mesh.vertexconnectivity(nodesgrounded,1:lengthconnectivity-1);
+pos=find(groundedconnectivity);
+groundedconnectivity(pos)=elementonwater(groundedconnectivity(pos));
+groundedsum=sum(groundedconnectivity,2);
+errorflags=find(groundedsum==groundedcounters);
+errornodes=nodesgrounded(errorflags);
+
+vertexonwater(errornodes)=1;
+vertexongroundedice(errornodes)=0;
+vertexonfloatingice(errornodes)=0;
+
+%Return: 
+md.mesh.segmentmarkers(:)=1;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/partition/AreaAverageOntoPartition.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/partition/AreaAverageOntoPartition.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/partition/AreaAverageOntoPartition.m	(revision 21239)
@@ -0,0 +1,55 @@
+function partvector=AreaAverageOntoPartition(md,vector,layer)
+%AREAAVERAGEONTOPARTITION 
+%   compute partition values for a certain vector expressed on the vertices of the mesh.
+%   Use area weighted average.
+%
+%   Usage:
+%      average=AreaAverageOntoPartition(md,vector)
+%      average=AreaAverageOntoPartition(md,vector,layer) %if in 3D, chose which layer is partitioned
+
+%some checks
+if dimension(md.mesh)==3,
+	if nargin~=3,
+		error('layer should be provided onto which Area Averaging occurs');
+	end
+	%save 3D model
+	md3d=md;
+
+	md.mesh.elements=md.mesh.elements2d;
+	md.mesh.x=md.mesh.x2d;
+	md.mesh.y=md.mesh.y2d;
+	md.mesh.numberofvertices=md.mesh.numberofvertices2d;
+	md.mesh.numberofelements=md.mesh.numberofelements2d;
+	md.qmu.vertex_weight=[];
+	md.mesh.vertexconnectivity=[];
+
+	%run connectivity routine
+	md=adjacency(md);
+
+	%finally, project vector: 
+	vector=project2d(md3d,vector,layer);
+	md.qmu.partition=project2d(md3d,md3d.qmu.partition,layer);
+end
+
+%ok, first check that part is Matlab indexed
+part=md.qmu.partition+1;
+
+%some check: 
+if md.qmu.numberofpartitions~=max(part),
+	error('AreaAverageOntoPartition error message: ''npart'' should be equal to max(md.qmu.partition)');
+end
+
+%initialize output
+partvector=zeros(max(part),1);
+
+%start weight average
+weightedvector=vector.*md.qmu.vertex_weight;
+for i=1:max(part),
+	pos=find(part==i);
+	partvector(i)=sum(weightedvector(pos))/sum(md.qmu.vertex_weight(pos));
+end
+
+%in 3D, restore 3D model:
+if dimension(md.mesh)==3,
+	md=md3d;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/partition/adjacency.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/partition/adjacency.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/partition/adjacency.m	(revision 21239)
@@ -0,0 +1,26 @@
+function md=adjacency(md)
+%ADJACENCY -  compute adjacency matrix, list of vertices and list of weights.
+%
+%  function to create the adjacency matrix from the connectivity table.
+%
+%  the required output is:
+%    md.adj_mat     (double [sparse nv x nv], vertex adjacency matrix)
+%    md.qmu.vertex_weight        (double [nv], vertex weights)
+
+indi=[md.mesh.elements(:,1);md.mesh.elements(:,2);md.mesh.elements(:,3)];
+indj=[md.mesh.elements(:,2);md.mesh.elements(:,3);md.mesh.elements(:,1)];
+values=1;
+
+md.qmu.adjacency=sparse(indi,indj,values,md.mesh.numberofvertices,md.mesh.numberofvertices);
+md.qmu.adjacency=double([md.qmu.adjacency | md.qmu.adjacency']);
+
+%now, build vwgt:
+areas=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y);
+
+%get node connectivity
+md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+
+connectivity=md.mesh.vertexconnectivity(:,1:end-1);
+pos=find(connectivity);
+connectivity(pos)=areas(connectivity(pos))/3;
+md.qmu.vertex_weight=sum(connectivity,2);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/partition/flagedges.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/partition/flagedges.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/partition/flagedges.m	(revision 21239)
@@ -0,0 +1,45 @@
+function [xsegments ysegments]=flagedges(elements,x,y,partition)
+%FLAGEDGES - return pairs of x,y segments, delimiting partitions.
+%
+%   Usage:
+%      [xsegments ysegments]=flagedges(elements,x,y,partition)
+
+xsegments=[];
+ysegments=[];
+
+for i=1:size(elements,1),
+	m1=partition(elements(i,1));
+	m2=partition(elements(i,2));
+	m3=partition(elements(i,3));
+	x1=x(elements(i,1));
+	x2=x(elements(i,2));
+	x3=x(elements(i,3));
+	y1=y(elements(i,1));
+	y2=y(elements(i,2));
+	y3=y(elements(i,3));
+
+	if (m1~=m2) & (m1~=m3) & (m2~=m3),
+		xmiddle=(x1+x2+x3)/3;
+		ymiddle=(y1+y2+y3)/3;
+		xsegments=[xsegments; (x1+x2)/2 xmiddle];
+		xsegments=[xsegments; (x1+x3)/2 xmiddle];
+		xsegments=[xsegments; (x2+x3)/2 xmiddle];
+		ysegments=[ysegments; (y1+y2)/2 ymiddle];
+		ysegments=[ysegments; (y1+y3)/2 ymiddle];
+		ysegments=[ysegments; (y2+y3)/2 ymiddle];
+	end
+
+	if (m1==m2) & (m1~=m3),
+		xsegments=[xsegments; (x1+x3)/2 (x2+x3)/2];
+		ysegments=[ysegments; (y1+y3)/2 (y2+y3)/2];
+	end
+	if (m1==m3) & (m2~=m3),
+		xsegments=[xsegments; (x1+x2)/2 (x2+x3)/2];
+		ysegments=[ysegments; (y1+y2)/2 (y2+y3)/2];
+	end
+
+	if (m2==m3) & (m1~=m3),
+		xsegments=[xsegments; (x1+x2)/2 (x1+x3)/2];
+		ysegments=[ysegments; (y1+y2)/2 (y1+y3)/2];
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/partition/partitioner.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/partition/partitioner.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/partition/partitioner.m	(revision 21239)
@@ -0,0 +1,109 @@
+function md=partitioner(md,varargin)
+%PARTITIONER - partition mesh 
+%
+%   List of options to partitioner: 
+%
+%   package: 'chaco', 'metis' or 'scotch'
+%   npart: number of partitions.
+%   weighting: 'on' or 'off': default off
+%   section:  1 by defaults(1=bisection, 2=quadrisection, 3=octasection)
+%   recomputeadjacency:  'on' by default (set to 'off' to compute existing one)
+%   Output: md.qmu.partition recover the partition vector
+%   
+%   Usage:
+%      md=partitioner(md,'package','chaco','npart',100,'weighting','on');
+%
+
+%get options: 
+options=pairoptions(varargin{:});
+
+%set defaults
+options=addfielddefault(options,'package','chaco');
+options=addfielddefault(options,'npart',10);
+options=addfielddefault(options,'weighting','on');
+options=addfielddefault(options,'section',1);
+options=addfielddefault(options,'recomputeadjacency','on');
+
+%get package: 
+package=getfieldvalue(options,'package');
+npart=getfieldvalue(options,'npart');
+recomputeadjacency=getfieldvalue(options,'recomputeadjacency');
+
+if(dimension(md.mesh)==3),
+	%partitioning essentially happens in 2D. So partition in 2D, then 
+	%extrude the partition vector vertically. 
+	md3d=md; %save  for later
+	md.mesh.elements=md.mesh.elements2d;
+	md.mesh.x=md.mesh.x2d;
+	md.mesh.y=md.mesh.y2d;
+	md.mesh.numberofvertices=md.mesh.numberofvertices2d;
+	md.mesh.numberofelements=md.mesh.numberofelements2d;
+	md.qmu.vertex_weight=[];
+	md.mesh.vertexconnectivity=[];
+end
+
+%adjacency matrix if needed:
+if strcmpi(recomputeadjacency,'on'),
+	md=adjacency(md);
+else
+	disp('skipping adjacency matrix computation as requested in the options');
+end
+
+if strcmpi(package,'chaco'),
+
+	%  default method (from chaco.m)
+	method=[1 1 0 0 1 1 50 0 .001 7654321]';
+	method(1)=3;    %  global method (3=inertial (geometric))
+	method(3)=0;    %  vertex weights (0=off, 1=on)
+
+	%specify bisection
+	method(6)=getfieldvalue(options,'section');%  ndims (1=bisection, 2=quadrisection, 3=octasection)
+
+	%are we using weights? 
+	if strcmpi(getfieldvalue(options,'weighting'),'on'),
+		weights=floor(md.qmu.vertex_weight/min(md.qmu.vertex_weight));
+		method(3)=1;
+	else 
+		weights=[];
+	end
+
+	%  partition into nparts
+	if isa(md.mesh,'mesh2d'),
+		part=Chaco(md.qmu.adjacency,weights,[],md.mesh.x, md.mesh.y,zeros(md.mesh.numberofvertices,1),method,npart,[])'+1; %index partitions from 1 up. like metis.
+	else
+		part=Chaco(md.qmu.adjacency,weights,[],md.mesh.x, md.mesh.y,md.mesh.z,method,npart,[])'+1; %index partitions from 1 up. like metis.
+	end
+
+elseif strcmpi(package,'scotch'),
+
+	%are we using weights? 
+	if strcmpi(getfieldvalue(options,'weighting'),'on'),
+		weights=floor(md.qmu.vertex_weight/min(md.qmu.vertex_weight));
+	end
+	maptab=Scotch(md.qmu.adjacency,[],weights,[],'cmplt',[npart]);
+
+	part=maptab(:,2);%index partitions from 1 up. like metis.
+
+elseif strcmpi(package,'linear'),
+
+	part=1:1:md.mesh.numberofvertices;
+
+elseif strcmpi(package,'metis'),
+
+	[element_partitioning,part]=MeshPartition(md.mesh,md.qmu.numberofpartitions);
+
+else
+
+	error(['partitioner error message: could not find ' package ' partitioner']);
+	help partitioner
+end
+
+%extrude if we are in 3D:
+if dimension(md.mesh)==3,
+	md3d.qmu.vertex_weight=md.qmu.vertex_weight;
+	md3d.qmu.adjacency=md.qmu.adjacency;
+	md=md3d;
+	part=project3d(md,'vector',part','type','node');
+end
+
+md.qmu.partition=part;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/applyoptions.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/applyoptions.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/applyoptions.js	(revision 21239)
@@ -0,0 +1,384 @@
+function applyoptions(md,data,datatype,options,canvas,gl,node){
+	//APPLYOPTIONS - apply colobar, text, cloud, and expdisp options to current plot
+	//
+	//   Usage:
+	//      applyoptions(md,data,options)
+	//
+	//   See also: PLOTMODEL, PARSE_OPTIONS
+	
+	//colorbar {{{
+	if (options.exist('colorbar')) {
+		if (options.getfieldvalue('colorbar')==1) {
+			//Handle movie data {{{
+			if (datatype == 5) {
+				data = data[0];
+			} //}}}
+			//Variable options initialization {{{
+			var caxis = options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+			var colorbarinnerlabels = options.getfieldvalue('colorbarinnerlabels','off');
+			var ccanvasid,ctitleid,clabelsid,ccanvas,ctitle,clabels,ccontext,cmap,colorbar,cwidth,cheight,cgradient,color,y,x;
+			//}}}
+			//Create colorbar labels {{{
+			var labels = [];
+			var cdivisions = options.getfieldvalue('colorbarnticks',6);
+			var caxisdelta = caxis[1] - caxis[0];
+			var precision = options.getfieldvalue('colorbarprecision',3);
+			if (options.getfieldvalue('log','off')!='off') {
+				for (var i=cdivisions; i >= 0; i--) {
+					var scale = (Math.log10(caxis[1])-Math.log10(caxis[0]))/Math.log10(options.getfieldvalue('log',10));
+					labels[i] = (Math.pow(options.getfieldvalue('log',10),Math.log10(caxis[0])/Math.log10(options.getfieldvalue('log',10))+scale*(cdivisions-i)/cdivisions)).toFixed(precision);
+				}
+			} else {
+				for (var i=cdivisions; i >= 0; i--) {
+					labels[i] = (caxisdelta*(cdivisions-i)/cdivisions+caxis[0]).toFixed(precision);
+				}
+			} //}}}
+			//Initialize colorbar canvas {{{
+			ccanvasid = options.getfieldvalue('colorbarid',options.getfieldvalue('canvasid').replace('canvas','colorbar-canvas'));			
+			ccanvas = $('#'+ccanvasid)[0];
+			cwidth = ccanvas.width*options.getfieldvalue('colorbarwidth',1);
+			cheight = ccanvas.height*options.getfieldvalue('colorbarheight',1);
+			ccontext = ccanvas.getContext('2d');
+			ccontext.clearRect(0,0, cwidth, cheight);
+			ccontext.beginPath();
+			cmap = options.getfieldvalue('colormap','jet');
+			colorbar = colorbars[cmap];
+			cgradient = ccontext.createLinearGradient(0,0,0,cheight);
+			//}}}
+			//Draw colorbar gradient {{{
+			for (var i=0; i < colorbar.length; i++) {
+				color = colorbar[colorbar.length-i-1];
+				color = [Math.round(color[0]*255),Math.round(color[1]*255),Math.round(color[2]*255)];	
+				cgradient.addColorStop(i/colorbar.length*(cdivisions/(cdivisions+1.0))+(1.0/(cdivisions+1.0)),'rgba('+color.toString()+',1.0)');
+			}
+			ccontext.fillStyle=cgradient;
+			ccontext.fillRect(0,0,cwidth,cheight);
+			//}}}
+			//Draw colorbar border {{{
+			ccontext.beginPath();
+			ccontext.lineWidth='1';
+			ccontext.strokeStyle=options.getfieldvalue('colorbarfontcolor','black');
+			ccontext.rect(0,0,cwidth,cheight);
+			ccontext.stroke();
+			//}}}
+			//Draw colorbar labels {{{
+			clabelsid = options.getfieldvalue('colorbarid', ccanvasid).replace('canvas','labels');
+			clabels = $('#'+clabelsid);
+			if (colorbarinnerlabels=='on') {
+				clabels.removeClass('sim-colorbar-labels-outer');
+				clabels.addClass('sim-colorbar-labels-inner');
+			}
+			else {
+				clabels.removeClass('sim-colorbar-labels-inner');
+				clabels.addClass('sim-colorbar-labels-outer');
+			}
+			var clabelstring = '';
+			clabels.empty();
+			for (var i=0; i <= cdivisions; i++) {
+				y = (i+0.5)/(cdivisions+1)*cheight;
+				x = 0.2*cwidth;
+				clabelstring += '<li><span>'+labels[i]+'</span></li>';
+				ccontext.beginPath();
+				ccontext.moveTo(0,y);
+				ccontext.lineTo(x,y);
+				ccontext.moveTo(cwidth-x,y);
+				ccontext.lineTo(cwidth,y);
+				ccontext.stroke();
+			}
+			clabels.append(clabelstring);
+			//}}}
+			//Draw colorbar title {{{
+			ctitleid = options.getfieldvalue('colorbarid', ccanvasid).replace('canvas','heading');
+			ctitle = $('#'+ctitleid);
+			if (options.exist('colorbartitle')) { ctitle.html(options.getfieldvalue('colorbartitle')); }
+			//}}}
+		} 
+	} //}}}
+	//texture canvas //{{{
+	var tcontext,tcanvas,tcanvasid,tURL,tgradient;
+	tcanvasid = 'texturecanvas';
+	var tcanvas = document.getElementById(tcanvasid);
+	if (tcanvas == null) {
+		$('<canvas id="texturecanvas" width="256" height="256" style="display: none;"></canvas>').insertAfter('#'+String(options.getfieldvalue('canvasid')));
+		tcanvas = document.getElementById(tcanvasid);
+	}
+	tcontext = tcanvas.getContext('2d');
+	tgradient = tcontext.createLinearGradient(0,0,0,256);
+		
+	var cmap = options.getfieldvalue('colormap','jet');
+	var colorbar = colorbars[cmap];
+	for (var i=0; i < colorbar.length; i++) {
+		color = colorbar[colorbar.length-i-1];
+		color = [Math.round(color[0]*255),Math.round(color[1]*255),Math.round(color[2]*255)];	
+		tgradient.addColorStop(i/colorbar.length,'rgba('+color.toString()+',1.0)');
+	}
+	
+	tcontext.fillStyle = tgradient;
+	tcontext.fillRect(0,0,256,256);
+	tURL = tcanvas.toDataURL();
+	node.texture = initTexture(gl,tURL);
+	node.textureCanvas = tcanvas;
+	node.caxis = options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+	//}}}
+	//expdisp contours {{{
+	if (options.exist('expdisp')) {
+		canvas.nodes.expdisp = Node(gl,options);
+		var node = canvas.nodes.expdisp;
+		
+		//declare variables:  {{{
+		var vertices = [];
+		var indices = [];
+		var colors = [];
+		var rgbcolor = [];
+		var xmin,xmax;
+		var ymin,ymax;
+		var zmin,zmax;
+		var scale;
+		
+		//Process data and model
+		var x = options.getfieldvalue('expdisp').x;
+		var y = options.getfieldvalue('expdisp').y;
+		var z = Array.apply(null, Array(x.length)).map(Number.prototype.valueOf,0);
+		
+		if (options.getfieldvalue('expdisp').z) {
+			z = options.getfieldvalue('expdisp').z;
+		}
+		//}}}
+
+		//Compute coordinates and data range: //{{{
+		var modelxlim = [ArrayMin(x),ArrayMax(x)];
+		var modelylim = [ArrayMin(y),ArrayMax(y)];
+		var modelzlim = [ArrayMin(z),ArrayMax(z)];
+		var xlim = options.getfieldvalue('xlim',modelxlim);
+		var ylim = options.getfieldvalue('ylim',modelylim);
+		var zlim = options.getfieldvalue('zlim',modelzlim);
+		xmin = xlim[0];
+		xmax = xlim[1];
+		ymin = ylim[0];
+		ymax = ylim[1];
+		zmin = zlim[0];
+		zmax = zlim[1];
+		//}}}
+
+		//Compute scaling: //{{{
+		var scale = 1 / (xmax - xmin);
+		node.shaderName = 'colored';
+		node.shader = gl.shaders[node.shaderName].program;
+		node.scale = [scale, scale, scale*options.getfieldvalue('heightscale',1)];
+		node.translation = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (-2 / scale)];
+		node.modelMatrix = updateModelMatrix(node);
+		node.drawMode = gl.LINE_LOOP;
+		node.drawOrder = 0;
+		node.useIndexBuffer = false;
+		node.disableDepthTest = true;
+		//}}}
+
+		//some defaults:
+		colors.itemSize = 4;
+
+		//retrieve some options
+		var linewidth=options.getfieldvalue('linewidth',1);
+		var edgecolor=options.getfieldvalue('edgecolor','black'); //RGBCOLOR?
+
+		vertices.itemSize = 3;
+		for(var i=0; i < x.length; i++){
+			vertices[vertices.length] = x[i];
+			vertices[vertices.length] = y[i];
+			vertices[vertices.length] = z[i];
+
+			//edgecolor
+			rgbcolor = [0.0, 0.0, 0.0];
+			colors[colors.length] = rgbcolor[0];
+			colors[colors.length] = rgbcolor[1];
+			colors[colors.length] = rgbcolor[2];
+			colors[colors.length] = 1.0;
+		}
+
+		//Initalize buffers:
+		node.arrays = [vertices, colors];
+		node.buffers = initBuffers(gl, node.arrays);
+	} //}}}
+	//cloud of points {{{
+	if (options.exist('cloud')) {
+		canvas.nodes.cloud = Node(gl,options);
+		var node = canvas.nodes.cloud;
+
+		//declare variables:  {{{
+		var vertices = [];
+		var indices = [];
+		var colors = [];
+		var rgbcolor = [];
+		var xmin,xmax;
+		var ymin,ymax;
+		var zmin,zmax;
+		var scale;
+		
+		//Process data and model
+		var x = options.getfieldvalue('cloud').x;
+		var y = options.getfieldvalue('cloud').y;
+		var z = Array.apply(null, Array(x.length)).map(Number.prototype.valueOf,0);
+		
+		if (options.getfieldvalue('cloud').z) {
+			z = options.getfieldvalue('cloud').z;
+		}
+		//}}}
+
+		//Compute coordinates and data range: //{{{
+		var modelxlim = [ArrayMin(x),ArrayMax(x)];
+		var modelylim = [ArrayMin(y),ArrayMax(y)];
+		var modelzlim = [ArrayMin(z),ArrayMax(z)];
+		var xlim = options.getfieldvalue('xlim',modelxlim);
+		var ylim = options.getfieldvalue('ylim',modelylim);
+		var zlim = options.getfieldvalue('zlim',modelzlim);
+		xmin = xlim[0];
+		xmax = xlim[1];
+		ymin = ylim[0];
+		ymax = ylim[1];
+		zmin = zlim[0];
+		zmax = zlim[1];
+		//}}}
+
+		//Compute scaling: //{{{
+		var scale = 1 / (xmax - xmin);
+		node.shaderName = 'colored';
+		node.shader = gl.shaders[node.shaderName].program;
+		node.scale = [scale, scale, scale*options.getfieldvalue('heightscale',1)];
+		node.translation = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (-2 / scale)];
+		node.modelMatrix = updateModelMatrix(node);
+		node.drawMode = gl.POINTS;
+		node.drawOrder = 0;
+		node.useIndexBuffer = false;
+		node.disableDepthTest = true;
+		//}}}
+
+		//some defaults:
+		colors.itemSize = 4;
+
+		//retrieve some options
+		var linewidth=options.getfieldvalue('linewidth',1);
+		var edgecolor=options.getfieldvalue('edgecolor','black'); //RGBCOLOR?
+
+		vertices.itemSize = 3;
+		for(var i=0; i < x.length; i++){
+			vertices[vertices.length] = x[i];
+			vertices[vertices.length] = y[i];
+			vertices[vertices.length] = z[i];
+
+			//edgecolor
+			rgbcolor = [0.0, 0.0, 0.0];
+			colors[colors.length] = rgbcolor[0];
+			colors[colors.length] = rgbcolor[1];
+			colors[colors.length] = rgbcolor[2];
+			colors[colors.length] = 1.0;
+		}
+
+		//Initalize buffers:
+		node.arrays = [vertices, colors];
+		node.buffers = initBuffers(gl, node.arrays);
+	} //}}}
+	
+	//text display //{{{
+	if (options.exist('textlabels')) {
+		var textcanvas,textcanvasid;	
+		textcanvasid = options.getfieldvalue('textcanvasid',options.getfieldvalue('canvasid')+'-text');
+		textcanvas = $('#'+textcanvasid);
+		textcanvas.textlabels = options.getfieldvalue('textlabels',[]);
+		
+		//setup drawing function for text canvas draw calls
+		textcanvas.draw = function(canvas) {
+			var textcontext,textlabels,textlabel,textcanvaswidth,textcanvasheight,textcoordinates;	
+			var textposition = vec3.create();
+			var mvpMatrix = mat4.create();
+			
+			//ensure correct canvas coordinate scaling
+			textcanvaswidth = this[0].clientWidth;
+			textcanvasheight = this[0].clientHeight;
+			this[0].width  = textcanvaswidth;
+			this[0].height = textcanvasheight;
+			
+			textcontext = this[0].getContext('2d');
+			textlabels = options.getfieldvalue('textlabels',[]);
+			textcontext.clearRect(0, 0, textcanvaswidth, textcanvasheight);
+			
+			//worldspace to screenspace transformation for text
+			for (text in textlabels) {
+				textlabel = textlabels[text];
+				mat4.multiply(mvpMatrix, canvas.cameraMatrix, canvas.nodes.overlay.modelMatrix);
+				textposition = vec3.transformMat4(textposition, textlabel.pos, mvpMatrix);
+				if (textposition[2] > 1) { //clip coordinates with z > 1
+					continue;
+				}
+				textcoordinates = [(textposition[0]+1.0)/2.0*textcanvaswidth, (-textposition[1]+1.0)/2.0*textcanvasheight]; //NDC to screenspace
+				textcontext.font = String(options.getfieldvalue('colorbarfontsize',18))+'px "Lato",Helvetica,Arial,sans-serif';
+				textcontext.fillStyle = options.getfieldvalue('colorbarfontcolor','black');
+				textcontext.strokeStyle = options.getfieldvalue('colorbarfontcolor','black');
+				textcontext.textAlign = 'center';
+				textcontext.textBaseline = 'middle';
+				textcontext.fillText(textlabel.text, textcoordinates[0], textcoordinates[1]);
+				textcontext.strokeText(textlabel.text, textcoordinates[0], textcoordinates[1]);
+			}
+		}
+		canvas.textcanvas = textcanvas;
+	} //}}}
+	//Atmosphere {{{
+	if (options.exist('render')) {
+		var meshresults = processmesh(md,data,options);
+		var x = meshresults[0]; 
+		var y = meshresults[1]; 
+		var z = meshresults[2]; 
+		var elements = meshresults[3];
+		var is2d = meshresults[4]; 
+		var isplanet = meshresults[5];
+		
+		var modelxlim = [ArrayMin(x),ArrayMax(x)];
+		var modelylim = [ArrayMin(y),ArrayMax(y)];
+		var modelzlim = [ArrayMin(z),ArrayMax(z)];
+		var xlim = options.getfieldvalue('xlim',modelxlim);
+		var ylim = options.getfieldvalue('ylim',modelylim);
+		var zlim = options.getfieldvalue('zlim',modelzlim);
+		xmin = xlim[0];
+		xmax = xlim[1];
+		ymin = ylim[0];
+		ymax = ylim[1];
+		zmin = zlim[0];
+		zmax = zlim[1];
+		
+		var global = vec3.length([(xmin + xmax) / 2, (ymin + ymax) / 2, (zmin + zmax) / 2]) < 6371000/10; //tolerance for global models = center is 637100 meters away from center of earth
+		var atmosphereScale = 1.25;
+		var translation = global ? [(xmin + xmax) / 2, (ymin + ymax) / 2, (zmin + zmax) / 2] : [(xmin + xmax) / 2, (ymin + ymax) - 6371000, (zmin + zmax) / 2];
+		
+		if (options.getfieldvalue('render',[]).indexOf('sky')!=-1) {	
+			//atmosphere
+			var node = Node(gl);
+			canvas.nodes[canvas.nodes.length] = node;
+			node.name = "atmosphere";
+			node.shaderName = "SkyFromSpace";
+			node.shader = gl.shaders[node.shaderName];
+			node.drawOrder = 1;
+			node.enableCullFace = true;
+			node.mesh = GL.Mesh.icosahedron({size:6371000*atmosphereScale,subdivisions:6});
+			node.useIndexBuffer = false;
+			node.rotation = [0, 0, 0];
+			node.translation = translation;
+			node.center = [0, 0, 0];
+			updateModelMatrix(node);
+		}
+		if (options.getfieldvalue('render',[]).indexOf('space')!=-1) {	
+			//skysphere
+			node = Node(gl);
+			canvas.nodes[canvas.nodes.length] = node;
+			node.name = "skysphere";
+			node.shaderName = "Textured";
+			node.shader = gl.shaders[node.shaderName];
+			node.drawOrder = 2;
+			node.enableCullFace = true;
+			node.mesh = GL.Mesh.sphere({size:6371000*10});
+			node.texture = initTexture(gl,'../../../js/textures/TychoSkymapII_t4_2k.jpg');
+			node.useIndexBuffer = false;
+			node.rotation = [0, 0, 0];
+			node.translation = translation;
+			node.center = [0, 0, 0];
+			updateModelMatrix(node);
+		}
+	} //}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/applyoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/applyoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/applyoptions.m	(revision 21239)
@@ -0,0 +1,508 @@
+function applyoptions(md,data,options)
+%APPLYOPTIONS - apply the options to current plot
+%
+%   Usage:
+%      applyoptions(md,data,options)
+%
+%   See also: PLOTMODEL, PARSE_OPTIONS
+
+%fontsize
+fontsize=getfieldvalue(options,'fontsize',14);
+
+%fontweight
+fontweight=getfieldvalue(options,'fontweight','normal');
+
+%title
+if exist(options,'title')
+	titlevalue=getfieldvalue(options,'title');
+	if iscell(titlevalue),
+		title(titlevalue,'FontSize',fontsize,'FontWeight',fontweight);
+	else
+		if ~isnan(titlevalue),
+			title(titlevalue,'FontSize',fontsize,'FontWeight',fontweight);
+		end
+	end
+end
+
+%xlabel, ylabel and zlabel
+if exist(options,'xlabel');
+	xlabel(getfieldvalue(options,'xlabel'),'FontSize',fontsize,'FontWeight',fontweight);
+end
+if exist(options,'ylabel');
+	ylabel(getfieldvalue(options,'ylabel'),'FontSize',fontsize,'FontWeight',fontweight);
+end
+if exist(options,'zlabel');
+	zlabel(getfieldvalue(options,'zlabel'),'FontSize',fontsize,'FontWeight',fontweight);
+end
+
+%xticks, yticks and zticks
+if exist(options,'xtick'), set(gca,'XTick',getfieldvalue(options,'xtick')); end
+if exist(options,'ytick'), set(gca,'YTick',getfieldvalue(options,'ytick')); end
+if exist(options,'ztick'), set(gca,'ZTick',getfieldvalue(options,'ztick')); end
+
+%view 
+if dimension(md.mesh)==3 & ~exist(options,'layer'),
+	view(getfieldvalue(options,'view',3));
+else
+	view(getfieldvalue(options,'view',2));
+end
+
+%axis
+set(gca,'FontSize',getfieldvalue(options,'axisfontsize',fontsize));;
+if exist(options,'axis')
+	eval(['axis ' getfieldvalue(options,'axis')]);
+else
+	if strcmp(domaintype(md.mesh),'3D'),
+		if ~exist(options,'layer'),
+			axis auto tight
+		else
+			axis tight equal
+		end
+	elseif strcmp(domaintype(md.mesh),'2Dvertical'),
+		axis auto tight
+	elseif strcmp(domaintype(md.mesh),'3Dsurface'),
+		axis auto tight
+
+	elseif strcmp(domaintype(md.mesh),'2Dhorizontal'),
+		axis tight equal;
+	else
+		error('type of domain not supported');
+	end
+end
+
+%box
+if exist(options,'box')
+	eval(['box ' getfieldvalue(options,'box')]);
+end
+
+%xlim, ylim and zlim
+if exist(options,'xlim');
+	xlim(getfieldvalue(options,'xlim'));
+end
+if exist(options,'ylim');
+	ylim(getfieldvalue(options,'ylim'));
+end
+if exist(options,'zlim');
+	zlim(getfieldvalue(options,'zlim'));
+end
+
+%latlon
+%Must be done here (before xlim and ylim??) so that it uses the same xlim and ylim as plot_overlay
+%these are changed by axis that follows
+if ~strcmpi(getfieldvalue(options,'latlon','off'),'off')
+	latlonoverlay(md,options);
+end
+
+%Basinzoom
+if exist(options,'basin');
+	basinzoom(options);
+end
+
+%Zoom
+if exist(options,'zoom');
+	zoom(getfieldvalue(options,'zoom',2));
+end
+
+%ShowBasins
+if strcmpi(getfieldvalue(options,'showbasins','off'),'on')
+	showbasins(options);
+end
+
+%Caxis
+if exist(options,'caxis'),
+	caxis(getfieldvalue(options,'caxis'));
+end
+
+%shading
+if exist(options,'shading'),
+	shading(getfieldvalue(options,'shading'));
+end
+
+%grid
+if exist(options,'grid'),
+	if strcmpi(getfieldvalue(options,'grid'),'on'),
+		grid on;
+	end
+end
+
+%colormap
+c = getcolormap(options);
+h = colormap(c);
+
+%wrapping
+if exist(options,'wrapping'),
+	if ~exist(options,'colormap'),
+		h=jet;
+	end
+	colormap(repmat(h,getfieldvalue(options,'wrapping',1),1));
+end
+
+%colorbar
+if getfieldvalue(options,'colorbar',1)==1,
+	if exist(options,'colorbarcornerposition'),
+		c=colorbar(getfieldvalue(options,'colorbarcornerposition'),'peer',gca);
+	else 
+		c=colorbar('peer',gca);
+	end
+	set(c,'FontSize',getfieldvalue(options,'colorbarfontsize',fontsize),'YColor',getfieldvalue(options,'FontColor','k'));
+	if exist(options,'wrapping')
+		lim=get(c,'Ylim');
+		lim=[lim(1) lim(1)+(lim(2)-lim(1))/getfieldvalue(options,'wrapping')];
+		set(c,'Ylim',lim);
+	end
+	if exist(options,'colorbarpos'),
+		set(c,'Position',getfieldvalue(options,'colorbarpos'));
+	end
+	if exist(options,'log'),
+		nlab=length(get(c,'YTick'));
+		logvalue=getfieldvalue(options,'log');
+
+		scaleminmax=caxis;
+		Min=min(scaleminmax);
+		Max=max(scaleminmax);
+		set(c,'YLim',[Min Max]); % set colorbar limits
+		set(c,'YTick',linspace(Min,Max,nlab));     % set tick mark locations
+
+		labels = cell(1,nlab);
+		tick_vals = linspace(Min,Max,nlab);
+		tick_vals = exp(log(logvalue)*tick_vals);
+		warning off MATLAB:log:logOfZero;
+		for i = 1:nlab
+			labels{i} = sprintf('%-3.4g',round_ice(tick_vals(i),2));
+			%labels{i} = sprintf('%-.4g',round_ice(tick_vals(i),2));
+		end
+		warning on MATLAB:log:logOfZero;
+		set(c,'YTickLabel',labels);
+	end 
+ 	if exist(options,'cbYLim'); 
+		set(c,'YLim',getfieldvalue(options,'cbYLim'));
+	end
+	if exist(options,'colorbartitle'),
+		set(get(c,'title'),'FontSize',getfieldvalue(options,'colorbarfontsize',fontsize),'String',getfieldvalue(options,'colorbartitle'),...
+			'Color',getfieldvalue(options,'FontColor','k'));
+	end
+	if exist(options,'colorbarYLabel'),
+		set(get(c,'Ylabel'),'FontSize',getfieldvalue(options,'colorbarfontsize',fontsize),'String',getfieldvalue(options,'colorbarYLabel'),...
+			'Color',getfieldvalue(options,'FontColor','k'));
+	end
+	if exist(options,'colorbarwidth'),
+		posaxes=get(gca,'Position');
+		alpha=getfieldvalue(options,'colorbarwidth',1);
+		position=get(c,'Position');
+		dx=position(3);
+		newdx=dx*alpha;
+		position(1)=position(1)+(dx-newdx)/2;
+		position(3)=newdx;
+		set(c,'Position',position);
+		set(gca,'Position',posaxes);
+	end
+	if exist(options,'colorbarheight'),
+		posaxes=get(gca,'Position');
+		alpha=getfieldvalue(options,'colorbarheight',1);
+		position=get(c,'Position');
+		dy=position(4);
+		newdy=dy*alpha;
+		position(2)=position(2)+(dy-newdy)/2;
+		position(4)=newdy;
+		set(c,'Position',position);
+		set(gca,'Position',posaxes);
+	end
+	if exist(options,'cbYTickLabel');
+		tick_vals=getfieldvalue(options,'cbYTickLabel');
+		if ~isnumeric(tick_vals) & strcmp(tick_vals,'on')
+			tick_vals=get(c,'YTick')';
+			if exist(options,'log')
+				logval= getfieldvalue(options,'log');
+				for i= 1:numel(tick_vals)
+					tick_vals(i)= logval^(tick_vals(i));
+				end
+			elseif numel(tick_vals) == 3
+				tick_vals=[tick_vals(1); mean(tick_vals(1:2)); tick_vals(2); ...
+					mean(tick_vals(2:3)); tick_vals(3)];
+				set(c,'YTick',tick_vals);
+			end
+		else
+			if exist(options,'log')
+				logvalue=getfieldvalue(options,'log');
+				set(c,'YTick',log(tick_vals)./log(logvalue));
+			else
+				set(c,'YTick',tick_vals);
+			end
+		end
+		labels = cell(1,numel(tick_vals));
+		for i = 1:numel(tick_vals)
+			labels{i} = num2str(tick_vals(i));
+		end
+		set(c,'YTickLabel',labels);
+	end
+
+elseif getfieldvalue(options,'colorbar',1)==0,
+	colorbar('off');
+else
+	%do nothing
+
+end
+
+%area
+if exist(options,'area'),
+	antzoom(getfieldvalue(options,'area'));
+end
+
+%expdisp
+if exist(options,'expdisp'),
+	filename=(getfieldvalue(options,'expdisp'));
+	style=(getfieldvalue(options,'expstyle'));
+	linewidth=(getfieldvalue(options,'linewidth',1));
+	for i=1:length(getfieldvalue(options,'expdisp')),
+		filenamei=filename{i};
+		stylei=style{i};
+		if length(linewidth)==1,
+			linewidthi=linewidth;
+		else
+			linewidthi=linewidth{i};
+		end
+		expdisp(filenamei,'linestyle',stylei,'linewidthi',linewidthi,'multiplier',getfieldvalue(options,'unit',1));
+	end
+end
+
+%text (default value is empty, not NaN...)
+if exist(options,'text');
+	textstring=getfieldvalue(options,'text');
+	textweight=getfieldvalue(options,'textweight','b');
+	textsize=getfieldvalue(options,'textsize');
+	textcolor=getfieldvalue(options,'textcolor');
+	textposition=getfieldvalue(options,'textposition');
+	textrotation=getfieldvalue(options,'textrotation');
+	for i=1:length(getfieldvalue(options,'text'));
+		textstringi=textstring{i};
+		textweighti=textweight{i};
+		textsizei=textsize{i};
+		textcolori=textcolor{i};
+		textpositioni=textposition{i};
+		textrotationi=textrotation{i};
+		h=text(textpositioni(1),textpositioni(2),10,textstringi,'FontSize',textsizei,'FontWeight',textweighti,'Color',textcolori,'Rotation',textrotationi);
+		if strcmpi(getfieldvalue(options,'textclip','on'),'on'),
+			set(h,'Clipping','on'); %prevent text from appearing outside of the box
+		end
+	end
+end
+
+%north arrow
+if exist(options,'northarrow'),
+	northarrow(getfieldvalue(options,'northarrow'));
+end
+
+%curved arrow
+if exist(options,'curvedarrow'),
+	curvedoptions=getfieldvalue(options,'curvedarrow');
+	curvedarrow(curvedoptions{:});
+end
+
+%Scale ruler
+if exist(options,'scaleruler'),
+	scaleruler(options);
+end
+
+%streamliness
+if exist(options,'streamlines'),
+	plot_streamlines(md,options);
+end
+
+%contours
+if exist(options,'contourlevels'),
+	plot_contour(md,data,options);
+end
+
+%YTickLabel
+if exist(options,'yticklabel'),
+	set(gca,'YTickLabel',getfieldvalue(options,'YTickLabel'));
+end
+
+%XTickLabel
+if exist(options,'xticklabel'),
+	set(gca,'XTickLabel',getfieldvalue(options,'XTickLabel'));
+end
+
+%xtick
+if exist(options,'xtick'),
+	set(gca,'xtick',getfieldvalue(options,'xtick'));
+end
+
+%ytick
+if exist(options,'ytick'),
+	set(gca,'ytick',getfieldvalue(options,'ytick'));
+end
+
+%Axis positions
+if exist(options,'offsetaxispos'),
+	offset=getfieldvalue(options,'offsetaxispos');
+	P=get(gca,'pos');
+	P(1)=P(1)+offset(1);
+	P(2)=P(2)+offset(2);
+	P(3)=P(3)+offset(3);
+	P(3)=P(4)+offset(4);
+	set(gca,'pos',P);
+end
+if exist(options,'axispos'),
+	Axis=getfieldvalue(options,'axispos');
+	hold on
+	set(gca,'pos',Axis);
+end
+
+%axes position
+if exist(options,'axesPosition')
+	set(gca,'Position',getfieldvalue(options,'axesPosition'));
+end
+
+%showregion
+if strcmpi(getfieldvalue(options,'showregion','off'),'on'),
+	%Keep pointer of main axis
+	maingca=gca;
+	%get inset relative position (x,y,width,height)
+	insetpos=getfieldvalue(options,'insetpos',[0.02 0.70 0.18 0.18]);
+	%get current plos position
+	cplotpos=get(maingca,'pos');
+	%compute inset position
+	PosInset=[cplotpos(1)+insetpos(1)*cplotpos(3),cplotpos(2)+insetpos(2)*cplotpos(4), insetpos(3)*cplotpos(3), insetpos(4)*cplotpos(4)];
+	axes('pos',PosInset);
+	axis equal off
+	%box off
+	if md.mesh.epsg==3413,
+		A=expread('/u/astrid-r1b/ModelData/Exp/GreenlandBoxFront.exp');
+		[A.x A.y]=ll2xy(A.x,A.y,+1,45,70);
+		A.x = A.x(1:30:end);
+		A.y = A.y(1:30:end);
+	elseif md.mesh.epsg==3031,
+		A=expread('/u/astrid-r1b/ModelData/Exp/Antarctica.exp');
+	else
+		error('applyoptions error message: md.mesh.epsg not defined');
+	end
+	offset=3*10^4;
+	Ax=[min(A.x)-offset max(A.x)+offset];
+	Ay=[min(A.y)-offset max(A.y)+offset];
+	%if we are zooming on a basin, don't take the mesh for the boundaries!
+	if exist(options,'basin'),
+		[mdx mdy]=basinzoom(options);
+	else
+		mdx=[min(md.mesh.x)-offset max(md.mesh.x)+offset];
+		mdy=[min(md.mesh.y)-offset max(md.mesh.y)+offset];
+	end
+	line(A.x,A.y,ones(size(A.x)),'color','b');
+	patch([Ax(1)  Ax(2)  Ax(2)  Ax(1) Ax(1)],[Ay(1)  Ay(1)  Ay(2)  Ay(2) Ay(1)],[1 1 1],'EdgeColor',[0 0 0],'LineWidth',1,'FaceLighting','none')
+	patch([mdx(1) mdx(2) mdx(2) mdx(1)],[mdy(1) mdy(1) mdy(2) mdy(2)],ones(4,1),'EdgeColor',[0 0 0],'FaceColor','r','FaceAlpha',0.5)
+	colorbar('off');
+	%back to main gca
+	set(gcf,'CurrentAxes',maingca)
+end
+
+%flag edges of a partition
+if exist(options,'partitionedges')
+	[xsegments ysegments]=flagedges(md.mesh.elements,md.mesh.x,md.mesh.y,md.qmu.partition);
+	xsegments=xsegments*getfieldvalue(options,'unit',1);
+	ysegments=ysegments*getfieldvalue(options,'unit',1);
+	color=getfieldvalue(options,'partitionedgescolor','r-');
+	linewidth=getfieldvalue(options,'linewidth',1);
+	hold on;
+	for i=1:length(xsegments),
+		plot(xsegments(i,:),ysegments(i,:),color,'LineWidth',linewidth);
+	end
+end
+
+%Scatter
+if exist(options,'scatter')
+	data=getfieldvalue(options,'scatter');
+	hold on
+	plot_scatter(data(:,1),data(:,2),data(:,3),options);
+end
+
+%backgroundcolor
+set(gca,'color',getfieldvalue(options,'backgroundcolor','none'));
+
+%lighting
+if strcmpi(getfieldvalue(options,'light','off'),'on'),
+	set(gca,'FaceLighting','gouraud','FaceColor','interp','AmbientStrength',0.5);
+	light('Position',[0 0.1 0.1],'Style','infinite');
+end
+
+%cloud of points: 
+if exist(options,'cloud'),
+	field=getfieldvalue(options,'cloud');
+	x=field(:,1);
+	y=field(:,2);
+	%unit multiplier:
+	if exist(options,'unit'),
+		unit=getfieldvalue(options,'unit');
+		x=x*unit;
+		y=y*unit;
+	end
+	hold on,p=plot(x,y,'k.');
+	markersize=getfieldvalue(options,'markersize',12);
+	color=getfieldvalue(options,'cloudcolor','k');
+	set(p,'Color',color);
+	set(p,'MarkerSize',markersize);
+end
+
+%========================%
+%OK VERY LAST STEP: INSET|
+%========================%
+if exist(options,'inset'),
+
+	%Keep pointer of main axis
+	maingca=gca;
+	%get inset relative position (x,y,width,height)
+	insetpos=getfieldvalue(options,'insetpos',[0.56 0.55 0.35 0.35]);
+	%get current plot position
+	cplotpos=get(gca,'pos');
+
+	X1=getfieldvalue(options,'insetx',xlim);
+	Y1=getfieldvalue(options,'insety',ylim);
+
+	for i=1:length(getfieldvalue(options,'insetx')),
+		if length(insetpos)==4,
+			insetposi=insetpos;
+		else
+			insetposi=insetpos{i};
+		end
+		PosInseti=[cplotpos(1)+insetposi(1)*cplotpos(3),cplotpos(2)+insetposi(2)*cplotpos(4), insetposi(3)*cplotpos(3), insetposi(4)*cplotpos(4)];
+		%show pos
+		if iscell(X1),
+			X1i=X1{i};
+		else
+			X1i=X1;
+		end
+		if iscell(Y1),
+			Y1i=Y1{i};
+		else
+			Y1i=Y1;
+		end
+		if strcmpi(getfieldvalue(options,'showinset','off'),'on')
+			line(X1i([1 2 2 1 1]),Y1i([1 1 2 2 1]),zeros(1,5),'Color','k','LineWidth',2);
+		end
+
+		%Get current figure
+		ax1=gca;
+
+		%plot inset
+		axes('pos',PosInseti);
+		copyobj(get(ax1,'children'),gca);
+		patch('Faces',[1 2 3 4 1],'Vertices',[X1i([1 2 2 1])' Y1i([1 1 2 2])'],'FaceColor','None','EdgeColor','k','LineWidth',2);
+
+		%apply options
+		options=removefield(options,'text',0);
+		options=removefield(options,'title',0);
+		options=removefield(options,'xlabel',0);
+		options=removefield(options,'ylabel',0);
+		options=removefield(options,'inset',0);
+		options=removefield(options,'offsetaxispos',0);
+		options=removefield(options,'showregion',0);
+		options=changefieldvalue(options,'colorbar',0);
+		options=changefieldvalue(options,'latlon','off');
+		options=changefieldvalue(options,'axis','equal off');
+		options=changefieldvalue(options,'xlim',X1i);
+		options=changefieldvalue(options,'ylim',Y1i);
+		applyoptions(md,data,options);
+
+		%back to main gca
+		set(gcf,'CurrentAxes',maingca)
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/applyoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/applyoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/applyoptions.py	(revision 21239)
@@ -0,0 +1,317 @@
+import numpy as npy
+from cmaptools import truncate_colormap
+from plot_contour import plot_contour
+from plot_streamlines import plot_streamlines
+from expdisp import expdisp
+
+try:
+	from matplotlib.ticker import MaxNLocator
+	from mpl_toolkits.axes_grid1 import make_axes_locatable
+	from mpl_toolkits.mplot3d import Axes3D
+	import matplotlib as mpl
+	import pylab as p
+	import matplotlib.pyplot as plt
+except ImportError:
+	print "could not import pylab, matplotlib has not been installed, no plotting capabilities enabled"
+
+def applyoptions(md,data,options,fig,ax):
+	'''
+	APPLYOPTIONS - apply options to current plot
+
+	'plotobj' is the object returned by the specific plot call used to
+	render the data.  This object is used for adding a colorbar.
+
+		Usage:
+			applyoptions(md,data,options)
+
+		See also: PLOTMODEL, PARSE_OPTIONS
+	'''
+
+	# get handle to current figure and axes instance
+	#fig = p.gcf()
+	#ax=p.gca()
+
+	#font {{{
+	fontsize=options.getfieldvalue('fontsize',8)
+	fontweight=options.getfieldvalue('fontweight','normal')
+	fontfamily=options.getfieldvalue('fontfamily','sans-serif')
+	font={
+			'fontsize'		:fontsize,
+			'fontweight'	:fontweight,
+			'family'			:fontfamily
+			}
+	#}}}
+
+	#title {{{
+	if options.exist('title'):
+		title=options.getfieldvalue('title')
+		if options.exist('titlefontsize'):
+			titlefontsize=options.getfieldvalue('titlefontsize')
+		else:
+			titlefontsize=fontsize
+		if options.exist('titlefontweight'):
+			titlefontweight=options.getfieldvalue('titlefontweight')
+		else:
+			titlefontweight=fontweight
+		#title font
+		titlefont=font.copy()
+		titlefont['size']=titlefontsize
+		titlefont['weight']=titlefontweight
+		ax.set_title(title,**titlefont)
+	#}}}
+		
+	#xlabel, ylabel, zlabel {{{
+	if options.exist('labelfontsize'):
+		labelfontsize=options.getfieldvalue('labelfontsize')
+	else:
+		labelfontsize=fontsize
+	if options.exist('labelfontweight'):
+		labelfontweight=options.getfieldvalue('labelfontweight')
+	else:
+		labelfontweight=fontweight
+
+	#font dict for labels
+	labelfont=font.copy()
+	labelfont['fontsize']=labelfontsize
+	labelfont['fontweight']=labelfontweight
+
+	if options.exist('xlabel'):
+		ax.set_xlabel(options.getfieldvalue('xlabel'),**labelfont)
+	if options.exist('ylabel'):
+		ax.set_ylabel(options.getfieldvalue('ylabel'),**labelfont)
+	if options.exist('zlabel'):
+		ax.set_zlabel(options.getfieldvalue('zlabel'),**labelfont)
+	#}}}
+
+	#xticks, yticks, zticks (tick locations) {{{
+	if options.exist('xticks'):
+		if options.exist('xticklabels'):
+			xticklabels=options.getfieldvalue('xticklabels')
+			ax.set_xticks(options.getfieldvalue('xticks'),xticklabels)
+		else:
+			ax.set_xticks(options.getfieldvalue('xticks'))
+	if options.exist('yticks'):
+		if options.exist('yticklabels'):
+			yticklabels=options.getfieldvalue('yticklabels')
+			ax.set_yticks(options.getfieldvalue('yticks'),yticklabels)
+		else:
+			ax.set_yticks(options.getfieldvalue('yticks'))
+	if options.exist('zticks'):
+		if options.exist('zticklabels'):
+			zticklabels=options.getfieldvalue('zticklabels')
+			ax.set_zticks(options.getfieldvalue('zticks'),zticklabels)
+		else:
+			ax.set_zticks(options.getfieldvalue('zticks'))
+	#}}}
+
+	#xticklabels,yticklabels,zticklabels {{{
+	if options.getfieldvalue('ticklabels','off')=='off' or options.getfieldvalue('ticklabels',0)==0:
+		options.addfielddefault('xticklabels',[])
+		options.addfielddefault('yticklabels',[])
+		# TODO check if ax has a z-axis (e.g. is 3D)
+	if options.exist('xticklabels'):
+		xticklabels=options.getfieldvalue('xticklabels')
+		ax.set_xticklabels(xticklabels)
+	if options.exist('yticklabels'):
+		yticklabels=options.getfieldvalue('yticklabels')
+		ax.set_yticklabels(yticklabels)
+	if options.exist('zticklabels'):
+		zticklabels=options.getfieldvalue('zticklabels')
+		ax.set_zticklabels(zticklabels)
+	#}}}
+
+	#ticklabel notation {{{
+	#ax.ticklabel_format(style='sci',scilimits=(0,0))
+	#}}}
+
+	#ticklabelfontsize {{{
+	if options.exist('ticklabelfontsize'):
+		for label in ax.get_xticklabels() + ax.get_yticklabels():
+			label.set_fontsize(options.getfieldvalue('ticklabelfontsize'))
+		if int(md.mesh.dimension)==3: 
+			for label in ax.get_zticklabels():
+				label.set_fontsize(options.getfieldvalue('ticklabelfontsize'))
+	#}}}
+
+	#view
+	#if int(md.mesh.dimension) == 3 and options.exist('layer'):
+	#	#options.getfieldvalue('view') ?
+	#	ax=fig.gca(projection='3d')
+	#plt.show()
+
+	#axis {{{
+	if options.exist('axis'):
+		if options.getfieldvalue('axis',True)=='off':
+			ax.ticklabel_format(style='plain')
+			p.setp(ax.get_xticklabels(), visible=False)
+			p.setp(ax.get_yticklabels(), visible=False)
+	# }}}
+
+	#box
+	if options.exist('box'):
+		eval(options.getfieldvalue('box'))
+
+	#xlim, ylim, zlim {{{
+	if options.exist('xlim'):
+		ax.set_xlim(options.getfieldvalue('xlim'))
+	if options.exist('ylim'):
+		ax.set_ylim(options.getfieldvalue('ylim'))
+	if options.exist('zlim'):
+		ax.set_zlim(options.getfieldvalue('zlim'))
+	#}}}
+
+	#latlon
+
+	#Basinzoom
+
+	#ShowBasins
+
+	#clim {{{
+	if options.exist('clim'):
+		lims=options.getfieldvalue('clim')
+		assert len(lims)==2, 'error, clim should be passed as a list of length 2'
+	elif options.exist('caxis'):
+		lims=options.getfieldvalue('caxis')
+		assert len(lims)==2, 'error, caxis should be passed as a list of length 2'
+		options.addfielddefault('clim',lims)
+	else:
+		if len(data)>0: lims=[data.min(),data.max()]
+		else: lims=[0,1]
+	#}}}
+
+	#shading
+	#if options.exist('shading'):
+
+	#grid {{{
+	if options.exist('grid'):
+		if 'on' in options.getfieldvalue('grid','on'):
+			ax.grid()
+	#}}}
+
+	#colormap {{{
+	# default sequential colormap
+	defaultmap=truncate_colormap(mpl.cm.gnuplot2,0.1,0.9,128)
+	cmap=options.getfieldvalue('colormap',defaultmap)
+	norm = mpl.colors.Normalize(vmin=lims[0], vmax=lims[1])
+	options.addfield('colornorm',norm)
+	cbar_extend=0
+	if options.exist('cmap_set_over'):
+		over=options.getfieldvalue('cmap_set_over','0.5')
+		cmap.set_over(over)
+		cbar_extend+=1
+	if options.exist('cmap_set_under'):
+		under=options.getfieldvalue('cmap_set_under','0.5')
+		cmap.set_under(under)
+		cbar_extend+=2
+	options.addfield('colormap',cmap)
+	#}}}
+
+	#contours {{{
+	if options.exist('contourlevels'):
+		plot_contour(md,data,options,ax)
+	#}}}
+
+	#wrapping
+
+	#colorbar {{{
+	if options.getfieldvalue('colorbar',1)==1:
+	    if cbar_extend==0:
+	    	extend='neither'
+	    elif cbar_extend==1:
+	    	extend='max'
+	    elif cbar_extend==2:
+	    	extend='min'
+	    elif cbar_extend==3:
+	    	extend='both'
+	    cb = mpl.colorbar.ColorbarBase(ax.cax, cmap=cmap, norm=norm, extend=extend)
+	    if options.exist('alpha'):
+	    	cb.set_alpha(options.getfieldvalue('alpha'))
+	    if options.exist('colorbarnumticks'):
+	    	cb.locator=MaxNLocator(nbins=options.getfieldvalue('colorbarnumticks',5))
+	    else:
+	    	cb.locator=MaxNLocator(nbins=5) # default 5 ticks
+	    if options.exist('colorbartickspacing'):
+	    	locs=npy.arange(lims[0],lims[1]+1,options.getfieldvalue('colorbartickspacing'))
+	    	cb.set_ticks(locs)
+	    if options.exist('colorbarlines'):
+	    	locs=npy.arange(lims[0],lims[1]+1,options.getfieldvalue('colorbarlines'))
+	    	cb.add_lines(locs,['k' for i in range(len(locs))],npy.ones_like(locs))
+	    if options.exist('colorbarlineatvalue'):
+                locs=options.getfieldvalue('colorbarlineatvalue')
+                colors=options.getfieldvalue('colorbarlineatvaluecolor',['k' for i in range (len(locs))])
+                widths=options.getfieldvalue('colorbarlineatvaluewidth',npy.ones_like(locs))
+                cb.add_lines(locs,colors,widths)
+	    if options.exist('colorbartitle'):
+	        if options.exist('colorbartitlepad'):
+	    	    cb.set_label(options.getfieldvalue('colorbartitle'),\
+                            labelpad=options.getfieldvalue('colorbartitlepad'),fontsize=fontsize)
+	    	else:
+	    	    cb.set_label(options.getfieldvalue('colorbartitle'),fontsize=fontsize)
+	    cb.ax.tick_params(labelsize=fontsize)
+            cb.solids.set_rasterized(True)
+	    cb.update_ticks()
+            cb.set_alpha(1)
+            cb.draw_all()
+	    plt.sca(ax) # return to original axes control
+	#}}}
+
+        #expdisp {{{
+        if options.exist('expdisp'):
+            filename=options.getfieldvalue('expdisp')
+            style=options.getfieldvalue('expstyle','k')
+            linewidth=options.getfieldvalue('explinewidth',1)
+            for i in xrange(len(filename)):
+                filenamei=filename[i]
+                stylei=style[i]
+                if type(linewidth)==list:
+                    linewidthi=linewidth[i]
+                else:
+                    linewidthi=linewidth
+                expdisp(filenamei,ax,linestyle=stylei,linewidth=linewidthi,unitmultiplier=options.getfieldvalue('unit',1))
+        #}}}
+
+	#area
+
+	#text {{{
+	if options.exist('text'):
+	    text=options.getfieldvalue('text')
+	    textx=options.getfieldvalue('textx')
+	    texty=options.getfieldvalue('texty')
+	    textcolor=options.getfieldvalue('textcolor')
+	    textweight=options.getfieldvalue('textweight')
+	    textrotation=options.getfieldvalue('textrotation')
+            textfontsize=options.getfieldvalue('textfontsize')
+	    for label,x,y,size,color,weight,rotation in zip(text,textx,texty,textfontsize,textcolor,textweight,textrotation):
+                ax.text(x,y,label,transform=ax.transAxes,fontsize=size,color=color,weight=weight,rotation=rotation)
+	#}}}
+
+	#north arrow
+
+	#scale ruler
+
+	#streamlines
+        if options.exist('streamlines'):
+            plot_streamlines(md,options,ax)
+
+
+	#axis positions
+
+	#figure position
+
+	#axes position
+
+	#showregion
+
+	#flat edges of a partition
+
+	#scatter
+
+	#backgroundcolor
+
+	#figurebackgroundcolor
+
+	#lighting
+
+	#point cloud
+
+	#inset
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/arrow.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/arrow.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/arrow.m	(revision 21239)
@@ -0,0 +1,59 @@
+function arrow(x0,y0,x1,y1,varargin)
+%ARROW - plot arrow, using (x0,y0) and (x1,y1) as initial and end points. options can be specified.
+%
+%   Usage:
+%      arrow(x1,y1,x2,y2,options)
+%      where options is a lit of paired arguments of string OR enums
+%      options can be: 
+%            'ratio': default .5 (ratio headarrow/length)
+%            'widthratio': default is 1/10 of length
+
+%recover options
+options=pairoptions(varargin{:});
+ratio=getfieldvalue(options,'ratio',.5);
+widthratio=getfieldvalue(options,'widthratio',.1);
+color=getfieldvalue(options,'color','k');
+
+%compute some values out of (x1,y1) and (x2,y2)
+length=sqrt((x1-x0)^2+(y1-y0)^2);
+width=length*widthratio;
+
+%Build the two points Ap and Bp
+x=zeros(2,1);
+y=zeros(2,1);
+x(1)=x0; y(1)=y0;
+x(2)=x1; y(2)=y1;
+
+Ap=[x(1)
+   y(1)];
+Bp=[x(2)
+   y(2)];
+
+%Build arrowhead first
+ang2=150*2*pi/360;
+rotation=[cos(ang2), sin(ang2); -sin(ang2), cos(ang2)];
+
+E=ratio*rotation*(Bp-Ap)+Bp;
+F=Bp;
+G=ratio*rotation'*(Bp-Ap)+Bp;
+H=Bp/4+E*3/8+G*3/8;
+
+%Build rectangle
+u=Bp-Ap;
+alpha=atan2(u(2),u(1));
+
+A=Ap-[-width/2*sin(alpha)
+   width/2*cos(alpha)];
+ B=H-[-width/2*sin(alpha)
+   width/2*cos(alpha)];
+C=H+[-width/2*sin(alpha)
+   width/2*cos(alpha)];
+D=Ap+[-width/2*sin(alpha)
+   width/2*cos(alpha)];
+
+%Plot arrow
+hold on
+p1=patch([A(1) B(1) C(1) D(1)],[A(2) B(2) C(2) D(2)],color);
+set(p1,'EdgeColor',color); set(p1,'FaceColor',color);
+p2=patch([E(1) F(1) G(1) H(1)],[E(2) F(2) G(2) H(2)],color);
+set(p2,'EdgeColor',color); set(p2,'FaceColor',color);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/checkplotoptions.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/checkplotoptions.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/checkplotoptions.js	(revision 21239)
@@ -0,0 +1,231 @@
+function checkplotoptions(md,options){
+	//PARSE_OPTIONS - build a structure that holds all plot options
+	//
+	//   Usage:
+	//      checkplotoptions(md,options);
+	//
+	//   See also: PLOTMODEL
+
+	//units
+	if (options.exist('unit')){
+		if (options.getfieldvalue('unit') === 'km'){
+			options.changefieldvalue('unit',Math.pow(10,-3));
+		}
+		if (options.getfieldvalue('unit') === '100km'){
+			options.changefieldvalue('unit',Math.pow(10,-5));
+		}
+	}
+
+	//density
+	if (options.exist('density')){
+		density=options.getfieldvalue('density');
+		options.changefieldvalue('density',Math.abs(Math.ceil(density)));
+	}
+
+	//Show section
+	if (options.exist('showsection')){
+		if (options.getfieldvalue('showsection') === 'on'){
+			options.changefieldvalue('showsection',4);
+		}
+	}
+
+	//smooth values
+	if (options.exist('smooth')){
+		if (options.getfieldvalue('smooth') === 'on'){
+			options.changefieldvalue('smooth',0);
+		}
+	}
+
+	//contouronly values
+	if (options.exist('contouronly')){
+		if (options.getfieldvalue('contouronly') === 'on'){
+			options.changefieldvalue('contouronly',1);
+		}
+	}
+
+	//Colorbar;
+	if (options.exist('colorbar')){
+		if (options.getfieldvalue('colorbar') === 'on'){
+			options.changefieldvalue('colorbar',1);
+		}
+		else if (options.getfieldvalue('colorbar') === 'off'){
+			options.changefieldvalue('colorbar',0);
+		}
+	}
+
+	//text
+	if (options.exist('text')){
+
+		//1: textvalue
+		textvalues=options.getfieldvalue('text');
+
+		//ischar if only one expstyle -> create a cell
+		if (typeof textvalues === 'string'){
+			textvalues=[textvalues];
+			numtext=1;
+		}
+		else if (IsArray(textvalues)){
+			numtext=textvalues.length;
+		}
+		else throw Error("plot error message: ''text'' option should be either a string or a cell");
+
+		//2: textweight
+		if (options.exist('textweight')){
+
+			textweightvalues=options.getfieldvalue('textweight');
+
+			//ischar if only one textweight -> create a cell
+			if (typeof textweightvalues === 'string'){
+				textweightvalues=[textweightvalues];
+			}
+			else if (!IsArray(textweightvalues)){
+				throw Error("plot error message: ''textweight'' option should be either a string or a cell");
+			}
+		}
+		else{
+			textweightvalues=['n'];
+		}
+		if (textweightvalues.length==1){
+			var value=textweightvalues[0];
+			for (var i=0;i<numtext-1;i++)textweightvalues.push(value);
+		}
+
+		//3: textsize
+		if (options.exist('textsize')){
+			textsizevalues=options.getfieldvalue('textsize');
+		}
+		//ischar if only one textsize -> create a cell
+		if (typeof textsizevalues === 'number'){
+			textsizevalues=[textsizevalues];
+		}
+		else if (!IsArray(textsizevalues)){
+			throw Error("plot error message: ''textsize'' option should be either a number or a cell");
+		}
+		else{
+			textsizevalues=[14];
+		}
+		if (textsizevalues.length==1){
+			var value=textsizevalues[0];
+			for (var i=0;i<numtext-1;i++)textsizevalues.push(value);
+		}
+			
+		//4: textcolor
+		if (options.exist('textcolor')){
+			textcolorvalues=options.getfieldvalue('textcolor');
+		}
+		if (typeof textcolorvalues === 'string'){ //ischar if only one textcolor -> create a cell
+			textcolorvalues=[textcolorvalues];
+		}
+		else if (!IsArray(textcolorvalues)){
+			throw Error("plot error message: ''textcolor'' option should be either a string or a cell");
+		}
+		else textcolorvalues=['k'];
+
+		if (textcolorvalues.length==1){
+			var value=textcolorvalues[0];
+			for (var i=0;i<numtext-1;i++)textcolorvalues.push(value);
+		}
+		
+		//5: textposition
+		if (options.exist('textposition')){
+			textpositionvalues=options.getfieldvalue('textposition');
+		}
+		//ischar if only one textposition -> create a cell
+		if (typeof textpositionvalues === 'number'){
+			textpositionvalues=[textpositionvalues];
+		}
+		else if(!IsArray(textpositionvalues)){
+			throw Error("plot error message: ''textposition'' option should be either a string or a cell");
+		}
+		else throw Error("plot error message: ''textposition'' option is missing");
+			
+		//6: textrotation
+		if (options.exist('textrotation')){
+			textrotationvalues=options.getfieldvalue('textrotation');
+		}
+		//ischar if only one textsize -> create a cell
+		if (typeof textrotationvalues === 'number'){
+			textrotationvalues=[textrotationvalues];
+		}
+		else if (!IsArray(textrotationvalues)){
+			throw Error("plot error message: ''textrotation'' option should be either a number or a cell");
+		}
+		else textrotationvalues=[0];
+		
+		if (textrotationvalues.length==1){
+			var value=textrotationvalues[0];
+			for (var i=0;i<numtext-1;i++)textrotationvalues.push(value);
+		}
+			
+		options.changefieldvalue('text',textvalues);
+		options.changefieldvalue('textsize',textsizevalues);
+		options.changefieldvalue('textweight',textweightvalues);
+		options.changefieldvalue('textcolor',textcolorvalues);
+		options.changefieldvalue('textposition',textpositionvalues);
+		options.changefieldvalue('textrotation',textrotationvalues);
+	}
+
+	//expdisp
+	expdispvaluesarray=[];
+	expstylevaluesarray=[];
+	expstylevalues=[];
+	if (options.exist('expstyle')){
+		expstylevalues=options.getfieldvalue('expstyle');
+		//ischar if only one expstyle -> create a cell
+		if (typeof expstylevalues === 'string'){
+			expstylevalues=[expstylevalues];
+		}
+		options.changefieldvalue('expdisp',expdispvaluesarray);
+	}
+		
+	if (options.exist('expdisp')){
+		expdispvalues=options.getfieldvalue('expdisp');
+	
+		//ischar if only one expstyle -> create a cell
+		if (typeof expdispvalues === 'string'){
+			expdispvalues=[expdispvalues];
+		}
+		for (var i=0; i< expdispvalues.length;i++){
+			expdispvaluesarray.push(expdispvalues[i]);
+			if (expstylevalues.length>i){
+				expstylevaluesarray.push(expstylevalues[i]);
+			}
+			else{
+				expstylevaluesarray.push('g-');
+			}
+		}
+		options.changefieldvalue('expstyle',expstylevaluesarray);
+	}
+
+	//latlonnumbering
+	if (options.exist('latlonclick')){
+		if (options.getfieldvalue('latlonclick') === 'on'){
+			options.changefieldvalue('latlonclick',1);
+		}
+	}
+
+	//north arrow
+	if (options.exist('northarrow')){
+	   if (options.getfieldvalue('northarrow') === 'on'){
+		   
+		   //default values
+		   Lx=ArrayMax(md.mesh.y)-ArrayMin(md.mesh.y);
+		   Ly=ArrayMax(md.mesh.y)-ArrayMin(md.mesh.y);
+		  
+		   //default values
+		   options.changefieldvalue('northarrow',[ArrayMin(md.mesh.x)+1/6*Lx,ArrayMin(md.mesh.y)+5/6*Ly,1/15*Ly,0.25,1/250*Ly]);
+	   }
+	}
+
+	//scale ruler
+	if (options.exist('scaleruler')){
+	   if (options.getfieldvalue('scaleruler') === 'on'){
+		   //default values
+		   Lx=ArrayMax(md.mesh.x)-ArrayMin(md.mesh.x);
+		   Ly=ArrayMax(md.mesh.y)-ArrayMin(md.mesh.y);
+		   
+		   //default values
+		   options.changefieldvalue('scaleruler',[ArrayMin(md.mesh.x)+6/8*Lx, ArrayMin(md.mesh.y)+1/10*Ly, Math.pow(10,(Math.ceil(Math.log10(Lx))))/5, Math.floor(Lx/100), 5]);
+	   }
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/checkplotoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/checkplotoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/checkplotoptions.m	(revision 21239)
@@ -0,0 +1,208 @@
+function options=checkplotoptions(md,options)
+%PARSE_OPTIONS - build a structure that holds all plot options
+%
+%   Usage:
+%      options=checkplotoptions(md,options);
+%
+%   See also: PLOTMODEL
+
+%units
+if exist(options,'unit'),
+	if strcmpi(getfieldvalue(options,'unit'),'km')
+		options=changefieldvalue(options,'unit',10^-3);
+	end
+	if strcmpi(getfieldvalue(options,'unit'),'100km')
+		options=changefieldvalue(options,'unit',10^-5);
+	end
+
+end
+
+%density
+if exist(options,'density'),
+	density=getfieldvalue(options,'density');
+	options=changefieldvalue(options,'density',abs(ceil(density)));
+end
+
+%Show section
+if exist(options,'showsection'),
+	if strcmpi(getfieldvalue(options,'showsection'),'on')
+		options=changefieldvalue(options,'showsection',4);
+	end
+end
+
+%smooth values
+if exist(options,'smooth'),
+	if strcmpi(getfieldvalue(options,'smooth'),'on')
+		options=changefieldvalue(options,'smooth',0);
+	end
+end
+
+%contouronly values
+if exist(options,'contouronly'),
+	if strcmpi(getfieldvalue(options,'contouronly'),'on')
+		options=changefieldvalue(options,'contouronly',1);
+	end
+end
+
+%Colorbar;
+if exist(options,'colorbar'),
+	if strcmpi(getfieldvalue(options,'colorbar'),'on')
+		options=changefieldvalue(options,'colorbar',1);
+	elseif strcmpi(getfieldvalue(options,'colorbar'),'off')
+			options=changefieldvalue(options,'colorbar',0);
+	end
+end
+
+%text
+if exist(options,'text'),
+	%1: textvalue
+	textvalues=getfieldvalue(options,'text');
+	%ischar if only one expstyle -> create a cell
+	if ischar(textvalues),
+		textvalues={textvalues};
+		numtext=1;
+	elseif iscell(textvalues),
+		numtext=length(textvalues);
+	else
+		error('plot error message: ''text'' option should be either a string or a cell');
+	end
+
+	%2: textweight
+	if exist(options,'textweight'),
+		textweightvalues=getfieldvalue(options,'textweight');
+		%ischar if only one textweight -> create a cell
+		if ischar(textweightvalues),
+			textweightvalues={textweightvalues};
+		elseif ~iscell(textweightvalues);
+			error('plot error message: ''textweight'' option should be either a string or a cell');
+		end
+	else
+		textweightvalues={'n'};
+	end
+	textweightvalues=repmat(textweightvalues,1,numtext); textweightvalues(numtext+1:end)=[];
+
+	%3: textsize
+	if exist(options,'textsize'),
+		textsizevalues=getfieldvalue(options,'textsize');
+		%ischar if only one textsize -> create a cell
+		if isnumeric(textsizevalues),
+			textsizevalues={textsizevalues};
+		elseif ~iscell(textsizevalues);
+			error('plot error message: ''textsize'' option should be either a number or a cell');
+		end
+	else
+		textsizevalues={14};
+	end
+	textsizevalues=repmat(textsizevalues,1,numtext); textsizevalues(numtext+1:end)=[];
+	%4: textcolor
+	if exist(options,'textcolor'),
+		textcolorvalues=getfieldvalue(options,'textcolor');
+		%ischar if only one textcolor -> create a cell
+		if ischar(textcolorvalues),
+			textcolorvalues={textcolorvalues};
+		elseif ~iscell(textcolorvalues);
+			error('plot error message: ''textcolor'' option should be either a string or a cell');
+		end
+	else
+		textcolorvalues={'k'};
+	end
+	textcolorvalues=repmat(textcolorvalues,1,numtext); textcolorvalues(numtext+1:end)=[];
+	%5: textposition
+	if exist(options,'textposition'),
+		textpositionvalues=getfieldvalue(options,'textposition');
+		%ischar if only one textposition -> create a cell
+		if isnumeric(textpositionvalues),
+			textpositionvalues={textpositionvalues};
+		elseif ~iscell(textpositionvalues);
+			error('plot error message: ''textposition'' option should be either a string or a cell');
+		end
+	else
+		error('plot error message: ''textposition'' option is missing');
+	end
+	%6: textrotation
+	if exist(options,'textrotation'),
+		textrotationvalues=getfieldvalue(options,'textrotation');
+		%ischar if only one textsize -> create a cell
+		if isnumeric(textrotationvalues),
+			textrotationvalues={textrotationvalues};
+		elseif ~iscell(textrotationvalues);
+			error('plot error message: ''textrotation'' option should be either a number or a cell');
+		end
+	else
+		textrotationvalues={0};
+	end
+	textrotationvalues=repmat(textrotationvalues,1,numtext); textrotationvalues(numtext+1:end)=[];
+	options=changefieldvalue(options,'text',textvalues);
+	options=changefieldvalue(options,'textsize',textsizevalues);
+	options=changefieldvalue(options,'textweight',textweightvalues);
+	options=changefieldvalue(options,'textcolor',textcolorvalues);
+	options=changefieldvalue(options,'textposition',textpositionvalues);
+	options=changefieldvalue(options,'textrotation',textrotationvalues);
+end
+
+%expdisp
+expdispvaluesarray=cell(0,0);
+expstylevaluesarray=cell(0,0);
+expstylevalues=cell(0,0);
+if exist(options,'expstyle'),
+	expstylevalues=getfieldvalue(options,'expstyle');
+	%ischar if only one expstyle -> create a cell
+	if ischar(expstylevalues),
+		expstylevalues={expstylevalues};
+	end
+end
+if exist(options,'expdisp'),
+	expdispvalues=getfieldvalue(options,'expdisp');
+	%ischar if only one expstyle -> create a cell
+	if ischar(expdispvalues),
+		expdispvalues={expdispvalues};
+	end
+	for i=1:length(expdispvalues)
+		expdispvaluesarray{end+1}=expdispvalues{i};
+		if (length(expstylevalues)>=i),
+			expstylevaluesarray{end+1}=expstylevalues{i};
+		else
+			expstylevaluesarray{end+1}='g-';
+		end
+	end
+end
+options=changefieldvalue(options,'expstyle',expstylevaluesarray);
+options=changefieldvalue(options,'expdisp',expdispvaluesarray);
+
+%latlonnumbering
+if exist(options,'latlonclick'),
+	if strcmpi(getfieldvalue(options,'latlonclick'),'on')
+		options=changefieldvalue(options,'latlonclick',1);
+	end
+end
+
+%north arrow
+if exist(options,'northarrow'),
+	if strcmpi(getfieldvalue(options,'northarrow'),'on')
+		%default values
+		Lx=max(md.mesh.y)-min(md.mesh.y);
+		Ly=max(md.mesh.y)-min(md.mesh.y);
+		%default values
+		options=changefieldvalue(options,'northarrow',[min(md.mesh.x)+1/6*Lx   min(md.mesh.y)+5/6*Ly   1/15*Ly   0.25   1/250*Ly]);
+	end
+end
+
+%scale ruler
+if exist(options,'scaleruler'),
+	if strcmpi(getfieldvalue(options,'scaleruler'),'on')
+		%default values
+		Lx=max(md.mesh.x)-min(md.mesh.x);
+		Ly=max(md.mesh.y)-min(md.mesh.y);
+		%default values
+		options=changefieldvalue(options,'scaleruler',[min(md.mesh.x)+6/8*Lx   min(md.mesh.y)+1/10*Ly   10^(ceil(log10(Lx)))/5 floor(Lx/100) 5]);
+	end
+end
+
+%Log scale (LOTS of changes to be performed
+if exist(options,'log'),
+	if exist(options,'caxis')
+		options=addfield(options,'caxis_pre',getfieldvalue(options,'caxis'));
+		options=changefieldvalue(options,'caxis',log(getfieldvalue(options,'caxis'))/log(getfieldvalue(options,'log')));
+	end
+	options=changefieldvalue(options,'cutoff',log(getfieldvalue(options,'cutoff',1.5))/log(getfieldvalue(options,'log')));
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/checkplotoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/checkplotoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/checkplotoptions.py	(revision 21239)
@@ -0,0 +1,168 @@
+import numpy as npy
+
+def checkplotoptions(md,options):
+	'''
+	CHECKPLOTOPTIONS - build a structure that holds all plot options
+
+		Usage:
+			options=checkplotoptions(md,options)
+
+		See also: PLOTMODEL
+
+		NOTE: not fully implemented yet
+	'''
+
+
+	#units
+	if options.exist('unit'):
+		if 'km' in options.getfieldvalue('unit','km'):
+			options.changefieldvalue('unit',10**-3)
+		elif '100km' in options.getfieldvalue('unit','100km'):
+			options.changefieldvalue('unit',10**-5)
+	
+	#density
+	if options.exist('density'):
+		density=options.getfieldvalue('density')
+		options.changefieldvalue('density',abs(ceil(density)))
+	
+	#show section
+	if options.exist('showsection'):
+		if 'on' in options.getfieldvalue('showsection','on'):
+			options.changefieldvalue('showsection',4)
+	
+	#smooth values
+	if options.exist('smooth'):
+		if 'on' in options.getfieldvalue('smooth','on'):
+			options.changefieldvalue('smooth',0)
+
+	#contouronly values
+	if options.exist('contouronly'):
+		if 'on' in options.getfieldvalue('contouronly','on'):
+			options.changefieldvalue('contouronly',1)
+
+	#colorbar
+	if options.exist('colorbar'):
+		if 'on' in options.getfieldvalue('colorbar','on'):
+			options.changefieldvalue('colorbar',1)
+		elif 'off' in options.getfieldvalue('colorbar','off'):
+			options.changefieldvalue('colorbar',0)
+
+	#text
+	if options.exist('text'):
+
+		# text values (coerce to list for consistent functionality)
+		textlist=[]
+		text=options.getfieldvalue('text','default text')
+		textlist.extend([text] if isinstance(text,str) else text)
+		numtext=len(textlist)
+
+		# text position	
+		textpos=options.getfieldvalue('textposition',[0.5,0.5])
+		if not isinstance(textpos,list):
+			raise Exception('textposition should be passed as a list')
+                if any(isinstance(i,list) for i in textpos):
+		    textx=[item[0] for item in textpos]
+		    texty=[item[1] for item in textpos]
+                else:
+                    textx=[textpos[0]]
+                    texty=[textpos[1]]
+		if len(textx)!=numtext or len(texty)!=numtext:
+			raise Exception('textposition should contain one list of x,y vertices for every text instance')
+
+		# font size
+		if options.exist('textfontsize'):
+			textfontsize=options.getfieldvalue('textfontsize',12)
+			sizelist=[]
+			sizelist.extend(textsize if isinstance(textfontsize,list) else [textfontsize])
+		else:
+			sizelist=[12]
+		if len(sizelist)==1:
+			sizelist=npy.tile(sizelist,numtext)
+
+		# font color
+		if options.exist('textcolor'):
+			textcolor=options.getfieldvalue('textcolor','k')
+			colorlist=[]
+			colorlist.extend(textcolor if isinstance(textcolor,list) else [textcolor])
+		else:
+			colorlist=['k']
+		if len(colorlist)==1:
+			colorlist=npy.tile(colorlist,numtext)
+
+		# textweight
+		if options.exist('textweight'):
+			textweight=options.getfieldvalue('textweight')
+			weightlist=[]
+			weightlist.extend(textweight if isinstance(textweight,list) else [textweight])
+		else:
+			weightlist=['normal']
+		if len(weightlist)==1:
+			weightlist=npy.tile(weightlist,numtext)
+
+		# text rotation
+		if options.exist('textrotation'):
+			textrotation=options.getfieldvalue('textrotation',0)
+			rotationlist=[]
+			rotationlist.extend(textrotation if isinstance(textrotation,list) else [textrotation])
+		else:
+			rotationlist=[0]
+		if len(rotationlist)==1:
+				rotationlist=npy.tile(rotationlist,numtext)
+
+		options.changefieldvalue('text',textlist)
+		options.addfield('textx',textx)
+		options.addfield('texty',texty)
+		options.changefieldvalue('textfontsize',sizelist)
+		options.changefieldvalue('textcolor',colorlist)
+		options.changefieldvalue('textweight',weightlist)
+		options.changefieldvalue('textrotation',rotationlist)
+
+	#expdisp
+	expdispvaluesarray=[]
+	expstylevaluesarray=[]
+	expstylevalues=[]
+	if options.exist('expstyle'):
+	        expstylevalues=options.getfieldvalue('expstyle')
+                if type(expstylevalues)==str:
+                    expstylevalues=[expstylevalues]
+	if options.exist('expdisp'):
+		expdispvalues=options.getfieldvalue('expdisp')
+                if type(expdispvalues)==str:
+                    expdispvalues=[expdispvalues]
+		for i in npy.arange(len(expdispvalues)):
+			expdispvaluesarray.append(expdispvalues[i])
+			if len(expstylevalues)>i:
+				expstylevaluesarray.append(expstylevalues[i])
+			else:
+				expstylevaluesarray.append('-k')
+
+	options.changefieldvalue('expstyle',expstylevaluesarray)
+	options.changefieldvalue('expdisp',expdispvaluesarray)
+
+	#latlonnumbering
+	if options.exist('latlonclick'):
+		if 'on' in options.getfieldvalue('latlonclick','on'):
+			options.changefieldvalue('latlonclick',1)
+
+	#northarrow
+	if options.exist('northarrow'):
+		if 'on' in options.getfieldvalue('northarrow','on'):
+			#default values
+			Lx=max(md.mesh.x)-min(md.mesh.x)
+			Ly=max(md.mesh.y)-min(md.mesh.y)
+			options.changefieldvalue('northarrow',[min(md.mesh.x)+1./6.*Lx, min(md.mesh.y)+5./6.*Ly, 1./15.*Ly, 0.25, 1./250.*Ly])
+
+	#scale ruler
+	if options.exist('scaleruler'):
+		if 'on' in options.exist('scaleruler','on'):
+			Lx=max(md.mesh.x)-min(md.mesh.x)
+			Ly=max(md.mesh.y)-min(md.mesh.y)
+			options.changefieldvalue('scaleruler',[min(md.mesh.x)+6./8.*Lx, min(md.mesh.y)+1./10.*Ly, 10**(ceil(log10(Lx)))/5, floor(Lx/100), 5])
+
+	#log scale
+	if options.exist('log'):
+		if options.exist('clim'):
+			options.changefieldvalue('clim',log(options.getfieldvalue('clim'))/log(options.getfieldvalue('log')))
+		options.changefieldvalue('cutoff',log(options.getfieldvalue('cutoff',1.5))/log(options.getfieldvalue('log')))
+
+	return options
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/bluewhitered.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/bluewhitered.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/bluewhitered.m	(revision 21239)
@@ -0,0 +1,122 @@
+function newmap = bluewhitered(m)
+%BLUEWHITERED   Blue, white, and red color map.
+%   BLUEWHITERED(M) returns an M-by-3 matrix containing a blue to white
+%   to red colormap, with white corresponding to the CAXIS value closest
+%   to zero.  This colormap is most useful for images and surface plots
+%   with positive and negative values.  BLUEWHITERED, by itself, is the
+%   same length as the current colormap.
+%
+%   Examples:
+%   ------------------------------
+%   figure
+%   imagesc(peaks(250));
+%   colormap(bluewhitered(256)), colorbar
+%
+%   figure
+%   imagesc(peaks(250), [0 8])
+%   colormap(bluewhitered), colorbar
+%
+%   figure
+%   imagesc(peaks(250), [-6 0])
+%   colormap(bluewhitered), colorbar
+%
+%   figure
+%   surf(peaks)
+%   colormap(bluewhitered)
+%   axis tight
+%
+%   See also HSV, HOT, COOL, BONE, COPPER, PINK, FLAG, 
+%   COLORMAP, RGBPLOT.
+
+
+if nargin < 1
+   m = size(get(gcf,'colormap'),1);
+end
+
+
+bottom = [0 0 0.5];
+botmiddle = [0 0.5 1];
+middle = [1 1 1];
+topmiddle = [1 0 0];
+top = [0.5 0 0];
+
+% Find middle
+lims = get(gca, 'CLim');
+
+% Find ratio of negative to positive
+if (lims(1) < 0) & (lims(2) > 0)
+    % It has both negative and positive
+    % Find ratio of negative to positive
+    ratio = abs(lims(1)) / (abs(lims(1)) + lims(2));
+    neglen = round(m*ratio);
+    poslen = m - neglen;
+    
+    % Just negative
+    new = [bottom; botmiddle; middle];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, neglen);
+    newmap1 = zeros(neglen, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap1(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+    % Just positive
+    new = [middle; topmiddle; top];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, poslen);
+    newmap = zeros(poslen, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+    % And put 'em together
+    newmap = [newmap1; newmap];
+    
+elseif lims(1) >= 0
+    % Just positive
+    new = [middle; topmiddle; top];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, m);
+    newmap = zeros(m, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+else
+    % Just negative
+    new = [bottom; botmiddle; middle];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, m);
+    newmap = zeros(m, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+end
+% 
+% m = 64;
+% new = [bottom; botmiddle; middle; topmiddle; top];
+% % x = 1:m;
+% 
+% oldsteps = linspace(0, 1, 5);
+% newsteps = linspace(0, 1, m);
+% newmap = zeros(m, 3);
+% 
+% for i=1:3
+%     % Interpolate over RGB spaces of colormap
+%     newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+% end
+% 
+% % set(gcf, 'colormap', newmap), colorbar
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/bluewhitered_smooth.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/bluewhitered_smooth.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/bluewhitered_smooth.m	(revision 21239)
@@ -0,0 +1,126 @@
+function newmap = bluewhitered_smooth(m)
+%BLUEWHITERED   Blue, white, and red color map.
+%   BLUEWHITERED(M) returns an M-by-3 matrix containing a blue to white
+%   to red colormap, with white corresponding to the CAXIS value closest
+%   to zero.  This colormap is most useful for images and surface plots
+%   with positive and negative values.  BLUEWHITERED, by itself, is the
+%   same length as the current colormap.
+%
+%   Examples:
+%   ------------------------------
+%   figure
+%   imagesc(peaks(250));
+%   colormap(bluewhitered(256)), colorbar
+%
+%   figure
+%   imagesc(peaks(250), [0 8])
+%   colormap(bluewhitered), colorbar
+%
+%   figure
+%   imagesc(peaks(250), [-6 0])
+%   colormap(bluewhitered), colorbar
+%
+%   figure
+%   surf(peaks)
+%   colormap(bluewhitered)
+%   axis tight
+%
+%   See also HSV, HOT, COOL, BONE, COPPER, PINK, FLAG, 
+%   COLORMAP, RGBPLOT.
+
+
+if nargin < 1
+   m = size(get(gcf,'colormap'),1);
+end
+
+bottom = [50 50 190]/255;
+botmiddle = [145 145 215]/255;
+middle = [240 240 240]/255;
+topmiddle = [215 145 145]/255;
+top = [190 50 50]/255;
+% bottom = [0.25 0.3 0.75];
+% botmiddle = [0.55 0.57 0.8];
+% middle = [0.85 0.85 0.85];
+% topmiddle = [0.77 0.43 0.5];
+% top = [0.7 0.0 0.15];
+
+% Find middle
+lims = get(gca, 'CLim');
+
+% Find ratio of negative to positive
+if (lims(1) < 0) & (lims(2) > 0)
+    % It has both negative and positive
+    % Find ratio of negative to positive
+    ratio = abs(lims(1)) / (abs(lims(1)) + lims(2));
+    neglen = round(m*ratio);
+    poslen = m - neglen;
+    
+    % Just negative
+    new = [bottom; botmiddle; middle];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, neglen);
+    newmap1 = zeros(neglen, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap1(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+    % Just positive
+    new = [middle; topmiddle; top];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, poslen);
+    newmap = zeros(poslen, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+    % And put 'em together
+    newmap = [newmap1; newmap];
+    
+elseif lims(1) >= 0
+    % Just positive
+    new = [middle; topmiddle; top];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, m);
+    newmap = zeros(m, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+else
+    % Just negative
+    new = [bottom; botmiddle; middle];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, m);
+    newmap = zeros(m, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+end
+% 
+% m = 64;
+% new = [bottom; botmiddle; middle; topmiddle; top];
+% % x = 1:m;
+% 
+% oldsteps = linspace(0, 1, 5);
+% newsteps = linspace(0, 1, m);
+% newmap = zeros(m, 3);
+% 
+% for i=1:3
+%     % Interpolate over RGB spaces of colormap
+%     newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+% end
+% 
+% % set(gcf, 'colormap', newmap), colorbar
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/cmaptools.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/cmaptools.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/cmaptools.py	(revision 21239)
@@ -0,0 +1,25 @@
+import numpy as npy
+
+try:
+	import matplotlib as mpl
+except ImportError:
+	print 'cannot import matplotlib, no plotting capabilities enabled'
+
+def truncate_colormap(cmap, minval=0.0, maxval=1.0, n=100):
+	'''
+	truncate a colormap within normalized limits [0,1]
+
+	cmap - a matplotlib colormap
+	minval - minimum value, normalized, of cmap to be returned.
+	maxval - maximum value, normalized, of cmap to be returned.
+	n - number of levels to use in constructing the new colormap
+
+	Example:
+		newcmap=truncate_colormap(oldcmap,minval=0.2,maxval=0.8,n=128)
+
+	'''
+
+	new_cmap = mpl.colors.LinearSegmentedColormap.from_list('trunc({n},{a:.2f},{b:.2f})'.format(n=cmap.name,
+		a=minval, b=maxval), cmap(npy.linspace(minval, maxval, n)))
+	
+	return new_cmap
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/color_scale.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/color_scale.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/color_scale.m	(revision 21239)
@@ -0,0 +1,74 @@
+function map = color_scale(n, theta, r, dir)
+%COLOR_SCALE Colormap with luminance and hue ramps and constant chroma.
+%   MAP = COLOR_SCALE(N, THETA, R, DIR) computes a colormap that works well 
+%   on color displays and also works well when printed on a grayscale 
+%   printer.
+%   
+%   The color map is computed using a simple path through L*a*b* space that
+%   approximates a uniform ramp in the L* direction, and a semicircular
+%   path in the a*-b* plane.
+%
+%   N is the number of colormap colors.  THETA is the angle (in degrees) in
+%   the a*-b* plane of the first color.  THETA is measured clockwise from
+%   the a* axis.  R is the radius of the semicircular path in the a*-b*
+%   plane.  DIR is either 'cw', for a clockwise traversal, or 'ccw', for a
+%   counterclockwise traversal.
+%
+%   All of the arguments are optional.  The default values are N = 256,
+%   THETA = 0, R = 50, and DIR = 'cw'.
+%
+%   COLOR_SCALE requires the Image Processing Toolbox version 4 or later.
+%
+%   Example
+%   -------
+%   Display a Radon transform image with colormaps produced by color_scale.
+%
+%       I = zeros(100,100);
+%       I(25:75, 25:75) = 1;
+%       theta = 0:180;
+%       [R,xp] = radon(I,theta);
+%       imshow(R,[],'InitialMag','fit')
+%       colormap(color_scale)
+%
+%       % Try it with different parameters.
+%       colormap(color_scale(256,0,88,'ccw'))
+%
+%   See also COLOR_SCALE_TOOL.
+
+%   Steve Eddins
+%   $Revision$  $Date$
+
+if nargin < 4
+    dir = 'cw';
+end
+
+if nargin < 3
+    r = 50;
+end
+
+if nargin < 2
+    theta = 0;
+end
+
+if nargin < 1
+    n = 256;
+end
+
+if strcmp(dir, 'cw')
+    angle_offset = -pi/2;
+else
+    angle_offset = pi/2;
+end
+
+theta = pi * theta / 180;
+theta_vec = linspace(theta, theta + angle_offset, n).';
+
+a = r*cos(theta_vec);
+b = r*sin(theta_vec);
+L = linspace(0, 100, n).';
+
+Lab = [L, a, b];
+
+cform = makecform('lab2srgb');
+
+map = applycform(Lab, cform);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/demmap.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/demmap.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/demmap.m	(revision 21239)
@@ -0,0 +1,79 @@
+function cmap = demmap(ncolors,minZ,maxZ,varargin);
+%DEMMAP - concatenate sea and land color depending on zmin and zmax
+%
+%   Usage:
+%      cmap = demmap(n,zmin,zmax,varargin)
+%
+%   Example:
+%      cmap = demmap(50,-300,1200);
+%      cmap = demmap(50,-300,1200,'dem');
+%      cmap = demmap(50,-300,1200,'ibcao');
+
+%Input checks
+if nargin<3,
+	help landseacolor
+	error('3 or 4 arguments necessary');
+elseif nargin>4,
+	help landseacolor
+	error('3 or 4 arguments necessary');
+end
+
+if nargin==4,
+	colorscheme = varargin{1};
+	if ~ischar(colorscheme), error('color scheme should be a string'); end
+else
+	colorscheme = 'dem';
+end
+
+% determine appropriate number of sea and land colors
+if minZ == maxZ;
+	maxZ = minZ+1;
+end
+
+cmn = minZ;
+cmx = maxZ;
+
+% determine appropriate number of sea and land colors
+if minZ >= 0
+	nsea = 0;
+	nland = ncolors;
+elseif maxZ <= 0
+	nland = 0;
+	nsea = ncolors;
+else
+	% find optimal ratio of land to sea colors
+	maxminratio = maxZ/abs(minZ);
+	n1 = floor(ncolors/2);
+	n2 = ceil(ncolors/2);
+	if maxminratio>1
+		sea = (1:n1)';
+		land = (ncolors-1:-1:n2)';
+	else
+		land = (1:n1)';
+		sea = (ncolors-1:-1:n2)';
+	end
+	ratio = land./sea;
+	errors = abs(ratio - maxminratio) / maxminratio;
+	indx = find(errors == min(min(errors)));
+	nsea = sea(indx);
+	nland = land(indx);
+
+	% determine color limits
+	seaint = abs(minZ)/nsea;
+	landint = maxZ/nland;
+	if seaint >= landint
+		interval = seaint;
+	else
+		interval = landint;
+	end
+	cmn = -nsea*interval*(1 + 1e-9);      % zero values treated as land
+	cmx = nland*interval;
+end
+
+clim = [cmn cmx];
+
+if strcmpi(colorscheme,'dem'),
+	cmap = [seacolor(nsea);landcolor(nland).^1.3];
+elseif strcmpi(colorscheme,'ibcao');
+	cmap = ibcao(nsea,nland);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/getcolormap.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/getcolormap.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/getcolormap.m	(revision 21239)
@@ -0,0 +1,64 @@
+function map = getcolormap(options)
+%GETCOLORMAP - get colormap from options
+%
+%   Usage:
+%      map = getcolormap(options)
+
+%default is jet
+if ~exist(options,'colormap'),
+	map = jet;
+	return
+end
+
+map = getfieldvalue(options,'colormap');
+if isnumeric(map);
+	%user provided a full colormap
+	return;
+end
+
+%OK this is an in-house colormap
+if ~ischar(map), error('colormap format not supported'); end
+
+if strcmpi(map,'Ala'),
+	map = jet(256);
+	map = map(128:end,:);
+elseif strcmpi(map,'damage'),
+	v=ver;
+	if any(strcmp('Image Processing Toolbox',{v.Name})),
+		map = color_scale(256,0,70,'ccw');
+		map = flipud(map);
+		map(1:2,:)=[0.7476    1.0000    1.0000; 0.7476    1.0000    1.0000];
+	else
+		error('damage colormap requires Image Processing Toolbox, please try another colormap');
+	end
+elseif strcmpi(map,'redblue'),
+	map = hsv(128);
+	map = rgb2hsv(map);
+	map(:,2)       = max(min( abs(map(:,1)-0.5)/0.5 ,1),0);
+	map(1:64,1)   = 0.7;
+	map(65:end,1) = 1;
+	map = hsv2rgb(map);
+elseif strcmpi(map,'Rignot'),
+	alpha=getfieldvalue(options,'alpha',1);
+	map = hsv(128);
+	map = rgb2hsv(map);
+	map(:,2) = max(min( (0.1+map(:,1)).^(1/alpha) ,1),0);
+	map = hsv2rgb(map);
+elseif strcmpi(map,'Rignot2'),
+	alpha=getfieldvalue(options,'alpha',1);
+	map = hsv;
+	map = rgb2hsv(map);
+	map(:,2) = max(min( (0.1+map(:,1)).^(1/alpha) ,1),0);
+	map = hsv2rgb(map);
+	map=flipud(map);
+elseif strcmpi(map,'Seroussi'),
+	alpha=getfieldvalue(options,'alpha',1);
+	map = hsv;
+	map = flipud(map);
+	map = map(1:floor(0.7*size(map,1)),:);
+	map = rgb2hsv(map);
+	map(:,2) = max(min( (0.1+map(:,1)).^(1/alpha) ,1),0);
+	map = hsv2rgb(map);
+else
+	eval(['map = ' map ';']);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/haxby.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/haxby.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/haxby.m	(revision 21239)
@@ -0,0 +1,36 @@
+function map = haxby(m)
+%HAXBY - Haxby color map
+%   HAXBY(M) returns an M-by-3 matrix containing a colormap with Haxby's
+%   colors, commonly used for displaying bathymetry data.
+%   HAXBY, by itself, is the same length as the current colormap.
+%
+%   Colormap is based on the colors used by W. F. Haxby's Gravity
+%   field of World's oceans, 1985, developed for geoid and gravity maps.
+%   The version used here is formed from a linear interpolation of
+%   the GMT color table used by MB-System by David W. Caress and Dale N. Chayes.
+%   <http://www.ldeo.columbia.edu/res/pi/MB-System>
+
+if nargin < 1, m = size(get(gcf,'colormap'),1); end
+
+ncolors=11;
+c=[...
+	37     57   175
+	40    127   251
+	50    190   255
+	106   235   255
+	138   236   174
+	205   255   162
+	240   236   121
+	255   189    87
+	255   161    68
+	255   186   133
+	255   255   255];
+
+pp=1:(m-1)/(ncolors-1):m;
+r=interp1(pp,c(:,1),1:m);
+g=interp1(pp,c(:,2),1:m);
+b=interp1(pp,c(:,3),1:m);
+map=[r' g' b']/255;
+
+%Fix bug of interp1 (M. Morlighem)
+map(find(map>1))=1;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/ibcao.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/ibcao.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/ibcao.m	(revision 21239)
@@ -0,0 +1,68 @@
+function map = ibcap(nsea,nland)
+%IBCAO - IBCAO color map
+%
+%   Usage:
+%      map = ibcap(nsea,nland)
+%
+%Downloaded from http://soliton.vm.bytemark.co.uk/pub/cpt-city/ibcao
+
+Jsea = [ ...
+0.18039 0.29020 0.57255
+0.18039 0.29020 0.57255
+0.05882 0.44314 0.65490
+0.05882 0.44314 0.65490
+0.02745 0.49804 0.73725
+0.02745 0.49804 0.73725
+0.01176 0.54510 0.78824
+0.01176 0.54510 0.78824
+0.00784 0.63529 0.83922
+0.00784 0.63529 0.83922
+0.06667 0.71765 0.86667
+0.06667 0.71765 0.86667
+0.17647 0.75294 1.00000
+0.17647 0.75294 1.00000
+0.23529 0.76471 0.85882
+0.23529 0.76471 0.85882
+0.24314 0.76471 0.83922
+0.24314 0.76471 0.83922
+0.25882 0.76078 0.81176
+0.25882 0.76078 0.81176
+0.27451 0.76078 0.76078
+0.27451 0.76078 0.76078
+0.41961 0.78431 0.74902
+0.41961 0.78431 0.74902
+0.60000 0.83137 0.74902
+0.60000 0.83137 0.74902
+];
+
+Jland = [ ...
+0.85098 0.84314 0.30588
+0.85098 0.84314 0.30588
+0.93333 0.89020 0.41961
+0.93333 0.89020 0.41961
+0.93725 0.80784 0.35686
+0.93725 0.80784 0.35686
+0.89804 0.74510 0.31765
+0.89804 0.74510 0.31765
+0.85098 0.63922 0.21961
+0.85098 0.63922 0.21961
+0.75686 0.55294 0.22353
+0.75686 0.55294 0.22353
+0.71765 0.50980 0.22353
+0.71765 0.50980 0.22353
+0.68627 0.48235 0.21961
+0.68627 0.48235 0.21961
+0.65490 0.45882 0.21569
+0.65490 0.45882 0.21569
+0.58824 0.39608 0.20392
+0.58824 0.39608 0.20392
+1.00000 1.00000 1.00000
+];
+
+lsea = length(Jsea);
+ysea = interp1(1:lsea,Jsea,linspace(1,lsea,nsea),'*linear');
+
+lland = length(Jland);
+yland = interp1(1:lland,Jland,linspace(1,lland,nland),'*linear');
+
+map=[ysea;yland];
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/landcolor.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/landcolor.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/landcolor.m	(revision 21239)
@@ -0,0 +1,77 @@
+function y = landcolor(n)
+%LANDCOLOR Land colormap
+%
+%	Author: Francois Beauducel <beauducel@ipgp.fr>
+%	$Revision: 1.0.0 $   $Date: 2012/05/17 11:22:44 $
+
+J = [ ...
+0.095678 0.53427 0.21682 
+0.15785 0.5979 0.23274 
+0.21286 0.64673 0.2514 
+0.26411 0.68789 0.27268 
+0.32959 0.72416 0.31308 
+0.39794 0.75695 0.36038 
+0.46153 0.7871 0.40624 
+0.52108 0.81516 0.45135 
+0.57702 0.84152 0.49547 
+0.62973 0.86645 0.53891 
+0.67946 0.89016 0.58187 
+0.72647 0.91282 0.62427 
+0.77095 0.93455 0.66619 
+0.81306 0.95546 0.70772 
+0.85292 0.97563 0.7489 
+0.89066 0.99514 0.78976 
+0.88379 0.98595 0.77038 
+0.86389 0.96758 0.73236 
+0.84615 0.94972 0.69623 
+0.8303 0.93233 0.66186 
+0.81612 0.91536 0.6291 
+0.80341 0.8988 0.59784 
+0.79201 0.8826 0.56795 
+0.78191 0.86676 0.53946 
+0.7729 0.85123 0.51224 
+0.76479 0.83602 0.48615 
+0.75747 0.8211 0.46111 
+0.75084 0.80645 0.43704 
+0.74506 0.79206 0.41414 
+0.73981 0.77792 0.39211 
+0.73501 0.76401 0.37089 
+0.73068 0.75033 0.35052 
+0.72683 0.73685 0.33106 
+0.72042 0.72074 0.31228 
+0.71032 0.70085 0.29417 
+0.69761 0.67821 0.27694 
+0.68489 0.65558 0.26026 
+0.67235 0.63313 0.24418 
+0.65997 0.61082 0.22889 
+0.64775 0.58874 0.21406 
+0.63568 0.56689 0.19983 
+0.62376 0.54527 0.18622 
+0.61197 0.52391 0.17299 
+0.60033 0.50283 0.16046 
+0.58881 0.48203 0.14832 
+0.57742 0.46151 0.13667 
+0.56616 0.44133 0.12555 
+0.55502 0.4214 0.11472 
+0.54398 0.4019 0.10456 
+0.53306 0.38266 0.094633 
+0.52226 0.36382 0.085242 
+0.51155 0.3453 0.076179 
+0.50095 0.32714 0.067515 
+0.49045 0.30938 0.059259 
+0.48005 0.29193 0.051294 
+0.46973 0.27495 0.043796 
+0.45951 0.25823 0.0365 
+0.44938 0.24206 0.029715 
+0.43934 0.22609 0.023063 
+0.42938 0.21074 0.016949 
+0.41951 0.19556 0.010917 
+0.40971 0.18105 0.0054326 
+0.4 0.16667 0 
+];
+
+l = length(J);
+if nargin < 1
+	n = 256;
+end
+y = interp1(1:l,J,linspace(1,l,n),'*linear');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/lbmap.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/lbmap.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/lbmap.m	(revision 21239)
@@ -0,0 +1,124 @@
+function map = lbmap(n,scheme)
+%LBMAP Returns specified Light-Bertlein colormap.
+%
+%   LBMAP(N,SCHEME) returns an Nx3 colormap. SCHEME can be one of the
+%   following strings:
+%
+%       'Blue'       Single-hue progression to purlish-blue (default)
+%       'BlueGray'   Diverging progression from blue to gray
+%       'BrownBlue'  Orange-white-purple diverging scheme
+%       'RedBlue'    Modified spectral scheme
+%
+%   If N is not specified, the size of the colormap is determined by the
+%   current figure. If no figure exists, MATLAB creates one.
+%
+%Example 1: 7-color single-hue blue (default)
+%   load penny
+%   imagesc(P)
+%   colormap(lbmap(7))
+%   colorbar
+%
+%Example 2: 11-color modified spectrum
+%   load penny
+%   imagesc(P)
+%   colormap(lbmap(11,'RedBlue'))
+%   colorbar
+%
+%   See also HSV, GRAY, HOT, BONE, COPPER, PINK, FLAG, COLORMAP, RGBPLOT.
+
+% Reference:
+% A. Light & P.J. Bartlein, "The End of the Rainbow? Color Schemes for
+% Improved Data Graphics," Eos,Vol. 85, No. 40, 5 October 2004.
+% http://geography.uoregon.edu/datagraphics/EOS/Light&Bartlein_EOS2004.pdf
+
+% Copyright 2007-2010 The MathWorks, Inc.
+
+%defensive programming
+error(nargchk(0,2,nargin))
+error(nargoutchk(0,1,nargout))
+
+%defaults
+if nargin<2
+	scheme = 'Blue';
+end
+if nargin<1
+	n = size(get(gcf,'colormap'),1);
+end
+
+%valid schemes
+switch lower(scheme)
+	case 'blue'
+		baseMap = BlueMap;
+	case 'bluegray'
+		baseMap = BlueGrayMap;
+	case 'brownblue'
+		baseMap = BrownBlueMap;
+	case 'redblue'
+		baseMap = RedBlueMap;
+	case 'bluered'
+		baseMap = BlueRedMap;
+	otherwise
+		error(['Invalid scheme ' scheme])
+	end
+	idx1 = linspace(0,1,size(baseMap,1));
+	idx2 = linspace(0,1,n);
+	map = interp1(idx1,baseMap,idx2);
+
+function baseMap = BlueMap
+	baseMap = [243 246 248;
+	224 232 240;
+	171 209 236;
+	115 180 224;
+	35 157 213;
+	0 142 205;
+	0 122 192]/255;
+
+function baseMap = BlueGrayMap
+	%DivergingBlueGray
+	baseMap = [  0 170 227;
+	53 196 238;
+	133 212 234;
+	190 230 242;
+	217 224 230;
+	146 161 170;
+	109 122 129;
+	65  79  81]/255;
+
+function baseMap = BrownBlueMap
+	baseMap = [144 100  44;
+	187 120  54;
+	225 146  65;
+	248 184 139;
+	244 218 200;
+	241 244 245;
+	207 226 240;
+	160 190 225;
+	109 153 206;
+	70  99 174;
+	24  79 162]/255;
+
+function baseMap = RedBlueMap
+	baseMap = [175  53  71;
+	216  82  88;
+	239 133 122;
+	245 177 139;
+	249 216 168;
+	242 238 197;
+	216 236 241;
+	154 217 238;
+	68 199 239;
+	0 170 226;
+	0 116 188]/255;
+
+function baseMap = BlueRedMap
+	baseMap = [0 116 188;
+	0 170 226;
+	68 199 239;
+	154 217 238;
+	216 236 241;
+	242 238 197;
+	249 216 168;
+	245 177 139;
+	239 133 122;
+	216  82  88;
+	175  53  71]/255;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/seacolor.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/seacolor.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/colormaps/seacolor.m	(revision 21239)
@@ -0,0 +1,57 @@
+function y = seacolor(n)
+%SEACOLOR Sea colormap adapted from NGDC ETOPO1
+%
+%	Author: Francois Beauducel <beauducel@ipgp.fr>
+
+J = [ ...
+    0.0392         0    0.4745
+    0.1020         0    0.5373
+    0.1020         0    0.5373
+    0.1490         0    0.5961
+    0.1490         0    0.5961
+    0.1059    0.0118    0.6510
+    0.1059    0.0118    0.6510
+    0.0627    0.0235    0.7059
+    0.0627    0.0235    0.7059
+    0.0196    0.0353    0.7569
+    0.0196    0.0353    0.7569
+         0    0.0549    0.7961
+         0    0.0549    0.7961
+         0    0.0863    0.8235
+         0    0.0863    0.8235
+         0    0.1176    0.8471
+         0    0.1176    0.8471
+         0    0.1529    0.8745
+         0    0.1529    0.8745
+    0.0471    0.2667    0.9059
+    0.0471    0.2667    0.9059
+    0.1020    0.4000    0.9412
+    0.1020    0.4000    0.9412
+    0.0745    0.4588    0.9569
+    0.0745    0.4588    0.9569
+    0.0549    0.5216    0.9765
+    0.0549    0.5216    0.9765
+    0.0824    0.6196    0.9882
+    0.0824    0.6196    0.9882
+    0.1176    0.6980    1.0000
+    0.1176    0.6980    1.0000
+    0.1686    0.7294    1.0000
+    0.1686    0.7294    1.0000
+    0.2157    0.7569    1.0000
+    0.2157    0.7569    1.0000
+    0.2549    0.7843    1.0000
+    0.2549    0.7843    1.0000
+    0.3098    0.8235    1.0000
+    0.3098    0.8235    1.0000
+    0.3686    0.8745    1.0000
+    0.3686    0.8745    1.0000
+    0.5412    0.8902    1.0000
+    0.5412    0.8902    1.0000
+    0.7373    0.9020    1.0000
+];
+
+l = length(J);
+if nargin < 1
+	n = 256;
+end
+y = interp1(1:l,J,linspace(1,l,n),'*linear');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/curvedarrow.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/curvedarrow.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/curvedarrow.m	(revision 21239)
@@ -0,0 +1,76 @@
+function curvedarrow(centerx,centery,distance,angle,secondangle,varargin)
+%CURVEDARROW - plot curved arrow, where curvature center is on (centerx,centery), radius is 'distance', 
+%   and angle determines arc length (angle in degrees). secondangle determines by how much the arc 
+%   generated is rotated along the [0,0,1] z axis.30,
+%
+%   Usage:
+%      curevedarrow(x1,y1,r,30,30,options)
+%      where options is a lit of paired arguments of string OR enums
+%      options can be: 
+%            'ratio': default .5 (ratio headarrow/length)
+%            'widthratio': default is 1/10 of length
+%            'width': if you want to specify an absolute width
+
+	%recover options
+	options=pairoptions(varargin{:});
+	ratio=getfieldvalue(options,'ratio',.1);
+	arrowlength=getfieldvalue(options,'arrowlength',1);
+	color=getfieldvalue(options,'color','k');
+
+	%transform angle in radians
+	angle=angle/180*pi;
+	nsteps=10;
+
+	%compute some values out of (x1,y1) and (x2,y2)
+	length=distance*angle;
+
+	if exist(options,'widthratio'),
+		widthratio=getfieldvalue(options,'widthratio');
+		width=length*widthratio;
+	else if exist(options,'width'),
+		width=getfieldvalue(options,'width');
+	else 
+		widthratio=.1;
+		width=length*widthratio;
+	end
+
+	%buidl the arrow itself: 
+	A=[centerx+distance, centery];
+	B=[centerx+distance+width, centery];
+	BC=[centerx+cos(0:angle/nsteps:angle)*(distance+width); centery+sin(0:angle/nsteps:angle)*(distance+width)]';
+	C=[centerx+cos(angle)*(distance+width), centery+sin(angle)*(distance+width)];
+	D=[centerx+cos(angle)*(distance), centery+sin(angle)*(distance)];
+	DA=[centerx+cos(angle:-angle/nsteps:0)*(distance); centery+sin(angle:-angle/nsteps:0)*(distance)]';
+
+	%Plot arrow
+	hold on
+	p1=patch([A(1) B(1) BC(:,1)' C(1) D(1) DA(:,1)' ],[A(2) B(2) BC(:,2)' C(2) D(2) DA(:,2)'],color);
+	set(p1,'EdgeColor',color); set(p1,'FaceColor',color);
+
+	%Build arrowhead 
+	E=D+2/3*(D-C);
+	F=C+2/3*(C-D);
+
+	n=(F-E)/norm(F-E,2);
+	m=[-n(2) n(1)];
+	if(angle<0)
+		m=-m;
+	end
+
+	if exist(options,'arrowlength'),
+		d=arrowlength;
+	else
+		d=abs((distance*angle)*ratio);
+	end
+
+	%G is d distance from middle of E and F: 
+	G=(E+F)/2+d*m;
+
+	p2=patch([E(1) F(1) G(1)],[E(2) F(2) G(2)],color);
+	set(p2,'EdgeColor',color); set(p2,'FaceColor',color);
+
+	%now rotate our arrow: 
+	rotate(p1,[0 0  1],secondangle);
+	rotate(p2,[0 0 1],secondangle);
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/export_gl.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/export_gl.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/export_gl.m	(revision 21239)
@@ -0,0 +1,117 @@
+function export_gl(md,varargin)
+
+	templist=plotoptions(varargin{:}); 
+	optionslist=templist.list;
+	options=optionslist{1};
+	options=checkplotoptions(md,options);
+
+	%Setup unique directory in present dir: 
+	directory=getfieldvalue(options,'directory','./');
+	databasename=getfieldvalue(options,'database','webgl');
+
+	%scaling factor: 
+	scaling_factor=getfieldvalue(options,'scaling_factor',50);
+
+	%Deal with title: 
+	if exist(options,'title')
+		title=getfieldvalue(options,'title');
+	else
+		title='';
+	end
+
+	%initialize model: 
+	model.title=title;
+	model.initialZoomFactor=getfieldvalue(options,'zoom',-.25);
+
+	%Deal with contour {{{
+
+	contour_lat1=md.mesh.lat(md.mesh.segments(:,1));
+	contour_lat2=md.mesh.lat(md.mesh.segments(:,2));
+	contour_long1=md.mesh.long(md.mesh.segments(:,1));
+	contour_long2=md.mesh.long(md.mesh.segments(:,2));
+	contour_surface1=md.geometry.surface(md.mesh.segments(:,1));
+	contour_surface2=md.geometry.surface(md.mesh.segments(:,2));
+
+	R1=6371000*ones(length(contour_surface1),1)+scaling_factor*contour_surface1;
+	R2=6371000*ones(length(contour_surface2),1)+scaling_factor*contour_surface2;
+
+	contourx1 = R1 .* cosd(contour_lat1) .* cosd(contour_long1);
+	contoury1 = R1 .* cosd(contour_lat1) .* sind(contour_long1);
+	contourz1 = R1 .* sind(contour_lat1);
+	
+	contourx2 = R2 .* cosd(contour_lat2) .* cosd(contour_long2);
+	contoury2 = R2 .* cosd(contour_lat2) .* sind(contour_long2);
+	contourz2 = R2 .* sind(contour_lat2);
+
+
+	model.contourx1=contourx1;
+	model.contoury1=contoury1;
+	model.contourz1=contourz1;
+	model.contourx2=contourx2;
+	model.contoury2=contoury2;
+	model.contourz2=contourz2;
+
+
+	%}}}
+%Deal with mesh and results {{{
+	
+	
+	lat=md.mesh.lat;
+	long=md.mesh.long;
+	surface=md.geometry.surface;
+	numberofelements=md.mesh.numberofelements;
+	numberofvertices=md.mesh.numberofvertices;
+
+	R=6371000*ones(numberofvertices,1)+scaling_factor*surface;
+
+	x = R .* cosd(lat) .* cosd(long);
+	y = R .* cosd(lat) .* sind(long);
+	z = R .* sind(lat);
+
+
+	%Deal with triangulation: 
+	model.index=md.mesh.elements;
+	model.x=x;
+	model.y=y;
+	model.z=z;
+	model.surface=surface;
+	
+	%Deal with data: 
+	results=struct([]);
+	for i=1:length(optionslist),
+		options=optionslist{i}; options=checkplotoptions(md,options);
+		data=getfieldvalue(options,'data');
+		results(i).data=data;
+		results(i).caxis=getfieldvalue(options,'caxis',[min(data(:)) max(data(:))]);
+
+		label=getfieldvalue(options,'label','');
+		if strcmpi(label,''),
+			%create generic label: 
+			label=['data' num2str(i)];
+		end
+		results(i).label=label;
+
+		shortlabel=getfieldvalue(options,'shortlabel','');
+		if strcmpi(shortlabel,''),
+			%create generic short label: 
+			shortlabel=['data' num2str(i)];
+		end
+		results(i).shortlabel=shortlabel;
+		
+		if size(data,2)>1,
+			time_range=getfieldvalue(options,'time_range',[0 100]);
+			results(i).time_range=time_range;
+		end
+
+		unit=getfieldvalue(options,'unit','');
+		if strcmpi(unit,''),
+			%create generic unit: 
+			unit='SI';
+		end
+		results(i).unit=unit;
+	end
+	model.results=results;
+	
+	%Write model to javascript database file: 
+	writejsfile([directory databasename '.js'],model,databasename);
+%}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/export_gl.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/export_gl.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/export_gl.py	(revision 21239)
@@ -0,0 +1,124 @@
+from plotoptions import plotoptions
+from checkplotoptions import checkplotoptions
+from model import model
+import numpy as np
+import math
+from writejsfile import writejsfile
+
+def export_gl(md,*varargin):
+	class ResultObj(object):
+	    def __getattr__(self, attr):
+		return self.__dict__.get(attr)
+
+	print ('getting options')
+	templist=plotoptions(varargin); 
+	optionslist=templist.list;
+	options=optionslist[1];
+	options=checkplotoptions(md,options);
+	#print (templist,options)
+	#templist contains options 0-3. Use in the future to rework.
+	
+	#Setup unique directory in present dir: 
+	print ('setting directory')
+	directory=optionslist[0].getfieldvalue('directory');
+	databasename=optionslist[0].getfieldvalue('database');
+	
+	#scaling factor: 
+	print ('setting scaling factor')
+	scaling_factor=optionslist[0].getfieldvalue('scaling_factor');
+
+	#Deal with title: 
+	print ('setting title')
+	if optionslist[0].exist('title'):
+		title=optionslist[0].getfieldvalue('title');
+	else:
+		title='';
+
+	#initialize model: 
+	print ('initializing model')
+	model.title=title;
+	model.initialZoomFactor=options.getfieldvalue('zoom',-.25);
+
+	#Deal with contour {{{
+	print ('getting contour')
+	print (md.mesh.segments)
+	segmenets0 = map(lambda s: s - 1, md.mesh.segments[:,0]);
+	segmenets1 = map(lambda s: s - 1, md.mesh.segments[:,1]);
+	
+	contour_lat1=md.mesh.lat.take(segmenets0)
+	contour_lat2=md.mesh.lat.take(segmenets1);
+	contour_long1=md.mesh.long.take(segmenets0);
+	contour_long2=md.mesh.long.take(segmenets1);
+	contour_surface1=md.geometry.surface.take(segmenets0);
+	contour_surface2=md.geometry.surface.take(segmenets1);
+
+	R1=6371000*np.ones(len(contour_surface1))+scaling_factor*contour_surface1;
+	R2=6371000*np.ones(len(contour_surface2))+scaling_factor*contour_surface2;
+
+	model.contourx1 = map(lambda r, lat, long: r * math.cos(math.radians(lat)) * math.cos(math.radians(long)), R1, contour_lat1, contour_long1);
+	model.contoury1 = map(lambda r, lat, long: r * math.cos(math.radians(lat)) * math.sin(math.radians(long)), R1, contour_lat1, contour_long1);
+	model.contourz1 = map(lambda r, lat: r * math.sin(math.radians(lat)), R1, contour_lat1);
+	
+	model.contourx2 = map(lambda r, lat, long: r * math.cos(math.radians(lat)) * math.cos(math.radians(long)), R2, contour_lat2, contour_long2);
+	model.contoury2 = map(lambda r, lat, long: r * math.cos(math.radians(lat)) * math.sin(math.radians(long)), R2, contour_lat2, contour_long2);
+	model.contourz2 = map(lambda r, lat: r * math.sin(math.radians(lat)), R2, contour_lat2);
+
+	#}}}
+	#Deal with mesh and results {{{
+	print ('getting mesh')
+	surface=md.geometry.surface.flatten();
+	numberofelements=md.mesh.numberofelements;
+	numberofvertices=md.mesh.numberofvertices;
+	R=6371000*np.ones(len(md.mesh.lat))+scaling_factor*surface;
+	
+	x = map(lambda r, lat, long: r * math.cos(math.radians(lat)) * math.cos(math.radians(long)), R, md.mesh.lat,md.mesh.long);
+	y = map(lambda r, lat, long: r * math.cos(math.radians(lat)) * math.sin(math.radians(long)), R, md.mesh.lat,md.mesh.long);
+	z = map(lambda r, lat: r * math.sin(math.radians(lat)), R, md.mesh.lat);
+	
+	#Deal with triangulation: 
+	print('getting triangulation')
+	model.index=md.mesh.elements;
+	model.x=x;
+	model.y=y;
+	model.z=z;
+	model.surface=surface;
+	
+	results = []
+	print(optionslist)	
+	#Deal with data: 
+	print('getting data')
+	for i in xrange(0,len(optionslist)):
+		options=optionslist[i]; 
+		options=checkplotoptions(md,options);
+		data=options.getfieldvalue('data').flatten();
+		results.append(ResultObj())
+		results[i].data=data;
+		results[i].caxis=options.getfieldvalue('caxis',[min(data), max(data)]);
+
+		label=options.getfieldvalue('label','');
+		if label=='':
+			#create generic label: 
+			label=['data', str(i)];
+		results[i].label=label;
+
+		shortlabel=options.getfieldvalue('shortlabel','');
+		if shortlabel=='':
+			#create generic short label: 
+			shortlabel=['data', str(i)];
+		results[i].shortlabel=shortlabel;
+
+		if type(data[2])!=np.float64:
+			time_range=options.getfieldvalue('time_range',[0, 100]);
+			results[i].time_range=time_range;
+
+		unit=options.getfieldvalue('unit','');
+		if unit=='':
+			#create generic unit: 
+			unit='SI';
+		results[i].unit=unit;
+	model.results=results;
+	
+	#Write model to javascript database file: 
+	print('writing to file')
+	writejsfile(directory + databasename + '.js',model,databasename);
+#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/gauge.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/gauge.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/gauge.js	(revision 21239)
@@ -0,0 +1,54 @@
+/*
+	References:	https://bernii.github.io/gauge.js/
+*/
+function gaugeInit(){
+
+	// Convert arguments to options.
+	var args 		= Array.prototype.slice.call(arguments);
+	var options 	= new pairoptions(args);
+
+	// Recover option values.
+	var canvasId	= options.getfieldvalue('canvasId', 'sim-gauge-canvas');
+	var textFieldId	= options.getfieldvalue('textFieldId', 'gauge-text');
+	var	value 		= options.getfieldvalue('value', 0);
+	var max 		= options.getfieldvalue('max', 22);
+	var colors 		= options.getfieldvalue('colors', [[0.0, "#FFFF00"],
+													   [0.50, "#FF8000"],
+													   [1.0, "#FF0000"]]);
+	
+	// Construct associative array of options.
+	var opts = {
+		lines: 				12, 	// The number of lines to draw
+		angle: 				0,		// The length of each line
+		lineWidth: 			0.39,	// The line thickness
+		
+		pointer: {
+			length: 			0, 			// The radius of the inner circle
+			strokeWidth: 		0, 			// The rotation offset
+			color: 				'#000000' 	// Fill color
+		},
+		
+		limitMax: 			'false',	// If true, the pointer will not go past the end of the gauge
+		percentColors: 		colors,
+		strokeColor: 		'#E0E0E0',	// to see which ones work best for you
+		generateGradient: 	true
+	};
+	
+	// Create new gauge.
+	var newGauge = new Gauge(document.getElementById(canvasId)).setOptions(opts);
+	
+	// Bind text field to gauge.
+	newGauge.setTextField(document.getElementById(textFieldId));
+	
+	newGauge.textField.render = function(newGauge){
+    	return this.el.innerHTML = newGauge.displayedValue.toFixed(0);
+    };
+    
+	newGauge.maxValue 			= max;
+	newGauge.animationSpeed 	= 1;
+	newGauge.set(1);		// Somehow this prevents pointer from rendering on initialization.
+	newGauge.set(value);	// set actual value
+	
+	return newGauge;
+}
+/* exported gaugeInit, refreshErrorMessages */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/googlemaps.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/googlemaps.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/googlemaps.m	(revision 21239)
@@ -0,0 +1,232 @@
+function md = googlemaps(md,ullat,ullon,lrlat,lrlon,varargin)
+%GOOGLEMAPS - Extract image from Google maps for given region
+%
+%   Usage:
+%       md = googlemaps(md)
+%       md = googlemaps(md,ullat,ullon,lrlat,lrlon)
+%       md = googlemaps(md,ullat,ullon,lrlat,lrlon,options)
+%
+%   - ullat,ullon: Upper Left corner latitude and longitude
+%   - lrlat,lrlon: Lower Right corner latitude and longitude
+%
+%   Available options:
+%      - zoom: zoom level, between 1 and 21 (default dynamically calculated)
+
+%Parse inputs
+if nargin<=5,
+	options=pairoptions;
+else
+	options=varargin{:};
+	if ~isa(options,'pairoptions'),
+		options=pairoptions(varargin{:});
+	end
+end
+
+if md.mesh.epsg==0,
+	error('md.mesh.epsg not defined');
+end
+if nargin==1,
+	%Get xlim and ylim (used to extract Google maps image)
+	xlim=getfieldvalue(options,'xlim',[min(md.mesh.x) max(md.mesh.x)]);
+	ylim=getfieldvalue(options,'ylim',[min(md.mesh.y) max(md.mesh.y)]);
+	if md.mesh.epsg==3413,
+		[latlist lonlist]= xy2ll(...
+			[linspace(xlim(1),xlim(2),100) linspace(xlim(2),xlim(2),100) linspace(xlim(2),xlim(1),100) linspace(xlim(1),xlim(1),100)],...
+			[linspace(ylim(1),ylim(1),100) linspace(ylim(1),ylim(2),100) linspace(ylim(2),ylim(2),100) linspace(ylim(2),ylim(1),100)],...
+			+1,45,70);
+	elseif md.mesh.epsg==3031,
+		[latlist lonlist]= xy2ll(...
+			[linspace(xlim(1),xlim(2),100) linspace(xlim(2),xlim(2),100) linspace(xlim(2),xlim(1),100) linspace(xlim(1),xlim(1),100)],...
+			[linspace(ylim(1),ylim(1),100) linspace(ylim(1),ylim(2),100) linspace(ylim(2),ylim(2),100) linspace(ylim(2),ylim(1),100)],...
+			-1,0,71);
+	elseif md.mesh.epsg==26906, %UTM 6V Columbia Glacier Alaska
+		[latlist lonlist]= utm2ll(...
+			[linspace(xlim(1),xlim(2),100) linspace(xlim(2),xlim(2),100) linspace(xlim(2),xlim(1),100) linspace(xlim(1),xlim(1),100)],...
+			[linspace(ylim(1),ylim(1),100) linspace(ylim(1),ylim(2),100) linspace(ylim(2),ylim(2),100) linspace(ylim(2),ylim(1),100)],...
+			6);
+	elseif numel(md.mesh.lat)==numel(md.mesh.x),
+		latlist = md.mesh.lat; %That might work?
+		lonlist = md.mesh.long;
+	else
+		error('EPSG code not supported yet, and no lat long found in md.mesh');
+	end
+
+	%Image corners in lat/long
+	ullat = max(latlist); ullon = min(lonlist);
+	lrlat = min(latlist); lrlon = max(lonlist);
+elseif nargin>1 & nargin<5,
+	help googlemaps
+	error('Wrong usage');
+end
+
+%Get region specific projection parameters
+EPSGgoogle = 'EPSG:3785';   % Mercator       http://www.spatialreference.org/ref/epsg/3785/
+EPSGlocal  = ['EPSG:' num2str(md.mesh.epsg)];
+
+%Find optimal zoom
+if exist(options,'zoom'),
+	zoom = getfieldvalue(options,'zoom');
+else
+	zoom = optimalzoom(ullat,ullon,lrlat,lrlon);
+	display(['googlemaps info: default zoom level ' num2str(zoom)]);
+end
+scale   = 1;
+maxsize = 640;
+bottom  = 50;
+
+%convert all these coordinates to pixels
+[ulx, uly]= latlontopixels(ullat, ullon, zoom);
+[lrx, lry]= latlontopixels(lrlat, lrlon, zoom);
+
+%calculate total pixel dimensions of final image
+dx = lrx - ulx;
+dy = uly - lry;
+
+%calculate rows and columns
+cols = ceil(dx/maxsize);
+rows = ceil(dy/(maxsize-bottom));
+
+%calculate pixel dimensions of each small image
+width   = ceil(dx/cols);
+height  = ceil(dy/rows);
+heightplus = height + bottom;
+
+%Initialize final image
+final = zeros(floor(dy),floor(dx),3);%RGB image
+for x=0:cols-1,
+	for y=0:rows-1,
+		dxn = width  * (0.5 + x);
+		dyn = height * (0.5 + y);
+		[latn, lonn] = pixelstolatlon(ulx + dxn, uly - dyn - bottom/2, zoom);
+		position = [num2str(latn) ',' num2str(lonn)];
+		disp(['Google Earth tile: ' num2str(x) '/' num2str(cols-1) ' ' num2str(y) '/' num2str(rows-1) ' (center: ' position ')']);
+		%Google maps API: http://developers.google.com/maps/documentation/staticmaps/
+		params = [...
+			'center=' position ...
+			'&zoom=' num2str(zoom)...
+			'&size=' num2str(width) 'x' num2str(heightplus)...
+			'&maptype=satellite'...
+			'&sensor=false'...
+			'&scale=' num2str(scale)];
+		url = ['http://maps.google.com/maps/api/staticmap?' params];
+		[X, map]=imread(url,'png');
+		X=ind2rgb(X,map);
+		indx1 = floor(x*width)+1;
+		indx2 = min(floor(dx),floor(x*width)+size(X,2));
+		indy1 = floor(y*height)+1;
+		indy2 = min(floor(dy),floor(y*height)+size(X,1));
+		final(indy1:indy2,indx1:indx2,:)=X(1:indy2-indy1+1,1:indx2-indx1+1,:);
+	end
+end
+
+%Write image
+imwrite(final,'temp.png','png')
+[ulmx ulmy]=ll2mercator(ullat,ullon);
+[lrmx lrmy]=ll2mercator(lrlat,lrlon);
+
+%Create Geotiff for Mercator projection 
+[status,result] = system(['gdal_translate -of Gtiff -co "tfw=yes"  -a_ullr '...
+	num2str(ulmx,'%15.8f') ' ' num2str(ulmy,'%15.8f') ' ' num2str(lrmx,'%15.8f') ' ' num2str(lrmy,'%15.8f')...
+	' -a_srs "' EPSGgoogle '" "temp.png" "temp.tiff"']);
+delete('temp.png');
+
+%If not gdal, exit
+if status~=0,
+	disp('googlemaps info: gdal not found or not working properly, the Google image will not be transformed');
+	[gX gY]=meshgrid(ulx:ulx+size(final,2)-1,uly:-1:uly-size(final,1)+1);
+	[LAT LON]=pixelstolatlon(gX,gY, zoom);
+	if md.mesh.epsg==3413,
+		[X Y]=ll2xy(LAT,LON,+1,45,70);
+	elseif md.mesh.epsg==3031,
+		[X Y]=ll2xy(LAT,LON,-1,0,71);
+	else
+		error('EPSG code not supported yet');
+	end
+	md.radaroverlay.pwr=final;
+	md.radaroverlay.x=X;
+	md.radaroverlay.y=Y;
+	return
+end
+
+%reproject from mercator (EPSG:3785) to UPS Ant (EPSG:3031)
+[status,result] = system(['gdalwarp  -s_srs ' EPSGgoogle ' -t_srs ' EPSGlocal ' temp.tiff temp2.tiff']);
+delete('temp.tiff','temp.tfw');
+
+%If previous command failed, exit
+if ~isempty(strfind(result,'ERROR')),
+	disp(' ');disp('googlemaps info: gdal not working properly (missing proj.4 library?), Google image will not be transformed');
+	disp(result);
+	[gX gY]=meshgrid(ulx:ulx+size(final,2)-1,uly:-1:uly-size(final,1)+1);
+	[LAT LON]=pixelstolatlon(gX,gY, zoom);
+	if md.mesh.epsg==3413,
+		[X Y]=ll2xy(LAT,LON,+1,45,70);
+	elseif md.mesh.epsg==3031,
+		[X Y]=ll2xy(LAT,LON,-1,0,71);
+	else
+		error('EPSG code not supported yet');
+	end
+	md.radaroverlay.pwr=final;
+	md.radaroverlay.x=X;
+	md.radaroverlay.y=Y;
+	return
+end
+
+%Put everything in model
+[status output]=system('gdalinfo temp2.tiff | grep "Upper Left"');
+ul = sscanf(output,'Upper Left  (%f, %f)');
+[status output]=system('gdalinfo temp2.tiff | grep "Lower Right"');
+lr = sscanf(output,'Lower Right (%f, %f)');
+[status output]=system('gdalinfo temp2.tiff | grep "Size is"');
+si = sscanf(output,'Size is %i, %i');
+x_m=linspace(ul(1),lr(1),si(1));
+y_m=linspace(ul(2),lr(2),si(2)); %We need to reverse y_m because the image is read upside down by matlab
+final=imread('temp2.tiff');
+delete('temp2.tiff');
+
+md.radaroverlay.pwr=final;
+md.radaroverlay.x=x_m;
+md.radaroverlay.y=y_m;
+
+end
+function [px py]=latlontopixels(lat, lon, zoom),
+	EARTH_RADIUS = 6378137;
+	EQUATOR_CIRCUMFERENCE = 2 * pi * EARTH_RADIUS;
+	INITIAL_RESOLUTION = EQUATOR_CIRCUMFERENCE / 256.0;
+	ORIGIN_SHIFT = EQUATOR_CIRCUMFERENCE / 2.0;
+
+	[mx,my]=ll2mercator(lat,lon);
+	res = INITIAL_RESOLUTION / (2^zoom);
+	px = (mx + ORIGIN_SHIFT) / res;
+	py = (my + ORIGIN_SHIFT) / res;
+end
+
+function [lat lon]=pixelstolatlon(px, py, zoom),
+	EARTH_RADIUS = 6378137;
+	EQUATOR_CIRCUMFERENCE = 2 * pi * EARTH_RADIUS;
+	INITIAL_RESOLUTION = EQUATOR_CIRCUMFERENCE / 256.0;
+	ORIGIN_SHIFT = EQUATOR_CIRCUMFERENCE / 2.0;
+
+	res = INITIAL_RESOLUTION / (2^zoom);
+	mx = px * res - ORIGIN_SHIFT;
+	my = py * res - ORIGIN_SHIFT;
+	[lat lon] = mercator2ll(mx,my);
+end
+function  zoom = optimalzoom(ullat,ullon,lrlat,lrlon)
+
+	EARTH_RADIUS = 6378137;
+	EQUATOR_CIRCUMFERENCE = 2 * pi * EARTH_RADIUS;
+	INITIAL_RESOLUTION = EQUATOR_CIRCUMFERENCE / 256.0;
+
+	optimalsize = 1000; %Number of pixels in final image
+
+	[ulmx ulmy]=ll2mercator(ullat,ullon);
+	[lrmx lrmy]=ll2mercator(lrlat,lrlon);
+	distance = sqrt((lrmx-ulmx)^2 + (lrmy-ulmy)^2);
+
+	zoom1 = floor(log(INITIAL_RESOLUTION*optimalsize/(lrmx-ulmx))/log(2));
+	zoom2 = floor(log(INITIAL_RESOLUTION*optimalsize/(ulmy-lrmy))/log(2));
+
+	zoom=max(zoom1,zoom2);
+
+	zoom = min(max(1,zoom),21);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/kmlgridded.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/kmlgridded.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/kmlgridded.m	(revision 21239)
@@ -0,0 +1,145 @@
+function kmlgridded(md,data,varargin)
+
+%process options
+options=pairoptions(varargin{:});
+
+%process options
+options=changefieldvalue(options,'coord','latlon');
+
+%process mesh and data
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[data datatype]=processdata(md,data,options);
+
+%check is2d
+if ~is2d, 
+	error('buildgridded error message: gridded not supported for 3d meshes, project on a layer');
+end
+
+%Get xlim and ylim (used to extract radar image)
+xlim=[min(x) max(x)];
+ylim=[min(y) max(y)];
+post=getfieldvalue(options,'posting',diff(xlim)/1000);
+if(diff(xlim)/post>10000),
+	error(['posting too large']);
+end
+
+%Interpolating data on grid
+[x_m y_m data_grid]=InterpFromMeshToGrid(elements,x,y,data,xlim(1),ylim(2),post,post,round(diff(ylim)/post),round(diff(xlim)/post),NaN);
+if size(data_grid,1)<3 | size(data_grid,2)<3,
+	error('data_grid size too small, check posting and units');
+end
+pos=find(isinf(data_grid));
+if ~isempty(pos),
+	disp('Warning: removing Infs from vector (probably log(0)?)');
+	data_grid(pos)=NaN;
+end
+
+%Process data_grid: add white in NaN and correct caxis accordingly
+data_nan=find(isnan(data_grid));
+data_min=min(data_grid(:));
+data_max=max(data_grid(:));
+if exist(options,'caxis'),
+	caxis_opt=getfieldvalue(options,'caxis');
+	data_grid(find(data_grid<caxis_opt(1)))=caxis_opt(1);
+	data_grid(find(data_grid>caxis_opt(2)))=caxis_opt(2);
+	data_min=caxis_opt(1);
+	data_max=caxis_opt(2);
+end
+
+%Get colormap
+colorm = getcolormap(options);
+len    = size(colorm,1);
+ind = ceil((len-1)*(data_grid-data_min)/(data_max - data_min + eps) +1);
+ind(find(ind>len))=len;
+ind(find(ind<1)  )=1;
+ind(find(isnan(ind)))=1;
+image_rgb=zeros(size(data_grid,1),size(data_grid,2),3);
+r=colorm(:,1); image_rgb(:,:,1)=r(ind); clear r;
+g=colorm(:,2); image_rgb(:,:,2)=g(ind); clear g;
+b=colorm(:,3); image_rgb(:,:,3)=b(ind); clear b;
+
+%Deal with alpha
+alpha=getfieldvalue(options,'alpha',.8);
+alphaMatrix = alpha*ones(size(data_grid));
+alphaMatrix(data_nan) = 0;
+
+%write kml
+kmlfilename=getfieldvalue(options,'kmlfilename','tempfile.kml');
+kmlroot=getfieldvalue(options,'kmlroot','./');
+kmlimagename=getfieldvalue(options,'kmlimagename','tempimage');
+kmlresolution=getfieldvalue(options,'kmlresolution',1);
+kmlfolder=getfieldvalue(options,'kmlfolder','Ground Overlay');
+kmlfolderdescription=getfieldvalue(options,'kmlfolderdescription','');
+kmlgroundoverlayname=getfieldvalue(options,'kmlgroundoverlayname','ground overlay');
+kmlgroundoverlaydescription=getfieldvalue(options,'kmlgroundoverlaydescription','description');
+
+%write png
+imwrite(image_rgb,[kmlimagename '.png'],'png','alpha',alphaMatrix);
+clear image_rgb alphaMatrix
+
+%prepare colorbar
+iscolorbar=0;
+if strcmpi(getfieldvalue(options,'colorbar','on'),'on'),
+	X = linspace(0,1,len)';
+	Xlab = round(linspace(data_min,data_max,len+1));
+	html = ['<TABLE border=' num2str(1) ' bgcolor=#FFFFFF>',10];
+
+	for k=len:-1:1
+		f = (Xlab(k)-data_min)/(data_max-data_min);
+		if f<0, f=0; end
+		if f>1, f=1; end
+		polyColor(1,1) = interp1(X,colorm(:,1),f);
+		polyColor(1,2) = interp1(X,colorm(:,2),f);
+		polyColor(1,3) = interp1(X,colorm(:,3),f);
+		polyColorStr(1:2) = dec2hex(round(polyColor(1)*255),2);
+		polyColorStr(3:4) = dec2hex(round(polyColor(2)*255),2);
+		polyColorStr(5:6) = dec2hex(round(polyColor(3)*255),2);
+		html = [html,'<TR><TD width="15px" bgcolor=#',polyColorStr, '>&nbsp;</TD>','<TD bgcolor=#FFFFFF>'];
+		if k==1
+			html=[html,'&lt;= ',num2str(Xlab(k),'%g')];
+		elseif k==len
+			html=[html,'&gt;= ',num2str(Xlab(k),'%g')];
+		else
+			html=[html,num2str(Xlab(k),'%g'),' to ',num2str(Xlab(k+1),'%g'),'</TD>'];
+		end
+		html = [html,'</TR>',10];
+	end
+	html = [html,'</TABLE>'];
+	iscolorbar = 1;
+end
+
+%now write kml file
+fid=fopen([kmlroot '/' kmlfilename],'w');
+fprintf(fid,'%s\n','<?xml version="1.0" encoding="UTF-8"?>');
+fprintf(fid,'%s\n','<kml xmlns="http://earth.google.com/kml/2.1">');
+fprintf(fid,'%s\n','<Document>');
+fprintf(fid,'%s%s%s\n','<name>',kmlfilename,'</name>');
+if iscolorbar,
+	fprintf(fid,'<Placemark id="colorbar">\n');
+	fprintf(fid,'%s%s%s\n','<name>','click the icon to see the colorbar','</name>');
+	fprintf(fid,'%s%s%s\n','<description>','Ground overlay colorbar','</description>');
+	fprintf(fid,'<visibility>1</visibility>\n');
+	fprintf(fid,['<description>',10,'<![CDATA[' html ']]>',10,'</description>',10,'\n']);
+	fprintf(fid,['<Style><IconStyle><scale>1</scale><Icon><href>http://maps.google.com/mapfiles/kml/shapes/donut.png</href></Icon></IconStyle><ListStyle></ListStyle></Style><Point id="poly_colorbar">\n']);
+	fprintf(fid,'<altitudeMode>clampToGround</altitudeMode>\n');
+	fprintf(fid,'<extrude>1</extrude>\n');
+	fprintf(fid,'<tessellate>1</tessellate>\n');
+	fprintf(fid,'%s%g,%g%s\n','<coordinates>',max(x),mean(y),'</coordinates>');
+	fprintf(fid,'</Point>\n');
+	fprintf(fid,'</Placemark>\n');
+end
+fprintf(fid,'%s\n','<GroundOverlay id="groundoverlay">');
+fprintf(fid,'%s%s%s\n','<name>',kmlgroundoverlayname,'</name>');
+fprintf(fid,'%s\n','<description>',kmlgroundoverlaydescription,'</description>');
+fprintf(fid,'%s%s.%s%s\n','<Icon>',kmlimagename,'png','</Icon>');
+fprintf(fid,'%s\n','<LatLonBox>');
+fprintf(fid,'%s%f%s\n','<north>',max(y_m),'</north>');
+fprintf(fid,'%s%f%s\n','<south>',min(y_m),'</south>');
+fprintf(fid,'%s%f%s\n','<east>',max(x_m),'</east>');
+fprintf(fid,'%s%f%s\n','<west>',min(x_m),'</west>');
+fprintf(fid,'%s\n','<rotation>0</rotation>');
+fprintf(fid,'%s\n','</LatLonBox>');
+fprintf(fid,'%s\n','</GroundOverlay>');
+fprintf(fid,'%s\n','</Document>');
+fprintf(fid,'%s\n','</kml>');
+fclose(fid);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/kmlgroundoverlay.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/kmlgroundoverlay.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/kmlgroundoverlay.m	(revision 21239)
@@ -0,0 +1,62 @@
+function kmlgroundoverlay(md,options)
+%KMLGROUNDOVERLAY: create ground overlay image in kml format
+%
+%
+%    options: 
+%         kmlfilename
+%         imagename
+%
+%    Usage: 
+%         kmlgroundoverlay(md,'kmlfilename','temp.kml','imagename','greenland.jpeg');
+%
+
+%first figure out if lat and long were computed!
+if (isempty(md.mesh.lat) | isempty(md.mesh.long)),
+	error('kmlgroundoverlay error message: project x,y onto lat,long fields of model!');
+end
+
+%process kml options
+kmlfilename=getfieldvalue(options,'kmlfilename','tempfile.kml');
+kmlroot=getfieldvalue(options,'kmlroot','./');
+kmlimagename=getfieldvalue(options,'kmlimagename','tempimage');
+kmlimagetype=getfieldvalue(options,'kmlimagetype','png');
+kmlresolution=getfieldvalue(options,'kmlresolution',1);
+kmlfolder=getfieldvalue(options,'kmlfolder','Ground Overlay');
+kmlfolderdescription=getfieldvalue(options,'kmlfolderdescription','');
+kmlgroundoverlayname=getfieldvalue(options,'kmlgroundoverlayname','');
+kmlgroundoverlaydescription=getfieldvalue(options,'kmlgroundoverlaydescription','');
+
+%figure out  min and max for lat and long of this image:
+west=min(md.mesh.long);
+east=max(md.mesh.long);
+south=min(md.mesh.lat);
+north=max(md.mesh.lat);
+
+%print image at high resolution
+export_fig([kmlroot '/' kmlimagename],'-transparent','-zbuffer'); %zbuffer to avoid "Bad data returned by HARDCOPY. Not calling IMWRITE"
+%printmodel([kmlroot '/' kmlimagename],kmlimagetype,'trim','on','resolution',kmlresolution,'margin','off','frame','off');
+
+%now write kml file
+fid=fopen([kmlroot '/' kmlfilename],'w');
+
+fprintf(fid,'%s\n','<?xml version="1.0" encoding="UTF-8"?>');
+fprintf(fid,'%s\n','<kml xmlns="http://www.opengis.net/kml/2.2">');
+fprintf(fid,'%s\n','<Folder>');
+fprintf(fid,'%s%s%s\n','<name>',kmlfolder,'</name>');
+fprintf(fid,'%s%s%s\n','<description>',kmlfolderdescription,'</description>');
+fprintf(fid,'%s\n','<GroundOverlay>');
+fprintf(fid,'%s%s%s\n','<name>',kmlgroundoverlayname,'</name>');
+fprintf(fid,'%s\n','<description>',kmlgroundoverlaydescription,'</description>');
+fprintf(fid,'%s%s.%s%s\n','<Icon>',kmlimagename,kmlimagetype,'</Icon>');
+fprintf(fid,'%s\n','<LatLonBox>');
+fprintf(fid,'%s%f%s\n','<north>',north,'</north>');
+fprintf(fid,'%s%f%s\n','<south>',south,'</south>');
+fprintf(fid,'%s%f%s\n','<east>',east,'</east>');
+fprintf(fid,'%s%f%s\n','<west>',west,'</west>');
+fprintf(fid,'%s\n','<rotation>0</rotation>');
+fprintf(fid,'%s\n','</LatLonBox>');
+fprintf(fid,'%s\n','</GroundOverlay>');
+fprintf(fid,'%s\n','</Folder>');
+fprintf(fid,'%s\n','</kml>');
+
+fclose(fid);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/latlonoverlay.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/latlonoverlay.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/latlonoverlay.m	(revision 21239)
@@ -0,0 +1,148 @@
+function latlonoverlay(md,options)
+%LATLONOVERLAY - overlay latitude and longitude lines on current figure
+%
+%   latstep,lonstep, in latitude and longitude degreees, between two latitudinal, longitudinal profiles.
+%   color: [1 1 1] for example
+%   resolution: profile resolution ( in lat,lon degrees) 
+%   gap: gap (in meters) to plug lat,lon degree numbers;
+%
+%   Usage:
+%      latlonoverlay(options)
+
+%get options
+latlon=getfieldvalue(options,'latlon');
+numbering=getfieldvalue(options,'latlonnumbering','off');
+latlonclick=getfieldvalue(options,'latlonclick',0);
+fontsize=getfieldvalue(options,'fontsize',16);
+
+%recover arguments (set default parameters if needed)
+%1: latlon
+if ~iscell(latlon),
+	if ischar(latlon) & strcmpi(latlon,'on'),
+		%defaults
+		latstep=3; lonstep=3;
+		resolution=0.1;
+		color=[1 0 1];
+	else return; end
+else
+	if length(latlon)<2
+		error('latlonoverlay error message: at least 2 arguments are required, or use ''on'' option.');
+	end
+	if length(latlon)>3, color=latlon{4};      else color=[1 1 1]; end
+	if length(latlon)>2, resolution=latlon{3}; else resolution=0.1;end
+	latstep=latlon{1};
+	lonstep=latlon{2};
+end
+
+%2: numbering
+if ~iscell(numbering) & isnan(numbering),
+	numbering=false;
+else
+	if ~iscell(numbering),
+		if strcmpi(char(numbering),'on'),
+			%defaults
+			latgap=2; longap=2;
+			colornumber=color;
+			latangle=0; lonangle=0;
+			numbering=true;
+		else
+			numbering=false;
+		end
+	else
+		latgap=numbering{1}; longap=numbering{2};
+		colornumber=numbering{3};
+		latangle=numbering{4}; lonangle=numbering{5};
+		numbering=true;
+	end
+end
+
+%what are the x and y limits
+xlimits=getfieldvalue(options,'xlim',xlim);
+ylimits=getfieldvalue(options,'ylim',ylim);
+
+%lat
+for lat=-90:latstep:90
+	longitudes=0:resolution:360;
+	latitudes =lat*ones(size(longitudes));
+
+	if md.mesh.epsg==3413,
+		if lat<0, continue; end
+		[x,y]=ll2xy(latitudes,longitudes,+1,45,70);
+	elseif md.mesh.epsg==3031,
+		if lat>0, continue; end
+		[x,y]=ll2xy(latitudes,longitudes,-1, 0,71);
+	else error('field md.mesh.epsg not supported yet'); end
+
+	pos=find(x<=xlimits(2) & x>=xlimits(1) & y<=ylimits(2) & y>=ylimits(1));
+	if length(pos)<=1, continue; end
+	x=x(pos);y=y(pos);
+	l=line(x,y,'Color',color);
+
+	if numbering
+		ind=length(x)-2*latgap;
+		if (ind<=0), continue; end
+		xcorner=x(ind);            ycorner=y(ind);
+		xcorner2=x(max(ind-10,1)); ycorner2=y(max(ind-10,1));
+
+		if (xcorner>xlimits(1) & xcorner<xlimits(2) & ycorner>ylimits(1) & ycorner<ylimits(2)),
+			angle=mod((180)/pi*atan2((ycorner2-ycorner),(xcorner2-xcorner))+latangle,360);
+			if lat<0, label=[num2str(abs(lat)) '^{\circ} S'];
+			else      label=[num2str(abs(lat)) '^{\circ} N']; end
+			th=text(xcorner,ycorner,label);
+			set(th,'Color',colornumber,'Rotation',angle,'FontSize',fontsize,'HorizontalAlignment','center','VerticalAlignment','middle','Clipping','on');
+
+			%erase line and redraw it in two parts, to leave space for latitude number
+			delete(l);
+			line(x(1:ind-latgap),y(1:ind-latgap),'Color',color);hold on;
+			line(x(ind+latgap:end),y(ind+latgap:end),'Color',color);
+			set(gcf,'InvertHardcopy','off');
+		end
+
+	end
+end
+
+%lon
+for lon=-180:lonstep:180
+
+	if md.mesh.epsg==3413,
+		latitudes =0:resolution:90;
+		longitudes=lon*ones(size(latitudes));
+		[x,y]=ll2xy(latitudes,longitudes,+1,45,70);
+	elseif md.mesh.epsg==3031,
+		latitudes =-90:resolution:0;
+		longitudes=lon*ones(size(latitudes));
+		[x,y]=ll2xy(latitudes,longitudes,-1, 0,71);
+	else
+		error('field md.mesh.epsg not supported yet'); 
+	end
+
+	pos=find(x<=xlimits(2) & x>=xlimits(1) & y<=ylimits(2) & y>=ylimits(1));
+	if length(pos)<=1, continue; end
+	x=x(pos);y=y(pos);
+	l=line(x,y,'Color',color);
+
+	if numbering,
+		ind=length(x)-2*longap;
+		if (ind<=0), continue; end
+		xcorner=x(ind);            ycorner=y(ind);
+		xcorner2=x(max(ind-10,1)); ycorner2=y(max(ind-10,1));
+
+		if (xcorner>xlimits(1) & xcorner<xlimits(2) & ycorner>ylimits(1) & ycorner<ylimits(2)),
+			angle=mod((180)/pi*atan2((ycorner2-ycorner),(xcorner2-xcorner))+lonangle,360);
+			if lon<0, label=[num2str(abs(lon)) '^{\circ} W'];
+			else      label=[num2str(abs(lon)) '^{\circ} E']; end
+			th=text(xcorner,ycorner,label);
+			set(th,'Color',colornumber,'Rotation',angle,'FontSize',fontsize,'HorizontalAlignment','center','VerticalAlignment','middle','Clipping','on');
+
+			%erase line and redraw it in two parts, to leave space for latitude number
+			delete(l);
+			line(x(1:ind-longap),y(1:ind-longap),'Color',color);hold on;
+			line(x(ind+longap:end),y(ind+longap:end),'Color',color);
+		end
+
+	end
+end
+
+%Back to original limits
+xlim(xlimits);
+ylim(ylimits);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/manualcb.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/manualcb.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/manualcb.m	(revision 21239)
@@ -0,0 +1,151 @@
+function manualcb(zmin,zmax,cmap,varargin)
+%MANUALCB - custom colorbar
+%
+%   Usage:
+%      manualcb(min,max,colormap,options)
+%
+%   Available options:
+%      - 'fontsize'    : default is 12
+%      - 'smallbars'   : bars next to each tick (default is false)
+%      - 'position'    : colorbar position in normalized units
+%      - 'orientation' : 'vertical' (default) or 'horizontal'
+%      - 'title'       : colorbar title
+%      - 'tick'        : specified values of tick labels
+%      - 'ticksep'     : spacing between ticks
+%      - 'inverttickposition' : put ticks on the left hand side for vertical cb
+
+%check inputs
+if nargin<3,
+	help manualcb
+	error('bad usage');
+end
+if zmin>zmax,
+	error('zmin should be smaller than zmax');
+end
+
+%Get plot axes
+mainaxes = gca;
+
+%process options
+options = pairoptions(varargin{:});
+if exist(options,'tick') & exist(options,'ticksep'),
+	error('only one of tick or ticksep can be specified');
+end
+fontsize  = getfieldvalue(options,'fontsize',12);
+smallbars = getfieldvalue(options,'smallbars',false);
+
+%Colorbar position
+if ~exist(options,'position'),
+	position = plotboxpos;
+	xstart   = position(1)+position(3)+0.01;
+	ystart   = position(2);
+	width    = .02;
+	height   = position(4);
+else
+	position = getfieldvalue(options,'position');
+	xstart = position(1);
+	ystart = position(2);
+	width  = position(3);
+	height = position(4);
+end
+axes('Units','normalized','Position',[xstart ystart width height],'XTickLabel','','YTickLabel','','Visible','on');
+xlim([0 1]);
+ylim([0 1]);
+
+%Prepare ticks
+if ~exist(options,'log'),
+	deltaz = getfieldvalue(options,'ticksep',dtick(zmax-zmin));
+	ztick  = getfieldvalue(options,'tick',(deltaz*ceil(zmin/deltaz)):deltaz:zmax);
+	if (any(ztick>zmax) | any(ztick<zmin)),
+		error('one or more specified tick values falls outside of [zmin,zmax]');
+	end
+	ytick  = (ztick-zmin)/(zmax-zmin);
+else
+	%old method
+	ztick = getfieldvalue(options,'tick',round( logspace(log10(zmin),log10(zmax),8) ));
+	ytick = linspace(0,1,numel(ztick));
+
+	%New method
+	test=logspace(-10,10,21);
+	pos=find(test>=zmin & test<=zmax);
+	ztick= test(pos);
+	ytick= (log(ztick) - log(zmin))/(log(zmax) - log(zmin));
+end
+
+%Display colorbar
+hold on
+numcolors=size(cmap,1);
+if 1,
+	%disappears somtimes
+	if strcmpi(getfieldvalue(options,'orientation','vertical'),'vertical'),
+		image_rgb = ind2rgb(repmat((1:numcolors)',1,10),cmap);
+	else
+		image_rgb = ind2rgb(repmat((1:numcolors),10,1),cmap);
+	end
+
+	imagesc([0 1],[0 1],image_rgb);
+else
+	%Creates triangles when exported as pdf
+	if strcmpi(getfieldvalue(options,'orientation','vertical'),'vertical'),
+		for i=1:numcolors,
+			patch([0,0,1,1],[(i-1)/numcolors,i/numcolors,i/numcolors,(i-1)/numcolors],0,'FaceColor',cmap(i,:),'Clipping','off','EdgeColor','none')
+		end
+	else
+		for i=1:numcolors,
+			patch([(i-1)/numcolors,i/numcolors,i/numcolors,(i-1)/numcolors],[0,0,1,1],0,'FaceColor',cmap(i,:),'Clipping','off','EdgeColor','none')
+		end
+	end
+end
+patch([0,0,1,1],[0,1,1,0],'k','FaceColor','none','Clipping','off')
+
+%Add ticks
+if strcmpi(getfieldvalue(options,'orientation','vertical'),'vertical'),
+	%Use FOR LOOP otherwise numbers are not correcly centered
+	if getfieldvalue(options,'inverttickposition',0)==1,
+		for i=1:length(ytick), text(-0.5,ytick(i),num2str(ztick(i)),'HorizontalAlignment','right','VerticalAlignment','middle','FontSize',fontsize); end
+	else
+		for i=1:length(ytick), text(1.5,ytick(i),num2str(ztick(i)),'HorizontalAlignment','left','VerticalAlignment','middle','FontSize',fontsize); end
+	end
+	if smallbars,
+		for i=1:numel(ztick)
+			patch([0.8 1.0],[ytick(i) ytick(i)],'k')
+			patch([0.0 0.2],[ytick(i) ytick(i)],'k')
+		end
+	end
+else
+	%Use FOR LOOP otherwise numbers are not correcly centered
+	for i=1:length(ytick), text(ytick(i),-0.5,num2str(ztick(i)),'HorizontalAlignment','center','VerticalAlignment','top','FontSize',fontsize); end
+	if smallbars,
+		for i=1:numel(ztick)
+			patch([ytick(i) ytick(i)],[0.8 1.0],[ytick(i) ytick(i)],'k')
+			patch([ytick(i) ytick(i)],[0.0 0.2],[ytick(i) ytick(i)],'k')
+		end
+	end
+end
+
+if exist(options,'title'),
+	title(getfieldvalue(options,'title'),'FontSize',getfieldvalue(options,'titlefontsize',fontsize));
+end
+if exist(options,'ylabel'),
+	if strcmpi(getfieldvalue(options,'orientation','vertical'),'horizontal'),
+		th=title(getfieldvalue(options,'title'),'FontSize',fontsize);
+		set(th,'Position',[ytick(end)+0.075,-0.3]);
+	else
+		ylabel(getfieldvalue(options,'ylabel'),'FontSize',fontsize);
+	end
+end
+	
+%Back to original axes
+if getfieldvalue(options,'showregion',0)==0,
+	axes(mainaxes);
+end
+
+function delta = dtick(range)
+%Tick intervals
+m = 10^floor(log10(range));
+p = ceil(range/m);
+if p <= 1,     delta = .1*m;
+elseif p == 2, delta = .2*m;
+elseif p <= 5, delta = .5*m;
+else           delta = m;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/northarrow.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/northarrow.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/northarrow.m	(revision 21239)
@@ -0,0 +1,76 @@
+function northarrow(structure)
+%NORTHARROW - overlay an arrow pointing north on the current plot
+%
+%   Usage:
+%      northarrow(structure)
+
+%Go through structure and fill missing arguments
+if length(structure)<3
+	error('plotmodel error message: the position or the length of the North arrow is missing');
+elseif length(structure)==3
+	structure(4)=0.5; %default ratio headarrow/length
+	structure(5)=structure(3)/10; %default width =length/10
+elseif length(structure)==4
+	structure(5)=structure(3)/10; %default width =length/10
+elseif length(structure)==5
+	structure(6)=16; %default fontsize
+elseif length(structure)>6
+	error('plotmodel error message: to many input arguments for northarrow: [x0 y0 length [ratio width fontsize]]');
+end
+
+%retrieve north arrow parameters
+x0=structure(1);
+y0=structure(2);
+lengtharrow=structure(3);
+ratio=structure(4);
+width=structure(5);
+fontsize=structure(6);
+
+%Figure out angle to point towards north
+ang=atan2(y0,x0);
+
+%Build the two points Ap and Bp
+x=zeros(2,1);
+y=zeros(2,1);
+x(1)=x0;
+y(1)=y0;
+
+x(2)=x(1)+lengtharrow*cos(ang);
+y(2)=y(1)+lengtharrow*sin(ang);
+
+Ap=[x(1)
+   y(1)];
+Bp=[x(2)
+   y(2)];
+
+%Build arrowhead first
+ang2=150*2*pi/360;
+rotation=[cos(ang2), sin(ang2); -sin(ang2), cos(ang2)];
+
+E=ratio*rotation*(Bp-Ap)+Bp;
+F=Bp;
+G=ratio*rotation'*(Bp-Ap)+Bp;
+H=Bp/4+E*3/8+G*3/8;
+
+%Build rectangle
+u=Bp-Ap;
+alpha=atan2(u(2),u(1));
+
+A=Ap-[-width/2*sin(alpha)
+   width/2*cos(alpha)];
+ B=H-[-width/2*sin(alpha)
+   width/2*cos(alpha)];
+C=H+[-width/2*sin(alpha)
+   width/2*cos(alpha)];
+D=Ap+[-width/2*sin(alpha)
+   width/2*cos(alpha)];
+
+%Plot arrow
+hold on
+p1=patch([A(1) B(1) C(1) D(1)],[A(2) B(2) C(2) D(2)],'Black');
+p2=patch([E(1) F(1) G(1) H(1)],[E(2) F(2) G(2) H(2)],'Black');
+
+%Text North
+xN=max([A(1) D(1) E(1) F(1) G(1)])+ratio/3*abs(lengtharrow);
+yN=mean([A(2) F(2) H(2)]);
+text(xN,yN,'North','FontSize',fontsize,'FontWeight','b');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_BC.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_BC.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_BC.m	(revision 21239)
@@ -0,0 +1,42 @@
+function plot_BC(md,options,width,i,data)
+
+%plot neuman
+h0 = plot_icefront(md,options,width,i,data);
+
+hold on
+
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%plot dirichlets
+dirichleton=getfieldvalue(options,'dirichlet','on');
+if strcmpi(dirichleton,'on'),
+	h1=plot3(...
+		x(find(~isnan(md.stressbalance.spcvx(1:md.mesh.numberofvertices,1)))),...
+		y(find(~isnan(md.stressbalance.spcvx(1:md.mesh.numberofvertices,1)))),...
+		z(find(~isnan(md.stressbalance.spcvx(1:md.mesh.numberofvertices,1)))),...
+		'ro','MarkerSize',14,'MarkerFaceColor','r');
+	h2=plot3(...
+		x(find(~isnan(md.stressbalance.spcvy(1:md.mesh.numberofvertices,1)))),...
+		y(find(~isnan(md.stressbalance.spcvy(1:md.mesh.numberofvertices,1)))),...
+		z(find(~isnan(md.stressbalance.spcvy(1:md.mesh.numberofvertices,1)))),...
+		'bo','MarkerSize',10,'MarkerFaceColor','b');
+	h3=plot3(...
+		x(find(~isnan(md.stressbalance.spcvz(1:md.mesh.numberofvertices,1)))),...
+		y(find(~isnan(md.stressbalance.spcvz(1:md.mesh.numberofvertices,1)))),...
+		z(find(~isnan(md.stressbalance.spcvz(1:md.mesh.numberofvertices,1)))),...
+		'yo','MarkerSize',6 ,'MarkerFaceColor','y');
+end
+
+strings = {'Neumann'};
+if ~isempty(h1), strings{end+1} = 'vx Dirichlet'; end
+if ~isempty(h2), strings{end+1} = 'vy Dirichlet'; end
+if ~isempty(h3), strings{end+1} = 'vz Dirichlet'; end
+
+legend([h0,h1,h2,h3],strings,'location','NorthEast');
+
+hold off
+
+%apply options
+options=addfielddefault(options,'title','Boundary conditions');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_basaldrag.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_basaldrag.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_basaldrag.m	(revision 21239)
@@ -0,0 +1,53 @@
+function plot_basaldrag(md,options,width,i,type)
+
+%PLOT_BASALDRAG - plot basal drag
+%
+%   Usage:
+%      plot_basaldrag(md,options,width,i,type);
+%
+%   See also: PLOTMODEL
+
+%check layer
+if dimension(md.mesh)==3,
+	if getfieldvalue(options,'layer',1)~=1;
+		disp('plot_basaldrag warning: basal drag is displayed in the lower layer')
+		changefieldvalue(options,'layer',1);
+	end
+end
+
+%compute exponents
+s=averaging(md,1./md.friction.p,0);
+r=averaging(md,md.friction.q./md.friction.p,0);
+
+%compute horizontal velocity
+if strcmpi(type,'basal_drag')
+	ub=sqrt(md.initialization.vx.^2+md.initialization.vy.^2)/md.constants.yts;
+elseif strcmpi(type,'basal_dragx')
+	ub=md.initialization.vx/md.constants.yts;
+elseif strcmpi(type,'basal_dragy')
+	ub=md.initialization.vy/md.constants.yts;
+end
+
+%compute basal drag
+drag=(max(md.constants.g*(md.materials.rho_ice*md.geometry.thickness+md.materials.rho_water*md.geometry.base),0)).^r.*(md.friction.coefficient).^2.*ub.^s/1000;
+
+%Figure out if this is a Section plot
+if exist(options,'sectionvalue')
+	plot_section(md,drag,options,width,i);
+	return;
+else
+
+	%process data and model
+	[x y z elements is2d isplanet]=processmesh(md,[],options);
+	[basal_drag datatype]=processdata(md,drag,options);
+
+	%plot basaldrag
+	subplot(width,width,i); 
+	plot_unit(x,y,z,elements,basal_drag,is2d,isplanet,datatype,options);
+
+	%apply options
+	options=addfielddefault(options,'title','Basal drag [kPa]');
+	options=addfielddefault(options,'view',2);
+	applyoptions(md,basal_drag,options);
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_boundaries.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_boundaries.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_boundaries.m	(revision 21239)
@@ -0,0 +1,39 @@
+function plot_boundaries(md,options,width,i)
+%PLOT_BOUNDARIES - plot mesh boundaries
+%
+%   Usage:
+%      plot_boundaries(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+subplot(width,width,i); 
+
+%process data and model
+if getfieldvalue(options,'layer',0)
+	options=removefield(options,'layer',1);
+end
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+for i=1:size(md.mesh.segments,1),
+	plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'k.-');hold on;
+end
+
+%plot rifts if present: 
+if isstruct(md.rifts.riftstruct),
+	for i=1:size(md.rifts.riftstruct,1),
+		segments=md.rifts.riftstruct(i).segments;
+		for j=1:size(segments,1),
+			plot(x(segments(j,1:2)),y(segments(j,1:2)),'r.-');
+		end
+		text(x(segments(floor(size(segments,1)/4),1)),y(segments(floor(size(segments,1)/4),1)),['Rift #' num2str(i)]);
+		%point out the tips
+		plot(x(md.rifts.riftstruct(i).tips(1)),y(md.rifts.riftstruct(i).tips(1)),'b*');
+		plot(x(md.rifts.riftstruct(i).tips(2)),y(md.rifts.riftstruct(i).tips(2)),'b*');
+	end
+end
+
+%apply options
+options=addfielddefault(options,'title','Mesh boundaries');
+options=addfielddefault(options,'colorbar',0);
+options=addfielddefault(options,'view',2);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_contour.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_contour.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_contour.m	(revision 21239)
@@ -0,0 +1,251 @@
+function plot_contour(md,datain,options)
+%PLOT_CONTOUR - plot contours of a given field
+%
+%   Usage:
+%      plot_contour(md,data,options);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z index is2d isplanet]=processmesh(md,[],options);
+options=removefield(options,'log',0);
+[data datatype]=processdata(md,datain,options);
+if isempty(data), error('data provided is empty'); end
+
+%check is2d
+if ~is2d,
+	error('plot_contour error message: contour not supported for 3d meshes, project on a layer');
+end
+
+%first, process data: must be on nodes
+if datatype==1,
+	%elements -> take average
+	data=averaging(md,data,0);
+elseif datatype==2,
+	%nodes -> do nothing
+elseif datatype==3,
+	%quiver -> take norm
+	data=sqrt(sum(datain.*datain,2));
+else
+	error('datatype not supported yet');
+end
+
+%prepare colors
+if exist(options,'contouronly')
+	%remove the previous plots
+	cla
+end
+color=getfieldvalue(options,'contourcolor','y');
+linewidth=getfieldvalue(options,'linewidth',1);
+
+%get contours levels
+contourlevels=getfieldvalue(options,'contourlevels');
+if isnumeric(contourlevels),
+	levels=round_ice(linspace(max(data),min(data),contourlevels),2);
+else
+	levels=[];
+	for i=1:length(contourlevels)
+		levels(end+1)=contourlevels{i};
+	end
+	levels=sort(unique(levels),'descend');
+end
+numlevels=length(levels);
+
+%initialization of some variables
+numberofelements=size(index,1);
+elementslist=1:numberofelements;
+c=[];
+h=[];
+
+%get unique edges in mesh
+%1: list of edges
+edges=[index(:,[1,2]); index(:,[2,3]); index(:,[3,1])];
+%2: find unique edges
+[edges,I,J]=unique(sort(edges,2),'rows');
+%3: unique edge numbers
+vec=J;
+%4: unique edges numbers in each triangle (2 triangles sharing the same edge will have
+%   the same edge number)
+edges_tria=[vec(elementslist), vec(elementslist+numberofelements), vec(elementslist+2*numberofelements)];
+
+%segments [nodes1 nodes2]
+Seg1=index(:,[1 2]);
+Seg2=index(:,[2 3]);
+Seg3=index(:,[3 1]);
+
+%segment numbers [1;4;6;...]
+Seg1_num=edges_tria(:,1);
+Seg2_num=edges_tria(:,2);
+Seg3_num=edges_tria(:,3);
+
+%value of data on each tips of the segments
+Data1=data(Seg1);
+Data2=data(Seg2);
+Data3=data(Seg3);
+
+%get the ranges for each segment
+Range1=sort(Data1,2);
+Range2=sort(Data2,2);
+Range3=sort(Data3,2);
+
+for i=1:numlevels
+
+	level=levels(i);
+
+	%find the segments that contain this value
+	pos1=(Range1(:,1)<level & Range1(:,2)>level);
+	pos2=(Range2(:,1)<level & Range2(:,2)>level);
+	pos3=(Range3(:,1)<level & Range3(:,2)>level);
+
+	%get elements
+	poselem12=(pos1 & pos2);
+	poselem13=(pos1 & pos3);
+	poselem23=(pos2 & pos3);
+	poselem=find(poselem12 | poselem13 | poselem23);
+	numelems=length(poselem);
+
+	%if no element has been flagged, skip to the next level
+	if numelems==0,
+		continue,
+	end
+
+	%go through the elements and build the coordinates for each segment (1 by element)
+	x1=zeros(numelems,1);
+	x2=zeros(numelems,1);
+	y1=zeros(numelems,1);
+	y2=zeros(numelems,1);
+	edge_l=zeros(numelems,2);
+
+	for j=1:numelems,
+
+		weight1=(level-Data1(poselem(j),1))/(Data1(poselem(j),2)-Data1(poselem(j),1));
+		weight2=(level-Data2(poselem(j),1))/(Data2(poselem(j),2)-Data2(poselem(j),1));
+		weight3=(level-Data3(poselem(j),1))/(Data3(poselem(j),2)-Data3(poselem(j),1));
+
+		if poselem12(poselem(j));
+
+			x1(j)=x(Seg1(poselem(j),1))+weight1*(x(Seg1(poselem(j),2))-x(Seg1(poselem(j),1)));
+			x2(j)=x(Seg2(poselem(j),1))+weight2*(x(Seg2(poselem(j),2))-x(Seg2(poselem(j),1)));
+			y1(j)=y(Seg1(poselem(j),1))+weight1*(y(Seg1(poselem(j),2))-y(Seg1(poselem(j),1)));
+			y2(j)=y(Seg2(poselem(j),1))+weight2*(y(Seg2(poselem(j),2))-y(Seg2(poselem(j),1)));
+			edge_l(j,1)=Seg1_num(poselem(j));
+			edge_l(j,2)=Seg2_num(poselem(j));
+
+		elseif poselem13(poselem(j)),
+
+			x1(j)=x(Seg1(poselem(j),1))+weight1*(x(Seg1(poselem(j),2))-x(Seg1(poselem(j),1)));
+			x2(j)=x(Seg3(poselem(j),1))+weight3*(x(Seg3(poselem(j),2))-x(Seg3(poselem(j),1)));
+			y1(j)=y(Seg1(poselem(j),1))+weight1*(y(Seg1(poselem(j),2))-y(Seg1(poselem(j),1)));
+			y2(j)=y(Seg3(poselem(j),1))+weight3*(y(Seg3(poselem(j),2))-y(Seg3(poselem(j),1)));
+			edge_l(j,1)=Seg1_num(poselem(j));
+			edge_l(j,2)=Seg3_num(poselem(j));
+
+		elseif poselem23(poselem(j)),
+
+			x1(j)=x(Seg2(poselem(j),1))+weight2*(x(Seg2(poselem(j),2))-x(Seg2(poselem(j),1)));
+			x2(j)=x(Seg3(poselem(j),1))+weight3*(x(Seg3(poselem(j),2))-x(Seg3(poselem(j),1)));
+			y1(j)=y(Seg2(poselem(j),1))+weight2*(y(Seg2(poselem(j),2))-y(Seg2(poselem(j),1)));
+			y2(j)=y(Seg3(poselem(j),1))+weight3*(y(Seg3(poselem(j),2))-y(Seg3(poselem(j),1)));
+			edge_l(j,1)=Seg2_num(poselem(j));
+			edge_l(j,2)=Seg3_num(poselem(j));
+		else
+			%it shoud not go here
+		end
+	end
+
+	%now that we have the segments, we must try to connect them...
+
+	%loop over the subcontours
+	while ~isempty(edge_l),
+
+		%take the right edge of the second segment and connect it to the next segments if any
+		e1=edge_l(1,1);   e2=edge_l(1,2);
+		xc=[x1(1);x2(1)]; yc=[y1(1);y2(1)];
+
+		%erase the lines corresponding to this edge
+		edge_l(1,:)=[];
+		x1(1)=[]; x2(1)=[];
+		y1(1)=[]; y2(1)=[];
+
+		[ro1,co1]=find(edge_l==e1);
+
+		while ~isempty(ro1)
+
+			if co1==1,
+				xc=[x2(ro1);xc]; yc=[y2(ro1);yc];
+
+				%next edge:
+				e1=edge_l(ro1,2);
+
+			else
+				xc=[x1(ro1);xc]; yc=[y1(ro1);yc];
+
+				%next edge:
+				e1=edge_l(ro1,1);
+			end
+
+			%erase the lines of this
+			edge_l(ro1,:)=[];
+			x1(ro1)=[]; x2(ro1)=[];
+			y1(ro1)=[]; y2(ro1)=[];
+
+			%next connection
+			[ro1,co1]=find(edge_l==e1);
+		end
+
+		%same thing the other way (to the right)
+		[ro2,co2]=find(edge_l==e2);
+
+		while ~isempty(ro2)
+
+			if co2==1,
+				xc=[xc;x2(ro2)]; yc=[yc;y2(ro2)];
+
+				%next edge:
+				e2=edge_l(ro2,2);
+			else
+				xc=[xc;x1(ro2)]; yc=[yc;y1(ro2)];
+
+				%next edge:
+				e2=edge_l(ro2,1);
+			end
+
+			%erase the lines of this
+			edge_l(ro2,:)=[];
+			x1(ro2)=[]; x2(ro2)=[];
+			y1(ro2)=[]; y2(ro2)=[];
+
+			%next connection
+			[ro2,co2]=find(edge_l==e2);
+		end
+
+		%we now have one subcontour ready to be plotted
+		zc=level*ones(length(xc)+1,1);
+		if getfieldvalue(options,'contouronly',0),
+			h=[h;patch('Xdata',[xc;NaN],'Ydata',[yc;NaN],'Zdata',zc,'Cdata',zc,'facecolor','none','edgecolor','flat','linewidth',linewidth)];
+			hold on      
+		else
+			dist = 5000;
+			if (max(xc)-min(xc)+max(yc)-min(yc))<dist, continue; end
+			h=patch('Xdata',[xc;NaN],'Ydata',[yc;NaN],'facecolor','none','edgecolor',color,'linewidth',linewidth);
+			c = horzcat([level, xc'; length(xc), yc']);
+			%clabel(c,h,'FontSize',10,'labelspacing',20000,'color',color);
+			hold on
+		end
+
+		% Update the CS data structure as per "contours.m"
+		% so that clabel works
+		%c = horzcat(c,[level, xc'; length(xc), yc']);
+
+	end
+end
+
+%labels?
+if (~strcmpi(getfieldvalue(options,'contourticks','on'),'off') & ~isempty(c) & ~isempty(h))
+	if exist(options,'contouronly')
+		clabel(c,h);
+	else
+		%clabel(c,h,'color',color,'FontSize',10,'labelspacing',20000);
+		clabel(c,h,'FontSize',10,'labelspacing',20000);
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_contour.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_contour.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_contour.py	(revision 21239)
@@ -0,0 +1,41 @@
+from averaging import averaging
+from processmesh import processmesh
+from processdata import processdata
+try:
+	import matplotlib.pyplot as plt
+except ImportError:
+	print "could not import pylab, matplotlib has not been installed, no plotting capabilities enabled"
+
+def plot_contour(md,datain,options,ax):
+	'''
+	plot contours of a given field (called within plotmodel)
+
+	Usage:
+		plot_contour(md,data,options)
+
+	See also: plotmodel
+	'''
+
+	x,y,z,elements,is2d,isplanet=processmesh(md,datain,options)
+	data,datatype=processdata(md,datain,options)
+
+	# process data: must be on nodes
+	if datatype==1: # element data
+		data=averaging(md,data,0)
+	elif datatype==2:
+		pass
+	elif datatype==3: # quiver (vector) data
+		data=npy.sqrt(datain**2)
+	else:
+		raise ValueError('datatype not supported in call to plot_contour')
+
+	# contouronly TODO (cla will also clear an overlay image)
+
+	# retrieve necessary options
+	levels=options.getfieldvalue('contourlevels')
+	norm=options.getfieldvalue('colornorm')
+	colors=options.getfieldvalue('contourcolors','y')
+	linestyles=options.getfieldvalue('contourlinestyles','-')
+	linewidths=options.getfieldvalue('contourlinewidths',1)
+
+	ax.tricontour(x,y,elements,data,levels,colors=colors,norm=norm,linestyles=linestyles,linewidths=linewidths)
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_drivingstress.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_drivingstress.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_drivingstress.m	(revision 21239)
@@ -0,0 +1,24 @@
+function plot_drivingstress(md,options,width,i)
+%PLOT_DRIVINGSTRESS - plot driving stress
+%
+%   Usage:
+%      plot_drivingstress(md,options,width,i);
+%
+%   See also: PLOTMODEL, PLOT_UNIT, PLOT_MANAGER
+
+%get driving stress
+[sx sy s]=drivingstress(md);
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[dstress datatype]=processdata(md,s,options);
+dstress=dstress/1000;
+
+%plot mesh quivervel
+subplot(width,width,i); 
+plot_unit(x,y,z,elements,dstress,is2d,isplanet,datatype,options)
+
+%apply options
+options=addfielddefault(options,'title','Driving stress [kPa]');
+options=addfielddefault(options,'view',2);
+applyoptions(md,dstress,options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_edges.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_edges.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_edges.m	(revision 21239)
@@ -0,0 +1,34 @@
+function plot_edges(md,options,width,i,datai)
+%PLOT_SEGMENTS - plot edges, with different colors according to segment markers.
+%
+%   Usage:
+%      plot_edges(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%plot mesh boundaries
+subplot(width,width,i); 
+
+%process mesh and data
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+edges=md.mesh.edges;
+if isnan(edges)
+	error('edges in NaN')
+end
+
+if dimension(md.mesh)==2,
+	%plot mesh
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	h1=patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	hold on;
+	text(sum(x(edges(:,1:2)),2)/2,sum(y(edges(:,1:2)),2)/2,sum(z(edges(:,1:2)),2)/2,...
+		num2str(transpose(1:size(edges,1))),...
+		'backgroundcolor',[0.8 0.9 0.8],'HorizontalAlignment','center','VerticalAlignment','middle');
+else
+	error('plot_edges: 3d plot of edges not supported yet!');
+end
+
+%apply options
+options=addfielddefault(options,'title','Edges');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_elementnumbering.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_elementnumbering.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_elementnumbering.m	(revision 21239)
@@ -0,0 +1,57 @@
+function plot_elementnumbering(md,options,width,i)
+%PLOT_ELEMENTNUMBERING - plot element numbering
+%
+%   Usage:
+%      plot_elementnumbering(md,options,width,i);
+%
+%   See also: PLOTMODEL, PLOT_UNIT, PLOT_MANAGER
+
+subplot(width,width,i); 
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[elementnumbers datatype]=processdata(md,[1:md.mesh.numberofelements]',options);
+
+%plot
+if is2d
+	%plot mesh 
+	A=elements(:,1); B=elements(:,2); C=elements(:,3);
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+
+	%highlight
+	pos=getfieldvalue(options,'highlight',[]);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3);
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+
+	%numbering
+	text(sum(x(elements(:,1:3)),2)/3,sum(y(elements(:,1:3)),2)/3,sum(z(elements(:,1:3)),2)/3,...
+		num2str(elementnumbers),...
+		'HorizontalAlignment','center','VerticalAlignment','middle');
+else
+	%plot mesh 
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+	patch( 'Faces', [A B C],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+
+	%highlight
+	pos=getfieldvalue(options,'highlight',[]);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
+	patch( 'Faces', [A B C],  'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+
+	%numbering
+	text(sum(x(elements(:,1:6)),2)/6,sum(y(elements(:,1:6)),2)/6,sum(z(elements(:,1:6)),2)/6,...
+		num2str(elementnumbers),...
+		'HorizontalAlignment','center','VerticalAlignment','middle');
+end
+
+%apply options
+options=addfielddefault(options,'title','Element numbering');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_elementstype.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_elementstype.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_elementstype.m	(revision 21239)
@@ -0,0 +1,120 @@
+function plot_elementstype(md,options,width,i)
+%PLOT_ELEMENTSTYPE - plot elements type
+%
+%   Usage:
+%      plot_elementstype(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[data datatype]=processdata(md,md.flowequation.element_equation,options);
+
+%edgecolor?
+edgecolor=getfieldvalue(options,'edgecolor','none');
+
+%plot
+subplot(width,width,i);
+
+if is2d
+	pos=find(data==0);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	p1=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',0,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==1);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	p2=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',2,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==2);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	p3=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',3,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==3);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	p4=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',4,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==4);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	p5=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',5,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==5);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	p6=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',6,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==6);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	p7=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',7,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==7);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	p8=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',8,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==8);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	p9=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',9,'FaceColor','flat','EdgeColor',edgecolor);
+else
+	pos=find(data==0);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
+	p1=patch( 'Faces', [A B C],'Vertices', [x y z],'CData', 0,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', 0,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'CData', 0,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', 0,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', 0,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==1);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
+	p2=patch( 'Faces', [A B C],'Vertices', [x y z],'CData', 1,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', 1,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'CData', 1,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', 1,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', 1,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==2);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
+	p3=patch( 'Faces', [A B C],'Vertices', [x y z],'CData', 2,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', 2,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'CData', 2,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', 2,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', 2,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==3);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
+	p4=patch( 'Faces', [A B C],'Vertices', [x y z],'CData', 3,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', 3,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'CData', 3,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', 3,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', 3,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==3);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
+	p5=patch( 'Faces', [A B C],'Vertices', [x y z],'CData', 3,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', 3,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'CData', 3,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', 3,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', 3,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==4);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
+	p6=patch( 'Faces', [A B C],'Vertices', [x y z],'CData', 4,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', 4,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'CData', 4,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', 4,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', 4,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==5);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
+	p7=patch( 'Faces', [A B C],'Vertices', [x y z],'CData', 5,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', 5,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'CData', 5,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', 5,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', 5,'FaceColor','flat','EdgeColor',edgecolor);
+	%HOFS elements
+	pos=find(data==7);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
+	p8=patch( 'Faces', [A B C],'Vertices', [x y z],'CData', 7,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', 7,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'CData', 7,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', 7,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', 7,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==6);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
+	p9=patch( 'Faces', [A B C],'Vertices', [x y z],'CData', 6,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', 6,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'CData', 6,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', 6,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', 6,'FaceColor','flat','EdgeColor',edgecolor);
+end
+legend([p1 p2 p3 p4 p5 p6 p7 p8 p9],...
+		'None','SIA','SSA','L1L2','HO',...
+		'SSAHO','FS','SSAFS','HOFS');
+
+%apply options
+options=addfielddefault(options,'title','Elements type');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_googlemaps.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_googlemaps.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_googlemaps.m	(revision 21239)
@@ -0,0 +1,115 @@
+function plot_googlemaps(md,data,options,plotlines,plotcols,i)
+%PLOT_GOOGLEMAPS - superimpose Google maps to a given field
+%
+%   Usage:
+%      plot_googlemaps(md,data,options,plotlines,plotcols,i)
+%
+%   See also: PLOTMODEL
+
+%process mesh and data
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[data datatype]=processdata(md,data,options);
+
+%check is2d
+if ~is2d, 
+	error('buildgridded error message: gridded not supported for 3d meshes, project on a layer');
+end
+
+if ~any(isnan(md.radaroverlay.x(:))) & ~any(isnan(md.radaroverlay.y(:))) & ~any(isnan(md.radaroverlay.pwr(:))) ...
+		& size(md.radaroverlay.pwr,3)==3 & size(md.radaroverlay.x,2)==size(md.radaroverlay.pwr,2),
+	disp('plot_googlemaps info: the RGB image held by the model is being used');
+else
+	disp('Extracting image from Google maps...');
+
+	%Get xlim and ylim (used to extract radar image)
+	xlim=getfieldvalue(options,'xlim',[min(x) max(x)])/getfieldvalue(options,'unit',1);
+	ylim=getfieldvalue(options,'ylim',[min(y) max(y)])/getfieldvalue(options,'unit',1);
+	if md.mesh.epsg==3413, %UPS Greenland
+		[latlist lonlist]= xy2ll(...
+			[linspace(xlim(1),xlim(2),100) linspace(xlim(2),xlim(2),100) linspace(xlim(2),xlim(1),100) linspace(xlim(1),xlim(1),100)],...
+			[linspace(ylim(1),ylim(1),100) linspace(ylim(1),ylim(2),100) linspace(ylim(2),ylim(2),100) linspace(ylim(2),ylim(1),100)],...
+			+1,45,70);
+	elseif md.mesh.epsg==3031, %UPS Antarctica
+		[latlist lonlist]= xy2ll(...
+			[linspace(xlim(1),xlim(2),100) linspace(xlim(2),xlim(2),100) linspace(xlim(2),xlim(1),100) linspace(xlim(1),xlim(1),100)],...
+			[linspace(ylim(1),ylim(1),100) linspace(ylim(1),ylim(2),100) linspace(ylim(2),ylim(2),100) linspace(ylim(2),ylim(1),100)],...
+			-1,0,71);
+	elseif md.mesh.epsg==26906, %UTM 6V Columbia Glacier Alaska
+		[latlist lonlist]= utm2ll(...
+			[linspace(xlim(1),xlim(2),100) linspace(xlim(2),xlim(2),100) linspace(xlim(2),xlim(1),100) linspace(xlim(1),xlim(1),100)],...
+			[linspace(ylim(1),ylim(1),100) linspace(ylim(1),ylim(2),100) linspace(ylim(2),ylim(2),100) linspace(ylim(2),ylim(1),100)],...
+			6);
+	elseif numel(md.mesh.lat)==numel(md.mesh.x),
+		latlist = md.mesh.lat; %That might work?
+		lonlist = md.mesh.long;
+	else
+		error('EPSG code not supported yet, and no lat long found in md.mesh');
+	end
+
+	%Image corners in lat/long
+	ullat = max(latlist); ullon = min(lonlist);
+	lrlat = min(latlist); lrlon = max(lonlist);
+
+	md=googlemaps(md,ullat,ullon,lrlat,lrlon,options);
+end
+
+%Process image from model
+final = double(md.radaroverlay.pwr)/double(max(md.radaroverlay.pwr(:))); %rescale between 0 and 1
+
+%Get some options
+transparency = getfieldvalue(options,'transparency',.3);
+
+%Prepare grid
+if size(md.radaroverlay.x,1)==1 | size(md.radaroverlay.x,2)==1,
+	xmin=min(md.radaroverlay.x);
+	ymax=max(md.radaroverlay.y);
+	xspacing=md.radaroverlay.x(2)-md.radaroverlay.x(1);
+	yspacing=md.radaroverlay.y(2)-md.radaroverlay.y(1);
+	nlines=length(md.radaroverlay.y);
+	ncols =length(md.radaroverlay.x);
+		[x_m y_m data_grid]=InterpFromMeshToGrid(elements,x/getfieldvalue(options,'unit',1),y/getfieldvalue(options,'unit',1),...
+			data,xmin,ymax,xspacing,yspacing,nlines,ncols,NaN);
+else
+	X = md.radaroverlay.x;
+	Y = md.radaroverlay.y;
+	data_grid=InterpFromMeshToMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,data,X(:),Y(:),'default',NaN); data_grid=reshape(data_grid,size(X));
+	x_m=X(1,:); y_m=Y(:,1);
+end
+data_nan=isnan(data_grid);
+if exist(options,'caxis'),
+	caxis_opt=getfieldvalue(options,'caxis');
+	data_grid(find(data_grid<caxis_opt(1)))=caxis_opt(1);
+	data_grid(find(data_grid>caxis_opt(2)))=caxis_opt(2);
+	data_min=caxis_opt(1);
+	data_max=caxis_opt(2);
+else
+	data_min=min(data_grid(:));
+	data_max=max(data_grid(:));
+end
+colorm = getcolormap(options);
+image_rgb = ind2rgb(uint16((data_grid - data_min)*(length(colorm)/(data_max-data_min))),colorm);
+
+alpha=ones(size(data_grid));
+alpha(find(~data_nan))=transparency;
+alpha=repmat(alpha,[1 1 3]);
+
+final=alpha.*final+(1-alpha).*image_rgb;
+
+%Select plot area 
+subplotmodel(plotlines,plotcols,i,options);
+
+h=imagesc(x_m*getfieldvalue(options,'unit',1),y_m*getfieldvalue(options,'unit',1),final);
+
+%last step: mesh gridded?
+if exist(options,'edgecolor'),
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	patch('Faces',[A B C],'Vertices', [x y z],'FaceVertexCData',data_grid(1)*ones(size(x)),'FaceColor','none','EdgeColor',getfieldvalue(options,'edgecolor'));
+end
+
+%Apply options
+if ~isnan(data_min),
+	options=changefieldvalue(options,'caxis',[data_min data_max]); % force caxis so that the colorbar is ready
+end
+options=addfielddefault(options,'axis','xy equal off'); % default axis
+applyoptions(md,data,options);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_gridded.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_gridded.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_gridded.m	(revision 21239)
@@ -0,0 +1,93 @@
+function plot_gridded(md,data,options,plotlines,plotcols,i)
+%PLOT_OVERLAY - superimpose radar image to a given field
+%
+%   Usage:
+%      plot_gridded(md,options,plotlines,plotcols,i)
+%
+%   See also: PLOTMODEL
+
+%process mesh and data
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[data datatype]=processdata(md,data,options);
+
+%check is2d
+if ~is2d, 
+	error('buildgridded error message: gridded not supported for 3d meshes, project on a layer');
+end
+
+%Get xlim and ylim (used to extract radar image)
+xlim=getfieldvalue(options,'xlim',[min(x) max(x)]);
+ylim=getfieldvalue(options,'ylim',[min(y) max(y)]);
+postx=getfieldvalue(options,'posting',diff(xlim)/1000);
+posty=getfieldvalue(options,'posting',diff(ylim)/1000);
+
+%Interpolating data on grid
+[x_m y_m data_grid]=InterpFromMeshToGrid(elements,x,y,data,xlim(1),ylim(2),postx,posty,round(diff(ylim)/posty),round(diff(xlim)/postx),NaN);
+data_grid_save = data_grid;
+if size(data_grid,1)<3 | size(data_grid,2)<3,
+	error('data_grid size too small in plot_gridded, check posting and units');
+end
+
+%Process data_grid: add white in NaN and correct caxis accordingly
+[data_nani data_nanj]=find(isnan(data_grid) | data_grid==-9999);
+if exist(options,'caxis'),
+	caxis_opt=getfieldvalue(options,'caxis');
+	data_grid(find(data_grid<caxis_opt(1)))=caxis_opt(1);
+	data_grid(find(data_grid>caxis_opt(2)))=caxis_opt(2);
+	data_min=caxis_opt(1);
+	data_max=caxis_opt(2);
+else
+	data_min=min(data_grid(:));
+	data_max=max(data_grid(:));
+end
+
+%Select plot area 
+subplotmodel(plotlines,plotcols,i,options);
+
+%shading interp;
+map    = getcolormap(options);
+image_rgb = ind2rgb(uint16((data_grid - data_min)*(length(map)/(data_max-data_min))),map);
+if exist(options,'shaded'),
+	a    = -45;
+	scut = 0.2;
+	c    = 1;
+	% computes lighting from elevation gradient
+	[fx,fy] = gradient(data_grid_save,x_m,y_m);
+	fxy = -fx*sind(a) - fy*cosd(a);
+	clear fx fy % free some memory...
+	fxy(isnan(fxy)) = 0;
+
+	% computes maximum absolute gradient (median-style), normalizes, saturates and duplicates in 3-D matrix
+	r = repmat(max(min(fxy/nmedian(abs(fxy),1 - scut/100),1),-1),[1,1,3]);
+
+	% applies contrast using exponent
+	rp = (1 - abs(r)).^c;
+	image_rgb = image_rgb.*rp;
+
+	% lighter for positive gradient
+	k = find(r > 0);
+	image_rgb(k) = image_rgb(k) + (1 - rp(k));
+end
+
+% set novalues / NaN to black color
+if ~isempty(data_nani)
+	nancolor=getfieldvalue(options,'nancolor',[1 1 1]);
+	image_rgb(sub2ind(size(image_rgb),repmat(data_nani,1,3),repmat(data_nanj,1,3),repmat(1:3,size(data_nani,1),1))) = repmat(nancolor,size(data_nani,1),1);
+end
+
+%plot grid
+h=imagesc(xlim,ylim,image_rgb);
+axis xy
+
+%last step: mesh gridded?
+if exist(options,'edgecolor'),
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	patch('Faces',[A B C],'Vertices', [x y z],'FaceVertexCData',data_grid(1)*ones(size(x)),'FaceColor','none','EdgeColor',getfieldvalue(options,'edgecolor'));
+end
+
+%Apply options
+if ~isnan(data_min) & ~isinf(data_min),
+	options=changefieldvalue(options,'caxis',[data_min data_max]); % force caxis so that the colorbar is ready
+end
+options=addfielddefault(options,'axis','xy equal'); % default axis
+applyoptions(md,data,options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_highlightelements.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_highlightelements.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_highlightelements.m	(revision 21239)
@@ -0,0 +1,67 @@
+function plot_highlightelements(md,options,width,i)
+%PLOT_HIGHLIGHTELEMENTS - plot selected elements
+%
+%   Usage:
+%      plot_highlightelements(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%plot mesh boundaries
+subplot(width,width,i); 
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[elementnumbers datatype]=processdata(md,[1:md.mesh.numberofelements]',options);
+
+%plot
+pos=getfieldvalue(options,'highlight',[]);
+if is2d
+	%plot mesh 
+	A=elements(:,1); B=elements(:,2); C=elements(:,3);
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+
+	%Highlight
+	pos=getfieldvalue(options,'highlight',[]);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3);
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+else
+	if size(elements,2)==6, %prisms
+		%plot mesh 
+		A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+		patch( 'Faces', [A B C],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+		patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+		patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+		patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+		patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+
+		%Highlight
+		A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
+		patch( 'Faces', [A B C],  'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+		patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+		patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+		patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+		patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+	elseif size(elements,2)==4, %tetras
+		A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4);
+		patch( 'Faces',[A B C],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor','black');
+		patch( 'Faces',[A B D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor','black');
+		patch( 'Faces',[B C D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor','black');
+		patch( 'Faces',[C A D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor','black');
+		%Highlight
+		A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4);
+		patch( 'Faces',[A B C],'Vertices', [x y z],'FaceVertexCData',[0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+		patch( 'Faces',[A B D],'Vertices', [x y z],'FaceVertexCData',[0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+		patch( 'Faces',[B C D],'Vertices', [x y z],'FaceVertexCData',[0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+		patch( 'Faces',[C A D],'Vertices', [x y z],'FaceVertexCData',[0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+	else
+		error('Not supported');
+	end
+end
+
+%apply options
+if ~exist(options,'highlight')
+	disp('highlightelements warning : highlight option empty, not element highlighted');
+end
+options=addfielddefault(options,'title','Highlighted Elements');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_highlightvertices.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_highlightvertices.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_highlightvertices.m	(revision 21239)
@@ -0,0 +1,46 @@
+function plot_highlightvertices(md,options,width,i)
+%PLOT_HIGHLIGHTVERTICES - plot selected vertices
+%
+%   Usage:
+%      plot_highlightvertices(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[nodenumbers datatype]=processdata(md,[1:md.mesh.numberofvertices]',options);
+
+%plot
+subplot(width,width,i); 
+
+if is2d
+	%plot mesh 
+	A=elements(:,1); B=elements(:,2); C=elements(:,3);
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+
+	%Highlight
+	pos=getfieldvalue(options,'highlight',[]);
+	text(x(pos),y(pos),z(pos),num2str(pos(:)),...
+		'backgroundcolor',[1 0 0],'HorizontalAlignment','center','VerticalAlignment','middle');
+else
+	%plot mesh 
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+	patch( 'Faces', [A B C],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+
+	%Highlight
+	pos=getfieldvalue(options,'highlight',[]);
+	text(x(pos),y(pos),z(pos),num2str(pos(:)),...
+		'backgroundcolor',[1 0 0],'HorizontalAlignment','center','VerticalAlignment','middle');
+end
+
+%apply options
+if ~exist(options,'highlight')
+	disp('highlightvertices warning : highlight option empty, not node highlighted');
+end
+options=addfielddefault(options,'title','Highlighted Nodes');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_icefront.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_icefront.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_icefront.m	(revision 21239)
@@ -0,0 +1,67 @@
+function h2 = plot_icefront(md,options,width,i,data)
+%PLOT_ICEFRONT - plot segment on neumann BC
+%
+%   Usage:
+%      plot_icefront(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%plot mesh boundaries
+subplot(width,width,i); 
+
+%process mesh and data
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+ice=(md.mask.ice_levelset<0);
+noice=(md.mask.ice_levelset>=0);
+zeroice=(md.mask.ice_levelset==0);
+elementice=sum(ice(md.mesh.elements),2);
+elementnoice=sum(noice(md.mesh.elements),2);
+elementzeroice=sum(zeroice(md.mesh.elements),2);
+
+if dimension(md.mesh)==2,
+	icefront=(elementice & elementnoice) & ~(elementice==2 & elementzeroice);
+
+	%plot mesh
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	h1=patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	hold on;
+
+	%highlight elements on neumann
+	pos=find(icefront);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	h2=patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','blue','EdgeColor','black');
+	hold on;
+
+	%Plot zero ice_levelset line
+
+else
+	icefront=(elementice & elementnoice) & ~(elementice==4 & elementzeroice);
+
+	%plot mesh
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+	h1=patch( 'Faces', [A B C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	hold on;
+
+	%highlight elements on neumann
+	pos=find(icefront);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
+	h2=patch( 'Faces', [A B C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','blue','EdgeColor','black');
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','blue','EdgeColor','black');
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','blue','EdgeColor','black');
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','blue','EdgeColor','black');
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','blue','EdgeColor','black');
+end
+
+%legend (disable warnings)
+warning off
+legend([h2],'element on ice front')
+warning on
+
+%apply options
+options=addfielddefault(options,'title','Neumann boundary conditions');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_importancefactors.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_importancefactors.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_importancefactors.m	(revision 21239)
@@ -0,0 +1,83 @@
+function plot_importancefactors(md,options,width,ii)
+%PLOT_IMPORTANCEFACTORS - plot importance factors
+%
+%   Usage:
+%      plot_importancefactors(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%first recover design variable descriptor
+if exist(options,'designvariable'),
+	descriptor=getfieldvalue(options,'designvariable');
+else
+	error('plot_importancefactors error message: Need to supply design variable descriptor');
+end
+descriptorlength=length(descriptor);
+
+%then recover responsfunction name
+if exist(options,'responsefunction'),
+	responsefunctiondescriptor=getfieldvalue(options,'responsefunction');
+else
+	error('plot_importancefactors error message: Need to supply response function descriptor');
+end
+
+%go through all response functions and find the one corresponding to the correct responsefunctiondescriptor
+responsefunctions=md.qmu.results{2};
+found=0;
+for i=1:length(responsefunctions),
+	if strcmpi(responsefunctions(i).descriptor,responsefunctiondescriptor),
+		found=i;
+		break;
+	end
+end
+if ~found,
+	error('plot_importancefactors error message: could not find correct response function');
+end
+responsefunctions=responsefunctions(found);
+nfun=size(responsefunctions.desvar,1);
+
+%Now recover response to the correct desgin variable
+importancefactors=zeros(md.qmu.numberofpartitions,1);
+count=0;
+for i=1:nfun,
+	desvar=responsefunctions.desvar{i};
+	if strncmpi(desvar,descriptor,descriptorlength),
+		count=count+1;
+		importancefactors(count)=responsefunctions.impfac(i);
+	end
+end
+if count==0,
+	error('plot_importancefactors error message: could not find to response functions with corresponding design variable');
+end
+
+%log?
+if exist(options,'log'),
+	logvalue=getfieldvalue(options,'log');
+	importancefactors=log(importancefactors)/log(logvalue);
+end
+
+%Ok, get partitioning.
+[epart npart]=MeshPartition(md,md.qmu.numberofpartitions);
+
+%distribute importance factor
+nodeimportance=importancefactors(npart);
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%edgecolor
+edgecolor=getfieldvalue(options,'edgecolor','none');
+
+%standard plot:
+subplot(width,width,ii);
+
+%ok, plot nodeimportance now.
+if is2d,
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', nodeimportance,'FaceColor','interp','EdgeColor',edgecolor);
+else
+	error('plot_importancefactors error message: 3d meshes not supported yet');
+end
+
+%apply options
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_manager.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_manager.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_manager.js	(revision 21239)
@@ -0,0 +1,209 @@
+function plot_manager(md,options,subplotwidth,nlines,ncols,i){
+	//PLOT__MANAGER - distribute the plots, called by plotmodel
+	//
+	//   Usage:
+	//      plot_manager(md,options,subplotwidth,i);
+	//
+	//   See also: PLOTMODEL, PLOT_UNIT
+			
+	//parse options and get a structure of options. 
+	checkplotoptions(md,options);
+	
+	//get data to be displayed
+	var data = options.getfieldvalue('data');
+	var canvas = initCanvas(options);
+	var gl = canvas.gl;
+	//TODO: each plot_ should add their node to the canvas.node array
+
+	//figure out if this is a special plot
+	if (typeof data === 'string'){
+
+		switch(data){
+
+			case 'boundaries':
+				plot_boundaries(md,options,subplotwidth,i);
+				return;
+			case 'BC':
+				plot_BC(md,options,subplotwidth,i,data);
+				return;
+			case 'edges':
+				plot_edges(md,options,subplotwidth,i,data);
+				return;
+			case 'elementnumbering':
+				plot_elementnumbering(md,options,subplotwidth,i);
+				return;
+			case 'highlightelements':
+				plot_highlightelements(md,options,subplotwidth,i);
+				return;
+			case 'qmumean':
+				plot_qmumean(md,options,nlines,ncols,i);
+				return;
+			case 'qmustddev':
+				plot_qmustddev(md,options,nlines,ncols,i);
+				return;
+			case 'qmuhistnorm':
+				plot_qmuhistnorm(md,options,nlines,ncols,i);
+				return;
+			case 'qmu_mass_flux_segments':
+				plot_qmu_mass_flux_segments(md,options,nlines,ncols,i);
+				return;
+			case 'part_hist':
+				plot_parthist(md,options,nlines,ncols,i);
+				return;
+			case 'part_hist_n':
+				plot_parthistn(md,options,nlines,ncols,i);
+				return;
+			case 'part_hist_w':
+				plot_parthistw(md,options,nlines,ncols,i);
+				return;
+			case 'elements_type':
+				plot_elementstype(md,options,subplotwidth,i);
+				return;
+			case 'vertexnumbering':
+				plot_vertexnumbering(md,options,subplotwidth,i);
+				return;
+			case 'highlightvertices':
+				plot_highlightvertices(md,options,subplotwidth,i);
+				return;
+			case 'basal_drag':
+				plot_basaldrag(md,options,subplotwidth,i,data);
+				return;
+			case 'basal_dragx':
+				plot_basaldrag(md,options,subplotwidth,i,data);
+				return;
+			case 'basal_dragy':
+				plot_basaldrag(md,options,subplotwidth,i,data);
+				return;
+			case 'driving_stress':
+				plot_drivingstress(md,options,subplotwidth,i);
+				return;
+			case 'mesh':
+				plot_mesh(md,options,canvas);
+				return;
+			case 'none':
+				if (!(options.exist('overlay'))){
+					plot_none(md,options,nlines,ncols,i);
+				}
+				return;
+			case 'penalties':
+				plot_penalties(md,options,subplotwidth,i);
+				return;
+			case 'partition':
+				plot_partition(md,options,nlines,ncols,i);
+				return;
+			case 'referential':
+				plot_referential(md,options,nlines,ncols,i);
+				return;
+			case 'riftvel':
+				plot_riftvel(md,options,nlines,ncols,i);
+				return;
+			case 'riftnumbering':
+				plot_riftnumbering(md,options,nlines,ncols,i);
+				return;
+			case 'rifts':
+				plot_rifts(md,options,nlines,ncols,i);
+				return;
+			case 'riftrelvel':
+				plot_riftrelvel(md,options,nlines,ncols,i);
+				return;
+			case 'riftpenetration':
+				plot_riftpenetration(md,options,nlines,ncols,i);
+				return;
+			case 'riftfraction':
+				plot_riftfraction(md,options,nlines,ncols,i);
+				return;
+			case 'sarpwr':
+				plot_sarpwr(md,options,subplotwidth,i);
+				return;
+			case 'time_dependant':
+				plot_vstime(md,options,nlines,ncols,i);
+				return;
+			case 'icefront':
+				plot_icefront(md,options,subplotwidth,i,data);
+				return;
+			case 'segments':
+				plot_segments(md,options,subplotwidth,i,data);
+				return;
+			case 'quiver':
+				plot_quiver(md,options,canvas);
+				return;
+			case 'strainrate_tensor':
+			case 'strainrate':
+			case 'strainrate_principal':
+			case 'strainrate_principalaxis1':
+			case 'strainrate_principalaxis2':
+			case 'strainrate_principalaxis3':
+			case 'stress_tensor':
+			case 'stress':
+			case 'stress_principal':
+			case 'stress_principalaxis1':
+			case 'stress_principalaxis2':
+			case 'stress_principalaxis3':
+			case 'deviatoricstress_tensor':
+			case 'deviatoricstress':
+			case 'deviatoricstress_principal':
+			case 'deviatoricstress_principalaxis1':
+			case 'deviatoricstress_principalaxis2':
+			case 'deviatoricstress_principalaxis3':
+				plot_tensor(md,options,subplotwidth,i,data);
+				return;
+			case 'thermaltransient_results':
+				plot_thermaltransient_results(md,options,subplotwidth,i);
+				return;
+			case 'transient_movie':
+				plot_transient_movie(md,options,subplotwidth,i);
+				return;
+			case 'transient_results':
+				plot_transient_results(md,options,subplotwidth,i);
+				return;
+			case 'transient_field':
+				plot_transient_field(md,options,subplotwidth,i);
+				return;
+			default:
+				if (data in md){
+					data=md[data];
+				}
+				else{
+					error('plot error message: data provided not supported yet. Type plotdoc for help');
+				}
+		}
+	}
+
+	//Figure out if this is a semi-transparent plot.
+	if (options.getfieldvalue('overlay','off')=='on'){
+		plot_overlay(md,data,options,canvas);
+	}
+
+	//Figure out if this is a semi-transparent plot.
+	if (options.exist('googlemaps')){
+		plot_googlemaps(md,data,options,nlines,ncols,i);
+		return;
+	}
+
+	//Figure out if this is a semi-transparent plot.
+	if (options.exist('gridded')){
+		plot_gridded(md,data,options,nlines,ncols,i);
+		return;
+	}
+
+	//Figure out if this is a Section plot
+	if (options.exist('sectionvalue')){
+		plot_section(md,data,options,nlines,ncols,i);
+		return;
+	}
+
+	//Figure out if this is a Profile plot
+	if (options.exist('profile')){
+		plot_profile(md,data,options,nlines,ncols,i);
+		return;
+	}
+	
+	var	dataresults = processdata(md,data,options);
+	var	data2 = dataresults[0]; 
+	var	datatype = dataresults[1];
+	
+	//plot unit
+	plot_unit(md,data2,datatype,options,canvas);
+
+	applyoptions(md,data2,datatype,options,canvas,gl,canvas.nodes[canvas.nodes.length-1]);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_manager.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_manager.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_manager.m	(revision 21239)
@@ -0,0 +1,218 @@
+function plot_manager(md,options,subplotwidth,nlines,ncols,i)
+%PLOT__MANAGER - distribute the plots, called by plotmodel
+%
+%   Usage:
+%      plot_manager(md,options,subplotwidth,i);
+%
+%   See also: PLOTMODEL, PLOT_UNIT
+
+%parse options and get a structure of options. 
+options=checkplotoptions(md,options);
+
+%get data to be displayed
+data=getfieldvalue(options,'data');
+
+%figure out if this is a special plot
+if ischar(data),
+
+	switch data,
+
+		case 'boundaries',
+			plot_boundaries(md,options,subplotwidth,i);
+			return;
+		case 'BC',
+			plot_BC(md,options,subplotwidth,i,data);
+			return;
+		case 'edges'
+			plot_edges(md,options,subplotwidth,i,data)
+			return
+		case 'elementnumbering',
+			plot_elementnumbering(md,options,subplotwidth,i);
+			return;
+		case 'highlightelements',
+			plot_highlightelements(md,options,subplotwidth,i);
+			return;
+
+		case 'qmumean',
+			plot_qmumean(md,options,nlines,ncols,i);
+			return;
+
+		case 'qmustddev',
+			plot_qmustddev(md,options,nlines,ncols,i);
+			return;
+
+		case 'qmuhistnorm',
+			plot_qmuhistnorm(md,options,nlines,ncols,i);
+			return;
+
+		case 'qmu_mass_flux_segments',
+			plot_qmu_mass_flux_segments(md,options,nlines,ncols,i);
+			return;
+
+		case 'part_hist',
+			plot_parthist(md,options,nlines,ncols,i);
+			return;
+		case 'part_hist_n',
+			plot_parthistn(md,options,nlines,ncols,i);
+			return;
+		case 'part_hist_w',
+			plot_parthistw(md,options,nlines,ncols,i);
+			return;
+		case 'elements_type',
+			plot_elementstype(md,options,subplotwidth,i);
+			return;
+		case 'vertexnumbering',
+			plot_vertexnumbering(md,options,subplotwidth,i);
+			return;
+		case 'highlightvertices',
+			plot_highlightvertices(md,options,subplotwidth,i);
+			return;
+		case {'basal_drag','basal_dragx','basal_dragy'},
+			plot_basaldrag(md,options,subplotwidth,i,data);
+			return;
+		case 'driving_stress',
+			plot_drivingstress(md,options,subplotwidth,i);
+			return;
+		case 'mesh',
+			plot_mesh(md,options,nlines,ncols,i);
+			return;
+		case 'none',
+			if ~exist(options,'overlay'),
+				plot_none(md,options,nlines,ncols,i);
+				return;
+			end
+		case 'penalties',
+			plot_penalties(md,options,subplotwidth,i);
+			return;
+		case 'partition',
+			plot_partition(md,options,nlines,ncols,i);
+			return;
+		case 'referential',
+			plot_referential(md,options,nlines,ncols,i);
+			return;
+		case 'riftvel',
+			plot_riftvel(md,options,nlines,ncols,i);
+			return;
+		case 'riftnumbering',
+			plot_riftnumbering(md,options,nlines,ncols,i);
+			return;
+		case 'rifts',
+			plot_rifts(md,options,nlines,ncols,i);
+			return;
+		case 'riftrelvel',
+			plot_riftrelvel(md,options,nlines,ncols,i);
+			return;
+		case 'riftpenetration',
+			plot_riftpenetration(md,options,nlines,ncols,i);
+			return;
+		case 'riftfraction',
+			plot_riftfraction(md,options,nlines,ncols,i);
+			return;
+		case 'sarpwr',
+			plot_sarpwr(md,options,subplotwidth,i)
+			return
+		case 'time_dependant' ,
+			plot_vstime(md,options,nlines,ncols,i)
+			return
+		case 'icefront'
+			plot_icefront(md,options,subplotwidth,i,data)
+			return
+		case 'segments'
+			plot_segments(md,options,subplotwidth,i,data)
+			return
+
+		case 'quiver'
+			data=[md.initialization.vx md.initialization.vy]; %Go ahead and try plot_unit
+
+		case {'strainrate_tensor','strainrate','strainrate_principal','strainrate_principalaxis1','strainrate_principalaxis2','strainrate_principalaxis3',...
+				'stress_tensor','stress','stress_principal','stress_principalaxis1','stress_principalaxis2','stress_principalaxis3',...
+				'deviatoricstress_tensor','deviatoricstress','deviatoricstress_principal','deviatoricstress_principalaxis1','deviatoricstress_principalaxis2','deviatoricstress_principalaxis3'},
+			plot_tensor(md,options,subplotwidth,i,data);
+			return;
+		case 'thermaltransient_results',
+			plot_thermaltransient_results(md,options,subplotwidth,i);
+			return;
+		case 'transient_movie',
+			plot_transient_movie(md,options,subplotwidth,i);
+			return;
+		case 'transient_results',
+			plot_transient_results(md,options,subplotwidth,i);
+
+		case 'transient_field',
+			plot_transient_field(md,options,subplotwidth,i);
+			return;
+
+	otherwise,
+
+		if ismember(data,properties('model')),
+			data=eval(['md.' data ';']);
+		else
+			error('plot error message: data provided not supported yet. Type plotdoc for help');
+		end
+	end
+end
+
+%Figure out if this is a semi-transparent plot.
+if exist(options,'overlay'),
+	plot_overlay(md,data,options,nlines,ncols,i);
+	return;
+end
+
+%Figure out if this is a semi-transparent plot.
+if exist(options,'googlemaps'),
+	plot_googlemaps(md,data,options,nlines,ncols,i);
+	return;
+end
+
+%Figure out if this is a semi-transparent plot.
+if exist(options,'gridded'),
+	plot_gridded(md,data,options,nlines,ncols,i);
+	return;
+end
+
+%Figure out if this is a Section plot
+if exist(options,'sectionvalue')
+	plot_section(md,data,options,nlines,ncols,i);
+	return;
+end
+
+%Figure out if this is a Profile plot
+if exist(options,'profile')
+	plot_profile(md,data,options,nlines,ncols,i);
+	return;
+end
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,data,options);
+[data2 datatype]=processdata(md,data,options);
+
+%standard plot:
+if exist(options,'asymsubplot')
+	id=getfieldvalue(options,'asymsubplot',i);
+	subplot(nlines,ncols,id);
+else
+	subplot(nlines,ncols,i);
+end
+
+%plot unit
+plot_unit(x,y,z,elements,data2,is2d,isplanet,datatype,options);
+
+%apply all options
+if datatype==3,
+	options=changefieldvalue(options,'colorbar',2);
+	if exist(options,'contourlevels'),
+		data2=data;
+	end
+end
+
+applyoptions(md,data2,options);
+
+%do ground overlay on kml plot_unit? 
+if (strcmpi(getfieldvalue(options,'kmlgroundoverlay','off'),'on')),
+	if ((nlines*ncols~=1) | (i~=1)),
+		error('cannot kmlgroundoverlay on multi-plots');
+	end
+
+	%call routine to build kml file and image that goes with it.
+	kmlgroundoverlay(md,options);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_manager.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_manager.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_manager.py	(revision 21239)
@@ -0,0 +1,103 @@
+try:
+	import pylab as p
+	import matplotlib.pyplot as plt
+except ImportError:
+	print "could not import pylab, matplotlib has not been installed, no plotting capabilities enabled"
+
+from checkplotoptions import checkplotoptions
+from plot_mesh import plot_mesh
+from processmesh import processmesh
+from processdata import processdata
+from plot_unit import plot_unit
+from applyoptions import applyoptions
+
+try:
+	from osgeo import gdal
+	overlaysupport=True
+except ImportError:
+	print 'osgeo/gdal for python not installed, overlay plots are not enabled'
+	overlaysupport=False
+
+if overlaysupport:
+	from plot_overlay import plot_overlay
+
+def plot_manager(md,options,fig,ax):
+	'''
+	PLOT_MANAGER - distribute the plots called by plotmodel
+
+	'fig' is a handle to the figure instance created by plotmodel.
+
+	'ax' is a handle to the axes instance created by plotmodel.  This is
+	currently generated using matplotlib's AxesGrid toolkit.
+
+	Usage:
+		plot_manager(md,options,fig,ax);
+
+	See also: PLOTMODEL, PLOT_UNIT
+	'''
+
+	#parse options and get a structure of options
+	options=checkplotoptions(md,options)
+
+	#get data to be plotted
+	data=options.getfieldvalue('data')
+	#add ticklabel has a default option
+	options.addfielddefault('ticklabels','on')
+	#initialize plot handle variable
+	#handle=None
+
+	# initialize subplot
+	#p.subplot(nrows,ncols,i,aspect='equal')
+
+	##basemap plot
+	#if options.exist('basemap'):
+	#	plot_basemap(md,data,options,nrows,ncols,i)
+
+	#overlay plot
+	if options.exist('overlay') and overlaysupport:
+		plot_overlay(md,data,options,ax)
+		options.addfielddefault('alpha',0.5)
+		options.addfielddefault('xlim',[min(md.mesh.x),max(md.mesh.x)])
+		options.addfielddefault('ylim',[min(md.mesh.y),max(md.mesh.y)])
+
+	#figure out if this is a special plot
+	if isinstance(data,(str,unicode)):
+
+		# convert string to lower case for a case-insensitive comparison
+		if data.lower()=='mesh': 
+			plot_mesh(md,options,ax)
+			applyoptions(md,[],options,fig,ax)
+			fig.delaxes(fig.axes[1]) # hack to remove colorbar after the fact
+			return
+		elif data.lower()=='none':
+			print 'no data provided to plot (TODO: write plot_none.py)'
+			applyoptions(md,[],options,fig,ax)
+			return
+		else:
+			print "WARNING: '%s' is not implemented or is not a valid string for option 'data'" % data
+
+	#elif data in vars(md):
+	#else:
+		#print "'data' not a string, plotting model properties yet to be implemented..."
+
+	#Gridded plot
+
+	#Section plot
+
+	#Profile plot
+
+	#process data and model
+	x,y,z,elements,is2d,isplanet=processmesh(md,data,options)
+	data2,datatype=processdata(md,data,options)
+
+	#standard plot
+	#if not handle:
+	#	p.subplot(nrows,ncols,i,aspect='equal')
+
+	#plot unit
+	plot_unit(x,y,z,elements,data2,is2d,isplanet,datatype,options,ax)
+
+	#apply all options
+	applyoptions(md,data2,options,fig,ax)
+	
+	#ground overlay on kml plot_unit
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_mesh.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_mesh.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_mesh.js	(revision 21239)
@@ -0,0 +1,139 @@
+function plot_mesh(md,options,canvas) {
+	//PLOT_MESH - Function for plotting wireframe mesh.
+	//
+	//   Usage:
+	//      plot_mesh(md,options,canvas);
+	//
+	//   See also: PLOTMODEL, PLOT_MANAGER
+
+	//declare variables:  {{{
+	var vertices = [];
+	var indices = [];
+	var colors = [];
+	var nanindices = {};
+	var xmin,xmax;
+	var ymin,ymax;
+	var zmin,zmax;
+	var scale,matrixscale,vertexscale;
+	
+	//Process data and model
+	var meshresults = processmesh(md,[],options);
+	var x = meshresults[0]; 
+	var y = meshresults[1]; 
+	var z = meshresults[2]; 
+	var elements = meshresults[3]; 
+	var is2d = meshresults[4]; 
+	var isplanet = meshresults[5];
+		
+	//Compue scaling through matrices for 2d meshes and vertices for 3d meshes
+	if (!md.geometry.surface) {
+		md.geometry.surface=NewArrayFill(md.mesh.x.length,0);
+	}
+	if (md.mesh.classname() == 'mesh3dsurface') {
+		matrixscale = 1;
+		vertexscale = options.getfieldvalue('heightscale',1);
+	}
+	else {
+		if (md.geometry.surface) {
+			z=md.geometry.surface;
+		}	
+		matrixscale = options.getfieldvalue('heightscale',1);
+		vertexscale = 0;
+	}
+	//}}}
+
+	//Compute coordinates and data range:
+	var modelxlim = [ArrayMin(x),ArrayMax(x)];
+	var modelylim = [ArrayMin(y),ArrayMax(y)];
+	var modelzlim = [ArrayMin(z),ArrayMax(z)];
+	var xlim = options.getfieldvalue('xlim',modelxlim);
+	var ylim = options.getfieldvalue('ylim',modelylim);
+	var zlim = options.getfieldvalue('zlim',modelzlim);
+	xmin = xlim[0];
+	xmax = xlim[1];
+	ymin = ylim[0];
+	ymax = ylim[1];
+	zmin = zlim[0];
+	zmax = zlim[1];
+
+	//Compute gl variables:
+	var gl = canvas.gl;
+	gl.makeCurrent();
+	var node = Node(gl);
+	canvas.nodes[canvas.nodes.length] = node;
+	node.name = "mesh";
+	node.shaderName = "Colored";
+	node.shader = gl.shaders[node.shaderName];
+	node.lineWidth = options.getfieldvalue('linewidth',1);
+	node.scale = [1, 1, matrixscale];
+	node.rotation = [-90, 0, 0];
+	node.translation = [0, 0, 0];
+	node.center = [(xmin + xmax) / 2, (ymin + ymax) / 2, (zmin + zmax) / 2];
+	node.drawMode = gl.LINES;
+	node.drawOrder = 0;
+	node.maskEnabled = options.getfieldvalue('innermask','off') == 'on';
+	node.maskHeight = options.getfieldvalue('innermaskheight',150.0)*options.getfieldvalue('heightscale',1);
+	node.maskColor = options.getfieldvalue('innermaskcolor',[0.0,0.0,1.0,1.0]);
+	updateModelMatrix(node);
+
+	//retrieve some options
+	var edgecolor = new RGBColor(options.getfieldvalue('edgecolor','black'));
+	if (edgecolor.ok) edgecolor = [edgecolor.r/255.0, edgecolor.g/255.0, edgecolor.b/255.0, 1.0];
+	else throw Error(sprintf("s%s%s\n","initWebGL error message: cound not find out edgecolor color for curent canvas ",canvas));
+
+	//node plot {{{
+	if (elements[0].length==6){ //prisms
+	}
+	else if (elements[0].length==4){ //tetras
+	}
+	else{ //2D triangular elements
+		var xyz = vec3.create();
+		var direction = vec3.create();
+		var vertex = vec3.create();
+		var magnitude;
+		var color = edgecolor;
+		for(var i = 0; i < x.length; i++){
+			//Check for NaN values and remove from indices array as necessary, but preserve vertex array spacing
+			if (isNaN(x[i]) || isNaN(y[i]) || isNaN(z[i])) {
+				nanindices[i] = i;
+				vertices[vertices.length] = vertex[0];
+				vertices[vertices.length] = vertex[1];
+				vertices[vertices.length] = vertex[2];
+				
+				colors[colors.length] = color[0];
+				colors[colors.length] = color[1];
+				colors[colors.length] = color[2];
+				colors[colors.length] = color[3];
+				continue;
+			}
+			//Scale vertices
+			xyz = vec3.fromValues(x[i], y[i], z[i]);
+			magnitude = vec3.length(xyz) + md.geometry.surface[i] * vertexscale;
+			vec3.normalize(direction, xyz);
+			vec3.scale(vertex, direction, magnitude);
+			vertices[vertices.length] = vertex[0];
+			vertices[vertices.length] = vertex[1];
+			vertices[vertices.length] = vertex[2];
+
+			colors[colors.length] = color[0];
+			colors[colors.length] = color[1];
+			colors[colors.length] = color[2];
+			colors[colors.length] = color[3];
+		}
+		
+		//linearize the elements array: 
+		var element;
+		for(var i = 0; i < elements.length; i++){
+			element = [elements[i][0] - 1, elements[i][1] - 1, elements[i][2] - 1];
+			if (element[0] in nanindices || element[1] in nanindices || element[2] in nanindices) continue;
+			indices[indices.length] = element[0];
+			indices[indices.length] = element[1];
+			indices[indices.length] = element[1];
+			indices[indices.length] = element[2];
+			indices[indices.length] = element[2];
+			indices[indices.length] = element[0];
+		}
+	}
+	//}}}
+	node.mesh = GL.Mesh.load({vertices:vertices, colors:colors, triangles:indices}, null, null, gl);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_mesh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_mesh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_mesh.m	(revision 21239)
@@ -0,0 +1,47 @@
+function plot_mesh(md,options,nlines,ncols,i)
+%PLOT_MESH - plot model mesh
+%
+%   Usage:
+%      plot_mesh(md,options,nlines,ncols,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%plot mesh
+subplot(nlines,ncols,i); 
+
+%retrieve some options
+linewidth=getfieldvalue(options,'linewidth',1);
+edgecolor=getfieldvalue(options,'edgecolor','black');
+
+%plot mesh
+if is2d
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+else
+	if size(elements,2)==6, %prisms
+		A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+		patch( 'Faces', [A B C],  'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+		patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+		patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+		patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+		patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+	elseif size(elements,2)==4, %tetras
+		A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4);
+		patch( 'Faces',[A B C],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+		patch( 'Faces',[A B D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+		patch( 'Faces',[B C D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+		patch( 'Faces',[C A D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+	else %triangles (planet)
+		A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+		if (size(elements,2)==4), D=elements(:,4); else D=C; end
+		patch( 'Faces', [A B C D],  'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+	end
+end
+
+%apply options
+options=addfielddefault(options,'title','Mesh');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_mesh.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_mesh.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_mesh.py	(revision 21239)
@@ -0,0 +1,29 @@
+try:
+	import pylab as p
+except ImportError:
+	print "could not import pylab, matplotlib has not been installed, no plotting capabilities enabled"
+
+from processmesh import processmesh
+from applyoptions import applyoptions
+
+def plot_mesh(md,options,ax):
+	'''
+	PLOT_MESH - plot model mesh
+
+		Usage:
+			plot_mesh(md,options,nlines,ncols,i)
+
+		See also: PLOTMODEL
+	'''
+
+	x,y,z,elements,is2d,isplanet=processmesh(md,[],options)
+
+	if is2d:
+		ax.triplot(x,y,elements)
+	else:
+		print 'WARNING: only 2D mesh plot is currently implemented'
+	
+	#apply options
+	options.addfielddefault('title','Mesh')
+	options.addfielddefault('colorbar','off')
+	options.addfielddefault('ticklabels','on')
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_none.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_none.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_none.m	(revision 21239)
@@ -0,0 +1,20 @@
+function plot_none(md,options,nlines,ncols,i)
+%PLOT_NONE - plot nothing, just apply options
+%
+%   Usage:
+%      plot_mesh(md,options,nlines,ncols,i);
+%
+%   See also: PLOTMODEL
+return;
+
+options=addfielddefault(options,'colorbar','none');
+options=addfielddefault(options,'map','none');
+options=addfielddefault(options,'axis','equal');
+
+if exist(options,'overlay'),
+	plot_overlay(md,'none',options,nlines,ncols,i);
+	return;
+end
+
+%apply options
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_overlay.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_overlay.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_overlay.js	(revision 21239)
@@ -0,0 +1,162 @@
+function plot_overlay(md,data,options,canvas){
+	//PLOT_OVERLAY - Function for plotting a georeferenced image.  
+	//
+	//   Usage:
+	//      plot_overlay(md,data,options,canvas);
+	//
+	//   See also: PLOTMODEL, PLOT_MANAGER
+
+	//declare variables:  {{{
+	var vertices = [];
+	var indices = [];
+	var texcoords = [];
+	var nanindices = {};
+	var xmin,xmax;
+	var ymin,ymax;
+	var zmin,zmax;
+	var matrixscale,vertexscale;
+
+	//Process data and model
+	var meshresults = processmesh(md,data,options);
+	var x = meshresults[0]; 
+	var y = meshresults[1]; 
+	var z = meshresults[2]; 
+	var elements = meshresults[3]; 
+	var is2d = meshresults[4]; 
+	var isplanet = meshresults[5];
+
+	//Compue scaling through matrices for 2d meshes and vertices for 3d meshes
+	if (!md.geometry.surface) {
+		md.geometry.surface=NewArrayFill(md.mesh.x.length,0);
+	}
+	if (md.mesh.classname() == 'mesh3dsurface') {
+		matrixscale = 1;
+		vertexscale = options.getfieldvalue('heightscale',1);
+	}
+	else {
+		if (md.geometry.surface) {
+			z=md.geometry.surface;
+		}	
+		matrixscale = options.getfieldvalue('heightscale',1);
+		vertexscale = 0;
+	}
+	//}}}
+	
+	//Compute coordinates and data range:
+	var modelxlim = [ArrayMin(x),ArrayMax(x)];
+	var modelylim = [ArrayMin(y),ArrayMax(y)];
+	var modelzlim = [ArrayMin(z),ArrayMax(z)];
+	var xlim = options.getfieldvalue('xlim',modelxlim);
+	var ylim = options.getfieldvalue('ylim',modelylim);
+	var zlim = options.getfieldvalue('zlim',modelzlim);
+	xmin = xlim[0];
+	xmax = xlim[1];
+	ymin = ylim[0];
+	ymax = ylim[1];
+	zmin = zlim[0];
+	zmax = zlim[1];
+		
+	//Compute gl variables:
+	var gl = canvas.gl;
+	var node = Node(gl);
+	canvas.nodes[canvas.nodes.length] = node;
+	node.name = "overlay";
+	node.shaderName = (options.getfieldvalue('render',[]).indexOf('ground')!=-1) ? "GroundFromSpace" : "Textured";
+	node.shader = gl.shaders[node.shaderName];
+	node.scale = [1, 1, matrixscale];
+	node.rotation = [-90, 0, 0];
+	node.translation = [0, 0, 0];
+	node.center = [(xmin + xmax) / 2, (ymin + ymax) / 2, (zmin + zmax) / 2];
+	node.texture = initTexture(gl,options.getfieldvalue('overlay_image'));
+	node.alpha = options.getfieldvalue('outeralpha',1.0);
+	node.drawOrder = 1;
+	node.maskEnabled = options.getfieldvalue('outermask','off') == 'on';
+	node.maskHeight = options.getfieldvalue('outermaskheight',150.0);
+	node.maskColor = options.getfieldvalue('outermaskcolor',[0.0,0.0,1.0,1.0]);
+	updateModelMatrix(node);
+	
+	//Handle outer radaroverlay
+	if (md.radaroverlay.outerx) {
+		var newelements = [];
+		for (var i = 0; i < md.radaroverlay.outerindex.length; i++) {
+			newelements[newelements.length] = [md.radaroverlay.outerindex[i][0] + x.length, md.radaroverlay.outerindex[i][1] + y.length, md.radaroverlay.outerindex[i][2] + z.length];
+		}
+		x = [].concat(x, md.radaroverlay.outerx);
+		y = [].concat(y, md.radaroverlay.outery);
+		z = [].concat(z, md.radaroverlay.outerheight);
+		elements = [].concat(elements, newelements);
+		
+		//Reclaculate bounds based on otuer radaroverlay
+		modelxlim = [ArrayMin(x),ArrayMax(x)];
+		modelylim = [ArrayMin(y),ArrayMax(y)];
+		modelzlim = [ArrayMin(z),ArrayMax(z)];
+		xmin = xlim[0];
+		xmax = xlim[1];
+		ymin = ylim[0];
+		ymax = ylim[1];
+		zmin = zlim[0];
+		zmax = zlim[1];
+		
+		node.center = [node.center[0], node.center[1], -zmax];
+	}
+	
+	var xrange = modelxlim[1] - modelxlim[0];
+	var yrange = modelylim[1] - modelylim[0];
+	
+	var xyz = vec3.create();
+	var direction = vec3.create();
+	var vertex = vec3.create();
+	var magnitude;
+
+	//generate mesh:
+	for(var i = 0; i < x.length; i++){
+		//Check for NaN values and remove from indices array as necessary, but preserve vertex array spacing
+		if (isNaN(x[i]) || isNaN(y[i]) || isNaN(z[i])) {
+			nanindices[i] = i;
+			vertices[vertices.length] = vertex[0];
+			vertices[vertices.length] = vertex[1];
+			vertices[vertices.length] = vertex[2];
+			
+			texcoords[texcoords.length] = 0.0;
+			texcoords[texcoords.length] = 0.0;
+			continue;
+		}
+
+		if (md.mesh.classname() == 'mesh3dsurface') {
+			//Scale vertices
+			xyz = vec3.fromValues(x[i], y[i], z[i]);
+			magnitude = vec3.length(xyz) + md.geometry.surface[i] * vertexscale;
+			vec3.normalize(direction, xyz);
+			vec3.scale(vertex, direction, magnitude);
+			vertices[vertices.length] = vertex[0];
+			vertices[vertices.length] = vertex[1];
+			vertices[vertices.length] = vertex[2];
+			
+			texcoords[texcoords.length] = Math.atan2(vertex[1], vertex[0]) / (2 * Math.PI) + 0.5;
+			texcoords[texcoords.length] = Math.asin(vertex[2] / magnitude) / Math.PI + 0.5;
+		}
+		else {
+			//Scale vertices
+			xyz = vec3.fromValues(x[i], y[i], z[i]);
+			magnitude = vec3.length(xyz);
+			vec3.normalize(direction, xyz);
+			vec3.scale(vertex, direction, magnitude);
+			vertices[vertices.length] = vertex[0];
+			vertices[vertices.length] = vertex[1];
+			vertices[vertices.length] = vertex[2];
+			
+			texcoords[texcoords.length] = (x[i] - modelxlim[0]) / xrange;
+			texcoords[texcoords.length] = (y[i] - modelylim[0]) / yrange;
+		}
+	}
+	//linearize the elements array:
+	var element;
+	for(var i = 0; i < elements.length; i++){
+		element = [elements[i][0] - 1, elements[i][1] - 1, elements[i][2] - 1];
+		if (element[0] in nanindices || element[1] in nanindices || element[2] in nanindices) continue;
+		indices[indices.length] = element[0];
+		indices[indices.length] = element[1];
+		indices[indices.length] = element[2];
+	}
+	node.mesh = GL.Mesh.load({vertices:vertices, coords:texcoords, triangles:indices}, null, null, gl);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_overlay.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_overlay.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_overlay.m	(revision 21239)
@@ -0,0 +1,159 @@
+function plot_overlay(md,data,options,plotlines,plotcols,i)
+%PLOT_OVERLAY - superimpose radar image to a given field
+%
+%   Usage:
+%      plot_overlay(md,data,options,plotlines,plotcols,i)
+%
+%   See also: PLOTMODEL
+
+%process mesh and data
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+if strcmpi(data,'none'),
+	radaronly=1;
+	data=NaN*ones(md.mesh.numberofvertices,1);
+	datatype=1;
+else
+	radaronly=0;
+	[data datatype]=processdata(md,data,options);
+end
+
+%check is2d
+if ~is2d, 
+	error('buildoverlay error message: overlay not supported for 3d meshes, project on a layer');
+end
+if datatype==3,
+	error('buildoverlay error message: overlay not supported for quiver plots');
+end
+
+%radar power
+if ~any(isnan(md.radaroverlay.x)) & ~any(isnan(md.radaroverlay.y)) & ~any(isnan(md.radaroverlay.pwr)),
+	disp('plot_overlay info: the radar image held by the model is being used');
+	xlim=[min(md.radaroverlay.x) max(md.radaroverlay.x)];
+	ylim=[min(md.radaroverlay.y) max(md.radaroverlay.y)];
+else
+	disp('Extracting radar image...');
+	%Get xlim and ylim (used to extract radar image)
+	xlim=getfieldvalue(options,'xlim',[min(x) max(x)])/getfieldvalue(options,'unit',1);
+	ylim=getfieldvalue(options,'ylim',[min(y) max(y)])/getfieldvalue(options,'unit',1);
+	options=addfielddefault(options,'xlim',xlim);
+	options=addfielddefault(options,'ylim',ylim);
+	md=radarpower(md,options);
+end
+contrast = getfieldvalue(options,'contrast',1);  
+radar = (md.radaroverlay.pwr).^(contrast);
+radar = radar./max(radar(:));
+if size(radar,3)>1,
+	disp('WARNING: color image converted to greyscale intensity image');
+	radar=sum(radar,3)/3;
+end
+%radar(find(radar==0))=1; %Change background from black to white
+
+%InterpFromMeshToGrid
+xmin=min(md.radaroverlay.x);
+ymax=max(md.radaroverlay.y);
+xspacing=(max(md.radaroverlay.x)-min(md.radaroverlay.x))/(length(md.radaroverlay.x));
+yspacing=(max(md.radaroverlay.y)-min(md.radaroverlay.y))/(length(md.radaroverlay.y));
+nlines=length(md.radaroverlay.y);
+ncols =length(md.radaroverlay.x);
+disp('Interpolating data on grid...');
+if radaronly,
+	x_m=xmin:xspacing:xmin+ncols*xspacing;
+	y_m=ymax-nlines*yspacing:yspacing:ymax;
+	data_grid=NaN*ones(nlines,ncols);
+else
+	[x_m y_m data_grid]=InterpFromMeshToGrid(elements,x/getfieldvalue(options,'unit',1),y/getfieldvalue(options,'unit',1),...
+		data,xmin,ymax,xspacing,yspacing,nlines,ncols,NaN);
+end
+
+%Process data_grid (For processing, it is better not to have nan)
+pos=find(isinf(data_grid));
+if ~isempty(pos),
+	disp('Warning: removing Infs from vector (probably log(0)?)');
+	data_grid(pos)=NaN;
+end
+if exist(options,'caxis'),
+	caxis_opt=getfieldvalue(options,'caxis');
+	data_grid(find(data_grid<caxis_opt(1)))=caxis_opt(1);
+	data_grid(find(data_grid>caxis_opt(2)))=caxis_opt(2);
+	data_min=caxis_opt(1);
+	data_max=caxis_opt(2);
+else
+	data_min=min(data_grid(:));
+	data_max=max(data_grid(:));
+end
+data_nan=find(isnan(data_grid));
+data_grid(data_nan)=data_min; 
+
+%Special colormaps that require hsv treatment
+colorm=getfieldvalue(options,'colormap','Rignot');
+if strcmpi(colorm,'Rignot') | strcmpi(colorm,'Seroussi') | strcmpi(colorm,'redblue')
+	if strcmpi(colorm,'Rignot'),
+		transparency=getfieldvalue(options,'alpha',1);
+		h=(data_grid-data_min)/(data_max-data_min+eps);
+		if radaronly, h(:)=0; end
+		s=max(min((0.1+h).^(1/transparency),1),0);
+	elseif strcmpi(colorm,'Seroussi'),
+		transparency=getfieldvalue(options,'alpha',1);
+		h=1-(data_grid-data_min)/(data_max-data_min+eps)*0.7;
+		if radaronly, h(:)=0; end
+		s=max(min((0.1+h).^(1/transparency),1),0);
+	elseif strcmpi(colorm,'redblue')
+		data_mean=data_min+(data_max-data_min)/2;
+		h=1*ones(size(data_grid));
+		h(find(data_grid<data_mean))=0.7;
+		s=max(min(abs(data_grid-data_mean)/(data_max-data_mean) ,1),0);
+	else
+		error('colormap not supported yet. (''Rignot'' and ''redblue'' are the only cupported colormaps)');
+	end
+	%(S) Saturation is 0 in NaNs
+	s(data_nan)=0;
+	%(V) intensity is based on radar image
+	v=radar; %use radar power as intensity
+
+	%Transform HSV to RGB
+	image_hsv=zeros(size(data_grid,1),size(data_grid,2),3);
+	image_hsv(:,:,1)=h; clear h;
+	image_hsv(:,:,2)=s; clear s;
+	image_hsv(:,:,3)=v; clear v;
+	image_rgb=hsv2rgb(image_hsv);
+else
+	colorm = getcolormap(options);
+	len    = size(colorm,1);
+
+	ind = ceil((len-1)*(data_grid-data_min)/(data_max - data_min + eps) +1);
+	ind(find(ind>len))=len;
+	image_rgb=zeros(size(data_grid,1),size(data_grid,2),3);
+	r=colorm(:,1); image_rgb(:,:,1)=r(ind); clear r;
+	g=colorm(:,2); image_rgb(:,:,2)=g(ind); clear g;
+	b=colorm(:,3); image_rgb(:,:,3)=b(ind); clear b;
+
+	%Now add radarmap
+	r = image_rgb(:,:,1).*radar;  r(data_nan) = radar(data_nan);  image_rgb(:,:,1) = r;  clear r;
+	g = image_rgb(:,:,2).*radar;  g(data_nan) = radar(data_nan);  image_rgb(:,:,2) = g;  clear g;
+	b = image_rgb(:,:,3).*radar;  b(data_nan) = radar(data_nan);  image_rgb(:,:,3) = b;  clear b;
+end
+
+%Select plot area 
+subplotmodel(plotlines,plotcols,i,options);
+
+%Plot: 
+imagesc(md.radaroverlay.x*getfieldvalue(options,'unit',1),md.radaroverlay.y*getfieldvalue(options,'unit',1),image_rgb);set(gca,'YDir','normal');
+
+%last step: mesh overlay?
+if exist(options,'edgecolor'),
+	hold on
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	patch('Faces',[A B C],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none',...
+		'EdgeColor',getfieldvalue(options,'edgecolor'),'LineWidth',getfieldvalue(options,'linewidth',1));
+end
+
+%Apply options, without colorbar and without grid
+options=changefieldvalue(options,'colormap',colorm);              % We used an HSV colorbar
+if ~isnan(data_min),
+	options=changefieldvalue(options,'caxis',[data_min data_max]); % force caxis so that the colorbar is ready
+end
+options=addfielddefault(options,'xlim',xlim);        % default xlim
+options=addfielddefault(options,'ylim',ylim);        % default ylim
+options=addfielddefault(options,'axis','equal off'); % default axis
+applyoptions(md,data,options);
+drawnow
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_overlay.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_overlay.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_overlay.py	(revision 21239)
@@ -0,0 +1,132 @@
+import numpy as npy
+from processmesh import processmesh
+from processdata import processdata
+from xy2ll import xy2ll
+import matplotlib.pyplot as plt
+import matplotlib as mpl
+try:
+    from mpl_toolkits.basemap import Basemap
+except ImportError:
+    print 'Basemap toolkit not installed'
+
+import os
+
+try:
+        from osgeo import gdal
+except ImportError:
+	print 'osgeo/gdal for python not installed, plot_overlay is disabled'
+
+
+def plot_overlay(md,data,options,ax):
+	'''
+	Function for plotting a georeferenced image.  This function is called
+	from within the plotmodel code.
+	'''
+
+	x,y,z,elements,is2d,isplanet=processmesh(md,[],options)
+
+	if data=='none' or data==None:
+		imageonly=1
+		data=npy.float('nan')*npy.ones((md.mesh.numberofvertices,))
+		datatype=1
+	else:
+		imageonly=0
+		data,datatype=processdata(md,data,options)
+
+	if not is2d:
+		raise StandardError('overlay plot not supported for 3D meshes, project on a 2D layer first')
+
+	if not options.exist('geotiff_name'):
+		raise StandardError('overlay error: provide geotiff_name with path to geotiff file')
+	geotiff=options.getfieldvalue('geotiff_name')
+
+	xlim=options.getfieldvalue('xlim',[min(md.mesh.x),max(md.mesh.x)])
+	ylim=options.getfieldvalue('ylim',[min(md.mesh.y),max(md.mesh.y)])
+
+	gtif=gdal.Open(geotiff)
+	trans=gtif.GetGeoTransform()
+	xmin=trans[0]
+	xmax=trans[0]+gtif.RasterXSize*trans[1]
+	ymin=trans[3]+gtif.RasterYSize*trans[5]
+	ymax=trans[3]
+	
+	# allow supplied geotiff to have limits smaller than basemap or model limits
+	x0=max(min(xlim),xmin)
+	x1=min(max(xlim),xmax)
+	y0=max(min(ylim),ymin)
+	y1=min(max(ylim),ymax)
+	inputname='temp.tif'
+	os.system('gdal_translate -quiet -projwin ' + str(x0) + ' ' + str(y1) + ' ' + str(x1) + ' ' + str(y0) + ' ' + geotiff + ' ' + inputname)
+	
+	gtif=gdal.Open(inputname)
+	arr=gtif.ReadAsArray()
+	#os.system('rm -rf ./temp.tif')
+	
+	if gtif.RasterCount>=3:  # RGB array
+		r=gtif.GetRasterBand(1).ReadAsArray()
+		g=gtif.GetRasterBand(2).ReadAsArray()
+		b=gtif.GetRasterBand(3).ReadAsArray()
+		arr=0.299*r+0.587*g+0.114*b
+
+	# normalize array
+	arr=arr/npy.float(npy.max(arr.ravel()))
+        arr=1.-arr # somehow the values got flipped
+
+	if options.getfieldvalue('overlayhist',0)==1:
+		ax=plt.gca()
+		num=2
+		while True:
+			if not plt.fignum_exists(num):
+				break
+			else:
+				num+=1
+		plt.figure(num)
+		plt.hist(arr.flatten(),bins=256,range=(0.,1.))
+		plt.title('histogram of overlay image, use for setting overlaylims')
+                plt.show()
+		plt.sca(ax) # return to original axes/figure
+		
+	# get parameters from cropped geotiff
+	trans=gtif.GetGeoTransform()
+	xmin=trans[0]
+	xmax=trans[0]+gtif.RasterXSize*trans[1]
+	ymin=trans[3]+gtif.RasterYSize*trans[5]
+	ymax=trans[3]
+	dx=trans[1]
+	dy=trans[5]	
+	
+	xarr=npy.arange(xmin,xmax,dx)
+	yarr=npy.arange(ymin,ymax,-dy) # -dy since origin='upper' (not sure how robust this is)
+	xg,yg=npy.meshgrid(xarr,yarr)
+	overlaylims=options.getfieldvalue('overlaylims',[min(arr.ravel()),max(arr.ravel())])
+	norm=mpl.colors.Normalize(vmin=overlaylims[0],vmax=overlaylims[1])
+
+	if options.exist('basemap'):
+		# create coordinate grid in map projection units (for plotting)
+		lat,lon=xy2ll(xlim,ylim,-1,0,71)
+                #plt.sca(ax)
+                width=xmax-xmin
+                height=ymax-ymin
+                lat_0,lon_0=xy2ll(xmin+width/2.,ymin+height/2.,-1,0,71)
+	        m=Basemap(projection='spstere',
+                        llcrnrlon=lon[0],llcrnrlat=lat[0],urcrnrlon=lon[1],urcrnrlat=lat[1],
+                        epsg=3031,
+                        resolution='c')
+                        #width=width,height=height,lon_0=lon_0,lat_0=lat_0,
+                        #lat_0=-90,lon_0=0,lat_ts=-71,
+                        #llcrnrx=x0,llcrnry=y0,urcrnrx=x1,urcrnry=y1)
+                #test
+                #m.ax=ax
+	        meridians=npy.arange(-180.,181.,1.)
+	        parallels=npy.arange(-80.,80.,1.)
+	        m.drawparallels(parallels,labels=[0,0,1,1]) # labels=[left,right,top,bottom]
+	        m.drawmeridians(meridians,labels=[1,1,0,0])
+                m.drawcoastlines()
+	        pc=m.pcolormesh(xg, yg, npy.flipud(arr), cmap=mpl.cm.Greys, norm=norm, ax=ax)
+
+	else:
+	        pc=ax.pcolormesh(xg, yg, npy.flipud(arr), cmap=mpl.cm.Greys, norm=norm)
+        
+	#rasterization? 
+	if options.getfieldvalue('rasterized',0):
+		pc.set_rasterized(True)
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_parthist.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_parthist.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_parthist.m	(revision 21239)
@@ -0,0 +1,34 @@
+function plot_parthist(md,options,nlines,ncols,i)
+%PLOT_PARTHIST - plot partitioning histogram
+%
+%   Usage:
+%      plot_parthist(md,options,nlines,ncols,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%plot mesh
+subplot(nlines,ncols,i); 
+
+imin=min(md.qmu.partition);
+imax=max(md.qmu.partition);
+
+part=zeros(imax-imin+1,2);
+
+for i=imin:imax
+    ind=find(md.qmu.partition == i);
+    part(i-imin+1,1)=length(ind);
+	part(i-imin+1,2)=sum(md.vertex_weight(ind));
+end
+
+subplot(2,1,1)
+bar(imin:imax,part(:,1));
+xlim([imin-0.5 imax+0.5])
+title('Number of Nodes in Each Partition')
+
+subplot(2,1,2)
+bar(imin:imax,part(:,2));
+xlim([imin-0.5 imax+0.5])
+title('Total Weight in Each Partition')
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_parthistn.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_parthistn.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_parthistn.m	(revision 21239)
@@ -0,0 +1,43 @@
+function plot_parthist(md,options,nlines,ncols,i)
+%PLOT_PARTHIST - plot partitioning histogram
+%
+%   Usage:
+%      plot_parthist(md,options,nlines,ncols,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%plot mesh
+subplot(nlines,ncols,i); 
+
+imin=min(md.qmu.partition);
+imax=max(md.qmu.partition);
+
+part=zeros(imax-imin+1,2);
+
+for i=imin:imax
+    ind=find(md.qmu.partition == i);
+    part(i-imin+1,1)=length(ind);
+	part(i-imin+1,2)=sum(md.vertex_weight(ind));
+end
+
+%subplot(2,1,1)
+bar(imin:imax,part(:,1));
+%xlim([imin-0.5 imax+0.5])
+%title('Number of Nodes in Each Partition')
+options=addfielddefault(options,'xlim',[imin-0.5 imax+0.5]);
+options=addfielddefault(options,'title','Number of Nodes in Each Partition');
+options=addfielddefault(options,'colorbar','off');
+
+%subplot(2,1,2)
+%bar(imin:imax,part(:,2));
+%xlim([imin-0.5 imax+0.5])
+%title('Total Weight in Each Partition')
+%options=addfielddefault(options,'xlim',[imin-0.5 imax+0.5]);
+%options=addfielddefault(options,'title','Total Weight in Each Partition');
+%options=addfielddefault(options,'colorbar','off');
+
+%apply options
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_parthistw.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_parthistw.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_parthistw.m	(revision 21239)
@@ -0,0 +1,43 @@
+function plot_parthist(md,options,nlines,ncols,i)
+%PLOT_PARTHIST - plot partitioning histogram
+%
+%   Usage:
+%      plot_parthist(md,options,nlines,ncols,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%plot mesh
+subplot(nlines,ncols,i); 
+
+imin=min(md.qmu.partition);
+imax=max(md.qmu.partition);
+
+part=zeros(imax-imin+1,2);
+
+for i=imin:imax
+    ind=find(md.qmu.partition == i);
+    part(i-imin+1,1)=length(ind);
+	part(i-imin+1,2)=sum(md.vertex_weight(ind));
+end
+
+%subplot(2,1,1)
+%bar(imin:imax,part(:,1));
+%xlim([imin-0.5 imax+0.5])
+%title('Number of Nodes in Each Partition')
+%options=addfielddefault(options,'xlim',[imin-0.5 imax+0.5]);
+%options=addfielddefault(options,'title','Number of Nodes in Each Partition');
+%options=addfielddefault(options,'colorbar','off');
+
+%subplot(2,1,2)
+bar(imin:imax,part(:,2));
+%xlim([imin-0.5 imax+0.5])
+%title('Total Weight in Each Partition')
+options=addfielddefault(options,'xlim',[imin-0.5 imax+0.5]);
+options=addfielddefault(options,'title','Total Weight in Each Partition');
+options=addfielddefault(options,'colorbar','off');
+
+%apply options
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_penalties.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_penalties.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_penalties.m	(revision 21239)
@@ -0,0 +1,48 @@
+function plot_penalties(md,options,width,i)
+%PLOT_PENALTIES - plot penalties
+%
+%   Usage:
+%      plot_penalties(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%plot mesh penalties
+subplot(width,width,i); 
+
+%units
+if exist(options,'unit'),
+	unit=getfieldvalue(options,'unit');
+	x=x*unit;
+	y=y*unit;
+	z=z*unit;
+end
+
+if dimension(md.mesh)~=3,
+	error('no penalties to plot for ''2d'' model');
+elseif isempty(md.penalties),
+	disp('no penalty applied in this model');
+	return;
+else
+	%plot mesh
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+	patch( 'Faces', [A B C],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+
+	hold on;
+	for (i=1:size(md.penalties,1)),
+		P1=plot3(x(md.penalties(i,1)),y(md.penalties(i,1)),z(md.penalties(i,1)),'ro','MarkerSize',15,'MarkerFaceColor','r');
+		P2=plot3(x(md.penalties(i,:)),y(md.penalties(i,:)),z(md.penalties(i,:)),'bo-','LineWidth',2,'MarkerSize',8,'MarkerFaceColor','b');
+	end
+	legend([P1 P2],'SSA''s penalized nodes','HO''s penalized nodes');
+end
+
+%apply options
+options=addfielddefault(options,'title','Penalties');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_profile.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_profile.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_profile.m	(revision 21239)
@@ -0,0 +1,55 @@
+function plot_profile(md,data,options,nlines,ncols,ii)
+%PLOT_SECTION - plot a given field on a profile
+%
+%   Usage:
+%      plot_profile(md,data,options,nlines,ncols,i)
+%
+%   See also: PLOTMODEL
+
+%process model
+[x_m y_m z_m elements_m is2d isplanet]=processmesh(md,[],options);
+if is2d, error('only 3d model supported'); end
+
+%Get number of curves and generate random colors
+numcurves=size(data,2);
+colorm=getfieldvalue(options,'colormap','lines');
+color=eval([ colorm '(numcurves);']);
+options=removefield(options,'colormap',0); %back to default colormap
+
+%Get coordinates
+location=getfieldvalue(options,'profile');
+if ~isnumeric(location) | numel(location)~=2,
+	error('location provided not supported (should be [x y])');
+end
+xprof=location(1);
+yprof=location(2);
+
+%Loop over number of curves
+for i=1:numcurves,
+
+	%Process data
+	[datai datatype]=processdata(md,data(:,i),options);
+
+	%resolution[z,data_interp]=ProfileValues(md,datai,xprof,yprof,resolution);
+	if exist(options,'resolution'),
+		resolution=getfieldvalue(options,'resolution');
+	else %Default resolution
+		resolution=[100];
+		disp(['plot_profile warning: no resolution specified, using default: ' num2str(resolution) ]);
+	end
+
+	%Compute profile value
+	[z,data_interp]=ProfileValues(md,datai,xprof,yprof,resolution);
+
+	%plot profile
+	subplot(nlines,ncols,ii)
+	plot(data_interp,z,'color',color(i,:),'LineWidth',getfieldvalue(options,'linewidth',1),'LineStyle','-');
+	hold on;
+end
+
+%apply options
+options=addfielddefault(options,'title','Profile');
+options=addfielddefault(options,'colorbar',0);
+options=addfielddefault(options,'ylabel','z');
+options=addfielddefault(options,'view',2);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_qmu_mass_flux_segments.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_qmu_mass_flux_segments.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_qmu_mass_flux_segments.m	(revision 21239)
@@ -0,0 +1,49 @@
+function plot_qmu_mass_flux_segments(md,options,nlines,ncols,i)
+%PLOT_QMU_MASS_FLUX_SEGMENTS - plot segments from the qmu analysis of mass fluxes
+%
+%   Usage:
+%      plot_qmu_mass_flux_segments(md,options,nlines,ncols,i);
+%
+
+subplot(nlines,ncols,i); 
+
+%process mesh and data
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+allsegments=md.qmu.mass_flux_segments;
+
+if dimension(md.mesh)==2,
+
+	%recover segments
+	hold on
+	for i=1:length(allsegments),
+		segments=allsegments{i};
+
+		%plot semgnets
+		for j=1:length(segments),
+			plot([segments(j,1) segments(j,3)],[segments(j,2) segments(j,4)]);
+		end
+		text(segments(j,1),segments(j,2),['Profile #' num2str(i)]);
+
+		%plot normals
+
+		for j=1:length(segments),
+			xstart=mean([segments(j,1) segments(j,3)]);
+			ystart=mean([segments(j,2) segments(j,4)]);
+			length1=sqrt((segments(j,1)-segments(j,3)).^2 + (segments(j,2)-segments(j,4)).^2);
+			normal(:,1)=cos(atan2(segments(j,1)-segments(j,3) , segments(j,4)-segments(j,2)));
+			normal(:,2)=sin(atan2(segments(j,1)-segments(j,3) , segments(j,4)-segments(j,2)));
+			xend=xstart+length1.*normal(:,1);
+			yend=ystart+length1.*normal(:,2);
+			plot([xstart xend],[ystart yend],'r-');
+		end
+
+	end
+else
+	error('plot_qmu_mass_flux_segments: 3d plot of segments not supported yet!');
+end
+
+%apply options
+options=addfielddefault(options,'title','Mass Flux segments and normals');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_qmuhistnorm.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_qmuhistnorm.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_qmuhistnorm.m	(revision 21239)
@@ -0,0 +1,47 @@
+function plot_qmuhistnorm(md,options,nlines,ncols,index)
+
+%prepare plot
+subplot(nlines,ncols,index); 
+hold on
+
+%recover histnorm data
+if ~exist(options,'qmudata')
+	error('plot_qmuhistnorm error message: option qmudata is required');
+else
+	qmudata=getfieldvalue(options,'qmudata');
+end
+
+%process options for the qmu plot: 
+
+%    hmin          (numeric, minimum for histogram)
+%    hmax          (numeric, maximum for histogram)
+%    hnint         (numeric, number of intervals for histogram)
+%    ymin1         (numeric, minimum of histogram y-axis)
+%    ymax1         (numeric, maximum of histogram y-axis)
+%    ymin2         (numeric, minimum of cdf y-axis)
+%    ymax2         (numeric, maximum of cdf y-axis)
+%    cdfplt        (char, 'off' to turn off cdf line plots)
+%    cdfleg        (char, 'off' to turn off cdf legends)
+%
+
+qmuoptions='';
+
+if exist(options,'hmin'), hmin=getfieldvalue(options,'hmin'); qmuoptions=[qmuoptions ',''hmin'',' num2str(hmin)]; end
+if exist(options,'hmax'), hmax=getfieldvalue(options,'hmax'); qmuoptions=[qmuoptions ',''hmax'',' num2str(hmax)]; end
+if exist(options,'hnint'), hnint=getfieldvalue(options,'hnint'); qmuoptions=[qmuoptions ',''hnint'',' num2str(hnint)]; end
+if exist(options,'ymin1'), ymin1=getfieldvalue(options,'ymin1'); qmuoptions=[qmuoptions ',''ymin1'',' num2str(ymin1)]; end
+if exist(options,'ymax1'), ymax1=getfieldvalue(options,'ymax1'); qmuoptions=[qmuoptions ',''ymax1'',' num2str(ymax1)]; end
+if exist(options,'ymin2'), ymin2=getfieldvalue(options,'ymin2'); qmuoptions=[qmuoptions ',''ymin2'',' num2str(ymin2)]; end
+if exist(options,'ymax2'), ymax2=getfieldvalue(options,'ymax2'); qmuoptions=[qmuoptions ',''ymax2'',' num2str(ymax2)]; end
+if exist(options,'cdfplt'), cdfplt=getfieldvalue(options,'cdfplt'); qmuoptions=[qmuoptions ',''cdfplt'',''' cdfplt '''']; end
+if exist(options,'cdfleg'), cdfleg=getfieldvalue(options,'cdfleg'); qmuoptions=[qmuoptions ',''cdfleg'',''' cdfleg '''']; end
+if exist(options,'nrmplt'), nrmplt=getfieldvalue(options,'nrmplt'); qmuoptions=[qmuoptions ',''nrmplt'',''' nrmplt '''']; end
+if exist(options,'EdgeColor'), EdgeColor=getfieldvalue(options,'EdgeColor'); qmuoptions=[qmuoptions ',''EdgeColor'',''' EdgeColor '''']; end
+if exist(options,'FaceColor'), FaceColor=getfieldvalue(options,'FaceColor'); qmuoptions=[qmuoptions ',''FaceColor'',''' FaceColor '''']; end
+
+%use qmu plot
+eval(['plot_hist_norm(qmudata' qmuoptions ');']);
+
+%apply options
+options=changefieldvalue(options,'colorbar','off');
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_qmumean.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_qmumean.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_qmumean.m	(revision 21239)
@@ -0,0 +1,59 @@
+function plot_qmumean(md,options,nlines,ncols,i)
+%PLOT_QMUMEAN - plot mean of a scaled response 
+%
+%   Usage:
+%      plot_qmumean(md,options,nlines,ncols,i);
+%
+%   See also: PLOTMODEL
+
+%plot mesh
+subplot(nlines,ncols,i); 
+
+%edgecolor
+edgecolor=getfieldvalue(options,'edgecolor','none');
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%find response function
+if exist(options,'qmudata'), 
+	descriptor=getfieldvalue(options,'qmudata'); 
+	if ~ischar(descriptor),
+		error('plot_qmumean error message:  descriptor should be a string');
+	end
+else 
+	error('plot_qmumean error message:  provide descriptor of response function in ''qmudata'' option');
+end
+
+%go pick up the response: 
+allresponses=md.qmu.results.dresp_out;
+responses=zeros(md.qmu.numberofpartitions,1);
+
+count=1;
+for i=1:length(allresponses),
+	d=allresponses(i).descriptor;
+	if strncmpi(d,'scaled_',7),
+		d=d(8:end);
+		if strncmpi(d,descriptor,length(descriptor)),
+			responses(count)=allresponses(i).mean;
+			count=count+1;
+		end
+	end
+end
+
+%log?
+if exist(options,'log'),
+	responses=log(responses)/log(getfieldvalue(options,'log'));
+end
+
+%now, project onto vertices
+responses_on_node=responses(md.qmu.partition+1);
+
+%plot
+A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', responses_on_node,'FaceColor','interp','EdgeColor',edgecolor);
+
+%apply options
+options=addfielddefault(options,'title',['Mean distribution of ' descriptor]);
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_qmunormplot.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_qmunormplot.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_qmunormplot.m	(revision 21239)
@@ -0,0 +1,45 @@
+%
+%  plot a normal probability plot of the response functions.
+%
+%  []=plot_normplot(rfunc)
+%
+function []=plot_qmunormplot(rfunc,width,ii)
+
+if ~nargin
+    help plot_normplot
+    return
+end
+
+%%  assemble the data into a matrix
+
+desc=cell (1,length(rfunc));
+for i=1:length(rfunc)
+    ldata(i)=length(rfunc(i).sample);
+end
+data=zeros(max(ldata),length(rfunc));
+
+for i=1:length(rfunc)
+    desc(i)=cellstr(rfunc(i).descriptor);
+    data(1:ldata(i),i)=rfunc(i).sample;
+end
+
+%standard plot:
+subplot(width,width,ii);
+
+%%  draw the plot
+
+%  draw normal probability plot
+
+normplot(data)
+ax1=gca;
+
+%  add the annotation
+
+title('Normal Probability Plot of Design Variables and/or Response Functions')
+xlabel('Value')
+ylabel('Probability')
+
+hleg1=legend(ax1,desc,'Location','EastOutside',...
+             'Orientation','vertical','Interpreter','none');
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_qmustddev.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_qmustddev.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_qmustddev.m	(revision 21239)
@@ -0,0 +1,59 @@
+function plot_qmustddev(md,options,nlines,ncols,i)
+%PLOT_QMUMEAN - plot stddev of a scaled response 
+%
+%   Usage:
+%      plot_qmustddev(md,options,nlines,ncols,i);
+%
+%   See also: PLOTMODEL
+
+%plot mesh
+subplot(nlines,ncols,i); 
+
+%edgecolor
+edgecolor=getfieldvalue(options,'edgecolor','none');
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%find response function
+if exist(options,'qmudata'), 
+	descriptor=getfieldvalue(options,'qmudata'); 
+	if ~ischar(descriptor),
+		error('plot_qmustddev error message:  descriptor should be a string');
+	end
+else 
+	error('plot_qmustddev error message:  provide descriptor of response function in ''qmudata'' option');
+end
+
+%go pick up the response: 
+allresponses=md.qmu.results.dresp_out;
+responses=zeros(md.qmu.numberofpartitions,1);
+
+count=1;
+for i=1:length(allresponses),
+	d=allresponses(i).descriptor;
+	if strncmpi(d,'scaled_',7),
+		d=d(8:end);
+		if strncmpi(d,descriptor,length(descriptor)),
+			responses(count)=allresponses(i).stddev/allresponses(i).mean*100;
+			count=count+1;
+		end
+	end
+end
+
+%log?
+if exist(options,'log'),
+	responses=log(responses)/log(getfieldvalue(options,'log'));
+end
+
+%now, project onto vertices
+responses_on_node=responses(md.qmu.partition+1);
+
+%plot
+A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', responses_on_node,'FaceColor','interp','EdgeColor',edgecolor);
+
+%apply options
+options=addfielddefault(options,'title',['Stddev  distribution of ' descriptor ' in %']);
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_quiver.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_quiver.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_quiver.js	(revision 21239)
@@ -0,0 +1,137 @@
+function plot_quiver(md,options,canvas) {
+	//PLOT_QUIVER - quiver plot with colors
+	//
+	//   Usage:
+	//      plot_quiver(md,options,canvas)
+	//
+	//   See also: PLOTMODEL, PLOT_MANAGER
+
+	//declare variables:  {{{
+	var vertices = [];
+	var indices = [];
+	var colors = [];
+	var xmin,xmax;
+	var ymin,ymax;
+	var zmin,zmax;
+	var scale,matrixscale,vertexscale;
+	
+	//Process data and model
+	var meshresults = processmesh(md,[],options);
+	var x = meshresults[0]; 
+	var y = meshresults[1]; 
+	var z = meshresults[2]; 
+	var elements = meshresults[3]; 
+	var is2d = meshresults[4]; 
+	var isplanet = meshresults[5];
+	var v = md.initialization.vel;
+	var vx = md.initialization.vx;
+	var vy = md.initialization.vy;
+		
+	//Compue scaling through matrices for 2d meshes and vertices for 3d meshes
+	if (!md.geometry.surface) {
+		md.geometry.surface=NewArrayFill(md.mesh.x.length,0);
+	}
+	if (md.mesh.classname() == 'mesh3dsurface') {
+		matrixscale = 1;
+		vertexscale = options.getfieldvalue('heightscale',1);
+	}
+	else {
+		if (md.geometry.surface) {
+			z=md.geometry.surface;
+		}	
+		matrixscale = options.getfieldvalue('heightscale',1);
+		vertexscale = 0;
+	}
+	//}}}
+
+	//Compute coordinates and data range:
+	var modelxlim = [ArrayMin(x),ArrayMax(x)];
+	var modelylim = [ArrayMin(y),ArrayMax(y)];
+	var modelzlim = [ArrayMin(z),ArrayMax(z)];
+	var xlim = options.getfieldvalue('xlim',modelxlim);
+	var ylim = options.getfieldvalue('ylim',modelylim);
+	var zlim = options.getfieldvalue('zlim',modelzlim);
+	xmin = xlim[0];
+	xmax = xlim[1];
+	ymin = ylim[0];
+	ymax = ylim[1];
+	zmin = zlim[0];
+	zmax = zlim[1];
+
+	//Compute gl variables:
+	var gl = canvas.gl;
+	var node = Node(gl);
+	canvas.nodes[canvas.nodes.length] = node;
+	node.name = "quiver";
+	node.shaderName = "Colored";
+	node.shader = gl.shaders[node.shaderName];
+	node.lineWidth = options.getfieldvalue('linewidth',1);
+	node.scale = [1, 1, matrixscale];
+	node.rotation = [-90, 0, 0];
+	node.translation = [0, 0, 0];
+	node.center = [(xmin + xmax) / 2, (ymin + ymax) / 2, (zmin + zmax) / 2];
+	node.drawMode = gl.LINES;
+	node.useIndexBuffer = false;
+	node.drawOrder = 0;
+	node.maskEnabled = options.getfieldvalue('innermask','off') == 'on';
+	node.maskHeight = options.getfieldvalue('innermaskheight',150.0)*options.getfieldvalue('heightscale',1);
+	node.maskColor = options.getfieldvalue('innermaskcolor',[0.0,0.0,1.0,1.0]);
+	updateModelMatrix(node);
+
+	//retrieve some options
+	var edgecolor=new RGBColor(options.getfieldvalue('edgecolor','black'));
+	if (edgecolor.ok) edgecolor = [edgecolor.r/255.0, edgecolor.g/255.0, edgecolor.b/255.0, 1.0];
+	else throw Error(sprintf("s%s%s\n","initWebGL error message: cound not find out edgecolor color for curent canvas ",canvas));
+
+	//node plot {{{
+	if (elements[0].length==6){ //prisms
+	}
+	else if (elements[0].length==4){ //tetras
+	}
+	else{ //2D triangular elements
+		var xyz = vec3.create();
+		var xyz = vec3.create();
+		var direction = vec3.create();
+		var vertex = vec3.create();
+		var vertexBase = vec3.create();
+		var verticesArrow = [vec3.fromValues(0.0, 0.0, 0.0), vec3.fromValues(1.0, 0.0, 0.0), vec3.fromValues(0.667, -0.167, 0.0), vec3.fromValues(1.0, 0.0, 0.0), vec3.fromValues(0.667, 0.166, 0.0), vec3.fromValues(1.0, 0.0, 0.0)];
+		var magnitude;
+		var color = edgecolor;
+		var scaling = options.getfieldvalue('scaling',1);
+		var scale;
+		for(var i = 0; i < x.length; i++){
+			//Check for NaN values and remove from indices array as necessary, but preserve vertex array spacing
+			if (isNaN(x[i]) || isNaN(y[i]) || isNaN(z[i])) continue;
+			//Scale vertices
+			xyz = vec3.fromValues(x[i], y[i], z[i]);
+			magnitude = vec3.length(xyz) + md.geometry.surface[i] * vertexscale;
+			vec3.normalize(direction, xyz);
+			vec3.scale(vertex, direction, magnitude);
+			vec3.copy(vertexBase, vertex);
+			
+			scale = scaling*v[i];
+			var modelMatrix = mat4.create();
+			var scaleMatrix = mat4.create();
+			var rotationMatrix = mat4.create();
+			mat4.scale(scaleMatrix, scaleMatrix, vec3.fromValues(scale, scale, scale));
+			mat4.rotate(rotationMatrix, rotationMatrix, Math.atan2(vy[i], vx[i]), [0.0, 0.0, 1.0]);
+			mat4.multiply(modelMatrix, rotationMatrix, scaleMatrix);
+
+			var temp = vec3.fromValues(0.0, 0.0, 0.0);
+			for (var j = 0; j < 6; j++){
+				vec3.transformMat4(vertex, verticesArrow[j], modelMatrix);
+				vec3.add(vertex, vertex, vertexBase);
+				vertices[vertices.length] = vertex[0];
+				vertices[vertices.length] = vertex[1];
+				vertices[vertices.length] = vertex[2];
+				
+				colors[colors.length] = color[0];
+				colors[colors.length] = color[1];
+				colors[colors.length] = color[2];
+				colors[colors.length] = color[3];
+			}
+		}
+	}
+	//}}}
+	node.mesh = GL.Mesh.load({vertices:vertices, colors:colors}, null, null, gl);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_quiver.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_quiver.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_quiver.m	(revision 21239)
@@ -0,0 +1,28 @@
+function plot_quiver(x,y,u,v,options),
+%PLOT_QUIVER - quiver plot with colors
+%
+%   to be perfected tomorrow
+%
+%   Usage:
+%      plot_quiver(x,y,u,v,options)
+%
+%   Example:
+%      plot_quiver(md.mesh.x,md.mesh.y,md.initialization.vx,md.initialization.vy,options);
+
+%process fields
+[quivers,palette]=quiver_process(x,y,u,v,options);
+
+%loop over the number of colors
+hold on
+h=[];
+for i=1:quivers.numcolors
+	pos=find(quivers.colorind==i);
+	if ~isempty(pos),
+		hprime=quiver(quivers.x(pos),quivers.y(pos),quivers.u(pos),quivers.v(pos),...
+			'Color',palette(i,:),'ShowArrowHead','on','AutoScale','off');
+		h=[h;hprime];
+	end
+end
+
+%take care of colorbar
+quiver_colorbar(quivers,options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_quiver3.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_quiver3.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_quiver3.m	(revision 21239)
@@ -0,0 +1,104 @@
+function plot_quiver3(x,y,z,u,v,w,options),
+%PLOT_QUIVER3 - 3d quiver plot with colors
+%
+%   to be perfected tomorrow
+%
+%   Usage:
+%      plot_quiver3(x,y,z,u,v,w,options)
+%
+%   Example:
+%      plot_quiver(md.mesh.x,md.mesh.y,md.mesh.z,md.initialization.vx,md.initialization.vy,md.initialization.vz,options);
+
+%keep only non NaN elements
+pos=find(~isnan(x) & ~isnan(y) & ~isnan(z) & ~isnan(u) & ~isnan(v) & ~isnan(w));
+x=x(pos); y=y(pos); z=z(pos);
+u=u(pos); v=v(pos); w=w(pos);
+
+%get norm Min and Max
+Norm=sqrt(u.^2+v.^2+w.^2);
+Min=min(Norm);
+Max=max(Norm);
+
+%process options: scaling factor?
+scalingfactor=getfieldvalue(options,'scaling',0.40);
+
+%number of colors?
+colorlevels=getfieldvalue(options,'colorlevels',NaN);
+if isnumeric(colorlevels),
+	if isnan(colorlevels),
+		numcolors=30;
+	else
+		numcolors=colorlevels;
+	end
+	levels=round_ice(linspace(Min,Max,numcolors+1),2);
+else
+	levels=zeros(1,length(colorlevels)+2);
+	levels(1)=Min;
+	for i=1:length(colorlevels)
+		levels(i+1)=colorlevels{i};
+	end
+	levels(end)=Max;
+	levels=sort(unique(levels));
+	numcolors=length(levels)-1;
+end
+
+%set the colormap 
+if numcolors==2;
+	%blue and red
+	c=[0 0 1;1 0 0];
+elseif numcolors==3,
+	%blue yellow and red
+	c=[0 0 1;1 1 0;1 0 0];
+else
+	%let jet choose
+	c=colormap(jet(numcolors));
+end
+
+%Scale data
+if strcmpi(getfieldvalue(options,'autoscale','on'),'off'),
+	delta=((min(x)-max(x))^2+(min(y)-max(y))^2)/numel(x);
+	u=scalingfactor*sqrt(delta)*u./Norm;
+	v=scalingfactor*sqrt(delta)*v./Norm;
+else
+	delta=((min(x)-max(x))^2+(min(y)-max(y))^2)/numel(x);
+	u=scalingfactor*sqrt(delta)*u./max(Norm);
+	v=scalingfactor*sqrt(delta)*v./max(Norm);
+end
+
+%loop over the number of colors
+hold on
+h=[];
+for i=1:numcolors
+	pos=find( (Norm>=levels(i)) & (Norm<=levels(i+1)) );
+	hprime=quiver3(x(pos),y(pos),z(pos),u(pos),v(pos),w(pos),'Color',c(i,:),'ShowArrowHead','on','AutoScale','off');
+	h=[h;hprime];
+end
+
+%take care of colorbar
+if  ~strcmpi(getfieldvalue(options,'colorbar','on'),'off'),
+
+	%build ticks
+	hcb=colorbar('peer',gca,'location','EastOutside');
+	ticklabel=cell(1,length(levels));
+	for i=1:length(levels),
+		ticklabel{i}=num2str(round_ice(levels(i),3));
+	end
+	tickpos=1:numcolors+1;
+
+	%remove ticks if to many have been created
+	proportion=round(length(levels)/10);
+	if proportion>1,
+		ticklabel=ticklabel(1:proportion:end);
+		tickpos=tickpos(1:proportion:end);
+	end
+
+	%draw colorbar
+	set(hcb,'YTickLabel',ticklabel,'YTick',tickpos);
+	%position
+	if exist(options,'colorbarpos'),
+		set(hcb,'Position',getfieldvalue(options,'colorbarpos'));
+	end
+	%fontsize
+	fontsize=getfieldvalue(options,'fontsize',14);
+	set(hcb,'FontSize',fontsize);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_referential.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_referential.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_referential.m	(revision 21239)
@@ -0,0 +1,91 @@
+function plot_referential(md,options,width,i,data)
+%PLOT_PRESSURELOAD - plot segment on neumann BC
+%
+%   Usage:
+%      plot_referential(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%plot mesh boundaries
+subplot(width,width,i); 
+
+%process mesh and data
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+referential=md.stressbalance.referential;
+
+Xhat=md.stressbalance.referential(:,1:3);
+pos=find(sum(isnan(Xhat),2));
+Xhat(pos,:)=repmat([1 0 0],size(pos,1),1);
+Xhatnorm=sqrt(Xhat(:,1).^2+Xhat(:,2).^2+Xhat(:,3).^2);
+Xhat=Xhat./[Xhatnorm Xhatnorm Xhatnorm];
+
+Zhat=md.stressbalance.referential(:,4:6);
+pos=find(sum(isnan(Zhat),2));
+Zhat(pos,:)=repmat([0 0 1],size(pos,1),1);
+Zhatnorm=sqrt(Zhat(:,1).^2+Zhat(:,2).^2+Zhat(:,3).^2);
+Zhat=Zhat./[Zhatnorm Zhatnorm Zhatnorm];
+
+Yhat=cross(Zhat,Xhat);
+
+if dimension(md.mesh)==2,
+
+	%plot mesh
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	h1=patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	hold on;
+
+	xstart=x;
+	ystart=y;
+	zstart=z;
+	edgex=max(md.mesh.x(elements),[],2)-min(md.mesh.x(elements),[],2);
+	len=min(edgex)/1.5;
+	%plot X axis
+	xend=xstart+len*Xhat(:,1);
+	yend=ystart+len*Xhat(:,2);
+	hx=quiver(xstart,ystart,xend-xstart,yend-ystart,'Color','blue','ShowArrowHead','on','AutoScale','off');
+	%plot Y axis
+	xend=xstart+len*Yhat(:,1);
+	yend=ystart+len*Yhat(:,2);
+	hy=quiver(xstart,ystart,xend-xstart,yend-ystart,'Color','red','ShowArrowHead','on','AutoScale','off');
+
+	legend([hx,hy],'local X direction','local Y direction')
+else
+	%plot mesh
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+	h1=patch( 'Faces', [A B C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	hold on;
+
+	xstart=x;
+	ystart=y;
+	zstart=z;
+	edgex=max(md.mesh.x(elements),[],2)-min(md.mesh.x(elements),[],2);
+	edgez=max(md.mesh.z(elements),[],2)-min(md.mesh.z(elements),[],2);
+	len=min(edgex)/1.5;
+	lenz=min(edgez)/1.5;
+	%plot X axis
+	xend=xstart+len*Xhat(:,1);
+	yend=ystart+len*Xhat(:,2);
+	zend=zstart+len*Xhat(:,3);
+	hx=quiver3(xstart,ystart,zstart,xend-xstart,yend-ystart,zend-zstart,'Color','blue','ShowArrowHead','on','AutoScale','off');
+	%plot Y axis
+	xend=xstart+len*Yhat(:,1);
+	yend=ystart+len*Yhat(:,2);
+	zend=zstart+len*Yhat(:,3);
+	hy=quiver3(xstart,ystart,zstart,xend-xstart,yend-ystart,zend-zstart,'Color','red','ShowArrowHead','on','AutoScale','off');
+	%plot Z axis
+	xend=xstart+lenz*Zhat(:,1);
+	yend=ystart+lenz*Zhat(:,2);
+	zend=zstart+lenz*Zhat(:,3);
+	hz=quiver3(xstart,ystart,zstart,xend-xstart,yend-ystart,zend-zstart,'Color','green','ShowArrowHead','on','AutoScale','off');
+
+	legend([hx,hy,hz],'local X direction','local Y direction','local Z direction')
+end
+
+%apply options
+options=addfielddefault(options,'title','Stressbalance referential');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_riftfraction.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_riftfraction.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_riftfraction.m	(revision 21239)
@@ -0,0 +1,48 @@
+function plot_riftfraction(md,options,nlines,ncols,index)
+%PLOT_RIFTFRACTION - plot rift fractions
+%
+%   Usage:
+%      plot_riftfraction(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%check that there is something in riftproperties
+if isnan(md.rifts.riftstruct.riftproperties),
+	error('plot_riftfraction error message: field riftproperies is empty, run the model first')
+end
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+subplot(nlines,ncols,index); 
+hold on
+
+%plot mesh boundaries
+for i=1:size(md.mesh.segments,1),
+	h1=plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'k.-');
+end
+
+%first, build a vector of fractions, over all nodes. 
+fractions=zeros(md.mesh.numberofvertices,1);
+
+%complete the tips.
+for i=1:length(md.rifts.riftstruct), 
+	tips=md.rifts.riftstruct(i).tips;
+	fractions(tips)=1;
+end
+
+hold on;
+for i=1:length(md.rifts.riftstruct), 
+	segments=md.rifts.riftstruct(i).segments(:,1:2)';
+	xc=x(segments(:));
+	yc=y(segments(:));
+	zc=fractions(segments(:));
+	h2=patch('Xdata',xc,'Ydata',yc,'Zdata',zc,'Cdata',zc,'facecolor','none','edgecolor','flat');
+end
+legend([h1,h2],'mesh boundaries','rifts')
+hold off
+
+%apply options
+options=addfielddefault(options,'title','Rift ice/water fraction ???????'); %Eric, could you enter a better title?
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_riftnumbering.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_riftnumbering.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_riftnumbering.m	(revision 21239)
@@ -0,0 +1,93 @@
+function plot_riftnumbering(md,options,nlines,ncols,index)
+%PLOT_RIFTNUMBERING - plot rift penetration + numbering of all rift vertices, as well as rift numbers.
+%
+%   Usage:
+%      plot_riftnumbering(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+fontsize=getfieldvalue(options,'FontSize',8);
+
+subplot(nlines,ncols,index); 
+hold on
+
+%plot mesh boundaries
+for i=1:size(md.mesh.segments,1),
+	plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'k.-');
+end
+
+isp1=0;
+isp2=0;
+
+if isstruct(md.rifts.riftstruct),
+	%plot mesh boundaries
+	for i=1:size(md.mesh.segments,1),
+		h1=plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'b-');
+	end
+	for i=1:size(md.rifts.riftstruct,1),
+		penaltypairs=md.rifts.riftstruct(i).penaltypairs;
+
+		segments=md.rifts.riftstruct(i).segments;
+		for j=1:size(segments,1),
+			plot(x(segments(j,1:2)),y(segments(j,1:2)),'b-');
+		end
+
+		normal=zeros(2,1);
+		for j=1:size(penaltypairs,1),
+			normal(1)=penaltypairs(j,5);
+			normal(2)=penaltypairs(j,6);
+
+			vx1=md.initialization.vx(penaltypairs(j,1)); 
+			vx2=md.initialization.vx(penaltypairs(j,2));
+			vy1=md.initialization.vy(penaltypairs(j,1)); 
+			vy2=md.initialization.vy(penaltypairs(j,2));
+			penetration=(vx2-vx1)*normal(1)+(vy2-vy1)*normal(2);
+			%if penetration is negative, plot in black, positive, plot in red;: ie: if rift is closing, black, if rift is opening, red.
+			if(penetration>0),
+				p2=plot(x(penaltypairs(j,1)) ,y(penaltypairs(j,1)),'ro-','LineWidth',1);
+				set(p2,'MarkerSize',3);
+				isp2=1;
+			else
+				p1=plot(x(penaltypairs(j,1)) ,y(penaltypairs(j,1)),'ko-','LineWidth',1);
+				set(p1,'MarkerSize',3);
+				isp1=1;
+			end
+		end
+
+		%point out the tips
+		h2=plot(x(md.rifts.riftstruct(i).tips(1)),y(md.rifts.riftstruct(i).tips(1)),'g*');
+		plot(x(md.rifts.riftstruct(i).tips(2)),y(md.rifts.riftstruct(i).tips(2)),'g*');
+	end
+	if strcmpi(getfieldvalue(options,'legend','on'),'on'),
+		if isp1 & isp2
+			l=legend([h1,h2,p1,p2],'mesh boundaries','crack tips','faults','rifts');
+		elseif isp1
+			l=legend([h1,h2,p1],'mesh boundaries','crack tips','faults');
+		elseif isp2
+			l=legend([h1,h2,p2],'mesh boundaries','crack tips','rifts');
+		else
+			l=legend([h1,h2],'mesh boundaries','crack tips');
+		end
+		set(l,'Location',getfieldvalue(options,'legend_location','NorthEast'));
+	end
+else
+	error('plot error message: no rifts available!');
+end
+
+%Now, plot rift vertices numbers.
+for i=1:size(md.rifts.riftstruct,1),
+	penaltypairs=md.rifts.riftstruct(i).penaltypairs;
+
+	for j=1:size(penaltypairs,1),
+		node=penaltypairs(j,1);
+		t=text(x(node),y(node),[num2str(i) '.' num2str(j)]);
+		set(t,'FontSize',fontsize);
+	end
+end
+
+%apply options
+options=addfielddefault(options,'title','Rift/Fault location');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_riftpenetration.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_riftpenetration.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_riftpenetration.m	(revision 21239)
@@ -0,0 +1,82 @@
+function plot_rifpenetration(md,options,nlines,ncols,index)
+%PLOT_RIFTPENETRATION - plot rift penetration
+%
+%   Usage:
+%      plot_rifpenetration(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+subplot(nlines,ncols,index); 
+hold on
+
+%plot mesh boundaries
+for i=1:size(md.mesh.segments,1),
+	plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'k-');
+end
+
+isp1=0;
+isp2=0;
+
+if isstruct(md.rifts.riftstruct),
+	%plot mesh boundaries
+	for i=1:size(md.mesh.segments,1),
+		h1=plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'b-');
+	end
+	for i=1:size(md.rifts.riftstruct,1),
+		penaltypairs=md.rifts.riftstruct(i).penaltypairs;
+
+		segments=md.rifts.riftstruct(i).segments;
+		for j=1:size(segments,1),
+			plot(x(segments(j,1:2)),y(segments(j,1:2)),'b-');
+		end
+
+		normal=zeros(2,1);
+		for j=1:size(penaltypairs,1),
+			normal(1)=penaltypairs(j,5);
+			normal(2)=penaltypairs(j,6);
+
+			vx1=md.initialization.vx(penaltypairs(j,1)); 
+			vx2=md.initialization.vx(penaltypairs(j,2));
+			vy1=md.initialization.vy(penaltypairs(j,1)); 
+			vy2=md.initialization.vy(penaltypairs(j,2));
+			penetration=(vx2-vx1)*normal(1)+(vy2-vy1)*normal(2);
+			%if penetration is negative, plot in black, positive, plot in red;: ie: if rift is closing, black, if rift is opening, red.
+			if(penetration>0),
+				p2=plot(x(penaltypairs(j,1)) ,y(penaltypairs(j,1)),'ro-','LineWidth',1);
+				set(p2,'MarkerSize',3);
+				isp2=1;
+			else
+				p1=plot(x(penaltypairs(j,1)) ,y(penaltypairs(j,1)),'ko-','LineWidth',1);
+				set(p1,'MarkerSize',3);
+				isp1=1;
+			end
+		end
+
+		%point out the tips
+		h2=plot(x(md.rifts.riftstruct(i).tips(1)),y(md.rifts.riftstruct(i).tips(1)),'g*');
+		plot(x(md.rifts.riftstruct(i).tips(2)),y(md.rifts.riftstruct(i).tips(2)),'g*');
+	end
+	if strcmpi(getfieldvalue(options,'legend','on'),'on'),
+		if isp1 & isp2
+			l=legend([h1,h2,p1,p2],'mesh boundaries','crack tips','faults','rifts');
+		elseif isp1
+			l=legend([h1,h2,p1],'mesh boundaries','crack tips','faults');
+		elseif isp2
+			l=legend([h1,h2,p2],'mesh boundaries','crack tips','rifts');
+		else
+			l=legend([h1,h2],'mesh boundaries','crack tips');
+		end
+		set(l,'Location',getfieldvalue(options,'legend_location','NorthEast'));
+	end
+else
+	error('plot error message: no rifts available!');
+end
+hold off
+
+%apply options
+options=addfielddefault(options,'title','Rift/Fault location');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_riftrelvel.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_riftrelvel.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_riftrelvel.m	(revision 21239)
@@ -0,0 +1,116 @@
+function plot_riftrelvel(md,options,nlines,ncols,index)
+%PLOT_RIFTRELVEL - plot rift relative velocities
+%
+%   Usage:
+%      plot_riftrelvel(md,options,nlines,ncols,i);
+%
+%   See also: PLOTMODEL
+
+%some checks
+if (length(md.initialization.vx)~=md.mesh.numberofvertices | length(md.initialization.vy)~=md.mesh.numberofvertices),
+	error('plot_riftvel error message: vx and vy do not have the right size'),
+end
+if ~isstruct(md.rifts.riftstruct),
+	error('plot error message: no rifts available!');
+end
+options=addfielddefault(options,'scaling',2);
+
+%markersize: 
+markersize=getfieldvalue(options,'markersize',1);
+
+%recover vx and vy:
+vx=getfieldvalue(options,'riftrelvel_vx',md.initialization.vx);
+vy=getfieldvalue(options,'riftrelvel_vy',md.initialization.vy);
+
+%set as NaN all velocities not on rifts
+u=NaN*ones(md.mesh.numberofvertices,1);
+v=NaN*ones(md.mesh.numberofvertices,1);
+for i=1:size(md.rifts.riftstruct,1),
+	penaltypairs=md.rifts.riftstruct(i).penaltypairs(:,[1 2]);
+	u(md.rifts.riftstruct(i).penaltypairs(:,1))=vx(penaltypairs(:,1))-vx(penaltypairs(:,2));
+	v(md.rifts.riftstruct(i).penaltypairs(:,1))=vy(penaltypairs(:,1))-vy(penaltypairs(:,2));
+end
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[vel datatype]=processdata(md,[u v],options);
+[quivers,palette]=quiver_process(x,y,vel(:,1),vel(:,2),options);
+
+%prepare plot
+subplot(nlines,ncols,index); 
+hold on
+
+%plot rifts vel
+h3=[];
+for i=1:quivers.numcolors
+	pos=find(quivers.colorind==i);
+	hprime=quiver(quivers.x(pos),quivers.y(pos),quivers.u(pos),quivers.v(pos),...
+		'Color',palette(i,:),'ShowArrowHead','on','AutoScale','off');
+	hprime=quiver(quivers.x(pos),quivers.y(pos),-quivers.u(pos),-quivers.v(pos),...
+		'Color',palette(i,:),'ShowArrowHead','on','AutoScale','off');
+	h3=[h3;hprime];
+end
+
+%plot rift velocities
+isp1=0;
+isp2=0;
+
+%plot mesh boundaries
+for i=1:size(md.mesh.segments,1),
+	h1=plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'b-');
+end
+for i=1:size(md.rifts.riftstruct,1),
+
+	%get nodes on rift
+	penaltypairs=md.rifts.riftstruct(i).penaltypairs;
+
+	segments=md.rifts.riftstruct(i).segments;
+	for j=1:size(segments,1),
+		plot(x(segments(j,1:2)),y(segments(j,1:2)),'k-');
+	end
+
+	normal=zeros(2,1);
+	for j=1:size(penaltypairs,1),
+		normal(1)=penaltypairs(j,5);
+		normal(2)=penaltypairs(j,6);
+
+		vx1=vx(penaltypairs(j,1)); vx2=vx(penaltypairs(j,2)); vy1=vy(penaltypairs(j,1)); vy2=vy(penaltypairs(j,2));
+		penetration=(vx2-vx1)*normal(1)+(vy2-vy1)*normal(2);
+		%if penetration is negative, plot in black, positive, plot in red;: ie: if rift is closing, black, if rift is opening, red.
+		if(penetration>0),
+			p2=plot(x(penaltypairs(j,1)) ,y(penaltypairs(j,1)),'.','MarkerSize',markersize); set(p2,'Color',[140 140 140]/255);
+			isp2=1;
+		else
+			p1=plot(x(penaltypairs(j,1)) ,y(penaltypairs(j,1)),'k.','MarkerSize',markersize);
+			isp1=1;
+		end
+	end
+
+	%point out the tips
+	h2=plot(x(md.rifts.riftstruct(i).tips(1)),y(md.rifts.riftstruct(i).tips(1)),'g.','MarkerSize',markersize);
+	plot(x(md.rifts.riftstruct(i).tips(2)),y(md.rifts.riftstruct(i).tips(2)),'g.','MarkerSize',markersize);
+	segments=md.rifts.riftstruct(i).segments(:,1:2);
+end
+
+faulttitle=getfieldvalue(options','faulttitle','faults');
+rifttitle=getfieldvalue(options','rifttitle','rifts');
+%legend
+if strcmpi(getfieldvalue(options,'legend','on'),'on'),
+	if isp1 & isp2
+		l=legend([h1,h2,p1,p2],'mesh boundaries','crack tips',faulttitle,rifttitle);
+	elseif isp1
+		l=legend([h1,h2,p1],'mesh boundaries','crack tips',faulttitle);
+	elseif isp2
+		l=legend([h1,h2,p2],'mesh boundaries','crack tips',rifttitle);
+	else
+		l=legend([h1,h2],'mesh boundaries','crack tips');
+	end
+set(l,'Location',getfieldvalue(options,'legend_location','NorthEast'));
+end
+hold off
+
+%apply options
+quiver_colorbar(quivers,options);
+options=changefieldvalue(options,'colorbar',2);
+options=addfielddefault(options,'title','Rift/Fault Relative Velocity');
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_rifts.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_rifts.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_rifts.m	(revision 21239)
@@ -0,0 +1,80 @@
+function plot_rifts(md,options,nlines,ncols,index)
+%PLOT_RIFTS - plot rifts in a mesh
+%
+%   Usage:
+%      plot_rifts(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%plot mesh
+subplot(nlines,ncols,index); 
+
+%offset to separate rift flanks.
+offset=getfieldvalue(options,'offset',500);
+if isstruct(md.rifts.riftstruct),
+
+	for i=1:size(md.rifts.riftstruct,1),
+		penaltypairs=md.rifts.riftstruct(i).penaltypairs;
+
+		normal=zeros(2,1);
+		for j=1:size(penaltypairs,1),
+			normal(1)=penaltypairs(j,5);
+			normal(2)=penaltypairs(j,6);
+			x(penaltypairs(j,1))=x(penaltypairs(j,1))-normal(1)*offset;
+			y(penaltypairs(j,1))=y(penaltypairs(j,1))-normal(2)*offset;
+		end
+		if length(md.rifts.riftstruct(i).tips)==3,
+			tip=md.rifts.riftstruct(i).tips(3);
+			%who is tip connected to? 
+			if isconnected(md.mesh.elements,penaltypairs(1,1),tip),
+				normal(1)=penaltypairs(1,5);
+				normal(2)=penaltypairs(1,6);
+				x(tip)=x(tip)-normal(1)*offset;
+				y(tip)=y(tip)-normal(2)*offset;
+			end
+
+			if isconnected(md.mesh.elements,penaltypairs(1,2),tip),
+				normal(1)=penaltypairs(1,5);
+				normal(2)=penaltypairs(1,6);
+				x(tip)=x(tip)+normal(1)*offset;
+				y(tip)=y(tip)+normal(2)*offset;
+			end
+			if isconnected(md.mesh.elements,penaltypairs(end,1),tip),
+				normal(1)=penaltypairs(end,5);
+				normal(2)=penaltypairs(end,6);
+				x(tip)=x(tip)-normal(1)*offset;
+				y(tip)=y(tip)-normal(2)*offset;
+			end
+			if isconnected(md.mesh.elements,penaltypairs(end,2),tip),
+				normal(1)=penaltypairs(end,5);
+				normal(2)=penaltypairs(end,6);
+				x(tip)=x(tip)+normal(1)*offset;
+				y(tip)=y(tip)+normal(2)*offset;
+			end
+		end
+	end
+end
+
+%plot mesh
+if is2d
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+elseif isplanet,
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+else
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [D E F], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [A B E D], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [B E F C ], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [C A D F ], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+end
+
+%apply options
+options=addfielddefault(options,'title','Rifts');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_riftvel.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_riftvel.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_riftvel.m	(revision 21239)
@@ -0,0 +1,107 @@
+function plot_riftvel(md,options,nlines,ncols,index)
+%PLOT_RIFTVEL - plot rift velocity
+%
+%   Usage:
+%      plot_riftvel(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%some checks
+if (length(md.initialization.vx)~=md.mesh.numberofvertices | length(md.initialization.vy)~=md.mesh.numberofvertices),
+	error('plot_riftvel error message: vx and vy do not have the right size'),
+end
+if ~isstruct(md.rifts.riftstruct),
+	error('plot error message: no rifts available!');
+end
+options=addfielddefault(options,'scaling',2);
+
+%set as NaN all velocities not on rifts
+u=NaN*ones(md.mesh.numberofvertices,1);
+v=NaN*ones(md.mesh.numberofvertices,1);
+for i=1:size(md.rifts.riftstruct,1),
+	penaltypairs=md.rifts.riftstruct(i).penaltypairs(:,[1 2]);
+	u(penaltypairs(:))=md.initialization.vx(penaltypairs(:));
+	v(penaltypairs(:))=md.initialization.vy(penaltypairs(:));
+end
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[vel datatype]=processdata(md,[u v],options);
+[quivers,palette]=quiver_process(x,y,vel(:,1),vel(:,2),options);
+
+%prepare plot
+subplot(nlines,ncols,index); 
+hold on
+
+%plot mesh boundaries
+for i=1:size(md.mesh.segments,1),
+	plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'k.-');
+end
+
+%plot rifts vel
+h3=[];
+for i=1:quivers.numcolors
+	pos=find(quivers.colorind==i);
+	hprime=quiver(quivers.x(pos),quivers.y(pos),quivers.u(pos),quivers.v(pos),...
+		'Color',palette(i,:),'ShowArrowHead','on','AutoScale','off');
+	h3=[h3;hprime];
+end
+
+%plot rift velocities
+isp1=0;
+isp2=0;
+
+%plot mesh boundaries
+for i=1:size(md.mesh.segments,1),
+	h1=plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'b-');
+end
+
+for i=1:size(md.rifts.riftstruct,1),
+	%get nodes on rift
+	penaltypairs=md.rifts.riftstruct(i).penaltypairs;
+
+	segments=md.rifts.riftstruct(i).segments;
+	for j=1:size(segments,1),
+		plot(x(segments(j,1:2)),y(segments(j,1:2)),'b-');
+	end
+
+	normal=zeros(2,1);
+	for j=1:size(penaltypairs,1),
+		normal(1)=penaltypairs(j,5);
+		normal(2)=penaltypairs(j,6);
+
+		vx1=md.initialization.vx(penaltypairs(j,1)); vx2=md.initialization.vx(penaltypairs(j,2)); vy1=md.initialization.vy(penaltypairs(j,1)); vy2=md.initialization.vy(penaltypairs(j,2));
+		penetration=(vx2-vx1)*normal(1)+(vy2-vy1)*normal(2);
+		%if penetration is negative, plot in black, positive, plot in red;: ie: if rift is closing, black, if rift is opening, red.
+		if(penetration>0),
+			p2=plot(x(penaltypairs(j,1)) ,y(penaltypairs(j,1)),'*'); set(p2,'Color',[140 140 140]/255);
+			isp2=1;
+		else
+			p1=plot(x(penaltypairs(j,1)) ,y(penaltypairs(j,1)),'k*');
+			isp1=1;
+		end
+	end
+
+	%point out the tips
+	h2=plot(x(md.rifts.riftstruct(i).tips(1)),y(md.rifts.riftstruct(i).tips(1)),'g*');
+	plot(x(md.rifts.riftstruct(i).tips(2)),y(md.rifts.riftstruct(i).tips(2)),'g*');
+	segments=md.rifts.riftstruct(i).segments(:,1:2);
+end
+
+%legend
+if isp1 & isp2
+	legend([h1,h2,p1,p2],'mesh boundaries','rift tips',' rifts closing','rifts opening')
+elseif isp1
+	legend([h1,h2,p1],'mesh boundaries','rift tips',' rifts closing')
+elseif isp2
+	legend([h1,h2,p2],'mesh boundaries','rift tips','rifts opening')
+else
+	legend([h1,h2],'mesh boundaries','rift tips')
+end
+hold off
+
+%apply options
+quiver_colorbar(quivers,options);
+options=changefieldvalue(options,'colorbar',2);
+options=addfielddefault(options,'title','Rift Velocities');
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_sarpwr.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_sarpwr.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_sarpwr.m	(revision 21239)
@@ -0,0 +1,26 @@
+function plot_sarpwr(md,options,width,i)
+%PLOT_SARPWR - plot radar image
+%
+%   Usage:
+%      plot_sarpwr(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%plot mesh sarpwr
+subplot(width,width,i); 
+
+%units
+if exist(options,'unit'),
+	unit=getfieldvalue(options,'unit');
+	md.mesh.x=md.mesh.x*unit;
+	md.mesh.y=md.mesh.y*unit;
+	md.mesh.z=md.mesh.z*unit;
+end
+
+imagesc(md.radaroverlay.x,md.radaroverlay.y,double(md.radaroverlay.pwr)),set(gca,'YDir','normal');colormap(gray);
+
+%apply options
+options=addfielddefault(options,'colorbar',0);
+options=changefieldvalue(options,'colormap','gray');
+
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_scatter.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_scatter.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_scatter.m	(revision 21239)
@@ -0,0 +1,103 @@
+function plot_scatter(x,y,level,varargin),
+%PLOT_SCATTER - scatter plot
+%
+%   Usage:
+%      plot_scatter(x,y,level,options);
+%
+%   Available options:
+%      'caxis'      : default is full range
+%      'MarkerSize' : default is 3
+%      'Line'       : use line instead of circles
+%      'Cutoff'     : cut the line if the distance between 2 points is
+%                     greater than Cutoff (default is 1000)
+
+if nargin == 4,
+	options = varargin{1};
+else
+	options=pairoptions(varargin{:}); 
+end
+
+%check input
+if numel(x)~=numel(y) | numel(x)~=numel(level),
+	error('x, y and data should have the same size');
+end
+
+%Some processing
+Min=min(level);
+Max=max(level);
+if exist(options,'caxis');
+	range=getfieldvalue(options,'caxis');
+	Min=min(range);
+	Max=max(range);
+end
+Siz=length(level);
+nlab=10;
+%Min=0;
+%Max=1300;
+
+%OK, should we create a new colorbar for the occasion?
+if isempty(findobj(gcf,'tag','TMW_COLORBAR')) && isempty(findobj(gcf,'Type','Colorbar')),
+	alreadyplot=false;
+else
+	alreadyplot=true;
+end
+
+%generate levels
+if (alreadyplot),
+	phch = get(findall(gcf,'type','image','tag','TMW_COLORBAR'),{'parent'});
+	if ~isempty(phch),
+		h    = phch{1};
+		ylim=get(h,'YLim');
+	else
+		%R2014b +
+		h = findobj(gcf,'Type','Colorbar');
+		ylim = h.Limits;
+	end
+	palette=colormap;
+	numcolors=size(palette,1);
+	levels=round_ice(linspace(ylim(1),ylim(2),numcolors+1),2);
+else
+	palette=getcolormap(options);
+	numcolors=size(palette,1);
+	levels=round_ice(linspace(Min,Max,numcolors+1),2);
+end
+
+colorind=ones(Siz,1);
+for i=1:numcolors
+	pos=find((level>=levels(i)) & (level<=levels(i+1)) );
+	colorind(pos)=i;
+end
+colorind(find(level>levels(end)))=numcolors;
+
+%loop over the number of colors
+hold on
+hp=[];
+if ~exist(options,'line'),
+	for i=1:numcolors
+		pos=find(colorind==i);
+		hprime=plot3(x(pos),y(pos),ones(size(x(pos))),...
+			'o','MarkerSize',getfieldvalue(options,'MarkerSize',3),'MarkerEdgeColor',palette(i,:),...
+			'MarkerFaceColor',palette(i,:));
+		hp=[hp;hprime];
+	end
+else
+	distances = sqrt( (x(1:end-1)-x(2:end)).^2 + (y(1:end-1)-y(2:end)).^2);
+	pos=find(distances>getfieldvalue(options,'Cutoff',1000));
+	x(pos,:)=NaN;
+	y(pos,:)=NaN;
+	for j=1:numcolors;
+		pos=find(colorind==j);
+		if(~isempty(pos) & pos(1)==1), pos(1)=[]; end
+		if ~isempty(pos),
+			tempx = [x(pos-1) x(pos) NaN(size(pos))]';
+			tempy = [y(pos-1) y(pos) NaN(size(pos))]';
+			line(tempx(1:end-1),tempy(1:end-1),'color',palette(j,:),'linewidth',getfieldvalue(options,'LineWidth',2));
+		end
+	end
+end
+
+if ~alreadyplot,
+	% format the colorbar
+	h    = colorbar;
+	caxis([min(levels) max(levels)]);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_section.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_section.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_section.m	(revision 21239)
@@ -0,0 +1,220 @@
+function plot_section(md,data,options,nlines,ncols,i)
+%PLOT_SECTION - plot a given field on a section
+%
+%   Usage:
+%      plot_section(md,data,options,nlines,ncols,i)
+%
+%   See also: PLOTMODEL
+
+%How many subplots?
+if exist(options,'showsection')
+
+	%Compute the indexes of the 2 plots (one for the sectionvalue and one for showsection
+	upperplots=floor((i-1)/ncols);
+	if upperplots==0, leftplots=i-1; else leftplots=i-ncols*upperplots-1; end
+	index1=4*ncols*upperplots+2*leftplots+1;
+	index2=index1+1;
+	ncols=2*ncols;
+else
+	index1=i;
+end
+
+%process model
+[x_m y_m z_m elements_m is2d isplanet]=processmesh(md,[],options);
+
+%Get number of curves and generate random colors
+numcurves=size(data,2);
+colorm=getfieldvalue(options,'colormap','lines');
+color=eval([ colorm '(numcurves);']);
+options=removefield(options,'colormap',0); %back to default colormap
+
+%replug x and y onto model so that SectionValue treats the problem correctly
+md3d=md;
+if exist(options,'layer')
+	md.mesh.x=md.mesh.x2d; md.mesh.y=md.mesh.y2d; md.mesh.elements=md.mesh.elements2d;
+	md.mesh=mesh2d(md.mesh);
+end
+
+%read contours: 
+profiles=expread(getfieldvalue(options,'sectionvalue'));
+numprofiles=length(profiles);
+
+%Loop over number of profiles: 
+for profile_i=1:numprofiles,
+	profile=profiles(profile_i);
+
+	%Loop over number of curves
+	for i=1:numcurves,
+
+		[datai datatype]=processdata(md3d,data(:,i),options);
+
+		%resolution
+		if exist(options,'resolution'),
+			resolution=getfieldvalue(options,'resolution');
+		else %Default resolution
+			if is2d,
+				resolution=[1000 1];
+			else
+				resolution=[1000 10*md.mesh.numberoflayers];
+			end
+			disp(['plot_section warning: no resolution specified, use default resolution: [horizontal_resolution vertical_resolution]=[' num2str(resolution)  ']']);
+		end
+
+		%Compute section value
+		[elements,x,y,z,s,data_s]=SectionValues(md,datai,profile,resolution);
+
+		if getfieldvalue(options,'sectionmean',0)==1,
+			disp(['Mean value of data along section: ' num2str(mean(data_s))])
+			disp(['Median value of data along section: ' num2str(median(data_s))])
+			disp(['Standard deviation of data along section: ' num2str(std(data_s))])
+		end
+
+		%units
+		if exist(options,'unit'),
+			unit=getfieldvalue(options,'unit');
+			x=x*unit;
+			y=y*unit;
+			z=z*unit;
+			s=s*unit;
+		end
+
+		%2D
+		if is2d,
+%		%plot section value
+%		hold on;
+%		subplot(nlines,ncols,index1)
+%		%subplot(1,3,[2 3])
+%		plot(s,data_s,'color',color(i,:),'LineWidth',getfieldvalue(options,'linewidth',1))
+%		%3D
+%	else
+%		%plot section value
+%		%if user requested view2: 2d plot with curvilinear coordinate
+%		if (getfieldvalue(options,'view',3)==2 )
+
+			%Show Section if requested by user
+			if exist(options,'showsection')
+
+				%compute number of labels
+				numlabels=min(getfieldvalue(options,'showsection'),length(s));
+				shift=fix(length(s)/numlabels);
+
+				%plot labels on current graph
+				hold on
+				text(s(1),data_s(1),'1','backgroundcolor',[0.8 0.9 0.8])
+				for i=2:numlabels-1
+					text(s(1+(i-1)*shift),data_s(1+(i-1)*shift),num2str(i),'backgroundcolor',[0.8 0.9 0.8])
+				end
+				text(s(end),data_s(end),'end','backgroundcolor',[0.8 0.9 0.8])
+
+				%plot section only with labels
+				subplot(nlines,ncols,index2)
+				plot_unit(x_m,y_m,z_m,elements_m,data(:,i),is2d,isplanet,datatype,options)
+				hold on
+				text(x(1),y(1),'1','backgroundcolor',[0.8 0.9 0.8])
+				for i=2:numlabels-1
+					text(x(1+(i-1)*shift),y(1+(i-1)*shift),num2str(i),'backgroundcolor',[0.8 0.9 0.8])
+				end
+				text(x(end),y(end),'end','backgroundcolor',[0.8 0.9 0.8])
+				plot(x,y,'-r')
+				axis([min(md.mesh.x)-1 max(md.mesh.x)+1 min(md.mesh.y)-1 max(md.mesh.y)+1])
+				view(2)
+			end
+
+			%plot section value
+			if(i==1), subplot(nlines,ncols,index1); end
+			plot(s,data_s,'color',color(i,:),'LineWidth',getfieldvalue(options,'linewidth',1))
+			hold on
+
+			%3D
+		else
+			%plot section value
+			%if user requested view2: 2d plot with curvilinear coordinate
+			if (getfieldvalue(options,'view',3)==2 )
+
+				%Show Section if requested by user
+				if exist(options,'showsection')
+
+					%compute number of labels
+					numlabels=min(getfieldvalue(options,'showsection'),length(s));
+					shift=fix(length(s)/numlabels);
+
+					%plot labels on current graph
+					hold on
+					text(s(1),z(1),'1','backgroundcolor',[0.8 0.9 0.8])
+					for i=2:numlabels-1
+						text(s(1+(i-1)*shift),z(1+(i-1)*shift),num2str(i),'backgroundcolor',[0.8 0.9 0.8])
+					end
+					text(s(end),z(end),'end','backgroundcolor',[0.8 0.9 0.8])
+
+					%plot section only with labels
+					subplot(nlines,ncols,index2)
+					plot_unit(x_m,y_m,z_m,elements_m,data(:,i),is2d,datatype,options)
+					hold on
+					text(x(1),y(1),'1','backgroundcolor',[0.8 0.9 0.8])
+					for i=2:numlabels-1
+						text(x(1+(i-1)*shift),y(1+(i-1)*shift),num2str(i),'backgroundcolor',[0.8 0.9 0.8])
+					end
+					text(x(end),y(end),'end','backgroundcolor',[0.8 0.9 0.8])
+					plot(x,y,'-r')
+					axis([min(md.mesh.x)-1 max(md.mesh.x)+1 min(md.mesh.y)-1 max(md.mesh.y)+1])
+					view(2)
+				end
+
+				subplot(nlines,ncols,index1)
+				A=elements(:,1); B=elements(:,2); C=elements(:,3);  D=elements(:,4); 
+				patch( 'Faces', [A B C D], 'Vertices', [s z zeros(length(s),1)],'FaceVertexCData',data_s,'FaceColor','interp','EdgeColor','none');
+
+			else
+
+				%Show Section if requested by user
+				if exist(options,'showsection')
+
+					%compute number of labels
+					numlabels=min(getfieldvalue(options,'showsection'),length(s));
+					shift=fix(length(x)/numlabels);
+
+					%plot labels on current graph
+					hold on
+					text(x(1),y(1),z(1),'1','backgroundcolor',[0.8 0.9 0.8])
+					for i=2:numlabels-1
+						text(x(1+(i-1)*shift),y(1+(i-1)*shift),z(1+(i-1)*shift),num2str(i),'backgroundcolor',[0.8 0.9 0.8])
+					end
+					text(x(end),y(end),z(end),'end','backgroundcolor',[0.8 0.9 0.8])
+
+					%plot section only with labels
+					subplot(nlines,ncols,index2)
+					plot_unit(x_m,y_m,z_m,elements_m,data,is2d,datatype,options)
+					hold on
+					text(x(1),y(1),'1','backgroundcolor',[0.8 0.9 0.8])
+					for i=2:numlabels-1
+						text(x(1+(i-1)*shift),y(1+(i-1)*shift),num2str(i),'backgroundcolor',[0.8 0.9 0.8])
+					end
+					text(x(end),y(end),'end','backgroundcolor',[0.8 0.9 0.8])
+					plot(x,y,'-r')
+					axis([min(md.mesh.x)-1 max(md.mesh.x)+1 min(md.mesh.y)-1 max(md.mesh.y)+1])
+					view(2)
+				end
+
+				subplot(nlines,ncols,index1)
+				A=elements(:,1); B=elements(:,2); C=elements(:,3);  D=elements(:,4); 
+				patch( 'Faces', [A B C D], 'Vertices', [x y z],'FaceVertexCData',data_s,'FaceColor','interp','EdgeColor','none');
+				view(3)
+			end
+		end
+	end
+end
+
+%apply options
+options=addfielddefault(options,'title','Section value');
+if dimension(md.mesh)==2
+	options=addfielddefault(options,'colorbar',0);
+end
+if ((dimension(md.mesh)==2) | getfieldvalue(options,'view',2)==2 )
+	options=addfielddefault(options,'xlabel','Curvilinear coordinate');
+	options=addfielddefault(options,'axis','auto');
+end
+if (dimension(md.mesh)==3 & getfieldvalue(options,'view',2)==2 )
+	options=addfielddefault(options,'ylabel','z');
+	options=addfielddefault(options,'axis','auto');
+end
+applyoptions(md3d,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_segments.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_segments.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_segments.m	(revision 21239)
@@ -0,0 +1,56 @@
+function plot_segments(md,options,width,i,datai)
+%PLOT_SEGMENTS - plot segments, with different colors according to segment markers.
+%
+%   Usage:
+%      plot_segments(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%plot mesh boundaries
+subplot(width,width,i); 
+
+%process mesh and data
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+segments=md.mesh.segments;
+
+if dimension(md.mesh)==2,
+	%plot mesh
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	h1=patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	hold on;
+
+	%highlight elements on neumann
+	pos=segments(:,end);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	h2=patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','green','EdgeColor','black');
+
+	if strcmpi(getfieldvalue(options,'segmentnumbering','off'),'on'),
+		text(sum(x(segments(:,1:2)),2)/2,sum(y(segments(:,1:2)),2)/2,sum(z(segments(:,1:2)),2)/2+1,...
+			num2str(md.mesh.segmentmarkers),...
+			'backgroundcolor',[0.8 0.9 0.8],'HorizontalAlignment','center','VerticalAlignment','middle');
+	end
+
+	%display arrows pointing outward
+	xstart=mean(x(segments(:,1:end-1)),2);
+	ystart=mean(y(segments(:,1:end-1)),2);
+	length=sqrt((x(segments(:,1))-x(segments(:,2))).^2 + (y(segments(:,1))-y(segments(:,2))).^2 );
+	normal(:,1)=cos(atan2((x(segments(:,1))-x(segments(:,2))) , (y(segments(:,2))-y(segments(:,1)))));
+	normal(:,2)=sin(atan2((x(segments(:,1))-x(segments(:,2))) , (y(segments(:,2))-y(segments(:,1)))));
+	xend=xstart+length.*normal(:,1);
+	yend=ystart+length.*normal(:,2);
+	q=quiver(xstart,ystart,xend-xstart,yend-ystart); hold on;
+	h3=plot(xstart,ystart,'r*');
+
+else
+	error('plot_segments: 3d plot of segments not supported yet!');
+end
+
+%legend (disable warnings)
+warning off
+legend([h2,q],'element on segment','normal vectors')
+warning on
+
+%apply options
+options=addfielddefault(options,'title','Segment boundaries');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_streamlines.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_streamlines.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_streamlines.m	(revision 21239)
@@ -0,0 +1,42 @@
+function plot_streamlines(md,options)
+%PLOT_STREAMLINES - plot stream lines on a figure
+%
+%   Usage:
+%      plot_streamlines(md,options)
+
+%process data and model
+[x y z index is2d isplanet]=processmesh(md,[],options);
+[u datatype]=processdata(md,md.initialization.vx,options);
+[v datatype]=processdata(md,md.initialization.vy,options);
+
+%some checks
+if ~is2d,
+	disp('plot_streamlines error: streamlines option not supported for 3d plots. Project on a layer')
+	return
+end
+
+%initialize flowpath
+streamlines=getfieldvalue(options,'streamlines');
+edgecolor=getfieldvalue(options,'streamlines_color','y');
+if ischar(streamlines) & strcmpi(streamlines,'on');
+	streamlines=60;
+end
+if iscell(streamlines)
+	x0=[]; y0=[];
+	for i=1:size(streamlines,2)
+		coord=streamlines{i};
+		x0=[x0;coord(1)]; y0=[y0;coord(2)];
+	end
+else
+	x0=x(1:ceil(length(x)/streamlines):end);
+	y0=y(1:ceil(length(x)/streamlines):end);
+end
+
+%Get flow lines
+flowpath=flowlines(index,x,y,u,v,x0,y0);
+
+%plot
+hold on
+for i=1:length(flowpath)
+	patch('Xdata',[flowpath(i).x;NaN],'Ydata',[flowpath(i).y;NaN],'facecolor','none','edgecolor',edgecolor);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_streamlines.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_streamlines.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_streamlines.py	(revision 21239)
@@ -0,0 +1,67 @@
+import numpy as npy
+from processmesh import processmesh
+from processdata import processdata
+from ContourToMesh import ContourToMesh
+try:
+	import matplotlib.pyplot as plt
+	import matplotlib.tri as tri
+	from scipy.interpolate import griddata
+except ImportError:
+	print "could not import pylab, matplotlib has not been installed, no plotting capabilities enabled"
+
+def plot_streamlines(md,options,ax):
+    '''
+    plot streamlines on a figure, using by default vx and vy components in md.initialization. 
+
+    Usage:
+        plot_streamlines(md,options,ax)
+
+    available options, to be passed to plotmodel as a string-value pair:
+        streamlinesvx : vx component (default md.initialization.vx)
+        streamlinesvy : vy component (default md.initialization.vy)
+        streamlinescolor: color string
+        streamlinesdensity: density of plotted streamlines (default 1)
+        streamlineswidth: linewidth value or 'vel' to scale by velocity
+        streamlineswidthscale: scaling multiplier for linewidth scaled by velocity
+        streamlinesarrowsize: size of arrows on lines (default 1)
+        
+    '''
+
+    # retrieve options
+    vx=options.getfieldvalue('streamlinesvx',md.initialization.vx)
+    vy=options.getfieldvalue('streamlinesvy',md.initialization.vy)
+    color=options.getfieldvalue('streamlinescolor','k')
+    linewidth=options.getfieldvalue('streamlineswidth',1)
+    density=options.getfieldvalue('streamlinesdensity',1)
+    arrowsize=options.getfieldvalue('streamlinesarrowsize',1)
+
+    #process mesh and data 
+    x,y,z,elements,is2d,isplanet=processmesh(md,vx,options)
+    u,datatype=processdata(md,vx,options)
+    v,datatype=processdata(md,vy,options)
+
+    if not is2d:
+        raise StandardError('plot_streamlines error: streamlines option not supported for 3D plots')
+
+    # format data for matplotlib streamplot function
+    yg,xg=npy.mgrid[min(md.mesh.y):max(md.mesh.y):100j,min(md.mesh.x):max(md.mesh.x):100j]
+    ug=griddata((x,y),u,(xg,yg),method='linear')
+    vg=griddata((x,y),v,(xg,yg),method='linear')
+
+    # create triangulation instance
+    triang=tri.Triangulation(md.mesh.x,md.mesh.y,md.mesh.elements-1)
+
+    # interpolate to regularly spaced quad grid
+    interp_lin_u=tri.LinearTriInterpolator(triang,u)
+    interp_lin_v=tri.LinearTriInterpolator(triang,v)
+    ug=interp_lin_u(xg,yg)
+    vg=interp_lin_v(xg,yg)
+
+    if linewidth=='vel':
+        scale=options.getfieldvalue('streamlineswidthscale',3)
+        vel=npy.sqrt(ug**2+vg**2)
+        linewidth=scale*vel/npy.amax(vel)
+        linewidth[linewidth<0.5]=0.5
+
+    # plot streamlines
+    ax.streamplot(xg,yg,ug,vg,color=color,linewidth=linewidth,density=density,arrowsize=arrowsize)
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_tensor.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_tensor.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_tensor.m	(revision 21239)
@@ -0,0 +1,40 @@
+function plot_tensor(md,options,width,i,type)
+%PLOT_TENSOR - plot tensor components
+%
+%   Usage:
+%      plot_tensor(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+h=subplot(width,width,i); axis off; pos=get(h,'Position');
+
+plot_options.offsetx=pos(1);
+plot_options.offsety=pos(2);
+plot_options.width=pos(3);
+plot_options.height=pos(4);
+
+%Figure out tensor type:
+%FIXME does not work anymore
+if strncmpi(type,'strain',6),
+	tensor=md.results.strainrate;
+elseif strncmpi(type,'stress',6),
+	tensor=md.results.stress;
+elseif strncmpi(type,'deviatoricstress',16),
+	tensor=md.results.deviatoricstress;
+else
+	error('plot_tensor error message: unsupported type of tensor');
+end
+
+%Figure out type of plot being requested
+if strncmpi(fliplr(type),fliplr('tensor'),6) | strcmpi(type,'strainrate') | strcmpi(type,'deviatoricstress') | strcmpi(type,'stress'),
+	plot_tensor_components(md,options,width,i,tensor,type,plot_options);
+	return;
+elseif strncmpi(fliplr(type),fliplr('principal'),9),
+	plot_tensor_principal(md,options,width,i,tensor,type,plot_options);
+	return;
+elseif strncmpi(fliplr(type(1:end-1)),fliplr('principalaxis'),13),
+	plot_tensor_principalaxis(md,options,width,i,tensor,type,plot_options);
+	return;
+else
+	error('plot_tensor error message: unsurported type of plot');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_tensor_components.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_tensor_components.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_tensor_components.m	(revision 21239)
@@ -0,0 +1,78 @@
+function plot_tensor_components(md,options,width,i,tensor,type,plot_options)
+%PLOT_TENSOR_COMPONENT - plot component of a tensor
+%
+%   Usage:
+%      plot_tensor_components(md,options,width,i,tensor,type,plot_option);
+%
+%   See also: PLOTMODEL, PLOT_UNIT, PLOT_MANAGER
+
+%Compute the indexes of the components plots
+upperplots=fix((i-1)/width);
+if upperplots==0, leftplots=i-1; else leftplots=i-width*upperplots-1; end
+if dimension(md.mesh)==2 %3 components -> 3 indexes
+	index1=4*width*upperplots+2*leftplots+1;
+	index2=index1+1;
+	index3=index1+width*2;
+elseif dimension(md.mesh)==3%6 components -> 6 indexes
+	index1=3*3*width*upperplots+3*leftplots+1;
+	index2=index1+1;
+	index3=index1+2;
+	index4=index1+width*3;
+	index5=index4+1;
+	index6=index4+2;
+end
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[tensor.xx datatype]=processdata(md,tensor.xx,options);
+[tensor.yy datatype]=processdata(md,tensor.yy,options);
+[tensor.xy datatype]=processdata(md,tensor.xy,options);
+if  dimension(md.mesh)==3
+	[tensor.xz datatype]=processdata(md,tensor.xz,options);
+	[tensor.yz datatype]=processdata(md,tensor.yz,options);
+	[tensor.zz datatype]=processdata(md,tensor.zz,options);
+end
+
+if dimension(md.mesh)==2,
+	subplot(2*width,2*width,index1),
+	plot_unit(x,y,z,elements,tensor.xx,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'xx')
+	subplot(2*width,2*width,index2),
+	plot_unit(x,y,z,elements,tensor.yy,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'yy')
+	subplot(2*width,2*width,index3),
+	plot_unit(x,y,z,elements,tensor.xy,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'xy')
+else
+	subplot(3*width,3*width,index1),
+	plot_unit(x,y,z,elements,tensor.xx,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'xx')
+	subplot(3*width,3*width,index2),
+	plot_unit(x,y,z,elements,tensor.yy,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'yy')
+	subplot(3*width,3*width,index3),
+	plot_unit(x,y,z,elements,tensor.zz,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'zz')
+	subplot(3*width,3*width,index4),
+	plot_unit(x,y,z,elements,tensor.xy,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'xy')
+	subplot(3*width,3*width,index5),
+	plot_unit(x,y,z,elements,tensor.xz,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'xz')
+	subplot(3*width,3*width,index6),
+	plot_unit(x,y,z,elements,tensor.yz,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'yz')
+end
+end
+
+function Apply_options_tensor(md,options,type,component)
+	%apply options
+	if ismember('_',type) %user plotet stress_tensor
+		strings=strsplit_strict(type,'_');
+		string=strings{1};
+	else %default plot: user requested stress
+		string=type;
+	end
+	options=addfielddefault(options,'title',[upper(string(1)) string(2:end) ' ' component]);
+	applyoptions(md,[],options);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_tensor_principal.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_tensor_principal.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_tensor_principal.m	(revision 21239)
@@ -0,0 +1,77 @@
+function plot_tensor_principal(md,options,width,i,tensor,type,plot_options)
+%PLOT_TENSOR_PRINCIPAL - plot principal values
+%
+%   Usage:
+%      plot_tensor_principal(md,options,width,i,tensor,type,plot_options);
+%
+%   See also: PLOTMODEL, PLOT_UNIT, PLOT_MANAGER
+
+%Compute the indexes of the components plots
+upperplots=fix((i-1)/width);
+if upperplots==0, leftplots=i-1; else leftplots=i-width*upperplots-1; end
+if (dimension(md.mesh)==2)%3 components -> 3 indexes
+	index1=4*width*upperplots+2*leftplots+1;
+	index2=index1+1;
+	index3=index1+width*2;
+	index4=index3+1;
+	newwidth=2*width;
+elseif dimension(md.mesh)==3%6 components -> 6 indexes
+	index1=3*3*width*upperplots+3*leftplots+1;
+	index2=index1+1;
+	index3=index1+2;
+	index4=index1+width*3;
+	index5=index4+1;
+	index6=index4+2;
+	newwidth=3*width;
+end
+
+%plot principal axis
+type1=[type 'axis1'];
+plot_tensor_principalaxis(md,options,newwidth,index1,tensor,type1,plot_options);
+type2=[type 'axis2'];
+plot_tensor_principalaxis(md,options,newwidth,index2,tensor,type2,plot_options);
+if  dimension(md.mesh)==3
+	type3=[type 'axis3'];
+	plot_tensor_principalaxis(md,options,newwidth,index3,tensor,type3,plot_options);
+end
+
+%now plot principal values
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[tensor.principalvalue1 datatype]=processdata(md,tensor.principalvalue1,options);
+[tensor.principalvalue2 datatype]=processdata(md,tensor.principalvalue2,options);
+if  dimension(md.mesh)==3
+	[tensor.principalvalue3 datatype]=processdata(md,tensor.principalvalue3,options);
+end
+
+if dimension(md.mesh)==2,
+	subplot(2*width,2*width,index3)
+	plot_unit(x,y,z,elements,tensor.principalvalue1,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'principal value 1')
+	subplot(2*width,2*width,index4)
+	plot_unit(x,y,z,elements,tensor.principalvalue2,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'principal value 2')
+else
+	subplot(3*width,3*width,index4)
+	plot_unit(x,y,z,elements,tensor.principalvalue1,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'principal value 1')
+	subplot(3*width,3*width,index5)
+	plot_unit(x,y,z,elements,tensor.principalvalue2,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'principal value 2')
+	subplot(3*width,3*width,index6)
+	plot_unit(x,y,z,elements,tensor.principalvalue3,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'principal value 3')
+end
+end
+
+function Apply_options_tensor(md,options,type,component)
+%apply options
+if ismember('_',type) %user plotet stress_tensor
+	strings=strsplit_strict(type,'_');
+	string=strings{1};
+else %default plot: user requested stress
+	string=type;
+end
+options=addfielddefault(options,'title',[upper(string(1)) string(2:end) ' ' component]);
+options=changefieldvalue(options,'colorbar',2);
+applyoptions(md,[],options);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_tensor_principalaxis.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_tensor_principalaxis.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_tensor_principalaxis.m	(revision 21239)
@@ -0,0 +1,95 @@
+function plot_tensor_principalaxis(md,options,width,i,tensor,type,plot_options)
+%PLOT_TENSOR_PRINCIPALAXIS - plot ytensor principal axis
+%
+%   Usage:
+%      plot_tensor_principalaxis(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%prepare subplot
+subplot(width,width,i); 
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+if dimension(md.mesh)==2,
+	eval(['Vx=tensor.principalaxis' type(end) '(:,1); Vy=tensor.principalaxis' type(end) '(:,2);'])
+	eval(['value=tensor.principalvalue' type(end) ';']);
+	[Vx datatype]=processdata(md,Vx,options);
+	[Vy datatype]=processdata(md,Vy,options);
+	[value datatype]=processdata(md,value,options);
+else
+	eval(['Vx=tensor.principalaxis' type(end) '(:,1); Vy=tensor.principalaxis' type(end) '(:,2); Vz=tensor.principalaxis' type(end) '(:,3);'])
+	[Vx datatype]=processdata(md,Vx,options);
+	[Vy datatype]=processdata(md,Vy,options);
+	[Vz datatype]=processdata(md,Vz,options);
+	[value datatype]=processdata(md,value,options);
+end
+
+%take the center of each element if ~isonnode
+if datatype==1,
+	x=mean(x(elements'))'; y=mean(y(elements'))'; z=mean(z(elements'))';
+end
+
+%plot quivers
+if dimension(md.mesh)==2,
+
+	%density
+	if exist(options,'density')
+		density=getfieldvalue(options,'density');
+		x=x(1:density:end);
+		y=y(1:density:end);
+		Vx=Vx(1:density:end);
+		Vy=Vy(1:density:end);
+		value=value(1:density:end);
+	end
+
+	%scaling:
+	delta=((min(x)-max(x))^2+(min(y)-max(y))^2)/numel(x);
+	scale=0.5/max(sqrt((Vx.^2+Vy.^2)/delta));
+	Vx=scale*Vx; Vy=scale*Vy;
+
+	pos=find(value>=0);
+	q1=quiver(x(pos),y(pos),Vx(pos),Vy(pos),'Color','r','ShowArrowHead','off','AutoScale','off');
+	hold on
+	pos=find(value<0);
+	q2=quiver(x(pos),y(pos),Vx(pos),Vy(pos),'Color','b','ShowArrowHead','off','AutoScale','off');
+
+else
+	%density
+	if exist(options,'density')
+		density=getfieldvalue(options,'density');
+		x=x(1:density:end);
+		y=y(1:density:end);
+		z=z(1:density:end);
+		Vx=Vx(1:density:end);
+		Vy=Vy(1:density:end);
+		Vz=Vz(1:density:end);
+		value=value(1:density:end);
+	end
+
+	%scaling:
+	delta=((min(x)-max(x))^2+(min(y)-max(y))^2)/numel(x);
+	scale=0.5/max(sqrt((Vx.^2+Vy.^2)/delta));
+	Vx=scale*Vx; Vy=scale*Vy; Vz=scale*Vz;
+
+	pos=find(value>=0);
+	q1=quiver3(x(pos),y(pos),z(pos),Vx(pos),Vy(pos),Vz(pos),'Color','r','ShowArrowHead','off','AutoScale','off');
+	hold on
+	pos=find(value<0);
+	q2=quiver3(x(pos),y(pos),z(pos),Vx(pos),Vy(pos),Vz(pos),'Color','b','ShowArrowHead','off','AutoScale','off');
+end
+
+%legend
+if strcmpi(type(1:6),'strain')
+	legend([q1 q2],'extension','compression')
+elseif strcmpi(type(1:6),'stress')
+	legend([q1 q2],'compression','traction')
+end
+
+%apply options
+strings=strsplit_strict(type,'_');
+string=strings{1};
+options=addfielddefault(options,'title',[upper(string(1)) string(2:end) ' principal axis ' type(end)]);
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_thermaltransient_results.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_thermaltransient_results.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_thermaltransient_results.m	(revision 21239)
@@ -0,0 +1,23 @@
+function plot_thermaltransient_results(md,options,width,i)
+%PLOT_THERMALTRANSIENT_RESULTS - plot  results of a thermal transient solution
+%
+%   Usage:
+%      plot_thermaltransient_results(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+string='plot(md';
+for i=1:length(md.thermaltransient_results),
+	string=[string ',''data'',''thermaltransient_results(' num2str(i) ').temperature'',''view'',3,''title'',''Temperature at time ' num2str(md.thermaltransient_results(i).time) ' a'''];
+end
+string=[string ',''figure'',1,''colorbar#all'',''on'',''view'',3,''fontsize'',' num2str(options.fontsize) ',''fontweight'',' options.fontweight ');'];
+eval(string);
+clear string;
+
+string='plot(md';
+for i=2:length(md.thermaltransient_results),
+	string=[string ',''data'',md.thermaltransient_results(' num2str(i) ').temperature-md.thermaltransient_results(' num2str(i-1) ').temperature,''view'',3,''title'',''Delta temperature at time ' num2str(md.thermaltransient_results(i).time) ' a'''];
+end
+string=[string ',''figure'',2,''colorbar#all'',''on'',''fontsize'',' num2str(options.fontsize) ',''fontweight'',' options.fontweight ');'];
+eval(string);
+clear string;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_transient_field.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_transient_field.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_transient_field.m	(revision 21239)
@@ -0,0 +1,43 @@
+function plot_transient_field(md,options,width,i,data)
+%PLOT_TRANSIENT_FIELD - plot transient results
+%
+%   Usage:
+%      plot_transient_field(md,options,width,i,data);
+%
+%   See also: PLOTMODEL
+
+%Check that they are transient results
+if (~isfield(md.results,'TransientSolution')),
+	error('plot_transient_field error message: no transient results in the model');
+end
+
+%Figure out the iterations to plot and check if it is possible
+transient=md.results.TransientSolution;
+maxiteration=size(transient,2);
+steps=getfieldvalue(options,'steps',1:1:maxiteration);
+
+if max(steps)>maxiteration | min(steps)<1,
+	error(['plot_transient_field error message: problem with the steps requested, must be an interger between 0 and ' num2str(maxiteration)]);
+end
+subplotwidth=ceil(sqrt(length(steps)));
+
+%Figure out the field to plot
+
+field=getfieldvalue(options,'field','Vel');
+
+%process mes only once
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%plot data for all steps
+for i=1:length(steps),
+
+	%process data and change title if needed
+	[data datatype]=processdata(md,transient(steps(i)).(field),options);
+	options=changefieldvalue(options,'title',[field ' at time ' num2str(transient(steps(i)).time/md.constants.yts) ' a']);
+
+	%create plot of step i
+	subplot(subplotwidth,subplotwidth,i);
+	plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+	applyoptions(md,data,options);
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_transient_movie.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_transient_movie.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_transient_movie.m	(revision 21239)
@@ -0,0 +1,99 @@
+function plot_transient_movie(md,options,width,i)
+%PLOT_TRANSIENT_MOVIE - plot a transient result as a movie
+%   Usage:
+%      plot_transient_movie(md,options,width,i);
+%
+%   See also: PLOTMODEL, PLOT_UNIT, PLOT_MANAGER
+
+	%prepare subplot
+	subplot(width,width,i); 
+
+	%xlim
+	if exist(options,'transient_movie_field'),
+		field=getfieldvalue(options,'transient_movie_field');
+	else
+		disp('List of available fields:');
+		F=fields(md.results.TransientSolution(1));
+		num = [];
+		for i=1:numel(F),
+			if ~strcmp(F{i},'time') & ...
+				~strcmp(F{i},'step') & ...
+				~strcmp(F{i},'errlog') & ...
+				~strcmp(F{i},'outlog') & ...
+				~strcmp(F{i},'MaxIterationConvergenceFlag') & ...
+				~strcmp(F{i},'SolutionType'),
+				disp(['   ' num2str(i) ': ' F{i} ]);
+				num = [num i];
+			end
+		end
+		choice=input(['please enter the field number? (between ' num2str(min(num)) ' and ' num2str(max(num)) ')  ']);
+		field =  F{choice};
+	end
+
+	results=md.results.TransientSolution;
+	%loop over the time steps
+	if exist(options,'transient_movie_limit'),
+		limit=getfieldvalue(options,'transient_movie_limit');
+		steps=[limit(1):limit(end)];
+	else
+		steps=1:length(results);
+	end
+
+	%calculate caxis
+	if ~exist(options,'caxis'),
+		range = [Inf -Inf];
+		for i=steps
+			[data datatype]=processdata(md,results(i).(field),options);
+			range(1) = min(range(1),min(data));
+			range(2) = max(range(2),max(data));
+		end
+		options=addfielddefault(options,'caxis',range);
+	end
+
+	%display movie
+	nstep=1;
+	deltat = getfieldvalue(options,'pause',.5);
+	for i=steps
+
+		if ~isempty(results(i).(field)),
+			%process data
+			[x y z elements is2d isplanet]=processmesh(md,results(i).(field),options);
+			[data datatype]=processdata(md,results(i).(field),options);
+
+			clf;
+			titlestring=[field ' at time ' num2str(results(i).time) ' year'];
+			plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+			apply_options_movie(md,options,titlestring);
+
+			if exist(options,'transient_movie_output'),
+				set(gcf,'Renderer','zbuffer','color','white'); %fixes a bug on Mac OS X (not needed in future Matlab version)
+				if nstep==1,
+					%initialize images and frame
+					frame=getframe(gcf);
+					[images,map]=rgb2ind(frame.cdata,256,'nodither');
+					images(1,1,1,length(steps))=0;
+				else
+					frame=getframe(gcf);
+					images(:,:,1,nstep) = rgb2ind(frame.cdata,map,'nodither');
+				end
+			else
+				pause(deltat)
+			end
+			nstep=nstep+1;
+		end
+	end
+
+	%output movie if requested.
+	if exist(options,'transient_movie_output'),
+		filename=getfieldvalue(options,'transient_movie_output');
+		imwrite(images,map,filename,'DelayTime',getfieldvalue(options,'transient_movie_time',2),'LoopCount',inf)
+	end
+
+end %function
+
+function apply_options_movie(md,options,titlestring)
+	%apply options
+	options=changefieldvalue(options,'title',titlestring);
+	options=addfielddefault(options,'colorbar',1);
+	applyoptions(md,[],options);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_transient_results.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_transient_results.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_transient_results.m	(revision 21239)
@@ -0,0 +1,77 @@
+function plot_transient_results(md,options,width,i)
+%PLOT_TRANSIENT_RESULTS - plot transient results
+%
+%   Usage:
+%      plot_transient_results(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+fontsize=getfieldvalue(options,'fontsize',14);
+fontweight=getfieldvalue(options,'fontweight','n');
+
+%Prepare window distribution
+%Get screen geometry
+mp = get(0, 'MonitorPositions');
+%Build window sizes
+if size(mp,1)>=2        %several monitors, use the second one
+	bdwidth=mp(2,1)+5; topbdwidth=mp(2,2)+20; W=mp(2,3)/3; H=mp(2,4)/2;
+else                    %only one monitor
+	bdwidth=5;         topbdwidth=20;         W=mp(1,3)/3; H=mp(1,4)/2;
+end
+pos1=[bdwidth  H+bdwidth  W-2*bdwidth  H-bdwidth-topbdwidth];
+pos2=pos1+[W 0 0 0]; pos3=pos1+[2*W 0 0 0]; pos4=pos1+[0 -H 0 0]; pos5=pos1+[W -H 0 0]; pos6=pos1+[2*W -H 0 0];
+%Create windows
+figure(1);close;
+figure('Position',pos1); figure('Position',pos2);figure('Position',pos3);figure('Position',pos4);figure('Position',pos5);figure('Position',pos6);
+
+string='plotmodel(md';
+for i=1:length(md.results.transient),
+	string=[string ',''data'',md.results.transient(' num2str(i) ').thickness,''title'',''Thickness at time ' num2str(md.results.transient(i).time) ' a'''];
+end
+string=[string ',''figure'',1,''colorbar#all'',''on'',''fontsize'',' num2str(fontsize) ',''fontweight'',''' fontweight ''');'];
+eval(string);
+clear string;
+
+string='plotmodel(md';
+for i=1:length(md.results.transient),
+	string=[string ',''data'',md.results.transient(' num2str(i) ').vel,''view'',3,''title'',''Velocity at time ' num2str(md.results.transient(i).time) ' a'''];
+end
+string=[string ',''figure'',2,''colorbar#all'',''on'',''fontsize'',' num2str(fontsize) ',''fontweight'',''' fontweight  ''');'];
+eval(string);
+clear string;
+
+if dimension(md.mesh)==3,
+	string='plotmodel(md';
+	for i=1:length(md.results.transient),
+		string=[string ',''data'',md.results.transient(' num2str(i) ').temperature,''view'',3,''title'',''Temperature at time ' num2str(md.results.transient(i).time) ' a'''];
+	end
+	string=[string ',''figure'',3,''colorbar#all'',''on'',''view'',3,''fontsize'',' num2str(fontsize) ',''fontweight'',''' fontweight  ''');'];
+	eval(string);
+	clear string;
+end
+
+string='plotmodel(md';
+for i=2:length(md.results.transient),
+	string=[string ',''data'',md.results.transient(' num2str(i) ').thickness-md.results.transient(' num2str(i-1) ').thickness,''title'',''Delta thickness at time ' num2str(md.results.transient(i).time) ' a'''];
+end
+string=[string ',''figure'',4,''colorbar#all'',''on'',''fontsize'',' num2str(fontsize) ',''fontweight'',''' fontweight  ''');'];
+eval(string);
+clear string;
+
+string='plotmodel(md';
+for i=2:length(md.results.transient),
+	string=[string ',''data'',md.results.transient(' num2str(i) ').vel-md.results.transient(' num2str(i-1) ').vel,''view'',3,''title'',''Delta velocity at time ' num2str(md.results.transient(i).time) ' a'''];
+end
+string=[string ',''figure'',5,''colorbar#all'',''on'',''fontsize'',' num2str(fontsize) ',''fontweight'',''' fontweight  ''');'];
+eval(string);
+clear string;
+
+if dimension(md.mesh)==3,
+	string='plotmodel(md';
+	for i=2:length(md.results.transient),
+		string=[string ',''data'',md.results.transient(' num2str(i) ').temperature-md.results.transient(' num2str(i-1) ').temperature,''view'',3,''title'',''Delta temperature at time ' num2str(md.results.transient(i).time) ' a'''];
+	end
+	string=[string ',''figure'',6,''colorbar#all'',''on'',''fontsize'',' num2str(fontsize) ',''fontweight'',''' fontweight  ''');'];
+	eval(string);
+	clear string;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_unit.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_unit.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_unit.js	(revision 21239)
@@ -0,0 +1,263 @@
+function plot_unit(md,data,datatype,options,canvas) {
+	//PLOT_UNIT - unit plot, display data
+	//
+	//   Usage:
+	//      plot_unit(md,data,options,canvas);
+	//
+	//   See also: PLOTMODEL, PLOT_MANAGER
+
+	//declare variables:  {{{
+	//Process data and model
+	var meshresults = processmesh(md,data,options);
+	var x = meshresults[0]; 
+	var y = meshresults[1]; 
+	var z = meshresults[2]; 
+	var elements = meshresults[3];
+	var is2d = meshresults[4]; 
+	var isplanet = meshresults[5];
+	
+	var vertices = new Float32Array(x.length * 3);
+	var texcoords = new Float32Array(x.length * 2);
+	var indices = new Uint16Array(elements.length * 3);
+	var nanindices = {};
+	var xmin,xmax;
+	var ymin,ymax;
+	var zmin,zmax;
+	var datamin,datamax,datadelta;
+	var matrixscale,vertexscale;
+
+	//Compue scaling through matrices for 2d meshes and vertices for 3d meshes
+	if (!md.geometry.surface) {
+		md.geometry.surface=NewArrayFill(md.mesh.x.length,0);
+	}
+	if (md.mesh.classname() == 'mesh3dsurface') {
+		matrixscale = 1;
+		vertexscale = options.getfieldvalue('heightscale',1);
+	}
+	else {
+		if (md.geometry.surface) {
+			z=md.geometry.surface;
+		}	
+		matrixscale = options.getfieldvalue('heightscale',1);
+		vertexscale = 0;
+	}
+	//}}}
+
+	//Compute coordinates and data range:
+	var modelxlim = [ArrayMin(x),ArrayMax(x)];
+	var modelylim = [ArrayMin(y),ArrayMax(y)];
+	var modelzlim = [ArrayMin(z),ArrayMax(z)];
+	var xlim = options.getfieldvalue('xlim',modelxlim);
+	var ylim = options.getfieldvalue('ylim',modelylim);
+	var zlim = options.getfieldvalue('zlim',modelzlim);
+	xmin = xlim[0];
+	xmax = xlim[1];
+	ymin = ylim[0];
+	ymax = ylim[1];
+	zmin = zlim[0];
+	zmax = zlim[1];
+	var caxis;
+
+	//Compute gl variables:
+	var gl = canvas.gl;
+	var node = Node(gl);
+	canvas.nodes[canvas.nodes.length] = node;
+	canvas.unitNode = node;
+	node.name = "unit";
+	node.shaderName = "Textured";
+	node.shader = gl.shaders[node.shaderName];
+	node.scale = [1, 1, matrixscale];
+	node.rotation = [-90, 0, 0];
+	node.translation = [0, 0, 0];
+	node.center = [(xmin + xmax) / 2, (ymin + ymax) / 2, (zmin + zmax) / 2];
+	node.alpha = options.getfieldvalue('alpha',1.0);
+	node.drawOrder = 1;
+	node.maskEnabled = options.getfieldvalue('innermask','off') == 'on';
+	node.maskHeight = options.getfieldvalue('innermaskheight',150.0);
+	node.maskColor = options.getfieldvalue('innermaskcolor',[0.0,0.0,1.0,1.0]);
+	node.enabled = options.getfieldvalue('nodata','off') == 'off';
+	updateModelMatrix(node);
+
+	switch(datatype){
+		//element plot {{{
+		case 1:
+			pos=ArrayFindNot(data,NaN); //needed for element on water
+			if (elements[0].length==6){ //prisms
+			}
+			else if (elements[0].length==4){ //tetras
+			}
+			else{ //2D triangular elements
+			}
+			break;
+		//}}}
+		//node plot {{{
+		case 2:
+			if (elements[0].length==6){ //prisms
+			}
+			else if (elements[0].length==4){ //tetras
+			}
+			else{ //triangular elements	
+				caxis = options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+				if (options.getfieldvalue('log','off')!='off') caxis = [Math.log10(caxis[0])/Math.log10(options.getfieldvalue('log',10)),Math.log10(caxis[1])/Math.log10(options.getfieldvalue('log',10))];
+				datamin = caxis[0];
+				datamax = caxis[1];
+				datadelta = datamax - datamin;
+
+				var xyz = vec3.create();
+				var direction = vec3.create();
+				var vertex = vec3.create();
+				var magnitude;
+
+				for(var i = 0, vindex = 0, tindex = 0; i < x.length; i++){
+					//Check for NaN values and remove from indices array as necessary, but preserve vertex array spacing
+					if (isNaN(x[i]) || isNaN(y[i]) || isNaN(z[i]) || isNaN(data[i])) {
+						nanindices[i] = i;
+						vertices[vindex++] = vertex[0];
+						vertices[vindex++] = vertex[1];
+						vertices[vindex++] = vertex[2];
+						
+						texcoords[tindex++] = 0.5;
+						texcoords[tindex++] = 0.0;
+						continue;
+					}
+
+					//Scale vertices
+					xyz = vec3.fromValues(x[i], y[i], z[i]);
+					magnitude = vec3.length(xyz) + md.geometry.surface[i] * vertexscale;
+					vec3.normalize(direction, xyz);
+					vec3.scale(vertex, direction, magnitude);
+					vertices[vindex++] = vertex[0];
+					vertices[vindex++] = vertex[1];
+					vertices[vindex++] = vertex[2];
+
+					texcoords[tindex++] = 0.5;
+					texcoords[tindex++] = clamp((data[i] - datamin) / datadelta, 0.0, 1.0);
+				}
+
+				//linearize the elements array: 
+				var element;
+				for(var i = 0, iindex = 0; i < elements.length; i++){
+					element = [elements[i][0] - 1, elements[i][1] - 1, elements[i][2] - 1];
+					if (element[0] in nanindices || element[1] in nanindices || element[2] in nanindices) continue;
+					indices[iindex++] = element[0];
+					indices[iindex++] = element[1];
+					indices[iindex++] = element[2];
+				}
+			}
+			node.mesh = GL.Mesh.load({vertices:vertices, coords:texcoords, triangles:indices}, null, null, gl);
+			node.mesh.octree = new GL.Octree(node.mesh);
+			break;
+		//}}}
+		//quiver plot {{{
+		case 3:
+			if (is2d){
+				//plot_quiver(x,y,data(:,1),data(:,2),options);
+			}
+			else{
+				//plot_quiver3(x,y,z,data(:,1),data(:,2),data(:,3),options);
+			}
+			break;
+		//}}}
+		//node transient plot {{{
+		case 5:
+			if (elements[0].length==6){ //prisms
+			}
+			else if (elements[0].length==4){//tetras
+			}
+			else{ //triangular elements
+				var xyz = vec3.create();
+				var direction = vec3.create();
+				var vertex = vec3.create();
+				var magnitude;
+				var timestamps = data[data.length-1];
+				for(var i = 0, vindex = 0, tindex = 0; i < x.length; i++){
+					//Check for NaN values and remove from indices array as necessary, but preserve vertex array spacing
+					if (isNaN(x[i]) || isNaN(y[i]) || isNaN(z[i]) || isNaN(data[i][0])) {
+						nanindices[i] = i;
+					}
+					else {
+						//Scale vertices
+						xyz = vec3.fromValues(x[i], y[i], z[i]);
+						magnitude = vec3.length(xyz) + md.geometry.surface[i] * vertexscale;
+						vec3.normalize(direction, xyz);
+						vec3.scale(vertex, direction, magnitude);
+					}
+					vertices[vindex++] = vertex[0];
+					vertices[vindex++] = vertex[1];
+					vertices[vindex++] = vertex[2];
+				}	
+				//Transpose data to obtain column addressable data matrix
+				data = data[0].map(function(col, i) { 
+					return data.map(function(row) { 
+						return row[i]
+					})
+				});
+				//Prevent evaluation of datasubarray min/max if caxis exists
+				if (options.exist('caxis')) caxis = options.getfieldvalue('caxis');
+				else caxis = [ArrayMin(data[0]),ArrayMax(data[0].slice(0,-1))];
+				if (options.getfieldvalue('log','off')!='off') caxis = [Math.log10(caxis[0])/Math.log10(options.getfieldvalue('log',10)),Math.log10(caxis[1])/Math.log10(options.getfieldvalue('log',10))];
+				//Prepare texcoords to hold array of data values
+				texcoords = [];
+				for(var i = 0; i < data.length; i++){					
+					datamin = caxis[0];
+					datamax = caxis[1];
+					datadelta = datamax - datamin;
+					//Precalculate arrays for each datasubarray, trimming off timestamp value by using x.length instead of data[i].length
+					texcoords[i] = new Float32Array(x.length * 2);
+					for(var j = 0, index = 0; j < x.length; j++){
+						texcoords[i][index++] = 0.5;
+						texcoords[i][index++] = clamp((data[i][j] - datamin) / datadelta, 0.0, 1.0);
+					}
+				}
+				
+				//linearize the elements array:
+				var element;
+				for(var i = 0, iindex = 0; i < elements.length; i++){
+					element = [elements[i][0] - 1, elements[i][1] - 1, elements[i][2] - 1];
+					if (element[0] in nanindices || element[1] in nanindices || element[2] in nanindices) continue;
+					indices[iindex++] = element[0];
+					indices[iindex++] = element[1];
+					indices[iindex++] = element[2];
+				}
+			
+				//Initialize movie loop
+				node.movieInterval = 1000 / canvas.moviefps;
+				node.movieTimestamps = timestamps;
+				node.movieLength = timestamps.length;
+				node.movieFrame = 0;
+				if (canvas.movieHandler) { clearInterval(canvas.movieHandler); }
+				canvas.movieHandler = setInterval(function () {
+						node.movieFrame = canvas.movieFrame;
+						if (canvas.moviePlay && canvas.movieIncrement) {
+							if (canvas.movieReverse) {node.movieFrame = (((node.movieFrame - 1) % node.movieLength) + node.movieLength) % node.movieLength; }
+							else { node.movieFrame = (((node.movieFrame + 1) % node.movieLength) + node.movieLength) % node.movieLength; }
+						}
+						if (canvas.progressBar) {
+							canvas.progressBar.val(node.movieFrame);
+							canvas.progressBar.slider('refresh');
+						}
+						if (canvas.timeLabel) { canvas.timeLabel.html(node.movieTimestamps[node.movieFrame].toFixed(0) + " " + options.getfieldvalue("movietimeunit","yr")); }
+
+						var buffer = node.mesh.getBuffer("coords");
+						buffer.data = texcoords[node.movieFrame];
+						buffer.upload(canvas.gl.DYNAMIC_DRAW);
+						node.mesh.octree = new GL.Octree(node.mesh);
+
+						canvas.movieFrame = node.movieFrame;
+					}, node.movieInterval);
+				if (canvas.progressBar) {
+					canvas.movieFrame = 0;
+					canvas.progressBar.val(0);
+					canvas.progressBar.attr('max', node.movieLength-1);
+					canvas.progressBar.slider('refresh');
+				}
+				
+			}
+			node.mesh = GL.Mesh.load({vertices:vertices, coords:texcoords[0], triangles:indices}, null, null, gl);
+			node.mesh.octree = new GL.Octree(node.mesh);
+			break;
+		//}}}
+		default:
+			throw Error(sprintf("%s%i%s\n",'case ',datatype,' not supported'));
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_unit.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_unit.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_unit.m	(revision 21239)
@@ -0,0 +1,73 @@
+function plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+%PLOT_UNIT - unit plot, display data
+%
+%   Usage:
+%      plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options);
+%
+%   See also: PLOTMODEL, PLOT_MANAGER
+
+%edgecolor
+edgecolor=getfieldvalue(options,'edgecolor','none');
+
+switch datatype,
+
+	%element plot
+	case 1,
+
+		pos=find(~isnan(data)); %needed for element on water
+		if size(elements,2)==6, %prisms
+			A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
+			patch( 'Faces', [A B C],  'Vertices', [x y z],'CData', data(pos),'FaceColor','flat','EdgeColor',edgecolor);
+			patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', data(pos),'FaceColor','flat','EdgeColor',edgecolor);
+			patch( 'Faces', [A B E D],'Vertices', [x y z],'CData', data(pos),'FaceColor','flat','EdgeColor',edgecolor);
+			patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', data(pos),'FaceColor','flat','EdgeColor',edgecolor);
+			patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', data(pos),'FaceColor','flat','EdgeColor',edgecolor);
+		elseif size(elements,2)==4, %tetras
+			A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4);
+			patch( 'Faces',[A B C],'Vertices', [x y z],'CData',data(pos),'FaceColor','flat','EdgeColor',edgecolor);
+			patch( 'Faces',[A B D],'Vertices', [x y z],'CData',data(pos),'FaceColor','flat','EdgeColor',edgecolor);
+			patch( 'Faces',[B C D],'Vertices', [x y z],'CData',data(pos),'FaceColor','flat','EdgeColor',edgecolor);
+			patch( 'Faces',[C A D],'Vertices', [x y z],'CData',data(pos),'FaceColor','flat','EdgeColor',edgecolor);
+		else
+			A=elements(pos,1); B=elements(pos,2); C=elements(pos,3);
+			patch( 'Faces', [A B C], 'Vertices', [x y z],'CData', data(pos),'FaceColor','flat','EdgeColor',edgecolor);
+		end
+
+		if is2d,
+		end
+
+	%node plot
+	case 2,
+
+		if size(elements,2)==6, %prisms
+			A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+			patch( 'Faces', [A B C],  'Vertices', [x y z],'FaceVertexCData', data(:),'FaceColor','interp','EdgeColor',edgecolor);
+			patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', data(:),'FaceColor','interp','EdgeColor',edgecolor);
+			patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', data(:),'FaceColor','interp','EdgeColor',edgecolor);
+			patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', data(:),'FaceColor','interp','EdgeColor',edgecolor);
+			patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', data(:),'FaceColor','interp','EdgeColor',edgecolor);
+		elseif size(elements,2)==4, %tetras
+			A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4);
+			patch( 'Faces',[A B C],'Vertices', [x y z],'FaceVertexCData',data(:),'FaceColor','interp','EdgeColor',edgecolor);
+			patch( 'Faces',[A B D],'Vertices', [x y z],'FaceVertexCData',data(:),'FaceColor','interp','EdgeColor',edgecolor);
+			patch( 'Faces',[B C D],'Vertices', [x y z],'FaceVertexCData',data(:),'FaceColor','interp','EdgeColor',edgecolor);
+			patch( 'Faces',[C A D],'Vertices', [x y z],'FaceVertexCData',data(:),'FaceColor','interp','EdgeColor',edgecolor);
+		else
+			A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+			patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', data(:),'FaceColor','interp','EdgeColor',edgecolor);
+		end
+
+	%quiver plot
+	case 3,
+
+		if is2d,
+			plot_quiver(x,y,data(:,1),data(:,2),options);
+		else
+			plot_quiver3(x,y,z,data(:,1),data(:,2),data(:,3),options);
+		end
+
+	otherwise,
+		error(['case ' num2str(datatype) ' not supported']);
+
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_unit.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_unit.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_unit.py	(revision 21239)
@@ -0,0 +1,92 @@
+from cmaptools import truncate_colormap
+try:
+    import pylab as p
+    import matplotlib as mpl
+    import matplotlib.pyplot as plt
+    import numpy as npy
+except ImportError:
+    print "could not import pylab, matplotlib has not been installed, no plotting capabilities enabled"
+
+def plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options,ax):
+    """
+    PLOT_UNIT - unit plot, display data
+    
+    	Usage:
+    		plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+    
+    	See also: PLOTMODEL, PLOT_MANAGER
+    """
+    
+    #edgecolor
+    edgecolor=options.getfieldvalue('edgecolor','None')
+    
+    #number of colorlevels for plots
+    colorlevels=options.getfieldvalue('colorlevels',128)
+    
+    alpha=options.getfieldvalue('alpha',1)
+    
+    #colormap
+    # default sequential colormap
+    defaultmap=truncate_colormap(mpl.cm.gnuplot2,0.1,0.9,128)
+    cmap=options.getfieldvalue('colormap',defaultmap)
+    if options.exist('cmap_set_over'):
+        over=options.getfieldvalue('cmap_set_over','0.5')
+        cmap.set_over(over)
+    if options.exist('cmap_set_under'):
+        under=options.getfieldvalue('cmap_set_under','0.5')
+        cmap.set_under(under)
+    
+    #normalize colormap if clim/caxis specified
+    if options.exist('clim'):
+        lims=options.getfieldvalue('clim',[npy.amin(data),npy.amax(data)])
+    elif options.exist('caxis'):
+        lims=options.getfieldvalue('caxis',[npy.amin(data),npy.amax(data)])
+    else:
+        if npy.amin(data)==npy.amax(data):
+            lims=[npy.amin(data)-0.5,npy.amax(data)+0.5]
+        else:
+    	    lims=[npy.amin(data),npy.amax(data)]
+    norm = mpl.colors.Normalize(vmin=lims[0], vmax=lims[1])
+    if datatype==1:
+       #element plot
+        if is2d:
+    	    tri=ax.tripcolor(x,y,elements,data,colorlevels,cmap=cmap,norm=norm,alpha=alpha,edgecolors=edgecolor)
+    	else:
+    	    raise ValueError('plot_unit error: 3D element plot not supported yet')
+    	return 
+    
+    elif datatype==2:
+    	#node plot
+    	if is2d:
+    	    tri=ax.tricontourf(x,y,elements,data,colorlevels,cmap=cmap,norm=norm,alpha=alpha,extend='both')
+    	    if edgecolor != 'None':
+    	        ax.triplot(x,y,elements,color=edgecolor)
+    	else:
+    	    raise ValueError('plot_unit error: 3D node plot not supported yet')
+    	return
+    
+    elif datatype==3:
+        vx=data[:,0]
+        vy=data[:,1]
+        #TODO write plot_quiver.py to handle this here
+        color=npy.sqrt(vx**2+vy**2)
+        scale=options.getfieldvalue('scale',1000)
+        width=options.getfieldvalue('width',0.005*(npy.amax(x)-npy.amin(y)))
+        headwidth=options.getfieldvalue('headwidth',3)
+        headlength=options.getfieldvalue('headlength',5)
+        Q=ax.quiver(x,y,vx,vy,color,cmap=cmap,norm=norm,scale=scale,
+                width=width,headwidth=headwidth,headlength=headlength)
+    	return
+    
+    elif datatype==4:
+    	#P1 patch plot
+    	print 'plot_unit message: P1 patch plot not implemented yet'
+    	return
+    
+    elif datatype==5:
+    	print 'plot_unit message: P0 patch plot not implemented yet'
+    	return
+    
+    else:
+    	raise ValueError('datatype=%d not supported' % datatype)
+    
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_vertexnumbering.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_vertexnumbering.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_vertexnumbering.m	(revision 21239)
@@ -0,0 +1,59 @@
+function plot_vertexnumbering(md,options,width,i)
+%PLOT_VERTEXNUMBERING - plot vertex numbering
+%
+%   Usage:
+%      plot_vertexnumbering(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[vertexnumbers datatype]=processdata(md,[1:md.mesh.numberofvertices]',options);
+
+%plot
+subplot(width,width,i); 
+
+if is2d
+	%plot mesh 
+	A=elements(:,1); B=elements(:,2); C=elements(:,3);
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+
+	%numbering
+	text(x,y,z,num2str(vertexnumbers),...
+		'backgroundcolor',[0.8 0.9 0.8],'HorizontalAlignment','center','VerticalAlignment','middle');
+
+	%Highlight
+	pos=getfieldvalue(options,'highlight',[]);
+	text(x(pos),y(pos),z(pos),num2str(pos(:)),...
+		'backgroundcolor',[1 0 0],'HorizontalAlignment','center','VerticalAlignment','middle');
+else
+	if size(elements,2)==6, %prisms
+		%plot mesh 
+		A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+		patch( 'Faces', [A B C],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+		patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+		patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+		patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+		patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	elseif size(elements,2)==4, %tetras
+		A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4);
+		patch( 'Faces',[A B C],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor','black');
+		patch( 'Faces',[A B D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor','black');
+		patch( 'Faces',[B C D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor','black');
+		patch( 'Faces',[C A D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor','black');
+	end
+
+	%numbering
+	text(x,y,z,num2str(vertexnumbers),...
+		'backgroundcolor',[0.8 0.9 0.8],'HorizontalAlignment','center','VerticalAlignment','middle');
+
+	%Highlight
+	pos=getfieldvalue(options,'highlight',[]);
+	text(x(pos),y(pos),z(pos),num2str(pos(:)),...
+		'backgroundcolor',[1 0 0],'HorizontalAlignment','center','VerticalAlignment','middle');
+end
+
+%apply options
+options=addfielddefault(options,'title','Node numbering');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_vstime.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_vstime.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plot_vstime.m	(revision 21239)
@@ -0,0 +1,55 @@
+function plot_vstime(md,options,nlines,ncols,i)
+
+%plot mesh
+subplot(nlines,ncols,i); 
+
+%getting the variable structure
+datastruct  = getfieldvalue(options,'Input');
+structnames = strsplit_strict(datastruct,'.');
+
+%getting the position of the to be ploted point
+location=getfieldvalue(options,'position');
+if ~isnumeric(location) | numel(location)~=2,
+	error('location provided not supported (should be [x y])');
+end
+xpoint=location(1);
+ypoint=location(2);
+
+%gathering a few time related parameters
+FirstTime=md.timestepping.start_time;
+LastTime=md.timestepping.final_time;
+Dt=md.timestepping.time_step;
+OutputDt=md.settings.output_frequency*Dt;
+%Constructiion of the result structure(one step above variable in
+%the structure tree)
+solstruct = md;
+for i=2:numel(structnames)-1,
+	solstruct=solstruct.(char(structnames(i)));
+end
+
+timesteps   = numel(solstruct);
+%now build a table with the variable needed in the end plot
+Value(1:timesteps)=NaN*ones(timesteps,1);
+time(1:timesteps)=NaN*ones(timesteps,1);
+
+for t=1:timesteps,
+	
+	data=solstruct(t).(char(structnames(numel(structnames))));
+
+	[TimeData datatype]=processdata(md,data,options);
+	clear data
+	Value(t)=PointValues(md,TimeData,xpoint,ypoint);
+	time(t)=FirstTime+(t-1)*OutputDt+Dt;
+end
+
+plot(time,Value);
+clear Value time
+
+options=addfielddefault(options,'title',md.miscellaneous.name);
+options=addfielddefault(options,'ylabel',char(structnames(numel(structnames))));
+options=addfielddefault(options,'xlabel','Time');
+options=addfielddefault(options,'colorbar',0);
+options=addfielddefault(options,'axis','auto');
+options=addfielddefault(options,'xlim',[FirstTime LastTime]);
+options=addfielddefault(options,'view',2);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotboxpos.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotboxpos.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotboxpos.m	(revision 21239)
@@ -0,0 +1,91 @@
+function pos = plotboxpos(h)
+%PLOTBOXPOS Returns the position of the plotted axis region
+%
+% pos = plotboxpos(h)
+%
+% This function returns the position of the plotted region of an axis,
+% which may differ from the actual axis position, depending on the axis
+% limits, data aspect ratio, and plot box aspect ratio.  The position is
+% returned in the same units as the those used to define the axis itself.
+% This function can only be used for a 2D plot.  
+%
+% Input variables:
+%
+%   h:      axis handle of a 2D axis (if ommitted, current axis is used).
+%
+% Output variables:
+%
+%   pos:    four-element position vector, in same units as h
+
+% Copyright 2010 Kelly Kearney
+
+% Check input
+
+if nargin < 1
+    h = gca;
+end
+
+if ~ishandle(h) || ~strcmp(get(h,'type'), 'axes')
+    error('Input must be an axis handle');
+end
+
+% Get position of axis in pixels
+
+currunit = get(h, 'units');
+set(h, 'units', 'pixels');
+axisPos = get(h, 'Position');
+set(h, 'Units', currunit);
+
+% Calculate box position based axis limits and aspect ratios
+
+darismanual  = strcmpi(get(h, 'DataAspectRatioMode'),    'manual');
+pbarismanual = strcmpi(get(h, 'PlotBoxAspectRatioMode'), 'manual');
+
+if ~darismanual && ~pbarismanual
+    
+    pos = axisPos;
+    
+else
+
+    dx = diff(get(h, 'XLim'));
+    dy = diff(get(h, 'YLim'));
+    dar = get(h, 'DataAspectRatio');
+    pbar = get(h, 'PlotBoxAspectRatio');
+
+    limDarRatio = (dx/dar(1))/(dy/dar(2));
+    pbarRatio = pbar(1)/pbar(2);
+    axisRatio = axisPos(3)/axisPos(4);
+
+    if darismanual
+        if limDarRatio > axisRatio
+            pos(1) = axisPos(1);
+            pos(3) = axisPos(3);
+            pos(4) = axisPos(3)/limDarRatio;
+            pos(2) = (axisPos(4) - pos(4))/2 + axisPos(2);
+        else
+            pos(2) = axisPos(2);
+            pos(4) = axisPos(4);
+            pos(3) = axisPos(4) * limDarRatio;
+            pos(1) = (axisPos(3) - pos(3))/2 + axisPos(1);
+        end
+    elseif pbarismanual
+        if pbarRatio > axisRatio
+            pos(1) = axisPos(1);
+            pos(3) = axisPos(3);
+            pos(4) = axisPos(3)/pbarRatio;
+            pos(2) = (axisPos(4) - pos(4))/2 + axisPos(2);
+        else
+            pos(2) = axisPos(2);
+            pos(4) = axisPos(4);
+            pos(3) = axisPos(4) * pbarRatio;
+            pos(1) = (axisPos(3) - pos(3))/2 + axisPos(1);
+        end
+    end
+end
+
+% Convert plot box position to the units used by the axis
+
+temp = axes('Units', 'Pixels', 'Position', pos, 'Visible', 'off', 'parent', get(h, 'parent'));
+set(temp, 'Units', currunit);
+pos = get(temp, 'position');
+delete(temp);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotdoc.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotdoc.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotdoc.js	(revision 21239)
@@ -0,0 +1,69 @@
+function plotdoc() {
+	//PLOTDOC - plot documentation
+	//
+	//   Usage:
+	//      plotdoc()
+	
+	//TODO: Standardize image to overlay_image, heightscale to scaling, colorbarfontsize/color, clarify innermask/outermask, edgecolor implementation, check colormap, 
+
+	console.log(' WARNING: starred methods (*) are experimental and not guarenteed to be stable');
+	console.log('   Plot usage: plotmodel(model,varargin)');
+	console.log('   Options: ');
+	console.log('       "canvasid": canvas id');
+	console.log('       "data" : what we want to plot');
+	console.log('                Available values for "data" are: ');
+	console.log('                  - any field of the model structure. ex: plot(md,"data","vel"), or plot(md,"data",md.initialization.vel)');
+	console.log('                  - "mesh": draw mesh using trisurf');
+	console.log('                  - "quiver": quiver plot');
+	console.log('       "2d": renders orthographic camera with view set to [0, 90] (default "off", ex: "on", "off")');
+	console.log('       "backgroundcolor": plot background color. (default "lightcyan", ex: "green","blue")');
+	console.log('       "caxis": modify  colorbar range. (array of type [a, b] where b>=a)');
+	console.log('       "colorbar": add colorbar (default "off", ex: "on", "off")');
+	console.log('       "colorbarid": colorbar canvas id (string)');
+	console.log('       "colorbartitle": colorbar title (string)');	
+	console.log('       "colorbarnticks": number of colorbar ticks (default 6, ex: 2, 10)');	
+	console.log('       "colorbarprecision": colorbar label digit precision (default 3, ex: 1, 4)');	
+	console.log('       "colorbarinnerlabels": choose whether labels are inside colorbar (default "off", ex: "on", "off")');
+	console.log('       "colorbarfontsize": specify colorbar font size (default 1, ex: 14, 22)');
+	console.log('       "colorbarfontcolor": specify colorbar font color (default "black", ex: "green","blue")');
+	console.log('       "colorbarwidth": multiplier (default 1) to the default width colorbar');
+	console.log('       "colorbarheight": multiplier (default 1) to the default height colorbar');
+	console.log('       "colormap": same as standard matlab option (default "jet", ex: "hsv","cool","spring","gray","Ala","Rignot",...)');
+	console.log('       "controlsensitivity": sensitivty of view/zoom changes as a percentage of default (default 1, ex: 0.5, 2.75)');
+	console.log('       "datamarkers": toggle data marker displays (default "on", ex: "on", "off")');
+	console.log('       "datamarkers_image": toggle data marker displays (default "on", ex: "on", "off")');
+	console.log('       "datamarkerssize": specifiy the width and height of the data markers (default [32,32], ex: [24,32], [105,10])');
+	console.log('       "displayview": print view value to console (default "off", ex: "on", "off")');
+	console.log('       "displayzoom": print zoom value to console (default "off", ex: "on", "off")');
+	console.log('       "edgecolor": same as standard matlab option EdgeColor (default "black", ex: color name: "blue" or RGB array: [0.5, 0.2, 0.8])');
+	console.log('       "heightscale": scaling factor to accentuate height. (default 1, ex: 0.5, 100)');
+	console.log('       "linewidth*": line width for mesh, quiver, and contour plots, currently limited by WebGL to 1. (default 1, ex: 2, 5)');
+	console.log('       "log": value of log (default 10, ex: 2, Math.E)');
+	console.log('       "mask": list of flags of size numberofnodes or numberofelements. Only "true" values are plotted ');
+	console.log('       "moviefps": frames per second when displaying transient runs (default 5, ex: 1, 10)');
+	console.log('       "innermask*": Special mask that colors all parts of a data mesh below a height a certain color. provide innermaskheight and innermaskcolor options also (default "off", ex: "on", "off")');
+	console.log('       "outermask*": Special mask that colors all parts of a overlay mesh below a height a certain color. provide outermaskheight and outermaskcolor options also (default "off", ex: "on", "off")');
+	console.log('       "overlay": overlay a radar amplitude image behind (default "off", ex: "on", "off")');
+	console.log('       "overlay_image": path to overlay image (default "", ex: "./images/radar.png")');
+	console.log('       "scaling": scaling factor used by quiver plots. Default is 0.4');
+	console.log('       "alpha": transparency coefficient 0.0 to 1.0, the lower, the more transparent. (default 1.0, ex: 0.5, 0.25)');
+	console.log('       "azlim": azimuth view limits (ex: [0, 180])');
+	console.log('       "ellim": elevation view limits (ex: [-90, 90])');
+	console.log('       "origin": initial camera offset from model center (default [0,0,0.0], ex: [-2, 1.5, 0.01])');
+	console.log('       "render": toggle sky, ground, and space rendering. (default [], ex: ["sky", "space"], ["ground"])');
+	console.log('       "viewPanning": enable view origin panning with two-finger touch or shift+mouse drag. (default "off", ex: "on", "off")');
+	console.log('       "view": initial azimuth and elevation angles for camera (default [0,90], ex: [90, 180]');
+	console.log('       "xlim": x coordinates to fit inside camera (ex: [0, 500])');
+	console.log('       "ylim": y coordinates to fit inside camera (ex: [0, 500])');
+	console.log('       "zlim": z coordinates to fit inside camera (ex: [0, 500])');
+	console.log('       "zoomlim": zoom view limits (ex: [0.05, 10])');
+	console.log('       "zoom": initial camera zoom as a percentage of default (default 1, ex: 1.5, 0.01)');
+	console.log('       "cloud*": plot a cloud of points, given a flat array of 3d coordinates (ex: [0.0, 0.0, 0.0, 1.0, 1.0, 1.0])');
+	console.log('       "expdisp*": plot exp file on top of a data plot. provide exp file as an argument (use a cell of strings if more than one)');
+	console.log('       "textlabels*": plot text labels rendered in 3d space, using an array of text/coordinate pairs (ex: [{"pos":[0.0,0.0,0.0],"text":"origin"}])');
+	
+	console.log('  ');
+	console.log('   Examples:');
+	console.log('       plotmodel(md,"data","vel","data","mesh","view#2",3,"colorbar#all","on")');
+	console.log('       plotmodel(md,"data",md.geomtery.surface)');
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotdoc.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotdoc.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotdoc.m	(revision 21239)
@@ -0,0 +1,171 @@
+function plotdoc()
+%PLOTDOC - plot documentation
+%
+%   Usage:
+%      plotdoc()
+
+disp(' ');
+disp('   Plot usage: plotm(model,varargin)');
+disp('   Options: ');
+disp('       ''figure'': figure number');
+disp('       ''data'' : what we want to plot');
+disp('                Available values for ''data'' are: ');
+disp('                  - any field of the model structure. ex: plot(md,''data'',''vel''), or plot(md,''data'',md.initialization.vel)');
+disp('                  - ''basal_drag'': plot the basal drag on the bed (in kPa) based on the velocity in md.initialization');
+disp('                  - ''basal_dragx'' or ''basal_dragy'' : plot a component of the basal drag on the bed (in kPa)');
+disp('                  - ''boundaries'': this will draw all the segment boundaries to the model, including rifts.');
+disp('                  - ''icefront'': this will show segments that are used to define the icefront of the model (Neumann boundary conditions).');
+disp('                  - ''BC'': this will draw all the boundary conditions (Dirichlet and Neumann).');
+disp('                  - ''deviatoricstress_tensor'': plot the components of the deviatoric stress tensor (tauxx,tauyy,tauzz,tauxy,tauxz,tauyz) if computed');
+disp('                  - ''deviatoricstress_principal'': plot the deviatoricstress tensor principal axis and principal values');
+disp('                  - ''deviatoricstress_principalaxis1'': arrow plot the first principal axis of the deviatoricstress tensor(replace 1 by 2 or 3 if needed)');
+disp('                  - ''driving_stress'': plot the driving stress (in kPa)');
+disp('                  - ''elements_type'': model used for each element');
+disp('                  - ''elementnumbering'': numbering of elements');
+disp('                  - ''vertexnumbering'': numbering of vertices');
+disp('                  - ''highlightelements'': to highlight elements to highlight the element list');
+disp('                  - ''highlightvertices'': to highlight vertices (use highlight option to enter the vertex list');
+disp('                  - ''mesh'': draw mesh using trisurf');
+disp('                  - ''referential'': stressbalance referential');
+disp('                  - ''riftvel'': velocities along rifts');
+disp('                  - ''riftrelvel'': relative velocities along rifts');
+disp('                  - ''riftpenetration'': penetration levels for a fault');
+disp('                  - ''riftfraction'': fill fractions for every node of the rifts');
+disp('                  - ''rifts'': plot mesh with an offset so that rifts are visible');
+disp('                  - ''strainrate_tensor'': plot the components of the strainrate tensor (exx,eyy,ezz,exy,exz,eyz) if computed');
+disp('                  - ''strainrate_principal'': plot the strainrate tensor principal axis and principal values)');
+disp('                  - ''strainrate_principalaxis1'': arrow plot the first principal axis of the strainrate tensor(replace 1 by 2 or 3 if needed)');
+disp('                  - ''stress_tensor'': plot the components of stress tensor (sxx,syy,szz,sxy,sxz,syz) if computed');
+disp('                  - ''stress_principal'': plot the stress tensor principal axis and principal values');
+disp('                  - ''stress_principalaxis1'': arrow plot the first principal axis of the stress tensor(replace 1 by 2 or 3 if needed)');
+disp('                  - ''transient_results'': this will display all the time steps of a transient run (use steps to specify the steps requested)');
+disp('                  - ''transient_vel'': this will display the velocity for the time steps requested in ''steps'' of a transient run');
+disp('                  - ''transient_vel'': vel can be by any field of the transient results (vx, vy, vz, vel, temperature, melting, pressure, bed, thickness, surface)');
+disp('                  - ''transient_field'': dynamic plot of results. specify ''steps'' option, as fell as ''field'' (defaults are all steps, for ''Vel'' field)');
+disp('                  - ''transient_movie'': this will display the time steps of a given field of a transient run');
+disp('                  - ''transient_movie_field'': field to be displayed when doing  transient_movie data display');
+disp('                  - ''transient_movie_output'': filename if output is desired for movie');
+disp('                  - ''transient_movie_time'': time for each image (default 2 seconds)');
+disp('                  - ''thermaltransient_results'': this will display all the time steps of a thermal transient run');
+disp('                  - ''qmuhistnorm'': histogram normal distribution. needs option qmudata');
+disp('                  - ''qmumean'': plot of mean distribution in sampling analysis with scaled response. needs option qmudata for descriptor');
+disp('                  - ''qmustddev'': plot of stddev distribution in sampling analysis with scaled response. needs option qmudata for descriptor');
+disp('                  - ''part_hist'': partitioning node and area histogram');
+disp('                  - ''quiver'': quiver plot');
+
+disp('       ''axis'': same as standard matlab option (''equal'',''off'',''equal on'',...)');
+disp('       ''basin'': zoom on a given basin (''pineislandglacier'',''ronneiceshelf'', use isbasin to identify a basin');
+disp('                 ''basindeltax'': in m');
+disp('                 ''showbasins'': write lables for every existing basin name around the center of the plot');
+disp('       ''caxis'': modify  colorbar range. (array of type [a b] where b>=a)');
+disp('       ''backgroundcolor'': plot background color. (default is ''w'')');
+disp('       ''figurebackgroundcolor'': figure background color. (default is ''none'')');
+disp('       ''coord'':  ''xy'' (default) or ''latlon''');
+disp('       ''colorlevels'':  N or {value1,valu2,value3,...} used if quiver, use different colors for the given number of colors or limits');
+disp('       ''colorbar'': add colorbar (string ''on'' or ''off'')');
+disp('       ''colorbartitle'': colorbar title (string)');
+disp('       ''colorbarYlabel'': colorbar Y label (string)');
+disp('       ''colorbarpos'': [x,y,dx,dy] where x,y,dx and dy are within [0 1]');
+disp('       ''colorbarcornerposition'': ''West'',''North'',etc ...');
+disp('       ''colorbartitlerotation'': -90, etc ...');
+disp('       ''colorbarfontsize'': specify colorbar fontsize');
+disp('       ''colorbarwidth'': multiplier (default 1) to the default width colorbar');
+disp('       ''colorbarheight'': multiplier (default 1) to the default height colorbar');
+disp('       ''colormap'': same as standard matlab option (''jet'',''hsv'',''cool'',''spring'',''gray'',''Ala'',''Rignot'',...)');
+disp('       ''contourlevels'': N or {value1,valu2,value3,...} add the contours of the specified values or N contours');
+disp('       ''contourticks'': ''on'' or ''off'' to display the ticks of the contours');
+disp('       ''contouronly'': ''on'' or ''off'' to display the contours on a white background');
+disp('       ''contourcolor'': ticks and contour color');
+disp('       ''density'': density of quivers (one arrow every N nodes, N integer)');
+disp('       ''inset'': add an inset (zoom) of the current figure if 1 (use ''insetx'', ''insety'' and ''insetpos'' to determine the inset position and content)');
+disp('       ''insetx'': [min(x) max(x)] where min(x) and max(x) are values determining the inset content');
+disp('       ''insety'': [min(y) max(y)] where min(y) and max(y) are values determining the inset content');
+disp('       ''insetpos'': [x,y,dx,dy] where x,y,dx and dy are within [0 1]');
+disp('       ''streamlines'': N (number of stream lines) or {[x1 y1],...} (coordinates of seed points) add streanlines on current figure');
+disp('       ''edgecolor'': same as standard matlab option EdgeColor (color name: ''black'' or RGB array: [0.5 0.2 0.8])');
+disp('       ''fontsize'': same as standard matlab option (10,14,...)');
+disp('       ''fontweight'': same as standard matlab option (normal: ''n'',bold: ''b'',light: ''l'',demi: ''d'')');
+disp('       ''fontcolor'': same as standard matlab option');
+disp('       ''highlight'': highlights certain nodes or elements when using ''nodenumbering'' or ''elementnumbering'' or ''highlightnodes '' or ''highlightelements'' option');
+disp('       ''resolution'': resolution used by section value (array of type [horizontal_resolution vertical_resolution])');
+disp('                       horizontal_resolution must be in meter, and vertical_resolution a number of layers');
+disp('       ''showsection'': show section used by ''sectionvalue'' (string ''on'' or a number of labels)');
+disp('       ''sectionvalue'': give the value of data on a profile given by an Argus file (string ''Argusfile_name.exp'')');
+disp('       ''profile'': give the value of data along a vertical profile ([xlocation ylocation])');
+disp('       ''smooth'': smooth element data (string ''yes'' or integer)');
+disp('       ''title'': same as standard matlab option');
+disp('       ''view'': same as standard matlab option (ex: 2, 3 or [90 180]');
+disp('       ''xlim'': same as standard matlab option (ex: [0 500])');
+disp('       ''ylim'': same as standard matlab option');
+disp('       ''zlim'': same as standard matlab option');
+disp('       ''xlabel'': same as standard matlab option (ex:''km'')');
+disp('       ''ylabel'': same as standard matlab option');
+disp('       ''xticklabel'': specifiy xticklabel');
+disp('       ''yticklabel'': specifiy yticklabel');
+disp('       ''overlay'': yes or no. This will overlay a radar amplitude image behind');
+disp('       ''overlay_image'': path to overlay image. provide overlay_xlim, overlay_ylim, overlay_xposting and overlay_yposting options also');
+disp('       ''contrast'': (default 1) coefficient to add contrast to the radar amplitude image used in overlays');
+disp('       ''highres'': resolution of overlayed radar amplitude image (default is 0, high resolution is 1).');
+disp('       ''alpha'': transparency coefficient (the higher, the more transparent). Default is 1.5');
+disp('       ''scaling'': scaling factor used by quiver plots. Default is 0.4');
+disp('       ''autoscale'': set to ''off'' to have all the quivers with the same size. Default is ''on''');
+disp('       ''expdisp'': plot exp file on top of a data plot. provide exp file as an argument (use a cell of strings if more than one)');
+disp('       ''expstyle'': marker style for expdisp plot (use a cell of strings if more than one)');
+disp('       ''linewidth'': line width for expdisp plot (use a cell of strings if more than one)');
+disp('       ''border'': size of display border (in pixels). active only for overlay plots');
+disp('       ''text'': print string, use a cell of strings if more than one');
+disp('       ''textposition'': [x y] position of text, use a cell of strings if more than one');
+disp('       ''textsize'':  same as standard ''FontSize'' matlab option applied to text, use a cell of strings if more than one');
+disp('       ''textweight'':  same as standard ''FontWeight'' matlab option applied to text, use a cell of strings if more than one');
+disp('       ''textcolor'':  same as standard ''color'' matlab option applied to text, use a cell of strings if more than one');
+disp('       ''textrotation'':  same as standard ''Rotation'' matlab option applied to text, use a cell of strings if more than one');
+disp('       ''mask'': list of flags of size numberofnodes or numberofelements. Only ''true'' values are plotted ');
+disp('       ''nan'': value assigned to NaNs (convenient when plotting BC)');
+disp('       ''partitionedges'': ''off'' by default. overlay plot of partition edges');
+disp('       ''log'': value of log');
+disp('       ''latlon'': ''on'' or {latstep lonstep [resolution [color]]} where latstep,longstep and resolution are in degrees, color is a [r g b] array');
+disp('       ''latlonnumbering'': ''on'' or {latgap longap colornumber latangle lonangle} where latgap and longap are pixel gaps for the numbers,'); 
+disp('       ''latlonclick'': ''on'' to click on latlon ticks positions');
+disp('                   colornumber is a [r g b] array and latangle and lonangle are angles to flip the numbers');
+disp('       ''northarrow'': add an arrow pointing north, ''on'' for default value or [x0 y0 length [ratio width fontsize]] where (x0,y0) are the coordinates of the base, ratio=headlength/length');
+disp('       ''offset'': mesh offset used by ''rifts'', default is 500');
+disp('       ''scaleruler'': add a scale ruler, ''on'' for default value or [x0 y0 length width numberofticks] where (x0,y0) are the coordinates of the lower left corner');
+disp('       ''showregion'': show domain in Antarctica on an inset, use ''insetpos'' properties');
+disp('       ''visible'': ''off'' to make figure unvisible, default is ''on''');
+disp('       ''wrapping'': repeat ''n'' times the colormap (''n'' must be an integer)');
+disp('       ''unit'': by default, in m, otherwise, ''km'' is available');
+disp('       ''legend_position'': by default, ''NorthEasth''');
+disp('       ''qmudata'': data for qmu  plots.');
+disp('                  {dresp1   ,dresp2  ,hmin,hmax,hnint} or {samp,desc,mu,sigma,hmin,hmax,hnint}');
+disp('                  where dresp1 is a structure array of responses (where we need samp and desc), ');
+disp('                  dresp2 is a structure array of responses (where we only need mu and sigma)');
+disp('                  hmin,hmax and hnint are the minimum, maximum and number of intervals of the histogram (optional)');
+disp('       ''figposition'': position of figure: ''fullscreen'', ''halfright'', ''halfleft'', ''portrait'', ''landscape'',... (hardcoded in applyoptions.m)');
+disp('       ''offsetaxispos'': offset of current axis position to get more space (ex: [-0.02 0  0.04 0])');
+disp('       ''axispos'': axis position to get more space');
+disp('       ''hmin'': (numeric, minimum for histogram)');
+disp('       ''hmax'': (numeric, maximum for histogram)');
+disp('       ''hnint'': (numeric, number of intervals for histogram)');
+disp('       ''ymin1'': (numeric, minimum of histogram y-axis)');
+disp('       ''ymax1'': (numeric, maximum of histogram y-axis)');
+disp('       ''ymin2'': (numeric, minimum of cdf y-axis)');
+disp('       ''ymax2'': (numeric, maximum of cdf y-axis)');
+disp('       ''cdfplt'': (char, ''off'' to turn off cdf line plots)');
+disp('       ''cdfleg'': (char, ''off'' to turn off cdf legends)');
+disp('       ''segmentnumbering'': (''off'' by default)');
+disp('       ''kmlgroundoverlay'': (''off'' by default)');
+disp('       ''kmlfilename'': (''tempfile.kml'' by default)');
+disp('       ''kmlroot'': (''./'' by default)');
+disp('       ''kmlimagename'': (''tempimage'' by default)');
+disp('       ''kmlimagetype'': (''png'' by default)');
+disp('       ''kmlresolution'': (1 by default)');
+disp('       ''kmlfolder'': (''Ground Overlay'' by default)');
+disp('       ''kmlfolderdescription'': ('''' by default)');
+disp('       ''kmlgroundoverlayname'': ('''' by default)');
+disp('       ''kmlgroundoverlaydescription'': ('''' by default)');
+
+disp('       any options (except ''data'') can be followed by ''#i'' where ''i'' is the subplot number, or ''#all'' if applied to all plots');
+disp('  ');
+disp('   Examples:');
+disp('       plotmodel(md,''data'',''vel'',''data'',''mesh'',''view#2'',3,''colorbar#all'',''on'',''axis#1'',''off equal'')');
+disp('       plotmodel(md,''data'',''highlightelements'',''highlight'',[1 4 10],''expdisp'',{''domain1.exp'' ''domain2.exp'' ''domain3.exp''})');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotgemb.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotgemb.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotgemb.m	(revision 21239)
@@ -0,0 +1,68 @@
+function plotgemb(results,fieldname,varargin);
+
+	options=pairoptions(varargin{:});
+
+	zerolevel= getfieldvalue(options,'zerolevel',0);
+	numlevels= getfieldvalue(options,'numlevels',-1);
+	element= getfieldvalue(options,'element',1);
+	maxstep=getfieldvalue(options,'maxstep',length(results));
+
+	%number of results: 
+	nt=length(results); 
+
+	for i=1:nt, 
+
+		z0=zerolevel;
+
+		%retrieve time, and delta around time: 
+		time=results(i).time;
+		if i<nt,
+			deltat=results(i+1).time-time;
+		else
+			deltat=time-results(i-1).time;
+		end
+
+		%figure out number of levels: 
+		dz=flipud(results(i).SmbDz(element,:)') ;
+		if numlevels==-1,
+			nlevels=length(dz); 
+		else
+			nlevels=numlevels;
+		end
+		dz=dz(1:nlevels);
+
+		%retrieve values: 
+		field=results(i).(fieldname);
+		T=flipud(field(element,1:nlevels)');
+
+		%build vertical values: 
+		nz=length(dz); 
+		%for j=1:nz, 
+		%	patch([time-deltat/2 ;time+deltat/2; time+deltat/2; time-deltat/2],[z0; z0; z0+dz(j); z0+dz(j)],[T(j);T(j);T(j);T(j)]);
+		%	z0=z0+dz(j);
+		%end
+
+		xA=(time-deltat/2)*ones(nz,1);
+		xB=(time+deltat/2)*ones(nz,1);
+		xC=(time+deltat/2)*ones(nz,1);
+		xD=(time-deltat/2)*ones(nz,1);
+
+		zA=zeros(nz,1);
+		zB=zeros(nz,1);
+		zC=zeros(nz,1);
+		zD=zeros(nz,1);
+		
+		for j=1:nz, 
+			zA(j)=z0;
+			zB(j)=z0;
+			zC(j)=z0+dz(j);
+			zD(j)=z0+dz(j);
+			z0=z0+dz(j);
+		end
+
+		patch([xA,xB,xC,xD]',[zA,zB,zC,zD]',[T,T,T,T]');
+
+		if i>=maxstep,
+			break;
+		end
+	end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotmodel.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotmodel.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotmodel.js	(revision 21239)
@@ -0,0 +1,48 @@
+function plotmodel(md){
+
+	//Convert arguments to array: 
+	var args = Array.prototype.slice.call(arguments);
+
+	//First process options
+	var  options = new plotoptions(args.slice(1,args.length));
+
+	
+	//get number of subplots
+	subplotwidth=Math.ceil(Math.sqrt(options.numberofplots)); 
+	
+	//Get figure number and number of plots
+	numberofplots=options.numberofplots;
+
+	//if nlines and ncols specified, then bypass.
+	var nlines,ncols;
+	if (options.list[0].exist('nlines')){
+		nlines=options.list[0].getfieldvalue('nlines');
+	}
+	else {
+		nlines=Math.ceil(numberofplots/subplotwidth);
+	}
+	if (options.list[0].exist('ncols')){
+		ncols=options.list[0].getfieldvalue('ncols');
+	}
+	else {
+		ncols=subplotwidth;
+	}
+	
+	//check that nlines and ncols were given at the same time!
+	if ((options.list[0].exist('ncols') & !options.list[0].exist('nlines')) | (options.list[0].exist('nlines') & !options.list[0].exist('ncols'))) throw Error('plotmodel error message: nlines and ncols  need to be specified together, or not at all');
+
+	//go through subplots
+	if (numberofplots){
+		//Reinitialize all canvases
+		for (var i=0;i<numberofplots;i++){
+			document.getElementById(options.list[i].getfieldvalue('canvasid')).initialized = false;
+		}
+		//Go through all data plottable and close window if an error occurs
+		for (var i=0;i<numberofplots;i++){
+			plot_manager(options.list[i].getfieldvalue('model',md),options.list[i],subplotwidth,nlines,ncols,i);
+
+			//List all unused options
+			options.list[i].displayunused();
+		}
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotmodel.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotmodel.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotmodel.m	(revision 21239)
@@ -0,0 +1,100 @@
+function plotmodel(md,varargin)
+%At command prompt, type plotdoc for help on documentation.
+
+%First process options
+options=plotoptions(varargin{:});
+
+%get number of subplots
+subplotwidth=ceil(sqrt(options.numberofplots));
+
+%Get figure number and number of plots
+figurenumber=options.figurenumber;
+numberofplots=options.numberofplots;
+
+%if nlines and ncols specified, then bypass.
+if exist(options.list{1},'nlines'),
+	nlines=getfieldvalue(options.list{1},'nlines');
+else 
+	nlines=ceil(numberofplots/subplotwidth);
+end
+
+if exist(options.list{1},'ncols'),
+	ncols=getfieldvalue(options.list{1},'ncols');
+else 
+	ncols=subplotwidth;
+end
+
+%check that nlines and ncols were given at the same time!
+if ((exist(options.list{1},'ncols') & ~exist(options.list{1},'ncols')) | (~exist(options.list{1},'ncols') & exist(options.list{1},'ncols')))
+	error('plotmodel error message: nlines and ncols  need to be specified together, or not at all');
+end
+
+%go through subplots
+if numberofplots,
+
+	%Create figure 
+	f=figure(figurenumber);clf;
+	if strcmpi(getfieldvalue(options.list{1},'visible','on'),'off'),
+		set(f,'Visible','Off');
+	end
+
+	if exist(options.list{1},'figposition'), % {{{
+		figposition=getfieldvalue(options.list{1},'figposition');
+		if ischar(figposition),
+			if strcmpi(figposition,'larour'),
+				set(gcf,'Position',[1604 4 1594 1177]);
+			elseif strcmpi(figposition,'larour2'),
+				set(gcf,'Position',[756    62   827   504]);
+			elseif strcmpi(figposition,'mathieu'),
+				set(gcf,'Position',[300 1 1580 1150]);
+			elseif strcmpi(figposition,'fullscreen'),
+				set(gcf,'Position',get(0,'ScreenSize'));
+			elseif strcmpi(figposition,'halfright'),
+				screen=get(0,'ScreenSize');
+				left=screen(1); bott=screen(2); widt=screen(3); heig=screen(4)-25;
+				set(gcf,'Position',fix([left+widt/2 bott widt/2 heig]));
+			elseif strcmpi(figposition,'halfleft'),
+				screen=get(0,'ScreenSize');
+				left=screen(1); bott=screen(2); widt=screen(3); heig=screen(4)-25;
+				set(gcf,'Position',fix([left bott widt/2 heig]));
+			elseif strcmpi(figposition,'square'),
+				screen=get(0,'ScreenSize');
+				left=screen(1); bott=screen(2); widt=min(screen(3)-25,screen(4)-25);
+				set(gcf,'Position',fix([left+(screen(3)-widt) bott widt widt]));
+			elseif strcmpi(figposition,'portrait'),
+				%reformat with letter paper size (8.5" x 11")
+				screen=get(0,'ScreenSize');
+				left=screen(1); bott=screen(2); widt=screen(3); heig=screen(4)-25;
+				portrait=fix([left+widt-(heig*8.5/11) bott heig*8.5/11 heig]);
+				set(gcf,'Position',portrait)
+			elseif strcmpi(figposition,'landscape'),
+				%reformat with letter paper size (8.5" x 11")
+				screen=get(0,'ScreenSize');
+				left=screen(1); bott=screen(2); widt=screen(3); heig=screen(4)-25;
+				landscape=fix([left+widt-(heig*11/8.5) bott heig*11/8.5 heig]);
+				set(gcf,'Position',landscape)
+			else
+				disp('''figposition'' string not supported yet');
+			end
+		else
+			set(gcf,'Position',figposition);
+		end
+	end % }}}
+
+	%Use zbuffer renderer (snoother colors) and white background
+	set(f,'Renderer','zbuffer','color',getfieldvalue(options.list{1},'figurebackgroundcolor','w'));
+
+	%Go through all data plottable and close window if an error occurs
+	try,
+		for i=1:numberofplots,
+			plot_manager(getfieldvalue(options.list{i},'model',md),options.list{i},subplotwidth,nlines,ncols,i);
+			%List all unused options
+			displayunused(options.list{i})
+		end
+	catch me,
+		%figure(figurenumber),close;
+		rethrow(me);
+	end
+else
+	error('plotmodel error message: no output data found. ');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotmodel.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotmodel.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/plotmodel.py	(revision 21239)
@@ -0,0 +1,99 @@
+import numpy as npy
+from plotoptions import plotoptions
+
+try:
+	import pylab as p
+	import matplotlib.pyplot as plt
+	from mpl_toolkits.axes_grid1 import ImageGrid, AxesGrid
+except ImportError:
+	print "could not import pylab, matplotlib has not been installed, no plotting capabilities enabled"
+
+from plot_manager import plot_manager
+from math import ceil, sqrt
+
+def plotmodel(md,*args):
+	'''
+	at command prompt, type 'plotdoc' for additional documentation
+	'''
+
+	#First process options 
+	options=plotoptions(*args)
+
+	#get number of subplots
+	subplotwidth=ceil(sqrt(options.numberofplots))
+	
+	#Get figure number and number of plots
+	figurenumber=options.figurenumber
+	numberofplots=options.numberofplots
+
+	#get hold
+	hold=options.list[0].getfieldvalue('hold',False)
+
+	#if nrows and ncols specified, then bypass
+	if options.list[0].exist('nrows'):
+		nrows=options.list[0].getfieldvalue('nrows')
+		nr=True
+	else:
+		nrows=npy.ceil(numberofplots/subplotwidth)
+		nr=False
+	
+	if options.list[0].exist('ncols'):
+		ncols=options.list[0].getfieldvalue('ncols')
+		nc=True
+	else:
+		ncols=int(subplotwidth)
+		nc=False
+	ncols=int(ncols)
+	nrows=int(nrows)
+	
+	#check that nrows and ncols were given at the same time!
+	if not nr==nc:
+		raise StandardError('error: nrows and ncols need to be specified together, or not at all')
+	
+	#Go through plots
+	if numberofplots:
+		
+		#if plt.fignum_exists(figurenumber): 
+		#	plt.cla()
+
+		#if figsize specified
+		if options.list[0].exist('figsize'):
+			figsize=options.list[0].getfieldvalue('figsize')
+			fig=plt.figure(figurenumber,figsize=(figsize[0],figsize[1]),tight_layout=True)
+		else:
+			fig=plt.figure(figurenumber,tight_layout=True)
+		fig.clf()
+
+		# options needed to define plot grid
+		direction=options.list[0].getfieldvalue('direction','row') # row,column
+		axes_pad=options.list[0].getfieldvalue('axes_pad',0.25)
+		add_all=options.list[0].getfieldvalue('add_all',True) # True,False
+		share_all=options.list[0].getfieldvalue('share_all',True) # True,False
+		label_mode=options.list[0].getfieldvalue('label_mode','1') # 1,L,all
+		cbar_mode=options.list[0].getfieldvalue('cbar_mode','each') # none,single,each
+		cbar_location=options.list[0].getfieldvalue('cbar_location','right') # right,top
+		cbar_size=options.list[0].getfieldvalue('cbar_size','5%')
+		cbar_pad=options.list[0].getfieldvalue('cbar_pad','2.5%') # None or %
+		
+		axgrid=ImageGrid(fig, 111,
+				nrows_ncols=(nrows,ncols),
+				direction=direction,
+				axes_pad=axes_pad,
+				add_all=add_all,
+				share_all=share_all,
+				label_mode=label_mode,
+				cbar_mode=cbar_mode,
+				cbar_location=cbar_location,
+				cbar_size=cbar_size,
+				cbar_pad=cbar_pad
+				)
+
+		if cbar_mode=='none':
+			for ax in axgrid.cbar_axes: fig._axstack.remove(ax)
+
+		for i in xrange(numberofplots):
+			plot_manager(options.list[i].getfieldvalue('model',md),options.list[i],fig,axgrid[i])
+
+		fig.show()
+	else:
+		raise StandardError('plotmodel error message: no output data found.')
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/processdata.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/processdata.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/processdata.js	(revision 21239)
@@ -0,0 +1,270 @@
+function processdata(md,data,options){
+	//PROCESSDATA - process data to be plotted
+	//
+	//   datatype = 1 -> elements
+	//   datatype = 2 -> nodes
+	//   datatype = 3 -> node quivers
+	//   datatype = 4 -> patch
+	//   datatype = 5 -> nodes transient
+	//
+	//   Usage:
+	//      var array = processdata(md,data,options);
+	//      var data = array[0]; 
+	//      var datatype = array[1];
+	//
+	//   See also: PLOTMODEL, PROCESSMESH
+
+	//variables: 
+	var datatype;
+	
+	//check format
+	if ( data.length ==0 | data === [] | typeof data === 'number' | ArrayAnyNaN(data) ){
+		throw Error('plotmodel error message: data provided is empty');
+	}
+
+	//Process NaN if any (do not know before mask is applied)
+	if (options.exist('nan')){
+		var valuefornan=options.getfieldvalue('nan',0);
+		for (var i=0;i<data.length;i++)if(IsNaN(data[i]))data[i]=valuefornan;
+	}
+
+	//special case for mesh 2dvertical
+	if (md.mesh.domaintype() === '2Dvertical'){
+		return processdata(md.mesh,md,data,options);
+	}
+
+	//needed later on
+	if ('numberofvertices2d' in md.mesh){
+		numberofvertices2d=md.mesh.numberofvertices2d; 
+		numberofelements2d=md.mesh.numberofelements2d; 
+	}
+	else {
+		numberofvertices2d=NaN;
+		numberofelements2d=NaN;
+	}
+
+	//initialize datatype
+	datatype=0;
+
+	//get datasize
+	datasize=data.length;
+
+	//transpose data if necessary
+	if (data[0].length > data.length){
+		throw Error('processdata error message: you need to tranpose your data!');
+	}
+
+
+	//check length
+	if (datasize != md.mesh.numberofvertices & datasize !=md.mesh.numberofelements & datasize!=md.mesh.numberofvertices*6 & 
+			((md.mesh.domaintype() === '3D') & !(datasize==numberofelements2d | datasize==numberofvertices2d))){
+		throw Error('plotmodel error message: data not supported yet');
+	}
+
+
+	//quiver?
+	if (data[0].length>1){
+		datatype=3;
+
+		//check number of columns, add zeros if necessary,
+		if (md.mesh.dimension()==3){
+			if (data[0].length==2){
+				data=[data, NewArrayFill(data.length,1)];
+			}
+			else if (data[0].length!=3){
+				throw Error('plotmodel error message: data provided should have 2 or 3 columns for quiver plot, and 1 for regular plot');
+			}
+		}
+	}
+
+	//treat the case datasize(1)=6*nodes
+	if (datasize==6*md.mesh.numberofvertices){
+		//keep the only norm of data
+		data1=new Array(md.mesh.numberofvertices);
+		data2=new Array(md.mesh.numberofvertices);
+		data=new Array(md.mesh.numberofvertices);
+		for(var i=0;i<md.mesh.numberofvertices;i++){
+			data1[i]=data[6*i+0];
+			data2[i]=data[6*i+1];
+			data[i]=Math.sqrt(pow(data1[i],2),pow(data2[i],2));
+		}
+		datasize=md.mesh.numberofvertices;
+		//---> go to node data
+	}
+
+	//treat the case datasize(1)=nodes2d
+	if (md.mesh.dimension()==3 & datasize==numberofvertices2d){
+		data=project3d(md,'vector',data,'type','node');
+		datasize=md.mesh.numberofvertices;
+		//---> go to node data
+	}
+
+	//treat the case datasize=nodes2d
+	if (md.mesh.dimension()==3 & datasize==numberofelements2d){
+		data=project3d(md,'vector',data,'type','element');
+		datasize=md.mesh.numberofelements;
+		//---> go to node data
+	}
+
+	//smoothing?
+	if (options.exist('smooth')){
+		data=averaging(md,data,options.getfieldvalue('smooth'));
+		datasize=md.mesh.numberofvertices;
+		//---> go to node data
+	}
+
+	//element data
+	if (datasize==md.mesh.numberofelements & data[0].length==1){
+
+		//Initialize datatype if non patch
+		if(datatype!=4 & datatype!=5){
+			datatype=1;
+		}
+
+		//Mask?
+		if(options.exist('mask')){
+			flags=options.getfieldvalue('mask');
+			if(flags.length==md.mesh.numberofvertices){
+				for(var i=0;i<md.mesh.numberofelements;i++){
+					var nanify=0;
+					for(var j=0;j<md.mesh.elements[0].length;j++){
+						if (flags[md.mesh.elements[i][j]-1]==0)nanify=1;
+					}
+					if(nanify) for(var j=0;j<md.mesh.elements[0].length;j++)data[md.mesh.elements[i][j]-1]=NaN;
+				}
+			}
+			else if (flags.length==md.mesh.numberofelements){
+				for(var i=0;i<md.mesh.numberofelements;i++)if (flags[i]==0)data[i]=NaN;
+			}
+			else{
+				console.log('plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements)');
+			}
+		}
+
+		//log?
+		if (options.getfieldvalue('log','off')!='off'){
+			var bounds=options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+			for(var i=0;i<md.mesh.numberofelements;i++)if(data[i]<bounds[0])data[i]=bounds[0];
+			for(var i=0;i<md.mesh.numberofelements;i++)if(data[i]<=0){
+				throw Error("Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])");
+			}
+			for(var i=0;i<md.mesh.numberofelements;i++){
+				if(!IsNaN(data[i])){
+					data[i]=Math.log10(data[i])/Math.log10(options.getfieldvalue('log',10));
+				}
+			}
+		}
+	}
+
+	//node data
+	if (datasize==md.mesh.numberofvertices){
+		datatype=2;
+
+		//Mask?
+		if (options.exist('mask')){
+			flags=options.getfieldvalue('mask');
+			if (flags.length==md.mesh.numberofvertices){
+				for(var i=0;i<md.mesh.numberofvertices;i++){
+					if(flags[i]==0)data[i]=NaN;
+				}
+			}
+			else if( length(flags)==md.mesh.numberofelements){
+				for(var i=0;i<md.mesh.numberofelements;i++){
+					if(flags[i]==0){
+						for(var j=0;j<md.mesh.elements[0].length;j++){
+							data[md.mesh.elements[i][j]-1]=NaN;
+						}
+					}
+				}
+			}
+			else{
+				console.log("plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements");
+			}
+		}
+
+		//log?
+		if (options.getfieldvalue('log','off')!='off'){
+			var bounds=options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(data[i]<bounds[0])data[i]=bounds[0];
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(data[i]>bounds[1])data[i]=bounds[1];
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(data[i]<=0){
+				throw Error("Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])");
+			}
+			for(var i=0;i<md.mesh.numberofvertices;i++){
+			   data[i]=Math.log10(data[i])/Math.log10(options.getfieldvalue('log',10));
+			}
+		}
+	}
+	
+	//node transient data
+    if (datasize==md.mesh.numberofvertices+1){
+        datatype=5;
+		
+		//log?	
+		if (options.getfieldvalue('log','off')!='off'){
+			var bounds=options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+			for(var i=0;i<md.mesh.numberofvertices;i++) {
+				for(var j=0;j<data[i].length;j++) {
+					if(data[i][j]<bounds[0])data[i][j]=bounds[0];
+				}
+			}
+			for(var i=0;i<md.mesh.numberofvertices;i++) {
+				for(var j=0;j<data[i].length;j++) {
+					if(data[i][j]>bounds[1])data[i][j]=bounds[1];
+				}
+			}
+			for(var i=0;i<md.mesh.numberofvertices;i++) {
+				for(var j=0;j<data[i].length;j++) {
+					if(data[i][j]<=0) {
+						throw Error("Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])");
+					}
+				}
+			}
+			for(var i=0;i<md.mesh.numberofvertices;i++){
+				for(var j=0;j<data[i].length;j++) {
+					data[i][j]=Math.log10(data[i][j])/Math.log10(options.getfieldvalue('log',10));
+				}
+			}
+		}
+    }
+	
+
+	//layer projection? 
+	if (options.getfieldvalue('layer',0)>=1){
+		data=project2d(md,data,options.getfieldvalue('layer')); //project onto 2d mesh
+	}
+
+	//control arrow density if quiverplot: not done yet since conversion of matlab to javascript.
+	/*if (datatype==3 & options.exist('density')){
+		databak=data;
+		data=NewArrayFill(datasize,NaN);
+
+		density=options.getfieldvalue('density');
+		data(1:density:end,:)=databak(1:density:end,:);
+		clear databak
+	}*/
+
+	/*if (datatype==3){ //not done yet
+		//Mask?
+		if (options.exist('mask')){
+			flags=options.getfieldvalue('mask');
+			pos=find(~flags);
+			if (flags.length==md.mesh.numberofvertices){
+			   data(pos,:)=NaN;
+			}
+			else if (flags.length==md.mesh.numberofelements){
+				data(md.mesh.elements(pos,:),:)=NaN;
+			}
+			else{
+				console.log("plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements");
+			}
+		}
+	}*/
+
+	//OK, if datatype=0 error out
+	if (datatype==0){
+	   throw Error('data provided not recognized or not supported');
+	}
+
+	return [data,datatype];
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/processdata.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/processdata.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/processdata.m	(revision 21239)
@@ -0,0 +1,214 @@
+function [data datatype]=processdata(md,data,options)
+%PROCESSDATA - process data to be plotted
+%
+%   datatype = 1 -> elements
+%   datatype = 2 -> nodes
+%   datatype = 3 -> node quivers
+%   datatype = 4 -> patch
+%
+%   Usage:
+%      [data datatype]=processdata(md,data,options);
+%
+%   See also: PLOTMODEL, PROCESSMESH
+
+%check format
+if (iscell(data) | isempty(data) | length(data)==0 | (length(data)==1 & ~isstruct(data) & isnan(data))),
+	error('plotmodel error message: data provided is empty');
+end
+
+%specials for struct
+if isstruct(data),
+	disp('data provided is a struct with the following fields:');
+	F=fields(data);
+	for i=1:numel(F),
+		disp(['   ' num2str(i) ': ' F{i} ]);
+	end
+	choice=input(['please enter the field number? (between 1 and ' num2str(numel(F)) ')  ']);
+	[data datatype]=processdata(md,data(1).(F{choice}),options);
+end
+
+%Process NaN if any (do not know before mask is applied)
+if exist(options,'nan')
+	data(find(isnan(data)))=getfieldvalue(options,'nan',0);
+end
+
+%special case for mesh 2dvertical
+if strcmp(domaintype(md.mesh),'2Dvertical'),
+	[data datatype] = processdata(md.mesh,md,data,options);
+	return;
+end
+
+%needed later on
+if isprop(md.mesh,'numberofvertices2d'), 
+	numberofvertices2d=md.mesh.numberofvertices2d; 
+	numberofelements2d=md.mesh.numberofelements2d; 
+else 
+	numberofvertices2d=NaN;
+	numberofelements2d=NaN;
+end
+
+%initialize datatype
+datatype=0;
+
+%get datasize
+datasize=size(data);
+
+%transpose data if necessary
+if (size(data,2) > size(data,1)),
+	data=data';
+end
+datasize=size(data);
+
+%convert to double if necessary
+if ~isnumeric(data);
+	disp('processdata info message: data is not numeric (logical?). Converted to double');
+	data=double(data);
+end
+
+%check length
+if datasize(1)~=md.mesh.numberofvertices & datasize(1)~=md.mesh.numberofelements & datasize(1)~=md.mesh.numberofvertices*6 & (strcmp(md.mesh.domaintype(),'3D') & ~(datasize(1)==numberofelements2d | datasize(1)==numberofvertices2d))
+	error('plotmodel error message: data not supported yet');
+end
+
+%quiver?
+if datasize(2)>1,
+	datatype=3;
+
+	%check number of columns, add zeros if necessary,
+	if (dimension(md.mesh)==3)
+		if datasize(2)==2,
+			data=[data, zeros(datasize(1),1)];
+		elseif datasize(2)~=3,
+			error('plotmodel error message: data provided should have 2 or 3 columns for quiver plot, and 1 for regular plot');
+		end
+	end
+end
+
+%treat the case datasize(1)=6*nodes
+if datasize(1)==6*md.mesh.numberofvertices
+	%keep the only norm of data
+	data1=data(1:6:md.mesh.numberofvertices*6,:);
+	data2=data(2:6:md.mesh.numberofvertices*6,:);
+	data=sqrt(data1.^2+data2.^2);
+	datasize(1)=md.mesh.numberofvertices;
+	%---> go to node data
+end
+
+%treat the case datasize(1)=nodes2d
+if (dimension(md.mesh)==3 & datasize(1)==numberofvertices2d),
+	data=project3d(md,'vector',data,'type','node');
+	datasize(1)=md.mesh.numberofvertices;
+	%---> go to node data
+end
+
+%treat the case datasize(1)=nodes2d
+if (dimension(md.mesh)==3 & datasize(1)==numberofelements2d),
+	data=project3d(md,'vector',data,'type','element');
+	datasize(1)=md.mesh.numberofelements;
+	%---> go to node data
+end
+
+%smoothing?
+if exist(options,'smooth')
+	data=averaging(md,data,getfieldvalue(options,'smooth'));
+	datasize(1)=md.mesh.numberofvertices;
+	%---> go to node data
+end
+
+%element data
+if (datasize(1)==md.mesh.numberofelements & datasize(2)==1),
+
+	%Initialize datatype if non patch
+	if datatype~=4 & datatype~=5,
+		datatype=1;
+	end
+
+	%Mask?
+	if exist(options,'mask'),
+		flags=getfieldvalue(options,'mask');
+		maskvalue=getfieldvalue(options,'maskvalue',NaN);
+		pos=find(~flags);
+		if length(flags)==md.mesh.numberofvertices,
+			[pos2 dummy]=find(ismember(md.mesh.elements,pos));
+			data(pos2,:)=maskvalue;
+		elseif length(flags)==md.mesh.numberofelements
+			data(pos,:)=maskvalue;
+		else
+			disp('plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements');
+		end
+	end
+
+	%log?
+	if exist(options,'log'),
+		bounds=getfieldvalue(options,'caxis',[min(data(:)) max(data(:))]);
+		data(find(data<bounds(1)))=bounds(1);
+		if any(data<=0),
+			error('Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])');
+		end
+		pos=find(~isnan(data));
+		data(pos)=log(data(pos))/log(getfieldvalue(options,'log'));
+	end
+end
+
+%node data
+if (datasize(1)==md.mesh.numberofvertices & datasize(2)==1),
+	datatype=2;
+
+	%Mask?
+	if exist(options,'mask'),
+		flags=getfieldvalue(options,'mask');
+		maskvalue=getfieldvalue(options,'maskvalue',NaN);
+		pos=find(~flags);
+		if length(flags)==md.mesh.numberofvertices,
+			data(pos,:)=maskvalue;
+		elseif length(flags)==md.mesh.numberofelements
+			data(md.mesh.elements(pos,:),:)=maskvalue;
+		else
+			disp('plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements');
+		end
+	end
+
+	%log?
+	if exist(options,'log'),
+		bounds=getfieldvalue(options,'caxis_pre',[min(data(:)) max(data(:))]);
+		data(find(data<bounds(1)))=bounds(1);
+		if any(data<=0),
+			error('Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])');
+		end
+		pos=find(~isnan(data));
+		data(pos)=log(data(pos))/log(getfieldvalue(options,'log'));
+	end
+end
+
+%layer projection? 
+if getfieldvalue(options,'layer',0)>=1,
+	data=project2d(md,data,getfieldvalue(options,'layer')); %project onto 2d mesh
+end
+
+%control arrow density if quiverplot
+if datatype==3 & exist(options,'density')
+	databak=data;
+	data=NaN*ones(datasize);
+	density=getfieldvalue(options,'density');
+	data(1:density:end,:)=databak(1:density:end,:);
+	clear databak
+end
+if datatype==3,
+	%Mask?
+	if exist(options,'mask'),
+		flags=getfieldvalue(options,'mask');
+		pos=find(~flags);
+		if length(flags)==md.mesh.numberofvertices,
+			data(pos,:)=NaN;
+		elseif length(flags)==md.mesh.numberofelements
+			data(md.mesh.elements(pos,:),:)=NaN;
+		else
+			disp('plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements');
+		end
+	end
+end
+
+%OK, if datatype=0 error out
+if datatype==0,
+	error(['data provided not recognized or not supported']);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/processdata.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/processdata.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/processdata.py	(revision 21239)
@@ -0,0 +1,108 @@
+from math import isnan
+import numpy as npy
+
+def processdata(md,data,options):
+    """
+    PROCESSDATA - process data to be plotted
+    
+    	datatype = 1 -> elements
+    	datatype = 2 -> nodes
+    	datatype = 3 -> node quivers
+    	datatype = 4 -> patch
+    
+    	Usage:
+    		data,datatype=processdata(md,data,options);
+    
+    	See also: PLOTMODEL, PROCESSMESH
+    """
+    
+    #check format
+    if (len(data)==0 or (len(data)==1 and not isinstance(data,dict) and isnan(data).all())):
+        raise ValueError("processdata error message: 'data' provided is empty")
+    
+    #needed later on
+    if 'numberofvertices2d' in dir(md.mesh):
+    	numberofvertices2d=md.mesh.numberofvertices2d
+    	numberofelements2d=md.mesh.numberofelements2d
+    else:
+    	numberofvertices2d=npy.nan
+    	numberofelements2d=npy.nan
+    
+    procdata=npy.copy(data)
+    
+    #process patch
+    
+    #initialize datatype
+    datatype=0
+    
+    #get datasize
+    if npy.ndim(procdata)==1:
+    	datasize=npy.array([len(procdata),1])
+    else:
+    	datasize=npy.shape(procdata)
+        if len(datasize)>2:
+            raise ValueError('data passed to plotmodel has more than 2 dimensions; check that column vectors are rank-1')
+    
+    #process NaN's if any
+    nanfill=options.getfieldvalue('nan',-9999)
+    if npy.any(npy.isnan(procdata)):
+    	lb=npy.min(data[~npy.isnan(data)])
+    	ub=npy.max(data[~npy.isnan(data)])
+    	if lb==ub:
+    	    lb=lb-0.5
+    	    ub=ub+0.5
+    	    nanfill=lb-1
+    	procdata[npy.isnan(procdata)]=nanfill
+    	options.addfielddefault('clim',[lb,ub])
+    	options.addfielddefault('cmap_set_under','1')
+    	print "WARNING: nan's treated as", nanfill, "by default.  Change using pairoption 'nan',nan_fill_value in plotmodel call"
+    
+    #quiver plot
+    if datasize[1]>1 and datasize[0]!= md.mesh.numberofvertices+1:
+        if datasize[0]==md.mesh.numberofvertices and datasize[1]==2:
+            datatype=3
+        else:
+            raise ValueError('plotmodel error message: data should have two columns of length md.mesh.numberofvertices for a quiver plot')
+    
+    #non-patch processing 
+    
+    #element data
+    if datasize[0]==md.mesh.numberofelements and datasize[1]==1:
+    	
+    	#initialize datatype if non patch
+    	if datatype!=4 and datatype!=5:
+    	    datatype=1
+    
+    	#mask?
+    
+    	#log?
+    
+    #node data
+    if datasize[0]==md.mesh.numberofvertices and datasize[1]==1:
+    	datatype=2
+    
+    #spc time series? 
+    if datasize[0]==md.mesh.numberofvertices+1:
+    	datatype=2
+        spccol=options.getfieldvalue('spccol',0)
+        print 'multiple-column spc field; specify column to plot using option "spccol"'
+        print 'column ', spccol, ' plotted for time: ', procdata[-1,spccol]
+        procdata=procdata[0:-1,spccol]
+    
+    	#mask?
+    
+    	#log?
+    
+    #layer projection?
+    
+    #control arrow density if quiver plot
+    
+    #convert rank-2 array to rank-1
+    if npy.ndim(procdata)==2 and npy.shape(procdata)[1]==1:
+    	procdata=procdata.reshape(-1,)
+    
+    #if datatype is still zero, error out
+    if datatype==0:
+    	raise ValueError("processdata error: data provided not recognized or not supported")
+    else:
+    	return procdata, datatype
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/processmesh.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/processmesh.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/processmesh.js	(revision 21239)
@@ -0,0 +1,94 @@
+function processmesh(md,data,options){
+//PROCESSMESH - process mesh to be plotted
+//
+//   Usage:
+//      var meshresults=processmesh(md,data,options)
+//      var x=meshresults[0]; 
+//      var y=meshresults[1]; 
+//      var z=meshresults[2]; 
+//      var elements=meshresults[3]; 
+//      var is2d=meshresults[4]; 
+//      var isplanet=meshresults[5]; 
+//
+//   See also: PLOTMODEL, PROCESSDATA
+
+	var x,y,z,elements,is2d,isplanet;
+
+	if (md.mesh.numberofvertices==0){
+		throw Error('plot error message: mesh is empty');
+	}
+
+
+	if (md.mesh.numberofvertices==md.mesh.numberofelements){
+		throw Error(['plot error message: the number of elements is the same as the number of nodes...']);
+	}
+
+	if (options.getfieldvalue('coord','xy') !== 'latlon'){
+		x=md.mesh.x.slice();
+		if ('x2d' in md.mesh) x2d=md.mesh.x2d.slice();
+		y=md.mesh.y.slice();
+		if ('y2d' in md.mesh) y2d=md.mesh.y2d.slice();
+	}
+	else{
+		x=md.mesh.long.slice();
+		y=md.mesh.lat.slice();
+	}
+
+	if ('z' in md.mesh){
+		z=md.mesh.z.slice();
+	}
+	else{
+		z=NewArrayFill(x.length,0);
+	}
+	z=options.getfieldvalue('z',z);
+	if (typeof z === 'string'){
+		z=md[z];
+	}
+	
+	//TODO: Make deep copy of elements array to prevent unwanted modification of model (slice creates deep copies for primitive types, shallow copies for obejcts)
+	if ('elements2d' in md.mesh) elements2d=md.mesh.elements2d.slice();
+	elements=md.mesh.elements.slice();
+
+	//is it a 2d plot?
+	if (md.mesh.dimension()==2){
+		is2d=1;
+	}
+	else{
+		if (options.getfieldvalue('layer',0)>=1){
+			is2d=1;
+		}
+		else{
+			is2d=0;
+		}
+	}
+
+	//layer projection? 
+	if (options.getfieldvalue('layer',0)>=1){
+		if (options.getfieldvalue('coord','xy') === 'latlon'){
+			throw Error('processmesh error message: cannot work with 3D meshes for now');
+		}
+		
+		//we modify the mesh temporarily to a 2d mesh from which the 3d mesh was extruded. 
+		x=x2d;
+		y=y2d;
+		z=NewArrayFill(x2d.length,0);
+		elements=elements2d;
+	}
+
+	//units
+	if (options.exist('unit')){
+		unit=options.getfieldvalue('unit');
+		x=x*unit;
+		y=y*unit;
+		z=z*unit;
+	}
+
+	//for now, always isplanet = 0, as we don't have the isa capability: 
+	//if isa(md,'planet'),
+	//	isplanet=1;
+	//else
+	isplanet=0;
+	//end
+
+	return  [x,y,z,elements,is2d,isplanet];
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/processmesh.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/processmesh.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/processmesh.m	(revision 21239)
@@ -0,0 +1,87 @@
+function [x y z elements is2d isplanet]=processmesh(md,data,options)
+%PROCESSMESH - process mesh to be plotted
+%
+%   Usage:
+%      [x y z elements is2d]=processmesh(md,data,options)
+%
+%   See also: PLOTMODEL, PROCESSDATA
+
+%some checks
+if md.mesh.numberofvertices==0,
+	error('plot error message: mesh is empty')
+end
+if md.mesh.numberofvertices==md.mesh.numberofelements
+	error(['plot error message: the number of elements is the same as the number of nodes...']);
+end
+
+%special case for mesg 2dvertical
+if strcmp(domaintype(md.mesh),'2Dvertical'),
+	[x y z elements is2d isplanet] = processmesh(md.mesh,options);
+	return;
+end
+
+%special case for mesh 3dsurface
+if strcmp(domaintype(md.mesh),'3Dsurface'),
+	[x y z elements is2d isplanet] = processmesh(md.mesh,options);
+	return;
+end
+
+if ~strcmpi(getfieldvalue(options,'coord','xy'),'latlon'),
+	x=md.mesh.x;
+	if isprop(md.mesh,'x2d'), x2d=md.mesh.x2d; end
+	y=md.mesh.y;
+	if isprop(md.mesh,'y2d'), y2d=md.mesh.y2d; end
+else
+	x=md.mesh.long;
+	y=md.mesh.lat;
+end
+
+if isprop(md.mesh,'z'),
+	z=md.mesh.z;
+else
+	z=zeros(size(x));
+end
+z=getfieldvalue(options,'z',z);
+if ischar(z),
+	z=md.(z);
+end
+
+if isprop(md.mesh,'elements2d'), elements2d=md.mesh.elements2d; end
+elements=md.mesh.elements;
+
+%is it a 2d plot?
+if md.mesh.dimension()==2,
+	is2d=1;
+else
+	if getfieldvalue(options,'layer',0)>=1,
+		is2d=1;
+	else
+		is2d=0;
+	end
+end
+
+%layer projection? 
+if getfieldvalue(options,'layer',0)>=1,
+	if strcmpi(getfieldvalue(options,'coord','xy'),'latlon'),
+		error('processmesh error message: cannot work with 3D meshes for now');
+	end
+	%we modify the mesh temporarily to a 2d mesh from which the 3d mesh was extruded. 
+	x=x2d;
+	y=y2d;
+	z=zeros(size(x2d));
+	elements=elements2d;
+end
+
+%units
+if exist(options,'unit'),
+	unit=getfieldvalue(options,'unit');
+	x=x*unit;
+	y=y*unit;
+	z=z*unit;
+end
+
+if isa(md,'planet'),
+	isplanet=1;
+else
+	isplanet=0;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/processmesh.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/processmesh.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/processmesh.py	(revision 21239)
@@ -0,0 +1,83 @@
+from math import isnan
+import MatlabFuncs as m
+import numpy as npy
+
+def processmesh(md,data,options):
+	"""
+	PROCESSMESH - process the mesh for plotting
+
+	Usage:
+		x,y,z,elements,is2d=processmech(md,data,options)
+
+	See also: PLOTMODEL, PROCESSDATA
+	"""
+
+	#some checks
+	if md.mesh.numberofvertices==0:
+		raise ValueError('processmesh error: mesh is empty')
+	if md.mesh.numberofvertices==md.mesh.numberofelements:
+		raise ValueError('processmesh error: the number of elements is the same as the number of nodes')
+
+	if len(data)==0 or not isinstance(data,dict):
+		
+		if 'latlon' not in options.getfieldvalue('coord','xy').lower(): #convert to lower case for comparison
+			x=md.mesh.x
+			if 'x2d' in dir(md.mesh): x2d=md.mesh.x2d
+			y=md.mesh.y
+			if 'y2d' in dir(md.mesh): y2d=md.mesh.x2d
+		else:
+			x=md.mesh.long
+			y=md.mesh.lat
+
+		if 'z' in dir(md.mesh):
+			z=md.mesh.z
+		else:
+			z=npy.zeros_like(md.mesh.x)
+		
+		if 'elements2d' in dir(md.mesh): 
+			elements2d=md.mesh.elements2d
+			elements2d=elements2d-1  # subtract one since python indexes from zero
+		elements=md.mesh.elements
+		elements=elements-1
+
+		#is it a 2D plot?
+		if md.mesh.dimension()==2:
+			is2d=1
+		else:
+			if options.getfieldvalue('layer',0)>=1:
+				is2d=1
+			else:
+				is2d=0
+
+		#layer projection?
+		if options.getfieldvalue('layer',0)>=1:
+			 if 'latlon' in options.getfieldvalue('coord','xy').lower():
+				 raise ValueError('processmesh error: cannot work with 3D mesh in lat-lon coords')
+			#we modify the mesh temporarily to a 2D mesh from which the 3D mesh was extruded
+			 x=x2d
+			 y=y2d
+			 z=zeros(size(x2d))
+			 elements=elements2d
+	
+	else:
+		#Process mesh for plotting 
+		if md.mesh.dimension()==2:
+			is2d=1
+		else:
+			# process polycollection here for 3D plot
+			is2d=0
+	
+	#units
+	if options.exist('unit'):
+		unit=options.getfieldvalue('unit')
+		x=x*unit
+		y=y*unit
+		z=z*unit
+
+	#is model a member of planet class? (workaround until planet class defined)
+	if md.__class__.__name__!='model':
+		isplanet=1
+	else:
+		isplanet=0
+
+	return x,y,z,elements,is2d,isplanet
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/quiver_colorbar.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/quiver_colorbar.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/quiver_colorbar.m	(revision 21239)
@@ -0,0 +1,45 @@
+function quiver_colorbar(quivers,options)
+%QUIVER_COLORBAR - colorbar for quiver plots
+%
+%   Usage:
+%      quiver_colorbar(quivers,options)
+
+if  strcmpi(getfieldvalue(options,'colorbar','on'),'on'),
+
+	%Create colorbar
+	hcb=colorbar('peer',gca,'location','EastOutside');
+	caxis([1 quivers.numcolors+1]);
+
+	%build ticks
+	ticklabel=cell(1,length(quivers.levels));
+	for i=1:length(quivers.levels),
+		ticklabel{i}=num2str(round_ice(quivers.levels(i),3));
+	end
+	tickpos=1:quivers.numcolors+1;
+
+	%remove ticks if to many have been created
+	proportion=round(length(quivers.levels)/4);
+	if proportion>1,
+		ticklabel=ticklabel(1:proportion:end);
+		tickpos=tickpos(1:proportion:end);
+	end
+
+	%draw colorbar
+	set(hcb,'YTickLabel',ticklabel,'YTick',tickpos);
+
+	%position
+	if exist(options,'colorbarpos'),
+		set(hcb,'Position',getfieldvalue(options,'colorbarpos'));
+	end
+	%fontsize
+	fontsize=getfieldvalue(options,'fontsize',14);
+	set(hcb,'FontSize',fontsize);
+
+	if exist(options,'colorbartitle'),
+		backup=gca;
+		axes(hcb);lab=title(getfieldvalue(options,'colorbartitle'));
+		set(lab,'Rotation',getfieldvalue(options,'colorbartitlerotation',0));
+		set(lab,'VerticalAlignment','bottom');
+		axes(backup);
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/quiver_process.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/quiver_process.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/quiver_process.m	(revision 21239)
@@ -0,0 +1,70 @@
+function [quivers,palette]=quiver_process(x,y,u,v,options)
+%QUIVER_PROCESS - process data for color quiver plot
+%
+%   Usage:
+%      [quivers,palette]=quiver_process(x,y,u,v,options)
+
+%keep only non NaN elements
+pos=find(~isnan(x) & ~isnan(y) & ~isnan(u) & ~isnan(v));
+x=x(pos); y=y(pos);
+u=u(pos); v=v(pos);
+
+%get Norm Min and Max
+Norm=sqrt(u.^2+v.^2);
+Min=min(Norm);
+Max=max(Norm);
+
+%Scale data
+scalingfactor=getfieldvalue(options,'scaling',0.40);
+if strcmpi(getfieldvalue(options,'autoscale','on'),'off'),
+	delta=((min(x)-max(x))^2+(min(y)-max(y))^2)/numel(x);
+	u=scalingfactor*sqrt(delta)*u./Norm;
+	v=scalingfactor*sqrt(delta)*v./Norm;
+else
+	delta=((min(x)-max(x))^2+(min(y)-max(y))^2)/numel(x);
+	u=scalingfactor*sqrt(delta)*u./max(Norm);
+	v=scalingfactor*sqrt(delta)*v./max(Norm);
+end
+
+%number of colors?
+colorlevels=getfieldvalue(options,'colorlevels',30);
+if isnumeric(colorlevels),
+	if isnan(colorlevels),
+		numcolors=30;
+	else
+		numcolors=colorlevels;
+	end
+	levels=round_ice(linspace(Min,Max,numcolors+1),2);
+else
+	levels=zeros(1,length(colorlevels)+2);
+	levels(1)=Min;
+	for i=1:length(colorlevels)
+		levels(i+1)=colorlevels{i};
+	end
+	levels(end)=Max;
+	levels=sort(unique(levels));
+	numcolors=length(levels)-1;
+end
+
+%create colorind for colors
+colorind=ones(length(u),1);
+for i=1:numcolors
+	pos=find((Norm>=levels(i)) & (Norm<=levels(i+1)) );
+	colorind(pos)=i;
+end
+colorind(find(Norm>levels(end)))=numcolors;
+
+%build output
+quivers=struct('x',x,'y',y,'u',u,'v',v,'levels',levels,'colorind',colorind,'numcolors',numcolors);
+
+%set the colormap 
+if numcolors==2;
+	%blue and red
+	palette=colormap([0 0 1;1 0 0]);
+elseif numcolors==3,
+	%blue yellow and red
+	palette=colormap([0 0 1;1 1 0;1 0 0]);
+else
+	%let jet choose
+	palette=colormap(jet(numcolors));
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/radarpower.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/radarpower.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/radarpower.m	(revision 21239)
@@ -0,0 +1,149 @@
+function md=radarpower(md,varargin)
+%RADARPOWER - overlay a power radar image on an existing mesh
+%
+%   This routine will overlay a power radar image on an existing mesh.
+%   The power amplitude will be output to vel for now.
+%   In the future, think about a field to hold this value.
+%
+%   Usage:
+%      md=radarpower(md,options);
+%      md=radarpower(md)
+
+%Parse inputs
+if nargin==1,
+	options=pairoptions;
+else
+	options=varargin{:};
+	if ~isa(options,'pairoptions'),
+		options=pairoptions(varargin{:});
+	end
+end
+
+highres = getfieldvalue(options,'highres',0);
+xlim    = getfieldvalue(options,'xlim',[min(md.mesh.x) max(md.mesh.x)]);
+ylim    = getfieldvalue(options,'ylim',[min(md.mesh.y) max(md.mesh.y)]);
+posting = getfieldvalue(options,'posting',0); % 0 -> image posting default
+a = getfieldvalue(options,'overlay_adjust_a',0);
+b = getfieldvalue(options,'overlay_adjust_b',1);
+c = getfieldvalue(options,'overlay_adjust_c',0);
+d = getfieldvalue(options,'overlay_adjust_d',1);
+
+%find gdal coordinates
+x0=min(xlim); x1=max(xlim);
+y0=min(ylim); y1=max(ylim);
+
+if ~exist(options,'overlay_image'), % no image provided, go look into ModelData for one!{{{
+	if exist(options,'geotiff_name'),
+		paths = {getfieldvalue(options,'geotiff_name')};
+	elseif md.mesh.epsg==3031, %Antarctica
+			if highres,
+				paths = {'/u/astrid-r1b/ModelData/MosaicTiffRsat/amm125m_v2_200m.tif','/home/ModelData/Antarctica/MosaicTiffRsat/amm125m_v2_200m.tif'};
+			else
+				paths = {'/u/astrid-r1b/ModelData/MosaicTiffRsat/amm125m_v2_1km.tif','/home/ModelData/Antarctica/MosaicTiffRsat/amm125m_v2_1km.tif'};
+			end
+	elseif md.mesh.epsg==3413,   %Greenland 
+		if highres,
+			paths = {'/u/astrid-r1b/ModelData/MOG/mog100_r2_hp1.tif','/home/ModelData/Greenland/MOG/mog100_r2_hp1.tif'};
+		else
+			paths = {'/u/astrid-r1b/ModelData/MOG/mog500_r2_hp1.tif','/home/ModelData/Greenland/MOG/mog500_r2_hp1.tif'};
+		end
+	else
+		error('Need to provide geotiff for areas outside of Greenland and Antarctica');
+	end
+
+	%Find file from list
+	found = false;
+	for i=1:numel(paths),
+		if exist(paths{i},'file'),
+			geotiff_name = paths{i}; found = true;
+		end
+	end
+	if ~found,
+		error('could not find radar image'); 
+	end
+
+
+	%Crop radar image from xylim
+	filename='./temp.tif';
+	eval(['!gdal_translate -quiet -projwin ' num2str(x0) ' ' num2str(y1) ' ' num2str(x1) ' ' num2str(y0) ' ' geotiff_name ' ' filename ]);
+
+	%Read in temp.tif:
+	im=imread('temp.tif','TIFF');
+	%adjust contrast and brightness
+	%im=imadjust(im,[a b],[c d]);
+	pixelskip=max(1,ceil(posting/((x1-x0)/(size(im,2)))));
+	md.radaroverlay.pwr=double(flipud(im(1:pixelskip:end,1:pixelskip:end)));
+	md.radaroverlay.x=(x0:(x1-x0)/(size(md.radaroverlay.pwr,2)-1):x1);
+	md.radaroverlay.y=(y0:(y1-y0)/(size(md.radaroverlay.pwr,1)-1):y1);
+
+	%Erase image or keep it?
+	if ~getfieldvalue(options,'keep_image',0),
+		system('rm -rf ./temp.tif');
+	end
+	%}}}
+else %user provided image {{{
+	%user provided an image. check we also have overlay_xlim and overlay_ylim  options, to know what range of coordinates the image covers.
+	if (~exist(options,'overlay_xlim') | ~exist(options,'overlay_xlim')| ~exist(options,'overlay_xposting')| ~exist(options,'overlay_yposting')),
+		error('radarpower error message: please provide overlay_xlim, overlay_ylim, overlay_xposting and overlay_yposting options together with overlay_image option');
+	end
+	overlay_image=getfieldvalue(options,'overlay_image');
+	overlay_xlim=getfieldvalue(options,'overlay_xlim');
+	overlay_ylim=getfieldvalue(options,'overlay_ylim');
+	overlay_xposting=getfieldvalue(options,'overlay_xposting');
+	overlay_yposting=getfieldvalue(options,'overlay_yposting');
+
+	sizex=floor((x1-x0)/overlay_xposting);
+	sizey=floor((y1-y0)/overlay_yposting);
+	topleftx=floor((x0-overlay_xlim(1))/overlay_xposting); % x min
+	toplefty=floor((overlay_ylim(2)-y1)/overlay_yposting); % y max
+
+	%Read and crop file
+	disp('Warning: expecting coordinates in polar stereographic (Std Latitude: 70ºN Meridian: 45º)');
+	im=imread(overlay_image);
+	%adjust contrast and brightness
+	%im=imadjust(im,[a b],[c d]);
+	im=im(toplefty:toplefty+sizey,topleftx:topleftx+sizex);
+	md.radaroverlay.pwr=double(flipud(im));
+	md.radaroverlay.x=(x0:(x1-x0)/(size(md.radaroverlay.pwr,2)-1):x1);
+	md.radaroverlay.y=(y0:(y1-y0)/(size(md.radaroverlay.pwr,1)-1):y1);
+end %}}}
+
+%Was a triangulation requested for the area of the image that is not covered by the mesh? %{{{
+if strcmpi(getfieldvalue(options,'outertriangulation','no'),'yes'),
+
+	%create expfile that is a box controlled by xlim and ylim, with a hole defined by the mesh outer segments.
+	box.name='';
+	
+	%box: 
+	box.x=[xlim(1) xlim(2) xlim(2) xlim(1) xlim(1)];
+	box.y=[ylim(1) ylim(1) ylim(2) ylim(2) ylim(1)];
+	box.density=1;
+
+	%inner hole from mesh segments: 
+	box(2).x=md.mesh.x(md.mesh.segments(:,1));
+	box(2).x=[box(2).x; box(2).x(1)];
+	box(2).y=md.mesh.y(md.mesh.segments(:,1)); 
+	box(2).y=[box(2).y; box(2).y(1)];
+
+	if strcmpi(getfieldvalue(options,'outertriangulationflip','no'),'yes'),
+		box(2).x=flipud(box(2).x);
+		box(2).y=flipud(box(2).y);
+	end
+
+	%write contour to file
+	expwrite(box,'./outertriangulation.exp');
+
+	%mesh: 
+	maxarea=max(GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y));
+	outermd=triangle(model(),'./outertriangulation.exp',sqrt(maxarea));
+	%outermd=bamg(model(),'domain','./outertriangulation.exp','hmin',sqrt(maxarea));
+
+	%delete contour file: 
+	delete('./outertriangulation.exp');
+	
+	%save the triangulation: 
+	md.radaroverlay.outerindex=outermd.mesh.elements;
+	md.radaroverlay.outerx=outermd.mesh.x;
+	md.radaroverlay.outery=outermd.mesh.y;
+
+end %}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/scaleruler.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/scaleruler.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/scaleruler.m	(revision 21239)
@@ -0,0 +1,77 @@
+function scaleruler(options)
+%SCALERULER - overlay a scale ruler on current plot
+%
+%   Usage:
+%      scaleruler(options)
+
+%get options
+structure  = getfieldvalue(options,'scaleruler');
+fontcolor  = getfieldvalue(options,'fontcolor','k');
+fontweight = getfieldvalue(options,'fontweight','n');
+fontsize   = getfieldvalue(options,'scaleruler_fontsize',16);
+unitscale  = getfieldvalue(options,'unit',1.);
+
+%Go through structure and fill missing arguments
+if length(structure)~=5
+	error('plotmodel error message: bad number of input arguments for scaleruler: [x0 y0 length thickness numberofticks]');
+end
+
+%retrieve scale parameters
+x0            = double(structure(1))/unitscale;
+y0            = double(structure(2))/unitscale;
+lengthscale   = double(structure(3))/unitscale;
+widthscale    = double(structure(4))/unitscale;
+numberofticks = double(structure(5));
+
+%If only one tick, just draw a rectangle
+if numberofticks==1,
+	text(x0+lengthscale/2,y0+2*widthscale,2,[num2str(lengthscale*unitscale/1000) ' km'],...
+		'FontSize',fontsize,'FontWeight',fontweight,'Color',fontcolor,'HorizontalAlignment','center','VerticalAlignment','baseline');
+	patch([x0 x0+lengthscale x0+lengthscale x0],[y0 y0 y0+widthscale y0+widthscale],2*ones(1,4),fontcolor,'Edgecolor',fontcolor);
+else
+	%initialize some coordinates
+	unitlength=lengthscale/(numberofticks -1);
+	flag=-1;
+
+	Bd=[x0 y0];
+	Bu=[x0 y0+widthscale];
+	Tick=0;
+
+	%Text
+	xt=Bu(1);
+	yt=Bu(2)+widthscale;
+	text(xt,yt,2,num2str(Tick),'FontSize',fontsize,'FontWeight',fontweight,'Color',fontcolor,'HorizontalAlignment','center','VerticalAlignment','baseline');
+
+	%loope over the patches
+	for i=1:numberofticks-1,
+		Au=Bu;
+		Ad=Bd;
+		Bu=[Au(1)+unitlength Ad(2)+widthscale];
+		Bd=[Ad(1)+unitlength Ad(2)];
+		Tick=(Tick+unitlength)*unitscale;
+
+		%pathes
+		if flag==-1
+			p=patch([Ad(1) Bd(1) Bu(1) Au(1)],[Ad(2) Bd(2) Bu(2) Au(2)],2*ones(1,4),'Black');
+		else
+			p=patch([Ad(1) Bd(1) Bu(1) Au(1)],[Ad(2) Bd(2) Bu(2) Au(2)],2*ones(1,4),'White');
+		end
+
+		%flip flag
+		flag=-flag;
+
+		%Text
+		xt=Bu(1);
+		yt=Bu(2)+widthscale;
+		if i~=numberofticks-1,
+			text(xt,yt,2,num2str(round_ice(Tick/1000,3)),'FontSize',fontsize,'FontWeight',fontweight,'Color',fontcolor,'HorizontalAlignment','center','VerticalAlignment','baseline');
+		end
+	end
+	text(xt,yt,2,num2str(round_ice(Tick/1000,3)),'FontSize',fontsize,'FontWeight',fontweight,'Color',fontcolor,'HorizontalAlignment','center','VerticalAlignment','baseline');
+	% add leading spaces depending on length of label string
+	str=' km';
+	for i=1:numel(num2str(round_ice(Tick/1000,3))),
+		str=[' ' str];
+	end
+	text(xt,yt,2,str,'FontSize',fontsize,'FontWeight',fontweight,'Color',fontcolor,'HorizontalAlignment','left','VerticalAlignment','baseline');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/showregion.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/showregion.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/showregion.m	(revision 21239)
@@ -0,0 +1,34 @@
+function showregion(md,insetpos)
+%SHOWREGION - show region on plot
+%
+%   Usage:
+%      showregion(md,insetpos);
+
+%get inset relative position (x,y,width,height)
+%insetpos=getfieldvalue(options,'insetpos',[0.02 0.70 0.18 0.18]);
+
+%get current plos position
+cplotpos=get(gca,'pos');
+%compute inset position
+PosInset=[cplotpos(1)+insetpos(1)*cplotpos(3),cplotpos(2)+insetpos(2)*cplotpos(4), insetpos(3)*cplotpos(3), insetpos(4)*cplotpos(4)];
+axes('pos',PosInset);
+axis equal off
+%box off
+if md.mesh.epsg==3413,
+	A=expread(['/u/astrid-r1b/ModelData/Exp/Greenland.exp']);
+elseif md.mesh.epsg==3031,
+	A=expread(['/u/astrid-r1b/ModelData/Exp/Antarctica.exp']);
+else
+	error('md.mesh.epsg not supported yet');
+end
+
+Ax=[min(A.x) max(A.x)];
+Ay=[min(A.y) max(A.y)];
+
+mdx=[min(md.mesh.x) max(md.mesh.x)];
+mdy=[min(md.mesh.y) max(md.mesh.y)];
+
+line(A.x,A.y,'color','b');
+patch([Ax(1)  Ax(2)  Ax(2)  Ax(1) Ax(1)],[Ay(1)  Ay(1)  Ay(2)  Ay(2) Ay(1)],[1 1 1],'EdgeColor',[0 0 0],'LineWidth',1,'FaceLighting','none')
+patch( [mdx(1) mdx(2) mdx(2) mdx(1)],[mdy(1) mdy(1) mdy(2) mdy(2)],ones(4,1),'EdgeColor',[0 0 0],'FaceColor','r','FaceAlpha',0.5)
+colorbar('off');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/slider.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/slider.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/slider.js	(revision 21239)
@@ -0,0 +1,172 @@
+/*
+	Name:
+		sliderInit
+	
+	Description:
+		Initialize slider corresponding to passed selector with passed value,
+		minimum and maximum values, step (which is the increment for the 
+		slider), and callback function (which is called when slider is changed). 
+	
+		Options are passed as pairs to the function according to the usage 
+		example below.
+	
+	Usage:
+		sliderInit(
+			'selector', #some-element, 
+			'value', 0,
+			'min', -1,
+			'max', 1,
+			'step', 0.1,
+			'callback', function(value){someEngineFunction(value)}
+		);
+	
+	NOTE:	jQuery Mobile will reflect changes to slider in its input "label" 
+			based on the width of the slider. For example, step might be set to
+			0.1, but if the width of the slider is too narrow, changes to the 
+			slider will only be reflected in whole numeral increments in the
+			slider' label. That said, *all* sliders can be adjusted via the
+			"up" and "down" keys by whatever increment step is set to.
+*/
+function sliderInit(){
+	
+	// Convert arguments to options
+	var args 		= Array.prototype.slice.call(arguments);
+	var options 	= new pairoptions(args.slice());
+
+	// Recover option values
+	var selector	= options.getfieldvalue('selector', '');
+	var value 		= options.getfieldvalue('value', 0);
+	var callback 	= options.getfieldvalue('callback', function(event, ui){});
+	var min 		= options.getfieldvalue('min', 0.6 * value);
+	var max 		= options.getfieldvalue('max', 1.4 * value);
+	var step 		= options.getfieldvalue('step', 1);
+
+	/*
+		Update slider attributes.
+		
+		NOTE:	Although slider has already been created, need to call slider() 
+				in order to avoid:
+				
+					Error: cannot call methods on slider prior to 
+					initialization; attempted to call method 'refresh'
+					
+				Attempted all other methods for intialization of slider widget
+				from jQuery Mobile, and this is the only one that seemed to work
+				(see index.php for related markup).
+	*/
+	$(selector).slider();
+	$(selector).val(value);
+	$(selector).attr('min', min);
+	$(selector).attr('max', max);
+	$(selector).attr('step', step);
+	$(selector).on('slidestop', function(event, ui){
+		callback(parseFloat($(selector).val()));
+	});
+
+	/*
+		NOTE:	Slider must be "refreshed" after any JavaScript change to it, as
+				it is an AJAX object.
+	*/
+	$(selector).slider('refresh');
+}
+/* exported sliderInit, refreshErrorMessages */
+
+
+/*
+	Name:
+		sliderMoveInput
+	
+	Description:
+		Appends a jQuery Mobile slider input to an element whose selector 
+		adheres to the following protocol,
+		
+			destination = sliderSelector + '-value'
+			
+	Usage:
+		sliderMoveInput('#someSliderSelector');
+		
+	NOTE:	Destination element must, obviously, be hardcoded into markup for a
+			call to this function to work as expected.
+*/
+function sliderMoveInput(selector){
+	
+	$(selector).appendTo(selector + '-value');
+	
+	/*
+		NOTE:	Slider must be "refreshed" after any JavaScript change to it, as
+				it is an AJAX object.
+	*/
+	$(selector).slider('refresh');
+}
+/* exported sliderMoveInput, refreshErrorMessages */
+
+
+function progressInit(){
+	
+	// Convert arguments to options.
+	var args 			= Array.prototype.slice.call(arguments);
+	var options 		= new pairoptions(args.slice());
+	
+	// Recover option values
+	var sim 			= options.getfieldvalue('sim', '');
+	
+	var canvas 			= $(sim + '-canvas')[0];
+	var progressBar 	= $(sim + '-controls-slider-progress');
+	var playButton 		= $(sim + '-controls-button-play');
+	var reverseButton 	= $(sim + '-controls-button-reverse');
+	var timeText 		= $(sim + '-controls-progress-time');
+	
+	/*
+		Update slider attributes.
+		
+		NOTE:	Although slider has already been created, need to call slider() 
+				in order to avoid:
+				
+					Error: cannot call methods on slider prior to 
+					initialization; attempted to call method 'refresh'
+					
+				Attempted all other methods for intialization of slider widget
+				from jQuery Mobile, and this is the only one that seemed to work
+				(see index.php for related markup).
+	*/
+	$(progressBar).slider();
+	$(progressBar).val(value);
+	$(progressBar).attr('min', 0);
+	$(progressBar).attr('max', 1);
+	$(progressBar).attr('step', 1);
+	$(progressBar).on('slidestop', function(event, ui){
+		canvas.movieIncrement = true;
+		canvas.movieFrame = parseInt($(progressBar).val());
+	});
+	$(progressBar).on('change', function(event, ui){
+		canvas.movieFrame = parseInt($(progressBar).val());
+	});
+	$(progressBar).on('slidestart', function(event, ui){
+		canvas.movieIncrement = false;	
+		canvas.movieFrame = parseInt($(progressBar).val());
+	});
+
+	/*
+		NOTE:	Slider must be "refreshed" after any JavaScript change to it, as
+				it is an AJAX object.
+	*/
+	$(progressBar).slider('refresh');
+	
+	// Attach progress bar slider to simulation.
+	canvas.progressBar = progressBar;
+
+	playButton.click(function(){
+		canvas.moviePlay = !canvas.moviePlay;
+		if (canvas.moviePlay){
+			playButton.find("span").removeClass("fa-play");
+			playButton.find("span").addClass("fa-pause");
+		}
+		else{
+			playButton.find("span").removeClass("fa-pause");
+			playButton.find("span").addClass("fa-play");
+		}
+	});
+	
+	canvas.timeLabel = timeText;
+}
+/* exported progressInit, refreshErrorMessages */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/squarezoom.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/squarezoom.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/squarezoom.m	(revision 21239)
@@ -0,0 +1,20 @@
+function squarezoom()
+%SQUAREZOOM - zoom on a part of a figure
+%
+%   Usage:
+%      squarezoom()
+
+disp('Click twice to define a square where you want to zoom. First click for upper left corner, second for lower right corner');
+[x,y]=ginput(2);
+dx=x(2)-x(1);
+dy=y(1)-y(2);
+
+if dx>dy,
+	delta=dx-dy;
+	xlim([x(1) x(2)]);
+	ylim([y(2)-delta/2 y(1)+delta/2]);
+else
+	delta=dy-dx;
+	xlim([x(1)-delta/2 x(2)+delta/2]);
+	ylim([y(2) y(1)]);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/subplotmodel.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/subplotmodel.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/subplotmodel.m	(revision 21239)
@@ -0,0 +1,41 @@
+function ha=subplotmodel(nlines,ncols,num,options)
+%SUBPLOTMODEL -  tight subplot that includes margins
+%
+%   Usage:
+%      h=subplotmodel(nlines,ncols,i,options)
+
+%Regular subplot
+if ~exist(options,'tightsubplot')
+	if exist(options,'asymsubplot')
+		id=getfieldvalue(options,'asymsubplot',num);
+		subplot(nlines,ncols,id);
+		return
+	else
+		subplot(nlines,ncols,num);
+		return;
+	end
+end
+
+gap     = getfieldvalue(options,'gap',[.01 .01]);
+hmargin = getfieldvalue(options,'hmargin',[.01 .01]);
+vmargin = getfieldvalue(options,'vmargin',[.01 .01]);
+
+height = (1-sum(vmargin)-(nlines-1)*gap(1))/nlines; 
+width  = (1-sum(hmargin)-(ncols-1)*gap(2))/ncols;
+ymin   = 1-vmargin(2)-height; 
+
+for i = 1:nlines
+	xmin = hmargin(1);
+	for j = 1:ncols
+		if(((i-1)*ncols+j)==num)
+			ha = axes('Units','normalized', ...
+				'Position',[xmin ymin width height],'XTickLabel','','YTickLabel','','Visible','off');
+			return
+		end
+		xmin = xmin+width+gap(2);
+	end
+	ymin = ymin-height-gap(1);
+end
+
+%Activate new axes
+axes(ha);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/vim.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/vim.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/vim.m	(revision 21239)
@@ -0,0 +1,3 @@
+function vim(index,x,y,field)
+
+trisurf(index,x,y,field),view(2),shading interp, colorbar;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/webgl.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/webgl.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/webgl.js	(revision 21239)
@@ -0,0 +1,570 @@
+/*This is where we have all our webgl relevant functionality for the plotting routines: */
+
+//{{{ Canvas Initialization
+function initCanvas(options) {
+	//Initialize open Gl for each canvas, if needed: 
+	canvas = document.getElementById(options.getfieldvalue('canvasid'));
+	//var canvas = document.getElementById(options.getfieldvalue('canvasid'));
+	if (!canvas.initialized) {
+		typedArraySliceSupport();
+		canvas.gl = initWebGL(canvas,options);
+		canvas.nodes = [];
+		if (canvas.drawHandler)	{ window.cancelAnimationFrame(canvas.drawHandler); }
+		draw(canvas,options);
+		canvas.initialized = true;
+	}
+	return canvas;
+}
+function initWebGL(canvas,options) { //{{{
+	var gl;
+	try {
+		if (!canvas.gl) {
+			gl = GL.create({canvas:canvas});
+			// Enable depth testing
+			gl.enable(gl.DEPTH_TEST);
+			// Near things obscure far things
+			gl.depthFunc(gl.LEQUAL);
+			// Enable color blending/overlay
+			gl.enable(gl.BLEND);
+			// Enable face culling
+			gl.enable(gl.CULL_FACE); 
+			gl.cullFace(gl.FRONT);
+			// Load shaders and store them in gl object
+			gl.shaders = loadShaders(gl);
+			
+			// Add event listeners for canvas
+			var displayview = options.getfieldvalue('displayview','off') == 'on';
+			var displayzoom = options.getfieldvalue('displayzoom','off') == 'on';
+			var mc = new Hammer.Manager(canvas);
+			
+			mc.add( new Hammer.Tap({ event: 'singletap' }) );
+			mc.add(new Hammer.Pan({threshold:0, pointers:0}));
+			mc.add(new Hammer.Pinch({threshold:0})).recognizeWith(mc.get('pan'));
+			mc.on('singletap', function (ev) {onTap(ev,canvas);});
+			mc.on('panstart panmove', function (ev) {onPan(ev,canvas,displayview);});
+			mc.on('pinchstart pinchmove', function (ev) {onPinch(ev,canvas,displayview);});
+			
+			//canvas.addEventListener('mousemove', function (ev) {onTap(ev,canvas);}, false);
+			canvas.addEventListener('mousewheel', function (ev) {onZoom(ev,canvas,displayzoom)}, false);
+			canvas.addEventListener('DOMMouseScroll', function (ev) {onZoom(ev,canvas,displayzoom)}, false);
+		}
+		else {
+			gl = canvas.gl;
+		}
+	}
+	catch(e) {
+		console.log(e);
+		return;
+	}
+	
+	// Add context state variables
+	//TODO:Group variables in objects for organization and naming
+	canvas.gl = gl;
+	canvas.cameraPosition = vec3.create();
+	canvas.cameraMatrix = mat4.create();
+	canvas.controlSensitivity = options.getfieldvalue('controlsensitivity',1);
+	canvas.dataMarkersAllowed = options.getfieldvalue('datamarkers','off') == 'on';
+	canvas.dataMarkersEnabled = true; //if data marker feature is on, user can toggle feature on and off
+	canvas.dataMarkerImage = options.getfieldvalue('datamarkers_image','../../../js/textures/data_marker.svg');
+	canvas.dataMarkerSize = options.getfieldvalue('datamarkerssize',[32,32]);
+	canvas.inverseCameraMatrix = mat4.create();
+	canvas.id = options.getfieldvalue('canvasid','.sim-canvas');
+	canvas.moviePlay = true;
+	canvas.movieReverse = false;
+	canvas.movieIncrement = true;
+	canvas.moviefps = options.getfieldvalue('moviefps',5);
+	canvas.rotation = options.getfieldvalue('view',[0,90]); //0 azimuth, 90 elevation
+	canvas.rotationAzimuthBounds = options.getfieldvalue('azlim',[0,360]);
+	canvas.rotationElevationBounds = options.getfieldvalue('ellim',[-180,180]);
+	canvas.translation = options.getfieldvalue('origin',[0,0,0]);
+	canvas.twod = options.getfieldvalue('2d','off') == 'on';
+	canvas.view = options.getfieldvalue('view',[0,90]);
+	canvas.viewPanning = options.getfieldvalue('enablepanning','off') == 'on';
+	canvas.vInverseMatrix = mat4.create();
+	canvas.zoomBounds = options.getfieldvalue('zoomlim',[0.001,100.0]);
+	canvas.zoom = clamp(options.getfieldvalue('zoom',1.0), canvas.zoomBounds[0], canvas.zoomBounds[1]);
+	canvas.zoomLast = canvas.zoom;
+	var backgroundcolor = new RGBColor(options.getfieldvalue('backgroundcolor','lightcyan'));
+	if (backgroundcolor.ok) { canvas.backgroundcolor = [backgroundcolor.r/255.0, backgroundcolor.g/255.0, backgroundcolor.b/255.0, 1.0]; }
+	else { throw Error(sprintf('s%s%s\n','initWebGL error message: cound not find out background color for curent canvas ',canvas)); }
+	
+	return gl;
+} //}}}
+function loadShaders(gl) { //{{{
+	var shaders = {};
+	shaders.Colored = new GL.Shader.fromURL('../../../js/shaders/Colored.vsh', '../../../js/shaders/Colored.fsh', null, gl);
+	shaders.Textured = new GL.Shader.fromURL('../../../js/shaders/Textured.vsh', '../../../js/shaders/Textured.fsh', null, gl);
+	shaders.SkyFromSpace = new GL.Shader.fromURL('../../../js/shaders/SkyFromSpace.vert', '../../../js/shaders/SkyFromSpace.frag', null, gl);
+	shaders.GroundFromSpace = new GL.Shader.fromURL('../../../js/shaders/GroundFromSpace.vert', '../../../js/shaders/GroundFromSpace.frag', null, gl);
+	return shaders;
+} //}}}
+function initTexture(gl,imageSource) { //{{{
+	return GL.Texture.fromURL(imageSource, {minFilter:gl.LINEAR_MIPMAP_LINEAR, magFilter:gl.LINEAR}, null, gl);
+} //}}}
+function Node(gl) { //{{{
+	//Returns a Node object that contains default display states for webgl object. center represents pivot point of rotation.
+	return {
+		alpha:1.0,
+		buffers:[],
+		cullFace:gl.FRONT,
+		disableDepthTest:false, 
+		drawMode:gl.TRIANGLES,
+		drawOrder:0,
+		enabled:true,
+		enableCullFace:false,
+		hideOcean:false,
+		lineWidth:1.0,
+		maskEnabled:false,
+		maskHeight:150.0,
+		maskColor:vec4.fromValues(0.0, 0.0, 1.0, 1.0),
+		mesh:null,
+		name:'node',
+		shaderName:'Colored',
+		shader:gl.shaders.Colored,
+		texture:null,
+		useIndexBuffer:true,
+		center:vec3.create(), 
+		scale:vec3.fromValues(1, 1, 1),
+		rotation:vec3.create(),
+		translation:vec3.create(),
+		modelMatrix:mat4.create(),
+		rotationMatrix:mat4.create(),
+		inverseModelMatrix:mat4.create(),
+		inverseRotationMatrix:mat4.create()
+	};
+} //}}}
+function debugNodes(canvasid) { //{{{
+	var canvasid = canvasid || '.sim-canvas';
+	var nodes = $(canvasid)[0].nodes;
+	console.log(canvasid, 'Nodes:');
+	for (var node in nodes) {
+		console.log('name: ', nodes[node].name, ' node: ', nodes[node], ' mesh: ', nodes[node].mesh, ' translation: ', nodes[node].translation, ' center:', nodes[node].center, ' rotation:', nodes[node].rotation);
+	}
+	return nodes;
+} //}}}
+function updateModelMatrix(node) { //{{{
+	var modelMatrix = mat4.create();
+
+	var translationMatrix = mat4.create();
+	mat4.translate(translationMatrix, translationMatrix, [-node.center[0],-node.center[1],-node.center[2]]); //scale/rotation centering
+	mat4.multiply(modelMatrix, translationMatrix, modelMatrix);
+	
+	var scaleMatrix = mat4.create();
+	mat4.scale(scaleMatrix, scaleMatrix, node.scale);
+	mat4.multiply(modelMatrix, scaleMatrix, modelMatrix);
+	
+	var rotationMatrix = mat4.create();
+	var zRotationMatrix = mat4.create();	
+	mat4.rotate(zRotationMatrix, zRotationMatrix, DEG2RAD * node.rotation[2], [0.0, 0.0, 1.0]);
+	mat4.multiply(rotationMatrix, zRotationMatrix, rotationMatrix);
+	var yRotationMatrix = mat4.create();	
+	mat4.rotate(yRotationMatrix, yRotationMatrix, DEG2RAD * node.rotation[1], [0.0, 1.0, 0.0]);
+	mat4.multiply(rotationMatrix, yRotationMatrix, rotationMatrix);
+	var xRotationMatrix = mat4.create();	
+	mat4.rotate(xRotationMatrix, xRotationMatrix, DEG2RAD * node.rotation[0], [1.0, 0.0, 0.0]);
+	mat4.multiply(rotationMatrix, xRotationMatrix, rotationMatrix);
+	mat4.multiply(modelMatrix, rotationMatrix, modelMatrix);	
+	
+	mat4.identity(translationMatrix);
+	mat4.translate(translationMatrix, translationMatrix, node.center); //relative translation
+	mat4.multiply(modelMatrix, translationMatrix, modelMatrix);
+	
+	mat4.identity(translationMatrix);
+	mat4.translate(translationMatrix, translationMatrix, node.translation); //absolute translation
+	mat4.multiply(modelMatrix, translationMatrix, modelMatrix);
+	
+	node.modelMatrix = modelMatrix;
+	node.inverseModelMatrix = mat4.invert(mat4.create(), modelMatrix);
+	node.rotationMatrix = rotationMatrix;
+	node.inverseRotationMatrix = mat4.invert(mat4.create(), rotationMatrix);;
+} //}}}
+function clamp(value, min, max) { //{{{
+	return Math.max(min, Math.min(value, max));
+} //}}}
+function recover(canvasid,name,defaultvalue) { //{{{
+	var canvas = document.getElementById(canvasid);
+	if (canvas && canvas.hasOwnProperty(name)) { return canvas[name]; }
+	return defaultvalue;
+} //}}}
+function typedArraySliceSupport() { //{{{
+	//TypedArray compatibility for Safari/IE
+	if (typeof Int8Array !== 'undefined') {
+		if (!Int8Array.prototype.fill) { Int8Array.prototype.fill = Array.prototype.fill; }
+		if (!Int8Array.prototype.slice) { Int8Array.prototype.slice = Array.prototype.slice; }
+	}
+	if (typeof Uint8Array !== 'undefined') {
+		if (!Uint8Array.prototype.fill) { Uint8Array.prototype.fill = Array.prototype.fill; }
+		if (!Uint8Array.prototype.slice) { Uint8Array.prototype.slice = Array.prototype.slice; }
+	}
+	if (typeof Uint8ClampedArray !== 'undefined') {
+		if (!Uint8ClampedArray.prototype.fill) { Uint8ClampedArray.prototype.fill = Array.prototype.fill; }
+		if (!Uint8ClampedArray.prototype.slice) { Uint8ClampedArray.prototype.slice = Array.prototype.slice; }
+	}
+	if (typeof Int16Array !== 'undefined') {
+		if (!Int16Array.prototype.fill) { Int16Array.prototype.fill = Array.prototype.fill; }
+		if (!Int16Array.prototype.slice) { Int16Array.prototype.slice = Array.prototype.slice; }
+	}
+	if (typeof Uint16Array !== 'undefined') {
+		if (!Uint16Array.prototype.fill) { Uint16Array.prototype.fill = Array.prototype.fill; }
+		if (!Uint16Array.prototype.slice) { Uint16Array.prototype.slice = Array.prototype.slice; }
+	}
+	if (typeof Int32Array !== 'undefined') {
+		if (!Int32Array.prototype.fill) { Int32Array.prototype.fill = Array.prototype.fill; }
+		if (!Int32Array.prototype.slice) { Int32Array.prototype.slice = Array.prototype.slice; }
+	}
+	if (typeof Uint32Array !== 'undefined') {
+		if (!Uint32Array.prototype.fill) { Uint32Array.prototype.fill = Array.prototype.fill; }
+		if (!Uint32Array.prototype.slice) { Uint32Array.prototype.slice = Array.prototype.slice; }
+	}
+	if (typeof Float32Array !== 'undefined') {
+		if (!Float32Array.prototype.fill) { Float32Array.prototype.fill = Array.prototype.fill; }
+		if (!Float32Array.prototype.slice) { Float32Array.prototype.slice = Array.prototype.slice; }
+	}
+	if (typeof Float64Array !== 'undefined') {
+		if (!Float64Array.prototype.fill) { Float64Array.prototype.fill = Array.prototype.fill; }
+		if (!Float64Array.prototype.slice) { Float64Array.prototype.slice = Array.prototype.slice; }
+	}
+	if (typeof TypedArray !== 'undefined') {
+		if (!TypedArray.prototype.fill) { TypedArray.prototype.fill = Array.prototype.fill; }
+		if (!TypedArray.prototype.slice) { TypedArray.prototype.slice = Array.prototype.slice; }
+	}
+} //}}}
+function raycast(canvas, origin, ray) { //{{{
+	var mesh = canvas.unitNode.mesh;
+	if (!mesh || mesh.ready == false) { return; }
+	if (!mesh.octree) { mesh.octree = new GL.Octree(mesh); }
+	
+	var hit = mesh.octree.testRay(origin, ray, 1e3, 1e10);
+	
+	if(!hit) { return; }
+	
+	hit.modelPos = vec3.copy(vec3.create(), hit.pos);
+	vec3.transformMat4(hit.pos, hit.pos, canvas.unitNode.modelMatrix);
+	vec3.transformMat4(hit.normal, hit.normal, canvas.unitNode.modelMatrix);
+
+	return hit;
+} //}}}
+//}}}
+//{{{ Interface Functions
+function onTap(ev, canvas) { //{{{
+	//Sets up a marker on a canvas that will track a point on the mesh. Can be dismissed by closing the display or clicking the marker.
+	ev.preventDefault();
+	if (!(canvas.dataMarkersAllowed && canvas.dataMarkersEnabled)) { return; }
+	
+	var rect = canvas.getBoundingClientRect();
+	var x = ev.srcEvent.clientX - rect.left;
+	var y = ev.srcEvent.clientY - rect.top;
+	
+	updateMarker(canvas, x, y, true);
+} //}}}
+function updateMarker(canvas, x, y, reset, origin, far) { //{{{
+	//Can be called by onTap to create/reuse a marker, or by the marker's update function. Origin and far are optional and only used by the update function for recreating the raycast.
+	if (!canvas.unitNode) { return; }
+	
+	var inverseMVPMatrix = mat4.invert(mat4.create(), mat4.multiply(mat4.create(), canvas.cameraMatrix, canvas.unitNode.modelMatrix));
+	var origin = origin || vec3.transformMat4(vec3.create(), [(x - canvas.width / 2) / (canvas.width / 2), (canvas.height / 2 - y) / (canvas.height / 2), 0], inverseMVPMatrix);
+	var far = far || vec3.transformMat4(vec3.create(), [(x - canvas.width / 2) / (canvas.width / 2), (canvas.height / 2 - y) / (canvas.height / 2), 1.0], inverseMVPMatrix);
+	var ray = vec3.subtract(vec3.create(), far, origin);
+	var hit = raycast(canvas, origin, ray);
+	
+	if (hit) {
+		var u = hit.coords[0][0] * hit.uvw[0] + hit.coords[1][0] * hit.uvw[1] + hit.coords[2][0] * hit.uvw[2];
+		var v = hit.coords[0][1] * hit.uvw[0] + hit.coords[1][1] * hit.uvw[1] + hit.coords[2][1] * hit.uvw[2];
+		var value = canvas.unitNode.caxis[0] * (1.0 - v) + canvas.unitNode.caxis[1] * v;
+		
+		var rect = canvas.getBoundingClientRect();
+		var dataMarkerSize = canvas.dataMarkerSize;
+		if (!canvas.marker) {
+			$('#' + canvas.id).after( '<img src=' + canvas.dataMarkerImage + ' alt="data marker" width="' + dataMarkerSize[0] + '" height="' + dataMarkerSize[1] + '" id="sim-data-marker-' + canvas.id + '" class="sim-data-marker noselect"></img>' );
+			$('#sim-data-marker-' + canvas.id).css({
+				'position': 'absolute', 
+				'left': (Math.round(x + rect.left) - dataMarkerSize[0] / 2) + 'px', 
+				'top': (Math.round(y + rect.top) - dataMarkerSize[1]) + 'px', 
+				'width': dataMarkerSize[0] + 'px', 
+				'height': dataMarkerSize[1] + 'px',
+				'pointer-events': 'all',
+				'cursor': 'pointer',
+				'display': 'none'
+			});
+			canvas.marker = $('#sim-data-marker-' + canvas.id);
+			canvas.marker.on('click touch', function () {
+				canvas.marker.fadeOut(175);
+				canvas.dataMarkerDisplay.stop();
+			});
+			canvas.marker.fadeIn(175);
+		}
+		
+		
+		canvas.marker.hit = hit;
+		canvas.marker.update = function() {
+			if (!canvas.unitNode) { return; }
+			var screenPoint = vec3.transformMat4(vec3.create(), canvas.marker.hit.pos, canvas.cameraMatrix);
+			var x = screenPoint[0] * (canvas.width / 2) + canvas.width / 2;
+			var y = -screenPoint[1] * (canvas.height / 2) + canvas.height / 2;
+			updateMarker(canvas, Math.round(x), Math.round(y), false, origin, far);
+			canvas.marker.css({
+				'left': (Math.round(x + rect.left) - dataMarkerSize[0] / 2) + 'px', 
+				'top': (Math.round(y + rect.top) - dataMarkerSize[1]) + 'px'
+			});
+		};
+		
+		if (!canvas.dataMarkerDisplay) {
+			var tripToShowData = new Trip([
+			{
+				content : '<div id="sim-data-marker-content-' + canvas.id + '" class="sim-data-marker-content"><p>X: ' + hit.modelPos [0].toPrecision(3) + ' </p><p>Y: ' + hit.modelPos [1].toPrecision(3) + ' </p><p>Z: ' + hit.modelPos [2].toPrecision(3) + '</p><p>Value: ' + (Math.round(value * 1000) / 1000).toPrecision(3) + '</p></div>',
+				position : 'screen-se'
+			}],
+			{
+				onEnd : function(tripIndex) {
+					canvas.marker.fadeOut(175);
+				},
+				tripTheme : 'dark',
+				showCloseBox : true,
+				delay: -1
+			});
+			canvas.dataMarkerDisplay = tripToShowData;
+			canvas.dataMarkerDisplay.start();
+		}
+		$('#sim-data-marker-content-' + canvas.id).html('<p>X: ' + hit.modelPos [0].toPrecision(3) + ' </p><p>Y: ' + hit.modelPos [1].toPrecision(3) + ' </p><p>Z: ' + hit.modelPos [2].toPrecision(3) + '</p><p>Value: ' + (Math.round(value * 1000) / 1000).toPrecision(3) + '</p>');
+				
+		if (reset) { modifyDataMarkersEnabled(true,canvas); }
+	}
+} //}}}
+function onPan(ev,canvas,displaylog) { //{{{
+	ev.preventDefault();
+	if (ev.type == 'panstart') {
+		canvas.lastDeltaX = 0;
+		canvas.lastDeltaY = 0;
+	}
+	if (ev.srcEvent.shiftKey || ev.pointers.length == 2) {
+		if (!canvas.viewPanning) return;
+		var deltaX = (canvas.lastDeltaX - ev.deltaX) / canvas.clientWidth / canvas.zoom * 2 * canvas.controlSensitivity * 6.371e6;
+		var deltaY = (canvas.lastDeltaY - ev.deltaY) / canvas.clientHeight / canvas.zoom * 2 * canvas.controlSensitivity * 6.371e6;
+		
+		if (canvas.twod) {
+			canvas.translation[0] += Math.cos(DEG2RAD * canvas.rotation[0]) * deltaX - Math.sin(DEG2RAD * 0) * deltaY;
+			canvas.translation[2] += Math.sin(DEG2RAD * canvas.rotation[0]) * deltaX + Math.cos(DEG2RAD * 0) * deltaY;
+		}
+		else {
+			canvas.translation[0] += Math.cos(DEG2RAD * canvas.rotation[0]) * deltaX - Math.sin(DEG2RAD * canvas.rotation[0]) * deltaY;
+			canvas.translation[2] += Math.sin(DEG2RAD * canvas.rotation[0]) * deltaX + Math.cos(DEG2RAD * canvas.rotation[0]) * deltaY;
+		}
+	}
+	else {
+		canvas.rotation[0] += (canvas.lastDeltaX - ev.deltaX) / canvas.clientWidth * -2 * canvas.controlSensitivity * RAD2DEG;
+		canvas.rotation[1] += (canvas.lastDeltaY - ev.deltaY) / canvas.clientHeight * -2 * canvas.controlSensitivity * RAD2DEG;
+		
+		if (canvas.rotation[0] > 360) { canvas.rotation[0] -= 360; };
+		if (canvas.rotation[0] < -360) { canvas.rotation[0] += 360; };
+		if (canvas.rotation[1] > 180) { canvas.rotation[1] -= 360; };
+		if (canvas.rotation[1] < -180) { canvas.rotation[1] += 360; };
+		
+		canvas.rotation[0] = clamp(canvas.rotation[0], canvas.rotationAzimuthBounds[0], canvas.rotationAzimuthBounds[1]);
+		canvas.rotation[1] = clamp(canvas.rotation[1], canvas.rotationElevationBounds[0], canvas.rotationElevationBounds[1])
+	}
+	canvas.lastDeltaX = ev.deltaX;
+	canvas.lastDeltaY = ev.deltaY;
+
+	if (displaylog) { console.log(canvas.rotation); }
+} //}}}
+function onPinch(ev,canvas,displaylog) { //{{{
+	ev.preventDefault();
+	if (ev.type == 'pinchstart') { canvas.zoomLast = canvas.zoom; }
+	else { modifyZoom(ev.scale * canvas.zoomLast, canvas, displaylog); }
+} //}}}
+function onZoom(ev,canvas,displaylog) { //{{{
+	ev.preventDefault();
+	var delta = clamp(ev.scale || ev.wheelDelta || -ev.detail, -1, 1) * canvas.controlSensitivity * canvas.zoom / 20;
+	modifyZoom(canvas.zoom + delta, canvas, displaylog);
+} //}}}
+function modifyZoom(value,canvas,displaylog) { //{{{
+	canvas.zoom = clamp(value, canvas.zoomBounds[0], canvas.zoomBounds[1]);
+	if (displaylog) { console.log(canvas.zoom); }
+} //}}}
+function modifyDataMarkersEnabled(value,canvas) { //{{{
+	canvas.dataMarkersEnabled = value;
+	if (!canvas.dataMarkersEnabled && canvas.marker) {
+		canvas.marker.fadeOut(175);
+		canvas.dataMarkerDisplay.stop();
+	}
+	else if (canvas.dataMarkersEnabled && canvas.marker) {
+		canvas.marker.fadeIn(175);
+		canvas.dataMarkerDisplay.start();
+	}
+} //}}}
+//}}}
+//{{{ Drawing Functions
+function updateCameraMatrix(canvas) { //{{{
+    //Update view matrix and multiply with projection matrix to get the view-projection (camera) matrix.
+	var vMatrix = mat4.create();
+	var pMatrix = mat4.create();
+	var translateMatrix = mat4.create();
+	var rotationMatrix = mat4.create();
+	var azimuthRotationMatrix = mat4.create();
+	var elevationRotationMatrix = mat4.create();
+	var aspectRatio = canvas.clientWidth / canvas.clientHeight;
+	var cameraPosition = vec3.create();
+
+	if (canvas.twod) { mat4.ortho(pMatrix, -aspectRatio*6.371e6/canvas.zoom, aspectRatio*6.371e6/canvas.zoom, -6.371e6/canvas.zoom, 6.371e6/canvas.zoom, -1.0, 1e10); }
+	else { mat4.perspective(pMatrix, 45 * DEG2RAD, aspectRatio, 1e3, 1e10); }
+	
+	//Apply worldspace translation
+	mat4.translate(translateMatrix, translateMatrix, [-canvas.translation[0],-canvas.translation[1],-canvas.translation[2]]);
+	mat4.multiply(vMatrix, translateMatrix, vMatrix);
+	
+	//Calculate rotation around camera focal point about worldspace origin
+	if (canvas.twod) {
+		mat4.rotate(azimuthRotationMatrix, azimuthRotationMatrix, DEG2RAD * 0, [0, 1, 0]);
+		mat4.rotate(elevationRotationMatrix, elevationRotationMatrix, DEG2RAD * 90, [1, 0, 0]);
+		mat4.multiply(rotationMatrix, elevationRotationMatrix, azimuthRotationMatrix);
+	}
+	else {
+		mat4.rotate(azimuthRotationMatrix, azimuthRotationMatrix, DEG2RAD * canvas.rotation[0], [0, 1, 0]);
+		mat4.rotate(elevationRotationMatrix, elevationRotationMatrix, DEG2RAD * canvas.rotation[1], [1, 0, 0]);
+		mat4.multiply(rotationMatrix, elevationRotationMatrix, azimuthRotationMatrix);
+	}
+	
+	//Apply rotation transform
+	mat4.multiply(vMatrix, rotationMatrix, vMatrix);
+
+	//Apply screenspace translation
+	mat4.identity(translateMatrix);
+	mat4.translate(translateMatrix, translateMatrix, [0.0, 0.0, -6.371e6/canvas.zoom]);
+	mat4.multiply(vMatrix, translateMatrix, vMatrix);
+	
+	//Calculate fields for lighting and raycasts
+	mat4.invert(canvas.vInverseMatrix, vMatrix);
+	
+	//Apply projection matrix to get camera matrix
+	mat4.multiply(canvas.cameraMatrix, pMatrix, vMatrix);
+	mat4.invert(canvas.inverseCameraMatrix, canvas.cameraMatrix);
+	vec3.transformMat4(canvas.cameraPosition, cameraPosition, canvas.inverseCameraMatrix);
+}//}}}
+function drawSceneGraphNode(canvas,node) { //{{{
+	if (!node.enabled) { return; }
+
+	var gl = canvas.gl;
+	gl.makeCurrent();
+	
+	var mvpMatrix = mat4.create();
+	mat4.multiply(mvpMatrix, canvas.cameraMatrix, node.modelMatrix);
+	
+	if (node.texture) { node.texture.bind(0); }
+	if (node.disableDepthTest) { gl.disable(gl.DEPTH_TEST); }
+	if (node.enableCullFace) { gl.enable(gl.CULL_FACE); }
+
+	gl.cullFace(node.cullFace);
+	gl.lineWidth(node.lineWidth);
+	gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
+
+	//Setup for light that originates from camera
+	var origin = vec3.fromValues(0, 0, 0);
+	var lightOrigin = vec3.fromValues(0, 0, 0);
+	var cameraPositionRelative = vec3.create();
+	vec3.transformMat4(origin, origin, canvas.vInverseMatrix);
+	vec3.normalize(lightOrigin, lightOrigin);
+	vec3.sub(cameraPositionRelative, origin, node.translation);
+	cameraHeight = vec3.length(cameraPositionRelative);
+	
+	var atm = { 							//Default Values
+				wavelength_r: 0.65, 		//0.65		Red wavelength (micrometers)
+				wavelength_g: 0.57,			//0.57		Green wavelength (micrometers)
+				wavelength_b: 0.475,		//0.475		Green wavelength (micrometers)
+				eSun: 100.0,				//20.0		Sun intensity	
+				kRayleigh: 0.0025,			//0.0025	Rayleigh scattering amount
+				kMie: 0.000, 				//0.01		Mie scattering amount
+				g: -0.99,					//-0.99		Mie phase asymmetry/direction factor
+				hdr_exposure: 0.8,			//0.8		High Dynamic Range Exposure
+				scale: 1.25, 				//1.025		Scale of atmosphere. WARNING: Change atmosphereScale in applyoptions.js, and scaling constants.
+				scaleDepth: 0.25, 			//0.25		Percentage altitude at which the atmosphere's average density is found
+				a: -0.00287,				//-0.00287	Scaling constant a
+				b: 0.459,					//0.459		Scaling constant b
+				c: 3.83,					//3.83		Scaling constant c
+				d: -6.80,					//-6.80		Scaling constant d
+				e: 3.6,						//5.25		Scaling constant e. Lower when increasing atmosphere scale.
+				attenuation: 0.5			//0.5		Strength of atmospheric scattering on ground shading.
+	};
+			
+	var inv_wavelength4 = [1.0 / Math.pow(atm.wavelength_r, 4), 1.0 / Math.pow(atm.wavelength_g, 4), 1.0 / Math.pow(atm.wavelength_b, 4)];
+	var innerRadius = 6.371e6;
+	var outerRadius = innerRadius*atm.scale;
+	var scale = 1.0 / (outerRadius - innerRadius);
+	var scaleDepth = atm.scaleDepth;
+	
+	node.shader.uniforms({
+		m4MVP: mvpMatrix,
+		m4Model: node.modelMatrix,
+		u_texture: 0,
+		u_alpha: node.alpha,
+		u_maskEnabled: node.maskEnabled,
+		u_maskHeight: node.maskHeight,
+		u_maskColor: node.maskColor,
+		v3CameraPosition: origin,
+		v3Translate: node.translation,
+		v3LightPos: lightOrigin,
+		v3InvWavelength: inv_wavelength4,
+		fOuterRadius: outerRadius,
+		fOuterRadius2: outerRadius * outerRadius,
+		fInnerRadius: innerRadius,
+		fInnerRadius2: innerRadius * innerRadius,
+		fKrESun: atm.kRayleigh * atm.eSun, 
+		fKmESun: atm.kMie * atm.eSun, 
+		fKr4PI: atm.kRayleigh * 4 * Math.PI, 
+		fKm4PI: atm.kMie * 4 * Math.PI,
+		fScale: scale, 
+		fScaleDepth: scaleDepth,
+		fScaleOverScaleDepth: scale/scaleDepth, 
+		v3LightPosFrag: lightOrigin,
+		fHdrExposure: atm.hdr_exposure,	
+		g: atm.g,			
+		g2: atm.g * atm.g,
+		a: atm.a,
+		b: atm.b,
+		c: atm.c,
+		d: atm.d,		
+		e: atm.e,
+		attenuation: atm.attenuation
+	}).draw(node.mesh, node.drawMode, 'triangles');
+	
+	gl.enable(gl.DEPTH_TEST);
+	gl.disable(gl.CULL_FACE);
+} //}}}
+function draw(canvas,options) { //{{{
+	if (canvas.textcanvas) { canvas.textcanvas.draw(canvas); }
+
+	var nodes = canvas.nodes;
+	if (nodes.length < 1) {
+		canvas.drawHandler = window.requestAnimationFrame(function(time) { draw(canvas,options); });
+		return;
+	}
+	for (var node in nodes) {	
+		if ((nodes[node].texture && nodes[node].texture.ready == false) || nodes[node].shader.ready == false || nodes[node].mesh.ready == false) {
+			canvas.drawHandler = window.requestAnimationFrame(function(time) { draw(canvas,options); });
+			return;
+		}
+	}
+	
+	var rect = canvas.getBoundingClientRect();
+	canvas.width  = rect.width;
+	canvas.height = rect.height;
+	
+	var gl = canvas.gl;
+	gl.makeCurrent(); //litegl function to handle switching between multiple canvases
+	gl.viewport(0, 0, rect.width, rect.height);
+	gl.clearColor(canvas.backgroundcolor[0], canvas.backgroundcolor[1], canvas.backgroundcolor[2], canvas.backgroundcolor[3]);
+	gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
+	
+	updateCameraMatrix(canvas);
+	
+	if (canvas.marker) { canvas.marker.update(); }
+	
+	var drawPassNumber = 3;
+	for (var i = drawPassNumber - 1; i >= 0; i--) {
+		for (var node in nodes) {
+			if (nodes[node].drawOrder == i) { drawSceneGraphNode(canvas,nodes[node]); }
+		}
+	}
+
+	canvas.drawHandler = window.requestAnimationFrame(function(time) { draw(canvas,options); });
+} //}}}
+//}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/writejsfield.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/writejsfield.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/writejsfield.m	(revision 21239)
@@ -0,0 +1,29 @@
+function writejsfield(fid,name,variable,nods)
+%WRITEJSFIELD - write variable to javascript file 
+%
+%   Usage:
+%      writejsfield(fid,name,variable)
+%
+
+	%write array:
+	if size(variable,2)==1,
+		fprintf(fid,'<!-- %s{{{-->\n',name);
+		fprintf(fid,'%s=[',name);
+		for i=1:nods-1,
+			fprintf(fid,'%g,',variable(i));
+		end
+		fprintf(fid,'%g];\n',variable(end));
+		fprintf(fid,'<!--}}}-->\n');
+	else
+		%multi-sized array: 
+		fprintf(fid,'<!-- %s{{{-->\n',name);
+		fprintf(fid,'%s=[]\n',name);
+		for i=1:size(variable,2),
+			fprintf(fid,'%s["%i"]=[',name,i);
+			for j=1:nods-1,
+				fprintf(fid,'%g,',variable(j,i));
+			end
+			fprintf(fid,'%g];\n',variable(end,i));
+		end
+		fprintf(fid,'<!--}}}-->\n');
+	end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/writejsfield.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/writejsfield.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/writejsfield.py	(revision 21239)
@@ -0,0 +1,26 @@
+import numpy
+def writejsfield(fid,name,variable,nods):
+#WRITEJSFIELD - write variable to javascript file 
+#
+#   Usage:
+#      writejsfield(fid,name,variable)
+#
+	#write array:
+	#if not isinstance(variable, list):
+	if type(variable[0])==numpy.float64:
+		fid.write('<!-- {0}{{{{{{-->\n'.format(name))
+		fid.write('{0}=['.format(name))
+		for i in xrange(0, nods-1):
+			fid.write('{0},'.format(variable[i]))
+		fid.write('{0}];\n'.format(variable[-1]))
+		fid.write('<!--}}}}}}-->\n')
+	else:
+		#multi-sized array: 
+		fid.write('<!-- {0}{{{{{{-->\n'.format(name))
+		fid.write('{0}=[]\n'.format(name))
+		for i in xrange(0, len(variable[2])):
+			fid.write('{0}["{1}"]=['.format(name,i))
+			for j in xrange(1, nods-1):
+				fid.write('{0},'.format(variable[j][i]))
+			fid.write('{0}];\n'.format(variable[-1][i]))
+		fid.write('<!--}}}}}}-->\n')
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/writejsfile.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/writejsfile.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/writejsfile.m	(revision 21239)
@@ -0,0 +1,59 @@
+function writejsfile(filename,model,keyname)
+%WRITEJSFILE - write model file to javascript database
+%
+%   Usage:
+%      writejsfile(filename,model,keyname)
+%
+
+	nods=length(model.x);
+	nel=size(model.index,1);
+	nx=length(model.contourx1);
+	
+	fid=fopen(filename,'w');
+
+	fprintf(fid,'model = {};\n');
+	fprintf(fid,'model["title"]="%s";\n',model.title);
+	fprintf(fid,'model["initialZoomFactor"]=%s;\n',model.initialZoomFactor);
+	
+	%write index:
+	fprintf(fid,'<!-- model["index"]{{{-->\n');
+	fprintf(fid,'model["index"]=[');
+	for i=1:nel-1,
+		fprintf(fid,'[%i, %i, %i],',model.index(i,1),model.index(i,2),model.index(i,3));
+	end
+	fprintf(fid,'[%i, %i, %i]];\n',model.index(end,1),model.index(end,2),model.index(end,3));
+	fprintf(fid,'<!--}}}-->\n');
+	
+	writejsfield(fid,'model["x"]',model.x,nods);
+	writejsfield(fid,'model["y"]',model.y,nods);
+	writejsfield(fid,'model["z"]',model.z,nods);
+	writejsfield(fid,'model["surface"]',model.surface,nods);
+	writejsfield(fid,'model["contourx1"]',model.contourx1,nx);
+	writejsfield(fid,'model["contoury1"]',model.contoury1,nx);
+	writejsfield(fid,'model["contourz1"]',model.contourz1,nx);
+	writejsfield(fid,'model["contourx2"]',model.contourx2,nx);
+	writejsfield(fid,'model["contoury2"]',model.contoury2,nx);
+	writejsfield(fid,'model["contourz2"]',model.contourz2,nx);
+
+
+	results=model.results;
+	fprintf(fid,'results={};\n');
+
+	for i=1:length(results),
+		fprintf(fid,'result={};\n');
+		writejsfield(fid,'result["data"]',results(i).data,nods);
+		fprintf(fid,'<!--{{{-->\n');
+		fprintf(fid,'result["caxis"]=[%g,%g];\n',results(i).caxis(1),results(i).caxis(2));
+		fprintf(fid,'result["label"]="%s";\n',results(i).label);
+		fprintf(fid,'result["shortlabel"]="%s";\n',results(i).shortlabel);
+		fprintf(fid,'result["unit"]="%s";\n',results(i).unit);
+		if size(results(i).data,2)>1,
+			fprintf(fid,'result["time_range"]=[%g,%g];\n',results(i).time_range(1),results(i).time_range(2));
+		end
+		fprintf(fid,'results["%i"]=result;\n',i);
+		fprintf(fid,'<!--}}}-->\n');
+	end
+	fprintf(fid,'model.results=results;\n');
+	fprintf(fid,'models["%s"]=model;\n',keyname);
+
+	fclose(fid);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/writejsfile.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/writejsfile.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/plot/writejsfile.py	(revision 21239)
@@ -0,0 +1,57 @@
+import numpy
+from writejsfield import writejsfield
+def writejsfile(filename,model,keyname):
+#WRITEJSFILE - write model file to javascript database
+#
+#   Usage:
+#      writejsfile(filename,model,keyname)
+#
+
+	nods=len(model.x)
+	nel=len(model.index)
+	nx=len(model.contourx1)
+	print(filename)	
+	fid=open(filename,'w', 0)
+
+	fid.write('model = {};\n')
+	fid.write('model["title"]="{0}";\n'.format(model.title))
+	fid.write('model["initialZoomFactor"]={0};\n'.format(model.initialZoomFactor))
+	#write index:
+	fid.write('<!-- model["index"]{{{-->\n')
+	fid.write('model["index"]=[')
+	for i in xrange(0, nel-1):
+		fid.write('[{0}, {1}, {2}],'.format(model.index[i][0],model.index[i][1],model.index[i][2]))
+	fid.write('[{0}, {1}, {2}]];\n'.format(model.index[-1][0],model.index[-1][1],model.index[-1][2]))
+	fid.write('<!--}}}-->\n')
+	print('writing model coordinates')
+	writejsfield(fid,'model["x"]',model.x,nods)
+	writejsfield(fid,'model["y"]',model.y,nods)
+	writejsfield(fid,'model["z"]',model.z,nods)
+	writejsfield(fid,'model["surface"]',model.surface,nods)
+	writejsfield(fid,'model["contourx1"]',model.contourx1,nx)
+	writejsfield(fid,'model["contoury1"]',model.contoury1,nx)
+	writejsfield(fid,'model["contourz1"]',model.contourz1,nx)
+	writejsfield(fid,'model["contourx2"]',model.contourx2,nx)
+	writejsfield(fid,'model["contoury2"]',model.contoury2,nx)
+	writejsfield(fid,'model["contourz2"]',model.contourz2,nx)
+
+	print('writing results')
+	results=model.results
+	fid.write('results={};\n')
+
+	for i in xrange(0,len(results)):
+		fid.write('result={};\n')
+		writejsfield(fid,'result["data"]',results[i].data,nods)
+		fid.write('<!--{{{-->\n')
+		fid.write('result["caxis"]=[{0},{1}];\n'.format(results[i].caxis[0],results[i].caxis[1]))
+		fid.write('result["label"]="{0}";\n'.format(results[i].label))
+		fid.write('result["shortlabel"]="{0}";\n'.format(results[i].shortlabel))
+		fid.write('result["unit"]="{0}";\n'.format(results[i].unit))
+		if type(results[i].data)==numpy.float64:
+			fid.write('result["time_range"]=[{0},{1}];\n'.format(results[i].time_range[0],results[i].time_range[1]))
+		fid.write('results["{0}"]=result;\n'.format(i))
+		fid.write('<!--}}}-->\n')
+	fid.write('model.results=results;\n')
+	fid.write('models["{0}"]=model;\n'.format(keyname))
+
+	fid.close()
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/print/export_geotiff.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/print/export_geotiff.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/print/export_geotiff.m	(revision 21239)
@@ -0,0 +1,24 @@
+function export_geotiff(filename,ref)
+%EXPORT_GEOTIF - export geotiff 
+%
+%   Usage:
+%      export_geotif(filename,ref);
+%
+%      This function must be called after plotmodel
+%      filname: no extension
+%      ref:     UPS Greenland  EPSG:3413 (http://www.spatialreference.org/ref/epsg/3413/)
+%               UPS Antarctica EPSG:3031 (http://www.spatialreference.org/ref/epsg/3031/)
+%
+%   Example:
+%      export_geotif('Greenland','EPSG:3413');
+
+%Get axis limits and convert to strings
+XLIM = xlim(); x0 = num2str(XLIM(1)); x1 = num2str(XLIM(2));
+YLIM = ylim(); y0 = num2str(YLIM(1)); y1 = num2str(YLIM(2));
+
+%first export the figure
+export_fig([filename '.jpg']);
+
+%call gdal on this: 
+system(['gdal_translate -a_srs ' ref ' -of GTiff -co "INTERLEAVE=PIXEL" -a_ullr ' x0 ' ' y1 ' ' x1 ' ' y0 ' ' filename '.jpg ' filename '.tif']);
+system(['rm -rf ' filename '.jpg']);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/print/printmodel.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/print/printmodel.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/print/printmodel.m	(revision 21239)
@@ -0,0 +1,98 @@
+function printmodel(filename,format,varargin)
+%PRINTMODEL - save an image of current figure
+%
+%   filename: output name of image file (no extension)
+%   format: image format (ex: 'tiff','jpg','pdf') 
+%
+%   List of options to printfmodel: 
+%
+%   figure: number of figure to print (default: current figure)
+%   resolution: use higher resolution to anti-alias (default 2)
+%   margin: add margin around final image  
+%   marginsize: size of margin around final image (default 5)
+%   frame: add frame around final image
+%   framesize: size of frame around final image (default 5)
+%   framecolor: color of frame around final image (default 'black')
+%   trim: trim empty space around image (default 'off')
+%   hardcopy: 'off' to impose MATLAB to use the same colors (default 'off')
+%   
+%   Usage:
+%      printmodel(filename,format,varargin);
+%
+%   Examples:
+%      printmodel('image','tiff')
+%      printmodel('image','eps','margin','on','frame','on','hardcopy','on')
+
+%get options: 
+options=pairoptions(varargin{:});
+
+%set defaults
+options=addfielddefault(options,'figure','gcf');
+options=addfielddefault(options,'format','tiff');
+options=addfielddefault(options,'resolution',1);
+options=addfielddefault(options,'margin','on');
+options=addfielddefault(options,'marginsize',25);
+options=addfielddefault(options,'frame','on');
+options=addfielddefault(options,'framesize',3);
+options=addfielddefault(options,'framecolor','black');
+options=addfielddefault(options,'trim','on');
+options=addfielddefault(options,'hardcopy','off');
+
+%get fig: 
+fig=getfieldvalue(options,'figure');
+if ischar(fig),
+	fig=gcf;
+else
+	figure(fig);
+	fig=gcf;
+end
+
+%In auto mode, MATLAB prints the figure the same size as it appears on the computer screen, centered on the page
+set(fig, 'PaperPositionMode', 'auto');
+
+%InvertHardcopy off imposes MATLAB to use the same colors
+set(fig, 'InvertHardcopy', getfieldvalue(options,'hardcopy'));
+
+%we could have several formats, as a cell array of strings.
+formats=format;
+if ~iscell(formats),
+	formats={formats};
+end
+
+%loop on formats:
+for i=1:length(formats),
+	format=formats{i};
+
+	%Use higher resolution to anti-alias and use zbuffer to have smooth colors
+	print(fig, '-zbuffer','-dtiff',['-r' num2str(get(0,'ScreenPixelsPerInch')*getfieldvalue(options,'resolution'))],filename);
+
+	%some trimming involved? 
+	if ~strcmpi(format,'pdf'),
+		if strcmpi(getfieldvalue(options,'trim'),'on'),
+			system(['convert -trim ' filename '.tif ' filename '.tif']);
+		end
+	end
+
+	%margin?
+	if ~strcmpi(format,'pdf'),
+		if strcmpi(getfieldvalue(options,'margin'),'on'),
+			marginsize=getfieldvalue(options,'marginsize');
+			system(['convert -border ' num2str(marginsize) 'x' num2str(marginsize) ' -bordercolor "white" ' filename '.tif ' filename '.tif']);
+		end
+	end
+
+	%frame?
+	if ~strcmpi(format,'pdf'),
+		if strcmpi(getfieldvalue(options,'frame'),'on'),
+			framesize=getfieldvalue(options,'framesize');
+			framecolor=getfieldvalue(options,'framecolor');
+			system(['convert -border ' num2str(framesize) 'x' num2str(framesize) ' -bordercolor "' framecolor '" ' filename '.tif ' filename '.tif']);
+		end
+	end
+
+	%convert image to correct format
+	if ~strcmpi(format,'tiff') & ~strcmpi(format,'tif'),
+		system(['convert ' filename '.tif ' filename '.' format]);
+		delete([ filename '.tif']);
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/print/sprintf.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/print/sprintf.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/print/sprintf.js	(revision 21239)
@@ -0,0 +1,190 @@
+function sprintf() {
+  //  discuss at: http://phpjs.org/functions/sprintf/
+  // original by: Ash Searle (http://hexmen.com/blog/)
+  // improved by: Michael White (http://getsprink.com)
+  // improved by: Jack
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Dj
+  // improved by: Allidylls
+  //    input by: Paulo Freitas
+  //    input by: Brett Zamir (http://brett-zamir.me)
+  //   example 1: sprintf("%01.2f", 123.1);
+  //   returns 1: 123.10
+  //   example 2: sprintf("[%10s]", 'monkey');
+  //   returns 2: '[    monkey]'
+  //   example 3: sprintf("[%'#10s]", 'monkey');
+  //   returns 3: '[####monkey]'
+  //   example 4: sprintf("%d", 123456789012345);
+  //   returns 4: '123456789012345'
+  //   example 5: sprintf('%-03s', 'E');
+  //   returns 5: 'E00'
+
+  var regex = /%%|%(\d+\$)?([\-+\'#0 ]*)(\*\d+\$|\*|\d+)?(?:\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g;
+  var a = arguments;
+  var i = 0;
+  var format = a[i++];
+
+  // pad()
+  var pad = function(str, len, chr, leftJustify) {
+    if (!chr) {
+      chr = ' ';
+    }
+    var padding = (str.length >= len) ? '' : new Array(1 + len - str.length >>> 0)
+      .join(chr);
+    return leftJustify ? str + padding : padding + str;
+  };
+
+  // justify()
+  var justify = function(value, prefix, leftJustify, minWidth, zeroPad, customPadChar) {
+    var diff = minWidth - value.length;
+    if (diff > 0) {
+      if (leftJustify || !zeroPad) {
+        value = pad(value, minWidth, customPadChar, leftJustify);
+      } else {
+        value = value.slice(0, prefix.length) + pad('', diff, '0', true) + value.slice(prefix.length);
+      }
+    }
+    return value;
+  };
+
+  // formatBaseX()
+  var formatBaseX = function(value, base, prefix, leftJustify, minWidth, precision, zeroPad) {
+    // Note: casts negative numbers to positive ones
+    var number = value >>> 0;
+    prefix = (prefix && number && {
+      '2'  : '0b',
+      '8'  : '0',
+      '16' : '0x'
+    }[base]) || '';
+    value = prefix + pad(number.toString(base), precision || 0, '0', false);
+    return justify(value, prefix, leftJustify, minWidth, zeroPad);
+  };
+
+  // formatString()
+  var formatString = function(value, leftJustify, minWidth, precision, zeroPad, customPadChar) {
+    if (precision !== null && precision !== undefined) {
+      value = value.slice(0, precision);
+    }
+    return justify(value, '', leftJustify, minWidth, zeroPad, customPadChar);
+  };
+
+  // doFormat()
+  var doFormat = function(substring, valueIndex, flags, minWidth, precision, type) {
+    var number, prefix, method, textTransform, value;
+
+    if (substring === '%%') {
+      return '%';
+    }
+
+    // parse flags
+    var leftJustify = false;
+    var positivePrefix = '';
+    var zeroPad = false;
+    var prefixBaseX = false;
+    var customPadChar = ' ';
+    var flagsl = flags.length;
+    var j;
+    for (j = 0; flags && j < flagsl; j++) {
+      switch (flags.charAt(j)) {
+      case ' ':
+        positivePrefix = ' ';
+        break;
+      case '+':
+        positivePrefix = '+';
+        break;
+      case '-':
+        leftJustify = true;
+        break;
+      case "'":
+        customPadChar = flags.charAt(j + 1);
+        break;
+      case '0':
+        zeroPad = true;
+        customPadChar = '0';
+        break;
+      case '#':
+        prefixBaseX = true;
+        break;
+      }
+    }
+
+    // parameters may be null, undefined, empty-string or real valued
+    // we want to ignore null, undefined and empty-string values
+    if (!minWidth) {
+      minWidth = 0;
+    } else if (minWidth === '*') {
+      minWidth = +a[i++];
+    } else if (minWidth.charAt(0) === '*') {
+      minWidth = +a[minWidth.slice(1, -1)];
+    } else {
+      minWidth = +minWidth;
+    }
+
+    // Note: undocumented perl feature:
+    if (minWidth < 0) {
+      minWidth = -minWidth;
+      leftJustify = true;
+    }
+
+    if (!isFinite(minWidth)) {
+      throw new Error('sprintf: (minimum-)width must be finite');
+    }
+
+    if (!precision) {
+      precision = 'fFeE'.indexOf(type) > -1 ? 6 : (type === 'd') ? 0 : undefined;
+    } else if (precision === '*') {
+      precision = +a[i++];
+    } else if (precision.charAt(0) === '*') {
+      precision = +a[precision.slice(1, -1)];
+    } else {
+      precision = +precision;
+    }
+
+    // grab value using valueIndex if required?
+    value = valueIndex ? a[valueIndex.slice(0, -1)] : a[i++];
+
+    switch (type) {
+    case 's':
+      return formatString(String(value), leftJustify, minWidth, precision, zeroPad, customPadChar);
+    case 'c':
+      return formatString(String.fromCharCode(+value), leftJustify, minWidth, precision, zeroPad);
+    case 'b':
+      return formatBaseX(value, 2, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'o':
+      return formatBaseX(value, 8, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'x':
+      return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'X':
+      return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad)
+        .toUpperCase();
+    case 'u':
+      return formatBaseX(value, 10, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'i':
+    case 'd':
+      number = +value || 0;
+      // Plain Math.round doesn't just truncate
+      number = Math.round(number - number % 1);
+      prefix = number < 0 ? '-' : positivePrefix;
+      value = prefix + pad(String(Math.abs(number)), precision, '0', false);
+      return justify(value, prefix, leftJustify, minWidth, zeroPad);
+    case 'e':
+    case 'E':
+    case 'f': // Should handle locales (as per setlocale)
+    case 'F':
+    case 'g':
+    case 'G':
+      number = +value;
+      prefix = number < 0 ? '-' : positivePrefix;
+      method = ['toExponential', 'toFixed', 'toPrecision']['efg'.indexOf(type.toLowerCase())];
+      textTransform = ['toString', 'toUpperCase']['eEfFgG'.indexOf(type) % 2];
+      value = prefix + Math.abs(number)[method](precision);
+      return justify(value, prefix, leftJustify, minWidth, zeroPad)[textTransform]();
+    default:
+      return substring;
+    }
+  };
+
+  return format.replace(regex, doFormat);
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/psl/p_polynomial_prime.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/psl/p_polynomial_prime.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/psl/p_polynomial_prime.m	(revision 21239)
@@ -0,0 +1,85 @@
+function vp = p_polynomial_prime ( m, n, x )
+
+%*****************************************************************************80
+%
+%% P_POLYNOMIAL_PRIME evaluates the derivative of Legendre polynomials P(n,x).
+%
+%  Discussion:
+%
+%    P(0,X) = 1
+%    P(1,X) = X
+%    P(N,X) = ( (2*N-1)*X*P(N-1,X)-(N-1)*P(N-2,X) ) / N
+%
+%    P'(0,X) = 0
+%    P'(1,X) = 1
+%    P'(N,X) = ( (2*N-1)*(P(N-1,X)+X*P'(N-1,X)-(N-1)*P'(N-2,X) ) / N
+%
+%  Licensing:
+%
+%    This code is distributed under the GNU LGPL license. 
+%
+%  Modified:
+%
+%    13 March 2012
+%
+%  Author:
+%
+%    John Burkardt
+%
+%  Reference:
+%
+%    Milton Abramowitz, Irene Stegun,
+%    Handbook of Mathematical Functions,
+%    National Bureau of Standards, 1964,
+%    ISBN: 0-486-61272-4,
+%    LC: QA47.A34.
+%
+%    Daniel Zwillinger, editor,
+%    CRC Standard Mathematical Tables and Formulae,
+%    30th Edition,
+%    CRC Press, 1996.
+%
+%  Parameters:
+%
+%    Input, integer M, the number of evaluation points.
+%
+%    Input, integer N, the highest order polynomial to evaluate.
+%    Note that polynomials 0 through N will be evaluated.
+%
+%    Input, real X(M,1), the evaluation points.
+%
+%    Output, real VP(M,N+1), the values of the derivatives of the
+%    Legendre polynomials of order 0 through N at the point X.
+%
+  if ( n < 0 )
+    vp = [];
+    return
+  end
+
+  v = zeros ( m, n + 1 );
+  vp = zeros ( m, n + 1 );
+
+  v(1:m,1) = 1.0;
+  vp(1:m,1) = 0.0;
+
+  if ( n < 1 )
+    return
+  end
+
+  v(1:m,2) = x(1:m,1);
+  vp(1:m,2) = 1.0;
+ 
+  for i = 2 : n
+ 
+    v(1:m,i+1) = ( ( 2 * i - 1 ) * x(1:m,1) .* v(1:m,i)     ...
+                 - (     i - 1 ) *             v(1:m,i-1) ) ...
+                 / (     i     );
+ 
+    vp(1:m,i+1) = ( ( 2 * i - 1 ) * ( v(1:m,i) + x(1:m,1) .* vp(1:m,i) )   ...
+                  - (     i - 1 ) *                          vp(1:m,i-1) ) ...
+                  / (     i     );
+ 
+  end
+ 
+  return
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/psl/p_polynomial_value.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/psl/p_polynomial_value.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/psl/p_polynomial_value.m	(revision 21239)
@@ -0,0 +1,120 @@
+function v = p_polynomial_value ( m, n, x )
+
+%*****************************************************************************80
+%
+%% P_POLYNOMIAL_VALUE evaluates the Legendre polynomials P(n,x).
+%
+%  Discussion:
+%
+%    P(n,1) = 1.
+%    P(n,-1) = (-1)^N.
+%    | P(n,x) | <= 1 in [-1,1].
+%
+%    The N zeroes of P(n,x) are the abscissas used for Gauss-Legendre
+%    quadrature of the integral of a function F(X) with weight function 1
+%    over the interval [-1,1].
+%
+%    The Legendre polynomials are orthogonal under the inner product defined
+%    as integration from -1 to 1:
+%
+%      Integral ( -1 <= X <= 1 ) P(I,X) * P(J,X) dX 
+%        = 0 if I =/= J
+%        = 2 / ( 2*I+1 ) if I = J.
+%
+%    Except for P(0,X), the integral of P(I,X) from -1 to 1 is 0.
+%
+%    A function F(X) defined on [-1,1] may be approximated by the series
+%      C0*P(0,x) + C1*P(1,x) + ... + CN*P(n,x)
+%    where
+%      C(I) = (2*I+1)/(2) * Integral ( -1 <= X <= 1 ) F(X) P(I,x) dx.
+%
+%    The formula is:
+%
+%      P(n,x) = (1/2^N) * sum ( 0 <= M <= N/2 ) C(N,M) C(2N-2M,N) X^(N-2*M)
+%
+%  Differential equation:
+%
+%    (1-X*X) * P(n,x)'' - 2 * X * P(n,x)' + N * (N+1) = 0
+%
+%  First terms:
+%
+%    P( 0,x) =      1
+%    P( 1,x) =      1 X
+%    P( 2,x) = (    3 X^2 -       1)/2
+%    P( 3,x) = (    5 X^3 -     3 X)/2
+%    P( 4,x) = (   35 X^4 -    30 X^2 +     3)/8
+%    P( 5,x) = (   63 X^5 -    70 X^3 +    15 X)/8
+%    P( 6,x) = (  231 X^6 -   315 X^4 +   105 X^2 -     5)/16
+%    P( 7,x) = (  429 X^7 -   693 X^5 +   315 X^3 -    35 X)/16
+%    P( 8,x) = ( 6435 X^8 - 12012 X^6 +  6930 X^4 -  1260 X^2 +   35)/128
+%    P( 9,x) = (12155 X^9 - 25740 X^7 + 18018 X^5 -  4620 X^3 +  315 X)/128
+%    P(10,x) = (46189 X^10-109395 X^8 + 90090 X^6 - 30030 X^4 + 3465 X^2-63)/256
+%
+%  Recursion:
+%
+%    P(0,x) = 1
+%    P(1,x) = x
+%    P(n,x) = ( (2*n-1)*x*P(n-1,x)-(n-1)*P(n-2,x) ) / n
+%
+%    P'(0,x) = 0
+%    P'(1,x) = 1
+%    P'(N,x) = ( (2*N-1)*(P(N-1,x)+X*P'(N-1,x)-(N-1)*P'(N-2,x) ) / N
+%
+%  Licensing:
+%
+%    This code is distributed under the GNU LGPL license. 
+%
+%  Modified:
+%
+%    10 March 2012
+%
+%  Author:
+%
+%    John Burkardt
+%
+%  Reference:
+%
+%    Milton Abramowitz, Irene Stegun,
+%    Handbook of Mathematical Functions,
+%    National Bureau of Standards, 1964,
+%    ISBN: 0-486-61272-4,
+%    LC: QA47.A34.
+%
+%    Daniel Zwillinger, editor,
+%    CRC Standard Mathematical Tables and Formulae,
+%    30th Edition,
+%    CRC Press, 1996.
+%
+%  Parameters:
+%
+%    Input, integer M, the number of evaluation points.
+%
+%    Input, integer N, the highest order polynomial to evaluate.
+%    Note that polynomials 0 through N will be evaluated.
+%
+%    Input, real X(M,1), the evaluation points.
+%
+%    Output, real V(M,1:N+1), the values of the Legendre polynomials 
+%    of order 0 through N at the points X.
+%
+  if ( n < 0 )
+    v = [];
+    return
+  end
+
+  v = ones ( m, n + 1 );
+
+  if ( n < 1 )
+    return
+  end
+
+  v(1:m,2) = x;
+
+  for i = 2 : n
+ 
+    v(:,i+1) = ( ( 2 * i - 1 ) * x .* v(:,i)   ...
+                -  (     i - 1 ) *    v(:,i-1) ) ...
+                /  (     i     );
+ 
+  end
+ 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/psl/sharmonics.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/psl/sharmonics.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/psl/sharmonics.m	(revision 21239)
@@ -0,0 +1,32 @@
+function sh = sharmonics(lat,lon,lMax) 
+
+%SHarmonics :: a function to compute (ortho-)normalized shperical harmonics 
+% 
+%USAGE: sh = sharmonics(lat,lon,lmax); 
+%
+%lat (latitude in [0,180] degrees from the north pole) 
+%lon (longitude in [0 360] degrees) 
+%lmax (maximum SH degree you wish to compute) 
+%
+%sh (spherical harmonics of degree and orders up to "lmax"... 
+%...numbered as 1(l=0), 2(l=1,m=-1), 3(l=1,m=0), 4(l=1,m=1)...) 
+%
+
+q=0;
+% 	
+lat=lat*pi/180;
+lon=lon*pi/180; 
+
+%disp(['Spherical harmonics of degree and orders up to ',num2str(lMax),' being computed...']);
+%ortho-normalized SH 
+for l=0:lMax
+   plm = legendre(l,cos(lat),'norm'); %nromalized Plm (see Matlab documents)
+   for m=-l:l 
+		sh(:,1+q)=plm(abs(m)+1,:)'.*(cos(abs(m).*lon)*(m>=0)+sin(abs(m).*lon)*(m<0)).*sqrt((2-(m==0))*2); %4-pi norm 
+      q=q+1;
+   end
+   %disp(['Spherical Harmonics of degree ',num2str(l),' (of ',num2str(lMax),') computed!']);
+end
+%disp(['... done!']);
+
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/psl/shlm.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/psl/shlm.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/psl/shlm.m	(revision 21239)
@@ -0,0 +1,27 @@
+function sh_lm = shlm(index,sh,lMax,func,areas) 
+
+%SHLM :: a function to compute SH coefficients of a function 
+% 
+%USAGE: sh_lm = shlm(index,sh,lMax,func,areas); 
+%
+%index (md.mesh.elements) 
+%sh (spherical harmonics) 
+%lMax (maximum SH degree to be considered) 
+%func (any function) 
+%areas (area of elements) 
+%
+
+p = 0; 
+
+sh_lm = zeros((lMax+1)^2,1); 
+
+% weighted area integration over the unit sphere 
+for l=0:lMax
+   for m=-l:l
+      func0 = sh(:,1+p).*func; 
+      sh_lm(1+p) = sum(mean(func0(index),2).*areas); 
+      p = p+1;
+   end
+end 
+sh_lm = sh_lm/sum(areas);
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/psl/shlm_element.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/psl/shlm_element.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/psl/shlm_element.m	(revision 21239)
@@ -0,0 +1,26 @@
+function sh_lm = shlm_element(index,sh,lMax,func,areas) 
+
+%SHLM :: a function to compute SH coefficients of a function 
+% 
+%USAGE: sh_lm = shlm(index,sh,lMax,func,areas); 
+%
+%index (md.mesh.elements) 
+%sh (spherical harmonics) 
+%lMax (maximum SH degree to be considered) 
+%func (any function) 
+%areas (area of elements) 
+%
+
+p = 0; 
+
+sh_lm = zeros((lMax+1)^2,1); 
+
+% weighted area integration over the unit sphere 
+for l=0:lMax
+   for m=-l:l
+      func0 = sh(:,1+p).*func; 
+      sh_lm(1+p) = sum(func0.*areas); 
+      p = p+1;
+   end
+end 
+sh_lm = sh_lm/sum(areas);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/MassFluxProcessProfile.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/MassFluxProcessProfile.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/MassFluxProcessProfile.m	(revision 21239)
@@ -0,0 +1,13 @@
+function segments=MassFluxProcessProfile(md,directory,profilename)
+%MASSFLUXPROCESSPROFILE: process an argus domain outlien profile into a list of segments.
+%
+% Usage: segments=MassFluxProcessProfile(md);
+%
+%
+% See also: PROCESS_QMU_RESPONSE_DATA, PREQMU
+
+%first read the profile points.
+profile=expread([directory '/' profilename]);
+
+%project this profile onto mesh.
+segments=ProfileProjectOntoMesh(md,profile);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_cdfs.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_cdfs.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_cdfs.m	(revision 21239)
@@ -0,0 +1,330 @@
+%
+%  calculate the same cumulative distribution functions that dakota
+%  calculates for given responses, probabilities, reliabilities, and/or
+%  general reliabilities.
+%
+%  [dresp]=dakota_cdfs(method,dresp      ,resp,prob,rel,grel)
+%  [cdf  ]=dakota_cdfs(method,samp       ,resp,prob,rel,grel)
+%  [cdf  ]=dakota_cdfs(method,mean,stddev,resp,prob,rel,grel)
+%
+%  the required input is:
+%    method        (char, 'nond_sampling' or 'nond_local_reliability')
+%    dresp         (structure array, responses)
+%      or
+%    samp          (double array, lists of samples)
+%      or
+%    mean          (double vector, means)
+%    stddev        (double vector, standard deviations)
+%    resp          (double vector, list of responses)
+%    prob          (double vector, list of probabilities)
+%    rel           (double vector, list of reliabilities)
+%    grel          (double vector, list of general reliabilities)
+%
+%  and the optional input is:
+%    alpha         (numeric, confidence interval of 100(1-alpha)%)
+%
+%  the required field of dresp is (for nond_sampling):
+%    sample        (double vector, list of samples)
+%  or (for nond_local_reliability):
+%    mean          (double, mean of samples)
+%    stddev        (double, standard deviation of samples)
+%
+%  the required output is:
+%    dresp         (structure array, responses)
+%      or
+%    cdf(:,4)      (double, array of resp/prob/rel/grel)
+%
+%  and the output fields of dresp are:
+%    cdf(:,4)      (double, array of resp/prob/rel/grel)
+%
+%  for each response (or column of data) in the input array, this
+%  function calculates the responses, probabilities, reliabilities
+%  and general reliabilities for the cumulative distribution function,
+%  the same way as dakota would.  if the input is a structure, the
+%  output is a field in the structure; if the input is arrays, the
+%  output is an array.
+%
+%  dresp data would typically be contained in the dakota tabular
+%  output file from a sampling analysis, or in the dakota output file
+%  from a local reliability analysis, either read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function [varargout]=dakota_cdfs(varargin)
+
+if ~nargin
+    help dakota_cdfs
+    return
+end
+
+%%  process input data
+
+iarg=1;
+if ischar(varargin{iarg})
+    method=varargin{iarg};
+    iarg=iarg+1;
+    if ~strncmpi(method,'nond_s',6) && ~strncmpi(method,'nond_l',6)
+        error(['Method ''' method ''' is unrecognized.']);
+    end
+else
+    method='';
+end
+
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+else
+    if     strncmpi(method,'nond_s',6)
+        samp=varargin{iarg};
+        iarg=iarg+1;
+    elseif strncmpi(method,'nond_l',6)
+        mean  =varargin{iarg};
+        iarg=iarg+1;
+        stddev=varargin{iarg};
+        iarg=iarg+1;
+    end
+end
+
+if iarg <= nargin && isnumeric(varargin{iarg})
+    resp=varargin{iarg};
+    iarg=iarg+1;
+else
+    resp=[];
+end
+if iarg <= nargin && isnumeric(varargin{iarg})
+    prob=varargin{iarg};
+    iarg=iarg+1;
+else
+    prob=[];
+end
+if iarg <= nargin && isnumeric(varargin{iarg})
+    rel =varargin{iarg};
+    iarg=iarg+1;
+else
+    rel =[];
+end
+if iarg <= nargin && isnumeric(varargin{iarg})
+    grel=varargin{iarg};
+    iarg=iarg+1;
+else
+    grel=[];
+end
+
+%%  calculate the cumulative distribution functions by input type
+
+if     exist('dresp','var') && ~isempty(dresp)
+    if     strncmpi(method,'nond_s',6)
+        for i=1:length(dresp)
+            [dresp(i).cdf]=cdfs_samp_calc(dresp(i).sample,...
+                resp,prob,rel,grel);
+        end
+    elseif strncmpi(method,'nond_l',6)
+        for i=1:length(dresp)
+            [dresp(i).cdf]=cdfs_lr_calc(dresp(i).mean,dresp(i).stddev,...
+                resp,prob,rel,grel);
+        end
+    end
+
+    varargout{1}=dresp;
+
+elseif exist('samp','var') && ~isempty(samp)
+    cdf=zeros(length(resp)+length(prob)+length(rel)+length(grel),...
+              4,size(samp,2));
+
+    for i=1:size(samp,2)
+        [cdf(:,:,i)]=cdfs_samp_calc(samp(:,i),...
+            resp,prob,rel,grel);
+    end
+
+    varargout{1}=cdf;
+
+elseif exist('mean','var'  ) && ~isempty(mean  ) && ...
+       exist('stddev','var') && ~isempty(stddev)
+    cdf=zeros(length(resp)+length(prob)+length(rel)+length(grel),...
+              4,length(mean));
+
+    for i=1:length(mean)
+        [cdf(:,:,i)]=cdfs_lr_calc(mean(i),stddev(i),...
+            resp,prob,rel,grel);
+    end
+
+    varargout{1}=cdf;
+else
+    error(['Empty data ''' inputname(2) ''' of type ''' class(varargin{2}) '''.']);
+end
+
+end
+
+%%  function to calculate the results for a sampling analysis
+
+function [cdf]=cdfs_samp_calc(samp,resp,prob,rel,grel)
+
+%  sort the samples and remove any NaN padding (should only occur at end)
+
+    samp=sort(samp(~isnan(samp(:))),'ascend');
+    nsamp=length(samp);
+
+    mu   =mean(samp);
+    sigma=std(samp);
+
+    cdf=zeros(length(resp)+length(prob)+length(rel)+length(grel),4);
+    cdf(:,:)=NaN;
+    irow=0;
+
+%  compute quantities, given response levels
+
+    for i=1:length(resp)
+        irow=irow+1;
+        indx=bin_search_val(resp(i),samp);
+        cdf(irow,1)=resp(i);
+        cdf(irow,2)=indx/nsamp;
+        cdf(irow,3)=(mu-resp(i))/sigma;
+%        cdf(irow,4)=-sqrt(2)*erfinv((indx-nsamp/2)/(nsamp/2));
+        cdf(irow,4)=sqrt(2)*erfcinv(indx/(nsamp/2));
+    end
+
+%  compute response levels, given probabilities
+
+    for i=1:length(prob)
+        irow=irow+1;
+%  why not round(prob(i)*(nsamp-1)+1)?
+        indx=ceil(prob(i)*(nsamp));
+        if     (indx < 1)
+            indx=1;
+        elseif (indx > nsamp)
+            indx=nsamp;
+        end
+        cdf(irow,1)=samp(indx);
+        cdf(irow,2)=prob(i);
+    end
+
+%  compute response levels, given reliabilities
+
+    for i=1:length(rel)
+        irow=irow+1;
+        cdf(irow,1)=mu-sigma*rel(i);
+        cdf(irow,3)=rel(i);
+    end
+
+%  compute response levels, given general reliabilities
+
+    for i=1:length(grel)
+        irow=irow+1;
+%         indx=ceil(nsamp/2+nsamp/2*erf(-grel(i)/sqrt(2)));
+        indx=ceil((nsamp/2)*erfc(grel(i)/sqrt(2)));
+        if     (indx < 1)
+            indx=1;
+        elseif (indx > nsamp)
+            indx=nsamp;
+        end
+        cdf(irow,1)=samp(indx);
+        cdf(irow,4)=grel(i);
+    end
+
+end
+
+%%  function to calculate the results for a local reliability analysis
+
+function [cdf]=cdfs_lr_calc(mu,sigma,resp,prob,rel,grel)
+
+    cdf=zeros(length(resp)+length(prob)+length(rel)+length(grel),4);
+    irow=0;
+
+%  compute quantities, given response levels
+
+    for i=1:length(resp)
+        irow=irow+1;
+        cdf(irow,1)=resp(i);
+        cdf(irow,2)=normcdf_issm(resp(i),mu,sigma);
+        cdf(irow,3)=(mu-resp(i))/sigma;
+        cdf(irow,4)=(mu-resp(i))/sigma;
+    end
+
+%  compute quantities, given probabilities
+
+    for i=1:length(prob)
+        irow=irow+1;
+        cdf(irow,1)=norminv_issm(prob(i),mu,sigma);
+        cdf(irow,2)=prob(i);
+        cdf(irow,3)=-norminv_issm(prob(i),0,1);
+        cdf(irow,4)=-norminv_issm(prob(i),0,1);
+    end
+
+%  compute quantities, given reliabilities
+
+    for i=1:length(rel)
+        irow=irow+1;
+        cdf(irow,1)=mu-sigma*rel(i);
+        cdf(irow,2)=normcdf_issm(-rel(i),0,1);
+        cdf(irow,3)=rel(i);
+        cdf(irow,4)=rel(i);
+    end
+
+%  compute quantities, given general reliabilities
+
+    for i=1:length(grel)
+        irow=irow+1;
+        cdf(irow,1)=mu-sigma*grel(i);
+        cdf(irow,2)=normcdf_issm(-grel(i),0,1);
+        cdf(irow,3)=grel(i);
+        cdf(irow,4)=grel(i);
+    end
+
+end
+%%
+%  function to perform a recursive binary search for a matrix of values
+%  in an ordered vector (loop separately outside of recursion for
+%  efficiency purposes)
+%
+%  function [ind]=bin_search(val,vect)
+%
+function [ind]=bin_search(val,vect)
+
+ind=zeros(size(val));
+
+for i=1:numel(val)
+    ind(i)=bin_search_val(val(i),vect);
+end
+
+end
+%%
+%  function to perform a recursive binary search in an ordered vector,
+%  returning low if value does not exist (more efficient than find or
+%  ismember, which must use linear searches and/or sort)
+%
+%  function [ind]=bin_search_val(val,vect)
+%
+function [ind]=bin_search_val(val,vect)
+
+imid=floor((1+length(vect))/2);
+
+if (val == vect(imid))
+    ind=imid;
+elseif (val < vect(imid))
+    if (imid > 1)
+        ind=     bin_search(val,vect(1:imid-1));
+    else
+        ind=0;
+    end
+elseif (val > vect(imid))
+    if (imid < length(vect))
+        ind=imid+bin_search(val,vect(imid+1:length(vect)));
+    else
+        ind=length(vect);
+    end
+else
+    ind=NaN;
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_in_data.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_in_data.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_in_data.m	(revision 21239)
@@ -0,0 +1,122 @@
+%
+%  define the data to write the dakota .in and .m files.
+%
+%  []=dakota_in_data(dmeth,variables,responses,dparams,filei,varargin)
+%
+%  where the required input is:
+%    dmeth         (dakota_method, method class object)
+%    variables     (structure array, variable class objects)
+%    responses     (structure array, response class objects)
+%    dparams       (structure array, method-independent parameters)
+%    filei         (character, name of .in and .m files)
+%
+%  params may be empty, in which case defaults will be used.
+%
+%  the optional varargin are passed directly through to the
+%  QmuUpdateFunctions brancher to be used by the analysis
+%  package.  for example, this could be model information.
+%
+%  this function defines the data to write the dakota .in and
+%  .m files.  it is necessary for multiple reasons.  first,
+%  it collects the parameters and applies some defaults that
+%  are unique to the environment.  second, some analysis package
+%  variables and/or responses may be treated differently by
+%  dakota.  for example, an analysis package variable may be
+%  defined as an array, so the QmuSetupDesign brancher will
+%  create dakota variables for each element of the array.
+%  finally it calls the functions to write the .in and .m files.
+%  this function is independent of the particular analysis
+%  package.
+%
+%  this data would typically be generated by a matlab script
+%  for a specific model, using the method, variable, and
+%  response class objects.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=dakota_in_data(dmeth,variables,responses,dparams,filei,varargin)
+
+if ~nargin
+    help dakota_in_data
+    return
+end
+
+%%  parameters
+
+%  get default set of parameters
+
+params=dakota_in_params(struct());
+
+%  merge specified parameters into default set, whether or not
+%  they already exist
+
+fnames=fieldnames(dparams);
+
+for i=1:numel(fnames)
+    if ~isfield(params,fnames{i})
+        warning('dakota_in_data:unknown_param',...
+            'No parameter ''%s'' in default parameter set.',...
+            fnames{i});
+    end
+    params.(fnames{i})=dparams.(fnames{i});
+end
+
+if params.direct && ...
+   isempty(params.analysis_driver)
+    params.analysis_driver='matlab';
+end
+
+if strcmpi(params.analysis_driver,'matlab') && ...
+   isempty(params.analysis_components)
+    [pathstr,name,ext] = fileparts(filei);
+    params.analysis_components=fullfile(pathstr,[name '.m']);
+end
+
+%  merge method parameters, though they shouldn't be in dparams
+
+% dmeth=dmeth_params_merge(dmeth,dparams)
+
+%%  variables
+
+fnames=fieldnames(variables);
+
+for i=1:length(fnames)
+
+%  currently all variable types can just be copied
+	dvar.(fnames{i})=variables.(fnames{i});
+
+end
+
+%%  responses
+
+fnames=fieldnames(responses);
+
+for i=1:length(fnames)
+%     fhandle=str2func([class(responses.(fnames{i})) '.empty']);
+%     dresp.(fnames{i})=fhandle();
+%     for j=1:length(responses.(fnames{i}))
+%         dresp.(fnames{i})(j)=responses.(fnames{i})(j);
+%     end
+
+%  currently all response types can just be copied
+
+    dresp.(fnames{i})=responses.(fnames{i});
+end
+
+%%  write files
+
+%Write in file
+dakota_in_write(dmeth,dvar,dresp,params,filei,varargin{:});
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_in_params.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_in_params.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_in_params.m	(revision 21239)
@@ -0,0 +1,215 @@
+%
+%  populate a Dakota parameter structure.
+%
+%  [params]=dakota_in_params(params)
+%
+%  where the optional input is:
+%    params        (structure array, method-independent parameters)
+%
+%  and the output is the same.
+%
+%  this function takes a structure of method-independent dakota
+%  parameters, which may be empty, and adds default parameters
+%  for those parameters which do not exist.
+%
+%  the field names of the structure are identical to the dakota
+%  parameter names (and are in fact used to write them to the
+%  files).  logical values are used for parameters which have
+%  no associated data and are determined only by their presence
+%  or absence.
+%
+%  note that the method-dependent parameters are contained in
+%  the dakota_method class object.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function [params]=dakota_in_params(params)
+
+if ~nargin
+    help dakota_in_params
+    return
+end
+
+%%  process the input parameters
+
+if ~exist('params','var')
+    params=struct();
+end
+
+%%  strategy section
+
+if ~isfield(params,'graphics')
+    params.graphics=false;
+end
+if ~isfield(params,'tabular_graphics_data')
+    params.tabular_graphics_data=false;
+end
+% could use unique file name rather than 'dakota_tabular.dat'
+if ~isfield(params,'tabular_graphics_file')
+    params.tabular_graphics_file=false;
+end
+
+%%  method section
+
+%  nearly all method parameters are in the dakota_method class
+%  or result from the response level lists
+
+if ~isfield(params,'compute')
+    params.compute='probabilities';
+end
+if ~isfield(params,'distribution')
+    params.distribution='cumulative';
+end
+
+%%  model section
+
+%%  interface section
+
+if ~isfield(params,'system')
+    params.system=false;
+end
+if ~isfield(params,'fork')
+    params.fork=false;
+end
+if ~isfield(params,'direct')
+    params.direct=false;
+end
+
+%  interface parallelism controls
+
+if ~isfield(params,'asynchronous')
+    params.asynchronous=true;
+end
+if ~isfield(params,'evaluation_concurrency')
+    params.evaluation_concurrency=false;
+end
+if ~isfield(params,'analysis_concurrency')
+    params.analysis_concurrency=false;
+end
+if ~isfield(params,'evaluation_servers')
+    params.evaluation_servers=false;
+end
+if ~isfield(params,'evaluation_self_scheduling')
+    params.evaluation_self_scheduling=false;
+end
+if ~isfield(params,'evaluation_static_scheduling')
+	params.evaluation_static_scheduling=true;
+end
+if ~isfield(params,'evaluation_scheduling')
+	params.evaluation_scheduling=false;
+end
+if ~isfield(params,'processors_per_evaluation')
+	params.processors_per_evaluation=false;
+end
+if ~isfield(params,'analysis_servers')
+    params.analysis_servers=false;
+end
+if ~isfield(params,'analysis_self_scheduling')
+    params.analysis_self_scheduling=false;
+end
+if ~isfield(params,'analysis_static_scheduling')
+    params.analysis_static_scheduling=false;
+end
+
+%  algebraic mappings
+
+if ~isfield(params,'algebraic_mappings')
+    params.algebraic_mappings=false;
+end
+
+%  simulation interface controls
+
+if ~isfield(params,'analysis_driver')
+    params.analysis_driver='';
+end
+if ~isfield(params,'analysis_components')
+    params.analysis_components='';
+end
+if ~isfield(params,'input_filter')
+    params.input_filter='';
+end
+if ~isfield(params,'output_filter')
+    params.output_filter='';
+end
+
+if ~isfield(params,'failure_capture')
+    params.failure_capture='abort';
+end
+if ~isfield(params,'deactivate')
+    params.deactivate='evaluation_cache restart_file';
+end
+
+%  system call or fork interface
+
+if ~isfield(params,'parameters_file')
+    params.parameters_file='params.in';
+end
+if ~isfield(params,'results_file')
+    params.results_file='results.out';
+end
+if ~isfield(params,'verbatim')
+    params.verbatim=false;
+end
+if ~isfield(params,'aprepro')
+    params.aprepro=false;
+end
+if ~isfield(params,'file_tag')
+    params.file_tag=true;
+end
+if ~isfield(params,'file_save')
+    params.file_save=true;
+end
+
+%  direct function interface
+
+if ~isfield(params,'processors_per_analysis')
+    params.processors_per_analysis=false;
+end
+
+%%  responses section
+
+if ~isfield(params,'numerical_gradients')
+    params.numerical_gradients=false;
+end
+if ~isfield(params,'method_source')
+    params.method_source='dakota';
+end
+if ~isfield(params,'interval_type')
+    params.interval_type='forward';
+end
+if ~isfield(params,'fd_gradient_step_size')
+    params.fd_gradient_step_size=0.001;
+end
+if ~isfield(params,'analytic_gradients')
+    params.analytic_gradients=false;
+end
+%  mixed_gradients not fully implemented
+if ~isfield(params,'mixed_gradients')
+    params.mixed_gradients=false;
+end
+if ~isfield(params,'id_analytic_gradients')
+    params.id_analytic_gradients=false;
+end
+if ~isfield(params,'id_numerical_gradients')
+    params.id_numerical_gradients=false;
+end
+%  hessians not fully implemented
+if ~isfield(params,'numerical_hessians')
+    params.numerical_hessians=true;
+end
+if ~isfield(params,'hessian_gradient_step_size')
+    params.hessian_gradient_step_size=0.001;
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_in_parse.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_in_parse.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_in_parse.m	(revision 21239)
@@ -0,0 +1,803 @@
+%
+%  read a Dakota .in input file and parse it.
+%
+%  [method,dvar,dresp]=dakota_in_parse(filei)
+%
+%  where the required input is:
+%    filei         (character, name of .in file)
+%
+%  the required output is:
+%    method        (character, dakota method name)
+%    dvar          (structure array, variables)
+%    dresp         (structure array, responses)
+%
+%  the filei will be prompted if empty.  the fields of dvar and
+%  dresp are particular to the data contained within the file.
+%
+%  this function reads a dakota .in input file and parses it
+%  into the matlab workspace.  it operates in a content-driven
+%  fashion, where it parses whatever input data it encounters
+%  in the file, rather than searching for data based on the
+%  particular method.  (this makes it independent of method.)
+%
+%  as of now, parameters are generally not parsed.  also, the
+%  variable and response classes are not used for output.
+%
+%  this data would typically be used for modifying and submitting
+%  a subsequent dakota run.  it could also be used with output
+%  data for post-processing or annotation purposes.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function [method,dvar,dresp]=dakota_in_parse(filei)
+
+if ~nargin
+    help dakota_in_parse
+    return
+end
+
+if ~exist('filei' ,'var') || isempty(filei)
+    filei=input('Input file?  ','s');
+end
+fidi=fopen(sprintf('%s',filei),'r');
+if (fidi < 0)
+    error('%s could not be opened.',filei);
+end
+
+%%  loop through the file to find the Dakota method
+
+method=[];
+fseek(fidi,0,'bof');
+[fline]=findline(fidi,'method');
+if ~ischar(fline)
+    return
+end
+
+[ntokens,tokens]=fltokens(fline);
+itoken=1;
+[tokens,itoken]=nextkey(fidi,tokens,itoken);
+method=tokens{1}{itoken};
+display(sprintf('Dakota method=%s.',method));
+
+%%  loop through the file to find the Dakota variables
+
+fseek(fidi,0,'bof');
+[fline]=findline(fidi,'variables');
+if ~ischar(fline)
+    error('No Dakota variables in file %s.',filei);
+end
+
+[ntokens,tokens]=fltokens(fline);
+itoken=1;
+[dvar]=variables_parse(fidi,tokens,itoken);
+
+%%  loop through the file to find the Dakota responses
+
+fseek(fidi,0,'bof');
+[fline]=findline(fidi,'responses');
+if ~ischar(fline)
+    error('No Dakota responses in file %s.',filei);
+end
+
+[ntokens,tokens]=fltokens(fline);
+itoken=1;
+[dresp]=responses_parse(fidi,tokens,itoken);
+
+%%  loop through the file to find the Dakota response and probability levels
+%   (even though they're in method section, process after responses)
+
+fseek(fidi,0,'bof');
+[fline]=findline(fidi,'method');
+
+[ntokens,tokens]=fltokens(fline);
+itoken=1;
+[dresp]=resplevels(fidi,tokens,itoken,dresp);
+
+%%  loop through the file to verify the end
+
+display('End of file successfully reached.');
+fclose(fidi);
+
+end
+
+%%  function to parse the dakota variables
+
+function [dvar]=variables_parse(fidi,tokens,itoken)
+
+display('Reading Dakota variables.');
+dvar=[];
+ncdv=0;
+nnuv=0;
+ncsv=0;
+
+%  read next keyword
+
+[tokens,itoken]=nextkey(fidi,tokens,itoken);
+if ~itoken
+    warning('variables_parse:empty',...
+        'Dakota variables section is empty.');
+end
+
+%  process current keyword
+%  (note that this is using dakota 4.1 keywords.  dakota 4.2
+%  keywords are order-dependent.)
+
+while itoken
+    keyword=tokens{1}{itoken};
+    display(sprintf('  Dakota keyword=%s.',keyword));
+
+%  switch according to the keyword
+
+    switch lower(keyword)
+        case 'continuous_design'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            ncdv=tlist;
+            dvar.cdv=[];
+            display(sprintf('    Number of Dakota %s variables=%d.',...
+                    'continuous_design',ncdv));
+        case 'cdv_initial_point'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.cdv(i).initpt    =tlist(i);
+            end
+        case 'cdv_lower_bounds'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.cdv(i).lower     =tlist(i);
+            end
+        case 'cdv_upper_bounds'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.cdv(i).upper     =tlist(i);
+            end
+        case 'cdv_descriptors'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.cdv(i).descriptor=char(tlist(i));
+            end
+
+        case 'normal_uncertain'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nnuv=tlist;
+            dvar.nuv=[];
+            display(sprintf('    Number of Dakota %s variables=%d.',...
+                    'normal_uncertain',nnuv));
+        case 'nuv_means'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.nuv(i).mean      =tlist(i);
+            end
+        case 'nuv_std_deviations'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.nuv(i).stddev    =tlist(i);
+            end
+        case 'nuv_lower_bounds'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.nuv(i).lower     =tlist(i);
+            end
+        case 'nuv_upper_bounds'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.nuv(i).upper     =tlist(i);
+            end
+        case 'nuv_descriptors'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.nuv(i).descriptor=char(tlist(i));
+            end
+
+        case 'continuous_state'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            ncsv=tlist;
+            dvar.csv=[];
+            display(sprintf('    Number of Dakota %s variables=%d.',...
+                    'continuous_state',ncsv));
+        case 'csv_initial_state'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.csv(i).initst    =tlist(i);
+            end
+        case 'csv_lower_bounds'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.csv(i).lower     =tlist(i);
+            end
+        case 'csv_upper_bounds'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.csv(i).upper     =tlist(i);
+            end
+        case 'csv_descriptors'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.csv(i).descriptor=char(tlist(i));
+            end
+
+        otherwise
+            warning('variables_parse:unrec_key',...
+                'Unrecognized keyword ''%s''.',keyword);
+            [tokens,itoken]=nextkey(fidi,tokens,itoken);
+    end
+
+%  check for eof or start of new section
+
+    if (~itoken) || ...
+       strncmpi(tokens{1}{itoken},'strategy' ,8) || ...
+       strncmpi(tokens{1}{itoken},'method'   ,6) || ...
+       strncmpi(tokens{1}{itoken},'model'    ,5) || ...
+       strncmpi(tokens{1}{itoken},'variables',9) || ...
+       strncmpi(tokens{1}{itoken},'interface',9) || ...
+       strncmpi(tokens{1}{itoken},'responses',9)
+
+%  supply default descriptors if necessary
+
+        if isfield(dvar,'cdv') && ~isfield(dvar.cdv,'descriptor')
+            for i=1:ncdv
+                dvar.cdv(i).descriptor=sprintf('cdv_%d',i);
+            end
+        end
+        if isfield(dvar,'nuv') && ~isfield(dvar.nuv,'descriptor')
+            for i=1:nnuv
+                dvar.nuv(i).descriptor=sprintf('nuv_%d',i);
+            end
+        end
+        if isfield(dvar,'csv') && ~isfield(dvar.csv,'descriptor')
+            for i=1:ncsv
+                dvar.csv(i).descriptor=sprintf('csv_%d',i);
+            end
+        end
+        return;
+    end
+end
+
+end
+
+%%  function to parse the dakota responses
+
+function [dresp]=responses_parse(fidi,tokens,itoken)
+
+display('Reading Dakota responses.');
+dresp=[];
+nof =0;
+nlst=0;
+nnic=0;
+nnec=0;
+nrf =0;
+
+%  read next keyword
+
+[tokens,itoken]=nextkey(fidi,tokens,itoken);
+if ~itoken
+    warning('responses_parse:empty',...
+        'Dakota responses section is empty.');
+end
+
+%  process current keyword
+
+while itoken
+    keyword=tokens{1}{itoken};
+    display(sprintf('  Dakota keyword=%s.',keyword));
+
+%  switch according to the keyword
+
+    switch lower(keyword)
+        case 'num_objective_functions'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nof =tlist;
+            dresp.of =[];
+            display(sprintf('    Number of Dakota %s=%d.',...
+                    'objective_functions',nof));
+        case 'objective_function_scale_types'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.of(i).scale_type=char(tlist(i));
+            end
+        case 'objective_function_scales'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.of(i).scale     =tlist(i);
+            end
+        case 'multi_objective_weights'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.of(i).weight    =tlist(i);
+            end
+
+        case 'num_least_squares_terms'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nlst=tlist;
+            dresp.lst=[];
+            display(sprintf('    Number of Dakota %s=%d.',...
+                    'least_squares_terms',nlst));
+        case 'least_squares_term_scale_types'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.lst(i).scale_type=char(tlist(i));
+            end
+        case 'least_squares_term_scales'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.lst(i).scale     =tlist(i);
+            end
+        case 'least_squares_weights'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.lst(i).weight    =tlist(i);
+            end
+
+        case 'num_nonlinear_inequality_constraints'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nnic=tlist;
+            dresp.nic=[];
+            display(sprintf('    Number of Dakota %s=%d.',...
+                    'nonlinear_inequality_constraints',nnic));
+        case 'nonlinear_inequality_scale_types'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.nic(i).scale_type=char(tlist(i));
+            end
+        case 'nonlinear_inequality_scales'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.nic(i).scale     =tlist(i);
+            end
+        case 'nonlinear_inequality_lower_bounds'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.nic(i).lower     =tlist(i);
+            end
+        case 'nonlinear_inequality_upper_bounds'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.nic(i).upper     =tlist(i);
+            end
+
+        case 'num_nonlinear_equality_constraints'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nnec=tlist;
+            dresp.nec=[];
+            display(sprintf('    Number of Dakota %s=%d.',...
+                    'nonlinear_equality_constraints',nnec));
+        case 'nonlinear_equality_scale_types'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.nec(i).scale_type=char(tlist(i));
+            end
+        case 'nonlinear_equality_scales'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.nec(i).scale     =tlist(i);
+            end
+        case 'nonlinear_equality_targets'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.nec(i).target    =tlist(i);
+            end
+
+        case 'num_response_functions'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nrf =tlist;
+            dresp.rf =[];
+            display(sprintf('    Number of Dakota %s=%d.',...
+                    'response_functions',nrf));
+
+        case 'response_descriptors'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            desc=tlist;
+        otherwise
+            warning('responses_parse:unrec_key',...
+                'Unrecognized keyword ''%s''.',keyword);
+            [tokens,itoken]=nextkey(fidi,tokens,itoken);
+    end
+
+%  check for eof or start of new section
+
+    if (~itoken) || ...
+       strncmpi(tokens{1}{itoken},'strategy' ,8) || ...
+       strncmpi(tokens{1}{itoken},'method'   ,6) || ...
+       strncmpi(tokens{1}{itoken},'model'    ,5) || ...
+       strncmpi(tokens{1}{itoken},'variables',9) || ...
+       strncmpi(tokens{1}{itoken},'interface',9) || ...
+       strncmpi(tokens{1}{itoken},'responses',9)
+
+%  assign specified or supply default descriptors
+
+        if exist('desc','var')
+            idesc=0;
+            if isfield(dresp,'of' )
+                for i=1:nof
+                    idesc=idesc+1;
+                    dresp.of(i).descriptor=char(desc(idesc));
+                end
+            end
+            if isfield(dresp,'lst')
+                for i=1:nlst
+                    idesc=idesc+1;
+                    dresp.lst(i).descriptor=char(desc(idesc));
+                end
+            end
+            if isfield(dresp,'nic')
+                for i=1:nnic
+                    idesc=idesc+1;
+                    dresp.nic(i).descriptor=char(desc(idesc));
+                end
+            end
+            if isfield(dresp,'nec')
+                for i=1:nnec
+                    idesc=idesc+1;
+                    dresp.nec(i).descriptor=char(desc(idesc));
+                end
+            end
+            if isfield(dresp,'rf' )
+                for i=1:nrf
+                    idesc=idesc+1;
+                    dresp.rf(i).descriptor=char(desc(idesc));
+                end
+            end
+
+        else
+            if isfield(dresp,'of' )
+                for i=1:nof
+                    dresp.of(i).descriptor=sprintf('obj_fn_%d',i);
+                end
+            end
+            if isfield(dresp,'lst')
+                for i=1:nlst
+                    dresp.lst(i).descriptor=sprintf('least_sq_term_%d',i);
+                end
+            end
+            if isfield(dresp,'nic')
+                for i=1:nnic
+                    dresp.nic(i).descriptor=sprintf('nln_ineq_con_%d',i);
+                end
+            end
+            if isfield(dresp,'nec')
+                for i=1:nnec
+                    dresp.nec(i).descriptor=sprintf('nln_eq_con_%d',i);
+                end
+            end
+            if isfield(dresp,'rf' )
+                for i=1:nrf
+                    dresp.rf(i).descriptor=sprintf('response_fn_%d',i);
+                end
+            end
+        end
+        return;
+    end
+end
+
+end
+
+%%  function to read the number and levels of responses
+
+function [dresp]=resplevels(fidi,tokens,itoken,dresp)
+
+display('Reading Dakota response levels.');
+
+%  read next keyword
+
+[tokens,itoken]=nextkey(fidi,tokens,itoken);
+if ~itoken
+    warning('resplevels:empty',...
+        'Dakota method section is empty.');
+end
+
+%  process current keyword
+
+while itoken
+    keyword=tokens{1}{itoken};
+    display(sprintf('  Dakota keyword=%s.',keyword));
+
+%  switch according to the keyword
+
+    switch lower(keyword)
+        case 'nond_sampling'
+            [tokens,itoken]=nextkey(fidi,tokens,itoken);
+        case 'nond_local_reliability'
+            [tokens,itoken]=nextkey(fidi,tokens,itoken);
+        case 'num_response_levels'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nresp=tlist;
+        case 'response_levels'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nrespl=tlist;
+        case 'num_probability_levels'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nprob=tlist;
+        case 'probability_levels'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nprobl=tlist;
+        case 'num_reliability_levels'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nrel =tlist;
+        case 'reliability_levels'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nrell =tlist;
+        case 'num_gen_reliability_levels'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            ngrel=tlist;
+        case 'gen_reliability_levels'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            ngrell=tlist;
+        case 'compute'
+            [tokens,itoken]=nexttoken(fidi,tokens,itoken);
+            [tokens,itoken]=nextkey(fidi,tokens,itoken);
+        otherwise
+            warning('resplevels:unrec_key',...
+                'Unrecognized keyword ''%s''.',keyword);
+            [tokens,itoken]=nextkey(fidi,tokens,itoken);
+    end
+
+%  check for eof or start of new section
+
+    if (~itoken) || ...
+       strncmpi(tokens{1}{itoken},'strategy' ,8) || ...
+       strncmpi(tokens{1}{itoken},'method'   ,6) || ...
+       strncmpi(tokens{1}{itoken},'model'    ,5) || ...
+       strncmpi(tokens{1}{itoken},'variables',9) || ...
+       strncmpi(tokens{1}{itoken},'interface',9) || ...
+       strncmpi(tokens{1}{itoken},'responses',9)
+
+%  assemble the lists by response
+
+        if exist('nrespl','var') && isfield(dresp,'rf')
+            if ~exist('nresp','var')
+                nresp(1:length(dresp.rf))=floor(length(nrespl)/length(dresp.rf));
+            end
+            ilist=1;
+            for i=1:length(dresp.rf)
+                dresp.rf(i).respl=nrespl(ilist:ilist+nresp(i)-1);
+                ilist=ilist+nresp(i);
+            end
+        end
+
+        if exist('nprobl','var') && isfield(dresp,'rf')
+            if ~exist('nprob','var')
+                nprob(1:length(dresp.rf))=floor(length(nprobl)/length(dresp.rf));
+            end
+            ilist=1;
+            for i=1:length(dresp.rf)
+                dresp.rf(i).probl=nprobl(ilist:ilist+nprob(i)-1);
+                ilist=ilist+nprob(i);
+            end
+        end
+
+        if exist('nrell' ,'var') && isfield(dresp,'rf')
+            if ~exist('nrel' ,'var')
+                nrel (1:length(dresp.rf))=floor(length(nrell )/length(dresp.rf));
+            end
+            ilist=1;
+            for i=1:length(dresp.rf)
+                dresp.rf(i).rell =nrell (ilist:ilist+nrel (i)-1);
+                ilist=ilist+nrel (i);
+            end
+        end
+
+        if exist('ngrell','var') && isfield(dresp,'rf')
+            if ~exist('ngrel','var')
+                ngrel(1:length(dresp.rf))=floor(length(ngrell)/length(dresp.rf));
+            end
+            ilist=1;
+            for i=1:length(dresp.rf)
+                dresp.rf(i).grell=ngrell(ilist:ilist+ngrel(i)-1);
+                ilist=ilist+ngrel(i);
+            end
+        end
+
+        return;
+    end
+end
+
+end
+
+%%  function to find the next keyword
+
+function [tokens,itoken]=nextkey(fidi,tokens,itoken)
+
+%  start with next token
+
+[tokens,itoken]=nexttoken(fidi,tokens,itoken);
+if ~itoken
+    return;
+end
+
+%  check for equal sign and skip subsequent list
+
+if (itoken <= length(tokens{1})) && ...
+   strncmp(tokens{1}{itoken},'=',1)
+    [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+end
+
+end
+
+%%  function to find the next token
+
+function [tokens,itoken]=nexttoken(fidi,tokens,itoken)
+
+%  start with next token
+
+itoken=itoken+1;
+
+%  read next line if necessary
+
+if (itoken > length(tokens{1}))
+    fline=readline(fidi);
+    if isempty(fline)
+        tokens={};
+        itoken=0;
+        return;
+    end
+    [ntokens,tokens]=fltokens(fline);
+    itoken=1;
+end
+
+end
+
+%%  function to read a list of tokens
+
+function [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken)
+
+%  start with next token (which should be equal sign, unless
+%  equal sign was already read to determine existence of list)
+
+itoken=itoken+1;
+
+%  read next line if necessary
+
+if (itoken > length(tokens{1}))
+    fline=readline(fidi);
+    if isempty(fline)
+        tokens={};
+        itoken=0;
+        return;
+    end
+    [ntokens,tokens]=fltokens(fline);
+    itoken=1;
+end
+
+%  check for equal sign and skip
+
+if strncmp(tokens{1}{itoken},'=',1)
+    itoken=itoken+1;
+end
+
+ilist=0;
+
+%  accumulate list until non-numeric and non-quoted-string (or eof)
+%  is encountered
+
+while 1
+    for i=itoken:length(tokens{1})
+        if isnumeric(tokens{1}{i})
+            ilist=ilist+1;
+            tlist(ilist)=tokens{1}{i};
+        elseif ischar(tokens{1}{i}) && ...
+               (strncmp(tokens{1}{i}(1)  ,'''',1) && ...
+                strncmp(tokens{1}{i}(end),'''',1)) || ...
+               (strncmp(tokens{1}{i}(1)  ,'"',1) && ...
+                strncmp(tokens{1}{i}(end),'"',1))
+            ilist=ilist+1;
+            tlist(ilist)=cellstr(tokens{1}{i}(2:end-1));
+        else
+            itoken=i;
+            return
+        end
+    end
+    fline=readline(fidi);
+    if isempty(fline)
+        tokens={};
+        itoken=0;
+        return;
+    end
+    [ntokens,tokens]=fltokens(fline);
+    itoken=1;
+end
+
+end
+
+%%  function to find a file line starting with a specified string
+
+function [fline]=findline(fidi,string)
+
+ipos=ftell(fidi);
+
+while 1
+    fline=readline(fidi);
+    if isempty(fline)
+        break;
+    else
+        if (strncmpi(fline,string,length(string)))
+            return;
+        end
+    end
+end
+
+%  issue warning and reset file position
+
+warning('findline:str_not_found',...
+    'String ''%s'' not found in file.',string);
+fseek(fidi,ipos,'bof');
+
+end
+
+%%  function to read a file line ignoring comments and blanks
+
+function [fline]=readline(fidi)
+
+while 1
+    fline=fgetl(fidi);
+    if ~ischar(fline)
+        fline=[];
+        return;
+    end
+
+    for ichar=1:length(fline)
+        if ~strncmp(fline(ichar),' ',1) && ...
+           ~strncmp(fline(ichar),'	',1)
+            break;
+        end
+    end
+    if isempty(fline) || ...
+       (ichar > length(fline)) || ...
+       strncmp(fline(ichar),'#',1)
+        continue;
+    else
+        return;
+    end
+end
+
+end
+
+%%  function to parse a file line into tokens
+
+function [ntokens,tokens]=fltokens(fline)
+
+if ~ischar(fline)
+    ntokens=-1;
+    tokens={};
+    return;
+end
+if isempty(fline)
+    ntokens=0;
+    tokens={};
+    return;
+end
+
+strings=textscan(fline,'%s','delimiter',' :,');
+%for i=1:length(strings{1})
+%    display(sprintf('i=%d; strings{1}{%d}=%s',i,i,strings{1}{i}))
+%end
+ntokens=0;
+tokens{1}{length(strings)}='';
+
+for i=1:length(strings{1})
+    if isempty(strings{1}{i})
+        continue
+    end
+    ntokens=ntokens+1;
+    inum=sscanf(strings{1}{i},'%f');
+    if isempty(inum)
+        tokens{1}{ntokens}=strings{1}{i};
+%         display(sprintf('i=%d; tokens{1}{%d}=%s',...
+%             i,ntokens,tokens{1}{ntokens}))
+    else
+        tokens{1}{ntokens}=inum;
+%         display(sprintf('i=%d; tokens{1}{%d}=%f',...
+%             i,ntokens,tokens{1}{ntokens}))
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_in_write.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_in_write.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_in_write.m	(revision 21239)
@@ -0,0 +1,346 @@
+%
+%  write a Dakota .in input file.
+%
+%  []=dakota_in_write(method,dvar,dresp,params,filei,varargin)
+%  []=dakota_in_write(dmeth ,dvar,dresp,params,filei,varargin)
+%
+%  where the required input is:
+%    method        (character, dakota method name)
+%    dmeth         (dakota_method, method class object)
+%    dvar          (structure array, variable class objects)
+%    dresp         (structure array, response class objects)
+%    params        (structure array, method-independent parameters)
+%    filei         (character, name of .in file)
+%
+%  the method and filei will be prompted if empty.  params
+%  may be empty, in which case defaults will be used.
+%
+%  the optional varargin are not yet used.
+%
+%  this function writes a dakota .in input file to be used
+%  by dakota.  this file is independent of the particular
+%  analysis package.
+%
+%  this data would typically be generated by a matlab script
+%  for a specific model, using the method, variable, and
+%  response class objects.  this function may be called by
+%  dakota_in_data.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=dakota_in_write(method,dvar,dresp,params,filei,varargin)
+
+if ~nargin
+    help dakota_in_write
+    return
+end
+
+%  process the input parameters
+
+if ~exist('method','var') || isempty(method)
+    method=input('Method?  ','s');
+end
+if     ischar(method)
+    dmeth=dakota_method(method);
+elseif isa(method,'dakota_method')
+    dmeth=method;
+else
+    error(['Method ''' inputname(1) ''' is unrecognized class ''' class(method) '''.']);
+end
+
+if ~exist('filei' ,'var') || isempty(filei)
+    filei=input('Dakota input file to write?  ','s');
+end
+[pathstr,name,ext] = fileparts(filei);
+if isempty(ext)
+% fileparts only considers '.in' to be the extension, not '.qmu.in'
+    ext='.qmu.in';
+end
+filei2=fullfile(pathstr,[name ext]);
+
+display(sprintf('Opening Dakota input file ''%s''.',filei2));
+fidi=fopen(sprintf('%s',filei2),'w');
+if (fidi < 0)
+    error('''%s'' could not be opened.',filei2);
+end
+
+if ~exist('params','var')
+    params=struct();
+end
+params=dakota_in_params(params);
+
+%  write the strategy section
+
+if IssmConfig('_DAKOTA_VERSION_') < 6,
+	strategy_write(fidi,params);
+else
+	environment_write(fidi,params);
+end
+
+%  write the method section
+
+method_write(fidi,dmeth,dresp,params);
+
+%  write the model section
+
+model_write(fidi);
+
+%  write the variables section
+
+variables_write(fidi,dmeth,dvar);
+
+%  write the interface section
+
+interface_write(fidi,params);
+
+%  write the responses section
+
+responses_write(fidi,dmeth,dresp,params);
+
+fclose(fidi);
+display('End of file successfully written.');
+
+end
+
+%%  function to write the strategy section of the file
+
+function []=strategy_write(fidi,params)
+
+display('Writing strategy section of Dakota input file.');
+
+fprintf(fidi,'strategy,\n');
+fprintf(fidi,'\tsingle_method\n\n');
+param_write(fidi,'\t  ','graphics','','\n',params);
+param_write(fidi,'\t  ','tabular_graphics_data','','\n',params);
+param_write(fidi,'\t  ','tabular_graphics_file',' ''','''\n',params);
+fprintf(fidi,'\n');
+
+end
+
+%%  function to write the environment section of the file
+
+function []=environment_write(fidi,params)
+
+	display('Writing environment section of Dakota input file.');
+
+	fprintf(fidi,'environment,\n');
+	param_write(fidi,'\t  ','graphics','','\n',params);
+	param_write(fidi,'\t  ','tabular_graphics_data','','\n',params);
+	param_write(fidi,'\t  ','tabular_graphics_file',' ''','''\n',params);
+	fprintf(fidi,'\n');
+
+end
+
+%%  function to write the method section of the file
+
+function []=method_write(fidi,dmeth,dresp,params)
+
+display('Writing method section of Dakota input file.');
+
+fprintf(fidi,'method,\n');
+fprintf(fidi,'\t%s\n',dmeth.method);
+
+dmeth_params_write(dmeth,fidi);
+
+%  write response levels
+
+if strcmp(dmeth.type,'nond')
+    for i=1:length(dmeth.responses)
+        fhresp=str2func([dmeth.responses{i} '.dakota_rlev_write']);
+        fhresp(fidi,dresp,params);
+    end
+end
+fprintf(fidi,'\n');
+
+end
+
+%%  function to write the model section of the file
+
+function []=model_write(fidi)
+
+display('Writing model section of Dakota input file.');
+
+fprintf(fidi,'model,\n');
+fprintf(fidi,'\t%s\n\n','single');
+
+end
+
+%%  function to write the variables section of the file
+
+function []=variables_write(fidi,dmeth,dvar)
+
+display('Writing variables section of Dakota input file.');
+
+fprintf(fidi,'variables,\n');
+
+%  variables vary by method
+
+for i=1:length(dmeth.variables)
+    fhvar=str2func([dmeth.variables{i} '.dakota_write']);
+    fhvar(fidi,dvar);
+end
+
+%  linear constraints vary by method
+
+for i=1:length(dmeth.lcspec)
+    fhvar=str2func([dmeth.lcspec{i}    '.dakota_write']);
+    fhvar(fidi,dvar);
+end
+
+fprintf(fidi,'\n');
+
+end
+
+%%  function to write the interface section of the file
+
+function []=interface_write(fidi,params)
+
+display('Writing interface section of Dakota input file.');
+
+fprintf(fidi,'interface,\n');
+
+if     ~params.system && ~params.fork && ~params.direct
+    params.fork=true;
+elseif (params.system+params.fork+params.direct > 1)
+    error('Too many interfaces selected.')
+end
+
+if     params.system || params.fork
+    param_write(fidi,'\t','asynchronous','','\n',params);
+    param_write(fidi,'\t  ','evaluation_concurrency',' = ','\n',params);
+    param_write(fidi,'\t  ','analysis_concurrency','   = ','\n',params);
+    param_write(fidi,'\t  ','evaluation_servers','     = ','\n',params);
+    param_write(fidi,'\t  ','evaluation_self_scheduling','','\n',params);
+    param_write(fidi,'\t  ','evaluation_static_scheduling','','\n',params);
+    param_write(fidi,'\t  ','analysis_servers','       = ','\n',params);
+    param_write(fidi,'\t  ','analysis_self_scheduling','','\n',params);
+    param_write(fidi,'\t  ','analysis_static_scheduling','','\n',params);
+    param_write(fidi,'\t','algebraic_mappings',' = ','\n',params);
+    param_write(fidi,'\t','system','','\n',params);
+    param_write(fidi,'\t','fork','','\n',params);
+    param_write(fidi,'\t  ','analysis_driver',' = ''','''\n',params);
+    if ~isempty(params.input_filter)
+        param_write(fidi,'\t  ','input_filter','    = ''','''\n',params);
+    end
+    if ~isempty(params.output_filter)
+        param_write(fidi,'\t  ','output_filter','   = ''','''\n',params);
+    end
+    param_write(fidi,'\t  ','failure_capture','   ','\n',params);
+    param_write(fidi,'\t  ','deactivate','        ','\n',params);
+    param_write(fidi,'\t  ','parameters_file',' = ''','''\n',params);
+    param_write(fidi,'\t  ','results_file','    = ''','''\n',params);
+    param_write(fidi,'\t  ','verbatim', '','\n',params);
+    param_write(fidi,'\t  ','aprepro', '','\n',params);
+    param_write(fidi,'\t  ','file_tag', '','\n',params);
+    param_write(fidi,'\t  ','file_save','','\n',params);
+elseif params.direct
+%  Error: asynchronous capability not yet supported in direct interfaces.
+%  Update: it is now possible to run in parallel in direct interfaces.
+    param_write(fidi,'\t','algebraic_mappings',' = ','\n',params);
+    param_write(fidi,'\t','direct','','\n',params);
+    param_write(fidi,'\t  ','analysis_driver','     = ''','''\n',params);
+    if IssmConfig('_DAKOTA_VERSION_') < 6,
+		param_write(fidi,'\t  ','evaluation_static_scheduling','','\n',params);
+	else
+		param_write(fidi,'\t  ','evaluation_scheduling',' ','\n',params);
+		param_write(fidi,'\t  ','processors_per_evaluation',' = ','\n',params);
+	end
+    if ~isempty(params.analysis_components)
+        [pathstr,name,ext] = fileparts(params.analysis_components);
+        if isempty(ext)
+            ext='.m';
+        end
+        params.analysis_components=fullfile(pathstr,[name ext]);
+        param_write(fidi,'\t  ','analysis_components',' = ''','''\n',params);
+    end
+    if ~isempty(params.input_filter)
+        param_write(fidi,'\t  ','input_filter','    = ''','''\n',params);
+    end
+    if ~isempty(params.output_filter)
+        param_write(fidi,'\t  ','output_filter','   = ''','''\n',params);
+    end
+    param_write(fidi,'\t  ','failure_capture','   ','\n',params);
+    param_write(fidi,'\t  ','deactivate','        ','\n',params);
+    param_write(fidi,'\t  ','processors_per_analysis',' = ''','''\n',params);
+end
+
+fprintf(fidi,'\n');
+
+end
+
+%%  function to write the responses section of the file
+
+function []=responses_write(fidi,dmeth,dresp,params)
+
+display('Writing responses section of Dakota input file.');
+
+fprintf(fidi,'responses,\n');
+
+%  functions, gradients, and hessians vary by method
+
+rdesc={};
+
+for i=1:length(dmeth.responses)
+    fhresp=str2func([dmeth.responses{i} '.dakota_write']);
+    [rdesc]=fhresp(fidi,dresp,rdesc);
+end
+
+%  write accumulated response descriptors for all response classes
+
+if ~isempty(rdesc)
+    fprintf(fidi,'\tresponse_descriptors =\n');
+    vector_write(fidi,sprintf('\t  '),rdesc,6,76);
+end
+
+ghspec_write(fidi,params,dmeth.ghspec);
+
+fprintf(fidi,'\n');
+
+end
+
+%%  function to write gradient and hessian specifications
+
+function []=ghspec_write(fidi,params,ghspec)
+
+%  gradients
+
+if ismember('grad',ghspec)
+    if     ~params.numerical_gradients && ~params.analytic_gradients
+        params.numerical_gradients=true;
+    elseif (params.numerical_gradients+params.analytic_gradients > 1)
+        error('Too many gradients selected.')
+    end
+
+    if     params.numerical_gradients
+        param_write(fidi,'\t','numerical_gradients','','\n',params);
+        param_write(fidi,'\t  ','method_source',' ','\n',params);
+        param_write(fidi,'\t  ','interval_type',' ','\n',params);
+        param_write(fidi,'\t  ','fd_gradient_step_size',' = ','\n',params);
+    elseif params.analytic_gradients
+        param_write(fidi,'\t','analytic_gradients','','\n',params);
+%     elseif params.mixed_gradients
+    end
+else
+    fprintf(fidi,'\tno_gradients\n');
+end
+
+%  hessians (no implemented methods use them yet)
+
+if ismember('hess',ghspec)
+    error('Hessians needed by method but not provided.');
+else
+    fprintf(fidi,'\tno_hessians\n');
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_m_write.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_m_write.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_m_write.m	(revision 21239)
@@ -0,0 +1,296 @@
+%
+%  write a Matlab .m function file to be called by Dakota for
+%  the Matlab direct or external driver.
+%
+%  []=dakota_m_write(method,dmeth,dvar,dresp,params,filem,package,varargin)
+%
+%  where the required input is:
+%    method        (character, dakota method name)
+%    dmeth         (dakota_method, method class object)
+%    dvar          (structure array, variable class objects)
+%    dresp         (structure array, response class objects)
+%    params        (structure array, method-independent parameters)
+%    filem         (character, name of .m file)
+%    package       (character, analysis package)
+%
+%  the method, dmeth, and filem will be prompted if empty.
+%  params may be empty, in which case defaults will be used.
+%
+%  the optional varargin are passed directly through to the
+%  QmuUpdateFunctions brancher to be used by the analysis
+%  package.  for example, this could be model information.
+%
+%  this function writes a matlab .m function file to be called
+%  by dakota for the matlab direct or external driver.  for
+%  the direct driver, dakota is linked with matlab and
+%  automatically starts a matlab session, passing the variables
+%  and responses through the function; for the external driver,
+%  dakota calls a shell script to start the matlab session,
+%  passing the variables and responses through text files.
+%  this function must be tailored to the particular analysis
+%  package.
+%
+%  this data would typically be generated by a matlab script
+%  for a specific model, using the method, variable, and
+%  response class objects.  this function may be called by
+%  dakota_in_data.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=dakota_m_write(method,dmeth,dvar,dresp,params,filem,package,varargin)
+
+if ~nargin
+    help dakota_m_write
+    return
+end
+
+%  process the input parameters
+
+if ~exist('method','var') || isempty(method)
+    method=input('Method?  ','s');
+end
+
+if ~exist('dmeth' ,'var') || isempty(dmeth)
+    dmeth=dakota_method(method);
+end
+
+if ~exist('params','var')
+    params=[];
+end
+
+if ~exist('filem' ,'var') || isempty(filem)
+    filem=input('Matlab m-file to write?  ','s');
+end
+[pathstr,name,ext,versn] = fileparts(filem);
+if isempty(ext)
+    ext='.m';
+end
+filem2=fullfile(pathstr,[name ext versn]);
+
+display(sprintf('Opening Matlab m-file ''%s''.',filem2));
+fidm=fopen(sprintf('%s',filem2),'w');
+if (fidm < 0)
+    error('''%s'' could not be opened.',filem2);
+end
+
+%  write beginning of the Matlab m-file
+
+begin_write(fidm,name,params);
+
+%  write variables into the Matlab m-file
+
+variables_write(fidm,dmeth,dvar,params,varargin{:});
+
+%  write solution into the Matlab m-file
+
+solution_write(fidm,package);
+
+%  write responses into the Matlab m-file
+
+responses_write(fidm,dmeth,params,dresp);
+
+%  write end of the Matlab m-file
+
+end_write(fidm,name,params);
+
+fclose(fidm);
+display('End of file successfully written.');
+
+end
+
+%%  function to write beginning of the Matlab m-file
+
+function []=begin_write(fidm,name,params)
+
+display('Writing beginning of Matlab m-file.');
+
+fprintf(fidm,'%%\n');
+if strcmpi(params.analysis_driver,'matlab')
+    fprintf(fidm,'%%  Run the specified input variables and return the output responses.\n');
+    fprintf(fidm,'%%\n');
+    fprintf(fidm,'function Dakota=%s(Dakota)\n\n',name);
+    fprintf(fidm,'clk=clock;\n');
+    fprintf(fidm,'cpu=cputime;\n\n');
+    fprintf(fidm,'%% Dakota\n\n');
+    fprintf(fidm,'infile=''%s'';\n','Qmu.model');
+else
+    fprintf(fidm,'%%  Run the specified input file and return the output file.\n');
+    fprintf(fidm,'%%\n');
+    fprintf(fidm,'function %s(infile,outfile)\n\n',name);
+    fprintf(fidm,'clk=clock;\n');
+    fprintf(fidm,'cpu=cputime;\n\n');
+end
+fprintf(fidm,'try\n');
+fprintf(fidm,'\tloadmodel(infile);\n\n');
+
+if strcmpi(params.analysis_driver,'matlab')
+	fprintf(fidm,'\tmd=qmuname(md,Dakota.fnEvalId);\n\n');
+else
+	fprintf(fidm,'\tmd=qmuname(md);\n\n');
+end
+
+end
+
+%%  function to write variables into the Matlab m-file
+
+function []=variables_write(fidm,dmeth,dvar,params,varargin)
+
+display('Writing variables for Matlab m-file.');
+
+fprintf(fidm,'%%  Apply the variables.\n\n');
+ixc=0;
+
+%  variables vary by method
+
+ixc=vsets_write(fidm,ixc,dvar,dmeth.variables,params,varargin{:});
+
+end
+
+%%  function to write variable sets into the Matlab m-file
+
+function [ixc]=vsets_write(fidm,ixc,dvar,variables,params,varargin)
+
+for i=1:length(variables)
+    if isfield(dvar,variables{i})
+        ixc=vlist_write(fidm,ixc,variables{i},dvar.(variables{i}),params,varargin{:});
+    end
+end
+
+end
+
+%%  function to write variable list into the Matlab m-file
+
+function [ixc]=vlist_write(fidm,ixc,vtype,dvar,params,varargin)
+
+disp(sprintf('  Writing %d %s variables.',length(dvar),class(dvar)));
+
+for i=1:length(dvar)
+
+	%first find descriptor, without sample number on it.
+	descriptor=discardnum(dvar(i).descriptor);
+
+	%is there a lock on this variable? We don't want to update the variable twice!
+	if exist([descriptor '_lock'],'var'),
+		%lock is in place, do not update! continue;
+		continue;
+	else
+		%first things first, put lock in place
+		eval([descriptor '_lock=1;']);
+
+		%now, we need a string to put in the matlab file, which will update all the variables 
+		%for  this descriptor.
+		[string,ixc]=QmuUpdateFunctions(ixc,descriptor,dvar,params,i,varargin{:});
+
+		%dump this string in the matlab file.
+        fprintf(fidm,'%s',string);
+	end
+end
+
+end
+
+%%  function to write solution into the Matlab m-file
+
+function []=solution_write(fidm,package)
+
+display('Writing solution for Matlab m-file.');
+fprintf(fidm,'%%  Run the solution.\n\n');
+
+fprintf(fidm,['\tmd=solve(md,''stressbalance'',''' package ''');\n\n']);
+
+end
+
+%%  function to write responses into the Matlab m-file
+
+function []=responses_write(fidm,dmeth,params,dresp)
+
+display('Writing responses for Matlab m-file.');
+
+fprintf(fidm,'%%  Calculate the responses.\n\n');
+ifnvals=0;
+
+if ~strcmpi(params.analysis_driver,'matlab')
+    fprintf(fidm,'\tfid=fopen(outfile,''w'');\n\n');
+end
+
+%  responses vary by method
+
+ifnvals=rsets_write(fidm,ifnvals,params,dresp,dmeth.responses);
+
+fprintf(fidm,'\n');
+if ~strcmpi(params.analysis_driver,'matlab')
+    fprintf(fidm,'\tstatus=fclose(fid);\n\n');
+end
+
+end
+
+%%  function to write response sets into the Matlab m-file
+
+function [ifnvals]=rsets_write(fidm,ifnvals,params,dresp,responses)
+
+for i=1:length(responses)
+    if isfield(dresp,responses{i})
+        ifnvals=rlist_write(fidm,ifnvals,params,responses{i},dresp.(responses{i}));
+    end
+end
+
+end
+
+%%  function to write response list into the Matlab m-file
+
+function [ifnvals]=rlist_write(fidm,ifnvals,params,rtype,dresp)
+
+disp(sprintf('  Writing %d %s responses.',length(dresp),class(dresp)));
+for i=1:length(dresp)
+    ifnvals=ifnvals+1;
+    if strcmpi(params.analysis_driver,'matlab')
+        fprintf(fidm,'\tDakota.fnVals(%d)=QmuResponseValue(md,''%s'');\n',ifnvals,dresp(i).descriptor);
+    else
+        fprintf(fidm,'\tfprintf(fid,''%%f\\n'',QmuResponseValue(md,''%s''));\n',dresp(i).descriptor);
+    end
+end
+
+end
+
+%%  function to write end of the Matlab m-file
+
+function []=end_write(fidm,name,params)
+
+display('Writing end of Matlab m-file.');
+
+fprintf(fidm,'%%  Error condition.\n\n');
+
+fprintf(fidm,'catch ME\n');
+fprintf(fidm,'\tME\n');
+fprintf(fidm,'\tfor i=1:length(ME.stack)\n');
+fprintf(fidm,'\t\tdisplay(sprintf(''    file(%%d): %%s'',  i,ME.stack(i).file));\n');
+fprintf(fidm,'\t\tdisplay(sprintf(''    name(%%d): %%s'',  i,ME.stack(i).name));\n');
+fprintf(fidm,'\t\tdisplay(sprintf(''    line(%%d): %%d\\n'',i,ME.stack(i).line));\n');
+fprintf(fidm,'\tend\n');
+if strcmpi(params.analysis_driver,'matlab')
+    fprintf(fidm,'\tDakota.failure=1;\n');
+else
+    fprintf(fidm,'\tif exist(''fid'',''var'')\n');
+    fprintf(fidm,'\t\tstatus=fclose(fid);\n');
+    fprintf(fidm,'\tend\n');
+    fprintf(fidm,'\tfid=fopen(outfile,''w'');\n');
+    fprintf(fidm,'\tfprintf(fid,''fail\\n'');\n');
+    fprintf(fidm,'\tstatus=fclose(fid);\n');
+end
+fprintf(fidm,'end\n\n');
+
+fprintf(fidm,'disp(sprintf(''%s -- %%f CPU seconds; %%f clock seconds\\n'',...\n',name);
+fprintf(fidm,'    cputime-cpu,etime(clock,clk)))\n\n');
+fprintf(fidm,'end\n\n');
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_moments.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_moments.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_moments.m	(revision 21239)
@@ -0,0 +1,147 @@
+%
+%  calculate the same moments and confidence intervals that dakota
+%  calculates for a sample.
+%
+%  [dresp                      ]=dakota_moments(dresp,alpha)
+%  [mean,stddev,meanci,stddevci]=dakota_moments(samp ,alpha)
+%
+%  the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    samp          (double array, lists of samples)
+%
+%  and the optional input is:
+%    alpha         (numeric, confidence interval of 100(1-alpha)%)
+%
+%  the required field of dresp is:
+%    sample        (double vector, list of samples)
+%
+%  the required output is:
+%    dresp         (structure array, responses)
+%      or
+%    mean          (double, mean of sample)
+%    stddev        (double, standard deviation of sample)
+%    meanci(2)     (double, confidence interval of mean)
+%    stddevci(2)   (double, confidence interval of standard deviation)
+%
+%  and the output fields of dresp are:
+%    mean          (double, mean of sample)
+%    stddev        (double, standard deviation of sample)
+%    meanci(2)     (double, confidence interval of mean)
+%    stddevci(2)   (double, confidence interval of standard deviation)
+%
+%  for each response (or column of data) in the input array, this
+%  function calculates the mean, standard deviation, and their
+%  confidence intervals for a normal distribution, the same way as
+%  dakota would.  if the input is a structure, the output is fields
+%  in the structure; if the input is an array, the output is arrays.
+%
+%  dresp data would typically be contained in the dakota tabular
+%  output file from a sampling analysis, read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function [varargout]=dakota_moments(varargin)
+
+if ~nargin
+    help dakota_moments
+    return
+end
+
+%%  process input data
+
+iarg=1;
+if     isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+elseif isnumeric(varargin{iarg})
+    samp=varargin{iarg};
+    iarg=iarg+1;
+else
+    error(['Unknown data ''' inputname(1) ''' of type ''' class(varargin{1}) '''.']);
+end
+
+if iarg <= nargin && isnumeric(varargin{iarg})
+    alpha=varargin{iarg};
+    iarg=iarg+1;
+else
+%  use dakota default of 95%
+    alpha=0.05;
+end
+
+%%  calculate the moments and confidence intervals by input type
+
+if     exist('dresp','var') && ~isempty(dresp)
+    for i=1:length(dresp)
+        [dresp(i).mean,dresp(i).stddev,...
+         dresp(i).meanci,dresp(i).stddevci]=...
+            moments_calc(dresp(i).sample,alpha);
+    end
+
+    varargout{1}=dresp;
+
+elseif exist('samp','var') && ~isempty(samp)
+    mean    =zeros(1,size(samp,2));
+    stddev  =zeros(1,size(samp,2));
+    meanci  =zeros(2,size(samp,2));
+    stddevci=zeros(2,size(samp,2));
+
+%  could do this using vector math rather than loop, but want to allow
+%  the case of differently sized samples padded by NaN's
+
+    for i=1:size(samp,2)
+        [mean(i),stddev(i),...
+         meanci(:,i),stddevci(:,i)]=...
+            moments_calc(samp(:,i),alpha);
+    end
+
+    varargout{1}=mean;
+    varargout{2}=stddev;
+    varargout{3}=meanci;
+    varargout{4}=stddevci;
+else
+    error(['Empty data ''' inputname(1) ''' of type ''' class(varargin{1}) '''.']);
+end
+
+end
+
+%%  function to calculate the results
+
+function [mu,sigma,muci,sigmaci]=moments_calc(samp,alpha)
+
+%  remove any NaN padding (should only occur at end)
+
+    samp=samp(~isnan(samp(:)));
+    nsamp=length(samp);
+    prob=1-alpha/2;
+
+%  could use Matlab normfit, but make calculations explicit
+%     [mu,sigma,muci,sigmaci]=normfit(samp,alpha);
+
+    mu   =mean(samp);
+    sigma=std(samp);
+
+	try
+        muci(1,1)   =mu-tinv(prob,nsamp-1)*sigma/sqrt(nsamp);
+        muci(2,1)   =mu+tinv(prob,nsamp-1)*sigma/sqrt(nsamp);
+        sigmaci(1,1)=sigma*sqrt((nsamp-1)/chi2inv(prob  ,nsamp-1));
+        sigmaci(2,1)=sigma*sqrt((nsamp-1)/chi2inv(1-prob,nsamp-1));
+	catch me
+        muci(1,1)   =mu;
+        muci(2,1)   =mu;
+        sigmaci(1,1)=sigma;
+        sigmaci(2,1)=sigma;
+	end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_out_parse.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_out_parse.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_out_parse.m	(revision 21239)
@@ -0,0 +1,1025 @@
+%
+%  read a Dakota .out or .dat output file and parse it.
+%
+%  [method,dresp,scm,pcm,srcm,prcm]=dakota_out_parse(filei)
+%
+%  where the required input is:
+%    filei         (character, name of .out file)
+%
+%  the required output is:
+%    method        (character, dakota method name)
+%    dresp         (structure array, responses)
+%
+%  and the optional output is:
+%    scm           (double array, simple correlation matrix)
+%    pcm           (double array, partial correlation matrix)
+%    srcm          (double array, simple rank correlation matrix)
+%    prcm          (double array, partial rank correlation matrix)
+%
+%  the filei will be prompted if empty.  the fields of dresp
+%  are particular to the data contained within the file.  the
+%  scm, pcm, srcm, and prcm are output by dakota only for the
+%  sampling methods.
+%
+%  this function reads a dakota .out output file and parses it
+%  into the matlab workspace.  it operates in a content-driven
+%  fashion, where it skips the intermediate data and then parses
+%  whatever output data it encounters in the order in which it
+%  exists in the file, rather than searching for data based on
+%  the particular method.  (this makes it independent of method.)
+%  it also can read and parse the .dat tabular_output file.
+%
+%  this data would typically be used for plotting and other
+%  post-processing within matlab or excel.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function [method,dresp,scm,pcm,srcm,prcm]=dakota_out_parse(filei)
+
+if ~nargin
+    help dakota_out_parse
+    return
+end
+
+if ~exist('filei' ,'var') || isempty(filei)
+    filei=input('Input file?  ','s');
+end
+fidi=fopen(sprintf('%s',filei),'r');
+if (fidi < 0)
+    error('''%s'' could not be opened.',filei);
+end
+
+%%  check the first line for the Dakota tabular output file
+
+method=[];
+fline=fgetl(fidi);
+if ~ischar(fline)
+    error('File ''%s'' is empty.',filei);
+end
+
+if strncmpi(fline,'%eval_id',8)
+    method='unknown';
+    [dresp]=dak_tab_out(fidi,fline);
+    return
+else
+    fseek(fidi,0,'bof');
+end
+
+%%  loop through the file to find the Dakota method name
+
+[fline]=findline(fidi,'methodName = ');
+if ~ischar(fline)
+	%do nothing
+else
+	% display(['  ' deblank(fline)]);
+
+	[ntokens,tokens]=fltokens(fline);
+	method=tokens{1}{3};
+	display(sprintf('Dakota methodName=''%s''.',method));
+end
+
+dresp=struct([]);
+scm =struct([]);
+pcm =struct([]);
+srcm=struct([]);
+prcm=struct([]);
+
+%%  loop through the file to find the function evaluation summary
+
+fline='';
+[nfeval]=nfeval_read(fidi,fline);
+fline=fgetl(fidi);
+
+%%  process each results section based on content of the file
+
+while ischar(fline)
+%     ipos=ftell(fidi);
+    if     isempty(fline)
+    elseif strncmp(fline,'<<<<< Function evaluation summary',33)
+        [nfeval]=nfeval_read(fidi,fline);
+    elseif strncmp(fline,'Statistics based on ',20)
+        [nsamp]=nsamp_read(fidi,fline);
+    elseif strncmp(fline,'Moments for each response function',34)
+        [dresp]=moments_read(fidi,dresp,fline);
+    elseif strncmp(fline,'Moment-based statistics for each response function',50)
+        [dresp]=mbstats_read(fidi,dresp,fline);
+    elseif strncmp(fline,'95% confidence intervals for each response function',51)
+        [dresp]=cis_read(fidi,dresp,fline);
+    elseif strncmp(fline,'Probabilities for each response function',40) || ...
+           strncmp(fline,'Level mappings for each response function',41)
+        [dresp]=cdfs_read(fidi,dresp,fline);
+    elseif strncmp(fline,'Probability Density Function (PDF) histograms for each response function',72)
+        [dresp]=pdfs_read(fidi,dresp,fline);
+    elseif strncmp(fline,'Simple Correlation Matrix',25)
+        [scm]=corrmat_read(fidi,'Simple Correlation Matrix',fline);
+    elseif strncmp(fline,'Partial Correlation Matrix',26)
+        [pcm]=corrmat_read(fidi,'Partial Correlation Matrix',fline);
+    elseif strncmp(fline,'Simple Rank Correlation Matrix',30)
+        [srcm]=corrmat_read(fidi,'Simple Rank Correlation Matrix',fline);
+    elseif strncmp(fline,'Partial Rank Correlation Matrix',31)
+        [prcm]=corrmat_read(fidi,'Partial Rank Correlation Matrix',fline);
+    elseif strncmp(fline,'MV Statistics for ',18)
+        [dresp]=mvstats_read(fidi,dresp,fline);
+    elseif strncmp(fline,'<<<<< Best ',11)
+        [dresp]=best_read(fidi,dresp,fline);
+    elseif strncmp(fline,'The following lists volumetric uniformity measures',50)
+        [dresp]=vum_read(fidi,dresp,fline);
+    elseif strncmp(fline,'<<<<< Iterator ',15) && ...
+           (length(fline) > 26) && ...
+           ~isempty(strfind(fline(16:end),' completed.'))
+        [method]=itcomp_read(fidi,fline);
+    elseif strncmp(fline,'-----',5)
+    else
+        display(['Unexpected line: ' deblank(fline)]);
+    end
+    fline=fgetl(fidi);
+%     fseek(fidi,ipos,'bof');
+end
+
+%%  loop through the file to verify the end
+
+% [fline]=findline(fidi,'<<<<< Single Method Strategy completed');
+% if ~ischar(fline)
+%     return
+% end
+display('End of file successfully reached.');
+fclose(fidi);
+
+end
+
+%%  function to parse the dakota tabular output file
+
+function [dresp]=dak_tab_out(fidi,fline)
+
+display('Reading Dakota tabular output file.');
+
+%  process column headings of matrix (skipping eval_id)
+
+[ntokens,tokens]=fltokens(fline);
+
+% New file DAKOTA versions>6
+if strncmpi(fline,'%eval_id interface',18)
+	offset=2;
+else %DAKOTA versions<6
+	offset=1;
+end
+desc=cell (1,ntokens-offset);
+data=zeros(1,ntokens-offset);
+
+for i=1:ntokens-offset
+    desc(1,i)=cellstr(tokens{1}{i+offset});
+end
+display(sprintf('Number of columns (Dakota V+R)=%d.',ntokens-2));
+
+%  process rows of matrix
+
+nrow=0;
+while 1
+    fline=fgetl(fidi);
+    if ~ischar(fline) || isempty(fline)
+        break;
+    end
+    [ntokens,tokens]=fltokens(fline);
+
+%  add row values to matrix (skipping eval_id)
+
+    nrow=nrow+1;
+    for i=1:ntokens-offset
+        data(nrow,i)=tokens{1}{i+offset};
+    end
+end
+display(sprintf('Number of rows (Dakota func evals)=%d.',nrow));
+
+%  calculate statistics
+
+%  since normfit doesn't have a dim argument, and matlab isvector is true
+%  for a 1xn matrix, handle the case of one row explicitly
+if (size(data,1) > 1)
+    %dmean  =mean   (data);
+    %dstddev=std    (data,0);
+    [dmean,dstddev,dmeanci,dstddevci]=...
+        normfit_issm(data,0.05);
+else
+    dmean    =zeros(1,size(data,2));
+    dstddev  =zeros(1,size(data,2));
+    dmeanci  =zeros(2,size(data,2));
+    dstddevci=zeros(2,size(data,2));
+    for i=1:size(data,2)
+        [dmean(1,i),dstddev(1,i),dmeanci(:,i),dstddevci(:,i)]=...
+            normfit_issm(data(:,i),0.05);
+    end
+end
+
+dmin   =min         (data,[],1);
+dquart1=prctile_issm(data,25,1);
+dmedian=median      (data,1);
+dquart3=prctile_issm(data,75,1);
+dmax   =max         (data,[],1);
+dmin95=prctile_issm(data,5,1);
+dmax95=prctile_issm(data,95,1);
+
+%  same as Dakota scm, Excel correl
+dcorrel=corrcoef(data);
+
+%  divide the data into structures for consistency
+
+for i=1:length(desc)
+    dresp(i).descriptor=char(desc(i));
+    dresp(i).sample    =data(:,i);
+    dresp(i).mean      =dmean(i);
+    dresp(i).stddev    =dstddev(i);
+    dresp(i).meanci    =dmeanci(:,i);
+    dresp(i).stddevci  =dstddevci(:,i);
+    dresp(i).min       =dmin(i);
+    dresp(i).quart1    =dquart1(i);
+    dresp(i).median    =dmedian(i);
+    dresp(i).quart3    =dquart3(i);
+    dresp(i).max       =dmax(i);
+	 dresp(i).dmin95    =dmin95(i);
+	 dresp(i).dmax95    =dmax95(i);
+end
+
+%  draw box plot
+
+% figure
+% subplot(2,1,1)
+% plot_boxplot(dresp);
+
+%  draw normal probability plot
+
+% subplot(2,1,2)
+% plot_normplot(dresp);
+
+end
+
+%%  function to find and read the number of function evaluations
+
+function [nfeval]=nfeval_read(fidi,fline)
+
+if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+    [fline]=findline(fidi,'<<<<< Function evaluation summary');
+    if ~ischar(fline)
+        return
+    end
+end
+
+[ntokens,tokens]=fltokens(fline);
+nfeval=tokens{1}{5};
+display(sprintf('  Dakota function evaluations=%d.',nfeval));
+
+end
+
+%%  function to find and read the number of samples
+
+function [nsamp]=nsamp_read(fidi,fline)
+
+if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+    [fline]=findline(fidi,'Statistics based on ');
+    if ~ischar(fline)
+        return
+    end
+end
+
+[ntokens,tokens]=fltokens(fline);
+nsamp=tokens{1}{4};
+display(sprintf('  Dakota samples=%d.',nsamp));
+
+end
+
+%%  function to find and read the moments
+
+function [dresp]=moments_read(fidi,dresp,fline)
+
+if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+    [fline]=findline(fidi,'Moments for each response function');
+    if ~ischar(fline)
+        return
+    end
+end
+
+display('Reading moments for response functions:');
+
+while 1
+    fline=fgetl(fidi);
+    if isempty(fline)
+        break;
+    end
+    [ntokens,tokens]=fltokens(fline);
+
+%  add new response function and moments
+
+    dresp(end+1).descriptor=tokens{1}{ 1};
+    display(sprintf('  %s',dresp(end).descriptor));
+    dresp(end  ).mean      =tokens{1}{ 4};
+    dresp(end  ).stddev    =tokens{1}{ 8};
+    dresp(end  ).coefvar   =tokens{1}{13};
+end
+
+display(sprintf('  Number of Dakota response functions=%d.',...
+    length(dresp)));
+
+end
+
+%%  function to find and read the moment-based statistics
+
+function [dresp]=mbstats_read(fidi,dresp,fline)
+
+if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+    [fline]=findline(fidi,'Moment-based statistics for each response function');
+    if ~ischar(fline)
+        return
+    end
+end
+
+display('Reading moment-based statistics for response functions:');
+
+%  skip column headings of moment-based statistics
+
+    fline=fgetl(fidi);
+
+while 1
+    fline=fgetl(fidi);
+    if isempty(fline)
+        break;
+    end
+    [ntokens,tokens]=fltokens(fline);
+
+%  add new response function and moment-based statistics
+
+    dresp(end+1).descriptor=tokens{1}{ 1};
+    display(sprintf('  %s',dresp(end).descriptor));
+    dresp(end  ).mean      =tokens{1}{ 2};
+    dresp(end  ).stddev    =tokens{1}{ 3};
+    dresp(end  ).skewness  =tokens{1}{ 4};
+    dresp(end  ).kurtosis  =tokens{1}{ 5};
+end
+
+display(sprintf('  Number of Dakota response functions=%d.',...
+    length(dresp)));
+
+end
+
+%%  function to find and read the confidence intervals
+
+function [dresp]=cis_read(fidi,dresp,fline)
+
+if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+    [fline]=findline(fidi,...
+        '95% confidence intervals for each response function');
+    if ~ischar(fline)
+        return
+    end
+end
+
+display('Reading 95% confidence intervals for response functions:');
+
+while 1
+    fline=fgetl(fidi);
+    if isempty(fline)
+        break;
+    end
+    [ntokens,tokens]=fltokens(fline);
+
+%  check for column headings in Dakota 5.2
+
+    if (ntokens == 4)
+        fline=fgetl(fidi);
+        if isempty(fline)
+            break;
+        end
+        [ntokens,tokens]=fltokens(fline);
+    end
+
+%  find response function associated with confidence intervals
+
+    idresp=0;
+    for i=1:length(dresp)
+        if strcmpi(tokens{1}{ 1},dresp(i).descriptor)
+            idresp=i;
+            break;
+        end
+    end
+    if ~idresp
+        idresp=length(dresp)+1;
+        dresp(idresp).descriptor=tokens{1}{ 1};
+        display(sprintf('  %s',dresp(idresp).descriptor));
+    end
+
+%  add confidence intervals to response functions
+
+    if (ntokens == 14)
+        dresp(i).meanci  (1,1)=tokens{1}{ 5};
+        dresp(i).meanci  (2,1)=tokens{1}{ 6};
+        dresp(i).stddevci(1,1)=tokens{1}{12};
+        dresp(i).stddevci(2,1)=tokens{1}{13};
+    else
+        dresp(i).meanci  (1,1)=tokens{1}{ 2};
+        dresp(i).meanci  (2,1)=tokens{1}{ 3};
+        dresp(i).stddevci(1,1)=tokens{1}{ 4};
+        dresp(i).stddevci(2,1)=tokens{1}{ 5};
+    end
+end
+
+display(sprintf('  Number of Dakota response functions=%d.',...
+    length(dresp)));
+
+end
+
+%%  function to find and read the cdf's
+
+function [dresp]=cdfs_read(fidi,dresp,fline)
+
+if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+    [fline]=findline(fidi,'Probabilities for each response function');
+    if ~ischar(fline)
+        [fline]=findline(fidi,'Level mappings for each response function');
+        if ~ischar(fline)
+            return
+        end
+    end
+end
+
+display('Reading CDF''s for response functions:');
+
+while ischar(fline) && ~isempty(fline)
+    fline=fgetl(fidi);
+    if ~ischar(fline)
+        break;
+    end
+
+%  process header line of cdf
+
+    while ischar(fline) && ~isempty(fline)
+        [ntokens,tokens]=fltokens(fline);
+
+%  find response function associated with cdf
+
+        idresp=0;
+        for i=1:length(dresp)
+            if strcmpi(tokens{1}{ 6},dresp(i).descriptor)
+                idresp=i;
+                break;
+            end
+        end
+        if ~idresp
+            idresp=length(dresp)+1;
+            dresp(idresp).descriptor=tokens{1}{ 6};
+            display(sprintf('  %s',dresp(idresp).descriptor));
+        end
+
+%  skip column headings of cdf
+
+        fline=fgetl(fidi);
+        fline=fgetl(fidi);
+
+%  read and add cdf table to response function
+
+        fline=fgetl(fidi);
+        icdf=0;
+        while ischar(fline) && ~isempty(fline) && ...
+              ~strncmpi(fline,'Cumulative Distribution Function',32)
+            [ntokens,tokens]=fltokens(fline);
+            icdf=icdf+1;
+            dresp(idresp).cdf(icdf,1:4)=NaN;
+%  in later versions of Dakota, uncalculated columns are now blank
+            itoken=0;
+            for i=1:length(fline)/19
+                if ~isempty(deblank(fline((i-1)*19+1:i*19)))
+                    itoken=itoken+1;
+                    dresp(idresp).cdf(icdf,i)=tokens{1}{itoken};
+                end
+            end
+            fline=fgetl(fidi);
+        end
+    end
+end
+
+display(sprintf('  Number of Dakota response functions=%d.',...
+    length(dresp)));
+
+end
+
+%%  function to find and read the pdf's
+
+function [dresp]=pdfs_read(fidi,dresp,fline)
+
+if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+    [fline]=findline(fidi,'Probability Density Function (PDF) histograms for each response function');
+    if ~ischar(fline)
+        return
+    end
+end
+
+display('Reading PDF''s for response functions:');
+
+while ischar(fline) && ~isempty(fline)
+    fline=fgetl(fidi);
+    if ~ischar(fline)
+        break;
+    end
+
+%  process header line of pdf
+
+    while ischar(fline) && ~isempty(fline)
+        [ntokens,tokens]=fltokens(fline);
+
+%  find response function associated with pdf
+
+        idresp=0;
+        for i=1:length(dresp)
+            if strcmpi(tokens{1}{ 3},dresp(i).descriptor)
+                idresp=i;
+                break;
+            end
+        end
+        if ~idresp
+            idresp=length(dresp)+1;
+            dresp(idresp).descriptor=tokens{1}{ 3};
+            display(sprintf('  %s',dresp(idresp).descriptor));
+        end
+
+%  skip column headings of pdf
+
+        fline=fgetl(fidi);
+        fline=fgetl(fidi);
+
+%  read and add pdf table to response function
+
+        fline=fgetl(fidi);
+        ipdf=0;
+        while ischar(fline) && ~isempty(fline) && ...
+              ~strncmpi(fline,'PDF for', 7)
+            [ntokens,tokens]=fltokens(fline);
+            ipdf=ipdf+1;
+            dresp(idresp).pdf(ipdf,1:3)=NaN;
+            for i=1:3
+                dresp(idresp).pdf(ipdf,i)=tokens{1}{i};
+            end
+            fline=fgetl(fidi);
+        end
+    end
+end
+
+display(sprintf('  Number of Dakota response functions=%d.',...
+    length(dresp)));
+
+end
+
+%%  function to find and read a correlation matrix
+
+function [cmat]=corrmat_read(fidi,cmstr,fline)
+
+if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+    [fline]=findline(fidi,cmstr);
+    if ~ischar(fline)
+        cmat=struct([]);
+        return
+    end
+end
+
+display(['Reading ''' fline '''.']);
+
+cmat.title=fline;
+
+while ~isempty(fline)
+    fline=fgetl(fidi);
+    if ~ischar(fline)
+        break;
+    end
+
+%  process column headings of matrix
+
+    [ntokens,tokens]=fltokens(fline);
+    cmat.column=cell(1,ntokens);
+    cmat.row   =cell(1,1);
+    cmat.matrix=zeros(1,ntokens);
+
+    for i=1:ntokens
+        cmat.column(1,i)=cellstr(tokens{1}{i});
+    end
+
+%  process rows of matrix, reading until blank line
+
+    nrow=0;
+    while 1
+        fline=fgetl(fidi);
+        if isempty(fline)
+            break;
+        end
+        [ntokens,tokens]=fltokens(fline);
+
+%  add row heading to matrix
+
+        nrow=nrow+1;
+        cmat.row   (nrow,1)=cellstr(tokens{1}{1});
+
+%  add row values to matrix
+
+        for i=2:ntokens
+            cmat.matrix(nrow,i-1)=tokens{1}{i};
+        end
+    end
+end
+
+end
+
+%%  function to find and read the MV statistics
+
+function [dresp]=mvstats_read(fidi,dresp,fline)
+
+if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+    [fline]=findline(fidi,'MV Statistics for ');
+    if ~ischar(fline)
+        return
+    end
+end
+
+display('Reading MV statistics for response functions:');
+ndresp=0;
+
+while ischar(fline) && ~isempty(fline) && ...
+        strncmpi(fline,'MV Statistics for ',18)
+
+%  add new response function and moments
+
+    [ntokens,tokens]=fltokens(fline);
+    dresp(end+1).descriptor=tokens{1}{4};
+    display(sprintf('  %s',dresp(end).descriptor));
+    fline=fgetl(fidi);
+    [ntokens,tokens]=fltokens(fline);
+    dresp(end  ).mean      =tokens{1}{5};
+    fline=fgetl(fidi);
+    [ntokens,tokens]=fltokens(fline);
+    dresp(end  ).stddev    =tokens{1}{7};
+
+%  read and add importance factors to response function
+
+	idvar=0;
+    fline=fgetl(fidi);
+    if ~ischar(fline)
+        break;
+    end
+
+    while ischar(fline) && ~isempty(fline) && ...
+            strncmpi(fline,'  Importance Factor for variable ',33)
+        [ntokens,tokens]=fltokens(fline);
+        idvar=idvar+1;
+        dresp(end).var   (idvar,1)=cellstr(tokens{1}{ 5});
+        dresp(end).impfac(idvar,1)=        tokens{1}{ 7};
+        if (ntokens >= 10)
+            dresp(end).sens  (idvar,1)=        tokens{1}{10};
+        else
+            dresp(end).sens  (idvar,1)=NaN;
+        end
+
+        fline=fgetl(fidi);
+    end
+
+%  if importance factors missing, skip to cdf
+
+    if ~idvar
+        display('    Importance Factors not available.');
+        dresp(end).var   ={};
+        dresp(end).impfac=[];
+        dresp(end).sens  =[];
+        while ischar(fline) && ...
+                ~strncmpi(fline,'Cumulative Distribution Function',32) && ...
+                ~strncmpi(fline,'MV Statistics for ',18) && ...
+                ~strncmp (fline,'-',1)
+            fline=fgetl(fidi);
+        end
+    end
+
+%  process header line of cdf
+
+    icdf=0;
+
+    while ischar(fline) && ~isempty(fline) && ...
+            strncmpi(fline,'Cumulative Distribution Function',32)
+        [ntokens,tokens]=fltokens(fline);
+
+%  find response function associated with cdf
+
+        idresp=0;
+        for i=1:length(dresp)
+            if strcmpi(tokens{1}{ 6},dresp(i).descriptor)
+                idresp=i;
+                break;
+            end
+        end
+        if ~idresp
+            idresp=length(dresp)+1;
+            dresp(idresp).descriptor=tokens{1}{ 6};
+            display(sprintf('  %s',dresp(idresp).descriptor));
+        end
+
+%  skip column headings of cdf
+
+        fline=fgetl(fidi);
+        fline=fgetl(fidi);
+
+%  read and add cdf table to response function
+
+        fline=fgetl(fidi);
+        while ~isempty(fline) && ...
+                ~strncmpi(fline,'MV Statistics for ',18) && ...
+                ~strncmp (fline,'-',1)
+            [ntokens,tokens]=fltokens(fline);
+            icdf=icdf+1;
+            dresp(idresp).cdf(icdf,1)=tokens{1}{1};
+            dresp(idresp).cdf(icdf,2)=tokens{1}{2};
+            if (ntokens == 4)
+                dresp(idresp).cdf(icdf,3)=tokens{1}{3};
+                dresp(idresp).cdf(icdf,4)=tokens{1}{4};
+            else
+                dresp(idresp).cdf(icdf,3)=NaN;
+                dresp(idresp).cdf(icdf,4)=NaN;
+            end
+            fline=fgetl(fidi);
+        end
+    end
+
+%  if cdf missing, skip to end of response function
+
+    if ~icdf
+        display('    Cumulative Distribution Function not available.');
+        dresp(ndresp).cdf=[];
+        while ischar(fline) && ...
+                ~strncmpi(fline,'MV Statistics for ',18) && ...
+                ~strncmp (fline,'-',1)
+            fline=fgetl(fidi);
+        end
+    end
+
+end
+
+display(sprintf('  Number of Dakota response functions=%d.',...
+    length(dresp)));
+
+end
+
+%%  function to find and read the best evaluation
+
+function [dresp]=best_read(fidi,dresp,fline)
+
+if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+    [fline]=findline(fidi,'<<<<< Best ');
+    if ~ischar(fline)
+        return
+    end
+end
+
+if isempty(dresp)
+    dresp(end+1).best=[];
+end
+display('Reading values for best function evaluation:');
+
+while ischar(fline) && ~isempty(fline) && ...
+        strncmpi(fline,'<<<<< Best ',11)
+    [ntokens,tokens]=fltokens(fline);
+
+%  read and add best parameter(s)
+
+    if     strncmpi(cellstr(tokens{1}{3}),'parameter', 9)
+        display(['  ' deblank(fline)]);
+
+        fline=fgetl(fidi);
+	    dresp.best.param     =[];
+        dresp.best.descriptor={};
+
+        while ischar(fline) && ~isempty(fline) && ...
+                ~strncmpi(fline,'<<<<< Best ',11)
+            [ntokens,tokens]=fltokens(fline);
+            dresp.best.param     (end+1,1)=        tokens{1}{1};
+            dresp.best.descriptor(end+1,1)=cellstr(tokens{1}{2});
+            fline=fgetl(fidi);
+        end
+
+%  read and add best objective function(s)
+
+    elseif strncmpi(cellstr(tokens{1}{3}),'objective', 9) && ...
+           strncmpi(cellstr(tokens{1}{4}),'function' , 8)
+        display(['  ' deblank(fline)]);
+
+        fline=fgetl(fidi);
+	    dresp.best.of=[];
+
+        while ischar(fline) && ~isempty(fline) && ...
+                ~strncmpi(fline,'<<<<< Best ',11)
+            [ntokens,tokens]=fltokens(fline);
+            dresp.best.of(end+1,1)=        tokens{1}{1};
+            fline=fgetl(fidi);
+        end
+
+%  read and add best residual norms
+
+    elseif strncmpi(cellstr(tokens{1}{3}),'residual', 8) && ...
+           strncmpi(cellstr(tokens{1}{4}),'norm'    , 4)
+        display(['  ' deblank(fline)]);
+        dresp.best.norm   =        tokens{1}{ 6};
+        dresp.best.hnormsq=        tokens{1}{11};
+
+        fline=fgetl(fidi);
+
+        while ischar(fline) && ~isempty(fline) && ...
+                ~strncmpi(fline,'<<<<< Best ',11)
+            fline=fgetl(fidi);
+        end
+
+%  read and add best residual term(s)
+
+    elseif strncmpi(cellstr(tokens{1}{3}),'residual', 8) && ...
+           strncmpi(cellstr(tokens{1}{4}),'term'    , 4)
+        display(['  ' deblank(fline)]);
+
+        fline=fgetl(fidi);
+	    dresp.best.res=[];
+
+        while ischar(fline) && ~isempty(fline) && ...
+                ~strncmpi(fline,'<<<<< Best ',11)
+            [ntokens,tokens]=fltokens(fline);
+            dresp.best.res(end+1,1)=        tokens{1}{1};
+            fline=fgetl(fidi);
+        end
+
+%  read and add best constraint value(s)
+
+    elseif strncmpi(cellstr(tokens{1}{3}),'constraint',10) && ...
+           strncmpi(cellstr(tokens{1}{4}),'value'     , 5)
+        display(['  ' deblank(fline)]);
+
+        fline=fgetl(fidi);
+	    dresp.best.nc=[];
+
+        while ischar(fline) && ~isempty(fline) && ...
+                ~strncmpi(fline,'<<<<< Best ',11)
+            [ntokens,tokens]=fltokens(fline);
+            dresp.best.nc(end+1,1)=        tokens{1}{1};
+            fline=fgetl(fidi);
+        end
+
+%  read and add best data captured
+
+    elseif strncmpi(cellstr(tokens{1}{3}),'data'    , 4) && ...
+           strncmpi(cellstr(tokens{1}{4}),'captured', 8)
+        display(['  ' deblank(fline)]);
+        dresp.best.eval=        tokens{1}{8};
+
+        fline=fgetl(fidi);
+
+        while ischar(fline) && ~isempty(fline) && ...
+                ~strncmpi(fline,'<<<<< Best ',11)
+            fline=fgetl(fidi);
+        end
+
+%  read until next best or blank or end
+
+    else
+        display(['  ' deblank(fline) '  (ignored)']);
+
+        fline=fgetl(fidi);
+
+        while ischar(fline) && ~isempty(fline) && ...
+                ~strncmpi(fline,'<<<<< Best ',11)
+            fline=fgetl(fidi);
+        end
+    end
+end
+
+end
+
+%%  function to find and read the volumetric uniformity measures
+
+function [dresp]=vum_read(fidi,dresp,fline)
+
+if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+    [fline]=findline(fidi,'The following lists volumetric uniformity measures');
+    if ~ischar(fline)
+        return
+    end
+end
+
+if isempty(dresp)
+    dresp(end+1).vum=[];
+end
+display('Reading measures for volumetric uniformity.');
+
+fline=fgetl(fidi);
+fline=fgetl(fidi);
+
+while ischar(fline) && ~isempty(fline)
+	[ntokens,tokens]=fltokens(fline);
+    switch lower(tokens{1}{1})
+        case 'chi'
+            dresp.vum.chi=tokens{1}{4};
+        case 'd'
+            dresp.vum.d  =tokens{1}{4};
+        case 'h'
+            dresp.vum.h  =tokens{1}{4};
+        case 'tau'
+            dresp.vum.tau=tokens{1}{4};
+    end
+    fline=fgetl(fidi);
+end
+
+end
+
+%%  function to find and read the iterator completion
+
+function [method]=itcomp_read(fidi,fline)
+
+if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+    while 1
+        [fline]=findline(fidi,'<<<<< Iterator ');
+        if ~ischar(fline)
+            return
+        end
+        if (length(fline) > 26) && ...
+           ~isempty(strfind(fline(16:end),' completed.'))
+            break
+        end
+    end
+end
+
+[ntokens,tokens]=fltokens(fline);
+method=tokens{1}{3};
+display(sprintf('Dakota iterator ''%s'' completed.',method));
+
+end
+
+%%  function to find a file line starting with a specified string
+
+function [fline]=findline(fidi,string)
+
+ipos=ftell(fidi);
+
+while 1
+    fline=fgetl(fidi);
+    if ~ischar(fline)
+        break;
+    else
+        if (strncmpi(fline,string,length(string)))
+            return;
+        end
+    end
+end
+
+%  issue warning and reset file position
+
+warning('findline:str_not_found',...
+    'String ''%s'' not found in file.',string);
+fseek(fidi,ipos,'bof');
+
+end
+
+%%  function to parse a file line into tokens
+
+function [ntokens,tokens]=fltokens(fline)
+
+if ~ischar(fline)
+    ntokens=-1;
+    tokens={};
+    return;
+end
+if isempty(fline)
+    ntokens=0;
+    tokens={};
+    return;
+end
+
+strings=textscan(fline,'%s','delimiter',' :');
+%for i=1:length(strings{1})
+%    display(sprintf('i=%d; strings{1}{%d}=%s',i,i,strings{1}{i}))
+%end
+ntokens=0;
+tokens{1}{length(strings)}='';
+
+for i=1:length(strings{1})
+    if isempty(strings{1}{i})
+        continue
+    end
+    ntokens=ntokens+1;
+    inum=sscanf(strings{1}{i},'%f');
+    if isempty(inum)
+        tokens{1}{ntokens}=strings{1}{i};
+%        display(sprintf('i=%d; tokens{1}{%d}=%s',...
+%            i,ntokens,tokens{1}{ntokens}))
+    else
+        tokens{1}{ntokens}=inum;
+%        display(sprintf('i=%d; tokens{1}{%d}=%f',...
+%            i,ntokens,tokens{1}{ntokens}))
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_resp_uconv.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_resp_uconv.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/dakota_resp_uconv.m	(revision 21239)
@@ -0,0 +1,112 @@
+%
+%  convert the units for dakota responses.
+%
+%  [dresp]=dakota_resp_uconv(dresp)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%
+%  the required output is:
+%    dresp         (structure array, responses)
+%
+%  this function reads through a dakota response structure, and
+%  for those quantities whose descriptors are recognized, converts
+%  the units of all the applicable fields.  a "unit" field is added
+%  to the response structure.
+%
+%  this data would typically be read by dakota_out_parse and be used
+%  for plotting and other post-processing within matlab or excel.
+%
+%  "Copyright 2010, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function [dresp]=dakota_resp_uconv(dresp)
+
+if ~nargin
+    help dakota_resp_uconv
+    return
+end
+
+if ~isstruct(dresp)
+    error('''%s'' is not a structure array.',inputname(1));
+end
+if ~isfield(dresp,'descriptor')
+    error('''%s'' does not have a descriptor field.',inputname(1));
+end
+
+%%  define the conversion factors
+
+sec_per_yr=365.2425*24*60*60;    %  mean gregorian year
+m_per_km=1000;
+kg_per_gton=10^12;
+
+%%  loop through the response array
+
+for i=1:numel(dresp)
+    dresp(i).unit='';
+    if     ~isempty(strfind(dresp(i).descriptor,'vel'))    %  in m/sec
+        dresp(i)=drespi_conv(dresp(i),sec_per_yr,'m/yr');
+    elseif ~isempty(strfind(dresp(i).descriptor,'misfit'))    %  in m^2*(m/sec)^2
+        dresp(i)=drespi_conv(dresp(i),1/m_per_km^2*sec_per_yr^2,'km^2*(m/yr)^2');
+    elseif ~isempty(strfind(dresp(i).descriptor,'mass_flux'))    %  in kg/sec
+        dresp(i)=drespi_conv(dresp(i),1/kg_per_gton*sec_per_yr,'Gton/yr');
+    else
+        disp(['Skipping response ''' dresp(i).descriptor '''.']);
+    end
+end
+
+end
+
+%%  function to convert the units of a dakota response
+
+function [dresp]=drespi_conv(dresp,unew_per_uold,ulab)
+
+disp(['Converting response ''' dresp.descriptor ''' to ' ulab '.']);
+
+%  loop over the fields, converting only the appropriate ones
+
+fnames=fieldnames(dresp);
+for i=1:length(fnames)
+    switch fnames{i}
+        case {'sample',...
+              'mean',...
+              'stddev',...
+              'meanci',...
+              'stddevci',...
+              'min',...
+              'quart1',...
+              'median',...
+              'quart3',...
+              'max'}    %  appropriate to convert
+            dresp.(fnames{i})=dresp.(fnames{i})*unew_per_uold;
+        case {'cdf'}    %  only responses, not probs or reliabilities
+            dresp.cdf(:,1)=dresp.cdf(:,1)*unew_per_uold;
+        case {'descriptor',...
+              'coefvar',...
+              'var',...
+              'impfac'}    %  unitless (or non-numeric)
+            continue;
+        case {'best',...
+              'vum',...
+              'unit'}    %  other
+            continue;
+        otherwise
+            disp(['Unrecognized field ''' fnames{i} '''.']);
+    end
+end
+
+if isfield(dresp,'unit')
+    dresp.unit=ulab;
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/README
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/README	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/README	(revision 21239)
@@ -0,0 +1,3 @@
+Example parameter files to setup QMU (quantification of margins and uncertainties) using Dakota.
+
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/all_parameters.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/all_parameters.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/all_parameters.m	(revision 21239)
@@ -0,0 +1,91 @@
+%  set up some qmu studies, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.qmu.variables=struct();
+md.qmu.variables.nuv=normal_uncertain.empty();
+md.qmu.variables.nuv(end+1)=normal_uncertain('rho_ice',917,45.85);
+md.qmu.variables.nuv(end+1)=normal_uncertain('thickness',1,0.05);
+md.qmu.variables.nuv(end+1)=normal_uncertain('drag',1,0.05);
+md.qmu.variables.cdv=continuous_design.empty();
+md.qmu.variables.cdv(end+1)=continuous_design('thickness',1,0.9,1.1);
+md.qmu.variables.cdv(end+1)=continuous_design('drag',1,0.5,1.5);
+md.qmu.variables.csv=continuous_state.empty();
+md.qmu.variables.csv(end+1)=continuous_state('gravity',9.8);
+md.qmu.variables.lic=linear_inequality_constraint.empty();
+md.qmu.variables.lic(end+1)=linear_inequality_constraint([1 2 3],4,5);
+md.qmu.variables.lic(end+1)=linear_inequality_constraint([1 2],4,5);
+md.qmu.variables.lic(end+1)=linear_inequality_constraint([1 2 3 4],4,5);
+md.qmu.variables.lec=linear_equality_constraint.empty();
+md.qmu.variables.lec(end+1)=linear_equality_constraint([1 2 3],4);
+
+%%  a variety of responses
+
+md.qmu.responses=struct();
+md.qmu.responses.rf =response_function.empty();
+md.qmu.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vy',[100 200 300],[]);
+md.qmu.responses.rf (end+1)=response_function('max_vel'   ,[100 200 300],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.of =objective_function.empty();
+md.qmu.responses.of (end+1)=objective_function('max_vel');
+md.qmu.responses.lst=least_squares_term.empty();
+md.qmu.responses.lst(end+1)=least_squares_term('max_vel');
+md.qmu.responses.nic=nonlinear_inequality_constraint.empty();
+md.qmu.responses.nic(end+1)=nonlinear_inequality_constraint('max_abs_vx',0,1000);
+md.qmu.responses.nic(end+1)=nonlinear_inequality_constraint('max_abs_vy',0,1000);
+md.qmu.responses.nec=nonlinear_equality_constraint.empty();
+md.qmu.responses.nec(end+1)=nonlinear_equality_constraint('max_abs_vx',500);
+md.qmu.responses.nec(end+1)=nonlinear_equality_constraint('max_abs_vy',500);
+
+%%  a variety of studies
+
+%  a sampling study
+
+md.qmu.method       =dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+    'seed',1234,...
+    'samples',10);
+
+%  a local reliability study
+
+md.qmu.method(end+1)=dakota_method('nond_l');
+
+%  a multidimensional parameter study
+
+md.qmu.method(end+1)=dakota_method('multi');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+    'partitions',2);
+
+%  an optimization study
+
+md.qmu.method(end+1)=dakota_method('conmin_f');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+    'max_iterations',10,...
+    'max_function_evaluations',50,...
+    'convergence_tolerance',0.001);
+
+%%  a variety of parameters
+
+md.qmu.params.evaluation_concurrency=4;
+md.qmu.params.analysis_driver='';
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.fd_gradient_step_size=0.001;
+
+md.qmu.numberofpartitions=10;
+md.rifts.numrifts=5;
+
+md.qmu
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/dakota_rosenbrock_2d.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/dakota_rosenbrock_2d.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/dakota_rosenbrock_2d.m	(revision 21239)
@@ -0,0 +1,60 @@
+%
+%  multi-dimensional parameter study for rosenbrock case
+%  (see Users4.2.pdf, Sec. 2.4.1)
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+
+function [dout,ddat]=dakota_rosenbrock_2d()
+
+%  define dakota variables as continuous design
+%  (may use set 1 or set 2 of variables, but not both)
+dvar(1).cdv(1)=continuous_design('x1',0,-2,2);
+dvar(1).cdv(2)=continuous_design('x2',0,-2,2);
+dvar(2).x1=continuous_design('',0,-2,2);
+dvar(2).x2=continuous_design('',0,-2,2);
+
+%  define dakota response as objective function
+%  (may use set 1 or set 2 of responses, but not both)
+dresp(1).of=objective_function('f');
+dresp(2).f=objective_function('');
+
+%  define dakota method and specify method-dependent parameters
+dmeth=dakota_method('multidim');
+dmeth=dmeth_params_set(dmeth,'partitions',[8 8]);
+
+%  specify method-independent parameters
+%  (dakota_in_params does not need to be called, but provides a template)
+dparams=dakota_in_params([]);
+dparams.direct=true;
+dparams.analysis_driver='rosenbrock';
+dparams.tabular_graphics_data=true;
+dparams.tabular_graphics_file='dakota_rosenbrock_2d.dat';
+
+%  write out dakota input file
+dakota_in_write(dmeth,dvar(2),dresp(2),dparams,'dakota_rosenbrock_2d.in')
+
+%  execute dakota
+!dakota -i dakota_rosenbrock_2d.in -o dakota_rosenbrock_2d.out
+
+%  read dakota output and tabular data files
+%  (output file for parameter studies has no interesting info)
+[method,dout]=dakota_out_parse('dakota_rosenbrock_2d.out');
+[~     ,ddat]=dakota_out_parse('dakota_rosenbrock_2d.dat');
+
+%  perform any desired plotting
+plot_rvsv_surf(ddat,{'x1','x2'},ddat,{'f'})
+
+end
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/dakota_rosenbrock_ls.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/dakota_rosenbrock_ls.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/dakota_rosenbrock_ls.m	(revision 21239)
@@ -0,0 +1,58 @@
+%
+%  least squares study for rosenbrock case
+%  (see Users4.2.pdf, Sec. 2.4.1)
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+
+function [dout,ddat]=dakota_rosenbrock_ls()
+
+%  define dakota variables as continuous design
+dvar.x1=continuous_design('',-1.2,-2,2);
+dvar.x2=continuous_design('', 1.0,-2,2);
+
+%  define dakota response as least-squares terms
+dresp.f1sq=least_squares_term('');
+dresp.f2sq=least_squares_term('');
+
+%  define dakota method and specify method-dependent parameters
+dmeth=dakota_method('nl2sol');
+dmeth=dmeth_params_set(dmeth,'max_iterations',100,...
+                             'convergence_tolerance',1.e-4);
+
+%  specify method-independent parameters
+%  (dakota_in_params does not need to be called, but provides a template)
+dparams=dakota_in_params([]);
+dparams.direct=true;
+dparams.analysis_driver='rosenbrock';
+dparams.tabular_graphics_data=true;
+dparams.tabular_graphics_file='dakota_rosenbrock_ls.dat';
+dparams.analytic_gradients=true;
+
+%  write out dakota input file
+dakota_in_write(dmeth,dvar,dresp,dparams,'dakota_rosenbrock_ls.in')
+
+%  execute dakota
+!dakota -i dakota_rosenbrock_ls.in -o dakota_rosenbrock_ls.out
+
+%  read dakota output and tabular data files
+%  (output file for parameter studies has no interesting info)
+[method,dout]=dakota_out_parse('dakota_rosenbrock_ls.out');
+[~     ,ddat]=dakota_out_parse('dakota_rosenbrock_ls.dat');
+
+%  perform any desired plotting
+% plot_rvsv_surf(ddat,{'x1','x2'},ddat,{'f'})
+
+end
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/dakota_rosenbrock_nond.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/dakota_rosenbrock_nond.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/dakota_rosenbrock_nond.m	(revision 21239)
@@ -0,0 +1,70 @@
+%
+%  monte carlo sampling for rosenbrock case
+%  (see Users4.2.pdf, Sec. 2.4.9)
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+
+function [dout,ddat,scm,pcm,srcm,prcm]=dakota_rosenbrock_nond()
+
+%  define dakota variables as uniform uncertain
+%  (may use set 1 or set 2 of variables, but not both)
+dvar(1).uuv(1)=uniform_uncertain('x1',-2,2);
+dvar(1).uuv(2)=uniform_uncertain('x2',-2,2);
+dvar(2).x1=uniform_uncertain('',-2,2);
+dvar(2).x2=uniform_uncertain('',-2,2);
+
+%  define dakota response as response function
+%  (may use set 1 or set 2 of responses, but not both)
+dresp(1).rf=response_function('f',[100]);
+dresp(2).f=response_function('',[100]);
+
+%  define dakota method and specify method-dependent parameters
+dmeth=dakota_method('nond_samp');
+dmeth=dmeth_params_set(dmeth,'samples',200,...
+                             'seed',17,...
+                             'sample_type','random');
+
+%  specify method-independent parameters
+%  (dakota_in_params does not need to be called, but provides a template)
+dparams=dakota_in_params([]);
+dparams.direct=true;
+dparams.analysis_driver='rosenbrock';
+dparams.tabular_graphics_data=true;
+dparams.tabular_graphics_file='dakota_rosenbrock_nond.dat';
+
+%  write out dakota input file
+dakota_in_write(dmeth,dvar(2),dresp(2),dparams,'dakota_rosenbrock_nond.in')
+
+%  execute dakota
+!dakota -i dakota_rosenbrock_nond.in -o dakota_rosenbrock_nond.out
+
+%  read dakota output and tabular data files
+[method,dout,scm,pcm,srcm,prcm]=dakota_out_parse('dakota_rosenbrock_nond.out');
+[~     ,ddat                  ]=dakota_out_parse('dakota_rosenbrock_nond.dat');
+
+%  perform any desired plotting
+plot_boxplot(ddat,{'f'})
+plot_normplot(ddat,{'f'})
+plot_sampdist_bars(ddat,{'f'})
+plot_normdist_bars(ddat,{'f'})
+plot_hist_norm(ddat,{'f'})
+plot_hist_norm(ddat,{'f'},'hmin',0,'hmax',200)
+plot_hist_norm_ci(ddat,{'f'})
+plot_hist_norm_ci(ddat,{'f'},'ciplt','line','cdfplt','off','ymin1',0,'ymax1',0.15)
+plot_prob_bars(dout,{'f'})
+plot_rlev_bars_ci(ddat,{'f'},'xtlrot',90)
+
+end
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/dakota_rosenbrock_vector.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/dakota_rosenbrock_vector.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/dakota_rosenbrock_vector.m	(revision 21239)
@@ -0,0 +1,64 @@
+%
+%  vector parameter study for rosenbrock case
+%  (see Users4.2.pdf, Sec. 2.4.2)
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+
+function [dout,ddat]=dakota_rosenbrock_vector()
+
+%  define dakota variables as continuous design
+%  (may use set 1 or set 2 of variables, but not both)
+dvar(1).cdv(1)=continuous_design('x1',-0.3);
+dvar(1).cdv(2)=continuous_design('x2', 0.2);
+dvar(2).x1=continuous_design('',-0.3);
+dvar(2).x2=continuous_design('', 0.2);
+
+%  define dakota response as objective function
+%  (may use set 1 or set 2 of responses, but not both)
+dresp(1).of=objective_function('f');
+dresp(2).f=objective_function('');
+
+%  define dakota method and specify method-dependent parameters
+dmeth=dakota_method('vector');
+%  (ref. manual says step_length is required, but user's doesn't)
+dmeth=dmeth_params_set(dmeth,'final_point',[1.1 1.3],...
+                             'num_steps',10);
+
+%  specify method-independent parameters
+%  (dakota_in_params does not need to be called, but provides a template)
+dparams=dakota_in_params([]);
+dparams.direct=true;
+dparams.analysis_driver='rosenbrock';
+dparams.tabular_graphics_data=true;
+dparams.tabular_graphics_file='dakota_rosenbrock_vector.dat';
+
+%  write out dakota input file
+dakota_in_write(dmeth,dvar(2),dresp(2),dparams,'dakota_rosenbrock_vector.in')
+
+%  execute dakota
+!dakota -i dakota_rosenbrock_vector.in -o dakota_rosenbrock_vector.out
+
+%  read dakota output and tabular data files
+%  (output file for parameter studies has no interesting info)
+[method,dout]=dakota_out_parse('dakota_rosenbrock_vector.out');
+[~     ,ddat]=dakota_out_parse('dakota_rosenbrock_vector.dat');
+clear dum
+
+%  perform any desired plotting
+plot_rvsv_line(ddat,{'x1','x2'},ddat,{'f'})
+plot_rvsv_line(ddat,{'x1','x2'},ddat,{'f'},'nplotr',1,'nplotc',2)
+
+end
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/direct.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/direct.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/direct.m	(revision 21239)
@@ -0,0 +1,9 @@
+%using library mode of Dakota, only for parallel runs.
+md.qmu.params.direct=true;
+md.qmu.params.analysis_driver='stressbalance';
+md.qmu.params.evaluation_concurrency=1;
+
+%or for matlab direct driver
+md.qmu.params.direct=true;
+md.qmu.params.analysis_driver='matlab';
+md.qmu.params.evaluation_concurrency=2; %launch 2 matlabs
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/lrel.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/lrel.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/lrel.m	(revision 21239)
@@ -0,0 +1,55 @@
+%  set up a local reliability study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.qmu.variables=struct();
+md.qmu.variables.nuv=normal_uncertain.empty();
+md.qmu.variables.nuv(end+1)=normal_uncertain('RhoIce',917,45.85);
+md.qmu.variables.nuv(end+1)=normal_uncertain('RhoWater',1023,51.15);
+md.qmu.variables.nuv(end+1)=normal_uncertain('HeatCapacity',2009,100.45);
+md.qmu.variables.nuv(end+1)=normal_uncertain('ThermalConductivity',2.2,0.11);
+md.qmu.variables.nuv(end+1)=normal_uncertain('Gravity',9.8,0.49);
+md.qmu.variables.nuv(end+1)=normal_uncertain('Thickness',1,0.05);
+md.qmu.variables.nuv(end+1)=normal_uncertain('Drag',1,0.05);
+
+%%  a variety of responses
+
+md.qmu.responses=struct();
+md.qmu.responses.rf =response_function.empty();
+md.qmu.responses.rf (end+1)=response_function('min_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('min_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('min_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%%  nond_local_reliability study
+
+md.qmu.method     =dakota_method('nond_l');
+
+%%  a variety of parameters
+
+md.qmu.params.evaluation_concurrency=1;
+md.qmu.params.analysis_driver='';
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.fd_gradient_step_size=0.01;
+
+md.qmu.numberofpartitions=10;
+
+md.qmu
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/lrel_mmf.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/lrel_mmf.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/lrel_mmf.m	(revision 21239)
@@ -0,0 +1,94 @@
+%  set up a local reliability study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.qmu.variables=struct();
+md.qmu.variables.nuv=normal_uncertain.empty();
+%md.qmu.variables.nuv(end+1)=normal_uncertain('RhoIce',917,45.85);
+%md.qmu.variables.nuv(end+1)=normal_uncertain('RhoWater',1023,51.15);
+%md.qmu.variables.nuv(end+1)=normal_uncertain('HeatCapacity',2009,100.45);
+%md.qmu.variables.nuv(end+1)=normal_uncertain('ThermalConductivity',2.2,0.11);
+%md.qmu.variables.nuv(end+1)=normal_uncertain('Gravity',9.8,0.49);
+md.qmu.variables.nuv(end+1)=normal_uncertain('Thickness',1,0.05);
+%md.qmu.variables.nuv(end+1)=normal_uncertain('Drag',1,0.05);
+
+%%  a variety of responses
+
+md.qmu.responses=struct();
+md.qmu.responses.rf =response_function.empty();
+md.qmu.responses.rf (end+1)=response_function('min_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('min_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('min_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('mass_flux1',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('mass_flux_2',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('mass_flux(3)',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('mass_flux4 (repeat)',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('mass_flux-5',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('mass_flux^6',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('mass_flux[7]',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%%  create mass flux profile
+
+%plotmodel(md,'data','mesh')
+%expcreateprofile('mass_flux.exp')
+%expdisp('mass_flux.exp')
+%md.qmu.mass_flux_profile='mass_flux.exp';
+%md.qmu.mass_flux_profile={'mass_flux.exp','mass_flux2.exp','mass_flux3.exp'};
+md.qmu.mass_flux_profile={'mass_flux.exp','mass_flux2.exp','mass_flux3.exp','mass_flux.exp','mass_flux5.exp','mass_flux6.exp','mass_flux7.exp'};
+
+%%  nond_local_reliability study
+
+md.qmu.method     =dakota_method('nond_l');
+
+%%  a variety of parameters
+
+%md.qmu.params.evaluation_concurrency=4;
+md.qmu.params.evaluation_concurrency=1;
+md.qmu.params.analysis_driver='';
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.fd_gradient_step_size=0.01;
+
+md.qmu.isdakota=1;
+md.qmu.numberofpartitions=10;
+if isempty(md.qmu.adjacency)
+	md=adjacency(md);
+end
+if isempty(md.qmu.partition)
+%    md.qmu.partition=partitioner(md,'package','metis','npart',md.qmu.numberofpartitions);
+    md.qmu.partition=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');
+% SpawnCore.m assumes partition vector starting at zero
+    md.qmu.partition=md.qmu.partition-1;
+end
+md.eps_rel=1.e-5;
+md.cluster=none;
+
+md.qmu
+
+%%  sample analysis
+
+%md=solve(md,'analysis_type','stressbalance');
+
+%plotmodel(md,'data','mesh')
+%plotmodel(md,'data',md.qmu.partition)
+%plotmodel(md,'data','mesh','partitionedges','on','linewidth',2)
+%part_hist(md.qmu.partition,md.vertex_weight)
+%plotmodel(md,'data',log10(md.results.dakota.dresp_out(9).impfac(md.qmu.partition+1)))
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/lsq.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/lsq.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/lsq.m	(revision 21239)
@@ -0,0 +1,50 @@
+%  set up a least-squares study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.qmu.variables=struct();
+md.qmu.variables.cdv=continuous_design.empty();
+md.qmu.variables.cdv(end+1)=continuous_design('thickness',1,0.9,1.1);
+md.qmu.variables.cdv(end+1)=continuous_design('drag',1,0.5,1.5);
+md.qmu.variables.csv=continuous_state.empty();
+md.qmu.variables.csv(end+1)=continuous_state('gravity',9.8);
+
+%%  a variety of responses
+
+md.qmu.responses=struct();
+md.qmu.responses.lst=least_squares_term.empty();
+md.qmu.responses.lst(end+1)=least_squares_term('max_vx');
+md.qmu.responses.lst(end+1)=least_squares_term('max_vy');
+
+%%  a least-squares study
+
+md.qmu.method     =dakota_method('nl2sol');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+    'max_iterations',10,...
+    'max_function_evaluations',50,...
+    'convergence_tolerance',0.01);
+
+%%  a variety of parameters
+
+md.qmu.params.evaluation_concurrency=4;
+md.qmu.params.analysis_driver='';
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.fd_gradient_step_size=0.01;
+
+md.qmu.numberofpartitions=10;
+
+md.qmu
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/opt.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/opt.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/opt.m	(revision 21239)
@@ -0,0 +1,49 @@
+%  set up an optimization study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.qmu.variables=struct();
+md.qmu.variables.cdv=continuous_design.empty();
+md.qmu.variables.cdv(end+1)=continuous_design('thickness',1,0.9,1.1);
+md.qmu.variables.cdv(end+1)=continuous_design('drag',1,0.5,1.5);
+md.qmu.variables.csv=continuous_state.empty();
+md.qmu.variables.csv(end+1)=continuous_state('gravity',9.8);
+
+%%  a variety of responses
+
+md.qmu.responses=struct();
+md.qmu.responses.of =objective_function.empty();
+md.qmu.responses.of (end+1)=objective_function('max_vel');
+
+%%  an optimization study
+
+md.qmu.method     =dakota_method('conmin_f');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+    'max_iterations',10,...
+    'max_function_evaluations',50,...
+    'convergence_tolerance',0.01);
+
+%%  a variety of parameters
+
+md.qmu.params.evaluation_concurrency=4;
+md.qmu.params.analysis_driver='';
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.fd_gradient_step_size=0.01;
+
+md.qmu.numberofpartitions=10;
+
+md.qmu
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/paramc.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/paramc.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/paramc.m	(revision 21239)
@@ -0,0 +1,53 @@
+%  set up a centered parameter study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.qmu.variables=struct();
+md.qmu.variables.nuv=normal_uncertain.empty();
+md.qmu.variables.nuv(end+1)=normal_uncertain('rho_ice',917,45.85);
+md.qmu.variables.nuv(end+1)=normal_uncertain('rho_water',1023,51.15);
+md.qmu.variables.nuv(end+1)=normal_uncertain('heatcapacity',2009,100.45);
+md.qmu.variables.nuv(end+1)=normal_uncertain('thermalconductivity',2.2,0.11);
+md.qmu.variables.cdv=continuous_design.empty();
+md.qmu.variables.cdv(end+1)=continuous_design('thickness',1,0.9,1.1);
+md.qmu.variables.cdv(end+1)=continuous_design('drag',1,0.5,1.5);
+md.qmu.variables.csv=continuous_state.empty();
+md.qmu.variables.csv(end+1)=continuous_state('gravity',9.8);
+
+%%  a variety of responses
+
+md.qmu.responses=struct();
+md.qmu.responses.rf =response_function.empty();
+md.qmu.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vel'   ,[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%%  a parameter study
+
+md.qmu.method     =dakota_method('centered');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+    'percent_delta',10.,...
+    'deltas_per_variable',1);
+
+%%  a variety of parameters
+
+md.qmu.params.evaluation_concurrency=4;
+md.qmu.params.analysis_driver='';
+md.qmu.params.analysis_components='';
+
+md.qmu.numberofpartitions=10;
+
+md.qmu
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/paramm.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/paramm.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/paramm.m	(revision 21239)
@@ -0,0 +1,45 @@
+%  set up a multidim parameter study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.qmu.variables=struct();
+md.qmu.variables.nuv=normal_uncertain.empty();
+md.qmu.variables.nuv(end+1)=normal_uncertain('rho_ice',917,45.85,900,1000);
+md.qmu.variables.nuv(end+1)=normal_uncertain('rho_water',1023,51.15,1000,1100);
+
+%%  a variety of responses
+
+md.qmu.responses=struct();
+md.qmu.responses.rf =response_function.empty();
+md.qmu.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vel'   ,[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%%  a parameter study
+
+md.qmu.method     =dakota_method('multidim');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+    'partitions',[4 4]);
+
+%%  a variety of parameters
+
+md.qmu.params.evaluation_concurrency=4;
+md.qmu.params.analysis_driver='';
+md.qmu.params.analysis_components='';
+
+md.qmu.numberofpartitions=10;
+
+md.qmu
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/samp.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/samp.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/samp.m	(revision 21239)
@@ -0,0 +1,57 @@
+%  set up a sampling study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.qmu.variables=struct();
+md.qmu.variables.nuv=normal_uncertain.empty();
+md.qmu.variables.nuv(end+1)=normal_uncertain('rho_ice',917,45.85);
+md.qmu.variables.nuv(end+1)=normal_uncertain('rho_water',1023,51.15);
+md.qmu.variables.nuv(end+1)=normal_uncertain('heatcapacity',2009,100.45);
+md.qmu.variables.nuv(end+1)=normal_uncertain('thermalconductivity',2.2,0.11);
+md.qmu.variables.nuv(end+1)=normal_uncertain('gravity',9.8,0.49);
+md.qmu.variables.nuv(end+1)=normal_uncertain('thickness',1,0.05);
+md.qmu.variables.nuv(end+1)=normal_uncertain('drag',1,0.05);
+
+%%  a variety of responses
+
+md.qmu.responses=struct();
+md.qmu.responses.rf =response_function.empty();
+md.qmu.responses.rf (end+1)=response_function('min_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('min_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('min_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%%  nond_sampling study
+
+md.qmu.method     =dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+    'seed',1234,...
+    'samples',20,...
+    'sample_type','lhs');
+
+%%  a variety of parameters
+
+md.qmu.params.evaluation_concurrency=4;
+md.qmu.params.analysis_driver='';
+md.qmu.params.analysis_components='';
+
+md.qmu.numberofpartitions=10;
+
+md.qmu
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/samp_direct.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/samp_direct.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/examples/samp_direct.m	(revision 21239)
@@ -0,0 +1,57 @@
+%  set up a sampling study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.qmu.variables=struct();
+md.qmu.variables.nuv=normal_uncertain.empty();
+md.qmu.variables.nuv(end+1)=normal_uncertain('rho_ice',917,45.85);
+md.qmu.variables.nuv(end+1)=normal_uncertain('rho_water',1023,51.15);
+md.qmu.variables.nuv(end+1)=normal_uncertain('heatcapacity',2009,100.45);
+md.qmu.variables.nuv(end+1)=normal_uncertain('thermalconductivity',2.2,0.11);
+md.qmu.variables.nuv(end+1)=normal_uncertain('gravity',9.8,0.49);
+md.qmu.variables.nuv(end+1)=normal_uncertain('thickness',1,0.05);
+md.qmu.variables.nuv(end+1)=normal_uncertain('drag',1,0.05);
+
+%%  a variety of responses
+
+md.qmu.responses=struct();
+md.qmu.responses.rf =response_function.empty();
+md.qmu.responses.rf (end+1)=response_function('min_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('min_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('min_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%%  nond_sampling study
+
+md.qmu.method     =dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+    'seed',1234,...
+    'samples',20,...
+    'sample_type','lhs');
+
+%%  a variety of parameters
+
+md.qmu.params.direct=true;
+md.qmu.params.analysis_driver='stressbalance';
+md.qmu.params.evaluation_concurrency=1;
+
+md.qmu.numberofpartitions=10;
+
+md.qmu
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/expandresponses.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/expandresponses.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/expandresponses.m	(revision 21239)
@@ -0,0 +1,14 @@
+function dresp=expandresponses(md,responses)
+%EXPANDRESPONSES - expand responses
+
+fnames=fieldnames(responses);
+
+for i=1:length(fnames)
+
+	fhandle=str2func([class(responses.(fnames{i})) '.empty']);
+	dresp.(fnames{i})=fhandle();
+	for j=1:length(responses.(fnames{i}))
+		%call setupdesign
+		dresp.(fnames{i})=QmuSetupResponses(md,dresp.(fnames{i}),responses.(fnames{i})(j));
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/expandvariables.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/expandvariables.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/expandvariables.m	(revision 21239)
@@ -0,0 +1,23 @@
+function dvar=expandvariables(md,variables)
+
+fnames=fieldnames(variables);
+
+for i=1:length(fnames)
+
+%  for linear constraints, just copy
+
+    if isa(variables.(fnames{i}),'linear_inequality_constraint') || ...
+       isa(variables.(fnames{i}),'linear_equality_constraint'  )
+        dvar.(fnames{i})=variables.(fnames{i});
+
+%  for variables, call the setup function
+
+    else
+        fhandle=str2func([class(variables.(fnames{i})) '.empty']);
+        dvar.(fnames{i})=fhandle();
+        for j=1:length(variables.(fnames{i}))
+            %call setupdesign
+            dvar.(fnames{i})=QmuSetupVariables(md,dvar.(fnames{i}),variables.(fnames{i})(j));
+        end
+    end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/importancefactors.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/importancefactors.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/importancefactors.m	(revision 21239)
@@ -0,0 +1,63 @@
+function factors=importancefactors(md,variablename,responsename)
+%IMPORTANCEFACTORS - compute importance factors for a certain variable and response.
+%
+%   Usage:
+%      factors=importancefactors(md,variablename,responsename)
+%
+%
+%   Example: factors=importancefactors(md,'drag','max_vel');
+%
+
+variablenamelength=length(variablename);
+
+%go through all response functions and find the one corresponding to the correct responsename
+responsefunctions=md.qmu.results.dresp_out;
+found=0;
+for i=1:length(responsefunctions),
+	if strcmpi(responsefunctions(i).descriptor,responsename),
+		found=i;
+		break;
+	end
+end
+if ~found,
+	error('importancefactors error message: could not find correct response function');
+end
+responsefunctions=responsefunctions(found);
+nfun=size(responsefunctions.var,1);
+
+%Now recover response to the correct design variable
+importancefactors=zeros(1,0);
+count=0;
+for i=1:nfun,
+	desvar=responsefunctions.var{i};
+	if strncmpi(desvar,variablename,variablenamelength),
+		importancefactors(end+1)=responsefunctions.impfac(i);
+		count=count+1;
+	end
+end
+
+if count==0,
+	error('importancefactors error message: either response does not exist, or importancefactors are empty');
+end
+
+if count==1, %we have scalar
+	factors=importancefactors;
+	return;
+else
+	%distribute importance factor
+	factors=importancefactors(md.qmu.partition'+1); %md.qmu.partition was created to index "c" style
+end
+
+%weight importancefactors by area
+%if numel(factors)==md.mesh.numberofvertices,
+%	%get areas for each vertex.
+%	aire=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y);
+%	num_elements_by_node=md.nodeconnectivity(:,end);
+%	grid_aire=zeros(md.mesh.numberofvertices,1);
+%	for i=1:md.mesh.numberofvertices,
+%		for j=1:num_elements_by_node(i),
+%			grid_aire(i)=grid_aire(i)+aire(md.nodeconnectivity(i,j));
+%		end
+%	end
+%	factors=factors./grid_aire;
+%end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/lclist_write.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/lclist_write.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/lclist_write.m	(revision 21239)
@@ -0,0 +1,61 @@
+%
+%  function to write linear constraint list
+%
+function []=lclist_write(fidi,cstring,cstring2,dvar)
+
+if isempty(dvar)
+    return;
+end
+
+%  put linear constraints into lists for writing
+
+nvar=0;
+pmatrix=[];
+plower =[];
+pupper =[];
+ptarget=[];
+pstype =[];
+pscale =[];
+
+fnames=fieldnames(dvar);
+for i=1:numel(fnames)
+    nvar=nvar+numel(dvar.(fnames{i}));
+    pmatrix=[pmatrix prop_matrix(dvar.(fnames{i}))];
+    plower =[plower  prop_lower(dvar.(fnames{i})) ];
+    pupper =[pupper  prop_upper(dvar.(fnames{i})) ];
+    ptarget=[ptarget prop_target(dvar.(fnames{i}))];
+    pstype =[pstype  prop_stype(dvar.(fnames{i})) ];
+    pscale =[pscale  prop_scale(dvar.(fnames{i})) ];
+end
+
+%  write linear constraints
+
+disp(sprintf('  Writing %d %s linear constraints.',...
+    nvar,cstring));
+
+if ~isempty(pmatrix)
+    fprintf(fidi,'\t  %s_matrix =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pmatrix,6,76);
+end
+if ~isempty(plower)
+    fprintf(fidi,'\t  %s_lower_bounds =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),plower ,6,76);
+end
+if ~isempty(pupper)
+    fprintf(fidi,'\t  %s_upper_bounds =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pupper ,6,76);
+end
+if ~isempty(ptarget)
+    fprintf(fidi,'\t  %s_targets =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),ptarget,6,76);
+end
+if ~isempty(pstype)
+    fprintf(fidi,'\t  %s_scale_types =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pstype ,6,76);
+end
+if ~isempty(pscale)
+    fprintf(fidi,'\t  %s_scales =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pscale ,6,76);
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/param_write.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/param_write.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/param_write.m	(revision 21239)
@@ -0,0 +1,24 @@
+%
+%  function to write a parameter
+%
+function []=param_write(fidi,sbeg,pname,smid,send,params)
+
+if ~isfield(params,pname)
+    warning('param_write:param_not_found',...
+        'Parameter ''%s'' not found in structure.',pname);
+    return
+end
+
+if islogical(params.(pname)) && ~params.(pname)
+    return
+end
+
+if     islogical(params.(pname))
+    fprintf(fidi,[sbeg '%s' send],pname);
+elseif ischar   (params.(pname))
+    fprintf(fidi,[sbeg '%s' smid '%s' send],pname,params.(pname));
+elseif isnumeric(params.(pname))
+    fprintf(fidi,[sbeg '%s' smid '%g' send],pname,params.(pname));
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_boxplot.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_boxplot.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_boxplot.m	(revision 21239)
@@ -0,0 +1,151 @@
+%
+%  plot a box plot of the responses.
+%
+%  []=plot_boxplot(dresp      ,params)
+%  []=plot_boxplot(dresp,descr,params)
+%  []=plot_boxplot(sampr,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of response samples)
+%    descr         (cell array, list of response descriptions)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    sample        (double vector, list of samples)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%
+%  for each response in the input array, this function plots a
+%  matlab box plot of the list of samples and annotates it
+%  with the description.  the lists of samples need not all be
+%  the same length.
+%
+%  this data would typically be contained in the dakota tabular
+%  output file and read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_boxplot(varargin)
+
+if ~nargin
+    help plot_boxplot
+    return
+end
+
+%%  process input data and assemble into matrices as needed
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lsamp=zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lsamp(i)=length(dresp(i).sample);
+    end
+    sampr=zeros(max(lsamp),length(dresp));
+    sampr(:,:)=NaN;
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        sampr(1:lsamp(i),i)=dresp(i).sample;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1,size(sampr,2));
+    end
+end
+
+for i=1:length(descr)
+    if isempty(descr{i})
+        descr(i)={['resp_' num2str(i)]};
+    end
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'ymin','ymax'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+%%  draw the plot
+
+%  draw box plot
+
+figure
+boxplot(sampr,'labels',descr,'notch','on')
+ax1=gca;
+
+%  add the annotation
+
+ylim('auto')
+[ylims]=ylim;
+if exist('ymin','var')
+    ylims(1)=ymin;
+end
+if exist('ymax','var')
+    ylims(2)=ymax;
+end
+ylim(ylims)
+
+if (size(sampr,2) == 1)
+    tlabc=descr{1};
+else
+    tlabc='Responses';
+end
+title(['Box Plot of ' tlabc],'Interpreter','none');
+xlabel('Response','Interpreter','none');
+ylabel('Value'   ,'Interpreter','none');
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_cdf.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_cdf.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_cdf.m	(revision 21239)
@@ -0,0 +1,370 @@
+%
+%  plot the CDF of the responses.
+%
+%  []=plot_cdf(dresp      ,params)
+%  []=plot_cdf(dresp,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    cdf(:,4)      (double matrix, CDF table)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    cplot         (char, 'p'/'r'/'g' to plot prob/reli/genrel)
+%    xmin          (numeric, minimum of x-axis)
+%    xmax          (numeric, maximum of x-axis)
+%    xgrid         (char, 'on' to turn on x-grid lines)
+%    ymin1         (numeric, minimum of y-axis)
+%    ymax1         (numeric, maximum of y-axis)
+%    ygrid1        (char, 'on' to turn on y-grid lines)
+%    ynorm         (char, 'yes' to use normal probability y-axis)
+%    yprob         (double vector, list of probabilities for y-axis)
+%    cline1        (char, 'off'/'no'/'-'/'--'/':'/etc. to change lines)
+%    lwidth1       (numeric, line width in points, default 0.5)
+%    cmark1        (char, 'on'/'yes'/'+'/'o'/'*'/etc. to change markers)
+%    msize1        (numeric, marker size in points, default 6)
+%    ymin2         (numeric, minimum of y-axis)
+%    ymax2         (numeric, maximum of y-axis)
+%    ygrid2        (char, 'on' to turn on y-grid lines)
+%    cline2        (char, 'off'/'no'/'-'/'--'/':'/etc. to change lines)
+%    lwidth2       (numeric, line width in points, default 0.5)
+%    cmark2        (char, 'on'/'yes'/'+'/'o'/'*'/etc. to change markers)
+%    msize2        (numeric, marker size in points, default 6)
+%    pdfplt        (char, 'bar'/'line'/'off' for pdf plots)
+%    pdfleg        (char, 'off' to turn off pdf legends)
+%    cmap          (char or numeric, colormap definition)
+%
+%  for each response in the input array, this function plots
+%  a line plot of the CDF and annotates it with the description.
+%
+%  this data would typically be contained in the dakota output
+%  file and read by dakota_out_parse.
+%
+%  "Copyright 2010, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_cdf(varargin)
+
+if ~nargin
+    help plot_cdf
+    return
+end
+
+%%  process input data and assemble into matrices as needed
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+else
+    error(['''' inputname(iarg) ''' is not a structure.']);
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'cplot','xmin','xmax','xgrid',...
+                 'ymin1','ymax1','ygrid1','ynorm','yprob',...
+                 'cline1','lwidth1','cmark1','msize1',...
+                 'ymin2','ymax2','ygrid2',...
+                 'cline2','lwidth2','cmark2','msize2',...
+                 'pdfplt','pdfleg','cmap'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+if ~exist('cplot','var') || strncmpi(cplot,'p',1)
+    cplot='Probabilit';
+    iplot=2;
+elseif strncmpi(cplot,'r',1)
+    cplot='Reliabilit';
+    iplot=3;
+elseif strncmpi(cplot,'g',1)
+    cplot='General Reliabilit';
+    iplot=4;
+end
+
+%  assemble data into matrices, based on parameters
+
+descr=cell (1,length(dresp));
+lcdfr=zeros(1,length(dresp));
+for i=1:length(dresp)
+    lcdfr(i)=size(dresp(i).cdf,1);
+end
+xdata=zeros(max(lcdfr),length(dresp));
+xdata(:,:)=NaN;
+ydata=zeros(max(lcdfr),length(dresp));
+ydata(:,:)=NaN;
+
+for i=1:length(dresp)
+    descr(i)=cellstr(dresp(i).descriptor);
+    if ~isempty(dresp(i).cdf)
+        xdata(1:lcdfr(i),i)=dresp(i).cdf(:,1);
+        if strncmpi(cplot,'p',1) && ...
+           exist('ynorm','var') && strncmpi(ynorm,'y',1)
+             ydata(1:lcdfr(i),i)=norminv_issm(dresp(i).cdf(:,iplot),0,1);
+        else
+             ydata(1:lcdfr(i),i)=             dresp(i).cdf(:,iplot);
+        end
+    end
+end
+
+%%  draw the line plot
+
+%newplot();
+figure
+ax1=axes;
+
+if ~exist('cline1','var') || strncmpi(cline1,'on' ,2) || strncmpi(cline1,'y',1)
+    cline1='-';
+elseif strncmpi(cline1,'off',3) || strncmpi(cline1,'n',1)
+    cline1='none';
+end
+if ~exist('lwidth1','var')
+    lwidth1=0.5;
+end
+if ~exist('cmark1','var') || strncmpi(cmark1,'off',3) || strncmpi(cmark1,'n',1)
+    cmark1='none';
+elseif strncmpi(cmark1,'on' ,2) || strncmpi(cmark1,'y',1) || ...
+       (length(cmark1) > 1)
+    cmark1='+';
+end
+if ~exist('msize1','var')
+    msize1=6;
+end
+
+hl1=line(xdata,ydata,'Parent',ax1,'LineStyle',cline1,'LineWidth',lwidth1,...
+         'Marker',cmark1,'MarkerSize',msize1);
+
+%  set lines to have a continuous colormap
+
+if exist('cmap','var')
+    colormap(cmap)
+end
+
+cmap=colormap;
+for i=1:length(hl1)
+    if (length(hl1) > 1)
+        imap=round((i-1)/(length(hl1)-1)*(size(cmap,1)-1))+1;
+    else
+        imap=1;
+    end
+    set(hl1(i),'Color',cmap(imap,:))
+end
+
+xlim('auto')
+[xlims]=xlim;
+if exist('xmin','var')
+    xlims(1)=xmin;
+end
+if exist('xmax','var')
+    xlims(2)=xmax;
+end
+xlim(xlims)
+if exist('xgrid','var') && strncmpi(xgrid,'on',2)
+    set(ax1,'XGrid','on')
+end
+if strncmpi(cplot,'p',1)
+    [ylims]=[0 1];
+else
+    ylim('auto')
+    [ylims]=ylim;
+end
+if exist('ymin1','var')
+    ylims(1)=ymin1;
+end
+if exist('ymax1','var')
+    ylims(2)=ymax1;
+end
+ylim(ylims)
+if exist('ygrid1','var') && strncmpi(ygrid1,'on',2)
+    set(ax1,'YGrid','on')
+end
+
+%  add the annotation
+
+if strncmpi(cplot,'p',1) && ...
+   exist('ynorm','var') && strncmpi(ynorm,'y',1)
+%  copied and adapted from matlab normplot function
+    if ~exist('yprob','var')
+        yprob = [0.001 0.003 0.01 0.02 0.05 0.10 0.25 0.5...
+                 0.75 0.90 0.95 0.98 0.99 0.997 0.999];
+    end
+
+%  matlab docs say str2mat is obsolete, so replace (and eliminate redundancy)
+%     label1= str2mat('0.001','0.003', '0.01','0.02','0.05','0.10','0.25','0.50');
+%     label2= str2mat('0.75','0.90','0.95','0.98','0.99','0.997', '0.999');
+%     label = [label1;label2];
+    label=cell(1,length(yprob));
+    for i=1:length(yprob)
+        label(i)=cellstr(num2str(yprob(i)));
+    end
+
+    tick  = norminv_issm(yprob,0,1);
+    set(ax1,'YTick',tick,'YTickLabel',label);
+    ylim([tick(1) tick(end)])
+end
+
+title([cplot 'ies for Response Levels'])
+xlabel('Response Level')
+ylabel([cplot 'y'])
+
+hleg1=legend(ax1,descr(1:length(hl1)),'Location','NorthWest',...
+             'Color','none','Interpreter','none');
+
+%%  generate the probability distribution functions
+
+if ~exist('pdfplt','var') || ~strcmpi(pdfplt,'off')
+    xpdf =zeros(max(lcdfr)-1,length(dresp));
+    xpdf (:,:)=NaN;
+    ypdf =zeros(max(lcdfr)-1,length(dresp));
+    ypdf (:,:)=NaN;
+    xplot=zeros(2*max(lcdfr),length(dresp));
+    xplot(:,:)=NaN;
+    yplot=zeros(2*max(lcdfr),length(dresp));
+    yplot(:,:)=NaN;
+
+    for i=1:length(dresp)
+        descr(i)=cellstr([dresp(i).descriptor ' pdf']);
+        if ~isempty(dresp(i).cdf) && (lcdfr(i) > 1)
+            xpdf (1:lcdfr(i)-1,i)=(dresp(i).cdf(1:lcdfr(i)-1,1)+...
+                                   dresp(i).cdf(2:lcdfr(i)  ,1))/2;
+            ypdf (1:lcdfr(i)-1,i)=(dresp(i).cdf(2:lcdfr(i)  ,2)-...
+                                   dresp(i).cdf(1:lcdfr(i)-1,2))./...
+                                  (dresp(i).cdf(2:lcdfr(i)  ,1)-...
+                                   dresp(i).cdf(1:lcdfr(i)-1,1));
+            for j=1:lcdfr(i)-1
+                xplot(2*(j-1)+1,i)=dresp(i).cdf(j  ,1);
+                yplot(2*(j-1)+1,i)=ypdf (j,i);
+                xplot(2*(j-1)+2,i)=dresp(i).cdf(j+1,1);
+                yplot(2*(j-1)+2,i)=ypdf (j,i);
+            end
+        end
+    end
+
+    if strcmpi(pdfplt,'line')
+        xplot=xpdf;
+        yplot=ypdf;
+    end
+
+%  draw the line plot
+
+%  (see "Using Multiple X- and Y-Axes" and "Overlaying Other
+%  Plots on Bar Graphs", or search on "YAxisLocation right")
+
+%     hold all
+%     hold on
+%     plot(edges,cdf)
+%     plotyy([],[],edges,cdf)
+
+%  ticks from the bar plot will show through on the right side,
+%  so make equal number of ticks for the line plot on right side
+
+    nytick=length(get(ax1,'YTick'));
+%     ylim('auto')
+%     [ylims]=ylim;
+    [ylims]=[0 ceil(max(max(yplot))/0.1-0.1)*0.1];
+    if exist('ymin2','var')
+        ylims(1)=ymin2;
+    end
+    if exist('ymax2','var')
+        ylims(2)=ymax2;
+    else
+        ylims(2)=ylims(1)+(nytick-1)/(nytick-1-1)*(ylims(2)-ylims(1));
+    end
+%     ylim(ylims)
+    ytinc =(ylims(2)-ylims(1))/(nytick-1);
+
+    ax2=axes('Position',get(ax1,'Position'),...
+             'XLim',get(ax1,'XLim'),...
+             'XTick',get(ax1,'XTick'),...
+             'YLim',ylims,...
+             'YTick',[ylims(1):ytinc:ylims(2)],...
+             'XAxisLocation','bottom','YAxisLocation','right',...
+             'Color','none','Layer','top');
+
+    if ~exist('cline2','var') || strncmpi(cline2,'on' ,2) || strncmpi(cline2,'y',1)
+        cline2='-';
+    elseif strncmpi(cline2,'off',3) || strncmpi(cline2,'n',1)
+        cline2='none';
+    end
+    if ~exist('lwidth2','var')
+        lwidth2=0.5;
+    end
+    if ~exist('cmark2','var') || strncmpi(cmark2,'off',3) || strncmpi(cmark2,'n',1)
+        cmark2='none';
+    elseif strncmpi(cmark2,'on' ,2) || strncmpi(cmark2,'y',1) || ...
+           (length(cmark2) > 1)
+        cmark2='+';
+    end
+    if ~exist('msize2','var')
+        msize2=6;
+    end
+
+    hl2=line(xplot,yplot,'Parent',ax2,'LineStyle',cline2,'LineWidth',lwidth2,...
+             'Marker',cmark2,'MarkerSize',msize2);
+
+%  set line property colors line property
+
+    cmap=colormap;
+    for i=1:length(hl2)
+        if (length(hl2) > 1)
+            imap=round((i-1)/(length(hl2)-1)*(size(cmap,1)-1))+1;
+        else
+            imap=1;
+        end
+        set(hl2(i),'Color',get(hl1(i),'Color'))
+     end
+
+%  add the annotation
+
+    ylabel('Probability Distribution Function');
+
+    if ~exist('cdfleg','var') || ~strcmpi(cdfleg,'off')
+% legend doesn't combine with bar chart above
+        hleg2=legend(ax2,descr(1:length(hl2)),'Location','NorthEast',...
+                     'Color','none','Interpreter','none');
+%         set(hleg2,'Color','white')
+    end
+
+    set(gcf,'PaperPositionMode','auto')
+%     hold off
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_hist_norm.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_hist_norm.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_hist_norm.m	(revision 21239)
@@ -0,0 +1,468 @@
+%
+%  plot a relative histogram and cdf optionally along with
+%  a normal distribution.
+%
+%  []=plot_hist_norm(dresp1      ,dresp2      ,params)
+%  []=plot_hist_norm(dresp1,desc1,dresp2,desc2,params)
+%  []=plot_hist_norm(sampr ,descr,mu,sigma    ,params)
+%
+%  where the required input is:
+%    dresp1        (structure array, responses)
+%      or
+%    dresp1        (structure array, responses)
+%    desc1         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of samples)
+%    descr         (cell array, list of descriptions)
+%
+%  and the optional input is:
+%    dresp2        (structure array, responses)
+%      or
+%    dresp2        (structure array, responses)
+%    desc2         (cell array, list of response descriptions desired)
+%      or
+%    mu            (double vector, means)
+%    sigma         (double vector, standard deviations)
+%
+%  the required fields of dresp1 are:
+%    descriptor    (char, description)
+%    sample        (double vector, list of samples)
+%
+%  and the required fields of dresp2 are:
+%    mean          (double, mean of sample)
+%    stddev        (double, standard deviation of sample)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    hmin          (numeric, minimum for histogram)
+%    hmax          (numeric, maximum for histogram)
+%    hnint         (numeric, number of intervals for histogram)
+%    ymin1         (numeric, minimum of histogram y-axis)
+%    ymax1         (numeric, maximum of histogram y-axis)
+%    ymin2         (numeric, minimum of cdf y-axis)
+%    ymax2         (numeric, maximum of cdf y-axis)
+%    nrmplt        (char, pass 'l' or 'off' to change nrm plots 
+%                   from default of 'bar' or 'b' to 'line' instead, 
+%                   pass 's' to change nrm plot to 'stairs')                                                  
+%    cdfplt        (char, 'off' to turn off cdf line plots)
+%    cdfleg        (char, 'off' to turn off cdf legends)
+%    cmap          (char or numeric, colormap definition)
+%
+%  for each response in the input array, this function
+%  calculates and plots a relative histogram and CDF of the list
+%  of samples, and annotates it with the description.  in
+%  addition, a mean and standard deviation may be supplied or,
+%  if empty, calculated so that a normal distribution and CDF may
+%  be plotted.
+%
+%  dresp1 data would typically be contained in the dakota tabular
+%  output file from a sampling analysis, and dresp2 data would
+%  typically be contained in the dakota output file from a local
+%  sensitivity analysis, both read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_hist_norm(varargin)
+
+if ~nargin
+    help plot_hist_norm
+    return
+end
+
+%%  process input data and assemble into matrices as needed
+
+%  responses for histograms
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp1=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp1=struc_desc(dresp1,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp1));
+    lsamp=zeros(1,length(dresp1));
+    for i=1:length(dresp1)
+        lsamp(i)=length(dresp1(i).sample);
+    end
+    sampr=zeros(max(lsamp),length(dresp1));
+    sampr(:,:)=NaN;
+
+    for i=1:length(dresp1)
+        descr(i)=cellstr(dresp1(i).descriptor);
+        sampr(1:lsamp(i),i)=dresp1(i).sample;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    lsamp(1:size(sampr,2))=size(sampr,1);
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1:size(sampr,2));
+    end
+end
+
+for i=1:length(descr)
+    if isempty(descr{i})
+        descr(i)={['resp_' num2str(i)]};
+    end
+end
+
+%  responses for normal distributions
+
+if     iarg <= nargin && isstruct(varargin{iarg})
+    dresp2=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp2=struc_desc(dresp2,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    mu   =zeros(1,length(dresp2));
+    sigma=zeros(1,length(dresp2));
+
+    for i=1:length(dresp2)
+        mu   (i)=dresp2(i).mean;
+        sigma(i)=dresp2(i).stddev;
+    end
+elseif iarg+1 <= nargin && ...
+       isnumeric(varargin{iarg}) && isnumeric(varargin{iarg+1})
+    if ~isempty(varargin{iarg})
+        mu   =varargin{iarg};
+    else
+        mu   =mean(sampr);
+        display('Using calculated means.')
+    end
+    iarg=iarg+1;
+    if ~isempty(varargin{iarg})
+        sigma=varargin{iarg};
+    else
+        sigma=std(sampr);
+        display('Using calculated standard deviations.')
+    end
+    iarg=iarg+1;
+else
+    mu   =mean(sampr);
+    display('Using calculated means.')
+    sigma=std(sampr);
+    display('Using calculated standard deviations.')
+end
+
+%  parameters
+LineWidth=1;
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'hmin','hmax','hnint',...
+                 'ymin1','ymax1','ymin2','ymax2',...
+                 'nrmplt','EdgeColor','FaceColor','LineWidth','cdfplt',...
+				     'cdfleg','nrmleg','cmap','titleplt','xlabelplt','ylabelplt','FontSize'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+%%  generate the intervals
+
+if ~exist('hmin','var')
+    hmin=min(min(sampr));
+end
+if ~exist('hmax','var')
+    hmax=max(max(sampr));
+end
+if ~exist('hnint','var')
+    hnint=50;
+end
+edges=hmin:(hmax-hmin)/hnint:hmax;
+
+%%  generate the histogram counts and make them relative
+
+%  note that for the histc function:
+%  n(k) counts the value x(i) if edges(k) <= x(i) < edges(k+1).
+%  The last bin counts any values of x that match edges(end).
+%  Values outside the values in edges are not counted.
+%  Use -inf and inf in edges to include all non-NaN values.
+
+dhistc=histc(sampr,edges);
+for i=1:size(sampr,2)
+    dbelow(i)  =length(find(sampr(:,i)<edges(  1)))/lsamp(i);
+    dhistc(:,i)=dhistc(:,i)                        /lsamp(i);
+    dabove(i)  =length(find(sampr(:,i)>edges(end)))/lsamp(i);
+end
+
+ncol=size(sampr,2);
+if exist('mu','var') && exist('sigma','var')
+    for i=1:ncol
+        dbelow(end+1)=normcdf_issm(edges(  1),mu(i),sigma(i));
+        dhistc(1:size(dhistc,1)-1,end+1)=...
+            normcdf_issm(edges(2:end  ),mu(i),sigma(i))-...
+            normcdf_issm(edges(1:end-1),mu(i),sigma(i));
+        dabove(end+1)=norminv_issm(edges(end),mu(i),sigma(i));
+        if exist('descr','var')
+            descr(end+1)={[descr{i} ' norm']};
+        end
+    end
+end
+
+%  draw the bar plot
+
+%figure
+if ~exist('nrmplt','var')
+    nrmplt='bar';
+end
+
+hold all
+% hl1=bar(edges(1:end-1),dhistc(1:end-1,1:2*ncol));
+% hl1=line(edges(1:end-1),dhistc(1:end-1,1:2*ncol));
+if     strncmpi(nrmplt,'b',1)
+    hl1=bar (edges(1:end-1),dhistc(1:end-1,1:2*ncol));
+elseif strncmpi(nrmplt,'l',1)
+    hl1=bar (edges(1:end-1),dhistc(1:end-1,1:1*ncol));
+    hl1(1*ncol+1:2*ncol)=...
+        line(edges(1:end-1),dhistc(1:end-1,1*ncol+1:2*ncol),...
+             'LineWidth',LineWidth);
+elseif strncmpi(nrmplt,'s',1)
+	 hl1=stairs(edges(1:end-1)-(hmax-hmin)/hnint/2,dhistc(1:end-1,1:ncol));
+elseif strncmpi(nrmplt,'off',3)
+    hl1=bar (edges(1:end-1),dhistc(1:end-1,1:1*ncol));
+end
+ax1=gca;
+hold off
+
+%  set barseries properties for clarity
+
+if (ncol > 1) || strncmpi(nrmplt,'b',1)
+    for i=1:length(hl1)
+        if strcmpi(get(hl1(i),'Type'),'hggroup')
+            set(hl1(i),'BarWidth',1,'EdgeColor','none');
+        end
+    end
+end
+
+%set face and edge color
+if ~strncmpi(nrmplt,'s',1)
+	for i=1:length(hl1)
+		set(hl1(i),'EdgeColor',EdgeColor,'FaceColor',FaceColor,'LineWidth',LineWidth);
+	end
+end
+
+%  set bars and lines to have a continuous colormap
+%  (if barseries is "flat", must interpolate and round to colormap)
+
+if exist('cmap','var')
+    colormap(cmap)
+end
+
+cmap=colormap;
+for i=1:length(hl1)
+	if (length(hl1) > 1)
+		imap=round((i-1)/(length(hl1)-1)*(size(cmap,1)-1))+1;
+	else
+		imap=1;
+	end
+	if ~strncmpi(nrmplt,'s',1) && strcmpi(get(hl1(i),'Type'),'hggroup')
+		if ischar(get(hl1(i),'FaceColor')) && ...
+				strcmpi(get(hl1(i),'FaceColor'),'flat')
+			set(hl1(i),'FaceColor',cmap(imap,:))
+		else
+			set(hl1(i),'FaceColor',get(hl1(i),'FaceColor'))
+		end
+	elseif strcmpi(get(hl1(i),'Type'),'line')
+		set(hl1(i),'Color',cmap(imap,:))
+	elseif strncmpi(nrmplt,'s',1)
+		set(hl1(i),'Color',EdgeColor,'LineWidth',2)
+	end
+end
+
+xlim('auto')
+[xlims]=xlim;
+if exist('hmin','var')
+    xlims(1)=edges(1);
+end
+if exist('hmax','var')
+    xlims(2)=edges(end-1);
+end
+xlim(xlims)
+
+ylim('auto')
+[ylims]=ylim;
+if exist('ymin1','var')
+    ylims(1)=ymin1;
+end
+if exist('ymax1','var')
+    ylims(2)=ymax1;
+end
+ylim(ylims)
+
+if exist('FontSize','var'),
+	fontsize=FontSize;
+else
+	fontsize=12;
+end
+
+%  add the annotation
+if exist('titleplt','var'),
+	title(titleplt,'FontSize',fontsize);
+else
+	if exist('cdfplt','var') && ...
+	   (strncmpi(cdfplt,'off',3) || strncmpi(cdfplt,'n',1))
+		title('Relative Frequency Histogram','FontSize',fontsize)
+	else
+		title('Relative Frequency Histogram with CDF','FontSize',fontsize)
+	end
+end
+
+if exist('xlabelplt','var'),
+	xlabel(xlabelplt,'FontSize',fontsize);
+else
+	xlabel('Interval Edge Value');
+end
+if exist('ylabelplt','var'),
+	ylabel(ylabelplt,'FontSize',fontsize);
+else
+	ylabel('Relative Frequency');
+end
+if exist('descr','var')
+	if ~strncmpi(cdfleg,'off',3),
+		hleg1=legend(ax1,descr(1:length(hl1)),'Location','Best','Color','none','Interpreter','none');
+	end
+else
+	if ~exist('cdfleg','var') || (~strncmpi(cdfleg,'off',3) || ~strncmpi(cdfleg,'n',1))
+		hleg1=legend(ax1);
+	end
+end
+
+%%  generate the cumulative distribution functions
+
+if ~exist('cdfplt','var') || ...
+   (~strncmpi(cdfplt,'off',3) && ~strncmpi(cdfplt,'n',1))
+%     cdf=zeros(size(dhistc));
+%     cdf(1,:)=dhistc(1,:);
+%     for i=2:size(dhistc,1)
+%         cdf(i,:)=cdf(i-1,:)+dhistc(i,:);
+%     end
+    cdf=cumsum(dhistc);
+    for i=1:size(dhistc,2)
+        cdf(:,i)=dbelow(i)+cdf(:,i);
+    end
+    if exist('descr','var')
+        ncol=length(descr);
+        for i=1:ncol
+            cdescr(i)={[descr{i} ' cdf']};
+        end
+    end
+
+%  draw the line plot
+
+%  (see "Using Multiple X- and Y-Axes" and "Overlaying Other
+%  Plots on Bar Graphs", or search on "YAxisLocation right")
+
+%     hold all
+%     hold on
+%     plot(edges,cdf)
+%     plotyy([],[],edges,cdf)
+
+%  ticks from the bar plot will show through on the right side,
+%  so make equal number of ticks for the line plot on right side
+
+    nytick=length(get(ax1,'YTick'));
+%     ylim('auto')
+%     [ylims]=ylim;
+    [ylims]=[0 ceil(max(max(cdf))/0.1-0.1)*0.1];
+    if exist('ymin2','var')
+        ylims(1)=ymin2;
+    end
+    if exist('ymax2','var')
+        ylims(2)=ymax2;
+    else
+        ylims(2)=ylims(1)+(nytick-1)/(nytick-1-1)*(ylims(2)-ylims(1));
+    end
+%     ylim(ylims)
+    ytinc =(ylims(2)-ylims(1))/(nytick-1);
+
+    ax2=axes('Position',get(ax1,'Position'),...
+             'XLim',get(ax1,'XLim'),...
+             'XTick',get(ax1,'XTick'),...
+             'YLim',ylims,...
+             'YTick',[ylims(1):ytinc:ylims(2)],...
+             'XAxisLocation','bottom','YAxisLocation','right',...
+             'Color','none','Layer','top');
+    hl2=line(edges(1:end-1),cdf(1:end-1,1:length(hl1)),'Parent',ax2);
+
+%  set line property colors to match barseries or line property
+%  (if barseries is "flat", must interpolate and round to colormap)
+
+    cmap=colormap;
+    for i=1:length(hl2)
+        if (length(hl2) > 1)
+            imap=round((i-1)/(length(hl2)-1)*(size(cmap,1)-1))+1;
+        else
+            imap=1;
+        end
+        if     strcmpi(get(hl1(i),'Type'),'hggroup')
+            if ischar(get(hl1(i),'FaceColor')) && ...
+               strcmpi(get(hl1(i),'FaceColor'),'flat')
+                set(hl2(i),'Color',cmap(imap,:))
+            else
+                set(hl2(i),'Color',get(hl1(i),'FaceColor'))
+            end
+        elseif strcmpi(get(hl1(i),'Type'),'line')
+            set(hl2(i),'Color',get(hl1(i),'Color'))
+        end
+    end
+
+%  add the annotation
+
+    ylabel('Cumulative Percent');
+
+    if ~exist('cdfleg','var') || ...
+       (~strncmpi(cdfleg,'off',3) || ~strncmpi(cdfleg,'n',1))
+% legend doesn't combine with bar chart above
+        if exist('cdescr','var')
+            hleg2=legend(ax2,cdescr(1:length(hl2)),'Location','Best',...
+                         'Color','none','Interpreter','none');
+%             set(hleg2,'Color','white')
+        else
+            hleg2=legend(ax2,'Location','Best');
+%             set(hleg2,'Color','white')
+        end
+    end
+
+    set(gcf,'PaperPositionMode','auto')
+%     hold off
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_hist_norm_ci.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_hist_norm_ci.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_hist_norm_ci.m	(revision 21239)
@@ -0,0 +1,466 @@
+%
+%  plot a relative histogram and cdf optionally along with a
+%  normal distribution for the sample and confidence intervals.
+%
+%  []=plot_hist_norm_ci(dresp      ,params)
+%  []=plot_hist_norm_ci(dresp,descr,params)
+%  []=plot_hist_norm_ci(sampr,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of samples)
+%    descr         (cell array, list of descriptions)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    sample        (double vector, list of samples)
+%
+%  and the optional fields of dresp are:
+%    mean          (double, mean of sample)
+%    stddev        (double, standard deviation of sample)
+%    meanci(2)     (double, confidence interval of mean)
+%    stddevci(2)   (double, confidence interval of standard deviation)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  and the optional input is:
+%    hmin          (numeric, minimum for histogram)
+%    hmax          (numeric, maximum for histogram)
+%    hnint         (numeric, number of intervals for histogram)
+%    ymin1         (numeric, minimum of histogram y-axis)
+%    ymax1         (numeric, maximum of histogram y-axis)
+%    ymin2         (numeric, minimum of cdf y-axis)
+%    ymax2         (numeric, maximum of cdf y-axis)
+%    nrmplt        (char, 'line' or 'off' to change nrm plots from 'bar')
+%    ciplt         (char, 'line' or 'off' to change ci plots from 'bar')
+%    cdfplt        (char, 'off' to turn off cdf line plots)
+%    cdfleg        (char, 'off' to turn off cdf legends)
+%    cmap          (char or numeric, colormap definition)
+%
+%  for each response in the input array, this function
+%  calculates and plots a relative histogram and CDF of the list
+%  of samples, and annotates it with the description.  in
+%  addition, the normal distribution and CDF are plotted, and
+%  four CDF's are plotted for the confidence intervals.
+%
+%  dresp data would typically be contained in the dakota tabular
+%  output file from a sampling analysis, read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_hist_norm_ci(varargin)
+
+if ~nargin
+    help plot_hist_norm_ci
+    return
+end
+
+%%  process input data and assemble into matrices as needed
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lsamp=zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lsamp(i)=length(dresp(i).sample);
+    end
+    sampr=zeros(max(lsamp),length(dresp));
+    sampr(:,:)=NaN;
+
+    mu     =zeros(1,length(dresp));
+    sigma  =zeros(1,length(dresp));
+    muci   =zeros(2,length(dresp));
+    sigmaci=zeros(2,length(dresp));
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        sampr(1:lsamp(i),i)=dresp(i).sample;
+        mu     (i)  =dresp(i).mean;
+        sigma  (i)  =dresp(i).stddev;
+        muci   (:,i)=dresp(i).meanci;
+        sigmaci(:,i)=dresp(i).stddevci;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    lsamp(1:size(sampr,2))=size(sampr,1);
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1,size(sampr,2));
+    end
+
+    mu     =zeros(1,size(sampr,2));
+    sigma  =zeros(1,size(sampr,2));
+    muci   =zeros(2,size(sampr,2));
+    sigmaci=zeros(2,size(sampr,2));
+    for i=1:size(sampr,2)
+%  calculate 95% confidence intervals (same as dakota)
+        [mu(i),sigma(i),muci(:,i),sigmaci(:,i)]=...
+            normfit_issm(sampr(:,i),0.05);
+    end
+    display('Using calculated normal fits.')
+end
+
+for i=1:length(descr)
+    if isempty(descr{i})
+        descr(i)={['resp_' num2str(i)]};
+    end
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'hmin','hmax','hnint',...
+                 'ymin1','ymax1','ymin2','ymax2',...
+                 'nrmplt','ciplt','cdfplt','cdfleg','cmap'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+%%  generate the intervals
+
+if ~exist('hmin','var')
+    hmin=min(min(sampr));
+end
+if ~exist('hmax','var')
+    hmax=max(max(sampr));
+end
+if ~exist('hnint','var')
+    hnint=50;
+end
+edges=hmin:(hmax-hmin)/hnint:hmax;
+
+%%  generate the histogram counts and make them relative
+
+%  note that for the histc function:
+%  n(k) counts the value x(i) if edges(k) <= x(i) < edges(k+1).
+%  The last bin counts any values of x that match edges(end).
+%  Values outside the values in edges are not counted.
+%  Use -inf and inf in edges to include all non-NaN values.
+
+dhistc=histc(sampr,edges);
+for i=1:size(sampr,2)
+    dbelow(i)  =length(find(sampr(:,i)<edges(  1)))/lsamp(i);
+    dhistc(:,i)=dhistc(:,i)                        /lsamp(i);
+    dabove(i)  =length(find(sampr(:,i)>edges(end)))/lsamp(i);
+end
+
+ncol=size(sampr,2);
+if exist('mu','var') && exist('sigma','var')
+    for i=1:ncol
+        dbelow(end+1)=normcdf_issm(edges(  1),mu(i),sigma(i));
+        dhistc(1:size(dhistc,1)-1,end+1)=...
+            normcdf_issm(edges(2:end  ),mu(i),sigma(i))-...
+            normcdf_issm(edges(1:end-1),mu(i),sigma(i));
+        dabove(end+1)=norminv_issm(edges(end),mu(i),sigma(i));
+        if exist('descr','var')
+            descr(end+1)={[descr{i} ' norm']};
+        end
+    end
+end
+
+if exist('muci','var') && exist('sigmaci','var')
+    for i=1:ncol
+        dbelow(end+1)=normcdf_issm(edges(  1),muci(1,i),sigmaci(2,i));
+        dhistc(1:size(dhistc,1)-1,end+1)=...
+            normcdf_issm(edges(2:end  ),muci(1,i),sigmaci(2,i))-...
+            normcdf_issm(edges(1:end-1),muci(1,i),sigmaci(2,i));
+        dabove(end+1)=norminv_issm(edges(end),muci(1,i),sigmaci(2,i));
+        if exist('descr','var')
+            descr(end+1)={[descr{i} ' norm-+']};
+        end
+    end
+    for i=1:ncol
+        dbelow(end+1)=normcdf_issm(edges(  1),muci(1,i),sigmaci(1,i));
+        dhistc(1:size(dhistc,1)-1,end+1)=...
+            normcdf_issm(edges(2:end  ),muci(1,i),sigmaci(1,i))-...
+            normcdf_issm(edges(1:end-1),muci(1,i),sigmaci(1,i));
+        dabove(end+1)=norminv_issm(edges(end),muci(1,i),sigmaci(1,i));
+        if exist('descr','var')
+            descr(end+1)={[descr{i} ' norm--']};
+        end
+    end
+    for i=1:ncol
+        dbelow(end+1)=normcdf_issm(edges(  1),muci(2,i),sigmaci(1,i));
+        dhistc(1:size(dhistc,1)-1,end+1)=...
+            normcdf_issm(edges(2:end  ),muci(2,i),sigmaci(1,i))-...
+            normcdf_issm(edges(1:end-1),muci(2,i),sigmaci(1,i));
+        dabove(end+1)=norminv_issm(edges(end),muci(2,i),sigmaci(1,i));
+        if exist('descr','var')
+            descr(end+1)={[descr{i} ' norm+-']};
+        end
+    end
+    for i=1:ncol
+        dbelow(end+1)=normcdf_issm(edges(  1),muci(2,i),sigmaci(2,i));
+        dhistc(1:size(dhistc,1)-1,end+1)=...
+            normcdf_issm(edges(2:end  ),muci(2,i),sigmaci(2,i))-...
+            normcdf_issm(edges(1:end-1),muci(2,i),sigmaci(2,i));
+        dabove(end+1)=norminv_issm(edges(end),muci(2,i),sigmaci(2,i));
+        if exist('descr','var')
+            descr(end+1)={[descr{i} ' norm++']};
+        end
+    end
+end
+
+%  draw the bar plot
+
+figure
+if ~exist('nrmplt','var')
+    nrmplt='bar';
+end
+if ~exist('ciplt','var')
+    ciplt='bar';
+end
+
+hold all
+% hl1=bar(edges(1:end-1),dhistc(1:end-1,1:6*ncol));
+% hl1=line(edges(1:end-1),dhistc(1:end-1,1:6*ncol));
+if     strncmpi(nrmplt,'b',1)
+    if     strncmpi(ciplt,'b',1)
+        hl1=bar (edges(1:end-1),dhistc(1:end-1,1:6*ncol));
+    elseif strncmpi(ciplt,'l',1)
+        hl1=bar (edges(1:end-1),dhistc(1:end-1,1:2*ncol));
+        hl1(2*ncol+1:6*ncol)=...
+            line(edges(1:end-1),dhistc(1:end-1,2*ncol+1:6*ncol),...
+                 'LineWidth',2);
+    elseif strncmpi(ciplt,'off',3) || strncmpi(ciplt,'n',1)
+        hl1=bar (edges(1:end-1),dhistc(1:end-1,1:2*ncol));
+    end
+elseif strncmpi(nrmplt,'l',1)
+    if     strncmpi(ciplt,'b',1) || strncmpi(ciplt,'l',1)
+        hl1=bar (edges(1:end-1),dhistc(1:end-1,1:1*ncol));
+        hl1(1*ncol+1:2*ncol)=...
+            line(edges(1:end-1),dhistc(1:end-1,1*ncol+1:2*ncol),...
+                 'LineWidth',2);
+        hl1(2*ncol+1:6*ncol)=...
+            line(edges(1:end-1),dhistc(1:end-1,2*ncol+1:6*ncol),...
+                 'LineWidth',1);
+    elseif strncmpi(ciplt,'off',3) || strncmpi(ciplt,'n',1)
+        hl1=bar (edges(1:end-1),dhistc(1:end-1,1:1*ncol));
+        hl1(1*ncol+1:2*ncol)=...
+            line(edges(1:end-1),dhistc(1:end-1,1*ncol+1:2*ncol),...
+                 'LineWidth',2);
+    end
+elseif strncmpi(nrmplt,'off',3) || strncmpi(nrmplt,'n',1)
+    hl1=bar (edges(1:end-1),dhistc(1:end-1,1:1*ncol));
+end
+ax1=gca;
+hold off
+
+%  set barseries properties for clarity
+
+if (ncol > 1) || strncmpi(nrmplt,'b',1)
+    for i=1:length(hl1)
+        if strcmpi(get(hl1(i),'Type'),'hggroup')
+            set(hl1(i),'BarWidth',1,'EdgeColor','none');
+        end
+    end
+end
+
+%  set bars and lines to have a continuous colormap
+%  (if barseries is "flat", must interpolate and round to colormap)
+
+if exist('cmap','var')
+    colormap(cmap)
+end
+
+cmap=colormap;
+for i=1:length(hl1)
+    if (length(hl1) > 1)
+        imap=round((i-1)/(length(hl1)-1)*(size(cmap,1)-1))+1;
+    else
+        imap=1;
+    end
+    if     strcmpi(get(hl1(i),'Type'),'hggroup')
+        if ischar(get(hl1(i),'FaceColor')) && ...
+           strcmpi(get(hl1(i),'FaceColor'),'flat')
+            set(hl1(i),'FaceColor',cmap(imap,:))
+        else
+            set(hl1(i),'FaceColor',get(hl1(i),'FaceColor'))
+        end
+    elseif strcmpi(get(hl1(i),'Type'),'line')
+        set(hl1(i),'Color',cmap(imap,:))
+    end
+end
+
+xlim('auto')
+[xlims]=xlim;
+if exist('hmin','var')
+    xlims(1)=edges(1);
+end
+if exist('hmax','var')
+    xlims(2)=edges(end-1);
+end
+xlim(xlims)
+
+ylim('auto')
+[ylims]=ylim;
+if exist('ymin1','var')
+    ylims(1)=ymin1;
+end
+if exist('ymax1','var')
+    ylims(2)=ymax1;
+end
+ylim(ylims)
+
+%  add the annotation
+
+if exist('cdfplt','var') && ...
+   (strncmpi(cdfplt,'off',3) || strncmpi(cdfplt,'n',1))
+    title('Relative Frequency Histogram')
+else
+    title('Relative Frequency Histogram with CDF')
+end
+xlabel('Interval Edge Value');
+ylabel('Relative Frequency');
+
+if exist('descr','var')
+    hleg1=legend(ax1,descr(1:length(hl1)),'Location','NorthWest',...
+                 'Color','none','Interpreter','none');
+else
+    hleg1=legend(ax1);
+end
+
+%%  generate the cumulative distribution functions
+
+if ~exist('cdfplt','var') || ...
+   (~strncmpi(cdfplt,'off',3) && ~strncmpi(cdfplt,'n',1))
+%     cdf=zeros(size(dhistc));
+%     cdf(1,:)=dhistc(1,:);
+%     for i=2:size(dhistc,1)
+%         cdf(i,:)=cdf(i-1,:)+dhistc(i,:);
+%     end
+    cdf=cumsum(dhistc);
+    for i=1:size(dhistc,2)
+        cdf(:,i)=dbelow(i)+cdf(:,i);
+    end
+    if exist('descr','var')
+        ncol=length(descr);
+        for i=1:ncol
+            cdescr(i)={[descr{i} ' cdf']};
+        end
+    end
+
+%  draw the line plot
+
+%  (see "Using Multiple X- and Y-Axes" and "Overlaying Other
+%  Plots on Bar Graphs", or search on "YAxisLocation right")
+
+%     hold all
+%     hold on
+%     plot(edges,cdf)
+%     plotyy([],[],edges,cdf)
+
+%  ticks from the bar plot will show through on the right side,
+%  so make equal number of ticks for the line plot on right side
+
+    nytick=length(get(ax1,'YTick'));
+%     ylim('auto')
+%     [ylims]=ylim;
+    [ylims]=[0 ceil(max(max(cdf))/0.1-0.1)*0.1];
+    if exist('ymin2','var')
+        ylims(1)=ymin2;
+    end
+    if exist('ymax2','var')
+        ylims(2)=ymax2;
+    else
+        ylims(2)=ylims(1)+(nytick-1)/(nytick-1-1)*(ylims(2)-ylims(1));
+    end
+%     ylim(ylims)
+    ytinc =(ylims(2)-ylims(1))/(nytick-1);
+
+    ax2=axes('Position',get(ax1,'Position'),...
+             'XLim',get(ax1,'XLim'),...
+             'XTick',get(ax1,'XTick'),...
+             'YLim',ylims,...
+             'YTick',[ylims(1):ytinc:ylims(2)],...
+             'XAxisLocation','bottom','YAxisLocation','right',...
+             'Color','none','Layer','top');
+    hl2=line(edges(1:end-1),cdf(1:end-1,1:length(hl1)),'Parent',ax2);
+
+%  set line property colors to match barseries or line property
+%  (if barseries is "flat", must interpolate and round to colormap)
+
+    cmap=colormap;
+    for i=1:length(hl2)
+        if (length(hl2) > 1)
+            imap=round((i-1)/(length(hl2)-1)*(size(cmap,1)-1))+1;
+        else
+            imap=1;
+        end
+        if     strcmpi(get(hl1(i),'Type'),'hggroup')
+            if ischar(get(hl1(i),'FaceColor')) && ...
+               strcmpi(get(hl1(i),'FaceColor'),'flat')
+                set(hl2(i),'Color',cmap(imap,:))
+            else
+                set(hl2(i),'Color',get(hl1(i),'FaceColor'))
+            end
+        elseif strcmpi(get(hl1(i),'Type'),'line')
+            set(hl2(i),'Color',get(hl1(i),'Color'))
+        end
+    end
+
+%  add the annotation
+
+    ylabel('Cumulative Percent');
+
+    if ~exist('cdfleg','var') || ...
+       (~strncmpi(cdfleg,'off',3) && ~strncmpi(cdfleg,'n',1))
+% legend doesn't combine with bar chart above
+        if exist('cdescr','var')
+            hleg2=legend(ax2,cdescr(1:length(hl2)),'Location','NorthEast',...
+                         'Color','none','Interpreter','none');
+%             set(hleg2,'Color','white')
+        else
+            hleg2=legend(ax2);
+%             set(hleg2,'Color','white')
+        end
+    end
+
+    set(gcf,'PaperPositionMode','auto')
+%     hold off
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_if_bars.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_if_bars.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_if_bars.m	(revision 21239)
@@ -0,0 +1,229 @@
+%
+%  plot a stacked bar chart of the importance factors.
+%
+%  []=plot_if_bars(dresp      ,params)
+%  []=plot_if_bars(dresp,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    var           (cell array, variables)
+%    impfac        (double array, importance factors)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%    ifmin         (double, minimum importance factor)
+%    isort         (numeric, sort flag:  0, no sorting;
+%                                        1, highest at bottom;
+%                                       -1, lowest at bottom)
+%    xtlrot        (numeric, rotation in degrees of x-tick labels)
+%
+%  for each response in the input array, this function plots
+%  a stacked bar plot of the responses, where the bars are
+%  stacked by the importance factors, and annotates it with the
+%  description.  the legend labels are constructed from the
+%  variable list.
+%
+%  this data would typically be contained in the dakota output
+%  file from a local reliability analysis and read by
+%  dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_if_bars(varargin)
+
+if ~nargin
+    help plot_if_bars
+    return
+end
+
+%%  process input data and assemble into matrices
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lifr =zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lifr(i)=length(dresp(i).impfac);
+    end
+    ifr =zeros(length(dresp),max(lifr));
+    dvar=dresp(find(lifr == max(lifr),1,'first')).var;
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        ifr(i,1:lifr(i))=dresp(i).impfac;
+    end
+else
+    error(['''' inputname(iarg) ''' is not a structure.']);
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'ymin','ymax','ifmin','isort','xtlrot'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+if ~exist('ifmin','var') || isempty(ifmin)
+    ifmin=0;
+end
+
+if ~exist('isort','var') || isempty(isort)
+    isort=0;
+end
+
+%%  sort the data, if necessary
+
+if (isort)
+    ifmean=mean(ifr,1);
+    if (isort > 0)
+        [ifmean,index]=sort(ifmean,'descend');
+    else
+        [ifmean,index]=sort(ifmean,'ascend' );
+    end
+    clear ifmean
+
+    dvar=dvar(index);
+    ifr =ifr (:,index);
+end
+
+%%  filter the data, if necessary
+
+if (ifmin > 0)
+    nif=length(dvar);
+    dvar(nif+1,1)=cellstr(sprintf('others < %f',ifmin));
+    ifr (:,nif+1)=0.;
+
+    nif2=0;
+    dvar2=cell (size(dvar));
+    ifr2 =zeros(size(ifr ));
+
+%  sum filtered rows and copy unfiltered rows
+
+    for i=1:nif
+        if (max(ifr(:,i)) < ifmin)
+            ifr(:,nif+1)=ifr(:,nif+1)+ifr(:,i);
+        else
+            nif2=nif2+1;
+            dvar2(nif2)  =dvar(i);
+            ifr2 (:,nif2)=ifr (:,i);
+        end
+    end
+
+%  copy sums
+
+    dvar2(nif2+1)  =dvar(nif+1);
+    ifr2 (:,nif2+1)=ifr (:,nif+1);
+
+%  copy back and truncate filtered rows
+
+    clear dvar ifr
+    if (isort >= 0)
+        dvar(1:nif2+1)  =dvar2(1:nif2+1);
+        ifr (:,1:nif2+1)=ifr2 (:,1:nif2+1);
+    else
+        dvar(1       )  =dvar2(  nif2+1);
+        dvar(2:nif2+1)  =dvar2(1:nif2  );
+        ifr (:,1       )=ifr2 (:,  nif2+1);
+        ifr (:,2:nif2+1)=ifr2 (:,1:nif2  );
+    end
+    clear nif nif2 dvar2 ifr2
+end
+
+%%  draw the stacked bar plot
+
+%  if there's only one row, Matlab 7.5 interprets it as a column,
+%  so add an extra row, then reduce xlim
+
+if length(dresp) == 1
+    ifr=[ifr; ifr];
+end
+
+figure
+hl1=bar(ifr,'stacked');
+
+ax1=gca;
+if length(dresp) == 1
+    set(ax1,'xlim',[0.5 1.5])
+end
+
+% set(ax1,'ylim',[0 1.2])
+% ylim('auto')
+% [ylims]=ylim;
+[ylims]=[0 1.2];
+if exist('ymin','var')
+    ylims(1)=ymin;
+end
+if exist('ymax','var')
+    ylims(2)=ymax;
+end
+ylim(ylims)
+
+set(ax1,'xtick',1:length(descr))
+set(ax1,'xticklabel',descr)
+if exist('xtlrot','var')
+    htl=rotateticklabel(ax1,xtlrot);
+    tlext=zeros(length(htl),4);
+    for i=1:length(htl)
+        tlext(i,:)=get(htl(i),'Extent');
+    end
+end
+
+%  add the annotation
+
+title('Importance Factors')
+xlabel('Response')
+if exist('xtlrot','var')
+    xlext=get(get(ax1,'xlabel'),'Extent');
+    nskip=ceil(max(tlext(:,4))/xlext(4));
+    xlabel(cellstr([repmat('        ',nskip,1);'Response']));
+    clear nskip xlext tlext
+end
+ylabel('Importance Factor Value')
+
+hleg1=legend(ax1,dvar,'Location','EastOutside',...
+             'Orientation','vertical','Interpreter','none');
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_if_spec.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_if_spec.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_if_spec.m	(revision 21239)
@@ -0,0 +1,277 @@
+%
+%  plot a line plot or bar chart of the spectrum of importance factors.
+%
+%  []=plot_if_spec(dresp      ,params)
+%  []=plot_if_spec(dresp,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    var           (cell array, variables)
+%    impfac        (double array, importance factors)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    cplot         (char, 'l'/'b'/'g' to plot line/bar)
+%    cline         (char, 'off'/'no'/'-'/'--'/':'/etc. to change lines)
+%    lwidth        (numeric, line width in points, default 0.5)
+%    cmark         (char, 'on'/'yes'/'+'/'o'/'*'/etc. to change markers)
+%    msize         (numeric, marker size in points, default 6)
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%    ygrid         (char, 'on' to turn on y-grid lines)
+%    ylog          (char, 'yes' to use log y-axis)
+%    ifmin         (double, minimum importance factor)
+%    isort         (numeric, sort flag:  0, no sorting;
+%                                        1, highest at right;
+%                                       -1, lowest at right)
+%    xtlrot        (numeric, rotation in degrees of x-tick labels)
+%
+%  for each response in the input array, this function plots
+%  a bar plot of the importance factors and annotates it with the
+%  description.  the legend labels are constructed from the
+%  response list.
+%
+%  this data would typically be contained in the dakota output
+%  file from a local reliability analysis and read by
+%  dakota_out_parse.
+%
+%  "Copyright 2010, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_if_spec(varargin)
+
+if ~nargin
+    help plot_if_spec
+    return
+end
+
+%%  process input data and assemble into matrices
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lifr =zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lifr(i)=length(dresp(i).impfac);
+    end
+    ifr =zeros(length(dresp),max(lifr));
+    dvar=dresp(find(lifr == max(lifr),1,'first')).var;
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        ifr(i,1:lifr(i))=dresp(i).impfac;
+    end
+else
+    error(['''' inputname(iarg) ''' is not a structure.']);
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'cplot','cline','lwidth','cmark','msize',...
+                 'ymin','ymax','ygrid','ylog',...
+                 'ifmin','isort','xtlrot'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+if ~exist('cplot','var') || isempty(cplot)
+    cplot='line';
+end
+
+if ~exist('ifmin','var') || isempty(ifmin)
+    ifmin=0;
+end
+
+if ~exist('isort','var') || isempty(isort)
+    isort=0;
+end
+
+%%  sort the data, if necessary
+
+if (isort)
+    ifmean=mean(ifr,1);
+    if (isort > 0)
+        [ifmean,index]=sort(ifmean,'ascend' );
+    else
+        [ifmean,index]=sort(ifmean,'descend');
+    end
+    clear ifmean
+
+    dvar=dvar(index);
+    ifr =ifr (:,index);
+end
+
+%%  filter the data, if necessary
+
+if (ifmin > 0)
+    nif=length(dvar);
+    dvar(nif+1,1)=cellstr(sprintf('others < %f',ifmin));
+    ifr (:,nif+1)=0.;
+
+    nif2=0;
+    dvar2=cell (size(dvar));
+    ifr2 =zeros(size(ifr ));
+
+%  sum filtered rows and copy unfiltered rows
+
+    for i=1:nif
+        if (max(ifr(:,i)) < ifmin)
+            ifr(:,nif+1)=ifr(:,nif+1)+ifr(:,i);
+        else
+            nif2=nif2+1;
+            dvar2(nif2)  =dvar(i);
+            ifr2 (:,nif2)=ifr (:,i);
+        end
+    end
+
+%  copy sums
+
+    dvar2(nif2+1)  =dvar(nif+1);
+    ifr2 (:,nif2+1)=ifr (:,nif+1);
+
+%  copy back and truncate filtered rows
+
+    clear dvar ifr
+    if (isort >= 0)
+        dvar(1:nif2+1)  =dvar2(1:nif2+1);
+        ifr (:,1:nif2+1)=ifr2 (:,1:nif2+1);
+    else
+        dvar(1       )  =dvar2(  nif2+1);
+        dvar(2:nif2+1)  =dvar2(1:nif2  );
+        ifr (:,1       )=ifr2 (:,  nif2+1);
+        ifr (:,2:nif2+1)=ifr2 (:,1:nif2  );
+    end
+    clear nif nif2 dvar2 ifr2
+end
+
+%%  draw the line or bar plot
+
+%  if there's only one row, Matlab 7.5 interprets it as a column,
+%  so add an extra row, then reduce xlim
+
+if length(dvar) == 1
+    ifr=[ifr; ifr];
+end
+
+%newplot();
+figure
+ax1=axes;
+if strncmpi(cplot,'l',1)
+    if ~exist('cline','var') || strncmpi(cline,'on' ,2) || strncmpi(cline,'y',1)
+        cline='-';
+    elseif strncmpi(cline,'off',3) || strncmpi(cline,'n',1)
+        cline='none';
+    end
+    if ~exist('lwidth','var')
+        lwidth=0.5;
+    end
+    if ~exist('cmark','var') || strncmpi(cmark,'off',3) || strncmpi(cmark,'n',1)
+        cmark='none';
+    elseif strncmpi(cmark,'on' ,2) || strncmpi(cmark,'y',1) || ...
+           (length(cmark) > 1)
+        cmark='+';
+    end
+    if ~exist('msize','var')
+        msize=6;
+    end
+
+    hl1=plot(ax1,ifr','LineStyle',cline,'LineWidth',lwidth,...
+             'Marker',cmark,'MarkerSize',msize);
+else
+    hl1=bar(ax1,ifr');
+end
+
+ax1=gca;
+if length(dvar) == 1
+    set(ax1,'xlim',[0.5 1.5])
+else
+    set(ax1,'xlim',[0.5 length(dvar)+0.5])
+end
+
+if exist('ylog','var') && strncmpi(ylog,'y',1)
+    set(ax1,'yscale','log')
+    ylim('auto')
+    [ylims]=ylim;
+else
+    [ylims]=[0 1.2];
+end
+if exist('ymin','var')
+    ylims(1)=ymin;
+end
+if exist('ymax','var')
+    ylims(2)=ymax;
+end
+ylim(ylims)
+if strncmpi(cplot,'b',1) && exist('ylog','var') && strncmpi(ylog,'y',1)
+    set(hl1,'basevalue',ylims(1))
+end
+
+set(ax1,'xtick',1:length(dvar))
+set(ax1,'xticklabel',dvar)
+if exist('xtlrot','var')
+    htl=rotateticklabel(ax1,xtlrot);
+    tlext=zeros(length(htl),4);
+    for i=1:length(htl)
+        tlext(i,:)=get(htl(i),'Extent');
+    end
+end
+
+%  add the annotation
+
+if length(descr) > 1
+    title('Importance Factors of Responses')
+    hleg1=legend(ax1,descr,'Location','EastOutside',...
+                 'Orientation','vertical','Interpreter','none');
+else
+    title(['Importance Factors of ' descr{1}],'Interpreter','none')
+end
+xlabel('Variable')
+if exist('xtlrot','var')
+    xlext=get(get(ax1,'xlabel'),'Extent');
+    nskip=ceil(max(tlext(:,4))/xlext(4));
+    xlabel(cellstr([repmat('        ',nskip,1);'Variable']));
+    clear nskip xlext tlext
+end
+ylabel('Importance Factor Value')
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_normdist_bars.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_normdist_bars.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_normdist_bars.m	(revision 21239)
@@ -0,0 +1,213 @@
+%
+%  plot a stacked bar chart of the sample distributions.
+%
+%  []=plot_normdist_bars(dresp      ,params)
+%  []=plot_normdist_bars(dresp,descr,params)
+%  []=plot_normdist_bars(sampr,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of response samples)
+%    descr         (cell array, list of response descriptions)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    sample        (double vector, list of samples)
+%
+%  and the optional fields of dresp are:
+%    mean          (double, mean of sample)
+%    stddev        (double, standard deviation of sample)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    prob          (double vector, probability levels)
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%    xtlrot        (numeric, rotation in degrees of x-tick labels)
+%    lstr          (cell array, legend labels)
+%
+%  for each response in the input array, this function plots
+%  a stacked bar plot of the list of samples, where the bars
+%  are stacked by the given or default probability levels
+%  calculated from a normal distribution, and annotates it with
+%  the description.  the mean and standard deviation will be
+%  calculated from the samples if they do not already exist.
+%  the legend labels can be given or constructed from the
+%  probability levels.
+%
+%  this data would typically be contained in the dakota tabular
+%  output file and read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_normdist_bars(varargin)
+
+if ~nargin
+    help plot_normdist_bars
+    return
+end
+
+%%  process input data and assemble into dresp as needed
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1:size(sampr,2));
+    end
+
+    dresp=struct([]);
+    for i=1:size(sampr,2)
+        dresp(end+1).sample=samp(:,i);
+        if ~isempty(descr)
+            dresp(i).descriptor=descr{i};
+        else
+            dresp(i).descriptor=['dresp_' num2str(i)];
+        end
+    end
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'prob','ymin','ymax','xtlrot','lstr'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+%%  calculate any missing information (noting that dresp is local)
+
+if ~isfield(dresp,'mean') || ~isfield(dresp,'stddev')
+    for i=1:length(dresp)
+        [dresp(i).mean,dresp(i).stddev]=normfit_issm(dresp(i).sample);
+    end
+end
+
+%%  assemble the data into a matrix and calculate the increments
+
+if ~exist('prob','var') || isempty(prob)
+    prob=[0.01 0.25 0.50 0.75 0.99];
+end
+
+descr=cell (1,length(dresp));
+data =zeros(length(dresp),length(prob));
+
+for i=1:length(dresp)
+    descr(i)=cellstr(dresp(i).descriptor);
+    data(i,:)=norminv_issm(prob,dresp(i).mean,dresp(i).stddev);
+end
+
+for j=length(prob):-1:2
+    data(:,j)=data(:,j)-data(:,j-1);
+end
+
+%%  draw the stacked bar plot
+
+%  if there's only one row, Matlab 7.5 interprets it as a column,
+%  so add an extra row, then reduce xlim
+
+if length(dresp) == 1
+    data=[data; data];
+end
+
+figure
+hl1=bar(data,'stacked');
+%  set barseries properties for lowest value
+whitebg('white')
+set(hl1(1),'FaceColor','white')
+set(hl1(1),'Visible','off')
+
+ax1=gca;
+if length(dresp) == 1
+    set(ax1,'xlim',[0.5 1.5])
+end
+
+ylim('auto')
+[ylims]=ylim;
+if exist('ymin','var')
+    ylims(1)=ymin;
+end
+if exist('ymax','var')
+    ylims(2)=ymax;
+end
+ylim(ylims)
+
+set(ax1,'xtick',1:length(descr))
+set(ax1,'xticklabel',descr)
+if exist('xtlrot','var')
+    htl=rotateticklabel(ax1,xtlrot);
+    tlext=zeros(length(htl),4);
+    for i=1:length(htl)
+        tlext(i,:)=get(htl(i),'Extent');
+    end
+end
+
+%  add the annotation
+
+title('Normal Distributions of Responses')
+xlabel('Response')
+if exist('xtlrot','var')
+    xlext=get(get(ax1,'xlabel'),'Extent');
+    nskip=ceil(max(tlext(:,4))/xlext(4));
+    xlabel(cellstr([repmat('        ',nskip,1);'Response']));
+    clear nskip xlext tlext
+end
+ylabel('Value')
+
+if ~exist('lstr','var') || isempty(lstr)
+    lstr=cell(1,length(prob));
+    for i=1:length(prob)
+        lstr(i)=cellstr(sprintf('%g%%',100*prob(i)));
+    end
+end
+
+hleg1=legend(ax1,lstr,'Location','EastOutside',...
+             'Orientation','vertical','Interpreter','none');
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_normplot.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_normplot.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_normplot.m	(revision 21239)
@@ -0,0 +1,154 @@
+%
+%  plot a normal probability plot of the responses.
+%
+%  []=plot_normplot(dresp      ,params)
+%  []=plot_normplot(dresp,descr,params)
+%  []=plot_normplot(sampr,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of response samples)
+%    descr         (cell array, list of response descriptions)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    sample        (double vector, list of samples)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    xmin          (numeric, minimum of x-axis)
+%    xmax          (numeric, maximum of x-axis)
+%
+%  for each response in the input array, this function plots
+%  a matlab normal probability plot of the list of samples
+%  and annotates it with the description.  the lists of samples
+%  need not all be the same length.
+%
+%  this data would typically be contained in the dakota tabular
+%  output file and read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_normplot(varargin)
+
+if ~nargin
+    help plot_normplot
+    return
+end
+
+%%  process input data and assemble into matrices as needed
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lsamp=zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lsamp(i)=length(dresp(i).sample);
+    end
+    sampr=zeros(max(lsamp),length(dresp));
+    sampr(:,:)=NaN;
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        sampr(1:lsamp(i),i)=dresp(i).sample;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1,size(sampr,2));
+    end
+end
+
+for i=1:length(descr)
+    if isempty(descr{i})
+        descr(i)={['resp_' num2str(i)]};
+    end
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'xmin','xmax'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+%%  draw the plot
+
+%  draw normal probability plot
+
+figure
+normplot(sampr)
+ax1=gca;
+
+%  add the annotation
+
+xlim('auto')
+[xlims]=xlim;
+if exist('xmin','var')
+    xlims(1)=xmin;
+end
+if exist('xmax','var')
+    xlims(2)=xmax;
+end
+xlim(xlims)
+
+if (size(sampr,2) == 1)
+    tlabc=descr{1};
+else
+    tlabc='Responses';
+end
+title(['Normal Probability Plot of ' tlabc],'Interpreter','none');
+xlabel('Value'      ,'Interpreter','none');
+ylabel('Probability','Interpreter','none');
+
+hleg1=legend(ax1,descr,'Location','EastOutside',...
+             'Orientation','vertical','Interpreter','none');
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_prob_bars.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_prob_bars.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_prob_bars.m	(revision 21239)
@@ -0,0 +1,196 @@
+%
+%  plot a stacked bar chart of the probabilities in the CDF.
+%
+%  []=plot_prob_bars(dresp      ,params)
+%  []=plot_prob_bars(dresp,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    cdf(:,4)      (double matrix, CDF table)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%    xtlrot        (numeric, rotation in degrees of x-tick labels)
+%    cmap          (char, 'stoplight' for 6-color stoplight colormap)
+%    lstr          (cell array, legend labels)
+%
+%  for each response in the input array, this function plots
+%  a stacked bar plot of the responses, where the bars are
+%  stacked by the probabilities corresponding to the given
+%  response levels in the CDF, and annotates it with the
+%  description.  the legend labels can be given or constructed
+%  from the response levels.
+%
+%  this data would typically be contained in the dakota output
+%  file and read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_prob_bars(varargin)
+
+if ~nargin
+    help plot_prob_bars
+    return
+end
+
+%%  assemble the data into a matrix and calculate the increments
+
+%%  process input data and assemble into matrices and increments
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lcdfr=zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lcdfr(i)=size(dresp(i).cdf,1);
+    end
+    cdfr=zeros(length(dresp),max(lcdfr));
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        if ~isempty(dresp(i).cdf)
+            cdfr(i,1)=dresp(i).cdf(1,2);
+            for j=2:size(dresp(i).cdf,1)
+                if (dresp(i).cdf(j,2) > dresp(i).cdf(j-1,2))
+                    cdfr(i,j)=dresp(i).cdf(j,2)-dresp(i).cdf(j-1,2);
+                end
+            end
+        end
+    end
+else
+    error(['''' inputname(iarg) ''' is not a structure.']);
+end
+
+%  convert to percentage
+
+cdfr=cdfr*100.;
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'ymin','ymax','xtlrot','cmap','lstr'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+%%  draw the stacked bar plot
+
+%  if there's only one row, Matlab 7.5 interprets it as a column,
+%  so add an extra row, then reduce xlim
+
+if length(dresp) == 1
+    cdfr=[cdfr; cdfr];
+end
+
+figure
+hl1=bar(cdfr,'stacked');
+if exist('cmap','var')
+    if strncmpi(cmap,'stop',4)
+%         set(hl1(1),'FaceColor','green')
+%         set(hl1(2),'FaceColor',[.7 1 0])
+%         set(hl1(3),'FaceColor','yellow')
+%         set(hl1(4),'FaceColor',[1 .7 0])
+%         set(hl1(5),'FaceColor',[1 .5 0])
+%         set(hl1(6),'FaceColor','red')
+        colormap([0 1 0;.7 1 0;1 1 0;1 .7 0;1 .5 0;1 0 0]);
+    else
+        colormap(cmap);
+    end
+end
+
+ax1=gca;
+if length(dresp) == 1
+    set(ax1,'xlim',[0.5 1.5])
+end
+
+% set(ax1,'ylim',[0 120])
+% ylim('auto')
+% [ylims]=ylim;
+[ylims]=[0 120];
+if exist('ymin','var')
+    ylims(1)=ymin;
+end
+if exist('ymax','var')
+    ylims(2)=ymax;
+end
+ylim(ylims)
+
+set(ax1,'xtick',1:length(descr))
+set(ax1,'xticklabel',descr)
+if exist('xtlrot','var')
+    htl=rotateticklabel(ax1,xtlrot);
+    tlext=zeros(length(htl),4);
+    for i=1:length(htl)
+        tlext(i,:)=get(htl(i),'Extent');
+    end
+end
+
+%  add the annotation
+
+title('Probabilities for Specified Response Levels (RIA)')
+xlabel('Response')
+if exist('xtlrot','var')
+    xlext=get(get(ax1,'xlabel'),'Extent');
+    nskip=ceil(max(tlext(:,4))/xlext(4));
+    xlabel(cellstr([repmat('        ',nskip,1);'Response']));
+    clear nskip xlext tlext
+end
+ylabel('Percent Below Level')
+
+if ~exist('lstr','var') || isempty(lstr)
+    lstr=cell(1,max(lcdfr));
+    for i=1:max(lcdfr)
+        lstr(i)=cellstr(sprintf('%g',...
+            dresp(find(lcdfr == max(lcdfr),1,'first')).cdf(i,1)));
+    end
+    if ~isempty(find(lcdfr < max(lcdfr)))
+        warning('Variable number of levels for responses.');
+    end
+end
+
+hleg1=legend(ax1,lstr,'Location','EastOutside',...
+             'Orientation','vertical','Interpreter','none');
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_rlev_bars.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_rlev_bars.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_rlev_bars.m	(revision 21239)
@@ -0,0 +1,178 @@
+%
+%  plot a stacked bar chart of the response levels in the cdf.
+%
+%  []=plot_rlev_bars(dresp      ,params)
+%  []=plot_rlev_bars(dresp,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    cdf(:,4)      (double matrix, CDF table)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%    xtlrot        (numeric, rotation in degrees of x-tick labels)
+%    lstr          (cell array, legend labels)
+%
+%  for each response in the input array, this function plots
+%  a stacked bar plot of the responses, where the bars are
+%  stacked by the response levels corresponding to the given
+%  probabilities in the CDF, and annotates it with the
+%  description.  the legend labels can be given or constructed
+%  from the probabilities.
+%
+%  this data would typically be contained in the dakota output
+%  file and read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_rlev_bars(varargin)
+
+if ~nargin
+    help plot_rlev_bars
+    return
+end
+
+%%  process input data and assemble into matrices and increments
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lcdfr=zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lcdfr(i)=size(dresp(i).cdf,1);
+    end
+    cdfr=zeros(length(dresp),max(lcdfr));
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        if ~isempty(dresp(i).cdf)
+            cdfr(i,1)=dresp(i).cdf(1,1);
+            for j=2:size(dresp(i).cdf,1)
+                if (dresp(i).cdf(j,1) > dresp(i).cdf(j-1,1))
+                    cdfr(i,j)=dresp(i).cdf(j,1)-dresp(i).cdf(j-1,1);
+                end
+            end
+        end
+    end
+else
+    error(['''' inputname(iarg) ''' is not a structure.']);
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'ymin','ymax','xtlrot','lstr'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+%%  draw the stacked bar plot
+
+%  if there's only one row, Matlab 7.5 interprets it as a column,
+%  so add an extra row, then reduce xlim
+
+if length(dresp) == 1
+    cdfr=[cdfr; cdfr];
+end
+
+figure
+hl1=bar(cdfr,'stacked');
+%  set barseries properties for lowest value
+whitebg('white')
+set(hl1(1),'FaceColor','white')
+set(hl1(1),'Visible','off')
+
+ax1=gca;
+if length(dresp) == 1
+    set(ax1,'xlim',[0.5 1.5])
+end
+
+ylim('auto')
+[ylims]=ylim;
+if exist('ymin','var')
+    ylims(1)=ymin;
+end
+if exist('ymax','var')
+    ylims(2)=ymax;
+end
+ylim(ylims)
+
+set(ax1,'xtick',1:length(descr))
+set(ax1,'xticklabel',descr)
+if exist('xtlrot','var')
+    htl=rotateticklabel(ax1,xtlrot);
+    tlext=zeros(length(htl),4);
+    for i=1:length(htl)
+        tlext(i,:)=get(htl(i),'Extent');
+    end
+end
+
+%  add the annotation
+
+title('Response Levels for Specified Probabilities (PMA)')
+xlabel('Response');
+if exist('xtlrot','var')
+    xlext=get(get(ax1,'xlabel'),'Extent');
+    nskip=ceil(max(tlext(:,4))/xlext(4));
+    xlabel(cellstr([repmat('        ',nskip,1);'Response']));
+    clear nskip xlext tlext
+end
+ylabel('Response Level')
+
+if ~exist('lstr','var') || isempty(lstr)
+    lstr=cell(1,max(lcdfr));
+    for i=1:max(lcdfr)
+        lstr(i)=cellstr(sprintf('%g%%',...
+            100*dresp(find(lcdfr == max(lcdfr),1,'first')).cdf(i,2)));
+    end
+    if ~isempty(find(lcdfr < max(lcdfr),1))
+        warning('Variable number of probabilities for responses.');
+    end
+end
+
+hleg1=legend(ax1,lstr,'Location','EastOutside',...
+             'Orientation','vertical','Interpreter','none');
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_rlev_bars_ci.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_rlev_bars_ci.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_rlev_bars_ci.m	(revision 21239)
@@ -0,0 +1,269 @@
+%
+%  plot a stacked bar chart of the response levels in the cdf
+%  for the sample and confidence intervals.
+%
+%  []=plot_rlev_bars_ci(dresp      ,params)
+%  []=plot_rlev_bars_ci(dresp,descr,params)
+%  []=plot_rlev_bars_ci(sampr,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of response samples)
+%    descr         (cell array, list of response descriptions)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    cdf(:,4)      (double matrix, CDF table)
+%
+%  and the optional fields of dresp are:
+%    mean          (double, mean of sample)
+%    stddev        (double, standard deviation of sample)
+%    meanci(2)     (double, confidence interval of mean)
+%    stddevci(2)   (double, confidence interval of standard deviation)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%    xtlrot        (numeric, rotation in degrees of x-tick labels)
+%    lstr          (cell array, legend labels)
+%
+%  for each response in the input array, this function plots
+%  a stacked bar plot of the responses, where the bars are
+%  stacked by the response levels corresponding to the given
+%  probabilities in the CDF, and annotates it with the
+%  description.  the response levels for the normal distribution
+%  and the confidence intervals are also plotted.  the legend
+%  labels can be given or constructed from the probabilities.
+%
+%  dresp data would typically be contained in the dakota tabular
+%  output file from a sampling analysis, read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_rlev_bars_ci(varargin)
+
+if ~nargin
+    help plot_rlev_bars_ci
+    return
+end
+
+%%  process input data and assemble into dresp as needed
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1:size(sampr,2));
+    end
+
+    dresp=struct([]);
+    for i=1:size(sampr,2)
+        dresp(end+1).sample=sampr(:,i);
+        if ~isempty(descr)
+            dresp(i).descriptor=descr{i};
+        else
+            dresp(i).descriptor=['dresp_' num2str(i)];
+        end
+    end
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'ymin','ymax','xtlrot','lstr'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+%%  calculate any missing information (noting that dresp is local)
+
+for i=1:length(dresp)
+    if ~isfield(dresp(i),'mean') || isempty(dresp(i).mean) || ...
+       ~isfield(dresp(i),'stddev') || isempty(dresp(i).stddev) || ...
+       ~isfield(dresp(i),'meanci') || isempty(dresp(i).meanci) || ...
+       ~isfield(dresp(i),'stddevci') || isempty(dresp(i).stddevci)
+%  calculate 95% confidence intervals (same as dakota)
+        [dresp(i).mean,dresp(i).stddev,...
+         dresp(i).meanci,dresp(i).stddevci]=...
+            normfit_issm(sampr(:,i),0.05);
+        display('Using calculated normal fits from sample data.')
+    end
+
+    if ~isfield(dresp(i),'cdf') || isempty(dresp(i).cdf)
+%  use minus/plus integer standard deviations
+        sdvect=[-4 -3 -2 -1 0 1 2 3 4];
+        dresp(i).cdf(:,2)=normcdf_issm(sdvect,0,1);
+        dresp(i).cdf(:,1)=norminv_issm(dresp(i).cdf(:,2),...
+                                       dresp(i).mean,dresp(i).stddev);
+        display('Using integer standard deviations for percentages.')
+
+        if ~exist('lstr','var') || isempty(lstr)
+            lstr=cell(1,size(dresp(i).cdf,1));
+            for j=1:size(dresp(i).cdf,1)
+                if sdvect(j)
+                    lstr{j}=sprintf('mu %+d sigma',sdvect(j));
+                else
+                    lstr{j}='mu';
+                end
+            end
+        end
+    end
+end
+
+%%  assemble the data into a matrix and calculate the increments
+
+descr=cell (1,0);
+lcdfr=zeros(1,length(dresp));
+for i=1:length(dresp)
+    lcdfr(i)=size(dresp(i).cdf,1);
+end
+cdfr=zeros(0,max(lcdfr));
+
+%  fill in the cdf data
+
+for i=1:length(dresp)
+    if ~isempty(dresp(i).cdf)
+        descr(end+1)=cellstr([dresp(i).descriptor]);
+        cdfr(end+1,:)=dresp(i).cdf(:,1);
+        if isfield(dresp(i),'mean'  ) && ~isempty(dresp(i).mean  ) && ...
+           isfield(dresp(i),'stddev') && ~isempty(dresp(i).stddev)
+            descr(end+1)=cellstr([dresp(i).descriptor ' norm']);
+            cdfr(end+1,:)=norminv_issm(dresp(i).cdf(:,2),dresp(i).mean,dresp(i).stddev);
+        end
+        if isfield(dresp(i),'meanci'  ) && ~isempty(dresp(i).meanci  ) && ...
+           isfield(dresp(i),'stddevci') && ~isempty(dresp(i).stddevci)
+            descr(end+1)=cellstr([dresp(i).descriptor ' norm-+']);
+            descr(end+1)=cellstr([dresp(i).descriptor ' norm--']);
+            descr(end+1)=cellstr([dresp(i).descriptor ' norm+-']);
+            descr(end+1)=cellstr([dresp(i).descriptor ' norm++']);
+            cdfr(end+1,:)=norminv_issm(dresp(i).cdf(:,2),dresp(i).meanci(1),dresp(i).stddevci(2));
+            cdfr(end+1,:)=norminv_issm(dresp(i).cdf(:,2),dresp(i).meanci(1),dresp(i).stddevci(1));
+            cdfr(end+1,:)=norminv_issm(dresp(i).cdf(:,2),dresp(i).meanci(2),dresp(i).stddevci(1));
+            cdfr(end+1,:)=norminv_issm(dresp(i).cdf(:,2),dresp(i).meanci(2),dresp(i).stddevci(2));
+        end
+    end
+end
+
+%  calculate the increments
+
+for i=1:size(cdfr,1)
+    for j=find(cdfr(i,:),1,'last'):-1:2
+        cdfr(i,j)=cdfr(i,j)-cdfr(i,j-1);
+    end
+end
+
+%%  draw the stacked bar plot
+
+%  if there's only one row, Matlab 7.5 interprets it as a column,
+%  so add an extra row, then reduce xlim
+
+if length(descr) == 1
+    cdfr=[cdfr; cdfr];
+end
+
+figure
+hl1=bar(cdfr,'stacked');
+%  set barseries properties for lowest value
+whitebg('white')
+set(hl1(1),'FaceColor','white')
+set(hl1(1),'Visible','off')
+
+ax1=gca;
+if length(descr) == 1
+    set(ax1,'xlim',[0.5 1.5])
+end
+
+ylim('auto')
+[ylims]=ylim;
+if exist('ymin','var')
+    ylims(1)=ymin;
+end
+if exist('ymax','var')
+    ylims(2)=ymax;
+end
+ylim(ylims)
+
+set(ax1,'xtick',1:length(descr))
+set(ax1,'xticklabel',descr)
+if exist('xtlrot','var')
+    htl=rotateticklabel(ax1,xtlrot);
+    tlext=zeros(length(htl),4);
+    for i=1:length(htl)
+        tlext(i,:)=get(htl(i),'Extent');
+    end
+end
+
+%  add the annotation
+
+title('Response Levels for Specified Probabilities (PMA)');
+xlabel('Response');
+if exist('xtlrot','var')
+    xlext=get(get(ax1,'xlabel'),'Extent');
+    nskip=ceil(max(tlext(:,4))/xlext(4));
+    xlabel(cellstr([repmat('        ',nskip,1);'Response']));
+    clear nskip xlext tlext
+end
+ylabel('Response Level');
+
+if ~exist('lstr','var') || isempty(lstr)
+    lstr=cell(1,max(lcdfr));
+    for i=1:max(lcdfr)
+        lstr(i)=cellstr(sprintf('%g%%',...
+            100*dresp(find(lcdfr == max(lcdfr),1,'first')).cdf(i,2)));
+    end
+    if ~isempty(find(lcdfr < max(lcdfr),1,'first'))
+        warning('Variable number of probabilities for responses.');
+    end
+end
+
+hleg1=legend(ax1,lstr,'Location','EastOutside',...
+             'Orientation','vertical','Interpreter','none');
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_rvsv_line.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_rvsv_line.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_rvsv_line.m	(revision 21239)
@@ -0,0 +1,265 @@
+%
+%  plot line plots of responses vs. variables.
+%
+%  []=plot_rvsv_line(dvar       ,dresp      ,params)
+%  []=plot_rvsv_line(dvar ,descv,dresp,descr,params)
+%  []=plot_rvsv_line(sampv,descv,sampr,descr,params)
+%
+%  where the required input is:
+%    dvar          (structure array, variables)
+%      or
+%    dvar          (structure array, variables)
+%    descv         (cell array, list of variable descriptions desired)
+%      or
+%    sampv         (double array, lists of variable samples)
+%    descv         (cell array, list of variable descriptions)
+%
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of response samples)
+%    descr         (cell array, list of response descriptions)
+%
+%  the required fields of dvar and dresp are:
+%    descriptor    (char, description)
+%    sample        (double vector, list of samples)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    nplotr        (numeric, number of plot rows)
+%    nplotc        (numeric, number of plot columns)
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%    yscat         (char, 'off' to turn off y-axis scattergram)
+%
+%  for each variable/response combination in the input array, this
+%  function plots a line plot.  all of the variables and responses
+%  are plotted on the same axes, if nplotr and nplotc are not
+%  specified, so some scaling might otherwise be desired.
+%
+%  dvar and dresp data would typically be contained in the dakota
+%  tabular output file from a sampling or parametric analysis, and
+%  read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_rvsv_line(varargin)
+
+if ~nargin
+    help plot_rvsv_line
+    return
+end
+
+%%  process input data and assemble into matrices as needed
+
+%  variables
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dvar=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dvar=struc_desc(dvar,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descv=cell (1,length(dvar));
+    lsamp=zeros(1,length(dvar));
+    for i=1:length(dvar)
+        lsamp(i)=length(dvar(i).sample);
+    end
+    sampv=zeros(max(lsamp),length(dvar));
+    sampv(:,:)=NaN;
+
+    for i=1:length(dvar)
+        descv(i)=cellstr(dvar(i).descriptor);
+        sampv(1:lsamp(i),i)=dvar(i).sample;
+    end
+else
+    sampv=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descv=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descv=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descv=cell(1,size(sampv,2));
+    end
+end
+
+for i=1:length(descv)
+    if isempty(descv{i})
+        descv(i)={['var_' i]};
+    end
+end
+
+%  responses
+
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lsamp=zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lsamp(i)=length(dresp(i).sample);
+    end
+    sampr=zeros(max(lsamp),length(dresp));
+    sampr(:,:)=NaN;
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        sampr(1:lsamp(i),i)=dresp(i).sample;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1,size(sampr,2));
+    end
+end
+
+for i=1:length(descr)
+    if isempty(descr{i})
+        descr(i)={['resp_' num2str(i)]};
+    end
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'nplotr','nplotc',...
+                 'ymin','ymax','yscat'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+if     ~exist('nplotr','var') && ~exist('nplotc','var')
+    nplotr=1;
+    nplotc=1;
+elseif ~exist('nplotr','var')
+    nplotr=ceil(size(sampr,2)*size(sampv,2)/nplotc);
+elseif ~exist('nplotc','var')
+    nplotc=ceil(size(sampr,2)*size(sampv,2)/nplotr);
+end
+
+%%  filter, sort, and plot the data
+
+%  while it would be preferable for the outer loop to be responses,
+%  it is more efficient for the outer loop to be variables
+
+figure
+haxes=[];
+hplot=[];
+cdesc={};
+hscat=[];
+
+iplot=0;
+
+for ivar=1:size(sampv,2)
+    [vval,indxv,indxvi]=unique(sampv(:,ivar),'first');
+    indxv2=setdiff(1:size(sampv,1),indxv);
+
+    for iresp=1:size(sampr,2)
+
+%  initialize the subplot
+
+        if (ivar*iresp == 1) || ...
+           (nplotr*nplotc > 1)
+            iplot=iplot+1;
+            haxes(end+1)=subplot(nplotr,nplotc,iplot);
+            hold all
+        end
+
+        hplot(end+1)=plot   (sampv(indxv ,ivar),sampr(indxv ,iresp),'-x');
+        cdesc(end+1)={[descr{iresp} ' wrt ' descv{ivar}]};
+        if ~exist('yscat','var') || ...
+           (~strncmpi(yscat,'off',3) && ~strncmpi(yscat,'n',1))
+            hscat(end+1)=scatter(sampv(indxv2,ivar),sampr(indxv2,iresp),'+k');
+%  see "controlling legends" in Matlab on-line docs
+%         cdesc(end+1)={['constant ' descv{ivar}]};
+            set(get(get(hscat(end),'Annotation'),'LegendInformation'),...
+                'IconDisplayStyle','off'); % Exclude line from legend
+        end
+
+%  add the annotation
+
+        if (ivar*iresp == size(sampv,2)*size(sampr,2)) || ...
+           (nplotr*nplotc > 1)
+            hold off
+
+            ylim('auto')
+            [ylims]=ylim;
+            if exist('ymin','var')
+                ylims(1)=ymin;
+            end
+            if exist('ymax','var')
+                ylims(2)=ymax;
+            end
+            ylim(ylims)
+
+            if (size(sampv,2) == 1) || (nplotr*nplotc > 1)
+                xlabc=descv{ivar};
+            else
+                xlabc='Variables';
+            end
+            if (size(sampr,2) == 1) || (nplotr*nplotc > 1)
+                ylabc=descr{iresp};
+            else
+                ylabc='Responses';
+            end
+            title([ylabc ' vs. ' xlabc],'Interpreter','none');
+            xlabel(xlabc,'Interpreter','none');
+            ylabel(ylabc,'Interpreter','none');
+
+            if (nplotr*nplotc == 1) && (size(sampv,2)*size(sampr,2) > 1)
+                legend(cdesc,'Location','EastOutside','Interpreter','none');
+            end
+        end
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_rvsv_scat3.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_rvsv_scat3.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_rvsv_scat3.m	(revision 21239)
@@ -0,0 +1,281 @@
+%
+%  plot 3-d scatter plots of variables vs. responses.
+%
+%  []=plot_rvsv_scat3(dvar       ,dresp      ,params)
+%  []=plot_rvsv_scat3(dvar ,descv,dresp,descr,params)
+%  []=plot_rvsv_scat3(sampv,descv,sampr,descr,params)
+%
+%  where the required input is:
+%    dvar          (structure array, variables)
+%      or
+%    dvar          (structure array, variables)
+%    descv         (cell array, list of variable descriptions desired)
+%      or
+%    sampv         (double array, lists of variable samples)
+%    descv         (cell array, list of variable descriptions)
+%
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of response samples)
+%    descr         (cell array, list of response descriptions)
+%
+%  the required fields of dvar and dresp are:
+%    descriptor    (char, description)
+%    sample        (double vector, list of samples)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    nplotr        (numeric, number of plot rows)
+%    nplotc        (numeric, number of plot columns)
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%    zmin          (numeric, minimum of z-axis)
+%    zmax          (numeric, maximum of z-axis)
+%    cmin          (numeric, minimum of colorbar)
+%    cmax          (numeric, maximum of colorbar)
+%    smark         (numeric, size of markers)
+%
+%  for each response in the input array, this function plots a 3-d
+%  scatter plot.  there should be no more than three variables.
+%  each response will be in a separate scatter plot; hence the
+%  need for nplotr and nplotc.
+%
+%  dvar and dresp data would typically be contained in the dakota
+%  tabular output file from a sampling or parametric analysis, and
+%  read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_rvsv_scat3(varargin)
+
+if ~nargin
+    help plot_rvsv_scat3
+    return
+end
+
+%%  process input data and assemble into matrices as needed
+
+iarg=1;
+
+%  variables
+
+if isstruct(varargin{iarg})
+    dvar=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dvar=struc_desc(dvar,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descv=cell (1,length(dvar));
+    lsamp=zeros(1,length(dvar));
+    for i=1:length(dvar)
+        lsamp(i)=length(dvar(i).sample);
+    end
+    sampv=zeros(max(lsamp),length(dvar));
+    sampv(:,:)=NaN;
+
+    for i=1:length(dvar)
+        descv(i)=cellstr(dvar(i).descriptor);
+        sampv(1:lsamp(i),i)=dvar(i).sample;
+    end
+else
+    sampv=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descv=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descv=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descv=cell(1,size(sampv,2));
+    end
+end
+
+for i=1:length(descv)
+    if isempty(descv{i})
+        descv(i)={['var_' i]};
+    end
+end
+
+if (size(sampv,2) > 3)
+    error('No more than three variables required for 3-d scatter plot.');
+end
+
+%  responses
+
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lsamp=zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lsamp(i)=length(dresp(i).sample);
+    end
+    sampr=zeros(max(lsamp),length(dresp));
+    sampr(:,:)=NaN;
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        sampr(1:lsamp(i),i)=dresp(i).sample;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1,size(sampr,2));
+    end
+end
+
+for i=1:length(descr)
+    if isempty(descr{i})
+        descr(i)={['resp_' num2str(i)]};
+    end
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'nplotr','nplotc',...
+                 'ymin','ymax','zmin','zmax',...
+                 'cmin','cmax','smark'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+if     ~exist('nplotr','var') && ~exist('nplotc','var')
+    nplotr=ceil(sqrt(size(sampr,2)));
+    nplotc=ceil(size(sampr,2)/nplotr);
+elseif ~exist('nplotr','var')
+    nplotr=ceil(size(sampr,2)/nplotc);
+elseif ~exist('nplotc','var')
+    nplotc=ceil(size(sampr,2)/nplotr);
+end
+
+if ~exist('smark','var')
+    smark=100;
+end
+
+%%  filter, sort, and plot the data
+
+figure
+haxes =[];
+hscat3=[];
+
+for iresp=1:size(sampr,2)
+
+%  initialize the subplot
+
+    haxes(end+1)=subplot(nplotr,nplotc,iresp);
+    switch size(sampv,2)
+        case 1
+            hscat3(end+1)=scatter (sampv(:,1),sampr(:,iresp),...
+                                   smark,sampr(:,iresp),'filled');
+        case 2
+            hscat3(end+1)=scatter3(sampv(:,1),sampv(:,2),sampr(:,iresp),...
+                                   smark,sampr(:,iresp),'filled');
+        case 3
+            hscat3(end+1)=scatter3(sampv(:,1),sampv(:,2),sampv(:,3),...
+                                   smark,sampr(:,iresp),'filled');
+    end
+
+    ylim('auto')
+    [ylims]=ylim;
+    if exist('ymin','var')
+        ylims(1)=ymin;
+    end
+    if exist('ymax','var')
+        ylims(2)=ymax;
+    end
+    ylim(ylims)
+
+    zlim('auto')
+    [zlims]=zlim;
+    if exist('zmin','var')
+        zlims(1)=zmin;
+    end
+    if exist('zmax','var')
+        zlims(2)=zmax;
+    end
+    zlim(zlims)
+
+%  add the annotation
+
+    switch size(sampv,2)
+        case 1
+            title([descr{iresp} ' wrt ' descv{1}],...
+                  'Interpreter','none');
+            xlabel(descv{1},'Interpreter','none');
+            ylabel(descr{iresp},'Interpreter','none');
+        case 2
+            title([descr{iresp} ' wrt ' descv{1} ' and ' descv{2}],...
+                  'Interpreter','none');
+            xlabel(descv{1},'Interpreter','none');
+            ylabel(descv{2},'Interpreter','none');
+            zlabel(descr{iresp},'Interpreter','none');
+        case 3
+            title([descr{iresp} ' wrt ' descv{1} ' and ' descv{2} ' and ' descv{3}],...
+                  'Interpreter','none');
+            xlabel(descv{1},'Interpreter','none');
+            ylabel(descv{2},'Interpreter','none');
+            zlabel(descv{3},'Interpreter','none');
+    end
+
+    caxis('auto')
+    [cmini,cmaxi]=caxis;
+    if exist('cmin','var')
+        cmini=cmin;
+    end
+    if exist('cmax','var')
+        cmaxi=cmax;
+    end
+    caxis([cmini cmaxi])
+
+    colorbar
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_rvsv_surf.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_rvsv_surf.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_rvsv_surf.m	(revision 21239)
@@ -0,0 +1,248 @@
+%
+%  plot surface plots of variables vs. responses.
+%
+%  []=plot_rvsv_surf(dvar       ,dresp      ,params)
+%  []=plot_rvsv_surf(dvar ,descv,dresp,descr,params)
+%  []=plot_rvsv_surf(sampv,descv,sampr,descr,params)
+%
+%  where the required input is:
+%    dvar          (structure array, variables)
+%      or
+%    dvar          (structure array, variables)
+%    descv         (cell array, list of variable descriptions desired)
+%      or
+%    sampv         (double array, lists of variable samples)
+%    descv         (cell array, list of variable descriptions)
+%
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of response samples)
+%    descr         (cell array, list of response descriptions)
+%
+%  the required fields of dvar and dresp are:
+%    descriptor    (char, description)
+%    sample        (double vector, list of samples)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    nplotr        (numeric, number of plot rows)
+%    nplotc        (numeric, number of plot columns)
+%    zmin          (numeric, minimum of z-axis)
+%    zmax          (numeric, maximum of z-axis)
+%    cmin          (numeric, minimum of colorbar)
+%    cmax          (numeric, maximum of colorbar)
+%
+%  for each response in the input array, this function plots a
+%  surface plot.  there should be two and only two variables.
+%  each response will be in a separate surface plot; hence the
+%  need for nplotr and nplotc.
+%
+%  dvar and dresp data would typically be contained in the dakota
+%  tabular output file from a sampling or parametric analysis, and
+%  read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_rvsv_surf(varargin)
+
+if ~nargin
+    help plot_rvsv_surf
+    return
+end
+
+%%  process input data and assemble into matrices as needed
+
+iarg=1;
+
+%  variables
+
+if isstruct(varargin{iarg})
+    dvar=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dvar=struc_desc(dvar,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descv=cell (1,length(dvar));
+    lsamp=zeros(1,length(dvar));
+    for i=1:length(dvar)
+        lsamp(i)=length(dvar(i).sample);
+    end
+    sampv=zeros(max(lsamp),length(dvar));
+    sampv(:,:)=NaN;
+
+    for i=1:length(dvar)
+        descv(i)=cellstr(dvar(i).descriptor);
+        sampv(1:lsamp(i),i)=dvar(i).sample;
+    end
+else
+    sampv=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descv=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descv=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descv=cell(1,size(sampv,2));
+    end
+end
+
+for i=1:length(descv)
+    if isempty(descv{i})
+        descv(i)={['var_' i]};
+    end
+end
+
+if (size(sampv,2) ~= 2)
+    error('Two and only two variables required for surface plot.');
+end
+
+%  responses
+
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lsamp=zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lsamp(i)=length(dresp(i).sample);
+    end
+    sampr=zeros(max(lsamp),length(dresp));
+    sampr(:,:)=NaN;
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        sampr(1:lsamp(i),i)=dresp(i).sample;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1,size(sampr,2));
+    end
+end
+
+for i=1:length(descr)
+    if isempty(descr{i})
+        descr(i)={['resp_' num2str(i)]};
+    end
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'nplotr','nplotc',...
+                 'zmin','zmax',...
+                 'cmin','cmax'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+if     ~exist('nplotr','var') && ~exist('nplotc','var')
+    nplotr=ceil(sqrt(size(sampr,2)));
+    nplotc=ceil(size(sampr,2)/nplotr);
+elseif ~exist('nplotr','var')
+    nplotr=ceil(size(sampr,2)/nplotc);
+elseif ~exist('nplotc','var')
+    nplotc=ceil(size(sampr,2)/nplotr);
+end
+
+%%  filter, sort, and plot the data
+
+figure
+haxes=[];
+hsurf=[];
+
+[x,ix,ixi]=unique(sampv(:,1),'first');
+[y,iy,iyi]=unique(sampv(:,2),'first');
+
+for iresp=1:size(sampr,2)
+    z=zeros(length(x),length(y));
+    for i=1:size(sampr,1)
+        z(ixi(i),iyi(i))=sampr(i,iresp);
+    end
+
+%  initialize the subplot
+
+    haxes(iresp)=subplot(nplotr,nplotc,iresp);
+%     hsurf(iresp)=surfc(x,y,z,'FaceColor','interp');
+    surfc(x,y,z,'FaceColor','interp');
+
+    zlim('auto')
+    [zlims]=zlim;
+    if exist('zmin','var')
+        zlims(1)=zmin;
+    end
+    if exist('zmax','var')
+        zlims(2)=zmax;
+    end
+    zlim(zlims)
+
+%  add the annotation
+
+    title([descr{iresp} ' wrt ' descv{1} ' and ' descv{2}],...
+          'Interpreter','none');
+    xlabel(descv{1},'Interpreter','none');
+    ylabel(descv{2},'Interpreter','none');
+    zlabel(descr{iresp},'Interpreter','none');
+
+    caxis('auto')
+    [cmini,cmaxi]=caxis;
+    if exist('cmin','var')
+        cmini=cmin;
+    end
+    if exist('cmax','var')
+        cmaxi=cmax;
+    end
+    caxis([cmini cmaxi])
+
+    colorbar
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_sampdist_bars.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_sampdist_bars.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/plot/plot_sampdist_bars.m	(revision 21239)
@@ -0,0 +1,211 @@
+%
+%  plot a stacked bar chart of the sample distributions.
+%
+%  []=plot_sampdist_bars(dresp      ,params)
+%  []=plot_sampdist_bars(dresp,descr,params)
+%  []=plot_sampdist_bars(sampr,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of response samples)
+%    descr         (cell array, list of response descriptions)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    sample        (double vector, list of samples)
+%
+%  and the optional fields of dresp are:
+%    min           (double, minimum of sample)
+%    quart1        (double, first quartile of sample)
+%    median        (double, median of sample)
+%    quart3        (double, third quartile of sample)
+%    max           (double, maximum of sample)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%    xtlrot        (numeric, rotation in degrees of x-tick labels)
+%    lstr          (cell array, legend labels)
+%
+%  for each response in the input array, this function plots
+%  a stacked bar plot of the list of samples, where the bars
+%  are stacked by the four quartiles, and annotates it with
+%  the description.  the quartiles will be calculated from the
+%  samples if they do not already exist.
+%
+%  this data would typically be contained in the dakota tabular
+%  output file and read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_sampdist_bars(varargin)
+
+if ~nargin
+    help plot_sampdist_bars
+    return
+end
+
+%%  process input data and assemble into dresp as needed
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1:size(sampr,2));
+    end
+
+    dresp=struct([]);
+    for i=1:size(sampr,2)
+        dresp(end+1).sample=sampr(:,i);
+        if ~isempty(descr)
+            dresp(i).descriptor=descr{i};
+        else
+            dresp(i).descriptor=['dresp_' num2str(i)];
+        end
+    end
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'ymin','ymax','xtlrot','lstr'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+%%  calculate any missing information (noting that dresp is local)
+
+if ~isfield(dresp,'min')    || ~isfield(dresp,'quart1') || ...
+   ~isfield(dresp,'median') || ~isfield(dresp,'quart3') || ...
+   ~isfield(dresp,'max')
+    for i=1:length(dresp)
+        dresp(i).min   =min         (dresp(i).sample);
+        dresp(i).quart1=prctile_issm(dresp(i).sample,25);
+        dresp(i).median=median      (dresp(i).sample);
+        dresp(i).quart3=prctile_issm(dresp(i).sample,75);
+        dresp(i).max   =max         (dresp(i).sample);
+    end
+end
+
+%%  assemble the data into a matrix and calculate the increments
+
+descr=cell (1,length(dresp));
+data =zeros(length(dresp),5);
+
+for i=1:length(dresp)
+    descr(i)=cellstr(dresp(i).descriptor);
+    data(i,1)=dresp(i).min;
+    data(i,2)=dresp(i).quart1-dresp(i).min;
+    data(i,3)=dresp(i).median-dresp(i).quart1;
+    data(i,4)=dresp(i).quart3-dresp(i).median;
+    data(i,5)=dresp(i).max   -dresp(i).quart3;
+end
+
+%%  draw the stacked bar plot
+
+%  if there's only one row, Matlab 7.5 interprets it as a column,
+%  so add an extra row, then reduce xlim
+
+if length(dresp) == 1
+    data=[data; data];
+end
+
+figure
+hl1=bar(data,'stacked');
+%  set barseries properties for lowest value
+whitebg('white')
+set(hl1(1),'FaceColor','white')
+set(hl1(1),'Visible','off')
+
+ax1=gca;
+if length(dresp) == 1
+    set(ax1,'xlim',[0.5 1.5])
+end
+
+ylim('auto')
+[ylims]=ylim;
+if exist('ymin','var')
+    ylims(1)=ymin;
+end
+if exist('ymax','var')
+    ylims(2)=ymax;
+end
+ylim(ylims)
+
+set(ax1,'xtick',1:length(descr))
+set(ax1,'xticklabel',descr)
+if exist('xtlrot','var')
+    htl=rotateticklabel(ax1,xtlrot);
+    tlext=zeros(length(htl),4);
+    for i=1:length(htl)
+        tlext(i,:)=get(htl(i),'Extent');
+    end
+end
+
+%  add the annotation
+
+title('Sample Distributions of Responses')
+xlabel('Response')
+if exist('xtlrot','var')
+    xlext=get(get(ax1,'xlabel'),'Extent');
+    nskip=ceil(max(tlext(:,4))/xlext(4));
+    xlabel(cellstr([repmat('        ',nskip,1);'Response']));
+    clear nskip xlext tlext
+end
+ylabel('Value')
+
+if ~exist('lstr','var') || isempty(lstr)
+    lstr={'minimum' 'quartile 1' 'median' 'quartile 3' 'maximum'};
+end
+
+hleg1=legend(ax1,lstr,'Location','EastOutside',...
+             'Orientation','vertical','Interpreter','none');
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/postqmu.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/postqmu.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/postqmu.m	(revision 21239)
@@ -0,0 +1,52 @@
+function md=postqmu(md)
+%INPUT function md=postqmu(md,qmufile,qmudir)
+%Deal with dakota output results in files.
+
+%  check to see if dakota returned errors in the err file
+qmuerrfile=[md.miscellaneous.name '.qmu.err'];
+
+if exist(qmuerrfile,'file')
+   fide=fopen(qmuerrfile,'r');
+   fline=fgetl(fide);
+   if ischar(fline)
+       while ischar(fline)
+           disp(sprintf('%s',fline));
+           fline=fgetl(fide);
+       end
+       status=fclose(fide);
+       cd ../
+       error(['Dakota returned error in ''' qmuerrfile ' file.  ''' qmudir ''' directory retained.'])
+    end
+    status=fclose(fide);
+end
+
+%parse inputs and results from dakota
+qmuinfile=[md.miscellaneous.name '.qmu.in'];
+qmuoutfile=[md.miscellaneous.name '.qmu.out'];
+
+%[method,dvar,dresp_in]=dakota_in_parse(qmuinfile);
+%dakotaresults.method   =method;
+%dakotaresults.dvar     =dvar;
+%dakotaresults.dresp_in =dresp_in;
+
+[method,dresp_out,scm,pcm,srcm,prcm]=dakota_out_parse(qmuoutfile);
+dakotaresults.dresp_out=dresp_out;
+dakotaresults.scm      =scm;
+dakotaresults.pcm      =pcm;
+dakotaresults.srcm     =srcm;
+dakotaresults.prcm     =prcm;
+
+if exist('dakota_tabular.dat','file')
+    [method,dresp_dat                  ]=dakota_out_parse('dakota_tabular.dat');
+    dakotaresults.dresp_dat=dresp_dat;
+end
+
+%put dakotaresults in their right location.
+md.results.dakota=dakotaresults;
+
+%  move all the individual function evalutations into zip files
+if ~md.qmu.isdakota,
+	system('zip -mq params.in.zip params.in.[1-9]*');
+	system('zip -mq results.out.zip results.out.[1-9]*');
+	system('zip -mq matlab.out.zip matlab*.out.[1-9]*');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/preqmu.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/preqmu.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/preqmu.m	(revision 21239)
@@ -0,0 +1,109 @@
+function md=preqmu(md,options)
+%QMU - apply Quantification of Margins and Uncertainties techniques 
+%      to a solution sequence (like stressbalance.m, progonstic.m, etc ...), 
+%      using the Dakota software from Sandia.
+%
+%   options come from the solve.m routine. They can include Dakota options:
+%
+%       qmudir:  any directory where to run the qmu analysis
+%       qmufile: input file for Dakota
+%       ivar: selection number for variables input (if several are specified in variables)
+%       iresp: same thing for response functions
+%       imethod: same thing for methods
+%       iparams: same thing for params
+%       overwrite: overwrite qmudir before analysis
+
+disp('preprocessing dakota inputs');
+qmudir    = getfieldvalue(options,'qmudir',['qmu' num2str(feature('GetPid'))]);  % qmudir = ['qmu_' datestr(now,'yyyymmdd_HHMMSS')];
+qmufile   = getfieldvalue(options,'qmufile','qmu');% qmufile cannot be changed unless ????script.sh is also changed
+overwrite = getfieldvalue(options,'overwrite','n');
+ivar      = getfieldvalue(options,'ivar',1);
+iresp     = getfieldvalue(options,'iresp',1);
+imethod   = getfieldvalue(options,'imethod',1);
+iparams   = getfieldvalue(options,'iparams',1);
+
+%first create temporary directory in which we will work
+if strncmpi(overwrite,'y',1)
+	system(['rm -rf ' qmudir '/*']); 
+else
+	%does the directory exist? if so, then error out
+	if exist(qmudir)==7,
+		error('Existing ''%s'' directory, cannot overwrite. Specify ''overwrite'',''y'' option in solve arguments.',options.qmudir);
+	end
+end
+mkdir(qmudir)
+cd(qmudir)
+
+%when running in library mode, the in file needs to be called md.miscellaneous.name.qmu.in
+qmufile=[md.miscellaneous.name ];
+
+%retrieve variables and resposnes for this particular analysis.
+variables=md.qmu.variables(ivar);
+responses=md.qmu.responses(iresp);
+
+%expand variables and responses
+variables=expandvariables(md,variables);
+responses=expandresponses(md,responses);
+
+%go through variables and responses, and check they don't have more than md.qmu.numberofpartitions values. Also determine numvariables and numresponses{{{
+numvariables=0;
+variable_fieldnames=fieldnames(variables);
+for i=1:length(variable_fieldnames),
+	field_name=variable_fieldnames{i};
+	fieldvariables=variables.(field_name);
+	for j=1:numel(fieldvariables)
+		if strncmpi(fieldvariables(j).descriptor,'scaled_',7) && str2int(fieldvariables(j).descriptor,'last')>md.qmu.numberofpartitions,
+			error('preqmu error message: one of the expanded variables has more values than the number of partitions (setup in md.qmu.numberofpartitions)');
+		end
+	end
+	numvariables=numvariables+numel(variables.(field_name));
+end
+
+numresponses=0;
+response_fieldnames=fieldnames(responses);
+for i=1:length(response_fieldnames),
+	field_name=response_fieldnames{i};
+	fieldresponses=responses.(field_name);
+	for j=1:numel(fieldresponses)
+		if strncmpi(fieldresponses(j).descriptor,'scaled_',7) && str2int(fieldresponses(j).descriptor,'last')>md.qmu.numberofpartitions,
+			error('preqmu error message: one of the expanded responses has more values than the number of partitions (setup in md.qmu.numberofpartitions)');
+		end
+	end
+	numresponses=numresponses+numel(responses.(field_name));
+end
+%}}}}
+
+%create in file for dakota
+dakota_in_data(md.qmu.method(imethod),variables,responses,md.qmu.params(iparams),qmufile);
+system(['rm -rf ' md.miscellaneous.name '.m']);
+
+%build a list of variables and responses descriptors. the list is not expanded. {{{
+variabledescriptors={};
+variable_fieldnames=fieldnames(md.qmu.variables(ivar));
+for i=1:length(variable_fieldnames),
+	field_name=variable_fieldnames{i};
+	fieldvariables=md.qmu.variables(ivar).(field_name);
+	for j=1:numel(fieldvariables)
+		variabledescriptors{end+1}=fieldvariables(j).descriptor;
+	end
+end
+
+responsedescriptors={};
+response_fieldnames=fieldnames(md.qmu.responses(iresp));
+for i=1:length(response_fieldnames),
+	field_name=response_fieldnames{i};
+	fieldresponses=md.qmu.responses(iresp).(field_name);
+	for j=1:numel(fieldresponses)
+		responsedescriptors{end+1}=fieldresponses(j).descriptor;
+	end
+end
+%}}}
+
+%register the fields that will be needed by the Qmu model.
+md.qmu.numberofresponses=numresponses;
+md.qmu.variabledescriptors=variabledescriptors;
+md.qmu.responsedescriptors=responsedescriptors;
+
+%now, we have to provide all the info necessary for the solutions to compute the responses. For ex, if mass_flux 
+%is a response, we need a profile of points.  For a misfit, we need the observed velocity, etc ...
+md=process_qmu_response_data(md);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/process_qmu_options.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/process_qmu_options.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/process_qmu_options.m	(revision 21239)
@@ -0,0 +1,100 @@
+function outoptions=process_qmu_options(options)
+%PROCESS_QMU_OPTIONS - set up default options for qmu phase
+%
+%   Usage:
+%      options=process_qmu_options(options)
+%
+%   See also: QMU,RECOVER_QMU_OPTIONS
+
+%analysis_type: check on this option, error out otherwise
+found=0;
+for i=1:size(options,1),
+	if strcmpi(options{i,1},'analysis_type'),
+		analysis_type=options{i,2};
+		found=1;
+	end
+end
+if ~found,
+	error('recover_qmu_options error message: no ''analysis_type'' was provided');
+end
+
+%package: is there one? default to ''JPL''
+found=0;
+for i=1:size(options,1),
+	if strcmpi(options{i,1},'package'),
+		package=options{i,2};
+		found=1;
+	end
+end
+if ~found,
+	disp('recover_qmu_options info message: no ''package'' was provided, defaulting to ''JPL''');
+	options(end+1,:)={'package' 'JPL'};
+	package='JPL';
+end
+
+if ~ischar(package), 
+	error(['process_qmu_options error message: package ' package ' not supported yet']);
+end
+
+%check solution type is supported
+if ~(strcmpi(analysis_type,'control') |  ...
+		strcmpi(analysis_type,'stressbalance') |  ...
+		strcmpi(analysis_type,'masstransport') |  ...
+		strcmpi(analysis_type,'thermal') |  ...
+		strcmpi(analysis_type,'parameters') |  ...
+		strcmpi(analysis_type,'transient') ),
+	error(['process_qmu_options error message: analysis_type ' analysis_type ' not supported yet!']);
+end
+
+%  process qmu arguments
+
+%first, the defaults
+qmudir ='qmu';% qmudir =['qmu_' datestr(now,'yyyymmdd_HHMMSS')];
+qmufile='qmu';
+ivar   =1;
+iresp  =1;
+imethod=1;
+iparams=1;
+runmpi =false;
+
+for i=1:size(options,1),
+	switch options{i,1},
+	case 'qmudir'
+		qmudir=options{i,2};
+	case 'qmufile'
+		qmufile=options{i,2};
+	case 'ivar'
+		ivar=options{i,2};
+	case 'iresp'
+		iresp=options{i,2};
+	case 'imethod'
+		imethod=options{i,2};
+	case 'iparams'
+		iparams=options{i,2};
+	case 'overwrite'
+		outoptions.overwrite=options{i,2};
+	case 'keep'
+		outoptions.keep=options{i,2};
+	case 'outfiles'
+		outoptions.outfiles=options{i,2};
+	case 'rstfile'
+		outoptions.rstfile=options{i,2}; 
+	case 'rundakota'
+		outoptions.rundakota=options{i,2};
+	case 'runmpi'
+		runmpi=options{i,2};
+	otherwise
+		%nothing
+	end
+end
+
+%setup final options structure
+outoptions.analysis_type=analysis_type;
+outoptions.package=package;
+outoptions.qmudir=qmudir;
+outoptions.qmufile=qmufile;
+outoptions.ivar=ivar;
+outoptions.iresp=iresp;
+outoptions.imethod=imethod;
+outoptions.iparams=iparams;
+outoptions.runmpi=runmpi;
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/process_qmu_response_data.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/process_qmu_response_data.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/process_qmu_response_data.m	(revision 21239)
@@ -0,0 +1,50 @@
+function md=process_qmu_response_data(md)
+%PROCESS_QMU_RESPONSE_DATA - process any data necessary for the solutions to process the data. 
+%
+% Usage: md=process_qmu_response_data(md)
+%
+% See also PREQMU, PRESOLVE
+
+%preliminary data
+process_mass_flux_profiles=0;
+
+num_mass_flux=0;
+
+%loop through response descriptors, and act accordingly
+for i=1:numel(md.qmu.responsedescriptors),
+
+	%Do we have to process  mass flux profiles?
+	if strncmpi(md.qmu.responsedescriptors{i},'indexed_MassFlux',16),
+		num_mass_flux=num_mass_flux+1;
+		process_mass_flux_profiles=1;
+	end
+end
+
+%deal with mass flux profiles
+if process_mass_flux_profiles,
+
+	%we need a profile of points on which to compute the mass_flux, is it here? 
+	if isnans(md.qmu.mass_flux_profiles),
+		error('process_qmu_response_data error message: could not find a mass_flux exp profile!');
+	end
+
+	if ~iscell(md.qmu.mass_flux_profiles),
+		error('process_qmu_response_data error message: qmu_mass_flux_profiles field should be a cell array of domain outline names');
+	end
+
+	if isempty(md.qmu.mass_flux_profiles),
+		error('process_qmu_response_data error message: qmu_mass_flux_profiles cannot be empty!');
+	end
+
+	if num_mass_flux~=numel(md.qmu.mass_flux_profiles),
+		error('process_qmu_response_data error message: qmu_mass_flux_profiles should be of the same size as the number of MassFlux responses asked for in the Qmu analysis');
+	end
+
+	%ok, process the domains named in qmu_mass_flux_profiles,  to build a list of segments (MatArray)
+	md.qmu.mass_flux_segments=cell(num_mass_flux,1);
+
+	for i=1:num_mass_flux,
+		md.qmu.mass_flux_segments{i}=MeshProfileIntersection(md.mesh.elements,md.mesh.x,md.mesh.y,[md.qmu.mass_flux_profile_directory '/' md.qmu.mass_flux_profiles{i}]);
+	end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/qmu_correlation.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/qmu_correlation.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/qmu_correlation.m	(revision 21239)
@@ -0,0 +1,50 @@
+function factors=qmu_correlation(md,variablename,responsename)
+%QMU_CORRELATION - compute correlation between qmu output and a certain input variable.
+%
+%   Usage:
+%      factors=qmu_correlation(md,variablename,responsename)
+%
+%
+%   Example:
+%      mass_flux_drag_correlation=qmu_correlation(md,'drag','mass_flux');
+
+if ~isfield(md.qmu.results,'dresp_dat'),
+	error('qmu_correlation error message: could not find dresp_dat field in dakota results. you need to run montecarlo before computing correlations');
+end
+
+data=md.qmu.results.dresp_dat;
+
+%go through all the rows and figure which one we are interested in.
+found=0;
+for i=1:numel(data),
+	if strcmpi(data(i).descriptor,responsename),
+		found=i;
+		break;
+	end
+end
+if found==0,
+	error(['qmu_correlation error message: could not find data descriptor for response ' responsename]);
+end
+
+%get the response samples.
+response_samples=data(found).sample;
+
+%now go through variables, and compute correlation coefficient each time: 
+variablenamelength=length(variablename);
+index=[];
+for i=1:numel(data),
+	if strncmpi(variablename,data(i).descriptor,variablenamelength),
+		%this observation is one we are looking for.
+		index=[index;i];
+	end
+end
+
+if isempty(index),
+	error(['qmu_correlation error message: could not find correlation descriptor for variable ' variablename]);
+end
+
+factors=zeros(numel(index),1);
+for i=1:numel(index),
+	matrix=corrcoef(data(index(i)).sample,response_samples);
+	factors(i)=matrix(2,1);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/qmuisdistributed.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/qmuisdistributed.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/qmuisdistributed.m	(revision 21239)
@@ -0,0 +1,11 @@
+function found=qmuisdistribted(string)
+%QMUISDISTRIBTED - figure out if a string is a decriptor with a numerical postfix. Like thickness1, or drag10
+
+%just take last string element, and see if it is numeric.
+last=string(end);
+
+if ((double(last)<=57) & (double(last)>=48)),
+	found=1;
+else
+	found=0;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/qmumarshall.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/qmumarshall.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/qmumarshall.m	(revision 21239)
@@ -0,0 +1,75 @@
+function qmumarshall(md.qmu.variables,responses)
+%QMUMARSHALL - output ISSM compatible binary file with qmu fields. This is 
+%   in addition to the marshall routine for regular solve routines.
+%   Usage:
+%      qmumarshall(md.qmu.variables,responses)
+% 
+%   where variables and responses are the Dakota variables and responses found in the model @md.
+
+%some checks on list of arguments
+if ((nargin~=3) & (nargout~=0))
+	qmumarshallusage;
+	error('marshall error message');
+end
+
+disp(['qmu marshalling file ' md.miscellaneous.name '.bin']);
+
+%open file for binary adding 
+fid=fopen([ md.miscellaneous.name '.bin'],'ab');
+if fid==-1,
+	error(['qmumarshall error message: could not open ' [md.miscellaneous.name '.bin'],' file for binary adding']);
+end
+
+%deal with variables
+WriteData(fid,md.numvariabledescriptors,'Integer','numvariabledescriptors');
+for i=1:md.numvariabledescriptors,
+	field_name=md.qmu.variabledescriptors{i};
+	WriteData(fid,field_name,'String',['variabledescriptor' num2str(i)]);
+end
+
+%deal with responses
+
+%write number of responses to disk
+WriteData(fid,md.qmu.numberofresponses,'Integer','numberofresponses');
+WriteData(fid,md.qmu.numresponsedescriptors,'Integer','numresponsedescriptors');
+for i=1:md.qmu.numresponsedescriptors,
+	field_name=md.qmu.responsedescriptors{i};
+	WriteData(fid,field_name,'String',['responsedescriptor' num2str(i)]);
+end
+
+%write response specific data
+qmu_segments=0;
+
+for i=1:numel(md.qmu.responsedescriptors),
+	field_name=md.qmu.responsedescriptors{i};
+	if strncmpi(field_name,'indexed_MassFlux',16),
+		qmu_segments=1;
+	end
+end
+
+if qmu_segments,
+	WriteData(fid,md.qmu.mass_flux_num_profiles,'Integer','qmu_mass_flux_num_profiles');
+	for i=1:md.qmu.mass_flux_num_profiles,
+		WriteData(fid,md.qmu.mass_flux_segments{i},'Mat',['qmu_mass_flux_segments' num2str(i)]);
+	end
+else
+	md.qmu.mass_flux_num_profiles=0;
+	WriteData(fid,md.qmu.mass_flux_num_profiles,'Integer','qmu_mass_flux_num_profiles');
+end
+
+%write part and npart to disk
+WriteData(fid,md.qmu.numberofpartitions,'Integer','npart');
+WriteData(fid,md.qmu.partition,'Mat','part');
+
+%close file
+st=fclose(fid);
+if st==-1,
+	error(['qmumarshall error message: could not close file ' [md.miscellaneous.name '.bin']]);
+end
+
+end
+
+function qmumarshallusage()
+disp(' ');
+disp('function qmumarshall(md.qmu.variables,responses)');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/qmuname.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/qmuname.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/qmuname.m	(revision 21239)
@@ -0,0 +1,15 @@
+function md=qmuname(md,varargin)
+%INPUT function md=qmuname(md)
+%Pick up the number from a file, or get it directly from the Dakota structure.  Then modify the name of this 
+%model to reflect this new number.
+
+if nargin==1,
+	fid=fopen('number','r');
+	number=fscanf(fid,'%i',1)
+	fclose(fid);
+else
+	number=varargin{1};
+end
+
+%modify model name by appending number to the name
+md.miscellaneous.name=[md.miscellaneous.name num2str(number)];
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/qmuresponse.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/qmuresponse.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/qmuresponse.m	(revision 21239)
@@ -0,0 +1,116 @@
+function response=qmuresponse(models,results,processedresults,descriptor)
+%QMURESPONSE - compute response function from model results.
+
+if strcmpi(descriptor,'max_vel'),
+	response=max(processedresults.vel);
+elseif strcmpi(descriptor,'min_vel'),
+	response=min(processedresults.vel);
+elseif strcmpi(descriptor,'max_vx'),
+	response=max(processedresults.vx);
+elseif strcmpi(descriptor,'max_abs_vx'),
+	response=max(abs(processedresults.vx));
+elseif strcmpi(descriptor,'min_vx'),
+	response=min(processedresults.vx);
+elseif strcmpi(descriptor,'max_vy'),
+	response=max(processedresults.vy);
+elseif strcmpi(descriptor,'max_abs_vy'),
+	response=max(abs(processedresults.vy));
+elseif strcmpi(descriptor,'min_vy'),
+	response=min(processedresults.vy);
+elseif strncmpi(descriptor,'mass_flux',9),
+	indx=str2int(descriptor(10:end));
+	if isempty(indx) || ~indx
+		indx=1;
+	end
+
+	%call mass flux module.
+	m_dh=models.dh;
+	m_dhu=models.dhu;
+	m_ds=models.ds;
+	isSIA=m_dhu.parameters.isSIA;
+	isSSA=m_dh.parameters.isSSA;
+	isHO=m_dh.parameters.isHO;
+	isFS=m_ds.parameters.isFS;
+	if isSIA,
+
+% for now, separate all segments from double array for parallel to make cells
+		if (length(m_dhu.parameters.qmu_mass_flux_num_segments) > 1)
+			segments=m_dhu.parameters.qmu_mass_flux_segments;
+			m_dhu.parameters.qmu_mass_flux_segments=cell(size(m_dhu.parameters.qmu_mass_flux_num_segments));
+			ipt=1;
+			for i=1:length(m_dhu.parameters.qmu_mass_flux_num_segments)
+				if m_dhu.parameters.qmu_mass_flux_num_segments(i)
+					m_dhu.parameters.qmu_mass_flux_segments{i}=segments(ipt:ipt+m_dhu.parameters.qmu_mass_flux_num_segments(i)-1,:);
+					ipt=ipt+m_dhu.parameters.qmu_mass_flux_num_segments(i);
+				end
+			end
+			clear segments
+		end
+
+		if isnumeric(m_dhu.parameters.qmu_mass_flux_segments)
+			response=MassFlux(m_dhu.elements,m_dhu.nodes,m_dhu.vertices,m_dhu.loads,m_dhu.materials,m_dhu.parameters,results.u_g);
+		else
+			save=m_dhu.parameters.qmu_mass_flux_segments;
+			m_dhu.parameters.qmu_mass_flux_segments=m_dhu.parameters.qmu_mass_flux_segments{indx};
+			response=MassFlux(m_dhu.elements,m_dhu.nodes,m_dhu.vertices,m_dhu.loads,m_dhu.materials,m_dhu.parameters,results.u_g);
+			m_dhu.parameters.qmu_mass_flux_segments=save;
+			clear save
+		end
+
+	elseif isSSA || isHO,
+
+% for now, separate all segments from double array for parallel to make cells
+		if (length(m_dh.parameters.qmu_mass_flux_num_segments) > 1)
+			segments=m_dh.parameters.qmu_mass_flux_segments;
+			m_dh.parameters.qmu_mass_flux_segments=cell(size(m_dh.parameters.qmu_mass_flux_num_segments));
+			ipt=1;
+			for i=1:length(m_dh.parameters.qmu_mass_flux_num_segments)
+				if m_dh.parameters.qmu_mass_flux_num_segments(i)
+					m_dh.parameters.qmu_mass_flux_segments{i}=segments(ipt:ipt+m_dh.parameters.qmu_mass_flux_num_segments(i)-1,:);
+					ipt=ipt+m_dh.parameters.qmu_mass_flux_num_segments(i);
+				end
+			end
+			clear segments
+		end
+
+		if isnumeric(m_dh.parameters.qmu_mass_flux_segments)
+			response=MassFlux(m_dh.elements,m_dh.nodes,m_dh.vertices,m_dh.loads,m_dh.materials,m_dh.parameters,results.u_g);
+		else
+			save=m_dh.parameters.qmu_mass_flux_segments;
+			m_dh.parameters.qmu_mass_flux_segments=m_dh.parameters.qmu_mass_flux_segments{indx};
+			response=MassFlux(m_dh.elements,m_dh.nodes,m_dh.vertices,m_dh.loads,m_dh.materials,m_dh.parameters,results.u_g);
+			m_dh.parameters.qmu_mass_flux_segments=save;
+			clear save
+		end
+
+	elseif isFS,
+
+% for now, separate all segments from double array for parallel to make cells
+		if (length(m_ds.parameters.qmu_mass_flux_num_segments) > 1)
+			segments=m_ds.parameters.qmu_mass_flux_segments;
+			m_ds.parameters.qmu_mass_flux_segments=cell(size(m_ds.parameters.qmu_mass_flux_num_segments));
+			ipt=1;
+			for i=1:length(m_ds.parameters.qmu_mass_flux_num_segments)
+				if m_ds.parameters.qmu_mass_flux_num_segments(i)
+					m_ds.parameters.qmu_mass_flux_segments{i}=segments(ipt:ipt+m_ds.parameters.qmu_mass_flux_num_segments(i)-1,:);
+					ipt=ipt+m_ds.parameters.qmu_mass_flux_num_segments(i);
+				end
+			end
+			clear segments
+		end
+
+		if isnumeric(m_ds.parameters.qmu_mass_flux_segments)
+			response=MassFlux(m_ds.elements,m_ds.nodes,m_ds.vertices,m_ds.loads,m_ds.materials,m_ds.parameters,results.u_g);
+		else
+			save=m_ds.parameters.qmu_mass_flux_segments;
+			m_ds.parameters.qmu_mass_flux_segments=m_ds.parameters.qmu_mass_flux_segments{indx};
+			response=MassFlux(m_ds.elements,m_ds.nodes,m_ds.vertices,m_ds.loads,m_ds.materials,m_ds.parameters,results.u_g);
+			m_ds.parameters.qmu_mass_flux_segments=save;
+			clear save
+		end
+	else
+		error('qmuresponse error message: unsupported analysis type for mass_flux computation!');
+	end
+else
+	error(['qmuresponse error message: unknown descriptor ' descriptor]);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/qmuroot.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/qmuroot.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/qmuroot.m	(revision 21239)
@@ -0,0 +1,12 @@
+function root=qmuroot(string)
+%QMUROOT - return root of a distributed descriptor
+
+root='';
+found=0;
+for i=1:length(string),
+	if ((49<=double(string(i))) && (double(string(i)<=57)))
+		break;
+	else
+		root=[root string(i)];
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/recover_qmu_options.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/recover_qmu_options.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/recover_qmu_options.m	(revision 21239)
@@ -0,0 +1,22 @@
+function options=recover_qmu_options(md,varargin)
+%RECOVER_SOLVE_OPTIONS - recover solution options for qmu runs.
+%
+%   Usage:
+%      options=recover_qmu_options(md,varargin);
+%
+%   See also: SOLVE
+
+%initialize options.
+options=cell(0,2);
+
+%make sure length(varargin) is even, ie options come in pairs.
+if mod(length(varargin),2),
+	error('recover_qmu_options error message: an even number of options is necessary');
+end
+
+%go through varargin, extract options 
+for i=1:length(varargin)/2,
+
+	options(end+1,:)={varargin{2*i-1} varargin{2*i}};
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/rlev_write.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/rlev_write.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/rlev_write.m	(revision 21239)
@@ -0,0 +1,66 @@
+%
+%  function to write response levels
+%
+function []=rlev_write(fidi,dresp,params)
+
+if isempty(dresp)
+    return;
+end
+
+%  put responses into lists for writing
+
+nresp=0;
+respl={};
+probl={};
+rell ={};
+grell={};
+
+fnames=fieldnames(dresp);
+for i=1:numel(fnames)
+    nresp=nresp+numel(dresp.(fnames{i}));
+    [respli,probli,relli,grelli]=prop_levels(dresp.(fnames{i}));
+    respl=[respl respli];
+    probl=[probl probli];
+    rell =[rell  relli ];
+    grell=[grell grelli];
+end
+
+%  write response levels
+
+param_write(fidi,'\t  ','distribution',' ','\n',params);
+if ~isempty(respl)
+    rlevi_write(fidi,'response_levels',respl);
+    param_write(fidi,'\t  ','compute',' ','\n',params);
+end 
+if ~isempty(probl)
+    rlevi_write(fidi,'probability_levels',probl);
+end
+if ~isempty(rell)
+    rlevi_write(fidi,'reliability_levels',rell);
+end
+if ~isempty(grell)
+    rlevi_write(fidi,'gen_reliability_levels',grell);
+end
+
+end
+
+%
+%  function to each type of response level
+%
+function []=rlevi_write(fidi,ltype,levels)
+
+fprintf(fidi,'\t  num_%s =',ltype);
+for i=1:numel(levels)
+    fprintf(fidi,' %d',length(levels{i}));
+end
+fprintf(fidi,'\n');
+
+fprintf(fidi,'\t  %s =\n',ltype);
+
+for i=1:numel(levels)
+    if ~isempty(levels{i})
+        vector_write(fidi,sprintf('\t    '),levels{i},8,76);
+    end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/rlist_write.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/rlist_write.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/rlist_write.m	(revision 21239)
@@ -0,0 +1,69 @@
+%
+%  function to write response list
+%
+function [rdesc]=rlist_write(fidi,cstring,cstring2,dresp,rdesc)
+
+if isempty(dresp)
+    return;
+end
+
+%  put responses into lists for writing
+%  (and accumulate descriptors into list for subsequent writing)
+
+nresp=0;
+pstype =[];
+pscale =[];
+pweight=[];
+plower =[];
+pupper =[];
+ptarget=[];
+
+fnames=fieldnames(dresp);
+for i=1:numel(fnames)
+    nresp=nresp+numel(dresp.(fnames{i}));
+    pstype =[pstype  prop_stype(dresp.(fnames{i})) ];
+    pscale =[pscale  prop_scale(dresp.(fnames{i})) ];
+    pweight=[pweight prop_weight(dresp.(fnames{i}))];
+    plower =[plower  prop_lower(dresp.(fnames{i})) ];
+    pupper =[pupper  prop_upper(dresp.(fnames{i})) ];
+    ptarget=[ptarget prop_target(dresp.(fnames{i}))];
+    rdesc  =[rdesc   prop_desc(dresp.(fnames{i}),fnames{i})];
+end
+
+%  write responses
+
+disp(sprintf('  Writing %d %s responses.',nresp,cstring));
+
+fprintf(fidi,'\tnum_%s = %d\n',cstring,nresp);
+if ~isempty(pstype)
+    fprintf(fidi,'\t  %s_scale_types =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pstype ,6,76);
+end
+if ~isempty(pscale)
+    fprintf(fidi,'\t  %s_scales =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pscale ,6,76);
+end
+if ~isempty(pweight)
+    switch cstring2
+        case 'objective_function'
+            fprintf(fidi,'\t  %s_weights =\n','multi_objective');
+            vector_write(fidi,sprintf('\t    '),pweight,6,76);
+        case 'least_squares_term'
+            fprintf(fidi,'\t  %s_weights =\n','least_squares');
+            vector_write(fidi,sprintf('\t    '),pweight,6,76);
+    end
+end
+if ~isempty(plower)
+    fprintf(fidi,'\t  %s_lower_bounds =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),plower ,6,76);
+end
+if ~isempty(pupper)
+    fprintf(fidi,'\t  %s_upper_bounds =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pupper ,6,76);
+end
+if ~isempty(ptarget)
+    fprintf(fidi,'\t  %s_targets =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),ptarget,6,76);
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/sensitivities.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/sensitivities.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/sensitivities.m	(revision 21239)
@@ -0,0 +1,68 @@
+function sens=sensitivies(md,variablename,responsename)
+%SENSITIVIES - compute sensitivities for a certain variable and response.
+%
+%   Usage:
+%      sens=sensitivities(md,variablename,responsename)
+%
+%
+%   Example: sens=sensitivities(md,'DragCoefficient','MaxVel');
+%
+
+variablenamelength=length(variablename);
+
+%go through all response functions and find the one corresponding to the correct responsename
+responsefunctions=md.qmu.results.dresp_out;
+found=0;
+for i=1:length(responsefunctions),
+	if strcmpi(responsefunctions(i).descriptor,responsename),
+		found=i;
+		break;
+	end
+end
+if ~found,
+	error('importancefactors error message: could not find correct response function');
+end
+responsefunctions=responsefunctions(found);
+nfun=size(responsefunctions.var,1);
+
+%Now recover response to the correct design variable
+rawsens=zeros(0,1);
+count=0;
+for i=1:nfun,
+	desvar=responsefunctions.var{i};
+	if strncmpi(desvar,variablename,variablenamelength),
+		rawsens(end+1,1)=responsefunctions.sens(i);
+		count=count+1;
+	end
+end
+
+%Now, if this was a distributed variable, the sensitivities need to be scaled by means of the input variable.
+if IsScaled(variablename),
+
+	%ipick up the variable in the model
+	switch variablename,
+		case 'thickness', variable = md.geometry.thickness; 
+		otherwise, error(['scaled variable ' variablename  ' not associated to any model field']);
+	end
+
+	%average it onto the partition
+	average_variable=AreaAverageOntoPartition(md,variable);
+
+	%scale the sensitivities: only where the average_variable is not 0 
+	if ~isempty(rawsens),
+		pos=find(average_variable);
+		rawsens(pos)=rawsens(pos)./average_variable(pos);
+	end
+end
+
+if count==0,
+	error('sensitivities error message: either response does not exist, or sensitivities are empty');
+end
+
+if count==1, %we have scalar
+	sens=rawsens;
+	return;
+else
+	%project the sensitivities from the partition onto the mesh
+	sens=rawsens(md.qmu.partition'+1); %md.qmu.partition was created to index "c" style
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/setupdesign/IsScaled.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/setupdesign/IsScaled.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/setupdesign/IsScaled.m	(revision 21239)
@@ -0,0 +1,19 @@
+function status=IsScaled(variablename)
+%ISSCALED decide whether a variable should be scaled or not. 
+
+switch variablename,
+case {'MaterialsRhoIce','MaterialsRhoSeawater','MaterialsHeatCapacity','MaterialsThermalConductivity','Gravity','MaxVel'},
+
+	status=0;
+
+case {'GeometryThickness','GeometrySurface','GeometryBed','FrictionCoefficient','MaterialsRheologyB','MaterialsRheologyBbar'},
+
+	status=1;
+
+case {'RiftsFriction'},
+
+	status=2; %special treatment
+
+otherwise
+	error(['IsScaled error  message: could not find ' variablename]);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/setupdesign/QmuSetupResponses.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/setupdesign/QmuSetupResponses.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/setupdesign/QmuSetupResponses.m	(revision 21239)
@@ -0,0 +1,23 @@
+function dresp=QmuSetupResponses(md,dresp,responses)
+
+%get descriptor
+descriptor=responses.descriptor;
+
+%decide whether this is a distributed response, which will drive whether we expand it into npart values,
+%or if we just carry it forward as is. 
+
+%ok, key off according to type of descriptor:
+if strncmp(descriptor,'scaled_',7),
+	%we have a scaled response, expand it over the partition.
+
+	%ok, dealing with semi-discrete distributed response. Distribute according to how many 
+	%partitions we want
+
+	for j=1:md.qmu.numberofpartitions
+		dresp(end+1)           =responses;
+		dresp(end  ).descriptor=sprintf('%s_%d',responses.descriptor,j);
+	end
+
+else
+	dresp(end+1)=responses;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/setupdesign/QmuSetupVariables.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/setupdesign/QmuSetupVariables.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/setupdesign/QmuSetupVariables.m	(revision 21239)
@@ -0,0 +1,45 @@
+function dvar=QmuSetupVariables(md,dvar,variables)
+
+%get descriptor
+descriptor=variables.descriptor;
+
+%decide whether this is a distributed variable, which will drive whether we expand it into npart values,
+%or if we just carry it forward as is. 
+
+%ok, key off according to type of descriptor:
+if strncmp(descriptor,'scaled_',7),
+	%we have a scaled variable, expand it over the partition.
+
+	if isa(variables,'uniform_uncertain'),
+		if (length(variables.lower)>md.qmu.numberofpartitions || length(variables.upper)>md.qmu.numberofpartitions)
+			error('QmuSetupDesign error message: stddev should be either a scalar or a ''npart'' length vector');
+		end
+	elseif isa(variables,'normal_uncertain'),
+		if length(variables.stddev)>md.qmu.numberofpartitions,
+			error('QmuSetupDesign error message: stddev should be either a scalar or a ''npart'' length vector');
+		end
+	end
+
+	%ok, dealing with semi-discrete distributed variable. Distribute according to how many 
+	%partitions we want
+
+	for j=1:md.qmu.numberofpartitions
+		dvar(end+1)           =variables;
+		dvar(end  ).descriptor=sprintf('%s_%d',variables.descriptor,j);
+		if isa(variables,'uniform_uncertain'),
+			if length(variables.lower)>1,
+				dvar(end  ).lower=variables.lower(j);
+			end
+			if length(variables.upper)>1,
+				dvar(end  ).upper=variables.upper(j);
+			end
+		elseif isa(variables,'normal_uncertain'),
+			if length(variables.stddev)>1,
+				dvar(end  ).stddev=variables.stddev(j);
+			end
+		end
+	end
+
+else
+	dvar(end+1)=variables;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/setupdesign/setupriftsfriction.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/setupdesign/setupriftsfriction.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/setupdesign/setupriftsfriction.m	(revision 21239)
@@ -0,0 +1,10 @@
+function dvar=setupriftsfriction(md,dvar,variables)
+
+%we have several rifts.
+
+for j=1:md.rifts.numrifts
+	dvar(end+1)           =variables;
+	dvar(end  ).descriptor=sprintf('%s%d',variables.descriptor,j);
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/vector_write.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/vector_write.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/vector_write.m	(revision 21239)
@@ -0,0 +1,52 @@
+
+%%  function to write a vector on multiple lines
+
+function []=vector_write(fidi,sbeg,vec,nmax,cmax)
+
+if ~exist('nmax','var') || isempty(nmax)
+    nmax=Inf;
+end
+if ~exist('cmax','var') || isempty(cmax)
+    cmax=Inf;
+end
+
+%  set up first iteration
+
+svec =[];
+nitem=nmax;
+lsvec=cmax;
+
+%  transpose vector from column-wise to row-wise
+
+vec=vec';
+
+%  assemble each line, flushing when necessary
+
+for i=1:numel(vec)
+    if isnumeric(vec(i))
+        sitem=sprintf('%g'    ,vec(i));
+    else
+        sitem=sprintf('''%s''',char(vec(i)));
+    end
+    nitem=nitem+1;
+    lsvec=lsvec+1+length(sitem);
+
+    if (nitem <= nmax) && (lsvec <= cmax)
+        svec=[svec ' ' sitem];
+    else
+        if ~isempty(svec)
+            fprintf(fidi,'%s\n',svec);
+        end
+        svec=[sbeg sitem];
+        nitem=1;
+        lsvec=length(svec);
+    end
+end
+
+%  flush buffer at end, if necessary
+
+if ~isempty(svec)
+    fprintf(fidi,'%s\n',svec);
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/vlist_write.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/vlist_write.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/qmu/vlist_write.m	(revision 21239)
@@ -0,0 +1,80 @@
+%
+%  function to write variable list
+%
+function []=vlist_write(fidi,cstring,cstring2,dvar)
+
+if isempty(dvar)
+    return;
+end
+
+%  put variables into lists for writing
+
+nvar=0;
+pinitpt=[];
+plower =[];
+pupper =[];
+pmean  =[];
+pstddev=[];
+pinitst=[];
+pstype =[];
+pscale =[];
+pdesc  =[];
+
+fnames=fieldnames(dvar);
+for i=1:numel(fnames)
+    nvar=nvar+numel(dvar.(fnames{i}));
+    pinitpt=[pinitpt prop_initpt(dvar.(fnames{i}))];
+    plower =[plower  prop_lower(dvar.(fnames{i})) ];
+    pupper =[pupper  prop_upper(dvar.(fnames{i})) ];
+    pmean  =[pmean   prop_mean(dvar.(fnames{i}))  ];
+    pstddev=[pstddev prop_stddev(dvar.(fnames{i}))];
+    pinitst=[pinitst prop_initst(dvar.(fnames{i}))];
+    pstype =[pstype  prop_stype(dvar.(fnames{i})) ];
+    pscale =[pscale  prop_scale(dvar.(fnames{i})) ];
+    pdesc  =[pdesc   prop_desc(dvar.(fnames{i}),fnames{i})];
+end
+
+%  write variables
+%  (using Dakota 4.1 syntax for backward compatability)
+
+disp(sprintf('  Writing %d %s variables.',nvar,cstring));
+
+fprintf(fidi,'\t%s = %d\n',cstring,nvar);
+if ~isempty(pinitpt)
+    fprintf(fidi,'\t  %s_initial_point =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pinitpt,6,76);
+end
+if ~isempty(plower)
+    fprintf(fidi,'\t  %s_lower_bounds =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),plower ,6,76);
+end
+if ~isempty(pupper)
+    fprintf(fidi,'\t  %s_upper_bounds =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pupper ,6,76);
+end
+if ~isempty(pmean)
+    fprintf(fidi,'\t  %s_means =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pmean  ,6,76);
+end
+if ~isempty(pstddev)
+    fprintf(fidi,'\t  %s_std_deviations =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pstddev,6,76);
+end
+if ~isempty(pinitst)
+    fprintf(fidi,'\t  %s_initial_state =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pinitst,6,76);
+end
+if ~isempty(pstype)
+    fprintf(fidi,'\t  %s_scale_types =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pstype ,6,76);
+end
+if ~isempty(pscale)
+    fprintf(fidi,'\t  %s_scales =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pscale ,6,76);
+end
+if ~isempty(pdesc)
+    fprintf(fidi,'\t  %s_descriptors =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pdesc  ,6,76);
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/BasinConstrain.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/BasinConstrain.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/BasinConstrain.m	(revision 21239)
@@ -0,0 +1,63 @@
+function md=BasinConstrain(md,domain)
+%BASINCONSTRAIN - constrain basin
+%
+%   Constrain basin using a constraint domain outline, 
+%   to dirichlet boundary conditions.
+%   constraindomain is an Argus domain outline file enclosing 
+%   the geographical area of interest.
+%
+%   Usage: 
+%      md=BasinConstrain(md,constraindomain)
+%
+%   Example:
+%      md=BasinConstrain(md,'DomainOutline.exp');
+%      md=BasinConstrain(md,'~Iceshelves.exp');
+
+%now, flag nodes and elements outside the domain outline.
+if ischar(domain),
+	if isempty(domain),
+		elementondomain=zeros(md.mesh.numberofelements,1);
+		vertexondomain=zeros(md.mesh.numberofvertices,1);
+		invert=0;
+	elseif strcmpi(domain,'all')
+		elementondomain=ones(md.mesh.numberofelements,1);
+		vertexondomain=ones(md.mesh.numberofvertices,1);
+		invert=0;
+	else
+		%make sure that we actually don't want the elements outside the domain outline!
+		if strcmpi(domain(1),'~'),
+			domain=domain(2:end);
+			invert=1;
+		else
+			invert=0;
+		end
+		%ok, flag elements and nodes
+		[vertexondomain elementondomain]=ContourToMesh(md.mesh.elements(:,1:3),md.mesh.x,md.mesh.y,domain,'element and node',2);
+	end
+	if invert,
+		vertexondomain=~vertexondomain;
+		elementondomain=~elementondomain;
+	end
+else
+	error('BasinConstrain error message: domain type not supported yet');
+end
+
+%list of elements and nodes not on domain
+vertexnotondomain=find(~vertexondomain);
+elementnotondomain=find(~elementondomain);
+
+%all elements outside the constraint domain are equivalent to water. all nodes outside are spc'd.
+md.stressbalance.spcvx(vertexnotondomain)=md.inversion.vx_obs(vertexnotondomain);
+md.stressbalance.spcvy(vertexnotondomain)=md.inversion.vy_obs(vertexnotondomain);
+md.mask.elementonwater(elementnotondomain)=1;
+
+%now, make sure all elements on water have nodes that are spc'd, otherwise, we'll get a singular problem.
+pos=find(~md.mask.elementonwater);
+numpos=unique(md.mesh.elements(pos,:));
+nodes=setdiff(1:1:md.mesh.numberofvertices,numpos);
+md.stressbalance.spcvx(nodes)=md.inversion.vx_obs(nodes);
+md.stressbalance.spcvy(nodes)=md.inversion.vy_obs(nodes);
+
+%make sure icefronts that are completely spc'd are taken out:
+free_segments=find((~isnan(md.stressbalance.spcvx(md.stressbalance.icefront(:,1:2))) + ~isnan(md.stressbalance.spcvy(md.stressbalance.icefront(:,1:2))))~=2);
+md.stressbalance.icefront=md.stressbalance.icefront(free_segments,:);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/BasinConstrainShelf.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/BasinConstrainShelf.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/BasinConstrainShelf.m	(revision 21239)
@@ -0,0 +1,74 @@
+function md=BasinConstrainShelf(md,domain)
+%BASINCONSTRAIN - constrain basin
+%
+%   Constrain basin using a constraint domain outline, 
+%   to dirichlet boundary conditions.
+%   constraindomain is an Argus domain outline file enclosing 
+%   the geographical area of interest.
+%
+%   Usage: 
+%      md=BasinConstrain(md,constraindomain)
+%
+%   Example:
+%      md=BasinConstrain(md,'DomainOutline.exp');
+%      md=BasinConstrain(md,'~Iceshelves.exp');
+
+%now, flag nodes and elements outside the domain outline.
+if ischar(domain),
+	if isempty(domain),
+		elementondomain=zeros(md.mesh.numberofelements,1);
+		vertexondomain=zeros(md.mesh.numberofvertices,1);
+		invert=0;
+	elseif strcmpi(domain,'all')
+		elementondomain=ones(md.mesh.numberofelements,1);
+		vertexondomain=ones(md.mesh.numberofvertices,1);
+		invert=0;
+	else
+		%make sure that we actually don't want the elements outside the domain outline!
+		if strcmpi(domain(1),'~'),
+			domain=domain(2:end);
+			invert=1;
+		else
+			invert=0;
+		end
+		%ok, flag elements and nodes
+		[vertexondomain elementondomain]=ContourToMesh(md.mesh.elements(:,1:3),md.mesh.x,md.mesh.y,domain,'element and node',2);
+	end
+	if invert,
+		vertexondomain=~vertexondomain;
+		elementondomain=~elementondomain;
+	end
+else
+	error('BasinConstrain error message: domain type not supported yet');
+end
+
+%list of elements and nodes not on domain
+vertexnotondomain=find(~vertexondomain);
+elementnotondomain=find(~elementondomain);
+
+%all elements outside the constraint domain are equivalent to water. all nodes outside are spc'd.
+md.stressbalance.spcvx(vertexnotondomain)=md.inversion.vx_obs(vertexnotondomain);
+md.stressbalance.spcvy(vertexnotondomain)=md.inversion.vy_obs(vertexnotondomain);
+md.mask.elementonwater(elementnotondomain)=1;
+
+%now, make sure all elements on water have nodes that are spc'd, otherwise, we'll get a singular problem.
+pos=find(~md.mask.elementonwater);
+numpos=unique(md.mesh.elements(pos,:));
+nodes=setdiff(1:1:md.mesh.numberofvertices,numpos);
+md.stressbalance.spcvx(nodes)=md.inversion.vx_obs(nodes);
+md.stressbalance.spcvy(nodes)=md.inversion.vy_obs(nodes);
+
+%make sure any node with NaN velocity is spc'd:
+%we spc to the smoothed value, so that control methods don't go berserk trying to figure out what reaction force to apply for the spc to stand.
+pos=find(isnan(md.inversion.vel_obs_raw));
+md.stressbalance.spcvx(pos)=md.inversion.vx_obs(pos); 
+md.stressbalance.spcvy(pos)=md.inversion.vy_obs(pos); 
+
+%iceshelves: any vertex on floating ice is spc'd
+pos=find(md.mask.groundedice_levelset<0.);
+md.stressbalance.spcvx(pos)=md.inversion.vx_obs(pos); 
+md.stressbalance.spcvy(pos)=md.inversion.vy_obs(pos); 
+
+%make sure icefronts that are completely spc'd are taken out:
+free_segments=find((~isnan(md.stressbalance.spcvx(md.stressbalance.icefront(:,1:2))) + ~isnan(md.stressbalance.spcvy(md.stressbalance.icefront(:,1:2))) )~=2);
+md.stressbalance.icefront=md.stressbalance.icefront(free_segments,:);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/basinzoom.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/basinzoom.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/basinzoom.m	(revision 21239)
@@ -0,0 +1,94 @@
+function varargout=basinzoom(varargin)
+%ANTZOOM - zoom on a basin in Antarctica or Greenland.
+%
+%   This function zooms on an existing figure describing Antarctica or Greenland 
+%   The zooming depends on the region name provided as input. 
+%
+%   Usage:
+%      varargout=basinzoom(options)
+
+%recover some options, and set defaults
+
+%is varargin an options database already?
+if nargin==0,
+	options=pairoptions(varargin{:});
+elseif (isa(varargin{1},'plotoptions') | isa(varargin{1},'pairoptions')),
+	%do nothing to the varargin: 
+	options=varargin{1};
+else
+	%process varargin for options: 
+	options=pairoptions(varargin{:});
+end
+
+unitmultiplier=getfieldvalue(options,'unit',NaN);
+basin=getfieldvalue(options,'basin');
+
+if exist(options,'basindelta'),
+
+	basindeltax=getfieldvalue(options,'basindelta',300); 
+	basindeltay=getfieldvalue(options,'basindelta',300); 
+else
+	basindeltax=getfieldvalue(options,'basindeltax',300); 
+	basindeltay=getfieldvalue(options,'basindeltay',300);
+end
+
+%multiply by 1000 to get kms
+basindeltax=basindeltax*1000;
+basindeltay=basindeltay*1000;
+
+%Ok, find basin we are talking about: 
+load([jplsvn() '/ModelData/Names/Names.mat']);
+
+%Go through names: 
+found=0;
+for i=1:size(names,1),
+	if strcmpi(names{i,1},basin),
+		%ok, we've got the region. Get lat and long: 
+		long=names{i,2};
+		lat=names{i,3};
+		hemisphere=names{i,4};
+		found=1;
+		break;
+	end
+end
+
+if ~found,
+	error(['basinzoom error message: cannot find basin ' basin '. Use isbasin to determine a basin name.']);
+end
+
+if hemisphere==+1,
+	central_meridian=getfieldvalue(options,'central_meridian',45);
+	standard_parallel=getfieldvalue(options,'standard_parallel',70);
+else
+	central_meridian=getfieldvalue(options,'central_meridian',0);
+	standard_parallel=getfieldvalue(options,'standard_parallel',71);
+end
+
+%Transform lat long into x,y: 
+[xc,yc]=ll2xy(lat,long,hemisphere,central_meridian,standard_parallel);
+
+%compute x0,x1 and y0,y1 using basindeltax and basindeltay
+x0=xc-basindeltax/2;
+x1=xc+basindeltax/2;
+y0=yc-basindeltay/2;
+y1=yc+basindeltay/2;
+
+if ~isnan(unitmultiplier)
+	x0=x0*unitmultiplier;
+	x1=x1*unitmultiplier;
+	y0=y0*unitmultiplier;
+	y1=y1*unitmultiplier;
+end
+
+%if output arguments are present, return the limits, 
+%otherwise, set them on the current graphic. 
+if nargout==2,
+	found=1;
+	varargout{1}=[x0 x1];
+	varargout{2}=[y0 y1];
+else
+	xlim([x0 x1]);
+	ylim([y0 y1]);
+	found=1;
+	daspect([1;1;1]);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/isbasin.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/isbasin.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/isbasin.m	(revision 21239)
@@ -0,0 +1,17 @@
+function isbasin(name)
+%ISBASIN: figure out if a basin name exists.
+%
+%
+%        Usage:  index=isbasin('jks');
+%
+%
+
+%First, load basin names:
+load([jplsvn '/ModelData/Names/Names.mat']);
+
+%go through names: 
+for i=1:length(names),
+	if ~isempty(strfind(names{i,1},name)),
+		disp(['''' names{i,1} ''' Long:' num2str(names{i,2}) ' Lat:' num2str(names{i,3}) ]);
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/plotbasins.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/plotbasins.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/plotbasins.m	(revision 21239)
@@ -0,0 +1,18 @@
+%display all the domain outlines in a directory
+
+basins=listfiles;
+
+hold on
+for i=1:length(basins), 
+	%check whether this is a .exp file
+	basin=basins{i};
+	if strcmpi(basin(end-3:end),'.exp'),
+
+		contour=expread(basin,0);
+		x=contour(1).x;
+		y=contour(1).y;
+		x0=mean(x); y0=mean(y);
+		text(x0,y0,basin(1:end-4),'Fontsize',14);
+		expdisp(basin);
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/regionaltransient2d.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/regionaltransient2d.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/regionaltransient2d.m	(revision 21239)
@@ -0,0 +1,157 @@
+function md2=regionaltransient2d(md1,area,hmin,hmax,err,stepres)
+%regionaltransient2d - extract a model according to an Argus contour or flag list and remesh
+%               at new resolution res
+%
+%   This routine extracts a submodel from a bigger model with respect to a given contour
+%   md must be followed by the corresponding exp domain file (argus type, .exp extension). 
+%   The model will be remeshed at high rsolution hmin and low resolution hmax.  The ice 
+%   boundary velocities will be spc'd to the transient velocities at saved transient steps
+%   at the resolution optionally provided for stepres.  A stepres of 2 means that you wish
+%   to skip every other saved transient step.  This is useful when extracting a long transient.
+%
+%   Usage:
+%      md2=regionaltransient2d(md1,area,hmin,hmax,err);
+%
+%   Examples:
+%      md2=regionaltransient2d(md,'Domain.exp',500,10000,[15 250]);
+%      md2=regionaltransient2d(md,'Domain.exp',3000,15000,[10 300],2);
+%
+%   See also: MODELEXTRACT, EXTRUDE, COLLAPSE
+
+%some checks
+if ((nargin~=5) & (nargin~=6)),
+	help regionaltransient2d 
+	error('regionaltransient2d error message: bad usage');
+end
+
+%get check option
+if (nargin==5),
+	stepres=1;
+end
+
+%take every fields from model
+mde=md1.extract(area);
+mde.private.bamg=[];
+mde.mesh.extractedvertices=nan;
+mde.mesh.extractedelements=nan;
+
+%remesh
+md2=bamg(mde,'hmin',hmin,'hmax',hmax,'field',[mde.inversion.vel_obs mde.geometry.surface],'splitcorner',1,'KeepVertices',0,'err',err);
+md2=setmask(md2,'','');
+
+%automatically modify fields
+
+	%loop over model fields
+	model_fields=fields(md1);
+	for i=1:length(model_fields),
+
+		%get field
+		field=md1.(model_fields{i});
+		fieldsize=size(field);
+
+		%copy field, interpolated to new mesh
+		if isobject(field), %recursive call
+			object_fields=fields(md1.(model_fields{i}));
+			fname=['(model_fields{i}).(object_fields{j})'];
+		else
+			object_fields=field;
+			fname=['(model_fields{i})'];
+		end
+		for j=1:length(object_fields),
+			%get field
+			field=eval(['md2.' fname]);
+			fieldsize=size(field);
+
+			%size = number of nodes * n
+			for n=1:fieldsize(2)
+				if fieldsize(1)==mde.mesh.numberofvertices
+					if(sum(field(:,n) ~= field(1,n)) == 0)
+						eval(['md2.' fname '(1:md2.mesh.numberofvertices,n)=field(1,n)*ones(md2.mesh.numberofvertices,1);']);
+					else
+						eval(['md2.' fname '(1:md2.mesh.numberofvertices,n)=InterpFromMeshToMesh2d(mde.mesh.elements,mde.mesh.x,mde.mesh.y,field(:,n),md2.mesh.x,md2.mesh.y);']);
+					end
+					eval(['md2.' fname '(:,n)=md2.' fname '(1:md2.mesh.numberofvertices,n);']);
+				elseif fieldsize(1)==mde.mesh.numberofvertices+1
+					if(sum(field(1:end-1,n) ~= field(1,n)) == 0)
+						eval(['md2.' fname '(1:md2.mesh.numberofvertices+1,n)=[field(1,n)*ones(md2.mesh.numberofvertices,1); field(end,n)];']);
+					else
+						eval(['md2.' fname '(1:md2.mesh.numberofvertices+1,n)=[InterpFromMeshToMesh2d(mde.mesh.elements,mde.mesh.x,mde.mesh.y,field(1:end-1,n),md2.mesh.x,md2.mesh.y); field(end,n)];']);
+					end
+					eval(['md2.' fname '(:,n)=md2.' fname '(1:md2.mesh.numberofvertices+1,n)']);
+					%size = number of elements * n
+				elseif fieldsize(1)==mde.mesh.numberofelements
+					if(sum(field(1:end-1,n) ~= field(1,n)) == 0)
+						eval(['md2.' fname '(1:md2.mesh.numberofelements,n)=field(1,n)*ones(md2.mesh.numberofelements,1);']);
+					else
+						eval(['md2.' fname '(1:md2.mesh.numberofelements,n)=InterpFromMeshToMesh2d(mde.mesh.elements,mde.mesh.x,mde.mesh.y,field(:,n),md2.mesh.x,md2.mesh.y);']);
+					end
+					eval(['md2.' fname '(:,n)=md2.' fname '(1:md2.mesh.numberofelements,n);']);
+				end
+			end
+		end
+	end
+
+	%Read transient velocities and thickness, looping through only the populated times
+	spcx=[];
+	spcy=[];
+	spct=[];
+	steps=[];
+	nsteps=length(md1.results.TransientSolution);
+	count=0;
+	numElements=arrayfun(@(x) numel(x.step), md1.results.TransientSolution);
+	for t=find(numElements==1)
+		if ~isempty(md1.results.TransientSolution(t).Vel) & mod(count,stepres)==0,
+			vx=md1.results.TransientSolution(t).Vx;
+			vy=md1.results.TransientSolution(t).Vy;
+			thickness=md1.results.TransientSolution(t).Thickness;
+			spcx=[spcx InterpFromMeshToMesh2d(md1.mesh.elements,md1.mesh.x,md1.mesh.y,vx,md2.mesh.x,md2.mesh.y)];
+			spcy=[spcy InterpFromMeshToMesh2d(md1.mesh.elements,md1.mesh.x,md1.mesh.y,vy,md2.mesh.x,md2.mesh.y)];
+			spct=[spct InterpFromMeshToMesh2d(md1.mesh.elements,md1.mesh.x,md1.mesh.y,thickness,md2.mesh.x,md2.mesh.y)];
+			steps=[steps t*md1.timestepping.time_step];
+		end
+		count=count+1;
+	end
+
+	%As long as there are recorded time steps, spc the boundaries with velocities
+	if nsteps > 0
+		md2.stressbalance.spcvx=md2.stressbalance.spcvx*ones(1,size(spcx,2));
+		md2.stressbalance.spcvy=md2.stressbalance.spcvy*ones(1,size(spcy,2));
+		md2.stressbalance.spcvz=md2.stressbalance.spcvz*ones(1,size(spcx,2));
+		md2.masstransport.spcthickness=md2.masstransport.spcthickness*ones(1,size(spct,2));
+		md2.stressbalance.spcvx(find(md2.mesh.vertexonboundary),:)=spcx(find(md2.mesh.vertexonboundary),:);
+		md2.stressbalance.spcvy(find(md2.mesh.vertexonboundary),:)=spcy(find(md2.mesh.vertexonboundary),:);
+		md2.stressbalance.spcvz(find(md2.mesh.vertexonboundary),:)=0;
+		md2.masstransport.spcthickness(find(md2.mesh.vertexonboundary),:)=spct(find(md2.mesh.vertexonboundary),:);
+		md2.stressbalance.spcvx=[md2.stressbalance.spcvx; steps];
+		md2.stressbalance.spcvy=[md2.stressbalance.spcvy; steps];
+		md2.stressbalance.spcvz=[md2.stressbalance.spcvz; steps];
+		md2.masstransport.spcthickness=[md2.masstransport.spcthickness; steps];
+	end
+
+	%Stressbalance.  Don't spc the icefront vertices.
+	if ~isnan(md2.stressbalance.icefront)
+		md1s=md1.extract(area);
+		%md2.stressbalance.icefront=[md2.mesh.segments 2];
+		e2=md2.mesh.segments(:,end);
+		e1=md1s.mesh.segments(:,end);
+
+		pload = nan*ones(size(md1s.mesh.elements,1),1);
+		pload(md1s.stressbalance.icefront(:,end-1))=md1s.stressbalance.icefront(:,end);
+
+		x2=mean(md2.mesh.x(md2.mesh.elements(e2,:)),2);
+      y2=mean(md2.mesh.y(md2.mesh.elements(e2,:)),2);
+		x1=mean(md1s.mesh.x(md1s.mesh.elements),2);
+      y1=mean(md1s.mesh.y(md1s.mesh.elements),2);
+
+		pload2=griddata(x1,y1,pload,x2,y2,'nearest');
+		md2.stressbalance.icefront=[md2.mesh.segments(~isnan(pload2),:) pload2(~isnan(pload2))];
+		md2.stressbalance.spcvx(unique(md2.stressbalance.icefront(:,1:2)),:)=nan;
+		md2.stressbalance.spcvy(unique(md2.stressbalance.icefront(:,1:2)),:)=nan;
+		md2.stressbalance.spcvz(unique(md2.stressbalance.icefront(:,1:2)),:)=nan;
+		md2.masstransport.spcthickness(unique(md2.stressbalance.icefront(:,1:2)),:)=nan;
+	end
+
+	%Clear results fields
+	if isstruct(md1.results),
+		md2.results=[];
+	end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/showbasins.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/showbasins.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/regional/showbasins.m	(revision 21239)
@@ -0,0 +1,68 @@
+function showbasins(varargin)
+%SHOWBASINS - return basins that are within the xlim and ylim
+%
+%   Usage:
+%      names=showbasins(options);
+%   Options: 
+%      'unit' default 1
+%      'hemisphere': default +1;
+%      'central_meridian: 45 for Greenland and 0 for Antarctica
+%      'standard_parallel: 70 for Greenland and 71 for Antarctica
+%
+
+%is varargin an options database already?
+if nargin==0,
+	options=pairoptions(varargin{:});
+elseif (isa(varargin{1},'plotoptions') | isa(varargin{1},'pairoptions')),
+	%do nothing to the varargin: 
+	options=varargin{1};
+else
+	%process varargin for options: 
+	options=pairoptions(varargin{:});
+end
+
+%recover some options, and set defaults
+unitmultiplier=getfieldvalue(options,'unit',1);
+fontsize=getfieldvalue(options,'fontsize',12);
+hemisphere=getfieldvalue(options,'hemisphere');
+
+if strcmpi(hemisphere,'s'),
+	hemisphere=-1;
+elseif strcmpi(hemisphere,'n'),
+	hemisphere=+1;
+else
+	error('showbasins error message: hemispehre should be either ''n'' or ''s''');
+	end
+
+if hemisphere==+1,
+	central_meridian=getfieldvalue(options,'central_meridian',45);
+	standard_parallel=getfieldvalue(options,'standard_parallel',70);
+else
+	central_meridian=getfieldvalue(options,'central_meridian',0);
+	standard_parallel=getfieldvalue(options,'standard_parallel',71);
+end
+
+%Ok, find basin we are talking about: 
+load([jplsvn '/projects/ModelData/Names/Names.mat']);
+
+%Get xlim and ylim, and convert into lat,long: 
+xlimits=xlim; x0=xlimits(1); x1=xlimits(2);
+ylimits=ylim; y0=ylimits(1); y1=ylimits(2);
+
+%Convert names lat and long into x,y:
+lat=cell2mat(names(:,3));
+long=cell2mat(names(:,2));
+
+%Now, convert lat,long into x,y:
+[x,y]=ll2xy(lat,long,hemisphere,central_meridian,standard_parallel);
+
+%Find  x,y within xlimits and ylimits: 
+locations=find(x>x0 & x<x1 & y>y0 & y<y1);
+
+%Go through locations, and display the names: 
+for i=1:size(locations,1),
+	hold on,
+	plot(x(locations(i)),y(locations(i)),'r.');
+	t=text(x(locations(i)),y(locations(i)),names{locations(i),1}); 
+	set(t,'FontSize',fontsize);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/shp/shp2exp.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/shp/shp2exp.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/shp/shp2exp.m	(revision 21239)
@@ -0,0 +1,48 @@
+function Shp2Exp(expfilename,shapefilename)
+%SHP2EXP- transform shape file to Argus .exp file
+%
+%   Usage:
+%      Shp2Exp(expfilename,shapefilename);
+%
+%   Example:
+%      Shp2Exp('Domain.exp','Domain.shp');
+%
+%   See also EXPMASTER, EXPDOC
+
+	if ~exist(shapefilename,'file'),
+		error(['Shapefile ' shapefilename ' does not exist']);
+	end
+	shp=shaperead(shapefilename);
+
+	expstruct=struct([]);
+	for i=1:length(shp),
+		if strcmpi(shp(i).Geometry,'Polygon'),
+			x=shp(i).X; y=shp(i).Y;
+			ids=find(isnan(x));
+			x(ids)=[]; y(ids)=[];
+			expstruct(end+1).x=x;
+			expstruct(end).y=y;
+			expstruct(end).nods=length(x);
+			expstruct(end).density=1;
+			expstruct(end).closed=1;
+			expstruct(end).name=num2str(shp(i).id);
+		elseif strcmpi(shp(i).Geometry,'Point'),
+			x=shp(i).X; y=shp(i).Y;
+			expstruct(end+1).x=x;
+			expstruct(end).y=y;
+			expstruct(end).nods=length(x);
+			expstruct(end).density=1;
+			expstruct(end).closed=1;
+			%exp(end).name=num2str(shp(i).id);
+		elseif strcmpi(shp(i).Geometry,'Line'),
+			x=shp(i).X; y=shp(i).Y;
+			x(end)=x(1); y(end)=y(1);
+			expstruct(end+1).x=x;
+			expstruct(end).y=y;
+			expstruct(end).nods=length(x);
+			expstruct(end).density=1;
+			expstruct(end).closed=1;
+		end
+	end
+
+	expwrite(expstruct,expfilename);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/shp/shp2exp.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/shp/shp2exp.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/shp/shp2exp.py	(revision 21239)
@@ -0,0 +1,50 @@
+import shapefile
+import os
+from expwrite import expwrite
+
+def shp2exp(shapefilename,*expfilename):
+	'''
+	Convert a shapefile to an .exp file.  Optionally, expfilename can be
+	specified to give a name for the .exp file to be created, otherwise the
+	.exp file will have the same prefix as the .shp file.
+
+	Usage:
+		shp2exp(shapefilename)
+		shp2exp(shapefilename,expfilename)
+
+	Examples:
+		shp2exp('Domain.shp') % creates Domain.exp
+		shp2exp('Domain.shp','DomainForISSM.exp')
+	'''
+	
+	if not os.path.exists(shapefilename):
+		raise IOError("shp2exp error message: file '%s' not found!" % parametername)
+	if not len(expfilename):
+		expfile=os.path.splitext(shapefilename)[0]+'.exp'
+	else:
+		expfile=expfilename[0]
+
+	shp=shapefile.Reader(shapefilename)
+	expdict=dict(closed=1,density=1)
+
+	x=[]
+	y=[]
+	for i in range(len(shp.shapes())):
+		geom=shp.shapes()[i].shapeType
+		if geom==5: # polygon
+			tmpx=[p[0] for p in shp.shapes()[i].points]
+			tmpy=[q[1] for q in shp.shapes()[i].points]
+			x.append(tmpx)
+			y.append(tmpy)
+		elif geom==3: # line
+			tmpx=[p[0] for p in shp.shapes()[i].points]
+			tmpy=[q[1] for q in shp.shapes()[i].points]
+			x.append(tmpx)
+			y.append(tmpy)
+		elif geom==1: # point
+			x.append(shp.shapes()[i].points[0][0])
+			y.append(shp.shapes()[i].points[0][1])
+
+	expdict['x']=x
+	expdict['y']=y
+	expwrite(expdict,expfile)
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/shp/shp2js.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/shp/shp2js.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/shp/shp2js.m	(revision 21239)
@@ -0,0 +1,31 @@
+function shp2js(jsname,shpname,domainname)
+
+	shp=shpread(shpname);
+	
+	fid=fopen(jsname,'w');
+	fprintf(fid,'var %s={}\n',domainname);
+
+	for i=1:length(shp),
+	
+		fprintf(fid,'%s[%i]={}\n',domainname,i-1);
+
+		x=shp(i).x;
+		y=shp(i).y;
+		nods=shp(i).nods;
+
+		fprintf(fid,'<!-- %s[%i]{{{-->\n',domainname,i-1);
+		
+		fprintf(fid,'%s[%i][''x'']=[',domainname,i-1);
+		for j=1:nods-1,
+			fprintf(fid,'%g,',x(j));
+		end
+		fprintf(fid,'%g];\n',x(end));
+		
+		fprintf(fid,'%s[%i][''y'']=[',domainname,i-1);
+		for j=1:nods-1,
+			fprintf(fid,'%g,',y(j));
+		end
+		fprintf(fid,'%g];\n',y(end));
+		fprintf(fid,'<!--}}}-->\n');
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/shp/shpdisp.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/shp/shpdisp.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/shp/shpdisp.m	(revision 21239)
@@ -0,0 +1,57 @@
+function shpdisp(domainoutline,varargin)
+%SHPDISP - plot the contours of a domain outline file
+%
+%   This routine reads in a domain outline file (Shape format) and plots all the contours 
+%
+%   Usage:
+%      shpdisp(domainoutline,varargin)
+%      shpdisp(domainoutline,figurenumber,linestyle,linewidth,unitmultiplier)
+%
+%   Example:
+%      shpdisp('Domain.shp',1,'--r',2,10^3);
+%
+%   See also SHPREAD, SHPDOC
+
+%check nargin
+if ~nargin | nargin>5
+	help shpdisp
+	error('shpdisp error message: bad usage');
+end
+
+%parse input
+if nargin<=1,
+	figurenumber=1;
+else
+	figurenumber=varargin{1};
+end
+if nargin<=2
+	linestyle='r-';
+else
+	linestyle=varargin{2};
+end
+if nargin<=3
+	linewidth=1;
+else
+	linewidth=varargin{3};
+end
+if nargin<=4
+	unitmultiplier=1;
+else
+	unitmultiplier=varargin{4}; if isnan(unitmultiplier), unitmultiplier=1; end
+end
+
+domain=shpread(domainoutline);
+
+figure(figurenumber),hold on
+for i=1:length(domain),
+	if(isfield(domain,'nods'))
+		if (isnumeric(linestyle))
+			plot(domain(i).x*unitmultiplier,domain(i).y*unitmultiplier,'Color',linestyle,'linewidth',linewidth);
+		else
+			plot(domain(i).x*unitmultiplier,domain(i).y*unitmultiplier,linestyle,'linewidth',linewidth);
+	  end
+	else
+		plot(domain(i).x*unitmultiplier,domain(i).y*unitmultiplier,'ro','MarkerSize',5);
+	end
+	
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/shp/shpread.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/shp/shpread.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/shp/shpread.m	(revision 21239)
@@ -0,0 +1,104 @@
+function Struct=shpread(filename)
+%SHPREAD - read a shape file and build a Structure
+%
+%   This routine reads a shape file .shp and builds a Structure containing the 
+%   fields x and y corresponding to the coordinates, one for the filename of
+%   the shp file, for the density, for the nodes, and a field closed to 
+%   indicate if the domain is closed. 
+%   If this initial shapefile is point only, the fields closed and
+%   points are ommited
+%   The first argument is the .shp file to be read and the second one (optional) 
+%   indicates if the last point shall be read (1 to read it, 0 not to).
+%
+%   Usage:
+%      Struct=shpread(filename)
+%
+%   Example:
+%      Struct=shpread('domainoutline.shp')
+%
+%   See also EXPDOC, EXPWRITEASVERTICES
+
+%some checks
+if ~exist(filename),
+	error(['shpread error message: file ' filename ' not found!']);
+end
+
+%initialize number of profile
+count=0;
+
+%read shapefile
+shp=shaperead(filename);
+
+Struct=struct([]);
+fields=fieldnames(shp);
+for i=1:length(shp),
+	if strcmpi(shp(i).Geometry,'Polygon'),
+		x=shp(i).X'; y=shp(i).Y';
+		ids=find(isnan(x));
+		x(ids)=[]; y(ids)=[];
+
+		Struct(end+1).x=x;
+		Struct(end).y=y;
+		Struct(end).nods=length(x);
+		Struct(end).density=1;
+		Struct(end).closed=1;
+		if isfield(shp,'id'),
+			Struct(end).name=num2str(shp(i).id);
+		else
+			Struct(end).name='';
+		end
+		for j=1:length(fields),
+			field=fields{j};
+			if ~(strcmpi(field,'X') | strcmpi(field,'Y') | strcmpi(field,'id')),
+				Struct(end).(field)=shp(i).(field);
+			end
+		end
+	end
+	
+	if strcmpi(shp(i).Geometry,'Line'),
+		x=shp(i).X'; y=shp(i).Y';
+		ids=find(isnan(x));
+		x(ids)=[]; y(ids)=[];
+
+		Struct(end+1).x=x;
+		Struct(end).y=y;
+		Struct(end).nods=length(x);
+		Struct(end).density=1;
+		Struct(end).closed=1;
+		if isfield(shp,'id'),
+			Struct(end).name=num2str(shp(i).id);
+		else
+			Struct(end).name='';
+		end
+		for j=1:length(fields),
+			field=fields{j};
+			if ~(strcmpi(field,'X') | strcmpi(field,'Y') | strcmpi(field,'id')),
+				Struct(end).(field)=shp(i).(field);
+			end
+		end
+	end
+
+
+	if strcmpi(shp(i).Geometry,'Point'),
+		x=shp(i).X'; y=shp(i).Y';
+		ids=find(isnan(x));
+		x(ids)=[]; y(ids)=[];
+
+		Struct(end+1).x=x;
+		Struct(end).y=y;
+		Struct(end).density=1;
+		if isfield(shp,'id'),
+			Struct(end).name=num2str(shp(i).id);
+		else
+			Struct(end).name='';
+		end
+		for j=1:length(fields),
+			field=fields{j};
+			if ~(strcmpi(field,'X') | strcmpi(field,'Y') | strcmpi(field,'id')),
+				Struct(end).(field)=shp(i).(field);
+			end
+		end
+	end
+end
+
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/shp/shpwrite.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/shp/shpwrite.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/shp/shpwrite.m	(revision 21239)
@@ -0,0 +1,29 @@
+function shpwrite(shp,filename)
+%SHPWRITE - write a shape file from a contour structure
+%
+%   Usage:
+%      shpwrite(shp,filename)
+%
+%   Example:
+%      shpwrite(shp,'domainoutline.shp')
+%
+%   See also SHPREAD
+
+
+%initialize number of profile
+count=0;
+
+contours=struct([]);
+for i=1:length(shp),
+	if strcmpi(shp(i).Geometry,'Point'),
+		contours(i).Geometry='Point';
+	else strcmpi(shp(i).Geometry,'Polygon'),
+		contours(i).Geometry='Polygon';
+	end
+	contours(i).id=i;
+	contours(i).X=shp(i).x;
+	contours(i).Y=shp(i).y;
+end
+	
+shapewrite(contours,filename);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/WriteData.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/WriteData.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/WriteData.js	(revision 21239)
@@ -0,0 +1,297 @@
+function WriteData(fid,prefix){
+//WRITEDATA - write model field into binary buffer 
+//
+//   Usage:
+//      WriteData(fid,varargin);
+
+	//process options
+	var args = Array.prototype.slice.call(arguments);
+	var options = new pairoptions(args.slice(2,args.length));
+	var name;
+	var dataini;
+	var data;
+
+	//Get data properties
+	if (options.exist('object')){
+		//This is a object field, construct string name and data
+		obj       = options.getfieldvalue('object');
+		fieldname = options.getfieldvalue('fieldname');
+		name      = options.getfieldvalue('name',prefix+'.'+fieldname);
+		if (options.exist('data')){
+			dataini = options.getfieldvalue('data');
+		}
+		else{
+			dataini  = obj[fieldname];
+		}
+	}
+	else{
+		//No processing required
+		dataini = options.getfieldvalue('data');
+		name = options.getfieldvalue('name');
+	}
+	if (IsArray(dataini)){
+	   data=dataini.slice(0);
+	}
+	else{
+		data=dataini;
+	}
+
+	format  = options.getfieldvalue('format');
+	mattype = options.getfieldvalue('mattype',0);    //only required for matrices
+	timeserieslength = options.getfieldvalue('timeserieslength',-1);
+
+	//Scale data if necesarry
+	if (options.exist('scale')){
+		scale = options.getfieldvalue('scale');
+		if (data.length==timeserieslength){
+			if (IsArray(data[0])){
+				for(var i=0;i<data.length-1;i++){
+					for(var j=0;j<data[0].length;j++){
+						data[i][j]=scale*data[i][j];
+					}
+				}
+			}
+			else{
+				for(var i=0;i<data.length-1;i++){
+					data[i]=scale*data[i];
+				}
+			}
+		}
+		else{
+			if (!IsArray(data)) data=data*scale;
+			else ArrayScale(data,scale);
+		}
+	}
+
+	if(IsArray(data)){
+		if(data.length == timeserieslength){
+			var yts = options.getfieldvalue('yts');
+			if (IsArray(data[0])){
+				for(var j=0;j<data[0].length;j++)data[timeserieslength-1][j]=data[timeserieslength-1][j]*yts;
+			}
+			else data[timeserieslength-1]=data[timeserieslength-1]*yts;
+		}
+	}
+
+	//Step 1: write the name to identify this record uniquely
+	fid.fwrite(name.length,'int'); 
+	fid.fwrite(name,'char'); 
+
+	//Step 2: write the data itself.
+	if (format == 'Boolean'){// {{{
+		if(IsArray(data)) throw  Error(sprintf("field '%s' cannot be marshalled as it has more than one element!",name));
+
+		//first write length of record
+		fid.fwrite(4+4,'int');  //1 bool (disguised as an int)+code
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write integer
+		fid.fwrite(data,'int');  //send an int, not easy to send a bool
+	} // }}}
+	else if (format == 'Integer'){ // {{{
+		if(IsArray(data)) throw  Error(sprintf("field '%s' cannot be marshalled as it has more than one element!",name));
+
+		//first write length of record
+		fid.fwrite(4+4,'int');  //1 integer + code
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write integer
+		fid.fwrite(data,'int'); 
+	} // }}}
+	else if (format == 'Double'){ // {{{
+		if(IsArray(data)) throw  Error(sprintf("field '%s' cannot be marshalled as it has more than one element!",name));
+
+		//first write length of record
+		fid.fwrite(8+4,'int');  //1 double+code
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write double
+		fid.fwrite(data,'double'); 
+	} // }}}
+	else if (format == 'String'){ // {{{
+		//first write length of record
+		fid.fwrite(data.length+4+4,'int');  //string + string size + code
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write string
+		fid.fwrite(data.length,'int'); 
+		fid.fwrite(data,'char'); 
+	} // }}}
+	else if (format == 'BooleanMat'){ // {{{
+
+		//Get size
+		var s=[data.length,1];
+		if(IsArray(data[0]))s[1]=data[0].length;
+
+		//if matrix = NaN, then do not write anything
+		if (s[0]==1 & s[1]==1 & isNaN(data)){
+			s[0]=0; s[1]=0;
+		}
+		if (s[0]==1 & s[1]==1 & isNaN(data[0])){
+			s[0]=0; s[1]=0;
+		}
+
+		//first write length of record
+		fid.fwrite(4+4+8*s[0]*s[1]+4+4,'int');  //2 integers (32 bits) + the double matrix + code + matrix type
+
+		//write data code and matrix type: 
+		fid.fwrite(FormatToCode(format),'int'); 
+		fid.fwrite(mattype,'int');
+
+		//now write matrix
+		fid.fwrite(s[0],'int'); 
+		fid.fwrite(s[1],'int'); 
+		if (s[0]*s[1]) fid.fwrite(MatrixToList(data),'double'); //get to the "c" convention, hence the transpose
+	} // }}}
+	else if (format == 'IntMat'){ // {{{
+
+		//Get size
+		var s=[data.length,1];
+		if(IsArray(data[0]))s[1]=data[0].length;
+
+		//if matrix = NaN, then do not write anything
+		if (s[0]==1 & s[1]==1 & isNaN(data)){
+			s[0]=0; s[1]=0;
+		}
+		if (s[0]==1 & s[1]==1 & isNaN(data[0])){
+			s[0]=0; s[1]=0;
+		}
+
+		//first write length of record
+		fid.fwrite(4+4+8*s[0]*s[1]+4+4,'int');  //2 integers (32 bits) + the double matrix + code + matrix type
+
+		//write data code and matrix type: 
+		fid.fwrite(FormatToCode(format),'int'); 
+		fid.fwrite(mattype,'int');
+
+		//now write matrix
+		fid.fwrite(s[0],'int'); 
+		fid.fwrite(s[1],'int'); 
+		if (s[0]*s[1]) fid.fwrite(MatrixToList(data),'double'); //get to the "c" convention, hence the transpose
+
+	} // }}}
+	else if (format == 'DoubleMat'){ // {{{
+
+		//Get size
+		var s=[data.length,1];
+		if(IsArray(data[0]))s[1]=data[0].length;
+		if(typeof data == 'number'){s[0]=1; s[1]=1}
+
+		//if matrix = NaN, then do not write anything
+		if (s[0]==1 & s[1]==1 & isNaN(data)){
+			s[0]=0; s[1]=0;
+		}
+		if (s[0]==1 & s[1]==1 & isNaN(data[0])){
+			s[0]=0; s[1]=0;
+		}
+
+		//first write length of record
+		var recordlength=4+4+8*s[0]*s[1]+4+4; //2 integers (32 bits) + the double matrix + code + matrix type
+		if (recordlength>Math.pow(2,31)) throw Error(sprintf("field '%s' cannot be marshalled because it is larger than 2^31 bytes!",name));
+		fid.fwrite(recordlength,'int');
+
+		//write data code and matrix type: 
+		fid.fwrite(FormatToCode(format),'int'); 
+		fid.fwrite(mattype,'int');
+
+		//now write matrix
+		fid.fwrite(s[0],'int'); 
+		fid.fwrite(s[1],'int'); 
+		if (s[0]*s[1]) fid.fwrite(MatrixToList(data),'double'); //get to the "c" convention, hence the transpose
+	} // }}}
+	else if (format == 'MatArray'){ // {{{
+
+		numrecords=data.length;
+
+		//first get length of record
+		recordlength=4+4; //number of records + code
+		for (var i=0;i<numrecords;i++){
+			matrix=data[i];
+			var s=[matrix.length,1];
+			if(IsArray(matrix[0]))s[1]=matrix[0].length;
+
+			recordlength=recordlength+4*2+ //row and col of matrix
+				s[0]*s[1]*8; //matrix of doubles
+		}
+
+		//write length of record
+		fid.fwrite(recordlength,'int'); 
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//write data, first number of records
+		fid.fwrite(numrecords,'int'); 
+
+		//write each matrix: 
+		for (var i=0;i<numrecords;i++){
+			matrix=data[i];
+			var s=[matrix.length,1];
+			if(IsArray(matrix[0]))s[1]=matrix[0].length;
+
+			fid.fwrite(s[0],'int'); 
+			fid.fwrite(s[1],'int'); 
+			fid.fwrite(MatrixToList(matrix),'double');
+		}
+	} // }}}
+	else if (format == 'StringArray'){ // {{{
+
+		//first get length of string array: 
+		num=data.length;
+		if ((typeof data[0] == 'numeric') & num==1 & isNaN(data[0])){
+			num = 0;
+		}
+
+		//now get length of record: 
+		recordlength=4+4; //for length of array + code
+		for (var i=0;i<num;i++){
+			string=data[i];
+			recordlength=recordlength+4+string.length; //for each string
+		}
+
+		//write length of record
+		fid.fwrite(recordlength,'int'); 
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write length of string array
+		fid.fwrite(num,'int'); 
+
+		//now write the strings
+		for (var i=0;i<num;i++){
+			string=data[i];
+			fid.fwrite(string.length,'int'); 
+			fid.fwrite(string,'char'); 
+		}
+	} // }}}
+	else { 
+		throw Error(sprintf("WriteData error message: data type: %s not supported yet! ('%s')",
+					format.toString(),name));
+	}
+}
+
+function FormatToCode(format){ // {{{
+	//This routine takes the format string, and hardcodes it into an integer, which 
+	//is passed along the record, in order to identify the nature of the dataset being 
+	//sent.
+	if  (format == 'Boolean') code=1;
+	else if (format == 'Integer') code=2;
+	else if (format == 'Double') code=3;
+	else if (format == 'String') code=4;
+	else if (format == 'BooleanMat') code=5;
+	else if (format == 'IntMat') code=6;
+	else if (format == 'DoubleMat') code=7;
+	else if (format == 'MatArray') code=8;
+	else if (format == 'StringArray') code=9;
+	else throw Error('FormatToCode error message: data type not supported yet!');
+	return code;
+}// }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/WriteData.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/WriteData.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/WriteData.m	(revision 21239)
@@ -0,0 +1,263 @@
+function WriteData(fid,prefix,varargin)
+%WRITEDATA - write model field in binary file
+%
+%   Usage:
+%      WriteData(fid,varargin);
+
+%process options
+options=pairoptions(varargin{:});
+
+%Get data properties
+if exist(options,'object');
+	obj       = getfieldvalue(options,'object');
+	fieldname = getfieldvalue(options,'fieldname');
+	classname = getfieldvalue(options,'class',class(obj));
+	name      = getfieldvalue(options,'name',[prefix '.' fieldname ]);
+	if exist(options,'data'),
+		data = getfieldvalue(options,'data');
+	else
+		data = obj.(fieldname);
+	end
+else
+	data = getfieldvalue(options,'data');
+	name = getfieldvalue(options,'name');
+end
+format  = getfieldvalue(options,'format');
+mattype = getfieldvalue(options,'mattype',0);    %only required for matrices
+timeserieslength = getfieldvalue(options,'timeserieslength',-1);
+
+%Process sparse matrices
+if issparse(data),
+	data=full(data);
+end
+
+%Scale data if necesarry
+if exist(options,'scale'),
+	scale = getfieldvalue(options,'scale');
+	if size(data,1)==timeserieslength,
+		data(1:end-1,:) = scale.*data(1:end-1,:);
+	else
+		data  = scale.*data;
+	end
+end
+if(size(data,1)==timeserieslength),
+	yts = getfieldvalue(options,'yts');
+	data(end,:) = data(end,:)*yts;
+end
+
+%Step 1: write the name to identify this record uniquely
+fwrite(fid,numel(name),'int'); 
+fwrite(fid,name,'char'); 
+
+%Step 2: write the data itself.
+if     strcmpi(format,'Boolean'),% {{{
+	if(numel(data)~=1), error(['field ' name ' cannot be marshalled as it has more than one element!']); end
+
+	%first write length of record
+	fwrite(fid,4+4,'int');  %1 bool (disguised as an int)+code
+
+	%write data code: 
+	fwrite(fid,FormatToCode(format),'int'); 
+
+	%now write integer
+	fwrite(fid,data,'int');  %send an int, not easy to send a bool
+	% }}}
+elseif strcmpi(format,'Integer'), % {{{
+	if(numel(data)~=1), error(['field ' name ' cannot be marshalled as it has more than one element!']); end
+
+	%first write length of record
+	fwrite(fid,4+4,'int');  %1 integer + code
+
+	%write data code: 
+	fwrite(fid,FormatToCode(format),'int'); 
+
+	%now write integer
+	fwrite(fid,data,'int'); 
+	% }}}
+elseif strcmpi(format,'Double'), % {{{
+	if(numel(data)~=1), error(['field ' name ' cannot be marshalled as it has more than one element!']); end
+
+	%first write length of record
+	fwrite(fid,8+4,'int');  %1 double+code
+
+	%write data code: 
+	fwrite(fid,FormatToCode(format),'int'); 
+
+	%now write double
+	fwrite(fid,data,'double'); 
+	% }}}
+elseif strcmpi(format,'String'), % {{{
+	%first write length of record
+	fwrite(fid,length(data)+4+4,'int');  %string + string size + code
+
+	%write data code: 
+	fwrite(fid,FormatToCode(format),'int'); 
+
+	%now write string
+	fwrite(fid,length(data),'int'); 
+	fwrite(fid,data,'char'); 
+	% }}}
+elseif strcmpi(format,'BooleanMat'), % {{{
+
+	%Get size
+	s=size(data);
+	%if matrix = NaN, then do not write anything
+	if (s(1)==1 & s(2)==1 & isnan(data)),
+		s(1)=0; s(2)=0;
+	end
+
+	%first write length of record
+	fwrite(fid,4+4+8*s(1)*s(2)+4+4,'int');  %2 integers (32 bits) + the double matrix + code + matrix type
+
+	%write data code and matrix type: 
+	fwrite(fid,FormatToCode(format),'int'); 
+	fwrite(fid,mattype,'int');
+
+	%now write matrix
+	fwrite(fid,s(1),'int'); 
+	fwrite(fid,s(2),'int'); 
+	if s(1)*s(2),
+		fwrite(fid,data','double'); %get to the "c" convention, hence the transpose
+	end
+	% }}}
+elseif strcmpi(format,'IntMat'), % {{{
+
+	%Get size
+	s=size(data);
+	%if matrix = NaN, then do not write anything
+	if (s(1)==1 & s(2)==1 & isnan(data)),
+		s(1)=0; s(2)=0;
+	end
+
+	%first write length of record
+	fwrite(fid,4+4+8*s(1)*s(2)+4+4,'int');  %2 integers (32 bits) + the double matrix + code + matrix type
+
+	%write data code and matrix type: 
+	fwrite(fid,FormatToCode(format),'int'); 
+	fwrite(fid,mattype,'int');
+
+	%now write matrix
+	fwrite(fid,s(1),'int'); 
+	fwrite(fid,s(2),'int'); 
+	if s(1)*s(2),
+		fwrite(fid,data','double'); %get to the "c" convention, hence the transpose
+	end
+	% }}}
+elseif strcmpi(format,'DoubleMat'), % {{{
+
+	%Get size
+	s=size(data);
+	%if matrix = NaN, then do not write anything
+	if (s(1)==1 & s(2)==1 & isnan(data)),
+		s(1)=0; s(2)=0;
+	end
+
+	%first write length of record
+	recordlength=4+4+8*s(1)*s(2)+4+4; %2 integers (32 bits) + the double matrix + code + matrix type
+	if recordlength>2^31; error(['field ' name ' cannot be marshalled because it is larger than 2^31 bytes!']); end
+	fwrite(fid,recordlength,'int');
+
+	%write data code and matrix type: 
+	fwrite(fid,FormatToCode(format),'int'); 
+	fwrite(fid,mattype,'int');
+
+	%now write matrix
+	fwrite(fid,s(1),'int'); 
+	fwrite(fid,s(2),'int'); 
+	if s(1)*s(2),
+		fwrite(fid,data','double'); %get to the "c" convention, hence the transpose
+	end
+	% }}}
+elseif strcmpi(format,'MatArray'), % {{{
+
+	numrecords=numel(data);
+
+	%first get length of record
+	recordlength=4+4; %number of records + code
+	for i=1:numrecords,
+		matrix=data{i};
+		s=size(matrix);
+		recordlength=recordlength+4*2+... %row and col of matrix
+			s(1)*s(2)*8; %matrix of doubles
+	end
+
+	%write length of record
+	fwrite(fid,recordlength,'int'); 
+
+	%write data code: 
+	fwrite(fid,FormatToCode(format),'int'); 
+
+	%write data, first number of records
+	fwrite(fid,numrecords,'int'); 
+
+	%write each matrix: 
+	for i=1:numrecords,
+		matrix=data{i};
+		s=size(matrix);
+		fwrite(fid,s(1),'int'); 
+		fwrite(fid,s(2),'int'); 
+		fwrite(fid,matrix','double');
+	end
+	% }}}
+elseif strcmpi(format,'StringArray'), % {{{
+
+	%first get length of string array: 
+	num=numel(data);
+	if isnumeric(data) & num==1 & isnan(data),
+		num = 0;
+	end
+
+	%now get length of record: 
+	recordlength=4+4; %for length of array + code
+	for i=1:num,
+		string=data{i};
+		recordlength=recordlength+4+length(string); %for each string
+	end
+
+	%write length of record
+	fwrite(fid,recordlength,'int'); 
+
+	%write data code: 
+	fwrite(fid,FormatToCode(format),'int'); 
+
+	%now write length of string array
+	fwrite(fid,num,'int'); 
+
+	%now write the strings
+	for i=1:num,
+		string=data{i};
+		fwrite(fid,length(string),'int'); 
+		fwrite(fid,string,'char'); 
+	end
+	% }}}
+else  % {{{
+	error(['WriteData error message: data type: ' num2str(format) ' not supported yet! (' name ')']);
+end % }}}
+end
+
+function code=FormatToCode(format) % {{{
+%This routine takes the format string, and hardcodes it into an integer, which 
+%is passed along the record, in order to identify the nature of the dataset being 
+%sent.
+	if     strcmpi(format,'Boolean'),
+		code=1;
+	elseif strcmpi(format,'Integer'), 
+		code=2;
+	elseif strcmpi(format,'Double'), 
+		code=3;
+	elseif strcmpi(format,'String'), 
+		code=4;
+	elseif strcmpi(format,'BooleanMat'),
+		code=5;
+	elseif strcmpi(format,'IntMat'),
+		code=6;
+	elseif strcmpi(format,'DoubleMat'),
+		code=7;
+	elseif strcmpi(format,'MatArray'), 
+		code=8;
+	elseif strcmpi(format,'StringArray'),
+		code=9;
+	else 
+		error('FormatToCode error message: data type not supported yet!');
+	end
+end% }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/WriteData.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/WriteData.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/WriteData.py	(revision 21239)
@@ -0,0 +1,320 @@
+import numpy
+import math
+import struct
+import pairoptions
+import MatlabFuncs as m
+
+def WriteData(fid,prefix,*args):
+	"""
+	WRITEDATA - write model field in binary file
+ 
+	   Usage:
+	      WriteData(fid,varargin)
+	"""
+
+	#process options
+	options=pairoptions.pairoptions(*args)
+
+	#Get data properties
+	if options.exist('object'):
+		#This is an object field, construct enum and data
+		obj       = options.getfieldvalue('object')
+		fieldname = options.getfieldvalue('fieldname')
+		classname = options.getfieldvalue('class',str(type(obj)).rsplit('.')[-1].split("'")[0])
+		name      = options.getfieldvalue('name',prefix+'.'+fieldname);
+		if options.exist('data'):
+			data = options.getfieldvalue('data')
+		else:
+			data      = getattr(obj,fieldname)
+	else:
+		#No processing required
+		data = options.getfieldvalue('data')
+		name = options.getfieldvalue('name')
+
+	format  = options.getfieldvalue('format')
+	mattype = options.getfieldvalue('mattype',0)    #only required for matrices
+	timeserieslength = options.getfieldvalue('timeserieslength',-1)
+
+	#Process sparse matrices
+#	if issparse(data),
+#		data=full(data);
+#	end
+
+	#Scale data if necesarry
+	if options.exist('scale'):
+		scale = options.getfieldvalue('scale')
+		if numpy.size(data) > 1 :
+			if numpy.size(data,0)==timeserieslength:
+				data=numpy.array(data)
+				data[0:-1,:] = scale*data[0:-1,:]
+			else:
+				data  = scale*data
+		else:
+			data  = scale*data
+	if numpy.size(data) > 1 :
+		if numpy.size(data,0)==timeserieslength:
+			yts = options.getfieldvalue('yts')
+			data[-1,:] = yts*data[-1,:]
+
+	#Step 1: write the enum to identify this record uniquely
+	fid.write(struct.pack('i',len(name)))
+	fid.write(struct.pack('%ds' % len(name),name)) 
+
+	#Step 2: write the data itself.
+	if   m.strcmpi(format,'Boolean'):    # {{{
+#		if len(data) !=1:
+#			raise ValueError('field %s cannot be marshalled as it has more than one element!' % name[0])
+
+		#first write length of record
+		fid.write(struct.pack('i',4+4))  #1 bool (disguised as an int)+code
+
+		#write data code: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+
+		#now write integer
+		fid.write(struct.pack('i',int(data)))  #send an int, not easy to send a bool
+		# }}}
+
+	elif m.strcmpi(format,'Integer'):    # {{{
+#		if len(data) !=1:
+#			raise ValueError('field %s cannot be marshalled as it has more than one element!' % name[0])
+
+		#first write length of record
+		fid.write(struct.pack('i',4+4))  #1 integer + code
+
+		#write data code: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+
+		#now write integer
+		fid.write(struct.pack('i',data)) 
+		# }}}
+
+	elif m.strcmpi(format,'Double'):    # {{{
+#		if len(data) !=1:
+#			raise ValueError('field %s cannot be marshalled as it has more than one element!' % name[0])
+
+		#first write length of record
+		fid.write(struct.pack('i',8+4))  #1 double+code
+
+		#write data code: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+
+		#now write double
+		fid.write(struct.pack('d',data)) 
+		# }}}
+
+	elif m.strcmpi(format,'String'):    # {{{
+		#first write length of record
+		fid.write(struct.pack('i',len(data)+4+4))  #string + string size + code
+
+		#write data code: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+
+		#now write string
+		fid.write(struct.pack('i',len(data))) 
+		fid.write(struct.pack('%ds' % len(data),data)) 
+		# }}}
+
+	elif m.strcmpi(format,'BooleanMat'):    # {{{
+
+		if   isinstance(data,bool):
+			data=numpy.array([data])
+		elif isinstance(data,(list,tuple)):
+			data=numpy.array(data).reshape(-1,1)
+		if numpy.ndim(data) == 1:
+			if numpy.size(data):
+				data=data.reshape(numpy.size(data),1)
+			else:
+				data=data.reshape(0,0)
+
+		#Get size
+		s=data.shape
+		#if matrix = NaN, then do not write anything
+		if s[0]==1 and s[1]==1 and math.isnan(data[0][0]):
+			s=(0,0)
+
+		#first write length of record
+		fid.write(struct.pack('i',4+4+8*s[0]*s[1]+4+4))    #2 integers (32 bits) + the double matrix + code + matrix type
+
+		#write data code and matrix type: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+		fid.write(struct.pack('i',mattype))
+
+		#now write matrix
+		fid.write(struct.pack('i',s[0])) 
+		fid.write(struct.pack('i',s[1])) 
+		for i in xrange(s[0]):
+			for j in xrange(s[1]):
+				fid.write(struct.pack('d',float(data[i][j])))    #get to the "c" convention, hence the transpose
+		# }}}
+
+	elif m.strcmpi(format,'IntMat'):    # {{{
+
+		if   isinstance(data,(int,long)):
+			data=numpy.array([data])
+		elif isinstance(data,(list,tuple)):
+			data=numpy.array(data).reshape(-1,1)
+		if numpy.ndim(data) == 1:
+			if numpy.size(data):
+				data=data.reshape(numpy.size(data),1)
+			else:
+				data=data.reshape(0,0)
+
+		#Get size
+		s=data.shape
+		#if matrix = NaN, then do not write anything
+		if s[0]==1 and s[1]==1 and math.isnan(data[0][0]):
+			s=(0,0)
+
+		#first write length of record
+		fid.write(struct.pack('i',4+4+8*s[0]*s[1]+4+4))    #2 integers (32 bits) + the double matrix + code + matrix type
+
+		#write data code and matrix type: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+		fid.write(struct.pack('i',mattype))
+
+		#now write matrix
+		fid.write(struct.pack('i',s[0])) 
+		fid.write(struct.pack('i',s[1])) 
+		for i in xrange(s[0]):
+			for j in xrange(s[1]):
+				fid.write(struct.pack('d',float(data[i][j])))    #get to the "c" convention, hence the transpose
+		# }}}
+
+	elif m.strcmpi(format,'DoubleMat'):    # {{{
+
+		if   isinstance(data,(bool,int,long,float)):
+			data=numpy.array([data])
+		elif isinstance(data,(list,tuple)):
+			data=numpy.array(data).reshape(-1,1)
+		if numpy.ndim(data) == 1:
+			if numpy.size(data):
+				data=data.reshape(numpy.size(data),1)
+			else:
+				data=data.reshape(0,0)
+
+		#Get size
+		s=data.shape
+		#if matrix = NaN, then do not write anything
+		if s[0]==1 and s[1]==1 and math.isnan(data[0][0]):
+			s=(0,0)
+
+		#first write length of record
+		recordlength=4+4+8*s[0]*s[1]+4+4; #2 integers (32 bits) + the double matrix + code + matrix type
+		if recordlength > 2**31 :
+			raise ValueError('field %s cannot be marshalled because it is larger than 4^31 bytes!' % enum)
+
+		fid.write(struct.pack('i',recordlength))  #2 integers (32 bits) + the double matrix + code + matrix type
+
+		#write data code and matrix type: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+		fid.write(struct.pack('i',mattype))
+
+		#now write matrix
+		fid.write(struct.pack('i',s[0])) 
+		fid.write(struct.pack('i',s[1])) 
+		for i in xrange(s[0]):
+			for j in xrange(s[1]):
+				fid.write(struct.pack('d',float(data[i][j])))    #get to the "c" convention, hence the transpose
+		# }}}
+
+	elif m.strcmpi(format,'MatArray'):    # {{{
+
+		#first get length of record
+		recordlength=4+4    #number of records + code
+		for matrix in data:
+			if   isinstance(matrix,(bool,int,long,float)):
+				matrix=numpy.array([matrix])
+			elif isinstance(matrix,(list,tuple)):
+				matrix=numpy.array(matrix).reshape(-1,1)
+			if numpy.ndim(matrix) == 1:
+				if numpy.size(matrix):
+					matrix=matrix.reshape(numpy.size(matrix),1)
+				else:
+					matrix=matrix.reshape(0,0)
+
+			s=matrix.shape
+			recordlength+=4*2+s[0]*s[1]*8    #row and col of matrix + matrix of doubles
+
+		#write length of record
+		fid.write(struct.pack('i',recordlength)) 
+
+		#write data code: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+
+		#write data, first number of records
+		fid.write(struct.pack('i',len(data))) 
+
+		#write each matrix: 
+		for matrix in data:
+			if   isinstance(matrix,(bool,int,long,float)):
+				matrix=numpy.array([matrix])
+			elif isinstance(matrix,(list,tuple)):
+				matrix=numpy.array(matrix).reshape(-1,1)
+			if numpy.ndim(matrix) == 1:
+				matrix=matrix.reshape(numpy.size(matrix),1)
+
+			s=matrix.shape
+			fid.write(struct.pack('i',s[0])) 
+			fid.write(struct.pack('i',s[1])) 
+			for i in xrange(s[0]):
+				for j in xrange(s[1]):
+					fid.write(struct.pack('d',float(matrix[i][j])))
+		# }}}
+
+	elif m.strcmpi(format,'StringArray'):    # {{{
+
+		#first get length of record
+		recordlength=4+4    #for length of array + code
+		for string in data:
+			recordlength+=4+len(string)    #for each string
+
+		#write length of record
+		fid.write(struct.pack('i',recordlength)) 
+
+		#write data code: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+
+		#now write length of string array
+		fid.write(struct.pack('i',len(data))) 
+
+		#now write the strings
+		for string in data:
+			fid.write(struct.pack('i',len(string))) 
+			fid.write(struct.pack('%ds' % len(string),string)) 
+		# }}}
+
+	else:    # {{{
+		raise TypeError('WriteData error message: data type: %d not supported yet! (%s)' % (format,enum))
+	# }}}
+
+def FormatToCode(format): # {{{
+	"""
+	This routine takes the format string, and hardcodes it into an integer, which 
+	is passed along the record, in order to identify the nature of the dataset being 
+	sent.
+	"""
+
+	if   m.strcmpi(format,'Boolean'):
+		code=1
+	elif m.strcmpi(format,'Integer'):
+		code=2
+	elif m.strcmpi(format,'Double'):
+		code=3
+	elif m.strcmpi(format,'String'):
+		code=4
+	elif m.strcmpi(format,'BooleanMat'):
+		code=5
+	elif m.strcmpi(format,'IntMat'):
+		code=6
+	elif m.strcmpi(format,'DoubleMat'):
+		code=7
+	elif m.strcmpi(format,'MatArray'):
+		code=8
+	elif m.strcmpi(format,'StringArray'):
+		code=9
+	else:
+		raise InputError('FormatToCode error message: data type not supported yet!')
+
+	return code
+# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/convert2str.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/convert2str.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/convert2str.m	(revision 21239)
@@ -0,0 +1,130 @@
+function str = convert2str(field)
+
+	str = parsedisplay(field);
+
+end %function
+
+function str = parsedisplay(field) % {{{
+
+	%string
+	if ischar(field),
+
+		if length(field)>30;
+			%str = displayunit('not displayed');
+            str=field;
+		else
+			str = displayunit(['''' field '''']);
+		end
+
+	%cell
+    elseif iscell(field),
+		str = cell_display(field),
+
+    %structure
+	elseif isstruct(field),
+		str = struct_display(field),
+        
+	%numeric
+	elseif isnumeric(field)
+
+		%get size
+		fieldsize=size(field);
+
+		%double
+		if max(fieldsize)==1,
+			str = displayunit(num2str(field)),
+			%matrix
+		else
+			str = displayunit(['(' num2str(fieldsize(1)) 'x' num2str(fieldsize(2)) ')']),
+        end
+        
+ 	%logical
+	elseif islogical(field)
+
+		%get size
+		fieldsize=size(field);
+
+		%single value
+		if max(fieldsize)==1,
+			if (field)
+				str = displayunit('true');
+			else
+				str = displayunit('false');
+			end
+		%matrix
+		else
+			str = displayunit(name,['(' num2str(fieldsize(1)) 'x' num2str(fieldsize(2)) ')']);
+        end    
+        
+    %misc/
+    else
+        str = displayunit(field);
+
+    end
+
+end
+
+function str = displayunit(characterization)% {{{
+
+	%take care of characterization
+	if (strcmp(characterization,['''' '''']) || strcmp(characterization,'NaN')),
+		characterization='N/A';
+	end
+	if length(characterization)>15,
+		characterization=[characterization(1:12) '...'];
+    end
+    
+    str = characterization;
+	
+end% }}}
+
+function str = cell_display(field)
+
+	%initialization
+	string='{';
+
+	%go through the cell and fill string
+	if length(field)<5;
+		for i=1:length(field),
+			if ischar(field{i}),
+				string=[string ''''  field{i} ''','];
+			elseif (isnumeric(field{i}) & length(field{i})==1)
+				string=[string num2str(field{i}) ',' ];
+			else
+				string='{';
+				break
+			end
+		end
+	end
+	if strcmp(string,'{'),
+		string=['(' num2str(size(field,1)) 'x' num2str(size(field,2)) ')'];
+	else
+		string=[string(1:end-1) '}'];
+    end
+    str = string;
+    
+    %disp(sprintf(string));
+end
+
+function str = struct_display(field) % {{{
+
+	if ~isempty(fields(field))
+		displayunit('(structure)'),
+
+		structure_fields=fields(field);
+
+		for i=1:length(structure_fields),
+
+			%get current field
+			sfield=field.(structure_fields{i});
+
+			%display value
+			%parsedisplay(sfield);
+            str = sfield;
+		end
+
+	else
+		%displayunit('N/A'),
+        str = 'N/A';
+	end
+end% }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/loadmultipleresultsfromcluster.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/loadmultipleresultsfromcluster.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/loadmultipleresultsfromcluster.m	(revision 21239)
@@ -0,0 +1,34 @@
+function md_list=loadmultipleresultsfromcluster(md_list)
+%LOADMULTIPLERESULTSFROMCLUSTER - load multiple results of solution sequences from cluster
+%
+%   Usage:
+%      md_list=loadresultsfromcluster(md_list);
+
+nummodels=length(md_list);
+
+%Get cluster settings
+cluster=md_list{1}.cluster;
+name=md_list{1}.name;
+cluster_rc_location=which('cluster.rc');
+[codepath,executionpath,login]=ClusterParameters(cluster,cluster_rc_location);
+
+%Remote tar: 
+disp('tarring results');
+issmssh(cluster,['"cd ' executionpath ' && rm -rf file_list.txt ModelResults.tar.gz && find -iname ''*_*vs*.outbin'' > file_list.txt && tar zcvf ModelResults.tar.gz --files-from file_list.txt  && rm -rf file_list.txt "']);
+
+%copy results from cluster to present directory
+scpin(cluster, executionpath, {'ModelResults.tar.gz'});
+
+%untar:
+!tar -zxvf ModelResults.tar.gz
+
+%ok, go through list and load results from disk: 
+for i=1:nummodels,
+	%load  results for this model
+	md_list{i}=loadresultsfromdisk(md_list{i},[md_list{i}.name '.outbin']);
+
+	delete([name '.outbin']);
+end
+
+%erase files 
+delete('ModelResults.tar.gz');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/loadresultsfrombuffer.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/loadresultsfrombuffer.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/loadresultsfrombuffer.js	(revision 21239)
@@ -0,0 +1,26 @@
+function loadresultsfrombuffer(md,buffer,buffersize){
+//LOADRESULTSFROMBUFFER - load results of solution sequence from memory buffer 
+//
+//   Usage:
+//      loadresultsfrombuffer(md,buffer,buffersize);
+
+	//check number of inputs/outputs
+	if (arguments.length!=3) throw Error('loadresultsfrombuffer error message: wrong usage!');
+
+	if (!md.qmu.isdakota){
+
+		//initialize md.results if not a structure yet
+		if (MapIsEmpty(md.results)) md.results={};
+
+		//load results: 
+		structure=parseresultsfrombuffer(md,buffer,buffersize);
+
+		//load structure onto results: 
+		solutiontype=structure[0].SolutionType;
+		md.results[solutiontype]=structure;
+
+		return md;
+
+	}
+	else throw Error('loadresultsfrombuffer error message: qmu results not supported yet!');
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/loadresultsfromcluster.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/loadresultsfromcluster.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/loadresultsfromcluster.m	(revision 21239)
@@ -0,0 +1,60 @@
+function md=loadresultsfromcluster(md,runtimename)
+%LOADRESULTSFROMCLUSTER - load results of solution sequence from cluster
+%
+%   Usage:
+%      md=loadresultsfromcluster(md,runtimename);
+
+%retrieve cluster, to be able to call its methods
+cluster=md.cluster;
+
+if nargin==2,
+	md.private.runtimename=runtimename;
+end
+
+%Download outputs from the cluster
+filelist={[md.miscellaneous.name '.outlog'],[md.miscellaneous.name '.errlog']};
+if md.qmu.isdakota,
+	filelist{end+1}=[md.miscellaneous.name '.qmu.err'];
+	filelist{end+1}=[md.miscellaneous.name '.qmu.out'];
+	if isfield(md.qmu.params,'tabular_graphics_data'),
+		if md.qmu.params.tabular_graphics_data==true,
+			filelist{end+1}='dakota_tabular.dat';
+		end
+	end
+else
+	filelist{end+1}=[md.miscellaneous.name '.outbin'];
+end
+Download(cluster,md.private.runtimename,filelist);
+
+%If we are here, no errors in the solution sequence, call loadresultsfromdisk.
+md=loadresultsfromdisk(md,[md.miscellaneous.name '.outbin']);
+
+%erase the log and output files
+if md.qmu.isdakota,
+	delete([['qmu' num2str(feature('GetPid')) '/'] md.miscellaneous.name '.outlog']);
+	delete([['qmu' num2str(feature('GetPid')) '/']  md.miscellaneous.name '.errlog']);
+else
+	delete([md.miscellaneous.name '.outlog']);
+	delete([md.miscellaneous.name '.errlog']);
+	delete([md.miscellaneous.name '.outbin']);
+	if exist([md.private.runtimename '.tar.gz']) & ~ispc(),
+		delete([md.private.runtimename '.tar.gz']);
+	end
+end
+
+%erase input file if run was carried out on same platform.
+hostname=oshostname();
+if strcmpi(hostname,cluster.name),
+	if md.qmu.isdakota,
+		delete([['qmu' num2str(feature('GetPid')) '/'] md.miscellaneous.name '.bin']);
+		delete([['qmu' num2str(feature('GetPid')) '/'] md.miscellaneous.name '.queue']);
+	else
+		delete([md.miscellaneous.name '.bin']);
+		delete([md.miscellaneous.name '.toolkits']);
+		if ~ispc(),
+			delete([md.miscellaneous.name '.queue']);
+		else
+			delete([md.miscellaneous.name '.bat']);
+		end
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/loadresultsfromcluster.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/loadresultsfromcluster.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/loadresultsfromcluster.py	(revision 21239)
@@ -0,0 +1,72 @@
+import os
+import socket
+import platform
+from loadresultsfromdisk import loadresultsfromdisk
+
+def loadresultsfromcluster(md,runtimename=False):
+	"""
+	LOADRESULTSFROMCLUSTER - load results of solution sequence from cluster
+ 
+	   Usage:
+	      md=loadresultsfromcluster(md,runtimename);
+	"""
+
+	#retrieve cluster, to be able to call its methods
+	cluster=md.cluster
+
+	if runtimename:
+		md.private.runtimename=runtimename
+
+	#Download outputs from the cluster
+	filelist=[md.miscellaneous.name+'.outlog',md.miscellaneous.name+'.errlog']
+	if md.qmu.isdakota:
+		filelist.append(md.miscellaneous.name+'.qmu.err')
+		filelist.append(md.miscellaneous.name+'.qmu.out')
+		if 'tabular_graphics_data' in md.qmu.params:
+			if md.qmu.params['tabular_graphics_data']:
+				filelist.append('dakota_tabular.dat')
+	else:
+		filelist.append(md.miscellaneous.name+'.outbin')
+	cluster.Download(md.private.runtimename,filelist)
+
+	#If we are here, no errors in the solution sequence, call loadresultsfromdisk.
+	if os.path.getsize(md.miscellaneous.name+'.outbin')>0:
+		md=loadresultsfromdisk(md,md.miscellaneous.name+'.outbin')
+	else:
+		print 'WARNING, outbin file is empty for run '+md.miscellaneous.name
+		
+	#erase the log and output files
+	if md.qmu.isdakota:
+		filename=os.path.join('qmu'+str(os.getpid()),md.miscellaneous.name)
+	else:
+		filename=md.miscellaneous.name
+		TryRem('.outbin',filename)
+		if not platform.system()=='Windows':
+			TryRem('.tar.gz',md.private.runtimename)
+
+	TryRem('.errlog',filename)
+	TryRem('.outlog',filename)
+	
+	#erase input file if run was carried out on same platform.
+	hostname=socket.gethostname()
+	if hostname==cluster.name:
+		if md.qmu.isdakota:
+			filename=os.path.join('qmu'+str(os.getpid()),md.miscellaneous.name)
+			TryRem('.queue',filename)
+		else:
+			filename=md.miscellaneous.name
+			TryRem('.toolkits',filename)
+			if not platform.system()=='Windows':
+				TryRem('.queue',filename)
+			else:
+				TryRem('.bat',filename)
+
+		TryRem('.bin',filename)
+
+	return md
+
+def TryRem(extension,filename):
+	try:	
+		os.remove(filename+extension)
+	except OSError:
+		print 'WARNING, no '+extension+'  is present for run '+filename
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/loadresultsfromdisk.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/loadresultsfromdisk.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/loadresultsfromdisk.m	(revision 21239)
@@ -0,0 +1,63 @@
+function md=loadresultsfromdisk(md,filename)
+%LOADRESULTSFROMDISK - load results of solution sequence from disk file "filename"            
+%
+%   Usage:
+%      md=loadresultsfromdisk(md,filename);
+
+%check number of inputs/outputs
+if ((nargin~=2) | (nargout~=1)),
+	help loadresultsfromdisk;
+	error('loadresultsfromdisk: error message.');
+end
+
+if ~md.qmu.isdakota,
+
+	%Check that file exists
+	if ~exist(filename,'file'),
+		error(sprintf(['\n'...
+			'============================================================\n'...
+			'   Binary file ' filename ' not found                       \n'... 
+			'                                                            \n'...
+			'   This typically happens when the run crashed.             \n'...
+			'   Please check for error messages above or in the outlog   \n'...
+			'============================================================\n'...
+			]));
+	end
+
+	%initialize md.results if not a structure yet
+	if ~isstruct(md.results),
+		md.results=struct();
+	end
+
+	%load results onto model
+	structure=parseresultsfromdisk(md,filename,~md.settings.io_gather);
+	if isempty(fieldnames(structure)),
+		error(['No result found in binary file ' filename '. Check for solution crash.']);
+	end
+	md.results.(structure(1).SolutionType)=structure;
+
+	%recover solution_type from results
+	md.private.solution=structure(1).SolutionType;
+
+	%read log files onto  fields
+	if exist([md.miscellaneous.name '.errlog'],'file'),
+		md.results.(structure(1).SolutionType)(1).errlog=char(textread([md.miscellaneous.name '.errlog'],'%s','delimiter','\n'));
+	else
+		md.results.(structure(1).SolutionType)(1).errlog='';
+	end
+
+	if exist([md.miscellaneous.name '.outlog'],'file'),
+		md.results.(structure(1).SolutionType)(1).outlog=char(textread([md.miscellaneous.name '.outlog'],'%s','delimiter','\n'));
+	else
+		md.results.(structure(1).SolutionType)(1).outlog='';
+	end
+
+	if ~isempty(md.results.(structure(1).SolutionType)(1).errlog),
+		disp(['loadresultsfromcluster info message: error during solution. Check your errlog and outlog model fields']);
+	end
+
+%post processes qmu results if necessary
+else
+	md=postqmu(md);
+	cd ..
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/loadresultsfromdisk.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/loadresultsfromdisk.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/loadresultsfromdisk.py	(revision 21239)
@@ -0,0 +1,62 @@
+import os
+from results import results
+from parseresultsfromdisk import parseresultsfromdisk
+import MatlabFuncs as m
+
+def loadresultsfromdisk(md,filename):
+	"""
+	LOADRESULTSFROMDISK - load results of solution sequence from disk file "filename"            
+ 
+	   Usage:
+	      md=loadresultsfromdisk(md=False,filename=False);
+	"""
+
+	#check number of inputs/outputs
+	if not md or not filename:
+		raise ValueError("loadresultsfromdisk: error message.")
+
+	if not md.qmu.isdakota:
+
+		#Check that file exists
+		if not os.path.exists(filename):
+			raise OSError("binary file '%s' not found." % filename)
+
+		#initialize md.results if not a structure yet
+		if not isinstance(md.results,results):
+			md.results=results()
+
+		#load results onto model
+		structure=parseresultsfromdisk(md,filename,not md.settings.io_gather)
+		if not len(structure):
+			raise RuntimeError("No result found in binary file '%s'. Check for solution crash." % filename)
+		setattr(md.results,structure[0].SolutionType,structure)
+
+		#recover solution_type from results
+		md.private.solution=structure[0].SolutionType
+
+		#read log files onto fields
+		if os.path.exists(md.miscellaneous.name+'.errlog'):
+			with open(md.miscellaneous.name+'.errlog','r') as f:
+				setattr(getattr(md.results,structure[0].SolutionType)[0],'errlog',[line[:-1] for line in f])
+		else:
+			setattr(getattr(md.results,structure[0].SolutionType)[0],'errlog',[])
+
+		if os.path.exists(md.miscellaneous.name+'.outlog'):
+			with open(md.miscellaneous.name+'.outlog','r') as f:
+				setattr(getattr(md.results,structure[0].SolutionType)[0],'outlog',[line[:-1] for line in f])
+		else:
+			setattr(getattr(md.results,structure[0].SolutionType)[0],'outlog',[])
+
+		if len(getattr(md.results,structure[0].SolutionType)[0].errlog):
+			print ("loadresultsfromcluster info message: error during solution. Check your errlog and outlog model fields.")
+
+		#if only one solution, extract it from list for user friendliness
+		if len(structure) == 1 and not m.strcmp(structure[0].SolutionType,'TransientSolution'):
+			setattr(md.results,structure[0].SolutionType,structure[0])
+
+	#post processes qmu results if necessary
+	else:
+		md=postqmu(md)
+		os.chdir('..')
+
+	return md
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/marshall.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/marshall.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/marshall.js	(revision 21239)
@@ -0,0 +1,35 @@
+function marshall(md){
+//MARSHALL - outputs a typed array buffer to be send to the issm module.
+//
+//   The routine creates a compatible binary stream from @model md
+//   This binary stream will be used for single cpu runs using the issm module.
+//
+//   Usage:
+//      fid=marshall(md)
+
+	if (md.verbose.solution){
+		console.log('marshalling file ' + md.miscellaneous.name + '.bin');
+	}
+
+	//open file for binary writing
+	var fid=new fileptr('mode','w');
+
+	//Go through all model fields: check that it is a class and call checkconsistency
+	for (field in md){
+
+		//Some properties do not need to be marshalled
+		if (field == 'results' | field =='radaroverlay' | field == 'toolkits' | field =='cluster' | field == 'priv') continue;
+		
+		//Check that current field is a class
+		if(typeof md[field] == 'function'){
+			continue;
+		}
+
+		//Marshall current object
+		md[field].marshall(md,['md.'+field],fid);
+	}
+
+	//Last, write "md.EOF" to make sure that the binary file is not corrupt
+	WriteData(fid,'XXX','name','md.EOF','data',true,'format','Boolean');
+	return fid;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/marshall.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/marshall.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/marshall.m	(revision 21239)
@@ -0,0 +1,47 @@
+function marshall(md)
+%MARSHALL - outputs a compatible binary file from @model md, for certain solution type.
+%
+%   The routine creates a compatible binary file from @model md
+%   This binary file will be used for parallel runs in JPL-package
+%
+%   Usage:
+%      marshall(md)
+
+if md.verbose.solution,
+	disp(['marshalling file ' md.miscellaneous.name '.bin']);
+end
+
+%open file for binary writing
+fid=fopen([ md.miscellaneous.name '.bin'],'wb');
+if fid==-1,
+	error(['marshall error message: could not open ' [md.miscellaneous.name '.bin'],' file for binary writing']);
+end
+
+%Go through all model fields: check that it is a class and call checkconsistency
+fields=properties('model');
+for i=1:length(fields),
+	field=fields{i};
+
+	%Some properties do not need to be marshalled
+	if ismember(field,{'results' 'radaroverlay' 'toolkits' 'cluster' 'private'}),
+		continue;
+	end
+
+	%Check that current field is an object
+	if ~isobject(md.(field))
+		error(['field ''' char(field) ''' is not an object']);
+	end
+
+	%Marshall current object
+	%disp(['marshalling ' field '...']);
+	marshall(md.(field),['md.' field],md,fid);
+end
+
+%Last, write "md.EOF" to make sure that the binary file is not corrupt
+WriteData(fid,'XXX','name','md.EOF','data',true,'format','Boolean');
+
+%close file
+st=fclose(fid);
+if st==-1,
+	error(['marshall error message: could not close file ' [md.miscellaneous.name '.bin']]);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/marshall.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/marshall.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/marshall.py	(revision 21239)
@@ -0,0 +1,48 @@
+from WriteData import WriteData
+
+def marshall(md):
+	"""
+	MARSHALL - outputs a compatible binary file from @model md, for certain solution type.
+
+	   The routine creates a compatible binary file from @model md
+	   This binary file will be used for parallel runs in JPL-package
+
+	   Usage:
+	      marshall(md)
+	"""
+
+	print "marshalling file '%s.bin'." % md.miscellaneous.name
+
+	#open file for binary writing
+	try:
+		fid=open(md.miscellaneous.name+'.bin','wb')
+	except IOError as e:
+		raise IOError("marshall error message: could not open '%s.bin' file for binary writing." % md.miscellaneous.name)
+
+	#Go through all model fields: check that it is a class and call checkconsistency
+	fields=vars(md)
+
+#	for field in fields.iterkeys():
+	for field in md.properties():
+
+		#Some properties do not need to be marshalled
+		if field in ['results','radaroverlay','toolkits','cluster','private']:
+			continue
+
+		#Check that current field is an object
+		if not hasattr(getattr(md,field),'marshall'):
+			raise TypeError("field '%s' is not an object." % field)
+
+		#Marshall current object
+		#print "marshalling %s ..." % field
+		exec("md.{}.marshall('md.{}',md,fid)".format(field,field))
+
+	#Last, write "md.EOF" to make sure that the binary file is not corrupt
+	WriteData(fid,'XXX','name','md.EOF','data',True,'format','Boolean');
+
+	#close file
+	try:
+		fid.close()
+	except IOError as e:
+		raise IOError("marshall error message: could not close file '%s.bin'." % md.miscellaneous.name)
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/outbinread.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/outbinread.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/outbinread.m	(revision 21239)
@@ -0,0 +1,160 @@
+function results = outbinread(md,filename,steps),
+%OUTBINREAD - read specific steps in outbin file
+%
+%   Usage:
+%      results = outbinread(md,filename,steps)
+%
+%   Example:
+%      results = outbinread(md,'dir/test.outbin',1:10)
+
+if ~exist(filename,'file'),
+	error(['Binary file ' filename ' not found']);
+end
+
+%Initialize output
+results=struct();
+
+%Open file
+fid=fopen(filename,'rb');
+if(fid==-1),
+	error(['could not open ',filename,' for binary reading']);
+end
+
+%Read fields until the end of the file.
+result  = ReadData(fid,md);
+if isempty(result), error(['no results found in binary file ' filename]); end
+check_nomoresteps=0;
+counter = 1;
+step    = result.step;
+while ~isempty(result), 
+
+	if check_nomoresteps,
+		%check that the new result does not add a step, which would be an error: 
+		if result.step>=1,
+			error('parsing results for a steady-state core, which incorporates transient results!');
+		end
+	end
+
+	%Check step, increase counter if this is a new step
+	if(step~=result.step & result.step>1)
+		counter = counter + 1;
+		step    = result.step;
+	end
+
+	%Add result
+	if(result.step==0),
+		%if we have a step = 0, this is a steady state solution, don't expect more steps. 
+		index = 1;
+		check_nomoresteps=1;
+	elseif(result.step==1),
+		index = 1;
+	else
+		index = counter;
+	end
+	pos=find(result.step==steps);
+	if ~isempty(pos),
+		results(pos).(result.fieldname)=result.field;
+		if(result.step~=-9999),
+			results(pos).step=result.step;
+		end
+		if(result.time~=-9999),
+			results(pos).time=result.time;
+		end
+	end
+	if result.step>max(steps(:)),
+		%we are done!
+		return;
+	end
+
+	%read next result
+	try,
+		result  = ReadData(fid,md);
+	catch me,
+		disp('WARNING: file corrupted, trying partial recovery');
+		result=[];
+	end
+
+end
+
+fclose(fid);
+
+function result=ReadData(fid,md) % {{{
+
+%read field
+[length,count]=fread(fid,1,'int');
+
+if count==0,
+	result=struct([]);
+else
+	fieldname=fread(fid,length,'char');
+	fieldname=fieldname(1:end-1)';
+	fieldname=char(fieldname);
+	time=fread(fid,1,'double');
+	step=fread(fid,1,'int');
+
+	type=fread(fid,1,'int');
+	M=fread(fid,1,'int');
+	if type==1,
+		field=fread(fid,M,'double');
+	elseif type==2,
+		field=fread(fid,M,'char');
+		field=char(field(1:end-1)');
+	elseif type==3,
+		N=fread(fid,1,'int');
+		field=transpose(fread(fid,[N M],'double'));
+	else
+		error(['cannot read data of type ' num2str(type) ]);
+	end
+
+	%Process units here FIXME: this should not be done here!
+	yts=md.constants.yts;
+	if strcmp(fieldname,'BalancethicknessThickeningRate'),
+		field = field*yts;
+	elseif strcmp(fieldname,'HydrologyWaterVx'),
+		field = field*yts;
+	elseif strcmp(fieldname,'HydrologyWaterVy'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vx'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vy'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vz'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vel'),
+		field = field*yts;
+	elseif strcmp(fieldname,'BasalforcingsGroundediceMeltingRate'),
+		field = field*yts;
+	elseif strcmp(fieldname,'BasalforcingsFloatingiceMeltingRate'),
+		field = field*yts;
+	elseif strcmp(fieldname,'TotalFloatingBmb'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'TotalGroundedBmb'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'TotalSmb'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'SmbMassBalance'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbPrecipitation'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbRunoff'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbCondensation'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbAccumulation'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbMelt'),
+		field = field*yts;
+	elseif strcmp(fieldname,'CalvingCalvingrate'),
+		field = field*yts;
+	end
+
+	result.fieldname=fieldname;
+	result.time=time;
+	if result.time~=-9999,
+		result.time=time/yts;
+	end
+	result.step=step;
+	result.field=field;
+
+end
+% }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/parseresultsfrombuffer.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/parseresultsfrombuffer.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/parseresultsfrombuffer.js	(revision 21239)
@@ -0,0 +1,113 @@
+function parseresultsfrombuffer(md,buffer,buffersize){ //{{{
+
+	//Open file
+	results=[];
+	
+	var fid = new fileptr('mode','r','buffer',buffer,'buffersize',buffersize);
+
+	//Read fields until the end of the file.
+	result  = ReadData(fid,md);
+
+	if (MapIsEmpty(result))throw Error('no results found in binary memory buffer');
+	
+	var counter = 0;
+	var check_nomoresteps=0;
+	var step    = result['step'];
+	var index;
+
+	while (!MapIsEmpty(result)){
+
+		if (check_nomoresteps){
+			//check that the new result does not add a step, which would be an error: 
+			if (result['step']>=1)throw Error('parsing results for a steady-state core, which incorporates transient results!');
+		}
+
+		//Check step, increase counter if this is a new step
+		if(step!=result['step'] & result['step']>1){
+			counter = counter + 1;
+			step    = result['step'];
+		}
+
+		//Add result
+		if(result['step']==0){
+			//if we have a step = 0, this is a steady state solutoin, don't expect more steps. 
+			index = 0;
+			check_nomoresteps=1;
+		}
+		else if(result['step']==1){
+			index = 0;
+		}
+		else index = counter;
+
+		if(index>results.length-1)results.push({});
+		for(var i=results.length-1;i<index-1;i++)results[i]={};
+		results[index][result['fieldname']]=result['field'];
+		
+		//Get time and step
+		if(result['time']!=-9999){
+			results[index]['step']=result['step'];
+		}
+		if(result['time']!=-9999){
+			results[index]['time']=result['time'];
+		}
+
+		//read next result
+		result  = ReadData(fid,md);
+	}
+	return results;
+} // }}}
+function ReadData(fid,md){ //{{{
+//READDATA - ...
+//
+//   Usage:
+//      field=ReadData(fid,md)
+
+	//read field
+	var length=fid.fread(1,'int');
+	
+	var result={};
+
+	if (length!==-1){
+		fieldname=fid.fread(length,'char');
+		time=fid.fread(1,'double');
+		step=fid.fread(1,'int');
+		type=fid.fread(1,'int');
+		M=fid.fread(1,'int');
+
+		if (type==1) field=fid.fread(M,'double');
+		else if (type==2) field=fid.fread(M,'char');
+		else if (type==3) {
+			N=fid.fread(1,'int');
+			field=fid.fread(N*M,'double');
+		}
+		else throw Error(sprintf("%s%i",'ReadData error message: cannot read data of type ',type));
+
+		//Process units here FIXME: this should not be done here!
+		var yts=md.constants.yts;
+		if (fieldname == 'BalancethicknessThickeningRate') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'HydrologyWaterVx') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'HydrologyWaterVy') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'Vx') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'Vy') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'Vz') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'Vel') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'BasalforcingsGroundediceMeltingRate') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'BasalforcingsFloatingiceMeltingRate') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'TotalSmb') for (var i=0;i<field.length;i++)field[i]= field[i]/Math.pow(10,12)*yts; //(GigaTon/year)
+		else if (fieldname == 'SmbMassBalance') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbPrecipitation') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbRunoff') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbCondensation') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbAccumulation') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbMelt') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'CalvingCalvingrate') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+
+		result['fieldname']=fieldname;
+		result['time']=time;
+		if (result['time']!=-9999) result['time']=time/yts;
+		result['step']=step;
+		result['field']=field;
+	}
+	return result;
+
+} // }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/parseresultsfromdisk.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/parseresultsfromdisk.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/parseresultsfromdisk.m	(revision 21239)
@@ -0,0 +1,254 @@
+function results=parseresultsfromdisk(md,filename,iosplit)
+
+if iosplit,
+	results=parseresultsfromdiskiosplit(md,filename);
+else
+	results=parseresultsfromdiskioserial(md,filename);
+end
+
+
+function results=parseresultsfromdiskioserial(md,filename) % {{{
+
+%Open file
+fid=fopen(filename,'rb');
+if(fid==-1),
+	error(['loadresultsfromdisk error message: could not open ',filename,' for binary reading']);
+end
+results=struct();
+
+%Read fields until the end of the file.
+result  = ReadData(fid,md);
+if isempty(result), error(['no results found in binary file ' filename]); end
+check_nomoresteps=0;
+counter = 1;
+step    = result.step;
+while ~isempty(result), 
+
+	if check_nomoresteps,
+		%check that the new result does not add a step, which would be an error: 
+		if result.step>=1,
+			error('parsing results for a steady-state core, which incorporates transient results!');
+		end
+	end
+
+	%Check step, increase counter if this is a new step
+	if(step~=result.step & result.step>1)
+		counter = counter + 1;
+		step    = result.step;
+	end
+
+	%Add result
+	if(result.step==0),
+		%if we have a step = 0, this is a steady state solutoin, don't expect more steps. 
+		index = 1;
+		check_nomoresteps=1;
+	elseif(result.step==1),
+		index = 1;
+	else
+		index = counter;
+	end
+	results(index).(result.fieldname)=result.field;
+	if(result.step~=-9999),
+		results(index).step=result.step;
+	end
+	if(result.time~=-9999),
+		results(index).time=result.time;
+	end
+
+	%read next result
+	try,
+		result  = ReadData(fid,md);
+	catch me,
+		disp('WARNING: file corrupted, trying partial recovery');
+		result=[];
+	end
+
+end
+
+fclose(fid);
+% }}}
+function results=parseresultsfromdiskiosplit(md,filename) % {{{
+
+%Open file
+fid=fopen(filename,'rb');
+if(fid==-1),
+	error(['loadresultsfromdisk error message: could not open ',filename,' for binary reading']);
+end
+results=struct();
+
+%if we have done split I/O, ie, we have results that are fragmented across patches, 
+%do a first pass, and figure out the structure of results
+result=ReadDataDimensions(fid);
+while ~isempty(result),
+
+	%Get time and step
+	results(result.step).step=result.step;
+	if result.time~=-9999,
+		results(result.step).time=result.time; 
+	end
+
+	%Add result
+	results(result.step).(result.fieldname)=NaN;
+
+	%read next result
+	result=ReadDataDimensions(fid);
+end
+
+%do a second pass, and figure out the size of the patches
+fseek(fid,0,-1); %rewind
+result=ReadDataDimensions(fid);
+while ~isempty(result),
+	%read next result
+	result=ReadDataDimensions(fid);
+end
+
+%third pass, this time to read the real information
+fseek(fid,0,-1); %rewind
+result=ReadData(fid,md);
+while ~isempty(result),
+
+	%Get time and step
+	results(result.step).step=result.step;
+	if result.time~=-9999,
+		results(result.step).time=result.time; 
+	end
+
+	%Add result
+	results(result.step).(result.fieldname)=result.field;
+
+	%read next result
+	try,
+		result=ReadData(fid,md);
+	catch me,
+		disp('WARNING: file corrupted, results partial recovery');
+		result=[];
+	end
+
+end
+
+%close file
+fclose(fid);
+	% }}}
+function result=ReadData(fid,md) % {{{
+
+%read field
+[length,count]=fread(fid,1,'int');
+
+if count==0,
+	result=struct([]);
+else
+	fieldname=fread(fid,length,'char');
+	fieldname=fieldname(1:end-1)';
+	fieldname=char(fieldname);
+	time=fread(fid,1,'double');
+	step=fread(fid,1,'int');
+
+	type=fread(fid,1,'int');
+	M=fread(fid,1,'int');
+	if type==1,
+		field=fread(fid,M,'double');
+	elseif type==2,
+		field=fread(fid,M,'char');
+		field=char(field(1:end-1)');
+	elseif type==3,
+		N=fread(fid,1,'int');
+		field=transpose(fread(fid,[N M],'double'));
+	else
+		error(['cannot read data of type ' num2str(type) ]);
+	end
+
+	%Process units here FIXME: this should not be done here!
+	yts=md.constants.yts;
+	if strcmp(fieldname,'BalancethicknessThickeningRate'),
+		field = field*yts;
+	elseif strcmp(fieldname,'HydrologyWaterVx'),
+		field = field*yts;
+	elseif strcmp(fieldname,'HydrologyWaterVy'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vx'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vy'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vz'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vel'),
+		field = field*yts;
+	elseif strcmp(fieldname,'BasalforcingsGroundediceMeltingRate'),
+		field = field*yts;
+	elseif strcmp(fieldname,'BasalforcingsFloatingiceMeltingRate'),
+		field = field*yts;
+	elseif strcmp(fieldname,'TotalFloatingBmb'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'TotalGroundedBmb'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'TotalSmb'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'SmbMassBalance'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbPrecipitation'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbRunoff'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbEC'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbAccumulation'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbMelt'),
+		field = field*yts;
+    elseif strcmp(fieldname,'SmbDz_add'),
+        field = field*yts;
+    elseif strcmp(fieldname,'SmbM_add'),
+        field = field*yts;
+	elseif strcmp(fieldname,'CalvingCalvingrate'),
+		field = field*yts;
+	end
+
+	result.fieldname=fieldname;
+	result.time=time;
+	if result.time~=-9999,
+		result.time=time/yts;
+	end
+	result.step=step;
+	result.field=field;
+
+end
+% }}}
+function result=ReadDataDimensions(fid) % {{{
+%READDATADIMENSIONS - read data dimensions, step and time, but not the data itself.
+%
+%   Usage:
+%      field=ReadDataDimensions(fid)
+
+%read field
+[length,count]=fread(fid,1,'int');
+
+if count==0,
+	result=struct([]);
+else
+	fieldname=fread(fid,length,'char');
+	fieldname=fieldname(1:end-1)';
+	fieldname=char(fieldname);
+	time=fread(fid,1,'double');
+	step=fread(fid,1,'int');
+
+	type=fread(fid,1,'int');
+	M=fread(fid,1,'int');
+	N=1; %default
+	if type==1,
+		fseek(fid,M*8,0);
+	elseif type==2,
+		fseek(fid,M,0);
+	elseif type==3,
+		N=fread(fid,1,'int');
+		fseek(fid,N*M*8,0);
+	else
+		error(['cannot read data of type ' num2str(type) ]);
+	end
+
+	result.fieldname=fieldname;
+	result.time=time;
+	result.step=step;
+	result.M=M;
+	result.N=N;
+end
+% }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/parseresultsfromdisk.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/parseresultsfromdisk.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/parseresultsfromdisk.py	(revision 21239)
@@ -0,0 +1,259 @@
+import struct
+import numpy
+from collections import OrderedDict
+import results as resultsclass
+import MatlabFuncs as m
+
+def parseresultsfromdisk(md,filename,iosplit):
+	if iosplit:
+		results=parseresultsfromdiskiosplit(md,filename)
+	else:
+		results=parseresultsfromdiskioserial(md,filename)
+
+	return results
+
+def parseresultsfromdiskioserial(md,filename):    # {{{
+
+	#Open file
+	try:
+		fid=open(filename,'rb')
+	except IOError as e:
+		raise IOError("loadresultsfromdisk error message: could not open '%s' for binary reading." % filename)
+
+	#initialize results: 
+	results=[]
+	results.append(None)
+
+	#Read fields until the end of the file.
+	result=ReadData(fid,md)
+
+	counter=0
+	check_nomoresteps=0
+	step=result['step']
+
+	while result:
+
+		if check_nomoresteps:
+			#check that the new result does not add a step, which would be an error: 
+			if result['step']>=1:
+				raise TypeError("parsing results for a steady-state core, which incorporates transient results!")
+
+		#Check step, increase counter if this is a new step
+		if(step!=result['step'] and result['step']>1):
+			counter = counter + 1
+			step    = result['step']
+
+		#Add result
+		if result['step']==0:
+			#if we have a step = 0, this is a steady state solution, don't expect more steps. 
+			index = 0;
+			check_nomoresteps=1
+	
+		elif result['step']==1:
+			index = 0
+		else:
+			index = counter;
+	
+		if index > len(results)-1:
+			for i in xrange(len(results)-1,index-1):
+				results.append(None)
+			results.append(resultsclass.results())
+		
+		elif results[index] is None:
+			results[index]=resultsclass.results()
+
+			
+		#Get time and step
+		if result['step'] != -9999.:
+			setattr(results[index],'step',result['step'])
+		if result['time'] != -9999.:
+			setattr(results[index],'time',result['time']) 
+	
+		#Add result
+		if hasattr(results[index],result['fieldname']) and not m.strcmp(result['fieldname'],'SolutionType'):
+			setattr(results[index],result['fieldname'],numpy.vstack((getattr(results[index],result['fieldname']),result['field'])))
+		else:
+			setattr(results[index],result['fieldname'],result['field'])
+
+		#read next result
+		result=ReadData(fid,md)
+
+	fid.close()
+
+	return results
+	# }}}
+def parseresultsfromdiskiosplit(md,filename):    # {{{
+
+	#Open file
+	try:
+		fid=open(filename,'rb')
+	except IOError as e:
+		raise IOError("loadresultsfromdisk error message: could not open '%s' for binary reading." % filename)
+
+	results=[]
+
+	#if we have done split I/O, ie, we have results that are fragmented across patches, 
+	#do a first pass, and figure out the structure of results
+	result=ReadDataDimensions(fid)
+	while result:
+
+		#Get time and step
+		if result['step'] > len(results):
+			for i in xrange(len(results),result['step']-1):
+				results.append(None)
+			results.append(resultsclass.results())
+		setattr(results[result['step']-1],'step',result['step'])
+		setattr(results[result['step']-1],'time',result['time']) 
+
+		#Add result
+		setattr(results[result['step']-1],result['fieldname'],float('NaN'))
+
+		#read next result
+		result=ReadDataDimensions(fid)
+
+	#do a second pass, and figure out the size of the patches
+	fid.seek(0)    #rewind
+	result=ReadDataDimensions(fid)
+	while result:
+
+		#read next result
+		result=ReadDataDimensions(fid)
+
+	#third pass, this time to read the real information
+	fid.seek(0)    #rewind
+	result=ReadData(fid,md)
+	while result:
+
+		#Get time and step
+		if result['step']> len(results):
+			for i in xrange(len(results),result['step']-1):
+				results.append(None)
+			results.append(resultsclass.results())
+		setattr(results[result['step']-1],'step',result['step'])
+		setattr(results[result['step']-1],'time',result['time']) 
+
+		#Add result
+		setattr(results[result['step']-1],result['fieldname'],result['field'])
+
+		#read next result
+		result=ReadData(fid,md)
+
+	#close file
+	fid.close()
+
+	return results
+	# }}}
+def ReadData(fid,md):    # {{{
+	"""
+	READDATA - ...
+	 
+	    Usage:
+	       field=ReadData(fid,md)
+	"""
+
+	#read field
+	try:
+		length=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+
+		fieldname=struct.unpack('%ds' % length,fid.read(length))[0][:-1]
+		time=struct.unpack('d',fid.read(struct.calcsize('d')))[0]
+		step=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+
+		type=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+		M=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+		if   type==1:
+			field=numpy.array(struct.unpack('%dd' % M,fid.read(M*struct.calcsize('d'))),dtype=float)
+		elif type==2:
+			field=struct.unpack('%ds' % M,fid.read(M))[0][:-1]
+		elif type==3:
+			N=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+#			field=transpose(fread(fid,[N M],'double'));
+			field=numpy.zeros(shape=(M,N),dtype=float)
+			for i in xrange(M):
+				field[i,:]=struct.unpack('%dd' % N,fid.read(N*struct.calcsize('d')))
+		else:
+			raise TypeError("cannot read data of type %d" % type)
+
+		#Process units here FIXME: this should not be done here!
+		yts=md.constants.yts
+		if m.strcmp(fieldname,'BalancethicknessThickeningRate'):
+			field = field*yts
+		elif m.strcmp(fieldname,'Time'):
+			field = field/yts
+		elif m.strcmp(fieldname,'HydrologyWaterVx'):
+			field = field*yts
+		elif m.strcmp(fieldname,'HydrologyWaterVy'):
+			field = field*yts
+		elif m.strcmp(fieldname,'Vx'):
+			field = field*yts
+		elif m.strcmp(fieldname,'Vy'):
+			field = field*yts
+		elif m.strcmp(fieldname,'Vz'):
+			field = field*yts
+		elif m.strcmp(fieldname,'Vel'):
+			field = field*yts
+		elif m.strcmp(fieldname,'BasalforcingsGroundediceMeltingRate'):
+			field = field*yts
+		elif m.strcmp(fieldname,'TotalFloatingBmb'):
+			field = field/10.**12.*yts #(GigaTon/year)
+		elif m.strcmp(fieldname,'TotalGroundedBmb'):
+			field = field/10.**12.*yts #(GigaTon/year)
+		elif m.strcmp(fieldname,'TotalSmb'):
+			field = field/10.**12.*yts #(GigaTon/year)
+		elif m.strcmp(fieldname,'SmbMassBalance'):
+			field = field*yts
+		elif m.strcmp(fieldname,'CalvingCalvingrate'):
+			field = field*yts
+
+		result=OrderedDict()
+		result['fieldname']=fieldname
+		result['time']=time
+		result['step']=step
+		result['field']=field
+
+	except struct.error as e:
+		result=None
+
+	return result
+	# }}}
+def ReadDataDimensions(fid):    # {{{
+	"""
+	READDATADIMENSIONS - read data dimensions, step and time, but not the data itself.
+	 
+	    Usage:
+	       field=ReadDataDimensions(fid)
+	"""
+
+	#read field
+	try:
+		length=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+
+		fieldname=struct.unpack('%ds' % length,fid.read(length))[0][:-1]
+		time=struct.unpack('d',fid.read(struct.calcsize('d')))[0]
+		step=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+
+		type=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+		M=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+		N=1    #default
+		if   type==1:
+			fid.seek(M*8,1)
+		elif type==2:
+			fid.seek(M,1)
+		elif type==3:
+			N=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+			fid.seek(N*M*8,1)
+		else:
+			raise TypeError("cannot read data of type %d" % type)
+
+		result=OrderedDict()
+		result['fieldname']=fieldname
+		result['time']=time
+		result['step']=step
+		result['M']=M
+		result['N']=N
+
+	except struct.error as e:
+		result=None
+
+	return result
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/solve.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/solve.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/solve.js	(revision 21239)
@@ -0,0 +1,172 @@
+function solve(md,solutionstring){
+//SOLVE - apply solution sequence for this model
+//
+//   Usage:
+//      solve(md,solutionstring,varargin)
+//      where varargin is a lit of paired arguments of string OR enums
+//
+//   solution types available comprise:
+//		 - 'Stressbalance'      or 'sb'
+//		 - 'Masstransport'      or 'mt'
+//		 - 'Thermal'            or 'th'
+//		 - 'Steadystate'        or 'ss'
+//		 - 'Transient'          or 'tr'
+//		 - 'Balancethickness'   or 'mc'
+//      - 'Balancevelocity'   or 'bv'
+//		 - 'BedSlope'           or 'bsl'
+//		 - 'SurfaceSlope'       or 'ssl'
+//		 - 'Hydrology'          or 'hy'
+//      - 'DamageEvolution'   or 'da'
+//		 - 'Gia'                or 'gia'
+//		 - 'Sealevelrise'       or 'slr'
+//
+//  extra options:
+//      - loadonly    : does not solve. only load results
+//      - runtimename : true or false (default is true), makes name unique
+//      - checkconsistency : 'yes' or 'no' (default is 'yes'), ensures checks on consistency of model
+//      - restart: 'directory name (relative to the execution directory) where the restart file is located.
+//      - callback: callback function to be called upon receiving the results from the server, or local computations. 
+//
+//   Examples:
+//      md=solve(md,'Stressbalance');
+//      md=solve(md,'sb');
+
+	if(typeof solutionstring !== 'string') {
+		throw Error(sprintf("%s\n", "ISSM's solve function only accepts strings for solution sequences. Type help solve to get a list of supported solutions."));
+	}
+
+	//recover and process solve options
+	if((solutionstring.toLowerCase() === 'sb') || (solutionstring.toLowerCase() === 'stressbalance')){
+		solutionstring = 'StressbalanceSolution';
+	}else if((solutionstring.toLowerCase() === 'mt') || (solutionstring.toLowerCase() === 'masstransport')){
+		solutionstring = 'MasstransportSolution';	
+	}else if((solutionstring.toLowerCase() === 'th') || (solutionstring.toLowerCase() === 'thermal')){
+		solutionstring = 'ThermalSolution';
+	}else if((solutionstring.toLowerCase() === 'st') || (solutionstring.toLowerCase() === 'steadystate')){
+		solutionstring = 'SteadystateSolution';
+	}else if((solutionstring.toLowerCase() === 'tr') || (solutionstring.toLowerCase() === 'transient')){
+		solutionstring = 'TransientSolution';
+	}else if((solutionstring.toLowerCase() === 'mc') || (solutionstring.toLowerCase() === 'balancethickness')){
+		solutionstring = 'BalancethicknessSolution';
+	}else if((solutionstring.toLowerCase() === 'bv') || (solutionstring.toLowerCase() === 'balancevelocity')){
+		solutionstring = 'BalancevelocitySolution';
+	}else if((solutionstring.toLowerCase() === 'bsl') || (solutionstring.toLowerCase() === 'bedslope')){
+		solutionstring = 'BedSlopeSolution';
+	}else if((solutionstring.toLowerCase() === 'ssl') || (solutionstring.toLowerCase() === 'surfaceslope')){
+		solutionstring = 'SurfaceSlopeSolution';
+	}else if((solutionstring.toLowerCase() === 'hy') || (solutionstring.toLowerCase() === 'hydrology')){
+		solutionstring = 'HydrologySolution';
+	}else if((solutionstring.toLowerCase() === 'da') || (solutionstring.toLowerCase() === 'damageevolution')){
+		solutionstring = 'DamageEvolutionSolution';
+	}else if((solutionstring.toLowerCase() === 'gia') || (solutionstring.toLowerCase() === 'gia')){
+		solutionstring = 'GiaSolution';
+	}else if((solutionstring.toLowerCase() === 'slr') || (solutionstring.toLowerCase() === 'sealevelrise')){
+		solutionstring = 'SealevelriseSolution';
+	}else{
+		throw Error(sprintf("%s%s%s\n",'solutionstring ',solutionstring,' not supported!'));
+	}
+	
+	//Process options
+	var args = Array.prototype.slice.call(arguments);
+	var options = new pairoptions(args.slice(2,args.length));
+	options.addfield('solutionstring',solutionstring);
+
+	//recover some fields
+	md.priv.solution=solutionstring;
+	cluster=md.cluster;
+
+	//check model consistency
+	if (options.getfieldvalue('checkconsistency','yes') == 'yes'){
+		if (md.verbose.solution){
+			console.log('checking model consistency');
+		}
+		ismodelselfconsistent(md);
+	}
+
+	//If we are restarting, actually use the provided runtime name:
+	restart=options.getfieldvalue('restart','');
+
+	//First, build a runtime name that is unique
+	if (restart==1 ){
+		//Leave the runtimename as is
+		}
+	else{
+		if (!(restart == '')){
+			md.priv.runtimename=restart;
+		}
+		else if (options.getfieldvalue('runtimename',true)){
+			c=new Date().getTime();
+			md.priv.runtimename=sprintf('%s-%g',md.miscellaneous.name,c);
+		}
+		else{
+			md.priv.runtimename=md.miscellaneous.name;
+		}
+	}
+
+	//if running qmu analysis, some preprocessing of dakota files using models
+	//fields needs to be carried out. 
+	if (md.qmu.isdakota){
+		throw Error("solve error message: qmu runs not supported yet!");
+		//md.preqmu(options);
+	}
+
+
+	//Do we load results only?
+	if (options.getfieldvalue('loadonly',false)){
+		loadresultsfromcluster(md);
+		return;
+	}
+
+	//Marshall into a binary array (fid) all the fields of model.
+	var fid = marshall(md);                                          // bin file
+	
+	//deal with toolkits options: 
+	toolkitsstring= md.toolkits.ToolkitsFile(md.miscellaneous.name + '.toolkits'); // toolkits file
+
+	//callback function: 
+	function callbackfunction(){solving=false;}; //default, do nothing if no callback function requested.
+	if (options.getfieldvalue('callbackfunction',false)){
+		callbackfunction=options.getfieldvalue('callbackfunction');
+	}
+	
+	//callback error function: 
+	function callbackerrorfunction(){solving=false;}; //default, do nothing if no callback function requested.
+	if (options.getfieldvalue('callbackerrorfunction',false)){
+		callbackerrorfunction=options.getfieldvalue('callbackerrorfunction');
+	}
+	
+	//callback id: 
+	var callbackid = '.run-button'; //default, update .run-button elements with progress updates.
+	if (options.getfieldvalue('callbackid',false)){
+		callbackid=options.getfieldvalue('callbackid');
+	}
+
+	if (cluster.classname() == 'local'){  //{{{
+
+		/*We are running locally on the machine, using the issm module:*/
+		console.log('running issm locally');
+		
+		//Call issm:
+		var outputs = issm(fid, toolkitsstring, solutionstring, md.miscellaneous.name); 
+		
+		//Recover output arguments: 
+		var outputbuffer = outputs[0]; var outputbuffersize = outputs[1];
+			
+		//Load results: 
+		md = loadresultsfrombuffer(md,outputbuffer,outputbuffersize); 
+		
+		//Call back? 
+		callbackfunction();
+
+		return md;
+
+	} //}}}
+	else { //{{{
+
+		/*We are running somewhere else on a computational server. Send the buffer to that server and retrieve output: */
+		cluster.UploadAndRun(md,callbackfunction,callbackerrorfunction,callbackid,fid,toolkitsstring,solutionstring,md.miscellaneous.name,md.priv.runtimename);
+
+		return md;
+
+	} //}}}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/solve.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/solve.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/solve.m	(revision 21239)
@@ -0,0 +1,170 @@
+function md=solve(md,solutionstring,varargin)
+%SOLVE - apply solution sequence for this model
+%
+%   Usage:
+%      md=solve(md,solutionstring,varargin)
+%      where varargin is a lit of paired arguments of string OR enums
+%
+%   solution types available comprise:
+%		 - 'Stressbalance'      or 'sb'
+%		 - 'Masstransport'      or 'mt'
+%		 - 'Thermal'            or 'th'
+%		 - 'Steadystate'        or 'ss'
+%		 - 'Transient'          or 'tr'
+%		 - 'Balancethickness'   or 'mc'
+%      - 'Balancevelocity'    or 'bv'
+%		 - 'BedSlope'           or 'bsl'
+%		 - 'SurfaceSlope'       or 'ssl'
+%		 - 'Hydrology'          or 'hy'
+%      - 'DamageEvolution'    or 'da'
+%		 - 'Gia'                or 'gia'
+%		 - 'Sealevelrise'       or 'slr'
+%
+%  extra options:
+%      - loadonly    : does not solve. only load results
+%      - runtimename : true or false (default is true), makes name unique
+%      - checkconsistency : 'yes' or 'no' (default is 'yes'), ensures checks on consistency of model
+%      - restart: 'directory name (relative to the execution directory) where the restart file is located.
+%      - outbinread  : if 0, download the outbin but do not process is (md.results is not updated)
+%
+%   Examples:
+%      md=solve(md,'Stressbalance');
+%      md=solve(md,'sb');
+
+if ~ischar(solutionstring)
+	error('ISSM''s solve function only accepts strings for solution sequences. Type help solve to get a list of supported solutions');
+end
+
+%recover and process solve options
+if strcmpi(solutionstring,'sb') || strcmpi(solutionstring,'Stressbalance')
+	solutionstring = 'StressbalanceSolution';
+elseif strcmpi(solutionstring,'mt') || strcmpi(solutionstring,'Masstransport')
+	solutionstring = 'MasstransportSolution';
+elseif strcmpi(solutionstring,'th') || strcmpi(solutionstring,'Thermal')
+	solutionstring = 'ThermalSolution';
+elseif strcmpi(solutionstring,'ss') || strcmpi(solutionstring,'Steadystate') 
+	solutionstring = 'SteadystateSolution';
+elseif strcmpi(solutionstring,'tr') || strcmpi(solutionstring,'Transient')
+	solutionstring = 'TransientSolution';
+elseif strcmpi(solutionstring,'mc') || strcmpi(solutionstring,'Balancethickness')
+	solutionstring = 'BalancethicknessSolution';
+elseif strcmpi(solutionstring,'bv') || strcmpi(solutionstring,'Balancevelocity')
+	solutionstring = 'BalancevelocitySolution';
+elseif strcmpi(solutionstring,'bsl') || strcmpi(solutionstring,'BedSlope')
+	solutionstring = 'BedSlopeSolution';
+elseif strcmpi(solutionstring,'ssl') || strcmpi(solutionstring,'SurfaceSlope')
+	solutionstring = 'SurfaceSlopeSolution';
+elseif strcmpi(solutionstring,'hy') || strcmpi(solutionstring,'Hydrology')
+	solutionstring = 'HydrologySolution';
+elseif strcmpi(solutionstring,'da') || strcmpi(solutionstring,'DamageEvolution')
+	solutionstring = 'DamageEvolutionSolution';
+elseif strcmpi(solutionstring,'gia') || strcmpi(solutionstring,'Gia')
+	solutionstring = 'GiaSolution';
+elseif strcmpi(solutionstring,'slr') || strcmpi(solutionstring,'Sealevelrise')
+	solutionstring = 'SealevelriseSolution';
+else
+	error(['solutionstring ' solutionstring ' not supported!']);
+end
+options=pairoptions(varargin{:},'solutionstring',solutionstring);
+
+%recover some fields
+md.private.solution=solutionstring;
+cluster=md.cluster;
+if strcmpi(getfieldvalue(options,'batch','no'),'yes') batch=1; else batch=0; end
+
+%check model consistency
+if strcmpi(getfieldvalue(options,'checkconsistency','yes'),'yes'),
+	if md.verbose.solution,
+		disp('checking model consistency');
+	end
+	ismodelselfconsistent(md),
+end
+
+%If we are restarting, actually use the provided runtime name:
+restart=getfieldvalue(options,'restart','');
+%First, build a runtime name that is unique
+if restart==1 
+	%Leave the runtimename as is
+else
+	if ~isempty(restart),
+		md.private.runtimename=restart;
+	elseif getfieldvalue(options,'runtimename',true),
+		c=clock;
+		md.private.runtimename=sprintf('%s-%02i-%02i-%04i-%02i-%02i-%02i-%i',md.miscellaneous.name,c(2),c(3),c(1),c(4),c(5),floor(c(6)),feature('GetPid'));
+	else
+		md.private.runtimename=md.miscellaneous.name;
+	end
+end
+
+%if running qmu analysis, some preprocessing of dakota files using models
+%fields needs to be carried out. 
+if md.qmu.isdakota,
+	md=preqmu(md,options);
+end
+
+%Do we load results only?
+if getfieldvalue(options,'loadonly',false),
+	md=loadresultsfromcluster(md);
+	return;
+end
+
+%Write all input files
+marshall(md);                                          % bin file
+ToolkitsFile(md.toolkits,[md.miscellaneous.name '.toolkits']); % toolkits file
+BuildQueueScript(cluster,md.private.runtimename,md.miscellaneous.name,md.private.solution,md.settings.io_gather,md.debug.valgrind,md.debug.gprof,md.qmu.isdakota); % queue file
+
+%Upload all required files
+modelname = md.miscellaneous.name;
+filelist  = {[modelname '.bin '] [modelname '.toolkits ']};
+if ispc,
+	filelist{end+1}=[modelname '.bat '];
+else
+	filelist{end+1}=[modelname '.queue '];
+end
+
+if md.qmu.isdakota,
+	filelist{end+1} = [modelname '.qmu.in'];
+end
+
+if isempty(restart),
+	UploadQueueJob(cluster,md.miscellaneous.name,md.private.runtimename,filelist);
+end
+
+%launch queue job: 
+LaunchQueueJob(cluster,md.miscellaneous.name,md.private.runtimename,filelist,restart,batch);
+
+%return if batch: 
+if batch,
+	if md.verbose.solution,
+		disp('batch mode requested: not launching job interactively');
+		disp('launch solution sequence on remote cluster by hand');
+	end
+	return;
+end
+%wait on lock
+if isnan(md.settings.waitonlock),
+	%load when user enters 'y'
+	disp('solution launched on remote cluster. log in to detect job completion.');
+	choice=input('Is the job successfully completed? (y/n)','s');
+	if ~strcmp(choice,'y'), 
+		disp('Results not loaded... exiting'); 
+	else
+		md=loadresultsfromcluster(md);
+	end
+elseif md.settings.waitonlock>0,
+	%we wait for the done file
+	done=waitonlock(md);
+	if md.verbose.solution,
+		disp('loading results from cluster');
+	end
+	md=loadresultsfromcluster(md);
+elseif md.settings.waitonlock==0,
+	 disp('Model results must be loaded manually with md=loadresultsfromcluster(md);');
+end
+
+%post processes qmu results if necessary
+if md.qmu.isdakota,
+	if ~strncmpi(getfieldvalue(options,'keep','y'),'y',1)
+		system(['rm -rf qmu' num2str(feature('GetPid'))]);
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/solve.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/solve.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/solve.py	(revision 21239)
@@ -0,0 +1,151 @@
+import datetime
+import os
+import shutil
+from pairoptions import pairoptions
+from ismodelselfconsistent import ismodelselfconsistent
+from marshall import marshall
+from waitonlock import waitonlock
+from loadresultsfromcluster import loadresultsfromcluster
+import MatlabFuncs as m
+
+def solve(md,solutionstring,*args):
+	"""
+	SOLVE - apply solution sequence for this model
+ 
+	   Usage:
+	      md=solve(md,solutionstring,varargin)
+	      where varargin is a list of paired arguments of string OR enums
+ 
+		solution types available comprise:
+		 - 'Stressbalance'    or 'sb'
+		 - 'Masstransport'    or 'mt'
+		 - 'Thermal'          or 'th'
+		 - 'Steadystate'      or 'ss'
+		 - 'Transient'        or 'tr'
+		 - 'Balancethickness' or 'mc'
+		 - 'Balancevelocity'  or 'bv'
+		 - 'BedSlope'         or 'bsl'
+		 - 'SurfaceSlope'     or 'ssl'
+		 - 'Hydrology'        or 'hy'
+		 - 'DamageEvolution'  or 'da'
+		 - 'Gia'              or 'gia'
+		 - 'Sealevelrise'     or 'slr'
+
+	   extra options:
+        - loadonly : does not solve. only load results
+		  - checkconsistency : 'yes' or 'no' (default is 'yes'), ensures checks on consistency of model
+		  - restart: 'directory name (relative to the execution directory) where the restart file is located.
+ 
+	   Examples:
+	      md=solve(md,'Stressbalance');
+         md=solve(md,'sb');
+	"""
+
+	#recover and process solve options
+	if solutionstring.lower() == 'sb' or solutionstring.lower() == 'stressbalance':
+		solutionstring = 'StressbalanceSolution';
+	elif solutionstring.lower() == 'mt' or solutionstring.lower() == 'masstransport':
+		solutionstring = 'MasstransportSolution';	
+	elif solutionstring.lower() == 'th' or solutionstring.lower() == 'thermal':
+		solutionstring = 'ThermalSolution';
+	elif solutionstring.lower() == 'st' or solutionstring.lower() == 'steadystate':
+		solutionstring = 'SteadystateSolution';
+	elif solutionstring.lower() == 'tr' or solutionstring.lower() == 'transient':
+		solutionstring = 'TransientSolution';
+	elif solutionstring.lower() == 'mc' or solutionstring.lower() == 'balancethickness':
+		solutionstring = 'BalancethicknessSolution';
+	elif solutionstring.lower() == 'bv' or solutionstring.lower() == 'balancevelocity':
+		solutionstring = 'BalancevelocitySolution';
+	elif solutionstring.lower() == 'bsl' or solutionstring.lower() == 'bedslope':
+		solutionstring = 'BedSlopeSolution';
+	elif solutionstring.lower() == 'ssl' or solutionstring.lower() == 'surfaceslope':
+		solutionstring = 'SurfaceSlopeSolution';
+	elif solutionstring.lower() == 'hy' or solutionstring.lower() == 'hydrology':
+		solutionstring = 'HydrologySolution';
+	elif solutionstring.lower() == 'da' or solutionstring.lower() == 'damageevolution':
+		solutionstring = 'DamageEvolutionSolution';
+	elif solutionstring.lower() == 'gia' or solutionstring.lower() == 'gia':
+		solutionstring = 'GiaSolution';
+	elif solutionstring.lower() == 'slr' or solutionstring.lower() == 'sealevelrise':
+		solutionstring = 'SealevelriseSolution';
+	else: 	
+		raise ValueError("solutionstring '%s' not supported!" % solutionstring)
+	options=pairoptions('solutionstring',solutionstring,*args)
+
+	#recover some fields
+	md.private.solution=solutionstring
+	cluster=md.cluster 
+	if m.strcmpi(options.getfieldvalue('batch','no'),'yes'):
+		batch=1
+	else:
+		batch=0;
+
+	#check model consistency
+	if m.strcmpi(options.getfieldvalue('checkconsistency','yes'),'yes'):
+		print "checking model consistency"
+		ismodelselfconsistent(md)
+
+	#First, build a runtime name that is unique
+	restart=options.getfieldvalue('restart','')
+	if restart == 1:
+		pass #do nothing
+	else:
+		if restart:
+			md.private.runtimename=restart
+		else:
+			if options.getfieldvalue('runtimename',True):
+				c=datetime.datetime.now()
+				md.private.runtimename="%s-%02i-%02i-%04i-%02i-%02i-%02i-%i" % (md.miscellaneous.name,c.month,c.day,c.year,c.hour,c.minute,c.second,os.getpid())
+			else:
+				md.private.runtimename=md.miscellaneous.name 
+
+	#if running qmu analysis, some preprocessing of dakota files using models
+	#fields needs to be carried out. 
+	if md.qmu.isdakota:
+		md=preqmu(md,options)
+
+	#Do we load results only?
+	if options.getfieldvalue('loadonly',False):
+		md=loadresultsfromcluster(md)
+		return md
+
+
+	#Write all input files
+	marshall(md)                                           # bin file
+	md.toolkits.ToolkitsFile(md.miscellaneous.name+'.toolkits')    # toolkits file
+	cluster.BuildQueueScript(md.private.runtimename,md.miscellaneous.name,md.private.solution,md.settings.io_gather,md.debug.valgrind,md.debug.gprof,md.qmu.isdakota)    # queue file
+
+	#Stop here if batch mode
+	if m.strcmpi(options.getfieldvalue('batch','no'),'yes'):
+		print 'batch mode requested: not launching job interactively'
+		print 'launch solution sequence on remote cluster by hand'
+		return md
+
+	#Upload all required files: 
+	modelname = md.miscellaneous.name
+	filelist  = [modelname+'.bin ',modelname+'.toolkits ',modelname+'.queue ']
+	if md.qmu.isdakota:
+		filelist.append(modelname+'.qmu.in')
+
+	if not restart:
+		cluster.UploadQueueJob(md.miscellaneous.name,md.private.runtimename,filelist)
+	
+	#Launch job
+	cluster.LaunchQueueJob(md.miscellaneous.name,md.private.runtimename,filelist,restart,batch)
+
+	#wait on lock
+	if md.settings.waitonlock>0:
+		#we wait for the done file
+		islock=waitonlock(md)
+		if islock==0:    #no results to be loaded
+			print 'The results must be loaded manually with md=loadresultsfromcluster(md).'
+		else:            #load results
+			print 'loading results from cluster'
+			md=loadresultsfromcluster(md)
+
+	#post processes qmu results if necessary
+	if md.qmu.isdakota:
+		if not strncmpi(options['keep'],'y',1):
+			shutil.rmtree('qmu'+str(os.getpid()))
+
+	return md
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/solveslm.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/solveslm.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/solveslm.m	(revision 21239)
@@ -0,0 +1,96 @@
+function slm=solveslm(slm,solutionstringi,varargin)
+%SOLVESLR - apply solution sequence for this sealevel model
+%
+%   Usage:
+%      slm=solve(slm,solutionstring,varargin)
+%      where varargin is a lit of paired arguments of string OR enums
+%
+%   solution types available comprise:
+%		 - 'Sealevelrise'
+%		 - 'Transient'
+%
+%  extra options:
+%
+%   Examples:
+%      slm=solve(slm,'Transient');
+
+%recover and process solve options
+if strcmpi(solutionstringi,'tr') || strcmpi(solutionstringi,'Transient')
+	solutionstring = 'TransientSolution';
+elseif strcmpi(solutionstringi,'slr') || strcmpi(solutionstringi,'Sealevelrise')
+	solutionstring = 'SealevelriseSolution';
+else
+	error(['solutionstring ' solutionstringi ' not supported!']);
+end
+
+%check consistency: 
+slm.checkconsistency(solutionstring);
+
+%process options 
+options=pairoptions(varargin{:},'solutionstring',solutionstring);
+
+%figure out if the sum of cluster processors requested sums up correctly: 
+totalnp=0;
+for i=1:length(slm.icecaps), totalnp=totalnp+slm.icecaps{i}.cluster.np; end
+totalnp=totalnp+slm.earth.cluster.np;
+if totalnp~=slm.cluster.np,
+	error('sum of all icecaps and earch cluster processors requestes should be equal to slm.cluster.np');
+end
+
+%recover some fields
+slm.private.solution=solutionstring;
+cluster=slm.cluster;
+batch=0;
+
+%now, go through icecaps, glacies and earth, and upload all the data independently: 
+for i=1:length(slm.icecaps),
+	slm.icecaps{i}=solve(slm.icecaps{i},solutionstringi,'batch','yes');
+end
+slm.earth=solve(slm.earth,solutionstringi,'batch','yes');
+
+%Firs, build a runtime name that is unique
+c=clock;
+slm.private.runtimename=sprintf('%s-%02i-%02i-%04i-%02i-%02i-%02i-%i',slm.miscellaneous.name,c(2),c(3),c(1),c(4),c(5),floor(c(6)),feature('GetPid'));
+
+%Write all input files:
+privateruntimenames={}; 
+miscellaneousnames={}; 
+nps={};
+for i=1:length(slm.icecaps),
+	privateruntimenames{end+1}=slm.icecaps{i}.private.runtimename;
+	miscellaneousnames{end+1}=slm.icecaps{i}.miscellaneous.name;
+	nps{end+1}=slm.icecaps{i}.cluster.np;
+end
+privateruntimenames{end+1}=slm.earth.private.runtimename;
+miscellaneousnames{end+1}=slm.earth.miscellaneous.name;
+nps{end+1}=slm.earth.cluster.np;
+
+BuildQueueScriptMultipleModels(cluster,slm.private.runtimename,slm.miscellaneous.name,slm.private.solution,privateruntimenames,miscellaneousnames,nps);
+
+%Upload all required files, given that each individual solution for icecaps and earth model already did:
+filelist={[slm.miscellaneous.name '.queue']};
+UploadQueueJob(cluster,slm.miscellaneous.name,slm.private.runtimename,filelist);
+
+%launch queue job: 
+LaunchQueueJob(cluster,slm.miscellaneous.name,slm.private.runtimename,filelist,'',batch);
+
+%wait on lock
+if isnan(slm.settings.waitonlock),
+	%load when user enters 'y'
+	disp('solution launched on remote cluster. log in to detect job completion.');
+	choice=input('Is the job successfully completed? (y/n)','s');
+	if ~strcmp(choice,'y'), 
+		disp('Results not loaded... exiting'); 
+	else
+		for i=1:length(slm.icecaps), slm.icecaps{i}=loadresultsfromcluster(slm.icecaps{i});end;
+		slm.earth=loadresultsfromcluster(slm.earth);
+	end
+elseif slm.settings.waitonlock>0,
+	%we wait for the done file
+	done=waitonlock(slm);
+	disp('loading results from cluster');
+	for i=1:length(slm.icecaps), slm.icecaps{i}=loadresultsfromcluster(slm.icecaps{i});end;
+	slm.earth=loadresultsfromcluster(slm.earth);
+elseif slm.settings.waitonlock==0,
+	 disp('Model results must be loaded manually with slm=loadresultsfromcluster(slm);');
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/waitonlock.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/waitonlock.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/waitonlock.m	(revision 21239)
@@ -0,0 +1,77 @@
+function ispresent=waitonlock(md)
+%WAITONLOCK - wait for a file
+%
+%   This routine will return when a file named 'lockfilename' is written to disk.
+%   Also check for outlog file be cause it might bewritten several seconds
+%   after the lock file.
+%   If the time limit given in input is exceeded, return 0
+%
+%   Usage:
+%      flag=waitonlock(md)
+
+%Return if waitonlock < 0 (no need to wait)
+
+%Get lockfilename (lock file) and options
+executionpath = md.cluster.executionpath;
+timelimit     = md.settings.waitonlock;
+cluster       = md.cluster;
+
+if isa(cluster,'pfe') && cluster.interactive>0
+	lockfilename  = [executionpath '/Interactive' num2str(cluster.interactive) '/' md.miscellaneous.name '.lock'];
+	logfilename   = [executionpath '/Interactive' num2str(cluster.interactive) '/' md.miscellaneous.name '.outlog'];
+else
+	lockfilename  = [executionpath '/' md.private.runtimename '/' md.miscellaneous.name '.lock'];
+	logfilename   = [executionpath '/' md.private.runtimename '/' md.miscellaneous.name '.outlog'];
+end
+
+
+%If we are using the generic cluster in interactive mode, job is already complete
+if (isa(cluster,'generic') & cluster.interactive) | isa(cluster,'generic_static'),
+	%We are in interactive mode, no need to check for job completion
+	ispresent=1;
+	return;
+end
+
+%initialize time and file presence test flag
+time=0; ispresent=0; time0=clock;
+disp(['waiting for ' lockfilename ' hold on... (Ctrl+C to exit)'])
+
+%prepare command if the job is not running on the local machine
+if ~strcmpi(oshostname(),cluster.name),
+	login = cluster.login;
+	port  = 0;
+	if isprop(cluster,'port') 
+		port = cluster.port;
+	end
+	if port,
+		command = ['ssh -l ' login ' -p ' num2str(port) ' localhost "[ -f ' lockfilename ' ] && [ -f ' logfilename ' ]" 2>/dev/null'];
+	elseif isa(cluster,'cloud')
+		command = [' [ -f ' lockfilename ' ] && [ -f ' logfilename ' ] 2>/dev/null'];
+		command = [starcluster() ' sshmaster ' cluster.name ' --user ' cluster.login ' ''' command ''''];
+	else
+		command = ['ssh -l ' login ' ' cluster.name ' "[ -f ' lockfilename ' ] && [ -f ' logfilename ' ]" 2>/dev/null'];
+	end
+end
+
+%loop till file .lock exist or time is up
+while (ispresent==0 & time<timelimit)
+	if strcmpi(oshostname(),cluster.name),
+		pause(1);
+		ispresent=(exist(lockfilename,'file') & exist(logfilename,'file'));
+		time=etime(clock,time0)/60;
+	else
+		pause(5);
+		time=etime(clock,time0);
+		fprintf('\rchecking for job completion (time: %i min %i sec)      ',floor(time/60),floor(rem(time,60)));
+		time=time/60; %converts time from sec to min
+		ispresent=~system(command);
+		if ispresent, fprintf('\n'); end
+	end
+end
+
+%build output
+if (time>timelimit),
+	disp('Time limit exceeded. Increase md.settings.waitonlock');
+	disp('The results must be loaded manually with md=loadresultsfromcluster(md).');
+	error(['waitonlock error message: time limit exceeded']);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/waitonlock.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/waitonlock.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solve/waitonlock.py	(revision 21239)
@@ -0,0 +1,64 @@
+import os
+from socket import gethostname
+import time
+import MatlabFuncs as m
+
+def waitonlock(md):
+	"""
+	WAITONLOCK - wait for a file
+ 
+	   This routine will return when a file named 'filename' is written to disk.
+	   If the time limit given in input is exceeded, return 0
+ 
+	   Usage:
+	      flag=waitonlock(md)
+	"""
+
+	#Get filename (lock file) and options
+	executionpath=md.cluster.executionpath
+	cluster=md.cluster.name
+	login=md.cluster.login
+	port=md.cluster.port
+	timelimit=md.settings.waitonlock
+	filename=os.path.join(executionpath,md.private.runtimename,md.miscellaneous.name+'.lock')
+
+	#waitonlock will work if the lock is on the same machine only: 
+	if not m.strcmpi(gethostname(),cluster):
+
+		print 'solution launched on remote cluster. log in to detect job completion.'
+		choice=raw_input('Is the job successfully completed? (y/n) ')
+		if not m.strcmp(choice,'y'): 
+			print 'Results not loaded... exiting' 
+			flag=0
+		else:
+			flag=1
+
+	#job is running on the same machine
+	else:
+
+		if 'interactive' in vars(md.cluster) and md.cluster.interactive:
+			#We are in interactive mode, no need to check for job completion
+			flag=1
+			return flag
+		#initialize time and file presence test flag
+		etime=0
+		ispresent=0
+		print "waiting for '%s' hold on... (Ctrl+C to exit)" % filename
+
+		#loop till file .lock exist or time is up
+		while ispresent==0 and etime<timelimit:
+			ispresent=os.path.exists(filename)
+			time.sleep(1)
+			etime+=1/60
+
+		#build output
+		if etime>timelimit:
+			print 'Time limit exceeded. Increase md.settings.waitonlock'
+			print 'The results must be loaded manually with md=loadresultsfromcluster(md).'
+			raise RuntimeError('waitonlock error message: time limit exceeded.')
+			flag=0
+		else:
+			flag=1
+
+	return flag
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/asmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/asmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/asmoptions.m	(revision 21239)
@@ -0,0 +1,19 @@
+function asm=asmoptions(varargin)
+%ASMOPTIONS - return Additive Shwartz Method petsc options
+%
+%   Usage:
+%      options=asmoptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+asm=struct();
+
+%default asm options
+asm.toolkit='petsc';
+asm.mat_type=getfieldvalue(options,'mat_type','aij');
+asm.ksp_type=getfieldvalue(options,'ksp_type','gmres');
+asm.pc_type=getfieldvalue(options,'pc_type','asm');
+asm.sub_pc_type=getfieldvalue(options,'sub_pc_type','lu');
+asm.pc_asm_overlap=getfieldvalue(options,'pc_asm_overlap',3);
+asm.ksp_max_it=getfieldvalue(options,'ksp_max_it',100);
+asm.ksp_rtol=getfieldvalue(options,'ksp_rtol',1e-30);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/asmoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/asmoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/asmoptions.py	(revision 21239)
@@ -0,0 +1,29 @@
+import pairoptions
+
+def asmoptions(*args):
+	#ASMOPTIONS - return ASM petsc options
+	#
+	#   Usage:
+	#      options=asmoptions;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(*args) 
+	
+	options=[['toolkit','petsc'],['mat_type','aij'],['ksp_type','gmres'],['pc_type','asm'],['sub_pc_type','lu'],['pc_asm_overlap',3],['ksp_max_it',100],['ksp_rtol',1e-30]];
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsasmoptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgsasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsbjacobioptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgsbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsgamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsgamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsgamgoptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgsgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsgasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsgasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsgasmoptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgsgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgshypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgshypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgshypreoptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgshypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsjacobioptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgsjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslasmoptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgslasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslbjacobioptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgslbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslgamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslgamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslgamgoptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgslgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslgasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslgasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslgasmoptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgslgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslhypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslhypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslhypreoptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgslhypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsljacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsljacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsljacobioptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgsljacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslmgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslmgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslmgoptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgslmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslnoneoptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgslmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslpbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslpbjacobioptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgslpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslsoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslsoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgslsoroptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgslsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsmgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsmgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsmgoptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgsmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgsnoneoptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgsmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgspbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgspbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgspbjacobioptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgspbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgssoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgssoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bcgssoroptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bcgssoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgasmoptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bicgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgbjacobioptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bicgbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicggamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicggamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicggamgoptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bicggamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicggasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicggasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicggasmoptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bicggasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicghypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicghypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicghypreoptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bicghypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgjacobioptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=bicgjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgmgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgmgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgmgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=bicgmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgnoneoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=bicgmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgpbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgpbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=bicgpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgsoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgsoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/bicgsoroptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=bicgsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cggamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cggamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cggamgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cggamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cggasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cggasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cggasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cggasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cghypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cghypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cghypreoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cghypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgmgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgmgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgmgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgneasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgneasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgneasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgneasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnebjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnebjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnebjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgnebjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnegamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnegamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnegamgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgnegamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnegasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnegasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnegasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgnegasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnehypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnehypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnehypreoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgnehypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnejacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnejacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnejacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgnejacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnemgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnemgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnemgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgnemgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnenoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnenoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnenoneoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgnemgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnepbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnepbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnepbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgnepbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnesoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnesoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnesoroptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgnesoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgnoneoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgpbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgpbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgsasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgsbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsgamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsgamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsgamgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgsgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsgasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsgasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsgasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgsgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgshypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgshypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgshypreoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgshypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgsjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsmgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsmgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsmgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgsmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsnoneoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgsmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgsoroptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgspbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgspbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgspbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgspbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgssoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgssoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/cgssoroptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=cgssoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/conditionnumberoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/conditionnumberoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/conditionnumberoptions.m	(revision 21239)
@@ -0,0 +1,17 @@
+function cn=conditionnumberoptions(varargin)
+%MULTIGRIDOPTIONS - use Multigrid 
+%
+%   Usage:
+%      options=mgoptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+cn=struct();
+cn.toolkit='petsc';
+cn.mat_type=getfieldvalue(options,'mat_type','mpiaij');
+cn.ksp_type=getfieldvalue(options,'ksp_type','gmres');
+cn.pc_type=getfieldvalue(options,'pc_type','none');
+cn.ksp_monitor_singular_value=getfieldvalue(options,'ksp_monitor_singular_value','');
+cn.ksp_gmres_restart=getfieldvalue(options,'ksp_gmres_restart',1000);
+cn.info=getfieldvalue(options,'info','');
+cn.log_summary=getfieldvalue(options,'log_summary','');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=crasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=crbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crgamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crgamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crgamgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=crgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crgasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crgasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crgasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=crgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crhypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crhypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crhypreoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=crhypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=crjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crmgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crmgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crmgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=crmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crnoneoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=crmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crpbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crpbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=crpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crsoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crsoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/crsoroptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=crsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=dgmresasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=dgmresbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresgamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresgamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresgamgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=dgmresgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresgasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresgasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresgasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=dgmresgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmreshypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmreshypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmreshypreoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=dgmreshypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=dgmresjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresmgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresmgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresmgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=dgmresmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmresnoneoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=dgmresmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmrespbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmrespbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmrespbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=dgmrespbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmressoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmressoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/dgmressoroptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=dgmressoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=fgmresasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=fgmresbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresgamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresgamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresgamgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=fgmresgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresgasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresgasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresgasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=fgmresgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmreshypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmreshypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmreshypreoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=fgmreshypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=fgmresjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresmgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresmgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresmgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=fgmresmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmresnoneoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=fgmresmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmrespbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmrespbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmrespbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=fgmrespbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmressoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmressoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/fgmressoroptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=fgmressoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gcrasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrbjacobioptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=gcrbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrgamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrgamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrgamgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gcrgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrgasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrgasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrgasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gcrgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrhypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrhypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrhypreoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gcrhypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gcrjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrmgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrmgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrmgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gcrmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrnoneoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gcrmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrpbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrpbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gcrpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrsoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrsoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gcrsoroptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gcrsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gltrasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gltrbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrgamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrgamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrgamgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gltrgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrgasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrgasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrgasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gltrgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrhypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrhypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrhypreoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gltrhypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gltrjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrmgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrmgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrmgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gltrmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrnoneoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gltrmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrpbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrpbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gltrpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrsoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrsoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gltrsoroptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gltrsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gmresasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gmresbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresgamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresgamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresgamgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gmresgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresgasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresgasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresgasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gmresgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmreshypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmreshypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmreshypreoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gmreshypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gmresjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresmgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresmgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresmgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gmresmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmresnoneoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gmresmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmrespbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmrespbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmrespbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gmrespbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmressoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmressoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/gmressoroptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=gmressoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgsasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgsbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsgamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsgamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsgamgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgsgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsgasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsgasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsgasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgsgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgshypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgshypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgshypreoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgshypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgsjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsmgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsmgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsmgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgsmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgsnoneoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgsmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgspbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgspbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgspbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgspbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgssoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgssoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/ibcgssoroptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgssoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/iluasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/iluasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/iluasmoptions.m	(revision 21239)
@@ -0,0 +1,17 @@
+function iluasm=iluasmoptions(varargin)
+%ILUASMOPTIONS - 
+%
+%   Usage:
+%      options=iluasmoptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+iluasm=struct();
+iluasm.toolkit='petsc';
+iluasm.mat_type=getfieldvalue(options,'mat_type','aij');
+iluasm.ksp_type=getfieldvalue(options,'ksp_type','gmres');
+iluasm.pc_type=getfieldvalue(options,'pc_type','asm');
+iluasm.sub_pc_type=getfieldvalue(options,'sub_pc_type','ilu');
+iluasm.pc_asm_overlap=getfieldvalue(options,'pc_asm_overlap',5);
+iluasm.ksp_max_it=getfieldvalue(options,'ksp_max_it',100);
+iluasm.ksp_rtol=getfieldvalue(options,'ksp_rtol',1e-15);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/iluasmoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/iluasmoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/iluasmoptions.py	(revision 21239)
@@ -0,0 +1,27 @@
+from collections import OrderedDict
+import pairoptions
+
+def iluasmoptions(*args):
+	"""
+	ILUASMOPTIONS - 
+
+	   Usage:
+	      options=iluasmoptions;
+	"""
+			 
+	#retrieve options provided in varargin
+	options=pairoptions.pairoptions(*args)
+	iluasm=OrderedDict()
+
+	#default iluasm options
+	iluasm['toolkit']='petsc'
+	iluasm['mat_type']=options.getfieldvalue('mat_type','aij')
+	iluasm['ksp_type']=options.getfieldvalue('ksp_type','gmres')
+	iluasm['pc_type']=options.getfieldvalue('pc_type','asm')
+	iluasm['sub_pc_type']=options.getfieldvalue('sub_pc_type','ilu')
+	iluasm['pc_asm_overlap']=options.getfieldvalue('pc_asm_overlap',5)
+	iluasm['ksp_max_it']=options.getfieldvalue('ksp_max_it',100)
+	iluasm['ksp_rtol']=options.getfieldvalue('ksp_rtol',1e-15)
+
+	return iluasm
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/issmgslsolver.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/issmgslsolver.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/issmgslsolver.js	(revision 21239)
@@ -0,0 +1,21 @@
+function issmgslsolver(){
+//ISSMSOLVER - 
+//
+//   Usage:
+//      options=issmsolver(varargin);
+
+	//Retrieve options provided in varargin. First convert arguments to array:
+	var args = Array.prototype.slice.call(arguments);
+
+	//Then process options
+	var  options = new pairoptions(args.slice(1,args.length));
+
+	//default issmoptions options
+	var issmoptions={};
+	issmoptions['toolkit']='issm';
+	issmoptions['mat_type']=options.getfieldvalue('mat_type','dense');
+	issmoptions['vec_type']=options.getfieldvalue('vec_type','seq');
+	issmoptions['solver_type']=options.getfieldvalue('solver_type','gsl');
+
+	return issmoptions;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/issmgslsolver.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/issmgslsolver.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/issmgslsolver.m	(revision 21239)
@@ -0,0 +1,15 @@
+function issmoptions=issmgslsolver(varargin)
+%ISSMSOLVER - 
+%
+%   Usage:
+%      options=issmsolver;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+issmoptions=struct();
+
+%default issmoptions options
+issmoptions.toolkit='issm';
+issmoptions.mat_type=getfieldvalue(options,'mat_type','dense');
+issmoptions.vec_type=getfieldvalue(options,'vec_type','seq');
+issmoptions.solver_type=getfieldvalue(options,'solver_type','gsl');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/issmgslsolver.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/issmgslsolver.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/issmgslsolver.py	(revision 21239)
@@ -0,0 +1,34 @@
+from collections import OrderedDict
+import pairoptions
+
+def issmgslsolver(*args):
+	#ISSMSOLVE - return issm solver options
+	#
+	#   Usage:
+	#      options=issmsolver;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(*args) 
+	
+	options=OrderedDict()
+	options['toolkit'] = 'issm'
+	options['mat_type'] = 'dense'
+	options['vec_type'] = 'seq'
+	options['solver_type'] = 'gsl'
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/issmmumpssolver.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/issmmumpssolver.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/issmmumpssolver.m	(revision 21239)
@@ -0,0 +1,15 @@
+function issmoptions=issmmumpssolver(varargin)
+%ISSMSOLVER - 
+%
+%   Usage:
+%      options=issmsolver;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+issmoptions=struct();
+
+%default issmoptions options
+issmoptions.toolkit='issm';
+issmoptions.mat_type=getfieldvalue(options,'mat_type','mpisparse');
+issmoptions.vec_type=getfieldvalue(options,'vec_type','mpi');
+issmoptions.solver_type=getfieldvalue(options,'solver_type','mumps');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/issmmumpssolver.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/issmmumpssolver.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/issmmumpssolver.py	(revision 21239)
@@ -0,0 +1,34 @@
+from collections import OrderedDict
+import pairoptions
+
+def issmmumpssolver(*args):
+	#ISSMSOLVE - return issm solver options
+	#
+	#   Usage:
+	#      options=issmsolver;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(*args) 
+	
+	options=OrderedDict()
+	options['toolkit'] = 'issm'
+	options['mat_type'] = 'mpidense'
+	options['vec_type'] = 'mpi'
+	options['solver_type'] = 'mumps'
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/jacobiasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/jacobiasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/jacobiasmoptions.m	(revision 21239)
@@ -0,0 +1,19 @@
+function jacobiasm=jacobiasmoptions(varargin)
+%ASMOPTIONS - return Additive Shwartz Method with Jacobi preconditioner petsc options
+%
+%   Usage:
+%      options=jacobiasmoptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+jacobiasm=struct();
+
+%default jacobiasm options
+jacobiasm.toolkit='petsc';
+jacobiasm.mat_type=getfieldvalue(options,'mat_type','aij');
+jacobiasm.ksp_type=getfieldvalue(options,'ksp_type','gmres');
+jacobiasm.pc_type=getfieldvalue(options,'pc_type','asm');
+jacobiasm.sub_pc_type=getfieldvalue(options,'sub_pc_type','jacobi');
+jacobiasm.pc_asm_overlap=getfieldvalue(options,'pc_asm_overlap',3);
+jacobiasm.ksp_max_it=getfieldvalue(options,'ksp_max_it',100);
+jacobiasm.ksp_rtol=getfieldvalue(options,'ksp_rtol',1e-15);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/jacobiasmoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/jacobiasmoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/jacobiasmoptions.py	(revision 21239)
@@ -0,0 +1,29 @@
+import pairoptions
+
+def jacobiasmoptions(*args):
+	#ASMOPTIONS - return Additive Shwartz Method with Jacobi preconditioner petsc options
+	#
+	#   Usage:
+	#      options=jacobiasmoptions;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(*args) 
+	
+	options=[['toolkit','petsc'],['mat_type','aij'],['ksp_type','gmres'],['pc_type','asm'],['sub_pc_type','jacobi'],['pc_asm_overlap',3],['ksp_max_it',100],['ksp_rtol',1e-15]];
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/jacobicgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/jacobicgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/jacobicgoptions.m	(revision 21239)
@@ -0,0 +1,16 @@
+function jacobicg=jacobiacgoptions(varargin)
+%ASMOPTIONS - return Additive Shwartz Method with Jacobi preconditioner petsc options
+%
+%   Usage:
+%      options=jacobiasmoptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+jacobicg=struct();
+
+%default jacobiasm options
+jacobicg.toolkit='petsc';
+jacobicg.mat_type=getfieldvalue(options,'mat_type','aij');
+jacobicg.ksp_type=getfieldvalue(options,'ksp_type','cg');
+jacobicg.ksp_max_it=getfieldvalue(options,'ksp_max_it',100);
+jacobicg.ksp_rtol=getfieldvalue(options,'ksp_rtol',1e-15);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/jacobicgoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/jacobicgoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/jacobicgoptions.py	(revision 21239)
@@ -0,0 +1,29 @@
+import pairoptions 
+
+def jacobicgoptions(*args):
+	#ASMOPTIONS - return Additive Shwartz Method with Jacobi preconditioner petsc options
+	#
+	#   Usage:
+	#      options=jacobicgoptions;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(*args) 
+	
+	options=[['toolkit','petsc'],['mat_type','aij'],['ksp_type','cg'],['ksp_max_it',100],['ksp_rtol',1e-15]];
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lcdasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lcdbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdgamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdgamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdgamgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lcdgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdgasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdgasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdgasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lcdgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdhypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdhypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdhypreoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lcdhypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lcdjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdmgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdmgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdmgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lcdmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdnoneoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lcdmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdpbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdpbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lcdpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdsoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdsoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lcdsoroptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lcdsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrgamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrgamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrgamgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrgasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrgasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrgasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrhypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrhypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrhypreoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrhypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrmgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrmgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrmgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrnoneoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrpbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrpbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrsoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrsoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/lsqrsoroptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/matlaboptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/matlaboptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/matlaboptions.m	(revision 21239)
@@ -0,0 +1,13 @@
+function maltab=matlaboptions(varargin)
+%MATLABOPTIONS - return Matlab petsc options
+%
+%   Usage:
+%      options=matlaboptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+maltab=struct();
+
+%default matlab options
+maltab.toolkit='petsc';
+maltab.ksp_type='matlab';
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/matlaboptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/matlaboptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/matlaboptions.py	(revision 21239)
@@ -0,0 +1,29 @@
+import pairoptions
+
+def matlaboptions(*args):
+	#MATLABOPTIONS - return Matlab petsc options
+	#
+	#   Usage:
+	#      options=matlaboptions;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(*args) 
+	
+	options=[['toolkit','petsc'],['ksp_type','matlab']];
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=minresasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=minresbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresgamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresgamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresgamgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=minresgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresgasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresgasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresgasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=minresgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minreshypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minreshypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minreshypreoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=minreshypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=minresjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresmgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresmgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresmgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=minresmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minresnoneoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=minresmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minrespbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minrespbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minrespbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=minrespbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minressoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minressoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/minressoroptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=minressoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/mumpsnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/mumpsnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/mumpsnoneoptions.m	(revision 21239)
@@ -0,0 +1,32 @@
+function mumps=mumpsoptions(varargin)
+%MUMPSOPTIONS - return MUMPS direct solver  petsc options
+%
+%   Usage:
+%      options=mumpsoptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+mumps=struct();
+
+%default mumps options
+PETSC_VERSION=IssmConfig('_PETSC_MAJOR_');
+if PETSC_VERSION==2.,
+	mumps.toolkit='petsc';
+	mumps.mat_type=getfieldvalue(options,'mat_type','aijmumps');
+	mumps.ksp_type=getfieldvalue(options,'ksp_type','preonly');
+	mumps.pc_type=getfieldvalue(options,'pc_type','lu');
+	mumps.mat_mumps_icntl_14=getfieldvalue(options,'mat_mumps_icntl_14',120);
+	mumps.pc_factor_shift_positive_definite=getfieldvalue(options,'pc_factor_shift_positive_definite','true');
+end
+
+if PETSC_VERSION==3.,
+	mumps.toolkit='petsc';
+	mumps.mat_type=getfieldvalue(options,'mat_type','mpiaij');
+	mumps.ksp_type=getfieldvalue(options,'ksp_type','preonly');
+	mumps.pc_type=getfieldvalue(options,'pc_type','lu');
+	mumps.pc_factor_mat_solver_package=getfieldvalue(options,'pc_factor_mat_solver_package','mumps');
+	mumps.mat_mumps_icntl_14=getfieldvalue(options,'mat_mumps_icntl_14',120);
+	mumps.pc_factor_shift_positive_definite=getfieldvalue(options,'pc_factor_shift_positive_definite','true');
+	mumps.mat_mumps_icntl_28=2; %1=serial, 2=parallel
+	mumps.mat_mumps_icntl_29=2; %parallel ordering 1 = ptscotch, 2 = parmetis
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/mumpsoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/mumpsoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/mumpsoptions.m	(revision 21239)
@@ -0,0 +1,34 @@
+function mumps=mumpsoptions(varargin)
+%MUMPSOPTIONS - return MUMPS direct solver  petsc options
+%
+%   Usage:
+%      options=mumpsoptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+mumps=struct();
+
+%default mumps options
+PETSC_VERSION=IssmConfig('_PETSC_MAJOR_');
+if PETSC_VERSION==2.,
+	mumps.toolkit='petsc';
+	mumps.mat_type=getfieldvalue(options,'mat_type','aijmumps');
+	mumps.ksp_type=getfieldvalue(options,'ksp_type','preonly');
+	mumps.pc_type=getfieldvalue(options,'pc_type','lu');
+	mumps.mat_mumps_icntl_14=getfieldvalue(options,'mat_mumps_icntl_14',120);
+	mumps.pc_factor_shift_positive_definite=getfieldvalue(options,'pc_factor_shift_positive_definite','true');
+end
+
+if PETSC_VERSION==3.,
+	mumps.toolkit='petsc';
+	mumps.mat_type=getfieldvalue(options,'mat_type','mpiaij');
+	mumps.ksp_type=getfieldvalue(options,'ksp_type','preonly');
+	mumps.pc_type=getfieldvalue(options,'pc_type','lu');
+	mumps.pc_factor_mat_solver_package=getfieldvalue(options,'pc_factor_mat_solver_package','mumps');
+	mumps.mat_mumps_icntl_14=getfieldvalue(options,'mat_mumps_icntl_14',120);
+	mumps.pc_factor_shift_positive_definite=getfieldvalue(options,'pc_factor_shift_positive_definite','true');
+
+	%These 2 lines make raijin break (ptwgts error during solver with PETSc 3.3)
+	%mumps.mat_mumps_icntl_28=2; %1=serial, 2=parallel
+	%mumps.mat_mumps_icntl_29=2; %parallel ordering 1 = ptscotch, 2 = parmetis
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/mumpsoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/mumpsoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/mumpsoptions.py	(revision 21239)
@@ -0,0 +1,36 @@
+from collections import OrderedDict
+import pairoptions
+from IssmConfig import IssmConfig
+
+def mumpsoptions(*args):
+	"""
+	MUMPSOPTIONS - return MUMPS direct solver  petsc options
+
+	   Usage:
+	      options=mumpsoptions;
+	"""
+
+	#retrieve options provided in varargin
+	options=pairoptions.pairoptions(*args)
+	mumps=OrderedDict()
+
+	#default mumps options
+	PETSC_VERSION=IssmConfig('_PETSC_MAJOR_')[0]
+	if PETSC_VERSION==2.:
+		mumps['toolkit']='petsc'
+		mumps['mat_type']=options.getfieldvalue('mat_type','aijmumps')
+		mumps['ksp_type']=options.getfieldvalue('ksp_type','preonly')
+		mumps['pc_type']=options.getfieldvalue('pc_type','lu')
+		mumps['mat_mumps_icntl_14']=options.getfieldvalue('mat_mumps_icntl_14',120)
+		mumps['pc_factor_shift_positive_definite']=options.getfieldvalue('pc_factor_shift_positive_definite','true')
+	if PETSC_VERSION==3.:
+		mumps['toolkit']='petsc'
+		mumps['mat_type']=options.getfieldvalue('mat_type','mpiaij')
+		mumps['ksp_type']=options.getfieldvalue('ksp_type','preonly')
+		mumps['pc_type']=options.getfieldvalue('pc_type','lu')
+		mumps['pc_factor_mat_solver_package']=options.getfieldvalue('pc_factor_mat_solver_package','mumps')
+		mumps['mat_mumps_icntl_14']=options.getfieldvalue('mat_mumps_icntl_14',120)
+		mumps['pc_factor_shift_positive_definite']=options.getfieldvalue('pc_factor_shift_positive_definite','true')
+
+	return mumps
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=richardsonasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=richardsonbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsongamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsongamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsongamgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=richardsongamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsongasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsongasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsongasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=richardsongasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonhypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonhypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonhypreoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=richardsonhypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=richardsonjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonmgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonmgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonmgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=richardsonmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonnoneoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=richardsonmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonpbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonpbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=richardsonpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonsoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonsoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/richardsonsoroptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=richardsonsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/solvers
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/solvers	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/solvers	(revision 21239)
@@ -0,0 +1,1 @@
+tfqmr symmlq stcg richardson minres lsqr lcd ibcgs gmres gltr gcr fgmres dgmres cr cgs cgne cg bigcg bcgsl bcgs
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/soroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/soroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/soroptions.m	(revision 21239)
@@ -0,0 +1,17 @@
+function sor=soroptions(varargin)
+%SOROPTIONS - return Relaxation Solver petsc options
+%
+%   Usage:
+%      options=soroptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+sor=struct();
+
+%default sor options
+sor.toolkit='petsc';
+sor.mat_type=getfieldvalue(options,'mat_type','aij');
+sor.ksp_type=getfieldvalue(options,'ksp_type','cg');
+sor.pc_type=getfieldvalue(options,'pc_type','sor');
+sor.pc_sor_omega=getfieldvalue(options,'pc_sor_omega',1.1);
+sor.pc_sor_its=getfieldvalue(options,'pc_sor_its',2);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/soroptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/soroptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/soroptions.py	(revision 21239)
@@ -0,0 +1,29 @@
+import pairoptions
+
+def soroptions(*args):
+	#SOROPTIONS - return Relaxation Solver petsc options
+	#
+	#   Usage:
+	#      options=soroptions;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(*args) 
+	
+	options=[['toolkit','petsc'],['mat_type','aij'],['ksp_type','cg'],['pc_type','sor'],['pc_sor_omega',1.1],['pc_sor_its',2]];
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=stcgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=stcgbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcggamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcggamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcggamgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=stcggamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcggasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcggasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcggasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=stcggasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcghypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcghypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcghypreoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=stcghypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=stcgjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgmgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgmgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgmgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=stcgmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgnoneoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=stcgmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgpbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgpbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=stcgpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgsoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgsoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stcgsoroptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=stcgsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stokesoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stokesoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stokesoptions.m	(revision 21239)
@@ -0,0 +1,22 @@
+function stokes=stokesoptions(varargin)
+%STOKESOPTIONS - return STOKES multi-physics solver petsc options
+%
+%   Usage:
+%      options=stokesoptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+stokes=struct();
+
+stokes.toolkit='petsc';
+stokes.mat_type=getfieldvalue(options,'mat_type','mpiaij');
+stokes.ksp_max_it=getfieldvalue(options,'ksp_max_it',1000);
+stokes.ksp_type=getfieldvalue(options,'ksp_type','gmres');
+stokes.pc_type=getfieldvalue(options,'pc_type','fieldsplit');
+stokes.pc_field_split_type=getfieldvalue(options,'pc_field_split_type','schur');
+stokes.fieldsplit_0_pc_type=getfieldvalue(options,'fieldsplit_0_pc_type','hypre');
+stokes.fieldsplit_0_ksp_type=getfieldvalue(options,'fieldsplit_0_ksp_type','gmres');
+stokes.fieldsplit_0_pc_hypre_type=getfieldvalue(options,'fieldsplit_0_pc_hypre_type','boomerang');
+stokes.fieldsplit_1_pc_type=getfieldvalue(options,'fieldsplit_1_pc_type','jacobi');
+stokes.fieldsplit_1_ksp_type=getfieldvalue(options,'fieldsplit_1_ksp_type','preonly');
+stokes.issm_option_solver=getfieldvalue(options,'issm_option_solver','stokes');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stokesoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stokesoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/stokesoptions.py	(revision 21239)
@@ -0,0 +1,39 @@
+import pairoptions
+from IssmConfig import IssmConfig
+
+def stokesoptions(*args):
+	#STOKESOPTIONS - return STOKES multi-physics solver petsc options
+	#
+	#   Usage:
+	#      options=stokesoptions;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(*args) 
+
+
+	#default stokes options
+	PETSC_VERSION=IssmConfig('_PETSC_MAJOR_')[0]
+
+	if PETSC_VERSION==2.:
+		raise RuntimeError('stokesoptions error message: multi-physics options not supported in Petsc 2')
+	if PETSC_VERSION==3.:
+		options=[['toolkit','petsc'],['mat_type','mpiaij'],['ksp_max_it',1000],['ksp_type','gmres'],['pc_type','fieldsplit'],['pc_field_split_type','schur'],\
+	['fieldsplit_0_pc_type','hypre'],['fieldsplit_0_ksp_type','gmres'],['fieldsplit_0_pc_hypre_type','boomerang'],\
+	['fieldsplit_1_pc_type','jacobi'],['fieldsplit_1_ksp_type','preonly'],['issm_option_solver','stokes']]
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqgamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqgamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqgamgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqgasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqgasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqgasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqhypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqhypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqhypreoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqhypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqmgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqmgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqmgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqnoneoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqpbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqpbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqsoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqsoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/symmlqsoroptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrasmoptions.m	(revision 21239)
@@ -0,0 +1,9 @@
+function solverOptions=tfqmrasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=tfqmrbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrgamgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrgamgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrgamgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=tfqmrgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrgasmoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrgasmoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrgasmoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=tfqmrgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrhypreoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrhypreoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrhypreoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=tfqmrhypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=tfqmrjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrmgoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrmgoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrmgoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=tfqmrmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrnoneoptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrnoneoptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrnoneoptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=tfqmrmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrpbjacobioptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrpbjacobioptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=tfqmrpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrsoroptions.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrsoroptions.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/solvers/tfqmrsoroptions.m	(revision 21239)
@@ -0,0 +1,10 @@
+function solverOptions=tfqmrsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/string/dewhite.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/string/dewhite.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/string/dewhite.m	(revision 21239)
@@ -0,0 +1,30 @@
+function sout = dewhite(s)
+%DEWHITE Dewhite. Strip trailing whitespace.
+%
+%   DEWHITE(S) removes leading and trailing white space and any null characters
+%   from the string S.  A null character is one that has an absolute value of
+%   0.
+%
+%   See also DDEWHITE, DEBLANK, DDEBLANK.
+
+%   Author:      Peter J. Acklam
+%   Time-stamp:  2003-10-13 11:12:52 +0200
+%   E-mail:      pjacklam@online.no
+%   URL:         http://home.online.no/~pjacklam
+
+   error(nargchk(1, 1, nargin));
+   if ~ischar(s)
+      error( 'Input must be a string (char array).' );
+   end
+
+   if isempty(s)
+      sout = s;
+      return;
+   end
+
+   [r, c] = find(~isspace(s));
+   if size(s, 1) == 1
+      sout = s(1:max(c));
+   else
+      sout = s(:,1:max(c));
+   end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/string/discardnum.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/string/discardnum.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/string/discardnum.m	(revision 21239)
@@ -0,0 +1,14 @@
+function string2=discardnum(string)
+%DISCARDNUM -  ??????
+%
+%   Usage:
+%      string2=discardnum(string)
+
+string2=string;
+
+for i=1:length(string),
+	if (((string(i)-0) <=57) & ((string(i)-0) >=48)),
+		string2=string(1:i-1);
+		break;
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/string/ismemberi.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/string/ismemberi.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/string/ismemberi.m	(revision 21239)
@@ -0,0 +1,26 @@
+function flag=ismemberi(string,list),
+%ISMEMBERI - return 1 if a string belongs to a list (case insensitive)
+%
+%   same function as Matlab's ismember except that it
+%   is case insensitive
+%
+%   Usage:
+%      flag=ismemberi(string,list);
+%
+%   Example:
+%      flag=ismemberi('test','{'test1','test2','test3'});
+
+if ~iscell(list)
+	error('ismemberi error message: the list of string must be a cell!')
+end
+
+%initialize output
+flag=0;
+
+%go through the list
+for i=1:length(list),
+	if strcmpi(string,list{i}),
+		flag=i;
+		return
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/m/string/strsplit_strict.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/m/string/strsplit_strict.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/m/string/strsplit_strict.m	(revision 21239)
@@ -0,0 +1,36 @@
+function splittedstring = strsplit_strict(inpstr,delimiter)
+%STRSPLIT_STRICT - split a string of delimiter separated values
+%
+%   Usage:
+%      output = strsplit_strict(inpstr,delimiter)
+
+%Check input arguments
+if(nargin ~= 2)
+    error('There is no argument defined');
+end
+
+%deblank string
+deblank(inpstr);
+
+%Get number of substrings
+idx  = findstr(inpstr,delimiter);
+if size(idx) == 0
+    splittedstring = {inpstr};
+else
+    sz = size(idx,2);
+    splittedstring = {};
+    %Loop through string and itinerate from delimiter to delimiter
+    for i = 1:sz
+        strtpos = 1;
+        endpos = idx(i)-1;
+        if i ~= 1
+            strtpos = idx(i-1)+1;
+        end
+        if i == sz
+            endpos = size(inpstr,2); 
+            splittedstring(i+1) = {inpstr(idx(i)+1 : endpos)};
+            endpos = idx(i)-1;
+        end
+        splittedstring(i) = {inpstr(strtpos : endpos)};   
+    end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/mobile/Makefile.am
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/mobile/Makefile.am	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/mobile/Makefile.am	(revision 21239)
@@ -0,0 +1,3 @@
+if ANDROID
+SUBDIRS = native
+endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/mobile/native/Main.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/mobile/native/Main.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/mobile/native/Main.cpp	(revision 21239)
@@ -0,0 +1,197 @@
+#include "../../c/main/issm.h"
+#include <cstddef>
+#include <stdio.h>
+
+//Android specific header includes: 
+#include <jni.h>
+#include <android/log.h>
+#include <android/log.h>
+
+//iOS specific header includes: 
+
+namespace gov_nasa_jpl_issm
+{
+	/*Global variables{{{*/
+	FemModel *fm;
+	double* xyz; /*keep vertices information here*/
+	/*}}}*/
+	jint Initialize(JNIEnv *env, jclass clazz, jstring jsolution_type, jstring jabsfile, jstring jrelfile) /*{{{*/
+	{
+		
+		/*arguments to constructor: */
+		int argc; //arguments to constructor.
+		char** argv = NULL;
+		const char* issmname = "issm.exe";
+		char *solution_type = NULL;
+		char *absfile = NULL;
+		char *relfile = NULL;
+		ISSM_MPI_Comm    comm=1;
+
+		/*log:*/
+		__android_log_print(ANDROID_LOG_INFO, "Native","Initializing FemModel");
+
+		/*retrieve from java machine: */
+		solution_type = (char*)env->GetStringUTFChars(jsolution_type,0);
+		absfile = (char*)env->GetStringUTFChars(jabsfile,0);
+		relfile = (char*)env->GetStringUTFChars(jrelfile,0);
+
+		/*creat arguments to call constructor for FemModel: */
+		argc=4; 
+		argv=(char**)malloc(argc*sizeof(char*));
+		argv[0]=(char*)issmname;
+		argv[1]=solution_type;
+		argv[2]=absfile;
+		argv[3]=relfile;
+		
+		/*call Model constructor passing in infile as File Descriptor parameter.*/
+		fm  = new FemModel(argc,argv,comm);
+
+		/*we'll need the toolkits activated right away to use matrices: */
+		ToolkitsOptionsFromAnalysis(fm->parameters,NoneAnalysisEnum);
+
+		/*release strings: */
+		env->ReleaseStringUTFChars(jsolution_type, solution_type); //must realease the char*
+		env->ReleaseStringUTFChars(jabsfile, absfile); //must realease the char*
+		env->ReleaseStringUTFChars(jrelfile, relfile); //must realease the char*
+
+		/*figure out size of solution: */
+		__android_log_print(ANDROID_LOG_INFO, "Native","Number of elements");
+		jint size = (jint) fm->elements->NumberOfElements();
+
+		/*retrieve vertices x,y and z coordinates: */
+		__android_log_print(ANDROID_LOG_INFO, "Native","Retrieving vertices");
+		xyz=fm->vertices->ToXYZ();
+		
+		/*log: */
+		__android_log_print(ANDROID_LOG_INFO, "Native","Done Initializing FemModel");
+
+		return size;
+
+	}
+	/*}}}*/
+	void Solve(JNIEnv *env, jclass clazz , jdouble alpha, jobject buf){ /*{{{*/
+
+		int i,count;
+		double x1,y1,z1,vel1;
+		double x2,y2,z2,vel2;
+		double x3,y3,z3,vel3;
+		int    v1,v2,v3,eid;
+		Patch* patch=NULL;
+		
+		/*log:*/
+		__android_log_print(ANDROID_LOG_INFO, "Native","Solving ");
+
+		/*retrieve buffer: */
+		jdouble *dBuf = (jdouble *)env->GetDirectBufferAddress(buf);
+
+		/*reset basal friction to what it was before: */
+		__android_log_print(ANDROID_LOG_INFO, "Native","alpha %g ",alpha);
+		
+		__android_log_print(ANDROID_LOG_INFO, "Native","ok-1");
+
+		InputDuplicatex(fm->elements,fm->nodes,fm->vertices,fm->loads,fm->materials,fm->parameters,AndroidFrictionCoefficientEnum,FrictionCoefficientEnum);
+		__android_log_print(ANDROID_LOG_INFO, "Native","ok0");
+
+		/*now scale friction by alpha: */
+		InputScalex(fm->elements,fm->nodes,fm->vertices,fm->loads,fm->materials,fm->parameters,FrictionCoefficientEnum,alpha/100);
+		__android_log_print(ANDROID_LOG_INFO, "Native","ok1");
+
+		/*solve: */
+		fm -> Solve();
+		__android_log_print(ANDROID_LOG_INFO, "Native","ok2");
+
+		/*retrieve results: */
+		__android_log_print(ANDROID_LOG_INFO, "Native","Retrieving results ");
+		//fm->elements->ProcessResultsUnits(); we are now in SI units
+		patch=fm->elements->ResultsToPatch();
+
+		/*sort out the velocities: */
+		for(i=0;i<patch->numrows;i++){
+			if ((patch->values[i*patch->numcols+0])==VelEnum){
+
+				/*Each row of the Patch object is made of the following information: 
+				  - the result enum_type, 
+				  - the step and time, 
+				  - the id of the element, 
+				  - the interpolation type, 
+				  - the vertices ids, 
+				  - and the values at the nodes (could be different from the vertices)
+				*/
+				eid=(int)patch->values[i*patch->numcols+3]-1;
+				v1=(int)patch->values[i*patch->numcols+5]; 
+				x1=xyz[3*(v1-1)+0]; y1=xyz[3*(v1-1)+1]; z1=xyz[3*(v1-1)+2];
+				
+				v2=(int)patch->values[i*patch->numcols+6];
+				x2=xyz[3*(v2-1)+0]; y2=xyz[3*(v2-1)+1]; z2=xyz[3*(v2-1)+2];
+				
+				v3=(int)patch->values[i*patch->numcols+7];
+				x3=xyz[3*(v3-1)+0]; y3=xyz[3*(v3-1)+1]; z3=xyz[3*(v3-1)+2];
+
+				vel1=patch->values[i*patch->numcols+8]; 
+				vel2=patch->values[i*patch->numcols+9]; 
+				vel3=patch->values[i*patch->numcols+10]; 
+
+				/*plug into dBuf: */
+				/*vertex 1: */
+				dBuf[12*eid+0]=x1;
+				dBuf[12*eid+1]=y1;
+				dBuf[12*eid+2]=z1;
+
+				/*vertex 2: */
+				dBuf[12*eid+3]=x2;
+				dBuf[12*eid+4]=y2;
+				dBuf[12*eid+5]=z2;
+			
+				/*vertex 3: */
+				dBuf[12*eid+6]=x3;
+				dBuf[12*eid+7]=y3;
+				dBuf[12*eid+8]=z3;
+				
+				/*values at 3 vertices: */
+				dBuf[12*eid+9]=vel1;
+				dBuf[12*eid+10]=vel2;
+				dBuf[12*eid+11]=vel3;
+
+			}
+		}
+
+		/*for(i=0;i<148;i++){
+		__android_log_print(ANDROID_LOG_INFO, "Native","%g %g %g | %g %g %g | %g %g %g | %g %g %g\n",
+				dBuf[12*i+0],dBuf[12*i+1],dBuf[12*i+2],
+				dBuf[12*i+3],dBuf[12*i+4],dBuf[12*i+5],
+				dBuf[12*i+6],dBuf[12*i+7],dBuf[12*i+8],
+				dBuf[12*i+9],dBuf[12*i+10],dBuf[12*i+11]);
+		}*/
+
+		/*delete temporary data:*/
+		delete patch;
+
+	}/*}}}*/
+	static JNINativeMethod method_table[] = /*{{{*/
+	{
+			{"createISSMModel"   ,"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I"  , (void *) Initialize},
+			{"solveISSMModel", "(DLjava/nio/DoubleBuffer;)V", (void *) Solve}
+	};
+	/*}}}*/
+}
+
+using namespace gov_nasa_jpl_issm;
+extern "C" jint JNI_OnLoad(JavaVM* vm, void* reserved) /*{{{*/
+{
+    JNIEnv* env;
+    if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
+        return -1;
+    }
+    else
+    {
+    	jclass clazz = env->FindClass("gov/nasa/jpl/issm/IssmJni");
+    	if(clazz)
+    	{
+    		env->RegisterNatives(clazz, method_table, 3);
+    		env->DeleteLocalRef(clazz);
+    		return JNI_VERSION_1_6;
+    	}
+    	else return -1;
+    }
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/mobile/native/Makefile.am
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/mobile/native/Makefile.am	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/mobile/native/Makefile.am	(revision 21239)
@@ -0,0 +1,7 @@
+#Generate JNI library
+lib_LTLIBRARIES = libIssmJni.la
+
+libIssmJni_la_SOURCES = Main.cpp
+libIssmJni_la_LIBADD = $(ISSM_DIR)/src/c/libISSMCore.a $(ISSM_DIR)/externalpackages/gsl/install/lib/libgsl.a $(ISSM_DIR)/externalpackages/gsl/install/lib/libgslcblas.a
+
+AM_LDFLAGS = -llog
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/boundaryconditions/PattynSMB.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/boundaryconditions/PattynSMB.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/boundaryconditions/PattynSMB.py	(revision 21239)
@@ -0,0 +1,50 @@
+import os
+import numpy as npy
+def PattynSMB(md,Tf):
+	"""
+    PATTYNSMB- Compute SMB over Antarctica (from Pattyn 2006, pg. 18, "GRANTISM: An ExcelTM model for Greenland 
+	and Antarctic ice-sheet response to climate changes")
+
+    Usage:
+      md=PattynSMB(md,Tf)
+
+      where Tf is a background forcing temperature ("an anomalous temperature relative to the present conditions)
+
+
+    See also: SETICESHELFBC, SETMARINEICESHEETBC
+	"""
+ 
+	# Tma    : Mean annual surface temperature in [deg C]
+	# Tms    : Mean summer temperature in [deg C]
+	# h      : Surface/bedrock elevation (I assume in meters but paper does not specify)
+	# phi    : Latitude in degrees SOUTH
+	# lambda : Longitude in degrees WEST
+	# Tf     : Background forcing temperature ("an anomalous temperature relative to the present conditions)
+	# ACCdot : Accumulation rate in units of [m/a] ice equivalent
+	# ABLdot : Surface ablation rate in [m/a] ice equivalent
+
+	#Double check lat and long exist:
+	if npy.any(npy.isnan(md.mesh.lat)): 
+		raise IOError('PattynSMB error message: md.mesh.lat field required')
+
+	# Calculate mean annual surface temperature, Eqn (11)
+	# Here, -0.012 is the atmospheric Lapse rate from sea level in deg/m.
+	# It is multiplied by surface elevation from sea level
+	Tma = -15.15 - 0.012*md.geometry.surface
+	
+
+	# Calculate summer temperature, Eqn (12)
+	# No melting at PIG in mean conditions - need about 6 degress Tf to start having a negative yearly SMB
+	Tms = 16.81 - 0.00692*md.geometry.surface - 0.27937*npy.abs(md.mesh.lat) + Tf
+	Tms= Tms[0]
+
+	# Calculate Accumulation perturbation with Tf forcing, Eqn (9)
+	ACCdot = 2.5*2**((Tma+Tf)/10.) - 2.5*2**(Tma/10.)
+
+	# Calculate Ablation, Eqn (10) (use for both Antarctica & Greenland), max melt is 10m/a
+	ABLdot=0.*npy.ones(md.mesh.numberofvertices)
+	pos=npy.nonzero(Tms>=0)
+	ABLdot[pos]=npy.minimum(1.4*Tms[pos],10)
+
+	smb=ACCdot-ABLdot
+	return smb[0]
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/boundaryconditions/SetIceSheetBC.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/boundaryconditions/SetIceSheetBC.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/boundaryconditions/SetIceSheetBC.py	(revision 21239)
@@ -0,0 +1,59 @@
+import os
+import numpy
+from ContourToMesh import ContourToMesh
+
+def SetIceSheetBC(md):
+	"""
+	SETICESHEETBC - Create the boundary conditions for stressbalance and thermal models for an IceSheet with no Ice Front
+
+	   Usage:
+	      md=SetIceSheetBC(md)
+
+	   See also: SETICESHELFBC, SETMARINEICESHEETBC
+	"""
+
+	#node on Dirichlet
+	pos=numpy.nonzero(md.mesh.vertexonboundary)
+	md.stressbalance.spcvx=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvy=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvz=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvx[pos]=0
+	md.stressbalance.spcvy[pos]=0
+	md.stressbalance.spcvz[pos]=0
+	md.stressbalance.referential=float('nan')*numpy.ones((md.mesh.numberofvertices,6))
+	md.stressbalance.loadingforce=0*numpy.ones((md.mesh.numberofvertices,3))
+
+	#Dirichlet Values
+	if isinstance(md.inversion.vx_obs,numpy.ndarray) and numpy.size(md.inversion.vx_obs,axis=0)==md.mesh.numberofvertices and isinstance(md.inversion.vy_obs,numpy.ndarray) and numpy.size(md.inversion.vy_obs,axis=0)==md.mesh.numberofvertices:
+		print("      boundary conditions for stressbalance model: spc set as observed velocities")
+		md.stressbalance.spcvx[pos]=md.inversion.vx_obs[pos]
+		md.stressbalance.spcvy[pos]=md.inversion.vy_obs[pos]
+	else:
+		print("      boundary conditions for stressbalance model: spc set as zero")
+
+	#No ice front -> do nothing
+
+	#Create zeros basalforcings and smb
+	md.smb.initialize(md)
+	md.basalforcings.initialize(md)
+
+	#Deal with other boundary conditions
+	if numpy.all(numpy.isnan(md.balancethickness.thickening_rate)):
+		md.balancethickness.thickening_rate=numpy.zeros((md.mesh.numberofvertices,1))
+		print("      no balancethickness.thickening_rate specified: values set as zero")
+	md.masstransport.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+	md.balancethickness.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+	md.damage.spcdamage=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+
+	if isinstance(md.initialization.temperature,numpy.ndarray) and numpy.size(md.initialization.temperature,axis=0)==md.mesh.numberofvertices:
+		md.thermal.spctemperature=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+		if hasattr(md.mesh,'vertexonsurface'):
+			pos=numpy.nonzero(md.mesh.vertexonsurface)[0]
+			md.thermal.spctemperature[pos]=md.initialization.temperature[pos]    #impose observed temperature on surface
+		if not isinstance(md.basalforcings.geothermalflux,numpy.ndarray) or not numpy.size(md.basalforcings.geothermalflux)==md.mesh.numberofvertices:
+			md.basalforcings.geothermalflux=50.*10**-3*numpy.ones((md.mesh.numberofvertices,1))    #50 mW/m^2
+	else:
+		print("      no thermal boundary conditions created: no observed temperature found")
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/boundaryconditions/SetIceShelfBC.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/boundaryconditions/SetIceShelfBC.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/boundaryconditions/SetIceShelfBC.py	(revision 21239)
@@ -0,0 +1,101 @@
+import os
+import numpy
+from ContourToMesh import ContourToMesh
+import MatlabFuncs as m
+
+def SetIceShelfBC(md,icefrontfile=''):
+	"""
+	SETICESHELFBC - Create the boundary conditions for stressbalance and thermal models for a  Ice Shelf with Ice Front
+
+	   Neumann BC are used on the ice front (an ARGUS contour around the ice front
+	   must be given in input)
+	   Dirichlet BC are used elsewhere for stressbalance
+
+	   Usage:
+	      md=SetIceShelfBC(md,varargin)
+
+	   Example:
+	      md=SetIceShelfBC(md);
+	      md=SetIceShelfBC(md,'Front.exp');
+
+	   See also: SETICESHEETBC, SETMARINEICESHEETBC
+	"""
+
+	#node on Dirichlet (boundary and ~icefront)
+	if icefrontfile:
+		if not os.path.exists(icefrontfile):
+			raise IOError("SetIceShelfBC error message: ice front file '%s' not found." % icefrontfile)
+		[nodeinsideicefront,dum]=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,icefrontfile,'node',2)
+		nodeonicefront=numpy.logical_and(md.mesh.vertexonboundary,nodeinsideicefront.reshape(-1))
+	else:
+		nodeonicefront=numpy.zeros((md.mesh.numberofvertices),bool)
+
+#	pos=find(md.mesh.vertexonboundary & ~nodeonicefront);
+	pos=numpy.nonzero(numpy.logical_and(md.mesh.vertexonboundary,numpy.logical_not(nodeonicefront)))[0]
+	md.stressbalance.spcvx=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvy=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvz=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.referential=float('nan')*numpy.ones((md.mesh.numberofvertices,6))
+	md.stressbalance.loadingforce=0*numpy.ones((md.mesh.numberofvertices,3))
+
+	#Icefront position
+	pos=numpy.nonzero(nodeonicefront)[0]
+	md.mask.ice_levelset[pos]=0
+
+	#First find segments that are not completely on the front
+	if m.strcmp(md.mesh.elementtype(),'Penta'):
+		numbernodesfront=4;
+	elif m.strcmp(md.mesh.elementtype(),'Tria'):
+		numbernodesfront=2;
+	else:
+		raise	error('mesh type not supported yet')
+	if any(md.mask.ice_levelset<=0):
+		values=md.mask.ice_levelset[md.mesh.segments[:,0:-1]-1]
+		segmentsfront=1-values
+		numpy.sum(segmentsfront,axis=1)!=numbernodesfront
+		segments=numpy.nonzero(numpy.sum(segmentsfront,axis=1)!=numbernodesfront)[0]
+		#Find all nodes for these segments and spc them
+		pos=md.mesh.segments[segments,0:-1]-1
+	else:
+		pos=numpy.nonzero(md.mesh.vertexonboundary)[0]
+	md.stressbalance.spcvx[pos]=0
+	md.stressbalance.spcvy[pos]=0
+	md.stressbalance.spcvz[pos]=0
+																													   
+	#Dirichlet Values
+	if isinstance(md.inversion.vx_obs,numpy.ndarray) and numpy.size(md.inversion.vx_obs,axis=0)==md.mesh.numberofvertices and isinstance(md.inversion.vy_obs,numpy.ndarray) and numpy.size(md.inversion.vy_obs,axis=0)==md.mesh.numberofvertices:
+		#reshape to rank-2 if necessary to match spc arrays
+		if numpy.ndim(md.inversion.vx_obs)==1:
+			md.inversion.vx_obs=md.inversion.vx_obs.reshape(-1,1)
+		if numpy.ndim(md.inversion.vy_obs)==1:
+			md.inversion.vy_obs=md.inversion.vy_obs.reshape(-1,1)
+		print("      boundary conditions for stressbalance model: spc set as observed velocities")
+		md.stressbalance.spcvx[pos]=md.inversion.vx_obs[pos]
+		md.stressbalance.spcvy[pos]=md.inversion.vy_obs[pos]
+	else:
+		print("      boundary conditions for stressbalance model: spc set as zero")
+
+	#Create zeros basalforcings and smb
+	md.smb.initialize(md)
+	md.basalforcings.initialize(md)
+
+	#Deal with other boundary conditions
+	if numpy.all(numpy.isnan(md.balancethickness.thickening_rate)):
+		md.balancethickness.thickening_rate=numpy.zeros((md.mesh.numberofvertices,1))
+		print("      no balancethickness.thickening_rate specified: values set as zero")
+	md.masstransport.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+	md.balancethickness.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+	md.damage.spcdamage=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+
+	if isinstance(md.initialization.temperature,numpy.ndarray) and numpy.size(md.initialization.temperature,axis=0)==md.mesh.numberofvertices:
+		md.thermal.spctemperature=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+		if hasattr(md.mesh,'vertexonsurface'):
+			pos=numpy.nonzero(md.mesh.vertexonsurface)[0]
+			md.thermal.spctemperature[pos]=md.initialization.temperature[pos]    #impose observed temperature on surface
+		if not isinstance(md.basalforcings.geothermalflux,numpy.ndarray) or not numpy.size(md.basalforcings.geothermalflux,axis=0)==md.mesh.numberofvertices:
+			md.basalforcings.geothermalflux=numpy.zeros((md.mesh.numberofvertices,1))
+	else:
+		print("      no thermal boundary conditions created: no observed temperature found")
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/boundaryconditions/SetMarineIceSheetBC.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/boundaryconditions/SetMarineIceSheetBC.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/boundaryconditions/SetMarineIceSheetBC.py	(revision 21239)
@@ -0,0 +1,111 @@
+import os
+import numpy
+from ContourToMesh import ContourToMesh
+import MatlabFuncs as m
+
+def SetMarineIceSheetBC(md,icefrontfile=''):
+	"""
+	SETICEMARINESHEETBC - Create the boundary conditions for stressbalance and thermal models for a  Marine Ice Sheet with Ice Front
+
+	   Neumann BC are used on the ice front (an ARGUS contour around the ice front
+	   can be given in input, or it will be deduced as onfloatingice & onboundary)
+	   Dirichlet BC are used elsewhere for stressbalance
+
+	   Usage:
+	      md=SetMarineIceSheetBC(md,icefrontfile)
+	      md=SetMarineIceSheetBC(md)
+
+	   Example:
+	      md=SetMarineIceSheetBC(md,'Front.exp')
+	      md=SetMarineIceSheetBC(md)
+
+	   See also: SETICESHELFBC, SETMARINEICESHEETBC
+	"""
+
+	#node on Dirichlet (boundary and ~icefront)
+	if icefrontfile:
+		#User provided Front.exp, use it
+		if not os.path.exists(icefrontfile):
+			raise IOError("SetMarineIceSheetBC error message: ice front file '%s' not found." % icefrontfile)
+		[incontour,dum]=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,icefrontfile,'node',2)
+		vertexonicefront=numpy.logical_and(md.mesh.vertexonboundary,incontour.reshape(-1))
+	else:
+		#Guess where the ice front is
+		vertexonfloatingice=numpy.zeros((md.mesh.numberofvertices,1))
+		pos=numpy.nonzero(numpy.sum(md.mask.groundedice_levelset[md.mesh.elements-1]<0.,axis=1) >0.)[0]
+		vertexonfloatingice[md.mesh.elements[pos].astype(int)-1]=1.
+		vertexonicefront=numpy.logical_and(numpy.reshape(md.mesh.vertexonboundary,(-1,1)),vertexonfloatingice>0.)
+
+#	pos=find(md.mesh.vertexonboundary & ~vertexonicefront);
+	pos=numpy.nonzero(numpy.logical_and(md.mesh.vertexonboundary,numpy.logical_not(vertexonicefront)))[0]
+	if not numpy.size(pos):
+		print("SetMarineIceSheetBC warning: ice front all around the glacier, no dirichlet found. Dirichlet must be added manually.")
+
+	md.stressbalance.spcvx=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvy=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvz=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.referential=float('nan')*numpy.ones((md.mesh.numberofvertices,6))
+	md.stressbalance.loadingforce=0*numpy.ones((md.mesh.numberofvertices,3))
+
+	#Position of ice front
+	pos=numpy.nonzero(vertexonicefront)[0]
+	md.mask.ice_levelset[pos]=0
+
+	#First find segments that are not completely on the front
+	if m.strcmp(md.mesh.elementtype(),'Penta'):
+		numbernodesfront=4
+	elif m.strcmp(md.mesh.elementtype(),'Tria'):
+		numbernodesfront=2
+	else:
+			raise Exception("Mesh type not supported")
+	if any(md.mask.ice_levelset<=0):
+		values=md.mask.ice_levelset[md.mesh.segments[:,0:-1]-1]
+		segmentsfront=1-values
+		numpy.sum(segmentsfront,axis=1)!=numbernodesfront
+		segments=numpy.nonzero(numpy.sum(segmentsfront,axis=1)!=numbernodesfront)[0]
+		#Find all nodes for these segments and spc them
+		pos=md.mesh.segments[segments,0:-1]-1
+	else:
+		pos=numpy.nonzero(md.mesh.vertexonboundary)[0]
+	md.stressbalance.spcvx[pos]=0
+	md.stressbalance.spcvy[pos]=0
+	md.stressbalance.spcvz[pos]=0
+
+	#Dirichlet Values
+	if isinstance(md.inversion.vx_obs,numpy.ndarray) and numpy.size(md.inversion.vx_obs,axis=0)==md.mesh.numberofvertices and isinstance(md.inversion.vy_obs,numpy.ndarray) and numpy.size(md.inversion.vy_obs,axis=0)==md.mesh.numberofvertices:
+		print("      boundary conditions for stressbalance model: spc set as observed velocities")
+		md.stressbalance.spcvx[pos]=md.inversion.vx_obs[pos]
+		md.stressbalance.spcvy[pos]=md.inversion.vy_obs[pos]
+	else:
+		print("      boundary conditions for stressbalance model: spc set as zero")
+
+	md.hydrology.spcwatercolumn=numpy.zeros((md.mesh.numberofvertices,2))
+	pos=numpy.nonzero(md.mesh.vertexonboundary)[0]
+	md.hydrology.spcwatercolumn[pos,0]=1
+
+	#Create zeros basalforcings and smb
+	md.smb.initialize(md)
+	md.basalforcings.initialize(md)
+
+	#Deal with other boundary conditions
+	if numpy.all(numpy.isnan(md.balancethickness.thickening_rate)):
+		md.balancethickness.thickening_rate=numpy.zeros((md.mesh.numberofvertices,1))
+		print("      no balancethickness.thickening_rate specified: values set as zero")
+
+	md.masstransport.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+	md.balancethickness.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+	md.damage.spcdamage=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+
+	if isinstance(md.initialization.temperature,numpy.ndarray) and numpy.size(md.initialization.temperature,axis=0)==md.mesh.numberofvertices:
+		md.thermal.spctemperature=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+		if hasattr(md.mesh,'vertexonsurface'):
+			pos=numpy.nonzero(md.mesh.vertexonsurface)[0]
+			md.thermal.spctemperature[pos]=md.initialization.temperature[pos]    #impose observed temperature on surface
+		if not isinstance(md.basalforcings.geothermalflux,numpy.ndarray) or not numpy.size(md.basalforcings.geothermalflux,axis=0)==md.mesh.numberofvertices:
+			md.basalforcings.geothermalflux=numpy.zeros((md.mesh.numberofvertices,1))
+			md.basalforcings.geothermalflux[numpy.nonzero(md.mask.groundedice_levelset>0.)]=50.*10.**-3    #50mW/m2
+	else:
+		print("      no thermal boundary conditions created: no observed temperature found")
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/SMBcomponents.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/SMBcomponents.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/SMBcomponents.py	(revision 21239)
@@ -0,0 +1,96 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import *
+from project3d import *
+from WriteData import *
+
+class SMBcomponents(object):
+	"""
+	SMBcomponents Class definition
+
+	   Usage:
+	      SMBcomponents=SMBcomponents();
+	"""
+
+	def __init__(self): # {{{
+		self.accumulation = float('NaN')
+		self.runoff = float('NaN')
+		self.evaporation = float('NaN')
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters (SMB=accumulation-runoff-evaporation) :"
+		string="%s\n%s"%(string,fielddisplay(self,'accumulation','accumulated snow [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'runoff','amount of ice melt lost from the ice column [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'evaporation','mount of ice lost to evaporative processes [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		self.mass_balance=project3d(md,'vector',self.accumulation,'type','node');
+		self.mass_balance=project3d(md,'vector',self.runoff,'type','node');
+		self.mass_balance=project3d(md,'vector',self.evaporation,'type','node');
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.accumulation)):
+			self.accumulation=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMB.accumulation specified: values set as zero")
+
+		if numpy.all(numpy.isnan(self.runoff)):
+			self.runoff=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMB.runoff specified: values set as zero")
+
+		if numpy.all(numpy.isnan(self.evaporation)):
+			self.evaporation=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMB.evaporation specified: values set as zero")
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1,'Inf',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.runoff','timeseries',1,'NaN',1,'Inf',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.runoff','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1,'Inf',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+		
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',SmbEnum(),'data',SMBcomponentsEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/SMBd18opdd.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/SMBd18opdd.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/SMBd18opdd.py	(revision 21239)
@@ -0,0 +1,138 @@
+import numpy
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+from project3d import project3d
+
+class SMBd18opdd(object):
+	"""
+	SMBd18opdd Class definition
+
+	   Usage:
+	      SMBd18opdd=SMBd18opdd();
+	"""
+
+	def __init__(self): # {{{
+		self.desfac                    = 0.
+		self.s0p                       = float('NaN')
+		self.s0t                       = float('NaN')
+		self.rlaps                     = 0.
+		self.rlapslgm                  = 0.
+		self.dpermil                   = 0.
+		self.Tdiff                     = float('NaN')
+		self.sealev                    = float('NaN')
+		self.ismungsm                  = 0
+		self.isd18opd                  = 0
+		self.delta18o                  = float('NaN')
+		self.delta18o_surface          = float('NaN')
+		self.temperatures_presentday   = float('NaN')
+		self.precipitations_presentday = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,'isd18opd','is delta18o parametrisation from present day temperature and precipitation activated (0 or 1, default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'s0t','should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'rlaps','present day lapse rate [degree/km]'))
+		if self.isd18opd:
+			string="%s\n%s"%(string,fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated'))
+			string="%s\n%s"%(string,fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+			string="%s\n%s"%(string,fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and delta18o activated'))
+			string="%s\n%s"%(string,fielddisplay(self,'dpermil','degree per mil, required if d18opd is activated'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		if self.isd18opd: self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node')
+		if self.isd18opd: self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node')
+		self.s0p=project3d(md,'vector',self.s0p,'type','node')
+		self.s0t=project3d(md,'vector',self.s0t,'type','node')
+
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.s0p)):
+			self.s0p=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMBd18opdd.s0p specified: values set as zero")
+
+		if numpy.all(numpy.isnan(self.s0t)):
+			self.s0t=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMBd18opdd.s0t specified: values set as zero")
+			
+		return self
+	# }}}
+	def setdefaultparameters(self): # {{{
+
+		#pdd method not used in default mode
+		self.ismungsm   = 0
+		self.isd18opd   = 1
+		self.desfac     = 0.5
+		self.rlaps      = 6.5 
+		self.rlapslgm   = 6.5
+		self.dpermil    = 2.4
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',[1])
+			md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',[1])
+			md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',[1])
+
+			if self.isd18opd:
+				md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.dpermil','>=',0,'numel',[1])
+		
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',SmbEnum(),'data',SMBd18opddEnum(),'format','Integer')
+
+		WriteData(fid,'object',self,'class','smb','fieldname','ismungsm','format','Boolean')
+		WriteData(fid,'object',self,'class','smb','fieldname','isd18opd','format','Boolean')
+		WriteData(fid,'object',self,'class','smb','fieldname','desfac','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','smb','fieldname','rlaps','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','rlapslgm','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2)
+		WriteData(fid,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2)
+
+		if self.isd18opd:
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','dpermil','format','Double')
+			
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/SMBforcing.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/SMBforcing.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/SMBforcing.py	(revision 21239)
@@ -0,0 +1,68 @@
+import numpy
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+from project3d import project3d
+
+class SMBforcing(object):
+	"""
+	SMBforcing Class definition
+
+	   Usage:
+	      SMB=SMBforcing();
+	"""
+
+	def __init__(self): # {{{
+		self.mass_balance = float('NaN')
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters:"
+		string="%s\n%s"%(string,fielddisplay(self,'mass_balance','surface mass balance [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		self.mass_balance=project3d(md,'vector',self.mass_balance,'type','node');
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.mass_balance)):
+			self.mass_balance=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMBforcing.mass_balance specified: values set as zero")
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.mass_balance','timeseries',1,'NaN',1,'Inf',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.mass_balance','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',SmbEnum(),'data',SMBforcingEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','smb','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/SMBgradients.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/SMBgradients.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/SMBgradients.py	(revision 21239)
@@ -0,0 +1,77 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+from project3d import project3d
+
+class SMBgradients(object):
+	"""
+	SMBgradients Class definition
+
+	   Usage:
+	      SMBgradients=SMBgradients();
+	"""
+
+	def __init__(self): # {{{
+		self.href    = float('NaN')
+		self.smbref  = float('NaN')
+		self.b_pos   = float('NaN')
+		self.b_neg   = float('NaN')
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,'issmbgradients','is smb gradients method activated (0 or 1, default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'href',' reference elevation from which deviation is used to calculate SMB adjustment in smb gradients method'))
+		string="%s\n%s"%(string,fielddisplay(self,'smbref',' reference smb from which deviation is calculated in smb gradients method'))
+		string="%s\n%s"%(string,fielddisplay(self,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated'))
+		string="%s\n%s"%(string,fielddisplay(self,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		#Nothing for now
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		#Nothing for now
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.href','timeseries',1,'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','smb.smbref','timeseries',1,'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','smb.b_pos','timeseries',1,'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','smb.b_neg','timeseries',1,'NaN',1,'Inf',1)
+
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',SmbEnum(),'data',SMBgradientsEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','smb','fieldname','href','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/SMBmeltcomponents.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/SMBmeltcomponents.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/SMBmeltcomponents.py	(revision 21239)
@@ -0,0 +1,108 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import *
+from project3d import *
+from WriteData import *
+
+class SMBmeltcomponents(object):
+	"""
+	SMBmeltcomponents Class definition
+
+	   Usage:
+	      SMBmeltcomponents=SMBmeltcomponents();
+	"""
+
+	def __init__(self): # {{{
+		self.accumulation = float('NaN')
+		self.runoff = float('NaN')
+		self.evaporation = float('NaN')
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters with melt (SMB=accumulation-evaporation-melt+refreeze) :"
+		string="%s\n%s"%(string,fielddisplay(self,'accumulation','accumulated snow [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'evaporation','mount of ice lost to evaporative processes [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'melt','amount of ice melt in the ice column [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'refreeze','amount of ice melt refrozen in the ice column [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		self.mass_balance=project3d(md,'vector',self.accumulation,'type','node');
+		self.mass_balance=project3d(md,'vector',self.evaporation,'type','node');
+		self.mass_balance=project3d(md,'vector',self.melt,'type','node');
+		self.mass_balance=project3d(md,'vector',self.refreeze,'type','node');
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.accumulation)):
+			self.accumulation=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMB.accumulation specified: values set as zero")
+
+		if numpy.all(numpy.isnan(self.evaporation)):
+			self.evaporation=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMB.evaporation specified: values set as zero")
+
+		if numpy.all(numpy.isnan(self.melt)):
+			self.melt=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMB.melt specified: values set as zero")
+
+		if numpy.all(numpy.isnan(self.refreeze)):
+			self.refreeze=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMB.refreeze specified: values set as zero")
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1,'Inf',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.melt','timeseries',1,'NaN',1,'Inf',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.melt','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.refreeze','timeseries',1,'NaN',1,'Inf',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.refreeze','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1,'Inf',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',SmbEnum(),'data',SMBmeltcomponentsEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','melt','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','refreeze','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/SMBpdd.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/SMBpdd.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/SMBpdd.py	(revision 21239)
@@ -0,0 +1,194 @@
+import numpy
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+from project3d import project3d
+
+class SMBpdd(object):
+	"""
+	SMBpdd Class definition
+
+	   Usage:
+	      SMBpdd=SMBpdd();
+	"""
+
+	def __init__(self): # {{{
+		self.precipitation             = float('NaN')
+		self.monthlytemperatures       = float('NaN')
+		self.desfac                    = 0.
+		self.s0p                       = float('NaN')
+		self.s0t                       = float('NaN')
+		self.rlaps                     = 0.
+		self.rlapslgm                  = 0.
+		self.Pfac                      = float('NaN')
+		self.Tdiff                     = float('NaN')
+		self.sealev                    = float('NaN')
+		self.isdelta18o                = 0
+		self.ismungsm                  = 0
+		self.delta18o                  = float('NaN')
+		self.delta18o_surface          = float('NaN')
+		self.temperatures_presentday   = float('NaN')
+		self.temperatures_lgm          = float('NaN')
+		self.precipitations_presentday = float('NaN')
+		self.precipitations_lgm        = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,'isdelta18o','is temperature and precipitation delta18o parametrisation activated (0 or 1, default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'ismungsm','is temperature and precipitation mungsm parametrisation activated (0 or 1, default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'s0t','should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'rlaps','present day lapse rate [degree/km]'))
+		string="%s\n%s"%(string,fielddisplay(self,'rlapslgm','LGM lapse rate [degree/km]'))
+		if not (self.isdelta18o and self.ismungsm):
+			string="%s\n%s"%(string,fielddisplay(self,'monthlytemperatures',['monthly surface temperatures [K], required if pdd is activated and delta18o not activated']))
+			string="%s\n%s"%(string,fielddisplay(self,'precipitation',['monthly surface precipitation [m/yr water eq], required if pdd is activated and delta18o or mungsm not activated']))
+			if self.isdelta18o:
+				string="%s\n%s"%(string,fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and delta18o activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated'))
+			if self.ismungsm:
+				string="%s\n%s"%(string,fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'Pfac','time interpolation parameter for precipitation, 1D(year), required if mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+				
+		return string
+	# }}}
+	def extrude(self,md): # {{{
+
+		if not (self.isdelta18o and self.ismungsm):
+			self.precipitation=project3d(md,'vector',self.precipitation,'type','node')
+			self.monthlytemperatures=project3d(md,'vector',self.monthlytemperatures,'type','node')
+		if self.isdelta18o: self.temperatures_lgm=project3d(md,'vector',self.temperatures_lgm,'type','node')
+		if self.isdelta18o: self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node')
+		if self.isdelta18o: self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node')
+		if self.isdelta18o: self.precipitations_lgm=project3d(md,'vector',self.precipitations_lgm,'type','node')
+		if self.ismungsm: self.temperatures_lgm=project3d(md,'vector',self.temperatures_lgm,'type','node')
+		if self.ismungsm: self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node')
+		if self.ismungsm: self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node')
+		if self.ismungsm: self.precipitations_lgm=project3d(md,'vector',self.precipitations_lgm,'type','node')
+		self.s0p=project3d(md,'vector',self.s0p,'type','node')
+		self.s0t=project3d(md,'vector',self.s0t,'type','node')
+
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.s0p)):
+			self.s0p=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMBpdd.s0p specified: values set as zero")
+
+		if numpy.all(numpy.isnan(self.s0t)):
+			self.s0t=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMBpdd.s0t specified: values set as zero")
+
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		#pdd method not used in default mode
+		self.isdelta18o = 0
+		self.ismungsm   = 0
+		self.desfac     = 0.5
+		self.rlaps      = 6.5 
+		self.rlapslgm   = 6.5
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',[1])
+			md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',[1])
+			md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',[1])
+
+			if (self.isdelta18o==0 and self.ismungsm==0):
+				md = checkfield(md,'fieldname','smb.monthlytemperatures','NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitation','NaN',1,'Inf',1,'timeseries',1)
+			elif self.isdelta18o:
+				md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.delta18o_surface','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)                                       
+				md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.sealev','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+			elif self.ismungsm:
+				md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)                                       
+				md = checkfield(md,'fieldname','smb.Pfac','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.sealev','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+		return md
+	#}}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',SmbEnum(),'data',SMBpddEnum(),'format','Integer')
+
+		WriteData(fid,'object',self,'class','smb','fieldname','isdelta18o','format','Boolean')
+		WriteData(fid,'object',self,'class','smb','fieldname','ismungsm','format','Boolean')
+		WriteData(fid,'object',self,'class','smb','fieldname','desfac','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','smb','fieldname','rlaps','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','rlapslgm','format','Double')
+
+		if (self.isdelta18o==0 and self.ismungsm==0):
+			WriteData(fid,'object',self,'class','smb','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		elif self.isdelta18o:
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','delta18o_surface','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2)			
+		elif self.ismungsm:
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','Pfac','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2)
+			
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/adinversion.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/adinversion.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/adinversion.py	(revision 21239)
@@ -0,0 +1,202 @@
+"""
+== == == == == == == == == == == == == == == == == == ==
+Auto generated python script for ISSM:   /home/andrei/issm/trunk-jpl/src/m/classes/adinversion.m
+Created on 2015-05-15 via translateToPy.py Ver 1.0 by andrei
+== == == == == == == == == == == == == == == == == == ==
+
+Matlab script conversion into python
+translateToPy.py Author: Michael Pellegrin
+translateToPy.py Date: 09/24/12
+== == == == == == == == == == == == == == == == == == ==
+"""
+
+from MatlabFuncs import *
+
+from EnumDefinitions import *
+from numpy import *
+
+# ADINVERSION class definition
+
+# 
+
+#    Usage:
+
+#       adinversion=adinversion();
+
+
+
+class adinversion:
+	def __init__(self): 
+		iscontrol                   = 0
+		control_parameters          = float('Nan')
+		control_scaling_factors     = float('Nan')
+		maxsteps                    = 0
+		maxiter                     = 0
+		dxmin                       = 0
+		gttol                       = 0
+		cost_functions              = float('Nan')
+		cost_functions_coefficients = float('Nan')
+		min_parameters              = float('Nan')
+		max_parameters              = float('Nan')
+		vx_obs                      = float('Nan')
+		vy_obs                      = float('Nan')
+		vz_obs                      = float('Nan')
+		vel_obs                     = float('Nan')
+		thickness_obs               = float('Nan')
+		surface_obs                 = float('Nan')
+
+	def setdefaultparameters(self):
+
+		self.control_parameters=['FrictionCoefficient']
+
+
+# 		Scaling factor for each control
+		self.control_scaling_factors=1
+
+# 		number of iterations
+		self.maxsteps=20
+		self.maxiter=40
+
+#		several responses can be used:
+		self.cost_functions=['FrictionCoefficient']
+
+# 		m1qn3 parameters
+		self.dxmin  = 0.1
+		self.gttol = 1e-4
+
+		return self
+	
+	def checkconsistency(self, md, solution, analyses): 
+
+# 			Early return
+		if not self.iscontrol:
+			return
+
+		if not IssmConfig('_HAVE_M1QN3_'):
+			md = checkmessage(md,['M1QN3 has not been installed, ISSM needs to be reconfigured and recompiled with AD'])
+
+
+		num_controls=numpy.numel(md.inversion.control_parameters)
+		num_costfunc=numpy.size(md.inversion.cost_functions,2)
+
+
+		md = checkfield(md,'fieldname','inversion.iscontrol','values',[0, 1])
+		md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',\
+			['BalancethicknessThickeningRate' 'FrictionCoefficient' 'MaterialsRheologyBbar' 'DamageDbar',\
+			'Vx' 'Vy' 'Thickness' 'BalancethicknessOmega' 'BalancethicknessApparentMassbalance'])
+		md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[1, num_controls],'>',0,float('Nan'),1)
+		md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.maxiter','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.dxmin','numel',1,'>',0)
+		md = checkfield(md,'fieldname','inversion.gttol','numel',1,'>',0)
+		md = checkfield(md,'fieldname','inversion.cost_functions','size',[1, num_costfunc],'values', [i for i in range(101,106)]+[201]+[i for i in range(501,507)]+[i for i in range(601,605)]+[i for i in range(1001, 1011)])
+		md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices, num_costfunc],'>=',0)
+		md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices, num_controls])
+		md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices, num_controls])
+
+
+		if solution==BalancethicknessSolutionEnum():
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)
+			md = checkfield(md,'fieldname','inversion.surface_obs','size',[md.mesh.numberofvertices, 1], float('Nan'),1)
+		elif solution==BalancethicknessSoftSolutionEnum():
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)
+		else:
+			md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)
+			if not numpy.strcmp(domaintype(md.mesh),'2Dvertical'):
+				md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)
+		return md
+
+	def __repr__(self):
+		string = '   adinversion parameters:'
+		string ="%s\n\%s"%(string, fielddisplay(self,'iscontrol','is inversion activated?'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'control_parameters','ex: [''FrictionCoefficient''], or [''MaterialsRheologyBbar'']'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'maxsteps','maximum number of iterations (gradient computation)'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'maxiter','maximum number of Function evaluation (forward run)'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'dxmin','convergence criterion: two points less than dxmin from eachother (sup-norm) are considered identical'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'cost_functions','indicate the type of response for each optimization step'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'vx_obs','observed velocity x component [m/yr]'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'vy_obs','observed velocity y component [m/yr]'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'thickness_obs','observed thickness [m]'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'surface_obs','observed surface elevation [m]'))
+		string ="%s\n%s"%(string,'Available cost functions:');
+		string ="%s\n%s"%(string,'   101: SurfaceAbsVelMisfit');
+		string ="%s\n%s"%(string,'   102: SurfaceRelVelMisfit');
+		string ="%s\n%s"%(string,'   103: SurfaceLogVelMisfit');
+		string ="%s\n%s"%(string,'   104: SurfaceLogVxVyMisfit');
+		string ="%s\n%s"%(string,'   105: SurfaceAverageVelMisfit');
+		string ="%s\n%s"%(string,'   201: ThicknessAbsMisfit');
+		string ="%s\n%s"%(string,'   501: DragCoefficientAbsGradient');
+		string ="%s\n%s"%(string,'   502: RheologyBbarAbsGradient');
+		string ="%s\n%s"%(string,'   503: ThicknessAbsGradient');
+		
+		return string
+
+	def marshall(self):
+
+		yts=365.0*24.0*3600.0;
+
+		WriteData(fid,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean');
+		WriteData(fid,'enum',InversionTypeEnum(),'data',4,'format','Integer');
+		if not self.iscontrol:
+			return
+		WriteData(fid,'object',self,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3);
+		WriteData(fid,'object',self,'class','inversion','fieldname','maxsteps','format','Integer');
+		WriteData(fid,'object',self,'class','inversion','fieldname','maxiter','format','Integer');
+		WriteData(fid,'object',self,'class','inversion','fieldname','dxmin','format','Double');
+		WriteData(fid,'object',self,'class','inversion','fieldname','gttol','format','Double');
+		WriteData(fid,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
+		WriteData(fid,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
+		WriteData(fid,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+		WriteData(fid,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+		WriteData(fid,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+		if(numel(self.thickness_obs)==md.mesh.numberofelements):
+			mattype=2;
+		else:
+			mattype=1;
+		
+		WriteData(fid,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
+		WriteData(fid,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
+
+		#process control parameters
+		num_control_parameters = numpy.numel(self.control_parameters);
+		data = numpy.array([StringToEnum(self.control_parameter[0]) for control_parameter in self.control_parameters]).reshape(1,-1)
+
+		WriteData(fid,'data',data,'enum',InversionControlParametersEnum(),'format','DoubleMat','mattype',3);
+		WriteData(fid,'data',num_control_parameters,'enum',InversionNumControlParametersEnum(),'format','Integer');
+
+		#process cost functions
+		num_cost_functions=numpy.size(self.cost_functions,2);
+		data=copy.deepcopy(self.cost_functions)
+		data[numpy.nonzero(self.cost_functions==101)] =SurfaceAbsVelMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==102)]=SurfaceRelVelMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==103)]=SurfaceLogVelMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==104)]=SurfaceLogVxVyMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==105)]=SurfaceAverageVelMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==201)]=ThicknessAbsMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==501)]=DragCoefficientAbsGradientEnum();
+		data[numpy.nonzero(self.cost_functions==502)]=RheologyBbarAbsGradientEnum();
+		data[numpy.nonzero(self.cost_functions==503)]=ThicknessAbsGradientEnum();
+		data[numpy.nonzero(self.cost_functions==504)]=ThicknessAlongGradientEnum();
+		data[numpy.nonzero(self.cost_functions==505)]=ThicknessAcrossGradientEnum();
+		data[numpy.nonzero(self.cost_functions==506)]=BalancethicknessMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==601)]=SurfaceAbsMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==1001)]=Outputdefinition1Enum();
+		data[numpy.nonzero(self.cost_functions==1002)]=Outputdefinition2Enum();
+		data[numpy.nonzero(self.cost_functions==1003)]=Outputdefinition3Enum();
+		data[numpy.nonzero(self.cost_functions==1004)]=Outputdefinition4Enum();
+		data[numpy.nonzero(self.cost_functions==1005)]=Outputdefinition5Enum();
+		data[numpy.nonzero(self.cost_functions==1006)]=Outputdefinition6Enum();
+		data[numpy.nonzero(self.cost_functions==1007)]=Outputdefinition7Enum();
+		data[numpy.nonzero(self.cost_functions==1008)]=Outputdefinition8Enum();
+		data[numpy.nonzero(self.cost_functions==1009)]=Outputdefinition8Enum();
+		data[numpy.nonzero(self.cost_functions==1010)]=Outputdefinition10Enum();
+		WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3);
+		WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer');
+		
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/autodiff.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/autodiff.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/autodiff.py	(revision 21239)
@@ -0,0 +1,215 @@
+import numpy
+from dependent import dependent
+from independent import independent
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class autodiff(object):
+	"""
+	AUTODIFF class definition
+
+	   Usage:
+	      autodiff=autodiff();
+	"""
+	def __init__(self,*args):    # {{{
+		self.isautodiff   = False
+		self.dependents   = []
+		self.independents = []
+		self.driver       = 'fos_forward'
+		self.obufsize     = float('NaN')
+		self.lbufsize     = float('NaN')
+		self.cbufsize     = float('NaN')
+		self.tbufsize     = float('NaN')
+		self.gcTriggerMaxSize     = float('NaN')
+		self.gcTriggerRatio     = float('NaN')
+		if not len(args):
+			self.setdefaultparameters()
+		else:
+			raise RuntimeError("constructor not supported")
+	# }}}
+	def __repr__(self):    # {{{
+		s ="      automatic differentiation parameters:\n"
+
+		s+="%s\n" % fielddisplay(self,'isautodiff',"indicates if the automatic differentiation is activated")
+		s+="%s\n" % fielddisplay(self,'dependents',"list of dependent variables")
+		s+="%s\n" % fielddisplay(self,'independents',"list of independent variables")
+		s+="%s\n" % fielddisplay(self,'driver',"ADOLC driver ('fos_forward' or 'fov_forward')")
+		s+="%s\n" % fielddisplay(self,'obufsize',"Number of operations per buffer (==OBUFSIZE in usrparms.h)")
+		s+="%s\n" % fielddisplay(self,'lbufsize',"Number of locations per buffer (==LBUFSIZE in usrparms.h)")
+		s+="%s\n" % fielddisplay(self,'cbufsize',"Number of values per buffer (==CBUFSIZE in usrparms.h)")
+		s+="%s\n" % fielddisplay(self,'tbufsize',"Number of taylors per buffer (<=TBUFSIZE in usrparms.h)")
+		s+="%s\n" % fielddisplay(self,'gcTriggerRatio',"free location block sorting/consolidation triggered if the ratio between allocated and used locations exceeds gcTriggerRatio")
+		s+="%s\n" % fielddisplay(self,'gcTriggerMaxSize',"free location block sorting/consolidation triggered if the allocated locations exceed gcTriggerMaxSize)")
+
+		return s
+	# }}}
+	def setdefaultparameters(self):    # {{{
+		
+		self.obufsize     = 524288
+		self.lbufsize     = 524288
+		self.cbufsize     = 524288
+		self.tbufsize     = 524288
+		self.gcTriggerRatio=2.0
+		self.gcTriggerMaxSize=65536
+		return self
+	# }}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return 
+		if not self.isautodiff:
+			return md 
+		
+		md = checkfield(md,'fieldname','autodiff.obufsize','>=',524288)
+		md = checkfield(md,'fieldname','autodiff.lbufsize','>=',524288)
+		md = checkfield(md,'fieldname','autodiff.cbufsize','>=',524288)
+		md = checkfield(md,'fieldname','autodiff.tbufsize','>=',524288)
+		md = checkfield(md,'fieldname','autodiff.gcTriggerRatio','>=',2.0)
+		md = checkfield(md,'fieldname','autodiff.gcTriggerMaxSize','>=',2000000)
+
+		#Driver value:
+		md = checkfield(md,'fieldname','autodiff.driver','values',['fos_forward','fov_forward','fov_forward_all','fos_reverse','fov_reverse','fov_reverse_all'])
+
+		#go through our dependents and independents and check consistency: 
+		for dep in self.dependents:
+			dep.checkconsistency(md,solution,analyses)
+		for i,indep in enumerate(self.independents):
+			indep.checkconsistency(md,i,solution,analyses,self.driver)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','isautodiff','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','driver','format','String')
+
+		#early return
+		if not self.isautodiff:
+			WriteData(fid,'data',False,'enum',AutodiffMassFluxSegmentsPresentEnum(),'format','Boolean')
+			WriteData(fid,'data',False,'enum',AutodiffKeepEnum(),'format','Boolean')
+			return
+			
+		#buffer sizes {{{
+		WriteData(fid,'object',self,'fieldname','obufsize','format','Double');
+		WriteData(fid,'object',self,'fieldname','lbufsize','format','Double');
+		WriteData(fid,'object',self,'fieldname','cbufsize','format','Double');
+		WriteData(fid,'object',self,'fieldname','tbufsize','format','Double');
+		WriteData(fid,'object',self,'fieldname','gcTriggerRatio','format','Double');
+		WriteData(fid,'object',self,'fieldname','gcTriggerMaxSize','format','Double');
+		#}}}
+		#process dependent variables {{{
+		num_dependent_objects=len(self.dependents)
+		WriteData(fid,'data',num_dependent_objects,'enum',AutodiffNumDependentObjectsEnum(),'format','Integer')
+
+		if num_dependent_objects:
+			names=[]
+			types=numpy.zeros(num_dependent_objects)
+			indices=numpy.zeros(num_dependent_objects)
+
+			for i,dep in enumerate(self.dependents):
+				names[i]=dep.name
+				types[i]=dep.typetoscalar()
+				indices[i]=dep.index
+
+			WriteData(fid,'data',names,'enum',AutodiffDependentObjectNamesEnum(),'format','StringArray')
+			WriteData(fid,'data',types,'enum',AutodiffDependentObjectTypesEnum(),'format','IntMat','mattype',3)
+			WriteData(fid,'data',indices,'enum',AutodiffDependentObjectIndicesEnum(),'format','IntMat','mattype',3)
+		#}}}
+		#process independent variables {{{
+		num_independent_objects=len(self.independents)
+		WriteData(fid,'data',num_independent_objects,'enum',AutodiffNumIndependentObjectsEnum(),'format','Integer')
+
+		if num_independent_objects:
+			names=numpy.zeros(num_independent_objects)
+			types=numpy.zeros(num_independent_objects)
+
+			for i,indep in enumerate(self.independents):
+				names[i]=StringToEnum(indep.name)[0]
+				types[i]=indep.typetoscalar()
+
+			WriteData(fid,'data',names,'enum',AutodiffIndependentObjectNamesEnum(),'format','IntMat','mattype',3)
+			WriteData(fid,'data',types,'enum',AutodiffIndependentObjectTypesEnum(),'format','IntMat','mattype',3)
+		#}}}
+		#if driver is fos_forward, build index:  {{{
+		if strcmpi(self.driver,'fos_forward'):
+			index=0
+
+			for indep in self.independents:
+				if not numpy.isnan(indep.fos_forward_index):
+					index+=indep.fos_forward_index
+					break
+				else:
+					if strcmpi(indep.type,'scalar'):
+						index+=1
+					else:
+						index+=indep.nods
+
+			index-=1    #get c-index numbering going
+			WriteData(fid,'data',index,'enum',AutodiffFosForwardIndexEnum(),'format','Integer')
+		#}}}
+		#if driver is fos_reverse, build index:  {{{
+		if strcmpi(self.driver,'fos_reverse'):
+			index=0
+
+			for dep in self.dependents:
+				if not numpy.isnan(dep.fos_reverse_index):
+					index+=dep.fos_reverse_index
+					break
+				else:
+					if strcmpi(dep.type,'scalar'):
+						index+=1
+					else:
+						index+=dep.nods
+
+			index-=1    #get c-index numbering going
+			WriteData(fid,'data',index,'enum',AutodiffFosReverseIndexEnum(),'format','Integer')
+		#}}}
+		#if driver is fov_forward, build indices:  {{{
+		if strcmpi(self.driver,'fov_forward'):
+			indices=0
+
+			for indep in self.independents:
+				if indep.fos_forward_index:
+					indices+=indep.fov_forward_indices
+					break
+				else:
+					if strcmpi(indep.type,'scalar'):
+						indices+=1
+					else:
+						indices+=indep.nods
+
+			indices-=1    #get c-indices numbering going
+			WriteData(fid,'data',indices,'enum',AutodiffFovForwardIndicesEnum(),'format','IntMat','mattype',3)
+		#}}}
+		#deal with mass fluxes:  {{{
+		mass_flux_segments=[dep.segments for dep in self.dependents if strcmpi(dep.name,'MassFlux')]
+
+		if mass_flux_segments:
+			WriteData(fid,'data',mass_flux_segments,'enum',MassFluxSegmentsEnum(),'format','MatArray')
+			flag=True
+		else:
+			flag=False
+		WriteData(fid,'data',flag,'enum',AutodiffMassFluxSegmentsPresentEnum(),'format','Boolean')
+		#}}}
+		#deal with trace keep on: {{{
+		keep=False
+
+		#From ADOLC userdoc: 
+		# The optional integer argument keep of trace on determines whether the numerical values of all active variables are 
+		# recorded in a buffered temporary array or file called the taylor stack. This option takes effect if keep = 1 and 
+		# prepares the scene for an immediately following gradient evaluation by a call to a routine implementing the reverse 
+		# mode as described in the Section 4 and Section 5. 
+		#
+
+		if len(self.driver)<=3:
+			keep=False    #there is no "_reverse" string within the driver string: 
+		else:
+			if strncmpi(self.driver[3:],'_reverse',8):
+				keep=True
+			else:
+				keep=False
+		WriteData(fid,'data',keep,'enum',AutodiffKeepEnum(),'format','Boolean')
+		#}}}
+
+		return
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/balancethickness.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/balancethickness.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/balancethickness.py	(revision 21239)
@@ -0,0 +1,57 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class balancethickness(object):
+	"""
+	BALANCETHICKNESS class definition
+
+	   Usage:
+	      balancethickness=balancethickness();
+	"""
+
+	def __init__(self): # {{{
+		self.spcthickness      = float('NaN')
+		self.thickening_rate   = float('NaN')
+		self.stabilization     = 0
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		
+		string='   balance thickness solution parameters:' 
+		
+		string="%s\n%s"%(string,fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'thickening_rate','ice thickening rate used in the mass conservation (dh/dt) [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'stabilization',"0: None, 1: SU, 2: SSA's artificial diffusivity, 3:DG"))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#Type of stabilization used
+		self.stabilization=1
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		#Early return
+		if not solution==BalancethicknessSolutionEnum():
+			return md
+
+		md = checkfield(md,'fieldname','balancethickness.spcthickness')
+		md = checkfield(md,'fieldname','balancethickness.thickening_rate','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','balancethickness.stabilization','size',[1],'values',[0,1,2,3])
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'object',self,'fieldname','spcthickness','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'fieldname','thickening_rate','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,'object',self,'fieldname','stabilization','format','Integer')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/bamggeom.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/bamggeom.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/bamggeom.py	(revision 21239)
@@ -0,0 +1,45 @@
+import numpy
+
+class bamggeom(object):
+	"""
+	BAMGGEOM class definition
+
+	   Usage:
+	      bamggeom(varargin)
+	"""
+
+	def __init__(self,*args):    # {{{
+		self.Vertices=numpy.empty((0,3))
+		self.Edges=numpy.empty((0,3))
+		self.TangentAtEdges=numpy.empty((0,4))
+		self.Corners=numpy.empty((0,1))
+		self.RequiredVertices=numpy.empty((0,1))
+		self.RequiredEdges=numpy.empty((0,1))
+		self.CrackedEdges=numpy.empty((0,0))
+		self.SubDomains=numpy.empty((0,4))
+
+		if not len(args):
+			# if no input arguments, create a default object
+			pass
+
+		elif len(args) == 1:
+			object=args[0]
+			for field in list(object.keys()):
+				if field in vars(self):
+					setattr(self,field,object[field])
+
+		else:
+			raise TypeError("bamggeom constructor error message: unknown type of constructor call")
+	# }}}
+	def __repr__(self):    # {{{
+		s ="class '%s' object '%s' = \n" % (type(self),'self')
+		s+="    Vertices: %s\n" % str(self.Vertices)
+		s+="    Edges: %s\n" % str(self.Edges)
+		s+="    TangentAtEdges: %s\n" % str(self.TangentAtEdges)
+		s+="    Corners: %s\n" % str(self.Corners)
+		s+="    RequiredVertices: %s\n" % str(self.RequiredVertices)
+		s+="    RequiredEdges: %s\n" % str(self.RequiredEdges)
+		s+="    CrackedEdges: %s\n" % str(self.CrackedEdges)
+		s+="    SubDomains: %s\n" % str(self.SubDomains)
+		return s
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/bamgmesh.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/bamgmesh.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/bamgmesh.py	(revision 21239)
@@ -0,0 +1,61 @@
+import numpy
+
+class bamgmesh(object):
+	"""
+	BAMGMESH class definition
+
+	   Usage:
+	      bamgmesh(varargin)
+	"""
+
+	def __init__(self,*args):    # {{{
+		self.Vertices=numpy.empty((0,3))
+		self.Edges=numpy.empty((0,3))
+		self.Triangles=numpy.empty((0,0))
+		self.Quadrilaterals=numpy.empty((0,0))
+		self.IssmEdges=numpy.empty((0,0))
+		self.IssmSegments=numpy.empty((0,0))
+		self.VerticesOnGeomVertex=numpy.empty((0,0))
+		self.VerticesOnGeomEdge=numpy.empty((0,0))
+		self.EdgesOnGeomEdge=numpy.empty((0,0))
+		self.SubDomains=numpy.empty((0,4))
+		self.SubDomainsFromGeom=numpy.empty((0,0))
+		self.ElementConnectivity=numpy.empty((0,0))
+		self.NodalConnectivity=numpy.empty((0,0))
+		self.NodalElementConnectivity=numpy.empty((0,0))
+		self.CrackedVertices=numpy.empty((0,0))
+		self.CrackedEdges=numpy.empty((0,0))
+
+		if not len(args):
+			# if no input arguments, create a default object
+			pass
+
+		elif len(args) == 1:
+			object=args[0]
+			for field in list(object.keys()):
+				if field in vars(self):
+					setattr(self,field,object[field])
+
+		else:
+			raise TypeError("bamgmesh constructor error message: unknown type of constructor call")
+	# }}}
+	def __repr__(self):    # {{{
+		s ="class '%s' object '%s' = \n" % (type(self),'self')
+		s+="    Vertices: %s\n" % str(self.Vertices)
+		s+="    Edges: %s\n" % str(self.Edges)
+		s+="    Triangles: %s\n" % str(self.Triangles)
+		s+="    Quadrilaterals: %s\n" % str(self.Quadrilaterals)
+		s+="    IssmEdges: %s\n" % str(self.IssmEdges)
+		s+="    IssmSegments: %s\n" % str(self.IssmSegments)
+		s+="    VerticesOnGeomVertex: %s\n" % str(self.VerticesOnGeomVertex)
+		s+="    VerticesOnGeomEdge: %s\n" % str(self.VerticesOnGeomEdge)
+		s+="    EdgesOnGeomEdge: %s\n" % str(self.EdgesOnGeomEdge)
+		s+="    SubDomains: %s\n" % str(self.SubDomains)
+		s+="    SubDomainsFromGeom: %s\n" % str(self.SubDomainsFromGeom)
+		s+="    ElementConnectivity: %s\n" % str(self.ElementConnectivity)
+		s+="    NodalConnectivity: %s\n" % str(self.NodalConnectivity)
+		s+="    NodalElementConnectivity: %s\n" % str(self.NodalElementConnectivity)
+		s+="    CrackedVertices: %s\n" % str(self.CrackedVertices)
+		s+="    CrackedEdges: %s\n" % str(self.CrackedEdges)
+		return s
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/basalforcings.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/basalforcings.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/basalforcings.py	(revision 21239)
@@ -0,0 +1,79 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+import numpy
+
+class basalforcings(object):
+	"""
+	BASAL FORCINGS class definition
+
+	   Usage:
+	      basalforcings=basalforcings();
+	"""
+
+	def __init__(self): # {{{
+		self.groundedice_melting_rate  = float('NaN')
+		self.floatingice_melting_rate  = float('NaN')
+		self.geothermalflux            = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   basal forcings parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"groundedice_melting_rate","basal melting rate (positive if melting) [m/yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"floatingice_melting_rate","basal melting rate (positive if melting) [m/yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"geothermalflux","geothermal heat flux [W/m^2]"))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1)
+		self.floatingice_melting_rate=project3d(md,'vector',self.floatingice_melting_rate,'type','node','layer',1)
+		self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1)    #bedrock only gets geothermal flux
+		return self
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.groundedice_melting_rate)):
+			self.groundedice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no basalforcings.groundedice_melting_rate specified: values set as zero")
+
+		if numpy.all(numpy.isnan(self.floatingice_melting_rate)):
+			self.floatingice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no basalforcings.floatingice_melting_rate specified: values set as zero")
+
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and not md.transient.ismasstransport):
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+
+		if ThermalAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and not md.transient.isthermal):
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',BasalforcingsEnum(),'data',FloatingMeltRateEnum(),'format','Integer');
+		WriteData(fid,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'fieldname','floatingice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'fieldname','geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/calving.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/calving.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/calving.py	(revision 21239)
@@ -0,0 +1,71 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+
+class calving(object):
+	"""
+	CALVING class definition
+
+	   Usage:
+	      calving=calving();
+	"""
+
+	def __init__(self): # {{{
+
+		self.stabilization = 0
+		self.spclevelset   = float('NaN')
+		self.calvingrate   = float('NaN')
+		self.meltingrate   = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   Calving parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding'))
+		string="%s\n%s"%(string,fielddisplay(self,'spclevelset','levelset constraints (NaN means no constraint)'))
+		string="%s\n%s"%(string,fielddisplay(self,'calvingrate','calving rate at given location [m/a]'))
+		string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.spclevelset=project3d(md,'vector',self.spclevelset,'type','node')
+		self.calvingrate=project3d(md,'vector',self.calvingrate,'type','node')
+		self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		#stabilization = 2 by default
+		self.stabilization = 2
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if (solution!=TransientSolutionEnum()) or (not md.transient.iscalving):
+			return md
+
+		md = checkfield(md,'fieldname','calving.spclevelset','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','calving.stabilization','values',[0,1,2]);
+		md = checkfield(md,'fieldname','calving.calvingrate','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+		md = checkfield(md,'fieldname','calving.meltingrate','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.*24.*3600.
+
+		WriteData(fid,'enum',CalvingLawEnum(),'data',DefaultCalvingEnum(),'format','Integer');
+		WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',self.stabilization,'format','Integer');
+		WriteData(fid,'enum',SpclevelsetEnum(),'data',self.spclevelset,'format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+		WriteData(fid,'object',self,'fieldname','calvingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts)
+		WriteData(fid,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/calvinglevermann.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/calvinglevermann.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/calvinglevermann.py	(revision 21239)
@@ -0,0 +1,68 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+
+class calvinglevermann(object):
+	"""
+	CALVINGLEVERMANN class definition
+
+	   Usage:
+	      calvinglevermann=calvinglevermann();
+	"""
+
+	def __init__(self): # {{{
+
+		self.stabilization = 0
+		self.spclevelset   = float('NaN')
+		self.coeff         = float('NaN')
+		self.meltingrate   = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   Calving Levermann parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'spclevelset','levelset constraints (NaN means no constraint)'))
+		string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding'))
+		string="%s\n%s"%(string,fielddisplay(self,'coeff','proportionality coefficient in Levermann model'))
+		string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.spclevelset=project3d(md,'vector',self.spclevelset,'type','node')
+		self.coeff=project3d(md,'vector',self.coeff,'type','node')
+		self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		#stabilization = 2 by default
+		self.stabilization = 2
+
+		#Proportionality coefficient in Levermann model
+		self.coeff=2e13;
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if (solution!=TransientSolutionEnum()) or (not md.transient.iscalving):
+			return md
+
+		md = checkfield(md,'fieldname','calving.spclevelset','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','calving.stabilization','values',[0,1,2]);
+		md = checkfield(md,'fieldname','calving.coeff','size',[md.mesh.numberofvertices],'>',0)
+		md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices],'>=',0)
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		yts=365.*24.*3600.
+		WriteData(fid,'enum',CalvingLawEnum(),'data',CalvingLevermannEnum(),'format','Integer');
+		WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',self.stabilization,'format','Integer');
+		WriteData(fid,'enum',SpclevelsetEnum(),'data',self.spclevelset,'format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+		WriteData(fid,'enum',CalvinglevermannCoeffEnum(),'data',self.coeff,'format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/clusters/generic.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/clusters/generic.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/clusters/generic.py	(revision 21239)
@@ -0,0 +1,204 @@
+import socket
+import os
+import math
+import subprocess
+from IssmConfig import IssmConfig
+from EnumToString import EnumToString
+from issmdir import issmdir
+from pairoptions import pairoptions
+from issmssh import issmssh
+from issmscpin import issmscpin
+from issmscpout import issmscpout
+import MatlabFuncs as m
+
+class generic(object):
+	"""
+	GENERIC cluster class definition
+ 
+	   Usage:
+	      cluster=generic('name','astrid','np',3);
+	      cluster=generic('name',oshostname(),'np',3,'login','username');
+	"""
+
+	def __init__(self,**kwargs):    # {{{
+
+		self.name=''
+		self.login=''
+		self.np=1
+		self.port=0
+		self.interactive=1
+		self.codepath=issmdir()+'/bin'
+		self.executionpath=issmdir()+'/execution'
+		self.valgrind=issmdir()+'/externalpackages/valgrind/install/bin/valgrind'
+		self.valgrindlib=issmdir()+'/externalpackages/valgrind/install/lib/libmpidebug.so'
+		self.valgrindsup=issmdir()+'/externalpackages/valgrind/issm.supp'
+
+		#use provided options to change fields
+		options=pairoptions(**kwargs)
+
+		#get name
+		self.name=socket.gethostname()
+
+		#initialize cluster using user settings if provided
+		if os.path.exists(self.name+'_settings.py'):
+			exec(compile(open(self.name+'_settings.py').read(), self.name+'_settings.py', 'exec'),globals())
+
+		#OK get other fields
+		self=options.AssignObjectFields(self)
+	# }}}
+	def __repr__(self):    # {{{
+		#  display the object
+		s ="class '%s' object '%s' = \n" % (type(self),'self')
+		s+="    name: %s\n" % self.name
+		s+="    login: %s\n" % self.login
+		s+="    np: %i\n" % self.np
+		s+="    port: %i\n" % self.port
+		s+="    codepath: %s\n" % self.codepath
+		s+="    executionpath: %s\n" % self.executionpath
+		s+="    valgrind: %s\n" % self.valgrind
+		s+="    valgrindlib: %s\n" % self.valgrindlib
+		s+="    valgrindsup: %s\n" % self.valgrindsup
+		return s
+	# }}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		if self.np<1:
+			md = checkmessage(md,'number of processors should be at least 1')
+		if math.isnan(self.np):
+			md = checkmessage(md,'number of processors should not be NaN!')
+
+		return md
+	# }}}
+	def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota):    # {{{
+
+		executable='issm.exe';
+		if isdakota:
+			version=IssmConfig('_DAKOTA_VERSION_')[0:2]
+			version=float(version)
+			if version>=6:
+				executable='issm_dakota.exe'
+
+		#write queuing script 
+		if not m.ispc():
+
+			fid=open(modelname+'.queue','w')
+			fid.write('#!/bin/sh\n')
+			if not isvalgrind:
+				if self.interactive: 
+					if IssmConfig('_HAVE_MPI_')[0]:
+						fid.write('mpiexec -np %i %s/%s %s %s/%s %s ' % (self.np,self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname))
+					else:
+						fid.write('%s/%s %s %s/%s %s ' % (self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname))
+				else:
+					if IssmConfig('_HAVE_MPI_')[0]:
+						fid.write('mpiexec -np %i %s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % (self.np,self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
+					else:
+						fid.write('%s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % (self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
+			elif isgprof:
+				fid.write('\n gprof %s/%s gmon.out > %s.performance' % (self.codepath,executable,modelname))
+			else:
+				#Add --gen-suppressions=all to get suppression lines
+				fid.write('LD_PRELOAD=%s \\\n' % self.valgrindlib)
+				if IssmConfig('_HAVE_MPI_')[0]:
+					fid.write('mpiexec -np %i %s --leak-check=full --suppressions=%s %s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % \
+							(self.np,self.valgrind,self.valgrindsup,self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
+				else:	
+					fid.write('%s --leak-check=full --suppressions=%s %s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % \
+							(self.valgrind,self.valgrindsup,self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
+
+			if not io_gather:    #concatenate the output files:
+				fid.write('\ncat %s.outbin.* > %s.outbin' % (modelname,modelname))
+			fid.close()
+
+		else:    # Windows
+
+			fid=open(modelname+'.bat','w')
+			fid.write('@echo off\n')
+			if self.interactive:
+				fid.write('"%s/%s" %s "%s/%s" %s ' % (self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname))
+			else:
+				fid.write('"%s/%s" %s "%s/%s" %s 2> %s.errlog >%s.outlog' % \
+					(self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
+			fid.close()
+
+		#in interactive mode, create a run file, and errlog and outlog file
+		if self.interactive:
+			fid=open(modelname+'.errlog','w')
+			fid.close()
+			fid=open(modelname+'.outlog','w')
+			fid.close()
+	# }}}
+	def BuildKrigingQueueScript(self,modelname,solution,io_gather,isvalgrind,isgprof):    # {{{
+
+		#write queuing script 
+		if not m.ispc():
+
+			fid=open(modelname+'.queue','w')
+			fid.write('#!/bin/sh\n')
+			if not isvalgrind:
+				if self.interactive:
+					fid.write('mpiexec -np %i %s/kriging.exe %s/%s %s ' % (self.np,self.codepath,self.executionpath,modelname,modelname))
+				else:
+					fid.write('mpiexec -np %i %s/kriging.exe %s/%s %s 2> %s.errlog >%s.outlog ' % (self.np,self.codepath,self.executionpath,modelname,modelname,modelname,modelname))
+			elif isgprof:
+				fid.write('\n gprof %s/kriging.exe gmon.out > %s.performance' & (self.codepath,modelname))
+			else:
+				#Add --gen-suppressions=all to get suppression lines
+				fid.write('LD_PRELOAD=%s \\\n' % self.valgrindlib)
+				fid.write('mpiexec -np %i %s --leak-check=full --suppressions=%s %s/kriging.exe %s/%s %s 2> %s.errlog >%s.outlog ' % \
+					(self.np,self.valgrind,self.valgrindsup,self.codepath,self.executionpath,modelname,modelname,modelname,modelname))
+			if not io_gather:    #concatenate the output files:
+				fid.write('\ncat %s.outbin.* > %s.outbin' % (modelname,modelname))
+			fid.close()
+
+		else:    # Windows
+
+			fid=open(modelname+'.bat','w')
+			fid.write('@echo off\n')
+			if self.interactive:
+				fid.write('"%s/issm.exe" %s "%s/%s" %s ' % (self.codepath,EnumToString(solution)[0],self.executionpath,modelname,modelname))
+			else:
+				fid.write('"%s/issm.exe" %s "%s/%s" %s 2> %s.errlog >%s.outlog' % \
+					(self.codepath,EnumToString(solution)[0],self.executionpath,modelname,modelname,modelname,modelname))
+			fid.close()
+
+		#in interactive mode, create a run file, and errlog and outlog file
+		if self.interactive:
+			fid=open(modelname+'.errlog','w')
+			fid.close()
+			fid=open(modelname+'.outlog','w')
+			fid.close()
+	# }}}
+	def UploadQueueJob(self,modelname,dirname,filelist):    # {{{
+
+		#compress the files into one zip.
+		compressstring='tar -zcf %s.tar.gz ' % dirname
+		for file in filelist:
+			compressstring += ' %s' % file
+		if self.interactive:
+			compressstring += ' %s.errlog %s.outlog ' % (modelname,modelname)
+		subprocess.call(compressstring,shell=True)
+
+		print('uploading input file and queueing script')
+		issmscpout(self.name,self.executionpath,self.login,self.port,[dirname+'.tar.gz'])
+
+	# }}}
+	def LaunchQueueJob(self,modelname,dirname,filelist,restart):    # {{{
+
+		print('launching solution sequence on remote cluster')
+		if restart:
+			launchcommand='cd %s && cd %s chmod 777 %s.queue && ./%s.queue' % (self.executionpath,dirname,modelname,modelname)
+		else:
+			launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && chmod 777 %s.queue && ./%s.queue' % \
+				(self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname,modelname)
+		issmssh(self.name,self.login,self.port,launchcommand)
+	# }}}
+	def Download(self,dirname,filelist):     # {{{
+
+		if m.ispc():
+			#do nothing
+			return
+
+		#copy files from cluster to current directory
+		directory='%s/%s/' % (self.executionpath,dirname)
+		issmscpin(self.name,self.login,self.port,directory,filelist)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/clusters/pfe.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/clusters/pfe.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/clusters/pfe.py	(revision 21239)
@@ -0,0 +1,199 @@
+# import socket
+# import os
+# import math
+import subprocess
+from fielddisplay import fielddisplay
+from EnumToString import EnumToString
+from pairoptions import pairoptions
+from issmssh import issmssh
+from issmscpin import issmscpin
+from issmscpout import issmscpout
+from QueueRequirements import QueueRequirements
+try:
+	from pfe_settings import pfe_settings
+except ImportError:
+	print('You need pfe_settings.py to proceed, check presence and sys.path')
+	
+class pfe(object):
+	"""
+	PFE cluster class definition
+ 
+	   Usage:
+	      cluster=pfe();
+	      cluster=pfe('np',3);
+	      cluster=pfe('np',3,'login','username');
+	"""
+
+	def __init__(self,**kwargs):
+		# {{{
+
+		self.name           = 'pfe'
+		self.login          = ''
+		self.numnodes       = 20
+		self.cpuspernode    = 8
+		self.port           = 1025
+		self.queue          = 'long'
+		self.time           = 12*60
+		self.processor      = 'wes'
+		self.codepath       = ''
+		self.executionpath  = ''
+		self.grouplist      = 's1010'
+		self.interactive    = 0
+		self.bbftp          = 0
+		self.numstreams     = 8
+		self.hyperthreading = 0
+
+		#use provided options to change fields
+		options=pairoptions(**kwargs)
+
+		#initialize cluster using user settings if provided
+		self=pfe_settings(self)
+		self.np=self.nprocs()
+		#OK get other fields
+		self=options.AssignObjectFields(self)
+		
+		# }}}
+
+	def __repr__(self):
+		# {{{
+		#  display the object
+		s = "class pfe object:"
+		s	= "%s\n%s"%(s,fielddisplay(self,'name','name of the cluster'))
+		s	= "%s\n%s"%(s,fielddisplay(self,'login','login'))
+		s = "%s\n%s"%(s,fielddisplay(self,'numnodes','number of nodes'))
+		s = "%s\n%s"%(s,fielddisplay(self,'cpuspernode','number of nodes per CPUs'))
+		s = "%s\n%s"%(s,fielddisplay(self,'np','number of CPUs'))
+		s = "%s\n%s"%(s,fielddisplay(self,'port','machine access port'))
+		s = "%s\n%s"%(s,fielddisplay(self,'codepath','code path on the cluster'))
+		s = "%s\n%s"%(s,fielddisplay(self,'executionpath','execution path on the cluster'))
+		s = "%s\n%s"%(s,fielddisplay(self,'queue','name of the queue'))
+		s = "%s\n%s"%(s,fielddisplay(self,'time','walltime requested'))
+		s = "%s\n%s"%(s,fielddisplay(self,'processor','type of processor'))
+		s = "%s\n%s"%(s,fielddisplay(self,'grouplist','name of the group'))
+		s = "%s\n%s"%(s,fielddisplay(self,'interactive',''))
+		s = "%s\n%s"%(s,fielddisplay(self,'bbftp',''))
+		s = "%s\n%s"%(s,fielddisplay(self,'numstreams',''))
+		s = "%s\n%s"%(s,fielddisplay(self,'hyperthreading',''))
+		return s
+	# }}}
+
+	def nprocs(self):
+		# {{{
+		self.np=self.numnodes*self.cpuspernode
+		return self.np
+		# }}}
+	def checkconsistency(self,md,solution,analyses):
+		# {{{
+
+
+		queuedict = {'long': [5*24*60, 2048],
+								 'normal': [8*60, 2048],
+								 'debug':[2*60,150],
+								 'devel':[2*60,150]}
+		QueueRequirements(queuedict,self.queue,self.nprocs(),self.time)
+
+		#now, check cluster.cpuspernode according to processor type
+		if self.processor=='har' or self.processor=='neh':
+			if self.hyperthreading:
+				if not 0<self.cpuspernode<17:
+					md = md.checkmessage('cpuspernode should be between 1 and 16 for ''neh'' and ''har'' processors in hyperthreading mode')
+			else:
+				if not 0<self.cpuspernode<9:
+					md = md.checkmessage('cpuspernode should be between 1 and 8 for ''neh'' and ''har'' processors')
+
+		elif self.processor=='wes':
+			if self.hyperthreading:
+				if not 0<self.cpuspernode<25:
+					md = md.checkmessage('cpuspernode should be between 1 and 24 for ''wes'' processors in hyperthreading mode')
+			else:
+				if not 0<self.cpuspernode<13:
+					md = md.checkmessage('cpuspernode should be between 1 and 12 for ''wes'' processors')
+
+		elif self.processor=='ivy':
+			if self.hyperthreading:
+				if not 0<self.cpuspernode<41:
+					md = md.checkmessage('cpuspernode should be between 1 and 40 for ''ivy'' processors in hyperthreading mode')
+			else:
+				if not 0<self.cpuspernode<21:
+					md = md.checkmessage('cpuspernode should be between 1 and 20 for ''ivy'' processors')
+		else:
+			md = md.checkmessage('unknown processor type, should be ''neh'',''wes'' or ''har'' or ''ivy''')
+	
+		#Miscelaneous
+		if not self.login:
+			md = md.checkmessage('login empty')
+		if not self.codepath:
+			md = md.checkmessage('codepath empty')
+		if not self.executionpath:
+			md = md.checkmessage('executionpath empty')
+		if not self.grouplist:
+			md = md.checkmessage('grouplist empty')
+		if self.interactive==1:
+			md = md.checkmessage('interactive mode not implemented')
+			
+		return self
+	# }}}
+	def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota):
+		# {{{
+
+		executable='issm.exe'
+		if isdakota:
+			version=IssmConfig('_DAKOTA_VERSION_')[0:2]
+			version=float(version)
+			if version>=6:
+				executable='issm_dakota.exe'
+
+		#write queuing script 
+		fid=open(modelname+'.queue','w')
+		fid.write('#PBS -S /bin/bash\n')
+		fid.write('#PBS -l select=%i:ncpus=%i:model=%s\n' % (self.numnodes,self.cpuspernode,self.processor))
+		fid.write('#PBS -l walltime=%i\n' % (self.time*60))
+		fid.write('#PBS -q %s \n' % self.queue)
+		fid.write('#PBS -W group_list=%s\n' % self.grouplist)
+		fid.write('#PBS -m e\n')
+		fid.write('#PBS -o %s/%s/%s.outlog \n' % (self.executionpath,dirname,modelname))
+		fid.write('#PBS -e %s/%s/%s.errlog \n\n' % (self.executionpath,dirname,modelname))
+		fid.write('. /usr/share/modules/init/bash\n\n')
+		fid.write('module load comp-intel/2015.0.090\n')
+		fid.write('module load mpi-sgi/mpt.2.11r13\n')
+		fid.write('export PATH="$PATH:."\n\n')
+		fid.write('export MPI_GROUP_MAX=64\n\n')
+		fid.write('export ISSM_DIR="%s/../"\n' % self.codepath)
+		fid.write('source $ISSM_DIR/etc/environment.sh\n')
+		fid.write('cd %s/%s/\n\n' % (self.executionpath,dirname))
+		fid.write('mpiexec -np %i %s/%s %s %s/%s %s\n' % (self.nprocs(),self.codepath,executable,str(EnumToString(solution)[0]),self.executionpath,dirname,modelname))
+		
+		fid.close()
+
+	# }}}
+	def UploadQueueJob(self,modelname,dirname,filelist):
+			# {{{
+
+		#compress the files into one zip.
+		compressstring='tar -zcf %s.tar.gz ' % dirname
+		for file in filelist:
+			compressstring += ' %s' % file
+		subprocess.call(compressstring,shell=True)
+
+		print('uploading input file and queueing script')
+		issmscpout(self.name,self.executionpath,self.login,self.port,[dirname+'.tar.gz'])
+
+		# }}}
+	def LaunchQueueJob(self,modelname,dirname,filelist,restart):
+			# {{{
+
+		print('launching solution sequence on remote cluster')
+		if restart:
+			launchcommand='cd %s && cd %s && qsub %s.queue' % (self.executionpath,dirname,modelname)
+		else:
+			launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && qsub %s.queue' % (self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname)
+		issmssh(self.name,self.login,self.port,launchcommand)
+
+		# }}}
+	def Download(self,dirname,filelist):
+		# {{{
+
+		#copy files from cluster to current directory
+		directory='%s/%s/' % (self.executionpath,dirname)
+		issmscpin(self.name,self.login,self.port,directory,filelist)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/constants.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/constants.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/constants.py	(revision 21239)
@@ -0,0 +1,57 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class constants(object):
+	"""
+	CONSTANTS class definition
+
+	   Usage:
+	      constants=constants();
+	"""
+
+	def __init__(self): # {{{
+		self.g                    = 0
+		self.yts                  = 0
+		self.referencetemperature = 0
+		
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   constants parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"g","gravitational acceleration [m/s^2]"))
+		string="%s\n%s"%(string,fielddisplay(self,"yts","number of seconds in a year [s/yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"referencetemperature","reference temperature used in the enthalpy model [K]"))
+
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#acceleration due to gravity (m/s^2)
+		self.g=9.81
+
+		#converstion from year to seconds
+		self.yts=365*24*3600
+
+		#the reference temperature for enthalpy model (cf Aschwanden)
+		self.referencetemperature=223.15
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','constants.g','>',0,'size',[1])
+		md = checkfield(md,'fieldname','constants.yts','>',0,'size',[1])
+		md = checkfield(md,'fieldname','constants.referencetemperature','size',[1])
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','g','format','Double')
+		WriteData(fid,'object',self,'fieldname','yts','format','Double')
+		WriteData(fid,'object',self,'fieldname','referencetemperature','format','Double')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/damage.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/damage.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/damage.py	(revision 21239)
@@ -0,0 +1,173 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class damage(object):
+	"""
+	DAMAGE class definition
+
+	   Usage:
+	      damage=damage()
+	"""
+
+	def __init__(self,*args):    # {{{
+			
+		#damage: 
+		self.isdamage           = 0.
+		self.D			= float('NaN')
+		self.law		= float('NaN')
+		self.spcdamage		= float('NaN')
+		self.max_damage		= float('NaN')
+		
+		#numerical
+		self.stabilization	= float('NaN')
+		self.maxiter		= float('NaN')
+		self.elementinterp      = ''
+
+		#general parameters for evolution law: 
+		self.stress_threshold   = float('NaN')
+		self.kappa              = float('NaN')
+		self.c1                 = float('NaN')
+		self.c2                 = float('NaN')
+		self.c3                 = float('NaN')
+		self.c4                 = float('NaN')
+		self.healing		= float('NaN')
+		self.equiv_stress       = float('NaN')
+		self.requested_outputs  = []
+
+		if not len(args):
+			self.setdefaultparameters()
+		else:
+			raise RuntimeError("constructor not supported")
+
+	# }}}
+	def __repr__(self):    # {{{
+		s ='   Damage:\n'
+		
+		s+="%s\n" % fielddisplay(self,"isdamage","is damage mechanics being used? [0 (default) or 1]")
+		if self.isdamage:
+			s+="%s\n" % fielddisplay(self,"D","damage tensor (scalar for now)")
+			s+="%s\n" % fielddisplay(self,"law","damage law ['0: analytical','1: pralong']")
+			s+="%s\n" % fielddisplay(self,"spcdamage","damage constraints (NaN means no constraint)")
+			s+="%s\n" % fielddisplay(self,"max_damage","maximum possible damage (0<=max_damage<1)")
+			s+="%s\n" % fielddisplay(self,"stabilization","0: no, 1: artificial_diffusivity, 2: SUPG (not working), 4: Flux corrected transport")
+			s+="%s\n" % fielddisplay(self,"maxiter","maximum number of non linear iterations")
+			s+="%s\n" %	fielddisplay(self,"elementinterp","interpolation scheme for finite elements [''P1'',''P2'']")
+			s+="%s\n" % fielddisplay(self,"stress_threshold","stress threshold for damage initiation [Pa]")
+			s+="%s\n" % fielddisplay(self,"kappa","ductility parameter for stress softening and damage [>1]")
+			s+="%s\n" % fielddisplay(self,"c1","damage parameter 1 ")
+			s+="%s\n" % fielddisplay(self,"c2","damage parameter 2 ")
+			s+="%s\n" % fielddisplay(self,"c3","damage parameter 3 ")
+			s+="%s\n" % fielddisplay(self,"c4","damage parameter 4 ")
+			s+="%s\n" % fielddisplay(self,"healing","damage healing parameter")
+			s+="%s\n" % fielddisplay(self,"equiv_stress","0: von Mises, 1: max principal")
+			s+="%s\n" % fielddisplay(self,'requested_outputs','additional outputs requested')
+
+		return s
+	# }}}
+	def extrude(self,md): # {{{
+		self.D=project3d(md,'vector',self.D,'type','node')
+		self.spcdamage=project3d(md,'vector',self.spcdamage,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self):    # {{{
+
+		#damage parameters: 
+		self.isdamage=0
+		self.D=0
+		self.law=0
+
+		self.max_damage=1-1e-5 #if damage reaches 1, solve becomes singular, as viscosity becomes nil
+		
+		#Type of stabilization used
+		self.stabilization=4
+			
+		#Maximum number of iterations
+		self.maxiter=100
+
+		#finite element interpolation
+		self.elementinterp='P1'
+
+		#damage evolution parameters 
+		self.stress_threshold=1.3e5
+		self.kappa=2.8
+		self.c1=0
+		self.c2=0
+		self.c3=0
+		self.c4=0
+		self.healing=0
+		self.equiv_stress=0
+
+		#output default:
+		self.requested_outputs=['default']
+
+		return self
+	# }}}
+	def defaultoutputs(self,md): # {{{
+		
+		if md.mesh.domaintype().lower()=='2dhorizontal':
+			list = ['DamageDbar']
+		else:
+			list = ['DamageD']
+		return list
+
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','damage.isdamage','numel',[1],'values',[0,1])
+		if self.isdamage:
+			md = checkfield(md,'fieldname','damage.D','>=',0,'<=',self.max_damage,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','damage.max_damage','<',1,'>=',0)
+			md = checkfield(md,'fieldname','damage.law','numel',[1],'values',[0,1,2,3])
+			md = checkfield(md,'fieldname','damage.spcdamage','Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','damage.stabilization','numel',[1],'values',[0,1,2,4])
+			md = checkfield(md,'fieldname','damage.maxiter','>=0',0)
+			md = checkfield(md,'fieldname','damage.elementinterp','values',['P1','P2'])
+			md = checkfield(md,'fieldname','damage.stress_threshold','>=',0)
+			md = checkfield(md,'fieldname','damage.kappa','>',1)
+			md = checkfield(md,'fieldname','damage.healing','>=',0)
+			md = checkfield(md,'fieldname','damage.c1','>=',0)
+			md = checkfield(md,'fieldname','damage.c2','>=',0)
+			md = checkfield(md,'fieldname','damage.c3','>=',0)
+			md = checkfield(md,'fieldname','damage.c4','>=',0)
+			md = checkfield(md,'fieldname','damage.healing','>=',0)
+			md = checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0,1])
+			md = checkfield(md,'fieldname','damage.requested_outputs','stringrow',1)
+		elif self.law != 0:
+			if (solution==DamageEvolutionSolutionEnum):
+				raise RuntimeError('Invalid evolution law (md.damage.law) for a damage solution')
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		WriteData(fid,'object',self,'fieldname','isdamage','format','Boolean')
+		if self.isdamage:
+			WriteData(fid,'object',self,'fieldname','D','format','DoubleMat','mattype',1)
+			WriteData(fid,'object',self,'fieldname','law','format','Integer')
+			WriteData(fid,'object',self,'fieldname','spcdamage','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'fieldname','max_damage','format','Double')
+			WriteData(fid,'object',self,'fieldname','stabilization','format','Integer')
+			WriteData(fid,'object',self,'fieldname','maxiter','format','Integer')
+			WriteData(fid,'enum',DamageElementinterpEnum(),'data',StringToEnum(self.elementinterp)[0],'format','Integer')
+			WriteData(fid,'object',self,'fieldname','stress_threshold','format','Double')
+			WriteData(fid,'object',self,'fieldname','kappa','format','Double')
+			WriteData(fid,'object',self,'fieldname','c1','format','Double')
+			WriteData(fid,'object',self,'fieldname','c2','format','Double')
+			WriteData(fid,'object',self,'fieldname','c3','format','Double')
+			WriteData(fid,'object',self,'fieldname','c4','format','Double')
+			WriteData(fid,'object',self,'fieldname','healing','format','Double')
+			WriteData(fid,'object',self,'fieldname','equiv_stress','format','Integer')
+			
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',DamageEvolutionRequestedOutputsEnum(),'format','StringArray')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/debug.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/debug.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/debug.py	(revision 21239)
@@ -0,0 +1,34 @@
+from fielddisplay import fielddisplay
+from WriteData import *
+
+class debug(object):
+	"""
+	DEBUG class definition
+
+	   Usage:
+	      debug=debug();
+	"""
+
+	def __init__(self): # {{{
+		self.valgrind  = False
+		self.gprof     = False
+		self.profiling = False
+		
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   debug parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"valgrind","use Valgrind to debug (0 or 1)"))
+		string="%s\n%s"%(string,fielddisplay(self,"gprof","use gnu-profiler to find out where the time is spent"))
+		string="%s\n%s"%(string,fielddisplay(self,'profiling','enables profiling (memory, flops, time)'))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','profiling','format','Boolean')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/dependent.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/dependent.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/dependent.py	(revision 21239)
@@ -0,0 +1,88 @@
+import os.path
+import numpy
+from pairoptions import pairoptions
+from fielddisplay import fielddisplay
+import MatlabFuncs as m
+from EnumDefinitions import *
+from MeshProfileIntersection import MeshProfileIntersection
+
+class dependent(object):
+	"""
+	DEPENDENT class definition
+
+	   Usage:
+	      dependent=dependent();
+	"""
+
+	def __init__(self,*args):    # {{{
+		self.name                 = ''
+		self.type                 = ''
+		self.fos_reverse_index    = float('NaN')
+		self.exp                  = ''
+		self.segments             = []
+		self.index                = -1
+		self.nods                 = 0
+
+		#set defaults 
+		self.setdefaultparameters()
+
+		#use provided options to change fields
+		options=pairoptions(**kwargs)
+
+		self.name=options.getfieldvalue('name','')
+		self.type=options.getfieldvalue('type','')
+		self.exp=options.getfieldvalue('exp','')
+		self.segments=options.getfieldvalue('segments',[])
+		self.index=options.getfieldvalue('index',-1)
+		self.nods=options.getfieldvalue('nods',0)
+
+		#if name is mass flux: 
+		if strcmpi(self.name,'MassFlux'):
+			#make sure that we supplied a file and that it exists! 
+			if not os.path.exists(self.exp):
+				raise IOError("dependent checkconsistency: specified 'exp' file does not exist!")
+			#process the file and retrieve segments
+			mesh=options.getfieldvalue('mesh')
+			self.segments=MeshProfileIntersection(mesh.elements,mesh.x,mesh.y,self.exp)
+	# }}}
+	def __repr__(self):    # {{{
+		s ="   dependent variable:\n"
+
+		s+="%s\n" % fielddisplay(self,'name',"variable name (must match corresponding Enum)")
+		s+="%s\n" % fielddisplay(self,'type',"type of variable ('vertex' or 'scalar')")
+
+		if not numpy.isnan(self.fos_reverse_index):
+			s+="%s\n" % fielddisplay(self,'fos_reverse_index',"index for fos_reverse driver of ADOLC")
+		if self.exp:
+			s+="%s\n" % fielddisplay(self,'exp',"file needed to compute dependent variable")
+			s+="%s\n" % fielddisplay(self,'segments',"mass flux segments")
+
+		return s
+	# }}}
+	def setdefaultparameters(self):    # {{{
+		#do nothing
+		return self
+	# }}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		if strcmpi(self.name,'MassFlux'):
+			if not self.segments:
+				raise RuntimeError("dependent checkconsistency error: need segments to compute this dependent response")
+			if self.index<0:
+				raise RuntimeError("dependent checkconsistency error: index for segments should be >=0")
+
+		if not numpy.isnan(self.fos_reverse_index):
+			if not strcmpi(driver,'fos_reverse'):
+				raise TypeError("cannot declare a dependent with a fos_reverse_index when the driver is not fos_reverse!")
+			if self.nods==0:
+				raise TypeError("dependent checkconsistency error: nods should be set to the size of the independent variable")
+
+		return md
+	# }}}
+	def typetoscalar(self):    # {{{
+		if   strcmpi(self.type,'scalar'):
+			scalar=0
+		elif strcmpi(self.type,'vertex'):
+			scalar=1
+
+		return scalar
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/flaim.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/flaim.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/flaim.py	(revision 21239)
@@ -0,0 +1,72 @@
+import numpy
+from collections import OrderedDict
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class flaim(object):
+	"""
+	FLAIM class definition
+
+	   Usage:
+	      flaim=flaim();
+	"""
+
+	def __init__(self): # {{{
+		self.targets            = ''
+		self.tracks             = ''
+		self.flightreqs         = OrderedDict()
+		self.criterion          = float('NaN')
+		self.gridsatequator     = 200000
+		self.usevalueordering   = True
+		self.split_antimeridian = True
+		self.solution           = ''
+		self.quality            = 0
+		self.path_optimize      = False
+		self.opt_ndir           = 1
+		self.opt_dist           = 25
+		self.opt_niter          = 30000
+		#}}}
+	def __repr__(self): # {{{
+		string='   FLAIM - Flight Line Adaptation using Ice sheet Modeling:'
+
+		string="%s\n\n%s"%(string,'      Input:')
+		string="%s\n%s"%(string,fielddisplay(self,'targets'            ,'name of kml output targets file '))
+		string="%s\n%s"%(string,fielddisplay(self,'tracks'             ,'name of kml input tracks file '))
+		string="%s\n%s"%(string,fielddisplay(self,'flightreqs'         ,'structure of kml flight requirements (not used yet)'))
+		string="%s\n%s"%(string,fielddisplay(self,'criterion'          ,'element or nodal criterion for flight path evaluation (metric)'))
+
+		string="%s\n\n%s"%(string,'      Arguments:')
+		string="%s\n%s"%(string,fielddisplay(self,'gridsatequator'     ,'number of grids at equator (determines resolution)'))
+		string="%s\n%s"%(string,fielddisplay(self,'usevalueordering'   ,'flag to consider target values for flight path evaluation'))
+		string="%s\n%s"%(string,fielddisplay(self,'split_antimeridian' ,'flag to split polygons on the antimeridian'))
+		
+		string="%s\n\n%s"%(string,'      Optimization:')
+		string="%s\n%s"%(string,fielddisplay(self,'path_optimize'     ,'optimize? (default false)'))
+		string="%s\n%s"%(string,fielddisplay(self,'opt_ndir'     ,['number of directions to test when moving a point.  If this value = 1, a random direction is tested.',\
+										  'A value > 1 results in directions equally spaced from [0, 2*PI] being tested.',\
+										  'For example, 4 would result in directions [0, PI/2, PI, 3PI/2].']))
+		string="%s\n%s"%(string,fielddisplay(self,'opt_dist'     ,'specifies the distance in km (default 25) to move a randomly selected path point on each iteration'))
+		string="%s\n%s"%(string,fielddisplay(self,'opt_niter'     ,['number of iterations (default 30,000) to run for flightplan optimization',\
+										   'i.e. the number of times to randomly select a point and move it.']))
+
+		string="%s\n\n%s"%(string,'      Output:')
+		string="%s\n%s"%(string,fielddisplay(self,'solution'           ,'name of kml solution file'))
+		string="%s\n%s"%(string,fielddisplay(self,'quality'            ,'quality of kml solution'))
+		return string
+		#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if not solution==FlaimSolutionEnum():
+			return md
+
+		md = checkfield(md,'fieldname','flaim.tracks','file',1)
+		if numpy.any(numpy.isnan(md.flaim.criterion)) or not md.flaim.criterion:
+			md = checkfield(md,'fieldname','flaim.targets','file',1)
+		else:
+			md = checkfield(md,'fieldname','flaim.criterion','numel',[md.mesh.numberofvertices,md.mesh.numberofelements])
+
+		return md
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/flowequation.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/flowequation.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/flowequation.py	(revision 21239)
@@ -0,0 +1,162 @@
+import numpy
+import copy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class flowequation(object):
+	"""
+	FLOWEQUATION class definition
+
+	   Usage:
+	      flowequation=flowequation();
+	"""
+
+	def __init__(self): # {{{
+		
+		self.isSIA                          = 0
+		self.isSSA                          = 0
+		self.isL1L2                         = 0
+		self.isHO                           = 0
+		self.isFS                           = 0
+		self.fe_SSA                         = ''
+		self.fe_HO                          = ''
+		self.fe_FS                          = ''
+		self.augmented_lagrangian_r         = 1.
+		self.augmented_lagrangian_rhop      = 1.
+		self.augmented_lagrangian_rlambda   = 1.
+		self.augmented_lagrangian_rholambda = 1.
+		self.XTH_theta                      = 0.
+		self.vertex_equation                = float('NaN')
+		self.element_equation               = float('NaN')
+		self.borderSSA                      = float('NaN')
+		self.borderHO                       = float('NaN')
+		self.borderFS                       = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   flow equation parameters:'
+
+		string="%s\n%s"%(string,fielddisplay(self,'isSIA',"is the Shallow Ice Approximation (SIA) used ?"))
+		string="%s\n%s"%(string,fielddisplay(self,'isSSA',"is the Shelfy-Stream Approximation (SSA) used ?"))
+		string="%s\n%s"%(string,fielddisplay(self,'isL1L2',"are L1L2 equations used ?"))
+		string="%s\n%s"%(string,fielddisplay(self,'isHO',"is the Higher-Order (HO) approximation used ?"))
+		string="%s\n%s"%(string,fielddisplay(self,'isFS',"are the Full-FS (FS) equations used ?"))
+		string="%s\n%s"%(string,fielddisplay(self,'fe_SSA',"Finite Element for SSA: 'P1', 'P1bubble' 'P1bubblecondensed' 'P2'"))
+		string="%s\n%s"%(string,fielddisplay(self,'fe_HO' ,"Finite Element for HO:  'P1' 'P1bubble' 'P1bubblecondensed' 'P1xP2' 'P2xP1' 'P2'"))
+		string="%s\n%s"%(string,fielddisplay(self,'fe_FS' ,"Finite Element for FS:  'P1P1' (debugging only) 'P1P1GLS' 'MINIcondensed' 'MINI' 'TaylorHood' 'LATaylorHood' 'XTaylorHood'"))
+		string="%s\n%s"%(string,fielddisplay(self,'vertex_equation',"flow equation for each vertex"))
+		string="%s\n%s"%(string,fielddisplay(self,'element_equation',"flow equation for each element"))
+		string="%s\n%s"%(string,fielddisplay(self,'borderSSA',"vertices on SSA's border (for tiling)"))
+		string="%s\n%s"%(string,fielddisplay(self,'borderHO',"vertices on HO's border (for tiling)"))
+		string="%s\n%s"%(string,fielddisplay(self,'borderFS',"vertices on FS' border (for tiling)"))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.element_equation=project3d(md,'vector',self.element_equation,'type','element')
+		self.vertex_equation=project3d(md,'vector',self.vertex_equation,'type','node')
+		self.borderSSA=project3d(md,'vector',self.borderSSA,'type','node')
+		self.borderHO=project3d(md,'vector',self.borderHO,'type','node')
+		self.borderFS=project3d(md,'vector',self.borderFS,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		#P1 for SSA
+		self.fe_SSA= 'P1';
+
+		#P1 for HO
+		self.fe_HO= 'P1';
+
+		#MINI condensed element for FS by default
+		self.fe_FS = 'MINIcondensed';
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if (StressbalanceAnalysisEnum() not in analyses and StressbalanceSIAAnalysisEnum() not in analyses) or (solution==TransientSolutionEnum() and not md.transient.isstressbalance):
+			return md
+
+		md = checkfield(md,'fieldname','flowequation.isSIA','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.isSSA','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.isL1L2','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.isHO','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.isFS','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.fe_SSA','values',['P1','P1bubble','P1bubblecondensed','P2','P2bubble'])
+		md = checkfield(md,'fieldname','flowequation.fe_HO' ,'values',['P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P2bubble','P1xP3','P2xP4'])
+		md = checkfield(md,'fieldname','flowequation.fe_FS' ,'values',['P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','XTaylorHood','OneLayerP4z','CrouzeixRaviart'])
+		md = checkfield(md,'fieldname','flowequation.borderSSA','size',[md.mesh.numberofvertices],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.borderHO','size',[md.mesh.numberofvertices],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.borderFS','size',[md.mesh.numberofvertices],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_r','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rhop','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rlambda','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rholambda','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','flowequation.XTH_theta','numel',[1],'>=',0.,'<',.5)
+		if m.strcmp(md.mesh.domaintype(),'2Dhorizontal'):
+			md = checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',[1,2])
+			md = checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements],'values',[1,2])
+		elif m.strcmp(md.mesh.domaintype(),'3D'):
+			md = checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',numpy.arange(0,8+1))
+			md = checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements],'values',numpy.arange(0,8+1))
+		else:
+			raise RuntimeError('mesh type not supported yet')
+		if not (self.isSIA or self.isSSA or self.isL1L2 or self.isHO or self.isFS):
+			md.checkmessage("no element types set for this model")
+
+		if StressbalanceSIAAnalysisEnum() in analyses:
+			if any(self.element_equation==1):
+				if numpy.any(numpy.logical_and(self.vertex_equation,md.mask.groundedice_levelset)):
+					print("\n !!! Warning: SIA's model is not consistent on ice shelves !!!\n")
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','isSIA','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isSSA','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isL1L2','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isHO','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isFS','format','Boolean')
+		WriteData(fid,'enum',FlowequationFeSSAEnum(),'data',StringToEnum(self.fe_SSA)[0],'format','Integer')
+		WriteData(fid,'enum',FlowequationFeHOEnum() ,'data',StringToEnum(self.fe_HO)[0] ,'format','Integer')
+		WriteData(fid,'enum',FlowequationFeFSEnum() ,'data',StringToEnum(self.fe_FS)[0] ,'format','Integer')
+		WriteData(fid,'enum',AugmentedLagrangianREnum(),'data',self.augmented_lagrangian_r ,'format','Double')
+		WriteData(fid,'enum',AugmentedLagrangianRhopEnum(),'data',self.augmented_lagrangian_rhop ,'format','Double')
+		WriteData(fid,'enum',AugmentedLagrangianRlambdaEnum(),'data',self.augmented_lagrangian_rlambda ,'format','Double')
+		WriteData(fid,'enum',AugmentedLagrangianRholambdaEnum(),'data',self.augmented_lagrangian_rholambda ,'format','Double')
+		WriteData(fid,'enum',AugmentedLagrangianThetaEnum() ,'data',self.XTH_theta ,'format','Double')
+		WriteData(fid,'object',self,'fieldname','borderSSA','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'fieldname','borderHO','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'fieldname','borderFS','format','DoubleMat','mattype',1)
+		#convert approximations to enums
+		data=copy.deepcopy(self.vertex_equation)
+		data[numpy.nonzero(data==0)]=NoneApproximationEnum()
+		data[numpy.nonzero(data==1)]=SIAApproximationEnum()
+		data[numpy.nonzero(data==2)]=SSAApproximationEnum()
+		data[numpy.nonzero(data==3)]=L1L2ApproximationEnum()
+		data[numpy.nonzero(data==4)]=HOApproximationEnum()
+		data[numpy.nonzero(data==5)]=FSApproximationEnum()
+		data[numpy.nonzero(data==6)]=SSAHOApproximationEnum()
+		data[numpy.nonzero(data==7)]=HOFSApproximationEnum()
+		data[numpy.nonzero(data==8)]=SSAFSApproximationEnum()
+		WriteData(fid,'data',data,'enum',FlowequationVertexEquationEnum(),'format','DoubleMat','mattype',1)
+		data=copy.deepcopy(self.element_equation)
+		data[numpy.nonzero(data==0)]=NoneApproximationEnum()
+		data[numpy.nonzero(data==1)]=SIAApproximationEnum()
+		data[numpy.nonzero(data==2)]=SSAApproximationEnum()
+		data[numpy.nonzero(data==3)]=L1L2ApproximationEnum()
+		data[numpy.nonzero(data==4)]=HOApproximationEnum()
+		data[numpy.nonzero(data==5)]=FSApproximationEnum()
+		data[numpy.nonzero(data==6)]=SSAHOApproximationEnum()
+		data[numpy.nonzero(data==7)]=SSAFSApproximationEnum()
+		data[numpy.nonzero(data==8)]=HOFSApproximationEnum()
+		WriteData(fid,'data',data,'enum',FlowequationElementEquationEnum(),'format','DoubleMat','mattype',2)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/friction.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/friction.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/friction.py	(revision 21239)
@@ -0,0 +1,58 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class friction(object):
+	"""
+	FRICTION class definition
+
+	   Usage:
+	      friction=friction()
+	"""
+
+	def __init__(self): # {{{
+		self.coefficient = float('NaN')
+		self.p           = float('NaN')
+		self.q           = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="Basal shear stress parameters: Sigma_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b,\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p)"
+
+		string="%s\n%s"%(string,fielddisplay(self,"coefficient","friction coefficient [SI]"))
+		string="%s\n%s"%(string,fielddisplay(self,"p","p exponent"))
+		string="%s\n%s"%(string,fielddisplay(self,"q","q exponent"))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1)
+		self.p=project3d(md,'vector',self.p,'type','element')
+		self.q=project3d(md,'vector',self.q,'type','element')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if StressbalanceAnalysisEnum() not in analyses and ThermalAnalysisEnum() not in analyses:
+			return md
+
+		md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
+		md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'enum',FrictionLawEnum(),'data',1,'format','Integer')
+		WriteData(fid,'object',self,'fieldname','coefficient','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'fieldname','p','format','DoubleMat','mattype',2)
+		WriteData(fid,'object',self,'fieldname','q','format','DoubleMat','mattype',2)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/frictioncoulomb.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/frictioncoulomb.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/frictioncoulomb.py	(revision 21239)
@@ -0,0 +1,63 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class frictioncoulomb(object):
+    """
+    FRICTIONCOULOMB class definition
+
+    Usage:
+        frictioncoulomb=frictioncoulomb()
+    """
+
+    def __init__(self): # {{{
+        self.coefficient = float('NaN')
+        self.coefficientcoulomb = float('NaN')
+        self.p = float('NaN')
+	self.q = float('NaN')
+
+	#set defaults
+	self.setdefaultparameters()
+
+    #}}}
+    def __repr__(self): # {{{
+	string="Basal shear stress parameters: Sigma_b = min(coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b,\n coefficientcoulomb^2 * rho_i * g * (h-h_f)), (effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p)."
+
+	string="%s\n%s"%(string,fielddisplay(self,"coefficient","power law (Weertman) friction coefficient [SI]"))
+	string="%s\n%s"%(string,fielddisplay(self,"coefficientcoulomb","Coulomb friction coefficient [SI]"))
+	string="%s\n%s"%(string,fielddisplay(self,"p","p exponent"))
+	string="%s\n%s"%(string,fielddisplay(self,"q","q exponent"))
+	return string
+    #}}}
+    def extrude(self,md): # {{{
+	self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1)
+	self.coefficientcoulomb=project3d(md,'vector',self.coefficientcoulomb,'type','node','layer',1)
+	self.p=project3d(md,'vector',self.p,'type','element')
+	self.q=project3d(md,'vector',self.q,'type','element')
+	return self
+    #}}}
+    def setdefaultparameters(self): # {{{
+	return self
+    #}}}
+    def checkconsistency(self,md,solution,analyses):    # {{{
+
+	#Early return
+	if StressbalanceAnalysisEnum() not in analyses and ThermalAnalysisEnum() not in analyses:
+	    return md
+
+	md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1)
+	md = checkfield(md,'fieldname','friction.coefficientcoulomb','timeseries',1,'NaN',1,'Inf',1)
+	md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
+	md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
+
+	return md
+    # }}}
+    def marshall(self,md,fid):    # {{{
+	WriteData(fid,'enum',FrictionLawEnum(),'data',1,'format','Integer')
+	WriteData(fid,'object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'enum',FrictionCoefficientEnum())
+	WriteData(fid,'object',self,'fieldname','coefficientcoulomb','format','DoubleMat','mattype',1,'enum',FrictionCoefficientcoulombEnum())
+	WriteData(fid,'object',self,'fieldname','p','format','DoubleMat','mattype',2,'enum',FrictionPEnum())
+	WriteData(fid,'object',self,'fieldname','q','format','DoubleMat','mattype',2,'enum',FrictionQEnum())
+    # }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/frictionweertman.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/frictionweertman.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/frictionweertman.py	(revision 21239)
@@ -0,0 +1,48 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class frictionweertman(object):
+	"""
+	FRICTIONWEERTMAN class definition
+
+	   Usage:
+	      frictionweertman=frictionweertman();
+	"""
+
+	def __init__(self): # {{{
+		self.C = float('NaN')
+		self.m = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="Weertman sliding law parameters: Sigma_b = C^(-1/m) * |u_b|^(1/m-1) * u_b"
+
+		string="%s\n%s"%(string,fielddisplay(self,"C","friction coefficient [SI]"))
+		string="%s\n%s"%(string,fielddisplay(self,"m","m exponent"))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if StressbalanceAnalysisEnum() not in analyses and ThermalAnalysisEnum() not in analyses:
+			return md
+
+		md = checkfield(md,'fieldname','friction.C','timeseries',1,'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','friction.m','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'enum',FrictionLawEnum(),'data',2,'format','Integer')
+		WriteData(fid,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',1)
+		WriteData(fid,'class','friction','object',self,'fieldname','m','format','DoubleMat','mattype',2)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/geometry.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/geometry.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/geometry.py	(revision 21239)
@@ -0,0 +1,64 @@
+from project3d import project3d
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class geometry(object):
+	"""
+	GEOMETRY class definition
+
+	   Usage:
+	      geometry=geometry();
+	"""
+
+	def __init__(self): # {{{
+		self.surface           = float('NaN')
+		self.thickness         = float('NaN')
+		self.base               = float('NaN')
+		self.bed        = float('NaN')
+		self.hydrostatic_ratio = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+
+		string="   geometry parameters:"
+		string="%s\n%s"%(string,fielddisplay(self,'surface','ice upper surface elevation [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'thickness','ice thickness [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'base','ice base elevation [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'bed','bed elevation [m]'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.surface=project3d(md,'vector',self.surface,'type','node')
+		self.thickness=project3d(md,'vector',self.thickness,'type','node')
+		self.hydrostatic_ratio=project3d(md,'vector',self.hydrostatic_ratio,'type','node')
+		self.base=project3d(md,'vector',self.base,'type','node')
+		self.bed=project3d(md,'vector',self.bed,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','geometry.surface'  ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','geometry.base'      ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','geometry.thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices],'>',0,'timeseries',1)
+		if any(abs(self.thickness-self.surface+self.base)>10**-9):
+			md.checkmessage("equality thickness=surface-base violated")
+		if solution==TransientSolutionEnum() and md.transient.isgroundingline:
+			md = checkfield(md,'fieldname','geometry.bed','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'data',self.surface,'format','DoubleMat','mattype',1,'enum',SurfaceEnum())
+		WriteData(fid,'data',self.thickness,'format','DoubleMat','mattype',1,'enum',ThicknessEnum(),'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'data',self.base,'format','DoubleMat','mattype',1,'enum',BaseEnum())
+		WriteData(fid,'data',self.bed,'format','DoubleMat','mattype',1,'enum',BedEnum())
+		WriteData(fid,'object',self,'fieldname','hydrostatic_ratio','format','DoubleMat','mattype',1)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/gia.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/gia.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/gia.py	(revision 21239)
@@ -0,0 +1,64 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class gia(object):
+	"""
+	GIA class definition
+
+	   Usage:
+	      gia=gia();
+	"""
+
+	def __init__(self): # {{{
+		self.mantle_viscosity              = float('NaN');
+		self.lithosphere_thickness         = float('NaN');
+		self.cross_section_shape           = 0;
+	
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		
+		string='   gia solution parameters:' 
+		
+		string="%s\n%s"%(string,fielddisplay(self,'mantle_viscosity','mantle viscosity constraints (NaN means no constraint) (Pa s)'))
+		string="%s\n%s"%(string,fielddisplay(self,'lithosphere_thickness','lithosphere thickness constraints (NaN means no constraint) (m)'))
+		string="%s\n%s"%(string,fielddisplay(self,'cross_section_shape',"1: square-edged, 2: elliptical-edged surface"))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.mantle_viscosity=project3d(md,'vector',self.mantle_viscosity,'type','node')
+		self.lithosphere_thickness=project3d(md,'vector',self.lithosphere_thickness,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		self.cross_section_shape=1; 
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		# Early return 
+		if (GiaAnalysisEnum() not in  analyses):
+			return md 
+		
+		md = checkfield(md,'fieldname','gia.mantle_viscosity','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0)
+		md = checkfield(md,'fieldname','gia.lithosphere_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0)
+		md = checkfield(md,'fieldname','gia.cross_section_shape','numel',[1],'values',[1,2])
+
+		#be sure that if we are running a masstransport ice flow model coupled with gia, that thickness forcings 
+		#are not provided into the future.
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		WriteData(fid,'object',self,'fieldname','mantle_viscosity','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'fieldname','lithosphere_thickness','format','DoubleMat','mattype',1,'scale',10.**3.);
+		WriteData(fid,'object',self,'fieldname','cross_section_shape','format','Integer');
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/groundingline.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/groundingline.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/groundingline.py	(revision 21239)
@@ -0,0 +1,54 @@
+import numpy
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class groundingline(object):
+	"""
+	GROUNDINGLINE class definition
+
+	   Usage:
+	      groundingline=groundingline();
+	"""
+
+	def __init__(self): # {{{
+		self.migration=''
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   grounding line migration parameters:'
+
+		string="%s\n%s"%(string,fielddisplay(self,'migration','type of grounding line migration: ''SoftMigration'',''AggressiveMigration'',''SubelementMigration'',''SubelementMigration2'',''Contact'',''None'''))
+		return string
+		#}}}	
+	def setdefaultparameters(self): # {{{
+
+		#Type of migration
+		self.migration='None'
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,fieldname='groundingline.migration',values=['None','AggressiveMigration','SoftMigration','SubelementMigration','SubelementMigration2','Contact','GroundingOnly'])
+
+		if not m.strcmp(self.migration,'None'):
+			if numpy.any(numpy.isnan(md.geometry.bed)):
+				md.checkmessage("requesting grounding line migration, but bathymetry is absent!")
+			pos=numpy.nonzero(md.mask.groundedice_levelset>0.)[0]
+			if any(numpy.abs(md.geometry.base[pos]-md.geometry.bed[pos])>10**-10):
+				md.checkmessage("base not equal to bed on grounded ice!")
+			if any(md.geometry.bed - md.geometry.base > 10**-9):
+				md.checkmessage("bed superior to base on floating ice!")
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'data',StringToEnum(self.migration)[0],'enum',GroundinglineMigrationEnum(),'format','Integer')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/hydrologydc.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/hydrologydc.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/hydrologydc.py	(revision 21239)
@@ -0,0 +1,219 @@
+import numpy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class hydrologydc(object):
+	"""
+	Hydrologydc class definition
+
+	Usage:
+		hydrologydc=hydrologydc();
+	"""
+
+	def __init__(self): # {{{
+		self.water_compressibility    = 0
+		self.isefficientlayer         = 0
+		self.penalty_factor           = 0
+		self.penalty_lock             = 0
+		self.rel_tol                  = 0
+		self.max_iter                 = 0
+		self.sedimentlimit_flag       = 0
+		self.sedimentlimit            = 0
+		self.transfer_flag            = 0
+		self.leakage_factor           = 0
+		self.basal_moulin_input       = float('NaN')
+
+		self.spcsediment_head         = float('NaN')
+		self.sediment_transmitivity   = float('NaN')
+		self.sediment_compressibility = 0
+		self.sediment_porosity        = 0
+		self.sediment_thickness       = 0
+
+
+		self.spcepl_head              = float('NaN')
+		self.mask_eplactive_node      = float('NaN')
+		self.epl_compressibility      = 0
+		self.epl_porosity             = 0
+		self.epl_initial_thickness    = 0
+		self.epl_colapse_thickness    = 0
+		self.epl_thick_comp           = 0
+		self.epl_max_thickness        = 0
+		self.epl_conductivity         = 0
+		self.eplflip_lock             = 0
+				 
+		#set defaults
+		self.setdefaultparameters()
+	#}}}
+	def __repr__(self): # {{{
+		string='   hydrology Dual Porous Continuum Equivalent parameters:'
+		string='   - general parameters'
+		string="%s\n%s"%(string,fielddisplay(self,'water_compressibility','compressibility of water [Pa^-1]'))
+		string="%s\n%s"%(string,fielddisplay(self,'isefficientlayer','do we use an efficient drainage system [1: true 0: false]'))
+		string="%s\n%s"%(string,fielddisplay(self,'penalty_factor','exponent of the value used in the penalisation method [dimensionless]'))
+		string="%s\n%s"%(string,fielddisplay(self,'penalty_lock','stabilize unstable constraints that keep zigzagging after n iteration (default is 0, no stabilization)'))
+		string="%s\n%s"%(string,fielddisplay(self,'rel_tol','tolerance of the nonlinear iteration for the transfer between layers [dimensionless]'))
+		string="%s\n%s"%(string,fielddisplay(self,'max_iter','maximum number of nonlinear iteration'))
+		string="%s\n%s"%(string,fielddisplay(self,'basal_moulin_input','water flux at a given point [m3 s-1]'))
+		string="%s\n%s"%(string,fielddisplay(self,'sedimentlimit_flag','what kind of upper limit is applied for the inefficient layer'))
+		string="%s\n\t\t%s"%(string,'0: no limit')
+		string="%s\n\t\t%s"%(string,'1: user defined sedimentlimit')
+		string="%s\n\t\t%s"%(string,'2: hydrostatic pressure')
+		string="%s\n\t\t%s"%(string,'3: normal stress')
+	
+		if self.sedimentlimit_flag==1:
+			string="%s\n%s"%(string,fielddisplay(self,'sedimentlimit','user defined upper limit for the inefficient layer [m]'))
+
+		string="%s\n%s"%(string,fielddisplay(self,'transfer_flag','what kind of transfer method is applied between the layers'))
+		string="%s\n\t\t%s"%(string,'0: no transfer')
+		string="%s\n\t\t%s"%(string,'1: constant leakage factor: leakage_factor')
+			 
+		if self.transfer_flag is 1:
+			string="%s\n%s"%(string,fielddisplay(self,'leakage_factor','user defined leakage factor [m]'))
+
+		string="%s\n%s"%(string,'   - for the sediment layer')
+		string="%s\n%s"%(string,fielddisplay(self,'spcsediment_head','sediment water head constraints (NaN means no constraint) [m above MSL]'))
+		string="%s\n%s"%(string,fielddisplay(self,'sediment_compressibility','sediment compressibility [Pa^-1]'))
+		string="%s\n%s"%(string,fielddisplay(self,'sediment_porosity','sediment [dimensionless]'))
+		string="%s\n%s"%(string,fielddisplay(self,'sediment_thickness','sediment thickness [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'sediment_transmitivity','sediment transmitivity [m^2/s]'))
+
+		if self.isefficientlayer==1:
+			string="%s\n%s"%(string,'   - for the epl layer')
+			string="%s\n%s"%(string,fielddisplay(self,'spcepl_head','epl water head constraints (NaN means no constraint) [m above MSL]'))
+			string="%s\n%s"%(string,fielddisplay(self,'mask_eplactive_node','active (1) or not (0) EPL'))
+			string="%s\n%s"%(string,fielddisplay(self,'epl_compressibility','epl compressibility [Pa^-1]'))
+			string="%s\n%s"%(string,fielddisplay(self,'epl_porosity','epl [dimensionless]'))
+			string="%s\n%s"%(string,fielddisplay(self,'epl_max_thickness','epl initial thickness [m]'))
+			string="%s\n%s"%(string,fielddisplay(self,'epl_initial_thickness','epl initial thickness [m]'))			
+			string="%s\n%s"%(string,fielddisplay(self,'epl_colapse_thickness','epl colapsing thickness [m]'))
+			string="%s\n%s"%(string,fielddisplay(self,'epl_thick_comp','epl thickness computation flag'))
+			string="%s\n%s"%(string,fielddisplay(self,'epl_conductivity','epl conductivity [m^2/s]'))
+			string="%s\n%s"%(string,fielddisplay(self,'eplflip_lock','lock epl activity to avoid flip-floping (default is 0, no stabilization)'))
+		return string
+#}}}
+	def extrude(self,md): # {{{
+		self.spcsediment_head=project3d(md,'vector',self.spcsediment_head,'type','node','layer',1)
+		self.spcepl_head=project3d(md,'vector',self.spcepl_head,'type','node','layer',1)
+		self.mask_eplactive_node=project3d(md,'vector',self.mask_eplactive_node,'type','node','layer',1)
+		self.sediment_transmitivity=project3d(md,'vector',self.sediment_transmitivity,'type','node','layer',1)
+		self.basal_moulin_input=project3d(md,'vector',self.basal_moulin_input,'type','node','layer',1)
+		if self.isefficientlayer==1 :
+			self.spcepl_head=project3d(md,'vector',self.spcepl_head,'type','node','layer',1)
+		return self
+	#}}}
+	def setdefaultparameters(self): #{{{ 
+
+		#Parameters from de Fleurian 2014
+		self.water_compressibility    = 5.04e-10
+		self.isefficientlayer         = 1
+		self.penalty_factor           = 3
+		self.penalty_lock             = 0
+		self.rel_tol                  = 1.0e-06
+		self.max_iter                 = 100
+		self.sedimentlimit_flag       = 0
+		self.sedimentlimit            = 0
+		self.transfer_flag            = 0
+		self.leakage_factor           = 10.0
+
+		self.sediment_compressibility = 1.0e-08
+		self.sediment_porosity        = 0.4
+		self.sediment_thickness       = 20.0
+		self.sediment_transmitivity   = 8.0e-04
+
+		self.epl_compressibility      = 1.0e-08
+		self.epl_porosity             = 0.4
+		self.epl_initial_thickness    = 1.0
+		self.epl_colapse_thickness    = 1.0e-3
+		self.epl_thick_comp           = 1
+		self.epl_max_thickness        = 5.0
+		self.epl_conductivity         = 8.0e-02
+		self.eplflip_lock             = 0
+		
+		return self
+	# }}}
+	def initialize(self,md): # {{{
+		if numpy.all(numpy.isnan(self.basal_moulin_input)):
+			self.basal_moulin_input=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no hydrology.basal_moulin_input specified: values set as zero")
+
+		return self
+	# }}}
+	def checkconsistency(self,md,solution,analyses): #{{{ 
+
+		#Early return
+		if HydrologyDCInefficientAnalysisEnum() not in analyses and HydrologyDCEfficientAnalysisEnum() not in analyses:
+			return md
+
+		md = checkfield(md,'fieldname','hydrology.water_compressibility','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','hydrology.isefficientlayer','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','hydrology.penalty_factor','>',0.,'numel',[1])
+		md = checkfield(md,'fieldname','hydrology.penalty_lock','>=',0.,'numel',[1])
+		md = checkfield(md,'fieldname','hydrology.rel_tol','>',0.,'numel',[1])
+		md = checkfield(md,'fieldname','hydrology.max_iter','>',0.,'numel',[1])
+		md = checkfield(md,'fieldname','hydrology.sedimentlimit_flag','numel',[1],'values',[0,1,2,3])
+		md = checkfield(md,'fieldname','hydrology.transfer_flag','numel',[1],'values',[0,1])
+
+		if self.sedimentlimit_flag==1:
+			md = checkfield(md,'fieldname','hydrology.sedimentlimit','>',0.,'numel',[1])
+
+		if self.transfer_flag==1:
+			md = checkfield(md,'fieldname','hydrology.leakage_factor','>',0.,'numel',[1])
+
+		md = checkfield(md,'fieldname','hydrology.basal_moulin_input','NaN',1,'Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','hydrology.spcsediment_head','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','hydrology.sediment_compressibility','>',0.,'numel',[1])
+		md = checkfield(md,'fieldname','hydrology.sediment_porosity','>',0.,'numel',[1])
+		md = checkfield(md,'fieldname','hydrology.sediment_thickness','>',0.,'numel',[1])
+		md = checkfield(md,'fieldname','hydrology.sediment_transmitivity','>=',0,'size',[md.mesh.numberofvertices,1])
+		if self.isefficientlayer==1:
+			md = checkfield(md,'fieldname','hydrology.spcepl_head','Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','hydrology.mask_eplactive_node','size',[md.mesh.numberofvertices,1],'values',[0,1])
+			md = checkfield(md,'fieldname','hydrology.epl_compressibility','>',0.,'numel',[1])
+			md = checkfield(md,'fieldname','hydrology.epl_porosity','>',0.,'numel',[1])
+			md = checkfield(md,'fieldname','hydrology.epl_max_thickness','numel',[1],'>',0.)
+			md = checkfield(md,'fieldname','hydrology.epl_initial_thickness','numel',[1],'>',0.)
+			md = checkfield(md,'fieldname','hydrology.epl_colapse_thickness','numel',[1],'>',0.)
+			md = checkfield(md,'fieldname','hydrology.epl_thick_comp','numel',[1],'values',[0,1])
+			md = checkfield(md,'fieldname','hydrology.eplflip_lock','>=',0.,'numel',[1])
+			if self.epl_colapse_thickness > self.epl_initial_thickness:
+				md.checkmessage('Colapsing thickness for EPL larger than initial thickness')
+			md = checkfield(md,'fieldname','hydrology.epl_conductivity','numel',[1],'>',0.)
+	# }}}
+	def marshall(self,md,fid): #{{{ 
+		WriteData(fid,'enum',HydrologyModelEnum(),'data',HydrologydcEnum(),'format','Integer')
+		WriteData(fid,'object',self,'fieldname','water_compressibility','format','Double')
+		WriteData(fid,'object',self,'fieldname','isefficientlayer','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','penalty_factor','format','Double')
+		WriteData(fid,'object',self,'fieldname','penalty_lock','format','Integer')
+		WriteData(fid,'object',self,'fieldname','rel_tol','format','Double')
+		WriteData(fid,'object',self,'fieldname','max_iter','format','Integer')
+		WriteData(fid,'object',self,'fieldname','sedimentlimit_flag','format','Integer')
+		WriteData(fid,'object',self,'fieldname','transfer_flag','format','Integer')
+		if self.sedimentlimit_flag==1:
+			WriteData(fid,'object',self,'fieldname','sedimentlimit','format','Double')
+
+		if self.transfer_flag==1:
+			WriteData(fid,'object',self,'fieldname','leakage_factor','format','Double')
+
+		WriteData(fid,'object',self,'fieldname','basal_moulin_input','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'fieldname','spcsediment_head','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'fieldname','sediment_compressibility','format','Double')
+		WriteData(fid,'object',self,'fieldname','sediment_porosity','format','Double')			
+		WriteData(fid,'object',self,'fieldname','sediment_thickness','format','Double')
+		WriteData(fid,'object',self,'fieldname','sediment_transmitivity','format','DoubleMat','mattype',1)		
+
+		if self.isefficientlayer==1:	
+			WriteData(fid,'object',self,'fieldname','spcepl_head','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)	
+			WriteData(fid,'object',self,'fieldname','mask_eplactive_node','format','DoubleMat','mattype',1)
+			WriteData(fid,'object',self,'fieldname','epl_compressibility','format','Double')			
+			WriteData(fid,'object',self,'fieldname','epl_porosity','format','Double')			
+			WriteData(fid,'object',self,'fieldname','epl_max_thickness','format','Double')
+			WriteData(fid,'object',self,'fieldname','epl_initial_thickness','format','Double')			
+			WriteData(fid,'object',self,'fieldname','epl_colapse_thickness','format','Double')
+			WriteData(fid,'object',self,'fieldname','epl_thick_comp','format','Integer')			
+			WriteData(fid,'object',self,'fieldname','epl_conductivity','format','Double')
+			WriteData(fid,'object',self,'fieldname','eplflip_lock','format','Integer')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/hydrologyshreve.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/hydrologyshreve.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/hydrologyshreve.py	(revision 21239)
@@ -0,0 +1,54 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class hydrologyshreve(object):
+	"""
+	HYDROLOGYSHREVE class definition
+
+	   Usage:
+	      hydrologyshreve=hydrologyshreve();
+	"""
+
+	def __init__(self): # {{{
+		self.spcwatercolumn = float('NaN')
+		self.stabilization  = 0
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		
+		string='   hydrologyshreve solution parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'spcwatercolumn','water thickness constraints (NaN means no constraint) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'stabilization','artificial diffusivity (default is 1). can be more than 1 to increase diffusivity.'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#Type of stabilization to use 0:nothing 1:artificial_diffusivity
+		self.stabilization=1
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		
+		#Early return
+		if HydrologyShreveAnalysisEnum() not in analyses:
+			return md
+
+		md = checkfield(md,'fieldname','hydrology.spcwatercolumn','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','hydrology.stabilization','>=',0)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'enum',HydrologyModelEnum(),'data',HydrologyshreveEnum(),'format','Integer');
+		WriteData(fid,'object',self,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'fieldname','stabilization','format','Double')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/independent.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/independent.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/independent.py	(revision 21239)
@@ -0,0 +1,70 @@
+import numpy
+from pairoptions import pairoptions
+from fielddisplay import fielddisplay
+import MatlabFuncs as m
+from EnumDefinitions import *
+
+class independent(object):
+	"""
+	INDEPENDENT class definition
+
+	   Usage:
+	      independent=independent();
+	"""
+
+	def __init__(self,**kwargs):    # {{{
+		self.name                 = ''
+		self.type                 = ''
+		self.fos_forward_index    = float('NaN')
+		self.fov_forward_indices  = numpy.array([])
+		self.nods                 = 0
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#use provided options to change fields
+		options=pairoptions(**kwargs)
+
+		#OK get other fields
+		self=options.AssignObjectFields(self)
+	# }}}
+	def __repr__(self):    # {{{
+		s ="   independent variable:\n"
+
+		s+="%s\n" % fielddisplay(self,'name',"variable name (must match corresponding Enum)")
+		s+="%s\n" % fielddisplay(self,'type',"type of variable ('vertex' or 'scalar')")
+		if not numpy.isnan(self.fos_forward_index):
+			s+="%s\n" % fielddisplay(self,'fos_forward_index',"index for fos_foward driver of ADOLC")
+		if numpy.any(numpy.logical_not(numpy.isnan(self.fov_forward_indices))):
+			s+="%s\n" % fielddisplay(self,'fov_forward_indices',"indices for fov_foward driver of ADOLC")
+
+		return s
+	# }}}
+	def setdefaultparameters(self):    # {{{
+		#do nothing
+		return self
+	# }}}
+	def checkconsistency(self,md,i,solution,analyses,driver):    # {{{
+		if not numpy.isnan(self.fos_forward_index):
+			if not strcmpi(driver,'fos_forward'):
+				raise TypeError("cannot declare an independent with a fos_forward_index when the driver is not fos_forward!")
+			if self.nods==0:
+				raise TypeError("independent checkconsistency error: nods should be set to the size of the independent variable")
+
+		if self.fov_forward_indices:
+			if not strcmpi(driver,'fov_forward'):
+				raise TypeError("cannot declare an independent with fov_forward_indices when the driver is not fov_forward!")
+			if self.nods==0:
+				raise TypeError("independent checkconsistency error: nods should be set to the size of the independent variable")
+			md = checkfield(md,'fieldname',"autodiff.independents[%d].fov_forward_indices" % i,'>=',1,'<=',self.nods,'size',[float('NaN'),1])
+
+		return md
+	# }}}
+	def typetoscalar(self):    # {{{
+		if   strcmpi(self.type,'scalar'):
+			scalar=0
+		elif strcmpi(self.type,'vertex'):
+			scalar=1
+
+		return scalar
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/initialization.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/initialization.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/initialization.py	(revision 21239)
@@ -0,0 +1,132 @@
+import numpy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class initialization(object):
+	"""
+	INITIALIZATION class definition
+	
+	Usage:
+	initialization=initialization();
+	"""
+
+	def __init__(self): # {{{
+					
+		self.vx            = float('NaN')
+		self.vy            = float('NaN')
+		self.vz            = float('NaN')
+		self.vel           = float('NaN')
+		self.pressure      = float('NaN')
+		self.temperature   = float('NaN')
+		self.waterfraction = float('NaN')
+		self.watercolumn   = float('NaN')
+		self.sediment_head = float('NaN')
+		self.epl_head      = float('NaN')
+		self.epl_thickness = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   initial field values:'
+		string="%s\n%s"%(string,fielddisplay(self,'vx','x component of velocity [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vy','y component of velocity [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vz','z component of velocity [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vel','velocity norm [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'pressure','pressure [Pa]'))
+		string="%s\n%s"%(string,fielddisplay(self,'temperature','temperature [K]'))
+		string="%s\n%s"%(string,fielddisplay(self,'waterfraction','fraction of water in the ice'))
+		string="%s\n%s"%(string,fielddisplay(self,'watercolumn','thickness of subglacial water [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'sediment_head','sediment water head of subglacial system [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'epl_head','epl water head of subglacial system [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'epl_thickness','thickness of the epl [m]'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.vx=project3d(md,'vector',self.vx,'type','node')
+		self.vy=project3d(md,'vector',self.vy,'type','node')
+		self.vz=project3d(md,'vector',self.vz,'type','node')
+		self.vel=project3d(md,'vector',self.vel,'type','node')
+		self.temperature=project3d(md,'vector',self.temperature,'type','node')
+		self.waterfraction=project3d(md,'vector',self.waterfraction,'type','node')
+		self.watercolumn=project3d(md,'vector',self.watercolumn,'type','node')
+		self.sediment_head=project3d(md,'vector',self.sediment_head,'type','node','layer',1)
+		self.epl_head=project3d(md,'vector',self.epl_head,'type','node','layer',1)
+		self.epl_thickness=project3d(md,'vector',self.epl_thickness,'type','node','layer',1)
+
+		#Lithostatic pressure by default
+		self.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.z.reshape(-1,1))
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		if StressbalanceAnalysisEnum() in analyses:
+			if not numpy.any(numpy.logical_or(numpy.isnan(md.initialization.vx),numpy.isnan(md.initialization.vy))):
+				md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+				md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			#Triangle with zero velocity
+			if numpy.any(numpy.logical_and(numpy.sum(numpy.abs(md.initialization.vx[md.mesh.elements-1]),axis=1)==0,\
+			                               numpy.sum(numpy.abs(md.initialization.vy[md.mesh.elements-1]),axis=1)==0)):
+				md.checkmessage("at least one triangle has all its vertices with a zero velocity")
+		if ThermalAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.temperature','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			if md.mesh.dimension()==3:
+				md = checkfield(md,'fieldname','initialization.vz','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.pressure','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			if (EnthalpyAnalysisEnum() in analyses and md.thermal.isenthalpy):
+				md = checkfield(md,'fieldname','initialization.waterfraction','>=',0,'size',[md.mesh.numberofvertices])
+				md = checkfield(md,'fieldname','initialization.watercolumn'  ,'>=',0,'size',[md.mesh.numberofvertices])
+		if HydrologyShreveAnalysisEnum() in analyses:
+			if hasattr(md.hydrology,'hydrologyshreve'):
+				md = checkfield(md,'fieldname','initialization.watercolumn','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		if HydrologyDCInefficientAnalysisEnum() in analyses:
+			if hasattr(md.hydrology,'hydrologydc'):
+				md = checkfield(md,'fieldname','initialization.sediment_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+		if HydrologyDCEfficientAnalysisEnum() in analyses:
+			if hasattr(md.hydrology,'hydrologydc'):
+				if md.hydrology.isefficientlayer==1:
+					md = checkfield(md,'fieldname','initialization.epl_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+					md = checkfield(md,'fieldname','initialization.epl_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'data',self.vx,'format','DoubleMat','mattype',1,'enum',VxEnum(),'scale',1./yts)
+		WriteData(fid,'data',self.vy,'format','DoubleMat','mattype',1,'enum',VyEnum(),'scale',1./yts)
+		WriteData(fid,'data',self.vz,'format','DoubleMat','mattype',1,'enum',VzEnum(),'scale',1./yts)
+		WriteData(fid,'data',self.pressure,'format','DoubleMat','mattype',1,'enum',PressureEnum())
+		WriteData(fid,'data',self.temperature,'format','DoubleMat','mattype',1,'enum',TemperatureEnum())
+		WriteData(fid,'data',self.waterfraction,'format','DoubleMat','mattype',1,'enum',WaterfractionEnum())
+		WriteData(fid,'data',self.watercolumn,'format','DoubleMat','mattype',1,'enum',WatercolumnEnum())
+		WriteData(fid,'data',self.sediment_head,'format','DoubleMat','mattype',1,'enum',SedimentHeadEnum())
+		WriteData(fid,'data',self.epl_head,'format','DoubleMat','mattype',1,'enum',EplHeadEnum())
+		WriteData(fid,'data',self.epl_thickness,'format','DoubleMat','mattype',1,'enum',HydrologydcEplThicknessEnum())
+
+		
+		if md.thermal.isenthalpy:
+			tpmp = md.materials.meltingpoint - md.materials.beta*md.initialization.pressure;
+			pos  = numpy.nonzero(md.initialization.temperature > tpmp)[0]
+			enthalpy      = md.materials.heatcapacity*(md.initialization.temperature-md.constants.referencetemperature);
+			enthalpy[pos] = md.materials.heatcapacity*tpmp[pos].reshape(-1,1) - md.constants.referencetemperature + md.materials.latentheat*md.initialization.waterfraction[pos].reshape(-1,1)
+			WriteData(fid,'data',enthalpy,'format','DoubleMat','mattype',1,'enum',EnthalpyEnum());
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/inversion.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/inversion.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/inversion.py	(revision 21239)
@@ -0,0 +1,194 @@
+import numpy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+from supportedcontrols import supportedcontrols
+from supportedcostfunctions import supportedcostfunctions
+from marshallcostfunctions import marshallcostfunctions
+
+class inversion(object):
+	"""
+	INVERSION class definition
+
+	   Usage:
+	      inversion=inversion()
+	"""
+
+	def __init__(self): # {{{
+		self.iscontrol                   = 0
+		self.incomplete_adjoint          = 0
+		self.control_parameters          = float('NaN')
+		self.nsteps                      = 0
+		self.maxiter_per_step            = float('NaN')
+		self.cost_functions              = float('NaN')
+		self.cost_functions_coefficients = float('NaN')
+		self.gradient_scaling            = float('NaN')
+		self.cost_function_threshold     = 0
+		self.min_parameters              = float('NaN')
+		self.max_parameters              = float('NaN')
+		self.step_threshold              = float('NaN')
+		self.vx_obs                      = float('NaN')
+		self.vy_obs                      = float('NaN')
+		self.vz_obs                      = float('NaN')
+		self.vel_obs                     = float('NaN')
+		self.thickness_obs               = float('NaN')
+		self.surface_obs                 = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   inversion parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'iscontrol','is inversion activated?'))
+		string="%s\n%s"%(string,fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity'))
+		string="%s\n%s"%(string,fielddisplay(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))
+		string="%s\n%s"%(string,fielddisplay(self,'nsteps','number of optimization searches'))
+		string="%s\n%s"%(string,fielddisplay(self,'cost_functions','indicate the type of response for each optimization step'))
+		string="%s\n%s"%(string,fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
+		string="%s\n%s"%(string,fielddisplay(self,'cost_function_threshold','misfit convergence criterion. Default is 1%, NaN if not applied'))
+		string="%s\n%s"%(string,fielddisplay(self,'maxiter_per_step','maximum iterations during each optimization step'))
+		string="%s\n%s"%(string,fielddisplay(self,'gradient_scaling','scaling factor on gradient direction during optimization, for each optimization step'))
+		string="%s\n%s"%(string,fielddisplay(self,'step_threshold','decrease threshold for misfit, default is 30%'))
+		string="%s\n%s"%(string,fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fielddisplay(self,'vx_obs','observed velocity x component [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vy_obs','observed velocity y component [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'thickness_obs','observed thickness [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'surface_obs','observed surface elevation [m]'))
+		string="%s\n%s"%(string,'Available cost functions:')
+		string="%s\n%s"%(string,'   101: SurfaceAbsVelMisfit')
+		string="%s\n%s"%(string,'   102: SurfaceRelVelMisfit')
+		string="%s\n%s"%(string,'   103: SurfaceLogVelMisfit')
+		string="%s\n%s"%(string,'   104: SurfaceLogVxVyMisfit')
+		string="%s\n%s"%(string,'   105: SurfaceAverageVelMisfit')
+		string="%s\n%s"%(string,'   201: ThicknessAbsMisfit')
+		string="%s\n%s"%(string,'   501: DragCoefficientAbsGradient')
+		string="%s\n%s"%(string,'   502: RheologyBbarAbsGradient')
+		string="%s\n%s"%(string,'   503: ThicknessAbsGradient')
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node')
+		self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node')
+		self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node')
+		self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node')
+		if not numpy.any(numpy.isnan(self.cost_functions_coefficients)):
+			self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node')
+		if not numpy.any(numpy.isnan(self.min_parameters)):
+			self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node')
+		if not numpy.any(numpy.isnan(self.max_parameters)):
+			self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#default is incomplete adjoint for now
+		self.incomplete_adjoint=1
+
+		#parameter to be inferred by control methods (only
+		#drag and B are supported yet)
+		self.control_parameters='FrictionCoefficient'
+
+		#number of steps in the control methods
+		self.nsteps=20
+
+		#maximum number of iteration in the optimization algorithm for
+		#each step
+		self.maxiter_per_step=20*numpy.ones(self.nsteps)
+
+		#the inversed parameter is updated as follows:
+		#new_par=old_par + gradient_scaling(n)*C*gradient with C in [0 1];
+		#usually the gradient_scaling must be of the order of magnitude of the 
+		#inversed parameter (10^8 for B, 50 for drag) and can be decreased
+		#after the first iterations
+		self.gradient_scaling=50*numpy.ones((self.nsteps,1))
+
+		#several responses can be used:
+		self.cost_functions=101
+
+		#step_threshold is used to speed up control method. When
+		#misfit(1)/misfit(0) < self.step_threshold, we go directly to
+		#the next step
+		self.step_threshold=.7*numpy.ones(self.nsteps) #30 per cent decrement
+
+		#cost_function_threshold is a criteria to stop the control methods.
+		#if J[n]-J[n-1]/J[n] < criteria, the control run stops
+		#NaN if not applied
+		self.cost_function_threshold=float('NaN')    #not activated 
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if not self.iscontrol:
+			return md
+
+		num_controls=numpy.size(md.inversion.control_parameters)
+		num_costfunc=numpy.size(md.inversion.cost_functions)
+
+		md = checkfield(md,'fieldname','inversion.iscontrol','values',[0,1])
+		md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0,1])
+		md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())
+		md = checkfield(md,'fieldname','inversion.nsteps','numel',[1],'>=',0)
+		md = checkfield(md,'fieldname','inversion.maxiter_per_step','size',[md.inversion.nsteps],'>=',0)
+		md = checkfield(md,'fieldname','inversion.step_threshold','size',[md.inversion.nsteps])
+		md = checkfield(md,'fieldname','inversion.cost_functions','size',[num_costfunc],'values',supportedcostfunctions())
+		md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices,num_costfunc],'>=',0)
+		md = checkfield(md,'fieldname','inversion.gradient_scaling','size',[md.inversion.nsteps,num_controls])
+		md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices,num_controls])
+		md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices,num_controls])
+
+		#Only SSA, HO and FS are supported right now
+		if solution==StressbalanceSolutionEnum():
+			if not (md.flowequation.isSSA or md.flowequation.isHO or md.flowequation.isFS or md.flowequation.isL1L2):
+				md.checkmessage("'inversion can only be performed for SSA, HO or FS ice flow models");
+
+		if solution==BalancethicknessSolutionEnum():
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+		else:
+			md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',InversionTypeEnum(),'data',0,'format','Integer')
+		WriteData(fid,'object',self,'fieldname','iscontrol','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','incomplete_adjoint','format','Boolean')
+		if not self.iscontrol:
+			return
+		WriteData(fid,'object',self,'fieldname','nsteps','format','Integer')
+		WriteData(fid,'object',self,'fieldname','maxiter_per_step','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'fieldname','gradient_scaling','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'fieldname','cost_function_threshold','format','Double')
+		WriteData(fid,'object',self,'fieldname','min_parameters','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'fieldname','max_parameters','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'fieldname','step_threshold','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,'object',self,'fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,'object',self,'fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,'object',self,'fieldname','thickness_obs','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'fieldname','surface_obs','format','DoubleMat','mattype',1)
+
+		#process control parameters
+		num_control_parameters=len(self.control_parameters)
+		data=numpy.array([StringToEnum(control_parameter)[0] for control_parameter in self.control_parameters]).reshape(1,-1)
+		WriteData(fid,'data',data,'enum',InversionControlParametersEnum(),'format','DoubleMat','mattype',3)
+		WriteData(fid,'data',num_control_parameters,'enum',InversionNumControlParametersEnum(),'format','Integer')
+
+		#process cost functions
+		num_cost_functions=numpy.size(self.cost_functions)
+		data=marshallcostfunctions(self.cost_functions)
+		WriteData(fid,'data',numpy.array(data).reshape(1,-1),'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3)
+		WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/linearbasalforcings.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/linearbasalforcings.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/linearbasalforcings.py	(revision 21239)
@@ -0,0 +1,108 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+import numpy
+
+class linearbasalforcings(object):
+	"""
+	LINEAR BASAL FORCINGS class definition
+
+	   Usage:
+	      basalforcings=linearbasalforcings();
+	"""
+
+	def __init__(self,*args): # {{{
+
+		if not len(args):
+			print('empty init')
+			self.groundedice_melting_rate  = float('NaN')
+			self.deepwater_melting_rate    = 0.
+			self.deepwater_elevation       = 0.
+			self.upperwater_elevation      = 0.
+			self.geothermalflux            = float('NaN')
+
+			#set defaults
+			self.setdefaultparameters()
+		elif len(args)==1 and args[0].__module__=='basalforcings':
+			print('converting basalforings to linearbasalforcings')
+			inv=args[0]
+			self.groundedice_melting_rate  = inv.groundedice_melting_rate
+			self.geothermalflux            = inv.geothermalflux
+			self.deepwater_melting_rate    = 0.
+			self.deepwater_elevation       = 0.
+			self.upperwater_elevation      = 0.
+
+			#set defaults
+			self.setdefaultparameters()
+		else:
+			raise Exception('constructor not supported')
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   linear basal forcings parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"groundedice_melting_rate","basal melting rate (positive if melting) [m/yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"deepwater_melting_rate","basal melting rate (positive if melting applied for floating ice whith base < deepwater_elevation) [m/yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"deepwater_elevation","elevation of ocean deepwater [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"upperwater_elevation","elevation of ocean upper water [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"geothermalflux","geothermal heat flux [W/m^2]"))
+		return string
+		#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.groundedice_melting_rate)):
+			self.groundedice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no basalforcings.groundedice_melting_rate specified: values set as zero")
+
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		self.deepwater_melting_rate   = 50.0
+		self.deepwater_elevation      = -800.0
+		self.upperwater_elevation     = -400.0
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and not md.transient.ismasstransport):
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);
+			md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);
+			md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0);
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);
+			md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);
+			md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0);
+
+		if ThermalAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and not md.transient.isthermal):
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);
+			md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);
+			md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0);
+			md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		floatingice_melting_rate = numpy.zeros((md.mesh.numberofvertices,1))
+		pos=numpy.nonzero(md.geometry.base<=md.basalforcings.deepwater_elevation)
+		floatingice_melting_rate[pos]=md.basalforcings.deepwater_melting_rate
+		pos=numpy.nonzero(numpy.logical_and(md.geometry.base>md.basalforcings.deepwater_elevation,md.geometry.base<md.basalforcings.upperwater_elevation))
+		floatingice_melting_rate[pos]=md.basalforcings.deepwater_melting_rate*(md.geometry.base[pos]-md.basalforcings.upperwater_elevation)/(md.basalforcings.deepwater_elevation-md.basalforcings.upperwater_elevation)
+
+		WriteData(fid,'enum',BasalforcingsEnum(),'data',LinearFloatingMeltRateEnum(),'format','Integer');
+		WriteData(fid,'object',self,'fieldname','groundedice_melting_rate','enum',BasalforcingsGroundediceMeltingRateEnum(),'format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'data',floatingice_melting_rate,'enum',BasalforcingsFloatingiceMeltingRateEnum(),'format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'fieldname','geothermalflux','enum',BasalforcingsGeothermalfluxEnum(),'format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'fieldname','deepwater_melting_rate','enum',BasalforcingsDeepwaterMeltingRateEnum(),'format','Double','scale',1./yts)
+		WriteData(fid,'object',self,'fieldname','deepwater_elevation','enum',BasalforcingsDeepwaterElevationEnum(),'format','Double')
+		WriteData(fid,'object',self,'fieldname','upperwater_elevation','enum',BasalforcingsUpperwaterElevationEnum(),'format','Double')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/m1qn3inversion.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/m1qn3inversion.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/m1qn3inversion.py	(revision 21239)
@@ -0,0 +1,198 @@
+import numpy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+from supportedcontrols import supportedcontrols
+from supportedcostfunctions import supportedcostfunctions
+from marshallcostfunctions import marshallcostfunctions
+
+class m1qn3inversion(object):
+	'''
+	M1QN3 class definition
+
+   Usage:
+      m1qn3inversion=m1qn3inversion()
+	'''
+
+	def __init__(self,*args): # {{{
+
+		if not len(args):
+			print('empty init')
+			self.iscontrol                   = 0
+			self.incomplete_adjoint          = 0
+			self.control_parameters          = float('NaN')
+			self.control_scaling_factors     = float('NaN')
+			self.maxsteps                    = 0
+			self.maxiter                     = 0
+			self.dxmin                       = 0.
+			self.gttol                       = 0.
+			self.cost_functions              = float('NaN')
+			self.cost_functions_coefficients = float('NaN')
+			self.min_parameters              = float('NaN')
+			self.max_parameters              = float('NaN')
+			self.vx_obs                      = float('NaN')
+			self.vy_obs                      = float('NaN')
+			self.vz_obs                      = float('NaN')
+			self.vel_obs                     = float('NaN')
+			self.thickness_obs               = float('NaN')
+
+			#set defaults
+			self.setdefaultparameters()
+		elif len(args)==1 and args[0].__module__=='inversion':
+			print('converting inversion to m1qn3inversion')
+			inv=args[0]
+			#first call setdefaultparameters: 
+			self.setdefaultparameters()
+
+			#then go fish whatever is available in the inversion object provided to the constructor
+			self.iscontrol                   = inv.iscontrol
+			self.incomplete_adjoint          = inv.incomplete_adjoint
+			self.control_parameters          = inv.control_parameters
+			self.maxsteps                    = inv.nsteps
+			self.cost_functions              = inv.cost_functions
+			self.cost_functions_coefficients = inv.cost_functions_coefficients
+			self.min_parameters              = inv.min_parameters
+			self.max_parameters              = inv.max_parameters
+			self.vx_obs                      = inv.vx_obs
+			self.vy_obs                      = inv.vy_obs
+			self.vz_obs                      = inv.vz_obs
+			self.vel_obs                     = inv.vel_obs
+			self.thickness_obs               = inv.thickness_obs
+		else:
+			raise Exception('constructor not supported')
+		#}}}
+	def __repr__(self): # {{{
+		string='   m1qn3inversion parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'iscontrol','is inversion activated?'))
+		string="%s\n%s"%(string,fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity'))
+		string="%s\n%s"%(string,fielddisplay(self,'control_parameters','ex: [''FrictionCoefficient''], or [''MaterialsRheologyBbar'']'))
+		string="%s\n%s"%(string,fielddisplay(self,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)'))
+		string="%s\n%s"%(string,fielddisplay(self,'maxsteps','maximum number of iterations (gradient computation)'))
+		string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of Function evaluation (forward run)'))
+		string="%s\n%s"%(string,fielddisplay(self,'dxmin','convergence criterion: two points less than dxmin from eachother (sup-norm) are considered identical'))
+		string="%s\n%s"%(string,fielddisplay(self,'gttol','||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'cost_functions','indicate the type of response for each optimization step'))
+		string="%s\n%s"%(string,fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
+		string="%s\n%s"%(string,fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fielddisplay(self,'vx_obs','observed velocity x component [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vy_obs','observed velocity y component [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'thickness_obs','observed thickness [m]'))
+		string="%s\n%s"%(string,'Available cost functions:')
+		string="%s\n%s"%(string,'   101: SurfaceAbsVelMisfit')
+		string="%s\n%s"%(string,'   102: SurfaceRelVelMisfit')
+		string="%s\n%s"%(string,'   103: SurfaceLogVelMisfit')
+		string="%s\n%s"%(string,'   104: SurfaceLogVxVyMisfit')
+		string="%s\n%s"%(string,'   105: SurfaceAverageVelMisfit')
+		string="%s\n%s"%(string,'   201: ThicknessAbsMisfit')
+		string="%s\n%s"%(string,'   501: DragCoefficientAbsGradient')
+		string="%s\n%s"%(string,'   502: RheologyBbarAbsGradient')
+		string="%s\n%s"%(string,'   503: ThicknessAbsGradient')
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node')
+		self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node')
+		self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node')
+		self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node')
+		if not numpy.any(numpy.isnan(self.cost_functions_coefficients)):
+			self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node')
+		if not numpy.any(numpy.isnan(self.min_parameters)):
+			self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node')
+		if not numpy.any(numpy.isnan(self.max_parameters)):
+			self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#default is incomplete adjoint for now
+		self.incomplete_adjoint=1
+
+		#parameter to be inferred by control methods (only
+		#drag and B are supported yet)
+		self.control_parameters='FrictionCoefficient'
+		
+		#Scaling factor for each control
+		self.control_scaling_factors=1
+
+		#number of iterations
+		self.maxsteps=20
+		self.maxiter=40
+
+		#several responses can be used:
+		self.cost_functions=101
+
+		#m1qn3 parameters
+		self.dxmin  = 0.1
+		self.gttol = 1e-4
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if not self.iscontrol:
+			return md
+
+		num_controls=numpy.size(md.inversion.control_parameters)
+		num_costfunc=numpy.size(md.inversion.cost_functions)
+
+		md = checkfield(md,'fieldname','inversion.iscontrol','values',[0,1])
+		md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0,1])
+		md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())
+		md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[num_controls],'>',0,'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','inversion.maxsteps','numel',[1],'>=',0)
+		md = checkfield(md,'fieldname','inversion.maxiter','numel',[1],'>=',0)
+		md = checkfield(md,'fieldname','inversion.dxmin','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','inversion.gttol','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','inversion.cost_functions','size',[num_costfunc],'values',supportedcostfunctions())
+		md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices,num_costfunc],'>=',0)
+		md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices,num_controls])
+		md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices,num_controls])
+
+		if solution==BalancethicknessSolutionEnum():
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+		else:
+			md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean')
+		WriteData(fid,'enum',InversionTypeEnum(),'data',2,'format','Integer')
+		if not self.iscontrol:
+			return
+		WriteData(fid,'object',self,'class','inversion','fieldname','incomplete_adjoint','format','Boolean')
+		WriteData(fid,'object',self,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'class','inversion','fieldname','maxsteps','format','Integer')
+		WriteData(fid,'object',self,'class','inversion','fieldname','maxiter','format','Integer')
+		WriteData(fid,'object',self,'class','inversion','fieldname','dxmin','format','Double')
+		WriteData(fid,'object',self,'class','inversion','fieldname','gttol','format','Double')
+		WriteData(fid,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',1)
+
+		#process control parameters
+		num_control_parameters=len(self.control_parameters)
+		data=numpy.array([StringToEnum(control_parameter)[0] for control_parameter in self.control_parameters]).reshape(1,-1)
+		WriteData(fid,'data',data,'enum',InversionControlParametersEnum(),'format','DoubleMat','mattype',3)
+		WriteData(fid,'data',num_control_parameters,'enum',InversionNumControlParametersEnum(),'format','Integer')
+
+		#process cost functions
+		num_cost_functions=numpy.size(self.cost_functions)
+		data=marshallcostfunctions(self.cost_functions)
+		WriteData(fid,'data',numpy.array(data).reshape(1,-1),'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3)
+		WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/mask.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/mask.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/mask.py	(revision 21239)
@@ -0,0 +1,63 @@
+import numpy
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class mask(object):
+	"""
+	MASK class definition
+
+	   Usage:
+	      mask=mask();
+	"""
+
+	def __init__(self): # {{{
+		self.ice_levelset         = float('NaN')
+		self.groundedice_levelset = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   masks:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"groundedice_levelset","is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0"))
+		string="%s\n%s"%(string,fielddisplay(self,"ice_levelset","presence of ice if < 0, icefront position if = 0, no ice if > 0"))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.ice_levelset=project3d(md,'vector',self.ice_levelset,'type','node')
+		self.groundedice_levelset=project3d(md,'vector',self.groundedice_levelset,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices])
+		isice=numpy.array(md.mask.ice_levelset<=0,int)
+		if numpy.sum(isice)==0:
+			raise TypeError("no ice present in the domain")
+
+		icefront=numpy.sum(md.mask.ice_levelset[md.mesh.elements-1]==0,axis=1)
+		if (max(icefront)==3 and m.strcmp(md.mesh.elementtype(),'Tria')) or (max(icefront==6) and m.strcmp(md.mesh.elementtype(),'Penta')):
+			raise TypeError("At least one element has all nodes on ice front, change md.mask.ice_levelset to fix it")
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1)
+
+		# get mask of vertices of elements with ice
+		isice=numpy.array(md.mask.ice_levelset<0.,int)
+		vlist = numpy.zeros((md.mesh.numberofvertices,1), dtype=int)
+		pos=numpy.nonzero(numpy.sum(isice[md.mesh.elements-1],axis=1))[0]
+		vlist[md.mesh.elements[pos,:]-1]=1
+		WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/massfluxatgate.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/massfluxatgate.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/massfluxatgate.py	(revision 21239)
@@ -0,0 +1,71 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from pairoptions import pairoptions
+from checkfield import checkfield
+from WriteData import WriteData
+from MeshProfileIntersection import MeshProfileIntersection
+import os
+
+class massfluxatgate(object):
+	"""
+	MASSFLUXATEGATE class definition
+
+	   Usage:
+		  massfluxatgate=massfluxatgate('GateName','PathToExpFile')
+	"""
+
+	def __init__(self,**kwargs): # {{{
+
+		self.name            = ''
+		self.definitionenum  = 0
+		self.profilename     = ''
+		self.segments        = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#use provided options to change fields
+		options=pairoptions(**kwargs)
+
+		#OK get other fields
+		self=options.AssignObjectFields(self)
+
+		#}}}
+	def __repr__(self): # {{{
+
+		string="   Massfluxatgate:"
+		string="%s\n%s"%(string,fielddisplay(self,'name','identifier for this massfluxatgate response'))
+		string="%s\n%s"%(string,fielddisplay(self,'definitionenum','enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum'))
+		string="%s\n%s"%(string,fielddisplay(self,'profilename','name of file (shapefile or argus file) defining a profile (or gate)'))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		
+		if  not isinstance(self.name, str):
+			raise RuntimeError("massfluxatgate error message: 'name' field should be a string!")
+			
+		if  not isinstance(self.profilename, str):
+			raise RuntimeError("massfluxatgate error message: 'profilename' field should be a string!") 
+
+			md = checkfield(md,'field',self.definitionenum,'values',[Outputdefinition1Enum(),Outputdefinition2Enum(),Outputdefinition3Enum(),Outputdefinition4Enum(),Outputdefinition5Enum(),Outputdefinition6Enum(),Outputdefinition7Enum(),Outputdefinition8Enum(),Outputdefinition9Enum(),Outputdefinition10Enum()])
+		
+		#check the profilename points to a file!: 
+		if not os.path.isfile(self.profilename):
+			raise RuntimeError("massfluxatgate error message: file name for profile corresponding to gate does not point to a legitimate file on disk!")
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		
+		#before marshalling, we need to create the segments out of the profilename: 
+		self.segments=MeshProfileIntersection(md.mesh.elements,md.mesh.x,md.mesh.y,self.profilename)[0]
+
+		#ok, marshall name and segments: 
+		WriteData(fid,'object',self,'fieldname','name','format','String')
+		WriteData(fid,'object',self,'fieldname','definitionenum','format','Integer')
+		WriteData(fid,'object',self,'fieldname','segments','format','DoubleMat','mattype',1)
+
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/masstransport.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/masstransport.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/masstransport.py	(revision 21239)
@@ -0,0 +1,102 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+
+class masstransport(object):
+	"""
+	MASSTRANSPORT class definition
+
+	   Usage:
+	      masstransport=masstransport();
+	"""
+
+	def __init__(self): # {{{
+		self.spcthickness           = float('NaN')
+		self.isfreesurface          = 0
+		self.min_thickness          = 0.
+		self.hydrostatic_adjustment = 0
+		self.stabilization          = 0
+		self.vertex_pairing         = float('NaN')
+		self.penalty_factor         = 0
+		self.requested_outputs      = []
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   Masstransport solution parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'isfreesurface','do we use free surfaces (FS only) are mass conservation'))
+		string="%s\n%s"%(string,fielddisplay(self,'min_thickness','minimum ice thickness allowed [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'hydrostatic_adjustment','adjustment of ice shelves surface and bed elevations: ''Incremental'' or ''Absolute'' '))
+		string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding, 3: discontinuous Galerkin, 4: Flux Correction Transport'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.spcthickness=project3d(md,'vector',self.spcthickness,'type','node')
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+
+		return ['Thickness','Surface','Base']
+
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		#Type of stabilization to use 0:nothing 1:artificial_diffusivity 3:Discontinuous Galerkin
+		self.stabilization=1
+
+		#Factor applied to compute the penalties kappa=max(stiffness matrix)*10^penalty_factor
+		self.penalty_factor=3
+
+		#Minimum ice thickness that can be used
+		self.min_thickness=1
+
+		#Hydrostatic adjustment
+		self.hydrostatic_adjustment='Absolute'
+
+		#default output
+		self.requested_outputs=['default']
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if (MasstransportAnalysisEnum() not in analyses) or (solution==TransientSolutionEnum() and not md.transient.ismasstransport):
+			return md
+
+		md = checkfield(md,'fieldname','masstransport.spcthickness','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','masstransport.isfreesurface','values',[0,1])
+		md = checkfield(md,'fieldname','masstransport.hydrostatic_adjustment','values',['Absolute','Incremental'])
+		md = checkfield(md,'fieldname','masstransport.stabilization','values',[0,1,2,3,4])
+		md = checkfield(md,'fieldname','masstransport.min_thickness','>',0)
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.*24.*3600.
+
+		WriteData(fid,'object',self,'fieldname','spcthickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'fieldname','isfreesurface','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','min_thickness','format','Double')
+		WriteData(fid,'data',StringToEnum(self.hydrostatic_adjustment)[0],'format','Integer','enum',MasstransportHydrostaticAdjustmentEnum())
+		WriteData(fid,'object',self,'fieldname','stabilization','format','Integer')
+		WriteData(fid,'object',self,'fieldname','vertex_pairing','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'fieldname','penalty_factor','format','Double')
+
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',MasstransportRequestedOutputsEnum(),'format','StringArray')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/matdamageice.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/matdamageice.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/matdamageice.py	(revision 21239)
@@ -0,0 +1,156 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import MaterialsEnum, MatdamageiceEnum, MaterialsRheologyLawEnum, MaterialsRhoSeawaterEnum
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+
+class matdamageice(object):
+	"""
+	MATICE class definition
+
+	   Usage:
+	      matdamagice=matdamageice();
+	"""
+
+	def __init__(self): # {{{
+		self.rho_ice                   = 0.
+		self.rho_water                 = 0.
+		self.rho_freshwater            = 0.
+		self.mu_water                  = 0.
+		self.heatcapacity              = 0.
+		self.latentheat                = 0.
+		self.thermalconductivity       = 0.
+		self.temperateiceconductivity  = 0.
+		self.meltingpoint              = 0.
+		self.beta                      = 0.
+		self.mixed_layer_capacity      = 0.
+		self.thermal_exchange_velocity = 0.
+		self.rheology_B                = float('NaN')
+		self.rheology_n                = float('NaN')
+		self.rheology_law              = ''
+
+		#gia: 
+		self.lithosphere_shear_modulus  = 0.
+		self.lithosphere_density        = 0.
+		self.mantle_shear_modulus       = 0.
+		self.mantle_density             = 0.
+
+		self.setdefaultparameters()
+		#}}}
+	def __repr__(self): # {{{
+		string="   Materials:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"rho_ice","ice density [kg/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rho_water","water density [kg/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rho_freshwater","fresh water density [kg/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mu_water","water viscosity [N s/m^2]"))
+		string="%s\n%s"%(string,fielddisplay(self,"heatcapacity","heat capacity [J/kg/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"thermalconductivity","ice thermal conductivity [W/m/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"temperateiceconductivity","temperate ice thermal conductivity [W/m/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"meltingpoint","melting point of ice at 1atm in K"))
+		string="%s\n%s"%(string,fielddisplay(self,"latentheat","latent heat of fusion [J/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"beta","rate of change of melting point with pressure [K/Pa]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mixed_layer_capacity","mixed layer capacity [W/kg/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"thermal_exchange_velocity","thermal exchange velocity [m/s]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rheology_B","flow law parameter [Pa/s^(1/n)]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rheology_n","Glen's flow law exponent"))
+		string="%s\n%s"%(string,fielddisplay(self,"rheology_law","law for the temperature dependance of the rheology: 'None', 'Cuffey', 'Paterson', 'Arrhenius' or 'LliboutryDuval'"))
+		string="%s\n%s"%(string,fielddisplay(self,"lithosphere_shear_modulus","Lithosphere shear modulus [Pa]"))
+		string="%s\n%s"%(string,fielddisplay(self,"lithosphere_density","Lithosphere density [g/cm^-3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mantle_shear_modulus","Mantle shear modulus [Pa]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mantle_density","Mantle density [g/cm^-3]"))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node')
+		self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		#ice density (kg/m^3)
+		self.rho_ice=917.
+
+		#ocean water density (kg/m^3)
+		self.rho_water=1023.
+
+		#fresh water density (kg/m^3)
+		self.rho_freshwater=1000.
+
+		#water viscosity (N.s/m^2)
+		self.mu_water=0.001787  
+
+		#ice heat capacity cp (J/kg/K)
+		self.heatcapacity=2093.
+
+		#ice latent heat of fusion L (J/kg)
+		self.latentheat=3.34*10**5
+
+		#ice thermal conductivity (W/m/K)
+		self.thermalconductivity=2.4
+
+		#temperate ice thermal conductivity (W/m/K)
+		self.temperateiceconductivity=0.24
+
+		#the melting point of ice at 1 atmosphere of pressure in K
+		self.meltingpoint=273.15
+
+		#rate of change of melting point with pressure (K/Pa)
+		self.beta=9.8*10**-8
+
+		#mixed layer (ice-water interface) heat capacity (J/kg/K)
+		self.mixed_layer_capacity=3974.
+
+		#thermal exchange velocity (ice-water interface) (m/s)
+		self.thermal_exchange_velocity=1.00*10**-4
+
+		#Rheology law: what is the temperature dependence of B with T
+		#available: none, paterson and arrhenius
+		self.rheology_law='Paterson'
+
+		# GIA:
+		self.lithosphere_shear_modulus  = 6.7*10**10  # (Pa)
+		self.lithosphere_density        = 3.32        # (g/cm^-3)
+		self.mantle_shear_modulus       = 1.45*10**11 # (Pa)
+		self.mantle_density             = 3.34        # (g/cm^-3)
+
+		return self
+		#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		md = checkfield(md,'fieldname','materials.rho_ice','>',0)
+		md = checkfield(md,'fieldname','materials.rho_water','>',0)
+		md = checkfield(md,'fieldname','materials.rho_freshwater','>',0)
+		md = checkfield(md,'fieldname','materials.mu_water','>',0)
+		md = checkfield(md,'fieldname','materials.rheology_B','>',0,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements])
+		md = checkfield(md,'fieldname','materials.rheology_law','values',['None','Cuffey','Paterson','Arrhenius','LliboutryDuval'])
+		md = checkfield(md,'fieldname','materials.lithosphere_shear_modulus','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.lithosphere_density','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',[1]);
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'enum',MaterialsEnum(),'data',MatdamageiceEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','materials','fieldname','rho_ice','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','rho_water','enum',MaterialsRhoSeawaterEnum(),'format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','rho_freshwater','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','mu_water','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','heatcapacity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','latentheat','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','thermalconductivity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','meltingpoint','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','beta','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2)
+		WriteData(fid,'data',StringToEnum(self.rheology_law)[0],'enum',MaterialsRheologyLawEnum(),'format','Integer')
+
+		WriteData(fid,'object',self,'class','materials','fieldname','lithosphere_shear_modulus','format','Double');
+		WriteData(fid,'object',self,'class','materials','fieldname','lithosphere_density','format','Double','scale',10.**3.);
+		WriteData(fid,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double');
+		WriteData(fid,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10.**3.);
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/matice.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/matice.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/matice.py	(revision 21239)
@@ -0,0 +1,157 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+
+class matice(object):
+	"""
+	MATICE class definition
+
+	   Usage:
+	      matice=matice();
+	"""
+
+	def __init__(self): # {{{
+		self.rho_ice                   = 0.
+		self.rho_water                 = 0.
+		self.rho_freshwater            = 0.
+		self.mu_water                  = 0.
+		self.heatcapacity              = 0.
+		self.latentheat                = 0.
+		self.thermalconductivity       = 0.
+		self.temperateiceconductivity  = 0.
+		self.meltingpoint              = 0.
+		self.beta                      = 0.
+		self.mixed_layer_capacity      = 0.
+		self.thermal_exchange_velocity = 0.
+		self.rheology_B                = float('NaN')
+		self.rheology_n                = float('NaN')
+		self.rheology_law              = ''
+
+		#gia: 
+		self.lithosphere_shear_modulus  = 0.
+		self.lithosphere_density        = 0.
+		self.mantle_shear_modulus       = 0.
+		self.mantle_density             = 0.
+
+		self.setdefaultparameters()
+		#}}}
+	def __repr__(self): # {{{
+		string="   Materials:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"rho_ice","ice density [kg/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rho_water","water density [kg/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rho_freshwater","fresh water density [kg/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mu_water","water viscosity [N s/m^2]"))
+		string="%s\n%s"%(string,fielddisplay(self,"heatcapacity","heat capacity [J/kg/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"thermalconductivity","ice thermal conductivity [W/m/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"temperateiceconductivity","temperate ice thermal conductivity [W/m/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"meltingpoint","melting point of ice at 1atm in K"))
+		string="%s\n%s"%(string,fielddisplay(self,"latentheat","latent heat of fusion [J/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"beta","rate of change of melting point with pressure [K/Pa]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mixed_layer_capacity","mixed layer capacity [W/kg/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"thermal_exchange_velocity","thermal exchange velocity [m/s]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rheology_B","flow law parameter [Pa/s^(1/n)]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rheology_n","Glen's flow law exponent"))
+		string="%s\n%s"%(string,fielddisplay(self,"rheology_law","law for the temperature dependance of the rheology: 'None', 'Cuffey', 'Paterson', 'Arrhenius' or 'LliboutryDuval'"))
+		string="%s\n%s"%(string,fielddisplay(self,"lithosphere_shear_modulus","Lithosphere shear modulus [Pa]"))
+		string="%s\n%s"%(string,fielddisplay(self,"lithosphere_density","Lithosphere density [g/cm^-3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mantle_shear_modulus","Mantle shear modulus [Pa]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mantle_density","Mantle density [g/cm^-3]"))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node')
+		self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		#ice density (kg/m^3)
+		self.rho_ice=917.
+
+		#ocean water density (kg/m^3)
+		self.rho_water=1023.
+
+		#fresh water density (kg/m^3)
+		self.rho_freshwater=1000.
+
+		#water viscosity (N.s/m^2)
+		self.mu_water=0.001787  
+
+		#ice heat capacity cp (J/kg/K)
+		self.heatcapacity=2093.
+
+		#ice latent heat of fusion L (J/kg)
+		self.latentheat=3.34*10**5
+
+		#ice thermal conductivity (W/m/K)
+		self.thermalconductivity=2.4
+
+		#temperate ice thermal conductivity (W/m/K)
+		self.temperateiceconductivity=0.24
+
+		#the melting point of ice at 1 atmosphere of pressure in K
+		self.meltingpoint=273.15
+
+		#rate of change of melting point with pressure (K/Pa)
+		self.beta=9.8*10**-8
+
+		#mixed layer (ice-water interface) heat capacity (J/kg/K)
+		self.mixed_layer_capacity=3974.
+
+		#thermal exchange velocity (ice-water interface) (m/s)
+		self.thermal_exchange_velocity=1.00*10**-4
+
+		#Rheology law: what is the temperature dependence of B with T
+		#available: none, paterson and arrhenius
+		self.rheology_law='Paterson'
+
+		# GIA:
+		self.lithosphere_shear_modulus  = 6.7*10**10  # (Pa)
+		self.lithosphere_density        = 3.32        # (g/cm^-3)
+		self.mantle_shear_modulus       = 1.45*10**11 # (Pa)
+		self.mantle_density             = 3.34        # (g/cm^-3)
+
+		return self
+		#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		md = checkfield(md,'fieldname','materials.rho_ice','>',0)
+		md = checkfield(md,'fieldname','materials.rho_water','>',0)
+		md = checkfield(md,'fieldname','materials.rho_freshwater','>',0)
+		md = checkfield(md,'fieldname','materials.mu_water','>',0)
+		md = checkfield(md,'fieldname','materials.rheology_B','>',0,'timeseries',1,'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements])
+		md = checkfield(md,'fieldname','materials.rheology_law','values',['None','Cuffey','Paterson','Arrhenius','LliboutryDuval'])
+		md = checkfield(md,'fieldname','materials.lithosphere_shear_modulus','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.lithosphere_density','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',[1]);
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'enum',MaterialsEnum(),'data',MaticeEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','materials','fieldname','rho_ice','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','rho_water','enum',MaterialsRhoSeawaterEnum(),'format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','rho_freshwater','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','mu_water','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','heatcapacity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','latentheat','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','thermalconductivity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','meltingpoint','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','beta','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2)
+		WriteData(fid,'data',StringToEnum(self.rheology_law)[0],'enum',MaterialsRheologyLawEnum(),'format','Integer')
+
+		WriteData(fid,'object',self,'class','materials','fieldname','lithosphere_shear_modulus','format','Double');
+		WriteData(fid,'object',self,'class','materials','fieldname','lithosphere_density','format','Double','scale',10.**3.);
+		WriteData(fid,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double');
+		WriteData(fid,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10.**3.);
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/mesh2d.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/mesh2d.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/mesh2d.py	(revision 21239)
@@ -0,0 +1,122 @@
+import numpy
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+from EnumDefinitions import *
+import MatlabFuncs as m
+
+class mesh2d(object):
+	"""
+	MESH2D class definition
+
+	   Usage:
+	      mesh2d=mesh2d();
+	"""
+
+	def __init__(self): # {{{
+		self.x                           = float('NaN');
+		self.y                           = float('NaN');
+		self.elements                    = float('NaN');
+		self.numberofelements            = 0;
+		self.numberofvertices            = 0;
+		self.numberofedges               = 0;
+		
+		self.lat                         = float('NaN');
+		self.long                        = float('NaN');
+		self.epsg                        = 0;
+
+		self.vertexonboundary            = float('NaN');
+		self.edges                       = float('NaN');
+		self.segments                    = float('NaN');
+		self.segmentmarkers              = float('NaN');
+		self.vertexconnectivity          = float('NaN');
+		self.elementconnectivity         = float('NaN');
+		self.average_vertex_connectivity = 0;
+
+		self.extractedvertices           = float('NaN');
+		self.extractedelements           = float('NaN');
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   2D tria Mesh (horizontal):" 
+
+		string="%s\n%s"%(string,"\n      Elements and vertices:")
+		string="%s\n%s"%(string,fielddisplay(self,"numberofelements","number of elements"))
+		string="%s\n%s"%(string,fielddisplay(self,"numberofvertices","number of vertices"))
+		string="%s\n%s"%(string,fielddisplay(self,"elements","vertex indices of the mesh elements"))
+		string="%s\n%s"%(string,fielddisplay(self,"x","vertices x coordinate [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"y","vertices y coordinate [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"edges","edges of the 2d mesh (vertex1 vertex2 element1 element2)"))
+		string="%s\n%s"%(string,fielddisplay(self,"numberofedges","number of edges of the 2d mesh"))
+
+		string="%s%s"%(string,"\n\n      Properties:")
+		string="%s\n%s"%(string,fielddisplay(self,"vertexonboundary","vertices on the boundary of the domain flag list"))
+		string="%s\n%s"%(string,fielddisplay(self,"segments","edges on domain boundary (vertex1 vertex2 element)"))
+		string="%s\n%s"%(string,fielddisplay(self,"segmentmarkers","number associated to each segment"))
+		string="%s\n%s"%(string,fielddisplay(self,"vertexconnectivity","list of vertices connected to vertex_i"))
+		string="%s\n%s"%(string,fielddisplay(self,"elementconnectivity","list of vertices connected to element_i"))
+		string="%s\n%s"%(string,fielddisplay(self,"average_vertex_connectivity","average number of vertices connected to one vertex"))
+
+		string="%s%s"%(string,"\n\n      Extracted model:")
+		string="%s\n%s"%(string,fielddisplay(self,"extractedvertices","vertices extracted from the model"))
+		string="%s\n%s"%(string,fielddisplay(self,"extractedelements","elements extracted from the model"))
+
+		string="%s%s"%(string,"\n\n      Projection:")
+		string="%s\n%s"%(string,fielddisplay(self,"lat","vertices latitude [degrees]"))
+		string="%s\n%s"%(string,fielddisplay(self,"long","vertices longitude [degrees]"))
+		string="%s\n%s"%(string,fielddisplay(self,"epsg","EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)"))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#the connectivity is the averaged number of nodes linked to a
+		#given node through an edge. This connectivity is used to initially
+		#allocate memory to the stiffness matrix. A value of 16 seems to
+		#give a good memory/time ration. This value can be checked in
+		#trunk/test/Miscellaneous/runme.m
+		self.average_vertex_connectivity=25
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',numpy.arange(1,md.mesh.numberofvertices+1))
+		md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements,3])
+#		if numpy.any(numpy.logical_not(m.ismember(numpy.arange(1,md.mesh.numberofvertices+1),md.mesh.elements))):
+		if any(numpy.logical_not(m.ismember(numpy.arange(1,md.mesh.numberofvertices+1),md.mesh.elements))):
+			[x for x in A if not x in B]
+			md.checkmessage("orphan nodes have been found. Check the mesh outline")
+		md = checkfield(md,'fieldname','mesh.numberofelements','>',0)
+		md = checkfield(md,'fieldname','mesh.numberofvertices','>',0)
+		md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message',"'mesh.average_vertex_connectivity' should be at least 9 in 2d")
+		if solution==ThermalSolutionEnum():
+			md.checkmessage("thermal not supported for 2d mesh")
+
+		return md
+	# }}}
+	def domaintype(self): # {{{
+		return "2Dhorizontal"
+	#}}}
+	def dimension(self): # {{{
+		return 2
+	#}}}
+	def elementtype(self): # {{{
+		return "Tria"
+	#}}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum("Domain"+self.domaintype())[0],'format','Integer');
+		WriteData(fid,'enum',DomainDimensionEnum(),'data',self.dimension(),'format','Integer');
+		WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(self.elementtype())[0],'format','Integer');
+		WriteData(fid,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1)
+		WriteData(fid,'enum',MeshZEnum(),'data',numpy.zeros(self.numberofvertices),'format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2)
+		WriteData(fid,'object',self,'class','mesh','fieldname','numberofelements','format','Integer')
+		WriteData(fid,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer')
+		WriteData(fid,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/mesh3dprisms.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/mesh3dprisms.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/mesh3dprisms.py	(revision 21239)
@@ -0,0 +1,152 @@
+import numpy
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import *
+import MatlabFuncs as m
+from WriteData import WriteData
+
+class mesh3dprisms(object):
+	"""
+	MESH3DPRISMS class definition
+
+	   Usage:
+	      mesh3d=mesh3dprisms();
+	"""
+
+	def __init__(self): # {{{
+		self.x                           = float('NaN');
+		self.y                           = float('NaN');
+		self.z                           = float('NaN');
+		self.elements                    = float('NaN');
+		self.numberoflayers              = 0;
+		self.numberofelements            = 0;
+		self.numberofvertices            = 0;
+		
+		self.lat                         = float('NaN');
+		self.long                        = float('NaN');
+		self.epsg                        = 0;
+
+		self.vertexonbase                = float('NaN');
+		self.vertexonsurface             = float('NaN');
+		self.lowerelements               = float('NaN');
+		self.lowervertex                 = float('NaN');
+		self.upperelements               = float('NaN');
+		self.uppervertex                 = float('NaN');
+		self.vertexonboundary            = float('NaN');
+
+		self.vertexconnectivity          = float('NaN');
+		self.elementconnectivity         = float('NaN');
+		self.average_vertex_connectivity = 0;
+
+		self.x2d                         = float('NaN');
+		self.y2d                         = float('NaN');
+		self.elements2d                  = float('NaN');
+		self.numberofvertices2d          = 0;
+		self.numberofelements2d          = 0;
+
+		self.extractedvertices           = float('NaN');
+		self.extractedelements           = float('NaN');
+
+		#set defaults
+		self.setdefaultparameters()
+		#}}}
+	def __repr__(self): # {{{
+		string="   3D prism Mesh:" 
+
+		string="%s\n%s"%(string,"\n      Elements and vertices of the original 2d mesh3dprisms:")
+		
+		string="%s\n%s"%(string,fielddisplay(self,"numberofelements2d","number of elements"))
+		string="%s\n%s"%(string,fielddisplay(self,"numberofvertices2d","number of vertices"))
+		string="%s\n%s"%(string,fielddisplay(self,"elements2d","vertex indices of the mesh3dprisms elements"))
+		string="%s\n%s"%(string,fielddisplay(self,"x2d","vertices x coordinate [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"y2d","vertices y coordinate [m]"))
+
+		string="%s\n%s"%(string,"\n\n      Elements and vertices of the extruded 3d mesh3dprisms:")
+		string="%s\n%s"%(string,fielddisplay(self,"numberofelements","number of elements"))
+		string="%s\n%s"%(string,fielddisplay(self,"numberofvertices","number of vertices"))
+		string="%s\n%s"%(string,fielddisplay(self,"elements","vertex indices of the mesh3dprisms elements"))
+		string="%s\n%s"%(string,fielddisplay(self,"x","vertices x coordinate [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"y","vertices y coordinate [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"z","vertices z coordinate [m]"))
+
+		string="%s%s"%(string,"\n\n      Properties:")
+		string="%s\n%s"%(string,fielddisplay(self,"numberoflayers","number of extrusion layers"))
+		string="%s\n%s"%(string,fielddisplay(self,"vertexonbase","lower vertices flags list"))
+		string="%s\n%s"%(string,fielddisplay(self,"vertexonsurface","upper vertices flags list"))
+		string="%s\n%s"%(string,fielddisplay(self,"uppervertex","upper vertex list (-1 for vertex on the upper surface)"))
+		string="%s\n%s"%(string,fielddisplay(self,"upperelements","upper element list (-1 for element on the upper layer)"))
+		string="%s\n%s"%(string,fielddisplay(self,"lowervertex","lower vertex list (-1 for vertex on the lower surface)"))
+		string="%s\n%s"%(string,fielddisplay(self,"lowerelements","lower element list (-1 for element on the lower layer)"))
+		string="%s\n%s"%(string,fielddisplay(self,"vertexonboundary","vertices on the boundary of the domain flag list"))
+		string="%s\n%s"%(string,fielddisplay(self,"vertexconnectivity","list of vertices connected to vertex_i"))
+		string="%s\n%s"%(string,fielddisplay(self,"elementconnectivity","list of vertices connected to element_i"))
+		string="%s\n%s"%(string,fielddisplay(self,"average_vertex_connectivity","average number of vertices connected to one vertex"))
+
+		string="%s%s"%(string,"\n\n      Extracted model:")
+		string="%s\n%s"%(string,fielddisplay(self,"extractedvertices","vertices extracted from the model"))
+		string="%s\n%s"%(string,fielddisplay(self,"extractedelements","elements extracted from the model"))
+
+		string="%s%s"%(string,"\n\n      Projection:")
+		string="%s\n%s"%(string,fielddisplay(self,"lat","vertices latitude [degrees]"))
+		string="%s\n%s"%(string,fielddisplay(self,"long","vertices longitude [degrees]"))
+		string="%s\n%s"%(string,fielddisplay(self,"epsg","EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)"))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#the connectivity is the averaged number of nodes linked to a
+		#given node through an edge. This connectivity is used to initially
+		#allocate memory to the stiffness matrix. A value of 16 seems to
+		#give a good memory/time ration. This value can be checked in
+		#trunk/test/Miscellaneous/runme.m
+		self.average_vertex_connectivity=25
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',numpy.arange(1,md.mesh.numberofvertices+1))
+		md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements,6])
+		if numpy.any(numpy.logical_not(m.ismember(numpy.arange(1,md.mesh.numberofvertices+1),md.mesh.elements))):
+			md.checkmessage("orphan nodes have been found. Check the mesh3dprisms outline")
+		md = checkfield(md,'fieldname','mesh.numberoflayers','>=',0)
+		md = checkfield(md,'fieldname','mesh.numberofelements','>',0)
+		md = checkfield(md,'fieldname','mesh.numberofvertices','>',0)
+		md = checkfield(md,'fieldname','mesh.vertexonbase','size',[md.mesh.numberofvertices],'values',[0,1])
+		md = checkfield(md,'fieldname','mesh.vertexonsurface','size',[md.mesh.numberofvertices],'values',[0,1])
+		md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',24,'message',"'mesh.average_vertex_connectivity' should be at least 24 in 3d")
+
+		return md
+	# }}}
+	def domaintype(self): # {{{
+		return "3D"
+	#}}}
+	def dimension(self): # {{{
+		return 3
+	#}}}
+	def elementtype(self): # {{{
+		return "Penta"
+	#}}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum("Domain"+self.domaintype())[0],'format','Integer');
+		WriteData(fid,'enum',DomainDimensionEnum(),'data',self.dimension(),'format','Integer');
+		WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(self.elementtype())[0],'format','Integer');
+		WriteData(fid,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','mesh','fieldname','z','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2)
+		WriteData(fid,'object',self,'class','mesh','fieldname','numberoflayers','format','Integer')
+		WriteData(fid,'object',self,'class','mesh','fieldname','numberofelements','format','Integer')
+		WriteData(fid,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer')
+		WriteData(fid,'object',self,'class','mesh','fieldname','vertexonbase','format','BooleanMat','mattype',1)
+		WriteData(fid,'object',self,'class','mesh','fieldname','vertexonsurface','format','BooleanMat','mattype',1)
+		WriteData(fid,'object',self,'class','mesh','fieldname','lowerelements','format','DoubleMat','mattype',2)
+		WriteData(fid,'object',self,'class','mesh','fieldname','upperelements','format','DoubleMat','mattype',2)
+		WriteData(fid,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer')
+		WriteData(fid,'object',self,'class','mesh','fieldname','elements2d','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'class','mesh','fieldname','numberofvertices2d','format','Integer')
+		WriteData(fid,'object',self,'class','mesh','fieldname','numberofelements2d','format','Integer')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/miscellaneous.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/miscellaneous.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/miscellaneous.py	(revision 21239)
@@ -0,0 +1,41 @@
+from collections import OrderedDict
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class miscellaneous(object):
+	"""
+	MISCELLANEOUS class definition
+
+	   Usage:
+	      miscellaneous=miscellaneous();
+	"""
+
+	def __init__(self): # {{{
+		self.notes = ''
+		self.name  = ''
+		self.dummy = OrderedDict()
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   miscellaneous parameters:'
+
+		string="%s\n%s"%(string,fielddisplay(self,'notes','notes in a cell of strings'))
+		string="%s\n%s"%(string,fielddisplay(self,'name','model name'))
+		string="%s\n%s"%(string,fielddisplay(self,'dummy','empty field to store some data'))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		md = checkfield(md,'fieldname','miscellaneous.name','empty',1)
+		return md
+	# }}}
+	def marshall(self,md,fid):    #  {{{
+		WriteData(fid,'object',self,'fieldname','name','format','String')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/mismipbasalforcings.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/mismipbasalforcings.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/mismipbasalforcings.py	(revision 21239)
@@ -0,0 +1,98 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+import numpy
+
+class mismipbasalforcings(object):
+    """
+    MISMIP Basal Forcings class definition
+
+        Usage:
+	    mismipbasalforcings=mismipbasalforcings()
+    """
+
+    def __init__(self,md): # {{{
+
+        self.groundedice_melting_rate = float('NaN')
+        self.meltrate_factor = float('NaN')
+        self.threshold_thickness = float('NaN')
+        self.upperdepth_melt = float('NaN')
+        self.geothermalflux = float('NaN')
+
+        if numpy.all(numpy.isnan(self.groundedice_melting_rate)):
+            self.groundedice_melting_rate=numpy.zeros(md.mesh.numberofvertices)
+            print(' no basalforcings.groundedice_melting_rate specified: values set as zero')
+
+	self.setdefaultparameters()
+
+    #}}}
+    def __repr__(self): # {{{
+        string=" MISMIP+ basal melt parameterization\n"
+        string="%s\n%s"%(string,fielddisplay(self,"groundedice_melting_rate","basal melting rate (positive if melting) [m/yr]"))
+        string="%s\n%s"%(string,fielddisplay(self,"meltrate_factor","Melt-rate rate factor [1/yr] (sign is opposite to MISMIP+ benchmark to remain consistent with ISSM convention of positive values for melting)"))
+        string="%s\n%s"%(string,fielddisplay(self,"threshold_thickness","Threshold thickness for saturation of basal melting [m]"))
+        string="%s\n%s"%(string,fielddisplay(self,"upperdepth_melt","Depth above which melt rate is zero [m]"))
+        string="%s\n%s"%(string,fielddisplay(self,"geothermalflux","Geothermal heat flux [W/m^2]"))
+
+	return string
+    #}}}
+    def extrude(self,md): # {{{
+	self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1)
+	self.p=project3d(md,'vector',self.p,'type','element')
+	self.q=project3d(md,'vector',self.q,'type','element')
+	return self
+    #}}}
+    def setdefaultparameters(self): # {{{
+
+        # default values for melting parameterization
+        self.meltrate_factor = 0.2
+        self.threshold_thickness = 75.
+        self.upperdepth_melt = -100.
+
+	return self
+    #}}}
+    def checkconsistency(self,md,solution,analyses):    # {{{
+
+	#Early return
+        if MasstransportAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and md.transient.ismasstransport==0):
+
+	    md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+	    md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
+
+        if BalancethicknessAnalysisEnum() in analyses:
+
+	    md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+	    md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
+
+        if ThermalAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and md.transient.isthermal==0):
+
+	    md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+	    md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0)
+	return md
+    # }}}
+    def marshall(self,md,fid):    # {{{
+
+        yts=md.constants.yts
+        if yts!=365.2422*24.*3600.:
+            print('WARNING: value of yts for MISMIP+ runs different from ISSM default!')
+
+        floatingice_melting_rate = numpy.zeros((md.mesh.numberofvertices,1))
+        floatingice_melting_rate = md.basalforcings.meltrate_factor*numpy.tanh((md.geometry.base-md.geometry.bed)/md.basalforcings.threshold_thickness)*numpy.amax(md.basalforcings.upperdepth_melt-md.geometry.base,0)
+
+	WriteData(fid,'enum',BasalforcingsEnum(),'data',MismipFloatingMeltRateEnum(),'format','Integer')
+	WriteData(fid,'data',floatingice_melting_rate,'format','DoubleMat','enum',BasalforcingsFloatingiceMeltingRateEnum(),'mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+	WriteData(fid,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','enum',BasalforcingsGroundediceMeltingRateEnum(),'mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+	WriteData(fid,'object',self,'fieldname','geothermalflux','enum',BasalforcingsGeothermalfluxEnum(),'format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+	WriteData(fid,'object',self,'fieldname','meltrate_factor','format','Double','enum',BasalforcingsMeltrateFactorEnum(),'scale',1./yts)
+	WriteData(fid,'object',self,'fieldname','threshold_thickness','format','Double','enum',BasalforcingsThresholdThicknessEnum())
+	WriteData(fid,'object',self,'fieldname','upperdepth_melt','format','Double','enum',BasalforcingsUpperdepthMeltEnum())
+
+    # }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/model.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/model.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/model.py	(revision 21239)
@@ -0,0 +1,670 @@
+#module imports {{{
+import numpy
+import copy
+import sys
+import MatlabFuncs as m
+#}}}
+
+class model(object):
+	#properties
+	def __init__(self,*filename):#{{{
+
+		def netCDFread(filename):
+			def walktree(data):
+				keys = data.groups.keys()
+				yield keys
+				for key in keys:
+					for children in walktree(data.groups[str(key)]):
+						yield children
+
+			if path.exists(filename):
+				print ('Opening {} for reading '.format(filename))
+				NCData=Dataset(filename, 'r')
+				class_dict={}
+				
+				for children in walktree(NCData):
+					for child in children:
+						class_dict[str(child)]=str(getattr(NCData.groups[str(child)],'classtype'))
+
+				return class_dict
+
+		if filename:		
+			classtype=netCDFread(filename[0])
+		else:
+			classtype=self.properties()
+			
+		VT=[v[0] for v in dict.values(classtype)]
+		classnames=[classname for classname in dict.keys(classtype)]
+		module=map(__import__,VT)
+
+		for i,mod in enumerate(module):
+			self.__dict__[classnames[i]] = getattr(mod,str(classtype[str(classnames[i])][0]))()
+
+	#}}}
+
+	def properties(self):    # {{{
+		# ordered list of properties since vars(self) is random
+		return {'mesh':['mesh2d','mesh properties'],\
+		        'mask':['mask','defines grounded and floating elements'],\
+		        'geometry':['geometry','surface elevation, bedrock topography, ice thickness,...'],\
+		        'constants':['constants','physical constants'],\
+		        'smb':['SMBpdd','surface forcings'],\
+		        'basalforcings':['basalforcings','bed forcings'],\
+		        'materials':['matice','material properties'],\
+		        'damage':['damage','damage propagation laws'],\
+		        'friction':['friction','basal friction/drag properties'],\
+		        'flowequation':['flowequation','flow equations'],\
+		        'timestepping':['timestepping','time stepping for transient models'],\
+		        'initialization':['initialization','initial guess/state'],\
+		        'rifts':['rifts','rifts properties'],\
+		        'debug':['debug','debugging tools (valgrind, gprof)'],\
+		        'verbose':['verbose','verbosity level in solve'],\
+		        'settings':['settings','settings properties'],\
+		        'toolkits':['toolkits','PETSc options for each solution'],\
+		        'cluster':['generic','cluster parameters (number of cpus...)'],\
+		        'balancethickness':['balancethickness','parameters for balancethickness solution'],\
+		        'stressbalance':['stressbalance','parameters for stressbalance solution'],\
+		        'groundingline':['groundingline','parameters for groundingline solution'],\
+		        'hydrology':['hydrologyshreve','parameters for hydrology solution'],\
+		        'masstransport':['masstransport','parameters for masstransport solution'],\
+		        'thermal':['thermal','parameters for thermal solution'],\
+		        'steadystate':['steadystate','parameters for steadystate solution'],\
+		        'transient':['transient','parameters for transient solution'],\
+		        'calving':['calving','parameters for calving'],\
+						'gia':['gia','Parameters for gia model'],\
+		        'autodiff':['autodiff','automatic differentiation parameters'],\
+		        'flaim':['flaim','flaim parameters'],\
+		        'inversion':['inversion','parameters for inverse methods'],\
+		        'qmu':['qmu','dakota properties'],\
+		        'outputdefinition':['outputdefinition','output definition'],\
+		        'results':['results','model results'],\
+		        'radaroverlay':['radaroverlay','radar image for plot overlay'],\
+		        'miscellaneous':['miscellaneous','miscellaneous fields'],\
+		        'private':['private','...']}
+	# }}}
+
+	def __repr__(obj): #{{{
+		string = "Model Description"
+		for i,mod in enumerate(dict.keys(obj.properties())):
+			tmp="%19s: %-22s -- %s" % (mod,"[%s,%s]" % ("1x1",obj.__dict__[mod].__class__.__name__),obj.properties()[mod][1])
+			string="\n".join([string, tmp])
+		return string
+	# }}}
+
+	def checkmessage(self,string):    # {{{
+		print(("model not consistent: ", string))
+		self.private.isconsistent=False
+		return self
+	# }}}
+
+	def extract(md,area):    # {{{
+		"""
+		extract - extract a model according to an Argus contour or flag list
+
+   This routine extracts a submodel from a bigger model with respect to a given contour
+   md must be followed by the corresponding exp file or flags list
+   It can either be a domain file (argus type, .exp extension), or an array of element flags. 
+   If user wants every element outside the domain to be 
+   extract2d, add '~' to the name of the domain file (ex: '~HO.exp')
+   an empty string '' will be considered as an empty domain
+   a string 'all' will be considered as the entire domain
+
+   Usage:
+      md2=extract(md,area)
+
+   Examples:
+      md2=extract(md,'Domain.exp')
+
+   See also: EXTRUDE, COLLAPSE
+		"""
+
+		#copy model
+		md1=copy.deepcopy(md)
+
+		#get elements that are inside area
+		flag_elem=FlagElements(md1,area)
+		if not numpy.any(flag_elem):
+			raise RuntimeError("extracted model is empty")
+
+		#kick out all elements with 3 dirichlets
+		spc_elem=numpy.nonzero(numpy.logical_not(flag_elem))[0]
+		spc_node=numpy.unique(md1.mesh.elements[spc_elem,:])-1
+		flag=numpy.ones(md1.mesh.numberofvertices)
+		flag[spc_node]=0
+		pos=numpy.nonzero(numpy.logical_not(numpy.sum(flag[md1.mesh.elements-1],axis=1)))[0]
+		flag_elem[pos]=0
+	
+		#extracted elements and nodes lists
+		pos_elem=numpy.nonzero(flag_elem)[0]
+		pos_node=numpy.unique(md1.mesh.elements[pos_elem,:])-1
+	
+		#keep track of some fields
+		numberofvertices1=md1.mesh.numberofvertices
+		numberofelements1=md1.mesh.numberofelements
+		numberofvertices2=numpy.size(pos_node)
+		numberofelements2=numpy.size(pos_elem)
+		flag_node=numpy.zeros(numberofvertices1)
+		flag_node[pos_node]=1
+	
+		#Create Pelem and Pnode (transform old nodes in new nodes and same thing for the elements)
+		Pelem=numpy.zeros(numberofelements1,int)
+		Pelem[pos_elem]=numpy.arange(1,numberofelements2+1)
+		Pnode=numpy.zeros(numberofvertices1,int)
+		Pnode[pos_node]=numpy.arange(1,numberofvertices2+1)
+	
+		#renumber the elements (some node won't exist anymore)
+		elements_1=copy.deepcopy(md1.mesh.elements)
+		elements_2=elements_1[pos_elem,:]
+		elements_2[:,0]=Pnode[elements_2[:,0]-1]
+		elements_2[:,1]=Pnode[elements_2[:,1]-1]
+		elements_2[:,2]=Pnode[elements_2[:,2]-1]
+		if md1.mesh.__class__.__name__=='mesh3dprisms':
+			elements_2[:,3]=Pnode[elements_2[:,3]-1]
+			elements_2[:,4]=Pnode[elements_2[:,4]-1]
+			elements_2[:,5]=Pnode[elements_2[:,5]-1]
+
+		#OK, now create the new model!
+		#take every field from model
+		md2=copy.deepcopy(md1)
+
+		#automatically modify fields
+		#loop over model fields
+		model_fields=vars(md1)
+		for fieldi in model_fields:
+			#get field
+			field=getattr(md1,fieldi)
+			fieldsize=numpy.shape(field)
+			if hasattr(field,'__dict__') and not m.ismember(fieldi,['results'])[0]:    #recursive call
+				object_fields=vars(field)
+				for fieldj in object_fields:
+					#get field
+					field=getattr(getattr(md1,fieldi),fieldj)
+					fieldsize=numpy.shape(field)
+					if len(fieldsize):
+						#size = number of nodes * n
+						if   fieldsize[0]==numberofvertices1:
+							setattr(getattr(md2,fieldi),fieldj,field[pos_node])
+						elif fieldsize[0]==numberofvertices1+1:
+							setattr(getattr(md2,fieldi),fieldj,numpy.vstack((field[pos_node],field[-1,:])))
+							#size = number of elements * n
+						elif fieldsize[0]==numberofelements1:
+							setattr(getattr(md2,fieldi),fieldj,field[pos_elem])
+			else:
+				if len(fieldsize):
+					#size = number of nodes * n
+					if fieldsize[0]==numberofvertices1:
+						setattr(md2,fieldi,field[pos_node])
+					elif fieldsize[0]==numberofvertices1+1:
+						setattr(md2,fieldi,numpy.hstack((field[pos_node],field[-1,:])))
+						#size = number of elements * n
+					elif fieldsize[0]==numberofelements1:
+						setattr(md2,fieldi,field[pos_elem])
+
+		#modify some specific fields
+
+		#Mesh
+		md2.mesh.numberofelements=numberofelements2
+		md2.mesh.numberofvertices=numberofvertices2
+		md2.mesh.elements=elements_2
+		
+		#mesh.uppervertex mesh.lowervertex
+		if md1.mesh.__class__.__name__=='mesh3dprisms':
+			md2.mesh.uppervertex=md1.mesh.uppervertex[pos_node]
+			pos=numpy.nonzero(numpy.logical_not(md2.mesh.uppervertex==-1))[0]
+			md2.mesh.uppervertex[pos]=Pnode[md2.mesh.uppervertex[pos]-1]
+			
+			md2.mesh.lowervertex=md1.mesh.lowervertex[pos_node]
+			pos=numpy.nonzero(numpy.logical_not(md2.mesh.lowervertex==-1))[0]
+			md2.mesh.lowervertex[pos]=Pnode[md2.mesh.lowervertex[pos]-1]
+			
+			md2.mesh.upperelements=md1.mesh.upperelements[pos_elem]
+			pos=numpy.nonzero(numpy.logical_not(md2.mesh.upperelements==-1))[0]
+			md2.mesh.upperelements[pos]=Pelem[md2.mesh.upperelements[pos]-1]
+			
+			md2.mesh.lowerelements=md1.mesh.lowerelements[pos_elem]
+			pos=numpy.nonzero(numpy.logical_not(md2.mesh.lowerelements==-1))[0]
+			md2.mesh.lowerelements[pos]=Pelem[md2.mesh.lowerelements[pos]-1]
+			
+		#Initial 2d mesh 
+		if md1.mesh.__class__.__name__=='mesh3dprisms':
+			flag_elem_2d=flag_elem[numpy.arange(0,md1.mesh.numberofelements2d)]
+			pos_elem_2d=numpy.nonzero(flag_elem_2d)[0]
+			flag_node_2d=flag_node[numpy.arange(0,md1.mesh.numberofvertices2d)]
+			pos_node_2d=numpy.nonzero(flag_node_2d)[0]
+		
+			md2.mesh.numberofelements2d=numpy.size(pos_elem_2d)
+			md2.mesh.numberofvertices2d=numpy.size(pos_node_2d)
+			md2.mesh.elements2d=md1.mesh.elements2d[pos_elem_2d,:]
+			md2.mesh.elements2d[:,0]=Pnode[md2.mesh.elements2d[:,0]-1]
+			md2.mesh.elements2d[:,1]=Pnode[md2.mesh.elements2d[:,1]-1]
+			md2.mesh.elements2d[:,2]=Pnode[md2.mesh.elements2d[:,2]-1]
+		
+			md2.mesh.x2d=md1.mesh.x[pos_node_2d]
+			md2.mesh.y2d=md1.mesh.y[pos_node_2d]
+		
+		#Edges
+		if m.strcmp(md.mesh.domaintype(),'2Dhorizontal'):
+			if numpy.ndim(md2.mesh.edges)>1 and numpy.size(md2.mesh.edges,axis=1)>1:    
+				#do not use ~isnan because there are some numpy.nans...
+				#renumber first two columns
+				pos=numpy.nonzero(md2.mesh.edges[:,3]!=-1)[0]
+				md2.mesh.edges[:  ,0]=Pnode[md2.mesh.edges[:,0]-1]
+				md2.mesh.edges[:  ,1]=Pnode[md2.mesh.edges[:,1]-1]
+				md2.mesh.edges[:  ,2]=Pelem[md2.mesh.edges[:,2]-1]
+				md2.mesh.edges[pos,3]=Pelem[md2.mesh.edges[pos,3]-1]
+				#remove edges when the 2 vertices are not in the domain.
+				md2.mesh.edges=md2.mesh.edges[numpy.nonzero(numpy.logical_and(md2.mesh.edges[:,0],md2.mesh.edges[:,1]))[0],:]
+				#Replace all zeros by -1 in the last two columns
+				pos=numpy.nonzero(md2.mesh.edges[:,2]==0)[0]
+				md2.mesh.edges[pos,2]=-1
+				pos=numpy.nonzero(md2.mesh.edges[:,3]==0)[0]
+				md2.mesh.edges[pos,3]=-1
+				#Invert -1 on the third column with last column (Also invert first two columns!!)
+				pos=numpy.nonzero(md2.mesh.edges[:,2]==-1)[0]
+				md2.mesh.edges[pos,2]=md2.mesh.edges[pos,3]
+				md2.mesh.edges[pos,3]=-1
+				values=md2.mesh.edges[pos,1]
+				md2.mesh.edges[pos,1]=md2.mesh.edges[pos,0]
+				md2.mesh.edges[pos,0]=values
+				#Finally remove edges that do not belong to any element
+				pos=numpy.nonzero(numpy.logical_and(md2.mesh.edges[:,1]==-1,md2.mesh.edges[:,2]==-1))[0]
+				md2.mesh.edges=numpy.delete(md2.mesh.edges,pos,axis=0)
+
+		#Penalties
+		if numpy.any(numpy.logical_not(numpy.isnan(md2.stressbalance.vertex_pairing))):
+			for i in range(numpy.size(md1.stressbalance.vertex_pairing,axis=0)):
+				md2.stressbalance.vertex_pairing[i,:]=Pnode[md1.stressbalance.vertex_pairing[i,:]]
+			md2.stressbalance.vertex_pairing=md2.stressbalance.vertex_pairing[numpy.nonzero(md2.stressbalance.vertex_pairing[:,0])[0],:]
+		if numpy.any(numpy.logical_not(numpy.isnan(md2.masstransport.vertex_pairing))):
+			for i in range(numpy.size(md1.masstransport.vertex_pairing,axis=0)):
+				md2.masstransport.vertex_pairing[i,:]=Pnode[md1.masstransport.vertex_pairing[i,:]]
+				md2.masstransport.vertex_pairing=md2.masstransport.vertex_pairing[numpy.nonzero(md2.masstransport.vertex_pairing[:,0])[0],:]
+
+		#recreate segments
+		if md1.mesh.__class__.__name__=='mesh2d':
+			[md2.mesh.vertexconnectivity]=NodeConnectivity(md2.mesh.elements,md2.mesh.numberofvertices)
+			[md2.mesh.elementconnectivity]=ElementConnectivity(md2.mesh.elements,md2.mesh.vertexconnectivity)
+			md2.mesh.segments=contourenvelope(md2)
+			md2.mesh.vertexonboundary=numpy.zeros(numberofvertices2,bool)
+			md2.mesh.vertexonboundary[md2.mesh.segments[:,0:2]-1]=True
+		else:
+			#First do the connectivity for the contourenvelope in 2d
+			[md2.mesh.vertexconnectivity]=NodeConnectivity(md2.mesh.elements2d,md2.mesh.numberofvertices2d)
+			[md2.mesh.elementconnectivity]=ElementConnectivity(md2.mesh.elements2d,md2.mesh.vertexconnectivity)
+			segments=contourenvelope(md2)
+			md2.mesh.vertexonboundary=numpy.zeros(numberofvertices2/md2.mesh.numberoflayers,bool)
+			md2.mesh.vertexonboundary[segments[:,0:2]-1]=True
+			md2.mesh.vertexonboundary=numpy.tile(md2.mesh.vertexonboundary,md2.mesh.numberoflayers)
+			#Then do it for 3d as usual
+			[md2.mesh.vertexconnectivity]=NodeConnectivity(md2.mesh.elements,md2.mesh.numberofvertices)
+			[md2.mesh.elementconnectivity]=ElementConnectivity(md2.mesh.elements,md2.mesh.vertexconnectivity)
+
+		#Boundary conditions: Dirichlets on new boundary
+		#Catch the elements that have not been extracted
+		orphans_elem=numpy.nonzero(numpy.logical_not(flag_elem))[0]
+		orphans_node=numpy.unique(md1.mesh.elements[orphans_elem,:])-1
+		#Figure out which node are on the boundary between md2 and md1
+		nodestoflag1=numpy.intersect1d(orphans_node,pos_node)
+		nodestoflag2=Pnode[nodestoflag1].astype(int)-1
+		if numpy.size(md1.stressbalance.spcvx)>1 and numpy.size(md1.stressbalance.spcvy)>2 and numpy.size(md1.stressbalance.spcvz)>2:
+			if numpy.size(md1.inversion.vx_obs)>1 and numpy.size(md1.inversion.vy_obs)>1:
+				md2.stressbalance.spcvx[nodestoflag2]=md2.inversion.vx_obs[nodestoflag2] 
+				md2.stressbalance.spcvy[nodestoflag2]=md2.inversion.vy_obs[nodestoflag2]
+			else:
+				md2.stressbalance.spcvx[nodestoflag2]=numpy.nan
+				md2.stressbalance.spcvy[nodestoflag2]=numpy.nan
+				print("\n!! extract warning: spc values should be checked !!\n\n")
+			#put 0 for vz
+			md2.stressbalance.spcvz[nodestoflag2]=0
+		if numpy.any(numpy.logical_not(numpy.isnan(md1.thermal.spctemperature))):
+			md2.thermal.spctemperature[nodestoflag2,0]=1
+
+		#Results fields
+		if md1.results:
+			md2.results=results()
+			for solutionfield,field in list(md1.results.__dict__.items()):
+				if   isinstance(field,list):
+					setattr(md2.results,solutionfield,[])
+					#get time step
+					for i,fieldi in enumerate(field):
+						if isinstance(fieldi,results) and fieldi:
+							getattr(md2.results,solutionfield).append(results())
+							fieldr=getattr(md2.results,solutionfield)[i]
+							#get subfields
+							for solutionsubfield,subfield in list(fieldi.__dict__.items()):
+								if   numpy.size(subfield)==numberofvertices1:
+									setattr(fieldr,solutionsubfield,subfield[pos_node])
+								elif numpy.size(subfield)==numberofelements1:
+									setattr(fieldr,solutionsubfield,subfield[pos_elem])
+								else:
+									setattr(fieldr,solutionsubfield,subfield)
+						else:
+							getattr(md2.results,solutionfield).append(None)
+				elif isinstance(field,results):
+					setattr(md2.results,solutionfield,results())
+					if isinstance(field,results) and field:
+						fieldr=getattr(md2.results,solutionfield)
+						#get subfields
+						for solutionsubfield,subfield in list(field.__dict__.items()):
+							if   numpy.size(subfield)==numberofvertices1:
+								setattr(fieldr,solutionsubfield,subfield[pos_node])
+							elif numpy.size(subfield)==numberofelements1:
+								setattr(fieldr,solutionsubfield,subfield[pos_elem])
+							else:
+								setattr(fieldr,solutionsubfield,subfield)
+
+		#Keep track of pos_node and pos_elem
+		md2.mesh.extractedvertices=pos_node+1
+		md2.mesh.extractedelements=pos_elem+1
+		return md2
+	# }}}
+
+	def extrude(md,*args):    # {{{
+		"""
+		EXTRUDE - vertically extrude a 2d mesh
+
+		   vertically extrude a 2d mesh and create corresponding 3d mesh.
+		   The vertical distribution can:
+		    - follow a polynomial law
+		    - follow two polynomial laws, one for the lower part and one for the upper part of the mesh
+		    - be discribed by a list of coefficients (between 0 and 1)
+ 
+
+		   Usage:
+		      md=extrude(md,numlayers,extrusionexponent)
+		      md=extrude(md,numlayers,lowerexponent,upperexponent)
+		      md=extrude(md,listofcoefficients)
+
+		   Example:
+				md=extrude(md,15,1.3);
+				md=extrude(md,15,1.3,1.2);
+				md=extrude(md,[0 0.2 0.5 0.7 0.9 0.95 1])
+
+		   See also: MODELEXTRACT, COLLAPSE
+		"""
+
+		#some checks on list of arguments
+		if len(args)>3 or len(args)<1:
+			raise RuntimeError("extrude error message")
+
+		#Extrude the mesh
+		if   len(args)==1:    #list of coefficients
+			clist=args[0]
+			if any(clist<0) or any(clist>1):
+				raise TypeError("extrusioncoefficients must be between 0 and 1")
+			clist.extend([0.,1.])
+			clist.sort()
+			extrusionlist=list(set(clist))
+			numlayers=len(extrusionlist)
+
+		elif len(args)==2:    #one polynomial law
+			if args[1]<=0:
+				raise TypeError("extrusionexponent must be >=0")
+			numlayers=args[0]
+			extrusionlist=(numpy.arange(0.,float(numlayers-1)+1.,1.)/float(numlayers-1))**args[1]
+
+		elif len(args)==3:    #two polynomial laws
+			numlayers=args[0]
+			lowerexp=args[1]
+			upperexp=args[2]
+
+			if args[1]<=0 or args[2]<=0:
+				raise TypeError("lower and upper extrusionexponents must be >=0")
+
+			lowerextrusionlist=(numpy.arange(0.,1.+2./float(numlayers-1),2./float(numlayers-1)))**lowerexp/2.
+			upperextrusionlist=(numpy.arange(0.,1.+2./float(numlayers-1),2./float(numlayers-1)))**upperexp/2.
+			extrusionlist=numpy.unique(numpy.concatenate((lowerextrusionlist,1.-upperextrusionlist)))
+
+		if numlayers<2:
+			raise TypeError("number of layers should be at least 2")
+		if md.mesh.__class__.__name__=='mesh3dprisms':
+			raise TypeError("Cannot extrude a 3d mesh (extrude cannot be called more than once)")
+
+		#Initialize with the 2d mesh
+		mesh2d = md.mesh
+		md.mesh=mesh3dprisms()
+		md.mesh.x                           = mesh2d.x
+		md.mesh.y                           = mesh2d.y
+		md.mesh.elements                    = mesh2d.elements
+		md.mesh.numberofelements            = mesh2d.numberofelements
+		md.mesh.numberofvertices            = mesh2d.numberofvertices
+		
+		md.mesh.lat                         = mesh2d.lat
+		md.mesh.long                        = mesh2d.long
+		md.mesh.epsg                        = mesh2d.epsg
+		
+		md.mesh.vertexonboundary            = mesh2d.vertexonboundary
+		md.mesh.vertexconnectivity          = mesh2d.vertexconnectivity
+		md.mesh.elementconnectivity         = mesh2d.elementconnectivity
+		md.mesh.average_vertex_connectivity = mesh2d.average_vertex_connectivity
+		
+		md.mesh.extractedvertices           = mesh2d.extractedvertices
+		md.mesh.extractedelements           = mesh2d.extractedelements
+		
+		x3d=numpy.empty((0))
+		y3d=numpy.empty((0))
+		z3d=numpy.empty((0))    #the lower node is on the bed
+		thickness3d=md.geometry.thickness    #thickness and bed for these nodes
+		bed3d=md.geometry.base
+
+		#Create the new layers
+		for i in range(numlayers):
+			x3d=numpy.concatenate((x3d,md.mesh.x))
+			y3d=numpy.concatenate((y3d,md.mesh.y))
+			#nodes are distributed between bed and surface accordingly to the given exponent
+			z3d=numpy.concatenate((z3d,(bed3d+thickness3d*extrusionlist[i]).reshape(-1)))
+		number_nodes3d=numpy.size(x3d)    #number of 3d nodes for the non extruded part of the mesh
+
+		#Extrude elements 
+		elements3d=numpy.empty((0,6),int)
+		for i in range(numlayers-1):
+			elements3d=numpy.vstack((elements3d,numpy.hstack((md.mesh.elements+i*md.mesh.numberofvertices,md.mesh.elements+(i+1)*md.mesh.numberofvertices))))    #Create the elements of the 3d mesh for the non extruded part
+		number_el3d=numpy.size(elements3d,axis=0)    #number of 3d nodes for the non extruded part of the mesh
+
+		#Keep a trace of lower and upper nodes
+		lowervertex=-1*numpy.ones(number_nodes3d,int)
+		uppervertex=-1*numpy.ones(number_nodes3d,int)
+		lowervertex[md.mesh.numberofvertices:]=numpy.arange(1,(numlayers-1)*md.mesh.numberofvertices+1)
+		uppervertex[:(numlayers-1)*md.mesh.numberofvertices]=numpy.arange(md.mesh.numberofvertices+1,number_nodes3d+1)
+		md.mesh.lowervertex=lowervertex
+		md.mesh.uppervertex=uppervertex
+
+		#same for lower and upper elements
+		lowerelements=-1*numpy.ones(number_el3d,int)
+		upperelements=-1*numpy.ones(number_el3d,int)
+		lowerelements[md.mesh.numberofelements:]=numpy.arange(1,(numlayers-2)*md.mesh.numberofelements+1)
+		upperelements[:(numlayers-2)*md.mesh.numberofelements]=numpy.arange(md.mesh.numberofelements+1,(numlayers-1)*md.mesh.numberofelements+1)
+		md.mesh.lowerelements=lowerelements
+		md.mesh.upperelements=upperelements
+
+		#Save old mesh 
+		md.mesh.x2d=md.mesh.x
+		md.mesh.y2d=md.mesh.y
+		md.mesh.elements2d=md.mesh.elements
+		md.mesh.numberofelements2d=md.mesh.numberofelements
+		md.mesh.numberofvertices2d=md.mesh.numberofvertices
+
+		#Build global 3d mesh 
+		md.mesh.elements=elements3d
+		md.mesh.x=x3d
+		md.mesh.y=y3d
+		md.mesh.z=z3d
+		md.mesh.numberofelements=number_el3d
+		md.mesh.numberofvertices=number_nodes3d
+		md.mesh.numberoflayers=numlayers
+
+		#Ok, now deal with the other fields from the 2d mesh:
+
+		#bedinfo and surface info
+		md.mesh.vertexonbase=project3d(md,'vector',numpy.ones(md.mesh.numberofvertices2d,bool),'type','node','layer',1)
+		md.mesh.vertexonsurface=project3d(md,'vector',numpy.ones(md.mesh.numberofvertices2d,bool),'type','node','layer',md.mesh.numberoflayers)
+		md.mesh.vertexonboundary=project3d(md,'vector',md.mesh.vertexonboundary,'type','node')
+
+		#lat long
+		md.mesh.lat=project3d(md,'vector',md.mesh.lat,'type','node')
+		md.mesh.long=project3d(md,'vector',md.mesh.long,'type','node')
+
+		md.geometry.extrude(md)
+		md.friction.extrude(md)
+		md.inversion.extrude(md)
+		md.smb.extrude(md)
+		md.initialization.extrude(md)
+		md.flowequation.extrude(md)
+
+		md.stressbalance.extrude(md)
+		md.thermal.extrude(md)
+		md.masstransport.extrude(md)
+
+		# Calving variables
+		md.hydrology.extrude(md)
+		md.calving.extrude(md)
+
+		#connectivity
+		md.mesh.elementconnectivity=numpy.tile(md.mesh.elementconnectivity,(numlayers-1,1))
+		md.mesh.elementconnectivity[numpy.nonzero(md.mesh.elementconnectivity==0)]=-sys.maxsize-1
+		if not numpy.isnan(md.mesh.elementconnectivity).all():
+			for i in range(1,numlayers-1):
+				md.mesh.elementconnectivity[i*md.mesh.numberofelements2d:(i+1)*md.mesh.numberofelements2d,:] \
+					=md.mesh.elementconnectivity[i*md.mesh.numberofelements2d:(i+1)*md.mesh.numberofelements2d,:]+md.mesh.numberofelements2d
+				md.mesh.elementconnectivity[numpy.nonzero(md.mesh.elementconnectivity<0)]=0
+
+		md.materials.extrude(md)
+		md.damage.extrude(md)
+		md.gia.extrude(md)
+		md.mask.extrude(md)
+		md.qmu.extrude(md)
+		md.basalforcings.extrude(md)
+
+		#increase connectivity if less than 25:
+		if md.mesh.average_vertex_connectivity<=25:
+			md.mesh.average_vertex_connectivity=100
+
+		return md
+	# }}}
+	def collapse(md): #{{{
+		'''
+		collapses a 3d mesh into a 2d mesh
+			
+		This routine collapses a 3d model into a 2d model and collapses all
+		the fileds of the 3d model by taking their depth-averaged values
+			
+		Usage:
+			md=collapse(md)
+		'''	
+
+		#Check that the model is really a 3d model
+		if md.mesh.domaintype().lower() != '3d':
+			raise Exception("only a 3D model can be collapsed")
+		
+		#drag is limited to nodes that are on the bedrock.
+		md.friction.coefficient=project2d(md,md.friction.coefficient,1)
+
+		#p and q (same deal, except for element that are on the bedrock: )
+		md.friction.p=project2d(md,md.friction.p,1)
+		md.friction.q=project2d(md,md.friction.q,1)
+
+		#observations
+		if not numpy.isnan(md.inversion.vx_obs).all(): md.inversion.vx_obs=project2d(md,md.inversion.vx_obs,md.mesh.numberoflayers) 
+		if not numpy.isnan(md.inversion.vy_obs).all(): md.inversion.vy_obs=project2d(md,md.inversion.vy_obs,md.mesh.numberoflayers) 
+		if not numpy.isnan(md.inversion.vel_obs).all(): md.inversion.vel_obs=project2d(md,md.inversion.vel_obs,md.mesh.numberoflayers) 
+		if not numpy.isnan(md.inversion.cost_functions_coefficients).all(): md.inversion.cost_functions_coefficients=project2d(md,md.inversion.cost_functions_coefficients,md.mesh.numberoflayers) 
+		if isinstance(md.inversion.min_parameters,numpy.ndarray):
+			if md.inversion.min_parameters.size>1: md.inversion.min_parameters=project2d(md,md.inversion.min_parameters,md.mesh.numberoflayers) 
+			if isinstance(md.inversion.max_parameters,numpy.ndarray):
+				if md.inversion.max_parameters.size>1: md.inversion.max_parameters=project2d(md,md.inversion.max_parameters,md.mesh.numberoflayers) 
+				if not numpy.isnan(md.smb.mass_balance).all():
+					md.smb.mass_balance=project2d(md,md.smb.mass_balance,md.mesh.numberoflayers) 
+					
+		if not numpy.isnan(md.balancethickness.thickening_rate).all(): md.balancethickness.thickening_rate=project2d(md,md.balancethickness.thickening_rate,md.mesh.numberoflayers) 
+
+		#results
+		if not numpy.isnan(md.initialization.vx).all(): md.initialization.vx=DepthAverage(md,md.initialization.vx)
+		if not numpy.isnan(md.initialization.vy).all(): md.initialization.vy=DepthAverage(md,md.initialization.vy)
+		if not numpy.isnan(md.initialization.vz).all(): md.initialization.vz=DepthAverage(md,md.initialization.vz)
+		if not numpy.isnan(md.initialization.vel).all(): md.initialization.vel=DepthAverage(md,md.initialization.vel)
+		if not numpy.isnan(md.initialization.temperature).all(): md.initialization.temperature=DepthAverage(md,md.initialization.temperature)
+		if not numpy.isnan(md.initialization.pressure).all(): md.initialization.pressure=project2d(md,md.initialization.pressure,1)
+		if not numpy.isnan(md.initialization.sediment_head).all(): md.initialization.sediment_head=project2d(md,md.initialization.sediment_head,1)
+		if not numpy.isnan(md.initialization.epl_head).all(): md.initialization.epl_head=project2d(md,md.initialization.epl_head,1)
+		if not numpy.isnan(md.initialization.epl_thickness).all(): md.initialization.epl_thickness=project2d(md,md.initialization.epl_thickness,1)
+
+		#gia
+		if not numpy.isnan(md.gia.mantle_viscosity).all(): md.gia.mantle_viscosity=project2d(md,md.gia.mantle_viscosity,1) 
+		if not numpy.isnan(md.gia.lithosphere_thickness).all(): md.gia.lithosphere_thickness=project2d(md,md.gia.lithosphere_thickness,1) 
+
+		#elementstype
+		if not numpy.isnan(md.flowequation.element_equation).all():
+			md.flowequation.element_equation=project2d(md,md.flowequation.element_equation,1)
+			md.flowequation.vertex_equation=project2d(md,md.flowequation.vertex_equation,1)
+			md.flowequation.borderSSA=project2d(md,md.flowequation.borderSSA,1)
+			md.flowequation.borderHO=project2d(md,md.flowequation.borderHO,1)
+			md.flowequation.borderFS=project2d(md,md.flowequation.borderFS,1)
+
+		# Hydrologydc variables
+		if hasattr(md.hydrology,'hydrologydc'):
+			md.hydrology.spcsediment_head=project2d(md,md.hydrology.spcsediment_head,1)
+			md.hydrology.mask_eplactive_node=project2d(md,md.hydrology.mask_eplactive_node,1)
+			md.hydrology.sediment_transmitivity=project2d(md,md.hydrology.sediment_transmitivity,1)
+			md.hydrology.basal_moulin_input=project2d(md,md.hydrology.basal_moulin_input,1)
+			if md.hydrology.isefficientlayer == 1:
+				md.hydrology.spcepl_head=project2d(md,md.hydrology.spcepl_head,1)
+
+		#boundary conditions
+		md.stressbalance.spcvx=project2d(md,md.stressbalance.spcvx,md.mesh.numberoflayers)
+		md.stressbalance.spcvy=project2d(md,md.stressbalance.spcvy,md.mesh.numberoflayers)
+		md.stressbalance.spcvz=project2d(md,md.stressbalance.spcvz,md.mesh.numberoflayers)
+		md.stressbalance.referential=project2d(md,md.stressbalance.referential,md.mesh.numberoflayers)
+		md.stressbalance.loadingforce=project2d(md,md.stressbalance.loadingforce,md.mesh.numberoflayers)
+		md.masstransport.spcthickness=project2d(md,md.masstransport.spcthickness,md.mesh.numberoflayers)
+		if not numpy.isnan(md.damage.spcdamage).all(): md.damage.spcdamage=project2d(md,md.damage.spcdamage,md.mesh.numberoflayers-1)
+		md.thermal.spctemperature=project2d(md,md.thermal.spctemperature,md.mesh.numberoflayers-1)
+
+		#materials
+		md.materials.rheology_B=DepthAverage(md,md.materials.rheology_B)
+		md.materials.rheology_n=project2d(md,md.materials.rheology_n,1)
+		
+		#damage: 
+		if md.damage.isdamage:
+			md.damage.D=DepthAverage(md,md.damage.D)
+
+		#special for thermal modeling:
+		md.basalforcings.groundedice_melting_rate=project2d(md,md.basalforcings.groundedice_melting_rate,1) 
+		md.basalforcings.floatingice_melting_rate=project2d(md,md.basalforcings.floatingice_melting_rate,1) 
+		md.basalforcings.geothermalflux=project2d(md,md.basalforcings.geothermalflux,1) #bedrock only gets geothermal flux
+
+		#update of connectivity matrix
+		md.mesh.average_vertex_connectivity=25
+
+		#Collapse the mesh
+		nodes2d=md.mesh.numberofvertices2d
+		elements2d=md.mesh.numberofelements2d
+
+		#parameters
+		md.geometry.surface=project2d(md,md.geometry.surface,1)
+		md.geometry.thickness=project2d(md,md.geometry.thickness,1)
+		md.geometry.base=project2d(md,md.geometry.base,1)
+		if isinstance(md.geometry.bed,numpy.ndarray):
+			md.geometry.bed=project2d(md,md.geometry.bed,1)
+			md.mask.groundedice_levelset=project2d(md,md.mask.groundedice_levelset,1)
+			md.mask.ice_levelset=project2d(md,md.mask.ice_levelset,1)
+
+		#lat long
+		if isinstance(md.mesh.lat,numpy.ndarray):
+			if md.mesh.lat.size==md.mesh.numberofvertices:  md.mesh.lat=project2d(md,md.mesh.lat,1) 
+			if isinstance(md.mesh.long,numpy.ndarray):
+				if md.mesh.long.size==md.mesh.numberofvertices: md.mesh.long=project2d(md,md.mesh.long,1) 
+
+		#Initialize with the 2d mesh
+		mesh=mesh2d()
+		mesh.x=md.mesh.x2d
+		mesh.y=md.mesh.y2d
+		mesh.numberofvertices=md.mesh.numberofvertices2d
+		mesh.numberofelements=md.mesh.numberofelements2d
+		mesh.elements=md.mesh.elements2d
+		if not numpy.isnan(md.mesh.vertexonboundary).all(): mesh.vertexonboundary=project2d(md,md.mesh.vertexonboundary,1)
+		if not numpy.isnan(md.mesh.elementconnectivity).all(): mesh.elementconnectivity=project2d(md,md.mesh.elementconnectivity,1)
+		md.mesh=mesh
+
+		return md
+
+#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/organizer.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/organizer.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/organizer.py	(revision 21239)
@@ -0,0 +1,179 @@
+import os.path
+from collections import OrderedDict
+import pairoptions
+from loadvars import loadvars
+from loadmodel import loadmodel
+from savevars import savevars
+from model import model
+from dbm.ndbm import whichdb
+import MatlabFuncs as m
+
+class organizer(object):
+	"""
+	ORGANIZER class definition
+
+	   Supported options:
+	      repository: directory where all models will be saved
+	      prefix:     prefix for saved model names
+	      steps:      requested steps
+	      trunkprefix:prefix of previous run with a different prefix. Used to branch.
+
+	   Usage:
+	      org = organizer(varargin)
+
+	   Examples:
+	      org = organizer('repository','Models/','prefix','AGU2015','steps',0);  %build an empty organizer object with a given repository
+	"""
+
+	def __init__(self,**kwargs):    # {{{
+		self._currentstep  =0
+		self.repository    ='./'
+		self.prefix        ='model.'
+		self.trunkprefix   =''
+		self.steps         =[]
+		self.requestedsteps=[0]
+
+		#process options
+		options=pairoptions.pairoptions(**kwargs)
+
+		#Get prefix
+		prefix=options.getfieldvalue('prefix','model.')
+		if not isinstance(prefix,str):
+			raise TypeError("prefix is not a string")
+		if not m.strcmp(prefix,prefix.strip()) or len(prefix.split()) > 1:
+			raise TypeError("prefix should not have any white space")
+		self.prefix=prefix
+
+		#Get repository
+		repository=options.getfieldvalue('repository','./')
+		if not isinstance(repository,str):
+			raise TypeError("repository is not a string")
+		if not os.path.isdir(repository):
+			raise IOError("Directory '%s' not found" % repository)
+		self.repository=repository
+
+		#Get steps
+		self.requestedsteps=options.getfieldvalue('steps',[0])
+		
+		#Get trunk prefix (only if provided by user)
+		if options.exist('trunkprefix'):
+			trunkprefix=options.getfieldvalue('trunkprefix','')
+			if not isinstance(trunkprefix,str):
+				raise TypeError("trunkprefix is not a string")
+			if not m.strcmp(trunkprefix,trunkprefix.strip()) or len(trunkprefix.split()) > 1:
+				raise TypeError("trunkprefix should not have any white space")
+			self.trunkprefix=trunkprefix
+	#}}}
+	def __repr__(self):    # {{{
+		s =""
+
+		s+="%s\n" % "   Repository: '%s'" % self.repository
+		s+="%s\n" % "   Prefix:     '%s'" % self.prefix
+		if not self.steps:
+			s+="%s\n" % "   no step"
+		else:
+			for step in self.steps:
+				s+="%s\n" % "   step #%2i: '%s'",step['id'],step['string']
+	#}}}
+	def load(self,string):    # {{{
+
+		#Get model path
+		if not isinstance(string,str):
+			raise TypeError("argument provided is not a string")
+		path=os.path.join(self.repository,self.prefix+string)
+
+		#figure out if the model is there
+		if os.path.exists(path):
+			struc=loadvars(path)
+			name=name=[key for key in list(struc.keys())]
+			md=struc.name[0]
+		else:
+			raise IOError("Could not find '%s'" % path)
+
+		return md
+	#}}}
+	def loadmodel(self,string):    # {{{
+
+		#Get model path
+		if not isinstance(string,str):
+			raise TypeError("argument provided is not a string")
+		path1=os.path.join(self.repository,self.prefix+'.step#'+string+'.python')
+		path2=os.path.join(self.repository,string)
+
+		#figure out if the model is there, otherwise, we have to use the default path supplied by user.
+		if whichdb(path1):
+			md=loadmodel(path1)
+			return md
+                elif whichdb(path2):
+                        md=loadmodel(path2)
+                        return md
+
+		#If we are here, the model has not been found. Try trunk prefix if provided
+		if self.trunkprefix:
+			path2=os.path.join(self.repository,self.trunkprefix+string)
+			if not os.path.exists(path2):
+				raise IOError("Could find neither '%s' nor '%s'" % (path,path2))
+			else:
+				print(("--> Branching '%s' from trunk '%s'" % (self.prefix,self.trunkprefix)))
+				md=loadmodel(path2)
+				return md
+		else:
+			raise IOError("Could not find '%s'" % path1)
+	#}}}
+	def perform(self,string):    # {{{
+
+		bool=False
+
+		#Some checks
+		if not isinstance(string,str):
+			raise TypeError("Step provided should be a string")
+		if not m.strcmp(string,string.strip()) or len(string.split()) > 1:
+			raise TypeError("Step provided should not have any white space")
+		if self._currentstep>0 and string in [step['string'] for step in self.steps]:
+			raise RuntimeError("Step '%s' already present. Change name" % string) 
+
+		#Add step
+		self.steps.append(OrderedDict())
+		self.steps[-1]['id']=len(self.steps)
+		self.steps[-1]['string']=string
+		self._currentstep+=1
+
+		#if requestedsteps = 0, print all steps in self 
+		if 0 in self.requestedsteps:
+			if self._currentstep==1:
+				print(("   prefix: %s" % self.prefix))
+			print(("   step #%i : %s" % (self.steps[self._currentstep-1]['id'],self.steps[self._currentstep-1]['string'])))
+
+		#Ok, now if _currentstep is a member of steps, return true
+		if self._currentstep in self.requestedsteps:
+			print(("\n   step #%i : %s\n" % (self.steps[self._currentstep-1]['id'],self.steps[self._currentstep-1]['string'])))
+			bool=True
+
+		#assign self back to calling workspace
+		# (no need, since Python modifies class instance directly)
+
+		return bool
+	#}}}
+	def savemodel(self,md, name='default'):    # {{{
+
+		#check
+		if self._currentstep==0:
+			raise RuntimeError("Cannot save model because organizer (org) is empty! Make sure you did not skip any perform call")
+		if self._currentstep>len(self.steps):
+			raise RuntimeError("Cannot save model because organizer (org) is not up to date!")
+
+		if (name=='default'):
+			name=os.path.join(self.repository,self.prefix+'step#'+self.steps[self._currentstep-1]['string']+'.python')
+                else:
+                    name=os.path.join(self.repository,name)
+		print(("saving model as: '%s'" % name))
+
+		#check that md is a model
+		if not isinstance(md,model):
+			print("second argument is not a model")
+		if self._currentstep>len(self.steps):
+			raise RuntimeError("organizer error message: element with id %d not found" % self._currentstep)
+
+		#save model
+		savevars(name,'md',md)
+	#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/outputdefinition.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/outputdefinition.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/outputdefinition.py	(revision 21239)
@@ -0,0 +1,49 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+import numpy as npy
+
+class outputdefinition(object):
+	"""
+	OUTPUTDEFINITION class definition
+
+	   Usage:
+	      outputdefinition=outputdefinition();
+	"""
+
+	def __init__(self): # {{{
+		self.definitions                   = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   Outputdefinitions:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"definitions","list of potential outputs that can be requested, but which need additional data to be defined"))
+
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+		#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		
+		md = checkfield(md,'fieldname','outputdefinition.definitions','cell',1)
+		for definition in self.definitions:
+			definition.checkconsistency(md,solution,analyses);
+
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		
+		enums=npy.zeros(len(self.definitions),)
+		
+		for i in range(len(self.definitions)):
+			self.definitions[i].marshall(md,fid);
+			classdefinition=self.definitions[i].__class__.__name__
+			classdefinition=classdefinition[0].upper()+classdefinition[1:]
+			enums[i]=StringToEnum(classdefinition)[0]
+		
+		enums=npy.unique(enums);
+		
+		WriteData(fid,'data',enums,'enum',OutputdefinitionListEnum(),'format','DoubleMat','mattype',1);
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/pairoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/pairoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/pairoptions.py	(revision 21239)
@@ -0,0 +1,174 @@
+from collections import OrderedDict
+from WriteData import WriteData
+
+class pairoptions(object):
+	"""
+	PAIROPTIONS class definition
+ 
+	   Usage:
+	      pairoptions=pairoptions();
+	      pairoptions=pairoptions('module',true,'solver',false);
+	"""
+
+	def __init__(self,**kwargs): # {{{
+		self.functionname = ''
+		self.list         = OrderedDict()
+
+		#get calling function name
+		import inspect
+		if len(inspect.stack()) > 1:
+			self.functionname=inspect.stack()[1][3]
+
+		#initialize list
+		if not len(kwargs):
+			pass    #Do nothing,
+		else:
+			self.buildlist(**kwargs)
+	# }}}
+	def __repr__(self):    # {{{
+		s="   functionname: '%s'\n" % self.functionname
+		if self.list:
+			s+="   list: (%ix%i)\n\n" % (len(self.list),2)
+			for item in list(self.list.items()):
+				if   isinstance(item[1],str):
+					s+="     field: %-10s value: '%s'\n" % (item[0],item[1])
+				elif isinstance(item[1],(bool,int,float)):
+					s+="     field: %-10s value: %g\n" % (item[0],item[1])
+				else:
+					s+="     field: %-10s value: %s\n" % (item[0],type(item[1]))
+		else:
+			s+="   list: empty\n"
+		return s
+	# }}}
+	def buildlist(self,**kwargs):    # {{{
+		"""BUILDLIST - build list of objects from input"""
+		# #check length of input
+		# if len(arg) % 2:
+		# 	raise TypeError('Invalid parameter/value pair arguments') 
+		# numoptions = len(arg)/2
+
+		# #go through arg and build list of objects
+		# for i in xrange(numoptions):
+		# 	if isinstance(arg[2*i],(str,unicode)):
+		# 		self.list[arg[2*i]] = arg[2*i+1];
+		# 	else:
+		# 		#option is not a string, ignore it
+		# 		print "WARNING: option number %d is not a string and will be ignored." % (i+1)
+
+		#go through arg and build list of objects
+		print(kwargs)
+		for name,value in kwargs.items():
+			self.list[name] = value
+		# }}}
+	def addfield(self,field,value):    # {{{
+		"""ADDFIELD - add a field to an options list"""
+		if isinstance(field,str):
+			if field in self.list:
+				print(("WARNING: field '%s' with value=%s exists and will be overwritten with value=%s." % (field,str(self.list[field]),str(value))))
+			self.list[field] = value
+	# }}}
+	def addfielddefault(self,field,value):    # {{{
+		"""ADDFIELDDEFAULT - add a field to an options list if it does not already exist"""
+		if isinstance(field,str):
+			if field not in self.list:
+				self.list[field] = value
+	# }}}
+	def AssignObjectFields(self,obj2):    # {{{
+		"""ASSIGNOBJECTFIELDS - assign object fields from options"""
+		for item in list(self.list.items()):
+			if item[0] in dir(obj2):
+				setattr(obj2,item[0],item[1])
+			else:
+				print(("WARNING: field '%s' is not a property of '%s'." % (item[0],type(obj2))))
+		return obj2
+	# }}}
+	def changefieldvalue(self,field,newvalue):    # {{{
+		"""CHANGEOPTIONVALUE - change the value of an option in an option list"""
+
+		self.list[field]=newvalue;
+	# }}}
+	def exist(self,field):    # {{{
+		"""EXIST - check if the option exist"""
+
+		#some argument checking: 
+		if field == None or field == '':
+			raise ValueError('exist error message: bad usage');
+		if not isinstance(field,str):
+			raise TypeError("exist error message: field '%s' should be a string." % str(field));
+
+		#Recover option
+		if field in self.list:
+			return True
+		else:
+			return False
+	# }}}
+	def getfieldvalue(self,field,default=None):    # {{{
+		"""
+		GETOPTION - get the value of an option
+	
+		Usage:
+		   value=options.getfieldvalue(field,default)
+	 
+		Find an option value from a field. A default option
+		can be given in input if the field does not exist
+	 
+		Examples:
+		   value=options.getfieldvalue(options,'caxis')
+		   value=options.getfieldvalue(options,'caxis',[0 2])
+		"""
+
+		#some argument checking: 
+		if field == None or field == '':
+			raise ValueError('getfieldvalue error message: bad usage');
+		if not isinstance(field,str):
+			raise TypeError("getfieldvalue error message: field '%s' should be a string." % str(field));
+
+		#Recover option
+		if field in self.list:
+			value=self.list[field]
+		else:
+			if not default == None:
+				value=default
+			else:
+				raise KeyError("error message: field '%s' has not been provided by user (and no default value has been specified)." % field)
+
+		return value
+	# }}}
+	def removefield(self,field,warn):    # {{{
+		"""
+		REMOVEFIELD - delete a field in an option list
+	 
+		Usage:
+		   obj=removefield(self,field,warn)
+	 
+		if warn==1 display an info message to warn user that
+		some of his options have been removed.
+		"""
+
+		#check if field exist
+		if field in self.list:
+
+			#remove duplicates from the options list
+			del self.list[field]
+
+			#warn user if requested
+			if warn:
+				print(("removefield info: option '%s' has been removed from the list of options." % field))
+	# }}}
+	def marshall(self,md,fid,firstindex):    # {{{
+
+		for i,item in enumerate(self.list.items()):
+			name  = item[0]
+			value = item[1]
+
+			#Write option name
+			WriteData(fid,'enum',(firstindex-1)+2*i+1,'data',name,'format','String')
+
+			#Write option value
+			if   isinstance(value,str):
+				WriteData(fid,'enum',(firstindex-1)+2*i+2,'data',value,'format','String')
+			elif isinstance(value,(bool,int,float)):
+				WriteData(fid,'enum',(firstindex-1)+2*i+2,'data',value,'format','Double')
+			else:
+				raise TypeError("Cannot marshall option '%s': format not supported yet." % name)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/plotoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/plotoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/plotoptions.py	(revision 21239)
@@ -0,0 +1,116 @@
+from collections import OrderedDict, Counter, defaultdict
+import pairoptions
+
+class plotoptions(object):
+	'''
+	PLOTOPTIONS class definition
+
+		Usage:
+			plotoptions=plotoptions(**kwargs)
+	'''
+
+	def __init__(self,**kwargs):# {{{
+		self.numberofplots = 0
+		self.figurenumber  = 1
+		self.list          = OrderedDict()
+
+		self.buildlist(**kwargs)
+		#}}}
+	def __repr__(self): #{{{
+		s="\n"
+		s+="	numberofplots: %i\n" % self.numberofplots
+		s+="	figurenumber: %i\n"  % self.figurenumber
+		if self.list:
+			s+="	list: (%ix%i)\n" % (len(self.list),2)
+			for item in list(self.list.items()):
+				#s+="	options of plot number %i\n" % item
+				if   isinstance(item[1],str):
+					s+="	field: %-10s value: '%s'\n" % (item[0],item[1])
+				elif isinstance(item[1],(bool,int,float)):
+					s+="	field: %-10s value: '%g'\n" % (item[0],item[1])
+				else:
+					s+="	field: %-10s value: '%s'\n" % (item[0],item[1])
+		else:
+			s+="	list: empty\n"
+		return s
+	#}}}
+	def buildlist(self,**kwargs): #{{{
+
+		for name,value in kwargs.items():
+			self.rawlist[name] = value
+
+		#get figure number 
+		self.figurenumber=rawoptions.getfieldvalue('figure',1)
+		rawoptions.removefield('figure',0)
+
+		#get number of subplots 
+		numberofplots=Counter(x for sublist in rawlist for x in sublist if isinstance(x,str))['data']
+		self.numberofplots=numberofplots
+
+		#figure out whether alloptions flag is on
+		if rawoptions.getfieldvalue('alloptions','off') is 'on':
+			allflag=1
+		else:
+			allflag=0
+
+		#initialize self.list (will need a list of dict's (or nested dict) for numberofplots>1)
+		#self.list=defaultdict(dict)
+		for i in range(numberofplots):
+			self.list[i]=pairoptions.pairoptions()
+
+		#process plot options
+		for i in range(len(rawlist)):
+
+			#if alloptions flag is on, apply to all plots
+			if (allflag and 'data' not in rawlist[i][0] and '#' not in rawlist[i][0]):
+				
+				for j in range(numberofplots):
+					self.list[j].addfield(rawlist[i][0],rawlist[i][1])
+
+			elif '#' in rawlist[i][0]:
+
+				#get subplots associated
+				string=rawlist[i][0].split('#')
+				plotnums=string[-1].split(',')
+				field=string[0]
+
+				#loop over plotnums
+				for k in range(len(plotnums)):
+					plotnum=plotnums[k]
+
+					#Empty
+					if not plotnum: continue
+
+					# '#all'
+					elif 'all' in plotnum:
+						for j in range(numberofplots):
+							self.list[j].addfield(field,rawlist[i][1])
+
+					# '#i-j'
+					elif '-' in plotnum:
+						nums=plotnum.split('-')
+						if len(nums)!=2: continue
+						if False in [x.isdigit() for x in nums]:
+							raise ValueError('error: in option i-j both i and j must be integers')
+						for j in range(int(nums[0])-1,int(nums[1])):
+							self.list[j].addfield(field,rawlist[i][1])	
+
+					# Deal with #i
+					else:
+						#assign to subplot
+						if int(plotnum)>numberofplots:
+							raise ValueError('error: %s cannot be assigned %d which exceeds the number of subplots' % (field,plotnum))
+						self.list[int(plotnum)-1].addfield(field,rawlist[i][1])
+			else:
+				
+				#go through all subplots and assign key-value pairs
+				j=0
+				while j <= numberofplots-1:
+					if not self.list[j].exist(rawlist[i][0]):
+						self.list[j].addfield(rawlist[i][0],rawlist[i][1])
+						break
+					else:
+						j=j+1
+				if j+1>numberofplots:
+					print(("WARNING: too many instances of '%s' in options" % rawlist[i][0]))
+	#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/private.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/private.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/private.py	(revision 21239)
@@ -0,0 +1,37 @@
+from collections import OrderedDict
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+
+class private(object):
+	"""
+	PRIVATE class definition
+
+	   Usage:
+	      private=private();
+	"""
+
+	def __init__(self): # {{{
+		self.isconsistent = True
+		self.runtimename  = ''
+		self.bamg         = OrderedDict()
+		self.solution     = ''
+
+		#set defaults
+		self.setdefaultparameters()
+		#}}}
+	def __repr__(self): # {{{
+		string='   private parameters: do not change'
+
+		string="%s\n%s"%(string,fielddisplay(self,'isconsistent','is model self consistent'))
+		string="%s\n%s"%(string,fielddisplay(self,'runtimename','name of the run launched'))
+		string="%s\n%s"%(string,fielddisplay(self,'bamg','structure with mesh properties constructed if bamg is used to mesh the domain'))
+		string="%s\n%s"%(string,fielddisplay(self,'solution','type of solution launched'))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		return md
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/qmu.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/qmu.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/qmu.py	(revision 21239)
@@ -0,0 +1,157 @@
+import numpy
+from project3d import project3d
+from collections import OrderedDict
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class qmu(object):
+	"""
+	QMU class definition
+
+	   Usage:
+	      qmu=qmu();
+	"""
+
+	def __init__(self): # {{{
+		self.isdakota                    = 0
+		self.variables                   = OrderedDict()
+		self.responses                   = OrderedDict()
+		self.method                      = OrderedDict()
+		self.params                      = OrderedDict()
+		self.results                     = OrderedDict()
+		self.partition                   = float('NaN')
+		self.numberofpartitions          = 0
+		self.numberofresponses           = 0
+		self.variabledescriptors         = []
+		self.responsedescriptors         = []
+		self.mass_flux_profile_directory = float('NaN')
+		self.mass_flux_profiles          = float('NaN')
+		self.mass_flux_segments          = []
+		self.adjacency                   = float('NaN')
+		self.vertex_weight               = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self):    # {{{
+		s ='   qmu parameters:\n'
+
+		s+="%s\n" % fielddisplay(self,'isdakota','is qmu analysis activated?')
+		for i,variable in enumerate(self.variables.items()):
+			s+="         variables%s:  (arrays of each variable class)\n" % \
+					string_dim(self.variables,i)
+			fnames=vars(variable)
+			maxlen=0
+			for fname in fnames:
+				maxlen=max(maxlen,len(fname))
+
+			for fname in fnames:
+				s+="'            %-*s:    [%ix%i]    '%s'\n" % \
+						(maxlen+1,fname,size(getattr(variable,fname)),type(getattr(variable,fname)))
+
+		for i,response in enumerate(self.responses.items()):
+			s+="         responses%s:  (arrays of each response class)\n" % \
+					string_dim(self.responses,i)
+			fnames=vars(response)
+			maxlen=0
+			for fname in fnames:
+				maxlen=max(maxlen,len(fname))
+
+			for fname in fnames:
+				s+="            %-*s:    [%ix%i]    '%s'\n" % \
+						(maxlen+1,fname,size(getattr(response,fname)),type(getattr(response,fname)))
+
+		s+="%s\n" % fielddisplay(self,'numberofresponses','number of responses') 
+
+		for i,method in enumerate(self.method.items()):
+			if isinstance(method,'dakota_method'):
+				s+="            method%s :    '%s'\n" % \
+						(string_dim(method,i),method.method)
+
+		for i,param in enumerate(self.params.items()):
+			s+="         params%s:  (array of method-independent parameters)\n" % \
+					string_dim(self.params,i)
+			fnames=vars(param)
+			maxlen=0
+			for fname in fnames:
+				maxlen=max(maxlen,len(fname))
+
+			for fname in fnames:
+				s+="            %-*s: %s\n" % \
+						(maxlen+1,fname,any2str(getattr(param,fname)))
+
+		for i,result in enumerate(self.results.items()):
+			s+="         results%s:  (information from dakota files)\n" % \
+					string_dim(self.results,i)
+			fnames=vars(result)
+			maxlen=0
+			for fname in fnames:
+				maxlen=max(maxlen,len(fname))
+
+			for fname in fnames:
+				s+="            %-*s:    [%ix%i]    '%s'\n" % \
+						(maxlen+1,fname,size(getattr(result,fname)),type(getattr(result,fname)))
+
+		s+="%s\n" % fielddisplay(self,'partition','user provided mesh partitioning, defaults to metis if not specified') 
+		s+="%s\n" % fielddisplay(self,'numberofpartitions','number of partitions for semi-discrete qmu') 
+		s+="%s\n" % fielddisplay(self,'variabledescriptors','')
+		s+="%s\n" % fielddisplay(self,'responsedescriptors','')
+		s+="%s\n" % fielddisplay(self,'method','array of dakota_method class')
+		s+="%s\n" % fielddisplay(self,'mass_flux_profile_directory','directory for mass flux profiles')
+		s+="%s\n" % fielddisplay(self,'mass_flux_profiles','list of mass_flux profiles')
+		s+="%s\n" % fielddisplay(self,'mass_flux_segments','')
+		s+="%s\n" % fielddisplay(self,'adjacency','')
+		s+="%s\n" % fielddisplay(self,'vertex_weight','weight applied to each mesh vertex')
+
+		return s
+	# }}}
+	def extrude(self,md): # {{{
+		self.partition=project3d(md,'vector',numpy.transpose(self.partition),'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if not md.qmu.isdakota:
+			return
+
+		if not md.qmu.params.evaluation_concurrency==1:
+			md.checkmessage("concurrency should be set to 1 when running dakota in library mode")
+		if md.qmu.partition:
+			if not numpy.size(md.qmu.partition)==md.mesh.numberofvertices:
+				md.checkmessage("user supplied partition for qmu analysis should have size md.mesh.numberofvertices x 1")
+			if not min(md.qmu.partition)==0:
+				md.checkmessage("partition vector not indexed from 0 on")
+			if max(md.qmu.partition)>=md.qmu.numberofpartitions:
+				md.checkmessage("for qmu analysis, partitioning vector cannot go over npart, number of partition areas")
+
+		if not m.strcmpi(md.cluster.name,'none'):
+			if not md.settings.waitonlock:
+				md.checkmessage("waitonlock should be activated when running qmu in parallel mode!")
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','isdakota','format','Boolean')
+		if not self.isdakota:
+			WriteData(fid,'data',False,'enum',QmuMassFluxSegmentsPresentEnum(),'format','Boolean');
+			return
+		WriteData(fid,'object',self,'fieldname','partition','format','DoubleMat','mattype',2)
+		WriteData(fid,'object',self,'fieldname','numberofpartitions','format','Integer')
+		WriteData(fid,'object',self,'fieldname','numberofresponses','format','Integer')
+		WriteData(fid,'object',self,'fieldname','variabledescriptors','format','StringArray')
+		WriteData(fid,'object',self,'fieldname','responsedescriptors','format','StringArray')
+		if not self.mass_flux_segments:
+			WriteData(fid,'data',self.mass_flux_segments,'enum',MassFluxSegmentsEnum(),'format','MatArray');
+			flag=True; 
+		else:
+			flag=False; 
+		WriteData(fid,'data',flag,'enum',QmuMassFluxSegmentsPresentEnum(),'format','Boolean');
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/radaroverlay.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/radaroverlay.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/radaroverlay.py	(revision 21239)
@@ -0,0 +1,29 @@
+from fielddisplay import fielddisplay
+
+class radaroverlay(object):
+	"""
+	RADAROVERLAY class definition
+
+	   Usage:
+	      radaroverlay=radaroverlay();
+	"""
+
+	def __init__(self): # {{{
+		self.pwr = float('NaN')
+		self.x   = float('NaN')
+		self.y   = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   radaroverlay parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'pwr','radar power image (matrix)'))
+		string="%s\n%s"%(string,fielddisplay(self,'x','corresponding x coordinates [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'y','corresponding y coordinates [m]'))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/results.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/results.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/results.py	(revision 21239)
@@ -0,0 +1,52 @@
+import numpy
+from fielddisplay import fielddisplay
+import MatlabFuncs as m
+from EnumDefinitions import *
+
+class results(object):
+	"""
+	RESULTS class definition
+
+	   Usage:
+	      results=results();
+	"""
+
+	def __init__(self):    # {{{
+		pass
+	# }}}
+	def __repr__(self):    # {{{
+		s ="   Model results:\n"
+
+		if 'step' in self.__dict__:
+			s+="%s\n" % fielddisplay(self,'step',"step number")
+		if 'time' in self.__dict__:
+			s+="%s\n" % fielddisplay(self,'time',"time value")
+		if 'SolutionType' in self.__dict__:
+			s+="%s\n" % fielddisplay(self,'SolutionType',"solution type")
+
+		for name in list(self.__dict__.keys()):
+			if name not in ['step','time','SolutionType','errlog','outlog']:
+				if   isinstance(getattr(self,name),list):
+					s+="%s\n" % fielddisplay(self,name,"model results list")
+				elif isinstance(getattr(self,name),results):
+					s+="%s\n" % fielddisplay(self,name,"model results case")
+				else:
+					s+="%s\n" % fielddisplay(self,name,"")
+
+		if 'errlog' in self.__dict__:
+			s+="%s\n" % fielddisplay(self,'errlog',"error log file")
+		if 'outlog' in self.__dict__:
+			s+="%s\n" % fielddisplay(self,'outlog',"output log file")
+
+		return s
+	# }}}
+	def setdefaultparameters(self):    # {{{
+		#do nothing
+		return self
+	# }}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		pass
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/rifts.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/rifts.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/rifts.py	(revision 21239)
@@ -0,0 +1,84 @@
+import numpy
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+from isnans import isnans
+import MatlabFuncs as m
+
+class rifts(object):
+	"""
+	RIFTS class definition
+
+	   Usage:
+	      rifts=rifts();
+	"""
+
+	def __init__(self): # {{{
+		self.riftstruct     = []
+		self.riftproperties = []
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   rifts parameters:'
+
+		string="%s\n%s"%(string,fielddisplay(self,'riftstruct','structure containing all rift information (vertices coordinates, segments, type of melange, ...)'))
+		string="%s\n%s"%(string,fielddisplay(self,'riftproperties',''))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		if (not self.riftstruct) or numpy.any(isnans(self.riftstruct)):
+			numrifts=0
+		else:
+			numrifts=len(self.riftstruct)
+
+		if numrifts:
+			if not m.strcmp(md.mesh.domaintype(),'2Dhorizontal'):
+				md.checkmessage("models with rifts are only supported in 2d for now!")
+			if not isinstance(self.riftstruct,list):
+				md.checkmessage("rifts.riftstruct should be a structure!")
+			if numpy.any(md.mesh.segmentmarkers>=2):
+				#We have segments with rift markers, but no rift structure!
+				md.checkmessage("model should be processed for rifts (run meshprocessrifts)!")
+			for i,rift in enumerate(self.riftstruct):
+				md = checkfield(md,'fieldname',"rifts.riftstruct[%d]['fill']" % i,'values',[WaterEnum(),AirEnum(),IceEnum(),MelangeEnum()])
+		else:
+			if self.riftstruct and numpy.any(numpy.logical_not(isnans(self.riftstruct))):
+				md.checkmessage("riftstruct should be NaN since numrifts is 0!")
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		#Process rift info
+		if (not self.riftstruct) or numpy.any(isnans(self.riftstruct)):
+			numrifts=0
+		else:
+			numrifts=len(self.riftstruct)
+
+		numpairs=0
+		for rift in self.riftstruct:
+			numpairs+=numpy.size(rift['penaltypairs'],axis=0)
+
+		# 2 for nodes + 2 for elements+ 2 for  normals + 1 for length + 1 for fill + 1 for friction + 1 for fraction + 1 for fractionincrement + 1 for state.
+		data=numpy.zeros((numpairs,12))
+		count=0
+		for rift in self.riftstruct:
+			numpairsforthisrift=numpy.size(rift['penaltypairs'],0)
+			data[count:count+numpairsforthisrift,0:7]=rift['penaltypairs']
+			data[count:count+numpairsforthisrift,7]=rift['fill']
+			data[count:count+numpairsforthisrift,8]=rift['friction']
+			data[count:count+numpairsforthisrift,9]=rift['fraction']
+			data[count:count+numpairsforthisrift,10]=rift['fractionincrement']
+			data[count:count+numpairsforthisrift,11]=rift['state'].reshape(-1)
+			count+=numpairsforthisrift
+
+		WriteData(fid,'data',numrifts,'enum',RiftsNumriftsEnum(),'format','Integer')
+		WriteData(fid,'data',data,'enum',RiftsRiftstructEnum(),'format','DoubleMat','mattype',3)
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/settings.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/settings.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/settings.py	(revision 21239)
@@ -0,0 +1,80 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class settings(object):
+	"""
+	SETTINGS class definition
+
+	   Usage:
+	      settings=settings();
+	"""
+
+	def __init__(self): # {{{
+		self.results_on_nodes    = 0
+		self.io_gather           = 0
+		self.lowmem              = 0
+		self.output_frequency    = 0
+		self.recording_frequency    = 0
+		self.waitonlock          = 0
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   general settings parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"results_on_nodes","results are output for all the nodes of each element"))
+		string="%s\n%s"%(string,fielddisplay(self,"io_gather","I/O gathering strategy for result outputs (default 1)"))
+		string="%s\n%s"%(string,fielddisplay(self,"lowmem","is the memory limited ? (0 or 1)"))
+		string="%s\n%s"%(string,fielddisplay(self,"output_frequency","frequency at which results are saved in all solutions with multiple time_steps"))
+		string="%s\n%s"%(string,fielddisplay(self,"recording_frequency","frequency at which the runs are being recorded, allowing for a restart"))
+		string="%s\n%s"%(string,fielddisplay(self,"waitonlock","maximum number of minutes to wait for batch results, or return 0"))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#are we short in memory ? (0 faster but requires more memory)
+		self.lowmem=0
+
+		#i/o:
+		self.io_gather=1
+
+		#results frequency by default every step
+		self.output_frequency=1
+
+		#checkpoints frequency, by default never: 
+		self.recording_frequency=0
+
+
+		#this option can be activated to load automatically the results
+		#onto the model after a parallel run by waiting for the lock file
+		#N minutes that is generated once the solution has converged
+		#0 to deactivate
+		self.waitonlock=2**31-1
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		md = checkfield(md,'fieldname','settings.results_on_nodes','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','settings.io_gather','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','settings.lowmem','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','settings.output_frequency','numel',[1],'>=',1)
+		md = checkfield(md,'fieldname','settings.recording_frequency','numel',[1],'>=',0)
+		md = checkfield(md,'fieldname','settings.waitonlock','numel',[1])
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','results_on_nodes','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','io_gather','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','lowmem','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','output_frequency','format','Integer')
+		WriteData(fid,'object',self,'fieldname','recording_frequency','format','Integer')
+		if self.waitonlock>0:
+			WriteData(fid,'enum',SettingsWaitonlockEnum(),'data',True,'format','Boolean');
+		else:
+			WriteData(fid,'enum',SettingsWaitonlockEnum(),'data',False,'format','Boolean');
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/steadystate.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/steadystate.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/steadystate.py	(revision 21239)
@@ -0,0 +1,75 @@
+import numpy
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class steadystate(object):
+	"""
+	STEADYSTATE class definition
+
+	   Usage:
+	      steadystate=steadystate();
+	"""
+
+	def __init__(self): # {{{
+		self.reltol            = 0
+		self.maxiter           = 0
+		self.requested_outputs = []
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   steadystate solution parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'reltol','relative tolerance criterion'))
+		string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of iterations'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional requested outputs'))
+		return string
+		#}}}
+	def defaultoutputs(self,md): # {{{
+
+		return md.stressbalance.defaultoutputs(md)+md.thermal.defaultoutputs(md)
+
+	#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#maximum of steady state iterations
+		self.maxiter=100
+
+		#Relative tolerance for the steadystate convertgence
+		self.reltol=0.01
+
+		#default output
+		self.requested_outputs=['default']
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if not solution==SteadystateSolutionEnum():
+			return md
+
+		if not md.timestepping.time_step==0:
+			md.checkmessage("for a steadystate computation, timestepping.time_step must be zero.")
+
+		if numpy.isnan(md.stressbalance.reltol):
+			md.checkmessage("for a steadystate computation, stressbalance.reltol (relative convergence criterion) must be defined!")
+
+		md = checkfield(md,'fieldname','steadystate.requested_outputs','stringrow',1)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','reltol','format','Double')
+		WriteData(fid,'object',self,'fieldname','maxiter','format','Integer')
+
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SteadystateRequestedOutputsEnum(),'format','StringArray')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/stressbalance.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/stressbalance.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/stressbalance.py	(revision 21239)
@@ -0,0 +1,208 @@
+import numpy
+import sys
+import copy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class stressbalance(object):
+	"""
+	STRESSBALANCE class definition
+
+	   Usage:
+	      stressbalance=stressbalance();
+	"""
+
+	def __init__(self): # {{{
+		self.spcvx                    = float('NaN')
+		self.spcvy                    = float('NaN')
+		self.spcvz                    = float('NaN')
+		self.restol                   = 0
+		self.reltol                   = 0
+		self.abstol                   = 0
+		self.isnewton                 = 0
+		self.FSreconditioning     = 0
+		self.viscosity_overshoot      = 0
+		self.icefront                 = float('NaN')
+		self.maxiter                  = 0
+		self.shelf_dampening          = 0
+		self.vertex_pairing           = float('NaN')
+		self.penalty_factor           = float('NaN')
+		self.rift_penalty_lock        = float('NaN')
+		self.rift_penalty_threshold   = 0
+		self.referential              = float('NaN')
+		self.loadingforce             = float('NaN')
+		self.requested_outputs        = []
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		
+		string='   StressBalance solution parameters:'
+		string="%s\n%s"%(string,'      Convergence criteria:')
+		string="%s\n%s"%(string,fielddisplay(self,'restol','mechanical equilibrium residual convergence criterion'))
+		string="%s\n%s"%(string,fielddisplay(self,'reltol','velocity relative convergence criterion, NaN: not applied'))
+		string="%s\n%s"%(string,fielddisplay(self,'abstol','velocity absolute convergence criterion, NaN: not applied'))
+		string="%s\n%s"%(string,fielddisplay(self,'isnewton',"0: Picard's fixed point, 1: Newton's method, 2: hybrid"))
+		string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of nonlinear iterations'))
+		string="%s\n%s"%(string,fielddisplay(self,'viscosity_overshoot','over-shooting constant new=new+C*(new-old)'))
+
+		string="%s\n%s"%(string,'\n      boundary conditions:')
+		string="%s\n%s"%(string,fielddisplay(self,'spcvx','x-axis velocity constraint (NaN means no constraint) [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'spcvy','y-axis velocity constraint (NaN means no constraint) [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'spcvz','z-axis velocity constraint (NaN means no constraint) [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'icefront','segments on ice front list (last column 0: Air, 1: Water, 2: Ice'))
+
+		string="%s\n%s"%(string,'\n      Rift options:')
+		string="%s\n%s"%(string,fielddisplay(self,'rift_penalty_threshold','threshold for instability of mechanical constraints'))
+		string="%s\n%s"%(string,fielddisplay(self,'rift_penalty_lock','number of iterations before rift penalties are locked'))
+
+		string="%s\n%s"%(string,'\n      Penalty options:')
+		string="%s\n%s"%(string,fielddisplay(self,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset'))
+		string="%s\n%s"%(string,fielddisplay(self,'vertex_pairing','pairs of vertices that are penalized'))
+
+		string="%s\n%s"%(string,'\n      Other:')
+		string="%s\n%s"%(string,fielddisplay(self,'shelf_dampening','use dampening for floating ice ? Only for FS model'))
+		string="%s\n%s"%(string,fielddisplay(self,'FSreconditioning','multiplier for incompressibility equation. Only for FS model'))
+		string="%s\n%s"%(string,fielddisplay(self,'referential','local referential'))
+		string="%s\n%s"%(string,fielddisplay(self,'loadingforce','loading force applied on each point [N/m^3]'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.spcvx=project3d(md,'vector',self.spcvx,'type','node')
+		self.spcvy=project3d(md,'vector',self.spcvy,'type','node')
+		self.spcvz=project3d(md,'vector',self.spcvz,'type','node')
+		self.referential=project3d(md,'vector',self.referential,'type','node')
+		self.loadingforce=project3d(md,'vector',self.loadingforce,'type','node')
+
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		#maximum of non-linear iterations.
+		self.maxiter=100
+
+		#Convergence criterion: absolute, relative and residual
+		self.restol=10**-4
+		self.reltol=0.01
+		self.abstol=10
+
+		self.FSreconditioning=10**13
+		self.shelf_dampening=0
+
+		#Penalty factor applied kappa=max(stiffness matrix)*10^penalty_factor
+		self.penalty_factor=3
+
+		#coefficient to update the viscosity between each iteration of
+		#a stressbalance according to the following formula
+		#viscosity(n)=viscosity(n)+viscosity_overshoot(viscosity(n)-viscosity(n-1))
+		self.viscosity_overshoot=0
+
+		#Stop the iterations of rift if below a threshold
+		self.rift_penalty_threshold=0
+
+		#in some solutions, it might be needed to stop a run when only
+		#a few constraints remain unstable. For thermal computation, this
+		#parameter is often used.
+		self.rift_penalty_lock=10
+
+		#output default:
+		self.requested_outputs=['default']
+
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+
+		if md.mesh.dimension()==3:
+			list = ['Vx','Vy','Vz','Vel','Pressure']
+		else:
+			list = ['Vx','Vy','Vel','Pressure']
+		return list
+
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if StressbalanceAnalysisEnum() not in analyses:
+			return md
+
+		md = checkfield(md,'fieldname','stressbalance.spcvx','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','stressbalance.spcvy','Inf',1,'timeseries',1)
+		if m.strcmp(md.mesh.domaintype(),'3D'):
+			md = checkfield(md,'fieldname','stressbalance.spcvz','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','stressbalance.restol','size',[1],'>',0)
+		md = checkfield(md,'fieldname','stressbalance.reltol','size',[1])
+		md = checkfield(md,'fieldname','stressbalance.abstol','size',[1])
+		md = checkfield(md,'fieldname','stressbalance.isnewton','numel',[1],'values',[0,1,2])
+		md = checkfield(md,'fieldname','stressbalance.FSreconditioning','size',[1],'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','stressbalance.viscosity_overshoot','size',[1],'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','stressbalance.maxiter','size',[1],'>=',1)
+		md = checkfield(md,'fieldname','stressbalance.referential','size',[md.mesh.numberofvertices,6])
+		md = checkfield(md,'fieldname','stressbalance.loadingforce','size',[md.mesh.numberofvertices,3])
+		md = checkfield(md,'fieldname','stressbalance.requested_outputs','stringrow',1);
+
+		#singular solution
+#		if ~any((~isnan(md.stressbalance.spcvx)+~isnan(md.stressbalance.spcvy))==2),
+		if not numpy.any(numpy.logical_and(numpy.logical_not(numpy.isnan(md.stressbalance.spcvx)),numpy.logical_not(numpy.isnan(md.stressbalance.spcvy)))):
+			print("\n !!! Warning: no spc applied, model might not be well posed if no basal friction is applied, check for solution crash\n")
+		#CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES
+#		if any(sum(isnan(md.stressbalance.referential),2)~=0 & sum(isnan(md.stressbalance.referential),2)~=6),
+		if numpy.any(numpy.logical_and(numpy.sum(numpy.isnan(md.stressbalance.referential),axis=1)!=0,numpy.sum(numpy.isnan(md.stressbalance.referential),axis=1)!=6)):
+			md.checkmessage("Each line of stressbalance.referential should contain either only NaN values or no NaN values")
+		#CHECK THAT THE TWO VECTORS PROVIDED ARE ORTHOGONAL
+#		if any(sum(isnan(md.stressbalance.referential),2)==0),
+		if numpy.any(numpy.sum(numpy.isnan(md.stressbalance.referential),axis=1)==0):
+			pos=[i for i,item in enumerate(numpy.sum(numpy.isnan(md.stressbalance.referential),axis=1)) if item==0]
+#			numpy.inner (and numpy.dot) calculate all the dot product permutations, resulting in a full matrix multiply
+#			if numpy.any(numpy.abs(numpy.inner(md.stressbalance.referential[pos,0:2],md.stressbalance.referential[pos,3:5]).diagonal())>sys.float_info.epsilon):
+#				md.checkmessage("Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal")
+			for item in md.stressbalance.referential[pos,:]:
+				if numpy.abs(numpy.inner(item[0:2],item[3:5]))>sys.float_info.epsilon:
+					md.checkmessage("Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal")
+		#CHECK THAT NO rotation specified for FS Grounded ice at base
+		if m.strcmp(md.mesh.domaintype(),'3D') and md.flowequation.isFS:
+			pos=numpy.nonzero(numpy.logical_and(md.mask.groundedice_levelset,md.mesh.vertexonbase))
+			if numpy.any(numpy.logical_not(numpy.isnan(md.stressbalance.referential[pos,:]))):
+				md.checkmessage("no referential should be specified for basal vertices of grounded ice")
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','restol','format','Double')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','reltol','format','Double')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','abstol','format','Double','scale',1./yts)
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','isnewton','format','Integer')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','FSreconditioning','format','Double')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','viscosity_overshoot','format','Double')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','maxiter','format','Integer')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','shelf_dampening','format','Integer')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','vertex_pairing','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','penalty_factor','format','Double')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','rift_penalty_lock','format','Integer')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','rift_penalty_threshold','format','Integer')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1)
+
+		WriteData(fid,'data',self.loadingforce[:,0],'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum())
+		WriteData(fid,'data',self.loadingforce[:,1],'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum())
+		WriteData(fid,'data',self.loadingforce[:,2],'format','DoubleMat','mattype',1,'enum',LoadingforceZEnum())
+
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',StressbalanceRequestedOutputsEnum(),'format','StringArray')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/taoinversion.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/taoinversion.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/taoinversion.py	(revision 21239)
@@ -0,0 +1,200 @@
+import numpy
+from project3d import project3d
+from WriteData import WriteData
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from IssmConfig import IssmConfig
+from EnumDefinitions import *
+from marshallcostfunctions import marshallcostfunctions
+
+
+class taoinversion:
+	def __init__(self):
+		iscontrol                   = 0
+		incomplete_adjoint          = 0
+		control_parameters          = float('NaN')
+		maxsteps                    = 0
+		maxiter                     = 0
+		fatol                       = 0
+		frtol                       = 0
+		gatol                       = 0
+		grtol                       = 0
+		gttol                       = 0
+		algorithm                   = ''
+		cost_functions              = float('NaN')
+		cost_functions_coefficients = float('NaN')
+		min_parameters              = float('NaN')
+		max_parameters              = float('NaN')
+		vx_obs                      = float('NaN')
+		vy_obs                      = float('NaN')
+		vz_obs                      = float('NaN')
+		vel_obs                     = float('NaN')
+		thickness_obs               = float('NaN')
+		surface_obs                 = float('NaN')
+
+	def __repr__(self):
+		string = '   taoinversion parameters:'
+		string = "%s\n\%s"%(string, fieldstring(self,'iscontrol','is inversion activated?'))
+		string="%s\n%s"%(string,fieldstring(self,'mantle_viscosity','mantle viscosity constraints (NaN means no constraint) (Pa s)'))
+		string="%s\n%s"%(string,fieldstring(self,'lithosphere_thickness','lithosphere thickness constraints (NaN means no constraint) (m)'))
+		string="%s\n%s"%(string,fieldstring(self,'cross_section_shape',"1: square-edged, 2: elliptical-edged surface"))
+		string="%s\n%s"%(string,fieldstring(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity'))
+		string="%s\n%s"%(string,fieldstring(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))
+		string="%s\n%s"%(string,fieldstring(self,'maxsteps','maximum number of iterations (gradient computation)'))
+		string="%s\n%s"%(string,fieldstring(self,'maxiter','maximum number of Function evaluation (forward run)'))
+		string="%s\n%s"%(string,fieldstring(self,'fatol','convergence criterion: f(X)-f(X*) (X: current iteration, X*: "true" solution, f: cost function)'))
+		string="%s\n%s"%(string,fieldstring(self,'frtol','convergence criterion: |f(X)-f(X*)|/|f(X*)|'))
+		string="%s\n%s"%(string,fieldstring(self,'gatol','convergence criterion: ||g(X)|| (g: gradient of the cost function)'))
+		string="%s\n%s"%(string,fieldstring(self,'grtol','convergence criterion: ||g(X)||/|f(X)|'))
+		string="%s\n%s"%(string,fieldstring(self,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)'))
+		string="%s\n%s"%(string,fieldstring(self,'algorithm','minimization algorithm: ''tao_blmvm'', ''tao_cg'', ''tao_lmvm'''))
+		string="%s\n%s"%(string,fieldstring(self,'cost_functions','indicate the type of response for each optimization step'))
+		string="%s\n%s"%(string,fieldstring(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
+		string="%s\n%s"%(string,fieldstring(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fieldstring(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fieldstring(self,'vx_obs','observed velocity x component [m/yr]'))
+		string="%s\n%s"%(string,fieldstring(self,'vy_obs','observed velocity y component [m/yr]'))
+		string="%s\n%s"%(string,fieldstring(self,'vel_obs','observed velocity magnitude [m/yr]'))
+		string="%s\n%s"%(string,fieldstring(self,'thickness_obs','observed thickness [m]'))
+		string="%s\n%s"%(string,fieldstring(self,'surface_obs','observed surface elevation [m]'))
+		string="%s\n%s"%(string,'Available cost functions:')
+		string="%s\n%s"%(string, '   101: SurfaceAbsVelMisfit')
+		string="%s\n%s"%(string, '   102: SurfaceRelVelMisfit')
+		string="%s\n%s"%(string, '   103: SurfaceLogVelMisfit')
+		string="%s\n%s"%(string, '   104: SurfaceLogVxVyMisfit')
+		string="%s\n%s"%(string, '   105: SurfaceAverageVelMisfit')
+		string="%s\n%s"%(string, '   201: ThicknessAbsMisfit')
+		string="%s\n%s"%(string, '   501: DragCoefficientAbsGradient')
+		string="%s\n%s"%(string, '   502: RheologyBbarAbsGradient')
+		string="%s\n%s"%(string, '   503: ThicknessAbsGradient')
+		return string
+	def setdefaultparameters(self):
+
+		#default is incomplete adjoint for now
+		self.incomplete_adjoint=1
+
+		#parameter to be inferred by control methods (only
+		#drag and B are supported yet)
+		self.control_parameters=['FrictionCoefficient']
+
+		#number of iterations and steps
+		self.maxsteps=20;
+		self.maxiter =30;
+
+		#default tolerances
+		self.fatol = 0;
+		self.frtol = 0;
+		self.gatol = 0;
+		self.grtol = 0;
+		self.gttol = 1e-4;
+
+		#minimization algorithm
+		PETSCMAJOR = IssmConfig('_PETSC_MAJOR_')
+		PETSCMINOR = IssmConfig('_PETSC_MINOR_')
+		if(PETSCMAJOR>3 or (PETSCMAJOR==3 and PETSCMINOR>=5)):
+			self.algorithm = 'blmvm';
+		else:
+			self.algorithm = 'tao_blmvm';
+		
+		#several responses can be used:
+		self.cost_functions=101;
+
+		return self
+
+	def extrude(self,md):
+		self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node')
+		self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node')
+		self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node')
+		self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node')
+
+		if numel(self.cost_functions_coefficients) > 1:
+			self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node')
+		
+		if numel(self.min_parameters) > 1:
+			self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node')
+		
+		if numel(self.max_parameters)>1:
+			self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node')
+
+		return self
+
+	def checkconsistency(self,md,solution,analyses):
+		if not self.control:
+			return md
+		if not IssmConfig('_HAVE_TAO_'):
+			md = checkmessage(md,['TAO has not been installed, ISSM needs to be reconfigured and recompiled with TAO'])
+
+
+		num_controls= numpy.numel(md.inversion.control_parameters)
+		num_costfunc= numpy.size(md.inversion.cost_functions,2)
+
+		md = checkfield(md,'fieldname','inversion.iscontrol','values',[0, 1])
+		md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0, 1])
+		md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())
+		md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.maxiter','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.fatol','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.frtol','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.gatol','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.grtol','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.gttol','numel',1,'>=',0)
+
+
+		PETSCMAJOR = IssmConfig('_PETSC_MAJOR_')
+		PETSCMINOR = IssmConfig('_PETSC_MINOR_')
+		if(PETSCMAJOR>3 or (PETSCMAJOR==3 and PETSCMINOR>=5)):
+			md = checkfield(md,'fieldname','inversion.algorithm','values',{'blmvm','cg','lmvm'})
+		else:
+			md = checkfield(md,'fieldname','inversion.algorithm','values',{'tao_blmvm','tao_cg','tao_lmvm'})
+
+
+		md = checkfield(md,'fieldname','inversion.cost_functions','size',[1, num_costfunc],'values',supportedcostfunctions())
+		md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices, num_costfunc],'>=',0)
+		md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices, num_controls])
+		md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices, num_controls])
+
+
+		if solution==BalancethicknessSolutionEnum():
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1)
+		elif solution==BalancethicknessSoftSolutionEnum():
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1)
+		else:
+			md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1)
+
+		def marshall(self, md, fid):
+
+			yts=365.0*24.0*3600.0;
+			WriteData(fid,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean')
+			WriteData(fid,'enum',InversionTypeEnum(),'data',1,'format','Integer')
+			if not self.iscontrol:
+				return
+			WriteData(fid,'object',self,'class','inversion','fieldname','incomplete_adjoint','format','Boolean')
+			WriteData(fid,'object',self,'class','inversion','fieldname','maxsteps','format','Integer')
+			WriteData(fid,'object',self,'class','inversion','fieldname','maxiter','format','Integer')
+			WriteData(fid,'object',self,'class','inversion','fieldname','fatol','format','Double')
+			WriteData(fid,'object',self,'class','inversion','fieldname','frtol','format','Double')
+			WriteData(fid,'object',self,'class','inversion','fieldname','gatol','format','Double')
+			WriteData(fid,'object',self,'class','inversion','fieldname','grtol','format','Double')
+			WriteData(fid,'object',self,'class','inversion','fieldname','gttol','format','Double')
+			WriteData(fid,'object',self,'class','inversion','fieldname','algorithm','format','String')
+			WriteData(fid,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1)
+			WriteData(fid,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3)
+			WriteData(fid,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3)
+			WriteData(fid,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+			WriteData(fid,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+			WriteData(fid,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+			WriteData(fid,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',1)
+			WriteData(fid,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',1)
+
+			#process control parameters
+			num_control_parameters = numpy.numel(self.control_parameters)
+			data = numpy.array([StringToEnum(self.control_parameter[0]) for control_parameter in self.control_parameters]).reshape(1,-1)
+			WriteData(fid,'data',data,'enum',InversionControlParametersEnum(),'format','DoubleMat','mattype',3)
+			WriteData(fid,'data',num_control_parameters,'enum',InversionNumControlParametersEnum(),'format','Integer')
+
+			#process cost functions
+			num_cost_functions = numpy.size(self.cost_functions,2)
+			data= marshallcostfunctions(self.cost_functions)
+			WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3)
+			WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer')
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/thermal.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/thermal.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/thermal.py	(revision 21239)
@@ -0,0 +1,130 @@
+import numpy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class thermal(object):
+	"""
+	THERMAL class definition
+
+	   Usage:
+	      thermal=thermal();
+	"""
+
+	def __init__(self): # {{{
+		self.spctemperature    = float('NaN')
+		self.penalty_threshold = 0
+		self.stabilization     = 0
+		self.reltol            = 0
+		self.maxiter           = 0
+		self.penalty_lock      = 0
+		self.penalty_factor    = 0
+		self.isenthalpy        = 0
+		self.isdynamicbasalspc = 0;
+		self.requested_outputs = []
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   Thermal solution parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'spctemperature','temperature constraints (NaN means no constraint) [K]'))
+		string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG'))
+		string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of non linear iterations'))
+		string="%s\n%s"%(string,fielddisplay(self,'reltol','relative tolerance criterion'))
+		string="%s\n%s"%(string,fielddisplay(self,'penalty_lock','stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)'))
+		string="%s\n%s"%(string,fielddisplay(self,'penalty_threshold','threshold to declare convergence of thermal solution (default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'isenthalpy','use an enthalpy formulation to include temperate ice (default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'isdynamicbasalspc','enable dynamic setting of basal forcing. required for enthalpy formulation (default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.spctemperature=project3d(md,'vector',self.spctemperature,'type','node','layer',md.mesh.numberoflayers,'padding',numpy.nan)
+		if isinstance(md.initialization.temperature,numpy.ndarray) and numpy.size(md.initialization.temperature,axis=0)==md.mesh.numberofvertices:
+			self.spctemperature=numpy.nan*numpy.ones((md.mesh.numberofvertices,1))
+			pos=numpy.nonzero(md.mesh.vertexonsurface)[0]
+			self.spctemperature[pos]=md.initialization.temperature[pos]    #impose observed temperature on surface
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+
+		if self.isenthalpy:
+			return ['Enthalpy','Temperature','Waterfraction','Watercolumn','BasalforcingsGroundediceMeltingRate']
+		else:
+			return ['Temperature','BasalforcingsGroundediceMeltingRate']
+
+	#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#Number of unstable constraints acceptable
+		self.penalty_threshold=0
+
+		#Type of stabilization used
+		self.stabilization=1
+
+		#Relative tolerance for the enthalpy convergence
+		self.reltol=0.01
+
+		#Maximum number of iterations
+		self.maxiter=100
+
+		#factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor
+		self.penalty_factor=3
+
+		#Should we use cold ice (default) or enthalpy formulation
+		self.isenthalpy=0
+
+		#will basal boundary conditions be set dynamically
+		self.isdynamicbasalspc=0;
+
+		#default output
+		self.requested_outputs=['default']
+		return self
+
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if (ThermalAnalysisEnum() not in analyses and EnthalpyAnalysisEnum() not in analyses) or (solution==TransientSolutionEnum() and not md.transient.isthermal):
+			return md
+
+		md = checkfield(md,'fieldname','thermal.stabilization','numel',[1],'values',[0,1,2])
+		md = checkfield(md,'fieldname','thermal.spctemperature','Inf',1,'timeseries',1)
+		if EnthalpyAnalysisEnum() in analyses and md.thermal.isenthalpy and md.mesh.dimension()==3:
+			pos=numpy.nonzero(numpy.logical_not(numpy.isnan(md.thermal.spctemperature[0:md.mesh.numberofvertices])))
+			replicate=numpy.tile(md.geometry.surface-md.mesh.z,(1,numpy.size(md.thermal.spctemperature,axis=1)))
+			md = checkfield(md,'fieldname','thermal.spctemperature[numpy.nonzero(numpy.logical_not(numpy.isnan(md.thermal.spctemperature[0:md.mesh.numberofvertices,:])))]','<',md.materials.meltingpoint-md.materials.beta*md.materials.rho_ice*md.constants.g*replicate[pos],'message',"spctemperature should be below the adjusted melting point")
+			md = checkfield(md,'fieldname','thermal.isenthalpy','numel',[1],'values',[0,1])
+			md = checkfield(md,'fieldname','thermal.isdynamicbasalspc','numel',[1],'values',[0,1]);
+			if(md.thermal.isenthalpy):
+				if numpy.isnan(md.stressbalance.reltol):
+					md.checkmessage("for a steadystate computation, thermal.reltol (relative convergence criterion) must be defined!")
+				md = checkfield(md,'fieldname','thermal.reltol','>',0.,'message',"reltol must be larger than zero");
+		md = checkfield(md,'fieldname','thermal.requested_outputs','stringrow',1)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','spctemperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'fieldname','penalty_threshold','format','Integer')
+		WriteData(fid,'object',self,'fieldname','stabilization','format','Integer')
+		WriteData(fid,'object',self,'fieldname','reltol','format','Double');
+		WriteData(fid,'object',self,'fieldname','maxiter','format','Integer')
+		WriteData(fid,'object',self,'fieldname','penalty_lock','format','Integer')
+		WriteData(fid,'object',self,'fieldname','penalty_factor','format','Double')
+		WriteData(fid,'object',self,'fieldname','isenthalpy','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isdynamicbasalspc','format','Boolean');
+
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',ThermalRequestedOutputsEnum(),'format','StringArray')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/timestepping.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/timestepping.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/timestepping.py	(revision 21239)
@@ -0,0 +1,76 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class timestepping(object):
+	"""
+	TIMESTEPPING Class definition
+
+	   Usage:
+	      timestepping=timestepping();
+	"""
+
+	def __init__(self): # {{{
+		self.start_time      = 0.
+		self.final_time      = 0.
+		self.time_step       = 0.
+		self.time_adapt      = 0
+		self.cfl_coefficient = 0.
+		self.interp_forcings = 1
+		
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   timestepping parameters:"
+		string="%s\n%s"%(string,fielddisplay(self,"start_time","simulation starting time [yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"final_time","final time to stop the simulation [yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"time_step","length of time steps [yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"time_adapt","use cfl condition to define time step ? (0 or 1) "))
+		string="%s\n%s"%(string,fielddisplay(self,"cfl_coefficient","coefficient applied to cfl condition"))
+		string="%s\n%s"%(string,fielddisplay(self,"interp_forcings","interpolate in time between requested forcing values ? (0 or 1)"))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#time between 2 time steps
+		self.time_step=1./2.
+
+		#final time
+		self.final_time=10.*self.time_step
+
+		#time adaptation? 
+		self.time_adapt=0
+		self.cfl_coefficient=0.5
+		
+		#should we interpolate forcings between timesteps?
+		self.interp_forcings=1
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','timestepping.start_time','numel',[1],'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','timestepping.final_time','numel',[1],'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','timestepping.time_adapt','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1)
+		if self.final_time-self.start_time<0:
+			md.checkmessage("timestepping.final_time should be larger than timestepping.start_time")
+		md = checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0,1])
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=md.constants.yts
+		
+		WriteData(fid,'object',self,'fieldname','start_time','format','Double','scale',yts)
+		WriteData(fid,'object',self,'fieldname','final_time','format','Double','scale',yts)
+		WriteData(fid,'object',self,'fieldname','time_step','format','Double','scale',yts)
+		WriteData(fid,'object',self,'fieldname','time_adapt','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','cfl_coefficient','format','Double')
+		WriteData(fid,'object',self,'fieldname','interp_forcings','format','Boolean')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/toolkits.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/toolkits.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/toolkits.py	(revision 21239)
@@ -0,0 +1,113 @@
+from IssmConfig import IssmConfig
+from mumpsoptions import mumpsoptions
+from iluasmoptions import iluasmoptions
+from EnumToString import EnumToString
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+
+class toolkits(object):
+	"""
+	TOOLKITS class definition
+
+	   Usage:
+	      self=toolkits();
+	"""
+
+	def __init__(self):    # {{{
+		#default toolkits
+		if IssmConfig('_HAVE_PETSC_')[0]:
+			#MUMPS is the default toolkits
+			if IssmConfig('_HAVE_MUMPS_')[0]:
+				self.DefaultAnalysis           = mumpsoptions()
+			else:
+				self.DefaultAnalysis           = iluasmoptions()
+		else:
+			if IssmConfig('_HAVE_MUMPS_')[0]:
+				self.DefaultAnalysis           = issmmumpssolver()
+			elif IssmConfig('_HAVE_GSL_')[0]:
+				self.DefaultAnalysis           = issmgslsolver()
+			else:
+				raise IOError("ToolkitsFile error: need at least Mumps or Gsl to define issm solver type")
+		#The other properties are dynamic
+	# }}}
+	def __repr__(self):    # {{{
+		print('enter repr')
+		s ="List of toolkits options per analysis:\n\n"
+		for analysis in list(vars(self).keys()):
+			s+="%s\n" % fielddisplay(self,analysis,'')
+
+		return s
+	# }}}
+	def addoptions(self,analysis,*args):    # {{{
+		print('enter addoption')
+		# Usage example:
+		#    md.toolkits=addoptions(md.toolkits,StressbalanceAnalysisEnum(),FSoptions());
+		#    md.toolkits=addoptions(md.toolkits,StressbalanceAnalysisEnum());
+
+		#Convert analysis from enum to string
+		[analysis]=EnumToString(analysis)
+
+		#Create dynamic property if property does not exist yet
+		if not hasattr(self,analysis):
+#			exec("self.%s = None" % analysis)
+			setattr(self,analysis,None)
+
+		#Add toolkits options to analysis
+		if len(args)==1:
+			setattr(self,analysis,args[0])
+
+		return self
+	# }}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		print('enter check')
+		for analysis in list(vars(self).keys()):
+			if not getattr(self,analysis):
+				md.checkmessage("md.toolkits.%s is empty" % analysis)
+
+		return md
+	# }}}
+	def ToolkitsFile(self,filename):    # {{{
+		"""
+		TOOLKITSFILE- build toolkits file
+
+		   Build a Petsc compatible options file, from the toolkits model field  + return options string
+		   This file will also be used when the toolkit used is 'issm' instead of 'petsc'
+
+
+		   Usage:     ToolkitsFile(toolkits,filename);
+		"""
+
+		#open file for writing
+		try:
+			fid=open(filename,'w')
+		except IOError as e:
+			raise IOError("ToolkitsFile error: could not open '%s' for writing." % filename)
+
+		#write header
+		fid.write("%s%s%s\n" % ('%Petsc options file: ',filename,' written from Matlab toolkits array'))
+
+		#start writing options
+		for analysis in list(vars(self).keys()):
+			options=getattr(self,analysis)
+
+			#first write analysis:
+			fid.write("\n+%s\n" % analysis)    #append a + to recognize it's an analysis enum
+
+			#now, write options
+			for optionname,optionvalue in list(options.items()):
+
+				if not optionvalue:
+					#this option has only one argument
+					fid.write("-%s\n" % optionname)
+				else:
+					#option with value. value can be string or scalar
+					if   isinstance(optionvalue,(bool,int,float)):
+						fid.write("-%s %g\n" % (optionname,optionvalue))
+					elif isinstance(optionvalue,str):
+						fid.write("-%s %s\n" % (optionname,optionvalue))
+					else:
+						raise TypeError("ToolkitsFile error: option '%s' is not well formatted." % optionname)
+
+		fid.close()
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/transient.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/transient.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/transient.py	(revision 21239)
@@ -0,0 +1,129 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class transient(object):
+	"""
+	TRANSIENT class definition
+
+	   Usage:
+	      transient=transient();
+	"""
+
+	def __init__(self): # {{{
+		self.issmb   = False
+		self.ismasstransport   = False
+		self.isstressbalance   = False
+		self.isthermal         = False
+		self.isgroundingline   = False
+		self.isgia             = False
+		self.isdamageevolution = False
+		self.islevelset        = False
+		self.iscalving         = False
+		self.ishydrology       = False
+		self.requested_outputs = []
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   transient solution parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'issmb','indicates if a surface mass balance solution is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'ismasstransport','indicates if a masstransport solution is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'isstressbalance','indicates if a stressbalance solution is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'isthermal','indicates if a thermal solution is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'isgroundingline','indicates if a groundingline migration is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'isgia','indicates if a postglacial rebound is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'isdamageevolution','indicates whether damage evolution is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'islevelset','LEVELSET METHOD DESCRIPTION'))
+		string="%s\n%s"%(string,fielddisplay(self,'iscalving','indicates whether calving is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'ishydrology','indicates whether an hydrology model is used'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','list of additional outputs requested'))
+		return string
+		#}}}
+	def defaultoutputs(self,md): # {{{
+
+		if self.issmb:
+			return ['SmbMassBalance']
+		else:
+			return []
+
+	#}}}
+	def setallnullparameters(self): # {{{
+		
+		#Nothing done
+		self.issmb   = False
+		self.ismasstransport   = False
+		self.isstressbalance   = False
+		self.isthermal         = False
+		self.isgroundingline   = False
+		self.isgia             = False
+		self.isdamageevolution = False
+		self.islevelset        = False
+		self.iscalving         = False
+		self.ishydrology       = False
+
+		#default output
+		self.requested_outputs=[]
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
+		self.issmb = True
+		self.ismasstransport = True
+		self.isstressbalance = True
+		self.isthermal       = True
+		self.isgroundingline = False
+		self.isgia           = False
+		self.isdamageevolution = False
+		self.islevelset      = False
+		self.iscalving       = False
+		self.ishydrology     = False
+
+		#default output
+		self.requested_outputs=['default']
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if not solution==TransientSolutionEnum():
+			return md
+
+		md = checkfield(md,'fieldname','transient.issmb','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.ismasstransport','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.isstressbalance','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.isthermal','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.isgroundingline','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.isgia','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.isdamageevolution','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.islevelset','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.ishydrology','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.iscalving','numel',[1],'values',[0,1]);
+		md = checkfield(md,'fieldname','transient.requested_outputs','stringrow',1)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','issmb','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','ismasstransport','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isstressbalance','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isthermal','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isgroundingline','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isgia','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isdamageevolution','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','islevelset','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','ishydrology','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','iscalving','format','Boolean')
+
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',TransientRequestedOutputsEnum(),'format','StringArray')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/verbose.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/verbose.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/classes/verbose.py	(revision 21239)
@@ -0,0 +1,138 @@
+from pairoptions import pairoptions
+import MatlabFuncs as m
+from EnumDefinitions import *
+from WriteData import WriteData
+
+class verbose(object):
+	"""
+	VERBOSE class definition
+
+	   Available verbosity levels:
+	      mprocessor  : model processing 
+	      module      : modules
+	      solution    : solution sequence
+	      solver      : solver info (extensive)
+	      convergence : convergence criteria
+	      control     : control method
+	      qmu         : sensitivity analysis
+	      autodiff    : AD analysis
+	      smb         : SMB analysis
+
+	   Usage:
+	      verbose=verbose();
+	      verbose=verbose(3);
+	      verbose=verbose('001100');
+	      verbose=verbose('module',True,'solver',False);
+
+	WARNING: some parts of this file are Synchronized with src/c/shared/Numerics/Verbosity.h
+	         Do not modify these sections. See src/c/shared/Numerics/README for more info
+	"""
+
+	def __init__(self,*args,**kwargs):    # {{{
+		#BEGINFIELDS
+		self.mprocessor  = False
+		self.module      = False
+		self.solution    = False
+		self.solver      = False
+		self.convergence = False
+		self.control     = False
+		self.qmu         = False
+		self.autodiff    = False
+		self.smb         = False
+		#ENDFIELDS
+
+		if not kwargs and not args:
+			#Don't do anything
+			self.solution=True;
+			self.qmu=True;
+			self.control=True;
+			pass
+
+		elif len(args) == 1:
+			binary=args[0]
+			if   isinstance(binary,str):
+				if binary.lower()=='all':
+					binary=2**11-1    #all ones
+					self.BinaryToVerbose(binary)
+					self.solver=False    #Do not use by default
+				else:
+					binary=int(binary,2)
+					self.BinaryToVerbose(binary)
+			elif isinstance(binary,(int,float)):
+				self.BinaryToVerbose(int(binary))
+
+		else:
+			#Use options to initialize object
+			self=pairoptions(**kwargs).AssignObjectFields(self)
+
+			#Cast to logicals
+			listproperties=vars(self)
+			for fieldname,fieldvalue in list(listproperties.items()):
+				if isinstance(fieldvalue,bool) or isinstance(fieldvalue,(int,float)):
+					setattr(self,fieldname,bool(fieldvalue))
+				else:
+					raise TypeError("verbose supported field values are logicals only (True or False)")
+	# }}}
+	def __repr__(self):    # {{{
+			
+		#BEGINDISP
+		s ="class '%s'  = \n" % type(self)
+		s+="   %15s : %s\n" % ('mprocessor',self.mprocessor)
+		s+="   %15s : %s\n" % ('module',self.module)
+		s+="   %15s : %s\n" % ('solution',self.solution)
+		s+="   %15s : %s\n" % ('solver',self.solver)
+		s+="   %15s : %s\n" % ('convergence',self.convergence)
+		s+="   %15s : %s\n" % ('control',self.control)
+		s+="   %15s : %s\n" % ('qmu',self.qmu)
+		s+="   %15s : %s\n" % ('autodiff',self.autodiff)
+		s+="   %15s : %s\n" % ('smb',self.smb)
+		#ENDDISP
+
+		return s
+	# }}}
+	def VerboseToBinary(self):    # {{{
+
+		#BEGINVERB2BIN
+		binary=0
+		if self.mprocessor:
+			binary=binary |  1
+		if self.module:
+			binary=binary |  2
+		if self.solution:
+			binary=binary |  4
+		if self.solver:
+			binary=binary |  8
+		if self.convergence:
+			binary=binary | 16
+		if self.control:
+			binary=binary | 32
+		if self.qmu:
+			binary=binary | 64
+		if self.autodiff:
+			binary=binary | 128
+		if self.smb:
+			binary=binary | 256
+		#ENDVERB2BIN
+
+		return binary
+	# }}}
+	def BinaryToVerbose(self,binary):    # {{{
+
+		#BEGINBIN2VERB
+		self.mprocessor =bool(binary &   1)
+		self.module     =bool(binary &   2)
+		self.solution   =bool(binary &   4)
+		self.solver     =bool(binary &   8)
+		self.convergence=bool(binary &  16)
+		self.control    =bool(binary &  32)
+		self.qmu        =bool(binary &  64)
+		self.autodiff   =bool(binary & 128)
+		self.smb        =bool(binary & 256)
+		#ENDBIN2VERB
+	# }}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'data',self.VerboseToBinary(),'enum',VerboseEnum(),'format','Integer')
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/consistency/QueueRequirements.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/consistency/QueueRequirements.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/consistency/QueueRequirements.py	(revision 21239)
@@ -0,0 +1,20 @@
+def QueueRequirements(queudict,queue,np,time):
+	#QUEUEREQUIREMENTS - queue requirements in time, number of cpus, by name of queue.
+	#
+	#   Usage: 
+	#      QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,np,time)
+
+	#Ok, go through requirements for current queue:
+	try:
+		rtime=queudict[queue][0]
+	except KeyError:
+		raise Exception('QueueRequirements error message: availables queues are '+ queuedict.keys)
+		
+	if time<=0:
+		raise Exception('QueueRequirements: time should be a positive number')
+	if time>rtime:
+		raise Exception('QueueRequirements: time should be < '+ str(rtime)+ ' for queue: '+ queue)
+
+	#check on np requirements
+	if np<=0:
+		raise Exception('QueueRequirements: np should be a positive number')
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/consistency/checkfield.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/consistency/checkfield.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/consistency/checkfield.py	(revision 21239)
@@ -0,0 +1,189 @@
+import numpy
+import os
+from pairoptions import pairoptions
+import MatlabFuncs as m
+
+def checkfield(md,**kwargs):
+	"""
+	CHECKFIELD - check field consistency
+
+	   Used to check model consistency.,
+	   Requires: 
+	   'field' or 'fieldname' option. If 'fieldname' is provided, it will retrieve it from the model md. (md.(fieldname)) 
+             If 'field' is provided, it will assume the argument following 'field' is a numeric array.
+
+	   Available options:
+	      - NaN: 1 if check that there is no NaN
+	      - size: [lines cols], NaN for non checked dimensions
+	      - >:  greater than provided value
+	      - >=: greater or equal to provided value
+	      - <:  smallerthan provided value
+	      - <=: smaller or equal to provided value
+	      - < vec:  smallerthan provided values on each vertex
+	      - timeseries: 1 if check time series consistency (size and time)
+	      - values: cell of strings or vector of acceptable values
+	      - numel: list of acceptable number of elements
+	      - cell: 1 if check that is cell
+	      - empty: 1 if check that non empty
+	      - message: overloaded error message
+
+	   Usage:
+	      md = checkfield(md,fieldname,options);
+	"""
+
+	#get options
+	options=pairoptions(**kwargs)
+
+	#get field from model
+	if options.exist('field'):
+		field=options.getfieldvalue('field')
+		fieldname=options.getfieldvalue('fieldname','no fieldname')
+	else:
+		fieldname=options.getfieldvalue('fieldname') 
+		exec("field=md.%s" % fieldname)
+
+	if isinstance(field,(bool,int,float)):
+		field=numpy.array([field])
+
+	#check empty
+	if options.exist('empty'):
+		if not field:
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' is empty" % fieldname))
+
+	#Check size
+	if options.exist('size'):
+		fieldsize=options.getfieldvalue('size')
+		if   len(fieldsize) == 1:
+			if   numpy.isnan(fieldsize[0]):
+				pass
+			elif not numpy.size(field,0)==fieldsize[0]:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' size should be %d" % (fieldname,fieldsize[0])))
+		elif len(fieldsize) == 2:
+			if   numpy.isnan(fieldsize[0]):
+				if not numpy.size(field,1)==fieldsize[1]:
+					md = md.checkmessage(options.getfieldvalue('message',\
+						"field '%s' should have %d columns" % (fieldname,fieldsize[1])))
+			elif numpy.isnan(fieldsize[1]):
+				if not numpy.size(field,0)==fieldsize[0]:
+					md = md.checkmessage(options.getfieldvalue('message',\
+						"field '%s' should have %d lines" % (fieldname,fieldsize[0])))
+			else:
+				if (not numpy.size(field,0)==fieldsize[0]) or (not numpy.size(field,1)==fieldsize[1]):
+					md = md.checkmessage(options.getfieldvalue('message',\
+						"field '%s' size should be %d x %d" % (fieldname,fieldsize[0],fieldsize[1])))
+	
+	#Check numel
+	if options.exist('numel'):
+		fieldnumel=options.getfieldvalue('numel')
+		if numpy.size(field) not in fieldnumel:
+			if   len(fieldnumel)==1:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' size should be %d" % (fieldname,fieldnumel)))
+			elif len(fieldnumel)==2:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' size should be %d or %d" % (fieldname,fieldnumel[0],fieldnumel[1])))
+			else:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' size should be %s" % (fieldname,fieldnumel)))
+
+	#check NaN
+	if options.getfieldvalue('NaN',0):
+		if numpy.any(numpy.isnan(field)):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"NaN values found in field '%s'" % fieldname))
+
+	#check Inf
+	if options.getfieldvalue('Inf',0):
+		if numpy.any(numpy.isinf(field)):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"Inf values found in field '%s'" % fieldname))
+
+	#check cell
+	if options.getfieldvalue('cell',0):
+		if not isinstance(field,(tuple,list,dict)):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should be a cell" % fieldname))
+
+	#check values
+	if options.exist('values'):
+		fieldvalues=options.getfieldvalue('values')
+		if False in m.ismember(field,fieldvalues):
+			if   len(fieldvalues)==1:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' value should be '%s'"  % (fieldname,fieldvalues[0])))
+			elif len(fieldvalues)==2:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' values should be '%s' or '%s'"  % (fieldname,fieldvalues[0],fieldvalues[1])))
+			else:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' should have values in %s" % (fieldname,fieldvalues)))
+
+	#check greater
+	if options.exist('>='):
+		lowerbound=options.getfieldvalue('>=')
+		if numpy.any(field<lowerbound):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should have values above %d" % (fieldname,lowerbound)))
+	if options.exist('>'):
+		lowerbound=options.getfieldvalue('>')
+		if numpy.any(field<=lowerbound):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should have values above %d" % (fieldname,lowerbound)))
+
+	#check smaller
+	if options.exist('<='):
+		upperbound=options.getfieldvalue('<=')
+		if numpy.any(field>upperbound):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should have values below %d" % (fieldname,upperbound)))
+	if options.exist('<'):
+		upperbound=options.getfieldvalue('<')
+		if numpy.any(field>=upperbound):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should have values below %d" % (fieldname,upperbound)))
+
+	#check file
+	if options.getfieldvalue('file',0):
+		if not os.path.exists(field):
+			md = md.checkmessage("file provided in '%s': '%s' does not exist" % (fieldname,field))
+
+	#Check row of strings
+	if options.exist('stringrow'):
+		if not isinstance(field,list):
+			md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' should be a list" %fieldname))
+
+	#Check forcings (size and times)
+	if options.getfieldvalue('timeseries',0):
+		if   numpy.size(field,0)==md.mesh.numberofvertices:
+			if numpy.ndim(field)>1 and not numpy.size(field,1)==1:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' should have only one column as there are md.mesh.numberofvertices lines" % fieldname))
+		elif numpy.size(field,0)==md.mesh.numberofvertices+1 or numpy.size(field,0)==2:
+			if not all(field[-1,:]==numpy.sort(field[-1,:])):
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' columns should be sorted chronologically" % fieldname))
+			if any(field[-1,0:-1]==field[-1,1:]):
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' columns must not contain duplicate timesteps" % fieldname))
+		else:
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should have md.mesh.numberofvertices or md.mesh.numberofvertices+1 lines" % fieldname))
+
+	#Check single value forcings (size and times)
+	if options.getfieldvalue('singletimeseries',0):
+		if numpy.size(field,0)==2:
+			if not all(field[-1,:]==numpy.sort(field[-1,:])):
+				md = md.checkmessage(options.getfieldvalue('message',\
+						"field '%s' columns should be sorted chronologically" % fieldname))
+			if any(field[-1,0:-1]==field[-1,1:]):
+				md = md.checkmessage(options.getfieldvalue('message',\
+						"field '%s' columns must not contain duplicate timesteps" % fieldname))
+		else:
+				md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should have 2 lines" % fieldname))
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/consistency/ismodelselfconsistent.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/consistency/ismodelselfconsistent.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/consistency/ismodelselfconsistent.py	(revision 21239)
@@ -0,0 +1,91 @@
+from EnumDefinitions import *
+from EnumToString import EnumToString
+
+def AnalysisConfiguration(solutiontype): #{{{
+	"""
+	ANALYSISCONFIGURATION - return type of analyses, number of analyses 
+
+		Usage:
+			[analyses]=AnalysisConfiguration(solutiontype);
+	"""
+
+	if   solutiontype == StressbalanceSolutionEnum():
+		analyses=[StressbalanceAnalysisEnum(),StressbalanceVerticalAnalysisEnum(),StressbalanceSIAAnalysisEnum(),L2ProjectionBaseAnalysisEnum()]
+
+	elif solutiontype == SteadystateSolutionEnum():
+		analyses=[StressbalanceAnalysisEnum(),StressbalanceVerticalAnalysisEnum(),StressbalanceSIAAnalysisEnum(),L2ProjectionBaseAnalysisEnum(),ThermalAnalysisEnum(),MeltingAnalysisEnum()]
+
+	elif solutiontype == ThermalSolutionEnum():
+		analyses=[EnthalpyAnalysisEnum(),ThermalAnalysisEnum(),MeltingAnalysisEnum()]
+
+	elif solutiontype == MasstransportSolutionEnum():
+		analyses=[MasstransportAnalysisEnum()]
+
+	elif solutiontype == BalancethicknessSolutionEnum():
+		analyses=[BalancethicknessAnalysisEnum()]
+
+	elif solutiontype == SurfaceSlopeSolutionEnum():
+		analyses=[L2ProjectionBaseAnalysisEnum()]
+
+	elif solutiontype == BalancevelocitySolutionEnum():
+		analyses=[BalancevelocityAnalysisEnum()]
+
+	elif solutiontype == BedSlopeSolutionEnum():
+		analyses=[L2ProjectionBaseAnalysisEnum()]
+
+	elif solutiontype == GiaSolutionEnum():
+		analyses=[GiaAnalysisEnum()]
+
+	elif solutiontype == TransientSolutionEnum():
+		analyses=[StressbalanceAnalysisEnum(),StressbalanceVerticalAnalysisEnum(),StressbalanceSIAAnalysisEnum(),L2ProjectionBaseAnalysisEnum(),ThermalAnalysisEnum(),MeltingAnalysisEnum(),EnthalpyAnalysisEnum(),MasstransportAnalysisEnum()]
+
+	elif solutiontype == FlaimSolutionEnum():
+		analyses=[FlaimAnalysisEnum()]
+
+	elif solutiontype == HydrologySolutionEnum():
+		analyses=[L2ProjectionBaseAnalysisEnum(),HydrologyShreveAnalysisEnum(),HydrologyDCInefficientAnalysisEnum(),HydrologyDCEfficientAnalysisEnum()]
+
+	elif DamageEvolutionSolutionEnum():
+		analyses=[DamageEvolutionAnalysisEnum()]
+
+	else:
+		raise TypeError("solution type: '%s' not supported yet!" % EnumToString(solutiontype)[0])
+
+	return analyses
+#}}}
+
+def ismodelselfconsistent(md):
+	"""
+	ISMODELSELFCONSISTENT - check that model forms a closed form solvable problem.
+
+	   Usage:
+	      ismodelselfconsistent(md),
+	"""
+
+	#initialize consistency as true
+	md.private.isconsistent=True
+
+	#Get solution and associated analyses
+	solution=md.private.solution
+	analyses=AnalysisConfiguration(solution)
+
+	#Go through a model fields, check that it is a class, and call checkconsistency
+	fields=vars(md)
+#	for field in fields.iterkeys():
+	for field in md.properties():
+
+		#Some properties do not need to be checked
+		if field in ['results','debug','radaroverlay']:
+			continue
+
+		#Check that current field is an object
+		if not hasattr(getattr(md,field),'checkconsistency'):
+			md.checkmessage("field '%s' is not an object." % field)
+
+		#Check consistency of the object
+		exec("md.%s.checkconsistency(md,solution,analyses)" % field)
+
+	#error message if mode is not consistent
+	if not md.private.isconsistent:
+		raise RuntimeError('Model not consistent, see messages above.')
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/bamg/YamsCall.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/bamg/YamsCall.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/bamg/YamsCall.py	(revision 21239)
@@ -0,0 +1,123 @@
+import numpy
+import time
+import subprocess
+import os
+from ComputeHessian import ComputeHessian
+from ComputeMetric import ComputeMetric
+
+def YamsCall(md,field,hmin,hmax,gradation,epsilon):
+	"""
+	YAMSCALL - call yams
+
+	   build a metric using the Hessian of the given field
+	   call Yams and the output mesh is plugged onto the model
+	   -hmin = minimum edge length (m)
+	   -hmax = maximum edge length (m)
+	   -gradation = maximum edge length gradation between 2 elements
+	   -epsilon = average error on each element (m/yr)
+
+	   Usage:
+	      md=YamsCall(md,field,hmin,hmax,gradation,epsilon);
+
+	   Example:
+	      md=YamsCall(md,md.inversion.vel_obs,1500,10^8,1.3,0.9);
+	"""
+
+	#2d geometric parameter (do not change)
+	scale=2./9.
+
+	#Compute Hessian
+	t1=time.time()
+	print("%s" % '      computing Hessian...')
+	hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,field,'node')
+	t2=time.time()
+	print("%s%d%s\n" % (' done (',t2-t1,' seconds)'))
+
+	#Compute metric
+	t1=time.time()
+	print("%s" % '      computing metric...')
+	metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,numpy.empty(0,int))
+	t2=time.time()
+	print("%s%d%s\n" % (' done (',t2-t1,' seconds)'))
+
+	#write files
+	t1=time.time()
+	print("%s" % '      writing initial mesh files...')
+	numpy.savetxt('carre0.met',metric)
+
+	f=open('carre0.mesh','w')
+
+	#initialiation
+	f.write("\n%s\n%i\n" % ('MeshVersionFormatted',1))
+
+	#dimension
+	f.write("\n%s\n%i\n" % ('Dimension',2))
+
+	#Vertices
+	f.write("\n%s\n%i\n\n" % ('Vertices',md.mesh.numberofvertices))
+	for i in range(0,md.mesh.numberofvertices):
+		f.write("%8g %8g %i\n" % (md.mesh.x[i],md.mesh.y[i],0))
+
+	#Triangles
+	f.write("\n\n%s\n%i\n\n" % ('Triangles',md.mesh.numberofelements))
+	for i in range(0,md.mesh.numberofelements):
+		f.write("%i %i %i %i\n" % (md.mesh.elements[i,0],md.mesh.elements[i,1],md.mesh.elements[i,2],0))
+	numberofelements1=md.mesh.numberofelements
+
+	#Deal with rifts
+	if numpy.any(not numpy.isnan(md.rifts.riftstruct)):
+
+		#we have the list of triangles that make up the rift. keep those triangles around during refinement.
+		triangles=numpy.empty(0,int)
+		for riftstruct in md.rifts.riftstruct:
+			triangles=numpy.concatenate((triangles,riftstruct.segments[:,2]))
+
+		f.write("\n\n%s\n%i\n\n" % ('RequiredTriangles',numpy.size(triangles)))
+		for triangle in triangles:
+			f.write("%i\n" % triangle)
+
+	#close
+	f.close()
+	t2=time.time()
+	print("%s%d%s\n" % (' done (',t2-t1,' seconds)'))
+
+	#call yams
+	print("%s\n" % '      call Yams...')
+	if   m.ispc():
+		#windows
+		subprocess.call('yams2-win -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
+	elif ismac():
+		#Macosx
+		subprocess.call('yams2-osx -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
+	else:
+		#Linux
+		subprocess.call('yams2-linux -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
+
+	#plug new mesh
+	t1=time.time()
+	print("\n%s" % '      reading final mesh files...')
+	Tria=numpy.loadtxt('carre1.tria',int)
+	Coor=numpy.loadtxt('carre1.coor',float)
+	md.mesh.x=Coor[:,0]
+	md.mesh.y=Coor[:,1]
+	md.mesh.z=numpy.zeros((numpy.size(Coor,axis=0),1))
+	md.mesh.elements=Tria
+	md.mesh.numberofvertices=numpy.size(Coor,axis=0)
+	md.mesh.numberofelements=numpy.size(Tria,axis=0)
+	numberofelements2=md.mesh.numberofelements
+	t2=time.time()
+	print("%s%d%s\n\n" % (' done (',t2-t1,' seconds)'))
+
+	#display number of elements
+	print("\n%s %i" % ('      inital number of elements:',numberofelements1))
+	print("\n%s %i\n\n" % ('      new    number of elements:',numberofelements2))
+
+	#clean up:
+	os.remove('carre0.mesh')
+	os.remove('carre0.met')
+	os.remove('carre1.tria')
+	os.remove('carre1.coor')
+	os.remove('carre1.meshb')
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/bamg/YamsCall.py.bak
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/bamg/YamsCall.py.bak	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/bamg/YamsCall.py.bak	(revision 21239)
@@ -0,0 +1,123 @@
+import numpy
+import time
+import subprocess
+import os
+from ComputeHessian import ComputeHessian
+from ComputeMetric import ComputeMetric
+
+def YamsCall(md,field,hmin,hmax,gradation,epsilon):
+	"""
+	YAMSCALL - call yams
+
+	   build a metric using the Hessian of the given field
+	   call Yams and the output mesh is plugged onto the model
+	   -hmin = minimum edge length (m)
+	   -hmax = maximum edge length (m)
+	   -gradation = maximum edge length gradation between 2 elements
+	   -epsilon = average error on each element (m/yr)
+
+	   Usage:
+	      md=YamsCall(md,field,hmin,hmax,gradation,epsilon);
+
+	   Example:
+	      md=YamsCall(md,md.inversion.vel_obs,1500,10^8,1.3,0.9);
+	"""
+
+	#2d geometric parameter (do not change)
+	scale=2./9.
+
+	#Compute Hessian
+	t1=time.time()
+	print "%s" % '      computing Hessian...'
+	hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,field,'node')
+	t2=time.time()
+	print "%s%d%s\n" % (' done (',t2-t1,' seconds)')
+
+	#Compute metric
+	t1=time.time()
+	print "%s" % '      computing metric...'
+	metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,numpy.empty(0,int))
+	t2=time.time()
+	print "%s%d%s\n" % (' done (',t2-t1,' seconds)')
+
+	#write files
+	t1=time.time()
+	print "%s" % '      writing initial mesh files...'
+	numpy.savetxt('carre0.met',metric)
+
+	f=open('carre0.mesh','w')
+
+	#initialiation
+	f.write("\n%s\n%i\n" % ('MeshVersionFormatted',1))
+
+	#dimension
+	f.write("\n%s\n%i\n" % ('Dimension',2))
+
+	#Vertices
+	f.write("\n%s\n%i\n\n" % ('Vertices',md.mesh.numberofvertices))
+	for i in xrange(0,md.mesh.numberofvertices):
+		f.write("%8g %8g %i\n" % (md.mesh.x[i],md.mesh.y[i],0))
+
+	#Triangles
+	f.write("\n\n%s\n%i\n\n" % ('Triangles',md.mesh.numberofelements))
+	for i in xrange(0,md.mesh.numberofelements):
+		f.write("%i %i %i %i\n" % (md.mesh.elements[i,0],md.mesh.elements[i,1],md.mesh.elements[i,2],0))
+	numberofelements1=md.mesh.numberofelements
+
+	#Deal with rifts
+	if numpy.any(not numpy.isnan(md.rifts.riftstruct)):
+
+		#we have the list of triangles that make up the rift. keep those triangles around during refinement.
+		triangles=numpy.empty(0,int)
+		for riftstruct in md.rifts.riftstruct:
+			triangles=numpy.concatenate((triangles,riftstruct.segments[:,2]))
+
+		f.write("\n\n%s\n%i\n\n" % ('RequiredTriangles',numpy.size(triangles)))
+		for triangle in triangles:
+			f.write("%i\n" % triangle)
+
+	#close
+	f.close()
+	t2=time.time()
+	print "%s%d%s\n" % (' done (',t2-t1,' seconds)')
+
+	#call yams
+	print "%s\n" % '      call Yams...'
+	if   m.ispc():
+		#windows
+		subprocess.call('yams2-win -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
+	elif ismac():
+		#Macosx
+		subprocess.call('yams2-osx -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
+	else:
+		#Linux
+		subprocess.call('yams2-linux -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
+
+	#plug new mesh
+	t1=time.time()
+	print "\n%s" % '      reading final mesh files...'
+	Tria=numpy.loadtxt('carre1.tria',int)
+	Coor=numpy.loadtxt('carre1.coor',float)
+	md.mesh.x=Coor[:,0]
+	md.mesh.y=Coor[:,1]
+	md.mesh.z=numpy.zeros((numpy.size(Coor,axis=0),1))
+	md.mesh.elements=Tria
+	md.mesh.numberofvertices=numpy.size(Coor,axis=0)
+	md.mesh.numberofelements=numpy.size(Tria,axis=0)
+	numberofelements2=md.mesh.numberofelements
+	t2=time.time()
+	print "%s%d%s\n\n" % (' done (',t2-t1,' seconds)')
+
+	#display number of elements
+	print "\n%s %i" % ('      inital number of elements:',numberofelements1)
+	print "\n%s %i\n\n" % ('      new    number of elements:',numberofelements2)
+
+	#clean up:
+	os.remove('carre0.mesh')
+	os.remove('carre0.met')
+	os.remove('carre1.tria')
+	os.remove('carre1.coor')
+	os.remove('carre1.meshb')
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/netCDF/ClassTry.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/netCDF/ClassTry.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/netCDF/ClassTry.py	(revision 21239)
@@ -0,0 +1,122 @@
+#module imports {{{
+from netCDF4 import Dataset
+import time
+import collections
+from os import path, remove
+#}}}
+
+				
+class truc(object):
+	#properties
+	def __init__(self,*filename):#{{{
+
+		def netCDFread(filename):
+			def walktree(data):
+				keys = list(data.groups.keys())
+				yield keys
+				for key in keys:
+					for children in walktree(data.groups[str(key)]):
+						yield children
+
+			if path.exists(filename):
+				print(('Opening {} for reading '.format(filename)))
+				NCData=Dataset(filename, 'r')
+				class_dict={}
+				
+				for children in walktree(NCData):
+					for child in children:
+						class_dict[str(child)]=str(getattr(NCData.groups[str(child)],'classtype'))
+
+				return class_dict
+
+		if filename:		
+			classtype=netCDFread(filename[0])
+		else:
+			classtype=self.default_prop()
+			
+		module=list(map(__import__,dict.values(classtype)))
+
+		for i,mod in enumerate(dict.keys(classtype)):
+			self.__dict__[mod] = getattr(module[i],str(classtype[str(mod)]))()
+			
+		#}}}
+	def default_prop(self):    # {{{
+		# ordered list of properties since vars(self) is random
+		return {'mesh':'mesh2d',\
+		        'mask':'mask',\
+		        'geometry':'geometry',\
+		        'constants':'constants',\
+		        'smb':'SMB',\
+		        'basalforcings':'basalforcings',\
+		        'materials':'matice',\
+		        'damage':'damage',\
+		        'friction':'friction',\
+		        'flowequation':'flowequation',\
+		        'timestepping':'timestepping',\
+		        'initialization':'initialization',\
+		        'rifts':'rifts',\
+		        'debug':'debug',\
+		        'verbose':'verbose',\
+		        'settings':'settings',\
+		        'toolkits':'toolkits',\
+		        'cluster':'generic',\
+		        'balancethickness':'balancethickness',\
+		        'stressbalance':'stressbalance',\
+		        'groundingline':'groundingline',\
+		        'hydrology':'hydrologyshreve',\
+		        'masstransport':'masstransport',\
+		        'thermal':'thermal',\
+		        'steadystate':'steadystate',\
+		        'transient':'transient',\
+		        'calving':'calving',\
+						'gia':'gia',\
+		        'autodiff':'autodiff',\
+		        'flaim':'flaim',\
+		        'inversion':'inversion',\
+		        'qmu':'qmu',\
+		        'outputdefinition':'outputdefinition',\
+		        'results':'results',\
+		        'radaroverlay':'radaroverlay',\
+		        'miscellaneous':'miscellaneous',\
+		        'private':'private'}
+	# }}}
+		
+	def __repr__(obj): #{{{
+		#print "Here %s the number: %d" % ("is", 37)
+		string="%19s: %-22s -- %s" % ("mesh","[%s,%s]" % ("1x1",obj.mesh.__class__.__name__),"mesh properties")
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("mask","[%s,%s]" % ("1x1",obj.mask.__class__.__name__),"defines grounded and floating elements"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("geometry","[%s,%s]" % ("1x1",obj.geometry.__class__.__name__),"surface elevation, bedrock topography, ice thickness,..."))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("constants","[%s,%s]" % ("1x1",obj.constants.__class__.__name__),"physical constants"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("smb","[%s,%s]" % ("1x1",obj.smb.__class__.__name__),"surface forcings"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("basalforcings","[%s,%s]" % ("1x1",obj.basalforcings.__class__.__name__),"bed forcings"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("materials","[%s,%s]" % ("1x1",obj.materials.__class__.__name__),"material properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("damage","[%s,%s]" % ("1x1",obj.damage.__class__.__name__),"damage propagation laws"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("friction","[%s,%s]" % ("1x1",obj.friction.__class__.__name__),"basal friction/drag properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("flowequation","[%s,%s]" % ("1x1",obj.flowequation.__class__.__name__),"flow equations"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("timestepping","[%s,%s]" % ("1x1",obj.timestepping.__class__.__name__),"time stepping for transient models"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("initialization","[%s,%s]" % ("1x1",obj.initialization.__class__.__name__),"initial guess/state"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("rifts","[%s,%s]" % ("1x1",obj.rifts.__class__.__name__),"rifts properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("debug","[%s,%s]" % ("1x1",obj.debug.__class__.__name__),"debugging tools (valgrind, gprof)"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("verbose","[%s,%s]" % ("1x1",obj.verbose.__class__.__name__),"verbosity level in solve"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("settings","[%s,%s]" % ("1x1",obj.settings.__class__.__name__),"settings properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("toolkits","[%s,%s]" % ("1x1",obj.toolkits.__class__.__name__),"PETSc options for each solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("cluster","[%s,%s]" % ("1x1",obj.cluster.__class__.__name__),"cluster parameters (number of cpus...)"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("balancethickness","[%s,%s]" % ("1x1",obj.balancethickness.__class__.__name__),"parameters for balancethickness solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("stressbalance","[%s,%s]" % ("1x1",obj.stressbalance.__class__.__name__),"parameters for stressbalance solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("groundingline","[%s,%s]" % ("1x1",obj.groundingline.__class__.__name__),"parameters for groundingline solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("hydrology","[%s,%s]" % ("1x1",obj.hydrology.__class__.__name__),"parameters for hydrology solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("masstransport","[%s,%s]" % ("1x1",obj.masstransport.__class__.__name__),"parameters for masstransport solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("thermal","[%s,%s]" % ("1x1",obj.thermal.__class__.__name__),"parameters for thermal solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("steadystate","[%s,%s]" % ("1x1",obj.steadystate.__class__.__name__),"parameters for steadystate solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("transient","[%s,%s]" % ("1x1",obj.transient.__class__.__name__),"parameters for transient solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("calving","[%s,%s]" % ("1x1",obj.calving.__class__.__name__),"parameters for calving"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("autodiff","[%s,%s]" % ("1x1",obj.autodiff.__class__.__name__),"automatic differentiation parameters"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("flaim","[%s,%s]" % ("1x1",obj.flaim.__class__.__name__),"flaim parameters"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("inversion","[%s,%s]" % ("1x1",obj.inversion.__class__.__name__),"parameters for inverse methods"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("qmu","[%s,%s]" % ("1x1",obj.qmu.__class__.__name__),"dakota properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("outputdefinition","[%s,%s]" % ("1x1",obj.outputdefinition.__class__.__name__),"output definition"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("results","[%s,%s]" % ("1x1",obj.results.__class__.__name__),"model results"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("radaroverlay","[%s,%s]" % ("1x1",obj.radaroverlay.__class__.__name__),"radar image for plot overlay"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("miscellaneous","[%s,%s]" % ("1x1",obj.miscellaneous.__class__.__name__),"miscellaneous fields"))
+		return string
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/netCDF/ClassTry.py.bak
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/netCDF/ClassTry.py.bak	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/netCDF/ClassTry.py.bak	(revision 21239)
@@ -0,0 +1,122 @@
+#module imports {{{
+from netCDF4 import Dataset
+import time
+import collections
+from os import path, remove
+#}}}
+
+				
+class truc(object):
+	#properties
+	def __init__(self,*filename):#{{{
+
+		def netCDFread(filename):
+			def walktree(data):
+				keys = data.groups.keys()
+				yield keys
+				for key in keys:
+					for children in walktree(data.groups[str(key)]):
+						yield children
+
+			if path.exists(filename):
+				print ('Opening {} for reading '.format(filename))
+				NCData=Dataset(filename, 'r')
+				class_dict={}
+				
+				for children in walktree(NCData):
+					for child in children:
+						class_dict[str(child)]=str(getattr(NCData.groups[str(child)],'classtype'))
+
+				return class_dict
+
+		if filename:		
+			classtype=netCDFread(filename[0])
+		else:
+			classtype=self.default_prop()
+			
+		module=map(__import__,dict.values(classtype))
+
+		for i,mod in enumerate(dict.keys(classtype)):
+			self.__dict__[mod] = getattr(module[i],str(classtype[str(mod)]))()
+			
+		#}}}
+	def default_prop(self):    # {{{
+		# ordered list of properties since vars(self) is random
+		return {'mesh':'mesh2d',\
+		        'mask':'mask',\
+		        'geometry':'geometry',\
+		        'constants':'constants',\
+		        'smb':'SMB',\
+		        'basalforcings':'basalforcings',\
+		        'materials':'matice',\
+		        'damage':'damage',\
+		        'friction':'friction',\
+		        'flowequation':'flowequation',\
+		        'timestepping':'timestepping',\
+		        'initialization':'initialization',\
+		        'rifts':'rifts',\
+		        'debug':'debug',\
+		        'verbose':'verbose',\
+		        'settings':'settings',\
+		        'toolkits':'toolkits',\
+		        'cluster':'generic',\
+		        'balancethickness':'balancethickness',\
+		        'stressbalance':'stressbalance',\
+		        'groundingline':'groundingline',\
+		        'hydrology':'hydrologyshreve',\
+		        'masstransport':'masstransport',\
+		        'thermal':'thermal',\
+		        'steadystate':'steadystate',\
+		        'transient':'transient',\
+		        'calving':'calving',\
+						'gia':'gia',\
+		        'autodiff':'autodiff',\
+		        'flaim':'flaim',\
+		        'inversion':'inversion',\
+		        'qmu':'qmu',\
+		        'outputdefinition':'outputdefinition',\
+		        'results':'results',\
+		        'radaroverlay':'radaroverlay',\
+		        'miscellaneous':'miscellaneous',\
+		        'private':'private'}
+	# }}}
+		
+	def __repr__(obj): #{{{
+		#print "Here %s the number: %d" % ("is", 37)
+		string="%19s: %-22s -- %s" % ("mesh","[%s,%s]" % ("1x1",obj.mesh.__class__.__name__),"mesh properties")
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("mask","[%s,%s]" % ("1x1",obj.mask.__class__.__name__),"defines grounded and floating elements"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("geometry","[%s,%s]" % ("1x1",obj.geometry.__class__.__name__),"surface elevation, bedrock topography, ice thickness,..."))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("constants","[%s,%s]" % ("1x1",obj.constants.__class__.__name__),"physical constants"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("smb","[%s,%s]" % ("1x1",obj.smb.__class__.__name__),"surface forcings"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("basalforcings","[%s,%s]" % ("1x1",obj.basalforcings.__class__.__name__),"bed forcings"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("materials","[%s,%s]" % ("1x1",obj.materials.__class__.__name__),"material properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("damage","[%s,%s]" % ("1x1",obj.damage.__class__.__name__),"damage propagation laws"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("friction","[%s,%s]" % ("1x1",obj.friction.__class__.__name__),"basal friction/drag properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("flowequation","[%s,%s]" % ("1x1",obj.flowequation.__class__.__name__),"flow equations"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("timestepping","[%s,%s]" % ("1x1",obj.timestepping.__class__.__name__),"time stepping for transient models"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("initialization","[%s,%s]" % ("1x1",obj.initialization.__class__.__name__),"initial guess/state"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("rifts","[%s,%s]" % ("1x1",obj.rifts.__class__.__name__),"rifts properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("debug","[%s,%s]" % ("1x1",obj.debug.__class__.__name__),"debugging tools (valgrind, gprof)"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("verbose","[%s,%s]" % ("1x1",obj.verbose.__class__.__name__),"verbosity level in solve"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("settings","[%s,%s]" % ("1x1",obj.settings.__class__.__name__),"settings properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("toolkits","[%s,%s]" % ("1x1",obj.toolkits.__class__.__name__),"PETSc options for each solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("cluster","[%s,%s]" % ("1x1",obj.cluster.__class__.__name__),"cluster parameters (number of cpus...)"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("balancethickness","[%s,%s]" % ("1x1",obj.balancethickness.__class__.__name__),"parameters for balancethickness solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("stressbalance","[%s,%s]" % ("1x1",obj.stressbalance.__class__.__name__),"parameters for stressbalance solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("groundingline","[%s,%s]" % ("1x1",obj.groundingline.__class__.__name__),"parameters for groundingline solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("hydrology","[%s,%s]" % ("1x1",obj.hydrology.__class__.__name__),"parameters for hydrology solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("masstransport","[%s,%s]" % ("1x1",obj.masstransport.__class__.__name__),"parameters for masstransport solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("thermal","[%s,%s]" % ("1x1",obj.thermal.__class__.__name__),"parameters for thermal solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("steadystate","[%s,%s]" % ("1x1",obj.steadystate.__class__.__name__),"parameters for steadystate solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("transient","[%s,%s]" % ("1x1",obj.transient.__class__.__name__),"parameters for transient solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("calving","[%s,%s]" % ("1x1",obj.calving.__class__.__name__),"parameters for calving"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("autodiff","[%s,%s]" % ("1x1",obj.autodiff.__class__.__name__),"automatic differentiation parameters"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("flaim","[%s,%s]" % ("1x1",obj.flaim.__class__.__name__),"flaim parameters"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("inversion","[%s,%s]" % ("1x1",obj.inversion.__class__.__name__),"parameters for inverse methods"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("qmu","[%s,%s]" % ("1x1",obj.qmu.__class__.__name__),"dakota properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("outputdefinition","[%s,%s]" % ("1x1",obj.outputdefinition.__class__.__name__),"output definition"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("results","[%s,%s]" % ("1x1",obj.results.__class__.__name__),"model results"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("radaroverlay","[%s,%s]" % ("1x1",obj.radaroverlay.__class__.__name__),"radar image for plot overlay"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("miscellaneous","[%s,%s]" % ("1x1",obj.miscellaneous.__class__.__name__),"miscellaneous fields"))
+		return string
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/netCDF/export_netCDF.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/netCDF/export_netCDF.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/netCDF/export_netCDF.py	(revision 21239)
@@ -0,0 +1,218 @@
+from netCDF4 import Dataset, stringtochar
+import numpy
+import time
+import collections
+from mesh2d import *
+from mesh3dprisms import *
+from results import *
+from os import path, remove
+
+def export_netCDF(md,filename):
+	#Now going on Real treatment
+	if path.exists(filename):
+		print(('File {} allready exist'.format(filename)))
+		newname=input('Give a new name or "delete" to replace: ')
+		if newname=='delete':
+			remove(filename)
+		else:
+			print(('New file name is {}'.format(newname)))
+			filename=newname
+			
+	NCData=Dataset(filename, 'w', format='NETCDF4')
+	NCData.description = 'Results for run' + md.miscellaneous.name
+	NCData.history = 'Created ' + time.ctime(time.time())
+
+	#gather geometry and timestepping as dimensions
+	Duration=md.timestepping.final_time-md.timestepping.start_time
+	if Duration>0 and md.timestepping.time_step*md.settings.output_frequency>0:
+		StepNum=Duration/(md.timestepping.time_step*md.settings.output_frequency)
+	else:
+		StepNum=1
+		
+	Dimension1=NCData.createDimension('Dimension1',md.mesh.numberofelements)
+	Dimension2=NCData.createDimension('Dimension2',md.mesh.numberofvertices)
+	Dimension3=NCData.createDimension('Dimension3',numpy.shape(md.mesh.elements)[1])
+	Dimension4=NCData.createDimension('Dimension4',StepNum)
+	Dimension5=NCData.createDimension('Dimension5',40)
+	Dimension6=NCData.createDimension('Dimension6',2) 
+
+	DimDict = {len(Dimension1):'Dimension1',
+						 len(Dimension2):'Dimension2',
+						 len(Dimension3):'Dimension3',
+						 len(Dimension4):'Dimension4',
+						 len(Dimension5):'Dimension5',
+						 len(Dimension6):'Dimension6'}
+
+	#get all model classes and create respective groups
+	groups=dict.keys(md.__dict__)
+	for group in groups:
+		NCgroup=NCData.createGroup(str(group))
+		#In each group gather the fields of the class
+		fields=dict.keys(md.__dict__[group].__dict__)
+
+		#Special treatment for the results
+		if str(group)=='results':
+			for supfield in fields:#looping on the different solutions
+				NCgroup.__setattr__('classtype', "results")
+				Subgroup=NCgroup.createGroup(str(supfield))
+				Subgroup.__setattr__('classtype',str(supfield))
+				if type(md.results.__dict__[supfield])==list:#the solution have several timestep
+					#get last timesteps and output frequency
+					last_step = numpy.size(md.results.__dict__[supfield])
+					step_freq = md.settings.output_frequency
+					#grab first time step
+					subfields=dict.keys(md.results.__dict__[supfield].__getitem__(0).__dict__)
+					for field in subfields:
+						if str(field)!='errlog' and str(field)!='outlog' and str(field)!='SolutionType':
+							Var=md.results.__dict__[supfield].__getitem__(0).__dict__[field]
+							DimDict=CreateVar(NCData,Var,field,Subgroup,DimDict,True,last_step,step_freq,md,supfield)
+					
+				elif type(md.results.__dict__[supfield])==results:#only one timestep
+					subfields=dict.keys(md.results.__dict__[supfield].__dict__)
+					for field in subfields:
+						if str(field)!='errlog' and str(field)!='outlog' and str(field)!='SolutionType':
+							print('Treating '+str(group)+'.'+str(supfield)+'.'+str(field))
+							Var=md.results.__dict__[supfield].__dict__[field]
+							DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict,False)
+				else:
+					print('Result format not suported')
+		else:
+			
+			for field in fields:
+				print('Treating ' +str(group)+'.'+str(field))
+				NCgroup.__setattr__('classtype', md.__dict__[group].__class__.__name__)
+				Var=md.__dict__[group].__dict__[field]
+				DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict,False)
+	NCData.close()
+
+#============================================================================
+#Define the variables
+def CreateVar(NCData,var,field,Group,DimDict,istime,*step_args):
+	#grab type
+	try:
+		val_type=str(var.dtype)
+	except AttributeError:
+		val_type=type(var)
+		#grab dimension
+	try:
+		val_shape=dict.keys(var)
+	except TypeError:
+		val_shape=numpy.shape(var)
+
+
+	TypeDict = {float:'f8',
+							'float64':'f8',
+							int:'i8',
+							'int64':'i8'}
+		
+	val_dim=numpy.shape(val_shape)[0]
+	#Now define and fill up variable
+	#treating scalar string or bool as atribute
+	if val_type==str or val_type==bool:
+		Group.__setattr__(str(field), str(var))
+
+	#treating list as string table
+	#matlab does not recognise strings so we have to settle down with char arrays
+	elif val_type==list:
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),'S1',dimensions,zlib=True)
+		charvar=stringtochar(numpy.array(var))
+		print(charvar)
+		print(charvar.shape)
+		for elt in range(0,val_dim):
+			try:
+				ncvar[elt] = charvar[elt]
+			except IndexError:
+				ncvar[0]= " "
+				#treating bool tables as string tables
+	elif val_type=='bool':
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),'S1',dimensions,zlib=True)
+		for elt in range(0,val_shape[0]):
+			ncvar[elt] = str(var[elt])
+			#treating dictionaries as string tables of dim 2
+	elif val_type==collections.OrderedDict:
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),'S1',dimensions,zlib=True)
+		for elt in range(0,val_dim):
+			ncvar[elt,0]=dict.keys(var)[elt]
+			ncvar[elt,1]=str(dict.values(var)[elt]) #converting to str to avoid potential problems
+			#Now dealing with numeric variables
+	else:
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),TypeDict[val_type],dimensions,zlib=True)
+		
+		if istime:
+			last=step_args[0]
+			freq=step_args[1]
+			md=step_args[2]
+			supfield=step_args[3]
+			vartab=var
+			for time in range(freq-1,last,freq):
+				if time!=0:
+					timevar=md.results.__dict__[supfield].__getitem__(time).__dict__[field]
+					print('Treating results.'+str(supfield)+'.'+str(field)+' for time '+str(time))
+					vartab=numpy.column_stack((vartab,timevar))
+			print(numpy.shape(vartab))
+			try:
+				ncvar[:,:]=vartab[:,:]
+			except ValueError:
+				ncvar[:]=vartab.T[:]
+		else:
+			try:
+				nan_val=numpy.isnan(var)
+				if nan_val.all():
+					ncvar [:] = 'NaN'
+				else:
+					ncvar[:] = var
+			except TypeError: #type does not accept nan, get vallue of the variable
+				ncvar[:] = var
+	return DimDict
+
+#============================================================================
+#retriev the dimension tuple from a dictionnary
+def GetDim(NCData,var,shape,DimDict,i,istime):
+	output=[]
+	#grab type
+	try:
+		val_type=str(var.dtype)
+	except AttributeError:
+		val_type=type(var)
+	#grab dimension
+	for dim in range(0,i): #loop on the dimensions
+		if type(shape[0])==int: 
+			try:
+				output=output+[str(DimDict[shape[dim]])] #test if the dimension allready exist
+			except KeyError: #if not create it
+				if (shape[dim])>1:
+					index=len(DimDict)+1
+					NewDim=NCData.createDimension('Dimension'+str(index),(shape[dim]))
+					DimDict[len(NewDim)]='Dimension'+str(index)
+					output=output+[str(DimDict[shape[dim]])]
+					print('Defining dimension ' +'Dimension'+str(index))
+		elif type(shape[0])==str:#dealling with a dictionnary
+			try:
+				output=[str(DimDict[numpy.shape(shape)[0]])]+['DictDim']
+			except KeyError:
+				index=len(DimDict)+1
+				NewDim=NCData.createDimension('Dimension'+str(index),numpy.shape(shape)[0])
+				DimDict[len(NewDim)]='Dimension'+str(index)
+				output=[str(DimDict[numpy.shape(dict.keys(var))[0]])]+['Dimension6']
+				print('Defining dimension ' +'Dimension'+str(index))
+			break
+	if istime:
+		output=output+['Dimension4']
+	#dealing with char and not string as we should so we need to had a string length
+	if val_type=='bool' or val_type==collections.OrderedDict or val_type==list:
+		charvar=stringtochar(numpy.array(var))
+		stringlength=charvar.shape[charvar.ndim-1]
+		try:
+			output=output+[str(DimDict[stringlength])] #test if the dimension allready exist
+		except KeyError: #if not create it
+			if (shape[dim])>1:
+				index=len(DimDict)+1
+				NewDim=NCData.createDimension('Dimension'+str(index),(stringlength))
+				DimDict[len(NewDim)]='Dimension'+str(index)
+				output=output+[str(DimDict[stringlength])]
+				print('Defining dimension ' +'Dimension'+str(index))
+	return tuple(output), DimDict
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/netCDF/export_netCDF.py.bak
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/netCDF/export_netCDF.py.bak	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/netCDF/export_netCDF.py.bak	(revision 21239)
@@ -0,0 +1,218 @@
+from netCDF4 import Dataset, stringtochar
+import numpy
+import time
+import collections
+from mesh2d import *
+from mesh3dprisms import *
+from results import *
+from os import path, remove
+
+def export_netCDF(md,filename):
+	#Now going on Real treatment
+	if path.exists(filename):
+		print ('File {} allready exist'.format(filename))
+		newname=raw_input('Give a new name or "delete" to replace: ')
+		if newname=='delete':
+			remove(filename)
+		else:
+			print ('New file name is {}'.format(newname))
+			filename=newname
+			
+	NCData=Dataset(filename, 'w', format='NETCDF4')
+	NCData.description = 'Results for run' + md.miscellaneous.name
+	NCData.history = 'Created ' + time.ctime(time.time())
+
+	#gather geometry and timestepping as dimensions
+	Duration=md.timestepping.final_time-md.timestepping.start_time
+	if Duration>0 and md.timestepping.time_step*md.settings.output_frequency>0:
+		StepNum=Duration/(md.timestepping.time_step*md.settings.output_frequency)
+	else:
+		StepNum=1
+		
+	Dimension1=NCData.createDimension('Dimension1',md.mesh.numberofelements)
+	Dimension2=NCData.createDimension('Dimension2',md.mesh.numberofvertices)
+	Dimension3=NCData.createDimension('Dimension3',numpy.shape(md.mesh.elements)[1])
+	Dimension4=NCData.createDimension('Dimension4',StepNum)
+	Dimension5=NCData.createDimension('Dimension5',40)
+	Dimension6=NCData.createDimension('Dimension6',2) 
+
+	DimDict = {len(Dimension1):'Dimension1',
+						 len(Dimension2):'Dimension2',
+						 len(Dimension3):'Dimension3',
+						 len(Dimension4):'Dimension4',
+						 len(Dimension5):'Dimension5',
+						 len(Dimension6):'Dimension6'}
+
+	#get all model classes and create respective groups
+	groups=dict.keys(md.__dict__)
+	for group in groups:
+		NCgroup=NCData.createGroup(str(group))
+		#In each group gather the fields of the class
+		fields=dict.keys(md.__dict__[group].__dict__)
+
+		#Special treatment for the results
+		if str(group)=='results':
+			for supfield in fields:#looping on the different solutions
+				NCgroup.__setattr__('classtype', "results")
+				Subgroup=NCgroup.createGroup(str(supfield))
+				Subgroup.__setattr__('classtype',str(supfield))
+				if type(md.results.__dict__[supfield])==list:#the solution have several timestep
+					#get last timesteps and output frequency
+					last_step = numpy.size(md.results.__dict__[supfield])
+					step_freq = md.settings.output_frequency
+					#grab first time step
+					subfields=dict.keys(md.results.__dict__[supfield].__getitem__(0).__dict__)
+					for field in subfields:
+						if str(field)!='errlog' and str(field)!='outlog' and str(field)!='SolutionType':
+							Var=md.results.__dict__[supfield].__getitem__(0).__dict__[field]
+							DimDict=CreateVar(NCData,Var,field,Subgroup,DimDict,True,last_step,step_freq,md,supfield)
+					
+				elif type(md.results.__dict__[supfield])==results:#only one timestep
+					subfields=dict.keys(md.results.__dict__[supfield].__dict__)
+					for field in subfields:
+						if str(field)!='errlog' and str(field)!='outlog' and str(field)!='SolutionType':
+							print 'Treating '+str(group)+'.'+str(supfield)+'.'+str(field)
+							Var=md.results.__dict__[supfield].__dict__[field]
+							DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict,False)
+				else:
+					print 'Result format not suported'
+		else:
+			
+			for field in fields:
+				print 'Treating ' +str(group)+'.'+str(field)
+				NCgroup.__setattr__('classtype', md.__dict__[group].__class__.__name__)
+				Var=md.__dict__[group].__dict__[field]
+				DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict,False)
+	NCData.close()
+
+#============================================================================
+#Define the variables
+def CreateVar(NCData,var,field,Group,DimDict,istime,*step_args):
+	#grab type
+	try:
+		val_type=str(var.dtype)
+	except AttributeError:
+		val_type=type(var)
+		#grab dimension
+	try:
+		val_shape=dict.keys(var)
+	except TypeError:
+		val_shape=numpy.shape(var)
+
+
+	TypeDict = {float:'f8',
+							'float64':'f8',
+							int:'i8',
+							'int64':'i8'}
+		
+	val_dim=numpy.shape(val_shape)[0]
+	#Now define and fill up variable
+	#treating scalar string or bool as atribute
+	if val_type==str or val_type==bool:
+		Group.__setattr__(str(field), str(var))
+
+	#treating list as string table
+	#matlab does not recognise strings so we have to settle down with char arrays
+	elif val_type==list:
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),'S1',dimensions,zlib=True)
+		charvar=stringtochar(numpy.array(var))
+		print charvar
+		print charvar.shape
+		for elt in range(0,val_dim):
+			try:
+				ncvar[elt] = charvar[elt]
+			except IndexError:
+				ncvar[0]= " "
+				#treating bool tables as string tables
+	elif val_type=='bool':
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),'S1',dimensions,zlib=True)
+		for elt in range(0,val_shape[0]):
+			ncvar[elt] = str(var[elt])
+			#treating dictionaries as string tables of dim 2
+	elif val_type==collections.OrderedDict:
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),'S1',dimensions,zlib=True)
+		for elt in range(0,val_dim):
+			ncvar[elt,0]=dict.keys(var)[elt]
+			ncvar[elt,1]=str(dict.values(var)[elt]) #converting to str to avoid potential problems
+			#Now dealing with numeric variables
+	else:
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),TypeDict[val_type],dimensions,zlib=True)
+		
+		if istime:
+			last=step_args[0]
+			freq=step_args[1]
+			md=step_args[2]
+			supfield=step_args[3]
+			vartab=var
+			for time in range(freq-1,last,freq):
+				if time!=0:
+					timevar=md.results.__dict__[supfield].__getitem__(time).__dict__[field]
+					print 'Treating results.'+str(supfield)+'.'+str(field)+' for time '+str(time)
+					vartab=numpy.column_stack((vartab,timevar))
+			print numpy.shape(vartab)
+			try:
+				ncvar[:,:]=vartab[:,:]
+			except ValueError:
+				ncvar[:]=vartab.T[:]
+		else:
+			try:
+				nan_val=numpy.isnan(var)
+				if nan_val.all():
+					ncvar [:] = 'NaN'
+				else:
+					ncvar[:] = var
+			except TypeError: #type does not accept nan, get vallue of the variable
+				ncvar[:] = var
+	return DimDict
+
+#============================================================================
+#retriev the dimension tuple from a dictionnary
+def GetDim(NCData,var,shape,DimDict,i,istime):
+	output=[]
+	#grab type
+	try:
+		val_type=str(var.dtype)
+	except AttributeError:
+		val_type=type(var)
+	#grab dimension
+	for dim in range(0,i): #loop on the dimensions
+		if type(shape[0])==int: 
+			try:
+				output=output+[str(DimDict[shape[dim]])] #test if the dimension allready exist
+			except KeyError: #if not create it
+				if (shape[dim])>1:
+					index=len(DimDict)+1
+					NewDim=NCData.createDimension('Dimension'+str(index),(shape[dim]))
+					DimDict[len(NewDim)]='Dimension'+str(index)
+					output=output+[str(DimDict[shape[dim]])]
+					print 'Defining dimension ' +'Dimension'+str(index)
+		elif type(shape[0])==str:#dealling with a dictionnary
+			try:
+				output=[str(DimDict[numpy.shape(shape)[0]])]+['DictDim']
+			except KeyError:
+				index=len(DimDict)+1
+				NewDim=NCData.createDimension('Dimension'+str(index),numpy.shape(shape)[0])
+				DimDict[len(NewDim)]='Dimension'+str(index)
+				output=[str(DimDict[numpy.shape(dict.keys(var))[0]])]+['Dimension6']
+				print 'Defining dimension ' +'Dimension'+str(index)
+			break
+	if istime:
+		output=output+['Dimension4']
+	#dealing with char and not string as we should so we need to had a string length
+	if val_type=='bool' or val_type==collections.OrderedDict or val_type==list:
+		charvar=stringtochar(numpy.array(var))
+		stringlength=charvar.shape[charvar.ndim-1]
+		try:
+			output=output+[str(DimDict[stringlength])] #test if the dimension allready exist
+		except KeyError: #if not create it
+			if (shape[dim])>1:
+				index=len(DimDict)+1
+				NewDim=NCData.createDimension('Dimension'+str(index),(stringlength))
+				DimDict[len(NewDim)]='Dimension'+str(index)
+				output=output+[str(DimDict[stringlength])]
+				print 'Defining dimension ' +'Dimension'+str(index)
+	return tuple(output), DimDict
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/netCDF/read_netCDF.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/netCDF/read_netCDF.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/netCDF/read_netCDF.py	(revision 21239)
@@ -0,0 +1,25 @@
+from netCDF4 import Dataset
+import time
+import collections
+from os import path, remove
+
+def netCDFRead(filename):
+	
+	def walktree(data):
+		keys = list(data.groups.keys())
+		yield keys
+		for key in keys:
+			for children in walktree(data.groups[str(key)]):
+				yield children
+				
+	if path.exists(filename):
+		print(('Opening {} for reading '.format(filename)))
+		NCData=Dataset(filename, 'r')
+		class_dict={}
+		
+		for children in walktree(NCData):
+			for child in children:
+				class_dict[str(child)]=str(getattr(NCData.groups[str(child)],'classtype')+'()')
+
+		print(class_dict)
+				
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/netCDF/read_netCDF.py.bak
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/netCDF/read_netCDF.py.bak	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/netCDF/read_netCDF.py.bak	(revision 21239)
@@ -0,0 +1,25 @@
+from netCDF4 import Dataset
+import time
+import collections
+from os import path, remove
+
+def netCDFRead(filename):
+	
+	def walktree(data):
+		keys = data.groups.keys()
+		yield keys
+		for key in keys:
+			for children in walktree(data.groups[str(key)]):
+				yield children
+				
+	if path.exists(filename):
+		print ('Opening {} for reading '.format(filename))
+		NCData=Dataset(filename, 'r')
+		class_dict={}
+		
+		for children in walktree(NCData):
+			for child in children:
+				class_dict[str(child)]=str(getattr(NCData.groups[str(child)],'classtype')+'()')
+
+		print class_dict
+				
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/paraview/exportVTK.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/paraview/exportVTK.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/paraview/exportVTK.py	(revision 21239)
@@ -0,0 +1,163 @@
+import numpy
+import os
+import model
+import glob
+def exportVTK(filename,model,*args):
+	'''
+	vtk export
+	function exportVTK(filename,model)
+	creates a directory with the vtk files for displays in paraview
+	(only work for triangle and wedges based on their number of nodes)
+	
+	Give only the results for nw but could be extended to geometry, mask... 
+	
+	input: filename   destination 
+	(string)
+	------------------------------------------------------------------
+model      this is md 
+	------------------------------------------------------------------
+	By default only the results are exported, you can add whichever
+	field you need as a string:
+	add 'geometry' to export md.geometry
+
+	Basile de Fleurian:
+	'''
+	Dir=os.path.basename(filename)
+	Path=filename[:-len(Dir)]
+
+	if os.path.exists(filename):
+		print(('File {} allready exist'.format(filename)))
+		newname=input('Give a new name or "delete" to replace: ')
+		if newname=='delete':
+			filelist = glob.glob(filename+'/*')
+			for oldfile in filelist:
+				os.remove(oldfile)
+		else:
+			print(('New file name is {}'.format(newname)))
+			filename=newname
+			os.mkdir(filename)
+	else:
+		os.mkdir(filename)
+
+	#get the element related variables
+	if 'z' in dict.keys(model.mesh.__dict__):
+		points=numpy.column_stack((model.mesh.x,model.mesh.y,model.mesh.z))
+		dim=3
+	else:
+		points=numpy.column_stack((model.mesh.x,model.mesh.y,numpy.zeros(numpy.shape(model.mesh.x))))
+		dim=2
+
+	num_of_points=numpy.size(model.mesh.x)
+	num_of_elt=numpy.shape(model.mesh.elements)[0]
+	point_per_elt=numpy.shape(model.mesh.elements)[1]
+		
+	#Select the type of element function of the number of nodes per elements
+	if point_per_elt==3:
+		celltype=5 #triangles
+	elif point_per_elt==6:
+		celltype=13 #wedges
+	else:
+		error('Your Element definition is not taken into account \n')
+
+	#this is the result structure
+	res_struct=model.results
+	if (len(res_struct.__dict__)>0):
+		#Getting all the solutions of the model
+		solnames=(dict.keys(res_struct.__dict__))
+		num_of_sols=len(solnames)
+		num_of_timesteps=1
+		out_freq=model.settings.output_frequency
+		#%building solutionstructure 
+		for solution in solnames:
+			#looking for multiple time steps
+			if (numpy.size(res_struct.__dict__[solution])>num_of_timesteps):
+				num_of_timesteps=numpy.size(res_struct.__dict__[solution])
+				num_of_timesteps=int(num_of_timesteps/out_freq)+1
+	else:
+		num_of_timesteps=1
+
+	for step in range(0,num_of_timesteps):
+		timestep=step
+		fid=open((filename +'/Timestep.vtk'+str(timestep)+'.vtk'),'w+')
+		fid.write('# vtk DataFile Version 2.0 \n')
+		fid.write('Data for run %s \n' % model.miscellaneous.name)
+		fid.write('ASCII \n')
+		fid.write('DATASET UNSTRUCTURED_GRID \n')
+		fid.write('POINTS %d float\n' % num_of_points)
+		if(dim==3):
+			for point in points:
+				fid.write('%f %f %f \n'%(point[0], point[1], point[2]))
+		elif(dim==2):
+			for point in points:
+				fid.write('%f %f %f \n'%(point[0], point[1], point[2]))
+			
+		fid.write('CELLS %d %d\n' %(num_of_elt, num_of_elt*(point_per_elt+1)))
+		
+		if point_per_elt==3:
+			for elt in range(0, num_of_elt):
+				fid.write('3 %d %d %d\n' %(model.mesh.elements[elt,0]-1,model.mesh.elements[elt,1]-1,model.mesh.elements[elt,2]-1))
+		elif point_per_elt==6:
+			for elt in range(0, num_of_elt):
+				fid.write('6 %d %d %d %d %d %d\n' %(model.mesh.elements[elt,0]-1,model.mesh.elements[elt,1]-1,model.mesh.elements[elt,2]-1,model.mesh.elements[elt,3]-1,model.mesh.elements[elt,4]-1,model.mesh.elements[elt,5]-1))
+		else:
+			print('Number of nodes per element not supported')
+
+		fid.write('CELL_TYPES %d\n' %num_of_elt)
+		for elt in range(0, num_of_elt):
+			fid.write('%d\n' %celltype)
+
+		fid.write('POINT_DATA %s \n' %str(num_of_points))
+	
+		#loop over the different solution structures
+		if 'solnames' in locals():
+			for sol in solnames:
+				#dealing with results on different timesteps
+				if(numpy.size(res_struct.__dict__[sol])>timestep):
+					timestep = step
+				else:
+					timestep = numpy.size(res_struct.__dict__[sol])
+				
+				#getting the  fields in the solution
+				if(numpy.size(res_struct.__dict__[sol])>1):
+					fieldnames=dict.keys(res_struct.__dict__[sol].__getitem__(timestep*out_freq-1).__dict__)
+				else:
+					fieldnames=dict.keys(res_struct.__dict__[sol].__dict__)
+				#check which field is a real result and print
+				for field in fieldnames:
+					if(numpy.size(res_struct.__dict__[sol])>1):
+						fieldstruct=res_struct.__dict__[sol].__getitem__(timestep*out_freq-1).__dict__[field]
+					else:
+						fieldstruct=res_struct.__dict__[sol].__dict__[field]
+
+					if ((numpy.size(fieldstruct))==num_of_points):
+						fid.write('SCALARS %s float 1 \n' % field)
+						fid.write('LOOKUP_TABLE default\n')
+						for node in range(0,num_of_points):
+							#paraview does not like NaN, replacing
+							if numpy.isnan(fieldstruct[node]):
+								fid.write('%e\n' % -9999.9999)
+							#also checking for verry small value that mess up
+							elif (abs(fieldstruct[node])<1.0e-20):
+								fid.write('%e\n' % 0.0)
+							else:
+								fid.write('%e\n' % fieldstruct[node])
+					
+		#loop on arguments, if something other than result is asked, do
+		#it now
+		for other in args:
+			other_struct=model.__dict__[other]
+			othernames=(dict.keys(other_struct.__dict__))
+			for field in othernames:
+				if ((numpy.size(other_struct.__dict__[field]))==num_of_points):
+					fid.write('SCALARS %s float 1 \n' % field)
+					fid.write('LOOKUP_TABLE default\n')
+					for node in range(0,num_of_points):
+						#paraview does not like NaN, replacing
+						if numpy.isnan(other_struct.__dict__[field][node]):
+							fid.write('%e\n' % -9999.9999)
+						#also checking for verry small value that mess up
+						elif (abs(other_struct.__dict__[field][node])<1.0e-20):
+							fid.write('%e\n' % 0.0)
+						else:
+							fid.write('%e\n' % other_struct.__dict__[field][node])
+	fid.close();
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/paraview/exportVTK.py.bak
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/paraview/exportVTK.py.bak	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/contrib/paraview/exportVTK.py.bak	(revision 21239)
@@ -0,0 +1,163 @@
+import numpy
+import os
+import model
+import glob
+def exportVTK(filename,model,*args):
+	'''
+	vtk export
+	function exportVTK(filename,model)
+	creates a directory with the vtk files for displays in paraview
+	(only work for triangle and wedges based on their number of nodes)
+	
+	Give only the results for nw but could be extended to geometry, mask... 
+	
+	input: filename   destination 
+	(string)
+	------------------------------------------------------------------
+model      this is md 
+	------------------------------------------------------------------
+	By default only the results are exported, you can add whichever
+	field you need as a string:
+	add 'geometry' to export md.geometry
+
+	Basile de Fleurian:
+	'''
+	Dir=os.path.basename(filename)
+	Path=filename[:-len(Dir)]
+
+	if os.path.exists(filename):
+		print ('File {} allready exist'.format(filename))
+		newname=raw_input('Give a new name or "delete" to replace: ')
+		if newname=='delete':
+			filelist = glob.glob(filename+'/*')
+			for oldfile in filelist:
+				os.remove(oldfile)
+		else:
+			print ('New file name is {}'.format(newname))
+			filename=newname
+			os.mkdir(filename)
+	else:
+		os.mkdir(filename)
+
+	#get the element related variables
+	if 'z' in dict.keys(model.mesh.__dict__):
+		points=numpy.column_stack((model.mesh.x,model.mesh.y,model.mesh.z))
+		dim=3
+	else:
+		points=numpy.column_stack((model.mesh.x,model.mesh.y,numpy.zeros(numpy.shape(model.mesh.x))))
+		dim=2
+
+	num_of_points=numpy.size(model.mesh.x)
+	num_of_elt=numpy.shape(model.mesh.elements)[0]
+	point_per_elt=numpy.shape(model.mesh.elements)[1]
+		
+	#Select the type of element function of the number of nodes per elements
+	if point_per_elt==3:
+		celltype=5 #triangles
+	elif point_per_elt==6:
+		celltype=13 #wedges
+	else:
+		error('Your Element definition is not taken into account \n')
+
+	#this is the result structure
+	res_struct=model.results
+	if (len(res_struct.__dict__)>0):
+		#Getting all the solutions of the model
+		solnames=(dict.keys(res_struct.__dict__))
+		num_of_sols=len(solnames)
+		num_of_timesteps=1
+		out_freq=model.settings.output_frequency
+		#%building solutionstructure 
+		for solution in solnames:
+			#looking for multiple time steps
+			if (numpy.size(res_struct.__dict__[solution])>num_of_timesteps):
+				num_of_timesteps=numpy.size(res_struct.__dict__[solution])
+				num_of_timesteps=int(num_of_timesteps/out_freq)+1
+	else:
+		num_of_timesteps=1
+
+	for step in range(0,num_of_timesteps):
+		timestep=step
+		fid=open((filename +'/Timestep.vtk'+str(timestep)+'.vtk'),'w+')
+		fid.write('# vtk DataFile Version 2.0 \n')
+		fid.write('Data for run %s \n' % model.miscellaneous.name)
+		fid.write('ASCII \n')
+		fid.write('DATASET UNSTRUCTURED_GRID \n')
+		fid.write('POINTS %d float\n' % num_of_points)
+		if(dim==3):
+			for point in points:
+				fid.write('%f %f %f \n'%(point[0], point[1], point[2]))
+		elif(dim==2):
+			for point in points:
+				fid.write('%f %f %f \n'%(point[0], point[1], point[2]))
+			
+		fid.write('CELLS %d %d\n' %(num_of_elt, num_of_elt*(point_per_elt+1)))
+		
+		if point_per_elt==3:
+			for elt in range(0, num_of_elt):
+				fid.write('3 %d %d %d\n' %(model.mesh.elements[elt,0]-1,model.mesh.elements[elt,1]-1,model.mesh.elements[elt,2]-1))
+		elif point_per_elt==6:
+			for elt in range(0, num_of_elt):
+				fid.write('6 %d %d %d %d %d %d\n' %(model.mesh.elements[elt,0]-1,model.mesh.elements[elt,1]-1,model.mesh.elements[elt,2]-1,model.mesh.elements[elt,3]-1,model.mesh.elements[elt,4]-1,model.mesh.elements[elt,5]-1))
+		else:
+			print 'Number of nodes per element not supported'
+
+		fid.write('CELL_TYPES %d\n' %num_of_elt)
+		for elt in range(0, num_of_elt):
+			fid.write('%d\n' %celltype)
+
+		fid.write('POINT_DATA %s \n' %str(num_of_points))
+	
+		#loop over the different solution structures
+		if 'solnames' in locals():
+			for sol in solnames:
+				#dealing with results on different timesteps
+				if(numpy.size(res_struct.__dict__[sol])>timestep):
+					timestep = step
+				else:
+					timestep = numpy.size(res_struct.__dict__[sol])
+				
+				#getting the  fields in the solution
+				if(numpy.size(res_struct.__dict__[sol])>1):
+					fieldnames=dict.keys(res_struct.__dict__[sol].__getitem__(timestep*out_freq-1).__dict__)
+				else:
+					fieldnames=dict.keys(res_struct.__dict__[sol].__dict__)
+				#check which field is a real result and print
+				for field in fieldnames:
+					if(numpy.size(res_struct.__dict__[sol])>1):
+						fieldstruct=res_struct.__dict__[sol].__getitem__(timestep*out_freq-1).__dict__[field]
+					else:
+						fieldstruct=res_struct.__dict__[sol].__dict__[field]
+
+					if ((numpy.size(fieldstruct))==num_of_points):
+						fid.write('SCALARS %s float 1 \n' % field)
+						fid.write('LOOKUP_TABLE default\n')
+						for node in range(0,num_of_points):
+							#paraview does not like NaN, replacing
+							if numpy.isnan(fieldstruct[node]):
+								fid.write('%e\n' % -9999.9999)
+							#also checking for verry small value that mess up
+							elif (abs(fieldstruct[node])<1.0e-20):
+								fid.write('%e\n' % 0.0)
+							else:
+								fid.write('%e\n' % fieldstruct[node])
+					
+		#loop on arguments, if something other than result is asked, do
+		#it now
+		for other in args:
+			other_struct=model.__dict__[other]
+			othernames=(dict.keys(other_struct.__dict__))
+			for field in othernames:
+				if ((numpy.size(other_struct.__dict__[field]))==num_of_points):
+					fid.write('SCALARS %s float 1 \n' % field)
+					fid.write('LOOKUP_TABLE default\n')
+					for node in range(0,num_of_points):
+						#paraview does not like NaN, replacing
+						if numpy.isnan(other_struct.__dict__[field][node]):
+							fid.write('%e\n' % -9999.9999)
+						#also checking for verry small value that mess up
+						elif (abs(other_struct.__dict__[field][node])<1.0e-20):
+							fid.write('%e\n' % 0.0)
+						else:
+							fid.write('%e\n' % other_struct.__dict__[field][node])
+	fid.close();
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/coordsystems/ll2xy.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/coordsystems/ll2xy.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/coordsystems/ll2xy.py	(revision 21239)
@@ -0,0 +1,62 @@
+import numpy as npy 
+
+def ll2xy(lat,lon,sgn=-1,central_meridian=0,standard_parallel=71):
+	'''
+	LL2XY - converts lat lon to polar stereographic
+
+   Converts from geodetic latitude and longitude to Polar 
+   Stereographic (X,Y) coordinates for the polar regions.
+   Author: Michael P. Schodlok, December 2003 (map2ll)
+
+   Usage:
+      x,y = ll2xy(lat,lon,sgn)
+      x,y = ll2xy(lat,lon,sgn,central_meridian,standard_parallel)
+
+      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+                               -1 : south latitude (default is mer=0  lat=71)
+	'''
+
+	assert sgn==1 or sgn==-1, 'error: sgn should be either +1 or -1'
+
+	#Get central_meridian and standard_parallel depending on hemisphere
+	if sgn == 1:
+		delta = 45
+		slat = 70
+		print('		ll2xy: creating coordinates in north polar stereographic (Std Latitude: 70N Meridian: 45)')
+	else: 
+		delta = central_meridian
+		slat = standard_parallel
+		print('		ll2xy: creating coordinates in south polar stereographic (Std Latitude: 71S Meridian: 0)')
+	
+	# Conversion constant from degrees to radians
+	cde = 57.29577951
+	# Radius of the earth in meters
+	re = 6378.273*10**3
+	# Eccentricity of the Hughes ellipsoid squared
+	ex2 = .006693883
+	# Eccentricity of the Hughes ellipsoid
+	ex = npy.sqrt(ex2)
+	
+	latitude = npy.abs(lat) * npy.pi/180.
+	longitude = (lon + delta) * npy.pi/180.
+	
+	# compute X and Y in grid coordinates.
+	T = npy.tan(npy.pi/4-latitude/2) / ((1-ex*npy.sin(latitude))/(1+ex*npy.sin(latitude)))**(ex/2)
+	
+	if (90 - slat) <  1.e-5:
+		rho = 2.*re*T/npy.sqrt((1.+ex)**(1.+ex)*(1.-ex)**(1.-ex))
+	else:
+		sl  = slat*npy.pi/180.
+		tc  = npy.tan(npy.pi/4.-sl/2.)/((1.-ex*npy.sin(sl))/(1.+ex*npy.sin(sl)))**(ex/2.)
+		mc  = npy.cos(sl)/npy.sqrt(1.0-ex2*(npy.sin(sl)**2))
+		rho = re*mc*T/tc
+	
+	y = -rho * sgn * npy.cos(sgn*longitude)
+	x =  rho * sgn * npy.sin(sgn*longitude)
+
+	cnt1=npy.nonzero(latitude>= npy.pi/2.)[0]
+	
+	if cnt1:
+		x[cnt1,0] = 0.0
+		y[cnt1,0] = 0.0
+	return x,y
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/coordsystems/xy2ll.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/coordsystems/xy2ll.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/coordsystems/xy2ll.py	(revision 21239)
@@ -0,0 +1,82 @@
+import numpy as npy
+from math import pi
+
+def xy2ll(x, y, sgn, *args):
+	'''
+	XY2LL - converts xy to lat long
+	
+	Converts Polar  Stereographic (X, Y) coordinates for the polar regions to
+	latitude and longitude Stereographic (X, Y) coordinates for the polar
+	regions.
+	Author: Michael P. Schodlok, December 2003 (map2xy.m)
+	
+	Usage:
+	   [lat, lon] = xy2ll(x, y, sgn);
+	   [lat, lon] = xy2ll(x, y, sgn, central_meridian, standard_parallel);
+	
+	   - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+	                            -1 : south latitude (default is mer=0  lat=71)
+	'''
+
+	#Get central_meridian and standard_parallel depending on hemisphere
+	if len(args) == 2:
+		delta = args[0]
+		slat  = args[1]
+	elif len(args) == 0:
+		if sgn == 1:
+			delta = 45. 
+			slat = 70.
+			print('		xy2ll: creating coordinates in north polar stereographic (Std Latitude: 70degN Meridian: 45deg)')
+		elif sgn == -1:
+			delta = 0.  
+			slat = 71.
+			print('		xy2ll: creating coordinates in south polar stereographic (Std Latitude: 71degS Meridian: 0deg)')
+		else:
+			raise ValueError('sgn should be either +1 or -1')
+	else:
+		raise Exception('bad usage: type "help(xy2ll)" for details')
+
+	# if x,y passed as lists, convert to numpy arrays
+	if type(x) != "numpy.ndarray":
+		x=npy.array(x)
+	if type(y) != "numpy.ndarray":
+		y=npy.array(y)
+
+	## Conversion constant from degrees to radians
+	cde = 57.29577951
+	## Radius of the earth in meters
+	re = 6378.273*10**3
+	## Eccentricity of the Hughes ellipsoid squared
+	ex2 = .006693883
+	## Eccentricity of the Hughes ellipsoid
+	ex = npy.sqrt(ex2)
+	
+	sl = slat*pi/180.
+	rho = npy.sqrt(x**2 + y**2)
+	cm = npy.cos(sl) / npy.sqrt(1.0 - ex2 * (npy.sin(sl)**2))
+	T = npy.tan((pi/4.0) - (sl/2.0)) / ((1.0 - ex*npy.sin(sl)) / (1.0 + ex*npy.sin(sl)))**(ex / 2.0)
+	
+	if abs(slat-90.) < 1.e-5:
+		T = rho*npy.sqrt((1. + ex)**(1. + ex) * (1. - ex)**(1. - ex)) / 2. / re
+	else:
+		T = rho * T / (re * cm)
+	
+	chi = (pi / 2.0) - 2.0 * npy.arctan(T)
+	lat = chi + ((ex2 / 2.0) + (5.0 * ex2**2.0 / 24.0) + (ex2**3.0 / 12.0)) * \
+		npy.sin(2 * chi) + ((7.0 * ex2**2.0 / 48.0) + (29.0 * ex2**3 / 240.0)) * \
+		npy.sin(4.0 * chi) + (7.0 * ex2**3.0 / 120.0) * npy.sin(6.0 * chi) 
+	
+	lat = sgn * lat
+	lon = npy.arctan2(sgn * x,-sgn * y)
+	lon = sgn * lon
+	
+	res1 = npy.nonzero(rho <= 0.1)[0]
+	if len(res1) > 0:
+		lat[res1] = 90. * sgn
+		lon[res1] = 0.0
+	
+	lon = lon * 180. / pi
+	lat = lat * 180. / pi
+	lon = lon - delta 
+
+	return lat, lon
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/dev/devpath.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/dev/devpath.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/dev/devpath.py	(revision 21239)
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+import os,sys
+import warnings
+
+#Recover ISSM_DIR and USERNAME
+ISSM_DIR = os.getenv('ISSM_DIRPY3')
+USERNAME = os.getenv('USER')
+JPL_SVN  = os.getenv('JPL_SVN')
+if(ISSM_DIR==None):
+	raise NameError('"ISSM_DIR" environment variable is empty! You should define ISSM_DIR in your .cshrc or .bashrc!')
+if(JPL_SVN==None):
+	warnings.warn('"JPL_SVN" environment variable is empty! add it to your .cshrc or .bashrc if you want to do distant computing')
+
+#Go through src/m and append any directory that contains a *.py file to PATH 
+for root,dirs,files in os.walk(ISSM_DIR+ '/src/py3'):
+	if '.svn' in dirs:
+		dirs.remove('.svn')
+	for file in files:
+		if file.find(".py") != -1:
+			if file.find(".pyc") == -1:
+				if root not in sys.path:
+					sys.path.append(root)
+				
+sys.path.append(ISSM_DIR + '/lib')
+sys.path.append(ISSM_DIR + '/src/wrappers/python/.libs')
+# If using clusters, we need to have the path to the cluster settings directory
+if(JPL_SVN!=None):
+	if os.path.exists(JPL_SVN + '/usr/' + USERNAME):
+		sys.path.append(JPL_SVN + '/usr/' + USERNAME)
+	else:
+		raise NameError ('cluster settings should be in, '+ JPL_SVN +'/usr/' + USERNAME)
+
+#Manual imports for commonly used functions
+#from plotmodel import plotmodel
+
+#c = get_ipython().config
+#c.InteractiveShellApp.exec_lines = []
+#c.InteractiveShellApp.exec_lines.append('%load_ext autoreload')
+#c.InteractiveShellApp.exec_lines.append('%autoreload 2')
+#c.InteractiveShellApp.exec_lines.append('print "Warning: disable autoreload in startup.py to improve performance." ')
+
+print("\n  ISSM development path correctly loaded\n\n")
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/dev/issmversion.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/dev/issmversion.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/dev/issmversion.py	(revision 21239)
@@ -0,0 +1,20 @@
+from IssmConfig import IssmConfig
+
+def issmversion():
+	"""
+	ISSMVERSION - display ISSM version
+
+		Usage:
+			issmversion()
+	"""
+
+
+print(' ')
+print(IssmConfig('PACKAGE_NAME')[0]+' Version '+IssmConfig('PACKAGE_VERSION')[0])
+print('(website: '+IssmConfig('PACKAGE_URL')[0]+' contact: '+IssmConfig('PACKAGE_BUGREPORT')[0]+')')
+print(' ')
+print('Build date: '+IssmConfig('PACKAGE_BUILD_DATE')[0])
+print('Copyright (c) 2009-2015 California Institute of Technology')
+print(' ')
+print('    to get started type: issmdoc')
+print(' ')
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/enum/EnumDefinitions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/enum/EnumDefinitions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/enum/EnumDefinitions.py	(revision 21239)
@@ -0,0 +1,963 @@
+from StringToEnum import StringToEnum
+
+"""
+
+WARNING: DO NOT MODIFY THIS FILE
+this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+Please read src/c/shared/Enum/README for more information
+
+"""
+
+def FemModelEnum(): return StringToEnum("FemModel")[0]
+def AutodiffIsautodiffEnum(): return StringToEnum("AutodiffIsautodiff")[0]
+def AutodiffNumDependentsEnum(): return StringToEnum("AutodiffNumDependents")[0]
+def AutodiffNumDependentObjectsEnum(): return StringToEnum("AutodiffNumDependentObjects")[0]
+def AutodiffDependentObjectNamesEnum(): return StringToEnum("AutodiffDependentObjectNames")[0]
+def AutodiffDependentObjectTypesEnum(): return StringToEnum("AutodiffDependentObjectTypes")[0]
+def AutodiffDependentObjectIndicesEnum(): return StringToEnum("AutodiffDependentObjectIndices")[0]
+def AutodiffDependentObjectsEnum(): return StringToEnum("AutodiffDependentObjects")[0]
+def AutodiffNumIndependentsEnum(): return StringToEnum("AutodiffNumIndependents")[0]
+def AutodiffNumIndependentObjectsEnum(): return StringToEnum("AutodiffNumIndependentObjects")[0]
+def AutodiffIndependentObjectNamesEnum(): return StringToEnum("AutodiffIndependentObjectNames")[0]
+def AutodiffIndependentObjectTypesEnum(): return StringToEnum("AutodiffIndependentObjectTypes")[0]
+def AutodiffIndependentObjectsEnum(): return StringToEnum("AutodiffIndependentObjects")[0]
+def AutodiffJacobianEnum(): return StringToEnum("AutodiffJacobian")[0]
+def AutodiffXpEnum(): return StringToEnum("AutodiffXp")[0]
+def AutodiffDriverEnum(): return StringToEnum("AutodiffDriver")[0]
+def AutodiffFosForwardIndexEnum(): return StringToEnum("AutodiffFosForwardIndex")[0]
+def AutodiffFovForwardIndicesEnum(): return StringToEnum("AutodiffFovForwardIndices")[0]
+def AutodiffFosReverseIndexEnum(): return StringToEnum("AutodiffFosReverseIndex")[0]
+def AutodiffMassFluxSegmentsPresentEnum(): return StringToEnum("AutodiffMassFluxSegmentsPresent")[0]
+def AutodiffKeepEnum(): return StringToEnum("AutodiffKeep")[0]
+def AutodiffObufsizeEnum(): return StringToEnum("AutodiffObufsize")[0]
+def AutodiffLbufsizeEnum(): return StringToEnum("AutodiffLbufsize")[0]
+def AutodiffCbufsizeEnum(): return StringToEnum("AutodiffCbufsize")[0]
+def AutodiffTbufsizeEnum(): return StringToEnum("AutodiffTbufsize")[0]
+def AutodiffGcTriggerRatioEnum(): return StringToEnum("AutodiffGcTriggerRatio")[0]
+def AutodiffGcTriggerMaxSizeEnum(): return StringToEnum("AutodiffGcTriggerMaxSize")[0]
+def BalancethicknessSpcthicknessEnum(): return StringToEnum("BalancethicknessSpcthickness")[0]
+def BalancethicknessStabilizationEnum(): return StringToEnum("BalancethicknessStabilization")[0]
+def BalancethicknessThickeningRateEnum(): return StringToEnum("BalancethicknessThickeningRate")[0]
+def BasalforcingsEnum(): return StringToEnum("Basalforcings")[0]
+def BasalforcingsGeothermalfluxEnum(): return StringToEnum("BasalforcingsGeothermalflux")[0]
+def BasalforcingsGroundediceMeltingRateEnum(): return StringToEnum("BasalforcingsGroundediceMeltingRate")[0]
+def BasalforcingsFloatingiceMeltingRateEnum(): return StringToEnum("BasalforcingsFloatingiceMeltingRate")[0]
+def BasalforcingsDeepwaterMeltingRateEnum(): return StringToEnum("BasalforcingsDeepwaterMeltingRate")[0]
+def BasalforcingsDeepwaterElevationEnum(): return StringToEnum("BasalforcingsDeepwaterElevation")[0]
+def BasalforcingsUpperwaterElevationEnum(): return StringToEnum("BasalforcingsUpperwaterElevation")[0]
+def BasalforcingsMeltrateFactorEnum(): return StringToEnum("BasalforcingsMeltrateFactor")[0]
+def BasalforcingsThresholdThicknessEnum(): return StringToEnum("BasalforcingsThresholdThickness")[0]
+def BasalforcingsUpperdepthMeltEnum(): return StringToEnum("BasalforcingsUpperdepthMelt")[0]
+def FloatingMeltRateEnum(): return StringToEnum("FloatingMeltRate")[0]
+def LinearFloatingMeltRateEnum(): return StringToEnum("LinearFloatingMeltRate")[0]
+def MismipFloatingMeltRateEnum(): return StringToEnum("MismipFloatingMeltRate")[0]
+def BedEnum(): return StringToEnum("Bed")[0]
+def BaseEnum(): return StringToEnum("Base")[0]
+def ConstantsGEnum(): return StringToEnum("ConstantsG")[0]
+def ConstantsReferencetemperatureEnum(): return StringToEnum("ConstantsReferencetemperature")[0]
+def ConstantsYtsEnum(): return StringToEnum("ConstantsYts")[0]
+def DependentObjectEnum(): return StringToEnum("DependentObject")[0]
+def StressbalanceAbstolEnum(): return StringToEnum("StressbalanceAbstol")[0]
+def StressbalanceIsnewtonEnum(): return StringToEnum("StressbalanceIsnewton")[0]
+def StressbalanceMaxiterEnum(): return StringToEnum("StressbalanceMaxiter")[0]
+def StressbalancePenaltyFactorEnum(): return StringToEnum("StressbalancePenaltyFactor")[0]
+def StressbalanceReferentialEnum(): return StringToEnum("StressbalanceReferential")[0]
+def StressbalanceReltolEnum(): return StringToEnum("StressbalanceReltol")[0]
+def StressbalanceNumRequestedOutputsEnum(): return StringToEnum("StressbalanceNumRequestedOutputs")[0]
+def StressbalanceRequestedOutputsEnum(): return StringToEnum("StressbalanceRequestedOutputs")[0]
+def StressbalanceRestolEnum(): return StringToEnum("StressbalanceRestol")[0]
+def StressbalanceRiftPenaltyLockEnum(): return StringToEnum("StressbalanceRiftPenaltyLock")[0]
+def StressbalanceRiftPenaltyThresholdEnum(): return StringToEnum("StressbalanceRiftPenaltyThreshold")[0]
+def StressbalanceShelfDampeningEnum(): return StringToEnum("StressbalanceShelfDampening")[0]
+def StressbalanceSpcvxEnum(): return StringToEnum("StressbalanceSpcvx")[0]
+def StressbalanceSpcvyEnum(): return StringToEnum("StressbalanceSpcvy")[0]
+def StressbalanceSpcvzEnum(): return StringToEnum("StressbalanceSpcvz")[0]
+def StressbalanceFSreconditioningEnum(): return StringToEnum("StressbalanceFSreconditioning")[0]
+def StressbalanceVertexPairingEnum(): return StringToEnum("StressbalanceVertexPairing")[0]
+def StressbalanceViscosityOvershootEnum(): return StringToEnum("StressbalanceViscosityOvershoot")[0]
+def LoadingforceXEnum(): return StringToEnum("LoadingforceX")[0]
+def LoadingforceYEnum(): return StringToEnum("LoadingforceY")[0]
+def LoadingforceZEnum(): return StringToEnum("LoadingforceZ")[0]
+def FlowequationBorderSSAEnum(): return StringToEnum("FlowequationBorderSSA")[0]
+def FlowequationBorderHOEnum(): return StringToEnum("FlowequationBorderHO")[0]
+def FlowequationBorderFSEnum(): return StringToEnum("FlowequationBorderFS")[0]
+def FlowequationElementEquationEnum(): return StringToEnum("FlowequationElementEquation")[0]
+def FlowequationIsSIAEnum(): return StringToEnum("FlowequationIsSIA")[0]
+def FlowequationIsSSAEnum(): return StringToEnum("FlowequationIsSSA")[0]
+def FlowequationIsL1L2Enum(): return StringToEnum("FlowequationIsL1L2")[0]
+def FlowequationIsHOEnum(): return StringToEnum("FlowequationIsHO")[0]
+def FlowequationIsFSEnum(): return StringToEnum("FlowequationIsFS")[0]
+def FlowequationFeSSAEnum(): return StringToEnum("FlowequationFeSSA")[0]
+def FlowequationFeHOEnum(): return StringToEnum("FlowequationFeHO")[0]
+def FlowequationFeFSEnum(): return StringToEnum("FlowequationFeFS")[0]
+def FlowequationVertexEquationEnum(): return StringToEnum("FlowequationVertexEquation")[0]
+def FrictionAsEnum(): return StringToEnum("FrictionAs")[0]
+def FrictionCoefficientEnum(): return StringToEnum("FrictionCoefficient")[0]
+def FrictionCoefficientcoulombEnum(): return StringToEnum("FrictionCoefficientcoulomb")[0]
+def FrictionPEnum(): return StringToEnum("FrictionP")[0]
+def FrictionQEnum(): return StringToEnum("FrictionQ")[0]
+def FrictionMEnum(): return StringToEnum("FrictionM")[0]
+def FrictionCEnum(): return StringToEnum("FrictionC")[0]
+def FrictionLawEnum(): return StringToEnum("FrictionLaw")[0]
+def FrictionGammaEnum(): return StringToEnum("FrictionGamma")[0]
+def FrictionFEnum(): return StringToEnum("FrictionF")[0]
+def FrictionWaterLayerEnum(): return StringToEnum("FrictionWaterLayer")[0]
+def FrictionEffectivePressureEnum(): return StringToEnum("FrictionEffectivePressure")[0]
+def FrictionCouplingEnum(): return StringToEnum("FrictionCoupling")[0]
+def GeometryHydrostaticRatioEnum(): return StringToEnum("GeometryHydrostaticRatio")[0]
+def HydrologyModelEnum(): return StringToEnum("HydrologyModel")[0]
+def HydrologyshreveEnum(): return StringToEnum("Hydrologyshreve")[0]
+def HydrologyshreveSpcwatercolumnEnum(): return StringToEnum("HydrologyshreveSpcwatercolumn")[0]
+def HydrologyshreveStabilizationEnum(): return StringToEnum("HydrologyshreveStabilization")[0]
+def HydrologydcEnum(): return StringToEnum("Hydrologydc")[0]
+def SedimentHeadEnum(): return StringToEnum("SedimentHead")[0]
+def SedimentHeadOldEnum(): return StringToEnum("SedimentHeadOld")[0]
+def SedimentHeadResidualEnum(): return StringToEnum("SedimentHeadResidual")[0]
+def EffectivePressureEnum(): return StringToEnum("EffectivePressure")[0]
+def EplHeadEnum(): return StringToEnum("EplHead")[0]
+def EplHeadOldEnum(): return StringToEnum("EplHeadOld")[0]
+def EplHeadSlopeXEnum(): return StringToEnum("EplHeadSlopeX")[0]
+def EplHeadSlopeYEnum(): return StringToEnum("EplHeadSlopeY")[0]
+def EplZigZagCounterEnum(): return StringToEnum("EplZigZagCounter")[0]
+def HydrologydcMaxIterEnum(): return StringToEnum("HydrologydcMaxIter")[0]
+def HydrologydcRelTolEnum(): return StringToEnum("HydrologydcRelTol")[0]
+def HydrologydcSpcsedimentHeadEnum(): return StringToEnum("HydrologydcSpcsedimentHead")[0]
+def HydrologydcSedimentCompressibilityEnum(): return StringToEnum("HydrologydcSedimentCompressibility")[0]
+def HydrologydcSedimentPorosityEnum(): return StringToEnum("HydrologydcSedimentPorosity")[0]
+def HydrologydcSedimentThicknessEnum(): return StringToEnum("HydrologydcSedimentThickness")[0]
+def HydrologydcSedimentTransmitivityEnum(): return StringToEnum("HydrologydcSedimentTransmitivity")[0]
+def HydrologydcWaterCompressibilityEnum(): return StringToEnum("HydrologydcWaterCompressibility")[0]
+def HydrologydcSpceplHeadEnum(): return StringToEnum("HydrologydcSpceplHead")[0]
+def HydrologydcMaskEplactiveNodeEnum(): return StringToEnum("HydrologydcMaskEplactiveNode")[0]
+def HydrologydcMaskEplactiveEltEnum(): return StringToEnum("HydrologydcMaskEplactiveElt")[0]
+def HydrologydcEplCompressibilityEnum(): return StringToEnum("HydrologydcEplCompressibility")[0]
+def HydrologydcEplPorosityEnum(): return StringToEnum("HydrologydcEplPorosity")[0]
+def HydrologydcEplInitialThicknessEnum(): return StringToEnum("HydrologydcEplInitialThickness")[0]
+def HydrologydcEplColapseThicknessEnum(): return StringToEnum("HydrologydcEplColapseThickness")[0]
+def HydrologydcEplMaxThicknessEnum(): return StringToEnum("HydrologydcEplMaxThickness")[0]
+def HydrologydcEplThicknessEnum(): return StringToEnum("HydrologydcEplThickness")[0]
+def HydrologydcEplThicknessOldEnum(): return StringToEnum("HydrologydcEplThicknessOld")[0]
+def HydrologydcEplThickCompEnum(): return StringToEnum("HydrologydcEplThickComp")[0]
+def HydrologydcEplConductivityEnum(): return StringToEnum("HydrologydcEplConductivity")[0]
+def HydrologydcIsefficientlayerEnum(): return StringToEnum("HydrologydcIsefficientlayer")[0]
+def HydrologydcSedimentlimitFlagEnum(): return StringToEnum("HydrologydcSedimentlimitFlag")[0]
+def HydrologydcSedimentlimitEnum(): return StringToEnum("HydrologydcSedimentlimit")[0]
+def HydrologydcTransferFlagEnum(): return StringToEnum("HydrologydcTransferFlag")[0]
+def HydrologydcLeakageFactorEnum(): return StringToEnum("HydrologydcLeakageFactor")[0]
+def HydrologydcPenaltyFactorEnum(): return StringToEnum("HydrologydcPenaltyFactor")[0]
+def HydrologydcPenaltyLockEnum(): return StringToEnum("HydrologydcPenaltyLock")[0]
+def HydrologydcEplflipLockEnum(): return StringToEnum("HydrologydcEplflipLock")[0]
+def HydrologydcBasalMoulinInputEnum(): return StringToEnum("HydrologydcBasalMoulinInput")[0]
+def HydrologyLayerEnum(): return StringToEnum("HydrologyLayer")[0]
+def HydrologySedimentEnum(): return StringToEnum("HydrologySediment")[0]
+def HydrologyEfficientEnum(): return StringToEnum("HydrologyEfficient")[0]
+def HydrologySedimentKmaxEnum(): return StringToEnum("HydrologySedimentKmax")[0]
+def HydrologysommersEnum(): return StringToEnum("Hydrologysommers")[0]
+def HydrologyHeadEnum(): return StringToEnum("HydrologyHead")[0]
+def HydrologyGapHeightEnum(): return StringToEnum("HydrologyGapHeight")[0]
+def HydrologyBumpSpacingEnum(): return StringToEnum("HydrologyBumpSpacing")[0]
+def HydrologyBumpHeightEnum(): return StringToEnum("HydrologyBumpHeight")[0]
+def HydrologyEnglacialInputEnum(): return StringToEnum("HydrologyEnglacialInput")[0]
+def HydrologyMoulinInputEnum(): return StringToEnum("HydrologyMoulinInput")[0]
+def HydrologyReynoldsEnum(): return StringToEnum("HydrologyReynolds")[0]
+def HydrologyNeumannfluxEnum(): return StringToEnum("HydrologyNeumannflux")[0]
+def HydrologySpcheadEnum(): return StringToEnum("HydrologySpchead")[0]
+def HydrologyConductivityEnum(): return StringToEnum("HydrologyConductivity")[0]
+def IndependentObjectEnum(): return StringToEnum("IndependentObject")[0]
+def InversionControlParametersEnum(): return StringToEnum("InversionControlParameters")[0]
+def InversionControlScalingFactorsEnum(): return StringToEnum("InversionControlScalingFactors")[0]
+def InversionCostFunctionThresholdEnum(): return StringToEnum("InversionCostFunctionThreshold")[0]
+def InversionCostFunctionsCoefficientsEnum(): return StringToEnum("InversionCostFunctionsCoefficients")[0]
+def InversionCostFunctionsEnum(): return StringToEnum("InversionCostFunctions")[0]
+def InversionGradientScalingEnum(): return StringToEnum("InversionGradientScaling")[0]
+def InversionIscontrolEnum(): return StringToEnum("InversionIscontrol")[0]
+def InversionTypeEnum(): return StringToEnum("InversionType")[0]
+def InversionIncompleteAdjointEnum(): return StringToEnum("InversionIncompleteAdjoint")[0]
+def InversionMaxParametersEnum(): return StringToEnum("InversionMaxParameters")[0]
+def InversionMaxiterPerStepEnum(): return StringToEnum("InversionMaxiterPerStep")[0]
+def InversionMaxiterEnum(): return StringToEnum("InversionMaxiter")[0]
+def InversionMaxstepsEnum(): return StringToEnum("InversionMaxsteps")[0]
+def InversionFatolEnum(): return StringToEnum("InversionFatol")[0]
+def InversionFrtolEnum(): return StringToEnum("InversionFrtol")[0]
+def InversionGatolEnum(): return StringToEnum("InversionGatol")[0]
+def InversionGrtolEnum(): return StringToEnum("InversionGrtol")[0]
+def InversionGttolEnum(): return StringToEnum("InversionGttol")[0]
+def InversionAlgorithmEnum(): return StringToEnum("InversionAlgorithm")[0]
+def InversionMinParametersEnum(): return StringToEnum("InversionMinParameters")[0]
+def InversionNstepsEnum(): return StringToEnum("InversionNsteps")[0]
+def InversionDxminEnum(): return StringToEnum("InversionDxmin")[0]
+def InversionNumControlParametersEnum(): return StringToEnum("InversionNumControlParameters")[0]
+def InversionNumCostFunctionsEnum(): return StringToEnum("InversionNumCostFunctions")[0]
+def InversionStepThresholdEnum(): return StringToEnum("InversionStepThreshold")[0]
+def InversionThicknessObsEnum(): return StringToEnum("InversionThicknessObs")[0]
+def InversionSurfaceObsEnum(): return StringToEnum("InversionSurfaceObs")[0]
+def InversionVxObsEnum(): return StringToEnum("InversionVxObs")[0]
+def InversionVyObsEnum(): return StringToEnum("InversionVyObs")[0]
+def InversionVzObsEnum(): return StringToEnum("InversionVzObs")[0]
+def MaskIceLevelsetEnum(): return StringToEnum("MaskIceLevelset")[0]
+def MaterialsBetaEnum(): return StringToEnum("MaterialsBeta")[0]
+def MaterialsHeatcapacityEnum(): return StringToEnum("MaterialsHeatcapacity")[0]
+def MaterialsLatentheatEnum(): return StringToEnum("MaterialsLatentheat")[0]
+def MaterialsMeltingpointEnum(): return StringToEnum("MaterialsMeltingpoint")[0]
+def MaterialsMixedLayerCapacityEnum(): return StringToEnum("MaterialsMixedLayerCapacity")[0]
+def MaterialsRheologyBEnum(): return StringToEnum("MaterialsRheologyB")[0]
+def MaterialsRheologyBbarEnum(): return StringToEnum("MaterialsRheologyBbar")[0]
+def MaterialsRheologyLawEnum(): return StringToEnum("MaterialsRheologyLaw")[0]
+def MaterialsRheologyNEnum(): return StringToEnum("MaterialsRheologyN")[0]
+def DamageIsdamageEnum(): return StringToEnum("DamageIsdamage")[0]
+def DamageDEnum(): return StringToEnum("DamageD")[0]
+def DamageFEnum(): return StringToEnum("DamageF")[0]
+def DamageDbarEnum(): return StringToEnum("DamageDbar")[0]
+def DamageLawEnum(): return StringToEnum("DamageLaw")[0]
+def DamageC1Enum(): return StringToEnum("DamageC1")[0]
+def DamageC2Enum(): return StringToEnum("DamageC2")[0]
+def DamageC3Enum(): return StringToEnum("DamageC3")[0]
+def DamageC4Enum(): return StringToEnum("DamageC4")[0]
+def DamageElementinterpEnum(): return StringToEnum("DamageElementinterp")[0]
+def DamageHealingEnum(): return StringToEnum("DamageHealing")[0]
+def DamageStressThresholdEnum(): return StringToEnum("DamageStressThreshold")[0]
+def DamageKappaEnum(): return StringToEnum("DamageKappa")[0]
+def DamageStabilizationEnum(): return StringToEnum("DamageStabilization")[0]
+def DamageMaxiterEnum(): return StringToEnum("DamageMaxiter")[0]
+def DamageSpcdamageEnum(): return StringToEnum("DamageSpcdamage")[0]
+def DamageMaxDamageEnum(): return StringToEnum("DamageMaxDamage")[0]
+def DamageEquivStressEnum(): return StringToEnum("DamageEquivStress")[0]
+def DamageEvolutionNumRequestedOutputsEnum(): return StringToEnum("DamageEvolutionNumRequestedOutputs")[0]
+def DamageEvolutionRequestedOutputsEnum(): return StringToEnum("DamageEvolutionRequestedOutputs")[0]
+def DamageEnum(): return StringToEnum("Damage")[0]
+def NewDamageEnum(): return StringToEnum("NewDamage")[0]
+def StressIntensityFactorEnum(): return StringToEnum("StressIntensityFactor")[0]
+def CalvingLawEnum(): return StringToEnum("CalvingLaw")[0]
+def CalvingCalvingrateEnum(): return StringToEnum("CalvingCalvingrate")[0]
+def CalvingMeltingrateEnum(): return StringToEnum("CalvingMeltingrate")[0]
+def CalvingLevermannEnum(): return StringToEnum("CalvingLevermann")[0]
+def CalvingPiEnum(): return StringToEnum("CalvingPi")[0]
+def CalvingDevEnum(): return StringToEnum("CalvingDev")[0]
+def DefaultCalvingEnum(): return StringToEnum("DefaultCalving")[0]
+def CalvingRequestedOutputsEnum(): return StringToEnum("CalvingRequestedOutputs")[0]
+def CalvinglevermannCoeffEnum(): return StringToEnum("CalvinglevermannCoeff")[0]
+def CalvinglevermannMeltingrateEnum(): return StringToEnum("CalvinglevermannMeltingrate")[0]
+def CalvingpiCoeffEnum(): return StringToEnum("CalvingpiCoeff")[0]
+def CalvingpiMeltingrateEnum(): return StringToEnum("CalvingpiMeltingrate")[0]
+def CalvingratexEnum(): return StringToEnum("Calvingratex")[0]
+def CalvingrateyEnum(): return StringToEnum("Calvingratey")[0]
+def CalvingratexAverageEnum(): return StringToEnum("CalvingratexAverage")[0]
+def CalvingrateyAverageEnum(): return StringToEnum("CalvingrateyAverage")[0]
+def StrainRateparallelEnum(): return StringToEnum("StrainRateparallel")[0]
+def StrainRateperpendicularEnum(): return StringToEnum("StrainRateperpendicular")[0]
+def StrainRateeffectiveEnum(): return StringToEnum("StrainRateeffective")[0]
+def MaterialsRhoIceEnum(): return StringToEnum("MaterialsRhoIce")[0]
+def MaterialsRhoSeawaterEnum(): return StringToEnum("MaterialsRhoSeawater")[0]
+def MaterialsRhoFreshwaterEnum(): return StringToEnum("MaterialsRhoFreshwater")[0]
+def MaterialsMuWaterEnum(): return StringToEnum("MaterialsMuWater")[0]
+def MaterialsThermalExchangeVelocityEnum(): return StringToEnum("MaterialsThermalExchangeVelocity")[0]
+def MaterialsThermalconductivityEnum(): return StringToEnum("MaterialsThermalconductivity")[0]
+def MaterialsTemperateiceconductivityEnum(): return StringToEnum("MaterialsTemperateiceconductivity")[0]
+def MaterialsLithosphereShearModulusEnum(): return StringToEnum("MaterialsLithosphereShearModulus")[0]
+def MaterialsLithosphereDensityEnum(): return StringToEnum("MaterialsLithosphereDensity")[0]
+def MaterialsMantleShearModulusEnum(): return StringToEnum("MaterialsMantleShearModulus")[0]
+def MaterialsMantleDensityEnum(): return StringToEnum("MaterialsMantleDensity")[0]
+def MeshAverageVertexConnectivityEnum(): return StringToEnum("MeshAverageVertexConnectivity")[0]
+def MeshElements2dEnum(): return StringToEnum("MeshElements2d")[0]
+def MeshElementsEnum(): return StringToEnum("MeshElements")[0]
+def MeshLowerelementsEnum(): return StringToEnum("MeshLowerelements")[0]
+def MeshNumberofelements2dEnum(): return StringToEnum("MeshNumberofelements2d")[0]
+def MeshNumberofelementsEnum(): return StringToEnum("MeshNumberofelements")[0]
+def MeshNumberoflayersEnum(): return StringToEnum("MeshNumberoflayers")[0]
+def MeshNumberofvertices2dEnum(): return StringToEnum("MeshNumberofvertices2d")[0]
+def MeshNumberofverticesEnum(): return StringToEnum("MeshNumberofvertices")[0]
+def MeshUpperelementsEnum(): return StringToEnum("MeshUpperelements")[0]
+def MeshVertexonbaseEnum(): return StringToEnum("MeshVertexonbase")[0]
+def MeshVertexonsurfaceEnum(): return StringToEnum("MeshVertexonsurface")[0]
+def MeshVertexonboundaryEnum(): return StringToEnum("MeshVertexonboundary")[0]
+def MeshXEnum(): return StringToEnum("MeshX")[0]
+def MeshYEnum(): return StringToEnum("MeshY")[0]
+def MeshZEnum(): return StringToEnum("MeshZ")[0]
+def MeshElementtypeEnum(): return StringToEnum("MeshElementtype")[0]
+def MeshSegmentsEnum(): return StringToEnum("MeshSegments")[0]
+def DomainTypeEnum(): return StringToEnum("DomainType")[0]
+def DomainDimensionEnum(): return StringToEnum("DomainDimension")[0]
+def Domain2DhorizontalEnum(): return StringToEnum("Domain2Dhorizontal")[0]
+def Domain2DverticalEnum(): return StringToEnum("Domain2Dvertical")[0]
+def Domain3DEnum(): return StringToEnum("Domain3D")[0]
+def MiscellaneousNameEnum(): return StringToEnum("MiscellaneousName")[0]
+def MasstransportHydrostaticAdjustmentEnum(): return StringToEnum("MasstransportHydrostaticAdjustment")[0]
+def MasstransportIsfreesurfaceEnum(): return StringToEnum("MasstransportIsfreesurface")[0]
+def MasstransportMinThicknessEnum(): return StringToEnum("MasstransportMinThickness")[0]
+def MasstransportPenaltyFactorEnum(): return StringToEnum("MasstransportPenaltyFactor")[0]
+def MasstransportSpcthicknessEnum(): return StringToEnum("MasstransportSpcthickness")[0]
+def MasstransportStabilizationEnum(): return StringToEnum("MasstransportStabilization")[0]
+def MasstransportVertexPairingEnum(): return StringToEnum("MasstransportVertexPairing")[0]
+def MasstransportNumRequestedOutputsEnum(): return StringToEnum("MasstransportNumRequestedOutputs")[0]
+def MasstransportRequestedOutputsEnum(): return StringToEnum("MasstransportRequestedOutputs")[0]
+def QmuIsdakotaEnum(): return StringToEnum("QmuIsdakota")[0]
+def MassFluxSegmentsEnum(): return StringToEnum("MassFluxSegments")[0]
+def MassFluxSegmentsPresentEnum(): return StringToEnum("MassFluxSegmentsPresent")[0]
+def QmuMassFluxSegmentsPresentEnum(): return StringToEnum("QmuMassFluxSegmentsPresent")[0]
+def QmuNumberofpartitionsEnum(): return StringToEnum("QmuNumberofpartitions")[0]
+def QmuNumberofresponsesEnum(): return StringToEnum("QmuNumberofresponses")[0]
+def QmuPartitionEnum(): return StringToEnum("QmuPartition")[0]
+def QmuResponsedescriptorsEnum(): return StringToEnum("QmuResponsedescriptors")[0]
+def QmuVariabledescriptorsEnum(): return StringToEnum("QmuVariabledescriptors")[0]
+def RiftsNumriftsEnum(): return StringToEnum("RiftsNumrifts")[0]
+def RiftsRiftstructEnum(): return StringToEnum("RiftsRiftstruct")[0]
+def SettingsResultsOnNodesEnum(): return StringToEnum("SettingsResultsOnNodes")[0]
+def SettingsIoGatherEnum(): return StringToEnum("SettingsIoGather")[0]
+def SettingsLowmemEnum(): return StringToEnum("SettingsLowmem")[0]
+def SettingsOutputFrequencyEnum(): return StringToEnum("SettingsOutputFrequency")[0]
+def SettingsRecordingFrequencyEnum(): return StringToEnum("SettingsRecordingFrequency")[0]
+def SettingsWaitonlockEnum(): return StringToEnum("SettingsWaitonlock")[0]
+def DebugProfilingEnum(): return StringToEnum("DebugProfiling")[0]
+def ProfilingCurrentMemEnum(): return StringToEnum("ProfilingCurrentMem")[0]
+def ProfilingCurrentFlopsEnum(): return StringToEnum("ProfilingCurrentFlops")[0]
+def ProfilingSolutionTimeEnum(): return StringToEnum("ProfilingSolutionTime")[0]
+def SteadystateMaxiterEnum(): return StringToEnum("SteadystateMaxiter")[0]
+def SteadystateNumRequestedOutputsEnum(): return StringToEnum("SteadystateNumRequestedOutputs")[0]
+def SteadystateReltolEnum(): return StringToEnum("SteadystateReltol")[0]
+def SteadystateRequestedOutputsEnum(): return StringToEnum("SteadystateRequestedOutputs")[0]
+def SurfaceEnum(): return StringToEnum("Surface")[0]
+def ThermalIsenthalpyEnum(): return StringToEnum("ThermalIsenthalpy")[0]
+def ThermalIsdynamicbasalspcEnum(): return StringToEnum("ThermalIsdynamicbasalspc")[0]
+def ThermalReltolEnum(): return StringToEnum("ThermalReltol")[0]
+def ThermalMaxiterEnum(): return StringToEnum("ThermalMaxiter")[0]
+def ThermalPenaltyFactorEnum(): return StringToEnum("ThermalPenaltyFactor")[0]
+def ThermalPenaltyLockEnum(): return StringToEnum("ThermalPenaltyLock")[0]
+def ThermalPenaltyThresholdEnum(): return StringToEnum("ThermalPenaltyThreshold")[0]
+def ThermalSpctemperatureEnum(): return StringToEnum("ThermalSpctemperature")[0]
+def ThermalStabilizationEnum(): return StringToEnum("ThermalStabilization")[0]
+def ThermalNumRequestedOutputsEnum(): return StringToEnum("ThermalNumRequestedOutputs")[0]
+def ThermalRequestedOutputsEnum(): return StringToEnum("ThermalRequestedOutputs")[0]
+def GiaMantleViscosityEnum(): return StringToEnum("GiaMantleViscosity")[0]
+def GiaLithosphereThicknessEnum(): return StringToEnum("GiaLithosphereThickness")[0]
+def ThicknessEnum(): return StringToEnum("Thickness")[0]
+def TimesteppingStartTimeEnum(): return StringToEnum("TimesteppingStartTime")[0]
+def TimesteppingFinalTimeEnum(): return StringToEnum("TimesteppingFinalTime")[0]
+def TimesteppingCflCoefficientEnum(): return StringToEnum("TimesteppingCflCoefficient")[0]
+def TimesteppingTimeAdaptEnum(): return StringToEnum("TimesteppingTimeAdapt")[0]
+def TimesteppingTimeStepEnum(): return StringToEnum("TimesteppingTimeStep")[0]
+def TimesteppingInterpForcingsEnum(): return StringToEnum("TimesteppingInterpForcings")[0]
+def TransientIssmbEnum(): return StringToEnum("TransientIssmb")[0]
+def TransientIsstressbalanceEnum(): return StringToEnum("TransientIsstressbalance")[0]
+def TransientIsgroundinglineEnum(): return StringToEnum("TransientIsgroundingline")[0]
+def TransientIsmasstransportEnum(): return StringToEnum("TransientIsmasstransport")[0]
+def TransientIsthermalEnum(): return StringToEnum("TransientIsthermal")[0]
+def TransientIsgiaEnum(): return StringToEnum("TransientIsgia")[0]
+def TransientIsdamageevolutionEnum(): return StringToEnum("TransientIsdamageevolution")[0]
+def TransientIshydrologyEnum(): return StringToEnum("TransientIshydrology")[0]
+def TransientIscalvingEnum(): return StringToEnum("TransientIscalving")[0]
+def TransientNumRequestedOutputsEnum(): return StringToEnum("TransientNumRequestedOutputs")[0]
+def TransientRequestedOutputsEnum(): return StringToEnum("TransientRequestedOutputs")[0]
+def PotentialEnum(): return StringToEnum("Potential")[0]
+def BalancethicknessSpcpotentialEnum(): return StringToEnum("BalancethicknessSpcpotential")[0]
+def BalancethicknessApparentMassbalanceEnum(): return StringToEnum("BalancethicknessApparentMassbalance")[0]
+def Balancethickness2MisfitEnum(): return StringToEnum("Balancethickness2Misfit")[0]
+def BalancethicknessDiffusionCoefficientEnum(): return StringToEnum("BalancethicknessDiffusionCoefficient")[0]
+def BalancethicknessCmuEnum(): return StringToEnum("BalancethicknessCmu")[0]
+def BalancethicknessOmegaEnum(): return StringToEnum("BalancethicknessOmega")[0]
+def BalancethicknessD0Enum(): return StringToEnum("BalancethicknessD0")[0]
+def SmbEnum(): return StringToEnum("Smb")[0]
+def SmbAnalysisEnum(): return StringToEnum("SmbAnalysis")[0]
+def SmbSolutionEnum(): return StringToEnum("SmbSolution")[0]
+def SmbNumRequestedOutputsEnum(): return StringToEnum("SmbNumRequestedOutputs")[0]
+def SmbRequestedOutputsEnum(): return StringToEnum("SmbRequestedOutputs")[0]
+def SmbIsInitializedEnum(): return StringToEnum("SmbIsInitialized")[0]
+def SMBforcingEnum(): return StringToEnum("SMBforcing")[0]
+def SmbMassBalanceEnum(): return StringToEnum("SmbMassBalance")[0]
+def SMBgembEnum(): return StringToEnum("SMBgemb")[0]
+def SmbInitDensityScalingEnum(): return StringToEnum("SmbInitDensityScaling")[0]
+def SmbTaEnum(): return StringToEnum("SmbTa")[0]
+def SmbVEnum(): return StringToEnum("SmbV")[0]
+def SmbDswrfEnum(): return StringToEnum("SmbDswrf")[0]
+def SmbDlwrfEnum(): return StringToEnum("SmbDlwrf")[0]
+def SmbPEnum(): return StringToEnum("SmbP")[0]
+def SmbSwfEnum(): return StringToEnum("SmbSwf")[0]
+def SmbEAirEnum(): return StringToEnum("SmbEAir")[0]
+def SmbPAirEnum(): return StringToEnum("SmbPAir")[0]
+def SmbTmeanEnum(): return StringToEnum("SmbTmean")[0]
+def SmbCEnum(): return StringToEnum("SmbC")[0]
+def SmbTzEnum(): return StringToEnum("SmbTz")[0]
+def SmbVzEnum(): return StringToEnum("SmbVz")[0]
+def SmbDtEnum(): return StringToEnum("SmbDt")[0]
+def SmbDzEnum(): return StringToEnum("SmbDz")[0]
+def SmbAIdxEnum(): return StringToEnum("SmbAIdx")[0]
+def SmbSwIdxEnum(): return StringToEnum("SmbSwIdx")[0]
+def SmbDenIdxEnum(): return StringToEnum("SmbDenIdx")[0]
+def SmbZTopEnum(): return StringToEnum("SmbZTop")[0]
+def SmbDzTopEnum(): return StringToEnum("SmbDzTop")[0]
+def SmbDzMinEnum(): return StringToEnum("SmbDzMin")[0]
+def SmbZYEnum(): return StringToEnum("SmbZY")[0]
+def SmbZMaxEnum(): return StringToEnum("SmbZMax")[0]
+def SmbZMinEnum(): return StringToEnum("SmbZMin")[0]
+def SmbOutputFreqEnum(): return StringToEnum("SmbOutputFreq")[0]
+def SmbASnowEnum(): return StringToEnum("SmbASnow")[0]
+def SmbAIceEnum(): return StringToEnum("SmbAIce")[0]
+def SmbCldFracEnum(): return StringToEnum("SmbCldFrac")[0]
+def SmbT0wetEnum(): return StringToEnum("SmbT0wet")[0]
+def SmbT0dryEnum(): return StringToEnum("SmbT0dry")[0]
+def SmbKEnum(): return StringToEnum("SmbK")[0]
+def SmbDEnum(): return StringToEnum("SmbD")[0]
+def SmbReEnum(): return StringToEnum("SmbRe")[0]
+def SmbGdnEnum(): return StringToEnum("SmbGdn")[0]
+def SmbGspEnum(): return StringToEnum("SmbGsp")[0]
+def SmbECEnum(): return StringToEnum("SmbEC")[0]
+def SmbCondensationEnum(): return StringToEnum("SmbCondensation")[0]
+def SmbWEnum(): return StringToEnum("SmbW")[0]
+def SmbAEnum(): return StringToEnum("SmbA")[0]
+def SmbTEnum(): return StringToEnum("SmbT")[0]
+def SmbIsgraingrowthEnum(): return StringToEnum("SmbIsgraingrowth")[0]
+def SmbIsalbedoEnum(): return StringToEnum("SmbIsalbedo")[0]
+def SmbIsshortwaveEnum(): return StringToEnum("SmbIsshortwave")[0]
+def SmbIsthermalEnum(): return StringToEnum("SmbIsthermal")[0]
+def SmbIsaccumulationEnum(): return StringToEnum("SmbIsaccumulation")[0]
+def SmbIsmeltEnum(): return StringToEnum("SmbIsmelt")[0]
+def SmbIsdensificationEnum(): return StringToEnum("SmbIsdensification")[0]
+def SmbIsturbulentfluxEnum(): return StringToEnum("SmbIsturbulentflux")[0]
+def SMBpddEnum(): return StringToEnum("SMBpdd")[0]
+def SmbDelta18oEnum(): return StringToEnum("SmbDelta18o")[0]
+def SmbDelta18oSurfaceEnum(): return StringToEnum("SmbDelta18oSurface")[0]
+def SmbIsdelta18oEnum(): return StringToEnum("SmbIsdelta18o")[0]
+def SmbIsmungsmEnum(): return StringToEnum("SmbIsmungsm")[0]
+def SmbIsd18opdEnum(): return StringToEnum("SmbIsd18opd")[0]
+def SmbPrecipitationsPresentdayEnum(): return StringToEnum("SmbPrecipitationsPresentday")[0]
+def SmbPrecipitationsLgmEnum(): return StringToEnum("SmbPrecipitationsLgm")[0]
+def SmbTemperaturesPresentdayEnum(): return StringToEnum("SmbTemperaturesPresentday")[0]
+def SmbTemperaturesLgmEnum(): return StringToEnum("SmbTemperaturesLgm")[0]
+def SmbPrecipitationEnum(): return StringToEnum("SmbPrecipitation")[0]
+def SmbDesfacEnum(): return StringToEnum("SmbDesfac")[0]
+def SmbS0pEnum(): return StringToEnum("SmbS0p")[0]
+def SmbS0tEnum(): return StringToEnum("SmbS0t")[0]
+def SmbRlapsEnum(): return StringToEnum("SmbRlaps")[0]
+def SmbRlapslgmEnum(): return StringToEnum("SmbRlapslgm")[0]
+def SmbPfacEnum(): return StringToEnum("SmbPfac")[0]
+def SmbTdiffEnum(): return StringToEnum("SmbTdiff")[0]
+def SmbSealevEnum(): return StringToEnum("SmbSealev")[0]
+def SMBd18opddEnum(): return StringToEnum("SMBd18opdd")[0]
+def SmbDpermilEnum(): return StringToEnum("SmbDpermil")[0]
+def SMBgradientsEnum(): return StringToEnum("SMBgradients")[0]
+def SmbMonthlytemperaturesEnum(): return StringToEnum("SmbMonthlytemperatures")[0]
+def SmbHrefEnum(): return StringToEnum("SmbHref")[0]
+def SmbSmbrefEnum(): return StringToEnum("SmbSmbref")[0]
+def SmbBPosEnum(): return StringToEnum("SmbBPos")[0]
+def SmbBNegEnum(): return StringToEnum("SmbBNeg")[0]
+def SMBhenningEnum(): return StringToEnum("SMBhenning")[0]
+def SMBcomponentsEnum(): return StringToEnum("SMBcomponents")[0]
+def SmbAccumulationEnum(): return StringToEnum("SmbAccumulation")[0]
+def SmbEvaporationEnum(): return StringToEnum("SmbEvaporation")[0]
+def SmbRunoffEnum(): return StringToEnum("SmbRunoff")[0]
+def SmbDz_addEnum(): return StringToEnum("SmbDz_add")[0]
+def SMBmeltcomponentsEnum(): return StringToEnum("SMBmeltcomponents")[0]
+def SmbMeltEnum(): return StringToEnum("SmbMelt")[0]
+def SmbRefreezeEnum(): return StringToEnum("SmbRefreeze")[0]
+def SMBgcmEnum(): return StringToEnum("SMBgcm")[0]
+def SmbIspddEnum(): return StringToEnum("SmbIspdd")[0]
+def SmbIssmbgradientsEnum(): return StringToEnum("SmbIssmbgradients")[0]
+def SolutionTypeEnum(): return StringToEnum("SolutionType")[0]
+def AnalysisTypeEnum(): return StringToEnum("AnalysisType")[0]
+def ConfigurationTypeEnum(): return StringToEnum("ConfigurationType")[0]
+def AdjointBalancethicknessAnalysisEnum(): return StringToEnum("AdjointBalancethicknessAnalysis")[0]
+def AdjointBalancethickness2AnalysisEnum(): return StringToEnum("AdjointBalancethickness2Analysis")[0]
+def AdjointHorizAnalysisEnum(): return StringToEnum("AdjointHorizAnalysis")[0]
+def AnalysisCounterEnum(): return StringToEnum("AnalysisCounter")[0]
+def DefaultAnalysisEnum(): return StringToEnum("DefaultAnalysis")[0]
+def BalancethicknessAnalysisEnum(): return StringToEnum("BalancethicknessAnalysis")[0]
+def BalancethicknessSolutionEnum(): return StringToEnum("BalancethicknessSolution")[0]
+def Balancethickness2AnalysisEnum(): return StringToEnum("Balancethickness2Analysis")[0]
+def Balancethickness2SolutionEnum(): return StringToEnum("Balancethickness2Solution")[0]
+def BalancethicknessSoftAnalysisEnum(): return StringToEnum("BalancethicknessSoftAnalysis")[0]
+def BalancethicknessSoftSolutionEnum(): return StringToEnum("BalancethicknessSoftSolution")[0]
+def BalancevelocityAnalysisEnum(): return StringToEnum("BalancevelocityAnalysis")[0]
+def BalancevelocitySolutionEnum(): return StringToEnum("BalancevelocitySolution")[0]
+def L2ProjectionEPLAnalysisEnum(): return StringToEnum("L2ProjectionEPLAnalysis")[0]
+def L2ProjectionBaseAnalysisEnum(): return StringToEnum("L2ProjectionBaseAnalysis")[0]
+def BedSlopeSolutionEnum(): return StringToEnum("BedSlopeSolution")[0]
+def DamageEvolutionSolutionEnum(): return StringToEnum("DamageEvolutionSolution")[0]
+def DamageEvolutionAnalysisEnum(): return StringToEnum("DamageEvolutionAnalysis")[0]
+def StressbalanceAnalysisEnum(): return StringToEnum("StressbalanceAnalysis")[0]
+def StressbalanceSIAAnalysisEnum(): return StringToEnum("StressbalanceSIAAnalysis")[0]
+def StressbalanceSolutionEnum(): return StringToEnum("StressbalanceSolution")[0]
+def StressbalanceVerticalAnalysisEnum(): return StringToEnum("StressbalanceVerticalAnalysis")[0]
+def EnthalpyAnalysisEnum(): return StringToEnum("EnthalpyAnalysis")[0]
+def FlaimAnalysisEnum(): return StringToEnum("FlaimAnalysis")[0]
+def FlaimSolutionEnum(): return StringToEnum("FlaimSolution")[0]
+def HydrologyShreveAnalysisEnum(): return StringToEnum("HydrologyShreveAnalysis")[0]
+def HydrologyDCInefficientAnalysisEnum(): return StringToEnum("HydrologyDCInefficientAnalysis")[0]
+def HydrologyDCEfficientAnalysisEnum(): return StringToEnum("HydrologyDCEfficientAnalysis")[0]
+def HydrologySommersAnalysisEnum(): return StringToEnum("HydrologySommersAnalysis")[0]
+def HydrologySolutionEnum(): return StringToEnum("HydrologySolution")[0]
+def MeltingAnalysisEnum(): return StringToEnum("MeltingAnalysis")[0]
+def MasstransportAnalysisEnum(): return StringToEnum("MasstransportAnalysis")[0]
+def MasstransportSolutionEnum(): return StringToEnum("MasstransportSolution")[0]
+def FreeSurfaceBaseAnalysisEnum(): return StringToEnum("FreeSurfaceBaseAnalysis")[0]
+def FreeSurfaceTopAnalysisEnum(): return StringToEnum("FreeSurfaceTopAnalysis")[0]
+def SurfaceNormalVelocityEnum(): return StringToEnum("SurfaceNormalVelocity")[0]
+def ExtrudeFromBaseAnalysisEnum(): return StringToEnum("ExtrudeFromBaseAnalysis")[0]
+def ExtrudeFromTopAnalysisEnum(): return StringToEnum("ExtrudeFromTopAnalysis")[0]
+def DepthAverageAnalysisEnum(): return StringToEnum("DepthAverageAnalysis")[0]
+def SteadystateSolutionEnum(): return StringToEnum("SteadystateSolution")[0]
+def SurfaceSlopeSolutionEnum(): return StringToEnum("SurfaceSlopeSolution")[0]
+def SmoothAnalysisEnum(): return StringToEnum("SmoothAnalysis")[0]
+def ThermalAnalysisEnum(): return StringToEnum("ThermalAnalysis")[0]
+def ThermalSolutionEnum(): return StringToEnum("ThermalSolution")[0]
+def TransientSolutionEnum(): return StringToEnum("TransientSolution")[0]
+def UzawaPressureAnalysisEnum(): return StringToEnum("UzawaPressureAnalysis")[0]
+def GiaSolutionEnum(): return StringToEnum("GiaSolution")[0]
+def GiaAnalysisEnum(): return StringToEnum("GiaAnalysis")[0]
+def MeshdeformationSolutionEnum(): return StringToEnum("MeshdeformationSolution")[0]
+def MeshdeformationAnalysisEnum(): return StringToEnum("MeshdeformationAnalysis")[0]
+def LevelsetAnalysisEnum(): return StringToEnum("LevelsetAnalysis")[0]
+def LevelsetStabilizationEnum(): return StringToEnum("LevelsetStabilization")[0]
+def ExtrapolationAnalysisEnum(): return StringToEnum("ExtrapolationAnalysis")[0]
+def LsfReinitializationAnalysisEnum(): return StringToEnum("LsfReinitializationAnalysis")[0]
+def ApproximationEnum(): return StringToEnum("Approximation")[0]
+def NoneApproximationEnum(): return StringToEnum("NoneApproximation")[0]
+def SIAApproximationEnum(): return StringToEnum("SIAApproximation")[0]
+def SSAApproximationEnum(): return StringToEnum("SSAApproximation")[0]
+def SSAHOApproximationEnum(): return StringToEnum("SSAHOApproximation")[0]
+def SSAFSApproximationEnum(): return StringToEnum("SSAFSApproximation")[0]
+def L1L2ApproximationEnum(): return StringToEnum("L1L2Approximation")[0]
+def HOApproximationEnum(): return StringToEnum("HOApproximation")[0]
+def HOFSApproximationEnum(): return StringToEnum("HOFSApproximation")[0]
+def FSApproximationEnum(): return StringToEnum("FSApproximation")[0]
+def FSvelocityEnum(): return StringToEnum("FSvelocity")[0]
+def FSpressureEnum(): return StringToEnum("FSpressure")[0]
+def DataSetEnum(): return StringToEnum("DataSet")[0]
+def ConstraintsEnum(): return StringToEnum("Constraints")[0]
+def LoadsEnum(): return StringToEnum("Loads")[0]
+def MaterialsEnum(): return StringToEnum("Materials")[0]
+def NodesEnum(): return StringToEnum("Nodes")[0]
+def ContoursEnum(): return StringToEnum("Contours")[0]
+def ParametersEnum(): return StringToEnum("Parameters")[0]
+def VerticesEnum(): return StringToEnum("Vertices")[0]
+def ResultsEnum(): return StringToEnum("Results")[0]
+def GenericParamEnum(): return StringToEnum("GenericParam")[0]
+def AdolcParamEnum(): return StringToEnum("AdolcParam")[0]
+def BoolInputEnum(): return StringToEnum("BoolInput")[0]
+def BoolParamEnum(): return StringToEnum("BoolParam")[0]
+def ContourEnum(): return StringToEnum("Contour")[0]
+def ControlInputEnum(): return StringToEnum("ControlInput")[0]
+def DatasetInputEnum(): return StringToEnum("DatasetInput")[0]
+def DoubleInputEnum(): return StringToEnum("DoubleInput")[0]
+def DoubleArrayInputEnum(): return StringToEnum("DoubleArrayInput")[0]
+def DataSetParamEnum(): return StringToEnum("DataSetParam")[0]
+def DoubleMatArrayParamEnum(): return StringToEnum("DoubleMatArrayParam")[0]
+def DoubleMatParamEnum(): return StringToEnum("DoubleMatParam")[0]
+def DoubleParamEnum(): return StringToEnum("DoubleParam")[0]
+def DoubleVecParamEnum(): return StringToEnum("DoubleVecParam")[0]
+def ElementEnum(): return StringToEnum("Element")[0]
+def ElementHookEnum(): return StringToEnum("ElementHook")[0]
+def HookEnum(): return StringToEnum("Hook")[0]
+def ExternalResultEnum(): return StringToEnum("ExternalResult")[0]
+def FileParamEnum(): return StringToEnum("FileParam")[0]
+def InputEnum(): return StringToEnum("Input")[0]
+def IntInputEnum(): return StringToEnum("IntInput")[0]
+def InputToExtrudeEnum(): return StringToEnum("InputToExtrude")[0]
+def InputToL2ProjectEnum(): return StringToEnum("InputToL2Project")[0]
+def InputToDepthaverageEnum(): return StringToEnum("InputToDepthaverage")[0]
+def InputToSmoothEnum(): return StringToEnum("InputToSmooth")[0]
+def SmoothThicknessMultiplierEnum(): return StringToEnum("SmoothThicknessMultiplier")[0]
+def IntParamEnum(): return StringToEnum("IntParam")[0]
+def IntVecParamEnum(): return StringToEnum("IntVecParam")[0]
+def TransientParamEnum(): return StringToEnum("TransientParam")[0]
+def MaticeEnum(): return StringToEnum("Matice")[0]
+def MatdamageiceEnum(): return StringToEnum("Matdamageice")[0]
+def MatparEnum(): return StringToEnum("Matpar")[0]
+def NodeEnum(): return StringToEnum("Node")[0]
+def NumericalfluxEnum(): return StringToEnum("Numericalflux")[0]
+def NumericalfluxTypeEnum(): return StringToEnum("NumericalfluxType")[0]
+def NeumannfluxEnum(): return StringToEnum("Neumannflux")[0]
+def ParamEnum(): return StringToEnum("Param")[0]
+def MoulinEnum(): return StringToEnum("Moulin")[0]
+def PengridEnum(): return StringToEnum("Pengrid")[0]
+def PenpairEnum(): return StringToEnum("Penpair")[0]
+def ProfilerEnum(): return StringToEnum("Profiler")[0]
+def MatrixParamEnum(): return StringToEnum("MatrixParam")[0]
+def MassconEnum(): return StringToEnum("Masscon")[0]
+def MassconNameEnum(): return StringToEnum("MassconName")[0]
+def MassconDefinitionenumEnum(): return StringToEnum("MassconDefinitionenum")[0]
+def MassconLevelsetEnum(): return StringToEnum("MassconLevelset")[0]
+def MassconaxpbyEnum(): return StringToEnum("Massconaxpby")[0]
+def MassconaxpbyNameEnum(): return StringToEnum("MassconaxpbyName")[0]
+def MassconaxpbyDefinitionenumEnum(): return StringToEnum("MassconaxpbyDefinitionenum")[0]
+def MassconaxpbyNamexEnum(): return StringToEnum("MassconaxpbyNamex")[0]
+def MassconaxpbyNameyEnum(): return StringToEnum("MassconaxpbyNamey")[0]
+def MassconaxpbyAlphaEnum(): return StringToEnum("MassconaxpbyAlpha")[0]
+def MassconaxpbyBetaEnum(): return StringToEnum("MassconaxpbyBeta")[0]
+def NodeSIdEnum(): return StringToEnum("NodeSId")[0]
+def VectorParamEnum(): return StringToEnum("VectorParam")[0]
+def RiftfrontEnum(): return StringToEnum("Riftfront")[0]
+def RiftfrontTypeEnum(): return StringToEnum("RiftfrontType")[0]
+def SegmentEnum(): return StringToEnum("Segment")[0]
+def SegmentRiftfrontEnum(): return StringToEnum("SegmentRiftfront")[0]
+def SpcDynamicEnum(): return StringToEnum("SpcDynamic")[0]
+def SpcStaticEnum(): return StringToEnum("SpcStatic")[0]
+def SpcTransientEnum(): return StringToEnum("SpcTransient")[0]
+def StringArrayParamEnum(): return StringToEnum("StringArrayParam")[0]
+def StringParamEnum(): return StringToEnum("StringParam")[0]
+def SegEnum(): return StringToEnum("Seg")[0]
+def SegInputEnum(): return StringToEnum("SegInput")[0]
+def TriaEnum(): return StringToEnum("Tria")[0]
+def TriaInputEnum(): return StringToEnum("TriaInput")[0]
+def TetraEnum(): return StringToEnum("Tetra")[0]
+def TetraInputEnum(): return StringToEnum("TetraInput")[0]
+def PentaEnum(): return StringToEnum("Penta")[0]
+def PentaInputEnum(): return StringToEnum("PentaInput")[0]
+def VertexEnum(): return StringToEnum("Vertex")[0]
+def VertexPIdEnum(): return StringToEnum("VertexPId")[0]
+def VertexSIdEnum(): return StringToEnum("VertexSId")[0]
+def AirEnum(): return StringToEnum("Air")[0]
+def IceEnum(): return StringToEnum("Ice")[0]
+def MelangeEnum(): return StringToEnum("Melange")[0]
+def WaterEnum(): return StringToEnum("Water")[0]
+def ClosedEnum(): return StringToEnum("Closed")[0]
+def FreeEnum(): return StringToEnum("Free")[0]
+def OpenEnum(): return StringToEnum("Open")[0]
+def AdjointpEnum(): return StringToEnum("Adjointp")[0]
+def AdjointxEnum(): return StringToEnum("Adjointx")[0]
+def AdjointyEnum(): return StringToEnum("Adjointy")[0]
+def AdjointzEnum(): return StringToEnum("Adjointz")[0]
+def BalancethicknessMisfitEnum(): return StringToEnum("BalancethicknessMisfit")[0]
+def BedSlopeXEnum(): return StringToEnum("BedSlopeX")[0]
+def BedSlopeYEnum(): return StringToEnum("BedSlopeY")[0]
+def BoundaryEnum(): return StringToEnum("Boundary")[0]
+def ConvergedEnum(): return StringToEnum("Converged")[0]
+def FillEnum(): return StringToEnum("Fill")[0]
+def FractionIncrementEnum(): return StringToEnum("FractionIncrement")[0]
+def FrictionEnum(): return StringToEnum("Friction")[0]
+def InternalEnum(): return StringToEnum("Internal")[0]
+def MassFluxEnum(): return StringToEnum("MassFlux")[0]
+def MeltingOffsetEnum(): return StringToEnum("MeltingOffset")[0]
+def MisfitEnum(): return StringToEnum("Misfit")[0]
+def PressureEnum(): return StringToEnum("Pressure")[0]
+def PressurePicardEnum(): return StringToEnum("PressurePicard")[0]
+def AndroidFrictionCoefficientEnum(): return StringToEnum("AndroidFrictionCoefficient")[0]
+def ResetPenaltiesEnum(): return StringToEnum("ResetPenalties")[0]
+def SegmentOnIceShelfEnum(): return StringToEnum("SegmentOnIceShelf")[0]
+def SurfaceAbsVelMisfitEnum(): return StringToEnum("SurfaceAbsVelMisfit")[0]
+def SurfaceAreaEnum(): return StringToEnum("SurfaceArea")[0]
+def SurfaceAverageVelMisfitEnum(): return StringToEnum("SurfaceAverageVelMisfit")[0]
+def SurfaceLogVelMisfitEnum(): return StringToEnum("SurfaceLogVelMisfit")[0]
+def SurfaceLogVxVyMisfitEnum(): return StringToEnum("SurfaceLogVxVyMisfit")[0]
+def SurfaceRelVelMisfitEnum(): return StringToEnum("SurfaceRelVelMisfit")[0]
+def SurfaceSlopeXEnum(): return StringToEnum("SurfaceSlopeX")[0]
+def SurfaceSlopeYEnum(): return StringToEnum("SurfaceSlopeY")[0]
+def TemperatureEnum(): return StringToEnum("Temperature")[0]
+def TemperaturePicardEnum(): return StringToEnum("TemperaturePicard")[0]
+def TemperaturePDDEnum(): return StringToEnum("TemperaturePDD")[0]
+def ThicknessAbsMisfitEnum(): return StringToEnum("ThicknessAbsMisfit")[0]
+def SurfaceAbsMisfitEnum(): return StringToEnum("SurfaceAbsMisfit")[0]
+def VelEnum(): return StringToEnum("Vel")[0]
+def VelocityEnum(): return StringToEnum("Velocity")[0]
+def VxAverageEnum(): return StringToEnum("VxAverage")[0]
+def VxEnum(): return StringToEnum("Vx")[0]
+def VxPicardEnum(): return StringToEnum("VxPicard")[0]
+def VyAverageEnum(): return StringToEnum("VyAverage")[0]
+def VyEnum(): return StringToEnum("Vy")[0]
+def VyPicardEnum(): return StringToEnum("VyPicard")[0]
+def VzEnum(): return StringToEnum("Vz")[0]
+def VzSSAEnum(): return StringToEnum("VzSSA")[0]
+def VzHOEnum(): return StringToEnum("VzHO")[0]
+def VzPicardEnum(): return StringToEnum("VzPicard")[0]
+def VzFSEnum(): return StringToEnum("VzFS")[0]
+def VxMeshEnum(): return StringToEnum("VxMesh")[0]
+def VyMeshEnum(): return StringToEnum("VyMesh")[0]
+def VzMeshEnum(): return StringToEnum("VzMesh")[0]
+def EnthalpyEnum(): return StringToEnum("Enthalpy")[0]
+def EnthalpyPicardEnum(): return StringToEnum("EnthalpyPicard")[0]
+def ThicknessAbsGradientEnum(): return StringToEnum("ThicknessAbsGradient")[0]
+def ThicknessAlongGradientEnum(): return StringToEnum("ThicknessAlongGradient")[0]
+def ThicknessAcrossGradientEnum(): return StringToEnum("ThicknessAcrossGradient")[0]
+def IntMatParamEnum(): return StringToEnum("IntMatParam")[0]
+def RheologyBbarAbsGradientEnum(): return StringToEnum("RheologyBbarAbsGradient")[0]
+def RheologyBAbsGradientEnum(): return StringToEnum("RheologyBAbsGradient")[0]
+def DragCoefficientAbsGradientEnum(): return StringToEnum("DragCoefficientAbsGradient")[0]
+def TransientInputEnum(): return StringToEnum("TransientInput")[0]
+def WaterfractionEnum(): return StringToEnum("Waterfraction")[0]
+def WatercolumnEnum(): return StringToEnum("Watercolumn")[0]
+def BasalFrictionEnum(): return StringToEnum("BasalFriction")[0]
+def ViscousHeatingEnum(): return StringToEnum("ViscousHeating")[0]
+def HydrologyWaterVxEnum(): return StringToEnum("HydrologyWaterVx")[0]
+def HydrologyWaterVyEnum(): return StringToEnum("HydrologyWaterVy")[0]
+def DrivingStressXEnum(): return StringToEnum("DrivingStressX")[0]
+def DrivingStressYEnum(): return StringToEnum("DrivingStressY")[0]
+def SigmaNNEnum(): return StringToEnum("SigmaNN")[0]
+def StressTensorEnum(): return StringToEnum("StressTensor")[0]
+def StressTensorxxEnum(): return StringToEnum("StressTensorxx")[0]
+def StressTensorxyEnum(): return StringToEnum("StressTensorxy")[0]
+def StressTensorxzEnum(): return StringToEnum("StressTensorxz")[0]
+def StressTensoryyEnum(): return StringToEnum("StressTensoryy")[0]
+def StressTensoryzEnum(): return StringToEnum("StressTensoryz")[0]
+def StressTensorzzEnum(): return StringToEnum("StressTensorzz")[0]
+def StressMaxPrincipalEnum(): return StringToEnum("StressMaxPrincipal")[0]
+def DeviatoricStressEnum(): return StringToEnum("DeviatoricStress")[0]
+def DeviatoricStressxxEnum(): return StringToEnum("DeviatoricStressxx")[0]
+def DeviatoricStressxyEnum(): return StringToEnum("DeviatoricStressxy")[0]
+def DeviatoricStressxzEnum(): return StringToEnum("DeviatoricStressxz")[0]
+def DeviatoricStressyyEnum(): return StringToEnum("DeviatoricStressyy")[0]
+def DeviatoricStressyzEnum(): return StringToEnum("DeviatoricStressyz")[0]
+def DeviatoricStresszzEnum(): return StringToEnum("DeviatoricStresszz")[0]
+def DeviatoricStresseffectiveEnum(): return StringToEnum("DeviatoricStresseffective")[0]
+def StrainRateEnum(): return StringToEnum("StrainRate")[0]
+def StrainRatexxEnum(): return StringToEnum("StrainRatexx")[0]
+def StrainRatexyEnum(): return StringToEnum("StrainRatexy")[0]
+def StrainRatexzEnum(): return StringToEnum("StrainRatexz")[0]
+def StrainRateyyEnum(): return StringToEnum("StrainRateyy")[0]
+def StrainRateyzEnum(): return StringToEnum("StrainRateyz")[0]
+def StrainRatezzEnum(): return StringToEnum("StrainRatezz")[0]
+def DivergenceEnum(): return StringToEnum("Divergence")[0]
+def MaxDivergenceEnum(): return StringToEnum("MaxDivergence")[0]
+def GiaCrossSectionShapeEnum(): return StringToEnum("GiaCrossSectionShape")[0]
+def GiadWdtEnum(): return StringToEnum("GiadWdt")[0]
+def GiaWEnum(): return StringToEnum("GiaW")[0]
+def P0Enum(): return StringToEnum("P0")[0]
+def P0ArrayEnum(): return StringToEnum("P0Array")[0]
+def P1Enum(): return StringToEnum("P1")[0]
+def P1DGEnum(): return StringToEnum("P1DG")[0]
+def P1bubbleEnum(): return StringToEnum("P1bubble")[0]
+def P1bubblecondensedEnum(): return StringToEnum("P1bubblecondensed")[0]
+def P2Enum(): return StringToEnum("P2")[0]
+def P2bubbleEnum(): return StringToEnum("P2bubble")[0]
+def P2bubblecondensedEnum(): return StringToEnum("P2bubblecondensed")[0]
+def P2xP1Enum(): return StringToEnum("P2xP1")[0]
+def P1xP2Enum(): return StringToEnum("P1xP2")[0]
+def P1xP3Enum(): return StringToEnum("P1xP3")[0]
+def P2xP4Enum(): return StringToEnum("P2xP4")[0]
+def P1P1Enum(): return StringToEnum("P1P1")[0]
+def P1P1GLSEnum(): return StringToEnum("P1P1GLS")[0]
+def MINIEnum(): return StringToEnum("MINI")[0]
+def MINIcondensedEnum(): return StringToEnum("MINIcondensed")[0]
+def TaylorHoodEnum(): return StringToEnum("TaylorHood")[0]
+def LATaylorHoodEnum(): return StringToEnum("LATaylorHood")[0]
+def XTaylorHoodEnum(): return StringToEnum("XTaylorHood")[0]
+def OneLayerP4zEnum(): return StringToEnum("OneLayerP4z")[0]
+def CrouzeixRaviartEnum(): return StringToEnum("CrouzeixRaviart")[0]
+def LACrouzeixRaviartEnum(): return StringToEnum("LACrouzeixRaviart")[0]
+def SaveResultsEnum(): return StringToEnum("SaveResults")[0]
+def BoolExternalResultEnum(): return StringToEnum("BoolExternalResult")[0]
+def DoubleExternalResultEnum(): return StringToEnum("DoubleExternalResult")[0]
+def DoubleMatExternalResultEnum(): return StringToEnum("DoubleMatExternalResult")[0]
+def IntExternalResultEnum(): return StringToEnum("IntExternalResult")[0]
+def JEnum(): return StringToEnum("J")[0]
+def StringExternalResultEnum(): return StringToEnum("StringExternalResult")[0]
+def StepEnum(): return StringToEnum("Step")[0]
+def TimeEnum(): return StringToEnum("Time")[0]
+def WaterColumnOldEnum(): return StringToEnum("WaterColumnOld")[0]
+def OutputdefinitionEnum(): return StringToEnum("Outputdefinition")[0]
+def Outputdefinition1Enum(): return StringToEnum("Outputdefinition1")[0]
+def Outputdefinition2Enum(): return StringToEnum("Outputdefinition2")[0]
+def Outputdefinition3Enum(): return StringToEnum("Outputdefinition3")[0]
+def Outputdefinition4Enum(): return StringToEnum("Outputdefinition4")[0]
+def Outputdefinition5Enum(): return StringToEnum("Outputdefinition5")[0]
+def Outputdefinition6Enum(): return StringToEnum("Outputdefinition6")[0]
+def Outputdefinition7Enum(): return StringToEnum("Outputdefinition7")[0]
+def Outputdefinition8Enum(): return StringToEnum("Outputdefinition8")[0]
+def Outputdefinition9Enum(): return StringToEnum("Outputdefinition9")[0]
+def Outputdefinition10Enum(): return StringToEnum("Outputdefinition10")[0]
+def Outputdefinition11Enum(): return StringToEnum("Outputdefinition11")[0]
+def Outputdefinition12Enum(): return StringToEnum("Outputdefinition12")[0]
+def Outputdefinition13Enum(): return StringToEnum("Outputdefinition13")[0]
+def Outputdefinition14Enum(): return StringToEnum("Outputdefinition14")[0]
+def Outputdefinition15Enum(): return StringToEnum("Outputdefinition15")[0]
+def Outputdefinition16Enum(): return StringToEnum("Outputdefinition16")[0]
+def Outputdefinition17Enum(): return StringToEnum("Outputdefinition17")[0]
+def Outputdefinition18Enum(): return StringToEnum("Outputdefinition18")[0]
+def Outputdefinition19Enum(): return StringToEnum("Outputdefinition19")[0]
+def Outputdefinition20Enum(): return StringToEnum("Outputdefinition20")[0]
+def Outputdefinition21Enum(): return StringToEnum("Outputdefinition21")[0]
+def Outputdefinition22Enum(): return StringToEnum("Outputdefinition22")[0]
+def Outputdefinition23Enum(): return StringToEnum("Outputdefinition23")[0]
+def Outputdefinition24Enum(): return StringToEnum("Outputdefinition24")[0]
+def Outputdefinition25Enum(): return StringToEnum("Outputdefinition25")[0]
+def Outputdefinition26Enum(): return StringToEnum("Outputdefinition26")[0]
+def Outputdefinition27Enum(): return StringToEnum("Outputdefinition27")[0]
+def Outputdefinition28Enum(): return StringToEnum("Outputdefinition28")[0]
+def Outputdefinition29Enum(): return StringToEnum("Outputdefinition29")[0]
+def Outputdefinition30Enum(): return StringToEnum("Outputdefinition30")[0]
+def Outputdefinition31Enum(): return StringToEnum("Outputdefinition31")[0]
+def Outputdefinition32Enum(): return StringToEnum("Outputdefinition32")[0]
+def Outputdefinition33Enum(): return StringToEnum("Outputdefinition33")[0]
+def Outputdefinition34Enum(): return StringToEnum("Outputdefinition34")[0]
+def Outputdefinition35Enum(): return StringToEnum("Outputdefinition35")[0]
+def Outputdefinition36Enum(): return StringToEnum("Outputdefinition36")[0]
+def Outputdefinition37Enum(): return StringToEnum("Outputdefinition37")[0]
+def Outputdefinition38Enum(): return StringToEnum("Outputdefinition38")[0]
+def Outputdefinition39Enum(): return StringToEnum("Outputdefinition39")[0]
+def Outputdefinition40Enum(): return StringToEnum("Outputdefinition40")[0]
+def Outputdefinition41Enum(): return StringToEnum("Outputdefinition41")[0]
+def Outputdefinition42Enum(): return StringToEnum("Outputdefinition42")[0]
+def Outputdefinition43Enum(): return StringToEnum("Outputdefinition43")[0]
+def Outputdefinition44Enum(): return StringToEnum("Outputdefinition44")[0]
+def Outputdefinition45Enum(): return StringToEnum("Outputdefinition45")[0]
+def Outputdefinition46Enum(): return StringToEnum("Outputdefinition46")[0]
+def Outputdefinition47Enum(): return StringToEnum("Outputdefinition47")[0]
+def Outputdefinition48Enum(): return StringToEnum("Outputdefinition48")[0]
+def Outputdefinition49Enum(): return StringToEnum("Outputdefinition49")[0]
+def Outputdefinition50Enum(): return StringToEnum("Outputdefinition50")[0]
+def Outputdefinition51Enum(): return StringToEnum("Outputdefinition51")[0]
+def Outputdefinition52Enum(): return StringToEnum("Outputdefinition52")[0]
+def Outputdefinition53Enum(): return StringToEnum("Outputdefinition53")[0]
+def Outputdefinition54Enum(): return StringToEnum("Outputdefinition54")[0]
+def Outputdefinition55Enum(): return StringToEnum("Outputdefinition55")[0]
+def Outputdefinition56Enum(): return StringToEnum("Outputdefinition56")[0]
+def Outputdefinition57Enum(): return StringToEnum("Outputdefinition57")[0]
+def Outputdefinition58Enum(): return StringToEnum("Outputdefinition58")[0]
+def Outputdefinition59Enum(): return StringToEnum("Outputdefinition59")[0]
+def Outputdefinition60Enum(): return StringToEnum("Outputdefinition60")[0]
+def Outputdefinition61Enum(): return StringToEnum("Outputdefinition61")[0]
+def Outputdefinition62Enum(): return StringToEnum("Outputdefinition62")[0]
+def Outputdefinition63Enum(): return StringToEnum("Outputdefinition63")[0]
+def Outputdefinition64Enum(): return StringToEnum("Outputdefinition64")[0]
+def Outputdefinition65Enum(): return StringToEnum("Outputdefinition65")[0]
+def Outputdefinition66Enum(): return StringToEnum("Outputdefinition66")[0]
+def Outputdefinition67Enum(): return StringToEnum("Outputdefinition67")[0]
+def Outputdefinition68Enum(): return StringToEnum("Outputdefinition68")[0]
+def Outputdefinition69Enum(): return StringToEnum("Outputdefinition69")[0]
+def Outputdefinition70Enum(): return StringToEnum("Outputdefinition70")[0]
+def Outputdefinition71Enum(): return StringToEnum("Outputdefinition71")[0]
+def Outputdefinition72Enum(): return StringToEnum("Outputdefinition72")[0]
+def Outputdefinition73Enum(): return StringToEnum("Outputdefinition73")[0]
+def Outputdefinition74Enum(): return StringToEnum("Outputdefinition74")[0]
+def Outputdefinition75Enum(): return StringToEnum("Outputdefinition75")[0]
+def Outputdefinition76Enum(): return StringToEnum("Outputdefinition76")[0]
+def Outputdefinition77Enum(): return StringToEnum("Outputdefinition77")[0]
+def Outputdefinition78Enum(): return StringToEnum("Outputdefinition78")[0]
+def Outputdefinition79Enum(): return StringToEnum("Outputdefinition79")[0]
+def Outputdefinition80Enum(): return StringToEnum("Outputdefinition80")[0]
+def Outputdefinition81Enum(): return StringToEnum("Outputdefinition81")[0]
+def Outputdefinition82Enum(): return StringToEnum("Outputdefinition82")[0]
+def Outputdefinition83Enum(): return StringToEnum("Outputdefinition83")[0]
+def Outputdefinition84Enum(): return StringToEnum("Outputdefinition84")[0]
+def Outputdefinition85Enum(): return StringToEnum("Outputdefinition85")[0]
+def Outputdefinition86Enum(): return StringToEnum("Outputdefinition86")[0]
+def Outputdefinition87Enum(): return StringToEnum("Outputdefinition87")[0]
+def Outputdefinition88Enum(): return StringToEnum("Outputdefinition88")[0]
+def Outputdefinition89Enum(): return StringToEnum("Outputdefinition89")[0]
+def Outputdefinition90Enum(): return StringToEnum("Outputdefinition90")[0]
+def Outputdefinition91Enum(): return StringToEnum("Outputdefinition91")[0]
+def Outputdefinition92Enum(): return StringToEnum("Outputdefinition92")[0]
+def Outputdefinition93Enum(): return StringToEnum("Outputdefinition93")[0]
+def Outputdefinition94Enum(): return StringToEnum("Outputdefinition94")[0]
+def Outputdefinition95Enum(): return StringToEnum("Outputdefinition95")[0]
+def Outputdefinition96Enum(): return StringToEnum("Outputdefinition96")[0]
+def Outputdefinition97Enum(): return StringToEnum("Outputdefinition97")[0]
+def Outputdefinition98Enum(): return StringToEnum("Outputdefinition98")[0]
+def Outputdefinition99Enum(): return StringToEnum("Outputdefinition99")[0]
+def Outputdefinition100Enum(): return StringToEnum("Outputdefinition100")[0]
+def OutputdefinitionListEnum(): return StringToEnum("OutputdefinitionList")[0]
+def MassfluxatgateEnum(): return StringToEnum("Massfluxatgate")[0]
+def MassfluxatgateNameEnum(): return StringToEnum("MassfluxatgateName")[0]
+def MassfluxatgateDefinitionenumEnum(): return StringToEnum("MassfluxatgateDefinitionenum")[0]
+def MassfluxatgateSegmentsEnum(): return StringToEnum("MassfluxatgateSegments")[0]
+def MisfitNameEnum(): return StringToEnum("MisfitName")[0]
+def MisfitDefinitionenumEnum(): return StringToEnum("MisfitDefinitionenum")[0]
+def MisfitModelEnumEnum(): return StringToEnum("MisfitModelEnum")[0]
+def MisfitObservationEnum(): return StringToEnum("MisfitObservation")[0]
+def MisfitObservationEnumEnum(): return StringToEnum("MisfitObservationEnum")[0]
+def MisfitLocalEnum(): return StringToEnum("MisfitLocal")[0]
+def MisfitTimeinterpolationEnum(): return StringToEnum("MisfitTimeinterpolation")[0]
+def MisfitWeightsEnum(): return StringToEnum("MisfitWeights")[0]
+def MisfitWeightsEnumEnum(): return StringToEnum("MisfitWeightsEnum")[0]
+def SurfaceObservationEnum(): return StringToEnum("SurfaceObservation")[0]
+def WeightsSurfaceObservationEnum(): return StringToEnum("WeightsSurfaceObservation")[0]
+def VxObsEnum(): return StringToEnum("VxObs")[0]
+def WeightsVxObsEnum(): return StringToEnum("WeightsVxObs")[0]
+def VyObsEnum(): return StringToEnum("VyObs")[0]
+def WeightsVyObsEnum(): return StringToEnum("WeightsVyObs")[0]
+def MinVelEnum(): return StringToEnum("MinVel")[0]
+def MaxVelEnum(): return StringToEnum("MaxVel")[0]
+def MinVxEnum(): return StringToEnum("MinVx")[0]
+def MaxVxEnum(): return StringToEnum("MaxVx")[0]
+def MaxAbsVxEnum(): return StringToEnum("MaxAbsVx")[0]
+def MinVyEnum(): return StringToEnum("MinVy")[0]
+def MaxVyEnum(): return StringToEnum("MaxVy")[0]
+def MaxAbsVyEnum(): return StringToEnum("MaxAbsVy")[0]
+def MinVzEnum(): return StringToEnum("MinVz")[0]
+def MaxVzEnum(): return StringToEnum("MaxVz")[0]
+def MaxAbsVzEnum(): return StringToEnum("MaxAbsVz")[0]
+def FloatingAreaEnum(): return StringToEnum("FloatingArea")[0]
+def GroundedAreaEnum(): return StringToEnum("GroundedArea")[0]
+def IceMassEnum(): return StringToEnum("IceMass")[0]
+def IceVolumeEnum(): return StringToEnum("IceVolume")[0]
+def IceVolumeAboveFloatationEnum(): return StringToEnum("IceVolumeAboveFloatation")[0]
+def TotalSmbEnum(): return StringToEnum("TotalSmb")[0]
+def AbsoluteEnum(): return StringToEnum("Absolute")[0]
+def IncrementalEnum(): return StringToEnum("Incremental")[0]
+def AugmentedLagrangianREnum(): return StringToEnum("AugmentedLagrangianR")[0]
+def AugmentedLagrangianRhopEnum(): return StringToEnum("AugmentedLagrangianRhop")[0]
+def AugmentedLagrangianRlambdaEnum(): return StringToEnum("AugmentedLagrangianRlambda")[0]
+def AugmentedLagrangianRholambdaEnum(): return StringToEnum("AugmentedLagrangianRholambda")[0]
+def AugmentedLagrangianThetaEnum(): return StringToEnum("AugmentedLagrangianTheta")[0]
+def NoneEnum(): return StringToEnum("None")[0]
+def AggressiveMigrationEnum(): return StringToEnum("AggressiveMigration")[0]
+def SoftMigrationEnum(): return StringToEnum("SoftMigration")[0]
+def SubelementMigrationEnum(): return StringToEnum("SubelementMigration")[0]
+def SubelementMigration2Enum(): return StringToEnum("SubelementMigration2")[0]
+def ContactEnum(): return StringToEnum("Contact")[0]
+def GroundingOnlyEnum(): return StringToEnum("GroundingOnly")[0]
+def MaskGroundediceLevelsetEnum(): return StringToEnum("MaskGroundediceLevelset")[0]
+def GaussSegEnum(): return StringToEnum("GaussSeg")[0]
+def GaussTriaEnum(): return StringToEnum("GaussTria")[0]
+def GaussTetraEnum(): return StringToEnum("GaussTetra")[0]
+def GaussPentaEnum(): return StringToEnum("GaussPenta")[0]
+def FSSolverEnum(): return StringToEnum("FSSolver")[0]
+def AdjointEnum(): return StringToEnum("Adjoint")[0]
+def ColinearEnum(): return StringToEnum("Colinear")[0]
+def ControlSteadyEnum(): return StringToEnum("ControlSteady")[0]
+def FsetEnum(): return StringToEnum("Fset")[0]
+def Gradient1Enum(): return StringToEnum("Gradient1")[0]
+def Gradient2Enum(): return StringToEnum("Gradient2")[0]
+def Gradient3Enum(): return StringToEnum("Gradient3")[0]
+def GradientEnum(): return StringToEnum("Gradient")[0]
+def GroundinglineMigrationEnum(): return StringToEnum("GroundinglineMigration")[0]
+def GsetEnum(): return StringToEnum("Gset")[0]
+def IndexEnum(): return StringToEnum("Index")[0]
+def IndexedEnum(): return StringToEnum("Indexed")[0]
+def IntersectEnum(): return StringToEnum("Intersect")[0]
+def NodalEnum(): return StringToEnum("Nodal")[0]
+def OldGradientEnum(): return StringToEnum("OldGradient")[0]
+def OutputBufferPointerEnum(): return StringToEnum("OutputBufferPointer")[0]
+def OutputBufferSizePointerEnum(): return StringToEnum("OutputBufferSizePointer")[0]
+def OutputFilePointerEnum(): return StringToEnum("OutputFilePointer")[0]
+def ToolkitsFileNameEnum(): return StringToEnum("ToolkitsFileName")[0]
+def RootPathEnum(): return StringToEnum("RootPath")[0]
+def OutputFileNameEnum(): return StringToEnum("OutputFileName")[0]
+def InputFileNameEnum(): return StringToEnum("InputFileName")[0]
+def LockFileNameEnum(): return StringToEnum("LockFileName")[0]
+def RestartFileNameEnum(): return StringToEnum("RestartFileName")[0]
+def ToolkitsOptionsAnalysesEnum(): return StringToEnum("ToolkitsOptionsAnalyses")[0]
+def ToolkitsOptionsStringsEnum(): return StringToEnum("ToolkitsOptionsStrings")[0]
+def QmuErrNameEnum(): return StringToEnum("QmuErrName")[0]
+def QmuInNameEnum(): return StringToEnum("QmuInName")[0]
+def QmuOutNameEnum(): return StringToEnum("QmuOutName")[0]
+def RegularEnum(): return StringToEnum("Regular")[0]
+def ScaledEnum(): return StringToEnum("Scaled")[0]
+def SeparateEnum(): return StringToEnum("Separate")[0]
+def SsetEnum(): return StringToEnum("Sset")[0]
+def VerboseEnum(): return StringToEnum("Verbose")[0]
+def TriangleInterpEnum(): return StringToEnum("TriangleInterp")[0]
+def BilinearInterpEnum(): return StringToEnum("BilinearInterp")[0]
+def NearestInterpEnum(): return StringToEnum("NearestInterp")[0]
+def XYEnum(): return StringToEnum("XY")[0]
+def XYZEnum(): return StringToEnum("XYZ")[0]
+def DenseEnum(): return StringToEnum("Dense")[0]
+def MpiDenseEnum(): return StringToEnum("MpiDense")[0]
+def MpiSparseEnum(): return StringToEnum("MpiSparse")[0]
+def SeqEnum(): return StringToEnum("Seq")[0]
+def MpiEnum(): return StringToEnum("Mpi")[0]
+def MumpsEnum(): return StringToEnum("Mumps")[0]
+def GslEnum(): return StringToEnum("Gsl")[0]
+def OptionEnum(): return StringToEnum("Option")[0]
+def GenericOptionEnum(): return StringToEnum("GenericOption")[0]
+def OptionCellEnum(): return StringToEnum("OptionCell")[0]
+def OptionStructEnum(): return StringToEnum("OptionStruct")[0]
+def CuffeyEnum(): return StringToEnum("Cuffey")[0]
+def PatersonEnum(): return StringToEnum("Paterson")[0]
+def ArrheniusEnum(): return StringToEnum("Arrhenius")[0]
+def LliboutryDuvalEnum(): return StringToEnum("LliboutryDuval")[0]
+def TransientIslevelsetEnum(): return StringToEnum("TransientIslevelset")[0]
+def SpclevelsetEnum(): return StringToEnum("Spclevelset")[0]
+def ExtrapolationVariableEnum(): return StringToEnum("ExtrapolationVariable")[0]
+def IceMaskNodeActivationEnum(): return StringToEnum("IceMaskNodeActivation")[0]
+def LevelsetfunctionSlopeXEnum(): return StringToEnum("LevelsetfunctionSlopeX")[0]
+def LevelsetfunctionSlopeYEnum(): return StringToEnum("LevelsetfunctionSlopeY")[0]
+def LevelsetfunctionPicardEnum(): return StringToEnum("LevelsetfunctionPicard")[0]
+def MaximumNumberOfDefinitionsEnum(): return StringToEnum("MaximumNumberOfDefinitions")[0]
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/exp/expcoarsen.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/exp/expcoarsen.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/exp/expcoarsen.py	(revision 21239)
@@ -0,0 +1,77 @@
+import os.path
+import numpy as npy
+from collections import OrderedDict
+from expread import expread
+from expwrite import expwrite
+
+def expcoarsen(newfile,oldfile,resolution):
+	""" 
+	EXPCOARSEN - coarsen an exp contour
+
+	This routine read an Argus file and remove points with respect to
+	the resolution (in meters) given in input. 
+
+	Usage:
+	  expcoarsen(newfile,oldfile,resolution)
+
+	Example:
+	   expcoarsen('DomainOutline.exp','Antarctica.exp',4000)
+	""" 
+
+	#Some checks
+	if not os.path.exists(oldfile):
+		raise OSError("expcoarsen error message: file '%s' not found!" % oldfile)
+	if os.path.exists(newfile):
+		choice=input('A file ' + newfile + ' already exists, do you want to modify it? (y/n)')
+		if choice not in 'y': 
+			print('no modification done ... exiting')
+			return 0
+
+	#Get exp oldfile
+	contours=expread(oldfile)
+	newcontours=[]
+
+	for contour in  contours:
+		
+		numpoints=npy.size(contour['x'])
+
+		j=0
+		x=contour['x']
+		y=contour['y']
+
+		#stop if we have reached end of profile (always keep the last point)
+		while j<numpoints-1:
+
+			#see whether we keep this point or not
+			distance=npy.sqrt((x[j]-x[j+1])**2+(y[j]-y[j+1])**2)
+			if distance<resolution and j<numpoints-2:   #do not remove last point
+				x=npy.delete(x,j+1,0)
+				y=npy.delete(y,j+1,0)
+				numpoints=numpoints-1
+			else:
+				division=int(npy.floor(distance/resolution)+1)
+				if division>=2:
+					xi=npy.linspace(x[j],x[j+1],division)
+					yi=npy.linspace(y[j],y[j+1],division)
+					
+					x=npy.hstack((x[0:j+1],xi[1:-1],x[j+1:]))
+					y=npy.hstack((y[0:j+1],yi[1:-1],y[j+1:]))
+
+					#update current point
+					j=j+1+division-2
+					numpoints=numpoints+division-2
+				else:
+					#update current point
+					j=j+1
+		
+		if npy.size(x)>1:
+			#keep the (x,y) contour arond
+			newcontour=OrderedDict()
+			newcontour['nods']=npy.size(x)
+			newcontour['density']=contour['density']
+			newcontour['x']=x
+			newcontour['y']=y
+			newcontours.append(newcontour)
+
+	#write output
+	expwrite(newcontours,newfile)
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/exp/expdisp.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/exp/expdisp.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/exp/expdisp.py	(revision 21239)
@@ -0,0 +1,27 @@
+from expread import expread
+import numpy as npy
+
+def expdisp(domainoutline,ax,linestyle='--k',linewidth=1,unitmultiplier=1.):
+    '''
+    plot the contents of a domain outline file
+
+    This routine reads in a domain outline file and plots all of the x,y contours
+
+    'ax' is a handle to the current plot axes, onto which the contours are to be drawn
+
+    Usage:
+        expdisp(domainoutline,ax)
+
+    Example:
+        expdisp('domain.exp',plt.gca(),linestyle='--k',linewidth=2,unitmultiplier=1.e3)
+    '''
+
+    domain=expread(domainoutline)
+
+    for i in range(len(domain)):
+        if domain[i]['nods']==1:
+            ax.plot(domain[i]['x']*unitmultiplier,domain[i]['y']*unitmultiplier,'o',mec='k',mfc='r',ms=10)
+        else:
+            x=domain[i]['x'].tolist() # since expread returns a string representation of the arrays
+            y=domain[i]['y'].tolist()
+            ax.plot(x*unitmultiplier,y*unitmultiplier,linestyle,linewidth=linewidth)
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/exp/expread.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/exp/expread.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/exp/expread.py	(revision 21239)
@@ -0,0 +1,100 @@
+import os.path
+import numpy
+from collections import OrderedDict
+import MatlabFuncs as m
+
+def expread(filename):
+	"""
+	EXPREAD - read a file exp and build a Structure
+
+	   This routine reads a file .exp and builds a list of dicts containing the 
+	   fields x and y corresponding to the coordinates, one for the filename of
+	   the exp file, for the density, for the nodes, and a field closed to 
+	   indicate if the domain is closed. 
+	   The first argument is the .exp file to be read and the second one (optional) 
+	   indicate if the last point shall be read (1 to read it, 0 not to).
+
+	   Usage:
+	      contours=expread(filename)
+
+	   Example:
+	      contours=expread('domainoutline.exp')
+	      contours=expread('domainoutline.exp')
+
+	   See also EXPDOC, EXPWRITEASVERTICES
+	"""
+
+	#some checks
+	if not os.path.exists(filename):
+		raise OSError("expread error message: file '%s' not found!" % filename)
+
+	#initialize number of profile
+	contours=[]
+
+	#open file
+	fid=open(filename,'r')
+
+	#loop over the number of profiles
+	while True:
+
+		#update number of profiles
+		contour=OrderedDict()
+
+		#Get file name
+		A=fid.readline()
+		while A=='\n':
+			A=fid.readline()
+		if not A:
+			break
+		A=A.split(None,1)
+		if not (len(A) == 2 and m.strcmp(A[0],'##') and m.strncmp(A[1],'Name:',5)):
+			break
+		if len(A[1])>5: 
+			contour['name']=A[1][5:-1]
+		else:
+			contour['name']=''
+
+		#Get Icon
+		A=fid.readline().split(None,1)
+		if not (len(A) == 2 and m.strcmp(A[0],'##') and m.strncmp(A[1],'Icon:',5)):
+			break
+
+		#Get Info
+		A=fid.readline().split()
+		if not (len(A) == 4 and m.strcmp(A[0],'#') and m.strcmp(A[1],'Points')):
+			break
+
+		#Get number of nodes and density
+		A=fid.readline().split()
+		contour['nods']=int(A[0])
+		contour['density']=float(A[1])
+
+		#Get Info
+		A=fid.readline().split()
+		if not (len(A) == 5 and m.strcmp(A[0],'#') and m.strcmp(A[1],'X') and m.strcmp(A[2],'pos') \
+		                                         and m.strcmp(A[3],'Y') and m.strcmp(A[4],'pos')):
+			break
+
+		#Get Coordinates
+		contour['x']=numpy.empty(contour['nods'])
+		contour['y']=numpy.empty(contour['nods'])
+		for i in range(int(contour['nods'])):
+			A=fid.readline().split()
+			contour['x'][i]=float(A[0])
+			contour['y'][i]=float(A[1])
+
+		#Check if closed
+		if (contour['nods'] > 1) and \
+		   (contour['x'][-1] == contour['x'][0]) and \
+		   (contour['y'][-1] == contour['y'][0]):
+			contour['closed']=True
+		else:
+			contour['closed']=False
+
+		contours.append(contour)
+
+	#close file
+	fid.close()
+
+	return contours
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/exp/expwrite.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/exp/expwrite.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/exp/expwrite.py	(revision 21239)
@@ -0,0 +1,47 @@
+import numpy
+
+def expwrite(contours,filename):
+	"""
+	EXPWRITE - write an Argus file from a dictionary given in input
+
+	   This routine writes an Argus file from a dict containing the fields:
+	   x and y of the coordinates of the points.
+	   The first argument is the list containing the points coordinates 
+	   and the second one the file to be written.
+
+	   Usage:
+	      expwrite(contours,filename)
+
+	   Example:
+	      expwrite(coordstruct,'domainoutline.exp')
+
+	   See also EXPDOC, EXPREAD, EXPWRITEASVERTICES
+	"""
+
+	fid=open(filename,'w')
+	for x,y in zip(contours['x'],contours['y']):
+		#if numpy.size(contour['x'])!=numpy.size(contour['y']):
+		if len(x)!=len(y):
+			raise RuntimeError("contours x and y coordinates must be of identical size")
+		if 'name' in contours:
+			fid.write("%s%s\n" % ('## Name:',contours['name']))
+		else:
+			fid.write("%s%s\n" % ('## Name:',filename))
+   
+		#Add density if it's not there FIXME what is this ever used for?
+		#if 'density' not in contours:
+		#	contours['density']=1
+		density=1
+
+		fid.write("%s\n" % '## Icon:0')
+		fid.write("%s\n" % '# Points Count Value')
+		#fid.write("%i %f\n" % (numpy.size(contour['x']),contour['density']))
+		fid.write("%i %f\n" % (numpy.size(x),density))
+		fid.write("%s\n" % '# X pos Y pos')
+		#for x,y in zip(contour['x'],contour['y']):
+		for xi,yi in zip(x,y):
+			fid.write("%10.10f %10.10f\n" % (xi,yi))
+		fid.write("\n")
+
+	fid.close()
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/extrusion/DepthAverage.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/extrusion/DepthAverage.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/extrusion/DepthAverage.py	(revision 21239)
@@ -0,0 +1,50 @@
+import numpy as npy
+from project2d import project2d
+
+def DepthAverage(md,vector):
+	'''
+	computes depth average of 3d vector using the trapezoidal rule, and returns
+	the value on the 2d mesh. 
+	
+	Usage:
+		vector_average=DepthAverage(md,vector)
+	
+	Example:
+		vel_bar=DepthAverage(md,md.initialization.vel)
+	'''
+
+	#check that the model given in input is 3d
+	if md.mesh.elementtype() != 'Penta':
+		raise TypeError('DepthAverage error message: the model given in input must be 3d')
+
+	# coerce to array in case float is passed
+	if type(vector)!=npy.ndarray:
+		print('coercing array')
+		vector=npy.array(value)
+
+	vec2d=False
+	if vector.ndim==2:
+		vec2d=True
+		vector=vector.reshape(-1,)
+
+	#nods data
+	if vector.shape[0]==md.mesh.numberofvertices:
+		vector_average=npy.zeros(md.mesh.numberofvertices2d)
+		for i in range(1,md.mesh.numberoflayers):
+			vector_average=vector_average+(project2d(md,vector,i)+project2d(md,vector,i+1))/2.*(project2d(md,md.mesh.z,i+1)-project2d(md,md.mesh.z,i))
+		vector_average=vector_average/project2d(md,md.geometry.thickness,1)
+	
+	#element data
+	elif vector.shape[0]==md.mesh.numberofelements:
+		vector_average=npy.zeros(md.mesh.numberofelements2d)
+		for i in range(1,md.mesh.numberoflayers):
+			vector_average=vector_average+project2d(md,vector,i)*(project2d(md,md.mesh.z,i+1)-project2d(md,md.mesh.z,i))
+		vector_average=vector_average/project2d(md,md.geometry.thickness,1)
+	
+	else:
+		raise ValueError('vector size not supported yet');
+
+	if vec2d:
+		vector_average=vector_average.reshape(-1,1)
+
+	return vector_average
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/extrusion/project2d.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/extrusion/project2d.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/extrusion/project2d.py	(revision 21239)
@@ -0,0 +1,49 @@
+import numpy as npy
+
+def project2d(md3d,value,layer):
+	'''
+	returns the value of a field for a given layer of the mesh
+	
+
+   returns the value of a vector for a given layer from extruded mesh onto the 2d mesh 
+   used to do the extrusion. This function is used to compare values between different
+   layers of a 3d mesh.
+
+   Usage:
+      projection_value=project2d(md3d,value,layer)
+
+   Example:
+      vel2=project2d(md3d,md3d.initialization.vel,2);
+      returns the velocity of the second layer (1 is the base)
+	'''
+
+	if md3d.mesh.domaintype().lower() != '3d':
+		raise Exception("model passed to project2d function should be 3D")
+
+	if layer<1 or layer>md3d.mesh.numberoflayers:
+		raise ValueError("layer must be between 0 and %i" % md3d.mesh.numberoflayers)
+	
+	# coerce to array in case float is passed
+	if type(value)!=npy.ndarray:
+		print('coercing array')
+		value=npy.array(value)
+
+	vec2d=False
+	if value.ndim==2 and value.shape[1]==1: 
+		value=value.reshape(-1,)
+		vec2d=True
+
+	if value.size==1:
+		projection_value=value[(layer-1)*md3d.mesh.numberofelements2d:layer*md3d.mesh.numberofelements2d]
+	elif value.shape[0]==md3d.mesh.numberofvertices:
+		#print 'indices: ', (layer-1)*md3d.mesh.numberofvertices2d, layer*md3d.mesh.numberofvertices2d
+		projection_value=value[(layer-1)*md3d.mesh.numberofvertices2d:layer*md3d.mesh.numberofvertices2d]
+	elif value.shape[0]==md3d.mesh.numberofvertices+1:
+		projection_value=[value[(layer-1)*md3d.mesh.numberofvertices2d:layer*md3d.mesh.numberofvertices2d], value[-1]]
+	else:
+		projection_value=value[(layer-1)*md3d.mesh.numberofelements2d:layer*md3d.mesh.numberofelements2d]
+
+	if vec2d:
+		projection_value=projection_value.reshape(-1,1)
+
+	return projection_value
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/extrusion/project3d.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/extrusion/project3d.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/extrusion/project3d.py	(revision 21239)
@@ -0,0 +1,90 @@
+import numpy
+from pairoptions import pairoptions
+
+def project3d(md,**kwargs):
+	"""
+	PROJECT3D - vertically project a vector from 2d mesh
+
+	   vertically project a vector from 2d mesh (split in noncoll and coll areas) into a 3d mesh.
+	   This vector can be a node vector of size (md.mesh.numberofvertices2d,N/A) or an 
+	   element vector of size (md.mesh.numberofelements2d,N/A). 
+	   arguments: 
+	      'vector': 2d vector
+	      'type': 'element' or 'node'. 
+	   options: 
+	      'layer' a layer number where vector should keep its values. If not specified, all layers adopt the 
+	             value of the 2d vector.
+	      'padding': default to 0 (value adopted by other 3d layers not being projected
+
+	   Examples:
+	      extruded_vector=project3d(md,'vector',vector2d,'type','node','layer',1,'padding',NaN)
+	      extruded_vector=project3d(md,'vector',vector2d,'type','element','padding',0)
+	      extruded_vector=project3d(md,'vector',vector2d,'type','node')
+	"""
+
+	#some regular checks
+	if not md:
+		raise TypeError("bad usage")
+	if md.mesh.domaintype().lower() != '3d':
+		raise TypeError("input model is not 3d")
+
+	#retrieve parameters from options.
+	options      = pairoptions(**kwargs)
+	vector2d     = options.getfieldvalue('vector')       #mandatory
+	vectype      = options.getfieldvalue('type')         #mandatory
+	layer        = options.getfieldvalue('layer',0)      #optional (do all layers otherwise)
+	paddingvalue = options.getfieldvalue('padding',0)    #0 by default
+
+	vector1d=False
+	if isinstance(vector2d,numpy.ndarray) and numpy.ndim(vector2d)==1:
+		vector1d=True
+		vector2d=vector2d.reshape(-1,1)
+
+	if isinstance(vector2d,(bool,int,float)) or numpy.size(vector2d)==1:
+		projected_vector=vector2d
+
+	elif vectype.lower()=='node':
+
+		#Initialize 3d vector
+		if vector2d.shape[0]==md.mesh.numberofvertices2d:
+			projected_vector=(paddingvalue*numpy.ones((md.mesh.numberofvertices,  numpy.size(vector2d,axis=1)))).astype(vector2d.dtype)
+		elif vector2d.shape[0]==md.mesh.numberofvertices2d+1:
+			projected_vector=(paddingvalue*numpy.ones((md.mesh.numberofvertices+1,numpy.size(vector2d,axis=1)))).astype(vector2d.dtype)
+			projected_vector[-1,:]=vector2d[-1,:]
+			vector2d=vector2d[:-1,:]
+		else:
+			raise TypeError("vector length not supported")
+
+		#Fill in
+		if layer==0:
+			for i in range(md.mesh.numberoflayers):
+				projected_vector[(i*md.mesh.numberofvertices2d):((i+1)*md.mesh.numberofvertices2d),:]=vector2d
+		else:
+			projected_vector[((layer-1)*md.mesh.numberofvertices2d):(layer*md.mesh.numberofvertices2d),:]=vector2d
+
+	elif vectype.lower()=='element':
+
+		#Initialize 3d vector
+		if vector2d.shape[0]==md.mesh.numberofelements2d:
+			projected_vector=(paddingvalue*numpy.ones((md.mesh.numberofelements,  numpy.size(vector2d,axis=1)))).astype(vector2d.dtype)
+		elif vector2d.shape[0]==md.mesh.numberofelements2d+1:
+			projected_vector=(paddingvalue*numpy.ones((md.mesh.numberofelements+1,numpy.size(vector2d,axis=1)))).astype(vector2d.dtype)
+			projected_vector[-1,:]=vector2d[-1,:]
+			vector2d=vector2d[:-1,:]
+		else:
+			raise TypeError("vector length not supported")
+
+		#Fill in
+		if layer==0:
+			for i in range(md.mesh.numberoflayers-1):
+				projected_vector[(i*md.mesh.numberofelements2d):((i+1)*md.mesh.numberofelements2d),:]=vector2d
+		else:
+			projected_vector[((layer-1)*md.mesh.numberofelements2d):(layer*md.mesh.numberofelements2d),:]=vector2d
+
+	else:
+		raise TypeError("project3d error message: unknown projection type")
+
+	if vector1d:
+		projected_vector=projected_vector.reshape(-1,)
+
+	return projected_vector
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/geometry/FlagElements.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/geometry/FlagElements.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/geometry/FlagElements.py	(revision 21239)
@@ -0,0 +1,67 @@
+import numpy
+import os
+#from basinzoom import basinzoon
+from ContourToMesh import ContourToMesh
+import MatlabFuncs as m
+import PythonFuncs as p
+
+def FlagElements(md,region):
+	"""
+	FLAGELEMENTS - flag the elements in an region
+
+	   The region can be given with an exp file, a list of elements or vertices
+
+	   Usage: 
+	      flag=FlagElements(md,region);
+
+	   Example:
+	      flag=FlagElements(md,'all');
+	      flag=FlagElements(md,'');
+	      flag=FlagElements(md,'Domain.exp');
+	      flag=FlagElements(md,'~Domain.exp');
+	"""
+
+	if   isinstance(region,str):
+		if   not region:
+			flag=numpy.zeros(md.mesh.numberofelements,bool)
+			invert=0
+		elif m.strcmpi(region,'all'):
+			flag=numpy.ones(md.mesh.numberofelements,bool)
+			invert=0
+		else:
+			#make sure that we actually don't want the elements outside the domain outline!
+			if m.strcmpi(region[0],'~'):
+				region=region[1:]
+				invert=1
+			else:
+				invert=0
+
+			#does the region domain outline exist or do we have to look for xlim,ylim in basinzoom?
+			if not os.path.exists(region):
+				if len(region)>3 and not m.strcmp(region[-4:],'.exp'):
+					raise IOError("Error: File 'region' not found!" % region)
+				raise RuntimeError("FlagElements.py calling basinzoom.py is not complete.")
+				xlim,ylim=basinzoom('basin',region)
+				flag_nodes=p.logical_and_n(md.mesh.x<xlim[1],md.mesh.x>xlim[0],md.mesh.y<ylim[1],md.mesh.y>ylim[0])
+				flag=numpy.prod(flag_nodes[md.mesh.elements],axis=1).astype(bool)
+			else:
+				#ok, flag elements
+				[flag,dum]=ContourToMesh(md.mesh.elements[:,0:3].copy(),md.mesh.x,md.mesh.y,region,'element',1)
+				flag=flag.astype(bool)
+
+		if invert:
+			flag=numpy.logical_not(flag)
+
+	elif isinstance(region,numpy.ndarray) or isinstance(region,bool):
+		if numpy.size(region,0)==md.mesh.numberofelements:
+			flag=region
+		elif numpy.size(region,0)==md.mesh.numberofvertices:
+			flag=(numpy.sum(region[md.mesh.elements-1]>0,axis=1)==numpy.size(md.mesh.elements,1))
+		else:
+			raise TypeError("Flaglist for region must be of same size as number of elements in model.")
+
+	else:
+		raise TypeError("Invalid region option")
+
+	return flag
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/geometry/GetAreas.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/geometry/GetAreas.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/geometry/GetAreas.py	(revision 21239)
@@ -0,0 +1,52 @@
+import numpy
+
+def GetAreas(index,x,y,z=numpy.array([])):
+	"""
+	GETAREAS - compute areas or volumes of elements
+
+	   compute areas of triangular elements or volumes 
+	   of pentahedrons
+
+	   Usage:
+	      areas  =GetAreas(index,x,y);
+	      volumes=GetAreas(index,x,y,z);
+
+	   Examples:
+	      areas  =GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y);
+	      volumes=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y,md.z);
+	"""
+
+	#get number of elements and number of nodes
+	nels=numpy.size(index,axis=0)
+	nods=numpy.size(x)
+
+	#some checks
+	if numpy.size(y)!=nods or (z and numpy.size(z)!=nods):
+		raise TypeError("GetAreas error message: x,y and z do not have the same length.")
+	if numpy.max(index)>nods:
+		raise TypeError("GetAreas error message: index should not have values above %d." % nods)
+	if (not z and numpy.size(index,axis=1)!=3):
+		raise TypeError("GetAreas error message: index should have 3 columns for 2d meshes.")
+	if (z and numpy.size(index,axis=1)!=6):
+		raise TypeError("GetAreas error message: index should have 6 columns for 3d meshes.")
+
+	#initialization
+	areas=numpy.zeros(nels)
+	x1=x[index[:,0]-1]
+	x2=x[index[:,1]-1]
+	x3=x[index[:,2]-1]
+	y1=y[index[:,0]-1]
+	y2=y[index[:,1]-1]
+	y3=y[index[:,2]-1]
+
+	#compute the volume of each element
+	if not z:
+		#compute the surface of the triangle
+		areas=(0.5*((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)))
+	else:
+		#V=area(triangle)*1/3(z1+z2+z3)
+		thickness=numpy.mean(z[index[:,3:6]-1])-numpy.mean(z[index[:,0:3]-1])
+		areas=(0.5*((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)))*thickness
+
+	return areas
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/geometry/SegIntersect.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/geometry/SegIntersect.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/geometry/SegIntersect.py	(revision 21239)
@@ -0,0 +1,82 @@
+import numpy
+
+def SegIntersect(seg1,seg2):
+	"""
+	SEGINTERSECT - test of segments intersection
+
+	   return 1 if the two segments intersect
+	   seg1=[x1 y1; x2 y2]
+	   seg2=[x1 y1; x2 y2]
+
+	   Usage:
+	      bval=SegIntersect(seg1,seg2)
+	"""
+
+	bval=1
+
+	xA=seg1[0,0]
+	yA=seg1[0,1]
+	xB=seg1[1,0]
+	yB=seg1[1,1]
+	xC=seg2[0,0]
+	yC=seg2[0,1]
+	xD=seg2[1,0]
+	yD=seg2[1,1]
+
+	O2A=numpy.array([xA,yA])-numpy.array([xD/2.+xC/2.,yD/2.+yC/2.])
+	O2B=numpy.array([xB,yB])-numpy.array([xD/2.+xC/2.,yD/2.+yC/2.])
+	O1C=numpy.array([xC,yC])-numpy.array([xA/2.+xB/2.,yB/2.+yA/2.])
+	O1D=numpy.array([xD,yD])-numpy.array([xA/2.+xB/2.,yB/2.+yA/2.])
+
+	n1=numpy.array([yA-yB,xB-xA])    #normal vector to segA
+	n2=numpy.array([yC-yD,xD-xC])    #normal vector to segB
+
+	test1=numpy.dot(n2,O2A)
+	test2=numpy.dot(n2,O2B)
+
+	if test1*test2>0:
+		bval=0
+		return bval
+
+	test3=numpy.dot(n1,O1C)
+	test4=numpy.dot(n1,O1D)
+
+	if test3*test4>0:
+		bval=0
+		return bval
+
+	#if colinear
+	if test1*test2==0 and test3*test4==0 and numpy.linalg.det(numpy.hstack((n1.reshape((-1,1)),n2.reshape(-1,1))))==0:
+
+		#projection on the axis O1O2
+		O2O1=numpy.array([xA/2.+xB/2.,yB/2.+yA/2.])-numpy.array([xD/2.+xC/2.,yD/2.+yC/2.])
+		O1A=numpy.dot(O2O1,(O2A-O2O1))
+		O1B=numpy.dot(O2O1,(O2B-O2O1))
+		O1C=numpy.dot(O2O1,O1C)
+		O1D=numpy.dot(O2O1,O1D)
+
+		#test if one point is included in the other segment (->bval=1)
+		if (O1C-O1A)*(O1D-O1A)<0:
+			bval=1
+			return bval
+		if (O1C-O1B)*(O1D-O1B)<0:
+			bval=1
+			return bval
+		if (O1A-O1C)*(O1B-O1C)<0:
+			bval=1
+			return bval
+		if (O1A-O1D)*(O1B-O1D)<0:
+			bval=1
+			return bval
+
+		#test if the 2 segments have the same middle (->bval=1)
+		if O2O1==0:
+			bval=1
+			return bval
+
+		#else
+		bval=0
+		return bval
+
+	return bval
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/geometry/slope.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/geometry/slope.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/geometry/slope.py	(revision 21239)
@@ -0,0 +1,46 @@
+import numpy as npy
+from GetNodalFunctionsCoeff import  GetNodalFunctionsCoeff
+
+def slope(md,*args):
+	"""
+	SLOPE - compute the surface slope
+
+	Usage:
+		sx,sy,s=slope(md)
+		sx,sy,s=slope(md,md.results.TransientSolution(1).Surface)
+	"""
+
+	#load some variables (it is much faster if the variables are loaded from md once for all) 
+	if md.mesh.dimension()==2:
+		numberofelements=md.mesh.numberofelements
+		numberofnodes=md.mesh.numberofvertices
+		index=md.mesh.elements
+		x=md.mesh.x ; y=md.mesh.y
+	else:
+		numberofelements=md.mesh.numberofelements2d
+		numberofnodes=md.mesh.numberofvertices2d
+		index=md.mesh.elements2d
+		x=md.mesh.x2d; y=md.mesh.y2d
+
+	if len(args)==0:
+		surf=md.geometry.surface
+	elif len(args)==1:
+		surf=args[0]
+	else:
+		raise RuntimeError("slope.py usage error")
+
+	#%compute nodal functions coefficients N(x,y)=alpha x + beta y + gamma
+	alpha,beta=GetNodalFunctionsCoeff(index,x,y)[0:2]
+
+	summation=npy.array([[1],[1],[1]])
+	sx=npy.dot(surf[index-1]*alpha,summation).reshape(-1,)
+	sy=npy.dot(surf[index-1]*beta,summation).reshape(-1,)
+
+	s=npy.sqrt(sx**2+sy**2)
+
+	if md.mesh.dimension()==3:
+		sx=project3d(md,'vector',sx,'type','element')
+		sy=project3d(md,'vector',sy,'type','element')
+		s=npy.sqrt(sx**2+sy**2)
+
+	return (sx,sy,s)
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/interp/SectionValues.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/interp/SectionValues.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/interp/SectionValues.py	(revision 21239)
@@ -0,0 +1,139 @@
+import os
+from expread import expread
+import numpy as npy
+from project2d import project2d
+#from InterpFromMesh2d import InterpFromMesh2d
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from InterpFromMeshToMesh3d import InterpFromMeshToMesh3d
+
+def SectionValues(md,data,infile,resolution):
+	'''
+	compute the value of a field on a section
+	
+	This routine gets the value of a given field of the model on points
+	given in the file infile (Argus type file). Resolution must be a list
+	[horizontal_resolution, vertical_resolution]
+	
+	Usage:
+	[elements,x,y,z,s,data]=SectionValues(md,data,filename,resolution)
+	[elements,x,y,z,s,data]=SectionValues(md,data,profile_structure,resolution)
+	'''
+
+	if os.path.isfile(infile):
+		profile=expread(infile)[0]
+		nods=profile['nods']
+		x=profile['x']
+		y=profile['y']
+	else:
+		raise IOError('file %s not found' % infile)
+
+	#get the specified resolution
+	if len(resolution)!=2:
+		raise ValueError('SectionValues error message: Resolution must be a list [horizontal_resolution, vertical_resolution]')
+	else:
+		res_h=resolution[0]
+
+	if md.mesh.domaintype().lower() == '3d':
+		if isinstance(resolution[1],int) or isinstance(resolution[1],float):
+			res_v=resolution[1]
+		else:
+			raise ValueError('SectionValues error: resolution must be a length-2 list of integers or floats')
+
+	#initialization
+	X=npy.array([]) #X-coordinate
+	Y=npy.array([]) #Y-coordinate
+	S=npy.array([0.])  #curvilinear coordinate
+	
+	for i in range(nods-1):
+	
+		x_start=x[i]
+		x_end=x[i+1]
+		y_start=y[i]
+		y_end=y[i+1]
+		s_start=S[-1]
+	
+		length_segment=npy.sqrt((x_end-x_start)**2+(y_end-y_start)**2)
+		portion=npy.ceil(length_segment/res_h)
+	
+		x_segment=npy.zeros(portion)
+		y_segment=npy.zeros(portion)
+		s_segment=npy.zeros(portion)
+
+		for j in range(int(portion)):
+			x_segment[j]=x_start+(j)*(x_end-x_start)/portion
+			y_segment[j]=y_start+(j)*(y_end-y_start)/portion
+			s_segment[j]=s_start+j*length_segment/portion
+	
+		#plug into X and Y
+		X=npy.append(X,x_segment)
+		Y=npy.append(Y,y_segment)
+		S=npy.append(S,s_segment)
+
+	X=npy.append(X,x[nods-1])
+	Y=npy.append(Y,y[nods-1])
+	
+	#Number of nodes:
+	numberofnodes=X.shape[0]
+	
+	#Compute Z
+	Z=npy.zeros(numberofnodes)
+	
+	#New mesh and Data interpolation
+	if '2d' in md.mesh.domaintype().lower():
+	
+		#Interpolation of data on specified points
+		#data_interp=InterpFromMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,data,X,Y)[0]
+		data_interp=InterpFromMeshToMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,data,X,Y)[0]
+		#data_interp=griddata(md.mesh.x,md.mesh.y,data,X,Y)
+	
+		#Compute index
+		index=npy.array([list(range(1,numberofnodes)),list(range(2,numberofnodes+1))]).T
+	
+	else:
+	
+		#vertically extrude mesh
+	
+		#Get base and surface for each 2d point, offset to make sure that it is inside the glacier system
+		offset=1.e-3
+		base=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.base,1),X,Y)[0]+offset
+		base=base.reshape(-1,)
+		surface=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.surface,1),X,Y)[0]-offset
+		surface=surface.reshape(-1,)
+	
+		#Some useful parameters
+		layers=int(npy.ceil(npy.mean(md.geometry.thickness)/res_v))
+		nodesperlayer=int(numberofnodes)
+		nodestot=int(nodesperlayer*layers)
+		elementsperlayer=int(nodesperlayer-1)
+		elementstot=int((nodesperlayer-1)*(layers-1))
+	
+		#initialization
+		X3=npy.zeros(nodesperlayer*layers) 
+		Y3=npy.zeros(nodesperlayer*layers) 
+		Z3=npy.zeros(nodesperlayer*layers) 
+		S3=npy.zeros(nodesperlayer*layers) 
+		index3=npy.zeros((elementstot,4))
+	
+		#Get new coordinates in 3d
+		for i in range(1,layers+1):
+			X3[i-1::layers]=X
+			Y3[i-1::layers]=Y
+			Z3[i-1::layers]=base+(i-1)*(surface-base)/(layers-1)
+			S3[i-1::layers]=S
+	
+			if i<layers-1:  #Build index3 with quads
+				ids=npy.vstack((npy.arange(i,nodestot-layers,layers),npy.arange(i+1,nodestot-layers,layers),npy.arange(i+layers+1,nodestot,layers),npy.arange(i+layers,nodestot,layers))).T
+				index3[(i-1)*elementsperlayer:i*elementsperlayer,:]=ids
+
+		#Interpolation of data on specified points
+		data_interp=InterpFromMeshToMesh3d(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z,data,X3,Y3,Z3,npy.nan)
+	
+		#build outputs
+		X=X3 
+		Y=Y3 
+		Z=Z3  
+		S=S3 
+
+		index=index3
+
+	return index,X,Y,Z,S,data_interp
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/interp/averaging.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/interp/averaging.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/interp/averaging.py	(revision 21239)
@@ -0,0 +1,93 @@
+import numpy as npy
+from GetAreas import GetAreas
+from scipy.sparse import csc_matrix
+import MatlabFuncs as m
+
+def averaging(md,data,iterations,layer=0):
+	'''
+	AVERAGING - smooths the input over the mesh
+	
+	   This routine takes a list over the elements or the nodes in input
+	   and return a list over the nodes.
+	   For each iterations it computes the average over each element (average 
+	   of the vertices values) and then computes the average over each node
+	   by taking the average of the element around a node weighted by the
+	   elements volume
+	   For 3d mesh, a last argument can be added to specify the layer to be averaged on.
+	
+	   Usage:
+	      smoothdata=averaging(md,data,iterations)
+	      smoothdata=averaging(md,data,iterations,layer)
+	
+	   Examples:
+	      velsmoothed=averaging(md,md.initialization.vel,4)
+	      pressure=averaging(md,md.initialization.pressure,0)
+	      temperature=averaging(md,md.initialization.temperature,1,1)
+	'''
+
+	if len(data)!=md.mesh.numberofelements and len(data)!=md.mesh.numberofvertices:
+		raise Exception('averaging error message: data not supported yet')
+	if md.mesh.dimension()==3 and layer!=0:
+		if layer<=0 or layer>md.mesh.numberoflayers:
+			raise ValueError('layer should be between 1 and md.mesh.numberoflayers')
+	else:
+		layer=0
+	
+	#initialization
+	if layer==0:
+		weights=npy.zeros(md.mesh.numberofvertices,)
+		data=data.flatten(1)
+	else:
+		weights=npy.zeros(md.mesh.numberofvertices2d,)
+		data=data[(layer-1)*md.mesh.numberofvertices2d+1:layer*md.mesh.numberofvertices2d,:]
+	
+	#load some variables (it is much faster if the variabes are loaded from md once for all)
+	if layer==0:
+		index=md.mesh.elements
+		numberofnodes=md.mesh.numberofvertices
+		numberofelements=md.mesh.numberofelements
+	else:
+		index=md.mesh.elements2d
+		numberofnodes=md.mesh.numberofvertices2d
+		numberofelements=md.mesh.numberofelements2d
+
+	
+	#build some variables
+	if md.mesh.dimension()==3 and layer==0:
+		rep=6
+		areas=GetAreas(index,md.mesh.x,md.mesh.y,md.mesh.z)
+	elif md.mesh.dimension()==2:
+		rep=3
+		areas=GetAreas(index,md.mesh.x,md.mesh.y)
+	else:
+		rep=3
+		areas=GetAreas(index,md.mesh.x2d,md.mesh.y2d)
+
+	index=index-1 # since python indexes starting from zero
+	line=index.flatten(1)
+	areas=npy.vstack(areas).reshape(-1,)
+	summation=1./rep*npy.ones(rep,)
+	linesize=rep*numberofelements
+	
+	#update weights that holds the volume of all the element holding the node i
+	weights=csc_matrix( (npy.tile(areas,(rep,1)).reshape(-1,),(line,npy.zeros(linesize,))), shape=(numberofnodes,1))
+	
+	#initialization
+	if len(data)==numberofelements:
+		average_node=csc_matrix( (npy.tile(areas*data,(rep,1)).reshape(-1,),(line,npy.zeros(linesize,))), shape=(numberofnodes,1))
+		average_node=average_node/weights
+		average_node = csc_matrix(average_node)
+	else:
+		average_node=csc_matrix(data.reshape(-1,1))
+
+	#loop over iteration
+	for i in npy.arange(1,iterations+1):
+		average_el=npy.asarray(npy.dot(average_node.todense()[index].reshape(numberofelements,rep),npy.vstack(summation))).reshape(-1,)
+		average_node=csc_matrix( (npy.tile(areas*average_el.reshape(-1),(rep,1)).reshape(-1,),(line,npy.zeros(linesize,))), shape=(numberofnodes,1))
+		average_node=average_node/weights
+		average_node=csc_matrix(average_node)
+	
+	#return output as a full matrix (C code do not like sparse matrices)
+	average=npy.asarray(average_node.todense()).reshape(-1,)
+
+	return average
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/interp/holefiller.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/interp/holefiller.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/interp/holefiller.py	(revision 21239)
@@ -0,0 +1,46 @@
+import numpy as npy
+from scipy.spatial import cKDTree
+
+def nearestneighbors(x,y,data,goodids,badids,knn):
+	'''
+	fill holes using nearest neigbors.  Arguments include:
+
+
+	x,y:		the coordinates of data to be filled 
+	data:		the data field to be filled (full field, including holes)
+	goodids:	id's into the vertices that have good data
+	badids:	id's into the vertices with missing/bad data
+	knn:		integer representing the k nearest neighbors to use for filling
+				holes.  The average data value over the k nearest neighbors is 
+				then used to fill the hole.
+
+	Usage:
+		filleddata=nearestneighbors(x,y,data,goodids,badids,knn)
+
+	Example:
+		filledthickness=nearestneighbors(x,y,data,goodids,badids,5)
+	'''
+
+	if type(knn) != int or knn<1:
+		raise TypeError('nearestneighbors error: knn should be an integer>1')
+
+	if len(x) != len(data) or len(y) != len(data):
+		raise Exception('nearestneighbors error: x and y should have the same length as "data"')
+
+	filled=data
+	
+	XYGood=npy.dstack([x[goodids],y[goodids]])[0]
+	XYBad=npy.dstack([x[badids],y[badids]])[0]
+	tree=cKDTree(XYGood)
+	nearest=tree.query(XYBad,k=knn)[1]
+	
+	if knn==1:
+		filled[badids]=filled[goodids][nearest] # can add k=N to return the N nearest neighbors
+	else:
+		for i in range(len(badids)):
+			neardat=[]
+			for j in range(knn):
+				neardat.append(filled[goodids][nearest[i][j]])
+				filled[badids[i]]=npy.mean(neardat)
+				
+	return filled
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/interp/interp.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/interp/interp.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/interp/interp.py	(revision 21239)
@@ -0,0 +1,240 @@
+# module for inperpolating/smoothing data
+import numpy as npy
+from scipy.interpolate import CloughTocher2DInterpolator, Rbf
+from scipy.spatial import cKDTree
+try:
+	import matplotlib.pyplot as plt
+except ImportError:
+	print('could not import matplotlib, no plotting functions enabled.\
+			Set plotonly=False in function call')
+
+def MeshSplineToMesh2d(x,y,data,xi,yi,tol=1e-6,fill_nans=False,**kwargs):#{{{
+	'''
+	Piecewise cubic, C1 smooth, curvature-minimizing interpolant in 2D.
+	The interpolant is guaranteed to be continuously differentiable,
+	and the gradients are chosen such that the curvature of the interpolant
+	is approximately minimized.
+
+	Uses scipy.interpolate.CloughTocher2DInterpolator
+
+	x,y:			data point coordinates
+	data:			data to be interpolated (same length as x,y)
+	xi,yi:		coordintes to interpolate data onto
+	tol:			tolerance for gradient estimation (default 1e-6)
+	fill_nans:	fill nan's (holes) in data using the spline fit? 
+	**kwargs:	optional keywork arguments:
+					maxiter: maximum iterations in gradient estimation
+	
+	Returns interpolated data at given x,y coordinates.
+
+	Usage:
+		interpdata=CloughToucher2d(x,y,data)
+
+	Examples:
+		interpdata=CloughToucher2d(md.mesh.x,md.mesh.y,data)
+		interpdata=CloughToucher2d(md.mesh.x,md.mesh.y,data,tol=1e-3,maxiter=100)
+	'''
+
+	# unpack kwargs
+	maxiter=kwargs.pop('maxiter',None)
+	if 'maxiter' in kwargs: del kwargs['maxiter']
+	if maxiter:
+		assert type(maxiter)==int, 'error, maxiter should be an integer'
+	assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
+
+	# create sub-vectors that just cover the limits of xi and yi
+	# TODO x,y not necessarily a grid, so need a better definition of dx,dy (e.g. average element size)
+	dx=500
+	dy=500
+	#dx=x[1]-x[0]
+	#dy=y[1]-y[0]
+	xlim=[min(xi)-dx,max(xi)+dx]
+	ylim=[min(yi)-dy,max(yi)+dy]
+	xflag=npy.logical_and(x>xlim[0],x<xlim[1])
+	yflag=npy.logical_and(y>ylim[0],y<ylim[1])
+	bothind=npy.nonzero(npy.logical_and(xflag,yflag))
+	subdata=data[bothind]
+	subx=x[bothind]
+	suby=y[bothind]
+	points=npy.array([subx,suby]).T
+
+	# mask out any nan's in the data and corresponding coordinate points
+	mask=npy.isnan(subdata)
+	ind=npy.nonzero(mask)[0]
+	if len(ind) and fill_nans:
+		print("		WARNING: filling nans using spline fit through good data points, which may or may not be appropriate. Check results carefully.")
+	subdata=npy.delete(subdata,ind)
+	points=npy.delete(points,ind,axis=0)
+
+	if maxiter:
+		spline=CloughTocher2DInterpolator(points,subdata,tol,maxiter=maxiter)
+	else:
+		spline=CloughTocher2DInterpolator(points,subdata,tol)
+
+	interpdata=spline(xi,yi)
+	
+	if not fill_nans:
+		# identify nan's in xi,yi using nearest neighbors
+		xyinterp=npy.dstack([xi,yi])[0]
+		xg,yg=npy.meshgrid(subx,suby)
+		xydata=npy.dstack([subx,suby])[0]
+		tree=cKDTree(xydata)
+		nearest=tree.query(xyinterp)[1]
+		pos=npy.nonzero(npy.isnan(subdata[nearest]))
+		interpdata[pos]=subdata[nearest][pos]
+
+	return interpdata
+#}}}
+def GridSplineToMesh2d(x,y,data,xi,yi,default_value=npy.nan,plotonly=False,fill_nans=False):#{{{
+	'''
+	python analog to InterpFromGridToMesh.  This routine uses
+	scipy.interpolate.CloughTocher2dInterpolator to create a bivariate spline
+	interpolation of the input data and then return values of the spline
+	on the x,y coordinates of the model mesh.  The interpolant is piece-wise
+	cubic, C1 smooth (continuously differentiable) and has approximately 
+	minimized curvature.  See "help(scipy.interpolate.CloughTocher2dInterpolator)"
+	for more information on the routine.
+
+	NOTE: this routine will not be appropriate if there are large holes (nan's) in 
+	the input data.  A non-spline interpolation scheme should be used in that case.
+
+	x,y:				vectors defining the coordinates of the input data
+	data:				2D array of input data
+	xi,yi:			x and y coordinates to be interpolated onto
+	default_value:	default value if points lie outside the convex hull of input
+						points (defaults to nan if not specified)
+	plotonly:		plot the data to be interpolated using imshow (useful for
+	fill_nans:		fill nan's (holes) in data using the spline fit? 
+
+	Usage:
+		interpdata=GridToMesh(x,y,data,xi,yi,default_value=npy.nan,plotonly=False,fill_nans=False)
+
+	Examples:
+		interpdata=GridToMesh(x_m,y_m,data,md.mesh.x,md.mesh.y,0)
+	'''
+
+	if npy.ndim(x)==2:
+		x=x.reshape(-1,)
+	if npy.ndim(y)==2:
+		y=y.reshape(-1,)
+	if len(x) != data.shape[1]+1 and len(x) != data.shape[1]:
+		raise ValueError('x should have same length as ncols(data) or ncols(data)+1')
+	if len(y) != data.shape[0]+1 and len(y) != data.shape[0]:
+		raise ValueError('y should have same length as nrows(data) or nrows(data)+1')
+	
+	# create sub-grid that just covers the limits of xi and yi
+	dx=x[1]-x[0]
+	dy=y[1]-y[0]
+	xlim=[min(xi)-dx,max(xi)+dx]
+	ylim=[min(yi)-dy,max(yi)+dy]
+
+	# TODO create grid differently depending on whether data is defined at x,y
+	# or at the center of a grid cell with corner coordinates defined by xi,yi
+	# create points array and flattened data array
+	if len(x)==data.shape[1] and len(y)==data.shape[0]:
+		print('		x,y taken to define the center of data grid cells')
+		xind=npy.nonzero(npy.logical_and(x>xlim[0],x<xlim[1]))[0]
+		yind=npy.nonzero(npy.logical_and(y>ylim[0],y<ylim[1]))[0]
+		xg,yg=npy.meshgrid(x[xind],y[yind])
+		subdata=data[yind[0]:yind[-1]+1,xind[0]:xind[-1]+1]
+	elif len(x)==data.shape[1]+1 and len(y)==data.shape[0]+1:
+		print('		x,y taken to define the corners of data grid cells')
+		xcenter=npy.fromiter(((x[i]+x[i+1])/2 for i in range(len(x)-1)),npy.float)
+		ycenter=npy.fromiter(((y[i]+y[i+1])/2 for i in range(len(y)-1)),npy.float)
+		xind=npy.nonzero(npy.logical_and(xcenter>xlim[0],xcenter<xlim[1]))[0]
+		yind=npy.nonzero(npy.logical_and(ycenter>ylim[0],ycenter<ylim[1]))[0]
+		xg,yg=npy.meshgrid(xcenter[xind],ycenter[yind])
+		subdata=data[yind[0]:yind[-1]+1,xind[0]:xind[-1]+1]
+	else:
+		raise ValueError('x and y have inconsistent sizes: both should have length ncols(data)/nrows(data) or ncols(data)+1/nrows(data)+1')
+
+	points=npy.array([xg.ravel(),yg.ravel()]).T
+	flatsubdata=subdata.ravel()
+
+	if plotonly:
+		plt.imshow(npy.flipud(subdata),origin='upper')
+		plt.show()
+		return
+
+	# mask out any nan's in the data and corresponding coordinate points
+	mask=npy.isnan(flatsubdata)
+	ind=npy.nonzero(mask)[0]
+	if len(ind) and fill_nans:
+		print("		WARNING: filling nans using spline fit through good data points, which may or may not be appropriate. Check results carefully.")
+	goodsubdata=npy.delete(flatsubdata,ind)
+	goodpoints=npy.delete(points,ind,axis=0)
+
+	# create spline and index spline at mesh points
+	spline=CloughTocher2DInterpolator(goodpoints,goodsubdata)
+	interpdata=spline(xi,yi)
+
+	if not fill_nans:
+		# identify nan's in xi,yi using nearest neighbors
+		xyinterp=npy.dstack([xi,yi])[0]
+		xydata=npy.dstack([xg.ravel(),yg.ravel()])[0]
+		tree=cKDTree(xydata)
+		nearest=tree.query(xyinterp)[1]
+		pos=npy.nonzero(npy.isnan(flatsubdata[nearest]))
+		interpdata[pos]=flatsubdata[nearest][pos]
+
+	return interpdata
+#}}}
+def RadialInterp(x,y,data,xi,yi,**kwargs):#{{{
+	'''
+	Interpolation using a radial basis function in 2 or 3 dimensions.
+	Useful for smoothing input data after interpolation.
+
+	Uses scipy.interpolate.Rbf
+
+	x,y:			data point coordinates
+	data:			data to be interpolated (same length as x,y)
+	xi,yi:		coordinates to interpolate onto
+	function:	form of radial basis function for interpolation:
+					'multiquadric': sqrt((r/self.epsilon)**2 + 1) (default)
+					'inverse': 1.0/sqrt((r/self.epsilon)**2 + 1)
+					'gaussian': exp(-(r/self.epsilon)**2)
+					'linear': r
+					'cubic': r**3
+					'quintic': r**5
+					'thin_plate': r**2 * log(r)
+	epsilon:		adjustable constant for scaling radial distance.  Defaults to 
+					approximate average distance between nodes.
+	smooth:		float>0, adjusts the amount of smoothing applied.  Defaults to 0,
+					such that the function always passes through nodal points.
+	z:				coordinate array if interpolating in 3 dimensions
+	zi:			coordinate array if interpolating in 3 dimensions
+
+	Usage:
+		interpdata=RadialInterp(x,y,data,**kwargs)
+
+	Examples:
+		interpdata=RadialInterp(md.mesh.x,md.mesh.y,data)
+		interpdata=RadialInterp(md.mesh.x,md.mesh.y,data,function='gaussian',epsilon=100,smooth=1)
+	'''
+
+	# unpack kwargs
+	function=kwargs.pop('function','gaussian')
+	if 'function' in kwargs: del kwargs['function']
+	epsilon=kwargs.pop('epsilon',None)
+	if 'epsilon' in kwargs: del kwargs['epsilon']
+	smooth=kwargs.pop('smooth',0)
+	if 'smooth' in kwargs: del kwargs['smooth']
+	z=kwargs.pop('z',None)
+	if 'z' in kwargs: del kwargs['z']
+	assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
+
+	if z:
+		if epsilon:
+			rbfi=Rbf(x,y,z,data,function=function,smooth=smooth,epsilon=epsilon)
+		else:
+			rbfi=Rbf(x,y,z,data,function=function,smooth=smooth)
+		interpdata=rbfi(xi,yi,zi)
+	else:
+		if epsilon:
+			rbfi=Rbf(x,y,data,function=function,smooth=smooth,epsilon=epsilon)
+		else:
+			rbfi=Rbf(x,y,data,function=function,smooth=smooth)
+		interpdata=rbfi(xi,yi)
+	
+	return interpdata
+#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/inversions/marshallcostfunctions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/inversions/marshallcostfunctions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/inversions/marshallcostfunctions.py	(revision 21239)
@@ -0,0 +1,33 @@
+import copy
+from EnumDefinitions import *
+
+def marshallcostfunctions(cost_functions):
+
+	#copy list first
+	data=copy.deepcopy(cost_functions)
+
+	#convert to  Enums
+	pos=[i for i,x in enumerate(cost_functions) if x==101];
+	for i in pos: data[i]=SurfaceAbsVelMisfitEnum()        
+	pos=[i for i,x in enumerate(cost_functions) if x==102];
+	for i in pos: data[i]=SurfaceRelVelMisfitEnum()        
+	pos=[i for i,x in enumerate(cost_functions) if x==103];
+	for i in pos: data[i]=SurfaceLogVelMisfitEnum()        
+	pos=[i for i,x in enumerate(cost_functions) if x==104];
+	for i in pos: data[i]=SurfaceLogVxVyMisfitEnum()       
+	pos=[i for i,x in enumerate(cost_functions) if x==105];
+	for i in pos: data[i]=SurfaceAverageVelMisfitEnum()    
+	pos=[i for i,x in enumerate(cost_functions) if x==201];
+	for i in pos: data[i]=ThicknessAbsMisfitEnum()         
+	pos=[i for i,x in enumerate(cost_functions) if x==501];
+	for i in pos: data[i]=DragCoefficientAbsGradientEnum() 
+	pos=[i for i,x in enumerate(cost_functions) if x==502];
+	for i in pos: data[i]=RheologyBbarAbsGradientEnum()    
+	pos=[i for i,x in enumerate(cost_functions) if x==503];
+	for i in pos: data[i]=ThicknessAbsGradientEnum()       
+	pos=[i for i,x in enumerate(cost_functions) if x==504];
+	for i in pos: data[i]=ThicknessAlongGradientEnum()     
+	pos=[i for i,x in enumerate(cost_functions) if x==505];
+	for i in pos: data[i]=ThicknessAcrossGradientEnum()    
+
+	return data
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/inversions/parametercontroldrag.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/inversions/parametercontroldrag.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/inversions/parametercontroldrag.py	(revision 21239)
@@ -0,0 +1,118 @@
+def parametercontroldrag(md,*args):
+	"""
+	PARAMETERCONTROLDRAG - parameterization for control method on drag
+
+	It is possible to specify the number of steps, values for the
+	minimum and maximum values of the drag, the 
+	kind of cm_responses to use or the the optscal.
+
+	Usage:
+	   md=parametercontroldrag(md,varargin)
+
+	Example:
+	  md=parametercontroldrag(md)
+	  md=parametercontroldrag(md,'nsteps',20,'cm_responses',0)
+	  md=parametercontroldrag(md,'cm_min',1,'cm_max',150,'cm_jump',0.99,'maxiter',20)
+	  md=parametercontroldrag(md,eps_cm',10^-4,'optscal',[10^7 10^8])
+
+	See also PARAMETERCONTROLB
+	"""
+
+	#process options
+	options=pairoptions(**kwargs)
+
+	#control type
+	md.inversion.control_parameters='FrictionCoefficient'
+
+	#weights
+	weights=options.getfieldvalue('weights',npy.ones(md.mesh.numberofvertices))
+	if npy.size(weights)!=md.mesh.numberofvertices:
+		md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices)
+	else:
+		md.inversion.cost_functions_coefficients=weights
+
+	#nsteps
+	nsteps=options.getfieldvalue('nsteps',100);
+	if (npy.size(nsteps)!=1) | (nsteps<=0) | (floor(nsteps)!=nsteps):
+		md.inversion.nsteps=100
+	else:
+		md.inversion.nsteps=nsteps
+
+	#cm_min
+	cm_min=options.getfieldvalue('cm_min',ones(md.mesh.numberofvertices))
+	if (npy.size(cm_min)==1):
+		md.inversion.min_parameters=cm_min*ones(md.mesh.numberofvertices)
+	elif (npy.size(cm_min)==md.mesh.numberofvertices):
+		md.inversion.min_parameters=cm_min
+	else:
+		md.inversion.min_parameters=cm_min;
+
+	#cm_max
+	cm_max=options.getfieldvalue('cm_max',250*ones(md.mesh.numberofvertices))
+	if (npy.size(cm_max)==1):
+		md.inversion.max_parameters=cm_max*ones(md.mesh.numberofvertices)
+	elif (npy.size(cm_max)==md.mesh.numberofvertices):
+		md.inversion.max_parameters=cm_max
+	else:
+		md.inversion.max_parameters=cm_max
+
+	#eps_cm
+	eps_cm=optoins.getfieldvalue('eps_cm',float('nan'))
+	if (npy.size(eps_cm)~=1 | eps_cm<0 ):
+		md.inversion.cost_function_threshold=float('nan')
+	else:
+		md.inversion.cost_function_threshold=eps_cm
+
+	#maxiter
+	maxiter=options.getfieldvalue('maxiter',10*ones(md.inversion.nsteps))
+	if (npy.any(maxiter<0) | npy.any(floor(maxiter)~=maxiter)):
+		md.inversion.maxiter_per_step=10*ones(md.inversion.nsteps)
+	else:
+		raise RuntimeError("not implemented yet, see below matlab lines")
+		#md.inversion.maxiter_per_step=repmat(maxiter(:),md.inversion.nsteps,1);
+		#md.inversion.maxiter_per_step(md.inversion.nsteps+1:end)=[];
+
+	#cm_jump
+	cm_jump=options.getfieldvalue('cm_jump',0.8*ones(md.inversion.nsteps))
+	if !npy.isreal(cm_jump):
+		md.inversion.step_threshold=0.8*ones(md.inversion.nsteps)
+	else:
+		raise RuntimeError("not implemented yet, see below matlab lines")
+		#md.inversion.step_threshold=repmat(cm_jump(:),md.inversion.nsteps,1);
+		#md.inversion.step_threshold(md.inversion.nsteps+1:end)=[];
+
+	#cm_responses
+	found=0;
+	if options.exist('cm_responses'):
+		cm_responses=options.getfieldvalue('cm_responses')
+		if ~any(~ismember(cm_responses,[101 105])):
+			md.inversion.cost_functions=repmat(cm_responses(:),md.inversion.nsteps,1);
+			md.inversion.cost_functions(md.inversion.nsteps+1:end)=[];
+			found=1;
+	if ~found
+		third=ceil(md.inversion.nsteps/3);
+		md.inversion.cost_functions=[...
+			103*ones(third,1);...
+			101*ones(third,1);...
+			repmat([101;101;103;101],third,1)...
+			];
+		md.inversion.cost_functions(md.inversion.nsteps+1:end)=[];
+	end
+
+	%optscal
+	found=0;
+	if exist(options,'optscal'),
+		optscal=getfieldvalue(options,'optscal');
+		if ~any(optscal<0),
+			md.inversion.gradient_scaling=repmat(optscal(:),md.inversion.nsteps,1);
+			md.inversion.gradient_scaling(md.inversion.nsteps+1:end)=[];
+			found=1;
+		end
+	end
+	if ~found
+		third=ceil(md.inversion.nsteps/3);
+		md.inversion.gradient_scaling=[50*ones(3,1);15*ones(third-3,1);10*ones(third,1);repmat([10;10;20;10],third,1)];
+		md.inversion.gradient_scaling(md.inversion.nsteps+1:end)=[];
+	end
+
+	return md
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/inversions/supportedcontrols.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/inversions/supportedcontrols.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/inversions/supportedcontrols.py	(revision 21239)
@@ -0,0 +1,2 @@
+def supportedcontrols():
+	return ['BalancethicknessThickeningRate','FrictionCoefficient','FrictionAs','MaterialsRheologyBbar','DamageDbar','Vx','Vy']
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/inversions/supportedcostfunctions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/inversions/supportedcostfunctions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/inversions/supportedcostfunctions.py	(revision 21239)
@@ -0,0 +1,2 @@
+def supportedcostfunctions():
+	return [101,102,103,104,105,201,501,502,503,504,505]
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/io/loadmodel.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/io/loadmodel.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/io/loadmodel.py	(revision 21239)
@@ -0,0 +1,35 @@
+from loadvars import loadvars
+from dbm import whichdb
+
+def loadmodel(path):
+	"""
+	LOADMODEL - load a model using built-in load module
+
+	   check that model prototype has not changed. if so, adapt to new model prototype.
+	
+	   Usage:
+	      md=loadmodel(path)
+	"""
+
+	#check existence of database (independent of file extension!)
+	if whichdb(path):
+		#do nothing
+		pass
+	else:
+		raise IOError("loadmodel error message: file '%s' does not exist" % path)
+
+	try:
+		#recover model on file and name it md
+		struc=loadvars(path)
+
+		name=[key for key in struc.keys()]
+		if len(name)>1:
+			raise IOError("loadmodel error message: file '%s' contains several variables. Only one model should be present." % path)
+
+		md=struc[name[0]]
+		return md
+
+	except Exception as me:
+		print(me)
+		raise IOError("could not load model '%s'" % path)
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/io/loadvars.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/io/loadvars.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/io/loadvars.py	(revision 21239)
@@ -0,0 +1,84 @@
+import shelve
+import os.path
+from dbm import whichdb
+
+def loadvars(*args):
+	"""
+	LOADVARS - function to load variables to a file.
+
+	This function loads one or more variables from a file.  The names of the variables
+	must be supplied.  If more than one variable is specified, it may be done with
+	a list of names or a dictionary of name as keys.  The output type will correspond
+	to the input type.  All the variables in the file may be loaded by specifying only
+	the file name.
+
+	Usage:
+	   a=loadvars('shelve.dat','a')
+	   [a,b]=loadvars('shelve.dat',['a','b'])
+	   nvdict=loadvars('shelve.dat',{'a':None,'b':None})
+	   nvdict=loadvars('shelve.dat')
+
+	"""
+
+	filename=''
+	nvdict={}
+
+	if len(args) >= 1 and isinstance(args[0],str):
+		filename=args[0]
+		if not filename:
+			filename='/tmp/shelve.dat'
+
+	else:
+		raise TypeError("Missing file name.")
+
+	if   len(args) >= 2 and isinstance(args[1],str):    # (filename,name)
+		for name in args[1:]:
+			nvdict[name]=None
+
+	elif len(args) == 2 and isinstance(args[1],list):    # (filename,[names])
+		for name in args[1]:
+			nvdict[name]=None
+
+	elif len(args) == 2 and isinstance(args[1],dict):    # (filename,{names:values})
+		nvdict=args[1]
+
+	elif len(args) == 1:    #  (filename)
+		pass
+
+	else:
+		raise TypeError("Unrecognized input arguments.")
+
+	if whichdb(filename):
+		print("Loading variables from file '%s'." % filename)
+	else:
+		raise IOError("File '%s' not found." % filename)
+
+	my_shelf = shelve.open(filename,'r') # 'r' for read-only
+
+	if nvdict:
+		for name in nvdict.keys():
+			try:
+				nvdict[name] = my_shelf[name]
+				print("Variable '%s' loaded." % name)
+			except KeyError:
+				value = None
+				print("Variable '%s' not found." % name)
+
+	else:
+		for name in my_shelf.keys():
+			nvdict[name] = my_shelf[name]
+			print("Variable '%s' loaded." % name)
+
+	my_shelf.close()
+
+	if   len(args) >= 2 and isinstance(args[1],str):    # (value)
+		value=[nvdict[name] for name in args[1:]]
+		return value
+
+	elif len(args) == 2 and isinstance(args[1],list):    # ([values])
+		value=[nvdict[name] for name in args[1]]
+		return value
+
+	elif (len(args) == 2 and isinstance(args[1],dict)) or (len(args) == 1):    # ({names:values})
+		return nvdict
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/io/savevars.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/io/savevars.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/io/savevars.py	(revision 21239)
@@ -0,0 +1,62 @@
+import shelve
+import os.path
+
+def savevars(*args):
+	"""
+	SAVEVARS - function to save variables to a file.
+
+	This function saves one or more variables to a file.  The names of the variables
+	must be supplied.  If more than one variable is specified, it may be done with
+	lists of names and values or a dictionary of name:value pairs.  All the variables
+	in the workspace may be saved by specifying the globals() dictionary, but this
+	may include a lot of extraneous data.
+
+	Usage:
+	   savevars('shelve.dat','a',a)
+	   savevars('shelve.dat',['a','b'],[a,b])
+	   savevars('shelve.dat',{'a':a,'b':b})
+	   savevars('shelve.dat',globals())
+
+	"""
+
+	filename=''
+	nvdict={}
+
+	if len(args) >= 1 and isinstance(args[0],str):
+		filename=args[0]
+		if not filename:
+			filename='/tmp/shelve.dat'
+
+	else:
+		raise TypeError("Missing file name.")
+
+	if   len(args) >= 3 and isinstance(args[1],str):    # (filename,name,value)
+		for i in range(1,len(args),2):
+			nvdict[args[i]]=args[i+1]
+
+	elif len(args) == 3 and isinstance(args[1],list) and isinstance(args[2],list):    # (filename,[names],[values])
+		for name,value in zip(args[1],args[2]):
+			nvdict[name]=value
+
+	elif len(args) == 2 and isinstance(args[1],dict):    # (filename,{names:values})
+		nvdict=args[1]
+
+	else:
+		raise TypeError("Unrecognized input arguments.")
+
+	if os.path.exists(filename):
+		print("Shelving variables to existing file '%s'." % filename)
+	else:
+		print("Shelving variables to new file '%s'." % filename)
+
+	my_shelf = shelve.open(filename,'c') # 'c' for create if not exist, else 'n' for new
+
+	for name,value in nvdict.items():
+		try:
+			my_shelf[name] = value
+			print("Variable '%s' shelved." % name)
+		except TypeError:
+			print("Variable '%s' not shelved." % name)
+
+	my_shelf.close()
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/materials/DepthAvgTempCond.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/materials/DepthAvgTempCond.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/materials/DepthAvgTempCond.py	(revision 21239)
@@ -0,0 +1,34 @@
+import numpy as npy
+from TMeltingPoint  import TMeltingPoint
+
+def DepthAvgTempCond(md):
+   ''' compute conduction dependent temperature profile for an ice sheet. 
+   Usage:
+   Tbar=DepthAvgTempCond(md)
+   '''
+
+   Tpmp=TMeltingPoint(md.materials.meltingpoint,0) #pressure melting point at 0 pressure.
+
+   k=md.materials.thermalconductivity
+   G=md.basalforcings.geothermalflux
+   H=md.geometry.thickness
+   Ts=md.initialization.temperature
+   alpha=G*H/k
+
+   Tbar=npy.zeros(md.mesh.numberofvertices,)
+
+   #find temperature average when we are below melting point: 
+   pos=npy.nonzero( Ts+alpha < Tpmp)
+   if pos:
+	   Tbar[pos]=Ts[pos]+alpha[pos]/2 
+
+   pos=npy.nonzero( Ts+alpha>= Tpmp)
+   if pos:
+	   Tbar[pos]=Tpmp+(Tpmp**2-Ts[pos]**2)/2/alpha[pos]+ Tpmp*(Ts[pos]-Tpmp)/alpha[pos]
+   
+   #on ice shelf, easier: 
+   pos=npy.nonzero(md.mask.groundedice_levelset[0]<=0)
+   if pos:
+	   Tbar[pos]=(Ts[pos]+Tpmp)/2
+
+   return Tbar
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/materials/TMeltingPoint.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/materials/TMeltingPoint.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/materials/TMeltingPoint.py	(revision 21239)
@@ -0,0 +1,21 @@
+import numpy as npy
+
+def TMeltingPoint(reftemp,pressure):
+	'''
+	Calculate the pressure melting point of ice at a given pressure
+
+	reftemp is the melting temperature in K at atmospheric pressure (initialized in md.materials.meltingpoint)
+
+	pressure is in Pa
+
+	Usage:
+		Tm=TMeltingPoint(md.materials.meltingpoint,pressure)
+	'''
+
+	#variables
+	beta=7.9e-8
+
+	#ensure ref is same dimension as pressure
+	ref=reftemp*npy.ones_like(pressure)
+
+	return reftemp-beta*pressure
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/materials/cuffey.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/materials/cuffey.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/materials/cuffey.py	(revision 21239)
@@ -0,0 +1,49 @@
+import numpy
+
+def cuffey(temperature):
+	"""
+	CUFFEY - calculates ice rigidity as a function of temperature
+
+	   rigidity (in s^(1/3)Pa) is the flow law parameter in the flow law sigma=B*e(1/3)
+		(Cuffey and Paterson, p75). 
+	   temperature is in Kelvin degrees
+
+	   Usage:
+	      rigidity=cuffey(temperature)
+	"""
+	
+	if numpy.any(temperature<0.):
+		raise RuntimeError("input temperature should be in Kelvin (positive)")
+	
+	T = temperature.reshape(-1,)-273.15
+
+	rigidity=numpy.zeros_like(T)
+	pos=numpy.nonzero(T<=-45)
+	rigidity[pos]=10**8*(-0.000396645116301*(T[pos]+50)**3+ 0.013345579471334*(T[pos]+50)**2  -0.356868703259105*(T[pos]+50)+7.272363035371383)
+	pos=numpy.nonzero(numpy.logical_and(-45<=T,T<-40))
+	rigidity[pos]=10**8*(-0.000396645116301*(T[pos]+45)**3+ 0.007395902726819*(T[pos]+45)**2  -0.253161292268336*(T[pos]+45)+5.772078366321591)
+	pos=numpy.nonzero(numpy.logical_and(-40<=T,T<-35))
+	rigidity[pos]=10**8*(0.000408322072669*(T[pos]+40)**3+  0.001446225982305*(T[pos]+40)**2  -0.208950648722716*(T[pos]+40)+4.641588833612773)
+	pos=numpy.nonzero(numpy.logical_and(-35<=T,T<-30))
+	rigidity[pos]=10**8*(-0.000423888728124*(T[pos]+35)**3+ 0.007571057072334*(T[pos]+35)**2  -0.163864233449525*(T[pos]+35)+3.684031498640382)
+	pos=numpy.nonzero(numpy.logical_and(-30<=T,T<-25))
+	rigidity[pos]=10**8*(0.000147154327025*(T[pos]+30)**3+ 0.001212726150476*(T[pos]+30)**2  -0.119945317335478*(T[pos]+30)+3.001000667185614)
+	pos=numpy.nonzero(numpy.logical_and(-25<=T,T<-20))
+	rigidity[pos]=10**8*(-0.000193435838672*(T[pos]+25)**3+ 0.003420041055847*(T[pos]+25)**2  -0.096781481303861*(T[pos]+25)+2.449986525148220)
+	pos=numpy.nonzero(numpy.logical_and(-20<=T,T<-15))
+	rigidity[pos]=10**8*(0.000219771255067*(T[pos]+20)**3+  0.000518503475772*(T[pos]+20)**2  -0.077088758645767*(T[pos]+20)+2.027400665191131)
+	pos=numpy.nonzero(numpy.logical_and(-15<=T,T<-10))
+	rigidity[pos]=10**8*(-0.000653438900191*(T[pos]+15)**3+ 0.003815072301777*(T[pos]+15)**2  -0.055420879758021*(T[pos]+15)+1.682390865739973)
+	pos=numpy.nonzero(numpy.logical_and(-10<=T,T<-5))
+	rigidity[pos]=10**8*(0.000692439419762*(T[pos]+10)**3 -0.005986511201093 *(T[pos]+10)**2 -0.066278074254598*(T[pos]+10)+1.418983411970382)
+	pos=numpy.nonzero(numpy.logical_and(-5<=T,T<-2))
+	rigidity[pos]=10**8*(-0.000132282004110*(T[pos]+5)**3 +0.004400080095332*(T[pos]+5)**2    -0.074210229783403*(T[pos]+5)+ 1.024485188140279)
+	pos=numpy.nonzero(-2<=T)
+	rigidity[pos]=10**8*(-0.000132282004110*(T[pos]+2)**3 +0.003209542058346*(T[pos]+2)**2    -0.051381363322371*(T[pos]+2)+ 0.837883605537096)
+
+	#Now make sure that rigidity is positive
+	pos=numpy.nonzero(rigidity<0)
+	rigidity[pos]=1**6 
+
+	return rigidity
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/materials/paterson.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/materials/paterson.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/materials/paterson.py	(revision 21239)
@@ -0,0 +1,79 @@
+import numpy
+
+def paterson(temperature):
+	"""
+	PATERSON - figure out the rigidity of ice for a given temperature
+
+	   rigidity (in s^(1/3)Pa) is the flow law paramter in the flow law sigma=B*e(1/3) (Paterson, p97). 
+	   temperature is in Kelvin degrees
+
+	   Usage:
+	      rigidity=paterson(temperature)
+	"""
+	
+	if numpy.any(temperature<0.):
+		raise RuntimeError("input temperature should be in Kelvin (positive)")
+
+	if numpy.ndim(temperature)==2:
+		#T = temperature.reshape(-1,)-273.15
+		T = temperature.flatten()-273.15
+	elif isinstance(temperature,float) or isinstance(temperature,int):
+		T = numpy.array([temperature])-273.15
+	else:
+		T = temperature-273.15
+
+	#The routine below is equivalent to:
+
+	# n=3; T=temperature-273;
+	# %From paterson,
+	# Temp=[0;-2;-5;-10;-15;-20;-25;-30;-35;-40;-45;-50];
+	# A=[6.8*10^-15;2.4*10^-15;1.6*10^-15;4.9*10^-16;2.9*10^-16;1.7*10^-16;9.4*
+	# 10^-17;5.1*10^-17;2.7*10^-17;1.4*10^-17;7.3*10^-18;3.6*10^-18];;%s-1(kPa-3)
+	# %Convert into rigidity B
+	# B=A.^(-1/n)*10^3; %s^(1/3)Pa
+	# %Now, do a cubic fit between Temp and B: 
+	# fittedmodel=fit(Temp,B,'cubicspline');
+	# rigidity=fittedmodel(temperature);
+
+	rigidity=numpy.zeros_like(T)
+	pos1=numpy.nonzero(T<=-45)[0]
+	if len(pos1):
+		rigidity[pos1]=10**8*(-0.000292866376675*(T[pos1]+50)**3+ 0.011672640664130*(T[pos1]+50)**2  -0.325004442485481*(T[pos1]+50)+  6.524779401948101)
+	pos2=numpy.nonzero(numpy.logical_and(-45<=T,T<-40))[0]
+	if len(pos2):
+		rigidity[pos2]=10**8*(-0.000292866376675*(T[pos2]+45)**3+ 0.007279645014004*(T[pos2]+45)**2  -0.230243014094813*(T[pos2]+45)+  5.154964909039554)
+	pos3=numpy.nonzero(numpy.logical_and(-40<=T,T<-35))[0]
+	if len(pos3):
+		rigidity[pos3]=10**8*(0.000072737147457*(T[pos3]+40)**3+  0.002886649363879*(T[pos3]+40)**2  -0.179411542205399*(T[pos3]+40)+  4.149132666831214)
+	pos4=numpy.nonzero(numpy.logical_and(-35<=T,T<-30))[0]
+	if len(pos4):
+		rigidity[pos4]=10**8*(-0.000086144770023*(T[pos4]+35)**3+ 0.003977706575736*(T[pos4]+35)**2  -0.145089762507325*(T[pos4]+35)+  3.333333333333331)
+	pos5=numpy.nonzero(numpy.logical_and(-30<=T,T<-25))[0]
+	if len(pos5):
+		rigidity[pos5]=10**8*(-0.000043984685769*(T[pos5]+30)**3+ 0.002685535025386*(T[pos5]+30)**2  -0.111773554501713*(T[pos5]+30)+  2.696559088937191)
+	pos6=numpy.nonzero(numpy.logical_and(-25<=T,T<-20))[0]
+	if len(pos6):
+		rigidity[pos6]=10**8*(-0.000029799523463*(T[pos6]+25)**3+ 0.002025764738854*(T[pos6]+25)**2  -0.088217055680511*(T[pos6]+25)+  2.199331606342181)
+	pos7=numpy.nonzero(numpy.logical_and(-20<=T,T<-15))[0]
+	if len(pos7):
+		rigidity[pos7]=10**8*(0.000136920904777*(T[pos7]+20)**3+  0.001578771886910*(T[pos7]+20)**2  -0.070194372551690*(T[pos7]+20)+  1.805165505978111)
+	pos8=numpy.nonzero(numpy.logical_and(-15<=T,T<-10))[0]
+	if len(pos8):
+		rigidity[pos8]=10**8*(-0.000899763781026*(T[pos8]+15)**3+ 0.003632585458564*(T[pos8]+15)**2  -0.044137585824322*(T[pos8]+15)+  1.510778053489523)
+	pos9=numpy.nonzero(numpy.logical_and(-10<=T,T<-5))[0]
+	if len(pos9):
+		rigidity[pos9]=10**8*(0.001676964325070*(T[pos9]+10)**3-  0.009863871256831*(T[pos9]+10)**2  -0.075294014815659*(T[pos9]+10)+  1.268434288203714)
+	pos10=numpy.nonzero(numpy.logical_and(-5<=T,T<-2))[0]
+	if len(pos10):
+		rigidity[pos10]=10**8*(-0.003748937622487*(T[pos10]+5)**3+0.015290593619213*(T[pos10]+5)**2  -0.048160403003748*(T[pos10]+5)+  0.854987973338348)
+	pos11=numpy.nonzero(-2<=T)[0]
+	if len(pos11):
+		rigidity[pos11]=10**8*(-0.003748937622488*(T[pos11]+2)**3-0.018449844983174*(T[pos11]+2)**2  -0.057638157095631*(T[pos11]+2)+  0.746900791092860)
+
+	#Now make sure that rigidity is positive
+	pos=numpy.nonzero(rigidity<0)[0]
+	if len(pos):
+		rigidity[pos]=1.e6 
+
+	return rigidity
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/analyticaldamage.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/analyticaldamage.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/analyticaldamage.py	(revision 21239)
@@ -0,0 +1,106 @@
+import numpy as npy
+from averaging import averaging
+#from plotmodel import plotmodel
+from thomasparams import thomasparams
+
+def analyticaldamage(md,**kwargs):
+	'''
+	ANALYTICALDAMAGE - compute damage for an ice shelf 
+	
+		 This routine computes damage as a function of water/ice
+		 material properties, ice thickness, strain rate, and ice 
+		 rigidity.  The model must contain computed strain rates,
+		 either from observed or modeled ice velocities.
+	
+	   Available options:
+			-eq			: analytical equation to use in the calculation.  Must be one of:
+									'Weertman1D' for a confined ice shelf free to flow in one direction
+									'Weertman2D' for an unconfined ice shelf free to spread in any direction
+									'Thomas' for a 2D ice shelf, taking into account full strain rate tensor (default)
+			-smoothing	: the amount of smoothing to be applied to the strain rate data.
+									Type 'help averaging' for more information on its usage.
+			-coordsys	: coordinate system for calculating the strain rate
+						components. Must be one of:
+			-sigmab		: a compressive backstress term to be subtracted from the driving stress 
+									in the damage calculation
+	
+	   Return values:
+			'damage' which is truncated in the range [0,1-1e-9]
+	
+		   'B' is the rigidity, which is equal to md.materials.rheology_B in areas outside
+			those defined by 'mask.'  Within areas defined by 'mask,' where negative damage 
+			is inferred, 'B' is updated to make damage equal to zero.  
+	
+			'backstress' is the inferred backstress necessary to balance the analytical solution
+			(keeping damage within its appropriate limits, e.g. D in [0,1]).
+	
+	   Usage:
+	      damage,B,backstress=analyticaldamage(md,kwargs)
+	
+	   Example:
+	      damage,B,backstress=analyticaldamage(md,eq='Weertman2D',smoothing=2,sigmab=10e3)
+	'''
+
+	#unpack kwargs
+	eq=kwargs.pop('eq','Thomas')
+	if 'eq' in kwargs: del kwargs['eq']
+	smoothing=kwargs.pop('smoothing',0)
+	if 'smoothing' in kwargs: del kwargs['smoothing']
+	coordsys=kwargs.pop('coordsys','longitudinal')
+	if 'coordsys' in kwargs: del kwargs['coordsys']
+	sigmab=kwargs.pop('sigmab',0)
+	if 'sigmab' in kwargs: del kwargs['sigmab']
+	assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
+
+	if isinstance(sigmab,(int,float)):
+		sigmab=sigmab*npy.ones((md.mesh.numberofvertices,))
+
+	# check inputs
+	if 'strainrate' not in md.results.__dict__:
+		raise Exception('md.results.strainrate not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
+	if not '2d' in md.mesh.__doc__:
+		raise Exception('only 2d (planview) model supported currently')
+	if npy.any(md.flowequation.element_equation!=2):
+		print('Warning: the model has some non SSA elements. These will be treated like SSA elements')
+
+	a,b,theta,ex=thomasparams(md,eq=eq,smoothing=smoothing,coordsys=coordsys)
+	
+	# spreading stress
+	rhoi=md.materials.rho_ice
+	rhow=md.materials.rho_water
+	C=0.5*rhoi*md.constants.g*(1.-rhoi/rhow)
+	T=C*md.geometry.thickness
+	
+	# rheology
+	B=md.materials.rheology_B
+	n=averaging(md,md.materials.rheology_n,0)
+	
+	D=1.-(1.+a+a**2+b**2)**((n-1.)/(2.*n))/npy.abs(ex)**(1./n)*(T-sigmab)/B/(2.+a)/npy.sign(ex)
+	
+	# D>1 where (2+a).*sign(ex)<0, compressive regions where high backstress needed
+	pos=npy.nonzero(D>1)
+	D[pos]=0
+	
+	backstress=npy.zeros((md.mesh.numberofvertices,))
+
+	# backstress to bring D down to one 
+	backstress[pos]=T[pos]-(1.-D[pos])*B[pos]*npy.sign(ex[pos])*(2.+a[pos])*npy.abs(ex[pos])**(1./n[pos])/(1.+a[pos]+a[pos]**2)**((n[pos]-1.)/2./n[pos])
+	
+	pos=npy.nonzero(D<0)
+	#mask=ismember(1:md.mesh.numberofvertices,pos);
+	D[pos]=0
+	
+	# backstress to bring negative damage to zero
+	backstress[pos]=T[pos]-(1.-D[pos])*B[pos]*npy.sign(ex[pos])*(2.+a[pos])*npy.abs(ex[pos])**(1./n[pos])/(1.+a[pos]+a[pos]**2)**((n[pos]-1.)/2./n[pos])
+	
+	pos=npy.nonzero(backstress<0)
+	backstress[pos]=0
+	
+	# rigidity from Thomas relation for D=0 and backstress=0
+	B=npy.sign(ex)/(2.+a)*(1.+a+a**2)**((n-1.)/2./n)*T/(npy.abs(ex)**(1./n))
+	pos=npy.nonzero(B<0)
+	B[pos]=md.materials.rheology_B[pos]
+	
+	damage=D
+	
+	return damage, B, backstress
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/backstressfrominversion.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/backstressfrominversion.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/backstressfrominversion.py	(revision 21239)
@@ -0,0 +1,74 @@
+import numpy as npy
+from averaging import averaging
+from thomasparams import thomasparams
+
+def backstressfrominversion(md,**kwargs):
+	'''
+	Compute ice shelf backstress from inversion results.
+
+	This routine computes backstress based on the analytical formalism of
+	Thomas (1973) and Borstad et al. (2013, The Cryosphere).  The model
+	must contain inversion results for ice rigidity.  Strain rates must
+	also be included, either from observed or modeled velocities.  Ice
+	rigidity B is assumed to be parameterized by the ice temperature in
+	md.materials.rheology_B.
+
+   Available options:
+		- 'tempmask'	: mask the inverted rigidity to be no more than
+							appropriate for the temperature of the ice?  
+							Boolean, defaults to false.
+		- 'smoothing'	: the amount of smoothing to be applied to the strain rate data.
+								Type 'help averaging' for more information on its
+								usage. Defaults to 0.
+		- 'coordsys'	: coordinate system for calculating the strain rate
+							components. Must be one of: 
+				'longitudinal': x axis aligned along a flowline at every point (default)
+				'principal': x axis aligned along maximum principal strain rate
+					at every point
+				'xy': x and y axes same as in polar stereographic projection 
+
+   Return values:
+		'backstress' is the inferred backstress based on the analytical
+		solution for ice shelf creep
+
+   Usage:
+      backstress=backstressfrominversion(md,options)
+
+   Example:
+      backstress=backstressfrominversion(md,'smoothing',2,'coordsys','longitudinal','tempmask',true);
+	'''
+
+	# unpack kwargs
+	tempmask=kwargs.pop('tempmask',False)
+	if 'tempmask' in kwargs: del kwargs['maxiter']
+	smoothing=kwargs.pop('smoothing',0)
+	if 'smoothing' in kwargs: del kwargs['smoothing']
+	coordsys=kwargs.pop('coordsys','longitudinal')
+	if 'coordsys' in kwargs: del kwargs['coordsys']
+	assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
+
+	# some checks
+	if not hasattr(md.results,'strainrate'):
+		raise Exception('md.results.strainrate not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
+	if not '2d' in md.mesh.__doc__:
+		raise Exception('only 2d (planview) model supported currently')
+	if any(md.flowequation.element_equation!=2):
+		raise Exception('Warning: the model has some non-SSA elements.  These will be treated like SSA elements')
+
+	T=0.5*md.materials.rho_ice*md.constants.g*(1-md.materials.rho_ice/md.materials.rho_water)*md.geometry.thickness
+	n=averaging(md,md.materials.rheology_n,0)
+	B=md.materials.rheology_B
+	Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar.reshape(-1,)
+	
+	a0,b0,theta0,ex0=thomasparams(md,eq='Thomas',smoothing=smoothing,coordsys=coordsys)
+	
+	if tempmask:
+		Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar
+		pos=npy.nonzero(Bi>md.materials.rheology_B)
+		Bi[pos]=md.materials.rheology_B[pos]
+	
+	# analytical backstress solution
+	backstress=T-Bi*npy.sign(ex0)*(2+a0)*npy.abs(ex0)**(1./n)/((1+a0+a0**2+b0**2)**((n-1.)/2./n))
+	backstress[npy.nonzero(backstress<0)]=0
+
+	return backstress
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/calcbackstress.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/calcbackstress.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/calcbackstress.py	(revision 21239)
@@ -0,0 +1,66 @@
+import numpy as npy
+from averaging import averaging
+from thomasparams import thomasparams
+
+def calcbackstress(md,**kwargs):
+	'''
+	Compute ice shelf backstress.
+
+	This routine computes backstress based on the analytical formalism of
+	Thomas (1973) and Borstad et al. (2013, The Cryosphere) based on the
+	ice rigidity, thickness, the densities of ice and seawater, and
+	(optionally) damage.  Strain rates must also be included, either from
+	observed or modeled velocities. 
+	
+	Available options:
+		- 'smoothing'	: the amount of smoothing to be applied to the strain rate data.
+								Type 'help averaging' for more information on its
+								usage. Defaults to 0.
+		- 'coordsys'	: coordinate system for calculating the strain rate
+							components. Must be one of: 
+				'longitudinal': x axis aligned along a flowline at every point (default)
+				'principal': x axis aligned along maximum principal strain rate
+					at every point
+				'xy': x and y axes same as in polar stereographic projection 
+
+   Return values:
+		'backstress' is the inferred backstress based on the analytical
+		solution for ice shelf creep
+
+   Usage:
+      backstress=calcbackstress(md,options)
+
+   Example:
+      backstress=calcbackstress(md,'smoothing',2,'coordsys','longitudinal')
+	'''
+
+	# unpack kwargs
+	smoothing=kwargs.pop('smoothing',0)
+	if 'smoothing' in kwargs: del kwargs['smoothing']
+	coordsys=kwargs.pop('coordsys','longitudinal')
+	if 'coordsys' in kwargs: del kwargs['coordsys']
+	assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
+
+	# some checks
+	if not hasattr(md.results,'strainrate'):
+		raise Exception('md.results.strainrate not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
+	if not '2d' in md.mesh.__doc__:
+		raise Exception('only 2d (planview) model supported currently')
+	if any(md.flowequation.element_equation!=2):
+		raise Exception('Warning: the model has some non-SSA elements.  These will be treated like SSA elements')
+
+	T=0.5*md.materials.rho_ice*md.constants.g*(1-md.materials.rho_ice/md.materials.rho_water)*md.geometry.thickness
+	n=averaging(md,md.materials.rheology_n,0)
+	B=md.materials.rheology_B
+	if md.damage.isdamage:
+		D=md.damage.D
+	else:
+		D=0.
+	
+	a0,b0,theta0,ex0=thomasparams(md,eq='Thomas',smoothing=smoothing,coordsys=coordsys)
+	
+	# analytical backstress solution
+	backstress=T-(1.-D)*B*npy.sign(ex0)*(2+a0)*npy.abs(ex0)**(1./n)/((1+a0+a0**2+b0**2)**((n-1.)/2./n))
+	backstress[npy.nonzero(backstress<0)]=0
+
+	return backstress
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/damagefrominversion.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/damagefrominversion.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/damagefrominversion.py	(revision 21239)
@@ -0,0 +1,44 @@
+import numpy as npy
+
+def damagefrominversion(md):
+	'''
+	compute ice shelf damage from inversion results
+
+	This routine computes damage based on the analytical formalism of Borstad et
+	al. (2013, The Cryosphere).  The model must contain inversion results for
+	ice rigidity.  Ice rigidity B is assumed to be parameterized by the ice
+	temperature in md.materials.rheology_B. 
+	
+	Usage:
+		damage=damagefrominversion(md)
+	
+	Example:
+		damage=damagefrominversion(md)
+	'''
+
+	# check inputs
+	if not hasattr(md.results,'strainrate'):
+		raise Exception('md.results.strainrate is not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
+	if not '2d' in md.mesh.__doc__:
+		raise Exception('only 2d (planview) model supported currently')
+	if any(md.flowequation.element_equation!=2):
+		raise Exception('Warning: the model has some non-SSA elements.  These will be treated like SSA elements')
+	if npy.ndim(md.results.StressbalanceSolution.MaterialsRheologyBbar)==2:
+		Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar.reshape(-1,)
+	else:
+		Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar
+	if npy.ndim(md.materials.rheology_B)==2:
+		BT=md.materials.rheology_B.reshape(-1,)
+	else:
+		BT=md.materials.rheology_B
+
+	damage=npy.zeros_like(Bi)
+
+	# Damage where Bi softer than B(T)
+	pos=npy.nonzero(Bi<BT)[0]
+	damage[pos]=1.-Bi[pos]/BT[pos]
+	
+	pos=npy.nonzero(damage<0)
+	damage[pos]=0
+
+	return damage
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/mechanicalproperties.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/mechanicalproperties.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/mechanicalproperties.py	(revision 21239)
@@ -0,0 +1,160 @@
+import numpy as npy
+from GetNodalFunctionsCoeff import GetNodalFunctionsCoeff
+from results import results
+from averaging import averaging
+
+def mechanicalproperties(md,vx,vy,**kwargs):
+	"""
+	MECHANICALPROPERTIES - compute stress and strain rate for a goven velocity
+	
+   this routine computes the components of the stress tensor
+   strain rate tensor and their respective principal directions.
+   the results are in the model md: md.results
+	
+   Usage:
+      md=mechanicalproperties(md,vx,vy)
+	
+   Example:
+      md=mechanicalproperties(md,md.initialization.vx,md.initialization.vy)
+      md=mechanicalproperties(md,md.inversion.vx_obs,md.inversion.vy_obs)
+	"""
+
+	#some checks
+	if len(vx)!=md.mesh.numberofvertices or len(vy)!=md.mesh.numberofvertices:
+		raise ValueError('the input velocity should be of size ' + md.mesh.numberofvertices)
+	
+	#if md.mesh.dimension!=2:
+	#	raise StandardError('only 2D model supported currently')
+
+	if npy.any(md.flowequation.element_equation!=2):
+		print('Warning: the model has some non SSA elements. These will be treated like SSA elements')
+
+        #unpack kwargs
+	if 'damage' in kwargs: 
+	    damage=kwargs.pop('damage')
+            if len(damage)!=md.mesh.numberofvertices:
+		raise ValueError('if damage is supplied it should be of size ' + md.mesh.numberofvertices)
+            if npy.ndim(damage)==2:
+                damage=damage.reshape(-1,)
+        else: damage=None
+
+	if npy.ndim(vx)==2:
+		vx=vx.reshape(-1,)
+	if npy.ndim(vy)==2:
+		vy=vy.reshape(-1,)
+	
+	#initialization
+	numberofelements=md.mesh.numberofelements
+	numberofvertices=md.mesh.numberofvertices
+	index=md.mesh.elements
+	summation=npy.array([[1],[1],[1]])
+	directionsstress=npy.zeros((numberofelements,4))
+	directionsstrain=npy.zeros((numberofelements,4))
+	valuesstress=npy.zeros((numberofelements,2))
+	valuesstrain=npy.zeros((numberofelements,2))
+	
+	#compute nodal functions coefficients N(x,y)=alpha x + beta y +gamma
+	alpha,beta=GetNodalFunctionsCoeff(index,md.mesh.x,md.mesh.y)[0:2]
+	
+	#compute shear
+	vxlist=vx[index-1]/md.constants.yts
+	vylist=vy[index-1]/md.constants.yts
+	ux=npy.dot((vxlist*alpha),summation).reshape(-1,)
+	uy=npy.dot((vxlist*beta),summation).reshape(-1,)
+	vx=npy.dot((vylist*alpha),summation).reshape(-1,)
+	vy=npy.dot((vylist*beta),summation).reshape(-1,)
+	uyvx=(vx+uy)/2.
+	#clear vxlist vylist
+	
+	#compute viscosity
+	nu=npy.zeros((numberofelements,))
+	B_bar=npy.dot(md.materials.rheology_B[index-1],summation/3.).reshape(-1,)
+	power=((md.materials.rheology_n-1.)/(2.*md.materials.rheology_n)).reshape(-1,)
+	second_inv=(ux**2.+vy**2.+((uy+vx)**2.)/4.+ux*vy).reshape(-1,)
+	
+	#some corrections
+	location=npy.nonzero(npy.logical_and(second_inv==0,power!=0))
+	nu[location]=10^18 	#arbitrary maximum viscosity to apply where there is no effective shear
+	
+	if 'matice' in md.materials.__module__:
+		location=npy.nonzero(second_inv)
+		nu[location]=B_bar[location]/(second_inv[location]**power[location])
+		location=npy.nonzero(npy.logical_and(second_inv==0,power==0))
+		nu[location]=B_bar[location]
+		location=npy.nonzero(npy.logical_and(second_inv==0,power!=0))
+		nu[location]=10^18
+	elif 'matdamageice' in md.materials.__module__ and damage is not None:
+		print('computing damage-dependent properties!')
+		Zinv=npy.dot(1-damage[index-1],summation/3.).reshape(-1,)
+		location=npy.nonzero(second_inv)
+		nu[location]=Zinv[location]*B_bar[location]/npy.power(second_inv[location],power[location])
+		location=npy.nonzero(npy.logical_and(second_inv==0,power==0))
+		nu[location]=Zinv[location]*B_bar[location]
+		#clear Zinv
+	else:
+		raise Exception('class of md.materials (' + md.materials.__module__ + ') not recognized or not supported')
+	
+	#compute stress
+	tau_xx=nu*ux
+	tau_yy=nu*vy
+	tau_xy=nu*uyvx
+	
+	#compute principal properties of stress
+	for i in npy.arange(numberofelements):
+	
+		#compute stress and strainrate matrices
+		stress=npy.array([ [tau_xx[i], tau_xy[i]], [tau_xy[i], tau_yy[i]] ])
+		strain=npy.array([ [ux[i], uyvx[i]], [uyvx[i], vy[i]] ])
+	
+		#eigenvalues and vectors for stress
+		value,directions=npy.linalg.eig(stress);
+		idx=abs(value).argsort()[::-1] # sort in descending order
+		value=value[idx]
+		directions=directions[:,idx]
+		valuesstress[i,:]=[value[0],value[1]]
+		directionsstress[i,:]=directions.transpose().flatten()
+
+		#eigenvalues and vectors for strain
+		value,directions=npy.linalg.eig(strain);
+		idx=abs(value).argsort()[::-1] # sort in descending order
+		value=value[idx]
+		directions=directions[:,idx]
+		valuesstrain[i,:]=[value[0],value[1]]
+		directionsstrain[i,:]=directions.transpose().flatten()
+
+	##plug onto the model
+	##NB: Matlab sorts the eigen value in increasing order, we want the reverse
+	stress=results()
+	stress.xx=tau_xx
+	stress.yy=tau_yy
+	stress.xy=tau_xy
+	stress.principalvalue1=valuesstress[:,0]
+	stress.principalaxis1=directionsstress[:,0:2]
+	stress.principalvalue2=valuesstress[:,1]
+	stress.principalaxis2=directionsstress[:,2:4]
+	stress.effectivevalue=1./npy.sqrt(2.)*npy.sqrt(stress.xx**2+stress.yy**2+2.*stress.xy**2)
+	md.results.stress=stress
+	
+	strainrate=results()
+	strainrate.xx=ux*md.constants.yts #strain rate in 1/a instead of 1/s
+	strainrate.yy=vy*md.constants.yts 
+	strainrate.xy=uyvx*md.constants.yts 
+	strainrate.principalvalue1=valuesstrain[:,0]*md.constants.yts 
+	strainrate.principalaxis1=directionsstrain[:,0:2]
+	strainrate.principalvalue2=valuesstrain[:,1]*md.constants.yts 
+	strainrate.principalaxis2=directionsstrain[:,2:4]
+	strainrate.effectivevalue=1./npy.sqrt(2.)*npy.sqrt(strainrate.xx**2+strainrate.yy**2+2.*strainrate.xy**2)
+	md.results.strainrate=strainrate
+	
+	deviatoricstress=results()
+	deviatoricstress.xx=tau_xx
+	deviatoricstress.yy=tau_yy
+	deviatoricstress.xy=tau_xy
+	deviatoricstress.principalvalue1=valuesstress[:,0]
+	deviatoricstress.principalaxis1=directionsstress[:,1:2]
+	deviatoricstress.principalvalue2=valuesstress[:,1]
+	deviatoricstress.principalaxis2=directionsstress[:,2:4]
+	deviatoricstress.effectivevalue=1./npy.sqrt(2.)*npy.sqrt(stress.xx**2+stress.yy**2+2.*stress.xy**2)
+	md.results.deviatoricstress=deviatoricstress
+
+	return md
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/robintemperature.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/robintemperature.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/robintemperature.py	(revision 21239)
@@ -0,0 +1,42 @@
+import numpy as npy
+from scipy.special import erf
+
+def robintemperature(heatflux,accumrate,thickness,surftemp,z):
+	'''
+	Compute vertical temperature profile of an ice sheet (Robin, 1955)
+
+	This routine computes the vertical temperature profile of an ice sheet
+	according to the solution of Robin (1955), neglecting friction and
+	horizontal advection.  The solution is thus most appropriate at an ice
+	divide.
+
+	The coordinate system for the solution runs from z=0 at the base 
+	to z=H at the surface of the ice.
+
+	Parameters (SI units):
+		-heatflux	Geothermal heat flux (W m^-2)
+		-accumrate	Surface accumulation rate (m s^-1 ice equivalent)
+		-thickness	Ice thickness (m)
+		-surftemp	Surface temperature (K)
+		-z				Vertical position at which to calculate temperature
+						(z can be a scalar or a vector)
+
+	Returns a vector the same length as z containing the temperature in K
+
+	Usage:
+		tprofile=robintemperature(heatflux,accumrate,thickness,surftemp,z)
+	'''
+
+	# some constants (from Holland and Jenkins, 1999)
+	alphaT=1.14e-6 # thermal diffusivity (m^2 s^-1)
+	c=2009. # specific heat capacity (J kg^-1 K^-1)
+	rho=917.  # ice density (kg m^-3)
+	
+	#create vertical coordinate variable
+	zstar=npy.sqrt(2.*alphaT*thickness/accumrate)
+	
+	tprofile=surftemp+npy.sqrt(2.*thickness*npy.pi/accumrate/alphaT)*(-heatflux)/2./rho/c*(erf(z/zstar)-erf(thickness/zstar))
+
+	return tprofile	
+	# difference between surface and base temperature for check (Cuffey2010 p412):
+	# print tprofile-surftemp
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/steadystateiceshelftemp.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/steadystateiceshelftemp.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/steadystateiceshelftemp.py	(revision 21239)
@@ -0,0 +1,65 @@
+import numpy as npy
+
+def steadystateiceshelftemp(md,surfacetemp,basaltemp):
+	"""
+	Compute the depth-averaged steady-state temperature of an ice shelf 
+	This routine computes the depth-averaged temperature accounting for vertical advection 
+	and diffusion of heat into the base of the ice shelf as a function of surface and basal 
+	temperature and the basal melting rate.  Horizontal advection is ignored.
+   The solution is a depth-averaged version of Equation 25 in Holland and Jenkins (1999).
+
+	In addition to supplying md, the surface and basal temperatures of the ice shelf must be supplied in degrees Kelvin.
+
+	The model md must also contain the fields: 
+	md.geometry.thickness
+	md.basalforcings.floatingice_melting_rate (positive for melting, negative for freezing)
+
+   Usage:
+      temperature=steadystateiceshelftemp(md,surfacetemp,basaltemp)
+	"""
+
+	if len(md.geometry.thickness)!=md.mesh.numberofvertices:
+		raise ValueError('steadystateiceshelftemp error message: thickness should have a length of ' + md.mesh.numberofvertices)
+	
+	#surface and basal temperatures in degrees C
+	if len(surfacetemp)!=md.mesh.numberofvertices:
+		raise ValueError('steadystateiceshelftemp error message: surfacetemp should have a length of ' + md.mesh.numberofvertices)
+	
+	if len(basaltemp)!=md.mesh.numberofvertices:
+		raise ValueError('steadystateiceshelftemp error message: basaltemp should have a length of ' +md.mesh.numberofvertices)
+	
+	# Convert temps to Celsius for Holland and Jenkins (1999) equation
+	Ts=-273.15+surfacetemp
+	Tb=-273.15+basaltemp
+	
+	Hi=md.geometry.thickness
+	ki=1.14e-6*md.constants.yts # ice shelf thermal diffusivity from Holland and Jenkins (1999) converted to m^2/yr 
+	
+	#vertical velocity of ice shelf, calculated from melting rate 
+	wi=md.materials.rho_water/md.materials.rho_ice*md.basalforcings.floatingice_melting_rate 
+	
+	#temperature profile is linear if melting rate is zero, depth-averaged temp is simple average in this case
+	temperature=(Ts+Tb)/2  # where wi~=0
+	
+	pos=npy.nonzero(abs(wi)>=1e-4) # to avoid division by zero
+
+	npy.seterr(over='raise',divide='raise') # raise errors if floating point exceptions are encountered in following calculation
+	#calculate depth-averaged temperature (in Celsius)
+	try:
+		temperature[pos]=-( (Tb[pos]-Ts[pos])*ki/wi[pos] + Hi[pos]*Tb[pos] - (Hi[pos]*Ts[pos] + (Tb[pos]-Ts[pos])*ki/wi[pos])*npy.exp(Hi[pos]*wi[pos]/ki) )/( Hi[pos]*(npy.exp(Hi[pos]*wi[pos]/ki)-1))
+	except FloatingPointError:
+		print('steadystateiceshelf warning: overflow encountered in multipy/divide/exp, trying another formulation.') 
+		temperature[pos]=-( ((Tb[pos]-Ts[pos])*ki/wi[pos] + Hi[pos]*Tb[pos])/npy.exp(Hi[pos]*wi[pos]/ki) - Hi[pos]*Ts[pos] + (Tb[pos]-Ts[pos])*ki/wi[pos])/( Hi[pos]*(1-npy.exp(-Hi[pos]*wi[pos]/ki)))
+	
+	#temperature should not be less than surface temp
+	pos=npy.nonzero(temperature<Ts)
+	temperature[pos]=Ts[pos]
+	
+	# NaN where melt rates are too high (infinity/infinity in exponential)
+	pos=npy.nonzero(npy.isnan(temperature))
+	temperature[pos]=Ts[pos]
+	
+	#convert to Kelvin
+	temperature=temperature+273.15
+
+	return temperature
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/thomasparams.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/thomasparams.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mech/thomasparams.py	(revision 21239)
@@ -0,0 +1,145 @@
+import numpy as npy
+from averaging import averaging
+
+def thomasparams(md,**kwargs):
+	'''
+	compute Thomas' geometric parameters for an ice shelf 
+
+	This routine computes geometric parameters representing ratios between
+	components of the horizontal strain rate tensor for an ice shelf, as
+	originally developed in Thomas (1973).  The model must contain computed
+	strain rates, either from observed or modeled ice velocities.
+
+   Available options:
+	 -eq			: analytical equation to use in the calculation.  Must be one of:
+				'Thomas' for a 2D ice shelf, taking into account full strain rate
+					tensor (default)
+				'Weertman1D' for a confined ice shelf free to flow in one direction
+				'Weertman2D' for an unconfined ice shelf free to spread in any direction
+
+	 -smoothing	: an integer smoothing parameter for the averaging function
+						(default 0) Type 'help averaging' for more information on its usage.
+
+	 -coordsys	: coordinate system for calculating the strain rate
+						components. Must be one of:
+				'longitudinal': x axis aligned along a flowline at every point (default)
+				'principal': x axis aligned along maximum principal strain rate
+					at every point
+				'xy': x and y axes same as in polar stereographic projection 
+
+   Return values: 
+
+		'alpha' which is the ratio e_yy/e_xx between components of the strain
+		rate tensor
+
+		'beta' which is the ratio e_xy/e_xx between components of the strain rate
+		tensor
+
+		'theta' which is a combination of alpha and beta arising from the form of
+		the equivalent stress
+
+		'exx' is the strain rate along a coordinate system defined by 'coordsys' 
+
+		'sigxx' is the deviatoric stress along a coordinate system defined by 'coordsys' 
+
+   Usage: 
+		alpha,beta,theta,exx,sigxx=thomasparams(md)
+
+   Example: 
+		alpha,beta,theta,exx,sigxx=thomasparams(md,eq='Thomas',smoothing=2,coordsys='longitudinal')
+	'''
+
+	#unpack kwargs
+	eq=kwargs.pop('eq','Thomas')
+	if 'eq' in kwargs: del kwargs['eq']
+	smoothing=kwargs.pop('smoothing',0)
+	if 'smoothing' in kwargs: del kwargs['smoothing']
+	coordsys=kwargs.pop('coordsys','longitudinal')
+	if 'coordsys' in kwargs: del kwargs['coordsys']
+	assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
+
+	# some checks
+	if not hasattr(md.results,'strainrate'):
+		raise Exception('md.results.strainrate not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
+	if not '2d' in md.mesh.__doc__:
+		raise Exception('only 2d (planview) model supported currently')
+	if any(md.flowequation.element_equation!=2):
+		raise Exception('Warning: the model has some non-SSA elements.  These will be treated like SSA elements')
+
+	# average element strain rates onto vertices
+	e1=averaging(md,md.results.strainrate.principalvalue1,smoothing)/md.constants.yts # convert to s^-1
+	e2=averaging(md,md.results.strainrate.principalvalue2,smoothing)/md.constants.yts
+	exx=averaging(md,md.results.strainrate.xx,smoothing)/md.constants.yts
+	eyy=averaging(md,md.results.strainrate.yy,smoothing)/md.constants.yts
+	exy=averaging(md,md.results.strainrate.xy,smoothing)/md.constants.yts
+	
+	# checks: any of e1 or e2 equal to zero?
+	pos=npy.nonzero(e1==0)
+	if npy.any(pos==1):
+		print('WARNING: first principal strain rate equal to zero.  Value set to 1e-13 s^-1')
+		e1[pos]=1.e-13
+	pos=npy.nonzero(e2==0)
+	if npy.any(pos==1):
+		print('WARNING: second principal strain rate equal to zero.  Value set to 1e-13 s^-1')
+		e2[pos]=1.e-13
+	
+	# rheology
+	n=averaging(md,md.materials.rheology_n,0)
+	B=md.materials.rheology_B
+	
+	if coordsys=='principal':
+		b=npy.zeros((md.mesh.numberofvertices,))
+		ex=e1
+		a=e2/e1
+		pos=npy.nonzero(npy.logical_and(e1<0,e2>0)) # longitudinal compression and lateral tension
+		a[pos]=e1[pos]/e2[pos]
+		ex[pos]=e2[pos]
+		pos2=npy.nonzero(e1<0 & e2<0 & npy.abs(e1)<npy.abs(e2)) # lateral and longitudinal compression
+		a[pos2]=e1[pos2]/e2[pos2]
+		ex[pos2]=e2[pos2]
+		pos3=npy.nonzero(e1>0 & e2>0 & npy.abs(e1)<npy.abs(e2)) # lateral and longitudinal tension
+		a[pos3]=e1[pos3]/e2[pos3]
+		ex[pos3]=e2[pos3]
+		ind=npy.nonzero(e1<0 & e2<0)
+		a[ind]=-a[ind] # where both strain rates are compressive, enforce negative alpha
+		sigxx=(npy.abs(ex)/((1.+a+a**2)**((n-1.)/2.)))**(1./n)*B
+	elif coordsys=='xy':
+		ex=exx
+		a=eyy/exx
+		b=exy/exx
+	elif coordsys=='longitudinal':
+		# using longitudinal strain rates defined by observed velocity vector
+		velangle=npy.arctan(md.initialization.vy/md.initialization.vx)
+		pos=npy.nonzero(md.initialization.vx==0)
+		velangle[pos]=npy.pi/2
+		ex=0.5*(exx+eyy)+0.5*(exx-eyy)*npy.cos(2.*velangle)+exy*npy.sin(2.*velangle)
+		ey=exx+eyy-ex # trace of strain rate tensor is invariant
+		exy=-0.5*(exx-eyy)*npy.sin(2.*velangle)+exy*npy.cos(2.*velangle)
+		a=ey/ex
+		b=exy/ex
+		sigxx=abs(ex)**(1./n-1.)*ex/((1.+a+a**2+b**2)**((n-1.)/(2.*n)))*B
+	else:
+		raise ValueError('argument passed to "coordsys" not valid')
+	
+	# a < -1 in areas of strong lateral compression or longitudinal compression and
+	# theta flips sign at a = -2
+	pos=npy.nonzero(npy.abs((npy.abs(a)-2.))<1.e-3)
+	if len(pos)>0:
+		print('Warning: ', len(pos), ' vertices have alpha within 1e-3 of -2')
+	a[pos]=-2+1e-3
+
+	if eq=='Weertman1D':
+		theta=1./8
+		a=npy.zeros((md.mesh.numberofvertices,))
+	elif eq=='Weertman2D':
+		theta=1./9
+		a=npy.ones((md.mesh.numberofvertices,))
+	elif eq=='Thomas':
+		theta=((1.+a+a**2+b**2)**((n-1.)/2.))/(npy.abs(2.+a)**n)
+	else:
+		raise ValueError('argument passed to "eq" not valid')
+
+	alpha=a
+	beta=b
+
+	return alpha,beta,theta,ex
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/ComputeHessian.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/ComputeHessian.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/ComputeHessian.py	(revision 21239)
@@ -0,0 +1,66 @@
+import numpy
+from GetNodalFunctionsCoeff import GetNodalFunctionsCoeff
+from GetAreas import GetAreas
+import MatlabFuncs as m
+
+def ComputeHessian(index,x,y,field,type):
+	"""
+	COMPUTEHESSIAN - compute hessian matrix from a field
+
+	   Compute the hessian matrix of a given field
+	   return the three components Hxx Hxy Hyy
+	   for each element or each node
+
+	   Usage:
+	      hessian=ComputeHessian(index,x,y,field,type)
+
+	   Example:
+	      hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,md.inversion.vel_obs,'node')
+	"""
+
+	#some variables
+	numberofnodes=numpy.size(x)
+	numberofelements=numpy.size(index,axis=0)
+
+	#some checks
+	if numpy.size(field)!=numberofnodes and numpy.size(field)!=numberofelements:
+		raise TypeError("ComputeHessian error message: the given field size not supported yet")
+	if not m.strcmpi(type,'node') and not m.strcmpi(type,'element'):
+		raise TypeError("ComputeHessian error message: only 'node' or 'element' type supported yet")
+
+	#initialization
+	line=index.reshape(-1,order='F')
+	linesize=3*numberofelements
+
+	#get areas and nodal functions coefficients N(x,y)=alpha x + beta y + gamma 
+	[alpha,beta,dum]=GetNodalFunctionsCoeff(index,x,y)
+	areas=GetAreas(index,x,y)
+
+	#compute weights that hold the volume of all the element holding the node i
+	weights=m.sparse(line,numpy.ones((linesize,1)),numpy.tile(areas.reshape(-1,1),(3,1)),numberofnodes,1)
+
+	#compute field on nodes if on elements
+	if numpy.size(field,axis=0)==numberofelements:
+		field=m.sparse(line,numpy.ones((linesize,1)),numpy.tile(areas*field,(3,1)),numberofnodes,1)/weights
+
+	#Compute gradient for each element
+	grad_elx=numpy.sum(field[index-1,0]*alpha,axis=1) 
+	grad_ely=numpy.sum(field[index-1,0]*beta,axis=1)
+
+	#Compute gradient for each node (average of the elements around)
+	gradx=m.sparse(line,numpy.ones((linesize,1)),numpy.tile((areas*grad_elx).reshape(-1,1),(3,1)),numberofnodes,1)
+	grady=m.sparse(line,numpy.ones((linesize,1)),numpy.tile((areas*grad_ely).reshape(-1,1),(3,1)),numberofnodes,1)
+	gradx=gradx/weights
+	grady=grady/weights
+
+	#Compute hessian for each element
+	hessian=numpy.hstack((numpy.sum(gradx[index-1,0]*alpha,axis=1).reshape(-1,1),numpy.sum(grady[index-1,0]*alpha,axis=1).reshape(-1,1),numpy.sum(grady[index-1,0]*beta,axis=1).reshape(-1,1)))
+
+	if m.strcmpi(type,'node'):
+		#Compute Hessian on the nodes (average of the elements around)
+		hessian=numpy.hstack((m.sparse(line,numpy.ones((linesize,1)),numpy.tile((areas*hessian[:,0]).reshape(-1,1),(3,1)),numberofnodes,1)/weights, \
+			m.sparse(line,numpy.ones((linesize,1)),numpy.tile((areas*hessian[:,1]).reshape(-1,1),(3,1)),numberofnodes,1)/weights, \
+			m.sparse(line,numpy.ones((linesize,1)),numpy.tile((areas*hessian[:,2]).reshape(-1,1),(3,1)),numberofnodes,1)/weights ))
+
+	return hessian
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/ComputeMetric.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/ComputeMetric.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/ComputeMetric.py	(revision 21239)
@@ -0,0 +1,74 @@
+import numpy
+
+def ComputeMetric(hessian,scale,epsilon,hmin,hmax,pos):
+	"""
+	COMPUTEMETRIC - compute metric from an Hessian
+
+	   Usage:
+	      metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,pos)
+	      pos is contains the positions where the metric is wished to be maximized (water?)
+
+	   Example:
+	      metric=ComputeMetric(hessian,2/9,10^-1,100,10^5,[])
+	"""
+
+	#first, find the eigen values of each line of H=[hessian(i,1) hessian(i,2); hessian(i,2) hessian(i,3)]
+	a=hessian[:,0]
+	b=hessian[:,1]
+	d=hessian[:,2]
+	lambda1=0.5*((a+d)+numpy.sqrt(4.*b**2+(a-d)**2))
+	lambda2=0.5*((a+d)-numpy.sqrt(4.*b**2+(a-d)**2))
+	pos1=numpy.nonzero(lambda1==0.)[0]
+	pos2=numpy.nonzero(lambda2==0.)[0]
+	pos3=numpy.nonzero(numpy.logical_and(b==0.,lambda1==lambda2))[0]
+
+	#Modify the eigen values to control the shape of the elements
+	lambda1=numpy.minimum(numpy.maximum(numpy.abs(lambda1)*scale/epsilon,1./hmax**2),1./hmin**2)
+	lambda2=numpy.minimum(numpy.maximum(numpy.abs(lambda2)*scale/epsilon,1./hmax**2),1./hmin**2)
+
+	#compute eigen vectors
+	norm1=numpy.sqrt(8.*b**2+2.*(d-a)**2+2.*(d-a)*numpy.sqrt((a-d)**2+4.*b**2))
+	v1x=2.*b/norm1
+	v1y=((d-a)+numpy.sqrt((a-d)**2+4.*b**2))/norm1
+	norm2=numpy.sqrt(8.*b**2+2.*(d-a)**2-2.*(d-a)*numpy.sqrt((a-d)**2+4.*b**2))
+	v2x=2.*b/norm2
+	v2y=((d-a)-numpy.sqrt((a-d)**2+4.*b**2))/norm2
+
+	v1x[pos3]=1.
+	v1y[pos3]=0.
+	v2x[pos3]=0.
+	v2y[pos3]=1.
+
+	#Compute new metric (for each node M=V*Lambda*V^-1)
+	metric=numpy.hstack((((v1x*v2y-v1y*v2x)**(-1)*( lambda1*v2y*v1x-lambda2*v1y*v2x)).reshape(-1,1), \
+		                 ((v1x*v2y-v1y*v2x)**(-1)*( lambda1*v1y*v2y-lambda2*v1y*v2y)).reshape(-1,1), \
+		                 ((v1x*v2y-v1y*v2x)**(-1)*(-lambda1*v2x*v1y+lambda2*v1x*v2y)).reshape(-1,1)))
+
+	#some corrections for 0 eigen values
+	metric[pos1,:]=numpy.tile(numpy.array([[1./hmax**2,0.,1./hmax**2]]),(numpy.size(pos1),1))
+	metric[pos2,:]=numpy.tile(numpy.array([[1./hmax**2,0.,1./hmax**2]]),(numpy.size(pos2),1))
+
+	#take care of water elements
+	metric[pos ,:]=numpy.tile(numpy.array([[1./hmax**2,0.,1./hmax**2]]),(numpy.size(pos ),1))
+
+	#take care of NaNs if any (use Numpy eig in a loop)
+	pos=numpy.nonzero(numpy.isnan(metric))[0]
+	if numpy.size(pos):
+		print((" %i NaN found in the metric. Use Numpy routine..." % numpy.size(pos)))
+		for posi in pos:
+			H=numpy.array([[hessian[posi,0],hessian[posi,1]],[hessian[posi,1],hessian[posi,2]]])
+			[v,u]=numpy.linalg.eig(H)
+			v=numpy.diag(v)
+			lambda1=v[0,0]
+			lambda2=v[1,1]
+			v[0,0]=numpy.minimum(numpy.maximum(numpy.abs(lambda1)*scale/epsilon,1./hmax**2),1./hmin**2)
+			v[1,1]=numpy.minimum(numpy.maximum(numpy.abs(lambda2)*scale/epsilon,1./hmax**2),1./hmin**2)
+
+			metricTria=numpy.dot(numpy.dot(u,v),numpy.linalg.inv(u))
+			metric[posi,:]=numpy.array([metricTria[0,0],metricTria[0,1],metricTria[1,1]])
+
+	if numpy.any(numpy.isnan(metric)):
+		raise RunTimeError("ComputeMetric error message: NaN in the metric despite our efforts...")
+
+	return metric
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/ElementsFromEdge.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/ElementsFromEdge.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/ElementsFromEdge.py	(revision 21239)
@@ -0,0 +1,24 @@
+import numpy
+import PythonFuncs as p
+
+def ElementsFromEdge(elements,A,B):
+	"""
+	ELEMENTSFROMEDGE: find elements connected to one edge defined by nodes A and B
+
+	   Usage: edgeelements=ElementsFromEdge(elements,A,B) 
+
+	   Eg:    edgeelements=ElementsFromEdge(md.mesh.elements,tip1,tip2)
+
+	"""
+
+	edgeelements=numpy.nonzero(\
+		p.logical_or_n(numpy.logical_and(elements[:,0]==A,elements[:,1]==B), \
+					 numpy.logical_and(elements[:,0]==A,elements[:,2]==B), \
+					 numpy.logical_and(elements[:,1]==A,elements[:,2]==B), \
+					 numpy.logical_and(elements[:,1]==A,elements[:,0]==B), \
+					 numpy.logical_and(elements[:,2]==A,elements[:,0]==B), \
+					 numpy.logical_and(elements[:,2]==A,elements[:,1]==B), \
+		))[0]+1
+
+	return edgeelements
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/GetNodalFunctionsCoeff.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/GetNodalFunctionsCoeff.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/GetNodalFunctionsCoeff.py	(revision 21239)
@@ -0,0 +1,58 @@
+import numpy
+
+def GetNodalFunctionsCoeff(index,x,y):
+	"""
+	GETNODELFUNCTIONSCOEFF - compute nodal functions coefficients
+
+	   Compute the coefficients alpha beta and optionaly gamma of
+	   2d triangular elements. For each element, the nodal function
+	   is defined as:
+	   N(x,y)=sum(i=1:3) alpha_i * x + beta_i * y + gamma_i
+
+	   Usage:
+	      [alpha beta]=GetNodalFunctionsCoeff(index,x,y);
+	      [alpha beta gamma]=GetNodalFunctionsCoeff(index,x,y);
+
+	   Example:
+	      [alpha beta gamma]=GetNodalFunctionsCoeff(md.mesh.elements,md.mesh.x,md.mesh.y);
+	"""
+
+	#make columns out of x and y
+	x=x.reshape(-1)
+	y=y.reshape(-1)
+
+	#get nels and nods
+	nels=numpy.size(index,axis=0)
+	nods=numpy.size(x)
+
+	#some checks
+	if numpy.size(y)!=nods:
+		raise TypeError("GetNodalFunctionsCoeff error message: x and y do not have the same length.")
+	if numpy.max(index)>nods:
+		raise TypeError("GetNodalFunctionsCoeff error message: index should not have values above %d." % nods)
+	if numpy.size(index,axis=1)!=3:
+		raise TypeError("GetNodalFunctionsCoeff error message: only 2d meshes supported. index should have 3 columns.")
+
+	#initialize output
+	alpha=numpy.zeros((nels,3))
+	beta=numpy.zeros((nels,3))
+
+	#compute nodal functions coefficients N(x,y)=alpha x + beta y +gamma
+	x1=x[index[:,0]-1]
+	x2=x[index[:,1]-1]
+	x3=x[index[:,2]-1]
+	y1=y[index[:,0]-1]
+	y2=y[index[:,1]-1]
+	y3=y[index[:,2]-1]
+	invdet=1./(x1*(y2-y3)-x2*(y1-y3)+x3*(y1-y2))
+
+	#get alpha and beta
+	alpha=numpy.hstack(((invdet*(y2-y3)).reshape(-1,1),(invdet*(y3-y1)).reshape(-1,1),(invdet*(y1-y2)).reshape(-1,1)))
+	beta =numpy.hstack(((invdet*(x3-x2)).reshape(-1,1),(invdet*(x1-x3)).reshape(-1,1),(invdet*(x2-x1)).reshape(-1,1)))
+
+	#get gamma if requested
+	gamma=numpy.zeros((nels,3))
+	gamma=numpy.hstack(((invdet*(x2*y3-x3*y2)).reshape(-1,1),(invdet*(y1*x3-y3*x1)).reshape(-1,1),(invdet*(x1*y2-x2*y1)).reshape(-1,1)))
+
+	return alpha,beta,gamma
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/bamg.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/bamg.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/bamg.py	(revision 21239)
@@ -0,0 +1,486 @@
+import os.path
+import numpy
+from mesh2d import mesh2d
+from collections import OrderedDict
+from pairoptions import pairoptions
+from bamggeom import bamggeom
+from bamgmesh import bamgmesh
+from expread import expread
+from expwrite import expwrite
+from SegIntersect import SegIntersect
+import MatlabFuncs as m
+from BamgMesher import BamgMesher
+from ContourToNodes import ContourToNodes
+
+def bamg(md,*kwargs):
+	"""
+	BAMG - mesh generation
+
+	   Available options (for more details see ISSM website http://issm.jpl.nasa.gov/):
+
+	   - domain :            followed by an ARGUS file that prescribes the domain outline
+	   - hmin :              minimum edge length (default is 10^-100)
+	   - hmax :              maximum edge length (default is 10^100)
+	   - hVertices :         imposed edge length for each vertex (geometry or mesh)
+	   - hminVertices :      minimum edge length for each vertex (mesh)
+	   - hmaxVertices :      maximum edge length for each vertex (mesh)
+
+	   - anisomax :          maximum ratio between the smallest and largest edges (default is 10^30)
+	   - coeff :             coefficient applied to the metric (2-> twice as many elements, default is 1)
+	   - cutoff :            scalar used to compute the metric when metric type 2 or 3 are applied
+	   - err :               error used to generate the metric from a field
+	   - errg :              geometric error (default is 0.1)
+	   - field :             field of the model that will be used to compute the metric
+	                         to apply several fields, use one column per field
+	   - gradation :         maximum ratio between two adjacent edges
+	   - Hessiantype :       0 -> use double P2 projection (default)
+	                         1 -> use Green formula
+	   - KeepVertices :      try to keep initial vertices when adaptation is done on an existing mesh (default 1)
+	   - MaxCornerAngle :    maximum angle of corners in degree (default is 10)
+	   - maxnbv :            maximum number of vertices used to allocate memory (default is 10^6)
+	   - maxsubdiv :         maximum subdivision of exisiting elements (default is 10)
+	   - metric :            matrix (numberofnodes x 3) used as a metric
+	   - Metrictype :        1 -> absolute error          c/(err coeff^2) * Abs(H)        (default)
+	                         2 -> relative error          c/(err coeff^2) * Abs(H)/max(s,cutoff*max(s))
+	                         3 -> rescaled absolute error c/(err coeff^2) * Abs(H)/(smax-smin)
+	   - nbjacoby :          correction used by Hessiantype=1 (default is 1)
+	   - nbsmooth :          number of metric smoothing procedure (default is 3)
+	   - omega :             relaxation parameter of the smoothing procedure (default is 1.8)
+	   - power :             power applied to the metric (default is 1)
+	   - splitcorners :      split triangles whuch have 3 vertices on the outline (default is 1)
+	   - geometricalmetric : take the geometry into account to generate the metric (default is 0)
+	   - verbose :           level of verbosity (default is 1)
+
+	   - rifts :             followed by an ARGUS file that prescribes the rifts
+	   - toltip :            tolerance to move tip on an existing point of the domain outline
+	   - tracks :            followed by an ARGUS file that prescribes the tracks that the mesh will stick to
+	   - RequiredVertices :  mesh vertices that are required. [x,y,ref]; ref is optional
+	   - tol :               if the distance between 2 points of the domain outline is less than tol, they
+	                         will be merged
+
+	   Examples:
+	      md=bamg(md,'domain','DomainOutline.exp','hmax',3000);
+	      md=bamg(md,'field',[md.inversion.vel_obs md.geometry.thickness],'hmax',20000,'hmin',1000);
+	      md=bamg(md,'metric',A,'hmin',1000,'hmax',20000,'gradation',3,'anisomax',1);
+	"""
+
+	#process options
+	options=pairoptions(**kwargs)
+#	options=deleteduplicates(options,1);
+
+	#initialize the structures required as input of Bamg
+	bamg_options=OrderedDict()
+	bamg_geometry=bamggeom()
+	bamg_mesh=bamgmesh()
+
+	# Bamg Geometry parameters {{{
+	if options.exist('domain'):
+
+		#Check that file exists
+		domainfile=options.getfieldvalue('domain')
+		if not os.path.exists(domainfile):
+			raise IOError("bamg error message: file '%s' not found" % domainfile)
+		domain=expread(domainfile)
+
+		#Build geometry 
+		count=0
+		for i,domaini in enumerate(domain):
+
+			#Check that the domain is closed
+			if (domaini['x'][0]!=domaini['x'][-1] or domaini['y'][0]!=domaini['y'][-1]):
+				raise RuntimeError("bamg error message: all contours provided in ''domain'' should be closed")
+
+			#Checks that all holes are INSIDE the principle domain outline
+			if i:
+				flags=ContourToNodes(domaini['x'],domaini['y'],domainfile,0)
+				if numpy.any(numpy.logical_not(flags)):
+					raise RuntimeError("bamg error message: All holes should be strictly inside the principal domain")
+
+			#Add all points to bamg_geometry
+			nods=domaini['nods']-1    #the domain are closed 0=end
+			bamg_geometry.Vertices=numpy.vstack((bamg_geometry.Vertices,numpy.hstack((domaini['x'][0:nods].reshape(-1,1),domaini['y'][0:nods].reshape(-1,1),numpy.ones((nods,1))))))
+			bamg_geometry.Edges   =numpy.vstack((bamg_geometry.Edges,   numpy.hstack((numpy.arange(count+1,count+nods+1).reshape(-1,1),numpy.hstack((numpy.arange(count+2,count+nods+1),count+1)).reshape(-1,1),1.*numpy.ones((nods,1))))))
+			if i:
+				bamg_geometry.SubDomains=numpy.vstack((bamg_geometry.SubDomains,[2,count+1,1,1]))
+
+			#update counter
+			count+=nods
+
+		#take care of rifts
+		if options.exist('rifts'):
+
+			#Check that file exists
+			riftfile=options.getfieldvalue('rifts')
+			if not os.path.exists(riftfile):
+				raise IOError("bamg error message: file '%s' not found" % riftfile)
+			rift=expread(riftfile)
+
+			for i,rifti in enumerate(rift):
+
+				#detect whether all points of the rift are inside the domain
+				flags=ContourToNodes(rifti['x'],rifti['y'],domain[0],0)
+				if numpy.all(numpy.logical_not(flags)):
+					raise RuntimeError("one rift has all its points outside of the domain outline")
+
+				elif numpy.any(numpy.logical_not(flags)):
+					#We LOTS of work to do
+					print("Rift tip outside of or on the domain has been detected and is being processed...")
+
+					#check that only one point is outside (for now)
+					if numpy.sum(numpy.logical_not(flags).astype(int))!=1:
+						raise RuntimeError("bamg error message: only one point outside of the domain is supported yet")
+
+					#Move tip outside to the first position
+					if   not flags[0]:
+						#OK, first point is outside (do nothing),
+						pass
+					elif not flags[-1]:
+						rifti['x']=numpy.flipud(rifti['x'])
+						rifti['y']=numpy.flipud(rifti['y'])
+					else:
+						raise RuntimeError("bamg error message: only a rift tip can be outside of the domain")
+
+					#Get cordinate of intersection point
+					x1=rifti['x'][0]
+					y1=rifti['y'][0]
+					x2=rifti['x'][1]
+					y2=rifti['y'][1]
+					for j in range(0,numpy.size(domain[0]['x'])-1):
+						if SegIntersect(numpy.array([[x1,y1],[x2,y2]]),numpy.array([[domain[0]['x'][j],domain[0]['y'][j]],[domain[0]['x'][j+1],domain[0]['y'][j+1]]])):
+
+							#Get position of the two nodes of the edge in domain
+							i1=j
+							i2=j+1
+
+							#rift is crossing edge [i1 i2] of the domain
+							#Get coordinate of intersection point (http://mathworld.wolfram.com/Line-LineIntersection.html)
+							x3=domain[0]['x'][i1]
+							y3=domain[0]['y'][i1]
+							x4=domain[0]['x'][i2]
+							y4=domain[0]['y'][i2]
+#							x=det([det([x1 y1; x2 y2])  x1-x2;det([x3 y3; x4 y4])  x3-x4])/det([x1-x2 y1-y2;x3-x4 y3-y4]);
+#							y=det([det([x1 y1; x2 y2])  y1-y2;det([x3 y3; x4 y4])  y3-y4])/det([x1-x2 y1-y2;x3-x4 y3-y4]);
+							x=numpy.linalg.det(numpy.array([[numpy.linalg.det(numpy.array([[x1,y1],[x2,y2]])),x1-x2],[numpy.linalg.det(numpy.array([[x3,y3],[x4,y4]])),x3-x4]]))/numpy.linalg.det(numpy.array([[x1-x2,y1-y2],[x3-x4,y3-y4]]))
+							y=numpy.linalg.det(numpy.array([[numpy.linalg.det(numpy.array([[x1,y1],[x2,y2]])),y1-y2],[numpy.linalg.det(numpy.array([[x3,y3],[x4,y4]])),y3-y4]]))/numpy.linalg.det(numpy.array([[x1-x2,y1-y2],[x3-x4,y3-y4]]))
+
+							segdis= sqrt((x4-x3)**2+(y4-y3)**2)
+							tipdis=numpy.array([sqrt((x-x3)**2+(y-y3)**2),sqrt((x-x4)**2+(y-y4)**2)])
+
+							if numpy.min(tipdis)/segdis < options.getfieldvalue('toltip',0):
+								print("moving tip-domain intersection point")
+
+								#Get position of the closer point
+								if tipdis[0]>tipdis[1]:
+									pos=i2
+								else:
+									pos=i1
+
+								#This point is only in Vertices (number pos).
+								#OK, now we can add our own rift
+								nods=rifti['nods']-1
+								bamg_geometry.Vertices=numpy.vstack((bamg_geometry.Vertices,numpy.hstack((rifti['x'][1:].reshape(-1,1),rifti['y'][1:].reshape(-1,1),numpy.ones((nods,1))))))
+								bamg_geometry.Edges=numpy.vstack((bamg_geometry.Edges,\
+									numpy.array([[pos,count+1,(1+i)]]),\
+									numpy.hstack((numpy.arange(count+1,count+nods).reshape(-1,1),numpy.arange(count+2,count+nods+1).reshape(-1,1),(1+i)*numpy.ones((nods-1,1))))))
+								count+=nods
+
+								break
+
+							else:
+								#Add intersection point to Vertices
+								bamg_geometry.Vertices=numpy.vstack((bamg_geometry.Vertices,numpy.array([[x,y,1]])))
+								count+=1
+
+								#Decompose the crossing edge into 2 subedges
+								pos=numpy.nonzero(numpy.logical_and(bamg_geometry.Edges[:,0]==i1,bamg_geometry.Edges[:,1]==i2))[0]
+								if not pos:
+									raise RuntimeError("bamg error message: a problem occurred...")
+								bamg_geometry.Edges=numpy.vstack((bamg_geometry.Edges[0:pos-1,:],\
+									numpy.array([[bamg_geometry.Edges[pos,0],count                     ,bamg_geometry.Edges[pos,2]]]),\
+									numpy.array([[count                     ,bamg_geometry.Edges[pos,1],bamg_geometry.Edges[pos,2]]]),\
+									bamg_geometry.Edges[pos+1:,:]))
+
+								#OK, now we can add our own rift
+								nods=rifti['nods']-1
+								bamg_geometry.Vertices=numpy.vstack((bamg_geometry.Vertices,numpy.hstack((rifti['x'][1:].reshape(-1,1),rifti['y'][1:].reshape(-1,1),numpy.ones((nods,1))))))
+								bamg_geometry.Edges=numpy.vstack((bamg_geometry.Edges,\
+									numpy.array([[count,count+1,2]]),\
+									numpy.hstack((numpy.arange(count+1,count+nods).reshape(-1,1),numpy.arange(count+2,count+nods+1).reshape(-1,1),(1+i)*numpy.ones((nods-1,1))))))
+								count+=nods
+
+								break
+
+				else:
+					nods=rifti['nods']-1
+					bamg_geometry.Vertices=numpy.vstack(bamg_geometry.Vertices, numpy.hstack(rifti['x'][:],rifti['y'][:],numpy.ones((nods+1,1))))
+					bamg_geometry.Edges   =numpy.vstack(bamg_geometry.Edges, numpy.hstack(numpy.arange(count+1,count+nods).reshape(-1,1),numpy.arange(count+2,count+nods+1).reshape(-1,1),i*numpy.ones((nods,1))))
+					count=+nods+1
+
+		#Deal with tracks
+		if options.exist('tracks'):
+
+			#read tracks
+			track=options.getfieldvalue('tracks')
+			if all(isinstance(track,str)):
+				A=expread(track)
+				track=numpy.hstack((A.x.reshape(-1,1),A.y.reshape(-1,1)))
+			else:
+				track=float(track)    #for some reason, it is of class "single"
+			if numpy.size(track,axis=1)==2:
+				track=numpy.hstack((track,3.*numpy.ones((size(track,axis=0),1))))
+
+			#only keep those inside
+			flags=ContourToNodes(track[:,0],track[:,1],domainfile,0)
+			track=track[numpy.nonzero(flags),:]
+
+			#Add all points to bamg_geometry
+			nods=numpy.size(track,axis=0)
+			bamg_geometry.Vertices=numpy.vstack((bamg_geometry.Vertices,track))
+			bamg_geometry.Edges   =numpy.vstack((bamg_geometry.Edges,numpy.hstack((numpy.arange(count+1,count+nods).reshape(-1,1),numpy.arange(count+2,count+nods+1).reshape(-1,1),3.*numpy.ones((nods-1,1))))))
+
+			#update counter
+			count+=nods
+
+		#Deal with vertices that need to be kept by mesher
+		if options.exist('RequiredVertices'):
+
+			#recover RequiredVertices
+			requiredvertices=options.getfieldvalue('RequiredVertices')    #for some reason, it is of class "single"
+			if numpy.size(requiredvertices,axis=1)==2:
+				requiredvertices=numpy.hstack((requiredvertices,4.*numpy.ones((numpy.size(requiredvertices,axis=0),1))))
+			
+
+			#only keep those inside
+			flags=ContourToNodes(requiredvertices[:,0],requiredvertices[:,1],domainfile,0)[0]
+			requiredvertices=requiredvertices[numpy.nonzero(flags)[0],:]
+
+			#Add all points to bamg_geometry
+			nods=numpy.size(requiredvertices,axis=0)
+			bamg_geometry.Vertices=numpy.vstack((bamg_geometry.Vertices,requiredvertices))
+
+			#update counter
+			count+=nods
+
+		#process geom
+		#bamg_geometry=processgeometry(bamg_geometry,options.getfieldvalue('tol',float(nan)),domain[0])
+
+	elif isinstance(md.private.bamg,dict) and 'geometry' in md.private.bamg:
+		bamg_geometry=bamggeom(md.private.bamg['geometry'].__dict__) 
+	else:
+		#do nothing...
+		pass
+	#}}}
+	# Bamg Mesh parameters {{{
+	if not options.exist('domain') and md.mesh.numberofvertices and m.strcmp(md.mesh.elementtype(),'Tria'):
+
+		if isinstance(md.private.bamg,dict) and 'mesh' in md.private.bamg:
+			bamg_mesh=bamgmesh(md.private.bamg['mesh'].__dict__)
+		else:
+			bamg_mesh.Vertices=numpy.hstack((md.mesh.x.reshape(-1,1),md.mesh.y.reshape(-1,1),numpy.ones((md.mesh.numberofvertices,1))))
+			bamg_mesh.Triangles=numpy.hstack((md.mesh.elements,numpy.ones((md.mesh.numberofelements,1))))
+
+		if isinstance(md.rifts.riftstruct,dict):
+			raise TypeError("bamg error message: rifts not supported yet. Do meshprocessrift AFTER bamg")
+	#}}}
+	# Bamg Options {{{
+	bamg_options['Crack']=options.getfieldvalue('Crack',0)
+	bamg_options['anisomax']=options.getfieldvalue('anisomax',10.**30)
+	bamg_options['coeff']=options.getfieldvalue('coeff',1.)
+	bamg_options['cutoff']=options.getfieldvalue('cutoff',10.**-5)
+	bamg_options['err']=options.getfieldvalue('err',numpy.array([[0.01]]))
+	bamg_options['errg']=options.getfieldvalue('errg',0.1)
+	bamg_options['field']=options.getfieldvalue('field',numpy.empty((0,1)))
+	bamg_options['gradation']=options.getfieldvalue('gradation',1.5)
+	bamg_options['Hessiantype']=options.getfieldvalue('Hessiantype',0)
+	bamg_options['hmin']=options.getfieldvalue('hmin',10.**-100)
+	bamg_options['hmax']=options.getfieldvalue('hmax',10.**100)
+	bamg_options['hminVertices']=options.getfieldvalue('hminVertices',numpy.empty((0,1)))
+	bamg_options['hmaxVertices']=options.getfieldvalue('hmaxVertices',numpy.empty((0,1)))
+	bamg_options['hVertices']=options.getfieldvalue('hVertices',numpy.empty((0,1)))
+	bamg_options['KeepVertices']=options.getfieldvalue('KeepVertices',1)
+	bamg_options['MaxCornerAngle']=options.getfieldvalue('MaxCornerAngle',10.)
+	bamg_options['maxnbv']=options.getfieldvalue('maxnbv',10**6)
+	bamg_options['maxsubdiv']=options.getfieldvalue('maxsubdiv',10.)
+	bamg_options['metric']=options.getfieldvalue('metric',numpy.empty((0,1)))
+	bamg_options['Metrictype']=options.getfieldvalue('Metrictype',0)
+	bamg_options['nbjacobi']=options.getfieldvalue('nbjacobi',1)
+	bamg_options['nbsmooth']=options.getfieldvalue('nbsmooth',3)
+	bamg_options['omega']=options.getfieldvalue('omega',1.8)
+	bamg_options['power']=options.getfieldvalue('power',1.)
+	bamg_options['splitcorners']=options.getfieldvalue('splitcorners',1)
+	bamg_options['geometricalmetric']=options.getfieldvalue('geometricalmetric',0)
+	bamg_options['random']=options.getfieldvalue('rand',True)
+	bamg_options['verbose']=options.getfieldvalue('verbose',1)
+	#}}}
+
+	#call Bamg
+	[bamgmesh_out,bamggeom_out]=BamgMesher(bamg_mesh.__dict__,bamg_geometry.__dict__,bamg_options)
+
+	# plug results onto model
+	md.private.bamg=OrderedDict()
+	md.private.bamg['mesh']=bamgmesh(bamgmesh_out)
+	md.private.bamg['geometry']=bamggeom(bamggeom_out)
+	md.mesh = mesh2d()
+	md.mesh.x=bamgmesh_out['Vertices'][:,0].copy()
+	md.mesh.y=bamgmesh_out['Vertices'][:,1].copy()
+	md.mesh.elements=bamgmesh_out['Triangles'][:,0:3].astype(int)
+	md.mesh.edges=bamgmesh_out['IssmEdges'].astype(int)
+	md.mesh.segments=bamgmesh_out['IssmSegments'][:,0:3].astype(int)
+	md.mesh.segmentmarkers=bamgmesh_out['IssmSegments'][:,3].astype(int)
+
+	#Fill in rest of fields:
+	md.mesh.numberofelements=numpy.size(md.mesh.elements,axis=0)
+	md.mesh.numberofvertices=numpy.size(md.mesh.x)
+	md.mesh.numberofedges=numpy.size(md.mesh.edges,axis=0)
+	md.mesh.vertexonboundary=numpy.zeros(md.mesh.numberofvertices,bool)
+	md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1]=True
+	md.mesh.elementconnectivity=md.private.bamg['mesh'].ElementConnectivity
+	md.mesh.elementconnectivity[numpy.nonzero(numpy.isnan(md.mesh.elementconnectivity))]=0
+	md.mesh.elementconnectivity=md.mesh.elementconnectivity.astype(int)
+
+	#Check for orphan
+	if numpy.any(numpy.logical_not(numpy.in1d(numpy.arange(1,md.mesh.numberofvertices+1),md.mesh.elements.flat))):
+		raise RuntimeError("Output mesh has orphans. Decrease MaxCornerAngle to prevent outside points (ex: 0.01)")
+
+	return md
+
+def processgeometry(geom,tol,outline):    # {{{
+
+	raise RuntimeError("bamg.py/processgeometry is not complete.")
+	#Deal with edges
+	print("Checking Edge crossing...")
+	i=0
+	while (i<numpy.size(geom.Edges,axis=0)):
+
+		#edge counter
+		i+=1
+
+		#Get coordinates
+		x1=geom.Vertices[geom.Edges[i,0],0]
+		y1=geom.Vertices[geom.Edges[i,0],1]
+		x2=geom.Vertices[geom.Edges[i,1],0]
+		y2=geom.Vertices[geom.Edges[i,1],1]
+		color1=geom.Edges[i,2]
+
+		j=i    #test edges located AFTER i only
+		while (j<numpy.size(geom.Edges,axis=0)):
+
+			#edge counter
+			j+=1
+
+			#Skip if the two edges already have a vertex in common
+			if any(m.ismember(geom.Edges[i,0:2],geom.Edges[j,0:2])):
+				continue
+
+			#Get coordinates
+			x3=geom.Vertices[geom.Edges[j,0],0]
+			y3=geom.Vertices[geom.Edges[j,0],1]
+			x4=geom.Vertices[geom.Edges[j,1],0]
+			y4=geom.Vertices[geom.Edges[j,1],1]
+			color2=geom.Edges[j,2]
+
+			#Check if the two edges are crossing one another
+			if SegIntersect(numpy.array([[x1,y1],[x2,y2]]),numpy.array([[x3,y3],[x4,y4]])):
+
+				#Get coordinate of intersection point (http://mathworld.wolfram.com/Line-LineIntersection.html)
+				x=numpy.linalg.det(numpy.array([numpy.linalg.det(numpy.array([[x1,y1],[x2,y2]])),x1-x2],[numpy.linalg.det(numpy.array([[x3,y3],[x4,y4]])),x3-x4])/numpy.linalg.det(numpy.array([[x1-x2,y1-y2],[x3-x4,y3-y4]])))
+				y=numpy.linalg.det(numpy.array([numpy.linalg.det(numpy.array([[x1,y1],[x2,y2]])),y1-y2],[numpy.linalg.det(numpy.array([[x3,y3],[x4,y4]])),y3-y4])/numpy.linalg.det(numpy.array([[x1-x2,y1-y2],[x3-x4,y3-y4]])))
+
+				#Add vertex to the list of vertices
+				geom.Vertices=numpy.vstack((geom.Vertices,[x,y,min(color1,color2)]))
+				id=numpy.size(geom.Vertices,axis=0)
+
+				#Update edges i and j
+				edgei=geom.Edges[i,:].copy()
+				edgej=geom.Edges[j,:].copy()
+				geom.Edges[i,:]    =[edgei(0),id      ,edgei(2)]
+				geom.Edges=numpy.vstack((geom.Edges,[id      ,edgei(1),edgei(2)]))
+				geom.Edges[j,:]    =[edgej(0),id      ,edgej(2)]
+				geom.Edges=numpy.vstack((geom.Edges,[id      ,edgej(1),edgej(2)]))
+
+				#update current edge second tip
+				x2=x
+				y2=y
+
+	#Check point outside
+	print("Checking for points outside the domain...")
+	i=0
+	num=0
+	while (i<numpy.size(geom.Vertices,axis=0)):
+
+		#vertex counter
+		i+=1
+
+		#Get coordinates
+		x=geom.Vertices[i,0]
+		y=geom.Vertices[i,1]
+		color=geom.Vertices[i,2]
+
+		#Check that the point is inside the domain
+		if color!=1 and not ContourToNodes(x,y,outline[0],1):
+
+			#Remove points from list of Vertices
+			num+=1
+			geom.Vertices[i,:]=[]
+
+			#update edges
+			posedges=numpy.nonzero(geom.Edges==i)
+			geom.Edges[posedges[0],:]=[]
+			posedges=numpy.nonzero(geom.Edges>i)
+			geom.Edges[posedges]=geom.Edges[posedges]-1
+
+			#update counter
+			i-=1
+
+	if num:
+		print("WARNING: %d points outside the domain outline have been removed" % num)
+
+	"""
+	%Check point spacing
+	if ~isnan(tol),
+		disp('Checking point spacing...');
+		i=0;
+		while (i<size(geom.Vertices,1)),
+
+			%vertex counter
+			i=i+1;
+
+			%Get coordinates
+			x1=geom.Vertices(i,1);
+			y1=geom.Vertices(i,2);
+
+			j=i; %test edges located AFTER i only
+			while (j<size(geom.Vertices,1)),
+
+				%vertex counter
+				j=j+1;
+
+				%Get coordinates
+				x2=geom.Vertices(j,1);
+				y2=geom.Vertices(j,2);
+
+				%Check whether the two vertices are too close
+				if ((x2-x1)**2+(y2-y1)**2<tol**2)
+
+					%Remove points from list of Vertices
+					geom.Vertices(j,:)=[];
+
+					%update edges
+					posedges=find(m.ismember(geom.Edges,j));
+					geom.Edges(posedges)=i;
+					posedges=find(geom.Edges>j);
+					geom.Edges(posedges)=geom.Edges(posedges)-1;
+
+					%update counter
+					j=j-1;
+
+				end
+			end
+		end
+	end
+	%remove empty edges
+	geom.Edges(find(geom.Edges(:,1)==geom.Edges(:,2)),:)=[];
+	"""
+	return geom
+# }}}
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/meshconvert.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/meshconvert.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/meshconvert.py	(revision 21239)
@@ -0,0 +1,52 @@
+import numpy
+from collections import OrderedDict
+from BamgConvertMesh import BamgConvertMesh 
+from mesh2d   import mesh2d
+from bamgmesh import bamgmesh
+from bamggeom import bamggeom
+
+def meshconvert(md,*args):
+	"""
+	CONVERTMESH - convert mesh to bamg mesh
+
+	   Usage:
+	      md=meshconvert(md);
+	      md=meshconvert(md,index,x,y);
+	"""
+
+	if not len(args)==0 and not len(args)==3:
+		raise TypeError("meshconvert error message: bad usage")
+
+	if not len(args):
+		index = md.mesh.elements
+		x     = md.mesh.x
+		y     = md.mesh.y
+	else:
+		index = args[0]
+		x     = args[1]
+		y     = args[2]
+
+	#call Bamg
+	bamgmesh_out,bamggeom_out=BamgConvertMesh(index,x,y)
+
+	# plug results onto model
+	md.private.bamg             = OrderedDict()
+	md.private.bamg['mesh']     = bamgmesh(bamgmesh_out)
+	md.private.bamg['geometry'] = bamggeom(bamggeom_out)
+	md.mesh                     = mesh2d()
+	md.mesh.x                   = bamgmesh_out['Vertices'][:,0].copy()
+	md.mesh.y                   = bamgmesh_out['Vertices'][:,1].copy()
+	md.mesh.elements            = bamgmesh_out['Triangles'][:,0:3].astype(int)
+	md.mesh.edges               = bamgmesh_out['IssmEdges'].astype(int)
+	md.mesh.segments            = bamgmesh_out['IssmSegments'][:,0:3].astype(int)
+	md.mesh.segmentmarkers      = bamgmesh_out['IssmSegments'][:,3].astype(int)
+
+	#Fill in rest of fields:
+	md.mesh.numberofelements   = numpy.size(md.mesh.elements,axis=0)
+	md.mesh.numberofvertices   = numpy.size(md.mesh.x)
+	md.mesh.numberofedges      = numpy.size(md.mesh.edges,axis=0)
+	md.mesh.vertexonboundary   = numpy.zeros(md.mesh.numberofvertices,bool)
+	md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1] = True
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/rifts/meshprocessoutsiderifts.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/rifts/meshprocessoutsiderifts.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/rifts/meshprocessoutsiderifts.py	(revision 21239)
@@ -0,0 +1,104 @@
+import numpy
+from ElementsFromEdge import ElementsFromEdge
+import MatlabFuncs as m
+
+def meshprocessoutsiderifts(md,domainoutline):
+	"""
+	MESHPROCESSOUTSIDERIFTS - process rifts when they touch the domain outline
+
+	   Usage:
+	      md=meshprocessoutsiderifts(md,domain)
+
+	"""
+
+	#go through rifts, and figure out which ones touch the domain outline
+	for rift in md.rifts.riftstruct:
+	
+		#first, flag nodes that belong to the domain outline
+		flags=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,domainoutline,'node',0)
+
+		tips=rift.tips
+		outsidetips=tips[numpy.nonzero(flags[rift.tips-1])[0]]
+
+		#we have found outsidetips, tips that touch the domain outline. go through them
+		for tip in outsidetips:
+		
+			#find tip in the segments, take first segment (there should be 2) that holds tip, 
+			#and node_connected_to_tip is the other node on this segment:
+			tipindex=numpy.nonzero(rift.segments[:,0]==tip)[0]
+			if tipindex:
+				tipindex=tipindex[0]
+				node_connected_to_tip=rift.segments[tipindex,1]
+			else:
+				tipindex=numpy.nonzero(rift.segments[:,1]==tip)[0]
+				tipindex=tipindex[0]
+				node_connected_to_tip=rift.segments[tipindex,1]
+
+			#ok, we have the tip node, and the first node connected to it, on the rift. Now, 
+			#identify all the elements that are connected to the tip, and that are on the same 
+			#side of the rift.
+			A=tip
+			B=node_connected_to_tip
+
+			elements=numpy.empty(0,int)
+
+			while flags(B):    #as long as B does not belong to the domain outline, keep looking.
+				#detect elements on edge A,B:
+				edgeelements=ElementsFromEdge(md.mesh.elements,A,B)
+				#rule out those we already detected
+				already_detected=m.ismember(edgeelements,elements)
+				nextelement=edgeelements(numpy.nonzero(numpy.logical_not(already_detected))[0])
+				#add new detected element to the list of elements we are looking for.
+				elements=numpy.concatenate((elements,nextelement))
+				#new B:
+				B=md.mesh.elements[nextelement-1,numpy.nonzero(numpy.logical_not(m.ismember(md.mesh.elements[nextelement-1,:],numpy.array([A,B]))))]
+		
+			#take the list of elements on one side of the rift that connect to the tip, 
+			#and duplicate the tip on them, so as to open the rift to the outside.
+			num=numpy.size(md.mesh.x)+1
+			md.mesh.x=numpy.concatenate((md.mesh.x,md.mesh.x[tip]))
+			md.mesh.y=numpy.concatenate((md.mesh.y,md.mesh.y[tip]))
+			md.mesh.numberofvertices=num
+		
+			#replace tip in elements
+			newelements=md.mesh.elements[elements-1,:]
+			pos=numpy.nonzero(newelements==tip)
+			newelements[pos]=num
+			md.mesh.elements[elements-1,:]=newelements
+			rift.tips=numpy.concatenate((rift.tips,num))
+
+			#deal with segments
+			tipsegments=numpy.nonzero(numpy.logical_or(md.mesh.segments[:,0]==tip,md.mesh.segments[:,1]==tip))[0]
+			for segment_index in tipsegments:
+				pos=numpy.nonzero(md.mesh.segments[segment_index,0:2]!=tip)[0]
+				other_node=md.mesh.segments[segment_index,pos]
+				if not isconnected(md.mesh.elements,other_node,tip):
+					pos=numpy.nonzero(md.mesh.segments[segment_index,0:2]==tip)[0]
+					md.mesh.segments[segment_index,pos]=num
+
+	#Fill in rest of fields:
+	md.mesh.numberofelements=numpy.size(md.mesh.elements,axis=0)
+	md.mesh.numberofvertices=numpy.size(md.mesh.x)
+	md.mesh.vertexonboundary=numpy.zeros(numpy.size(md.mesh.x),bool)
+	md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1]=True
+	md.rifts.numrifts=length(md.rifts.riftstruct)
+
+	return md
+
+def isconnected(elements,A,B):    # {{{
+	"""
+	ISCONNECTED: are two nodes connected by a triangulation?
+
+	   Usage: flag=isconnected(elements,A,B)
+
+	"""
+
+	elements=ElementsFromEdge(elements,A,B)
+	if not elements:
+		flag=0
+	else:
+		flag=1
+
+	return flag
+	# }}}
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/rifts/meshprocessrifts.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/rifts/meshprocessrifts.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/rifts/meshprocessrifts.py	(revision 21239)
@@ -0,0 +1,64 @@
+import numpy
+from TriMeshProcessRifts import TriMeshProcessRifts
+from ContourToMesh import ContourToMesh
+from meshprocessoutsiderifts import meshprocessoutsiderifts
+from GetAreas import GetAreas
+
+def meshprocessrifts(md,domainoutline):
+	"""
+	MESHPROCESSRIFTS - process mesh when rifts are present
+
+	   split rifts inside mesh (rifts are defined by presence of
+	   segments inside the domain outline)
+	   if domain outline is provided, check for rifts that could touch it, and open them up.
+
+	   Usage:
+	      md=meshprocessrifts(md,domainoutline)
+
+	   Ex: 
+	      md=meshprocessrifts(md,'DomainOutline.exp');
+	
+	"""
+
+	#Call MEX file
+	[md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.segments,md.mesh.segmentmarkers,md.rifts.riftstruct]=TriMeshProcessRifts(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.segments,md.mesh.segmentmarkers)
+	md.mesh.elements=md.mesh.elements.astype(int)
+	md.mesh.x=md.mesh.x.reshape(-1)
+	md.mesh.y=md.mesh.y.reshape(-1)
+	md.mesh.segments=md.mesh.segments.astype(int)
+	md.mesh.segmentmarkers=md.mesh.segmentmarkers.astype(int)
+	if not isinstance(md.rifts.riftstruct,list) or not md.rifts.riftstruct:
+		raise RuntimeError("TriMeshProcessRifts did not find any rift")
+
+	#Fill in rest of fields:
+	numrifts=len(md.rifts.riftstruct)
+	md.mesh.numberofelements=numpy.size(md.mesh.elements,axis=0)
+	md.mesh.numberofvertices=numpy.size(md.mesh.x)
+	md.mesh.vertexonboundary=numpy.zeros(numpy.size(md.mesh.x),bool)
+	md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1]=True
+
+	#get coordinates of rift tips
+	for rift in md.rifts.riftstruct:
+		rift['tip1coordinates']=numpy.hstack((md.mesh.x[rift['tips'][0,0].astype(int)-1].reshape(-1,1),md.mesh.y[rift['tips'][0,0].astype(int)-1].reshape(-1,1)))
+		rift['tip2coordinates']=numpy.hstack((md.mesh.x[rift['tips'][0,1].astype(int)-1].reshape(-1,1),md.mesh.y[rift['tips'][0,1].astype(int)-1].reshape(-1,1)))
+
+	#In case we have rifts that open up the domain outline, we need to open them: 
+	[flags,dum]=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,domainoutline,'node',0)
+	found=0
+	for rift in md.rifts.riftstruct:
+		if flags[rift['tips'][0,0].astype(int)-1]==0:
+			found=1
+			break
+		if flags[rift['tips'][0,1].astype(int)-1]==0:
+			found=1
+			break
+	if found:
+		md=meshprocessoutsiderifts(md,domainoutline)
+
+	#get elements that are not correctly oriented in the correct direction:
+	aires=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y)
+	pos=numpy.nonzero(aires<0)[0]
+	md.mesh.elements[pos,:]=numpy.hstack((md.mesh.elements[pos,1].reshape(-1,1),md.mesh.elements[pos,0].reshape(-1,1),md.mesh.elements[pos,2].reshape(-1,1)))
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/roundmesh.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/roundmesh.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/roundmesh.py	(revision 21239)
@@ -0,0 +1,61 @@
+import numpy
+import os
+from collections import OrderedDict
+from expwrite import expwrite
+from triangle import triangle
+
+def roundmesh(md,radius,resolution):
+	"""
+	ROUNDMESH - create an unstructured round mesh 
+
+	   This script will generate a structured round mesh
+	   - radius     : specifies the radius of the circle in meters
+	   - resolution : specifies the resolution in meters
+
+	   Usage:
+	      md=roundmesh(md,radius,resolution)
+	"""
+
+	#First we have to create the domain outline 
+
+	#Get number of points on the circle
+	pointsonedge=numpy.floor((2.*numpy.pi*radius) / resolution)
+
+	#Calculate the cartesians coordinates of the points
+	x_list=numpy.ones(pointsonedge)
+	y_list=numpy.ones(pointsonedge)
+	theta=numpy.linspace(0.,2.*numpy.pi,num=pointsonedge,endpoint=False)
+	x_list=roundsigfig(radius*x_list*numpy.cos(theta),12)
+	y_list=roundsigfig(radius*y_list*numpy.sin(theta),12)
+	A=OrderedDict()
+	A['x']=[x_list]
+	A['y']=[y_list]
+	A['density']=1.
+	expwrite(A,'RoundDomainOutline.exp')
+
+	#Call Bamg
+	md=triangle(md,'RoundDomainOutline.exp',resolution)
+	#md=bamg(md,'domain','RoundDomainOutline.exp','hmin',resolution)
+
+	#move the closest node to the center
+	pos=numpy.argmin(md.mesh.x**2+md.mesh.y**2)
+	md.mesh.x[pos]=0.
+	md.mesh.y[pos]=0.
+
+	#delete domain
+	os.remove('RoundDomainOutline.exp')
+
+	return md
+
+def roundsigfig(x,n):
+
+	digits=numpy.ceil(numpy.log10(numpy.abs(x)))
+	x=x/10.**digits
+	x=numpy.round(x,decimals=n)
+	x=x*10.**digits
+
+	pos=numpy.nonzero(numpy.isnan(x))
+	x[pos]=0.
+
+	return x
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/squaremesh.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/squaremesh.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/squaremesh.py	(revision 21239)
@@ -0,0 +1,76 @@
+import numpy
+from NodeConnectivity import NodeConnectivity
+from ElementConnectivity import ElementConnectivity 
+from mesh2d import mesh2d
+
+def squaremesh(md,Lx,Ly,nx,ny):
+	"""
+	SQUAREMESH - create a structured square mesh 
+
+	   This script will generate a structured square mesh
+	   Lx and Ly are the dimension of the domain (in meters)
+	   nx anx ny are the number of nodes in the x and y direction
+	   The coordinates x and y returned are in meters.
+
+	   Usage:
+	      [md]=squaremesh(md,Lx,Ly,nx,ny)
+	"""
+
+	#get number of elements and number of nodes
+	nel=(nx-1)*(ny-1)*2
+	nods=nx*ny
+
+	#initialization
+	index=numpy.zeros((nel,3),int)
+	x=numpy.zeros((nx*ny))
+	y=numpy.zeros((nx*ny))
+
+	#create coordinates
+	for n in range(0,nx):
+		for m in range(0,ny):
+			x[n*ny+m]=float(n)
+			y[n*ny+m]=float(m)
+
+	#create index
+	for n in range(0,nx-1):
+		for m in range(0,ny-1):
+			A=n*ny+(m+1)
+			B=A+1
+			C=(n+1)*ny+(m+1)
+			D=C+1
+			index[n*(ny-1)*2+2*m,:]=[A,C,B]
+			index[n*(ny-1)*2+2*(m+1)-1,:]=[B,C,D]
+
+	#Scale  x and y
+	x=x/numpy.max(x)*Lx
+	y=y/numpy.max(y)*Ly
+
+	#create segments
+	segments=numpy.zeros((2*(nx-1)+2*(ny-1),3),int)
+	#left edge:
+	segments[0:ny-1,:]=numpy.hstack((numpy.arange(2,ny+1).reshape(-1,1),numpy.arange(1,ny).reshape(-1,1),(2*numpy.arange(1,ny)-1).reshape(-1,1)))
+	#right edge:
+	segments[ny-1:2*(ny-1),:]=numpy.hstack((numpy.arange(ny*(nx-1)+1,nx*ny).reshape(-1,1),numpy.arange(ny*(nx-1)+2,nx*ny+1).reshape(-1,1),2*numpy.arange((ny-1)*(nx-2)+1,(nx-1)*(ny-1)+1).reshape(-1,1)))
+	#front edge:
+	segments[2*(ny-1):2*(ny-1)+(nx-1),:]=numpy.hstack((numpy.arange(2*ny,ny*nx+1,ny).reshape(-1,1),numpy.arange(ny,ny*(nx-1)+1,ny).reshape(-1,1),numpy.arange(2*(ny-1),2*(nx-1)*(ny-1)+1,2*(ny-1)).reshape(-1,1)))
+	#back edge
+	segments[2*(ny-1)+(nx-1):2*(nx-1)+2*(ny-1),:]=numpy.hstack((numpy.arange(1,(nx-2)*ny+2,ny).reshape(-1,1),numpy.arange(ny+1,ny*(nx-1)+2,ny).reshape(-1,1),numpy.arange(1,2*(nx-2)*(ny-1)+2,2*(ny-1)).reshape(-1,1)))
+
+	#plug coordinates and nodes
+	md.mesh=mesh2d()
+	md.mesh.x=x
+	md.mesh.y=y
+	md.mesh.numberofvertices=nods
+	md.mesh.vertexonboundary=numpy.zeros((nods),bool)
+	md.mesh.vertexonboundary[segments[:,0:2]-1]=True
+
+	#plug elements
+	md.mesh.elements=index
+	md.mesh.segments=segments
+	md.mesh.numberofelements=nel
+
+	#Now, build the connectivity tables for this mesh.
+	[md.mesh.vertexconnectivity]=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices)
+	[md.mesh.elementconnectivity]=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity)
+
+	return md
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/triangle.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/triangle.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/mesh/triangle.py	(revision 21239)
@@ -0,0 +1,62 @@
+import numpy
+from mesh2d import mesh2d
+from TriMesh import TriMesh
+from NodeConnectivity import NodeConnectivity
+from ElementConnectivity import ElementConnectivity
+import MatlabFuncs as m
+
+def triangle(md,domainname,*args):
+	"""
+	TRIANGLE - create model mesh using the triangle package
+
+	   This routine creates a model mesh using TriMesh and a domain outline, to within a certain resolution
+	   where md is a @model object, domainname is the name of an Argus domain outline file, 
+	   and resolution is a characteristic length for the mesh (same unit as the domain outline
+	   unit). Riftname is an optional argument (Argus domain outline) describing rifts.
+
+	   Usage:
+	      md=triangle(md,domainname,resolution)
+	   or md=triangle(md,domainname, resolution, riftname)
+
+	   Examples:
+	      md=triangle(md,'DomainOutline.exp',1000);
+	      md=triangle(md,'DomainOutline.exp',1000,'Rifts.exp');
+	"""
+
+	#Figure out a characteristic area. Resolution is a node oriented concept (ex a 1000m  resolution node would 
+	#be made of 1000*1000 area squares). 
+
+	if len(args)==1:
+		resolution=args[0]
+		riftname=''
+	if len(args)==2:
+		riftname=args[0]
+		resolution=args[1]
+
+	#Check that mesh was not already run, and warn user: 
+	if md.mesh.numberofelements:
+		choice = input('This model already has a mesh. Are you sure you want to go ahead? (y/n)')
+		if not m.strcmp(choice,'y'):
+			print('no meshing done ... exiting')
+			return None
+
+	area = resolution**2
+
+	#Mesh using TriMesh
+	md.mesh=mesh2d()
+	[md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.segments,md.mesh.segmentmarkers]=TriMesh(domainname,riftname,area)
+	md.mesh.elements=md.mesh.elements.astype(int)
+	md.mesh.segments=md.mesh.segments.astype(int)
+	md.mesh.segmentmarkers=md.mesh.segmentmarkers.astype(int)
+
+	#Fill in rest of fields:
+	md.mesh.numberofelements = numpy.size(md.mesh.elements,axis=0)
+	md.mesh.numberofvertices = numpy.size(md.mesh.x)
+	md.mesh.vertexonboundary = numpy.zeros(md.mesh.numberofvertices,bool)
+	md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1] = True
+
+	#Now, build the connectivity tables for this mesh.
+	[md.mesh.vertexconnectivity] = NodeConnectivity(md.mesh.elements, md.mesh.numberofvertices)
+	[md.mesh.elementconnectivity] = ElementConnectivity(md.mesh.elements, md.mesh.vertexconnectivity)
+
+	return md
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/miscellaneous/MatlabFuncs.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/miscellaneous/MatlabFuncs.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/miscellaneous/MatlabFuncs.py	(revision 21239)
@@ -0,0 +1,107 @@
+def oshostname():
+	import socket
+
+	return socket.gethostname()
+
+def ispc():
+	import platform
+
+	if 'Windows' in platform.system():
+		return True
+	else:
+		return False
+
+def ismac():
+	import platform
+
+	if 'Darwin' in platform.system():
+		return True
+	else:
+		return False
+
+def strcmp(s1,s2):
+
+	if s1 == s2:
+		return True
+	else:
+		return False
+
+def strncmp(s1,s2,n):
+
+	if s1[0:n] == s2[0:n]:
+		return True
+	else:
+		return False
+
+def strcmpi(s1,s2):
+
+	if s1.lower() == s2.lower():
+		return True
+	else:
+		return False
+
+def strncmpi(s1,s2,n):
+
+	if s1.lower()[0:n] == s2.lower()[0:n]:
+		return True
+	else:
+		return False
+
+def ismember(a,s):
+	import numpy
+
+	if not isinstance(s,(tuple,list,dict,numpy.ndarray)):
+		s=[s]
+
+	if not isinstance(a,(tuple,list,dict,numpy.ndarray)):
+		a=[a]
+
+	if not isinstance(a,numpy.ndarray):
+		b=[item in s for item in a]
+
+	else:
+		if not isinstance(s,numpy.ndarray):
+			b=numpy.empty_like(a)
+			for i,item in enumerate(a.flat):
+				b.flat[i]=item in s
+		else:
+			b=numpy.in1d(a.flat,s.flat).reshape(a.shape)
+
+	return b
+
+def det(a):
+	import numpy
+
+	if   a.shape==(1,):
+		return a[0]
+	elif a.shape==(1,1):
+		return a[0,0]
+	elif a.shape==(2,2):
+		return a[0,0]*a[1,1]-a[0,1]*a[1,0]
+	else:
+		raise TypeError("MatlabFunc.det only implemented for shape (2, 2), not for shape %s." % str(a.shape))
+
+def sparse(ivec,jvec,svec,m=0,n=0,nzmax=0):
+	import numpy
+
+	if not m:
+		m=numpy.max(ivec)
+	if not n:
+		n=numpy.max(jvec)
+
+	a=numpy.zeros((m,n))
+
+	for i,j,s in zip(ivec.reshape(-1,order='F'),jvec.reshape(-1,order='F'),svec.reshape(-1,order='F')):
+		a[i-1,j-1]+=s
+
+	return a
+
+def heaviside(x):
+	import numpy
+
+	y=numpy.zeros_like(x)
+	y[numpy.nonzero(x> 0.)]=1.
+	y[numpy.nonzero(x==0.)]=0.5
+
+	return y
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/miscellaneous/PythonFuncs.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/miscellaneous/PythonFuncs.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/miscellaneous/PythonFuncs.py	(revision 21239)
@@ -0,0 +1,24 @@
+def logical_and_n(*arg):
+	from numpy import logical_and
+
+	if len(arg):
+		result=arg[0]
+		for item in arg[1:]:
+			result=logical_and(result,item)
+		return result
+
+	else:
+		return None
+
+def logical_or_n(*arg):
+	from numpy import logical_or
+
+	if len(arg):
+		result=arg[0]
+		for item in arg[1:]:
+			result=logical_or(result,item)
+		return result
+
+	else:
+		return None
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/miscellaneous/fielddisplay.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/miscellaneous/fielddisplay.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/miscellaneous/fielddisplay.py	(revision 21239)
@@ -0,0 +1,140 @@
+#Module import 
+import numpy
+from math import isnan
+import MatlabFuncs as m
+
+def fielddisplay(md,name,comment):
+	"""
+	FIELDDISPLAY - display model field
+
+	   Usage:
+	      fielddisplay(md,name,comment)
+	"""
+
+	#get field
+	field=getattr(md,name)
+
+	#disp corresponding line as a function of field type (offset set as 9 spaces)
+	return parsedisplay("         ",name,field,comment);
+
+def parsedisplay(offset,name,field,comment):    # {{{ 
+
+	#string
+	if isinstance(field,str):
+
+		if len(field)>30:
+			string=displayunit(offset,name,"not displayed",comment)
+		else:
+			string=displayunit(offset,name,"'%s'" % field,comment)
+
+	#numeric
+	elif isinstance(field,(int,float)):
+		string=displayunit(offset,name,str(field),comment) 
+
+	#matrix
+	elif isinstance(field,numpy.ndarray):
+		string=displayunit(offset,name,str(field.shape),comment)
+
+	#logical
+	elif isinstance(field,bool):
+		if field:
+			string=displayunit(offset,name,"True",comment)
+		else:
+			string=displayunit(offset,name,"False",comment)
+	
+	#dictionary
+	elif isinstance(field,dict):
+		string=dict_display(offset,name,field,comment)
+
+	#list or tuple
+	elif isinstance(field,(list,tuple)):
+		string=list_display(offset,name,field,comment)
+
+	#None
+	elif field is None:
+		string=displayunit(offset,name,"None",comment)
+
+	else:
+		string=displayunit(offset,name,"not displayed",comment)
+		
+	return string
+	# }}}
+
+def dict_display(offset,name,field,comment):    # {{{
+
+	if field:
+		string =displayunit(offset,name,'{dictionary}',comment)+'\n'
+		offset+='   '
+
+		for structure_field,sfield in field.items():
+			string+=parsedisplay(offset,str(structure_field),sfield,'')+'\n'
+
+		if string and string[-1]=='\n':
+			string=string[:-1]
+
+	else:
+		string=displayunit(offset,name,'N/A',comment)
+
+	return string
+	# }}}
+
+def list_display(offset,name,field,comment):    # {{{
+
+	#initialization
+	if   isinstance(field,list):
+		sbeg='['
+		send=']'
+	elif isinstance(field,tuple):
+		sbeg='('
+		send=')'
+	string=sbeg
+
+	#go through the cell and fill string
+	if len(field)<5:
+		for fieldi in field:
+			if   isinstance(fieldi,str):
+				string+="'%s'," % fieldi
+			elif isinstance(fieldi,(bool,int,float)):
+				string+="%s," % str(fieldi)
+			else:
+				string=sbeg
+				break
+
+	if m.strcmp(string,sbeg):
+		string="%s%dx1%s" % (sbeg,len(field),send)
+	else:
+		string=string[:-1]+send
+
+	#call displayunit
+	return displayunit(offset,name,string,comment)
+	# }}}
+
+def displayunit(offset,name,characterization,comment):    # {{{
+
+	#take care of name
+	if len(name)>23:
+		name="%s..." % name[:20]
+	
+	#take care of characterization
+	if m.strcmp(characterization,"''") or m.strcmp(characterization,'""') or m.strcmpi(characterization,'nan'):
+		characterization="N/A"
+	
+	if len(characterization)>15:
+		characterization="%s..." % characterization[:12]
+	
+	#print
+	if not comment:
+		string="%s%-23s: %-15s" % (offset,name,characterization)
+	else:
+		if   isinstance(comment,str):
+			string="%s%-23s: %-15s -- %s" % (offset,name,characterization,comment)
+		elif isinstance(comment,list):
+			string="%s%-23s: %-15s -- %s" % (offset,name,characterization,comment[0])
+			for commenti in comment:
+				string+="\n%s%-23s  %-15s    %s" % (offset,'','',commenti)
+		else:
+			raise RuntimeError("fielddisplay error message: format for comment not supported yet")
+
+	return string
+	# }}}
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/miscellaneous/isnans.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/miscellaneous/isnans.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/miscellaneous/isnans.py	(revision 21239)
@@ -0,0 +1,18 @@
+import numpy
+
+def isnans(array):
+	"""
+	ISNANS: figure out if an array is nan. wrapper to isnan from matlab which stupidly does not allow this test  for structures!
+
+	   Usage:    isnans(array)
+
+	      See also : ISNAN 
+	"""
+
+	if   isinstance(array,(tuple,list,dict)): 
+		returnvalue=0
+	else:
+		returnvalue=numpy.isnan(array)
+
+	return returnvalue
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/miscellaneous/parallelrange.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/miscellaneous/parallelrange.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/miscellaneous/parallelrange.py	(revision 21239)
@@ -0,0 +1,25 @@
+#! /usr/bin/env python
+def parallelrange(rank,numprocs,globalsize):
+	"""
+	PARALLELRANGE - from a rank, and a number of processors, figure out a range, for parallel tasks.
+ 
+	   Usage: 
+	      i1,i2=parallelrange(rank,numprocs,globalsize)
+	"""
+
+	#We use floor. we under distribute rows. The rows left are then redistributed, therefore resulting in a more even distribution.
+	num_local_rows=[int(globalsize/numprocs) for i in range(numprocs)]
+
+	#There may be some rows left. Distribute evenly.
+	row_rest=globalsize - numprocs*int(globalsize/numprocs)
+
+	for i in range(row_rest):
+		num_local_rows[i]=num_local_rows[i]+1
+
+	i1=0
+	for i in range(rank-1):
+		i1+=num_local_rows[i]
+	i2=i1+num_local_rows[rank-1]-1
+
+	return i1,i2
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/modifier.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/modifier.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/modifier.sh	(revision 21239)
@@ -0,0 +1,419 @@
+sed -i 's/(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1)/(md,fieldname='friction.coefficient',timeseries=1,NaN=1)/g' ./classes/frictioncoulomb.py	
+sed -i 's/(md,'fieldname','friction.coefficientcoulomb','timeseries',1,'NaN',1)/(md,fieldname='friction.coefficientcoulomb',timeseries=1,NaN=1)/g' ./classes/frictioncoulomb.py
+sed -i 's/(md,'fieldname','friction.q','NaN',1,'size',[md.mesh.numberofelements])/(md,fieldname='friction.q',NaN=1,size=[md.mesh.numberofelements])/g' ./classes/frictioncoulomb.py	
+sed -i 's/(md,'fieldname','friction.p','NaN',1,'size',[md.mesh.numberofelements])/(md,fieldname='friction.p',NaN=1,size=[md.mesh.numberofelements])/g' ./classes/frictioncoulomb.py
+sed -i 's/(md,'fieldname','autodiff.obufsize','>=',524288)/(md,fieldname='autodiff.obufsize',ge=524288)/g' ./classes/autodiff.py
+sed -i 's/(md,'fieldname','autodiff.lbufsize','>=',524288)/(md,fieldname='autodiff.lbufsize',ge=524288)/g' ./classes/autodiff.py	
+sed -i 's/(md,'fieldname','autodiff.cbufsize','>=',524288)/(md,fieldname='autodiff.cbufsize',ge=524288)/g' ./classes/autodiff.py		
+sed -i 's/(md,'fieldname','autodiff.tbufsize','>=',524288)/(md,fieldname='autodiff.tbufsize',ge=524288)/g' ./classes/autodiff.py		
+sed -i 's/(md,'fieldname','autodiff.gcTriggerRatio','>=',2.0)/(md,fieldname='autodiff.gcTriggerRatio',ge=2.0)/g' ./classes/autodiff.py
+sed -i 's/(md,'fieldname','autodiff.gcTriggerMaxSize','>=',2000000)/(md,fieldname='autodiff.gcTriggerMaxSize',ge=2000000)/g' ./classes/autodiff.py
+sed -i 's/(md,'fieldname','autodiff.driver','values',['fos_forward','fov_forward','fov_forward_all','fos_reverse','fov_reverse','fov_reverse_all'])/(md,fieldname='autodiff.driver',values=['fos_forward','fov_forward','fov_forward_all','fos_reverse','fov_reverse','fov_reverse_all'])/g' ./classes/autodiff.py
+sed -i 's/(md,'fieldname','materials.rho_ice','>',0)/(md,fieldname='materials.rho_ice',gt=0)/g' ./classes/matice.py
+sed -i 's/(md,'fieldname','materials.rho_water','>',0)/(md,fieldname='materials.rho_water',gt=0)/g' ./classes/matice.py
+sed -i 's/(md,'fieldname','materials.rho_freshwater','>',0)/(md,fieldname='materials.rho_freshwater',gt=0)/g' ./classes/matice.py
+sed -i 's/(md,'fieldname','materials.mu_water','>',0)/(md,fieldname='materials.mu_water',gt=0)/g' ./classes/matice.py		
+sed -i 's/(md,'fieldname','materials.rheology_B','>',0,'timeseries',1,'NaN',1)/(md,fieldname='materials.rheology_B',gt=0,timeseries=1,NaN=1)/g' ./classes/matice.py
+sed -i 's/(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements])/(md,fieldname='materials.rheology_n',gt=0,size=[md.mesh.numberofelements])/g' ./classes/matice.py
+sed -i 's/(md,'fieldname','materials.rheology_law','values',['None','Cuffey','Paterson','Arrhenius','LliboutryDuval'])/(md,fieldname='materials.rheology_law',values=['None','Cuffey','Paterson','Arrhenius','LliboutryDuval'])/g' ./classes/matice.py		
+sed -i 's/(md,'fieldname','materials.lithosphere_shear_modulus','>',0,'numel',[1]);/(md,fieldname='materials.lithosphere_shear_modulus',gt=0,numel=[1]);/g' ./classes/matice.py
+sed -i 's/(md,'fieldname','materials.lithosphere_density','>',0,'numel',[1]);/(md,fieldname='materials.lithosphere_density',gt=0,numel=[1]);/g' ./classes/matice.py
+sed -i 's/(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',[1]);/(md,fieldname='materials.mantle_shear_modulus',gt=0,numel=[1]);/g' ./classes/matice.py
+sed -i 's/(md,'fieldname','materials.mantle_density','>',0,'numel',[1]);/(md,fieldname='materials.mantle_density',gt=0,numel=[1]);/g' ./classes/matice.py:		
+sed -i 's/(md,'fieldname','smb.desfac','<=',1,'numel',[1])/(md,fieldname='smb.desfac',le=1,numel=[1])/g' ./classes/SMBd18opdd.py:			
+sed -i 's/(md,'fieldname','smb.s0p','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])/(md,fieldname='smb.s0p',ge=0,NaN=1,size=[md.mesh.numberofvertices,1])/g' ./classes/SMBd18opdd.py:			
+sed -i 's/(md,'fieldname','smb.s0t','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])/(md,fieldname='smb.s0t',ge=0,NaN=1,size=[md.mesh.numberofvertices,1])/g' ./classes/SMBd18opdd.py:			
+sed -i 's/(md,'fieldname','smb.rlaps','>=',0,'numel',[1])/(md,fieldname='smb.rlaps',ge=0,numel=[1])/g' ./classes/SMBd18opdd.py:			
+sed -i 's/(md,'fieldname','smb.rlapslgm','>=',0,'numel',[1])/(md,fieldname='smb.rlapslgm',ge=0,numel=[1])/g' ./classes/SMBd18opdd.py:			
+sed -i 's/(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)/(md,fieldname='smb.temperatures_presentday',size=[md.mesh.numberofvertices+1,12],NaN=1,timeseries=1)/g' ./classes/SMBd18opdd.py:				
+sed -i 's/(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)/(md,fieldname='smb.precipitations_presentday',size=[md.mesh.numberofvertices+1,12],NaN=1,timeseries=1)/g' ./classes/SMBd18opdd.py:				
+sed -i 's/(md,'fieldname','smb.delta18o',NaN=1,'size',[2,numpy.nan],'singletimeseries',1)/(md,fieldname='smb.delta18o',NaN=1,size=[2,numpy.nan],'singletimesed -i 's/(md,'fieldname','smb.dpermil','>=',0,'numel',[1])/(md,fieldname='smb.dpermil',ge=0,numel=[1])/g' ./classes/SMBd18opdd.py:				
+sed -i 's/(md,'fieldname','masstransport.requested_outputs','stringrow',1)/(md,fieldname='masstransport.requested_outputs','stringrow',1)/g' ./classes/SMBd18opdd.py:		
+sed -i 's/(md,'fieldname','inversion.iscontrol','values',[0,1])/(md,fieldname='inversion.iscontrol',values=[0,1])/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.incomplete_adjoint','values',[0,1])/(md,fieldname='inversion.incomplete_adjoint',values=[0,1])/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())/(md,fieldname='inversion.control_parameters','cell',1,values=supportedcontrols())/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.control_scaling_factors','size',[num_controls],'>',0,'NaN',1)/(md,fieldname='inversion.control_scaling_factors',size=[num_controls],gt=0,NaN=1)/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.maxsteps','numel',[1],'>=',0)/(md,fieldname='inversion.maxsteps',numel=[1],ge=0)/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.maxiter','numel',[1],'>=',0)/(md,fieldname='inversion.maxiter',numel=[1],ge=0)/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.dxmin','numel',[1],'>',0.)/(md,fieldname='inversion.dxmin',numel=[1],gt=0.)/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.gttol','numel',[1],'>',0.)/(md,fieldname='inversion.gttol',numel=[1],gt=0.)/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.cost_functions','size',[num_costfunc],'values',supportedcostfunctions())/(md,fieldname='inversion.cost_functions',size=[num_costfunc],values=supportedcostfunctions())/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices,num_costfunc],'>=',0)/(md,fieldname='inversion.cost_functions_coefficients',size=[md.mesh.numberofvertices,num_costfunc],ge=0)/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices,num_controls])/(md,fieldname='inversion.min_parameters',size=[md.mesh.numberofvertices,num_controls])/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices,num_controls])/(md,fieldname='inversion.max_parameters',size=[md.mesh.numberofvertices,num_controls])/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='inversion.thickness_obs',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/m1qn3inversion.py:			
+sed -i 's/(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='inversion.vx_obs',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/m1qn3inversion.py:			
+sed -i 's/(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='inversion.vy_obs',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/m1qn3inversion.py:			
+sed -i 's///g' ./classes/masstransport.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','masstransport.spcthickness','timeseries',1)/(md,fieldname='masstransport.spcthickness',timeseries=1)/g' ./classes/masstransport.py:		
+sed -i 's/(md,'fieldname','masstransport.isfreesurface','values',[0,1])/(md,fieldname='masstransport.isfreesurface',values=[0,1])/g' ./classes/masstransport.py:		
+sed -i 's/(md,'fieldname','masstransport.hydrostatic_adjustment','values',['Absolute','Incremental'])/(md,fieldname='masstransport.hydrostatic_adjustment',values=['Absolute','Incremental'])/g' ./classes/masstransport.py:		
+sed -i 's/(md,'fieldname','masstransport.stabilization','values',[0,1,2,3,4])/(md,fieldname='masstransport.stabilization',values=[0,1,2,3,4])/g' ./classes/masstransport.py:		
+sed -i 's/(md,'fieldname','masstransport.min_thickness','>',0)/(md,fieldname='masstransport.min_thickness',gt=0)/g' ./classes/masstransport.py:		
+sed -i 's/(md,'fieldname','masstransport.requested_outputs','stringrow',1)/(md,fieldname='masstransport.requested_outputs','stringrow',1)/g' ./classes/masstransport.py:		
+sed -i 's///g' ./classes/mismipbasalforcings.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)/(md,fieldname='basalforcings.groundedice_melting_rate',NaN=1,timeseries=1)/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])/(md,fieldname='basalforcings.meltrate_factor',ge=0,numel=[1])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])/(md,fieldname='basalforcings.threshold_thickness',ge=0,numel=[1])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])/(md,fieldname='basalforcings.upperdepth_melt',le=0,numel=[1])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='basalforcings.groundedice_melting_rate',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])/(md,fieldname='basalforcings.meltrate_factor',ge=0,numel=[1])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])/(md,fieldname='basalforcings.threshold_thickness',ge=0,numel=[1])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])/(md,fieldname='basalforcings.upperdepth_melt',le=0,numel=[1])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)/(md,fieldname='basalforcings.groundedice_melting_rate',NaN=1,timeseries=1)/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])/(md,fieldname='basalforcings.meltrate_factor',ge=0,numel=[1])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])/(md,fieldname='basalforcings.threshold_thickness',ge=0,numel=[1])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])/(md,fieldname='basalforcings.upperdepth_melt',le=0,numel=[1])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.geothermalflux','NaN',1,'timeseries',1,'>=',0)/(md,fieldname='basalforcings.geothermalflux',NaN=1,timeseries=1,ge=0)/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's///g' ./classes/timestepping.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','timestepping.start_time','numel',[1],'NaN',1)/(md,fieldname='timestepping.start_time',numel=[1],NaN=1)/g' ./classes/timestepping.py:		
+sed -i 's/(md,'fieldname','timestepping.final_time','numel',[1],'NaN',1)/(md,fieldname='timestepping.final_time',numel=[1],NaN=1)/g' ./classes/timestepping.py:		
+sed -i 's/(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1)/(md,fieldname='timestepping.time_step',numel=[1],ge=0,NaN=1)/g' ./classes/timestepping.py:		
+sed -i 's/(md,'fieldname','timestepping.time_adapt','numel',[1],'values',[0,1])/(md,fieldname='timestepping.time_adapt',numel=[1],values=[0,1])/g' ./classes/timestepping.py:		
+sed -i 's/(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1)/(md,fieldname='timestepping.cfl_coefficient',numel=[1],gt=0,le=1)/g' ./classes/timestepping.py:		
+sed -i 's/(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0,1])/(md,fieldname='timestepping.interp_forcings',numel=[1],values=[0,1])/g' ./classes/timestepping.py:		
+sed -i 's///g' ./classes/calving.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','calving.spclevelset','timeseries',1)/(md,fieldname='calving.spclevelset',timeseries=1)/g' ./classes/calving.py:		
+sed -i 's/(md,'fieldname','calving.stabilization','values',[0,1,2]);/(md,fieldname='calving.stabilization',values=[0,1,2]);/g' ./classes/calving.py:		
+sed -i 's/(md,'fieldname','calving.calvingrate','>=',0,'timeseries',1,'NaN',1);/(md,fieldname='calving.calvingrate',ge=0,timeseries=1,NaN=1);/g' ./classes/calving.py:		
+sed -i 's/(md,'fieldname','calving.meltingrate','>=',0,'timeseries',1,'NaN',1);/(md,fieldname='calving.meltingrate',ge=0,timeseries=1,NaN=1);/g' ./classes/calving.py:		
+sed -i 's///g' ./classes/SMBcomponents.py:from checkfield import *
+sed -i 's/(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1)/(md,fieldname='smb.accumulation',timeseries=1,NaN=1)/g' ./classes/SMBcomponents.py:			
+sed -i 's/(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='smb.accumulation',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/SMBcomponents.py:			
+sed -i 's/(md,'fieldname','smb.runoff','timeseries',1,'NaN',1)/(md,fieldname='smb.runoff',timeseries=1,NaN=1)/g' ./classes/SMBcomponents.py:			
+sed -i 's/(md,'fieldname','smb.runoff','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='smb.runoff',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/SMBcomponents.py:			
+sed -i 's/(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1)/(md,fieldname='smb.evaporation',timeseries=1,NaN=1)/g' ./classes/SMBcomponents.py:			
+sed -i 's/(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='smb.evaporation',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/SMBcomponents.py:			
+sed -i 's/(md,'fieldname','masstransport.requested_outputs','stringrow',1)/(md,fieldname='masstransport.requested_outputs','stringrow',1)/g' ./classes/SMBcomponents.py:		
+sed -i 's///g' ./classes/flaim.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','flaim.tracks','file',1)/(md,fieldname='flaim.tracks','file',1)/g' ./classes/flaim.py:		
+sed -i 's/(md,'fieldname','flaim.targets','file',1)/(md,fieldname='flaim.targets','file',1)/g' ./classes/flaim.py:			
+sed -i 's/(md,'fieldname','flaim.criterion',numel=[md.mesh.numberofvertices,md.mesh.numberofelements])/(md,fieldname='flaim.criterion','numel',[md.mesh.numberofvertices,md.mesh.numberofelements])/g' ./classes/flaim.py:			
+sed -i 's/(md,'fieldname',"autodiff.independents[%d].fov_forward_indices" % i,'>=',1,'<=',self.nods,'size',[float('NaN'),1])/(md,fieldname="autodiff.independents[%d].fov_forward_indices" % i,ge=1,le=self.nods,size=[float('NaN'),1])/g' ./classes/independent.py:			
+sed -i 's///g' ./classes/calvinglevermann.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','calving.spclevelset','timeseries',1)/(md,fieldname='calving.spclevelset',timeseries=1)/g' ./classes/calvinglevermann.py:		
+sed -i 's/(md,'fieldname','calving.stabilization','values',[0,1,2]);/(md,fieldname='calving.stabilization',values=[0,1,2]);/g' ./classes/calvinglevermann.py:		
+sed -i 's/(md,'fieldname','calving.coeff','size',[md.mesh.numberofvertices],'>',0)/(md,fieldname='calving.coeff',size=[md.mesh.numberofvertices],gt=0)/g' ./classes/calvinglevermann.py:		
+sed -i 's/(md,'fieldname','calving.meltingrate','NaN',1,'size',[md.mesh.numberofvertices],'>=',0)/(md,fieldname='calving.meltingrate',NaN=1,size=[md.mesh.numberofvertices],ge=0)/g' ./classes/calvinglevermann.py:		
+sed -i 's///g' ./classes/steadystate.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','steadystate.requested_outputs','stringrow',1)/(md,fieldname='steadystate.requested_outputs','stringrow',1)/g' ./classes/steadystate.py:		
+sed -i 's///g' ./classes/SMBmeltcomponents.py:from checkfield import *
+sed -i 's/(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1)/(md,fieldname='smb.accumulation',timeseries=1,NaN=1)/g' ./classes/SMBmeltcomponents.py:			
+sed -i 's/(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='smb.accumulation',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/SMBmeltcomponents.py:			
+sed -i 's/(md,'fieldname','smb.melt','timeseries',1,'NaN',1)/(md,fieldname='smb.melt',timeseries=1,NaN=1)/g' ./classes/SMBmeltcomponents.py:			
+sed -i 's/(md,'fieldname','smb.melt','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='smb.melt',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/SMBmeltcomponents.py:			
+sed -i 's/(md,'fieldname','smb.refreeze','timeseries',1,'NaN',1)/(md,fieldname='smb.refreeze',timeseries=1,NaN=1)/g' ./classes/SMBmeltcomponents.py:			
+sed -i 's/(md,'fieldname','smb.refreeze','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='smb.refreeze',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/SMBmeltcomponents.py:			
+sed -i 's/(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1)/(md,fieldname='smb.evaporation',timeseries=1,NaN=1)/g' ./classes/SMBmeltcomponents.py:			
+sed -i 's/(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='smb.evaporation',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/SMBmeltcomponents.py:			
+sed -i 's/(md,'fieldname','masstransport.requested_outputs','stringrow',1)/(md,fieldname='masstransport.requested_outputs','stringrow',1)/g' ./classes/SMBmeltcomponents.py:		
+sed -i 's///g' ./classes/matdamageice.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','materials.rho_ice','>',0)/(md,fieldname='materials.rho_ice',gt=0)/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.rho_water','>',0)/(md,fieldname='materials.rho_water',gt=0)/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.rho_freshwater','>',0)/(md,fieldname='materials.rho_freshwater',gt=0)/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.mu_water','>',0)/(md,fieldname='materials.mu_water',gt=0)/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.rheology_B','>',0,'size',[md.mesh.numberofvertices])/(md,fieldname='materials.rheology_B',gt=0,size=[md.mesh.numberofvertices])/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements])/(md,fieldname='materials.rheology_n',gt=0,size=[md.mesh.numberofelements])/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.rheology_law','values',['None','Cuffey','Paterson','Arrhenius','LliboutryDuval'])/(md,fieldname='materials.rheology_law',values=['None','Cuffey','Paterson','Arrhenius','LliboutryDuval'])/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.lithosphere_shear_modulus','>',0,numel=[1]);/(md,fieldname='materials.lithosphere_shear_modulus',gt=0,'numel',[1]);/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.lithosphere_density','>',0,numel=[1]);/(md,fieldname='materials.lithosphere_density',gt=0,'numel',[1]);/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.mantle_shear_modulus','>',0,numel=[1]);/(md,fieldname='materials.mantle_shear_modulus',gt=0,'numel',[1]);/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.mantle_density','>',0,'numel',[1]);/(md,fieldname='materials.mantle_density',gt=0,numel=[1]);/g' ./classes/matdamageice.py:		
+sed -i 's///g' ./classes/massfluxatgate.py:from checkfield import checkfield
+sed -i 's/(md,'field',self.definitionenum,'values',[Outputdefinition1Enum(),Outputdefinition2Enum(),Outputdefinition3Enum(),Outputdefinition4Enum(),Outputdefinition5Enum(),Outputdefinition6Enum(),Outputdefinition7Enum(),Outputdefinition8Enum(),Outputdefinition9Enum(),Outputdefinition10Enum()])/(md,'field',self.definitionenum,values=[Outputdefinition1Enum(),Outputdefinition2Enum(),Outputdefinition3Enum(),Outputdefinition4Enum(),Outputdefinition5Enum(),Outputdefinition6Enum(),Outputdefinition7Enum(),Outputdefinition8Enum(),Outputdefinition9Enum(),Outputdefinition10Enum()])/g' ./classes/massfluxatgate.py:			
+sed -i 's///g' ./classes/gia.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','gia.mantle_viscosity','NaN',1,'size',[md.mesh.numberofvertices,1],'>',0)/(md,fieldname='gia.mantle_viscosity',NaN=1,size=[md.mesh.numberofvertices,1],gt=0)/g' ./classes/gia.py:		
+sed -i 's/(md,'fieldname','gia.lithosphere_thickness','NaN',1,'size',[md.mesh.numberofvertices,1],'>',0)/(md,fieldname='gia.lithosphere_thickness',NaN=1,size=[md.mesh.numberofvertices,1],gt=0)/g' ./classes/gia.py:		
+sed -i 's/(md,'fieldname','gia.cross_section_shape','numel',[1],'values',[1,2])/(md,fieldname='gia.cross_section_shape',numel=[1],values=[1,2])/g' ./classes/gia.py:		
+sed -i 's///g' ./classes/balancethickness.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','balancethickness.spcthickness')/(md,fieldname='balancethickness.spcthickness')/g' ./classes/balancethickness.py:		
+sed -i 's/(md,'fieldname','balancethickness.thickening_rate','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='balancethickness.thickening_rate',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/balancethickness.py:		
+sed -i 's/(md,'fieldname','balancethickness.stabilization','size',[1],'values',[0,1,2,3])/(md,fieldname='balancethickness.stabilization',size=[1],values=[0,1,2,3])/g' ./classes/balancethickness.py:		
+sed -i 's///g' ./classes/SMBgradients.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','smb.href','timeseries',1,'NaN',1)/(md,fieldname='smb.href',timeseries=1,NaN=1)/g' ./classes/SMBgradients.py:			
+sed -i 's/(md,'fieldname','smb.smbref','timeseries',1,'NaN',1)/(md,fieldname='smb.smbref',timeseries=1,NaN=1)/g' ./classes/SMBgradients.py:			
+sed -i 's/(md,'fieldname','smb.b_pos','timeseries',1,'NaN',1)/(md,fieldname='smb.b_pos',timeseries=1,NaN=1)/g' ./classes/SMBgradients.py:			
+sed -i 's/(md,'fieldname','smb.b_neg','timeseries',1,'NaN',1)/(md,fieldname='smb.b_neg',timeseries=1,NaN=1)/g' ./classes/SMBgradients.py:			
+sed -i 's/(md,'fieldname','masstransport.requested_outputs','stringrow',1)/(md,fieldname='masstransport.requested_outputs','stringrow',1)/g' ./classes/SMBgradients.py:		
+sed -i 's///g' ./classes/mesh2d.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','mesh.x','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='mesh.x',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/mesh2d.py:		
+sed -i 's/(md,'fieldname','mesh.y','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='mesh.y',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/mesh2d.py:		
+sed -i 's/(md,'fieldname','mesh.elements','NaN',1,'>',0,'values',numpy.arange(1,md.mesh.numberofvertices+1))/(md,fieldname='mesh.elements',NaN=1,gt=0,values=numpy.arange(1,md.mesh.numberofvertices+1))/g' ./classes/mesh2d.py:		
+sed -i 's/(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements,3])/(md,fieldname='mesh.elements',size=[md.mesh.numberofelements,3])/g' ./classes/mesh2d.py:		
+sed -i 's/(md,'fieldname','mesh.numberofelements','>',0)/(md,fieldname='mesh.numberofelements',gt=0)/g' ./classes/mesh2d.py:		
+sed -i 's/(md,'fieldname','mesh.numberofvertices','>',0)/(md,fieldname='mesh.numberofvertices',gt=0)/g' ./classes/mesh2d.py:		
+sed -i 's/(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message',"'mesh.average_vertex_connectivity' should be at least 9 in 2d")/(md,fieldname='mesh.average_vertex_connectivity',ge=9,'message',"'mesh.average_vertex_connectivity' should be at least 9 in 2d")/g' ./classes/mesh2d.py:		
+sed -i 's/(md,'fieldname','inversion.iscontrol','values',[0, 1])/(md,fieldname='inversion.iscontrol',values=[0, 1])/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.control_parameters','cell',1,'values',\/(md,fieldname='inversion.control_parameters','cell',1,values=\/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.control_scaling_factors','size',[1, num_controls],'>',0,float('Nan'),1)/(md,fieldname='inversion.control_scaling_factors',size=[1, num_controls],gt=0,float('Nan'),1)/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.maxsteps','numel',1,'>=',0)/(md,fieldname='inversion.maxsteps',numel=1,ge=0)/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.maxiter','numel',1,'>=',0)/(md,fieldname='inversion.maxiter',numel=1,ge=0)/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.dxmin','numel',1,'>',0)/(md,fieldname='inversion.dxmin',numel=1,gt=0)/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.gttol','numel',1,'>',0)/(md,fieldname='inversion.gttol',numel=1,gt=0)/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.cost_functions','size',[1, num_costfunc],'values', [i for i in range(101,106)]+[201]+[i for i in range(501,507)]+[i for i in range(601,605)]+[i for i in range(1001, 1011)])/(md,fieldname='inversion.cost_functions',size=[1, num_costfunc],values= [i for i in range(101,106)]+[201]+[i for i in range(501,507)]+[i for i in range(601,605)]+[i for i in range(1001, 1011)])/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices, num_costfunc],'>=',0)/(md,fieldname='inversion.cost_functions_coefficients',size=[md.mesh.numberofvertices, num_costfunc],ge=0)/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices, num_controls])/(md,fieldname='inversion.min_parameters',size=[md.mesh.numberofvertices, num_controls])/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices, num_controls])/(md,fieldname='inversion.max_parameters',size=[md.mesh.numberofvertices, num_controls])/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)/(md,fieldname='inversion.thickness_obs',size=[md.mesh.numberofvertices, 1],float('Nan'),1)/g' ./classes/adinversion.py:			
+sed -i 's/(md,'fieldname','inversion.surface_obs','size',[md.mesh.numberofvertices, 1], float('Nan'),1)/(md,fieldname='inversion.surface_obs',size=[md.mesh.numberofvertices, 1], float('Nan'),1)/g' ./classes/adinversion.py:			
+sed -i 's/(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)/(md,fieldname='inversion.thickness_obs',size=[md.mesh.numberofvertices, 1],float('Nan'),1)/g' ./classes/adinversion.py:			
+sed -i 's/(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)/(md,fieldname='inversion.vx_obs',size=[md.mesh.numberofvertices, 1],float('Nan'),1)/g' ./classes/adinversion.py:			
+sed -i 's/(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)/(md,fieldname='inversion.vy_obs',size=[md.mesh.numberofvertices, 1],float('Nan'),1)/g' ./classes/adinversion.py:				
+sed -i 's///g' ./classes/damage.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','damage.isdamage','numel',[1],'values',[0,1])/(md,fieldname='damage.isdamage',numel=[1],values=[0,1])/g' ./classes/damage.py:		
+sed -i 's/(md,'fieldname','damage.D','>=',0,'<=',self.max_damage,'size',[md.mesh.numberofvertices])/(md,fieldname='damage.D',ge=0,le=self.max_damage,size=[md.mesh.numberofvertices])/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.max_damage','<',1,'>=',0)/(md,fieldname='damage.max_damage','<',1,ge=0)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.law','numel',[1],'values',[0,1,2,3])/(md,fieldname='damage.law',numel=[1],values=[0,1,2,3])/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.spcdamage','timeseries',1)/(md,fieldname='damage.spcdamage',timeseries=1)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.stabilization','numel',[1],'values',[0,1,2,4])/(md,fieldname='damage.stabilization',numel=[1],values=[0,1,2,4])/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.maxiter','>=0',0)/(md,fieldname='damage.maxiter','>=0',0)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.elementinterp','values',['P1','P2'])/(md,fieldname='damage.elementinterp',values=['P1','P2'])/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.stress_threshold','>=',0)/(md,fieldname='damage.stress_threshold',ge=0)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.kappa','>',1)/(md,fieldname='damage.kappa',gt=1)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.healing','>=',0)/(md,fieldname='damage.healing',ge=0)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.c1','>=',0)/(md,fieldname='damage.c1',ge=0)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.c2','>=',0)/(md,fieldname='damage.c2',ge=0)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.c3','>=',0)/(md,fieldname='damage.c3',ge=0)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.c4','>=',0)/(md,fieldname='damage.c4',ge=0)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.healing','>=',0)/(md,fieldname='damage.healing',ge=0)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0,1])/(md,fieldname='damage.equiv_stress',numel=[1],values=[0,1])/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.requested_outputs','stringrow',1)/(md,fieldname='damage.requested_outputs','stringrow',1)/g' ./classes/damage.py:			
+sed -i 's///g' ./classes/friction.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1)/(md,fieldname='friction.coefficient',timeseries=1,NaN=1)/g' ./classes/friction.py:		
+sed -i 's/(md,'fieldname','friction.q','NaN',1,'size',[md.mesh.numberofelements])/(md,fieldname='friction.q',NaN=1,size=[md.mesh.numberofelements])/g' ./classes/friction.py:		
+sed -i 's/(md,'fieldname','friction.p','NaN',1,'size',[md.mesh.numberofelements])/(md,fieldname='friction.p',NaN=1,size=[md.mesh.numberofelements])/g' ./classes/friction.py:		
+sed -i 's///g' ./classes/thermal.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','thermal.stabilization','numel',[1],'values',[0,1,2])/(md,fieldname='thermal.stabilization',numel=[1],values=[0,1,2])/g' ./classes/thermal.py:		
+sed -i 's/(md,'fieldname','thermal.spctemperature','timeseries',1)/(md,fieldname='thermal.spctemperature',timeseries=1)/g' ./classes/thermal.py:		
+sed -i 's/(md,'fieldname','thermal.spctemperature[numpy.nonzero(numpy.logical_not(numpy.isnan(md.thermal.spctemperature[0:md.mesh.numberofvertices,:])))]','<',md.materials.meltingpoint-md.materials.beta*md.materials.rho_ice*md.constants.g*replicate[pos],'message',"spctemperature should be below the adjusted melting point")/(md,fieldname='thermal.spctemperature[numpy.nonzero(numpy.logical_not(numpy.isnan(md.thermal.spctemperature[0:md.mesh.numberofvertices,:])))]','<',md.materials.meltingpoint-md.materials.beta*md.materials.rho_ice*md.constants.g*replicate[pos],'message',"spctemperature should be below the adjusted melting point")/g' ./classes/thermal.py:			
+sed -i 's/(md,'fieldname','thermal.isenthalpy','numel',[1],'values',[0,1])/(md,fieldname='thermal.isenthalpy',numel=[1],values=[0,1])/g' ./classes/thermal.py:			
+sed -i 's/(md,'fieldname','thermal.isdynamicbasalspc','numel',[1],'values',[0,1]);/(md,fieldname='thermal.isdynamicbasalspc',numel=[1],values=[0,1]);/g' ./classes/thermal.py:			
+sed -i 's/(md,'fieldname','thermal.reltol','>',0.,'message',"reltol must be larger than zero");/(md,fieldname='thermal.reltol',gt=0.,'message',"reltol must be larger than zero");/g' ./classes/thermal.py:				
+sed -i 's/(md,'fieldname','thermal.requested_outputs','stringrow',1)/(md,fieldname='thermal.requested_outputs','stringrow',1)/g' ./classes/thermal.py:		
+sed -i 's///g' ./classes/constants.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','constants.g','>',0,'size',[1])/(md,fieldname='constants.g',gt=0,size=[1])/g' ./classes/constants.py:		
+sed -i 's/(md,'fieldname','constants.yts','>',0,'size',[1])/(md,fieldname='constants.yts',gt=0,size=[1])/g' ./classes/constants.py:		
+sed -i 's/(md,'fieldname','constants.referencetemperature','size',[1])/(md,fieldname='constants.referencetemperature',size=[1])/g' ./classes/constants.py:		
+sed -i 's///g' ./classes/SMBforcing.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','smb.mass_balance','timeseries',1,'NaN',1)/(md,fieldname='smb.mass_balance',timeseries=1,NaN=1)/g' ./classes/SMBforcing.py:			
+sed -i 's/(md,'fieldname','smb.mass_balance','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='smb.mass_balance',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/SMBforcing.py:			
+sed -i 's/(md,'fieldname','masstransport.requested_outputs','stringrow',1)/(md,fieldname='masstransport.requested_outputs','stringrow',1)/g' ./classes/SMBforcing.py:		
+sed -i 's///g' ./classes/settings.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','settings.results_on_nodes','numel',[1],'values',[0,1])/(md,fieldname='settings.results_on_nodes',numel=[1],values=[0,1])/g' ./classes/settings.py:		
+sed -i 's/(md,'fieldname','settings.io_gather','numel',[1],'values',[0,1])/(md,fieldname='settings.io_gather',numel=[1],values=[0,1])/g' ./classes/settings.py:		
+sed -i 's/(md,'fieldname','settings.lowmem','numel',[1],'values',[0,1])/(md,fieldname='settings.lowmem',numel=[1],values=[0,1])/g' ./classes/settings.py:		
+sed -i 's/(md,'fieldname','settings.output_frequency','numel',[1],'>=',1)/(md,fieldname='settings.output_frequency',numel=[1],ge=1)/g' ./classes/settings.py:		
+sed -i 's/(md,'fieldname','settings.recording_frequency','numel',[1],'>=',0)/(md,fieldname='settings.recording_frequency',numel=[1],ge=0)/g' ./classes/settings.py:		
+sed -i 's/(md,'fieldname','settings.waitonlock','numel',[1])/(md,fieldname='settings.waitonlock',numel=[1])/g' ./classes/settings.py:		
+sed -i 's///g' ./classes/SMBpdd.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','smb.desfac','<=',1,'numel',[1])/(md,fieldname='smb.desfac',le=1,numel=[1])/g' ./classes/SMBpdd.py:			
+sed -i 's/(md,'fieldname','smb.s0p','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])/(md,fieldname='smb.s0p',ge=0,NaN=1,size=[md.mesh.numberofvertices,1])/g' ./classes/SMBpdd.py:			
+sed -i 's/(md,'fieldname','smb.s0t','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])/(md,fieldname='smb.s0t',ge=0,NaN=1,size=[md.mesh.numberofvertices,1])/g' ./classes/SMBpdd.py:			
+sed -i 's/(md,'fieldname','smb.rlaps','>=',0,'numel',[1])/(md,fieldname='smb.rlaps',ge=0,numel=[1])/g' ./classes/SMBpdd.py:			
+sed -i 's/(md,'fieldname','smb.rlapslgm','>=',0,'numel',[1])/(md,fieldname='smb.rlapslgm',ge=0,numel=[1])/g' ./classes/SMBpdd.py:			
+sed -i 's/(md,'fieldname','smb.monthlytemperatures','NaN',1,'timeseries',1)/(md,fieldname='smb.monthlytemperatures',NaN=1,timeseries=1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.precipitation','NaN',1,'timeseries',1)/(md,fieldname='smb.precipitation',NaN=1,timeseries=1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.delta18o','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)/(md,fieldname='smb.delta18o',NaN=1,size=[2,numpy.nan],'singletimeseries',1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.delta18o_surface','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)/(md,fieldname='smb.delta18o_surface',NaN=1,size=[2,numpy.nan],'singletimeseries',1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)/(md,fieldname='smb.temperatures_presentday',size=[md.mesh.numberofvertices+1,12],NaN=1,timeseries=1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)/(md,fieldname='smb.temperatures_lgm',size=[md.mesh.numberofvertices+1,12],NaN=1,timeseries=1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)/(md,fieldname='smb.precipitations_presentday',size=[md.mesh.numberofvertices+1,12],NaN=1,timeseries=1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)                                       /(md,fieldname='smb.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],NaN=1,timeseries=1)                                       /g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.Tdiff','NaN',1,size=[2,numpy.nan],'singletimeseries',1)/(md,fieldname='smb.Tdiff',NaN=1,'size',[2,numpy.nan],'singletimeseries',1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.sealev','NaN',1,size=[2,numpy.nan],'singletimeseries',1)/(md,fieldname='smb.sealev',NaN=1,'size',[2,numpy.nan],'singletimeseries',1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.temperatures_presentday',size=[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)/(md,fieldname='smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],NaN=1,timeseries=1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.temperatures_lgm',size=[md.mesh.numberofvertices+1,12],'NaN',1,timeseries=1)/(md,fieldname='smb.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],NaN=1,'timeseries',1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.precipitations_presentday',size=[md.mesh.numberofvertices+1,12],'NaN',1,timeseries=1)/(md,fieldname='smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],NaN=1,'timeseries',1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.precipitations_lgm',size=[md.mesh.numberofvertices+1,12],'NaN',1,timeseries=1)                                       /(md,fieldname='smb.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],NaN=1,'timeseries',1)                                       /g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.Pfac','NaN',1,size=[2,numpy.nan],'singletimeseries',1)/(md,fieldname='smb.Pfac',NaN=1,'size',[2,numpy.nan],'singletimeseries',1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.Tdiff','NaN',1,size=[2,numpy.nan],'singletimeseries',1)/(md,fieldname='smb.Tdiff',NaN=1,'size',[2,numpy.nan],'singletimeseries',1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.sealev','NaN',1,size=[2,numpy.nan],'singletimeseries',1)/(md,fieldname='smb.sealev',NaN=1,'size',[2,numpy.nan],'singletimeseries',1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','masstransport.requested_outputs','stringrow',1)/(md,fieldname='masstransport.requested_outputs','stringrow',1)/g' ./classes/SMBpdd.py:		
+sed -i 's///g' ./classes/toolkits.py:from checkfield import checkfield
+sed -i 's///g' ./classes/transient.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','transient.issmb','numel',[1],'values',[0,1])/(md,fieldname='transient.issmb',numel=[1],values=[0,1])/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.ismasstransport','numel',[1],'values',[0,1])/(md,fieldname='transient.ismasstransport',numel=[1],values=[0,1])/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.isstressbalance','numel',[1],'values',[0,1])/(md,fieldname='transient.isstressbalance',numel=[1],values=[0,1])/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.isthermal','numel',[1],'values',[0,1])/(md,fieldname='transient.isthermal',numel=[1],values=[0,1])/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.isgroundingline','numel',[1],'values',[0,1])/(md,fieldname='transient.isgroundingline',numel=[1],values=[0,1])/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.isgia','numel',[1],'values',[0,1])/(md,fieldname='transient.isgia',numel=[1],values=[0,1])/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.isdamageevolution','numel',[1],'values',[0,1])/(md,fieldname='transient.isdamageevolution',numel=[1],values=[0,1])/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.islevelset','numel',[1],'values',[0,1])/(md,fieldname='transient.islevelset',numel=[1],values=[0,1])/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.ishydrology','numel',[1],'values',[0,1])/(md,fieldname='transient.ishydrology',numel=[1],values=[0,1])/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.iscalving','numel',[1],'values',[0,1]);/(md,'fieldname','transient.iscalving',numel=[1],values=[0,1]);/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.requested_outputs','stringrow',1)/(md,fieldname='transient.requested_outputs','stringrow',1)/g' ./classes/transient.py:		
+sed -i 's///g' ./classes/basalforcings.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)/(md,fieldname='basalforcings.groundedice_melting_rate',NaN=1,timeseries=1)/g' ./classes/basalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'timeseries',1)/(md,fieldname='basalforcings.floatingice_melting_rate',NaN=1,timeseries=1)/g' ./classes/basalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='basalforcings.groundedice_melting_rate',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/basalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='basalforcings.floatingice_melting_rate',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/basalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)/(md,fieldname='basalforcings.groundedice_melting_rate',NaN=1,timeseries=1)/g' ./classes/basalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'timeseries',1)/(md,fieldname='basalforcings.floatingice_melting_rate',NaN=1,timeseries=1)/g' ./classes/basalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.geothermalflux','NaN',1,'timeseries',1,'>=',0)/(md,fieldname='basalforcings.geothermalflux',NaN=1,timeseries=1,ge=0)/g' ./classes/basalforcings.py:			
+sed -i 's///g' ./classes/stressbalance.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','stressbalance.spcvx','timeseries',1)/(md,fieldname='stressbalance.spcvx',timeseries=1)/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.spcvy','timeseries',1)/(md,fieldname='stressbalance.spcvy',timeseries=1)/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.spcvz','timeseries',1)/(md,fieldname='stressbalance.spcvz',timeseries=1)/g' ./classes/stressbalance.py:			
+sed -i 's/(md,'fieldname','stressbalance.restol',size=[1],'>',0)/(md,fieldname='stressbalance.restol','size',[1],gt=0)/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.reltol',size=[1])/(md,fieldname='stressbalance.reltol','size',[1])/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.abstol',size=[1])/(md,fieldname='stressbalance.abstol','size',[1])/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.isnewton','numel',[1],'values',[0,1,2])/(md,fieldname='stressbalance.isnewton',numel=[1],values=[0,1,2])/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.FSreconditioning',size=[1],'NaN',1)/(md,fieldname='stressbalance.FSreconditioning','size',[1],NaN=1)/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.viscosity_overshoot',size=[1],'NaN',1)/(md,fieldname='stressbalance.viscosity_overshoot','size',[1],NaN=1)/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.maxiter',size=[1],'>=',1)/(md,fieldname='stressbalance.maxiter','size',[1],ge=1)/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.referential',size=[md.mesh.numberofvertices,6])/(md,fieldname='stressbalance.referential','size',[md.mesh.numberofvertices,6])/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.loadingforce',size=[md.mesh.numberofvertices,3])/(md,fieldname='stressbalance.loadingforce','size',[md.mesh.numberofvertices,3])/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.requested_outputs','stringrow',1);/(md,'fieldname','stressbalance.requested_outputs','stringrow',1);/g' ./classes/stressbalance.py:		
+sed -i 's///g' ./classes/initialization.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','initialization.vx','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.vx',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:				
+sed -i 's/(md,'fieldname','initialization.vy','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.vy',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:				
+sed -i 's/(md,'fieldname','initialization.vx','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.vx',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:			
+sed -i 's/(md,'fieldname','initialization.vy','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.vy',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:			
+sed -i 's/(md,'fieldname','initialization.vx','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.vx',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:			
+sed -i 's/(md,'fieldname','initialization.vy','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.vy',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:			
+sed -i 's/(md,'fieldname','initialization.vx','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.vx',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:			
+sed -i 's/(md,'fieldname','initialization.vy','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.vy',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:			
+sed -i 's/(md,'fieldname','initialization.temperature','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.temperature',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:			
+sed -i 's/(md,'fieldname','initialization.vz','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.vz',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:				
+sed -i 's/(md,'fieldname','initialization.pressure','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='initialization.pressure',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/initialization.py:			
+sed -i 's/(md,'fieldname','initialization.waterfraction','>=',0,'size',[md.mesh.numberofvertices])/(md,fieldname='initialization.waterfraction',ge=0,size=[md.mesh.numberofvertices])/g' ./classes/initialization.py:				
+sed -i 's/(md,'fieldname','initialization.watercolumn'  ,'>=',0,'size',[md.mesh.numberofvertices])/(md,fieldname='initialization.watercolumn'  ,ge=0,size=[md.mesh.numberofvertices])/g' ./classes/initialization.py:				
+sed -i 's/(md,'fieldname','initialization.watercolumn','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='initialization.watercolumn',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/initialization.py:				
+sed -i 's/(md,'fieldname','initialization.sediment_head','NaN',1,'size',[md.mesh.numberofvertices,1])/(md,fieldname='initialization.sediment_head',NaN=1,size=[md.mesh.numberofvertices,1])/g' ./classes/initialization.py:				
+sed -i 's/(md,'fieldname','initialization.epl_head','NaN',1,'size',[md.mesh.numberofvertices,1])/(md,fieldname='initialization.epl_head',NaN=1,size=[md.mesh.numberofvertices,1])/g' ./classes/initialization.py:					
+sed -i 's/(md,'fieldname','initialization.epl_thickness','NaN',1,'size',[md.mesh.numberofvertices,1])/(md,fieldname='initialization.epl_thickness',NaN=1,size=[md.mesh.numberofvertices,1])/g' ./classes/initialization.py:					
+sed -i 's///g' ./classes/hydrologydc.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','hydrology.water_compressibility','numel',[1],'>',0.)/(md,fieldname='hydrology.water_compressibility',numel=[1],gt=0.)/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.isefficientlayer','numel',[1],'values',[0,1])/(md,fieldname='hydrology.isefficientlayer',numel=[1],values=[0,1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.penalty_factor','>',0.,'numel',[1])/(md,fieldname='hydrology.penalty_factor',gt=0.,numel=[1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.penalty_lock','>=',0.,'numel',[1])/(md,fieldname='hydrology.penalty_lock',ge=0.,numel=[1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.rel_tol','>',0.,'numel',[1])/(md,fieldname='hydrology.rel_tol',gt=0.,numel=[1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.max_iter','>',0.,'numel',[1])/(md,fieldname='hydrology.max_iter',gt=0.,numel=[1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.sedimentlimit_flag','numel',[1],'values',[0,1,2,3])/(md,fieldname='hydrology.sedimentlimit_flag',numel=[1],values=[0,1,2,3])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.transfer_flag','numel',[1],'values',[0,1])/(md,fieldname='hydrology.transfer_flag',numel=[1],values=[0,1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.sedimentlimit','>',0.,'numel',[1])/(md,fieldname='hydrology.sedimentlimit',gt=0.,numel=[1])/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.leakage_factor','>',0.,'numel',[1])/(md,fieldname='hydrology.leakage_factor',gt=0.,numel=[1])/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.basal_moulin_input','NaN',1,'timeseries',1)/(md,fieldname='hydrology.basal_moulin_input',NaN=1,timeseries=1)/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.spcsediment_head','timeseries',1)/(md,fieldname='hydrology.spcsediment_head',timeseries=1)/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.sediment_compressibility','>',0.,'numel',[1])/(md,fieldname='hydrology.sediment_compressibility','>',0.,numel=[1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.sediment_porosity',gt=0.,'numel',[1])/(md,fieldname='hydrology.sediment_porosity','>',0.,numel=[1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.sediment_thickness',gt=0.,'numel',[1])/(md,fieldname='hydrology.sediment_thickness','>',0.,numel=[1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.sediment_transmitivity','>=',0,'size',[md.mesh.numberofvertices,1])/(md,fieldname='hydrology.sediment_transmitivity',ge=0,size=[md.mesh.numberofvertices,1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.spcepl_head','timeseries',1)/(md,fieldname='hydrology.spcepl_head',timeseries=1)/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.mask_eplactive_node','size',[md.mesh.numberofvertices,1],'values',[0,1])/(md,fieldname='hydrology.mask_eplactive_node',size=[md.mesh.numberofvertices,1],values=[0,1])/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.epl_compressibility','>',0.,'numel',[1])/(md,fieldname='hydrology.epl_compressibility',gt=0.,numel=[1])/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.epl_porosity','>',0.,'numel',[1])/(md,fieldname='hydrology.epl_porosity',gt=0.,numel=[1])/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.epl_max_thickness','numel',[1],'>',0.)/(md,fieldname='hydrology.epl_max_thickness',numel=[1],gt=0.)/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.epl_initial_thickness','numel',[1],'>',0.)/(md,fieldname='hydrology.epl_initial_thickness',numel=[1],gt=0.)/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.epl_colapse_thickness','numel',[1],'>',0.)/(md,fieldname='hydrology.epl_colapse_thickness',numel=[1],gt=0.)/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.epl_thick_comp','numel',[1],'values',[0,1])/(md,fieldname='hydrology.epl_thick_comp',numel=[1],values=[0,1])/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.eplflip_lock','>=',0.,'numel',[1])/(md,fieldname='hydrology.eplflip_lock',ge=0.,numel=[1])/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.epl_conductivity','numel',[1],'>',0.)/(md,fieldname='hydrology.epl_conductivity',numel=[1],gt=0.)/g' ./classes/hydrologydc.py:			
+sed -i 's///g' ./classes/linearbasalforcings.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)/(md,fieldname='basalforcings.groundedice_melting_rate',NaN=1,timeseries=1)/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);/(md,'fieldname','basalforcings.deepwater_melting_rate',ge=0);/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);/(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.upperwater_elevation','<',0);/(md,'fieldname','basalforcings.upperwater_elevation','<',0);/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='basalforcings.groundedice_melting_rate',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);/(md,'fieldname','basalforcings.deepwater_melting_rate',ge=0);/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);/(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.upperwater_elevation','<',0);/(md,'fieldname','basalforcings.upperwater_elevation','<',0);/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)/(md,fieldname='basalforcings.groundedice_melting_rate',NaN=1,timeseries=1)/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);/(md,'fieldname','basalforcings.deepwater_melting_rate',ge=0);/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);/(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.upperwater_elevation','<',0);/(md,'fieldname','basalforcings.upperwater_elevation','<',0);/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.geothermalflux','NaN',1,'timeseries',1,'>=',0)/(md,fieldname='basalforcings.geothermalflux',NaN=1,timeseries=1,ge=0)/g' ./classes/linearbasalforcings.py:			
+sed -i 's///g' ./classes/outputdefinition.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','outputdefinition.definitions','cell',1)/(md,fieldname='outputdefinition.definitions','cell',1)/g' ./classes/outputdefinition.py:		
+sed -i 's///g' ./classes/frictionweertman.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','friction.C','timeseries',1,'NaN',1)/(md,fieldname='friction.C',timeseries=1,NaN=1)/g' ./classes/frictionweertman.py:		
+sed -i 's/(md,'fieldname','friction.m','NaN',1,'size',[md.mesh.numberofelements])/(md,fieldname='friction.m',NaN=1,size=[md.mesh.numberofelements])/g' ./classes/frictionweertman.py:		
+sed -i 's///g' ./classes/miscellaneous.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','miscellaneous.name','empty',1)/(md,fieldname='miscellaneous.name','empty',1)/g' ./classes/miscellaneous.py:		
+sed -i 's///g' ./classes/mask.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices])/(md,fieldname='mask.ice_levelset'        ,size=[md.mesh.numberofvertices])/g' ./classes/mask.py:		
+sed -i 's///g' ./classes/hydrologyshreve.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','hydrology.spcwatercolumn','timeseries',1)/(md,fieldname='hydrology.spcwatercolumn',timeseries=1)/g' ./classes/hydrologyshreve.py:		
+sed -i 's/(md,'fieldname','hydrology.stabilization','>=',0)/(md,fieldname='hydrology.stabilization',ge=0)/g' ./classes/hydrologyshreve.py:		
+sed -i 's///g' ./classes/private.py:from checkfield import checkfield
+sed -i 's///g' ./classes/rifts.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname',"rifts.riftstruct[%d]['fill']" % i,'values',[WaterEnum(),AirEnum(),IceEnum(),MelangeEnum()])/(md,fieldname="rifts.riftstruct[%d]['fill']" % i,values=[WaterEnum(),AirEnum(),IceEnum(),MelangeEnum()])/g' ./classes/rifts.py:				
+sed -i 's///g' ./classes/groundingline.py:from checkfield import checkfield
+sed -i 's/(md,fieldname='groundingline.migration',values=['None','AggressiveMigration','SoftMigration','SubelementMigration','SubelementMigration2','Contact','GroundingOnly'])/(md,fieldname='groundingline.migration',values=['None','AggressiveMigration','SoftMigration','SubelementMigration','SubelementMigration2','Contact','GroundingOnly'])/g' ./classes/groundingline.py:		
+sed -i 's///g' ./classes/taoinversion.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','inversion.iscontrol','values',[0, 1])/(md,fieldname='inversion.iscontrol',values=[0, 1])/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.incomplete_adjoint','values',[0, 1])/(md,fieldname='inversion.incomplete_adjoint',values=[0, 1])/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())/(md,fieldname='inversion.control_parameters','cell',1,values=supportedcontrols())/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.maxsteps','numel',1,'>=',0)/(md,fieldname='inversion.maxsteps',numel=1,ge=0)/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.maxiter','numel',1,'>=',0)/(md,fieldname='inversion.maxiter',numel=1,ge=0)/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.fatol','numel',1,'>=',0)/(md,fieldname='inversion.fatol',numel=1,ge=0)/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.frtol','numel',1,'>=',0)/(md,fieldname='inversion.frtol',numel=1,ge=0)/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.gatol','numel',1,'>=',0)/(md,fieldname='inversion.gatol',numel=1,ge=0)/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.grtol','numel',1,'>=',0)/(md,fieldname='inversion.grtol',numel=1,ge=0)/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.gttol','numel',1,'>=',0)/(md,fieldname='inversion.gttol',numel=1,ge=0)/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.algorithm','values',{'blmvm','cg','lmvm'})/(md,fieldname='inversion.algorithm',values={'blmvm','cg','lmvm'})/g' ./classes/taoinversion.py:			
+sed -i 's/(md,'fieldname','inversion.algorithm','values',{'tao_blmvm','tao_cg','tao_lmvm'})/(md,fieldname='inversion.algorithm',values={'tao_blmvm','tao_cg','tao_lmvm'})/g' ./classes/taoinversion.py:			
+sed -i 's/(md,'fieldname','inversion.cost_functions','size',[1, num_costfunc],'values',supportedcostfunctions())/(md,fieldname='inversion.cost_functions',size=[1, num_costfunc],values=supportedcostfunctions())/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices, num_costfunc],'>=',0)/(md,fieldname='inversion.cost_functions_coefficients',size=[md.mesh.numberofvertices, num_costfunc],ge=0)/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices, num_controls])/(md,fieldname='inversion.min_parameters',size=[md.mesh.numberofvertices, num_controls])/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices, num_controls])/(md,fieldname='inversion.max_parameters',size=[md.mesh.numberofvertices, num_controls])/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],'NaN',1)/(md,fieldname='inversion.thickness_obs',size=[md.mesh.numberofvertices, 1],NaN=1)/g' ./classes/taoinversion.py:			
+sed -i 's/(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],'NaN',1)/(md,fieldname='inversion.thickness_obs',size=[md.mesh.numberofvertices, 1],NaN=1)/g' ./classes/taoinversion.py:			
+sed -i 's/(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices, 1],'NaN',1)/(md,fieldname='inversion.vx_obs',size=[md.mesh.numberofvertices, 1],NaN=1)/g' ./classes/taoinversion.py:			
+sed -i 's/(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices, 1],'NaN',1)/(md,fieldname='inversion.vy_obs',size=[md.mesh.numberofvertices, 1],NaN=1)/g' ./classes/taoinversion.py:			
+sed -i 's///g' ./classes/flowequation.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','flowequation.isSIA','numel',[1],'values',[0,1])/(md,fieldname='flowequation.isSIA',numel=[1],values=[0,1])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.isSSA','numel',[1],'values',[0,1])/(md,fieldname='flowequation.isSSA',numel=[1],values=[0,1])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.isL1L2','numel',[1],'values',[0,1])/(md,fieldname='flowequation.isL1L2',numel=[1],values=[0,1])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.isHO','numel',[1],'values',[0,1])/(md,fieldname='flowequation.isHO',numel=[1],values=[0,1])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.isFS','numel',[1],'values',[0,1])/(md,fieldname='flowequation.isFS',numel=[1],values=[0,1])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.fe_SSA','values',['P1','P1bubble','P1bubblecondensed','P2','P2bubble'])/(md,fieldname='flowequation.fe_SSA',values=['P1','P1bubble','P1bubblecondensed','P2','P2bubble'])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.fe_HO' ,'values',['P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P2bubble','P1xP3','P2xP4'])/(md,fieldname='flowequation.fe_HO' ,values=['P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P2bubble','P1xP3','P2xP4'])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.fe_FS' ,'values',['P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','XTaylorHood','OneLayerP4z','CrouzeixRaviart'])/(md,fieldname='flowequation.fe_FS' ,values=['P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','XTaylorHood','OneLayerP4z','CrouzeixRaviart'])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.borderSSA','size',[md.mesh.numberofvertices],'values',[0,1])/(md,fieldname='flowequation.borderSSA',size=[md.mesh.numberofvertices],values=[0,1])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.borderHO','size',[md.mesh.numberofvertices],'values',[0,1])/(md,fieldname='flowequation.borderHO',size=[md.mesh.numberofvertices],values=[0,1])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.borderFS','size',[md.mesh.numberofvertices],'values',[0,1])/(md,fieldname='flowequation.borderFS',size=[md.mesh.numberofvertices],values=[0,1])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.augmented_lagrangian_r','numel',[1],'>',0.)/(md,fieldname='flowequation.augmented_lagrangian_r',numel=[1],gt=0.)/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.augmented_lagrangian_rhop','numel',[1],'>',0.)/(md,fieldname='flowequation.augmented_lagrangian_rhop',numel=[1],gt=0.)/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.augmented_lagrangian_rlambda','numel',[1],'>',0.)/(md,fieldname='flowequation.augmented_lagrangian_rlambda',numel=[1],gt=0.)/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.augmented_lagrangian_rholambda','numel',[1],'>',0.)/(md,fieldname='flowequation.augmented_lagrangian_rholambda',numel=[1],gt=0.)/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.XTH_theta','numel',[1],'>=',0.,'<',.5)/(md,fieldname='flowequation.XTH_theta',numel=[1],ge=0.,'<',.5)/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',[1,2])/(md,fieldname='flowequation.vertex_equation',size=[md.mesh.numberofvertices],values=[1,2])/g' ./classes/flowequation.py:			
+sed -i 's/(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements],'values',[1,2])/(md,fieldname='flowequation.element_equation',size=[md.mesh.numberofelements],'values',[1,2])/g' ./classes/flowequation.py:			
+sed -i 's/(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices],values=numpy.arange(0,8+1))/(md,fieldname='flowequation.vertex_equation',size=[md.mesh.numberofvertices],'values',numpy.arange(0,8+1))/g' ./classes/flowequation.py:			
+sed -i 's/(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements],values=numpy.arange(0,8+1))/(md,fieldname='flowequation.element_equation',size=[md.mesh.numberofelements],'values',numpy.arange(0,8+1))/g' ./classes/flowequation.py:			
+sed -i 's///g' ./classes/geometry.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','geometry.surface'  ,'NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='geometry.surface'  ,NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/geometry.py:		
+sed -i 's/(md,'fieldname','geometry.base'      ,'NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='geometry.base'      ,NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/geometry.py:		
+sed -i 's/(md,'fieldname','geometry.thickness','NaN',1,'size',[md.mesh.numberofvertices],'>',0,'timeseries',1)/(md,fieldname='geometry.thickness',NaN=1,size=[md.mesh.numberofvertices],gt=0,timeseries=1)/g' ./classes/geometry.py:		
+sed -i 's/(md,'fieldname','geometry.bed','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='geometry.bed',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/geometry.py:			
+sed -i 's///g' ./classes/inversion.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','inversion.iscontrol','values',[0,1])/(md,fieldname='inversion.iscontrol',values=[0,1])/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.incomplete_adjoint','values',[0,1])/(md,fieldname='inversion.incomplete_adjoint',values=[0,1])/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())/(md,fieldname='inversion.control_parameters','cell',1,values=supportedcontrols())/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.nsteps','numel',[1],'>=',0)/(md,fieldname='inversion.nsteps',numel=[1],ge=0)/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.maxiter_per_step','size',[md.inversion.nsteps],'>=',0)/(md,fieldname='inversion.maxiter_per_step',size=[md.inversion.nsteps],ge=0)/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.step_threshold','size',[md.inversion.nsteps])/(md,fieldname='inversion.step_threshold',size=[md.inversion.nsteps])/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.cost_functions','size',[num_costfunc],'values',supportedcostfunctions())/(md,fieldname='inversion.cost_functions',size=[num_costfunc],values=supportedcostfunctions())/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices,num_costfunc],'>=',0)/(md,fieldname='inversion.cost_functions_coefficients',size=[md.mesh.numberofvertices,num_costfunc],ge=0)/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.gradient_scaling','size',[md.inversion.nsteps,num_controls])/(md,fieldname='inversion.gradient_scaling',size=[md.inversion.nsteps,num_controls])/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices,num_controls])/(md,fieldname='inversion.min_parameters',size=[md.mesh.numberofvertices,num_controls])/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices,num_controls])/(md,fieldname='inversion.max_parameters',size=[md.mesh.numberofvertices,num_controls])/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='inversion.thickness_obs',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/inversion.py:			
+sed -i 's/(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='inversion.vx_obs',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/inversion.py:			
+sed -i 's/(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='inversion.vy_obs',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/inversion.py:			
+sed -i 's///g' ./classes/qmu.py:from checkfield import checkfield
+sed -i 's///g' ./classes/mesh3dprisms.py:from checkfield import *
+sed -i 's/(md,'fieldname','mesh.x','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='mesh.x',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.y','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='mesh.y',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.z','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='mesh.z',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.elements','NaN',1,'>',0,'values',numpy.arange(1,md.mesh.numberofvertices+1))/(md,fieldname='mesh.elements',NaN=1,gt=0,values=numpy.arange(1,md.mesh.numberofvertices+1))/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements,6])/(md,fieldname='mesh.elements',size=[md.mesh.numberofelements,6])/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.numberoflayers','>=',0)/(md,fieldname='mesh.numberoflayers',ge=0)/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.numberofelements','>',0)/(md,fieldname='mesh.numberofelements',gt=0)/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.numberofvertices','>',0)/(md,fieldname='mesh.numberofvertices',gt=0)/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.vertexonbase','size',[md.mesh.numberofvertices],'values',[0,1])/(md,fieldname='mesh.vertexonbase',size=[md.mesh.numberofvertices],values=[0,1])/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.vertexonsurface','size',[md.mesh.numberofvertices],'values',[0,1])/(md,fieldname='mesh.vertexonsurface',size=[md.mesh.numberofvertices],values=[0,1])/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.average_vertex_connectivity','>=',24,'message',"'mesh.average_vertex_connectivity' should be at least 24 in 3d")/(md,fieldname='mesh.average_vertex_connectivity',ge=24,'message',"'mesh.average_vertex_connectivity' should be at least 24 in 3d")/g' ./classes/mesh3dprisms.py:		
+sed -i 's///g' ./consistency/checkfield.py:def checkfield(md,**kwargs):
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/os/issmdir.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/os/issmdir.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/os/issmdir.py	(revision 21239)
@@ -0,0 +1,23 @@
+import os
+import MatlabFuncs as m
+
+def issmdir():
+	"""
+	ISSMDIR - Get ISSM_DIR environment variable
+ 
+	   Usage:
+	      ISSM_DIR=issmdir()
+	"""
+
+	if not m.ispc():
+		ISSM_DIR =os.environ['ISSM_DIR']
+	else:
+		ISSM_DIR =os.environ['ISSM_DIR_WIN']
+		if m.strcmpi(ISSM_DIR[-1],'/') or m.strcmpi(ISSM_DIR[-1],'\\'):
+			ISSM_DIR = ISSM_DIR[:-1]    #shave off the last '/'
+
+	if not ISSM_DIR:
+		raise RuntimeError("issmdir error message: 'ISSM_DIR' environment variable is empty! You should define ISSM_DIR in your .cshrc or .bashrc!")
+
+	return ISSM_DIR
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/os/issmscpin.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/os/issmscpin.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/os/issmscpin.py	(revision 21239)
@@ -0,0 +1,68 @@
+from socket import gethostname
+import subprocess
+import os
+import shutil
+import MatlabFuncs as m
+
+def issmscpin(host, login,port,path, packages):
+	"""
+	ISSMSCPIN get packages from host, using scp on unix, and pscp on windows
+ 
+	   usage: issmscpin(host,packages,path)
+	"""
+
+	#first get hostname
+	hostname=gethostname()
+
+	#first be sure packages are not in the current directory, this could conflict with pscp on windows. 
+	#remove warnings in case the files do not exist
+	for package in packages:
+		try:
+			os.remove(package)
+		except OSError as e:
+			pass
+
+	#if hostname and host are the same, do a simple copy
+	if m.strcmpi(hostname,host):
+
+		for package in packages:
+			try:
+				shutil.copy(os.path.join(path,package),os.getcwd())    #keep going, even if success=0
+			except OSError as e:
+				pass
+
+	else:
+
+		if m.ispc():
+			#use the putty project pscp.exe: it should be in the path.
+		
+			#get ISSM_DIR variable
+			if 'ISSM_DIR_WIN' in os.environ:
+				ISSM_DIR=os.environ['ISSM_DIR_WIN'][1:-2]
+			else:
+				raise OSError("issmscpin error message: could not find ISSM_DIR_WIN environment variable.")
+
+			username=input('Username: (quoted string) ')
+			key=input('Key: (quoted string) ')
+
+			for package in packages:
+				try:
+					subprocess.check_call('%s/externalpackages/ssh/pscp.exe -l "%s" -pw "%s" %s:%s %s' % (ISSM_DIR,username,key,host,os.path.join(path,package),os.getcwd()),shell=True)
+				except CalledProcessError as e:
+					raise CalledProcessError("issmscpin error message: could not call putty pscp.")
+
+		else:
+			#just use standard unix scp
+			#string to copy multiple files using scp: 
+			string='\{'+','.join([str(x) for x in packages])+'\}'
+			
+			if port:
+				subprocess.call('scp -P %d %s@localhost:%s %s/. ' % (port,login,os.path.join(path,string),os.getcwd()),shell=True)
+			else:
+				subprocess.call('scp %s@%s:%s %s/.' % (login,host,os.path.join(path,string),os.getcwd()),shell=True)
+		
+			#check scp worked
+			for package in packages:
+				if not os.path.exists(os.path.join('.',package)):
+					raise OSError("issmscpin error message: could not call scp on *nix system.")
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/os/issmscpout.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/os/issmscpout.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/os/issmscpout.py	(revision 21239)
@@ -0,0 +1,59 @@
+from socket  import gethostname
+import subprocess
+import os
+import MatlabFuncs as m
+
+def issmscpout(host,path,login,port,packages):
+	"""
+	ISSMSCPOUT send packages to a host, using scp on unix, and pscp on windows
+ 
+	   usage: issmscpout(host,path,packages)
+	"""
+
+	#get hostname
+	hostname=gethostname();
+
+	#if hostname and host are the same, do a simple copy
+
+	if m.strcmpi(host,hostname):
+		for package in packages:
+			here=os.getcwd()
+			os.chdir(path)
+			try:
+				os.remove(package)
+			except OSError as e:
+				pass
+			subprocess.call('ln -s %s %s' % (os.path.join(here,package),path),shell=True)
+			os.chdir(here)
+	else:
+		if m.ispc():
+			#use the putty project pscp.exe: it should be in the path.
+		
+			#get ISSM_DIR variable
+			if 'ISSM_DIR_WIN' in os.environ:
+				ISSM_DIR=os.environ['ISSM_DIR_WIN'][1:-2]
+			else:
+				raise OSError("issmscpout error message: could not find ISSM_DIR_WIN environment variable.")
+
+			username=input('Username: (quoted string) ')
+			key=input('Key: (quoted string) ')
+
+			for package in packages:
+				try:
+					subprocess.check_call('%s/externalpackages/ssh/pscp.exe -l "%s" -pw "%s" %s %s:%s' % (ISSM_DIR,username,key,package,host,path),shell=True)
+				except CalledProcessError as e:
+					raise CalledProcessError("issmscpout error message: could not call putty pscp.")
+
+		else:
+			#just use standard unix scp
+			#create string of packages being sent
+			string=''
+			for package in packages:
+				string+=' '+package
+			string+=' '
+		
+			if port:
+				subprocess.call('scp -P %d %s %s@localhost:%s' % (port,string,login,path),shell=True)
+			else:
+				subprocess.call('scp %s %s@%s:%s' % (string,login,host,path),shell=True)
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/os/issmssh.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/os/issmssh.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/os/issmssh.py	(revision 21239)
@@ -0,0 +1,59 @@
+from socket import gethostname
+import subprocess
+import os
+import MatlabFuncs as m
+
+def issmssh(host,login,port,command):
+	"""
+	ISSMSSH - wrapper for OS independent ssh command.
+ 
+	   usage: 
+	      issmssh(host,command)
+	"""
+
+	#first get hostname 
+	hostname=gethostname()
+
+	#if same as host, just run the command. 
+	if m.strcmpi(host,hostname):
+		subprocess.call(command,shell=True)
+	else:
+		if m.ispc():
+			#use the putty project plink.exe: it should be in the path.
+		
+			#get ISSM_DIR variable
+			if 'ISSM_DIR_WIN' in os.environ:
+				ISSM_DIR=os.environ['ISSM_DIR_WIN'][1:-2]
+			else:
+				raise OSError("issmssh error message: could not find ISSM_DIR_WIN environment variable.")
+
+			username=input('Username: (quoted string) ')
+			key=input('Key: (quoted string) ')
+
+			subprocess.call('%s/externalpackages/ssh/plink.exe -ssh -l "%s" -pw "%s" %s "%s"' % (ISSM_DIR,username,key,host,command),shell=True);
+
+		else:
+			#just use standard unix ssh
+			if port:
+				subprocess.call('ssh -l %s -p %d localhost "%s"' % (login,port,command),shell=True)
+			else:
+				subprocess.call('ssh -l %s %s "%s"' % (login,host,command),shell=True)
+
+	# The following code was added to fix:
+	# "IOError: [Errno 35] Resource temporarily unavailable"
+	# on the Mac when trying to display md after the solution.
+	# (from http://code.google.com/p/robotframework/issues/detail?id=995)
+
+	# Make FreeBSD use blocking I/O like other platforms
+	import sys
+	import fcntl
+	from os import O_NONBLOCK
+
+	fd = sys.stdin.fileno()
+	flags = fcntl.fcntl(fd, fcntl.F_GETFL)
+	fcntl.fcntl(fd, fcntl.F_SETFL, flags & ~O_NONBLOCK)
+
+	fd = sys.stdout.fileno()
+	flags = fcntl.fcntl(fd, fcntl.F_GETFL)
+	fcntl.fcntl(fd, fcntl.F_SETFL, flags & ~O_NONBLOCK)
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/parameterization/contourenvelope.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/parameterization/contourenvelope.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/parameterization/contourenvelope.py	(revision 21239)
@@ -0,0 +1,135 @@
+import os.path
+import numpy
+import copy
+from NodeConnectivity import NodeConnectivity
+from ElementConnectivity import ElementConnectivity
+from mesh2d import mesh2d
+from mesh3dprisms import mesh3dprisms
+import MatlabFuncs as m
+
+def contourenvelope(md,*args):
+	"""
+	CONTOURENVELOPE - build a set of segments enveloping a contour .exp
+
+	   Usage:
+	      segments=contourenvelope(md,varargin)
+
+	   Example:
+	      segments=contourenvelope(md,'Stream.exp');
+	      segments=contourenvelope(md);
+	"""
+
+	#some checks
+	if len(args)>1:
+		raise RuntimeError("contourenvelope error message: bad usage")
+
+	if len(args)==1:
+		flags=args[0]
+
+		if   isinstance(flags,str):
+			file=flags
+			if not os.path.exists(file):
+				raise IOError("contourenvelope error message: file '%s' not found" % file)
+			isfile=1
+		elif isinstance(flags,(bool,int,float)):
+			#do nothing for now
+			isfile=0
+		else:
+			raise TypeError("contourenvelope error message:  second argument should be a file or an elements flag")
+
+	#Now, build the connectivity tables for this mesh.
+	#Computing connectivity
+	if numpy.size(md.mesh.vertexconnectivity,axis=0)!=md.mesh.numberofvertices and numpy.size(md.mesh.vertexconnectivity,axis=0)!=md.mesh.numberofvertices2d:
+		[md.mesh.vertexconnectivity]=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices)
+	if numpy.size(md.mesh.elementconnectivity,axis=0)!=md.mesh.numberofelements and numpy.size(md.mesh.elementconnectivity,axis=0)!=md.mesh.numberofelements2d:
+		[md.mesh.elementconnectivity]=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity)
+
+	#get nodes inside profile
+	elementconnectivity=copy.deepcopy(md.mesh.elementconnectivity)
+	if md.mesh.dimension()==2:
+		elements=copy.deepcopy(md.mesh.elements)
+		x=copy.deepcopy(md.mesh.x)
+		y=copy.deepcopy(md.mesh.y)
+		numberofvertices=copy.deepcopy(md.mesh.numberofvertices)
+		numberofelements=copy.deepcopy(md.mesh.numberofelements)
+	else:
+		elements=copy.deepcopy(md.mesh.elements2d)
+		x=copy.deepcopy(md.mesh.x2d)
+		y=copy.deepcopy(md.mesh.y2d)
+		numberofvertices=copy.deepcopy(md.mesh.numberofvertices2d)
+		numberofelements=copy.deepcopy(md.mesh.numberofelements2d)
+
+	if len(args)==1:
+
+		if isfile:
+			#get flag list of elements and nodes inside the contour
+			nodein=ContourToMesh(elements,x,y,file,'node',1)
+			elemin=(numpy.sum(nodein(elements),axis=1)==numpy.size(elements,axis=1))
+			#modify element connectivity
+			elemout=numpy.nonzero(numpy.logical_not(elemin))[0]
+			elementconnectivity[elemout,:]=0
+			elementconnectivity[numpy.nonzero(m.ismember(elementconnectivity,elemout+1))]=0
+		else:
+			#get flag list of elements and nodes inside the contour
+			nodein=numpy.zeros(numberofvertices)
+			elemin=numpy.zeros(numberofelements)
+
+			pos=numpy.nonzero(flags)
+			elemin[pos]=1
+			nodein[elements[pos,:]-1]=1
+
+			#modify element connectivity
+			elemout=numpy.nonzero(numpy.logical_not(elemin))[0]
+			elementconnectivity[elemout,:]=0
+			elementconnectivity[numpy.nonzero(m.ismember(elementconnectivity,elemout+1))]=0
+
+	#Find element on boundary
+	#First: find elements on the boundary of the domain
+	flag=copy.deepcopy(elementconnectivity)
+	if len(args)==1:
+		flag[numpy.nonzero(flag)]=elemin[flag[numpy.nonzero(flag)]]
+	elementonboundary=numpy.logical_and(numpy.prod(flag,axis=1)==0,numpy.sum(flag,axis=1)>0)
+
+	#Find segments on boundary
+	pos=numpy.nonzero(elementonboundary)[0]
+	num_segments=numpy.size(pos)
+	segments=numpy.zeros((num_segments*3,3),int)
+	count=0
+
+	for el1 in pos:
+		els2=elementconnectivity[el1,numpy.nonzero(elementconnectivity[el1,:])[0]]-1
+		if numpy.size(els2)>1:
+			flag=numpy.intersect1d(numpy.intersect1d(elements[els2[0],:],elements[els2[1],:]),elements[el1,:])
+			nods1=elements[el1,:]
+			nods1=numpy.delete(nods1,numpy.nonzero(nods1==flag))
+			segments[count,:]=[nods1[0],nods1[1],el1+1]
+
+			ord1=numpy.nonzero(nods1[0]==elements[el1,:])[0][0]
+			ord2=numpy.nonzero(nods1[1]==elements[el1,:])[0][0]
+
+			#swap segment nodes if necessary
+			if ( (ord1==0 and ord2==1) or (ord1==1 and ord2==2) or (ord1==2 and ord2==0) ):
+				temp=segments[count,0]
+				segments[count,0]=segments[count,1]
+				segments[count,1]=temp
+			segments[count,0:2]=numpy.flipud(segments[count,0:2])
+			count+=1
+		else:
+			nods1=elements[el1,:]
+			flag=numpy.setdiff1d(nods1,elements[els2,:])
+			for j in range(0,3):
+				nods=numpy.delete(nods1,j)
+				if numpy.any(m.ismember(flag,nods)):
+					segments[count,:]=[nods[0],nods[1],el1+1]
+					ord1=numpy.nonzero(nods[0]==elements[el1,:])[0][0]
+					ord2=numpy.nonzero(nods[1]==elements[el1,:])[0][0]
+					if ( (ord1==0 and ord2==1) or (ord1==1 and ord2==2) or (ord1==2 and ord2==0) ):
+						temp=segments[count,0]
+						segments[count,0]=segments[count,1]
+						segments[count,1]=temp
+					segments[count,0:2]=numpy.flipud(segments[count,0:2])
+					count+=1
+	segments=segments[0:count,:]
+
+	return segments
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/parameterization/parameterize.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/parameterization/parameterize.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/parameterization/parameterize.py	(revision 21239)
@@ -0,0 +1,33 @@
+import os
+import datetime
+
+def parameterize(md,parametername):
+	"""
+	PARAMETERIZE - parameterize a model
+
+	   from a parameter python file, start filling in all the model fields that were not 
+	   filled in by the mesh.py and mask.py model methods.
+	   Warning: the parameter file must be able to be run in Python
+
+	   Usage:
+	      md=parameterize(md,parametername)
+
+	   Example:
+	      md=parameterize(md,'Square.par');
+	"""
+
+	#some checks
+	if not os.path.exists(parametername):
+		raise IOError("parameterize error message: file '%s' not found!" % parametername)
+
+	#Try and run parameter file.
+	exec(compile(open(parametername).read(), parametername, 'exec'))
+
+	#Name and notes
+	if not md.miscellaneous.name:
+		md.miscellaneous.name=os.path.basename(parametername).split('.')[0]
+
+	md.miscellaneous.notes="Model created by using parameter file: '%s' on: %s." % (parametername,datetime.datetime.strftime(datetime.datetime.now(),'%c'))
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/parameterization/setflowequation.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/parameterization/setflowequation.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/parameterization/setflowequation.py	(revision 21239)
@@ -0,0 +1,289 @@
+import numpy
+from model import model
+from pairoptions import pairoptions
+import MatlabFuncs as m
+import PythonFuncs as p
+from FlagElements import FlagElements
+
+def setflowequation(md,**kwargs):
+	"""
+	SETFLOWEQUATION - associate a solution type to each element
+
+	   This routine works like plotmodel: it works with an even number of inputs
+	   'SIA','SSA','HO','L1L2','FS' and 'fill' are the possible options
+	   that must be followed by the corresponding exp file or flags list
+	   It can either be a domain file (argus type, .exp extension), or an array of element flags. 
+	   If user wants every element outside the domain to be 
+	   setflowequationd, add '~' to the name of the domain file (ex: '~HO.exp');
+	   an empty string '' will be considered as an empty domain
+	   a string 'all' will be considered as the entire domain
+	   You can specify the type of coupling, 'penalties' or 'tiling', to use with the input 'coupling'
+
+	   Usage:
+	      md=setflowequation(md,varargin)
+
+	   Example:
+	      md=setflowequation(md,'HO','HO.exp',fill','SIA','coupling','tiling');
+	"""
+
+	#some checks on list of arguments
+	if not isinstance(md,model) or not len(kwargs):
+		raise TypeError("setflowequation error message")
+
+	#process options
+	options=pairoptions(**kwargs)
+	print(options)
+#	options=deleteduplicates(options,1);
+
+	#Find_out what kind of coupling to use
+	coupling_method=options.getfieldvalue('coupling','tiling')
+	if coupling_method is not 'tiling' or not 'penalties':
+		raise TypeError("coupling type can only be: tiling or penalties")
+
+	#recover elements distribution
+	SIAflag   = FlagElements(md,options.getfieldvalue('SIA',''))
+	SSAflag = FlagElements(md,options.getfieldvalue('SSA',''))
+	HOflag   = FlagElements(md,options.getfieldvalue('HO',''))
+	L1L2flag     = FlagElements(md,options.getfieldvalue('L1L2',''))
+	FSflag   = FlagElements(md,options.getfieldvalue('FS',''))
+	filltype     = options.getfieldvalue('fill','none')
+
+	#Flag the elements that have not been flagged as filltype
+	if filltype is 'SIA':
+		SIAflag[numpy.nonzero(numpy.logical_not(p.logical_or_n(SSAflag,HOflag)))]=True
+	elif filltype is 'SSA':
+		SSAflag[numpy.nonzero(numpy.logical_not(p.logical_or_n(SIAflag,HOflag,FSflag)))]=True
+	elif filltype is 'HO':
+		HOflag[numpy.nonzero(numpy.logical_not(p.logical_or_n(SIAflag,SSAflag,FSflag)))]=True
+
+	#check that each element has at least one flag
+	if not any(SIAflag+SSAflag+L1L2flag+HOflag+FSflag):
+		raise TypeError("elements type not assigned, supported models are 'SIA','SSA','HO' and 'FS'")
+
+	#check that each element has only one flag
+	if any(SIAflag+SSAflag+L1L2flag+HOflag+FSflag>1):
+		print("setflowequation warning message: some elements have several types, higher order type is used for them")
+		SIAflag[numpy.nonzero(numpy.logical_and(SIAflag,SSAflag))]=False
+		SIAflag[numpy.nonzero(numpy.logical_and(SIAflag,HOflag))]=False
+		SSAflag[numpy.nonzero(numpy.logical_and(SSAflag,HOflag))]=False
+
+	#FS can only be used alone for now:
+	if any(FSflag) and any(SIAflag):
+		raise TypeError("FS cannot be used with any other model for now, put FS everywhere")
+
+	#Initialize node fields
+	nodeonSIA=numpy.zeros(md.mesh.numberofvertices,bool)
+	nodeonSIA[md.mesh.elements[numpy.nonzero(SIAflag),:]-1]=True
+	nodeonSSA=numpy.zeros(md.mesh.numberofvertices,bool)
+	nodeonSSA[md.mesh.elements[numpy.nonzero(SSAflag),:]-1]=True
+	nodeonL1L2=numpy.zeros(md.mesh.numberofvertices,bool)
+	nodeonL1L2[md.mesh.elements[numpy.nonzero(L1L2flag),:]-1]=True
+	nodeonHO=numpy.zeros(md.mesh.numberofvertices,bool)
+	nodeonHO[md.mesh.elements[numpy.nonzero(HOflag),:]-1]=True
+	nodeonFS=numpy.zeros(md.mesh.numberofvertices,bool)
+	noneflag=numpy.zeros(md.mesh.numberofelements,bool)
+
+	#First modify FSflag to get rid of elements contrained everywhere (spc + border with HO or SSA)
+	if any(FSflag):
+#		fullspcnodes=double((~isnan(md.stressbalance.spcvx)+~isnan(md.stressbalance.spcvy)+~isnan(md.stressbalance.spcvz))==3 | (nodeonHO & nodeonFS));         %find all the nodes on the boundary of the domain without icefront
+		fullspcnodes=numpy.logical_or(numpy.logical_not(numpy.isnan(md.stressbalance.spcvx)).astype(int)+ \
+		                              numpy.logical_not(numpy.isnan(md.stressbalance.spcvy)).astype(int)+ \
+		                              numpy.logical_not(numpy.isnan(md.stressbalance.spcvz)).astype(int)==3, \
+		                              numpy.logical_and(nodeonHO,nodeonFS)).astype(int)    #find all the nodes on the boundary of the domain without icefront
+#		fullspcelems=double(sum(fullspcnodes(md.mesh.elements),2)==6);         %find all the nodes on the boundary of the domain without icefront
+		fullspcelems=(numpy.sum(fullspcnodes[md.mesh.elements-1],axis=1)==6).astype(int)    #find all the nodes on the boundary of the domain without icefront
+		FSflag[numpy.nonzero(fullspcelems.reshape(-1))]=False
+		nodeonFS[md.mesh.elements[numpy.nonzero(FSflag),:]-1]=True
+
+	#Then complete with NoneApproximation or the other model used if there is no FS
+	if any(FSflag): 
+		if   any(HOflag):    #fill with HO
+			HOflag[numpy.logical_not(FSflag)]=True
+			nodeonHO[md.mesh.elements[numpy.nonzero(HOflag),:]-1]=True
+		elif any(SSAflag):    #fill with SSA
+			SSAflag[numpy.logical_not(FSflag)]=True
+			nodeonSSA[md.mesh.elements[numpy.nonzero(SSAflag),:]-1]=True
+		else:    #fill with none 
+			noneflag[numpy.nonzero(numpy.logical_not(FSflag))]=True
+
+	#Now take care of the coupling between SSA and HO
+	md.stressbalance.vertex_pairing=numpy.array([])
+	nodeonSSAHO=numpy.zeros(md.mesh.numberofvertices,bool)
+	nodeonHOFS=numpy.zeros(md.mesh.numberofvertices,bool)
+	nodeonSSAFS=numpy.zeros(md.mesh.numberofvertices,bool)
+	SSAHOflag=numpy.zeros(md.mesh.numberofelements,bool)
+	SSAFSflag=numpy.zeros(md.mesh.numberofelements,bool)
+	HOFSflag=numpy.zeros(md.mesh.numberofelements,bool)
+	if coupling_method is 'penalties':
+		#Create the border nodes between HO and SSA and extrude them
+		numnodes2d=md.mesh.numberofvertices2d
+		numlayers=md.mesh.numberoflayers
+		bordernodes2d=numpy.nonzero(numpy.logical_and(nodeonHO[0:numnodes2d],nodeonSSA[0:numnodes2d]))[0]+1    #Nodes connected to two different types of elements
+
+		#initialize and fill in penalties structure
+		if numpy.all(numpy.logical_not(numpy.isnan(bordernodes2d))):
+			penalties=numpy.zeros((0,2))
+			for	i in range(1,numlayers):
+				penalties=numpy.vstack((penalties,numpy.hstack((bordernodes2d.reshape(-1,1),bordernodes2d.reshape(-1,1)+md.mesh.numberofvertices2d*(i)))))
+			md.stressbalance.vertex_pairing=penalties
+
+	elif coupling_method is 'tiling':
+		if   any(SSAflag) and any(HOflag):    #coupling SSA HO
+			#Find node at the border
+			nodeonSSAHO[numpy.nonzero(numpy.logical_and(nodeonSSA,nodeonHO))]=True
+			#SSA elements in contact with this layer become SSAHO elements
+			matrixelements=m.ismember(md.mesh.elements-1,numpy.nonzero(nodeonSSAHO)[0])
+			commonelements=numpy.sum(matrixelements,axis=1)!=0
+			commonelements[numpy.nonzero(HOflag)]=False    #only one layer: the elements previously in SSA
+			SSAflag[numpy.nonzero(commonelements)]=False    #these elements are now SSAHOelements
+			SSAHOflag[numpy.nonzero(commonelements)]=True
+			nodeonSSA[:]=False
+			nodeonSSA[md.mesh.elements[numpy.nonzero(SSAflag),:]-1]=True
+
+			#rule out elements that don't touch the 2 boundaries
+			pos=numpy.nonzero(SSAHOflag)[0]
+			elist=numpy.zeros(numpy.size(pos),dtype=int)
+			elist = elist + numpy.sum(nodeonSSA[md.mesh.elements[pos,:]-1],axis=1).astype(bool)
+			elist = elist - numpy.sum(nodeonHO[md.mesh.elements[pos,:]-1]  ,axis=1).astype(bool)
+			pos1=numpy.nonzero(elist==1)[0]
+			SSAflag[pos[pos1]]=True
+			SSAHOflag[pos[pos1]]=False
+			pos2=numpy.nonzero(elist==-1)[0]
+			HOflag[pos[pos2]]=True
+			SSAHOflag[pos[pos2]]=False
+
+			#Recompute nodes associated to these elements
+			nodeonSSA[:]=False
+			nodeonSSA[md.mesh.elements[numpy.nonzero(SSAflag),:]-1]=True
+			nodeonHO[:]=False
+			nodeonHO[md.mesh.elements[numpy.nonzero(HOflag),:]-1]=True
+			nodeonSSAHO[:]=False
+			nodeonSSAHO[md.mesh.elements[numpy.nonzero(SSAHOflag),:]-1]=True
+
+		elif any(HOflag) and any(FSflag):    #coupling HO FS
+			#Find node at the border
+			nodeonHOFS[numpy.nonzero(numpy.logical_and(nodeonHO,nodeonFS))]=True
+			#FS elements in contact with this layer become HOFS elements
+			matrixelements=m.ismember(md.mesh.elements-1,numpy.nonzero(nodeonHOFS)[0])
+			commonelements=numpy.sum(matrixelements,axis=1)!=0
+			commonelements[numpy.nonzero(HOflag)]=False    #only one layer: the elements previously in SSA
+			FSflag[numpy.nonzero(commonelements)]=False    #these elements are now SSAHOelements
+			HOFSflag[numpy.nonzero(commonelements)]=True
+			nodeonFS=numpy.zeros(md.mesh.numberofvertices,bool)
+			nodeonFS[md.mesh.elements[numpy.nonzero(FSflag),:]-1]=True
+
+			#rule out elements that don't touch the 2 boundaries
+			pos=numpy.nonzero(HOFSflag)[0]
+			elist=numpy.zeros(numpy.size(pos),dtype=int)
+			elist = elist + numpy.sum(nodeonFS[md.mesh.elements[pos,:]-1],axis=1).astype(bool)
+			elist = elist - numpy.sum(nodeonHO[md.mesh.elements[pos,:]-1],axis=1).astype(bool)
+			pos1=numpy.nonzero(elist==1)[0]
+			FSflag[pos[pos1]]=True
+			HOFSflag[pos[pos1]]=False
+			pos2=numpy.nonzero(elist==-1)[0]
+			HOflag[pos[pos2]]=True
+			HOFSflag[pos[pos2]]=False
+
+			#Recompute nodes associated to these elements
+			nodeonFS[:]=False
+			nodeonFS[md.mesh.elements[numpy.nonzero(FSflag),:]-1]=True
+			nodeonHO[:]=False
+			nodeonHO[md.mesh.elements[numpy.nonzero(HOflag),:]-1]=True
+			nodeonHOFS[:]=False
+			nodeonHOFS[md.mesh.elements[numpy.nonzero(HOFSflag),:]-1]=True
+
+		elif any(FSflag) and any(SSAflag):
+			#Find node at the border
+			nodeonSSAFS[numpy.nonzero(numpy.logical_and(nodeonSSA,nodeonFS))]=True
+			#FS elements in contact with this layer become SSAFS elements
+			matrixelements=m.ismember(md.mesh.elements-1,numpy.nonzero(nodeonSSAFS)[0])
+			commonelements=numpy.sum(matrixelements,axis=1)!=0
+			commonelements[numpy.nonzero(SSAflag)]=False    #only one layer: the elements previously in SSA
+			FSflag[numpy.nonzero(commonelements)]=False    #these elements are now SSASSAelements
+			SSAFSflag[numpy.nonzero(commonelements)]=True
+			nodeonFS=numpy.zeros(md.mesh.numberofvertices,bool)
+			nodeonFS[md.mesh.elements[numpy.nonzero(FSflag),:]-1]=True
+
+			#rule out elements that don't touch the 2 boundaries
+			pos=numpy.nonzero(SSAFSflag)[0]
+			elist=numpy.zeros(numpy.size(pos),dtype=int)
+			elist = elist + numpy.sum(nodeonSSA[md.mesh.elements[pos,:]-1],axis=1).astype(bool)
+			elist = elist - numpy.sum(nodeonFS[md.mesh.elements[pos,:]-1]  ,axis=1).astype(bool)
+			pos1=numpy.nonzero(elist==1)[0]
+			SSAflag[pos[pos1]]=True
+			SSAFSflag[pos[pos1]]=False
+			pos2=numpy.nonzero(elist==-1)[0]
+			FSflag[pos[pos2]]=True
+			SSAFSflag[pos[pos2]]=False
+
+			#Recompute nodes associated to these elements
+			nodeonSSA[:]=False
+			nodeonSSA[md.mesh.elements[numpy.nonzero(SSAflag),:]-1]=True
+			nodeonFS[:]=False
+			nodeonFS[md.mesh.elements[numpy.nonzero(FSflag),:]-1]=True
+			nodeonSSAFS[:]=False
+			nodeonSSAFS[md.mesh.elements[numpy.nonzero(SSAFSflag),:]-1]=True
+
+		elif any(FSflag) and any(SIAflag):
+			raise TypeError("type of coupling not supported yet")
+
+	#Create SSAHOApproximation where needed
+	md.flowequation.element_equation=numpy.zeros(md.mesh.numberofelements,int)
+	md.flowequation.element_equation[numpy.nonzero(noneflag)]=0
+	md.flowequation.element_equation[numpy.nonzero(SIAflag)]=1
+	md.flowequation.element_equation[numpy.nonzero(SSAflag)]=2
+	md.flowequation.element_equation[numpy.nonzero(L1L2flag)]=3
+	md.flowequation.element_equation[numpy.nonzero(HOflag)]=4
+	md.flowequation.element_equation[numpy.nonzero(FSflag)]=5
+	md.flowequation.element_equation[numpy.nonzero(SSAHOflag)]=6
+	md.flowequation.element_equation[numpy.nonzero(SSAFSflag)]=7
+	md.flowequation.element_equation[numpy.nonzero(HOFSflag)]=8
+
+	#border
+	md.flowequation.borderHO=nodeonHO
+	md.flowequation.borderSSA=nodeonSSA
+	md.flowequation.borderFS=nodeonFS
+
+	#Create vertices_type
+	md.flowequation.vertex_equation=numpy.zeros(md.mesh.numberofvertices,int)
+	pos=numpy.nonzero(nodeonSSA)
+	md.flowequation.vertex_equation[pos]=2
+	pos=numpy.nonzero(nodeonL1L2)
+	md.flowequation.vertex_equation[pos]=3
+	pos=numpy.nonzero(nodeonHO)
+	md.flowequation.vertex_equation[pos]=4
+	pos=numpy.nonzero(nodeonFS)
+	md.flowequation.vertex_equation[pos]=5
+	#DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority)
+	pos=numpy.nonzero(nodeonSIA)
+	md.flowequation.vertex_equation[pos]=1
+	if any(FSflag):
+		pos=numpy.nonzero(numpy.logical_not(nodeonFS))
+		if not (any(HOflag) or any(SSAflag)):
+			md.flowequation.vertex_equation[pos]=0
+	pos=numpy.nonzero(nodeonSSAHO)
+	md.flowequation.vertex_equation[pos]=6
+	pos=numpy.nonzero(nodeonHOFS)
+	md.flowequation.vertex_equation[pos]=7
+	pos=numpy.nonzero(nodeonSSAFS)
+	md.flowequation.vertex_equation[pos]=8
+
+	#figure out solution types
+	md.flowequation.isSIA=any(md.flowequation.element_equation==1)
+	md.flowequation.isSSA=any(md.flowequation.element_equation==2)
+	md.flowequation.isL1L2=any(md.flowequation.element_equation==3)
+	md.flowequation.isHO=any(md.flowequation.element_equation==4)
+	md.flowequation.isFS=any(md.flowequation.element_equation==5)
+
+	return md
+
+	#Check that tiling can work:
+	if any(md.flowequation.borderSSA) and any(md.flowequation.borderHO) and any(md.flowequation.borderHO + md.flowequation.borderSSA !=1):
+		raise TypeError("error coupling domain too irregular")
+	if any(md.flowequation.borderSSA) and any(md.flowequation.borderFS) and any(md.flowequation.borderFS + md.flowequation.borderSSA !=1):
+		raise TypeError("error coupling domain too irregular")
+	if any(md.flowequation.borderFS) and any(md.flowequation.borderHO) and any(md.flowequation.borderHO + md.flowequation.borderFS !=1):
+		raise TypeError("error coupling domain too irregular")
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/parameterization/sethydrostaticmask.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/parameterization/sethydrostaticmask.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/parameterization/sethydrostaticmask.py	(revision 21239)
@@ -0,0 +1,34 @@
+import numpy
+import os
+from model import model
+from FlagElements import FlagElements
+from ContourToMesh import ContourToMesh
+
+def setmask(md)
+	"""
+	SETHYDROSTATICMASK - establish groundedice_levelset field
+
+   Determines grounded and floating ice position based on 
+   md.geometry.bed and md.geometry.thickness
+
+   Usage:
+      md=sethydrostaticmask(md)
+
+   Examples:
+      md=sethydrostaticmask(md);
+   """
+
+	if numpy.size(md.geometry.bed,axis=0)!=md.mesh.numberofvertices or numpy.size(md.geometry.base,axis=0)!=md.mesh.numberofvertices or numpy.size(md.geometry.thickness,axis=0)!=md.mesh.numberofvertices:
+		raise IOError("hydrostaticmask error message: fields in md.geometry do not have the right size.")
+
+   # grounded ice level set
+   md.mask.groundedice_levelset=md.geometry.thickness+md.geometry.bed*md.materials.rho_water/md.materials.rho_ice
+
+   #Check consistency of geometry
+	if any(md.geometry.base[numpy.nonzero(md.mask.groundedice_levelset>0.)]!=md.geometry.bed[numpy.nonzero(md.mask.groundedice_levelset>0.)]):
+	   print "WARNING: md.geometry.bed and md.geometry.base not equal on grounded ice"
+
+	if any(md.geometry.base[numpy.nonzero(md.mask.groundedice_levelset<=0.)]<md.geometry.bed[numpy.nonzero(md.mask.groundedice_levelset<=0.)]):
+		print "WARNING: md.geometry.base < md.geometry.bed on floating ice"
+
+	return md
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/parameterization/setmask.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/parameterization/setmask.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/parameterization/setmask.py	(revision 21239)
@@ -0,0 +1,68 @@
+import numpy
+import os
+from model import model
+from FlagElements import FlagElements
+from pairoptions import pairoptions
+from ContourToMesh import ContourToMesh
+
+def setmask(md, floatingicename, groundedicename, **kwargs):
+	"""
+	SETMASK - establish boundaries between grounded and floating ice.
+
+	   By default, ice is considered grounded. The contour floatingicename defines nodes 
+	   for which ice is floating. The contour groundedicename defines nodes inside an floatingice, 
+	   that are grounded (ie: ice rises, islands, etc ...)
+	   All input files are in the Argus format (extension .exp).
+
+	   Usage:
+	      md=setmask(md,floatingicename,groundedicename)
+
+	   Examples:
+	      md=setmask(md,'all','');
+	      md=setmask(md,'Iceshelves.exp','Islands.exp');
+	"""
+	#some checks on list of arguments
+	if not isinstance(md,model):
+		raise TypeError("setmask error message")
+
+	#process options
+	options=pairoptions(**kwargs)
+
+	#Get assigned fields
+	x = md.mesh.x
+	y = md.mesh.y
+	elements = md.mesh.elements
+
+	#Assign elementonfloatingice, elementongroundedice, vertexongroundedice and vertexonfloatingice. Only change at your own peril! This is synchronized heavily with the GroundingLineMigration module. {{{
+	elementonfloatingice = FlagElements(md, floatingicename)
+	elementongroundedice = FlagElements(md, groundedicename) 
+
+	#Because groundedice nodes and elements can be included into an floatingice, we need to update. Remember, all the previous 
+	#arrays come from domain outlines that can intersect one another: 
+
+	elementonfloatingice = numpy.logical_and(elementonfloatingice,numpy.logical_not(elementongroundedice))
+	elementongroundedice = numpy.logical_not(elementonfloatingice)
+
+	#the order here is important. we choose vertexongroundedice as default on the grounding line.
+	vertexonfloatingice = numpy.zeros(md.mesh.numberofvertices,'bool')
+	vertexongroundedice = numpy.zeros(md.mesh.numberofvertices,'bool')
+	vertexongroundedice[md.mesh.elements[numpy.nonzero(elementongroundedice),:]-1]=True
+	vertexonfloatingice[numpy.nonzero(numpy.logical_not(vertexongroundedice))]=True
+	#}}}
+
+	#level sets
+	md.mask.groundedice_levelset = -1.*numpy.ones(md.mesh.numberofvertices)
+	md.mask.groundedice_levelset[md.mesh.elements[numpy.nonzero(elementongroundedice),:]-1]=1.
+
+	if(len(kwargs)):
+		md.mask.ice_levelset = 1.*numpy.ones(md.mesh.numberofvertices)
+		icedomainfile = options.getfieldvalue('icedomain','none')
+		if not os.path.exists(icedomainfile):
+			raise IOError("setmask error message: ice domain file '%s' not found." % icedomainfile)
+		#use contourtomesh to set ice values inside ice domain
+		[vertexinsideicedomain,elementinsideicedomain]=ContourToMesh(elements,x,y,icedomainfile,'node',1)
+		md.mask.ice_levelset[numpy.nonzero(vertexinsideicedomain)[0]] = -1.
+	else:
+		md.mask.ice_levelset = -1.*numpy.ones(md.mesh.numberofvertices)
+
+	return md
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/applyoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/applyoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/applyoptions.py	(revision 21239)
@@ -0,0 +1,315 @@
+import numpy as npy
+from cmaptools import truncate_colormap
+from plot_contour import plot_contour
+from plot_streamlines import plot_streamlines
+from expdisp import expdisp
+
+try:
+	from matplotlib.ticker import MaxNLocator
+	from mpl_toolkits.axes_grid1 import make_axes_locatable
+	from mpl_toolkits.mplot3d import Axes3D
+	import matplotlib as mpl
+	import pylab as p
+	import matplotlib.pyplot as plt
+except ImportError:
+	print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
+
+def applyoptions(md,data,options,fig,ax):
+	'''
+	APPLYOPTIONS - apply options to current plot
+
+	'plotobj' is the object returned by the specific plot call used to
+	render the data.  This object is used for adding a colorbar.
+
+		Usage:
+			applyoptions(md,data,options)
+
+		See also: PLOTMODEL, PARSE_OPTIONS
+	'''
+
+	# get handle to current figure and axes instance
+	#fig = p.gcf()
+	#ax=p.gca()
+
+	#font {{{
+	fontsize=options.getfieldvalue('fontsize',8)
+	fontweight=options.getfieldvalue('fontweight','normal')
+	fontfamily=options.getfieldvalue('fontfamily','sans-serif')
+	font={'fontsize'		:fontsize,
+				'fontweight'	:fontweight,
+				'family'			:fontfamily}
+	#}}}
+
+	#title {{{
+	if options.exist('title'):
+		title=options.getfieldvalue('title')
+		if options.exist('titlefontsize'):
+			titlefontsize=options.getfieldvalue('titlefontsize')
+else:
+	titlefontsize=fontsize
+	if options.exist('titlefontweight'):
+		titlefontweight=options.getfieldvalue('titlefontweight')
+else:
+	titlefontweight=fontweight
+	#title font
+	titlefont=font.copy()
+	titlefont['size']=titlefontsize
+	titlefont['weight']=titlefontweight
+	ax.set_title(title,**titlefont)
+	#}}}
+		
+	#xlabel, ylabel, zlabel {{{
+	if options.exist('labelfontsize'):
+		labelfontsize=options.getfieldvalue('labelfontsize')
+else:
+	labelfontsize=fontsize
+	if options.exist('labelfontweight'):
+		labelfontweight=options.getfieldvalue('labelfontweight')
+else:
+	labelfontweight=fontweight
+
+	#font dict for labels
+	labelfont=font.copy()
+	labelfont['fontsize']=labelfontsize
+	labelfont['fontweight']=labelfontweight
+
+	if options.exist('xlabel'):
+		ax.set_xlabel(options.getfieldvalue('xlabel'),**labelfont)
+		if options.exist('ylabel'):
+			ax.set_ylabel(options.getfieldvalue('ylabel'),**labelfont)
+			if options.exist('zlabel'):
+				ax.set_zlabel(options.getfieldvalue('zlabel'),**labelfont)
+				#}}}
+
+	#xticks, yticks, zticks (tick locations) {{{
+	if options.exist('xticks'):
+		if options.exist('xticklabels'):
+			xticklabels=options.getfieldvalue('xticklabels')
+			ax.set_xticks(options.getfieldvalue('xticks'),xticklabels)
+else:
+	ax.set_xticks(options.getfieldvalue('xticks'))
+	if options.exist('yticks'):
+		if options.exist('yticklabels'):
+			yticklabels=options.getfieldvalue('yticklabels')
+			ax.set_yticks(options.getfieldvalue('yticks'),yticklabels)
+else:
+	ax.set_yticks(options.getfieldvalue('yticks'))
+	if options.exist('zticks'):
+		if options.exist('zticklabels'):
+			zticklabels=options.getfieldvalue('zticklabels')
+			ax.set_zticks(options.getfieldvalue('zticks'),zticklabels)
+else:
+	ax.set_zticks(options.getfieldvalue('zticks'))
+	#}}}
+
+	#xticklabels,yticklabels,zticklabels {{{
+	if options.getfieldvalue('ticklabels','off')=='off' or options.getfieldvalue('ticklabels',0)==0:
+		options.addfielddefault('xticklabels',[])
+		options.addfielddefault('yticklabels',[])
+		# TODO check if ax has a z-axis (e.g. is 3D)
+		if options.exist('xticklabels'):
+			xticklabels=options.getfieldvalue('xticklabels')
+			ax.set_xticklabels(xticklabels)
+			if options.exist('yticklabels'):
+				yticklabels=options.getfieldvalue('yticklabels')
+				ax.set_yticklabels(yticklabels)
+				if options.exist('zticklabels'):
+					zticklabels=options.getfieldvalue('zticklabels')
+					ax.set_zticklabels(zticklabels)
+					#}}}
+
+	#ticklabel notation {{{
+	#ax.ticklabel_format(style='sci',scilimits=(0,0))
+	#}}}
+
+	#ticklabelfontsize {{{
+	if options.exist('ticklabelfontsize'):
+		for label in ax.get_xticklabels() + ax.get_yticklabels():
+			label.set_fontsize(options.getfieldvalue('ticklabelfontsize'))
+			if int(md.mesh.dimension)==3: 
+				for label in ax.get_zticklabels():
+					label.set_fontsize(options.getfieldvalue('ticklabelfontsize'))
+					#}}}
+
+	#view
+	#if int(md.mesh.dimension) == 3 and options.exist('layer'):
+	#	#options.getfieldvalue('view') ?
+	#	ax=fig.gca(projection='3d')
+	#plt.show()
+
+	#axis {{{
+	if options.exist('axis'):
+		if options.getfieldvalue('axis',True)=='off':
+			ax.ticklabel_format(style='plain')
+			p.setp(ax.get_xticklabels(), visible=False)
+			p.setp(ax.get_yticklabels(), visible=False)
+			# }}}
+
+	#box
+	if options.exist('box'):
+		eval(options.getfieldvalue('box'))
+
+	#xlim, ylim, zlim {{{
+	if options.exist('xlim'):
+		ax.set_xlim(options.getfieldvalue('xlim'))
+		if options.exist('ylim'):
+			ax.set_ylim(options.getfieldvalue('ylim'))
+			if options.exist('zlim'):
+				ax.set_zlim(options.getfieldvalue('zlim'))
+				#}}}
+
+	#latlon
+
+	#Basinzoom
+
+	#ShowBasins
+
+	#clim {{{
+	if options.exist('clim'):
+		lims=options.getfieldvalue('clim')
+		assert len(lims)==2, 'error, clim should be passed as a list of length 2'
+elif options.exist('caxis'):
+	lims=options.getfieldvalue('caxis')
+	assert len(lims)==2, 'error, caxis should be passed as a list of length 2'
+	options.addfielddefault('clim',lims)
+else:
+	if len(data)>0: lims=[data.min(),data.max()]
+else: lims=[0,1]
+#}}}
+
+	#shading
+	#if options.exist('shading'):
+
+	#grid {{{
+	if options.exist('grid'):
+		if 'on' in options.getfieldvalue('grid','on'):
+			ax.grid()
+			#}}}
+
+	#colormap {{{
+	# default sequential colormap
+	defaultmap=truncate_colormap(mpl.cm.gnuplot2,0.1,0.9,128)
+	cmap=options.getfieldvalue('colormap',defaultmap)
+	norm = mpl.colors.Normalize(vmin=lims[0], vmax=lims[1])
+	options.addfield('colornorm',norm)
+	cbar_extend=0
+	if options.exist('cmap_set_over'):
+		over=options.getfieldvalue('cmap_set_over','0.5')
+		cmap.set_over(over)
+		cbar_extend+=1
+		if options.exist('cmap_set_under'):
+			under=options.getfieldvalue('cmap_set_under','0.5')
+			cmap.set_under(under)
+			cbar_extend+=2
+			options.addfield('colormap',cmap)
+			#}}}
+
+	#contours {{{
+	if options.exist('contourlevels'):
+		plot_contour(md,data,options,ax)
+		#}}}
+
+	#wrapping
+
+	#colorbar {{{
+	if options.getfieldvalue('colorbar',1)==1:
+		if cbar_extend==0:
+			extend='neither'
+elif cbar_extend==1:
+	extend='max'
+elif cbar_extend==2:
+	extend='min'
+elif cbar_extend==3:
+	extend='both'
+	cb = mpl.colorbar.ColorbarBase(ax.cax, cmap=cmap, norm=norm, extend=extend)
+	if options.exist('alpha'):
+		cb.set_alpha(options.getfieldvalue('alpha'))
+		if options.exist('colorbarnumticks'):
+			cb.locator=MaxNLocator(nbins=options.getfieldvalue('colorbarnumticks',5))
+else:
+	cb.locator=MaxNLocator(nbins=5) # default 5 ticks
+	if options.exist('colorbartickspacing'):
+		locs=npy.arange(lims[0],lims[1]+1,options.getfieldvalue('colorbartickspacing'))
+		cb.set_ticks(locs)
+		if options.exist('colorbarlines'):
+			locs=npy.arange(lims[0],lims[1]+1,options.getfieldvalue('colorbarlines'))
+			cb.add_lines(locs,['k' for i in range(len(locs))],npy.ones_like(locs))
+			if options.exist('colorbarlineatvalue'):
+				locs=options.getfieldvalue('colorbarlineatvalue')
+				colors=options.getfieldvalue('colorbarlineatvaluecolor',['k' for i in range (len(locs))])
+				widths=options.getfieldvalue('colorbarlineatvaluewidth',npy.ones_like(locs))
+				cb.add_lines(locs,colors,widths)
+				if options.exist('colorbartitle'):
+					if options.exist('colorbartitlepad'):
+						cb.set_label(options.getfieldvalue('colorbartitle'),labelpad=options.getfieldvalue('colorbartitlepad'),fontsize=fontsize)
+else:
+	cb.set_label(options.getfieldvalue('colorbartitle'),fontsize=fontsize)
+	cb.ax.tick_params(labelsize=fontsize)
+	cb.solids.set_rasterized(True)
+	cb.update_ticks()
+	cb.set_alpha(1)
+	cb.draw_all()
+	plt.sca(ax) # return to original axes control
+	#}}}
+
+        #expdisp {{{
+				if options.exist('expdisp'):
+					filename=options.getfieldvalue('expdisp')
+					style=options.getfieldvalue('expstyle','k')
+					linewidth=options.getfieldvalue('explinewidth',1)
+					for i in range(len(filename)):
+						filenamei=filename[i]
+						stylei=style[i]
+						if type(linewidth)==list:
+							linewidthi=linewidth[i]
+else:
+	linewidthi=linewidth
+	expdisp(filenamei,ax,linestyle=stylei,linewidth=linewidthi,unitmultiplier=options.getfieldvalue('unit',1))
+	#}}}
+
+	#area
+
+	#text {{{
+	if options.exist('text'):
+		text=options.getfieldvalue('text')
+		textx=options.getfieldvalue('textx')
+		texty=options.getfieldvalue('texty')
+		textcolor=options.getfieldvalue('textcolor')
+		textweight=options.getfieldvalue('textweight')
+		textrotation=options.getfieldvalue('textrotation')
+		textfontsize=options.getfieldvalue('textfontsize')
+		for label,x,y,size,color,weight,rotation in zip(text,textx,texty,textfontsize,textcolor,textweight,textrotation):
+			ax.text(x,y,label,transform=ax.transAxes,fontsize=size,color=color,weight=weight,rotation=rotation)
+			#}}}
+
+	#north arrow
+
+	#scale ruler
+
+	#streamlines
+	if options.exist('streamlines'):
+		plot_streamlines(md,options,ax)
+
+
+	#axis positions
+
+	#figure position
+
+	#axes position
+
+	#showregion
+
+	#flat edges of a partition
+
+	#scatter
+
+	#backgroundcolor
+
+	#figurebackgroundcolor
+
+	#lighting
+
+	#point cloud
+
+	#inset
+	
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/checkplotoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/checkplotoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/checkplotoptions.py	(revision 21239)
@@ -0,0 +1,168 @@
+import numpy as npy
+
+def checkplotoptions(md,options):
+	'''
+	CHECKPLOTOPTIONS - build a structure that holds all plot options
+
+		Usage:
+			options=checkplotoptions(md,options)
+
+		See also: PLOTMODEL
+
+		NOTE: not fully implemented yet
+	'''
+
+
+	#units
+	if options.exist('unit'):
+		if 'km' in options.getfieldvalue('unit','km'):
+			options.changefieldvalue('unit',10**-3)
+		elif '100km' in options.getfieldvalue('unit','100km'):
+			options.changefieldvalue('unit',10**-5)
+	
+	#density
+	if options.exist('density'):
+		density=options.getfieldvalue('density')
+		options.changefieldvalue('density',abs(ceil(density)))
+		
+	#show section
+	if options.exist('showsection'):
+		if 'on' in options.getfieldvalue('showsection','on'):
+			options.changefieldvalue('showsection',4)
+			
+	#smooth values
+	if options.exist('smooth'):
+		if 'on' in options.getfieldvalue('smooth','on'):
+			options.changefieldvalue('smooth',0)
+
+	#contouronly values
+	if options.exist('contouronly'):
+		if 'on' in options.getfieldvalue('contouronly','on'):
+			options.changefieldvalue('contouronly',1)
+
+	#colorbar
+	if options.exist('colorbar'):
+		if 'on' in options.getfieldvalue('colorbar','on'):
+			options.changefieldvalue('colorbar',1)
+		elif 'off' in options.getfieldvalue('colorbar','off'):
+			options.changefieldvalue('colorbar',0)
+
+	#text
+	if options.exist('text'):
+
+		# text values (coerce to list for consistent functionality)
+		textlist=[]
+		text=options.getfieldvalue('text','default text')
+		textlist.extend([text] if isinstance(text,str) else text)
+		numtext=len(textlist)
+
+		# text position	
+		textpos=options.getfieldvalue('textposition',[0.5,0.5])
+		if not isinstance(textpos,list):
+			raise Exception('textposition should be passed as a list')
+			if any(isinstance(i,list) for i in textpos):
+				textx=[item[0] for item in textpos]
+				texty=[item[1] for item in textpos]
+			else:
+				textx=[textpos[0]]
+				texty=[textpos[1]]
+		if len(textx)!=numtext or len(texty)!=numtext:
+			raise Exception('textposition should contain one list of x,y vertices for every text instance')
+
+		# font size
+	if options.exist('textfontsize'):
+		textfontsize=options.getfieldvalue('textfontsize',12)
+		sizelist=[]
+		sizelist.extend(textsize if isinstance(textfontsize,list) else [textfontsize])
+	else:
+		sizelist=[12]
+	if len(sizelist)==1:
+		sizelist=npy.tile(sizelist,numtext)
+
+		# font color
+		if options.exist('textcolor'):
+			textcolor=options.getfieldvalue('textcolor','k')
+			colorlist=[]
+			colorlist.extend(textcolor if isinstance(textcolor,list) else [textcolor])
+		else:
+			colorlist=['k']
+		if len(colorlist)==1:
+			colorlist=npy.tile(colorlist,numtext)
+
+		# textweight
+		if options.exist('textweight'):
+			textweight=options.getfieldvalue('textweight')
+			weightlist=[]
+			weightlist.extend(textweight if isinstance(textweight,list) else [textweight])
+		else:
+			weightlist=['normal']
+		if len(weightlist)==1:
+			weightlist=npy.tile(weightlist,numtext)
+
+		# text rotation
+		if options.exist('textrotation'):
+			textrotation=options.getfieldvalue('textrotation',0)
+			rotationlist=[]
+			rotationlist.extend(textrotation if isinstance(textrotation,list) else [textrotation])
+		else:
+			rotationlist=[0]
+		if len(rotationlist)==1:
+			rotationlist=npy.tile(rotationlist,numtext)
+
+		options.changefieldvalue('text',textlist)
+		options.addfield('textx',textx)
+		options.addfield('texty',texty)
+		options.changefieldvalue('textfontsize',sizelist)
+		options.changefieldvalue('textcolor',colorlist)
+		options.changefieldvalue('textweight',weightlist)
+		options.changefieldvalue('textrotation',rotationlist)
+
+	#expdisp
+	expdispvaluesarray=[]
+	expstylevaluesarray=[]
+	expstylevalues=[]
+	if options.exist('expstyle'):
+		expstylevalues=options.getfieldvalue('expstyle')
+		if type(expstylevalues)==str:
+			expstylevalues=[expstylevalues]
+	if options.exist('expdisp'):
+		expdispvalues=options.getfieldvalue('expdisp')
+		if type(expdispvalues)==str:
+			expdispvalues=[expdispvalues]
+		for i in npy.arange(len(expdispvalues)):
+			expdispvaluesarray.append(expdispvalues[i])
+			if len(expstylevalues)>i:
+				expstylevaluesarray.append(expstylevalues[i])
+			else:
+				expstylevaluesarray.append('-k')
+
+	options.changefieldvalue('expstyle',expstylevaluesarray)
+	options.changefieldvalue('expdisp',expdispvaluesarray)
+
+	#latlonnumbering
+	if options.exist('latlonclick'):
+		if 'on' in options.getfieldvalue('latlonclick','on'):
+			options.changefieldvalue('latlonclick',1)
+
+	#northarrow
+	if options.exist('northarrow'):
+		if 'on' in options.getfieldvalue('northarrow','on'):
+			#default values
+			Lx=max(md.mesh.x)-min(md.mesh.x)
+			Ly=max(md.mesh.y)-min(md.mesh.y)
+			options.changefieldvalue('northarrow',[min(md.mesh.x)+1./6.*Lx, min(md.mesh.y)+5./6.*Ly, 1./15.*Ly, 0.25, 1./250.*Ly])
+
+	#scale ruler
+	if options.exist('scaleruler'):
+		if 'on' in options.exist('scaleruler','on'):
+			Lx=max(md.mesh.x)-min(md.mesh.x)
+			Ly=max(md.mesh.y)-min(md.mesh.y)
+			options.changefieldvalue('scaleruler',[min(md.mesh.x)+6./8.*Lx, min(md.mesh.y)+1./10.*Ly, 10**(ceil(log10(Lx)))/5, floor(Lx/100), 5])
+
+	#log scale
+	if options.exist('log'):
+		if options.exist('clim'):
+			options.changefieldvalue('clim',log(options.getfieldvalue('clim'))/log(options.getfieldvalue('log')))
+			options.changefieldvalue('cutoff',log(options.getfieldvalue('cutoff',1.5))/log(options.getfieldvalue('log')))
+
+	return options
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/colormaps/cmaptools.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/colormaps/cmaptools.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/colormaps/cmaptools.py	(revision 21239)
@@ -0,0 +1,25 @@
+import numpy as npy
+
+try:
+	import matplotlib as mpl
+except ImportError:
+	print('cannot import matplotlib, no plotting capabilities enabled')
+
+def truncate_colormap(cmap, minval=0.0, maxval=1.0, n=100):
+	'''
+	truncate a colormap within normalized limits [0,1]
+
+	cmap - a matplotlib colormap
+	minval - minimum value, normalized, of cmap to be returned.
+	maxval - maximum value, normalized, of cmap to be returned.
+	n - number of levels to use in constructing the new colormap
+
+	Example:
+		newcmap=truncate_colormap(oldcmap,minval=0.2,maxval=0.8,n=128)
+
+	'''
+
+	new_cmap = mpl.colors.LinearSegmentedColormap.from_list('trunc({n},{a:.2f},{b:.2f})'.format(n=cmap.name,
+		a=minval, b=maxval), cmap(npy.linspace(minval, maxval, n)))
+	
+	return new_cmap
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/export_gl.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/export_gl.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/export_gl.py	(revision 21239)
@@ -0,0 +1,124 @@
+from plotoptions import plotoptions
+from checkplotoptions import checkplotoptions
+from model import model
+import numpy as np
+import math
+from writejsfile import writejsfile
+
+def export_gl(md,*varargin):
+	class ResultObj(object):
+	    def __getattr__(self, attr):
+		return self.__dict__.get(attr)
+
+	print ('getting options')
+	templist=plotoptions(varargin); 
+	optionslist=templist.list;
+	options=optionslist[1];
+	options=checkplotoptions(md,options);
+	#print (templist,options)
+	#templist contains options 0-3. Use in the future to rework.
+	
+	#Setup unique directory in present dir: 
+	print ('setting directory')
+	directory=optionslist[0].getfieldvalue('directory');
+	databasename=optionslist[0].getfieldvalue('database');
+	
+	#scaling factor: 
+	print ('setting scaling factor')
+	scaling_factor=optionslist[0].getfieldvalue('scaling_factor');
+
+	#Deal with title: 
+	print ('setting title')
+	if optionslist[0].exist('title'):
+		title=optionslist[0].getfieldvalue('title');
+	else:
+		title='';
+
+	#initialize model: 
+	print ('initializing model')
+	model.title=title;
+	model.initialZoomFactor=options.getfieldvalue('zoom',-.25);
+
+	#Deal with contour {{{
+	print ('getting contour')
+	print((md.mesh.segments))
+	segmenets0 = [s - 1 for s in md.mesh.segments[:,0]];
+	segmenets1 = [s - 1 for s in md.mesh.segments[:,1]];
+	
+	contour_lat1=md.mesh.lat.take(segmenets0)
+	contour_lat2=md.mesh.lat.take(segmenets1);
+	contour_long1=md.mesh.long.take(segmenets0);
+	contour_long2=md.mesh.long.take(segmenets1);
+	contour_surface1=md.geometry.surface.take(segmenets0);
+	contour_surface2=md.geometry.surface.take(segmenets1);
+
+	R1=6371000*np.ones(len(contour_surface1))+scaling_factor*contour_surface1;
+	R2=6371000*np.ones(len(contour_surface2))+scaling_factor*contour_surface2;
+
+	model.contourx1 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.cos(math.radians(int)), R1, contour_lat1, contour_long1));
+	model.contoury1 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.sin(math.radians(int)), R1, contour_lat1, contour_long1));
+	model.contourz1 = list(map(lambda r, lat: r * math.sin(math.radians(lat)), R1, contour_lat1));
+	
+	model.contourx2 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.cos(math.radians(int)), R2, contour_lat2, contour_long2));
+	model.contoury2 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.sin(math.radians(int)), R2, contour_lat2, contour_long2));
+	model.contourz2 = list(map(lambda r, lat: r * math.sin(math.radians(lat)), R2, contour_lat2));
+
+	#}}}
+	#Deal with mesh and results {{{
+	print ('getting mesh')
+	surface=md.geometry.surface.flatten();
+	numberofelements=md.mesh.numberofelements;
+	numberofvertices=md.mesh.numberofvertices;
+	R=6371000*np.ones(len(md.mesh.lat))+scaling_factor*surface;
+	
+	x = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.cos(math.radians(int)), R, md.mesh.lat,md.mesh.long));
+	y = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.sin(math.radians(int)), R, md.mesh.lat,md.mesh.long));
+	z = list(map(lambda r, lat: r * math.sin(math.radians(lat)), R, md.mesh.lat));
+	
+	#Deal with triangulation: 
+	print('getting triangulation')
+	model.index=md.mesh.elements;
+	model.x=x;
+	model.y=y;
+	model.z=z;
+	model.surface=surface;
+	
+	results = []
+	print(optionslist)	
+	#Deal with data: 
+	print('getting data')
+	for i in range(0,len(optionslist)):
+		options=optionslist[i]; 
+		options=checkplotoptions(md,options);
+		data=options.getfieldvalue('data').flatten();
+		results.append(ResultObj())
+		results[i].data=data;
+		results[i].caxis=options.getfieldvalue('caxis',[min(data), max(data)]);
+
+		label=options.getfieldvalue('label','');
+		if label=='':
+			#create generic label: 
+			label=['data', str(i)];
+		results[i].label=label;
+
+		shortlabel=options.getfieldvalue('shortlabel','');
+		if shortlabel=='':
+			#create generic short label: 
+			shortlabel=['data', str(i)];
+		results[i].shortlabel=shortlabel;
+
+		if type(data[2])!=np.float64:
+			time_range=options.getfieldvalue('time_range',[0, 100]);
+			results[i].time_range=time_range;
+
+		unit=options.getfieldvalue('unit','');
+		if unit=='':
+			#create generic unit: 
+			unit='SI';
+		results[i].unit=unit;
+	model.results=results;
+	
+	#Write model to javascript database file: 
+	print('writing to file')
+	writejsfile(directory + databasename + '.js',model,databasename);
+#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plot_contour.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plot_contour.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plot_contour.py	(revision 21239)
@@ -0,0 +1,38 @@
+from averaging import averaging
+import matplotlib.pyplot as plt
+from processmesh import processmesh
+from processdata import processdata
+
+def plot_contour(md,datain,options,ax):
+	'''
+	plot contours of a given field (called within plotmodel)
+
+	Usage:
+		plot_contour(md,data,options)
+
+	See also: plotmodel
+	'''
+
+	x,y,z,elements,is2d,isplanet=processmesh(md,datain,options)
+	data,datatype=processdata(md,datain,options)
+
+	# process data: must be on nodes
+	if datatype==1: # element data
+		data=averaging(md,data,0)
+	elif datatype==2:
+		pass
+	elif datatype==3: # quiver (vector) data
+		data=npy.sqrt(datain**2)
+	else:
+		raise ValueError('datatype not supported in call to plot_contour')
+
+	# contouronly TODO (cla will also clear an overlay image)
+
+	# retrieve necessary options
+	levels=options.getfieldvalue('contourlevels')
+	colors=options.getfieldvalue('contourcolors')
+	norm=options.getfieldvalue('colornorm')
+	linestyles=options.getfieldvalue('contourlinestyles')
+	linewidths=options.getfieldvalue('contourlinewidths')
+
+	ax.tricontour(x,y,elements,data,levels,colors=colors,norm=norm,linestyles=linestyles,linewidths=linewidths)
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plot_manager.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plot_manager.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plot_manager.py	(revision 21239)
@@ -0,0 +1,102 @@
+try:
+	import pylab as p
+	import matplotlib.pyplot as plt
+except ImportError:
+	print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
+
+from checkplotoptions import checkplotoptions
+from plot_mesh import plot_mesh
+from processmesh import processmesh
+from processdata import processdata
+from plot_unit import plot_unit
+from applyoptions import applyoptions
+
+try:
+	from osgeo import gdal
+	overlaysupport=True
+except ImportError:
+	print('osgeo/gdal for python not installed, overlay plots are not enabled')
+	overlaysupport=False
+
+if overlaysupport:
+	from plot_overlay import plot_overlay
+
+def plot_manager(md,options,fig,ax):
+	'''
+	PLOT_MANAGER - distribute the plots called by plotmodel
+
+	'fig' is a handle to the figure instance created by plotmodel.
+
+	'ax' is a handle to the axes instance created by plotmodel.  This is
+	currently generated using matplotlib's AxesGrid toolkit.
+
+	Usage:
+		plot_manager(md,options,fig,ax);
+
+	See also: PLOTMODEL, PLOT_UNIT
+	'''
+
+	#parse options and get a structure of options
+	options=checkplotoptions(md,options)
+
+	#get data to be plotted
+	data=options.getfieldvalue('data');
+
+	#initialize plot handle variable
+	#handle=None
+
+	# initialize subplot
+	#p.subplot(nrows,ncols,i,aspect='equal')
+
+	##basemap plot
+	#if options.exist('basemap'):
+	#	plot_basemap(md,data,options,nrows,ncols,i)
+
+	#overlay plot
+	if options.exist('overlay') and overlaysupport:
+		plot_overlay(md,data,options,ax)
+		options.addfielddefault('alpha',0.5)
+		options.addfielddefault('xlim',[min(md.mesh.x),max(md.mesh.x)])
+		options.addfielddefault('ylim',[min(md.mesh.y),max(md.mesh.y)])
+
+	#figure out if this is a special plot
+	if isinstance(data,str):
+
+		# convert string to lower case for a case-insensitive comparison
+		if data.lower()=='mesh': 
+			plot_mesh(md,options,ax)
+			applyoptions(md,[],options,fig,ax)
+			fig.delaxes(fig.axes[1]) # hack to remove colorbar after the fact
+			return
+		elif data.lower()=='none':
+			print('no data provided to plot (TODO: write plot_none.py)')
+			applyoptions(md,[],options,fig,ax)
+			return
+		else:
+			print(("WARNING: '%s' is not implemented or is not a valid string for option 'data'" % data))
+
+	#elif data in vars(md):
+	#else:
+		#print "'data' not a string, plotting model properties yet to be implemented..."
+
+	#Gridded plot
+
+	#Section plot
+
+	#Profile plot
+
+	#process data and model
+	x,y,z,elements,is2d,isplanet=processmesh(md,data,options)
+	data2,datatype=processdata(md,data,options)
+
+	#standard plot
+	#if not handle:
+	#	p.subplot(nrows,ncols,i,aspect='equal')
+
+	#plot unit
+	plot_unit(x,y,z,elements,data2,is2d,isplanet,datatype,options,ax)
+
+	#apply all options
+	applyoptions(md,data2,options,fig,ax)
+	
+	#ground overlay on kml plot_unit
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plot_mesh.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plot_mesh.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plot_mesh.py	(revision 21239)
@@ -0,0 +1,29 @@
+try:
+	import pylab as p
+except ImportError:
+	print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
+
+from processmesh import processmesh
+from applyoptions import applyoptions
+
+def plot_mesh(md,options,ax):
+	'''
+	PLOT_MESH - plot model mesh
+
+		Usage:
+			plot_mesh(md,options,nlines,ncols,i)
+
+		See also: PLOTMODEL
+	'''
+
+	x,y,z,elements,is2d,isplanet=processmesh(md,[],options)
+
+	if is2d:
+		ax.triplot(x,y,elements)
+	else:
+		print('WARNING: only 2D mesh plot is currently implemented')
+	
+	#apply options
+	options.addfielddefault('title','Mesh')
+	options.addfielddefault('colorbar','off')
+	options.addfielddefault('ticklabels','on')
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plot_overlay.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plot_overlay.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plot_overlay.py	(revision 21239)
@@ -0,0 +1,132 @@
+import numpy as npy
+from processmesh import processmesh
+from processdata import processdata
+from xy2ll import xy2ll
+import matplotlib.pyplot as plt
+import matplotlib as mpl
+try:
+    from mpl_toolkits.basemap import Basemap
+except ImportError:
+    print('Basemap toolkit not installed')
+
+import os
+
+try:
+        from osgeo import gdal
+except ImportError:
+	print('osgeo/gdal for python not installed, plot_overlay is disabled')
+
+
+def plot_overlay(md,data,options,ax):
+	'''
+	Function for plotting a georeferenced image.  This function is called
+	from within the plotmodel code.
+	'''
+
+	x,y,z,elements,is2d,isplanet=processmesh(md,[],options)
+
+	if data=='none' or data==None:
+		imageonly=1
+		data=npy.float('nan')*npy.ones((md.mesh.numberofvertices,))
+		datatype=1
+	else:
+		imageonly=0
+		data,datatype=processdata(md,data,options)
+
+	if not is2d:
+		raise Exception('overlay plot not supported for 3D meshes, project on a 2D layer first')
+
+	if not options.exist('geotiff_name'):
+		raise Exception('overlay error: provide geotiff_name with path to geotiff file')
+	geotiff=options.getfieldvalue('geotiff_name')
+
+	xlim=options.getfieldvalue('xlim',[min(md.mesh.x),max(md.mesh.x)])
+	ylim=options.getfieldvalue('ylim',[min(md.mesh.y),max(md.mesh.y)])
+
+	gtif=gdal.Open(geotiff)
+	trans=gtif.GetGeoTransform()
+	xmin=trans[0]
+	xmax=trans[0]+gtif.RasterXSize*trans[1]
+	ymin=trans[3]+gtif.RasterYSize*trans[5]
+	ymax=trans[3]
+	
+	# allow supplied geotiff to have limits smaller than basemap or model limits
+	x0=max(min(xlim),xmin)
+	x1=min(max(xlim),xmax)
+	y0=max(min(ylim),ymin)
+	y1=min(max(ylim),ymax)
+	inputname='temp.tif'
+	os.system('gdal_translate -quiet -projwin ' + str(x0) + ' ' + str(y1) + ' ' + str(x1) + ' ' + str(y0) + ' ' + geotiff + ' ' + inputname)
+	
+	gtif=gdal.Open(inputname)
+	arr=gtif.ReadAsArray()
+	#os.system('rm -rf ./temp.tif')
+	
+	if gtif.RasterCount>=3:  # RGB array
+		r=gtif.GetRasterBand(1).ReadAsArray()
+		g=gtif.GetRasterBand(2).ReadAsArray()
+		b=gtif.GetRasterBand(3).ReadAsArray()
+		arr=0.299*r+0.587*g+0.114*b
+
+	# normalize array
+	arr=arr/npy.float(npy.max(arr.ravel()))
+        arr=1.-arr # somehow the values got flipped
+
+	if options.getfieldvalue('overlayhist',0)==1:
+		ax=plt.gca()
+		num=2
+		while True:
+			if not plt.fignum_exists(num):
+				break
+			else:
+				num+=1
+		plt.figure(num)
+		plt.hist(arr.flatten(),bins=256,range=(0.,1.))
+		plt.title('histogram of overlay image, use for setting overlaylims')
+                plt.show()
+		plt.sca(ax) # return to original axes/figure
+		
+	# get parameters from cropped geotiff
+	trans=gtif.GetGeoTransform()
+	xmin=trans[0]
+	xmax=trans[0]+gtif.RasterXSize*trans[1]
+	ymin=trans[3]+gtif.RasterYSize*trans[5]
+	ymax=trans[3]
+	dx=trans[1]
+	dy=trans[5]	
+	
+	xarr=npy.arange(xmin,xmax,dx)
+	yarr=npy.arange(ymin,ymax,-dy) # -dy since origin='upper' (not sure how robust this is)
+	xg,yg=npy.meshgrid(xarr,yarr)
+	overlaylims=options.getfieldvalue('overlaylims',[min(arr.ravel()),max(arr.ravel())])
+	norm=mpl.colors.Normalize(vmin=overlaylims[0],vmax=overlaylims[1])
+
+	if options.exist('basemap'):
+		# create coordinate grid in map projection units (for plotting)
+		lat,lon=xy2ll(xlim,ylim,-1,0,71)
+                #plt.sca(ax)
+                width=xmax-xmin
+                height=ymax-ymin
+                lat_0,lon_0=xy2ll(xmin+width/2.,ymin+height/2.,-1,0,71)
+	        m=Basemap(projection='spstere',
+                        llcrnrlon=lon[0],llcrnrlat=lat[0],urcrnrlon=lon[1],urcrnrlat=lat[1],
+                        epsg=3031,
+                        resolution='c')
+                        #width=width,height=height,lon_0=lon_0,lat_0=lat_0,
+                        #lat_0=-90,lon_0=0,lat_ts=-71,
+                        #llcrnrx=x0,llcrnry=y0,urcrnrx=x1,urcrnry=y1)
+                #test
+                #m.ax=ax
+	        meridians=npy.arange(-180.,181.,1.)
+	        parallels=npy.arange(-80.,80.,1.)
+	        m.drawparallels(parallels,labels=[0,0,1,1]) # labels=[left,right,top,bottom]
+	        m.drawmeridians(meridians,labels=[1,1,0,0])
+                m.drawcoastlines()
+	        pc=m.pcolormesh(xg, yg, npy.flipud(arr), cmap=mpl.cm.Greys, norm=norm, ax=ax)
+
+	else:
+	        pc=ax.pcolormesh(xg, yg, npy.flipud(arr), cmap=mpl.cm.Greys, norm=norm)
+        
+	#rasterization? 
+	if options.getfieldvalue('rasterized',0):
+		pc.set_rasterized(True)
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plot_streamlines.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plot_streamlines.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plot_streamlines.py	(revision 21239)
@@ -0,0 +1,64 @@
+import numpy as npy
+import matplotlib.pyplot as plt
+import matplotlib.tri as tri
+from processmesh import processmesh
+from processdata import processdata
+from scipy.interpolate import griddata
+from ContourToMesh import ContourToMesh
+
+def plot_streamlines(md,options,ax):
+    '''
+    plot streamlines on a figure, using by default vx and vy components in md.initialization. 
+
+    Usage:
+        plot_streamlines(md,options,ax)
+
+    available options, to be passed to plotmodel as a string-value pair:
+        streamlinesvx : vx component (default md.initialization.vx)
+        streamlinesvy : vy component (default md.initialization.vy)
+        streamlinescolor: color string
+        streamlinesdensity: density of plotted streamlines (default 1)
+        streamlineswidth: linewidth value or 'vel' to scale by velocity
+        streamlineswidthscale: scaling multiplier for linewidth scaled by velocity
+        streamlinesarrowsize: size of arrows on lines (default 1)
+        
+    '''
+
+    # retrieve options
+    vx=options.getfieldvalue('streamlinesvx',md.initialization.vx)
+    vy=options.getfieldvalue('streamlinesvy',md.initialization.vy)
+    color=options.getfieldvalue('streamlinescolor','k')
+    linewidth=options.getfieldvalue('streamlineswidth',1)
+    density=options.getfieldvalue('streamlinesdensity',1)
+    arrowsize=options.getfieldvalue('streamlinesarrowsize',1)
+
+    #process mesh and data 
+    x,y,z,elements,is2d,isplanet=processmesh(md,vx,options)
+    u,datatype=processdata(md,vx,options)
+    v,datatype=processdata(md,vy,options)
+
+    if not is2d:
+        raise Exception('plot_streamlines error: streamlines option not supported for 3D plots')
+
+    # format data for matplotlib streamplot function
+    yg,xg=npy.mgrid[min(md.mesh.y):max(md.mesh.y):100j,min(md.mesh.x):max(md.mesh.x):100j]
+    ug=griddata((x,y),u,(xg,yg),method='linear')
+    vg=griddata((x,y),v,(xg,yg),method='linear')
+
+    # create triangulation instance
+    triang=tri.Triangulation(md.mesh.x,md.mesh.y,md.mesh.elements-1)
+
+    # interpolate to regularly spaced quad grid
+    interp_lin_u=tri.LinearTriInterpolator(triang,u)
+    interp_lin_v=tri.LinearTriInterpolator(triang,v)
+    ug=interp_lin_u(xg,yg)
+    vg=interp_lin_v(xg,yg)
+
+    if linewidth=='vel':
+        scale=options.getfieldvalue('streamlineswidthscale',3)
+        vel=npy.sqrt(ug**2+vg**2)
+        linewidth=scale*vel/npy.amax(vel)
+        linewidth[linewidth<0.5]=0.5
+
+    # plot streamlines
+    ax.streamplot(xg,yg,ug,vg,color=color,linewidth=linewidth,density=density,arrowsize=arrowsize)
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plot_unit.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plot_unit.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plot_unit.py	(revision 21239)
@@ -0,0 +1,92 @@
+from cmaptools import truncate_colormap
+try:
+    import pylab as p
+    import matplotlib as mpl
+    import matplotlib.pyplot as plt
+    import numpy as npy
+except ImportError:
+    print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
+
+def plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options,ax):
+    """
+    PLOT_UNIT - unit plot, display data
+    
+    	Usage:
+    		plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+    
+    	See also: PLOTMODEL, PLOT_MANAGER
+    """
+    
+    #edgecolor
+    edgecolor=options.getfieldvalue('edgecolor','None')
+    
+    #number of colorlevels for plots
+    colorlevels=options.getfieldvalue('colorlevels',128)
+    
+    alpha=options.getfieldvalue('alpha',1)
+    
+    #colormap
+    # default sequential colormap
+    defaultmap=truncate_colormap(mpl.cm.gnuplot2,0.1,0.9,128)
+    cmap=options.getfieldvalue('colormap',defaultmap)
+    if options.exist('cmap_set_over'):
+        over=options.getfieldvalue('cmap_set_over','0.5')
+        cmap.set_over(over)
+    if options.exist('cmap_set_under'):
+        under=options.getfieldvalue('cmap_set_under','0.5')
+        cmap.set_under(under)
+    
+    #normalize colormap if clim/caxis specified
+    if options.exist('clim'):
+        lims=options.getfieldvalue('clim',[npy.amin(data),npy.amax(data)])
+    elif options.exist('caxis'):
+        lims=options.getfieldvalue('caxis',[npy.amin(data),npy.amax(data)])
+    else:
+        if npy.amin(data)==npy.amax(data):
+            lims=[npy.amin(data)-0.5,npy.amax(data)+0.5]
+        else:
+    	    lims=[npy.amin(data),npy.amax(data)]
+    norm = mpl.colors.Normalize(vmin=lims[0], vmax=lims[1])
+    if datatype==1:
+       #element plot
+        if is2d:
+    	    tri=ax.tripcolor(x,y,elements,data,colorlevels,cmap=cmap,norm=norm,alpha=alpha,edgecolors=edgecolor)
+    	else:
+    	    raise ValueError('plot_unit error: 3D element plot not supported yet')
+    	return 
+    
+    elif datatype==2:
+    	#node plot
+    	if is2d:
+    	    tri=ax.tricontourf(x,y,elements,data,colorlevels,cmap=cmap,norm=norm,alpha=alpha,extend='both')
+    	    if edgecolor != 'None':
+    	        ax.triplot(x,y,elements,color=edgecolor)
+    	else:
+    	    raise ValueError('plot_unit error: 3D node plot not supported yet')
+    	return
+    
+    elif datatype==3:
+        vx=data[:,0]
+        vy=data[:,1]
+        #TODO write plot_quiver.py to handle this here
+        color=npy.sqrt(vx**2+vy**2)
+        scale=options.getfieldvalue('scale',1000)
+        width=options.getfieldvalue('width',0.005*(npy.amax(x)-npy.amin(y)))
+        headwidth=options.getfieldvalue('headwidth',3)
+        headlength=options.getfieldvalue('headlength',5)
+        Q=ax.quiver(x,y,vx,vy,color,cmap=cmap,norm=norm,scale=scale,
+                width=width,headwidth=headwidth,headlength=headlength)
+    	return
+    
+    elif datatype==4:
+    	#P1 patch plot
+    	print('plot_unit message: P1 patch plot not implemented yet')
+    	return
+    
+    elif datatype==5:
+    	print('plot_unit message: P0 patch plot not implemented yet')
+    	return
+    
+    else:
+    	raise ValueError('datatype=%d not supported' % datatype)
+    
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plotmodel.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plotmodel.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/plotmodel.py	(revision 21239)
@@ -0,0 +1,99 @@
+import numpy as npy
+from plotoptions import plotoptions
+
+try:
+	import pylab as p
+	import matplotlib.pyplot as plt
+	from mpl_toolkits.axes_grid1 import ImageGrid, AxesGrid
+except ImportError:
+	print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
+
+from plot_manager import plot_manager
+from math import ceil, sqrt
+
+def plotmodel(md,*args):
+	'''
+	at command prompt, type 'plotdoc' for additional documentation
+	'''
+
+	#First process options 
+	options=plotoptions(*args)
+
+	#get number of subplots
+	subplotwidth=ceil(sqrt(options.numberofplots))
+	
+	#Get figure number and number of plots
+	figurenumber=options.figurenumber
+	numberofplots=options.numberofplots
+
+	#get hold
+	hold=options.list[0].getfieldvalue('hold',False)
+
+	#if nrows and ncols specified, then bypass
+	if options.list[0].exist('nrows'):
+		nrows=options.list[0].getfieldvalue('nrows')
+		nr=True
+	else:
+		nrows=npy.ceil(numberofplots/subplotwidth)
+		nr=False
+	
+	if options.list[0].exist('ncols'):
+		ncols=options.list[0].getfieldvalue('ncols')
+		nc=True
+	else:
+		ncols=int(subplotwidth)
+		nc=False
+	ncols=int(ncols)
+	nrows=int(nrows)
+	
+	#check that nrows and ncols were given at the same time!
+	if not nr==nc:
+		raise Exception('error: nrows and ncols need to be specified together, or not at all')
+	
+	#Go through plots
+	if numberofplots:
+		
+		#if plt.fignum_exists(figurenumber): 
+		#	plt.cla()
+
+		#if figsize specified
+		if options.list[0].exist('figsize'):
+			figsize=options.list[0].getfieldvalue('figsize')
+			fig=plt.figure(figurenumber,figsize=(figsize[0],figsize[1]),tight_layout=True)
+		else:
+			fig=plt.figure(figurenumber,tight_layout=True)
+		fig.clf()
+
+		# options needed to define plot grid
+		direction=options.list[0].getfieldvalue('direction','row') # row,column
+		axes_pad=options.list[0].getfieldvalue('axes_pad',0.25)
+		add_all=options.list[0].getfieldvalue('add_all',True) # True,False
+		share_all=options.list[0].getfieldvalue('share_all',True) # True,False
+		label_mode=options.list[0].getfieldvalue('label_mode','1') # 1,L,all
+		cbar_mode=options.list[0].getfieldvalue('cbar_mode','each') # none,single,each
+		cbar_location=options.list[0].getfieldvalue('cbar_location','right') # right,top
+		cbar_size=options.list[0].getfieldvalue('cbar_size','5%')
+		cbar_pad=options.list[0].getfieldvalue('cbar_pad','2.5%') # None or %
+		
+		axgrid=ImageGrid(fig, 111,
+				nrows_ncols=(nrows,ncols),
+				direction=direction,
+				axes_pad=axes_pad,
+				add_all=add_all,
+				share_all=share_all,
+				label_mode=label_mode,
+				cbar_mode=cbar_mode,
+				cbar_location=cbar_location,
+				cbar_size=cbar_size,
+				cbar_pad=cbar_pad
+				)
+
+		if cbar_mode=='none':
+			for ax in axgrid.cbar_axes: fig._axstack.remove(ax)
+
+		for i in range(numberofplots):
+			plot_manager(options.list[i].getfieldvalue('model',md),options.list[i],fig,axgrid[i])
+
+		fig.show()
+	else:
+		raise Exception('plotmodel error message: no output data found.')
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/processdata.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/processdata.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/processdata.py	(revision 21239)
@@ -0,0 +1,108 @@
+from math import isnan
+import numpy as npy
+
+def processdata(md,data,options):
+    """
+    PROCESSDATA - process data to be plotted
+    
+    	datatype = 1 -> elements
+    	datatype = 2 -> nodes
+    	datatype = 3 -> node quivers
+    	datatype = 4 -> patch
+    
+    	Usage:
+    		data,datatype=processdata(md,data,options);
+    
+    	See also: PLOTMODEL, PROCESSMESH
+    """
+    
+    #check format
+    if (len(data)==0 or (len(data)==1 and not isinstance(data,dict) and isnan(data).all())):
+        raise ValueError("processdata error message: 'data' provided is empty")
+    
+    #needed later on
+    if 'numberofvertices2d' in dir(md.mesh):
+    	numberofvertices2d=md.mesh.numberofvertices2d
+    	numberofelements2d=md.mesh.numberofelements2d
+    else:
+    	numberofvertices2d=npy.nan
+    	numberofelements2d=npy.nan
+    
+    procdata=npy.copy(data)
+    
+    #process patch
+    
+    #initialize datatype
+    datatype=0
+    
+    #get datasize
+    if npy.ndim(procdata)==1:
+    	datasize=npy.array([len(procdata),1])
+    else:
+    	datasize=npy.shape(procdata)
+        if len(datasize)>2:
+            raise ValueError('data passed to plotmodel has more than 2 dimensions; check that column vectors are rank-1')
+    
+    #process NaN's if any
+    nanfill=options.getfieldvalue('nan',-9999)
+    if npy.any(npy.isnan(procdata)):
+    	lb=npy.min(data[~npy.isnan(data)])
+    	ub=npy.max(data[~npy.isnan(data)])
+    	if lb==ub:
+    	    lb=lb-0.5
+    	    ub=ub+0.5
+    	    nanfill=lb-1
+    	procdata[npy.isnan(procdata)]=nanfill
+    	options.addfielddefault('clim',[lb,ub])
+    	options.addfielddefault('cmap_set_under','1')
+    	print(("WARNING: nan's treated as", nanfill, "by default.  Change using pairoption 'nan',nan_fill_value in plotmodel call"))
+    
+    #quiver plot
+    if datasize[1]>1 and datasize[0]!= md.mesh.numberofvertices+1:
+        if datasize[0]==md.mesh.numberofvertices and datasize[1]==2:
+            datatype=3
+        else:
+            raise ValueError('plotmodel error message: data should have two columns of length md.mesh.numberofvertices for a quiver plot')
+    
+    #non-patch processing 
+    
+    #element data
+    if datasize[0]==md.mesh.numberofelements and datasize[1]==1:
+    	
+    	#initialize datatype if non patch
+    	if datatype!=4 and datatype!=5:
+    	    datatype=1
+    
+    	#mask?
+    
+    	#log?
+    
+    #node data
+    if datasize[0]==md.mesh.numberofvertices and datasize[1]==1:
+    	datatype=2
+    
+    #spc time series? 
+    if datasize[0]==md.mesh.numberofvertices+1:
+    	datatype=2
+        spccol=options.getfieldvalue('spccol',0)
+        print('multiple-column spc field; specify column to plot using option "spccol"')
+        print(('column ', spccol, ' plotted for time: ', procdata[-1,spccol]))
+        procdata=procdata[0:-1,spccol]
+    
+    	#mask?
+    
+    	#log?
+    
+    #layer projection?
+    
+    #control arrow density if quiver plot
+    
+    #convert rank-2 array to rank-1
+    if npy.ndim(procdata)==2 and npy.shape(procdata)[1]==1:
+    	procdata=procdata.reshape(-1,)
+    
+    #if datatype is still zero, error out
+    if datatype==0:
+    	raise ValueError("processdata error: data provided not recognized or not supported")
+    else:
+    	return procdata, datatype
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/processmesh.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/processmesh.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/processmesh.py	(revision 21239)
@@ -0,0 +1,83 @@
+from math import isnan
+import MatlabFuncs as m
+import numpy as npy
+
+def processmesh(md,data,options):
+	"""
+	PROCESSMESH - process the mesh for plotting
+
+	Usage:
+		x,y,z,elements,is2d=processmech(md,data,options)
+
+	See also: PLOTMODEL, PROCESSDATA
+	"""
+
+	#some checks
+	if md.mesh.numberofvertices==0:
+		raise ValueError('processmesh error: mesh is empty')
+	if md.mesh.numberofvertices==md.mesh.numberofelements:
+		raise ValueError('processmesh error: the number of elements is the same as the number of nodes')
+
+	if len(data)==0 or not isinstance(data,dict):
+		
+		if 'latlon' not in options.getfieldvalue('coord','xy').lower(): #convert to lower case for comparison
+			x=md.mesh.x
+			if 'x2d' in dir(md.mesh): x2d=md.mesh.x2d
+			y=md.mesh.y
+			if 'y2d' in dir(md.mesh): y2d=md.mesh.x2d
+		else:
+			x=md.mesh.long
+			y=md.mesh.lat
+
+		if 'z' in dir(md.mesh):
+			z=md.mesh.z
+		else:
+			z=npy.zeros_like(md.mesh.x)
+		
+		if 'elements2d' in dir(md.mesh): 
+			elements2d=md.mesh.elements2d
+			elements2d=elements2d-1  # subtract one since python indexes from zero
+		elements=md.mesh.elements
+		elements=elements-1
+
+		#is it a 2D plot?
+		if md.mesh.dimension()==2:
+			is2d=1
+		else:
+			if options.getfieldvalue('layer',0)>=1:
+				is2d=1
+			else:
+				is2d=0
+
+		#layer projection?
+		if options.getfieldvalue('layer',0)>=1:
+			 if 'latlon' in options.getfieldvalue('coord','xy').lower():
+				 raise ValueError('processmesh error: cannot work with 3D mesh in lat-lon coords')
+			#we modify the mesh temporarily to a 2D mesh from which the 3D mesh was extruded
+			 x=x2d
+			 y=y2d
+			 z=zeros(size(x2d))
+			 elements=elements2d
+	
+	else:
+		#Process mesh for plotting 
+		if md.mesh.dimension()==2:
+			is2d=1
+		else:
+			# process polycollection here for 3D plot
+			is2d=0
+	
+	#units
+	if options.exist('unit'):
+		unit=options.getfieldvalue('unit')
+		x=x*unit
+		y=y*unit
+		z=z*unit
+
+	#is model a member of planet class? (workaround until planet class defined)
+	if md.__class__.__name__!='model':
+		isplanet=1
+	else:
+		isplanet=0
+
+	return x,y,z,elements,is2d,isplanet
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/writejsfield.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/writejsfield.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/writejsfield.py	(revision 21239)
@@ -0,0 +1,26 @@
+import numpy
+def writejsfield(fid,name,variable,nods):
+#WRITEJSFIELD - write variable to javascript file 
+#
+#   Usage:
+#      writejsfield(fid,name,variable)
+#
+	#write array:
+	#if not isinstance(variable, list):
+	if type(variable[0])==numpy.float64:
+		fid.write('<!-- {0}{{{{{{-->\n'.format(name))
+		fid.write('{0}=['.format(name))
+		for i in range(0, nods-1):
+			fid.write('{0},'.format(variable[i]))
+		fid.write('{0}];\n'.format(variable[-1]))
+		fid.write('<!--}}}}}}-->\n')
+	else:
+		#multi-sized array: 
+		fid.write('<!-- {0}{{{{{{-->\n'.format(name))
+		fid.write('{0}=[]\n'.format(name))
+		for i in range(0, len(variable[2])):
+			fid.write('{0}["{1}"]=['.format(name,i))
+			for j in range(1, nods-1):
+				fid.write('{0},'.format(variable[j][i]))
+			fid.write('{0}];\n'.format(variable[-1][i]))
+		fid.write('<!--}}}}}}-->\n')
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/writejsfile.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/writejsfile.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/plot/writejsfile.py	(revision 21239)
@@ -0,0 +1,57 @@
+import numpy
+from writejsfield import writejsfield
+def writejsfile(filename,model,keyname):
+#WRITEJSFILE - write model file to javascript database
+#
+#   Usage:
+#      writejsfile(filename,model,keyname)
+#
+
+	nods=len(model.x)
+	nel=len(model.index)
+	nx=len(model.contourx1)
+	print(filename)	
+	fid=open(filename,'w', 0)
+
+	fid.write('model = {};\n')
+	fid.write('model["title"]="{0}";\n'.format(model.title))
+	fid.write('model["initialZoomFactor"]={0};\n'.format(model.initialZoomFactor))
+	#write index:
+	fid.write('<!-- model["index"]{{{-->\n')
+	fid.write('model["index"]=[')
+	for i in range(0, nel-1):
+		fid.write('[{0}, {1}, {2}],'.format(model.index[i][0],model.index[i][1],model.index[i][2]))
+	fid.write('[{0}, {1}, {2}]];\n'.format(model.index[-1][0],model.index[-1][1],model.index[-1][2]))
+	fid.write('<!--}}}-->\n')
+	print('writing model coordinates')
+	writejsfield(fid,'model["x"]',model.x,nods)
+	writejsfield(fid,'model["y"]',model.y,nods)
+	writejsfield(fid,'model["z"]',model.z,nods)
+	writejsfield(fid,'model["surface"]',model.surface,nods)
+	writejsfield(fid,'model["contourx1"]',model.contourx1,nx)
+	writejsfield(fid,'model["contoury1"]',model.contoury1,nx)
+	writejsfield(fid,'model["contourz1"]',model.contourz1,nx)
+	writejsfield(fid,'model["contourx2"]',model.contourx2,nx)
+	writejsfield(fid,'model["contoury2"]',model.contoury2,nx)
+	writejsfield(fid,'model["contourz2"]',model.contourz2,nx)
+
+	print('writing results')
+	results=model.results
+	fid.write('results={};\n')
+
+	for i in range(0,len(results)):
+		fid.write('result={};\n')
+		writejsfield(fid,'result["data"]',results[i].data,nods)
+		fid.write('<!--{{{-->\n')
+		fid.write('result["caxis"]=[{0},{1}];\n'.format(results[i].caxis[0],results[i].caxis[1]))
+		fid.write('result["label"]="{0}";\n'.format(results[i].label))
+		fid.write('result["shortlabel"]="{0}";\n'.format(results[i].shortlabel))
+		fid.write('result["unit"]="{0}";\n'.format(results[i].unit))
+		if type(results[i].data)==numpy.float64:
+			fid.write('result["time_range"]=[{0},{1}];\n'.format(results[i].time_range[0],results[i].time_range[1]))
+		fid.write('results["{0}"]=result;\n'.format(i))
+		fid.write('<!--}}}-->\n')
+	fid.write('model.results=results;\n')
+	fid.write('models["{0}"]=model;\n'.format(keyname))
+
+	fid.close()
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/shp/shp2exp.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/shp/shp2exp.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/shp/shp2exp.py	(revision 21239)
@@ -0,0 +1,50 @@
+import shapefile
+import os
+from expwrite import expwrite
+
+def shp2exp(shapefilename,*expfilename):
+	'''
+	Convert a shapefile to an .exp file.  Optionally, expfilename can be
+	specified to give a name for the .exp file to be created, otherwise the
+	.exp file will have the same prefix as the .shp file.
+
+	Usage:
+		shp2exp(shapefilename)
+		shp2exp(shapefilename,expfilename)
+
+	Examples:
+		shp2exp('Domain.shp') % creates Domain.exp
+		shp2exp('Domain.shp','DomainForISSM.exp')
+	'''
+	
+	if not os.path.exists(shapefilename):
+		raise IOError("shp2exp error message: file '%s' not found!" % parametername)
+	if not len(expfilename):
+		expfile=os.path.splitext(shapefilename)[0]+'.exp'
+	else:
+		expfile=expfilename[0]
+
+	shp=shapefile.Reader(shapefilename)
+	expdict=dict(closed=1,density=1)
+
+	x=[]
+	y=[]
+	for i in range(len(shp.shapes())):
+		geom=shp.shapes()[i].shapeType
+		if geom==5: # polygon
+			tmpx=[p[0] for p in shp.shapes()[i].points]
+			tmpy=[q[1] for q in shp.shapes()[i].points]
+			x.append(tmpx)
+			y.append(tmpy)
+		elif geom==3: # line
+			tmpx=[p[0] for p in shp.shapes()[i].points]
+			tmpy=[q[1] for q in shp.shapes()[i].points]
+			x.append(tmpx)
+			y.append(tmpy)
+		elif geom==1: # point
+			x.append(shp.shapes()[i].points[0][0])
+			y.append(shp.shapes()[i].points[0][1])
+
+	expdict['x']=x
+	expdict['y']=y
+	expwrite(expdict,expfile)
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/WriteData.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/WriteData.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/WriteData.py	(revision 21239)
@@ -0,0 +1,344 @@
+import numpy
+import math
+import struct
+import pairoptions
+import MatlabFuncs as m
+from EnumDefinitions import *
+from EnumToString import EnumToString
+
+def WriteData(fid,**kwargs):
+	"""
+	WRITEDATA - write model field in binary file
+ 
+	   Usage:
+	      WriteData(fid,varargin)
+	"""
+
+	#process options
+	options=pairoptions.pairoptions(**kwargs)
+
+	#Get data properties
+	if options.exist('object'):
+		#This is an object field, construct enum and data
+		obj       = options.getfieldvalue('object')
+		fieldname = options.getfieldvalue('fieldname')
+		classname = options.getfieldvalue('class',str(type(obj)).rsplit('.')[-1].split("'")[0])
+		if options.exist('enum'):
+			enum = options.getfieldvalue('enum')
+		else:
+			enum = BuildEnum(classname+'_'+fieldname)
+		data      = getattr(obj,fieldname)
+	else:
+		#No processing required
+		data = options.getfieldvalue('data')
+		enum = options.getfieldvalue('enum')
+	format  = options.getfieldvalue('format')
+	mattype = options.getfieldvalue('mattype',0)    #only required for matrices
+	timeserieslength = options.getfieldvalue('timeserieslength',-1)
+
+	#Process sparse matrices
+#	if issparse(data),
+#		data=full(data);
+#	end
+
+	#Scale data if necesarry
+	if options.exist('scale'):
+		scale = options.getfieldvalue('scale')
+		if numpy.size(data) > 1 :
+			if numpy.size(data,0)==timeserieslength:
+				data=numpy.array(data)
+				data[0:-1,:] = scale*data[0:-1,:]
+			else:
+				data  = scale*data
+		else:
+			data  = scale*data
+	if numpy.size(data) > 1 :
+		if numpy.size(data,0)==timeserieslength:
+			yts=365.0*24.0*3600.0
+			data[-1,:] = yts*data[-1,:]
+
+	#Step 1: write the enum to identify this record uniquely
+	fid.write(struct.pack('i',enum)) 
+
+	#Step 2: write the data itself.
+	if   m.strcmpi(format,'Boolean'):    # {{{
+#		if len(data) !=1:
+#			raise ValueError('field %s cannot be marshalled as it has more than one element!' % EnumToString(enum)[0])
+
+		#first write length of record
+		fid.write(struct.pack('i',4+4))  #1 bool (disguised as an int)+code
+
+		#write data code: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+
+		#now write integer
+		fid.write(struct.pack('i',int(data)))  #send an int, not easy to send a bool
+		# }}}
+
+	elif m.strcmpi(format,'Integer'):    # {{{
+#		if len(data) !=1:
+#			raise ValueError('field %s cannot be marshalled as it has more than one element!' % EnumToString(enum)[0])
+
+		#first write length of record
+		fid.write(struct.pack('i',4+4))  #1 integer + code
+
+		#write data code: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+
+		#now write integer
+		fid.write(struct.pack('i',data)) 
+		# }}}
+
+	elif m.strcmpi(format,'Double'):    # {{{
+#		if len(data) !=1:
+#			raise ValueError('field %s cannot be marshalled as it has more than one element!' % EnumToString(enum)[0])
+
+		#first write length of record
+		fid.write(struct.pack('i',8+4))  #1 double+code
+
+		#write data code: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+
+		#now write double
+		fid.write(struct.pack('d',data)) 
+		# }}}
+
+	elif m.strcmpi(format,'String'):    # {{{
+		#first write length of record
+		fid.write(struct.pack('i',len(data)+4+4))  #string + string size + code
+
+		#write data code: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+
+		#now write string
+		fid.write(struct.pack('i',len(data))) 
+		fid.write(struct.pack('%ds' % len(data),data)) 
+		# }}}
+
+	elif m.strcmpi(format,'BooleanMat'):    # {{{
+
+		if   isinstance(data,bool):
+			data=numpy.array([data])
+		elif isinstance(data,(list,tuple)):
+			data=numpy.array(data).reshape(-1,1)
+		if numpy.ndim(data) == 1:
+			if numpy.size(data):
+				data=data.reshape(numpy.size(data),1)
+			else:
+				data=data.reshape(0,0)
+
+		#Get size
+		s=data.shape
+		#if matrix = NaN, then do not write anything
+		if s[0]==1 and s[1]==1 and math.isnan(data[0][0]):
+			s=(0,0)
+
+		#first write length of record
+		fid.write(struct.pack('i',4+4+8*s[0]*s[1]+4+4))    #2 integers (32 bits) + the double matrix + code + matrix type
+
+		#write data code and matrix type: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+		fid.write(struct.pack('i',mattype))
+
+		#now write matrix
+		fid.write(struct.pack('i',s[0])) 
+		fid.write(struct.pack('i',s[1])) 
+		for i in range(s[0]):
+			for j in range(s[1]):
+				fid.write(struct.pack('d',float(data[i][j])))    #get to the "c" convention, hence the transpose
+		# }}}
+
+	elif m.strcmpi(format,'IntMat'):    # {{{
+
+		if   isinstance(data,int):
+			data=numpy.array([data])
+		elif isinstance(data,(list,tuple)):
+			data=numpy.array(data).reshape(-1,1)
+		if numpy.ndim(data) == 1:
+			if numpy.size(data):
+				data=data.reshape(numpy.size(data),1)
+			else:
+				data=data.reshape(0,0)
+
+		#Get size
+		s=data.shape
+		#if matrix = NaN, then do not write anything
+		if s[0]==1 and s[1]==1 and math.isnan(data[0][0]):
+			s=(0,0)
+
+		#first write length of record
+		fid.write(struct.pack('i',4+4+8*s[0]*s[1]+4+4))    #2 integers (32 bits) + the double matrix + code + matrix type
+
+		#write data code and matrix type: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+		fid.write(struct.pack('i',mattype))
+
+		#now write matrix
+		fid.write(struct.pack('i',s[0])) 
+		fid.write(struct.pack('i',s[1])) 
+		for i in range(s[0]):
+			for j in range(s[1]):
+				fid.write(struct.pack('d',float(data[i][j])))    #get to the "c" convention, hence the transpose
+		# }}}
+
+	elif m.strcmpi(format,'DoubleMat'):    # {{{
+
+		if   isinstance(data,(bool,int,float)):
+			data=numpy.array([data])
+		elif isinstance(data,(list,tuple)):
+			data=numpy.array(data).reshape(-1,1)
+		if numpy.ndim(data) == 1:
+			if numpy.size(data):
+				data=data.reshape(numpy.size(data),1)
+			else:
+				data=data.reshape(0,0)
+
+		#Get size
+		s=data.shape
+		#if matrix = NaN, then do not write anything
+		if s[0]==1 and s[1]==1 and math.isnan(data[0][0]):
+			s=(0,0)
+
+		#first write length of record
+		recordlength=4+4+8*s[0]*s[1]+4+4; #2 integers (32 bits) + the double matrix + code + matrix type
+		if recordlength > 2**31 :
+			raise ValueError('field %s cannot be marshalled because it is larger than 4^31 bytes!' % EnumToString(enum)[0])
+
+		fid.write(struct.pack('i',recordlength))  #2 integers (32 bits) + the double matrix + code + matrix type
+
+		#write data code and matrix type: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+		fid.write(struct.pack('i',mattype))
+
+		#now write matrix
+		fid.write(struct.pack('i',s[0])) 
+		fid.write(struct.pack('i',s[1])) 
+		for i in range(s[0]):
+			for j in range(s[1]):
+				fid.write(struct.pack('d',float(data[i][j])))    #get to the "c" convention, hence the transpose
+		# }}}
+
+	elif m.strcmpi(format,'MatArray'):    # {{{
+
+		#first get length of record
+		recordlength=4+4    #number of records + code
+		for matrix in data:
+			if   isinstance(matrix,(bool,int,float)):
+				matrix=numpy.array([matrix])
+			elif isinstance(matrix,(list,tuple)):
+				matrix=numpy.array(matrix).reshape(-1,1)
+			if numpy.ndim(matrix) == 1:
+				if numpy.size(matrix):
+					matrix=matrix.reshape(numpy.size(matrix),1)
+				else:
+					matrix=matrix.reshape(0,0)
+
+			s=matrix.shape
+			recordlength+=4*2+s[0]*s[1]*8    #row and col of matrix + matrix of doubles
+
+		#write length of record
+		fid.write(struct.pack('i',recordlength)) 
+
+		#write data code: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+
+		#write data, first number of records
+		fid.write(struct.pack('i',len(data))) 
+
+		#write each matrix: 
+		for matrix in data:
+			if   isinstance(matrix,(bool,int,float)):
+				matrix=numpy.array([matrix])
+			elif isinstance(matrix,(list,tuple)):
+				matrix=numpy.array(matrix).reshape(-1,1)
+			if numpy.ndim(matrix) == 1:
+				matrix=matrix.reshape(numpy.size(matrix),1)
+
+			s=matrix.shape
+			fid.write(struct.pack('i',s[0])) 
+			fid.write(struct.pack('i',s[1])) 
+			for i in range(s[0]):
+				for j in range(s[1]):
+					fid.write(struct.pack('d',float(matrix[i][j])))
+		# }}}
+
+	elif m.strcmpi(format,'StringArray'):    # {{{
+
+		#first get length of record
+		recordlength=4+4    #for length of array + code
+		for string in data:
+			recordlength+=4+len(string)    #for each string
+
+		#write length of record
+		fid.write(struct.pack('i',recordlength)) 
+
+		#write data code: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+
+		#now write length of string array
+		fid.write(struct.pack('i',len(data))) 
+
+		#now write the strings
+		for string in data:
+			fid.write(struct.pack('i',len(string))) 
+			fid.write(struct.pack('%ds' % len(string),string)) 
+		# }}}
+
+	else:    # {{{
+		raise TypeError('WriteData error message: data type: %d not supported yet! (%s)' % (format,EnumToString(enum)[0]))
+	# }}}
+
+def BuildEnum(string): # {{{
+	"""
+	BUILDENUM - build enum out of string
+ 
+    Usage:
+       enum=BuildEnum(string)
+	"""
+
+	if '_' in string:
+		substrs=string.split('_')
+		string=''
+		for substr in substrs:
+			string+=substr[0].upper()+substr[1:]
+	else:
+		#take first letter of string and make it uppercase: 
+		string=string[0].upper()+string[1:]
+
+	#Get Enum
+	enum=StringToEnum(string)[0]
+
+	return enum
+# }}}
+
+def FormatToCode(format): # {{{
+	"""
+	This routine takes the format string, and hardcodes it into an integer, which 
+	is passed along the record, in order to identify the nature of the dataset being 
+	sent.
+	"""
+
+	if   m.strcmpi(format,'Boolean'):
+		code=1
+	elif m.strcmpi(format,'Integer'):
+		code=2
+	elif m.strcmpi(format,'Double'):
+		code=3
+	elif m.strcmpi(format,'String'):
+		code=4
+	elif m.strcmpi(format,'BooleanMat'):
+		code=5
+	elif m.strcmpi(format,'IntMat'):
+		code=6
+	elif m.strcmpi(format,'DoubleMat'):
+		code=7
+	elif m.strcmpi(format,'MatArray'):
+		code=8
+	elif m.strcmpi(format,'StringArray'):
+		code=9
+	else:
+		raise InputError('FormatToCode error message: data type not supported yet!')
+
+	return code
+# }}}
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/loadresultsfromcluster.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/loadresultsfromcluster.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/loadresultsfromcluster.py	(revision 21239)
@@ -0,0 +1,69 @@
+import os
+import socket
+import platform
+from loadresultsfromdisk import loadresultsfromdisk
+
+def loadresultsfromcluster(md,runtimename=False):
+	"""
+	LOADRESULTSFROMCLUSTER - load results of solution sequence from cluster
+ 
+	   Usage:
+	      md=loadresultsfromcluster(md,runtimename);
+	"""
+
+	#retrieve cluster, to be able to call its methods
+	cluster=md.cluster
+
+	if runtimename:
+		md.private.runtimename=runtimename
+
+	#Download outputs from the cluster
+	filelist=[md.miscellaneous.name+'.outlog',md.miscellaneous.name+'.errlog']
+	if md.qmu.isdakota:
+		filelist.append(md.miscellaneous.name+'.qmu.err')
+		filelist.append(md.miscellaneous.name+'.qmu.out')
+		if 'tabular_graphics_data' in md.qmu.params:
+			if md.qmu.params['tabular_graphics_data']:
+				filelist.append('dakota_tabular.dat')
+	else:
+		filelist.append(md.miscellaneous.name+'.outbin')
+	cluster.Download(md.private.runtimename,filelist)
+
+	#If we are here, no errors in the solution sequence, call loadresultsfromdisk.
+	md=loadresultsfromdisk(md,md.miscellaneous.name+'.outbin')
+
+	#erase the log and output files
+	if md.qmu.isdakota:
+		filename=os.path.join('qmu'+str(os.getpid()),md.miscellaneous.name)
+	else:
+		filename=md.miscellaneous.name
+		TryRem('.outbin',filename)
+		if not platform.system()=='Windows':
+			TryRem('.tar.gz',md.private.runtimename)
+
+	TryRem('.errlog',filename)
+	TryRem('.outlog',filename)
+	
+	#erase input file if run was carried out on same platform.
+	hostname=socket.gethostname()
+	if hostname==cluster.name:
+		if md.qmu.isdakota:
+			filename=os.path.join('qmu'+str(os.getpid()),md.miscellaneous.name)
+			TryRem('.queue',filename)
+		else:
+			filename=md.miscellaneous.name
+			TryRem('.toolkits',filename)
+			if not platform.system()=='Windows':
+				TryRem('.queue',filename)
+			else:
+				TryRem('.bat',filename)
+
+		TryRem('.bin',filename)
+
+	return md
+
+def TryRem(extension,filename):
+	try:	
+		os.remove(filename+extension)
+	except OSError:
+		print('WARNING, no '+extension+'  is present for run '+filename)
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/loadresultsfromdisk.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/loadresultsfromdisk.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/loadresultsfromdisk.py	(revision 21239)
@@ -0,0 +1,67 @@
+import os
+from results import results
+from parseresultsfromdisk import parseresultsfromdisk
+from EnumToString import EnumToString
+import MatlabFuncs as m
+
+def loadresultsfromdisk(md,filename):
+	"""
+	LOADRESULTSFROMDISK - load results of solution sequence from disk file "filename"            
+ 
+	   Usage:
+	      md=loadresultsfromdisk(md=False,filename=False);
+	"""
+
+	#check number of inputs/outputs
+	if not md or not filename:
+		raise ValueError("loadresultsfromdisk: error message.")
+
+	if not md.qmu.isdakota:
+
+		#Check that file exists
+		if not os.path.exists(filename):
+			raise OSError("binary file '%s' not found." % filename)
+
+		#initialize md.results if not a structure yet
+		if not isinstance(md.results,results):
+			md.results=results()
+
+		#load results onto model
+		structure=parseresultsfromdisk(filename,not md.settings.io_gather)
+		if not len(structure):
+			raise RuntimeError("No result found in binary file '%s'. Check for solution crash." % filename)
+		setattr(md.results,structure[0].SolutionType,structure)
+
+		#recover solution_type from results
+		md.private.solution=structure[0].SolutionType
+
+		#read log files onto fields
+		if os.path.exists(md.miscellaneous.name+'.errlog'):
+			with open(md.miscellaneous.name+'.errlog','r') as f:
+				setattr(getattr(md.results,structure[0].SolutionType)[0],'errlog',[line[:-1] for line in f])
+		else:
+			setattr(getattr(md.results,structure[0].SolutionType)[0],'errlog',[])
+
+		if os.path.exists(md.miscellaneous.name+'.outlog'):
+			with open(md.miscellaneous.name+'.outlog','r') as f:
+				setattr(getattr(md.results,structure[0].SolutionType)[0],'outlog',[line[:-1] for line in f])
+		else:
+			setattr(getattr(md.results,structure[0].SolutionType)[0],'outlog',[])
+
+		if len(getattr(md.results,structure[0].SolutionType)[0].errlog):
+			print ("loadresultsfromcluster info message: error during solution. Check your errlog and outlog model fields.")
+
+		#if only one solution, extract it from list for user friendliness
+		if len(structure) == 1 and not m.strcmp(structure[0].SolutionType,'TransientSolution'):
+			setattr(md.results,structure[0].SolutionType,structure[0])
+
+	#post processes qmu results if necessary
+	else:
+
+		if not isinstance(md.private.solution,str):
+			[md.private.solution]=EnumToString(md.private.solution)
+		md=postqmu(md)
+		os.chdir('..')
+
+	return md
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/marshall.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/marshall.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/marshall.py	(revision 21239)
@@ -0,0 +1,52 @@
+from WriteData import WriteData
+from EnumDefinitions import *
+
+def marshall(md):
+	"""
+	MARSHALL - outputs a compatible binary file from @model md, for certain solution type.
+
+	   The routine creates a compatible binary file from @model md
+	   This binary file will be used for parallel runs in JPL-package
+
+	   Usage:
+	      marshall(md)
+	"""
+
+	print("marshalling file '%s.bin'." % md.miscellaneous.name)
+
+	#open file for binary writing
+	try:
+		fid=open(md.miscellaneous.name+'.bin','wb')
+	except IOError as e:
+		raise IOError("marshall error message: could not open '%s.bin' file for binary writing." % md.miscellaneous.name)
+
+	#First, write MaximumNumberOfEnum to make sure that the Enums are synchronized
+	WriteData(fid,'enum',MaximumNumberOfDefinitionsEnum(),'data',True,'format','Boolean')
+
+	#Go through all model fields: check that it is a class and call checkconsistency
+	fields=vars(md)
+
+#	for field in fields.iterkeys():
+	for field in md.properties():
+
+		#Some properties do not need to be marshalled
+		if field in ['results','radaroverlay','toolkits','cluster','flaim','private']:
+			continue
+
+		#Check that current field is an object
+		if not hasattr(getattr(md,field),'marshall'):
+			raise TypeError("field '%s' is not an object." % field)
+
+		#Marshall current object
+		#print "marshalling %s ..." % field
+		exec("md.%s.marshall(md,fid)" % field)
+
+	#Last, write MaximumNumberOfEnum+1 to make sure that the binary file is not corrupt
+	WriteData(fid,'enum',MaximumNumberOfDefinitionsEnum()+1,'data',True,'format','Boolean');
+
+	#close file
+	try:
+		fid.close()
+	except IOError as e:
+		raise IOError("marshall error message: could not close file '%s.bin'." % md.miscellaneous.name)
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/parseresultsfromdisk.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/parseresultsfromdisk.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/parseresultsfromdisk.py	(revision 21239)
@@ -0,0 +1,275 @@
+import struct
+import numpy
+from collections import OrderedDict
+import results as resultsclass
+import MatlabFuncs as m
+
+def parseresultsfromdisk(filename,iosplit):
+	"""
+	PARSERESULTSFROMDISK - ...
+
+	   Usage:
+	      results=parseresultsfromdisk(filename,iosplit)
+	"""
+
+	if iosplit:
+		results=parseresultsfromdiskiosplit(filename)
+	else:
+		results=parseresultsfromdiskioserial(filename)
+
+	return results
+
+def parseresultsfromdiskioserial(filename):    # {{{
+	"""
+	PARSERESULTSFROMDISK - ...
+	 
+	    Usage:
+	       results=parseresultsfromdiskioserial(filename)
+	"""
+
+	#Open file
+	try:
+		fid=open(filename,'rb')
+	except IOError as e:
+		raise IOError("loadresultsfromdisk error message: could not open '%s' for binary reading." % filename)
+
+	#initialize results: 
+	results=[]
+	results.append(None)
+
+	#Read fields until the end of the file.
+	result=ReadData(fid)
+
+	counter=0
+	check_nomoresteps=0
+	step=result['step']
+
+	while result:
+
+		if check_nomoresteps:
+			#check that the new result does not add a step, which would be an error: 
+			if result['step']>=1:
+				raise TypeError("parsing results for a steady-state core, which incorporates transient results!")
+
+		#Check step, increase counter if this is a new step
+		if(step!=result['step'] and result['step']>1):
+			counter = counter + 1
+			step    = result['step']
+
+		#Add result
+		if result['step']==0:
+			#if we have a step = 0, this is a steady state solution, don't expect more steps. 
+			index = 0;
+			check_nomoresteps=1
+	
+		elif result['step']==1:
+			index = 0
+		else:
+			index = counter;
+	
+		if index > len(results)-1:
+			for i in range(len(results)-1,index-1):
+				results.append(None)
+			results.append(resultsclass.results())
+		
+		elif results[index] is None:
+			results[index]=resultsclass.results()
+
+			
+		#Get time and step
+		if result['step'] != -9999.:
+			setattr(results[index],'step',result['step'])
+		if result['time'] != -9999.:
+			setattr(results[index],'time',result['time']) 
+	
+		#Add result
+		if hasattr(results[index],result['fieldname']) and not m.strcmp(result['fieldname'],'SolutionType'):
+			setattr(results[index],result['fieldname'],numpy.vstack((getattr(results[index],result['fieldname']),result['field'])))
+		else:
+			setattr(results[index],result['fieldname'],result['field'])
+
+		#read next result
+		result=ReadData(fid)
+
+	fid.close()
+
+	return results
+	# }}}
+def parseresultsfromdiskiosplit(filename):    # {{{
+	"""
+	PARSERESULTSFROMDISKIOSPLIT - ...
+	 
+	    Usage:
+	       results=parseresultsfromdiskiosplit(filename)
+	"""
+
+	#Open file
+	try:
+		fid=open(filename,'rb')
+	except IOError as e:
+		raise IOError("loadresultsfromdisk error message: could not open '%s' for binary reading." % filename)
+
+	results=[]
+
+	#if we have done split I/O, ie, we have results that are fragmented across patches, 
+	#do a first pass, and figure out the structure of results
+	result=ReadDataDimensions(fid)
+	while result:
+
+		#Get time and step
+		if result['step'] > len(results):
+			for i in range(len(results),result['step']-1):
+				results.append(None)
+			results.append(resultsclass.results())
+		setattr(results[result['step']-1],'step',result['step'])
+		setattr(results[result['step']-1],'time',result['time']) 
+
+		#Add result
+		setattr(results[result['step']-1],result['fieldname'],float('NaN'))
+
+		#read next result
+		result=ReadDataDimensions(fid)
+
+	#do a second pass, and figure out the size of the patches
+	fid.seek(0)    #rewind
+	result=ReadDataDimensions(fid)
+	while result:
+
+		#read next result
+		result=ReadDataDimensions(fid)
+
+	#third pass, this time to read the real information
+	fid.seek(0)    #rewind
+	result=ReadData(fid)
+	while result:
+
+		#Get time and step
+		if result['step']> len(results):
+			for i in range(len(results),result['step']-1):
+				results.append(None)
+			results.append(resultsclass.results())
+		setattr(results[result['step']-1],'step',result['step'])
+		setattr(results[result['step']-1],'time',result['time']) 
+
+		#Add result
+		setattr(results[result['step']-1],result['fieldname'],result['field'])
+
+		#read next result
+		result=ReadData(fid)
+
+	#close file
+	fid.close()
+
+	return results
+	# }}}
+def ReadData(fid):    # {{{
+	"""
+	READDATA - ...
+	 
+	    Usage:
+	       field=ReadData(fid)
+	"""
+
+	#read field
+	try:
+		length=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+
+		fieldname=struct.unpack('%ds' % length,fid.read(length))[0][:-1]
+		time=struct.unpack('d',fid.read(struct.calcsize('d')))[0]
+		step=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+
+		type=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+		M=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+		if   type==1:
+			field=numpy.array(struct.unpack('%dd' % M,fid.read(M*struct.calcsize('d'))),dtype=float)
+		elif type==2:
+			field=struct.unpack('%ds' % M,fid.read(M))[0][:-1]
+		elif type==3:
+			N=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+#			field=transpose(fread(fid,[N M],'double'));
+			field=numpy.zeros(shape=(M,N),dtype=float)
+			for i in range(M):
+				field[i,:]=struct.unpack('%dd' % N,fid.read(N*struct.calcsize('d')))
+		else:
+			raise TypeError("cannot read data of type %d" % type)
+
+		#Process units here FIXME: this should not be done here!
+		yts=365.0*24.0*3600.0
+		if m.strcmp(fieldname,'BalancethicknessThickeningRate'):
+			field = field*yts
+		elif m.strcmp(fieldname,'Time'):
+			field = field/yts
+		elif m.strcmp(fieldname,'HydrologyWaterVx'):
+			field = field*yts
+		elif m.strcmp(fieldname,'HydrologyWaterVy'):
+			field = field*yts
+		elif m.strcmp(fieldname,'Vx'):
+			field = field*yts
+		elif m.strcmp(fieldname,'Vy'):
+			field = field*yts
+		elif m.strcmp(fieldname,'Vz'):
+			field = field*yts
+		elif m.strcmp(fieldname,'Vel'):
+			field = field*yts
+		elif m.strcmp(fieldname,'BasalforcingsGroundediceMeltingRate'):
+			field = field*yts
+		elif m.strcmp(fieldname,'TotalSmb'):
+			field = field/10.**12.*yts #(GigaTon/year)
+		elif m.strcmp(fieldname,'SmbMassBalance'):
+			field = field*yts
+		elif m.strcmp(fieldname,'CalvingCalvingrate'):
+			field = field*yts
+
+
+		result=OrderedDict()
+		result['fieldname']=fieldname
+		result['time']=time
+		result['step']=step
+		result['field']=field
+
+	except struct.error as e:
+		result=None
+
+	return result
+	# }}}
+def ReadDataDimensions(fid):    # {{{
+	"""
+	READDATADIMENSIONS - read data dimensions, step and time, but not the data itself.
+	 
+	    Usage:
+	       field=ReadDataDimensions(fid)
+	"""
+
+	#read field
+	try:
+		length=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+
+		fieldname=struct.unpack('%ds' % length,fid.read(length))[0][:-1]
+		time=struct.unpack('d',fid.read(struct.calcsize('d')))[0]
+		step=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+
+		type=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+		M=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+		N=1    #default
+		if   type==1:
+			fid.seek(M*8,1)
+		elif type==2:
+			fid.seek(M,1)
+		elif type==3:
+			N=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+			fid.seek(N*M*8,1)
+		else:
+			raise TypeError("cannot read data of type %d" % type)
+
+		result=OrderedDict()
+		result['fieldname']=fieldname
+		result['time']=time
+		result['step']=step
+		result['M']=M
+		result['N']=N
+
+	except struct.error as e:
+		result=None
+
+	return result
+	# }}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/solve.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/solve.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/solve.py	(revision 21239)
@@ -0,0 +1,132 @@
+import datetime
+import os
+import shutil
+from pairoptions import pairoptions
+from EnumDefinitions import *
+from EnumToString import EnumToString
+from ismodelselfconsistent import ismodelselfconsistent
+from marshall import marshall
+from waitonlock import waitonlock
+from loadresultsfromcluster import loadresultsfromcluster
+import MatlabFuncs as m
+
+def solve(md,solutionenum,**kwargs):
+	"""
+	SOLVE - apply solution sequence for this model
+ 
+	   Usage:
+	      md=solve(md,solutionenum,varargin)
+	      where varargin is a list of paired arguments of string OR enums
+ 
+	   solution types available comprise:
+	      - StressbalanceSolutionEnum
+	      - MasstransportSolutionEnum
+	      - ThermalSolutionEnum
+	      - SteadystateSolutionEnum
+	      - TransientSolutionEnum
+	      - BalancethicknessSolutionEnum
+	      - BedSlopeSolutionEnum
+	      - SurfaceSlopeSolutionEnum
+	      - HydrologySolutionEnum
+	      - FlaimSolutionEnum
+ 
+	   extra options:
+	      - loadonly : does not solve. only load results
+		  - checkconsistency : 'yes' or 'no' (default is 'yes'), ensures checks on consistency of model
+		  - restart: 'directory name (relative to the execution directory) where the restart file is located.
+ 
+	   Examples:
+	      md=solve(md,StressbalanceSolutionEnum);
+	"""
+
+	#recover and process solve options
+	if EnumToString(solutionenum)[0][-8:] != 'Solution':
+		raise ValueError("solutionenum '%s' not supported!" % EnumToString(solutionenum)[0])
+	options=pairoptions(solutionenum=solutionenum,**kwargs)
+
+	#recover some fields
+	md.private.solution=solutionenum
+	cluster=md.cluster
+
+	#check model consistency
+	if m.strcmpi(options.getfieldvalue('checkconsistency','yes'),'yes'):
+		print("checking model consistency")
+		if solutionenum == FlaimSolutionEnum():
+			md.private.isconsistent=True
+			md.mesh.checkconsistency(md,solutionenum)
+			md.flaim.checkconsistency(md,solutionenum)
+			if not md.private.isconsistent:
+				raise RuntimeError("Model not consistent, see messages above.")
+		else:
+			ismodelselfconsistent(md)
+
+	#First, build a runtime name that is unique
+	restart=options.getfieldvalue('restart','')
+	if restart == 1:
+		pass #do nothing
+	else:
+		if restart:
+			md.private.runtimename=restart
+		else:
+			if options.getfieldvalue('runtimename',True):
+				c=datetime.datetime.now()
+				md.private.runtimename="%s-%02i-%02i-%04i-%02i-%02i-%02i-%i" % (md.miscellaneous.name,c.month,c.day,c.year,c.hour,c.minute,c.second,os.getpid())
+			else:
+				md.private.runtimename=md.miscellaneous.name 
+
+	#if running qmu analysis, some preprocessing of dakota files using models
+	#fields needs to be carried out. 
+	if md.qmu.isdakota:
+		md=preqmu(md,options)
+
+	#flaim analysis
+	if solutionenum == FlaimSolutionEnum():
+		md=flaim_sol(md,options)
+		[md.private.solution]=EnumToString(solutionenum)
+		return md
+
+	#Do we load results only?
+	if options.getfieldvalue('loadonly',False):
+		md=loadresultsfromcluster(md)
+		return md
+
+
+	#Write all input files
+	marshall(md)                                           # bin file
+	md.toolkits.ToolkitsFile(md.miscellaneous.name+'.toolkits')    # toolkits file
+	cluster.BuildQueueScript(md.private.runtimename,md.miscellaneous.name,md.private.solution,md.settings.io_gather,md.debug.valgrind,md.debug.gprof,md.qmu.isdakota)    # queue file
+
+	#Stop here if batch mode
+	if m.strcmpi(options.getfieldvalue('batch','no'),'yes'):
+		print('batch mode requested: not launching job interactively')
+		print('launch solution sequence on remote cluster by hand')
+		return md
+
+	#Upload all required files: 
+	modelname = md.miscellaneous.name
+	filelist  = [modelname+'.bin ',modelname+'.toolkits ',modelname+'.queue ']
+	if md.qmu.isdakota:
+		filelist.append(modelname+'.qmu.in')
+
+	if not restart:
+		cluster.UploadQueueJob(md.miscellaneous.name,md.private.runtimename,filelist)
+	
+	#Launch job
+	cluster.LaunchQueueJob(md.miscellaneous.name,md.private.runtimename,filelist,restart)
+
+	#wait on lock
+	if md.settings.waitonlock>0:
+		#we wait for the done file
+		islock=waitonlock(md)
+		if islock==0:    #no results to be loaded
+			print('The results must be loaded manually with md=loadresultsfromcluster(md).')
+		else:            #load results
+			print('loading results from cluster')
+			md=loadresultsfromcluster(md)
+
+	#post processes qmu results if necessary
+	if md.qmu.isdakota:
+		if not strncmpi(options['keep'],'y',1):
+			shutil.rmtree('qmu'+str(os.getpid()))
+
+	return md
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/waitonlock.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/waitonlock.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solve/waitonlock.py	(revision 21239)
@@ -0,0 +1,64 @@
+import os
+from socket import gethostname
+import time
+import MatlabFuncs as m
+
+def waitonlock(md):
+	"""
+	WAITONLOCK - wait for a file
+ 
+	   This routine will return when a file named 'filename' is written to disk.
+	   If the time limit given in input is exceeded, return 0
+ 
+	   Usage:
+	      flag=waitonlock(md)
+	"""
+
+	#Get filename (lock file) and options
+	executionpath=md.cluster.executionpath
+	cluster=md.cluster.name
+	login=md.cluster.login
+	port=md.cluster.port
+	timelimit=md.settings.waitonlock
+	filename=os.path.join(executionpath,md.private.runtimename,md.miscellaneous.name+'.lock')
+
+	#waitonlock will work if the lock is on the same machine only: 
+	if not m.strcmpi(gethostname(),cluster):
+
+		print('solution launched on remote cluster. log in to detect job completion.')
+		choice=input('Is the job successfully completed? (y/n) ')
+		if not m.strcmp(choice,'y'): 
+			print('Results not loaded... exiting') 
+			flag=0
+		else:
+			flag=1
+
+	#job is running on the same machine
+	else:
+
+		if 'interactive' in vars(md.cluster) and md.cluster.interactive:
+			#We are in interactive mode, no need to check for job completion
+			flag=1
+			return flag
+		#initialize time and file presence test flag
+		etime=0
+		ispresent=0
+		print("waiting for '%s' hold on... (Ctrl+C to exit)" % filename)
+
+		#loop till file .lock exist or time is up
+		while ispresent==0 and etime<timelimit:
+			ispresent=os.path.exist(filename)
+			time.sleep(1)
+			etime+=1/60
+
+		#build output
+		if etime>timelimit:
+			print('Time limit exceeded. Increase md.settings.waitonlock')
+			print('The results must be loaded manually with md=loadresultsfromcluster(md).')
+			raise RuntimeError('waitonlock error message: time limit exceeded.')
+			flag=0
+		else:
+			flag=1
+
+	return flag
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/asmoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/asmoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/asmoptions.py	(revision 21239)
@@ -0,0 +1,29 @@
+import pairoptions
+
+def asmoptions(*args):
+	#ASMOPTIONS - return ASM petsc options
+	#
+	#   Usage:
+	#      options=asmoptions;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(**kwargs) 
+	
+	options=[['toolkit','petsc'],['mat_type','aij'],['ksp_type','gmres'],['pc_type','asm'],['sub_pc_type','lu'],['pc_asm_overlap',3],['ksp_max_it',100],['ksp_rtol',1e-30]];
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/iluasmoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/iluasmoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/iluasmoptions.py	(revision 21239)
@@ -0,0 +1,27 @@
+from collections import OrderedDict
+import pairoptions
+
+def iluasmoptions(*args):
+	"""
+	ILUASMOPTIONS - 
+
+	   Usage:
+	      options=iluasmoptions;
+	"""
+			 
+	#retrieve options provided in varargin
+	options=pairoptions.pairoptions(**kwargs)
+	iluasm=OrderedDict()
+
+	#default iluasm options
+	iluasm['toolkit']='petsc'
+	iluasm['mat_type']=options.getfieldvalue('mat_type','aij')
+	iluasm['ksp_type']=options.getfieldvalue('ksp_type','gmres')
+	iluasm['pc_type']=options.getfieldvalue('pc_type','asm')
+	iluasm['sub_pc_type']=options.getfieldvalue('sub_pc_type','ilu')
+	iluasm['pc_asm_overlap']=options.getfieldvalue('pc_asm_overlap',5)
+	iluasm['ksp_max_it']=options.getfieldvalue('ksp_max_it',100)
+	iluasm['ksp_rtol']=options.getfieldvalue('ksp_rtol',1e-15)
+
+	return iluasm
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/issmgslsolver.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/issmgslsolver.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/issmgslsolver.py	(revision 21239)
@@ -0,0 +1,29 @@
+import pairoptions
+
+def issmgslsolver(**kwargs):
+	#ISSMSOLVE - return issm solver options
+	#
+	#   Usage:
+	#      options=issmsolver;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(**kwargs) 
+	
+	options=[['toolkit','issm'],['mat_type','dense'],['vec_type','seq'],['solver_type','gsl']];
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/issmmumpssolver.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/issmmumpssolver.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/issmmumpssolver.py	(revision 21239)
@@ -0,0 +1,29 @@
+import pairoptions
+
+def issmmumpssolver(**kwargs):
+	#ISSMSOLVE - return issm solver options
+	#
+	#   Usage:
+	#      options=issmsolver;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(**kwargs) 
+	
+	options=[['toolkit','issm'],['mat_type','mpidense'],['vec_type','mpi'],['solver_type','mumps']];
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/jacobiasmoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/jacobiasmoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/jacobiasmoptions.py	(revision 21239)
@@ -0,0 +1,29 @@
+import pairoptions
+
+def jacobiasmoptions(**kwargs):
+	#ASMOPTIONS - return Additive Shwartz Method with Jacobi preconditioner petsc options
+	#
+	#   Usage:
+	#      options=jacobiasmoptions;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(**kwargs) 
+	
+	options=[['toolkit','petsc'],['mat_type','aij'],['ksp_type','gmres'],['pc_type','asm'],['sub_pc_type','jacobi'],['pc_asm_overlap',3],['ksp_max_it',100],['ksp_rtol',1e-15]];
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/jacobicgoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/jacobicgoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/jacobicgoptions.py	(revision 21239)
@@ -0,0 +1,29 @@
+import pairoptions 
+
+def jacobicgoptions(*args):
+	#ASMOPTIONS - return Additive Shwartz Method with Jacobi preconditioner petsc options
+	#
+	#   Usage:
+	#      options=jacobicgoptions;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(**kwargs) 
+	
+	options=[['toolkit','petsc'],['mat_type','aij'],['ksp_type','cg'],['ksp_max_it',100],['ksp_rtol',1e-15]];
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/matlaboptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/matlaboptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/matlaboptions.py	(revision 21239)
@@ -0,0 +1,29 @@
+import pairoptions
+
+def matlaboptions(**kwargs):
+	#MATLABOPTIONS - return Matlab petsc options
+	#
+	#   Usage:
+	#      options=matlaboptions;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(**kwargs) 
+	
+	options=[['toolkit','petsc'],['ksp_type','matlab']];
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/mumpsoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/mumpsoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/mumpsoptions.py	(revision 21239)
@@ -0,0 +1,36 @@
+from collections import OrderedDict
+import pairoptions
+from IssmConfig import IssmConfig
+
+def mumpsoptions(**kwargs):
+	"""
+	MUMPSOPTIONS - return MUMPS direct solver  petsc options
+
+	   Usage:
+	      options=mumpsoptions;
+	"""
+
+	#retrieve options provided in varargin
+	options=pairoptions.pairoptions(**kwargs)
+	mumps=OrderedDict()
+
+	#default mumps options
+	PETSC_VERSION=IssmConfig('_PETSC_MAJOR_')[0]
+	if PETSC_VERSION==2.:
+		mumps['toolkit']='petsc'
+		mumps['mat_type']=options.getfieldvalue('mat_type','aijmumps')
+		mumps['ksp_type']=options.getfieldvalue('ksp_type','preonly')
+		mumps['pc_type']=options.getfieldvalue('pc_type','lu')
+		mumps['mat_mumps_icntl_14']=options.getfieldvalue('mat_mumps_icntl_14',120)
+		mumps['pc_factor_shift_positive_definite']=options.getfieldvalue('pc_factor_shift_positive_definite','true')
+	if PETSC_VERSION==3.:
+		mumps['toolkit']='petsc'
+		mumps['mat_type']=options.getfieldvalue('mat_type','mpiaij')
+		mumps['ksp_type']=options.getfieldvalue('ksp_type','preonly')
+		mumps['pc_type']=options.getfieldvalue('pc_type','lu')
+		mumps['pc_factor_mat_solver_package']=options.getfieldvalue('pc_factor_mat_solver_package','mumps')
+		mumps['mat_mumps_icntl_14']=options.getfieldvalue('mat_mumps_icntl_14',120)
+		mumps['pc_factor_shift_positive_definite']=options.getfieldvalue('pc_factor_shift_positive_definite','true')
+
+	return mumps
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/soroptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/soroptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/soroptions.py	(revision 21239)
@@ -0,0 +1,29 @@
+import pairoptions
+
+def soroptions(**kwargs):
+	#SOROPTIONS - return Relaxation Solver petsc options
+	#
+	#   Usage:
+	#      options=soroptions;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(**kwargs) 
+	
+	options=[['toolkit','petsc'],['mat_type','aij'],['ksp_type','cg'],['pc_type','sor'],['pc_sor_omega',1.1],['pc_sor_its',2]];
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/stokesoptions.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/stokesoptions.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/solvers/stokesoptions.py	(revision 21239)
@@ -0,0 +1,39 @@
+import pairoptions
+from IssmConfig import IssmConfig
+
+def stokesoptions(**kwargs):
+	#STOKESOPTIONS - return STOKES multi-physics solver petsc options
+	#
+	#   Usage:
+	#      options=stokesoptions;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(**kwargs) 
+
+
+	#default stokes options
+	PETSC_VERSION=IssmConfig('_PETSC_MAJOR_')[0]
+
+	if PETSC_VERSION==2.:
+		raise RuntimeError('stokesoptions error message: multi-physics options not supported in Petsc 2')
+	if PETSC_VERSION==3.:
+		options=[['toolkit','petsc'],['mat_type','mpiaij'],['ksp_max_it',1000],['ksp_type','gmres'],['pc_type','fieldsplit'],['pc_field_split_type','schur'],\
+	['fieldsplit_0_pc_type','hypre'],['fieldsplit_0_ksp_type','gmres'],['fieldsplit_0_pc_hypre_type','boomerang'],\
+	['fieldsplit_1_pc_type','jacobi'],['fieldsplit_1_ksp_type','preonly'],['issm_option_solver','stokes']]
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/test.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/test.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/test.txt	(revision 21239)
@@ -0,0 +1,1 @@
+truc
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/py3/tmp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/py3/tmp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/py3/tmp	(revision 21239)
@@ -0,0 +1,425 @@
+
+md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1)
+md = checkfield(md,'fieldname','friction.coefficientcoulomb','timeseries',1,'NaN',1)
+md = checkfield(md,'fieldname','friction.q','NaN',1,'size',[md.mesh.numberofelements])
+md = checkfield(md,'fieldname','friction.p','NaN',1,'size',[md.mesh.numberofelements])
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)
+    md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
+    md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
+    md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
+    md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices])
+    md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
+    md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
+    md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
+    md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)
+    md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
+    md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
+    md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
+    md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'timeseries',1,'>=',0)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+      md = checkfield(md,fieldname,options);
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/BamgConvertMesh/BamgConvertMesh.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/BamgConvertMesh/BamgConvertMesh.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/BamgConvertMesh/BamgConvertMesh.cpp	(revision 21239)
@@ -0,0 +1,64 @@
+/*\file BamgConvertMesh.c
+ *\brief: bamg module.
+ */
+#include "./BamgConvertMesh.h"
+
+void BamgConvertMeshUsage(void){/*{{{*/
+	_printf0_("BAMGCONVERTMESH - convert [x y index] to a bamg geom and mesh geom");
+	_printf0_("\n");
+	_printf0_("   Usage:\n");
+	_printf0_("      [bamggeom bamgmesh]=BamgConvertMesh(index,x,y)\n");
+	_printf0_("      index: index of the mesh\n");
+	_printf0_("      x,y: coordinates of the nodes\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(BamgConvertMesh_python){
+
+	/*input: */
+	int    *index      = NULL;
+	double *x          = NULL;
+	double *y          = NULL;
+	int     nods,nels,test1,test2;
+
+	/*Output*/
+	BamgMesh *bamgmesh = NULL;
+	BamgGeom *bamggeom = NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	CHECKARGUMENTS(NLHS,NRHS,&BamgConvertMeshUsage);
+
+	/*Initialize Bamg outputs*/
+	bamggeom=new BamgGeom();
+	bamgmesh=new BamgMesh();
+
+	/*Input datasets: */
+	FetchData(&index,&nels,&test1,INDEXHANDLE);
+	FetchData(&x,&nods,XHANDLE);
+	FetchData(&y,&test2,YHANDLE);
+
+	/*Check inputs*/
+	if(nels<0) _error_("Number of elements must be positive, check index number of lines");
+	if(nods<0) _error_("Number of nods must be positive, check x and y sizes");
+	if(test1!=3) _error_("index should have 3 columns");
+	if(test2!=nods) _error_("x and y do not have the same length");
+
+	/* Run core computations: */
+	BamgConvertMeshx(bamgmesh,bamggeom,index,x,y,nods,nels);
+
+	/*Generate output Matlab Structures*/
+	WriteData(BAMGGEOMOUT,bamggeom);
+	WriteData(BAMGMESHOUT,bamgmesh);
+
+	/*Clean up*/
+	xDelete<int>(index);
+	xDelete<double>(x);
+	xDelete<double>(y);
+	delete bamggeom;
+	delete bamgmesh;
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/BamgConvertMesh/BamgConvertMesh.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/BamgConvertMesh/BamgConvertMesh.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/BamgConvertMesh/BamgConvertMesh.h	(revision 21239)
@@ -0,0 +1,54 @@
+/*!\file BamgConvertMesh.h
+ * \brief: prototype for Data Interpolation mex module.
+ */
+
+#ifndef _BAMGCONVERTMESH_H
+#define _BAMGCONVERTMESH_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../../c/shared/io/io.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "BamgConvertMesh"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define INDEXHANDLE prhs[0]
+#define XHANDLE     prhs[1]
+#define YHANDLE     prhs[2]
+/* serial output macros: */
+#define BAMGMESHOUT    (mxArray**)&plhs[0]
+#define BAMGGEOMOUT    (mxArray**)&plhs[1]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define INDEXHANDLE PyTuple_GetItem(args,0)
+#define XHANDLE     PyTuple_GetItem(args,1)
+#define YHANDLE     PyTuple_GetItem(args,2)
+/* serial output macros: */
+#define BAMGMESHOUT    output,0
+#define BAMGGEOMOUT    output,1
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  2
+#undef NRHS
+#define NRHS  3
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/BamgMesher/BamgMesher.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/BamgMesher/BamgMesher.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/BamgMesher/BamgMesher.cpp	(revision 21239)
@@ -0,0 +1,51 @@
+/*\file BamgMesher.c
+ *\brief: mesher that uses the bamg library
+ */
+#include "./BamgMesher.h"
+
+void BamgMesherUsage(void){/*{{{*/
+	_printf0_("\n");
+	_printf0_("   usage: [bamgmesh,bamggeom]=" << __FUNCT__ << "(bamgmesh,bamggeom,bamgoptions)\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(BamgMesher_python){
+
+	/*Intermediary*/
+	BamgOpts *bamgopts     = NULL;
+	BamgMesh *bamgmesh_in  = NULL;
+	BamgGeom *bamggeom_in  = NULL;
+	BamgMesh *bamgmesh_out = NULL;
+	BamgGeom *bamggeom_out = NULL;
+
+	/*Boot module*/
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	CHECKARGUMENTS(NLHS,NRHS,&BamgMesherUsage);
+
+	/*Initialize outputs*/
+	bamggeom_out=new BamgGeom();
+	bamgmesh_out=new BamgMesh();
+
+	/*Fetch inputs: */
+	FetchData(&bamgopts,BAMGOPTIONS);
+	FetchData(&bamggeom_in,BAMGGEOMIN);
+	FetchData(&bamgmesh_in,BAMGMESHIN);
+
+	/*Call x layer*/
+	Bamgx(bamgmesh_out,bamggeom_out,bamgmesh_in,bamggeom_in,bamgopts);
+
+	/*Generate output Matlab Structures*/
+	WriteData(BAMGGEOMOUT,bamggeom_out);
+	WriteData(BAMGMESHOUT,bamgmesh_out);
+
+	/*Free ressources: */
+	delete bamgopts;
+	delete bamggeom_in;
+	delete bamggeom_out;
+	delete bamgmesh_in;
+	delete bamgmesh_out;
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/BamgMesher/BamgMesher.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/BamgMesher/BamgMesher.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/BamgMesher/BamgMesher.h	(revision 21239)
@@ -0,0 +1,53 @@
+/*
+	BamgMesher.h
+*/
+
+#ifndef _BAMG_MESHER_H_
+#define _BAMG_MESHER_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "BamgMesher"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define BAMGMESHIN  prhs[0]
+#define BAMGGEOMIN  prhs[1]
+#define BAMGOPTIONS prhs[2]
+/* serial output macros: */
+#define BAMGMESHOUT (mxArray**)&plhs[0]
+#define BAMGGEOMOUT (mxArray**)&plhs[1]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define BAMGMESHIN  PyTuple_GetItem(args,0)
+#define BAMGGEOMIN  PyTuple_GetItem(args,1)
+#define BAMGOPTIONS PyTuple_GetItem(args,2)
+/* serial output macros: */
+#define BAMGMESHOUT output,0
+#define BAMGGEOMOUT output,1
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  2
+#undef NRHS
+#define NRHS  3
+
+#endif  /* _BAMG_MESHER_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/BamgTriangulate/BamgTriangulate.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/BamgTriangulate/BamgTriangulate.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/BamgTriangulate/BamgTriangulate.cpp	(revision 21239)
@@ -0,0 +1,62 @@
+/*\file BamgTriangulate.c
+ *\brief: bamg module.
+ */
+#include "./BamgTriangulate.h"
+
+void BamgTriangulateUsage(void){/*{{{*/
+	_printf0_("BAMGTRIANGULATE - Delaunay Triangulation of a list of points");
+	_printf0_("\n");
+	_printf0_("   Usage:\n");
+	_printf0_("      index=BamgTriangulate(x,y);\n");
+	_printf0_("      index: index of the triangulation\n");
+	_printf0_("      x,y: coordinates of the nodes\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(BamgTriangulate_python){
+
+	/*input: */
+	double* x=NULL;
+	double* y=NULL;
+	int     x_cols;
+	int     y_rows,y_cols;
+	int     nods;
+
+	/*Output*/
+	int* index=NULL;
+	int  nels;
+
+	/*Intermediary*/
+	int verbose=0;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	/* CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&BamgTriangulateUsage); */
+	CHECKARGUMENTS(NLHS,NRHS,&BamgTriangulateUsage);
+
+	/*Input datasets: */
+	if (verbose) _printf_("Fetching inputs\n");
+	FetchData(&x,&nods,&x_cols,XHANDLE);
+	FetchData(&y,&y_rows,&y_cols,YHANDLE);
+
+	/*Check inputs*/
+	if(y_rows!=nods)         _error_("x and y do not have the same length");
+	if(x_cols>1 || y_cols>1) _error_("x and y should have only one column");
+	if(nods<3)               _error_("At least 3 points are required");
+
+	/* Run core computations: */
+	if (verbose) _printf_("Call core\n");
+	BamgTriangulatex(&index,&nels,x,y,nods);
+
+	/*Write output*/
+	WriteData(INDEX,index,nels,3);
+
+	/*Clean up*/
+	xDelete<int>(index);
+	xDelete<double>(x);
+	xDelete<double>(y);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/BamgTriangulate/BamgTriangulate.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/BamgTriangulate/BamgTriangulate.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/BamgTriangulate/BamgTriangulate.h	(revision 21239)
@@ -0,0 +1,51 @@
+/*!\file BamgTriangulate.h
+ * \brief: prototype for Data Interpolation mex module.
+ */
+
+#ifndef _BAMGTRIANGULATE_H
+#define _BAMGTRIANGULATE_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "BamgTriangulate"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define XHANDLE prhs[0]
+#define YHANDLE prhs[1]
+
+/* serial output macros: */
+#define INDEX (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define XHANDLE PyTuple_GetItem(args,0)
+#define YHANDLE PyTuple_GetItem(args,1)
+
+/* serial output macros: */
+#define INDEX output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  2
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Chaco/Chaco.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Chaco/Chaco.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Chaco/Chaco.cpp	(revision 21239)
@@ -0,0 +1,135 @@
+/*\file Chaco.c
+ *\brief:  Chaco partitioner mex module
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Chaco.h"
+
+void ChacoUsage(void){/*{{{*/
+	_printf0_("\n");
+	_printf0_("Usage: [assgn] = Chaco(A,vwgts,ewgts,x,y,z,options,nparts,goal);\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(Chaco_python){
+
+	int i;
+	int nterms;
+
+	/*Inputs: */
+	int     nvtxs;               /* number of vertices in graph           */
+	int    *start;               /* start of edge list for each vertex    */
+	int    *adjacency;           /* edge list data                        */
+	int    *vwgts       = NULL;  /* weights for all vertices              */
+	int     nedges;
+	float  *ewgts       = NULL;  /* weights for all edges                 */
+	float  *x           = NULL;
+	float  *y           = NULL;
+	float  *z           = NULL;  /* coordinates for inertial method       */
+	double  options[10] = {1,1,0,0,1,1,50,0,.001,7654321}; /* architecture and partitioning options */
+	double *in_options  = NULL;
+	int    *nparts      = NULL;   /* number of parts options               */
+	int     npart;
+	double *goal        = NULL;   /* desired set sizes                     */
+
+	/*intermediary pointers: */
+	mwIndex *mwstart, *mwadjacency;
+	double  *doublepointer;
+
+	/*output: */
+   short  *assignment       = NULL; /* set number of each vtx (length nvtxs+1)                */
+   double *doubleassignment = NULL; /*holds assignment, in double format, to return to matlab */
+
+	#ifndef _HAVE_CHACO_ //only works if dakota library has been compiled in.
+	_error_("Chaco not available! Cannot carry out Chaco partitioning!");
+	#endif
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&ChacoUsage);
+
+	/*Fetch adjacency matrix: */
+	nvtxs = mxGetN(A_IN);
+	mwstart = mxGetJc(A_IN);
+	start=xNew<int>((nvtxs+1));
+	for (i=0; i<nvtxs+1;i++)start[i]=(int)mwstart[i];
+
+	mwadjacency = mxGetIr(A_IN);
+	adjacency = xNew<int>(mxGetNzmax(A_IN));
+	for (i=0; i<mxGetNzmax(A_IN); i++) adjacency[i]= (int)mwadjacency[i];
+
+	nedges = start[nvtxs];
+	if(!mxIsEmpty(EWGTS_IN)){
+		ewgts = xNewZeroInit<float>(nedges);
+		doublepointer=mxGetPr(A_IN);
+		for (i = 0; i < nedges; i++)ewgts[i] = (float)doublepointer[i];
+	}
+	else ewgts=NULL;
+
+	/*Fetch rest of data: */
+	FetchData(&vwgts,&nterms,VWGTS_IN); 
+	FetchData(&x,&nterms,X_IN); 
+	FetchData(&y,&nterms,Y_IN); 
+	FetchData(&z,&nterms,Z_IN); 
+	FetchData(&in_options,&nterms,OPTNS_IN); 
+	for (i=0;i<(nterms<10?nterms:10);i++) options[i]=in_options[i]; //copy in_options into default options
+	FetchData(&npart,NPARTS_IN); 
+	nparts=xNew<int>(1); nparts[0]=npart; //weird Chacox interface ain't it?
+	FetchData(&goal,&nterms,GOAL_IN); 
+
+	/*Some debugging print: {{{*/
+	#ifdef _DEBUG_
+	_printf_("nvtxs: " << nvtxs << "\n");
+	_printf_("options: [");
+	for(i=0;i<10;i++)_printf_(options[i] << "|");
+	_printf_("]\n");
+	_printf_("start: \n");
+	for (i=0; i<nvtxs+1;i++)_printf_(start[i] << " ");
+	_printf_("\n");
+	_printf_("adjacency: \n");
+	for (i=0; i<mxGetNzmax(A_IN);i++)_printf_("" <<adjacency[i]<< " ");i++)
+	_printf_("\n");
+	_printf_("nedges: " << nedges << " " << ewgts << "\n");
+	if(ewgts) for (i = 0; i < nedges; i++)_printf_(ewgts[i] << " ");
+	_printf_("\n");
+	_printf_("vwgts:\n");
+	for (i = 0; i < nvtxs; i++)_printf_(vwgts[i] << " ");
+	_printf_("\n");
+	_printf_("nparts: " << nparts[0] << "\n");
+	_printf_("goal: " << goal << "\n");
+	#endif
+	/*}}}*/
+
+	/*Allocate output: */
+	assignment = xNewZeroInit<short>(nvtxs);
+
+    /*Call core: */
+	Chacox(nvtxs, start, adjacency, vwgts, ewgts, x, y, z, assignment, options, nparts, goal);
+
+    /*Output data: */
+	doubleassignment=xNew<double>(nvtxs);
+	for(i=0;i<nvtxs;i++) doubleassignment[i]=(double)assignment[i];
+	WriteData(ASSGN_OUT,doubleassignment,nvtxs);
+
+	/*Free ressources:*/
+	xDelete<short>(assignment); 
+	xDelete<double>(goal);
+	xDelete<int>(nparts);
+	xDelete<float>(z);
+	xDelete<float>(y);
+	xDelete<float>(x);
+	xDelete<float>(ewgts);
+	xDelete<int>(vwgts);
+	xDelete<int>(adjacency);
+	xDelete<int>(start);
+	xDelete<double>(doubleassignment);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Chaco/Chaco.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Chaco/Chaco.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Chaco/Chaco.h	(revision 21239)
@@ -0,0 +1,67 @@
+/*!\file:  Chaco.h
+ * \brief header file for Chaco module.
+ */ 
+
+#ifndef _CHACO_H
+#define _CHACO_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+/*headers*/
+#include "../bindings.h" /*Should always come first to avoid python's warnings*/
+#include <stdio.h>
+#include <string.h>    /*  strcasecmp  */
+#include <time.h>      /*  clock,time,difftime  */
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "Chaco"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define A_IN      prhs[0]
+#define VWGTS_IN  prhs[1]
+#define EWGTS_IN  prhs[2]
+#define X_IN      prhs[3]
+#define Y_IN      prhs[4]
+#define Z_IN      prhs[5]
+#define OPTNS_IN  prhs[6]
+#define NPARTS_IN prhs[7]
+#define GOAL_IN   prhs[8]
+/* serial output macros: */
+#define ASSGN_OUT (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define A_IN      PyTuple_GetItem(args,0)
+#define VWGTS_IN  PyTuple_GetItem(args,1)
+#define EWGTS_IN  PyTuple_GetItem(args,2)
+#define X_IN      PyTuple_GetItem(args,3)
+#define Y_IN      PyTuple_GetItem(args,4)
+#define Z_IN      PyTuple_GetItem(args,5)
+#define OPTNS_IN  PyTuple_GetItem(args,6)
+#define NPARTS_IN PyTuple_GetItem(args,7)
+#define GOAL_IN   PyTuple_GetItem(args,8)
+/* serial output macros: */
+#define ASSGN_OUT output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  9
+
+#endif  /* _CHACO_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ContourToMesh/ContourToMesh.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ContourToMesh/ContourToMesh.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ContourToMesh/ContourToMesh.cpp	(revision 21239)
@@ -0,0 +1,85 @@
+/*! \file  ContourtoMesh
+    \brief: takes an  contour file, and figures out which nodes or elements from the mesh  
+    are inside this contour. 
+*/
+
+#include "./ContourToMesh.h"
+
+void ContourToMeshUsage(void){/*{{{*/
+	_printf_("CONTOURTOMESH - Flag the elements or nodes inside a contour\n");
+	_printf_("\n");
+	_printf_("      Usage: \n");
+	_printf_("         [in_nod,in_elem]=ContourToMesh(index,x,y,contourname,interptype,edgevalue)\n");
+	_printf_("\n");
+	_printf_("         index,x,y: mesh triangulation.\n");
+	_printf_("         contourname: name of .exp file containing the contours.\n");
+	_printf_("         interptype: string definining type of interpolation ('element', or 'node').\n");
+	_printf_("         edgevalue: integer (0, 1 or 2) defining the value associated to the nodes on the edges of the polygons.\n");
+	_printf_("         in_nod: vector of flags (0 or 1), of size nods if interptype is set to 'node' or 'element and node', \n");
+	_printf_("            or of size 0 otherwise.\n");
+	_printf_("         in_elem: vector of flags (0 or 1), of size nel if interptype is set to 'element' or 'element and node', \n");
+	_printf_("            or of size 0 otherwise.\n");
+	_printf_("\n");
+	_printf_("      Example: \n");
+	_printf_("         in_nod=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','node',1)\n");
+	_printf_("         in_elements=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element',0)\n");
+	_printf_("         [in_nodes,in_elements]=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element and node',0)\n");
+	_printf_("\n");
+}/*}}}*/
+WRAPPER(ContourToMesh_python){
+
+	/* required input: */
+	int       edgevalue;
+	int       nel,nods;
+	double   *index       = NULL;
+	double   *x           = NULL;
+	double   *y           = NULL;
+	char     *interptype  = NULL;
+	Contours *contours    = NULL;
+
+	/* output: */
+	double *in_nod  = NULL;
+	double *in_elem = NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on output arguments on the matlab side: */
+	#ifdef _HAVE_MATLAB_MODULES_
+	if(nlhs!=1 && nlhs!=2){
+		ContourToMeshUsage();
+		_error_("usage. See above");
+	}
+	#endif
+	/*check on input arguments: */
+	if(nrhs!=NRHS){
+		ContourToMeshUsage();
+		_error_("usage. See above");
+	}
+
+	/*Fetch inputs: */
+	FetchData(&index,&nel,NULL,INDEX);
+	FetchData(&x,&nods,NULL,X);
+	FetchData(&y,NULL,NULL,Y);
+	FetchData(&edgevalue,EDGEVALUE);
+	FetchData(&contours,CONTOUR);
+	FetchData(&interptype,INTERPTYPE);
+
+	/*Run interpolation routine: */
+	ContourToMeshx( &in_nod,&in_elem,index,x,y,contours,interptype,nel,nods,edgevalue);
+
+	/* output: */
+	WriteData(PLHS0,in_nod,nods);
+	WriteData(PLHS1,in_elem,nel);
+
+	/*Clean up*/
+	xDelete<double>(index);
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<char>(interptype);
+	delete contours;
+	xDelete<double>(in_nod);
+	xDelete<double>(in_elem);
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ContourToMesh/ContourToMesh.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ContourToMesh/ContourToMesh.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ContourToMesh/ContourToMesh.h	(revision 21239)
@@ -0,0 +1,77 @@
+/*
+	ContourToMesh.h
+*/
+
+#ifndef _CONTOURTOMESH_H
+#define _CONTOURTOMESH_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+/*Header files: */
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/toolkits/toolkits.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../../c/shared/io/io.h"
+
+#undef __FUNCT__
+#define __FUNCT__ "ContourToMesh"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define INDEX       prhs[0]
+#define X           prhs[1]
+#define Y           prhs[2]
+#define CONTOUR     prhs[3]
+#define INTERPTYPE  prhs[4]
+#define EDGEVALUE   prhs[5]
+/* serial output macros: */
+#define PLHS0 (mxArray**)&plhs[0]
+#define PLHS1 (mxArray**)&plhs[1]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define INDEX       PyTuple_GetItem(args,0)
+#define X           PyTuple_GetItem(args,1)
+#define Y           PyTuple_GetItem(args,2)
+#define CONTOUR     PyTuple_GetItem(args,3)
+#define INTERPTYPE  PyTuple_GetItem(args,4)
+#define EDGEVALUE   PyTuple_GetItem(args,5)
+/* serial output macros: */
+#define PLHS0 output,0
+#define PLHS1 output,1
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define INDEX       indexin,nelin,3
+#define X           xin,nodsin,1
+#define Y           yin,nodsin,1
+#define CONTOUR     contourx,contoury,contour_nods
+#define INTERPTYPE  interptypein
+#define EDGEVALUE   valuein
+#define WRAPPER(modulename) extern "C" { int  ContourToMeshModule(double** pin_nod, double** pin_nel, double* indexin, double* xin, double* yin, double* contourx, double* contoury, char* interptypein, int nelin, int nodsin, int contour_nods, double valuein)
+/* serial output macros: */
+#define PLHS0 pin_nod,NULL
+#define PLHS1 pin_nel,NULL
+#define nrhs 6
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  2
+#undef NRHS
+#define NRHS 6
+
+#endif  /* _CONTOURTOMESH_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ContourToMesh/ContourToMesh.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ContourToMesh/ContourToMesh.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ContourToMesh/ContourToMesh.js	(revision 21239)
@@ -0,0 +1,95 @@
+function ContourToMesh(indexin,xin,yin,contour,interptype,edgevalue){
+/* CONTOURTOMESH - Flag the elements or nodes inside a contour;
+	
+	      Usage: ;
+	         [in_nod,in_elem]=ContourToMesh(index,x,y,contourname,interptype,edgevalue);
+	
+	         index,x,y: mesh triangulation
+	         contourname: name of .exp file containing the contours
+	         interptype: string definining type of interpolation ('element', or 'node')
+	         edgevalue: integer (0, 1 or 2) defining the value associated to the nodes on the edges of the polygons.
+	         in_nod: vector of flags (0 or 1), of size nods if interptype is set to 'node' or 'element and node',
+	            or of size 0 otherwise.
+	         in_elem: vector of flags (0 or 1), of size nel if interptype is set to 'element' or 'element and node', 
+	            or of size 0 otherwise.
+	
+	      Example: 
+	         in_nod=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','node',1)
+	         in_elements=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element',0)
+	         return_values=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element and node',0); in_nodes=return_values[0]; in_elements=return_values[1];
+*/
+
+	//Dynamic allocations: {{{
+	//Retrieve elements and allocate on Module heap: 
+	
+	//input
+	
+	var dindex=new Int32Array(MatrixToList(indexin)); var nindex=dindex.length * dindex.BYTES_PER_ELEMENT;
+	var dindexPtr= Module._malloc(nindex); var indexHeap = new Uint8Array(Module.HEAPU8.buffer,dindexPtr,nindex);
+	indexHeap.set(new Uint8Array(dindex.buffer)); var index=indexHeap.byteOffset;
+
+	var dx=new Float64Array(xin); var nx=dx.length * dx.BYTES_PER_ELEMENT;
+	var dxPtr= Module._malloc(nx); var dxHeap = new Uint8Array(Module.HEAPU8.buffer,dxPtr,nx);
+	dxHeap.set(new Uint8Array(dx.buffer)); var x=dxHeap.byteOffset;
+	
+	var dy=new Float64Array(yin); var ny=dy.length * dy.BYTES_PER_ELEMENT;
+	var dyPtr= Module._malloc(nx); var dyHeap = new Uint8Array(Module.HEAPU8.buffer,dyPtr,ny);
+	dyHeap.set(new Uint8Array(dy.buffer)); var y=dyHeap.byteOffset;
+	
+	var dcontourx=new Float64Array(contour['x']); var nx=dcontourx.length * dcontourx.BYTES_PER_ELEMENT;
+	var dcontourxPtr= Module._malloc(nx); var contourxHeap = new Uint8Array(Module.HEAPU8.buffer,dcontourxPtr,nx);
+	contourxHeap.set(new Uint8Array(dcontourx.buffer)); var contourx=contourxHeap.byteOffset;
+
+	var dcontoury=new Float64Array(contour['y']); var ny=dcontoury.length * dcontoury.BYTES_PER_ELEMENT;
+	var dcontouryPtr = Module._malloc(ny); var contouryHeap = new Uint8Array(Module.HEAPU8.buffer,dcontouryPtr,ny);
+	contouryHeap.set(new Uint8Array(dcontoury.buffer)); var contoury=contouryHeap.byteOffset;
+	
+	nel=indexin.length;
+	nods=xin.length;
+	contour_nods=dcontourx.length;
+
+	//output
+	var in_nod;
+	var pin_nod= Module._malloc(4); 
+	var in_nel;
+	var pin_nel= Module._malloc(4); 
+	//}}}
+
+	//Declare ContourToMesh module: 
+	ContourToMeshModule = Module.cwrap('ContourToMeshModule','number',['number','number','number','number','number','number','number','string','number','number','number']);
+	
+	//Call ContourToMesh module: 
+	ContourToMeshModule(pin_nod,pin_nel,index,x,y,contourx,contoury,interptype,nel, nods, contour_nods, edgevalue);
+
+	/*Dynamic copying from heap: {{{*/
+	if(interptype == 'node'){
+		var in_nodptr = Module.getValue(pin_nod,'i32');
+		in_nod = Module.HEAPF64.slice(in_nodptr /8, in_nodptr/8 + nods);
+	}
+	else if (interptype == 'element'){
+		var in_nelptr = Module.getValue(pin_nel,'i32');
+		in_nel = Module.HEAPF64.slice(in_nelptr /8, in_nelptr/8 + nel);
+	}
+	else if (interptype == 'element and node'){
+		var in_nodptr = Module.getValue(pin_nod,'i32');
+		in_nod = Module.HEAPF64.slice(in_nodptr /8, in_nodptr/8 + nods);
+		var in_nelptr = Module.getValue(pin_nel,'i32');
+		in_nel = Module.HEAPF64.slice(in_nelptr /8, in_nelptr/8 + nel);
+	}
+	else throw Error('ContourToMeshModule error message: wrong interpolation type!');
+	/*}}}*/
+
+	/*Free ressources: */
+	Module._free(pin_nod); 
+	Module._free(pin_nel); 
+	
+	if(interptype == 'node'){
+		return in_nod;
+	}
+	else if (interptype == 'element'){
+		return in_nel;
+	}
+	else if (interptype == 'element and node'){
+		return [in_nod,in_nel];
+	}
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ContourToNodes/ContourToNodes.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ContourToNodes/ContourToNodes.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ContourToNodes/ContourToNodes.cpp	(revision 21239)
@@ -0,0 +1,56 @@
+/*! \file  ContourtoNodes
+    \brief: takes a  contour file, and figures out which nodes  (x,y list)
+*/
+
+#include "./ContourToNodes.h"
+
+void ContourToNodesUsage(void){/*{{{*/
+	_printf_("   usage:\n");
+	_printf_("   [flags]=ContourToNodes(x,y,contourname,edgevalue);\n");
+	_printf_("   where:\n");
+	_printf_("      x,y: list of nodes.\n");
+	_printf_("      contourname: name of .exp file containing the contours, or resulting structure from call to expread.\n");
+	_printf_("      edgevalue: integer (0, 1 or 2) defining the value associated to the nodes on the edges of the polygons.\n");
+	_printf_("      flags: vector of flags (0 or 1), of size nods.\n");
+	_printf_("\n");
+}/*}}}*/
+WRAPPER(ContourToNodes_python){
+
+	/* input: */
+	int       edgevalue,nods;
+	double   *x           = NULL;
+	double   *y           = NULL;
+	char     *contourname = NULL;
+	Contours *contours    = NULL;
+
+	/* output: */
+	double *flags = NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	CHECKARGUMENTS(NLHS,NRHS,&ContourToNodesUsage);
+
+	/*Fetch inputs: */
+	FetchData(&x,&nods,NULL,XHANDLE);
+	FetchData(&y,NULL,NULL,YHANDLE);
+	FetchData(&edgevalue,EDGEVALUE);
+	FetchData(&contours,CONTOUR);
+
+	/*Run x layer */
+	ContourToNodesx(&flags,x,y,nods,contours,edgevalue);
+
+	/* output: */
+	WriteData(FLAGS,flags,nods);
+
+	/*Clean up*/
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<char>(contourname);
+	delete contours;
+	xDelete<double>(flags);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ContourToNodes/ContourToNodes.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ContourToNodes/ContourToNodes.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ContourToNodes/ContourToNodes.h	(revision 21239)
@@ -0,0 +1,55 @@
+/*
+	ContourToNodes.h
+*/
+
+#ifndef _CONTOURTONODES_H
+#define _CONTOURTONODES_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__
+#define __FUNCT__ "ContourToNodes"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* input macros: */
+#define XHANDLE   prhs[0]
+#define YHANDLE   prhs[1]
+#define CONTOUR   prhs[2]
+#define EDGEVALUE prhs[3]
+
+/* serial output macros: */
+#define FLAGS (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* input macros: */
+#define XHANDLE   PyTuple_GetItem(args,0)
+#define YHANDLE   PyTuple_GetItem(args,1)
+#define CONTOUR   PyTuple_GetItem(args,2)
+#define EDGEVALUE PyTuple_GetItem(args,3)
+
+/* serial output macros: */
+#define FLAGS output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS 1
+#undef NRHS
+#define NRHS 4
+
+#endif  /* _CONTOURTONODES_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/DistanceToMaskBoundary/DistanceToMaskBoundary.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/DistanceToMaskBoundary/DistanceToMaskBoundary.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/DistanceToMaskBoundary/DistanceToMaskBoundary.cpp	(revision 21239)
@@ -0,0 +1,58 @@
+/*\file DistanceToMaskBoundary.c
+ *\brief: compute distance from any point in a mesh to a mask boundary
+ */
+
+#include "./DistanceToMaskBoundary.h"
+
+void DistanceToMaskBoundaryUsage(void){/*{{{*/
+	_printf0_("DISTANCETOMASKBOUNDARYUSAGE - compute distance from any point in a mesh to a mask boundary\n");
+	_printf0_("\n");
+	_printf0_("   This function is a multi-threaded mex file\n");
+	_printf0_("\n");
+	_printf0_("   Usage:\n");
+	_printf0_("      [distance]=DistanceToMaskBoundary(x,y,mask)\n");
+	_printf0_("\n");
+	_printf0_("      x,y,mask: mesh vertices with corresponding mask values. \n");
+	_printf0_("      distance: distance from x,y to the mask transition between 0 and 1\n");
+	_printf0_("\n");
+}/*}}}*/
+
+WRAPPER(DistanceToMaskBoundary_python){
+
+	/*input datasets: */
+	double* x=NULL;
+	double* y=NULL;
+	double* mask=NULL;
+	int     nods;
+
+	/* output datasets: */
+	double* distance=NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	#ifdef _HAVE_MATLAB_MODULES_
+	CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&DistanceToMaskBoundaryUsage);
+	#endif
+
+	/*Input datasets: */
+	FetchData(&x,&nods,NULL,X);
+	FetchData(&y,NULL,NULL,Y);
+	FetchData(&mask,NULL,NULL,MASK);
+
+	/*Call core of computation: */
+	DistanceToMaskBoundaryx(&distance,x,y,mask,nods);
+
+	/*Write results: */
+	WriteData(DISTANCE,distance,nods);
+
+	/*Free ressources: */
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<double>(mask);
+	xDelete<double>(distance);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/DistanceToMaskBoundary/DistanceToMaskBoundary.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/DistanceToMaskBoundary/DistanceToMaskBoundary.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/DistanceToMaskBoundary/DistanceToMaskBoundary.h	(revision 21239)
@@ -0,0 +1,53 @@
+/*
+	DistanceToMaskBoundary.h
+*/
+
+#ifndef _DISTANCETOMASKBOUNDARY_H
+#define _DISTANCETOMASKBOUNDARY_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/toolkits/toolkits.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../../c/shared/io/io.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "DistanceToMaskBoundary"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define X            prhs[0]
+#define Y            prhs[1]
+#define MASK         prhs[2]
+/* serial output macros: */
+#define DISTANCE (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define X            PyTuple_GetItem(args,0)
+#define Y            PyTuple_GetItem(args,1)
+#define MASK            PyTuple_GetItem(args,2)
+/* serial output macros: */
+#define DISTANCE output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  3
+
+#endif  /* _DISTANCETOMASKBOUNDARY_H*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ElementConnectivity/ElementConnectivity.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ElementConnectivity/ElementConnectivity.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ElementConnectivity/ElementConnectivity.cpp	(revision 21239)
@@ -0,0 +1,46 @@
+/*\file ElementConnectivity.c
+ *\brief: build element connectivity using node connectivity and elements. 
+ */
+
+#include "./ElementConnectivity.h"
+
+void ElementConnectivityUsage(void) {/*{{{*/
+	_printf0_("\n");
+	_printf0_("   usage: elementconnectivity = " << __FUNCT__ << "(elements, nodeconnectivity);\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(ElementConnectivity_python){
+
+	/*inputs: */
+	int* elements=NULL;
+	int* nodeconnectivity=NULL;
+	int  nels,nods;
+	int  width;
+
+	/*outputs: */
+	int* elementconnectivity=NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments: */
+	CHECKARGUMENTS(NLHS,NRHS,&ElementConnectivityUsage);
+
+	/*Input datasets: */
+	FetchData(&elements,&nels,NULL,ELEMENTS);
+	FetchData(&nodeconnectivity,&nods,&width,NODECONNECTIVITY);
+
+	/*!Generate internal degree of freedom numbers: */
+	ElementConnectivityx(&elementconnectivity,elements,nels,nodeconnectivity,nods,width);
+
+	/*write output datasets: */
+	WriteData(ELEMENTCONNECTIVITY,elementconnectivity,nels,3);
+
+	/*Clean up*/
+	xDelete<int>(elements);
+	xDelete<int>(nodeconnectivity);
+	xDelete<int>(elementconnectivity);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ElementConnectivity/ElementConnectivity.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ElementConnectivity/ElementConnectivity.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ElementConnectivity/ElementConnectivity.h	(revision 21239)
@@ -0,0 +1,61 @@
+/*
+	ElementConnectivity.h
+*/
+
+#ifndef _ELEMENTCONNECTIVITY_H
+#define _ELEMENTCONNECTIVITY_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+/*Header files: */
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/toolkits/toolkits.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../../c/shared/io/io.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "ElementConnectivity"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define ELEMENTS         prhs[0]
+#define NODECONNECTIVITY prhs[1]
+/* serial output macros: */
+#define ELEMENTCONNECTIVITY (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define ELEMENTS         PyTuple_GetItem(args,0)
+#define NODECONNECTIVITY PyTuple_GetItem(args,1)
+/* serial output macros: */
+#define ELEMENTCONNECTIVITY output,0
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define ELEMENTS         elementsin, nelsin,3
+#define NODECONNECTIVITY nodeconnectivityin, nodsin, widthin
+/* serial output macros: */
+#define ELEMENTCONNECTIVITY pelementconnectivity,NULL,NULL
+#define WRAPPER(modulename) extern "C" { int  ElementConnectivityModule(double** pelementconnectivity, int* elementsin, int* nodeconnectivityin, int nelsin, int nodsin, int widthin)
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  2
+
+#endif  /* _ELEMENTCONNECTIVITY_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ElementConnectivity/ElementConnectivity.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ElementConnectivity/ElementConnectivity.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ElementConnectivity/ElementConnectivity.js	(revision 21239)
@@ -0,0 +1,45 @@
+function ElementConnectivity(elementsin,nodeconnectivityin){
+/*ElementConnectivity 
+	   usage: var md.mesh.elementconnectivity= ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+*/
+
+	//Dynamic allocations: {{{
+	//Retrieve elements and allocate on Module heap: 
+	
+	//input
+	nel=elementsin.length;
+	nods=nodeconnectivityin.length;
+	width=nodeconnectivityin[0].length;
+	
+	var delements=new Int32Array(MatrixToList(elementsin)); var nelements=delements.length * delements.BYTES_PER_ELEMENT;
+	var delementsPtr= Module._malloc(nelements); var elementsHeap = new Uint8Array(Module.HEAPU8.buffer,delementsPtr,nelements);
+	elementsHeap.set(new Uint8Array(delements.buffer)); var elements=elementsHeap.byteOffset;
+	
+	var dnodeconnectivity=new Int32Array(MatrixToList(nodeconnectivityin)); var nnodeconnectivity=dnodeconnectivity.length * dnodeconnectivity.BYTES_PER_ELEMENT;
+	var dnodeconnectivityPtr= Module._malloc(nnodeconnectivity); var nodeconnectivityHeap = new Uint8Array(Module.HEAPU8.buffer,dnodeconnectivityPtr,nnodeconnectivity);
+	nodeconnectivityHeap.set(new Uint8Array(dnodeconnectivity.buffer)); var nodeconnectivity=nodeconnectivityHeap.byteOffset;
+
+	//output
+	var connectivitylinear,connectivity;
+	var pconnectivity= Module._malloc(4); 
+	//}}}
+
+	//Declare ElementConnectivity module: 
+	ElementConnectivityModule = Module.cwrap('ElementConnectivityModule','number',['number','number','number','number','number','number']);
+	
+	//Call ElementConnectivity module: 
+	ElementConnectivityModule(pconnectivity,elements, nodeconnectivity, nel, nods, width);
+	
+	/*Dynamic copying from heap: {{{*/
+	//recover mesh: 
+	var connectivityptr = Module.getValue(pconnectivity,'i32');
+	connectivitylinear = Module.HEAPF64.slice(connectivityptr /8, connectivityptr/8 + nel*3);
+	connectivity = ListToMatrix(connectivitylinear,3);
+	/*}}}*/
+
+	/*Free ressources: */
+	Module._free(pconnectivity); 
+	Module._free(connectivitylinear); 
+
+	return connectivity;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ExpSimplify/ExpSimplify.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ExpSimplify/ExpSimplify.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ExpSimplify/ExpSimplify.cpp	(revision 21239)
@@ -0,0 +1,223 @@
+/*\file ExpSimplify.c
+ *\brief: exp to kml file conversion mex module.
+ */
+#include "./ExpSimplify.h"
+
+void ExpSimplifyUsage(void){/*{{{*/
+	_printf_("ExpSimplify - Simplify Exp contour\n");
+	_printf_("\n");
+	_printf_("   Recursive Douglas-Peucker Polygon Simplification\n");
+	_printf_("\n");
+	_printf_("   Usage:\n");
+	_printf_("      ExpSimplify(expfile,tol);\n");
+	_printf_("      - expfile: name of the exp file\n");
+	_printf_("      - tol:  tolerance (maximal euclidean distance allowed between the new line and a vertex)\n");
+	_printf_("      Additional options:\n");
+	_printf_("      - 'min': minimum number of vertices to save contours in exp file (default is 3)\n");
+	_printf_("\n");
+	_printf_("   Example:\n");
+	_printf_("      ExpSimplify('file.exp',100);\n");
+	_printf_("      ExpSimplify('file.exp',100,'min',4);\n");
+}/*}}}*/
+void simplify(Contour<double>* contour,bool* flags,int ind0,int ind1,double tolerance){/*{{{*/
+
+	bool    closed    = false;
+	double  distance,beta,dx,dy;
+	double  maxdistance;
+	int     index  = -1;
+	double *x      = contour->x;
+	double *y      = contour->y;
+
+	/*Some checks*/
+	_assert_(ind0>=0 && ind0<contour->nods);
+	_assert_(ind1>=0 && ind1<contour->nods);
+	_assert_(ind1-ind0>=0);
+
+	/*Check wether this portion is closed*/
+	if(x[ind0]==x[ind1] && y[ind0]==y[ind1]) closed=true;
+
+	if(closed){
+
+		/*calculate the shortest distance of all vertices between ind0 and ind1*/
+		for(int i=ind0;i<ind1-1;i++){
+			distance = sqrt((x[ind0]-x[i+1])*(x[ind0]-x[i+1]) + (y[ind0]-y[i+1])*(y[ind0]-y[i+1]));
+			if(i==ind0 || distance>maxdistance){
+				maxdistance=distance;
+				index = i + 1;
+			}
+		}
+	}
+	else{
+		/*calculate shortest distance of all points to the line from ind0 to ind1
+		 * subtract starting point from other locations
+		 *
+		 * d = || (x-x0) - beta (xend - x0) ||
+		 * <x-x0,xend-x0>      = ||x-x0|| ||xend-x0|| cos(alpha)
+		 * beta ||xend-x0|| = ||x-x0|| cos(alpha)
+		 *
+		 * So: beta = <x-x0,xend-x0>/<xend-x0,xend-x0>  */
+
+		for(int i=ind0+1;i<=ind1;i++){
+			beta = ((x[i]-x[ind0])*(x[ind1]-x[ind0]) + (y[i]-y[ind0])*(y[ind1]-y[ind0]))/((x[ind1]-x[ind0])*(x[ind1]-x[ind0])+(y[ind1]-y[ind0])*(y[ind1]-y[ind0]));
+			dx   = x[i]-beta*x[ind1]+(beta-1.)*x[ind0];
+			dy   = y[i]-beta*y[ind1]+(beta-1.)*y[ind0];
+			distance = sqrt(dx*dx + dy*dy);
+			if(i==ind0+1 || distance>maxdistance){
+				maxdistance = distance;
+				index       = i;
+			}
+		}
+
+	}
+
+	/*if the maximum distance is smaller than the tolerance remove vertices between ind0 and ind1*/
+	if(maxdistance<tolerance){
+		if(ind0!=ind1-1){
+			for(int i=ind0+1;i<ind1;i++) flags[i]=false;
+		}
+	}
+	else{
+		/*if not, call simplifyrec for the segments between ind0 and index
+		 * (index and ind1)*/
+		_assert_(index!=-1);
+		_assert_(index!=ind1);
+		_assert_(index!=ind0);
+		simplify(contour,flags,ind0 ,index,tolerance);
+		simplify(contour,flags,index,ind1, tolerance);
+	}
+
+}/*}}}*/
+WRAPPER(ExpSimplify_python){
+
+	int i,verbose=1;
+
+	/*input: */
+	char*    expfile  = NULL;
+	double   tolerance;
+	Options *options      = NULL;
+	double   minimumvertices_double;
+	int      minimumvertices;
+
+	/*output*/
+	Contours* oldcontours = NULL;
+	Contours* newcontours = NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments: */
+	/*checks on arguments on the matlab side: */
+	if (nrhs<NRHS || nlhs>NLHS){
+		ExpSimplifyUsage(); _error_("ExpSimplify usage error");
+	}
+
+	/*Input datasets: */
+	FetchData(&expfile,  EXPFILE);
+	FetchData(&tolerance,TOLERANCE);
+	FetchData(&options,NRHS,nrhs,prhs);
+
+	/*some checks*/
+	if(tolerance<0) _error_("tolerance must be a positivve scalar");
+
+	/* Run core computations: */
+	Contour<double>* contour = NULL;
+	Contour<double>* newcontour = NULL;
+	int     nods,newnods;
+	bool*   flags = NULL;
+	double* x = NULL;
+	double* y = NULL;
+	double distance;
+
+	/*Process options*/
+	options->Get(&minimumvertices_double,"min",3.);
+	if(minimumvertices_double<1.) _error_("'min' (minimum number of verties) should be a positive integer");
+	minimumvertices = int(minimumvertices_double);
+
+	/*Read old contours and allocate new contours*/
+	oldcontours=ExpRead<double>(expfile);
+	newcontours=new Contours();
+	for(int counter=0;counter<oldcontours->Size();counter++){
+
+		/*Get single contour*/
+		contour = (Contour<double>*)oldcontours->GetObjectByOffset(counter);
+		nods    = contour->nods;
+		x       = contour->x;
+		y       = contour->y;
+		_printf_("   Initial number of vertices in contour #"<<counter+1<<": "<<nods << "\n");
+
+		/*Allocate flags (1=keep, 0=remove)*/
+		if(nods>0) flags   = xNew<bool>(nods);
+
+		if(nods==0){
+			/*Don't do anything*/
+		}
+		else if(nods==1){
+			flags[0] = true;
+		}
+		else if(nods==2){
+			/*check if the distance between both is less than the tolerance
+			 * If so, return the center*/
+			distance = sqrt((x[1]-x[0])*(x[1]-x[0]) + (y[1]-y[0])*(y[1]-y[0]));
+			if(distance<=tolerance){
+				x[0]=(x[0]+x[1])/2.;
+				y[0]=(y[0]+y[1])/2.;
+				flags[0] = true;
+				flags[1] = false;
+			}
+			else{
+				flags[0] = true;
+				flags[1] = true;
+			}
+		}
+		else{
+			/*Start recursive call to simplify*/
+			for(int i=0;i<nods;i++) flags[i]=true;
+			simplify(contour,flags,0,nods-1,tolerance);
+		}
+
+		/*Add new contour to newcontours*/
+		newnods = 0;
+		for(int i=0;i<nods;i++) if(flags[i]) newnods++;
+
+		/*Do we save new profile?*/
+		if(newnods>=minimumvertices){
+			_printf_("   Final   number of vertices in contour #"<<counter+1<<": "<<newnods << "\n");
+			newcontour       = new Contour<double>();
+			newcontour->nods = newnods;
+			newcontour->x    = xNew<double>(newnods);
+			newcontour->y    = xNew<double>(newnods);
+			newnods = 0;
+			for(int i=0;i<nods;i++){
+				if(flags[i]){
+					newcontour->x[newnods] = contour->x[i];
+					newcontour->y[newnods] = contour->y[i];
+					newnods++;
+				}
+			}
+			_assert_(newnods==newcontour->nods);
+
+			/*Add to main dataset*/
+			newcontours->AddObject(newcontour);
+		}
+		else{
+			_printf_("   Final   number of vertices in contour #"<<counter+1<<": "<<newnods<<" (not saved)\n");
+		}
+
+		/*cleanup*/
+		xDelete<bool>(flags);
+	}
+	_printf_("   Initial number of contours: "<<oldcontours->Size() << "\n");
+	_printf_("   Final   number of contours: "<<newcontours->Size() << "\n");
+
+	/*Write data: */
+	ExpWrite(newcontours,expfile);
+
+	/*Clean-up*/
+	xDelete<char>(expfile);
+	delete options;
+	delete oldcontours;
+	delete newcontours;
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ExpSimplify/ExpSimplify.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ExpSimplify/ExpSimplify.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ExpSimplify/ExpSimplify.h	(revision 21239)
@@ -0,0 +1,46 @@
+/*!\file ExpSimplify.h
+ * \brief: prototype for exp to kml file conversion mex module.
+ */
+
+#ifndef _EXPSIMPLIFY_H
+#define _EXPSIMPLIFY_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "ExpSimplify"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define EXPFILE   prhs[0]
+#define TOLERANCE prhs[1]
+/* serial output macros: */
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define EXPFILE   PyTuple_GetItem(args,0)
+#define TOLERANCE PyTuple_GetItem(args,1)
+#endif
+
+/* serial arg counts: */
+#undef NRHS
+#define NRHS  2
+#undef NLHS
+#define NLHS  0
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ExpToLevelSet/ExpToLevelSet.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ExpToLevelSet/ExpToLevelSet.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ExpToLevelSet/ExpToLevelSet.cpp	(revision 21239)
@@ -0,0 +1,78 @@
+/*! \file  ContourtoMesh
+    \brief: takes a  contour file, a cloud of points, and figures out a levelset dependent on the distance between the contour and 
+	the cloud.
+*/
+
+#include "./ExpToLevelSet.h"
+
+void ExpToLevelSetUsage(void){/*{{{*/
+	_printf_("EXPTOLEVELSET - determien levelset distance between a contour and a cloud of points\n");
+	_printf_("\n");
+	_printf_("      Usage: \n");
+	_printf_("         distance=ExpToLevelSet(x,y,contourname)\n");
+	_printf_("\n");
+	_printf_("         x,y: cloud point.\n");
+	_printf_("         contourname: name of .exp file containing the contours.\n");
+	_printf_("         distance: distance vector representing a levelset where the 0 level is one the contour segments', \n");
+	_printf_("\n");
+	_printf_("      Example: \n");
+	_printf_("         distance=ExpToLevelSet(md.mesh.x,md.mesh.y,'Contour.exp')\n");
+	_printf_("\n");
+}/*}}}*/
+WRAPPER(ExpToLevelSet_python){
+
+	/*diverse: */
+	int i;
+
+	/* required input: */
+	int       nods;
+	double   *x          = NULL;
+	double   *y          = NULL;
+	char     *interptype = NULL;
+	double   *flags      = NULL;
+	Contours *contours   = NULL;
+
+	/* output: */
+	double *distance  = NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*check on input arguments: */
+	if(nrhs!=NRHS | nlhs!=NLHS){
+		ExpToLevelSetUsage();
+		_error_("usage. See above");
+	}
+
+	/*Fetch inputs: */
+	FetchData(&x,&nods,NULL,X);
+	FetchData(&y,NULL,NULL,Y);
+	FetchData(&contours,CONTOUR);
+
+	/*Run interpolation routine: */
+	ExpToLevelSetx( &distance,x,y,nods,contours);
+	ContourToNodesx(&flags,x,y,nods,contours,2);
+
+	/*Make flags into a sign, left or right, or nill: */
+	for(i=0;i<nods;i++){
+		if (flags[i]==0) flags[i]=-1;
+		else if (flags[i]==2) flags[i]=0;
+	}
+
+	/*Multiply flags and distance: */
+	for(i=0;i<nods;i++)distance[i]*=flags[i];
+
+	/* output: */
+	WriteData(PLHS0,distance,nods);
+
+	/*Clean up*/
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<char>(interptype);
+	delete contours;
+	xDelete<double>(distance);
+	xDelete<double>(flags);
+	
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ExpToLevelSet/ExpToLevelSet.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ExpToLevelSet/ExpToLevelSet.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ExpToLevelSet/ExpToLevelSet.h	(revision 21239)
@@ -0,0 +1,55 @@
+/*
+	ExpToLevelSet.h
+*/
+
+#ifndef _EXPTOLEVELSET_H
+#define _EXPTOLEVELSET_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+/*Header files: */
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/toolkits/toolkits.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../../c/shared/io/io.h"
+
+#undef __FUNCT__
+#define __FUNCT__ "ExpToLevelSet"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define X           prhs[0]
+#define Y           prhs[1]
+#define CONTOUR     prhs[2]
+
+/* serial output macros: */
+#define PLHS0 (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define X           PyTuple_GetItem(args,0)
+#define Y           PyTuple_GetItem(args,1)
+#define CONTOUR     PyTuple_GetItem(args,2)
+/* serial output macros: */
+#define PLHS0 output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS 3
+
+#endif  /* _EXPTOLEVELSET_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.cpp	(revision 21239)
@@ -0,0 +1,83 @@
+/*!\file InterpFromGridToMesh.c
+ * \brief: data interpolation from a list of (x,y,values) into mesh vertices
+*/
+
+#include "./InterpFromGridToMesh.h"
+
+void InterpFromGridToMeshUsage(void){/*{{{*/
+	_printf0_("INTERPFROMGRIDTOMESH - interpolation from a grid onto a list of points\n");
+	_printf0_("\n");
+	_printf0_("   This function is a multi-threaded mex file that interpolates a field\n");
+	_printf0_("   defined on a grid onto a list of points based on a bilinear interpolation\n");
+	_printf0_("\n");
+	_printf0_("   Usage:\n");
+	_printf0_("      data_mesh=InterpFromGridToMesh(x,y,data,x_mesh,y_mesh,default_value);\n");
+	_printf0_("\n");
+	_printf0_("      data: matrix holding the data to be interpolated onto the mesh.\n");
+	_printf0_("      x,y: coordinates of matrix data. (x and y must be in increasing order)\n");
+	_printf0_("      x_mesh,y_mesh: coordinates of the points onto which we interpolate.\n");
+	_printf0_("      default_value: default value if no data is found (holes).\n");
+	_printf0_("      data_mesh: vector of mesh interpolated data.\n");
+	_printf0_("\n");
+	_printf0_("   Example:\n");
+	_printf0_("      load('velocities.mat');\n");
+	_printf0_("      md.inversion.vx_obs=InterpFromGridToMesh(x_n,y_m,vx,md.mesh.x,md.mesh.y,0);\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(InterpFromGridToMesh_python){
+
+	int i,j;
+
+	/*input: */
+	double *x = NULL;
+	double *y = NULL;
+	int     x_rows,y_rows;
+	double *data  = NULL;
+	int     data_rows,data_cols;
+	double *x_mesh = NULL;
+	double *y_mesh = NULL;
+	int     x_mesh_rows,y_mesh_rows;
+	double  default_value;
+	char*   interpolationtype = NULL;
+
+	/* output: */
+	IssmSeqVec<double>*  data_mesh=NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	if(nrhs!=6 && nrhs!=7){
+		InterpFromGridToMeshUsage();
+		_error_("Wrong usage. See above");
+	}
+
+	/*Input datasets: */
+	FetchData(&x,&x_rows,NULL,XHANDLE);
+	FetchData(&y,&y_rows,NULL,YHANDLE);
+	FetchData(&data,&data_rows,&data_cols,DATAHANDLE);
+	FetchData(&x_mesh,&x_mesh_rows,NULL,XMESHHANDLE);
+	FetchData(&y_mesh,&y_mesh_rows,NULL,YMESHHANDLE);
+	FetchData(&default_value,DEFAULTHANDLE);
+
+	/* Run core computations: */
+	if(nrhs==7){
+		FetchData(&interpolationtype,INTERPENUM);
+		InterpFromGridToMeshx(&data_mesh, x, x_rows,  y, y_rows, data, data_rows,data_cols, x_mesh, y_mesh, x_mesh_rows,default_value,interpolationtype);
+		xDelete<char>(interpolationtype);
+	}
+	else{
+		InterpFromGridToMeshx(&data_mesh, x, x_rows,  y, y_rows, data, data_rows,data_cols, x_mesh, y_mesh, x_mesh_rows,default_value,"bilinear");
+	}
+
+	/*Write data: */
+	WriteData(DATAMESH,data_mesh);
+
+	/*end module: */
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<double>(data);
+	xDelete<double>(x_mesh);
+	xDelete<double>(y_mesh);
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.h	(revision 21239)
@@ -0,0 +1,59 @@
+/*!\file InterpFromGridToMesh.h
+ * \brief: prototype for Data Interpolation mex module.
+ */
+
+#ifndef _InterpFromGridToMesh_H
+#define _InterpFromGridToMesh_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "InterpFromGridToMesh"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define XHANDLE       prhs[0]
+#define YHANDLE       prhs[1]
+#define DATAHANDLE    prhs[2]
+#define XMESHHANDLE   prhs[3]
+#define YMESHHANDLE   prhs[4]
+#define DEFAULTHANDLE prhs[5]
+#define INTERPENUM    prhs[6]
+/* serial output macros: */
+#define DATAMESH (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define XHANDLE       PyTuple_GetItem(args,0)
+#define YHANDLE       PyTuple_GetItem(args,1)
+#define DATAHANDLE    PyTuple_GetItem(args,2)
+#define XMESHHANDLE   PyTuple_GetItem(args,3)
+#define YMESHHANDLE   PyTuple_GetItem(args,4)
+#define DEFAULTHANDLE PyTuple_GetItem(args,5)
+#define INTERPENUM    PyTuple_GetItem(args,6)
+/* serial output macros: */
+#define DATAMESH output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  6
+
+#endif  /* _INTERPFROMGRIDTOMESH_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMesh2d/InterpFromMesh2d.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMesh2d/InterpFromMesh2d.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMesh2d/InterpFromMesh2d.cpp	(revision 21239)
@@ -0,0 +1,151 @@
+/*!\file InterpFromMesh2d.c
+ * \brief: data interpolation from a list of (x,y,values) into mesh vertices
+*/
+
+#include "./InterpFromMesh2d.h"
+
+void InterpFromMesh2dUsage(void){/*{{{*/
+	_printf0_("   usage:\n");
+	_printf0_("         data_prime=InterpFromMesh2d(index,x,y,data,x_prime,y_prime);\n");
+	_printf0_("      or data_prime=InterpFromMesh2d(index,x,y,data,x_prime,y_prime,default_value);\n");
+	_printf0_("      or data_prime=InterpFromMesh2d(index,x,y,data,x_prime,y_prime,default_value,contourname);\n");
+	_printf0_("   where:\n");
+	_printf0_("      x,y: coordinates of the nodes where data is defined\n");
+	_printf0_("      index: index of the mesh where data is defined\n");
+	_printf0_("      data - vector holding the data to be interpolated onto the points.\n");
+	_printf0_("      x_prime,y_prime: coordinates of the mesh vertices onto which we interpolate.\n");
+	_printf0_("      default_value: a scalar or vector of size length(x_prime).\n");
+	_printf0_("      contourname: linear interpolation will happen on all x_interp,y_interp inside the contour, default value will be adopted on the rest of the mesh.\n");
+	_printf0_("      data_prime:  vector of prime interpolated data.\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(InterpFromMesh2d_python){
+
+	/*input: */
+	double* index_data=NULL;
+	int     index_data_rows;
+	int     dummy;
+
+	double* x_data=NULL;
+	int     x_data_rows;
+
+	double* y_data=NULL;
+	int     y_data_rows;
+
+	double* data=NULL; 
+	int     data_rows;
+	int     data_cols;
+
+	double* x_prime=NULL;
+	double* y_prime=NULL;
+
+	int     x_prime_rows;
+	int     y_prime_rows;
+
+	double* default_values=NULL;
+	int     num_default_values=0;
+
+	/*contours*/
+	int i;
+	mxArray *matlabstructure = NULL;
+	Contour<double> **contours=NULL;
+	int numcontours;
+	Contour<double> *contouri=NULL;
+
+	/*Intermediary*/
+	int nods_data;
+	int nels_data;
+	int nods_prime;
+
+	/* output: */
+	IssmSeqVec<double> *data_prime = NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	if(nlhs!=NLHS){
+		InterpFromMesh2dUsage();
+		_error_("InterpFromMeshToMesh2dUsage usage error");
+	}
+	if((nrhs!=6) && (nrhs!=7) && (nrhs!=8)){
+		InterpFromMesh2dUsage();
+		_error_("InterpFromMeshToMesh2dUsage usage error");
+	}
+
+	/*Input datasets: */
+	FetchData(&index_data,&index_data_rows,&dummy,INDEXHANDLE);
+	FetchData(&x_data,&x_data_rows,NULL,XHANDLE);
+	FetchData(&y_data,&y_data_rows,NULL,YHANDLE);
+	FetchData(&data,&data_rows,&data_cols,DATAHANDLE);
+	FetchData(&x_prime,&x_prime_rows,NULL,XPRIMEHANDLE);
+	FetchData(&y_prime,&y_prime_rows,NULL,YPRIMEHANDLE);
+
+	if(nrhs>=7){
+		/*default values: */
+		FetchData(&default_values,&num_default_values,DEFAULTHANDLE);
+	}
+	else{
+		default_values=NULL;
+		num_default_values=0;
+	}
+
+	if(nrhs>=8){
+
+		#ifdef _HAVE_MATLAB_MODULES_
+		/*Call expread on filename to build a contour array in the matlab workspace: */
+		mexCallMATLAB( 1, &matlabstructure, 1, (mxArray**)&FILENAME, "expread");
+
+		/*contours: */
+		numcontours=mxGetNumberOfElements(matlabstructure);
+		contours=xNew<Contour<double> *>(numcontours);
+		for(i=0;i<numcontours;i++){
+			//allocate
+			contouri=new Contour<double>();
+			//retrieve dimension of this contour.
+			contouri->nods=(int)mxGetScalar(mxGetField(matlabstructure,i,"nods"));
+			//set pointers.
+			contouri->x=mxGetPr(mxGetField(matlabstructure,i,"x"));
+			contouri->y=mxGetPr(mxGetField(matlabstructure,i,"y"));
+			*(contours+i)=contouri;
+		}
+		#else
+		_error_("not supported");
+		#endif
+	}
+	else{
+		numcontours=0;
+		contours=NULL;
+	}
+
+	/*some checks*/
+	if (x_data_rows!=y_data_rows){
+		_error_("vectors x and y should have the same length!");
+	}
+	if (x_prime_rows!=y_prime_rows){
+		_error_("vectors x_prime and y_prime should have the same length!");
+	}
+
+	/*get number of elements and number of nodes in the data*/
+	nels_data=index_data_rows;
+	nods_data=x_data_rows;
+	nods_prime=x_prime_rows;
+
+	/* Run core computations: */
+	InterpFromMesh2dx(&data_prime,index_data,x_data,y_data,nods_data,nels_data,data,data_rows,x_prime,y_prime,nods_prime,default_values,num_default_values,contours,numcontours);
+
+	/*Write data: */
+	WriteData(DATAPRIME,data_prime);
+
+	/*end module: */
+	xDelete<double>(index_data);
+	xDelete<double>(x_data);
+	xDelete<double>(y_data);
+	xDelete<double>(data);
+	xDelete<double>(x_prime);
+	xDelete<double>(y_prime);
+	xDelete<double>(default_values);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMesh2d/InterpFromMesh2d.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMesh2d/InterpFromMesh2d.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMesh2d/InterpFromMesh2d.h	(revision 21239)
@@ -0,0 +1,59 @@
+/*!\file InterpFromMesh2d.h
+ * \brief: prototype for Data Interpolation mex module.
+ */
+
+#ifndef _INTERPFROMMESH2D_H
+#define _INTERPFROMMESH2D_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "InterpFromMesh2d"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define INDEXHANDLE   prhs[0]
+#define XHANDLE       prhs[1]
+#define YHANDLE       prhs[2]
+#define DATAHANDLE    prhs[3]
+#define XPRIMEHANDLE  prhs[4]
+#define YPRIMEHANDLE  prhs[5]
+#define DEFAULTHANDLE prhs[6]
+#define FILENAME      prhs[7]
+/* serial output macros: */
+#define DATAPRIME (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define INDEXHANDLE   PyTuple_GetItem(args,0)
+#define XHANDLE       PyTuple_GetItem(args,1)
+#define YHANDLE       PyTuple_GetItem(args,2)
+#define DATAHANDLE    PyTuple_GetItem(args,3)
+#define XPRIMEHANDLE  PyTuple_GetItem(args,4)
+#define YPRIMEHANDLE  PyTuple_GetItem(args,5)
+#define DEFAULTHANDLE PyTuple_GetItem(args,6)
+#define FILENAME      PyTuple_GetItem(args,7)
+/* serial output macros: */
+#define DATAPRIME output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+
+#endif  /* _INTERPFROMMESH2D_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToGrid/InterpFromMeshToGrid.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToGrid/InterpFromMeshToGrid.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToGrid/InterpFromMeshToGrid.cpp	(revision 21239)
@@ -0,0 +1,84 @@
+/*\file InterpFromMeshToGrid.c
+ *\brief: compute diff between observed and modeled velocity
+ */
+
+#include "./InterpFromMeshToGrid.h"
+
+void InterpFromMeshToGridUsage(void){/*{{{*/
+	_printf0_("INTERPFROMMESHTOGRID - interpolation of a data defined on a mesh onto a grid\n");
+	_printf0_("\n");
+	_printf0_("   This function is a multi-threaded mex file that interpolates a field\n");
+	_printf0_("   defined on a triangular mesh onto a regular grid\n");
+	_printf0_("\n");
+	_printf0_("   Usage:\n");
+	_printf0_("      [x_m,y_m,griddata]=InterpFromMeshToGrid(index,x,y,data,xmin,ymax,xposting,yposting,nlines,ncols,default_value)\n");
+	_printf0_("\n");
+	_printf0_("      index,x,y: delaunay triangulation defining the mesh.\n");
+	_printf0_("      meshdata: vertex values of data to be interpolated.\n");
+	_printf0_("      xmin,ymax,posting,nlines,ncols: parameters that define the grid\n");
+	_printf0_("      default_value: value of points located out of the mesh.\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(InterpFromMeshToGrid_python){
+
+	/*input datasets: */
+	double* index=NULL;
+	int     nel;
+	double* x=NULL;
+	int     nods;
+	double* y=NULL;
+	double* meshdata=NULL;
+	int     meshdata_length;
+	double  xmin;
+	double  ymax;
+	double  xposting;
+	double  yposting;
+	int     nlines,ncols;
+	double  default_value;
+
+	/* output datasets: */
+	double* griddata=NULL;
+	double* x_m=NULL;
+	double* y_m=NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	#ifdef _HAVE_MATLAB_MODULES_
+	CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&InterpFromMeshToGridUsage);
+	#endif
+
+	/*Input datasets: */
+	FetchData(&index,&nel,NULL,INDEX);
+	FetchData(&x,&nods,NULL,X);
+	FetchData(&y,NULL,NULL,Y);
+	FetchData(&meshdata,&meshdata_length,NULL,MESHDATA);
+	FetchData(&xmin,XMIN);
+	FetchData(&ymax,YMAX);
+	FetchData(&xposting,XPOSTING);
+	FetchData(&yposting,YPOSTING);
+	FetchData(&nlines,NLINES);
+	FetchData(&ncols,NCOLS);
+	FetchData(&default_value,DEFAULTVALUE);
+
+	/*Call core of computation: */
+	InterpFromMeshToGridx(&x_m,&y_m,&griddata,index,x,y,nods,nel,meshdata,meshdata_length,xmin,ymax,xposting,yposting,nlines,ncols,default_value);
+
+	/*Write results: */
+	WriteData(XM,x_m,ncols);
+	WriteData(YM,y_m,nlines);
+	WriteData(GRIDDATA,griddata,nlines,ncols);
+
+	/*Free ressources: */
+	xDelete<double>(index);
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<double>(meshdata);
+	xDelete<double>(griddata);
+	xDelete<double>(x_m);
+	xDelete<double>(y_m);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToGrid/InterpFromMeshToGrid.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToGrid/InterpFromMeshToGrid.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToGrid/InterpFromMeshToGrid.h	(revision 21239)
@@ -0,0 +1,73 @@
+/*
+	InterpFromMeshToGrid.h
+*/
+
+#ifndef _INTERPFROMMESHTOGRID_H
+#define _INTERPFROMMESHTOGRID_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/toolkits/toolkits.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../../c/shared/io/io.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "InterpFromMeshToGrid"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define INDEX        prhs[0]
+#define X            prhs[1]
+#define Y            prhs[2]
+#define MESHDATA     prhs[3]
+#define XMIN         prhs[4]
+#define YMAX         prhs[5]
+#define XPOSTING     prhs[6]
+#define YPOSTING     prhs[7]
+#define NLINES       prhs[8]
+#define NCOLS        prhs[9]
+#define DEFAULTVALUE prhs[10]
+/* serial output macros: */
+#define XM (mxArray**)&plhs[0]
+#define YM (mxArray**)&plhs[1]
+#define GRIDDATA (mxArray**)&plhs[2]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define INDEX        PyTuple_GetItem(args,0)
+#define X            PyTuple_GetItem(args,1)
+#define Y            PyTuple_GetItem(args,2)
+#define MESHDATA     PyTuple_GetItem(args,3)
+#define XMIN         PyTuple_GetItem(args,4)
+#define YMAX         PyTuple_GetItem(args,5)
+#define XPOSTING     PyTuple_GetItem(args,6)
+#define YPOSTING     PyTuple_GetItem(args,7)
+#define NLINES       PyTuple_GetItem(args,8)
+#define NCOLS        PyTuple_GetItem(args,9)
+#define DEFAULTVALUE PyTuple_GetItem(args,10)
+/* serial output macros: */
+#define XM output,0
+#define YM output,1
+#define GRIDDATA output,2
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  3
+#undef NRHS
+#define NRHS  11
+
+#endif  /* _INTERPFROMMESHTOGRID_H*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp	(revision 21239)
@@ -0,0 +1,87 @@
+/*\file InterpFromMeshToMesh2d.c
+ *\brief: bamg module.
+ */
+#include "./InterpFromMeshToMesh2d.h"
+
+void InterpFromMeshToMesh2dUsage(void){/*{{{*/
+	_printf0_("INTERFROMMESHTOMESH2D - interpolation from a 2d triangular mesh onto a list of point\n");
+	_printf0_("\n");
+	_printf0_("   This function is a multi-threaded mex file that interpolates a field\n");
+	_printf0_("   defined on a Delaunay triangulation onto a list of point\n");
+	_printf0_("\n");
+	_printf0_("   Usage:\n");
+	_printf0_("         data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp);\n");
+	_printf0_("      or data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp,OPTIONS);\n");
+	_printf0_("\n");
+	_printf0_("      index             : index of the mesh where data is defined\n");
+	_printf0_("      x,y               : coordinates of the nodes where data is defined\n");
+	_printf0_("      data              : matrix holding the data to be interpolated onto the mesh. (one column per field)\n");
+	_printf0_("      x_interp,y_interp : coordinates of the points onto which we interpolate.\n");
+	_printf0_("      data_interp       : vector of mesh interpolated data.\n");
+	_printf0_("      Available options :\n");
+	_printf0_("         - 'default' : default value if point is outsite of triangulation (instead of linear interpolation)\n");
+	_printf0_("\n");
+	_printf0_("   Example:\n");
+	_printf0_("      load('temperature.mat');\n");
+	_printf0_("      md.initialization.temperature=InterpFromMeshToMesh2d(index,x,y,temperature,md.mesh.x,md.mesh.y);\n");
+	_printf0_("      md.initialization.temperature=InterpFromMeshToMesh2d(index,x,y,temperature,md.mesh.x,md.mesh.y,'default',253);\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(InterpFromMeshToMesh2d_python){
+
+	/*Intermediaties*/
+	int     *index              = NULL;
+	double  *x_data             = NULL;
+	double  *y_data             = NULL;
+	double  *data               = NULL;
+	int      nods_data,nels_data;
+	int      M_data,N_data;
+	double  *x_interp           = NULL;
+	double  *y_interp           = NULL;
+	int      N_interp;
+	Options *options   = NULL;
+	double  *data_interp = NULL;
+	int      test1,test2,test;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on output arguments on the matlab side: */
+	#ifdef _HAVE_MATLAB_MODULES_
+	if(nlhs!=NLHS){
+		InterpFromMeshToMesh2dUsage();
+		_error_("InterpFromMeshToMesh2dUsage usage error");
+	}
+	#endif
+	/*check on input arguments: */
+	if(nrhs<NRHS){
+		InterpFromMeshToMesh2dUsage();
+		_error_("InterpFromMeshToMesh2dUsage usage error");
+	}
+
+	/*Fetch inputs: */
+	FetchData(&index,&nels_data,&test,INDEX); if(test!=3) _error_("index should have 3 columns");
+	FetchData(&x_data,&nods_data,X);          if(nods_data<3) _error_("there should be at least three points");
+	FetchData(&y_data,&test,Y);               if(test!=nods_data) _error_("vectors x and y should have the same length");
+	FetchData(&data,&M_data,&N_data,DATA);    if(M_data*N_data<1) _error_("data is empty");
+	FetchData(&x_interp,&N_interp,XINTERP);   if(N_interp<1) _error_("no interpolation requested");
+	FetchData(&y_interp,&test,YINTERP);       if(test!=N_interp) _error_("vectors x_interp and y_interp should have the same length");
+	FetchData(&options,NRHS,nrhs,ARGUMENTS);
+
+	/*Run core computations*/
+	InterpFromMeshToMesh2dx(&data_interp,index,x_data,y_data,nods_data,nels_data,data,M_data,N_data,x_interp,y_interp,N_interp,options);
+
+	/*Write data: */
+	WriteData(DATAINTERP,data_interp,N_interp,N_data);
+
+	/*end module: */
+	xDelete<int>(index);
+	xDelete<double>(x_data);
+	xDelete<double>(y_data);
+	xDelete<double>(data);
+	xDelete<double>(x_interp);
+	xDelete<double>(y_interp);
+	xDelete<double>(data_interp);
+	delete options;
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.h	(revision 21239)
@@ -0,0 +1,77 @@
+/*!\file InterpFromMeshToMesh2d.h
+ * \brief: prototype for Data Interpolation mex module.
+ */
+
+#ifndef _INTERPFROMMESHTOMESH2d_H
+#define _INTERPFROMMESHTOMESH2d_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+/*Header files: */
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/toolkits/toolkits.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../../c/shared/io/io.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "InterpFromMeshToMesh2d"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define INDEX     prhs[0]
+#define X         prhs[1]
+#define Y         prhs[2]
+#define DATA      prhs[3]
+#define XINTERP   prhs[4]
+#define YINTERP   prhs[5]
+#define ARGUMENTS prhs 
+/* serial output macros: */
+#define DATAINTERP (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define INDEX          PyTuple_GetItem(args,0)
+#define X              PyTuple_GetItem(args,1)
+#define Y              PyTuple_GetItem(args,2)
+#define DATA           PyTuple_GetItem(args,3)
+#define XINTERP        PyTuple_GetItem(args,4)
+#define YINTERP        PyTuple_GetItem(args,5)
+#define ARGUMENTS args
+/* serial output macros: */
+#define DATAINTERP output,0
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define INDEX          indexin,nelin,3
+#define X              xin,nodsin
+#define Y              yin,nodsin
+#define DATA           datain,nodsin,1
+#define XINTERP        x_interpin, nods_interpin
+#define YINTERP        y_interpin, nods_interpin
+#define ARGUMENTS "default_value",default_value
+/* serial output macros: */
+#define DATAINTERP pdata_interp,NULL,NULL
+#define WRAPPER(modulename) extern "C" { int  InterpFromMeshToMesh2dModule(double** pdata_interp,int* indexin,double* xin,double* yin,double* datain,double* x_interpin,double* y_interpin,int nelin,int nodsin,int nods_interpin,double default_value)
+#define nrhs  6
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  6
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.js	(revision 21239)
@@ -0,0 +1,78 @@
+function InterpFromMeshToMesh2d(indexin,xin,yin,datain,x_interpin,y_interpin){
+
+/* INTERFROMMESHTOMESH2D - interpolation from a 2d triangular mesh onto a list of point
+  
+  This function interpolates a field defined on a Delaunay triangulation onto a list of points.
+
+  Usage:
+	  var data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp); or
+	  var data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp,default_value);
+
+	  index             : index of the mesh where data is defined
+	  x,y               : coordinates of the nodes where data is defined
+	  data              : matrix holding the data to be interpolated onto the mesh. (one column per field)
+	  x_interp,y_interp : coordinates of the points onto which we interpolate.
+	  default_value     : default value if point is outsite of triangulation (instead of linear interpolation)
+	  data_interp       : vector of mesh interpolated data.
+
+*/
+
+	/*Figure out default_value: */
+	if (arguments.length==7)default_value=arguments[6];
+	else default_value=0;
+	
+	//Dynamic allocations: {{{
+	//Retrieve elements and allocate on Module heap: 
+	
+	//input
+	
+	var dindex=new Int32Array(MatrixToList(indexin)); var nindex=dindex.length * dindex.BYTES_PER_ELEMENT;
+	var dindexPtr= Module._malloc(nindex); var indexHeap = new Uint8Array(Module.HEAPU8.buffer,dindexPtr,nindex);
+	indexHeap.set(new Uint8Array(dindex.buffer)); var index=indexHeap.byteOffset;
+
+	var dx=new Float64Array(xin); var nx=dx.length * dx.BYTES_PER_ELEMENT;
+	var dxPtr= Module._malloc(nx); var dxHeap = new Uint8Array(Module.HEAPU8.buffer,dxPtr,nx);
+	dxHeap.set(new Uint8Array(dx.buffer)); var x=dxHeap.byteOffset;
+	
+	var dy=new Float64Array(yin); var ny=dy.length * dy.BYTES_PER_ELEMENT;
+	var dyPtr= Module._malloc(nx); var dyHeap = new Uint8Array(Module.HEAPU8.buffer,dyPtr,ny);
+	dyHeap.set(new Uint8Array(dy.buffer)); var y=dyHeap.byteOffset;
+	
+	var ddata=new Float64Array(datain); var ndata=ddata.length * ddata.BYTES_PER_ELEMENT;
+	var ddataPtr= Module._malloc(ndata); var ddataHeap = new Uint8Array(Module.HEAPU8.buffer,ddataPtr,ndata);
+	ddataHeap.set(new Uint8Array(ddata.buffer)); var data=ddataHeap.byteOffset;
+	
+	var dx_interp=new Float64Array(x_interpin); var nx_interp=dx_interp.length * dx_interp.BYTES_PER_ELEMENT;
+	var dx_interpPtr= Module._malloc(nx_interp); var dx_interpHeap = new Uint8Array(Module.HEAPU8.buffer,dx_interpPtr,nx_interp);
+	dx_interpHeap.set(new Uint8Array(dx_interp.buffer)); var x_interp=dx_interpHeap.byteOffset;
+	
+	var dy_interp=new Float64Array(y_interpin); var ny_interp=dy_interp.length * dy_interp.BYTES_PER_ELEMENT;
+	var dy_interpPtr= Module._malloc(ny_interp); var dy_interpHeap = new Uint8Array(Module.HEAPU8.buffer,dy_interpPtr,ny_interp);
+	dy_interpHeap.set(new Uint8Array(dy_interp.buffer)); var y_interp=dy_interpHeap.byteOffset;
+	
+	nel=indexin.length;
+	nods=xin.length;
+	nods_interp=x_interpin.length;
+
+	//output
+	var data_interp;
+	var pdata_interp= Module._malloc(4); 
+	//}}}
+
+	//Declare InterpFromMeshToMesh2d module: 
+	InterpFromMeshToMesh2dModule = Module.cwrap('InterpFromMeshToMesh2dModule','number',['number','number','number','number','number','number','number','number','number','number','number']);
+	
+	//Call InterpFromMeshToMesh2d module: 
+	InterpFromMeshToMesh2dModule(pdata_interp,index,x,y,data,x_interp,y_interp,nel,nods,nods_interp,default_value);
+	
+	/*Dynamic copying from heap: {{{*/
+	//recover mesh: 
+	var data_interpptr = Module.getValue(pdata_interp,'i32');
+	data_interp = Module.HEAPF64.slice(data_interpptr /8, data_interpptr/8 + nods_interp);
+	/*}}}*/
+
+	/*Free ressources: */
+	Module._free(pdata_interp); 
+
+	return data_interp;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.cpp	(revision 21239)
@@ -0,0 +1,114 @@
+/*!\file InterpFromMeshToMesh3d.c
+ * \brief: data interpolation from a list of (x,y,values) into mesh vertices
+*/
+
+#include "./InterpFromMeshToMesh3d.h"
+
+void InterpFromMeshToMesh3dUsage(void){/*{{{*/
+	_printf0_("INTERPFROMMESHTOMESH3D - interpolation from a 3d hexahedron mesh onto a list of point\n");
+	_printf0_("\n");
+	_printf0_("   This function is a multi-threaded mex file that interpolates a field\n");
+	_printf0_("   defined on a triangular mesh onto a list of point\n");
+	_printf0_("\n");
+	_printf0_("   Usage:\n");
+	_printf0_("      data_prime=InterpFromMeshToMesh3d(index,x,y,z,data,x_prime,y_prime,z_prime,default_value);\n");
+	_printf0_("\n");
+	_printf0_("      index: index of the mesh where data is defined\n");
+	_printf0_("      x,y,z: coordinates of the nodes where data is defined\n");
+	_printf0_("      data: matrix holding the data to be interpolated onto the mesh.\n");
+	_printf0_("      x_prime,y_prime,z_prime: coordinates of the points onto which we interpolate.\n");
+	_printf0_("      default_value: default value if no data is found (holes).\n");
+	_printf0_("      data_prime: vector of mesh interpolated data.\n");
+	_printf0_("\n");
+	_printf0_("   Example:\n");
+	_printf0_("      load('temperature.mat');\n");
+	_printf0_("      md.initialization.temperature=InterpFromMeshToMesh3d(index,x,y,z,temperature,md.mesh.x,md.mesh.y,md.mesh.z,253);\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(InterpFromMeshToMesh3d_python){
+
+	/*input: */
+	double* index_data=NULL;
+	int     index_data_rows;
+
+	double* x_data=NULL;
+	double* y_data=NULL;
+	double* z_data=NULL;
+
+	int     x_data_rows;
+	int     y_data_rows;
+	int     z_data_rows;
+
+	double* data=NULL; 
+	int     data_rows;
+	int     data_cols;
+
+	double* x_prime=NULL;
+	double* y_prime=NULL;
+	double* z_prime=NULL;
+
+	int     x_prime_rows;
+	int     y_prime_rows;
+	int     z_prime_rows;
+
+	double  default_value;
+
+	/*Intermediary*/
+	int nods_data;
+	int nels_data;
+	int nods_prime;
+
+	/* output: */
+	IssmSeqVec<double>*  data_prime=NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	#ifdef _HAVE_MATLAB_MODULES_
+	CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&InterpFromMeshToMesh3dUsage);
+	#endif
+
+	/*Input datasets: */
+	FetchData(&index_data,&index_data_rows,NULL,INDEXHANDLE);
+	FetchData(&x_data,&x_data_rows,NULL,XHANDLE);
+	FetchData(&y_data,&y_data_rows,NULL,YHANDLE);
+	FetchData(&z_data,&z_data_rows,NULL,ZHANDLE);
+	FetchData(&data,&data_rows,&data_cols,DATAHANDLE);
+	FetchData(&x_prime,&x_prime_rows,NULL,XPRIMEHANDLE);
+	FetchData(&y_prime,&y_prime_rows,NULL,YPRIMEHANDLE);
+	FetchData(&z_prime,&z_prime_rows,NULL,ZPRIMEHANDLE);
+	FetchData(&default_value,DEFAULTHANDLE);
+
+	/*some checks*/
+	if (x_data_rows!=y_data_rows || x_data_rows!=z_data_rows){
+		_error_("vectors x, y and z should have the same length!");
+	}
+	if (x_prime_rows!=y_prime_rows || x_prime_rows!=z_prime_rows){
+		_error_("vectors x_prime, y_prime and z_prime should have the same length!");
+	}
+	/*get number of elements and number of nodes in the data*/
+	nels_data=index_data_rows;
+	nods_data=x_data_rows;
+	nods_prime=x_prime_rows;
+
+	/* Run core computations: */
+	InterpFromMeshToMesh3dx(&data_prime,index_data,x_data,y_data,z_data,nods_data,nels_data,data,data_rows,x_prime,y_prime,z_prime,nods_prime,default_value);
+
+	/*Write data: */
+	WriteData(DATAPRIME,data_prime);
+
+	/*end module: */
+	xDelete<double>(index_data);
+	xDelete<double>(x_data);
+	xDelete<double>(y_data);
+	xDelete<double>(z_data);
+	xDelete<double>(data);
+	xDelete<double>(x_prime);
+	xDelete<double>(y_prime);
+	xDelete<double>(z_prime);
+	delete data_prime;
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.h	(revision 21239)
@@ -0,0 +1,63 @@
+/*!\file InterpFromMeshToMesh3d.h
+ * \brief: prototype for Data Interpolation mex module.
+ */
+
+#ifndef _INTERPFROMMESH3D_H
+#define _INTERPFROMMESH3D_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "InterpFromMeshToMesh3d"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define INDEXHANDLE   prhs[0]
+#define XHANDLE       prhs[1]
+#define YHANDLE       prhs[2]
+#define ZHANDLE       prhs[3]
+#define DATAHANDLE    prhs[4]
+#define XPRIMEHANDLE  prhs[5]
+#define YPRIMEHANDLE  prhs[6]
+#define ZPRIMEHANDLE  prhs[7]
+#define DEFAULTHANDLE prhs[8]
+/* serial output macros: */
+#define DATAPRIME (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define INDEXHANDLE   PyTuple_GetItem(args,0)
+#define XHANDLE       PyTuple_GetItem(args,1)
+#define YHANDLE       PyTuple_GetItem(args,2)
+#define ZHANDLE       PyTuple_GetItem(args,3)
+#define DATAHANDLE    PyTuple_GetItem(args,4)
+#define XPRIMEHANDLE  PyTuple_GetItem(args,5)
+#define YPRIMEHANDLE  PyTuple_GetItem(args,6)
+#define ZPRIMEHANDLE  PyTuple_GetItem(args,7)
+#define DEFAULTHANDLE PyTuple_GetItem(args,8)
+/* serial output macros: */
+#define DATAPRIME output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  9
+
+#endif  /* _INTERPFROMMESHTOMESH3D_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Issm/issm.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Issm/issm.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Issm/issm.cpp	(revision 21239)
@@ -0,0 +1,49 @@
+/*!\file:  issm.cpp
+ * \brief: ISSM main program
+ */ 
+
+#include "../../c/main/issm.h"
+
+extern "C" { 
+	int IssmModule(char** poutput,int* poutputsize, double* buffer, int buffersize, char* toolkits,char* solution,char* modelname){
+
+		/*output variables:*/
+		char* output=NULL;
+		size_t size;
+
+		/*Initialize exception trapping: */
+		ExceptionTrapBegin();
+
+		/*Initialize environment: */
+		ISSM_MPI_Comm comm_init=EnvironmentInit(0,NULL);
+
+		/*Initialize femmodel from arguments provided command line: */
+		FemModel *femmodel = new FemModel(buffer,buffersize,toolkits,solution,modelname,comm_init);
+
+		/*Solve: */
+		femmodel->Solve();
+
+		/*Output results: */
+		OutputResultsx(femmodel);
+
+		/*Wrap up: */
+		femmodel->CleanUpJs(&output,&size);
+
+		/*Delete Model: */
+		delete femmodel;
+		
+		/*Finalize environment:*/
+		EnvironmentFinalize();
+
+		/*Finalize exception trapping: */
+		ExceptionTrapEnd();
+
+		/*Assign output pointers:*/
+		*poutputsize=(int)size;
+		*poutput=output;
+
+		/*Return output stream: */
+		return 0 ;
+
+	} 
+} //extern "C" 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Issm/issm.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Issm/issm.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Issm/issm.js	(revision 21239)
@@ -0,0 +1,38 @@
+function issm(fid,toolkitstring,solutionstring,modelname){
+/*issm 
+	   usage: var output = issm(fid,toolkitstring);
+	      where: fid is a pointer to a memory buffer created by marshall, toolkitstring is a toolkits 
+		  string created by ToolkitsToFile and 
+		  output is a binary buffer to be read by loadresultsfromcluster.
+*/
+	
+	/*variables: */
+	var poutput,output,poutputsize,outputsize;
+	var dbinaryPtr,binHeap,binary,binarybuffer,nb
+
+	/*recover input buffer: */
+	binarybuffer=fid.rawbuffer(); //binarybuffer is now an arraybuffer
+	nb = fid.ptr; //size of array buffer in bytes.
+
+	/*dyanmically allocate the raw buffer onto the Module heap: */
+	dbinaryPtr= Module._malloc(nb); binHeap = new Uint8Array(Module.HEAPU8.buffer,dbinaryPtr,nb);
+	binHeap.set(new Uint8Array(binarybuffer)); binary=binHeap.byteOffset;
+
+	/*allocate output pointers: */
+	poutputsize = Module._malloc(4); 
+	poutput = Module._malloc(4); 
+
+	//Declare TriMesh module: 
+	issmmodule= Module.cwrap('IssmModule','number',['number','number','number','number','string','string','string']);
+	
+	//Call issm:
+	issmmodule(poutput, poutputsize,binary, nb, toolkitstring,solutionstring,modelname);
+
+	//recover outputs from pointers: 
+	var outputsize = Module.getValue(poutputsize,'i32');
+	
+	var outputptr = Module.getValue(poutput,'i32');
+	output = Module.HEAP8.slice(outputptr, outputptr + outputsize);
+	
+	return [output,outputsize];
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/IssmConfig/IssmConfig.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/IssmConfig/IssmConfig.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/IssmConfig/IssmConfig.cpp	(revision 21239)
@@ -0,0 +1,170 @@
+/*\file IssmConfig.c
+ *\brief: get configuration names
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./IssmConfig.h"
+
+void IssmConfigUsage(void){/*{{{*/
+	_printf0_("\n");
+	_printf0_("   usage: " << __FUNCT__ << "value = IssmConfig('string');\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(IssmConfig_python){
+
+	/*input/output*/
+	char       *name     = NULL;
+	bool        isstring = false;
+	IssmDouble  value    = 0.;
+	char       *svalue   = NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments: */
+	CHECKARGUMENTS(NLHS,NRHS,&IssmConfigUsage);
+
+	/*Fetch inputs: */
+	FetchData(&name,NAME);
+
+	/*Core*/
+	if(strcmp(name,"_HAVE_MPI_")==0){
+		#ifdef _HAVE_MPI_
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_HAVE_PETSC_MPI_")==0){
+		#ifdef _HAVE_PETSC_MPI_
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_HAVE_DAKOTA_")==0){
+		#ifdef _HAVE_DAKOTA_
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_HAVE_MUMPS_")==0){
+		#ifdef _HAVE_MUMPS_
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_HAVE_GSL_")==0){
+		#ifdef _HAVE_GSL_
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_HAVE_TAO_")==0){
+		#ifdef _HAVE_TAO_
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_HAVE_M1QN3_")==0){
+		#ifdef _HAVE_M1QN3_
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_HAVE_PETSC_")==0){
+		#ifdef _HAVE_PETSC_
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_PETSC_MAJOR_")==0){
+		#ifdef _PETSC_MAJOR_
+		value = IssmDouble(_PETSC_MAJOR_);
+		#else
+		_error_("_PETSC_MAJOR_ not found in config.h");
+		#endif
+	}
+	else if(strcmp(name,"_PETSC_MINOR_")==0){
+		#ifdef _PETSC_MINOR_
+		value = IssmDouble(_PETSC_MINOR_);
+		#else
+		_error_("_PETSC_MINOR_ not found in config.h");
+		#endif
+	}
+	else if(strcmp(name,"_DAKOTA_VERSION_")==0){
+		#ifdef _DAKOTA_VERSION_
+		isstring = true;
+		svalue =xNew<char>(strlen(_DAKOTA_VERSION_)+1);
+		xMemCpy<char>(svalue,_DAKOTA_VERSION_,(strlen(_DAKOTA_VERSION_)+1));
+		#else
+		_error_("_DAKOTA_VERSION_ not found in config.h");
+		#endif
+	}
+	else if(strcmp(name,"ISSM_PREFIX")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(ISSM_PREFIX)+1);
+		xMemCpy<char>(svalue,ISSM_PREFIX,(strlen(ISSM_PREFIX)+1));
+	}
+	else if(strcmp(name,"PACKAGE_NAME")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(PACKAGE_NAME)+1);
+		xMemCpy<char>(svalue,PACKAGE_NAME,(strlen(PACKAGE_NAME)+1));
+	}
+	else if(strcmp(name,"PACKAGE_VERSION")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(PACKAGE_VERSION)+1);
+		xMemCpy<char>(svalue,PACKAGE_VERSION,(strlen(PACKAGE_VERSION)+1));
+	}
+	else if(strcmp(name,"PACKAGE_URL")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(PACKAGE_URL)+1);
+		xMemCpy<char>(svalue,PACKAGE_URL,(strlen(PACKAGE_URL)+1));
+	}
+	else if(strcmp(name,"PACKAGE_BUGREPORT")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(PACKAGE_BUGREPORT)+1);
+		xMemCpy<char>(svalue,PACKAGE_BUGREPORT,(strlen(PACKAGE_BUGREPORT)+1));
+	}
+	else if(strcmp(name,"PACKAGE_BUILD_DATE")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(PACKAGE_BUILD_DATE)+1);
+		xMemCpy<char>(svalue,PACKAGE_BUILD_DATE,(strlen(PACKAGE_BUILD_DATE)+1));
+	}
+	else if(strcmp(name,"HOST_OS")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(HOST_OS)+1);
+		xMemCpy<char>(svalue,HOST_OS,(strlen(HOST_OS)+1));
+	}
+	else if(strcmp(name,"USER_NAME")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(USER_NAME)+1);
+		xMemCpy<char>(svalue,USER_NAME,(strlen(USER_NAME)+1));
+	}
+	else if(strcmp(name,"HOST_VENDOR")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(HOST_VENDOR)+1);
+		xMemCpy<char>(svalue,HOST_VENDOR,(strlen(HOST_VENDOR)+1));
+	}
+	else if(strcmp(name,"HOST_OS")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(HOST_OS)+1);
+		xMemCpy<char>(svalue,HOST_OS,(strlen(HOST_OS)+1));
+	}
+	else if(strcmp(name,"HOST_ARCH")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(HOST_ARCH)+1);
+		xMemCpy<char>(svalue,HOST_ARCH,(strlen(HOST_ARCH)+1));
+	}
+	else{
+		_error_("variable " << name << " not supported yet");
+	}
+
+	/* output: */
+	if(isstring)
+	 WriteData(SVALUE,svalue);
+	else
+	 WriteData(VALUE,value);
+
+	/*Clean up*/
+	xDelete<char>(name);
+	xDelete<char>(svalue);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/IssmConfig/IssmConfig.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/IssmConfig/IssmConfig.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/IssmConfig/IssmConfig.h	(revision 21239)
@@ -0,0 +1,59 @@
+/*!\file:  IssmConfig.h
+ * \brief header file for IssmConfig module.
+ */ 
+
+#ifndef _ISSMCONFIG_H
+#define _ISSMCONFIG_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+/*Header files: */
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "IssmConfig"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define NAME (mxArray*)prhs[0]
+/* serial output macros: */
+#define VALUE (mxArray**)&plhs[0]
+#define SVALUE (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define NAME PyTuple_GetItem(args,0)
+/* serial output macros: */
+#define VALUE output,0
+#define SVALUE output,0
+#endif
+
+
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define NAME string
+/* serial output macros: */
+#define VALUE pvalue
+#define SVALUE psvalue
+#define WRAPPER(modulename) extern "C" { int  IssmConfigModule(double* pvalue, char** psvalue, char* string)
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  1
+
+#endif  /* _TEST_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/IssmConfig/IssmConfig.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/IssmConfig/IssmConfig.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/IssmConfig/IssmConfig.js	(revision 21239)
@@ -0,0 +1,24 @@
+function IssmConfig(string){
+/*IssmConfig 
+	   usage: var config = IssmConfig('_HAVE_PETSC_');
+*/
+
+	//output
+	var pvalue= Module._malloc(4); 
+	var psvalue= Module._malloc(4); 
+
+	//Declare IssmConfig module: 
+	IssmConfigModule = Module.cwrap('IssmConfigModule','number',['number','string','string']);
+	
+	//Call IssmConfig module: 
+	IssmConfigModule(pvalue, psvalue, string);
+	
+	/*Dynamic copying from heap: {{{*/
+	var value = Module.getValue(pvalue, 'double');
+	/*}}}*/
+
+	/*Free ressources: */
+	Module._free(pvalue); 
+
+	return value;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Kriging/Kriging.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Kriging/Kriging.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Kriging/Kriging.cpp	(revision 21239)
@@ -0,0 +1,78 @@
+/*\file Kriging.c
+ *\brief: best linear predictor
+ */
+#include "./Kriging.h"
+
+void KrigingUsage(void){/*{{{*/
+	int num=1;
+#ifdef _MULTITHREADING_
+	num=_NUMTHREADS_;
+#endif
+	_printf0_("\n");
+	_printf0_("   usage: predictions=" << __FUNCT__ << "(x,y,observations,x_interp,y_interp,'options');\n");
+	_printf0_("   available options:\n");
+	_printf0_("      -'model': Available variogram models 'gaussian' (default),'spherical','power','exponential'\n");
+	_printf0_("         -'nugget': nugget effect (default 0.2)\n");
+	_printf0_("         -'range':  for gaussian, spherical and exponential models (default sqrt(3))\n");
+	_printf0_("         -'sill':   for gaussian, spherical and exponential models (default 1)\n");
+	_printf0_("         -'slope':  for power model (default 1)\n");
+	_printf0_("         -'power':  for power model (default 1)\n");
+	_printf0_("      -'searchradius': search radius for each prediction (default is observations span)\n");
+	_printf0_("      -'boxlength':    minimum length of quadtree boxes (useful to decrease the number of observations)\n");
+	_printf0_("      -'maxdata':      minimum number of observations for a prediction (default is 50)\n");
+	_printf0_("      -'mindata':      maximum number of observations for a prediction (default is 1)\n");
+	_printf0_("      -'maxtrimming':  maximum trimming value (default is -1.e+21)\n");
+	_printf0_("      -'mintrimming':  minimum trimming value (default is +1.e+21)\n");
+	_printf0_("      -'minspacing':   minimum distance between observation (default is 0.01)\n");
+	_printf0_("      -'numthreads':   number of threads, default is "<<num << "\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(Kriging_python){
+
+	/*Outputs*/
+	double  *x            = NULL;
+	double  *y            = NULL;
+	double  *observations = NULL;
+	double  *x_interp     = NULL;
+	double  *y_interp     = NULL;
+	double  *predictions  = NULL;
+	double  *error        = NULL;
+	Options *options      = NULL;
+	int      N_interp,M_interp,M,N,n_obs;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	if (nrhs<NRHS || nlhs>NLHS){
+		KrigingUsage(); _error_("Kriging usage error");
+	}
+
+	/*Fetch inputs: */
+	FetchData(&x,&n_obs,X);
+	FetchData(&y,&N,Y);                       if(n_obs!=N) _error_("x and y should have the same size");
+	FetchData(&observations,&N,OBSERVATIONS); if(n_obs!=N) _error_("x and observations should have the same size");
+	FetchData(&x_interp,&M_interp,&N_interp,XINTERP);
+	FetchData(&y_interp,&M,&N,YINTERP);       if(N!=N_interp || M!=M_interp) _error_("x_interp and y_interp should have the same size");
+	FetchData(&options,NRHS,nrhs,prhs);
+
+	/*Call x layer*/
+	Krigingx(&predictions,&error,x,y,observations,n_obs,x_interp,y_interp,M_interp*N_interp,options);
+
+	/*Generate output Matlab Structures*/
+	if(nlhs>=1) WriteData(PREDICTIONS,predictions,M_interp,N_interp);
+	if(nlhs==2) WriteData(ERROR,error,M_interp,N_interp);
+
+	/*Free ressources: */
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<double>(observations);
+	xDelete<double>(x_interp);
+	xDelete<double>(y_interp);
+	xDelete<double>(predictions);
+	xDelete<double>(error);
+	delete options;
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Kriging/Kriging.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Kriging/Kriging.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Kriging/Kriging.h	(revision 21239)
@@ -0,0 +1,59 @@
+/*
+	Kriging.h
+*/
+
+#ifndef _KRIGING_H_
+#define _KRIGING_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "Kriging"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define X            prhs[0]
+#define Y            prhs[1]
+#define OBSERVATIONS prhs[2]
+#define XINTERP      prhs[3]
+#define YINTERP      prhs[4]
+
+/* serial output macros: */
+#define PREDICTIONS (mxArray**)&plhs[0]
+#define ERROR       (mxArray**)&plhs[1]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define X            PyTuple_GetItem(args,0)
+#define Y            PyTuple_GetItem(args,1)
+#define OBSERVATIONS PyTuple_GetItem(args,2)
+#define XINTERP      PyTuple_GetItem(args,3)
+#define YINTERP      PyTuple_GetItem(args,4)
+
+/* serial output macros: */
+#define PREDICTIONS output,0
+#define ERROR       output,1
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  2
+#undef NRHS
+#define NRHS  5
+
+#endif  /* _KRIGING_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/M1qn3/M1qn3.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/M1qn3/M1qn3.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/M1qn3/M1qn3.cpp	(revision 21239)
@@ -0,0 +1,191 @@
+/*!\file M1qn3.c
+ * \brief: data interpolation from a list of (x,y,values) into mesh vertices
+*/
+
+#include "./M1qn3.h"
+
+#ifdef _HAVE_M1QN3_
+/*m1qn3 prototypes {{{*/
+extern "C" void *ctonbe_; // DIS mode : Conversion
+extern "C" void *ctcabe_; // DIS mode : Conversion
+extern "C" void *euclid_; // Scalar product
+typedef void (*SimulFunc) (long* indic,long* n, double* x, double* pf,double* g,long [],float [],void* dzs);
+extern "C" void m1qn3_ (void f(long* indic,long* n, double* x, double* pf,double* g,long [],float [],void* dzs),
+			void **, void **, void **,
+			long *, double [], double *, double [], double*, double *,
+			double *, char [], long *, long *, long *, long *, long *, long *, long [], double [], long *,
+			long *, long *, long [], float [],void* );
+/*Cost function prototype*/
+void fakesimul(long* indic,long* n,double* X,double* pf,double* G,long izs[1],float rzs[1],void* dzs);
+typedef struct {
+	int priorn; 
+	int counter; 
+	double* Gs; 
+	double* Xs;
+	double* Js;
+} Data; 
+/*}}}*/
+void M1qn3Usage(void){/*{{{*/
+	_printf0_("   usage:\n");
+	_printf0_("         X=M1qn3(Xs,Gs);\n");
+	_printf0_("   where:\n");
+	_printf0_("      Xs are the X values (m x n, where m is the number of independents, n the number of evaluations previously carried out on X)\n");
+	_printf0_("      Gs are the G (gradient) values (m x n, where m is the number of independents, n the number of evaluations previously carried out on X,G)\n");
+	_printf0_("      X - the new direction.\n");
+	_printf0_("\n");
+}/*}}}*/
+#endif
+WRAPPER(M1qn3_python){
+
+#ifdef _HAVE_M1QN3_
+	/*input: */
+	double* Xs=NULL;
+	double* Gs=NULL;
+	double* Js=NULL;
+	int     intn;
+	int     priorn;
+	int     maxsteps,maxiter;
+	Data    data_struct;
+
+	/* output: */
+	double* X_out = NULL;
+
+	/*intermediary: */
+	double* G=NULL;
+	double* X=NULL;
+	double f;
+	double dxmin=.01;
+	double gttol=.0001;
+	long   omode;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	if(nlhs!=NLHS){
+		M1qn3Usage();
+		_error_("M1qn3 usage error");
+	}
+	if(nrhs!=5){
+		M1qn3Usage();
+		_error_("M1qn3 usage error");
+	}
+
+	/*Input datasets: */
+	FetchData(&Xs,&intn,&priorn,XHANDLE);
+	FetchData(&Gs,&intn,&priorn,GHANDLE);
+	FetchData(&Js,&priorn,JHANDLE);
+	FetchData(&maxsteps,MAXSTEPSHANDLE);
+	FetchData(&maxiter,MAXITERHANDLE);
+
+	/*_printf_("Xs: " << Xs[0] << "\n");
+	_printf_("Gs: " << Gs[0] << "\n");
+	_printf_("Js: " << Js[0] << "\n");
+	_printf_("maxiter: " << maxiter << "\n");
+	_printf_("maxsteps: " << maxsteps << "\n");*/
+
+	/*Initialize M1QN3 parameters*/
+	SimulFunc costfuncion  = &fakesimul;  /*Cost function address*/
+	void**    prosca       = &euclid_;  /*Dot product function (euclid is the default)*/
+	char      normtype[]   = "dfn";     /*Norm type: dfn = scalar product defined by prosca*/
+	long      izs[5];                   /*Arrays used by m1qn3 subroutines*/
+	long      iz[5];                    /*Integer m1qn3 working array of size 5*/
+	float     rzs[1];                   /*Arrays used by m1qn3 subroutines*/
+	long      impres       = 0;         /*verbosity level*/
+	long      imode[3]     = {0};       /*scaling and starting mode, 0 by default*/
+	long      indic        = 4;         /*compute f and g*/
+	long      reverse      = 0;         /*reverse or direct mode*/
+	long      io           = 6;         /*Channel number for the output*/
+
+	/*Optimization criterions*/
+	long niter = long(maxsteps); /*Maximum number of iterations*/
+	long nsim  = long(maxiter);/*Maximum number of function calls*/
+
+	/*Get problem dimension and initialize X, G and f: */
+	/*_printf_("intn: " << intn << "\n");
+	_printf_("priorn: " << priorn << "\n");*/
+	long n = long(intn);
+	IssmPDouble* G = xNew<IssmPDouble>(n); for (int i=0;i<n;i++)G[i]=Gs[i*priorn];
+	IssmPDouble* X = xNew<IssmPDouble>(n); for (int i=0;i<n;i++)X[i]=Xs[i*priorn];
+	f = Js[0];
+	
+	/*_printf_("X: " << X[0] << "\n");
+	_printf_("G: " << G[0] << "\n");
+	_printf_("J: " << f << "\n");
+	_printf_("n: " << n << "\n");*/
+
+
+	/*Allocate m1qn3 working arrays (see doc)*/
+	long      m   = 100;
+	long      ndz = 4*n+m*(2*n+1);
+	double*   dz  = xNew<double>(ndz);
+	double f1=f;
+
+	/*Initialize: */
+	data_struct.priorn=priorn;
+	data_struct.counter=0;
+	data_struct.Gs=Gs;
+	data_struct.Js=Js;
+	data_struct.Xs=Xs;
+
+	m1qn3_(costfuncion,prosca,&ctonbe_,&ctcabe_,
+				&n,X,&f,G,&dxmin,&f1,
+				&gttol,normtype,&impres,&io,imode,&omode,&niter,&nsim,iz,dz,&ndz,
+				&reverse,&indic,izs,rzs,(void*)&data_struct);
+
+	switch(int(omode)){
+		case 0: /*_printf0_("   Stop requested (indic = 0)\n"); */ break;
+		case 1:  _printf0_("   Convergence reached (gradient satisfies stopping criterion)\n"); break;
+		case 2:  _printf0_("   Bad initialization\n"); break;
+		case 3:  _printf0_("   Line search failure\n"); break;
+		case 4:  _printf0_("   Maximum number of iterations exceeded\n");break;
+		case 5:  _printf0_("   Maximum number of function calls exceeded\n"); break;
+		case 6:  _printf0_("   stopped on dxmin during line search\n"); break;
+		case 7:  _printf0_("   <g,d> > 0  or  <y,s> <0\n"); break;
+		default: _printf0_("   Unknown end condition\n");
+	}
+
+	/*build output: */
+	X_out=xNew<IssmPDouble>(n);
+	for(int i=0;i<n;i++)X_out[i]=X[i];
+
+	/*Write data: */
+	WriteData(XOUT,X_out,n);
+
+	/*end module: */
+	xDelete<double>(Xs);
+	xDelete<double>(Gs);
+	xDelete<double>(Js);
+	xDelete<double>(X_out);
+	xDelete<double>(G);
+	xDelete<double>(X);
+	MODULEEND();
+	#else
+	_error_("m1qn3 is not installed");
+	#endif
+}
+
+
+#ifdef _HAVE_M1QN3_
+void fakesimul(long* indic,long* n,double* X,double* pf,double* G,long izs[1],float rzs[1],void* dzs){
+
+	Data* ds=(Data*)dzs;
+	double* Xs=ds->Xs;
+	double* Gs=ds->Gs;
+	double* Js=ds->Js;
+	
+	/*Are we done? : */
+	if(ds->counter+1==ds->priorn){
+		*indic=0;
+		return;
+	}
+	else{
+		//_printf0_("counter: " << ds->counter << "\n");
+		ds->counter++;
+		*pf=Js[ds->counter];
+		for(int i=0;i<*n;i++)X[i]=Xs[ds->priorn*i+ds->counter];
+		for(int i=0;i<*n;i++)G[i]=Gs[ds->priorn*i+ds->counter];
+	}
+
+}
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/M1qn3/M1qn3.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/M1qn3/M1qn3.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/M1qn3/M1qn3.h	(revision 21239)
@@ -0,0 +1,53 @@
+/*!\file M1qn3.h
+ * \brief: prototype for Data Interpolation mex module.
+ */
+
+#ifndef _M1QN3_WRAPPER_H
+#define _M1QN3_WRAPPER_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "M1qn3"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define XHANDLE       prhs[0]
+#define GHANDLE       prhs[1]
+#define JHANDLE       prhs[2]
+#define MAXSTEPSHANDLE prhs[3]
+#define MAXITERHANDLE prhs[4]
+/* serial output macros: */
+#define XOUT (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define XHANDLE   PyTuple_GetItem(args,0)
+#define GHANDLE       PyTuple_GetItem(args,1)
+#define JHANDLE       PyTuple_GetItem(args,2)
+#define MAXSTEPSHANDLE PyTuple_GetItem(args,3)
+#define MAXITERHANDLE PyTuple_GetItem(args,4)
+/* serial output macros: */
+#define XOUT output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+
+#endif  /* _M1QN3_WRAPPER_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Makefile.am
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Makefile.am	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Makefile.am	(revision 21239)
@@ -0,0 +1,15 @@
+SUBDIRS = 
+
+if WRAPPERS
+if MATLAB
+SUBDIRS += matlab
+endif
+
+if JAVASCRIPT
+SUBDIRS += javascript
+endif
+
+if PYTHON
+SUBDIRS += python
+endif
+endif 
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/MeshPartition/MeshPartition.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/MeshPartition/MeshPartition.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/MeshPartition/MeshPartition.cpp	(revision 21239)
@@ -0,0 +1,100 @@
+/*!\file:  MeshPartition.cpp
+ * \brief: partition mesh according to number of areas, using Metis library.
+*/
+
+#include "./MeshPartition.h"
+
+void MeshPartitionUsage(void){/*{{{*/
+	_printf_("   usage:\n");
+	_printf_("   [element_partitioning,node_partitioning]=MeshPartition(md.mesh,numpartitions)");
+	_printf_("   where:\n");
+	_printf_("      element_partitioning is a vector of partitioning area numbers, for every element.\n");
+	_printf_("      node_partitioning is a vector of partitioning area numbers, for every node.\n");
+	_printf_("\n");
+}/*}}}*/
+WRAPPER(MeshPartition_python){
+
+	/*Indexing: */
+	int i,j;
+
+	/* required input: */
+	int  meshelementtype;
+	int  numberofelements;
+	int  numberofvertices;
+	int *elements         = NULL;
+	int  elements_width;
+
+	int numberofelements2d;
+	int numberofvertices2d;
+	int* elements2d=NULL;
+
+	int numberoflayers;
+	int numareas=1;
+
+	/* output: */
+	int    *int_element_partitioning = NULL;
+	int    *int_node_partitioning    = NULL;
+	double *element_partitioning     = NULL;
+	double *node_partitioning        = NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&MeshPartitionUsage);
+
+	/*Fetch data: */
+	FetchData(&numberofelements,mxGetAssignedField(MESH,0,"numberofelements"));
+	FetchData(&numberofvertices,mxGetAssignedField(MESH,0,"numberofvertices"));
+	FetchData(&elements,NULL,&elements_width,mxGetAssignedField(MESH,0,"elements"));
+
+	if(strcmp(mxGetClassName(MESH),"mesh3dprisms")==0){
+		meshelementtype = PentaEnum;
+		FetchData(&numberofelements2d,mxGetAssignedField(MESH,0,"numberofelements2d"));
+		FetchData(&numberofvertices2d,mxGetAssignedField(MESH,0,"numberofvertices2d"));
+		FetchData(&elements2d,NULL,NULL,mxGetAssignedField(MESH,0,"elements2d"));
+		FetchData(&numberoflayers,mxGetAssignedField(MESH,0,"numberoflayers"));
+	}
+	else if(strcmp(mxGetClassName(MESH),"mesh2dhorizontal")==0){
+		meshelementtype = TriaEnum;
+		numberoflayers=1;
+	}
+	else if(strcmp(mxGetClassName(MESH),"mesh2dvertical")==0){
+		meshelementtype = TriaEnum;
+		numberoflayers=1;
+	}
+	else{
+		_error_("Mesh type "<<mxGetClassName(MESH)<<" not supported yet");
+	}
+	FetchData(&numareas,NUMAREAS);
+
+	/*Run partitioning algorithm based on a "clever" use of the Metis partitioner: */
+	MeshPartitionx(&int_element_partitioning,&int_node_partitioning,numberofelements,numberofvertices,elements,
+		numberofelements2d,numberofvertices2d,elements2d,numberoflayers,elements_width,meshelementtype,numareas);
+
+	/*Post process node_partitioning and element_partitioning to be in double format. Metis needed them in int* format: */
+	element_partitioning=xNew<double>(numberofelements);
+	for (i=0;i<numberofelements;i++){
+		element_partitioning[i]=(double)int_element_partitioning[i]+1; //Metis indexing from 0, matlab from 1.
+	}
+
+	node_partitioning=xNew<double>(numberofvertices);
+	for (i=0;i<numberofvertices;i++){
+		node_partitioning[i]=(double)int_node_partitioning[i]+1; //Metis indexing from 0, matlab from 1.
+	}
+
+	/*Write data:*/
+	WriteData(ELEMENTPARTITIONING,element_partitioning,numberofelements);
+	WriteData(NODEPARTITIONING,node_partitioning,numberofvertices);
+
+	/*Free ressources:*/
+	xDelete<int>(elements);
+	xDelete<int>( elements2d);
+	xDelete<int>(int_element_partitioning);
+	xDelete<int>(int_node_partitioning);
+	xDelete<double>(element_partitioning);
+	xDelete<double>(node_partitioning);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/MeshPartition/MeshPartition.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/MeshPartition/MeshPartition.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/MeshPartition/MeshPartition.h	(revision 21239)
@@ -0,0 +1,51 @@
+/*
+	MeshPartition.h
+*/
+
+#ifndef _MESHPARTITION_H
+#define _MESHPARTITION_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "MeshPartition"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define MESH    prhs[0]
+#define NUMAREAS prhs[1]
+/* serial output macros: */
+#define ELEMENTPARTITIONING (mxArray**)&plhs[0]
+#define NODEPARTITIONING (mxArray**)&plhs[1]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define MESH     PyTuple_GetItem(args,0)
+#define NUMAREAS PyTuple_GetItem(args,1)
+/* serial output macros: */
+#define ELEMENTPARTITIONING output,0
+#define NODEPARTITIONING output,1
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  2
+#undef NRHS
+#define NRHS  2
+
+#endif  /* _MESHPARTITION_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.cpp	(revision 21239)
@@ -0,0 +1,100 @@
+/*! \file  MeshProfileIntersection.cpp
+    \brief: takes a  .exp file (made of several profiles), and figures out its intersection 
+	with a mesh.
+
+	usage:
+	[segments]=MeshProfileIntersection(index,x,y,filename);
+
+	where:
+	input:
+		index,x,y is a triangulation
+		filename: name of Argus style .exp file containing the segments (can be groups of disconnected segments)
+	output:
+		segments: array made of x1,y1,x2,y2,element_id lines (x1,y1) and (x2,y2) are segment extremities for a segment 
+		belonging to the elemnt_id element. there are as many lines in segments as there are segments intersecting the 
+		mesh.
+*/
+
+#include "./MeshProfileIntersection.h"
+
+void MeshProfileIntersectionUsage(void){/*{{{*/
+	_printf_("   usage:\n");
+	_printf_("   [segments]=MeshProfileIntersection(index,x,y,filename);\n");
+	_printf_("   where:\n");
+	_printf_("   input:\n");
+	_printf_("        index,x,y is a triangulation\n");
+	_printf_("        filename: name of Argus style .exp file containing the segments (can be groups of disconnected segments)\n");
+	_printf_("   output:\n");
+	_printf_("        segments: array made of x1,y1,x2,y2,element_id lines (x1,y1) and (x2,y2) are segment extremities for a segment \n");
+	_printf_("        belonging to the elemnt_id element. there are as many lines in segments as there are segments intersecting the \n");
+	_printf_("        mesh.\n");
+}/*}}}*/
+WRAPPER(MeshProfileIntersection_python){
+
+	int i,j;
+
+	/* required input: */
+	//mesh
+	double *double_index = NULL;
+	int    *index        = NULL;
+	int     nel;
+	double *x            = NULL;
+	double *y            = NULL;
+	int     nods;
+	int     dummy;
+
+	//contours
+	Contours         *domain      = NULL;
+	Contour<double> **contours=NULL;
+	int               numcontours;
+	Contour<double>  *contouri=NULL;
+
+	/* output: */
+	double* segments=NULL;
+	int     numsegs;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments: */
+	CHECKARGUMENTS(NLHS,NRHS,&MeshProfileIntersectionUsage);
+
+	/*Fetch inputs: */
+	//index
+	FetchData(&double_index,&nel,&dummy,INDEX);
+	if(dummy!=3 && dummy!=6)_error_("element triangulation should be of 3 or 6 column width!");
+	index=xNew<int>(nel*3);
+	for(i=0;i<nel;i++){
+		for(j=0;j<3;j++){
+			*(index+3*i+j)=(int)*(double_index+dummy*i+j)-1; //"C" style indexing
+		}
+	}
+	//x and y
+	FetchData(&x,&nods,X);
+	FetchData(&y,&dummy,Y);
+
+	//contours
+	FetchData(&domain,FILENAME);
+	// MeshProfileIntersectionx should be modified to take DataSet directly (and perhaps IssmDenseMat and IssmSeqVec).
+	numcontours=domain->Size();
+	contours=xNew<Contour<double>*>(numcontours);
+	for(i=0;i<numcontours;i++)
+		*(contours+i)=(Contour<double>*)domain->GetObjectByOffset(i);
+
+	/*Run interpolation routine: */
+	MeshProfileIntersectionx(&segments,&numsegs,index,x,y,nel,nods,contours,numcontours);
+
+	/* output: */
+	WriteData(SEGMENTS,segments,numsegs,5);
+
+	/*end module: */
+	xDelete<double>(double_index);
+	xDelete<int>(index);
+	xDelete<double>(x);
+	xDelete<double>(y);
+	delete domain;
+	delete contouri;
+	xDelete<double>(segments);
+	MODULEEND();
+
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.h	(revision 21239)
@@ -0,0 +1,53 @@
+/*
+	MeshProfileIntersection.h
+*/
+
+#ifndef _MESHPROFILEINTERSECTION_H
+#define _MESHPROFILEINTERSECTION_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__
+#define __FUNCT__ "MeshProfileIntersection"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* input macros: */
+#define INDEX    prhs[0]
+#define X        prhs[1]
+#define Y        prhs[2]
+#define FILENAME prhs[3]
+/* serial output macros: */
+#define SEGMENTS (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* input macros: */
+#define INDEX    PyTuple_GetItem(args,0)
+#define X        PyTuple_GetItem(args,1)
+#define Y        PyTuple_GetItem(args,2)
+#define FILENAME PyTuple_GetItem(args,3)
+/* serial output macros: */
+#define SEGMENTS output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS 1
+#undef NRHS
+#define NRHS 4
+
+#endif  /* _MESHPROFILEINTERSECTION_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/NodeConnectivity/NodeConnectivity.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/NodeConnectivity/NodeConnectivity.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/NodeConnectivity/NodeConnectivity.cpp	(revision 21239)
@@ -0,0 +1,43 @@
+/*\file NodeConnectivity.c
+ *\brief: build node connectivity from elements. 
+ */
+
+#include "./NodeConnectivity.h"
+
+void NodeConnectivityUsage(void){/*{{{*/
+	_printf0_("\n");
+	_printf0_("   usage: connectivity = " << __FUNCT__ << "(elements, numnodes);\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(NodeConnectivity_python){
+
+	/*inputs: */
+	int* elements=NULL;
+	int  nels;
+	int  nods;
+
+	/*outputs: */
+	int* connectivity=NULL;
+	int  width;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments: */
+	CHECKARGUMENTS(NLHS,NRHS,&NodeConnectivityUsage);
+
+	/*Input datasets: */
+	FetchData(&elements,&nels,NULL,ELEMENTS);
+	FetchData(&nods,NUMNODES);
+
+	/*!Generate internal degree of freedom numbers: */
+	NodeConnectivityx(&connectivity,&width,elements,nels,nods);
+
+	/*write output datasets: */
+	WriteData(CONNECTIVITY,connectivity,nods,width);
+
+	/*end module: */
+	xDelete<int>(elements);
+	xDelete<int>(connectivity);
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/NodeConnectivity/NodeConnectivity.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/NodeConnectivity/NodeConnectivity.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/NodeConnectivity/NodeConnectivity.h	(revision 21239)
@@ -0,0 +1,61 @@
+/*
+	NodeConnectivity.h
+*/
+
+#ifndef _NODECONNECTIVITY_H
+#define _NODECONNECTIVITY_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#undef __FUNCT__ 
+#define __FUNCT__  "NodeConnectivity"
+
+/*Header files: */
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/toolkits/toolkits.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../../c/shared/io/io.h"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define ELEMENTS prhs[0]
+#define NUMNODES prhs[1]
+/* serial output macros: */
+#define CONNECTIVITY (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define ELEMENTS PyTuple_GetItem(args,0)
+#define NUMNODES PyTuple_GetItem(args,1)
+/* serial output macros: */
+#define CONNECTIVITY output,0
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define ELEMENTS elementsin, nelsin,3
+#define NUMNODES nodsin
+/* serial output macros: */
+#define CONNECTIVITY pconnectivity,pnods,pwidth
+#define WRAPPER(modulename) extern "C" { int  NodeConnectivityModule(double** pconnectivity, int* pnods, int *pwidth, int* elementsin, int nelsin, int nodsin)
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  2
+
+#endif  /* _NODECONNECTIVITY_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/NodeConnectivity/NodeConnectivity.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/NodeConnectivity/NodeConnectivity.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/NodeConnectivity/NodeConnectivity.js	(revision 21239)
@@ -0,0 +1,43 @@
+function NodeConnectivity(elementsin,nods){
+/*NodeConnectivity 
+	   usage: var md.mesh.vertexconnectivity = NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+*/
+
+	//Dynamic allocations: {{{
+	//Retrieve elements and allocate on Module heap: 
+	
+	//input
+	var delements=new Int32Array(MatrixToList(elementsin)); var nelements=delements.length * delements.BYTES_PER_ELEMENT;
+	var delementsPtr= Module._malloc(nelements); var elementsHeap = new Uint8Array(Module.HEAPU8.buffer,delementsPtr,nelements);
+	elementsHeap.set(new Uint8Array(delements.buffer)); var elements=elementsHeap.byteOffset;
+
+	//output
+	var width,connectivitylinear,connectivity;
+	var pwidth= Module._malloc(4); 
+	var pnods= Module._malloc(4); 
+	var pconnectivity= Module._malloc(4); 
+	var nels=elementsin.length;
+	//}}}
+
+	//Declare NodeConnectivity module: 
+	NodeConnectivityModule = Module.cwrap('NodeConnectivityModule','number',['number','number','number','number']);
+	
+	//Call NodeConnectivity module: 
+	NodeConnectivityModule(pconnectivity,pnods,pwidth,elements,nels,nods);
+	
+	/*Dynamic copying from heap: {{{*/
+	//recover mesh: 
+	width = Module.getValue(pwidth, 'i32');
+	var connectivityptr = Module.getValue(pconnectivity,'i32');
+	connectivitylinear = Module.HEAPF64.slice(connectivityptr /8, connectivityptr/8 + nods*width);
+	connectivity = ListToMatrix(connectivitylinear,width);
+	/*}}}*/
+
+	/*Free ressources: */
+	Module._free(pconnectivity); 
+	Module._free(connectivitylinear); 
+	Module._free(pwidth); 
+	Module._free(pnods); 
+
+	return connectivity;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/PointCloudFindNeighbors/PointCloudFindNeighbors.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/PointCloudFindNeighbors/PointCloudFindNeighbors.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/PointCloudFindNeighbors/PointCloudFindNeighbors.cpp	(revision 21239)
@@ -0,0 +1,55 @@
+/*! \file  PointCloudFindNeighbors
+    \brief: flag points that are too near one another, within an array of point coordinates
+*/
+
+#include "./PointCloudFindNeighbors.h"
+
+void PointCloudFindNeighborsUsage(void){/*{{{*/
+	_printf_("   usage:\n");
+	_printf_("   [flags]=PointCloudFindNeighbors(x,y,mindistance,multithread);\n");
+	_printf_("   where:\n");
+	_printf_("      x,y: list of points.\n");
+	_printf_("      mindistance: minimum distance that should exist between points in the cloud.\n");
+	_printf_("      multithread: run multithreaded or not. with multithreads, flags can get 1 and 2 values in duplicates.\n");
+	_printf_("      flags: array of flags (flag==1 means point is within mindistance of another point)\n");
+	_printf_("\n");
+}/*}}}*/
+WRAPPER(PointCloudFindNeighbors_python){
+
+	int i,j;
+
+	/* required input: */
+	double *x = NULL;
+	double *y = NULL;
+	int     nods;
+	double  mindistance;
+	double  multithread;
+
+	/* output: */
+	IssmSeqVec<double> *flags = NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&PointCloudFindNeighborsUsage);
+
+	/*Fetch inputs: */
+	FetchData(&x,&nods,NULL,XHANDLE);  
+	FetchData(&y,NULL,NULL,YHANDLE);
+	FetchData(&mindistance,MINDISTANCE);
+	FetchData(&multithread,MULTITHREAD);
+
+	/*Run core routine: */
+	PointCloudFindNeighborsx(&flags,x,y,nods,mindistance,multithread);
+
+	/* output: */
+	WriteData(FLAGS,flags);
+
+	/*end module: */
+	xDelete<double>(x);
+	xDelete<double>(y);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/PointCloudFindNeighbors/PointCloudFindNeighbors.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/PointCloudFindNeighbors/PointCloudFindNeighbors.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/PointCloudFindNeighbors/PointCloudFindNeighbors.h	(revision 21239)
@@ -0,0 +1,53 @@
+/*
+	PointCloudFindNeighbors.h
+*/
+
+#ifndef _POINTCLOUDFINDNEIGHBORS_H
+#define _POINTCLOUDFINDNEIGHBORS_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__
+#define __FUNCT__ "PointCloudFindNeighbors"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* input macros: */
+#define XHANDLE     prhs[0]
+#define YHANDLE     prhs[1]
+#define MINDISTANCE prhs[2]
+#define MULTITHREAD prhs[3]
+/* serial output macros: */
+#define FLAGS (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* input macros: */
+#define XHANDLE     PyTuple_GetItem(args,0)
+#define YHANDLE     PyTuple_GetItem(args,1)
+#define MINDISTANCE PyTuple_GetItem(args,2)
+#define MULTITHREAD PyTuple_GetItem(args,3)
+/* serial output macros: */
+#define FLAGS output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS 1
+#undef NRHS
+#define NRHS 4
+
+#endif  /* _POINTCLOUDFINDNEIGHBORS_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.cpp	(revision 21239)
@@ -0,0 +1,47 @@
+/*\file PropagateFlagsFromConnectivity.c
+ *\brief: propagate flags onto mesh, element by element, using connectivity.
+ */
+
+#include "./PropagateFlagsFromConnectivity.h"
+
+void PropagateFlagsFromConnectivityUsage(void) {/*{{{*/
+	_printf_("\n");
+	_printf_("   usage: [pool] = " << __FUNCT__ << "(connectivity,pool,index,flags);\n");;
+	_printf_("\n");
+}/*}}}*/
+WRAPPER(PropagateFlagsFromConnectivity_python){
+
+	/*input/output datasets: */
+	double* connectivity=NULL;
+	int     nel;
+	double* pool=NULL;
+	double* flags=NULL;
+	int     index;
+	int     dummy;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&PropagateFlagsFromConnectivityUsage);
+
+	/*Input datasets: */
+	FetchData(&connectivity,&nel,&dummy,CONNECTIVITY);
+	FetchData(&pool,&dummy,POOL);
+	FetchData(&index,INDEX);
+	FetchData(&flags,&dummy,FLAGS);
+
+	/*!Generate internal degree of freedom numbers: */
+	PropagateFlagsFromConnectivityx(pool,connectivity,index,flags);
+
+	/*write output datasets: */
+	WriteData(POOLOUT,pool,nel);
+
+	/*Free ressources: */
+	xDelete<double>(connectivity);
+	xDelete<double>(pool);
+	xDelete<double>(flags);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.h	(revision 21239)
@@ -0,0 +1,53 @@
+/*
+	PropagateFlagsFromConnectivity.h
+*/
+
+#ifndef _PROPAGATEFLAGSFROMCONNECTIVITY_H
+#define _PROPAGATEFLAGSFROMCONNECTIVITY_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "PropagateFlagsFromConnectivity"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define CONNECTIVITY prhs[0]
+#define POOL         prhs[1]
+#define INDEX        prhs[2]
+#define FLAGS        prhs[3]
+/* serial output macros: */
+#define POOLOUT (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define CONNECTIVITY PyTuple_GetItem(args,0)
+#define POOL         PyTuple_GetItem(args,1)
+#define INDEX        PyTuple_GetItem(args,2)
+#define FLAGS        PyTuple_GetItem(args,3)
+/* serial output macros: */
+#define POOLOUT output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  4
+
+#endif  /* _PROPAGATEFLAGSFROMCONNECTIVITY_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Scotch/Scotch.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Scotch/Scotch.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Scotch/Scotch.cpp	(revision 21239)
@@ -0,0 +1,249 @@
+/*\file Scotch.c
+ *\brief:  Scotch partitioner mex module
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./Scotch.h"
+
+void GmapUsage(void){/*{{{*/
+	mexPrintf("\n");
+	mexPrintf("Usage: [maptab]=Scotch(adjmat,vertlb,vertwt,edgewt,archtyp,archpar,\n");
+	mexPrintf("                         Scotch-specific parameters);\n");
+	mexPrintf("\n");
+}/*}}}*/
+void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){
+
+	#ifndef _HAVE_SCOTCH_ //only works if scotch library has been compiled in.
+	_error_("Scotch not available! Cannot carry out Scotch partitioning!");
+	#else
+
+	int     argcm;
+	char    **argvm=NULL;
+	int     nvert =0,nedge2=0,napar =0;
+	mwIndex *ir=NULL,*jc=NULL;
+	int     *adjir=NULL,*adjjc=NULL;
+	double  *vld=NULL,*vwd=NULL,*ewd=NULL,*apd=NULL;
+	int     *vli=NULL,*vwi=NULL,*ewi=NULL,*api=NULL;
+	char    *archtyp=NULL;
+	int     (*maptabi)[2]=NULL;
+	double* maptabd=NULL;
+	int     i,j,k,imi=0,imo=0,isi=0,ierr;
+
+	/* Check for proper number of arguments */
+
+	if (nrhs == 0 && nlhs == 0) {
+		GmapUsage();
+		return;
+	}
+	else if (nrhs <  6 || nlhs >  1) {
+		GmapUsage();
+		mexErrMsgTxt(" ");
+	}
+
+/*  load matlab argument list and convert to integer (note that converting here
+	and in the x-layer is inefficient, but it makes the x-layer more general)  */
+
+	argvm = (char **) calloc(nrhs,sizeof(char *));
+
+	if (!(mxIsNumeric(prhs[imi]) &&
+		  (mxGetM(prhs[imi]) == 1 && mxGetN(prhs[imi]) == 1))) {
+		argvm[isi] = (char *) calloc(4+1,sizeof(char));
+		strcpy(argvm[isi],"gmap");
+		mexPrintf("%s -- Using \"%s\" entry point.\n",
+				  __FUNCT__,argvm[isi]);
+		isi++;
+	}
+	else {
+		argvm[isi] = (char *) calloc(5+1,sizeof(char));
+		strcpy(argvm[isi],"gpart");
+		mexPrintf("%s -- Using \"%s\" entry point.\n",
+				  __FUNCT__,argvm[isi]);
+		isi++;
+
+		argvm[isi] = (char *) calloc(17,sizeof(char));
+		sprintf(argvm[isi],"%d",(int)mxGetScalar(prhs[imi]));
+		mexPrintf("%s -- Number of parts is %s.\n",
+				  __FUNCT__,argvm[isi]);
+		isi++;
+		imi++;
+	}
+
+	if (!mxIsNumeric(prhs[imi]) || (!mxIsEmpty(prhs[imi]) && !mxIsSparse(prhs[imi]))) {
+		mexPrintf("%s -- Adjacency matrix must be numeric and sparse.\n",__FUNCT__);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		nvert =mxGetM(prhs[imi]);
+		nedge2=mxGetNzmax(prhs[imi]);
+		if (mxGetNzmax(prhs[imi])) {
+			ir    =mxGetIr(prhs[imi]);
+			adjir = (int *) malloc(mxGetNzmax(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetNzmax(prhs[imi]); i++)
+				adjir[i]=(int)ir[i];
+		}
+		if (mxGetN(prhs[imi])) {
+			jc    =mxGetJc(prhs[imi]);
+			adjjc = (int *) malloc((mxGetN(prhs[imi])+1)*sizeof(int));
+			for (i=0; i<(mxGetN(prhs[imi])+1); i++)
+				adjjc[i]=(int)jc[i];
+		}
+		mexPrintf("%s -- Adjacency matrix is of size %d by %d with %d non-zeroes.\n",
+				  __FUNCT__,mxGetM(prhs[imi]),mxGetN(prhs[imi]),mxGetNzmax(prhs[imi]));
+	}
+	imi++;
+
+	if (!mxIsNumeric(prhs[imi])) {
+		mexPrintf("%s -- Vertex label vector must be numeric.\n",__FUNCT__);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+			vld=mxGetPr(prhs[imi]);
+			vli = (int *) malloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetM(prhs[imi])*mxGetN(prhs[imi]); i++)
+				vli[i]=(int)vld[i];
+		}
+		mexPrintf("%s -- Vertex label vector is of size %d by %d.\n",
+				  __FUNCT__,mxGetM(prhs[imi]),mxGetN(prhs[imi]));
+	}
+	imi++;
+
+	if (!mxIsNumeric(prhs[imi])) {
+		mexPrintf("%s -- Vertex weight vector must be numeric.\n",__FUNCT__);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+			vwd=mxGetPr(prhs[imi]);
+			vwi = (int *) malloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetM(prhs[imi])*mxGetN(prhs[imi]); i++)
+				vwi[i]=(int)vwd[i];
+		}
+		mexPrintf("%s -- Vertex weight vector is of size %d by %d.\n",
+				  __FUNCT__,mxGetM(prhs[imi]),mxGetN(prhs[imi]));
+	}
+	imi++;
+
+	if (!mxIsNumeric(prhs[imi]) || (!mxIsEmpty(prhs[imi]) && !mxIsSparse(prhs[imi]))) {
+		mexPrintf("%s -- Edge weight matrix must be numeric and sparse.\n",__FUNCT__);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		if (mxGetM(prhs[imi])) {
+			ewd=mxGetPr(prhs[imi]);
+			ewi = (int *) malloc(mxGetM(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetNzmax(prhs[imi]); i++)
+				ewi[i]=(int)ewd[i];
+		}
+		mexPrintf("%s -- Edge weight matrix is of size %d by %d with %d non-zeroes.\n",
+				  __FUNCT__,mxGetM(prhs[imi]),mxGetN(prhs[imi]),mxGetNzmax(prhs[imi]));
+	}
+	imi++;
+
+	if (!((strlen (argvm[0]) >= 5) &&
+		  (strncmp (argvm[0] + strlen (argvm[0]) - 5, "gpart", 5) == 0))) {
+		if (!mxIsChar(prhs[imi])) {
+			mexPrintf("%s -- Architecture type must be character.\n",__FUNCT__);
+			mexErrMsgTxt(" ");
+		}
+		else {
+			if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+				archtyp = (char *) calloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])+1,sizeof(char));
+				mxGetString(prhs[imi],archtyp,mxGetM(prhs[imi])*mxGetN(prhs[imi])+1);
+			}
+			mexPrintf("%s -- Architecture type is \"%s\".\n",
+					  __FUNCT__,archtyp);
+		}
+		imi++;
+
+		if (!mxIsNumeric(prhs[imi])) {
+			mexPrintf("%s -- Architecture parameter vector must be numeric.\n",__FUNCT__);
+			mexErrMsgTxt(" ");
+		}
+		else {
+			napar =mxGetM(prhs[imi])*mxGetN(prhs[imi]);
+			if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+				apd=mxGetPr(prhs[imi]);
+				api = (int *) malloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])*sizeof(int));
+				for (i=0; i<mxGetM(prhs[imi])*mxGetN(prhs[imi]); i++)
+					api[i]=(int)apd[i];
+			}
+			mexPrintf("%s -- Architecture parameter vector is of size %d by %d.\n",
+					  __FUNCT__,mxGetM(prhs[imi]),mxGetN(prhs[imi]));
+		}
+		imi++;
+	}
+
+	while (imi < nrhs) {
+		if (!mxIsChar(prhs[imi])) {
+			mexPrintf("%s -- prhs[%d] must be character.\n",__FUNCT__,imi);
+			mexErrMsgTxt(" ");
+		}
+		else {
+			argvm[isi] = (char *) calloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])+1,sizeof(char));
+			mxGetString(prhs[imi],argvm[isi],mxGetM(prhs[imi])*mxGetN(prhs[imi])+1);
+		}
+		isi++;
+		imi++;
+	}
+	argcm=isi;
+	mexPrintf("argcm=%d\n",argcm);
+	for (i=0; i<argcm; i++)
+		mexPrintf("argvm[%d]=\"%s\"\n",i,argvm[i]);
+
+	/* Do the actual computations in a subroutine */
+
+	mexPrintf("Gmapx:\n");
+	ierr=gmapx(&maptabi,
+			   argcm,
+			   argvm,
+			   nvert,
+			   nedge2,
+			   adjir,
+			   adjjc,
+			   vli,
+			   vwi,
+			   ewi,
+			   archtyp,
+			   napar,
+			   api);
+	mexPrintf("%s -- Error %d from Gmapx.\n",__FUNCT__,ierr);
+
+/*  for (i=0; i<nvert; i++)
+		mexPrintf("maptabi[%d][0]=%d, maptabi[%d][1]=%d\n",
+			 	  i,maptabi[i][0],i,maptabi[i][1]); */
+
+	/* Create matrices for the return arguments */
+
+	if (maptabi) {
+		plhs[imo]=mxCreateDoubleMatrix(nvert, 2, mxREAL);
+		maptabd = mxGetPr(plhs[imo]);
+		k=0;
+		for (j=0; j<2; j++)
+			for (i=0; i<nvert; i++)
+				maptabd[k++]=(double)maptabi[i][j];
+		//free(maptabi);
+	}
+	else {
+		plhs[imo]=mxCreateDoubleMatrix(0, 2, mxREAL);
+	}
+	imo++;
+
+	/*if (argvm)
+		for (i=argcm-1; i>=0; i--)
+			free(argvm[i]);
+	if (api)     free(api);
+	if (archtyp) free(archtyp);
+	if (ewi)     free(ewi);
+	if (vwi)     free(vwi);
+	if (vli)     free(vli);
+	if (adjjc)   free(adjjc);
+	if (adjir)   free(adjir);*/
+
+	return;
+#endif //#ifndef _HAVE_SCOTCH_
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Scotch/Scotch.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Scotch/Scotch.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/Scotch/Scotch.h	(revision 21239)
@@ -0,0 +1,34 @@
+/*!\file:  Scotch.h
+ * \brief header file for Scotch module.
+ */ 
+
+#ifndef _SCOTCH_H
+#define _SCOTCH_H
+
+#include "../bindings.h" /*Should always come first to avoid python's warnings*/
+#include <stdio.h>
+#include <string.h>    /*  strcasecmp  */
+#include <time.h>      /*  clock,time,difftime  */
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "Scotch"
+
+/*  Scotch structures and prototypes  */
+#ifdef MATLAB
+#include "mat.h"
+#include "mex.h"
+#include "matrix.h"
+
+#define printf mexPrintf
+#define fprintf(file,...) (file == stdout || file == stderr ? mexPrintf(__VA_ARGS__) : fprintf(file,__VA_ARGS__))
+#define malloc mxMalloc
+#define calloc mxCalloc
+#define realloc mxRealloc
+#define free mxFree
+#define exit(status) mexErrMsgTxt("exit=" #status)
+#endif
+
+#endif  /* _SCOTCH_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ShpRead/ShpRead.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ShpRead/ShpRead.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ShpRead/ShpRead.cpp	(revision 21239)
@@ -0,0 +1,91 @@
+/*\file ShpRead.c
+ *\brief: shp to exp file conversion mex module.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./ShpRead.h"
+#ifdef _HAVE_SHAPELIB_ //only works if Shapelib library has been compiled in.
+#include "shapefil.h"
+#endif
+
+void ShpReadUsage(void){/*{{{*/
+	_printf0_("ShpRead - Read shapefile\n");
+	_printf0_("\n");
+	_printf0_("   This module reads shapefiles and converts them to matlab/python structures\n");
+	_printf0_("\n");
+	_printf0_("   Usage:\n");
+	_printf0_("      ShpRead(filename);\n");
+	_printf0_("      filexp      file name of exp file to be written\n");
+	_printf0_("\n");
+	_printf0_("   Examples:\n");
+	_printf0_("      ShpRead('file.shp');\n");
+}/*}}}*/
+WRAPPER(ShpRead_python){
+
+	/*input: */
+	char *filename= NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	#ifndef _HAVE_SHAPELIB_ //only works if shapelib library has been compiled in.
+	_error_("Shapelib not available! Cannot carry out shp file translation!");
+	#else
+
+	/*checks on arguments on the matlab side: */
+	if(nlhs != NLHS){ShpReadUsage(); _error_("ShpRead usage error");}
+	if(nrhs != NRHS){ShpReadUsage(); _error_("ShpRead usage error");}
+
+	/*Input datasets: */
+	FetchData(&filename,SHP_IN);
+
+	/*Open shapefile*/
+	SHPHandle hSHP = SHPOpen( filename, "rb" );
+	if(!hSHP) _error_("Error opening shp/shx files.");
+
+	/*read header and print out file bounds*/
+	int         nShapeType,nEntities;
+	IssmPDouble adfMinBound[4], adfMaxBound[4];
+	SHPGetInfo( hSHP, &nEntities, &nShapeType, adfMinBound, adfMaxBound );
+	_printf_("Shapefile Type: "<<SHPTypeName(nShapeType)<<"   number of Shapes: "<< nEntities<<"\n\n");
+
+	/*Initialize output*/
+	Contours* contours = new Contours();
+
+	/*Read all objects*/
+	for(int i=0; i<nEntities;i++ ){
+
+		SHPObject* psShape = SHPReadObject(hSHP,i);
+		_printf_( "Shape #"<<i<<" ("<<SHPTypeName(psShape->nSHPType)<<") nVertices="<<psShape->nVertices<<", nParts="<<psShape->nParts<<"\n");
+
+		Contour<double> *contour = NULL;
+
+		switch(psShape->nSHPType){
+			case SHPT_ARC:
+				contour=new Contour<double>(0,psShape->nVertices,psShape->padfX,psShape->padfY,false);
+				break;
+			default:
+				_printf_("Shape type "<<SHPTypeName(psShape->nSHPType)<<"not supported yet, skipping...\n");
+		}
+
+		/*Add to contours and clean up*/
+		if(contour) contours->AddObject(contour);
+		SHPDestroyObject(psShape);
+	}
+
+	/*Write output*/
+	WriteData(SHP_OUT,contours);
+
+	/*Clean-up*/
+	delete contours;
+	xDelete<char>(filename);
+
+	#endif
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ShpRead/ShpRead.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ShpRead/ShpRead.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/ShpRead/ShpRead.h	(revision 21239)
@@ -0,0 +1,47 @@
+/*!\file ShpRead.h
+ * \brief: prototype for shp read mex module.
+ */
+
+#ifndef _SHPREAD_H
+#define _SHPREAD_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "ShpRead"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define SHP_IN  prhs[0]
+/* serial output macros: */
+#define SHP_OUT  (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define SHP_IN PyTuple_GetItem(args,0)
+/* serial output macros: */
+#define SHP_OUT output,0
+#endif
+
+/* serial arg counts: */
+#undef NRHS
+#define NRHS  1
+#undef NLHS
+#define NLHS  1
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/TriMesh/TriMesh.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/TriMesh/TriMesh.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/TriMesh/TriMesh.cpp	(revision 21239)
@@ -0,0 +1,63 @@
+/*
+ * TriMesh: mesh a domain using an .exp file
+ */
+
+#include "./TriMesh.h"
+
+void TriMeshUsage(void){/*{{{*/
+	_printf_("\n");
+	_printf_("   usage: [index,x,y,segments,segmentmarkers]=TriMesh(domainoutlinefilename,rifts,area) \n");
+	_printf_("      where: index,x,y defines a triangulation, segments is an array made \n");
+	_printf_("      of exterior segments to the mesh domain outline, segmentmarkers is an array flagging each segment, \n");
+	_printf_("      outlinefilename an Argus domain outline file, \n");
+	_printf_("      area is the maximum area desired for any element of the resulting mesh, \n");
+	_printf_("\n");
+}/*}}}*/
+WRAPPER(TriMesh_python){
+	
+	/*intermediary: */
+	double    area;
+	Contours *domain = NULL;
+	Contours *rifts  = NULL;
+
+	/* output: */
+	int    *index             = NULL;
+	double *x                 = NULL;
+	double *y                 = NULL;
+	int    *segments          = NULL;
+	int    *segmentmarkerlist = NULL;
+	int     nel,nods,nsegs;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments: */
+	CHECKARGUMENTS(NLHS,NRHS,&TriMeshUsage);
+
+	/*Fetch data needed for meshing: */
+	FetchData(&domain,DOMAINOUTLINE);
+	FetchData(&rifts,RIFTSOUTLINE);
+	FetchData(&area,AREA);
+
+	/*call x core: */
+	TriMeshx(&index,&x,&y,&segments,&segmentmarkerlist,&nel,&nods,&nsegs,domain,rifts,area);
+
+	/*write outputs: */
+	WriteData(INDEX,index,nel,3);
+	WriteData(X,x,nods);
+	WriteData(Y,y,nods);
+	WriteData(SEGMENTS,segments,nsegs,3);
+	WriteData(SEGMENTMARKERLIST,segmentmarkerlist,nsegs);
+
+	/*free ressources: */
+	delete domain;
+	delete rifts;
+	xDelete<int>(index);
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<int>(segments);
+	xDelete<int>(segmentmarkerlist);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/TriMesh/TriMesh.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/TriMesh/TriMesh.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/TriMesh/TriMesh.h	(revision 21239)
@@ -0,0 +1,83 @@
+/*
+	TriMesh.h
+*/
+
+#ifndef _TRIMESH_H
+#define _TRIMESH_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+#undef _DO_NOT_LOAD_GLOBALS_ /*only module where this needs to be undefined, so as to 
+							   not include IssmComm several times in the javascript Modle construct.*/
+#endif
+
+/*Header files: */
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/toolkits/toolkits.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../../c/shared/io/io.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "TriMesh"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define DOMAINOUTLINE  prhs[0]
+#define RIFTSOUTLINE   prhs[1]
+#define AREA           prhs[2]
+/* serial output macros: */
+#define INDEX             (mxArray**)&plhs[0]
+#define X                 (mxArray**)&plhs[1]
+#define Y                 (mxArray**)&plhs[2]
+#define SEGMENTS          (mxArray**)&plhs[3]
+#define SEGMENTMARKERLIST (mxArray**)&plhs[4]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define DOMAINOUTLINE PyTuple_GetItem(args,0)
+#define RIFTSOUTLINE  PyTuple_GetItem(args,1)
+#define AREA          PyTuple_GetItem(args,2)
+/* serial output macros: */
+#define INDEX             output,0
+#define X                 output,1
+#define Y                 output,2
+#define SEGMENTS          output,3
+#define SEGMENTMARKERLIST output,4
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define DOMAINOUTLINE domainx,domainy,domainnods
+#define RIFTSOUTLINE  NULL,NULL,0
+#define AREA          areain
+/* serial output macros: */
+#define INDEX             pindex,pnel
+#define X                 px,pnods
+#define Y                 py,pnods
+#define SEGMENTS          psegments,pnsegs
+#define SEGMENTMARKERLIST psegmentmarkers,pnsegs
+#define WRAPPER(modulename) extern "C" { int  TriMeshModule(double** pindex, double** px, double** py, int* pnel, int* pnods, double** psegments, double** psegmentmarkers, int* pnsegs, double* domainx, double* domainy, int domainnods, double areain)
+#define _DO_NOT_LOAD_GLOBALS_//we only load globals for TriMeshModule.js, not other modules!
+#endif
+
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  5
+#undef NRHS
+#define NRHS  3
+
+#endif  /* _TRIMESH_H */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/TriMesh/TriMesh.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/TriMesh/TriMesh.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/TriMesh/TriMesh.js	(revision 21239)
@@ -0,0 +1,82 @@
+function TriMesh(md,domain,rifts, area){
+/*TriMesh 
+	   usage: var array = TriMesh(domain,rifts,area);
+	      where: array is made of [index,x,y,segments,segmentmarkers]
+		  and index,x,y defines a triangulation, segments is an array made 
+	      of exterior segments to the mesh domain outline, segmentmarkers is an array 
+		  flagging each segment, domain a js array defining the domain outline  (sames for 
+		  rifts) and area is the maximum area desired for any element of the resulting mesh.
+
+		  Ok, for now, we are not dealing with rifts. Also, the domain is made of only one 
+		  profile, this to avoid passing a double** pointer to js. 
+*/
+
+	//Dynamic allocations: {{{
+	//Retrieve domain arrays, and allocate on Module heap: 
+	
+	//input
+	var dx=new Float64Array(domain['x']); var nx=dx.length * dx.BYTES_PER_ELEMENT;
+	var dxPtr= Module._malloc(nx); var domainxHeap = new Uint8Array(Module.HEAPU8.buffer,dxPtr,nx);
+	domainxHeap.set(new Uint8Array(dx.buffer)); var domainx=domainxHeap.byteOffset;
+
+	var dy=new Float64Array(domain['y']); var ny=dy.length * dy.BYTES_PER_ELEMENT;
+	var dyPtr = Module._malloc(ny); var domainyHeap = new Uint8Array(Module.HEAPU8.buffer,dyPtr,ny);
+	domainyHeap.set(new Uint8Array(dy.buffer)); var domainy=domainyHeap.byteOffset;
+	
+	//output
+	var nel,indexlinear,index,nods,x,y;
+	var pnel= Module._malloc(4); 
+	var pindex= Module._malloc(4); 
+	var pnods= Module._malloc(4); 
+	var px= Module._malloc(4); 
+	var py= Module._malloc(4); 
+	var psegments= Module._malloc(4); 
+	var psegmentmarkers= Module._malloc(4); 
+	var pnsegs= Module._malloc(4); 
+	//}}}
+
+	//Declare TriMesh module: 
+	TriMeshModule = Module.cwrap('TriMeshModule','number',['number','number','number','number','number','number','number','number','number','number','number','number']);
+	
+	//Call TriMesh module: 
+	TriMeshModule(pindex,px,py,pnel,pnods,psegments,psegmentmarkers,pnsegs, domainx,domainy,dx.length,area);
+	
+	/*Dynamic copying from heap: {{{*/
+	//recover mesh: 
+	nel = Module.getValue(pnel, 'i32');
+	var indexptr = Module.getValue(pindex,'i32');
+	indexlinear = Module.HEAPF64.slice(indexptr /8, indexptr/8 + nel*3);
+	index = ListToMatrix(indexlinear,3);
+
+	nods = Module.getValue(pnods, 'i32');
+	var xptr = Module.getValue(px,'i32');
+	var yptr = Module.getValue(py,'i32');
+	x = Module.HEAPF64.slice(xptr /8, xptr/8 + nods);
+	y = Module.HEAPF64.slice(yptr /8, yptr/8 + nods);
+	
+	nsegs = Module.getValue(pnsegs, 'i32');
+	var segmentsptr = Module.getValue(psegments,'i32');
+	segmentslinear = Module.HEAPF64.slice(segmentsptr /8, segmentsptr/8 + nsegs*3);
+	segments = ListToMatrix(segmentslinear,3);
+	
+	var segmentmarkersptr = Module.getValue(psegmentmarkers,'i32');
+	segmentmarkers = Module.HEAPF64.slice(segmentmarkersptr /8, segmentmarkersptr/8 + nsegs);
+	/*}}}*/
+
+	var return_array=[index,x,y,segments,segmentmarkers];
+
+	/*Free ressources: */
+	Module._free(pindex); 
+	Module._free(indexlinear); 
+	Module._free(px); 
+	Module._free(x); 
+	Module._free(py); 
+	Module._free(y); 
+	Module._free(pnel); 
+	Module._free(pnods); 
+	Module._free(psegments); 
+	Module._free(psegmentmarkers); 
+	Module._free(pnsegs); 
+
+	return return_array;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/TriMeshProcessRifts/TriMeshProcessRifts.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/TriMeshProcessRifts/TriMeshProcessRifts.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/TriMeshProcessRifts/TriMeshProcessRifts.cpp	(revision 21239)
@@ -0,0 +1,59 @@
+/*!\file:  TriMeshProcessRifts.cpp
+ * \brief split a mesh where a rift (or fault) is present
+ */ 
+
+#include "./TriMeshProcessRifts.h"
+
+void TriMeshProcessRiftsUsage(void){/*{{{*/
+	_printf_("\n");
+	_printf_("   usage: [index2,x2,y2,segments2,segmentmarkers2,rifts2]=TriMeshProcessrifts(index1,x1,y1,segments1,segmentmarkers1) \n");
+	_printf_("      where: (index1,x1,y1,segments1,segmentmarkers1) is an initial triangulation.\n");
+	_printf_("      index2,x2,y2,segments2,segmentmarkers2,rifts2 is the resulting triangulation where rifts have been processed.\n");
+}/*}}}*/
+WRAPPER(TriMeshProcessRifts_python){
+
+	/* returned quantities: */
+	RiftStruct *riftstruct = NULL;
+
+	/* input: */
+	int     nel,nods;
+	int    *index          = NULL;
+	double *x              = NULL;
+	double *y              = NULL;
+	int    *segments       = NULL;
+	int    *segmentmarkers = NULL;
+	int     num_seg;
+
+	/*Boot module*/
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	CHECKARGUMENTS(NLHS,NRHS,&TriMeshProcessRiftsUsage);
+
+	/*Fetch data */
+	FetchData(&index,&nel,NULL,INDEXIN);
+	FetchData(&x,&nods,XIN);
+	FetchData(&y,NULL,YIN);
+	FetchData(&segments,&num_seg,NULL,SEGMENTSIN);
+	FetchData(&segmentmarkers,NULL,SEGMENTMARKERSIN);
+
+	/*call x layer*/
+	TriMeshProcessRiftsx(&index,&nel,&x,&y,&nods,&segments,&segmentmarkers,&num_seg,&riftstruct);
+
+	/*Output : */
+	WriteData(INDEXOUT,index,nel,3);
+	WriteData(XOUT,x,nods,1);
+	WriteData(YOUT,y,nods,1);
+	WriteData(SEGMENTSOUT,segments,num_seg,3);
+	WriteData(SEGMENTMARKERSOUT,segmentmarkers,num_seg,1);
+	WriteData(RIFTSTRUCT,riftstruct);
+
+	/*end module: */
+	delete riftstruct;
+	xDelete<int>(index);
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<int>(segments);
+	xDelete<int>(segmentmarkers );
+	MODULEEND();
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/TriMeshProcessRifts/TriMeshProcessRifts.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/TriMeshProcessRifts/TriMeshProcessRifts.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/TriMeshProcessRifts/TriMeshProcessRifts.h	(revision 21239)
@@ -0,0 +1,65 @@
+/*
+ * TriMeshProcessRifts.h
+ */ 
+
+#ifndef _TRIMESH_PROCESSRIFTS_H_
+#define _TRIMESH_PROCESSRIFTS_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "TriMeshProcessRifts"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define INDEXIN          prhs[0]
+#define XIN              prhs[1]
+#define YIN              prhs[2]
+#define SEGMENTSIN       prhs[3]
+#define SEGMENTMARKERSIN prhs[4]
+/* serial output macros: */
+#define INDEXOUT          (mxArray**)&plhs[0]
+#define XOUT              (mxArray**)&plhs[1]
+#define YOUT              (mxArray**)&plhs[2]
+#define SEGMENTSOUT       (mxArray**)&plhs[3]
+#define SEGMENTMARKERSOUT (mxArray**)&plhs[4]
+#define RIFTSTRUCT        (mxArray**)&plhs[5]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define INDEXIN          PyTuple_GetItem(args,0)
+#define XIN              PyTuple_GetItem(args,1)
+#define YIN              PyTuple_GetItem(args,2)
+#define SEGMENTSIN       PyTuple_GetItem(args,3)
+#define SEGMENTMARKERSIN PyTuple_GetItem(args,4)
+/* serial output macros: */
+#define INDEXOUT          output,0
+#define XOUT              output,1
+#define YOUT              output,2
+#define SEGMENTSOUT       output,3
+#define SEGMENTMARKERSOUT output,4
+#define RIFTSTRUCT        output,5
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  6
+#undef NRHS
+#define NRHS  5
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/bindings.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/bindings.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/bindings.h	(revision 21239)
@@ -0,0 +1,29 @@
+#ifndef _BINDINGS_H_
+#define _BINDINGS_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef  _HAVE_PYTHON_MODULES_
+#include "./python/include/pythonincludes.h"
+#include "./python/include/wrapper_macros.h"
+#include "./python/io/pythonio.h"
+#endif
+
+#ifdef  _HAVE_MATLAB_MODULES_
+#include "./matlab/include/matlabincludes.h"
+#include "./matlab/include/wrapper_macros.h"
+#include "./matlab/io/matlabio.h"
+#endif
+
+#ifdef  _HAVE_JAVASCRIPT_MODULES_
+#include "./javascript/include/javascriptincludes.h"
+#include "./javascript/include/wrapper_macros.h"
+#include "./javascript/io/javascriptio.h"
+#endif
+
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/include/issm-binding.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/include/issm-binding.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/include/issm-binding.h	(revision 21239)
@@ -0,0 +1,18 @@
+#ifndef _ISSM_BINDING_H_
+#define _ISSM_BINDING_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef  _HAVE_MATLAB_MODULES_
+#include "../matlab/include/matlab-macros.h"
+#endif
+
+#ifdef  _HAVE_PYTHON_MODULES_
+#include "../python/include/python-macros.h"
+#endif
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/Makefile.am
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/Makefile.am	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/Makefile.am	(revision 21239)
@@ -0,0 +1,93 @@
+AM_CPPFLAGS = @DAKOTAINCL@ @PETSCINCL@ @MPIINCL@ @SPOOLESINCL@ @METISINCL@ @TRIANGLEINCL@ @CHACOINCL@ @SCOTCHINCL@ @SHAPELIBINCL@ @AMPIINCL@
+AUTOMAKE_OPTIONS = subdir-objects
+
+EXEEXT=$(JAVASCRIPTWRAPPEREXT)
+
+#define prefix (from http://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/Defining-Directories.html)
+AM_CPPFLAGS+=  -DISSM_PREFIX='"$(prefix)"'
+
+js_scripts = ${ISSM_DIR}/src/wrappers/TriMesh/TriMesh.js  \
+			 ${ISSM_DIR}/src/wrappers/NodeConnectivity/NodeConnectivity.js\
+			 ${ISSM_DIR}/src/wrappers/ContourToMesh/ContourToMesh.js\
+			 ${ISSM_DIR}/src/wrappers/ElementConnectivity/ElementConnectivity.js\
+			 ${ISSM_DIR}/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.js\
+			 ${ISSM_DIR}/src/wrappers/IssmConfig/IssmConfig.js\
+			 ${ISSM_DIR}/src/wrappers/Issm/issm.js
+
+bin_SCRIPTS =  issm-prebin.js
+
+issm-prebin.js: ${js_scripts}
+	cat ${js_scripts}  > issm-prebin.js
+	
+#javascript io{{{
+if !WINDOWS
+lib_LTLIBRARIES = libISSMJavascript.la
+else
+noinst_LTLIBRARIES = libISSMJavascript.la
+lib_LTLIBRARIES = 
+endif
+
+io_sources=   ./io/WriteJavascriptData.cpp\
+				./io/FetchJavascriptData.cpp
+
+ALLCXXFLAGS= -fPIC -D_WRAPPERS_ $(CXXFLAGS) $(CXXOPTFLAGS) 
+
+libISSMJavascript_la_SOURCES = $(io_sources)
+libISSMJavascript_la_CXXFLAGS= $(ALLCXXFLAGS)
+#}}}
+#api io{{{
+if !WINDOWS
+lib_LTLIBRARIES += libISSMApi.la
+else
+noinst_LTLIBRARIES += libISSMApi.la
+endif
+
+api_sources= ./io/ApiPrintf.cpp
+
+libISSMApi_la_SOURCES = $(api_sources)
+libISSMApi_la_CXXFLAGS= $(ALLCXXFLAGS)
+#}}}
+#Wrappers {{{
+bin_PROGRAMS = 		 IssmModule
+#}}}
+
+# Dependencies {{{
+
+#Triangle library
+AM_CXXFLAGS =  -DTRILIBRARY -DANSI_DECLARATORS -DNO_TIMER -D_WRAPPERS_
+AM_CXXFLAGS +=  -D_HAVE_JAVASCRIPT_MODULES_ -fPIC
+
+deps = ./libISSMJavascript.la ../../c/libISSMModules.la ../../c/libISSMCore.la ./libISSMApi.la
+
+#Optimization flags:
+AM_CXXFLAGS += $(CXXOPTFLAGS) 
+#}}}
+# Module sources and dependencies {{{
+if !WINDOWS
+libISSMJavascript_la_LIBADD = ./../../c/libISSMCore.la ./../../c/libISSMModules.la $(MPILIB) $(PETSCLIB) $(MKLLIB) $(GSLLIB) $(PROJ4LIB) $(MATHLIB) 
+endif
+
+if STANDALONE_LIBRARIES
+libISSMJavascript_la_LDFLAGS = -static 
+deps += $(PETSCLIB) $(TAOLIB) $(M1QN3LIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(TRIANGLELIB) $(SCALAPACKLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB)   $(ADOLCLIB) $(AMPILIB) $(METEOIOLIB) $(SNOWPACKLIB)
+endif
+
+if !WINDOWS
+libISSMApi_la_LIBADD = $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB) $(MATHLIB) $(MEXLIB)
+endif
+
+if STANDALONE_LIBRARIES
+libISSMApi_la_LDFLAGS = -static 
+endif
+
+IssmModule_SOURCES = ../TriMesh/TriMesh.cpp \
+					 ../NodeConnectivity/NodeConnectivity.cpp\
+					 ../ContourToMesh/ContourToMesh.cpp\
+					 ../ElementConnectivity/ElementConnectivity.cpp\
+					 ../InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp\
+					 ../IssmConfig/IssmConfig.cpp\
+					 ../Issm/issm.cpp
+
+IssmModule_CXXFLAGS= -fPIC -D_DO_NOT_LOAD_GLOBALS_  --memory-init-file 0 $(AM_CXXFLAGS) $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) -s EXPORTED_FUNCTIONS="['_TriMeshModule','_NodeConnectivityModule','_ContourToMeshModule','_ElementConnectivityModule','_InterpFromMeshToMesh2dModule','_IssmConfigModule','_IssmModule']"  -s DISABLE_EXCEPTION_CATCHING=0 -s ALLOW_MEMORY_GROWTH=1 -s INVOKE_RUN=0
+IssmModule_LDADD = ${deps} $(TRIANGLELIB)  $(GSLLIB)
+#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/include/javascriptincludes.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/include/javascriptincludes.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/include/javascriptincludes.h	(revision 21239)
@@ -0,0 +1,15 @@
+
+#ifndef _JAVASCRIPT_INCLUDES_H_
+#define _JAVASCRIPT_INCLUDES_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_
+//nothing for now
+#endif
+
+#endif /*_JAVASCRIPT_INCLUDES_H_*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/include/wrapper_macros.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/include/wrapper_macros.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/include/wrapper_macros.h	(revision 21239)
@@ -0,0 +1,41 @@
+/* \file javascript macros.h
+ * \brief: macros used for the javascript bindings
+ */
+
+#ifndef _JAVASCRIPT_MACROS_H_
+#define _JAVASCRIPT_MACROS_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_
+/* MODULEBOOT/MODULEEND {{{*/
+
+/*The following macros hide the error exception handling in a javascript module. Just put 
+ * MODULEBOOT(); and MODULEEND(); at the beginning and end of a module, and c++ exceptions 
+ * will be trapped*/
+#define MODULEBOOT(); try{ \
+	IssmComm::SetComm();
+
+#define MODULEEND(); }\
+	catch(ErrorException &exception){\
+		printf(exception.WrapperReport()); \
+	}\
+	catch (exception &e){\
+		printf(e.what());\
+	}\
+	catch(...){\
+		printf("An unexpected error occurred");\
+	}\
+	return 0;\
+	}
+/*}}}*/
+/* CHECKARGUMENTS {{{*/
+#define CHECKARGUMENTS(NLHS,NRHS,functionpointer)  //do nothing, we are not creating a dynamic library here!
+/*}}}*/
+#endif
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/io/ApiPrintf.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/io/ApiPrintf.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/io/ApiPrintf.cpp	(revision 21239)
@@ -0,0 +1,19 @@
+/* \file ApiPrintf.c:
+ * \brief: API specific symbols from libISSMCore that we need to resolve here
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./javascriptio.h"
+
+/*Javascript printf i/o: */
+void ApiPrintf(const char* string){
+
+	/*use mexPrintf in matlab: */
+	printf(string);
+	return;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/io/FetchJavascriptData.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/io/FetchJavascriptData.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/io/FetchJavascriptData.cpp	(revision 21239)
@@ -0,0 +1,148 @@
+/*\file FetchData.cpp:
+ * \brief: general I/O interface to fetch data in javascript
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./javascriptio.h"
+#include <cstring> 
+
+/*Primitive data types*/
+/*FUNCTION FetchData(char** pstring, char* string){{{*/
+void FetchData(char** pstring, char* stringin){
+
+	char* string=xNew<char>(strlen(stringin)+1);
+	xMemCpy<char>(string,stringin,strlen(stringin)+1);
+
+	*pstring=string;
+}
+/*}}}*/
+/*FUNCTION FetchData(int* pinteger,int integer){{{*/
+void FetchData(int* pinteger,int integer){
+	
+	*pinteger = integer;
+}
+/*}}}*/
+/*FUNCTION FetchData(double* pscalar,double scalar){{{*/
+void FetchData(double* pscalar,double scalar){
+	
+	*pscalar = scalar;
+}
+/*}}}*/
+/*FUNCTION FetchData(double **pvector, double* vectorin, int nods){{{*/
+void FetchData(double** pvector, double* vectorin, int nods){
+
+	double* vector=NULL;
+	
+	vector=xNew<IssmPDouble>(nods); xMemCpy<IssmPDouble>(vector,vectorin,nods);
+	
+	*pvector=vector;
+}
+/*}}}*/
+/*FUNCTION FetchData(double **pvector, int* pnods, double* vectorin, int nods){{{*/
+void FetchData(double** pvector, int* pnods, double* vectorin, int nods){
+
+	double* vector=NULL;
+	
+	vector=xNew<IssmPDouble>(nods); xMemCpy<IssmPDouble>(vector,vectorin,nods);
+	
+	*pvector=vector;
+	*pnods=nods;
+}
+/*}}}*/
+/*FUNCTION FetchData(double **pmatrix, int* pM, int* pN, int* matrix, int M, int N){{{*/
+void FetchData(double **pmatrix, int* pM, int* pN, int* matrixin, int M, int N){
+
+	double* matrix=NULL;
+	
+	if(pmatrix && matrixin){ 
+
+		matrix=xNew<IssmPDouble>(M*N); 
+		for(int i=0;i<M*N;i++)matrix[i]=(IssmPDouble)matrixin[i];
+		if (pM)*pM=M;
+		if (pN)*pN=N;
+		*pmatrix=matrix;
+	}
+}
+/*}}}*/
+/*FUNCTION FetchData(double **pmatrix, int* pM, int* pN, double* matrix, int M, int N){{{*/
+void FetchData(double **pmatrix, int* pM, int* pN, double* matrixin, int M, int N){
+
+	double* matrix=NULL;
+	
+	if(pmatrix && matrixin){ 
+
+		matrix=xNew<IssmPDouble>(M*N); 
+		for(int i=0;i<M*N;i++)matrix[i]=matrixin[i];
+		if (pM)*pM=M;
+		if (pN)*pN=N;
+		*pmatrix=matrix;
+	}
+}
+/*}}}*/
+/*FUNCTION FetchData(int **pmatrix, int* pM, int* pN, int* matrix, int M, int N){{{*/
+void FetchData(int **pmatrix, int* pM, int* pN, int* matrixin, int M, int N){
+
+	int* matrix=NULL;
+	
+	if(pmatrix && matrixin){ 
+
+		matrix=xNew<int>(M*N);xMemCpy<int>(matrix,matrixin,M*N); 
+		if (pM)*pM=M;
+		if (pN)*pN=N;
+		*pmatrix=matrix;
+	}
+}
+/*}}}*/
+/*ISSM objects*/
+/*FUNCTION FetchData(Contours** pcontours,double* x, double* y, int nods){{{*/
+void FetchData(Contours** pcontours,double* x, double* y, int nods){
+
+	int             numcontours,index,test1,test2;
+	char            *contourname = NULL;
+	Contours        *contours    = NULL;
+	Contour<double> *contouri    = NULL;
+
+	/*only 1 contour for now: */
+	contours=new Contours();
+
+	if (nods){
+			
+		contouri=new Contour<double>();
+		contouri->nods=nods;
+		contouri->x=xNew<IssmPDouble>(nods); xMemCpy<IssmPDouble>(contouri->x,x,nods);
+		contouri->y=xNew<IssmPDouble>(nods); xMemCpy<IssmPDouble>(contouri->y,y,nods);
+
+		contours->AddObject(contouri);
+	}
+	
+	*pcontours=contours;
+}
+/*}}}*/
+/*FUNCTION FetchData(Options** poptions,int NRHS, int nrhs, const char* optionname, double optionvalue){{{*/
+void FetchData(Options** poptions,int NRHS, int nrhs, const char* optionname, double optionvalue){
+
+	/*Initialize output*/
+	Options* options=new Options();
+	
+	GenericOption<double> *odouble = NULL;
+
+	/*check and parse the name  */
+	odouble=new GenericOption<double>();
+	odouble->name =xNew<char>(strlen(optionname)+1);
+	memcpy(odouble->name,optionname,(strlen(optionname)+1)*sizeof(char));
+	odouble->value=optionvalue;
+	odouble->numel=1;
+	odouble->ndims=1;
+	odouble->size=NULL;
+	 
+	options->AddOption((Option*)odouble);
+
+	/*Assign output pointers:*/
+	*poptions=options;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/io/WriteJavascriptData.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/io/WriteJavascriptData.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/io/WriteJavascriptData.cpp	(revision 21239)
@@ -0,0 +1,99 @@
+/* \file WriteData.c:
+ * \brief: general interface for writing data
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./javascriptio.h"
+#include "./../../../c/datastructures/datastructures.h"
+
+/*Primitive data types*/
+/*FUNCTION WriteData(IssmPDouble** pmatrix, int* pnel, int* matrix, int M,int N){{{*/
+void WriteData(IssmPDouble** pmatrix,int* pnel, int* matrix, int M,int N){
+
+	if(pmatrix && matrix){
+
+		/*Copy matrix: */
+		IssmPDouble* dmatrix = xNew<IssmPDouble>(M*N); 
+		for (int i=0;i<M*N;i++)dmatrix[i]=(IssmPDouble)matrix[i];
+		*pmatrix=dmatrix;
+		*pnel=M;
+	}
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble** pmatrix, int* pM, int* pN, , int* matrix, int M,int N){{{*/
+void WriteData(IssmPDouble** pmatrix,int* pM, int* pN, int* matrix, int M, int N){
+
+	if(pmatrix && matrix){
+
+		/*Copy matrix: */
+		IssmPDouble* dmatrix = xNew<IssmPDouble>(M*N); 
+		for (int i=0;i<M*N;i++)dmatrix[i]=(IssmPDouble)matrix[i];
+		*pmatrix=dmatrix;
+		*pM=M;
+		*pN=N;
+	}
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble** pmatrix, int* pM, IssmPDouble* pN, , int* matrix, int M,int N){{{*/
+void WriteData(IssmPDouble** pmatrix,int* pM, int* pN, IssmPDouble* matrix, int M, int N){
+
+	if(pmatrix && matrix){
+
+		/*Copy matrix: */
+		IssmPDouble* dmatrix = xNew<IssmPDouble>(M*N); 
+		for (int i=0;i<M*N;i++)dmatrix[i]=matrix[i];
+		*pmatrix=dmatrix;
+		if(pM)*pM=M;
+		if(pN)*pN=N;
+	}
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble** px, int* pnods, double* vector, int M){{{*/
+void WriteData(IssmPDouble** px, int* pnods, double* vector, int M){
+
+	if(px && vector){
+
+		IssmPDouble* dx=xNew<IssmPDouble>(M); 
+		for(int i=0;i<M;i++)dx[i]=vector[i];
+		*px=dx;
+		*pnods=M;
+	}
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble** px, int* pnods, int* vector, int M){{{*/
+void WriteData(IssmPDouble** px, int* pnods, int* vector, int M){
+
+	if(px && vector){
+
+		IssmPDouble* dx=xNew<IssmPDouble>(M); 
+		for(int i=0;i<M;i++)dx[i]=(IssmPDouble)vector[i];
+		*px=dx;
+		*pnods=M;
+	}
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble* pdouble, IssmPDouble double){{{*/
+void WriteData(IssmPDouble* pdouble, IssmPDouble doublein){
+
+	*pdouble=doublein;
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble** pdouble, void* nullptr){{{*/
+void WriteData(IssmPDouble** pdouble, void*){
+	//do nothing
+}
+/*}}}*/
+/*FUNCTION WriteData(char** pstring, char* string){{{*/
+void WriteData(char** pstring, char* stringin){
+
+	char* string=xNew<char>(strlen(stringin)+1);
+	xMemCpy<char>(string,stringin,strlen(stringin)+1);
+
+	*pstring=string;
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/io/javascriptio.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/io/javascriptio.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/javascript/io/javascriptio.h	(revision 21239)
@@ -0,0 +1,43 @@
+/*\file matlabio.h
+ *\brief: I/O for ISSM in matlab mode
+ */
+
+#ifndef _JAVASCRIPT_IO_H_
+#define _JAVASCRIPT_IO_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif 
+
+#include "../include/javascriptincludes.h"
+#include "../../../c/bamg/bamgobjects.h"
+#include "../../../c/classes/classes.h"
+#include "../../../c/toolkits/toolkits.h"
+#include "../../../c/shared/shared.h"
+
+void WriteData(IssmPDouble** pmatrix,int* pnel, int* matrix, int M,int N);
+void WriteData(IssmPDouble** pmatrix,int* pM, int* pN, int* matrix, int M, int N);
+void WriteData(IssmPDouble** pmatrix,int* pM, int* pN, IssmPDouble* matrix, int M, int N);
+void WriteData(IssmPDouble** px, int* pnods, int* vector, int M);
+void WriteData(IssmPDouble** px, int* pnods, double* vector, int M);
+void WriteData(char** pstring, char* stringin);
+void WriteData(IssmPDouble* pdouble, IssmPDouble doublein);
+void WriteData(IssmPDouble** pdouble, void*);
+
+void FetchData(char** pstring, char* stringin);
+void FetchData(double* pscalar,double scalar);
+void FetchData(int* pinteger,int integer);
+void FetchData(double** pvector, double* vectorin, int nods);
+void FetchData(double** pvector, int* pnods, double* vectorin, int nods);
+void FetchData(double **pmatrix, int* pM, int* pN, int* matrixin, int M, int N);
+void FetchData(double **pmatrix, int* pM, int* pN, double* matrixin, int M, int N);
+void FetchData(int **pmatrix, int* pM, int* pN, int* matrixin, int M, int N);
+void FetchData(Contours** pcontours,double* x, double* y, int nods);
+void FetchData(Options** poptions,int NRHS, int nrhs, const char* optionname, double optionvalue);
+void FetchData(int* pinteger,int integer);
+
+/*Print*/
+void ApiPrintf(const char* string);
+#endif	/* _IO_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/Makefile.am
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/Makefile.am	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/Makefile.am	(revision 21239)
@@ -0,0 +1,242 @@
+AM_CPPFLAGS = @DAKOTAINCL@ @MATLABINCL@ @PETSCINCL@ @MPIINCL@ @SPOOLESINCL@ @METISINCL@ @TRIANGLEINCL@ @CHACOINCL@ @SCOTCHINCL@ @SHAPELIBINCL@ @AMPIINCL@
+AUTOMAKE_OPTIONS = subdir-objects
+
+EXEEXT=$(MATLABWRAPPEREXT)
+
+#define prefix (from http://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/Defining-Directories.html)
+AM_CPPFLAGS+=  -DISSM_PREFIX='"$(prefix)"'
+
+#matlab io{{{
+if !WINDOWS
+lib_LTLIBRARIES = libISSMMatlab.la
+else
+noinst_LTLIBRARIES = libISSMMatlab.la
+lib_LTLIBRARIES = 
+endif
+
+io_sources= ./io/CheckNumMatlabArguments.cpp\
+				./io/WriteMatlabData.cpp\
+				./io/FetchMatlabData.cpp
+
+ALLCXXFLAGS= -fPIC -D_WRAPPERS_ $(CXXFLAGS) $(CXXOPTFLAGS) 
+
+libISSMMatlab_la_SOURCES = $(io_sources)
+libISSMMatlab_la_CXXFLAGS= $(ALLCXXFLAGS)
+#}}}
+#api io{{{
+if !WINDOWS
+lib_LTLIBRARIES += libISSMApi.la
+else
+noinst_LTLIBRARIES += libISSMApi.la
+endif
+
+api_sources= ./io/ApiPrintf.cpp
+
+libISSMApi_la_SOURCES = $(api_sources)
+libISSMApi_la_CXXFLAGS= $(ALLCXXFLAGS)
+#}}}
+#Wrappers {{{
+lib_LTLIBRARIES += BamgMesher_matlab.la\
+						 BamgConvertMesh_matlab.la\
+						 BamgTriangulate_matlab.la\
+						 ContourToMesh_matlab.la\
+						 ContourToNodes_matlab.la\
+						 DistanceToMaskBoundary_matlab.la\
+						 ElementConnectivity_matlab.la\
+						 ExpSimplify_matlab.la\
+						 ExpToLevelSet_matlab.la\
+						 InterpFromGridToMesh_matlab.la\
+						 InterpFromMeshToMesh2d_matlab.la\
+						 InterpFromMeshToMesh3d_matlab.la\
+						 InterpFromMeshToGrid_matlab.la\
+						 InterpFromMesh2d_matlab.la\
+						 IssmConfig_matlab.la\
+						 NodeConnectivity_matlab.la\
+						 M1qn3_matlab.la\
+						 MeshPartition_matlab.la\
+						 MeshProfileIntersection_matlab.la\
+						 PointCloudFindNeighbors_matlab.la\
+						 PropagateFlagsFromConnectivity_matlab.la\
+						 TriMesh_matlab.la\
+						 TriMeshProcessRifts_matlab.la\
+						 Scotch_matlab.la
+
+if CHACO
+lib_LTLIBRARIES += Chaco_matlab.la
+endif
+if KRIGING
+lib_LTLIBRARIES +=  Kriging_matlab.la
+endif
+if KML
+lib_LTLIBRARIES += ShpRead_matlab.la
+endif
+#}}}
+
+# Dependencies {{{
+deps =  $(MATHLIB)
+
+#Triangle library
+AM_CXXFLAGS =  -DTRILIBRARY -DANSI_DECLARATORS -DNO_TIMER -D_WRAPPERS_
+
+#Matlab part
+AM_LDFLAGS = -module $(MEXLINK) -shrext ${EXEEXT} --export-dynamic -rdynamic -no-undefined
+if VERSION
+AM_LDFLAGS +=
+else
+AM_LDFLAGS += -avoid-version
+endif
+
+if STANDALONE_MODULES
+AM_LDFLAGS += -Wl,-static
+endif
+
+AM_CXXFLAGS +=  -D_HAVE_MATLAB_MODULES_ -fPIC
+
+deps += ./libISSMMatlab.la ../../c/libISSMModules.la ../../c/libISSMCore.la ./libISSMApi.la
+
+if WINDOWS
+deps += $(METISLIB)
+endif
+
+if ADOLC
+deps += $(ADOLCLIB)
+endif
+
+if FORTRAN
+deps += $(FLIBS) $(FORTRANLIB)
+endif
+
+#MEXLIB needs to be the last (undefined references on larsen)
+deps += ${MEXLIB}
+
+#Optimization flags:
+AM_CXXFLAGS += $(CXXOPTFLAGS) 
+#}}}
+# Module sources and dependencies {{{
+if !WINDOWS
+libISSMMatlab_la_LIBADD = ./../../c/libISSMCore.la ./../../c/libISSMModules.la $(MPILIB) $(PETSCLIB) $(MKLLIB) $(GSLLIB) $(PROJ4LIB) $(MATHLIB) $(MEXLIB) 
+endif
+
+if STANDALONE_LIBRARIES
+libISSMMatlab_la_LDFLAGS = -static 
+deps += $(PETSCLIB) $(TAOLIB) $(M1QN3LIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(TRIANGLELIB) $(SCALAPACKLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB)   $(ADOLCLIB) $(AMPILIB) $(METEOIOLIB) $(SNOWPACKLIB)
+endif
+
+if !WINDOWS
+libISSMApi_la_LIBADD = $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB) $(MATHLIB) $(MEXLIB)
+endif
+
+if STANDALONE_LIBRARIES
+libISSMApi_la_LDFLAGS = -static 
+endif
+
+BamgMesher_matlab_la_SOURCES = ../BamgMesher/BamgMesher.cpp
+BamgMesher_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+BamgMesher_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+BamgConvertMesh_matlab_la_SOURCES = ../BamgConvertMesh/BamgConvertMesh.cpp
+BamgConvertMesh_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+BamgConvertMesh_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+BamgTriangulate_matlab_la_SOURCES = ../BamgTriangulate/BamgTriangulate.cpp
+BamgTriangulate_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+BamgTriangulate_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+if CHACO
+Chaco_matlab_la_SOURCES = ../Chaco/Chaco.cpp
+Chaco_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+Chaco_matlab_la_LIBADD = ${deps} $(MPILIB) $(CHACOLIB) $(GSLLIB) $(PROJ4LIB) $(PETSCLIB)
+endif
+
+ContourToMesh_matlab_la_SOURCES = ../ContourToMesh/ContourToMesh.cpp
+ContourToMesh_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+ContourToMesh_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(PROJ4LIB)
+
+ExpToLevelSet_matlab_la_SOURCES = ../ExpToLevelSet/ExpToLevelSet.cpp
+ExpToLevelSet_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+ExpToLevelSet_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(PROJ4LIB)
+
+ContourToNodes_matlab_la_SOURCES = ../ContourToNodes/ContourToNodes.cpp
+ContourToNodes_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+ContourToNodes_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+DistanceToMaskBoundary_matlab_la_SOURCES = ../DistanceToMaskBoundary/DistanceToMaskBoundary.cpp
+DistanceToMaskBoundary_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+DistanceToMaskBoundary_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+ElementConnectivity_matlab_la_SOURCES = ../ElementConnectivity/ElementConnectivity.cpp
+ElementConnectivity_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+ElementConnectivity_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+InterpFromGridToMesh_matlab_la_SOURCES = ../InterpFromGridToMesh/InterpFromGridToMesh.cpp
+InterpFromGridToMesh_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+InterpFromGridToMesh_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(PROJ4LIB)
+
+InterpFromMeshToMesh2d_matlab_la_SOURCES = ../InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp
+InterpFromMeshToMesh2d_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+InterpFromMeshToMesh2d_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(PROJ4LIB)
+
+InterpFromMeshToMesh3d_matlab_la_SOURCES = ../InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.cpp
+InterpFromMeshToMesh3d_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+InterpFromMeshToMesh3d_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+InterpFromMeshToGrid_matlab_la_SOURCES = ../InterpFromMeshToGrid/InterpFromMeshToGrid.cpp
+InterpFromMeshToGrid_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+InterpFromMeshToGrid_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+InterpFromMesh2d_matlab_la_SOURCES = ../InterpFromMesh2d/InterpFromMesh2d.cpp
+InterpFromMesh2d_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+InterpFromMesh2d_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(PROJ4LIB)
+
+IssmConfig_matlab_la_SOURCES = ../IssmConfig/IssmConfig.cpp
+IssmConfig_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+IssmConfig_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB)
+
+ExpSimplify_matlab_la_SOURCES = ../ExpSimplify/ExpSimplify.cpp
+ExpSimplify_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+ExpSimplify_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+Kriging_matlab_la_SOURCES = ../Kriging/Kriging.cpp
+Kriging_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+Kriging_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB) $(MULTITHREADINGLIB) $(GSLLIB) $(PROJ4LIB)
+
+MeshPartition_matlab_la_SOURCES = ../MeshPartition/MeshPartition.cpp
+MeshPartition_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+MeshPartition_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(METISLIB) $(GSLLIB) $(PROJ4LIB)
+
+M1qn3_matlab_la_SOURCES = ../M1qn3/M1qn3.cpp
+M1qn3_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+M1qn3_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(METISLIB) $(M1QN3LIB) $(GSLLIB) $(PROJ4LIB)
+
+MeshProfileIntersection_matlab_la_SOURCES = ../MeshProfileIntersection/MeshProfileIntersection.cpp
+MeshProfileIntersection_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+MeshProfileIntersection_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+NodeConnectivity_matlab_la_SOURCES = ../NodeConnectivity/NodeConnectivity.cpp
+NodeConnectivity_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+NodeConnectivity_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+PointCloudFindNeighbors_matlab_la_SOURCES = ../PointCloudFindNeighbors/PointCloudFindNeighbors.cpp
+PointCloudFindNeighbors_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+PointCloudFindNeighbors_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(PROJ4LIB)
+
+PropagateFlagsFromConnectivity_matlab_la_SOURCES = ../PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.cpp
+PropagateFlagsFromConnectivity_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+PropagateFlagsFromConnectivity_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+Scotch_matlab_la_SOURCES = ../Scotch/Scotch.cpp
+Scotch_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+Scotch_matlab_la_LIBADD = ${deps} $(SCOTCHLIB) $(MPILIB) $(PETSCLIB) $(BLASLAPACKLIB)
+
+ShpRead_matlab_la_SOURCES = ../ShpRead/ShpRead.cpp
+ShpRead_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+ShpRead_matlab_la_LIBADD = ${deps} $(SHAPELIBLIB) $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+TriMesh_matlab_la_SOURCES = ../TriMesh/TriMesh.cpp
+TriMesh_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+TriMesh_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(TRIANGLELIB) $(GSLLIB) $(PROJ4LIB)
+
+TriMeshProcessRifts_matlab_la_SOURCES = ../TriMeshProcessRifts/TriMeshProcessRifts.cpp
+TriMeshProcessRifts_matlab_la_CXXFLAGS = ${AM_CXXFLAGS}
+TriMeshProcessRifts_matlab_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/include/matlabincludes.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/include/matlabincludes.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/include/matlabincludes.h	(revision 21239)
@@ -0,0 +1,15 @@
+
+#ifndef _MATLAB_INCLUDES_H_
+#define _MATLAB_INCLUDES_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_MATLAB_
+#include <mex.h>
+#endif
+
+#endif /*_MATLAB_INCLUDES_H_*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/include/wrapper_macros.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/include/wrapper_macros.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/include/wrapper_macros.h	(revision 21239)
@@ -0,0 +1,42 @@
+/* \file matlab macros.h
+ * \brief: macros used for the matlab bindings
+ */
+
+#ifndef _MATLAB_MACROS_H_
+#define _MATLAB_MACROS_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_MATLAB_
+/* MODULEBOOT/MODULEEND {{{*/
+
+/*The following macros hide the error exception handling in a matlab module. Just put 
+ * MODULEBOOT(); and MODULEEND(); at the beginning and end of a module, and c++ exceptions 
+ * will be trapped*/
+#define MODULEBOOT(); try{ \
+	IssmComm::SetComm();
+
+#define MODULEEND(); }\
+	catch(ErrorException &exception){\
+		mexErrMsgTxt(exception.WrapperReport()); \
+	}\
+	catch (exception &e){\
+		mexErrMsgTxt(e.what());\
+	}\
+	catch(...){\
+		mexErrMsgTxt("An unexpected error occurred");\
+	}
+/*}}}*/
+/* WRAPPER {{{*/
+#define WRAPPER(modulename,...) void mexFunction(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]) 
+/*}}}*/
+/* CHECKARGUMENTS {{{*/
+#define CHECKARGUMENTS(NLHS,NRHS,functionpointer) CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,functionpointer)
+/*}}}*/
+#endif
+
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/io/ApiPrintf.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/io/ApiPrintf.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/io/ApiPrintf.cpp	(revision 21239)
@@ -0,0 +1,19 @@
+/* \file ApiPrintf.c:
+ * \brief: API specific symbols from libISSMCore that we need to resolve here
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./matlabio.h"
+
+/*Matlab printf i/o: */
+void ApiPrintf(const char* string){
+
+	/*use mexPrintf in matlab: */
+	mexPrintf(string);
+	return;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/io/CheckNumMatlabArguments.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/io/CheckNumMatlabArguments.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/io/CheckNumMatlabArguments.cpp	(revision 21239)
@@ -0,0 +1,22 @@
+/*!\file CheckNumMatlabArguments.cpp:
+ * \brief: check number of arguments and report an usage error message.
+ */
+
+#include "./matlabio.h"
+
+int CheckNumMatlabArguments(int nlhs,int NLHS, int nrhs,int NRHS, const char* THISFUNCTION, void (*function)( void )){
+
+	/*checks on arguments on the matlab side: */
+	if (nrhs==0 && nlhs==0) {
+		/*unless NLHS=0 and NRHS=0, we are just asking for documentation: */
+		if (NRHS==0 && NLHS==0)return 1;
+		/* special case: */
+		function();
+		_error_("usage: see above");
+	}
+	else if (nlhs!=NLHS || nrhs!=NRHS ) {
+		function(); 
+		_error_("usage error.");
+	}
+	return 1;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/io/FetchMatlabData.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/io/FetchMatlabData.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/io/FetchMatlabData.cpp	(revision 21239)
@@ -0,0 +1,1214 @@
+/*\file FetchData.cpp:
+ * \brief: general I/O interface to fetch data in matlab
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./matlabio.h"
+#include <cstring> 
+
+/*Primitive data types*/
+/*FUNCTION FetchData(double** pmatrix,int* pM,int *pN,const mxArray* dataref){{{*/
+void FetchData(double** pmatrix,int* pM,int *pN,const mxArray* dataref){
+
+	double*  outmatrix=NULL;
+	int      outmatrix_rows,outmatrix_cols;
+
+	if(mxIsEmpty(dataref) ){
+		/*Nothing to pick up. Just initialize matrix pointer to NULL: */
+		outmatrix_rows=0;
+		outmatrix_cols=0;
+		outmatrix=NULL;
+	}
+	else if( mxIsClass(dataref,"double") || 
+				mxIsClass(dataref,"single") || 
+				mxIsClass(dataref,"int16") || 
+				mxIsClass(dataref,"int8") || 
+				mxIsClass(dataref,"uint8")){
+		/*Check dataref is not pointing to NaN: */
+		if ( mxIsNaN(*(mxGetPr(dataref))) && (mxGetM(dataref)==1) && (mxGetN(dataref)==1) ){
+			outmatrix_rows=0;
+			outmatrix_cols=0;
+			outmatrix=NULL;
+		}
+		else{
+			if(!mxIsClass(dataref,"double") && !mxIsClass(dataref,"single")){
+				_printf_("Warning: converting matlab data from '" << mxGetClassName(dataref) << "' to 'double'\n");
+			}
+			/*Convert matlab matrix to double* matrix: */
+			MatlabMatrixToDoubleMatrix(&outmatrix,&outmatrix_rows,&outmatrix_cols,dataref);
+		}
+	}
+	else{
+		/*This is an error: we don't have the correct input!: */
+		_error_("Input parameter of class " << mxGetClassName(dataref) << " not supported yet");
+	}
+
+	/*Assign output pointers:*/
+	*pmatrix=outmatrix;
+	if (pM)*pM=outmatrix_rows;
+	if (pN)*pN=outmatrix_cols;
+
+}
+/*}}}*/
+/*FUNCTION FetchData(double** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){{{*/
+void FetchData(double** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){
+
+	int     outmatrix_numel,outmatrix_ndims;
+	double *outmatrix       = NULL;
+	int    *outmatrix_size  = NULL;
+
+	if(mxIsEmpty(dataref) ){
+		/*Nothing to pick up. Just initialize matrix pointer to NULL: */
+		outmatrix_numel = 0;
+		outmatrix_ndims = 0;
+		outmatrix_size  = NULL;
+		outmatrix       = NULL;
+	}
+	else if( mxIsClass(dataref,"double") || 
+				mxIsClass(dataref,"single") || 
+				mxIsClass(dataref,"int16") || 
+				mxIsClass(dataref,"int8") || 
+				mxIsClass(dataref,"uint8")){
+
+		/*Check dataref is not pointing to NaN: */
+		if (mxIsNaN(*(mxGetPr(dataref))) && (mxGetNumberOfElements(dataref)==1)){
+			outmatrix_numel = 0;
+			outmatrix_ndims = 0;
+			outmatrix_size  = NULL;
+			outmatrix       = NULL;
+		}
+		else{
+			if(!mxIsClass(dataref,"double") && !mxIsClass(dataref,"single")){
+				_printf_("Warning: converting matlab data from '" << mxGetClassName(dataref) << "' to 'double'\n");
+			}
+			/*Convert matlab n-dim array to double* matrix: */
+			MatlabNArrayToNArray(&outmatrix,&outmatrix_numel,&outmatrix_ndims,&outmatrix_size,dataref);
+		}
+	}
+	else{
+		/*This is an error: we don't have the correct input!: */
+		_error_("Input parameter of class " << mxGetClassName(dataref) << " not supported yet");
+	}
+
+	/*Assign output pointers:*/
+	*pmatrix=outmatrix;
+	if (pnumel)*pnumel=outmatrix_numel;
+	if (pndims)*pndims=outmatrix_ndims;
+	if (psize )*psize =outmatrix_size;
+	else xDelete<int>(outmatrix_size);
+
+}
+/*}}}*/
+/*FUNCTION FetchData(int** pmatrix,int* pM,int *pN,const mxArray* dataref){{{*/
+void FetchData(int** pmatrix,int* pM,int *pN,const mxArray* dataref){
+
+	int     i,outmatrix_rows,outmatrix_cols;
+	double *doublematrix=NULL;
+	int    *outmatrix=NULL;
+
+	if(mxIsEmpty(dataref) ){
+		/*Nothing to pick up. Just initialize matrix pointer to NULL: */
+		outmatrix_rows=0;
+		outmatrix_cols=0;
+		outmatrix=NULL;
+	}
+	else if( mxIsClass(dataref,"double") || 
+				mxIsClass(dataref,"single") || 
+				mxIsClass(dataref,"int16") || 
+				mxIsClass(dataref,"int8") || 
+				mxIsClass(dataref,"uint8")){
+
+		/*Check dataref is not pointing to NaN: */
+		if ( mxIsNaN(*(mxGetPr(dataref))) && (mxGetM(dataref)==1) && (mxGetN(dataref)==1) ){
+			outmatrix_rows=0;
+			outmatrix_cols=0;
+			outmatrix=NULL;
+		}
+		else{
+			if(!mxIsClass(dataref,"double") && !mxIsClass(dataref,"single")){
+				_printf_("Warning: converting matlab data from '" << mxGetClassName(dataref) << "' to 'double'\n");
+			}
+			/*Convert matlab matrix to double* matrix: */
+			MatlabMatrixToDoubleMatrix(&doublematrix,&outmatrix_rows,&outmatrix_cols,dataref);
+
+			/*Convert double matrix into integer matrix: */
+			outmatrix=xNew<int>(outmatrix_rows*outmatrix_cols);
+			for(i=0;i<outmatrix_rows*outmatrix_cols;i++)outmatrix[i]=(int)doublematrix[i];
+		}
+	}
+	else{
+		/*This is an error: we don't have the correct input!: */
+		_error_("Input parameter of class " << mxGetClassName(dataref) << " not supported yet");
+	}
+
+	/*Assign output pointers:*/
+	*pmatrix=outmatrix;
+	if (pM)*pM=outmatrix_rows;
+	if (pN)*pN=outmatrix_cols;
+}
+/*}}}*/
+/*FUNCTION FetchData(bool** pmatrix,int* pM,int *pN,const mxArray* dataref){{{*/
+void FetchData(bool** pmatrix,int* pM,int *pN,const mxArray* dataref){
+
+	int     i,outmatrix_rows,outmatrix_cols;
+	double *doublematrix=NULL;
+	bool   *outmatrix=NULL;
+
+	if(mxIsEmpty(dataref) ){
+		/*Nothing to pick up. Just initialize matrix pointer to NULL: */
+		outmatrix_rows=0;
+		outmatrix_cols=0;
+		outmatrix=NULL;
+	}
+	else if (mxIsClass(dataref,"double") ){
+
+		/*Check dataref is not pointing to NaN: */
+		if ( mxIsNaN(*(mxGetPr(dataref))) && (mxGetM(dataref)==1) && (mxGetN(dataref)==1) ){
+			outmatrix_rows=0;
+			outmatrix_cols=0;
+			outmatrix=NULL;
+		}
+		else{
+
+			/*Convert matlab matrix to double* matrix: */
+			MatlabMatrixToDoubleMatrix(&doublematrix,&outmatrix_rows,&outmatrix_cols,dataref);
+
+			/*Convert double matrix into integer matrix: */
+			outmatrix=xNew<bool>(outmatrix_rows*outmatrix_cols);
+			for(i=0;i<outmatrix_rows;i++)outmatrix[i]=(bool)doublematrix[i];
+		}
+	}
+	else{
+		/*This is an error: we don't have the correct input!: */
+		_error_("Input parameter of class " << mxGetClassName(dataref) << " not supported yet");
+	}
+
+	/*Assign output pointers:*/
+	*pmatrix=outmatrix;
+	if (pM)*pM=outmatrix_rows;
+	if (pN)*pN=outmatrix_cols;
+}
+/*}}}*/
+/*FUNCTION FetchData(bool** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){{{*/
+void FetchData(bool** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){
+
+	int      i;
+	int      outmatrix_numel,outmatrix_ndims;
+	int*     outmatrix_size=NULL;
+	double*  doublematrix=NULL;
+	bool*    outmatrix=NULL;
+
+	if(mxIsEmpty(dataref) ){
+		/*Nothing to pick up. Just initialize matrix pointer to NULL: */
+		outmatrix_numel=0;
+		outmatrix_ndims=0;
+		outmatrix_size =NULL;
+		outmatrix=NULL;
+	}
+	else if (mxIsClass(dataref,"logical") ){
+
+		/*Check dataref is not pointing to NaN: */
+		if ( mxIsNaN(*((bool*)mxGetData(dataref))) && (mxGetNumberOfElements(dataref)==1) ){
+			outmatrix_numel=0;
+			outmatrix_ndims=0;
+			outmatrix_size =NULL;
+			outmatrix=NULL;
+		}
+		else{
+
+			/*Convert matlab n-dim array to bool* matrix: */
+			MatlabNArrayToNArray(&outmatrix,&outmatrix_numel,&outmatrix_ndims,&outmatrix_size,dataref);
+		}
+	}
+	else if (mxIsClass(dataref,"double") ){
+
+		/*Check dataref is not pointing to NaN: */
+		if ( mxIsNaN(*(mxGetPr(dataref))) && (mxGetNumberOfElements(dataref)==1) ){
+			outmatrix_numel=0;
+			outmatrix_ndims=0;
+			outmatrix_size =NULL;
+			outmatrix=NULL;
+		}
+		else{
+
+			/*Convert matlab n-dim array to double* matrix: */
+			MatlabNArrayToNArray(&doublematrix,&outmatrix_numel,&outmatrix_ndims,&outmatrix_size,dataref);
+
+			/*Convert double matrix into bool matrix: */
+			outmatrix=xNew<bool>(outmatrix_numel);
+			for(i=0;i<outmatrix_numel;i++)outmatrix[i]=(bool)doublematrix[i];
+			xDelete<double>(doublematrix);
+		}
+	}
+	else{
+		/*This is an error: we don't have the correct input!: */
+		_error_("Input parameter of class " << mxGetClassName(dataref) << " not supported yet");
+	}
+
+	/*Assign output pointers:*/
+	*pmatrix=outmatrix;
+	if (pnumel)*pnumel=outmatrix_numel;
+	if (pndims)*pndims=outmatrix_ndims;
+	if (psize )*psize =outmatrix_size;
+	else xDelete<int>(outmatrix_size);
+
+}
+/*}}}*/
+/*FUNCTION FetchData(double** pvector,int* pM,const mxArray* dataref){{{*/
+void FetchData(double** pvector,int* pM,const mxArray* dataref){
+
+	double* outvector=NULL;
+	int M,N;
+
+	/*Use Fetch matrix*/
+	FetchData(&outvector,&M,&N,dataref) ;
+
+	/*Check that it is a vector*/
+	if(M*N>0 && (M!=1 && N!=1)){
+		_error_("input vector of size " << M << "x" << N << " should have only one column");
+	}
+
+	/*Transpose Row vectors*/
+	if(M==1 && N>1) M=N;
+
+	/*Assign output pointers:*/
+	*pvector=outvector;
+	if(pM)*pM=M;
+}
+/*}}}*/
+/*FUNCTION FetchData(int** pvector,int* pM,const mxArray* dataref){{{*/
+void FetchData(int** pvector,int* pM,const mxArray* dataref){
+
+	int    i;
+	double *doublevector   = NULL;
+	int    *outvector      = NULL;
+	int     outvector_rows;
+
+	if(mxIsEmpty(dataref)){
+		/*Nothing to pick up. Just initialize matrix pointer to NULL: */
+		outvector_rows=0;
+		outvector=NULL;
+	}
+	else if (mxIsClass(dataref,"double") ){
+
+		/*Convert matlab vector to double*  vector: */
+		FetchData(&doublevector,&outvector_rows,dataref);
+
+		/*Convert double vector into integer vector: */
+		outvector=xNew<int>(outvector_rows);
+		for(i=0;i<outvector_rows;i++)outvector[i]=(int)doublevector[i];
+	}
+	else{
+		/*This is an error: we don't have the correct input!: */
+		_error_("Input parameter of class " << mxGetClassName(dataref) << " not supported yet");
+	}
+
+	/*Assign output pointers:*/
+	*pvector=outvector;
+	if (pM)*pM=outvector_rows;
+}
+/*}}}*/
+/*FUNCTION FetchData(bool** pvector,int* pM,const mxArray* dataref){{{*/
+void FetchData(bool** pvector,int* pM,const mxArray* dataref){
+
+	int    i;
+	double *doublevector   = NULL;
+	bool   *outvector      = NULL;
+	int     outvector_rows;
+
+	if(mxIsEmpty(dataref)){
+		/*Nothing to pick up. Just initialize matrix pointer to NULL: */
+		outvector_rows=0;
+		outvector=NULL;
+	}
+	else if (mxIsClass(dataref,"double") ){
+
+		/*Convert matlab vector to double*  vector: */
+		FetchData(&doublevector,&outvector_rows,dataref);
+
+		/*Convert double vector into integer vector: */
+		outvector=xNew<bool>(outvector_rows);
+		for(i=0;i<outvector_rows;i++)outvector[i]=(bool)doublevector[i];
+	}
+	else{
+		/*This is an error: we don't have the correct input!: */
+		_error_("Input parameter of class " << mxGetClassName(dataref) << " not supported yet");
+	}
+
+	/*Assign output pointers:*/
+	*pvector=outvector;
+	if (pM)*pM=outvector_rows;
+}
+/*}}}*/
+/*FUNCTION FetchData(float** pvector,int* pM,const mxArray* dataref){{{*/
+void FetchData(float** pvector,int* pM,const mxArray* dataref){
+
+	int    i;
+	double *doublevector   = NULL;
+	float  *outvector      = NULL;
+	int     outvector_rows;
+
+	if(mxIsEmpty(dataref)){
+		/*Nothing to pick up. Just initialize matrix pointer to NULL: */
+		outvector_rows=0;
+		outvector=NULL;
+	}
+	else if (mxIsClass(dataref,"double") ){
+
+		/*Convert matlab vector to double*  vector: */
+		FetchData(&doublevector,&outvector_rows,dataref);
+
+		/*Convert double vector into float vector: */
+		outvector=xNew<float>(outvector_rows);
+		for(i=0;i<outvector_rows;i++)outvector[i]=(float)doublevector[i];
+	}
+	else{
+		/*This is an error: we don't have the correct input!: */
+		_error_("Input parameter of class " << mxGetClassName(dataref) << " not supported yet");
+	}
+
+	/*Assign output pointers:*/
+	*pvector=outvector;
+	if (pM)*pM=outvector_rows;
+}
+/*}}}*/
+/*FUNCTION FetchData(char** pstring,const mxArray* dataref){{{*/
+void FetchData(char** pstring,const mxArray* dataref){
+
+	char* outstring=NULL;
+
+	/*Ok, the string should be coming directly from the matlab workspace: */
+	if (!mxIsClass(dataref,"char")){
+		_error_("input data_type is not a string!");
+	}
+	else{
+		/*Recover the string:*/
+		int stringlen;
+
+		stringlen = mxGetM(dataref)*mxGetN(dataref)+1;
+		outstring =xNew<char>(stringlen);
+		mxGetString(dataref,outstring,stringlen);
+	}
+
+	/*Assign output pointers:*/
+	*pstring=outstring;
+}/*}}}*/
+/*FUNCTION FetchData(char** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){{{*/
+void FetchData(char** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){
+
+	int      outmatrix_numel,outmatrix_ndims;
+	int*     outmatrix_size=NULL;
+	char*    outmatrix=NULL;
+
+	if(mxIsEmpty(dataref) ){
+		/*Nothing to pick up. Just initialize matrix pointer to NULL: */
+		outmatrix_numel=0;
+		outmatrix_ndims=0;
+		outmatrix_size =NULL;
+		outmatrix=NULL;
+	}
+	else if (mxIsClass(dataref,"char") ){
+
+		/*Convert matlab n-dim array to char* matrix: */
+		MatlabNArrayToNArray(&outmatrix,&outmatrix_numel,&outmatrix_ndims,&outmatrix_size,dataref);
+	}
+	else{
+		/*This is an error: we don't have the correct input!: */
+		_error_("Input parameter of class " << mxGetClassName(dataref) << " not supported yet");
+	}
+
+	/*Assign output pointers:*/
+	*pmatrix=outmatrix;
+	if (pnumel)*pnumel=outmatrix_numel;
+	if (pndims)*pndims=outmatrix_ndims;
+	if (psize )*psize =outmatrix_size;
+	else xDelete<int>(outmatrix_size);
+
+}
+/*}}}*/
+/*FUNCTION FetchData(double* pscalar,const mxArray* dataref){{{*/
+void FetchData(double* pscalar,const mxArray* dataref){
+
+	double scalar;
+
+	if (!mxIsClass(dataref,"double")){
+		_error_("input data_type is not a double!");
+	}
+	else{
+		/*Recover the double: */
+		scalar=mxGetScalar(dataref);
+	}
+
+	/*Assign output pointers:*/
+	*pscalar=scalar;
+}
+/*}}}*/
+/*FUNCTION FetchData(int* pinteger,const mxArray* dataref){{{*/
+void FetchData(int* pinteger,const mxArray* dataref){
+
+	int integer;
+
+	if (!mxIsClass(dataref,"double")){
+		_error_("input data_type is not a scalar!");
+	}
+	else{
+		/*Recover the double: */
+		integer=(int)mxGetScalar(dataref);
+	}
+
+	/*Assign output pointers:*/
+	*pinteger=integer;
+}
+/*}}}*/
+/*FUNCTION FetchData(bool* pboolean,const mxArray* dataref){{{*/
+void FetchData(bool* pboolean,const mxArray* dataref){
+
+	bool* mxbool_ptr=NULL;
+
+	if (mxIsClass(dataref,"logical")){
+		if(mxGetM(dataref)!=1) _error_("input data is not of size 1x1");
+		if(mxGetN(dataref)!=1) _error_("input data is not of size 1x1");
+		mxbool_ptr=mxGetLogicals(dataref);
+	}
+	else{
+		_error_("input data_type is not a bool!");
+	}
+
+	*pboolean=*mxbool_ptr;
+}
+/*}}}*/
+
+/*ISSM objects*/
+/*FUNCTION FetchData(BamgGeom** pbamggeom,const mxArray* dataref){{{*/
+void FetchData(BamgGeom** pbamggeom,const mxArray* dataref){
+
+	/*Initialize output*/
+	BamgGeom* bamggeom=new BamgGeom();
+
+	/*Fetch all fields*/
+	FetchData(&bamggeom->Vertices,&bamggeom->VerticesSize[0],&bamggeom->VerticesSize[1],mxGetAssignedField(dataref,0,"Vertices"));
+	FetchData(&bamggeom->Edges, &bamggeom->EdgesSize[0], &bamggeom->EdgesSize[1], mxGetAssignedField(dataref,0,"Edges"));
+	FetchData(&bamggeom->Corners, &bamggeom->CornersSize[0], &bamggeom->CornersSize[1], mxGetAssignedField(dataref,0,"Corners"));
+	FetchData(&bamggeom->RequiredVertices,&bamggeom->RequiredVerticesSize[0],&bamggeom->RequiredVerticesSize[1],mxGetAssignedField(dataref,0,"RequiredVertices"));
+	FetchData(&bamggeom->RequiredEdges, &bamggeom->RequiredEdgesSize[0], &bamggeom->RequiredEdgesSize[1], mxGetAssignedField(dataref,0,"RequiredEdges"));
+	FetchData(&bamggeom->CrackedEdges,&bamggeom->CrackedEdgesSize[0],&bamggeom->CrackedEdgesSize[1],mxGetAssignedField(dataref,0,"CrackedEdges"));
+	FetchData(&bamggeom->SubDomains,&bamggeom->SubDomainsSize[0],&bamggeom->SubDomainsSize[1],mxGetAssignedField(dataref,0,"SubDomains"));
+
+	/*Assign output pointers:*/
+	*pbamggeom=bamggeom;
+}
+/*}}}*/
+/*FUNCTION FetchData(BamgMesh** pbamgmesh,const mxArray* dataref){{{*/
+void FetchData(BamgMesh** pbamgmesh,const mxArray* dataref){
+
+	/*Initialize output*/
+	BamgMesh* bamgmesh=new BamgMesh();
+
+	/*Fetch all fields*/
+	FetchData(&bamgmesh->Vertices,&bamgmesh->VerticesSize[0],&bamgmesh->VerticesSize[1],mxGetAssignedField(dataref,0,"Vertices"));
+	FetchData(&bamgmesh->Edges, &bamgmesh->EdgesSize[0], &bamgmesh->EdgesSize[1], mxGetAssignedField(dataref,0,"Edges"));
+	FetchData(&bamgmesh->Triangles, &bamgmesh->TrianglesSize[0], &bamgmesh->TrianglesSize[1], mxGetAssignedField(dataref,0,"Triangles"));
+	FetchData(&bamgmesh->CrackedEdges,&bamgmesh->CrackedEdgesSize[0],&bamgmesh->CrackedEdgesSize[1],mxGetAssignedField(dataref,0,"CrackedEdges"));
+	FetchData(&bamgmesh->VerticesOnGeomEdge,&bamgmesh->VerticesOnGeomEdgeSize[0],&bamgmesh->VerticesOnGeomEdgeSize[1],mxGetAssignedField(dataref,0,"VerticesOnGeomEdge"));
+	FetchData(&bamgmesh->VerticesOnGeomVertex,&bamgmesh->VerticesOnGeomVertexSize[0],&bamgmesh->VerticesOnGeomVertexSize[1],mxGetAssignedField(dataref,0,"VerticesOnGeomVertex"));
+	FetchData(&bamgmesh->EdgesOnGeomEdge, &bamgmesh->EdgesOnGeomEdgeSize[0], &bamgmesh->EdgesOnGeomEdgeSize[1], mxGetAssignedField(dataref,0,"EdgesOnGeomEdge"));
+	FetchData(&bamgmesh->IssmSegments,&bamgmesh->IssmSegmentsSize[0],&bamgmesh->IssmSegmentsSize[1],mxGetAssignedField(dataref,0,"IssmSegments"));
+
+	/*Assign output pointers:*/
+	*pbamgmesh=bamgmesh;
+}
+/*}}}*/
+/*FUNCTION FetchData(BamgOpts** pbamgopts,const mxArray* dataref){{{*/
+void FetchData(BamgOpts** pbamgopts,const mxArray* dataref){
+
+	/*Initialize output*/
+	BamgOpts* bamgopts=new BamgOpts();
+
+	/*Fetch all fields*/
+	FetchData(&bamgopts->anisomax,mxGetField(dataref,0,"anisomax"));
+	FetchData(&bamgopts->cutoff,mxGetField(dataref,0,"cutoff"));
+	FetchData(&bamgopts->coeff,mxGetField(dataref,0,"coeff"));
+	FetchData(&bamgopts->errg,mxGetField(dataref,0,"errg"));
+	FetchData(&bamgopts->gradation,mxGetField(dataref,0,"gradation"));
+	FetchData(&bamgopts->Hessiantype,mxGetField(dataref,0,"Hessiantype"));
+	FetchData(&bamgopts->MaxCornerAngle,mxGetField(dataref,0,"MaxCornerAngle"));
+	FetchData(&bamgopts->maxnbv,mxGetField(dataref,0,"maxnbv"));
+	FetchData(&bamgopts->maxsubdiv,mxGetField(dataref,0,"maxsubdiv"));
+	FetchData(&bamgopts->Metrictype,mxGetField(dataref,0,"Metrictype"));
+	FetchData(&bamgopts->nbjacobi,mxGetField(dataref,0,"nbjacobi"));
+	FetchData(&bamgopts->nbsmooth,mxGetField(dataref,0,"nbsmooth"));
+	FetchData(&bamgopts->omega,mxGetField(dataref,0,"omega"));
+	FetchData(&bamgopts->power,mxGetField(dataref,0,"power"));
+	FetchData(&bamgopts->random,mxGetField(dataref,0,"random"));
+	FetchData(&bamgopts->verbose,mxGetField(dataref,0,"verbose"));
+
+	FetchData(&bamgopts->Crack,mxGetField(dataref,0,"Crack"));
+	FetchData(&bamgopts->geometricalmetric,mxGetField(dataref,0,"geometricalmetric"));
+	FetchData(&bamgopts->KeepVertices,mxGetField(dataref,0,"KeepVertices"));
+	FetchData(&bamgopts->splitcorners,mxGetField(dataref,0,"splitcorners"));
+
+	FetchData(&bamgopts->hmin,mxGetField(dataref,0,"hmin"));
+	FetchData(&bamgopts->hmax,mxGetField(dataref,0,"hmax"));
+	FetchData(&bamgopts->hminVertices,&bamgopts->hminVerticesSize[0],&bamgopts->hminVerticesSize[1],mxGetField(dataref,0,"hminVertices"));
+	FetchData(&bamgopts->hmaxVertices,&bamgopts->hmaxVerticesSize[0],&bamgopts->hmaxVerticesSize[1],mxGetField(dataref,0,"hmaxVertices"));
+	FetchData(&bamgopts->hVertices,&bamgopts->hVerticesSize[0],&bamgopts->hVerticesSize[1],mxGetField(dataref,0,"hVertices"));
+	FetchData(&bamgopts->metric,&bamgopts->metricSize[0],&bamgopts->metricSize[1],mxGetField(dataref,0,"metric"));
+	FetchData(&bamgopts->field,&bamgopts->fieldSize[0],&bamgopts->fieldSize[1],mxGetField(dataref,0,"field"));
+	FetchData(&bamgopts->err,&bamgopts->errSize[0],&bamgopts->errSize[1],mxGetField(dataref,0,"err"));
+
+	/*Additional checks*/
+	bamgopts->Check();
+
+	/*Assign output pointers:*/
+	*pbamgopts=bamgopts;
+}
+/*}}}*/
+/*FUNCTION FetchData(Options** poptions,const mxArray** pdataref){{{*/
+void FetchData(Options** poptions,int istart, int nrhs,const mxArray** pdataref){
+
+	char   *name   = NULL;
+	Option *option = NULL;
+
+	/*Initialize output*/
+	Options* options=new Options();
+
+	/*Fetch all options*/
+	for (int i=istart; i<nrhs; i=i+2){
+		if (!mxIsClass(pdataref[i],"char")) _error_("Argument " << i+1 << " must be name of option");
+
+		FetchData(&name,pdataref[i]);
+		if(i+1 == nrhs) _error_("Argument " << i+2 << " must exist and be value of option \"" << name << "\".");
+
+		option=(Option*)OptionParse(name,&pdataref[i+1]);
+		options->AddOption(option);
+		option=NULL;
+	}
+
+	/*Assign output pointers:*/
+	*poptions=options;
+}
+/*}}}*/
+/*FUNCTION FetchData(Contours** pcontours,const mxArray* dataref){{{*/
+void FetchData(Contours** pcontours,const mxArray* dataref){
+
+	int             numcontours,index,test1,test2;
+	char            *contourname = NULL;
+	Contours        *contours    = NULL;
+	Contour<double> *contouri    = NULL;
+
+	if (mxIsClass(dataref,"char")){
+		FetchData(&contourname,dataref);
+		contours=ExpRead<double>(contourname);
+	}
+	else if(mxIsClass(dataref,"struct")){
+
+		contours=new Contours();
+		numcontours=mxGetNumberOfElements(dataref);
+
+		for(int i=0;i<numcontours;i++){
+
+			contouri=new Contour<double>();
+
+			index = mxGetFieldNumber(dataref,"nods");
+			if(index==-1) _error_("input structure does not have a 'nods' field");
+			FetchData(&contouri->nods,mxGetFieldByNumber(dataref,i,index));
+
+			index = mxGetFieldNumber(dataref,"x");
+			if(index==-1) _error_("input structure does not have a 'x' field");
+			FetchData(&contouri->x,&test1,&test2,mxGetFieldByNumber(dataref,i,index));
+			if(test1!=contouri->nods || test2!=1) _error_("field x should be of size ["<<contouri->nods<<" 1]");
+
+			index = mxGetFieldNumber(dataref,"y");
+			if(index==-1) _error_("input structure does not have a 'y' field");
+			FetchData(&contouri->y,&test1,&test2,mxGetFieldByNumber(dataref,i,index));
+			if(test1!=contouri->nods || test2!=1) _error_("field y should be of size ["<<contouri->nods<<" 1]");
+
+			contours->AddObject(contouri);
+		}
+	}
+	else{
+		_error_("Contour is neither a string nor a structure and cannot be loaded ("<<mxGetClassName(dataref)<<" not supported)");
+	}
+
+	/*clean-up and assign output pointer*/
+	xDelete<char>(contourname);
+	*pcontours=contours;
+}
+/*}}}*/
+
+/*Toolkit*/
+/*FUNCTION MatlabMatrixToDoubleMatrix {{{*/
+int MatlabMatrixToDoubleMatrix(double** pmatrix,int* pmatrix_rows,int* pmatrix_cols,const mxArray* mxmatrix){
+
+	int        i,j,count,rows,cols;
+
+	/*output: */
+	double* matrix=NULL;
+
+	/*matlab indices: */
+	mwIndex*    ir=NULL;
+	mwIndex*    jc=NULL;
+
+	/*Ok, first check if we are dealing with a sparse or full matrix: */
+	if (mxIsSparse(mxmatrix)){
+
+		/*Dealing with sparse matrix: recover size first: */
+		double* pmxmatrix=(double*)mxGetPr(mxmatrix);
+		rows=mxGetM(mxmatrix);
+		cols=mxGetN(mxmatrix);
+
+		if(rows*cols){
+			matrix=xNewZeroInit<double>(rows*cols);
+
+			/*Now, get ir,jc and pr: */
+			ir=mxGetIr(mxmatrix);
+			jc=mxGetJc(mxmatrix);
+
+			/*Now, start inserting data into double* matrix: */
+			count=0;
+			for(i=0;i<cols;i++){
+				for(j=0;j<(jc[i+1]-jc[i]);j++){
+					matrix[rows*ir[count]+i]=pmxmatrix[count];
+					count++;
+				}
+			}
+		}
+
+	}
+	else if(mxIsClass(mxmatrix,"double")){
+		/*Dealing with dense matrix: recover pointer and size: */
+		double* pmxmatrix=(double*)mxGetPr(mxmatrix);
+		rows=mxGetM(mxmatrix);
+		cols=mxGetN(mxmatrix);
+
+		/*Create serial matrix: */
+		if(rows*cols){
+			matrix=xNewZeroInit<double>(rows*cols);
+
+			for(i=0;i<rows;i++){
+				for(j=0;j<cols;j++){
+					matrix[cols*i+j]=(double)pmxmatrix[rows*j+i];
+				}
+			}
+		}
+	}
+	else if(mxIsClass(mxmatrix,"single")){
+		/*Dealing with dense matrix: recover pointer and size: */
+		float *pmxmatrix=(float*)mxGetPr(mxmatrix);
+		rows=mxGetM(mxmatrix);
+		cols=mxGetN(mxmatrix);
+
+		/*Create serial matrix: */
+		if(rows*cols){
+			matrix=xNewZeroInit<double>(rows*cols);
+
+			for(i=0;i<rows;i++){
+				for(j=0;j<cols;j++){
+					matrix[cols*i+j]=(double)pmxmatrix[rows*j+i];
+				}
+			}
+		}
+	}
+	else if(mxIsClass(mxmatrix,"int16")){
+		/*Dealing with dense matrix: recover pointer and size: */
+		short int *pmxmatrix=(short*)mxGetPr(mxmatrix);
+		rows=mxGetM(mxmatrix);
+		cols=mxGetN(mxmatrix);
+
+		/*Create serial matrix: */
+		if(rows*cols){
+			matrix=xNewZeroInit<double>(rows*cols);
+
+			for(i=0;i<rows;i++){
+				for(j=0;j<cols;j++){
+					matrix[cols*i+j]=(double)pmxmatrix[rows*j+i];
+				}
+			}
+		}
+	}
+	else if(mxIsClass(mxmatrix,"uint8")){
+		/*Dealing with dense matrix: recover pointer and size: */
+		char *pmxmatrix=(char*)mxGetPr(mxmatrix);
+		rows=mxGetM(mxmatrix);
+		cols=mxGetN(mxmatrix);
+
+		/*Create serial matrix: */
+		if(rows*cols){
+			matrix=xNewZeroInit<double>(rows*cols);
+
+			for(i=0;i<rows;i++){
+				for(j=0;j<cols;j++){
+					matrix[cols*i+j]=(double)pmxmatrix[rows*j+i];
+				}
+			}
+		}
+	}
+	else{
+		_error_("Matlab matrix type Not implemented yet");
+	}
+
+	/*Assign output pointer: */
+	*pmatrix=matrix;
+	*pmatrix_rows=rows;
+	*pmatrix_cols=cols;
+
+	return 1;
+}/*}}}*/
+/*FUNCTION MatlabNArrayToNArray(double** pmatrix,int* pmatrix_numel,int* pmatrix_ndims,int** pmatrix_size,const mxArray* mxmatrix){{{*/
+int MatlabNArrayToNArray(double** pmatrix,int* pmatrix_numel,int* pmatrix_ndims,int** pmatrix_size,const mxArray* mxmatrix){
+
+	int  i,j,rows,cols;
+	int  numel,ndims;
+	int *size,*dims;
+	double* mxmatrix_ptr=NULL;
+	const mwSize* ipt=NULL;
+
+	/*output: */
+	double* matrix=NULL;
+
+	/*matlab indices: */
+	mwIndex *ir    = NULL;
+	mwIndex *jc    = NULL;
+	double  *pr    = NULL;
+	int      count;
+
+	/*get Matlab matrix information: */
+	numel=mxGetNumberOfElements(mxmatrix);
+	ndims=mxGetNumberOfDimensions(mxmatrix);
+	ipt  =mxGetDimensions(mxmatrix);
+	size =xNew<int>(ndims);
+	for (i=0;i<ndims;i++) size[i]=(int)ipt[i];
+
+	/*Ok, first check if we are dealing with a sparse or full matrix: */
+	if (mxIsSparse(mxmatrix)){
+
+		/*Dealing with sparse matrix: recover size first: */
+		rows = mxGetM(mxmatrix);
+		cols = mxGetN(mxmatrix);
+
+		matrix=xNewZeroInit<double>(rows*cols);
+
+		/*Now, get ir,jc and pr: */
+		ir = mxGetIr(mxmatrix);
+		jc = mxGetJc(mxmatrix);
+		pr = mxGetPr(mxmatrix);
+
+		/*Now, start inserting data into double* matrix: */
+		count=0;
+		for(i=0;i<cols;i++){
+			for(j=0;j<(jc[i+1]-jc[i]);j++){
+				*(matrix+rows*ir[count]+i)=pr[count];
+				count++;
+			}
+		}
+
+	}
+	else{
+
+		/*Dealing with dense matrix: recover pointer and size: */
+		mxmatrix_ptr=(double*)mxGetPr(mxmatrix);
+
+		/*Create serial matrix: */
+		matrix=xNewZeroInit<double>(numel);
+
+		dims=xNew<int>(ndims);
+		for(i=0;i<numel;i++){
+			ColumnWiseDimsFromIndex(dims,i,size,ndims);
+			j = IndexFromRowWiseDims(dims,size,ndims);
+			matrix[j]=(double)mxmatrix_ptr[i];
+		}
+		xDelete<int>(dims);
+	}
+
+	/*Assign output pointer: */
+	*pmatrix       = matrix;
+	*pmatrix_numel = numel;
+	*pmatrix_ndims = ndims;
+	*pmatrix_size  = size;
+
+	return 1;
+}
+/*}}}*/
+/*FUNCTION MatlabNArrayToNArray(bool** pmatrix,int* pmatrix_numel,int* pmatrix_ndims,int** pmatrix_size,const mxArray* mxmatrix){{{*/
+int MatlabNArrayToNArray(bool** pmatrix,int* pmatrix_numel,int* pmatrix_ndims,int** pmatrix_size,const mxArray* mxmatrix){
+
+	int  i,j,rows,cols;
+	int  numel,ndims;
+	int *size,*dims;
+	bool* mxmatrix_ptr=NULL;
+	const mwSize* ipt=NULL;
+
+	/*output: */
+	bool* matrix=NULL;
+
+	/*matlab indices: */
+	mwIndex *ir    = NULL;
+	mwIndex *jc    = NULL;
+	bool    *pm    = NULL;
+	int      count;
+
+	/*get Matlab matrix information: */
+	numel = mxGetNumberOfElements(mxmatrix);
+	ndims = mxGetNumberOfDimensions(mxmatrix);
+	ipt   = mxGetDimensions(mxmatrix);
+	size  = xNew<int>(ndims);
+	for (i=0;i<ndims;i++) size[i]=(int)ipt[i];
+
+	/*Ok, first check if we are dealing with a sparse or full matrix: */
+	if (mxIsSparse(mxmatrix)){
+
+		/*Dealing with sparse matrix: recover size first: */
+		rows=mxGetM(mxmatrix);
+		cols=mxGetN(mxmatrix);
+		matrix=xNewZeroInit<bool>(rows*cols);
+
+		/*Now, get ir,jc and pm: */
+		ir=mxGetIr(mxmatrix);
+		jc=mxGetJc(mxmatrix);
+		pm=(bool*)mxGetData(mxmatrix);
+
+		/*Now, start inserting data into bool* matrix: */
+		count=0;
+		for(i=0;i<cols;i++){
+			for(j=0;j<(jc[i+1]-jc[i]);j++){
+				matrix[rows*ir[count]+i]=pm[count];
+				count++;
+			}
+		}
+	}
+	else{
+
+		/*Dealing with dense matrix: recover pointer and size: */
+		mxmatrix_ptr=(bool*)mxGetData(mxmatrix);
+
+		/*Create serial matrix: */
+		matrix=xNew<bool>(numel);
+		dims=xNew<int>(ndims);
+		for(i=0;i<numel;i++){
+			ColumnWiseDimsFromIndex(dims,i,size,ndims);
+			j=IndexFromRowWiseDims(dims,size,ndims);
+			matrix[j]=(bool)mxmatrix_ptr[i];
+		}
+		xDelete<int>(dims);
+	}
+
+	/*Assign output pointer: */
+	*pmatrix       = matrix;
+	*pmatrix_numel = numel;
+	*pmatrix_ndims = ndims;
+	*pmatrix_size  = size;
+
+	return 1;
+}
+/*}}}*/
+/*FUNCTION MatlabNArrayToNArray(char** pmatrix,int* pmatrix_numel,int* pmatrix_ndims,int** pmatrix_size,const mxArray* mxmatrix){{{*/
+int MatlabNArrayToNArray(char** pmatrix,int* pmatrix_numel,int* pmatrix_ndims,int** pmatrix_size,const mxArray* mxmatrix){
+
+	int           i,j,rows,cols;
+	int           numel,ndims;
+	int          *size , *dims;
+	mxChar       *mxmatrix_ptr = NULL;
+	const mwSize *ipt          = NULL;
+
+	/*output: */
+	char* matrix=NULL;
+
+	/*matlab indices: */
+	mwIndex *ir    = NULL;
+	mwIndex *jc    = NULL;
+	char    *pm    = NULL;
+	int      count;
+
+	/*get Matlab matrix information: */
+	numel = mxGetNumberOfElements(mxmatrix);
+	ndims = mxGetNumberOfDimensions(mxmatrix);
+	ipt   = mxGetDimensions(mxmatrix);
+	size  = xNew<int>(ndims);
+	for (i=0;i<ndims;i++) size[i]=(int)ipt[i];
+
+	/*Ok, first check if we are dealing with a sparse or full matrix: */
+	if (mxIsSparse(mxmatrix)){
+
+		/*Dealing with sparse matrix: recover size first: */
+		rows = mxGetM(mxmatrix);
+		cols = mxGetN(mxmatrix);
+		matrix=xNew<char>(rows*cols);
+
+		/*Now, get ir,jc and pm: */
+		ir = mxGetIr(mxmatrix);
+		jc = mxGetJc(mxmatrix);
+		pm = (char*)mxGetData(mxmatrix);
+
+		/*Now, start inserting data into char* matrix: */
+		count=0;
+		for(i=0;i<cols;i++){
+			for(j=0;j<(jc[i+1]-jc[i]);j++){
+				matrix[rows*ir[count]+i]=(char)pm[count];
+				count++;
+			}
+		}
+	}
+	else{
+		/*Dealing with dense matrix: recover pointer and size: */
+		mxmatrix_ptr=mxGetChars(mxmatrix);
+
+		/*Create serial matrix: */
+		matrix=xNew<char>(numel+1);
+		matrix[numel]='\0';
+
+		/*looping code adapted from Matlab example explore.c: */
+		int elements_per_page = size[0] * size[1];
+		/* total_number_of_pages = size[2] x size[3] x ... x size[N-1] */
+		int total_number_of_pages = 1;
+		for (i=2; i<ndims; i++) {
+			total_number_of_pages *= size[i];
+		}
+
+		i=0;
+		for (int page=0; page < total_number_of_pages; page++) {
+			int row;
+			/* On each page, walk through each row. */
+			for (row=0; row<size[0]; row++)  {
+				int column;
+				j = (page * elements_per_page) + row;
+
+				/* Walk along each column in the current row. */
+				for (column=0; column<size[1]; column++) {
+					*(matrix+i++)=(char)*(mxmatrix_ptr+j);
+					j += size[0];
+				}
+			}
+		}
+	}
+
+	/*Assign output pointer: */
+	*pmatrix       = matrix;
+	*pmatrix_numel = numel;
+	*pmatrix_ndims = ndims;
+	*pmatrix_size  = size;
+
+	return 1;
+}
+/*}}}*/
+/*FUNCTION mxGetAssignedField{{{*/
+mxArray* mxGetAssignedField(const mxArray* pmxa_array,int number,const char* field){
+
+	//output
+	mxArray* mxfield=NULL;
+
+	//input
+	mxArray    *inputs[2];
+	mxArray    *pindex      = NULL;
+	const char *fnames[2];
+	mwSize      ndim        = 2;
+	mwSize      onebyone[2] = {1,1};
+
+	//We want to call the subsasgn method, and get the returned array.This ensures that if we are running 
+	//large sized problems, the data is truly loaded from disk by the model subsasgn class method.
+	inputs[0]=(mxArray*)pmxa_array; //this is the model
+
+	//create index structure used in the assignment (index.type='.' and index.subs='x' for field x for ex)
+	fnames[0] = "type";
+	fnames[1] = "subs";
+	pindex=mxCreateStructArray( ndim,onebyone,2,fnames);
+	mxSetField( pindex, 0, "type",mxCreateString("."));
+	mxSetField( pindex, 0, "subs",mxCreateString(field));
+	inputs[1]=pindex;
+
+	mexCallMATLAB( 1, &mxfield, 2, (mxArray**)inputs, "subsref");
+
+	return mxfield;
+}/*}}}*/
+
+GenericOption<double>* OptionDoubleParse( char* name, const mxArray* prhs[]){ /*{{{*/
+
+	GenericOption<double> *odouble = NULL;
+
+	/*check and parse the name  */
+	odouble=new GenericOption<double>();
+	odouble->name =xNew<char>(strlen(name)+1);
+	memcpy(odouble->name,name,(strlen(name)+1)*sizeof(char));
+	FetchData(&odouble->value,prhs[0]);
+	odouble->numel=1;
+	odouble->ndims=1;
+	odouble->size=NULL;
+
+	return(odouble);
+}/*}}}*/
+GenericOption<double*>* OptionDoubleArrayParse( char* name, const mxArray* prhs[]){ /*{{{*/
+
+	GenericOption<double*> *odouble = NULL;
+
+	/*check and parse the name  */
+	odouble=new GenericOption<double*>();
+	odouble->name =xNew<char>(strlen(name)+1);
+	memcpy(odouble->name,name,(strlen(name)+1)*sizeof(char));
+
+	/*check and parse the value  */
+	if (!mxIsClass(prhs[0],"double")){
+		_error_("Value of option \"" << odouble->name  << "\" must be class \"double\", not class \"" << mxGetClassName(prhs[0]) <<"\".");
+	}
+	FetchData(&odouble->value,&odouble->numel,&odouble->ndims,&odouble->size,prhs[0]);
+
+	return(odouble);
+}/*}}}*/
+GenericOption<bool*>* OptionLogicalParse( char* name, const mxArray* prhs[]){ /*{{{*/
+
+	GenericOption<bool*> *ological = NULL;
+
+	/*check and parse the name  */
+	ological=new GenericOption<bool*>();
+	ological->name =xNew<char>(strlen(name)+1);
+	memcpy(ological->name,name,(strlen(name)+1)*sizeof(char));
+
+	/*check and parse the value  */
+	if (!mxIsClass(prhs[0],"logical")){
+		_error_("Value of option \"" << ological->name  << "\" must be class \"logical\", not class \"" << mxGetClassName(prhs[0]) <<"\".");
+	}
+	FetchData(&ological->value,&ological->numel,&ological->ndims,&ological->size,prhs[0]);
+
+	return(ological);
+}/*}}}*/
+GenericOption<char*>* OptionCharParse( char* name, const mxArray* prhs[]){ /*{{{*/
+
+	GenericOption<char*>  *ochar = NULL;
+
+	/*check and parse the name  */
+	ochar=new GenericOption<char*>();
+	ochar->name =xNew<char>(strlen(name)+1);
+	memcpy(ochar->name,name,(strlen(name)+1)*sizeof(char));
+
+	/*check and parse the value  */
+	if (!mxIsClass(prhs[0],"char")){
+		_error_("Value of option \"" << ochar->name  << "\" must be class \"char\", not class \"" << mxGetClassName(prhs[0]) <<"\".");
+	}
+	FetchData(&ochar->value,&ochar->numel,&ochar->ndims,&ochar->size,prhs[0]);
+
+	return(ochar);
+}/*}}}*/
+GenericOption<Options**>* OptionStructParse( char* name, const mxArray* prhs[]){ /*{{{*/
+
+	int            i;
+	char           namei[161];
+	Option*                   option      = NULL;
+	GenericOption<Options**>  *ostruct    = NULL;
+	const mwSize  *ipt        = NULL;
+	const mxArray *structi;
+	mwIndex        sindex;
+
+	/*check and parse the name  */
+	ostruct=new GenericOption<Options**>();
+	ostruct->name =xNew<char>(strlen(name)+1);
+	memcpy(ostruct->name,name,(strlen(name)+1)*sizeof(char));
+
+	/*check and parse the value  */
+	if (!mxIsClass(prhs[0],"struct")){
+		_error_("Value of option \"" << ostruct->name  << "\" must be class \"struct\", not class \"" << mxGetClassName(prhs[0]) <<"\".");
+	}
+	ostruct->numel=mxGetNumberOfElements(prhs[0]);
+	ostruct->ndims=mxGetNumberOfDimensions(prhs[0]);
+	ipt           =mxGetDimensions(prhs[0]);
+	ostruct->size =xNew<int>(ostruct->ndims);
+	for (i=0; i<ostruct->ndims; i++) ostruct->size[i]=(int)ipt[i];
+	if (ostruct->numel) ostruct->value=xNew<Options*>(ostruct->numel);
+
+	/*loop through and process each element of the struct array  */
+	for (sindex=0; sindex<ostruct->numel; sindex++) {
+		ostruct->value[sindex]=new Options;
+
+		/*loop through and process each field for the element  */
+		for (i=0; i<mxGetNumberOfFields(prhs[0]); i++) {
+			sprintf(namei,"%s.%s",name,mxGetFieldNameByNumber(prhs[0],i));
+			structi=mxGetFieldByNumber(prhs[0],sindex,i);
+
+			option=(Option*)OptionParse(namei,&structi);
+			ostruct->value[sindex]->AddObject((Object*)option);
+			option=NULL;
+		}
+	}
+
+	return(ostruct);
+}/*}}}*/
+GenericOption<Options*>* OptionCellParse( char* name, const mxArray* prhs[]){ /*{{{*/
+
+	int            i;
+	int           *dims;
+	char           namei[161];
+	char           cstr[81];
+	GenericOption<Options*> *ocell      = NULL;
+	Option        *option     = NULL;
+	const mwSize  *ipt        = NULL;
+	const mxArray *celli;
+	mwIndex        cindex;
+
+	/*check and parse the name  */
+	ocell=new GenericOption<Options*>();
+	ocell->name =xNew<char>(strlen(name)+1);
+	memcpy(ocell->name,name,(strlen(name)+1)*sizeof(char));
+
+	/*check and parse the value  */
+	if (!mxIsClass(prhs[0],"cell")){
+		_error_("Value of option \"" << ocell->name  << "\" must be class \"cell\", not class \"" << mxGetClassName(prhs[0]) <<"\".");
+	}
+
+	ocell->numel=mxGetNumberOfElements(prhs[0]);
+	ocell->ndims=mxGetNumberOfDimensions(prhs[0]);
+	ipt         =mxGetDimensions(prhs[0]);
+	ocell->size =xNew<int>(ocell->ndims);
+	for (i=0; i<ocell->ndims; i++) ocell->size[i]=(int)ipt[i];
+	ocell->value=new Options;
+
+	/*loop through and process each element of the cell array  */
+	dims=xNew<int>(ocell->ndims);
+	for (cindex=0; cindex<ocell->numel; cindex++) {
+		ColumnWiseDimsFromIndex(dims,(int)cindex,ocell->size,ocell->ndims);
+		StringFromDims(cstr,dims,ocell->ndims);
+		#ifdef _INTEL_WIN_
+			_snprintf(namei,161,"%s%s",name,cstr);
+		#else
+			snprintf(namei,161,"%s%s",name,cstr);
+		#endif
+		celli=mxGetCell(prhs[0],cindex);
+
+		option=(Option*)OptionParse(namei,&celli);
+		ocell->value->AddObject((Object*)option);
+		option=NULL;
+	}
+	xDelete<int>(dims);
+
+	return(ocell);
+}/*}}}*/
+Option* OptionParse(char* name, const mxArray* prhs[]){ /*{{{*/
+
+	Option  *option = NULL;
+	mxArray *lhs[1];
+
+	/*parse the value according to the matlab data type  */
+	if     (mxIsClass(prhs[0],"double")  && (mxGetNumberOfElements(prhs[0])==1))
+	 option=(Option*)OptionDoubleParse(name,prhs);
+	else if(mxIsClass(prhs[0],"double")  && (mxGetNumberOfElements(prhs[0])!=1))
+	 option=(Option*)OptionDoubleArrayParse(name,prhs);
+	else if(mxIsClass(prhs[0],"logical"))
+	 option=(Option*)OptionLogicalParse(name,prhs);
+	else if(mxIsClass(prhs[0],"char"))
+	 option=(Option*)OptionCharParse(name,prhs);
+	else if(mxIsClass(prhs[0],"struct"))
+	 option=(Option*)OptionStructParse(name,prhs);
+	else if(mxIsClass(prhs[0],"cell"))
+	 option=(Option*)OptionCellParse(name,prhs);
+	else {
+		_printf0_("  Converting value of option \"" << name << "\" from unrecognized class \"" << mxGetClassName(prhs[0]) << "\" to class \"" << "struct" << "\".\n");
+		if (!mexCallMATLAB(1,lhs,1,(mxArray**)prhs,"struct")) {
+			option=(Option*)OptionStructParse(name,(const mxArray**)lhs);
+			mxDestroyArray(lhs[0]);
+		}
+		else _error_("Second argument value of option \""<< name <<"\" is of unrecognized class \""<< mxGetClassName(prhs[0]) <<"\".");
+	}
+
+	return(option);
+}/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/io/WriteMatlabData.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/io/WriteMatlabData.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/io/WriteMatlabData.cpp	(revision 21239)
@@ -0,0 +1,490 @@
+/* \file WriteData.c:
+ * \brief: general interface for writing data
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./matlabio.h"
+#include "./../../../c/datastructures/datastructures.h"
+
+/*Primitive data types*/
+/*FUNCTION WriteData(mxArray** pdataref,double* matrix, int M,int N){{{*/
+void WriteData(mxArray** pdataref,double* matrix, int M,int N){
+
+	mxArray *dataref  = NULL;
+	double  *tmatrix  = NULL;
+
+	if(matrix){
+		/*create the matlab matrixwith Matlab's memory manager */   
+		tmatrix=(double*)mxMalloc(M*N*sizeof(double));
+		for(int i=0;i<M;i++){
+			for(int j=0;j<N;j++){
+				tmatrix[j*M+i]=matrix[i*N+j];
+			}
+		}
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+		mxSetM(dataref,(mwSize)M);
+		mxSetN(dataref,(mwSize)N);
+		mxSetPr(dataref,(double*)tmatrix);
+	}
+	else{
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+	}
+	*pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,int* matrix, int M,int N){{{*/
+void WriteData(mxArray** pdataref,int* matrix, int M,int N){
+
+	mxArray* dataref = NULL;
+	double*  tmatrix = NULL;
+
+	if(matrix){
+		/*convert to double matrix using Matlab's memory manager*/
+		double* tmatrix=(double*)mxMalloc(M*N*sizeof(double));
+		for(int i=0;i<M;i++){
+			for(int j=0;j<N;j++){
+				tmatrix[j*M+i]=(double)matrix[i*N+j];
+			}
+		}
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+		mxSetM(dataref,(mwSize)M);
+		mxSetN(dataref,(mwSize)N);
+		mxSetPr(dataref,(double*)tmatrix);
+	}
+	else{
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+	}
+	*pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,double* vector, int M){{{*/
+void WriteData(mxArray** pdataref,double* vector, int M){
+
+	mxArray* dataref       = NULL;
+	double*  vector_matlab = NULL;
+
+	if(vector){
+
+		/*create the matlab vector with Matlab's memory manager */
+		vector_matlab=(double*)mxMalloc(M*sizeof(double));
+		for(int i=0;i<M;i++) vector_matlab[i]=vector[i];
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+		mxSetM(dataref,(mwSize)M);
+		mxSetN(dataref,(mwSize)1);
+		mxSetPr(dataref,vector_matlab);
+	}
+	else{
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+	}
+
+	*pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,int* vector, int M){{{*/
+void WriteData(mxArray** pdataref,int* vector, int M){
+
+	mxArray* dataref       = NULL;
+	double*  vector_matlab = NULL;
+
+	if(vector){
+
+		/*create the matlab vector with Matlab's memory manager */
+		vector_matlab=(double*)mxMalloc(M*sizeof(double));
+		for(int i=0;i<M;i++) vector_matlab[i]=double(vector[i]);
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+		mxSetM(dataref,(mwSize)M);
+		mxSetN(dataref,(mwSize)1);
+		mxSetPr(dataref,vector_matlab);
+	}
+	else{
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+	}
+
+	*pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,double scalar){{{*/
+void WriteData(mxArray** pdataref,double scalar){
+
+	*pdataref=mxCreateDoubleScalar(scalar);
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,int integer){{{*/
+void WriteData(mxArray** pdataref,int integer){
+
+		*pdataref=mxCreateDoubleScalar((double)integer);
+
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,int boolean){{{*/
+void WriteData(mxArray** pdataref,bool boolean){
+
+	*pdataref=mxCreateDoubleScalar((double)boolean);
+
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,char* string){{{*/
+void WriteData(mxArray** pdataref,const char* string){
+
+		*pdataref=mxCreateString(string);
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref){{{*/
+void WriteData(mxArray** pdataref){
+
+		;
+
+}
+/*}}}*/
+
+/*ISSM objects*/
+/*FUNCTION WriteData(mxArray** pdataref,BamgGeom* bamggeom){{{*/
+void WriteData(mxArray** pdataref,BamgGeom* bamggeom){
+
+	/*Intermediary*/
+	int         i;
+	mxArray    *dataref           = NULL;
+	const int   numfields         = 8;
+	const char *fnames[numfields];
+	mwSize      ndim              = 2;
+	mwSize      dimensions[2]     = {1,1};
+
+	/*Initialize field names*/
+	i=0;
+	fnames[i++] = "Vertices";
+	fnames[i++] = "Edges";
+	fnames[i++] = "TangentAtEdges";
+	fnames[i++] = "Corners";
+	fnames[i++] = "RequiredVertices";
+	fnames[i++] = "RequiredEdges";
+	fnames[i++] = "CrackedEdges";
+	fnames[i++] = "SubDomains";
+	_assert_(i==numfields);
+
+	/*Initialize Matlab structure*/
+	dataref=mxCreateStructArray(ndim,dimensions,numfields,fnames);
+
+	/*set each matlab each field*/
+	i=0;
+	i++; SetStructureField(dataref,"Vertices",        bamggeom->VerticesSize[0],        bamggeom->VerticesSize[1],        bamggeom->Vertices);
+	i++; SetStructureField(dataref,"Edges",           bamggeom->EdgesSize[0],           bamggeom->EdgesSize[1],           bamggeom->Edges);
+	i++; SetStructureField(dataref,"TangentAtEdges",  bamggeom->TangentAtEdgesSize[0],  bamggeom->TangentAtEdgesSize[1],  bamggeom->TangentAtEdges);
+	i++; SetStructureField(dataref,"Corners",         bamggeom->CornersSize[0],         bamggeom->CornersSize[1],         bamggeom->Corners);
+	i++; SetStructureField(dataref,"RequiredVertices",bamggeom->RequiredVerticesSize[0],bamggeom->RequiredVerticesSize[1],bamggeom->RequiredVertices);
+	i++; SetStructureField(dataref,"RequiredEdges",   bamggeom->RequiredEdgesSize[0],   bamggeom->RequiredEdgesSize[1],   bamggeom->RequiredEdges);
+	i++; SetStructureField(dataref,"CrackedEdges",    bamggeom->CrackedEdgesSize[0],    bamggeom->CrackedEdgesSize[1],    bamggeom->CrackedEdges);
+	i++; SetStructureField(dataref,"SubDomains",      bamggeom->SubDomainsSize[0],      bamggeom->SubDomainsSize[1],      bamggeom->SubDomains);
+	_assert_(i==numfields);
+
+	/*Assign output*/
+	*pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,BamgMesh* bamgmesh){{{*/
+void WriteData(mxArray** pdataref,BamgMesh* bamgmesh){
+
+	/*Intermediary*/
+	int         i;
+	mxArray    *dataref           = NULL;
+	const int   numfields         = 17;
+	const char *fnames[numfields];
+	mwSize      ndim              = 2;
+	mwSize      dimensions[2]     = {1,1};
+
+	/*Initialize field names*/
+	i=0;
+	fnames[i++] = "Vertices";
+	fnames[i++] = "Edges";
+	fnames[i++] = "Triangles";
+	fnames[i++] = "Quadrilaterals";
+	fnames[i++] = "IssmEdges";
+	fnames[i++] = "IssmSegments";
+	fnames[i++] = "VerticesOnGeomVertex";
+	fnames[i++] = "VerticesOnGeomEdge";
+	fnames[i++] = "EdgesOnGeomEdge";
+	fnames[i++] = "SubDomains";
+	fnames[i++] = "SubDomainsFromGeom";
+	fnames[i++] = "ElementConnectivity";
+	fnames[i++] = "NodalConnectivity";
+	fnames[i++] = "NodalElementConnectivity";
+	fnames[i++] = "CrackedVertices";
+	fnames[i++] = "CrackedEdges";
+	fnames[i++] = "PreviousNumbering";
+	_assert_(i==numfields);
+
+	/*Initialize Matlab structure*/
+	dataref=mxCreateStructArray(ndim,dimensions,numfields,fnames);
+
+	/*set each matlab each field*/
+	i=0;
+	i++; SetStructureField(dataref,"Vertices",bamgmesh->VerticesSize[0], bamgmesh->VerticesSize[1],bamgmesh->Vertices);
+	i++; SetStructureField(dataref,"Edges", bamgmesh->EdgesSize[0],bamgmesh->EdgesSize[1], bamgmesh->Edges);
+	i++; SetStructureField(dataref,"Triangles", bamgmesh->TrianglesSize[0],bamgmesh->TrianglesSize[1], bamgmesh->Triangles);
+	i++; SetStructureField(dataref,"Quadrilaterals",bamgmesh->QuadrilateralsSize[0], bamgmesh->QuadrilateralsSize[1],bamgmesh->Quadrilaterals);
+	i++; SetStructureField(dataref,"IssmEdges", bamgmesh->IssmEdgesSize[0],bamgmesh->IssmEdgesSize[1], bamgmesh->IssmEdges);
+	i++; SetStructureField(dataref,"IssmSegments",bamgmesh->IssmSegmentsSize[0], bamgmesh->IssmSegmentsSize[1],bamgmesh->IssmSegments);
+	i++; SetStructureField(dataref,"VerticesOnGeomVertex",bamgmesh->VerticesOnGeomVertexSize[0],bamgmesh->VerticesOnGeomVertexSize[1], bamgmesh->VerticesOnGeomVertex);
+	i++; SetStructureField(dataref,"VerticesOnGeomEdge",bamgmesh->VerticesOnGeomEdgeSize[0],bamgmesh->VerticesOnGeomEdgeSize[1], bamgmesh->VerticesOnGeomEdge);
+	i++; SetStructureField(dataref,"EdgesOnGeomEdge", bamgmesh->EdgesOnGeomEdgeSize[0], bamgmesh->EdgesOnGeomEdgeSize[1],bamgmesh->EdgesOnGeomEdge);
+	i++; SetStructureField(dataref,"SubDomains",bamgmesh->SubDomainsSize[0], bamgmesh->SubDomainsSize[1],bamgmesh->SubDomains);
+	i++; SetStructureField(dataref,"SubDomainsFromGeom", bamgmesh->SubDomainsFromGeomSize[0], bamgmesh->SubDomainsFromGeomSize[1],bamgmesh->SubDomainsFromGeom);
+	i++; SetStructureField(dataref,"ElementConnectivity",bamgmesh->ElementConnectivitySize[0],bamgmesh->ElementConnectivitySize[1], bamgmesh->ElementConnectivity);
+	i++; SetStructureField(dataref,"NodalConnectivity",bamgmesh->NodalConnectivitySize[0],bamgmesh->NodalConnectivitySize[1], bamgmesh->NodalConnectivity);
+	i++; SetStructureField(dataref,"NodalElementConnectivity", bamgmesh->NodalElementConnectivitySize[0], bamgmesh->NodalElementConnectivitySize[1],bamgmesh->NodalElementConnectivity);
+	i++; SetStructureField(dataref,"CrackedVertices", bamgmesh->CrackedVerticesSize[0],bamgmesh->CrackedVerticesSize[1], bamgmesh->CrackedVertices);
+	i++; SetStructureField(dataref,"CrackedEdges",bamgmesh->CrackedEdgesSize[0], bamgmesh->CrackedEdgesSize[1],bamgmesh->CrackedEdges);
+	i++; SetStructureField(dataref,"PreviousNumbering",bamgmesh->VerticesSize[0],1,bamgmesh->PreviousNumbering);
+	_assert_(i==numfields);
+
+	/*Assign output*/
+	*pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,IssmDenseMat<double>* matrix){{{*/
+void WriteData(mxArray** pdataref,IssmDenseMat<double>* matrix){
+
+	int      i,j;
+	int      rows,cols;
+	mxArray *dataref     = NULL;
+	double  *matrix_ptr  = NULL;
+	double  *tmatrix_ptr = NULL;
+
+	if(matrix){
+
+		matrix_ptr=matrix->ToSerial();
+		matrix->GetSize(&rows,&cols);
+
+		/*Now transpose the matrix and allocate with Matlab's memory manager: */
+		tmatrix_ptr=(double*)mxMalloc(rows*cols*sizeof(double));
+		for(i=0;i<rows;i++){
+			for(j=0;j<cols;j++){
+				tmatrix_ptr[j*rows+i]=matrix_ptr[i*cols+j];
+			}
+		}
+
+		/*create matlab matrix: */
+		dataref=mxCreateDoubleMatrix(0,0,mxREAL);
+		mxSetM(dataref,rows); 
+		mxSetN(dataref,cols);
+		mxSetPr(dataref,tmatrix_ptr);
+
+		/*Free ressources:*/
+		xDelete<double>(matrix_ptr);
+	}
+	else{
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+	}
+
+	*pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,IssmSeqVec<double>* vector){{{*/
+void WriteData(mxArray** pdataref,IssmSeqVec<double>* vector){
+
+	mxArray* dataref=NULL;
+	double*  vector_ptr=NULL;
+	double*  vector_matlab=NULL;
+	int      rows;
+
+	if(vector){
+		/*call toolkit routine: */
+		vector_ptr=vector->ToMPISerial();
+		vector->GetSize(&rows);
+
+		/*now create the matlab vector with Matlab's memory manager */
+		vector_matlab=(double*)mxMalloc(rows*sizeof(double));
+		for(int i=0;i<rows;i++) vector_matlab[i]=vector_ptr[i];
+
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);                         
+		mxSetM(dataref,rows);
+		mxSetN(dataref,1);                                                                                          
+		mxSetPr(dataref,vector_matlab);           
+	}
+	else{
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+	}
+
+	/*Clean-up and return*/
+	xDelete<double>(vector_ptr);
+	*pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,RiftStruct* riftstruct){{{*/
+void WriteData(mxArray** pdataref,RiftStruct* riftstruct){
+
+	/*Intermediary*/
+	int         i;
+	mxArray    *dataref           = NULL;
+	const int   numfields         = 10;
+	const char *fnames[numfields];
+	mwSize      ndim              = 2;
+	mwSize      dimensions[2]     = {1,1};
+
+	/*Initialize field names*/
+	i=0;
+	fnames[i++] = "numsegs";
+	fnames[i++] = "segments";
+	fnames[i++] = "pairs";
+	fnames[i++] = "tips";
+	fnames[i++] = "penaltypairs";
+	fnames[i++] = "fill";
+	fnames[i++] = "friction";
+	fnames[i++] = "fraction";
+	fnames[i++] = "fractionincrement";
+	fnames[i++] = "state";
+	_assert_(i==numfields);
+
+	/*Initialize matlab structure of dimension numrifts*/
+	dimensions[0]=riftstruct->numrifts;
+	dataref=mxCreateStructArray(ndim,dimensions,numfields,fnames);
+
+	/*set each matlab each field*/
+	for(int i=0;i<riftstruct->numrifts;i++){
+		SetStructureFieldi(dataref,i,"numsegs"          ,riftstruct->riftsnumsegments[i]);
+		SetStructureFieldi(dataref,i,"segments"         ,riftstruct->riftsnumsegments[i]    ,3,riftstruct->riftssegments[i]);
+		SetStructureFieldi(dataref,i,"pairs"            ,riftstruct->riftsnumpairs[i]       ,2,riftstruct->riftspairs[i]);
+		SetStructureFieldi(dataref,i,"tips"             ,1                                  ,2,&riftstruct->riftstips[2*i]);
+		SetStructureFieldi(dataref,i,"penaltypairs"     ,riftstruct->riftsnumpenaltypairs[i],7,riftstruct->riftspenaltypairs[i]);
+		SetStructureFieldi(dataref,i,"fill"             ,"Ice");
+		SetStructureFieldi(dataref,i,"friction"         ,0);
+		SetStructureFieldi(dataref,i,"fraction"         ,0.);
+		SetStructureFieldi(dataref,i,"fractionincrement",0.1);
+		SetStructureFieldi(dataref,i,"state"            ,riftstruct->riftsnumpenaltypairs[i],1,riftstruct->state[i]);
+	}
+
+	/*Assign output*/
+	*pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,Contours* contours){{{*/
+void WriteData(mxArray** pdataref,Contours* contours){
+
+	/*Intermediary*/
+
+	int         i;
+	mxArray    *dataref           = NULL;
+	const int   numfields         = 6;
+	const char *fnames[numfields];
+	mwSize      ndim              = 2;
+	mwSize      dimensions[2]     = {1,1};
+	char        id[100];
+
+	/*Initialize field names*/
+	i=0;
+	fnames[i++] = "name";
+	fnames[i++] = "nods";
+	fnames[i++] = "density";
+	fnames[i++] = "x";
+	fnames[i++] = "y";
+	fnames[i++] = "closed";
+	_assert_(i==numfields);
+
+	/*Initialize matlab structure of dimension numrifts*/
+	dimensions[0]=contours->Size();
+	dataref=mxCreateStructArray(ndim,dimensions,numfields,fnames);
+
+	/*set each matlab each field*/
+	for(int i=0;i<contours->Size();i++){
+		Contour<IssmPDouble>* contour=(Contour<IssmPDouble>*)contours->GetObjectByOffset(i);
+
+		/*create a name for this contour from the contour id and set it: */
+		sprintf(id,"%i",contour->id);
+		SetStructureFieldi(dataref,i,"name",id);
+
+		/*number of nods: */
+		SetStructureFieldi(dataref,i,"nods"         ,contour->nods);
+
+		/*density: */
+		SetStructureFieldi(dataref,i,"density"            ,1);
+
+		/*x and y: */
+		SetStructureFieldi(dataref,i,"x"             ,contour->nods, 1,contour->x);
+		SetStructureFieldi(dataref,i,"y"             ,contour->nods, 1,contour->y);
+
+		/*closed: */
+		SetStructureFieldi(dataref,i,"closed"         ,(int)contour->closed);
+	}
+
+	/*Assign output*/
+	*pdataref=dataref;
+}
+/*}}}*/
+
+/*Toolkit*/
+/*FUNCTION SetStructureField(mxArray* dataref,const char* fieldname,int M,int N,double* fieldpointer){{{*/
+void SetStructureField(mxArray* dataref,const char* fieldname,int M,int N,double* fieldpointer){
+
+	mxArray* field = NULL;
+
+	/*Convert field*/
+	WriteData(&field,fieldpointer,M,N);
+
+	/*Assign to structure*/
+	mxSetField(dataref,0,fieldname,field);
+}
+/*}}}*/
+/*FUNCTION SetStructureFieldi(mxArray* dataref,const char* fieldname,const char* string) {{{*/
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,const char* string){
+
+	mxArray* field = NULL;
+
+	/*Convert field*/
+	WriteData(&field,string);
+
+	/*Assign to structure*/
+	mxSetField(dataref,i,fieldname,field);
+}
+/*}}}*/
+/*FUNCTION SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int M,int N,double* fieldpointer){{{*/
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int M,int N,double* fieldpointer){
+
+	mxArray* field = NULL;
+
+	/*Convert field*/
+	WriteData(&field,fieldpointer,M,N);
+
+	/*Assign to structure*/
+	mxSetField(dataref,i,fieldname,field);
+}
+/*}}}*/
+/*FUNCTION SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int M,int N,int* fieldpointer){{{*/
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int M,int N,int* fieldpointer){
+
+	mxArray* field = NULL;
+
+	/*Convert field*/
+	WriteData(&field,fieldpointer,M,N);
+
+	/*Assign to structure*/
+	mxSetField(dataref,i,fieldname,field);
+}
+/*}}}*/
+/*FUNCTION SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int field){{{*/
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int fieldin){
+
+	mxArray* field = NULL;
+
+	/*Convert field*/
+	WriteData(&field,fieldin);
+
+	/*Assign to structure*/
+	mxSetField(dataref,i,fieldname,field);
+}
+/*}}}*/
+/*FUNCTION SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,double field){{{*/
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,double fieldin){
+
+	mxArray* field = NULL;
+
+	/*Convert field*/
+	WriteData(&field,fieldin);
+
+	/*Assign to structure*/
+	mxSetField(dataref,i,fieldname,field);
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/io/matlabio.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/io/matlabio.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/matlab/io/matlabio.h	(revision 21239)
@@ -0,0 +1,81 @@
+/*\file matlabio.h
+ *\brief: I/O for ISSM in matlab mode
+ */
+
+#ifndef _MATLAB_IO_H_
+#define _MATLAB_IO_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif 
+
+#include "../include/matlabincludes.h"
+#include "../../../c/bamg/bamgobjects.h"
+#include "../../../c/classes/classes.h"
+#include "../../../c/toolkits/toolkits.h"
+#include "../../../c/shared/shared.h"
+
+void WriteData(mxArray** pdataref,IssmDenseMat<double>* matrix);
+void WriteData(mxArray** pdataref,double* matrix, int M,int N);
+void WriteData(mxArray** pdataref,int*    matrix, int M,int N);
+void WriteData(mxArray** pdataref,IssmSeqVec<double>* vector);
+void WriteData(mxArray** pdataref,double* vector, int M);
+void WriteData(mxArray** pdataref,int* vector, int M);
+void WriteData(mxArray** pdataref,int integer);
+void WriteData(mxArray** pdataref,bool boolean);
+void WriteData(mxArray** pdataref,double scalar);
+void WriteData(mxArray** pdataref,const char* string);
+void WriteData(mxArray** pdataref);
+void WriteData(mxArray** pdataref,BamgGeom* bamggeom);
+void WriteData(mxArray** pdataref,BamgMesh* bamgmesh);
+void WriteData(mxArray** pdataref,RiftStruct* riftstruct);
+void WriteData(mxArray** pdataref,Contours* contours);
+
+void FetchData(double** pmatrix,int* pM,int *pN,const mxArray* dataref);
+void FetchData(double** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref);
+void FetchData(int** pmatrix,int* pM,int *pN,const mxArray* dataref);
+void FetchData(bool** pmatrix,int* pM,int *pN,const mxArray* dataref);
+void FetchData(bool** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref);
+void FetchData(int** pvector,int* pM,const mxArray* dataref);
+void FetchData(float** pvector,int* pM,const mxArray* dataref);
+void FetchData(double** pvector,int* pM,const mxArray* dataref);
+void FetchData(bool** pvector,int* pM,const mxArray* dataref);
+void FetchData(char** pstring,const mxArray* dataref);
+void FetchData(char** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref);
+void FetchData(double* pscalar,const mxArray* dataref);
+void FetchData(int* pinteger,const mxArray* dataref);
+void FetchData(bool* pbool,const mxArray* dataref);
+void FetchData(BamgGeom** bamggeom,const mxArray* dataref);
+void FetchData(BamgMesh** bamgmesh,const mxArray* dataref);
+void FetchData(BamgOpts** bamgopts,const mxArray* dataref);
+void FetchData(Options** poptions,int istart, int nrhs,const mxArray** pdataref);
+void FetchData(Contours** pcontours,const mxArray* dataref);
+
+Option* OptionParse(char* name, const mxArray* prhs[]);
+GenericOption<double>*    OptionDoubleParse( char* name, const mxArray* prhs[]);
+GenericOption<double*>*   OptionDoubleArrayParse( char* name, const mxArray* prhs[]);
+GenericOption<bool*>*     OptionLogicalParse( char* name, const mxArray* prhs[]);
+GenericOption<char*>*     OptionCharParse( char* name, const mxArray* prhs[]);
+GenericOption<Options**>* OptionStructParse( char* name, const mxArray* prhs[]);
+GenericOption<Options*>*  OptionCellParse( char* name, const mxArray* prhs[]);
+
+mxArray* mxGetAssignedField(const mxArray* pmxa_array,int number, const char* field);
+void SetStructureField(mxArray* dataref,const char* fieldname,int fieldrows,int fieldcols,double* fieldpointer);
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int fieldrows,int fieldcols,double* fieldpointer);
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int fieldrows,int fieldcols,int*    fieldpointer);
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int field);
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,double field);
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,const char* string);
+int CheckNumMatlabArguments(int nlhs,int NLHS, int nrhs,int NRHS, const char* THISFUNCTION, void (*function)( void ));
+
+/*Matlab to double* routines: */
+int MatlabMatrixToDoubleMatrix(double** pmatrix,int* pmatrix_rows,int* pmatrix_cols,const mxArray* mxmatrix);
+int MatlabNArrayToNArray(double** pmatrix,int* pmatrix_numel,int* pmatrix_ndims,int** pmatrix_size,const mxArray* mxmatrix);
+int MatlabNArrayToNArray(bool** pmatrix,int* pmatrix_numel,int* pmatrix_ndims,int** pmatrix_size,const mxArray* mxmatrix);
+int MatlabNArrayToNArray(char** pmatrix,int* pmatrix_numel,int* pmatrix_ndims,int** pmatrix_size,const mxArray* mxmatrix);
+
+/*Print*/
+void ApiPrintf(const char* string);
+#endif	/* _IO_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/Makefile.am
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/Makefile.am	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/Makefile.am	(revision 21239)
@@ -0,0 +1,150 @@
+AM_CPPFLAGS = @DAKOTAINCL@ @PETSCINCL@ @MPIINCL@ @SPOOLESINCL@ @METISINCL@ @TRIANGLEINCL@ @CHACOINCL@ @SCOTCHINCL@ @SHAPELIBINCL@ @PYTHONINCL@ @PYTHON_NUMPYINCL@ @AMPIINCL@
+AUTOMAKE_OPTIONS = subdir-objects
+
+EXEEXT=$(PYTHONWRAPPEREXT)
+
+#define prefix (from http://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/Defining-Directories.html)
+AM_CPPFLAGS+=  -DISSM_PREFIX='"$(prefix)"'
+
+#python io{{{
+lib_LTLIBRARIES = libISSMPython.la
+
+io_sources= ./io/WritePythonData.cpp\
+				./io/CheckNumPythonArguments.cpp\
+				./io/FetchPythonData.cpp
+
+ALLCXXFLAGS= -fPIC -D_WRAPPERS_ $(CXXFLAGS) $(CXXOPTFLAGS) 
+libISSMPython_la_SOURCES = $(io_sources)
+libISSMPython_la_CXXFLAGS= $(ALLCXXFLAGS)
+#}}}
+#api io{{{
+lib_LTLIBRARIES += libISSMApi.la
+
+api_sources= ./io/ApiPrintf.cpp
+
+libISSMApi_la_SOURCES = $(api_sources)
+libISSMApi_la_CXXFLAGS= $(ALLCXXFLAGS)
+#}}}
+#Wrappers {{{
+if WRAPPERS
+lib_LTLIBRARIES += BamgConvertMesh_python.la\
+						BamgMesher_python.la\
+						BamgTriangulate_python.la\
+						ContourToMesh_python.la\
+						ContourToNodes_python.la\
+						ElementConnectivity_python.la\
+						InterpFromMeshToMesh2d_python.la\
+						InterpFromMeshToMesh3d_python.la\
+						InterpFromGridToMesh_python.la\
+						InterpFromMeshToGrid_python.la\
+						IssmConfig_python.la\
+						MeshProfileIntersection_python.la\
+						NodeConnectivity_python.la\
+						TriMesh_python.la\
+						TriMeshProcessRifts_python.la
+endif 
+#}}}
+#Flags and libraries {{{
+deps =  $(MATHLIB) ${PYTHONLIB}
+
+#Triangle library
+AM_CXXFLAGS =  -DTRILIBRARY -DANSI_DECLARATORS -DNO_TIMER -D_WRAPPERS_
+
+#Python part
+AM_LDFLAGS   = $(PYTHONLINK) -shrext ${EXEEXT} -module
+if VERSION
+AM_LDFLAGS +=
+else
+AM_LDFLAGS += -avoid-version
+endif
+
+if STANDALONE_MODULES
+AM_LDFLAGS += -Wl,-static
+endif
+
+deps += ./libISSMPython.la 
+AM_LDFLAGS += --no-warnings 
+
+AM_CXXFLAGS +=  -D_HAVE_PYTHON_MODULES_   -fPIC
+if PYTHON3
+AM_CXXFLAGS +=  -DNPY_NO_DEPRECATED_API 
+endif
+
+deps += ../../c/libISSMModules.la ../../c/libISSMCore.la
+if ADOLC
+deps += $(ADOLCLIB)
+endif
+
+deps += ./libISSMApi.la 
+
+if STANDALONE_LIBRARIES
+libISSMPython_la_LDFLAGS = -static 
+endif
+if STANDALONE_LIBRARIES
+libISSMApi_la_LDFLAGS = -static 
+endif
+
+#Optimization flags:
+AM_CXXFLAGS += $(CXXOPTFLAGS) 
+#}}}
+#Bin sources {{{
+BamgConvertMesh_python_la_SOURCES = ../BamgConvertMesh/BamgConvertMesh.cpp
+BamgConvertMesh_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+BamgConvertMesh_python_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+BamgMesher_python_la_SOURCES = ../BamgMesher/BamgMesher.cpp
+BamgMesher_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+BamgMesher_python_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+BamgTriangulate_python_la_SOURCES = ../BamgTriangulate/BamgTriangulate.cpp
+BamgTriangulate_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+BamgTriangulate_python_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+ContourToMesh_python_la_SOURCES = ../ContourToMesh/ContourToMesh.cpp
+ContourToMesh_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+ContourToMesh_python_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+ContourToNodes_python_la_SOURCES = ../ContourToNodes/ContourToNodes.cpp
+ContourToNodes_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+ContourToNodes_python_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+ElementConnectivity_python_la_SOURCES = ../ElementConnectivity/ElementConnectivity.cpp
+ElementConnectivity_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+ElementConnectivity_python_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+InterpFromMeshToMesh2d_python_la_SOURCES = ../InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp
+InterpFromMeshToMesh2d_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+InterpFromMeshToMesh2d_python_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(PROJ4LIB)
+
+InterpFromMeshToMesh3d_python_la_SOURCES = ../InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.cpp
+InterpFromMeshToMesh3d_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+InterpFromMeshToMesh3d_python_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(PROJ4LIB)
+
+InterpFromGridToMesh_python_la_SOURCES = ../InterpFromGridToMesh/InterpFromGridToMesh.cpp
+InterpFromGridToMesh_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+InterpFromGridToMesh_python_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(PROJ4LIB)
+
+InterpFromMeshToGrid_python_la_SOURCES = ../InterpFromMeshToGrid/InterpFromMeshToGrid.cpp
+InterpFromMeshToGrid_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+InterpFromMeshToGrid_python_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(PROJ4LIB)
+
+IssmConfig_python_la_SOURCES = ../IssmConfig/IssmConfig.cpp
+IssmConfig_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+IssmConfig_python_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB)
+
+MeshProfileIntersection_python_la_SOURCES = ../MeshProfileIntersection/MeshProfileIntersection.cpp
+MeshProfileIntersection_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+MeshProfileIntersection_python_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+NodeConnectivity_python_la_SOURCES = ../NodeConnectivity/NodeConnectivity.cpp
+NodeConnectivity_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+NodeConnectivity_python_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
+TriMesh_python_la_SOURCES = ../TriMesh/TriMesh.cpp
+TriMesh_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+TriMesh_python_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(TRIANGLELIB) $(GSLLIB) $(PROJ4LIB)
+
+TriMeshProcessRifts_python_la_SOURCES = ../TriMeshProcessRifts/TriMeshProcessRifts.cpp
+TriMeshProcessRifts_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+TriMeshProcessRifts_python_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+#}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/include/pythonincludes.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/include/pythonincludes.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/include/pythonincludes.h	(revision 21239)
@@ -0,0 +1,24 @@
+
+#ifndef _PYTHON_INCLUDES_H_
+#define _PYTHON_INCLUDES_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_PYTHON_
+
+#if _PYTHON_MAJOR_ >= 2
+#undef NPY_NO_DEPRECATED_API
+#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
+#else
+#define NPY_NO_DEPRECATED_API 
+#endif
+
+#include <Python.h>
+#include <arrayobject.h>
+
+#endif
+#endif /*_PYTHON_INCLUDES_H_*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/include/wrapper_macros.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/include/wrapper_macros.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/include/wrapper_macros.h	(revision 21239)
@@ -0,0 +1,83 @@
+/* \file python_macros.h
+ * \brief: macros used for the python bindings
+ */
+
+#ifndef _PY_WRAPPER_MACROS_H_
+#define _PY_WRAPPER_MACROS_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_PYTHON_
+/* MODULEBOOT/MODULEEND {{{*/
+
+/*The following macros hide the error exception handling in a python module. Just put 
+ * MODULEBOOT(); and MODULEEND(); at the beginning and end of a module, and c++ exceptions 
+ * will be trapped*/
+#define MODULEBOOT(); \
+	PyObject *output = PyTuple_New(NLHS); \
+	int       nrhs   = (int)PyTuple_Size(args);  \
+	if(!output) return NULL;\
+	try{ \
+	IssmComm::SetComm();
+
+#define MODULEEND(); }\
+  catch(ErrorException &exception){\
+	  PyErr_SetString(PyExc_TypeError,exception.WrapperReport()); \
+	  return NULL;\
+  } \
+	catch (exception &e){\
+		PyErr_SetString(PyExc_TypeError,e.what());\
+		return NULL;\
+	}\
+	catch(...){\
+		PyErr_SetString(PyExc_TypeError,"An unexpected error occurred");\
+		return NULL;\
+	}\
+	return output;
+//}}}
+#if _PYTHON_MAJOR_ >=3
+/* WRAPPER 3.2 {{{*/
+#define WRAPPER(modulename,...)  \
+static PyObject* modulename(PyObject* self,PyObject* args);\
+static PyMethodDef modulename##_funcs[] = {\
+	{#modulename, (PyCFunction)modulename, METH_VARARGS, ""},\
+	{NULL,NULL,0,NULL}\
+};\
+static struct PyModuleDef modulename##module= {\
+	PyModuleDef_HEAD_INIT,\
+	#modulename,   /* name of module */\
+	NULL, /* module documentation, may be NULL */\
+	-1,       /* size of per-interpreter state of the module,\
+				 or -1 if the module keeps state in global variables. */\
+	modulename##_funcs\
+};\
+PyMODINIT_FUNC PyInit_##modulename(void){\
+	import_array();\
+	return PyModule_Create(&modulename##module);\
+}\
+static PyObject* modulename(PyObject* self,PyObject* args)
+/*}}}*/
+#else
+/* WRAPPER 2.7 {{{*/
+#define WRAPPER(modulename,...)  \
+static PyObject* modulename(PyObject* self,PyObject* args);\
+static PyMethodDef modulename##_funcs[] = {\
+	{#modulename, (PyCFunction)modulename, METH_VARARGS, ""},\
+	{NULL,NULL,0,NULL}\
+};\
+PyMODINIT_FUNC init##modulename(void){\
+	import_array();\
+	(void) Py_InitModule(#modulename, modulename##_funcs);\
+}\
+static PyObject* modulename(PyObject* self,PyObject* args)
+/*}}}*/
+#endif
+/* CHECKARGUMENTS {{{*/
+#define CHECKARGUMENTS(NLHS,NRHS,functionpointer) CheckNumPythonArguments(args, NRHS,functionpointer)
+/*}}}*/
+#endif
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/io/ApiPrintf.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/io/ApiPrintf.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/io/ApiPrintf.cpp	(revision 21239)
@@ -0,0 +1,20 @@
+/* \file ApiPrintf.c:
+ * \brief: pyton api specific symbols which are unresolved from libISSMCore.a
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./pythonio.h"
+#include "../../c/shared/shared.h"
+
+/*Python printf i/o: */
+void ApiPrintf(const char* string){
+
+	/*use printf: */
+	printf("%s",string);
+	return;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/io/CheckNumPythonArguments.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/io/CheckNumPythonArguments.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/io/CheckNumPythonArguments.cpp	(revision 21239)
@@ -0,0 +1,28 @@
+/*!\file CheckNumPythonArguments.cpp:
+ * \brief: check number of arguments and report an usage error message.
+ */
+
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#define NO_IMPORT
+
+#include "./pythonio.h"
+#include "../../c/shared/Exceptions/exceptions.h"
+
+int CheckNumPythonArguments(PyObject* inputs,int NRHS, void (*function)( void )){
+
+	Py_ssize_t size=0;
+
+	/*figure out size of tuple in input: */
+	size=PyTuple_Size(inputs);
+
+	/*check on requested size: */
+	if (size==0){
+		function();
+		_error_("usage: see above");
+	}
+	else if (size!=NRHS ) {
+		function(); 
+		_error_("usage error.");
+	}
+	return 1;
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/io/FetchPythonData.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/io/FetchPythonData.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/io/FetchPythonData.cpp	(revision 21239)
@@ -0,0 +1,848 @@
+/*\file FetchData.cpp:
+ * \brief: general I/O interface to fetch data in python
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#define NO_IMPORT
+
+#include "./pythonio.h"
+#include "../../c/shared/shared.h"
+
+/*Primitive data types*/
+/*FUNCTION FetchData(double* pscalar,PyObject* py_float){{{*/
+void FetchData(double* pscalar,PyObject* py_float){
+
+	double dscalar;
+
+	/*return internal value: */
+	if      (PyFloat_Check(py_float))
+		dscalar=PyFloat_AsDouble(py_float);
+	else if (PyLong_Check(py_float)){
+		#if _PYTHON_MAJOR_ == 3
+		dscalar=(double)PyLong_AsLong(py_float);
+		#else
+		dscalar=PyLong_AsDouble(py_float);
+		#endif
+	}
+	else if (PyInt_Check(py_float))
+	 dscalar=(double)PyInt_AsLong(py_float);
+	else if (PyBool_Check(py_float))
+		dscalar=(double)PyLong_AsLong(py_float);
+	else if (PyTuple_Check(py_float) && (int)PyTuple_Size(py_float)==1)
+		FetchData(&dscalar,PyTuple_GetItem(py_float,(Py_ssize_t)0));
+	else if (PyList_Check(py_float) && (int)PyList_Size(py_float)==1)
+		FetchData(&dscalar,PyList_GetItem(py_float,(Py_ssize_t)0));
+	else
+		_error_("unrecognized float type in input!");
+
+	/*output: */
+	*pscalar=dscalar;
+}
+/*}}}*/
+/*FUNCTION FetchData(int* pscalar,PyObject* py_long){{{*/
+void FetchData(int* pscalar, PyObject* py_long){
+
+	int iscalar;
+
+	/*return internal value: */
+	if      (PyLong_Check(py_long))
+		iscalar=(int)PyLong_AsLong(py_long);
+	else if (PyInt_Check(py_long))
+		iscalar=(int)PyInt_AsLong(py_long);
+	else if (PyFloat_Check(py_long))
+		iscalar=(int)PyFloat_AsDouble(py_long);
+	else if (PyBool_Check(py_long))
+		iscalar=(int)PyLong_AsLong(py_long);
+	else if (PyTuple_Check(py_long) && (int)PyTuple_Size(py_long)==1)
+		FetchData(&iscalar,PyTuple_GetItem(py_long,(Py_ssize_t)0));
+	else if (PyList_Check(py_long) && (int)PyList_Size(py_long)==1)
+		FetchData(&iscalar,PyList_GetItem(py_long,(Py_ssize_t)0));
+	else
+		_error_("unrecognized long type in input!");
+
+	/*output: */
+	*pscalar=iscalar;
+}
+/*}}}*/
+/*FUNCTION FetchData(bool* pscalar,PyObject* py_boolean){{{*/
+void FetchData(bool* pscalar,PyObject* py_boolean){
+
+	bool bscalar;
+
+	/*return internal value: */
+	if      (PyBool_Check(py_boolean))
+		bscalar=(bool)PyLong_AsLong(py_boolean);
+	else if (PyLong_Check(py_boolean))
+		bscalar=(bool)PyLong_AsLong(py_boolean);
+	else if (PyLong_Check(py_boolean))
+		bscalar=(bool)PyLong_AsLong(py_boolean);
+	else if (PyInt_Check(py_boolean))
+		bscalar=(bool)PyInt_AsLong(py_boolean);
+	else if (PyTuple_Check(py_boolean) && (int)PyTuple_Size(py_boolean)==1)
+		FetchData(&bscalar,PyTuple_GetItem(py_boolean,(Py_ssize_t)0));
+	else if (PyList_Check(py_boolean) && (int)PyList_Size(py_boolean)==1)
+		FetchData(&bscalar,PyList_GetItem(py_boolean,(Py_ssize_t)0));
+	else
+		_error_("unrecognized boolean type in input!");
+
+	/*output: */
+	*pscalar=bscalar;
+}
+/*}}}*/
+/*FUNCTION FetchData(double** pmatrix,int* pM, int* pN, PyObject* py_matrix){{{*/
+void FetchData(double** pmatrix,int* pM,int *pN,PyObject* py_matrix){
+
+	/*output: */
+	double* dmatrix=NULL;
+	double* matrix=NULL;
+	int M,N;
+	int ndim;
+	npy_intp*  dims=NULL;
+
+	/*intermediary:*/
+	long* lmatrix=NULL;
+	bool* bmatrix=NULL;
+	int i;
+	PyObject* py_matrix2=NULL;
+
+	if     (PyArray_Check((PyArrayObject*)py_matrix)) {
+		/*retrieve dimensions: */
+		ndim=PyArray_NDIM((const PyArrayObject*)py_matrix);
+		if      (ndim==2) {
+			dims=PyArray_DIMS((PyArrayObject*)py_matrix);
+			M=dims[0]; N=dims[1];
+		}
+		else if (ndim==1) {
+			dims=PyArray_DIMS((PyArrayObject*)py_matrix);
+			M=dims[0]; N=1;
+		}
+		else
+			_error_("expecting an MxN matrix or M vector in input!");
+
+		if (M && N) {
+			if (!PyArray_ISCONTIGUOUS((PyArrayObject*)py_matrix)) {
+				py_matrix2=PyArray_ContiguousFromAny(py_matrix,NPY_DOUBLE,ndim,ndim);
+				py_matrix=py_matrix2;
+			}
+
+			if      (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_DOUBLE) {
+				/*retrieve internal value: */
+				dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*copy matrix: */
+				matrix=xNew<double>(M*N);
+//				if (PyArray_ISCONTIGUOUS((PyArrayObject*)py_matrix)) {
+					memcpy(matrix,dmatrix,(M*N)*sizeof(double));
+//				}
+
+//				else {
+//					int j,k,ipt=0;
+//					int mstride,nstride;
+//					mstride=(int)PyArray_STRIDE((PyArrayObject*)py_matrix,0)/PyArray_ITEMSIZE((PyArrayObject*)py_matrix);
+//					if (ndim > 1)
+//						nstride=(int)PyArray_STRIDE((PyArrayObject*)py_matrix,1)/PyArray_ITEMSIZE((PyArrayObject*)py_matrix);
+//					else
+//						nstride=1;
+//					for (i=0; i<M; i++) {
+//						k=i*mstride;
+//						for (j=0; j<N; j++) {
+//							matrix[ipt++]=dmatrix[k];
+//							k+=nstride;
+//						}
+//					}
+//				}
+			
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_LONG) {
+				/*retrieve internal value: */
+				lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into double matrix: */
+				matrix=xNew<double>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(double)lmatrix[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_BOOL) {
+				/*retrieve internal value: */
+				bmatrix=(bool*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into double matrix: */
+				matrix=xNew<double>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(double)bmatrix[i];
+			}
+
+			else
+				_error_("unrecognized double pyarray type in input!");
+
+			//if (py_matrix2) delete(py_matrix2); Not doing this for now, seems to  be creating a segfault!
+		}
+		else
+			matrix=NULL;
+	}
+
+	else {
+		M=1;
+		N=1;
+		matrix=xNew<double>(M*N);
+		FetchData(&(matrix[0]),py_matrix);
+	}
+
+	/*output: */
+	if(pM)*pM=M;
+	if(pN)*pN=N;
+	if(pmatrix)*pmatrix=matrix;
+}
+/*}}}*/
+/*FUNCTION FetchData(int** pmatrix,int* pM, int* pN, PyObject* py_matrix){{{*/
+void FetchData(int** pmatrix,int* pM,int *pN,PyObject* py_matrix){
+
+	/*output: */
+	int* matrix=NULL;
+	int M,N;
+	int ndim;
+	npy_intp*  dims=NULL;
+
+	/*intermediary:*/
+	double* dmatrix=NULL;
+	long* lmatrix=NULL;
+	bool* bmatrix=NULL;
+	int i;
+	PyObject* py_matrix2=NULL;
+
+	if     (PyArray_Check((PyArrayObject*)py_matrix)) {
+		/*retrieve dimensions: */
+		ndim=PyArray_NDIM((const PyArrayObject*)py_matrix);
+		if      (ndim==2) {
+			dims=PyArray_DIMS((PyArrayObject*)py_matrix);
+			M=dims[0]; N=dims[1];
+		}
+		else if (ndim==1) {
+			dims=PyArray_DIMS((PyArrayObject*)py_matrix);
+			M=dims[0]; N=1;
+		}
+		else
+			_error_("expecting an MxN matrix or M vector in input!");
+
+		if (M && N) {
+			if (!PyArray_ISCONTIGUOUS((PyArrayObject*)py_matrix)) {
+				py_matrix2=PyArray_ContiguousFromAny(py_matrix,NPY_LONG,ndim,ndim);
+				py_matrix=py_matrix2;
+			}
+
+			if      (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_DOUBLE) {
+				/*retrieve internal value: */
+				dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into integer matrix: */
+				matrix=xNew<int>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(int)dmatrix[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_LONG) {
+				/*retrieve internal value: */
+				lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into integer matrix: */
+				matrix=xNew<int>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(int)lmatrix[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_BOOL) {
+				/*retrieve internal value: */
+				bmatrix=(bool*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into integer matrix: */
+				matrix=xNew<int>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(int)bmatrix[i];
+			}
+
+			else
+				_error_("unrecognized int pyarray type in input!");
+
+			/* These lines are causing a segfault
+			if (py_matrix2)
+				delete(py_matrix2);
+			*/
+		}
+		else
+			matrix=NULL;
+	}
+
+	else {
+		M=1;
+		N=1;
+		matrix=xNew<int>(M*N);
+		FetchData(&(matrix[0]),py_matrix);
+	}
+
+	/*output: */
+	if(pM)*pM=M;
+	if(pN)*pN=N;
+	if(pmatrix)*pmatrix=matrix;
+}
+/*}}}*/
+/*FUNCTION FetchData(bool** pmatrix,int* pM, int* pN, PyObject* py_matrix){{{*/
+void FetchData(bool** pmatrix,int* pM,int *pN,PyObject* py_matrix){
+
+	/*output: */
+	bool* bmatrix=NULL;
+	bool* matrix=NULL;
+	int M,N;
+	int ndim;
+	npy_intp*  dims=NULL;
+
+	/*intermediary:*/
+	double* dmatrix=NULL;
+	long* lmatrix=NULL;
+	int i;
+	PyObject* py_matrix2=NULL;
+
+	if     (PyArray_Check((PyArrayObject*)py_matrix)) {
+		/*retrieve dimensions: */
+		ndim=PyArray_NDIM((const PyArrayObject*)py_matrix);
+		if      (ndim==2) {
+			dims=PyArray_DIMS((PyArrayObject*)py_matrix);
+			M=dims[0]; N=dims[1];
+		}
+		else if (ndim==1) {
+			dims=PyArray_DIMS((PyArrayObject*)py_matrix);
+			M=dims[0]; N=1;
+		}
+		else
+			_error_("expecting an MxN matrix or M vector in input!");
+
+		if (M && N) {
+			if (!PyArray_ISCONTIGUOUS((PyArrayObject*)py_matrix)) {
+				py_matrix2=PyArray_ContiguousFromAny(py_matrix,NPY_BOOL,ndim,ndim);
+				py_matrix=py_matrix2;
+			}
+
+			if      (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_DOUBLE) {
+				/*retrieve internal value: */
+				dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into bool matrix: */
+				matrix=xNew<bool>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(bool)dmatrix[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_LONG) {
+				/*retrieve internal value: */
+				lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into bool matrix: */
+				matrix=xNew<bool>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(bool)lmatrix[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_BOOL) {
+				/*retrieve internal value: */
+				bmatrix=(bool*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*copy matrix: */
+				matrix=xNew<bool>(M*N);
+				memcpy(matrix,bmatrix,(M*N)*sizeof(bool));
+			}
+
+			else
+				_error_("unrecognized bool pyarray type in input!");
+
+			if (py_matrix2)
+				delete(py_matrix2);
+		}
+		else
+			matrix=NULL;
+	}
+
+	else {
+		M=1;
+		N=1;
+		matrix=xNew<bool>(M*N);
+		FetchData(&(matrix[0]),py_matrix);
+	}
+
+	/*output: */
+	if(pM)*pM=M;
+	if(pN)*pN=N;
+	if(pmatrix)*pmatrix=matrix;
+}
+/*}}}*/
+/*FUNCTION FetchData(double** pvector,int* pM, PyObject* py_vector){{{*/
+void FetchData(double** pvector,int* pM,PyObject* py_vector){
+
+	/*output: */
+	double* dvector=NULL;
+	double* vector=NULL;
+	int M;
+	int ndim;
+	npy_intp*  dims=NULL;
+
+	/*intermediary:*/
+	long* lvector=NULL;
+	bool* bvector=NULL;
+	int i;
+	PyObject* py_vector2=NULL;
+
+	if     (PyArray_Check((PyArrayObject*)py_vector)) {
+		/*retrieve dimensions: */
+		ndim=PyArray_NDIM((const PyArrayObject*)py_vector);
+		if      (ndim==1) {
+			dims=PyArray_DIMS((PyArrayObject*)py_vector);
+			M=dims[0]; 
+		}
+		else if (ndim==2) {
+			dims=PyArray_DIMS((PyArrayObject*)py_vector);
+			if (dims[1]==1)
+				M=dims[0]; 
+			else
+				_error_("expecting an Mx1 matrix or M vector in input!");
+		}
+		else
+			_error_("expecting an Mx1 matrix or M vector in input!");
+
+		if (M) {
+			if (!PyArray_ISCONTIGUOUS((PyArrayObject*)py_vector)) {
+				py_vector2=PyArray_ContiguousFromAny(py_vector,NPY_DOUBLE,ndim,ndim);
+				py_vector=py_vector2;
+			}
+
+			if      (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_DOUBLE) {
+				/*retrieve internal value: */
+				dvector=(double*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*copy vector: */
+				vector=xNew<double>(M);
+				memcpy(vector,dvector,(M)*sizeof(double));
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_LONG) {
+				/*retrieve internal value: */
+				lvector=(long*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*transform into double vector: */
+				vector=xNew<double>(M);
+				for(i=0;i<M;i++)vector[i]=(double)lvector[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_BOOL) {
+				/*retrieve internal value: */
+				bvector=(bool*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*transform into double vector: */
+				vector=xNew<double>(M);
+				for(i=0;i<M;i++)vector[i]=(double)bvector[i];
+			}
+
+			else
+				_error_("unrecognized double pyarray type in input!");
+
+			/* Causing a seg fault.
+			if (py_vector2)
+				delete(py_vector2);
+			*/
+		}
+		else
+			vector=NULL;
+	}
+
+	else {
+		M=1;
+		vector=xNew<double>(M);
+		FetchData(&(vector[0]),py_vector);
+	}
+
+	/*output: */
+	if(pM)*pM=M;
+	if(pvector)*pvector=vector;
+}
+/*}}}*/
+/*FUNCTION FetchData(int** pvector,int* pM, PyObject* py_vector){{{*/
+void FetchData(int** pvector,int* pM,PyObject* py_vector){
+
+	/*output: */
+	int* vector=NULL;
+	int M;
+	int ndim;
+	npy_intp*  dims=NULL;
+
+	/*intermediary:*/
+	long*   lvector=NULL;
+	bool*   bvector=NULL;
+	double* dvector=NULL;
+	int i;
+	PyObject* py_vector2=NULL;
+
+	if     (PyArray_Check((PyArrayObject*)py_vector)) {
+		/*retrieve dimensions: */
+		ndim=PyArray_NDIM((const PyArrayObject*)py_vector);
+		if      (ndim==1) {
+			dims=PyArray_DIMS((PyArrayObject*)py_vector);
+			M=dims[0]; 
+		}
+		else if (ndim==2) {
+			dims=PyArray_DIMS((PyArrayObject*)py_vector);
+			if (dims[1]==1)
+				M=dims[0]; 
+			else
+				_error_("expecting an Mx1 matrix or M vector in input!");
+		}
+		else
+			_error_("expecting an Mx1 matrix or M vector in input!");
+
+		if (M) {
+			if (!PyArray_ISCONTIGUOUS((PyArrayObject*)py_vector)) {
+				py_vector2=PyArray_ContiguousFromAny(py_vector,NPY_LONG,ndim,ndim);
+				py_vector=py_vector2;
+			}
+
+			if      (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_DOUBLE) {
+				/*retrieve internal value: */
+				dvector=(double*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*transform into int vector: */
+				vector=xNew<int>(M);
+				for(i=0;i<M;i++)vector[i]=(int)lvector[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_LONG) {
+				/*retrieve internal value: */
+				lvector=(long*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*transform into int vector: */
+				vector=xNew<int>(M);
+				for(i=0;i<M;i++)vector[i]=(int)lvector[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_BOOL) {
+				/*retrieve internal value: */
+				bvector=(bool*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*transform into int vector: */
+				vector=xNew<int>(M);
+				for(i=0;i<M;i++)vector[i]=(int)bvector[i];
+			}
+
+			else
+			 _error_("unrecognized int pyarray type in input!");
+
+			if (py_vector2)
+				delete(py_vector2);
+		}
+		else
+			vector=NULL;
+	}
+
+	else {
+		M=1;
+		vector=xNew<int>(M);
+		FetchData(&(vector[0]),py_vector);
+	}
+
+	/*output: */
+	if(pM)*pM=M;
+	if(pvector)*pvector=vector;
+}
+/*}}}*/
+/*FUNCTION FetchData(bool** pvector,int* pM, PyObject* py_vector){{{*/
+void FetchData(bool** pvector,int* pM,PyObject* py_vector){
+
+	/*output: */
+	bool* bvector=NULL;
+	bool* vector=NULL;
+	int M;
+	int ndim;
+	npy_intp*  dims=NULL;
+
+	/*intermediary:*/
+	double* dvector=NULL;
+	long* lvector=NULL;
+	int i;
+	PyObject* py_vector2=NULL;
+
+	if     (PyArray_Check((PyArrayObject*)py_vector)) {
+		/*retrieve dimensions: */
+		ndim=PyArray_NDIM((const PyArrayObject*)py_vector);
+		if      (ndim==1) {
+			dims=PyArray_DIMS((PyArrayObject*)py_vector);
+			M=dims[0]; 
+		}
+		else if (ndim==2) {
+			dims=PyArray_DIMS((PyArrayObject*)py_vector);
+			if (dims[1]==1)
+				M=dims[0]; 
+			else
+				_error_("expecting an Mx1 matrix or M vector in input!");
+		}
+		else
+			_error_("expecting an Mx1 matrix or M vector in input!");
+
+		if (M) {
+			if (!PyArray_ISCONTIGUOUS((PyArrayObject*)py_vector)) {
+				py_vector2=PyArray_ContiguousFromAny(py_vector,NPY_BOOL,ndim,ndim);
+				py_vector=py_vector2;
+			}
+
+			if      (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_DOUBLE) {
+				/*retrieve internal value: */
+				dvector=(double*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*transform into bool vector: */
+				vector=xNew<bool>(M);
+				for(i=0;i<M;i++)vector[i]=(bool)dvector[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_LONG) {
+				/*retrieve internal value: */
+				lvector=(long*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*transform into bool vector: */
+				vector=xNew<bool>(M);
+				for(i=0;i<M;i++)vector[i]=(bool)lvector[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_BOOL) {
+				/*retrieve internal value: */
+				bvector=(bool*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*copy vector: */
+				vector=xNew<bool>(M);
+				memcpy(vector,bvector,(M)*sizeof(bool));
+			}
+
+			else
+				_error_("unrecognized bool pyarray type in input!");
+
+			if (py_vector2)
+				delete(py_vector2);
+		}
+		else
+			vector=NULL;
+	}
+
+	else {
+		M=1;
+		vector=xNew<bool>(M);
+		FetchData(&(vector[0]),py_vector);
+	}
+
+	/*output: */
+	if(pM)*pM=M;
+	if(pvector)*pvector=vector;
+}
+/*}}}*/
+
+/*ISSM objects*/
+/*FUNCTION FetchData(BamgGeom** pbamggeom,PyObject* py_dict){{{*/
+void FetchData(BamgGeom** pbamggeom,PyObject* py_dict){
+
+	/*Initialize output*/
+	BamgGeom* bamggeom=new BamgGeom();
+
+	/*Fetch all fields*/
+	FetchData(&bamggeom->Vertices,&bamggeom->VerticesSize[0],&bamggeom->VerticesSize[1],PyDict_GetItemString(py_dict,"Vertices"));
+	FetchData(&bamggeom->Edges, &bamggeom->EdgesSize[0], &bamggeom->EdgesSize[1], PyDict_GetItemString(py_dict,"Edges"));
+	FetchData(&bamggeom->Corners, &bamggeom->CornersSize[0], &bamggeom->CornersSize[1], PyDict_GetItemString(py_dict,"Corners"));
+	FetchData(&bamggeom->RequiredVertices,&bamggeom->RequiredVerticesSize[0],&bamggeom->RequiredVerticesSize[1],PyDict_GetItemString(py_dict,"RequiredVertices"));
+	FetchData(&bamggeom->RequiredEdges, &bamggeom->RequiredEdgesSize[0], &bamggeom->RequiredEdgesSize[1], PyDict_GetItemString(py_dict,"RequiredEdges"));
+	FetchData(&bamggeom->CrackedEdges,&bamggeom->CrackedEdgesSize[0],&bamggeom->CrackedEdgesSize[1],PyDict_GetItemString(py_dict,"CrackedEdges"));
+	FetchData(&bamggeom->SubDomains,&bamggeom->SubDomainsSize[0],&bamggeom->SubDomainsSize[1],PyDict_GetItemString(py_dict,"SubDomains"));
+
+	/*Assign output pointers:*/
+	*pbamggeom=bamggeom;
+}
+/*}}}*/
+/*FUNCTION FetchData(BamgMesh** pbamgmesh,PyObject* py_dict){{{*/
+void FetchData(BamgMesh** pbamgmesh,PyObject* py_dict){
+
+	/*Initialize output*/
+	BamgMesh* bamgmesh=new BamgMesh();
+
+	/*Fetch all fields*/
+	FetchData(&bamgmesh->Vertices,&bamgmesh->VerticesSize[0],&bamgmesh->VerticesSize[1],PyDict_GetItemString(py_dict,"Vertices"));
+	FetchData(&bamgmesh->Edges, &bamgmesh->EdgesSize[0], &bamgmesh->EdgesSize[1], PyDict_GetItemString(py_dict,"Edges"));
+	FetchData(&bamgmesh->Triangles, &bamgmesh->TrianglesSize[0], &bamgmesh->TrianglesSize[1], PyDict_GetItemString(py_dict,"Triangles"));
+	FetchData(&bamgmesh->CrackedEdges,&bamgmesh->CrackedEdgesSize[0],&bamgmesh->CrackedEdgesSize[1],PyDict_GetItemString(py_dict,"CrackedEdges"));
+	FetchData(&bamgmesh->VerticesOnGeomEdge,&bamgmesh->VerticesOnGeomEdgeSize[0],&bamgmesh->VerticesOnGeomEdgeSize[1],PyDict_GetItemString(py_dict,"VerticesOnGeomEdge"));
+	FetchData(&bamgmesh->VerticesOnGeomVertex,&bamgmesh->VerticesOnGeomVertexSize[0],&bamgmesh->VerticesOnGeomVertexSize[1],PyDict_GetItemString(py_dict,"VerticesOnGeomVertex"));
+	FetchData(&bamgmesh->EdgesOnGeomEdge, &bamgmesh->EdgesOnGeomEdgeSize[0], &bamgmesh->EdgesOnGeomEdgeSize[1], PyDict_GetItemString(py_dict,"EdgesOnGeomEdge"));
+	FetchData(&bamgmesh->IssmSegments,&bamgmesh->IssmSegmentsSize[0],&bamgmesh->IssmSegmentsSize[1],PyDict_GetItemString(py_dict,"IssmSegments"));
+
+	/*Assign output pointers:*/
+	*pbamgmesh=bamgmesh;
+}
+/*}}}*/
+/*FUNCTION FetchData(BamgOpts** pbamgopts,PyObject* py_dict){{{*/
+void FetchData(BamgOpts** pbamgopts,PyObject* py_dict){
+
+	/*Initialize output*/
+	BamgOpts* bamgopts=new BamgOpts();
+
+	/*Fetch all fields*/
+	FetchData(&bamgopts->anisomax,PyDict_GetItemString(py_dict,"anisomax"));
+	FetchData(&bamgopts->cutoff,PyDict_GetItemString(py_dict,"cutoff"));
+	FetchData(&bamgopts->coeff,PyDict_GetItemString(py_dict,"coeff"));
+	FetchData(&bamgopts->errg,PyDict_GetItemString(py_dict,"errg"));
+	FetchData(&bamgopts->gradation,PyDict_GetItemString(py_dict,"gradation"));
+	FetchData(&bamgopts->Hessiantype,PyDict_GetItemString(py_dict,"Hessiantype"));
+	FetchData(&bamgopts->MaxCornerAngle,PyDict_GetItemString(py_dict,"MaxCornerAngle"));
+	FetchData(&bamgopts->maxnbv,PyDict_GetItemString(py_dict,"maxnbv"));
+	FetchData(&bamgopts->maxsubdiv,PyDict_GetItemString(py_dict,"maxsubdiv"));
+	FetchData(&bamgopts->Metrictype,PyDict_GetItemString(py_dict,"Metrictype"));
+	FetchData(&bamgopts->nbjacobi,PyDict_GetItemString(py_dict,"nbjacobi"));
+	FetchData(&bamgopts->nbsmooth,PyDict_GetItemString(py_dict,"nbsmooth"));
+	FetchData(&bamgopts->omega,PyDict_GetItemString(py_dict,"omega"));
+	FetchData(&bamgopts->power,PyDict_GetItemString(py_dict,"power"));
+	FetchData(&bamgopts->random,PyDict_GetItemString(py_dict,"random"));
+	FetchData(&bamgopts->verbose,PyDict_GetItemString(py_dict,"verbose"));
+
+	FetchData(&bamgopts->Crack,PyDict_GetItemString(py_dict,"Crack"));
+	FetchData(&bamgopts->geometricalmetric,PyDict_GetItemString(py_dict,"geometricalmetric"));
+	FetchData(&bamgopts->KeepVertices,PyDict_GetItemString(py_dict,"KeepVertices"));
+	FetchData(&bamgopts->splitcorners,PyDict_GetItemString(py_dict,"splitcorners"));
+
+	FetchData(&bamgopts->hmin,PyDict_GetItemString(py_dict,"hmin"));
+	FetchData(&bamgopts->hmax,PyDict_GetItemString(py_dict,"hmax"));
+	FetchData(&bamgopts->hminVertices,&bamgopts->hminVerticesSize[0],&bamgopts->hminVerticesSize[1],PyDict_GetItemString(py_dict,"hminVertices"));
+	FetchData(&bamgopts->hmaxVertices,&bamgopts->hmaxVerticesSize[0],&bamgopts->hmaxVerticesSize[1],PyDict_GetItemString(py_dict,"hmaxVertices"));
+	FetchData(&bamgopts->hVertices,&bamgopts->hVerticesSize[0],&bamgopts->hVerticesSize[1],PyDict_GetItemString(py_dict,"hVertices"));
+	FetchData(&bamgopts->metric,&bamgopts->metricSize[0],&bamgopts->metricSize[1],PyDict_GetItemString(py_dict,"metric"));
+	FetchData(&bamgopts->field,&bamgopts->fieldSize[0],&bamgopts->fieldSize[1],PyDict_GetItemString(py_dict,"field"));
+	FetchData(&bamgopts->err,&bamgopts->errSize[0],&bamgopts->errSize[1],PyDict_GetItemString(py_dict,"err"));
+
+	/*Additional checks*/
+	bamgopts->Check();
+
+	/*Assign output pointers:*/
+	*pbamgopts=bamgopts;
+}
+/*}}}*/
+/*FUNCTION FetchData(Options** poptions,int istart, int nrhs,PyObject* py_tuple){{{*/
+void FetchData(Options** poptions,int istart, int nrhs,PyObject* py_tuple){
+
+	char   *name   = NULL;
+	Option *option = NULL;
+
+	/*Initialize output*/
+	Options* options=new Options();
+
+	/*Fetch all options*/
+	for (int i=istart; i<nrhs; i=i+2){
+		#if _PYTHON_MAJOR_ >= 3
+		if (!PyUnicode_Check(PyTuple_GetItem(py_tuple,(Py_ssize_t)i))) _error_("Argument " << i+1 << " must be name of option");
+		#else
+		if (!PyString_Check(PyTuple_GetItem(py_tuple,(Py_ssize_t)i))) _error_("Argument " << i+1 << " must be name of option");
+		#endif
+
+		FetchData(&name,PyTuple_GetItem(py_tuple,(Py_ssize_t)i));
+		if(i+1 == nrhs) _error_("Argument " << i+2 << " must exist and be value of option \"" << name << "\".");
+
+		_printf0_("FetchData for Options not implemented yet, ignoring option \"" << name << "\"!\n");
+
+//		option=(Option*)OptionParse(name,&PyTuple_GetItem(py_tuple,(Py_ssize_t)(i+1)));
+//		options->AddOption(option);
+//		option=NULL;
+	}
+
+	/*Assign output pointers:*/
+	*poptions=options;
+}
+/*}}}*/
+/*FUNCTION FetchData(Contours** pcontours,PyObject* py_list){{{*/
+void FetchData(Contours** pcontours,PyObject* py_list){
+
+	int              numcontours,test1,test2;
+	char            *contourname = NULL;
+	Contours         *contours    = NULL;
+	Contour<double> *contouri    = NULL;
+	PyObject        *py_dicti    = NULL;
+	PyObject        *py_item     = NULL;
+
+	#if _PYTHON_MAJOR_ >= 3
+	if (PyUnicode_Check(py_list)){
+		FetchData(&contourname,py_list);
+		contours=ExpRead<double>(contourname);
+	}
+	#else
+	if (PyString_Check(py_list)){
+		FetchData(&contourname,py_list);
+		contours=ExpRead<double>(contourname);
+	}
+	#endif
+	else if(PyList_Check(py_list)){
+
+		contours=new Contours();
+		numcontours=(int)PyList_Size(py_list);
+
+		for(int i=0;i<numcontours;i++){
+
+			contouri=new Contour<double>();
+			py_dicti=PyList_GetItem(py_list,(Py_ssize_t)i);
+
+			py_item = PyDict_GetItemString(py_dicti,"nods");
+			if(!py_item) _error_("input structure does not have a 'nods' field");
+			FetchData(&contouri->nods,py_item);
+
+			py_item = PyDict_GetItemString(py_dicti,"x");
+			if(!py_item) _error_("input structure does not have a 'x' field");
+			FetchData(&contouri->x,&test1,&test2,py_item);
+			if(test1!=contouri->nods || test2!=1) _error_("field x should be of size ["<<contouri->nods<<" 1]");
+
+			py_item = PyDict_GetItemString(py_dicti,"y");
+			if(!py_item) _error_("input structure does not have a 'y' field");
+			FetchData(&contouri->y,&test1,&test2,py_item);
+			if(test1!=contouri->nods || test2!=1) _error_("field y should be of size ["<<contouri->nods<<" 1]");
+
+			contours->AddObject(contouri);
+		}
+	}
+	else{
+		_error_("Contour is neither a string nor a structure and cannot be loaded");
+	}
+
+	/*clean-up and assign output pointer*/
+	xDelete<char>(contourname);
+	*pcontours=contours;
+}
+/*}}}*/
+
+/*Python version dependent: */
+#if _PYTHON_MAJOR_ >= 3 
+/*FUNCTION FetchData(char** pstring,PyObject* py_unicode){{{*/
+void FetchData(char** pstring,PyObject* py_unicode){
+
+	PyObject* py_bytes;
+	char* string=NULL;
+
+	/*convert to bytes format: */
+	PyUnicode_FSConverter(py_unicode,&py_bytes);
+
+	/*convert from bytes to string: */
+	string=PyBytes_AS_STRING(py_bytes);
+
+	/*copy string (note strlen does not include trailing NULL): */
+	*pstring=xNew<char>(strlen(string)+1);
+	memcpy(*pstring,string,(strlen(string)+1)*sizeof(char));
+}
+/*}}}*/
+#else
+/*FUNCTION FetchData(char** pstring,PyObject* py_string){{{*/
+void FetchData(char** pstring,PyObject* py_string){
+
+	char* string=NULL;
+
+	/*extract internal string: */
+	string=PyString_AsString(py_string);
+
+	/*copy string (note strlen does not include trailing NULL): */
+	*pstring=xNew<char>(strlen(string)+1);
+	memcpy(*pstring,string,(strlen(string)+1)*sizeof(char));
+}
+/*}}}*/
+#endif
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/io/WritePythonData.cpp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/io/WritePythonData.cpp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/io/WritePythonData.cpp	(revision 21239)
@@ -0,0 +1,309 @@
+/* \file WriteData.c:
+ * \brief: general interface for writing data
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#define NO_IMPORT
+
+#include "./pythonio.h"
+#include "../../c/shared/shared.h"
+
+/*Primitive data types*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index,int integer){{{*/
+void WriteData(PyObject* py_tuple, int index, int integer){
+
+	#if _PYTHON_MAJOR_ >= 3
+	PyTuple_SetItem(py_tuple, index, PyLong_FromSsize_t((Py_ssize_t)integer));
+	#else
+	PyTuple_SetItem(py_tuple, index, PyInt_FromSsize_t((Py_ssize_t)integer));
+	#endif
+
+}/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index,char* string){{{*/
+void WriteData(PyObject* py_tuple, int index, char* string){
+
+	PyTuple_SetItem(py_tuple, index, PyUnicode_FromString(string));
+
+}/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index, double* matrix, int M, int N){{{*/
+void WriteData(PyObject* tuple, int index, double* matrix, int M,int N){
+
+	npy_intp dims[2]={0,0};
+	PyObject* array=NULL;
+
+	/*copy matrix: */
+	double* matrix_python=xNew<double>(M*N);
+	memcpy(matrix_python,matrix,M*N*sizeof(double));
+
+	dims[0]=(npy_intp)M;
+	dims[1]=(npy_intp)N;
+	array=PyArray_SimpleNewFromData(2,dims,NPY_DOUBLE,matrix_python);
+
+	PyTuple_SetItem(tuple, index, array);
+}/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index, int* matrix, int M, int N){{{*/
+void WriteData(PyObject* tuple, int index, int* matrix, int M,int N){
+
+	npy_intp dims[2]={0,0};
+	PyObject* array=NULL;
+
+	/*transform into long matrix: */
+	long* lmatrix=xNew<long>(M*N);
+	for(int i=0;i<M*N;i++)lmatrix[i]=(long)matrix[i];
+
+	dims[0]=(npy_intp)M;
+	dims[1]=(npy_intp)N;
+	array=PyArray_SimpleNewFromData(2,dims,NPY_INT64,lmatrix);
+
+	PyTuple_SetItem(tuple, index, array);
+}/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index, bool* matrix, int M, int N){{{*/
+void WriteData(PyObject* tuple, int index, bool* matrix, int M,int N){
+
+	npy_intp dims[2]={0,0};
+	PyObject* array=NULL;
+
+	/*copy matrix: */
+	bool* matrix_python=xNew<bool>(M*N);
+	memcpy(matrix_python,matrix,M*N*sizeof(bool));
+
+	dims[0]=(npy_intp)M;
+	dims[1]=(npy_intp)N;
+	array=PyArray_SimpleNewFromData(2,dims,NPY_BOOL,matrix_python);
+
+	PyTuple_SetItem(tuple, index, array);
+}/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index, double* vector, int M){{{*/
+void WriteData(PyObject* py_tuple, int index, double* vector, int M){
+
+	npy_intp  dim   = 10;
+	PyObject *array = NULL;
+
+
+	/*copy vector: */
+	double* vector_python=xNew<double>(M);
+	memcpy(vector_python,vector,M*sizeof(double));
+
+	dim=(npy_intp)M;
+	array=PyArray_SimpleNewFromData(1,&dim,NPY_DOUBLE,vector_python);
+
+	PyTuple_SetItem(py_tuple, index, array);
+
+}/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index, int* vector, int M){{{*/
+void WriteData(PyObject* py_tuple, int index, int* vector, int M){
+
+	long* lvector=NULL;
+	npy_intp dim=10;
+	PyObject* array=NULL;
+
+	/*transform into long matrix: */
+	lvector=xNew<long>(M);
+	for(int i=0;i<M;i++)lvector[i]=(long)vector[i];
+
+	dim=(npy_intp)M;
+	array=PyArray_SimpleNewFromData(1,&dim,NPY_INT64,lvector);
+
+	PyTuple_SetItem(py_tuple, index, array);
+
+}/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index){{{*/
+void WriteData(PyObject* py_tuple, int index){
+
+	PyTuple_SetItem(py_tuple, index, Py_None);
+
+}/*}}}*/
+
+/*ISSM objects*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index,BamgGeom* bamggeom){{{*/
+void WriteData(PyObject* py_tuple,int index,BamgGeom* bamggeom){
+
+	PyObject* dict=NULL;
+
+	dict=PyDict_New();
+
+	PyDict_SetItemString(dict,"Vertices",PyArrayFromCopiedData(bamggeom->VerticesSize,bamggeom->Vertices));
+	PyDict_SetItemString(dict,"Edges",PyArrayFromCopiedData(bamggeom->EdgesSize,bamggeom->Edges));
+	PyDict_SetItemString(dict,"TangentAtEdges",PyArrayFromCopiedData(bamggeom->TangentAtEdgesSize,bamggeom->TangentAtEdges));
+	PyDict_SetItemString(dict,"Corners",PyArrayFromCopiedData(bamggeom->CornersSize,bamggeom->Corners));
+	PyDict_SetItemString(dict,"RequiredVertices",PyArrayFromCopiedData(bamggeom->RequiredVerticesSize,bamggeom->RequiredVertices));
+	PyDict_SetItemString(dict,"RequiredEdges",PyArrayFromCopiedData(bamggeom->RequiredEdgesSize,bamggeom->RequiredEdges));
+	PyDict_SetItemString(dict,"CrackedEdges",PyArrayFromCopiedData(bamggeom->CrackedEdgesSize,bamggeom->CrackedEdges));
+	PyDict_SetItemString(dict,"SubDomains",PyArrayFromCopiedData(bamggeom->SubDomainsSize,bamggeom->SubDomains));
+
+	PyTuple_SetItem(py_tuple, index, dict);
+}
+/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index,BamgMesh* bamgmesh){{{*/
+void WriteData(PyObject* py_tuple,int index,BamgMesh* bamgmesh){
+
+	PyObject* dict=NULL;
+
+	dict=PyDict_New();
+
+	PyDict_SetItemString(dict,"Vertices",PyArrayFromCopiedData(bamgmesh->VerticesSize,bamgmesh->Vertices));
+	PyDict_SetItemString(dict,"Edges",PyArrayFromCopiedData(bamgmesh->EdgesSize,bamgmesh->Edges));
+	PyDict_SetItemString(dict,"Triangles",PyArrayFromCopiedData(bamgmesh->TrianglesSize,bamgmesh->Triangles));
+	PyDict_SetItemString(dict,"Quadrilaterals",PyArrayFromCopiedData(bamgmesh->QuadrilateralsSize,bamgmesh->Quadrilaterals));
+	PyDict_SetItemString(dict,"IssmEdges",PyArrayFromCopiedData(bamgmesh->IssmEdgesSize,bamgmesh->IssmEdges));
+	PyDict_SetItemString(dict,"IssmSegments",PyArrayFromCopiedData(bamgmesh->IssmSegmentsSize,bamgmesh->IssmSegments));
+	PyDict_SetItemString(dict,"VerticesOnGeomVertex",PyArrayFromCopiedData(bamgmesh->VerticesOnGeomVertexSize,bamgmesh->VerticesOnGeomVertex));
+	PyDict_SetItemString(dict,"VerticesOnGeomEdge",PyArrayFromCopiedData(bamgmesh->VerticesOnGeomEdgeSize,bamgmesh->VerticesOnGeomEdge));
+	PyDict_SetItemString(dict,"EdgesOnGeomEdge",PyArrayFromCopiedData(bamgmesh->EdgesOnGeomEdgeSize,bamgmesh->EdgesOnGeomEdge));
+	PyDict_SetItemString(dict,"SubDomains",PyArrayFromCopiedData(bamgmesh->SubDomainsSize,bamgmesh->SubDomains));
+	PyDict_SetItemString(dict,"SubDomainsFromGeom",PyArrayFromCopiedData(bamgmesh->SubDomainsFromGeomSize,bamgmesh->SubDomainsFromGeom));
+	PyDict_SetItemString(dict,"ElementConnectivity",PyArrayFromCopiedData(bamgmesh->ElementConnectivitySize,bamgmesh->ElementConnectivity));
+	PyDict_SetItemString(dict,"NodalConnectivity",PyArrayFromCopiedData(bamgmesh->NodalConnectivitySize,bamgmesh->NodalConnectivity));
+	PyDict_SetItemString(dict,"NodalElementConnectivity",PyArrayFromCopiedData(bamgmesh->NodalElementConnectivitySize,bamgmesh->NodalElementConnectivity));
+	PyDict_SetItemString(dict,"CrackedVertices",PyArrayFromCopiedData(bamgmesh->CrackedVerticesSize,bamgmesh->CrackedVertices));
+	PyDict_SetItemString(dict,"CrackedEdges",PyArrayFromCopiedData(bamgmesh->CrackedEdgesSize,bamgmesh->CrackedEdges));
+
+	PyTuple_SetItem(py_tuple, index, dict);
+}
+/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index,IssmDenseMat<double>* matrix){{{*/
+void WriteData(PyObject* py_tuple,int index,IssmDenseMat<double>* matrix){
+
+	int M,N;
+	double* buffer=NULL;
+	npy_intp dims[2]={0,0};
+	PyObject* array=NULL;
+
+	matrix->GetSize(&M,&N);
+	buffer=matrix->ToSerial();
+
+	dims[0]=(npy_intp)M;
+	dims[1]=(npy_intp)N;
+	array=PyArray_SimpleNewFromData(2,dims,NPY_DOUBLE,buffer);
+
+	PyTuple_SetItem(py_tuple, index, array);
+
+}/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index,IssmSeqVec<double>* vector){{{*/
+void WriteData(PyObject* py_tuple,int index,IssmSeqVec<double>* vector){
+
+	int M;
+	double* buffer=NULL;
+	npy_intp dim=10;
+	PyObject* array=NULL;
+
+	vector->GetSize(&M);
+	buffer=vector->ToMPISerial();
+
+	dim=(npy_intp)M;
+	array=PyArray_SimpleNewFromData(1,&dim,NPY_DOUBLE,buffer);
+
+	PyTuple_SetItem(py_tuple, index, array);
+}
+/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index,RiftStruct* riftstruct){{{*/
+void WriteData(PyObject* py_tuple,int index,RiftStruct* riftstruct){
+
+	int i;
+	PyObject* list=NULL;
+	PyObject* dict=NULL;
+
+	list=PyList_New((Py_ssize_t)0);
+
+	for (i=0; i<riftstruct->numrifts; i++) {
+		dict=PyDict_New();
+
+		#if _PYTHON_MAJOR_ >= 3
+		PyDict_SetItemString(dict,"numsegs"          ,PyLong_FromSsize_t((Py_ssize_t)riftstruct->riftsnumsegments[i]));
+		#else
+		PyDict_SetItemString(dict,"numsegs"          ,PyInt_FromSsize_t((Py_ssize_t)riftstruct->riftsnumsegments[i]));
+		#endif
+
+		PyDict_SetItemString(dict,"segments"         ,PyArrayFromCopiedData(riftstruct->riftsnumsegments[i]    ,3,riftstruct->riftssegments[i]));
+		PyDict_SetItemString(dict,"pairs"            ,PyArrayFromCopiedData(riftstruct->riftsnumpairs[i]       ,2,riftstruct->riftspairs[i]));
+		PyDict_SetItemString(dict,"tips"             ,PyArrayFromCopiedData(1                                  ,2,&riftstruct->riftstips[2*i]));
+		PyDict_SetItemString(dict,"penaltypairs"     ,PyArrayFromCopiedData(riftstruct->riftsnumpenaltypairs[i],7,riftstruct->riftspenaltypairs[i]));
+		#if _PYTHON_MAJOR_ >= 3
+		PyDict_SetItemString(dict,"fill"             ,PyString_FromString("Ice"));
+		PyDict_SetItemString(dict,"friction"         ,PyLong_FromSsize_t((Py_ssize_t)0));
+		#else
+		PyDict_SetItemString(dict,"fill"             ,PyString_FromString("Ice"));
+		PyDict_SetItemString(dict,"friction"         ,PyInt_FromSsize_t((Py_ssize_t)0));
+		#endif
+		PyDict_SetItemString(dict,"fraction"         ,PyFloat_FromDouble(0.));
+		PyDict_SetItemString(dict,"fractionincrement",PyFloat_FromDouble(0.1));
+		PyDict_SetItemString(dict,"state"            ,PyArrayFromCopiedData(riftstruct->riftsnumpenaltypairs[i],1,riftstruct->state[i]));
+
+		PyList_Append(list, dict);
+	}
+
+	PyTuple_SetItem(py_tuple, index, list);
+}
+/*}}}*/
+
+/*Utils*/
+/*FUNCTION PyArrayFromCopiedData(int dims[2],double* data){{{*/
+PyObject* PyArrayFromCopiedData(int dims[2],double* data){
+
+	double* pydata;
+	npy_intp pydims[2]={0,0};
+
+	/*  note that PyArray_SimpleNewFromData does not copy the data, so that when the original
+		 object (e.g. bamggeom,bamgmesh) is deleted, the data is gone.  */
+
+	pydims[0]=(npy_intp)dims[0];
+	pydims[1]=(npy_intp)dims[1];
+	pydata=xNew<IssmDouble>(dims[0]*dims[1]);
+	memcpy(pydata,data,dims[0]*dims[1]*sizeof(double));
+	return PyArray_SimpleNewFromData(2,pydims,NPY_DOUBLE,pydata);
+}
+/*}}}*/
+/*FUNCTION PyArrayFromCopiedData(int dimi,int dimj,double* data){{{*/
+PyObject* PyArrayFromCopiedData(int dimi,int dimj,double* data){
+
+	double* pydata;
+	npy_intp pydims[2]={0,0};
+
+	/*  note that PyArray_SimpleNewFromData does not copy the data, so that when the original
+		 object (e.g. bamggeom,bamgmesh) is deleted, the data is gone.  */
+
+	pydims[0]=(npy_intp)dimi;
+	pydims[1]=(npy_intp)dimj;
+	pydata=xNew<IssmDouble>(dimi*dimj);
+	memcpy(pydata,data,dimi*dimj*sizeof(double));
+	return PyArray_SimpleNewFromData(2,pydims,NPY_DOUBLE,pydata);
+}
+/*}}}*/
+/*FUNCTION PyArrayFromCopiedData(int dimi,int dimj,int* data){{{*/
+PyObject* PyArrayFromCopiedData(int dimi,int dimj,int* data){
+
+	long* pydata;
+	npy_intp pydims[2]={0,0};
+
+	/*  note that PyArray_SimpleNewFromData does not copy the data, so that when the original
+		 object (e.g. bamggeom,bamgmesh) is deleted, the data is gone.  */
+
+	pydims[0]=(npy_intp)dimi;
+	pydims[1]=(npy_intp)dimj;
+	pydata=xNew<long>(dimi*dimj);
+	for(int i=0;i<dimi*dimj;i++) pydata[i]=(long)data[i];
+	return PyArray_SimpleNewFromData(2,pydims,NPY_INT64,pydata);
+}
+/*}}}*/
+/*FUNCTION PyArrayFromCopiedData(int dimi,int dimj,bool* data){{{*/
+PyObject* PyArrayFromCopiedData(int dimi,int dimj,bool* data){
+
+	bool* pydata;
+	npy_intp pydims[2]={0,0};
+
+	/*  note that PyArray_SimpleNewFromData does not copy the data, so that when the original
+		 object (e.g. bamggeom,bamgmesh) is deleted, the data is gone.  */
+
+	pydims[0]=(npy_intp)dimi;
+	pydims[1]=(npy_intp)dimj;
+	pydata=xNew<bool>(dimi*dimj);
+	memcpy(pydata,data,dimi*dimj*sizeof(bool));
+	return PyArray_SimpleNewFromData(2,pydims,NPY_BOOL,pydata);
+}
+/*}}}*/
Index: /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/io/pythonio.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/io/pythonio.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/src/wrappers/python/io/pythonio.h	(revision 21239)
@@ -0,0 +1,60 @@
+/*\file pythonio.h
+ *\brief: I/O for ISSM in python mode
+ */
+
+#ifndef _PYTHON_IO_H_
+#define _PYTHON_IO_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif 
+
+#include "../include/pythonincludes.h"
+#include "../../c/bamg/bamgobjects.h"
+#include "../../c/classes/classes.h"
+#include "../../c/shared/shared.h"
+
+void WriteData(PyObject* py_tuple,int index, double* matrix, int M,int N);
+void WriteData(PyObject* py_tuple,int index, int* matrix, int M,int N);
+void WriteData(PyObject* py_tuple,int index, bool* matrix, int M,int N);
+void WriteData(PyObject* py_tuple,int index, int integer);
+void WriteData(PyObject* py_tuple,int index, double* vector, int M);
+void WriteData(PyObject* py_tuple,int index, int* vector, int M);
+void WriteData(PyObject* py_tuple,int index, char* string);
+void WriteData(PyObject* py_tuple,int index);
+void WriteData(PyObject* py_tuple,int index, IssmDenseMat<double>* matrix);
+void WriteData(PyObject* py_tuple,int index, IssmSeqVec<double>* vector);
+void WriteData(PyObject* py_tuple,int index, BamgGeom* bamggeom);
+void WriteData(PyObject* py_tuple,int index, BamgMesh* bamgmesh);
+void WriteData(PyObject* py_tuple,int index, RiftStruct* riftstruct);
+
+void FetchData(double** pmatrix,int* pM,int *pN,PyObject* py_array);
+void FetchData(int** pmatrix,int* pM,int *pN,PyObject* py_matrix);
+void FetchData(bool** pmatrix,int* pM,int *pN,PyObject* py_matrix);
+void FetchData(double** pvector,int* pM,PyObject* py_ref);
+void FetchData(int** pvector,int* pM,PyObject* py_ref);
+void FetchData(bool** pvector,int* pM,PyObject* py_ref);
+void FetchData(char** pstring,PyObject* py_unicode);
+void FetchData(double* pscalar,PyObject* py_float);
+void FetchData(int* pscalar,PyObject* py_long);
+void FetchData(bool* pbool,PyObject* py_boolean);
+void FetchData(BamgGeom** bamggeom,PyObject* py_dict);
+void FetchData(BamgMesh** bamgmesh,PyObject* py_dict);
+void FetchData(BamgOpts** bamgopts,PyObject* py_dict);
+void FetchData(Options** poptions,int istart, int nrhs,PyObject* py_tuple);
+void FetchData(Contours** pcontours,PyObject* py_list);
+
+int CheckNumPythonArguments(PyObject* inputs,int NRHS, void (*function)( void ));
+
+/*Utils*/
+PyObject* PyArrayFromCopiedData(int dims[2],double* data);
+PyObject* PyArrayFromCopiedData(int dimi,int dimj,double* data);
+PyObject* PyArrayFromCopiedData(int dimi,int dimj,int* data);
+PyObject* PyArrayFromCopiedData(int dimi,int dimj,bool* data);
+
+/*Print*/
+void ApiPrintf(const char* string);
+
+#endif	/* _IO_H_ */
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive101.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive101.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive101.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive101_field1":[0,0,0,0,147.998082676997,0,0,0,0,223.37500727938,210.477351429712,26.6250097045402,128.878542177537,0,0,232.285702624375,291.674995543445,302.835404874892,0,152.52525119916,190.042809359303,270.387916442849,0,191.999848621077,0,285.25640537412,253.027042221984,300.002703703477,318.573177708197,273.506794600994,0,271.355744102121,234.592177448042,191.099869526398,187.089100600536,192.432701502323,230.196059972748,169.613318982267,246.077786015067,189.463247126296,189.696081101835,0,161.718455372464,136.628272248285,173.05717222373,149.725474710323,163.927160835293,0,138.309709789128,126.008413600046,285.156292227559,0,144.646567566558,111.790077814307,154.469064702225,142.264739091361,139.03579309314,143.822066540612,112.424338619624,144.045753193578,126.929112308255,66.6334050559868,159.911448429834,128.409181718071,107.377821053136,196.654018785742,0,114.35909155486,0,57.6275151765143,87.1520394946473,0,43.5939168525365,49.9447724389827,75.5097033238555,82.707275752264,-22.3304217331994,5.4788312787138,18.1218298306843,10.8278130485284,2.4178292080806,0,-70.3637385656641,-35.4407811458149,0,-65.8696964001304,0,25.672000206165,18.7821344176788,0,-23.7492062469278,-11.8896197565135,-6.86821911634485,0,0,221.248151129293,161.145387017424,184.413050854393,198.798260147507,154.979414828431,103.198021027247,98.2684883468193,140.514975077935,0,160.568134869958,0,26.390319836309,153.182559017905,125.214900060967,44.0815119696862,80.617607086548,21.1379663546765,106.934364275583,-39.3736309537455,104.724904559857,-59.7673172432325,-7.98169897295552,9.07618296744555,148.382947807779,166.650267284362,82.0850575379432,0,0,78.9574753172502,149.271137281317,135.778571856838,154.555361799805,143.882170730736,145.078544417266,149.625446103362,158.335787135563,169.143307583045,153.881251029624,-64.8278655940383,49.3859482237651,206.215899844369,133.139969008659,138.164178964886,138.30123905463,145.899783911905,102.903055224125,116.295188473678,81.4388644705856,123.391931417526,111.824474524403,147.142049949972,147.50890864769,147.177168364963,149.837813731129,87.4014575609279,54.7283689493135,44.5864359092783,148.447749972287,151.017360836063,85.6472093992318,68.7820855124337,81.8366943610261,134.194099445521,25.4794953659029,147.650571014154,141.40397039145,145.063499943737,136.12526758669,149.220276724412,147.621280511584,162.824126991219,147.029341699822,155.629883757245,119.553641264555,159.019618162132,136.172088291625,115.656450067304,131.992135090333,0,154.787946280635,148.109979913286,168.348661178713,6.55486991929832,-54.3051056252765,-38.8440327233294,-25.9525869914758,-84.4952779533691,6.13734613991713,0,-80.3696732518867,-103.60472685792,-96.0286534380326,-106.457037913825,-84.5502078422083,0,-81.1447286733393,0,-53.5509034576099,0,-59.2032404419999,-82.9686972943161,140.938603847008,119.651876330493,184.597995687725,64.9305828318109,0,105.548128366354,169.439315376779,164.756208302897,182.454951594391,0,177.351848254129,175.712683970429,122.028648028925,49.1160023336634,104.185146585805,11.4222336377042,-48.9985704718468,-30.7994018111649,0,102.257753377259,72.5699734916253,124.187740307677,51.0299567184417,128.69063657724,52.3710134273776,-16.2137828362372,87.8835240906852,86.198940446882,194.847472619264,0,176.143915672583,181.553761846262,205.690828602874,0,40.0461138218355,0,109.392114750301,57.1919566560363,102.077197071928,0,174.419986266808,135.984789682372,-16.102485919353,0,145.592444866885,159.561786284234,142.547508800523,146.521489577962,163.271186179951,154.897492401108,-115.43452250812,-85.9419938427444,0,-49.9938204237611,-151.967257068534,0,72.0569163987719,84.1944336253097,-94.9862679037611,0,-131.919966177355,-142.04331195003,-129.36492182222,-157.171722390103,-116.036287319448,130.588959735846,146.804704937994,0,200.983539172726,205.554810725062,225.824512153357,202.74186827618,0,134.900987694603,206.106248019083,226.879074567646,225.122863493312,0,231.772483592074,187.555985716168,173.202573951125,211.708608786534,149.241951965753,210.071559579328,151.057295882434,0,126.54398012458,127.79497373384,131.574285749212,0,0,80.3909218324738,0,84.911680994391,161.473399749413,200.037955402791,170.63915755466,0,91.2619799608185,104.540823595933,102.982782293408,137.736812717181,91.0351497961086,0,0,74.6128192148823,95.5236438258262,124.987491775286,127.652158301111,85.0228735249097,54.8184889983456,0,0,42.8124388752412,42.2937821500239,73.5445138678259,98.9726692049353,159.419800142885,34.2113304912372,67.6599660401956,49.7701809394451,2.06039603482743,0,-23.6375851031355,-0.552225583821548,13.8785538845644,-17.7187866959312,111.185511818307,99.9072285863362,184.421181266681,128.634515989706,145.559915938431,0,-45.9098889584424,-89.0881828802404,-113.590140140485,0,0,291.569504938692,208.946817347588,0,191.781586605154,204.938499176752,0],"Archive101_field2":[0,0,0,0,1630.74065641636,0,0,0,0,1441.16147249821,1202.04954831197,1376.307711258,1474.06229826377,0,0,1337.14850518476,844.281465544334,1200.65578364939,0,956.469350935919,912.699368270744,1130.64202782672,0,680.578714574314,0,766.725563890052,1427.8880948999,967.939139921673,1053.34862078116,1291.98482034553,0,1352.80725843209,1461.12795024577,1565.2892099138,1556.78705352445,1095.3770208442,1287.14919130478,1415.79603719507,985.911710640339,1318.24690109538,1463.01238917755,0,1559.49982868889,1042.52579867772,1499.3227465379,1486.41952186303,1148.23740824585,0,668.990316413265,812.216346040588,1105.02189478106,0,1573.66748245461,1257.34646610277,600.773659138683,1525.17223396438,1549.33840495252,1610.424325182,1469.2811580952,1358.05667860936,1178.94611865254,840.711763150226,1280.36645006962,1408.65169631002,1326.10518040945,877.044143602081,0,1421.86326644271,0,1233.58710075684,1295.96805467037,0,907.614512453765,1067.98118013827,1153.65804521656,1061.47948757175,824.014803871378,668.560830394405,1016.90587251531,1154.46033782139,1049.52135627841,0,777.06517710183,874.81197751397,0,474.073606078371,0,591.491140411096,506.343406137084,0,452.012732748973,388.229771654256,705.734270002324,0,0,1489.96675200019,1491.72471031777,1545.56583058354,1434.98837002582,1282.39260868093,938.494770473891,1365.48141238584,1612.70622975526,0,1607.22624175899,0,973.44849436669,1579.82783327642,1531.77687359516,1459.15260117273,1470.74933057653,1283.52302505915,1581.66133999498,847.910637158676,1559.46764779153,1218.96024743292,1324.78606684637,1393.69393050747,1632.42985557773,1609.35334946095,1044.54909123119,0,0,1520.2823889666,1627.43871841695,1620.54177036085,1625.39228422371,1630.38874089286,1626.2890769826,1622.21154244141,1606.42650994194,1574.80369007874,1595.22908962269,1174.65587131975,1485.66090966915,1540.13926955704,1561.88666292822,1593.76870844769,1597.86692732355,1623.73102655678,1494.4973096726,1521.29366653588,1399.44529730351,1557.63412850242,1501.2309943239,1628.19176002443,1631.75689055211,1633.0317982082,1612.57972974734,1372.75113050219,1345.72232509111,1255.65548457091,1625.11984579503,1619.37968455618,1436.54953845979,1265.65511513683,1401.05061889931,1429.7694420599,1232.84925084095,1626.3828866401,1590.807643214,1615.22159018646,1607.32370244074,1603.19323342134,1478.0709553655,1561.40843796933,1552.25826083813,1598.20627755205,1455.17234036591,1534.22881796617,1499.38481399793,1244.28021122413,1404.63000960634,0,1249.78230806079,1376.5507946674,1413.99144292058,1176.49829989797,789.637118913726,992.141330633049,1043.96747187637,764.134694819583,990.823488665475,0,435.174419727168,365.790792584215,598.017353391147,446.369245751552,451.660603650362,0,232.794809216083,0,155.787550459504,0,220.813922085741,246.088825950644,1622.3972478688,1591.36694320037,1215.46598629823,835.379634802937,0,1510.29104490502,1303.37150755712,1143.49387335626,1346.86923831753,0,889.726297639486,1472.87438477001,911.342029706843,1029.77004237883,1234.01293143509,610.670530463416,446.627665135379,729.546860999134,0,1543.39172864892,1463.26942618227,1574.97920606268,1261.50154196712,1539.36993976897,1365.98242445046,1155.53128567909,1415.41853739191,1239.93096920168,1362.58421883922,0,1466.21089027286,1449.96664248003,1283.80884783461,0,437.829590721257,0,662.697615429778,436.358879096873,852.437141343861,0,1157.85028878762,1587.25093722374,1255.49078125415,0,1280.90316549974,1435.53314854939,1083.22692237195,1562.93396632289,1520.22981739047,1581.81283208679,699.338846596005,984.815278454677,0,736.515238674519,825.589517101174,0,595.981482505016,925.539016343007,818.269457377074,0,464.089890909079,328.697768962715,663.13285266331,576.07585664016,1014.84990179843,1612.50335761675,1608.21140198807,0,1067.74093100579,687.728011229394,960.056817662597,862.163073145444,0,473.337184393347,604.077098751274,1094.17968233068,757.901818545819,0,865.978272204904,447.644478395626,559.581581255955,917.565944428208,647.515546596509,1244.39545756403,355.878479410864,0,311.393804688505,250.653271515959,226.257953568042,0,0,122.351949528414,0,397.096418150371,905.10246728585,1093.12424608207,531.295253284565,0,174.830147719212,381.975007441875,264.829589837486,856.659419863372,563.225285543929,0,0,539.575324955981,932.17149172916,524.296032308439,1117.1123690842,1065.98973963036,493.85903392507,0,0,703.53434553252,728.779981806148,417.35431362896,349.851865151616,648.552643235233,514.730575092772,1043.61709034483,1116.94742764986,999.301084102359,0,509.037548108086,574.364158438796,891.30456823797,405.885537909835,1337.65064164761,1380.02713000787,1336.82595345375,1520.26047316153,1596.15252292981,0,389.159360114332,399.161741409388,451.926723555029,0,0,651.219708307263,384.951685337807,0,352.622328502407,544.279436846935,0],"Archive101_field3":[0,0,0,0,1637.44267715402,0,0,0,0,1458.36990633044,1220.33758938331,1376.56522083408,1479.68555368919,0,0,1357.17455493446,893.244365270196,1238.258290203,0,968.554372006623,932.274855517937,1162.52355694257,0,707.143075057758,0,818.070478094328,1450.13347511616,1013.3645942215,1100.4690756476,1320.61756110397,0,1379.75411516826,1479.84065922964,1576.91137062473,1567.98860378029,1112.15159146629,1307.57151494805,1425.91973719191,1016.15755567128,1331.79248167994,1475.25924978371,0,1567.8624220539,1051.44059541477,1509.27713927696,1493.94133511084,1159.8798471198,0,683.138067506615,821.932791092754,1141.22193237884,0,1580.30122914709,1262.30628506669,620.314179641948,1531.79293615183,1555.56434930281,1616.83372489626,1473.57604264172,1365.67460301808,1185.75922945481,843.348255093065,1290.31388344186,1414.49231863118,1330.44539382979,898.821023859194,0,1426.45474876716,0,1234.93241339722,1298.89517541416,0,908.660845862323,1069.14839074074,1156.12655042125,1064.69676246241,824.317320413666,668.583279427356,1017.06733025524,1154.51111434151,1049.52414130526,0,780.244413737923,875.529579723112,0,478.627831288565,0,592.047988578125,506.691635525778,0,452.636206422502,388.411790058785,705.767690029476,0,0,1506.3039754459,1500.40342812513,1556.52880153012,1448.69333205721,1291.72343085509,944.151611633842,1369.01284996642,1618.81618527632,0,1615.22701752241,0,973.806151226125,1587.23686927382,1536.88619021652,1459.81830828588,1472.95715890303,1283.69707076031,1585.2720752911,848.824323061794,1562.98005430124,1220.42460522237,1324.81011108338,1393.72348370493,1639.15976420289,1617.95874947637,1047.7694215155,0,0,1522.3313782191,1634.27006783697,1626.21998821185,1632.72393180079,1636.7252443475,1632.74736134013,1629.09731524908,1614.21075245213,1583.86114315168,1602.63385955648,1176.4433977814,1486.4815203698,1553.88351139341,1567.551019642,1599.74624124455,1603.84099902654,1630.27273593981,1498.03579643248,1525.73228015412,1401.81290791288,1562.51388698291,1505.39005291698,1634.82696034624,1638.41064083297,1639.65056425051,1619.526089699,1375.53069070771,1346.83472282848,1256.44683381355,1631.88579492215,1626.40610120202,1439.10042072362,1267.52272001706,1403.43866316348,1436.0531723353,1233.11251716264,1633.07133496262,1597.07984789444,1621.72260402956,1613.07767106961,1610.12273900895,1485.42444828236,1569.8751563396,1559.20599526198,1605.76585040444,1460.07520809909,1542.44782888702,1505.55559780346,1249.64381264668,1410.81798528811,0,1259.33122166312,1384.49581308481,1423.97790445403,1176.516560012,791.502257775265,992.90144467038,1044.29000718549,768.792094017254,990.842496418509,0,442.53368229265,380.180014423027,605.678344699622,458.888444476645,459.506298690203,0,246.531722480947,0,164.734514110731,0,228.612798998046,259.698892928873,1628.50745160918,1595.85880309641,1229.40391404122,837.899227133172,0,1513.97471832324,1314.33898531052,1155.30205858799,1359.17127489046,0,907.230159766761,1483.31854320633,919.475549457383,1030.94069755061,1238.40318948158,610.777344207972,449.307390516298,730.196703324258,0,1546.77557395625,1465.06785325881,1579.86774584854,1262.53324584667,1544.73981349837,1366.98599369377,1155.64503154603,1418.14426268954,1242.92359609092,1376.44516455099,0,1476.7535521485,1461.28882591544,1300.18224674457,0,439.657186616317,0,671.665664051586,440.090889786219,858.527130674712,0,1170.91401172541,1593.06541006407,1255.59403943589,0,1289.15091412509,1444.37369964505,1092.56595115199,1569.78696962166,1528.97226198504,1589.37883114964,708.801771544702,988.558121196437,0,738.210050649778,839.45940817188,0,600.321686006575,929.360626143946,823.764102135105,0,482.475185185969,358.076145241204,675.633379340785,597.131763451557,1021.46206153492,1617.78260428593,1614.89799519238,0,1086.4920978836,717.790079091202,986.258487126846,885.680207438166,0,492.185297027858,638.270261494502,1117.45393269787,790.629793406806,0,896.457947748487,485.348150110883,585.773572043165,941.672871760018,664.491943751558,1262.00242271958,386.610655242586,0,336.124203984409,281.351413419741,261.733555783766,0,0,146.399111563146,0,406.073341746472,919.3933516801,1111.27665366201,558.02541900318,0,197.216453517171,396.02233536549,284.148139361113,867.661680160036,570.534942641062,0,0,544.709651183588,937.053070280617,538.988128435728,1124.38210528265,1069.37505769475,496.89215341507,0,0,704.835782481506,730.006182090209,423.784637079678,363.582063363437,667.858670472282,515.866242420762,1045.80806186622,1118.05573521376,999.303208200579,0,509.58606811156,574.3644239089,891.412613563327,406.272107443191,1342.26355725638,1383.63880181266,1349.48686615592,1525.69287373352,1602.77589374909,0,391.858042495969,408.982640382056,465.983350990482,0,0,713.512357775246,438.002936661508,0,401.400901243693,581.58395251179,0],"Archive101_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3013582.95,2305166.0625,2738087.49375,2698731,2856156.975,2265809.56875,2541305.025,2147740.0875,2592960.42304688,3348113.146875,2726198.55292969,2955009.41828613,3385501.02023202,2187096.58125,3322927.19560207,3615980.34601032,3799167.9452572,4112200.35158438,3898623.64085212,3733030.99065731,4485478.86421688,3414206.87010484,4122522.05040609,4173938.73326062,4430416.725,4643870.35100453,4555932.94761107,4466196.89475058,4891029.29891033,4252941.13561,4036851.7875,3876991.84515651,4238798.42725105,3246545.83818484,2856156.975,5141493.13292764,5121889.11919143,3459159.47365463,5135963.29785533,5399307.90594477,5533309.43806479,5912631.0221011,4810327.00871025,4824594.46451495,5128643.26449753,4519219.18791027,5128426.122899,5528219.9585469,3648235.25385438,3249721.9125,5677564.86512607,6791806.35,6194490.73662038,5861762.23566151,6004676.475,5713860.061753,6002564.18869234,5702880.19552416,5387134.81461557,6660747.03311464,6131420.08887104,6357274.06282467,6834570.83499271,6658841.00895551,8523492.075,7261479.66421003,6936703.83122667,7578936.225,7068369.25808199,5611111.5375,5462723.64768089,5806256.38569117,6398241.4125,6631957.14019963,6343041.55480422,6421801.78081992,2344522.55625,2541305.025,3442629.38163948,3404054.09623172,3585600.67398266,3256063.71058696,3056701.62576213,2761783.78964475,3215148.89037133,4062622.79637184,2462592.0375,3998703.43082607,2423235.54375,2880403.72271276,3753784.40364893,3581351.99528222,3637928.64986634,3508555.96128351,3238857.14784761,4057461.39554185,2869471.15669081,3782135.41724658,3369764.76005313,3408956.53971162,3772376.83514852,4764191.04596779,4232822.86190721,2900891.08930985,2501948.53125,4272990.75,4206109.19810528,4368249.82989597,4561827.39907642,4521888.89538821,4604751.60282763,5119423.43001803,5013229.91404861,4590705.77370609,4407115.22282038,4864886.22038275,3683950.82308812,3906295.55248381,3811514.46771222,5762764.94463899,6251437.84992443,5925736.29175443,5713699.38715185,6417820.38899745,6087621.08214827,6336266.86634408,6234901.09444153,6733249.54286626,5341878.14305374,5049544.82020172,5048132.82520177,6107490.66184474,6094784.50337788,6789466.7589842,6493891.69918067,5829351.35712559,5792930.14949529,6763766.95030373,7368622.95968463,7033899.54592751,7149495.32447672,7239225.36588139,5454060.4662377,5383948.07471914,5331478.48184639,4897527.09931274,5715369.83372733,5937370.13379795,6386438.17091159,5728092.71006071,6040312.00106006,5270548.83617863,6167553.8067024,5574001.84298875,5777267.49087734,5765618.30076324,7421510.25,6387815.5984402,6098321.86481251,6460940.81343323,7092727.75459329,7763532.30548483,7191610.1705803,7440985.69477849,7590226.01891741,7702926.78999512,8444779.0875,8074018.79972712,7798065.90292917,7590739.53700952,7926366.06891991,7430146.94227047,8484135.58125,8120774.74692543,8405422.59375,8014884.04805915,7185371.2875,7409593.76518569,7703591.57922561,4852212.8046968,4479097.35957484,6863145.39444849,8008235.58506312,8602205.0625,4752810.65204325,6581908.59755113,6680965.88768445,6764088.10431517,6634380.375,7202401.02819808,6632512.86492612,6394982.12930457,7741478.84470464,7522443.7791873,8168440.78860561,8175085.83906968,7949677.46027186,8562848.56875,4513697.75320387,4386931.311909,4805410.75689738,4623716.87638132,5114317.06656005,4422666.91475049,4110766.90316788,4789902.48874186,5153150.63105187,7004256.46511376,8838344.025,6982685.39944847,6891459.89148701,7404179.70891763,8641561.55625,8364008.57912602,8759631.0375,8245958.45951919,8396827.67508923,8038034.62131828,8720274.54375,7690449.48701012,5095678.90825055,3963657.65869581,3485860.875,7487499.39971643,7142298.23148485,7789354.89594386,6640587.82188574,6818891.84356161,6433059.61982831,3604855.74098089,3770161.01676209,2620018.0125,4150377.10885406,3224639.64888892,4823981.6625,4659007.8833875,4850843.36880368,2959378.37304627,2580661.51875,2898987.08602779,3096295.15789866,2935423.92554563,3187492.33231429,3264963.18725819,4235881.91166776,5231399.03320627,7972501.1625,7231701.20623081,7880141.13422346,7655807.59744669,7522220.65687807,8208640.125,7662007.11345972,8276860.75076804,7653924.33989551,7984955.59387517,8917057.0125,7972929.01945311,8349410.18246656,8378045.55048367,7982047.14389744,8284012.64693771,7349166.02691922,8135609.47392747,8877700.51875,8598584.70750672,8643977.20540123,8619698.70745586,8956413.50625,8583087.252096,8642467.60879502,8798987.53125,8475078.82292903,8019874.41228339,7783788.46568247,7872322.52887251,7815075.1875,8355000.64905269,8513960.5473371,7930731.53965616,6822349.15318231,6657428.36969315,6240815.4375,7027945.3125,6324197.21892013,5933222.59490463,7185660.9892403,6118286.2281819,5504707.43780276,5997029.67949575,5060120.625,5453685.5625,5657390.33672125,5185887.12881306,6936889.01067805,7454861.69645119,7386915.51050341,5430430.76629135,5199564.60496077,4866111.01507227,4473553.49967188,4666555.6875,4439149.70601457,4821928.08811871,4738392.41123538,8280754.65373118,5443578.64805444,5074451.1152489,7357653.84823608,6817288.44662108,6338415.74190144,3879425.8125,4050309.82012275,3693832.9220485,3403273.22967356,2659374.50625,3092295.9375,2552139.77402344,2575469.60671997,2108383.59375,2388862.72378699,2977479.2438058,2462592.0375],"Archive101_field5":[28825.6690517499,0,0,0,-4757.68589466114,-1480.98482915309,-12926.5259193624,7.24087606026043e-12,15892.3867923941,11204.5817294915,-364.625349726843,27765.7646606133,-13327.9806582163,-43913.8852431913,1983.38328260698,14741.9399104733,-18957.571147911,9200.61699824313,1939.7861821444,9243.71372256601,7030.00352249195,11837.2598532161,2052.41745598957,3816.05115490974,75.3689368679532,2756.52657501529,16044.2282617666,5654.43897608093,-1162.95520031882,4492.07503799451,354.161612561663,11917.4127911207,15511.9298744969,27825.4278394403,18037.1612995768,-15715.5550673846,-3852.59139774018,-3794.11930149469,-21234.3268696926,-6912.39740191887,5066.36736122461,-27824.464750434,5563.50150745869,-18303.551849858,5150.60599173004,-4758.58001711146,-14039.7689953792,-35691.8023084629,-32017.7174757831,-24852.1357531525,-7109.21456567672,-61795.1022829134,-4173.37452960631,-16139.8243527798,-39494.1163643873,-8450.54614570007,-10341.3350848573,-8620.88814297668,-15534.9759403917,-10041.340828709,-16982.5030435365,-16273.228824456,-9935.02737649555,-12529.5878859184,-15105.1079515338,-26312.2467679684,-52985.2050374224,-14549.6703471828,15833.9891732648,-16746.7155059062,-16783.6495186471,-1827.49610896128,-14899.0328393651,-15851.512618272,-18099.7851389559,-17545.8393473675,-6571.65815889118,-7686.47501642921,-12270.639265678,-15906.7608759424,-14872.7062103539,-1763.25772878988,-4961.42248168713,-10101.2151419497,38586.925627333,8387.49887261856,-8115.74320618481,-13160.532068338,-7264.07015376055,7340.68460269033,4553.53512906773,354.801506218011,-5091.33580235646,2289.16227408166,3395.11862265451,21605.6999854066,23549.320434383,27081.0998945874,19234.5150806763,15844.1957542277,7423.54854430637,18502.3524662549,32203.1455560477,3050.74842414028,30478.3113565077,4629.0646684942,11474.6875687884,28682.7628330009,28380.6289073851,29950.3396789993,26412.6037554499,21046.5118485204,34257.5674042511,11891.5280796536,32111.7737857359,21097.7441471573,24488.2061457107,27211.7056624731,25094.5619492848,26804.7043835348,11780.0819434131,2447.11769377657,-15642.5356879752,31821.6884432708,31292.5381181542,28511.0728079652,24284.4829542691,29313.8168360933,16401.6701185324,9141.52833355813,15726.9884955214,15400.5737832228,3577.53939202137,18907.386262388,31364.9210609256,21176.4503589365,-13606.1995158792,-15818.9394403752,-14725.0282610171,-9929.50372904459,-18789.6965731497,-16453.5555601496,-17883.6820382805,-17732.2268510897,-17859.9236987605,-2513.73099668605,10022.5629320675,14033.9300117134,-9638.58674471744,-17478.529061414,-18291.5110550444,-17940.3180559793,-11565.8689605435,-4716.76766975053,-19150.6519585786,-17798.7961579524,-18625.7099290002,-17272.75146677,-18356.0929117672,4578.39916057939,10481.9811752457,11430.4897380797,21611.3179515448,2831.43411688909,6642.59540723822,-8229.75182537238,5848.02164834339,-6161.38528212252,15848.2867998982,-152.162958934808,11616.9274572134,12459.733199429,12042.6561263123,44479.8609609242,9455.8664842733,7982.4419517981,1919.0217113147,-16981.6758537187,-11295.6427515008,-13329.8893569712,-15263.4975116475,-9759.56448209567,-15496.0853966093,0,-6249.83613080191,7933.30152568041,-1170.73951697401,-3241.02985790977,6775.37015752951,-2077.74771193683,4591.08263536741,9392.78806066283,18210.4764733548,29398.5076708831,25602.6076474431,23736.2063463061,23020.9813093079,31833.1243988606,5695.83293830943,-11615.3070748276,-2617.9507002995,24702.319202631,4899.50023597122,11022.8733201966,196.019992100761,29853.9768946639,14205.0630523148,-4057.96662395758,16192.1608693272,-14530.4839500279,-15652.3670554581,-8860.58084605134,-6254.48513897579,-11217.5686996312,-1937.20233616025,29691.9196117981,26610.9866468254,24300.0713710303,19597.4883132765,17849.7616460712,23377.1140224,16941.2701468034,20713.771384893,16134.7595936545,-4998.02464716418,-2011.30926803763,-11446.7036532977,-8127.86546866863,-8282.47918202974,-2363.57702499816,-5915.88197615546,-1137.19809159989,-7988.94453581445,-4642.17830730414,-10563.8893650293,-3012.1920136466,-12406.0359092617,15736.0266580848,22399.3281605537,-39721.3559836481,-14702.0588296861,-14735.3064347522,-12773.1582097943,-16136.6609386176,-13296.2614711076,-11772.4438780025,-5086.68498994073,11337.0905418528,-2457.00731783395,809.884159757671,6515.20711575348,-20424.9584670046,-21268.3053977068,-19506.4761635965,10567.3447762009,2170.8734929053,652.693487810538,-20199.9792688802,7101.43671619544,-5377.60281056128,14759.8767042907,31583.1066972817,-3919.76382027276,21896.9169064975,7253.91793892747,14293.1113393365,4644.8339730449,15290.9713507595,56721.6921642544,31963.4680680602,1273.64813797194,-4507.08667114345,6335.80856826953,2493.35757614221,-1508.1583905724,10254.5223289925,-3845.50585011753,-7218.49914506473,-8072.44059553993,-4813.8705025647,26349.9015497153,-350.497423127272,-1395.90626391856,2037.48040129323,16138.7754392728,7824.25395114923,54137.8652134529,30999.6630206726,-659.152585133191,-5440.46955033068,-9427.37340943318,-9232.38621724182,24686.5331753703,47461.1653740972,42898.2325362914,-3444.15618108796,43370.8527514455,20245.940851754,24607.0446690967,24957.5358034129,36117.6050393302,23290.9815548628,17420.2349426431,30710.0205334181,12071.2548442459,15691.3456569327,20188.6809976902,7840.08732232055,13657.3611122533,17748.4470297376,11467.7128774571,29950.309007529,37933.6933457752,22702.0596896196,13540.2489755371,14675.8483335985,17474.4162274293,12947.3067829941,-4640.84950524811,-1856.66619115369,4687.59654317431,12369.2555316222,-6265.58178373341,14679.1246535416,16915.021630855,-13043.5158141151,-17151.5472895764,-13844.10468855,-30456.6357612497,-17032.2021867164,-22223.0957442637,-21092.5532282816,-10398.8651098859,-28657.3837296529,-6763.85229286304,-38357.767377627,-18150.7635238711,-13287.2631228634,-42941.8844573662,-36726.2885002906],"Archive101_field6":[37160.7267419671,0,0,0,23404.097482752,121074.594751324,-1498.1383040498,-143393.616946546,2460.85057680086,-53068.1873967364,68694.4296488357,-55827.3831571489,28317.5115834723,-3603.36978184435,-133167.331538291,-99317.9755047775,-65873.2280015726,-89258.3367687861,-141308.073565667,-123889.695284523,-127961.782085917,-107473.227505828,-140257.016266833,-130313.32804533,-119203.885082377,-118641.345782759,-79812.7922024576,-114232.240693899,-86230.4191120375,-68161.4748496968,-127437.52691141,-72262.006167994,-64362.903127328,-59669.5203254802,-42050.6543057219,-26179.5650194317,-44033.7483634293,-11218.3016387657,-41523.113568245,-24094.1759152488,-31027.1074758337,-2851.71997755163,-7749.7262216418,387.786729320673,-17804.0857067168,1896.25048448156,-14782.7173605798,1147.37223544249,-12004.6484572389,-6611.45270580396,-61751.3372172577,-13777.2194316981,11848.0863032184,15296.9745589016,-19480.1929117931,13876.1458782156,29059.6358493903,27638.9936557884,44962.423599359,3792.59132581121,8314.12566356129,8365.53279991596,-6390.11636222654,18761.4048586996,31112.8052091021,-24909.860999884,-8757.37755535091,38626.7296040825,11993.8744976832,54125.6859428884,45697.9660286949,9715.75273950607,27236.9617050986,42455.455495813,36790.3705150124,27216.9556453305,51244.7277471795,31303.7367100818,48546.2020711166,72323.5952827371,62503.9418582219,110212.319261378,71704.4250557274,66993.8530648266,12482.7374740438,42046.4279004923,4263.70848170042,15158.5767712551,15527.7167820664,8538.64974690288,27350.6224179828,20172.103118093,39658.008420197,-143429.057061024,-131381.848119594,-75443.7240905321,-83962.8232095583,-70182.6628591691,-92598.3247514704,-104658.899443524,-129050.010198108,-100422.770738317,-49083.5534788525,-139531.158103038,-51665.4565522845,-139859.65420266,-125695.465074659,-64832.4310356594,-74390.7844980319,-76617.0046853439,-83611.2299414119,-99862.2078390016,-55881.8441289056,-121586.236724349,-64763.5553856312,-95373.4153588223,-93986.9875242576,-73671.4562730888,-11668.7658383246,-40311.3819083072,-124942.657947329,-136171.017711203,-4726.75707609417,-49783.2781825263,-32076.546762283,-26962.4609246167,-18850.4881262402,-22534.0669228494,-3662.67957739649,-368.325301225485,-15211.2317729109,-28689.5735777591,379.533735079399,-77831.6286761566,-61905.0393644316,-57702.4777497353,38536.7725692277,51571.9410899916,43095.8380958659,33470.7813871864,62393.5873748123,50548.2492148302,59332.3928814841,55517.1150288571,66524.8675490437,18637.9084506858,3971.70491272643,-51.3506057610998,42511.0259643207,52384.1820388372,72022.518549541,63671.8919480103,37376.6904386039,30675.5006667293,72979.5184044878,91399.5647874277,78971.2167622592,81339.4331395628,85301.2589835121,13994.9029629832,6827.04735472809,2729.99874701546,-13497.0226403362,22333.2793557302,27014.915719829,53891.4657828944,20978.7740039158,39085.5530654233,-4314.68247037946,37036.4782319094,9653.67247171634,16677.6999963681,13458.4238202461,4324.98566482442,34094.6873339208,29771.6384378275,44553.2718417256,80911.4674791287,99911.0946087278,79437.8828945933,92363.5211231793,88944.7289203893,100132.465206986,94024.7430785697,102688.131486067,71363.867464523,78207.3704527967,91383.2300846676,60758.4119641307,100684.17001533,85239.7072335864,55639.692797222,62167.98789068,9266.66604394093,32731.552090723,42430.9607271067,-12483.2460076014,-35777.1265239246,54022.3325301044,108212.725223643,118570.805581883,-27369.8566556384,45366.1864726023,40458.1378984827,56949.8978820114,5173.92107484043,47818.0926275342,55239.3456130478,25580.7899343819,102532.292958707,97474.8468514283,113344.148942994,110023.523632494,105410.163794566,115833.351401832,-36158.6027298155,-41170.5571748258,-22636.351534052,-28952.3095081323,-8872.29925471951,-43341.9252057743,-49368.989599047,-24163.7987493986,-11522.5558355034,67271.8094185276,113502.266674244,70544.2273209105,65610.6394288464,79202.1111895648,120109.262600353,117598.422318031,119585.487252891,113443.614543327,118116.774956029,109376.911956041,120373.569460795,95701.435848688,-5587.91089325425,-62024.3961266207,-22134.5853606635,90632.4360729366,77474.2560531401,102104.608595436,65247.2099633325,65246.995671699,52670.9483029976,-58053.4155181946,-63124.008110866,-107143.386151922,-37649.9064026924,-87664.3682768017,4588.03434580313,602.335166327702,7557.70556120377,-120551.95125869,-126079.646628153,-108287.181129733,-67919.4142169625,-117130.355642352,-79361.0685559889,-97657.6800378481,-41541.8813713687,16294.9012624037,28751.7252479802,61206.7581432242,68626.6328211661,74622.9440563043,58433.3011452656,8155.55187299955,35861.4959565052,94882.9443032994,84311.1050778975,81695.05593898,96230.2363029587,90960.1743192466,80024.6019414457,108089.789919686,98894.8976420304,109187.947549787,75512.3868266923,55123.8542338345,107224.716757115,107108.203925909,97922.6337970049,73841.7208524255,77599.2048353914,14781.9474501756,46602.3483672297,116118.802327262,116803.137596922,106113.032902977,95469.9712533242,52207.6326550883,11380.6822376984,34995.2822451553,116588.403210396,27229.440557377,31318.1396232627,18116.2614660357,2277.47618369438,9129.78939944228,8852.2291186089,11427.3524961379,24182.1585913166,23983.2755356352,-278.416903440401,2534.29697648202,-4282.43645433577,0,-653.936789130788,-6592.01695155377,14692.1653611237,21423.9292153246,40932.9489727108,-999.527615616965,-13530.8160445682,-21716.3207095483,-31610.8274633286,-1270.57451396771,-15496.6477386472,-6061.36458512783,-20031.2488235297,115501.898755283,1645.6626886451,-12481.5334920743,85296.5799339019,67728.0258303268,51423.4684282214,-9025.21033592512,-19074.6737346702,-30313.7506170733,-52296.2915334282,-55636.3827924301,-24063.6726533536,-102771.444878178,-59158.3623136357,-66998.1079903695,-99810.809606617,-33744.2152639307,-24662.0009016269],"Archive101_field7":[34143.9532578392,0,0,0,81.596309154467,6847.75927763112,-100450.594393181,-7883.86785008425,99454.5439702887,-29893.4455086377,31666.8331286226,31992.5492193865,-49568.559240979,-94240.2678064831,-25482.3413840524,-7334.3896432709,-46671.0920024269,-17506.4975460723,-14686.1959411382,-10560.6502477684,-14380.5047410424,-13166.34361585,-17442.6705078702,-22688.4151710435,-32948.3767970918,-25594.3037188332,-12016.094100027,-23308.3731906164,-29029.1893900178,-30212.5027008389,-28935.94272519,-21453.5094007666,-19464.699807927,-5942.18380309669,-25818.3199915532,-68563.7652004111,-48013.5825416456,-54864.4119915955,-60457.3033115955,-57727.2472474863,-43170.9588820609,-99839.0022564049,-41292.3067037698,-77643.8972658887,-45460.6612130847,-50804.040682495,-70382.3265581735,-97604.2166865203,-85945.6136986104,-87355.3700810863,-42927.7485350377,-70861.1836393164,-39809.5177291861,-68696.2242863073,-80397.4044453933,-47254.5206735367,-39799.5477665186,-27160.7139214614,-38286.9357573276,-60102.7064039874,-69944.1586388739,-88842.8148452182,-65282.2550443872,-54827.3883011705,-58695.4325076057,-73506.8160078085,-84947.1500611869,-46743.7456429963,-82736.836372534,-50585.2799560814,-53664.134636173,-94726.8420459962,-78143.3634362893,-65007.0363593496,-66055.5293814785,-73650.9179544746,-62164.1642976136,-80331.2331038807,-61940.6798546554,-34580.0200225451,-48749.2182596071,-11215.8854487169,-41485.992233074,-46489.7692714037,-63575.0741323724,-64819.056444649,-100407.935063563,-91419.4204679574,-92737.154320569,-90696.9940015338,-79987.7692477454,-87617.7341574465,-73641.6598514592,-10687.2847712612,11290.3624232152,-5969.54653444474,-356.269263072728,-1671.58614843683,-4512.64999647474,-5213.54681321906,-3751.85628829053,1.01845985015345,2902.54489763234,473.919739694706,-2402.72606752601,-2368.14865400623,-696.220777329382,2206.78236743111,2666.51406164969,9811.76739433396,5125.02012874997,5516.11526288199,9382.5690646807,7063.50492745698,4535.14278327285,13656.2198221638,9324.71911814461,20782.0162914235,-4021.97080387086,-12831.3751443384,-233.19463705546,8371.88178897345,96267.0944336707,24130.79864874,-2251.55793740952,12609.0021288048,-13963.9928473403,5019.29781975403,19616.4095232074,-25966.7768876781,-28725.3440924134,-33308.4930407085,-35376.4745795073,29520.1999539954,18032.855086749,-14643.7379877834,-32002.1387843633,-8423.58796025207,-20369.9848716624,-11518.6242709692,-20416.0720625942,-27421.24228249,-32249.7319311616,-17278.5156641961,-9656.59091029682,-18781.0591202365,-12011.0242515558,6873.2853063676,7597.75039910526,-42318.1619414041,-23803.292537796,-38922.0969814594,-311.512969066941,13505.3398730607,-13945.0426003844,-4384.71264034502,-7334.66660597299,694.760082293349,-12643.0374576236,18582.889025151,37844.0687612424,27393.2161760821,24741.0639068312,27830.1433679342,43666.8029767082,19022.2182643341,38992.2093316982,19739.0457730582,52188.4793682399,33414.0948265721,46178.6798429841,63913.9192795427,54413.8756019344,83387.594210528,58723.7205494757,53319.3532562366,39477.1781897354,-22359.0386907107,-14067.9539625067,-29894.9104896042,-15631.316567271,-24317.0668795799,-6281.73910088529,-16386.9896656696,-16772.762169781,-37956.5767571661,-35416.4747949064,-25978.1964241687,-49196.5864609191,-17765.2099548288,-25029.5273309452,-23099.1201113861,-39788.4866464222,-74726.9987474897,-62702.738041494,-51744.9762324481,15268.8119887458,20406.3898916263,45118.2291663252,2625.54202087012,-755.539816520222,40740.5201568342,48098.518711615,56761.9564935461,35708.412111977,94219.635122807,56250.664035465,27788.1332075817,71919.0800596141,-1108.25780864964,1054.31235455059,-1121.59342226507,-10330.9857419705,-8385.73948600643,-6158.67686686099,32731.0151071091,36821.1113427929,34704.6794043903,59587.0135361469,43955.9922704715,46177.6249057075,54784.1269562426,48998.9610682309,65602.0213295062,24998.8750115413,21136.7421219854,12846.1908542493,19264.6832918977,15884.5575603649,2279.69339561652,4617.76414110145,15090.1656093434,9258.76226613718,7732.20704517164,4583.74325440851,10026.4376535946,7709.82463230823,35352.5573978668,38805.9840995858,70075.8792711446,4413.73640992708,5601.41203617913,5863.78899173136,3767.58423101363,9059.75915891364,10400.0086691813,55334.2422776066,48542.172181495,26583.2422477494,70625.1954838347,33240.0145273347,-100733.83939956,-94004.7643876311,-80080.1665034742,12042.0254373121,17642.8468433215,29303.7986078582,45442.2783842226,18645.3996926825,40608.7246794088,19814.4625891089,5813.9636557693,-31725.1277180817,-36975.3510204335,41849.5360073322,40769.2153423198,32338.357111795,48393.1349480926,63141.434265414,64032.9430865956,24521.4218159839,20726.2642514636,29988.2179623047,30264.1213855942,22269.1052869423,33985.8988478214,19457.6147878888,15486.4757127871,12972.5494377701,22302.8617607661,47742.8652660591,26629.082606025,24414.5874798462,28757.0002606907,36730.6772096537,31877.2932165487,48820.1901065624,38923.6600056842,19106.2903320408,11931.0600683414,10341.0880828906,12344.2712755809,52396.2456598193,73940.4307036964,49367.89324255,17464.8603742315,61243.5371485332,70276.9494596188,85638.6694835602,98293.6006977085,87791.9180565858,91073.0309435754,78520.1195538479,75904.5219519276,64378.0850425429,76367.7997650417,94467.6094074266,99413.6427120824,102741.712155282,90567.0861566022,88141.8734650492,85501.8980528667,75403.3807041291,64757.1116180955,95420.1607333452,75336.2079065363,69384.3113361651,70556.6254034297,99589.3032776734,88197.7002333021,93213.4693461914,79609.9429317396,-4967.76542923915,61484.6531383241,58112.7159464577,8772.37993375375,-2605.80901287695,-52.3702624292376,87280.7181208613,86342.3425455585,75380.4108687802,58336.0031087982,24053.1775449265,38356.9883980477,-35706.2039260673,-55107.9970217603,-34880.9997997257,-42632.585818672,-68580.8320444182,-40524.3166684951],"Archive101_field8":[-6365215.28261465],"Archive101_field9":[-8068578.87977909],"Archive101_field10":[-18003538.4881698],"Archive101_field11":[-6415500.70273898],"Archive101_field12":[-3557133.51972225],"Archive101_field13":[-7537114.85776309]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive102.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive102.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive102.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive102_field1":[0,0,0,0,153.068147535209,0,0,0,0,317.460727508573,326.707291254915,-108.039027668005,128.918949225301,84.2100744764573,0,0,202.061608111607,139.392314667147,10.3426751431987,0,17.9425436196534,0,0,115.768334729195,0,0,0,0,0,0,0,153.06814753521,0,0,0,0,317.460727508572,326.707291254915,-108.039027668005,128.918949225301,84.2100744764573,0,0,202.061608111607,139.392314667147,10.3426751431987,0,17.9425436196534,0,0,115.768334729195,0,0,0,0,0,0,0,153.068147535209,0,0,0,0,317.460727508573,326.707291254915,-108.039027668005,128.918949225301,84.2100744764573,0,0,202.061608111607,139.392314667147,10.3426751431987,0,17.9425436196534,0,0,115.768334729195,0,0,0],"Archive102_field2":[0,0,0,0,1478.98293467286,0,0,0,0,1282.84123830902,1012.34584415348,1176.43989157977,1257.52229991162,1192.32870647705,0,0,1330.12401744479,1261.15616349122,823.32289924861,0,771.991476075294,0,0,1268.65051600039,0,0,0,0,0,0,0,1478.98293467286,0,0,0,0,1282.84123830902,1012.34584415348,1176.43989157977,1257.52229991162,1192.32870647705,0,0,1330.12401744479,1261.15616349122,823.32289924861,0,771.991476075294,0,0,1268.65051600039,0,0,0,0,0,0,0,1478.98293467286,0,0,0,0,1282.84123830902,1012.34584415348,1176.43989157977,1257.52229991162,1192.32870647705,0,0,1330.12401744479,1261.15616349122,823.32289924861,0,771.991476075294,0,0,1268.65051600039,0,0,0],"Archive102_field3":[0,0,0,0,-2.94606573359155,0,0,0,0,-7.46828033890167,-8.12187032469344,-6.9743648567694,-3.94469375451376,-5.84837077577299,0,0,-4.51589120413951,-3.80413612057037,-7.42990236269174,0,-6.5392962157835,0,0,-4.22605181468273,0,0,0,0,0,0,0,-3.02938902191597,0,0,0,0,-7.10406841377764,-9.06488604023314,-6.60369821595199,-3.84624400271528,-6.70629894574897,0,0,-4.97188696127012,-3.77059803122724,-7.90682793905216,0,-6.6909484503894,0,0,-3.97180620485879,0,0,0,0,0,0,0,-3.27935888688922,0,0,0,0,-6.01143263840557,-11.8939331868523,-5.49169829349976,-3.55089474731983,-9.28008345567694,0,0,-6.33987423266195,-3.66998376319784,-9.3376046681334,0,-7.1459051542071,0,0,-3.20906937538699,0,0,0],"Archive102_field4":[0,0,0,0,1486.88569101552,0,0,0,0,1321.55920466233,1063.78932458994,1181.41097496376,1264.11945276275,1195.31304869197,0,0,1345.39183457069,1268.84181738772,823.421381071304,0,772.227645451425,0,0,1273.92868661788,0,0,0,0,0,0,0,1486.88585844417,0,0,0,0,1321.55719664513,1063.79694232164,1181.40884490924,1264.1191493832,1195.31755419976,0,0,1345.39344242347,1268.84171727984,823.425822575605,0,772.228944546642,0,0,1273.9278685697,0,0,0,0,0,0,0,1486.886388746,0,0,0,0,1321.55177482339,1063.82481075626,1181.40315250545,1264.11828524782,1195.33476519404,0,0,1345.39919327366,1268.84142227505,823.4408043188,0,772.233020509307,0,0,1273.92571887072,0,0,0],"Archive102_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive103.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive103.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive103.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive103_field1":[0,0,0,0,153.068211233016,0,0,0,0,317.461031303215,326.706606095137,-108.03913341673,128.919074866109,84.2100917981696,0,0,202.06167781672,139.392283920059,10.3434481124052,0,17.9417897041818,0,0,115.768363140489,0,0,0,0,0,0,0,153.068247790548,0,0,0,0,317.460872321882,326.707202653582,-108.039079248769,128.919001619623,84.210070069307,0,0,202.061674797602,139.392353856688,10.3428408126837,0,17.9423771881421,0,0,115.768373192498,0,0,0,0,0,0,0,153.068286372622,0,0,0,0,317.46070453,326.70783227463,-108.039022076077,128.91892431482,84.2100471273014,0,0,202.061671623309,139.392427670077,10.3421998605978,0,17.9429972272657,0,0,115.76838380073,0,0,0],"Archive103_field2":[0,0,0,0,1478.98323147834,0,0,0,0,1282.8420288828,1012.34407127022,1176.44068226226,1257.52244203516,1192.3273446751,0,0,1330.12343363592,1261.15643356159,823.32182099437,0,771.991308056963,0,0,1268.65146463881,0,0,0,0,0,0,0,1478.9833692675,0,0,0,0,1282.84163069952,1012.34554474372,1176.44021434561,1257.52250692716,1192.32846746186,0,0,1330.1241080305,1261.15648574002,823.322717550988,0,771.991570174051,0,0,1268.65093512151,0,0,0,0,0,0,0,1478.9835146911,0,0,0,0,1282.84121044888,1012.34709989503,1176.43972049121,1257.5225754158,1192.32965249148,0,0,1330.12481981268,1261.15654081252,823.323663806666,0,771.991846813555,0,0,1268.6503762493,0,0,0],"Archive103_field3":[0,0,0,0,-2.94606537084988,0,0,0,0,-7.46827984741804,-8.12187178089007,-6.97436433875456,-3.94469323238364,-5.84837174912404,0,0,-4.51589135232865,-3.80413547764452,-7.42990316568433,0,-6.53929643049633,0,0,-4.22605114254423,0,0,0,0,0,0,0,-3.02938943359917,0,0,0,0,-7.10406787152948,-9.06488569203222,-6.6036979131166,-3.8462455148773,-6.70629905147599,0,0,-4.97188803490194,-3.77059967427726,-7.9068276736324,0,-6.69094820064823,0,0,-3.97180599259441,0,0,0,0,0,0,0,-3.27935874711649,0,0,0,0,-6.01143199049907,-11.8939340036345,-5.49169773337924,-3.5508950227924,-9.28008402994953,0,0,-6.33987495935377,-3.66998405107132,-9.3376049740622,0,-7.14590487102728,0,0,-3.20906877178105,0,0,0],"Archive103_field4":[0,0,0,0,1486.88599280017,0,0,0,0,1321.56004504832,1063.78742702825,1181.41177198683,1264.1196069562,1195.31169151513,0,0,1345.39126785639,1268.84208244248,823.42031266261,0,772.227459969597,0,0,1273.92963390553,0,0,0,0,0,0,0,1486.88630105058,0,0,0,0,1321.55761232399,1063.79663017928,1181.40917103288,1264.11936066636,1195.31731547234,0,0,1345.39354200047,1268.8420418869,823.425642979062,0,772.229034747322,0,0,1273.92828944928,0,0,0,0,0,0,0,1486.88697997356,0,0,0,0,1321.55174225651,1063.82617189161,1181.40298162168,1264.11855677478,1195.33570690716,0,0,1345.39999607382,1268.84180972605,823.441562801296,0,772.233401668516,0,0,1273.92558415619,0,0,0],"Archive103_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive103_field6":[-8974878.19626425,-8366066.1,-2087125.70389041,-2705673.54748541,-5521370.54071757,-8688064.93489351,-5235639.69873415,-2375174.41924849,-5828649.19088692,-3806180.05721031,-7256378.94999578,-4105574.44394683,-5392253.69511594,-7043082.13971163,-6792765.87344259,-8526508.40720513,-6769736.82903837,-5859250.38171583,-6526920.36959792,-4281328.33136539,-5139121.41243807,-3679484.05778081,-2226453.075,-3922222.22722768,-7379726.64252849,-8838344.025,-2541305.025,-6725935.75764391,-6274549.575,-1569868.93965151,-2030990.80400166,-4138271.12092491,-6517835.4334239,-3931253.01622444,-1779204.65726671,-4366836.58308836,-2856003.81954046,-5440357.93021174,-3076682.48864431,-4048511.55189089,-5286095.84724543,-5094814.22608932,-6395635.38632146,-5081624.31324493,-4392517.90929817,-4897842.65312764,-3213080.61053471,-3853921.07777541,-2768662.36680302,-1669839.80625,-2932687.3566715,-5524349.20278781,-6628758.01875,-1905978.76875,20891.4752296593,0,-18098.6517115458,-6942.57404239166,11027.2245835948,-7146.89230312251,-18093.0225741885,8704.63199441945,18601.1079311622,-5472.43212864648,7705.30255654495,9992.28509793301,-17284.4385534986,-15136.6936726503,-959.394079653854,-3016.31996973963,-17286.3938525568,7679.55379424922,-10609.4275414536,-8337.51606446687,1679.95357946594,-36197.3034230915,0,35916.9848097481,41782.9504593185,0,0],"Archive103_field7":[-8950359.26822381,-8366066.1,-2118340.25290195,-2746850.70667764,-5527829.18363878,-8585266.3198959,-5211502.5525097,-2484495.28404373,-5836561.36833734,-3841744.57391522,-7213005.79547508,-4163816.61178796,-5343142.05728754,-6953583.32277628,-6765215.09642093,-8458693.3287929,-6682094.31701362,-5847782.6263675,-6467381.41189869,-4276814.04933019,-5135972.06627138,-3643286.85,-2325079.38080389,-4036968.85767566,-7421510.25,-8747522.56144762,-2637544.43835528,-6701416.80480167,-6274549.575,-1601083.48594732,-2072167.96485622,-4144729.66073069,-6415036.85934539,-3907115.96201064,-1888525.53082763,-4374748.8165409,-2891564.47277163,-5396984.83994368,-3134926.35050889,-3999398.20569642,-5196597.08953531,-5067263.54604594,-6327820.35197754,-4993982.21217764,-4381051.15271673,-4838303.74819772,-3208566.40477124,-3850771.75270016,-2732465.1375,-1768466.12814464,-3047434.47461949,-5566132.6875,-6537936.62835335,-2002218.19846244,45410.5047739685,0,-49313.1909067407,-48119.7470176406,4568.99056284908,95651.4022295164,6043.89739579828,-100616.289394047,10688.896490966,-41026.6670737034,51077.5797329211,-48254.1580933862,31832.8213436702,74361.1224883508,26591.0872623983,64798.4980120533,70353.5114237126,19143.306583752,48929.1307392939,-3823.38107120775,4829.23968505394,0,-98626.3818134813,-78830.7776656463,0,90821.0095479371,-96239.4940352813],"Archive103_field8":[-8995770,-8366066.1,-2069027.1,-2698731,-5589966.01657358,-8680918.05,-5217546.6,-2383879.05,-5847250.5,-3605769.657902,-7418544.23875989,-3953823.31221171,-5320223.65915883,-7205577.65003891,-6791806.35,-8523492.075,-6873794.59331562,-5852529.59513695,-6599155.79117317,-4272990.75,-5178262.8007182,-3643286.85,-2226453.075,-3860516.26850184,-7421510.25,-8838344.025,-2541305.025,-6746827.5,-6274549.575,-1551770.325,-2024048.25,-4206868.82543537,-6510688.5375,-3913159.95,-1787909.2875,-4385437.875,-2655519.70793882,-5602522.77659806,-2924918.81690733,-3976473.34322667,-5448591.22541593,-5093854.7625,-6392619.05625,-5185681.37736057,-4385796.5514766,-4970078.02295431,-3204743.0625,-3893062.41975288,-2732465.1375,-1669839.80625,-2870980.94051182,-5566132.6875,-6628758.01875,-1905978.76875,0,0,0,0,-57577.5661436681,0,0,0,0,195132.055065332,-154455.819638735,161775.326798232,54772.5611114047,-177629.08113592,0,0,-121339.601907594,14401.0487989025,-82844.31061348,0,-37461.1528361026,0,0,97623.9849709748,0,0,0],"Archive103_field9":[39695.5639839606,0,-42669.4043981456,40008.3330040619,-1660.55925574525,10170.9818151171,-73693.9446391242,-3223.84982443602,69135.0139896727,-33289.0847389533,35997.1050003978,30122.4526114987,-45438.4717135982,-16551.0622558811,-38021.2269285273,-18329.5832802028,10147.8106742611,42720.9144854266,-53387.6466565543,74912.6743829479,70630.9049097359,-73135.4322116475,-12203.3765846437,-309.267012447153,64736.0452940224,14655.0826738988,4419.10203217577,39695.4537084816,0,-42669.4329368294,40008.372545682,-1660.72719618942,10170.9669789279,-73693.8747196584,-3223.84971798708,69134.8498651824,-33290.4988999113,35996.9909661947,30122.7954123815,-45439.0794018278,-16551.0347465536,-38021.1387809643,-18329.5777011477,10147.7437267041,42720.8869293494,-53387.5623240965,74912.6552099361,70630.7536361672,-73135.4896215568,-12203.3762521019,-309.263025460958,64735.8311183309,14655.0762986323,4419.10232529008,39694.9993277337,0,-42669.5176447453,40008.4870278684,-1661.23650616466,10170.9257473107,-73693.5889601967,-3223.8507348361,69134.1864071501,-33292.8196733422,35996.4109799405,30123.2584207164,-45440.2997519613,-16550.7590094052,-38020.793948878,-18329.5163360922,10147.3725679627,42720.4130863562,-53387.1641960769,74912.5816622602,70630.3139013708,-73135.6540756937,-12203.3812137968,-309.258045558181,64734.9780812608,14655.0205742066,4419.10479541052],"Archive103_field10":[-259.683379594565,0,212.88508725978,-224.084801826425,-21.6016085597859,29.5287017930506,406.106815094534,-4.89612196738554,-420.531590789353,-37.2497478402171,-27.0324733222831,35.2208626996046,-94.2037951170014,-110.250595235565,344.622324498096,88.2476782894608,108.697629617902,135.539187181962,152.258084015562,-528.882034376947,-224.342289882777,425.77017451956,0,-25.6350148268336,-519.36675918913,0,0,-289.833304602989,0,202.503360374176,-212.175676113107,-29.3349221420738,30.0844384771555,408.455779172566,-4.96800539370976,-436.866980880538,-14.7003178745262,-49.8807711144238,37.2948702286924,-63.6523557216109,-110.113080320156,366.742242160795,102.699434987154,100.386433023023,134.061919542375,191.298077431027,-517.619992619184,-229.959924559175,405.006720748351,0,-25.541563803641,-579.666609205978,0,0,-380.28140600446,0,171.357922935318,-176.447904654175,-44.3350653401806,31.7516447003403,415.501688572177,-5.18366434029864,-485.872000741219,25.503032396939,-86.7599469592375,51.1519245806182,14.8511809797592,-111.157245102652,433.101421893419,146.054606149921,75.1878547114556,139.348916012683,274.228267000666,-483.833228807744,-199.780532734889,342.715845870636,0,-24.009901204378,-760.562812008921,0,0],"Archive103_field11":[-182.161456479838,0,143.54239171248,142.635481458573,-213.105426806011,-225.390203840512,36.6281598555649,229.531601564293,-65.0871947982579,-334.136867875461,185.041173460398,-185.778576182389,-178.36244789842,207.254436909226,-119.98372574896,-224.701207412491,299.889057423271,-77.7531877616836,107.255236641204,84.2968713945485,-108.921998473703,0,287.084783424959,-127.787165020979,0,-364.322912959676,285.270962917146,-203.311390713314,0,136.542202071508,135.054912566275,-148.790739846496,-252.722828973672,53.0644745917093,217.040746363263,-51.2488022873668,-263.987874664181,149.724582499984,-117.356991680219,-102.882648819564,184.864118008368,-127.685148030342,-245.773389463493,314.11704392835,-12.4800170088468,88.2594718797864,98.3749778331453,-110.130486716524,0,273.084404143016,-69.8886510986138,0,-406.622781426627,270.10982513255,-266.761048117446,0,115.541538171603,112.313066715063,75.0236358212987,-334.720424280728,102.372928872066,179.567961259559,-9.73564274536474,-122.220986488841,121.985633059997,21.8042641953957,135.335933299923,193.029182161255,-150.789464461085,-308.989878817183,414.947309185709,190.598462546892,81.7449422875528,140.609069891116,-92.7716187285007,0,231.083076343205,37.9155482787811,0,-533.522096234892,224.626133430127]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive104.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive104.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive104.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive104_field1":[0,0,0,0,-53.9774577537489,0,0,0,0,2.25560781626433e-05,0.121225554964106,-63.2002539939155,-40.8172579587719,3.95429198845555,0,0,-49.978497705424,-51.1431852746207,6.68164816257194,0,-22.900731747954,0,0,-189.34536763695,0,0,0,0,0,0,0,-53.9775133377352,0,0,0,0,2.25483694889382e-05,0.121224985741352,-63.2001510191597,-40.8174063224654,3.95438912438599,0,0,-49.9786156071799,-51.1431120129406,6.68167937762327,0,-22.900552461518,0,0,-189.345502284668,0,0,0,0,0,0,0,-53.9776560030171,0,0,0,0,2.25300641692439e-05,0.121233346227151,-63.200039939597,-40.8178333226919,3.95403139609234,0,0,-49.9780200998291,-51.1425513114524,6.68131636391993,0,-22.9003587173801,0,0,-189.345573702714,0,0,0],"Archive104_field2":[0,0,0,0,302.876141726763,0,0,0,0,3.06821528288959e-05,0.10548848843663,76.2684578148915,75.2065917497189,43.5286756266431,0,0,69.979292445495,107.107742242641,25.1565195540226,0,45.2288186836468,0,0,132.704547450894,0,0,0,0,0,0,0,302.876327027797,0,0,0,0,3.06721702148425e-05,0.105489199448809,76.2682844312475,75.2065845336383,43.5288176929411,0,0,69.9794988883293,107.108045159289,25.1565723857807,0,45.2288565978578,0,0,132.704262577048,0,0,0,0,0,0,0,302.876059490012,0,0,0,0,3.06526424145594e-05,0.105499166912427,76.268089343439,75.206401710725,43.5294238315767,0,0,69.9804069119657,107.108263671988,25.1567246360885,0,45.228689547079,0,0,132.703811301594,0,0,0],"Archive104_field3":[0,0,0,0,-0.162389302277102,0,0,0,0,-1.00522850641431e-05,-0.000332676169224631,-0.295399931769572,-0.0626671570315645,0.190295836748117,0,0,0.229252876118021,-0.0328837409664256,0.00729826300025787,0,-0.184294522669172,0,0,-0.291521743399799,0,0,0,0,0,0,0,-0.20488665741018,0,0,0,0,-1.00168975082876e-05,-0.000736089259084648,-0.195871610794506,-0.0779018295592117,0.049659038918534,0,0,0.0622062900532514,-0.0795050135614399,-0.0155466248124203,0,-0.126488813237214,0,0,-0.197301757272964,0,0,0,0,0,0,0,-0.332359513979107,0,0,0,0,-9.91671342426887e-06,-0.00196584507716454,0.102713073736001,-0.123607161603971,-0.372252649988256,0,0,-0.438945284109413,-0.219385909927637,-0.0840843798782161,0,0.0469406199497645,0,0,0.0853538637290369,0,0,0],"Archive104_field4":[0,0,0,0,307.648418723603,0,0,0,0,3.93855252511096e-05,0.160697128295543,99.0516886452574,85.56917620881,43.7083314648931,0,0,85.9942100431442,118.691595867991,26.0287331905525,0,50.6963856559917,0,0,231.219052295967,0,0,0,0,0,0,0,307.648636269554,0,0,0,0,3.9364314143517e-05,0.160698507136,99.0512426202629,85.5692531509044,43.7080956930465,0,0,85.9941634780783,118.691859726182,26.0287958846337,0,50.6961613104208,0,0,231.218899464414,0,0,0,0,0,0,0,307.648509215669,0,0,0,0,3.9313222757797e-05,0.160721694252879,99.050881118953,85.5693499692758,43.7102239233082,0,0,85.995654062433,118.691991438556,26.0289810202725,0,50.695788690507,0,0,231.218630521118,0,0,0],"Archive104_field5":[-26529968.9064309,8366066.1,-30294254.7061746,2034491.26641655,5482395.74467552,8418518.95105432,5264725.52805144,2710012.69625909,5664276.21697427,4160060.38375367,7070274.08644701,4092349.58592126,5247337.99315441,7065707.8213406,6715763.87498901,8126219.20992643,6753812.46403299,5920901.12424869,6579988.99956733,4567100.76969982,5168764.30703466,16357817.6077209,18921283.8284191,3864680.68356293,27017879.7708002,26283119.5195286,3559554.03118625,-28769091.0162643,6274549.575,-30810443.6654179,1359893.33645665,4099315.51739217,6248319.75651853,3960352.91343107,2114071.96271427,4202460.76862128,3209851.34221181,5254472.67165779,3063462.60620092,3903595.54142343,5308722.17565123,5017823.03720829,5995342.07329143,5065645.45876331,4454121.94358395,4950905.63596341,3498770.86032061,3883601.16108343,15446413.6316448,18364157.4408784,2875140.20425879,25156039.6202251,24067018.6645283,2924152.75701461,-35512605.8764948,0,-32361871.6092286,-664126.499166402,-49976.0806033404,-262358.588663169,47197.4911727673,326173.138741663,-182978.456918858,359306.413978794,-193517.87321324,-23209.8606301241,-127634.450946294,37763.7525730629,-76030.672177422,-397277.836269163,1289.49773461919,53909.981678118,63671.4515526907,294000.318848601,28012.6156861434,12713756.8599504,16694158.0984097,-93466.5102196009,19587752.5121134,17436052.4677756,1018149.18597201]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive105.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive105.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive105.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive105_field1":[1002.83413840792,933.169209873948,236.244871886963,306.035578751545,621.030111188425,961.447328665088,584.921824595431,274.067890679615,655.905576184887,429.427533317792,811.03931648037,463.732714384476,603.10144221964,410.493520875593,255.619269654182,352.051925186969,332.550521470525,407.935168553066,473.100858975582,291.380694610794,530.397527482341,609.389959792691,564.195995267735,668.294615303461,767.905508186844,759.980916282327,743.431705062201,373.880239118368,480.595655791072,383.825459336725,828.850195341849,683.533776102869,980.940415402838,671.381352770285,637.168354781271,529.364002442999,945.970856989674,566.70979480754,516.191575256307,727.028754272326,881.262691070865,848.97143215157,907.117034903996,840.373607877195]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive106.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive106.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive106.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive106_field1":[1002.48726345365,932.613761005154,235.928677628409,306.246351712827,621.016570372704,963.447067491478,584.928570244464,272.409916787884,655.10136059174,429.256793581284,811.2664897242,463.93017238482,603.310673683012,410.492903389993,254.235903301827,351.494747171213,332.77186779078,407.862716573077,473.651299016423,289.923955229016,530.385310026212,609.413144439458,564.395411242112,667.669305864804,767.444143298832,759.127149974465,743.426717393063,373.552321727607,480.828000080039,383.613338164495,828.784688786928,683.387562446207,982.52689779218,671.650921116975,637.512634291838,529.139101584274,947.512878510218,567.317301746057,516.113138654808,727.265790473246,881.82092983321,849.276362636713,906.755151624785,840.740540246321]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive107.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive107.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive107.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive107_field1":[1002.83413840792,933.169209873948,236.244871886963,306.035578751545,621.030111188425,961.447328665088,584.921824595431,274.067890679615,655.905576184887,429.427533317792,811.03931648037,463.732714384476,603.10144221964,410.493520875593,255.619269654182,352.051925186969,332.550521470525,407.935168553066,473.100858975582,291.380694610794,530.397527482341,609.389959792691,564.195995267735,668.294615303461,767.905508186844,759.980916282327,743.431705062201,373.880239118368,480.595655791072,383.825459336725,828.850195341849,683.533776102869,980.940415402838,671.381352770285,637.168354781271,529.364002442999,945.970856989674,566.70979480754,516.191575256307,727.028754272326,881.262691070865,848.97143215157,907.117034903996,840.373607877195,1002.83413840792,933.169209873948,236.244871886963,306.035578751545,621.030111188425,961.447328665088,584.921824595431,274.067890679615,655.905576184887,429.427533317792,811.03931648037,463.732714384476,603.10144221964,410.493520875593,255.619269654182,352.051925186969,332.550521470525,407.935168553066,473.100858975582,291.380694610794,530.397527482341,609.389959792691,564.195995267735,668.294615303461,767.905508186844,759.980916282327,743.4317050622,373.880239118368,480.595655791072,383.825459336725,828.850195341849,683.533776102869,980.940415402838,671.381352770285,637.168354781271,529.364002442999,945.970856989674,566.70979480754,516.191575256307,727.028754272326,881.262691070865,848.97143215157,907.117034903996,840.373607877195,1002.83413840792,933.169209873948,236.244871886963,306.035578751545,621.030111188425,961.447328665088,584.921824595431,274.067890679615,655.905576184887,429.427533317792,811.03931648037,463.732714384476,603.10144221964,410.493520875593,255.619269654182,352.051925186969,332.550521470525,407.935168553066,473.100858975582,291.380694610794,530.397527482341,609.389959792691,564.195995267735,668.294615303461,767.905508186844,759.980916282327,743.4317050622,373.880239118368,480.595655791072,383.825459336725,828.850195341849,683.533776102869,980.940415402838,671.381352770285,637.168354781271,529.364002442999,945.970856989674,566.70979480754,516.191575256307,727.028754272326,881.262691070865,848.97143215157,907.117034903996,840.373607877195,1002.83413840792,933.169209873948,236.244871886963,306.035578751545,621.030111188425,961.447328665088,584.921824595431,274.067890679615,655.905576184887,429.427533317792,811.03931648037,463.732714384476,603.10144221964,410.493520875593,255.619269654182,352.051925186969,332.550521470525,407.935168553066,473.100858975582,291.380694610794,530.397527482341,609.389959792691,564.195995267735,668.294615303461,767.905508186844,759.980916282327,743.4317050622,373.880239118368,480.595655791072,383.825459336725,828.850195341849,683.533776102869,980.940415402838,671.381352770285,637.168354781271,529.364002442999,945.970856989674,566.70979480754,516.191575256307,727.028754272326,881.262691070865,848.97143215157,907.117034903996,840.373607877195,1002.83413840792,933.169209873948,236.244871886963,306.035578751545,621.030111188425,961.447328665088,584.921824595431,274.067890679615,655.905576184887,429.427533317792,811.03931648037,463.732714384476,603.10144221964,410.493520875593,255.619269654182,352.051925186969,332.550521470525,407.935168553066,473.100858975582,291.380694610794,530.397527482341,609.389959792691,564.195995267735,668.294615303461,767.905508186844,759.980916282327,743.431705062201,373.880239118368,480.595655791072,383.825459336725,828.850195341849,683.533776102869,980.940415402838,671.381352770285,637.168354781271,529.364002442999,945.970856989674,566.70979480754,516.191575256307,727.028754272326,881.262691070865,848.97143215157,907.117034903996,840.373607877195]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive108.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive108.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive108.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive108_field1":[272.268414542953,272.329879854546,272.946436049277,272.884930159022,272.607083725304,272.299270089162,272.63852338181,272.915178827766,272.576663875595,272.776179542709,272.437766840794,272.74525916051,272.622475179914,272.460940624048,272.484379986929,272.314697808564,272.487605234388,272.57434968284,272.510867705087,272.73110609119,272.645526173677,272.792725433623,272.930624536357,272.760659124878,272.42252893727,272.283842301169,272.899851098598,264.884174564558,260.299924470492,261.171424557188,261.098725764896,262.435646278439,266.242317867427,262.75445303366,258.622313506926,261.923511089413,260.143682783833,263.460888222055,259.654907720941,262.004016826978,264.312258603818,264.429734429119,265.641823590347,263.62137332599,261.971986571506,263.227341917021,261.943615182693,261.1164900792,262.136375098988,258.806655076582,260.413543515824,263.271053902385,265.242470083701,258.329020215367,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive108_field2":[0.000267182173557909,-1.35687908104493e-07,5.2521391241977e-19,4.42361725989866e-19,6.07990290774976e-11,0.00910477229787849,1.82746453476207e-11,1.15819410413458e-18,4.81199997191843e-11,-8.11947475043127e-15,-7.65965254361617e-07,-6.61865541042615e-15,5.0907243761669e-11,-7.87646326394669e-07,-2.71344950282441e-07,0.00434255578011027,-5.33281950984188e-07,5.97066849591832e-11,-2.54331287864397e-07,-9.20447421977598e-16,-3.60342383826701e-15,-5.7050390336626e-16,5.07351146508124e-19,-3.79806873941083e-15,-8.30053403228301e-09,0.00288900561364712,4.13564250250662e-19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive109.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive109.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive109.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive109_field1":[271.856472876669,271.944623282419,272.845420925044,272.75452181464,272.345657401033,271.901474940143,272.392439416615,272.799427202021,272.302182297831,272.593596959095,272.099751787486,272.548203097366,272.368312119425,272.133080771535,272.167940385088,271.923317421871,272.171496602319,272.298245227231,272.205688215977,272.528131328817,272.402418568659,272.618626839391,272.822351842777,272.570707398522,272.078476519805,271.878964944285,272.776858875454,248.297443046784,248.263324760846,248.130006485084,248.121862472404,248.168788603732,248.300653749628,248.171216232536,248.096523447827,248.185386174927,248.116972654354,248.229328092326,248.118862531806,248.162560665895,248.22196182639,248.223756364413,248.288740869613,248.196913479645,248.181438770571,248.199003307632,248.153196320434,248.162402488604,248.139589147193,248.107250614474,248.115087744207,248.239145981251,248.295509119817,248.100365361103,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive109_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive110.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive110.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive110.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive110_field1":[0,0,0,0,142.19721912515,0,0,0,0,219.265384109741,244.352363795244,-11.0321209152764,121.810400101882,0,0,151.148677455624,304.159335117163,52.8176668085339,155.29354153339,0,118.485037129766,113.722314994685,149.324946879309,124.78534737815,150.732240322551,0,-13.109596916084,-97.9553951145283,0,-222.212781553646,0,156.649181583478,0,0,57.4292714078291,131.42228634087,0,0,-10.961542455484,158.292288605976,153.476570786394,-158.345542999661,212.490629247237,5.72314816688039],"Archive110_field2":[0,0,0,0,1586.68570929195,0,0,0,0,1430.03708205563,1160.81903366895,1296.70788728388,1409.63373816488,0,0,1287.24248882815,615.040463639736,1464.39388293063,1570.3944038287,0,1558.10158228797,1297.52502793447,1570.15491696092,1545.72017426604,1482.01013761642,0,1105.22219248825,1154.23663224221,0,738.776809892724,0,1512.48555539493,0,0,879.180363943307,955.261673819818,0,0,813.744145606329,893.802343083124,929.075039716245,470.81197218577,417.45725134949,1125.5059852609],"Archive110_field3":[0,0,0,0,1593.04475429858,0,0,0,0,1446.7492404432,1186.25836419409,1296.75481592941,1414.88693871478,0,0,1296.08608809025,686.139689169119,1465.34608550054,1578.05407626561,0,1562.60015511068,1302.49912208957,1577.23948816185,1550.74892876098,1489.6557509272,0,1105.29993951861,1158.38571410471,0,771.472420194707,0,1520.57604918961,0,0,881.054046899462,964.259655287984,0,0,813.817970999399,907.710899534097,941.666335388546,496.726508394017,468.425900460423,1125.52053614453],"Archive110_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive110_field5":[-899.146828025198,-836.644746972164,-211.432081590382,-274.398661294904,-556.678722072356,-861.921061046228,-524.778537831474,-245.64983003239,-587.027869882574,-384.975997859834,-726.965117094089,-415.534131455567,-540.57385862878,-368.37564903568,-228.890622528253,-315.615557870779,-298.299989460294,-365.571252313957,-424.037084665014,-260.856679899811,-475.444267205557,-546.18244485536,-505.665395224006,-599.196282935719,-688.362618772156,-680.980154622461,-666.686221185765,-334.935139005103,-430.533424715488,-343.602277367484,-742.376525500566,-612.737890229582,-879.869318968832,-602.560122974702,-571.648236243889,-474.31199637074,-848.33105289999,-508.302076631676,-462.50827822929,-651.474634805261,-789.967672826775,-761.240907019435,-812.697116308988,-753.472686599089],"Archive110_field6":[103.936274559074,96.7113884177201,24.4403496712983,31.7189292227479,64.3489035329005,99.6331869911671,60.6614231299196,28.3957273537986,67.8570929199049,44.501042282598,84.0330451602764,48.0333892413197,62.4872726441119,42.5821360935464,26.4584580021754,36.4833687396975,34.4817872222369,42.2579637353101,49.0162824149307,30.153552965518,54.9586612036958,63.1355934074898,58.4520522287292,69.2636924658519,79.5708152561053,78.7174442638832,77.0651466147122,38.7166027639487,49.767222486196,39.7184748102,85.8145165791276,70.829025479101,101.707903828458,69.6525332991477,66.0792944840264,54.8277771159197,98.0622591138484,58.7568376477183,53.463334233702,75.3067734889396,91.3157833365738,87.9951321091168,93.9431781120532,87.0971698795022],"Archive110_field7":[1003.08310258427,933.356135389884,235.87243126168,306.117590517652,621.027625605257,961.554248037396,585.439960961394,274.045557386188,654.884962802479,429.477040142432,810.998162254366,463.567520696887,603.061131272892,410.957785129226,255.349080530429,352.098926610477,332.781776682531,407.829216049267,473.053367079944,291.010232865329,530.402928409253,609.31803826285,564.117447452736,668.459975401571,767.933434028261,759.697598886344,743.751367800477,373.651741769052,480.300647201684,383.320752177684,828.191042079693,683.566915708683,981.57722279729,672.21265627385,637.727530727915,529.139773486659,946.393312013838,567.058914279394,515.971612462992,726.7814082942,881.283456163349,849.236039128552,906.640294421042,840.569856478592],"Archive110_field8":[620000000000000],"Archive110_field9":[0,0,0,0,141.397877829495,0,0,0,0,218.053863969758,242.949875672935,-9.77276588875681,121.615811367143,0,0,150.331257405916,298.916936559593,53.6873625957782,155.622846255336,0,118.993674206695,111.79982947593,148.782678449615,124.567561140282,149.182074796581,0,-13.7758843818161,-96.5688322325029,0,-219.107536374593,0,154.850331472097,0,0,57.6749147121332,129.427568805787,0,0,-9.74448867894086,155.696145648393,151.897596863429,-156.605414303238,209.198389776458,3.74879962181639],"Archive110_field10":[0,0,0,0,1561.38204348209,0,0,0,0,1408.07338774581,1141.59139043183,1272.74057580196,1388.4025309807,0,0,1264.76231602864,603.706217473895,1438.84146618394,1545.09765971538,0,1534.08477961796,1275.60508224892,1544.91726707669,1521.04004661492,1459.36133771795,0,1083.7510254696,1131.8640985656,0,721.156835548393,0,1490.08491905598,0,0,858.394098256672,935.085217981061,0,0,795.830489181763,877.355130355275,909.079504179925,460.386476355028,408.526492054588,1104.10705990599],"Archive110_field11":[0,0,0,0,1567.7714264404,0,0,0,0,1424.85723947001,1167.15703519174,1272.77809544548,1393.71876417306,0,0,1273.66526332447,673.656093254421,1439.84273367367,1552.91508085102,0,1538.69282365153,1280.4950322942,1552.06496240279,1526.13233393922,1466.96653181541,0,1083.83857663257,1135.97617799867,0,753.707697953468,0,1498.10937222724,0,0,860.329485551284,943.999926087743,0,0,795.890144788148,891.063025004677,921.682388273152,486.293083849326,458.974793420609,1104.11342407963],"Archive110_field12":[9023504.88173452,8396257.12205626,2121854.14097089,2753763.43725098,5586621.683591,8649920.85786736,5266483.23761768,2465250.80376795,5891194.50182965,3863476.67340208,7295552.93806295,4170146.79565943,5424999.23287074,3696881.71473194,2297061.59816321,3167400.96103473,2993628.32322741,3668737.82685951,4255479.28797675,2617861.12250294,4771382.7512961,5481284.92906379,5074670.81027189,6013312.19291819,6908152.54782841,6834064.86913381,6690616.2419185,3361285.12905378,4320674.15307749,3448265.32281745,7450216.13060924,6149210.7533247,8830042.93352318,6047070.44692861,5736850.18909626,4760019.70013808,8513536.56441473,5101131.56930715,4641561.9522462,6537958.38929072,7927823.27645057,7639532.08371145,8155927.56134397,7561573.09781442],"Archive110_field13":[-901.947443960666,-839.67758287293,-216.691785467709,-279.875517977435,-562.07725351252,-859.041518675632,-529.649796384168,-253.779561276214,-591.397465593987,-391.205479292867,-730.08663894706,-420.965565458299,-545.551921288234,-373.713113800826,-235.946799614634,-323.060297519234,-304.156039120758,-371.995625086717,-429.15468049912,-268.482483165639,-480.974362391259,-551.307558393499,-510.879107902264,-604.847221266122,-693.191645851847,-685.176430362234,-671.055714169801,-342.090374082732,-435.284520498877,-349.639611179348,-745.260667299339,-617.979244424329,-879.162685182081,-606.817534138247,-576.326900564963,-479.681356903458,-847.46457662631,-512.407904482169,-467.848321199442,-655.515986100792,-790.833725565313,-763.777568594641,-815.291971045106,-755.645498895089],"Archive110_field14":[104.260009879859,97.0619670496517,25.0483416134974,32.3520227978279,64.972943154119,99.3003282220468,61.2245129953346,29.3354781846006,68.36219340563,45.221135010953,84.3938753853744,48.6612322121916,63.0627084586181,43.1991167534215,27.2741120601431,37.3439384264327,35.1587133552894,43.0005847973741,49.6078474731807,31.0350525796703,55.5979088478445,63.7280274696957,59.0547278491166,69.9169088922671,80.1290234027217,79.202509943726,77.5702352257349,39.54370736398,50.3164222168823,40.4163563631526,86.1479070160632,71.434896302049,101.626220969793,70.1446658873001,66.6201215484036,55.448444745656,97.9620993701078,59.2314480644601,54.0806129194556,75.7739307815528,91.4158941220536,88.2883558026521,94.243128604996,87.3483346596286],"Archive110_field15":[1006.20745384053,936.739549922582,241.740127081206,312.227540775263,627.050196666639,958.341846897678,590.874309379503,283.115039460815,659.759658999617,436.42661430382,814.480514332434,469.62679767049,608.614629746852,416.912230554247,263.220911674777,360.404235945667,339.314752476048,414.996209884091,478.7625279723,299.517535745309,536.572271239103,615.035585863195,569.93383575138,674.764130158389,773.320669254569,764.37894030596,748.625949395536,381.634081446712,485.60094271576,390.055967542501,831.408574315402,689.414140726378,980.788906151874,676.962200025547,642.947022113367,535.129801649114,945.426675996418,571.639352546629,521.928934118897,731.289916882344,882.249619687366,852.065924397293,909.535099650102,842.993833554718],"Archive110_field16":[625000000000000],"Archive110_field17":[0,0,0,0,139.264800097755,0,0,0,0,215.516681817378,239.86773788362,-9.75611211926946,120.055487195001,0,0,148.17657509311,293.319284015792,53.3022573730625,154.225949232628,0,117.781553015109,109.276990633161,146.86731837857,122.775972898008,146.674131023265,0,-14.756170210876,-95.0569754109531,0,-215.262475302022,0,152.138468016065,0,0,56.7128754113256,127.237693687173,0,0,-9.70897567586444,152.841013240585,149.217139065367,-154.356097911074,205.567696175427,2.0871229367053],"Archive110_field18":[0,0,0,0,1527.27457218901,0,0,0,0,1377.60710201607,1115.0413812745,1242.5189267614,1358.96343027928,0,0,1233.36641918379,590.300489277578,1404.63313794358,1510.87538361671,0,1500.95790322224,1247.30679506797,1510.85512222979,1487.5274891561,1426.65966821956,0,1057.25165709603,1102.11711953629,0,702.084188374273,0,1458.20855805627,0,0,836.442160479635,912.679233630465,0,0,776.762154243222,856.824783124329,882.702982522472,448.4431649312,398.560550051093,1074.22089512636],"Archive110_field19":[0,0,0,0,1533.61087091915,0,0,0,0,1394.36321224661,1140.54978568757,1242.55722809213,1364.25618006373,0,0,1242.23549352632,659.159214467101,1405.64411671315,1518.72646261124,0,1505.57202467234,1252.08454255476,1517.97668281687,1492.58566605609,1434.17959462397,0,1057.35462877485,1106.20882917705,0,734.343339888308,0,1466.12356649732,0,0,838.362593431542,921.505732046808,0,0,776.8228295263,870.349978057369,895.226401501274,474.264775347953,448.451323744174,1074.22292267864],"Archive110_field20":[9051610.82703498,8426693.54100706,2174638.5829933,2808727.14447989,5640799.34766785,8621022.83606673,5315369.38608685,2546837.77853042,5935046.14763899,3925993.44415588,7326879.37641628,4224654.65768027,5474957.22783784,3750446.53625298,2367874.78061661,3242113.61359295,3052397.47088146,3733210.45498901,4306837.58625738,2694390.86253158,4826880.74044459,5532718.67224055,5126993.7016372,6070022.91915493,6956614.87686018,6876177.13983614,6734466.85679388,3433092.42085589,4368354.39245415,3508853.7711398,7479160.31056926,6201811.04472213,8822951.41829384,6089796.25012381,5783803.53311676,4813904.61578105,8504840.92912829,5142336.13845839,4695152.64767875,6578515.89559269,7936514.66129502,7664989.08071544,8181968.5633794,7583378.63807652],"Archive110_field21":[-904.775969241057,-842.732165080303,-221.949827147284,-285.342718181109,-567.463367973218,-856.423441586687,-534.514927493422,-261.899664918839,-595.760589701448,-397.399175085846,-733.207030638455,-426.385138803059,-550.521444349247,-379.046565437722,-243.003217035552,-330.44775224564,-310.002271948636,-378.377601460481,-434.269659806586,-276.086593937481,-486.484275190651,-556.41235486318,-516.080657078842,-610.435810409646,-697.943238246829,-689.364355220853,-675.396132263936,-349.191097683599,-440.039008473457,-355.652950299214,-748.175533309953,-623.188251737813,-878.606913164543,-611.093933590963,-580.993140358368,-485.03030743177,-846.758831714093,-516.529353979881,-473.170928116848,-659.546469900337,-791.769100108083,-766.351432666512,-817.910024053843,-757.842385456439],"Archive110_field22":[104.586971362652,97.4150594313109,25.6561414150622,32.9840001387106,65.5955474429238,98.9976933568035,61.7868945630346,30.2741161192987,68.8665458106364,45.9370911222461,84.7545749702032,49.2877041582598,63.6371571439697,43.815633518428,28.0897938994204,38.1978863010227,35.8345047181629,43.7383050761298,50.1991100757886,31.9140446645289,56.2348235225835,64.3181129939991,59.6559974376851,70.5629181062405,80.6782805388919,79.6866103090626,78.071962944359,40.3645107464138,50.866014065634,41.1114642657761,86.4848489976608,72.0370280089512,101.561976876163,70.6389934140045,67.1595124078376,56.0667530946212,97.8805192602987,59.7078642550353,54.6958760963859,76.239831853256,91.524018115002,88.5858798938389,94.5457606867038,87.6022822883125],"Archive110_field23":[1009.36294060371,940.147224511614,247.605968562346,318.32671831982,633.058915416142,955.42113494349,596.301822056457,292.173781038138,664.627135512085,443.336266208092,817.961605608659,475.672842961319,614.158601493217,422.86219895615,271.093010934972,368.645638546663,345.836776666798,422.115906536611,484.468769882375,308.00063860201,542.719098713235,620.730467857179,575.736654516527,680.998728515887,778.621518785721,769.050965529915,753.468095208295,389.555608430012,490.905022539091,396.76441456499,834.660382307614,695.225279746764,980.168890040706,681.732927004967,648.152652766206,541.097060526392,944.639350974392,576.237218234916,527.866804213234,735.786301753593,883.293118223085,854.937312560351,912.455784740547,845.444667744752],"Archive110_field24":[630000000000000]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1101.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1101.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1101.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1101_field1":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10.1506418744243,10.1699111326393,10.3118640915263,10.5244726199365,10.6798428748174,10.7081299981797,10.6027705194852,10.396673173189,10.1739432972223,10.0556570208351,10.0514517008561,10.1591743229919,10.3714041007157,10.5690731797443,10.6702299246087,10.643061026039,10.4937444195187,10.2899029294727,10.1554832760628,10.1647883681018,10.136586902857,8.44223076081869,7.00801227296701,6.05292239805966,5.54165490470053,5.43533106517283,5.72981222218013,6.4470717786603,7.62645612303639,9.19337984099582,10.952059547832,13.1890970846006,15.5337677352943,17.3906781605671,18.2926399921713,18.013833455012,16.6062035149256,14.4373624241869,12.0929319215906,10.1365869156771,10.0963989751859,6.99852966185616,4.71955067102424,3.35081830931244,2.68312675617531,2.54864638819694,2.91407858417753,3.8928105918788,5.70062965658037,8.40383661403301,11.8653260124198,16.3491383545217,21.1218542539497,24.9772535810724,26.8524208217819,26.2705934352197,23.337400667144,18.8531831708876,14.0809868943317,10.0963990000536,10.0704599834231,5.95137029575826,3.33740380299405,1.96585797698336,1.3708158480913,1.25820145912839,1.56657935003963,2.48534258165723,4.4307682534836,7.78738008247906,12.6536368607409,19.0647605089021,25.9135112332859,31.4060041996614,33.9882247418167,33.1673057281667,29.0332277646763,22.6218562917565,15.7771324698778,10.0704600182308,10.0517313150933,5.36108771788283,2.65760513152409,1.38347118601292,0.885136714983599,0.800683812121292,1.0520190063275,1.86641203544348,3.77086731211691,7.42781442814608,13.1625544428234,20.7796343506203,28.8435196275643,35.1496278639365,37.950967337489,37.0474959040617,32.3768601166188,24.923962091213,16.8327507247621,10.0517313563129,10.0343706784791,5.23736518145807,2.5204805005553,1.27693369709851,0.812885021277823,0.742487555147957,0.983650423787525,1.77064943828237,3.65122769281058,7.36194847752068,13.2890906576182,21.1618285689963,29.4585847197755,35.8745815955154,38.6792591999517,37.7783579187819,33.0422939830559,25.3850562453153,17.0363726023668,10.0343707216824,10.0190738202916,5.5776376186729,2.88760500976429,1.56713790378517,1.04228310352274,0.96208319063731,1.25741025970562,2.12906319491694,4.05001338979424,7.59727611428363,13.0056134068849,20.1444739490414,27.7365494532746,33.7239518019052,36.4377483558765,35.5269879935508,31.0082103757749,23.9440187216528,16.3557839621856,10.0190738606178,10.0128679888071,6.38068150404288,3.88011828589802,2.48386123708631,1.86192195087837,1.76091011916055,2.12698001492685,3.10726677340439,5.01515454161029,8.11564994536348,12.3669495407014,17.8958457003138,23.827724174037,28.5897739191894,30.8101877714184,30.0107784428778,26.3513453740033,20.8141304183896,14.9264144017209,10.0128680214238,10.0245473583866,7.61441399106654,5.69291425926119,4.46047806993698,3.83840878197114,3.72762836184281,4.1042633571779,5.02587215448554,6.61340736514027,8.85745350265635,11.5097535369897,14.8727278531885,18.4549149491579,21.3226186472973,22.6686551394866,22.1690596353039,19.9579349616235,16.624496587589,13.0369715763791,10.0245473688663,10.0432560647537,9.20004141728125,8.48925478053657,8.01749469585456,7.76496508545338,7.71868516210826,7.87575847489028,8.24312532287643,8.86137865839395,9.70696930308561,10.5975275836595,11.6985256015296,12.8964652096615,13.849117766365,14.2933326075512,14.1275778960356,13.393956436279,12.2681902769523,11.0422281865359,10.0432560717792,10.0429584487565,11.0311311652642,12.2452266006441,13.3585957522651,14.0831516398122,14.2463947035741,13.8071632328291,12.8652342399042,11.6799152667771,10.5916810475567,9.71138481962996,8.87479110583372,8.26397897533745,7.90178806826748,7.74716293574847,7.79271425986104,8.04130638614968,8.50648469507681,9.20852848653598,10.0429584412525,10.0236510884787,13.0246706600747,16.5985031804177,19.9167190668496,22.116212541167,22.6121576308785,21.2721770497447,18.4181936624911,14.8518665189909,11.5029080754397,8.860468971592,6.62223829131173,5.03733387173884,4.11667679787651,3.74037772579838,3.85135499746285,4.47319819522604,5.70401814247116,7.62106397838108,10.0236510671022,10.011425091038,14.9149449324191,20.7903657145249,26.31456755469,29.9644409815679,30.7606909675774,28.545566913507,23.7954642844953,17.8776232865444,12.360778150998,8.11760599341149,5.02039546755816,3.11269550923255,2.13182515429294,1.7653587679847,1.86654182576643,2.48925792227093,3.88618499408832,6.38520524705246,10.0114250580951,10.0177622241945,16.3478065961815,23.928168927847,30.98483771023,35.4986985043792,36.4081759594061,33.6982322549079,27.7176640761839,20.1334296688056,13.0018723879318,7.59837948938133,4.05258190593742,2.13123755024678,1.25902449074139,0.963493868422647,1.04372531888598,1.56904641476845,2.89028963723474,5.58002964381813,10.0177622039272,10.0337552701168,17.033992429818,25.3807993598317,33.0362817020613,37.7721652662936,38.6739135123824,35.8711699951435,29.4558918360709,21.1603169638579,13.2887771873244,7.36226270869546,3.65168931538035,1.77101990174822,0.983833747577368,0.742600317109476,0.812982183663862,1.27713339164353,2.52092711212281,5.23780956825175,10.0337552268493,10.0520041924271,16.8367288361694,24.9325842924811,32.3896518326567,37.0637935043019,37.968315143493,35.1663197059171,28.8563088048302,20.7874455698209,13.1656036821051,7.42724223386325,3.76925638074097,1.86526717587639,1.05128961288695,0.800171525476336,0.884431612612255,1.38252204884479,2.65624262552791,5.35973095711672,10.0520041513031,10.0712907243225,15.7865687039741,22.6425100481881,29.0646616714344,33.206671668106,34.028086583363,31.4411440933152,25.9393473425748,19.0798145774502,12.6591777515842,7.78573332181731,4.42656521298817,2.48158883261101,1.56372611852558,1.25573961822502,1.36818319199303,1.96267403831363,3.33358297773528,5.9480736813889,10.0712906897667,10.0967777200258,14.0926556496982,18.8809746056729,23.3805484381984,26.3240273657947,26.9067299106641,25.0239333239179,21.1549535394602,16.3676372910244,11.8719245803299,8.40099203048958,5.69312846236137,3.88414888784273,2.90581671810225,2.54085959185341,2.67535027664136,3.34277213119093,4.71178999194394,6.99276214989217,10.0967776955364,10.1347310922623,12.1034049714282,14.4633089946157,16.647920313886,18.06552535293,18.3456454128039,17.4362754349623,15.5660623033286,13.2070877162963,10.9581335368474,9.18982823111143,7.61529914212211,6.43075681627566,5.71080412459458,5.41545887673427,5.52233958188669,6.03552959453897,6.99383619976296,8.43282987643825,10.1347310797596,10.1506418614743,10.1699111568736,10.3118641636508,10.5244727306636,10.6798430096143,10.7081301395358,10.6027706486752,10.3966732721899,10.1739433511714,10.055657021408,10.0514516488887,10.1591742180835,10.371403950382,10.5690729988039,10.6702298279112,10.6430608391294,10.493744256833,10.2899028056858,10.1554832004738,10.1647883556875,16.7820622969242,16.8130427106248,17.0697012439731,17.4518371617072,17.7307815832307,17.7820926231948,17.5936695213565,17.2248868949142,16.8261332889792,16.6136919300529,16.6059159120573,16.7979052756814,17.1759338600906,17.5282383822965,17.7084738735724,17.6593092394731,17.3921958377988,17.0273792924045,16.7875176744092,16.8018891752379,16.7558362136885,13.9808090186077,11.6163348079853,10.047470131786,9.20970837483577,9.03629113121272,9.51999814755163,10.6975367939732,12.6369123825548,15.2088544043171,18.0741166447351,21.769088439217,25.6707055393599,28.7703790917539,30.2797042933972,29.8167903855942,27.4675713375245,23.8516108300589,19.9612777451844,16.7558362295636,16.690624916476,11.6007789756228,7.82975423473596,5.56273189897857,4.45715464765433,4.23511634491642,4.84143699500066,6.4637233951579,9.45788053026006,13.9144036723751,19.5770085926544,26.9485216114765,34.8170815548933,41.1795623312228,44.2773031880211,43.325435473786,38.4903026160626,31.0914092073449,23.2268691033706,16.6906249477491,16.6530248550298,9.86877988460186,5.53905198316434,3.26280157483905,2.27470902437713,2.0879837993013,2.60050638718772,4.12686017092802,7.35491562981911,12.8991962823249,20.8835516570816,31.3928005632052,42.6043993726075,51.5748429395976,55.7797462352086,54.457586656652,47.7245598148978,37.2375029762808,26.0164630758988,16.6530248992635,16.6265938279156,8.89149429730572,4.41191899826951,2.29696945647467,1.46939553231115,1.32943686183725,1.74643232427601,3.0993236278253,6.25969997226939,12.3060447522919,21.7313281891125,34.196299721832,47.327329341874,57.5258395419713,62.0023263402325,60.57530973129,53.0632099143766,40.9646239121162,27.7510482960931,16.6265938806166,16.5981715151447,8.68735919764799,4.18504302274905,2.12096004475616,1.3510916990588,1.23475323047454,1.63415640557528,2.94033829398644,6.05993581712468,12.1969102157667,21.944728253778,34.8261358268797,48.3187161833331,58.6609378666335,63.1111701778877,61.6924569797614,54.1084941988795,41.7030684784496,28.0825871675287,16.5981715707011,16.5681190596408,9.251878550748,4.79395138946073,2.6009705773433,1.72894364074431,1.59571101980073,2.08615954305113,3.53353926296266,6.71990933656001,12.5847807068378,21.4757549560644,33.1740912608486,45.5695618476289,55.293877445007,59.6581771069685,58.190950385106,50.8745131998564,39.3688143337184,26.9603637326615,16.5681191118155,16.55031030704,10.5808726354223,6.44015462894999,4.1232428540747,3.09060720576637,2.92242937224248,3.52936722300855,5.15540436506019,8.31820424766183,13.4401136048212,20.4171227760977,29.5015063243139,39.2524274263861,47.0694998879316,50.6987936509114,49.3824412005041,43.3764110086277,34.2807796720691,24.6084296899204,16.5503103493451,16.5635550168305,12.6155505406984,9.4419584363609,7.40471506563118,6.3762923945323,6.19234065598199,6.81358076890967,8.33562353751845,10.9606900185876,14.6629487472222,19.0017708320252,24.5465826527996,30.4830001921725,35.2416729304747,37.4718533810381,36.6375238847007,32.9640113127638,27.4354964020982,21.503721066647,16.5635550303654,16.5920685205876,15.2187640370286,14.0601693971246,13.298627604911,12.8935920061256,12.8191808124563,13.0700646283483,13.660359239777,14.6663583296378,16.0548035151825,17.5076422730189,19.3341649306977,21.3487738308817,22.9576587009249,23.7082620504946,23.4264886252796,22.1853293044257,20.2872922821593,18.2337241225689,16.5920685296432,16.5915580987644,18.2127949811469,20.243107391526,22.1170258669087,23.34072299557,23.6176813949781,22.8766814852112,21.2886251317133,19.2987909384369,17.4968046450401,16.06301937795,14.6920494546582,13.7009731066136,13.120942523402,12.8748105810508,12.9477327628914,13.3449998322526,14.0934255245611,15.2347780981571,16.5915580893041,16.5618353550496,21.4801980535945,27.3857790518992,32.8856461541452,36.5375718933329,37.3652148271914,35.1462400429846,30.4132610428443,24.5069088844607,18.9888585519121,14.6687820409646,10.9778656930943,8.35815488496389,6.83808493902136,6.21749733387818,6.40176527645695,7.42963164846744,9.46352112908109,12.6282936210062,16.561835327635,16.5475159304544,24.5863246167206,34.2358696014521,43.3085049487145,49.298546194519,50.609779859571,46.9890490176139,39.1925504413908,29.4669337606745,20.4052742067769,13.4440347560601,8.32851826794769,5.16614034640359,3.53899020634951,2.9312864610072,3.09979746413298,4.13389969957216,6.45200408406922,10.5896742679772,16.5475158878831,16.5655772167902,26.944957831853,39.3393123179658,50.8332422229768,58.1436467614165,59.609676055385,55.2502932021501,45.535751891296,33.1533005853453,21.4684747614894,12.587002640604,6.72499594352541,3.53784312393944,2.08934347894462,1.59845827788322,1.73176389109738,2.60471936008529,4.79920306601649,9.2565850663612,16.5655771906185,16.5970074566724,28.0780060679164,41.6951697306523,54.098126197543,61.6827274873472,63.1033035535124,58.6558942153761,48.314153387293,34.8233399984163,21.9440791762028,12.1975155920458,6.0608496387691,2.94106726712033,1.63452013114062,1.23497380319048,1.35129480761614,2.12136658481088,4.1859236045625,8.68825643491418,16.5970074010628,16.6271696522913,27.75873054644,40.9803273164285,53.0847524183539,60.6009219987939,62.0292497512201,57.5535680849321,47.3502563782678,34.2111220080978,21.7372647006513,12.3048807490724,6.25653810563983,3.09707308573809,1.74500973155803,1.32844262734822,1.46803376077395,2.29509944621056,4.40921847082283,8.8888137823739,16.6271695996668,16.6546761803916,26.0346019759033,37.2758664999999,47.7809671222644,54.5261440998825,55.8486616110391,51.6372367371452,42.6519922762586,31.4214971462443,20.8943204749091,12.8959510480153,7.34671001572631,4.119471562075,2.59483626198195,2.08308540430765,2.269481398176,3.25648846787807,5.531500395737,9.86227831525541,16.6546761363616,16.6914208212631,23.2495172269607,31.1439625558513,38.5709872028243,43.424567509831,44.3778942646812,41.2666981495115,34.879631171101,26.9839409527017,19.5896831668053,13.9089320781528,9.44334859272385,6.44677206079284,4.82514236824103,4.21968922839017,4.44173023761452,5.54682090581166,7.81450093750311,11.5896404075941,16.6914207902983,16.7526458607948,19.9809879296293,23.9016882507323,27.5473987022908,29.9156983007333,30.3811052735577,28.8577697703228,25.7327344073512,21.8035336091564,18.0855240338651,15.2021764659667,12.6154903591236,10.6657777830994,9.48280834224365,8.99731466833882,9.17176425149338,10.0133276957576,11.5888931032291,13.9629880627338,16.7526458451057,16.7820622852095,16.8130427510716,17.0697013466623,17.4518373144701,17.7307817673473,17.7820928172488,17.5936697021152,17.2248870381376,16.8261333723873,16.6136919363786,16.6059158560002,16.7979051488214,17.1759336731429,17.5282381574462,17.7084737543382,17.6593090107604,17.3921956404476,17.0273791452854,16.7875175897764,16.8018891653055,20.8208640643264,20.8600384393413,21.218859605768,21.74737706823,22.1313832508188,22.2025835434511,21.9441459245803,21.4382759858508,20.8906827163014,20.5976873939241,20.5866894808891,20.849588865993,21.3662298846564,21.847672205098,22.0940087909475,22.0259709582129,21.6595483293736,21.1569811351056,20.8255202939939,20.841233442351,20.7840010458233,17.3767948301798,14.456931590038,12.5307776543985,11.5050023411311,11.2932239020692,11.886358550493,13.3306285879038,15.7168344215952,18.8818874436091,22.3826626723935,26.9770823145449,31.870591647239,35.7725422180106,37.6773404093263,37.0962740278531,34.1381293622823,29.592328144203,24.7285373996054,20.7840010665211,20.7063232833143,14.43175807533,9.75075395768073,6.93502539223028,5.56232788371527,5.28733963692737,6.04157298951135,8.05744077055322,11.7762614137187,17.2899165966363,24.2435533525707,33.356253309558,43.1164441542279,51.0188876567267,54.8703908496306,53.6955251676735,47.6942574995286,38.5087607694627,28.7605524946048,20.7063233242529,20.6697617713113,12.2816645665174,6.89931360885331,4.06435352945018,2.83313633078679,2.60081063112581,3.24006645064452,5.14268849865948,9.16180754068905,16.0359421886947,25.8744354031524,38.8205378125681,52.6169051547174,63.6317305347634,68.7810895741887,67.1805824477793,58.9328404476824,46.0367756682589,32.2107123237673,20.6697618294744,20.645390446224,11.0673290555756,5.49579181545367,2.86098370950037,1.82964393961809,1.65561401501519,2.17476092710419,3.86138068537184,7.79747680465619,15.3026295062464,26.9380384566416,42.2631525640805,58.3262133465224,70.7128928806049,76.0755486437311,74.3931057944401,65.3217501452349,50.5673759591301,34.3548907752657,20.6453905160385,20.6112177558356,10.814276075613,5.2138163576226,2.64267804329254,1.68435620941784,1.54014235361066,2.03635843306383,3.66313171205679,7.54723157789102,15.1672578647989,27.2085860275112,43.0429628396106,59.5248075899781,72.0393710453577,77.323524247079,75.6538648297477,66.5480534775279,51.4549993521723,34.7616563944159,20.6112178303817,20.5664424210197,11.516733216775,5.97183900204056,3.23883334392267,2.15156657128147,1.98544146175658,2.59669455064307,4.40033486284557,8.367204645413,15.646298453419,26.623426966759,41.02796117369,56.2368605120718,68.1088601395878,73.3785800173706,71.6020540571134,62.701048063682,48.618619081022,33.3709985383767,20.5664424922272,20.5318567159749,13.1671402884569,8.02186284245486,5.13813634985553,3.85202259405189,3.64192299906166,4.39681944404907,6.42025329680918,10.3541994556775,16.7041164259401,25.301083815574,36.5212361884162,48.5747082243889,58.2294656757294,62.695516747222,61.0652434654425,53.6487006375366,42.4102091557695,30.461621259219,20.5318567746393,20.537876678258,15.6856186502351,11.7545460099424,9.23186200152435,7.95859980619834,7.73006626723694,8.49787069305477,10.3808578627338,13.6341040392647,18.2162773639281,23.5419490088918,30.418977601498,37.8267427531162,43.7760201632194,46.5626515837789,45.5142702591991,40.9160046334811,34.0097712208103,26.6259596727259,20.5378766972008,20.5689203038732,18.8935196711886,17.4839970482662,16.5722071282501,16.0923503334001,16.0045868345506,16.3010898285815,17.0029138187093,18.2201405131232,19.9266175732133,21.7040462749898,23.9880697756404,26.5504781666151,28.6067469888772,29.5671334011842,29.2048934545438,27.6160275148598,25.1962420733186,22.5974548037996,20.5689203166646,20.5682901816383,22.5673415970945,25.1314960595475,27.5155731341366,29.0788217854267,29.4340760360294,28.4878746800986,26.4624340101643,23.9369374600699,21.6887652856033,19.9383094521603,18.2575208958034,17.062838332853,16.3764071124222,16.0869087619277,16.1723762476024,16.6406356003407,17.532725710818,18.9165715180316,20.5682901685654,20.5354369243254,26.5917403216101,33.9371205767629,40.8018287745497,45.3691865332343,46.4082114548084,43.6377592159833,37.725630176543,30.3615675525658,23.5235052598698,18.2249133964645,13.659418644444,10.4143188175647,8.53438578161953,7.76753717385237,7.99643344333951,9.26871090259382,11.7862282195413,15.704202763484,20.535436886208,20.527849458965,30.429296499629,42.3451563636588,53.5518417224876,60.9473424870411,62.5711734428594,58.1160860245364,48.4891918218568,36.4712002004369,25.2839064545625,16.7101132186661,10.3695430154896,6.43625881750538,4.41120797160717,3.65519120495537,3.8657769953895,5.15397721716781,8.0393217001521,13.1801239561515,20.5278494001203,20.562796743287,33.3484777665556,48.5764268674311,62.6443782384826,71.540299132751,73.3165055021106,68.0511007950205,56.1898131377849,40.9979554705266,26.6127363330659,15.6497138004802,8.37481290906654,4.40675349246473,2.60142341972663,1.98947553360412,2.15572360572751,3.24437801082362,5.97957749837476,11.5237302971406,20.5627967076241,20.6095818414622,34.7550387291681,51.4438317139057,66.5342643139519,75.6420950704199,77.3147341271636,72.0335613919689,59.518624098939,43.0388889042162,27.207550808107,15.1681564285958,7.54860859740114,3.66421729508743,2.03690456154859,1.5404695041155,1.68467402631116,2.6432972693661,5.21511578813083,10.8156266949852,20.6095817668714,20.6462709123658,34.3662170917321,50.5895829992143,65.3501604085133,74.4243547222826,76.1078126581394,70.7487293924522,58.3580058969095,42.2845722963819,26.9467031188484,15.3008289833845,7.79280597978871,3.85805119896823,2.1726682762408,1.65415447346599,1.82765762991782,2.85820669148696,5.49175293971118,11.0633116943584,20.6462708425964,20.6721776854718,32.2372273064872,46.0916210667581,59.0114764845274,67.2737431868436,68.8741318272528,63.7179597830401,52.684581125348,38.8622686937952,25.8901869449248,16.0310572968592,9.14971657418371,5.13173984210094,3.23159275155147,2.5934797221083,2.82532861857818,4.05493000950773,6.88805516584608,12.2719548214206,20.6721776274431,20.7075276818123,28.7938779070973,38.5846473561116,47.8101751815174,53.8372887332818,55.0142323144121,51.144239097914,43.2071655473364,33.4079689420417,24.2619675131115,17.2818558694639,11.7549507198386,8.03241551604319,6.01735277857793,5.26430656048007,5.5392714216029,6.91129881864432,9.72810999322224,14.4154264568745,20.7075276410842,20.7798987462338,24.7572701426494,29.6657506591921,34.2545878402344,37.2407356804764,37.8255562166341,35.9004961454693,31.9615253221287,27.027361843604,22.3989729787983,18.8722531551938,15.6855823869228,13.283845243676,11.8313406877135,11.2354174526926,11.4486413647342,12.4801016623954,14.4166818994121,17.3511926991637,20.7798987255652,20.8208640527773,20.8600385024274,21.2188597512614,21.7473772791581,22.1313835030716,22.2025838116277,21.9441461809119,21.4382761980516,20.890682848409,20.5976874094175,20.5866894140691,20.8495886981717,21.3662296365829,21.8476719124934,22.0940086384777,22.0259706687859,21.6595480810566,21.1569809522141,20.8255201936848,20.841233435854,23.0512553133929,23.1041812132298,23.5760188227207,24.252319266065,24.7372276562486,24.8276705885797,24.5029108583367,23.8648412626676,23.1684813390259,22.7907774379265,22.7766684119714,23.1144513944652,23.769354972005,24.3749306252863,24.6836301356746,24.5973878034091,24.135948738737,23.4946048560543,23.0615653795661,23.0696732516447,23.006634225226,19.2792525553193,16.0771154110906,13.981718472927,12.86770541065,12.6376138314374,13.282286767292,14.8517481583492,17.4552959773709,20.92189022853,24.7409481480454,29.8715619157631,35.3906620128239,39.8087869842975,41.9705609497056,41.3128084405339,37.9609500976389,32.8202505820073,27.3533906274685,23.0066342517363,22.9303686436794,16.026655445365,10.8465442860417,7.72953786774572,6.20980750848429,5.90583681511051,6.74244495269126,8.97482151471623,13.0908492220005,19.1769256075655,26.8088853029729,36.9013105542977,47.7524953769125,56.5512353662509,60.8423789533086,59.5380649455828,52.8578953915312,42.6381488093815,31.810889964173,22.9303686962018,22.9096324939935,13.6454167805334,7.67279254522618,4.52126291535983,3.15194162036643,2.89386398100881,3.60568998021151,5.72232773632561,10.1879805767824,17.798140127773,28.6373604286382,42.9089000381167,58.102858095098,70.2070891172972,75.8513171999086,74.1157961717122,65.0689398321977,50.8771918385893,35.6323748353687,22.9096325695368,22.8981615525306,12.2993978073438,6.11025005430109,3.17916853675431,2.03180632396303,1.83868911147591,2.41572149619375,4.29299465231079,8.67038236303952,16.9924235021211,29.8352350276242,46.6868909082982,64.2582185774802,77.7075247022645,83.4427568491968,81.6817476554063,71.8876733276027,55.797272072573,38.0065725716404,22.8981616451917,22.8630408038494,12.0190710617079,5.7968876165656,2.93703696317094,1.87221254650911,1.71262406197134,2.26282020837076,4.07165376980251,8.3905762091617,16.843606850318,30.1421549617182,47.5493714757038,65.5510947503357,79.0846333542135,84.6758038499714,82.925985262544,73.1658502241054,56.7507223889716,38.454871237959,22.863040905816,22.8015962516719,12.798095913883,6.64015447187221,3.59957993484127,2.3893603256004,2.20437397572872,2.884458123224,4.89094680296558,9.30052616753736,17.3695761134048,29.4852928388172,45.3523251392238,62.045700243725,75.0158190605995,80.7049446884779,78.7795923136189,69.0939489261707,53.6760704302257,36.9137323926031,22.8015963530787,22.7421601935993,14.6260473875971,8.92176494089087,5.72067642451287,4.29155179922831,4.0573140671118,4.89519442309219,7.14154262929477,11.5067769796273,18.5327395097709,28.0008131706083,40.4075268283425,53.7489700941953,64.4306332531756,69.358329127747,67.55249386433,59.3497283184168,46.9118698232655,33.6923430296375,22.7421602813206,22.7298178659859,17.4078242083424,13.0708110009035,10.2919628083184,8.88888778524758,8.6363538559977,9.48184479402497,11.5551214179448,15.1431700828253,20.1977323564344,26.0376941925243,33.6856175944525,41.9822867500864,48.6602745963072,51.7898243313999,50.6093941999152,45.4418651843722,37.697067684259,29.4484988149052,22.7298178957136,22.7552415732777,20.9377138632733,19.4278127325076,18.4756521235111,17.9813444909437,17.8919113323015,18.1977316333908,18.9244151071126,20.2140517230822,22.0711580354217,24.0131607710553,26.5875026562813,29.5350183394311,31.9105725954405,33.0212796401007,32.6011380569397,30.7635199237352,27.975998862647,25.0048816808789,22.7552415943164,22.7545622269691,24.9656643352181,27.8903591681662,30.6303400474345,32.4341549223116,32.8452128501455,31.7534163801997,29.4189122833003,26.5208141992844,23.9936846461999,22.0862234315033,20.2630652715863,19.0039155549208,18.2979201673165,18.0013675756033,18.0876275730611,18.5664041198331,19.4920925185599,20.9677004725089,22.7545622058565,22.7267060937836,29.4035316837305,37.6010452106736,45.2912429938179,50.4186164468208,51.5872766887078,48.479122037991,41.8498952467151,33.6106762432266,26.0139591329044,20.2092553994312,15.1766880828291,11.5997189707737,9.53066046661894,8.68642003195749,8.93929317694857,10.3408401205551,13.1125918547957,17.4322199653581,22.7267060342339,22.7370189005278,33.6497672222529,46.8264749036502,59.2238128086413,67.4008434405236,69.1992063383172,64.2847015038498,53.6380187824049,40.3421282283849,27.9784336854404,18.5409502226823,11.5272313656652,7.16292432637393,4.91447103428728,4.07512179096118,4.30999345907443,5.74176705399139,8.94480458543972,14.6432211809296,22.7370188126993,22.7969355576202,36.8841661058023,53.6213082425824,69.0224975383054,78.7049955333872,80.6313070433458,74.9448983787072,61.9856099646929,45.3130663849917,29.4711939851693,17.3742704612536,9.3107169144872,4.89951979958946,2.8907514789757,2.20969122475372,2.39486092763621,3.60693032975456,6.65036041364143,12.8073936972894,22.7969355068709,22.8609978158517,38.446356293856,56.736488287238,73.1490894790461,82.9129086839935,84.6669398473448,79.0783855733729,65.5431824712548,47.5438695922913,30.1406500770858,16.8448150093843,8.39244510560327,4.07310608327109,2.26355752332117,1.71306100312186,1.87265559726422,2.93787877752513,5.79859707004613,12.0208677479153,22.8609977138225,22.899361545273,38.0216693325611,55.8260540613184,71.9224533531792,81.717033169455,83.4783383965186,77.7502730445764,64.2985033693652,46.7147833400886,29.8465242513911,16.9899497774215,8.66421790420702,4.28858344878102,2.41295805107754,1.83676072491105,2.02920496173335,3.17547273183699,6.1048382720384,12.293997314442,22.8993614526028,22.9127961724115,35.6673190229701,50.9484659945324,65.169434725353,74.2325355145066,75.9672567827523,70.3165458100039,58.1905313621047,42.9637019455964,28.6580134415083,17.7915553402456,10.1720332382709,5.70780144293566,3.59434634352084,2.8840311899975,3.14149525065003,4.50866448559502,7.65775775199202,13.632429622132,22.9127960969234,22.9320202813132,31.8549949689105,42.73722093704,53.0089018952925,59.7223523334909,61.0296060647206,56.7151861831422,47.8718274711807,36.9695460581967,26.8329782413455,19.1662293900459,13.0628159695947,8.94171034326839,6.71017573112145,5.87500956344902,6.17891214047425,7.69781190186586,10.8164010386189,16.0051312194292,22.9320202289081,23.0019656395539,27.3916431878478,32.9171829881073,38.1142187624859,41.5031987510447,42.1661748650274,39.9779878431095,35.5110866386262,29.9379158788506,24.7620589165305,20.9093047080407,17.414253483057,14.7898599440722,13.2092233040517,12.5606506322296,12.792549041813,13.9141822939885,16.0240020529098,19.2462223418588,23.0019656129192,23.0512552975051,23.1041813053282,23.5760190256846,24.252319555815,24.7372280003909,24.8276709564432,24.5029112189477,23.8648415792771,23.1684815570345,22.7907774712915,22.776668317426,23.1144511489928,23.7693546277385,24.374930236281,24.6836299370829,24.597387429127,24.1359484182994,23.4946046221426,23.0615652565592,23.0696732528169,24.1153032957209,24.2072453693902,24.828626460429,25.6625371566697,26.2457796932535,26.3556056272846,25.9683879352648,25.1979765149758,24.3336071798486,23.8377381164991,23.8203347025717,24.2659017005802,25.078142562141,25.8079927631249,26.1751949552898,26.070628363229,25.5167654496904,24.7270503710751,24.1562336738233,24.1310247332805,24.0705971394974,20.2294855243418,16.9400886625581,14.7992232127168,13.6582447743272,13.421979741119,14.0834334614544,15.6881564377801,18.3500651224546,21.9145655628204,25.8635030847195,31.3389489347776,37.276172119252,42.0406935947914,44.374916731116,43.6646894089171,40.0479249459386,34.5078635333434,28.6378118952579,24.0705971587576,24.0179442018136,16.8346447088307,11.4266680064999,8.16780520211295,6.57603672572307,6.25755190430736,7.13566038458762,9.47216662187996,13.7708817672672,20.1142229726618,28.059562352607,38.6902964227488,50.1575465509247,59.4657362651419,64.0048764261406,62.625722130923,55.5591557576606,44.7566453205182,33.3220876451567,24.0179442578181,24.0342621646928,14.3446377520928,8.0762806280929,4.76259581489506,3.32177823229088,3.0501899103097,3.80020349987789,6.027630839868,10.719720301664,18.690867069651,30.0172755383516,44.9517752524348,60.8297051579008,73.4436830153895,79.3068906988051,77.5182635681145,68.1039450129286,53.293376171732,37.3426730414852,24.034262260677,24.0492203418966,12.9359478497011,6.42610645114235,3.3394122182817,2.13154775587626,1.92887455413693,2.5360614172245,4.51357727776813,9.12193008342059,17.8611917849653,31.3028921688107,48.8774420522322,67.0950933848771,80.9231204107537,86.7248441108968,84.9945466120696,74.9768000552925,58.3498381658289,39.8389462178667,24.049220467811,24.0177524930282,12.6421252778229,6.0957940215441,3.084040902126,1.96407533809456,1.79668787467842,2.37414602229647,4.27818331435614,8.82576281820561,17.7084518667452,31.6330472336222,49.7792704254699,68.4116015117727,82.2677968988035,87.8519749983159,86.11992782952,76.2284856849779,59.3197967497721,40.3098637506101,24.0177526357856,23.9350725183135,13.4569483451631,6.98552086667966,3.7846418073156,2.51005837000274,2.31510916177692,3.03109032247534,5.14302195856672,9.7818134401782,18.2503874954571,30.9287184717328,47.5102392167954,64.8829710457824,78.3163729281681,84.1359137422613,82.1576994858216,72.1730708733286,56.1722773648528,38.6916112295724,23.9350726655581,23.8368921210454,15.3678969540049,9.39290787565755,6.03438825085191,4.53210686192141,4.2851669413343,5.16549786072854,7.52376844124439,12.1010192840737,19.4497711775252,29.3375198086941,42.3703264897052,56.38929068881,67.6071661416249,72.7728133236314,70.8795201176538,62.2704311785477,49.1999999638905,35.3061461345521,23.8368922590874,23.7867929699194,18.2706096345756,13.7655110737105,10.8797937912324,9.41835851199125,9.15453223676665,10.0356604542482,12.1912380986111,15.9184642365442,21.1711564911346,27.2445275490548,35.3485803501156,44.1938784256837,51.3245212183049,54.6694990542405,53.4075469846686,47.8848064920035,39.6208252508225,30.8435629843803,23.7867930234817,23.7920978479626,21.9457781451567,20.4558975180804,19.5403755944986,19.0683421358448,18.9833284942896,19.2767789046024,19.9726993847873,21.2305241450455,23.1044703605999,25.117576867386,27.9124398139038,31.1641061245937,33.7839566852122,35.0091761111419,34.5462511274994,32.5198036054346,29.4495564441488,26.182961280004,23.7920978916343,23.7913285481828,26.1340420584611,29.3419465382323,32.3527230251093,34.3371951816615,34.7889980476295,33.5875136237564,31.0190353844605,27.829588420339,25.0937048238548,23.1230416019789,21.291683098188,20.0724907185589,19.4025551299549,19.1206038731646,19.2015533100288,19.6541109557493,20.5363383655887,21.9829934306243,23.7913285043385,23.7828160650835,30.787083899407,39.5001556046269,47.6962326771436,53.1696284609819,54.4176367334134,51.0995307016073,44.0294274828707,35.2555216795627,27.2152738599521,21.1856559411928,15.9605351219989,12.2474535189004,10.0972188016627,9.21757748290645,9.4816961347586,10.9410395193462,13.8176631314673,18.3009421661387,23.7828159576199,23.8304649344619,35.2527799450481,49.0932966260794,62.1143022563345,70.6930709179697,72.5780954930413,67.4280047862886,56.2523469059126,42.2891128597378,29.3097315718346,19.4602568920264,12.1268005711881,7.55080668091844,5.18991236525185,4.30773465041213,4.55545991617233,6.06094867901017,9.42167174497123,15.3893202744722,23.8304647961981,23.9293501389097,38.6548253110058,56.1046216760367,72.0866543574429,82.0705755100174,84.051125212181,78.2320090487752,64.8093251080743,47.461346392124,30.9110386106858,18.2563926193651,9.79470718349512,5.15388043879173,3.0390571554782,2.32179531047793,2.51699802284707,3.79390116163669,6.99826413671035,13.4685659844574,23.9293500652281,24.0153339599346,40.2995630720344,59.3026239178593,76.2089690085982,86.1059013653712,87.8436331512962,82.2612759993631,68.4016999941532,49.7721012631862,31.6309538804884,17.7099848619388,8.82816584380336,4.28002981718626,2.37509787647559,1.79725262859385,1.96466998705928,3.085133575206,6.09792228360951,12.6443534491995,24.015333817058,24.0508146431857,39.8580806550935,58.385588386716,75.0181171569739,85.0332231858,86.7626684379632,80.9723235324909,67.1438876489077,48.9118542972288,31.3168053369741,17.8580563103431,9.11424972134843,4.50802534900401,2.53257040172501,1.92641962344978,2.12828660515922,3.33473187602421,6.41923886916646,12.9291047487428,24.0508145171431,24.0383056384481,37.3864431390167,53.3816154801586,68.2269056985938,77.6590977179748,79.4461198150394,73.5769628939843,60.9380845234765,45.0201696138175,30.0430315504472,18.6826021039878,10.6998487885438,6.00937728433479,3.78581597791183,3.03769197505228,3.30853188161362,4.74663299459274,8.05727472315084,14.3282750402453,24.038305542371,24.0202768564884,33.3775170326243,44.8795561657931,55.74596991644,62.8534360558276,64.2367133960934,59.6697208126921,50.3068498452745,38.7760099765206,28.089744873105,20.1008971212105,13.7360015698311,9.43073234581246,7.09506700205399,6.21864928901108,6.53699175889818,8.12771570026406,11.3886827106909,16.8077880043844,24.0202768005982,24.0658505233129,28.6867889836249,34.629226564475,40.2389927321591,43.9021454658294,44.6192397764954,42.2525377931055,37.4274344891219,31.4224327404734,25.8898291872306,21.898961016146,18.2989065111388,15.6107194905381,13.9918462639855,13.3253633609126,13.5637568982866,14.7142384181639,16.8735959633705,20.1890168591624,24.065850504426,24.1153032517642,24.2072454962822,24.8286267523532,25.6625375641309,26.2457801657211,26.3556061243631,25.9683884222449,25.1979769604748,24.3336075312567,23.8377381880737,23.8203345408477,24.2659013306555,25.0781420974145,25.8079922553459,26.1751946955964,26.0706278672026,25.5167650176955,24.7270500538749,24.1562335211501,24.1310247648459,24.5219993255414,24.6946175400008,25.4810523799815,26.4518018704385,27.1160954842,27.243002513055,26.8072112739668,25.9262441152658,24.9049103580774,24.2514806044852,24.2301057537469,24.8227174038628,25.7816555905162,26.6141382792869,27.0260934593803,26.9055840485382,26.2765227338028,25.3590628852446,24.6342584597822,24.5346168743277,24.4925899827479,20.6575474118269,17.389439215743,15.2566348804643,14.1143548888549,13.8773901958254,14.5420910947142,16.1451587290072,18.7910099546185,22.3267723412025,26.3208869993124,32.0504853514972,38.268703842536,43.2627439447258,45.7096308272945,44.9637135016625,41.1717391081105,35.3687592800115,29.2163158889729,24.4925899766442,24.4919813074806,17.2127149577761,11.7255674613678,8.40726438835232,6.78170518247568,6.45593300252919,7.35444149113292,9.73791632043279,14.1073561402533,20.5328991752838,28.6165187274567,39.5550575286139,51.37031629142,60.9664282896673,65.6451078763888,64.2256218988675,56.9409302405828,45.8119727222155,34.0298964272974,24.4919813993058,24.561857624215,14.6822133455435,8.27863185169482,4.88680006764624,3.41036775561486,3.13171184960942,3.90108044193883,6.18303916503413,10.9823470282006,19.1135173292798,30.6687236863201,45.9264087669305,62.1171990406812,74.9370012591492,80.869312216337,79.0698035712797,69.5185367684841,54.444047649748,38.1565393594779,24.5618577937441,24.6103285401166,13.2485554786028,6.57890345600607,3.4135236598024,2.17488623832975,1.96728433680864,2.59010202442613,4.61860688848306,9.34355816660561,18.2868342312086,32.0143055456457,49.9068846181953,68.340024119898,82.1940432103205,87.9001017566825,86.2582239615264,76.2760932083067,59.5173540907635,40.7159516391321,24.6103287480165,24.5853122980687,12.9489137112824,6.23889231159886,3.14919872030991,2.0006011427754,1.82884788104902,2.4207251902079,4.3736219517436,9.03796297620564,18.134896911081,32.3589772518082,50.824845804508,69.6462997621136,83.4652596324369,88.8677853920169,87.2084720628476,77.4667151874726,60.4824260616071,41.2003018349247,24.5853125187459,24.4807952964396,13.7773508477289,7.15467763985499,3.87408547710017,2.567208607777,2.36720651099261,3.10149695507305,5.26563158836636,10.0166909610022,18.6756860168585,31.6215417745647,48.5382108086612,66.180747718196,79.7458394029064,85.5475544961682,83.5705596803835,73.5411827778182,57.3407598737404,39.5452478806734,24.4807955127768,24.3355488178738,15.7193655449598,9.63045949088888,6.19932507060501,4.66124396295178,4.40795999413394,5.30936222060514,7.72069671240919,12.3914098960383,19.8714484899595,29.9553797809816,43.3276303053163,57.6952466164475,69.1834125088219,74.4623781387779,72.5285702591831,63.7199505217962,50.3241105688168,36.0736270256562,24.3355490228972,24.2261960506372,18.6653338028772,14.1223425163457,11.2016133042281,9.71570073403006,9.44669870156972,10.3431216150002,12.5290202232296,16.2949184675249,21.5877565387341,27.765997928485,36.1702229347951,45.3553666010704,52.7687585380716,56.2486485967839,54.9356412276123,49.1902899988889,40.6020477889496,31.4894176989575,24.2261961493251,24.1861678101391,22.3924856551285,20.9867179554556,20.1306974203093,19.6877764164907,19.607180607457,19.8830986608981,20.534420738737,21.7195128233732,23.5169160571806,25.5626598558352,28.5609879521234,32.0445680890014,34.8423782437352,36.1510468781373,35.6593224006854,33.4971948301472,30.2176855682246,26.7073084752698,24.1861679147248,24.1849062444086,26.6476950932139,30.0874259711641,33.2957208268804,35.4077779248644,35.8864393728846,34.6064009262296,31.8702431866543,28.4612903849299,25.5336217380195,23.5393847737885,21.793367113024,20.6546418967564,20.03442897145,19.7722052100675,19.8479512019079,20.2676146217996,21.0837147654485,22.4376042932032,24.1849061412217,24.2207271146817,31.4205709605014,40.4559081937053,48.9629364935643,54.6497624257098,55.9467016820075,52.4992570224939,45.1583006882138,36.0584383105202,27.7306211512383,21.6052400188369,16.3458536347522,12.5970019553642,10.4174046839852,9.5226343199731,9.79191434940744,11.2752982832168,14.1850441791017,18.7018154797964,24.2207269172266,24.3275185435235,36.0089730934719,50.1953256063115,63.5326502877152,72.3065129261646,74.2315596599638,68.9705778938699,57.531796164652,43.2301543275258,29.9218569081005,19.8841572814205,12.4227105831415,7.75355932443881,5.33898448944366,4.43530442913933,4.68952576365935,6.23143543962886,9.66507545206287,15.7451024435346,24.3275183388873,24.4739293919082,39.5010901933916,57.2598461942746,73.4393425372502,83.4705682290258,85.4512227230644,79.6473527997808,66.0929632897918,48.4793299196553,31.6000921838205,18.6829765757744,10.0323971354979,5.27891361406667,3.11125644941327,2.37535805812373,2.575677988645,3.88534714881734,7.17003722471168,13.791300294078,24.4739292838658,24.5825453933169,41.1883135370196,60.4624372491749,77.4446557037617,87.193832513182,88.8605781622503,83.4583943562518,69.6340877795017,50.8157916061688,32.3561862728928,18.136749777446,9.04093435800053,4.37590333723372,2.42194624393829,1.82961357293285,2.00142065833439,3.1505908579626,6.2414553409108,12.9515659223758,24.5825451726301,24.6124131697278,40.7393461086089,59.5604595604032,76.3244323396075,86.3003165735179,87.9396355351499,82.2495713493749,68.3974464880523,49.9478670679507,32.030846260681,18.2830615852846,9.33432943002862,4.61183689272747,2.58577395707172,1.96416439764918,2.17084974712247,3.40775337825944,6.57048914812021,13.24023412889,24.6124129615623,24.5669827645766,38.2095207422565,54.5497710533109,69.6644868284913,79.235202023774,81.0324282593455,75.0948907298759,62.2470280289423,46.0088490631991,30.6998114614157,19.1036624095401,10.9584576323086,6.16095545750749,3.88357958004411,3.11649557429961,3.39424662610287,4.86734162148562,8.25548185302188,14.6624111844497,24.5669825943468,24.4953861759599,34.0971879794248,45.9592973666643,57.164171064889,64.4974178778115,65.9223390948945,61.211369532799,51.550501150071,39.658997213552,28.6534022934944,20.5171266119573,14.0654486042135,9.6880499485648,7.30551037936073,6.40899627434197,6.73452256236191,8.35872320091122,11.6795144587726,17.1803963207414,24.4953860828517,24.4886293740603,29.2773747683063,35.5151229238328,41.4010833448738,45.2487806335064,46.0033005599249,43.517886590034,38.4515067118247,32.1519890681753,26.3533906243239,22.3081532961912,18.7293372801158,16.0520050570555,14.4319452413686,13.7612171011205,14.0006335272956,15.1541788917383,17.3093147737623,20.6093374473313,24.488629379851,24.5219992037264,24.694617752082,25.4810528294327,26.4518024405359,27.1160961100666,27.2430031502796,26.8072118830909,25.9262446639441,24.9049108364971,24.2514807153262,24.2301055249367,24.8227169163298,25.7816550305464,26.6141376564483,27.0260931330759,26.9055834059119,26.276522145559,25.3590624158897,24.6342582268453,24.5346169847721,24.6412207077667,24.8927054996563,25.8022732906622,26.8635278501219,27.5801117396069,27.7188815267192,27.2533909693646,26.3019162119242,25.1698054579192,24.3938350517995,24.3684136659662,25.0732401774147,26.1329416933483,27.0281091123038,27.4661841800095,27.3350797176932,26.6595527762907,25.6606877217387,24.822959899216,24.6514840624827,24.632731835781,20.838909857142,17.6102445400265,15.4949790224329,14.3571036080623,14.1210357720791,14.7855912032157,16.3816258727989,19.0001872421131,22.4835658304946,26.4911487310959,32.3764520627602,38.7547261988136,43.8793128565752,46.3889381761582,45.6221375876635,41.7315343421064,35.7819830437235,29.4716867344271,24.6327319547362,24.6856168531029,17.3820393976741,11.8722409594269,8.5300628936351,6.88906839068134,6.55961098317062,7.4676625604367,9.87231054889697,14.2687634951489,20.7117648687417,28.8559854407772,39.9535989018723,51.9457773355033,61.6898125582817,66.4417878265534,65.0036346926002,57.6071463954664,46.3110331058322,34.3555797091446,24.6856171204002,24.7992603228988,14.8384160452745,8.37605881649183,4.94787736856984,3.45429428010334,3.17243217526797,3.95120544437721,6.25854959575085,11.107104385535,19.3065623939614,30.96693028884,46.3749497155704,62.6996017263279,75.5917686463585,81.5345138241495,79.7461056290486,70.1567685312376,54.9726056665283,38.532547509075,24.7992606361523,24.8728185502485,13.395115263305,6.64962622711499,3.44643171266885,2.19210891289602,1.98071332929554,2.6122194924462,4.66626503783595,9.44742504471782,18.4870686125243,32.3475593657148,50.3780218137286,68.8732896774376,82.6639976056755,88.248251014239,86.6707278139919,76.8071436020417,60.0390921771003,41.1225176648271,24.8728188743941,24.8534483311028,13.0930044162427,6.30386601431829,3.17648366576882,2.01282505971638,1.83904073684995,2.4388238186459,4.41547927119596,9.13627328814358,18.3359479297488,32.7000742441195,51.3035533248453,70.1714759535504,83.8778678508625,89.0985713367494,87.5132515171354,77.9511126916419,60.9996112359683,41.6154760475974,24.8534486457861,24.7347488695397,13.9262727356747,7.23319254960465,3.91486765714319,2.59236816442124,2.389869018005,3.13348001344179,5.3224176511213,10.1257035999454,18.8718062272479,31.9434143067177,49.0162248084659,66.7640339680019,80.3376945075418,86.0762537219723,84.1253039730329,74.1316777804669,57.8752272166869,39.9444620881796,24.734749155788,24.5554235321129,15.8794319763996,9.74330839495533,6.28007415973685,4.725182139005,4.46898107661043,5.38029598795133,7.81588330721439,12.5261718119912,20.0556527723316,30.2337967313953,43.7829764695788,58.3216293984654,69.9418417658342,75.2678262817058,73.3115319454125,64.4096987024541,50.8567881998088,36.4287500643936,24.5554237702779,24.3928919423216,18.841036190025,14.294756078064,11.3638438400428,9.86739352719463,9.59609004027112,10.498911754961,12.6950207341403,16.4672116386539,21.750826408415,27.9840301710137,36.5657153452403,45.935871427964,53.5073968625519,57.063586833948,55.7216494229908,49.8500868603268,41.079098118395,31.7800184499738,24.3928920365953,24.3016319820608,22.5778235913777,21.2436711358353,20.4314265673359,20.0078730519626,19.92966872294,20.1928300621647,20.8121341076582,21.9366184762459,23.6588875063849,25.7246900988189,28.8641726296224,32.4933202231493,35.3988753402583,36.7590247946093,36.2510470075779,34.0072127981258,30.5978443158665,26.9274719865286,24.3016320773966,24.2996020371143,26.8572023125902,30.4453447334887,33.7716800192466,35.9573933643893,36.450533115146,35.1240210625925,32.290495781928,28.7480072482888,25.690583885566,23.6849935886078,22.0227793659446,20.9520803916839,20.3688846342717,20.1215984720271,20.1943350432176,20.5911538954304,21.3568755070235,22.6309032210882,24.2996019596634,24.3857666282423,31.6994030284425,40.9078786476569,49.5840452817833,55.3874989045282,56.7110900134057,53.1931285844732,45.7063637703602,36.4356056158352,27.9426623347606,21.771128310116,16.526740101126,12.7743760127415,10.5854053843071,9.68435512748092,9.95595059363098,11.4496319545466,14.3678376714494,18.8836675707358,24.3857664457031,24.545974239592,36.3532340175788,50.7061242172362,64.19091249888,73.0532122869197,75.0000445406239,69.6942881324661,58.1310660989213,43.6692787222499,30.1946439959562,20.0705441849354,12.5629095262454,7.85441186253171,5.41491336034133,4.50086704057624,4.7581344730769,6.31750889969259,9.78366957937805,15.9095241361584,24.5459740039443,24.7268878359965,39.8931535115868,57.7809840441532,74.0137068591068,84.0113001277284,85.9680448293038,80.2246737701329,66.6615336836915,48.9472427706977,31.9182438642736,18.8803914973399,10.1442065791193,5.33808867983758,3.14498320727731,2.399415480959,2.60228484042467,3.92803656378268,7.25110311629848,13.9425525133493,24.726887693374,24.8503946077721,41.601883598318,60.9768296371232,77.9265139005747,87.4974031748242,89.0906863273643,83.8694714172721,70.1566933559462,51.2925219526026,32.6965532249299,18.3381098208062,9.13981745786189,4.41819985213318,2.44032521663075,1.84002108575154,2.01385911465711,3.17816984641335,6.30684954617974,13.0960854551844,24.8503942934609,24.8753948779227,41.1501884577556,60.0898087517653,76.8633168816737,86.7180927437437,88.2917948456337,82.7267905032133,68.9396126887001,50.4255120645488,32.3665837029356,18.4826120982444,9.43666982139527,4.65831688685194,2.60708574938346,1.97692098573375,2.18729433878229,3.43957612285521,6.63966981674431,13.3853182081283,24.8753945537334,24.8054688476185,38.5946736997577,55.0961911983577,70.3263659803309,79.936252125507,81.7218999518293,75.7750300465916,62.8511326799421,46.4711918876459,31.0030592660384,19.2950468718369,11.0792326893884,6.23276926229765,3.93076281668953,3.15465584923441,3.43543028991771,4.92502616498422,8.34882922210497,14.8152005508764,24.8054685334002,24.6902145625443,34.434361828176,46.4827761473057,57.8674480969023,65.3204844819224,66.7652123213487,61.9760478720248,52.1567081385964,40.0752851665624,28.8991822783442,20.6935625732808,14.219850986756,9.81421532083126,7.41075096469557,6.50502748572178,6.83411316736786,8.47337990836211,11.8183307086443,17.3444175977704,24.6902142915703,24.6299603734798,29.544804423425,35.9527356683765,41.9988101154177,45.9546187387491,46.7319158381883,44.1776279477051,38.9687291345218,32.4955195389071,26.5296102264789,22.4620751263379,18.9281729113782,16.27303398794,14.6574023056195,13.9860185878233,14.2248816996968,15.3756919785077,17.5169614362015,20.7833995384396,24.629960241478,24.6412206533702,24.892705922102,25.8022739347746,26.8635285689448,27.5801124915128,27.7188822713095,27.2533916638939,26.3019168073073,25.1698059206367,24.3938351730832,24.3684134285007,25.0732397168853,26.1329410928292,27.0281084109967,27.4661838038542,27.3350789572063,26.659552047631,25.6606870647284,24.8229594514446,24.6514841023583,24.6518142108349,24.9350904765628,25.9064945978417,27.0003403823481,27.7365700611836,27.880039238974,27.4036655593277,26.4267787719023,25.2479900410552,24.4302423661186,24.4014389319203,25.1384049133346,26.233965445303,27.1471077511278,27.592757296782,27.4583011774626,26.7688459679096,25.7464597083323,24.8582186621786,24.6641874065678,24.6566494181301,20.8938505263748,17.6798433054633,15.574288752041,14.4388212238435,14.2034159831748,14.8673175845472,16.4606730562185,19.0648539656999,22.5265410582011,26.5339739589955,32.4665586700266,38.8925000588663,44.0560125848463,46.5838587563067,45.8109377431157,41.8908722777324,35.9002029424939,29.5494453797975,24.656649670056,24.7380299761743,17.4325569435014,11.9191503313888,8.57038395161057,6.92474741418544,6.59409377675021,7.50495858697213,9.91615439087138,14.3196439938728,20.7636052530374,28.9229911751899,40.0658814124241,52.1079685245488,61.8941057187188,66.667484121943,65.2241493039375,57.7956416846138,46.450738739841,34.4505341390448,24.7380301857281,24.8682340399385,14.8856513426307,8.40660717927777,4.9674211465045,3.4684980996447,3.18572021266411,3.96740344338288,6.28242676100367,11.1457122567318,19.3641926236225,31.0538069516847,46.5035461801578,62.8627224946008,75.7704592829926,81.7118267076615,79.933409495386,70.338370532746,55.1224208666738,38.641669599521,24.8682342347219,24.9508269155284,13.4391504805772,6.67095814041251,3.45620745789337,2.19661673260521,1.98370757824555,2.61818543719136,4.68048450272251,9.4787286198594,18.5471526469039,32.4464519512334,50.5153942106983,69.0233240763975,82.7815825217454,88.3175617356902,86.7459221027971,76.9559383454823,60.1888580252103,41.2421485199933,24.9508271049021,24.933792606709,13.1357966622894,6.32271577254125,3.18419397612634,2.01553557170867,1.84145973610567,2.4436074979735,4.42738764022265,9.16513450998898,18.3958723330505,32.80221099526,51.4457643864672,70.3234071210329,83.9833187775421,89.1390264444405,87.577695505762,78.0850414258842,61.1517775460041,41.7397503322622,24.9337927848475,24.8105286293971,13.9697314614861,7.255661344593,3.92627811008643,2.59915527719503,2.3958967149827,3.14235117757575,5.33854381008112,10.1571652928566,18.9292185587588,32.0400631444982,49.1616951312206,66.9403413111216,80.5049787979983,86.2138693781168,84.2762492879253,74.306015843152,58.0372021925534,40.0657564384957,24.8105287867367,24.6196248677833,15.9254884860399,9.77517423359317,6.30311457610355,4.74335707224684,4.48633904678643,5.40047691266388,7.84300818178078,12.5644837607174,20.1075408767548,30.3171120104485,43.924806348999,58.5197148775708,70.1831835196746,75.522353389633,73.5573883321418,64.625689872758,51.0226818744195,36.5368137331305,24.6196249844652,24.4347028251648,18.8922165927225,14.3438450857075,11.4101940486429,9.91082950437255,9.63882203338103,10.5434667838063,12.7420369239639,16.5153943658846,21.7926675675623,28.0473420719766,36.6902084926893,46.1239700100904,53.7498655214257,57.3330821286296,55.9809422590545,50.0650774696293,41.2300013827729,31.8685400507808,24.4347028391605,24.3228472179538,22.6239626957399,21.3173471564968,20.5176846153987,20.0999229794413,20.0222680255053,20.281486685671,20.8912051480148,21.9924285290375,23.6929822898127,25.7684051973517,28.9558552018481,32.6412548675886,35.5847016814339,36.9640331521837,36.4503368206291,34.177071329474,30.7201037993691,26.9874759738038,24.3228472147799,24.3206645460051,26.9083017260066,30.5461824265306,33.9081434139025,36.1154050676769,36.6126495645929,35.2720625223308,32.4108214481343,28.8249469853807,25.7301056848292,23.7222398533677,22.0894553522992,21.0499654237048,20.4810874235062,20.2398591246949,20.311574349148,20.6994414244724,21.446470700968,22.6832031466349,24.32066453395,24.4268278768784,31.7774033645802,41.0345942345212,49.7605364736458,55.5981054222032,56.9294872715609,53.3907149731788,45.8623256235455,36.5427279986075,28.0006719339839,21.8156956829113,16.5830642895915,12.8321582559912,10.6414609462973,9.73865306674648,10.0109945040245,11.5074288890036,14.4271628978012,18.9408643272679,24.4268278463534,24.6093693863566,36.451319872356,50.8505796363346,64.3748563304143,73.260944172877,75.2150270586007,69.8987537030493,58.3012077138972,43.7951969199339,30.2728193492333,20.124694699497,12.606445362752,7.88689055554299,5.43976356538091,4.52244363979066,4.78064203965732,6.3454921612844,9.82101335146202,15.9598856094893,24.6093692694224,24.8019831106872,40.0077185882357,57.9295607547495,74.170668247612,84.1466987962368,86.092439036039,80.3762316493417,66.8221823495254,49.0826188784083,32.0114559544018,18.9391869411133,10.1783558099901,5.35644689968167,3.15544579507257,2.406668270819,2.61034582451519,3.94116466452622,7.27596308471793,13.9883283493705,24.801983032305,24.9305242486996,41.7246222039661,61.1261700614821,78.057474995504,87.5593928903188,89.1288561988061,83.9724548585366,70.305783228751,51.4327172187525,32.7980109590037,18.3983567153028,9.16923329449858,4.43051570603959,2.44533356853291,1.8425565325621,2.01666744214512,3.1861241663001,6.32608121288127,13.139302563526,24.9305240711886,24.9537692821019,41.2739641832272,60.2474564570166,77.0213233700969,86.798788852809,88.3670500961899,82.8530095337376,69.0991163194443,50.5692913328759,32.4677163791074,18.5419256286897,9.46652024526112,4.6714761233298,2.61241670868298,1.97942685636122,2.19118099095119,3.44836441417681,6.65955023619663,13.4278963036194,24.9537690931348,24.8752711524841,38.7125958103633,55.2642116303489,70.5334414371258,80.1507609793008,81.9257403899974,75.9806725616173,63.0362989622167,46.6130910587824,31.0943600045819,19.3508077328292,11.1140113119469,6.2531981712557,3.94425905897942,3.16558200508594,3.44709648028968,4.94140056244265,8.37550425709541,14.8590845736553,24.8752709582776,24.7436600279374,34.5397699326488,46.6466561134948,58.0936380771282,65.5875498372749,67.038647798864,62.2223490391665,52.3493242671923,40.2043529678083,28.9714629356722,20.7426477576537,14.2639567556018,9.85019906937358,7.44061582914137,6.53238296042894,6.86252455616522,8.50603125299284,11.857779209798,17.3898178709338,24.7436598208008,24.6554654996,29.6334697002673,36.0945410883763,42.1954341878925,46.1903661078861,46.9758297467917,44.3971443261613,39.1370156969732,32.6019821555813,26.5769921388398,22.5018568562371,18.9831192287531,16.3370248752467,14.7219679680203,14.0505635863382,14.2891140277857,15.4390505925804,17.5741693164152,20.83191858776,24.6554652537983,24.6518144072862,24.9350909033246,25.9064949811695,27.0003407815296,27.7365704699278,27.8800396373493,27.4036659242881,26.4267790738339,25.2479902098801,24.430242419183,24.4014387980239,25.1384047247678,26.233965137628,27.1471073897439,27.5927571028093,27.4583007837004,26.7688455864138,25.7464593457803,24.8582182662661,24.664187233435],"Archive1101_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.414049607232172,-0.392278710002311,-0.261318161675553,-0.155690499647309,-0.0630861946072448,0.0251146324754159,0.111230404137028,0.200588740359318,0.3101793376976,0.426497347225529,0.426377406050513,0.309649695532446,0.199757254068257,0.110555832652216,0.0249016899996049,-0.0627950811647286,-0.155340988350406,-0.263349190631218,-0.396314995822454,-0.50373223662004,-0.420256119986066,-0.292697017904004,-0.14094882428847,-0.0592490134335861,-0.0184276163255084,0.00844985495063857,0.0381178778418874,0.0907064685110826,0.194871132733092,0.340485639585535,0.429992392108159,0.411411923619274,0.342894343271746,0.218924411875359,0.0460810898846794,-0.137385046512112,-0.291716061197821,-0.39163421696784,-0.431714760679639,-0.420256132876815,-0.316464430181145,-0.175387523349543,-0.062691097609908,-0.0160289365636352,-0.00250209037119179,0.00158764861787176,0.00799086089319705,0.0325074173410129,0.106215520781777,0.238880512616446,0.372346443002,0.461302676070096,0.457418252823528,0.311732795329148,0.053898032794359,-0.214775314407671,-0.411254121472309,-0.478727298522275,-0.431364087813934,-0.316464445540059,-0.211449289876939,-0.0918731941573216,-0.0270234521365396,-0.004934103525379,4.86765001731742e-05,0.000820195536629796,0.00157004614517279,0.0109477281294391,0.0521675184078603,0.149253721866812,0.275965819759537,0.403423010967055,0.446557944381822,0.316736472422411,0.0393574268405612,-0.240718601499118,-0.42512227434777,-0.447992934479419,-0.351169193940237,-0.211449304648559,-0.0894752891897952,-0.0306347271728572,-0.010069777219865,-0.0045895773237008,-0.00267462041252066,0.000736196882697071,0.00249268331297676,0.00450565287735074,0.0205284075345918,0.0654794319661164,0.128269422572229,0.200822937109163,0.236724120163502,0.175855699962408,0.0236368571412277,-0.150478120507271,-0.255772343666977,-0.253150610966324,-0.178555763450353,-0.0894753017908288,0.0394597153982623,0.0201711498437136,0.00535264826624641,0.00182555417036326,-0.000160924081643761,-0.00159256719378797,-0.0023319562961673,-0.00313269446948215,-0.00545439191084116,-0.017352742478958,-0.0540770475887324,-0.0961490566706396,-0.121120103249899,-0.0901880942517408,-0.000566234781382159,0.0469304526645515,0.0663101464054149,0.0710625071148893,0.0571962075293397,0.0394597056559119,0.161440502301943,0.0697159021370597,0.0177390535523151,0.00396871366101725,0.00190077936785825,5.93770301494026e-05,-0.00288689461222004,-0.0103342476827012,-0.0359759332742806,-0.104384927305515,-0.222280617922888,-0.339655446200553,-0.393634971508314,-0.311445669639671,-0.0994678676577493,0.164376397139224,0.347273955546472,0.368166338004759,0.275642038584175,0.161440494834289,0.266034124989443,0.132728293971322,0.0418907929329395,0.0088735517972393,0.00153951675431546,0.000304958297234401,-0.00308382522561992,-0.0208576031702813,-0.079584738213987,-0.200640952516492,-0.345979459527971,-0.460913183027748,-0.487722445120594,-0.359478947067381,-0.1047753263536,0.202081862810573,0.43010806341858,0.487054960902406,0.403449311741801,0.266034118052374,0.351885495797866,0.216969708658517,0.0930578415766348,0.0331461514326148,0.0103143569531471,-0.00161858681545345,-0.0177604209571826,-0.0574319961208118,-0.155157961838228,-0.312147700654014,-0.415462677407458,-0.455490804633044,-0.419665931324558,-0.282489386692127,-0.0672489196930463,0.170961250801952,0.358136335405217,0.443643437858506,0.438177604611458,0.351885491637113,0.432341363294109,0.328351287817829,0.190433154921751,0.100490163699269,0.0410371895954022,-0.00991400517494516,-0.0659637674080843,-0.142954336552462,-0.267247774796339,-0.42213734567005,-0.453381067610739,-0.375913949393093,-0.278344898938968,-0.162603026179943,-0.0313429103872628,0.102000886298519,0.220567587464767,0.319702806805365,0.413844209913246,0.43234135219857,0.431998269195453,0.41293778228618,0.317919457207389,0.218708657650535,0.101019113548092,-0.0310289752430447,-0.161152751627277,-0.276401576810486,-0.374049705080782,-0.452428653155185,-0.420789668435824,-0.266778216597657,-0.142792851455044,-0.065857066920571,-0.00982518928361672,0.0411116851391423,0.10052307529453,0.190285323659235,0.328126143838776,0.431998254903738,0.34829542708059,0.434198524966899,0.438984053486023,0.353760147741427,0.168732401468298,-0.0662325010777945,-0.278619180825772,-0.414647372034252,-0.450803391884603,-0.411562049054332,-0.309269649235246,-0.153411652945523,-0.0563043231610325,-0.0171368271568647,-0.00144068456952753,0.010030498017183,0.0323207258479809,0.091572667281819,0.214325331713305,0.348295409974668,0.260114612510911,0.396362897688878,0.47952511668223,0.423544708238862,0.198785761619024,-0.103084880316686,-0.353373195333825,-0.479804758703638,-0.453186779019943,-0.339244263364171,-0.196054249242418,-0.0769573992792515,-0.0195035129692235,-0.00250373811952785,0.000428949766104854,0.00125680437521479,0.00797220818910533,0.0399708928226758,0.12889330770581,0.260114593918697,0.154112731464698,0.266223137401756,0.358772038786087,0.339942518615434,0.160625238576385,-0.0984875570352664,-0.305373715854709,-0.384733814365552,-0.329821010772995,-0.213748023044671,-0.0988347044182292,-0.0330967534054069,-0.00906569742143567,-0.00241069451137648,0.000149739572964466,0.00164782781684774,0.00318655073761993,0.0158024928899439,0.0654400775416011,0.154112722366755,0.0316474429377322,0.0469395266592516,0.061384072872294,0.0598377489362961,0.04411609297078,-0.000107365806609292,-0.0851890438462801,-0.112189833047461,-0.0854834328315579,-0.0447060017526496,-0.011358662472607,-0.00258925785086057,-0.00205137388813026,-0.00200447352107315,-0.00153305738898948,-0.00030396399309942,0.00122659766355969,0.00354023373518359,0.0158399125297689,0.0316474268930509,-0.0970540249576924,-0.188699638655161,-0.263268952703992,-0.263214271271916,-0.1531968229354,0.0250372494763485,0.180931819797106,0.245116537970595,0.210988383120836,0.13737712246496,0.0714676224006219,0.0234602315541091,0.00566427862092253,0.00288321023944465,0.000785960053860042,-0.00290058335741421,-0.00530158876571896,-0.0119487768950851,-0.0348649384814868,-0.097054038204076,-0.217964868471765,-0.359803179611835,-0.457312906711184,-0.432958116550295,-0.244970619689012,0.0404099260372923,0.322417947945163,0.454746999006083,0.412146410605025,0.283729662711147,0.154712305677542,0.0550577710539275,0.0122630953321172,0.00207298671248855,0.000899262110973609,-0.000230378108383843,-0.00579150153838569,-0.0289899935517372,-0.0957802601733768,-0.21796487956285,-0.321180634470113,-0.435902623943444,-0.484039505206057,-0.417729155877479,-0.217926364578741,0.0546917103568269,0.316205415675081,0.463534397633028,0.467187229574274,0.377598431213943,0.243115815663024,0.10865042929265,0.0338307831841646,0.00857827438025664,0.00165087499461429,-0.00288718253953169,-0.0169644799720345,-0.0645200887364802,-0.178358563264736,-0.321180644693011,-0.422720158031469,-0.444465393272949,-0.394142073963497,-0.29597944971171,-0.139208772093192,0.0465477704732878,0.221405500649717,0.346202055374269,0.414139739097065,0.431910222820753,0.342305947931237,0.195986317742489,0.0913940588602364,0.038455245294848,0.0084491921826933,-0.0187424560543385,-0.0599080780377436,-0.141636510775766,-0.295383354574318,-0.422720167446615,-0.414049615506166,-0.392278710222235,-0.261318162152695,-0.155690499416717,-0.0630861931380856,0.0251146352020629,0.111230407762612,0.200588744092736,0.310179340329103,0.426497347476242,0.426377405057466,0.309649692501385,0.199757250088996,0.110555828900411,0.0249016886213814,-0.0627950825754754,-0.155340988408148,-0.263349189939791,-0.396314994643372,-0.503732231819306,-0.731150137666875,-0.674488257305177,-0.448778654629353,-0.266636497651386,-0.107809536226739,0.0431126498947743,0.1904424918072,0.343735114336619,0.533250022035135,0.736812647668861,0.736597700705225,0.532146971564196,0.342056609629318,0.189103466254058,0.0427072789314517,-0.107207143620146,-0.265817731819409,-0.451688212547889,-0.686138986884549,-0.855856139480877,-0.726006249770989,-0.506563390603556,-0.242963257853715,-0.102160534777743,-0.0317798216864936,0.0146218891145374,0.0657926725237408,0.156383657344851,0.336256989612164,0.588368400237061,0.74048310281068,0.704315502803066,0.584731021112714,0.372643994830406,0.0784593796990172,-0.233620590063606,-0.497190194434292,-0.668375937571033,-0.744005099334029,-0.726006262216215,-0.544934047996408,-0.303441371744318,-0.108780689196458,-0.0280567544779513,-0.00450890093056447,0.00279312625208115,0.0140931080280688,0.056602744848311,0.183985909229274,0.412531109112398,0.63892567848605,0.787982113209788,0.779247364544962,0.530091415598678,0.0911728593348857,-0.365393154427576,-0.700301373210112,-0.816230237256577,-0.738237231025885,-0.544934063284074,-0.363332190198606,-0.158954042090749,-0.0472401897685522,-0.00887153259119331,-4.3536692281476e-05,0.00146278868071754,0.00292107228143376,0.0193155318996194,0.0906168726737993,0.257561760507943,0.472553554461626,0.688459120948432,0.761724646023548,0.540528297385211,0.0663867045850524,-0.411408510158449,-0.725425822098805,-0.764334589790791,-0.600469319171865,-0.363332204630062,-0.153000541861181,-0.0527218915786577,-0.0176423137628171,-0.0081616769107101,-0.00476034649739598,0.00129974507321956,0.0044333695578616,0.00795066616504848,0.0355914301015477,0.112719663687213,0.219056146723149,0.34206568776698,0.404227655992796,0.302079457345784,0.0405546869039999,-0.258677332267132,-0.437797410238576,-0.432004785501985,-0.304615999133783,-0.15300055302795,0.0688982822311644,0.0355753527751106,0.0096105515680323,0.0033139001168275,-0.000262098014504973,-0.00282202902112255,-0.00418805576736626,-0.00569930499470784,-0.00987748328281965,-0.0304361437158455,-0.0936957033035892,-0.166003566705856,-0.209003061289713,-0.155380044182793,0.000536322261753233,0.081645937394269,0.114255654573535,0.122322389125399,0.0989546844257158,0.0688982754823113,0.27864026364747,0.12155598758052,0.0314296563858692,0.00727368326326785,0.00345200512449536,4.74527190856001e-05,-0.0053085507282184,-0.0185462794392454,-0.0631883319485641,-0.180838390360538,-0.38228329263576,-0.582015485741822,-0.674143194781898,-0.534309195764527,-0.171353062027883,0.282295645239204,0.595469069215664,0.630455256631954,0.472774625244087,0.27864026051352,0.458612122437174,0.230607275614436,0.0733834563295301,0.0159336619013532,0.00288102177921666,0.000441918674542003,-0.00574109489162691,-0.0368597094059836,-0.138717574312085,-0.347183248937334,-0.594907372211656,-0.789118785953945,-0.833341440711658,-0.613727923922401,-0.179451289867507,0.344508173680235,0.734465030436177,0.832773202316294,0.691616682889141,0.458612120177026,0.60683727793604,0.375698271394491,0.161271684577198,0.0577149684170769,0.0180414648813593,-0.00286683288473461,-0.0310132689716231,-0.0996893594560292,-0.268807901777101,-0.540191392383832,-0.715140602319365,-0.780228758619435,-0.716702390285949,-0.481490603897715,-0.114600401350816,0.291168999798111,0.610825465173205,0.758467794687557,0.75206827948882,0.606837275737145,0.7471842457274,0.567057876624565,0.327532262445639,0.172614606720753,0.0705245814700354,-0.0169249693180463,-0.113198969265163,-0.245688174165617,-0.460712820063461,-0.730591440114595,-0.782793882047422,-0.645399818411743,-0.476322560545367,-0.277625627991681,-0.0533192767300991,0.17424468962928,0.376920323351654,0.547570111788378,0.712446581907655,0.747184237161183,0.746454112883031,0.710534456941159,0.54390331716966,0.373199363858037,0.172291562533148,-0.0526997211708449,-0.274729012596974,-0.472393676097195,-0.641698691553589,-0.780903170954237,-0.728093731251387,-0.459762580842369,-0.245388048561839,-0.113028557304183,-0.0167761741437125,0.0706617748261726,0.172672921869592,0.327231909443109,0.566536163417481,0.746454099784504,0.600024021248329,0.744188278781082,0.749061622296625,0.602074161850473,0.286713766578109,-0.11267246671448,-0.473910889905738,-0.706686678821561,-0.770884445997787,-0.707624086022704,-0.534666605521857,-0.265294834908721,-0.09744927590218,-0.0298013719280252,-0.00253492205123014,0.0174742782869351,0.0560839307902855,0.15831807072602,0.370603522769108,0.60002400393719,0.447301915751416,0.67776003976442,0.817811996059378,0.721470027134471,0.338011290467489,-0.176305572356438,-0.601976552373085,-0.817746925789952,-0.773878078475342,-0.581938501756261,-0.338326722389646,-0.133534333633505,-0.0341853095057066,-0.00459788343140247,0.000681745925296381,0.00231858453404549,0.0141550919640123,0.0695824180995779,0.223210941167715,0.447301896186291,0.264554739294438,0.454498441006618,0.612062174647095,0.581239748604461,0.275220515400852,-0.169568412649338,-0.52285947513641,-0.656800322244617,-0.562820159563889,-0.365813078362158,-0.170077291147816,-0.0575429350702746,-0.0160580742276228,-0.004375905723274,0.000223001328334306,0.00296174278939416,0.00574140685763543,0.0276174732670557,0.11327612038003,0.264554729867497,0.0538159077019899,0.0790913066677156,0.103492938562737,0.101883211934108,0.0765822319545199,0.0013351218207979,-0.146125666760322,-0.191794022814562,-0.14532592961296,-0.0756065651485335,-0.0188209321522097,-0.0042656804986793,-0.00357179081383185,-0.00354156157055826,-0.00270762276676545,-0.000546654394021889,0.002131732728442,0.00604818164803046,0.0271537979469891,0.0538158922995476,-0.167638063680601,-0.324257526879357,-0.45172728940625,-0.4520629546354,-0.263608990170311,0.0431171424745185,0.311640483588671,0.420565657731363,0.361853612166916,0.236634778318861,0.124276646198138,0.0413251859232909,0.0102278229204884,0.00519728622256245,0.00139883125347617,-0.00519897206085248,-0.00955617476444014,-0.0213296257392928,-0.0609664741166011,-0.167638074764553,-0.375886658276124,-0.617123904672926,-0.782325673628624,-0.740588511908075,-0.419469160498004,0.0684997037167875,0.551587533634876,0.777856510307716,0.705583205580496,0.487521796207653,0.268025819458843,0.0962766748783993,0.0219092161397038,0.00391078836912121,0.00161841715356595,-0.000595026016944258,-0.0105571407008483,-0.0511186401420586,-0.16656203523991,-0.37588666613362,-0.55395006292028,-0.748234205602531,-0.827809728833263,-0.712558820682726,-0.371611354733508,0.0928356907243797,0.538976557877771,0.791474092908638,0.799725807016705,0.64905247823248,0.420583250612348,0.188774891625279,0.0592217099572579,0.0152531526144836,0.00292817896080711,-0.00525608879544793,-0.0299070988827065,-0.112371971149117,-0.309339748387178,-0.55395006970589,-0.730753920322215,-0.761507004304747,-0.675333066730348,-0.505092267280464,-0.237209837145587,0.0794261865606867,0.377599660664259,0.591400719791462,0.709906002745017,0.744251761755176,0.591862216161417,0.338495091496879,0.157763046841439,0.0664649104939743,0.014638055772516,-0.0323739960833746,-0.103408954390897,-0.244581712810549,-0.510878803040238,-0.730753927234597,-0.731150147725869,-0.674488258689379,-0.448778656356889,-0.266636498366157,-0.107809534703845,0.0431126538012461,0.190442497599391,0.34373512066958,0.533250026609057,0.736812648072585,0.736597699460819,0.532146966643839,0.342056603121629,0.189103460397895,0.0427072769781254,-0.107207145097338,-0.265817730997418,-0.45168821067295,-0.686138984753081,-0.855856132314249,-0.958756594153022,-0.866043210632448,-0.574642214032629,-0.340934166415452,-0.137683412978494,0.0552242956237945,0.243439929259174,0.439485860338916,0.683636947891832,0.950214793152156,0.949940494020994,0.681961442384337,0.43699786786525,0.241481357482341,0.054650777336161,-0.136767226764601,-0.339585160492675,-0.577758848443208,-0.885598248493454,-1.0895789262087,-0.936050282301827,-0.654028952761752,-0.312252221725281,-0.131401878378204,-0.0409246538609306,0.0188612723196369,0.0847097820577146,0.201031718746606,0.432642133350914,0.758859024902811,0.951341234909763,0.899425591933397,0.744256130226367,0.473681601250387,0.0997547801131946,-0.29681709698468,-0.632719786842764,-0.851211073666693,-0.955427128445621,-0.936050294830046,-0.699796728653835,-0.391649835236953,-0.140720697327269,-0.0365863942912427,-0.00603450638933403,0.00366057769345642,0.0185107132604734,0.0734419820778555,0.237628030964412,0.531491508176216,0.817543014569466,1.00448684212885,0.991383962818219,0.673485950406142,0.115319016105861,-0.4644604937693,-0.890683351512497,-1.03894666941403,-0.942510087896086,-0.699796744662568,-0.465514919325825,-0.205076405352908,-0.0615866482597576,-0.0118747792272336,-0.000211256699756063,0.00195510470457434,0.00403967636844567,0.0253894392527745,0.117332874182993,0.331401406798542,0.603302831853061,0.876888368524742,0.970921211681695,0.690156921957793,0.0840229983717034,-0.525784755183942,-0.925235031922178,-0.973823419158655,-0.76604844833023,-0.46551493404676,-0.194926771942924,-0.0675772694530802,-0.0230394590118671,-0.0108366753808217,-0.00633696677249174,0.001723627665993,0.00590397638458346,0.0104739412595617,0.0459589103151228,0.144495927024446,0.278702304676602,0.434609691686211,0.515902977453527,0.389166817855126,0.0522171273060282,-0.333059021442556,-0.560403194341379,-0.550492012835366,-0.387550343383106,-0.194926781748177,0.0899693575819373,0.0469048236514453,0.0129324614642372,0.00452141421844672,-0.000305023343481466,-0.00373247723012775,-0.0056288232447294,-0.00775988456309456,-0.0134197040183398,-0.0400639718251171,-0.121579286207678,-0.21468278710838,-0.270391984991578,-0.200923465654614,0.00303425710445623,0.106964560124509,0.148087484776091,0.157942562904937,0.128237086734704,0.0899693545274777,0.35897387281602,0.158240303985175,0.0415990564224378,0.00997712635367444,0.00470094724752943,-1.52366935798668e-05,-0.00729618323471341,-0.0248816393174335,-0.082924107443322,-0.233922859296012,-0.490995120196225,-0.745416025247093,-0.863782253251473,-0.686617217631614,-0.221212540870956,0.364025839383049,0.764849800882182,0.807335314032096,0.605665794584127,0.358973875431561,0.589923963354277,0.299118920678929,0.0959170517839547,0.0213521520069581,0.0040128217717546,0.000464261888914802,-0.00794834295305954,-0.0486258440172279,-0.180511653862071,-0.4483628313692,-0.763453374628643,-1.0090911491038,-1.06436030000339,-0.783538352598774,-0.22976709447056,0.439571503323983,0.937972734309413,1.06402606647687,0.885064529703131,0.589923967443955,0.780870251914989,0.485575851975434,0.208431446339012,0.0749921492393438,0.0235456971595543,-0.00380138017185038,-0.0404291364009506,-0.129090981113411,-0.347471111934615,-0.697767028657953,-0.918387102629162,-0.997378610314804,-0.914249696457405,-0.613341205350383,-0.145974705437359,0.370655436180405,0.778386026158938,0.968272921371558,0.963219879676813,0.780870252328772,0.964046685339776,0.730829721714783,0.420064358439513,0.221275202253566,0.090470546618607,-0.0216281781063138,-0.145082853271676,-0.31500832854189,-0.592280597688533,-0.943999824871203,-1.00864455242973,-0.826309684059132,-0.608416746553741,-0.354141974450964,-0.0678476428998217,0.222324085682338,0.480925305715227,0.699691835154904,0.915051443257536,0.964046679759332,0.962857874008952,0.912043098976707,0.694090039428412,0.47537730754315,0.21943003163542,-0.0669310044716957,-0.349827644210963,-0.602506280395163,-0.820808040548799,-1.00581185787165,-0.940470222842382,-0.590800809712327,-0.31454362376266,-0.144853311798143,-0.0214360450068296,0.0906422369647062,0.221312250621704,0.419558498877798,0.729903232050134,0.962857861730881,0.771038624051084,0.951421252912816,0.953988222197516,0.76520897145104,0.363952201686705,-0.143199151080935,-0.602130337526179,-0.89920390032017,-0.983340550624662,-0.90740262770904,-0.689711874391811,-0.342138850406778,-0.125728868659075,-0.0386442696344645,-0.0033308114317111,0.0226900954488634,0.0725554805830436,0.203995449060343,0.47813028203343,0.77103860530744,0.573529400478264,0.864505716335108,1.04147018304174,0.918396380043619,0.429800390474638,-0.225289925380926,-0.766276685237654,-1.04102489349679,-0.986303946133413,-0.744509854180437,-0.435417611789585,-0.17281204763018,-0.0446548984571903,-0.00625452044856915,0.000814143445294558,0.00317396189665949,0.0187159167416458,0.0902600422085933,0.288337652186194,0.573529378315903,0.338450980820411,0.578685532802194,0.779801175535117,0.743563686166297,0.353669507953534,-0.218648285043491,-0.669881381423281,-0.837853250037458,-0.716867509559596,-0.46686069007982,-0.21815268501878,-0.0745967173913716,-0.0212169179384192,-0.00592557749490333,0.000240998523960249,0.00398779482802177,0.00772507681323034,0.0359637206189777,0.146141665465634,0.338450970364265,0.0679067634341386,0.0989268058884493,0.129786281477935,0.12961135887972,0.0997221748229383,0.00420777686379539,-0.187437568151472,-0.244768243568798,-0.184038934054461,-0.0950548029321832,-0.0230553543201724,-0.00515325280709231,-0.00461812418739069,-0.00467082822872608,-0.00356697759398458,-0.000729926920171704,0.00277078767626748,0.00767459978877787,0.0345595365712144,0.0679067479523372,-0.216343218671017,-0.416495620622169,-0.579911902781052,-0.581590745268529,-0.340166391114037,0.0558671351256852,0.403259127316864,0.54043319190091,0.464034249172961,0.304473880415407,0.161360099278595,0.054394320741229,0.0138319941156078,0.00702535224693456,0.00187148922035649,-0.00697647901599442,-0.0128864448276442,-0.0284748791132045,-0.0796892601166706,-0.216343227573452,-0.483844956893908,-0.790525146764312,-1.00046144100978,-0.947724608953075,-0.537509407554954,0.0872649261136794,0.706693302600338,0.995182919217692,0.902455511667964,0.625211835552055,0.346585982696338,0.1256770095552,0.0292280388111601,0.00550059222739415,0.00218416998074422,-0.00102872915062536,-0.0143640971874699,-0.0673316680617334,-0.216258251751259,-0.483844960969652,-0.712881661892541,-0.95837514050803,-1.0573384402541,-0.908542711174038,-0.473702291995757,0.117916101977248,0.686854552203953,1.00986394235441,1.022202925778,0.832366116339706,0.543103835363987,0.24473452023777,0.0773437786033533,0.0202349962706361,0.0038739409950668,-0.00712984357549705,-0.0393390576772843,-0.146053780305336,-0.400439585464575,-0.712881664526114,-0.94292972349422,-0.974033928339265,-0.863224627526018,-0.643935874773269,-0.302100187868382,0.101240170763845,0.481097964786343,0.754328665455551,0.908008334057363,0.956967221186992,0.763973268503556,0.436056364442998,0.203142000529846,0.0857351821110069,0.0189115183525176,-0.0417826611877667,-0.133225442042853,-0.314944355450116,-0.659542691026838,-0.942929727473294,-0.958756607425378,-0.866043213473703,-0.574642217174894,-0.340934168146696,-0.137683411240595,0.0552243011524098,0.243439938064232,0.439485870580669,0.683636955720755,0.950214793867739,0.949940492232813,0.681961434299008,0.436997857577318,0.24148134872031,0.0546507745971942,-0.136767228472521,-0.339585158749547,-0.577758845287789,-0.885598245212534,-1.08957891530526,-1.10809325708168,-0.985612441968862,-0.652136555197598,-0.387286342667535,-0.156410975408343,0.0628707591732607,0.276555041355084,0.498646157348646,0.776318715897386,1.08539178319318,1.08509492213677,0.774078112789222,0.495391872226131,0.274021708311576,0.062149339543147,-0.155180527242927,-0.385363457204732,-0.655062305221765,-1.01165003774843,-1.23297563088333,-1.06868103226941,-0.747735831148866,-0.355556198696206,-0.149990534353909,-0.0468324866697683,0.0215955624881412,0.0968249683124773,0.229134252425508,0.492922687611019,0.866853552419147,1.08208960990946,1.01784261108379,0.840762102522827,0.534969766473682,0.112732822334341,-0.335200652489107,-0.715095337350353,-0.961456938574914,-1.08555351961743,-1.06868104567326,-0.795451516481516,-0.447640230409731,-0.161199409695145,-0.0422378769332647,-0.00712923277965827,0.00424571187355767,0.0215188969359295,0.0843799112075191,0.271722815242841,0.606309128592517,0.926035164335708,1.1352053281208,1.1194411179235,0.759954089089086,0.129653229630885,-0.524313954827162,-1.00556932811196,-1.17302200373296,-1.06596832363745,-0.795451534416962,-0.528015327201022,-0.234218501261274,-0.0710688458441524,-0.0140333768795391,-0.000400125528321778,0.00231951990819532,0.00491632139860545,0.0295037571232429,0.134449463531166,0.377438086928136,0.681923728041476,0.990083862836454,1.09830751329372,0.782844802313112,0.094789691514965,-0.59664844001249,-1.04739566836062,-1.10037336085386,-0.865909543953229,-0.528015343149753,-0.219697644509366,-0.0765725831796852,-0.026601449988237,-0.0127355164306992,-0.00747985634757009,0.00203435860878578,0.00697432539239232,0.0122047598852539,0.0524578001291981,0.163768481122387,0.313713758558062,0.489070627781645,0.584060612751956,0.446086933576559,0.0597465402203553,-0.381040840303254,-0.636672955839161,-0.621826838462774,-0.436616684446447,-0.21969765304291,0.104407323345366,0.0549135629440182,0.0154769295766219,0.00549403245479469,-0.00029588788693005,-0.00437067574635628,-0.00671389325063672,-0.00938307409608981,-0.0162375650434864,-0.0470184247266111,-0.140362110012599,-0.246989711302613,-0.311349570582715,-0.23145046127423,0.00647712092527722,0.12502384687348,0.171375867271134,0.181706836769368,0.147931250783186,0.104407325137506,0.409998606518389,0.182632094467304,0.0488235611272829,0.0121373410391809,0.00568735317723871,-0.000110265058342767,-0.008885753275286,-0.0296054818358476,-0.096532565356613,-0.268316781426296,-0.559374506450193,-0.847528456277404,-0.983238629188812,-0.784586450728689,-0.253987346308247,0.418335604378764,0.873641728567359,0.918182023388594,0.688422226390013,0.409998617398849,0.67223441819194,0.343886848299029,0.111100377637046,0.025358438544267,0.00493358101945919,0.000415280497789055,-0.00971777156883673,-0.0568681343923996,-0.208229853729972,-0.513024449625024,-0.868275849773237,-1.14490607672427,-1.20726001987661,-0.888730021781246,-0.261288181721448,0.498743665750988,1.06444836883079,1.20703680440686,1.00427417625939,0.672234431994365,0.889766161610584,0.556067444513319,0.238703333861903,0.0864816261946596,0.0272753773741966,-0.00448620970147303,-0.0467986350430765,-0.148246664851983,-0.397982410838375,-0.798357916115725,-1.04446087730739,-1.13039596078952,-1.03562702330943,-0.694388611909705,-0.165281887138376,0.419506750661883,0.881305098496693,1.0970886262122,1.09320188402485,0.889766166140223,1.10173327319855,0.834351969441151,0.477444101330819,0.25187814460463,0.103144113156333,-0.0246152253131535,-0.165280217216195,-0.358342458346141,-0.674393116275439,-1.08046111868283,-1.15092213564156,-0.937189532738899,-0.689905087034592,-0.401639939380085,-0.0768403561430896,0.252229150695683,0.545131464936863,0.792923016182813,1.04091182093094,1.1017332717887,1.09999717634991,1.03670915182262,0.785336192270312,0.537784793639516,0.248419555849997,-0.0756301519052544,-0.395925638631452,-0.68200838492061,-0.929899532473844,-1.14711886931993,-1.07596686471276,-0.672330594495509,-0.357680146385525,-0.164984979868283,-0.0243892786397726,0.103322581087439,0.251841499223552,0.476670809085508,0.832902915608096,1.09999716390582,0.876997739077963,1.07738033338643,1.07773952623671,0.863595475145936,0.410507864698212,-0.161686569792667,-0.679546418451061,-1.01545237012381,-1.11155634555894,-1.03004492117846,-0.787806961237007,-0.390767392772568,-0.143744230973377,-0.0444453973211044,-0.00388611301276534,0.0261249172656811,0.0832309742932217,0.232757322233869,0.546306696014945,0.876997716051138,0.650889820188025,0.976895898160032,1.17654726895778,1.03796428262563,0.48552064799138,-0.25552375210991,-0.865873109969108,-1.17591347510672,-1.11436373176941,-0.843431529934078,-0.496068336982194,-0.198030514172061,-0.051615944379374,-0.0074815489204786,0.000871530899444813,0.00382107758327281,0.021879671301873,0.103601282537376,0.3298209741785,0.650889792160406,0.383166663279959,0.652606877566918,0.881026037236584,0.844776178364117,0.404505087333876,-0.250567852304872,-0.762278217117426,-0.948199221283443,-0.809324543655564,-0.527613826501823,-0.24763076835249,-0.085580700530105,-0.0247994712569175,-0.00709307643784263,0.000222965720284736,0.00476371644139934,0.00919210796189265,0.0414068001431172,0.166826908195172,0.383166650559972,0.0754627802296306,0.109001968770887,0.143610456250263,0.146118751420295,0.115363133349178,0.00816081637868672,-0.21330928663362,-0.27668650016854,-0.206029687490424,-0.105418885273929,-0.0247271618264229,-0.00538190457572844,-0.00525381625315116,-0.00545053216721874,-0.00415710249536498,-0.000860430860816063,0.00318754506672962,0.00856750747766244,0.0387461273929087,0.0754627635171403,-0.247795729668108,-0.474984502438111,-0.661427642906588,-0.665328269794037,-0.390577097333079,0.0645053597285571,0.465149717081215,0.617456638567384,0.528506622191131,0.347659864132705,0.185805530727327,0.0635237348846547,0.0166110771169818,0.00843937151320644,0.00223041633249747,-0.00831026100181972,-0.0154173350086806,-0.0337373927344779,-0.0924644444329598,-0.247795736354936,-0.552020633718052,-0.898294992094419,-1.13601958621619,-1.07754529485035,-0.612094214396734,0.0992643321052556,0.805202722246302,1.13115389926336,1.024382781809,0.710731776697595,0.397191016813505,0.145424042472336,0.0345592238005785,0.00683503535970326,0.00261888249582611,-0.00147822718647035,-0.0173073949539575,-0.0786459999350253,-0.248908582012078,-0.552020633207184,-0.812514891756536,-1.08785131760409,-1.19854907145047,-1.02915087220828,-0.536595528598391,0.133246636249813,0.777967267695149,1.14442582132978,1.15911793791654,0.945532129801526,0.621346479917766,0.281140859143974,0.0895602463367568,0.0238031296524668,0.00454201400880714,-0.00856518316483114,-0.0458866085639689,-0.168277864932661,-0.459301015227078,-0.812514889223203,-1.07759112492142,-1.10430028236346,-0.978481792412613,-0.729495880868131,-0.342128585028417,0.114749989405527,0.54485350825104,0.854300838141773,1.02956839133523,1.08964070327908,0.873597521305937,0.497583607197991,0.232023478838027,0.0982263925628374,0.0216936168296164,-0.0479489387245296,-0.152396400179363,-0.359400695433304,-0.754367150873821,-1.07759112545926,-1.10809327632377,-0.985612445929042,-0.652136559520129,-0.387286345462339,-0.15641097341353,0.0628707666373022,0.276555054022943,0.498646173468789,0.776318730127026,1.08539178494143,1.08509491840742,0.774078098491111,0.495391856309314,0.274021695861176,0.0621493358754335,-0.155180529220557,-0.385363454518755,-0.655062301121204,-1.01165003387358,-1.23297561352085,-1.19331603207504,-1.05216471669176,-0.695844245739947,-0.41476645955003,-0.167690983278209,0.067529998610774,0.296351891779663,0.532839487339144,0.827608803107314,1.16085353950293,1.16054873369621,0.824769466279066,0.528834744685498,0.293268646610781,0.0666729093443554,-0.166139381936686,-0.412215717981044,-0.698314360830677,-1.08265144390751,-1.30999030002834,-1.14200915168905,-0.801010811024299,-0.380397253631881,-0.161192290317158,-0.0505005443991289,0.0232902654028508,0.104243965481894,0.245698371502352,0.526872573655012,0.927253411199271,1.15259858330821,1.08214002051072,0.894405720929263,0.569688011660603,0.120197976211505,-0.357024680894595,-0.761616654734087,-1.02165011591694,-1.15586688050397,-1.14200916511609,-0.84683725154146,-0.479503717998113,-0.173255427481121,-0.045745662915121,-0.00786925389608667,0.00461653681375302,0.0234503253382433,0.0909961936525975,0.291356708214197,0.647884463912544,0.983137543901924,1.20567358285344,1.1896160900557,0.807570881534079,0.137364084308884,-0.557358178457674,-1.06848148597482,-1.24549725221169,-1.13150405314013,-0.846837271958465,-0.561482783649423,-0.250680022163962,-0.0768049242165371,-0.0154643226387958,-0.000563016381640173,0.00257579797052722,0.00554617644225392,0.0320487451261658,0.144352549892883,0.402816460604142,0.722980058904156,1.05005040804116,1.16786712135993,0.834932362744606,0.100848242283476,-0.636314400344614,-1.1141533507318,-1.16808211508369,-0.918835415337067,-0.561482801854473,-0.232074572663274,-0.0811989566047374,-0.0286978017412239,-0.0139806216068726,-0.00826191767796182,0.00225321152265595,0.00770425378841002,0.0132644646128318,0.0560085918288055,0.173821647988976,0.331061011134167,0.516278590072481,0.620428661374761,0.480506727715689,0.0639630261483849,-0.409085872342843,-0.678814447153804,-0.659077028697313,-0.461423320215426,-0.232074580161706,0.114093379465908,0.0604495406151654,0.0174087719251871,0.00626886932203858,-0.000245798976310608,-0.0047854870809728,-0.00750168094502867,-0.0106460251804425,-0.0184980043880778,-0.0520851208137032,-0.152718899978941,-0.267633788342633,-0.3374855438045,-0.250926405723425,0.0103853175433346,0.137369900419273,0.187079234895487,0.197132070879348,0.160948021229035,0.114093387315314,0.439803863183996,0.197865962440417,0.0537486261214843,0.0138088530810357,0.0064460002778252,-0.000220592072395403,-0.0101169345090863,-0.0330095852947827,-0.105481001512987,-0.28902924058645,-0.598889162069676,-0.906166399287314,-1.0523894342283,-0.843087623934598,-0.274136414032796,0.452739875685759,0.938743048615031,0.982143411722382,0.735642089559885,0.439803885336674,0.718412624965574,0.370926613835741,0.120780713964304,0.0282393407976019,0.00565424069320362,0.000332224529847096,-0.0110934134785167,-0.0624159688231505,-0.225431792207234,-0.550479671216075,-0.926852546251221,-1.22144982229943,-1.28857800428054,-0.948839821948724,-0.279611657710625,0.53301850709718,1.13749493930279,1.28853934501479,1.07070005033096,0.718412653527453,0.949505927670973,0.59710588554409,0.256807524042187,0.0938691481746079,0.0297292295232786,-0.00498320745187209,-0.0509886183536208,-0.160089869664764,-0.42781981690509,-0.855653566852653,-1.11333762910261,-1.20426942861911,-1.10498871292852,-0.741188680114511,-0.176464205457575,0.447850647718841,0.940507045998802,1.17007227087334,1.16478351723519,0.949505939563419,1.17856538736203,0.892882869154284,0.510087382416138,0.270190049272051,0.11090141818544,-0.0264484713068215,-0.177545887139122,-0.383737389135572,-0.72066133913793,-1.15784086791984,-1.22972068373413,-0.99824268661463,-0.736976288945865,-0.42974917461926,-0.0821673487100652,0.270062552749628,0.582595015913412,0.845460424016047,1.11025023330354,1.1785653937012,1.17618030846354,1.10471602850463,0.835801249546963,0.573448397554628,0.265346047946143,-0.080660461264069,-0.422623345138949,-0.727037809969373,-0.989105443647513,-1.22486708489462,-1.15243608529203,-0.718006433857848,-0.382872023935246,-0.177184311994191,-0.0261947390612289,0.111069351492765,0.270043943541641,0.509013542555388,0.890825692664742,1.17618029271524,0.933785940733345,1.14475002983132,1.14542226123773,0.91811911156617,0.436495122326074,-0.17204810640065,-0.722655389190413,-1.07952352935295,-1.18044310145884,-1.09542970019466,-0.842593092985345,-0.418676699256425,-0.154435486390646,-0.0480681546776772,-0.00425870392392097,0.028279048794329,0.0897972691841358,0.249327951080377,0.585036409904601,0.933785907186389,0.69212434514377,1.03626534351643,1.24970225292131,1.10372308966973,0.516139831642066,-0.272556961797387,-0.920201910708586,-1.24886428599822,-1.18284453885745,-0.896053525346436,-0.529519983206498,-0.212737971048676,-0.0558911395618769,-0.00831901661653106,0.000892909214335012,0.00426955683597368,0.0239288036747347,0.111445332684567,0.353622311175898,0.692124306367478,0.406656770915774,0.690709108031042,0.934764493336752,0.901659849223762,0.435156583616998,-0.269741079967907,-0.814773464368477,-1.00757605201739,-0.857863452556164,-0.55939679797299,-0.263443815192847,-0.0919381864014938,-0.0270869039563609,-0.00791386805134661,0.000186875455605747,0.00532146842845076,0.0101911460510797,0.0445793956834174,0.178406689563351,0.406656754515343,0.0782382823902832,0.112063968820857,0.148323337135835,0.154188459017704,0.124901562503834,0.0127708978202385,-0.227514439726581,-0.292973343730567,-0.215834724358222,-0.109218611478058,-0.0245359951688741,-0.00509253126795639,-0.00554860015307502,-0.00593701783261817,-0.00452602940525264,-0.000950085971986913,0.00341565344982315,0.00887893860616336,0.0405066736618595,0.0782382634421124,-0.266877073625377,-0.509496098938871,-0.709495967317642,-0.715653530954649,-0.421425327918165,0.0698879929465327,0.505131266979706,0.663505975186871,0.566250903089321,0.373317899956847,0.200993523962916,0.0696622124807164,0.0186939950620467,0.00950221318787909,0.00249703388727566,-0.00927535180220982,-0.0172773745087169,-0.0375015502665868,-0.100831523236561,-0.266877077667493,-0.591173600524995,-0.959374991977297,-1.21325707321256,-1.15242766423085,-0.655626724682985,0.106660995813772,0.863528596239051,1.20983565866418,1.09348498760566,0.758793000701346,0.427085444303981,0.157929859963912,0.0383001262050098,0.00791306575057051,0.00294288790106663,-0.00189835866215142,-0.0195108104549643,-0.0861914619837441,-0.268855463970655,-0.591173594330787,-0.867890908974038,-1.15946908738813,-1.27838711077563,-1.09803931352944,-0.572739124977541,0.142005246374312,0.830421727095401,1.22140892042956,1.23608278424046,1.00740825592419,0.666296783576629,0.303094443689276,0.0974529571264155,0.0262923717421172,0.00499901250277356,-0.00964235493515321,-0.05028736115292,-0.182087370027354,-0.494024218534974,-0.867890900933882,-1.15292129545436,-1.17520663347071,-1.04345008638475,-0.779207042176127,-0.365584389326397,0.122758248646025,0.582073172075547,0.911512296979904,1.09720830798037,1.16220886254682,0.935665965331225,0.532833382630001,0.249402218683554,0.106037431768473,0.0234449647529723,-0.0518731711037743,-0.164185261775505,-0.385416738545793,-0.808814768990342,-1.15292129410083,-1.19331606162427,-1.05216471813793,-0.695844251505228,-0.414766464336579,-0.167690981647499,0.0675300078047828,0.296351908420453,0.532839510570439,0.82760882906217,1.16085354540925,1.16054872187836,0.824769440733747,0.528834722068055,0.293268630399547,0.0666729048544471,-0.166139383560293,-0.412215713415437,-0.698314355607432,-1.08265144344587,-1.30999027158281,-1.23190727342134,-1.08557248235121,-0.719303322961867,-0.430687223714449,-0.17435085283154,0.0703203009147848,0.307992913031327,0.552017672622085,0.854057822636302,1.1960293632097,1.19566006488503,0.850551463375105,0.5472742939899,0.304373801471318,0.0693355677121697,-0.17247164411037,-0.427460987391689,-0.721129051296645,-1.11866069010767,-1.34222926741566,-1.17528049427599,-0.828106893829248,-0.393878859807238,-0.167682047407781,-0.0526911820524422,0.024305934313446,0.108648002847214,0.255089752083478,0.544714330722667,0.955682492829892,1.18446587789625,1.11451528999312,0.922650443104446,0.588556740258915,0.12434595361737,-0.368934553410916,-0.786754569914674,-1.05246018259865,-1.18989268249231,-1.17528050229491,-0.870043323827795,-0.495832468063225,-0.179865759340582,-0.0477643344548235,-0.00832042584580033,0.004832448393716,0.0246027394987197,0.0947282061499479,0.301896754251587,0.66786218353113,1.00897472542311,1.24065913768263,1.2255470288958,0.832088506358163,0.141156255598915,-0.574535839688361,-1.10066350635126,-1.28177639193337,-1.1628213296068,-0.870043349176747,-0.577021286253261,-0.258956377143293,-0.0799459312169256,-0.016291997387472,-0.000659233800323253,0.002738989744248,0.00593572121888326,0.033421390859502,0.149540425182838,0.415089274543797,0.741525550430044,1.0784300785797,1.20251640904179,0.861542677887247,0.103846803040017,-0.656383608346683,-1.14683607214582,-1.20045389812127,-0.943783446537895,-0.577021309707936,-0.236879927201041,-0.0829849599782142,-0.0297190027416704,-0.0147012189244519,-0.0087542903895981,0.00239669742696379,0.00814501607236605,0.0137784053739878,0.0575765016923851,0.178075508879751,0.337794677802411,0.527071990180496,0.636580608158113,0.499166345100943,0.0652920185020921,-0.42294629927689,-0.698563239384246,-0.675264382663893,-0.471606694429983,-0.236879934990935,0.120903565559027,0.0643949095158933,0.0189030143281846,0.00687948953024026,-0.000175716502386456,-0.0050288654269143,-0.00805243867975899,-0.0116283273308433,-0.0203625682412701,-0.056007380971034,-0.161250987124141,-0.281214115910695,-0.354260623685399,-0.262881763484314,0.0145154688703576,0.144998320730583,0.197544653779137,0.20749436435049,0.170076055625602,0.120903579542949,0.45669729505075,0.207196300371402,0.057051170594122,0.0150461986824466,0.00700343873449604,-0.000327546206832509,-0.0110281272508999,-0.0354038534799077,-0.111283732173744,-0.301183246510838,-0.621053133657546,-0.938828023273878,-1.09039970622891,-0.875871661770775,-0.285880733502692,0.473569970055003,0.976123958702711,1.01788251400298,0.761822125288273,0.456697329085283,0.742198445359555,0.38657986475689,0.126829875783178,0.0302682299618397,0.00619496144717561,0.000243502606160649,-0.0121238132276417,-0.0660806528506198,-0.235778238592989,-0.570608664711838,-0.957417286721014,-1.26316152992429,-1.33326332040601,-0.9819388574122,-0.289933403432938,0.552130533356351,1.17856514968335,1.33373575775387,1.10595976393481,0.742198489983393,0.977285800729841,0.619317292668694,0.267347312107747,0.098566190954423,0.0313130231832621,-0.00533463009245714,-0.0537014474743894,-0.167245021478042,-0.444629284226378,-0.884312720099656,-1.1466023585173,-1.24382233597714,-1.14367949814205,-0.767792687723122,-0.182819854377809,0.464045331526144,0.97385184828055,1.21023738043912,1.20160964700867,0.97728582323166,1.21337645755326,0.922765528502143,0.527799306693844,0.280918834059046,0.115549472848833,-0.0275440098967618,-0.184806832815661,-0.398097167931655,-0.744942371249087,-1.19486030978932,-1.26648125306903,-1.02989542916151,-0.763443895113109,-0.446110148323717,-0.0852781162248034,0.280562652428875,0.60402512333329,0.873949923821397,1.14472699255652,1.21337648180688,1.21021542189616,1.13768514812472,0.862134855761967,0.593074867297393,0.274941582752802,-0.0834699837894954,-0.437551031824139,-0.751392196236923,-1.01877465430497,-1.26041886258757,-1.18863569965235,-0.741750488363158,-0.397037766221133,-0.184378812482579,-0.0272661169370769,0.115695648873866,0.280639494900532,0.526404463605449,0.920093049876656,1.21021539342138,0.958528041747095,1.1771518646038,1.18007869635643,0.946665657240105,0.450285540435155,-0.177569880889512,-0.745490557088768,-1.11275824261813,-1.21478490363157,-1.12509451438073,-0.868723767666621,-0.433547655043613,-0.160433335481614,-0.0502127521138513,-0.00448853954025611,0.0295586747347703,0.0936694564690192,0.25831331119221,0.604950347130958,0.958527991428039,0.710904495551923,1.0642206266479,1.28619575985167,1.13720222485827,0.531447076769441,-0.281568889612896,-0.947349095868985,-1.28487407073184,-1.21619136180888,-0.920573964452538,-0.545628086979095,-0.220593411300055,-0.0582861199028502,-0.00881282491752558,0.000907768708998819,0.00453786579164642,0.025132777535767,0.115657500707655,0.366052441669557,0.710904444894465,0.417166568573851,0.707485790082594,0.959781904034998,0.930320744594557,0.452018481848399,-0.280400706847557,-0.841206625726591,-1.03525348282648,-0.880022299339675,-0.573691913797708,-0.270683435312229,-0.0951678361059496,-0.0283780301404699,-0.00842114666546321,0.000152212190798061,0.00568488228682507,0.0107707271026005,0.0461472805714283,0.184094981926177,0.417166548332752,0.0780591522072196,0.110910227665504,0.147328460382282,0.156323544107005,0.129347327796831,0.0178117786179187,-0.23366736742175,-0.299216421385302,-0.218105550321515,-0.109021673857733,-0.0231826733260378,-0.00442931205739852,-0.00557582192037854,-0.00618850048002442,-0.00472460885159888,-0.00102092594902911,0.00348576542540444,0.00877411936072834,0.0406886481481491,0.0780591313781629,-0.27845222953733,-0.529670992076387,-0.737048144932069,-0.744188830271699,-0.438403868700331,0.0724199929956323,0.52983178702768,0.689993081949363,0.588040868556889,0.388536641955984,0.210398546416042,0.0737958651979082,0.0202134435447244,0.0102675228104761,0.00268802795895043,-0.00994529358141016,-0.0186026050100502,-0.0401699604086097,-0.106345975740082,-0.278452229030855,-0.612442507901673,-0.992739264989589,-1.25561702011837,-1.19362649344906,-0.679679155876671,0.111066087049811,0.896699518971412,1.25404239337026,1.13136456937767,0.784497567484763,0.443881874551386,0.16571088257217,0.0408552663655243,0.00874515277407728,0.003172168050538,-0.00225033967016623,-0.0211055239910499,-0.091129824456435,-0.280612774228667,-0.612442492327584,-0.895132975679588,-1.19692340596162,-1.32220274754244,-1.13644640334693,-0.593083802879578,0.146874698738452,0.859927775259011,1.26440179664926,1.27784328360395,1.03817244671823,0.689648957909263,0.315964420797364,0.102460664744403,0.0280018179312393,0.00530389205773633,-0.0104293954298317,-0.0531983378433369,-0.190455143104024,-0.513198515926646,-0.895132959092042,-1.18824908789632,-1.21070801652928,-1.07883414068334,-0.807592065560583,-0.379131535577605,0.127457146532159,0.603474607908576,0.943409734245658,1.13312269824741,1.19632952157376,0.965799512730468,0.552000489750322,0.259635603637574,0.110843106047795,0.0245238556564628,-0.0543202865797135,-0.17126526925201,-0.4000640193062,-0.837113671701668,-1.18824909046381,-1.23190731778735,-1.08557247732576,-0.719303334365496,-0.430687232651546,-0.174350852623017,0.0703203110863309,0.307992932636497,0.55201770073638,0.854057861140584,1.19602937805186,1.19566003600562,0.850551426182725,0.547274266882699,0.304373782454656,0.0693355627587971,-0.172471644349374,-0.427460978789058,-0.721129040682924,-1.11866069744229,-1.34222922163257,-1.24429630292718,-1.10111541326366,-0.730845579528088,-0.43920914970115,-0.17794492127699,0.0718420911905131,0.314294966752673,0.562034494771493,0.866442552990927,1.21008533906094,1.20960106319143,0.86226047789605,0.556578850186344,0.31015674423057,0.0707382849362996,-0.175739955995257,-0.435289286486368,-0.731900420823971,-1.1355138773173,-1.35052534865851,-1.18744690520092,-0.840584153284325,-0.400353916569417,-0.171004422336365,-0.0538260311856284,0.0248442036592612,0.11093784685449,0.259890076664809,0.553272044701958,0.967114815933868,1.19704610362944,1.12923109339081,0.935815313948261,0.597647360356313,0.126379443766615,-0.374667698806236,-0.79886611416157,-1.06637923807104,-1.20559843316876,-1.18744691595546,-0.878551201274545,-0.503236354542983,-0.182922250013473,-0.0486795466188415,-0.00851896270118662,0.00493274867922289,0.025138214742767,0.0964417629637028,0.306932633000205,0.676096163299422,1.01910465077196,1.25610254244565,1.24165053237596,0.84301956230915,0.142686590219958,-0.582412769319186,-1.11517356443298,-1.29760028571997,-1.17639861027797,-0.878551242269394,-0.582801796162928,-0.262302104485811,-0.0812703326819961,-0.0166011839292479,-0.000667185355445547,0.00281900702721785,0.00608916488863895,0.0339078688442,0.151706343027087,0.419923577482843,0.748228575167068,1.08968339810064,1.21746946607369,0.873128472368314,0.104934045680382,-0.665141670907434,-1.16058075906417,-1.21351124318799,-0.953677375681592,-0.582801828174081,-0.237439228322906,-0.0830043165573716,-0.029946375782613,-0.0149996532959579,-0.00900835104865487,0.00247401406524732,0.00833205615017258,0.0138616604378559,0.0578372736107698,0.178920738862641,0.338745629590324,0.529105810787352,0.641577312538777,0.508034412092999,0.0642184315484287,-0.428160418679095,-0.705682881421852,-0.680035326588437,-0.473822723858518,-0.237439237583767,0.126084062642742,0.0673565998401044,0.0200885640815505,0.00735389893107936,-0.000106069363132336,-0.00515661256184305,-0.00842502452922209,-0.0123910798702546,-0.0219416633725074,-0.0592778710073131,-0.167703728825528,-0.290943693332337,-0.365844602044505,-0.270737153683088,0.0184812371871236,0.14879750766142,0.204888376410115,0.215317530997351,0.177187815481994,0.126084081305074,0.466516309987262,0.212900547438507,0.0592250151505279,0.0158987554762326,0.00736835946259434,-0.000412166126323431,-0.0116445884470721,-0.0370048801195791,-0.114997284817835,-0.308404789494631,-0.633783504850386,-0.957509494214813,-1.11145257902056,-0.893570989752567,-0.292574059654199,0.48567292644776,0.997503858556657,1.03829035793979,0.776831905769939,0.466516352685091,0.754355710781297,0.395473381321896,0.13043395450832,0.0316220591745484,0.0065671308098772,0.000164989723475656,-0.0128390591285483,-0.0683768678893471,-0.241801263743621,-0.581119231952357,-0.973305432117236,-1.28592260411802,-1.3575667506199,-0.999815998144499,-0.29557947862363,0.562405709316395,1.20112421961135,1.35858980597591,1.12474376451769,0.754355764537909,0.988817591931394,0.631188925958969,0.273131515085365,0.101365905016488,0.0322533573869573,-0.00556080402184127,-0.0553370380761165,-0.171275688386639,-0.453662744307866,-0.897480688732882,-1.16206220406499,-1.26481201297086,-1.16444497430973,-0.78228856425444,-0.186257879638253,0.472884727378711,0.991801900014092,1.23154949336768,1.22036653173768,0.988817618442286,1.2255835400468,0.937030034522143,0.536638245070462,0.286704269000515,0.118063963560518,-0.0281318709683256,-0.188703743870349,-0.405539802988682,-0.756426226117713,-1.21030240999821,-1.28160140262952,-1.04539654608798,-0.777464666639435,-0.454971846231021,-0.0869781612886623,0.286314599179413,0.61551534307166,0.888427016338356,1.16084372552465,1.22558359094489,1.22156456199654,1.15219706957814,0.874440311371819,0.602775631111041,0.279796030797121,-0.0848673053084238,-0.44497141018084,-0.76327162372107,-1.03215009420189,-1.2742453432337,-1.20335159003098,-0.752761494237144,-0.404283608289439,-0.188200063077417,-0.027830686370659,0.118174864431703,0.28627261052188,0.534880055937531,0.933730279095543,1.22156451248734,0.966993224316131,1.19138047350268,1.19578036759266,0.959761529068969,0.456693819996208,-0.180165729207275,-0.756156840394341,-1.12796551577064,-1.23038747471644,-1.13693032584439,-0.879392259850808,-0.440638261945777,-0.163300004217096,-0.0512762743852216,-0.00459407067539075,0.0301885942796902,0.0956423667817459,0.262522246215056,0.614528931348478,0.966993170542831,0.718010912935729,1.07554081713192,1.30212474885745,1.15199163720253,0.537837793987255,-0.285886010223142,-0.959151551370379,-1.30028826727178,-1.23036619344294,-0.930375097797472,-0.55212168095005,-0.224127899936801,-0.0593118825374043,-0.00899215454906098,0.000932387720686802,0.00463638880261897,0.0256655991252208,0.117421477137315,0.371722072051194,0.718010857166412,0.42053494996826,0.712882075219925,0.969136786284478,0.942691074152819,0.460057329027935,-0.285956813352589,-0.852394627603636,-1.04559781344637,-0.88791521579845,-0.578456200826178,-0.272981655559435,-0.0963213929874273,-0.0288839375348802,-0.0086366509203159,0.000138837685199872,0.00586116979946089,0.0109764474621935,0.0466007651903685,0.186153835531204,0.420534927488645,0.0761764974747323,0.10749526971237,0.14336912002674,0.154972452786145,0.129902961496531,0.022783034987366,-0.235511037341224,-0.299848949657089,-0.216192855678863,-0.106607835087164,-0.0211558877774535,-0.00349796244571955,-0.00539514861676905,-0.00626605754668926,-0.00480845460832394,-0.00109056594784501,0.00342475969425392,0.00837920695177665,0.0398897183119601,0.076176476328237,-0.285834255463848,-0.542091041874302,-0.753548698455329,-0.760456104409376,-0.446850804424989,0.072490396772741,0.544948840437266,0.705728896226009,0.601394052095314,0.398115231314434,0.21642325968676,0.0766070269035899,0.0212883421501951,0.0107707664453336,0.00280972754327185,-0.0103707333309897,-0.0194979870916204,-0.0420285363496236,-0.110086196225235,-0.285834248983101,-0.623969882175073,-1.01124362251464,-1.27897543421242,-1.2161463259268,-0.692465393950519,0.11359671500374,0.915020479869427,1.27882762580962,1.15236352499388,0.798475455229693,0.45326156630424,0.170468610690002,0.0425151393844678,0.00933900400409217,0.00331712676398544,-0.00251413772583296,-0.0221799743198012,-0.0942453372074189,-0.287434468935833,-0.623969853410077,-0.907643690353723,-1.2166791313757,-1.34565928376378,-1.1573686347204,-0.604182505515054,0.149496903635815,0.875932134636931,1.2877088376807,1.30022149020424,1.05331285137169,0.70125143130851,0.323345260137287,0.105447653348396,0.0290960779014176,0.00549546076166399,-0.0109633482449353,-0.0550075260330221,-0.19527377608171,-0.523432762379947,-0.907643653563587,-1.20242936655981,-1.22862850864134,-1.09715174481358,-0.822988199829919,-0.386503803262644,0.130045756459659,0.615107950359051,0.960249179407916,1.1514687611749,1.21124773548897,0.978942674768712,0.561930055549944,0.265296714422196,0.113545921286126,0.0251314758473548,-0.0557159288790815,-0.175186803146285,-0.407697403889435,-0.850816136131228,-1.20242936483362,-1.2442963875989,-1.10111540918532,-0.730845601722083,-0.439209163284677,-0.177944922805468,0.0718421016298474,0.314294987914528,0.562034524056685,0.866442590878997,1.21008536381425,1.20960101641867,0.862260442198144,0.556578822028259,0.31015672371848,0.0707382798443393,-0.175739954596567,-0.435289273437394,-0.731900399583094,-1.13551388626965,-1.35052525684901,-1.24573033710628,-1.10475177255829,-0.734694671831075,-0.442112141541985,-0.179176702733122,0.0723587546582185,0.316447371441914,0.565427810266619,0.869985989188227,1.21395203872062,1.21339524500683,0.865217585733385,0.559283770788922,0.311820481939226,0.0711464503043806,-0.176658554984842,-0.437514132430675,-0.734958143146107,-1.13921644540642,-1.35038893629616,-1.18924612562797,-0.844047973082765,-0.401845828861285,-0.17185459678116,-0.0540942358382086,0.0249929342792457,0.111502722021348,0.261164033317279,0.555338845592326,0.969697875439162,1.19975476448594,1.13238822456361,0.938555506938489,0.599606988156287,0.126827574078717,-0.375903330281781,-0.801444030683802,-1.0692810216105,-1.20998264903827,-1.18924613883208,-0.87940674233762,-0.504525509885912,-0.183282538458658,-0.04866481505799,-0.00847415582571513,0.00493629040634946,0.0251175632503789,0.0965531596394696,0.307740178871605,0.677312246080488,1.02026780811093,1.25840364876434,1.24405805723942,0.844567033774361,0.142751098009225,-0.583718953325414,-1.11737715825977,-1.29958162564385,-1.17847359487979,-0.879406764394981,-0.582494705435659,-0.262139903663461,-0.0810907930134894,-0.0164437236928173,-0.000584435760729944,0.00282307049278518,0.00599592333813062,0.0336642841979328,0.151514157909005,0.41980678800319,0.747624785362599,1.08963811280368,1.21864712834082,0.874297066840464,0.104720327430465,-0.666391216627657,-1.1616451999122,-1.21380544295567,-0.953632247688888,-0.582494719697223,-0.235201886505831,-0.0817283820317171,-0.029477566801577,-0.0149026365258812,-0.00903702831194897,0.00248844511276144,0.00828679959826463,0.0135609670875122,0.0570580141407215,0.177376521566256,0.335958732441743,0.525608132669714,0.639197566176992,0.508860239350187,0.0631685544213352,-0.428412088625826,-0.704562198531489,-0.677285414103917,-0.470848119909024,-0.235201888274788,0.130156575434579,0.0695820175826929,0.0210050448515805,0.0076914480700408,-3.98347603201183e-05,-0.00520706001153385,-0.00864385347940455,-0.0129563664044104,-0.0232950375291105,-0.0621253454199014,-0.172809063604726,-0.298105250877648,-0.373496317896151,-0.275497510619697,0.0199433673493128,0.150642684676973,0.210330733650742,0.22189225629305,0.18309869942338,0.130156588026181,0.47176158124715,0.215939025523002,0.0604976314384156,0.0163929700531652,0.00754820221986419,-0.000465096010616655,-0.0119795236421215,-0.0378929928597131,-0.117052543475855,-0.312319624752496,-0.640441182299673,-0.967061347590822,-1.12167262205143,-0.901204406270189,-0.295155155855844,0.490961618395751,1.00741687091435,1.04851786929935,0.784784920923558,0.471761605354099,0.759723917150623,0.399408284921933,0.132166506467416,0.0323492961947202,0.00678125073844192,0.000103485050924891,-0.0132541499899528,-0.0695436231379522,-0.244554586066019,-0.585632383488516,-0.980198377216678,-1.29595879917597,-1.36816678548325,-1.00743712336283,-0.297823707200559,0.566860668848513,1.21080509426457,1.36943237226608,1.1330493588768,0.759723944583865,0.992667342783895,0.635881078173617,0.275470448458111,0.102550163223757,0.0326647395734555,-0.00567526503986771,-0.0560643882345793,-0.172929786845263,-0.457173115519321,-0.902004702234216,-1.16776858205149,-1.27317455847388,-1.17278621769901,-0.788094168529499,-0.187614802818915,0.476464283146119,0.998988055085946,1.23997895635487,1.22772385266972,0.992667352676518,1.2284032483202,0.941322298751632,0.53951995378868,0.288602389189929,0.118884329796609,-0.0283255067251679,-0.189972698621201,-0.407954093029214,-0.759714487282151,-1.21485267700286,-1.28621759638818,-1.05057565349838,-0.782610992329354,-0.458207641588159,-0.0876165605040198,0.2884253359442,0.61970556063994,0.89352075195067,1.16587752249485,1.22840327374312,1.22359540187831,1.15566492728286,0.877399614812317,0.605204118430377,0.281027640693641,-0.0852064647757555,-0.446787015236271,-0.766284510894728,-1.03518263811281,-1.27757626330516,-1.20723741373832,-0.755585565629355,-0.40648176267845,-0.189371052443848,-0.0279983137388777,0.118940822061624,0.287986972986306,0.537391439707561,0.93719216551428,1.22359536583438,0.967909059704458,1.19416578288135,1.19858535455253,0.962081417582897,0.457827753746651,-0.180678315660879,-0.758108064021077,-1.13069971810435,-1.23327812878242,-1.13903488994573,-0.8814713520395,-0.442188593234922,-0.163778493599295,-0.051424263725071,-0.00458770079192138,0.0302846359280077,0.0959836481076126,0.263295389282084,0.616901334586189,0.96790903453233,0.718296378376145,1.07628767524104,1.30389992909882,1.15379898492561,0.538352417939112,-0.286793718140089,-0.96060267360606,-1.3018453057494,-1.23166402840057,-0.931157270949923,-0.552625580205055,-0.224391276572407,-0.0592076590394146,-0.00887126037058225,0.00097335446055133,0.00457725527901291,0.0255715254535659,0.117312193915498,0.372407665389234,0.718296350245569,0.419272072104589,0.711053686309437,0.968037654509706,0.943396658736776,0.461243747141548,-0.287388424300952,-0.853400650072576,-1.0448284266183,-0.886451014494883,-0.577069079647776,-0.271960018605475,-0.0958226247597488,-0.0286845260811492,-0.00857368420119792,0.000157041709503092,0.00585659144943343,0.0108314709160168,0.0461671635122442,0.185539864469472,0.419272061174256,0.0731167694192166,0.102674076554462,0.137804811071311,0.151365529372904,0.128747176894624,0.0250966723909545,-0.234113545058456,-0.296209688517376,-0.211438871389958,-0.102726356466613,-0.0186808079232391,-0.00234865916457252,-0.00502331253562311,-0.00619424153611518,-0.00481922467377555,-0.00115766796236038,0.0032263010855363,0.00772659054222989,0.038349671792302,0.0731167613182746,-0.290467650375062,-0.549498009419006,-0.762807196604499,-0.768777161689183,-0.450114096482135,0.0723435357962257,0.552148567107458,0.714443387455119,0.609483596336725,0.404077312142611,0.220089772843171,0.0783685742366194,0.0219688099541828,0.011034909223436,0.00286035581460598,-0.0105580950248533,-0.0199917415759985,-0.0431812388604403,-0.112532601964912,-0.290467642443639,-0.629421650635987,-1.01995127872086,-1.28979806289312,-1.22622509306333,-0.697796125712841,0.114898633474736,0.923011990289437,1.29003352679805,1.16224836151532,0.805228914142107,0.457715423486766,0.172870669178808,0.0434374942484987,0.00968647698807821,0.00338435740297781,-0.0026888678619143,-0.0227854251815031,-0.0958506760093056,-0.29075257133235,-0.629421629014976,-0.912435779930867,-1.22499157274571,-1.35527650884716,-1.16612187270219,-0.608741430186107,0.150661804703719,0.882603962298975,1.2973813163271,1.30953542388641,1.05951414400718,0.705819030741351,0.32652052703147,0.106829856879187,0.0296388609364538,0.00559158874326965,-0.011254295562211,-0.0558893953504423,-0.197409629297163,-0.527529848213652,-0.912435749124532,-1.20584434679893,-1.23590904563316,-1.10415029110295,-0.828876025519789,-0.389361049671204,0.131049289495322,0.619601463366655,0.966640107829129,1.15825305532372,1.21624888091014,0.983201521346693,0.565430069958299,0.267437913536626,0.114545158548472,0.0253545036899357,-0.0562535043009043,-0.176657853057579,-0.410325805595575,-0.855697378483265,-1.20584432331627,-1.24573041009854,-1.10475178383776,-0.734694686047609,-0.442112149306749,-0.1791767038585,0.0723587599335177,0.316447382291414,0.565427824915427,0.869986003870028,1.21395205323218,1.2133952166754,0.865217571475822,0.559283756625471,0.311820471511626,0.071146447775778,-0.176658553895188,-0.43751412496611,-0.734958129400351,-1.13921643622235,-1.35038886387611],"Archive1101_field3":[0.00140277269092111,-0.00239517314243414,-0.00581982975162029,-0.00889922227038668,-0.0108261725294562,-0.0116022478798425,-0.0111934277529155,-0.00951863299365005,-0.00651623569051267,-0.00280190985577318,0.000529891776191219,0.00482665590416602,0.00980619741348774,0.0138290829412206,0.0160310576219668,0.0159939500818058,0.0137214698642426,0.0097332183950593,0.00486754222871827,0.000414445440008879,-0.00054592104003528,-0.00327551320255853,-0.00574652536054159,-0.0071958240541642,-0.00773439569563159,-0.00766209614236054,-0.0070842781154137,-0.00587399209165792,-0.00382111153718448,-0.00111928357680024,0.00228419266239882,0.00722786788135765,0.0126681638547624,0.0171292680153651,0.0193207533159169,0.0185906743841018,0.0150006622952476,0.00961516682802752,0.00405793095198635,-4.08844963341649e-05,0.000379083711772627,-0.00202316417280835,-0.00285460611569933,-0.00292195787437828,-0.002800777498912,-0.00282326276424123,-0.00304174377540761,-0.00320959172161071,-0.00279786445974909,-0.00123518877905519,0.00214739582026163,0.00747768820844835,0.013579318453581,0.0186315597846648,0.0209899195638978,0.0202438090561698,0.0163827285828896,0.010613259898904,0.00466209582871169,0.000202720204732621,0.000164159473454137,-0.0014009551953262,-0.00159697448469634,-0.00132181665500757,-0.00106699051213118,-0.000984151717874319,-0.00111169670078828,-0.00138436542891062,-0.00150213260694625,-0.000741780810202029,0.00187166998871127,0.00598744871064128,0.0103626134494685,0.0134205123161744,0.0143276922683432,0.0139775112725721,0.0118880914245676,0.0080600862232961,0.00370636051990074,0.00026644807802014,0.000187471510440011,-0.000589908297477418,-0.000565040452955664,-0.000384855384817897,-0.00025298182914186,-0.000218498815434055,-0.000285951321904308,-0.000442146012499232,-0.000582321912662736,-0.000322733411073803,0.000948395845477023,0.0029237163507481,0.00474506282870447,0.005485155004683,0.00539731139299375,0.0054194225189905,0.00512354981824649,0.00376478597489027,0.00178483907847921,0.000102897226245502,-2.22642154117137e-06,0.000142011909656221,0.000150891402828663,9.05284333907444e-05,6.50700130840366e-05,6.61956121398987e-05,0.000102848495257787,0.000170324130973012,0.000227972649469247,0.000124449330540241,-0.000279921630423739,-0.000917063851348499,-0.00152286858985731,-0.00172814212281612,-0.00166458397542941,-0.0017466239111827,-0.00170417935067677,-0.00134087999458343,-0.000648628337958527,-0.00016175510830598,-0.00016816787087967,0.000903262600590106,0.000967744694930723,0.000714157445631995,0.000528569860879161,0.000503300334736451,0.000636419811232504,0.000889433983849274,0.00107697273414842,0.000579452363842139,-0.00138104706409056,-0.00445485693328839,-0.00748471767440287,-0.00921595999988421,-0.00964709598689448,-0.00977076696118168,-0.00887133223642222,-0.00627778922446969,-0.00292533830038653,-0.000362279988685098,-0.000246744869268851,0.0017213255823356,0.00218945910493044,0.00203665525039219,0.00178479988809414,0.00172836752172407,0.0018938016467807,0.00215298969701958,0.00211362334276527,0.00101533394681266,-0.00203576056494233,-0.00689406925248744,-0.0122864773296093,-0.0165173839332832,-0.0183254691794085,-0.0178391059431935,-0.0147667694847936,-0.00971358720807311,-0.00435161231433634,-0.000352533999230908,-0.000240682592131596,0.00253105716331216,0.00401423377805681,0.00463014404977865,0.00470375928479637,0.00469195351506644,0.00466694075971965,0.00438973321594944,0.00339955153329597,0.00134837522856447,-0.00210837887734635,-0.00748573856010317,-0.0137073231324135,-0.0189170458909587,-0.0213695334843514,-0.0204564860031232,-0.0164375244937539,-0.0105655779191869,-0.00462849834889394,-0.000137730073867223,-0.000217936051647185,0.0032600421630249,0.00640882422061865,0.00881078926902144,0.0100491361206253,0.0102947917644489,0.00956399658995477,0.00776758172794476,0.00486274490471225,0.00154055942304162,-0.0018155406994135,-0.00644414564226855,-0.0115241724644271,-0.0154655453729516,-0.0172879554747272,-0.016604827589133,-0.013610822171201,-0.00900942593166118,-0.00402449742595034,0.000153094320232929,-0.000154598895617949,0.00402861815298117,0.00900672622976469,0.013608454598234,0.0166030504039236,0.017285069244104,0.015460619384917,0.011519160439389,0.00644237217556543,0.00181802103295299,-0.00154352248376818,-0.00487017865551919,-0.00777191501583897,-0.0095688118072667,-0.0102989100324185,-0.0100516579823209,-0.0088124570596908,-0.00640915372585654,-0.00326384416423755,0.000211212681733485,0.00014222384486703,0.00463372844091482,0.0105643262922259,0.0164315627773085,0.0204487089464121,0.0213624707922322,0.0189139243068277,0.0137076791093212,0.00749205200185596,0.00211311505005331,-0.00135357589659007,-0.00340467088329277,-0.00439157740581382,-0.00466995740261414,-0.00469535409267011,-0.00470667311750287,-0.00463220053824526,-0.00401651065650368,-0.00253696201184958,0.000241280465475517,0.000356438466699313,0.00435669820483449,0.00971494132633716,0.0147602395360911,0.0178199931507123,0.018299978957347,0.016500569495568,0.0122831558369862,0.00690335657435287,0.00204093064415853,-0.00101748361187327,-0.00211487982967129,-0.00215398316777581,-0.00189469153071669,-0.00172934806375168,-0.00178613839584363,-0.00203760510022467,-0.00218984048844149,-0.00172332537034738,0.000245913422365846,0.000366176838212099,0.00293186879037785,0.00628407213376418,0.008871371686267,0.00977360966434764,0.00966445801024294,0.0092311883693842,0.00749506141381516,0.00446684063922378,0.00138628989130701,-0.000579820662187036,-0.00107756719156143,-0.000889734086899032,-0.000636621726567213,-0.00050329916890045,-0.000528791941999283,-0.000714762399575977,-0.000969269446908057,-0.000904366248341375,0.000168440491080471,0.000165006735865447,0.000656288284351686,0.00135466530643456,0.00172694575893307,0.00181937944203443,0.00176010254226475,0.00177875773857775,0.00154236482048933,0.0009290751039854,0.000284622584456817,-0.00012429451674163,-0.000228766719682864,-0.000170650606014083,-0.00010322546168029,-6.66260085865877e-05,-6.55833536716863e-05,-9.08281896699475e-05,-0.000151708520624908,-0.000142561045028909,3.048173119353e-06,-9.99332734450009e-05,-0.00177683415729506,-0.00375060719725108,-0.00509924578977009,-0.00537342894398732,-0.00535271990729556,-0.00546728639543445,-0.00473644137543619,-0.00291411809143838,-0.000943252769580924,0.000322586914589119,0.000581068388431183,0.000441740696496257,0.000285726261632865,0.000218406469936574,0.000252888144826524,0.000384758274855902,0.000564640379690888,0.000589424714432671,-0.000187618703065793,-0.000267918335405155,-0.00369730899281579,-0.00805132332177065,-0.0118933529951962,-0.0139893683164282,-0.014344628359621,-0.0134305238807044,-0.0103625917566293,-0.00598196606000497,-0.00186647355740968,0.000740764038065063,0.00149975117458721,0.00138385815207686,0.0011108139444871,0.000983699768924896,0.00106665402100672,0.0013214806470256,0.00159575379045154,0.00140047501005363,-0.000165151307809307,-0.000195609052251672,-0.00466788235162775,-0.0106020991517756,-0.0164050965080897,-0.0202495250654671,-0.0210085081585186,-0.0186414400424796,-0.0135832624561204,-0.00747472277711995,-0.00214234462568791,0.00123465161038344,0.00279473912500401,0.00320856318569472,0.00303957194478592,0.00282089088960527,0.00279879180895414,0.00291965890819903,0.00285474273942023,0.00201189265211288,-0.000377761838516454,3.79270320539926e-05,-0.00409056142714041,-0.00955946403763851,-0.0150167773848571,-0.0185909738468307,-0.0193245638255109,-0.0171332375645551,-0.0126723597216113,-0.00722614866672307,-0.00228191388110521,0.00111645846234883,0.00381823073032052,0.00587291720835239,0.00708204009062773,0.00765874517548004,0.00773040314460339,0.00719368359343696,0.00573408989771169,0.00328941873357569,0.000455458902363083,-0.00072372606709109,-0.00495720136750398,-0.0097367661146563,-0.0137258521311275,-0.0159986055408754,-0.0160315708581332,-0.0138298099351317,-0.00980858981913457,-0.00482563530973065,-0.000533899118205437,0.00279796001495577,0.0065147280121729,0.00951736720246849,0.0111909114651221,0.0115981475578083,0.0108198910223614,0.00889206718711204,0.00581293700182034,0.00230164079706976,-0.00182900992629085,-0.149819885542488,0.0122705294403169,0.14927075757096,0.265051112710006,0.345095255519744,0.375693644515476,0.352122244540695,0.278207703402877,0.165014550678088,0.0280123676676189,-0.117525801267668,-0.267367278440381,-0.410411591203112,-0.521962235484055,-0.581762016195142,-0.579365154677671,-0.516586129773514,-0.407512533422077,-0.274847615459332,-0.120691780745128,-0.0671793745201506,0.0474845522661493,0.128612831949041,0.16837615508991,0.183522777416692,0.183257614026418,0.169905940408904,0.138135238713406,0.0758917341199268,-0.0302973229212276,-0.184571165006416,-0.390821911431843,-0.625060285615005,-0.825344240325396,-0.924069500338816,-0.884388557011215,-0.719072200601581,-0.486235148615358,-0.258354224415051,-0.0891449352986595,-0.096447926154637,0.0157312420573205,0.0585830346657289,0.0676286281402009,0.0668534368786921,0.0672452436374455,0.0706395984841008,0.0708177912866199,0.0496445666258125,-0.0233286495889467,-0.173922824091489,-0.419515830291523,-0.731193687315377,-1.01621262574542,-1.16430038369158,-1.11618725541852,-0.88934640032813,-0.576805422225877,-0.289012298322506,-0.0911393734605366,-0.0876980439967613,-0.0032340290979123,0.0229916076239429,0.0236130522384101,0.019993817243095,0.0184421007857306,0.0199886412765251,0.0219706028810803,0.0121609529318592,-0.0388035397673035,-0.166358609718995,-0.392529851590486,-0.687271324993215,-0.95612212170475,-1.09228556574228,-1.04909761890685,-0.838053007014481,-0.540534079532559,-0.269059456402714,-0.0909373293404939,-0.0881487286103684,-0.0261348425889988,-0.00380976605750333,0.00101437610534579,0.00149661303011902,0.00126497552063557,0.000669340252837024,-0.00204135839714479,-0.0139381474951042,-0.0524644199695727,-0.140435794081077,-0.289959776675966,-0.477407753852117,-0.641226653573097,-0.720865794971265,-0.699067104386363,-0.576870722876119,-0.39182462189026,-0.212430022540452,-0.0894826574293061,-0.0854401437176261,-0.0506455795231424,-0.0262457111107051,-0.0141951290659104,-0.0095767455494197,-0.00913790292435818,-0.0122818303384598,-0.0213490663826239,-0.040040685546252,-0.0698022561193505,-0.105739425863936,-0.141922623452467,-0.171828153611279,-0.193061435584432,-0.203792749117148,-0.205258617159317,-0.195106561021246,-0.168734505126007,-0.129017427175842,-0.0875251569511135,-0.0839191922580835,-0.0805868607647882,-0.0564057139804426,-0.0362970294426213,-0.0262773137601675,-0.0249203677217885,-0.0315064952392552,-0.0475396776133397,-0.0717367533375477,-0.089127234672221,-0.0702878488442496,0.0037823630097547,0.124695868667299,0.242736498413292,0.301689506618132,0.278531234086722,0.181232687642306,0.0542947188276634,-0.0430899879162688,-0.0856282471652878,-0.0835527253401279,-0.118082853910422,-0.106528838868379,-0.0845757453487787,-0.0701383611096601,-0.0676191623111485,-0.0771168643079444,-0.0967739490827614,-0.116806013418228,-0.110202447423918,-0.0418482341606218,0.106513357784461,0.320831402090866,0.528084311607688,0.635552617131308,0.596867649937535,0.42863216800656,0.207093022388401,0.0220797850388929,-0.0847160342124139,-0.0843944606823064,-0.162808063998662,-0.18845258206605,-0.187349294861059,-0.18035412043988,-0.178268771902384,-0.182921309592692,-0.188417796004213,-0.179708679725803,-0.131517873108993,-0.0243118288165001,0.148080429070754,0.369504104439236,0.574973572348441,0.681883543119892,0.645296332203758,0.481392704494038,0.258597939306926,0.0561702371028921,-0.0851556904860491,-0.0857570709142681,-0.21056764159686,-0.305282916844368,-0.369262020645703,-0.402590637684114,-0.407867025536179,-0.3860854920906,-0.336673992010265,-0.258686145213709,-0.151229104540218,-0.017306364690356,0.138919495697385,0.301997081434063,0.436540139531615,0.503874683856768,0.483065117425236,0.380629520806858,0.226853618752241,0.0619874915267466,-0.0872419216176599,-0.0880543941436789,-0.254477749867823,-0.440207235654895,-0.612896236623957,-0.727511999081217,-0.751036766984649,-0.676326817060729,-0.525878171051415,-0.342577507612288,-0.167586108555265,-0.0181997417750933,0.104183575794644,0.193271540946921,0.249418515530416,0.274117701773319,0.267974335724111,0.229969534280404,0.157409827716973,0.0500335086378466,-0.0895388438808194,-0.0897735958448668,-0.283423277057572,-0.547953434886021,-0.828204299736767,-1.03008144434325,-1.07519076751635,-0.945142816246774,-0.690345710433168,-0.407101849843763,-0.176431824426471,-0.0230273410910176,0.0644022501318305,0.100945467081144,0.11163266708478,0.113601739221237,0.113750169884601,0.109824112841112,0.0892926408499032,0.029987223130855,-0.0904861206602735,-0.0898935586536466,-0.28225554128517,-0.569733015794353,-0.88753786249899,-1.1193492146813,-1.17187884851348,-1.02581685888029,-0.735814832792713,-0.418371382198025,-0.17375787953572,-0.0313104465200042,0.0293850011627245,0.042652399903001,0.0400984155939885,0.0369850417436811,0.0377465881118989,0.0413411831495968,0.0389339200549217,0.00684414005103524,-0.0909982640075391,-0.0889814089580014,-0.242019204551542,-0.471842271987767,-0.722107497986708,-0.898333275236809,-0.937434376215758,-0.831098583986635,-0.60847898842114,-0.35502613190582,-0.156392942616692,-0.0432614963314424,0.00116140708268149,0.0104323119270465,0.00958527837880127,0.00814453803580332,0.00810446170133605,0.00898073158113219,0.00609199176288217,-0.0165989140917698,-0.0906490912694779,-0.0872957292101688,-0.168014415941449,-0.274219228877015,-0.381772646804553,-0.454524286931272,-0.471799547911039,-0.433431310573423,-0.342380176199705,-0.22720447895252,-0.125867825488748,-0.0584333416716258,-0.0235653934007402,-0.00951764544858904,-0.00487729154628559,-0.00381854814908098,-0.00460635342574359,-0.00807390787019378,-0.0176725816952545,-0.0405788854043311,-0.0893697937806004,-0.0856537709920128,-0.0811045238521626,-0.0431333754515157,0.0115317725110293,0.0519852081338242,0.0579947957069951,0.0274034454514026,-0.0261109629916694,-0.0725631030664435,-0.0890098803923928,-0.0769184931436873,-0.0517283069533883,-0.0304731518488873,-0.0190066154532304,-0.0152263761776781,-0.0169256099726054,-0.0251220396063094,-0.0424808575721588,-0.0672371903786513,-0.0870034137063033,-0.0845931088559263,-0.00613456933276055,0.145858421840749,0.331446035462871,0.470298304397192,0.499161016366211,0.408090009061416,0.235130184013023,0.059947488907943,-0.0542995242158432,-0.0968935798047896,-0.0892938419579208,-0.0652036342786255,-0.0472284425120766,-0.0403180212298413,-0.0438283778589574,-0.0578071536867973,-0.0810809644604494,-0.100438404950556,-0.0878713657325846,-0.0849734099381486,0.0433786093952989,0.248033215924295,0.482784721209377,0.658611141677956,0.696626466966033,0.581047257539408,0.362989737168383,0.134334466107531,-0.0331014536306979,-0.123205586124977,-0.148876699405828,-0.138418997139927,-0.121136784896743,-0.111373511868868,-0.113341861149929,-0.125786395207894,-0.140690534259093,-0.137656349129277,-0.0797044102178917,-0.0877814542836364,0.047592705115938,0.23439784094554,0.430218393405859,0.571378316847359,0.606297656321272,0.522990363478778,0.354586093714278,0.160824104669,-0.00657686366604828,-0.13009041821298,-0.208682165044752,-0.25003098272905,-0.269034800862234,-0.277129047495264,-0.279284160818218,-0.273243269584297,-0.250381377395489,-0.194637147608778,-0.109386103812494,-0.0560631879163169,0.0981245163401927,0.228366393957785,0.334336172671586,0.394854740666326,0.396786068052847,0.338433591713446,0.229865175695747,0.0901531493454378,-0.057937237013475,-0.203447175666242,-0.342109563045208,-0.458582410924663,-0.535513519898138,-0.560645814998929,-0.529710542598839,-0.447461092647538,-0.328549529385379,-0.189177531420183,-0.0259784125767283,-0.265210904494841,0.0478047262055021,0.317485066578915,0.547970049665175,0.705304622603322,0.765862212136983,0.720895384757863,0.576418225478692,0.351281725339443,0.0795764899367265,-0.200462266496531,-0.498943975279971,-0.794809144783631,-1.02778212602343,-1.15341601286346,-1.14900047815801,-1.01755488698352,-0.788906589207984,-0.513632018437252,-0.206182678806986,-0.105805750648792,0.11698241749629,0.281377828406465,0.364516908439305,0.39637018885279,0.395208334279955,0.366144565543757,0.298914182038026,0.171147147835616,-0.037109387488359,-0.332428058851312,-0.731918360084937,-1.18512576328602,-1.57142226242504,-1.76204235640572,-1.68730263956984,-1.36942802635316,-0.918365811437495,-0.475449452526717,-0.147573228591498,-0.164543714236915,0.050065870955078,0.131262517220628,0.147293336984447,0.144620752432438,0.145550538030592,0.153700926820297,0.155861914904873,0.115563304866992,-0.0244767452746105,-0.313272954431478,-0.781279940897588,-1.36828490466661,-1.89943616833257,-2.17256263348995,-2.08476997234621,-1.66419835466926,-1.07858545743598,-0.532991114486343,-0.154124876628622,-0.147561391584176,0.0111205509518188,0.0571447450777319,0.0548659895534796,0.0458294098743739,0.0422706795254412,0.0463823602725076,0.0529670652756221,0.0380351173934831,-0.0558141205318982,-0.297590931914555,-0.718853616115509,-1.25520035890201,-1.73166701185312,-1.96475452794923,-1.89022200421652,-1.5211540886742,-0.987471511367414,-0.488735864024901,-0.154093156906904,-0.148144791307831,-0.0363328176070346,0.00044766014892792,0.00630320020993224,0.00553364373791399,0.00473623185858589,0.00454811831080663,0.00189478489827364,-0.0162011699877628,-0.0831859366979153,-0.243487770112773,-0.512745187715763,-0.840642294858491,-1.11501207282237,-1.24110599959714,-1.20680445340269,-1.00711866251104,-0.689784883449866,-0.372114312182871,-0.149499546013114,-0.141021931020286,-0.0855674874554304,-0.0452988360057129,-0.0246381666040496,-0.0166919241879919,-0.0159777470842949,-0.0216203613703113,-0.0374478144551724,-0.0690906203009213,-0.116997864197114,-0.171072618001232,-0.222447189167551,-0.263800244532818,-0.295713917980883,-0.313730199340902,-0.315604045852327,-0.299726210236141,-0.261491475710162,-0.204813648936715,-0.142761777556059,-0.13613291331609,-0.144191626081048,-0.10504396577657,-0.0686882642772981,-0.0498652230113851,-0.0473096271049089,-0.0598133850489711,-0.0894151928117104,-0.131692967269495,-0.154166168797068,-0.0989224146801629,0.0601610027743412,0.294629422952615,0.507182916475286,0.607261300918085,0.571306744094288,0.403115632879012,0.164848889928851,-0.0354124032467687,-0.136827300736268,-0.134237973950646,-0.21594346099196,-0.202754150987705,-0.164497497288908,-0.137540790707696,-0.132678505266311,-0.150390885370006,-0.186059906954031,-0.218715935962855,-0.194051082979249,-0.0438759210473062,0.258757106296234,0.676054095516663,1.06744943367446,1.2652551102928,1.19554298352377,0.88260430878214,0.457835828907618,0.0891397674646944,-0.135147382144845,-0.135862687217871,-0.299497775402656,-0.360199974281949,-0.365958463539227,-0.355392364437224,-0.351787279843317,-0.359029720962143,-0.364611028142869,-0.338098442916471,-0.233187617519989,-0.0142359957378723,0.334334720683677,0.774603034805031,1.1770729161372,1.38343036550493,1.31169553024822,0.992000332423388,0.553262483391221,0.148660013308944,-0.138340335154568,-0.138667709670986,-0.386958871582923,-0.581861637573255,-0.7173258995921,-0.788066522442505,-0.799860423177424,-0.754470672748278,-0.650298620751758,-0.485968565964687,-0.268249649432587,-0.00664015971510124,0.306694107024181,0.637645977063674,0.908640321995267,1.04263893857725,0.999676081076478,0.793199833914987,0.482713193129252,0.150795392787238,-0.145826192515633,-0.143719879695268,-0.468482819605376,-0.835179767813266,-1.17729620915289,-1.40415786397073,-1.45165659764801,-1.30531191101084,-1.0077150068465,-0.642995217778856,-0.29873741029201,-0.0119086109343553,0.230459470920647,0.413082909553796,0.528324408025867,0.578495313278318,0.565244296702993,0.48678646258786,0.337215185245632,0.121481009003919,-0.150933212008572,-0.150644152945574,-0.523378362374114,-1.03061985515916,-1.56465665273233,-1.94749009632702,-2.03346003903859,-1.78871396610031,-1.30437494436034,-0.761683567394919,-0.317098585196699,-0.0225678475394813,0.14716312397038,0.219828428863281,0.241058587293953,0.244777524283945,0.245158849106208,0.23760668642219,0.195967774847471,0.079539172638678,-0.153002758809072,-0.153388012258542,-0.518044374644217,-1.05527564740382,-1.63857294332263,-2.05630929389111,-2.1489806920589,-1.88783226421555,-1.36012587349659,-0.772970363036792,-0.312019508704527,-0.0401746197944725,0.0738816317371316,0.096431680517428,0.0891195265869864,0.0819833015139978,0.0839285042515114,0.0928998271398473,0.0907499794411013,0.0316304597929203,-0.154143035013042,-0.15180350521908,-0.434631890731752,-0.851896834276415,-1.29159862950052,-1.58806651783579,-1.64987948734205,-1.47338014611973,-1.09035852425726,-0.638922522433429,-0.275354858133423,-0.0649628990169007,0.0147454717390037,0.0279259187074538,0.0235038805214821,0.0195307430268075,0.0197713170892233,0.0234278853045924,0.0216503234868375,-0.0168380574457221,-0.152383131005059,-0.146278188964891,-0.28498132040006,-0.466909154053322,-0.646128883109007,-0.76316787663429,-0.789970521505784,-0.730055535069192,-0.580603745911051,-0.385458536575479,-0.21136730390279,-0.0952583659712846,-0.036322648770417,-0.0137374301417435,-0.00685467406008607,-0.00555025233314001,-0.00685947123444304,-0.0123045861573651,-0.0275113954620839,-0.0655605169384304,-0.147977760154795,-0.140047527599474,-0.111986878643169,-0.0258040094889469,0.0793031568255131,0.147256631517194,0.156619246201582,0.109074091507409,0.0135050600489195,-0.0842485402384089,-0.135309543252751,-0.130973268717615,-0.0926394657464129,-0.0558014365456021,-0.0349487436597733,-0.027889473614225,-0.0311124906462115,-0.0462693343766329,-0.0771748800096625,-0.118334556220576,-0.141433555590376,-0.136026870692579,0.0348384884207711,0.33728332178157,0.687254777384482,0.93824658823594,0.989704637614897,0.830430656374205,0.511147142474123,0.17098289659416,-0.066550176895046,-0.168789645567811,-0.165876095000417,-0.124598803886054,-0.0914841061786821,-0.078478790195819,-0.0852814507613829,-0.11149360948569,-0.153386032595209,-0.182850757485768,-0.14265978928317,-0.136939240008319,0.127889584039158,0.536216773716267,0.993387570598717,1.32944007620771,1.40068801588401,1.18146673532721,0.761116707209352,0.311178284495577,-0.0282566004876409,-0.218036293644618,-0.279986896470741,-0.267824453723441,-0.237283677121313,-0.218567873120622,-0.221547183712714,-0.243554992587922,-0.267254710472141,-0.251942566178521,-0.126619815393181,-0.144702847818989,0.127916011169668,0.502112562531037,0.891984428842906,1.16956226424355,1.23642441362227,1.07156162518233,0.738395725189332,0.352455830060144,0.0170610074990359,-0.228172887476053,-0.390981320430065,-0.484179093490988,-0.530266183236843,-0.550590194542897,-0.554839686290072,-0.538036730537815,-0.482798338511491,-0.360626539427694,-0.185449427629519,-0.0833747394788842,0.222405147828323,0.492897364547715,0.716161030463211,0.843691591928301,0.847200759430903,0.723955532952494,0.49608829045024,0.206059196178285,-0.089370346455645,-0.36937715093095,-0.643889010402753,-0.874636400466798,-1.02428101645522,-1.07194917549572,-1.01085192815073,-0.849755817693382,-0.613813171031753,-0.339500978413799,-0.022444700325178,-0.355035806916386,0.0992753481604448,0.496627012577521,0.840102265410731,1.07246881096793,1.16235894547616,1.09735075386305,0.88477381445669,0.549436136204448,0.146368591767185,-0.257559853162292,-0.700464039214226,-1.15281040487794,-1.51166952241627,-1.70614921450335,-1.70009917296369,-1.49728375325109,-1.14427117500876,-0.721780985998639,-0.265512698870372,-0.123532657286525,0.20059456683944,0.447736985388713,0.576025044867139,0.625348554398605,0.622904701848553,0.576830705820337,0.472323033429037,0.278097206664905,-0.0272598236238887,-0.45161456702719,-1.03225045714651,-1.69072180010305,-2.2507330225829,-2.52734287784715,-2.42093972640533,-1.96111351505732,-1.30482153618337,-0.659373464751482,-0.183118159162632,-0.211284692290875,0.0968724739281571,0.21256397109896,0.234033818068766,0.228774686874706,0.23030951870414,0.243990399704674,0.249269893751414,0.191645696514242,-0.0098991182126465,-0.425647880539632,-1.09608962543907,-1.92875173290479,-2.67545344996079,-3.05600752717817,-2.93492898729966,-2.34627881353518,-1.51922731317932,-0.740941303279823,-0.195802322411654,-0.186688407333808,0.037586665933177,0.0984101721887778,0.0908011609608278,0.0751919401387718,0.0693632029208348,0.0767163760078215,0.0896569818064068,0.0730355974654296,-0.0570839848457731,-0.401757691582946,-0.993196102752896,-1.73036321407804,-2.36899984613429,-2.6700442075742,-2.57327671858108,-2.08523396959769,-1.36147379223572,-0.669963775693841,-0.196512242374279,-0.187220439386365,-0.0351237592924045,0.0103046099959913,0.0144825169597085,0.0112700765935354,0.00967973579405146,0.010586449104807,0.00993207482448078,-0.0102338446055048,-0.0980279504670952,-0.318470970999049,-0.684757453087645,-1.11838213410245,-1.46435395617301,-1.61272276559434,-1.57293994447817,-1.32830000220432,-0.917468249286385,-0.492185946758298,-0.1877855933583,-0.174610336612604,-0.108806848695732,-0.0588988146858653,-0.0322254023435148,-0.0219219991826063,-0.0210520979446296,-0.0286838892551257,-0.0495201540866168,-0.0898604108672749,-0.147474299985945,-0.206993132912431,-0.25878959909732,-0.29872223509634,-0.33424517565242,-0.357505997727186,-0.358848928604264,-0.340240920658219,-0.299985375694233,-0.242252069634224,-0.174515307321104,-0.165182976382001,-0.194690437579371,-0.147225297651747,-0.0976628994243101,-0.0710632251640516,-0.0674471601030958,-0.085284223773626,-0.126460889399963,-0.182215877578968,-0.201167445261088,-0.0979888066143722,0.152144404247912,0.49299614174741,0.781738317496894,0.909211887495519,0.868288890959373,0.649213995228812,0.312347426136441,0.00736793232965678,-0.163222035147345,-0.161115710591486,-0.297797081557878,-0.289828267145137,-0.239599889287839,-0.201745096915585,-0.194717079670551,-0.219567208395635,-0.268358274431854,-0.308198829561918,-0.257961062695604,-0.0182086110717396,0.440053852723672,1.04924705728536,1.60604812735534,1.88072284492344,1.7857251985125,1.34642080260784,0.734328022408434,0.186191160592511,-0.160879463562595,-0.163467209343619,-0.415290227451939,-0.516959056589573,-0.535152453142346,-0.523595000590813,-0.51894180223481,-0.527220075245045,-0.528938064931058,-0.478502644805005,-0.312095229619588,0.0194445214130924,0.543585343363294,1.19735018971432,1.78820690044374,2.08760650395966,1.98216595159649,1.51442334240742,0.867770600242574,0.264554224511264,-0.168315198718434,-0.167723085252716,-0.535936710104345,-0.833214128986263,-1.04450043776756,-1.15513099150301,-1.17427203393234,-1.10421345886662,-0.942147987644868,-0.686835082446634,-0.358938753273931,0.0231678633140255,0.491278456111448,0.990767575397555,1.39762058464628,1.59706216217891,1.53135664915988,1.2211049646455,0.754227726728066,0.256383285947251,-0.183265307924445,-0.175612892546665,-0.649889010459702,-1.19147690779796,-1.69833894602152,-2.03439405595786,-2.10582787754213,-1.8907445122846,-1.4502376101478,-0.908136844425203,-0.401651705469945,0.0112990631638261,0.369697649998833,0.647461640109494,0.823041304219629,0.898922906520309,0.877968968605879,0.757883963937794,0.529340802752825,0.206465489418377,-0.191263193518369,-0.189952098006274,-0.728358643356106,-1.45923446075488,-2.22490309076408,-2.77171605420535,-2.89505476749135,-2.54765537626058,-1.85445948767818,-1.07295631264075,-0.429843301415661,-0.00552437202312724,0.241226415952286,0.349021741145969,0.380592118828043,0.385914752787875,0.386549228595687,0.375586026090808,0.312804071078736,0.14194801222531,-0.194600451683288,-0.196968543947356,-0.717042699970571,-1.47360263506812,-2.28203646609524,-2.85127650594066,-2.97488709976298,-2.62196862587707,-1.89627038921227,-1.0767357427533,-0.422736173643965,-0.0329760047517434,0.12812654729345,0.156961325671562,0.14344195334015,0.131735612676509,0.135131695537233,0.150606524382247,0.150554846104098,0.0686269726651904,-0.196459156132965,-0.194914245343818,-0.589257955096232,-1.16141036754954,-1.74547501718078,-2.12116872225447,-2.19363807350187,-1.97363909659633,-1.4760506389472,-0.868314784522097,-0.365947345920675,-0.0710435552054739,0.036799545610011,0.0500136855228658,0.0401668748683157,0.0329428152408841,0.0336799122409333,0.0414040047899377,0.0435208105397914,-0.00552960053355344,-0.192743843899846,-0.184227979934265,-0.364233885892841,-0.599586871557569,-0.82441367126329,-0.965620540296683,-0.99635375133354,-0.927008705876897,-0.742661702047991,-0.493060255744498,-0.267144402992585,-0.116212451993374,-0.0412239379988944,-0.0141542809823213,-0.00675884398898146,-0.00577652792270519,-0.00740971588860038,-0.0137457046229299,-0.0316632535001042,-0.0790754066606821,-0.184047167602721,-0.171554029682602,-0.107316542875228,0.0332968669335016,0.184661395629941,0.269934638026601,0.280345396412819,0.22626784929777,0.0978980526305373,-0.0535541087880894,-0.151054759899002,-0.168021259094061,-0.125126039415966,-0.0769796518133581,-0.0483893378418742,-0.0384769765336673,-0.0430748465981845,-0.0641845031690235,-0.105722775094741,-0.157139359740277,-0.172158148159393,-0.163394659807035,0.107864041258721,0.556992062651989,1.05411245921847,1.39695258267613,1.46574862405791,1.25557087391059,0.810620257277015,0.315425691815775,-0.0493603650192625,-0.221914602357142,-0.232021498916814,-0.178714107844348,-0.132753315362858,-0.11433582869746,-0.124196471929797,-0.161170926556922,-0.218062907178019,-0.251058702523482,-0.173382619777734,-0.165154467365717,0.239431874813228,0.847296920998722,1.51468511134711,1.99799445913536,2.09860694975733,1.78532609076012,1.17660265722265,0.514182345228736,0.00277006057328909,-0.291308349620451,-0.39608769914067,-0.388458509465741,-0.347868149706291,-0.321043949111271,-0.324365473083148,-0.353654017308214,-0.381605054974859,-0.347724913973229,-0.14983086065741,-0.179263407535108,0.229221936849227,0.788269458956396,1.36812904786457,1.77731053243984,1.87386290664635,1.62970141856067,1.13645636691764,0.56221654064908,0.0611739201879443,-0.302017419594378,-0.551232494623755,-0.702641384699816,-0.780958881131508,-0.816170580428947,-0.822392333044215,-0.791670065131633,-0.697870195665957,-0.503246767822415,-0.237104458223478,-0.0912504619401213,0.361534959375758,0.777095181872085,1.12282789723967,1.32039447226775,1.32511955750187,1.13369809309291,0.781594304842922,0.337106084088186,-0.10167587448865,-0.505587338804772,-0.912335048437986,-1.25508349179163,-1.47448022227371,-1.54308023406591,-1.45252066266768,-1.21520085801532,-0.864286381268158,-0.460247765657221,0.00112826583546955,-0.427343663660684,0.161366012278918,0.684370367585288,1.14133237010534,1.44834484303885,1.56762631176014,1.48303046841843,1.20281261865273,0.756929465278766,0.223690906932768,-0.296593859839638,-0.881326999143351,-1.49335702221102,-1.98181355033146,-2.24763555479479,-2.24027129448959,-1.96386287445965,-1.48239469656584,-0.909499123877435,-0.307156777298209,-0.12710384969741,0.294061342284227,0.624153650320663,0.799089090144877,0.86665888763415,0.862684982254148,0.798554001952671,0.655234396629087,0.393525218724961,-0.00571149122566884,-0.551091738257252,-1.30569834068493,-2.16148191340893,-2.88818974173975,-3.24737186223164,-3.11111764127273,-2.51533057409643,-1.66121565836406,-0.820825747468952,-0.202651354494186,-0.243242521176644,0.152652935864617,0.300262249303416,0.326310818751849,0.318042256172939,0.320231853735793,0.339920389494325,0.348995780068847,0.275107509009088,0.0157318249370716,-0.519717557814982,-1.37962115366943,-2.43865149853724,-3.38101315953849,-3.85753668715451,-3.70750352186093,-2.96742128270469,-1.91926157138261,-0.924647548537064,-0.222858895571534,-0.211577570518212,0.0726531642893465,0.144824878522792,0.130146247388097,0.107146897951175,0.0988590625168568,0.109943886293208,0.130495058736639,0.114581781526755,-0.0473013488715574,-0.487620110139924,-1.23272385725868,-2.14329260690266,-2.9129697243866,-3.26163353089124,-3.14907432313291,-2.56930766295412,-1.68671801695678,-0.825363714940408,-0.224647555362458,-0.211831413760127,-0.025868378138858,0.0241793658477432,0.0247502975422565,0.0182405470378071,0.0156892864103268,0.0181853072515849,0.0209073913070349,0.00156169636074603,-0.101775681903398,-0.37429408557681,-0.822460312927679,-1.33814946697152,-1.72844838764269,-1.88143859723812,-1.84128200094804,-1.57513375723258,-1.09767297344872,-0.585480962087125,-0.211122230607975,-0.192909149595709,-0.123886925990176,-0.0686535305474694,-0.0377985628300428,-0.0258136714272908,-0.0248647729048142,-0.0341361930727935,-0.0587573337908127,-0.104838409788072,-0.16632677912615,-0.222631368043333,-0.265025327764063,-0.295340002261874,-0.330551768544925,-0.358497557631866,-0.358583029680979,-0.338381645425309,-0.301974023788571,-0.253478729836747,-0.19007934786994,-0.178048894879381,-0.23611049438171,-0.184932386504615,-0.124299283898506,-0.0906357756986108,-0.0860512269334509,-0.108820457603882,-0.160190755137684,-0.226228214248337,-0.235642991097776,-0.076430916652656,0.268737639501601,0.71028473238979,1.06100568923386,1.20494312630247,1.16509024262282,0.910677395054102,0.484959674557753,0.0744485500547644,-0.172429324193497,-0.171302446905416,-0.368584222017133,-0.370717456387164,-0.311606337495377,-0.264014277773407,-0.254953407110933,-0.286185719201259,-0.346036834177527,-0.389190915712062,-0.308037299429044,0.0269454828085697,0.641959198707956,1.4355714464456,2.14500055744819,2.48689512796115,2.37039997464384,1.8175360496426,1.02905069403355,0.304320577540763,-0.169394313139436,-0.174478461146155,-0.51662849914227,-0.663769272183048,-0.698608712321332,-0.688027734792195,-0.682706886089763,-0.690856554356797,-0.685700145609439,-0.606658922592472,-0.375156733668357,0.06969160873616,0.769464245361329,1.63371160931852,2.40789612175341,2.79653438483441,2.65826703380225,2.04705354698974,1.19708729583268,0.397211297963042,-0.18199979241472,-0.180237460627791,-0.665940185707721,-1.06798959573187,-1.35897967793288,-1.51177593285614,-1.5389531505708,-1.44313751803074,-1.22024671158974,-0.869751084733872,-0.431232287279303,0.0662989341025309,0.688141219770586,1.35762368192856,1.90096096410079,2.1656364312297,2.07664410833839,1.6619568016465,1.03780919502142,0.373979987695996,-0.206044853067562,-0.190872635940884,-0.809044314672556,-1.52255109108389,-2.19229489275942,-2.63641692184675,-2.73191356070999,-2.44937182047494,-1.86763222984286,-1.14957494365665,-0.484888623262446,0.0463012178767583,0.51833275759482,0.893154168625483,1.13061685001921,1.23272287213573,1.20354796390196,1.04050108927487,0.730895200268795,0.30098427968093,-0.216901254633261,-0.214381440245718,-0.909895846160356,-1.85232408949646,-2.83583134072852,-3.53605514058533,-3.69451039120323,-3.25184348068068,-2.36269299000803,-1.35535931010338,-0.523409291941529,0.0231455634553983,0.343470212228627,0.486060890292398,0.528052996115237,0.534962697152958,0.535822575376396,0.521447984956639,0.437234774997503,0.213479337502319,-0.221622335107891,-0.226798091584906,-0.891385203664228,-1.84717579508606,-2.85384649512965,-3.55141781894866,-3.69995241562811,-3.27115478366552,-2.37382046645904,-1.34661524613657,-0.514799902010584,-0.0144838959600925,0.18941780493901,0.222486383711801,0.201767580785002,0.185105472524205,0.190135052185077,0.212894360800265,0.216213643296702,0.114329107905363,-0.224485145751954,-0.224383997033039,-0.718277612182438,-1.42341689353953,-2.12094015062097,-2.54670505519242,-2.62104529673574,-2.37681187227543,-1.79671560938264,-1.061060093755,-0.437299391662987,-0.0661907891715739,0.0649166633032106,0.0754294853471022,0.0588347635700241,0.047843782966022,0.0492337177986085,0.0619416443805548,0.0699108658304777,0.0139818588102596,-0.218447604728332,-0.207571378002353,-0.417800939162282,-0.69161071990258,-0.944328359534672,-1.0954844826417,-1.12630105575897,-1.05642889606981,-0.853378839692672,-0.566413949187787,-0.302585526935262,-0.126089097984103,-0.0405691501715401,-0.011863765259909,-0.00518076348339827,-0.00492965468695539,-0.0067425222886569,-0.0131948136156885,-0.0317983049155495,-0.0845305497440396,-0.204605031423702,-0.187119000492811,-0.0780934361302286,0.120646998843273,0.31408286800277,0.407808504023365,0.417260291841594,0.365262327376302,0.211937416816192,0.00603368166879045,-0.145692417961077,-0.193242445520166,-0.151726540557403,-0.0952638388354094,-0.0600875097069886,-0.0476088483687823,-0.0534838078498353,-0.0798508791621452,-0.130007956900468,-0.187392993809349,-0.186471882282453,-0.173967576181317,0.20334050470686,0.796525687099531,1.42833528163618,1.84780400920403,1.92993616234226,1.68173061397063,1.12614899085809,0.48309054425824,-0.0115856651278229,-0.2620075438816,-0.290967208441633,-0.229257670204589,-0.172053847867675,-0.148692020479737,-0.161451481332128,-0.208154146029215,-0.2775371167616,-0.309438394827079,-0.187285958520322,-0.176613642327646,0.370068143019075,1.17496700460075,2.04491042246003,2.66702321759814,2.79418232619744,2.39311497566251,1.6050803215494,0.735800985696218,0.0522191577219082,-0.349598535492675,-0.501934420159103,-0.503434144791286,-0.455187358421137,-0.42091950125342,-0.424119774770907,-0.459027527248004,-0.487798357755787,-0.430823737195195,-0.156498087287395,-0.198256738397101,0.345510120483025,1.08835719517156,1.85642474139038,2.3949964992971,2.52013442385859,2.19772294488512,1.54648983291285,0.785576231285612,0.119708673322801,-0.359043080231428,-0.696452201059067,-0.910989119876641,-1.02544488777861,-1.07754152440321,-1.08563063544988,-1.03852720193535,-0.901522834244423,-0.629523530129173,-0.271514501656698,-0.0854428765254189,0.51185117056502,1.07561158585284,1.54795840345722,1.81791681238523,1.8235133112325,1.56123100177832,1.08096721374948,0.478789835871649,-0.100747356751673,-0.621056711578737,-1.15878660467601,-1.61372373012072,-1.90220386530978,-1.99117927127542,-1.87117346688306,-1.55820883910533,-1.09184521021035,-0.560156798606113,0.0382902758053048,-0.488636361760756,0.230649316815417,0.87865354485201,1.45077516723662,1.83324664192314,1.98243083807281,1.87823447247912,1.52966972534601,0.97160145337431,0.307621426658244,-0.324073658955792,-1.04968803715629,-1.82448796998423,-2.44566380079111,-2.78494158502035,-2.77658605981371,-2.42482425196999,-1.81164172532163,-1.08422393766771,-0.337075526198476,-0.121454264023301,0.394099268337989,0.807703763312558,1.03088707990923,1.11739961197623,1.11174189747146,1.0287099464462,0.84522954685522,0.514756786011044,0.0232952080690552,-0.638446585308543,-1.56399797183692,-2.61324317678979,-3.50310192240309,-3.94300900208624,-3.77764907325724,-3.04885249308768,-2.00056302565712,-0.96882391532673,-0.211960878317548,-0.266146927481827,0.214220144182827,0.392571132502867,0.422886595362959,0.411420208124451,0.41429742798129,0.440256636935156,0.453405888795954,0.363570755083662,0.0483816131513086,-0.603042202000971,-1.64496024213588,-2.91839707399908,-4.0436871339995,-4.60881729749248,-4.43268587824299,-3.55172349445463,-2.29548271288844,-1.09432158781305,-0.240822425997625,-0.227857207882867,0.113257845460631,0.194755144700141,0.171941647675368,0.14100274517892,0.130130406037589,0.145281870265482,0.174242861059525,0.160449606893154,-0.03058538066457,-0.562784866649083,-1.45144187836546,-2.51744740202819,-3.39736934447421,-3.77924673751019,-3.65613858309809,-3.00315517397134,-1.98224156739895,-0.965622000365564,-0.244242547455401,-0.227607302723523,-0.0114978047455717,0.0407115277482435,0.0364348581116728,0.0260646248459753,0.0224349189629987,0.0268436810050005,0.0338407429837834,0.0171052932712482,-0.0986221991401788,-0.41855147382673,-0.939201510314007,-1.52168827839223,-1.93766282130622,-2.08281061172278,-2.0460498563499,-1.77465477250087,-1.24862251413185,-0.66262883344113,-0.225371564760651,-0.20157978837457,-0.133844621706924,-0.0759880498817725,-0.0420932430745822,-0.028835763647911,-0.0278485678906751,-0.0385431697751059,-0.0661941709520809,-0.116187485652946,-0.177893886069269,-0.225576036541925,-0.252686102395912,-0.268728007906717,-0.302035245050486,-0.335031995135224,-0.332857486077272,-0.311364727355588,-0.281648648648702,-0.248496276865779,-0.1955358973531,-0.180463345887784,-0.271852841726862,-0.219968148415865,-0.149625215930479,-0.109312013455003,-0.103817792204848,-0.131294157778014,-0.192008716969005,-0.266278901057215,-0.262171130646441,-0.041523676982257,0.400855331789726,0.938289104405763,1.33987082203005,1.49135140901885,1.45735940738321,1.17965384329023,0.672682679603364,0.156994967054128,-0.170656303729636,-0.170641982825613,-0.432474930488066,-0.448098444660782,-0.38223903472608,-0.325638025702626,-0.314628709570169,-0.351787644193718,-0.42135359664034,-0.465093589711575,-0.349265983886563,0.0849395949393465,0.857401337210738,1.83014604896048,2.68323058039932,3.08502901313798,2.9495998367707,2.29225509715198,1.33533403377868,0.436369879168182,-0.166708712074342,-0.174685989630813,-0.608932843791738,-0.805149723746969,-0.859780115609617,-0.851547578709709,-0.84583116406591,-0.853067835441251,-0.838839546063928,-0.727541412831267,-0.428003246811418,0.130861588524857,1.00666457499855,2.0795952969824,3.03415349543094,3.50988455479104,3.33938597396035,2.58746143160152,1.53684148185602,0.541190047572845,-0.185027530242058,-0.182126866658239,-0.784041835005088,-1.29374175519373,-1.6679277500117,-1.86480842592972,-1.90053815018265,-1.77796809426619,-1.49166114045611,-1.04199245008409,-0.491568970623787,0.118052065556836,0.89358216357314,1.73496234079947,2.41601256530336,2.74633227872937,2.63361409537789,2.1133580196705,1.3305050633702,0.499537120852568,-0.219395736547988,-0.195476468302805,-0.954649856747745,-1.83984832159521,-2.67242172052098,-3.22468738929578,-3.34442096225389,-2.99464421665955,-2.27176639996187,-1.37727968786197,-0.555695517843419,0.0887581455402071,0.673430205004135,1.14754323145171,1.44856847925021,1.57754310162013,1.53971901666409,1.33237986565347,0.939499349664964,0.401722051974303,-0.233078060598671,-0.229632875802088,-1.07780225204095,-2.22508630192414,-3.41832646216612,-4.26559924601442,-4.45774365374376,-3.92410969133292,-2.84664090837309,-1.62109813633976,-0.605371384976208,0.0592175692652129,0.451314933235486,0.628983753575834,0.681740029060904,0.690297025224023,0.691324516563103,0.673389336055383,0.56716585005867,0.291020584339137,-0.23961435010912,-0.248332918264484,-1.0514457177119,-2.19384557731621,-3.3811634001267,-4.19161682203016,-4.36105091426386,-3.86743876112076,-2.81572636904562,-1.5965629798563,-0.595905389426636,0.0111090634984948,0.25542449458984,0.291637807685534,0.263124433205917,0.24125182097679,0.24803236068571,0.27857105440254,0.285910860370752,0.165695388824226,-0.243853891152099,-0.245585541499011,-0.832043325849917,-1.65610122801916,-2.44657215698722,-2.9020295795139,-2.97181421030024,-2.71724956542395,-2.07663259821141,-1.23169041649693,-0.497264188461815,-0.054531308984875,0.0970177303201422,0.103137570351487,0.0789312569631245,0.0638183339390028,0.0659593146434961,0.0842705779385152,0.0993185942578869,0.0387369097564513,-0.235346037616693,-0.221854067956615,-0.455609548143473,-0.758646916984139,-1.02767780710705,-1.17987468998021,-1.20798972713754,-1.1435263499382,-0.932382149530243,-0.618807228516878,-0.325575696391331,-0.129032831657931,-0.0363649467473652,-0.0078186651134183,-0.00262491771723359,-0.00336015956864207,-0.00525952588156655,-0.01133085309537,-0.0293516699128542,-0.0848935219316778,-0.215617848709363,-0.192517327840595,-0.0333691214620088,0.22519639269677,0.456486785185671,0.551134719230898,0.55779553117615,0.514920535543884,0.343398789691856,0.083442445457779,-0.126976854056348,-0.210982554473126,-0.174665894647142,-0.111787862313399,-0.0707208493054571,-0.055841311348395,-0.0629427434707071,-0.0941523641562742,-0.151693026773515,-0.212305848015421,-0.190370139388998,-0.17358546632258,0.313468178351504,1.04837040713604,1.80588476216311,2.29080938034132,2.38239804385263,2.10595023689697,1.45068865497887,0.665509346292267,0.0396212377549014,-0.293814366367717,-0.345543486962957,-0.277865371353415,-0.210430404375712,-0.182396250208776,-0.197965705931165,-0.253773510759518,-0.334010239786912,-0.361697759722786,-0.190311782944849,-0.177258083453788,0.513535661425058,1.51383040677516,2.58087344167802,3.33621560459466,3.48794479484945,3.00326984247399,2.04212875710562,0.969831900664208,0.113889471547829,-0.398311354203753,-0.601645502390879,-0.61567193328195,-0.561435427239539,-0.520170567792697,-0.522964333230369,-0.562378419927146,-0.589509644743008,-0.505934649473964,-0.152327993325891,-0.207291778674274,0.471699467565443,1.39838960067708,2.35421687516385,3.02149492815611,3.1748918513014,2.77464683103525,1.96606810899641,1.01874405066384,0.187735518500833,-0.405236423901045,-0.832685134987227,-1.11435527907567,-1.26781733904927,-1.33821944790156,-1.3481145176288,-1.28288594027371,-1.09900146354178,-0.745631513113721,-0.295012865196132,-0.0716057724594909,0.669114744559171,1.38469635330496,1.98675570808634,2.33092211163338,2.3370491914485,2.00168203360946,1.39009611782035,0.627459121307663,-0.091326047142148,-0.72310762612115,-1.39289728643491,-1.96193083742495,-2.32014700505224,-2.42942146731185,-2.27948547971237,-1.8901611677163,-1.30648760079358,-0.647334580530379,0.0842390505591194,-0.544025289003194,0.303534939946195,1.07758920794993,1.76702662024142,2.22615456110145,2.40592628764281,2.28198321378501,1.86399310627024,1.19166331429267,0.395213451535823,-0.345390778225302,-1.21214800256785,-2.151595714726,-2.90751622007913,-3.32176622049773,-3.31279707128249,-2.88461924738102,-2.13769981980432,-1.25359310274123,-0.361050986081831,-0.11140750082082,0.497818131315744,0.99641539265472,1.26917024177482,1.37525927530185,1.36782231026365,1.26522338947674,1.04045065793636,0.639792630287096,0.0561801168723417,-0.720319616729361,-1.81591226039363,-3.0563517967892,-4.1073824873097,-4.62688405102015,-4.43273429908546,-3.57255741694987,-2.33224883737003,-1.11104690449033,-0.216335311664925,-0.285131816749664,0.279015519065598,0.488090143556349,0.522771267664775,0.508008721041399,0.511610137652736,0.544008092625723,0.561302610713661,0.455211901201606,0.0844146733352399,-0.682142284382205,-1.90182029617947,-3.38223080872997,-4.68226575243578,-5.33123931501352,-5.13095655242635,-4.11578319010379,-2.65963060236213,-1.2580308825311,-0.255053249497152,-0.240290318732076,0.156924333081558,0.247048060303014,0.215523559261178,0.176293402229037,0.162739643127644,0.182178237005145,0.220032761880432,0.208963945975457,-0.0104263780810691,-0.633391559065989,-1.65979322146817,-2.86975097672573,-3.8454686842399,-4.24996137488266,-4.12060381516639,-3.40785757755815,-2.26202157259186,-1.09888386081152,-0.260061589841421,-0.238974814118212,0.00571251688462949,0.0588911017596157,0.0490795174412798,0.0345124992419703,0.0297295655612857,0.0362486022131043,0.048037980150226,0.0348350579831054,-0.0918673962952258,-0.457116611895442,-1.04508545303463,-1.68483106707647,-2.11364074790108,-2.24158347799329,-2.21081779011674,-1.94630722246181,-1.38381962582932,-0.731750386636313,-0.235106036142086,-0.204938966469598,-0.140968819120934,-0.082014518370783,-0.0457161801416064,-0.031389729416626,-0.0303748936188063,-0.0424020961775786,-0.0726750131090478,-0.12555080604259,-0.18543609530816,-0.221610772272681,-0.230824059117531,-0.231203414193457,-0.263063633403843,-0.302268139609657,-0.297096478971656,-0.273527719223911,-0.250484564555217,-0.23501944150367,-0.195461714027043,-0.176672697412039,-0.304479111733216,-0.253760215813232,-0.174490926143109,-0.127730783779652,-0.121357260942448,-0.153448125156886,-0.223058785409177,-0.304322610719377,-0.284088831887993,0.00124148812540721,0.541061122894956,1.16914239012627,1.61115613833649,1.76182932819098,1.7377747283848,1.44779601649979,0.867119110451702,0.248189007612684,-0.162409745713754,-0.163207586369335,-0.492581315192393,-0.524044637665428,-0.452654948665592,-0.387388865884887,-0.374469705755684,-0.417357354112468,-0.495932920993178,-0.538532398101165,-0.385210857397996,0.151000367602801,1.08060326731035,2.22784574113805,3.21749469996522,3.67322969382523,3.52061420190746,2.76627755734612,1.647612721815,0.576897208385503,-0.157013661511729,-0.168199388926393,-0.696334974834429,-0.944412630909072,-1.02072380959041,-1.01557865294774,-1.00960549868977,-1.01550387402444,-0.990948737954747,-0.844938257632013,-0.474695874002651,0.199143699527232,1.25124324845244,2.53136876145881,3.6642950197338,4.22585867020821,4.02366486887695,3.13286266684011,1.88329033631055,0.692715949465596,-0.181094098977134,-0.177796422172036,-0.895934386870312,-1.51585039233645,-1.97549293028465,-2.21767589105465,-2.26224934747243,-2.11223164444182,-1.76082255692403,-1.20921197000236,-0.545102816759696,0.175214506432014,1.1050588151753,2.12009603379151,2.94021379312105,3.33673020741644,3.19987595058401,2.57283907133111,1.62982784105804,0.630435172095936,-0.227132139792924,-0.194418706524762,-1.09404265977267,-2.15131703516929,-3.14684025429835,-3.80747544073956,-3.95159794513569,-3.53461685248819,-2.67046731973299,-1.59907911583073,-0.620322071160825,0.135292497611795,0.832835327359574,1.40843882426812,1.77459510642037,1.93110272484072,1.88431014903108,1.6314713110603,1.15333238153296,0.50610877092182,-0.244259364727994,-0.24098782233616,-1.24010023837606,-2.58815345083341,-3.98624943154116,-4.97663567069728,-5.20145481675089,-4.57937432595718,-3.31834008202124,-1.87950791937562,-0.682404275582229,0.0988916233978032,0.56274497636163,0.776297746665244,0.840211933858806,0.85050600482439,0.851663654545287,0.829982900431828,0.701037310151839,0.371884569268118,-0.253450544854184,-0.266407550158644,-1.20525224283292,-2.52655328713299,-3.88298942681449,-4.79578337712544,-4.98373367609224,-4.43310078165064,-3.23814131617252,-1.8368982811344,-0.672498589903122,0.0401413444920531,0.324392598939074,0.363418243466184,0.3267779266696,0.299511289716437,0.308119387142665,0.346760762482491,0.358390129962781,0.22018837449602,-0.259522807344979,-0.262932935027756,-0.938473685719789,-1.8729041187346,-2.74263580319996,-3.21268187647893,-3.27292512622372,-3.01881341714317,-2.3333983240451,-1.39101519909924,-0.552000375650633,-0.0394235429109371,0.131528375904258,0.13241866233332,0.100091867904702,0.0806323445661778,0.0835826295581572,0.107873459224727,0.130658811821584,0.0664036343557058,-0.248119426786451,-0.231347479605036,-0.485280975651375,-0.81259744216895,-1.09089716467854,-1.23819258559317,-1.2617144483604,-1.20716949821243,-0.994680998277173,-0.660444748986787,-0.34216281246343,-0.128226219497339,-0.0301426796189641,-0.00273078843356397,0.000540474635919453,-0.00132604025419969,-0.00325989545840055,-0.00867039034708552,-0.0254087884066721,-0.0824397240731448,-0.221626598585642,-0.192053613789405,0.019819718225589,0.337575014454688,0.601301419975538,0.689257610520947,0.691537348162261,0.664173602702899,0.481381612914821,0.169872832416438,-0.100785484508013,-0.224470870416353,-0.195665958715904,-0.12749047752767,-0.0809070183733828,-0.0636911436022203,-0.0720089987861047,-0.107859788511694,-0.172088126821281,-0.234273744700387,-0.188324979392024,-0.166484097312609,0.432141050321513,1.30604389514639,2.18135297905885,2.72178686471019,2.81919414760287,2.52290411000994,1.77772403879813,0.855936116536722,0.098989856441927,-0.320762585695843,-0.39794877855674,-0.325788500159216,-0.248649021888892,-0.216063458314278,-0.234423903611222,-0.299042096344569,-0.389219493704815,-0.410586130383086,-0.18671959682591,-0.170826515578886,0.665039196548414,1.85896102521361,3.11896192109775,4.00346738678752,4.17828458578694,3.61317056445508,2.48366105224731,1.21142705924421,0.183495609090609,-0.441298692514322,-0.698419085211841,-0.727177221059758,-0.667863474077568,-0.619802854787942,-0.622030538173476,-0.665388465266245,-0.689367396543377,-0.576685233228646,-0.141332696849614,-0.210017594658615,0.604479187250935,1.71530515530592,2.85892116559222,3.65484964589073,3.83647760804824,3.35853719969703,2.39261402892985,1.25882140851938,0.261988797316719,-0.445154205627157,-0.964685305952532,-1.31610322277802,-1.51025760461058,-1.59981588779071,-1.61151640829236,-1.52713332402769,-1.29423322514399,-0.856186260196169,-0.31180336467452,-0.0525311640129526,0.83191773291767,1.70131977883305,2.43557858809225,2.85538494442258,2.8616763416202,2.45135050105485,1.70591017551485,0.780726886618258,-0.0769527740160909,-0.817732812735871,-1.6218492341017,-2.30672667070961,-2.73526141160167,-2.86470777975179,-2.68426747056138,-2.21780790417434,-1.51511569287527,-0.727387836911984,0.135309561007924,-0.597399853882971,0.378716769141935,1.27980215395154,2.0881861964579,2.62505812516978,2.8359760919516,2.69210511090486,2.20370126187259,1.41537543392192,0.484358049997965,-0.364645549619598,-1.37215015392835,-2.4767821592652,-3.36857864272366,-3.85879022486135,-3.8495035881208,-3.3443897925118,-2.46299537911431,-1.42122085377696,-0.38294887308168,-0.0997239265543126,0.603460077121414,1.18842056763859,1.51185159114717,1.63795996525608,1.62870384995686,1.50609431830354,1.23918519672016,0.767187458456717,0.0903717392177426,-0.801056459216769,-2.06559361522181,-3.49535340015303,-4.70614312407747,-5.30452310650969,-5.08188348645123,-4.09147816923328,-2.66066464854456,-1.25173945932051,-0.219585696433282,-0.303371675727078,0.34528290656247,0.585708111558766,0.624891915190553,0.606805966579956,0.611154632317429,0.6501054901429,0.671536526595992,0.548768387889001,0.121489389389594,-0.760593642667487,-2.15510574940257,-3.83769142656152,-5.30705219258747,-6.03670084951054,-5.81357912787534,-4.66859972627243,-3.01792945223443,-1.4199668047935,-0.268561124629879,-0.251394158073064,0.202118965494966,0.300806637473134,0.260292072942578,0.212548963345432,0.196256508020011,0.220124794622398,0.267144752873514,0.25902999204114,0.0111535783880001,-0.702528127010381,-1.86341295638321,-3.21031960563575,-4.27241880017573,-4.69179586480265,-4.55972876277792,-3.79634224581891,-2.53374935630341,-1.22923500606526,-0.274727057677958,-0.248362845434887,0.0243830713825288,0.0780215675029362,0.0623161317016432,0.0433873518729588,0.0374216702799213,0.0461362596058235,0.0629778484995614,0.0537599042097305,-0.0833847737265388,-0.493075100301362,-1.14572557098445,-1.83760692171671,-2.27121289475505,-2.37543947560187,-2.35212940063513,-2.10289148273746,-1.51118380987472,-0.797132519277445,-0.242825496337022,-0.205537075977002,-0.146647622415578,-0.087416298096322,-0.0490641477957467,-0.0337786269830051,-0.032761021799267,-0.0460700363087465,-0.0787414756329885,-0.133927714004125,-0.190866629948425,-0.214032990953032,-0.204385095218332,-0.189392540955583,-0.22147140582806,-0.269120363617584,-0.260353991087965,-0.232783705560461,-0.214583406712569,-0.217358562054733,-0.19253976741342,-0.169410444359455,-0.335546505426933,-0.287077435009814,-0.199308922324837,-0.146193821838939,-0.138958775615843,-0.175622346964084,-0.253913410668658,-0.341471435407972,-0.30348425592516,0.048378434134437,0.685241040287568,1.39967849375678,1.87333553693087,2.01585739725086,2.00550902272632,1.712673940257,1.06432283048523,0.344021448705479,-0.150567559149969,-0.151815219439513,-0.550879086269383,-0.599518541467792,-0.523222654390284,-0.449417483174782,-0.43460141150075,-0.483135833574199,-0.570399614045378,-0.610915327597549,-0.418198994055763,0.221790820164608,1.30804567235749,2.62668135497702,3.74782638074773,4.25299226553725,4.08465582228854,3.23873626988833,1.96309080043217,0.722392775551245,-0.143144764133058,-0.157680718854468,-0.781461380823438,-1.08296202155172,-1.18195934465574,-1.18025856525853,-1.17409409245971,-1.17842845797866,-1.14287892527832,-0.960848792289168,-0.517984244051827,0.271923892856592,1.50052305968618,2.98698737241661,4.29723540481112,4.94379596256599,4.71013371241242,3.68153788426689,2.23396918693026,0.848924220484957,-0.172638277046012,-0.170298364395952,-1.00515240410967,-1.73655735425934,-2.28288396058976,-2.57103755316415,-2.62460829616549,-2.44674042808477,-2.02931705956129,-1.37437426312696,-0.59550478892133,0.235675836245728,1.32069093547759,2.51057719413547,3.47092520513807,3.93415307197814,3.77281767577812,3.03792979384364,1.93362328081942,0.764661918066026,-0.231678040528293,-0.191630407727828,-1.23141164942239,-2.46041890378424,-3.61863452358096,-4.38774926905826,-4.55638380109598,-4.07225251904745,-3.06691572935708,-1.81895748126033,-0.683266971130673,0.183456921603333,0.995010594467935,1.67376176627874,2.10624232428486,2.29079802771847,2.23483259392206,1.93560322410611,1.37064419570688,0.612443397096065,-0.253682610874237,-0.252080702851695,-1.40087553608753,-2.94670097606844,-4.54634960663085,-5.67720780410815,-5.93413627224017,-5.22539787257071,-3.7838881788946,-2.13521226149592,-0.758613176530073,0.139619510377008,0.676325998750351,0.926541330197527,1.00195702423641,1.01406841583699,1.0153363696193,0.989775702757228,0.837499081502815,0.454351631512192,-0.266537047132548,-0.283770903464331,-1.35687077502233,-2.85234474446935,-4.3704685005101,-5.37860801090839,-5.58336344049738,-4.98118342940956,-3.65017080594807,-2.0728194886935,-0.747892356052687,0.0704005601222457,0.395084898066095,0.436931986241303,0.391977187910528,0.359199983282096,0.369684941694379,0.416641786735983,0.432637011411057,0.276262565971421,-0.27426199399866,-0.278759359381883,-1.04170468999299,-2.08171269653145,-3.0224189616676,-3.49636846435217,-3.54290335743987,-3.29730979694837,-2.57780819154685,-1.54488588547877,-0.604649835706966,-0.0227850243547302,0.167401151448211,0.162696282553669,0.121971562277156,0.0980439857122322,0.101831517022433,0.132314098134914,0.163160508083108,0.0955657519008573,-0.259246526068338,-0.238433409375855,-0.510952731662562,-0.860330916143008,-1.14426008326998,-1.28412832998744,-1.30230711303188,-1.26002634487827,-1.04922566001465,-0.696964064142721,-0.355673111543044,-0.125538053622033,-0.0228607349856203,0.002910582453884,0.00402851720719591,0.000963105822175332,-0.000987561282093132,-0.00560070894629193,-0.0206818931574874,-0.0785260672047648,-0.225143287031702,-0.188359225608974,0.0773827721312817,0.453105545997589,0.744030958278968,0.818374499136854,0.81440885582037,0.808486636259673,0.620989337406023,0.260598456716548,-0.0706260041138928,-0.235695685914207,-0.215748100911379,-0.142897932392277,-0.0909987331225076,-0.0714871162083609,-0.0810294145739869,-0.12141351303769,-0.191953941951486,-0.254737953916253,-0.183024087067065,-0.155434747806689,0.555476025020043,1.56624551273329,2.55355149405263,3.14186404884312,3.24184805006295,2.93263135109783,2.1049232539105,1.0506639349432,0.163045901388687,-0.345077665177826,-0.449438076307795,-0.373585581763306,-0.286992789431976,-0.249894120578235,-0.271032787484414,-0.344349354951392,-0.444005090365254,-0.457776409849784,-0.179372141331983,-0.160163966155564,0.821427120430059,2.20783089144503,3.65789900032699,4.66885812835147,4.86576668784514,4.22239021352076,2.92771715133318,1.45753086485089,0.258009299207674,-0.481118851051721,-0.793991179694803,-0.838643633316294,-0.774700834328307,-0.719919520981879,-0.721496374549742,-0.768510199977503,-0.788588159761463,-0.645217210188,-0.126158019971411,-0.208995957291133,0.741340986989813,2.03682680223459,3.36861610099057,4.29337053693657,4.50318587820272,3.9474371216132,2.82390834675542,1.50343407809009,0.340167712190989,-0.481889668079948,-1.09492824913659,-1.51740796129118,-1.75314945148288,-1.86234358367233,-1.87586103391337,-1.77180414859423,-1.48868507623173,-0.964273981279674,-0.325307175747072,-0.0308743821282825,0.998074102497428,2.02307015875559,2.89112245863843,3.3876172729057,3.39385091492257,2.90720125012581,2.02602758011257,0.936940425199039,-0.0598343390794915,-0.909116797225777,-1.84900605925581,-2.65060456746056,-3.14969103475157,-3.2991454856774,-3.08776976912858,-2.54364634176891,-1.7211383655828,-0.804617998756627,0.189212701855907,-0.649996547311725,0.454527531158152,1.48412861238604,2.412836223567,3.0281697408344,3.27059676717105,3.10661647185375,2.54704303367701,1.64126074279494,0.574029173210256,-0.383232135663438,-1.53094779883895,-2.80032299532265,-3.82827268709747,-4.39484017380275,-4.3854220487643,-3.8033636534821,-2.7873899629721,-1.58935157232501,-0.405158826076555,-0.0879799608872692,0.709903556248625,1.3826187582223,1.75727154761724,1.90372137638067,1.89263867006087,1.74976384985592,1.44021973119439,0.896026470544843,0.125067285981864,-0.881633020844065,-2.31404277934657,-3.93155609612056,-5.30107648041104,-5.97787200924026,-5.72694251204341,-4.60706438925692,-2.98697296100687,-1.39193225042275,-0.222815692150269,-0.321451688395891,0.41249739032577,0.684605996423874,0.728443238252128,0.706982231172667,0.71208956979223,0.75766890853953,0.783272847976875,0.643551213156501,0.159088878704489,-0.838786236574274,-2.40634255301797,-4.28846210951642,-5.92423904014816,-6.73277439876761,-6.48781967340133,-5.21555471544558,-3.37271620375011,-1.5806808799827,-0.282171180213883,-0.261726805098625,0.248278109062147,0.355499436381382,0.305785780605321,0.24939302791597,0.230332620209744,0.258722159865581,0.315090776527803,0.310108264863285,0.033632815541942,-0.770687689399931,-2.06439740767044,-3.54497392284083,-4.688887400554,-5.11945432623358,-4.98534425897106,-4.17638852043064,-2.80126407822043,-1.357698161138,-0.288665295430499,-0.256449374814376,0.0440011684167582,0.0977522337939363,0.0759094218047121,0.0525202445030137,0.0453404740835925,0.0562969927540037,0.078362545983352,0.0734583819014063,-0.0737508349979836,-0.527337988794484,-1.24345840494379,-1.98547589689325,-2.42052322110502,-2.498135306246,-2.48306195906556,-2.25289604496322,-1.63448836066343,-0.860300433028757,-0.24923184854178,-0.204397702102891,-0.151376394151554,-0.0924169746822534,-0.0522666798193111,-0.0361212984627468,-0.0351255133379257,-0.0496539078363135,-0.0845601064589002,-0.141667528666348,-0.194934720510004,-0.204218474126901,-0.175290281021813,-0.145628710739354,-0.179754852313623,-0.238121420000413,-0.225276558191255,-0.190762180934271,-0.176223231276831,-0.197208200265115,-0.187858794822538,-0.160083295904966,-0.365652747736792,-0.320024466737775,-0.224049750713988,-0.164669646043383,-0.156582671080964,-0.197776322919919,-0.284599106894713,-0.378022383895383,-0.321329071372666,0.0980802578403012,0.831849117196444,1.63045435085428,2.13082921849405,2.26082032792694,2.26595564354779,1.97586684826301,1.26336135979918,0.442632576317814,-0.136571620684455,-0.138057896986661,-0.608144564588812,-0.674620872659776,-0.59370782238509,-0.511442586651382,-0.494743548207172,-0.548869895602014,-0.644627209432665,-0.68260335186907,-0.449490878208867,0.295298975151157,1.53816868350158,3.02664211114768,4.27638815088231,4.82854154638315,4.64563590210486,3.71112751113164,2.28088871594922,0.87081193244049,-0.126894091769853,-0.145016765568573,-0.865219002568692,-1.22084554333477,-1.3429975930586,-1.34488827967,-1.33856082317053,-1.34121968446592,-1.29440934445095,-1.0757215989039,-0.559469354195948,0.347233882820582,1.75297544462507,3.4456988547419,4.93312895616204,5.66423695644409,5.39901325248455,4.23295384127667,2.58751468173732,1.00805032316417,-0.161434189657182,-0.161412314252485,-1.1128799046293,-1.95615358595196,-2.58951749321178,-2.92388077271134,-2.98650232033491,-2.78066333919469,-2.29697034356525,-1.53834931481301,-0.644674159696175,0.297930284761459,1.53914307938476,2.90464740587606,4.00614152882618,4.53654552587753,4.35048991792661,3.50692252095706,2.24038675934877,0.90104256663836,-0.23472997326288,-0.188625729794889,-1.36804027488478,-2.76787534287698,-4.08820608160709,-4.96563379330465,-5.15880725944959,-4.60767647894165,-3.46154276675215,-2.0378610502622,-0.745861110449865,0.232329798456267,1.15893686260931,1.94197324816221,2.44155663513948,2.65450286948191,2.5892533488453,2.24304355274581,1.59023728468373,0.719793704964979,-0.262855176524011,-0.26369131967553,-1.56099354322376,-3.3024990733598,-5.10170703801277,-6.37146528629443,-6.66030686734741,-5.86605849476919,-4.24582623284993,-2.38933375488638,-0.834576631284247,0.180690462881674,0.791137964173833,1.07866853857166,1.16576180334764,1.179742825269,1.18111941967204,1.15163186997346,0.975603395461325,0.537674448060475,-0.279540471769223,-0.300734843884631,-1.5071386495255,-3.17441586650985,-4.85048392243093,-5.95040206075589,-6.17078223078764,-5.51976569591157,-4.05653296750258,-2.30611584316627,-0.82256543583162,0.10134537535211,0.46688576769748,0.511523049974708,0.458134305687416,0.419769033907511,0.4321581449445,0.487579900626336,0.508068222914811,0.333393134148689,-0.288590137916161,-0.293553330756584,-1.14300117710082,-2.28643045341575,-3.29440709332373,-3.76725520485348,-3.79849054206725,-3.5650347302813,-2.81622126284894,-1.69570098168387,-0.655941187866482,-0.00516641993369852,0.2041463719945,0.193595186632114,0.144286640715059,0.115810009856192,0.120457710104994,0.157253289425554,0.196370685002912,0.125732324246467,-0.269253098122448,-0.243916243295057,-0.534226840734776,-0.904798837896403,-1.19376565320023,-1.32492859483333,-1.33797583967037,-1.30855476634864,-1.10005034897007,-0.730657339402509,-0.367276020080857,-0.121620680261532,-0.0148911571119723,0.00888629045840179,0.00769254166984219,0.00338366727951736,0.00142471435821023,-0.00229531030863981,-0.0154668756616486,-0.0736618054577863,-0.22704443719323,-0.182666422681318,0.137570819065535,0.570458039454882,0.885790452384611,0.941893369192308,0.929881109136087,0.949490985417094,0.761477052713551,0.35386319425602,-0.038085313141861,-0.245500402792815,-0.235225383296043,-0.158102188488609,-0.101050013944983,-0.079304728759249,-0.0900585741308277,-0.134872699336956,-0.211469536437298,-0.274227977061552,-0.175743109741462,-0.142089409319083,0.681501663229267,1.82835020406859,2.92408099611112,3.55527111967716,3.65704829710292,3.33876481223441,2.43275986395942,1.24809393962145,0.229839745757005,-0.367826146591176,-0.500318415572535,-0.421210473775737,-0.325322720562835,-0.283744717546329,-0.307646698647696,-0.389572853214129,-0.498448426853851,-0.503911788926997,-0.169809382077061,-0.1468403673262,0.980612474409573,2.55924650834786,4.19866910660462,5.33456914619698,5.55270818016966,4.83227105737083,3.37390308978155,1.70651136799176,0.335343230490054,-0.51918429165259,-0.88875178910415,-0.949863133389896,-0.881500905678235,-0.820044624367094,-0.820921462486843,-0.871460946741524,-0.887212218060007,-0.712544896943515,-0.108666861741816,-0.205884553354157,0.880898789507852,2.36149108891581,3.88197841282648,4.93600106814469,5.17403262897088,4.54018837381279,3.25852689489981,1.75103580219095,0.420515101450703,-0.517117192397553,-1.22399347569533,-1.71805080063615,-1.99571698775585,-2.12475988014537,-2.14010741527682,-2.01614585080576,-1.68251723599031,-1.07088955996619,-0.336879355386778,-0.00699314819405072,1.16758138713294,2.34791208765337,3.35101361716717,3.92487113022603,3.93096137282617,3.36712877516317,2.34900857457924,1.09529792010802,-0.0414923200087443,-0.999146897825399,-2.07492567561428,-2.99343246138764,-3.56291450962408,-3.73220348766334,-3.48973016651483,-2.86792503266754,-1.92536302144983,-0.879778246056537,0.244046021700783]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1102.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1102.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1102.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1102_field1":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6.11842768789151e-09,1.58866054628929e-08,1.10945135454826e-08,9.17841221496679e-09,9.40388278926155e-09,9.39869958011271e-09,1.09712338583793e-08,1.38092480175629e-08,1.79059116707384e-08,2.32483603172557e-08,2.93993918236711e-08,3.5307164779899e-08,4.05312370135851e-08,4.32589857272096e-08,4.19581410119941e-08,4.49474700802371e-08,2.85131120375776e-08,3.87921506262662e-08,0,0,7.39082353237179e-08,5.972575651591e-08,5.24768197493484e-08,4.54604920114981e-08,4.48776895004407e-08,4.85612781429833e-08,5.71111522926883e-08,7.08627364518358e-08,8.96852862298407e-08,1.1248382578709e-07,1.36991853058197e-07,1.59696975051413e-07,1.76069922124448e-07,1.84192488394128e-07,1.79817859746165e-07,1.66563807835747e-07,1.52070937893999e-07,1.03483272996368e-07,0,0,7.54893581313099e-08,2.73315527465017e-08,2.18714277734421e-08,1.60260802177641e-08,1.50009233143926e-08,1.76586092441374e-08,2.49400604097308e-08,3.84295054871538e-08,5.93933377215601e-08,8.75998358332148e-08,1.20033851423221e-07,1.51590770266644e-07,1.75792823232639e-07,1.87199939059082e-07,1.84258389462413e-07,1.63808702209057e-07,1.40055129331358e-07,1.33411188664398e-07,0,0,6.20043129011674e-08,3.29047352892919e-08,2.24131610859217e-08,1.67078744811674e-08,1.58098482538645e-08,1.89363990622218e-08,2.7314396287069e-08,4.29884024879533e-08,6.78278539998906e-08,1.01665214556902e-07,1.41042029528953e-07,1.79302827549306e-07,2.08795772668808e-07,2.22333472939473e-07,2.17899814685448e-07,1.95213947071728e-07,1.53929166052736e-07,1.27845050890995e-07,0,0,6.42827799590818e-08,2.71989517365895e-08,1.94716305086706e-08,1.35079683872241e-08,1.2708148294249e-08,1.55532742110728e-08,2.34260458908814e-08,3.86148802435475e-08,6.32340961766638e-08,9.73296887742618e-08,1.37431256627626e-07,1.76676636056214e-07,2.07120182952967e-07,2.21554811625221e-07,2.16491717925358e-07,1.94907567232189e-07,1.59414579506454e-07,1.30311574099814e-07,0,0,6.59388208896317e-08,3.20133350687657e-08,2.31005155994477e-08,1.73880650132421e-08,1.65024699486747e-08,1.9687251846236e-08,2.78976174078705e-08,4.28957352914517e-08,6.63247114438445e-08,9.78539466715083e-08,1.34417925809596e-07,1.69919851423509e-07,1.9714483127429e-07,2.10278390023622e-07,2.05548955917597e-07,1.84003929729472e-07,1.50502339618171e-07,1.28567452220822e-07,0,0,7.07197256296561e-08,3.90036665538906e-08,3.09926906309961e-08,2.52152693662786e-08,2.43712935285676e-08,2.7497978279436e-08,3.54091190344316e-08,4.8864597403957e-08,6.84521577224113e-08,9.36412731440123e-08,1.21868110888188e-07,1.49071164610841e-07,1.69733204300819e-07,1.79513647668022e-07,1.76659136239083e-07,1.61256392904041e-07,1.34788082447481e-07,1.20527321310488e-07,0,0,7.83388664410353e-08,5.16362792588968e-08,4.58160748373804e-08,4.09349374294843e-08,4.02234035592944e-08,4.30175835845842e-08,4.93220921468592e-08,5.94659666421444e-08,7.30335855445059e-08,8.93322272060275e-08,1.06837325408011e-07,1.23049953622598e-07,1.35450863501086e-07,1.41088667752868e-07,1.38927884486653e-07,1.3009212055252e-07,1.13823758147023e-07,1.10581488797026e-07,0,0,8.82284693362309e-08,6.90218380124675e-08,6.7973216389578e-08,6.59063616873008e-08,6.5453607518467e-08,6.66860094770128e-08,6.93247235186266e-08,7.3113075277971e-08,7.81018239695529e-08,8.36866661353997e-08,8.95485807554306e-08,9.47949668405496e-08,9.85999251143026e-08,1.00643058975738e-07,9.99590283918794e-08,9.71606582827321e-08,9.07125660945186e-08,9.93934087857699e-08,0,0,9.93477311185609e-08,9.0630501994901e-08,9.70410742309115e-08,9.98150604708237e-08,1.00495158334645e-07,9.84681433600782e-08,9.46934553109668e-08,8.94877872364015e-08,8.36679144965764e-08,7.81219593332405e-08,7.31653102786141e-08,6.94012462152977e-08,6.6778682186389e-08,6.55523052221345e-08,6.60031843873428e-08,6.8059719235503e-08,6.9086315108768e-08,8.82677071565597e-08,0,0,1.10537434230276e-07,1.13730982694126e-07,1.29951665889188e-07,1.38755066379873e-07,1.40904591165927e-07,1.35288101930374e-07,1.22930628960295e-07,1.06768847653556e-07,8.93109224917042e-08,7.30469055790685e-08,5.95011756706803e-08,4.9368256881147e-08,4.3068583467704e-08,4.02765935514293e-08,4.09873275823903e-08,4.58672164829667e-08,5.16787880944652e-08,7.8369653249692e-08,0,0,1.20491772642262e-07,1.34708466851575e-07,1.61121528656213e-07,1.76495861524206e-07,1.79348066069311e-07,1.69588149454273e-07,1.48969541664856e-07,1.21816633573763e-07,9.3631889449086e-08,6.84696177143368e-08,4.88934312647062e-08,3.54398476350606e-08,2.75264358754813e-08,2.43979988574844e-08,2.52424517887564e-08,3.10203707685468e-08,3.90326947899368e-08,7.07420203189371e-08,0,0,1.28538743089703e-07,1.50453284181052e-07,1.8392038997678e-07,2.05422186787256e-07,2.10141485639424e-07,1.97025254073233e-07,1.69829575087275e-07,1.34362988514082e-07,9.78292507335508e-08,6.63193599561707e-08,4.28993985656156e-08,2.79038437674189e-08,1.96937356232851e-08,1.65088769445604e-08,1.73945181914624e-08,2.31101464772863e-08,3.20171189927123e-08,6.59535521893037e-08,0,0,1.30302879854776e-07,1.59385508967803e-07,1.94908513234422e-07,2.16521958870435e-07,2.21581486974485e-07,2.07148397990804e-07,1.76710242622379e-07,1.37466679414908e-07,9.73639201890784e-08,6.32631988799709e-08,3.86368850262808e-08,2.34413554438006e-08,1.55638255833225e-08,1.27162668579342e-08,1.35158692712485e-08,1.94785387150231e-08,2.72198537366024e-08,6.42709218419002e-08,0,0,1.27885397481437e-07,1.53964054670266e-07,1.95162403010223e-07,2.17841066477363e-07,2.22282933947794e-07,2.08730884844866e-07,1.7922495433483e-07,1.4095863115237e-07,1.01586813404346e-07,6.77634510756967e-08,4.29413580941764e-08,2.72821895414031e-08,1.8914017245747e-08,1.57916666325082e-08,1.66889176412137e-08,2.23929554760796e-08,3.28540801086668e-08,6.20215895383271e-08,0,0,1.33425381516931e-07,1.40262546437219e-07,1.64190869945324e-07,1.84686431709399e-07,1.87646427140726e-07,1.76213688017222e-07,1.51939084443601e-07,1.2029354463181e-07,8.77764263732779e-08,5.95052069403831e-08,3.84991724702185e-08,2.49852489787084e-08,1.76907778411357e-08,1.50275288609534e-08,1.60515547981453e-08,2.18988997730841e-08,2.73953515729354e-08,7.54825618035618e-08,0,0,1.03343446995494e-07,1.51841877810359e-07,1.66291494126168e-07,1.79574604803874e-07,1.83931699561829e-07,1.75800497251626e-07,1.59426128759369e-07,1.36723595884003e-07,1.12230291791623e-07,8.94546201743073e-08,7.06582370011698e-08,5.69316792567961e-08,4.84001647677416e-08,4.47273407844201e-08,4.53131495077751e-08,5.23127607730763e-08,5.95571620229629e-08,7.36727496493974e-08,0,0,3.86558994695781e-08,2.83676299001066e-08,4.4794625637008e-08,4.17866635968997e-08,4.30990326553816e-08,4.03731654630518e-08,3.51642153507046e-08,2.92733472930159e-08,2.31404647605737e-08,1.78158168797068e-08,1.37337880695099e-08,1.0907003482113e-08,9.34232796252202e-09,9.34665474152483e-09,9.12545171946622e-09,1.10266828612326e-08,1.58083551047373e-08,6.04871054441477e-09,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.10055206740847e-08,2.90760295485991e-08,1.98863374361642e-08,1.66554813483583e-08,1.7046829307622e-08,1.69946100279573e-08,1.98568953395292e-08,2.49663087548459e-08,3.22785733452308e-08,4.18876366409294e-08,5.28357761538696e-08,6.34898398205391e-08,7.27938016447165e-08,7.75457623063041e-08,7.53406952816783e-08,8.05433958498273e-08,5.12079303909117e-08,6.94208587092085e-08,0,0,1.32173143735844e-07,1.07535334173945e-07,9.4447222765949e-08,8.1807105802337e-08,8.08096436882541e-08,8.74856003328942e-08,1.02757886675419e-07,1.27547797508952e-07,1.61378701714553e-07,2.02405683701626e-07,2.46574989560214e-07,2.87351113448215e-07,3.17169108196078e-07,3.31710829918594e-07,3.23740430303772e-07,3.00176012091465e-07,2.73586671977292e-07,1.85839512162489e-07,0,0,1.36705123355206e-07,5.00900476543596e-08,3.98356568523788e-08,2.92961083061866e-08,2.73485409963828e-08,3.22286808272587e-08,4.55244733852692e-08,7.00431120297104e-08,1.08243136007509e-07,1.59499608408788e-07,2.18505170639273e-07,2.75772402465372e-07,3.19508957133701e-07,3.40401390084124e-07,3.34823613507391e-07,2.97923252062747e-07,2.55203213180269e-07,2.40355466296539e-07,0,0,1.11952068311525e-07,5.96503433531281e-08,4.05201872533598e-08,3.02453409748514e-08,2.86259520908131e-08,3.42627538649245e-08,4.94285726450724e-08,7.7792059428201e-08,1.22693573301535e-07,1.83844619273732e-07,2.54885079678346e-07,3.23985654475041e-07,3.77156138563152e-07,4.01514519510953e-07,3.93629440497675e-07,3.52402202111565e-07,2.79168156527481e-07,2.30893570344374e-07,0,0,1.16083603518221e-07,4.95016919154021e-08,3.52738166280519e-08,2.45213135812557e-08,2.30420948862712e-08,2.82119050484668e-08,4.25085927805778e-08,7.00474016265735e-08,1.14689947678125e-07,1.76474722719676e-07,2.49059254675815e-07,3.20013502531405e-07,3.74962606061341e-07,4.0104615083442e-07,3.92016242671862e-07,3.52642116392901e-07,2.88900233364374e-07,2.35187491253903e-07,0,0,1.19042067036677e-07,5.81990259105169e-08,4.1832372448891e-08,3.15158009801371e-08,2.99420100339697e-08,3.56848893252542e-08,5.05501269975598e-08,7.77745785151335e-08,1.20157286321107e-07,1.77236942170521e-07,2.43314331131537e-07,3.07498809192655e-07,3.5676326043708e-07,3.80248084981795e-07,3.71902116658085e-07,3.329778013416e-07,2.72887290627991e-07,2.32008162701843e-07,0,0,1.27684973391688e-07,7.08643300329781e-08,5.61876996398894e-08,4.57433973441299e-08,4.41451375815797e-08,4.99233723146566e-08,6.41888209322845e-08,8.85554366659585e-08,1.24094589834583e-07,1.69648488139271e-07,2.20828144684358e-07,2.69894744188718e-07,3.0738676516762e-07,3.2522647187173e-07,3.19755732518231e-07,2.91870689212432e-07,2.44600660057032e-07,2.17472179644558e-07,0,0,1.41431105888883e-07,9.38488443907817e-08,8.29315849898453e-08,7.43501947981414e-08,7.29436394807132e-08,7.79374219051189e-08,8.95069892129066e-08,1.07758131503034e-07,1.32326586942261e-07,1.61831758808285e-07,1.93518150809046e-07,2.23062277994255e-07,2.45266788103209e-07,2.55644289018799e-07,2.51934116316821e-07,2.35422594718292e-07,2.06615185046172e-07,1.99597684257294e-07,0,0,1.59186027315096e-07,1.25458374669577e-07,1.23168665956212e-07,1.19428114038965e-07,1.18831851046344e-07,1.20914455461449e-07,1.25586621651325e-07,1.3258583663522e-07,1.41482438720043e-07,1.5166625251524e-07,1.62211059145053e-07,1.71798724577356e-07,1.78920146022455e-07,1.82315213791801e-07,1.81276721213124e-07,1.76141288616337e-07,1.6462211747776e-07,1.79405843904105e-07,0,0,1.79317383006828e-07,1.64457348700267e-07,1.75902454575901e-07,1.80991699899234e-07,1.82020542346443e-07,1.78656182786118e-07,1.71596390572611e-07,1.62088592496315e-07,1.51627843064019e-07,1.41521415930251e-07,1.32689427614678e-07,1.25739031350875e-07,1.21098264295295e-07,1.19029642747309e-07,1.19621452243115e-07,1.23340310246528e-07,1.25587952720392e-07,1.59263013772217e-07,0,0,1.99511370259974e-07,2.06431708150537e-07,2.35143931862453e-07,2.51590678219616e-07,2.55283050270519e-07,2.44946800534799e-07,2.22827254350114e-07,1.93384511551138e-07,1.61790772215336e-07,1.32354669755651e-07,1.07829249083233e-07,8.96006322402235e-08,7.80404895134752e-08,7.30501514621441e-08,7.44561313042882e-08,8.30342835178661e-08,9.39344502137204e-08,1.41491820378518e-07,0,0,2.17401338311093e-07,2.44440400365081e-07,2.91608087515071e-07,3.19432328514786e-07,3.24893607825362e-07,3.07095931889936e-07,2.69688183255391e-07,2.20720488514677e-07,1.69625363765297e-07,1.24125879376871e-07,8.86107147388259e-08,6.4248286561548e-08,4.99794478563344e-08,4.41980365830308e-08,4.579670279752e-08,5.62430200266527e-08,7.09209404552747e-08,1.27728308821202e-07,0,0,2.31955740124062e-07,2.72785379855957e-07,3.32810604584461e-07,3.71665536491485e-07,3.79994765366312e-07,3.5654143720948e-07,3.0733457281999e-07,2.43217204512633e-07,1.77197271132456e-07,1.2015386638773e-07,7.77873847474655e-08,5.05665867515979e-08,3.57005082396382e-08,2.99570582146978e-08,3.15310427667462e-08,4.18524869971888e-08,5.82122232196911e-08,1.19069606227178e-07,0,0,2.35173131015857e-07,2.88854225852098e-07,3.52631118288092e-07,3.92041700015818e-07,4.01066878532415e-07,3.74986726117792e-07,3.20048773886499e-07,2.49102298647595e-07,1.76520552379777e-07,1.14730811432355e-07,7.00789861707257e-08,4.25305722950727e-08,2.82268781598548e-08,2.30534497324881e-08,2.45322106946664e-08,3.52848075361391e-08,4.95292846649565e-08,1.16068049995402e-07,0,0,2.30956097993853e-07,2.79237599142915e-07,3.52357896996512e-07,3.93582885403077e-07,4.0148128169162e-07,3.77097032630291e-07,3.23898638714906e-07,2.54778620805575e-07,1.83737899776727e-07,1.2260310514658e-07,7.77256668439339e-08,4.93839876099403e-08,3.42325235565972e-08,2.86016766105619e-08,3.02192318207007e-08,4.0489940847328e-08,5.95809621652079e-08,1.11973448227509e-07,0,0,2.40395236995074e-07,2.55541040941685e-07,2.98542679517591e-07,3.35530579705686e-07,3.41140647951192e-07,3.20194530202686e-07,2.76327149600312e-07,2.18902183842823e-07,1.59752812775715e-07,1.0838944118608e-07,7.01240774662011e-08,4.5570912013692e-08,3.22587759775264e-08,2.73717655240092e-08,2.93183286822474e-08,3.98589754342055e-08,5.01601553364997e-08,1.36683626243072e-07,0,0,1.85647995302513e-07,2.73293146084281e-07,2.99837780045881e-07,3.23461082881141e-07,3.31411645396798e-07,3.16848977133355e-07,2.87013128551342e-07,2.46218795934705e-07,2.02050895495639e-07,1.61040543818432e-07,1.2723728551801e-07,1.02478018754032e-07,8.72297632159896e-08,8.05694716833507e-08,8.1571195943921e-08,9.41880849796146e-08,1.07274827340765e-07,1.3182242468786e-07,0,0,6.9229216137648e-08,5.10122418865961e-08,8.03296154039004e-08,7.51093766959136e-08,7.73317521894536e-08,7.25787218668741e-08,6.32941272213332e-08,5.26592511884939e-08,4.17327036353609e-08,3.21464508202446e-08,2.48532104401669e-08,1.97597212128588e-08,1.69087313858859e-08,1.6958373445505e-08,1.65764425125489e-08,1.9783104290961e-08,2.89594967543846e-08,1.09106880471122e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.48326996500834e-08,3.96183446382516e-08,2.67118103448092e-08,2.25836703017702e-08,2.30110806121487e-08,2.30300268826746e-08,2.68437688819397e-08,3.37057157417042e-08,4.35413110441465e-08,5.64160120088774e-08,7.1124127129754e-08,8.53554727751209e-08,9.78378700652313e-08,1.04238835507294e-07,1.0114424247582e-07,1.08072133751692e-07,6.89279111478114e-08,9.3016285134564e-08,0,0,1.77209819562176e-07,1.44745201739982e-07,1.26987621693346e-07,1.10168226829054e-07,1.08798347904796e-07,1.17746258815362e-07,1.38360696488282e-07,1.71682782988277e-07,2.17230799799808e-07,2.72508638955819e-07,3.32075258576213e-07,3.87209267346047e-07,4.27421022947848e-07,4.47115995123452e-07,4.36439226409705e-07,4.04645053185989e-07,3.683601071275e-07,2.49727777939162e-07,0,0,1.84872693872287e-07,6.85180899081024e-08,5.41770647177645e-08,3.98952888804746e-08,3.72654793418026e-08,4.38953275107025e-08,6.19492300108878e-08,9.52891176993491e-08,1.47133399652975e-07,2.16683328486791e-07,2.96613883677517e-07,3.74131455844624e-07,4.33384771133063e-07,4.61494934054969e-07,4.53842028957257e-07,4.04352353341544e-07,3.46712264297284e-07,3.23816145167815e-07,0,0,1.51138516174081e-07,8.07195586542345e-08,5.47495591468438e-08,4.09111127611376e-08,3.86923751020165e-08,4.63340572867175e-08,6.68339807956251e-08,1.05166423170288e-07,1.65830201459278e-07,2.48375563059098e-07,3.44224881405705e-07,4.37315838276556e-07,5.08916495042957e-07,5.41830934923183e-07,5.3112791828852e-07,4.75295955299679e-07,3.78020810846924e-07,3.1172028926077e-07,0,0,1.56681450200351e-07,6.72472739281849e-08,4.77274207043821e-08,3.32244598388414e-08,3.12070440386244e-08,3.82144254706243e-08,5.75752209507761e-08,9.48854478506922e-08,1.55323020148234e-07,2.38893072792415e-07,3.36970061919578e-07,4.32747311399768e-07,5.06832636540861e-07,5.4191992541174e-07,5.29904132418669e-07,4.76489417208658e-07,3.90820723427464e-07,3.17357420625128e-07,0,0,1.60659460763317e-07,7.8953414859415e-08,5.65902133666057e-08,4.26994147487856e-08,4.05261448358384e-08,4.83246761326787e-08,6.84512297470694e-08,1.05267809715165e-07,1.62607391649251e-07,2.39735934154667e-07,3.28981391974874e-07,4.1557722261109e-07,4.81996687364455e-07,5.13712343427567e-07,5.0243328911154e-07,4.49880551300575e-07,3.69472397503437e-07,3.12991456249601e-07,0,0,1.72308636417085e-07,9.6182144753847e-08,7.60064391398603e-08,6.19761062798793e-08,5.98063419903015e-08,6.75860658921849e-08,8.69243694917139e-08,1.19903300694543e-07,1.67944581486061e-07,2.29556447561456e-07,2.98691211905616e-07,3.6507504458786e-07,4.1569783495592e-07,4.3973258148279e-07,4.32495833371094e-07,3.944988119584e-07,3.31223959737559e-07,2.93470484091045e-07,0,0,1.90832905215659e-07,1.27307303125263e-07,1.1227328332012e-07,1.00702147835244e-07,9.88111936555109e-08,1.05601919450906e-07,1.21160215725124e-07,1.4587561345773e-07,1.79069489971646e-07,2.1894974543262e-07,2.61823503008541e-07,3.0175152686364e-07,3.31965219992829e-07,3.45940546900301e-07,3.40892993922592e-07,3.18495291324215e-07,2.79917612285691e-07,2.69301324262915e-07,0,0,2.14810245107287e-07,1.70107708463713e-07,1.66683856001525e-07,1.61853468584396e-07,1.60897316495158e-07,1.63767043156072e-07,1.70074348416505e-07,1.79410858002422e-07,1.91458213427931e-07,2.05193148338165e-07,2.19544280669491e-07,2.32571264088118e-07,2.42197921079845e-07,2.46965549980992e-07,2.4550261622968e-07,2.38297442616413e-07,2.23218141436513e-07,2.4206002045677e-07,0,0,2.41929946779119e-07,2.22971092859777e-07,2.37942214461208e-07,2.45077956957122e-07,2.46526761592719e-07,2.41804162530172e-07,2.32268383380164e-07,2.19360822195707e-07,2.05134750762229e-07,1.915154029181e-07,1.79564564611079e-07,1.70301170970356e-07,1.64041636456215e-07,1.61192413814079e-07,1.62142215320396e-07,1.66939875890233e-07,1.7030163190714e-07,2.1492420401408e-07,0,0,2.69173826513375e-07,2.79644767842274e-07,3.18081876406413e-07,3.4038380324051e-07,3.45406523776314e-07,3.31493476490045e-07,3.0140500619502e-07,2.61626460142331e-07,2.18890374570607e-07,1.79112643160074e-07,1.45983272852729e-07,1.21301258345085e-07,1.05757025802466e-07,9.89715929741043e-08,1.00861380923037e-07,1.12427008080502e-07,1.27436833730257e-07,1.90922455030006e-07,0,0,2.93363959340195e-07,3.3098406578158e-07,3.94113086645767e-07,4.32017006498593e-07,4.39235757290374e-07,4.1526178499667e-07,3.64763636703501e-07,2.98525766799111e-07,2.2951704822645e-07,1.67987425031361e-07,1.19983077388258e-07,8.70116322615319e-08,6.76687254401597e-08,5.9884650979761e-08,6.20553261528619e-08,7.60886224239518e-08,9.62652031190827e-08,1.72372589694992e-07,0,0,3.1291807830459e-07,3.6931661475984e-07,4.49631462015372e-07,5.0209706991765e-07,5.13356352031798e-07,4.81685022676478e-07,4.15348729022768e-07,3.28850103391886e-07,2.39687242080331e-07,1.62610492488521e-07,1.05293089129652e-07,6.84802747949518e-08,4.83514261014616e-08,4.05511204444508e-08,4.27248168949611e-08,5.6621582074753e-08,7.89796569901435e-08,1.60697728723477e-07,0,0,3.17338702301547e-07,3.90765455407711e-07,4.76459345408566e-07,5.29904708884981e-07,5.4191476328901e-07,5.06833282801865e-07,4.32765080358746e-07,3.37003286928979e-07,2.38935740412584e-07,1.55364098764878e-07,9.49182263889582e-08,5.75979015503985e-08,3.82294870782082e-08,3.12182868990018e-08,3.32350351034969e-08,4.77401620117154e-08,6.72720499401041e-08,1.56669047645004e-07,0,0,3.11792996164252e-07,3.78123115866596e-07,4.75297470368043e-07,5.31139677107377e-07,5.41858834008878e-07,5.08910029979215e-07,4.37264952546086e-07,3.4413679305745e-07,2.4827557859743e-07,1.657407504036e-07,1.05100557912025e-07,6.67911153831934e-08,4.63065191229929e-08,3.86706638532508e-08,4.08862413180531e-08,5.47169725825142e-08,8.06539757244858e-08,1.51151905860029e-07,0,0,3.23891569808174e-07,3.47120685093807e-07,4.05096148263802e-07,4.5471524031526e-07,4.62407261573961e-07,4.34215282126459e-07,3.7478461205903e-07,2.97054150841404e-07,2.16937162086495e-07,1.47255343883153e-07,9.53372533178406e-08,6.19639210419055e-08,4.38971364482239e-08,3.72629031589869e-08,3.98925473045713e-08,5.41720327658589e-08,6.85516623382614e-08,1.84834653600721e-07,0,0,2.49556511507413e-07,3.68149849097778e-07,4.04416229314895e-07,4.36301343080902e-07,4.46972104181623e-07,4.27237172276545e-07,3.86977623838009e-07,3.31784082419699e-07,2.72179155909486e-07,2.16886915233815e-07,1.713462113163e-07,1.38044529894678e-07,1.17449751122463e-07,1.08516435476345e-07,1.09891711011554e-07,1.26689516465534e-07,1.44453457755883e-07,1.76838329200297e-07,0,0,9.28199720599541e-08,6.87420603152076e-08,1.07860007299942e-07,1.00926498160982e-07,1.04039222630643e-07,9.76322802384704e-08,8.51645178984754e-08,7.09448417618276e-08,5.62522398587379e-08,4.33967991441867e-08,3.35785389676841e-08,2.67326235456607e-08,2.29312461359928e-08,2.29078562904955e-08,2.24943866966563e-08,2.65943556269216e-08,3.9490293668039e-08,1.47375630011545e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.77459306486062e-08,4.7781500262274e-08,3.17955583031589e-08,2.71253644036586e-08,2.75746320921972e-08,2.76135840355921e-08,3.21769458800473e-08,4.03728927116434e-08,5.20828449481128e-08,6.74458931425847e-08,8.49378882837664e-08,1.0194151072274e-07,1.16790826769387e-07,1.24351768284462e-07,1.20730604538663e-07,1.28763658988023e-07,8.23900119621035e-08,1.10733847096915e-07,0,0,2.11019422279814e-07,1.72554831479924e-07,1.51370742937831e-07,1.31404080531938e-07,1.29786559624694e-07,1.40492261479068e-07,1.65046842036014e-07,2.0484651124241e-07,2.59229328169643e-07,3.25313048337291e-07,3.96625648115735e-07,4.62600158000363e-07,5.10995491344866e-07,5.34540243653239e-07,5.21547930657134e-07,4.8386696348574e-07,4.39738739912755e-07,2.97538761461782e-07,0,0,2.21331631679976e-07,8.28515493380604e-08,6.5174815919502e-08,4.80972624153622e-08,4.48830218957526e-08,5.28753632152922e-08,7.45855180978278e-08,1.14608867674124e-07,1.76860202111503e-07,2.60242446533419e-07,3.56042749798449e-07,4.48802663385186e-07,5.19587193548153e-07,5.53337340871243e-07,5.43976588738078e-07,4.85151413641566e-07,4.16505133252329e-07,3.86531889025745e-07,0,0,1.80786126306425e-07,9.66992779847806e-08,6.54878262820468e-08,4.89842865215567e-08,4.63224586547823e-08,5.54671958206673e-08,8.00142657166179e-08,1.25900756692355e-07,1.98467384923877e-07,2.9714671612229e-07,4.11590498174813e-07,5.22703663622614e-07,6.08047617862943e-07,6.47268805215899e-07,6.34544610357312e-07,5.6765356075693e-07,4.52880622331742e-07,3.72866470979795e-07,0,0,1.87326869147045e-07,8.08056956947279e-08,5.71632318377545e-08,3.9843826539038e-08,3.73983502701512e-08,4.5804719918086e-08,6.90205831460685e-08,1.13733343218632e-07,1.86138083309689e-07,2.86172709831968e-07,4.03434891645563e-07,5.17811973062605e-07,6.0615945378071e-07,6.47987386603801e-07,6.33788109577649e-07,5.69752754657858e-07,4.67803368108483e-07,3.79451215751894e-07,0,0,1.92053311855976e-07,9.47923653138825e-08,6.77689825702124e-08,5.11823630102861e-08,4.85844028727021e-08,5.79189936748903e-08,8.20267962027987e-08,1.26154002386962e-07,1.94772139475598e-07,2.87044951155862e-07,3.93687607703838e-07,4.9712178163098e-07,5.76451514369044e-07,6.14151367992766e-07,6.00795726274226e-07,5.38074700239725e-07,4.42491872188099e-07,3.74144020484306e-07,0,0,2.05996244233596e-07,1.15453367442868e-07,9.10682835571027e-08,7.43159824125456e-08,7.16652395817341e-08,8.10476765572178e-08,1.04171823050155e-07,1.43658148121277e-07,2.01198543094654e-07,2.74889707920025e-07,3.57637000410696e-07,4.369512754387e-07,4.97556904368887e-07,5.26383690631914e-07,5.17558566564145e-07,4.72028670078252e-07,3.96914798591875e-07,3.50838032157441e-07,0,0,2.28137010350533e-07,1.52810274442407e-07,1.34472998598012e-07,1.2081874588405e-07,1.18477968355919e-07,1.26569806887155e-07,1.45262856291232e-07,1.74764308451476e-07,2.14471164219276e-07,2.62182999972693e-07,3.1350928200148e-07,3.61452064509008e-07,3.9753689712639e-07,4.14381831593568e-07,4.08450283159826e-07,3.81251498566721e-07,3.35568559454255e-07,3.21970526215186e-07,0,0,2.56755397975332e-07,2.04146146955529e-07,1.9970798753156e-07,1.94017755116508e-07,1.92984839042255e-07,1.96320416320754e-07,2.03768626446727e-07,2.14968888987084e-07,2.292780480889e-07,2.45752241111676e-07,2.62935918376345e-07,2.78653478068482e-07,2.90377853146261e-07,2.95957925662948e-07,2.94314222287035e-07,2.85532513164494e-07,2.6768183066231e-07,2.89388917787894e-07,0,0,2.89217741477039e-07,2.67352530262102e-07,2.85061552349974e-07,2.93752164672219e-07,2.95376215672327e-07,2.89854527465834e-07,2.7825116795434e-07,2.62691207556652e-07,2.4567353331175e-07,2.29352669884134e-07,2.15172109551272e-07,2.04069363118115e-07,1.9668442935413e-07,1.93377136129677e-07,1.94401622218536e-07,2.00046876914944e-07,2.04404711876856e-07,2.56906350572062e-07,0,0,3.21801232472167e-07,3.35208180817597e-07,3.80705297890092e-07,4.07776945993923e-07,4.13679704043188e-07,3.96916629256144e-07,3.60996182601033e-07,3.13250828599726e-07,2.62105954518529e-07,2.14530070159109e-07,1.74908621083337e-07,1.45451908593628e-07,1.26777502428746e-07,1.18691934009045e-07,1.21031976480469e-07,1.34677657844583e-07,1.52983921057411e-07,2.28255378109597e-07,0,0,3.5069471660432e-07,3.96595125026987e-07,4.71524262072929e-07,5.16927156324536e-07,5.25723697032285e-07,4.96977159631336e-07,4.36534356662915e-07,3.57412052807625e-07,2.74832120590394e-07,2.01251077267393e-07,1.437611478399e-07,1.04285586628632e-07,8.11564095669963e-08,7.17685750849254e-08,7.44204146756263e-08,9.11770779699669e-08,1.15562149341983e-07,2.06080319988262e-07,0,0,3.74051407778776e-07,4.422814498653e-07,5.37743854009575e-07,6.0036791444227e-07,6.13702047191979e-07,5.76057927844418e-07,4.96836489713479e-07,3.93527810822357e-07,2.86991758118983e-07,1.94785292942136e-07,1.26194592454339e-07,8.20706163328637e-08,5.79582966165121e-08,4.86205381853635e-08,5.12193186179999e-08,6.78119332257387e-08,9.48348151723564e-08,1.92101034713805e-07,0,0,3.79428771534628e-07,4.67744699982776e-07,5.69699019317496e-07,6.33749419722128e-07,6.47942660857148e-07,6.06123105841209e-07,5.17798244359024e-07,4.0344550108312e-07,2.86201176550086e-07,1.86170505229298e-07,1.13760670742918e-07,6.90392294565272e-08,4.58164939921833e-08,3.74067297979631e-08,3.98513896519696e-08,5.71760470914635e-08,8.08200274453938e-08,1.87322810620728e-07,0,0,3.72941143996042e-07,4.53013910554058e-07,5.67728159139762e-07,6.34648311246645e-07,6.47389274047931e-07,6.08127159703978e-07,5.22722682958201e-07,4.11551520627442e-07,2.97079741521668e-07,1.9839956228769e-07,1.25850510548904e-07,7.99840046336343e-08,5.54502950061464e-08,4.63099224399227e-08,4.89671552963729e-08,6.54585373382595e-08,9.66548777933566e-08,1.80781969976026e-07,0,0,3.86650895298543e-07,4.16939498781579e-07,4.85934773064646e-07,5.44929448263028e-07,5.54332884801274e-07,5.2047158099721e-07,4.49471256687848e-07,3.56455205066348e-07,2.60439086126227e-07,1.76913171446225e-07,1.14590593537377e-07,7.45430998727079e-08,5.28291833985384e-08,4.48373237751077e-08,4.80529495096951e-08,6.51232758583966e-08,8.2815671620482e-08,2.21275557025528e-07,0,0,2.97447505946577e-07,4.3973009635348e-07,4.83892464597687e-07,5.21697761056909e-07,5.34710432781886e-07,5.11102706175613e-07,4.62616800342149e-07,3.96522135900587e-07,3.25109731705113e-07,2.58959084157593e-07,2.04545992713882e-07,1.64743438457292e-07,1.40195832465127e-07,1.29500045853654e-07,1.3112296197616e-07,1.51076541495918e-07,1.72278562725235e-07,2.10701520580559e-07,0,0,1.10575959281028e-07,8.22644595223221e-08,1.28608470343234e-07,1.205895586508e-07,1.24226758574432e-07,1.16651638891174e-07,1.01805282953528e-07,8.47969740951675e-08,6.73057335341091e-08,5.19511889817338e-08,4.02512008996859e-08,3.20679326906261e-08,2.75157283551404e-08,2.74700755353372e-08,2.70392294627563e-08,3.16812233383224e-08,4.76635454265725e-08,1.766762170739e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.99280076080919e-08,5.37976885546604e-08,3.54898004307831e-08,3.04864310755072e-08,3.08871008356689e-08,3.10227498636494e-08,3.61046195115822e-08,4.52772395343214e-08,5.83944781678397e-08,7.55685215496928e-08,9.51590459160967e-08,1.14157237904998e-07,1.30777912961654e-07,1.39270307603996e-07,1.3515990880912e-07,1.43907060689061e-07,9.24786280306421e-08,1.23562716519416e-07,0,0,2.3536372521233e-07,1.92205575171473e-07,1.68592737718271e-07,1.46540426981282e-07,1.44702562595741e-07,1.5662823632646e-07,1.84084031317752e-07,2.28474283031797e-07,2.89220455593649e-07,3.63118041014978e-07,4.42960005753529e-07,5.16972379804142e-07,5.71218516444612e-07,5.97656034371161e-07,5.82939806628674e-07,5.40926297067722e-07,4.90847287391781e-07,3.31621181170574e-07,0,0,2.47390497735098e-07,9.34956916127158e-08,7.31906409598598e-08,5.40756581511816e-08,5.04786797948844e-08,5.94369843396798e-08,8.3762573314108e-08,1.28634548074856e-07,1.98320242919875e-07,2.9160928591749e-07,3.98642322117376e-07,5.02185010364403e-07,5.81225864416265e-07,6.18807741230302e-07,6.08271207722922e-07,5.43157284302158e-07,4.6662415857892e-07,4.31211790160457e-07,0,0,2.02135082713237e-07,1.08133175168951e-07,7.31724651912681e-08,5.47778693776102e-08,5.17784706965514e-08,6.20260136333678e-08,8.94752358095932e-08,1.40774295934756e-07,2.21866211260499e-07,3.32040219989384e-07,4.59717700488693e-07,5.83504830445585e-07,6.78496827575442e-07,7.22219326493852e-07,7.07963114431631e-07,6.33229344139029e-07,5.06449710963947e-07,4.16826453110461e-07,0,0,2.09270038484752e-07,9.06107568701036e-08,6.39304604160424e-08,4.45975944406576e-08,4.18455388348523e-08,5.12549160136841e-08,7.72291682862556e-08,1.27264854118911e-07,2.08234653206027e-07,3.19999728365085e-07,4.50864152209098e-07,5.78360356520952e-07,6.76721817543704e-07,7.23214988232346e-07,7.07545695912306e-07,6.36070003072312e-07,5.2261364830059e-07,4.24039325980633e-07,0,0,2.14533855992706e-07,1.06208847399968e-07,7.57899649885047e-08,5.73033875626359e-08,5.43605200160383e-08,6.48275413272655e-08,9.18051233374614e-08,1.4114202268239e-07,2.17857828678898e-07,3.20907081139546e-07,4.39924598021166e-07,5.55243831458026e-07,6.43623676233277e-07,6.85655810005246e-07,6.70722998095948e-07,6.0083117548693e-07,4.94665131330472e-07,4.17987229838997e-07,0,0,2.3011734811155e-07,1.29380347522248e-07,1.01851942587525e-07,8.32028438551396e-08,8.02296236485088e-08,9.06901309485264e-08,1.16574408979266e-07,1.6072767278801e-07,2.25010819695593e-07,3.07347123894719e-07,3.99729314888035e-07,4.88365725174842e-07,5.56018608171275e-07,5.88165245671077e-07,5.78420033697582e-07,5.27361628080234e-07,4.43862309326971e-07,3.92047092953415e-07,0,0,2.54841349505789e-07,1.71184689230242e-07,1.50485051790503e-07,1.352655691631e-07,1.32658475368882e-07,1.41726781068152e-07,1.62537553925784e-07,1.95515710839604e-07,2.39844227324912e-07,2.93134921935236e-07,3.50531280616325e-07,4.0414276903382e-07,4.44671822679701e-07,4.63483183519649e-07,4.56802056742509e-07,4.26320605273727e-07,3.75445771774499e-07,3.59735531646153e-07,0,0,2.86846643422777e-07,2.28601249095e-07,2.23434197067648e-07,2.17283003657687e-07,2.1601842977045e-07,2.1976711679553e-07,2.28043202678618e-07,2.40413019915462e-07,2.56383258882361e-07,2.74762026876686e-07,2.94077464757242e-07,3.11762700270452e-07,3.24932544131783e-07,3.31348721368518e-07,3.29449466946994e-07,3.19384123345846e-07,2.99721545142986e-07,3.23310225822794e-07,0,0,3.23097532256253e-07,2.99310371947869e-07,3.18799198791866e-07,3.28750301977349e-07,3.30625641240489e-07,3.24281094726202e-07,3.11261012594016e-07,2.93772083098086e-07,2.74662891827005e-07,2.56475030470081e-07,2.4066504875823e-07,2.2841694737157e-07,2.20220592463569e-07,2.16506790807034e-07,2.17761412533501e-07,2.23855603599382e-07,2.28923945193094e-07,2.87034833912402e-07,0,0,3.59524027435996e-07,3.74998470685769e-07,4.25643632806844e-07,4.55967254921105e-07,4.62614760334185e-07,4.43905824147636e-07,4.03579701599365e-07,3.5021212165295e-07,2.93040845249773e-07,2.39918902401149e-07,1.95697071391239e-07,1.62774519490781e-07,1.41987013370653e-07,1.32926440095737e-07,1.35532665804808e-07,1.50740182042606e-07,1.71403060838147e-07,2.54988306978296e-07,0,0,3.91865968567401e-07,4.43463837259672e-07,5.26740540618422e-07,5.77638997468343e-07,5.87344842345168e-07,5.552959913801e-07,4.87844095987891e-07,3.99444544387652e-07,3.07270286140849e-07,2.25071973397782e-07,1.60852813370907e-07,1.16714221638705e-07,9.08243236156531e-08,8.03574645217306e-08,8.33324859228418e-08,1.01986759131406e-07,1.29514270352627e-07,2.3022160617792e-07,0,0,4.17875731034837e-07,4.94400334680615e-07,6.00419704728657e-07,6.70207422619662e-07,6.85118838189805e-07,6.43153362564168e-07,5.54905376267404e-07,4.39739533630076e-07,3.20851859342388e-07,2.17883163224407e-07,1.41199551852941e-07,9.18648768453943e-08,6.48804878855851e-08,5.44084475664048e-08,5.73526155177005e-08,7.5844882422399e-08,1.06269342354106e-07,2.14589954300104e-07,0,0,4.24013614223249e-07,5.22554758397549e-07,6.35990732971035e-07,7.07460808749702e-07,7.23123343771894e-07,6.76641402401761e-07,5.78307683791874e-07,4.50844911798256e-07,3.20007464220898e-07,2.0825301467913e-07,1.27282701264721e-07,7.72408559169848e-08,5.12612661755959e-08,4.18494261660112e-08,4.46005563387693e-08,6.39421304073764e-08,9.0610206743581e-08,2.09277786075925e-07,0,0,4.16898188888898e-07,5.0661168011606e-07,6.33392994916445e-07,7.08178119294649e-07,7.22450371921652e-07,6.78682573546023e-07,5.83613818540538e-07,4.5974692703782e-07,3.32022814949326e-07,2.21832919302242e-07,1.4074912686524e-07,8.94641889747618e-08,6.20246482484401e-08,5.17790722334478e-08,5.47723267601579e-08,7.31500711085846e-08,1.08120563864253e-07,2.02106899931506e-07,0,0,4.31380627159195e-07,4.67055444114166e-07,5.43923351446631e-07,6.09247447569606e-07,6.19825595781331e-07,5.82103271500228e-07,5.02814733930799e-07,3.98979945743894e-07,2.91711257011157e-07,1.98275548592846e-07,1.28528436445113e-07,8.36470917462821e-08,5.93300337543971e-08,5.03789634190655e-08,5.39793326052974e-08,7.30808590664505e-08,9.33693918537405e-08,2.47315164978603e-07,0,0,3.31652144896002e-07,4.91126112826239e-07,5.41310262727766e-07,5.8348164765373e-07,5.98256869201445e-07,5.71727948720481e-07,5.17339149477584e-07,4.43131856905516e-07,3.63110913105912e-07,2.89078293423317e-07,2.28251208447941e-07,1.83825936884216e-07,1.56359047969867e-07,1.44435241858808e-07,1.46278348481365e-07,1.68331228772103e-07,1.91975068588108e-07,2.35151709077604e-07,0,0,1.23482868944411e-07,9.24568950062713e-08,1.43862931903943e-07,1.35153165901322e-07,1.39276010969551e-07,1.30759246826227e-07,1.14122350541248e-07,9.50952942849424e-08,7.54830412956328e-08,5.82997718157767e-08,4.51801415052325e-08,3.60130060894721e-08,3.09391619617802e-08,3.07944821852152e-08,3.04158957108521e-08,3.53946881456181e-08,5.37103325631762e-08,1.98796353338679e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.15442084138111e-08,5.80759744158421e-08,3.80393433421021e-08,3.28703808891507e-08,3.32387996573454e-08,3.34222569488474e-08,3.89079150803545e-08,4.87983664899531e-08,6.29211360502482e-08,8.1438928487304e-08,1.02532958746775e-07,1.23056935447089e-07,1.40950239343243e-07,1.50063391469164e-07,1.457220553548e-07,1.54728047626318e-07,9.99333963477329e-08,1.32518048274005e-07,0,0,2.5174492434736e-07,2.04884050940198e-07,1.79845643670089e-07,1.5642061438307e-07,1.54458383166745e-07,1.67230864402903e-07,1.96546241686908e-07,2.4401275739072e-07,3.08985139519611e-07,3.88124632899691e-07,4.73752875888751e-07,5.53147573323235e-07,6.11564188374751e-07,6.39916717494145e-07,6.2377406771361e-07,5.79096110476612e-07,5.24582050958723e-07,3.54153763427483e-07,0,0,2.64568056054119e-07,1.00846474112538e-07,7.85968468729986e-08,5.81632201852004e-08,5.42649127875222e-08,6.38832867500172e-08,8.99628047865343e-08,1.3801149326025e-07,2.12606785459015e-07,3.12338181985251e-07,4.26694103381611e-07,5.37169271750625e-07,6.21411529289774e-07,6.61616844008398e-07,6.50249356396907e-07,5.81281650907163e-07,4.99676098774987e-07,4.60563236796192e-07,0,0,2.1641642254876e-07,1.15673093912632e-07,7.82219380075938e-08,5.86003705543498e-08,5.53887275241392e-08,6.63568127337825e-08,9.57356329321921e-08,1.50624318634954e-07,2.37335774972511e-07,3.5505820614024e-07,4.91322451554241e-07,6.23337340028789e-07,7.24495632525365e-07,7.71016540019809e-07,7.55815721734668e-07,6.75978831097846e-07,5.41566244543183e-07,4.46156804456348e-07,0,0,2.23798232403956e-07,9.71299381694155e-08,6.8399592508416e-08,4.77445613424503e-08,4.47774646198259e-08,5.48499387100001e-08,8.26518673125922e-08,1.36187839101651e-07,2.22785496147025e-07,3.42215428014345e-07,4.81887546681092e-07,6.17793286211773e-07,7.22504823195019e-07,7.71978595706803e-07,7.55400575215498e-07,6.79210049360431e-07,5.58329131304051e-07,4.53732160685868e-07,0,0,2.2940901474008e-07,1.13806788879587e-07,8.10903741885684e-08,6.13540937896418e-08,5.82065580166229e-08,6.94074053279998e-08,9.82786724882359e-08,1.51086734740165e-07,2.33104655758762e-07,3.43215916594463e-07,4.70255166560551e-07,5.93269752267693e-07,6.87511013874921e-07,7.32201861101928e-07,7.16307195701808e-07,6.41861682233243e-07,5.28715962960289e-07,4.4713287009029e-07,0,0,2.46104024977287e-07,1.3859936091307e-07,1.09016036247589e-07,8.90998057050183e-08,8.58830824665665e-08,9.71131967894148e-08,1.2477329131594e-07,1.71983866905628e-07,2.40719284326011e-07,3.28674986711842e-07,4.27398961414243e-07,5.22039519669337e-07,5.94362798849995e-07,6.28776533566836e-07,6.18242422095298e-07,5.63695232282538e-07,4.74698015003042e-07,4.1943178454478e-07,0,0,2.72556951932457e-07,1.83382522551578e-07,1.61061119980251e-07,1.44931037103819e-07,1.42095197755116e-07,1.51759545877415e-07,1.74038884268104e-07,2.09216328301206e-07,2.56561673708777e-07,3.13501512026536e-07,3.74892640883476e-07,4.32375382685161e-07,4.7572572609053e-07,4.95955240970817e-07,4.88845269636753e-07,4.55971173783901e-07,4.01716033422946e-07,3.84861178070103e-07,0,0,3.06777551662961e-07,2.44832663634127e-07,2.39177738270071e-07,2.32689902250342e-07,2.3142331166688e-07,2.35338354663582e-07,2.44069425608518e-07,2.57251444073158e-07,2.74208982369277e-07,2.93876183303512e-07,3.14580847213968e-07,3.33660673732567e-07,3.47962489374951e-07,3.54792192885701e-07,3.52810913443194e-07,3.41895801606735e-07,3.20839282639785e-07,3.45857361908999e-07,0,0,3.4560272967666e-07,3.20345915130187e-07,3.41196850304522e-07,3.51975494214858e-07,3.53927918339933e-07,3.47182641933977e-07,3.33060095961839e-07,3.14214386685333e-07,2.93756442761039e-07,2.74317587511602e-07,2.57552209846222e-07,2.44516252828175e-07,2.35880655190552e-07,2.32007935561284e-07,2.33263028406821e-07,2.39680892511654e-07,2.45219968820287e-07,3.07003425511412e-07,0,0,3.84606455846079e-07,4.01182315630644e-07,4.55163905860662e-07,4.87849056569705e-07,4.94922344594188e-07,4.74814723121837e-07,4.31705542036343e-07,3.74513447412629e-07,3.13390486060594e-07,2.56652521428108e-07,2.09434844203548e-07,1.7432426924311e-07,1.52072825324097e-07,1.42416980106516e-07,1.45252599829561e-07,1.61366770252207e-07,1.83645829377765e-07,2.72732882233731e-07,0,0,4.19211846903222e-07,4.74220504962657e-07,5.62959016117011e-07,6.17312682360877e-07,6.2779611091386e-07,5.93498363280293e-07,5.21412895885952e-07,4.27053739112758e-07,3.28578191339694e-07,2.40788304159216e-07,1.72130707563686e-07,1.2493852667593e-07,9.72727093954837e-08,8.60353260696724e-08,8.9254332611725e-08,1.0917677979088e-07,1.38758264654093e-07,2.46228259251504e-07,0,0,4.47002232010957e-07,5.28396668982757e-07,6.41369321382151e-07,7.1570590712774e-07,7.31579395481868e-07,6.86965811589494e-07,5.92880105702054e-07,4.70046279204735e-07,3.43160145977205e-07,2.33143494182199e-07,1.51162423513548e-07,9.83553891705985e-08,6.94746237877831e-08,5.82668637220812e-08,6.14163087688642e-08,8.11573842132297e-08,1.13886632261414e-07,2.29473289057665e-07,0,0,4.53703813495899e-07,5.58271826771264e-07,6.79104767053197e-07,7.55266062581429e-07,7.71836417877076e-07,7.22376701356081e-07,6.17697560860006e-07,4.81834402306369e-07,3.42198673719247e-07,2.22786641798177e-07,1.36193725984871e-07,8.2654808770774e-08,5.48496143604452e-08,4.47758133596272e-08,4.77419334320601e-08,6.84094386472243e-08,9.71120823107927e-08,2.23818900502685e-07,0,0,4.46223015832689e-07,5.41754970501262e-07,6.76239294377322e-07,7.56152678612755e-07,7.71367917714646e-07,7.24798270265558e-07,6.23547889026966e-07,4.91430689672619e-07,3.55099582914761e-07,2.37344177855847e-07,1.50629334333563e-07,9.57473979296242e-08,6.63734730833418e-08,5.54045098353589e-08,5.86085010427143e-08,7.82081205808921e-08,1.15697804189434e-07,2.16362051334095e-07,0,0,4.60785725765372e-07,5.0009055659851e-07,5.82001179794618e-07,6.51217959907991e-07,6.62624627583414e-07,6.22249419664132e-07,5.37730662320662e-07,4.2693268475394e-07,3.12326358239314e-07,2.12449912569086e-07,1.37806564544037e-07,8.97656976065937e-08,6.37088980189684e-08,5.41051620852961e-08,5.80091534249077e-08,7.84229770667073e-08,1.00618799094118e-07,2.64469317999632e-07,0,0,3.54334158424573e-07,5.25194119130379e-07,5.79900676785142e-07,6.24769405641048e-07,6.41016321907959e-07,6.12542018118389e-07,5.53923773385218e-07,4.74249106485992e-07,3.88352009298932e-07,3.08999439865542e-07,2.43888465137435e-07,1.96349738535764e-07,1.67002216659749e-07,1.54222444833327e-07,1.56188673548372e-07,1.7963122280195e-07,2.0471507861688e-07,2.51672100221555e-07,0,0,1.32557840968531e-07,1.0005980761327e-07,1.5485126513921e-07,1.4590852259511e-07,1.50258823486712e-07,1.41108052023672e-07,1.2317317483902e-07,1.02588335245576e-07,8.14420406907398e-08,6.28902579975548e-08,4.87470298495155e-08,3.88510759731205e-08,3.33678649412961e-08,3.31725978001568e-08,3.2829847745969e-08,3.79803654692699e-08,5.80402760793868e-08,2.15391786337779e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.27634013011903e-08,6.09355355997102e-08,3.97522524479202e-08,3.44877047567044e-08,3.47970502583596e-08,3.50732883253843e-08,4.08345966033994e-08,5.12415123959518e-08,6.61190392792328e-08,8.56109039777519e-08,1.07852975284922e-07,1.29476063935185e-07,1.48320169565038e-07,1.57939577898008e-07,1.53349361132623e-07,1.62369968922625e-07,1.05509590572935e-07,1.3841202266954e-07,0,0,2.61578963263862e-07,2.11893295724485e-07,1.86174504634962e-07,1.62073464012007e-07,1.60012965724725e-07,1.73253088924288e-07,2.03689684222486e-07,2.52893469235784e-07,3.20315126517595e-07,4.02509850421489e-07,4.91537571067844e-07,5.74215863416849e-07,6.35041930066864e-07,6.64602206564074e-07,6.47568371007208e-07,6.01215851892089e-07,5.43888365597997e-07,3.67343695004099e-07,0,0,2.74429131285223e-07,1.05437289183604e-07,8.18440898599666e-08,6.0623982126605e-08,5.65732553267324e-08,6.65654019206349e-08,9.36501413099761e-08,1.43553888095728e-07,2.20927067260536e-07,3.24299429514908e-07,4.42685393598949e-07,5.56947630925469e-07,6.44091865974337e-07,6.85622568581674e-07,6.73853722785186e-07,6.031175528775e-07,5.18455544148672e-07,4.77434413320113e-07,0,0,2.2494194334647e-07,1.19977460390988e-07,8.11166478748074e-08,6.08047611262616e-08,5.74602019788143e-08,6.88629523580128e-08,9.93617102415628e-08,1.56328784615215e-07,2.46285811526212e-07,3.68313400334479e-07,5.09438877218743e-07,6.45982702166026e-07,7.50496455067117e-07,7.98552762384221e-07,7.82736363551381e-07,7.00091110884959e-07,5.61445661550801e-07,4.63468651952523e-07,0,0,2.32255542073241e-07,1.00904515503204e-07,7.0972908717568e-08,4.9549364380238e-08,4.64603444369617e-08,5.69100828403342e-08,8.57527471177177e-08,1.41297671044612e-07,2.3109221249526e-07,3.54822731483813e-07,4.99363074111212e-07,6.3983532854072e-07,7.47945405732941e-07,7.98973064086643e-07,7.81949653586326e-07,7.03375540147297e-07,5.78298798965435e-07,4.71205850296046e-07,0,0,2.38094130318232e-07,1.18202915659211e-07,8.41500106229318e-08,6.3715419396692e-08,6.04251811757906e-08,7.2070807335568e-08,1.02045063951054e-07,1.56831610512196e-07,2.4190075200678e-07,3.55998451942709e-07,4.87544131220828e-07,6.14803360273091e-07,7.12220846547412e-07,7.58437919470723e-07,7.41905371377221e-07,6.64985831056431e-07,5.47879453904269e-07,4.64224091848619e-07,0,0,2.55430571366203e-07,1.4394151419323e-07,1.13142270659245e-07,9.25231627774336e-08,8.91837619272842e-08,1.00806549647794e-07,1.29510427536065e-07,1.78465812905513e-07,2.49694908789189e-07,3.4084150324101e-07,4.43105162105551e-07,5.41219042928819e-07,6.16155847465991e-07,6.51808456261541e-07,6.40960720339231e-07,5.84394654739936e-07,4.92131015675702e-07,4.35551437613233e-07,0,0,2.82902377975756e-07,1.90426195236948e-07,1.67244368499274e-07,1.50543477981974e-07,1.47618250232346e-07,1.57646481528557e-07,1.80672334832435e-07,2.17120677856602e-07,2.66145084686605e-07,3.25145036953473e-07,3.888509169123e-07,4.48549133769437e-07,4.93716598441757e-07,5.14728831105723e-07,5.0726664487056e-07,4.73122047343976e-07,4.16684977654553e-07,3.99603246839665e-07,0,0,3.18460593350743e-07,2.54152223872733e-07,2.4832484655833e-07,2.41745987014064e-07,2.40376259070908e-07,2.4441960639667e-07,2.53386106430994e-07,2.66889473847751e-07,2.84411325530823e-07,3.04777609738594e-07,3.26375056048695e-07,3.46335181755753e-07,3.61303962480795e-07,3.68568621348354e-07,3.66443429728954e-07,3.54927624594547e-07,3.33023919257928e-07,3.59072225354055e-07,0,0,3.58775308559551e-07,3.3244912640495e-07,3.54116073598316e-07,3.65472028358336e-07,3.6756437510476e-07,3.60396988635147e-07,3.4563619074681e-07,3.25948408769692e-07,3.04637426882017e-07,2.84536494554684e-07,2.67238223170883e-07,2.5390507392034e-07,2.45050523690997e-07,2.41056154269575e-07,2.42413170198963e-07,2.48909318938594e-07,2.54603389319211e-07,3.18724128089341e-07,0,0,3.99305407092211e-07,4.16065431690878e-07,4.7218600672694e-07,5.06110938670641e-07,5.13532450785422e-07,4.92662357671872e-07,4.47774038908595e-07,3.88412302509419e-07,3.25017515880584e-07,2.66251894264871e-07,2.17376320108667e-07,1.8100578317034e-07,1.58012496172738e-07,1.47993923134178e-07,1.50919150586709e-07,1.67599982391882e-07,1.90734461430863e-07,2.83107302007365e-07,0,0,4.35292599029351e-07,4.91575987398146e-07,5.83544451284468e-07,6.39884686597928e-07,6.50670855081232e-07,6.151512179819e-07,5.40489113641655e-07,4.427002781021e-07,3.40724722328096e-07,2.49771387357594e-07,1.78633667064514e-07,1.29700750758453e-07,1.00990896196416e-07,8.93599707181586e-08,9.27024641352644e-08,1.13328394695951e-07,1.44125047047032e-07,2.55574500793042e-07,0,0,4.64073678449173e-07,5.47506650917737e-07,6.6441389820025e-07,7.41219199382585e-07,7.57731473899577e-07,7.1160215703193e-07,6.14363096441393e-07,4.87312047315279e-07,3.55942514429285e-07,2.41953511207124e-07,1.56925740277649e-07,1.02138877916187e-07,7.21525359829009e-08,6.04978845429574e-08,6.37906910256108e-08,8.42291341791061e-08,1.18302194681248e-07,2.38167042070457e-07,0,0,4.71175831623133e-07,5.78243375272858e-07,7.03245405197491e-07,7.81766492950709e-07,7.98780828746583e-07,7.47769991119008e-07,6.39696504390437e-07,4.99275626625736e-07,3.54780847934706e-07,2.31075458049122e-07,1.41291096742192e-07,8.57465869413194e-08,5.69028499027926e-08,4.64530390103556e-08,4.95410297640624e-08,7.09806985694657e-08,1.00869445159479e-07,2.32287774425785e-07,0,0,4.63528484978191e-07,5.61658791899772e-07,7.00448748518184e-07,7.83196018101412e-07,7.99025022404007e-07,7.50917772163753e-07,6.46296776692521e-07,5.09628334609768e-07,3.6841541447899e-07,2.46337062284684e-07,1.56364568716229e-07,9.93963852949633e-08,6.88975559805343e-08,5.74909780411571e-08,6.08264423809435e-08,8.11113988361867e-08,1.2003968664679e-07,2.24863537721967e-07,0,0,4.77712001722202e-07,5.18852448732796e-07,6.03786188106828e-07,6.74809354977376e-07,6.86613121172627e-07,6.44884269952084e-07,5.57437097787503e-07,4.4282290944508e-07,3.24173325373677e-07,2.20658114345163e-07,1.43250252544098e-07,9.33715518691961e-08,6.6323431463921e-08,5.63533666021094e-08,6.04121635368119e-08,8.16061209290239e-08,1.05107536939977e-07,2.74299647419349e-07,0,0,3.6768471030453e-07,5.4483758948034e-07,6.02452399227341e-07,6.49026391038776e-07,6.66213255759382e-07,6.36499113057203e-07,5.75411293459426e-07,4.92365624409798e-07,4.02975728300165e-07,3.20487983397693e-07,2.52868784648842e-07,2.03555419788086e-07,1.73065752181431e-07,1.59808689425408e-07,1.61871533593316e-07,1.86008646732247e-07,2.11787205016724e-07,2.61660850469378e-07,0,0,1.38613691580816e-07,1.05832124442803e-07,1.62720857873255e-07,1.53789880901966e-07,1.58387359808754e-07,1.48714885277776e-07,1.29796788257313e-07,1.08073243202739e-07,8.57400805042172e-08,6.61817173696248e-08,5.12596023667383e-08,4.08315071716613e-08,3.50645348997268e-08,3.4773243547132e-08,3.44925776395831e-08,3.97470934983462e-08,6.09735622739637e-08,2.28164526219489e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.37021744982685e-08,6.27329985305404e-08,4.08153575804787e-08,3.55047005202928e-08,3.57792219736486e-08,3.6111120571793e-08,4.20946440883884e-08,5.28805152058769e-08,6.83028351311897e-08,8.8541583177826e-08,1.1163647605009e-07,1.34149740952804e-07,1.53694159295705e-07,1.63651736870175e-07,1.58929548788859e-07,1.67714929975682e-07,1.09668889535698e-07,1.41951990860809e-07,0,0,2.66168550638531e-07,2.14597452217352e-07,1.88847321017315e-07,1.64479262254832e-07,1.62391675988505e-07,1.75853993003062e-07,2.06732091651992e-07,2.56681963771262e-07,3.25115100543821e-07,4.08577310172872e-07,4.99031043677639e-07,5.83049582367791e-07,6.45005440500747e-07,6.75052086741367e-07,6.5753544429955e-07,6.10510076693534e-07,5.51835458617808e-07,3.73313839455308e-07,0,0,2.78767724334923e-07,1.07823448348507e-07,8.34178949507675e-08,6.18511002446324e-08,5.77032989175347e-08,6.78779531958679e-08,9.54274137383207e-08,1.46136787231734e-07,2.24711959074348e-07,3.29574034092051e-07,4.49578570800585e-07,5.65272042789576e-07,6.53462096192947e-07,6.95541299072436e-07,6.83625348621241e-07,6.12513068360845e-07,5.26389590110961e-07,4.84826759312142e-07,0,0,2.29093587709232e-07,1.21855478505606e-07,8.23629744721129e-08,6.17740949998834e-08,5.83774746373005e-08,6.99722659174517e-08,1.00981507188517e-07,1.58888511403993e-07,2.50287967064828e-07,3.74193618668093e-07,5.17348162330347e-07,6.55737009771429e-07,7.61530266145126e-07,8.10078684631209e-07,7.9400502601551e-07,7.10250146532937e-07,5.69681402265045e-07,4.71506055490349e-07,0,0,2.36087435847368e-07,1.0254956601943e-07,7.20969563119912e-08,5.03266703469532e-08,4.71792553762984e-08,5.77887280596464e-08,8.70797728871294e-08,1.43475491340665e-07,2.34609715398103e-07,3.60090219357211e-07,5.06522856694953e-07,6.48668066169262e-07,7.57958411298944e-07,8.09537447774458e-07,7.92379042886899e-07,7.13170486419028e-07,5.86397823887581e-07,4.7926956575674e-07,0,0,2.42088753479762e-07,1.20155096081011e-07,8.54967423603012e-08,6.47652629102202e-08,6.14239197289249e-08,7.3261941385861e-08,1.0372434319955e-07,1.5939718527891e-07,2.45772147487467e-07,3.61556205791945e-07,4.94936733390316e-07,6.23889147533102e-07,7.22547321575788e-07,7.69286344306257e-07,7.52476492458795e-07,6.74633400467959e-07,5.55673695962454e-07,4.72073874522608e-07,0,0,2.59699635394015e-07,1.46265447942895e-07,1.14989299924317e-07,9.40484747746438e-08,9.06422491154103e-08,1.0246016078399e-07,1.31584795257977e-07,1.81267502699051e-07,2.5355133540507e-07,3.46004285595274e-07,4.49771254219606e-07,5.49315448434236e-07,6.25406657892331e-07,6.61654095467726e-07,6.50582860826945e-07,5.93297526298151e-07,4.99438145971776e-07,4.4296910628633e-07,0,0,2.87667896574117e-07,1.93525158375254e-07,1.70009074235355e-07,1.53131684105197e-07,1.50146530449264e-07,1.60298295878828e-07,1.83662227804124e-07,2.20578854388058e-07,2.70280017262558e-07,3.30143094904074e-07,3.94877695849694e-07,4.55676524004033e-07,5.0165310148069e-07,5.23108969986927e-07,5.15483635690578e-07,4.80649647770541e-07,4.23077765743452e-07,4.06416919342958e-07,0,0,3.23809031877448e-07,2.58237300325502e-07,2.52459564563519e-07,2.45843748248201e-07,2.4452137057215e-07,2.48536485015186e-07,2.57504288138844e-07,2.71104583653852e-07,2.88770495231746e-07,3.0945493382581e-07,3.31484342412575e-07,3.51967458624067e-07,3.67407702416386e-07,3.74844903860671e-07,3.72680510048819e-07,3.60859539723876e-07,3.38290024521432e-07,3.65180138564028e-07,0,0,3.64839804402186e-07,3.37631501221614e-07,3.59932933854211e-07,3.71571206098909e-07,3.73698344036034e-07,3.66371149917772e-07,3.5116814209499e-07,3.30995519869232e-07,3.09293567862135e-07,2.8891266140924e-07,2.71502712632593e-07,2.58097136381759e-07,2.49257212570643e-07,2.45298179162959e-07,2.46606604711181e-07,2.53126585531088e-07,2.58754142288561e-07,3.24110860507833e-07,0,0,4.06074785223922e-07,4.2236981038565e-07,4.79581901041383e-07,5.14165061493689e-07,5.21746425977062e-07,5.00452424528216e-07,4.54793404570029e-07,3.9437799400879e-07,3.29998362982015e-07,2.70403492953612e-07,2.20872727759212e-07,1.840451725418e-07,1.6071839513177e-07,1.50576939565681e-07,1.53562761432673e-07,1.70415792359197e-07,1.9387945050504e-07,2.87902728644298e-07,0,0,4.42670425014557e-07,4.9880323165425e-07,5.92330408008855e-07,6.49357068279029e-07,6.60356033216325e-07,6.24259310745431e-07,5.48479663123318e-07,4.49305099295505e-07,3.45866879611013e-07,2.53635301805174e-07,1.81456887791104e-07,1.3180060088805e-07,1.02669946176824e-07,9.08430037915524e-08,9.42529726022003e-08,1.15201418816136e-07,1.46474318225671e-07,2.5986287786418e-07,0,0,4.71902086471792e-07,5.55245898197236e-07,6.73979341114547e-07,7.51701625155621e-07,7.6849160161692e-07,7.21851501432841e-07,6.23395871668962e-07,4.94680056603495e-07,3.61499894810782e-07,2.45839203216957e-07,1.5951039130318e-07,1.03835893322845e-07,7.33586046595473e-08,6.15094417161303e-08,6.48541000876019e-08,8.55883392212226e-08,1.20274045530607e-07,2.42171836976966e-07,0,0,4.79239002306095e-07,5.86343678023745e-07,7.13015997912213e-07,7.92147730403326e-07,8.09295161826347e-07,7.57735584692195e-07,6.48486227842431e-07,5.06401392620722e-07,3.6002358683288e-07,2.34575497042598e-07,1.43456795780866e-07,8.7064805711863e-08,5.77748623813507e-08,4.71665104256988e-08,5.03128500086645e-08,7.21027794742827e-08,1.02498663660568e-07,2.36127497116464e-07,0,0,4.71560093084446e-07,5.69918266274881e-07,7.10705245331587e-07,7.94588698881059e-07,8.1067359461292e-07,7.62071850803558e-07,6.56155606121083e-07,5.17618654766969e-07,3.74355048287327e-07,2.50380374494297e-07,1.58953277560393e-07,1.01037496357248e-07,7.00233445100371e-08,5.84219383122541e-08,6.18082114527536e-08,8.23648898927871e-08,1.21952754400067e-07,2.28996961270522e-07,0,0,4.85159846691106e-07,5.26779979196086e-07,6.13148829963252e-07,6.84583901457482e-07,6.9653127598768e-07,6.5422733013612e-07,5.65707255404557e-07,4.49631809936331e-07,3.29347614401967e-07,2.2434125281373e-07,1.45741335738229e-07,9.50714746849951e-08,6.75711709188271e-08,5.74252603196645e-08,6.15833702158272e-08,8.31189359282593e-08,1.07397580398627e-07,2.78595973229109e-07,0,0,3.73818221746283e-07,5.53086695713802e-07,6.12147490980676e-07,6.59425645217745e-07,6.77139563943652e-07,6.46906491672739e-07,5.84628400590884e-07,5.00157086658709e-07,4.09252725571689e-07,3.25423512491449e-07,2.56740129747096e-07,2.06647760516056e-07,1.75698671406279e-07,1.62211366734825e-07,1.64298560944315e-07,1.88720855749103e-07,2.14546511299665e-07,2.66408104303552e-07,0,0,1.4235381458387e-07,1.10242600141948e-07,1.68354287915384e-07,1.59687197428247e-07,1.6441786372188e-07,1.54389321243141e-07,1.34732738181194e-07,1.1207099843326e-07,8.88371542171808e-08,6.84907874937108e-08,5.2992745618826e-08,4.21649584066886e-08,3.61640427533715e-08,3.58134632339483e-08,3.55701398516113e-08,4.08795467677036e-08,6.28649029637408e-08,2.38293798954104e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.44328285666722e-08,6.36535086355952e-08,4.13774907011356e-08,3.60144450230514e-08,3.62407650850698e-08,3.66517441165687e-08,4.27729227454865e-08,5.38055959464722e-08,6.96182101254065e-08,9.03791729039892e-08,1.14128507454834e-07,1.37284062972442e-07,1.57352398947018e-07,1.67607554328214e-07,1.62672278078316e-07,1.71152557636533e-07,1.12526327446334e-07,1.43477823701247e-07,0,0,2.66768502653593e-07,2.14483775436534e-07,1.89086169867772e-07,1.64783974368881e-07,1.62695867214471e-07,1.76159320493831e-07,2.07071015266864e-07,2.57022606136903e-07,3.25448066550643e-07,4.08870116710075e-07,4.99235313890473e-07,5.83175093190998e-07,6.45010012731737e-07,6.74979056389848e-07,6.57544786222471e-07,6.10423773439269e-07,5.5202336508353e-07,3.74124176318969e-07,0,0,2.79466037468283e-07,1.0870906950903e-07,8.3920607097514e-08,6.22329991122301e-08,5.80702753449186e-08,6.82974652339284e-08,9.59666525418548e-08,1.46877563638686e-07,2.25682876566118e-07,3.30763594485296e-07,4.50891737567085e-07,5.66604928828165e-07,6.5484435159542e-07,6.9683557220034e-07,6.85009418087576e-07,6.14251611101991e-07,5.27628938550665e-07,4.86025830849278e-07,0,0,2.30384033669481e-07,1.2228191982266e-07,8.25941823798324e-08,6.19903883041433e-08,5.85775998755407e-08,7.02272699393596e-08,1.01363002873862e-07,1.59494817917481e-07,2.51221332646513e-07,3.7549885338642e-07,5.18978206797613e-07,6.57532115457922e-07,7.63360876722961e-07,8.11832368959346e-07,7.95667517207909e-07,7.11842424433606e-07,5.70782519014422e-07,4.73095970008964e-07,0,0,2.36886569700539e-07,1.02836737828084e-07,7.23030517046022e-08,5.04442838621305e-08,4.72868331342747e-08,5.79175309046574e-08,8.727627032375e-08,1.4380437362241e-07,2.35117993111891e-07,3.60764168732141e-07,5.07272644540314e-07,6.49360057605266e-07,7.5854236680373e-07,8.10063713269586e-07,7.92948304845688e-07,7.1414508133898e-07,5.87377248709016e-07,4.80843353733342e-07,0,0,2.43083116206201e-07,1.20575861869286e-07,8.57665367098439e-08,6.50067805274319e-08,6.16442758894486e-08,7.35366586866392e-08,1.04109085113161e-07,1.59957598632185e-07,2.46580215648345e-07,3.62628837414864e-07,4.9624509946845e-07,6.25335420455989e-07,7.2402417952926e-07,7.7079015705162e-07,7.53855493063866e-07,6.759138665839e-07,5.56596439590156e-07,4.73598906387959e-07,0,0,2.60664866694268e-07,1.46727172759249e-07,1.15378814690274e-07,9.43818497127423e-08,9.09684491275814e-08,1.02798694496258e-07,1.31990408336721e-07,1.81768435849178e-07,2.5417632482996e-07,3.46808660622501e-07,4.50793922135646e-07,5.50606009413962e-07,6.26895627203031e-07,6.63248339467929e-07,6.52201125604803e-07,5.94866676248867e-07,5.00529876091133e-07,4.44489732521791e-07,0,0,2.88775660245404e-07,1.9416764143751e-07,1.70672759953793e-07,1.53777944114965e-07,1.50799444797797e-07,1.60966991863388e-07,1.84325721818619e-07,2.21266687416018e-07,2.71009833035982e-07,3.31002545633484e-07,3.95991052728113e-07,4.57107003426107e-07,5.03408614200562e-07,5.2499270916754e-07,5.1724429138435e-07,4.82252829484931e-07,4.24194529855693e-07,4.07863323378937e-07,0,0,3.25007767868258e-07,2.59044765593555e-07,2.53442179955326e-07,2.46900534034091e-07,2.45569817120276e-07,2.49545389482394e-07,2.58417148126838e-07,2.71880609924362e-07,2.89486947375063e-07,3.10220732620082e-07,3.32458708458268e-07,3.53216086015761e-07,3.68891015926315e-07,3.76503092870123e-07,3.74275856314087e-07,3.62269537609711e-07,3.3934749135511e-07,3.66535654876559e-07,0,0,3.66153517878534e-07,3.38609056859504e-07,3.61232440998802e-07,3.73032959708663e-07,3.75219131390608e-07,3.67729827177096e-07,3.52320663028844e-07,3.3191103124363e-07,3.10039332724349e-07,2.89645086971978e-07,2.72325433910815e-07,2.59080406396519e-07,2.50352665323959e-07,2.46439955249562e-07,2.47755683329982e-07,2.54188752387385e-07,2.59624292272074e-07,3.25346094373211e-07,0,0,4.07479262647882e-07,4.23402195030392e-07,4.8105897742041e-07,5.15769183708401e-07,5.23469841005575e-07,5.02067372605266e-07,4.56120772187107e-07,3.95433291810859e-07,3.30841737298053e-07,2.71149230612812e-07,2.2159723879286e-07,1.84756141692805e-07,1.61439152700611e-07,1.51282797248447e-07,1.54262384536449e-07,1.71128532833959e-07,1.94566131027849e-07,2.89039778631293e-07,0,0,4.44153519373528e-07,4.99819610332754e-07,5.9378794413995e-07,6.50832786445334e-07,6.61797720819653e-07,6.25612518664736e-07,5.49670227444705e-07,4.50270148352816e-07,3.46651836024921e-07,2.54267234027958e-07,1.81977962314559e-07,1.32230331576328e-07,1.03032506805151e-07,9.11924517593398e-08,9.46103076671674e-08,1.1561555329507e-07,1.46960241195496e-07,2.60845665105984e-07,0,0,4.73406465260759e-07,5.56117038857838e-07,6.75181756833411e-07,7.52995345400122e-07,7.69910576279521e-07,7.23254245735226e-07,6.24791212072595e-07,4.95965012488288e-07,3.62572275346344e-07,2.4666106267006e-07,1.6008904552688e-07,1.0423749714475e-07,7.36475470586995e-08,6.17418792815706e-08,6.5108475278565e-08,8.58699200242127e-08,1.20713206645629e-07,2.43178211832444e-07,0,0,4.80813457837672e-07,5.87324527521506e-07,7.13968357088051e-07,7.9267296743862e-07,8.09775637864547e-07,7.58276326277071e-07,6.49139598037633e-07,5.07121393583811e-07,3.60676509249993e-07,2.35069464516507e-07,1.43776135145628e-07,8.72545462185376e-08,5.78986881971908e-08,4.72700783013327e-08,5.04262695822198e-08,7.23077283816761e-08,1.02773721293308e-07,2.36928657122066e-07,0,0,4.73144877002172e-07,5.71040577182321e-07,7.12392740934949e-07,7.96373117610471e-07,8.125486004552e-07,7.64020839731043e-07,6.58050774301565e-07,5.19323748083973e-07,3.75713122886998e-07,2.51348516887413e-07,1.59582875793892e-07,1.01435354261264e-07,7.02905464893224e-08,5.86319369277772e-08,6.20334940148603e-08,8.25997759088591e-08,1.22408428963796e-07,2.3027694875681e-07,0,0,4.86411753199157e-07,5.28030094283822e-07,6.14889994689757e-07,6.8600028816377e-07,6.97856726171347e-07,6.55620187787643e-07,5.67026488044252e-07,4.50901236796682e-07,3.3047393217289e-07,2.25242068851408e-07,1.46415820547278e-07,9.5553534069697e-08,6.79417543635111e-08,5.77476008010883e-08,6.19221602960167e-08,8.35757127221095e-08,1.082079743167e-07,2.79239451210528e-07,0,0,3.74778920052897e-07,5.53470522647769e-07,6.12338926433549e-07,6.59744402195302e-07,6.77404684896094e-07,6.47217876479036e-07,5.85011489656595e-07,5.00553637436945e-07,4.09674092534716e-07,3.25834774537499e-07,2.57124804982387e-07,2.07010568232562e-07,1.76017450357535e-07,1.62524122076923e-07,1.64608839135345e-07,1.88978522879872e-07,2.144694711981e-07,2.67156406766669e-07,0,0,1.44112210879726e-07,1.13424385173353e-07,1.72153098607659e-07,1.63822717241167e-07,1.68773184551688e-07,1.58426759384109e-07,1.38199786738596e-07,1.14837191357448e-07,9.08888579363895e-08,6.99678280668458e-08,5.40394208072836e-08,4.29374858456345e-08,3.67829323017901e-08,3.63489868573119e-08,3.61560430307041e-08,4.15244428105244e-08,6.38955865311904e-08,2.4649996376146e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive1102_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5.11076296498297e-09,2.93956417932057e-09,-4.47738948103525e-10,-1.17330435391414e-10,1.53661546933433e-10,5.39572603838214e-11,2.18489552930572e-10,3.49098371176862e-10,4.7521120572168e-10,6.18969838817554e-10,6.50653711701077e-10,7.25601189357183e-10,2.22922005429448e-10,-2.14650694519972e-10,1.60696086177122e-09,-6.52337854362879e-09,7.56510871729096e-09,-1.50755350373465e-09,0,0,-1.65925634635057e-08,-3.01241997828558e-09,4.77987495361852e-10,-2.4283962768516e-10,9.30434136305323e-11,2.65238073237557e-10,3.76762004044404e-10,7.86607294169321e-10,1.37049323265426e-09,2.01128323049914e-09,2.48027997057818e-09,2.4053192977549e-09,2.09967803095874e-09,-1.11970986552817e-09,8.35466886443447e-10,-3.112108010107e-09,-9.88387132222336e-09,3.13239304446567e-09,0,0,1.18046219886527e-08,-6.87749790354967e-10,-1.99477290206934e-10,5.07265220477593e-11,-9.14190570213635e-11,-3.22835619124492e-11,6.47667069542228e-11,2.28512475889754e-10,6.49888862088432e-10,1.19072336028224e-09,1.55049364594107e-09,1.41424264578858e-09,1.52512538328409e-09,1.79216664822637e-10,-1.06790064153023e-09,8.30144672474323e-10,1.11125376177578e-09,-7.50900400794733e-09,0,0,-5.44714955368658e-09,1.05095420604183e-09,-1.38985772861115e-10,2.70641769199459e-11,3.84335984614897e-11,-3.22730556396659e-12,8.90524936229995e-12,9.48869669152606e-11,1.87174788810984e-10,4.88214693453018e-10,8.85000378294131e-10,7.15540319259547e-10,5.19472049641334e-10,2.69698420064393e-10,-8.34033268572832e-10,-2.5366980704364e-09,5.59873691293272e-10,2.19458699612491e-10,0,0,8.83410513505183e-10,-4.87938592070412e-10,1.47761018561186e-10,-4.74513906882206e-11,-3.63852862365173e-12,7.06842457992978e-12,-1.78930747822003e-11,-1.21388255882521e-11,9.64334245643308e-12,-1.83582117865041e-10,-1.77531626091415e-10,-9.60419604624904e-11,-2.05386370890302e-10,-3.91799866582651e-11,6.73672800144226e-10,2.1486824331289e-10,-2.50418050494071e-10,8.5932502832908e-10,0,0,6.6596380884054e-10,-2.23602143868273e-11,2.95303715582784e-11,-9.9489362869204e-12,8.70820299043338e-12,6.40168241931008e-12,-3.54904044506625e-12,-2.00613764545106e-10,-4.97547469587056e-10,-8.95897912932638e-10,-1.42874081099433e-09,-1.44105699270054e-09,-9.76530795093026e-10,-4.13076676465701e-10,4.57247301912107e-10,1.33065025646895e-09,1.04412123905295e-09,1.13542055154549e-09,0,0,1.17220318380162e-09,-1.44429574414242e-10,2.03910404048723e-10,-4.18413093048787e-11,1.26382690084036e-11,-3.57193050991499e-11,-1.24649471053876e-10,-3.34077730532458e-10,-8.52703360573912e-10,-1.388061344803e-09,-1.75093529096477e-09,-1.86039048829471e-09,-1.25354132138976e-09,-2.08241753736746e-10,7.68568285922358e-10,1.77745027531701e-09,1.31266461950326e-09,2.50381700762318e-09,0,0,1.7183536487686e-09,-2.91333363423922e-11,3.88539459401963e-10,2.26075754408868e-11,-1.27800897908279e-11,-1.23353950252586e-10,-3.48196547959302e-10,-7.06488793129834e-10,-1.16867913774143e-09,-1.71138886159358e-09,-1.95440363012618e-09,-1.77824228573851e-09,-1.24577962130597e-09,-2.72654150836791e-10,6.54199205773419e-10,1.80451294448003e-09,1.08641156340642e-09,2.81307131499635e-09,0,0,2.39842606214051e-09,2.67451890340416e-10,8.1269858920301e-10,1.57248995379794e-10,-6.57413828578865e-11,-4.18571940506216e-10,-7.53601553744542e-10,-1.15197937727345e-09,-1.51331118562357e-09,-1.66969878508997e-09,-1.62296711624065e-09,-1.31857990719186e-09,-7.99793120887384e-10,-1.48361844146572e-10,4.09617966170305e-10,1.35243004829876e-09,7.14746764364486e-10,2.69018850802223e-09,0,0,2.68858319866994e-09,7.13991427825878e-10,1.34987777269824e-09,4.08889972190717e-10,-1.47865449659791e-10,-7.98266810794473e-10,-1.31664229505398e-09,-1.62162111473533e-09,-1.66921864008718e-09,-1.51370473289415e-09,-1.15309079067358e-09,-7.54654466306795e-10,-4.19247938992805e-10,-6.5795105179671e-11,1.57615358019101e-10,8.14000272496948e-10,2.68302435626291e-10,2.39937239433885e-09,0,0,2.81169038468946e-09,1.08617880465885e-09,1.80255360812279e-09,6.52724146897475e-10,-2.72264310632235e-10,-1.24400677652893e-09,-1.77651578477182e-09,-1.95307917270966e-09,-1.71154621415215e-09,-1.16953533958676e-09,-7.07433363213766e-10,-3.49197572065936e-10,-1.2390334626726e-10,-1.29174981139537e-11,2.26548463137054e-11,3.89143051916372e-10,-2.9007866693079e-11,1.71914681919439e-09,0,0,2.50274776989692e-09,1.31163841096125e-09,1.77749530230261e-09,7.6842226690187e-10,-2.09281965725754e-10,-1.25208634345205e-09,-1.85822691733403e-09,-1.74881402305495e-09,-1.38557222195805e-09,-8.51027500892558e-10,-3.3267582480382e-10,-1.23501333918979e-10,-3.51873858855701e-11,1.28769746028466e-11,-4.18168931827396e-11,2.03767122503447e-10,-1.44568306778312e-10,1.17258361598287e-09,0,0,1.1365433835201e-09,1.04403418651322e-09,1.32968793754281e-09,4.62745714560372e-10,-4.11204698866588e-10,-9.80377080000723e-10,-1.44621869144476e-09,-1.43575615394222e-09,-9.02998885548594e-10,-5.02732528699544e-10,-2.04510008915025e-10,-5.7698983371684e-12,5.37007606217558e-12,8.29214824595216e-12,-1.01471798697491e-11,3.05384325226409e-11,-2.31297740141577e-11,6.70211879286656e-10,0,0,8.61197246484386e-10,-2.41266059854146e-10,2.07412561975838e-10,6.60773616343217e-10,-3.91519381261631e-11,-1.98767820952082e-10,-8.59222367109724e-11,-1.63198232172254e-10,-1.70379348907156e-10,2.01282470032955e-11,-4.79718347968084e-12,-1.39733534710062e-11,8.96591352624954e-12,-2.97662332297697e-12,-4.74504589592976e-11,1.44873948031687e-10,-4.83759091245422e-10,8.61305588117318e-10,0,0,2.11587287041688e-10,5.61821441679897e-10,-2.50139954353848e-09,-8.1395761908127e-10,2.65087659243752e-10,5.07978529068247e-10,6.92553954488387e-10,8.58211100384402e-10,4.65289990503946e-10,1.69594147939765e-10,8.35687478080016e-11,2.66223668027309e-12,-6.43175076484299e-12,3.71590426525333e-11,2.74729627103873e-11,-1.33616142253551e-10,1.03861057551328e-09,-5.39622752988697e-09,0,0,-7.5064942816098e-09,1.09127324496097e-09,7.89588958189739e-10,-1.07185106605718e-09,1.82627818488004e-10,1.53781482861141e-09,1.43892029463582e-09,1.57700459801632e-09,1.21411453064889e-09,6.68276223231272e-10,2.40655080260312e-10,7.20115518846636e-11,-2.90568577560972e-11,-9.12933029592349e-11,4.68823364236734e-11,-2.02880323155659e-10,-6.81071771695379e-10,1.17402388114793e-08,0,0,3.14895959952089e-09,-9.84228752455754e-09,-3.09249736597073e-09,8.34155944136226e-10,-1.12045764702953e-09,2.09069684516344e-09,2.38834929341828e-09,2.46553972320808e-09,1.9990430414434e-09,1.36271066205649e-09,7.82802886052464e-10,3.7539167404364e-10,2.64934265405793e-10,9.26116998425338e-11,-2.39839581522575e-10,4.73242288879061e-10,-3.01189628589105e-09,-1.65593944913676e-08,0,0,-1.51193437340744e-09,7.54300787249479e-09,-6.51533610178744e-09,1.61438770544224e-09,-2.22595719640071e-10,2.22442790524603e-10,7.21284187461746e-10,6.46719099601115e-10,6.15671259884082e-10,4.72106509101352e-10,3.46626554331457e-10,2.16719077859582e-10,5.34559328191357e-11,1.53641634549658e-10,-1.16033122364525e-10,-4.4381761062928e-10,2.92759337180981e-09,5.10041963671381e-09,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9.27232791793747e-09,5.34831763885907e-09,-7.75920090656932e-10,-2.10463893493597e-10,2.63895352906883e-10,1.1722870338696e-10,4.07372202972187e-10,6.47385834801674e-10,9.11212101366857e-10,1.14893239373489e-09,1.20893150969542e-09,1.36350189239749e-09,4.11264714220195e-10,-3.41902650773231e-10,2.74757057088989e-09,-1.16397197346602e-08,1.3544366013873e-08,-2.45915157747045e-09,0,0,-2.92566762804543e-08,-5.98947052205857e-09,9.54631043577215e-10,-4.75637178013249e-10,1.91186660336385e-10,4.70850996092687e-10,7.32988244520124e-10,1.45663403284081e-09,2.51003852916036e-09,3.84061217870688e-09,4.63019793079378e-09,4.48504410782067e-09,3.90135602487685e-09,-1.85853200089784e-09,1.23427749004297e-09,-5.7386838476035e-09,-1.83518588919317e-08,6.28905805025915e-09,0,0,2.18371993610191e-08,-1.34419069595319e-09,-3.3910899272304e-10,8.83504830170281e-11,-1.70558314393394e-10,-5.35978380411393e-11,9.72042470369268e-11,5.00956567308632e-10,1.23970536410776e-09,2.18915532369037e-09,3.05768975994911e-09,2.71027764716696e-09,2.77245091889884e-09,4.09852436718621e-10,-1.97726993385536e-09,1.61378003157205e-09,1.25868530804507e-09,-1.27077029313213e-08,0,0,-9.60107548804897e-09,1.85727681940921e-09,-2.72945387423096e-10,6.26473905281849e-11,6.24356663589676e-11,9.26587492467613e-12,1.33289654864524e-11,1.07452712259771e-10,4.32170462315801e-10,9.0172387457376e-10,1.5249086254753e-09,1.47335456342039e-09,9.66700793848168e-10,4.81364162100533e-10,-1.69393653711328e-09,-4.34306635116294e-09,5.30350686092268e-10,6.06738999841462e-10,0,0,1.52630900672391e-09,-8.16119416754343e-10,2.51473216388382e-10,-8.31079575295154e-11,-9.03426040402217e-12,-3.34988823253568e-12,2.79290920186365e-12,-1.1870024617925e-11,-7.10306806811733e-11,-2.14352907991636e-10,-3.25598909046334e-10,-2.8836094035577e-10,-3.0007304606104e-10,-4.17163660759231e-11,1.17651079523368e-09,4.48715419819893e-10,-4.67274538218311e-10,1.54764873528131e-09,0,0,9.55385349537384e-10,9.96681006136725e-11,-1.70801887707075e-11,1.55530819358895e-11,8.39648212552213e-12,2.15716792367396e-11,-5.13371432937968e-11,-3.22001874060418e-10,-9.30869293861729e-10,-1.81142241233074e-09,-2.58568163318705e-09,-2.72294983274202e-09,-1.92633235740776e-09,-7.30007978747222e-10,8.47422775011941e-10,2.54028196595484e-09,2.11434835413992e-09,1.54038837239138e-09,0,0,1.55850259007897e-09,8.32890425961953e-11,2.35467944370784e-10,-3.2404231414346e-11,7.88843464526927e-13,-4.56537468657634e-11,-2.24533363162481e-10,-6.90230250849152e-10,-1.54086110332485e-09,-2.59886603861189e-09,-3.39934574888804e-09,-3.431545374915e-09,-2.36633250855931e-09,-4.06148692843128e-10,1.46904798902933e-09,3.16286377328934e-09,3.07755244020598e-09,3.6367131969426e-09,0,0,2.28436291818014e-09,3.99447431577537e-10,5.66012995212563e-10,1.00275090958786e-10,-4.01180071370129e-11,-2.4691920625463e-10,-6.35298630911426e-10,-1.31283275501211e-09,-2.26694841760996e-09,-3.18620914169738e-09,-3.66775387346807e-09,-3.40333993916081e-09,-2.32044470131129e-09,-5.36832308085952e-10,1.33881612372437e-09,3.11416679102998e-09,2.70146104118364e-09,4.09395673249527e-09,0,0,3.3638942460341e-09,1.10999325342576e-09,1.27721120058349e-09,3.79767584951365e-10,-1.45958191899119e-10,-7.69101141724327e-10,-1.44267727325847e-09,-2.16477241048852e-09,-2.83202647517491e-09,-3.18194087376486e-09,-3.05558686768611e-09,-2.46880326739407e-09,-1.50791398835326e-09,-3.08719946476812e-10,8.53699472495504e-10,2.29479319697221e-09,2.03418624809571e-09,3.75102775111665e-09,0,0,3.74874458892577e-09,2.03168945545433e-09,2.29010743786093e-09,8.52092104650215e-10,-3.07716671291227e-10,-1.50474194941972e-09,-2.464865609559e-09,-3.0525980921845e-09,-3.18101229077392e-09,-2.83302564179288e-09,-2.16694709857234e-09,-1.44500505726976e-09,-7.70626736293329e-10,-1.46107209285816e-10,3.80708953673865e-10,1.27975171810952e-09,1.11215874638664e-09,3.3654510346656e-09,0,0,4.0921777573977e-09,2.70043711716193e-09,3.11033830038775e-09,1.33603740328174e-09,-5.36180818493868e-10,-2.31706858709026e-09,-3.39991038155252e-09,-3.66577245973121e-09,-3.18645222924621e-09,-2.26882740540941e-09,-1.31519104626249e-09,-6.37179802611794e-10,-2.48066242728649e-10,-4.04625333365783e-11,1.00459200852518e-10,5.67092953977408e-10,4.00506472996416e-10,2.28532143992051e-09,0,0,3.63575769037415e-09,3.07603712906479e-09,3.16343566061979e-09,1.46868312511553e-09,-4.07471943348348e-10,-2.36405848475244e-09,-3.42748984888936e-09,-3.39523912014488e-09,-2.59501835372749e-09,-1.53747312842717e-09,-6.8757947586862e-10,-2.22670680970186e-10,-4.45327761702592e-11,1.220480324105e-12,-3.22842196337034e-11,2.35125933330025e-10,8.29927312053116e-11,1.55970358879088e-09,0,0,1.54284696315808e-09,2.11500586756864e-09,2.54031966098735e-09,8.57154079645345e-10,-7.27453954201659e-10,-1.93388069738677e-09,-2.73480708452953e-09,-2.59978747513909e-09,-1.82530427737255e-09,-9.41804304954168e-10,-3.29278609079046e-10,-5.55429478910895e-11,1.94544392718088e-11,7.61979814911475e-12,1.5243435171212e-11,-1.53434133070138e-11,9.9221495140765e-11,9.61581930204805e-10,0,0,1.55176667633295e-09,-4.51525224373231e-10,4.37257649317861e-10,1.15598440195788e-09,-4.23693734960707e-11,-2.88546548962338e-10,-2.69474376643815e-10,-3.00330146149151e-10,-1.89319982643588e-10,-5.09185693115624e-11,1.63866832633553e-12,1.04672891737666e-11,3.32126364456115e-13,-7.79476273591864e-12,-8.32556865681162e-11,2.46626462482764e-10,-8.11265809565234e-10,1.49424977352504e-09,0,0,5.97791882157393e-10,5.36589603765773e-10,-4.2818965396273e-09,-1.65766130108575e-09,4.7436561925998e-10,9.42578539273689e-10,1.4285653911622e-09,1.47347928352182e-09,8.56513565435838e-10,3.98629727319812e-10,8.59783509957891e-11,1.07813533046389e-12,3.19044152831232e-12,6.00527596528653e-11,6.35127643040361e-11,-2.63568810109802e-10,1.84033518613498e-09,-9.52733115610321e-09,0,0,-1.27070104210553e-08,1.22686026698863e-09,1.54636240209603e-09,-1.98728566820168e-09,4.16034072838982e-10,2.79719464185681e-09,2.75580613040208e-09,3.10756903727128e-09,2.23350631954653e-09,1.27381533886646e-09,5.24169179480007e-10,1.11200774275273e-10,-4.75053609904522e-11,-1.7036171341403e-10,8.12245821243952e-11,-3.45747654092531e-10,-1.33672354882727e-09,2.17431250780165e-08,0,0,6.31576736659971e-09,-1.828455679741e-08,-5.70447845747854e-09,1.23648400042857e-09,-1.86109646132331e-09,3.88238082610926e-09,4.45297099924852e-09,4.60092405874687e-09,3.81705912387959e-09,2.49528272411982e-09,1.44870500876162e-09,7.30060501067727e-10,4.70173171716831e-10,1.90273505358648e-10,-4.70148368088164e-10,9.47887314238554e-10,-5.9881189370124e-09,-2.92086068671476e-08,0,0,-2.46682650834718e-09,1.35101317707009e-08,-1.16246081364499e-08,2.75727241071425e-09,-3.53854365086344e-10,4.10764244908364e-10,1.35685408938541e-09,1.20332573702399e-09,1.14390747518076e-09,9.06346137148963e-10,6.43580439933522e-10,4.04456832122673e-10,1.16556965469723e-10,2.63903552855846e-10,-2.08478708496509e-10,-7.69386131632229e-10,5.32938956265574e-09,9.25970675806088e-09,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.25784354445506e-08,7.26387532944506e-09,-9.99006695363765e-10,-2.87572451832461e-10,3.38560992793721e-10,1.80609337989972e-10,5.76637251350074e-10,9.20007589769583e-10,1.2830711493575e-09,1.62661964820982e-09,1.72145386965693e-09,1.89276902844105e-09,5.93852655075484e-10,-3.95079990383857e-10,3.51812333160867e-09,-1.55922947290479e-08,1.81471183947076e-08,-2.98324541336598e-09,0,0,-3.86352982241386e-08,-8.79524752813753e-09,1.35852911824094e-09,-6.61797307333774e-10,2.81104559825262e-10,6.51480678749906e-10,1.01150149057692e-09,2.03681523167386e-09,3.53709672073273e-09,5.34571246631044e-09,6.52488688920914e-09,6.3646912326596e-09,5.34618845900173e-09,-2.27759916843632e-09,1.28065147995449e-09,-7.8869995294158e-09,-2.54523568823374e-08,9.11555901147813e-09,0,0,3.00440232973194e-08,-1.85330807836194e-09,-4.45385192561388e-10,1.01910470499973e-10,-2.38165930723435e-10,-7.13949777778187e-11,1.57972587900373e-10,6.96756025796902e-10,1.7765052152491e-09,3.16147909520201e-09,4.27909993799978e-09,3.91392558314267e-09,3.86785117251208e-09,6.18019384106827e-10,-2.71003077325727e-09,2.17357553118916e-09,9.53608742421598e-10,-1.61906045295324e-08,0,0,-1.27154014685685e-08,2.38839907989375e-09,-3.47455331548046e-10,9.41824229203429e-11,8.44273868417408e-11,5.56290611466405e-12,1.14971081940021e-11,1.70857417860038e-10,5.53122719752541e-10,1.26748757223703e-09,2.18448793373016e-09,2.02589462365097e-09,1.39399480315123e-09,6.54052563091777e-10,-2.46894242058677e-09,-5.59594368703692e-09,-6.41819073703803e-11,1.19846343259362e-09,0,0,2.08465770064982e-09,-1.03083825407855e-09,2.83534418587423e-10,-9.08146386344585e-11,-2.1894519233077e-11,8.40991737318768e-12,-1.03543906429554e-11,-1.33678156922265e-11,-5.00151117375751e-11,-3.44312857298769e-10,-4.42057139337831e-10,-3.52095812194056e-10,-4.59167572910405e-10,1.34722234563554e-11,1.45418853129667e-09,8.23485755039582e-10,-6.09471359570138e-10,1.92444002768171e-09,0,0,9.01619223530731e-10,3.72876218828148e-10,-1.10636620597992e-10,4.87636919526226e-11,-4.3476073440058e-13,3.18864229625737e-11,-5.54144615944267e-11,-4.8037326403467e-10,-1.32067938568602e-09,-2.50966892287768e-09,-3.70973412528113e-09,-3.84894818947456e-09,-2.72129396636319e-09,-1.00660650774077e-09,1.22178108715386e-09,3.45503120596137e-09,3.30146699607488e-09,1.53197553864869e-09,0,0,1.4643189532208e-09,4.60162024688072e-10,1.96214741044897e-10,3.61724234980095e-12,-1.27383075777817e-11,-6.40682081540001e-11,-3.21417846315918e-10,-9.42062927526636e-10,-2.20052739608628e-09,-3.67183097971227e-09,-4.75271698078433e-09,-4.87016689236241e-09,-3.33989489900686e-09,-5.90422059740422e-10,2.13677112768506e-09,4.2966904066631e-09,4.86752332200687e-09,3.99198756509871e-09,0,0,2.16256879293435e-09,1.10302882716767e-09,5.75312360686807e-10,2.14986369814107e-10,-8.22382181273642e-11,-3.28706102362323e-10,-9.05255367100644e-10,-1.85721719241221e-09,-3.17155186928244e-09,-4.51783966489251e-09,-5.18588787086817e-09,-4.77990381552706e-09,-3.27467508616724e-09,-7.73560198021701e-10,1.95596005922577e-09,4.11794899190007e-09,4.59586765312093e-09,4.31492616404883e-09,0,0,3.37851934027546e-09,2.25941540463694e-09,1.52685008684788e-09,6.27243829854849e-10,-2.36285461397149e-10,-1.0774093518403e-09,-2.02231480803844e-09,-3.05344628447311e-09,-4.007853272877e-09,-4.47765192743646e-09,-4.31048891324226e-09,-3.48764413963802e-09,-2.11322391742521e-09,-4.61145484395798e-10,1.30882058334503e-09,2.90821896838632e-09,3.65945093258017e-09,3.82053719303309e-09,0,0,3.81785484318396e-09,3.65500181934621e-09,2.90159320085491e-09,1.3061183231077e-09,-4.59628946188123e-10,-2.10827137035789e-09,-3.48150943746019e-09,-4.30594542331428e-09,-4.4761785074405e-09,-4.00937340430618e-09,-3.05697831533059e-09,-2.02597154037266e-09,-1.07980180456552e-09,-2.36629477649244e-10,6.28839346830643e-10,1.53059728186287e-09,2.26338557410847e-09,3.38037554621274e-09,0,0,4.31318393771074e-09,4.59326438117263e-09,4.11260586583618e-09,1.9521345955746e-09,-7.72772047756965e-10,-3.26998283962948e-09,-4.77504163535582e-09,-5.18308252009557e-09,-4.51872207120669e-09,-3.17469522311379e-09,-1.86082363861615e-09,-9.08293455580991e-10,-3.30462207335665e-10,-8.27666255883018e-11,2.15412413573022e-10,5.768112001324e-10,1.1052762023231e-09,2.16352179801028e-09,0,0,3.99217260713759e-09,4.86673421257794e-09,4.29708894541745e-09,2.13660137968751e-09,-5.9166898965953e-10,-3.33669003085079e-09,-4.86490385476774e-09,-4.7472610232529e-09,-3.66633631391144e-09,-2.1961019092228e-09,-9.3847013265186e-10,-3.18719092745716e-10,-6.25585851927538e-11,-1.21261057628786e-11,3.7708652703268e-12,1.95832778886498e-10,4.59871748042783e-10,1.46592478420127e-09,0,0,1.53418419722708e-09,3.30474118227665e-09,3.45779287869848e-09,1.23430385958036e-09,-1.00415413132968e-09,-2.73309715628422e-09,-3.86737163669595e-09,-3.73180214465102e-09,-2.53073139626568e-09,-1.33657983477329e-09,-4.91134457607484e-10,-6.15330416480102e-11,2.89119414700843e-11,-1.59376132055809e-12,4.84962811264136e-11,-1.08743808719707e-10,3.74011550029808e-10,9.07900784095859e-10,0,0,1.93116309603996e-09,-5.90161911808114e-10,8.11408500170804e-10,1.43024266675909e-09,1.18624932576518e-11,-4.44422654457747e-10,-3.26520418364901e-10,-4.06884957253946e-10,-3.09485872266075e-10,-2.16547137416349e-11,6.13202429162939e-12,5.68400671265425e-13,1.36824770305323e-11,-2.01139614879079e-11,-9.11821763217594e-11,2.77635756317165e-10,-1.02852380163605e-09,2.05246542451768e-09,0,0,1.19381102373534e-09,-5.07090771440128e-11,-5.51749977181884e-09,-2.419255996821e-09,6.45892129685817e-10,1.35747844730739e-09,1.95974231407628e-09,2.10936042746186e-09,1.20230905978107e-09,5.04579815044955e-10,1.39874192610977e-10,-5.97217498795611e-12,-3.19994121249081e-12,8.11053537262908e-11,9.54002282485161e-11,-3.35084002243801e-10,2.37335607414112e-09,-1.26422753365987e-08,0,0,-1.61969993558096e-08,9.16691955780375e-10,2.09093150366109e-09,-2.72784269995451e-09,6.26336924365448e-10,3.9035404998452e-09,3.97817517004954e-09,4.34888198851621e-09,3.22372910655662e-09,1.82491194153355e-09,7.29689957069238e-10,1.77948637047078e-10,-6.25742750881211e-11,-2.37992369989102e-10,9.21496250006864e-11,-4.5550721091177e-10,-1.84931880515599e-09,2.9949272106401e-08,0,0,9.14984867603562e-09,-2.53731659679872e-08,-7.84277841188438e-09,1.29079206256561e-09,-2.28301179175619e-09,5.3167456396894e-09,6.31867279704993e-09,6.48257571085357e-09,5.31178766881947e-09,3.51553674887019e-09,2.02514109804598e-09,1.00685761076715e-09,6.50220449680128e-10,2.79715861297693e-10,-6.54295184046786e-10,1.35250302927556e-09,-8.79386154053626e-09,-3.85860198200869e-08,0,0,-2.99432965572324e-09,1.8108953212714e-08,-1.5571809993093e-08,3.52617498087783e-09,-4.07949792968016e-10,5.93792587778229e-10,1.88547204894508e-09,1.71567833993769e-09,1.62127625507319e-09,1.27758987784967e-09,9.15585321270961e-10,5.73136827571994e-10,1.80070398014978e-10,3.38629418698507e-10,-2.85503256648204e-10,-9.90850862417735e-10,7.2420266748242e-09,1.25655932908943e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.5132610564623e-08,8.75431556132058e-09,-1.16315899202954e-09,-3.47201019942184e-10,3.84772253467141e-10,2.48909851150527e-10,7.25063064482787e-10,1.15829422860808e-09,1.63444384109158e-09,2.04945851226925e-09,2.17638399570107e-09,2.3741252118108e-09,7.6502934961712e-10,-3.94375126409987e-10,3.98418741315298e-09,-1.85567600605303e-08,2.15819888146061e-08,-3.29199135051027e-09,0,0,-4.54268924739125e-08,-1.12729174347858e-08,1.70308103354738e-09,-8.24963150600191e-10,3.66474871931563e-10,7.85033861892235e-10,1.27050071966174e-09,2.51783858644963e-09,4.36736612431823e-09,6.6944115379462e-09,8.13953381614043e-09,7.96146628459162e-09,6.58106277257271e-09,-2.4780164379055e-09,1.11204873707734e-09,-9.73686869078597e-09,-3.11586386096663e-08,1.14432868168154e-08,0,0,3.65183307818389e-08,-2.27802608282543e-09,-5.15720902699431e-10,1.11598562223494e-10,-2.9498206588157e-10,-8.3438428292019e-11,1.85033616802442e-10,9.13330398420715e-10,2.23684526974e-09,3.93495957095576e-09,5.42577017461201e-09,4.96253667241879e-09,4.73483405537685e-09,8.41556050688732e-10,-3.29087529060149e-09,2.61494696068725e-09,2.95044370115369e-10,-1.84321116888306e-08,0,0,-1.49798734711103e-08,2.77480490554847e-09,-4.23541684070078e-10,1.28036022906235e-10,9.71246742704117e-11,1.5110978628512e-11,9.71278754556245e-12,1.70909507786145e-10,7.27991262501114e-10,1.57427515207698e-09,2.64888999506088e-09,2.61193908060451e-09,1.75888901569353e-09,7.77521812510657e-10,-3.19066485967538e-09,-6.48163757589606e-09,-7.75824680653195e-10,1.66546207675875e-09,0,0,2.47659323896607e-09,-1.16468029385762e-09,3.08928753062196e-10,-9.99371265274615e-11,-3.18550889896324e-11,3.29411723926194e-12,7.40170189858894e-12,-8.05125343916027e-12,-1.07437668236517e-10,-3.53274339756056e-10,-5.39318430997375e-10,-4.96626423163851e-10,-5.22000560506888e-10,6.60126881590502e-11,1.67457596170443e-09,1.11667718017493e-09,-6.87938952186196e-10,2.24650829264682e-09,0,0,7.49693328939134e-10,6.44923306303357e-10,-2.18570624245218e-10,9.33312684139247e-11,-1.00060165974239e-11,4.73025004283217e-11,-9.33203185916818e-11,-5.68863405092468e-10,-1.6469910448125e-09,-3.20759900792951e-09,-4.58947156393233e-09,-4.82840131133357e-09,-3.47168406691262e-09,-1.21718708896072e-09,1.54043829695468e-09,4.29741323164645e-09,4.32392100242427e-09,1.3341350176773e-09,0,0,1.13087898634292e-09,9.34589518343687e-10,9.56888421279465e-11,5.22668868954228e-11,-3.59376607629696e-11,-6.42290100215308e-11,-3.94205102536336e-10,-1.20620880110568e-09,-2.71109371460399e-09,-4.57821773869634e-09,-5.99621315391919e-09,-6.04930489449223e-09,-4.18170864615451e-09,-7.56233312217603e-10,2.70725357782451e-09,5.2063610179356e-09,6.66069933666134e-09,3.88693043425191e-09,0,0,1.68429913702554e-09,1.87313093193662e-09,5.27605297547085e-10,3.31004614194292e-10,-1.21427371739016e-10,-4.12664876761107e-10,-1.11675634400469e-09,-2.30683600282462e-09,-3.99776309336519e-09,-5.62792883738574e-09,-6.47668277724004e-09,-6.00535092787801e-09,-4.07608039163112e-09,-9.86370403374285e-10,2.53605358237994e-09,4.86742465399334e-09,6.4511786213321e-09,4.09457108777498e-09,0,0,2.96580620933565e-09,3.47007780600268e-09,1.64091229885318e-09,8.68383984054884e-10,-3.19242151033584e-10,-1.3283555983316e-09,-2.53481405168282e-09,-3.808755379915e-09,-4.99837970100036e-09,-5.61638959273147e-09,-5.38348359718513e-09,-4.34690953341573e-09,-2.63620067585065e-09,-6.03280950333921e-10,1.72292271256807e-09,3.35307758585574e-09,5.30306766786563e-09,3.38826779128104e-09,0,0,3.38536298105153e-09,5.29637889020829e-09,3.34459722296844e-09,1.71914994034781e-09,-6.01278323112069e-10,-2.62941922837319e-09,-4.338574116366e-09,-5.37717152258342e-09,-5.6143911651552e-09,-5.00056413049674e-09,-3.81355886713129e-09,-2.53992040119745e-09,-1.33173504900803e-09,-3.19774149650797e-10,8.70703042902186e-10,1.64593025175285e-09,3.47589357078303e-09,2.96796398699612e-09,0,0,4.09285936092297e-09,6.44722736483505e-09,4.86032802550331e-09,2.5313429010831e-09,-9.85518429974051e-10,-4.07013799585387e-09,-5.99909105116209e-09,-6.47359365288605e-09,-5.6293751808915e-09,-4.00226705783407e-09,-2.3120378353967e-09,-1.12081933017178e-09,-4.15047576636719e-10,-1.22176031164958e-10,3.31694399617579e-10,5.29485408593543e-10,1.87702918250336e-09,1.68477214336081e-09,0,0,3.88818204496699e-09,6.66140105851365e-09,5.20685096437237e-09,2.70723526904904e-09,-7.57064759902047e-10,-4.17800618393811e-09,-6.04289901497151e-09,-5.98942447088307e-09,-4.57192408098837e-09,-2.70555900462459e-09,-1.20177039438631e-09,-3.91023900212806e-10,-6.22904837887794e-11,-3.51795043913631e-11,5.25026283281353e-11,9.52235960694193e-11,9.34288476765513e-10,1.13309404496679e-09,0,0,1.33574964241927e-09,4.33056989827577e-09,4.30361786350372e-09,1.55538852815279e-09,-1.21552923654332e-09,-3.48766063987896e-09,-4.85448062457171e-09,-4.61939886622296e-09,-3.23548388667077e-09,-1.66823826398999e-09,-5.8262975642285e-10,-1.01116939659345e-10,4.34424642035696e-11,-1.14848206145496e-11,9.31425018380846e-11,-2.16654616484583e-10,6.48308888809952e-10,7.54170870068436e-10,0,0,2.25523079271008e-09,-6.65466791970984e-10,1.10568533809565e-09,1.6502191571308e-09,6.3145595309779e-11,-5.05141471356391e-10,-4.65328078964744e-10,-4.96803343285673e-10,-3.09725100872752e-10,-7.15729729276451e-11,1.63924336886512e-11,2.1370460416094e-11,1.00315809275629e-11,-2.96190366066189e-11,-1.00592756726068e-10,3.02466671419416e-10,-1.16662465519056e-09,2.45125942640537e-09,0,0,1.66816719740187e-09,-7.53470396891412e-10,-6.39122457511462e-09,-3.13043800359385e-09,7.69283659405523e-10,1.7094809226649e-09,2.52562168546984e-09,2.552094823473e-09,1.48994922676554e-09,6.66054055907194e-10,1.31539616045235e-10,-1.26732736232185e-11,4.00291169551132e-12,9.30044476859337e-11,1.29649830475444e-10,-4.09080640897906e-10,2.76606515736863e-09,-1.49243613110214e-08,0,0,-1.84486620635001e-08,2.57183723853563e-10,2.52593198845129e-09,-3.31706787154028e-09,8.51431978180261e-10,4.78094402669421e-09,5.04225714326943e-09,5.51275310371214e-09,4.01289866007773e-09,2.29713642730535e-09,9.54905331264474e-10,2.10468246765836e-10,-7.22447798804018e-11,-2.94861191860149e-10,9.96346205837689e-11,-5.29163478262792e-10,-2.28061312485161e-09,3.64443823119736e-08,0,0,1.14840894427465e-08,-3.10775797653357e-08,-9.68689457542127e-09,1.13351007532776e-09,-2.48746277733855e-09,6.54129768480209e-09,7.90340708409397e-09,8.08493936412786e-09,6.65130628597258e-09,4.33988995205754e-09,2.50228605562063e-09,1.2640851052785e-09,7.83144285235095e-10,3.64613824190677e-10,-8.1581404182755e-10,1.69962198135974e-09,-1.12717131928141e-08,-4.53865606495406e-08,0,0,-3.30726819352103e-09,2.15471163819176e-08,-1.85336142119917e-08,3.98796872124125e-09,-4.05795505029596e-10,7.65792572798302e-10,2.36772446184555e-09,2.17205143897776e-09,2.04491203018008e-09,1.6293367331154e-09,1.15407197795797e-09,7.21408235584976e-10,2.48755126775666e-10,3.84942055331448e-10,-3.45552515209512e-10,-1.154112807822e-09,8.73220467934592e-09,1.5120118406103e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.70387874506397e-08,9.84852396021498e-09,-1.27379077872374e-09,-3.97831724957348e-10,4.10450828819858e-10,3.14032684572828e-10,8.61080451173418e-10,1.382785625917e-09,1.94323257630589e-09,2.44632760202166e-09,2.61116519334034e-09,2.78796946920452e-09,9.45656417800382e-10,-3.49591712909523e-10,4.21595421259058e-09,-2.07064128636331e-08,2.40012714919347e-08,-3.506136110936e-09,0,0,-5.00623785329906e-08,-1.33604929984573e-08,1.94427071460424e-09,-9.38967702165963e-10,4.37146728788297e-10,9.00250414745802e-10,1.46308332154201e-09,2.92156351051737e-09,5.09807793536176e-09,7.76972569141018e-09,9.53383851071629e-09,9.37797445682206e-09,7.55309852171322e-09,-2.49879779148108e-09,7.68042214127926e-10,-1.12675139520616e-08,-3.55281640474527e-08,1.30194185577538e-08,0,0,4.12249350088584e-08,-2.52504832787996e-09,-5.72001656180462e-10,1.0831134921898e-10,-3.41868223441115e-10,-9.54605309052982e-11,2.28995273223557e-10,1.053975953574e-09,2.62964930055204e-09,4.65031019930984e-09,6.3044683516904e-09,5.88309867270267e-09,5.47658064322496e-09,1.02529029893812e-09,-3.70697552831925e-09,2.79665209155623e-09,-3.33082628801029e-10,-1.98372234308602e-08,0,0,-1.65667273864049e-08,2.98552156915066e-09,-4.559084943083e-10,1.54343138115175e-10,1.10434330952389e-10,1.17714117385477e-11,5.76793270083801e-12,2.1477253795178e-10,8.06813827647755e-10,1.84155589045252e-09,3.13049356818161e-09,3.02776246432337e-09,2.10210796151938e-09,8.6693463783354e-10,-3.77818591909873e-09,-7.11045069496647e-09,-1.63986006623895e-09,2.07855841834128e-09,0,0,2.8234364781733e-09,-1.25156727347618e-09,3.02685809961786e-10,-9.63615390629414e-11,-4.39945520730491e-11,1.39242891597708e-11,-2.53933616643335e-12,-6.68218682337507e-12,-8.591480241883e-11,-4.45080802433589e-10,-6.14389822083841e-10,-5.37970337005085e-10,-6.31840144052066e-10,1.39111949438182e-10,1.77988000221078e-09,1.44610942915236e-09,-6.76165136497213e-10,2.38790925782751e-09,0,0,5.09486049586432e-10,9.31447898588575e-10,-3.21632144653296e-10,1.28524437435154e-10,-2.06636761936007e-11,5.69748845303007e-11,-9.39061721078826e-11,-6.82513168891665e-10,-1.92766797788052e-09,-3.71370062908102e-09,-5.42068287718084e-09,-5.66427792603222e-09,-4.07565828773333e-09,-1.40458586122112e-09,1.84346963473454e-09,4.9183943998149e-09,5.28256124648968e-09,1.14887711205026e-09,0,0,7.70059198300422e-10,1.34359945636694e-09,8.46419355579077e-12,9.6691489722856e-11,-5.15624841148854e-11,-7.35236483994622e-11,-4.6090720127026e-10,-1.38002254770758e-09,-3.18385467885867e-09,-5.35108672075295e-09,-6.97470874201817e-09,-7.09767093647877e-09,-4.89400862645316e-09,-9.02334977938901e-10,3.2167683936049e-09,5.98720150669122e-09,8.15829057612695e-09,3.72366825314628e-09,0,0,1.17124255532623e-09,2.59098226519379e-09,4.44734320232473e-10,4.39099299262355e-10,-1.59974763673913e-10,-4.64130047801119e-10,-1.30640474196791e-09,-2.69348486218329e-09,-4.6464293429031e-09,-6.59372045623986e-09,-7.57919034785739e-09,-7.00395214101918e-09,-4.76660753460469e-09,-1.16318025687016e-09,3.00972516240342e-09,5.49183342110274e-09,8.12207212663033e-09,3.72189081218852e-09,0,0,2.44048192249763e-09,4.5667682822745e-09,1.70902823017098e-09,1.0787062096163e-09,-3.94322846111423e-10,-1.54263938981939e-09,-2.94507060361762e-09,-4.44400557382738e-09,-5.8468600334383e-09,-6.55136160782332e-09,-6.28648651178137e-09,-5.07864716764537e-09,-3.06780923736482e-09,-7.22532085844321e-10,2.08756531947122e-09,3.67163781446854e-09,6.77695266836013e-09,2.88194317798844e-09,0,0,2.87869351586382e-09,6.7681720551507e-09,3.66129838308598e-09,2.08264392923488e-09,-7.20052604515703e-10,-3.05914356264381e-09,-5.0680013783027e-09,-6.27849256329155e-09,-6.54876770237577e-09,-5.84961229747348e-09,-4.45026003384123e-09,-2.95163332802003e-09,-1.54699058542575e-09,-3.95093379335038e-10,1.08174295265261e-09,1.71534886118248e-09,4.5745637066565e-09,2.44294592642039e-09,0,0,3.72011481487235e-09,8.11653523859697e-09,5.48312432031526e-09,3.00428404260614e-09,-1.1623076109628e-09,-4.75957744483194e-09,-6.9965009049544e-09,-7.575662876055e-09,-6.59613128021396e-09,-4.65245146927387e-09,-2.70009909278717e-09,-1.31166300358584e-09,-4.67135335549273e-10,-1.60905656708186e-10,4.40092479850286e-10,4.470140909248e-10,2.59651920528408e-09,1.17127710422259e-09,0,0,3.72628530654684e-09,8.16132560852903e-09,5.98726108653244e-09,3.21717663604497e-09,-9.02702628080491e-10,-4.88964836182301e-09,-7.09054915042748e-09,-6.96703213263055e-09,-5.34372144687482e-09,-3.17772404951131e-09,-1.37499787535111e-09,-4.57152932129547e-10,-7.13207611384904e-11,-5.06709592646971e-11,9.69501618743437e-11,8.04979267947062e-12,1.34338489044307e-09,7.72594083441105e-10,0,0,1.14885471565994e-09,5.29377913983274e-09,4.92875025511353e-09,1.86020951303949e-09,-1.40405728509783e-09,-4.0962049909373e-09,-5.69763997674256e-09,-5.45889317770692e-09,-3.74852215027809e-09,-1.95347368201076e-09,-6.99259778506119e-10,-1.03266705238833e-10,5.24406481290148e-11,-2.24607591806187e-11,1.28503266499481e-10,-3.20039302882538e-10,9.37724903569771e-10,5.11011917745861e-10,0,0,2.39846837850523e-09,-6.51730856379012e-10,1.43808061640168e-09,1.75724951063267e-09,1.34989473810291e-10,-6.14024657349602e-10,-5.02672504168566e-10,-5.65358184035682e-10,-3.94551038565441e-10,-4.38443326455824e-11,2.24053074096911e-11,1.39753125997467e-11,2.19157348949541e-11,-4.13493778396853e-11,-9.73192143534243e-11,2.96165163117107e-10,-1.25916156844363e-09,2.80982090033421e-09,0,0,2.09097726048002e-09,-1.60712564289112e-09,-7.01278655260579e-09,-3.70938176067643e-09,8.58938203935077e-10,2.04056443870397e-09,2.92223545116428e-09,3.01340382514229e-09,1.74054476509375e-09,7.32697578022758e-10,1.67839826595849e-10,-2.07303978215422e-11,-1.4513276285475e-12,1.05669332342892e-10,1.56266262373662e-10,-4.39987497602579e-10,2.98607689408035e-09,-1.65402170313787e-08,0,0,-1.98664643172817e-08,-3.68851187850912e-10,2.70812459801589e-09,-3.74186364365054e-09,1.03639851872119e-09,5.53182220252126e-09,5.97622271771093e-09,6.40552295360485e-09,4.74095283124901e-09,2.70027466413141e-09,1.10283566414771e-09,2.59060575845924e-10,-8.20879443695308e-11,-3.41858713645653e-10,9.46510742602392e-11,-5.88759872127373e-10,-2.53594855818399e-09,4.11855358350638e-08,0,0,1.3067039087069e-08,-3.5452856804825e-08,-1.1214741367076e-08,8.02744878074369e-10,-2.51298837703934e-09,7.50368497156783e-09,9.30920992518814e-09,9.4689123965266e-09,7.71867438608525e-09,5.06510711391403e-09,2.90261816454861e-09,1.45484630782492e-09,8.9760447497989e-10,4.34878964998387e-10,-9.28570524942784e-10,1.9448584462526e-09,-1.33594213320121e-08,-5.00369190956019e-08,0,0,-3.52646326947201e-09,2.3975084222733e-08,-2.06838095228194e-08,4.21389444483416e-09,-3.58033790952133e-10,9.4785254545574e-10,2.78391973952111e-09,2.60950299197201e-09,2.44379504418255e-09,1.93942409642334e-09,1.37935078034712e-09,8.57734076303039e-10,3.14463487285777e-10,4.10761687315457e-10,-3.96972916411047e-10,-1.26450692494755e-09,9.82751880510362e-09,1.70263913326221e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.84363697478563e-08,1.05976648390936e-08,-1.36179272274066e-09,-4.38978572697686e-10,4.22188039660432e-10,3.79648388899415e-10,9.84057096775115e-10,1.58582849254679e-09,2.24570851215967e-09,2.81397539216399e-09,3.01533660761359e-09,3.18536199036724e-09,1.12895064373928e-09,-2.79233944613565e-10,4.26830632199004e-09,-2.21880224561575e-08,2.5580043236557e-08,-3.80372310254153e-09,0,0,-5.30295642112268e-08,-1.50017886616429e-08,2.11349464327814e-09,-1.02918014508381e-09,4.97720690148056e-10,9.80282315161002e-10,1.63631077773219e-09,3.24239632841851e-09,5.66435317557671e-09,8.70886879280211e-09,1.06887075457708e-08,1.05471326267702e-08,8.38184196853948e-09,-2.42305784295272e-09,3.46118580603368e-10,-1.25925193424394e-08,-3.86261585679928e-08,1.38384037518522e-08,0,0,4.43481595899042e-08,-2.66466531793457e-09,-6.08522821917908e-10,1.08148208154404e-10,-3.7998470828049e-10,-1.05719073524439e-10,2.408229369106e-10,1.19601608631053e-09,2.93719054744967e-09,5.17349494554253e-09,7.08568209154624e-09,6.62903513849581e-09,6.0360810426655e-09,1.20358007631227e-09,-3.99225874375073e-09,2.83783361449803e-09,-9.20270442989455e-10,-2.06771451050864e-08,0,0,-1.75922550267329e-08,3.11966152936334e-09,-4.93577197084214e-10,1.78935368550258e-10,1.1837010426662e-10,1.88984133394082e-11,4.59983794962331e-12,2.13334785028557e-10,9.29708137448173e-10,2.06114376440355e-09,3.46200134967435e-09,3.46099061118919e-09,2.38887019093285e-09,9.19447350144511e-10,-4.2733447133057e-09,-7.59427281490513e-09,-2.37505175177671e-09,2.24903832995569e-09,0,0,3.05025865622422e-09,-1.30896293573266e-09,3.11309132734408e-10,-1.01105688021634e-10,-5.11321241169875e-11,1.00532388472133e-11,1.01756514007729e-11,-2.82103334336673e-12,-1.27083380344945e-10,-4.48345677188583e-10,-6.7848885116045e-10,-6.40723326300506e-10,-6.65941046086818e-10,1.9130876686574e-10,1.88988060934686e-09,1.66416243166924e-09,-6.02032531510249e-10,2.53591144756243e-09,0,0,3.37041179590318e-10,1.13564500750076e-09,-4.04549200525517e-10,1.61040883992817e-10,-2.77286800669308e-11,6.93420572281689e-11,-1.17946863589583e-10,-7.37563669891958e-10,-2.14737667422424e-09,-4.19834694217231e-09,-6.03884123612439e-09,-6.36395210137611e-09,-4.62133304303081e-09,-1.54635449295672e-09,2.09505887149096e-09,5.48595032262975e-09,5.99933838121473e-09,1.053839034569e-09,0,0,4.87508230264287e-10,1.68858831597627e-09,-7.47877459786559e-11,1.32034118329243e-10,-6.81010952201016e-11,-7.02605856880739e-11,-5.05558520261384e-10,-1.55534605521064e-09,-3.52601330708115e-09,-5.97037357129977e-09,-7.836607208222e-09,-7.91901098166292e-09,-5.48525213948065e-09,-1.02580315628467e-09,3.62449131869487e-09,6.63367948447863e-09,9.42588866472252e-09,3.60387451170812e-09,0,0,7.61249503067876e-10,3.15565570749347e-09,3.88679295699306e-10,5.20819429191245e-10,-1.87343971120088e-10,-5.16671240957405e-10,-1.44284685680241e-09,-2.99235440795721e-09,-5.20916424704149e-09,-7.35589975902116e-09,-8.47106722637011e-09,-7.85540748009873e-09,-5.32256927847555e-09,-1.31138193722135e-09,3.41575036074162e-09,5.9943953691498e-09,9.46015558414309e-09,3.5059228248498e-09,0,0,2.05704420209967e-09,5.44247837679462e-09,1.75947286071949e-09,1.24691827648415e-09,-4.52323508199688e-10,-1.70810382066773e-09,-3.28821903731119e-09,-4.95386843802165e-09,-6.52201976089177e-09,-7.3314011689318e-09,-7.01882345715819e-09,-5.66386594793902e-09,-3.42474805512579e-09,-8.21933800526498e-10,2.37775048583066e-09,3.95071560348792e-09,7.95689532181626e-09,2.50544718713886e-09,0,0,2.5018192793942e-09,7.9459591725245e-09,3.93851590251416e-09,2.3717512684787e-09,-8.19007624983701e-10,-3.41421259316487e-09,-5.65094863561987e-09,-7.00901595040039e-09,-7.32822726274768e-09,-6.52542733076287e-09,-4.96147074280927e-09,-3.29628232217986e-09,-1.7134950650439e-09,-4.53311795407744e-10,1.25068136709157e-09,1.76715134035667e-09,5.45212379753019e-09,2.06000211546874e-09,0,0,3.50390406244323e-09,9.45339318937966e-09,5.98385148170244e-09,3.40963224365554e-09,-1.31047720422826e-09,-5.3144419439813e-09,-7.84677681169929e-09,-8.4674753025839e-09,-7.35916866315338e-09,-5.21671191299234e-09,-3.00058670233002e-09,-1.44915671802173e-09,-5.2028162916572e-10,-1.88473246093281e-10,5.22107000677831e-10,3.91361083189123e-10,3.16298024766632e-09,7.60752089749343e-10,0,0,3.60758546946865e-09,9.43144970070007e-09,6.63365703797403e-09,3.62517726829699e-09,-1.02563833700575e-09,-5.48052353197669e-09,-7.91114064852082e-09,-7.82804028038909e-09,-5.9625900529583e-09,-3.51926278343353e-09,-1.54982969384825e-09,-5.01524449343901e-10,-6.77801792931054e-11,-6.71059928836928e-11,1.32343434795475e-10,-7.51670920055708e-11,1.68839861014007e-09,4.90645258313307e-10,0,0,1.05267883218613e-09,6.01515203905374e-09,5.50051879857394e-09,2.11368750289317e-09,-1.54721614902855e-09,-4.64627378946916e-09,-6.40506774751063e-09,-6.08484910282704e-09,-4.2395064449905e-09,-2.17778471272978e-09,-7.5677021082824e-10,-1.28602358881189e-10,6.41528160367524e-11,-2.97739977841765e-11,1.61178964197743e-10,-4.03261467406339e-10,1.14483515725997e-09,3.34846765649902e-10,0,0,2.54764201287283e-09,-5.74994196103681e-10,1.65980181971005e-09,1.87022145521177e-09,1.85876020090067e-10,-6.47972768912915e-10,-6.02436519203832e-10,-6.2517580584862e-10,-3.92016714813796e-10,-7.97056207305868e-11,2.98617789031851e-11,2.89282134767918e-11,1.91322903006747e-11,-4.81639136491151e-11,-1.02377291052344e-10,3.0490878074547e-10,-1.32222655108458e-09,3.0503067399222e-09,0,0,2.27189767131956e-09,-2.33191756635321e-09,-7.49159907174426e-09,-4.19804433987796e-09,9.11948514336648e-10,2.31555721799837e-09,3.33819145912741e-09,3.32720105683042e-09,1.94502697425004e-09,8.45365068853392e-10,1.60129361430278e-10,-2.55330050747851e-11,3.94787639878921e-12,1.13093627569879e-10,1.8119323299678e-10,-4.76756614370347e-10,3.13042361355116e-09,-1.75987413396637e-08,0,0,-2.0718797212964e-08,-9.52878833302014e-10,2.75413065495078e-09,-4.03516616739257e-09,1.21575627863072e-09,6.09926630314604e-09,6.73235078886283e-09,7.19787565879766e-09,5.27431192355466e-09,3.01565080709893e-09,1.25084689928357e-09,2.74863522321707e-10,-9.05548022644573e-11,-3.80094047090215e-10,9.3122795935133e-11,-6.28114043471587e-10,-2.68443384650938e-09,4.43475307489806e-08,0,0,1.38926474178625e-08,-3.85600704500262e-08,-1.25389531370375e-08,3.9401114035072e-10,-2.44228134240217e-09,8.32406905235912e-09,1.04698302616446e-08,1.06150771663351e-08,8.65154523287309e-09,5.62701966653322e-09,3.22024253469171e-09,1.62636550669736e-09,9.76901745050495e-10,4.95131733693773e-10,-1.01790533033254e-09,2.11856074956914e-09,-1.49994709941407e-08,-5.30203460346386e-08,0,0,-3.82931866938342e-09,2.55648801434056e-08,-2.21685003682495e-08,4.25950427503773e-09,-2.83831435043028e-10,1.13316015549433e-09,3.18494621678558e-09,3.01758357500254e-09,2.8143540580865e-09,2.2439920569983e-09,1.58378127516747e-09,9.81342044965596e-10,3.8080421502438e-10,4.22663501576327e-10,-4.39042027513398e-10,-1.35283705779461e-09,1.05775348442736e-08,1.84237957855187e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.94636767257744e-08,1.10197290037755e-08,-1.42427248281085e-09,-4.77073882153548e-10,4.26664631325145e-10,4.39096177447412e-10,1.10132900796236e-09,1.78364949650548e-09,2.52261248775505e-09,3.17460016946144e-09,3.41764748247644e-09,3.54909568655628e-09,1.33085069220934e-09,-1.95371690375618e-10,4.20473681234922e-09,-2.31547280853701e-08,2.64552980596782e-08,-4.2875620890567e-09,0,0,-5.46500622626465e-08,-1.62160669225944e-08,2.19715000794308e-09,-1.08303875536451e-09,5.42469455485489e-10,1.04793095893836e-09,1.75585778644796e-09,3.5001925816866e-09,6.14519522160971e-09,9.42616989321851e-09,1.16518897616006e-08,1.15463483595657e-08,9.0289813545627e-09,-2.29080013515925e-09,-1.22951330811043e-10,-1.3667079015911e-08,-4.06177504861824e-08,1.38714332688335e-08,0,0,4.60222889193419e-08,-2.65370619908001e-09,-6.36510427782862e-10,1.04734666756802e-10,-4.10754969858017e-10,-1.18691163301508e-10,2.57915936856834e-10,1.26645176875443e-09,3.16691202929296e-09,5.61238379869094e-09,7.6306821011788e-09,7.2239237508529e-09,6.49780840671889e-09,1.3390288626793e-09,-4.16078190975169e-09,2.68242684127755e-09,-1.24552710872318e-09,-2.11823695668449e-08,0,0,-1.81676449898049e-08,3.15693768072405e-09,-5.05897995437033e-10,1.9567133597907e-10,1.27946808942093e-10,1.73985504481104e-11,4.75751421639636e-12,2.46608349513496e-10,9.86516894649298e-10,2.24864819787943e-09,3.80295113409557e-09,3.76172690364603e-09,2.64680888613702e-09,9.54792163612774e-10,-4.63318405134667e-09,-7.9934159011141e-09,-3.06147880863627e-09,2.30257824871875e-09,0,0,3.23732512084073e-09,-1.35439224889057e-09,3.12167770699617e-10,-1.01774629904661e-10,-5.7943781737992e-11,1.60994111411025e-11,1.90607690809348e-12,-4.73720964238926e-12,-1.15228825831088e-10,-5.15364986508073e-10,-7.31814101038236e-10,-6.70075504761843e-10,-7.34177072194296e-10,2.43231053102241e-10,1.95598169959452e-09,1.88023140951716e-09,-4.6823451344737e-10,2.58038259153825e-09,0,0,2.01050998378831e-10,1.29345098005072e-09,-4.64056094174754e-10,1.79564326917127e-10,-3.28929712419364e-11,7.71079426437105e-11,-1.12844848403983e-10,-8.04274124744183e-10,-2.32000917412268e-09,-4.52107655237002e-09,-6.59059337459236e-09,-6.93041237243045e-09,-5.03470976954508e-09,-1.67307020456156e-09,2.32029850757015e-09,5.88806691102552e-09,6.58940232678983e-09,1.1088422208158e-09,0,0,3.51376455500212e-10,1.89289200605259e-09,-1.16157508184041e-10,1.51903974001478e-10,-7.4983198483785e-11,-7.39245320681742e-11,-5.41949774536192e-10,-1.65695788259454e-09,-3.82190719878791e-09,-6.4644046728931e-09,-8.47276630950436e-09,-8.61445307022866e-09,-5.96138660839587e-09,-1.12625004457176e-09,3.96598189497521e-09,7.1950354489849e-09,1.03192703371534e-08,3.6898192315357e-09,0,0,5.68591290688062e-10,3.54341812713061e-09,3.50792917225337e-10,5.78663222284749e-10,-2.08435481595519e-10,-5.43998208068075e-10,-1.55446616325127e-09,-3.22840431871195e-09,-5.61487684145624e-09,-7.97473760520603e-09,-9.18601882823395e-09,-8.50900643884218e-09,-5.7790488410179e-09,-1.42611881116464e-09,3.71665899959293e-09,6.44080544768558e-09,1.04549503947998e-08,3.48823319691442e-09,0,0,1.88928989439044e-09,6.05317853939537e-09,1.82707502144685e-09,1.36768719555947e-09,-4.97026643849632e-10,-1.84066258794525e-09,-3.54132957023391e-09,-5.35095209989088e-09,-7.0586763394975e-09,-7.92517177261991e-09,-7.5938693003274e-09,-6.13132098004835e-09,-3.70245940704305e-09,-8.96760411618039e-10,2.60216435195848e-09,4.18754666606767e-09,8.80383570479035e-09,2.40005577004009e-09,0,0,2.39587786504023e-09,8.79091350123887e-09,4.17345863871174e-09,2.59505785634931e-09,-8.93392954577572e-10,-3.69006260194684e-09,-6.11609796273108e-09,-7.58233665731847e-09,-7.92138442672531e-09,-7.06265797280656e-09,-5.35999241538007e-09,-3.5508721043092e-09,-1.84706008292772e-09,-4.98259817852785e-10,1.37214695561867e-09,1.83610777624323e-09,6.06467213949085e-09,1.89287218746986e-09,0,0,3.48585680432771e-09,1.04468575163244e-08,6.42856078428706e-09,3.70988351930543e-09,-1.42515224714995e-09,-5.76988678496792e-09,-8.49930846805511e-09,-9.18219131185957e-09,-7.97906341933725e-09,-5.62398305450352e-09,-3.23804713269426e-09,-1.5618881943669e-09,-5.48183633002006e-10,-2.0972345579926e-10,5.80254319133858e-10,3.539146427904e-10,3.55231820480742e-09,5.67934615715519e-10,0,0,3.69479762443564e-09,1.03274161590184e-08,7.19473333894998e-09,3.96704869110252e-09,-1.12566257292297e-09,-5.95616210350927e-09,-8.60612876547301e-09,-8.46369079378018e-09,-6.45609376788712e-09,-3.81497904946547e-09,-1.65121121213278e-09,-5.37615721104026e-10,-7.13066934812177e-11,-7.39041918873108e-11,1.52215312172357e-10,-1.16401888327824e-10,1.89279866085775e-09,3.54960837661388e-10,0,0,1.10677931551502e-09,6.61008649699009e-09,5.90693529337527e-09,2.34056670364453e-09,-1.67534504165541e-09,-5.06411371982506e-09,-6.97849525846341e-09,-6.64410440117127e-09,-4.56814812271443e-09,-2.35408104689711e-09,-8.25684683195483e-10,-1.24586060832697e-10,7.14771121809449e-11,-3.51581488939445e-11,1.79893736460549e-10,-4.63202434811857e-10,1.30540649879631e-09,1.95347709549942e-10,0,0,2.59305589491129e-09,-4.38768449343053e-10,1.88052955499027e-09,1.94007339226123e-09,2.36650367396581e-10,-7.17046088953045e-10,-6.30667189279782e-10,-6.75492224114826e-10,-4.55149624259906e-10,-6.40557030394184e-11,3.09402300243028e-11,2.23280326719682e-11,2.60057801242728e-11,-5.47153339638088e-11,-1.03333547747912e-10,3.060895365186e-10,-1.3728784037783e-09,3.25064237207407e-09,0,0,2.3362003513181e-09,-3.0082741328409e-09,-7.88791103585833e-09,-4.55299531770071e-09,9.47526799423064e-10,2.56332253653715e-09,3.62393253846902e-09,3.65307955503486e-09,2.12066615710403e-09,8.93870866949315e-10,1.88389613244504e-10,-2.80648208940251e-11,1.05618399704746e-12,1.22314281115524e-10,1.98188407034527e-10,-4.8858249124521e-10,3.17742055787783e-09,-1.8205184920946e-08,0,0,-2.12352510434992e-08,-1.27455974593373e-09,2.60645588831627e-09,-4.21058609198978e-09,1.35228361010823e-09,6.56669330706415e-09,7.3346267298038e-09,7.75029162815322e-09,5.71979402401982e-09,3.25103667736282e-09,1.32558951045896e-09,2.9488142376629e-10,-1.02053628795126e-10,-4.11002913925327e-10,8.87645078686601e-11,-6.58408862529547e-10,-2.68162592627505e-09,4.60563436159637e-08,0,0,1.3931704414083e-08,-4.05612944091243e-08,-1.36135822300345e-08,-6.40165658553905e-11,-2.31438140640655e-09,8.96470604105581e-09,1.14627358917866e-08,1.15725846038854e-08,9.36454691056439e-09,6.10457453011868e-09,3.47568199768018e-09,1.74440658826291e-09,1.0438378392746e-09,5.39689865915581e-10,-1.07130519813261e-09,2.20648434157501e-09,-1.62104191218068e-08,-5.46536085351781e-08,0,0,-4.31745521819516e-09,2.64496514637913e-08,-2.31393924647664e-08,4.18872046278532e-09,-1.95938882959485e-10,1.33773890395477e-09,3.55316325827007e-09,3.42451766829042e-09,3.17865629205239e-09,2.52347001679129e-09,1.78328454146813e-09,1.09951858035681e-09,4.41006518670335e-10,4.27311688666107e-10,-4.77992831573989e-10,-1.41609703945592e-09,1.09988889680147e-08,1.94502848784945e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.02670493768425e-08,1.11558480098437e-08,-1.4784365014774e-09,-5.1069376812025e-10,4.28400810442462e-10,4.96099150130302e-10,1.21324724983161e-09,1.96963195828821e-09,2.80315509369277e-09,3.52386688348354e-09,3.80760065845806e-09,3.91972041522903e-09,1.54524680010321e-09,-1.14720772334353e-10,4.06977433939031e-09,-2.37307049907e-08,2.67803442394723e-08,-5.10537444980489e-09,0,0,-5.5354176943834e-08,-1.70313517966431e-08,2.23538954333474e-09,-1.12583013609162e-09,5.77347848068087e-10,1.09204714176068e-09,1.85841883643889e-09,3.69584174017646e-09,6.49917785499798e-09,1.00273602002603e-08,1.24086483228839e-08,1.23192301156402e-08,9.57780241685667e-09,-2.17801917518039e-09,-5.53383270814658e-10,-1.45498930873445e-08,-4.1704971768859e-08,1.33250399422783e-08,0,0,4.65878091515446e-08,-2.56906252289007e-09,-6.47233021373694e-10,1.10421805530885e-10,-4.35971324573527e-10,-1.33631571008154e-10,2.45120286995755e-10,1.31862194349384e-09,3.30748300816791e-09,5.87942410878397e-09,8.0680785694525e-09,7.64519159567958e-09,6.83709680597289e-09,1.4570126566714e-09,-4.26660212243239e-09,2.47409042945007e-09,-1.36672861132969e-09,-2.14908038466429e-08,0,0,-1.83834270619217e-08,3.17516532908968e-09,-5.30771890711934e-10,2.09685633188589e-10,1.34954208495775e-10,2.370412373592e-11,1.01422512838151e-11,2.55558433197683e-10,1.07504843821503e-09,2.40122633134476e-09,4.04306227167552e-09,4.05775217086977e-09,2.84864555033781e-09,9.82259760742867e-10,-4.90400782182344e-09,-8.37679722135361e-09,-3.54396919057476e-09,2.16986593816684e-09,0,0,3.32578111687489e-09,-1.39367039914909e-09,3.33702623040346e-10,-1.10829512503476e-10,-6.05623899070752e-11,1.18244393779689e-11,5.99351721085268e-12,-9.09305333549271e-12,-1.47992958378785e-10,-5.33818609992461e-10,-7.86694072957695e-10,-7.40121171873375e-10,-7.59906080343053e-10,2.684560771638e-10,2.06047778133036e-09,2.01486831912535e-09,-3.19106650158313e-10,2.64654797661829e-09,0,0,1.74098634698176e-10,1.36273670099633e-09,-5.00669261760349e-10,1.92588992599105e-10,-3.4319316964142e-11,8.67234391551122e-11,-1.19565870771401e-10,-8.26122847498905e-10,-2.4363477628797e-09,-4.79880332077778e-09,-6.96707229634142e-09,-7.36892727399848e-09,-5.37499298159056e-09,-1.77025115097976e-09,2.48832880102997e-09,6.24058281787879e-09,6.96743899039749e-09,1.28745835445407e-09,0,0,3.49056901779734e-10,1.99989384916705e-09,-1.37725262271742e-10,1.58584488122812e-10,-7.99648147326786e-11,-6.92988606327815e-11,-5.60276265315829e-10,-1.74882867171393e-09,-4.01362618745003e-09,-6.8272619561593e-09,-8.99377823949617e-09,-9.129654307767e-09,-6.3355600531954e-09,-1.20164168211736e-09,4.22249390490357e-09,7.65386747374086e-09,1.09543614739621e-08,3.9255582933185e-09,0,0,5.70198779921117e-10,3.74645299458262e-09,3.51589154853669e-10,6.08836840817553e-10,-2.19030292728101e-10,-5.69053346135977e-10,-1.62251398044705e-09,-3.3881823816216e-09,-5.92968610319077e-09,-8.41624360472401e-09,-9.71752513055083e-09,-9.02894976097384e-09,-6.12771781110374e-09,-1.51699016846319e-09,3.95309190949328e-09,6.81342192632054e-09,1.10959818545145e-08,3.7291118086973e-09,0,0,1.96688813984842e-09,6.40719893167209e-09,1.90571883829335e-09,1.44549061938801e-09,-5.26147062945272e-10,-1.93461657647679e-09,-3.73395265792426e-09,-5.63785010997704e-09,-7.44139323440519e-09,-8.3721347652788e-09,-8.01984849113659e-09,-6.47757342897503e-09,-3.91805703342316e-09,-9.53527757229408e-10,2.75852397152304e-09,4.41664543367694e-09,9.32637070944826e-09,2.54412675840442e-09,0,0,2.53931163646492e-09,9.31144246007917e-09,4.40066010313948e-09,2.75036090645665e-09,-9.49736777833147e-10,-3.9038403604137e-09,-6.46011112879881e-09,-8.0065556438381e-09,-8.36777103525249e-09,-7.44601353808166e-09,-5.64825602094059e-09,-3.74498334046985e-09,-1.94205565726196e-09,-5.27611101636728e-10,1.4506389325391e-09,1.91610950928492e-09,6.42041606040023e-09,1.97127600303685e-09,0,0,3.72627247158538e-09,1.10867881932117e-08,6.79939524891821e-09,3.9456242381032e-09,-1.51592110909058e-09,-6.11747191913504e-09,-9.0181318637674e-09,-9.71358640656816e-09,-8.42142277255184e-09,-5.94021827833388e-09,-3.39926066379034e-09,-1.63089178148178e-09,-5.73761808731558e-10,-2.204757484122e-10,6.10718227803831e-10,3.55163339686985e-10,3.75682937211971e-09,5.69694918736336e-10,0,0,3.93161389001921e-09,1.09646773197387e-08,7.65362766500946e-09,4.22380761108941e-09,-1.20064977506802e-09,-6.33007040046687e-09,-9.12097990662858e-09,-8.98440377723436e-09,-6.81906112358607e-09,-4.00670623501819e-09,-1.74304510857954e-09,-5.55912089910829e-10,-6.65812161526295e-11,-7.88367810345521e-11,1.58909080839987e-10,-1.37840511839049e-10,1.99992286309628e-09,3.53183608613432e-10,0,0,1.28577847903262e-09,6.99258044007229e-09,6.26348380315324e-09,2.51023009432913e-09,-1.77399644690865e-09,-5.40837452338992e-09,-7.42346905844914e-09,-7.02683400058487e-09,-4.85059364560845e-09,-2.47351451904527e-09,-8.49039825036828e-10,-1.32021420578936e-10,8.07598446928339e-11,-3.67225864518513e-11,1.93079031331028e-10,-5.00144764756779e-10,1.37678291187364e-09,1.65660203190454e-10,0,0,2.65964591846856e-09,-2.86583001307389e-10,2.02024249671152e-09,2.04887375303488e-09,2.60865794056194e-10,-7.44660808262249e-10,-7.01443621676673e-10,-7.30121510039225e-10,-4.71718230775713e-10,-9.4527358077999e-11,2.83119452247318e-11,2.75470817760494e-11,2.22981347100261e-11,-5.71747554162915e-11,-1.12641293162354e-10,3.27958169015528e-10,-1.41583305545485e-09,3.34959110255419e-09,0,0,2.21373723529475e-09,-3.48197558963784e-09,-8.26968883663224e-09,-4.82111521255045e-09,9.7502148114458e-10,2.7568250801367e-09,3.90868784423782e-09,3.88240382172885e-09,2.26466636439815e-09,9.77002221231489e-10,1.94150522153661e-10,-2.45092036445803e-11,6.48459462774266e-12,1.29120351708551e-10,2.12452591615451e-10,-5.13422888906148e-10,3.20350309717915e-09,-1.84446879035127e-08,0,0,-2.15520356078443e-08,-1.39265178233481e-09,2.40739991003019e-09,-4.32099924396134e-09,1.47127852213034e-09,6.90889466895004e-09,7.75901749505548e-09,8.19066773816801e-09,5.98964440669142e-09,3.39404953869971e-09,1.38009019865782e-09,2.84004429293392e-10,-1.16025198774652e-10,-4.36316386229265e-10,9.38132717614886e-11,-6.70455807133517e-10,-2.60323437737134e-09,4.66459559723273e-08,0,0,1.33889484865631e-08,-4.16533991292398e-08,-1.44975976619964e-08,-4.87592337067191e-10,-2.20440917466543e-09,9.50970940604109e-09,1.22327202558526e-08,1.23268655671367e-08,9.96412996583546e-09,6.45702026216271e-09,3.66974824066598e-09,1.84591960158828e-09,1.08739590459168e-09,5.74506966970352e-10,-1.11398696459791e-09,2.24770469452339e-09,-1.70188740491735e-08,-5.53624088524701e-08,0,0,-5.13818446532607e-09,2.67790635790481e-08,-2.37187228155976e-08,4.04651430345405e-09,-1.11690861574296e-10,1.55519230913105e-09,3.92863406650626e-09,3.8193990391808e-09,3.53169711311474e-09,2.80670547959556e-09,1.97099361749816e-09,1.21233894336387e-09,4.98674783797498e-10,4.2920314379843e-10,-5.12154954990716e-10,-1.47147369113603e-09,1.11311661289765e-08,2.02523226968828e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.0952405870698e-08,1.10420762631995e-08,-1.51491986230478e-09,-5.44296036638333e-10,4.31941516988474e-10,5.46006982242467e-10,1.32611362380598e-09,2.15601417339391e-09,3.06898202947599e-09,3.87685471233388e-09,4.20518832614297e-09,4.28132047372562e-09,1.78922752315372e-09,-4.1700494650081e-11,3.90300276926215e-09,-2.40212633089653e-08,2.66489029038068e-08,-6.33644298454983e-09,0,0,-5.55282256991638e-08,-1.75507659232572e-08,2.23260076532985e-09,-1.15624794180755e-09,6.01301977163984e-10,1.13018321181195e-09,1.92671999458158e-09,3.85286803066728e-09,6.79353013967013e-09,1.04651911753759e-08,1.29847997040282e-08,1.28908079294751e-08,9.96617744595166e-09,-2.14589130137056e-09,-8.78396196774586e-10,-1.51678780215733e-08,-4.22145551766379e-08,1.2500199496743e-08,0,0,4.63660571582776e-08,-2.38825935787973e-09,-6.42414255759264e-10,1.24920272640458e-10,-4.5803467845779e-10,-1.56099168498878e-10,2.18815756987535e-10,1.30092469062143e-09,3.36207786046893e-09,6.05286821581464e-09,8.34832699275554e-09,7.95020114423919e-09,7.15089223291271e-09,1.53781097218562e-09,-4.36973210075557e-09,2.23407995767782e-09,-1.24831949945913e-09,-2.16585656946084e-08,0,0,-1.83394433510579e-08,3.16745024232516e-09,-5.55293396574553e-10,2.18701035114441e-10,1.43547587734736e-10,2.83929165623169e-11,2.27120419922448e-11,2.90687161819246e-10,1.13651968297477e-09,2.53057418224124e-09,4.27025471252509e-09,4.24924266561899e-09,2.99189005771886e-09,1.02448908016526e-09,-5.06953404033218e-09,-8.76533612472794e-09,-3.89743874602966e-09,2.00639142751626e-09,0,0,3.37652501745233e-09,-1.42350486269939e-09,3.59536657801256e-10,-1.19164437376991e-10,-6.29057078914022e-11,1.07416691959082e-11,-3.90075069817153e-12,-2.28972186517004e-11,-1.63828460301596e-10,-5.96915124941632e-10,-8.52465441096112e-10,-7.83329120915674e-10,-8.16371824289183e-10,2.75931993534288e-10,2.18068473476931e-09,2.15687757253899e-09,-1.93881916090841e-10,2.66427057917028e-09,0,0,1.89112048744853e-10,1.38954389988756e-09,-5.2505055208318e-10,1.98004551504307e-10,-3.425500465408e-11,9.56497514431973e-11,-1.07378001281908e-10,-8.43391123356179e-10,-2.50851869364819e-09,-4.9591902429094e-09,-7.25644857186383e-09,-7.67762793964217e-09,-5.5932992174656e-09,-1.85678532997892e-09,2.59923289811147e-09,6.48652953468615e-09,7.24780813441863e-09,1.54337269736204e-09,0,0,4.36051775543953e-10,2.00857378434713e-09,-1.33848217134998e-10,1.53915132206678e-10,-7.90693109228955e-11,-6.69463028842769e-11,-5.69744994118211e-10,-1.79262280274213e-09,-4.16004009038033e-09,-7.0961552426821e-09,-9.36830650999524e-09,-9.55374728977266e-09,-6.63221788499273e-09,-1.25162912560932e-09,4.43191118270083e-09,8.03770631832175e-09,1.13383466576424e-08,4.27114775041859e-09,0,0,7.11524680147343e-10,3.8179594198121e-09,3.66073739217957e-10,6.22836255849558e-10,-2.2544746245831e-10,-5.78404817801578e-10,-1.66979657620612e-09,-3.49528030575192e-09,-6.12478014581823e-09,-8.72920225280292e-09,-1.01091929222953e-08,-9.41516031785265e-09,-6.41179971006595e-09,-1.58907471535932e-09,4.12537615354423e-09,7.15032598578249e-09,1.14919437605599e-08,4.07956083762406e-09,0,0,2.17921001994548e-09,6.57176606751775e-09,1.9973461469041e-09,1.49266353322124e-09,-5.47096649203263e-10,-2.00799994938025e-09,-3.86877417700143e-09,-5.83879598016643e-09,-7.70341619813071e-09,-8.67058629518372e-09,-8.32983331018585e-09,-6.74671031072028e-09,-4.08623346438112e-09,-9.95925512507737e-10,2.87298744394431e-09,4.6254260688205e-09,9.61646817060523e-09,2.85000106385216e-09,0,0,2.84437944519662e-09,9.59960595299024e-09,4.60749759813133e-09,2.86372135558995e-09,-9.91700908452251e-10,-4.07019276246984e-09,-6.72702811285952e-09,-8.31489631098869e-09,-8.6657215423377e-09,-7.70871399749749e-09,-5.85065909841866e-09,-3.88131893316312e-09,-2.01648855464133e-09,-5.48817076302683e-10,1.49848733731843e-09,2.00910010679208e-09,6.58672690793635e-09,2.18447274777012e-09,0,0,4.0761419882598e-09,1.14815613693404e-08,7.1347008413514e-09,4.11719254577026e-09,-1.58794417344972e-09,-6.40048934249558e-09,-9.40315575716565e-09,-1.01048060276722e-08,-8.73501654681262e-09,-6.13650188629936e-09,-3.50753733779505e-09,-1.67907738640725e-09,-5.83576503005015e-10,-2.27012769783539e-10,6.25016026446638e-10,3.70136642915973e-10,3.82955798611104e-09,7.11656225291709e-10,0,0,4.27833475681373e-09,1.13504679484941e-08,8.03742442536238e-09,4.433754455155e-09,-1.25015118927342e-09,-6.62662701427671e-09,-9.54536882580861e-09,-9.35944931376597e-09,-7.0885897104449e-09,-4.15378246659308e-09,-1.78722499899952e-09,-5.65504379290673e-10,-6.42824141088664e-11,-7.79343130979058e-11,1.54216808655682e-10,-1.33772913409203e-10,2.00891841412253e-09,4.40433280438852e-10,0,0,1.54261441635346e-09,7.2777469818958e-09,6.51337072742729e-09,2.62190376961314e-09,-1.86213734230281e-09,-5.62989210887476e-09,-7.73665381469456e-09,-7.32050768730206e-09,-5.01398243619018e-09,-2.54728402307244e-09,-8.67069918181501e-10,-1.20100807779391e-10,8.96324975093082e-11,-3.67162809239981e-11,1.98662888606603e-10,-5.24893153851048e-10,1.40491005851048e-09,1.79182617486997e-10,0,0,2.67758435390244e-09,-1.59277469623822e-10,2.16833927842782e-09,2.17433736164065e-09,2.67554515027523e-10,-8.04909054499263e-10,-7.4904526611531e-10,-7.99060028819052e-10,-5.36125030178739e-10,-1.10431671335899e-10,1.49664679571846e-11,1.79665218111695e-11,2.13711411376355e-11,-5.94879424844821e-11,-1.21145908937398e-10,3.54226842720495e-10,-1.44733956446208e-09,3.40751178490659e-09,0,0,2.06049588453147e-09,-3.82741195533125e-09,-8.65872605513292e-09,-4.98628431337903e-09,1.01680133463608e-09,2.8952182233753e-09,4.09396458116363e-09,4.10425927482348e-09,2.39046461728058e-09,1.03646032512737e-09,2.28320379881254e-10,-1.23294686106354e-11,1.09465601032876e-11,1.37745506080161e-10,2.21588143334118e-10,-5.38501646891549e-10,3.20143093398451e-09,-1.84153424101588e-08,0,0,-2.17257377591087e-08,-1.27122277875952e-09,2.17809632971883e-09,-4.42525190678539e-09,1.55320615766323e-09,7.2210643550937e-09,8.06243916191941e-09,8.46854247994525e-09,6.16132050264487e-09,3.44789269926415e-09,1.36237022570978e-09,2.57896885739994e-10,-1.38169935708649e-10,-4.58315234363195e-10,1.08140017871573e-10,-6.6557312739254e-10,-2.42599994453601e-09,4.64380728343885e-08,0,0,1.25628307464683e-08,-4.21567111912554e-08,-1.51184533861578e-08,-8.12634067522127e-10,-2.1712524321544e-09,9.89776899389358e-09,1.28051690780889e-08,1.29038879801071e-08,1.04020316676994e-08,6.75097218450113e-09,3.82613213927865e-09,1.91357711782921e-09,1.125056641324e-09,5.98472515528118e-10,-1.14458713683879e-09,2.24588659416981e-09,-1.75248577720484e-08,-5.55256357148631e-08,0,0,-6.37258273616932e-09,2.66462843228785e-08,-2.40115498629537e-08,3.87332197110231e-09,-3.62712383300483e-11,1.80249488883352e-09,4.29506209974094e-09,4.22188479287047e-09,3.88850885909559e-09,3.07508073474933e-09,2.15890833950145e-09,1.32607429927612e-09,5.49066062361213e-10,4.32866044041983e-10,-5.45665244264321e-10,-1.51005384385675e-09,1.10089947653215e-08,2.09362184178317e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive1102_field3":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-3.62136076938985e-10,-1.97903114797994e-10,-1.0277125757141e-10,-8.72876046093284e-11,-5.83324082025086e-11,-1.13020927897229e-10,-2.27159501217222e-10,-4.39849375300805e-10,-8.02949038157053e-10,-1.34538830004174e-09,-2.04816606653061e-09,-2.79952647803763e-09,-3.44113781202245e-09,-3.76702411721031e-09,-3.60399229002397e-09,-3.36060963780939e-09,-2.30623191907474e-09,-1.77571081576548e-09,0,0,-8.64091788149638e-10,3.91638303126039e-10,7.83024739188949e-10,8.69824856600316e-10,8.68588469334432e-10,8.00585881156921e-10,6.0911949728429e-10,1.61333338462832e-10,-7.01355848290911e-10,-2.08438744494037e-09,-3.92221339386942e-09,-5.89956608654892e-09,-7.48411824487584e-09,-8.30687412536531e-09,-7.82691759559619e-09,-6.56232702099005e-09,-4.86623143664857e-09,-2.22123345839129e-09,0,0,3.57765622628447e-10,4.24962527970423e-10,3.35634646389893e-10,3.34153872959275e-10,3.43424396103815e-10,3.78930963931431e-10,4.13598518150722e-10,3.54058572373975e-10,2.84695522451571e-11,-7.36561831264472e-10,-1.97606824437947e-09,-3.50688516274964e-09,-4.84059598913792e-09,-5.5872607133092e-09,-5.42389953029978e-09,-4.27976046804302e-09,-3.0333552497561e-09,-2.27912179971762e-09,0,0,-5.02988043588161e-10,-1.62073245594127e-10,-2.60521652869913e-11,-2.53910878033699e-11,-3.44155595230572e-11,-6.3182597190709e-11,-1.32411221401791e-10,-2.94487964311912e-10,-6.37441766562182e-10,-1.25599437390993e-09,-2.14356679680969e-09,-3.15938237612685e-09,-4.02847694780068e-09,-4.4484103902724e-09,-4.31398790735613e-09,-3.64442402027247e-09,-2.30663420702538e-09,-1.45605027605575e-09,0,0,-5.98886103874089e-10,-2.50881021602165e-10,-2.13159994884349e-10,-1.40701216787229e-10,-1.36298172202219e-10,-1.62700066097997e-10,-2.35792259247321e-10,-3.59850260278596e-10,-5.25332744038554e-10,-6.96946992107526e-10,-8.44135755799075e-10,-9.45855670035345e-10,-1.0073578702546e-09,-1.05516614545814e-09,-1.04967590894225e-09,-1.13435926296835e-09,-1.10868805897553e-09,-1.00844067474991e-09,0,0,-8.84905877761968e-10,-6.37829429069899e-10,-5.23839148254415e-10,-4.34228146680709e-10,-4.24772614988767e-10,-4.87866421130244e-10,-6.16835612530437e-10,-7.59095979758576e-10,-8.039536842864e-10,-6.06930428962587e-10,-9.00993418573031e-11,6.41267187860794e-10,1.33660229388831e-09,1.69054516409122e-09,1.56970024010115e-09,1.03511175267796e-09,2.87684834482387e-10,-4.59062411056078e-10,0,0,-1.19001099669722e-09,-1.05137936075312e-09,-1.0106919135398e-09,-9.07963249273139e-10,-8.97677778257952e-10,-9.53022040055731e-10,-1.05390261185979e-09,-1.09533149751822e-09,-9.14568439492563e-10,-3.49107615164435e-10,6.47242144043518e-10,1.90415980687413e-09,3.03405671917814e-09,3.61138764432779e-09,3.39559210481997e-09,2.49269666342011e-09,1.2376441148537e-09,1.98929194337171e-11,0,0,-1.5319329858878e-09,-1.67358562937137e-09,-1.83738479705584e-09,-1.8323980190313e-09,-1.84006663927478e-09,-1.8351179710394e-09,-1.78174855957708e-09,-1.57751473889742e-09,-1.09272039865384e-09,-2.37363514326239e-10,9.60847320040186e-10,2.30290282688616e-09,3.44917108004353e-09,4.03308608410707e-09,3.83864097109633e-09,2.97194757284341e-09,1.65070926133191e-09,2.89946936514604e-10,0,0,-1.85591067729012e-09,-2.4184598777336e-09,-2.99695766072239e-09,-3.25270943739293e-09,-3.30573957759596e-09,-3.12684712597516e-09,-2.72373787540648e-09,-2.07967650035944e-09,-1.21126695839544e-09,-1.55113716741592e-10,9.95353833456082e-10,2.08770176145348e-09,2.9228479631124e-09,3.33637054621891e-09,3.2008595185995e-09,2.59640675118002e-09,1.58281856116779e-09,3.78530103758509e-10,0,0,-2.11239704236553e-09,-3.16334535931602e-09,-4.28709145341786e-09,-4.93860672484593e-09,-5.0855727411235e-09,-4.63767186975175e-09,-3.73823901179978e-09,-2.55657782659795e-09,-1.30526629047832e-09,-1.51939805073458e-10,8.0412989868492e-10,1.51546238028031e-09,1.96567828140722e-09,2.16661317704577e-09,2.10556644352365e-09,1.81288185177748e-09,1.21489311926399e-09,3.16161140603448e-10,0,0,-2.21921575407233e-09,-3.63480071061386e-09,-5.23722356437437e-09,-6.25622736656534e-09,-6.48789250340127e-09,-5.80701325629563e-09,-4.44687638290303e-09,-2.8241402645997e-09,-1.32177716209579e-09,-1.82192121818294e-10,5.39854320471008e-10,9.2172202230039e-10,1.08563302810659e-09,1.13957406803682e-09,1.11941007880484e-09,1.03896868627672e-09,7.73002901689542e-10,1.64666659319793e-10,0,0,-2.12298456538043e-09,-3.58867565297814e-09,-5.30381962565732e-09,-6.47382396511966e-09,-6.73885225060614e-09,-5.99164982825518e-09,-4.50284968716631e-09,-2.77281191760764e-09,-1.2846849335013e-09,-2.79836297660527e-10,2.42919517940076e-10,4.36463763992662e-10,4.73687693527778e-10,4.72924080211586e-10,4.68463091560589e-10,4.702297036597e-10,3.71073846885547e-10,-4.42599644751119e-11,0,0,-1.78468755750073e-09,-2.91398639526158e-09,-4.2459057468404e-09,-5.15690815348027e-09,-5.36041630821755e-09,-4.77765341920652e-09,-3.60764825981468e-09,-2.25705705310393e-09,-1.10210983543687e-09,-3.54491218439375e-10,9.91364461175098e-12,1.29702942365995e-10,1.44186426519224e-10,1.36748918684547e-10,1.3075862515563e-10,1.2075835434307e-10,7.89521953105943e-11,-2.66099223318002e-10,0,0,-1.2664649987328e-09,-1.67473304851117e-09,-2.26741449551371e-09,-2.7282232634015e-09,-2.81090977234688e-09,-2.60626010370973e-09,-2.13578086204756e-09,-1.55221496731649e-09,-9.99671548782203e-10,-5.76740404285933e-10,-3.13107172551222e-10,-1.72524104851619e-10,-1.08474171320208e-10,-8.53409300239266e-11,-9.48994687265937e-11,-1.26686098176866e-10,-2.23311879016947e-10,-5.22236808727246e-10,0,0,-7.75194361677416e-10,-3.81872320620614e-10,2.32665802773094e-10,5.0488005835947e-10,5.6141549814272e-10,3.77510975082528e-10,2.37419701810866e-11,-3.23103867938409e-10,-5.21879266839784e-10,-5.48462674831465e-10,-4.56903826497749e-10,-3.44825629443649e-10,-2.67537180084077e-10,-2.41613863877551e-10,-2.66226029083489e-10,-3.64993559744279e-10,-4.12175809155661e-10,-5.81816504700206e-10,0,0,-4.86475400575319e-11,5.90355467537364e-10,1.42488487827713e-09,2.2138398720672e-09,2.32678315211776e-09,1.77902588929471e-09,8.66469499145663e-10,-1.15215902321035e-10,-7.89972977660785e-10,-1.06365433244709e-09,-1.02394115441442e-09,-8.48454404286502e-10,-6.86921320907009e-10,-6.05135551136544e-10,-6.13886722128766e-10,-7.17399930517893e-10,-9.02424373690618e-10,-1.6707093852374e-09,0,0,4.16803449410128e-10,2.21695518789807e-09,3.65950663041464e-09,4.69345943738413e-09,5.09692594359675e-09,4.41484727180978e-09,3.11555398275639e-09,1.53426341116817e-09,1.24826674746311e-10,-8.59305929887031e-10,-1.39261607156996e-09,-1.59990315123983e-09,-1.64205861517542e-09,-1.64580171036033e-09,-1.65728029593266e-09,-1.69276328520493e-09,-1.42832602710435e-09,-4.22875003546127e-10,0,0,1.09473304777103e-09,1.80079973050963e-09,2.56664872763861e-09,2.86054541027249e-09,3.00091438520383e-09,2.72338829550964e-09,2.17477563197491e-09,1.52884646402599e-09,9.3564428939087e-10,4.88314683447872e-10,1.98045690796612e-10,3.57195011006506e-11,-5.05103585485334e-11,-1.04990897446853e-10,-7.23311360970218e-11,-9.02156106290903e-11,-7.88606020357335e-11,2.53589213899779e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.61273208703776e-09,-1.48127955413769e-09,-1.04765235744314e-09,-9.75156022177354e-10,-8.845183857837e-10,-1.01190403230336e-09,-1.37336101834938e-09,-2.01002821260649e-09,-3.03141989175226e-09,-4.47687013985089e-09,-6.2616644026547e-09,-8.11277719871696e-09,-9.65133621060034e-09,-1.0440471659521e-08,-1.00583298336681e-08,-9.38194759832395e-09,-7.35780277949442e-09,-5.43267644791342e-09,0,0,-2.84239082720973e-09,2.74253068289926e-10,1.12649293226126e-09,1.42065909934834e-09,1.36214145347521e-09,1.18980568441032e-09,7.58567253859602e-10,-1.99637130816334e-10,-1.98578648673312e-09,-4.79654589201649e-09,-8.49106530961249e-09,-1.24279792781068e-08,-1.55102876158318e-08,-1.72281909890594e-08,-1.60597139768512e-08,-1.36149550070838e-08,-1.00192867375877e-08,-5.15356109117994e-09,0,0,1.05015557333285e-09,1.51548623355372e-09,9.93075444328953e-10,9.71989981518861e-10,1.02720720970517e-09,1.13688272380814e-09,1.28285906387485e-09,1.26515286975409e-09,7.33605637267017e-10,-6.60732697185097e-10,-2.98630409179939e-09,-5.9381097883022e-09,-8.42662655884653e-09,-9.96201241753227e-09,-9.70835597923017e-09,-7.46733305984955e-09,-5.44691921045823e-09,-4.33417840676313e-09,0,0,-8.26937611468476e-10,-6.51137039942848e-10,-9.48634773747405e-11,-1.56341634109927e-10,-1.8461105845472e-10,-2.60730121808241e-10,-4.30695296061745e-10,-7.87004270433345e-10,-1.50115846152829e-09,-2.74574125228437e-09,-4.47238196461855e-09,-6.46263815901167e-09,-8.11829213954809e-09,-8.85821288421616e-09,-8.62336057901142e-09,-7.29021822782003e-09,-4.28881373882966e-09,-2.56043641471558e-09,0,0,-1.1128448421298e-09,-2.95686687797802e-10,-3.7897390521534e-10,-1.98222028647582e-10,-1.94125700190415e-10,-2.26415587729754e-10,-3.36594390425481e-10,-5.28054959986135e-10,-7.77382425438463e-10,-1.03991973872759e-09,-1.23964195218253e-09,-1.36069955948384e-09,-1.45717745396058e-09,-1.54507187204425e-09,-1.50419414161633e-09,-1.89388956362578e-09,-2.06690755978508e-09,-1.86056728031169e-09,0,0,-1.6852300830199e-09,-1.27640717413785e-09,-1.02142172143339e-09,-8.69492354427325e-10,-8.51209140326843e-10,-9.79733502561576e-10,-1.23370055740836e-09,-1.50887522257143e-09,-1.56958079539003e-09,-1.13616349291274e-09,-8.30965230979098e-11,1.39237494480297e-09,2.79163420463703e-09,3.47180207125698e-09,3.27898690948493e-09,2.34316303627224e-09,8.56659918019089e-10,-7.36783494259564e-10,0,0,-2.25051923603267e-09,-2.0242104000527e-09,-1.97777504065652e-09,-1.77121837048013e-09,-1.7539694486779e-09,-1.85658041783e-09,-2.03424359616572e-09,-2.07829891358324e-09,-1.67153330993254e-09,-4.87958668187048e-10,1.54143442351508e-09,4.04900783320969e-09,6.29655197201079e-09,7.43979128226288e-09,6.95693120255197e-09,5.13568196634368e-09,2.69809833173164e-09,2.26925770167273e-10,0,0,-2.94590722391187e-09,-3.27200694861548e-09,-3.61232475269235e-09,-3.6187889327489e-09,-3.63410798602026e-09,-3.61577222305245e-09,-3.50275479111751e-09,-3.06852021100331e-09,-2.07239309607609e-09,-3.44054694199147e-10,2.06194881607294e-09,4.74512163623762e-09,7.01555660209239e-09,8.19102592177373e-09,7.82927688769804e-09,6.10181354456142e-09,3.47584285137918e-09,7.37144778374711e-10,0,0,-3.55507022494732e-09,-4.73084104630156e-09,-5.88258938728776e-09,-6.39514513483444e-09,-6.51849386102646e-09,-6.1427291910765e-09,-5.3218904977877e-09,-4.02610271333106e-09,-2.27580868135143e-09,-1.58071945715978e-10,2.14325924880377e-09,4.32921988909331e-09,5.99967425226454e-09,6.8092917390738e-09,6.52993882880437e-09,5.33633717977782e-09,3.32118352925534e-09,9.07298058830419e-10,0,0,-4.03682619728464e-09,-6.1887625629136e-09,-8.39993624548268e-09,-9.67965581797927e-09,-9.97614473817437e-09,-9.10943897653228e-09,-7.31936323909631e-09,-4.97080539592304e-09,-2.48837366337905e-09,-1.93545175180311e-10,1.71345307704299e-09,3.13374014990065e-09,4.03848209998096e-09,4.45196995621221e-09,4.31769281368833e-09,3.73804003884872e-09,2.54379644909238e-09,7.77246093362676e-10,0,0,-4.21966822083042e-09,-7.0770878759627e-09,-1.02006428930205e-08,-1.22122311972134e-08,-1.26384331135545e-08,-1.12849594959288e-08,-8.63160248885076e-09,-5.43739529030329e-09,-2.48088728045915e-09,-2.37797046995529e-10,1.18826727250568e-09,1.94255882960562e-09,2.25852385210548e-09,2.36458383107381e-09,2.32465326724051e-09,2.16779194566447e-09,1.63558066300985e-09,4.77663118667816e-10,0,0,-4.02203714901485e-09,-6.96504414816044e-09,-1.02248729502737e-08,-1.25292789171899e-08,-1.31053781854836e-08,-1.16522760224811e-08,-8.75345966464066e-09,-5.39211179982567e-09,-2.47115011446349e-09,-4.92944498465405e-10,5.34234301039102e-10,9.1558783228431e-10,9.86931489150303e-10,9.85046457399544e-10,9.74382855542393e-10,9.98394152735364e-10,7.88666512418719e-10,2.24126074920774e-11,0,0,-3.31285491255944e-09,-5.61950923361264e-09,-8.15609754972595e-09,-9.77463629470306e-09,-1.01146796212254e-08,-9.02446398400777e-09,-6.76543367957268e-09,-4.16921166595356e-09,-1.96153197495437e-09,-5.30447844688555e-10,1.49881021458802e-10,3.50731070900824e-10,3.56666684293477e-10,3.28644214209772e-10,3.1943806240819e-10,2.91754153054234e-10,2.60004631733108e-10,-3.92316134738092e-10,0,0,-2.24653985505751e-09,-2.97907563876772e-09,-4.26183249652386e-09,-5.33575730364847e-09,-5.45173163739059e-09,-5.08280205450829e-09,-4.21776550479729e-09,-3.09955781804821e-09,-2.03298218882667e-09,-1.21879140156939e-09,-6.9092216506744e-10,-4.03228861439108e-10,-2.64777958172299e-10,-2.07287032541324e-10,-2.28992713651886e-10,-2.36521117010497e-10,-5.65795978593021e-10,-9.11467229826959e-10,0,0,-1.47063980279135e-09,-5.90970716071828e-10,1.12315539605761e-09,1.73068645022433e-09,1.82607831998661e-09,1.51100635696975e-09,7.86323019510946e-10,6.85555946607623e-12,-4.74799156719925e-10,-6.47691957772434e-10,-5.75030321817467e-10,-4.34487492917439e-10,-3.38747340500828e-10,-3.1598610913173e-10,-3.72332342316109e-10,-6.12359409515943e-10,-3.92222429459068e-10,-1.13230006755396e-09,0,0,1.41926183991525e-10,9.95352001051155e-10,2.27459673866126e-09,3.87496452337051e-09,4.0338725510199e-09,2.86364223706849e-09,1.13718836073088e-09,-8.17103922903282e-10,-2.11474288700566e-09,-2.6163009507762e-09,-2.48261851916251e-09,-2.0736044660342e-09,-1.69651952256272e-09,-1.50214129110716e-09,-1.48140422268337e-09,-1.68635417062705e-09,-2.3875560134872e-09,-3.42375498434465e-09,0,0,1.91809083317103e-09,5.26579291059621e-09,8.40181794223657e-09,1.04380429804997e-08,1.14674220857382e-08,9.99946025980672e-09,7.43203797106323e-09,4.20157248981285e-09,1.27509600633331e-09,-8.20559060931319e-10,-2.01621891441364e-09,-2.54156883281443e-09,-2.70618237668626e-09,-2.76208005901614e-09,-2.83791707371382e-09,-2.76401916847144e-09,-2.13971867433315e-09,5.39295226029802e-10,0,0,4.21142315842837e-09,6.44345414636733e-09,7.95207872989457e-09,8.71890226577865e-09,9.06152322321764e-09,8.3568381789289e-09,6.98414276575033e-09,5.32300078516399e-09,3.73363594535987e-09,2.4596614543832e-09,1.56883452003474e-09,1.02326790310533e-09,7.12947253643473e-10,5.8527448323193e-10,6.82248287079101e-10,6.98498400967793e-10,9.70189260826987e-10,1.41461729644615e-09,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-3.49223187751167e-09,-3.56269700580213e-09,-2.60269409219108e-09,-2.44561972929217e-09,-2.26648223651946e-09,-2.48797760757691e-09,-3.18746969859207e-09,-4.39689536911517e-09,-6.28730458870345e-09,-8.88591405523952e-09,-1.20252236498711e-08,-1.52094310380693e-08,-1.78296004797846e-08,-1.91938338686083e-08,-1.85269666121867e-08,-1.73107313330024e-08,-1.43694990283531e-08,-1.03784818526728e-08,0,0,-5.57635691320722e-09,-2.13168463160692e-10,1.1357070233432e-09,1.72591598100316e-09,1.57646295363358e-09,1.27463367112591e-09,5.6867543608436e-10,-9.46889313934731e-10,-3.70284215458448e-09,-7.97327831610475e-09,-1.35415764611767e-08,-1.94278086843441e-08,-2.39377473642985e-08,-2.65977001745909e-08,-2.45992119498703e-08,-2.10178406387835e-08,-1.54911691567458e-08,-8.58822320992486e-09,0,0,1.95844037925184e-09,3.07505686001601e-09,1.87951148201428e-09,1.82748436440043e-09,1.94962034497324e-09,2.16093885144294e-09,2.46981134388792e-09,2.56745585376129e-09,1.91574726902595e-09,-8.20623966507837e-13,-3.27478967684676e-09,-7.5324657075753e-09,-1.10303273118899e-08,-1.33481037021401e-08,-1.30852515931896e-08,-9.74818426218906e-09,-7.35634551964423e-09,-6.20837391662655e-09,0,0,-9.86315441469182e-10,-1.3292739372653e-09,-1.84797120380113e-10,-3.47949554596333e-10,-3.99765835744152e-10,-5.34568699934299e-10,-8.19156621603804e-10,-1.38153224317149e-09,-2.46164670621607e-09,-4.31302419513005e-09,-6.8206319252957e-09,-9.71270481185737e-09,-1.2079502827441e-08,-1.30554299109616e-08,-1.27679328887012e-08,-1.07735902651524e-08,-5.97074071271003e-09,-3.39647788766152e-09,0,0,-1.55276461469919e-09,-2.10620556386305e-10,-5.01517794555798e-10,-2.02799404861208e-10,-1.99251491223122e-10,-2.25474458309342e-10,-3.46586370005868e-10,-5.6796696882653e-10,-8.49248563331232e-10,-1.1361079649487e-09,-1.32581874824982e-09,-1.40852254517927e-09,-1.51436001498615e-09,-1.62136114315566e-09,-1.5477158082974e-09,-2.34906597365273e-09,-2.84739060731843e-09,-2.5459708052101e-09,0,0,-2.38617088999781e-09,-1.89783785205889e-09,-1.48468111833754e-09,-1.29478848941606e-09,-1.2637309832942e-09,-1.45944891769417e-09,-1.83010861939432e-09,-2.21684925347552e-09,-2.2627379014727e-09,-1.55751963398807e-09,6.19932166378415e-11,2.28898040845172e-09,4.38463732276502e-09,5.38159537618441e-09,5.14108651625221e-09,3.86369031142871e-09,1.63844664787061e-09,-8.20827786919596e-10,0,0,-3.19507883527478e-09,-2.93538975334996e-09,-2.88730697219285e-09,-2.59709590019359e-09,-2.56996206069255e-09,-2.71122928489836e-09,-2.94926945019543e-09,-2.96945503455909e-09,-2.29714158430241e-09,-4.63744210400087e-10,2.6109957410441e-09,6.35975719558251e-09,9.69828592022883e-09,1.13847117976773e-08,1.06284068849657e-08,7.89634938141353e-09,4.33204946095227e-09,6.20704445411122e-10,0,0,-4.23827396757736e-09,-4.79942124929786e-09,-5.30549251233399e-09,-5.34523503134617e-09,-5.36558555143344e-09,-5.33462452035193e-09,-5.1415125055461e-09,-4.46253523283642e-09,-2.9363810661629e-09,-3.23033858639114e-10,3.28773788604261e-09,7.29358157514416e-09,1.06727945415049e-08,1.24275585192649e-08,1.19115473413785e-08,9.32703904214295e-09,5.44275669144054e-09,1.34571087581797e-09,0,0,-5.11475043870051e-09,-6.93518711848965e-09,-8.62939683413141e-09,-9.42819112742167e-09,-9.60356517473201e-09,-9.03853400897608e-09,-7.79483270934341e-09,-5.83807064755714e-09,-3.20871787078655e-09,-3.64337472118863e-11,3.40657666836188e-09,6.67558442109645e-09,9.16813060201986e-09,1.03685636707926e-08,9.95096472500969e-09,8.15374804669262e-09,5.18531131268702e-09,1.58072978880509e-09,0,0,-5.80294215334121e-09,-9.07240609927561e-09,-1.22964684294433e-08,-1.42138925691257e-08,-1.46552720243621e-08,-1.33753148854418e-08,-1.0721762552779e-08,-7.23271066088912e-09,-3.54386699409777e-09,-1.32675313207293e-10,2.70920505899419e-09,4.8329133399723e-09,6.19043712348461e-09,6.80758667628396e-09,6.61494446938163e-09,5.72876576439997e-09,3.97070340815399e-09,1.36663302839725e-09,0,0,-6.044399503666e-09,-1.03212949722786e-08,-1.48710575615774e-08,-1.78408450988757e-08,-1.84445374264393e-08,-1.64503485764799e-08,-1.25508840163569e-08,-7.85467772509746e-09,-3.49922761411929e-09,-1.89952656914682e-10,1.91754854409074e-09,3.03030412434398e-09,3.49681687970343e-09,3.64717689543066e-09,3.59361223261502e-09,3.35102975219887e-09,2.58028333678504e-09,9.08181324174615e-10,0,0,-5.74249370539054e-09,-1.01109463921304e-08,-1.47764628635676e-08,-1.81664593780866e-08,-1.90457130184083e-08,-1.69414512272667e-08,-1.27231586280239e-08,-7.81917423552005e-09,-3.53970837964882e-09,-6.31446163968867e-10,8.79626592691954e-10,1.43520017446178e-09,1.5345973276905e-09,1.52897586231503e-09,1.51820232472843e-09,1.56306402502728e-09,1.25914247350548e-09,1.88690972758067e-10,0,0,-4.64320145416922e-09,-8.0887304122496e-09,-1.17211052202184e-08,-1.3923232694746e-08,-1.43635275873616e-08,-1.28122087875429e-08,-9.55587621703809e-09,-5.81505741841667e-09,-2.63468203199828e-09,-5.80213885476269e-10,3.77063002804318e-10,6.34393943727302e-10,6.15762353591416e-10,5.56550187808432e-10,5.49683704118621e-10,4.97947459154468e-10,5.18816259156899e-10,-4.17109058116244e-10,0,0,-2.99758942036876e-09,-3.98181346315204e-09,-5.97091251451884e-09,-7.69931369465942e-09,-7.83433147246628e-09,-7.32573358140814e-09,-6.13355542551471e-09,-4.54234260772837e-09,-3.02069428342719e-09,-1.85170724431871e-09,-1.08152435270519e-09,-6.54383279146724e-10,-4.3920529321073e-10,-3.4389872049937e-10,-3.75531176428001e-10,-3.31048347291491e-10,-9.58000646500342e-10,-1.17971343290702e-09,0,0,-2.04688300571676e-09,-6.41753531704834e-10,2.44591879844412e-09,3.45374862561253e-09,3.55128145015729e-09,3.14986999987104e-09,2.03934515477764e-09,7.81649428623198e-10,-4.33683299264072e-11,-4.46008358951629e-10,-4.61934221653704e-10,-3.52098186060723e-10,-2.7714395078585e-10,-2.7776323809922e-10,-3.67924704710539e-10,-7.71082245753785e-10,-8.48436117725788e-11,-1.65842869468545e-09,0,0,5.61585765019005e-10,1.30824679177957e-09,2.69935672254651e-09,5.17672647080003e-09,5.30984625649702e-09,3.48501642485333e-09,1.02085268699952e-09,-1.88511249723638e-09,-3.76564057715969e-09,-4.47053580736517e-09,-4.21952956317266e-09,-3.54218466628515e-09,-2.91986912648785e-09,-2.59373572151045e-09,-2.51861188071015e-09,-2.81956608661328e-09,-4.26419208768169e-09,-5.16483187196443e-09,0,0,4.24497823734965e-09,9.10461136992875e-09,1.40095522257559e-08,1.70432198916493e-08,1.88558305249061e-08,1.65309981170348e-08,1.27105225209071e-08,7.77333928595099e-09,3.23625925020965e-09,-7.37125847521915e-11,-2.03616801882162e-09,-2.9703978956599e-09,-3.31679248016499e-09,-3.46232947007792e-09,-3.63526851139947e-09,-3.33836766839793e-09,-2.29742432409992e-09,2.4863422258107e-09,0,0,8.73878075378154e-09,1.31328264162071e-08,1.53863187972045e-08,1.67249196700685e-08,1.73362274008334e-08,1.60854710990587e-08,1.36874757251139e-08,1.07567189379022e-08,7.87973901348792e-09,5.51109829526251e-09,3.7966457585323e-09,2.70998882792947e-09,2.07910938443316e-09,1.8587066011984e-09,2.04466807790037e-09,2.12980554165699e-09,2.86139675444456e-09,3.22136417680403e-09,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-5.88777802560659e-09,-6.2517510800243e-09,-4.63758106868745e-09,-4.37259028380941e-09,-4.09310213696601e-09,-4.41328653603701e-09,-5.52907153442015e-09,-7.43165907563058e-09,-1.03548981863789e-08,-1.43128759356949e-08,-1.90187020516733e-08,-2.37438889603034e-08,-2.75913629561522e-08,-2.96068952917032e-08,-2.86280153145929e-08,-2.67748828833359e-08,-2.29401022732088e-08,-1.63821747511408e-08,0,0,-8.9312394743214e-09,-9.87492595710182e-10,8.81416657298675e-10,1.85158817879433e-09,1.57664572894908e-09,1.1266305524701e-09,1.17336325904808e-10,-1.99287190414311e-09,-5.75939686576174e-09,-1.15253260300496e-08,-1.89909247091387e-08,-2.68262949232423e-08,-3.2731673434862e-08,-3.63655202998164e-08,-3.34164761776318e-08,-2.87496388208889e-08,-2.11798491372324e-08,-1.24763345938485e-08,0,0,3.0704200578406e-09,5.02096290865098e-09,2.95868962740114e-09,2.86244586762011e-09,3.07180640919068e-09,3.40661907231586e-09,3.92337401781216e-09,4.19522208535327e-09,3.49965614725702e-09,1.15563059316764e-09,-2.9484013463026e-09,-8.4033986976661e-09,-1.27822389872438e-08,-1.58803629792047e-08,-1.56712880737299e-08,-1.12622242030859e-08,-8.83566550460854e-09,-7.95092806424842e-09,0,0,-1.00673169994831e-09,-2.17016032566345e-09,-2.88637399081619e-10,-5.90938931939739e-10,-6.71703223894616e-10,-8.73684274281717e-10,-1.28438049811906e-09,-2.06053072639471e-09,-3.50605065053102e-09,-5.94640341653374e-09,-9.18559326084383e-09,-1.29271851604565e-08,-1.59396375075666e-08,-1.70808343214305e-08,-1.67794462653749e-08,-1.41124981468254e-08,-7.38098775738165e-09,-4.00610145812088e-09,0,0,-1.91678108252585e-09,-4.54893974835775e-12,-5.86298889385697e-10,-1.5710751512499e-10,-1.54300898484376e-10,-1.63945083394312e-10,-2.7306391940725e-10,-4.8899780920918e-10,-7.50468550971461e-10,-1.00601750855376e-09,-1.12160450175425e-09,-1.10963665319457e-09,-1.20190919870039e-09,-1.3081204877648e-09,-1.21159649946836e-09,-2.52054368549024e-09,-3.47566152260481e-09,-3.07315111710433e-09,0,0,-3.00671044929784e-09,-2.51243050397283e-09,-1.91585090364153e-09,-1.71664277651402e-09,-1.66804718938902e-09,-1.93262154934625e-09,-2.41209121791827e-09,-2.89678197081659e-09,-2.89831726898948e-09,-1.8847596958394e-09,3.26079199690782e-10,3.31992172014398e-09,6.1115794697901e-09,7.41928348555025e-09,7.15030881070517e-09,5.5960470748204e-09,2.62478654121007e-09,-7.16750517834111e-10,0,0,-4.03185298207331e-09,-3.7962584835067e-09,-3.74713407690557e-09,-3.39095735781979e-09,-3.34821839573686e-09,-3.52640347427686e-09,-3.80534428459149e-09,-3.7746473129282e-09,-2.80328110592577e-09,-2.83727984434419e-10,3.85825806287525e-09,8.84339622689467e-09,1.32583309593539e-08,1.54764566914479e-08,1.4429016244272e-08,1.07764379311155e-08,6.13505209811274e-09,1.21078292563504e-09,0,0,-5.43277950228316e-09,-6.27318961309863e-09,-6.92520818875835e-09,-7.03366184800723e-09,-7.04633698502345e-09,-7.00179795868033e-09,-6.72050449039983e-09,-5.77741823476464e-09,-3.70114202554027e-09,-1.88883642296592e-10,4.63155668209052e-09,9.95589618565781e-09,1.44276934412575e-08,1.67580765567731e-08,1.61151031642004e-08,1.26558315218597e-08,7.55005351143278e-09,2.12651490508677e-09,0,0,-6.56285772166296e-09,-9.05798544628736e-09,-1.12572244316643e-08,-1.23704977092146e-08,-1.25945972414731e-08,-1.18355822512843e-08,-1.01577563789149e-08,-7.5377480685399e-09,-4.02228116879759e-09,2.04531110355584e-10,4.78627589400242e-09,9.13422856124206e-09,1.24488186233366e-08,1.4020492945082e-08,1.34778913273947e-08,1.10581444201149e-08,7.1784481830132e-09,2.40438491200312e-09,0,0,-7.45169826716128e-09,-1.1838313741444e-08,-1.60190643934752e-08,-1.85845372522691e-08,-1.91535992102214e-08,-1.74892303989109e-08,-1.39799039730758e-08,-9.36772497990338e-09,-4.49225480624199e-09,2.1051846419102e-11,3.7897219669845e-09,6.61076756534344e-09,8.42399384728268e-09,9.24426338580718e-09,9.00102738730255e-09,7.78415826724839e-09,5.50166953782219e-09,2.08336902069907e-09,0,0,-7.74422952875193e-09,-1.33979305677541e-08,-1.92910442900643e-08,-2.32173231533186e-08,-2.39635610408977e-08,-2.1345242767157e-08,-1.62524641306663e-08,-1.01000279037727e-08,-4.38836422444145e-09,-4.32485180944292e-11,2.72899567955713e-09,4.19060430238532e-09,4.80069225466216e-09,4.98778537291004e-09,4.93406080841586e-09,4.58581211273846e-09,3.61058898649379e-09,1.45218404986779e-09,0,0,-7.33438218187951e-09,-1.30612680293282e-08,-1.90105632830214e-08,-2.34517471154761e-08,-2.46483242406525e-08,-2.1928963245859e-08,-1.64604533549047e-08,-1.009425143196e-08,-4.50998977438199e-09,-7.04453518234783e-10,1.2717150823695e-09,1.99183428141351e-09,2.1164239949997e-09,2.1017024160744e-09,2.0981646616236e-09,2.16138294818527e-09,1.78497934053073e-09,4.38270329715024e-10,0,0,-5.81609950111231e-09,-1.035266106973e-08,-1.49990387089415e-08,-1.76601149501869e-08,-1.81669098947049e-08,-1.61988023763726e-08,-1.20190056771838e-08,-7.21477988265676e-09,-3.13668425345088e-09,-5.07716322759327e-10,6.919431387067e-10,9.79478301459396e-10,9.21742282838327e-10,8.20624150351172e-10,8.23879193527376e-10,7.34720683164087e-10,8.57039829975093e-10,-3.43538439904213e-10,0,0,-3.55708889528745e-09,-4.70273748675992e-09,-7.43253061936455e-09,-9.85249117873542e-09,-1.00025206007706e-08,-9.3736724304893e-09,-7.91544698331316e-09,-5.90271753402531e-09,-3.97135920566488e-09,-2.48426022364632e-09,-1.48672101406222e-09,-9.26037713886675e-10,-6.32257738703776e-10,-4.96291363534267e-10,-5.36091873271871e-10,-4.10605113544094e-10,-1.39839378738631e-09,-1.35027974874091e-09,0,0,-2.50684830626773e-09,-5.47042216020384e-10,4.15536915429631e-09,5.63600573556077e-09,5.71041486112203e-09,5.25506562510064e-09,3.74351948524946e-09,1.95691201726753e-09,7.30074503340597e-10,2.3739875852346e-11,-1.47612728603706e-10,-1.18647916993127e-10,-9.85905608808734e-11,-1.39840644699217e-10,-2.66599773978532e-10,-8.54770074797561e-10,4.74697791763102e-10,-2.15585247462452e-09,0,0,1.21124044567186e-09,1.56863347845677e-09,2.80133164344033e-09,6.18752289710019e-09,6.23834330609681e-09,3.73325783369096e-09,5.91266896250477e-10,-3.24412197118323e-09,-5.67639363900672e-09,-6.56692737054803e-09,-6.17843439221771e-09,-5.21087137787799e-09,-4.31763515754067e-09,-3.84465242760995e-09,-3.69293552143319e-09,-4.08649941237652e-09,-6.45510875076447e-09,-6.9064321465063e-09,0,0,7.30518584128474e-09,1.35675032128201e-08,2.03879001159593e-08,2.44087626553838e-08,2.7132436916331e-08,2.38961997450002e-08,1.88148252119202e-08,1.21090977074866e-08,5.87337584205309e-09,1.25286128825848e-09,-1.56752464432545e-09,-2.98378801848325e-09,-3.56467027794325e-09,-3.82762959571564e-09,-4.13029086711178e-09,-3.50854649118212e-09,-2.00610871174511e-09,5.2490616399234e-09,0,0,1.44287829575342e-08,2.14593742736785e-08,2.44804131861187e-08,2.64785239101304e-08,2.73918678333626e-08,2.55098123608378e-08,2.19255401144049e-08,1.750143161326e-08,1.31065095124763e-08,9.4222574120151e-09,6.70842036862632e-09,4.95256531945364e-09,3.91913646204986e-09,3.60060191174407e-09,3.8872098894289e-09,4.07091312806437e-09,5.40147033448441e-09,5.56047184113266e-09,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-8.65828444806711e-09,-9.37987690957694e-09,-7.01871477358564e-09,-6.62762273229133e-09,-6.23344923177426e-09,-6.6708365535664e-09,-8.25114338074446e-09,-1.09313996639587e-08,-1.50115000380056e-08,-2.04734477089478e-08,-2.69132282666312e-08,-3.33189966691854e-08,-3.85146603795969e-08,-4.12628201098854e-08,-3.99111361515192e-08,-3.73818847180684e-08,-3.2648279077629e-08,-2.31295038087957e-08,0,0,-1.26901810428974e-08,-1.94472287156224e-09,4.39135067562572e-10,1.85800582665079e-09,1.43574816362044e-09,8.26098686797811e-10,-5.05711718741868e-10,-3.2367470206025e-09,-8.04079524775845e-09,-1.53225233386179e-08,-2.46932298664203e-08,-3.44604437150428e-08,-4.17132097572307e-08,-4.63291507057919e-08,-4.23527561496776e-08,-3.66389621740936e-08,-2.70203782622379e-08,-1.66666398354699e-08,0,0,4.32083420346578e-09,7.23553598294265e-09,4.17236440360013e-09,4.01861999462267e-09,4.32777773614416e-09,4.80042912255901e-09,5.55596241095469e-09,6.04847242184843e-09,5.36627942561731e-09,2.67309669133119e-09,-2.16268561488117e-09,-8.71708648613466e-09,-1.3875551292357e-08,-1.7735678528973e-08,-1.76451393606704e-08,-1.21638265807092e-08,-9.96648880866045e-09,-9.58886119128673e-09,0,0,-9.05745329950755e-10,-3.09794391698338e-09,-3.94993997213831e-10,-8.58681802848933e-10,-9.7042360657938e-10,-1.24455458940189e-09,-1.78528463830369e-09,-2.77507110227074e-09,-4.5741107962508e-09,-7.5785488504892e-09,-1.15004627954516e-08,-1.60329663646987e-08,-1.96334507137655e-08,-2.08758000795989e-08,-2.06006659218166e-08,-1.72581163905689e-08,-8.55082507413094e-09,-4.44142817146848e-09,0,0,-2.21646650303319e-09,2.79385660103999e-10,-6.38454454714961e-10,-7.97223478504683e-11,-7.62794065794014e-11,-6.25713310289487e-11,-1.42424094485921e-10,-3.27178680987037e-10,-5.3152852493127e-10,-7.08673762817902e-10,-7.02846760030115e-10,-5.51137004242439e-10,-6.11956763655882e-10,-6.96238368119863e-10,-5.91541613223623e-10,-2.45712306111526e-09,-3.94653218435923e-09,-3.45018332823684e-09,0,0,-3.54524638019856e-09,-3.11031951111246e-09,-2.31468925784655e-09,-2.12813793862016e-09,-2.05690140967796e-09,-2.3916470675679e-09,-2.97120681345578e-09,-3.53608718080158e-09,-3.46643246997003e-09,-2.11237095526134e-09,7.15528344851118e-10,4.48686135419939e-09,7.96899893443482e-09,9.58504477815271e-09,9.29730039465205e-09,7.49677037752975e-09,3.77049552251667e-09,-4.37877466179847e-10,0,0,-4.77868912729159e-09,-4.61508473428269e-09,-4.55699640310456e-09,-4.15858292506337e-09,-4.09404649971929e-09,-4.30461260236837e-09,-4.6112627573104e-09,-4.50926118434973e-09,-3.20982649662424e-09,2.03861294814707e-11,5.24084911392432e-09,1.14576196809367e-08,1.69312488598845e-08,1.96663568421294e-08,1.83296523433708e-08,1.37589112654208e-08,8.07319094110255e-09,1.97639133293396e-09,0,0,-6.53572709949707e-09,-7.69638047657319e-09,-8.47369475896761e-09,-8.67899848290029e-09,-8.67631390744621e-09,-8.62077175738947e-09,-8.23361028813855e-09,-7.01402600917917e-09,-4.37143911852875e-09,4.86713235772536e-11,6.07872379474255e-09,1.27122333072693e-08,1.82699359270378e-08,2.11655620548526e-08,2.04086143645116e-08,1.60630074124968e-08,9.7723393144817e-09,3.0655047700192e-09,0,0,-7.91528928238109e-09,-1.11004165651808e-08,-1.37705707748104e-08,-1.52349637100354e-08,-1.54862377451898e-08,-1.45418091483074e-08,-1.24228514828471e-08,-9.13170499537121e-09,-4.73173699362483e-09,5.43752112933374e-10,6.25738176086851e-09,1.16793302234105e-08,1.58110710846407e-08,1.77494061392529e-08,1.70940709904832e-08,1.40232454195031e-08,9.27634476087914e-09,3.36360274239163e-09,0,0,-9.00196930816646e-09,-1.44918899415304e-08,-1.95686631498471e-08,-2.28052462987878e-08,-2.34907914236796e-08,-2.14469541924791e-08,-1.70979014045164e-08,-1.13802117833517e-08,-5.33743107117461e-09,2.57786249222326e-10,4.94114522889243e-09,8.4558186927894e-09,1.07263392165992e-08,1.17400112603074e-08,1.14654352706793e-08,9.88787417346842e-09,7.11982095135166e-09,2.91146642565758e-09,0,0,-9.3420675298506e-09,-1.63144636573815e-08,-2.34808646471126e-08,-2.83493218652646e-08,-2.92221842329671e-08,-2.60054071050302e-08,-1.97513914327804e-08,-1.2192582310188e-08,-5.16630308573703e-09,1.84283654990384e-10,3.60458446650879e-09,5.40450336508059e-09,6.1584337744931e-09,6.37394926529891e-09,6.3307761573894e-09,5.85786904841767e-09,4.7151139157745e-09,2.0898982027589e-09,0,0,-8.82018685162262e-09,-1.5820306839802e-08,-2.29606580922609e-08,-2.84162247754072e-08,-2.9917715849536e-08,-2.6623185896875e-08,-1.99726369187735e-08,-1.22117962670764e-08,-5.38021661421385e-09,-7.12536357002608e-10,1.70990005166584e-09,2.58300444303409e-09,2.72803480897893e-09,2.69978002987145e-09,2.71241146352614e-09,2.78464264800571e-09,2.36224345322393e-09,7.64980558800422e-10,0,0,-6.86223287647757e-09,-1.24136885745291e-08,-1.80034400728004e-08,-2.10403232781291e-08,-2.15945502462147e-08,-1.92409328968793e-08,-1.42095946425556e-08,-8.41696997612466e-09,-3.50293636002653e-09,-3.43337078485399e-10,1.06986072970581e-09,1.36851376343247e-09,1.26084081943339e-09,1.10928059733216e-09,1.12923058458196e-09,9.94374630317613e-10,1.25635806089665e-09,-1.96076952118034e-10,0,0,-3.9615012680827e-09,-5.19526212605205e-09,-8.66191239847765e-09,-1.17687627530031e-08,-1.19365963617429e-08,-1.12021332046557e-08,-9.53350635389444e-09,-7.14858691391022e-09,-4.8564996428021e-09,-3.08617355736429e-09,-1.88276515132706e-09,-1.19878808673374e-09,-8.2808186734431e-10,-6.51416960054671e-10,-6.95896111882228e-10,-4.76023749506772e-10,-1.8518213565241e-09,-1.43352033300687e-09,0,0,-2.84207069387083e-09,-3.21783619166254e-10,6.1393189867894e-09,8.15207430123081e-09,8.17222319750492e-09,7.69623967716246e-09,5.77062439983777e-09,3.42073338042367e-09,1.74729829838104e-09,6.80790052186646e-10,3.06119542615174e-10,2.16427954693221e-10,1.57235541341311e-10,6.30756653325969e-11,-1.00415705804943e-10,-8.82533282054735e-10,1.20198171533066e-09,-2.62842330123926e-09,0,0,2.07018006023746e-09,1.82116128836827e-09,2.68402029803693e-09,7.03041144708988e-09,6.94239681806499e-09,3.74456381785874e-09,-3.01012442289557e-11,-4.77313305396661e-09,-7.73825924482286e-09,-8.80336148968618e-09,-8.27094525982042e-09,-6.99819693858371e-09,-5.82074931718162e-09,-5.193308737263e-09,-4.94911270641954e-09,-5.43526631142706e-09,-8.85041333558401e-09,-8.60758514507401e-09,0,0,1.09050708975305e-08,1.85319603660152e-08,2.73072564202161e-08,3.23061259841722e-08,3.60277443027664e-08,3.18543247471343e-08,2.5519243493019e-08,1.70127085255709e-08,9.01468386494717e-09,3.01138082545661e-09,-7.36660703137199e-10,-2.69370031081125e-09,-3.54653246320309e-09,-3.94744567117088e-09,-4.4011591346739e-09,-3.3676452594992e-09,-1.39164001101401e-09,8.58054137770996e-09,0,0,2.09505805064461e-08,3.09892331280316e-08,3.48221967008575e-08,3.75126927712367e-08,3.87905471409042e-08,3.61909834831343e-08,3.12876150279587e-08,2.52152906841013e-08,1.9121012757168e-08,1.39633250041815e-08,1.01168643748774e-08,7.60051965602142e-09,6.11210595102391e-09,5.6780005486761e-09,6.07844725629943e-09,6.38275696530832e-09,8.41877195550562e-09,8.28838287760529e-09,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.16994881742633e-08,-1.27995144490236e-08,-9.62853928632079e-09,-9.10378368262097e-09,-8.59443676199482e-09,-9.14561241958174e-09,-1.12329957583164e-08,-1.47522017432611e-08,-2.00693540780554e-08,-2.71428117297829e-08,-3.54236790594591e-08,-4.36266893165144e-08,-5.02461677436109e-08,-5.37655112833131e-08,-5.20262777452952e-08,-4.8776764956758e-08,-4.31385104460898e-08,-3.03876968862381e-08,0,0,-1.67349496052877e-08,-3.02699950005101e-09,-1.35278920453979e-10,1.7832751345489e-09,1.19468646935142e-09,4.1756895305123e-10,-1.25066651539729e-09,-4.61843950095695e-09,-1.04785276049261e-08,-1.92917849528531e-08,-3.05772048025211e-08,-4.22740588300832e-08,-5.08626177102804e-08,-5.64669038525454e-08,-5.14060385603792e-08,-4.46741099164106e-08,-3.29493719832347e-08,-2.10891038869092e-08,0,0,5.69502687891627e-09,9.65059834556453e-09,5.50477540125193e-09,5.28216557082495e-09,5.70141521893666e-09,6.32519102489729e-09,7.34568540258339e-09,8.09118034230789e-09,7.46969158956621e-09,4.48913274459861e-09,-9.95868491687249e-10,-8.56625567176245e-09,-1.44265434662142e-08,-1.90379247072524e-08,-1.91162845024834e-08,-1.2577526035614e-08,-1.08206931876908e-08,-1.11555367513746e-08,0,0,-7.08485403105018e-10,-4.09093594426384e-09,-5.02294264862106e-10,-1.14779072907377e-09,-1.29398814709892e-09,-1.64398305490831e-09,-2.31716757975678e-09,-3.51949433862582e-09,-5.66499055718488e-09,-9.21711537117086e-09,-1.3791647527283e-08,-1.90777594943591e-08,-2.32235784235999e-08,-2.45234093941683e-08,-2.42935951844631e-08,-2.02591695563943e-08,-9.52803712645449e-09,-4.73772516091132e-09,0,0,-2.45643460375933e-09,6.32955294381583e-10,-6.62415506081419e-10,2.82641311203372e-11,3.33945345672286e-11,7.62143226294407e-11,4.05022652891714e-11,-8.95888800280492e-11,-2.0119263502708e-10,-2.56332542940136e-10,-7.89884535657927e-11,2.55390858197669e-10,2.50118174710432e-10,2.04387468776814e-10,2.92687649702976e-10,-2.17837213769946e-09,-4.28016819984303e-09,-3.69706408996209e-09,0,0,-4.01949271388976e-09,-3.70100015639734e-09,-2.6901705436069e-09,-2.5369338381625e-09,-2.43883003743049e-09,-2.84472635501569e-09,-3.51754452023587e-09,-4.1501660093779e-09,-3.98422249106386e-09,-2.25819938018056e-09,1.21563448814526e-09,5.78481795703834e-09,9.96092106694924e-09,1.18923044810824e-08,1.1596279784589e-08,9.57141657198308e-09,5.07843711164687e-09,-1.61968902919239e-12,0,0,-5.45010229055414e-09,-5.40349159781265e-09,-5.33279028573269e-09,-4.90852541598852e-09,-4.81605596689572e-09,-5.05926040400285e-09,-5.37973593353242e-09,-5.1871460229902e-09,-3.5308201736705e-09,4.44035679692362e-10,6.76824245807967e-09,1.42254997328242e-08,2.07537648625265e-08,2.39975759725489e-08,2.23659722278238e-08,1.68672979038488e-08,1.0157170688886e-08,2.90778715110313e-09,0,0,-7.56915113075218e-09,-9.08875943841082e-09,-9.97178191187742e-09,-1.0303485111629e-08,-1.02738017477086e-08,-1.02077900875879e-08,-9.70870876853209e-09,-8.19742872700366e-09,-4.96915588931899e-09,3.80353561710969e-10,7.63411361704317e-09,1.55809825336802e-08,2.22192121999418e-08,2.5678327776955e-08,2.48249744402491e-08,1.95736721198706e-08,1.21247112689415e-08,4.15510262391338e-09,0,0,-9.19605719630723e-09,-1.3093885419015e-08,-1.62050081647281e-08,-1.80445639319596e-08,-1.83180666060134e-08,-1.71867587021052e-08,-1.46186648177812e-08,-1.0652535688058e-08,-5.35622335121424e-09,9.7811101027363e-10,7.8315484377958e-09,1.43282804210016e-08,1.92784344572456e-08,2.15693554450726e-08,2.08153214311251e-08,1.70716580861448e-08,1.14904443291059e-08,4.4528123967796e-09,0,0,-1.04835656978058e-08,-1.70709681521282e-08,-2.30031730442329e-08,-2.6925047607816e-08,-2.77102958125521e-08,-2.53081140251005e-08,-2.01240271748029e-08,-1.33102112014818e-08,-6.10499704724996e-09,5.71535193250291e-10,6.17000803895551e-09,1.03758825476428e-08,1.31054457519959e-08,1.43099654056563e-08,1.40125984126557e-08,1.20525444842064e-08,8.83290770066154e-09,3.84539309610964e-09,0,0,-1.08700373618572e-08,-1.91237565305568e-08,-2.75056202440159e-08,-3.33197124838124e-08,-3.42960234575715e-08,-3.04921900004535e-08,-2.31100529216457e-08,-1.4172265593171e-08,-5.85342673276748e-09,4.90581985071294e-10,4.55034251370016e-09,6.68172187511908e-09,7.57408400714888e-09,7.81096266541606e-09,7.79076860870729e-09,7.17476462700779e-09,5.89708844123123e-09,2.81522335051115e-09,0,0,-1.02308074460886e-08,-1.84447066075863e-08,-2.67060365001347e-08,-3.31512778736995e-08,-3.49610350764178e-08,-3.1118094319463e-08,-2.33307549407847e-08,-1.42234590125587e-08,-6.17645119372616e-09,-6.65024416395392e-10,2.19274335731457e-09,3.21015277241132e-09,3.37247635709607e-09,3.32495676767333e-09,3.36131059194356e-09,3.43730214825779e-09,2.99128241605833e-09,1.15841189369481e-09,0,0,-7.80988317233935e-09,-1.43222895203793e-08,-2.08046256071786e-08,-2.4149365539842e-08,-2.47297054899076e-08,-2.20120121509058e-08,-1.61806196440265e-08,-9.45175192104675e-09,-3.74829416226708e-09,-9.14540960759328e-11,1.51144775112632e-09,1.80309477735315e-09,1.63510986926063e-09,1.42512055688285e-09,1.46843329596515e-09,1.27838227897376e-09,1.71594421728468e-09,2.01510872403529e-11,0,0,-4.23658251387766e-09,-5.49291859722941e-09,-9.70563350714804e-09,-1.35027910746132e-08,-1.37034576187322e-08,-1.28760694647645e-08,-1.1035983132909e-08,-8.31696910212008e-09,-5.69670837178496e-09,-3.66948887444322e-09,-2.27530101892459e-09,-1.47599643533786e-09,-1.02950990710673e-09,-8.12242435860933e-10,-8.58722251861832e-10,-5.29571731173501e-10,-2.31865581464773e-09,-1.44719118755605e-09,0,0,-3.06175696094453e-09,3.23422998496731e-11,8.37799476217244e-09,1.09872036515089e-08,1.09440679490675e-08,1.04627082907952e-08,8.10575260568491e-09,5.15294643501248e-09,2.98191865540744e-09,1.50206750090743e-09,8.79786400380629e-10,6.40020870153203e-10,4.81782960104082e-10,3.24206434292689e-10,1.22523937133596e-10,-8.62770949017702e-10,2.06448581232904e-09,-3.07216871985562e-09,0,0,3.12384850398889e-09,2.09220959833992e-09,2.42054212400913e-09,7.75354934470724e-09,7.4817591030862e-09,3.58048343477608e-09,-8.01303437679114e-10,-6.43470318189125e-09,-9.91705234198774e-09,-1.11542536928374e-08,-1.04740220714281e-08,-8.89249292657286e-09,-7.41965579807715e-09,-6.62966342007345e-09,-6.2806533604614e-09,-6.85787243976593e-09,-1.13897284471592e-08,-1.0280799768499e-08,0,0,1.49350648188716e-08,2.38793614511734e-08,3.46922119282782e-08,4.06680044934398e-08,4.54500211902406e-08,4.03177606270682e-08,3.27128476020816e-08,2.23637867775412e-08,1.25474537390434e-08,5.102060962759e-09,3.7144681087984e-10,-2.16823396874151e-09,-3.32457853749467e-09,-3.87794274228819e-09,-4.50056546403435e-09,-2.99215103264266e-09,-5.33428934763172e-10,1.23362021072299e-08,0,0,2.80557213009521e-08,4.13567491980662e-08,4.6039062180407e-08,4.94591976321296e-08,5.11212044412332e-08,4.77591398255855e-08,4.1450324491291e-08,3.36021976127593e-08,2.56887664424208e-08,1.89399314378163e-08,1.38724162923309e-08,1.05290045382776e-08,8.54060658072964e-09,7.99349370662068e-09,8.50870905044379e-09,8.94454243660769e-09,1.17599377193429e-08,1.12987762665945e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.49184674597463e-08,-1.6397384685753e-08,-1.23859231686418e-08,-1.17169516663035e-08,-1.10863614241327e-08,-1.17654381323105e-08,-1.43778376985345e-08,-1.8772709509138e-08,-2.5384186363869e-08,-3.41339827113533e-08,-4.43386071119185e-08,-5.4404548302385e-08,-6.25138946883416e-08,-6.68525323190902e-08,-6.46795943612662e-08,-6.07052146238648e-08,-5.41344178286855e-08,-3.79537198037462e-08,0,0,-2.08936697768213e-08,-4.14126778294597e-09,-7.78203392037631e-10,1.68148851894951e-09,9.18509325581965e-10,-2.85752459057281e-11,-2.03609776561128e-09,-6.04468402718382e-09,-1.29596172757532e-08,-2.32901154388165e-08,-3.64525694095889e-08,-5.00075995096707e-08,-5.98531610171341e-08,-6.64005703783186e-08,-6.02339751773904e-08,-5.25663176049947e-08,-3.88045479063008e-08,-2.55747886985127e-08,0,0,7.1436193479607e-09,1.21542908102294e-08,6.8815985756634e-09,6.57264092584788e-09,7.10538315780475e-09,7.88371008057228e-09,9.18261790302223e-09,1.02074187798566e-08,9.68096342859392e-09,6.46527398043272e-09,3.96297769428889e-10,-8.11259720907019e-09,-1.46049739619785e-08,-1.99407820135864e-08,-2.022667000131e-08,-1.26551347794225e-08,-1.14528099640726e-08,-1.26433958538434e-08,0,0,-4.36492444088505e-10,-5.08599581868935e-09,-6.01212660125486e-10,-1.43197574611811e-09,-1.61341099735072e-09,-2.03857465722295e-09,-2.84153319930531e-09,-4.24883679491625e-09,-6.72486665703539e-09,-1.0797602702509e-08,-1.59822100644972e-08,-2.19729902146885e-08,-2.66156628246545e-08,-2.79273477882272e-08,-2.77611271114706e-08,-2.30540383989224e-08,-1.03249929078387e-08,-4.92858823815043e-09,0,0,-2.64609709952991e-09,1.0196326090757e-09,-6.67300122181458e-10,1.49563925502103e-10,1.57002888057906e-10,2.32032756697347e-10,2.49759857797444e-10,1.89757118303545e-10,1.94806051814493e-10,2.91066625619254e-10,6.70656512049637e-10,1.21622014951136e-09,1.27458651048414e-09,1.27646297134815e-09,1.33936575030145e-09,-1.74918473773046e-09,-4.49083940607482e-09,-3.83045896915071e-09,0,0,-4.43502645834071e-09,-4.26521056318759e-09,-3.03539457962937e-09,-2.92891395113778e-09,-2.80122108691408e-09,-3.27738960509057e-09,-4.03554801328503e-09,-4.72303328027284e-09,-4.44433658348395e-09,-2.3304382056452e-09,1.79349097651445e-09,7.15248104289989e-09,1.20060553996739e-08,1.42431903772292e-08,1.39448487526387e-08,1.17207827517948e-08,6.46696537993286e-09,5.44839720009623e-10,0,0,-6.05615210484463e-09,-6.15073524400797e-09,-6.06408182411856e-09,-5.62996690234381e-09,-5.50687733152496e-09,-5.77833761685357e-09,-6.10267573308788e-09,-5.80534932719585e-09,-3.77887626036953e-09,9.44101303849522e-10,8.36316908749485e-09,1.70415784907683e-08,2.4602239162092e-08,2.83416189500842e-08,2.641852769191e-08,2.00035850038749e-08,1.22940546841032e-08,3.94686898816845e-09,0,0,-8.53376440928969e-09,-1.04237799184774e-08,-1.14047475518031e-08,-1.18817365774875e-08,-1.18212000087809e-08,-1.1744725257718e-08,-1.11190589439875e-08,-9.30767256020347e-09,-5.49082301239138e-09,7.7427346355519e-10,9.23304340091286e-09,1.84774497940726e-08,2.61888772498323e-08,3.02030812435307e-08,2.92617862455691e-08,2.31022301225292e-08,1.45152764910696e-08,5.34258459809957e-09,0,0,-1.04022376295828e-08,-1.50010957236601e-08,-1.85378042564778e-08,-2.07779784760648e-08,-2.105968346629e-08,-1.97449397381239e-08,-1.67197108622925e-08,-1.20749960621304e-08,-5.8965801326465e-09,1.47074614038599e-09,9.44155608825925e-09,1.70058161092217e-08,2.27742383866477e-08,2.54171927229606e-08,2.45703494383347e-08,2.01347433785369e-08,1.37417228916157e-08,5.62545340067241e-09,0,0,-1.18856624811819e-08,-1.95310946288271e-08,-2.62867121465027e-08,-3.09083317042579e-08,-3.17883260960287e-08,-2.90285511526425e-08,-2.30175737054541e-08,-1.51239294216882e-08,-6.78758280504549e-09,9.34271875097881e-10,7.42631430391067e-09,1.23188393529574e-08,1.55117009010024e-08,1.69028295683588e-08,1.65951899587777e-08,1.42312266041248e-08,1.0580663257163e-08,4.84881156476934e-09,0,0,-1.2314643263952e-08,-2.17741181621885e-08,-3.13303193410245e-08,-3.80735101726896e-08,-3.91429395892197e-08,-3.47711397777956e-08,-2.62859983230287e-08,-1.60136490657656e-08,-6.45024006368678e-09,8.45666606002523e-10,5.52454613381996e-09,7.9795660158854e-09,9.01265464377143e-09,9.26678278650169e-09,9.27572935543432e-09,8.50368000159721e-09,7.11204447892357e-09,3.60066101379658e-09,0,0,-1.15529745577099e-08,-2.08886927228858e-08,-3.02072440154675e-08,-3.76056565528583e-08,-3.97130709032038e-08,-3.53524551032097e-08,-2.64857400301878e-08,-1.60952071514576e-08,-6.88996012153182e-09,-5.73373260265127e-10,2.69908425237734e-09,3.85222602415465e-09,4.02906933116757e-09,3.96025210350048e-09,4.02510988533994e-09,4.09874483016469e-09,3.64694186792702e-09,1.60278837240774e-09,0,0,-8.6578636894606e-09,-1.60532716397301e-08,-2.33699254493058e-08,-2.69602804555641e-08,-2.75543298923003e-08,-2.4501876981861e-08,-1.79330220478149e-08,-1.03355449543184e-08,-3.89978554975148e-09,2.16549059166958e-10,1.9860844818287e-09,2.25727353490263e-09,2.02287052192012e-09,1.75008369613883e-09,1.82061937025252e-09,1.57128786279438e-09,2.20573588938373e-09,2.8599001589526e-10,0,0,-4.4121261494181e-09,-5.63946775323545e-09,-1.05721053783796e-08,-1.50331790989515e-08,-1.5268213206109e-08,-1.43634137663258e-08,-1.23947337443706e-08,-9.37894416467656e-09,-6.46719154794448e-09,-4.21147147991756e-09,-2.64424935731626e-09,-1.73970883269622e-09,-1.22154792734658e-09,-9.65326650284147e-10,-1.01156464188083e-09,-5.68856019329045e-10,-2.77176938883578e-09,-1.40526253050307e-09,0,0,-3.17826160936885e-09,4.72164461304222e-10,1.07383157057068e-08,1.39660179138948e-08,1.3847556312808e-08,1.33851712539999e-08,1.05967729402872e-08,7.02516477918555e-09,4.33334466062071e-09,2.40968115044366e-09,1.51305760030332e-09,1.10350024283925e-09,8.34075037935363e-10,6.08361758244286e-10,3.69121175062512e-10,-8.13690408276879e-10,2.98783370145527e-09,-3.48903752312142e-09,0,0,4.31529824645951e-09,2.38648895425152e-09,2.09854607303354e-09,8.42782114400239e-09,7.94001784309925e-09,3.33957801240412e-09,-1.61859561582503e-09,-8.11765746015195e-09,-1.21074297927092e-08,-1.35113656139828e-08,-1.26843070079696e-08,-1.07892828582218e-08,-9.0194953046303e-09,-8.0682254221867e-09,-7.60903325739189e-09,-8.28598592141669e-09,-1.39697777301908e-08,-1.19040072041823e-08,0,0,1.91878436646685e-08,2.93981208650067e-08,4.22094791240657e-08,4.90997764759428e-08,5.49725609376213e-08,4.89128546326096e-08,4.00850669471531e-08,2.79278950654465e-08,1.62903446235299e-08,7.38000521993241e-09,1.63780976878922e-09,-1.51137966023178e-09,-2.98691525839078e-09,-3.70154377609785e-09,-4.50065453162844e-09,-2.46394538791284e-09,4.53105209690664e-10,1.63201467400163e-08,0,0,3.55254536855107e-08,5.22725803543689e-08,5.78555094461233e-08,6.20066778894796e-08,6.40997633604691e-08,5.99240471981329e-08,5.21364387908106e-08,4.24372471369765e-08,3.26132951723804e-08,2.42001745138255e-08,1.78484781522476e-08,1.36368732451569e-08,1.1127912874123e-08,1.04542276174562e-08,1.10897892033401e-08,1.16689812941309e-08,1.5305750201888e-08,1.44963452526287e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.8237638333398e-08,-2.00735699139923e-08,-1.51983963525422e-08,-1.43922745264441e-08,-1.36455136469523e-08,-1.44489647235714e-08,-1.76039801876427e-08,-2.28936799352865e-08,-3.08216742925186e-08,-4.12802384316938e-08,-5.34372040298301e-08,-6.54055100905028e-08,-7.50252191010166e-08,-8.01945499183024e-08,-7.75873154806217e-08,-7.28617758068385e-08,-6.53550303857426e-08,-4.56410689138082e-08,0,0,-2.51407537235007e-08,-5.29705044503726e-09,-1.4603583116927e-09,1.56277651259043e-09,6.16188813841876e-10,-5.01354533920717e-10,-2.85269368281401e-09,-7.50531701459011e-09,-1.54814026490235e-08,-2.73431999475988e-08,-4.24134298888491e-08,-5.78786573358318e-08,-6.90397281661315e-08,-7.65733140272775e-08,-6.92756533399402e-08,-6.06371072406873e-08,-4.47433059847061e-08,-3.01810126997231e-08,0,0,8.65387543000872e-09,1.47619638273895e-08,8.36723118318953e-09,7.96845185088409e-09,8.62551725881678e-09,9.56918425212674e-09,1.11588648652467e-08,1.24703664501153e-08,1.20500220678221e-08,8.60972434113066e-09,1.96886713220939e-09,-7.47516164036068e-09,-1.46030943578624e-08,-2.06866953430268e-08,-2.12019040898309e-08,-1.25709144046471e-08,-1.20007700803173e-08,-1.41274664748759e-08,0,0,-1.08319103489231e-10,-6.09875956102711e-09,-6.92837387544109e-10,-1.72374384799736e-09,-1.94421873463207e-09,-2.44702221281252e-09,-3.37939151833553e-09,-4.99060778969143e-09,-7.79698322042194e-09,-1.23924086792766e-08,-1.819057473971e-08,-2.48869310373486e-08,-3.0019868830271e-08,-3.13365204021274e-08,-3.12219359224388e-08,-2.58164354645613e-08,-1.10516679304356e-08,-5.06301270376006e-09,0,0,-2.80035972442655e-09,1.44447310449001e-09,-6.55492612430273e-10,2.88639321182841e-10,2.99542099582854e-10,4.10261496234887e-10,4.90472949872224e-10,5.15866187042324e-10,6.6292269060496e-10,9.47040928649094e-10,1.57463295435674e-09,2.37277337873388e-09,2.52811125099824e-09,2.58911759883921e-09,2.59739152574921e-09,-1.15446606110866e-09,-4.58885336450943e-09,-3.87309373614751e-09,0,0,-4.81394237549362e-09,-4.84042583212726e-09,-3.3863633428211e-09,-3.33485238137324e-09,-3.17548106528579e-09,-3.72387353088999e-09,-4.56569006539627e-09,-5.29969234799278e-09,-4.88326913133075e-09,-2.33879081827093e-09,2.49302498120234e-09,8.69873092276805e-09,1.4269847312564e-08,1.68418858563059e-08,1.65478761460947e-08,1.40987862984355e-08,8.04337790146828e-09,1.22524340464653e-09,0,0,-6.63593770772567e-09,-6.91054946492809e-09,-6.81285324274215e-09,-6.37336120229024e-09,-6.21575902229426e-09,-6.5179476936897e-09,-6.84074416552222e-09,-6.42390808655351e-09,-3.9873403779707e-09,1.55207495804203e-09,1.01431403099252e-08,2.01049673068176e-08,2.87321912053249e-08,3.29734933342595e-08,3.07503021166232e-08,2.33881539266684e-08,1.46476751412728e-08,5.13698807344019e-09,0,0,-9.47899282014632e-09,-1.17920227644578e-08,-1.28660670111906e-08,-1.34974446010774e-08,-1.34001071167458e-08,-1.33160307307431e-08,-1.25655783924061e-08,-1.0439792092275e-08,-5.99221794196245e-09,1.2623785454074e-09,1.09983109066662e-08,2.15841699730332e-08,3.03849365646925e-08,3.49620335621162e-08,3.39368388303032e-08,2.68508001458961e-08,1.71167007065387e-08,6.67638472643799e-09,0,0,-1.15999056012869e-08,-1.69551666058217e-08,-2.09110141010834e-08,-2.35554097134006e-08,-2.38450390741753e-08,-2.23480899499785e-08,-1.88651846275319e-08,-1.35271302971943e-08,-6.41474974044444e-09,2.060387924515e-09,1.12113053220808e-08,1.98677385501005e-08,2.64561968002909e-08,2.94427881727584e-08,2.85087572930561e-08,2.33730102376101e-08,1.61721253177721e-08,6.92621583089178e-09,0,0,-1.32916814728999e-08,-2.20495170951747e-08,-2.96211032411567e-08,-3.49454074393942e-08,-3.59128709733014e-08,-3.28084954008536e-08,-2.59726406775285e-08,-1.6980894332022e-08,-7.45857180100894e-09,1.37685965309595e-09,8.80721395574248e-09,1.43973229147029e-08,1.8050123068284e-08,1.9624066560109e-08,1.930885360639e-08,1.65383437256644e-08,1.24669769637877e-08,5.95447463996035e-09,0,0,-1.37673164062211e-08,-2.44859717920326e-08,-3.52076049415154e-08,-4.28877794355705e-08,-4.4042735001372e-08,-3.91010122062528e-08,-2.95140635854503e-08,-1.78827831375266e-08,-7.02500242852103e-09,1.27586783145856e-09,6.59854427146194e-09,9.37764321120505e-09,1.0542506833165e-08,1.08069098916984e-08,1.08515195769221e-08,9.92103570074542e-09,8.42953863492789e-09,4.46439943835101e-09,0,0,-1.28746525566146e-08,-2.33736004683208e-08,-3.37520126966898e-08,-4.21127963898505e-08,-4.45251844526479e-08,-3.96517803157058e-08,-2.96966483638254e-08,-1.79955927473634e-08,-7.58997454416603e-09,-4.32284054189007e-10,3.26997038186878e-09,4.55598123091013e-09,4.74195267091273e-09,4.64588984346192e-09,4.74414278500218e-09,4.81772694277956e-09,4.36792160108537e-09,2.10937907183192e-09,0,0,-9.47933164288596e-09,-1.77756175720721e-08,-2.59311202702949e-08,-2.97655984479655e-08,-3.03601687918648e-08,-2.69606593643166e-08,-1.96470931932386e-08,-1.1167810394772e-08,-3.98802388840412e-09,5.90417664012274e-10,2.52090635282253e-09,2.76068471188028e-09,2.45064593019798e-09,2.10863391789639e-09,2.21010204054423e-09,1.90012013073481e-09,2.74999035254563e-09,5.97422089041373e-10,0,0,-4.51481661686108e-09,-5.69297578103105e-09,-1.13574608632495e-08,-1.65004945087522e-08,-1.67940878868582e-08,-1.5817625670637e-08,-1.37247616710947e-08,-1.0419699321761e-08,-7.22129888575158e-09,-4.7439863588336e-09,-3.01011081238944e-09,-2.00486940142898e-09,-1.41611989526898e-09,-1.12117104039652e-09,-1.1648612692173e-09,-5.99677916307246e-10,-3.22713100878848e-09,-1.31811281865999e-09,0,0,-3.19010763449574e-09,1.04416640415465e-09,1.33096619342836e-08,1.72110197316562e-08,1.70352632101846e-08,1.65820868154218e-08,1.33336222093682e-08,9.09652493544963e-09,5.83129645820499e-09,3.41888031088595e-09,2.21605698979869e-09,1.61732941256685e-09,1.22614424607087e-09,9.25485083792999e-10,6.46154198044196e-10,-7.42317296501327e-10,3.97311443285723e-09,-3.88352156638482e-09,0,0,5.66617007148976e-09,2.78274903110328e-09,1.8262808975544e-09,9.20107761439067e-09,8.47866174385808e-09,3.14266550783152e-09,-2.42644873589181e-09,-9.82792371702336e-09,-1.43541721876868e-08,-1.59516701004874e-08,-1.49948555901707e-08,-1.27983869949989e-08,-1.07297665759149e-08,-9.60962023503654e-09,-9.02649089322941e-09,-9.79765266940037e-09,-1.66180574303967e-08,-1.3496715137128e-08,0,0,2.36813870956199e-08,3.51844062384141e-08,5.01070780456761e-08,5.79592962094098e-08,6.49544320726582e-08,5.79170389093793e-08,4.7792635538297e-08,3.37478946352081e-08,2.02276208654426e-08,9.80929467971466e-09,3.02532215712291e-09,-7.53343348891832e-10,-2.5641438760874e-09,-3.44484087981357e-09,-4.42883349901014e-09,-1.83480597050047e-09,1.55198489370416e-09,2.04826805197893e-08,0,0,4.31633546183707e-08,6.34480682881999e-08,6.99532242544146e-08,7.48571622156989e-08,7.73850957934039e-08,7.23808867894099e-08,6.30878184763639e-08,5.14919564119433e-08,3.97214731444375e-08,2.96057558257715e-08,2.19430141582846e-08,1.68411523151681e-08,1.37927064719469e-08,1.29950588491628e-08,1.3746773533456e-08,1.44637764751121e-08,1.89524542838768e-08,1.78015492417249e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.1588343607468e-08,-2.37391747428103e-08,-1.80218756530459e-08,-1.70760086234643e-08,-1.62146223747899e-08,-1.71458664829495e-08,-2.08446872714359e-08,-2.70365113189451e-08,-3.62923812289931e-08,-4.8470301251067e-08,-6.2591212069789e-08,-7.64607350234998e-08,-8.75934678853158e-08,-9.35854020027616e-08,-9.0527839651222e-08,-8.50619181403168e-08,-7.66105373619014e-08,-5.33099071654148e-08,0,0,-2.92856356751589e-08,-6.38011602672886e-09,-2.13944079433858e-09,1.45678128981016e-09,3.30553788175834e-10,-9.54357400081427e-10,-3.63832837126061e-09,-8.9154631079649e-09,-1.79145368941571e-08,-3.12342525677455e-08,-4.80881094526761e-08,-6.5284562088315e-08,-7.75943072996208e-08,-8.59980043254701e-08,-7.75919000638895e-08,-6.81719395723048e-08,-5.03296733361117e-08,-3.45865032262333e-08,0,0,1.015396938877e-08,1.72755903240658e-08,9.77216887582178e-09,9.26239331519314e-09,1.00345267184782e-08,1.11332831063028e-08,1.30097961298126e-08,1.4615879503039e-08,1.43217369971734e-08,1.0700242545136e-08,3.55890852462184e-09,-6.72401133177378e-09,-1.43953489628102e-08,-2.11608062423431e-08,-2.19204377626011e-08,-1.23210258223148e-08,-1.23584165662646e-08,-1.54964027778027e-08,0,0,2.36638402628335e-10,-7.06071136694138e-09,-7.82455972833388e-10,-1.99940561247911e-09,-2.25718595883747e-09,-2.83185944914835e-09,-3.88680364105328e-09,-5.68752730065353e-09,-8.79650229061469e-09,-1.38697753259898e-08,-2.02146562875045e-08,-2.75432299635292e-08,-3.31002858335342e-08,-3.43793276850198e-08,-3.4325625200036e-08,-2.83023605918819e-08,-1.16166645594889e-08,-5.12369897690419e-09,0,0,-2.91762832540903e-09,1.86852090864403e-09,-6.36718127077884e-10,4.30202697818074e-10,4.42450711038594e-10,5.89306758303291e-10,7.34482318168653e-10,8.49822226604972e-10,1.14563553407394e-09,1.62070834288307e-09,2.49330869939029e-09,3.53589505173977e-09,3.76845545821887e-09,3.87522144862753e-09,3.83997721456998e-09,-5.5110450798573e-10,-4.65255247528156e-09,-3.86402145331107e-09,0,0,-5.15667204525405e-09,-5.3608934999757e-09,-3.69119680677756e-09,-3.70080938406999e-09,-3.51038159274557e-09,-4.12664766463658e-09,-5.04402004106977e-09,-5.81938730535479e-09,-5.27563216990587e-09,-2.33854525665106e-09,3.12803652574497e-09,1.00898052538291e-08,1.62992565513351e-08,1.91597261022291e-08,1.88843776619654e-08,1.62859469443452e-08,9.5042791823622e-09,1.88899626928306e-09,0,0,-7.14992738348453e-09,-7.58335229306351e-09,-7.47843572894023e-09,-7.03982302278578e-09,-6.85095943785058e-09,-7.17642708299657e-09,-7.48839831499962e-09,-6.95014609980749e-09,-4.13160899966741e-09,2.15002955156574e-09,1.18043568665412e-08,2.29349128469253e-08,3.254148265509e-08,3.72447422574436e-08,3.47299406497982e-08,2.64855024309399e-08,1.67986167803747e-08,6.28341647866942e-09,0,0,-1.03420663400121e-08,-1.30226642997184e-08,-1.41920984162588e-08,-1.49850677214696e-08,-1.48526995277101e-08,-1.47563850468336e-08,-1.38713528315999e-08,-1.14417481287055e-08,-6.41725245321045e-09,1.7187326122678e-09,1.26089139881611e-08,2.44400758496558e-08,3.42735556224868e-08,3.93891817399582e-08,3.82943215969089e-08,3.03261789728436e-08,1.94993561397406e-08,7.95523810389966e-09,0,0,-1.26885941036435e-08,-1.87103969502329e-08,-2.30744748509351e-08,-2.61270891894718e-08,-2.64203004269251e-08,-2.47398467008081e-08,-2.0799806358902e-08,-1.47985388079382e-08,-6.83796939001404e-09,2.61921928780268e-09,1.28375482775786e-08,2.25245691909957e-08,2.99111252821915e-08,3.32337926466557e-08,3.2214792429769e-08,2.6392272874351e-08,1.8414290261917e-08,8.17633215137042e-09,0,0,-1.45640953052501e-08,-2.43060696265852e-08,-3.26573159051176e-08,-3.86686892167653e-08,-3.97217680498091e-08,-3.62805159681136e-08,-2.86458562308867e-08,-1.86220284072587e-08,-8.03050623682442e-09,1.78809007698422e-09,1.0067601240428e-08,1.63213459516827e-08,2.04319868678948e-08,2.21898500383576e-08,2.18704808389437e-08,1.8691193393707e-08,1.42119317411084e-08,7.02365194329037e-09,0,0,-1.50713951232223e-08,-2.68869807812359e-08,-3.87085209735139e-08,-4.72723469611609e-08,-4.8497667621898e-08,-4.30156425721317e-08,-3.23918577098893e-08,-1.95112807153881e-08,-7.49554318346496e-09,1.68943961968038e-09,7.59115109878188e-09,1.06760558255921e-08,1.19766066424635e-08,1.22540134012435e-08,1.23336311807674e-08,1.12401593077194e-08,9.65263440276758e-09,5.3100300884217e-09,0,0,-1.40501343625114e-08,-2.55476689596137e-08,-3.68820394087999e-08,-4.61294292594034e-08,-4.88347316333462e-08,-4.34968541004729e-08,-3.25566238352566e-08,-1.96796411452747e-08,-8.20450687993656e-09,-2.99410888471514e-10,3.78848223985255e-09,5.19842668632739e-09,5.39674398236361e-09,5.27779249245227e-09,5.40722529814702e-09,5.47918199193494e-09,5.03445406055905e-09,2.60788937104231e-09,0,0,-1.0174014557422e-08,-1.9263775218003e-08,-2.81567793635579e-08,-3.21443005132922e-08,-3.27217201173655e-08,-2.90301536782219e-08,-2.10718045443353e-08,-1.1828231058314e-08,-4.00544783860235e-09,9.72225957721742e-10,3.0345997544335e-09,3.23547649325997e-09,2.85110766529802e-09,2.4416506503364e-09,2.57397966327848e-09,2.20164990550269e-09,3.26687856211739e-09,9.25202758379872e-10,0,0,-4.55608492449948e-09,-5.65659503025963e-09,-1.19999000193091e-08,-1.77842939703039e-08,-1.81226611712556e-08,-1.70983929468249e-08,-1.49231286861993e-08,-1.13663175775605e-08,-7.91500732885247e-09,-5.2399111815378e-09,-3.35232885098503e-09,-2.25397964761693e-09,-1.59854361442735e-09,-1.26667347749274e-09,-1.30913024987852e-09,-6.21207968686365e-10,-3.65859425852986e-09,-1.21485575743964e-09,0,0,-3.16418504192086e-09,1.57920902412185e-09,1.57564653345099e-08,2.02705253195888e-08,2.00315361294964e-08,1.96205978756908e-08,1.59565324508508e-08,1.10974659042286e-08,7.29515420657403e-09,4.41174499612023e-09,2.91011728697083e-09,2.12343453858277e-09,1.61005059798331e-09,1.23750109848676e-09,9.20430570173311e-10,-6.55176331865211e-10,4.9347176663916e-09,-4.24420829075501e-09,0,0,7.0091266651727e-09,3.10349688149758e-09,1.51931293249027e-09,9.86063662145052e-09,8.89233078901354e-09,2.87506052320881e-09,-3.23013507190541e-09,-1.14610691971056e-08,-1.6476743798804e-08,-1.82441954978918e-08,-1.71517973024078e-08,-1.4653886261585e-08,-1.22944633282243e-08,-1.10179114792068e-08,-1.03206978904302e-08,-1.1204704537558e-08,-1.91430491108471e-08,-1.50167069094624e-08,0,0,2.80625185058737e-08,4.07541896463756e-08,5.76398062051555e-08,6.62800086235914e-08,7.43857770110261e-08,6.6472433067764e-08,5.51905012008806e-08,3.94081978459717e-08,2.41016096608482e-08,1.22258079617294e-08,4.4208930007009e-09,1.9819410159578e-11,-2.1218362820936e-09,-3.1692903401673e-09,-4.33402943488383e-09,-1.16748383555957e-09,2.62501541411353e-09,2.46126232162265e-08,0,0,5.0817689250569e-08,7.46858952452082e-08,8.21327372162572e-08,8.77799589343113e-08,9.07571657178655e-08,8.49303887253211e-08,7.4124701598461e-08,6.06272391020482e-08,4.68935328005626e-08,3.50594699469014e-08,2.60704737554034e-08,2.00679329706386e-08,1.64771171910629e-08,1.55525832204465e-08,1.64185030571757e-08,1.72761572581041e-08,2.26045292138995e-08,2.11441755932296e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1103.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1103.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1103.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1103_field1":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10.1541344381376,9.69018115608415,9.77934060466694,9.78448413817063,9.78492381443646,9.78483453887919,9.78481219243034,9.7848091161921,9.78480888892032,9.78480864332439,9.78480890637307,9.78480902715166,9.78480904008135,9.78480871414097,9.78480752746155,9.78486721304013,9.78554594997764,9.79598892846752,9.88079930184737,9.60412990358323,4.88301902345496,4.86573041135372,4.88430519620923,4.88623268363439,4.88637025630141,4.88638808205692,4.88638634015354,4.88638609317932,4.88638610626595,4.88638607791501,4.88638607795736,4.88638603705429,4.88638539773338,4.88638025573232,4.88632980022315,4.88595457269212,4.88344929681627,4.86517814493661,4.81924175833925,4.88301902421102,2.26825129802928,2.26546522287069,2.26657062818802,2.26668040582421,2.26670530211007,2.26670383681183,2.26670414460397,2.26670405555011,2.26670405750945,2.26670405712029,2.26670407101502,2.26670422546773,2.26670545253557,2.2667143030415,2.26679009472374,2.26710715062354,2.26955729602244,2.27356231334406,2.25524481824691,2.26825129849299,1.10974143743442,1.10946514596346,1.10955991019502,1.10956891034099,1.10956881563309,1.10956938497474,1.10956926690995,1.10956928809653,1.10956928486435,1.10956928259452,1.10956926146199,1.10956902692127,1.10956817373702,1.10955526748985,1.10952468429679,1.10922831466673,1.10884076591754,1.11113356524043,1.10903970115146,1.10974143792765,0.697175611466133,0.697144811711884,0.697146375403601,0.697146834270997,0.697147057659876,0.697146967108001,0.697146999884842,0.69714699156122,0.697146993807036,0.697146992513752,0.69714705029633,0.697147013301997,0.697149397869139,0.697151450155142,0.697186842751769,0.697237349604928,0.69700402355534,0.697254632840443,0.697070121259822,0.69717561177506,0.648359367834523,0.64835491840633,0.648356077620141,0.648356091987361,0.648356113690878,0.648356132577834,0.648356124793947,0.64835612698527,0.648356127250805,0.648356103186779,0.648356116780017,0.648355511498239,0.64835499960127,0.648350012507604,0.648340270976839,0.648362499560485,0.648307979574284,0.648400684451301,0.648342863412685,0.648359367718601,0.839983547131601,0.839981835829084,0.839982091131847,0.839982093548532,0.839982093257357,0.83998209605307,0.839982095136353,0.839982094501046,0.83998210234589,0.839982094146445,0.839982219481586,0.839982348732197,0.83998288699163,0.839984904026565,0.8399845699516,0.839994011427096,0.839966697763875,0.839989825318932,0.839978822410193,0.83998354668304,1.55438909777625,1.55438898170013,1.5543889786425,1.55438899632196,1.55438896942184,1.55438899065743,1.5543889845594,1.55438898183869,1.55438898394708,1.55438896449041,1.55438892937695,1.55438891613839,1.55438862539987,1.55438804743989,1.55438600193882,1.55439239798948,1.55438632890063,1.55439060228561,1.55438832376043,1.55438909725973,3.32678658183903,3.32678669638481,3.32678663608629,3.32678680104059,3.3267866296309,3.32678669765223,3.32678669883212,3.32678669600915,3.32678669783178,3.32678670611569,3.32678669641669,3.32678670892739,3.32678688633419,3.32678736267503,3.32678607631417,3.32678752870483,3.32678610639413,3.3267869753156,3.32678665968731,3.32678658170699,6.98997941604108,6.9899793683866,6.98997870363584,6.98997976211857,6.98997902056954,6.98997908609445,6.98997912256091,6.98997910607366,6.98997909732281,6.98997910751623,6.98997911394445,6.98997909213631,6.98997902046468,6.9899792745895,6.98997901017495,6.9899795596553,6.98997942861571,6.98997974310788,6.98997975606501,6.98997941651783,13.1358934718841,13.1358921104626,13.1358865628836,13.1358910430107,13.1358885069731,13.1358876831453,13.1358876365444,13.1358876098472,13.1358874807946,13.1358874651529,13.135887474873,13.1358875392574,13.1358876307414,13.1358879757784,13.1358884182207,13.1358895103188,13.1358909788158,13.1358928583007,13.1358941839316,13.1358934732941,21.2493614170824,21.2493553947451,21.2493235310331,21.2493360313907,21.2493296949209,21.2493240733199,21.2493214128185,21.2493210685651,21.2493206995165,21.249320596696,21.249320595998,21.2493208241564,21.2493213654741,21.2493226578975,21.2493252847966,21.2493303334474,21.2493386017563,21.2493496747607,21.2493596744287,21.2493614191078,29.4017988892559,29.4017903757787,29.4016594967508,29.4016762032773,29.4016597638029,29.4016458949966,29.4016335788046,29.4016295056224,29.401627797296,29.4016275989074,29.4016276098608,29.4016282162316,29.4016298082372,29.4016336325992,29.4016420289104,29.4016588736909,29.4016886332884,29.4017322852989,29.4017782956129,29.4017988910524,35.1651809512841,35.1652104273399,35.164809774532,35.16482396702,35.1647623391896,35.164733238874,35.1647096773334,35.1647024721696,35.1646983727083,35.1646983806495,35.164698766733,35.1646998739127,35.1647027471709,35.1647100418117,35.1647273745097,35.1647650008292,35.1648376510779,35.1649554217666,35.1650964242071,35.165180951609,37.4357937956354,37.4360149358514,37.4349163136533,37.4351121477014,37.4350162718078,37.434958786173,37.4349017790179,37.4348929824494,37.4348881136217,37.4348882078219,37.4348889508763,37.4348900673905,37.4348929987607,37.434901478109,37.4349243686317,37.4349802947217,37.4351009417143,37.435320404454,37.4356161305487,37.4357937957041,36.7602243713257,36.7617589248629,36.7582975132848,36.758831339103,36.7588084837996,36.7588342168466,36.758750824208,36.7587314516666,36.758723423541,36.7587217255629,36.75872182918,36.7587223249821,36.7587241747291,36.7587310810703,36.7587537301861,36.7588187123662,36.7589867858371,36.759361154979,36.7600183919422,36.7602243711108,32.7596292591202,32.7678650661493,32.7553933701503,32.7555155318494,32.7558707337588,32.7563016059712,32.7563089178553,32.7562938751252,32.7562814160185,32.756275688993,32.7562738064501,32.756273403687,32.7562743488262,32.7562795579225,32.7563003745097,32.7563804202081,32.7566532803914,32.7575096843685,32.7598163761541,32.7596292578168,25.5468306601926,25.581791520589,25.5441370896465,25.538246389999,25.5375352069303,25.5382245248345,25.5384627746168,25.5385267816624,25.5385416103976,25.5385437613484,25.5385438561956,25.5385436990386,25.538543726165,25.5385454375889,25.5385609660519,25.5386425847243,25.5391448772779,25.5411279447648,25.550411439803,25.5468306581258,17.1463404151093,17.2132923815909,17.1079133847784,17.0946638292543,17.0910621913914,17.0903581788225,17.0902905021192,17.0902869495168,17.0902893168676,17.0902900776739,17.090290302936,17.090290244721,17.0902899572068,17.0902890255923,17.0902952111722,17.0903806154898,17.0911702768777,17.0964225767986,17.1321253497344,17.1463404136069,10.1541344744536,9.69018123425142,9.77934068293783,9.78448421646332,9.78492389272085,9.78483461716202,9.78481227071278,9.78480919447448,9.7848089672027,9.78480868246558,9.78480898465546,9.78480910543404,9.78480911836374,9.78480879242337,9.78480756660276,9.78486729132364,9.78554602826579,9.79598900682022,9.88079938005411,9.6041299425105,17.2424379315567,16.4299232654673,16.585483360515,16.5949959567875,16.5957613816896,16.5956014232895,16.5955625589261,16.5955569841142,16.5955565723478,16.5955561437612,16.5955566181213,16.5955568187604,16.5955568814749,16.5955560321269,16.5955550551022,16.5956632352304,16.5968390000424,16.6154603263624,16.7668608297476,16.2767368248735,8.2855729666378,8.25487230783666,8.28804299617093,8.29139608975074,8.29165202912348,8.29168262384334,8.29167950814282,8.29167910599943,8.29167912249167,8.29167907150959,8.29167907412967,8.29167899226746,8.29167787693094,8.29166903358145,8.29157800171107,8.29092165044155,8.28652408544514,8.25414050485017,8.17252501469286,8.28557296859888,3.84626829108752,3.84135600236376,3.84328261667288,3.84349102443981,3.84353180306811,3.84352980596073,3.84353028274144,3.84353012639372,3.84353013143494,3.84353013010211,3.84353015387803,3.84353044117096,3.8435325030675,3.84354832395707,3.84368233833563,3.84423011457686,3.84855213145355,3.85563952689905,3.82328572846546,3.84626829197209,1.87915256670669,1.8786640537207,1.87883493321124,1.87884891348939,1.87884944467665,1.8788502804135,1.87885010299308,1.87885013650025,1.87885013086077,1.87885012789164,1.87885008567259,1.87884968588533,1.87884821904825,1.87882511763782,1.87877325969719,1.87825341518173,1.87757537946043,1.88160686888957,1.87790690821132,1.87915256749726,1.18049916925493,1.18044423331512,1.18044680241503,1.18044788003186,1.18044814830191,1.18044802929941,1.18044807732835,1.18044806450786,1.18044806794726,1.1804480663581,1.18044816973805,1.18044808001776,1.18045238863923,1.18045572495272,1.18051759453935,1.18060427072789,1.18019705622013,1.18064083731139,1.18031283077489,1.18049916971472,1.09976159671384,1.09975372357574,1.09975578429958,1.09975578022719,1.0997558413088,1.09975586548663,1.09975585451694,1.09975585775739,1.09975585842891,1.09975581427147,1.09975584586567,1.09975475177876,1.09975387143589,1.09974512198024,1.09972851629652,1.09976709805523,1.09966918101832,1.09983496875777,1.09973200130134,1.09976159656759,1.42143012878851,1.42142707450983,1.42142753745738,1.42142754258687,1.42142753869863,1.42142754559425,1.42142754328302,1.42142754228471,1.42142755677291,1.4214275401082,1.42142776628732,1.42142799473262,1.42142894295213,1.42143239187964,1.4214318737411,1.42144902965611,1.42140036835985,1.42144129541926,1.4214217819567,1.42143012807974,2.63276067030908,2.63276047335939,2.63276046290401,2.63276049542536,2.63276044839063,2.63276048532544,2.63276047472541,2.63276046945958,2.6327604739872,2.63276043897577,2.63276037561787,2.63276035174705,2.63275985787381,2.63275883002924,2.63275507873214,2.63276641144471,2.63275578282137,2.63276330670187,2.63275930268563,2.63276066943303,5.64069760158386,5.64069780172888,5.64069769712684,5.64069798657859,5.64069768460446,5.64069780433228,5.64069780841624,5.64069780222233,5.64069780469788,5.64069782041872,5.64069780382528,5.6406978213919,5.64069813551755,5.64069901955341,5.64069676483295,5.6406992793269,5.6406967727042,5.64069829509497,5.64069774351517,5.64069760123078,11.8533554189119,11.8533553263432,11.8533541590446,11.8533560250645,11.8533547235115,11.8533548249951,11.8533548914775,11.8533548686675,11.8533548524949,11.8533548668431,11.8533548801033,11.8533548426096,11.8533547034734,11.853355138244,11.853354686571,11.853355659654,11.85335543774,11.8533559889064,11.8533560137593,11.8533554192755,22.2511366579777,22.2511342100218,22.2511244333241,22.2511322812168,22.2511278681771,22.2511264267441,22.2511263138596,22.2511262477844,22.2511260443602,22.2511260172065,22.2511260325777,22.2511261489119,22.2511263171846,22.2511269246432,22.2511277056155,22.2511296300501,22.2511322265359,22.2511355474847,22.2511378842807,22.2511366598908,35.9136810841252,35.9136703748568,35.9136144028765,35.9136362765179,35.913624935977,35.9136150449747,35.9136105689768,35.9136098380821,35.9136091543755,35.9136089734281,35.9136089776536,35.9136093752333,35.9136103322053,35.9136126151461,35.9136172565554,35.9136261714144,35.9136407676254,35.9136603108761,35.9136779466557,35.9136810871399,49.5349252483024,49.5349095655807,49.5346789001489,49.5347091025851,49.5346807956635,49.534654760881,49.5346334516606,49.5346265383514,49.534623599246,49.5346231966166,49.5346232380228,49.5346243092881,49.5346271225305,49.534633882008,49.5346487171632,49.534678466336,49.5347310010521,49.5348079966914,49.5348889877109,49.5349252509329,59.0242773196879,59.024329214943,59.0236215169569,59.0236396987797,59.0235391739314,59.0234869647212,59.0234439202866,59.0234301932877,59.0234232414389,59.0234231723357,59.0234238258055,59.0234257979151,59.0234308762814,59.023443790983,59.0234744686992,59.0235410771069,59.0236696334252,59.0238781069165,59.0241276044565,59.0242773198772,62.6508237834742,62.6512001968647,62.6492994578037,62.6496056817985,62.6494350235094,62.6493368958234,62.6492439423964,62.6492275428839,62.6492189736122,62.6492194568507,62.6492206934682,62.6492227075456,62.6492278906009,62.649242896842,62.6492834127858,62.6493823362052,62.6495958683563,62.6499835943206,62.6505056924139,62.6508237833248,61.5949523092524,61.5975205265552,61.5915949576104,61.5925294095854,61.5924997777769,61.592503183166,61.5923524570099,61.5923204757252,61.5923044325,61.5923018084787,61.5923018652127,61.5923027516224,61.5923060130325,61.5923182124475,61.5923581617295,61.5924727673372,61.5927677359723,61.5934241980062,61.5945636585351,61.5949523095392,55.0976781064905,55.1119385707903,55.090163194,55.0902030281391,55.0909504438376,55.0917635677096,55.0917579246164,55.0917383391905,55.0917150395422,55.0917051541843,55.0917018044897,55.091701094755,55.0917027727088,55.0917119829167,55.0917488645379,55.0918897299805,55.0923712564424,55.0938754155308,55.097856136123,55.0976781048458,43.1250104134005,43.1861387179577,43.1204758174432,43.1102906000175,43.1087555538779,43.1100565337537,43.1104623338892,43.1105782240143,43.1106043173069,43.110608114471,43.1106082907298,43.1106080090809,43.1106080540747,43.1106111215317,43.1106381841755,43.1107849632967,43.1116573392668,43.11518742235,43.1313040422976,43.1250104102719,29.0288634762756,29.1532574221412,28.9644362230396,28.9416321281624,28.9350507611353,28.9338225782093,28.9337005767882,28.9336939737589,28.9336982726872,28.933699609417,28.9337000057162,28.9336999096528,28.9336993820362,28.9336977842211,28.9337090179449,28.9338549186819,28.935278727141,28.9444067248889,29.0072541948092,29.0288634741767,17.2424379777144,16.429923368731,16.5854834641663,16.5949960604531,16.5957614853501,16.5956015269456,16.5955626625815,16.5955570877695,16.5955566760031,16.5955561955888,16.5955567217766,16.5955569224157,16.5955569851301,16.5955561357822,16.5955551069299,16.5956633388879,16.5968391037174,16.6154604301948,16.766860933436,16.276736876008,21.9795930222999,20.9216470298995,21.1245327726914,21.1381298962109,21.1390852046198,21.1388836199137,21.1388322451772,21.138824830742,21.1388242787369,21.1388237614695,21.1388243560173,21.1388245978516,21.138824771419,21.1388231153818,21.1388238126284,21.1389693289653,21.1404595049402,21.1648551530376,21.3655033007098,20.7167482180272,10.5567879583281,10.5163462958169,10.5606561266179,10.5649734660069,10.5653404276207,10.5653762155419,10.5653725620629,10.5653719837,10.5653719987716,10.5653719302043,10.5653719460115,10.5653718187485,10.5653704074005,10.565359346053,10.5652381392039,10.5643995066232,10.5587329360824,10.5170648919716,10.4073679108185,10.5567879620294,4.89542473126266,4.88891059025089,4.89145865439703,4.89175507096352,4.8918036392145,4.8918023794072,4.89180277720943,4.89180260338605,4.89180260804467,4.891802604574,4.89180263418391,4.89180302970842,4.89180550976821,4.89182646918744,4.89199783596972,4.89270151627097,4.8981423826436,4.90753237945079,4.86506122979588,4.89542473264995,2.38686588781797,2.38621868704779,2.38644430998665,2.38646090960675,2.38646251380586,2.38646332830018,2.38646316115673,2.38646319252839,2.38646318687191,2.38646318460671,2.38646312073451,2.3864626419927,2.38646067886525,2.38643123274629,2.38636317879112,2.38571916187505,2.38486468730632,2.39010683525634,2.38519787559503,2.38686588895428,1.49859378117915,1.49852221055296,1.49852567845115,1.49852728892011,1.49852751322881,1.49852741108942,1.49852745823868,1.49852744528619,1.49852744846928,1.49852744869093,1.49852757627406,1.49852747439205,1.49853295130837,1.498537714625,1.49861429229491,1.49871506312991,1.49818982529181,1.49878495983564,1.49835125196636,1.49859378172738,1.39862463388058,1.39861388943647,1.39861664897387,1.39861662320507,1.39861672405347,1.39861674572609,1.39861673493962,1.39861673829589,1.39861673887231,1.39861668229333,1.3986167169612,1.39861531191651,1.39861405020988,1.39860286227594,1.39858401004924,1.39863474491923,1.39850135610821,1.39872119737265,1.39858483751799,1.39862463376668,1.80353858027763,1.8035345825891,1.80353518837344,1.80353519712859,1.80353518878403,1.80353519987688,1.80353519602094,1.80353519514683,1.80353521376521,1.80353519359941,1.8035354856645,1.80353579965612,1.8035370836151,1.80354109718122,1.80353998267314,1.80356343924782,1.80349948671083,1.8035533798038,1.80352758868336,1.80353857927819,3.34582759508561,3.34582735791601,3.34582733781456,3.34582738186727,3.34582732035927,3.34582736831616,3.34582735437087,3.34582734727857,3.34582735337998,3.3458273076326,3.34582722342396,3.34582717157315,3.34582658843286,3.34582537817179,3.34582031078957,3.34583506815737,3.34582128125635,3.34583099782009,3.34582585370982,3.34582759380308,7.17963469867788,7.17963495702231,7.17963482250105,7.17963520273648,7.17963480505914,7.17963496296874,7.17963497103885,7.17963496072818,7.17963496300447,7.17963498496407,7.17963496826436,7.17963498581978,7.17963537313326,7.17963656357171,7.17963366206541,7.17963685310105,7.17963364873862,7.17963558978304,7.17963489423036,7.17963469804329,15.0934683752431,15.093468231771,15.0934666918275,15.093469155255,15.0934674457257,15.0934675553485,15.093467648437,15.0934676301751,15.0934676052601,15.0934676170775,15.0934676363295,15.0934675913089,15.09346739737,15.093467942282,15.0934673925301,15.0934686509921,15.0934683901283,15.0934691043856,15.0934691417403,15.0934683754106,28.3029892809588,28.3029860067679,28.3029730792923,28.3029833427826,28.3029776342365,28.3029757403339,28.3029755144032,28.302975405875,28.3029751839524,28.3029751481222,28.3029751655723,28.302975322277,28.3029755579542,28.3029763521455,28.3029773932181,28.3029799295984,28.3029833788742,28.3029877814553,28.3029908794846,28.3029892834484,45.570561017012,45.5705467766888,45.5704732802739,45.5705016729151,45.5704864079376,45.5704735333562,45.5704679455467,45.5704667093026,45.5704657530969,45.5704655119982,45.570465528167,45.5704660438791,45.5704673119878,45.5704703303907,45.5704764738039,45.5704882604545,45.5705075598418,45.5705333966312,45.5705567267682,45.5705610213587,62.6411112367306,62.6410893341778,62.6407859114252,62.6408270965722,62.6407902774475,62.6407531924003,62.6407261549625,62.6407174692177,62.6407137300104,62.6407131045191,62.6407131980744,62.6407146132472,62.6407183323783,62.6407272667995,62.6407468683967,62.6407861519063,62.6408554808114,62.6409569804902,62.641063452347,62.6411112407507,74.3469496179181,74.3470173977856,74.346082237048,74.3460957573021,74.3459793906114,74.3459070977596,74.3458479164081,74.3458280565187,74.3458193927277,74.3458191373054,74.3458199685714,74.3458225893579,74.3458293034423,74.34584640178,74.3458870091808,74.3459751864513,74.3461453020286,74.3464212301993,74.3467512942762,74.346949617927,78.6497428679926,78.6502171146589,78.6477836826707,78.6481007767691,78.6478832232223,78.6477603758281,78.6476512190264,78.6476277499842,78.6476168336144,78.6476178317697,78.6476194061161,78.6476221108895,78.6476289598967,78.6476487991377,78.6477023710726,78.6478331143228,78.64811541791,78.6486273627033,78.6493151959897,78.6497428674498,77.4361455519591,77.4392234436747,77.4318633363563,77.4330345324515,77.4330072374344,77.4329364598745,77.4327375694198,77.4326964674835,77.4326734547437,77.4326703055707,77.4326702647119,77.4326714356673,77.4326757225467,77.4326917821719,77.4327442794218,77.432894670681,77.4332794602556,77.4341310684317,77.4355918435006,77.436145553096,69.5528953975972,69.5708646298191,69.5429135517019,69.5426737247564,69.5439011256058,69.5450010742225,69.5449778518125,69.5449566738762,69.5449246833488,69.5449117004438,69.5449072436717,69.5449063030816,69.5449085264688,69.544920654635,69.5449693382126,69.5451533579333,69.5457833090351,69.5477436038655,69.5527448293126,69.5528953952706,54.6526038850477,54.7312808632498,54.6470776220411,54.6337850247519,54.6317483610531,54.6335405637104,54.6340758651264,54.6342323512906,54.6342671746578,54.6342722620555,54.63427251031,54.6342721386609,54.6342721965732,54.6342763277309,54.6343109991677,54.6345082745499,54.6356194088922,54.6402766135433,54.6607307110176,54.6526038803387,36.8997233330138,37.0734389007752,36.8260516765578,36.7948514649343,36.7859313007539,36.784298464943,36.7841303353589,36.7841212499099,36.7841268736472,36.7841286461356,36.7841291590418,36.7841290481631,36.7841283130417,36.7841263360153,36.7841416519745,36.784322843209,36.7862312882883,36.7978971155588,36.8790581431013,36.8997233300471,21.9795930821955,20.9216471666642,21.1245329102245,21.1381300337934,21.1390853422176,21.1388837575037,21.138832382766,21.1388249683305,21.1388244163253,21.1388238302637,21.1388244936058,21.1388247354401,21.1388249090075,21.1388232529703,21.1388238814228,21.1389694665571,21.1404596425791,21.1648552910244,21.3655034387729,20.7167482854778,25.0035739135738,23.7928898020373,24.0272925810556,24.0452920561856,24.0462859109605,24.0460755384586,24.0460152911513,24.0460064766327,24.0460059120284,24.0460053725418,24.0460060086202,24.0460062821641,24.0460065503659,24.0460040915135,24.0460063123439,24.0461771722002,24.0478440305521,24.0751848653065,24.3094453872055,23.5449639263058,12.009361556259,11.962583197251,12.0154459631721,12.0202774419672,12.0207672628408,12.0207981253434,12.0207949687493,12.020794152546,12.0207941512872,12.0207940738083,12.0207941074955,12.0207939476686,12.0207923943771,12.0207803792005,12.0206423696756,12.0197062892084,12.013408191739,11.9677822613003,11.8350775630046,12.0093615621993,5.56011568941674,5.55228638357072,5.55535892257877,5.55573862618836,5.55578674628292,5.55578802199907,5.55578799232209,5.55578786591842,5.55578786553748,5.5557878590557,5.55578789074446,5.55578835117062,5.55579096959587,5.55581466254599,5.55600185461664,5.55680186746229,5.56246893361009,5.5734935479108,5.52425989494451,5.56011569136482,2.70251560544557,2.70175650826767,2.70201215214342,2.70203060552835,2.70203364462342,2.70203411446723,2.70203404486772,2.70203405484708,2.70203405240446,2.70203405103658,2.70203397200508,2.7020334802414,2.70203111302898,2.70200010857508,2.70191632437448,2.70126849271271,2.70036850680877,2.70636112306594,2.70049931165972,2.7025156071586,1.69399920459867,1.69391827430651,1.6939234857101,1.69392521813272,1.69392539096074,1.69392534351454,1.69392537234309,1.69392536446754,1.69392536608053,1.69392536922777,1.69392549674319,1.69392546939625,1.69393106586847,1.6939383026188,1.69401558702158,1.69410176151787,1.69350368753995,1.69422987661064,1.69372569551558,1.69399920511587,1.58363347215155,1.58361994940393,1.58362317474497,1.58362318567073,1.58362330431819,1.58362332081669,1.58362331300552,1.58362331543358,1.58362331522274,1.58362325683588,1.58362326024431,1.58362178648047,1.5836199823496,1.58360773434045,1.58359264567,1.58365416540415,1.5834900573161,1.58374437685781,1.58358545013925,1.58363347226772,2.03839717518427,2.03839269280748,2.0383933669945,2.03839337357971,2.03839336478714,2.03839337869124,2.03839337336945,2.03839337329259,2.03839339221484,2.03839337919694,2.03839369102819,2.03839409130416,2.0383956856766,2.03839919702142,2.03839634380634,2.03842473843738,2.03835192649898,2.03841468858164,2.03838445584134,2.03839717364216,3.79215332070017,3.79215307635453,3.79215304901212,3.7921531023409,3.79215302961982,3.79215308531197,3.79215306882807,3.79215306126497,3.79215306651703,3.79215301587404,3.79215291926944,3.7921528047008,3.79215225775081,3.79215130095123,3.79214547096898,3.79216206256877,3.79214624807409,3.79215709368743,3.79215145473003,3.79215331893732,8.15666780021459,8.15666809625234,8.15666793900143,8.15666838568422,8.15666791981435,8.15666810539809,8.15666811658243,8.15666810232538,8.15666810447174,8.1566681302944,8.15666812343114,8.15666814176811,8.15666850929612,8.15666982769332,8.156666586664,8.15667014591635,8.15666667815178,8.15666879321403,8.15666803383613,8.15666779928191,17.1609951227077,17.1609949321742,17.1609931156175,17.1609960147659,17.1609940083267,17.1609941110605,17.1609942286832,17.1609942208769,17.160994184428,17.160994189629,17.1609942114433,17.1609941694854,17.1609939573016,17.160994560476,17.1609939932482,17.1609953836021,17.160995134428,17.1609959561155,17.1609960133727,17.1609951226809,32.1436775692665,32.143673625847,32.1436583333717,32.1436703109229,32.1436637393477,32.1436614952453,32.1436611087323,32.1436609749439,32.1436607719559,32.1436607264022,32.1436607439204,32.1436609274118,32.1436612205539,32.1436621383484,32.1436633934712,32.1436663788733,32.1436704833332,32.1436757029809,32.1436793854147,32.1436775722721,51.6095366173165,51.6095198432818,51.6094336824124,51.6094662321348,51.6094479423897,51.6094332029992,51.6094268989785,51.6094250390425,51.6094238653996,51.6094235779726,51.6094236119992,51.6094242071444,51.6094257083926,51.6094292658391,51.6094365213134,51.609450423376,51.6094732021593,51.6095037086154,51.6095313079665,51.6095366231684,70.6671342796714,70.6671072159698,70.6667528621378,70.6668027502821,70.666759046282,70.6667122629054,70.6666823252058,70.666672550037,70.666668322352,70.6666674549217,70.6666676191643,70.6666692797376,70.6666736545494,70.6666841576217,70.6667071950208,70.6667533356431,70.6668347133201,70.6669537273561,70.6670782707428,70.667134286205,83.5156195739614,83.5156969527695,83.5145984253963,83.5146041704036,83.5144900715008,83.5143983047796,83.5143265003616,83.5143010661368,83.5142916701815,83.5142911276943,83.5142920873259,83.514295171515,83.5143030567214,83.5143231565062,83.5143708885529,83.5144745353327,83.5146744405685,83.5149986292999,83.5153861498285,83.5156195738825,88.0140157574131,88.0145466818897,88.0117972105127,88.0120369850933,88.0118080281059,88.0116708205311,88.0115601415842,88.0115295607465,88.0115176088995,88.0115190269224,88.0115208508465,88.0115240493283,88.0115320688431,88.0115553038177,88.0116180621594,88.0117712241514,88.012101910521,88.0127016951435,88.0135046082129,88.0140157560623,86.8021916343784,86.8053187768901,86.7974722897141,86.7986694700061,86.7986597112176,86.798484296782,86.7982603120568,86.7982114745277,86.7981838171416,86.7981803227792,86.7981802443205,86.7981816099348,86.798186594786,86.7982052863797,86.7982662337404,86.7984403681161,86.7988829894066,86.7998511708379,86.8014952098257,86.8021916370329,78.3161988815569,78.3355923353184,78.3045980541478,78.3039361356397,78.3056537656418,78.3068828871695,78.3068475656435,78.3068192238012,78.3067804773711,78.3067649148619,78.3067596073779,78.3067584860112,78.3067610939944,78.3067751904639,78.3068319753962,78.3070433977139,78.3077670448832,78.3100108988279,78.3154345347974,78.316198877474,61.8075024153782,61.8950344219333,61.8007324442015,61.7854322079492,61.7837360705003,61.7858843934128,61.7865430511609,61.7867321307752,61.7867741403972,61.7867803705466,61.7867806944233,61.7867802693927,61.7867803456973,61.7867853033347,61.7868240521516,61.7870573861361,61.7882897685307,61.7936607097615,61.8160212625941,61.807502408434,41.8697250911559,42.0855095722039,41.8062852863944,41.765380044156,41.7546465586663,41.7526823460772,41.7524680033771,41.7524569953454,41.752463255058,41.7524653346538,41.7524659200691,41.7524658064433,41.7524649035638,41.7524628136659,41.7524811633865,41.7526785579397,41.7548951521344,41.7680349238181,41.8586721645843,41.8697250872594,25.0035739919665,23.7928899824216,24.0272927626907,24.0452922380292,24.0462860928641,24.046075720352,24.0460154730429,24.0460066585239,24.0460060939195,24.0460054634873,24.0460061905114,24.0460064640552,24.0460067322571,24.0460042734047,24.0460064032899,24.0461773540938,24.0478442125366,24.075185047881,24.3094455703226,23.5449640149378,26.8694213336694,25.5833916396514,25.8369332843376,25.8598791259803,25.8607929174404,25.8605974613277,25.8605325256974,25.860522455532,25.8605220394396,25.8605215010336,25.8605221420706,25.86052243256,25.8605227133838,25.8605199454691,25.8605214149107,25.8607032691439,25.8624937756121,25.8899050372381,26.144619580403,25.2953179422349,12.9136273128764,12.8634189600032,12.923049056013,12.9280328356979,12.9286586571213,12.9286767417001,12.9286746125397,12.9286735586671,12.9286735187423,12.9286734409414,12.9286734903026,12.9286733305829,12.9286717351925,12.9286594038754,12.9285196802959,12.9275405427552,12.9211333101844,12.8762215540072,12.7241340075129,12.9136273204405,5.96638895391097,5.95734467814666,5.96091576205333,5.96137406863781,5.96141642161316,5.96142144587029,5.96142079137739,5.96142074406363,5.96142073847317,5.96142072855487,5.96142076042501,5.96142122167826,5.96142393302686,5.96144774324792,5.96163283419288,5.96249342549038,5.96761009157572,5.97975595002912,5.92622919676661,5.96638895614413,2.88723547400267,2.88639662027136,2.88666246267879,2.88668300715769,2.88668753894632,2.88668748206606,2.88668755664895,2.88668753575939,2.88668753793003,2.88668753624074,2.88668745652549,2.88668698308289,2.88668428640367,2.88665638875442,2.88655490852015,2.8860085935872,2.8851660966229,2.89157633282485,2.88489594847485,2.88723547640959,1.80339215096477,1.80330747636972,1.80331542976461,1.80331683196899,1.8033169999212,1.80331702020163,1.80331702224618,1.80331702196768,1.80331702180651,1.80331702742405,1.80331713229962,1.80331728007561,1.80332191534724,1.80333276742854,1.80339810229729,1.80344646006872,1.80280768895469,1.80365927795878,1.80310840508295,1.80339215276627,1.68767383975412,1.68765762523841,1.68766108740892,1.68766120132297,1.68766130946238,1.68766132238958,1.68766131856459,1.68766131956307,1.68766131775878,1.68766126870159,1.68766120130547,1.68765990230623,1.68765738797695,1.68764538352837,1.68763898953242,1.6877111589458,1.68751936878957,1.68779062263504,1.68761931013917,1.68767383965677,2.17145688669107,2.17145233880799,2.17145301421689,2.17145301197114,2.17145300762286,2.17145302243926,2.17145301590458,2.17145301720981,2.17145303254315,2.17145303838707,2.17145332593091,2.171453817771,2.17145568238501,2.17145784030488,2.17145211734722,2.17148413586715,2.17140856798126,2.17147635912885,2.17144326992854,2.17145688345363,4.05816246653908,4.05816224462582,4.05816221308946,4.05816227406031,4.05816219166635,4.05816225328866,4.05816223487426,4.05816222825739,4.05816222954373,4.05816217944774,4.05816207672842,4.05816186980637,4.05816145711492,4.0581611681641,4.05815516354941,4.05817206589443,4.05815517676151,4.05816623825007,4.05816071198526,4.05816246467669,8.75675254198643,8.7567528545598,8.75675268025728,8.7567531780763,8.75675266292827,8.75675286809211,8.75675287977138,8.7567528638846,8.75675286658745,8.75675289318085,8.75675290516356,8.756752928954,8.7567531848633,8.75675441864784,8.75675111752651,8.75675484544897,8.75675148069124,8.75675356158992,8.7567527868607,8.75675254099463,18.4443943009437,18.4443940652173,18.4443920305926,18.4443952515498,18.4443930223718,18.4443931239571,18.444393257925,18.4443932578291,18.4443932101427,18.4443932103317,18.4443932294987,18.4443932006741,18.4443930254182,18.4443936562877,18.4443931151594,18.4443945036387,18.4443943011255,18.4443952014961,18.4443952824855,18.4443943011659,34.5069519686439,34.5069474901228,34.5069303641405,34.5069436164164,34.506936401433,34.5069338723566,34.5069333224167,34.5069331913704,34.5069330032094,34.5069329412651,34.5069329599844,34.5069331539547,34.5069334896368,34.5069344882069,34.5069359358569,34.5069392649419,34.5069438905491,34.506949747175,34.5069539020688,34.5069519720832,55.2258446017146,55.2258259863766,55.2257301237776,55.2257653307533,55.2257447806322,55.2257289220148,55.225721925825,55.2257194616157,55.2257181784124,55.225717853619,55.2257179075355,55.2257185608019,55.2257202436011,55.2257242048973,55.225732307679,55.2257478173983,55.2257732666794,55.2258073815845,55.225838344387,55.2258446082698,75.2699889566107,75.2699582378724,75.2695680285935,75.2696239317662,75.269573466793,75.2695193471241,75.269488331449,75.2694774382047,75.2694728373727,75.2694717323984,75.2694719696157,75.2694738006692,75.2694786543189,75.2694902937385,75.2695158260244,75.269566944547,75.2696570731412,75.2697888287425,75.2699265919007,75.2699889666708,88.5281914665106,88.5282727840003,88.5270592493804,88.5270614007145,88.5269571596122,88.5268449407699,88.5267655124658,88.5267359353567,88.5267265124924,88.5267256445103,88.5267267457462,88.5267301431039,88.5267388514835,88.5267610512353,88.5268137738423,88.5269282438837,88.5271489965347,88.5275067438835,88.5279338024843,88.5281914674838,92.8981616219763,92.8987265066298,92.8958052259892,92.8959156741287,92.8957187143017,92.8955675596877,92.8954597649418,92.8954215627904,92.8954096324821,92.8954110387005,92.8954130709214,92.8954165693074,92.8954253490787,92.8954507978792,92.8955195845808,92.8956875606608,92.896050185675,92.8967092574296,92.8975885628364,92.8981616191821,91.7971502974267,91.8000058754348,91.7924335087518,91.7933945138509,91.7934244761275,91.7931641197724,91.7929438549792,91.7928875727246,91.7928592646211,91.7928555823863,91.7928556500835,91.7928571620017,91.7928625837358,91.7928829014365,91.7929489040384,91.7931367697002,91.7936106496261,91.7946292527091,91.7963406518404,91.7971503018242,83.2361115418827,83.254865007075,83.2238964844978,83.2228407995154,83.2248653421209,83.225988022001,83.2259490060742,83.2258994417256,83.2258545971003,83.2258364575276,83.2258303895003,83.2258291054108,83.2258319611691,83.2258472377625,83.2259089534905,83.2261344863749,83.226904280154,83.2292756523465,83.2346714307947,83.2361115331242,66.0274895236005,66.1156721429224,66.0176012988224,66.0014487119409,66.0013719939394,66.0037692757167,66.0045656061587,66.0047848248588,66.0048331856807,66.0048406252283,66.0048410482078,66.0048406070359,66.0048407234057,66.0048462783037,66.0048866436718,66.0051398464442,66.0064070353244,66.0121017720677,66.0342178387399,66.0274895149294,44.8989291151895,45.1486804479456,44.862660081837,44.809589013073,44.7973301602755,44.7950892225625,44.794821859469,44.7948092102423,44.7948155339357,44.7948177875819,44.794818413886,44.7948182972589,44.7948172893852,44.7948152767901,44.7948351054858,44.7950429977663,44.7973579580051,44.8113656833635,44.9039844334007,44.8989291111435,26.8694214368361,25.5833918776828,25.8369335239093,25.8598793660078,25.8607931575503,25.8605977014289,25.8605327657962,25.8605226956303,25.8605222795377,25.8605216210827,25.8605223821688,25.8605226726582,25.8605229534821,25.8605201855673,25.8605215349605,25.8607035092407,25.8624940158139,25.8899052780236,26.1446198218206,25.2953180583948,28.0105901746466,26.6987838285607,26.9632834805647,26.9910657821245,26.9918681463068,26.9916941406428,26.9916275729304,26.9916164840775,26.9916162551634,26.9916157333991,26.9916163668749,26.9916166689542,26.9916168487993,26.9916144791527,26.9916126705294,26.9917929606557,26.9937085499379,27.0194811555132,27.285093109659,26.3744613923618,13.4745682952727,13.4229456403818,13.4877334218223,13.4927363643784,13.4934793676327,13.4934850664011,13.4934836489032,13.4934824216154,13.4934823395281,13.4934822632155,13.4934823209914,13.4934821944089,13.4934805875186,13.4934679993888,13.4933364328438,13.492337211481,13.4860653579913,13.4440785202583,13.2764766591807,13.4745683026249,6.21240182771482,6.20231277922813,6.20631815252382,6.20684015886939,6.2068779554094,6.20688601649451,6.20688491655785,6.20688491993902,6.20688491301109,6.20688490081927,6.20688493208804,6.20688534678069,6.20688823459406,6.20691058061283,6.20708564793329,6.20798995942465,6.21227730558708,6.22527157047309,6.16891830994593,6.21240182981546,2.99174130457014,2.99083818080697,2.99110903917502,2.9911314581088,2.99113703887179,2.99113660170118,2.99113677146392,2.99113673152688,2.99113673627476,2.99113673271434,2.99113666609437,2.99113620406729,2.99113328533855,2.99111046176162,2.99099215317311,2.99058146116872,2.98980175693157,2.99646438060039,2.98910706618167,2.99174130433992,1.85811618677211,1.8580287883349,1.85803964074044,1.85804065847992,1.85804086110297,1.85804092273957,1.85804090842637,1.85804091250314,1.85804091176328,1.85804091843927,1.85804099054586,1.85804134466012,1.85804452096025,1.85805892444573,1.85810686266215,1.85811840688968,1.85746124040662,1.8584231952569,1.85782698785965,1.85811619666937,1.73798450670842,1.73796654991379,1.73797002076548,1.73797023710528,1.73797032571243,1.73797033830276,1.73797033662674,1.73797033689394,1.73797033308979,1.73797029837012,1.73797014998457,1.73796913501551,1.73796594935579,1.7379551412622,1.7379574225678,1.73803714735949,1.73782281701011,1.73810159733809,1.73792629820098,1.73798450067921,2.24148969376095,2.24148529663826,2.24148594924165,2.24148593615013,2.24148593658662,2.24148595140504,2.2414859440294,2.24148594670818,2.24148595709779,2.24148598544764,2.24148622985617,2.24148681698831,2.24148882824055,2.24148953976773,2.24148116847713,2.24151580355928,2.24144131955639,2.24150996072258,2.24147590102639,2.24148969004688,4.21327756101411,4.21327738003267,4.21327734132849,4.21327740949677,4.21327731891814,4.2132773854742,4.2132773656608,4.21327736062679,4.2132773562273,4.21327730989355,4.21327719895868,4.21327690138285,4.21327665855057,4.2132771179505,4.2132712068776,4.2132873581911,4.21327036765599,4.2132811652038,4.21327601470511,4.21327756033432,9.12158313880987,9.12158345706471,9.12158327232626,9.12158380920209,9.12158325769075,9.12158347565483,9.12158348524135,9.12158347074766,9.12158347413643,9.12158350017791,9.12158353493189,9.12158356396812,9.12158367175098,9.1215847127624,9.12158157876562,9.12158535219118,9.12158218557204,9.12158414782316,9.1215833805649,9.12158313816241,19.2362431244686,19.2362428437101,19.2362406365284,19.2362440902587,19.2362416991035,19.2362418182113,19.2362419553803,19.2362419568507,19.2362419027351,19.236241902836,19.2362419160237,19.2362419054955,19.2362418030846,19.2362424332774,19.2362419111567,19.2362432517314,19.2362431131729,19.2362440706722,19.2362441725808,19.2362431255363,35.9507198887632,35.9507150144471,35.9506965199066,35.9507107357935,35.9507029377213,35.9507001961488,35.9506995271774,35.9506994160986,35.950699206814,35.9506991214368,35.9506991444664,35.9506993351281,35.9506996985747,35.9507007588372,35.9507023717637,35.950705959247,35.9507109900813,35.9507173369681,35.9507218690088,35.9507198926337,57.356296209413,57.3562761153834,57.3561724431184,57.3562098087558,57.3561876574314,57.3561710796465,57.3561632765912,57.3561604192224,57.3561591705534,57.3561588104578,57.3561588832101,57.3561595851064,57.3561614087337,57.3561656743591,57.356174428902,57.3561911752581,57.3562186930609,57.3562556166416,57.3562892017153,57.3562962159568,77.7883830797155,77.7883511882636,77.7879334329818,77.7879924319361,77.7879348023786,77.7878763831299,77.7878448546199,77.7878322578569,77.7878272608968,77.7878259582918,77.7878262451625,77.7878281942149,77.787833406808,77.7878458913048,77.7878732950705,77.7879281728215,77.7880249840206,77.7881666164567,77.7883150732455,77.7883830894681,91.000431511595,91.0005122661522,90.999216358358,90.9992239972208,90.9991265550802,90.9989934595388,90.9989123905195,90.9988809266361,90.9988717715962,90.9988706767401,90.9988719675242,90.9988755791833,90.9988848797543,90.9989085676927,90.99896483168,90.9990869757694,90.9993224929664,90.9997038467961,91.0001578071132,91.0004315172369,95.0276891954313,95.0282824346198,95.0252613392305,95.0252338597563,95.0251064873216,95.0249351687957,95.0248240209211,95.0247781794748,95.0247665779153,95.0247673949134,95.0247695601608,95.0247731821324,95.0247823956075,95.0248091533893,95.0248815849743,95.0250586996898,95.0254412964282,95.0261388386932,95.0270706923104,95.0276891956796,94.1147895646002,94.1172043561747,94.1103938495541,94.1109049457977,94.1109816736899,94.1107058501594,94.1105156132549,94.1104539912439,94.1104294063423,94.1104260212088,94.1104264899053,94.1104281631889,94.1104338349056,94.1104549934411,94.1105234131901,94.1107171353335,94.1112010873241,94.1122205532209,94.113895329792,94.1147895611686,85.8102647953793,85.82702504177,85.7983909168974,85.7972224570043,85.7992107317764,85.7999995439811,85.7999542266625,85.7998701393266,85.7998182040048,85.7997973458104,85.7997904850141,85.7997890349228,85.7997920256282,85.7998079231688,85.7998718898788,85.8001019281182,85.8008809071703,85.8032513810821,85.8084060104658,85.8102647815753,68.4586730436418,68.5423283360283,68.4437016494108,68.4276365807155,68.43010111877,68.432703574139,68.4336372271281,68.4338863581638,68.4339402041833,68.4339488847697,68.4339494304197,68.433949003436,68.4339491866309,68.4339550860991,68.4339962841037,68.4342534646515,68.4355153472839,68.4412481817432,68.4618430567581,68.4586730358106,46.7323087670818,47.006318128723,46.729051308762,46.6633051663639,46.6496628881664,46.6472076177576,46.6468859279945,46.6468715824318,46.6468777111903,46.6468800371594,46.6468806819261,46.646880552547,46.6468795195239,46.6468776318705,46.646897199378,46.6471205924736,46.6493660429586,46.6640054616982,46.7545838719541,46.7323087642507,28.0105903098476,26.6987841399053,26.963283792745,26.991066094625,26.9918684588012,26.9916944531294,26.9916278854142,26.9916167965609,26.9916165676468,26.9916158896407,26.9916166793582,26.9916169814375,26.9916171612827,26.991614791636,26.9916128267715,26.9917932731349,26.9937088624749,27.0194814682587,27.2850934223592,26.3744615426918,28.7000216116411,27.3840142575528,27.6548849400711,27.6865485454959,27.6872651910011,27.6871097160753,27.6870423099126,27.6870306069785,27.6870305003743,27.6870299991839,27.687030623765,27.6870309451181,27.6870309618286,27.6870293038549,27.6870239232065,27.6871951340625,27.6892303675315,27.7131322636612,27.9838287929686,27.0316491306356,13.8173799691395,13.7654477675144,13.8337154253226,13.8387672259878,13.8395855065376,13.8395840387173,13.8395828316723,13.8395814896775,13.8395813811001,13.8395813047321,13.839581364281,13.8395812766212,13.8395796856443,13.8395666949278,13.8394452737296,13.8384351649124,13.832315769408,13.7932058086911,13.6145051788389,13.81737997511,6.3593225244753,6.3485042535718,6.35281245085863,6.35337819278055,6.35341511858739,6.35342470602069,6.35342344273433,6.35342345930678,6.35342345305599,6.3534234403062,6.35342347074622,6.35342383292046,6.3534269065769,6.35344772409766,6.35361297986994,6.35455046717077,6.35815706496312,6.37183775456006,6.31357122425478,6.35932252643032,3.0506125370769,3.0496640379633,3.04994003118562,3.04996369295374,3.04996977531618,3.04996919850913,3.04996939433376,3.0499693501701,3.04996935534404,3.0499693493097,3.0499692999721,3.04996882734319,3.04996582300099,3.04994701306658,3.04981668135127,3.04951009337405,3.04874275049351,3.05559246369419,3.04776806088057,3.05061253177853,1.88259513502086,1.88250370673912,1.88251689939174,1.88251768406241,1.88251793247034,1.88251800330217,1.88251798635187,1.88251799076559,1.8825179904819,1.88251799706474,1.88251804332307,1.88251855081686,1.88252053934543,1.88253747128099,1.88257102256087,1.88256417980118,1.88189638578769,1.88293570711031,1.88229691161541,1.88259515106077,1.75768666850336,1.75766795964491,1.75767135826355,1.75767163289686,1.75767170713926,1.75767172141134,1.75767171975713,1.75767172005793,1.75767171489459,1.7576716907618,1.75767148972714,1.75767069814807,1.75766709536234,1.75765764971579,1.75766444600267,1.75774691710625,1.7575197177255,1.75780315391192,1.75762681410191,1.75768665439883,2.27685374709656,2.2768496820486,2.2768502770318,2.27685025890254,2.2768502619911,2.27685027650817,2.27685026874264,2.27685027241468,2.27685027894804,2.27685032577133,2.27685053213585,2.27685121502183,2.27685324531642,2.27685294916859,2.2768429680363,2.27687933823257,2.27680718076139,2.27687352284631,2.27684056278002,2.27685375000904,4.30231978535067,4.30231959628538,4.30231956477568,4.30231963591597,4.30231954013359,4.30231961036379,4.30231958922654,4.30231958557277,4.30231957579686,4.3023195341878,4.3023194080387,4.30231904383701,4.30231895084404,4.30231996517549,4.30231415814636,4.3023291947661,4.30231278814301,4.30232327229967,4.30231831849246,4.30231978480264,9.33853623712382,9.33853656676346,9.3385363725798,9.33853693622868,9.33853635843621,9.33853658565747,9.33853659343917,9.33853658128085,9.33853658439547,9.33853661092683,9.33853666718027,9.33853669673163,9.33853667947458,9.33853754102946,9.3385346754083,9.33853842968831,9.33853534195764,9.3385372337386,9.33853648848855,9.33853623695147,19.7139557114155,19.7139553893247,19.713953063574,19.7139566790139,19.7139541792783,19.7139543160497,19.7139544472157,19.7139544503891,19.7139543953553,19.7139543975968,19.7139544045805,19.7139544108501,19.7139543802817,19.7139549885546,19.7139544595312,19.713955778545,19.7139557040729,19.7139566851042,19.7139568032498,19.7139557132433,36.8159491047668,36.8159439742363,36.8159245397565,36.81593939628,36.8159311429983,36.8159282957636,36.8159275432492,36.8159274427806,36.8159271880164,36.8159270812431,36.8159271106527,36.8159272923017,36.8159276731017,36.8159287848082,36.8159305180759,36.8159342772004,36.8159395951119,36.8159462905208,36.8159510942048,36.8159491088334,58.5938664295929,58.5938451734344,58.5937359340771,58.5937751021782,58.593751660188,58.5937346344568,58.5937261417635,58.5937231477953,58.5937220114782,58.5937216136686,58.5937217014951,58.5937224423307,58.5937243642902,58.593728841092,58.5937380565136,58.5937556747761,58.5937846475287,58.593823539395,58.5938589481415,58.5938664370188,79.1424290918362,79.1423975516002,79.1419578721173,79.1420193218341,79.1419555927415,79.141895019486,79.1418627706893,79.1418482386859,79.1418428927935,79.1418414617601,79.1418417677627,79.1418437931165,79.14184925881,79.1418623384609,79.1418910792181,79.1419486759357,79.1420504149041,79.1421994819101,79.142356251584,79.1424290962794,92.1229398816803,92.1230240671466,92.1216638906794,92.1216791338384,92.1215825476564,92.1214331749899,92.1213541738533,92.1213224473989,92.1213134488455,92.1213122713238,92.1213137626507,92.1213175236105,92.1213272369256,92.121351944131,92.1214106461926,92.1215381319397,92.1217839832509,92.1221823123942,92.1226558162005,92.1229398897737,95.7154929281489,95.7161061161528,95.7130207038606,95.7128945899208,95.7128320145118,95.7126379309556,95.7125167370679,95.7124650484095,95.7124535465018,95.7124535409025,95.7124557357479,95.7124593700344,95.7124688083384,95.7124963285371,95.7125709791288,95.7127537940504,95.713149335941,95.7138712312358,95.7148416424467,95.7154929546198,95.0329735466586,95.0349365080372,95.0289545553306,95.0290284183846,95.0291463325142,95.028918255006,95.0287673378151,95.0287037899408,95.0286849810547,95.0286824497895,95.0286834681569,95.0286853327999,95.0286911321256,95.028712566021,95.0287816145198,95.0289759612207,95.0294562550304,95.0304529210986,95.0320185821156,95.0329735066299,87.1111294499568,87.1259011528193,87.1000791110283,87.0990131336688,87.1007449152914,87.1011499390946,87.101092142347,87.1009755858402,87.100916757048,87.1008936713826,87.1008861280443,87.1008845409103,87.1008875978979,87.1009038261831,87.1009682279051,87.1011979375525,87.1019660074093,87.1042692386461,87.1092186516864,87.1111294467287,69.8519596591359,69.9304411464113,69.8320270601463,69.8163423546168,69.8212085649689,69.8239841127441,69.8250224947244,69.825296139219,69.8253540025573,69.8253636547449,69.8253643056911,69.8253639031211,69.8253641576658,69.825370197491,69.8254123910361,69.8256648679549,69.8269170704144,69.8325702169528,69.8515559713737,69.8519596503623,47.8330271314882,48.1222070841546,47.8573864120192,47.7813731886401,47.7665882361205,47.7639854373342,47.7636200427928,47.7636042493995,47.7636101629083,47.7636125269912,47.7636131781277,47.7636130287813,47.7636120196689,47.7636102407501,47.7636284556338,47.7638701663944,47.7659896352549,47.7810986348111,47.8689999981619,47.8330271315389,28.7000217811194,27.3840146445245,27.6548853261354,27.6865489309818,27.6872655763037,27.6871101013607,27.6870426951948,27.6870309922605,27.6870308856562,27.6870301918249,27.687031009047,27.6870313304001,27.6870313471106,27.6870296891368,27.6870241158475,27.6871955193436,27.6892307527918,27.7131326486743,27.9838291774307,27.031649315152,29.0779731540885,27.7639244341021,28.0383402264275,28.0725015694239,28.073165893173,28.0730233734124,28.0729551631674,28.0729431711693,28.0729431235165,28.0729426318554,28.0729432460521,28.0729435944572,28.0729434708862,28.0729423879221,28.0729347561138,28.0730956849013,28.0752187976457,28.0978023410618,28.3704281212975,27.3939991653431,14.0067207133728,13.9549300127295,14.0251559903673,14.030281630909,14.0311380460987,14.0311336230758,14.0311323957704,14.0311309858534,14.0311308649026,14.0311307891813,14.0311308473466,14.0311307838325,14.0311292359179,14.03111580414,14.0310019024018,14.0299870991759,14.0239580498862,13.9867751376123,13.8013844167235,14.0067207181482,6.43879607587633,6.4275718561554,6.43204814233342,6.43263946332521,6.43267718820658,6.43268735488507,6.43268606436949,6.43268607960068,6.4326860740146,6.43268606090823,6.43268609280195,6.43268641391604,6.43268961395223,6.43270955041979,6.43286781457143,6.43382863403713,6.4370239465328,6.45117483303457,6.39176561920623,6.43879607609913,3.08199066365141,3.08101890320819,3.08129809627516,3.08132271137238,3.08132892807959,3.08132833484365,3.08132852846556,3.0813284852358,3.08132849022472,3.08132848268977,3.08132844302871,3.08132796956557,3.08132489244011,3.0813084389878,3.08117125521277,3.08092148784265,3.08014132228181,3.08711366359052,3.07903348754579,3.08199066615954,1.89124888840674,1.89115515548597,1.89116925158979,1.89116998608215,1.89117026773809,1.89117033682992,1.89117032147229,1.89117032528212,1.89117032549074,1.89117033158559,1.89117036660729,1.89117094412156,1.89117236297147,1.89119054418453,1.89121695463761,1.8912062931657,1.89052596640715,1.89160647204076,1.89094569077644,1.89124887624107,1.76420324845548,1.76418363517232,1.76418716956429,1.76418744320594,1.7641875136103,1.76418752937626,1.76418752716575,1.76418752761728,1.76418752194798,1.76418750333739,1.76418728295997,1.76418662015864,1.76418289963059,1.76417451069807,1.76418235832846,1.76426507558203,1.76403150777606,1.76432075798379,1.76414100109513,1.76420325576241,2.29333991308472,2.29333637485423,2.29333683126234,2.29333682962997,2.29333683042706,2.29333684498975,2.29333683728214,2.29333684165317,2.29333684604935,2.29333690377181,2.29333708490236,2.29333783232927,2.29333976613325,2.29333899795061,2.29332832650424,2.29336614591784,2.29329522317995,2.29335877455411,2.29332790468621,2.29333991723409,4.34829650118258,4.34829622615403,4.34829623374554,4.34829629810606,4.34829620222723,4.34829627373758,4.34829625053991,4.34829624714151,4.3482962338457,4.34829619632271,4.34829605475426,4.34829567129378,4.3482956734257,4.34829697673892,4.34829107654351,4.34830530117854,4.34828972390604,4.34829990368478,4.34829494049884,4.34829649896689,9.45299408036092,9.45299443156562,9.45299421989261,9.45299479635805,9.45299420150332,9.45299444065006,9.45299445289407,9.45299444357519,9.45299444536495,9.45299447377095,9.45299454120594,9.45299456522307,9.4529944722946,9.45299525907661,9.45299263556198,9.45299629849084,9.45299318080001,9.45299509435245,9.45299435621887,9.45299408047343,19.9685811372825,19.9685808005166,19.9685784336334,19.9685821637249,19.9685795857436,19.9685796956891,19.9685798036504,19.9685798100522,19.9685797573412,19.9685797610495,19.9685797644949,19.9685797831582,19.9685797931383,19.9685803642147,19.9685798266648,19.9685811661751,19.9685811312424,19.9685821092326,19.9685822467278,19.9685811392453,37.2761771271431,37.2761717844916,37.2761516697362,37.2761668495755,37.2761584995437,37.2761557630155,37.2761549813413,37.2761548709559,37.2761545770203,37.2761544611812,37.2761544968942,37.2761546715652,37.2761550663467,37.276156214387,37.2761580118922,37.2761618619558,37.2761673473378,37.2761742412083,37.2761791764898,37.2761771316137,59.2388979847933,59.2388765169164,59.238764675281,59.238804564216,59.2387793495638,59.2387617608557,59.2387528684237,59.2387498932474,59.2387488390432,59.2387483956824,59.2387484923485,59.2387492559818,59.2387512330838,59.2387558318071,59.2387653174086,59.2387834447943,59.238813275418,59.2388533412732,59.2388899958249,59.2388979920923,79.8168115521035,79.8167777143056,79.8163230766213,79.8163902088804,79.8163251710803,79.8162639442491,79.8162308524734,79.8162148708439,79.8162094028744,79.81620792062,79.8162082360547,79.8162103035543,79.8162159164727,79.8162293406461,79.8162588605109,79.8163180374421,79.8164226223448,79.816575889551,79.816736621926,79.8168115609216,92.5842721154179,92.5843763454599,92.5829632138404,92.5829702491952,92.5828684754952,92.5827096212216,92.5826335715599,92.582601700824,92.5825926093801,92.5825913794096,92.5825930078262,92.5825968505592,92.582606792968,92.5826320714743,92.5826921960516,92.5828229871724,92.5830756485858,92.5834865722876,92.5839781600669,92.5842721199864,95.8669172566056,95.8675164056589,95.8644195309115,95.8642680759278,95.8642424681404,95.8640305976603,95.863901117113,95.8638466311955,95.8638352102045,95.8638347338583,95.8638369335775,95.8638405546748,95.8638500751843,95.8638779208132,95.8639535485298,95.8641388330902,95.864539971361,95.8652702767069,95.8662538465058,95.8669172627941,95.3285460435369,95.3302708068625,95.3247733801273,95.3245432285345,95.3247003813433,95.3245268816659,95.3244039568881,95.3243402840118,95.3243253354228,95.3243234627643,95.3243248360402,95.3243268368877,95.3243327119626,95.3243541947281,95.3244231833446,95.324616466665,95.3250905693743,95.3260707967218,95.3275527264197,95.3285460282635,87.7394020386676,87.7530373295319,87.7290742739239,87.7280764156706,87.729594660789,87.7297541313569,87.7296871573441,87.7295523325383,87.7294894468182,87.7294651623589,87.7294572436452,87.7294555805459,87.7294586664886,87.7294750720142,87.7295392305209,87.729767352252,87.7305212326532,87.7327549336208,87.73760494866,87.7394020351377,70.5883259757114,70.6633716710156,70.5651696297082,70.5497502658538,70.5561915410496,70.5590762208705,70.5601763320739,70.5604645671866,70.5605247180701,70.5605349198389,70.5605356260469,70.5605352423816,70.5605355533813,70.5605416204657,70.5605847672195,70.5608317316491,70.5620791479763,70.5676527880844,70.5855669342883,70.5883259655194,48.4356870601688,48.7330073614221,48.4776019328058,48.3950800420852,48.3795444544251,48.3768556840424,48.3764627638979,48.3764462191535,48.376451970498,48.3764543696531,48.3764550247516,48.3764548572297,48.3764538751741,48.3764521937571,48.3764689367242,48.3767249615375,48.3787442036281,48.3941313911367,48.4802029783223,48.4356870627044,29.077973349964,27.7639248774123,28.0383406671078,28.0725020083481,28.0731663317514,28.0730238119578,28.0729556017092,28.0729436097109,28.0729435620582,28.0729428511263,28.0729436845938,28.0729440329989,28.0729439094278,28.0729428264639,28.0729349753843,28.0730961234489,28.0752192361086,28.0978027789525,28.3704285588408,27.3939993746851,29.2074125131201,27.8953735660646,28.171086084717,28.2061898835072,28.2068330014963,28.2066959883892,28.2066273687401,28.2066152848071,28.2066152611116,28.2066147130443,28.2066153852428,28.2066157387095,28.2066155576162,28.2066146970832,28.2066062684574,28.2067618971873,28.2089204018929,28.2309899734362,28.5039127431889,27.5188114761842,14.0720958737222,14.020487161132,14.0913874246797,14.0965507271549,14.0974196951943,14.0974143758561,14.0974131310948,14.0974116929871,14.0974115753237,14.0974114995323,14.0974115495907,14.0974114964256,14.0974099760064,14.0973963334526,14.0972854651813,14.0962703712671,14.0902691922419,14.0538650335911,13.8660014899135,14.0720958755819,6.46582950094004,6.45445830564753,6.45899507878296,6.45959525991736,6.45963352962687,6.45964386405759,6.45964257059284,6.4596425843537,6.45964257812039,6.45964256557905,6.45964259984983,6.45964290098861,6.45964615080217,6.45966581184994,6.45982097884103,6.46079215679869,6.46383334411075,6.47816517199167,6.41835172369229,6.46582950038325,3.09260287037428,3.09162463516155,3.09190437914533,3.09192954807521,3.09193575225424,3.09193516609335,3.0919353565499,3.0919353141682,3.09193531900421,3.09193531105594,3.09193527282499,3.09193481056474,3.09193166116376,3.09191617754051,3.09177631244352,3.0915458394743,3.09075799447139,3.09777572772117,3.08960844781638,3.0926028754948,1.89312517314653,1.89303100092923,1.89304522115168,1.89304595952879,1.89304626036914,1.89304632776214,1.8930463130721,1.89304631674051,1.89304631709202,1.89304632289313,1.89304635580558,1.8930469441044,1.8930482416864,1.89306662563023,1.89309161238033,1.89308108161519,1.89239461754915,1.8934868555057,1.89282141092942,1.89312515640702,1.76568412922471,1.76566375368324,1.76566746882274,1.76566771869343,1.76566779001819,1.76566780651161,1.76566780397476,1.76566780449979,1.76566779875149,1.76566778200454,1.76566756000648,1.76566694131129,1.76566325509087,1.76565531228211,1.76566291852616,1.76574565197813,1.7655092405511,1.76580295123171,1.76561983681555,1.76568414188297,2.29788579124188,2.29788258080304,2.29788293338531,2.29788295187475,2.29788294904603,2.29788296391717,2.29788295631474,2.29788296095789,2.29788296481046,2.29788302504244,2.2978831981884,2.29788395848862,2.29788580291993,2.29788499271929,2.29787416025224,2.29791280375484,2.29784177379265,2.2979042849897,2.29787448873044,2.2978857919031,4.361464578293,4.36146423997866,4.36146427783354,4.36146433463099,4.36146424083268,4.36146431218258,4.36146428756968,4.36146428375809,4.36146426954244,4.36146423358531,4.36146408615612,4.36146371425248,4.36146373591631,4.36146511052908,4.3614590736439,4.36147306774862,4.36145791709937,4.36146791975627,4.36146293620927,4.36146457679759,9.48584348414944,9.48584384617161,9.48584362310639,9.48584420117206,9.48584359919908,9.48584384624846,9.48584386442704,9.48584385678072,9.48584385763891,9.48584388751875,9.48584395484295,9.48584397545235,9.48584386140886,9.48584465087087,9.48584212559622,9.48584571649194,9.48584256904901,9.48584451917054,9.48584377023493,9.48584348417924,20.0418098541827,20.0418095229305,20.041807160939,20.0418109448442,20.0418083363325,20.0418084063624,20.0418084931426,20.0418085020148,20.0418084499611,20.0418084540985,20.0418084571058,20.0418084798698,20.0418084978289,20.0418090465637,20.0418085094951,20.0418098700177,20.0418098430961,20.0418108162616,20.0418109653076,20.041809854964,37.4088615042573,37.4088560572604,37.4088356352647,37.4088508457386,37.4088426059905,37.4088400383518,37.4088392597602,37.4088391414841,37.4088388380534,37.4088387204126,37.4088387604368,37.4088389331508,37.4088393350096,37.4088404955037,37.4088423076267,37.4088461814184,37.4088517143025,37.4088586618867,37.4088636188091,37.4088615065339,59.4241405119702,59.4241192891719,59.4240072738231,59.4240471778399,59.4240206127948,59.4240026079788,59.4239936310045,59.4239906485722,59.4239896263081,59.4239891504419,59.423989248755,59.4239900172841,59.423992009433,59.4239966447843,59.4240062121654,59.424024492225,59.42405459117,59.4240950202181,59.4241321812138,59.4241405150897,80.0103158966144,80.0102794073412,80.0098186167765,80.0098905146092,80.0098274192823,80.009765931801,80.0097327204542,80.0097161942371,80.0097107773335,80.009709299106,80.0097096232622,80.0097117069896,80.0097173622919,80.0097308852337,80.0097606270135,80.0098202473158,80.0099255862177,80.0100799466625,80.0102409969239,80.0103159046148,92.6995716319935,92.6996932747779,92.6982599336665,92.6982502905775,92.6981463019734,92.6979833209691,92.6979087800317,92.6978766377009,92.6978673674052,92.6978660962887,92.6978677449662,92.6978716123358,92.6978816277756,92.6979070944723,92.6979677032349,92.6980996811819,92.6983549690991,92.6987710680434,92.6992726776574,92.6995716354201,95.8883913258274,95.8889544285341,95.8858938866369,95.8857390230306,95.8857320100031,95.8855129316862,95.8853801680917,95.8853252151284,95.8853138876351,95.8853133569811,95.8853155719002,95.885319177302,95.8853286740629,95.8853564916514,95.8854321020969,95.8856173565367,95.886018465389,95.8867471881266,95.8877247601389,95.8883912979187,95.3724168350891,95.3741218035873,95.3687514656784,95.3684381759924,95.368604973933,95.3684459885496,95.3683282454329,95.3682647404703,95.3682502399867,95.3682484295722,95.3682498635533,95.3682519398362,95.3682579221651,95.3682794775655,95.3683481943997,95.3685397590439,95.3690076319553,95.3699751566828,95.3714316973629,95.3724168682868,87.9438993875536,87.9571838383752,87.9338541418031,87.9328665178738,87.9343141564376,87.9343939373022,87.9343255732702,87.9341848729234,87.9341209885674,87.9340963353658,87.9340883069224,87.9340866006209,87.9340896657661,87.9341061298033,87.9341702842116,87.9343980809663,87.935147827292,87.9373499829988,87.9421773948459,87.943899369923,70.8333917062348,70.9071935614938,70.8090821147727,70.7937416546617,70.8007743886854,70.8036934443247,70.8048157696143,70.8051089116233,70.8051697912004,70.8051801836711,70.8051809081694,70.8051805373461,70.8051808794752,70.8051869158936,70.8052304419194,70.8054744415626,70.8067199614641,70.8122595539525,70.829774245169,70.8333917030713,48.642965884336,48.9429257431326,48.6914350628832,48.6064486145256,48.5906363830879,48.5879166953661,48.5875134917348,48.5874967780111,48.5875024612525,48.5875048649157,48.5875055204072,48.5875053537211,48.5875043852062,48.5875027565508,48.5875188511121,48.5877807852897,48.5897598343118,48.6052371797796,48.6906339995767,48.6429658854648,29.2074126181045,27.8953738029373,28.1710863196287,28.2061901170834,28.2068332348295,28.2066962217002,28.206627602049,28.2066155181158,28.2066154944204,28.2066148296986,28.2066156185516,28.2066159720183,28.206615790925,28.2066149303921,28.2066063851113,28.2067621305008,28.2089206351363,28.230990206218,28.5039129757594,27.5188115874635],"Archive1103_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.35270912774076,-0.112153382044373,-0.0186844250621137,-0.00211277576774344,-0.000267552355543776,-3.79065443590032e-05,-4.10424722298031e-06,-9.09391709579818e-07,-1.90388953340982e-07,-9.09440436523424e-09,9.10879323502788e-09,1.08747587500201e-07,4.08568302214637e-07,2.10892943078755e-06,2.74608395316838e-05,0.00021166442027208,0.0021145911882986,0.0184243184449371,0.108885878461245,1.24118789568393,0.00268473266192604,0.00276398652289837,0.000536088316960038,-6.32216765783225e-06,2.16817665760025e-05,2.97426287153836e-06,4.94078815506087e-07,1.36894995601969e-07,1.65290743240685e-08,-7.74909060534134e-09,-2.24355521716381e-08,-1.64346384661141e-07,-8.16210816826304e-07,-9.4005174963103e-06,-7.7039092862491e-05,-0.000481981588690458,-0.00419394597030083,-0.0186456265676669,-0.0838558381933901,0.0026847542283263,-0.00032302859502147,-0.000617493777373218,-0.00017126133465908,-1.17373625313803e-06,-5.22080418140173e-06,1.33442403404147e-07,-6.55539260038574e-08,-1.07411378310462e-08,2.07156393091928e-09,1.36186865743312e-09,3.41834640486645e-08,1.8953635664591e-07,1.32761341668584e-06,1.5914302104091e-05,6.64165402564214e-05,0.000627557287149157,0.0025439344498348,0.00889839081615171,0.00382266474660694,-0.000323013715770186,0.000125042593861011,3.2410488231279e-05,9.71710522343832e-06,-1.96564589286401e-06,8.82082515413719e-07,-1.28787930089704e-07,2.69372375273233e-08,-1.48053984069864e-09,-9.72332479459905e-11,-4.03500200849915e-09,-5.09570381224946e-08,-8.71315137640912e-08,-2.89851907889852e-06,-8.28788519230649e-06,-8.27995738168509e-05,-0.000331107178040086,-0.000987784390123646,-0.000650995817464497,-0.000525406522287036,0.000125049382761717,-8.18052852216179e-06,-4.89147556762839e-06,-1.34088550067129e-06,2.72104300802935e-07,-1.80089731330124e-07,4.04739366469117e-08,-9.4798142360021e-09,1.49572114004389e-09,-3.28717426114963e-10,1.74152592313241e-08,-5.44150969040709e-09,6.11742212625589e-07,1.42825545122428e-06,1.23455305458316e-05,4.67262635575483e-05,0.000114238463964572,0.000103706470663617,0.000151813813492583,2.10657201586256e-05,-8.17936043321009e-06,1.69439154119723e-06,6.19110161329862e-07,3.5058030946743e-08,-4.66171504553545e-08,3.03861998731591e-08,-1.0705519945024e-08,2.78052999827955e-09,-2.56907052491456e-10,-6.39299927441407e-09,2.34413657124069e-09,-1.51541403605176e-07,-3.56405638941744e-07,-2.22626519972983e-06,-7.63916595559809e-06,-1.39861647530735e-05,-1.10125150303764e-05,-3.68695800223813e-05,-1.00524563988888e-05,-3.46951360744056e-06,1.6913649812798e-06,-1.20430273164405e-07,-9.19419592349469e-08,3.06627310938683e-10,1.35295266203881e-09,-5.57002228766043e-09,3.02668915319609e-09,-1.28248647837671e-09,2.47545057877071e-09,-1.6435790576466e-09,3.44583408132222e-08,8.37126494290458e-08,4.12088719129134e-07,1.49348328034264e-06,2.48334831571713e-06,1.96278264354152e-06,8.59043374340876e-06,2.54078507962263e-06,3.68855170953058e-06,-4.82377224652442e-07,-1.28669281776171e-07,7.31664614419239e-08,9.018324604284e-09,-2.40788016301575e-09,3.24998053066594e-09,-3.50708190751085e-09,1.97733016098214e-09,-1.39694089835756e-09,-5.46057032263892e-10,-7.23329533527837e-09,-2.30167160674458e-08,-7.94464872211206e-08,-3.14560711914248e-07,-5.68572367024572e-07,-5.06391481875015e-07,-1.77187568274153e-06,-7.95458964109178e-07,-1.72527798722957e-06,-7.28295190426399e-08,-1.5924629387024e-08,5.64355943283218e-08,4.20797056801441e-10,-4.98392902576492e-09,-4.72156103535563e-09,2.39915097514923e-08,-2.32321848946215e-08,8.8184751574348e-09,5.96534807297746e-09,3.04895019889958e-09,5.97660560648012e-09,1.6489546281175e-08,6.22935266729806e-08,1.32658663446857e-07,1.51264790078831e-07,3.39005553975827e-07,1.78696629566225e-07,6.01776995978834e-07,1.39089767739634e-07,6.10092075500994e-08,-3.42962916736993e-08,-1.43566627665652e-08,-2.24822587832607e-08,-7.57124697560725e-08,-1.00424217395454e-07,1.64164280134523e-07,-1.03756316824102e-07,-3.58766803075442e-08,-8.82265465724151e-09,-2.65336330718263e-09,-2.61355958263691e-09,-1.02604093490469e-08,-2.7430891344956e-08,-3.98009316824858e-08,-5.64298178677851e-08,-1.52569129863138e-08,-1.4388437977803e-07,-3.56636440550575e-08,-8.87788521667949e-09,4.73744519116797e-08,1.0487296275843e-08,-6.818518395409e-08,-1.02195587859316e-07,-6.85394887542663e-07,-1.1015159680782e-06,6.26521911289645e-07,-2.19763085894472e-07,-1.60812372656488e-07,-2.72286156396257e-08,-1.36057774617552e-08,-1.71305856796663e-08,8.01492079537571e-09,1.56353810750955e-08,3.00451193958288e-08,4.70901574943842e-08,1.30001188838107e-07,2.03964799182224e-07,3.43009929892976e-07,4.62197895400241e-07,5.14731201247524e-07,3.15876079913921e-07,-1.63054741943715e-07,2.15176174444833e-07,-3.83584604408792e-06,-7.53342666294338e-06,4.17962218921174e-07,-1.23303796837037e-06,-1.66356222736293e-06,-8.57398966910368e-07,-1.70482928192404e-07,-9.06314789123166e-08,-1.56010007303994e-08,3.05345155640814e-08,1.05320987663613e-07,2.49403126268924e-07,5.55981935430084e-07,1.10590731369867e-06,1.98820073742631e-06,3.0475217065301e-06,3.70609836950977e-06,2.915424575299e-06,1.46569485590106e-07,5.46338415501172e-06,-1.53401167654074e-05,-3.77149272382323e-05,-7.73136085505783e-06,-2.1095189007881e-06,-2.83049344759731e-06,-3.41709026494174e-06,-1.3345752622486e-06,-3.11044814894292e-07,5.84551865370478e-08,2.20701791705914e-07,5.07670920930045e-07,1.13257474180159e-06,2.48449089575963e-06,5.04758824654915e-06,9.26632850967206e-06,1.48001537901112e-05,1.91933257570513e-05,1.73699518850009e-05,5.39957090520991e-06,3.17107161021768e-05,-4.45900157106435e-05,-0.000138213887424423,-6.30454600228847e-05,-3.59278100664215e-05,-1.33552222506959e-05,-8.03058398224181e-06,-4.51043142525477e-06,-1.84729465094582e-06,-2.16776358872143e-07,5.03312473513003e-07,1.61593125380399e-06,3.82296591635863e-06,8.49835069472529e-06,1.74815648018292e-05,3.2634324027192e-05,5.32911698808394e-05,7.17616005087591e-05,6.96418418266363e-05,3.16874966181514e-05,7.05940957413965e-05,-6.4386576836731e-05,-0.000252309833442469,-4.65685886030799e-05,-3.4471327299993e-05,-2.55379478463154e-05,-1.26519856879132e-05,-4.70385356864526e-06,-3.44502411737429e-06,-9.97007545716131e-07,1.68375356424109e-07,1.97042083295429e-06,5.42538212843513e-06,1.27925977707021e-05,2.75729788878085e-05,5.37054001281393e-05,9.24030731989292e-05,0.000130295104823021,0.000135916114818463,7.05721998823647e-05,0.000142325492292082,9.48650221296566e-05,-0.000731181701668517,-0.000240934403145083,1.2390512339386e-05,4.10280552153379e-05,2.23911260019027e-06,4.35499373551349e-06,-1.63361151236042e-06,-1.19014079111829e-06,-9.5264197237407e-07,-4.6085611192122e-07,2.63848652484303e-07,2.30124349050456e-06,8.27634176294938e-06,2.48751738955203e-05,5.93575366886259e-05,0.000125149881107328,0.000169483574415095,0.000142330011670445,0.000509745659510966,0.00103397698220502,-0.00142551677989107,-0.000384936572297508,2.44853264218594e-05,0.000234181436545362,0.000100902683215486,5.08633453602368e-05,1.8081823850323e-05,6.30348555743918e-06,1.93733941625713e-06,5.62513617498512e-07,5.84849626503369e-07,3.10542527318762e-06,1.47925864079719e-05,5.32303073590823e-05,0.000172735496118766,0.000376605512811391,0.000692040069724932,0.000509774057832494,0.00190138346766262,-0.000855717152369399,-0.0116915850952243,-0.0052111743484284,-0.00241335833551608,-0.0006823683646236,-0.000207099372824436,-5.05823251917988e-05,-1.19628081974311e-05,-2.57035904136546e-06,-5.3222494314278e-07,-2.23631439808141e-07,-1.05689230157047e-07,1.69997238803289e-06,1.46172331130234e-05,8.24394389538581e-05,0.000313062456201961,0.00119136980191288,0.0019392581409221,0.00190142677476273,0.00517462872006135,0.0856311011292401,0.0324013500713164,0.00944081169511284,0.00176201957874688,0.000362462506387438,6.13616294126961e-05,9.77874652832818e-06,1.57108250693204e-06,2.17997891686847e-07,4.49752099916883e-08,-8.15914658342139e-08,-5.22017068757663e-07,-1.06490549025473e-06,2.3692981281199e-07,4.27518411328393e-05,0.000350380378789824,0.000878420549942848,0.00191075032216099,0.0051746712064501,-1.35270912703714,-0.11215338273378,-0.0186844249885351,-0.00211277578336812,-0.000267552354264466,-3.79065446026886e-05,-4.10424724501908e-06,-9.09391711445928e-07,-1.90388955206331e-07,-9.09440440363506e-09,9.10879335275483e-09,1.08747588354072e-07,4.0856830466269e-07,2.10892941602899e-06,2.74608394685805e-05,0.000211664420014926,0.00211459117836451,0.0184243185140089,0.108885877898788,1.24118790505693,-2.35394988913239,-0.205909348366092,-0.0323261013067096,-0.0037762414052597,-0.00048480000971924,-6.42327751550451e-05,-7.74812114044632e-06,-1.5866007379427e-06,-3.31623631924544e-07,-1.90919054602729e-08,1.90204918921778e-08,1.86367465185687e-07,7.08090557094192e-07,4.12149936724314e-06,4.59195159499985e-05,0.000386973013817336,0.00376434101211041,0.0320776577781647,0.199837094494684,2.16141992065218,0.00484678967790293,0.00578259039181352,0.000732222123775537,2.50254682336024e-05,3.54150334045798e-05,5.11077820222849e-06,1.00277945286493e-06,2.16564620459723e-07,3.23061384436528e-08,-1.3673889577942e-08,-4.25325289409422e-08,-2.65203695426731e-07,-1.59333651058907e-06,-1.63602127486019e-05,-0.000134261243253438,-0.000894302418909309,-0.00715475909042454,-0.0345724440153725,-0.144557798335466,0.00484682045688488,-0.000617539684500364,-0.00117371531824161,-0.00026646295707106,-1.177627445617e-05,-7.54522575300519e-06,4.37788321876782e-08,-1.14636576930401e-07,-1.39649355790571e-08,2.09411494227245e-09,4.13930076491752e-09,5.38441669233157e-08,3.43122895895247e-07,2.54424540413788e-06,2.61514175354741e-05,0.000131708926815629,0.00104775802530069,0.00472540381341297,0.0154724121903573,0.00631443303673008,-0.00061751840444948,0.000228259096498857,6.27481097601989e-05,1.25002026467933e-05,-1.64551187886637e-06,1.09178171010389e-06,-1.40089497682472e-07,3.66610241716231e-08,-2.1161616165768e-09,-2.87629679072629e-10,-7.20041439781088e-09,-7.85376868995957e-08,-2.68658999239605e-07,-4.43326196222402e-06,-1.79495342294349e-05,-0.000135954476209239,-0.000608905890260439,-0.00174842043424273,-0.00106291408738119,-0.000875732151840813,0.00022826916304821,-1.52879090708319e-05,-8.67783016221557e-06,-1.89633220621269e-06,1.85630940386254e-07,-2.14080428577552e-07,4.48058303389239e-08,-1.1648386588985e-08,1.93114792530971e-09,2.38349330887092e-10,2.39365373128418e-08,3.18874389777305e-08,8.98705275877438e-07,3.17295123102405e-06,2.04382652607184e-05,8.40529413796984e-05,0.000206819829852778,0.000172193904810254,0.000249104673166731,3.120294980988e-05,-1.52855308844406e-05,3.0446534811221e-06,1.00864532770642e-06,3.63460967118935e-08,-4.15033372059881e-08,3.27460302963719e-08,-1.18307069774232e-08,3.18363241437637e-09,-5.66383163398306e-10,-8.53290828981042e-09,-8.56806416220346e-09,-2.25392742497126e-07,-7.42046112092949e-07,-3.81871726970561e-06,-1.33459503395751e-05,-2.58534859651609e-05,-1.86629848369744e-05,-6.0489260992497e-05,-1.39004939193515e-05,-5.56122328941565e-06,3.04157034320069e-06,-1.99392729589997e-07,-1.40806903440042e-07,-5.535342866544e-09,-1.30551747676624e-09,-6.21284440247367e-09,3.59384710548692e-09,-1.57861130805894e-09,3.14902424824185e-09,4.92474450847056e-10,5.22422127308988e-08,1.62183678627173e-07,7.38603279701576e-07,2.55157106639696e-06,4.55461378886726e-06,3.6222823956948e-06,1.43065438085152e-05,2.93085830197963e-06,5.89177485101041e-06,-8.87607734035202e-07,-2.09159140025467e-07,1.19065322339139e-07,1.40544074108752e-08,-1.89386405897187e-09,5.47817076971794e-09,-6.59938188979097e-09,3.9933856875151e-09,-1.7703760877336e-09,-1.31623904504154e-09,-1.135130928501e-08,-4.0929681246627e-08,-1.48947542443345e-07,-5.35744642366715e-07,-1.00899477652603e-06,-9.76138975408634e-07,-3.03425017748813e-06,-9.27252889582011e-07,-2.65869372289777e-06,-3.62109486783253e-08,-4.0779073351593e-08,9.84366515158923e-08,-1.44944179813438e-09,-7.5095399251661e-09,-9.30842622389547e-09,4.27663932046987e-08,-4.13258021713307e-08,1.29930824584207e-08,8.25617226313338e-09,3.980700423589e-09,9.9942688749254e-09,3.17489122226654e-08,1.07836809528989e-07,2.27220877311587e-07,2.84696857689826e-07,6.09055849134485e-07,2.04826201583407e-07,8.96816803866354e-07,1.60213314384384e-07,1.02688123722802e-07,-5.70301581383033e-08,-1.97395328752607e-08,-5.08571992702702e-08,-1.30102432479329e-07,-1.78444347102117e-07,2.88503732711591e-07,-1.74224929478207e-07,-5.10598671724109e-08,-4.49412930447057e-09,-2.13141059154677e-09,-6.28706270388609e-09,-1.87140706098456e-08,-4.55111937714591e-08,-7.13118403389687e-08,-1.0773245554476e-07,-1.01045061299284e-08,-2.02014812186958e-07,-1.59673668359194e-08,-2.56785777638171e-09,8.2454894343151e-08,1.51606494035449e-08,-1.07002648041206e-07,-1.96009272406014e-07,-1.20337920256485e-06,-1.93721794276701e-06,1.08403312211569e-06,-4.32921423574046e-07,-3.54477515004495e-07,-8.00094244038287e-08,-2.11415976016185e-08,-2.46566937132226e-08,1.14706897543529e-08,2.69567739168518e-08,5.52474498620172e-08,8.22652840460042e-08,2.1722068530235e-07,3.41410018137353e-07,5.94606314545242e-07,8.13210110431356e-07,9.08853596911443e-07,5.52889109980512e-07,-2.6967937164781e-07,3.68736132171923e-07,-6.75669662436128e-06,-1.32745630861432e-05,8.47420908225171e-07,-1.83315316954231e-06,-2.67515895190221e-06,-1.46527283782251e-06,-3.46417023672361e-07,-1.53839980269755e-07,-2.2961592236988e-08,5.08242683012642e-08,1.85686234907839e-07,4.41653614344402e-07,9.84846105572682e-07,1.95384599862596e-06,3.5054187533982e-06,5.37008689216184e-06,6.53372988151214e-06,5.13569186275516e-06,2.87612804392692e-07,9.57944404835588e-06,-2.69139113930728e-05,-6.6623230539557e-05,-1.4756213136188e-05,-5.1803321651195e-06,-5.70577892176048e-06,-5.80106799093406e-06,-2.30620369732477e-06,-5.93974506847196e-07,1.15305500936785e-07,3.9122959474705e-07,8.91838150613071e-07,1.99663754605528e-06,4.37668736836252e-06,8.89304619689046e-06,1.63267616820846e-05,2.60703028490109e-05,3.38052093380444e-05,3.05890914838626e-05,9.5068390800114e-06,5.5823138070871e-05,-7.87665703866706e-05,-0.000241755598076601,-0.00010521349898751,-5.74224637649269e-05,-2.37581054818277e-05,-1.48917518188616e-05,-7.71970674780885e-06,-3.24547840028396e-06,-4.27778193933046e-07,9.15218427350223e-07,2.84454611555067e-06,6.75295751926589e-06,1.50013456146704e-05,3.08622360108802e-05,5.75907524300358e-05,9.40623825317867e-05,0.000126630661973926,0.000122913682443529,5.57983396045439e-05,0.000125833797027386,-0.000115367498769603,-0.000460901224193734,-0.000116525754179375,-6.83323887634006e-05,-4.02602950875484e-05,-2.25897936612897e-05,-9.0091611529805e-06,-5.68579055741339e-06,-1.91636634579594e-06,3.3819253701581e-07,3.47211550857912e-06,9.58625929068517e-06,2.26062743546435e-05,4.86957569341811e-05,9.49439896142282e-05,0.000163127114408129,0.000230414801819132,0.000240116836503055,0.000125813007771445,0.000247158110380011,0.000179003836271617,-0.00115326386304408,-0.000345154256634545,6.81153613674364e-06,6.42952455468215e-05,1.04773498008168e-05,5.36878636121895e-06,-2.17783025306475e-06,-2.23330060696642e-06,-1.65468451054616e-06,-8.16704009688425e-07,4.63967150620857e-07,4.03092181932109e-06,1.46237195366337e-05,4.33977756511822e-05,0.000105059679097857,0.000217256777232304,0.000298084613959767,0.000247167181648825,0.000930031576637166,0.00156394130636388,-0.00299403157468,-0.000747599350982532,0.000130169812963296,0.000373888660236529,0.000188247832093477,8.74871703878368e-05,3.2259125209871e-05,1.1088326668448e-05,3.42116470799881e-06,9.94280486831721e-07,1.03410744115032e-06,5.52346554687373e-06,2.59440922621047e-05,9.5280226212358e-05,0.000300274270921802,0.000678252824553372,0.00119409641382583,0.00093006950989056,0.00326535300325574,0.000221111344919029,-0.0194493904102709,-0.00976984798820191,-0.00409961687729832,-0.00123846001669876,-0.00036099014045551,-8.98722049118064e-05,-2.1157393217856e-05,-4.53014767771632e-06,-9.45345880839948e-07,-3.92681048667431e-07,-1.96816039433637e-07,3.01356859802728e-06,2.61972814804323e-05,0.000142879697869124,0.000572260950362138,0.00202912288226135,0.00359585491382552,0.00326541040414204,0.0089638802359027,0.142831415358775,0.0597527532532211,0.0162257132723855,0.00318388025617931,0.00063674366889531,0.000108264255256391,1.75453027640074e-05,2.74159149912299e-06,3.91304162397738e-07,7.97604177122168e-08,-1.48826603049788e-07,-8.89520455898625e-07,-2.07115398591424e-06,8.8367943516423e-07,7.85698985159533e-05,0.000581803170008942,0.00184627954641948,0.00227058043274295,0.00896393774593483,-2.35394988892843,-0.205909349077388,-0.0323261012907305,-0.00377624141487006,-0.000484800010776036,-6.42327754838294e-05,-7.74812121665246e-06,-1.58660075384125e-06,-3.31623635327312e-07,-1.90919057614064e-08,1.90204922420997e-08,1.86367467099705e-07,7.08090561987845e-07,4.12149935518113e-06,4.59195157583548e-05,0.000386973012790448,0.00376434099734392,0.0320776578253238,0.199837094023692,2.16141993240936,-3.06787045769817,-0.27912575689086,-0.04188813871216,-0.00503043085338501,-0.000647498021421265,-8.25266037467739e-05,-1.0612791427068e-05,-2.07075478284461e-06,-4.33905866662944e-07,-2.7559397641704e-08,2.75373417294789e-08,2.39450757547306e-07,9.35077904681899e-07,5.69555570894211e-06,5.84737837951937e-05,0.000522419808665269,0.00498120662617668,0.0418258034792455,0.270809325429384,2.81877565268633,0.00652143123485757,0.00850188352920732,0.000752119870739458,6.91917029946654e-05,4.33726327890219e-05,6.7218576035775e-06,1.4159495740329e-06,2.65503963516022e-07,4.5008864006353e-08,-1.79920434721976e-08,-5.7698557073536e-08,-3.31039527426159e-07,-2.22822138647456e-06,-2.12805937712918e-05,-0.000175603708751292,-0.00121695599823612,-0.00917634351454786,-0.0471020936970581,-0.187197185302699,0.0065214747446414,-0.000870532471765802,-0.00162185535008467,-0.00031639243980078,-2.48545073147665e-05,-8.28691635874472e-06,-1.43621195730628e-07,-1.43969966092499e-07,-1.49930819576549e-08,1.57655813530309e-09,6.77432402496816e-09,6.51347575041016e-08,4.62613585872163e-07,3.50871441894355e-06,3.26824697451128e-05,0.00018686768564386,0.00132063721535549,0.00643384496761717,0.0201529881122221,0.00791647592470484,-0.00087050217294443,0.00030806674457664,8.72462053630339e-05,1.21279835389972e-05,-4.48009027608098e-07,9.94334338488259e-07,-1.00069032191985e-07,3.7101669037863e-08,-2.05092124113774e-09,-5.4336247359377e-10,-9.32441193550515e-09,-9.4228020926803e-08,-4.54949138338943e-07,-5.20131037898256e-06,-2.67394103090429e-05,-0.000169151502586914,-0.000822228650532913,-0.00230307943416042,-0.00132203058087182,-0.00110146846391803,0.000308081534506011,-2.08414787501196e-05,-1.13681499523893e-05,-2.08236246035379e-06,-2.71649552496563e-08,-1.84994744003437e-07,3.39037349020852e-08,-1.04580928482015e-08,1.84151098140261e-09,1.00224601205644e-09,2.55400397805331e-08,7.99961915990672e-08,1.01412348006943e-06,4.78911683703583e-06,2.56504090190668e-05,0.000111783518620401,0.000275825157483943,0.000216943282579253,0.000309839224847196,3.50856172711696e-05,-2.08373815305719e-05,4.02102011717842e-06,1.23862773704001e-06,2.99021614213397e-08,-1.85131915136726e-08,2.4022686574459e-08,-9.05127455018471e-09,2.57663237786275e-09,-8.21241680419062e-10,-8.76178086568349e-09,-2.30725765822295e-08,-2.57874857957222e-07,-1.08253395345909e-06,-4.93650418998623e-06,-1.74165521894911e-05,-3.47862639261256e-05,-2.36024960250024e-05,-7.54374934949582e-05,-1.44279163969764e-05,-6.78810622474881e-06,4.01772166124159e-06,-2.35222968372827e-07,-1.67627158773714e-07,-1.33421178108658e-08,-4.77533945632193e-09,-4.94926349723675e-09,3.13813579086749e-09,-1.44526938401005e-09,3.04419516434917e-09,3.76402752762812e-09,6.09961144602578e-08,2.26487254455136e-07,9.85342241129284e-07,3.2856254975424e-06,6.08881051416449e-06,4.79843640521712e-06,1.80491062145764e-05,2.3524188229851e-06,7.13982194484528e-06,-1.19889074447852e-06,-2.4743866778032e-07,1.48501004354291e-07,1.6973588097205e-08,-1.96563236064383e-10,6.83739637652888e-09,-8.96125052671898e-09,5.66802821138809e-09,-1.72549324873954e-09,-2.06748964362752e-09,-1.36606916819257e-08,-5.4005446959655e-08,-2.04333620592264e-07,-6.90502138140331e-07,-1.32355364340055e-06,-1.3225526558283e-06,-3.89404943046442e-06,-7.75176692204533e-07,-3.11928531856603e-06,4.40191853621568e-08,-6.83284236107226e-08,1.2199177978766e-07,-8.45510139853496e-10,-1.02398784731522e-08,-1.25943839883508e-08,5.63559057425132e-08,-5.45462885502578e-08,1.47546521995269e-08,9.0651589543111e-09,3.83262159537094e-09,1.23762241154431e-08,4.40966994748184e-08,1.40994175915112e-07,2.92172355199834e-07,3.80604234342746e-07,8.00826200268988e-07,1.67629176016149e-07,1.02171942053496e-06,1.27579386983915e-07,1.29251605629473e-07,-6.8883798271221e-08,-2.43008816397995e-08,-6.74785060345714e-08,-1.7048243810275e-07,-2.34907181879528e-07,3.7789555549835e-07,-2.20141715805888e-07,-5.77484448816646e-08,3.97706919323344e-09,1.03845012028121e-09,-9.10530301523715e-09,-2.57276521515429e-08,-5.7623113503592e-08,-9.25690838776465e-08,-1.44509727889643e-07,3.15642212605895e-09,-2.16868372789536e-07,2.32681660032933e-08,1.02523166887644e-08,1.06658101246694e-07,1.85160977512344e-08,-1.38965149178189e-07,-2.60230250345166e-07,-1.58020024878273e-06,-2.53992388951428e-06,1.39962798583782e-06,-6.03826184389278e-07,-5.25241678012318e-07,-1.40028409176177e-07,-3.1505483282166e-08,-2.61105267313281e-08,1.38450670042464e-08,3.44967752744138e-08,7.30521172142082e-08,1.06633458838362e-07,2.739956659271e-07,4.3212295017898e-07,7.71398707342068e-07,1.06696338632994e-06,1.19457535405635e-06,7.26425927421795e-07,-3.53142424145342e-07,4.9425783965293e-07,-8.87634188828106e-06,-1.74221106393962e-05,1.20524659729294e-06,-2.1313048330753e-06,-3.27390472560806e-06,-1.84348983620755e-06,-4.95827152842444e-07,-2.02842858462885e-07,-2.77021113733697e-08,6.5867615090682e-08,2.44008367042707e-07,5.82572296450102e-07,1.2984751186541e-06,2.57163694065805e-06,4.60713666411784e-06,7.05545679334369e-06,8.58561260426081e-06,6.75214312588215e-06,3.93445625215242e-07,1.25346938424198e-05,-3.52415085000271e-05,-8.77286705958606e-05,-2.02789636168879e-05,-8.06896058781298e-06,-8.3459912399458e-06,-7.45322756634172e-06,-2.97214420397735e-06,-8.00494011108504e-07,1.54271628020321e-07,5.17169574554743e-07,1.16945830363043e-06,2.62343547122272e-06,5.74827034419188e-06,1.16803007355691e-05,2.14423550779555e-05,3.42306663156728e-05,4.4378233336379e-05,4.01428349957163e-05,1.2447061790151e-05,7.32403467992053e-05,-0.000103567225410492,-0.000316644994316105,-0.000133475302654519,-6.91554361298882e-05,-3.13089420174007e-05,-2.02070582045275e-05,-1.00911624274785e-05,-4.22524106825758e-06,-6.00649845583443e-07,1.22573248491889e-06,3.74229462919681e-06,8.89807750332323e-06,1.97591990219716e-05,4.0651217042246e-05,7.58408172187877e-05,0.000123877149500916,0.000166739366329942,0.00016191004811668,7.32122041356415e-05,0.000167955925950207,-0.000154765412315617,-0.000618653251696459,-0.00019054220202577,-9.680567488802e-05,-4.94658839898244e-05,-2.9285822284058e-05,-1.25899279570983e-05,-7.18723937120149e-06,-2.64069614784217e-06,4.71231729554161e-07,4.57309197121883e-06,1.26428370561537e-05,2.98181552897492e-05,6.42149412035136e-05,0.000125279287739634,0.000215122777438644,0.000304244030077185,0.000316877236489554,0.000167935548857395,0.000320868164655412,0.000233959897142014,-0.00136116343496355,-0.00038501170977652,1.89287902912483e-07,7.46840880646994e-05,1.96163713888072e-05,5.39170750098535e-06,-2.32529162479333e-06,-3.01014137136427e-06,-2.15857081267764e-06,-1.0778843548735e-06,6.02138539657315e-07,5.25537816290063e-06,1.91642487712606e-05,5.64493473665767e-05,0.000137630192120382,0.000280665757323132,0.000388052377501801,0.000320883758681253,0.00126489784491811,0.00177169406059256,-0.0043465071964841,-0.00107882101827951,0.000252204946813341,0.000457926915972434,0.000254979949548344,0.000113396696094639,4.26471367732583e-05,1.45650572879436e-05,4.50196907700273e-06,1.31010784651316e-06,1.36380894285346e-06,7.30633212221949e-06,3.40261987995996e-05,0.000126347343532239,0.000390985873521734,0.000902195458197557,0.00153507723789829,0.00126495029565331,0.0041834039695498,0.00193249431402152,-0.0243480098780372,-0.0133499520007566,-0.00526221888982819,-0.00165553089485308,-0.000471710594535746,-0.000118688294118893,-2.78784286584435e-05,-5.95854158590069e-06,-1.24825182423353e-06,-5.15626627776106e-07,-2.66143083191976e-07,3.98009864983562e-06,3.47403924176344e-05,0.000186070093224792,0.000768152415384363,0.00259707019785513,0.00487696544595441,0.00418348238976236,0.0112530014595875,0.18060244072506,0.0808262815722512,0.020991769650707,0.0042538988949226,0.000835661385159567,0.000142619931400775,2.33054647674259e-05,3.58962513590856e-06,5.19681040609347e-07,1.04984168400028e-07,-1.99291810807962e-07,-1.1482147442669e-06,-2.88339433513773e-06,1.73758908465942e-06,0.000104633094457875,0.000740293961970217,0.00266713258078013,0.00191007964339576,0.0112530806817086,-3.06787045794162,-0.279125757600365,-0.0418881387518442,-0.00503043085847977,-0.000647498024875997,-8.25266042819734e-05,-1.06127915747712e-05,-2.07075481617972e-06,-4.33905872837488e-07,-2.75593982622268e-08,2.75373423251022e-08,2.39450760977389e-07,9.35077911463303e-07,5.6955557010509e-06,5.84737834441614e-05,0.000522419806289985,0.0049812066040232,0.0418258034987625,0.270809324980791,2.81877566785864,-3.55576584862435,-0.332825216890392,-0.0482478584793374,-0.00593832319918441,-0.000759640369466894,-9.50188689572004e-05,-1.26804829791091e-05,-2.39216808494268e-06,-5.05808247254399e-07,-3.37054833125142e-08,3.41558471224103e-08,2.7269430438481e-07,1.11218095652699e-06,6.75415470263706e-06,6.69883726346803e-05,0.000620623753706202,0.00582961803288007,0.0484614448292354,0.322740887258425,3.26948276116098,0.00779074304631854,0.0106671044346196,0.000689311099049498,0.000114024721104258,4.69521872151863e-05,8.00786850715372e-06,1.70134341770902e-06,2.96028675715177e-07,5.44552098719299e-08,-2.10825419994068e-08,-6.75544592926092e-08,-3.7627950883495e-07,-2.6961579279199e-06,-2.45737901542623e-05,-0.000204246824141607,-0.0014514719220181,-0.010495296204513,-0.056230773996873,-0.216175046079094,0.00779080355082562,-0.00107968219033564,-0.00194784239036863,-0.000340383104090986,-3.70165810156818e-05,-8.15726901874597e-06,-3.72820894998046e-07,-1.53131055999506e-07,-1.61622172842574e-08,1.10564300378912e-09,8.72808686234947e-09,7.14524163597711e-08,5.50842563557143e-07,4.19905269659395e-06,3.67164087569304e-05,0.000228799358214101,0.00149059436659245,0.0076580094053874,0.0233458282136978,0.00893620168129695,-0.00107963947259732,0.000365785691042273,0.00010438304215352,1.07897820072655e-05,8.77472012536693e-07,7.81865962393011e-07,-4.12533931811256e-08,3.21470516758302e-08,-1.35394963596547e-09,-8.42684238402404e-10,-1.05354105556788e-08,-1.03490069346584e-07,-6.08014246204841e-07,-5.54772401020825e-06,-3.36350930235332e-05,-0.000189214253741946,-0.000971056436796622,-0.00268255990846132,-0.00148685038895654,-0.00123962658710438,0.000365807385505108,-2.4759470377376e-05,-1.30363415902354e-05,-2.14833231355915e-06,-2.40591748617599e-07,-1.37161441814915e-07,1.83838715533497e-08,-7.85903524312145e-09,1.47588462071386e-09,1.68215707428922e-09,2.51860337364138e-08,1.2334411541802e-07,1.04680604708187e-06,6.05736896909539e-06,2.89482525335026e-05,0.000130601747976603,0.000322614855095859,0.000246342551277531,0.00034646827055295,3.56924317206032e-05,-2.47527568626708e-05,4.64417316584111e-06,1.35460478525924e-06,3.19936170368826e-08,3.54119824073167e-09,1.33139856553904e-08,-5.29757917189272e-09,1.64273057920242e-09,-9.79802943456845e-10,-8.28960391522625e-09,-3.62609325830963e-08,-2.70461147614572e-07,-1.34161541155165e-06,-5.70305994800066e-06,-2.01322376358708e-05,-4.06883857141904e-05,-2.6578033326899e-05,-8.48763009230056e-05,-1.34540516679961e-05,-7.4763125964318e-06,4.64036652376861e-06,-2.33357772943429e-07,-1.83765250885317e-07,-2.16091198718428e-08,-7.12941204525239e-09,-3.45234288705593e-09,2.42518980841819e-09,-1.16472858274723e-09,2.68966481862115e-09,6.79649574758148e-09,6.53580993829886e-08,2.72788737542508e-07,1.1627001759381e-06,3.77827838984429e-06,7.08114939516733e-06,5.49047201460565e-06,2.04884678700404e-05,1.52309212391646e-06,7.7855114987832e-06,-1.41736180047275e-06,-2.49538514666087e-07,1.65216366492904e-07,1.95880768206199e-08,1.62854756815124e-09,7.47817168949192e-09,-1.05287667241801e-08,6.84888573355462e-09,-1.57592817461619e-09,-2.64933046163335e-09,-1.50317472810092e-08,-6.27041793851856e-08,-2.44965334589309e-07,-7.97967542446135e-07,-1.52575191620387e-06,-1.52436685177862e-06,-4.45689836302314e-06,-5.69188114070973e-07,-3.31305794365361e-06,1.30992302907354e-07,-9.53921614636103e-08,1.30062891643313e-07,1.7319672446578e-09,-1.33578683826311e-08,-1.45732610411199e-08,6.54927773243802e-08,-6.35118661283436e-08,1.54603768782009e-08,9.37697325554391e-09,3.21567697273491e-09,1.36058932541168e-08,5.30868355571275e-08,1.65025355901646e-07,3.34301754228108e-07,4.34856730234273e-07,9.21654972024235e-07,1.22440333820294e-07,1.06267247273281e-06,7.7801214774708e-08,1.44610492754931e-07,-7.2312965013557e-08,-2.89348059161268e-08,-7.3344440184338e-08,-1.99431545614897e-07,-2.7315622127101e-07,4.38487728529016e-07,-2.49064225653637e-07,-6.18447185821169e-08,1.26672140459072e-08,5.56044674458166e-09,-1.10438351952843e-08,-3.15777887590074e-08,-6.58052094236956e-08,-1.03912699684091e-07,-1.64697846703841e-07,1.6034246231003e-08,-2.14777723957956e-07,6.28431123590579e-08,2.4630548951619e-08,1.22214779498201e-07,2.10803806779768e-08,-1.66020841661053e-07,-2.99339168022006e-07,-1.84119572360349e-06,-2.95146386001575e-06,1.605290573969e-06,-7.20554183485199e-07,-6.54966312440901e-07,-1.97228584391317e-07,-4.32643658410234e-08,-2.2815287074323e-08,1.62466306391885e-08,3.89920594634524e-08,8.32995433400314e-08,1.22320100101766e-07,3.10118177072457e-07,4.90627913985951e-07,8.8939838836352e-07,1.24047297606608e-06,1.39020535286894e-06,8.47091371723905e-07,-4.19496056476754e-07,5.98457205461985e-07,-1.03262712057193e-05,-2.02425446981684e-05,1.44454847473997e-06,-2.29510957265014e-06,-3.60057769058072e-06,-2.05007432964813e-06,-6.18760873259965e-07,-2.4298103557393e-07,-3.21010479221744e-08,7.77376134485284e-08,2.84026811348082e-07,6.79978192788833e-07,1.51424725211962e-06,2.99625400950022e-06,5.36266934554247e-06,8.21104751317831e-06,9.99232839939208e-06,7.86779975634295e-06,4.68116497839389e-07,1.45216383665366e-05,-4.08802211410749e-05,-0.000102173234825439,-2.40802795595519e-05,-1.03681627191249e-05,-1.05594596971233e-05,-8.50309349641888e-06,-3.38568242564498e-06,-9.24168802007506e-07,1.73753237017861e-07,6.05293246151771e-07,1.3581582183248e-06,3.05047668839393e-06,6.68211459629086e-06,1.35770981529296e-05,2.4920558882709e-05,3.97734518258652e-05,5.15529069017823e-05,4.66064124524861e-05,1.44093252015511e-05,8.49812084081417e-05,-0.000120364318476618,-0.000368453047274535,-0.0001518903167716,-7.44050161132706e-05,-3.66733965955334e-05,-2.40362869160047e-05,-1.18612065996962e-05,-4.85162573117687e-06,-7.29600351556777e-07,1.44278737194039e-06,4.36208123933529e-06,1.037756768219e-05,2.30399626365166e-05,4.73993710349539e-05,8.84197754499482e-05,0.000144422351518128,0.000194362582603403,0.000188830233901874,8.49467163629016e-05,0.000198790762444239,-0.000183217086191013,-0.000727399882696194,-0.000258147552906496,-0.000116824571922499,-5.53625085976087e-05,-3.29599478629876e-05,-1.53449719343e-05,-8.17885065328828e-06,-3.15243386732627e-06,5.61375771036114e-07,5.33601182169826e-06,1.47608883364248e-05,3.48187253542183e-05,7.4983006882434e-05,0.000146349344085371,0.00025128647642372,0.000355829110051136,0.000370521357718394,0.000198769524983584,0.000369047450350885,0.00025359422209521,-0.0014232629394396,-0.000404245016458549,-2.91360858094394e-06,7.60061093257319e-05,2.73433082740433e-05,5.3485672750282e-06,-2.3539690354916e-06,-3.5170972628782e-06,-2.50101923093081e-06,-1.25808242350515e-06,6.85412077249957e-07,6.04940950912517e-06,2.21246727538565e-05,6.4890914731177e-05,0.000158625099175386,0.000319782356649587,0.000444408634341427,0.000369073033446979,0.00152020054772743,0.0017842562183601,-0.00531185239206583,-0.0013606937726423,0.000358503599680131,0.000508597121078093,0.000300614004208596,0.00013096307815927,4.97086313821801e-05,1.69413192941242e-05,5.24044257212004e-06,1.52709348270604e-06,1.59244103898545e-06,8.53361177240093e-06,3.9563816905516e-05,0.000147579872918864,0.000451712889809996,0.0010550442369368,0.00174345525188333,0.00152027565163442,0.00477184969845644,0.0035018000840855,-0.0272537361084629,-0.0158910685531855,-0.00604303948685848,-0.00194346683298801,-0.000547561476987709,-0.00013851011937724,-3.24952668556376e-05,-6.94107824642108e-06,-1.45614141595785e-06,-6.00118507893025e-07,-3.14685572797124e-07,4.66088738222042e-06,4.05354407154713e-05,0.00021575182175582,0.000903191418553967,0.00295987001705343,0.00577353141988327,0.00477195925561478,0.0121489491216756,0.205528177105672,0.0956821825687985,0.0242330141853024,0.00500654924376698,0.000972241383195465,0.00016658932039358,2.72841725920735e-05,4.1756755318536e-06,6.08343641002805e-07,1.21666054877537e-07,-2.3369234491834e-07,-1.3272248834044e-06,-3.47740515378491e-06,2.72005726347149e-06,0.000120963136078917,0.000851770111086697,0.00325507464343387,0.0013135003009057,0.0121490589166766,-3.55576584919998,-0.332825217505671,-0.0482478585667661,-0.00593832320100096,-0.000759640375303154,-9.50188697977218e-05,-1.26804832108415e-05,-2.39216813969137e-06,-5.0580825736374e-07,-3.37054843394747e-08,3.41558479789649e-08,2.72694309408433e-07,1.1121809656899e-06,6.75415468984873e-06,6.69883721273117e-05,0.00062062374889699,0.00582961800110486,0.0484614447983367,0.322740886737395,3.26948278092637,-3.87755300967965,-0.370427276033154,-0.0522568380353118,-0.00658058359549025,-0.00083082869064439,-0.00010331608494592,-1.41064557838018e-05,-2.58024083748092e-06,-5.55772997477611e-07,-3.75332680153976e-08,3.90420748376751e-08,2.91554492241966e-07,1.24940960798111e-06,7.39282831117106e-06,7.26848344970304e-05,0.00068812745981912,0.00639912716445577,0.0527729966752233,0.358862073476772,3.56867706190168,0.00877115268044109,0.0122427484301662,0.000592722342431852,0.000155198069292113,4.72023484609576e-05,9.10998918561165e-06,1.8709006347115e-06,3.1363480587197e-07,6.15677347019145e-08,-2.33656846234158e-08,-7.32399324072251e-08,-4.07864836347454e-07,-3.0164538611701e-06,-2.6701885707741e-05,-0.000223134524201531,-0.00161353100533332,-0.0113213546640254,-0.0624728163552205,-0.235358129999636,0.00877123338026126,-0.00124826678690095,-0.00216333086576568,-0.000350470833315733,-4.71067648520162e-05,-7.53304570665632e-06,-6.2466756799971e-07,-1.43984794615608e-07,-1.82232766356272e-08,7.94745154192585e-10,1.00017324135082e-08,7.50181859886527e-08,6.11032114206572e-07,4.6663998595579e-06,3.90829986063147e-05,0.000258217536358209,0.00159316443012317,0.0084670934065565,0.0254385946599055,0.00957545534925851,-0.00124820883078991,0.000404684057242846,0.000114567154574708,9.57754223636937e-06,1.99972691792056e-06,5.45975161041266e-07,2.20740183807103e-08,2.37718145165567e-08,-1.09393823552332e-10,-1.15025008556911e-09,-1.11821541122832e-08,-1.08662018749418e-07,-7.18730218470193e-07,-5.68219024936868e-06,-3.84146775585092e-05,-0.000201139301486068,-0.00106505149672621,-0.00292516910656375,-0.00159255889500037,-0.0013177667821818,0.00040471514673422,-2.7232368978496e-05,-1.3864243497915e-05,-2.21573087077725e-06,-3.99911567360684e-07,-9.15846239223161e-08,3.10715647403463e-09,-4.7752782357806e-09,9.51934480206981e-10,2.2097791124233e-09,2.42913771127097e-08,1.55462005380094e-07,1.04859544013226e-06,6.91166910226048e-06,3.10029737250131e-05,0.000142071608146489,0.00035112813945519,0.000265863239172368,0.000367097155465798,3.48682053476122e-05,-2.72215713028177e-05,4.98282854344481e-06,1.39278936404289e-06,4.80844481836539e-08,1.6809078454846e-08,4.69788073764501e-09,-1.88674589314328e-09,6.92199344750696e-10,-1.03385525014061e-09,-7.72322718944048e-09,-4.59713869614665e-08,-2.75340428155464e-07,-1.51132920595905e-06,-6.20871327539703e-06,-2.1797271569824e-05,-4.40652880905604e-05,-2.83258914808446e-05,-9.07741192881729e-05,-1.20048083042641e-05,-7.84247998046866e-06,4.97794976266498e-06,-2.06184273484864e-07,-1.94745184341399e-07,-2.97516226621436e-08,-7.68847645803406e-09,-2.44058736456179e-09,1.80010269136731e-09,-8.68076846762274e-10,2.33429956447483e-09,9.00879236278027e-09,6.78918093573693e-08,3.0179129053444e-07,1.28277618372948e-06,4.09482479610165e-06,7.63485899322136e-06,5.82860300084436e-06,2.20871196938586e-05,7.86415451074318e-07,8.0602260665757e-06,-1.55384144461849e-06,-2.28427741132147e-07,1.73136881613736e-07,2.25278501312296e-08,3.17176399467892e-09,7.55501878689891e-09,-1.14211639461807e-08,7.54112155376503e-09,-1.45137195283119e-09,-2.9962955448243e-09,-1.59658100109077e-08,-6.78901917077217e-08,-2.72512556226672e-07,-8.7127502772384e-07,-1.64116027916056e-06,-1.61204621128867e-06,-4.81962397044243e-06,-4.12273680080623e-07,-3.36224021928742e-06,2.06812705492605e-07,-1.19579387948973e-07,1.26670433095062e-07,5.67769802953601e-09,-1.67880519237874e-08,-1.55122522301164e-08,7.12740363839922e-08,-6.90699408019483e-08,1.58827147611313e-08,9.47008137665989e-09,2.45066884643844e-09,1.42278220279387e-08,5.91333421104643e-08,1.82117782913978e-07,3.59643505435226e-07,4.56289260026837e-07,9.90504673185263e-07,9.38356811473312e-08,1.0668179235146e-06,2.77532993605964e-08,1.52729608124829e-07,-7.02357758323777e-08,-3.37355763174712e-08,-7.12648816036506e-08,-2.19649420143509e-07,-2.97566726618652e-07,4.77183607963166e-07,-2.67722802327352e-07,-6.53715244832869e-08,2.06389030618345e-08,9.96091162355369e-09,-1.29517061059739e-08,-3.64408401164988e-08,-7.11601860717832e-08,-1.07754818996439e-07,-1.71997094578358e-07,2.43630583098841e-08,-2.09049368600928e-07,9.58458924534188e-08,3.80576473090905e-08,1.31496956622125e-07,2.3292759505899e-08,-1.89180130338472e-07,-3.19782644528271e-07,-2.01573448483328e-06,-3.21956159143649e-06,1.73647050647226e-06,-7.87230022932985e-07,-7.48404845672731e-07,-2.47001796383729e-07,-5.09243320324202e-08,-1.51880534192757e-08,1.86045649636476e-08,4.12845410306562e-08,8.77555887171855e-08,1.32018376040655e-07,3.33115047956781e-07,5.27561736274542e-07,9.64559493495316e-07,1.35365225288817e-06,1.51764906724086e-06,9.27244050547263e-07,-4.73301838409927e-07,6.87306786961979e-07,-1.12637422605702e-05,-2.20605080838949e-05,1.54650666009962e-06,-2.39090291254347e-06,-3.743735536516e-06,-2.1577588412372e-06,-7.29174310325861e-07,-2.7656854897575e-07,-3.65342847968157e-08,8.72305864065613e-08,3.09962994831881e-07,7.4365713537087e-07,1.65455253622825e-06,3.27293662531114e-06,5.85422193003788e-06,8.96351707186753e-06,1.09085441426358e-05,8.60361837500395e-06,5.18028714696912e-07,1.57714070994958e-05,-4.44405594899243e-05,-0.000111269887563868,-2.6366216532577e-05,-1.20949787899296e-05,-1.22439483840003e-05,-9.03027232103173e-06,-3.60047535242692e-06,-9.8046230710965e-07,1.78071803059887e-07,6.63868358255069e-07,1.47750759580588e-06,3.32123838368995e-06,7.27351737239515e-06,1.47770498584648e-05,2.71179234615964e-05,4.32686031775162e-05,5.60720995652035e-05,5.06591674853506e-05,1.56221757519615e-05,9.21799506666491e-05,-0.000130814977455918,-0.000402366722104944,-0.000162890744798385,-7.56592317704137e-05,-4.06237370599325e-05,-2.66604348267398e-05,-1.31597609250297e-05,-5.20620296289966e-06,-8.20404416278923e-07,1.58156176928498e-06,4.75814270725375e-06,1.13206214737704e-05,2.51314524914041e-05,5.16999706130929e-05,9.64347419179443e-05,0.000157512771177214,0.000211930446566145,0.000205999152966783,9.21342310522221e-05,0.000219948498066554,-0.000201007869185334,-0.000794906076561594,-0.000313712849568779,-0.000127429138892268,-5.86899160758694e-05,-3.42497190434353e-05,-1.72731703758698e-05,-8.794682850141e-06,-3.47228987808354e-06,6.14416582427489e-07,5.82257167255046e-06,1.61100904990699e-05,3.80073066497584e-05,8.18612835462172e-05,0.000159835103989859,0.000274495465309631,0.000389288953374225,0.000405414487266947,0.00021992384410664,0.000397021221605346,0.000242574961249046,-0.00139461541709257,-0.000424528428913794,-3.88999812764337e-06,7.17880843131544e-05,3.26602754764214e-05,5.51524437595428e-06,-2.37779364685122e-06,-3.80166229548733e-06,-2.71492605199789e-06,-1.37256275853706e-06,7.24777958050041e-07,6.49939377841379e-06,2.38010599517681e-05,6.96394438805731e-05,0.000170257996936604,0.000339484927766472,0.000473876063426516,0.000397063033509693,0.00169989505587133,0.00169676886026869,-0.00586421829707169,-0.00157529703151213,0.000436053719242426,0.000539934932613902,0.000328234732294452,0.000142152602163846,5.41104463965933e-05,1.84403893160248e-05,5.70671583608606e-06,1.6646469575967e-06,1.74099272689952e-06,9.30722512309722e-06,4.30963517784831e-05,0.000160766592181024,0.00048900486240888,0.0011494029765543,0.00185177855897016,0.00170000461833395,0.00515951939667669,0.00456867806047167,-0.0288834830980855,-0.0175196516471254,-0.00655333957922366,-0.00212662867808053,-0.000596592098698989,-0.000151303487860464,-3.54517893600942e-05,-7.57516759894565e-06,-1.58875355212454e-06,-6.54351745220952e-07,-3.4651034369889e-07,5.12748596957185e-06,4.41209224253466e-05,0.000235278866517497,0.000988143665792567,0.00317554652620349,0.00633677585082886,0.00515967121251237,0.0119990584688756,0.222271497593259,0.105345260412289,0.0263722783635607,0.00550789138353278,0.00106069881483285,0.000182648200668409,2.9848284141638e-05,4.55746521839002e-06,6.6586244171787e-07,1.31300496960961e-07,-2.5496925784288e-07,-1.44918514816709e-06,-3.88090802080071e-06,3.72213431293458e-06,0.000129910742264418,0.000929730292822357,0.00362905011752278,0.000739847074437217,0.0119992065334815,-3.87755301054237,-0.370427276498611,-0.0522568381628228,-0.00658058359814654,-0.000830828697758068,-0.000103316086047487,-1.41064560654171e-05,-2.58024090901502e-06,-5.55773011320797e-07,-3.7533269372272e-08,3.90420758606388e-08,2.91554498516438e-07,1.24940962203563e-06,7.39282825997881e-06,7.26848339439092e-05,0.000688127451584097,0.00639912712488245,0.0527729965689756,0.358862072956334,3.56867708720176,-4.08607247878924,-0.396064726880115,-0.0546807796570953,-0.00703441808129571,-0.000872586408070081,-0.000108703923304387,-1.50849776435771e-05,-2.66867942059286e-06,-5.90984394183135e-07,-3.95426582305238e-08,4.26082157979654e-08,3.02376773750812e-07,1.34447481443346e-06,7.79081794691957e-06,7.63747748247862e-05,0.000732548029754759,0.00677909460937975,0.0554757805082232,0.383201841379818,3.76424304819532,0.00956618347556866,0.013308843926606,0.000489751078747417,0.000191299070670921,4.52150993450307e-05,1.00999252768591e-05,1.95464292038838e-06,3.21994955277707e-07,6.72353048516758e-08,-2.50635049124177e-08,-7.67532442459327e-08,-4.28148465985093e-07,-3.22589662901352e-06,-2.80974362901833e-05,-0.000234900932071221,-0.00172294524367862,-0.0118285492147985,-0.0665507725061921,-0.247864255795079,0.00956628421297875,-0.00137949822299438,-0.00229420038011939,-0.000354207798357143,-5.49711085615414e-05,-6.6768957080671e-06,-8.82270643920321e-07,-1.21756464722043e-07,-2.10954188615158e-08,5.93576626790489e-10,1.08384732620691e-08,7.73212089560834e-08,6.46867256220071e-07,4.98700201497712e-06,4.03905097263732e-05,0.000277655501023502,0.00165551381844407,0.00896929913960111,0.0267714718769042,0.0099598417166482,-0.00137942481914613,0.000428925728873245,0.000119487651221304,8.87052934873251e-06,2.81270395447498e-06,3.3424586386787e-07,8.11616354230421e-08,1.39588640594837e-08,1.43839052951283e-09,-1.41614627252305e-09,-1.16883406033159e-08,-1.10680140575309e-07,-7.92705100410577e-07,-5.73293284993684e-06,-4.13556783582271e-05,-0.000208465926106182,-0.0011192958826656,-0.00307082835848207,-0.00165688209154366,-0.00135763929768468,0.000428967520070252,-2.85525744360858e-05,-1.41336680771961e-05,-2.31300216036897e-06,-4.93449837242206e-07,-5.7659111237059e-08,-9.26459186498288e-09,-1.91404323200873e-09,4.01574073626898e-10,2.59539851665202e-09,2.35218294622797e-08,1.75088485641816e-07,1.04833403019307e-06,7.39191060663981e-06,3.22736225424382e-05,0.00014827436937725,0.00036646686415437,0.000278129942306337,0.000376988546590815,3.38073763254785e-05,-2.85360387891388e-05,5.12898461936336e-06,1.3887907975797e-06,7.33135583452465e-08,2.09648841170234e-08,-6.26087628272193e-10,6.31798843715882e-10,-9.88706563123887e-11,-1.01022321027688e-09,-7.33608450215356e-09,-5.17171142361309e-08,-2.78689972761562e-07,-1.60357157114016e-06,-6.52078009195223e-06,-2.27270171080625e-05,-4.57300418958452e-05,-2.9325674026469e-05,-9.41753791122185e-05,-1.06103362566253e-05,-8.05712220541342e-06,5.12215894731503e-06,-1.70287752595798e-07,-2.02780702726404e-07,-3.71979454191019e-08,-6.77403532783147e-09,-2.03300275121487e-09,1.37827786938907e-09,-6.22651887515914e-10,2.07369209492269e-09,1.03076358151378e-08,6.98053375386323e-08,3.1736101808439e-07,1.35850558406704e-06,4.28980105008368e-06,7.90790804181203e-06,5.96917707593188e-06,2.31022048027087e-05,2.17350060725095e-07,8.12659255626761e-06,-1.61969562648012e-06,-2.00406075281322e-07,1.76056161393541e-07,2.56963702623625e-08,4.28507722364337e-09,7.28546212526801e-09,-1.18771660583498e-08,7.86265326329094e-09,-1.35219564208913e-09,-3.10531816517926e-09,-1.66872385684208e-08,-7.06737671512481e-08,-2.89717214037184e-07,-9.19352698924515e-07,-1.70044144665951e-06,-1.63590314289034e-06,-5.04702119239802e-06,-3.07507765137986e-07,-3.33602099059229e-06,2.63062271278858e-07,-1.40591018004861e-07,1.17517778217204e-07,9.9706845942342e-09,-2.01084533712979e-08,-1.5780296403808e-08,7.49340953008649e-08,-7.21283048680881e-08,1.62474825642438e-08,9.21521445976762e-09,1.67469706111374e-09,1.46752681245809e-08,6.2982217553927e-08,1.93609626320699e-07,3.73502939609152e-07,4.59383260370712e-07,1.02675628611714e-06,7.89557181165367e-08,1.05370136349085e-06,-1.61037253385744e-08,1.5799511932314e-07,-6.57804865679886e-08,-3.80887997582674e-08,-6.56052525359188e-08,-2.33503671535363e-07,-3.12919638760501e-07,5.00147881045545e-07,-2.80944546097374e-07,-6.75667394850034e-08,2.83452211481368e-08,1.31845448140332e-08,-1.54851044054416e-08,-4.0290641629164e-08,-7.42852102048661e-08,-1.07412021227534e-07,-1.7229339567243e-07,2.91081781562451e-08,-2.02802201852984e-07,1.22069331838674e-07,4.89932917015912e-08,1.36601959256286e-07,2.53044236413518e-08,-2.07987252186564e-07,-3.28702772745442e-07,-2.12981504603658e-06,-3.38744832566604e-06,1.82576372397694e-06,-8.20269812239925e-07,-8.20835145074167e-07,-2.88180862255943e-07,-5.05744424913262e-08,-4.50868339789494e-09,2.04036711888519e-08,4.22248297630218e-08,8.89482387927292e-08,1.37916224757277e-07,3.47582793715155e-07,5.50134625587288e-07,1.01112022294413e-06,1.42562525294274e-06,1.59820463189412e-06,9.78771653789962e-07,-5.15299953232422e-07,7.57718845630169e-07,-1.18534700805514e-05,-2.32135511507004e-05,1.53097810917326e-06,-2.42042085474261e-06,-3.76268242122669e-06,-2.2266151552891e-06,-8.36380823368385e-07,-3.03551440274274e-07,-4.0809574139803e-08,9.47772143235072e-08,3.26036313383067e-07,7.83957703734573e-07,1.74296471395138e-06,3.44781776795822e-06,6.16438101259674e-06,9.43935864969818e-06,1.14883989319054e-05,9.07636030031386e-06,5.46986766491687e-07,1.65426408859624e-05,-4.65419481021966e-05,-0.000116469713290603,-2.76573928702873e-05,-1.34652182266485e-05,-1.34183593525373e-05,-9.15606839811327e-06,-3.68379646642095e-06,-9.93315188558315e-07,1.73006524362299e-07,7.01553144064736e-07,1.54876510153763e-06,3.48289912854595e-06,7.62610150696257e-06,1.54910429444484e-05,2.8423322119377e-05,4.53381859722134e-05,5.87468886807272e-05,5.30530631248507e-05,1.63479978293568e-05,9.60676193323765e-05,-0.00013692520821683,-0.000423118020785782,-0.000168246449070136,-7.47968556377276e-05,-4.36680917515837e-05,-2.83814491256698e-05,-1.40725535524191e-05,-5.3789227798082e-06,-8.79721634021187e-07,1.65977446690056e-06,4.98861989584438e-06,1.18670274821415e-05,2.63443361315105e-05,5.41934402815956e-05,0.000101078211640559,0.000165100348518639,0.000222057086113486,0.000215876616048886,9.60046668634163e-05,0.000233085627916811,-0.000208883699896027,-0.00083219327262241,-0.000354643565379263,-0.000130419882235121,-6.00084382295773e-05,-3.40886073791706e-05,-1.84191410242351e-05,-9.1502518409194e-06,-3.63397105144332e-06,6.39153644660519e-07,6.0948987924499e-06,1.68628334582476e-05,3.97897669845192e-05,8.57202418183916e-05,0.000167439669687404,0.000287643262547977,0.000408702085796288,0.000425954402891804,0.000233052247054555,0.000409956917642182,0.000213519982231667,-0.00132303475308446,-0.000447983606855375,-4.75345925368239e-06,6.58929496046785e-05,3.52709423077665e-05,5.93115654331294e-06,-2.44859141862197e-06,-3.93037330906099e-06,-2.83369208415584e-06,-1.4372246307375e-06,7.3517743290455e-07,6.70237458119231e-06,2.45443454928517e-05,7.17004006164506e-05,0.000175120754587632,0.000345482351559496,0.000483850643205969,0.000410024377520021,0.00181130871548037,0.0015841099811716,-0.00609829928660657,-0.00171904316143993,0.000482249696349959,0.000561318552553107,0.000342652570360424,0.000148841202643256,5.66237876622704e-05,1.93053036902704e-05,5.97775941735524e-06,1.74425803074918e-06,1.83140417001969e-06,9.75418041877644e-06,4.51827643658378e-05,0.000168181043561672,0.000509757088314545,0.00120138384670205,0.00189788397618186,0.00181146408787656,0.00544165974664325,0.0051205616503959,-0.0297818690186534,-0.0184680380945567,-0.00688535535801628,-0.0022357148845514,-0.000626830386573427,-0.000159211368713427,-3.72307241486521e-05,-7.96374375512083e-06,-1.66788170606151e-06,-6.86919454252069e-07,-3.65500296112925e-07,5.43903858282428e-06,4.6226850392705e-05,0.000247599182451201,0.00103828250984282,0.00329810723627231,0.00665280072827696,0.00544185897192218,0.0113152207029046,0.233809877587662,0.111265756634159,0.0277683114279589,0.00583250716755248,0.00111527646512928,0.000193230212775019,3.14086074619745e-05,4.79209637701172e-06,7.01585868125766e-07,1.35888285859549e-07,-2.67790244144507e-07,-1.53026523695261e-06,-4.13779925061558e-06,4.53699483818875e-06,0.000135013985456986,0.000980576902203168,0.00385705557110355,0.000305441471946167,0.0113154081206221,-4.0860724804848,-0.396064727501351,-0.0546807798518066,-0.00703441809803009,-0.000872586414734947,-0.000108703924455361,-1.50849779024249e-05,-2.6686794909769e-06,-5.90984409091237e-07,-3.95426596069476e-08,4.26082168267497e-08,3.02376781254133e-07,1.34447483477297e-06,7.79081784342638e-06,7.63747743575837e-05,0.000732548019162119,0.00677909456934627,0.0554757803541244,0.383201841434891,3.76424307951852,-4.21730957502352,-0.412813828462017,-0.056080481424811,-0.00734744593814333,-0.000894796885089042,-0.000112103752956429,-1.57390752499306e-05,-2.69495805194091e-06,-6.15501793935623e-07,-4.03603271149475e-08,4.50915572876802e-08,3.09750167909784e-07,1.39609149240997e-06,8.07700948782916e-06,7.86052188442839e-05,0.000759955333633001,0.00702855423736121,0.0570888668949212,0.398853563327173,3.88823929412773,0.0101930738470166,0.0139681702661769,0.00040001462082555,0.000220239193617307,4.23109924543016e-05,1.09447010707345e-05,1.98348584406474e-06,3.25043333067813e-07,7.1606169773786e-08,-2.62102115328409e-08,-7.94746577860454e-08,-4.38788849142996e-07,-3.35529264038025e-06,-2.90305998234371e-05,-0.000241628840115525,-0.00179410045827042,-0.0121318256050848,-0.0690653759517085,-0.255714523358101,0.0101931908687508,-0.00147188861786086,-0.00236706111607829,-0.000355681605084455,-6.06093884256086e-05,-5.84170317930481e-06,-1.11147664596042e-06,-9.51245935879197e-08,-2.42148003185766e-08,4.71011927051375e-10,1.14363970250529e-08,7.90255992830054e-08,6.6392522255036e-07,5.2101437002288e-06,4.10578201014786e-05,0.000289633662864669,0.00169380649578548,0.00926083051430857,0.0275834843305017,0.0101680126913463,-0.00147180254469925,0.000442506313717267,0.000121239872552273,8.60461254242093e-06,3.32378621679425e-06,1.74394544718169e-07,1.28274065506489e-07,4.98200895311162e-09,2.9491334280435e-09,-1.6161435872652e-09,-1.22571742381333e-08,-1.10407368171584e-07,-8.39356589700777e-07,-5.75911140744649e-06,-4.29541104802327e-05,-0.000213123732310527,-0.00114792823751336,-0.00315252944509502,-0.00168988974659717,-0.00137592016902219,0.000442557708461701,-2.90332129220079e-05,-1.41488580309436e-05,-2.4095749342887e-06,-5.35563300262882e-07,-3.7962153945036e-08,-1.71557052673917e-08,7.54822163051349e-11,-1.09712424570353e-11,2.84889218831592e-09,2.30881033280809e-08,1.84689815597905e-07,1.05431992219635e-06,7.60744643714411e-06,3.30316106709065e-05,0.000151167139969361,0.000373313400427064,0.000284311324308727,0.000380303174609973,3.31453929280706e-05,-2.90100788217999e-05,5.16404703511973e-06,1.37484992686847e-06,9.68958272361545e-08,2.004980307527e-08,-3.16097473925118e-09,2.13929255791798e-09,-6.23052578535286e-10,-9.60903363143923e-10,-7.16251555860818e-09,-5.43141139876967e-08,-2.82163806523645e-07,-1.64277168336515e-06,-6.6959139084903e-06,-2.31974041138724e-05,-4.64185127361926e-05,-2.97365657749597e-05,-9.57510976910711e-05,-9.53479957289607e-06,-8.22967349321944e-06,5.15542118978212e-06,-1.38723921246089e-07,-2.08977891427532e-07,-4.29336720640888e-08,-5.31345085781476e-09,-2.02347601413369e-09,1.15121215761828e-09,-4.68472692048345e-10,1.92061073298696e-09,1.08811724778099e-08,7.14191522708449e-08,3.24218529716339e-07,1.40169327688379e-06,4.403670006501e-06,8.02844213614327e-06,5.99243336046871e-06,2.36375412937963e-05,-2.18824030741284e-07,8.10341518074276e-06,-1.62726144278179e-06,-1.7685659559815e-07,1.77224272279775e-07,2.85401361115658e-08,4.88046520289874e-09,6.9113739660367e-09,-1.21259456960439e-08,8.00501564615591e-09,-1.21350079362927e-09,-3.04057296930137e-09,-1.72434801292316e-08,-7.20244170685187e-08,-2.99162250063897e-07,-9.48096856384332e-07,-1.72762215789003e-06,-1.62954870795993e-06,-5.16092269040178e-06,-2.14846679924008e-07,-3.28063790747037e-06,2.96649950853934e-07,-1.60085199677564e-07,1.08566434951184e-07,1.34544345249894e-08,-2.26668084506819e-08,-1.55825442805137e-08,7.74575391180653e-08,-7.35919365130511e-08,1.62157954275898e-08,8.47914391136635e-09,1.02468776404865e-09,1.51277583324871e-08,6.52119060290241e-08,2.0038281449249e-07,3.80022710041544e-07,4.55070699036436e-07,1.0401361501952e-06,6.10517278222872e-08,1.03063290716391e-06,-4.95118360741855e-08,1.63432064112803e-07,-6.10513087612644e-08,-4.14667986494121e-08,-6.04712683650117e-08,-2.43059942905448e-07,-3.23437903942065e-07,5.11732349007701e-07,-2.89464035172789e-07,-6.63784662647393e-08,3.56511854526546e-08,1.47404775742118e-08,-1.82897285757441e-08,-4.28509624988251e-08,-7.56931431809706e-08,-1.05528827183742e-07,-1.69546457082159e-07,3.46534487650413e-08,-1.94388561687667e-07,1.4209052345237e-07,5.62527192687308e-08,1.38845212514045e-07,2.67642921626683e-08,-2.21952803901591e-07,-3.29288122153331e-07,-2.19795569908004e-06,-3.48157118696267e-06,1.88896953644858e-06,-8.44223881016355e-07,-8.83393871193896e-07,-3.18447528878618e-07,-4.34814062327353e-08,5.72039746929094e-09,2.11201796570081e-08,4.24918218645382e-08,8.87396162524839e-08,1.40877934595241e-07,3.55361687623009e-07,5.62749094241979e-07,1.03914949859002e-06,1.47025129428513e-06,1.64772339545755e-06,1.01202411711668e-06,-5.41988175961759e-07,7.94204832733301e-07,-1.22304357600101e-05,-2.39547133649826e-05,1.47867839597712e-06,-2.35861212090204e-06,-3.71378067624888e-06,-2.28710965093312e-06,-9.30720749065274e-07,-3.20605503241873e-07,-4.4512628240954e-08,1.00612422064472e-07,3.35530570965358e-07,8.08671541573424e-07,1.79683963440174e-06,3.55413245223431e-06,6.35220380207129e-06,9.72759828578757e-06,1.18392061931981e-05,9.35831470439039e-06,5.49146487810454e-07,1.70553871441391e-05,-4.76302011000628e-05,-0.000119150154445729,-2.85877536878685e-05,-1.46217623922545e-05,-1.41514377562394e-05,-9.05886399858255e-06,-3.71496335551382e-06,-9.87098561492441e-07,1.63561369282643e-07,7.24983950800572e-07,1.59023857334127e-06,3.57603863837839e-06,7.82913661474983e-06,1.59011772843031e-05,2.91727749088649e-05,4.65234301874317e-05,6.02832802624776e-05,5.44670934441908e-05,1.68183224455601e-05,9.78485969631506e-05,-0.000140865348973287,-0.000434455167683617,-0.000169727836587507,-7.32772913921106e-05,-4.60035109041466e-05,-2.93963714363231e-05,-1.46600016423711e-05,-5.44875887077556e-06,-9.12317551627359e-07,1.69683719339311e-06,5.11111629270313e-06,1.21555372563282e-05,2.69859380146326e-05,5.55112463418735e-05,0.00010352389394785,0.000169088407833839,0.000227296772738146,0.000220804268818475,9.77649335815193e-05,0.000240048342563387,-0.000209171671695145,-0.000850954891212746,-0.000380475174684616,-0.000129248125013392,-6.02534117571994e-05,-3.35118223898134e-05,-1.89471747278475e-05,-9.3513287780421e-06,-3.68857640182116e-06,6.45704654605568e-07,6.21810340147517e-06,1.72011343977144e-05,4.05949033886018e-05,8.74779494186571e-05,0.000170948241241386,0.000293783105512009,0.000418198291273866,0.000436599844538643,0.00024000102651926,0.000413599095382591,0.0001824522465689,-0.00124920391275412,-0.000467619761335926,-6.02014736722407e-06,6.16445883738165e-05,3.58309440501352e-05,6.49757135957035e-06,-2.54326880985619e-06,-3.97007195290154e-06,-2.88963184920119e-06,-1.46769933925962e-06,7.33508480460074e-07,6.76056425339063e-06,2.47348726385938e-05,7.21558938691819e-05,0.000175963714841878,0.000344216509114724,0.000482298560795432,0.000413699241702578,0.0018705936769108,0.00149413620792385,-0.00615941575981337,-0.00180528650482176,0.00050279034425381,0.000577075015754394,0.000349002310708337,0.000152639020991818,5.79634237050745e-05,1.97666753224087e-05,6.12459405273738e-06,1.78633455961962e-06,1.88317405005673e-06,1.0002467963857e-05,4.63418058779933e-05,0.00017208836194503,0.000520505203518675,0.00122710060196923,0.00191574941529897,0.00187079665625084,0.00565762611113329,0.0053235118183939,-0.0302879641303509,-0.0189731527838048,-0.00710176367854006,-0.00229739890742316,-0.000644820414785354,-0.000163954841274854,-3.82458239326439e-05,-8.19165291435718e-06,-1.7121319536561e-06,-7.05098253316328e-07,-3.75293874973707e-07,5.63140131322026e-06,4.7473271286674e-05,0.000254932035301636,0.00106681712136289,0.0033676400923717,0.00680788396329985,0.00565786686723219,0.0105353876879539,0.241694210022956,0.114692502797698,0.0286643517433254,0.00603652052670739,0.00114726380588942,0.000200062170292774,3.23005385512745e-05,4.92787563032115e-06,7.22594769178161e-07,1.37499964279385e-07,-2.76086594175428e-07,-1.58016405681378e-06,-4.28647765471368e-06,5.01061076949578e-06,0.000138707152378485,0.0010091860095669,0.00399482205403954,3.33100488379542e-05,0.0105356075354986,-4.21730957831704,-0.412813829691737,-0.0560804817275715,-0.00734744598376705,-0.000894796890790794,-0.000112103753954359,-1.57390754550479e-05,-2.69495810534461e-06,-6.15501807078625e-07,-4.03603282448779e-08,4.50915584353943e-08,3.09750176825591e-07,1.39609151654376e-06,8.07700937820254e-06,7.86052184527731e-05,0.000759955323489279,0.00702855420270573,0.0570888667509341,0.398853564611435,3.88823933103661,-4.29037927892828,-0.422410341999671,-0.0568053581698173,-0.00753621783856651,-0.000904783337754756,-0.000114005601025511,-1.61170837387745e-05,-2.69269635126842e-06,-6.30474797749735e-07,-4.0498009883655e-08,4.65007742642245e-08,3.14864654042631e-07,1.41482116137454e-06,8.27258415337705e-06,7.97782601666858e-05,0.000774497914436974,0.00717346152463205,0.0579325320147559,0.4075876976008,3.95775505400961,0.0105917245305838,0.0143120770860592,0.000337334306169005,0.000239180271853975,3.98197291065215e-05,1.15343241318848e-05,1.98500039227647e-06,3.25830315623625e-07,7.4420270358257e-08,-2.68533991948183e-08,-8.14906758120009e-08,-4.42965860310899e-07,-3.42335369054403e-06,-2.95956143824506e-05,-0.000244888990410324,-0.0018344299770285,-0.012292790997155,-0.0704103231471235,-0.259990617467197,0.0105918520842274,-0.001521854997202,-0.00240249081914023,-0.000356378649522789,-6.40149185981787e-05,-5.2405092936516e-06,-1.2715895223794e-06,-7.36738004924802e-08,-2.66911982299771e-08,4.09698045740229e-10,1.18162323059975e-08,8.02508480298349e-08,6.69288056679257e-07,5.34766978476189e-06,4.13509727721914e-05,0.00029598259429914,0.00171501552390629,0.00940791632800808,0.0280130779574472,0.0102526787046281,-0.00152176073647461,0.000448600771344447,0.000121612256408141,8.54492721012057e-06,3.59199090331349e-06,7.69596057919195e-08,1.58509170567045e-07,-1.39513248404336e-09,4.11247409075856e-09,-1.75346766203898e-09,-1.27578843549543e-08,-1.09308003361848e-07,-8.646555362191e-07,-5.77608829420438e-06,-4.36778153193537e-05,-0.000215781452200066,-0.00116093973143365,-0.00319263099412783,-0.0017006340119667,-0.001383168544388,0.000448658689008592,-2.90485671909644e-05,-1.41239659847921e-05,-2.46457701800125e-06,-5.49297636325594e-07,-2.98223634914599e-08,-2.06514766095826e-08,9.9204351509335e-10,-2.07993707385119e-10,2.9742471804238e-09,2.29150380793633e-08,1.88201536765237e-07,1.06071979339261e-06,7.67759951393833e-06,3.33905039454127e-05,0.00015218169699745,0.000375458290755703,0.000286085431826511,0.000380608737249176,3.29231173932367e-05,-2.90192095092867e-05,5.14496783242174e-06,1.36956278895463e-06,1.10313892941352e-07,1.84222396092136e-08,-4.11421646327734e-09,2.84568794602845e-09,-8.84367217194146e-10,-9.24425924191158e-10,-7.11831083143076e-09,-5.51348066223952e-08,-2.8496514736484e-07,-1.65439700174627e-06,-6.78004099979048e-06,-2.33956271116275e-05,-4.66291731654358e-05,-2.96988816345444e-05,-9.61780405183326e-05,-8.85994646181948e-06,-8.37102022965646e-06,5.13682945980679e-06,-1.17820612238734e-07,-2.13649462823546e-07,-4.58150375362123e-08,-4.318180380926e-09,-2.10835327885496e-09,1.05562890270447e-09,-4.09581589540129e-10,1.85540203087518e-09,1.10243955471028e-08,7.25483645458784e-08,3.26234840651134e-07,1.42151931465958e-06,4.45669025493134e-06,8.06447425441023e-06,5.93298606525475e-06,2.37858123401913e-05,-5.40594315670565e-07,8.07081074771393e-06,-1.6032841850425e-06,-1.61769673107313e-07,1.78401990835133e-07,3.02947475777133e-08,4.99919102355609e-09,6.63285265404225e-09,-1.22847144694083e-08,8.12386228458884e-09,-1.02994380927924e-09,-2.93421553231627e-09,-1.76075609671212e-08,-7.25554120684102e-08,-3.0323397706192e-07,-9.61274845292719e-07,-1.73559078772745e-06,-1.60814097417183e-06,-5.18053296452664e-06,-1.17429762889021e-07,-3.23069449560359e-06,3.10229842629167e-07,-1.7672586038544e-07,1.03373868299763e-07,1.54924805122375e-08,-2.39598051579281e-08,-1.5059295279828e-08,7.9229019270824e-08,-7.42836833842053e-08,1.55255172111082e-08,7.59137622021873e-09,7.09879777448588e-10,1.55206905847251e-08,6.62406017087616e-08,2.03352437329797e-07,3.81786507116063e-07,4.48426491164125e-07,1.03671010217137e-06,3.32538385566806e-08,1.00534399885541e-06,-6.95894865506019e-08,1.68986167525286e-07,-5.72993010107121e-08,-4.36165737216935e-08,-5.81020950506314e-08,-2.4967331264698e-07,-3.3132300696899e-07,5.1567736927305e-07,-2.91791403720955e-07,-6.21108654300463e-08,4.07416617352488e-08,1.46641123321986e-08,-2.03077341461064e-08,-4.39873336396011e-08,-7.5923553042688e-08,-1.03438509071625e-07,-1.65689893196953e-07,4.28719811480308e-08,-1.84182131789704e-07,1.55356149216826e-07,5.95973953944679e-08,1.39157196220578e-07,2.72350079953144e-08,-2.31099912714764e-07,-3.2258472849282e-07,-2.22707035993345e-06,-3.51842033585142e-06,1.92318525898978e-06,-8.73385087651299e-07,-9.31364749473236e-07,-3.32981473958055e-07,-3.5200230486721e-08,1.16914907750241e-08,2.07342292173636e-08,4.24530576977798e-08,8.80264922387152e-08,1.4133898744857e-07,3.57749595856401e-07,5.68240202527042e-07,1.0541720984523e-06,1.49514988934622e-06,1.67533160299269e-06,1.03400091458567e-06,-5.51047914936987e-07,7.88959862070491e-07,-1.24700003662891e-05,-2.4393155896082e-05,1.47827116884256e-06,-2.22783660513758e-06,-3.66841803430724e-06,-2.3414719417961e-06,-9.9165658421275e-07,-3.25429661021129e-07,-4.69960396363285e-08,1.04564132820254e-07,3.40510505177807e-07,8.21939400918832e-07,1.82533886686362e-06,3.60947362766235e-06,6.44903545611534e-06,9.8744495431913e-06,1.20161174531565e-05,9.48361934984919e-06,5.22682213351213e-07,1.74158368736314e-05,-4.79663791188329e-05,-0.000120362290682157,-2.94849821020551e-05,-1.54299905081772e-05,-1.44830463255107e-05,-8.91490625082741e-06,-3.74792405422755e-06,-9.80498915432406e-07,1.54599852708691e-07,7.37222140646846e-07,1.61234011481785e-06,3.62455279746963e-06,7.93516284729887e-06,1.61153655076883e-05,2.95656381269543e-05,4.71496495984179e-05,6.11052969901058e-05,5.53085783160341e-05,1.71505366768088e-05,9.83964586239443e-05,-0.000143724430886884,-0.000438916557381572,-0.000169278655717736,-7.21876454785933e-05,-4.76133472591787e-05,-2.98419196915691e-05,-1.49581769773668e-05,-5.46897010183511e-06,-9.23046492234235e-07,1.71027892877866e-06,5.16738867939034e-06,1.22867166986984e-05,2.72773034852896e-05,5.6105438638577e-05,0.000104611906222588,0.00017083055920241,0.000229490430245098,0.000222555534571806,9.82950648228521e-05,0.000243213746444237,-0.000206615473725514,-0.00086015836401408,-0.000393906541649459,-0.000126857620510767,-6.01589530814292e-05,-3.31525201638835e-05,-1.91323089771537e-05,-9.46816389684629e-06,-3.69741382066795e-06,6.45268557555202e-07,6.26250722423602e-06,1.73216150599355e-05,4.08852227321921e-05,8.81241037737069e-05,0.000172274290105127,0.000296181424005795,0.000422169766206468,0.000441662722752837,0.000243163654461894,0.000413006892921421,0.000162514913446947,-0.0011997687257601,-0.000479753816354924,-7.998939747205e-06,5.98627243210204e-05,3.56339875647947e-05,6.9517713655898e-06,-2.59510018701823e-06,-3.97364759835405e-06,-2.90960351119637e-06,-1.4796894334936e-06,7.25630319560127e-07,6.74404618856925e-06,2.46614904140551e-05,7.18798281529569e-05,0.000175068125025889,0.000340914232168519,0.000477073103557625,0.000413141889046183,0.00189452066557096,0.00144332692400369,-0.00615009049217383,-0.00184714659298527,0.00050939817969579,0.000587584507847006,0.000351329640373566,0.000154617079282345,5.86078633981023e-05,1.99892763532463e-05,6.19566163443453e-06,1.8064268071345e-06,1.91173720556776e-06,1.01389611099789e-05,4.69373635269427e-05,0.00017401113945367,0.000525608561022561,0.00123790919593145,0.0019234039828917,0.00189475919441939,0.00580888374161013,0.00533076050389185,-0.0305791553400726,-0.0192103444958722,-0.00723097623275471,-0.00232875123449863,-0.000654545327503308,-0.000166523999805587,-3.87639767939989e-05,-8.31141669986173e-06,-1.73371073822848e-06,-7.14229604940101e-07,-3.80491227782711e-07,5.72589898388367e-06,4.81564869445343e-05,0.000258675535433568,0.00108134328451341,0.00340403362014569,0.00686913514742916,0.00580915196710417,0.00993061180421642,0.246558770022309,0.116456554198893,0.0291824194986422,0.00615089024819653,0.00116391738108805,0.000203998506074095,3.27435047508713e-05,4.99707090124842e-06,7.33203145984752e-07,1.37686847275981e-07,-2.81133393589048e-07,-1.60548897304655e-06,-4.35583538378006e-06,5.18411567844296e-06,0.000141378112080338,0.00102178155230531,0.00406676172764718,-0.000113894616052643,0.00993085249912839,-4.29037928379978,-0.422410343902946,-0.0568053585734553,-0.00753621791301229,-0.000904783342926671,-0.000114005601772582,-1.61170839106834e-05,-2.69269638335436e-06,-6.30474808603108e-07,-4.0498010742849e-08,4.65007753663363e-08,3.14864663092783e-07,1.41482118323591e-06,8.2725840779313e-06,7.97782597563186e-05,0.000774497906339912,0.00717346149539895,0.0579325319032648,0.407587700109898,3.95775509487929,-4.31378495500119,-0.425709019480172,-0.0570461294162405,-0.00760136639151926,-0.000907394256575876,-0.000114563625198012,-1.62370868026803e-05,-2.68489045255162e-06,-6.35503384376432e-07,-4.03641344280221e-08,4.69004776387549e-08,3.16814480285824e-07,1.41767460521824e-06,8.34619636696832e-06,8.01445637000686e-05,0.000778846693561853,0.00722131533061021,0.0581783436965066,0.410285304459083,3.9805285291226,0.0106939374116083,0.0144084269088797,0.000308859680888303,0.00024601784925194,3.87008515723869e-05,1.17575562754427e-05,1.9809877998099e-06,3.25580616143349e-07,7.54656654058774e-08,-2.70910471025511e-08,-8.22863230400789e-08,-4.43740605316747e-07,-3.44286035297782e-06,-2.97888694927327e-05,-0.000245723202933026,-0.0018472996792827,-0.0123386681032239,-0.0708125189980606,-0.26119540951063,0.0106940039621844,-0.00152772290768213,-0.00241333695454826,-0.000356436652694946,-6.52483652443729e-05,-4.99697072353444e-06,-1.33380396480985e-06,-6.45798290440342e-08,-2.76860479633705e-08,3.89214469102326e-10,1.19467007368871e-08,8.0760222656451e-08,6.69390556993613e-07,5.39626006408637e-06,4.14059638160673e-05,0.000297917694713295,0.00172113939472547,0.00944988382230219,0.0281302969646639,0.0102463217776687,-0.00152767437950668,0.000449172886677607,0.000121723083586682,8.48391508666415e-06,3.68633409574879e-06,3.97107227908806e-08,1.70103164532108e-07,-4.00473149489024e-09,4.61023087670894e-09,-1.80970078917767e-09,-1.29748471047531e-08,-1.08642801160598e-07,-8.72751844628866e-07,-5.77981040797267e-06,-4.38685100824566e-05,-0.000216581164744535,-0.00116423789747994,-0.00320354019056431,-0.00169614086250943,-0.00138439314835478,0.000449202994549371,-2.89351187903047e-05,-1.41276469061148e-05,-2.4768839755925e-06,-5.5263074585173e-07,-2.77486629863598e-08,-2.15486889170647e-08,1.23049394531241e-09,-2.5990268843796e-10,3.01127876595481e-09,2.28548461998808e-08,1.89005969007512e-07,1.06255916668997e-06,7.69055860526216e-06,3.34763420307914e-05,0.00015236198792867,0.000375824376749102,0.000285756866792324,0.00038014383161725,3.29439861789637e-05,-2.89190063868176e-05,5.11988874943672e-06,1.37359030737749e-06,1.12245515053587e-07,1.82047653886722e-08,-4.44371272375562e-09,3.06116420943535e-09,-9.63453509276168e-10,-9.12613736283883e-10,-7.10946189982389e-09,-5.52676266278411e-08,-2.85881466927636e-07,-1.65552738118443e-06,-6.80161889234017e-06,-2.34276258189974e-05,-4.6659464899759e-05,-2.9437546494815e-05,-9.60391280327144e-05,-8.5441332300149e-06,-8.47191096557475e-06,5.11634805939058e-06,-1.20316490802154e-07,-2.13017972752339e-07,-4.68048091905726e-08,-3.99551455831459e-09,-2.14752227478696e-09,1.03236378745754e-09,-3.95397338277317e-10,1.84363186210716e-09,1.10300958821554e-08,7.29176614429794e-08,3.26227150873602e-07,1.42642055272645e-06,4.46399317693032e-06,8.0673535736512e-06,5.85005305967573e-06,2.37239604053038e-05,-7.34284625489548e-07,8.06148457108561e-06,-1.57988512037615e-06,-1.43323851370847e-07,1.62517549621443e-07,3.41237108822247e-08,4.06155047713507e-09,6.83822803391282e-09,-1.24145937496448e-08,8.18719500120743e-09,-9.77612155490687e-10,-2.91622996700104e-09,-1.77375421526462e-08,-7.25740575114999e-08,-3.0428269612158e-07,-9.62820676326539e-07,-1.73546710751362e-06,-1.58750187717138e-06,-5.15449400622626e-06,-4.03613300235373e-08,-3.20155239956705e-06,3.11230357977778e-07,-1.92161414007773e-07,1.23948210666327e-07,1.99219513526151e-09,-1.89028228651321e-08,-1.6619698730143e-08,8.0291497854766e-08,-7.45889485142632e-08,1.52048732439042e-08,7.445123851853e-09,7.30421159258127e-10,1.56332044243241e-08,6.65286674192789e-08,2.03657741313073e-07,3.81414960191227e-07,4.43405768507089e-07,1.02790016775885e-06,7.62958926306624e-09,9.868138266191e-07,-7.78525723889249e-08,1.749926950564e-07,-6.13014235383731e-08,-2.82450526922598e-08,-9.80117130823456e-08,-2.40204490116903e-07,-3.37120684504129e-07,5.17014573011898e-07,-2.91433766237364e-07,-6.12016106249094e-08,4.15959271134237e-08,1.42190492391079e-08,-2.08719609067889e-08,-4.42103852224987e-08,-7.57080222090906e-08,-1.02128408727855e-07,-1.629529835991e-07,5.01480572250559e-08,-1.76211990824928e-07,1.61811562375515e-07,5.93852847838359e-08,1.40587994433511e-07,1.85457900255432e-08,-1.86374961737304e-07,-3.74393728103622e-07,-2.21745198704217e-06,-3.52919142380575e-06,1.92911551542065e-06,-8.81051574632068e-07,-9.43552814246483e-07,-3.33437053855538e-07,-3.24632949747363e-08,1.35044248028366e-08,2.04544155334093e-08,4.23291617805972e-08,8.74592601699458e-08,1.40325065054956e-07,3.56691942059695e-07,5.68146704930625e-07,1.05804186584453e-06,1.50122976615749e-06,1.68647351383336e-06,1.02481593607344e-06,-4.91175896387346e-07,7.16693857416631e-07,-1.25201358364998e-05,-2.45133656583803e-05,1.47680384847779e-06,-2.17815842352548e-06,-3.67668981725976e-06,-2.361467887361e-06,-1.0105454397923e-06,-3.25719082547038e-07,-4.80838985314777e-08,1.05783278656259e-07,3.41929262821997e-07,8.25657950327813e-07,1.83303483289475e-06,3.6234811500187e-06,6.47335476726501e-06,9.90913711215606e-06,1.20640242577408e-05,9.49265819166459e-06,5.80085366909722e-07,1.74543983826212e-05,-4.79710357224456e-05,-0.000120638302600975,-2.98517929836914e-05,-1.55457259124765e-05,-1.45326009222892e-05,-8.85306543191357e-06,-3.76196891223369e-06,-9.76699124685157e-07,1.52021748538853e-07,7.40436127829997e-07,1.61829922053298e-06,3.63707968404002e-06,7.96253308129127e-06,1.61702878401266e-05,2.96663748165455e-05,4.73088697454288e-05,6.13212153469791e-05,5.55307160502426e-05,1.73169672865824e-05,9.8427306326431e-05,-0.000144594591211785,-0.000439468206544483,-0.000169415911213973,-7.20019732005775e-05,-4.81615580805796e-05,-2.99340685989881e-05,-1.50382136752032e-05,-5.47509264953392e-06,-9.24534517756475e-07,1.71262376038546e-06,5.18128445963372e-06,1.23184693706387e-05,2.73467209280758e-05,5.62435944491664e-05,0.000104857338501812,0.000171204699893391,0.000229933669160894,0.000222808918563882,9.83730005556821e-05,0.00024386747543725,-0.000205665918925036,-0.000861681035141295,-0.000397095785805723,-0.000125521157295474,-6.00505648028045e-05,-3.30383083217228e-05,-1.91548584283785e-05,-9.5042690937523e-06,-3.69639657192932e-06,6.44811449729021e-07,6.27206639926429e-06,1.73460915595044e-05,4.09426698734275e-05,8.82495922993997e-05,0.000172529081338832,0.000296643055540065,0.000422959594829205,0.000442825995933519,0.000243845147453904,0.000412218837173214,0.000158712114906247,-0.00118810506314453,-0.000484149383528173,-9.00409418516472e-06,5.94976598416749e-05,3.54901953825286e-05,7.0610674903478e-06,-2.60918193225153e-06,-3.97406508725117e-06,-2.9128998098948e-06,-1.4816755401367e-06,7.21863266374514e-07,6.72653513536455e-06,2.45934719375715e-05,7.16649501453034e-05,0.000174482396811028,0.000339475016541012,0.000474942069839981,0.000412295297263586,0.00189379251884432,0.0014309519479556,-0.0061120688970614,-0.00185298544038099,0.0005116025759144,0.000592250475685932,0.000351951196210558,0.000155327654002627,5.8806883694947e-05,2.00602548009341e-05,6.21665334142532e-06,1.81162156797257e-06,1.91857862792277e-06,1.01748581105717e-05,4.70859022169803e-05,0.00017446573349025,0.000526716435538997,0.00123937328812057,0.00192500296551053,0.00189391835210032,0.0058860023385569,0.00522483267475504,-0.0307312873080824,-0.019282899606727,-0.00727999538385915,-0.0023388326300035,-0.000657884583450177,-0.000167378079716415,-3.89254182488292e-05,-8.34890171376122e-06,-1.73934317942232e-06,-7.1648741864585e-07,-3.81279833833142e-07,5.75289035933116e-06,4.83753378577993e-05,0.00025971418165694,0.0010853953984401,0.00341350676469472,0.00688146553551933,0.00588614126477935,0.00964740363623669,0.248596380373038,0.117031905274985,0.0293683825893234,0.00618954490612749,0.00116926335880501,0.000205322443651686,3.2867836650756e-05,5.01556533140043e-06,7.35831047310489e-07,1.37285703605719e-07,-2.8303212042088e-07,-1.61277311608934e-06,-4.37474433316787e-06,5.20426713213646e-06,0.000142307945741336,0.00102407197544077,0.00407998979317584,-0.000193264167901991,0.00964752673379663,-4.3137849565122,-0.425709019690395,-0.057046129498481,-0.00760136641926296,-0.00090739425526337,-0.000114563624988144,-1.6237086776815e-05,-2.68489044275411e-06,-6.35503385154387e-07,-4.03641344075277e-08,4.69004783221716e-08,3.16814483945559e-07,1.41767461109987e-06,8.34619631188422e-06,8.01445633920533e-05,0.000778846688198632,0.00722131530408674,0.0581783435298567,0.410285305033335,3.98052854914774],"Archive1103_field3":[-0.00526961237433943,-0.0086444044436022,-0.00952608284336615,-0.00963741468097311,-0.00964539400085837,-0.00964786364672121,-0.00964754848223798,-0.0096476054281507,-0.00964760299636863,-0.00964760210467042,-0.00964760198066571,-0.00964760599671833,-0.0096476035510703,-0.00964749978636672,-0.00964822129438786,-0.00964356529303934,-0.00964223405482461,-0.00964053464591136,-0.00863925660652638,-0.00755843625024656,-0.00625070714144727,-0.00636586163542165,-0.00631898086972093,-0.00633193311520643,-0.00633001830291725,-0.00632995395179412,-0.00633000622107613,-0.00632998020035544,-0.00632998359061073,-0.00632998332811355,-0.00632998433831232,-0.00632997464183845,-0.0063300439614436,-0.00632988714530619,-0.00633019103602387,-0.00634087446213764,-0.00630528737460734,-0.00674804102059408,-0.00600976204510453,-0.00588030000542744,-0.00200975484934056,-0.00214310548545174,-0.00215114512646732,-0.00215001342196064,-0.00215093832243375,-0.00215085894505946,-0.0021508508067894,-0.00215086020074464,-0.00215085695620263,-0.00215085699961405,-0.00215086094471848,-0.00215084887938628,-0.00215079668253028,-0.00215135056493968,-0.0021461394787359,-0.00216346499109576,-0.00206107368443687,-0.00213209785682347,-0.00213419888888146,-0.00235797605121671,-0.000831964503724007,-0.000800734035263709,-0.000803200201001878,-0.000804081975895068,-0.000803587953422929,-0.000803725923131596,-0.000803692022029906,-0.000803701144245841,-0.000803698538991708,-0.000803698992241669,-0.000803694641992926,-0.000803748507587646,-0.000803434442123837,-0.000805081560702636,-0.000800419745624822,-0.00081717274412538,-0.000821160153914242,-0.000816446296816315,-0.000763298134781127,-0.000779724662240949,-0.000148920067740527,-0.000170847601987339,-0.00016381420178494,-0.000165224664822665,-0.000164955764617373,-0.000165043750475441,-0.000165006518605587,-0.000165019593567371,-0.000165015783640793,-0.000165020079637141,-0.000164996198239482,-0.000165101290733389,-0.000164707427379697,-0.000165568994575275,-0.000163680850096668,-0.000160309969408759,-0.000159497883497051,-0.000170511691151757,-0.000173277919145053,-0.000178973451346445,6.50588455912094e-05,4.65640308029424e-05,4.91180645579299e-05,4.80948310141211e-05,4.86234073467818e-05,4.84241844856319e-05,4.84752185374887e-05,4.84682934387673e-05,4.84676444297301e-05,4.84622289250684e-05,4.84875051983377e-05,4.84140859927955e-05,4.85189180184289e-05,4.84354818066479e-05,4.76314317938597e-05,4.67385222582432e-05,4.85894092888154e-05,4.98939987570549e-05,5.4761173777548e-05,3.1302222065897e-05,0.000392345153762465,0.000383836951743119,0.000390916307838386,0.000388027201179509,0.000388787990523842,0.000388692743088216,0.000388664006950314,0.0003886930776015,0.000388680841625602,0.000388680265494835,0.000388689629723473,0.000388686580857032,0.000388666277115907,0.000388784793831275,0.000389102160001368,0.000388914253990011,0.000388632437064449,0.000387089969088486,0.000390664976238107,0.000385098306813349,0.00137985518854947,0.00133574335813501,0.00134724429901856,0.00134573189154729,0.0013453338859627,0.00134571972265135,0.00134552830383607,0.00134559381898023,0.0013455795825794,0.00134558023482209,0.0013455783074983,0.00134558367183071,0.00134557575792026,0.00134549878642657,0.00134548409078146,0.00134551004415555,0.00134594002904929,0.00134496134369155,0.00135039840267553,0.00131129877431991,0.00373307337614053,0.00371077689955691,0.00370550062032111,0.00371087760893775,0.0037083488927596,0.00370927618850032,0.00370904576219176,0.00370907185715234,0.00370907782826948,0.00370907469385046,0.00370907548861322,0.00370907381859465,0.00370908804280823,0.0037091013041135,0.00370911419296769,0.0037089785170355,0.00370942367131482,0.00370684295547772,0.00371891980174703,0.00368507563438248,0.00838511882828224,0.00845859364371461,0.00842370213988759,0.00843605314586745,0.00843257843134661,0.00843305399359913,0.00843313328022998,0.00843307054400747,0.00843308805744468,0.00843308428575508,0.0084330848380375,0.00843308324467872,0.00843307959021977,0.00843306964316143,0.00843311729820497,0.00843293862903907,0.00843374643210865,0.00843142160326488,0.00843138555688428,0.00848105538517203,0.0147023928822067,0.0148731204508162,0.0148257672360244,0.0148345534999999,0.0148353707234438,0.014834390872224,0.0148346819465111,0.0148346371478029,0.0148346392823805,0.0148346434655492,0.0148346420834164,0.0148346428223246,0.0148346479940006,0.0148346343328512,0.0148346883463681,0.014834544011326,0.01483450727328,0.014838241067273,0.0148091652417301,0.0149669532151479,0.0192818488886187,0.0194090104061494,0.0194086974550186,0.0193939858232861,0.0193988942133004,0.0193981402023916,0.0193981088606182,0.0193981403965754,0.0193981142549293,0.0193981157277124,0.019398118153543,0.0193981161883238,0.0193981222889899,0.0193981178241645,0.0193981268681052,0.0193984031439174,0.0193963877498048,0.0194076173401781,0.0193598221573508,0.0195147299442981,0.0177811720212227,0.0176203142030811,0.0177078704226415,0.0176942588781519,0.017693650186485,0.0176943724446293,0.0176941426380284,0.0176941886018758,0.0176942036914448,0.0176941865952658,0.0176941899233496,0.0176941944361174,0.017694197590736,0.0176942318860767,0.017694102134639,0.0176950261809405,0.017691436339125,0.0177034213559723,0.0176839956679024,0.0176084201159255,0.00991873355329079,0.00958947758356337,0.00957918840896634,0.00959362095283121,0.00959001946656065,0.0095901571586637,0.00959015486273821,0.00958994286058885,0.00958996807877761,0.00958998755522525,0.00958996161045941,0.00958997877676282,0.00958997130522137,0.00959005566320838,0.00958985043738443,0.00959064432439025,0.00959044023111988,0.00958002364808569,0.00966537457378636,0.0092635696847016,0.00139967655136674,0.00175150916722331,0.00169252590456101,0.00169488747722406,0.0016974204616765,0.00169604889972481,0.00169659305332423,0.00169678907391089,0.00169651513109505,0.00169667341634928,0.00169661979809305,0.00169664307108311,0.00169663041242752,0.00169669369699778,0.00169673224565515,0.00169609264866683,0.00170113565695757,0.0016838450609539,0.00169960324295621,0.00199464404628789,-0.00504788668364864,-0.00513854789161499,-0.00508603314856051,-0.00510364417719047,-0.00510032693087034,-0.00509975093777931,-0.00510289516527399,-0.00510123829134363,-0.0051020011239452,-0.00510183562957684,-0.00510188960674878,-0.00510188576856419,-0.00510188746172111,-0.00510193936071757,-0.00510160006744209,-0.00510260759336486,-0.00510096927220316,-0.00509009660767638,-0.00514955145733733,-0.00514741767838305,-0.0136485548755457,-0.0139296455886804,-0.0139253521249876,-0.0139138668297335,-0.0139359185004841,-0.0139129977797784,-0.0139199096163146,-0.0139169377246587,-0.013917206433085,-0.0139170646887598,-0.0139170449753513,-0.0139170433447953,-0.013917020067532,-0.0139170715031028,-0.0139169853511904,-0.0139159822877932,-0.0139194419613332,-0.0139082935395445,-0.0138532351107079,-0.0141762683792364,-0.0195159567772266,-0.0193553070215708,-0.0196460167447942,-0.0195133039426676,-0.0196432389253237,-0.0196245698175365,-0.0196333258750082,-0.0196335266981494,-0.0196337270611611,-0.0196337990696288,-0.0196338002286221,-0.0196338071346147,-0.0196338082376502,-0.0196337634386639,-0.0196338937017713,-0.0196337267788848,-0.0196253937279185,-0.0196576894318021,-0.0194652362715383,-0.019713581533715,-0.0173149935976166,-0.0165151101708802,-0.0176780269347021,-0.0171349807092925,-0.0171539633166538,-0.0171418135267443,-0.0171392601936918,-0.0171394332010519,-0.0171393038590716,-0.0171393080067601,-0.0171393069160055,-0.0171393039882314,-0.0171393124830969,-0.0171393544420471,-0.0171389075284854,-0.017140725986853,-0.0171351173675086,-0.0170954717162843,-0.017297751515511,-0.0155571160145366,-0.00986043914848362,-0.0128913288502072,-0.0135358955776411,-0.0136509408589611,-0.0136303988359204,-0.0136378390288716,-0.0136371663134202,-0.0136372466653502,-0.0136372786281948,-0.0136372744385925,-0.0136372754733417,-0.0136372798000541,-0.0136372362974513,-0.0136373660334667,-0.0136372075253601,-0.0136334766473472,-0.0136417291004416,-0.0134583480569674,-0.012662478226495,-0.0108200896444217,0.327347001821608,0.331482718050002,0.338116007758844,0.338722051211561,0.33879217458434,0.338797155810905,0.338795351904375,0.338795578176373,0.338795527895025,0.33879552590127,0.338795531246151,0.338795552015717,0.338795540756039,0.338795087779349,0.338798098665447,0.338779317726376,0.338790079838105,0.33909536156563,0.336832245006692,0.325480541260361,0.166060130888096,0.164248994831602,0.164853345671677,0.164933972856776,0.164928109926704,0.164929754070433,0.164929536088452,0.164929484258326,0.164929491051067,0.164929490069984,0.164929493650866,0.16492945293082,0.164929730319546,0.164928939665925,0.164928992550059,0.164966691802357,0.164740385544944,0.166272995470729,0.161623517468165,0.161493246680997,0.0566074987032712,0.0575007033923028,0.057436847678789,0.0574625453734715,0.0574622650769017,0.0574624997335857,0.0574624212365163,0.057462468443974,0.0574624482468258,0.0574624518825821,0.0574624674863548,0.0574624194307185,0.0574622189072044,0.0574647845465608,0.0574434798361328,0.0575266076729173,0.0571232521521364,0.0575070481697786,0.0573627970235932,0.0586569514198916,0.0165712659577449,0.0164840580019514,0.0164879654436476,0.0164912997276831,0.0164893875838026,0.0164900915613257,0.0164898414686914,0.0164899298017678,0.0164899024392531,0.0164899076640562,0.0164898892590244,0.0164901163543957,0.0164887542034746,0.0164957454563269,0.0164750804516077,0.0165434286019402,0.0165605493653149,0.0165455305887002,0.0162271092689026,0.016427886918834,0.000790944716308482,0.000992006931387609,0.00094350917953179,0.000955028805444697,0.000951832567332145,0.000952942097044154,0.000952560961292462,0.000952661314633461,0.000952648219045998,0.00095265730139693,0.000952561332255639,0.000953008555879623,0.000951324160373138,0.000955004611056713,0.000947323350673409,0.000932654346776429,0.000927537053423964,0.000994611798636074,0.0009792943393208,0.00110588759059967,-0.00792811416315035,-0.00782281916422931,-0.00785430989450073,-0.00784149574080929,-0.00784645718268973,-0.00784503698884326,-0.00784521576725395,-0.00784530622905832,-0.00784522482330582,-0.00784523788418254,-0.00784533171180919,-0.00784501945334121,-0.00784544610196861,-0.00784510607828215,-0.00784179755980314,-0.00783709289944538,-0.00784832617104106,-0.00785122625346059,-0.0078864411748159,-0.0077601849626751,-0.0216612641044784,-0.0214841467772641,-0.0215534639992698,-0.0215328926567921,-0.021535850837858,-0.0215369999621982,-0.0215358276731831,-0.0215364467736056,-0.0215362087695743,-0.0215362636997841,-0.0215362907794575,-0.0215362854793674,-0.0215362106654598,-0.0215366533315877,-0.0215382879325847,-0.0215370787870228,-0.0215357692409881,-0.0215257956954195,-0.0215588667051136,-0.0214116596260051,-0.0593030361716965,-0.0590211120463801,-0.0590661554462447,-0.0590801212758103,-0.0590642851804253,-0.0590726832187291,-0.0590692814895585,-0.0590703696301534,-0.0590701054140289,-0.0590701458191599,-0.0590701336233424,-0.0590701508596606,-0.0590701372348651,-0.0590697411297818,-0.0590697013604186,-0.0590698432707207,-0.0590730009931303,-0.0590612727306651,-0.0591221206077389,-0.0588372274914733,-0.157674377658982,-0.157833759441787,-0.157623331004329,-0.157738381132889,-0.157691868412474,-0.157707254042376,-0.157703347983279,-0.157704009267592,-0.157703987304181,-0.157703957180392,-0.15770397307716,-0.157703956434953,-0.1577040319259,-0.157704087516923,-0.157704184782625,-0.157703060741992,-0.157707603824593,-0.157686780402907,-0.157753027209868,-0.157733541511052,-0.366212461585239,-0.367785956539578,-0.36714153359548,-0.367354543646183,-0.367297574718428,-0.367307631902114,-0.367307284370712,-0.367306768374995,-0.367307007685186,-0.367306928569557,-0.36730695228305,-0.367306937511946,-0.367306928251933,-0.367306854172695,-0.36730725531365,-0.367305796955697,-0.367310356689767,-0.367310968359601,-0.367177195456483,-0.368401479449017,-0.689043239301223,-0.692019429444165,-0.691217970102191,-0.691374501684173,-0.691367686758536,-0.691359785278351,-0.691363424990904,-0.691362336977737,-0.691362620388406,-0.691362556041453,-0.69136257322309,-0.691362571086544,-0.69136261410925,-0.691362518403667,-0.691362843189449,-0.691363111673888,-0.691352834625952,-0.691443573146967,-0.690884038650379,-0.69368275447613,-1.01084909939499,-1.01312137195662,-1.0129520593247,-1.01283456249869,-1.01289052690577,-1.0128742691777,-1.01287789760179,-1.01287690597153,-1.01287707926528,-1.0128770060686,-1.01287703140206,-1.01287702732746,-1.01287708296671,-1.0128771877686,-1.01287658381969,-1.01288349469552,-1.01284375168188,-1.0130442520256,-1.01222298024805,-1.01491019084947,-1.12719296643088,-1.12577325144497,-1.12667971775954,-1.12643842553127,-1.1264890503962,-1.12647655653507,-1.12647920117606,-1.12647819319811,-1.12647840591413,-1.12647829754662,-1.12647831367679,-1.12647836111564,-1.12647837615331,-1.12647907039347,-1.12647652954742,-1.12649204349572,-1.12643395115902,-1.12662834924262,-1.12624428690437,-1.12578204720831,-0.913575845585635,-0.909350497491724,-0.910028613816131,-0.909888176316963,-0.909926701261387,-0.909912125802323,-0.909914693208283,-0.909913138898278,-0.909913137170756,-0.90991323070553,-0.909913124818745,-0.909913252790468,-0.90991312804323,-0.909914452705063,-0.909910948595182,-0.90992494340667,-0.909906603659287,-0.909847642445344,-0.910641618111557,-0.906285848702558,-0.457537465121354,-0.456561038587277,-0.457047555021052,-0.456860343142773,-0.456915457352134,-0.456901168944482,-0.456902795350634,-0.45690379445021,-0.456902505596056,-0.456903172788633,-0.456902959060853,-0.456903120046966,-0.456902886233865,-0.456903912304993,-0.45690304591555,-0.456899840471809,-0.456950449411175,-0.456712375736231,-0.457500018250786,-0.456298327779907,0.0570102062525421,0.0604118449126795,0.0595470647869148,0.0597343812024135,0.0597121492667733,0.0597036746271093,0.0597188693329325,0.0597117230759444,0.0597149296881023,0.0597143057106736,0.0597145412222741,0.05971448930247,0.0597145959658436,0.0597149016785649,0.0597116815090187,0.0597274192696486,0.0596689753128264,0.0598223102418599,0.0593238858283186,0.0623808519152329,0.485531526701444,0.488191742344099,0.487970546267948,0.487866084119066,0.488001952471637,0.487899267112511,0.487928698282895,0.487915799762969,0.487916541729808,0.48791587864487,0.48791576324866,0.487915753609151,0.487915539790762,0.4879166492714,0.487912763975909,0.487924805201189,0.487885886201703,0.488056303656634,0.487125099504384,0.490342521154383,0.665185116021791,0.664277823788998,0.665307723849548,0.664454247397685,0.665046683807123,0.664982001972188,0.66502475423848,0.665027625586292,0.665028763167512,0.665029134726994,0.665029133672074,0.66502922083866,0.665028955902303,0.665029881187399,0.665026899026018,0.665041424053935,0.664972152907323,0.665274806074896,0.664438941943491,0.665018073344079,0.570379355674876,0.565781070434656,0.568893551694193,0.565984030357248,0.565961820264861,0.565892083870384,0.565878001205592,0.565878720330806,0.565878236139461,0.565878271069092,0.565878259612996,0.565878304715677,0.565878089321917,0.565879201629028,0.565873879472014,0.565896445309552,0.565861194627528,0.565875403307007,0.567965901599102,0.558396201778491,0.358046541063391,0.355207219546929,0.36085071342052,0.361566146330082,0.361476094273866,0.361506916925563,0.361503476501831,0.361503667028682,0.361503811041389,0.361503797578003,0.361503766996078,0.361503940223437,0.361503253809482,0.361505207000942,0.361501807648608,0.361483878864442,0.361604628781943,0.360688676963447,0.361378826679676,0.339000951723929,0.625607058704809,0.668775669303664,0.690200364931446,0.692719763988771,0.692921901829295,0.692955346082012,0.692950231846037,0.692950924663989,0.692950843869047,0.692950836133868,0.692950843476073,0.69295091551029,0.692950860685758,0.692949193720276,0.692960522178097,0.692882570013347,0.69287798131752,0.693282262463367,0.678577770559869,0.64608615131245,0.356136258247415,0.354293391722571,0.354983397142548,0.355202702016645,0.355188261321131,0.355188088736697,0.355188265613792,0.355187978833449,0.355188001399297,0.355188001163411,0.355188014063711,0.355187867726969,0.355188968107104,0.355186244097229,0.355191003918118,0.355360967216503,0.354664483676332,0.362126880563721,0.345765244831021,0.344267949650571,0.120394533059672,0.123322766178195,0.123306415949122,0.123352260053925,0.123356822733723,0.123357673240627,0.123357248674448,0.123357442788129,0.12335737669946,0.123357384209483,0.123357445047668,0.123357241786719,0.123356457716666,0.123365518162127,0.123277903844224,0.123587827595061,0.12177296886994,0.123187715607212,0.122953707246546,0.127660766229696,0.0379433999242867,0.0374700809307956,0.0375020460545355,0.0375158856768749,0.0375082428936782,0.0375105782342448,0.0375098702998528,0.0375101073325115,0.0375100323480716,0.0375100466453168,0.0375099807544195,0.0375108533659765,0.0375056228973359,0.0375339681611765,0.0374516159153074,0.0377537342107794,0.0378370481866644,0.0377641355087806,0.0366109624285503,0.037159757925126,0.0031679175671548,0.00373696310074668,0.00357699627226718,0.00361251803626804,0.0036038925975187,0.00360685535252737,0.00360576286059818,0.0036060835933645,0.00360602051855905,0.00360607424242749,0.00360568887124739,0.00360746071797404,0.0036005959386175,0.00361579561180881,0.00358143029763537,0.00351741069282175,0.00349662686572232,0.00373764185592642,0.00374257506753862,0.00400488508997647,-0.0142478593058591,-0.0138457454024771,-0.0139290372879993,-0.0138958033764764,-0.0139101050198363,-0.0139055126435436,-0.0139063535026531,-0.0139064446762764,-0.0139062900419947,-0.0139062661189239,-0.0139066726889688,-0.0139053830618856,-0.0139072198629915,-0.0139055911911314,-0.0138908494040411,-0.0138719950459161,-0.0139119925023553,-0.0139323258085987,-0.0140460074424624,-0.0135543067712204,-0.0413578237931598,-0.0409735398437339,-0.0411689850623605,-0.0411021522080066,-0.0411153595925473,-0.0411164252003985,-0.0411140456317844,-0.0411154486433759,-0.0411148973029627,-0.0411149910896079,-0.0411151362335813,-0.0411150906632302,-0.0411147694069713,-0.0411168538929315,-0.0411233531410049,-0.0411193300193733,-0.0411137583152189,-0.0410793376356261,-0.0411767524874066,-0.0408738314139742,-0.117006637558202,-0.116032938118015,-0.116235040805632,-0.116244210671783,-0.116211844771617,-0.116230744183838,-0.116222721200196,-0.116225320006267,-0.116224715978371,-0.116224786829713,-0.116224748925099,-0.116224831526991,-0.116224718468776,-0.116223157213161,-0.116222867573086,-0.116223412495262,-0.116233664097592,-0.116202787363699,-0.116365698559986,-0.115442806350859,-0.312215041918326,-0.31226974880483,-0.311838334225602,-0.31209864744994,-0.311990164307508,-0.31202695634589,-0.312017784697421,-0.312019137071769,-0.312019195149112,-0.312019101028871,-0.312019137761939,-0.312019091976698,-0.312019382875762,-0.31201964077583,-0.312019959624361,-0.312016513297974,-0.312029191210608,-0.311965189476545,-0.312211112590089,-0.311823162085576,-0.722031631744726,-0.725595042645501,-0.724093672175395,-0.724596458333031,-0.724460821133554,-0.724482446902163,-0.724483140799605,-0.724481451365614,-0.72448206572654,-0.724481895645974,-0.724481940266744,-0.724481896391979,-0.724481837220213,-0.724481594625738,-0.724482812414238,-0.724478357923439,-0.724494931795705,-0.724471745590115,-0.724231404733244,-0.72693236540098,-1.34465261131786,-1.35165219602291,-1.34976399109703,-1.35012139741279,-1.35012459264933,-1.35009849269533,-1.35010816743129,-1.35010586872273,-1.35010633246763,-1.35010626966272,-1.35010628722124,-1.35010629343301,-1.35010642583337,-1.35010611548044,-1.35010725335802,-1.35010625126961,-1.35008747940355,-1.3502880092005,-1.3489943875564,-1.35556217239267,-1.94137207010731,-1.94656449754841,-1.94633147555335,-1.94593849695756,-1.94609273153054,-1.94605713806275,-1.94606240569667,-1.94606120908038,-1.94606124298421,-1.94606112855034,-1.94606118584934,-1.94606116465192,-1.94606132791663,-1.94606147405394,-1.94606051180259,-1.94607565802566,-1.94598452551322,-1.94645400602321,-1.94452239715543,-1.95076353580074,-2.11348227339153,-2.10893836524773,-2.11156290903325,-2.11100685948652,-2.11107827168719,-2.11106742111191,-2.11106908520875,-2.11106766914202,-2.11106811468795,-2.11106781789228,-2.11106786480234,-2.11106799435444,-2.11106806735418,-2.11106966715196,-2.11106384217151,-2.11110098085044,-2.11096155583816,-2.11142396553658,-2.11059083696475,-2.10870037015228,-1.65231503429732,-1.6412617954783,-1.64214983763401,-1.64211132079964,-1.64213073438949,-1.64210669239613,-1.6421113195209,-1.64210700345361,-1.64210699798759,-1.64210732936779,-1.64210694536752,-1.64210731101417,-1.64210703948715,-1.64211028745466,-1.64210208327506,-1.64213443769102,-1.64210585760518,-1.64186099136076,-1.64429593547296,-1.63198771819016,-0.782373580149536,-0.785647881731634,-0.785739303788811,-0.785444030246668,-0.785569158228777,-0.785531338839916,-0.785536976241482,-0.785540817543352,-0.785536399345296,-0.78553876412538,-0.785538029184003,-0.785538497822384,-0.785537981712823,-0.785540392945466,-0.785539784460088,-0.785525458803542,-0.785674452460954,-0.78507273293029,-0.786474212632104,-0.788774893275011,0.156400145100675,0.163682188474727,0.161580034131006,0.162097870730497,0.162034047750499,0.162006955936212,0.16206132113786,0.162036125062954,0.162047709575143,0.162045583375994,0.162046409779947,0.162046322632462,0.162046500721861,0.162047701707002,0.16203817579272,0.16207589227561,0.161964911638687,0.162062472469193,0.161992122327552,0.167524784946674,0.982931019072193,0.990325452578039,0.989937446735215,0.989609256310021,0.99006531533669,0.989678043820403,0.989782796570851,0.989734808332224,0.989737107091926,0.989734684957682,0.989734212326017,0.989734173020054,0.989733526857925,0.989736007263456,0.989728677340851,0.98973669749564,0.989713641575762,0.989879816868274,0.987617251582079,0.996547147738627,1.35786246695493,1.35500906037484,1.35984070568207,1.35709654560274,1.35942063941183,1.35916973788379,1.35932613475954,1.35933696833115,1.35934097786544,1.35934242526717,1.3593424604599,1.3593426906972,1.3593422613986,1.3593432296119,1.35934017117906,1.3593603370671,1.35915596138171,1.36001366314479,1.35645595777802,1.36056235809729,1.17488121644629,1.15839778792894,1.1766339619766,1.16569828469464,1.16573128554328,1.16549194409252,1.1654364984808,1.16543901743178,1.1654369427154,1.16543700325434,1.16543697434546,1.16543700452822,1.16543680841785,1.16543888842027,1.16542546446953,1.16548584993813,1.1653434987887,1.16502766818469,1.17059649249958,1.13509246682446,0.727487753527166,0.755158299800671,0.772210037621297,0.774918403070006,0.774535464048068,0.774665620466129,0.774654463423162,0.774655370885274,0.774655989461112,0.774655936794033,0.774655896709957,0.774656215874176,0.774654559424051,0.774659749986683,0.774649203403447,0.774585935446804,0.774871740526184,0.771067253892968,0.763442810649205,0.703591760584326,0.902878052117137,1.00728045957068,1.04872943714958,1.05418271196129,1.05455351616785,1.05462855419115,1.05462035847257,1.05462144622969,1.05462136982826,1.05462135587589,1.05462136356958,1.05462150119503,1.05462137681863,1.05461818075558,1.05463999976432,1.05447995968591,1.05444296643383,1.05465484492404,1.02103218981673,0.961017819279766,0.559982123671242,0.559385241070841,0.559899891607653,0.560252158893134,0.560237479917627,0.560232048374093,0.560232910550058,0.560232346964626,0.560232371333711,0.560232375282828,0.560232400045735,0.560232125674816,0.560234308721246,0.560229116122361,0.560243042838655,0.560594867792165,0.559340520588661,0.575532972508648,0.542911467939765,0.539260330765942,0.188592292637106,0.194200563304018,0.194313631593021,0.194383700747728,0.194393362607615,0.19439581730721,0.194394780515197,0.194395182240304,0.194395058990541,0.194395070355553,0.194395189337771,0.19439476660905,0.194393279087295,0.194410183835578,0.194232549004709,0.19484367963584,0.190986054258012,0.193813908467327,0.193527182256408,0.202968959987845,0.0623493174744109,0.0613107435889656,0.0613843460824814,0.0614125307185775,0.061397343207849,0.0614016673077409,0.0614004267795488,0.0614008419515863,0.0614007070158153,0.0614007326475896,0.0614006120756543,0.0614023100569384,0.0613920449627816,0.0614494977436983,0.0612826850344372,0.0619213092409645,0.0621063693990375,0.0619538912459445,0.0596339553267061,0.0606303492511568,0.00667782699861875,0.00770994673382923,0.00739883996056848,0.00746629159475945,0.00745079697827876,0.00745610186541101,0.00745408178589787,0.00745469737068826,0.00745456343062445,0.00745467734932025,0.00745391165701258,0.00745745020001589,0.00744347314051982,0.00747467396543539,0.00740174280745033,0.00726644651560076,0.00722126935393057,0.007704510348601,0.00775272510509812,0.00814641639521235,-0.0192652139466012,-0.0184338040418264,-0.0185813226563106,-0.0185233365478011,-0.0185495772828791,-0.018540761573482,-0.0185425379139994,-0.0185425827902317,-0.0185423567973182,-0.0185422727769395,-0.0185431062811848,-0.0185404637054661,-0.0185442875274658,-0.0185407185576183,-0.018509564863233,-0.0184702200333593,-0.0185498738312075,-0.0185968890103982,-0.0188168326714406,-0.0177967499527852,-0.0592223302017143,-0.0586284197081876,-0.0589829317366708,-0.0588543193862557,-0.0588821279254288,-0.0588824653215478,-0.0588788385330199,-0.0588811259136703,-0.0588802136361215,-0.0588803398554463,-0.0588806559374759,-0.0588805464308546,-0.058879893810295,-0.0588843391752432,-0.0588977674154684,-0.0588900039744737,-0.0588784020265525,-0.0588101548066639,-0.0589916660354825,-0.0585418736878277,-0.172459694456625,-0.170538372227071,-0.170965624716929,-0.1709594504626,-0.17090960326827,-0.170940289621064,-0.170926917204496,-0.170931284908017,-0.1709302960318,-0.17093038864455,-0.170930319981539,-0.170930492269407,-0.170930229845164,-0.170927025442617,-0.170926339590535,-0.17092740437037,-0.170947248750414,-0.170892915860747,-0.171181205927095,-0.169400804379429,-0.46174741965875,-0.461550745203131,-0.460885472912417,-0.461311242015795,-0.461131854972694,-0.461193639383606,-0.46117838090334,-0.461180416696922,-0.461180636190077,-0.461180448990063,-0.461180510880288,-0.461180428820862,-0.461181020632295,-0.461181573378398,-0.461182203647246,-0.461175697455951,-0.461198623142861,-0.461078016827453,-0.461572816888383,-0.460613476086576,-1.06436398810417,-1.07019382465714,-1.06770516640345,-1.06854025065497,-1.06831288848329,-1.06834682161334,-1.0683496338855,-1.06834626722173,-1.06834736357343,-1.06834710011091,-1.06834716222723,-1.06834708054645,-1.06834694649099,-1.06834647313382,-1.06834876524061,-1.06834037488737,-1.06837350791852,-1.06831202609887,-1.06797706138181,-1.07233056577085,-1.96539247282994,-1.97702157551688,-1.97389592259753,-1.97448202038144,-1.97450771584631,-1.97445568553311,-1.9744732294016,-1.97446963535793,-1.97447017019597,-1.97447015258583,-1.97447016059091,-1.97447018200135,-1.97447043279297,-1.97446983713104,-1.97447207298954,-1.97446896316143,-1.97444219008828,-1.97476681179023,-1.9726256114332,-1.98355178110598,-2.79880447485435,-2.80721592355866,-2.8069768516827,-2.80619277378191,-2.80647755110675,-2.80642028770194,-2.8064255486453,-2.80642485494493,-2.80642457087662,-2.80642443656711,-2.80642452414597,-2.80642448217839,-2.80642478378799,-2.80642494038207,-2.80642374911748,-2.80644798276695,-2.80629875102868,-2.8070744392309,-2.80388552678387,-2.81406762290701,-2.9820441292027,-2.97334062436479,-2.97830544910547,-2.97737560332585,-2.97744403344992,-2.97744655806175,-2.97744430742669,-2.97744268123492,-2.97744331566255,-2.97744281656395,-2.97744289281641,-2.97744312116746,-2.97744328459787,-2.97744592194235,-2.97743638966221,-2.97749879409172,-2.97726414282562,-2.97804123771085,-2.97669745750937,-2.97292365152168,-2.25200185950696,-2.23188117416125,-2.23261796963389,-2.23287990324672,-2.23283276645724,-2.23280310915165,-2.23281020334976,-2.23280280075096,-2.23280267882347,-2.23280330286434,-2.23280259393769,-2.23280323734943,-2.2328028195595,-2.23280836214652,-2.23279473694343,-2.23284813424957,-2.23281546262839,-2.2322928852758,-2.23700871534331,-2.21375825401647,-1.00464099481323,-1.01651761656975,-1.01545875203143,-1.01512140964263,-1.01533055809524,-1.01526193370767,-1.01527114867976,-1.01527875167546,-1.01527060339599,-1.0152749609272,-1.01527364281101,-1.01527447257574,-1.01527365793752,-1.01527766288373,-1.01527819151955,-1.01524658704972,-1.01553017591132,-1.01446412270747,-1.01635642943403,-1.02602635048469,0.282509894877828,0.293902807037261,0.290230032644907,0.291189521674445,0.291075613805372,0.291021952080949,0.291126326195453,0.291079674501344,0.291101499193279,0.291097770887938,0.291099313606061,0.291099224430875,0.291099437083407,0.291101984973854,0.291083897322809,0.291148223795213,0.290991627720368,0.290859165995932,0.292030166712917,0.299324912276607,1.47915656835227,1.4930453583818,1.49254317422236,1.49190833968518,1.49277399539738,1.49200930432825,1.49220376996074,1.49211081572027,1.49211393106116,1.49210921753136,1.4921082004988,1.49210812121155,1.49210688775622,1.49211092704262,1.49210055904098,1.49209213860235,1.49212930221406,1.49215587126551,1.48824806914451,1.50498803071824,2.05948017674368,2.05376391720098,2.06407168042653,2.05891166323992,2.06363310814977,2.06316309795502,2.06346963035338,2.06349395165798,2.06350188000377,2.06350484941081,2.06350496099093,2.06350536959455,2.06350484613492,2.06350518799733,2.06350456853961,2.06352212513336,2.0631442548985,2.06472177028683,2.05718799605479,2.06666060861007,1.79441955632478,1.76158874376787,1.80293638615452,1.78078064786378,1.78082266630393,1.78035975169924,1.78024420388796,1.78024864718532,1.78024441566561,1.7802444636868,1.78024441560689,1.78024438465181,1.78024442268921,1.780247113851,1.78022431305687,1.78033342327594,1.78001901246737,1.77922058845711,1.78895362663107,1.71754684370023,1.10009463584137,1.17962211470238,1.21181092107958,1.21737126598653,1.21658025084607,1.21684672520991,1.21682690814023,1.21682866591773,1.21682996965439,1.21682986923213,1.21682984025172,1.21683026328556,1.21682747793541,1.21683703094993,1.21681465205456,1.21669489498537,1.21716942906275,1.20902252039863,1.18698477620749,1.07980592462436,1.16881010035355,1.34979102719427,1.41493213920365,1.42412703038789,1.42469550641908,1.42481980759688,1.42480932029417,1.42481066635368,1.42481062409884,1.42481060915808,1.424810613937,1.42481082430119,1.42481060618815,1.42480576214325,1.42483891200829,1.42458120895646,1.42450999260578,1.42416156189219,1.36725548680299,1.27510495083249,0.77441247684668,0.776106106402695,0.776284482916448,0.776758109715513,0.776750160190358,0.77673733642978,0.77673890027303,0.77673807813399,0.776738086514402,0.776738098306149,0.776738134363908,0.776737726612524,0.776741134032623,0.776733096627787,0.776760655038331,0.77731967892281,0.775479373915456,0.802325202241865,0.750286834521199,0.743932641187424,0.260514298045799,0.269174418401178,0.269487833624271,0.269584754276123,0.269599679851474,0.269604376780515,0.269602584103381,0.26960321970922,0.269603034841418,0.269603050367753,0.269603234565745,0.269602543595168,0.269600373817423,0.269625366107964,0.269344257407947,0.270301763140865,0.263983422822168,0.268480122886963,0.268135022112384,0.283197481353448,0.0890199893019444,0.0873100032726949,0.087433074731958,0.0874785769151919,0.087454540302147,0.0874611155587605,0.087459283752074,0.0874599014209531,0.0874596970083271,0.0874597348726126,0.0874595625037612,0.0874621580782469,0.0874462762344417,0.0875374500553479,0.0872718384999829,0.0883129462399743,0.088619737836459,0.0883812711368958,0.0846726449056124,0.086195963012106,0.0110567756602968,0.0126016285382563,0.0121120437985577,0.012216975404688,0.0121936340955569,0.012201603711276,0.0121985104407889,0.0121994675955368,0.0121992515300199,0.0121994317958561,0.0121982404339542,0.0122037929144405,0.0121815268965402,0.0122315630184683,0.0121125812107165,0.0118932530338412,0.0118171633097673,0.0125863039589824,0.0126929183216129,0.0132011029639577,-0.0233261199317911,-0.0219568452635714,-0.0221776462112653,-0.0220921447406705,-0.0221320295707382,-0.0221182932386072,-0.0221211638931084,-0.022121142055435,-0.0221208417175429,-0.0221206869518761,-0.0221220133603259,-0.0221177862139952,-0.0221239624526715,-0.0221180382269952,-0.0220676648550885,-0.0220039099326283,-0.0221299333040802,-0.0222091615664572,-0.0225549099624918,-0.0208777634211763,-0.0757458153339225,-0.0749568897507207,-0.0754910309104608,-0.075290451213842,-0.0753356162796423,-0.0753349676701326,-0.075330016780338,-0.0753332676389802,-0.0753319584167682,-0.075332115230822,-0.0753326352946563,-0.0753324456128685,-0.0753314176298949,-0.0753386056924521,-0.0753601591369006,-0.0753480729095928,-0.0753296009812051,-0.0752209259075294,-0.0755008069472881,-0.0749241571343884,-0.226461888451102,-0.223414507789508,-0.224111249816409,-0.22408425095852,-0.224015307562828,-0.224058802272913,-0.224039560537987,-0.224045878846515,-0.224044475740921,-0.224044582148912,-0.224044481783011,-0.224044754865171,-0.224044321671001,-0.2240392105111,-0.224038067526919,-0.224039635738567,-0.224070752519245,-0.223990150964193,-0.2244180365377,-0.221626818002213,-0.608297927258634,-0.607777547355404,-0.606858239898154,-0.607467236547365,-0.607210821435048,-0.607300064502758,-0.607278166838643,-0.607280854383334,-0.607281306318345,-0.607280999808758,-0.607281091274643,-0.607280968581696,-0.607281906162428,-0.607282795824705,-0.607283809709199,-0.607273773403138,-0.607308317612382,-0.607122333671712,-0.607911656307412,-0.606264066829346,-1.39855425488561,-1.40688644987481,-1.40331131026634,-1.40450467576078,-1.40417668967309,-1.40422320540067,-1.40422907659995,-1.40422361237709,-1.40422528088043,-1.40422492571466,-1.40422500098463,-1.4042248773991,-1.40422465822851,-1.40422391278,-1.40422745106496,-1.40421447944735,-1.40426719814978,-1.40415848317586,-1.4037287461785,-1.40989611122538,-2.5634734533396,-2.58014680509333,-2.57570442576139,-2.57653911384527,-2.57659812325006,-2.57651371849007,-2.57654063018237,-2.57653567830172,-2.57653617712019,-2.57653623766114,-2.57653623071546,-2.57653627060471,-2.57653665846424,-2.57653573227537,-2.57653924257398,-2.57653361666318,-2.57649820210991,-2.57696149670891,-2.57387794495845,-2.5896049493855,-3.60574561046834,-3.61746024932374,-3.61724402647675,-3.61597199409322,-3.61641396647126,-3.61633330736664,-3.61633714400283,-3.61633758384018,-3.61633687214342,-3.61633672497625,-3.61633684069064,-3.61633677659909,-3.61633723703814,-3.61633739521736,-3.61633601630962,-3.61637009566626,-3.61615805565338,-3.61726227484175,-3.6127447391841,-3.62696227936055,-3.76623491942642,-3.75272428640427,-3.76057068886924,-3.75922050464607,-3.75926495604323,-3.75929069392393,-3.75928214115155,-3.75928027823608,-3.7592810852303,-3.75928038149089,-3.75928048947903,-3.75928082479786,-3.75928110134269,-3.75928487808464,-3.75927133238815,-3.7593615249794,-3.75902211914357,-3.7601481436016,-3.7582253848961,-3.75244803925875,-2.75005553987888,-2.71870909597725,-2.71895173668463,-2.71968450197645,-2.71953324467596,-2.71950044999837,-2.71951102900218,-2.71950033192917,-2.71950001346065,-2.71950091937359,-2.71949988318321,-2.7195008206961,-2.71950026006487,-2.71950836317404,-2.7194888164349,-2.71956505669682,-2.71953388455532,-2.71865617144535,-2.72621048453193,-2.68917378789059,-1.15161292061504,-1.17622522911228,-1.17340467763686,-1.17306267718647,-1.17337000318426,-1.17326400069586,-1.17327671198166,-1.17328847194801,-1.17327653931358,-1.1732829573135,-1.17328106480244,-1.17328228096213,-1.17328115705944,-1.17328687980947,-1.17328931655494,-1.17323508515387,-1.17368361634986,-1.17206971259379,-1.17431349488251,-1.19512336406866,0.425579098864478,0.441831745717262,0.436242576532844,0.437731259840303,0.437559667677922,0.437478462492796,0.437638576237358,0.437569932612842,0.437602786299552,0.437597568887656,0.437599888650818,0.437599830920486,0.437600040669215,0.437604329354132,0.437575853366568,0.437670445947767,0.437476777390126,0.436959836056131,0.44006889733922,0.449012294187777,1.9749701989875,1.99643908971563,1.99590787913865,1.99491434960588,1.99621774859175,1.99501687033608,1.99530430433257,1.99516091061687,1.99516384884055,1.99515651341328,1.9951548103152,1.99515468274306,1.99515273911769,1.99515846542677,1.99514561367176,1.9951104696139,1.99524533125127,1.99503531514585,1.98919653311743,2.0151301482671,2.76917898559825,2.76003583567922,2.77674099977554,2.76887727560352,2.77645256365035,2.77576253361249,2.7762411008387,2.77628368778681,2.77629627421908,2.77630106460444,2.77630128847929,2.77630190195347,2.77630134262197,2.77630052377725,2.77630436029804,2.77631276616951,2.77573503665468,2.77815379611317,2.76580480224679,2.78218732955155,2.42757933518944,2.37516897364121,2.44532966475898,2.40981125611325,2.40977839843145,2.40905707680338,2.40886896293175,2.40887494827469,2.40886827551062,2.40886826971425,2.4088682014756,2.40886807175488,2.40886852561016,2.408871455412,2.40883862893523,2.4090050946694,2.40846192462835,2.4071325632898,2.42141144110126,2.3076101761481,1.4769942890587,1.62279839516781,1.67289616127229,1.68179162747662,1.68054167680067,1.68096207623736,1.68093398051085,1.680936605645,1.68093871638242,1.68093857255998,1.68093856995757,1.68093905497916,1.68093503876392,1.68094991721412,1.68091114308457,1.68072996255888,1.68141466926592,1.66780517330294,1.62696017402239,1.46507521895334,1.43004532757211,1.69819849820098,1.78960029043886,1.80314145008252,1.80394032954815,1.80411716228904,1.80410531691782,1.80410683243551,1.80410683644808,1.8041068260126,1.80410682670907,1.80410711662422,1.80410676070746,1.80410033230324,1.80414493126616,1.80377619961306,1.80369582989667,1.80233086622612,1.71931782219073,1.59171986730144,0.997182557149964,1.00209873426325,1.00180117510944,1.00241146124721,1.0024082993577,1.00238831547572,1.00239028552421,1.00238925041174,1.0023892313844,1.00238925214068,1.00238929804708,1.00238876021085,1.00239348601364,1.00238209566512,1.00242818455899,1.00320198663988,1.00076381649785,1.039526022517,0.965954713657551,0.95649143652903,0.335668243697733,0.347577902077172,0.348159385722737,0.348278148997651,0.348300991333399,0.348307636220674,0.3483051521333,0.348306010287324,0.348305763942886,0.348305784178844,0.348306039212604,0.3483050299097,0.348302325037957,0.348335076379848,0.347943322393685,0.349278306289596,0.340250805388444,0.346598801140247,0.346133753959726,0.367373599538174,0.117400600372484,0.11495360607651,0.11513079984923,0.115196779785824,0.11516244711913,0.1151716594682,0.115169140877361,0.115169991218346,0.115169708630105,0.11516975803868,0.1151695441083,0.115173046973321,0.115151266848249,0.115278857400131,0.114905201293112,0.116384671637461,0.116812591929921,0.116494335083909,0.111266303984062,0.113376754738394,0.0160813151994909,0.0181674533557674,0.0174800368541285,0.0176262401104876,0.0175944748247829,0.0176052725093748,0.0176010209858453,0.0176023441358543,0.0176020424384529,0.0176022894809631,0.0176006519729376,0.0176083578622254,0.0175771117553537,0.0176477081632073,0.0174789043785006,0.0171718703184578,0.0170615775535696,0.0181396899441813,0.0183108770511192,0.018919605355462,-0.0267099907989237,-0.024720566290068,-0.0250204648410864,-0.0249057874452122,-0.0249603973894807,-0.0249412689447289,-0.0249453143720181,-0.0249452258785091,-0.024944845233191,-0.024944615490559,-0.0249464725048308,-0.024940526741098,-0.0249492712672792,-0.0249407928297995,-0.0248704325849217,-0.0247808671274327,-0.0249567147298688,-0.0250697946008419,-0.0255553408488939,-0.0231253372536108,-0.0913973168900314,-0.0904340287306123,-0.0911605705797156,-0.0908815421245955,-0.0909457659717642,-0.0909441754870622,-0.0909377843894571,-0.0909420608395415,-0.0909403288821233,-0.0909405165898632,-0.090941259532088,-0.0909409784935031,-0.090939561215157,-0.0909495633153123,-0.0909795998705611,-0.0909627532617339,-0.0909374853334714,-0.0907840892559518,-0.0911717259229973,-0.0904918215231245,-0.279798664118556,-0.275503198808809,-0.2764964875607,-0.276446594569977,-0.276356239050571,-0.276413397722643,-0.276387940931674,-0.276396330880026,-0.276394494834119,-0.276394608334589,-0.2763944781612,-0.276394852672721,-0.276394254492903,-0.276387172653098,-0.276385633046366,-0.276387568472979,-0.276430946206172,-0.276322276338262,-0.276898602067535,-0.272989912970862,-0.753750079348245,-0.752886267070944,-0.751688110662558,-0.752497606878743,-0.752160251948097,-0.752278466299946,-0.752249568682577,-0.752252870699567,-0.75225361498815,-0.752253165956858,-0.752253292438005,-0.752253126467442,-0.75225441754114,-0.752255630035099,-0.752257077619398,-0.752243266820139,-0.752290273414763,-0.752033469050451,-0.753145409961815,-0.750756250303575,-1.72926582044655,-1.74030879355837,-1.73556508338215,-1.73712831680705,-1.73669425482873,-1.73675348940836,-1.73676319571519,-1.73675528107169,-1.73675760127344,-1.73675715384304,-1.73675723714782,-1.73675707233574,-1.73675677367814,-1.73675573598578,-1.7367606277246,-1.73674261166663,-1.7368169714018,-1.73665556818377,-1.73612454213993,-1.74424917335034,-3.1491510811982,-3.17115915057015,-3.16538947418376,-3.16648802875041,-3.16658841188218,-3.1664662618201,-3.16650384185605,-3.16649745743115,-3.16649783536291,-3.16649800516206,-3.16649797879162,-3.16649803651256,-3.16649857070646,-3.16649728542712,-3.16650217549597,-3.16649394368508,-3.16644824172914,-3.16706646126782,-3.16295075309844,-3.18385307477245,-4.38075138620876,-4.39561490024821,-4.39540311629303,-4.39356624683059,-4.3941889463397,-4.39408314498598,-4.39408443198374,-4.39408653450691,-4.39408528684639,-4.39408512655391,-4.3940852721689,-4.39408518479663,-4.39408581794696,-4.39408598564092,-4.39408438004748,-4.39412904823011,-4.39385093440645,-4.39529333434434,-4.38944920392937,-4.40746556916472,-4.49304587355535,-4.47457931101137,-4.48578926617775,-4.48396955914999,-4.48397273983447,-4.48403000502806,-4.48401313222104,-4.48401108525547,-4.48401211848118,-4.484011189286,-4.48401134180592,-4.48401178683378,-4.48401218982175,-4.4840171879025,-4.48399942468458,-4.48411896675731,-4.48366914293676,-4.485168471315,-4.48257433703127,-4.47514214447136,-3.17651148185763,-3.13160095361099,-3.13107821490039,-3.13243429906713,-3.13214714522764,-3.13211336241688,-3.13212813104279,-3.13211350490596,-3.1321130233242,-3.13211414967785,-3.13211279344777,-3.1321140331641,-3.13211332918175,-3.13212416772632,-3.13209836169985,-3.13219869412704,-3.13217274814123,-3.1308811516441,-3.14175411888935,-3.08802557508382,-1.2449251501646,-1.28622106200617,-1.28106094472614,-1.28073815968321,-1.28115676894179,-1.28100797436475,-1.28102711336189,-1.28104316417399,-1.28102762163708,-1.2810361481117,-1.28103369850776,-1.28103531924438,-1.28103387724935,-1.28104138961267,-1.28104632490084,-1.28096492710473,-1.28160439329687,-1.27936099222513,-1.28187284648901,-1.31736950427621,0.575461426009116,0.597336086512807,0.58943574321702,0.591525897130437,0.591286842771504,0.59119305106428,0.5914145137676,0.591324203113962,0.59136876423677,0.591362193950441,0.59136533966242,0.59136533878283,0.591365510247618,0.591371881875864,0.591331482553763,0.591459918779812,0.591236433959203,0.590198301135255,0.595917053583347,0.60638535184044,2.46712633855145,2.49724775903729,2.49675999393885,2.49540767783233,2.49711455913711,2.495421566029,2.49580112804053,2.49560343893193,2.49560525122398,2.49559505198406,2.49559256554729,2.4955923875721,2.49558963557385,2.49559717013686,2.49558231774664,2.49551171847747,2.49577937957605,2.49524771157653,2.48723833836781,2.52360395984435,3.48512983115149,3.472027377806,3.49542611843362,3.48468236454707,3.49546723492345,3.49457217768319,3.49523665318462,3.49530096071877,3.4953188562057,3.49532562729862,3.49532599422417,3.49532682979645,3.49532627925075,3.49532383993293,3.49533414437031,3.4953270896902,3.49453535115713,3.49790000525262,3.48015892877269,3.50463414768049,3.07271344504492,2.9982776023628,3.10108271580137,3.05089519897939,3.05069476313254,3.04968652421905,3.04942050660413,3.04942707677798,3.04941789161899,3.04941780429092,3.04941771406039,3.04941745519412,3.04941849089883,3.04942125899744,3.04937791943391,3.04961057951567,3.04878303285512,3.04695632701994,3.06609895031938,2.90612394926687,1.85962089223313,2.08060615953785,2.15090777206818,2.16313115511418,2.16144737740405,2.16202135491112,2.16198569784698,2.16198931398457,2.16199223613462,2.16199206064852,2.16199210096016,2.16199260677646,2.16198728982722,2.16200840697094,2.16194901880245,2.16170385616398,2.16263174886589,2.1427634263327,2.07999085393267,1.85776364757719,1.69018104756088,2.05282107811162,2.17231153933073,2.19061604659163,2.19168062824087,2.19191098792071,2.19189849088354,2.1919001712496,2.19190021902089,2.19190022114026,2.19190021575002,2.19190059244982,2.19190003189441,2.19189223134,2.19194800058788,2.19145595016958,2.1914102840852,2.18855698001537,2.07765341209919,1.91227335324703,1.22635149387047,1.23534571359426,1.23441441932652,1.23520532936881,1.23519741834656,1.23517201324681,1.23517400639157,1.23517278957245,1.23517274158384,1.23517277125225,1.23517282276772,1.23517216434363,1.23517828073661,1.23516289858507,1.23523245973362,1.2362185257338,1.2331713018001,1.28463781297834,1.18815242887829,1.17529276804528,0.413519396407537,0.428770152500347,0.429684097001829,0.429812789330784,0.429848287953584,0.429855936679477,0.429852938957197,0.429853994675405,0.429853686867188,0.42985371319669,0.4298540447707,0.429852664389951,0.429849639934815,0.429889614724124,0.429383572537968,0.431119105228688,0.41924879281816,0.427589452923681,0.426908518566244,0.454649688309983,0.147078007505377,0.143860084335929,0.144094018664303,0.144183833511057,0.144137620563364,0.144149944160808,0.144146623663904,0.144147737718882,0.144147369696589,0.144147428639873,0.144147186986669,0.144151577050706,0.144123759011147,0.144289344459519,0.14380151778836,0.145735879191182,0.146270047711673,0.145883843923412,0.139067768261773,0.141819468894689,0.0215931066950706,0.0242289442288419,0.0233307736480412,0.0235206762672183,0.0234801887440267,0.0234938707446659,0.0234884139187294,0.0234901152488501,0.0234897282711891,0.0234900398397921,0.0234879478001997,0.0234978907589884,0.0234572606335635,0.0235494782835506,0.0233293912182693,0.0229366538914275,0.022791534070339,0.0241883564231665,0.0244239538843337,0.0251159844327862,-0.0296752103638291,-0.0270008291776451,-0.0273837401995913,-0.027238770991736,-0.0273088021843397,-0.027283940649019,-0.0272892010191535,-0.0272890567701971,-0.0272885874139013,-0.0272882821810638,-0.0272906921761819,-0.027282951722555,-0.0272943939624494,-0.027283304647658,-0.0271934069837038,-0.0270782764348804,-0.0273053685189337,-0.0274515541816883,-0.0280861000192859,-0.0248302859824449,-0.106638801890468,-0.105524693055524,-0.106451958778835,-0.106090388614475,-0.106174791703466,-0.106172458308986,-0.106164482246651,-0.106169844349619,-0.106167667453274,-0.106167887358289,-0.106168864076213,-0.106168482900441,-0.106166675587197,-0.10617938266769,-0.106217740049065,-0.106195800088308,-0.10616429970571,-0.105963641807209,-0.10646508613328,-0.105707460849323,-0.333165334585511,-0.327533591332312,-0.328839424504543,-0.328766167370976,-0.328651686976778,-0.328723353189964,-0.328691396274111,-0.328701947147692,-0.328699669511835,-0.328699782108642,-0.328699625289082,-0.328700097247243,-0.328699355618867,-0.328690359030007,-0.328688547030425,-0.328690660336357,-0.328746823322462,-0.32860881240034,-0.329339729348832,-0.32423342044525,-0.899529986867715,-0.898336452932055,-0.896834184512932,-0.897861953399628,-0.89744046724393,-0.897588726948706,-0.897552617361997,-0.897556466003642,-0.89755756156766,-0.897556951681824,-0.897557119369882,-0.8975569082549,-0.897558538016472,-0.897560029145859,-0.897561943955497,-0.89754426412796,-0.897604233302585,-0.897273367752349,-0.898724239107554,-0.895583925412057,-2.05982425152314,-2.07376298681849,-2.06777027878811,-2.06970881663157,-2.06916540404221,-2.06923703184329,-2.06925136056129,-2.0692406880213,-2.06924371667529,-2.06924317071042,-2.06924325568272,-2.06924305361381,-2.06924268982317,-2.06924135302812,-2.06924766120339,-2.06922425161613,-2.06932174971642,-2.06910389474723,-2.06846428882012,-2.07866294919902,-3.72974052102136,-3.7573544778308,-3.75028584401426,-3.75165646474838,-3.75180663669697,-3.75164187751019,-3.75169115475294,-3.7516833115651,-3.75168352633836,-3.75168384366543,-3.75168379405386,-3.75168386698645,-3.75168455122148,-3.75168288894142,-3.75168922621894,-3.75167845820981,-3.75162031613937,-3.7524109852524,-3.74716966022141,-3.77363770903708,-5.13718270596972,-5.15483758701389,-5.15461255271831,-5.1521403232019,-5.15296379744287,-5.15283199221521,-5.15282973258602,-5.15283382675889,-5.15283187749948,-5.15283169169809,-5.15283187102104,-5.15283175637122,-5.15283257219432,-5.15283276479307,-5.15283084777782,-5.15288688937934,-5.15253979409614,-5.15432519644467,-5.14719338758566,-5.16854055162137,-5.18171423894103,-5.15834655508624,-5.17336016541723,-5.17103473508263,-5.17097907466275,-5.17107447990671,-5.17104793746158,-5.17104611780621,-5.17104755374547,-5.17104636635403,-5.17104659337826,-5.17104715120954,-5.17104768641315,-5.17105398013832,-5.17103180781609,-5.17118186095033,-5.17061795079033,-5.17250670210251,-5.16915936589564,-5.16059009205516,-3.55310908028873,-3.49234758712869,-3.49076584609087,-3.49288312879531,-3.49243777618106,-3.49240443758438,-3.49242267123105,-3.49240270295383,-3.49240213623091,-3.49240337205283,-3.49240168255507,-3.4924032295675,-3.49240237280398,-3.49241607269834,-3.49238376757044,-3.49250879323721,-3.49249268760763,-3.49073124520071,-3.50536891314874,-3.43209273765199,-1.30205724461392,-1.36400530752105,-1.35603985966753,-1.35573071627623,-1.35626870228756,-1.35607628533075,-1.35610939239777,-1.35613017855369,-1.35611132236659,-1.35612211282917,-1.35611912441117,-1.35612116958192,-1.35611939857468,-1.35612870846522,-1.35613672659273,-1.35602384011581,-1.35687689685462,-1.35393711677339,-1.35658915087301,-1.41045948552765,0.723156122714391,0.751993320551117,0.741371193074501,0.744099236510909,0.743782735660804,0.743708953407133,0.74400031339457,0.743888964690166,0.743946117069512,0.743938348698204,0.743942376006329,0.743942455273846,0.743942551501992,0.743951320024232,0.743897724458467,0.744062852343909,0.743818655922464,0.742135096546973,0.751038626505538,0.763556700157115,2.95263929626559,2.9918050357341,2.99145022657427,2.98978547489701,2.99181716791651,2.98956979128348,2.99003891553169,2.98978375633643,2.98978364142077,2.9897703742496,2.98976704328216,2.98976681354959,2.98976316589814,2.98977261831215,2.98975628109742,2.98964304862847,2.99007455767457,2.98915857184669,2.97878591384741,3.02605493552897,4.20345839126217,4.18649976290851,4.21641924729887,4.20266225849875,4.21694019854142,4.21586292161446,4.21672218304963,4.21681025417452,4.21683405266075,4.21684286147243,4.21684339343621,4.21684446509536,4.21684396845223,4.21683945483523,4.21685827667684,4.2168293179385,4.21581879713304,4.22021184604234,4.1967276332302,4.23058508915327,3.72811156701278,3.62942131171661,3.76729214113882,3.70175247030072,3.7013106898592,3.69998809013769,3.6996445873338,3.69965056322233,3.69963889528431,3.69963872410462,3.69963860813212,3.69963819026457,3.69963996451787,3.69964220943276,3.69958771598932,3.69989628568001,3.69873128298437,3.69648485485513,3.72075150081079,3.51249192232472,2.2483117151533,2.54940352638561,2.64196681323505,2.65712932848882,2.65508435742364,2.65580211888227,2.6557589141406,2.65576382899412,2.6557674829996,2.65576729253553,2.65576738784169,2.65576788087151,2.65576118550444,2.65578942874332,2.65570587897084,2.65539412095555,2.65660526626418,2.62997506477139,2.5431770502158,2.25635904334561,1.95090297309827,2.4130040715551,2.56187896311337,2.58523286677243,2.58659451125551,2.58687865933244,2.58686595624468,2.58686782032043,2.5868679104605,2.58686792788163,2.58686791675244,2.58686838963652,2.58686754770949,2.58685863681998,2.58692526995377,2.58629900944831,2.58633574476139,2.5815956606041,2.44166872446596,2.23687606389219,1.4603442753369,1.47412046582252,1.47241455855349,1.4734360134316,1.47341295421366,1.47338390961553,1.47338564014639,1.47338425360539,1.4733841781402,1.47338421658882,1.47338426965968,1.47338350061642,1.47339107038439,1.47337104324219,1.47346837689953,1.47466097380325,1.47099210881635,1.53564305472113,1.41533999845798,1.39888987418369,0.493505308966691,0.512137866033588,0.513437029201663,0.51356394781013,0.513616470925318,0.513624230797831,0.51362087183358,0.513622106687902,0.513621736705473,0.513621770269802,0.513622183746467,0.513620383189213,0.513617255157218,0.513663942334899,0.513041718272016,0.515194529681237,0.500411897603793,0.510851106900052,0.509862230066588,0.544283820645728,0.177727566437577,0.173722519920906,0.174012609924038,0.174129141615329,0.174069841120606,0.174085639856791,0.174081432461427,0.174082832837101,0.174082374540461,0.174082440551128,0.174082184853641,0.174087434577299,0.17405350307533,0.17425803737311,0.17365198663669,0.176048384641798,0.176671344223858,0.176228597985071,0.167789025093887,0.171226329994206,0.0274840862946015,0.0306776444093398,0.0295623490638113,0.0297968934090509,0.0297475712084183,0.0297641598342381,0.0297574628739511,0.0297595497688738,0.0297590789192561,0.0297594524522279,0.0297569023216995,0.0297691360626477,0.0297188783292208,0.0298333846246776,0.0295615399744511,0.0290865038705381,0.0289068057882641,0.0306268792464639,0.0309218648632806,0.0316929620655632,-0.0324206765973651,-0.0290325423996864,-0.0295001423607089,-0.0293238119901799,-0.0294097842018875,-0.0293789325743095,-0.0293854236916165,-0.0293852363782812,-0.0293846715818854,-0.0293842914015245,-0.0293872684419616,-0.0293776885804103,-0.0293919133781433,-0.0293782087957283,-0.0292694855332902,-0.0291293924456482,-0.0294084366719735,-0.0295862369985866,-0.0303742208126502,-0.0262591980898271,-0.121824864315639,-0.120566517616791,-0.121702211513212,-0.121255457434388,-0.121360791959895,-0.121357958443332,-0.121348276301281,-0.121354768849618,-0.121352128083294,-0.121352382904501,-0.12135359977295,-0.121353110709544,-0.121350913893631,-0.121366186508439,-0.121412621380681,-0.121385364906379,-0.121348094637832,-0.121099287227271,-0.121716712080811,-0.120892758552796,-0.386821768824388,-0.379795119669385,-0.381421342709201,-0.381324820526848,-0.381183740283738,-0.38127054213658,-0.381231867722473,-0.381244662248801,-0.381241932489015,-0.381242037075266,-0.381241856900953,-0.381242422410985,-0.381241560808931,-0.381230719207809,-0.381228734819363,-0.3812308935335,-0.381300067433385,-0.381131620201023,-0.382023870748672,-0.375661349370146,-1.04602766067161,-1.04453010884094,-1.04270441993409,-1.04396569685939,-1.04345797037855,-1.04363718686289,-1.0435936234966,-1.04359796631885,-1.04359946924266,-1.04359868265293,-1.04359889846363,-1.04359863992024,-1.04360059097892,-1.04360232356738,-1.04360472418183,-1.04358314635536,-1.04365641652923,-1.0432494950481,-1.04504696651207,-1.04116973388877,-2.39126233157311,-2.40823326858412,-2.40092207793193,-2.40323779511287,-2.40258150651573,-2.40266552447962,-2.40268520465944,-2.40267147293673,-2.40267526089899,-2.40267460264174,-2.40267468294487,-2.40267444860357,-2.40267403218447,-2.40267239274711,-2.40268015916585,-2.40265108264734,-2.4027728441948,-2.40249573811242,-2.40174393340886,-2.41408791181694,-4.30849198713029,-4.34195922681416,-4.33362681307888,-4.33528298007335,-4.33548990441183,-4.33527769807679,-4.33533972215867,-4.33533039138141,-4.3353304380924,-4.33533094945213,-4.33533087102938,-4.33533095689696,-4.33533179359381,-4.33532974331164,-4.33533756801661,-4.33532440535591,-4.335251691547,-4.33623060739094,-4.32977922647998,-4.36218296251713,-5.88294504406796,-5.90303946838888,-5.90274808213079,-5.89957218659848,-5.90061769431593,-5.90045883331879,-5.90045213298197,-5.90045842754281,-5.90045554271551,-5.90045531754697,-5.90045553600286,-5.9004553873172,-5.90045639188006,-5.90045662434503,-5.90045431265871,-5.9005223306207,-5.9001043819427,-5.90223314551412,-5.89386679058577,-5.91803942992157,-5.84581807262889,-5.81777216311845,-5.83705437967559,-5.83417901546141,-5.83404743750687,-5.83418717941908,-5.83414985958907,-5.83414904991207,-5.83415114820511,-5.8341496597532,-5.83415000055748,-5.83415067659909,-5.83415134739831,-5.83415899199949,-5.83413227248358,-5.83431373400807,-5.8336321957838,-5.83593025024508,-5.83171172983632,-5.82274026810543,-3.89521107315522,-3.81602245906612,-3.81310399232053,-3.81612379233692,-3.81549936856646,-3.81546820373008,-3.81548797178423,-3.81546065008361,-3.81546008245735,-3.81546130512712,-3.81545924258272,-3.81546110022608,-3.81546007380219,-3.81547672924808,-3.81543764351457,-3.81558814174545,-3.81558478664457,-3.81330190809248,-3.83216409548444,-3.73619847254784,-1.33513388258769,-1.4219065554057,-1.41064428501279,-1.41033772606055,-1.41100104491729,-1.4107664754287,-1.41082402306656,-1.41085043436705,-1.41082851934421,-1.41084183775789,-1.41083832411795,-1.41084081879475,-1.410838702146,-1.41084981331677,-1.41086136703711,-1.4107127442664,-1.41180229449693,-1.40809101964801,-1.41077959314229,-1.4868622772674,0.860026338762458,0.897252197656714,0.883444157846654,0.886839220150441,0.886433503059275,0.886420818643264,0.886793472543718,0.886661429535051,0.886732277636926,0.886723445579938,0.886728417575119,0.886728593370673,0.886728581841171,0.886740044480407,0.886672011244371,0.886877163123628,0.886620470123348,0.884168470792069,0.896861683287639,0.911974737889289,3.42708340146554,3.47576368491355,3.47559763478637,3.47369213536988,3.47596264550362,3.47309525921888,3.47365128600172,3.47333592080874,3.47333326202691,3.47331675603045,3.47331254565496,3.4733122715059,3.47330763919527,3.47331917209227,3.4733016882039,3.47313908778546,3.47376660486741,3.47240298928648,3.45946338148392,3.51817741151746,4.92167559597375,4.90105467946616,4.93720697696859,4.92030641827163,4.93830032754765,4.93706324056652,4.93812360934915,4.93823634799262,4.93826654846542,4.93827740007458,4.93827810587725,4.93827942496737,4.93827902363501,4.93827194778604,4.93830168303056,4.93824377870697,4.93701333312566,4.94252307491199,4.91301834577136,4.95726771040319,4.39166003595075,4.26690046901398,4.4412753768983,4.3600646738322,4.35933212597217,4.35767017555294,4.35725194194525,4.35725638118578,4.35724226074482,4.3572420214681,4.35724187801042,4.35724126993356,4.35724394629115,4.35724530938294,4.35717878714491,4.35757393939111,4.35602140835261,4.35343434740035,4.38307971839017,4.12537952760132,2.64266487445014,3.02636639086751,3.14290279372642,3.16048665546967,3.15815911287681,3.15900986411771,3.15895845237971,3.15896500916281,3.15896930456517,3.15896910560328,3.15896927110148,3.15896972142394,3.15896155794293,3.15899784582991,3.15888699001461,3.15850636266856,3.16004211501713,3.12635284470101,3.01419534407507,2.65967734920955,2.21277471441149,2.77745904875838,2.95655281566121,2.98513839197588,2.98681776955871,2.98715614958552,2.9871434529053,2.98714550971098,2.98714564624684,2.98714568109259,2.98714566303038,2.9871462402639,2.98714505384137,2.98713524361,2.98721254619261,2.98644421713107,2.98659946096171,2.9797012085555,2.81007007546589,2.5647952914937,1.69766506405157,1.71671793138366,1.71414061274537,1.71542957537838,1.71538442182265,1.71535277166941,1.71535410981599,1.71535255209103,1.71535245021869,1.71535249840547,1.71535254868295,1.71535167694003,1.71536074760994,1.71533557899494,1.71546371149365,1.71685801823342,1.71255866089233,1.79067606637385,1.64599082566048,1.62584711537063,0.574992119972648,0.597007764254832,0.598727403269062,0.598844960266154,0.598917261459671,0.598924609578341,0.598920966450728,0.598922373822529,0.598921940010149,0.598921981809703,0.598922481346125,0.598920224830008,0.598917150905682,0.598970186257877,0.598230748411882,0.600811514682085,0.583077717297606,0.595686707752719,0.594323742276088,0.635511524877123,0.20902540930194,0.204245379265611,0.20458894376304,0.204733980823471,0.204660932255405,0.204680400427389,0.204675260889383,0.204676960635441,0.204676409526678,0.204676480443717,0.204676220849305,0.204682308336407,0.204642222860409,0.204886276826641,0.204159463975925,0.207021815087832,0.20772100116064,0.207229677559273,0.197146425573773,0.201317241953951,0.0336705614522704,0.0374129626354876,0.0360798561152834,0.0363591299939609,0.0363009295078476,0.0363204579802637,0.0363124913418454,0.0363149681814537,0.0363144147326239,0.0363148484798175,0.0363118383910619,0.0363263968499159,0.0362663584687203,0.0364035824026533,0.0360796881638025,0.0355247523750525,0.035310698058674,0.0373570299166853,0.0377054827043848,0.0385440190208802,-0.0351159577705617,-0.0309982128029596,-0.0315523378278967,-0.0313436046959432,-0.0314459564117051,-0.0314089462083684,-0.0314166665872196,-0.031416445675968,-0.0314157816450932,-0.0314153271217231,-0.0314188800287851,-0.031407432524598,-0.0314244981605686,-0.0314081718223435,-0.0312810725211543,-0.0311164170557089,-0.0314479371204102,-0.0316564201651409,-0.0325976447001448,-0.0276080074964262,-0.137082427566356,-0.135679258664255,-0.137029198538798,-0.136495462941683,-0.13662209215694,-0.136618973574847,-0.136607512666168,-0.136615162644401,-0.136612043177053,-0.136612335970547,-0.136613797156216,-0.13661319376279,-0.136610604175124,-0.13662835942025,-0.136682739420822,-0.136650040389825,-0.136607127018256,-0.136310192674352,-0.137045037357222,-0.136157463814428,-0.440723247020969,-0.432264033518208,-0.434214972388764,-0.434096069115859,-0.433926638056478,-0.434028915507559,-0.433983369790131,-0.433998481644655,-0.433995288229253,-0.433995379068797,-0.433995178123,-0.433995835896122,-0.433994869907919,-0.433982222099156,-0.433980110719784,-0.433982272742544,-0.434064545039801,-0.433864743653043,-0.434923609474659,-0.427266430120181,-1.19305836858149,-1.19127984092167,-1.18911449702932,-1.19061907116705,-1.1900240182816,-1.19023500047099,-1.19018372949991,-1.19018853163023,-1.19019048978548,-1.19018951426599,-1.19018978354849,-1.19018947545729,-1.19019173659913,-1.19019369340466,-1.19019658907344,-1.19017108485591,-1.1902579645613,-1.18977346273392,-1.19192250232782,-1.18732071366126,-2.72337746659521,-2.7434817511382,-2.7348102934896,-2.73750443264718,-2.73673135163908,-2.7368279751106,-2.73685361875268,-2.73683656824059,-2.73684115280053,-2.73684036960862,-2.73684044024623,-2.73684017767687,-2.7368397155093,-2.73683776860906,-2.73684702580125,-2.7368120916896,-2.73695879464506,-2.73662129280113,-2.73575094307839,-2.7503044871011,-4.88619394217459,-4.92565623563698,-4.91607297954332,-4.9180313062656,-4.91830066897192,-4.91803678184771,-4.91811244416071,-4.91810162705236,-4.91810151142979,-4.91810225674422,-4.91810214449921,-4.91810224204807,-4.9181032338993,-4.91810079000077,-4.9181101167849,-4.91809472014171,-4.91800577869895,-4.91918372013666,-4.91146916753743,-4.95002619567236,-6.62197840082473,-6.64437066161145,-6.64395880776087,-6.6400177011341,-6.64130386710348,-6.64111723935864,-6.64110526946951,-6.64111388701618,-6.64110985846283,-6.64110958170528,-6.64110984430591,-6.64110965447461,-6.64111085051712,-6.64111113437212,-6.64110837626787,-6.64118869238129,-6.64069916149887,-6.64316978996595,-6.63360297182894,-6.66032907424661,-6.4940923123004,-6.46144706237373,-6.4854157954512,-6.48195475983177,-6.48173153551203,-6.4819208910843,-6.48187209544025,-6.4818730363393,-6.48187603447854,-6.48187420768763,-6.481874696652,-6.48187549748547,-6.48187630596984,-6.48188533239843,-6.48185397542321,-6.48206755991207,-6.4812645977982,-6.4839944523973,-6.47878759329756,-6.46996356045005,-4.21413385715403,-4.11434631730611,-4.10982247177642,-4.11386736939554,-4.11304773669117,-4.11301955619996,-4.11303891859796,-4.11300246299708,-4.11300194840118,-4.11300306570204,-4.11300058447239,-4.11300275447389,-4.1130015419532,-4.11302122665274,-4.11297507298844,-4.11315189900427,-4.11316329716612,-4.11031218149689,-4.13381665556471,-4.0124550224992,-1.35461834309021,-1.46987928931095,-1.45493331466474,-1.45461035488624,-1.45540471831195,-1.45513052698877,-1.45522166486303,-1.45525466967504,-1.45522984822974,-1.45524595470817,-1.45524192512023,-1.45524489221904,-1.4552424105457,-1.45525532587518,-1.45527075719879,-1.45508271095492,-1.45642861609462,-1.45188322146873,-1.45448791801416,-1.55621739224658,0.984237403116746,1.03134233552993,1.01394206885502,1.01802872535352,1.01752346723899,1.0176044678303,1.01806825183133,1.01791558617341,1.01800101899864,1.01799121496076,1.01799718368892,1.01799746753177,1.01799732484852,1.01801172994472,1.01792822290684,1.01817616722943,1.01791483298132,1.01458778791561,1.03156125587753,1.0500276161233,3.89201041763141,3.95040539854111,3.95048857524261,3.94839855660365,3.95084680126938,3.94730935221009,3.94795079142486,3.94757317146319,3.94756766264307,3.94754779640431,3.94754268924603,3.94754237861734,3.94753668059215,3.94755044176389,3.9475321104569,3.94731464348054,3.94816469292568,3.94631039242874,3.93059544592049,4.00108928393551,5.6395176148768,5.61548392064893,5.65763452856226,5.63749108130882,5.65935153945041,5.65797009856805,5.65923594566211,5.65937375903344,5.65941065950234,5.65942356088496,5.65942444025664,5.65942601821515,5.6594257517825,5.65941568410942,5.65945834070587,5.65936588214216,5.6579129462073,5.66461327470808,5.62891155615498,5.68426824006873,5.06135795949345,4.90925502596737,5.12096734878336,5.02392487292583,5.02287378539995,5.02085463395198,5.02036384156488,5.0203662103158,5.02034964424973,5.02034935119881,5.02034918029755,5.02034835332321,5.0203520651316,5.02035229072404,5.02027289352347,5.02076358720178,5.01878673576492,5.01591159681022,5.05111322481497,4.74328873830596,3.04134615342719,3.5089330414111,3.65063391048009,3.67023701867544,3.66768096873077,3.66865782361615,3.66859747966339,3.6686059188198,3.6686107995509,3.66861059634316,3.66861084142507,3.66861122825615,3.66860150974648,3.66864658997461,3.66850607172483,3.66805457670384,3.66994660227429,3.62903015971501,3.49074990202339,3.06648729480223,2.47630071738455,3.14510789241434,3.35484477280088,3.3887650721129,3.39077333853329,3.39116611330514,3.39115353940015,3.39115578401582,3.3911559716062,3.39115602215084,3.3911559976045,3.39115668577005,3.39115511572162,3.3911445268189,3.39123245519261,3.39031744025268,3.39061256850201,3.3814131332314,3.18174782423287,2.89539190510672,1.9371772502014,1.96176224860478,1.95827516459157,1.95985149059834,1.95978079899649,1.9597470676153,1.95974794986189,1.95974622064015,1.95974609202617,1.95974615031686,1.95974619625111,1.95974522539948,1.9597558279452,1.9597252187583,1.9598858072129,1.96147905716087,1.956543104749,2.04826348016376,1.87890052208491,1.85502412638086,0.657452944076176,0.682840604108621,0.684996678299843,0.685101852566339,0.685195195907991,0.6852018949029,0.6851980019255,0.685199579524236,0.685199081276816,0.685199131479035,0.685199719648233,0.685196986168665,0.685194055468491,0.685253249885422,0.684396089133509,0.687410355284936,0.666708174178151,0.681523235487428,0.679750765653162,0.727729087750969,0.240721834240816,0.235189709356346,0.235585231998664,0.235759327891368,0.235672296705632,0.235695509211575,0.235689416737924,0.235691421415572,0.235690776516753,0.235690851174083,0.235690593114046,0.23569750716206,0.235651244681485,0.23593510039371,0.235086288238267,0.238416132953496,0.239184819395545,0.238649574065222,0.226911919372529,0.231858583770155,0.0400388190962206,0.044310260430213,0.0427606161968031,0.0430846283127809,0.0430175123627783,0.043040014986305,0.0430307657511863,0.0430336343519736,0.0430329988285941,0.0430334919017606,0.0430300210539774,0.0430469204795482,0.0429770295261146,0.0431371683304451,0.042761095733802,0.0421276084421271,0.0418791678578849,0.0442536723390957,0.0446513871062317,0.045538457931294,-0.0378230064584399,-0.0329602951559551,-0.0336030723748324,-0.0333613424702153,-0.0334803333450713,-0.0334371101832554,-0.0334460590067213,-0.0334458080217314,-0.0334450432294021,-0.0334445146301314,-0.0334486476463088,-0.033435319288498,-0.033455254102215,-0.0334362912967743,-0.0332910408592784,-0.033102014677304,-0.0334863778387434,-0.0337252044287698,-0.0348176768151071,-0.0289411951836354,-0.152352495327757,-0.15080691053351,-0.152373164909215,-0.151751518861199,-0.151899458640892,-0.151896128168669,-0.151882859777445,-0.151891679539763,-0.151888074020537,-0.151888406364478,-0.151890113796498,-0.151889391397283,-0.151886408023242,-0.151906609405998,-0.151968889194247,-0.151930674062526,-0.151882098717601,-0.151537168237378,-0.152391325323465,-0.151441878823387,-0.494626738834133,-0.484716770989826,-0.486995168957076,-0.486854971795176,-0.48665665690676,-0.486774572134763,-0.486722076908116,-0.48673954410572,-0.486735880414837,-0.486735955004829,-0.486735734953922,-0.486736485049314,-0.486735422242873,-0.486720980325564,-0.486718756246811,-0.486720925012562,-0.48681632445899,-0.486584708453826,-0.487811771652853,-0.47884398510713,-1.3400264694921,-1.33797698796957,-1.33546147912883,-1.33721203743718,-1.3365288306288,-1.3367720000751,-1.33671288620612,-1.3367181351228,-1.33672057110778,-1.33671940038566,-1.33671972570818,-1.33671936625657,-1.33672193353179,-1.33672410997825,-1.33672750720096,-1.33669803912838,-1.33679876705267,-1.33623563254748,-1.33874050410138,-1.33341241463922,-3.05510822649392,-3.07840173774778,-3.06836064780067,-3.0714372445053,-3.07054556173924,-3.07065494462316,-3.07068683578254,-3.07066633752108,-3.070671740356,-3.0706708242286,-3.07067088383239,-3.0706705952384,-3.0706700894638,-3.07066783100456,-3.07067859401931,-3.070637739905,-3.07080950113611,-3.07041220081179,-3.06941428617944,-3.08623479900765,-5.46217971972051,-5.50766071184641,-5.4968070155308,-5.49907218717762,-5.49940638245346,-5.49908876682511,-5.49917854797137,-5.49916622144622,-5.49916595416938,-5.49916695237176,-5.49916680166549,-5.49916691022759,-5.49916805908487,-5.49916521985485,-5.49917605293122,-5.49915847594055,-5.4990528382867,-5.50043238885966,-5.49144569459609,-5.53617249428003,-7.35634678516826,-7.3811194811171,-7.38059912918547,-7.37586773534933,-7.37740407860164,-7.37718896568744,-7.37717142191603,-7.37718241304654,-7.37717712664499,-7.37717680021983,-7.37717711197252,-7.37717687744963,-7.3771782659184,-7.37717860484728,-7.37717538207387,-7.37726813178966,-7.37670639825589,-7.37952194576462,-7.36873809057456,-7.39810952593857,-7.1334447770966,-7.09593697390313,-7.12473972336645,-7.12066764741973,-7.12034712102967,-7.12058860604657,-7.12052787592441,-7.12053101740881,-7.12053502346081,-7.12053282653628,-7.1205334783095,-7.1205344065548,-7.12053535311193,-7.12054577567668,-7.12050972983409,-7.12075582954869,-7.11982963905974,-7.12299860534209,-7.11679326696344,-7.10797784278795,-4.52115866737406,-4.40022194791289,-4.39405815705037,-4.39918463641717,-4.39815915815307,-4.39813528410705,-4.398153061267,-4.39810651481967,-4.39810611830946,-4.39810710064828,-4.39810417812125,-4.39810666344514,-4.3981052538711,-4.39812799731323,-4.39807462613795,-4.39827814679043,-4.39830513667134,-4.39486752924929,-4.4231516600134,-4.275735744794,-1.3684933581352,-1.51309680078822,-1.49419470741739,-1.49386855509309,-1.49479530788511,-1.49448244262126,-1.49461219009672,-1.49465227351165,-1.49462454887713,-1.49464357901154,-1.4946390253964,-1.4946424766919,-1.49463962003319,-1.49465434252037,-1.49467375920896,-1.49444460626701,-1.49605573369148,-1.49064106417134,-1.49319633817252,-1.62115860594201,1.10211787543386,1.1584716305469,1.13731167216857,1.1421176528114,1.14150365870972,1.14169659845798,1.14225714830913,1.14208358046264,1.14218414925158,1.14217338731594,1.14218038106607,1.14218077469867,1.14218048890992,1.14219794579752,1.14209842272726,1.14239097880213,1.1421255991376,1.13788197039619,1.15942761442077,1.18024340609403,4.3497210518326,4.41914156756009,4.41939366331784,4.41715815295802,4.41975101026128,4.41551307221739,4.41623981071428,4.41579865203886,4.41579014436689,4.41576685396826,4.41576084100808,4.41576050236189,4.41575369803792,4.41576980004033,4.41575059211775,4.41547568320705,4.41656405411444,4.41417174066249,4.39565196530986,4.47913863024184,6.35964876724415,6.33165428139137,6.37976490276352,6.35630942856029,6.3821267639813,6.38060949671786,6.38208343868122,6.38224656272647,6.38229033135787,6.38230528735967,6.38230633940569,6.38230818076315,6.38230806290206,6.38229477768387,6.38235159899181,6.38222064382314,6.38054678144708,6.38848806356599,6.34636945096824,6.41272883369511,5.73508172429384,5.55528525060708,5.80469322597351,5.69173987868721,5.69035251752571,5.6879659797657,5.68740385353207,5.68740385216316,5.68738484297394,5.68738450358714,5.68738430598283,5.68738324603847,5.68738807050634,5.68738698329417,5.68729431400046,5.68788578482128,5.68546110059688,5.6823335879781,5.7232721919445,5.36516422680558,3.44357765982078,3.9954842043444,4.16298862297201,4.18438121839025,4.18162767593679,4.18272671039987,4.18265702320487,4.18266748295748,4.18267291676917,4.18267270913016,4.18267304225174,4.18267335128551,4.18266203951248,4.18271633185014,4.182544692646,4.18202209560283,4.18428930597504,4.13605300398725,3.97124533561642,3.47606401600107]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1104.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1104.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1104.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1104_field1":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10.1541344788656,9.69018112495751,9.77934055247414,9.78448411117012,9.78492375935972,9.7848345287278,9.78481215443228,9.78480910262059,9.78480882563124,9.78480860071827,9.78480880532277,9.7848090874772,9.78480889124155,9.78480865002955,9.78480763788802,9.78486727124882,9.78554587841253,9.7959888648189,9.88079925357121,9.60412997299242,4.88301902234365,4.45256163467273,4.5949727440397,4.57890278683892,4.58086495774505,4.58024734032034,4.58154865205278,4.58069829967412,4.5801340621085,4.58156135208118,4.58068797108513,4.58013234957502,4.5815741583712,4.58063685407881,4.58013998391431,4.5812086743286,4.57721962870083,4.552933162693,4.54583482107037,4.88301902309973,2.26825129668598,2.34011206977638,2.32248300914848,2.32960993371632,2.32772652097534,2.32789877978009,2.32750230764568,2.32842028614418,2.3277984647253,2.327520254398,2.32841677441865,2.32779285845116,2.32753935122861,2.32839204650793,2.32801499158993,2.32780558344459,2.33443984706756,2.33907523775115,2.27728048795575,2.26825129714969,1.10974143636975,1.0838646580895,1.08401775972298,1.08283822742262,1.08282776961131,1.08316105286837,1.08287900227941,1.08281465380272,1.08323184814991,1.08291367909292,1.08283191902218,1.08322190999208,1.08293617422564,1.08272084127118,1.08332342412044,1.08136278886332,1.08059543472132,1.09040001730075,1.10152841174649,1.10974143686298,0.697175610923962,0.703305541037587,0.701130133150615,0.70068077270212,0.700333814125724,0.700000965647281,0.700121432402737,0.699904786804567,0.699881002975211,0.700005075275987,0.699906257642511,0.699892828001781,0.700004260015677,0.699979891725001,0.69983490150121,0.701322662662943,0.699592058489857,0.698037483294464,0.695524244767331,0.697175611232888,0.648359367694454,0.643813504470473,0.642846118169049,0.640693435562538,0.640011279338861,0.639850652572937,0.639773578967419,0.639777888179592,0.639744806071857,0.639821138511153,0.639747516825589,0.639711146722155,0.639859288056398,0.639610188270561,0.639685741746847,0.639304835430976,0.641867375552029,0.644732179893114,0.646881358197092,0.648359367578531,0.839983546562805,0.840444745700077,0.83901540238512,0.837398290109045,0.835958335772851,0.834179580139004,0.834050571549849,0.833415890844302,0.833175344647597,0.833261798660896,0.833533860484241,0.83328134277393,0.833090766009191,0.833763504156732,0.833210738776663,0.834370997857503,0.834844849784948,0.835874671040403,0.837930364546511,0.839983546114244,1.55438910522435,1.55093748291221,1.54905644166191,1.54311119769468,1.54083666075477,1.53739846810545,1.53365931329547,1.53179976618715,1.53081695897042,1.52947682548464,1.5305969673014,1.53105418820404,1.52977292387596,1.53061066519887,1.53240280608243,1.53437442774657,1.53930412901255,1.5452588890262,1.54952885820593,1.55438910470783,3.32678662833644,3.31512511343234,3.31421027832318,3.30300353564102,3.29389177562146,3.28597585832672,3.27899319113593,3.2687839305292,3.26263117754989,3.26596195084984,3.26360727602792,3.25926557294259,3.26452042783139,3.26628351866138,3.27193872415482,3.28080315447265,3.28999255005686,3.3042376151373,3.31397127230131,3.3267866282044,6.9899794676512,6.95187446607786,6.94510371478152,6.92174301333386,6.90497496559428,6.88317949182832,6.8664951814169,6.84924996100437,6.83531343530076,6.82898249465885,6.8306588687532,6.8329175239617,6.83274422589175,6.84464754104974,6.85192508274901,6.87792957190159,6.90227770364563,6.92920977308973,6.94780212486824,6.98997946812795,13.1358935056392,13.0569252221932,13.0386979971444,12.9918963555202,12.9568868951717,12.9226501777829,12.8877566765144,12.8703495602656,12.8237895045508,12.8153406497022,12.832973846124,12.819315262929,12.8115936721797,12.8469354780076,12.8758772317299,12.9160109416943,12.9620053764498,13.0178762332856,13.0442614441852,13.1358935070493,21.2493613867974,21.1497592560049,21.0955669077712,21.0369850596899,20.9715387565541,20.9207156343989,20.8772198844083,20.8182431580561,20.7899416655683,20.7968326747848,20.7999412682878,20.7749085543601,20.8080927109163,20.8219436702702,20.8785167301899,20.935030553542,20.9969693093187,21.0820473023871,21.1368156774884,21.2493613888228,29.4017990514902,29.3589271611909,29.2437829578639,29.1658525192203,29.08754677613,29.0071815349245,28.9356843327668,28.9035056003144,28.8687018485246,28.8779094905008,28.8698113680666,28.8656123589417,28.8868132947112,28.9079598852247,28.9641916135706,29.052829698968,29.1348254768556,29.2245577712894,29.3238807421756,29.4017990532867,35.1651814277319,35.1611937479337,35.0454020296587,34.9485240502274,34.8649059217985,34.7731840579973,34.7081190636271,34.6769628597636,34.6682886248178,34.6561780352748,34.6568126362359,34.6629306038885,34.6739568907211,34.6921863917119,34.7612209500541,34.8496415967744,34.945318294412,35.0541296752074,35.1550684451671,35.1651814280568,37.4357941673922,37.4162817694224,37.2408815833409,37.1308101374729,37.0251571868999,36.9430608134568,36.8820635477682,36.8618397097722,36.8442785320337,36.8385894106392,36.8373610086228,36.8427383631436,36.8567598347971,36.8776709283608,36.9306127288405,37.0216509353201,37.1141796938635,37.2193087538602,37.3918137248795,37.4357941674609,36.7602244402556,36.743928142456,36.642898063645,36.5706764676498,36.4839431797526,36.409890827999,36.3855577611049,36.359165072567,36.3496301954719,36.3435990441492,36.3411620186257,36.3464689890326,36.3582400959694,36.3734582462203,36.4023254269162,36.4773139084465,36.5774816191778,36.668751888666,36.7966788334203,36.7602244400407,32.7596294470122,32.7237221996605,32.5313499478485,32.4468429489409,32.3719908690805,32.3462905400511,32.3251295992189,32.3100653568415,32.2996660336518,32.2999034445224,32.2968462377035,32.2970299992747,32.307780601082,32.3181668440373,32.3301780959843,32.3596001381163,32.4307702103273,32.518206612844,32.6277469809711,32.7596294457088,25.5468309090937,25.6139039128787,25.6604529031608,25.5952831875763,25.5888970242973,25.5680870428291,25.5565666533867,25.5540320701119,25.5482171914989,25.5439323121019,25.5482349276768,25.5469177538,25.5471839486268,25.5584181324463,25.5675970985068,25.5740108778627,25.6085620075516,25.6569291795427,25.8047512718811,25.546830907027,17.146340482316,16.4884474033753,16.3417339929348,16.3168799392671,16.3010593359301,16.2994921372607,16.2944184447108,16.2910614829485,16.2936060186327,16.2910156532473,16.2892002846392,16.2930185084345,16.2912598354858,16.2902269514854,16.2970029232588,16.3005405457324,16.297860971927,16.3396196534316,16.4505401626887,17.1463404808137,10.1541345151815,9.69018120312477,9.77934063074502,9.78448418946281,9.7849238376441,9.78483460701062,9.78481223271472,9.78480918090297,9.78480890391361,9.78480863985945,9.78480888360516,9.78480916575959,9.78480896952395,9.78480872831195,9.78480767702923,9.78486734953232,9.78554595670068,9.7959889431716,9.88079933177795,9.60413001191969,17.2424380129,16.4299232212505,16.5854832678999,16.594995916109,16.5957612898847,16.5956014223841,16.5955624889449,16.5955569593684,16.5955564653885,16.5955560842656,16.5955564212183,16.5955569188865,16.5955566137537,16.5955559162181,16.5955552541723,16.5956633565147,16.5968388677369,16.6154602046999,16.7668607374474,16.2767369421529,8.28557296190415,7.63137192174126,7.86805683273971,7.83896089879911,7.84375518650038,7.84366834134747,7.84341211874693,7.84350790452666,7.84348865280298,7.84342293719048,7.8434929910442,7.84348356946039,7.84344393659349,7.84340582273253,7.84351519583359,7.84271983656108,7.83740982657018,7.79675641080048,7.78047364073765,8.28557296386522,3.84626829059438,3.9449609448659,3.91727844218753,3.93064846912713,3.92669003966354,3.92772198425104,3.927656643685,3.92761685333806,3.92762671306141,3.92766411461708,3.92762100830959,3.92761515344647,3.92769860889123,3.92757161859336,3.92796983470769,3.92846174925417,3.93713400862591,3.94507924245115,3.85377209528784,3.84626829147894,1.87915256513309,1.84274352676694,1.84240365890713,1.83927966030051,1.84028034510614,1.83985473625063,1.84000593367648,1.84004328913629,1.84003480394228,1.8400411388855,1.84007159618223,1.8400213924625,1.84007654464698,1.83993029476776,1.83996562484319,1.8381826530587,1.83638722308523,1.85195876769101,1.86765216972854,1.87915256592365,1.18049916814607,1.18950265194434,1.18678596870672,1.18558388235966,1.1847639914874,1.18452281798666,1.18434082002931,1.18422871054495,1.1842203998436,1.18420587633228,1.18421652070846,1.18422704629971,1.18420609839083,1.1843170020694,1.18431775275733,1.18606033809801,1.18379090121195,1.18183275051044,1.17844613464235,1.18049916860585,1.0997615965568,1.09360542115595,1.09074242382963,1.08763847801243,1.08652356033548,1.08600639789198,1.08589305391782,1.08581411635255,1.08580797895055,1.08581099641856,1.08582424196045,1.08580286361197,1.0858326026669,1.0856528760135,1.08562135538114,1.08555500002968,1.08919036176558,1.09421280764112,1.09836549586022,1.09976159641056,1.42143012764543,1.42304224370967,1.42082983135585,1.41751817804132,1.4150279941618,1.41274713860283,1.41195029983969,1.41099907566862,1.4108476729347,1.4108186427419,1.41089052465449,1.41095574442957,1.41071722445227,1.41122452694308,1.41096845129258,1.41245904910452,1.41328263565403,1.41590450289496,1.4197031264581,1.42143012693665,2.63276068319934,2.62986491843592,2.62478883098506,2.61650442597577,2.61125890699457,2.60493634096265,2.59965619917563,2.59586378731905,2.5939516479402,2.59370702237167,2.59385297026507,2.59356305907333,2.5939026133515,2.59397254815824,2.59667737115655,2.60141095808443,2.60939485906652,2.61883241196164,2.62781148814652,2.63276068232329,5.6406976828229,5.62913595949268,5.6239495125188,5.60442764103287,5.59103053445798,5.57558011744572,5.56145444153803,5.54867726464241,5.54056630474965,5.53886705262925,5.53758133282576,5.53734328739286,5.53879849827854,5.54155473504987,5.54974822558126,5.56657349784883,5.58540883007067,5.60760558774642,5.62470087281249,5.64069768246982,11.8533555104844,11.8006591171021,11.7887186787601,11.7469462332974,11.7149900299235,11.681731197443,11.6504681012312,11.6215272512896,11.6037213246485,11.5960279745216,11.5938467405336,11.5935777044452,11.5990374198447,11.6058749074735,11.6362578715161,11.6720586831178,11.7129082796938,11.7626617631279,11.7941042904439,11.853355510848,22.2511366887224,22.1354752146475,22.0961041479094,22.023636210791,21.957398176074,21.8956676119036,21.8372707865259,21.7880621169803,21.75406573698,21.7462134398611,21.742561650391,21.7409700757014,21.7484095768934,21.7767846280342,21.828418008802,21.8964172867704,21.9715729386746,22.0630118176957,22.1182822855837,22.2511366906356,35.9136810741601,35.7662732313306,35.6614943981496,35.5571743481802,35.4527780770905,35.3558540571571,35.2764676656752,35.1979572944071,35.1764448167061,35.1593578257196,35.1572026915645,35.1625786562908,35.174395347002,35.210754571918,35.2883233016687,35.3894987836129,35.5025365049493,35.640199890193,35.7365057189509,35.9136810771748,49.5349255348919,49.4705763656005,49.2791342414693,49.1403610539066,49.0023817880038,48.879565290628,48.7628915600767,48.7135705470235,48.6791873861132,48.6675418039915,48.6650326221567,48.6705191048507,48.6872484111854,48.7347446528224,48.8228954399947,48.9504347583328,49.0923761642104,49.2516097993152,49.4180461398383,49.5349255375224,59.0242781629712,59.0197516269041,58.8142899531663,58.6541899556593,58.5077346809407,58.3603160359438,58.2762531770451,58.2221564985727,58.1958081850203,58.1844877817955,58.1828621480363,58.1897165609112,58.2139623936739,58.2540937724736,58.3456276782367,58.4848696017882,58.6446118771238,58.8258427390802,59.0125066041061,59.0242781631605,62.6508244498066,62.587806787611,62.2970762865916,62.118926548697,61.9388033275888,61.8127805736181,61.7261430549943,61.6819530925066,61.6550251737486,61.6437448470203,61.6420011655031,61.6515583782662,61.6747473445412,61.7179376927842,61.7957643205528,61.9274344095877,62.0980486811927,62.2714893394376,62.5597687040359,62.6508244496573,61.5949523075414,61.5646526653721,61.3643508440459,61.2277509496524,61.0851393736842,60.9798438233376,60.9220244551169,60.8841650639483,60.8623083333502,60.8516899384747,60.8508166056221,60.8575618906838,60.8771267209786,60.9111800949162,60.9710459014957,61.076025839737,61.2295345700821,61.3925835519539,61.6165611219462,61.5949523078283,55.0976784741219,55.0689130190853,54.7902056984283,54.6490057285387,54.5431735586622,54.4870142441195,54.4466313425092,54.4228148395479,54.4088783415421,54.4008692450361,54.3997165673414,54.4040276058375,54.4141289111859,54.4349723231767,54.4672820222435,54.5234309243129,54.6323431307536,54.7685563414354,54.9619999712564,55.0976784724771,43.1250107972244,43.1545002651067,43.1603849409122,43.0733969750619,43.0356107723635,43.0069738977557,42.9895074847563,42.9763804473316,42.9703967190339,42.9674571239307,42.9659486110892,42.9682592300226,42.9739357951507,42.9838132777618,43.0025166527466,43.0305979378146,43.0843951142812,43.1733242408439,43.3952382016925,43.1250107940958,29.0288636017361,28.1419628933495,27.8840639666211,27.8360385315683,27.8133523065738,27.8030744265118,27.7982256929213,27.7952577836411,27.7928066787992,27.7920808598789,27.7919856108401,27.7916160564545,27.7923902530017,27.7943149834379,27.7981444067302,27.8054342887866,27.8213361015717,27.8701018105597,28.1250063275533,29.0288635996372,17.2424380590577,16.4299233245141,16.5854833715512,16.5949960197746,16.5957613935452,16.5956015260403,16.5955625926003,16.5955570630236,16.5955565690437,16.5955561360932,16.5955565248735,16.5955570225417,16.595556717409,16.5955560198734,16.595555306,16.5956634601722,16.5968389714118,16.6154603085324,16.7668608411358,16.2767369932875,21.9795931258569,20.9216469809626,21.1245326608485,21.1381298343,21.1390850988911,21.1388836276731,21.1388321506568,21.1388247855729,21.1388241629835,21.1388237060744,21.1388240963106,21.1388247368595,21.138824421867,21.138822964917,21.1388240665687,21.1389695095077,21.1404593293714,21.1648550052604,21.3655031702637,20.7167483614845,10.5567879525329,9.80390017453247,10.0984764831811,10.0633826741775,10.0689401493898,10.0684800835262,10.0690456021757,10.0686148759574,10.068265766422,10.0690545785326,10.068596627189,10.0682588479992,10.0690793954396,10.0684857982963,10.0683129340725,10.0681003249674,10.0606569643836,10.0093607671822,9.98313561906818,10.5567879562341,4.89542473342674,4.99833816879301,4.96623424425401,4.98260256069478,4.97858291064807,4.97941483953712,4.97915179706592,4.97963601122835,4.97930966246324,4.97915216075484,4.97964453371848,4.97929453371684,4.97919987210286,4.97957185685333,4.97974572183175,4.98033120534791,4.99134266505729,5.0002627263177,4.89767125331285,4.89542473481404,2.38686588566907,2.34886552288252,2.34770682646334,2.34287894571257,2.34435009596686,2.34400458810712,2.34406112865335,2.34402094872191,2.34426511116424,2.34409463176388,2.34405712954532,2.34424677879365,2.3441361287584,2.34390589774238,2.3440518301162,2.34212428402186,2.33961657785306,2.35869552501982,2.37501888977277,2.38686588680537,1.49859377970812,1.50888432180067,1.50601633964855,1.50458508451537,1.50319646869502,1.50291209695733,1.50271606737102,1.50253190317746,1.50249860805631,1.50257026591948,1.50251377684347,1.50250837746122,1.50257615468474,1.50260666290819,1.50277661365146,1.50468680211041,1.50215055870212,1.50016417767828,1.49699897860345,1.49859378025634,1.39862463374937,1.39215627329985,1.38759235929574,1.38422077834709,1.38277709962819,1.38191154174154,1.38183225323226,1.38164586757236,1.38160345564875,1.38165658874674,1.38164760043497,1.38162099216362,1.38165433121423,1.38152078265702,1.38125381105101,1.38174363892784,1.38568857054554,1.39212592447967,1.3978136133988,1.39862463363547,1.80353857865986,1.80717108491654,1.80375268100989,1.79958856054867,1.79667728466137,1.79379640295251,1.79253595604626,1.79163939239965,1.79121126622329,1.79124671860328,1.79140927878649,1.79128181131072,1.79120972382493,1.7916946043471,1.79160516211877,1.79305983772877,1.79447302824348,1.79772718164392,1.80304989859237,1.80353857766041,3.34582761130675,3.34644661068989,3.33830991368602,3.32800645456517,3.32098041281496,3.31312691688187,3.30623098392267,3.30178107168382,3.2993884101624,3.29846993308429,3.29911624671916,3.29884717908316,3.29862723743724,3.29966745984377,3.30255271046669,3.30866685751311,3.31890268631225,3.33108164568562,3.34291275448792,3.34582761002423,7.1796348045956,7.17574698398128,7.16571008981236,7.14206453896335,7.12359265397097,7.10402771256504,7.08615288816717,7.07029776309031,7.06097871171596,7.05860444369887,7.05638816486267,7.05653581715881,7.05881593254987,7.06173048408181,7.07288588753623,7.09382717040681,7.11696825824885,7.14551788954971,7.16942705923539,7.17963480396102,15.0934684846102,15.0487525968208,15.0253903216076,14.973496649326,14.9318172380801,14.8866476717733,14.8474642126983,14.8146084094427,14.7919293317302,14.7821770577637,14.7811474150714,14.781081105889,14.7841656396926,14.7993295296059,14.8303151894466,14.8777382857866,14.9317107171416,14.993122841877,15.0382052423838,15.0934684847777,28.3029893390275,28.1860781824718,28.1289495060119,28.0333518854686,27.9470694813855,27.8674276162221,27.7930585073126,27.739019290149,27.7033525528984,27.6895476725611,27.6892407292026,27.6871861937739,27.6963549954296,27.7317614788151,27.7924554182416,27.8756718675372,27.9729424917773,28.089219101845,28.1642794427779,28.3029893415171,45.5705611077003,45.4077733601328,45.2666454721269,45.1309261696409,44.988775303453,44.8700272535462,44.7717432996062,44.7013107446474,44.6610581729022,44.6497127977238,44.6455277715274,44.6454789134088,44.6687664517007,44.7136930675953,44.80056762799,44.9257244774638,45.0658096721052,45.241592517084,45.3737788839835,45.5705611120471,62.6411114908477,62.5718400322756,62.322430576162,62.142065680017,61.964624221019,61.8140898597525,61.7037507361684,61.6336434440956,61.5921031192603,61.5798493448714,61.5758814453353,61.5805623380377,61.6089600732142,61.6644498550838,61.7638180517838,61.9122877718254,62.0932693991336,62.2937975573615,62.5114569969677,62.6411114948677,74.3469507429273,74.3358586131027,74.0686054437587,73.8558519306212,73.6706071937632,73.5206994500412,73.4151823254651,73.3512098540541,73.3166787267791,73.300505810788,73.2992430513744,73.3100953106357,73.3384923273714,73.3972766152077,73.5029289459801,73.6544662726855,73.8493955043053,74.081990798241,74.3270493629938,74.3469507429364,78.649743546377,78.5294793373315,78.17037230599,77.9410994147697,77.7329488809013,77.5863556596103,77.4835177815,77.4223657235403,77.388621123246,77.3731006434978,77.3710248581507,77.383812078885,77.4141322712382,77.4714838077961,77.5707190631073,77.7196309098009,77.9192510772846,78.1478868552612,78.507680233887,78.6497435458342,77.4361456913278,77.3827607642603,77.1066798073841,76.9154340280294,76.7456763389282,76.6264602041467,76.5453955688736,76.4954639289353,76.4673755165292,76.4534283491557,76.4508740116201,76.4615364852326,76.4871868847626,76.5331147545778,76.6142776559674,76.7373400529356,76.910026760268,77.1251656577624,77.4176324775492,77.4361456924647,69.5528958209365,69.5403280631798,69.2226311385997,69.0575124148227,68.9326340326918,68.8521059311431,68.8032390490489,68.7699475198895,68.7502183011683,68.7424351928271,68.7393835892943,68.7434490103827,68.7593585518989,68.7849349487009,68.8308741714687,68.9107265221615,69.0361428618168,69.1964865842053,69.4557185529711,69.5528958186098,54.6526043602678,54.6202029662551,54.5549653162435,54.4533486252216,54.3987243882985,54.3591785190069,54.3336435570686,54.3196252373906,54.3097953015453,54.304328692536,54.3056758018717,54.3071937742981,54.3133170316641,54.32950542523,54.352149057987,54.3952077066166,54.4707879736443,54.5890200442077,54.8344071580316,54.6526043555588,36.8997235137913,35.9978470195952,35.664572712539,35.5922581048427,35.5619467133356,35.5505514540743,35.5426947794951,35.5375077589864,35.5367562381695,35.5343709945558,35.5330913141288,35.5350683048232,35.5347751952698,35.5364008197008,35.5433459231549,35.5512751042419,35.5804798448608,35.6337732023565,36.0382274855248,36.8997235108246,21.9795931857525,20.9216471177273,21.1245327983816,21.1381299718826,21.1390852364889,21.1388837652631,21.1388322882456,21.1388249231614,21.1388243005719,21.1388237748687,21.1388242338991,21.138824874448,21.1388245594555,21.1388231025055,21.1388241353631,21.1389696470995,21.1404594670104,21.1648551432472,21.3655033083268,20.7167484289352,25.0035740358769,23.7928897581356,24.0272924637006,24.0452919840217,24.046285797642,24.046075543186,24.0460151921526,24.046006416503,24.0460057794144,24.0460052810998,24.0460057262789,24.0460064358593,24.0460061613597,24.0460039096186,24.0460065965019,24.0461773856192,24.0478438340492,24.0751846951155,24.3094452346677,23.5449640716237,12.0093615477634,11.2298838999459,11.5569684105831,11.5183261465284,11.5249476953403,11.5247444072807,11.524562221211,11.5245883772055,11.5245177015741,11.5245695947685,11.5245688635638,11.524510291244,11.5245968176416,11.5244430107031,11.5245813744607,11.5234949333799,11.5154449560439,11.4601606767772,11.4187733245373,12.0093615537038,5.56011569537829,5.65634757618474,5.62553573563696,5.64315785426638,5.63849466867868,5.63968773960322,5.63957620694196,5.63958795675554,5.63956485967551,5.63956988171155,5.6395963225612,5.63954679070553,5.63962663403443,5.63950809336549,5.64003992899418,5.64105432230332,5.65207500004115,5.66207084775798,5.55854373768005,5.56011569732635,2.70251560296853,2.66819171302598,2.66501069544793,2.65980136691022,2.66151037750315,2.66090123796547,2.66116724786879,2.66118290911746,2.66121329599783,2.66120461449516,2.66122645502402,2.66119246277688,2.66124821512375,2.66107768588954,2.66089521721203,2.65923886351869,2.65658012999893,2.6765664306603,2.69222634432037,2.70251560468156,1.69399920274425,1.70490248341096,1.70215307072573,1.7004893771097,1.69885740032342,1.69850378593064,1.69819215639074,1.69806331830495,1.6980292306697,1.69803242751336,1.69803592035575,1.69804257331639,1.69804258441442,1.69812216574418,1.69844010379993,1.70022737307023,1.69778773751304,1.69595490742436,1.69336971979877,1.69399920326145,1.5836334721606,1.57754121745679,1.57165776355142,1.56825038439067,1.56664819336708,1.56558194600098,1.5654020909823,1.56521669729714,1.56517416318395,1.56519034085082,1.56521497325362,1.5652025948218,1.56516298748157,1.56513142731003,1.56469308664849,1.56558047711045,1.56955766137173,1.57680280818499,1.58353244460435,1.58363347227677,2.03839717324571,2.04456051262043,2.04008963322691,2.03550181574728,2.03217010730878,2.02920446844634,2.02748509326827,2.02644857250757,2.02606418546375,2.02603077832121,2.02614258529588,2.02613578210647,2.0260514449695,2.02638360492064,2.02669676084937,2.02794489015338,2.02959631156637,2.03342731097071,2.03976033398158,2.0383971717036,3.79215333938526,3.79841769886808,3.78668120907167,3.77610305221111,3.76747722677887,3.75836370902762,3.75098541680515,3.74552168482052,3.74256227268038,3.74205336110128,3.74210996759421,3.74185881304196,3.74214493434677,3.74298781151895,3.74609859632296,3.75357071011898,3.7651385541357,3.77877379458839,3.7935509872948,3.79215333762241,8.1566679249661,8.16778081654181,8.15091105672222,8.12479770933712,8.10399731869096,8.0811274883945,8.06049295195461,8.04336590790626,8.03298517924773,8.02890712822776,8.02757412830131,8.02771033763473,8.02934463470556,8.03373476511582,8.04643358632441,8.06921502436139,8.09699042677336,8.1287924494691,8.1579218050074,8.15666792403343,17.1609952409732,17.1395692268475,17.105496509347,17.0463182579894,16.9971580207743,16.9475499811826,16.9018466272496,16.8656220810526,16.8410267698503,16.83001413762,16.8282380878236,16.8282297618638,16.8323999810909,16.8491732331575,16.8854464041554,16.9384952179321,16.9993998258894,17.0701460469766,17.1260116662331,17.1609952409464,32.1436776321096,32.0517546126022,31.9764874455213,31.8694745428623,31.7704250426504,31.6804720866717,31.6021634715943,31.5399998374234,31.5026418666395,31.4885364068487,31.4843202630049,31.4849473818368,31.4984947186785,31.5338667160775,31.6007337895444,31.6952151579384,31.8044990752835,31.934021766912,32.0306452819444,32.1436776351152,51.6095367855902,51.458018168185,51.2882988597999,51.1317156021568,50.977459788016,50.8456315372761,50.736210195239,50.6626614043504,50.6216478125292,50.6049554731843,50.6006389125939,50.6061162362612,50.6271283958057,50.6802435066373,50.7732146647185,50.9082748266017,51.067869183039,51.262195078243,51.4219842329139,51.6095367914421,70.667134492258,70.5923997891421,70.3142866902027,70.1122655149744,69.91889130071,69.7581219073592,69.6399519603379,69.5612258348395,69.5201877288771,69.5014862992808,69.4979226006104,69.507620049745,69.5360975181,69.5986519817006,69.7079340689288,69.8646023532572,70.0625527263078,70.2880177634505,70.5366712964309,70.6671344987916,83.5156210886507,83.4807105445207,83.1774027645854,82.9463253252981,82.7439455650665,82.5873250704491,82.4721001509427,82.4013514966873,82.3615598628441,82.3450896760037,82.342543653773,82.3548910892608,82.389199528784,82.4566652283919,82.5683433169431,82.7312999855666,82.9396337173774,83.1924546848297,83.4747866581869,83.5156210885719,88.0140163522949,87.8301838640229,87.4386531855315,87.1911626395621,86.969694819168,86.8064158428516,86.6924638023342,86.6214977218811,86.5820032143047,86.5640216731197,86.5620348966712,86.576405965838,86.6123319464722,86.679318305495,86.7913976976543,86.9535107853589,87.1708291439045,87.4207667643744,87.8159874170466,88.0140163509442,86.8021917252652,86.711315817601,86.3860348214025,86.1681836046863,85.9796069132385,85.8455147503586,85.7506718356712,85.6932264681784,85.6589565943032,85.6427168620082,85.6408020900217,85.6523901626923,85.6826776684645,85.7389881529399,85.8316389827351,85.9702193111393,86.1616163101471,86.3942572287888,86.7265577206075,86.8021917279197,78.3161993830418,78.3076300899119,77.9780875168365,77.7999490142874,77.6624312863394,77.5695272069438,77.5093093109564,77.471533276252,77.4497403755452,77.4377401413639,77.4354112683931,77.4413962851336,77.4570141541165,77.4884994869295,77.5453864330372,77.6352851500712,77.7760692395419,77.9513389910353,78.2423823685475,78.316199378959,61.8075029165579,61.716263148045,61.5898114259389,61.479961674518,61.4101539749129,61.3631136565254,61.3339118088265,61.3140365953285,61.3038064771896,61.2988607490014,61.2973857332974,61.300942344829,61.3098501784929,61.326145468185,61.3556626478231,61.4117375054391,61.4970016334078,61.6428092698266,61.8872538539546,61.8075029096136,41.8697253219119,41.0419164456821,40.6540961040519,40.5609524155446,40.5254355645586,40.5091092439831,40.5007509691505,40.4954858933949,40.4921006635452,40.4905481463922,40.4900790704269,40.4900137096513,40.4911122481948,40.4941232770404,40.4998561016708,40.5118907310908,40.5525119010332,40.601396030353,41.1396510302045,41.8697253180154,25.0035741142695,23.7928899385198,24.0272926453357,24.0452921658653,24.0462859795457,24.0460757250794,24.0460153740442,24.0460065983942,24.0460059613055,24.0460053720453,24.04600590817,24.0460066177504,24.0460063432508,24.0460040915098,24.0460066874479,24.0461775675129,24.0478440160336,24.07518487769,24.3094454177848,23.5449641602556,26.869421462178,25.5833916039424,25.8369331615987,25.8598790512312,25.8607927924151,25.8605974706219,25.8605324190046,25.8605223892107,25.8605218879342,25.860521385738,25.8605218535772,25.8605225978501,25.8605223025581,25.860519753602,25.8605216983158,25.8607035026782,25.8624935733948,25.8899048467394,26.1446194192446,25.2953180944805,12.913627305168,12.1437171499561,12.4853755526045,12.4473156480666,12.4536866042803,12.4533731031894,12.4535747690449,12.453365122634,12.4531391689494,12.4535838192079,12.4533468754874,12.4531320113236,12.4536132687516,12.4532108596678,12.4532173105489,12.4525013222684,12.4435470396275,12.3886239903382,12.3314073279002,12.9136273127321,5.9663889620246,6.05399762741134,6.02736963245636,6.0447532071232,6.04040961717338,6.04144416824523,6.04123446837468,6.04148176313591,6.0413016070258,6.04121931192164,6.04148623610637,6.04128094444678,6.04128129397303,6.04139139155974,6.04176151632284,6.04296171490799,6.05362898448605,6.06418152609068,5.96381799276041,5.96638896425776,2.88723547154252,2.85865156878722,2.85341917577476,2.84830770881292,2.84997138494973,2.8494957816977,2.84970367308769,2.84969092890162,2.84983803330698,2.84975175760033,2.84974115847039,2.84981670877652,2.84979454524259,2.84960628692155,2.84944913128049,2.84787162562348,2.84523970450375,2.86509933765722,2.8796386593981,2.88723547394944,1.80339214885839,1.81467568423833,1.81211548752375,1.81043407144955,1.80864847428437,1.80822652834727,1.80793421272999,1.80776771744671,1.80771731763878,1.80775898683861,1.80772950292746,1.80773368498707,1.8077671604802,1.80781926059656,1.8081821056271,1.80993704664837,1.8075550098912,1.80593384032282,1.80416986166032,1.80339215065989,1.68767383979635,1.68233264719883,1.67542293994417,1.67218219886511,1.67042699522257,1.66925292714042,1.66903372123313,1.66883692193422,1.6687884129951,1.66882967733797,1.66883871843369,1.6688230304973,1.66878684229136,1.6687835560445,1.6682350480731,1.66942694124015,1.67326619289153,1.68085910591082,1.68836646878102,1.687673839699,2.17145688474988,2.18074834744008,2.17497427616316,2.17043290965131,2.16682045804489,2.16359543741866,2.1615997803823,2.16049005183923,2.15995221284281,2.15994958988918,2.16012612742097,2.16002492630825,2.16000700611494,2.16034306123613,2.16074920565938,2.16196600748888,2.16389603185432,2.16792354281298,2.17509965816086,2.17145688151244,4.05816248721884,4.07177427538964,4.05645004478148,4.04583418146203,4.03622586299045,4.02650852598955,4.01822618213092,4.01226696980518,4.00899769691381,4.00814112745866,4.00827669846283,4.00812248402395,4.00821595410873,4.00936914979373,4.01283436396642,4.02099905154406,4.03369851548621,4.04843351690595,4.06524185845849,4.05816248535645,8.75675267753379,8.7879335931734,8.76356758622506,8.7372395026935,8.71387562522778,8.68943813347665,8.66720218955743,8.64835157605629,8.63723283330272,8.63269383641892,8.63084675095743,8.6312684675387,8.6331540744146,8.63776578039267,8.65208817764232,8.67700203933746,8.70681641412768,8.74090967638587,8.7751147522455,8.75675267654198,18.4443944248989,18.4602246505194,18.4120112516008,18.3502596028316,18.296993296892,18.2428683952258,18.1944521538991,18.1559569297459,18.1287136974545,18.1174508211016,18.115873022392,18.1152097721721,18.1200935306777,18.1392739983317,18.1778287971474,18.2351543761686,18.3012692202326,18.3756195295708,18.4432406141623,18.4443944251211,34.5069520536741,34.460635841006,34.369461284845,34.2541943058769,34.1487606455391,34.0533869542981,33.9688370637558,33.9041438861311,33.8665122322278,33.85054421192,33.8467360757932,33.8482973942565,33.8620446886239,33.9007669250294,33.9720453902247,34.0712197227293,34.1890544473463,34.3258349514166,34.4405959332331,34.5069520571133,55.2258448134772,55.0994994988778,54.9140808698438,54.7457766572599,54.5813953141454,54.4427464748558,54.3297993417311,54.253484884163,54.2122699417685,54.195489778225,54.1897817277674,54.1966281619285,54.2202098979669,54.2748296053497,54.3723550830621,54.5142761569012,54.6820660814769,54.8861760973298,55.0702002747937,55.2258448200324,75.2699891492938,75.1848963160958,74.8994170807088,74.6856752834655,74.4845075743636,74.3179623850181,74.197591227948,74.1174114780681,74.0737423045851,74.0551820240619,74.0517931189106,74.0613063559843,74.0929299193574,74.1587655209499,74.2703805575691,74.4329561569301,74.6400144482776,74.8740231605113,75.1412033920318,75.2699891593538,88.528193044813,88.4457511523304,88.1344580637187,87.8894263618294,87.6817584583794,87.5217026966417,87.4038890481579,87.3318250595407,87.2908524591337,87.2722824942717,87.2704005087303,87.2844620068108,87.3204681055235,87.392360446358,87.5072558252508,87.6728128207803,87.8878658609655,88.1510214336447,88.4422985556828,88.5281930457862,92.8981622419097,92.6486944702305,92.2556081706768,91.9953651726202,91.765148207163,91.5940486631764,91.4730683341827,91.3967778785397,91.3540928226188,91.3343208359676,91.3322043127359,91.3481568296792,91.3874341826984,91.460175913108,91.5791936108944,91.7492526781664,91.9766586713316,92.2414987407701,92.6409707011337,92.8981622391156,91.7971505426036,91.6476594573267,91.3066981108659,91.0670439772121,90.8649926388925,90.7200380509239,90.6170543634543,90.5529824172583,90.5158807824536,90.4979465401054,90.4953024616331,90.5088762133831,90.5424430607913,90.6045848737005,90.7065163670915,90.8556989597784,91.0592540399805,91.3080458216408,91.6520163642346,91.797150547001,83.2361120862069,83.2073631767434,82.8773794397054,82.6895040633548,82.5395028511735,82.4370151303021,82.3712003529805,82.3287119721172,82.3037829687947,82.2916958867551,82.2884147115932,82.2941590434404,82.3125262293628,82.3468399934995,82.4092154467345,82.5093992410143,82.6609905853738,82.8491421616765,83.1487695221938,83.2361120774485,66.027490107299,65.8970002024083,65.7278309822914,65.6090912883333,65.5340203589614,65.4782727256908,65.4443601132268,65.4232818329101,65.4108723022155,65.4045921133279,65.4044632635467,65.4077996035896,65.4172485588213,65.4375277385593,65.4711632766025,65.534792490323,65.6297801735875,65.8011317064344,66.026533600466,66.0274900986279,44.898929355995,44.1630518655733,43.7432260509182,43.6270516293868,43.5847777250931,43.5666683644199,43.5560248717101,43.549281578544,43.5464378356168,43.5440160898057,43.5429506916723,43.5440489340072,43.5448333067523,43.5478295141802,43.5558619407086,43.5706198598633,43.6181252545943,43.6642803640776,44.3010418581091,44.8989293519491,26.8694215653447,25.5833918419738,25.8369334011704,25.8598792912586,25.860793032525,25.8605977107231,25.8605326591034,25.860522629309,25.8605221280324,25.8605215057871,25.8605220936754,25.8605228379483,25.8605225426564,25.8605199937002,25.8605218183655,25.860703742775,25.8624938135966,25.889905087525,26.1446196606621,25.2953182106405,28.0105903048131,26.6987837974565,26.9632833521663,26.9910656993664,26.9918680146803,26.9916941463937,26.9916274618938,26.9916164131612,26.9916160845141,26.991615604241,26.9916160700076,26.9916168454323,26.9916164232644,26.9916142703548,26.9916129601577,26.9917932059868,26.9937083428699,27.019480945257,27.285092943733,26.3744615435576,13.4745682886602,12.7303775111609,13.0752273676949,13.0391768298642,13.045288139477,13.0451690942112,13.0450858241392,13.0450474446439,13.044932991564,13.0450974943142,13.045031326568,13.0449266205428,13.0451292271366,13.0448871907325,13.0450248371749,13.0440688899002,13.0347906287105,12.9826720139666,12.910897242577,13.4745682960124,6.21240183653216,6.29467742572132,6.27310888030734,6.28992472717741,6.28560188077091,6.28671031717382,6.2865533877845,6.28662507248812,6.2865492892195,6.28653023202828,6.28662488691723,6.28652636548611,6.28659485544657,6.28653035430496,6.28696110008443,6.28849874492378,6.29806761393346,6.30934882456326,6.21327542323144,6.21240183863279,2.9917413022678,2.9690864739017,2.96164683987489,2.95701687161287,2.95863885492914,2.95812745812653,2.95839712538152,2.95841572986909,2.95848460046519,2.95845499213546,2.95847063299642,2.95846383281746,2.95849533170073,2.95835687289021,2.95804104748341,2.95668092198518,2.95416569400084,2.97331515625298,2.98752370442582,2.99174130203758,1.85811618460379,1.8699175114485,1.86753754970904,1.86583977400545,1.86408555288386,1.86365481548867,1.8633355839107,1.8631962839375,1.86314499209835,1.86315727319799,1.8631503430496,1.86316242382263,1.86315780211967,1.86325151594811,1.86360160352503,1.86528876327078,1.86300637064718,1.86154796468851,1.86051229047174,1.85811619450105,1.73798450672672,1.73363493654235,1.72596351973903,1.72291003307585,1.72102744771702,1.71980570512594,1.71950686754793,1.71932461849462,1.71928616652851,1.71931895014973,1.71933988654677,1.71932780753571,1.71926950609593,1.7192962425423,1.71871853593085,1.72002905514127,1.72378033524811,1.73143316986924,1.73948789117538,1.73798450069751,2.24148969191306,2.25428990628349,2.24719595113578,2.24288696570765,2.23888882154014,2.23555910413864,2.23329670661393,2.2320140683332,2.23144362564783,2.23140964605856,2.23157215037073,2.23151794246952,2.23148412719707,2.23179454772987,2.23233248120045,2.23360455068759,2.2357142851155,2.23996405002733,2.24772788301872,2.24148968819898,4.21327758311054,4.23560935183615,4.21629426241543,4.20649342998672,4.19596411762613,4.18576976897471,4.17709467181794,4.17063892141081,4.16703309790992,4.16620883082639,4.16622746685327,4.16600770086706,4.16627439570242,4.16745009035193,4.17114777380156,4.180061753237,4.19345665605659,4.20868285810748,4.22759492543193,4.21327758243075,9.12158328041385,9.17768842884498,9.14438048049911,9.11887423284989,9.09408584270323,9.06844655884963,9.04491721986304,9.02543754272301,9.01352494345918,9.00846339359725,9.00682202683866,9.00715163509013,9.00896097426033,9.01428212194027,9.02947942571394,9.05557904634039,9.0872072595773,9.12210321793092,9.16111236022062,9.1215832797664,19.2362432472979,19.2995110768734,19.2363366659335,19.1740809050663,19.1174237261259,19.0614288403945,19.0107568683891,18.9703475098043,18.9425655933991,18.9306745590634,18.9287725053902,18.9285692909084,18.9336252514496,18.9538256521262,18.9948734235978,19.054406915916,19.1235304976136,19.200176290426,19.2795272634289,19.2362432483657,35.9507199853852,35.9653579736688,35.8570864507909,35.7391212278073,35.628887043765,35.5294248239238,35.4427074936421,35.3760725724506,35.3376617448924,35.3222091603424,35.3177277994561,35.3193274357711,35.3347034444962,35.3746159077425,35.4480173215147,35.5513898915527,35.6738483648945,35.8124947614767,35.9481673113136,35.9507199892556,57.3562964642716,57.2652448760455,57.0692991974292,56.8918669981147,56.7240459676701,56.5806468692408,56.4656814527236,56.3896908792466,56.3477520562129,56.3302502485076,56.3255136463231,56.3322944880994,56.3564783567131,56.4133890180138,56.5126165294791,56.6572999850514,56.8318309768785,57.0376396508935,57.2443444181465,57.3562964708154,77.7883832323736,77.6800100492946,77.4044655650016,77.1810077655707,76.9761358204613,76.809414124443,76.6879957706141,76.6079505043119,76.5650537285079,76.545577443397,76.5420041974831,76.5531156088515,76.5850116494396,76.651902895849,76.7656279162168,76.9291420836894,77.1398707152072,77.3772200900154,77.654504983148,77.7883832421263,91.0004332240335,90.838377821285,90.5342781448987,90.2814080213442,90.0725639345529,89.9124775047006,89.7974753983951,89.7257446830172,89.6845957667671,89.6662657482466,89.6640482968051,89.6787334290768,89.716724688123,89.7888744882556,89.9036608037911,90.0695785856527,90.2854166342618,90.5532088330799,90.8384098918395,91.0004332296755,95.0276898590396,94.7099090947684,94.3294459437273,94.0582043391841,93.8229901157354,93.6484181052829,93.5246186235588,93.4462337936934,93.4015405026512,93.3809765652128,93.3790120000101,93.3956263162347,93.4368890498222,93.5126781713826,93.6342158012956,93.8083434166914,94.0413349514487,94.3174301261865,94.7051905279785,95.0276898592879,94.1147897905983,93.8791981443131,93.5439295387311,93.2871356657785,93.0761454997531,92.9221882533917,92.8140176619699,92.7459447548999,92.7061592507157,92.687227699674,92.684780556262,92.6988819357226,92.7349652251162,92.8017976206821,92.9094225251554,93.0663615489913,93.279282571863,93.5419864077911,93.8833687591359,94.1147897871666,85.8102653557086,85.7316109333556,85.4064573872941,85.206275176705,85.0465089819394,84.9369298178693,84.8651557686254,84.819753550914,84.7933862927698,84.7794533538736,84.7762540776946,84.7828144374642,84.8015497924041,84.8388141976831,84.9061097393274,85.0119130671298,85.1730794133353,85.3725838816522,85.6629627830907,85.8102653419045,68.4586737148498,68.3042451493667,68.1118422976057,67.9899253763269,67.9113954254635,67.8502768213374,67.8137455780691,67.7897151452924,67.7766545916538,67.7703374715427,67.7691882343771,67.7733638098618,67.7842424440876,67.8055627267717,67.8433544830034,67.9133367625959,68.0116669069664,68.2075132968815,68.4048608157144,68.4586737070187,46.7323090275614,46.0865123552293,45.6472346226852,45.5102600670175,45.4628887181391,45.4413393996135,45.4295916167937,45.4223167078286,45.418236278432,45.4159751696568,45.4151954907589,45.4156383955461,45.4171243200436,45.4210286692082,45.4295076343173,45.4474873844237,45.5007012391558,45.5418138793911,46.2445504390974,46.7323090247303,28.0105904400141,26.6987841088011,26.9632836643467,26.9910660118669,26.9918683271746,26.9916944588803,26.9916277743776,26.9916167256446,26.9916163969974,26.9916157604827,26.991616382491,26.9916171579156,26.9916167357478,26.9916145828381,26.9916131163998,26.991793518466,26.9937086554069,27.0194812580025,27.2850932564332,26.3744616938875,28.7000217567207,27.3840142255299,27.6548848021046,27.6865484590359,27.6872650565899,27.6871097182377,27.6870421953378,27.6870305226708,27.6870303258183,27.687029853731,27.6870303276994,27.6870311252425,27.6870305317724,27.6870290800522,27.6870242164586,27.6871953887374,27.6892301563754,27.7131320432343,27.9838286233773,27.0316492855605,13.8173799642415,13.1069628044866,13.4476338609341,13.4150130399837,13.4204352533095,13.4203480752922,13.4204244390967,13.4202891384578,13.4201082025292,13.4204395651815,13.4202749221994,13.4201021700281,13.4204736952275,13.4201230335736,13.4202118027169,13.419480420274,13.4096483374909,13.3600860237455,13.2784589882055,13.817379970212,6.35932253360235,6.44210316429596,6.42428216573144,6.44059318300151,6.43650723644174,6.43752963457681,6.43732913284025,6.43749320139723,6.43735394411806,6.43729995293674,6.43749008999902,6.43732978693791,6.4373661429868,6.43739932545711,6.43771289495958,6.43946290972581,6.4484312469483,6.4599771528352,6.36795849193885,6.35932253555737,3.05061253497434,3.03305477330654,3.02375281172847,3.01943989870718,3.02100473273517,3.02056761465749,3.02081082942234,3.02082170950207,3.02093142454845,3.02087354332133,3.02087761194399,3.02091031724435,3.02091113982476,3.02078317756032,3.0204441210836,3.01915128309467,3.01665185774866,3.03534761287595,3.0502463857575,3.05061252967597,1.88259513281194,1.89543881285051,1.8930892125659,1.89145627790024,1.88971768897239,1.88931031308322,1.88901183365696,1.88887105134622,1.88882054026591,1.88884610105767,1.8888262900499,1.88884001254883,1.88883907336596,1.88893646029406,1.88926169902314,1.89095785034299,1.88870716833791,1.88717262865013,1.88677250057523,1.88259514885184,1.75768666846373,1.75450923724248,1.74626816695613,1.74342948541352,1.74141076707751,1.74015415393449,1.7397899734358,1.73958348809179,1.73953794319271,1.73957866135243,1.73959654884394,1.73958424002644,1.7395294555,1.7395557511241,1.73898341292701,1.740326004723,1.74405639660386,1.75165889499751,1.76009664267812,1.7576866543592,2.27685374530972,2.29346978863348,2.28490765494222,2.28099879572576,2.27668964368845,2.2732596134055,2.27085150675797,2.26949698248105,2.26884635216622,2.26881468923016,2.26900087410189,2.26891685943694,2.26889449388966,2.26923407536469,2.26979605527144,2.27114932250653,2.27340491923305,2.27764210683065,2.28595911385144,2.27685374822221,4.30231980857856,4.33444761150238,4.3109848358029,4.302187405523,4.29096274214784,4.28062038744431,4.27154834140133,4.26487533415849,4.26115060779895,4.26020197992935,4.26022498912286,4.26003820136956,4.26026560129032,4.26152946727023,4.26546245109806,4.27469487016204,4.28864123175763,4.30413432591947,4.32490721495707,4.30231980803053,9.33853638039432,9.42287438102451,9.37978980019694,9.35627916458349,9.32991155917076,9.3037829089451,9.27959405700279,9.25940333140402,9.24717667712295,9.2419592370362,9.24012661490394,9.24056780930934,9.24249934523568,9.24795487827291,9.26387383185215,9.2908359542063,9.32330832636442,9.35848146789452,9.40264045934469,9.33853638022197,19.713955834399,19.8331686722586,19.7525848463707,19.6921772287464,19.6332862968583,19.5755814659005,19.5238508237431,19.4825480591997,19.4538456465767,19.4419306790841,19.4401055515515,19.4395755324127,19.4451057419633,19.4662357313833,19.5082412531224,19.5694681809327,19.6409499631761,19.71740903032,19.8097579595866,19.7139558362268,36.8159492034064,36.9027018770863,36.7770583382696,36.6576292905937,36.5450251371967,36.4433594570766,36.3545332911759,36.2873026652703,36.2488874385718,36.2328598914281,36.2285130384638,36.230552733285,36.2460258547472,36.287125551646,36.3621981400309,36.467083780393,36.5932950666234,36.7313051450788,36.888188168096,36.8159492074729,58.5938667389573,58.5410590284121,58.3396499645142,58.1557052360028,57.9857714128676,57.8402901606307,57.7247208854269,57.6479733525464,57.6062169865344,57.5887231260672,57.5835158757508,57.5909127397856,57.6157880209142,57.6729122514687,57.7736957720208,57.9201264637927,58.0980176755492,58.3025467217337,58.5324158773295,58.5938667463833,79.1424292769642,78.9955261737317,78.7391507588234,78.5073542940843,78.3021342485607,78.1346532677619,78.0138778015064,77.9343633543511,77.8910823073947,77.8718903961692,77.8686018563929,77.8795691339021,77.9122991739864,77.979940108431,78.0936074138329,78.2576291675212,78.4706591387026,78.7062830435611,78.990717024202,79.1424292814074,92.1229416768833,91.8488822514179,91.5654629737968,91.3054609610719,91.0982423179988,90.9389393006487,90.8252033410417,90.7544722258381,90.7135054485245,90.694808625121,90.6929020718497,90.7080362138263,90.7463593415913,90.8187581419636,90.9331969649068,91.0979787268904,91.3141634608871,91.5847534913997,91.8534813498358,92.1229416849767,95.7154936034326,95.3143633864565,94.9570579984952,94.6746972447714,94.4360098904738,94.2590825214496,94.1341242814537,94.0548069325928,94.0094603521721,93.9885250910787,93.9865795850625,94.003754226089,94.0458116822397,94.1226524799581,94.2454014925014,94.4220578695628,94.6583419225138,94.9449558628248,95.3096825461873,95.7154936299035,95.0329737766759,94.6796500131273,94.3678916652842,94.0992413713168,93.8823393737531,93.7223895579841,93.6102968033122,93.5390635034109,93.4979135605273,93.4782369815114,93.4755805370758,93.4904446033504,93.5281005315797,93.5977122138687,93.709744676351,93.8727054887207,94.0908942007274,94.3663133587088,94.6910478915987,95.0329737366472,87.1111299870976,86.9551750356621,86.6388688998323,86.4314581501393,86.2643524683922,86.1490355811721,86.0744007581931,86.0265374336884,85.9986837112154,85.9844593879107,85.9809405027875,85.9876529751528,86.0078288330433,86.0469228352047,86.1170880798855,86.2273527891579,86.3939395241755,86.6010663021594,86.8692355004059,87.1111299838695,69.8519603936128,69.6790771189255,69.4713304995415,69.3499780573032,69.2718916887094,69.2070996627638,69.168364488004,69.1435342877778,69.1294722874604,69.1225477391629,69.1218223032709,69.1259540598843,69.1371480520341,69.1601816680451,69.1999298223692,69.273548245113,69.3729120578771,69.5887128108918,69.7541808963316,69.8519603848393,47.8330274068496,47.271997556537,46.8208221809329,46.6675790829389,46.6158410283747,46.5927202939085,46.5796471364414,46.5715218233703,46.5674921497701,46.5648388287036,46.563825178959,46.5647745451238,46.5663068726375,46.5705082938355,46.5802758843451,46.6001124974871,46.6567143638685,46.6938828217209,47.4388214458442,47.8330274069004,28.700021926199,27.3840146125016,27.654885188169,27.6865488445218,27.6872654418925,27.6871101035231,27.68704258062,27.6870309079528,27.6870307111003,27.687030046372,27.6870307129814,27.6870315105245,27.6870309170544,27.6870294653341,27.6870244090996,27.6871957740185,27.6892305416357,27.7131324282475,27.9838290078394,27.0316494700769,29.0779733048342,27.7639244003979,28.0383400832415,28.0725014803088,28.0731657576269,28.0730233781334,28.0729550384586,28.0729430805959,28.0729429490822,28.0729424630091,28.0729429601931,28.0729437746991,28.0729430376798,28.0729421569575,28.0729350596163,28.0730959400267,28.0752185839464,28.0978021182709,28.3704279435825,27.3939993200259,14.0067207099075,13.336432093742,13.6685859439829,13.6392442590876,13.6441945285237,13.6442380555164,13.644177128381,13.6441234779286,13.6439935601669,13.6441959657815,13.6441101748966,13.6439880061549,13.6442323047273,13.6439509251064,13.6441078449073,13.6432958193183,13.6331310323113,13.5853615974694,13.4982188471423,14.0067207146828,6.43879608445448,6.52690228331867,6.51125967428766,6.52750497247951,6.52335698107909,6.52443839034195,6.52425480181545,6.52434421381278,6.52424905810132,6.52422310639248,6.52433890211385,6.52422385106302,6.52429051839496,6.52425207608183,6.52456557522537,6.52653645142669,6.53510599257469,6.54655939395391,6.45881775195624,6.43879608467729,3.08199066154934,3.06912230288294,3.05810650343971,3.05403874406662,3.05558837863868,3.05513575994011,3.05539550423297,3.05541876692209,3.05549942707981,3.05546100024438,3.05547505594065,3.05547846187426,3.05549619594477,3.05539516571444,3.05498110543931,3.05372857258952,3.05126397308494,3.06955108991601,3.08593944846446,3.08199066405748,1.89124888619385,1.90565849360107,1.9032276041392,1.90171363897599,1.89996701844885,1.89960854399289,1.89930566717959,1.89918065057755,1.89913247948116,1.89915059606972,1.89913604406167,1.89915291201615,1.89913892388823,1.89925039414896,1.89957634568076,1.90128812921156,1.89904367710893,1.89718902835733,1.89724015681307,1.89124887402818,1.76420324839361,1.7623533082318,1.75359787345979,1.75096882812811,1.74887052066105,1.74762904681772,1.74723181046145,1.74702035874588,1.74696986507796,1.74700762233356,1.74702815956963,1.74701852274241,1.74695816174117,1.74699230993123,1.74642156736585,1.74774490481484,1.75146576013013,1.7589723537795,1.76770115979037,1.76420325570053,2.29333991131656,2.3137054368848,2.30377876171452,2.30027919397088,2.29570020799291,2.29227269483563,2.28976996743538,2.28836901328053,2.28770958163315,2.28766933722353,2.28784942625803,2.28777837262544,2.28775096007546,2.28809177605782,2.28871067449903,2.29008237057494,2.29238025671605,2.29651862898903,2.30541645504073,2.29333991546593,4.34829652513822,4.39105900088565,4.36327397188377,4.3558237988063,4.3439345912339,4.33353794632463,4.3243139308217,4.31748458990726,4.31365115710765,4.31272382701275,4.31270792473345,4.31249470353206,4.31278811653687,4.31405731537462,4.3180835887215,4.32759419504794,4.34186908494856,4.35734065670683,4.3800114585302,4.34829652292254,9.45299422487447,9.5681537409716,9.51442706984428,9.49349101277076,9.4659954317079,9.43957481266198,9.41488640241774,9.39450437628073,9.38199067355968,9.37658695876046,9.37485792786711,9.37525421175455,9.37716261264129,9.38291692850949,9.39914539278434,9.42647380711843,9.45970590746804,9.49448972763418,9.54393102052926,9.45299422498699,19.9685812614671,20.1500452776816,20.0510887788763,19.9936712155982,19.9328810311306,19.8746700597291,19.8221146656812,19.7801261042757,19.7513139100645,19.7391779759021,19.7372250483975,19.7369079674872,19.7424989730873,19.7639986279318,19.8069739778883,19.8689220294425,19.941813221907,20.0173798885874,20.1231016846133,19.9685812634299,37.2761772353243,37.4434698854699,37.2994966613086,37.1809079274927,37.0666539319103,36.9633829479576,36.8740754666413,36.8061826046655,36.7675685271024,36.7518293918001,36.7472084856799,36.7492606460833,36.765398403449,36.806773139659,36.8825271136352,36.9887282649047,37.1171985844704,37.252123326702,37.4321549177651,37.276177239795,59.2388983172228,59.2254575816677,59.0224538473407,58.8327267446989,58.6635860637918,58.516306089337,58.4003418182011,58.3238996854139,58.2818281676592,58.2640715948715,58.2592968348015,58.2666180564806,58.2915686905727,58.3494395099165,58.4506096841089,58.597465638133,58.7785087082826,58.9786926304094,59.2314844840923,59.2388983245218,79.8168117899568,79.6122702588294,79.3832623212765,79.1407844326396,78.9371579570551,78.7696708556504,78.6492636265407,78.5699273278312,78.527104704092,78.5077490352405,78.5044398662243,78.5158760892787,78.5486720273617,78.6164388967228,78.7305153223183,78.8939508564776,79.1082880097081,79.3415349974316,79.6289865223352,79.8168117987749,92.5842739785318,92.1734751191013,91.9242467509945,91.6554677947914,91.4502618910019,91.2905823961414,91.1774796745054,91.1067624199663,91.0656758131208,91.0470666479472,91.0450547671318,91.0603090566836,91.099065251514,91.1714219010188,91.2857973385804,91.4504255605912,91.6668739312843,91.9398738596842,92.1898974029718,92.5842739831002,95.8669179264728,95.3609347042853,95.0286253851294,94.7369033506456,94.4967343452001,94.3171467253498,94.1907518439998,94.1105531666079,94.0647406482512,94.0436754122155,94.0417802928693,94.0591073650187,94.1015328311063,94.1790082525987,94.302900543752,94.4816892506528,94.7194906445535,95.0151241766715,95.3523746234302,95.8669179326613,95.3285462951066,94.8433964096023,94.562262758808,94.2855300765781,94.0671517402744,93.9044423808379,93.7905349977431,93.7180310650445,93.6761245164905,93.6561941955375,93.6536134376722,93.6686823743594,93.7071093342083,93.7781870807193,93.8921812734624,94.0586713892423,94.2776447147825,94.5627437812795,94.8600423383434,95.3285462798331,87.7394025800062,87.4801917645452,87.177658704285,86.9662482105143,86.7949036613806,86.6768355037337,86.6002591609634,86.551253778275,86.5228502484417,86.5080386521177,86.504586717915,86.5117390919886,86.5324300512568,86.57292262213,86.6449152609371,86.7572642406007,86.9257480430871,87.1426412576894,87.3766037927896,87.7394025764764,70.5883267294682,70.3927109789805,70.1717521448816,70.0535824665382,69.9754536697322,69.9090044265301,69.8693408626329,69.8433861859045,69.8290558168433,69.8220893646744,69.8209569522531,69.8253741287867,69.8370601369297,69.8604574624422,69.9015072976906,69.9780925398671,70.0749561250537,70.3081152976413,70.4421135772538,70.5883267192761,48.4356873515685,47.9574411362232,47.4934276461212,47.3309368211876,47.2763947108129,47.2517423617659,47.238127974435,47.2297364278289,47.2251474128597,47.2225522962456,47.2216661244876,47.222355646173,47.2242247016397,47.2289408142801,47.2388361199139,47.2603540472198,47.3190400450885,47.3527477601558,48.1261010339558,48.435687354104,29.0779735007097,27.7639248437081,28.0383405239218,28.072501919233,28.0731661962054,28.0730238166789,28.0729554770004,28.0729435191375,28.0729433876238,28.07294268228,28.0729433987347,28.0729442132408,28.0729434762214,28.0729425954993,28.0729352788867,28.0730963785743,28.0752190224092,28.0978025561616,28.3704283811258,27.3939995293679,29.2074126641,27.8953735308415,28.1710859413773,28.2061897940104,28.2068328624237,28.2066959972606,28.2066272409235,28.2066151933841,28.2066150904267,28.2066145382403,28.2066150972652,28.2066159214931,28.2066151192588,28.2066144626745,28.2066065767552,28.2067621571094,28.2089201845111,28.2309897491446,28.5039125598959,27.5188116313687,14.0720958703373,13.4485874186123,13.7691553951264,13.7429330373617,13.747442433453,13.7474848809883,13.7475198895802,13.7474093620508,13.7472356834933,13.7475436791602,13.747395731865,13.7472305069054,13.7475821591291,13.7472298290916,13.7473582255211,13.7466807868017,13.7361329953131,13.6890519358655,13.6008236773693,14.072095872197,6.46582950879268,6.56289508114884,6.54766233258404,6.56415830865707,6.5599138493131,6.56102318305917,6.56079990515004,6.56094861327795,6.5608158140784,6.56076844031416,6.56094223249409,6.56078950661789,6.56083714094168,6.56085788057392,6.5611083437619,6.56317120011399,6.57183177892726,6.58257085502777,6.49981945504354,6.46582950823589,3.09260286834402,3.08457081198552,3.07219532334139,3.06828164001221,3.06982256700762,3.06938056816557,3.06962959576005,3.06964713353692,3.06974713636347,3.06969545693476,3.06970386649436,3.06972641396044,3.06972899120765,3.06963205523068,3.06921334629154,3.06792101497969,3.06553841570338,3.08335177330779,3.10157552967134,3.09260287346454,1.89312517091794,1.9090438774078,1.90637117555327,1.90501599268473,1.90322279679221,1.90289948423088,1.9025959307421,1.90247355139434,1.90242491206825,1.9024462498325,1.90242822196691,1.90244598350967,1.90243189259489,1.90254482285985,1.90287591260693,1.90460737176492,1.9023530059282,1.90027068379714,1.90064922906933,1.89312515417843,1.76568412916232,1.7650665265529,1.75589754856076,1.75341343653265,1.75127093892973,1.75004373838003,1.74963972291064,1.74942747319643,1.74937498438854,1.74941430306455,1.74943347598768,1.749424779295,1.74936388255313,1.74940085009719,1.74881654360629,1.75012475487493,1.75389263225764,1.76135060412666,1.77051165339572,1.76568414182058,2.29788578949014,2.32186230312165,2.31063366352014,2.30757321478018,2.30279821446382,2.29939427370696,2.29684916991083,2.29544558456683,2.29476656290778,2.29472996356973,2.29491704121118,2.29483542302418,2.2948116301391,2.29516711501503,2.29580339505095,2.29716743828929,2.29947112018213,2.30338977769911,2.31294361898728,2.29788579015136,4.3614646024337,4.41564143159288,4.3835063805882,4.37748485771461,4.36503835462777,4.35475285243297,4.34538386721399,4.33852723428883,4.3346792215622,4.33370363433013,4.33369902588603,4.33350531761233,4.33376806323247,4.33506458734419,4.3391640131022,4.34873698180204,4.36324678610672,4.37855377956859,4.40296898796703,4.36146460093829,9.4858436280433,9.6336672653912,9.56882794076525,9.55114172026758,9.52241939311655,9.49610047115352,9.47124662433188,9.45064396098479,9.43808950824559,9.43267798441995,9.43084617913258,9.4313028242328,9.4332746081318,9.43901136583143,9.45545064335369,9.48296580788452,9.51645402835735,9.55055616226032,9.60563756075664,9.48584362807311,20.0418099803836,20.2912577510596,20.1723749124907,20.1194114124522,20.0573810292802,19.9987696495417,19.9460560868103,19.9039291876541,19.8748021853502,19.8627530403404,19.8608876401224,19.8603623981913,19.8661458530424,19.8879330095622,19.9310201464148,19.9933683132611,20.0672829674699,20.1404722816886,20.2604353640983,20.0418099811649,37.4088616205388,37.6640151371542,37.501208389857,37.3838822940688,37.2693084252333,37.1654373413478,37.0756324249917,37.0077274128419,36.9692768993583,36.9532363724335,36.9487414752937,36.9509908961763,36.9669706155047,37.0086398471681,37.0848228451427,37.190893151109,37.3212214232753,37.4515335655639,37.6552812343515,37.4088616228155,59.4241408432666,59.450690920055,59.2510372278261,59.0566044182549,58.8890835159991,58.7410523849031,58.6254866815388,58.5487789100491,58.5069166945638,58.4892423620934,58.4841966830248,58.4917695765092,58.5168816054332,58.5745188157049,58.6760495106443,58.8228725894565,59.0055462003777,59.1997762303348,59.4761059715275,59.424140846386,80.0103161388502,79.729388574142,79.5319786673586,79.2773417485104,79.0771597100487,78.908576923678,78.7888523446858,78.7096847985115,78.6667271053417,78.64753489736,78.6443327320434,78.6556011315189,78.6886071964875,78.7564489899549,78.8703146158233,79.0331807840663,79.2489568873942,79.4782827918623,79.7662445623192,80.0103161468505,92.6995735474207,92.137194054817,91.9344300131283,91.6534090923807,91.4520333454669,91.2916843356851,91.1785881275321,91.1078574768062,91.0666782170304,91.0479588727808,91.0459811775724,91.0612635483314,91.1000259517556,91.1724770992706,91.2869412748219,91.4515216477033,91.6679146803668,91.9448740690667,92.1713827009852,92.6995735508472,95.8883919925695,95.2625056696242,94.9594233618598,94.6587755426347,94.4188592061074,94.2385324543666,94.1117434943389,94.0313021358248,93.9854457847814,93.9643595293117,93.9624802145458,93.9798233986857,94.0222659619493,94.0997687552936,94.2239211386535,94.4029165327828,94.6406825388447,94.9403138620358,95.2582658762079,95.8883919646607,95.3724170871479,94.7684723486889,94.5050728406291,94.2247103225772,94.0059165006212,93.842773959072,93.7282373595299,93.6554289480779,93.6133999587732,93.5934419399543,93.5908966302101,93.6060718190963,93.6446852354433,93.7160993183312,93.830527263829,93.9981231213702,94.2152293811139,94.5104808923226,94.7699700096615,95.3724171203455,87.9438999377646,87.5500085804515,87.2701031163383,87.0563115533521,86.8829021121659,86.7639288769773,86.6868699987792,86.6374068839824,86.6087090713267,86.5939219605736,86.5904176103541,86.5976314238478,86.6187681622106,86.6597287718355,86.7322475955104,86.8460724716391,87.0126967858059,87.2419314006586,87.4357198812586,87.943899920134,70.8333924681827,70.611991778922,70.3770241283894,70.2636933148845,70.1857472851993,70.1186076572578,70.0783734829723,70.0523412366986,70.0377020914941,70.0305097476461,70.0296207656127,70.0339701190536,70.045666076028,70.0696779460785,70.1107997144733,70.1892505710029,70.2825452893502,70.5298329875395,70.6303706185804,70.8333924650191,48.6429661872886,48.2460351145746,47.7663827757622,47.601239713639,47.5447371179139,47.5198557709824,47.5057582814089,47.4970497103245,47.4925917962797,47.4898086227401,47.4887888781235,47.4897590516364,47.4915597869378,47.4963975929014,47.5066193452047,47.5290592358445,47.5878640360092,47.6211231710042,48.4130200411855,48.6429661884175,29.2074127690843,27.8953737677142,28.1710861762889,28.2061900275867,28.2068330957569,28.2066962305716,28.2066274742324,28.2066154266929,28.2066153237355,28.2066146548947,28.206615330574,28.2066161548019,28.2066153525676,28.2066146959834,28.2066066934091,28.2067623904229,28.2089204177544,28.2309899819263,28.5039127924663,27.518811742648],"Archive1104_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.3527091294921,-0.112153379562233,-0.0186844224502826,-0.00211277719076465,-0.000267548986715875,-3.79127033742916e-05,-4.10117788762384e-06,-9.09877941025591e-07,-1.88046443577124e-07,-1.21131928332733e-08,1.91188470270598e-08,9.29642484387089e-08,4.19990884557654e-07,2.11583186146555e-06,2.74494143513334e-05,0.000211656141766121,0.00211459859608752,0.0184243184747751,0.108885879889996,1.24118788723531,0.00268473454617423,-0.0388916090426585,0.00885953259887068,-0.000904802905838632,-0.000171805268017868,0.00013012237259232,-1.90200163782337e-05,-1.92999280944218e-05,1.83035251885359e-05,2.56812127205791e-06,-2.01247762576217e-05,1.58018740370102e-05,1.39167344462442e-05,-8.10092542123404e-05,1.56851811312724e-05,-6.59278004039174e-05,-0.00766959782385153,0.00414883166741811,-0.0905031204367928,0.00268475611257457,-0.000323028861996287,0.00237033077343123,-0.00363006687924339,0.000769632949498824,-9.06806933389982e-05,-5.52533690709144e-05,3.63835665104295e-05,4.63624776642367e-06,-2.63298487710458e-05,1.79133372246373e-05,1.11422002931049e-05,-3.26805651885027e-05,2.62063244976012e-05,8.27332639722454e-05,-0.000345524937077111,0.00240382855949549,-0.00233082629757591,0.00927199042539846,-0.00157005081253509,-0.00032301398274499,0.000125042672634072,0.000401043587332612,0.000682049613772111,-0.000335319389286604,0.000117717854488859,-8.51379859430234e-06,-2.22951559940984e-05,1.47744083480753e-05,9.0448024724726e-06,-2.46063530222381e-05,1.53604614292865e-05,1.36492133149544e-05,-6.78985036123942e-05,0.000158339389113757,-0.000562615685090935,0.000327413371938284,-0.000738830094855488,0.00122954648821562,-0.000104767275808559,0.000125049461534779,-8.18048681969656e-06,-0.000695338190837958,-3.94271937925174e-05,-1.39897987755866e-05,-6.25202090818335e-05,4.24862712070397e-06,6.08978756392631e-06,-2.22880520788232e-05,1.3066091489729e-05,9.38765297033115e-06,-2.49210128758263e-05,3.2070899581293e-05,-3.89313189875344e-05,0.000109655376318917,1.57094070580744e-05,0.000102162718060449,-0.00056185827795925,-0.000232761430606982,-0.000675703490712883,-8.17931873074517e-06,1.69430124063947e-06,0.000124016916165093,0.000135589853650601,-4.78169424699637e-05,3.23258558049928e-05,-5.20286269071567e-05,5.20102767530853e-06,-6.86284125441394e-07,-2.07041457712045e-05,1.37743344095028e-05,8.1524264353235e-07,-3.12716292050208e-06,-2.35746643664482e-05,1.47783048356367e-05,-3.8248487701932e-05,0.000204105438441399,5.48521651930398e-05,0.000177138289772151,-0.000176323220183808,1.69127468072285e-06,-1.20233079139018e-07,-0.000569608976296058,0.00017302898500827,-0.000137664065490436,2.29174981940458e-05,-2.49162664063428e-05,-4.26328759827896e-05,-7.01190051429338e-06,7.59479013323248e-08,-1.85535955397751e-05,7.34643530426947e-06,1.79645877469757e-05,-2.05700149041993e-05,2.7387551822511e-05,-2.67736908231474e-05,-9.19656611899406e-06,-2.37013992096352e-05,7.24822985763603e-05,-0.000190811529802235,-1.28472087750217e-07,7.38351624093178e-08,-0.000348251476645237,0.000280735277129602,-0.000130578757906067,-2.9530638498078e-05,-5.80114610018264e-05,-4.28859897503745e-05,-8.32106446995233e-05,-2.04365618645992e-05,3.44731168130776e-06,-3.69550539908877e-05,1.46972341684179e-05,2.00212303176981e-05,1.64577550740339e-05,8.0800356130741e-05,0.000123626061112493,2.68431014790338e-05,0.000178716711912798,-0.000191771224311097,5.71042952830209e-08,-1.97446075283293e-09,-0.0010506018315173,0.000254067259409276,-0.000360181163625036,-8.45386278806179e-05,-0.000197629142618505,-0.000120740349988576,-0.000112846157477771,-0.000101171972818618,-2.88753648992436e-05,5.83326502728541e-06,-5.16471740087495e-06,4.91573050672003e-05,0.000130899570685835,0.000138297056495011,0.000203637661733614,0.000145995117250605,0.000249149019529217,-3.20420001124685e-05,-1.67519205675314e-08,-2.1981489366029e-08,-0.0021508217660823,0.000573601963257477,-0.00076104050313236,-0.000318922932634951,-0.000425705970818625,-0.000291042939327686,-0.000224957079691815,-0.000127288493882821,-2.06313419261004e-05,1.27750848262002e-05,3.12322834514487e-05,0.000147700598726689,0.00031851940711627,0.00037707067474163,0.000450520344880293,0.00046524046558382,0.000404159434969949,0.00173706878792888,-6.76844144322078e-08,-1.00585205029332e-07,-0.00598764292614488,0.000309196140185948,-0.00169582687085075,-0.000545455305416152,-0.00078442976209669,-0.00041325065903448,-0.000212094205815931,-5.98136688779889e-05,5.84249773760047e-05,3.00848882041559e-05,8.95942556691306e-05,0.000383608358673628,0.000485942386949237,0.000638728577044925,0.000760395438451816,0.00123275480827247,0.000209977792157176,0.0051481502346961,-1.61444359011774e-07,2.06860988637542e-07,-0.010253122377755,0.00062813184881682,-0.00298227520525622,-0.00125944883900365,-0.00071938932789096,-0.000733175815416481,-7.35430927968001e-05,5.36857846237109e-05,-3.21157224093372e-05,4.88700055678695e-05,0.000452733079243061,0.000365088389402275,0.000726975629768854,0.00116659132216867,0.00123779566772957,0.00193933990996886,0.00122641076757804,0.00677374856061601,1.38254299761597e-07,5.50886633127126e-06,-0.0162578794452616,-0.00294087653790113,-0.0030915969668867,-0.00334044363292529,-0.00125825478962903,-0.000530497322772976,-0.000609648260907908,-0.000164824520056275,0.000211359698051656,0.000206519556380051,0.000610176893046555,0.00124625207862654,0.00141175308287341,0.0023167510768968,0.00275363269990023,0.00430607055714389,0.00145987318113434,0.00687612662222489,5.44505308149366e-06,3.16404524598383e-05,-0.0087263653114893,-0.0197113287789355,-0.0092774309867813,-0.0100128447640803,-0.00729755329592022,-0.00460005744212894,-0.00268758465645557,-0.00187270213454214,-0.000533112480698607,0.000819221030521317,0.00160731562805941,0.00301280750532659,0.0051634439531884,0.00703708559045319,0.00944542175715161,0.0118148839979054,0.0152235463281949,0.000714465022038359,3.16172329757822e-05,7.05963134122109e-05,0.0064622492964561,-0.0152994377939674,-0.00838286149198058,-0.00643775170231555,-0.0056399789239081,-0.00395004174129077,-0.00229837199114734,-0.00107738034879919,-0.000487093248992874,0.000289179291845052,0.00171449606349482,0.0025420635935709,0.00399938243376562,0.0065820777101701,0.00919380699338298,0.0113374341620317,0.0144601851810082,0.0355008376493665,7.05744175532207e-05,0.000142359242039329,0.0128018799631061,0.0189889760820071,0.0132650198751579,0.0127911240522392,0.0113960390234729,0.00725426785677291,0.00525782798670165,0.00266890372671926,0.0013865650484324,-0.000835038377148856,-0.00279425281746286,-0.00472709417730968,-0.00785266683271147,-0.011720060801769,-0.0134712700433935,-0.0143531595526873,-0.0220646506457558,0.00201096285013994,0.000142363761417607,0.000509739085231489,-0.00512996062926281,0.011732034829883,0.0175605321537516,0.00567979986798456,0.00794882493591507,0.00380987267598871,0.00312555259168492,0.00147328007838635,0.000495321057803531,-3.42102608702608e-05,-0.00135710452596468,-0.00260892322383458,-0.00339769332585548,-0.00507554019309362,-0.00876090778782493,-0.00388440903526926,-0.0141402825543057,-0.0016151557887644,0.000509767483552833,0.00190137520440389,-0.00170176371416053,-0.0431627338875237,0.00586919756631983,-0.00275320752734162,0.00193805384574712,0.00125489822176687,0.000808122651862052,0.00074363695591557,0.000190165286784183,-0.000102263636789734,-0.000154197443835318,-0.000710998379003155,-0.00148421379900069,-0.000926914002505589,-0.00283727545938746,-0.00290217490107017,0.00265855781463511,-0.00991470790378566,0.00190141851150397,0.00517463188309777,0.14993918768576,0.0121451791373584,0.010980913862775,0.003005202873787,0.000825274267987843,0.000721424853678583,0.000303582674554442,0.000137256758007282,0.00011830971284898,-6.65731530179245e-05,-0.000245682611476838,-0.000234854150055147,-0.00069618562433285,-0.00105442269386482,-0.000165154837052435,-0.00156081518475192,0.016748979291969,0.0288492504695377,0.0051746743694866,-1.35270912878848,-0.11215338025164,-0.018684422376704,-0.00211277720638934,-0.000267548985436563,-3.79127036179589e-05,-4.10117790967485e-06,-9.09877942907501e-07,-1.88046445448865e-07,-1.21131928722747e-08,1.91188471548031e-08,9.29642493017626e-08,4.19990886977186e-07,2.11583184673745e-06,2.74494142882448e-05,0.000211656141508954,0.00211459858615341,0.0184243185438469,0.10888587932754,1.24118789660831,-2.35394989207161,-0.205909344234573,-0.032326096643379,-0.00377624392101276,-0.000484793985478892,-6.42437210379824e-05,-7.74275469056919e-06,-1.58741987807348e-06,-3.27566534536661e-07,-2.44152973433586e-08,3.67500771109067e-08,1.58522091257846e-07,7.28110813270564e-07,4.13397723070492e-06,4.5899487153595e-05,0.000386958093595826,0.00376435407732247,0.0320776578422948,0.199837096714007,2.16141990668115,0.00484679284067176,-0.066019332145709,0.0147298137496914,-0.00142384996705528,-0.00029261301314583,0.000208114731486695,-4.71731099921671e-05,2.51733395277737e-06,1.05952665632544e-05,-1.10378903160181e-05,2.18699694362461e-06,6.14073156867349e-06,6.82813849041699e-06,-0.000101120843199829,2.1744521760361e-05,-0.000328383470475447,-0.0125919971717739,0.00392673114011599,-0.155299196311334,0.00484682361965374,-0.000617540151965217,0.00414913446569634,-0.00625369239629071,0.00128263304625739,-0.000163764151139779,-5.59224439328353e-05,3.85176736609638e-05,-1.0741171808477e-05,-1.57803341649324e-06,5.77958558734342e-06,2.04304057431636e-07,-1.20154164674861e-05,2.17969082939901e-05,0.000109782273753707,-0.000483160351857289,0.0039690725298545,-0.00361365933804388,0.0162179996164397,-0.00370894094596,-0.000617518871914319,0.000228259238950217,0.000574926626413562,0.00121742011759739,-0.000554651556095943,0.000183374662998003,-3.00471877447445e-05,-1.38667756964507e-06,4.36375075189185e-06,-7.27428601401076e-07,-4.79701191114776e-06,5.25192634777433e-06,6.15830655027155e-06,-7.51746599895763e-05,0.000238521601154491,-0.000972463248083587,0.000573881167456701,-0.00138793533366468,0.00231335959337232,-2.28050850773333e-05,0.000228269305499575,-1.52878347008845e-05,-0.00117696164101107,-9.72271812695071e-05,-3.89134899067294e-05,-7.64581705685996e-05,-1.19555430012525e-05,-3.47612918447446e-06,-6.18003986794084e-06,4.26535028727158e-06,2.1017894298593e-06,-1.02724786631009e-05,3.61249598137726e-05,-7.93562527983187e-05,0.00022243188334412,9.41677539789177e-06,0.000182439656592724,-0.000973809473857652,-0.000468737734189623,-0.00124669836928322,-1.5285456514494e-05,3.04449277258275e-06,0.000185910919194069,0.000283974664644881,-0.000106756307789221,4.35314476502682e-05,-5.99387997321515e-05,-9.41567632450832e-06,-1.51508212432833e-05,-4.50172697358146e-06,6.0585360698539e-06,-1.21155606702064e-05,2.58494105864381e-05,-5.93347253453331e-05,1.28092574577812e-05,-3.67994960010612e-05,0.000341683315755318,8.80549102451782e-05,0.000360319641431043,-0.000336208104905963,3.04140963466279e-06,-1.990436219381e-07,-0.00103872241891292,0.000297646451788486,-0.000211275135290116,2.17151954045847e-05,-6.00567445825806e-05,-3.98676976181171e-05,-3.24954372688326e-05,-1.54764378648469e-05,2.6570523935515e-06,-6.73222741842834e-06,1.60676292860233e-05,-1.40970032669425e-06,2.8677519299174e-05,-6.26600864126997e-05,2.10115980045901e-05,-6.54504867276952e-05,0.000117297387403633,-0.000317171027432677,-2.08810032375727e-07,1.20236493949969e-07,-0.000615224419259843,0.000495082306335714,-0.000257837114417104,-1.01448934233584e-05,-0.000125573075692105,-9.61664553624588e-05,-0.000104884973132899,-5.89242148134441e-05,-1.40042287271406e-05,-2.32978248212143e-05,4.42230254040022e-06,1.65105424933387e-05,7.04742465702269e-05,0.000119692844354815,0.000200128400631109,8.90831488840565e-05,0.000296095332838005,-0.000352358439348132,9.9607823099858e-08,-5.70970032902792e-09,-0.00195847639166493,0.000510048733088024,-0.000660535363304334,-0.000180302901425464,-0.000307432581266761,-0.000241170503048408,-0.000218896056587202,-0.000139629089606066,-7.52033884820924e-05,-5.57536110496011e-06,2.90629475525682e-05,6.33530078259268e-05,0.000211360346845886,0.000296684550142986,0.000340211347461549,0.000246151871267734,0.000483925993836422,-5.73916537188752e-05,-2.39997913909517e-08,-4.9883038662891e-08,-0.00381127174467679,0.000922691085197843,-0.00128970428184704,-0.000604511204733393,-0.000760989392003034,-0.000509430870505842,-0.000424092358650079,-0.000220124596021732,-1.55624831437321e-05,-6.35790962062523e-06,5.99590992825033e-05,0.000285979421435424,0.000553602084738525,0.000665157524479228,0.000824732935493694,0.00083848413801273,0.000682664675855226,0.00321008395997228,-1.06028487292961e-07,-1.92898455370159e-07,-0.0102586089402776,0.000270428916766558,-0.00287473622336222,-0.00113264274993739,-0.00134432817092568,-0.000760807625376439,-0.000395476552721022,-8.40499835269943e-05,8.9389456246943e-05,2.06562911013344e-05,0.000219990583135215,0.000656579349569119,0.00084117271024731,0.00117280208983752,0.00140094331291456,0.00217078178393499,0.000365892622821763,0.00940761700953608,-2.66568554492138e-07,3.5286610476056e-07,-0.017017775591557,0.00012285885038957,-0.00472034536339463,-0.00233852630913412,-0.00148582216552998,-0.00114048590603183,-0.000143377039212954,-0.00010161330928617,4.750461027118e-05,0.00020003832126943,0.000552699814463514,0.000810876339043056,0.00136703593617826,0.00193110817257053,0.00230480904051304,0.0036483341386554,0.00176412501481113,0.0126937970083115,2.71742776874895e-07,9.66165807957235e-06,-0.0261153630105273,-0.00666847062115744,-0.00570988369083573,-0.00555848449163602,-0.00220815474469142,-0.00138142452247011,-0.000829469297913386,-0.000197144031532406,5.34060651133547e-05,0.000548627467309596,0.00123610915258616,0.00186775178628025,0.0027526907888038,0.00423149611887776,0.00461749827296812,0.00773581057053858,0.0031153374526294,0.0111068603692987,9.58905311110715e-06,5.56970130110965e-05,-0.0143375944305798,-0.0333975556589903,-0.0172590596538683,-0.0178180616395001,-0.012594584191549,-0.00802009316120317,-0.00530811386624334,-0.00297281157148581,-0.000758061226279182,0.000931864911984037,0.00314813528366997,0.00557209841650824,0.00863974638704177,0.0127965103035964,0.0169673325580121,0.0207044043366089,0.0264458097485008,0.00285267543640766,5.5672214544745e-05,0.000125839392641109,0.00524002174350126,-0.0246944015459156,-0.0153172058299283,-0.0118339963854945,-0.0104117419076717,-0.00675012172560589,-0.00387980266047538,-0.0024597699322762,-0.000557920645043367,0.000783070770365051,0.00243774381855379,0.00479862748016504,0.00742290167902799,0.0111469772371826,0.016459170343051,0.0206487764297024,0.0266058243708011,0.0564845584456414,0.000125818603385271,0.000247216751797334,0.0209759357959141,0.033660940309678,0.0245380970223688,0.0231672852761434,0.0199559893283307,0.0126042051242161,0.00947752853658409,0.00501774141630322,0.0018768127829265,-0.00115532412172452,-0.00466614784225459,-0.00891465511532984,-0.0136393530082572,-0.0202748987348329,-0.0245325370829186,-0.0259868127960336,-0.0368662215843817,0.00374696897112739,0.00024722582306595,0.000930019936581833,-0.00764799974055932,0.019255968076776,0.028947523660334,0.0108864534658447,0.0137869829233686,0.0071097327878121,0.00505217121074903,0.00286036019734841,0.00108052009154066,-0.000522525927915016,-0.00216909235403665,-0.00440741666251481,-0.00652513946045183,-0.00887605004366918,-0.0147265635014371,-0.00823595735920075,-0.0249810690497761,-0.00309643221312012,0.000930057869834885,0.00326533889641344,-0.00439388220959055,-0.0674341135474553,0.00751995746896642,-0.00393153339209708,0.0030861165322096,0.00234682050129974,0.00157639686859098,0.00102785753712898,0.000492621016318218,-4.80341629938555e-05,-0.000545304433414738,-0.00110738868188953,-0.0024260547090022,-0.00205688931744627,-0.00481914453217803,-0.00476815009992029,0.00493646033814197,-0.0185030881956506,0.00326539629729975,0.00896388530737705,0.245744633519378,0.0253993711060773,0.0191031821857081,0.00519980731537701,0.00159992410043626,0.00114664999942365,0.000603679909404773,0.000296277434884251,9.65894736981494e-05,-6.10586636301564e-05,-0.000381492484818274,-0.000546102879902712,-0.00117485136712441,-0.0017673275784749,-0.000713588073355052,-0.00149221624822105,0.0234507975853099,0.0715498570286616,0.00896394281740926,-2.35394989186765,-0.20590934494587,-0.0323260966274,-0.00377624393062313,-0.000484793986535668,-6.42437213667458e-05,-7.74275476680946e-06,-1.58741989400215e-06,-3.27566537942661e-07,-2.44152976564502e-08,3.67500775050668e-08,1.58522093184759e-07,7.28110818103781e-07,4.13397721871927e-06,4.58994869619903e-05,0.0003869580925689,0.00376435406255593,0.0320776578894539,0.199837096243014,2.16141991843833,-3.0678704604509,-0.279125751675928,-0.0418881325796739,-0.00503043412584718,-0.000647490009976404,-8.25411049263767e-05,-1.0605841437574e-05,-2.07171213405586e-06,-4.28724090284522e-07,-3.44324042438048e-08,5.07686096870865e-08,2.03013685143982e-07,9.6110981575424e-07,5.7123345775159e-06,5.84476464852399e-05,0.000522399809117434,0.00498122378820231,0.0418258035959427,0.27080932802094,2.81877563528525,0.0065214351446423,-0.0832417984077031,0.0182613309078939,-0.00167660581749144,-0.000411907149974469,0.00027585447307021,-5.28307689356082e-05,-1.09510175799943e-05,2.1451573589055e-05,-8.19296406159521e-06,-1.09128290311967e-05,1.6086169100483e-05,1.30855816523906e-05,-0.000143033625093604,5.09847737037979e-05,-0.000612109299313615,-0.0157647059716156,0.00192222645132611,-0.199924644587453,0.00652147865442613,-0.000870533073354462,0.00514191691150057,-0.00804706987826355,0.00163244596623777,-0.000194447204255792,-9.06131090632683e-05,5.84898571170938e-05,-6.78133445624156e-06,-1.77442440181068e-05,1.6225030769278e-05,7.02317897531598e-06,-3.095067082026e-05,3.87718886167118e-05,0.000135936953309495,-0.000577689538846403,0.00501606771076766,-0.0042699688209682,0.0211384271368763,-0.00586579593372094,-0.000870502774533093,0.000308066936101994,0.000697536283706118,0.0016210859226532,-0.000740337926725325,0.000245999282515521,-3.24147228953637e-05,-1.51922840161013e-05,1.31279933496982e-05,4.86153194113885e-06,-1.94705632355769e-05,1.43989037307571e-05,1.26814319522689e-05,-0.000106691628463113,0.000304897092162286,-0.00124480816126379,0.000705349531451104,-0.00188141682507338,0.00323648027003861,8.99423570581244e-05,0.000308081726031372,-2.08413796691531e-05,-0.00154956577989854,-0.000126449534112115,-4.83639258640214e-05,-0.000110383547778543,-1.05748009841804e-05,6.17138029768234e-07,-1.937174671441e-05,1.19259705713723e-05,7.59661117678103e-06,-2.42639244742525e-05,5.24413164682725e-05,-9.66302050755747e-05,0.000279216129569951,1.8393466938296e-05,0.000262656408936493,-0.00131734977593423,-0.000652271511385465,-0.00169205445229069,-2.08372824496069e-05,4.02080685176447e-06,0.000227109699210624,0.000380068497091599,-0.000140592431018976,6.32284986347377e-05,-9.03448744076114e-05,-6.7652835024342e-06,-1.53573748839938e-05,-1.67780140440323e-05,1.39874202670005e-05,-1.08991430206321e-05,2.27571625750496e-05,-7.22286714850232e-05,2.24963900567475e-05,-6.06857879236182e-05,0.000457583741790088,0.00012601599850089,0.000484300386693358,-0.000451384073923319,4.01750839583008e-06,-2.34762623857475e-07,-0.00139197168537373,0.00040941907545982,-0.00029608362400211,3.75468004181745e-05,-7.51879554514456e-05,-6.39855148564243e-05,-3.64153116555194e-05,-1.53475423101892e-05,-8.49085155505489e-06,-1.96686592861961e-06,2.64476621352448e-05,-1.42368554746747e-05,4.48643595447534e-05,-7.81902325960733e-05,1.82865870869077e-05,-8.43374551467742e-05,0.000165377314767195,-0.000438976177707468,-2.46978323271138e-07,1.50024627899369e-07,-0.000866135837365398,0.000687876396677909,-0.000346996521029936,-2.65815053079766e-05,-0.000158566107349003,-0.000122408529055785,-0.000153114816171974,-6.90941301414131e-05,-1.32336423571271e-05,-4.54230155710761e-05,1.50736197174898e-05,2.8035715264886e-05,7.86336555096505e-05,0.000166524197017122,0.000271470699033381,0.00010325107352261,0.000404964157825667,-0.000460185464771755,1.23515403294682e-07,-6.50105910849243e-09,-0.00268747931907263,0.000684041850673454,-0.000873676300098681,-0.000244435088537236,-0.000428463370526412,-0.000316099894657259,-0.000282717760502842,-0.000205625029844642,-9.10602389575714e-05,2.69325142517979e-06,2.08686158615481e-05,9.07938426570477e-05,0.00028852255039087,0.000384653254337698,0.000468197030709984,0.000343018179277515,0.000633231348948758,-4.85203616294828e-05,-2.9956430572047e-08,-6.60126206544914e-08,-0.00505966225273289,0.00114098289966961,-0.00169316013607206,-0.00083496719401902,-0.00101412767963316,-0.000703001414629201,-0.000571953411418419,-0.000281917623858569,-3.15258202479221e-05,-1.29435839120279e-05,8.59779650027044e-05,0.000381484617206793,0.000734657382942651,0.000904648527420765,0.00110427967132677,0.0011552089062562,0.000896202677047067,0.00439758316974479,-1.37499263630125e-07,-2.55822528060736e-07,-0.013198715733605,-2.44921541436082e-06,-0.00373014350637574,-0.00163744337032865,-0.00178668754979473,-0.00109045787713091,-0.000478680471920179,-0.000133892645307185,8.71140348041954e-05,5.23853504867709e-05,0.00030886104000644,0.000834289684910152,0.00117084833748555,0.00157113757040687,0.00190220162151175,0.00297095658092587,0.000439981664092141,0.0128351452206931,-3.48734701755619e-07,4.71234561335014e-07,-0.0213938625849585,-0.000695776882889124,-0.00581681062604361,-0.00337931655406805,-0.00197585234639705,-0.00148669487849881,-0.000336381583342058,-7.04439340751847e-05,7.07140239440137e-06,0.000248912961389661,0.000780624682884058,0.00107920129288869,0.00179469368417735,0.00269965177129733,0.00306417649764512,0.00499843157376063,0.00217875771751753,0.0175497078026039,3.70422346802116e-07,1.2646751813923e-05,-0.0318652471421362,-0.0107840517575976,-0.00730760126023105,-0.00730970452182344,-0.00310977282206338,-0.00184017618427741,-0.00112605746787012,-0.000378677815729007,0.000214440157272534,0.000653552118218271,0.00157752350662893,0.00261758337662762,0.00364007680301247,0.00554443810618516,0.0063688367865055,0.0101387009920513,0.00444971561448794,0.0141020351431864,1.25591197614469e-05,7.30702558588864e-05,-0.0169493228431782,-0.0430006744010893,-0.024081288059536,-0.0229488475779616,-0.0167735247834175,-0.0108020898453858,-0.00687614621701372,-0.00400735259331251,-0.00111434668041309,0.001418907926231,0.00405956095483627,0.00733690983182963,0.011644849787463,0.0168917102251396,0.0224314541905987,0.0279079238449789,0.0341428465479162,0.00515185012894785,7.3042113195396e-05,0.00016796667157879,-0.000486962173672074,-0.0293338500847128,-0.021318975133046,-0.0165844375853864,-0.0134570775589306,-0.00917951623757946,-0.00533389922548201,-0.003013378239816,-0.000892216970659367,0.000959126475976627,0.00343223265309556,0.0062096912982166,0.00986204077656737,0.0150927086130792,0.0215502520095354,0.0277197950454873,0.0371109561990665,0.0674303079441437,0.000167946294486145,0.000320942823370629,0.0255162766642679,0.0445448979465504,0.0343500962160472,0.0307767096873555,0.0258982651733535,0.0172202123828348,0.0122895223412269,0.00660612422931343,0.00267255134911536,-0.00163814788098871,-0.00623008736948612,-0.0115843261752245,-0.0182608616653375,-0.0266847390239171,-0.0324356632837899,-0.0356038843011558,-0.0466646122579392,0.00555813394673691,0.000320958417396081,0.00126488304123912,-0.00831384467119647,0.0235104001839916,0.035921977870738,0.015772540042466,0.0176007864064684,0.00949683970106108,0.00680869578923061,0.00368819506530692,0.00136642215332132,-0.000540570824532559,-0.00297822269246099,-0.00587112726265278,-0.00851566954341776,-0.0119808944412786,-0.0189183514322049,-0.0115255900105072,-0.0339613098189271,-0.00343199690678066,0.00126493549197386,0.00418338597533191,-0.00673836501415783,-0.0799494963890374,0.00706264116431011,-0.00444306948832942,0.00412581251964077,0.00302015775686768,0.00206552830133122,0.00145069627002147,0.000594460888678757,-9.45591171425059e-05,-0.000617346287372486,-0.00152998375021761,-0.00317323639556783,-0.00275387001720446,-0.00643197392506551,-0.00616228412651366,0.00787539176727984,-0.0282636418479336,0.0041834643955445,0.0112530072977236,0.304926142107793,0.0370513172029025,0.0251353120541227,0.00665893482615104,0.0021908078836059,0.00154014357435121,0.000778806723254228,0.000378006318371637,0.000168807549687674,-0.000111008291033966,-0.000517351808440272,-0.000698624054153198,-0.00158682829726196,-0.00230531130384687,-0.0012121918577825,-0.000667696918640653,0.0232312746255423,0.121828745146196,0.0112530865198449,-3.06787046069435,-0.279125752385434,-0.0418881326193581,-0.00503043413094197,-0.000647490013431095,-8.25411054615427e-05,-1.06058415853521e-05,-2.07171216742996e-06,-4.28724096463693e-07,-3.44324048931915e-08,5.07686103568984e-08,2.03013688595883e-07,9.61109822435063e-07,5.71233456974526e-06,5.84476461342825e-05,0.000522399806742092,0.00498122376604876,0.0418258036154597,0.270809327572346,2.81877565045757,-3.55576585103796,-0.332825211228098,-0.0482478513011545,-0.00593832700602482,-0.00075963088720206,-9.50358941287617e-05,-1.26725448846136e-05,-2.3931360035277e-06,-4.99914498549906e-07,-4.14438470938489e-08,6.08899028280791e-08,2.30662219185233e-07,1.1420256596673e-06,6.77412019050587e-06,6.69581385972857e-05,0.000620600100379321,0.0058296379309255,0.0484614450466007,0.322740890219472,3.2694827407853,0.00779074737163751,-0.0929924250561369,0.0200414557420413,-0.00177183234968264,-0.000477924338505334,0.000308363179846624,-6.44913099276405e-05,8.62181695461659e-07,1.66476414822278e-05,-1.53349034288223e-05,1.65264510820854e-06,1.06367839752215e-05,7.66644082678066e-06,-0.000149641959280475,6.19628080017168e-05,-0.000865686355162791,-0.0177914608758395,-0.000350967901072929,-0.229193222578278,0.00779080787614443,-0.00107968287477708,0.00545384628358981,-0.00914454357972607,0.00183591633673294,-0.0002232074062852,-9.02912010930623e-05,5.79704939779269e-05,-1.46080357792577e-05,-4.07661672482472e-06,9.22930261498673e-06,9.7035209807825e-07,-1.89583026945972e-05,3.65790958949656e-05,0.000140799280539931,-0.000606385977789403,0.00570528038798609,-0.00464223912045755,0.0244947160540398,-0.00784079263434498,-0.0010796401570388,0.000365785916871064,0.000795659259352039,0.0018909599663307,-0.00084982382104171,0.000278818159520667,-4.33368432142084e-05,-3.54980910001279e-06,7.20580284417362e-06,-4.67738702034102e-07,-8.38992088370906e-06,8.72504610425983e-06,7.75919841710985e-06,-0.000106713579234972,0.000337940706716167,-0.00144494745677861,0.000814186065430386,-0.00224996944261054,0.00396454462220608,0.000236931678802606,0.000365807611333908,-2.47593530760488e-05,-0.0018081377153386,-0.000153557840331449,-6.38613631080252e-05,-0.000115778884255944,-2.00295398503186e-05,-4.32708430698218e-06,-1.04536992799098e-05,7.02775201807751e-06,3.55545535243943e-06,-1.58639630344044e-05,5.35716795004245e-05,-0.000116754113019537,0.000337999577138111,1.4464236311439e-05,0.000314782070983683,-0.00155547341600369,-0.00080547241912993,-0.00203852733041378,-2.47526395613462e-05,4.6439229467445e-06,0.000244573774495724,0.000470879705041252,-0.000177142766395061,7.02902090632486e-05,-9.45328486804277e-05,-1.49608885138652e-05,-2.32326687887308e-05,-7.80367366281262e-06,9.60608914909535e-06,-1.77329102556863e-05,3.82717474474688e-05,-9.14159117458121e-05,2.14841116708509e-05,-5.98947120490655e-05,0.000531562112901896,0.000146372181518445,0.000597419027333385,-0.000545501511468723,4.64011630467535e-06,-2.32821427193338e-07,-0.00166775971628667,0.000487136986545702,-0.000339714850069552,3.89873857164363e-05,-9.4721552814368e-05,-6.13519233639079e-05,-5.00747846510353e-05,-2.38194285482261e-05,3.23701105143069e-06,-9.66256729593711e-06,2.54063849910834e-05,-3.97691301911285e-06,4.56341127356954e-05,-9.88483305049148e-05,3.68778066085303e-05,-0.000110301118528755,0.000194401592402165,-0.000516362833647484,-2.49002168924684e-07,1.66965988596477e-07,-0.00104173309442568,0.000821171527004999,-0.000426689033490778,-1.59924495374612e-05,-0.000196186991394233,-0.000152447880514122,-0.000164753630408115,-8.93793617459962e-05,-2.33987484742753e-05,-3.74707330484627e-05,9.32114142687251e-06,2.62598742343575e-05,0.000108028287051918,0.000187289549726915,0.000313080205399459,0.000137381625774669,0.000476638498803928,-0.000546655203299942,1.3181251369868e-07,-4.91179552349461e-09,-0.00326804682440427,0.000834063216178271,-0.00104718210978699,-0.000313146979354496,-0.000497275101749821,-0.000390697568159398,-0.000341969617453678,-0.000231074832424971,-0.000116914424459396,-1.76227361555462e-06,3.97600544886522e-05,9.67667965820864e-05,0.000337775833186044,0.000475944360643257,0.000557018662915895,0.000411512119271552,0.00077828768865583,-4.43319629833203e-05,-3.55785686326966e-08,-7.14070938373781e-08,-0.00595680851793431,0.00122689648761356,-0.00198054719052129,-0.00103567048122231,-0.00122726526838617,-0.000845908612939861,-0.000697634172887754,-0.000340773958368501,-3.26963830015382e-05,-2.40326018368241e-05,9.75424805388761e-05,0.000469343498462441,0.000867348308231371,0.00108887419662964,0.00134832410779781,0.00141493383894383,0.00106086955596558,0.0053569044893296,-1.64083495098233e-07,-2.93946025553525e-07,-0.0151914022840702,-0.000361518717113243,-0.00435627372468463,-0.00212203907325691,-0.00211112995536032,-0.00136094147266846,-0.000580633939790686,-0.000170197522627127,9.36449718129779e-05,4.85182239956785e-05,0.000393961001554794,0.0009855248968456,0.0013968535594279,0.00191891180572785,0.002330254034614,0.00360386955162663,0.000516676609893711,0.0155676281266865,-4.14102913858724e-07,5.69238610455045e-07,-0.0241104368010299,-0.00179042148906772,-0.00640906761410096,-0.0042383197021073,-0.00250130167377432,-0.00169760855063237,-0.000464511613757255,-0.000173152201872911,3.32004771173246e-05,0.000326534530180229,0.00084290361869012,0.00136125221361288,0.00217577950281774,0.00320206550721421,0.00373823052322178,0.00616972740177642,0.00230319484766711,0.0215817655218809,4.38897902877233e-07,1.46568461858488e-05,-0.0348086899220373,-0.0145609976111798,-0.00858184760305834,-0.00847015850645969,-0.00376227050143851,-0.00239372835200096,-0.00125193065894554,-0.000439902521753946,0.000126565579788151,0.000841325163176411,0.00191297139527686,0.002969879294231,0.00441860002743274,0.00660375686069166,0.00748523226810347,0.0120676704052136,0.00559109872642642,0.0159111500461295,1.4544533020578e-05,8.47785846658922e-05,-0.0180192463586298,-0.0492670010069023,-0.0292805586417746,-0.0267335268353536,-0.0195760860141946,-0.0127254342466406,-0.00826908863364816,-0.00458704913128521,-0.00125934946019093,0.00149406622780044,0.00486492567117916,0.00872970573011187,0.0135325740670893,0.0199973684201817,0.0264767441242965,0.0328858100936991,0.0396279151267942,0.00722781147435872,8.47440926207773e-05,0.000198806154411878,-0.00771258244277893,-0.0316880709188009,-0.0259244381024902,-0.0201740287164362,-0.0159559782441423,-0.01081056356039,-0.00630473150983085,-0.00371743236022477,-0.000973071315437176,0.00122103578202786,0.0038328643760195,0.00740310490855251,0.0117995750500881,0.0176719613990617,0.0253714101548674,0.0331534788185961,0.0450356530541356,0.0725179100483522,0.000198784916951513,0.000369131962349397,0.0278996013905923,0.0527911974366014,0.0415940658597534,0.0364617927112638,0.0301905195309892,0.0203158446521703,0.0144261226971333,0.0078886589958274,0.00293652428225774,-0.00181013191289656,-0.00720742549720869,-0.0137881634468294,-0.0214383360865353,-0.0310675139175575,-0.0384873703184276,-0.0428275777033097,-0.0527132990163426,0.00662240855389612,0.00036915754544467,0.00152018376204653,-0.00856895312064944,0.0260070494454136,0.0403183897234862,0.0193158889571464,0.0202790331675981,0.0113357758621353,0.00779689629704069,0.00440850663516217,0.00167615830705664,-0.00079636629662467,-0.00341422418892556,-0.00678254112001789,-0.0101718696736718,-0.0140916777295535,-0.0215477319199789,-0.01426673661244,-0.0409453518097419,-0.00248260701903838,0.00152025886595294,0.00477182928628934,-0.00809130925574513,-0.0861925407535138,0.00622752796856065,-0.00453989176857877,0.00472549076313019,0.00358531509646824,0.0024917454778001,0.00159830266294907,0.00075448179987039,-5.85753227182579e-05,-0.000823903431132197,-0.00175004978110702,-0.00362092895248914,-0.00345492675525606,-0.0075891313893901,-0.00699147837170183,0.0104667988923895,-0.0381148112070531,0.00477193884344761,0.01214895507318,0.340249797737384,0.045975410951737,0.0294290508653863,0.00766592130285516,0.00267325481135365,0.00175342346141994,0.000943399536540131,0.000465780868221795,0.000156633700884207,-0.00011168407961432,-0.000585775063715085,-0.000878092253137894,-0.00185159041022175,-0.00263508016816411,-0.0017566170656589,0.00042033595527739,0.0197099035851207,0.170723628733464,0.0121490648681812,-3.55576585161358,-0.332825211843377,-0.0482478513885832,-0.00593832700784141,-0.000759630893038253,-9.50358949692279e-05,-1.26725451164699e-05,-2.39313605835749e-06,-4.99914508671765e-07,-4.14438481493597e-08,6.08899037816729e-08,2.30662224263416e-07,1.14202566868462e-06,6.77412017785978e-06,6.69581380900402e-05,0.000620600095570066,0.0058296378991502,0.0484614450157018,0.322740889698442,3.26948276055069,-3.87755301085315,-0.370427270345299,-0.0522568301522455,-0.00658058776800825,-0.000830818105865413,-0.000103334931944691,-1.40979052571426e-05,-2.58112618925699e-06,-5.49408145455141e-07,-4.57131189221949e-08,6.7815799565042e-08,2.46147174326334e-07,1.2814484371371e-06,7.41507774733581e-06,7.2652006325571e-05,0.000688101288268707,0.00639914875538891,0.0527729970551393,0.358862076618696,3.56867703906858,0.00877115713947891,-0.097973918150765,0.0207648214584435,-0.00178097008593221,-0.000541275236809887,0.000340115754098776,-6.54174156806745e-05,-7.61232834536489e-06,2.29956562713396e-05,-1.31769748212082e-05,-6.35841180417862e-06,1.65000867119218e-05,1.10698746179749e-05,-0.000171068057708151,7.91476071330926e-05,-0.00103787408597921,-0.0192052204440304,-0.00210561373896645,-0.247227751058414,0.00877123783929902,-0.00124826750784562,0.00534182891218429,-0.00984160771619105,0.0019859883430843,-0.000238741839137529,-0.000108102266429921,6.82063743776553e-05,-1.19862452587073e-05,-1.32844237923441e-05,1.49450665457337e-05,4.93024156696365e-06,-2.93646499481233e-05,4.54576777873091e-05,0.000153905831693631,-0.000652418262209844,0.00621713683827131,-0.00489602639660517,0.02662215498488,-0.00959849093467428,-0.00124820955173462,0.000404684304197897,0.000908058712714094,0.00208469551718733,-0.000948328006670773,0.00031443273103304,-4.52607590271092e-05,-1.07711250904966e-05,1.18372223831345e-05,2.59539805439435e-06,-1.62293948186948e-05,1.35539867004885e-05,1.122981507452e-05,-0.000123121508640946,0.000373116958409292,-0.00158486197980966,0.000877868017877588,-0.0024870033915833,0.00455533942868044,0.000367401674093056,0.000404715393689274,-2.72322389896755e-05,-0.00201248637659543,-0.000160646669252675,-6.77307206563498e-05,-0.000132799011128032,-1.89006172934907e-05,-2.13136412447888e-06,-1.70797690485271e-05,1.08737179345843e-05,6.36343356790943e-06,-2.29720860929651e-05,6.19503283312518e-05,-0.000126130994704657,0.000367211046642407,1.8532306754473e-05,0.000356638601952582,-0.00174448939028073,-0.000914179520554124,-0.00228815415118125,-2.72214413140042e-05,4.98255459090389e-06,0.00026213398812405,0.000523155290803643,-0.000197489670351478,8.17206373717697e-05,-0.000110115855424163,-1.3414496585574e-05,-2.32604658622561e-05,-1.39612842757965e-05,1.35752437896766e-05,-1.71779159687291e-05,3.68554000850975e-05,-9.78718425737477e-05,2.59198873985686e-05,-7.18726155251314e-05,0.000591217571260866,0.000167295205288606,0.000669193444838819,-0.000605660401383536,4.9776758101294e-06,-2.05600608551445e-07,-0.0018649732101859,0.000551931467575544,-0.000385538790399387,4.8350459994346e-05,-0.000102299410961717,-7.32082510018777e-05,-5.149201944834e-05,-2.35875038884639e-05,-2.30237060652306e-06,-7.28168877037148e-06,3.07951612602548e-05,-1.0660973284429e-05,5.41077160985923e-05,-0.000107967432294847,3.60218573675764e-05,-0.000121952962099336,0.000222727954316113,-0.000586332606385149,-2.27844076205978e-07,1.75015139236677e-07,-0.00118356319330447,0.000922579730975619,-0.000477951257326655,-2.85579057661271e-05,-0.000215014331555729,-0.000167741215397407,-0.000191958850655158,-9.40246796258535e-05,-2.30939382035483e-05,-4.93317480167693e-05,1.51391444227079e-05,3.23895406316332e-05,0.000112303482879512,0.00021265313055914,0.000352357800916137,0.000146311025754511,0.000545759444386172,-0.000605768487098637,1.28548690665328e-07,-1.62643294838581e-09,-0.00368719671266038,0.000902804329792512,-0.0011654671328587,-0.000368115446615631,-0.000575105380848926,-0.000442622952998853,-0.000381391354884264,-0.000272406050177248,-0.000126838708279457,4.49340958457974e-06,3.45362781389158e-05,0.000112831718709942,0.000385600900205736,0.000530938599815156,0.000644770404726394,0.000481141183433279,0.000887018289000365,-3.76581259192533e-05,-4.10397072380866e-08,-6.88895329285916e-08,-0.00653975702916866,0.0012022764401562,-0.00221247577400393,-0.00120721688952668,-0.00140770948083731,-0.000982666566463518,-0.000801261144174,-0.000391878063037774,-4.48301272823357e-05,-2.73179704156385e-05,0.000108193647534677,0.000531520089680321,0.000985326109445607,0.0012541958695449,0.00155223000168207,0.00164789291413343,0.00122634802677115,0.00609772879295041,-1.86804781423304e-07,-3.13741418418842e-07,-0.0164546720999011,-0.000811405177796597,-0.00486939204361034,-0.00252635675803535,-0.0023974365184961,-0.00161183658424031,-0.000668972480279967,-0.000213520484661999,8.04305068848726e-05,6.15718663491768e-05,0.000457770648415398,0.0010958684654801,0.00161269454887971,0.00220985312490948,0.00269389640987274,0.00417672232118128,0.000606158265673639,0.0177061399806396,-4.67260612121093e-07,6.53252899769669e-07,-0.0258037709548243,-0.0027879210137414,-0.0068363174889074,-0.00502794811299468,-0.00286062598785997,-0.00195894059216111,-0.000604083020666944,-0.000177501685403658,-1.49308409993283e-05,0.000355076892769454,0.000986350552994418,0.00152370681068171,0.00245665522495624,0.00370089132427568,0.00425922092554772,0.00710976902078309,0.00248552968657739,0.0247540643813265,4.83974827804869e-07,1.59229489901944e-05,-0.0363176765866108,-0.0178896500913469,-0.00924729889515106,-0.00940627774926303,-0.00436094353978143,-0.00266420968484872,-0.00142674989949319,-0.000560939950067624,0.00019222034497029,0.000904166903358231,0.00208420021234598,0.00336877192658802,0.00490501115682153,0.00732170489806755,0.00845020111829328,0.0134526441963479,0.00638312662192437,0.0172033159493251,1.5773717642472e-05,9.19562714256613e-05,-0.0177889580248297,-0.0534851488033786,-0.0331360194439581,-0.0290423085826967,-0.0215481508758857,-0.0141349512750424,-0.00901095435658207,-0.0050883676558462,-0.00144517420559013,0.00174450046033553,0.00529775083959,0.00959921052502283,0.0150147495379444,0.0220037254019334,0.0291526463244055,0.0364804641232763,0.0432917264198728,0.0084792387039486,9.19105518113753e-05,0.000219965937215526,-0.0147405790481733,-0.0322977435713041,-0.0295031889848554,-0.0228610255720725,-0.0174764655625777,-0.0120901890569737,-0.00710268595123814,-0.00399032772946434,-0.0011624297996756,0.00130351153432116,0.00431962930913514,0.00810419546772025,0.0130513758139652,0.0196795506813991,0.0278714996087534,0.0368805958511016,0.051130733939853,0.0742742316629059,0.00021994128325593,0.000397111467914576,0.0287541110386362,0.0586873701436616,0.0468969610947228,0.0402654108533674,0.0330293042728963,0.0226601049672367,0.0157467774946637,0.0086760630132193,0.00332136610059706,-0.00204370432794406,-0.00795758390021234,-0.0150785121288207,-0.0237521615043692,-0.034130929330847,-0.0424930065128549,-0.0482067898001905,-0.056600344656482,0.0074384252597556,0.000397153279817554,0.00169987741990563,-0.00847339110176624,0.027441301959651,0.0430384240240167,0.0219618226628298,0.0219676113246992,0.0125065577375628,0.00863287652176104,0.00479599682995941,0.00181212919949369,-0.000795235781925699,-0.00380121169116459,-0.0074534675101728,-0.01111285855093,-0.0156390102928531,-0.0232880763530607,-0.0159766108816676,-0.0463838395409584,-0.000918458666259046,0.00169998698236748,0.00515949728204215,-0.0087946656284372,-0.0891182905126025,0.00563884284166849,-0.00462120515985165,0.00530959984019923,0.00392743021142606,0.0027518230332051,0.00181639251433823,0.00080374185106462,-8.23606570002956e-05,-0.000862385786892839,-0.001978768434304,-0.00399051916087273,-0.0038721262437335,-0.00861304024926345,-0.007534886368603,0.0125240832735801,-0.0469412862630833,0.00515964909787749,0.0119990641937824,0.360735303310012,0.0520155687732998,0.0326523269578972,0.0083105318271945,0.00301256130757809,0.0019550864466544,0.00103671291247564,0.000509142139155279,0.000196329492399713,-0.00013903285345415,-0.000654465360023386,-0.000958356275706702,-0.00207685637459017,-0.00286569647875765,-0.0021884282487814,0.00135929553357303,0.0153428528839811,0.212419408330678,0.0119992122583883,-3.87755301171586,-0.370427270810756,-0.0522568302797565,-0.0065805877706646,-0.000830818112978973,-0.000103334933046152,-1.40979055389904e-05,-2.58112626094462e-06,-5.49408159320645e-07,-4.57131202991841e-08,6.78158006677623e-08,2.46147180719469e-07,1.28144845101724e-06,7.41507769625999e-06,7.26520057726404e-05,0.000688101280033703,0.00639914871581545,0.0527729969488913,0.358862076098258,3.56867706436866,-4.08607247737286,-0.39606472148014,-0.0546807712957333,-0.00703442247511625,-0.000872575031203262,-0.000108724079438633,-1.50760646579654e-05,-2.6694113736405e-06,-5.84268706819437e-07,-4.79221545275404e-08,7.24271787829617e-08,2.55061513380078e-07,1.37766095152462e-06,7.81471173281591e-06,7.63403074890221e-05,0.000732520164391974,0.00677911724414002,0.0554757810802984,0.383201844441883,3.76424302492916,0.00956618781004292,-0.0999374416918424,0.020795240210469,-0.00175481795575387,-0.00057195772781282,0.000354234011594188,-7.15736170849365e-05,-4.21778211540449e-07,1.99788594238557e-05,-1.72238508985225e-05,1.04862323114834e-06,1.3207303508971e-05,8.07588151433775e-06,-0.000173935775071696,8.28313074601679e-05,-0.00114430886625737,-0.0202974185879854,-0.00311656580139136,-0.257405447094291,0.00956628854745303,-0.00137949894417139,0.00493644597721975,-0.0102716051690826,0.00209589716979344,-0.000262914308513136,-0.000105229780562724,6.73604095905481e-05,-1.61683141294699e-05,-5.75422929940837e-06,1.09699225511331e-05,1.74032990851812e-06,-2.27528859759469e-05,4.33607923377066e-05,0.00016146283138796,-0.000692197353583378,0.00663688362312148,-0.00515604124031595,0.0279194312751737,-0.0112460002520332,-0.0013794255403231,0.000428925987475923,0.00102671686581319,0.00222252490406035,-0.00101914427177012,0.000339101023145368,-5.31178328472719e-05,-4.45145880974142e-06,8.72890655728964e-06,-2.6537592275278e-08,-1.06541487313318e-05,1.0653434760593e-05,9.18725017658257e-06,-0.000125546708638809,0.000398741060921263,-0.00170283234113693,0.000943080391114712,-0.00263742995576906,0.00504585357141956,0.000509744850389082,0.000428967778672926,-2.85524363324364e-05,-0.00216674983077485,-0.000164932734088559,-7.13187559674806e-05,-0.00013716167819299,-2.21707561073351e-05,-4.38703382895023e-06,-1.30436456527864e-05,8.65554545910481e-06,4.58114898997947e-06,-1.94775556148262e-05,6.36073355365934e-05,-0.00013821228138569,0.000398095267892613,1.61752576856979e-05,0.000379536651031364,-0.00187700736754474,-0.0010034505685091,-0.00246900025719896,-2.85359006855044e-05,5.12869720939635e-06,0.000277985885481461,0.000564217140268688,-0.000216931997860967,8.71872618261845e-05,-0.000112769943060373,-1.64957315704233e-05,-2.66747467295205e-05,-9.97492279714305e-06,1.17667395297586e-05,-2.06259287071335e-05,4.44684741157601e-05,-0.000107040463140046,2.4795473395884e-05,-7.22634864696651e-05,0.00062905272837316,0.000180261793942505,0.000729993019297128,-0.000648543177374591,5.12187153735836e-06,-1.69677781871457e-07,-0.00201264225948461,0.000594416337748047,-0.000408340863398395,4.86818173460934e-05,-0.000111753070818163,-7.23739273782367e-05,-5.76523511707744e-05,-2.75444504914807e-05,3.57209266158631e-06,-1.10088896331351e-05,3.0345498337024e-05,-5.62130208233068e-06,5.49342614182819e-05,-0.000119235638212038,4.47215682857656e-05,-0.000136389180454789,0.000241423975497467,-0.000633436934231732,-1.99796104547421e-07,1.77999996964006e-07,-0.0012647332338547,0.000975503702138061,-0.000518967414064103,-3.10908982724604e-05,-0.000238377128662123,-0.000187747636114265,-0.000201340617185554,-0.00010556049639851,-2.828166377234e-05,-4.53119268063652e-05,1.20116897248668e-05,3.14471668714704e-05,0.000129363884782467,0.000226167915594003,0.000379929798553261,0.000168252434034471,0.000601819132740178,-0.000662019716771987,1.19461613770473e-07,2.24828748079821e-09,-0.00397137403804869,0.000918953714950954,-0.00125679259250696,-0.000434335981909286,-0.000630294852529464,-0.000500291058203166,-0.000426555195451954,-0.000293183163373183,-0.000144347571821287,2.17535265237216e-06,4.63730602559384e-05,0.000118462286451407,0.000421102215732854,0.000598546683486311,0.00071951262786268,0.000539151208364817,0.00101444351630116,-6.26226419900095e-05,-4.58111968181103e-08,-6.2845663616293e-08,-0.00683116827260408,0.00103927408569238,-0.00238777480635623,-0.00137884258779961,-0.00158377631371053,-0.00110512234990534,-0.000905988490681888,-0.000449322877249218,-4.93018463498838e-05,-3.15568480104448e-05,0.000110525745598293,0.000593738888959564,0.00109505540358576,0.00140755884792039,0.00175776003984645,0.00185836228333546,0.00141906956229525,0.00665762834798586,-2.05227663145776e-07,-3.22257607160363e-07,-0.0171787467571515,-0.00133301052364829,-0.00532189044827075,-0.00291288853014737,-0.00266218040446212,-0.00184488497345287,-0.000782882243106991,-0.000248240338652169,7.84465440060474e-05,5.10759959259932e-05,0.000515216103597962,0.00121378715640844,0.0017935004001867,0.00249725665660762,0.00304876501348401,0.00467706710480397,0.000786911057903563,0.0193704433491508,-5.08854787669658e-07,7.20124468969338e-07,-0.0268573144187717,-0.00375570286889365,-0.00718884997617707,-0.0057163235935012,-0.00324373599263867,-0.00217697401044521,-0.000692871214237877,-0.000246162743028056,-2.1607268867152e-05,0.000395003261522638,0.00105150725854969,0.00169649881615165,0.0027244720177375,0.00407422622515851,0.00477198689300205,0.00793528626742785,0.00266993933965238,0.0272975074766,5.09392390488644e-07,1.67050075838919e-05,-0.0371346543861202,-0.0205263592232109,-0.00974249592638718,-0.0100924310751659,-0.00478176256729605,-0.00295136277699032,-0.00149957767278537,-0.0006089909440728,0.000129801315442682,0.00100615479904551,0.00225618681697377,0.00355208362177301,0.0053147192877444,0.00790610797996015,0.00905440447143808,0.0146044787989779,0.0070169927736144,0.0179368974997184,1.65103645271793e-05,9.58315425078502e-05,-0.0172162804421535,-0.0562542288451424,-0.0356544720354581,-0.0306020219386585,-0.0227107165080952,-0.0149631171576619,-0.00958458522243141,-0.00533825887591688,-0.00151140102014409,0.00179204372894948,0.00564570484003407,0.0102106178109911,0.0158411104872749,0.0233528240015384,0.030917113562621,0.0386263873603846,0.0459225519424734,0.00885119157280429,9.57685900396775e-05,0.000233102663882122,-0.0200740051553265,-0.0323674005692572,-0.0319411442005664,-0.0245307991842058,-0.018591963888516,-0.0128675840002205,-0.00757342465617729,-0.00430947491178452,-0.00121869824397889,0.00140500226025621,0.00450024135825652,0.00862993672632576,0.013901861346291,0.0208328807921562,0.0295628252794834,0.0393089197892616,0.055264675083373,0.0748915973954574,0.0002330692830207,0.000410050808125826,0.0288860670696323,0.062945896399146,0.0501321719943999,0.0428215204592142,0.0349855461859211,0.0240338966161594,0.0166764073994073,0.00923522648436045,0.00344207383756403,-0.00212297863007054,-0.00838774287027161,-0.0160407790350535,-0.0252007007685963,-0.0360976751716111,-0.045272105010142,-0.0518461526043844,-0.0591619503111077,0.00778729759548488,0.000410118268001868,0.00181129060064854,-0.0085213629298105,0.0286031836766518,0.0450406162856352,0.0235315954445053,0.0232346076625669,0.0133059426713851,0.00908233925255701,0.0051146209617628,0.00195100382480201,-0.000902077922046594,-0.00398736251936167,-0.00783679685089647,-0.0118384576504144,-0.016607327958402,-0.0244118186630257,-0.0170762878905893,-0.0504862643993899,0.000852154439004425,0.0018114459730442,0.00544163649897547,-0.00912051400943822,-0.0907810645841376,0.00569263573322658,-0.00471380476179939,0.0057420845706239,0.00424116427080716,0.00298638921306516,0.00190103454343296,0.000885706578248232,-6.87565283949482e-05,-0.000978967102263959,-0.00211374078878201,-0.00426112030417675,-0.00428307304946698,-0.00948478539341409,-0.00795073148784239,0.0139962688629023,-0.0544889107268761,0.00544183572425372,0.0113152258642569,0.372129300453687,0.0557696523921258,0.0352178229093382,0.00878639104963437,0.00329125693243918,0.00207870888927797,0.00113098575065756,0.000558488207883178,0.000191932076519798,-0.000137663282821465,-0.000691833223538678,-0.00105045453642389,-0.00223516766182357,-0.00301535618236637,-0.00259738910187505,0.00207670646125885,0.0112250621495874,0.246142905877725,0.0113154132819743,-4.08607247906842,-0.396064722101376,-0.0546807714904445,-0.00703442249185072,-0.000872575037867939,-0.000108724080589449,-1.50760649172184e-05,-2.66941144430446e-06,-5.84268721724786e-07,-4.79221559023511e-08,7.24271798216094e-08,2.55061521083398e-07,1.37766097169983e-06,7.81471162938087e-06,7.63403070220908e-05,0.000732520153799444,0.00677911720410639,0.0554757809261995,0.383201844496954,3.76424305625236,-4.21730957191591,-0.41281382337734,-0.0560804727073433,-0.00734745049122261,-0.000894784959103037,-0.000112124812988512,-1.57299427139407e-05,-2.69551082757213e-06,-6.08550671776237e-07,-4.8743079406282e-08,7.53073726231553e-08,2.6145697456869e-07,1.42980732920577e-06,8.10205037151744e-06,7.85697064241167e-05,0.000759926375990843,0.00702857755259949,0.0570888676132751,0.398853566200713,3.88823927073666,0.0101930780435314,-0.0999303859367033,0.0203886532405133,-0.00170716848226366,-0.000605660333390825,0.000373308419407075,-7.28019048789446e-05,-5.92685438051778e-06,2.42285694446706e-05,-1.56317940716819e-05,-4.45154341764751e-06,1.6925110689711e-05,1.13738403194774e-05,-0.000188739567221077,8.92597939982368e-05,-0.0011756762727317,-0.0212953875557598,-0.00335932223849635,-0.261937392071309,0.010193195065266,-0.001471889328589,0.00431529581934324,-0.0105810706758115,0.00221156938605887,-0.000287584209777703,-0.00011287852310471,7.37608948377728e-05,-1.44944804638875e-05,-1.16578475245582e-05,1.45308108045178e-05,4.50429171691477e-06,-2.95364391531483e-05,4.75130389913903e-05,0.000179265012679743,-0.000765226289497495,0.00704608025816472,-0.00545764034701665,0.0286122807975225,-0.0128535191991151,-0.00147180325542726,0.000442506578240086,0.00117106086690678,0.00233884359583805,-0.00109777424739308,0.000370114091655722,-5.77450253217185e-05,-7.94148424770086e-06,1.11547217862729e-05,1.75383950798546e-06,-1.50418590147901e-05,1.32543960736885e-05,1.19847239753208e-05,-0.000138680827329707,0.000431596517850556,-0.00180376263305046,0.0009939975639133,-0.0027170055203455,0.00549089511542343,0.000650557591243752,0.000442557972984504,-2.90330697913168e-05,-0.00230781059206207,-0.000157430270042939,-6.8549004771024e-05,-0.000147674198025351,-2.03498412565148e-05,-3.43823775518419e-06,-1.60366315547703e-05,1.03610094165625e-05,5.85129968926852e-06,-2.30177186508705e-05,6.88208196364465e-05,-0.000146142555846106,0.000416281964078481,1.77457301279784e-05,0.000395790517215088,-0.00198729331871415,-0.00107678647752886,-0.00259316653470128,-2.90099356911451e-05,5.16375289663272e-06,0.000300320833112334,0.000581855383092603,-0.00022751720463749,9.44964712852195e-05,-0.000120141778357105,-1.51161710002048e-05,-2.65902799597389e-05,-1.23850580346232e-05,1.36065694008524e-05,-2.11089456921887e-05,4.51497290712648e-05,-0.000110931628490236,2.59368413574836e-05,-7.88098961573653e-05,0.000660837748099972,0.00019485711416459,0.000771903474812389,-0.000677001057516021,5.15512705131002e-06,-1.38100533008303e-07,-0.00211403841309866,0.000625813228927074,-0.000431324427535076,5.04822885286025e-05,-0.000116014439823968,-7.95995054264576e-05,-5.84276461298491e-05,-2.75701087644973e-05,1.29724829346957e-06,-9.98592118882879e-06,3.29844126240967e-05,-8.47768382843483e-06,5.97925041011116e-05,-0.000125052142104258,4.43218905837556e-05,-0.000144149431931098,0.000263059067316552,-0.000680149228852087,-1.76233207320403e-07,1.79199093458575e-07,-0.00131468933599914,0.000998841875336817,-0.000540881428474355,-5.13374572487672e-05,-0.000253688331726232,-0.000202950369779121,-0.000221606917600314,-0.000109802268025388,-2.78075605522108e-05,-5.25829105393617e-05,1.52821144328496e-05,3.5239281529552e-05,0.000133950690226974,0.000245715479046321,0.000411690940069338,0.000178686491449447,0.000665443546851599,-0.000716480874658662,1.10541256155294e-07,5.48529189383296e-09,-0.00411280357585618,0.000846189961574244,-0.00130951607221524,-0.000504017225055037,-0.000697981296705672,-0.000551071933968026,-0.000467148289726382,-0.000326618199357698,-0.000153510262856865,5.44708209748483e-06,4.4670458757149e-05,0.000131912658030976,0.000461387778218004,0.000653451139190375,0.000804384019740636,0.000601568641769484,0.00114540616836475,-0.00012220431905534,-4.94359412471463e-08,-5.74119030232161e-08,-0.00683976864852058,0.000735800098952693,-0.00253281508450317,-0.0015541106751363,-0.00176115241120882,-0.00123735955921581,-0.00100862351813378,-0.00050707170350748,-6.20754279196133e-05,-3.0376937923829e-05,0.000114128551300001,0.000646282072271073,0.00121187340061582,0.00156759944900195,0.00196389086263166,0.00206344672304241,0.00167192175052616,0.00704162458865726,-2.18893438579733e-07,-3.22626946665231e-07,-0.0174406017696253,-0.00196856128924934,-0.0057737718698911,-0.00326044558984716,-0.0029472595883003,-0.00208348871832578,-0.000892206056711505,-0.0002930452001757,7.08857809172701e-05,5.07266435209844e-05,0.000558691950232632,0.00132558498715248,0.00198880616837662,0.00277814819365748,0.00340359558408312,0.00516425085185857,0.00107302425596006,0.0206381973949309,-5.35327000704547e-07,7.54326236159559e-07,-0.0275765345036001,-0.00453573945147118,-0.00764806494859709,-0.0063708079651879,-0.0035505372694831,-0.00242836869922602,-0.000783920254884242,-0.000258321662552918,-5.96258106818984e-05,0.000406057067328825,0.00116506376896059,0.00181784515223784,0.00295074648675991,0.00446641367292063,0.00524469876061365,0.00863265013555499,0.00302927368037113,0.0293141639508514,5.09267892247667e-07,1.72242029551514e-05,-0.0380048190801347,-0.0225164705809308,-0.00999718674272965,-0.0107503693323644,-0.00512834894028039,-0.00308716770351621,-0.00159303118496842,-0.000679686058470136,0.000146659986694064,0.00104455600095442,0.00235749155791287,0.00376109772330739,0.00558229121637535,0.0083335197865657,0.00958129894982255,0.0155306916635792,0.00747631142598955,0.0184766726623807,1.69871382564431e-05,9.76060903428211e-05,-0.0166750304367861,-0.0583162718884901,-0.0371769307430251,-0.0314474666720667,-0.0234163790338117,-0.0154356740437144,-0.00982146788375209,-0.00552632595160168,-0.00157616779417994,0.00190632692758332,0.00582028648497198,0.0105503843128917,0.0164016284692383,0.0241056015257123,0.0319349926278273,0.0399063560976291,0.0477968458485445,0.00822583374831027,9.75224269642158e-05,0.000240063752553738,-0.0230518114496622,-0.0321855611572671,-0.0335792159372074,-0.0254688985458293,-0.0191894293804514,-0.0133876198505049,-0.00788113712894435,-0.00445237666655616,-0.00129708330612283,0.0014257238502512,0.00467579306226906,0.00890208713065436,0.0143513598249846,0.0215593385642097,0.0305520160639304,0.0406291545903019,0.058073592941791,0.0756050812616491,0.000240016436511342,0.000413695259212055,0.0286018466424171,0.0659239036396309,0.0520367044301577,0.04442114923712,0.036299651861392,0.0249441912654132,0.0172441538729835,0.00954863030545977,0.00359331605183257,-0.00221737494472914,-0.00869781984835271,-0.0165820999629087,-0.026185029090871,-0.0374573909619233,-0.0469884639164525,-0.0543337367464095,-0.0612184233887623,0.00795197833264749,0.000413795405529859,0.00187057522493624,-0.00856011460618609,0.0296913117296083,0.0467273061832044,0.0245429835249996,0.0242243839602071,0.0137889210731454,0.00948808820362066,0.00529173398693275,0.00201419355624297,-0.000895368486096727,-0.00415686689518347,-0.00813335772909337,-0.0122601648630543,-0.0173205270340592,-0.0253518916842223,-0.0174692196853546,-0.0537288673877579,0.00221659858622567,0.00187077820427616,0.00565760219674807,-0.00943590101602184,-0.0919918097619856,0.00630249657499102,-0.00495956007377518,0.00624920604758786,0.00447394918866237,0.00315511287563632,0.00203709656004776,0.000915451012081819,-8.8183725161014e-05,-0.00101697672249836,-0.00227028786514601,-0.00454869462411205,-0.00455797537521829,-0.010357209053933,-0.00850918990954987,0.0153707792558535,-0.0610157473780666,0.00565784295284583,0.0105353922962997,0.377481767480597,0.0577876878957912,0.0375723296709002,0.00913649177965169,0.00351267420705368,0.00222018021741402,0.00119530877938218,0.000588461450946032,0.000218886066198937,-0.000152083138520764,-0.000736401677123207,-0.00109080201177117,-0.00239429328838516,-0.00315395369365396,-0.00291651102903845,0.00250068295130533,0.00773477808431889,0.273007555390625,0.0105356121438441,-4.21730957520944,-0.412813824607059,-0.0560804730101038,-0.00734745053684644,-0.000894784964804516,-0.000112124813986233,-1.57299429196166e-05,-2.69551088135483e-06,-6.08550684887604e-07,-4.8743080487967e-08,7.53073736319355e-08,2.61456983760911e-07,1.42980735322811e-06,8.10205026185607e-06,7.85697060329559e-05,0.000759926365847324,0.00702857751794387,0.0570888674692879,0.398853567484975,3.88823930764554,-4.29037927635693,-0.422410336933349,-0.0568053492309964,-0.00753622250889289,-0.000904771071532392,-0.000114027209985185,-1.61078283472065e-05,-2.69311138255363e-06,-6.23428035738843e-07,-4.87791754919905e-08,7.67777410023295e-08,2.66155569286322e-07,1.44874355436319e-06,8.29828377627534e-06,7.97421443560969e-05,0.000774468370111016,0.00717348524550734,0.0579325328147376,0.407587700266425,3.95775503047235,0.0105917287160815,-0.098328692810215,0.0196089174215685,-0.00165670836442925,-0.000617555106576338,0.000383474562304477,-7.95724023416446e-05,3.00857473652419e-07,2.17267582263567e-05,-1.86136883747108e-05,1.05017891190347e-06,1.41222603298786e-05,1.06095632371856e-05,-0.000192546524288994,8.52763886641279e-05,-0.00114456848446007,-0.0222815725479629,-0.00289088332783791,-0.262117986739821,0.0105918562697253,-0.00152185570331572,0.00347847335414345,-0.0107940318328939,0.00232960594161382,-0.000326442500684541,-0.000105464373836299,7.31193831687574e-05,-1.75604741309553e-05,-6.28444552481067e-06,1.16343711606315e-05,2.58031140464647e-06,-2.52095368018895e-05,4.41952843797567e-05,0.000197845143238187,-0.000852071722069329,0.00746518847016769,-0.0058335387540832,0.0288783799470222,-0.0144601479919788,-0.00152176144258817,0.000448601038701119,0.00134317614723203,0.00243585035439838,-0.00117104970521904,0.00039922275672922,-6.75399422140945e-05,-3.33523347685597e-06,8.97857834297609e-06,3.08948375611664e-07,-1.18127290744899e-05,1.13786768760234e-05,1.21921632230287e-05,-0.000146025234499741,0.000464488322796137,-0.00190495964481537,0.00105417724274749,-0.00276120454690922,0.00590991175082851,0.000793565191934674,0.000448658956365254,-2.90484213657009e-05,-0.002440775765573,-0.000143080422088056,-6.72604619762564e-05,-0.000152475124592965,-2.07784377944029e-05,-4.17559028150345e-06,-1.45077786555675e-05,9.51245555641318e-06,5.09303431406944e-06,-2.1923390276976e-05,7.10159361607738e-05,-0.000154906627002638,0.000434506253597531,1.77088688810916e-05,0.000403735716240594,-0.00207210778291848,-0.00114942385006518,-0.00266934107798028,-2.90190636841299e-05,5.14467067219975e-06,0.000325501548780293,0.000589695810946309,-0.000236413525853054,9.93153577843538e-05,-0.000122702888895256,-1.5604067336241e-05,-2.79253897099453e-05,-1.07882440717997e-05,1.32683425616921e-05,-2.34385710935116e-05,4.99290913199866e-05,-0.000116653618778184,2.54145318847722e-05,-8.16909124129905e-05,0.00068661539104723,0.000207254867934211,0.000810298884618508,-0.00070700465112836,5.13653229957303e-06,-1.17190998411144e-07,-0.00217984940987599,0.00064306230114557,-0.000444165782031167,4.63118617892e-05,-0.000122283675995033,-8.14470822718907e-05,-6.21632682256184e-05,-2.99874134327804e-05,4.82982915399671e-06,-1.21826402246919e-05,3.28743107692413e-05,-5.41026146304089e-06,6.13488590298156e-05,-0.000132303325864497,4.92388198634205e-05,-0.000154001040674286,0.000285538683662981,-0.000717964255167636,-1.6114005921175e-07,1.80389797872455e-07,-0.00133542710417648,0.000990727597018111,-0.000556738152211299,-6.81347289294108e-05,-0.000274029019987505,-0.000223411095173194,-0.000232514793929853,-0.000119008100027487,-3.10377254246872e-05,-5.02969009471946e-05,1.31599368923644e-05,3.48586420581539e-05,0.000147669259331526,0.000260763991766198,0.000440988461857924,0.000199172747166444,0.000727343646778756,-0.000783131259210345,1.05361675373796e-07,7.39514030813539e-09,-0.00413501834224044,0.000712664804936667,-0.00134377614040593,-0.000590410094899537,-0.000754869627254181,-0.000611568980018103,-0.000516002338035876,-0.00034822051334604,-0.00016896796132537,3.12007188059833e-06,5.50350946911642e-05,0.000139517113185614,0.000497455313180986,0.000722879130116078,0.000888088156017396,0.000659735745147707,0.00131183882144035,-0.000231613008719433,-5.17139139086526e-08,-5.48432086827913e-08,-0.00662430893685757,0.000299860457686493,-0.00264282035802407,-0.00174884326623194,-0.00195312625907708,-0.00136737720381049,-0.00112133549428803,-0.000572559681182893,-6.93333029851751e-05,-3.17124791402866e-05,0.000113790705799793,0.000705374521131716,0.00133279217279987,0.0017338405533519,0.0021921851166909,0.00226103089653514,0.00198627846589087,0.00729183838857931,-2.278410264387e-07,-3.15870227947547e-07,-0.0173642882827029,-0.00271408785686605,-0.00623155339044116,-0.00359490676336895,-0.00325577072035674,-0.00232168219904069,-0.00102373362358645,-0.000333970525714152,7.02963739251297e-05,3.39904172734259e-05,0.000606231781154962,0.00144800460391225,0.00217583952473414,0.00307808245616329,0.00378266644022464,0.00563333376778617,0.00146461247575621,0.0216511195102858,-5.44333414647829e-07,7.47927888555276e-07,-0.0280754530911417,-0.00516895147151779,-0.00828126389076517,-0.00693193007724461,-0.00389128675552643,-0.00266538649387445,-0.000842219679864611,-0.000310477195278219,-7.44286911903399e-05,0.000431493398231713,0.00123395309716274,0.0019506536148832,0.0031848455938066,0.00479775152230218,0.00574362339184182,0.0092814320958979,0.00346359101202219,0.0309891784726556,4.816502408074e-07,1.75878822038297e-05,-0.0393642422126598,-0.0235847756538226,-0.0102902213662517,-0.0113495454113173,-0.00534963331156891,-0.00323655002346333,-0.00163494604548168,-0.000708597888966358,9.69843737836691e-05,0.00110832947003329,0.00246755681217154,0.00386914126538801,0.0058225226347367,0.00871351478104107,0.00992450900553749,0.0164028185833458,0.00781288076608627,0.0189845711897685,1.73225820069592e-05,9.81510990392146e-05,-0.0168975646179125,-0.0599735359058569,-0.0378553714758853,-0.0319461648131368,-0.023759069416536,-0.0155992500562905,-0.00995971568513301,-0.00560182206315865,-0.0015787171125582,0.00193545760558661,0.00595478674931797,0.0107606760305445,0.016645197032418,0.024516867494428,0.0324858328600519,0.0404545336950147,0.0492249852732821,0.00668243184842662,9.80497052441106e-05,0.000243227494566437,-0.0236329506457225,-0.0320741252877268,-0.0346483985772049,-0.0258314472460364,-0.0195653286354656,-0.0136756857939811,-0.00802327030365971,-0.00459837073466401,-0.00132186795960838,0.00144552690200221,0.00473861354705687,0.00908007390014283,0.0145927214773655,0.021906607163106,0.0311684922217658,0.0412700913199659,0.0599493023459564,0.0770322102669961,0.000243177402589543,0.000413104519624653,0.0279545661829644,0.0679761515941547,0.0528918829008646,0.0454723726564038,0.0372646321977532,0.0254530591718177,0.017657702375623,0.00976398265815555,0.00364533289144337,-0.00225426088175498,-0.00888705757737946,-0.0169826185896298,-0.0268109708523069,-0.0384120951956525,-0.0481090978343388,-0.0559122814159441,-0.0631510638507129,0.00800695931522949,0.000413239515750917,0.00189450194550528,-0.00858078855080804,0.0309194769669827,0.0484378255228955,0.0250753375871654,0.0252015639314827,0.0141356107580699,0.00976530142209257,0.00545889944427132,0.00208483763416588,-0.000948663537146541,-0.00426025690942994,-0.00835383941145922,-0.0126561192788022,-0.0178253644664225,-0.0262857775521184,-0.0174127206847909,-0.0562534459141294,0.00273239957497677,0.00189474047435377,0.00580885956674954,-0.00981121131215947,-0.0933856555084119,0.00750139536517717,-0.00537380171695243,0.00673240926583367,0.00471315950506559,0.00332504693003245,0.00210818844090105,0.000971589359852788,-8.39127534755434e-05,-0.00110289342506126,-0.00237423531156117,-0.00481527058672454,-0.00482742723423917,-0.0111401898925002,-0.00934571844712426,0.0170016932348618,-0.0668784663326907,0.00580912779224215,0.00993061608991923,0.378299607380737,0.0584599196269343,0.039871881022153,0.00943801203539636,0.00371978772607071,0.00233241524117597,0.00127028107511447,0.000626713340554331,0.000218378743185301,-0.00014908730915708,-0.000769334767655773,-0.0011480063974259,-0.00252752181642725,-0.00329359254597726,-0.00318925523124566,0.00264808522352039,0.00498047733237521,0.29405139070789,0.00993085678483047,-4.29037928122843,-0.422410338836624,-0.0568053496346343,-0.00753622258333881,-0.000904771076703957,-0.000114027210732022,-1.61078285198378e-05,-2.69311141510206e-06,-6.23428046554794e-07,-4.87791762618341e-08,7.6777741870033e-08,2.66155578668441e-07,1.44874357616724e-06,8.29828370070604e-06,7.97421439461398e-05,0.000774468362014228,0.00717348521627413,0.0579325327032465,0.407587702775521,3.95775507134203,-4.31378495260215,-0.425709014388934,-0.0570461204019805,-0.00760137110499337,-0.000907381877195252,-0.000114585421550272,-1.62277942151667e-05,-2.68524984466298e-06,-6.28431633000918e-07,-4.8585978912371e-08,7.71450813954708e-08,2.6800649474838e-07,1.4516821380807e-06,8.3720530083591e-06,8.010821995749e-05,0.000778817004947418,0.00722133921674609,0.058178344527424,0.410285306922012,3.98052850585254,0.0106939415750065,-0.0952262982932119,0.0184784629967714,-0.00159459322249558,-0.00063498778011861,0.000402255962753887,-8.44833771794154e-05,-3.16150531171803e-06,2.50655409523999e-05,-1.72890334562769e-05,-3.61785457352192e-06,1.67471907107344e-05,1.54282970533187e-05,-0.00020766919153226,8.24679231260953e-05,-0.00103849391211853,-0.0233358822291171,-0.00173399709885066,-0.258629883804418,0.0106940081255826,-0.00152772361105032,0.00243138922570417,-0.0109562491720386,0.00247289769025017,-0.000374210664000059,-0.000104836607777313,7.85664780736604e-05,-1.65934107045516e-05,-1.09232405338298e-05,1.43957280375298e-05,5.31056907331558e-06,-3.13117237005443e-05,4.55247726463343e-05,0.000227815516999931,-0.0009781772303171,0.00792339239234173,-0.00628172749634289,0.0287808596032339,-0.0160585954188525,-0.0015276750828748,0.000449173155002072,0.00156117102096813,0.00252104087620046,-0.00125495185641107,0.000436815019990937,-7.74046303156248e-05,-4.42824183882928e-06,1.0187844217343e-05,1.72307957276435e-06,-1.503859504259e-05,1.28854119660122e-05,1.6305878840323e-05,-0.000162788837354737,0.000507674504712545,-0.00200666668916268,0.00111470061946401,-0.00278221591909719,0.00633354499993893,0.000897073990831248,0.000449203262873842,-2.89349722031826e-05,-0.0025807684356708,-0.000118148833557164,-6.55634605540195e-05,-0.000159552458283746,-1.94818236031972e-05,-3.31284692812439e-06,-1.62203671245844e-05,1.04995182361408e-05,5.6695003926285e-06,-2.39057845659723e-05,7.4648772038988e-05,-0.000161400245772733,0.000446466110918822,2.01875520396977e-05,0.000410828220807694,-0.00214709424954349,-0.00121915790286129,-0.00270212764960763,-2.89188597997509e-05,5.11959072625554e-06,0.000354785030488765,0.000585378733329948,-0.000241699905189419,0.000105246678294115,-0.000128021991151209,-1.42362335051417e-05,-2.79304306176396e-05,-1.20147056418344e-05,1.46240486286838e-05,-2.47860215621358e-05,5.23292366439613e-05,-0.000121111322184614,2.68120531043814e-05,-8.82414112752611e-05,0.000713426712779844,0.000220246473589389,0.000839991789845642,-0.000741408622445566,5.11605003620084e-06,-1.19685249137955e-07,-0.00221270951512767,0.00065597010180727,-0.000461151611674851,4.33530140727724e-05,-0.000126869930170994,-8.83137016299244e-05,-6.32169183200106e-05,-3.03214564287816e-05,3.81564351724393e-06,-1.18077334302874e-05,3.46958764844884e-05,-6.90572121001173e-06,6.57221570649743e-05,-0.00013673132632302,4.86707870924301e-05,-0.000160074320685135,0.000313220297801241,-0.000752140959106764,-1.4269260968171e-07,1.64506969462345e-07,-0.00137300515429742,0.000976896227150937,-0.00056551918553082,-9.69297384032842e-05,-0.000290891313018362,-0.000241579200120611,-0.000252097469044869,-0.000123427635065127,-3.03147633416808e-05,-5.61582796372493e-05,1.5602750556864e-05,3.80128158768143e-05,0.000153249987404211,0.00028213169896578,0.000476323166378465,0.000213911532993253,0.000794725172584135,-0.000854203789649918,1.25937630430925e-07,-6.14465701595076e-09,-0.00407340917232188,0.00052259122454981,-0.00136246123330325,-0.000680266940170676,-0.000825075310685799,-0.000670336848381986,-0.000563785852128324,-0.000380802975073912,-0.000178484312507584,5.19310178737835e-06,5.53225952175719e-05,0.000154151181463395,0.000539686405400833,0.000785984101494928,0.000983535167177866,0.000727253925236714,0.00148767068916006,-0.000358811656319072,-3.63819049230951e-08,-9.46781371070205e-08,-0.0063115626511522,-0.000196422025862345,-0.00275103664968873,-0.00196026237638866,-0.00215688460826987,-0.0015096626321927,-0.00123985883707165,-0.000640675356463534,-8.38051110901805e-05,-2.89708454097029e-05,0.000115005538621288,0.000760597155122606,0.00146675491650711,0.00191502199347248,0.00243280392307124,0.00246868438769564,0.00234319544984028,0.00748074397216299,-1.83041385950494e-07,-3.67682953130115e-07,-0.0171231653478259,-0.00356704722106395,-0.00669596107483811,-0.00389277420136884,-0.0036095423514873,-0.00256670769136306,-0.00115387772531899,-0.000383258811911399,6.66439254734877e-05,2.60570926449541e-05,0.000646138936047041,0.00157108416103199,0.00238213146090484,0.00338897274058016,0.00417082909937931,0.00614937952407823,0.00184557295387491,0.022665055756001,-4.84465121639419e-07,6.75328475976929e-07,-0.0283863583065984,-0.00563648121303036,-0.00920260660776595,-0.00742230112010321,-0.0042165246186361,-0.0029421168682638,-0.000911174750688104,-0.000328630785066177,-0.00011447869369567,0.000436872338448226,0.0013398736203858,0.00205241732072854,0.00339835300894645,0.00516096407444855,0.0062237101130616,0.00990947232899026,0.0039844195540268,0.0324001636213433,5.38719985716656e-07,1.76273683647733e-05,-0.0413957199079874,-0.0235627420427956,-0.0105779711596025,-0.0118951570889773,-0.00546838550631795,-0.00325725479515905,-0.00167056790159185,-0.000733019163537484,0.00010483963719889,0.00113803026555361,0.00254032563017551,0.00399786646350134,0.00596938710621095,0.00900400730698757,0.0101647648435983,0.0172049615136094,0.00781902377504477,0.0198839963818255,1.74899372684884e-05,9.81811232301796e-05,-0.0183736961507013,-0.0615000063811783,-0.038087908327527,-0.0322514291604949,-0.0240167442064138,-0.0156516915965771,-0.00999759444530158,-0.00567520578283668,-0.00158672873286289,0.0019868742643825,0.00602132630115549,0.010863949936683,0.0167827854718205,0.0247008239695183,0.0327502632746875,0.04068114869811,0.0504461274448964,0.00435709153417677,9.81268174622997e-05,0.000243880716405907,-0.0222415558906459,-0.0317588615193629,-0.0352965175431931,-0.0256572544055735,-0.0196454237341829,-0.0137932223761175,-0.00803085502351894,-0.00466879423589032,-0.0013293433793608,0.00144353071291489,0.00478026774137545,0.0091455424843517,0.0146344745380185,0.0220178576036123,0.0314031184233423,0.0413032883434033,0.0612458634089873,0.0788180989229288,0.000243858388426285,0.000412316857751761,0.0270458599503721,0.0690209832572572,0.0529117678126824,0.0460243911855762,0.0378620848499599,0.0257419413512062,0.0178906015547633,0.00987311350855464,0.00368255775323712,-0.0022934994759902,-0.0090195421566318,-0.0172016936620164,-0.0271881096996377,-0.039048605369221,-0.0486070110645552,-0.0566302757763563,-0.0648926441483579,0.0074982651006196,0.000412393317845502,0.00189377374604357,-0.00849697733880987,0.0324631001679607,0.0502622166904274,0.0253760312168125,0.0262279846787714,0.0143477403741414,0.0100817896032372,0.00557045837509089,0.00212447573524124,-0.000957822735346274,-0.00439235078519855,-0.00860200989698278,-0.0130022525662995,-0.0183061098959957,-0.027405989655159,-0.0171369095732125,-0.0576743857022515,0.00169447895180799,0.00189389957929939,0.00588597806486915,-0.0104631962375816,-0.0951871513794395,0.00925678077496551,-0.00607892212478066,0.00731274639099705,0.00489732199212619,0.00345520575752245,0.00222213835845208,0.000996898012154238,-9.55584424267915e-05,-0.00112727017452989,-0.00247777034464264,-0.00508992826919548,-0.00499178270486142,-0.0117595331685902,-0.0107810362716805,0.0192639316125864,-0.072076636846161,0.00588611699109051,0.00964740777790123,0.375458887578445,0.0578978255625146,0.0423021413477776,0.00967308669873584,0.00390195716740728,0.0024739908209938,0.00132843071860418,0.000653220042759729,0.000241576217198294,-0.000160977048341307,-0.00081605677347847,-0.00117758640811954,-0.00267134480424634,-0.00349477961675488,-0.00334244671514183,0.00253939979978315,0.00284353506011281,0.309791097366084,0.00964753087546054,-4.31378495411317,-0.425709014599156,-0.0570461204842209,-0.00760137113273714,-0.000907381875882566,-0.000114585421340267,-1.62277941897195e-05,-2.6852498351185e-06,-6.28431633771819e-07,-4.85859788398242e-08,7.71450819140885e-08,2.68006498633095e-07,1.45168214391113e-06,8.3720529531824e-06,8.01082196497059e-05,0.000778816999584374,0.00722133919022256,0.058178344360774,0.410285307496264,3.98052852587768],"Archive1104_field3":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.191429473900719,0.353926019757158,0.366688880327008,0.362349160994995,0.363295291806892,0.363301303560155,0.363265977245692,0.363261065985012,0.363283430031185,0.363264833139359,0.363265446354368,0.363283205031763,0.363263040946133,0.363264782987532,0.363295639435201,0.363212706424043,0.363306778649781,0.363749090904752,0.360941954787365,0.34104761380223,0.237753481942056,0.148016117329986,0.161282855609425,0.161374009622471,0.160998204656631,0.161039886397986,0.161089933717695,0.161064761898369,0.16103778279464,0.161087502397099,0.161063152921277,0.161038574859169,0.161089831744347,0.161058271552471,0.161033562443729,0.161191554787551,0.160641710548453,0.162378069566577,0.158658263125535,0.161916145327008,0.0456764106771613,0.0601128297508232,0.0571785538559088,0.0574434597765472,0.0575335335385717,0.0574966627917294,0.0574928971038163,0.057508149573807,0.0574989481525081,0.0574942975959308,0.0575077559008603,0.0574979555100854,0.0574936350802025,0.0575178834242523,0.0574479693896933,0.0576305789968863,0.0571398165235373,0.0575731017095571,0.0582320508142824,0.0611014626276631,0.0199946764336386,0.0173575419820597,0.0180331902146651,0.0179255552020454,0.0178991534293012,0.0179181686737595,0.0179137099288057,0.0179157378303699,0.0179156084367013,0.0179148412763823,0.0179164382197736,0.0179165258815275,0.0179105101263639,0.0179301892664534,0.0178910997136735,0.0179653264862483,0.0180264915190944,0.0178073432192759,0.0167542161270782,0.0166861985458651,0.000230418999908695,0.000828185716839986,0.000631203684490288,0.000689345106546196,0.000687891238281701,0.000686816518946341,0.000684012670924026,0.000686257424965407,0.000687515513488623,0.000683568529041841,0.000685403234390761,0.000689413183112347,0.000680101568966357,0.000689639080293718,0.000679603416683714,0.000651373285182313,0.000663080122084225,0.000940412278593685,0.00116179554116948,0.00124371299460722,-0.00774972240488218,-0.00770678488573852,-0.00769052643510401,-0.00766835549825103,-0.00766532882180676,-0.00765663680238705,-0.0076553997539037,-0.00765865338238169,-0.00765541001427859,-0.00765478816399854,-0.007659033819976,-0.00765584351117837,-0.00765376218155808,-0.0076557402049021,-0.0076489831885034,-0.00763615878328626,-0.00772410046014219,-0.0078317789163191,-0.00792204253503257,-0.00781436345989054,-0.0219781493235533,-0.0218401594028152,-0.0218490535123717,-0.0217852367996454,-0.0217443471938908,-0.0217053200215623,-0.0216890311456332,-0.0216673462058461,-0.0216695289489889,-0.0216651980272222,-0.0216672061542479,-0.0216723785671587,-0.0216678962126538,-0.02167890671761,-0.0216773623370682,-0.0216986458552444,-0.0216904954427617,-0.0217046118772395,-0.0217805942798102,-0.0217330993181734,-0.060126479534976,-0.0598699857374249,-0.0597753326288418,-0.0595994504459205,-0.0594724727922541,-0.0593396110109072,-0.0592019496927196,-0.0591144982792941,-0.0590460419159215,-0.0590211545319054,-0.0590707636756116,-0.0590422215546656,-0.0590125517955232,-0.0590522631250225,-0.0591269318178181,-0.0592385229701018,-0.0594338847619403,-0.0596636736782244,-0.0598760238969759,-0.0599169628495599,-0.160013353516873,-0.159955817222048,-0.159531867887863,-0.159139294048671,-0.15866946734327,-0.158280727130774,-0.157927478908853,-0.157420554142648,-0.157122559940503,-0.157276332545828,-0.157142352088836,-0.156980043370107,-0.157239325825216,-0.157389375147922,-0.157611411559819,-0.158040738852188,-0.158529817704134,-0.159188135789776,-0.159628836563702,-0.160651109778558,-0.371493916349864,-0.371670760271739,-0.370428775469178,-0.369411295937442,-0.36842779784942,-0.367294641641739,-0.366351121190334,-0.365585588341702,-0.36472585238714,-0.364215282400186,-0.364472048561869,-0.36460735787515,-0.364398196638226,-0.365122637600855,-0.365631116031157,-0.36701914644128,-0.368326186512991,-0.369859980935833,-0.37053233424106,-0.374630384491764,-0.698491076381231,-0.698293152580476,-0.696115343916592,-0.693829641850128,-0.69199858949079,-0.690130092831477,-0.688524656159158,-0.687370132428684,-0.684866510353586,-0.684768144755296,-0.685716283258254,-0.684598761803831,-0.684594806086412,-0.686402236662283,-0.687964649564487,-0.690085600335738,-0.692379051138308,-0.695481764265146,-0.696270547179573,-0.704389705972848,-1.02354677791052,-1.02258757591242,-1.01965096112829,-1.01638969471159,-1.01338417392916,-1.01089857013437,-1.00853739849764,-1.00604713233427,-1.00503628633317,-1.00542246266999,-1.00528405995886,-1.00437196733636,-1.00603298554756,-1.00644094105282,-1.00903043432174,-1.01171554783416,-1.01465723044248,-1.01874798707495,-1.02062019342146,-1.02815513595487,-1.13988705885814,-1.13757342694225,-1.13422184685889,-1.13122963197984,-1.12843778339288,-1.12532667867564,-1.12284086936887,-1.12191834069945,-1.12089976192217,-1.1211086130541,-1.12076698390238,-1.12092718880666,-1.12145116269132,-1.12209566501427,-1.12416423742868,-1.12763792651468,-1.13043734490918,-1.13423901594193,-1.13746278214962,-1.13827768406479,-0.920821679691171,-0.916986631380622,-0.914180811042522,-0.910987750145518,-0.908410087912688,-0.906205310942566,-0.904674238853517,-0.904108021175374,-0.904026719017395,-0.903503411504093,-0.903702407676,-0.903871831410785,-0.904014228055346,-0.904551576034548,-0.906081497837075,-0.908197182414702,-0.910638467310101,-0.91289361415907,-0.916773704806123,-0.911444489625558,-0.459383557905886,-0.45656370376041,-0.456082747084767,-0.455727245190512,-0.454919892682849,-0.454016842807271,-0.453701805432703,-0.453518721755599,-0.45323786545665,-0.453308762092042,-0.453167203598497,-0.453260014765246,-0.453489490302019,-0.453628426338801,-0.453792446316106,-0.45465273483422,-0.455844209552178,-0.457137169421326,-0.460796604270198,-0.458846227037797,0.0600046980278201,0.0640521854823961,0.063928376031151,0.0655717780233586,0.0654454936489619,0.0646400725464127,0.0642516001850341,0.0641705131830039,0.064093958861774,0.0640586512065055,0.0640276716735906,0.0641467212729042,0.0642178100032596,0.0643696799451764,0.0648630368545686,0.0655027716365007,0.0658479695065012,0.0665429766873834,0.0667399108186535,0.0722093167186208,0.496386154889733,0.498119070496669,0.491194295662979,0.488344754854804,0.487422757967951,0.485947782002866,0.485862913197392,0.485377522879738,0.485180916510719,0.485176626421673,0.485116755809996,0.485131240886,0.485394619083055,0.485573475357742,0.485974714970121,0.487094186521066,0.488616680664242,0.489741931246334,0.490256239183119,0.490479032773393,0.674979443182198,0.681937379366914,0.688243067059022,0.684568647348651,0.685026635613217,0.684413895372142,0.683935080646235,0.6838001147456,0.683613433401571,0.683499099060821,0.683560886250136,0.683572794290908,0.683652767927444,0.68394059031125,0.684206667432531,0.68446494297126,0.685895348317556,0.688665752774533,0.686231545520292,0.704592554473376,0.589070154112911,0.567472725973531,0.569197412193123,0.565101675037576,0.564756758865716,0.564448974243641,0.564283224365855,0.564162430586479,0.564139100721438,0.564097646786826,0.564076129869615,0.564112266047163,0.56413978206233,0.564223612601737,0.564396624176372,0.564699561439022,0.564517110363159,0.563677344308715,0.589273252113538,0.447320762115634,0.336912591895188,0.324116827367078,0.330001902562611,0.330931072486976,0.330667585258231,0.330752257707493,0.330622460266759,0.33063919084484,0.330708351917178,0.330595091540603,0.330622886754949,0.330698296550304,0.330570481842341,0.330583581614728,0.330725412640811,0.330406108732439,0.332029360490725,0.326592958204326,0.319760405042927,0.538300096500632,0.375799331616286,0.698305793449698,0.723472724151184,0.718108268019485,0.719892952918347,0.719812707598855,0.719737975399943,0.719762290162493,0.719808090174586,0.719756478716872,0.719754291866961,0.7198091685651,0.7197560852359,0.71975794565771,0.719821081462585,0.719605651484433,0.720002609814584,0.71969712643768,0.706380909851115,0.659874451265974,0.494338302787936,0.32475280325768,0.348317973248559,0.34897161941699,0.348153400173713,0.34836404848164,0.34834101510656,0.348335043963817,0.348328423930828,0.348339103823833,0.348339942493378,0.3483260034566,0.348341770000058,0.348330997301314,0.348337168616363,0.348581391062597,0.347410087692607,0.354787040729384,0.338697172942977,0.342490234972539,0.0975377866442685,0.121101281180085,0.11911378596824,0.118735432128433,0.119096980892095,0.118988086969272,0.119020887190856,0.119003653605872,0.119008388684424,0.119015015741294,0.119001987431137,0.119008616568041,0.119013967490639,0.119021513384091,0.118853003753796,0.119493953794781,0.117021014464139,0.119659674204029,0.122068375065051,0.132380633014818,0.0459348977214435,0.041041604185677,0.0412848946614426,0.0415004345389766,0.0413408807808795,0.0413964227285066,0.0413862942250814,0.041399186975443,0.0413873013306486,0.0413939916119243,0.0413996507565597,0.0413887244371213,0.0413821027727169,0.041456331036274,0.0412541014154216,0.0417679790371946,0.0417206719629592,0.0409361395259052,0.0373406127237051,0.0372091089990232,0.000909079853752059,0.00265012710795331,0.00239063306803283,0.00242206675708295,0.00246140605710154,0.00245463392032933,0.00244959195417782,0.00245363882376416,0.00245567046165218,0.00244860756503684,0.00245128744213706,0.00246281580894528,0.00242944648660021,0.00248338523056331,0.00239739057111308,0.00231570249008613,0.00238790971361761,0.00332618333999421,0.00402440791805055,0.00422284816595596,-0.0134167510029156,-0.0133909606334646,-0.0134095770834546,-0.0133307304445625,-0.0133544907963654,-0.0133159836235243,-0.013318246034714,-0.0133204440918849,-0.0133159230785485,-0.0133123519558466,-0.0133232819247636,-0.0133148233293218,-0.0133112082513718,-0.0133162238725424,-0.0132778742461467,-0.0132590951984934,-0.0135227536052034,-0.0138443759237409,-0.0141359519937594,-0.0136125259012309,-0.0420179686746721,-0.0415547722496736,-0.0416968503668575,-0.0414828909094113,-0.0414237282050226,-0.0413463982277366,-0.0412910024706365,-0.0412403416007748,-0.0412503313592457,-0.0412375712368201,-0.0412334659340425,-0.0412547226339051,-0.0412528981455816,-0.0412561055841393,-0.0412921508892747,-0.0413051852389725,-0.0412514521578627,-0.0412536437551871,-0.0414563612930307,-0.0412688788781806,-0.118055643942269,-0.117011326863561,-0.117055594384505,-0.11666182840435,-0.116402477810448,-0.116085406057699,-0.115839293616174,-0.115614756320369,-0.115450935461593,-0.115483918328372,-0.115494769801699,-0.115402922419457,-0.115447926851332,-0.115463614468128,-0.115625265686488,-0.115932235752202,-0.116361779330321,-0.116800957384633,-0.117351485247587,-0.116797680069795,-0.315532538568136,-0.314735018469005,-0.314060395442525,-0.31311923431502,-0.312323003380027,-0.311446001747456,-0.310641253562395,-0.309819821276699,-0.30934812424169,-0.309251961064084,-0.309114279002215,-0.309155871755204,-0.309334249969602,-0.309587397967854,-0.310015848665821,-0.311003943822909,-0.312123481670153,-0.313298888611583,-0.314377644876837,-0.315476930449142,-0.729309729661895,-0.72945779685306,-0.727109275878206,-0.724966024633849,-0.722811470379585,-0.720757846991932,-0.718718142803018,-0.717226888291612,-0.715816786371911,-0.715013420596067,-0.715237069702659,-0.715227971840126,-0.715138022303234,-0.715895855330289,-0.718014996371594,-0.720275780605448,-0.722850322959837,-0.725992280967107,-0.72752404292409,-0.7344754419201,-1.35743463443604,-1.3584529173338,-1.35322956562408,-1.34915931629902,-1.34552825299927,-1.34161919725155,-1.33876403987267,-1.33526160176078,-1.33311000476647,-1.33338314192911,-1.33317052967406,-1.3324008787485,-1.33358901052033,-1.33524711750525,-1.33845866050025,-1.34249757411806,-1.34676215881237,-1.35259016342331,-1.35486126511851,-1.36913439646169,-1.95789632715077,-1.9597898917191,-1.9531063941719,-1.94606507010551,-1.94075090865634,-1.93570884385652,-1.93051693762988,-1.92710870158849,-1.92703165513728,-1.92615180976006,-1.92555340052161,-1.92643714771174,-1.92722780863818,-1.92849740714264,-1.9325935189836,-1.93782391973147,-1.94372165161021,-1.95080740928783,-1.95504661503418,-1.96737522969701,-2.13013112891128,-2.12755396590434,-2.12229651735567,-2.11710394873429,-2.1120053504785,-2.10674630004106,-2.10270955487165,-2.10194608264491,-2.10094207065888,-2.1004746962278,-2.10029312714898,-2.10103763499082,-2.10134189812785,-2.10289649319657,-2.10612811750524,-2.11171347936736,-2.11659787191147,-2.12416909149404,-2.12955598796221,-2.12823295690271,-1.66095133125654,-1.65238768820923,-1.64499065251973,-1.63956406576321,-1.63369556500631,-1.63021124335547,-1.62868439693611,-1.6276149336387,-1.62744679938871,-1.62665359814414,-1.62698663511965,-1.62729587069355,-1.62762946446743,-1.62874112319339,-1.63061535305626,-1.63392055952628,-1.63832469064823,-1.64135987408237,-1.65022270720508,-1.63520171804985,-0.783897005615258,-0.782736330778793,-0.782103376535247,-0.783249406965122,-0.782677807660792,-0.781825638564263,-0.781787882140557,-0.78165472321954,-0.781145910416062,-0.781339677004447,-0.781046637657495,-0.781240168995914,-0.781623118963656,-0.78190951950717,-0.781574917804736,-0.782382858226621,-0.78467038409041,-0.786817399813544,-0.794524966648692,-0.794888351960115,0.1585581453827,0.166290720620361,0.165670261903957,0.170718115895766,0.170340217004579,0.167922370452435,0.166743397028958,0.166327272153655,0.166069474276528,0.165938329306139,0.165878377044955,0.166185141948879,0.166499506875664,0.167047496593139,0.168368953548915,0.170441141491012,0.171968407284027,0.172691317596248,0.177597494580538,0.188206454804754,0.999389019922172,1.00477515263798,0.988775295435467,0.98027471917092,0.978368214363868,0.973943596778387,0.973791302342738,0.972476008581994,0.972045125167543,0.971857682352721,0.971795771716927,0.971927095052333,0.972442597556623,0.973092509487244,0.974467836412899,0.97711012675863,0.981128344161907,0.983038033257976,0.980471906505155,0.982071938418661,1.3669410207636,1.38482777504446,1.40071481425667,1.39354178308356,1.39509220058204,1.3933103283826,1.39230255094533,1.39172459569261,1.39132471394584,1.39116379800012,1.39106710114499,1.39121377470254,1.39157155497333,1.39195490087285,1.39280648845715,1.39381264892856,1.397424356949,1.40292058479044,1.40094661731126,1.43738935247223,1.20808129496156,1.17421339160212,1.1835869730018,1.16838571557248,1.16848168361062,1.16729969265664,1.16692379496982,1.16669235659652,1.16642947630682,1.16642914892808,1.16647503240691,1.16636322063872,1.16659606980963,1.16695223699899,1.16722476476783,1.16805228397129,1.16830602683897,1.16598655690491,1.21070501984845,0.913124605594243,0.69793485382653,0.699933433371562,0.718567735054163,0.721720419409477,0.720466583262581,0.720706349324564,0.720462262479198,0.720437432704297,0.720512798503856,0.720347628076918,0.720367027738848,0.720465021926466,0.720249215033436,0.720240484663408,0.720441605272543,0.720104953158197,0.722931945426052,0.713774042991328,0.700269210531516,1.10960014008757,0.591628075937613,1.0596373619384,1.10031466528365,1.09754969797237,1.09843418477242,1.09885017547924,1.09874141447668,1.0987228245387,1.09878010550409,1.09873663291858,1.09873598428802,1.09878016843669,1.09872808045607,1.09874345607048,1.09881987043121,1.09839843789312,1.09920341974426,1.09803496183186,1.06754928045977,0.982041547078445,0.735987898761733,0.523299623644165,0.546575389808078,0.550552888604079,0.549073738781838,0.549191491306622,0.549276217344652,0.54924476723856,0.549210227976541,0.549261056837351,0.549243349508506,0.549211969178825,0.549270065223707,0.549218751085461,0.549234444334747,0.549790384108043,0.547487002272269,0.563365852571526,0.530999942402714,0.531589000421138,0.154903059018609,0.182669541735031,0.185610369329633,0.182988607634492,0.184106042461681,0.183872556008051,0.183885457089107,0.183891340357741,0.183887503841241,0.183887813810909,0.183887543058596,0.183883944437045,0.183886136585716,0.183933010939006,0.183556009162728,0.184827404934782,0.179741534786873,0.184852143370573,0.190242501859863,0.209934255140768,0.0761883596374567,0.0682377614331327,0.0676377311749432,0.0685739594946375,0.0680779951752909,0.0682435119938327,0.0682179506001702,0.0682313500850714,0.0682223796510733,0.0682278092485024,0.0682341974643284,0.0682272296029098,0.0682001168852427,0.0683520801498706,0.0679604836237251,0.0689964777071205,0.0689096199364297,0.0673641368931888,0.0604626297390856,0.0602378247326959,0.00218315982826497,0.00554980652782701,0.00512398120972387,0.00510878552518566,0.00524025412568078,0.00520231343607542,0.00520398202486243,0.0052103632253447,0.00521277198019996,0.00520256470458168,0.00520493886265221,0.00522574922463497,0.00516670724180139,0.00526391265710432,0.00509907866900555,0.00494068066577894,0.00505861042095223,0.00685275698785559,0.00814594428827002,0.00840787014067955,-0.0176312745644667,-0.0176165512663325,-0.0176304288123049,-0.0175243172554593,-0.017576567278156,-0.0175007425334992,-0.017509175619125,-0.0175103683227598,-0.0175025365628034,-0.0174975412658963,-0.0175135299928541,-0.0174987152735834,-0.0174977047484593,-0.0175031918510993,-0.0174328815285862,-0.0173965304837921,-0.0178650714965908,-0.0184518845416184,-0.0189685132310554,-0.0178787610277065,-0.060183078425659,-0.059479109122481,-0.0597370580183188,-0.0593704537026605,-0.0592972171695036,-0.0591679198019573,-0.059064677061157,-0.0589921197687469,-0.0589953127086282,-0.0589798675527856,-0.0589817976363538,-0.0589993012885925,-0.0590021574215902,-0.0590037606209498,-0.0590808005774324,-0.0590826178082889,-0.0589832722304377,-0.0589423925772051,-0.059289545484842,-0.0589773781965054,-0.17343609325959,-0.171607430718615,-0.171768528260903,-0.17116448878546,-0.170768081759486,-0.170294982130285,-0.169894911614977,-0.169557297917564,-0.169306181674583,-0.169305327674162,-0.169336945738712,-0.169234478304322,-0.16926543019408,-0.169342780401932,-0.169559407138263,-0.170057153756084,-0.170748907316211,-0.171407884736793,-0.172268493775779,-0.170952601758144,-0.465274663833006,-0.464151993666296,-0.463000551363151,-0.46166396905756,-0.460384168458908,-0.459083956010482,-0.457883745763737,-0.456701366631682,-0.456018693646065,-0.455834329505678,-0.455614812687082,-0.455657843376332,-0.455946894082374,-0.456278220842992,-0.457078979855636,-0.458527927297194,-0.460143822005597,-0.461904453836048,-0.463660908382895,-0.464612886767092,-1.07183647911015,-1.07344860061388,-1.06925425050876,-1.06626558286255,-1.06299995148057,-1.05974617991822,-1.05683988629461,-1.05469889854467,-1.05276696809076,-1.05171391924136,-1.05203335267356,-1.05206066784715,-1.05182303226786,-1.05339347632544,-1.05603842051813,-1.0594397284443,-1.06333746752971,-1.06784794077276,-1.07032253377188,-1.08007126820562,-1.97842173399844,-1.98288424638484,-1.97411688724528,-1.96793427147612,-1.96267506319579,-1.95682130580835,-1.9526037481039,-1.94846822451512,-1.94591093011743,-1.94588277634322,-1.9459995168678,-1.94506522997007,-1.94650839665408,-1.94908841267768,-1.95322835537926,-1.9590131848262,-1.96523315981802,-1.97377255027964,-1.97711635172687,-1.9973978636422,-2.81511112495867,-2.82179259060372,-2.81164248708257,-2.80063611260963,-2.79264713465101,-2.78569456684286,-2.77889516309363,-2.77586465799474,-2.77484286291705,-2.77429395843458,-2.77375356994005,-2.77422186256125,-2.77584043494159,-2.77779808705402,-2.78284137937482,-2.78990168874552,-2.79799651100604,-2.80813938374956,-2.81456414465395,-2.83067639535052,-2.99939532720783,-2.99646858709123,-2.99056417868743,-2.98330776401275,-2.97612440804718,-2.96967465986978,-2.96600300752262,-2.96500305929552,-2.96370171487088,-2.96343675909151,-2.96311543117201,-2.96393146224678,-2.96492370975027,-2.96672981480592,-2.97048846956064,-2.97746771343961,-2.98371972398808,-2.99464829949351,-3.00183964585365,-2.99589564083348,-2.26077997783911,-2.24363609496437,-2.23150706598227,-2.22433733527456,-2.2158554342994,-2.21236878049573,-2.21079540021319,-2.20942567737695,-2.20923110356719,-2.2082975767714,-2.20866774078626,-2.20918610366473,-2.20966517910072,-2.21122363925058,-2.21328715805049,-2.21687018966201,-2.22259592943827,-2.22579955500084,-2.24017223169009,-2.21259737464134,-1.00515316094392,-1.00917100092785,-1.0083933000806,-1.01091414904181,-1.01116762822122,-1.01069731849795,-1.01082043954227,-1.01095049034856,-1.01031180472623,-1.01048267589862,-1.01019971841606,-1.01044583325564,-1.010883445702,-1.01120351591636,-1.01062820459104,-1.01110732994314,-1.0136018935751,-1.01643230315394,-1.02798639667925,-1.03408697167526,0.282102428076536,0.292692282954928,0.290319159879066,0.29867675671671,0.297120318543493,0.292988953284112,0.291164435653219,0.290039640276374,0.289527071403188,0.289256363586209,0.289231589482107,0.289700860509677,0.290382276334521,0.291566133345796,0.293836620073755,0.29747036195501,0.300487561932972,0.30171240023346,0.311850496476632,0.330531130123632,1.49894785858897,1.51080286901465,1.48509692435569,1.47035248968729,1.46821320175924,1.46038171678037,1.45976001098395,1.45758520417378,1.45676069290034,1.45640277425177,1.4563018366762,1.45658060942608,1.45749241169724,1.45880354804979,1.46139537992737,1.46532756271354,1.47207736020202,1.47474458796343,1.46914075420408,1.47411115862773,2.06442585668058,2.09583774383038,2.12306862562687,2.11022026315181,2.11432345256985,2.11062630420228,2.10902349352983,2.10801954725918,2.10727091245341,2.10692505681172,2.10685890028799,2.10704953038187,2.10758152255475,2.10836441271458,2.10998773396187,2.11200942843016,2.1177956002723,2.12579915848354,2.12567710856236,2.16958485304204,1.84050171046009,1.79594743770916,1.82095271612608,1.79107230751808,1.79098674704205,1.78911504822704,1.78824507978976,1.78778036346257,1.78745406831331,1.78736694020347,1.7873784794369,1.78737629783091,1.78774793072784,1.7882450261604,1.78902754098922,1.79037031303296,1.7914408436352,1.78897856369203,1.8343810262988,1.44986582983792,1.04303320711577,1.07539832251226,1.10889010726753,1.11532581412018,1.11294449216939,1.11326486593683,1.11287573603664,1.11280797095716,1.11288879500885,1.11262273418189,1.11266286443879,1.11274485985407,1.11244106221259,1.11244478713906,1.11259351011241,1.11249281316173,1.11564562940789,1.10427048462067,1.11030746169316,1.66185099584846,0.813467790264806,1.42088863571585,1.4837030188143,1.48326121406929,1.48410209931107,1.48476354580805,1.48453933335332,1.48456407623879,1.48464911376528,1.48456855852616,1.48456181120552,1.48464972126749,1.48456249568561,1.48457518770866,1.48469283513543,1.48405362781134,1.48533596934727,1.4826387649415,1.430730624632,1.30179093576093,0.979387612371934,0.736259307390428,0.757879675250219,0.765390609895587,0.7629661896403,0.763268692451389,0.763313172321415,0.763278245896888,0.763268569441182,0.763290182963345,0.763287860600131,0.763265576882179,0.763300151602256,0.763255968004759,0.763314429522011,0.764092505728882,0.760678230532992,0.787062827549494,0.734796985734352,0.730774375070789,0.216773420361776,0.2470714645182,0.255700928894773,0.25087434689893,0.252711176829893,0.252313935864072,0.252369338518142,0.252352810620455,0.252353712294603,0.252363668545244,0.252346140539992,0.252351918390879,0.252361316439262,0.252408504353575,0.251840178072406,0.253848955679412,0.245493336584085,0.253713842049724,0.262158049749025,0.292542293705363,0.108784509322824,0.0979869468694219,0.0963254765782455,0.0980050470124523,0.0972079303738948,0.0974694031256645,0.0974230039895619,0.0974496392505401,0.0974330920742515,0.0974426415088756,0.0974517073034943,0.0974394841335025,0.0974008346413441,0.0976437117815062,0.0969981899747732,0.0987245472622904,0.0985190855389746,0.0961878128519356,0.0856721969530592,0.0853957071527449,0.00424999979019236,0.00928435504064292,0.00874156113942291,0.00866649185323574,0.0088810541033215,0.00882515337531471,0.00883445186219386,0.00883918810718012,0.00884254559211202,0.00883253442488914,0.00883301493971668,0.00886207884567897,0.00877377655993395,0.0089299720878316,0.00865590409087441,0.00841672352783578,0.00858566176444273,0.0113015257038805,0.0132164756339274,0.0135241266887845,-0.0208289112760324,-0.0207566985995536,-0.0208029662141274,-0.0206521132235468,-0.0207415325306929,-0.0206323329152463,-0.0206448949247595,-0.0206399555666707,-0.0206344550479156,-0.0206282955219738,-0.0206468518064693,-0.0206246744358383,-0.0206326103979181,-0.0206295894422597,-0.0205255836237914,-0.0204713381703075,-0.0211569623977336,-0.0220200883529933,-0.022792612276892,-0.020983807300138,-0.0770697306648833,-0.0761403060499802,-0.0765356879822371,-0.0759946083357975,-0.0759110862029805,-0.0757206158674147,-0.0755735957044312,-0.0754696623204445,-0.0754639689017363,-0.075444879780451,-0.0754515479943281,-0.0754706400379995,-0.0754739319355173,-0.0754789461950372,-0.0755999424706385,-0.0755853237035295,-0.0754426135753464,-0.0753393039409381,-0.0758512814500207,-0.0754050227373637,-0.227403920447164,-0.224679970223404,-0.22501717373501,-0.224194047359821,-0.223674164157691,-0.223014629170009,-0.222482630361066,-0.221997518908948,-0.221660277895806,-0.221665277134915,-0.221655764324869,-0.22154644090929,-0.221622360573801,-0.221694582385143,-0.222000934892854,-0.222708462726332,-0.223667099273302,-0.224535994207902,-0.225766191412454,-0.223373140753938,-0.612188660830124,-0.610780379564577,-0.609136106440772,-0.607313985879362,-0.605637982135082,-0.603876297983679,-0.602260915151803,-0.600751274940364,-0.599865022036071,-0.599487828819871,-0.599290138580114,-0.599366418740714,-0.599631001274681,-0.600146588174362,-0.601272453355304,-0.60316365253251,-0.605386682872893,-0.607658478255853,-0.610202830865627,-0.61044646121377,-1.40639474858948,-1.40984759808304,-1.40387725626941,-1.39993198913249,-1.39551017844031,-1.39127946041244,-1.3874805554096,-1.38466874536045,-1.38230118360114,-1.3810794909775,-1.38133685633699,-1.38130307877464,-1.38129175726649,-1.38322531416409,-1.38680362096503,-1.39119064456512,-1.39629435204952,-1.4022097988318,-1.40575883139325,-1.41761779188571,-2.57692574411509,-2.58566148407556,-2.57300718746906,-2.56495623171246,-2.55823083698945,-2.55073273799776,-2.54558209771236,-2.54049188947979,-2.53765719106042,-2.53764749554077,-2.53739411460271,-2.53672790844656,-2.5387050283838,-2.54162857508175,-2.54686914825823,-2.55424317672063,-2.56216632666196,-2.57320695301348,-2.57793614844599,-2.60334516824931,-3.62204863472035,-3.63443997957637,-3.62063180443357,-3.60567023644877,-3.59608211652144,-3.58751290229224,-3.57949188469743,-3.57592185214054,-3.57500323596664,-3.57404579213248,-3.57341602649721,-3.57449052299098,-3.57610045577281,-3.57870399884079,-3.58472237890878,-3.59313913943953,-3.60330514457418,-3.61597827356975,-3.62480475762459,-3.6435222713951,-3.7845699875701,-3.78092020482808,-3.77572333722842,-3.76721769394957,-3.75850221182306,-3.75183402135885,-3.74779228914371,-3.74673124799748,-3.74563408192812,-3.74507347336757,-3.74489740592772,-3.74605179154809,-3.74710827781882,-3.74946523930535,-3.75373756326254,-3.76157886439188,-3.7684640643926,-3.78227538660566,-3.79056532529381,-3.78049933128808,-2.75975034993479,-2.72987193093934,-2.7125959927338,-2.70483916432473,-2.69476034437806,-2.69093789834103,-2.6891456025124,-2.68771428467541,-2.68742397214737,-2.68642123772771,-2.68680494203201,-2.68750821518882,-2.68819596371909,-2.6900796044153,-2.69226195264035,-2.69618971884532,-2.70260981513524,-2.70545492140703,-2.72509728326777,-2.68332608714236,-1.14965812340052,-1.16376886163266,-1.16276678878983,-1.16641400777269,-1.16752636030341,-1.16732391693872,-1.16775704506647,-1.16798588035671,-1.16732863833709,-1.1675285778868,-1.16717239517581,-1.16749941780702,-1.16798873492474,-1.16824328624595,-1.16751920311048,-1.16781218628571,-1.17033727836445,-1.17316932323166,-1.18867399287018,-1.20426437910086,0.422137421682679,0.435593057525497,0.430156250655013,0.441323209156727,0.438348181096589,0.43259807972464,0.430099502549129,0.428017023751477,0.427312460372277,0.426816305391863,0.426797077674831,0.427527797534617,0.428595099910931,0.430541908613353,0.433939892991231,0.439134783944223,0.443502063065003,0.445433009146321,0.462160455110889,0.487467043664397,1.99730008624089,2.01707463500197,1.98256979659367,1.96136208623525,1.95908542670197,1.94765821485846,1.94637899542785,1.94322687832831,1.94194214582816,1.94136974007438,1.94124176270406,1.94173094509126,1.94309564501483,1.94520399296187,1.94919026267306,1.95423636083967,1.9644674970692,1.96605935435835,1.96011040063657,1.97208409135981,2.77280589766578,2.81762199359133,2.85725997345194,2.83820388654711,2.84558275911464,2.83960881100589,2.8374285190607,2.83579384966524,2.83471116821915,2.83421888562578,2.83402660437095,2.83432197108741,2.83513851489216,2.83621847088309,2.83889950183811,2.84208548599511,2.84926328648268,2.86243626046062,2.85679211668254,2.90819281330391,2.48433206083384,2.42619548042614,2.47154282483424,2.42452709845268,2.42408121482514,2.42124548580244,2.41986058071384,2.41918000129834,2.41862392863489,2.41852284585416,2.41858245663628,2.41854691014449,2.41916991892469,2.41995043809187,2.42113145463931,2.42349321680085,2.42556738536426,2.42066376950069,2.4703406051326,2.01120571379105,1.39594287390216,1.4744243669703,1.52420005673132,1.53457739841424,1.5308101298073,1.5311687885419,1.53070861359176,1.53052650349643,1.53055922358935,1.53027384833353,1.53026817793134,1.53030657999347,1.52997112355044,1.52993647035737,1.52998995412338,1.52989890776118,1.53488128526636,1.51994140144955,1.53982846112605,2.13943772397281,1.0245432829856,1.7893586640308,1.87639090122999,1.87979504561986,1.87981896648683,1.88094223059458,1.88070760663184,1.88069051706695,1.88077475950219,1.88071209069797,1.88070810895134,1.88077565986928,1.88069605510017,1.88072912578298,1.88084380093944,1.87995435262313,1.88183815432682,1.87715294003202,1.80092790422478,1.62468125154534,1.22734901622693,0.958447433724134,0.976604592752873,0.988292607300824,0.985019507077796,0.985273121811232,0.985405198918073,0.985354086056621,0.98532087022673,0.985371574805629,0.985356976679473,0.985322393163169,0.985388443976356,0.985305643905312,0.985399853412754,0.986509883501,0.981772009526815,1.01993655792155,0.94594859291615,0.937025564423855,0.282086908457465,0.314522095523522,0.32960897306859,0.322142568582693,0.32485565020733,0.324309686300494,0.324349109417039,0.324351563659251,0.324345619881189,0.324350347675356,0.324342576303409,0.324339354960376,0.324348658748091,0.324431800894981,0.323612420293047,0.326432080807983,0.314569827381921,0.326042318457698,0.337393402745784,0.378641522106685,0.142957253269704,0.12907671746511,0.126404062804954,0.128919686891585,0.127736256620619,0.128127879931157,0.128061839902582,0.128090267687649,0.128076791418147,0.128085024846812,0.128094742249167,0.128086990246619,0.128023286491061,0.128368999100106,0.127463293208766,0.129903975674355,0.129568799888483,0.126517597892221,0.112371074901082,0.112171827253539,0.00705179257654278,0.0138222525928383,0.0130758005447533,0.0129572662121809,0.0132752375900949,0.0131876313316649,0.0132068718206961,0.013213218980084,0.0132173772266702,0.0132050001872895,0.0132043361857476,0.0132445467565451,0.0131242141354739,0.0133371205464823,0.0129563002453739,0.0126372698938713,0.0128364111594035,0.0164748668763343,0.0189592136762965,0.0192928212717975,-0.0234008279123414,-0.023180523105217,-0.0232428318297652,-0.0230660943318448,-0.0231953248371799,-0.0230472252960647,-0.0230648810227605,-0.0230575154541653,-0.0230507649184696,-0.0230426184069028,-0.0230679007521795,-0.0230360149838435,-0.0230521615704593,-0.0230406823831062,-0.0229084133794572,-0.0228266708427857,-0.0237302365503997,-0.0248523284391094,-0.0258742026454262,-0.0232728234752527,-0.0930601723252324,-0.0919883323314717,-0.0925073809117727,-0.0917842439398572,-0.0916915344180827,-0.0914328376232837,-0.0912373023244126,-0.0911012161460868,-0.0910827833249265,-0.0910604998184319,-0.0910726462126891,-0.0910903395263294,-0.0910953005780424,-0.0911061934727459,-0.0912676600349124,-0.0912399758559344,-0.0910653074374941,-0.0909002043486112,-0.0915863972502741,-0.0909878758366656,-0.280573546638746,-0.276960046927061,-0.277463484274303,-0.27641978439836,-0.275777864912775,-0.274945295865965,-0.274250992229381,-0.273627684593963,-0.273205379830017,-0.273170740472806,-0.273159504185197,-0.273047044202662,-0.273128195779242,-0.273238770378534,-0.273636649020467,-0.274551107522221,-0.275789470233299,-0.276873358352185,-0.278487883525199,-0.274797245080507,-0.757542103780479,-0.756181975715905,-0.753932263374548,-0.751670300114476,-0.749525649012611,-0.74733213913215,-0.745299272499781,-0.743429210253562,-0.742302113354727,-0.741797494281489,-0.74155140634005,-0.741640338230724,-0.741956759988074,-0.742615502440305,-0.744124615391155,-0.746519401189373,-0.749285180264887,-0.752082532333927,-0.755498784519123,-0.754650196855818,-1.73642858467958,-1.74250784511064,-1.73450259133128,-1.72971011729789,-1.72422883360684,-1.71889767251622,-1.71436282597184,-1.710846542701,-1.70799500259579,-1.706624270995,-1.70686453601306,-1.70681979215217,-1.70693878089544,-1.70942372412795,-1.71374655440083,-1.71917667812056,-1.72551579432979,-1.73270462083909,-1.73747013835792,-1.75094697966213,-3.16119242243849,-3.17474005749309,-3.15824307903086,-3.14819825416747,-3.14013120878819,-3.13105538874059,-3.12467470694111,-3.11900763913525,-3.11596242374731,-3.11579919671412,-3.11561678253141,-3.11503668871171,-3.11724483091801,-3.12092955432203,-3.12712525147882,-3.13591591493929,-3.14551990460264,-3.15899779592931,-3.16495149504119,-3.19522351936615,-4.39430664790304,-4.41193885253762,-4.39500507782745,-4.37639682564653,-4.36509362934903,-4.3550463920287,-4.34614132219711,-4.34237209204304,-4.34118354552537,-4.34024169120825,-4.33962622039097,-4.34073144657741,-4.34280859482338,-4.34591334786969,-4.35275389172311,-4.36246691623688,-4.37427805258452,-4.38951326924459,-4.40036284304996,-4.42186384001415,-4.51035940086639,-4.50516378222667,-4.50175796527003,-4.49207171055745,-4.48182601336423,-4.4751883480553,-4.47110657040168,-4.47008922525524,-4.46899445250866,-4.46851983117151,-4.46837716267047,-4.46965363647893,-4.47108885293243,-4.47378236133525,-4.47835908486377,-4.48703765919959,-4.49413184837588,-4.51056122617971,-4.51921711554451,-4.50586041913317,-3.18642509959856,-3.13987675832163,-3.11809280972379,-3.11029339406059,-3.09897746614003,-3.09479113127931,-3.09291327089313,-3.09141359477609,-3.09100245126809,-3.08997197538054,-3.09035986539172,-3.09121167418378,-3.09215314611812,-3.09427825095891,-3.09655184287348,-3.10078984539633,-3.10779223958228,-3.10988655778863,-3.13484312047715,-3.07763342726856,-1.24028870972619,-1.26825040442289,-1.26638015160815,-1.27038813704491,-1.27225431710584,-1.27208324871393,-1.27264312963041,-1.27302543343556,-1.27227623920179,-1.27243329783727,-1.27211802787855,-1.27248147039895,-1.27297927057333,-1.27331997963301,-1.27253735088633,-1.2727214816549,-1.27557909295231,-1.27821017113075,-1.29698203098822,-1.32585195521914,0.568800313512772,0.583668495881751,0.574110317584376,0.587545109498849,0.583060003256306,0.575437193931384,0.572236990988991,0.569139911427701,0.568065843797558,0.567387487174277,0.567427959350764,0.568369550687037,0.569969902539658,0.572849614187692,0.577408697427779,0.584341493204158,0.590022588665991,0.592830044497725,0.615745405725153,0.650591873857417,2.4914757678411,2.52007396214414,2.47839578217369,2.45085627057367,2.44847635853533,2.43339548707217,2.43136789761582,2.42718063510681,2.42541262939751,2.42459257569599,2.4244402479497,2.42514988237444,2.42701943961745,2.43000110611286,2.43538734155581,2.44156062973191,2.4555128011332,2.45515541148886,2.45010493498222,2.47068186203353,3.48682645433144,3.54324961782286,3.59509936715402,3.56931319739136,3.58063692666413,3.57214738837211,3.56930294404944,3.56707565233775,3.56557115009228,3.56485491530491,3.56464882889588,3.56499002474716,3.56601252409227,3.56759276136444,3.57134006024456,3.57565315504442,3.58406962534634,3.60381305478075,3.58856027106033,3.64741590664657,3.13581277649578,3.06220717125781,3.13163937141182,3.06591893228783,3.06480854186143,3.06095699442447,3.05891496972923,3.05793000001042,3.05725404310242,3.0570590606429,3.05709940770968,3.05720267331577,3.05803807298882,3.05903304015498,3.06097703975712,3.06429573161385,3.0677548368107,3.05917368076782,3.11387222982238,2.58301531760093,1.7522028027778,1.88621635213417,1.95316523920876,1.96741659183246,1.96222068446535,1.96264225817222,1.96198054310804,1.9617226656348,1.9617265183294,1.96133200786903,1.96133311861646,1.96131883307977,1.96090814641609,1.96084359932021,1.9608032559517,1.9607290208972,1.96795464216189,1.94944302699989,1.98162718016223,2.62050626891489,1.23390873539445,2.16100193754405,2.2759215856435,2.28296461990448,2.28257389220059,2.28409759214591,2.2837411415773,2.28375183711136,2.28386573617915,2.28377080300063,2.2837603935203,2.28386577330295,2.28375567691393,2.28378856991888,2.28394298556573,2.28277823260968,2.28532356181981,2.27814149675048,2.17573348996913,1.95038203457493,1.47941796616978,1.18827174900785,1.20232484519881,1.2183320336258,1.21404721276119,1.21442426949197,1.21455633729524,1.21449113804917,1.21447729115262,1.21451063366398,1.21450408938338,1.21447538175426,1.21452992191273,1.21444031994987,1.21459085924083,1.21596749253481,1.20992348424731,1.26069504944054,1.16363012768026,1.14945326975175,0.350321556953304,0.384681504228492,0.406282109334852,0.396314078041089,0.399851116290165,0.3991310106095,0.399200313737681,0.39919091997415,0.399184914082907,0.399196607052643,0.399178089102676,0.399179307743681,0.399194843314983,0.399288128453988,0.398233965113113,0.401913727463572,0.386317876725527,0.401257242884414,0.415273894899282,0.467517908707703,0.178016120489921,0.161218419706362,0.157552518686479,0.160852153159838,0.159328542400949,0.159833339082742,0.15974371410538,0.15978368914369,0.159765276076234,0.159776343886736,0.159788240500371,0.159777881306906,0.159696613567755,0.160150040478373,0.158953581845781,0.162169681496732,0.161654958653093,0.157952503456155,0.140195212800591,0.140100862175143,0.0104364286595235,0.0189040133829066,0.0179519594432742,0.017801683993007,0.0182074906997587,0.0180989242377364,0.0181288206836716,0.0181335642600653,0.0181378947454728,0.0181259700991471,0.0181230882337702,0.0181727408761117,0.0180200805215513,0.0182972101630344,0.0177966986142157,0.0174062226359027,0.0176279274093233,0.0221620560165227,0.0252093019168814,0.0255312211074366,-0.0255946174039716,-0.0251568978193734,-0.0252485559871444,-0.0250434776615309,-0.0252091421173665,-0.0250274912438599,-0.0250492078503809,-0.0250338762613167,-0.0250297535573684,-0.0250209957892951,-0.0250492420911976,-0.0250087472922373,-0.0250373293520988,-0.025010780818963,-0.0248540980312318,-0.0247447809955574,-0.0258574846906133,-0.0272318455372037,-0.0285174877897763,-0.0250305391565531,-0.108584639919739,-0.10743630610575,-0.108057768214928,-0.107153365209418,-0.107046732738858,-0.106712806091478,-0.106469762322584,-0.106294988650752,-0.106259997426312,-0.106234277028544,-0.106251679500999,-0.106268557730526,-0.106274707113093,-0.106293651223847,-0.10649459867394,-0.1064613699389,-0.10626610263625,-0.106031371268007,-0.106910848812195,-0.106120760821846,-0.333552595994031,-0.32913952659546,-0.3297781454682,-0.328530019597134,-0.327766273869009,-0.326745038006808,-0.325897085180984,-0.325119108462417,-0.324606977473961,-0.32454898038239,-0.324514020181274,-0.324394983164086,-0.324506028555245,-0.324632521744436,-0.325137510545391,-0.326275980028472,-0.327800863333136,-0.329091520229885,-0.331138595677659,-0.325881411418298,-0.902897841174918,-0.902021689081719,-0.899040868879758,-0.896311627627562,-0.893741833484045,-0.891084144572703,-0.888630862963612,-0.886422618845624,-0.885050064015584,-0.884387892011688,-0.884140721437572,-0.88423971053245,-0.88456857124349,-0.88542269255101,-0.887303697982108,-0.890182056511077,-0.893531495911632,-0.896801555593907,-0.901211991613755,-0.898739872895216,-2.06570476023026,-2.0751114251027,-2.06506001009083,-2.05935434707123,-2.05279482125793,-2.04644621881279,-2.04111767776149,-2.03690680516579,-2.03367126922852,-2.032154135816,-2.03232817105543,-2.03228803550887,-2.03260466450471,-2.03552777514906,-2.04069259221829,-2.04709939775496,-2.05465965115278,-2.06311290769165,-2.06926542585676,-2.08371152221412,-3.73917084221908,-3.7578934478254,-3.73767725512154,-3.72566024464688,-3.71624114668415,-3.70560781052952,-3.6982170852784,-3.69197128095677,-3.68872804043982,-3.68853976320496,-3.68824605472222,-3.68782245109567,-3.6904073094779,-3.69462067065439,-3.70174976976655,-3.71196282311971,-3.72312135753084,-3.73896405937412,-3.74623057324303,-3.7810801979252,-5.14572936478095,-5.167110440967,-5.14745707428441,-5.12522234349758,-5.11242865956156,-5.10111208991876,-5.09141060207646,-5.08740891657729,-5.08610803171839,-5.08501457843285,-5.08443912334558,-5.08575766292551,-5.08806671686342,-5.09169494919889,-5.09928732296554,-5.11014567776204,-5.1235319466863,-5.14112815403159,-5.15409900577953,-5.17789518894851,-5.19468405738969,-5.18631348177152,-5.18571054594051,-5.17489307042494,-5.1632978192632,-5.15691916600152,-5.15290951051637,-5.15209883729753,-5.15115919092064,-5.15066733358907,-5.15061923030504,-5.15209145554731,-5.15373967434296,-5.15680265932761,-5.1615806791545,-5.17082486260246,-5.17789375944923,-5.19673993818852,-5.20484524307125,-5.19127259222662,-3.56218029239939,-3.49477782374956,-3.46876519471728,-3.46116342001098,-3.44883663664515,-3.44428402132694,-3.44228071715352,-3.44068123232122,-3.44013898257666,-3.43902769541388,-3.43943312601208,-3.4404594419829,-3.44161285921687,-3.44397212994317,-3.44635270141526,-3.45086376470624,-3.45833381463414,-3.45986613950812,-3.48969458014285,-3.41679885897119,-1.29464246110216,-1.34087806015497,-1.33794724606245,-1.34182931943077,-1.34426682255002,-1.3440195337305,-1.34466751504966,-1.34504845435083,-1.34422678207687,-1.34439588490897,-1.34402143216604,-1.34445566740083,-1.34502031010702,-1.34541533856294,-1.34470323945032,-1.34498114764811,-1.34825999344403,-1.35061214393765,-1.37221167214415,-1.41803841151086,0.713927701356434,0.732317317273474,0.71841212837997,0.734065749598891,0.728160094899198,0.719041570725263,0.715210940481779,0.711092863923799,0.709748642934273,0.708834871155121,0.708894160625576,0.710109635828744,0.712184686388719,0.715938241396026,0.721616983629309,0.730149293036321,0.736910553081082,0.740243094968137,0.770013280072373,0.811451482020681,2.97531872626993,3.01205414346553,2.96367975347296,2.93004069734255,2.92730942766775,2.90827648043363,2.90552842070503,2.90020343547075,2.89791870644424,2.89685452628391,2.89667711299157,2.89764767684197,2.90007512254565,2.90400018028718,2.91092656649481,2.91812419146902,2.93624985303522,2.93325405486711,2.93069609184758,2.96261030949797,4.20123514375428,4.26803284816732,4.33218816746254,4.29913497118573,4.31485381598621,4.30379624454505,4.300211613443,4.29729492009741,4.29537302761386,4.29445343686012,4.29413541994306,4.29455149953965,4.29585429281445,4.29783267077838,4.30273653231327,4.30849504221185,4.31749398022515,4.34534484610112,4.31698991501368,4.38483930564724,3.79424778690418,3.70222858423881,3.79851830707356,3.71334189951311,3.71129719072924,3.70623486493738,3.70353114103915,3.70223136497636,3.70133070880251,3.70108441073729,3.70116263653059,3.70130643818181,3.70242276671673,3.70380505591443,3.70636404208481,3.71078891733572,3.71630003686262,3.70249748168307,3.76294445239378,3.16522768884621,2.11517355453186,2.31148755549678,2.39566937872423,2.41368417888413,2.40692945069424,2.40730122898299,2.40651248298702,2.40610541500518,2.40602963139448,2.40560928260221,2.40555240276675,2.40547794378309,2.40503547751341,2.40488150693216,2.40490945669063,2.40462791254583,2.41469801533742,2.3924932409022,2.43548551586404,3.08723807466025,1.44082066441258,2.53753170552899,2.68183009190757,2.69311182778917,2.69205208438934,2.69400974559964,2.6936302825898,2.69361270636324,2.69372834878831,2.69364374234037,2.69363421789028,2.69372915911375,2.69361961145746,2.69367158140925,2.69382942287302,2.69236796098175,2.69569684002006,2.68561600113185,2.55573272409806,2.28009809843211,1.73511928278031,1.42355260652196,1.43309431692266,1.45349920842415,1.448321610732,1.44868696546091,1.44888408927098,1.44880671316572,1.4487787632735,1.4488290675632,1.44881618663093,1.44877998097977,1.44885514093369,1.44873123524788,1.44893662338295,1.45063268831495,1.44317216143675,1.5070070074141,1.38616572810702,1.36693060896892,0.421193197925235,0.457414785143488,0.485583276262489,0.473080724702171,0.477461986348134,0.476594322881642,0.476655699922756,0.476657997758712,0.476647190564889,0.476656170659642,0.476642469199102,0.476637605284263,0.476655402492654,0.47677948040392,0.475457022912709,0.480035753517148,0.460643931654284,0.479121836236328,0.495533987245622,0.558533973942339,0.213766122589079,0.194072586359335,0.189490657294754,0.193566053499376,0.191676560355441,0.192307116732973,0.192196801661352,0.192240246344584,0.192223762031341,0.192234302412675,0.192247029481408,0.192240347850568,0.192132990167215,0.192700629223379,0.191211541409386,0.195207109466013,0.194483070642243,0.190214114864052,0.168925353680204,0.168972129352412,0.0142608120633406,0.0244043020967396,0.0232115172799263,0.0230476560198539,0.0235468364509512,0.023411507035402,0.0234522863828729,0.0234576975478961,0.0234623456745163,0.0234489746967846,0.0234440532230215,0.023505607764043,0.0233181252375698,0.0236591294253404,0.0230396906548581,0.0225852419011813,0.0228157888166593,0.0282284605908471,0.0317930345710161,0.0321332815476415,-0.0275823840509831,-0.0268733543177394,-0.0269914982258469,-0.0267665069621534,-0.0269675696871903,-0.0267472650975189,-0.0267714968007289,-0.0267507576917075,-0.0267457427930893,-0.0267349434263579,-0.0267699840551086,-0.0267189531907713,-0.026758578255063,-0.0267193187288255,-0.0265406911850968,-0.0264001944333558,-0.0277204391305457,-0.0293286012299057,-0.0308713423664507,-0.0264723180239783,-0.124010766027122,-0.122835810536997,-0.123537826911115,-0.122452137491042,-0.122330714262065,-0.121921017480284,-0.121627489582343,-0.121413688217198,-0.121361743378148,-0.121331459225907,-0.12135416830262,-0.121369563062875,-0.121376867235801,-0.121404360822904,-0.121644982650711,-0.121609154066086,-0.121403305032335,-0.121106227249126,-0.12218405441756,-0.121173770845608,-0.386769853879706,-0.381694893320623,-0.382419558639993,-0.380979656357338,-0.380092249649264,-0.378891263448652,-0.377884201286406,-0.376959373548119,-0.376361588021267,-0.37626750770543,-0.376218424162396,-0.376097924518222,-0.376225096342318,-0.376380073902982,-0.376993772957676,-0.378347676139319,-0.38015840206934,-0.381651615575944,-0.384161160359617,-0.377149291121444,-1.04897154958377,-1.04905997790701,-1.04521787493497,-1.04204641094225,-1.03902026500493,-1.03590518684686,-1.03303806759377,-1.03047767502535,-1.02886452670712,-1.02806393503779,-1.02778963768362,-1.02790008309607,-1.02826683458507,-1.02929307854582,-1.03156044935493,-1.03493178693019,-1.03884790199515,-1.042585514385,-1.04807969836587,-1.04365105138794,-2.39598653517651,-2.40936887696961,-2.39717368609042,-2.39055259702679,-2.3829577728043,-2.37555844323254,-2.36947676473624,-2.36458748028948,-2.36093732096449,-2.35929813939244,-2.35942950255721,-2.35937639109029,-2.35988303091149,-2.36330022122563,-2.3692270988158,-2.37663683488734,-2.38543805657949,-2.39509797386054,-2.4027728103081,-2.41774675728589,-4.3156880587035,-4.33946303982612,-4.31583650173369,-4.30170395464077,-4.29095575705549,-4.27879974809607,-4.27035511127257,-4.26361190863851,-4.26021125436962,-4.25992228038027,-4.25961104559865,-4.25934101294143,-4.26220776169585,-4.26702160536355,-4.27505117074608,-4.28660189980036,-4.29933022029603,-4.31752400082166,-4.32599809716671,-4.36586248855609,-5.88647925539511,-5.90940887677041,-5.88764781550294,-5.86196146007202,-5.8477537029371,-5.83524909870935,-5.82481584049274,-5.82061778342222,-5.81913335326255,-5.81797383900311,-5.81741598526525,-5.81888095638675,-5.82150135157245,-5.82557872174033,-5.8338999524315,-5.84586018387545,-5.86066084184205,-5.8807303764996,-5.89535433154972,-5.92274254716583,-5.85307680462677,-5.83904911507409,-5.84177401592461,-5.82962108039486,-5.81683070005447,-5.81082745090388,-5.80698193151014,-5.80636779863998,-5.80554343869326,-5.80509882930436,-5.80513025583205,-5.80675071053437,-5.80868611757127,-5.81205336344409,-5.81695025581118,-5.82676450787059,-5.83352257204892,-5.85488416645252,-5.86151809641697,-5.85005260485622,-3.8995521364709,-3.80912029534758,-3.77968598436717,-3.77262070154733,-3.75927811511305,-3.7543072190028,-3.75223283778556,-3.75049854871177,-3.74979717117354,-3.74864389287157,-3.74905568408413,-3.75022510491377,-3.75160969754851,-3.75418299016631,-3.75660026188184,-3.76140274656072,-3.76937938271407,-3.77007841645954,-3.80541747084528,-3.71531763292649,-1.32529881274902,-1.39348463160334,-1.38806380196321,-1.39133460565169,-1.39433294701115,-1.39370087688489,-1.39416793715271,-1.39449834342133,-1.39349414412524,-1.39361975452284,-1.39325645363695,-1.39373810370708,-1.3943771046854,-1.39499228198449,-1.39448944260792,-1.39506232960029,-1.3991474568792,-1.40129010077913,-1.42492294192047,-1.49151182051036,0.846826005934369,0.866628985716679,0.847244823251495,0.864884047340247,0.857469409445625,0.84658627787714,0.841996130790111,0.836811228464698,0.835065132077224,0.833957214060952,0.834091585279478,0.835579049653829,0.83826046538326,0.843024301609875,0.849902603798842,0.860352021113567,0.868181711661949,0.872286610738721,0.908738665102899,0.961021961547302,3.44688321855999,3.49074610324365,3.43753215329304,3.39746078315063,3.39422060900763,3.37115777590568,3.36763176569036,3.36112696712592,3.35832527710788,3.35698371958527,3.35677781879266,3.35799508811001,3.36099439155449,3.36590761821318,3.37434238780698,3.38255944365075,3.40532793259749,3.39866553899217,3.3989946065115,3.44308266877852,4.9155474935087,4.9902746790491,5.06626042590785,5.02623445633516,5.04662085985189,5.03295389160355,5.02864254155653,5.02504077328479,5.02266163999152,5.02150030102221,5.02112779575602,5.02159431396826,5.02311929250655,5.02558673561952,5.03167940010206,5.03866185145792,5.04819245257321,5.08537020349379,5.0407280316365,5.12131691881289,4.45955163853939,4.347725158323,4.47270834929917,4.36760916660131,4.36464543558919,4.35826684728434,4.35484109742593,4.35319153394942,4.35211487680596,4.35178119003618,4.35186074775974,4.35213634617913,4.35353879436799,4.3552230799807,4.35865871276129,4.36417328575304,4.37163990906659,4.35205208665754,4.41955584657812,3.75409095361396,2.48518192145262,2.74730279036938,2.84940404024988,2.87050745369251,2.86217745081569,2.86253500082552,2.86148962581198,2.86096359019216,2.86082881023197,2.86030138633361,2.86023424810666,2.8600893799455,2.85958924724838,2.85938061221528,2.85940672263502,2.8590433332578,2.87247817319254,2.84585145885316,2.89771047709379,3.55486726399715,1.6505416776096,2.91683228790392,3.09189089432161,3.10733162505412,3.10579079827787,3.10816989050458,3.10770053228332,3.1076900233305,3.10782852045218,3.10772431846654,3.10771063842204,3.10782834764164,3.107697670565,3.10775683807507,3.10794429196006,3.10616389905813,3.11033345608128,3.09710044067774,2.93888504078418,2.61265506205939,1.99338118543531,1.66277672238624,1.66777613287113,1.6925140405706,1.68640123407145,1.68682998273518,1.6870558026721,1.68696188082467,1.6869429221934,1.68698808378374,1.68697750482698,1.68694288203509,1.68701845886425,1.68687465610743,1.68714631511613,1.68912900756495,1.68025569377309,1.75737457256363,1.61234794426445,1.58805763439051,0.493984124419196,0.53215497389547,0.566713405021413,0.55184549880124,0.557024138886461,0.555996679828135,0.55607383082162,0.556073718644134,0.556060204612606,0.556073037819984,0.556054399783699,0.556049659070796,0.556072749080185,0.556216037543124,0.554630129166124,0.560134946966738,0.536875211255318,0.55896957027946,0.577585003535599,0.650995254004794,0.249900882070426,0.227503595553306,0.222032646798347,0.226834323531123,0.224610440248873,0.225356105577181,0.225222514409249,0.22527485080092,0.225255537651986,0.225267839932368,0.225282397603963,0.225275443875918,0.225145567953856,0.225831048594725,0.224033396772248,0.228832789224025,0.227869870741182,0.223085238163542,0.198350027233965,0.198470690500121,0.0185412921273685,0.0303146397014356,0.0288691527455903,0.0286890528339119,0.0292747788013755,0.029117140668672,0.0291686561742034,0.0291735838247492,0.0291782187586945,0.0291644353928782,0.0291573306334218,0.0292300874340608,0.0290067036808952,0.0294166419144125,0.0286692509120074,0.0281548886251606,0.0283932483346349,0.0346890026677063,0.0388001260422516,0.0390872894471359,-0.0295521839285089,-0.0285460067183955,-0.0286926746427066,-0.0284455650586082,-0.0286788569327933,-0.0284222761669523,-0.0284493672393918,-0.0284200247606394,-0.0284158956484961,-0.0284038389036106,-0.0284433128657628,-0.028382633261595,-0.0284352226280446,-0.0283800417188555,-0.0281810639538667,-0.0280088584539482,-0.0295360283651064,-0.0313792865124905,-0.0331901308826023,-0.0278189118739253,-0.139377038122821,-0.138329154372506,-0.139063552917778,-0.137813533763875,-0.137672779212262,-0.137188313456344,-0.136846390836575,-0.136593577721925,-0.136524814823317,-0.136490503973339,-0.136518278728095,-0.136532034728788,-0.136541266360774,-0.136576923984283,-0.136858436547944,-0.136820259835304,-0.13660300150718,-0.136235476273216,-0.137528429508141,-0.136247647772302,-0.440156481570912,-0.434684596460781,-0.435396973721506,-0.433793133814771,-0.432774812235696,-0.431390183860057,-0.430227428809005,-0.429149901919999,-0.42846427616241,-0.42833886047622,-0.428270855817902,-0.428146422966502,-0.428297114330156,-0.428475982498007,-0.429200018759611,-0.430775726244487,-0.432876340118747,-0.434563938964984,-0.437582639293725,-0.428544311763604,-1.19549543642006,-1.19715799242539,-1.19229090179383,-1.18869400863756,-1.18522583334742,-1.18163359165673,-1.17835575553915,-1.17545172111967,-1.17359127651999,-1.17264296202057,-1.17235747945845,-1.1724757715419,-1.17286865238141,-1.17408855666712,-1.17673837613961,-1.18059627532601,-1.18509825674859,-1.18927585378221,-1.19597691636131,-1.18903312606478,-2.72685441770344,-2.74506827057335,-2.73063578937834,-2.723036694689,-2.71443209048838,-2.70599196691036,-2.69912960856163,-2.69356380983379,-2.68953142353778,-2.68776580626218,-2.68783699315929,-2.68779154269118,-2.68849598651456,-2.69237700027171,-2.69910432313584,-2.70749080264388,-2.717545498623,-2.72837158411514,-2.73778353097014,-2.75256992459389,-4.89124103429938,-4.92007997884104,-4.89341042197863,-4.87702843679328,-4.86495314470326,-4.85132327079922,-4.84186639018666,-4.83464273134202,-4.83107558314148,-4.83072415452022,-4.8303612105217,-4.83024391639598,-4.83343479906664,-4.83879320505469,-4.84770586119961,-4.86060366800659,-4.87485102882596,-4.89540103386408,-4.90502250738391,-4.95009037897371,-6.62107709741589,-6.64311890875059,-6.6199757044417,-6.59090562249877,-6.57522075194421,-6.56161875270924,-6.55046622533875,-6.54607608279341,-6.54443166728537,-6.54317103717262,-6.54265674115618,-6.54428406395499,-6.54716800282468,-6.55172175708488,-6.56072649831822,-6.57376031139658,-6.58992739213312,-6.61243356839655,-6.62861228630328,-6.66063726345971,-6.49675434532741,-6.47348569593256,-6.48026291925778,-6.46679534787226,-6.45288600091998,-6.44733151028738,-6.44369936460664,-6.44331541966349,-6.44264059565467,-6.44222674022566,-6.44234132102711,-6.44412430804676,-6.4463136262042,-6.4499909525815,-6.45497371667437,-6.46527777530239,-6.47166225503681,-6.49557858336692,-6.49963582640544,-6.49500986413861,-4.21600265718118,-4.09732102959192,-4.06515535922814,-4.05860552015142,-4.04418126287255,-4.03869041510121,-4.03642611173379,-4.03449392170931,-4.03361508392499,-4.0323908408087,-4.03281253838351,-4.0341476330698,-4.0357390800658,-4.03854559508327,-4.04105238480703,-4.04621400908819,-4.05469290238466,-4.05483620378569,-4.0953450171841,-3.98814551142391,-1.34262404030654,-1.43546218215094,-1.42727517652663,-1.43025620716626,-1.43373470760614,-1.43273714926282,-1.43308914686856,-1.43332502286191,-1.43217851212744,-1.43229253818833,-1.43188987037554,-1.43242645028963,-1.43314240334274,-1.43393996442438,-1.43370381249335,-1.43463317729371,-1.4395955165326,-1.4414904844017,-1.46613132077655,-1.55719491583549,0.972444782417176,0.998697696122565,0.975064557562064,0.995112988235798,0.986612247214502,0.974607459453881,0.969651028755435,0.963538046394041,0.961531606695692,0.960202754631825,0.960347440629216,0.962033015850617,0.965118373949917,0.970624783427682,0.978361868412285,0.990358574504232,0.999004630752541,1.00324751885657,1.04606282047553,1.10202693115379,3.90721605646206,3.95692541633882,3.89846919368824,3.8525112703701,3.84853947657327,3.82114529583753,3.81687452587776,3.80911814405326,3.80577901424415,3.80416939965348,3.80394476464187,3.80545098707568,3.80907628299545,3.81504362335997,3.82513635237162,3.83431642695112,3.86171843032431,3.85204265179161,3.85534376784511,3.91530333916661,5.62914538943151,5.71030369273715,5.79789133315665,5.75025794760943,5.7756794799369,5.75934755861709,5.75426934950889,5.7499522362257,5.74711831150113,5.74572926078327,5.7452711765236,5.74581458138048,5.74763028273055,5.75056958575494,5.75784009410988,5.76650434665795,5.77582199753034,5.82266165845523,5.7619705282912,5.85828628573096,5.13219324814735,4.99736378869883,5.1528347240259,5.02792088890346,5.02383789340277,5.01613651081825,5.01198665105751,5.0099803366134,5.00868656703459,5.00827317475499,5.00836783137542,5.00871221272754,5.01038250893224,5.01246219873633,5.01657540005006,5.02315358432061,5.03341174907592,5.00664682669438,5.08011734562872,4.35054985998106,2.86064090634898,3.19223701892446,3.31133933920004,3.33549868577726,3.3254552642756,3.32570199005649,3.32444930003892,3.32375776305242,3.32353505730082,3.32295891192705,3.32285258243128,3.32266230794547,3.32214349497217,3.32186957151132,3.32213392712274,3.32136675660211,3.33836119373353,3.30829968561948,3.3687034229983,4.02037037535166,1.86448116722149,3.29872742321238,3.50461332056443,3.52458966284832,3.52248581343264,3.52526979048129,3.52475545346068,3.52473180644029,3.52488165710844,3.52477364976957,3.52475810940013,3.52488173871132,3.52474065606485,3.52481379506712,3.52502003097549,3.52290349567677,3.5279784837604,3.51147829480073,3.32421562998002,2.94776457058937,2.25381977059589,1.90395191665021,1.90470927368252,1.93358885739243,1.92664640407931,1.92708891495126,1.92735956330769,1.92725334340829,1.92723205078962,1.92728198896842,1.92727014527951,1.92723283782636,1.92731854851442,1.92714631932815,1.92748168218054,1.92978319680217,1.91942878255413,2.00993899652475,1.84066814692869,1.81189562977748,0.568222702258274,0.608356656521866,0.649133376009133,0.631995690476319,0.637944717117205,0.636775990523117,0.636855106894152,0.63685926845734,0.636842499568849,0.636855985656188,0.636836850843077,0.636829390534554,0.636855974303041,0.637027589971947,0.635158771543705,0.641615518683485,0.61447074255554,0.640181739652115,0.660778931362045,0.744489969598006,0.286295086846816,0.261295053570145,0.254992474323375,0.260501636883923,0.25793233555185,0.258797780494459,0.258641774218015,0.258699808986891,0.258680044470527,0.25869292518579,0.258708767956073,0.258704023448441,0.258547503700495,0.259356386377593,0.257243497094508,0.262852163017687,0.261637173517918,0.256394197468226,0.228308035152683,0.228488307924897,0.0228850616653591,0.036191309622419,0.0344982496602869,0.0343251615729125,0.0349975724341193,0.034816695277192,0.0348806625800405,0.034885771770885,0.0348906301396205,0.0348761675877397,0.0348665207719941,0.0349514689638393,0.0346914310616131,0.0351699574188152,0.0342992737859546,0.0337336094805981,0.0339649217967828,0.0410569841224003,0.0456704924089663,0.0458584312308748,-0.0315350896902978,-0.0302352796199113,-0.0304013475648599,-0.0301433069955892,-0.0304050847572958,-0.0301131990559207,-0.03014224172978,-0.030105892709951,-0.030101617609482,-0.0300878146058763,-0.0301332157669443,-0.0300618514543816,-0.0301272627144307,-0.0300573276284031,-0.0298383754992884,-0.0296337506416961,-0.0313588835796567,-0.0334278335734365,-0.0354931102470184,-0.0291777978278579,-0.154801658988896,-0.153845604520707,-0.154590368738447,-0.153188822565094,-0.153019516567796,-0.152462670513469,-0.152070792051195,-0.151779798781472,-0.151693833051833,-0.151655366571736,-0.151688454311943,-0.151700241228451,-0.151711321700821,-0.151755542333804,-0.152077741144437,-0.15203781226435,-0.151813639975862,-0.151378213175897,-0.152890814270971,-0.151331243178592,-0.493632372737234,-0.487841883629136,-0.48847324950394,-0.486746423952436,-0.485589639186775,-0.4840285080313,-0.482704309084977,-0.481477110447395,-0.480704701650549,-0.480544390048355,-0.480459417336295,-0.480333161567137,-0.480503803471489,-0.480709131226562,-0.481545892956083,-0.483340580325204,-0.485732455455659,-0.487608369475862,-0.491157120785031,-0.480018304070716,-1.34223906818197,-1.34567965128331,-1.33966560512075,-1.33565703218634,-1.33171184614453,-1.32765825997669,-1.32396789321474,-1.32071352289656,-1.31860824686561,-1.31751626382544,-1.3172118497961,-1.317339016588,-1.31776532316656,-1.31917188632611,-1.32220952957848,-1.3265552933532,-1.33164787227091,-1.3362330776697,-1.34424990722059,-1.33457388752493,-3.05795828072912,-3.08099969572377,-3.06442734562451,-3.05592251523324,-3.04629944742573,-3.03680560659782,-3.02918402919888,-3.02294689620857,-3.01852902375777,-3.01664691378114,-3.01666411364846,-3.01661788597001,-3.0175247732561,-3.02188071730619,-3.02938704697058,-3.03875062568201,-3.0500770452775,-3.06201995165688,-3.07322033204746,-3.08796190148474,-5.46623056626047,-5.49874832142207,-5.46923262434269,-5.45043444544664,-5.43711685648284,-5.42198933098221,-5.41152438188208,-5.40383399940786,-5.40010740951288,-5.39966821027506,-5.39926976350513,-5.39931392856402,-5.40280020110148,-5.40871480499036,-5.41850452880144,-5.43271340680614,-5.44851260960395,-5.47133176551051,-5.48217801715398,-5.53311761078838,-7.35162293646659,-7.36994237896889,-7.34664263239206,-7.31396994050909,-7.29693571208337,-7.28224597966081,-7.27041750764233,-7.26585581502377,-7.26404740413277,-7.26271040359602,-7.26223234597417,-7.26401443752276,-7.26717621337119,-7.27218067506227,-7.28187036151233,-7.29592611344175,-7.31340990185001,-7.33847414644366,-7.3551997941201,-7.39583846536044,-7.13142321925171,-7.0953183351357,-7.10656363257592,-7.09159678711176,-7.07666561137996,-7.07159522504845,-7.06816732437968,-7.06800768483736,-7.06747036749402,-7.06709510568772,-7.06728958230596,-7.06922400093041,-7.07168128351798,-7.0756563857302,-7.08070559154449,-7.09154068355076,-7.09740906724868,-7.12411070248968,-7.12502046389963,-7.12909347616248,-4.51605562473755,-4.3693430717718,-4.33475334505484,-4.32858722825588,-4.3129479918886,-4.30678388053551,-4.30427011299741,-4.30207791193879,-4.30099280009406,-4.29970241130742,-4.30012378177673,-4.30161015330091,-4.30341344731353,-4.30646108379905,-4.30908603014083,-4.31465754491558,-4.32383050903918,-4.32313382506393,-4.36961364341886,-4.2451916117899,-1.35588435097042,-1.47419031388343,-1.46201742618282,-1.46452078168602,-1.46848735218324,-1.46697326073539,-1.46707715121584,-1.46716890557597,-1.46581401064265,-1.46589484082796,-1.4654762141685,-1.46607327013304,-1.46688947518254,-1.46795468341498,-1.46805880198118,-1.46944969025341,-1.47536094970637,-1.47721895396918,-1.50259102263883,-1.61794967519911,1.08503429115633,1.11261664155274,1.08316079516665,1.10505119477804,1.09496315223984,1.0813104482461,1.07561306241137,1.06837311898143,1.06600726248531,1.06447566767053,1.06470023235794,1.06668513810181,1.07036969487203,1.07690363906199,1.08584152971797,1.09990224569508,1.10964107118281,1.11434485180292,1.16498637303267,1.23174569500219,4.36075816522104,4.41685839011571,4.35477181451172,4.30251884041184,4.29787397119447,4.26610854439177,4.26111953134533,4.25210496542679,4.2482442281694,4.24635762377953,4.24611065069421,4.24788967584135,4.25212573467734,4.25914545882627,4.2708810207906,4.2809231877249,4.31349757466965,4.29934491396715,4.3060327497013,4.38303380952183,6.34800270151927,6.4295791921467,6.52899186548063,6.47400385695363,6.5045694691199,6.48556410169649,6.47977174629972,6.47472865287415,6.47142795884557,6.46979594000656,6.46925759997759,6.4698625158727,6.47193369709049,6.47532578083076,6.48382222569274,6.49384968355349,6.50322602033562,6.56074350941189,6.4802278810467,6.59523959634087,5.80689366014697,5.6491158677495,5.83532061469883,5.69052496489949,5.6853382686393,5.67620903358198,5.67130449540574,5.66893236096911,5.66743033340959,5.66693440757484,5.66704412031241,5.66749547456707,5.66947744616559,5.67191780142529,5.67691176902604,5.6845632792809,5.69719059913739,5.66376209541086,5.74457531948007,4.95370463050477,3.24320327763325,3.64543624769462,3.78158874970894,3.80855760529372,3.79676004781931,3.79694186228285,3.79542897605069,3.79458159605698,3.79427602208192,3.79361412768726,3.79348034785566,3.79321739631949,3.79266826351367,3.79231334620151,3.79269100199591,3.79179058035249,3.81249854558392,3.7777692870499,3.84642901423191,4.49083158329802]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1105.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1105.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1105.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1105_field1":[16.68,16.6970137406894,16.7081429608765,16.8248515278431,17.0363632693305,17.2861008788616,17.4976888139139,17.6049713130898,17.577039836865,17.4214103400207,17.1788655295757,16.9152787448542,16.705946996636,16.6106639722276,16.6171724877171,16.6173320875114,16.6108553878879,16.7060080652732,16.9152123975038,17.1786545501363,17.4210725200941,17.576630260089,17.6045578351681,17.4973333511884,17.2858385759384,17.0361845717479,16.8247310842143,16.708055604905,16.6968815028141,16.68,16.7005515928465,16.2400090189971,15.7140737577522,15.2543279511778,14.9197112709577,14.7108825554856,14.6021905988998,14.5668149441617,14.5899820066063,14.6718081347691,14.8256782106694,15.0742923357251,15.4362606814003,15.8966828342574,16.3813828080214,16.8171955060081,17.3659486773286,18.2003404122722,19.2537050252972,20.3612075655688,21.3251687549747,21.9497646904589,22.0939357907077,21.7152393815657,20.8944555925153,19.8264219610936,18.735685586874,17.8002620811273,17.1536083523471,16.7005515947667,16.6326423342163,15.7429532036467,14.8085746091095,13.9872619564557,13.3480961103448,12.9023721801079,12.6350929393897,12.5281640395585,12.571356389542,12.765976007337,13.1231760552438,13.6576223720454,14.3706173623933,15.2202955697268,16.1126932225133,16.9924843498574,18.179887512661,19.9239811506477,22.1278992702474,24.5301597940433,26.7194987954629,28.2031416354966,28.5822295139795,27.718533681678,25.8195436998857,23.4075606878929,21.0311421470742,19.0414571324663,17.6037612667643,16.632642345459,16.5278777684945,15.2405133786512,14.0227890651975,12.9983774846321,12.2106616436042,11.6577822182662,11.3211217940644,11.1822913540908,11.2317693140791,11.4733610459119,11.9215198398055,12.5938731546629,13.4964936136586,14.5987306863633,15.820765620634,17.1501258848909,19.029043293039,21.798041497102,25.4403908323881,29.6514868409609,33.703140703631,36.5545664250451,37.320571998269,35.6961922929201,32.1173743813391,27.727238211342,23.6318669498926,20.3704963877228,18.0669219056526,16.5278777808645,16.4051520141911,14.7835865126442,13.3855780867752,12.2624881679308,11.4182747709396,10.8314500539384,10.4754043519571,10.3279702209137,10.3776739605506,10.6302874857451,11.1045946723683,11.8248289012142,12.8112750218252,14.0607515336881,15.5331515569705,17.2821728264501,19.823998576537,23.6236942376024,28.8518402031331,35.2325019246142,41.5947157509894,46.0748177640217,47.2488160768443,44.7387389065729,39.1268043715473,32.3341018929199,26.2558172819649,21.6470851582415,18.48997406564,16.4051520276678,16.2878534942863,14.4203445230294,12.9187141269021,11.756800179313,10.9027666817367,10.3182358596208,9.96845546506929,9.82530668092721,9.87241988146655,10.1172869442366,10.5846203831551,11.3062274336669,12.3165590266723,13.6411407395124,15.2871118229109,17.3757775734074,20.4615162949119,25.1480090603925,31.8316369197304,40.263561004808,48.63661534702,54.0919301308156,55.3235806405046,52.37667489728,45.2761234462913,36.3688835019034,28.4819567676865,22.6875333863458,18.8176928496508,16.2878535096135,16.1985670866873,14.1834072487954,12.630101465333,11.4571260030101,10.6095009281151,10.0382428577595,9.70257933366635,9.56801396679089,9.61175474407906,9.84326380127181,10.293840114105,11.0014729764469,12.0101673743228,13.3664284066818,15.1167399111127,17.4321707874925,20.8826276018602,26.1887027263143,33.9265039594695,43.7730419540312,53.1270753317697,58.2707980723524,59.1203996708198,56.5893769444615,49.1351633524615,39.0405048003884,29.9484284318328,23.3553438447187,19.0168045189456,16.1985671042994,16.1523749331074,14.0837763868422,12.5127392568503,11.3370980861243,10.4942178912982,9.9312327512316,9.60448267456641,9.4756314095484,9.5174546629553,9.74052147117591,10.1806582044301,10.878325421597,11.8814029029257,13.2466494914539,15.0426646402546,17.4628120036161,21.0799781323623,26.684727671868,34.9377280266795,45.3917955875885,54.8567618501977,59.3986840302463,59.9955468499476,57.845137012501,50.6162136149616,40.0950555261062,30.5132434132123,23.6070209915093,19.0845683250077,16.1523749527538,16.1558931416348,14.1199298334045,12.5578470285889,11.3806574499484,10.5333914710607,9.96579998152421,9.63513795194436,9.50466717463494,9.54719781688869,9.77352250176158,10.2166998067354,10.9158842457804,11.9182244994654,13.2802998589683,15.0708592031759,17.4724930339469,21.0517735227618,26.6048977355798,34.7676242736773,45.0635034016234,54.4470593258202,59.2400348217447,59.7409432978991,57.4079107676498,49.9432403732709,39.5375832132278,30.1993693898475,23.467442903958,19.0356788136151,16.1558931640623,16.2081210352858,14.290171432463,12.7688149906257,11.5953024545649,10.7373106306609,10.1547788166883,9.81015405823121,9.67097823047275,9.71669823966409,9.95420891472262,10.4103697309855,11.1198156329333,12.1243187134736,13.4701759433055,15.2018151413573,17.4540123206334,20.7769153955585,25.9032827645186,33.3517760630649,42.7579096210581,51.7389997191074,56.918245501038,57.711066632197,54.5566899105288,46.9986297794284,37.4610377375811,29.0761533752075,22.9616264734677,18.8761766253268,16.2081210628141,16.2972444944131,14.5854167589351,13.1510555535825,12.0020694902829,11.1410402598724,10.5457237496412,10.1869633348531,10.0394220177327,10.0876335403728,10.3356045050499,10.8035951964327,11.5199283964195,12.5166622132837,13.8198829885501,15.4280014899,17.3969417312823,20.2494660197774,24.5968068485411,30.7623290664706,38.4612770058841,46.0288559943809,50.8586401953009,51.6333909554772,48.3421788937886,41.7653792247105,34.0316581631976,27.2135318068459,22.0986302409365,18.599037049817,16.2972445283958,16.4023442915991,14.9787327189167,13.6973538661457,12.6214937605246,11.7922268507155,11.2087896971878,10.8524150730394,10.7035348309016,10.7505784035954,10.9963968324392,11.4568473001975,12.1542266948497,13.1081389177659,14.3171411781684,15.7243837852411,17.2972918716484,19.5167641517126,22.8455823276497,27.3855549194161,32.8448585598423,38.1495892930081,41.6290830206163,42.1793029526636,39.7419884065609,35.127054044446,29.7373114555975,24.8128031266418,20.9419613641983,18.21212661471,16.4023443297607,16.5029247936226,15.4310795571753,14.388812697892,13.4725597094915,12.7499297085993,12.2360438458337,11.9193606011018,11.7845359596505,11.8233372775879,12.0393418173002,12.446992131094,13.0648913877988,13.9018183005916,14.930352323829,16.0506764187979,17.1627480728171,18.6770537893123,20.9213724047959,23.8507651445562,27.1840481027257,30.290608186013,32.3034314285255,32.6341153777148,31.2457181328733,28.5796119296317,25.3508878542064,22.2303334560712,19.6377390427771,17.7575067064497,16.5029248297339,16.5807996969028,15.9042469109866,15.2053149554783,14.5796152720368,14.0911512207641,13.7493620575039,13.5398396666022,13.4480001113516,13.467852579395,13.6050711820525,13.8765997688555,14.3037557926083,14.8951558315979,15.616527114497,16.3614259433905,17.0058696992786,17.8394246817129,19.0840308634494,20.6645154815311,22.3743009487511,23.8970605882433,24.8660168577734,25.040763193108,24.3993148483423,23.1128315578701,21.4754698008997,19.802840907468,18.350627812512,17.2907452661037,16.5807997225749,16.620408652298,16.3760049505202,16.1353425160539,15.978603267882,15.9156996574203,15.9142060011524,15.9325501828396,15.9403631143273,15.9252895663403,15.8962962976898,15.8846821543738,15.9350483074301,16.0841823307881,16.3334084595342,16.6213619583574,16.8296767391168,17.0629173736436,17.4711764932032,18.0308907084661,18.6500720582449,19.2030703692145,19.5595016485016,19.6346722465111,19.4145946731076,18.949763589893,18.3396413501149,17.7092513930301,17.1793156937167,16.8348852071955,16.6204086613505,16.6204298596285,16.8350204253477,17.1794092694506,17.7092880581386,18.3395435710118,18.9494921012035,19.4141705835454,19.6341658732326,19.5590020955087,19.2026594230763,18.649780151232,18.0306870722279,17.4710364005575,17.0628701517073,16.8297035736204,16.621230132959,16.3332823339688,16.0841836337549,15.9351418539635,15.8848472343806,15.8965346457184,15.9255936721001,15.9407027008544,15.9328794655311,15.9144731228445,15.9158623488125,15.9786368937938,16.1352438028181,16.3758207731163,16.6204298550832,16.580857121112,17.2907995400635,18.3507186239337,19.8029714262456,21.4755057060787,23.112657693351,24.3988951487618,25.0401390308258,24.8652922457168,23.8964004031343,22.3738230239807,20.6641940909232,19.0837885676828,17.8392697569872,17.0058080552684,16.3612402476089,15.6163368743129,14.8950686792758,14.3037606800787,13.8766722430461,13.6051970796244,13.4680235813302,13.44820397948,13.5400565449355,13.7495616132564,14.0912911375051,14.5796439898205,15.2052018557248,15.9040893428999,16.5808570954197,16.5029740040823,17.7575089940773,19.6378378452158,22.2305520607565,25.3511024891621,28.579687276685,31.2455854326385,32.6337088431399,32.302721248108,30.2897985080455,27.1834368814548,23.8504104561836,20.9211588162399,18.6769140365928,17.1626538805421,16.0505205310363,14.9301783359501,13.9016990378165,13.0648346668719,12.4469919348695,12.0393875844436,11.8234187895904,11.7846425698648,11.9194803181901,12.2361590989362,12.7500104626889,13.4725691985878,14.3887385580139,15.4309819311968,16.5029739679527,16.4023608016504,18.2121060529747,20.9420545198946,24.8130515127705,29.7376539429357,35.1274414203212,39.7424826265937,42.1797651701956,41.6291554022297,38.1492336231633,32.8444697487097,27.3853466571686,22.8454871376247,19.5166903977576,17.2972200734186,15.7242964444459,14.3170319103188,13.1080352260352,12.1541461282783,11.4568025156427,10.9963894509051,10.7506019640097,10.7035777642772,10.8524663874082,11.2088407265082,11.7922658769303,12.6215077904025,13.6973348601264,14.9786961753957,16.4023607634629,16.2972326362017,18.5989871127479,22.098663857406,27.213688819824,34.0319264999123,41.7658070159621,48.3429410583746,51.63437106794,50.8596244777517,46.0294649722981,38.4615288920199,30.7624370588153,24.5968676757114,20.2494731462652,17.3969211380163,15.4279863323467,13.8198419710486,12.516593534704,11.5198537218719,10.8035365698801,10.3355727876644,10.0876277128594,10.0394319431987,10.1869803199597,10.5457467349219,11.1410707229527,12.0021057794184,13.1510877907019,14.5854257692891,16.2972326021797,16.208084083126,18.876080579906,22.9615519231477,29.0761415672273,37.4611120628885,46.9988118019034,54.5569338243023,57.7110787582187,56.9184213008162,51.7396784850611,42.7584215533983,33.3520711455499,25.9034526169471,20.7769918563624,17.4540460333806,15.20184767085,13.4701744659827,12.1242765210038,11.1197569588101,10.4103174266703,9.95417591751941,9.71668552825584,9.67097854345844,9.81016579773023,10.1548055671263,10.7373541803306,11.5953635154434,12.7688809114524,14.2902039857982,16.2080840555433,16.1558186194754,19.0355371644954,23.467268906622,30.1992082350441,39.5375084400125,49.9432137994114,57.4076048799169,59.7405963701571,59.2398021200961,54.4472257708134,45.0637480766912,34.7678725841502,26.6051011004617,21.0518984331979,17.4725640776959,15.0708968662657,13.2802920499462,11.9181810794096,10.9158311767461,10.2166548172163,9.77349443606601,9.54718524385458,9.50466518446138,9.63516087028012,9.96583830296355,10.5334435211568,11.3807225883229,12.5579090319997,14.1199451235442,16.1558186082297,16.1522575610817,19.0844165482694,23.6068215021319,30.513009440106,40.0948519277357,50.6160059195001,57.8447260579746,59.9955292797722,59.3987430764621,54.8569031559767,45.3918946794051,34.9378998096037,26.6849269717945,21.0801285649163,17.4628975585762,15.0426744623229,13.2466037623606,11.8813356008662,10.8782642577404,10.1806133546565,9.74049614719186,9.51744557863805,9.47563349079813,9.60450446157461,9.93126740438287,10.4942640118754,11.3371460897232,12.5127655130269,14.0837420633224,16.1522575413745,16.1984159377855,19.0166717699749,23.3551725919623,29.9481804595322,39.0401612975208,49.134746601776,56.5894187382294,59.1207618672023,58.2710264521306,53.1269819333197,43.7729753771538,33.9265416111233,26.1888067266607,20.882740450339,17.4322425390175,15.1167208433726,13.3663579849645,12.0100863963465,11.0014085166076,10.2937953540427,9.84323583397181,9.61174177756882,9.56801153731884,9.70259528743572,10.0382777924857,10.6095466996377,11.45716315302,12.6300993490247,14.1833323673894,16.1984159201375,16.2876719765106,18.8175817948401,22.6874083266849,28.4817605492586,36.3685385868473,45.2754376907708,52.3758714039365,55.3230480829933,54.0913083078444,48.6361672722643,40.263316034858,31.8315039340699,25.1479696272729,20.4615580360502,17.3758294500018,15.2870901390966,13.6410900333489,12.3164985569494,11.3061800495511,10.5845879278948,10.1172662036865,9.87240873471618,9.82530313218111,9.96847220681221,10.3182760515207,10.9028206341168,11.7568451359004,12.918715125647,14.4202645795143,16.2876719611871,16.4049200746729,18.4898830712647,21.6470525132013,26.2558216352446,32.3341763935876,39.1268196028632,44.7383240661147,47.2480059021429,46.0739523093938,41.5941298680721,35.2321103214168,28.8515520650331,23.6235402269307,19.8239863446214,17.2822085520481,15.5331454518687,14.0607523536839,12.8112537538721,11.8247976208647,11.1045599117037,10.6302534207989,10.3776444967864,10.3279505148767,10.4754074993561,10.8314820079996,11.4183304274819,12.2625479848457,13.3856058513646,14.7835313679393,16.4049200612364,16.5275281111765,18.0668083487742,20.3705235850014,23.6320415905226,27.7276532831338,32.1180382464503,35.6967969110945,37.3208057984422,36.5544862751906,33.7029358325384,29.6512077377963,25.4400990744283,21.7978551730286,19.0290107556093,17.1501407184418,15.8207877378175,14.5988005505151,13.4965118319885,12.593836507663,11.9214475591742,11.4732771255322,11.2316906375875,11.1822282151102,11.3210853487538,11.6577801852146,12.2106954973481,12.9984371659735,14.0228399572079,15.2404822522086,16.5275280988719,16.632072069708,17.6036806812622,19.0415910534013,21.0313697921549,23.4079983193226,25.8202251597487,27.7193423175198,28.5829302603566,28.2036003861942,26.7196923175524,24.5301174088273,22.1277254393938,19.9238264644062,18.1798405075112,16.9924572371931,16.1127675954807,15.2204395130415,14.3706620441212,13.6575529688764,13.1230353329857,12.765810148529,12.5711959933802,12.5280266734373,12.6349901139726,12.9023109952841,13.3480804244991,13.9872908792255,14.8086175598473,15.7429042562109,16.6320720585501,16.6994029495239,17.1531747572226,17.8003729184993,18.7358975875496,19.826735760912,20.8949125751168,21.7158276937586,22.0945515467317,21.9502894691402,21.3255143755898,20.3613387360864,19.2536649614078,18.2002337858987,17.365841078513,16.8170952096188,16.3815155649703,15.8968833085442,15.4363059488327,15.074189607319,14.8254721787429,14.6715461759646,14.5897081924953,14.5665650139797,14.6019889046087,14.7107397081878,14.9196251144444,15.254294420894,15.7140588347547,16.239906809275,16.6994029474704,16.68,16.6970137561712,16.7081430039624,16.8248515921796,17.0363633521202,17.2861009768802,17.4976889250006,17.6049714357109,17.577039969444,17.4214104803348,17.1788656018063,16.9152788874102,16.7059471253894,16.6106640670895,16.61717252379,16.6173320507723,16.6108552923843,16.7060079358095,16.9152122540475,17.1786544045103,17.4210724492159,17.5766301258247,17.6045577106867,17.4973332381533,17.2858384759753,17.0361844870949,16.8247310181544,16.7080555602335,16.6968814853559,16.68,16.7853389511754,16.7954078685688,16.8319670602125,16.9793978786241,17.2219706816841,17.4990675497725,17.730572204579,17.8470308093,17.8159836018314,17.6454749051478,17.3786481629783,17.084887203825,16.8438314085447,16.7205500097895,16.7103967987008,16.7104510807084,16.7203748896711,16.8431982594651,17.0837576119902,17.3770129392588,17.6434156322681,17.8136672378523,17.844668327598,17.7283771906564,17.497208543108,17.2205286475407,16.9783863053504,16.8313494791695,16.7950717224407,16.7843048801441,16.7917307766237,16.3462335188895,15.8388704550431,15.3996624803888,15.0844768468272,14.8920084594161,14.7949612338556,14.7650736297456,14.7868161583159,14.8603134386444,14.9997294266749,15.2292698029671,15.5700033898126,16.0102319401384,16.4787128450028,16.9089377509624,17.4763033709551,18.3455258118643,19.4391998795567,20.5878633943959,21.5876266786074,22.2358113091296,22.3858980324637,21.9936206707428,21.1426906492807,20.0350667547494,18.9025618483493,17.9291277351658,17.2527458143762,16.7917307938727,16.7297239003867,15.8549713624672,14.9352605812465,14.1254006855522,13.496329243487,13.0589010379031,12.7975593090492,12.6935344402025,12.7361990642571,12.9267732085821,13.2766711989478,13.8011330281905,14.5021668927643,15.3382037326803,16.2153982399387,17.0884537729262,18.2982675500183,20.0803701351532,22.3294396292486,24.7810744155239,27.0162533003316,28.5319108876323,28.9205416327376,28.040347059561,26.1024422943147,23.6405573736802,21.2146407164677,19.1812394243743,17.7100503667385,16.7297239365103,16.6321447243512,15.356830954458,14.1493933607235,13.1304955626205,12.3466950871624,11.7968079620426,11.4623265282074,11.3246383675909,11.3740545471388,11.6143419977034,12.0600489849687,12.7288069586126,13.6260659414256,14.719752489139,15.9287369961822,17.2544888913292,19.1575613467563,21.963415847698,25.6495556289385,29.9083244439777,34.002939179428,36.8830923287959,37.6593330775772,36.0244336678091,32.4119898082771,27.973140013911,23.8269321767347,20.5212930722528,18.1826083861862,16.6321447789838,16.5154267351464,14.9014763107733,13.5101868850112,12.3895650220835,11.5462848702018,10.9597933323997,10.6039465553802,10.4566716171384,10.5065024538366,10.7592377935323,11.2336235908993,11.9535385909861,12.9381707005157,14.1824975281927,15.644756672628,17.3937715142637,19.9583651929621,23.7905040947197,29.053279952051,35.463061436889,41.8386374291201,46.3164436957402,47.4905912971012,44.9916153519136,39.3816567974461,32.566876571849,26.4496304099484,21.8015431458662,18.6122471533241,16.515426804822,16.4001856297786,14.5370715965452,13.040155199968,11.8800518478948,11.026676888864,10.4423788137008,10.0928094223306,9.94985329268878,9.99696379586525,10.2417865163257,10.7092255559242,11.4308568485158,12.4402159397185,13.7612399275627,15.3996874866232,17.4900718156009,20.5949335016185,25.3072709879259,32.0115674835602,40.4422364693381,48.7827314501914,54.1947971262134,55.4120119504563,52.4952408193681,45.4454156908002,36.5614538206615,28.6599246601354,22.8367619763128,18.9406433863018,16.4001857090787,16.3095518011108,14.2975732280362,12.7486540563849,11.57820053482,10.7324163003505,10.1627814602901,9.82865337027361,9.69502706515821,9.7383774539811,9.9686070084258,10.417791422822,11.1240775485928,12.1309484487889,13.483730873254,15.2279918355239,17.5449971859254,21.0105537825664,26.3367075883514,34.0837597092746,43.9039106405259,53.1950015672528,58.2908357530697,59.1311272872636,56.6220180495912,49.2345954383148,39.194313671975,30.1074475659235,23.4952865349139,19.1363025809876,16.3095518863967,16.261570307432,14.1962231583298,12.6300273671305,11.4575596362685,10.6173926639596,10.0570315690978,9.73278433545115,9.60545317173711,9.64668180805245,9.86758364354573,10.3051566286121,11.0002730854322,12.0005557922218,13.3619400233379,15.1525726766538,17.5738490072628,21.2042110193052,26.8269094326517,35.0845875254623,45.5011123425321,54.8936267515395,59.4002784030687,59.9941583251388,57.8569022488294,50.6891345967888,40.2307402416809,30.6619419426214,23.7409721080655,19.2010628954503,16.2615703961746,16.2653972505341,14.2330374310652,12.6760444195101,11.5016518578085,10.6565625425433,10.0910520043484,9.76243567775857,9.63333275830376,9.67541037951989,9.89987660998363,10.3407985706131,11.0376703239165,12.0374024203599,13.3958746104462,15.181568563933,17.5845588508862,21.1780700078934,26.7509025719656,34.9206565162731,45.1814232862007,54.491642776566,59.2451918618019,59.7426689025575,57.428422598515,50.0265951058606,39.6778581200198,30.349904429578,23.6025949596901,19.1530273780277,16.2653973410879,16.3191603069035,14.4055237689186,12.8895764902674,11.7180712943679,10.8608792994712,10.2788679075099,9.93486567777085,9.79616410170109,9.84168584352114,10.0784638252681,10.5337856540276,11.2422677747537,12.2452466017274,13.588130290852,15.3146995207858,17.5685781030471,20.9093003763274,26.0611137627229,33.5268494053848,42.915753854607,51.8367505514153,56.9659095224055,57.7504098603655,54.632187526936,47.1304109325481,37.6275697437795,29.2398847507262,23.1043402382672,18.997294475403,16.3191603971961,16.4076973440594,14.7023061780612,13.2746733722638,12.1279505414799,11.2671914415495,10.6715121205313,10.3124126515269,10.1647058748047,10.2128352183858,10.4607958375034,10.9288326119704,11.6450007678864,12.6406926063637,13.9406950644888,15.5417750772248,17.5116720418901,20.3867410723802,24.7678006190056,30.9672703292418,38.6832512659816,46.2345615038696,51.0347915762809,51.8007807738564,48.5302261175941,41.9730677994139,34.2354087427671,27.3935421787176,22.2483412311849,18.7216273242139,16.4076974299931,16.5085700797049,15.0948418214949,13.82270203111,12.7514079820088,11.9242954761355,11.3419839103529,10.9862272330075,10.837508694235,10.8842355231122,11.1292934413121,11.5886109189655,12.2844053358444,13.2356746180035,14.4394412603015,15.8358604171159,17.4072033819987,19.6523701788644,23.0209153008809,27.6074341478366,33.1128218119476,38.4490126532258,41.9389148034526,42.4856101287711,40.0366945013113,35.3962957917821,29.9679378453311,25.0011522958732,21.0917516733296,18.3303848821249,16.508570155812,16.6027091685877,15.5437066688017,14.514022196722,13.607095081156,12.8916770836066,12.3832604314487,12.0701230603748,11.9366624096175,11.9745946372177,12.1876725937592,12.590710582493,13.2027165489461,14.0324242430421,15.0516293763327,16.1570645502305,17.2642141952857,18.8041559580194,21.0896031807234,24.0680734053231,27.4552272705491,30.6099430015169,32.6516002012789,32.9844331922513,31.5729759743262,28.8647148127286,25.5850602885796,22.415099846439,19.7802118812908,17.8665537695119,16.6027092287446,16.6750189395293,16.0115371816325,15.3290132858297,14.7198308165661,14.2467123303638,13.917324011137,13.7160473286536,13.6276076921444,13.6458359180048,13.7767100118566,14.0379413498987,14.4519356530425,15.0282809724723,15.7340616073996,16.4620210044708,17.0999537136145,17.9556990290615,19.238627829332,20.8639886076666,22.6212870212352,24.1863858786481,25.1820688568029,25.3608011668982,24.7003409795371,23.3772795919857,21.6944371359546,19.9757631480014,18.4824927879278,17.3908858028301,16.6750189781819,16.7119050664132,16.4777770503127,16.2577633356721,16.1265285378559,16.0892666439251,16.1095701882062,16.1431135666283,16.1576489688821,16.1400201622225,16.0996384505439,16.0694626840528,16.0965282225044,16.2201283721699,16.4456005676288,16.716854394351,16.9220243719662,17.1732741321666,17.6137989989734,18.2102421861202,18.8652926597173,19.4483425490946,19.8234842914437,19.90223084671,19.6700533231986,19.1799858552299,18.5361115688279,17.868705572903,17.3037887090782,16.9329226775563,16.711905079788,16.7119249881001,16.9328099808145,17.3033041129951,17.8677493706077,18.5345669225778,19.1778394369978,19.6674272627035,19.8993618951274,19.8206646339971,19.4458522867359,18.8633086172097,18.2088008293224,17.6128695293683,17.1728253037871,16.9219445676914,16.7168265413429,16.4458171262361,16.2207631217401,16.0975583607373,16.0708434719644,16.1013139339749,16.141895333202,16.1595868507907,16.1449577049833,16.1111685000277,16.09050064427,16.1273338683653,16.2581402005853,16.4778090253672,16.7119249813552,16.6750658287828,17.3906426039357,18.4818827592687,19.9746513737926,21.6925858120508,23.3745515677589,24.6968158831208,25.3567815269114,25.1780110116878,24.1828038051134,22.6185274103024,20.8620783395889,19.2374160243606,17.9550638686655,17.0997644021993,16.4619404083657,15.7341744025668,15.0287002029279,14.4526359765958,14.0388700997667,13.7778134744955,13.6470566715722,13.6288778693842,13.7172887788019,13.9184494977953,14.2476295857734,14.7204525397293,15.3292927061404,16.0115723890009,16.6750657900483,16.6027302274838,17.8662172024958,19.7795124636283,22.4138698134113,25.5829820769547,28.8615477315389,31.5687694889386,32.9795006777067,32.6464498099544,30.6053171643626,27.4517473099794,24.065808454099,21.0882669781179,18.8034696571154,17.2639657882144,16.1570024697458,15.0517147764828,14.0326990947862,13.2031626604577,12.5912985926121,12.188368319945,11.975362412134,11.9374644159413,12.0709187125204,12.3840026857554,12.8923072668363,13.6075502989783,14.5142668402367,15.5437781725608,16.6027301672676,16.5085445280859,18.3300182196826,21.0910327786246,24.9998969202112,29.9658186239857,35.3930917353626,40.0326161812642,42.4809910476014,41.933990205959,38.4443794948635,33.1092824010445,27.6051945774089,23.0196621497357,19.6517399973018,17.4069656171227,15.835845218881,14.4395381885515,13.2358622287706,12.2846723923189,11.5889524675405,11.1296982502061,10.884685907313,10.8379825943606,10.986702897554,11.3424404771403,11.9247072555706,12.7517446920699,13.8229310306109,15.0949445370956,16.5085444519357,16.4076388113708,18.7212729462956,22.2476682903027,27.3923751300261,34.2334836159524,41.9703239328128,48.527160988776,51.7977835409679,51.0317801361883,46.2315414577909,38.6807350686364,30.9655918376133,24.7668570765755,20.3862681368396,17.5115014346227,15.5418070003935,13.9408005482917,12.6408209761692,11.6451481818557,10.9290079674581,10.4610030076079,10.2130698488921,10.164957271454,10.3126722404709,10.6717766740656,11.2674565263805,12.1282029051346,13.2748811687759,14.7024158830443,16.4076387254026,16.3190831368907,18.9969820022645,23.103771716243,29.2389434124584,37.626119109167,47.1285453070208,54.6303518302963,57.7488050090389,56.9643323610636,51.8353939200355,42.9144811384789,33.5259361480755,26.0606020302724,20.9090509980752,17.5685064426741,15.3147568742517,13.588215684035,12.2453181621222,11.242331860069,10.5338560929906,10.0785494887391,9.84178765729427,9.79627843146947,9.93499574986381,10.2790192980791,10.8610512360586,11.7182570400526,12.8897474512399,14.4056156246754,16.3190830465681,16.2652997973776,19.1527842175242,23.6021931623629,30.3493112558958,39.6770873358266,50.0257361068648,57.4275489406205,59.7420261248036,59.2446562602188,54.4911702043928,45.1809650213371,34.9204122349085,26.7508286570197,21.1780628648381,17.5845878401436,15.1816164909181,13.3959012499165,12.0374032401489,11.0376638232616,10.3407984938616,9.89988997829678,9.67543591594418,9.63336790971629,9.76249912008968,10.0911355277995,10.6566636345132,11.5017665570637,12.6761487988066,14.2330751663607,16.2652997520881,16.2614524834828,19.2009318036442,23.740825170637,30.661808971789,40.230705166476,50.6891473417683,57.856641846225,59.9942087114848,59.4004363867967,54.8939997392304,45.5015064531155,35.0849801990472,26.8272335967695,21.2044235221824,17.5739594656048,15.1525830105834,13.3618825544299,12.0004719619477,11.000194735532,10.3050960160051,9.86754478220636,9.64666105849716,9.60544322214806,9.7327934867826,10.0570525157209,10.6174242990553,11.4575932038558,12.6300402848781,14.1961790107942,16.2614523947262,16.3094210739004,19.1363146206146,23.4954579753654,30.1078563763342,39.1950337525093,49.235480644643,56.6230974806185,59.1322414533623,58.2920176718712,53.1963069076385,43.9051551143199,34.0846935388844,26.3373198658114,21.0109168783179,17.5451583619527,15.2279618975026,13.4836004060049,12.1307863615738,11.1239263359577,10.4176624992084,9.96850087752449,9.73829210911171,9.69495398521783,9.82859582668715,10.1627378802675,10.7323797232777,11.5781560690308,12.7485800847087,14.2974535763319,16.3094209886225,16.4000364453966,18.9407885652683,22.8372472450515,28.6608951170543,36.5630320250592,45.4474004242566,52.4973769260386,55.4142711421494,54.1970978101269,48.7851975331762,40.4442925881189,32.0129342274858,25.3080830377695,20.5953937217434,17.490266074997,15.3996371627554,13.7610740555113,12.4399981492584,11.4306345814106,10.7090144669352,10.2415897354813,9.99678073839071,9.94967958651763,10.092654466588,10.4422450403954,11.026557694321,11.8799321675486,13.0400155831646,14.5369044024062,16.4000363661328,16.5152255022899,18.6124833258407,21.8022954360316,26.4511311381889,32.5694380614847,39.3852881306013,44.9957120003613,47.4945907296108,46.3202209402853,41.8420429958527,35.4656079801705,29.0548754001506,23.7914272213858,19.9588823135973,17.3939796189295,15.6447000008835,14.1823262864179,12.9379059422119,11.9532215514222,11.2332790825956,10.758881250447,10.5061453723225,10.4563244431355,10.6036266377231,10.9595121232912,11.5460449105466,12.3893582172488,13.5099972251788,14.9012875368999,16.5152254326749,16.6318112460099,18.1828495786906,20.5221644518518,23.8286614738548,27.9760768942675,32.416282892895,36.0296038175275,37.6645417615078,36.8877689231072,34.0067323753789,29.9109960721035,25.6511976569183,21.9643607292014,19.1580884560091,17.2546793706222,15.9286879595664,14.7195987176777,13.6257480295085,12.7283486883061,12.0594921361871,11.6137313442724,11.3734270874497,11.3240236036583,11.4617535849002,11.7963019717078,12.3462746220115,13.1301683050676,14.1491487635286,15.3566230721448,16.6318111914576,16.7291334401342,17.7102373380668,19.1821214794304,21.2162674859537,23.6431621726915,26.1061305091727,28.0448478733389,28.9252394405352,28.5362092638545,27.0197331056812,24.7835429596645,22.3309817352482,20.0812520344271,18.2987396139613,17.0885828587943,16.2153861847138,15.3380785832392,14.5017744144109,13.8004743471936,13.27581527824,12.9258017023993,12.7351830951982,12.6925333864008,12.7966251878372,13.0580786179451,13.4956555723868,14.1249028517324,14.9349299585708,15.8547215863242,16.7291334041168,16.7907357291862,17.2527426158764,17.9298565869371,18.9039101004593,20.0370735615275,21.1453902065065,21.996876331956,22.3893711052203,22.2391062623668,21.5904083263962,20.5899334928774,19.4405453096818,18.34628559346,17.4766373643529,16.9089630528424,16.4787485620233,16.0101183466416,15.5694951430825,15.2283681241513,14.998502916186,14.8588617512391,14.7852540568761,14.7635163330934,14.7935130789553,14.8907527390742,15.0834693127191,15.3989368113055,15.8384145230333,16.3458845087531,16.7907357121688,16.7831211636213,16.7954079517681,16.8319672294671,16.9793981176721,17.2219709722169,17.4990678770882,17.7305725556494,17.8470311711918,17.8159839617621,17.6454752505247,17.3786483221495,17.0848874825383,16.8438316335774,16.720550162144,16.7103968543434,16.710451023246,16.720374735515,16.8431980326323,17.083757331433,17.3770126190079,17.6434154585917,17.8136668758868,17.8446679636297,17.7283768374889,17.4972082136948,17.2205283549239,16.9783860642299,16.8313493078721,16.7950716374783,16.7837420108493,16.8573274116015,16.868942470427,16.930228856867,17.1062656552928,17.3769505991447,17.6784818963049,17.9276765958468,18.0522851862049,18.0185159724244,17.834861873822,17.5464734553038,17.225665609006,16.9555889353224,16.8057354659221,16.7781068382029,16.7780565451654,16.8051907644189,16.954254836611,17.2234572901905,17.5433890249864,17.8310478154467,18.0142542269727,18.0479345710625,17.9236073363066,17.674999741067,17.3742284037175,17.1043547119969,16.9290797904136,16.8683863511884,16.8573562296723,16.8581913771705,16.4261495624481,15.9369258275431,15.517018695991,15.219776051007,15.0422062916799,14.9556639542396,14.9307064193656,14.9511737409598,15.0171885156313,15.1435394875269,15.3556491205489,15.6766233377023,16.097841576204,16.5504221862482,16.9758363074833,17.5631974647434,18.4652711792653,19.5951600130989,20.7802357817908,21.8114433526234,22.4802474325238,22.63544209984,22.2312107544286,21.3538192697057,20.2113540171447,19.0418031186108,18.0337491278628,17.3284381204016,16.8581913949009,16.8019658531293,15.9404386317184,15.0341783728324,14.235135610605,13.6155485509955,13.1858798969222,12.9300404009825,12.8286846870549,12.8708465713187,13.0576599557715,13.4007353924808,13.9158043271124,14.605573688257,15.4290611067259,16.2927754345131,17.1608494139942,18.3943369467442,20.2113945184923,22.5006271190831,24.9956673882531,27.2708925267781,28.8143628750186,29.2111923965222,28.3165961548749,26.3448247949025,23.8393801331756,21.3699181878345,19.2975201105995,17.7935885725796,16.8019658938499,16.7123192273037,15.4463633031238,14.2476488502158,13.2335798339387,12.4533313646592,11.9062423868748,11.57381454292,11.4372011107964,11.4865465240074,11.7255599823361,12.1688827023043,12.8342263430011,13.7266447559557,14.8130009754546,16.0114446461481,17.3362948954118,19.2639998846375,22.1033667810402,25.8283513646892,30.1288868251381,34.2608312831248,37.1656974565089,37.9505881501122,36.3066070570546,32.6652701817289,28.1841929857348,23.9933264341625,20.6483952053086,18.2762572448895,16.7123192900395,16.6019858075255,14.9926438743398,13.6060363117448,12.486748064165,11.6436723766987,11.0570451018358,10.7010810645433,10.5537998153118,10.6037818459887,10.8568252561963,11.331598709622,12.0516825396397,13.0353895182308,14.2761502637237,15.731221679561,17.4832019321404,20.0706968544078,23.9324764337859,29.2261327472692,35.6614904008805,42.0485661977573,46.5241825522398,47.6982166234997,45.2087422900491,39.6008511088272,32.7671138916934,26.6155515989769,21.9323079710052,18.7125256245137,16.6019858868613,16.4891801789049,14.6272668656127,13.1324986753457,11.972390141627,11.1182784435412,10.5331408082417,10.1830052354199,10.0398579021618,10.0870606447872,10.3323938477703,10.8008353351507,11.5236568310884,12.5335907594987,13.8531703756591,15.4873893840685,17.5824491911597,20.7068170348065,25.443231572572,32.1664645113165,40.5964688504959,48.9086745368377,54.2833581814089,55.4883070493397,52.5974097585531,45.5914261756631,36.7275439861616,28.812623725365,22.9632657585264,19.0419547955094,16.4891802684039,16.3976336309549,14.3853834810926,12.8377959980039,11.6675061035281,10.8217494742163,10.2524483688962,9.91906111928892,9.78604420523991,9.82902007233888,10.0584922864414,10.5073538986273,11.2138441594079,12.2209612088874,13.5728800595388,15.3146753030004,17.6362948735313,21.1178197525682,26.463301004551,34.2196486553873,44.0175600923872,53.2540222604186,58.308250849741,59.1406118489522,56.6506174017269,49.3210518866086,39.3274672539107,30.2441664086014,23.6139409583965,19.2348195502318,16.3976337268537,16.3481517448497,14.2823833508784,12.7177225692752,11.5458777591439,10.7065481034717,10.1476407021664,9.82533756967933,9.69937336603601,9.73998083393087,9.95903554644902,10.3949269861913,11.089023037786,12.0887457501043,13.449139651668,15.2381071579532,17.6636290382252,21.3083043884261,26.9486070787701,35.2117517969374,45.5965036230014,54.9262491789317,59.4018603572451,59.993021301703,57.8675251697318,50.7531040930612,40.348642258998,30.7900156585964,23.8545819927821,19.297068674441,16.3481518445929,16.3522311257829,14.319775144368,12.7646298216995,11.5905693148584,10.7457712660208,10.1810707214689,9.85379228889473,9.72594058736466,9.76769737915249,9.99072538299259,10.4303278520114,11.1264202978679,12.1257382239193,13.4834215639571,15.2678392559099,17.6751871767705,21.2839017282764,26.875802525548,35.0530246546198,45.2841016532166,54.5309251304169,59.2497695810138,59.7443448448246,57.4465206386099,50.099494015356,39.7997679902656,30.4796129966915,23.7172927220209,19.2498157299333,16.3522312273471,16.4072104882139,14.4943213367029,12.9808721968352,11.8093078783799,10.9512888735987,10.368563512805,10.0243407117976,9.88577495705146,9.93125799954253,10.1679301814752,10.6234772302293,11.3324426615875,12.3357896253548,13.6781122763039,15.4028690800297,17.661202124131,21.0203416089752,26.1960321764614,33.6779418104919,43.0524766903993,51.921614722671,57.0075077236938,57.7846337439321,54.697521258473,47.2446624140074,37.7717203291095,29.3806910053611,23.2254497298911,19.0973159916591,16.4072105890134,16.494823644387,14.7924809719892,13.3690960049058,12.2231800064073,11.3616984558058,10.7649470261627,10.404998595238,10.256891032557,10.3050594879151,10.5534463394876,11.0221973483066,11.7391006930296,12.7350045651156,14.0335637015067,15.6305030762827,17.6039631868349,20.5018759572004,24.9137910723268,31.1437203409188,38.8747501679401,46.4118374160394,51.1865371066262,51.9451015924745,48.6924340395511,42.1523492151227,34.4111190087125,27.5479296172835,22.37521472551,18.8226993348599,16.4948237401035,16.591104382656,15.1842291547312,13.919254100659,12.8515755218054,12.0262038489241,11.4448552541049,11.0896431784302,10.9410556004001,10.9875051468539,11.2319215974884,11.6903104878164,12.384869863169,13.3341615563485,14.5338663590762,15.9220290240147,17.494340575364,19.7657190741411,23.1702505737417,27.7980542256277,33.3436974765572,38.7069058502483,42.2056697352937,42.7494971131245,40.2908027193977,35.6283961515601,30.1662875558249,25.1621299266256,21.2181252226257,18.4270083566146,16.5911044681417,16.6782791727143,15.629851177713,14.6111145048892,13.712720349657,13.0041299787681,12.5009298163322,12.1911741128946,12.0590175988981,12.0961493843624,12.3064866617741,12.7051814071824,13.3116313092428,14.1346379216788,15.1453158806037,16.2379336875189,17.3423587721009,18.9091285432456,21.2320205679702,24.2538801863283,27.6882498047832,30.8848497981575,32.9515383065979,33.2863353769012,31.8549567236106,29.1099799856684,25.7856905680318,22.5720650408122,19.8992556912404,17.9536526565585,16.6782792423554,16.7443359402459,16.0927965785206,15.4256131798323,14.8318875779005,14.3730712952552,14.0550834822292,13.8613252544952,13.7759764495135,13.7927421705899,13.917856470649,14.1696632950565,14.5714649212863,15.1337212699759,15.8246593241835,16.5368781968755,17.1696589341206,18.0491274222281,19.3677143765972,21.0329685104735,22.8320973759954,24.4343213138446,25.4534416601188,25.6357456454172,24.9587290792802,23.603634087624,21.8807636540251,20.1211906060484,18.5907636519742,17.4678193758559,16.7443359875402,16.7776723542017,16.554288896677,16.354380095695,16.2468838399538,16.2329788980231,16.2728295195895,16.3199011105667,16.3403912789146,16.3204787996098,16.2699526588825,16.2231641936976,16.229139247486,16.3291976037703,16.5319893093214,16.7864147407007,16.9888879670208,17.2592041941631,17.7303981928463,18.3601219607147,19.0471143685067,19.6567475184861,20.0484200924947,20.1303673349756,19.8875815749447,19.3752749242941,18.7014893022612,18.0008634705339,17.4036921370383,17.0064409419702,16.7776723715446,16.7776886970093,17.0060736215516,17.4026230270975,17.9989023379382,18.6984767590904,19.3712229693865,19.8827153470738,20.1250944702364,20.0432415110008,19.6521464933275,19.0434163979581,18.3574301808244,17.7286720419925,17.2583467177435,16.9886972075663,16.7864903300508,16.5325477955315,16.3304697379412,16.23111760848,16.2257813408636,16.2730941309807,16.323959395347,16.3439633650565,16.3232933060375,16.2757859581469,16.2353026222587,16.2484698661748,16.3552349074643,16.5545360641096,16.7776886882875,16.744365171182,17.4672645064802,18.5894431860721,20.1188242681676,21.8770070950618,23.5983261524359,24.9520664202221,25.6282964035801,25.4460197341411,24.4277931023683,22.827038362651,21.0294564206186,19.3655228568041,18.0480002131569,17.1693329314299,16.5368978481192,15.8250725562002,15.134649763158,14.5728714003514,14.1714663732777,13.9199614449567,13.7950402479834,13.7783413485185,13.8636175937633,14.0571563913978,14.3747804289953,14.833108654124,15.4262848731088,16.0930204938786,16.7443651238288,16.6782609579926,17.9529640356334,19.8977481861112,22.5693793407623,25.7813150182048,29.1035692716227,31.8466803977325,33.2768858075293,32.9419568625121,30.8764123563947,27.6818984217628,24.2496965556938,21.2295506084365,18.9078826039935,17.3419441919992,16.2379588243561,15.1456587003416,14.135310092576,13.3125897522363,12.706372623866,12.3078514422863,12.0976248712432,12.0605368717732,12.1926659415662,12.502315618778,13.005320710241,13.7136260468826,14.6116772913705,15.6300870467508,16.678260888321,16.5910269964338,18.4262848169946,21.2165877176582,25.1593726608053,30.1617245695837,35.621645171671,40.2822296682782,42.7399008146917,42.1958475814334,38.6980621905948,33.3370369535395,27.7937883226848,23.1678329842847,19.7645213849387,17.4939252725513,15.9220798876624,14.5341688657008,13.3346439205377,12.385492222836,11.6910497694461,11.2327527994213,10.9883981148729,10.9419763891323,11.0905578093589,11.445729210136,12.0269963785251,12.8522385717801,13.9197309673391,15.1844673585706,16.5910269109323,16.4947117510239,18.8220335698323,22.3738329669429,27.5454476412402,34.4070345681358,42.1465134169979,48.6856683504954,51.9382819524607,51.1796886536523,46.4053058473517,38.8695239741066,31.1402736372,24.9118431783952,20.5009161851126,17.6036342344402,15.6305781170904,14.033816252182,12.7353331899563,11.739475333589,11.0226132490478,10.5538999396451,10.3055425695358,10.2573918188914,10.4055081365796,10.7654594181532,11.3622028598582,12.2236511388601,13.3694799853631,14.7926891893431,16.4947116552917,16.4070897090543,19.0967840252659,23.2243872614466,29.3788285920836,37.7687752752772,47.2408164387374,54.6937038820753,57.7814869588709,57.0042540043437,51.9183079443617,43.0494693759932,33.6758380359705,26.1948410047046,21.0197629026278,17.6610204997401,15.40294968962,13.6782858069068,12.3359773802242,11.3326319657766,10.6236719198273,10.168134481862,9.93147298299323,9.88600176381193,10.0245883999718,10.368840062274,10.9515906378048,11.8096198234936,12.9811491810005,14.4944719693039,16.4070896082344,16.3521097800855,19.2494703712981,23.716663179608,30.4785911008331,39.7983151134733,50.0978335238775,57.4451098968676,59.7434166661122,59.2489416505843,54.529842424123,45.2829621606531,35.0522950339182,26.8754514047048,21.2837604187031,17.6751720700518,15.2678971958575,13.4834836672131,12.1257846315666,11.1264611964793,10.4303722738823,9.99077806693607,9.76775735646779,9.72600888255592,9.8538933967381,10.1811978531288,10.7459210414196,11.5907339190883,12.7647771375835,14.3198355426312,16.3521097292916,16.3480340073545,19.2969596159334,23.8544884756713,30.7899831800316,40.3487714214041,50.7533278168798,57.8673977506316,59.9931359347261,59.4021219984138,54.9268444138874,45.5971850366486,35.2123625155794,26.9490554785889,21.3085786353786,17.6637644402637,15.2381182072043,13.44907043055,12.088645549983,11.0889278832728,10.3948514931655,9.95898477530798,9.73995064578874,9.69935278239154,9.82533493671619,10.1476480865659,10.7065649046651,11.5458962367376,12.717721525938,14.2823292383054,16.348033907593,16.3975256687438,19.2349798915842,23.6144564057188,30.2452263041812,39.3292269092678,49.3231922532241,56.6526959785513,59.1424505219686,58.3103353002562,53.2566650889365,44.0200793691251,34.2214663539391,26.4644194749139,21.1184341343475,17.6365477353883,15.3146356348558,13.5726889721875,12.220717109935,11.2136054689202,10.5071410096074,10.0583096583779,9.82886571214118,9.78590446185317,9.91893304177136,10.2523272849975,10.8216297510306,11.6673782567487,12.8376485187327,14.3852189018878,16.3975255728435,16.4890686956121,19.0423626627908,22.9643633145193,28.8147520615148,36.7310096335418,45.5959921392476,52.6023581302559,55.4932341488012,54.2884538193296,48.913951430992,40.6007710204128,32.1693110084968,25.4448917862252,20.7076990066386,17.5827914608761,15.4873137239198,13.8528893421273,12.5332141934558,11.523257131825,10.8004425674136,10.3320179791374,10.0867029129067,10.0395112704969,10.1826753753745,10.5328293650819,11.1179822490193,11.9721024694348,13.1322164515155,14.6270134507159,16.4890686061356,16.601823734317,18.7131006446833,21.9338530515701,26.6185455738245,32.7721355172667,39.6080272833851,45.2172223313092,47.706874889905,46.5324712729192,42.0558738971277,35.666929734596,29.2295965539304,23.934476816043,20.0717505913325,17.483591834983,15.7311202131315,14.2758081692683,13.0348795857659,12.0510749117741,11.3309365949548,10.8561358480663,10.6030851609916,10.5531127161458,10.7004262154907,11.056440476891,11.64312897097,12.4862697276457,13.6056277103068,14.9923243703902,16.6018236550225,16.7120117704867,18.2768613937528,20.650117133244,23.9966175971225,28.1896483695499,32.6731713692607,36.3163017378867,37.9607184990042,37.1750843198828,34.268593740228,30.1344966206786,25.8319260190262,22.1054488147382,19.2650972788566,17.336673459645,16.0113314584836,14.8126260452007,13.7259890976657,12.8333395587143,12.1678292637832,11.7244065458576,11.4853518593541,11.4360157206659,11.5726872076874,11.9052172552198,12.4524454716068,13.2328598656098,14.2471076457732,15.4459844877999,16.7120117078088,16.8013788618942,17.7940871622494,19.299168471823,21.3729522615445,23.8441649184305,26.3515319061569,28.3248040169277,29.2199052042573,28.8225203711432,27.2776768625394,25.0006614936094,22.5038963690742,20.2133230266835,18.3953397155122,17.1611489897904,16.292683215529,15.4286693974838,14.6047420940777,13.9145472725571,13.3991482421568,13.0558614928217,12.8689506523318,12.8267949477917,12.9282517728133,13.1842770012287,13.6142034756064,14.2341042912959,15.0334765060223,15.9399872394959,16.8013788212597,16.8572235924737,17.328790364761,18.0351185213967,19.0442969284818,20.2150707307338,21.3587866799633,22.2371677231725,22.6418120800333,22.4863522380283,21.8166951578149,20.7842700448719,19.5979073291451,18.4669071046676,17.5639832678659,16.975995970281,16.5503657362845,16.0974147337759,15.6755578200837,15.3539364657703,15.1412719430159,15.0145197875186,14.9482920097835,14.9278097615601,14.9529402363101,15.0398144964361,15.217831748628,15.5155946766121,15.9360250767366,16.4255830338627,16.8572235749033,16.8556810115896,16.8689425669209,16.9302290468737,17.1062659153809,17.3769509099402,17.6784822434288,17.9276769664379,18.052285567226,18.0185163508994,17.8348622370096,17.5464736230212,17.2256659044064,16.9555891778012,16.8057356375952,16.7781069050939,16.778056476727,16.8051905912152,16.9542545926063,17.223456993218,17.5433886879219,17.8310476330094,18.0142538467592,18.0479341882641,17.9236069639149,17.6749993921339,17.374228091114,17.1043544500991,16.9290795985892,16.8683862530251,16.8551684752485,16.9042255066056,16.9232772752477,17.0078910639323,17.2097522778699,17.5052503805026,17.8281386824356,18.0927433649658,18.2244618072457,18.1883681031263,17.9933298054248,17.6861856678878,17.3416825276332,17.04574998871,16.8714552576179,16.8262747089395,16.8261192280022,16.8705386470013,17.0437097101603,17.3383819416952,17.681630886591,17.9877335236463,18.1821299903274,18.2180922491513,18.0867729982354,17.8230131587212,17.5012354793373,17.206936371788,17.0062098354748,16.9224958114127,16.9075809527033,16.905323080747,16.4855930559399,16.0136331458686,15.6113451876032,15.3302213931186,15.1658767849193,15.0885959796489,15.0679787179209,15.0873433258116,15.1468035400835,15.2616435086738,15.4582588289653,15.761351812075,16.1651553597611,16.6024002695507,17.0238848965221,17.6314406221644,18.5633443195118,19.7249664703563,20.9416028066115,21.9999198031228,22.6864280548636,22.8459540642832,22.4313848191147,21.5311831180184,20.3586464989123,19.156961387945,18.1185002084002,17.3859342781663,16.9053231002773,16.8552966787742,16.0050799034229,15.1111155040914,14.3220462715624,13.7111422354933,13.2885295742853,13.0376517045604,12.938690288389,12.9804005632023,13.1638367234451,13.5007446009383,14.0072506211217,14.686661454442,15.4987783832997,16.3505537247945,17.2153503982568,18.4720772828659,20.3201008983876,22.6442803306538,25.1767588688545,27.4863651471982,29.0536020320522,29.4573664877918,28.5504084043584,26.549657105349,24.006864741577,21.4998075152629,19.3936316420876,17.8595376946095,16.8552967264067,16.7737851894078,15.514945833202,14.3236441465118,13.3138640689272,12.5368640052421,11.9923911159397,11.6618892662952,11.5262828295903,11.5755571410292,11.8133556539228,12.2544037859012,12.9165306057614,13.8045441365675,14.8845885559171,16.0745009824111,17.4004831366586,19.3515555405424,22.2204458013736,25.9791489135082,30.3156017602019,34.4794356585805,37.4052372982798,38.1973500781557,36.5456605035766,32.8798768087448,28.3628142041389,24.1334387408752,20.7544026442127,18.351980602287,16.7737852623493,16.6697833505126,15.0629426761168,13.6795507395484,12.5609059622976,11.7176601935674,11.1307045743266,10.7745134733502,10.6271757603733,10.6773273255282,10.9307319831602,11.405970209041,12.126409054854,13.109687287658,14.3479888657225,15.7980664861121,17.554762429206,20.1637937873552,24.0518049665357,29.3723726801704,35.8297500123008,42.2265364881406,46.7001103701018,47.8738717377421,45.3924439514112,39.7866099487149,32.9368759188201,26.7556924984805,22.0417508683471,18.7943756151295,16.6697834407277,16.5595212709096,14.6968297532408,13.2024784084099,12.0411715467327,11.1853660060375,10.5985997133197,10.2472675755663,10.1035878084412,10.1509844656938,10.3973214958983,10.8674713216577,11.5923000991269,12.6038214830597,13.923369833002,15.5556485057895,17.6568742373055,20.7997647685696,25.5578016577411,32.2978775402926,40.7275822944938,49.0155713733621,54.3584216212557,55.5530794892334,52.6840854748363,45.7154403101583,36.8686548614773,28.941825330806,23.069253497389,19.1249014855138,16.5595213712538,16.4673787262546,14.4528140717684,12.9044675052473,11.7325657975638,10.8852184951777,10.3148766051893,9.98125462228568,9.84842015789695,9.891115906386,10.1205505777312,10.5703327753362,11.2785320815437,12.2875454852608,13.6404408383825,15.3821657794426,17.7098847159229,21.2069120716919,26.5701571535019,34.3353149665528,44.1146796271398,53.3044716912837,58.3231352725071,59.1488278839743,56.6752297605753,49.3950059890626,39.4409720915544,30.3600533598459,23.7133728397931,19.3154828026602,16.4673788331993,16.4166608770255,14.3482889445584,12.782836086999,11.6095596474067,10.769214435468,10.2103746664053,9.8892913322643,9.76448686196307,9.80446227911041,10.0221139864543,10.4574383715347,11.1521779782308,12.1533118260911,13.5148465030735,15.3046111840168,17.7359210474622,21.3947055890866,27.0514000129358,35.3201960534834,45.6783688563894,54.9545740646208,59.4033524208667,59.9921040848725,57.876901052828,50.8082448406737,40.4494829078557,30.8987572625385,23.9498268651864,19.375650871851,16.416660988135,16.4209650674978,14.38618907399,12.8306278477982,11.6549862568789,10.8087010697009,10.2433414137905,9.9164571600816,9.78961864569152,9.83120954396638,10.0533591872389,10.4927957943476,11.1897342475828,12.1905396227238,13.5495012391815,15.3349906275347,17.7481651708685,21.3717547546946,26.9812556331482,35.1658250904063,45.3720890950316,54.5649314690983,59.253768547987,59.7459149619889,57.4622183378957,50.1621983447334,39.904064478591,30.5897917404248,23.8135097390945,19.329110414818,16.4209651803058,16.4769349803317,14.5625743661904,13.049628507413,11.8765638156573,11.0164466369223,10.4318684580633,10.0865197051766,9.94765774463249,9.99326464697535,10.2305229579925,10.687339569428,11.3980249863004,12.4031506419618,13.746564347325,15.4716385663499,17.7357744781872,21.1126115074888,26.3098742999254,33.8064628832304,43.169129963346,51.9941752374559,57.0432398588766,57.8139593065868,54.7532411829173,47.3422308669309,37.8946462323187,29.5001127679014,23.3270511261853,19.1793779925758,16.4769350916388,16.5634976901953,14.8618842104252,13.4410096798831,12.2949784374441,11.4322196571366,10.8340179058152,10.4729291623754,10.3242660441015,10.3725429804223,10.6216138644765,11.091454020746,11.809605651527,12.806476076525,14.1047495620585,15.699568487407,17.6779563662316,20.5975920600199,25.0368593658458,31.2935357873992,39.0375959886187,46.5624555552757,51.3154146599004,52.0677596506056,48.8303531321707,42.30488344393,34.5604913907457,27.6785791331379,22.4815399114268,18.9055521883284,16.5634977954433,16.6551764751521,15.2527930444558,13.9933979779873,12.9286725805253,12.1048183919144,11.5243904851513,11.1697234566437,11.0212626467431,11.0674424301118,11.3112554714785,11.7687974334149,12.462296417558,13.4100158341103,14.6064921469583,15.9884360245144,17.5633125010039,19.8597801546724,23.295882426024,27.9596391924246,33.5398419414334,38.9259397348604,42.4321477933126,42.9736516719483,40.506802592215,35.8256532230983,30.3345337075733,25.2979695363042,21.3236493292131,18.5056711264431,16.6551765694912,16.7352267353211,15.6953889673254,14.6861461556446,13.7954958361926,13.0932208607995,12.5948396075292,12.2881923372427,12.1572333198787,12.1936414947465,12.4014769129516,12.7961828926968,13.3975084796908,14.2143838231394,15.2173087462088,16.2990142063495,17.4025104383163,18.9955608946139,21.3512454432489,24.4107726448172,27.8858003385795,31.1182618208702,33.2063563464125,33.5429071667924,32.0945641962694,29.3181060779475,25.955356558642,22.7038781563301,19.9978726937423,18.0232645304132,16.7352268142301,16.7945753348858,16.1538985323397,15.500784429524,14.9211808829675,14.4752921013057,14.1674755201138,13.9803725501012,13.8977454696185,13.9132147164244,14.0332268343015,14.2766370232059,14.6674615630689,15.2169026011167,15.8940442637809,16.5917783450441,17.2209783179029,18.124332495672,19.4746506716017,21.1745686149732,23.0098372021792,24.6440583592059,25.6833925234922,25.8688417115076,25.1776394932159,23.7949574539117,22.0374816249758,20.2423130070953,18.6791914103547,17.5268992633984,16.7945753922771,16.8236391399477,16.6113331498378,16.4303187667865,16.3443219661141,16.3511225258011,16.408083543686,16.4669250177965,16.4925689052046,16.470647260081,16.4112682979895,16.3499434248194,16.3373081480417,16.4162732339978,16.598112581522,16.8358631040212,17.0363685180709,17.3260054965164,17.8252009349181,18.4842862191842,19.1991168058552,19.8318233819393,20.2378429880889,20.3226092424961,20.0706933443308,19.539149750658,18.8393771572652,18.1096159936869,17.4835532139833,17.0611065578104,16.8236391627608,16.823647814997,17.0604785814042,17.4818958069245,18.1066396591321,18.8348788632132,19.5331667301824,20.0635557889106,20.3148994639468,20.230275121839,19.8250874420773,19.1936884229251,18.4803345775418,17.8226735959159,17.3247342093807,17.0360625885945,16.8360412212103,16.5990120555488,16.4181848482954,16.3402434553219,16.3538129333282,16.415898346242,16.4757604491177,16.497804008109,16.4718924765136,16.4124208722794,16.3545522095021,16.3466970280364,16.431652747063,16.6117959720461,16.8236478035613,16.7945777204895,17.5260231253575,18.6771539944589,20.2386824679523,22.0318049598541,23.7870481293537,25.1678127310424,25.8579353188273,25.6725822963454,24.6345654955342,23.0024654417265,21.1694446149924,19.4714715098483,18.1227038104604,17.2205075686705,16.5918920257935,15.8947555926368,15.2183424521161,14.6695827727799,14.2793289563671,14.0363526295763,13.9166124579139,13.9012283622305,13.9837377817739,14.1705144970798,14.4778065557891,14.9230081184897,15.501848723019,16.1543080806941,16.7945776630809,16.7351593146477,18.0222146263945,19.9955500929037,22.6997317506608,25.9486800722847,29.3084499907522,32.082219736549,33.5289462505607,33.1923503776551,31.1060162779668,27.8765755614279,24.4046636003743,21.3476325630851,18.9937442468461,17.4019188761767,16.2991195184312,15.2179072681863,14.2154565148123,13.3989877568435,12.7979903180249,12.4035270953132,12.1958430366927,12.1594887129911,12.2903981396549,12.596884109595,13.0949831380918,13.7968577337449,14.6870274248069,15.695785204697,16.735159235748,16.6550394871201,18.5045824775457,21.3212886243794,25.2937123892858,30.3275413201207,35.8153899366162,40.4937945978403,42.9591573673521,42.4175033952811,38.9129359959108,33.530082146265,27.9533501504988,23.2922949120731,19.8580057174809,17.5627092742782,15.9885470673506,14.6069997818512,13.410796878354,12.4632821199997,11.7699459331157,11.3125270854612,11.068793445822,11.0226460599445,11.171091798521,11.525694264644,12.1060007083802,12.9296669458157,13.9941236208498,15.2531634540974,16.6550393927961,16.5633270114028,18.9045696478423,22.4794477987699,27.6747895926248,34.5542744629057,42.2960174744973,48.8199853310749,52.0572377762344,51.3048510300257,46.5525020280104,39.0297034677078,31.2883340132522,25.0339064828026,20.5961396359958,17.6774615194512,15.6996827793097,14.1051497530545,12.8070088207835,11.8102141793218,11.0921195086741,10.6223248250278,10.3732865369897,10.3250283310859,10.4736998382358,10.834787440954,11.4329702101312,12.2956724468961,13.4415713184538,14.8621890626086,16.5633269061582,16.4767677816456,19.1786241681951,23.3254948183952,29.4973358519618,37.8902302483018,47.3364563174183,54.7475167833824,57.8093287517449,57.0383692337494,51.9889838725158,43.164426576649,33.8031820086405,26.3080049608159,21.111700338774,17.7354785017724,15.4717405834415,13.7468270154426,12.4034575319064,11.3983436683234,10.6876631008409,10.2308501031384,9.99359624527017,9.94800037746964,10.0868888178535,10.4322742031818,11.0168818617491,11.8770045664363,13.0500129238567,14.5627832855025,16.4767676703282,16.4208191202733,19.3286624533159,23.8126526027121,30.5883437105315,39.901940189635,50.1597599414331,57.4602928903954,59.7447089643508,59.252656727413,54.5632603510366,45.370285041886,35.1646157881111,26.9806273323244,21.3714774561882,17.7481038884922,15.3350579546755,13.5495994571849,12.190633088243,11.1898241303312,10.4928853831206,10.0534498967869,9.83130059297927,9.78971633000406,9.91659363750274,10.2435115153386,10.8089000406236,11.6552015594826,12.8308188049791,14.386272311128,16.420819063859,16.4165440444197,19.375565121355,23.9497875040103,30.8988248374922,40.4497729223568,50.8086724719601,57.8768947223242,59.9922804597948,59.4037207637542,54.955384393127,45.67933163477,35.3210226516041,27.0519720910382,21.3950411639676,17.7360811968998,15.3046229864442,13.5147653813803,12.1531952399113,11.1520661619842,10.4573485893425,10.0220528534491,9.80442510817813,9.76445715452114,9.88927764530218,10.2103683826722,10.7692157685765,11.6095622649057,12.7828206479193,14.3482250201051,16.4165439332892,16.4672960996066,19.3157945674121,23.7142334697515,30.3617600200792,39.4437529193913,49.3983653411418,56.6782768702358,59.151369578605,58.3260844292541,53.3084054698206,44.1184459691153,34.3380070654048,26.5717801445211,21.2077784424212,17.7102310460105,15.3821174204782,13.6401885386684,12.2872179926381,11.278204051093,10.5700341375311,10.1202906192145,9.8908934347037,9.84821556246032,9.98105657007608,10.3146765843619,10.8850130111217,11.7323519856904,12.9042449453708,14.4526048464076,16.4672959926523,16.5594526767677,19.125577656183,23.070965531615,28.9451054184232,36.873980939143,45.7225196826917,52.6917482077251,55.560577929198,54.3662134075188,49.0235794354698,40.7340879099057,32.3021882316395,25.5603073402081,20.8010709323662,17.657369079565,15.5555503042508,13.9229733227758,12.6032837065135,11.5917186059608,10.8668908065162,10.3967591034311,10.1504438628798,10.1030598255229,10.2467544810847,10.5981029733565,11.1848864851113,12.0407113557497,13.2020514231623,14.6964913878699,16.5594525764319,16.6696685504574,18.7952986298107,22.0440947234295,26.760178165214,32.9443380507498,39.797277194448,45.405210278577,47.8870734044007,46.7128091066325,42.2376769773224,35.8380466093827,29.3776925195988,24.0548823089702,20.1653895045377,17.5553416491879,15.7979251193329,14.347476410151,13.1089293417097,12.1255044561836,11.4049808547232,10.9296974030885,10.6762771051578,10.6261344357886,10.7735101588631,11.1297648394171,11.716804326033,12.560150407415,13.6789212426401,15.0624954176848,16.6696684602616,16.7735138015326,18.3529578035784,20.7569814184029,24.1382973683673,28.370785912933,32.8913701734307,36.5598486492946,38.2123622153464,37.4192997056804,34.49114570891,30.3241399961094,25.9846548751295,22.2236689973797,19.3532309596412,17.4010591250861,16.0743302884015,14.8839937801206,13.8035479582947,12.915207551668,12.2528417823833,11.8116443240735,11.5737784322133,11.5245096623377,11.6601914158695,11.9908330032207,12.5355022986712,13.3127454686107,14.3228053556249,15.5144008727774,16.773513728616,16.8547254313045,17.8603727639678,19.3960606468227,21.504256084414,24.0138391681245,26.5593923544568,28.5623348971408,29.4701089519962,29.0656351692274,27.4964696134877,25.1842907703828,22.6492855466611,20.3230833861197,18.4736183699595,17.2158312294479,16.3503886386328,15.4981215116451,14.6853878492553,14.005385865477,13.4984115831273,13.1611928220974,12.9776041576062,12.9358910936567,13.0349893861816,13.2861302849808,13.7091145029125,14.3204760256401,15.1100429296565,16.0044318013579,16.8547253837161,16.9043454581864,17.3866036059009,18.1205243191134,19.1606081353917,20.3640858160136,21.5384374985774,22.440069331485,22.8552522832688,22.6953748299496,22.0076699388128,20.9476223461403,19.7291292711275,18.5658638627359,17.6326845960871,17.0241876800925,16.6022572584925,16.164415415009,15.7597254825314,15.4557238388353,15.2583169674881,15.1428948719797,15.0831163773416,15.0637170085168,15.084573547894,15.1623305736098,15.3273283152895,15.6092179063404,16.0122879187425,16.4848190867497,16.90434543875,16.9057819738627,16.9232773882332,17.0078912750543,17.2097525575295,17.5052507094933,17.8281390471055,18.0927437527137,18.2244622049863,18.1883684977347,17.993330184039,17.6861858429628,17.3416828372365,17.0457502457431,16.8714554471884,16.8262747874794,16.8261191482009,16.8705384561709,17.0437094518677,17.3383816307826,17.6816305350831,17.9877333336373,18.1821295942732,18.2180918499306,18.0867726089826,17.8230127925309,17.5012351488165,17.2069360905835,17.006209622771,16.9224956968864,16.9019997577983,16.9322993136561,16.9629713373592,17.0686619583327,17.2930838210622,17.6098468382368,17.9509184569544,18.2286176842129,18.3663913505553,18.3283632838674,18.123707343068,17.8006586770539,17.4359512780735,17.1177015547514,16.9215991682432,16.8599686797861,16.8597082976623,16.9203109478205,17.1149522478415,17.4315479122388,17.7946171770804,18.1163080423109,18.3201258661903,18.3579805855628,18.2207272694428,17.9441357386538,17.6045311808091,17.2893604134808,17.0664502148935,16.9619644817867,16.9417017047967,16.9378786520891,16.529285093339,16.0730871173734,15.6863418770846,15.4192371375899,15.2662861430638,15.1969465721361,15.1800521183496,15.1984945694795,15.2523751962666,15.3573688517843,15.5406337942514,15.8280993157433,16.2164785650214,16.6395854921569,17.0579685543563,17.6845736008124,18.6425506075819,19.8311755781222,21.0744725366521,22.1555992473963,22.8569520125854,23.0200667467179,22.5967695332084,21.6773741777595,20.4795211270282,19.2507065231124,18.1865042177054,17.4293062387573,16.9378786760881,16.8943019662045,16.0535220946461,15.1704801134556,14.3902971399452,13.7870691329015,13.3706539085266,13.1241046122409,13.0272272010363,13.0685541518476,13.249068215451,13.5806028478786,14.0795868067962,14.7498040482132,15.5519311451347,16.3933334081016,17.2562703205912,18.5343189095856,20.4088017490965,22.7625812398416,25.326561695293,27.6649988856266,29.2520883592347,29.6615941759451,28.7442691319053,26.7192847453842,24.1452230770149,21.6064867528568,19.4719063824082,17.9115940402707,16.8943020238341,16.8206011430325,15.5671193432286,14.3820350424844,13.3760231588995,12.6019340245649,12.0598380053303,11.7310844522608,11.5963876801964,11.6455929535763,11.8822859822267,12.3212629753893,12.9804687414442,13.864549735118,14.9392317194716,16.1222600985195,17.4506124213725,19.4225515177854,22.3166253687659,26.1038245036859,30.470419131578,34.6608697680504,37.6040239451671,38.4020540006357,36.7439724588752,33.057950401322,28.5109205873392,24.2491598214523,20.841238810177,18.4126792088798,16.8206012278312,16.722490856355,15.1168316005987,13.7356503300326,12.617292609416,11.7737548010531,11.1864627566895,10.8300716369139,10.6827086411048,10.73303912921,10.9867576354397,11.4623836861126,12.1831690704201,13.1662413381712,14.4028219278195,15.8494596815017,17.6115370246762,20.2397360518202,24.1502051014541,29.4935842000468,35.9694390683887,42.3742213084346,46.8459419483843,48.019350716402,45.5446182056258,39.9407414112373,33.077816569891,26.8717262998873,22.1316929311397,18.8603762156932,16.7224909578738,16.6146621610133,14.7502064585481,13.2553065343185,12.0922520179692,11.2343493786049,10.6456166471372,10.2927754822076,10.1483590222552,10.196030802706,10.4436619750169,10.9158317755954,11.6429653524169,12.6564883457764,13.9767579423179,15.6084913675308,17.7162224087609,20.8757262910664,25.6524839182028,32.4070578304844,40.8366636964168,49.1043532333949,54.4206622767335,55.6068500410225,52.7560223089447,45.8185198752733,36.9860120279664,29.0489445390636,23.1564335785625,19.1919013428094,16.6146622720764,16.52214646484,14.5043675844005,12.9541482818663,11.7796703741713,10.9296880045084,10.3571693839832,10.022281113112,9.88910983170432,9.93171003568282,10.1619645533382,10.613828283773,11.3247945795962,12.3366194708678,13.6914647972212,15.43443094149,17.7685644204786,21.2797068612241,26.6585961333849,34.4316891128005,44.1958444442512,53.3466265961184,58.3355609221672,59.1557558104204,56.6959028463286,49.456854313799,39.535653071692,30.4562874946976,23.7951836578533,19.3806224796009,16.5221465825076,16.4704339554042,14.3985005320503,12.8309826221289,11.6550436012998,10.8122402455876,10.2519662057341,9.93107068201071,9.80709089516007,9.84649672895806,10.0634692131802,10.4995962451268,11.1964713763462,12.2003170797387,13.5641853785838,15.3560383915944,17.7935017693219,21.4652657646372,27.1365347273843,35.4107147143491,45.7470503240096,54.9785640814925,59.4046942177217,59.9913770909041,57.884946853552,50.8546722381052,40.5338578978954,30.9892028010731,24.0282345941645,19.439094903481,16.4704340774715,16.474944866541,14.4368418083935,12.8796164696686,11.7013161969437,10.8522964530202,10.2848715051006,9.9571796283593,9.83088117958443,9.87247169859596,10.0945264427226,10.5351238528309,11.2342999420145,12.2378168545289,13.5991956282709,15.3869610144862,17.8062899313159,21.4435113993685,27.0685728361717,35.2599464967119,45.4458466903879,54.5936891174297,59.2571857026632,59.7473339343251,57.4755253325387,50.2149337220964,39.9913725039469,30.6814816653047,23.892770208447,19.3931897273581,16.4749449900806,16.5317320216749,14.6148104714745,13.101236021084,11.9259678712223,11.0631109910627,10.4759693080374,10.1287679260921,9.98918755662035,10.0350703978994,10.2735154523812,10.7323329483749,11.4454528580214,12.4530752053685,13.798425553374,15.5249466773337,17.7951661498834,21.1880501895611,26.4040968552453,33.9135543628763,43.2665849979061,52.0549212469619,57.073283354484,57.8385738543978,54.7998038949828,47.4238182618275,37.9972950857377,29.599382223012,23.4107610851866,19.2457934064261,16.5317321428435,16.617274739278,14.9150267847666,13.4955517587674,12.3489562974329,11.4847783895168,10.8851044835887,10.5228515348731,10.3735841702013,10.421964582626,10.6717623662609,11.142760382997,11.862297248272,12.8604281441226,14.1590357750676,15.7529876193949,17.7366949192676,20.6759077034752,25.1386509587663,31.4182012385783,39.1732776244561,46.6878731052737,51.4227027387183,52.1699312008844,48.94527186125,42.4320364514963,34.6849108049995,27.7869915059926,22.5690753308042,18.9725881088227,16.6172748532622,16.7046751683007,15.3050758879942,14.0500235903261,12.9877504558399,12.1652464045891,11.5857033287843,11.2315808438813,11.0832522311973,11.1291717242211,11.3724069892125,11.8291532008947,12.5217011866235,13.4681164139266,14.6619911018408,16.0392919293305,17.6174961469503,19.9366794942444,23.3996248642846,28.0939459821174,33.7031543839682,39.1082776349222,42.6206276150092,43.1602716792035,40.6867325275025,35.989938742711,30.4744260295085,25.4104328410496,21.4102799683141,18.5689912806516,16.70467527032,16.7778831603614,15.7449410860353,14.7437358847645,13.8599412265878,13.1632846810412,12.6691746244765,12.3652611129428,12.2353515886219,12.2711248578908,12.4767571518485,12.8679312179882,13.4646968063373,14.2761348510596,15.2721925451455,16.344814027097,17.4486304298395,19.0658904926182,21.4492898960064,24.5407715715656,28.0500111090635,31.3125273861324,33.4185490031702,33.7566217621217,32.2941225190341,29.4912441566541,26.0960938731741,22.8125922022684,20.0783092522385,18.0785258511561,16.7778832468714,16.8304734313831,16.1995631947571,15.5588080533475,14.9916975213722,14.5570685838385,14.258024320446,14.0766216809291,13.9963114995614,14.0106588985034,14.1262842305185,14.3624484797903,14.7437206733827,15.2819093203611,15.9466828033106,16.631539338242,17.2586001425216,18.1845305915657,19.5619116981943,21.2911683836261,23.1569252948531,24.8181018818824,25.8744826089619,26.0626348946829,25.3595408410678,23.9536289956683,22.1669262284807,20.3415510909547,18.7505179551475,17.5720848701763,16.8304734988213,16.854853311971,16.6535257233735,16.4894189287938,16.4222788193713,16.4468620896786,16.5183771268184,16.5871816397895,16.6171656331118,16.5935183892019,16.5266139707274,16.4529166433494,16.424344700264,16.4850292318167,16.6481972764792,16.8702887910267,17.069593763799,17.3775872373812,17.9013645939734,18.5855683495518,19.3240376951075,19.9762898827526,20.3944706515445,20.4816619207131,20.2220706767321,19.6742794542294,18.9524839527415,18.1978594839798,17.5467534791849,17.1012725782232,16.854853341348,16.8548493334465,17.1003812335884,17.5445074383153,18.1938604831119,18.9464862172925,19.6663458245906,20.2126383721584,20.4714910265739,20.3844918671927,19.967402380338,19.3168680406058,18.5803510994026,17.8980350110404,17.3758996953615,17.0691709846225,16.8705660303237,16.6494354026873,16.4875798413422,16.4282421663882,16.4580493513767,16.5327484443282,16.6002836463248,16.624084829205,16.5937447165496,16.5241128336486,16.4514104988192,16.4254494623258,16.4912307136514,16.654203585244,16.8548493187848,16.8304405597702,17.5708842592152,18.7477603054379,20.3366500108872,22.159318390954,23.9431017912146,25.3465296677852,26.0482507841731,25.8602667493642,24.8056318332219,23.1472322200708,21.2844258391596,19.5577399009241,18.1823947058809,17.2579787031705,16.6317395191434,15.9476888926601,15.2838609424881,14.7465621352644,14.3660393970849,14.1304446460151,14.0151725028238,14.0009295172163,14.0810763403447,14.2620438190876,14.5603991924207,14.9941367878884,15.5602646747021,16.2001552522487,16.8304404923801,16.7777597508469,18.0771098589502,20.075167734865,22.8069823368247,26.0871142096528,29.4783410259781,32.2777101251766,33.738152615097,33.4001228377531,31.2964765718149,28.0379121169861,24.5327326695384,21.4445275599639,19.0634953722124,17.4478532898665,16.3449927571821,15.2730446272011,14.2776101690209,13.4667030456398,12.8703643575219,12.4795047736354,12.2740660686954,12.2383572470398,12.3681944835022,12.6718897943113,13.1656276697995,13.8617646364076,14.7449362257891,15.745494370106,16.7777596643946,16.7044735478096,18.567532428525,21.4070936218221,25.4046782473044,30.4650155307704,35.9761886944842,40.6693327181375,43.1409358216955,42.6012142398516,39.0911492205948,33.6903105019364,28.0856358495593,23.394863335593,19.9343216578579,17.6166968419953,16.0394580522676,14.6627032568949,13.4691994103971,12.5230567807651,11.8307200877542,11.3741300792071,11.1309929643032,11.0851107535407,11.2334148062493,11.5874473210798,12.1668265195376,12.9890810596894,14.0509993660342,15.3055759478352,16.7044734458361,16.6170415930808,18.9712853918123,22.5662723078364,27.781900411315,34.6765816186656,42.4201856003051,48.9313740271683,52.1557951206947,51.408512171093,46.6745618643293,39.1627495707773,31.4112532888835,25.1346922651571,20.6739582566,17.7360282178978,15.7531378745785,14.159584000253,12.8611685281105,11.8631459284796,11.1436840980758,10.67274126868,10.4229804064962,10.3746199328584,10.5238944458575,10.8861404234508,11.485782000416,12.3498775667113,13.4962929233082,14.9154270162159,16.6170414791175,16.531516594087,19.2448163554446,23.4087113581759,29.5956958699107,37.9914253792255,47.4161526920425,54.792225790678,57.832502001965,57.0668397874044,52.0478928748738,43.2602135619001,33.9091059947666,26.4015501088491,21.1868041384543,17.7947522298629,15.5250683796845,13.7987780182904,12.4535039816793,11.4459056424835,10.7327918723587,10.273973412701,10.0355272187648,9.98965472720708,10.129266591758,10.4765108700336,11.0636844680128,11.9265405317041,13.1017295676313,14.6150775523337,16.5315164729181,16.4747740814028,19.3926391343592,23.8916857877643,30.679609482342,39.9885845428869,50.2117342998802,57.4731004819963,59.7458552005861,59.2557962213511,54.5914448975081,45.4433901751048,35.2582617437764,27.0676674140478,21.4430967201475,17.8061806486184,15.3870369317977,13.599330192895,12.2379585977597,11.2344408758789,10.5352609050474,10.09465626369,9.87259259142709,9.83100661061455,9.95735137629484,10.2850857898125,10.8525461832092,11.7015834768411,12.8798520515919,14.4369482847208,16.474774019625,16.4703189647956,19.4390335427825,24.0282499551107,30.9893700213476,40.5343062127092,50.8552988650894,57.8850545468909,59.9916137265286,59.4051708253783,54.9795842988479,45.748290150427,35.411755652458,27.1372299997834,21.4656621824499,17.7936862226254,15.3560506904571,13.5640919146038,12.200183711781,11.1963425475635,10.499491952931,10.063398347989,9.84645457167926,9.80705331119473,9.93104628927534,10.2519457455859,10.8122253122903,11.6550297829117,12.8309527488631,14.3984272593094,16.4703188427074,16.5220914859304,19.3810880464294,23.7963903629286,30.4586377336306,39.5394416806205,49.4614062203711,56.6998955176288,59.1589847364914,58.3393486496722,53.3518181761957,44.2008378391417,34.435248628229,26.6607222086466,21.2808254337676,17.7690052212461,15.4343744312778,13.6911504892362,12.3362068376932,11.3243745898091,10.6134402712746,10.161622980775,9.93141571490365,9.88883737959118,10.0220090680545,10.356885731045,10.9293926938624,11.7793678526034,12.953849461775,14.5041142765645,16.5220913682477,16.6146408261468,19.1928499794069,23.1587619981284,29.0533722646177,36.9931792886033,45.8280640975844,52.7663282835513,55.6168485432321,54.4310780988324,49.1150346287048,40.8453414662434,32.4128209670253,25.6558326699399,20.8774579899499,17.716872828187,15.6083724526136,13.9762453314366,12.6557865083513,11.6421971629087,10.9150564230469,10.4429037526509,10.1952963840473,10.1476383425226,10.2920685293052,10.6449256826873,11.2336797525783,12.0916148910996,13.2547329737918,14.7497844669594,16.6146407150795,16.7224301584357,18.8616535356011,22.1348399282651,26.8777029852398,33.0877057324748,39.954861791152,45.5616018081075,48.0370126368857,46.8629768806604,42.3891438089974,35.9805663588855,29.50075021037,24.154358420242,20.2418769340627,17.6123105639253,15.8492817456047,14.4021391583877,13.1652322204659,12.1819613021144,11.4610583068115,10.9853670978281,10.7316234446375,10.6813009726598,10.8287083942046,11.1851779362047,11.772578687684,12.6162548766824,13.7347983265663,15.1162594173663,16.7224300569137,16.8203746279975,18.4140372986619,20.8446791488504,24.2555897445251,28.5214069757108,33.0730245145828,36.762632165525,38.4219201776208,37.6227377544757,34.6765120790349,30.4818783762985,26.1112599411894,22.3209916073105,19.4248094017449,17.451391459481,16.1220368760057,14.938417810354,13.8632100691926,12.9787024644312,12.3191825194415,11.8800048138807,11.6432172107927,11.5940136658491,11.7288038815853,12.0577364414409,12.6000886108694,13.3745013981067,14.3808982334585,15.5664129092478,16.8203745431836,16.8937543379199,17.9127797196732,19.4751257079529,21.61235473127,24.1543932790393,26.7320540358566,28.7599222719108,29.6783773551381,29.2680101567731,27.6784357878104,25.336640626271,22.7693283944668,20.4128424924093,18.5364017302884,17.2569378257725,16.3931022815253,15.5510103178442,14.7480857259673,14.0771063543741,13.5775122982407,13.2455646924794,13.0648419026617,13.0235032566901,13.1205546362711,13.3674467803878,13.7843508460865,14.3881846082197,15.1690378316963,16.052684455337,16.8937542802645,16.9368882604403,17.4302724584686,18.1891911058161,19.2555108141796,20.486691131878,21.6869282753658,22.6081999069224,23.0323159463749,22.868764773992,22.1658691931861,21.0824935038733,19.8367638084688,18.6459584134594,17.686276983484,17.0584194109468,16.6393623214143,16.2154268615107,15.8259100545155,15.5372671773943,15.3529692548122,15.2472092045714,15.1929034577888,15.1744066936778,15.1916088868106,15.2615726868073,15.4153873158003,15.6835088895488,16.0713002906331,16.5283090087231,16.9368882364239,16.9399552176426,16.9629714693322,17.0686621898119,17.2930841181519,17.6098471829948,17.950918836683,18.2286180865982,18.3663917624955,18.3283636921221,18.123707734674,17.8006588582835,17.4359515993747,17.1177018231755,16.9215993724889,16.8599687697386,16.8597082067529,16.9203107425869,17.1149519784133,17.4315475898821,17.7946168135285,18.1163078459452,18.3201254567793,18.3579801724379,18.2207268658479,17.9441353576939,17.6045308348001,17.2893601151136,17.0664499820762,16.9619643484234,16.9302161732809,16.9467432973919,16.9914080695083,17.1152753521799,17.3586500866439,17.6929631471565,18.0489890438566,18.3374448752599,18.4802055094499,18.440620017772,18.2281055148924,17.8920215072864,17.5106805449453,17.1739348090235,16.9589807180811,16.8831955727797,16.8828333781302,16.9573249526779,17.1704761527335,17.5051675437927,17.8844822829354,18.218889513759,18.430368709417,18.4697399370726,18.3276234208115,18.0405417171257,17.6863432318483,17.3540197101999,17.1125377419264,16.9901789718293,16.964722761558,16.9596084511976,16.5608822053354,16.1182984210616,15.7447257964222,15.4893326299577,15.3458337472042,15.2830610230258,15.2692489955474,15.2869486711508,15.336247765645,15.4331276582386,15.605314712591,15.8797168005364,16.2549379566643,16.6658231438331,17.081784448302,17.725175688562,18.7049480292826,19.9157069042715,21.1807481691336,22.2804241847807,22.9938139792534,23.1598077762744,22.7293894098473,21.7943840034569,20.5759361934422,19.3250216407244,18.2399445858113,17.4615456031359,16.9596084834,16.9223480149363,16.0892865618368,15.2155081169008,14.4429036015376,13.8461726834545,13.4349744395569,13.1920504926847,13.0969182532674,13.1379370688871,13.3160264838671,13.6430775944486,14.135733585732,14.7981559774545,15.5918741314826,16.4245585632561,17.2866819871313,18.5830507960384,20.4792407368968,22.8572035647235,25.4467951496008,27.8086120032282,29.4117496256077,29.8258622181748,28.9001296443036,26.8555411857839,24.2561635869531,21.6916229005913,19.533986278712,17.9522340793743,16.9223480856921,16.8557112780355,15.6062276078344,14.4262121355261,13.4234033545792,12.6518191436638,12.111784802025,11.7845432537545,11.650627821095,11.6997710380536,11.9355159223848,12.3727116297469,13.0293949593273,13.9100975580596,14.9803685405487,16.1579163492783,17.4891400200646,19.4786791424136,22.3934139426339,26.2038467486851,30.5948847856297,34.8068226440162,37.7639041275488,38.5666418112219,36.9034358075693,33.2011896924013,28.6300140166792,24.3419593189599,20.9103595577517,18.4603356328115,16.8557113752545,16.7627527790375,15.1575353289897,13.7778844804543,12.6596562432893,11.8158383090277,11.2282818085826,10.8717633308716,10.7244219454551,10.7749167136565,11.0288598706154,11.5047575688641,12.225814828867,13.2087618503406,14.4441174990182,15.8883951171442,17.6556919557949,20.3000615306165,24.2290046647003,29.5910219393505,36.0818409264571,42.4929735686793,46.9630691730713,48.1361057787932,45.6667913847932,40.0646946252921,33.1912484426838,26.9649551269923,22.2035313417399,18.912365538844,16.7627528913007,16.657086667001,14.7905782526695,13.2947336108117,12.1298709861433,11.2699222667356,10.6792964643059,10.3249837099961,10.1798266428071,10.2278231035014,10.4767577460147,10.9508309591828,11.6801174542769,12.6956019119953,14.016858444692,15.6487729535197,17.7625474063165,20.9361556468611,25.7284471874896,32.495001521833,40.9245906375726,49.1757760840963,54.4706321333228,55.6500503324786,52.8138374829558,45.9015260422329,37.0806019942079,29.1350960174955,23.2261191421672,19.2447200974918,16.6570867878712,16.56434928043,14.5432516377385,12.9908112520256,11.8135412741853,10.9606246002892,10.3854271360049,10.0485731664962,9.91458961971241,9.95730590900367,10.1890714773101,10.6436538558417,11.3577041286961,12.3725058662149,13.7295678726838,15.4742791844283,17.8143528149379,21.3376092980704,26.7296474155431,34.5095162980942,44.2615255767883,53.3807119271959,58.3455833141056,59.1613805581374,56.7126771695145,49.5069226552204,39.6121756305414,30.533801976874,23.8606045767694,19.4319564627026,16.5643494077793,16.5118608152913,14.4362648705349,12.8662660378663,11.6872916611605,10.8413826380169,10.2785411923499,9.95652689326187,9.83272762958718,9.87182222038949,10.0892310775389,10.5274392308946,11.2272787436748,12.2342802637575,13.6008409027709,15.3951938452151,17.8383860580958,21.5213736233371,27.2049842005704,35.4839450230981,45.8028345191004,54.9981947995272,59.4058392239874,59.9908140121969,57.891597512139,50.892489751967,40.6022511206302,31.0621715826775,24.0909762294158,19.4890869580326,16.5118609471951,16.5165584646194,14.474975845081,12.915646537367,11.7344155575589,10.8822288084592,10.3119128723078,9.98229866687482,9.85582713223915,9.89757693411941,10.1204768625821,10.5633021938491,11.2654161279457,12.2720376827452,13.6361569622668,15.4265506972165,17.8515962317161,21.500585030834,27.1387788390698,35.336098756401,45.5057535833711,54.6172253193862,59.2600162672056,59.7485656235649,57.4864489009793,50.257890553281,40.0622022235913,30.7555072549765,23.9562412525111,19.4437298288462,16.5165585977148,16.5740135596324,14.6542501060952,13.1395687302134,11.9619971233478,11.0963870749047,10.5065828992243,10.1572402338249,10.0166811728246,10.0629350386846,10.3028577543251,10.7638761398282,11.4795383812828,12.4897435783601,13.837236579364,15.5656021901169,17.8414634960987,21.2481106118767,26.479841549746,34.000127606457,43.3455511487576,52.1042556321908,57.0977912411003,57.8586332102949,54.837582106905,47.4899969293091,38.0804311921657,29.6794720864941,23.4778160471224,19.2982531016257,16.5740136894675,16.6586629296638,14.9551466169529,13.5364107969509,12.3891224002548,11.5236447996989,10.9227066880438,10.5594695315822,10.4096480925306,10.4580709635126,10.7084838942793,11.180505530854,11.9013121842312,12.9006827014176,14.1998667947208,15.7936398506136,17.7823752396262,20.7383141425132,25.2204512689687,31.5188895193808,39.2829943154559,46.7892696547059,51.5094461665384,52.2525820918886,49.0382424075089,42.5349141671518,34.7854871667068,27.8743466561171,22.6391614122627,19.0255430090289,16.6586630511765,16.7423580031109,15.3443768389516,14.0926620699055,13.0324043893229,12.2110643496808,11.6323181351592,11.2786950561301,11.1305009774133,11.1761927696458,11.4189040032411,11.8749293218689,12.5666393444353,13.5119714981189,14.7037689199067,16.0776451866268,17.6593014960901,19.9979403518989,23.4828953577323,28.2023418068035,33.8351468344864,39.255647716798,42.772938305743,43.3111284791053,40.8322366125354,36.1227549796134,30.5873543499081,25.500894426434,21.4794950325885,18.6188223321355,16.7423581113134,16.8094254724356,15.7819189255011,14.7872320105272,13.9092806613665,13.2173782618127,12.726877905916,12.4252528885789,12.2962149665826,12.3314509749121,12.5352278831388,12.9234154400709,13.5163077940639,14.3231329525703,15.3133650624008,16.3786637969255,17.4835399996368,19.1217541654187,21.5277130418738,24.6454327403113,28.182556611358,31.4695014749611,33.5900914423725,33.9294373219381,32.4554695806621,29.6310888445033,26.2094931484532,22.8997811283959,20.1422456358048,18.1215775064144,16.8094255637821,16.8556039136763,16.2333391606018,15.6027924705052,15.0462955935062,14.6210442990515,14.3292593952163,14.1525480925419,14.0741334339126,14.0875449413307,14.1995416139441,14.4296989241081,14.8030019174284,15.3317276273317,15.985925606698,16.6598840588842,17.2859593061174,18.2318309689883,19.6313250965758,21.3845674405985,23.2752283384691,24.9583966222474,26.0287038109408,26.2191009376411,25.5063423731735,24.0814802422516,22.2708805555552,20.4207290933061,18.8067208526513,17.606206482866,16.8556039883843,16.8753234642977,16.6842986531068,16.5345128285154,16.4832407241346,16.5225103306925,16.605951470378,16.6828905266117,16.7164010488521,16.691323396483,16.6182469041364,16.5343978024641,16.49269303675,16.5381822182256,16.6853385551687,16.8938482591552,17.0925808459968,17.4167236639996,17.9612213130712,18.6660825715105,19.42395264592,20.0922190346927,20.5203743483758,20.6095818776874,20.3437430920426,19.7826717506091,19.0428298602514,18.2677237111074,17.5957991906523,17.130074963989,16.8753234993556,16.8753023180215,17.1289222695823,17.5929674990669,18.2626978864495,19.0353236440882,19.772774453098,20.3320007286516,20.5969346633693,20.5079717775203,20.0811707962036,19.4150364992539,18.659597801003,17.9570917269132,17.4146211873154,17.0920426962765,16.8942182281658,16.686910507856,16.5413688050314,16.4975542803189,16.5407993209439,16.6258948453587,16.6997523784003,16.7250174279826,16.6910623077146,16.613097179487,16.5281860725358,16.4872111808107,16.5367981249257,16.6851867554085,16.8753023006211,16.8555304140441,17.6046850551029,18.8032425969494,20.4145546602179,22.2613345950564,24.0683240341866,25.4901330533275,26.2012257366695,26.0110719710243,24.9429429022607,23.2632102876784,21.3762035534287,19.6261587399496,18.2291865103478,17.2851837268274,16.6601631751395,15.9872214803663,15.3341896077757,14.8065658997692,14.4341943416922,14.2047446959871,14.0931841722552,14.0798971815369,14.1581027170778,14.3342689781177,14.6251984421054,15.0493510230021,15.6046402397493,16.2341099866867,16.8555303394661,16.8092433567708,18.1197947725128,20.1382845907297,22.8927073911406,26.1982096330259,29.6149373915121,32.4349883678764,33.9064608640768,33.5672475110571,31.4496478245967,28.1675839964392,24.635462188335,21.5217976684221,19.1187766145484,17.4825716894292,16.3789103295112,15.3144680570719,14.3250115108668,13.5188442611919,12.926479773675,12.5386801122344,12.3351401288865,12.2999796485528,12.4289224530879,12.7302716506157,13.2203083444291,13.9115695995603,14.7887517655157,15.782626915882,16.8092432655347,16.7420896423702,18.6169914501723,21.4754827422463,25.4936453838086,30.5755342654377,36.1055351972924,40.8104723921802,43.2869862108001,42.7487886201904,39.2344161263794,33.8192281137885,28.1920119219226,23.4769573634814,19.9949952622161,17.6583008674753,16.0778626209174,14.7046848371761,13.5133584943073,12.5683689522876,11.8769202947533,11.4210854106023,11.1784917924189,11.1328424530353,11.2810022703976,11.6345092530962,12.2130479642251,13.034075170192,14.0938893322047,15.345005051542,16.7420895342401,16.6583655962296,19.0239188123194,22.635648024922,27.8679589350581,34.7750598933978,42.5201083674781,49.0208617253537,52.2348896901227,51.4916857195988,46.7726415338527,39.2698497461222,31.5102006481946,25.2154860890632,20.735864940009,17.7815327956118,15.7938237784333,14.2005632838089,12.9016332486069,11.9024054648446,11.181693475872,10.7097379655348,10.4593670271207,10.4109654346012,10.5607923566366,10.9240156911118,11.5249067396898,12.3902746116439,13.5373333568341,14.9556418338885,16.6583654747527,16.5737492939637,19.2970525519308,23.4752737603438,29.674880122859,38.0731192581163,47.4804646624437,54.8281837608984,57.8511477998691,57.0898038734185,52.0954211457745,43.3375299595626,33.994517961045,26.4766178875027,21.2465281532759,17.8409292175034,15.5657423286715,13.8376792106602,12.4902962248008,11.4801290178078,10.7644761613145,10.3034542677803,10.0635263731183,10.0172824187649,10.1578767036512,10.5072663580957,11.0971029901548,11.9627045289659,13.1401731670578,14.6545757563572,16.5737491641376,16.5163631340257,19.4430769617438,23.9549300416944,30.7532123714466,40.0587556201816,50.2539408257052,57.4835336993404,59.7468170051726,59.2583531162456,54.6144174391563,45.5026524892626,35.3339414908133,27.1375964555358,21.500032090849,17.8514376082772,15.4266344561413,13.6363277507747,12.2722283413906,11.2656098037334,10.5634898317645,10.1206502159649,9.89773173203916,9.85598412917179,9.98250932085531,10.3121742296325,10.8825313781477,11.7347363218727,12.9159279501477,14.4751062763781,16.5163630674728,16.5117485767902,19.4890507787358,24.0910466767888,31.0624380387793,40.6028559588911,50.8933124565738,57.8918164739831,59.9911103214159,59.4064242596948,54.9994214200249,45.8043485790035,35.4851993401276,27.2058022653792,21.5218303616424,17.8385941913596,15.3952061018386,13.6007343683741,12.2341293401557,11.2271320574237,10.5273191994279,10.0891490409236,9.87177445077898,9.83268132572,9.95649066570853,10.2785055529283,10.8413508883165,11.6872613305644,12.8662221276913,14.4361829326665,16.5117484448685,16.5643236779655,19.4325772706505,23.8621578634649,30.5367935625567,39.6169632055481,49.5126497415655,56.7175998095519,59.1652863767319,58.3501941186807,53.3871405388101,44.2677331525479,34.5139384638589,26.7322752573561,21.3389797366948,17.814888218925,15.4742143962368,13.7291905210848,12.3720062779092,11.3571896627132,10.6431727509634,10.1886425904496,9.95693237388591,9.91424165801316,10.0482195602527,10.3850539318521,10.9602356838342,11.8131480128987,12.9904355544033,14.5429548788663,16.5643235505991,16.6571157100405,19.2459436362241,23.2290652852118,29.1406688442381,37.0895982988029,45.9135042469497,52.8267403839471,55.662501320597,54.483624949597,49.1890933492395,40.9354197385686,32.5022087273878,25.7326366979931,20.9383130272813,17.7633546655946,15.6486339685387,14.0162288250638,12.6947333489361,11.6791584413346,10.9498550614582,10.4757963078765,10.2268861074966,10.1789042465049,10.3240746506034,10.6784044776871,11.2690574404269,12.129053690227,13.2940122767061,14.7900737496147,16.6571155891564,16.7627511526136,18.9140004891006,22.2074843597906,26.97242256966,33.2035565757776,40.0822448226464,45.6879492968405,48.1581749122234,46.9843925621937,42.5116448286917,36.09578067225,29.6000264359275,24.2342321491487,20.3027485583975,17.6566620658745,15.8881820713538,14.4432641238601,13.2074987542509,12.2242991646069,11.5030899862642,11.0271061995899,10.7731278656731,10.7226401964849,10.8700328396216,11.226645466485,11.8143368340173,12.6583330165644,13.776809034325,15.1568405804993,16.7627510403274,16.8555365780292,18.4620783625792,20.9146640281425,24.3499623918984,28.6430136105227,33.2198371066773,36.9265537513269,38.5913455872732,37.7872550337856,34.8263877263094,30.60925960068,26.2132091631397,22.3989229599676,19.4815206425963,17.4901239855083,16.1576430474476,14.9793359444736,13.9084118465895,13.027180364909,12.3701060008444,11.9326571963703,11.696790115559,11.6476448996294,11.781672537934,12.1091335003818,12.6494853692084,13.42147592927,14.4247776547877,15.6053640425732,16.8555364807558,16.9218302191452,17.9537767732002,19.5380011097669,21.6989121602875,24.2675320017173,26.8713468609579,28.9195137328016,29.8466933868421,29.4315692979681,27.8253900006299,25.459427048184,22.8656956172286,20.484340818523,18.5856749760596,17.2875359572196,16.4242659098434,15.5906912247235,14.7959909056839,14.1326317441783,13.6392216539793,13.3116541509741,13.1332993475633,13.0922601970705,13.1876045043315,13.4309528591056,13.8427596516007,14.4402477308482,15.2136982869764,16.0882672581535,16.9218301482725,16.9586110513081,17.4627960798408,18.243297421103,19.3309849758142,20.584840215754,21.8062442041357,22.7435760432451,23.1750219872202,23.0085083563195,22.2932283156352,21.1907813143061,19.9227264959276,18.7092457699651,17.7273346750251,17.0823817988789,16.6655253645225,16.2535786274235,15.8769642088392,15.6011100511548,15.4276455517187,15.3298131406162,15.2799814742224,15.2622084663629,15.2763983220333,15.3399458597541,15.4845222445486,15.741187344931,16.1160747163917,16.5597107966295,16.958611018897,16.9630993204877,16.9914082213717,17.1152756022401,17.3586503985072,17.6929635050308,18.0489894360244,18.3374452896821,18.4802059330246,18.4406204371694,18.2281059170644,17.8920216934889,17.510680875536,17.1739350858517,16.9589809320999,16.8831956738004,16.8828332764644,16.9573247379534,17.1704758751424,17.5051672123922,17.8844819096973,18.2188893122476,18.4303682891499,18.4697395126071,18.3276230054745,18.0405413240163,17.6863428730037,17.3540193973298,17.1125374907807,16.9901788187276,16.9448648313563,16.9522775647854,17.0109148908135,17.1497507141998,17.4081854631883,17.7562355194619,18.123956350721,18.4208169448683,18.5674842188208,18.5267031783442,18.3080759162852,17.9618278130656,17.5674689409013,17.2162367928582,16.9856856312051,16.898868041142,16.898409986028,16.9836711066873,17.212070519498,17.5608433900234,17.9527855028359,18.2970368823974,18.5144318468182,18.5549588956007,18.4090612962981,18.113843254079,17.748312249791,17.4026514288844,17.146494704817,17.0094693036012,16.9800972064473,16.9733209819486,16.5830903718272,16.151445555055,15.7884574791095,15.5423196761313,15.4062576359329,15.3486403647095,15.3372521515069,15.3543829731475,15.4001076354026,15.4906436404588,15.6541019925558,15.9182280025698,16.282764583658,16.6838859464794,17.0979659215421,17.7551067306136,18.7520210231448,19.9799813737565,21.2618507852587,22.3758532705718,23.0985180017778,23.2667104670812,22.8307766063941,21.8837149534231,20.6493585193926,19.3813485735742,18.2803238894769,17.484785032961,16.9733210270496,16.9418523620139,16.1149148581084,15.2485132845437,14.4820009551548,13.890459433687,13.4834092571607,13.2433574749537,13.149608864469,13.1903933845754,13.3665770617642,13.6900949184376,14.1777203851349,14.8339242333203,15.620965067226,16.44668222433,17.3086644209663,18.6196621510095,20.5327127410063,22.9294086900468,25.5387697184694,27.9185967237841,29.5340657861864,29.9516979745605,29.0194899160669,26.9598295967247,24.3409827062316,21.7564727893757,19.5810407129542,17.9829780313401,16.9418524480835,16.8811987839225,15.6346301447221,14.4585574713895,13.4583256312753,12.6887717072892,12.1504156337563,11.8244010570504,11.691117326295,11.740213738702,11.975200206762,12.4109603638842,13.0655985641426,13.943562175039,15.0103912238454,16.1837200732645,17.517719484161,19.5211622197869,22.4519440494898,26.2803419827362,30.6901968186883,34.9186102635401,37.886318377808,38.6926261001376,37.0255222944221,33.3109117329337,28.7212471001094,24.4129467112144,20.9628837338223,18.4962757628544,16.8811988927215,16.7924337090736,15.1873001264852,13.8087054407474,12.6905466789152,11.8465122222058,11.2587770618695,10.9021942427177,10.7548941532851,10.8055119272456,11.0596010321052,11.5356834107074,12.2569358965597,13.2397820319697,14.4742665353483,15.9169443935257,17.6887269257422,20.3458934720202,24.2892121070777,29.6656568712578,36.167960147837,42.5838585681436,47.0525912257245,48.2252812263677,45.7601602386292,40.1596022896502,33.2781926506664,27.0363661683829,22.2583211200589,18.9516346181417,16.7924338305994,16.6885469541221,14.8201408792472,13.3233198567006,12.1568843963759,11.2952116637171,10.7030131646617,10.347492607304,10.2017522624175,10.2500791055007,10.5000897037678,10.9756831648566,11.7067290094318,12.7238727294683,14.0460798541259,15.6784566332101,17.797295644446,20.9821226467682,25.7865825471325,32.5624830872088,40.9920532994904,49.2304366454577,54.5087691652855,55.6830263189508,52.8580211653062,45.9651378335811,37.153199479108,29.2011388611877,23.2793034860778,19.2846290938478,16.6885470832286,16.5956868891016,14.5716660306303,13.0171572885941,11.8373899528012,10.9818200298189,10.4040887359958,10.065160700384,9.93013383372917,9.97311181297839,10.2066407095371,10.663877929763,11.3806953340345,12.3981240338257,13.7572082726628,15.5036435303841,17.848685482241,21.3816566075237,26.7840976479716,34.5693787699208,44.3120978304108,53.4069053298672,58.3532441670312,59.1656905333725,56.7255858086057,49.545470847467,39.671062828555,30.593318111489,23.9105655214064,19.4707326258401,16.5956870245105,16.542620564056,14.4638007217688,12.891477140745,11.7097242129256,10.8608451356714,10.2951511793246,9.97109734539249,9.84658674267204,9.88578261232316,10.104711180258,10.5455706427975,11.2483658883238,12.2582788991645,13.6273182166221,15.4240123673411,17.872013328199,21.5640552902465,27.2574925485884,35.5403855894799,45.8459535073411,55.0134508573007,59.406752360223,59.9903925737661,57.8968030123423,50.9217855829219,40.6550454098175,31.1182970037944,24.1389338057567,19.5268527675189,16.5426207041124,16.5474779037159,14.5028036743848,12.9414654486617,11.7575918471237,10.9024956056738,10.3292713616938,9.99720906802444,9.86994460108353,9.91203302090034,10.1364211913514,10.5817973402348,11.2867772697305,12.2962455131658,13.6628723856703,15.4556968636494,17.8855409089681,21.5440208314065,27.1926580628934,35.3948355377823,45.5521129304733,54.6355653319015,59.2622550927366,59.7495819014347,57.4949948529454,50.2912244181607,40.11695875255,30.8125067010128,24.0048011881876,19.481946583736,16.5474780446817,16.6054589872851,14.6830947581148,13.1672524488628,11.9876591622746,11.1196917029202,10.5276126360372,10.1763329469538,10.0347676680443,10.0813646595109,10.3226773012652,10.7856476122996,11.5035286924799,12.5159881167972,13.865418229333,15.5955556543204,17.8761583045722,21.293865777846,26.5379839670388,34.0668928969158,43.4065905363088,52.1425012984944,57.1168908559457,57.8742635644755,54.8668724096649,47.5412214205786,38.1446556468614,29.7411333173959,23.5291454191048,19.3379773890631,16.6054591241883,16.689391489619,14.984476309768,13.5661064892368,12.4181766251646,11.5516387220784,10.949714046218,10.5857412242912,10.4354839020247,10.483896604302,10.7347636122179,11.2075889536218,11.9294247044636,12.929842915984,14.2296198520334,15.8235328140794,17.8165545959033,20.7859024639015,25.2832427832558,31.5965084433804,39.3676883186945,46.8675764062703,51.5764764833733,52.3164838853007,49.1101013270447,42.6143893000603,34.8630885800635,27.9415522279025,22.6928032282106,19.0656571669822,16.6893916171789,16.7701110973203,15.3729871506445,14.1237545918565,13.0650851670829,12.2446873816758,11.6666021570773,11.313389615266,11.1653163238028,11.2108279198121,11.4531018432333,11.9085210214045,12.5995370214227,13.5440068544264,14.7342095278202,16.1056315408682,17.6904077799944,20.0446539679287,23.5467717849895,28.2858692233857,33.9369958967035,39.3693987738626,42.8905137832985,43.4276153416733,40.9446084288502,36.2252787094514,30.6743974031635,25.570405757369,21.5323921271947,18.6564702722249,16.7701112101808,16.8320936231035,15.8087105430354,14.8189804067402,13.9457406596447,13.2576036855615,12.7699717436471,12.4701488299692,12.3417898342623,12.3765953709381,12.578900809051,12.9647139058698,13.5545156948679,14.3576610486749,15.3432492829883,16.4029199140109,17.5091680123749,19.1642693733344,21.5877053037441,24.7259304338452,28.2847235731852,31.5906170116584,33.7225127832832,34.0628703381233,32.5800273798734,29.7389469516127,26.296772688087,22.9666290754331,20.1909259273847,18.1538561146269,16.8320937164162,16.8725163994628,16.2577088744216,15.6349474035108,15.0869732900952,14.6690842387891,14.382972644213,14.2099149497178,14.1329685774375,14.145641520651,14.2547981692806,14.4802480261149,14.8472776099286,15.3684968465249,16.0142108240225,16.6795120275431,17.3054099809975,18.2675769796483,19.6842241423495,21.4561078711502,23.3661593715501,25.0664229303771,26.1475744325312,26.3397433535207,25.6194928362013,24.1798955123991,22.3506830034451,20.4812019843663,18.8492024523919,17.6312560054855,16.872516475382,16.888099084014,16.7060708969911,16.5676827745541,16.5289716331934,16.5797339864995,16.6724329078333,16.7556726121024,16.7919028312047,16.7657018353721,16.6878251857828,16.5960804240474,16.5441303248927,16.5777043462846,16.7117959200734,16.9096250135902,17.1082113479741,17.4453700153792,18.0064513392405,18.7273842247717,19.500409325975,20.1811625214577,20.6171056069186,20.7079059021582,20.4372211182386,19.8658134222863,19.1118989799049,18.320753767628,17.6325149450639,17.1497256777459,16.8880991205723,16.888057726171,17.148318585859,17.6291031255914,18.3147004480248,19.1028800988041,19.8539461329875,20.4231616810798,20.6927762171098,20.6022750748959,20.167951707805,19.4897469525775,18.7196339091976,18.0015264616211,17.4428588896784,17.1075616830839,16.9100801607982,16.7136932962343,16.5815219671029,16.5499535703801,16.6037512967361,16.6969889583327,16.7757984429255,16.8022214525885,16.7654587493392,16.6809940991393,16.5865412107992,16.5337436057517,16.5704351084531,16.7071576359172,16.8880577081416,16.8724009916521,17.6294234217159,18.8450058944614,20.4737548501643,22.3391961975089,24.1641047205329,25.6000783856808,26.3183709875951,26.12652325966,25.0479850825976,23.3518175397754,21.4461239646543,19.6780642488707,18.2644268475728,17.3044795611951,16.6798640135608,16.0157901310842,15.3714662720458,14.8515633408893,14.4856489759625,14.2610462902185,14.1524097271308,14.1398820656897,14.2165738926232,14.3889766663203,14.6740654723699,15.0906468746994,15.6371846691829,16.2586545648524,16.8724009159533,16.8318542123605,18.1517096416626,20.1861477754761,22.9580933608625,26.2831862640651,29.7195464376288,32.5554756067524,34.0353855371499,33.6952518291626,31.5669627780164,28.2668794848354,24.7140292682058,21.5806364731844,19.1607091967492,17.5080065226843,16.4032304153006,15.3446004879742,14.3599421054552,13.5575828757498,12.968410924618,12.5830599427504,12.3810353553744,12.3463168139581,12.4745580762954,12.7740476065678,13.2611240576897,13.948497406307,14.8208194714411,15.8095721459753,16.8318541192087,16.7697766677618,18.6542686627212,21.5275556667688,25.5616658621327,30.6601736757115,36.2045980617036,40.9184920921433,43.3986814386608,42.8616408202696,39.344072370208,33.9180061555423,28.2735204944277,23.5396566849675,20.0411205254365,17.6892038458371,16.1058982667137,14.7353285519296,13.5456986226528,12.6016421865455,11.910938123063,11.4557439918964,11.2136074389335,11.1681436359889,11.3161730180617,11.6692433596698,12.2470773732329,13.0670986360242,14.125234504861,15.3737432719762,16.7697765549941,16.6890302493311,19.0637122450428,22.688581167897,27.9338718952554,34.8505717216306,42.596643925276,49.089261172613,52.2952643587348,51.5551737295346,46.8476501592949,39.3519352268056,31.5860806610237,25.2772708065814,20.7829524721459,17.8155348366515,15.8237494287307,14.2304648233156,12.9310049703636,11.9307647319394,11.2090437617696,10.736295795174,10.4854760561606,10.4370861187494,10.5873472955616,10.9512992367288,11.5531618087721,12.4195621959521,13.5672120755114,14.985067062062,16.6890301218189,16.6051464901424,19.3365541705953,23.5261119414678,29.7356385202041,38.1359076757759,47.5298342726376,54.8556684937165,57.8653783369821,57.1073746756508,52.1318758267495,43.3969287338512,34.0601250929018,26.534083771212,21.291946366767,17.8755026501199,15.5957137147608,13.865951252953,12.5166656512606,11.504259115008,10.7863916988038,10.3234164053804,10.0820952817442,10.0355076800459,10.1771112964531,10.5284411906635,11.1205525248774,11.9885033335707,13.1679693762038,14.6834799342887,16.6051463532567,16.5472588080215,19.481192153942,24.0032638751778,30.8097901055273,40.1128559998172,50.2865292900068,57.4915925847224,59.7475641996567,59.2603200348493,54.6321977376434,45.5483711761915,35.3922075111182,27.1911990377525,21.5433293111764,17.8853322534211,15.4557879648331,13.6630790890194,12.2964850995218,11.2870243129711,10.5820373947437,10.1366425090595,9.91222924967346,9.87014125415163,9.9974634706934,10.3295823759834,10.9028526714413,11.7579674343964,12.9417939279053,14.5029590424817,16.5472587375369,16.5425118166744,19.5268421985855,24.1390594690372,31.1186622586079,40.6558057177464,50.9228033307825,57.89713455305,59.9907487802523,59.4074445750376,55.0148819601138,45.8477404015527,35.5418528626097,27.2584330958227,21.5645718227457,17.872244430117,15.4240238577624,13.6271977370072,12.2581094801625,11.2482003506575,10.5454333727254,10.1046153169172,9.88572537460677,9.84652709877875,9.97104665803494,10.2950998310631,10.8607967027554,11.709677811101,12.8914198744522,14.4637108632707,16.5425116766058,16.5956915760611,19.4715090782745,23.9124654346981,30.5969496350622,39.6768448198971,49.5523642754117,56.7314299351985,59.1702681562686,58.3586725374945,53.4145618541422,44.3195134349092,34.5746608371864,26.7872259758341,21.383278015084,17.8493147684531,15.5035696703028,13.7567666917438,12.3975359367578,11.3800846464192,10.6633015993087,10.2061210849435,9.97265359828743,9.92970402894557,10.0647198191298,10.4036223112593,10.9813355672649,11.8369050808237,13.0167046068469,14.571326301335,16.5956914406361,16.6886279600153,19.286128165129,23.282867943607,29.20785556251,37.1640193273908,45.9795357692626,52.873498078814,55.69790470708,54.5243157884874,49.2463716499864,41.0050227578887,32.5711290521638,25.7916104670559,20.9847046385835,17.7982592528563,15.6782969965828,14.0453320831228,12.7228353933203,11.705576613239,10.9745036352869,10.4989214976414,10.2489356332105,10.2006243159497,10.346377882352,10.7019170389797,11.2941491597445,12.1558853034436,13.3224501734374,14.8195545166701,16.688627830888,16.7924938737879,18.9536276171107,22.2630815481885,27.0453242233501,33.2929166143783,40.1805727553037,45.7854741513865,48.2517331511672,47.0781803191455,42.6062621298692,36.1847020109466,29.6764941646022,24.2955110719535,20.3491254906072,17.6898931212033,15.9166958269925,14.4732419186125,13.238262879166,12.2551096805383,11.5336707282381,11.0574812742935,10.8033469330235,10.7527353960031,10.9000937621865,11.2567867299901,11.844683299428,12.6889365148941,13.8074062642687,15.1864843652115,16.7924937522234,16.8810805435938,18.4984022598951,20.9680525595592,24.4225226201116,28.7367583797446,33.3331286028979,37.0530933108736,38.7221618082595,37.9143014590521,34.9420941882716,30.7074836067024,26.2916281743233,22.4585934914291,19.5245854194219,17.5189067332162,16.183396422877,15.0091401555291,13.9415285650994,13.0629328993915,12.407826381895,11.9717607197316,11.7366245393917,11.6875225939441,11.8209376403567,12.1472125501381,12.685948198432,13.4559920620161,14.4568262926988,15.6336129139393,16.8810804347098,16.941370312339,17.9848775032455,19.5858523498081,21.7651816901014,24.3545480493068,26.978670331799,29.042605462137,29.9765805130674,29.5577885754426,27.9387206560548,25.5539571214133,22.9396455664769,20.5388701897891,18.6228239472393,17.3096999041453,16.446329207681,15.6195228259646,14.8313111052828,14.1739942875222,13.6854698784169,13.361331989213,13.1848264180362,13.1440133079535,13.2380127145398,13.4785713769978,13.8863510560764,14.478802782808,15.2463390873705,16.1137209910704,16.941370226068,16.9723227967875,17.4863082207362,18.284342025199,19.3884691749179,20.6599951559829,21.89788139561,22.8477220623397,23.2848949965564,23.1161010994208,22.3911986449373,21.2739012526147,19.9884341908831,18.7572073519569,17.7577135773229,17.0987010919104,16.6835162994072,16.2811051788382,15.9149129238124,15.6490562097746,15.4840744763124,15.3923993765505,15.3460349029704,15.3288124028181,15.3406495814979,15.3991936436069,15.5365488785578,15.7842162020298,16.1487909378438,16.5817338891006,16.9723227512176,16.9786112560001,17.0109150619212,17.1497509801314,17.4081857868062,17.7562358876695,18.1239567526358,18.4208173686922,18.5674846514573,18.5267036063966,18.3080763266368,17.9618280030967,17.5674692785208,17.216237075574,16.9856858489059,16.8988681522876,16.8984098745185,16.9836708885795,17.2120702362444,17.5608430518336,17.9527851221961,18.2970366769321,18.514431418181,18.5549584623663,18.4090608718542,18.1138428515131,17.7483118808957,17.4026511045342,17.1464944380653,17.0094691313694,16.9505914287765,16.9535828460122,17.0230327700186,17.1735637815895,17.4429039809736,17.8008338821275,18.1769728497434,18.4798781217451,18.6293616454163,18.5877328744636,18.3647245338099,18.0111785071358,17.6074448827617,17.245828186226,17.003359636373,16.9089306708055,16.9083840751356,17.0010010092878,17.2409572101724,17.5997079158844,18.0006335120966,18.3518635724146,18.5734438696902,18.6147802039503,18.4661927906954,18.1651988624261,17.7916123395544,17.4364720311422,17.1697983350718,17.0213818258623,16.9900467926871,16.9811390824431,16.5978349783809,16.1740817070698,15.818910434658,15.5794709703986,15.4487820636231,15.3948840566918,15.3852471189157,15.4019761305191,15.4451349748206,15.5311134476568,15.6882460515346,15.945004328752,16.3015517366606,16.6956470774011,17.1083261477579,17.7756505708164,18.7848177206223,20.0250175938352,21.3188079421452,22.4429459410798,23.1721601889143,23.3418948472732,22.9020511769833,21.9464614113965,20.7008539935066,19.4207013248805,18.3086399507874,17.5005176148759,16.9811391470849,16.9545599417578,16.1321452481529,15.2711047133842,14.5090600419894,13.9213091861572,13.5172770567189,13.2793100069367,13.1865663922983,13.2271862584505,13.4019942776046,13.7229632742758,14.2069247114651,14.8586032168303,15.6407957755409,16.4613958644544,17.3235591668328,18.6451125380646,20.5701471139282,22.980116076628,25.6034488069799,27.9959804426141,29.6201312044681,30.0402318667288,29.1034601534757,27.0331840793392,24.400630048001,21.8019558944256,19.6139014730245,18.0046421215614,16.9545600430022,16.8984938870031,15.6539314245844,14.480687770545,13.4823524339932,12.7142985524012,12.177185105155,11.8520767150338,11.719259801286,11.7683273913265,12.0027613626504,12.4374663416808,13.0905943915734,13.9665316907033,15.0308941917191,16.2012006685493,17.5374395748101,19.5508639176236,22.4930381006137,26.33414204721,30.7572476613305,34.9972168796462,37.9723450694599,38.7811377577665,37.1113306871746,33.3880976066462,28.7854718018113,24.4629220275366,20.9996644843039,18.5213629235236,16.8984940051592,16.812812436997,15.2076379538327,13.8297471230475,12.711637098271,11.8674600067128,11.2796187414162,10.9230101863611,10.7757460723432,10.8264403033582,11.080621569106,11.5568288866565,12.2782084524403,13.260966540745,14.4948559890812,15.9364913220897,17.7116578014912,20.378029679644,24.3315663499107,29.7182111763214,36.2285504348317,42.6476789652324,47.1153378399601,48.287739287747,45.8256233777533,40.2263128534533,33.339414375556,27.0866775047788,22.2968304483021,18.9790697103563,16.8128125655907,16.7102461407192,14.8403617655228,13.3427445613365,12.1751250051968,11.3121789384404,10.7188353939963,10.3624570782364,10.2163366238595,10.2649400921751,10.5156993704911,10.9923562703377,11.724680667693,12.7430517253331,14.0660076873734,15.698853291425,17.8214611237783,21.0143914652045,25.8275448240219,32.6100806303253,41.0395712782652,49.2687848486037,54.5354044107728,55.7060413569852,52.8889444051934,46.0098666881562,37.2043875964857,29.2477107282594,23.3167127958507,19.3125190108734,16.7102462760097,16.6173252600667,14.5910712735422,13.0349401065655,11.8532574257896,10.9956458168247,10.4159215891234,10.07527534786,9.9392973610432,9.98257061507823,10.2176694021823,10.6769866227623,11.3959155218133,12.4153423578563,13.77599292844,15.5238177436153,17.8725570631373,21.4125914951704,26.8225260055035,34.6117128764446,44.3478459622389,53.425340535919,58.3585732103322,59.1686768579551,56.734654167551,49.5726965339194,39.7127083150459,30.6353715251553,23.9457450850292,19.4978319025215,16.6173254014956,16.5638620850851,14.4825743153955,12.9084192177051,11.7245108509438,10.8732937789577,10.3052071054873,9.97908837601958,9.85351547902819,9.89295758644014,10.1137368567718,10.5569533090562,11.2621049845267,12.2742800710663,13.6452514695934,15.4437912787387,17.8953844566721,21.5940459941322,27.2946080126663,35.580410581691,45.8765861860014,55.0243230098057,59.4074082246094,59.9900950108039,57.9005260858385,50.9426302778284,40.6925307214675,31.1580497938066,24.1727493625239,19.5532581015821,16.5638622312125,16.5688438647705,14.521785495703,12.9588483902852,11.7729384749484,10.9155885928258,10.340034403024,10.0056309401288,9.87736355143597,9.91994127345801,10.1458591245795,10.5934514212914,11.3007148667271,12.3123904705872,13.6809689591094,15.4757022623054,17.9091386512214,21.574568181439,27.2307887643003,35.4365713806304,45.5851564680197,54.6487309049304,59.263897591238,59.7503618283798,57.501168062955,50.3150564469402,40.1559498202633,30.8529547661791,24.0390888752788,19.5086974795697,16.5688440115706,16.6272081043809,14.7027997051189,13.185991591512,12.0048646548999,11.1351336062721,10.5414115997915,10.1887353605609,10.0463414060458,10.0931337958351,10.3354881395378,10.7999182252953,11.5194709260132,12.5336354680198,13.8845652878719,15.6161238249101,17.9002880312359,21.3260847164594,26.5791703630169,34.1143818125171,43.4501296605612,52.1699061595957,57.1306830980655,57.8855629685859,54.8879013875571,47.5778376602887,38.1904217150303,29.7849234581002,23.5654244681552,19.3658235415917,16.6272082464871,16.7106221338742,15.0045018615655,13.5862931089663,12.4378622801042,11.5705487664532,10.9679059960839,10.6034208220627,10.4528736977086,10.5012719083508,10.7524466866025,11.2258385357351,11.9484166560885,12.9496130352618,14.2498776569937,15.8440260356694,17.8403065866346,20.8194501532759,25.3277478509459,31.651734665142,39.4280695309366,46.9234985636372,51.6244278254824,52.3622267299809,49.1614857363787,42.671122041498,34.9183666053581,27.9892801132367,22.730729735438,19.0937946072004,16.7106222658337,16.789180847381,15.3924396426553,14.144926380426,13.0874042979535,12.2676958186399,11.6901080451472,11.3371943410051,11.1892084475663,11.2345879339205,11.4765352505361,11.9314995075743,12.6219993756341,13.5658439803283,14.7549215343548,16.1247011898078,17.7119486023049,20.0775911574198,23.5920392386877,28.3452960261833,34.0095808160509,39.450542248356,42.9744332515376,43.5107838698211,41.0248241973504,36.2983944653342,30.7363597423459,25.6197417237217,21.5697607639634,18.6828374677089,16.7891809634885,16.8474027956829,15.8269073691213,14.8405795200545,13.9708086993894,13.2853703505474,12.799809026884,12.5012795342268,12.3734035949037,12.407895775123,12.609139336427,12.9932366074824,13.5807994025224,14.3812790947554,15.3635082296812,16.419197561054,17.5267686934353,19.1942076636621,21.6301371572508,24.783122032055,28.3574620827469,31.676938906734,33.8169508979608,34.1580500819654,32.6688539947249,29.8157881954621,26.3588312936822,23.0139976853245,20.2252410505474,18.1763163616925,16.8474028889667,16.8830111823167,16.2742667559482,15.6568186480819,15.1150845582683,14.702472001187,14.4204036745083,14.2499479366788,14.1740415749326,14.1861828008212,14.2933091140828,14.5153910911793,14.877919128194,15.3937122266691,16.033254607971,16.692298099687,17.3184618933962,18.2926323097525,19.7215457091331,21.5067661141957,23.4307482661235,25.1432676417696,26.2322096924311,26.4256651400512,25.7000526860424,24.2498849448309,22.4073052985921,20.5239425150079,18.8789425804853,17.6485706541855,16.8830112502154,16.8955016652332,16.7204938008168,16.5904233684622,16.5606941664396,16.6196999498712,16.7189688074205,16.8066777234364,16.8448300480898,16.8178233746551,16.7365312641449,16.6391686576919,16.5799126201208,16.6049764227749,16.729275614445,16.9196804794304,17.1183506927662,17.4649141456429,18.0381999203915,18.7705901337874,19.5545237244201,20.244244073843,20.6857880493627,20.777744598082,20.5035928252891,19.9247711794469,19.1607487687544,18.3580448970213,17.6581547123594,17.1619009907824,16.895501696549,16.8954401100408,17.1602531016234,17.6541693960422,18.3509668939631,19.1502179623527,19.910934408815,20.4872176741562,20.7601353390411,20.6685339702664,20.2288760094277,19.5421206562544,18.7615801386906,18.0324858775084,17.4620063449517,17.1175948061574,16.920214322795,16.7314859186576,16.609419081044,16.5866930257085,16.6481046008014,16.7472067491648,16.829583882719,16.8568479856352,16.8180763895371,16.7289446942003,16.6276383007431,16.5662665315172,16.5936360243289,16.7217606928916,16.8954400947143,16.8828573253249,17.6464402086143,18.8740329027052,20.5152265305055,22.3938791666448,24.2314595975825,25.6774329608765,26.4007968840885,26.2077428103846,25.1218511930931,23.4140885731568,21.4951678107868,19.7143960979577,18.2889831282102,17.3173790493201,16.6927192682035,16.035110880642,15.3971852228253,14.8829231873961,14.5216943820536,14.300599171177,14.1940770578162,14.1821022908791,14.257709363804,14.4274011777609,14.7082800106532,15.119375935386,15.6594440020552,16.2753841593223,16.8828572577722,16.8471111996617,18.1738124760189,20.2196508948666,23.0040041517406,26.3429444827154,29.7931384701914,32.6402291734952,34.126054101373,33.7852721229113,31.6494863171596,28.3367503078575,24.7692941645063,21.6219177536043,19.1900681597702,17.5254159146278,16.419570497545,15.3651055802506,14.3839609648576,13.5843953290428,12.9975640787663,12.6140030192488,12.4130842601359,12.3786907728743,12.5064268435892,12.8045660930634,13.2894808878597,13.9740336411862,14.8427374926853,15.8279227046805,16.8471111065796,16.788783551536,18.6802692936937,21.5641039313453,25.6095151347253,30.7197358277011,36.2742538693279,40.9943532959259,43.4770532951466,42.9408309992973,39.4211167442559,33.9875187790978,28.33092910392,23.5837483175058,20.0734709400375,17.7105427264585,16.1250172636305,14.7562434615585,13.5678402401805,12.6244792953346,11.9343413727587,11.4796364013771,11.2378460661587,11.1925197356066,11.3404523614287,11.6931984372447,12.2704921921118,13.0897613789225,14.1466599403876,15.3933247559392,16.7887834355345,16.7101992383008,19.0915316839883,22.7258018366188,27.9803103707898,34.9037632519011,42.6504384270204,49.1371864088916,52.33748155734,51.5995819198115,46.9002717137067,39.409705360939,31.6395669810145,25.3207692572407,20.8160000646065,17.8391103460658,15.8442758696817,14.2508715172291,12.9509868689329,11.9500033783171,11.2275596509969,10.7542558821066,10.5031333556148,10.4547595368386,10.6053091851201,10.9697668358184,11.5723331690606,12.4394821462308,13.5875829996124,15.0051896169773,16.7101991063984,16.6268491454867,19.3641795612027,23.5619017205163,29.7785276858127,38.1802388700357,47.5645954276997,54.874888455418,57.8752781811716,57.1196394136907,52.1574896504767,43.4388276226384,34.1064560691997,26.5745940050677,21.3238288294184,17.8995114954639,15.6163002112848,13.8851889621669,12.5344380424887,11.5203412200907,10.8008063786146,10.3363697883762,10.0940032008918,10.0472192052248,10.1896551057956,10.5423853701075,11.1361398110209,12.0058465261235,13.1868222838665,14.7032458539198,16.6268490034056,16.568602190384,19.5078425141213,24.0373263470531,30.8498170396628,40.1511910003865,50.3096152628041,57.4972764257303,59.7480738974763,59.2616902072238,54.6448022731558,45.5807741685673,35.4334732437149,27.2290536283258,21.5737383570853,17.9088800306895,15.4758006152281,13.6812112828911,12.312678574461,11.3010148579817,10.5937435191081,10.1461288126545,9.92018164846146,9.87760344782787,10.005930424186,10.3403956879232,10.9160007756697,11.7733697217144,12.9592249799179,14.5219669442064,16.5686021169861,16.5637572744709,19.5532731581979,24.1729301026118,31.1585133600754,40.6934461223377,50.9438438575156,57.9009755912311,59.9905121081422,59.4082048588916,55.0259581443259,45.8786458738077,35.5820908937177,27.2956708311702,21.5946218206334,17.8956378158969,15.4438012092071,13.6451162040044,12.2740913348206,11.2619198432944,10.5567978885603,10.113625574279,9.89288881809464,9.85343975812567,9.9790229574195,10.3051410126296,10.8732293834157,11.7244490845595,12.9083493210409,14.4824771807669,16.5637571283387,16.6173601777232,19.4987633299254,23.9479911488626,30.6396423037167,39.7194842277434,49.5807556298666,56.7414181476358,59.1739262929658,58.3648233158911,53.4342270374179,44.356469883012,34.6178539660981,26.8261535145482,21.4144624142391,17.8732787094001,15.5237334188612,13.7754859125333,12.4146647246007,11.3952079609575,10.6763149138823,10.217058943807,9.9820269252844,9.93878518128981,10.0747464584452,10.4153618084734,10.9950659899189,11.8526811503127,13.0344106598219,14.5906887185199,16.6173600362814,16.7103789840837,19.3142924469128,23.3208952994393,29.255571254511,37.2170318091462,46.0266860641576,52.9069949317093,55.7233436931684,54.5535046736016,49.2873381139048,41.0546795482798,32.6201629096435,25.8334086885792,21.0173957915005,17.8225788934501,15.6986712358367,14.0651404494303,12.7418444054289,11.7233341868728,10.9909729391546,10.514324897699,10.2635910316443,10.2150041964582,10.3611375949332,10.7175355788527,11.3109188597923,12.1739440335448,13.3417264316551,14.8396935291104,16.710378848768,16.8129346101119,18.9814184713703,22.3023980539657,27.097125978464,33.3565556256153,40.250707255629,45.8550987920854,48.318577293148,47.1451941721094,42.6738146925569,36.2480917039024,29.7308774670746,24.3389332432283,20.3818034883931,17.7130169908586,15.9362050652641,14.4936591092076,13.2591901316768,12.2760712224467,11.5544714771413,11.0781368616313,10.8239007349473,10.7732119821712,10.9205413010828,11.2772756770261,11.8653043803658,12.7097402716172,13.8282243728667,15.2067016295488,16.8129344814676,16.8984338903486,18.5238679900477,21.0056954395907,24.4740682267405,28.8034930580589,33.4138834183676,37.1433574879683,38.8155101795893,38.0049645366165,35.0246211365472,30.7774446096346,26.3473481501536,22.5008236015144,19.5548641031883,17.5388252811442,16.2008239289233,15.029424469087,13.9641491669024,13.0874773807963,12.4338044372428,11.9987423705231,11.7641317013751,11.7150553117698,11.8480226877941,12.1734321902964,12.710986946552,13.4796139755909,14.4786611131172,15.6527625826459,16.8984337720895,16.9541191912378,18.0068923081585,19.6195077291484,21.8120789712774,24.4163874423885,27.0550548102877,29.1303038375356,30.0691651898356,29.647758289266,28.0194512553298,25.6211908471057,22.9920947144714,20.5773571552502,18.648805172362,17.32476765938,16.4609802704902,15.6390971010694,14.8555414612445,14.2025745221045,13.7175696560187,13.3958778599537,13.2206920902133,13.1800358053674,13.2730691326156,13.5116255647405,13.9165081481376,14.5053222775367,15.2685697433378,16.1307817108591,16.9541190897512,16.9801459857811,17.5022994085601,18.3133205921166,19.4289737512473,20.7132172836442,21.9629281275041,22.9217502904121,23.3630463015845,23.1926305287808,22.4608322040265,21.3328751933654,20.0349015411305,18.7908882395954,17.7786949978903,17.1091853258453,16.6952051936286,16.2996021615591,15.9411279777074,15.6823597172401,15.5234576571242,15.4361544595464,15.3922495126205,15.3754112093074,15.3855686540978,15.4405455811314,15.5727435887421,15.8139708494571,16.1710026278759,16.5963062952866,16.9801459204696,16.9886825948542,17.023032961484,17.1735640597499,17.4429043131141,17.8008342578063,18.1769732586769,18.479878552325,18.6293620845519,18.5877333087111,18.3647249500019,18.0111786998892,17.6074452252982,17.2458284728669,17.0033598518025,16.9089307898981,16.9083839558982,17.0010007937349,17.2409569232038,17.5997075730125,18.0006331262652,18.3518633641642,18.5734434351421,18.6147797645097,18.4661923597907,18.1651984531334,17.7916119634731,17.4364716985481,17.169798056376,17.0213816332918,16.9520365564029,16.9538472506395,17.0290571210389,17.1876902146952,17.4636027207039,17.8275444590059,18.2088125495289,18.5153980440267,18.6665997093775,18.6244599230658,18.3987903494949,18.0408062766926,17.6313607388766,17.2634657564212,17.0133549538506,16.9145705437524,16.9139422829421,17.0106719872772,17.2578935477726,17.6225175126139,18.0287647962192,18.3841160193702,18.6081640645515,18.6499742747466,18.4997950692602,18.1953883690675,17.8170336618898,17.4562808225326,17.1834229130641,17.027226021932,16.9957826688229,16.9848049962239,16.6063611488143,16.1872815282187,15.8369864648698,15.6016286434493,15.474218125513,15.4225872355488,15.4140190741147,15.4305068647657,15.4721069780844,15.5553174862579,15.7085766749291,15.960893643678,16.3124154231227,16.7022881576044,17.1140659001346,17.7876133415165,18.8040457497509,20.0514976680105,21.3523153455084,22.4824216519594,23.2154868975678,23.3861248490827,22.9439776013195,21.9833679984035,20.7311440135625,19.4437716233223,18.3254504167681,17.5096828119386,16.9848050845142,16.9616948638294,16.1420906721574,15.2843387014341,14.525039433232,13.9396188521005,13.5374351283841,13.3007431215471,13.2086143317852,13.2491356437317,13.4231049938394,13.7425238378663,14.224236349107,14.8731480645602,15.652376588704,16.4698127138813,17.332179831641,18.6600379922776,20.5921654950689,23.0099526766338,25.6414922653513,28.0414691605608,29.6706989880745,30.0922422440475,29.1528045427329,27.0763157275914,24.4357488439902,21.8287077964172,19.6331649771816,18.0175571196322,16.9616949766608,16.9085202244354,15.6651621505134,14.4936397003597,13.4964804950755,12.7293570447188,12.1930146567105,11.8684672626144,11.7359397459466,11.7849924138257,12.0190871456233,12.4531408637305,13.1053339078017,13.9800130051792,15.0428776047924,16.2113395924161,17.548985525345,19.5683566327889,22.5172548646581,26.3658182856391,30.7966544258687,35.0433248399259,38.0227320823447,38.8329603769874,37.1616211563296,33.4334262770162,28.8232750509838,24.4924123317439,21.0213161749673,18.5361372315702,16.9085203486212,16.8247184008378,15.2195112777734,13.8420400796697,12.7239697940126,11.8797189835723,11.2918265589461,10.9352116443791,10.7879707842968,10.8387057994093,11.0929387928187,11.5692173064162,12.2906627869709,13.273352707573,14.5068822609744,15.947909774429,17.7251381341324,20.3970028114896,24.3565720593714,29.7491835671319,36.2641351382646,42.6849932322073,47.1518864825593,48.3240791137622,45.8638040503017,40.265413743653,33.3754474243086,27.116376005211,22.3195787217693,18.995247546675,16.8247185338378,16.7229650626299,14.8521702989924,13.3540515944875,12.1857082210191,11.3219899293311,10.7279600882098,10.3710786220798,10.2247490809844,10.2735291216281,10.5247190222332,11.0020017112662,11.7350978687648,12.754210163466,14.0776309052256,15.7107930119791,17.835690010825,21.0334742987455,25.8517822394912,32.6381943066187,41.0675059868906,49.2911331005962,54.5507673547437,55.7192786955742,52.9068651104041,46.0360675641613,37.2345719091357,29.2752519824005,23.3388427641474,19.3289775967283,16.7229652017411,16.6300205815359,14.6023872263826,13.0452383331492,11.8623664711791,11.0034850290857,10.4225021963372,10.0807545467756,9.94414979138295,9.9876461259382,10.223794499595,10.6843860621897,11.4046299869211,12.4252914149789,13.7869179717665,15.5356233734671,17.88661820468,21.4309126052561,26.8453294834624,34.6368215916586,44.3689692957704,53.4361098289686,58.3615893915046,59.1703328275782,56.7398997321663,49.588738012932,39.7373860319011,30.6603314483464,23.9666054327918,19.5138392214928,16.6300207266752,16.5763289358176,14.4935050450509,12.9181941707629,11.7329385962008,10.8802558342789,10.3106323508002,9.98303206316885,9.85674944790161,9.89628393255084,10.1185029779116,10.5632492508834,11.2698791091851,12.2834683107411,13.6556509828759,15.4553555979997,17.9091557892432,21.6118395168874,27.3167065610437,35.6042801521773,45.8948593454882,55.0308059379278,59.4077898378201,59.9899083596608,57.9027404780622,50.9550750334342,40.7149101019486,31.1817549168621,24.1928592786208,19.5688779380065,16.5763290856805,16.5813928572641,14.5328359775597,12.9688810609077,11.7817016723834,10.9229418465721,10.3459387994728,10.0098023958283,9.8807611528824,9.92374717002241,10.1508046430182,10.5998919788866,11.3085965089439,12.3216515061498,13.6914557147848,15.487397402789,17.9230555860737,21.5927305928077,27.2535675825527,35.4615941345546,45.6050479092815,54.6567391304116,59.2649403568587,59.7508910914555,57.5049728007712,50.3294736581824,40.1793915359368,30.8771794314594,24.0595382556791,19.5245513410134,16.5813930076434,16.6399934901025,14.714277370122,13.1968350386157,12.0147605105885,11.1439421672894,10.549266487085,10.1958084017724,10.0528891428171,10.0997390901142,10.342692341582,10.8080030767787,11.5285839034582,12.5438014015913,13.8956737443554,15.6281487941799,17.914532693911,21.3452841929895,26.6038444422804,34.1429635474012,43.4764682106925,52.1866468917961,57.1392420585738,57.8926024919579,54.900830246175,47.6000897423858,38.2180461634419,29.8112271240603,23.5871114236568,19.3823586390255,16.6399936353868,16.7230960370215,15.0161577144422,13.5979980352524,12.4492470032657,11.5814586564953,10.9783659881765,10.6135684561121,10.4628644621595,10.511265564851,10.7626240057232,11.2363512638436,11.9593757886742,12.961051115397,14.2616377074529,15.8559910592108,17.8543295330909,20.8394778628484,25.3544602860352,31.6850370577298,39.464633749366,46.9575317366681,51.6537488799263,52.3902291765191,49.1928454880374,42.7055754407759,34.9517747438147,28.01799300338,22.7534346158713,19.1105233223696,16.7230961716437,16.8003476560783,15.4037129663481,14.1572021614097,13.1003656559867,12.28106946154,11.7037904941545,11.3510549476155,11.2031164057688,11.2484125284613,11.490160005175,11.9448471660301,12.6350354349185,13.5785095299051,14.7669300502188,16.1357857419914,17.7246456238597,20.0972689134827,23.6192288436362,28.3811498201961,34.053511400103,39.4997824503804,43.0254505007327,43.5613704109546,41.0735669865024,36.3427187687592,30.7737987561277,25.6494329634055,21.5921348898978,18.6985107525859,16.8003477741252,16.8562884498889,15.8374790872637,14.8530723551156,13.9854203700435,13.3015797371599,12.817255222579,12.5194971118268,12.3919079487714,12.4262120328244,12.6268203622696,13.0098907448298,13.5961118977862,14.394995157154,15.3752156144252,16.4285506893669,17.5371001394124,19.2120838448501,21.6555970538347,24.8175921600466,28.4014232771382,31.72920297042,33.8741919851678,34.2157576375056,32.7226807304812,29.8622814474016,26.3962852970701,23.0424756409179,20.2457772381129,18.1895923751898,16.8562885424406,16.8885020398518,16.283911426856,15.6694505858164,15.1314998405268,14.7220380350595,14.4423630317104,14.273450902835,14.1981580387775,14.2099814515202,14.3159007494825,14.5359796559547,14.8958255275674,15.4083645037149,16.0441941812422,16.6994812248043,17.3260117271631,18.307550283478,19.7439033453709,21.5372133420359,23.4696921202178,25.1896744317075,26.2833719367067,26.4776197174294,25.7487450787128,24.2921358892261,22.4414073367046,20.5495971613956,18.8966239100146,17.6588829490042,16.888502092769,16.8992464161114,16.7286606296693,16.603689683033,16.5792315596601,16.6431732296932,16.7463218654197,16.8366726345034,16.8759579857027,16.8484715556442,16.7651568620237,16.6644670721114,16.6008759386499,16.6208930403415,16.7390955214304,16.9252650825221,17.1240876479929,17.4763182580137,18.0571694470207,18.796460904778,19.5870469698662,20.2822240607185,20.7271816244615,20.8198477795943,20.5435911082893,19.9602610096386,19.1900863203193,18.3803338583272,17.6734563121961,17.1681706724153,16.8992464387427,16.8991708764501,17.1663106577929,17.6689027054686,18.3722374109323,19.1780492718085,19.9444621146942,20.5249100070422,20.7997708648989,20.7075169045283,20.2647110738661,19.572913804852,18.7862008058536,18.0506733195913,17.4730307319601,17.1232313819209,16.9258734570049,16.7416039921014,16.6259543772648,16.6086059748677,16.6746592138181,16.7773336483319,16.8618847448344,16.8896643975251,16.8496745288612,16.7577053435918,16.6522379925219,16.5855996896447,16.6073588634572,16.7300883392554,16.899170865456,16.8883200363092,17.6564671930932,18.8910099989367,20.5396189734258,22.4260476106765,24.2710816327706,25.7229268189045,26.4492642282787,26.2554999276133,25.1652908297327,23.4507251042896,21.5240105053434,19.7357706282249,18.3034117795655,17.3247822553226,16.6999705197117,16.0463227900452,15.4123368453336,14.9015422601797,14.5431781476402,14.3242243742918,14.2189927174048,14.2073570531796,14.2823068714934,14.4503477215312,14.7286687945534,15.1364061605965,15.6724631210802,16.2851979422401,16.8883199838734,16.8559526774531,18.1867407393676,20.2393823848995,23.0310306901514,26.3781021115216,29.8363829407317,32.6899796689734,34.179245926054,33.8380931591177,31.6979543255499,28.3778493033196,24.8018443504212,21.6462333074036,19.2073715456119,17.5355618788476,16.4289873501747,15.3770583400055,14.3980756925147,13.6002325133508,13.0148430126223,12.6323818367485,12.4321416830751,12.3979479915564,12.525375818293,12.8226880950409,13.3062769963147,13.989112020758,14.855549202134,15.8386491313966,16.8559525851231,16.7998929996251,18.6955827364401,21.5856634815129,25.6377243243779,30.7547756540313,36.3151112766427,41.0387244931739,43.5228185440354,42.9870941839171,39.4662411562451,34.0283708821642,28.3647652015274,23.609765369331,20.0925661594134,17.7230424158824,16.1361535465887,14.7684554499019,13.5808092304173,12.637887281217,11.9481093680929,11.4937145902924,11.2521431232215,11.2069054693268,11.3547819281717,11.7073255706905,12.2842694233235,13.103065587681,14.1591902831768,15.4047295427213,16.7998928816913,16.722615659791,19.1079470108647,22.7478048315779,28.0077362856633,34.9350827190795,42.681941159442,49.1650646168349,52.3619326378501,51.6253310634979,46.9309810094739,39.4436456389555,31.6711256039695,25.346475794975,20.8355301285882,17.8529600621367,15.8562762981081,14.2627812272281,12.9626361236153,11.9612072363692,11.2383353554208,10.7647056440882,10.5134035805515,10.4650282998241,10.6157340201977,10.9804985609781,11.5835020537304,12.4511005996796,13.5994731130829,15.0169447856035,16.7226155252333,16.6395909515921,19.3804968563381,23.5831019111693,29.8039314037454,38.2064247454806,47.5849804747573,54.8859870385718,57.8809052217791,57.1266587801304,52.1724243738953,43.4635177923699,34.1338773071957,26.598592336552,21.3426933533815,17.9136373305578,15.6283449422605,13.8963885089746,12.5447285047423,11.5295926315733,10.8090328272853,10.3437131609392,10.1007432513067,10.0539004796535,10.1968657439834,10.5503828290987,11.1450923308219,12.0158798053552,13.1977803497693,14.7147863552472,16.6395908063401,16.5811301229217,19.5235971558419,24.0575516084705,30.8736207988425,40.1739744057052,50.3232803432218,57.5005837960394,59.7483298681199,59.2624581319157,54.6522429611374,45.6000214563721,35.4580255080115,27.2515571234476,21.5917633676564,17.922747891951,15.4875034328176,13.6917335480285,12.3219875701223,11.3089484292825,10.6002343497171,10.1511194647076,9.92402647780941,9.88103977076292,10.0101447933031,10.3463487605299,10.9234087105947,11.7821886938089,12.969306444314,14.533044710909,16.5811300477381,16.5762281262922,19.5689181876698,24.1930946548645,31.1823162370609,40.7159808530609,50.956487040002,57.9033176693583,59.9903881112004,59.4086864347509,55.032646079411,45.8971931156655,35.6061740653996,27.3178915401846,21.6124741850207,17.9094307598728,15.4553631995583,13.6555002751067,12.2832597890007,11.2696741026717,10.5630756494718,10.1183763375032,9.89620590050508,9.85666286245943,9.98295596471559,10.3105530159199,10.8801763059283,11.7328621162112,12.9181121969667,14.4934010553342,16.5762279764331,16.6300846050746,19.5149238721002,23.9691965987069,30.6652414491105,39.7451593038613,49.5979700254771,56.7475885258143,59.1762590702566,58.3686751257103,53.4462393276603,44.3788081032257,34.6438225883664,26.8494547926529,21.4330310140558,17.8874299366205,15.5355266682018,13.7863444088227,12.4245239133499,11.403826116133,10.6836206584014,10.2230958794391,9.9870199786984,9.94355907840379,10.0801410887054,10.4218518211339,11.0028115929843,11.8616997657666,13.0446324659155,14.6019615255448,16.6300844599265,16.7231478078355,19.3310224658045,23.3436421288008,29.284257427081,37.2490474419364,46.0553257697579,52.9275109549557,55.7390226421428,54.5714436357708,49.3123234498797,41.084760703899,32.6497132042221,25.858479427407,21.0368974881069,17.8369581181549,15.7105856443687,14.0766427709069,12.7528325624808,11.7335584500451,11.0004171367788,10.5231423627504,10.2719794823221,10.2232173028123,10.369558886754,10.7264600285916,11.3205346101957,12.1843466037513,13.3528852282401,14.8514193702862,16.7231476686953,16.8249001549408,18.9979472617184,22.3259514302742,27.1283145674675,33.3950118120549,40.2932486811678,45.8974698880377,48.3593337962069,47.1860355254038,42.7148770675227,36.2864805904561,29.7636769045792,24.3650024981284,20.4013132470084,17.7266847755591,15.9475820000418,14.5055116723335,13.2713187618003,12.288216220531,11.5665186035565,11.0900939817401,10.8357973381876,10.7850672317508,10.9323798546533,11.2891353349857,11.8772398840002,12.721788038865,13.8402941253218,15.2184535183879,16.8249000218798,16.9085168193938,18.5390121188868,21.0282045009646,24.5051242128472,28.8438042414302,33.4627836778354,37.1981141604161,38.8721845745006,38.0600011778398,35.074656292186,30.8197615151296,26.3809398307565,22.5261701524608,19.5729265056424,17.5505620636143,16.2109049731618,15.0411883920206,13.9772814282143,13.101767707526,12.4489550630969,12.014494261349,11.7801967158135,11.7311322636422,11.863829088721,12.1887175572016,12.725561662239,13.4933397829248,14.4913186284588,15.6638419009415,16.9085166950964,16.9612988409418,18.0201473623051,19.6395596263302,21.8402356539124,24.453690076189,27.1012075730123,29.1833692064901,30.1252217397531,29.702227427777,28.0682838835731,25.661784714878,23.0236671177592,20.6004207529873,18.6642520770929,17.3335501300172,16.469329608181,15.6504233517731,14.8696380255635,14.2192652094308,13.7363663724972,13.4161238995837,13.2417220322559,13.2011568919853,13.2936140084526,13.5309769970854,13.9341307902057,14.5207660323939,15.2814460489002,16.1405593491949,16.9612987278784,16.9838215220035,17.5117069094136,18.3307910710489,19.4531859354533,20.745223785442,22.002123029806,22.9664175782618,23.4102311656586,23.2388343925051,22.5028409959587,21.3683931585934,20.0628068219536,18.8109931730868,17.7910833443729,17.115034116149,16.7017715657683,16.3101848159932,15.9564571537712,15.7018540698364,15.5465804822363,15.4618619586949,15.419411079076,15.402797118539,15.4119570320882,15.4648178304127,15.5939518797323,15.8313543701074,16.183784208534,16.6046714180019,16.9838214330274,16.9945098027593,17.0290573389396,17.1876905004966,17.4636030580524,17.8275448392414,18.2088129627365,18.5153984787172,18.6666001524633,18.6244603610746,18.3987907692275,18.0408064710918,17.6313610843436,17.2634660454109,17.013355164091,16.9145706677723,16.913942158938,17.0106717770875,17.2578932586582,17.6225171670429,18.0287644073483,18.3841158094845,18.6081636265266,18.6499738316494,18.4997946345417,18.1953879557946,17.8170332815398,17.4562804850136,17.183422627032,17.027225802902,16.9524030875537,16.9539192037432,17.0307209068097,17.192550887141,17.4707417647083,17.8368218155571,18.2199196953512,18.5278195134087,18.6796360697925,18.6373149844085,18.410696318163,18.0511297245663,17.6396497488354,17.2695381031369,17.0166605681932,16.9164112918929,16.9157067776583,17.0136710851918,17.2632692288313,17.6297090522656,18.0376035734026,18.3942244851441,18.6190313098255,18.6609869711325,18.5103181264473,18.2048614623085,17.8250343006488,17.462539772944,17.1877848604277,17.028755272635,16.9976794865613,16.985812762331,16.6092228628412,16.1917325103879,15.8431872941439,15.609273549882,15.483027946973,15.432202835698,15.4240148329003,15.4404174639144,15.4814644294104,15.5636936850837,15.7155753998764,15.966332537063,16.3160485785213,16.7044594059252,17.1158742566669,17.7914222784658,18.8101217010437,20.0598123876805,21.362776900851,22.4946988781192,23.2289331946289,23.3998462070298,22.957002049728,21.9948694484132,20.7406346725295,19.4510248558596,18.3308612525751,17.5126500777079,16.9858128122547,16.9639780911309,16.1453909216923,15.288806384176,14.5304829152408,13.945892796673,13.5443659147283,13.3081265504625,13.2162158550679,13.2567023378614,13.4303741660464,13.749244247923,14.2301567718004,14.8780885695983,15.6562631593808,16.4725739652957,17.3349606850247,18.6648052915294,20.5991233364665,23.0192842665785,25.653285425837,28.055476323859,29.6862105575493,30.1081855773415,29.1679700032109,27.0896458126288,24.4466974544238,21.837117471702,19.6392678169312,18.0217630802788,16.9639781498902,16.9117923167403,15.6688960105695,14.4979926577136,13.5012630774807,12.7344777618216,12.1984136778729,11.8740674656207,11.741643320878,11.7906906157852,12.024663663104,12.4584834473764,13.1103391511146,13.9845633226895,15.0468883273225,16.2146834827752,17.5527355368339,19.5739672909424,22.524919200147,26.3757045765567,30.8087792563397,35.0573347223276,38.0379180714168,38.8485535747252,37.1768380466524,33.4472980351406,28.8350032387799,24.5016972232844,21.0282107386748,18.5409102356592,16.9117923798679,16.8286194361221,15.223453873182,13.8461516635292,12.7281138982261,11.8838511326422,11.2959501748091,10.9393382551332,10.7921072278877,10.842855133726,11.0971027044086,11.5733994469321,12.2948565773775,13.2775069758452,14.5108919249044,15.951681343628,17.7295339191803,20.4031187275335,24.3645231854183,29.7588663576017,36.275021288802,42.6961283169637,47.1625741182471,48.334649760394,45.8750655329338,40.2772470350269,33.3866095583429,27.1257470918716,22.3268631187912,19.000492085384,16.8286195033614,16.7271429109226,14.8560802098085,13.357809714176,12.1892322676473,11.3252592216904,10.7310025033132,10.3739550054475,10.2275572836114,10.2763979220755,10.5277293170219,11.0052195746452,11.7385720083271,12.7579253195933,14.0814892980153,15.7147345482966,17.8403464674192,21.0396659025507,25.859556213128,32.6470588334254,41.0760691451997,49.2976626563679,54.5549896811431,55.7228432778455,52.9119321503706,46.0439468608856,37.2439894990083,29.2840209229152,23.3459830136358,19.3343395553785,16.7271429811409,16.634198139581,14.6061202346277,13.0486350241134,11.865364753133,11.0060542583757,10.4246395406497,10.0825159892043,9.94569522749325,9.98927255880596,10.2257881572132,10.6868054402524,11.4074981413671,12.4285743828738,13.7905251007458,15.5395154139499,17.8912370373658,21.4369071301735,26.8527398437625,34.6448830662216,44.3755849127138,53.4392656986294,58.3623016025289,59.1706535519759,56.7413318581453,49.5936761972329,39.7452571065064,30.6684139412819,23.9734151643528,19.5190890706339,16.6341982128392,16.5804386027046,14.4970973362835,12.921394286989,11.7356826140766,10.8825030834038,10.3123548624986,9.9842049453395,9.85770605773853,9.89724204629258,10.1200067128112,10.5652722368286,11.2724033877274,12.2864721575267,13.6590649832062,15.4591626857249,17.9136991315543,21.6177202085826,27.3240077081415,35.6121475532093,45.9008484620977,55.0328967335471,59.4078878158523,59.9898246225381,57.9034297122577,50.959150542663,40.7223037175755,31.1896030421419,24.1995169093312,19.5740409444825,16.5804386783654,16.5855376740199,14.5364565851075,12.97214761451,11.7845367272085,10.9252978338872,10.3478148179223,10.011022254799,9.8817137422262,9.92483517779494,10.1523258432201,10.6019400369607,11.3111335292099,12.3246571154584,13.6948814158643,15.4912434412524,17.9276692054457,21.5987980241027,27.2612260814204,35.4700734161761,45.6118853104623,54.6596016499009,59.2653815506224,59.7511616442575,57.5064129606711,50.334529237103,40.1874124108456,30.8853731789418,24.0664010704855,19.5298329713214,16.5855377499191,16.6442240307533,14.7180281072195,13.2003511508183,12.0179517451116,11.146763845322,10.5517839116317,10.1980813842283,10.0549864646013,10.1018432909932,10.3449811141086,10.8105830152262,11.5315101016236,12.5470860636416,13.8992881675514,15.6320991112127,17.9192770805579,21.3517618053127,26.6122654662585,34.1528559348751,43.4857852425518,52.1928315563259,57.1426148842655,57.8954270603755,54.905758074866,47.6081246350928,38.2277170265231,29.8202698573119,23.5944719153851,19.3879058464365,16.6442241040058,16.7272258755302,15.0199544421376,13.6017789606154,12.4529050420296,11.5849501099122,10.9816997384332,10.6167953808793,10.4660420864694,10.5144484740764,10.765870161467,11.2397100795422,11.9628876947053,12.9647332705256,14.2654488757042,15.8599135718276,17.8590163462523,20.8462848081168,25.3636674829489,31.6966918984755,39.4776754504958,46.969973142711,51.6647112727594,52.4007451029149,49.2044516867507,42.7180260072722,34.9635811107459,28.027962196889,22.7612031337873,19.1161658069363,16.7272259432958,16.8040395831939,15.4073638474708,14.1611483571734,13.1045156845845,12.2853399248381,11.7081552100894,11.3554724636846,11.2075461070926,11.2528145480489,11.4944997590477,11.9491029628923,12.6392002984617,13.5825707025369,14.7708035606196,16.1394050885665,17.7288973491443,20.103986068344,23.6286468249071,28.3937395315702,34.0691472342704,39.5175367667681,43.0440138551329,43.5798139329502,41.0912432177003,36.3586166590763,30.7870428409298,25.6597878553068,21.5998261528269,18.703815972325,16.8040396424571,16.8592160299316,15.8409051036599,14.8570627355759,13.9900837832077,13.3067368244943,12.8227979894028,12.5252805343984,12.3977805111849,12.4320254281078,12.632434764238,13.0151841736762,13.6009870290346,14.3993747212906,15.3789714521369,16.4315793848473,17.540559877146,19.2181959767061,21.6644235047153,24.8296803830441,28.4169862608838,31.7478414570314,33.8946974771022,34.2364520382291,32.7419370029262,29.8788188851344,26.4094936112051,23.0524094667713,20.2528533353772,18.1940803054398,16.8592160757918,16.8901659457551,16.2870379201102,15.6734644082331,15.1367146174055,14.7282417234616,14.4493104585325,14.2808790776706,14.2057762795525,14.2175001919576,14.3230432885809,14.5424977010483,14.9015059197605,15.4130222454626,16.0476794916518,16.7017741814729,17.3285246306997,18.3126456707952,19.7516417890893,21.5478464514238,23.4833916814613,25.2060766250824,26.3015042438739,26.4960448021267,25.7659896634819,24.3070468628528,22.4533724033425,20.5585267281008,18.9026920261687,17.6624075724612,16.8901659677468,16.9003821121183,16.7312455027742,16.6079246335554,16.5850905802033,16.6505817872368,16.7549301795169,16.8460979692362,16.8857329760545,16.8580978808017,16.7741578187595,16.6724381131626,16.6075002161301,16.6259445626712,16.7421629192081,16.9270348605753,17.1259747056301,17.4801696778797,18.0637144338144,18.8054450975103,19.5984103082571,20.2955416956622,20.7417247657321,20.8346473892996,20.5576376528467,19.9726934158817,19.2003180219297,18.3880508662517,17.6787233571786,17.1700765467423,16.9003821207421,16.9003056114283,17.1680473630768,17.673604804702,18.3789453384945,19.1867853276684,19.9549465861616,20.5366687712284,20.8121237367325,20.7196707356215,20.2759029897719,19.5825625934457,18.7939476466536,18.0564451609772,17.4765213453071,17.1250236832067,16.9277163724285,16.7449584425845,16.6316179422938,16.6161700567148,16.6838731952498,16.7878193504847,16.8731451394491,16.9011091655915,16.8606863462993,16.7677078537194,16.6607639372715,16.5922464454996,16.6120502316133,16.7328253040575,16.9003056064488,16.8899740718394,17.6597161115109,18.8963864142837,20.5472956121079,22.436088940053,24.2833749438715,25.736986518674,26.4642181496838,26.2702446474846,25.1787431550005,23.4621325068175,21.5330527640233,19.742535642885,18.3080302252578,17.3271577017644,16.7023332432964,16.0500794770395,15.4174899773045,14.9079277729198,14.5505805340885,14.3323870158201,14.2276134374939,14.2160983401241,14.2908155971694,14.4582707378265,14.7356875244295,15.142230843593,15.6768633859073,16.2884908385663,16.8899740490658,16.8588459727792,18.1908936400624,20.2456631223766,23.0395216213295,26.3890194737588,29.8496725623186,32.7051558066124,34.1954183835138,33.8541750284602,31.7127991621759,28.3905573544286,24.812022174295,21.653924902598,19.2129204907708,17.5388456662796,16.4320843501968,15.3810605307668,14.4028517022978,13.6056264934539,13.0207524073337,12.6386830738572,12.4386840773128,12.404561005162,12.5318790596185,12.8288969095194,13.3120140935387,13.9942388848854,14.8598595539997,15.8422315898029,16.8588459265696,16.8035352126882,18.70053719167,21.5925478864281,25.6466022294143,30.7656190587595,36.3275274427637,41.0519975148451,43.536396512882,43.0008599502046,39.4798506251212,34.0409171783793,28.3753376154127,23.6180160633387,20.098707721433,17.7271045013053,16.1398294749195,14.7725339926798,13.585172245453,12.6424194852927,11.9527783090378,11.4984986682518,11.2570074261109,11.2118025826849,11.3596587697832,11.7121269358451,12.2889379612839,13.1075559636027,14.1633918985884,15.4085157358348,16.8035351533104,16.7266939734881,19.1132825673664,22.7548765117438,28.016420162282,34.9447930186894,42.6914149125457,49.1731443296406,52.3688443708217,51.6326648432154,46.9400545242657,39.4540402663183,31.6810299505478,25.354678350525,20.8418436817959,17.8574792901007,15.8602381146218,14.2667432988064,12.9665281368673,11.9649602409234,11.2419513948238,10.768216690112,10.516854256299,10.4684747129262,10.6192296427518,10.9840972144578,11.5872479428168,12.454990387401,13.6034397145274,15.0208439164331,16.726693905773,16.6437817858335,19.3858302659827,23.5899787595322,29.812074437273,38.2146485386046,47.5911247053604,54.889045472981,57.8822913064183,57.1284666132072,52.1767730867025,43.4711698780132,34.1426039195028,26.6063380906239,21.3488386070546,17.9182665091032,15.6323175347571,13.9000947313416,12.5481366958013,11.5326546426272,10.8117500026034,10.3461350144513,10.1029750839901,10.0561241300141,10.1992697103141,10.5530377501789,11.1480546728808,12.0192069876399,13.2014114532779,14.7186021547174,16.6437817127493,16.5852556401586,19.5287811605402,24.0641916324817,30.881393559044,40.1813324529037,50.3275723433826,57.5015124841647,59.7483221034272,59.2626200095828,54.6545262362493,45.6062073764557,35.466032951217,27.2589413874517,21.5976949621168,17.9273141856687,15.4913581398557,13.6951949305132,12.3250406476543,11.3115362115855,10.6023306783001,10.1526821157977,9.92514626405788,9.88202360481241,10.0114034042982,10.3482707795786,10.9258179926435,11.7850788509025,12.9726220229466,14.5366938020795,16.5852556023189,16.580341360013,19.5741054841174,24.1998061490048,31.190261469001,40.7235306650831,50.9607654011673,57.9041491725878,59.9903696024228,59.4088779350104,55.0349442860916,45.9034589311554,35.6142560878792,27.325314833243,21.6184133236732,17.9139951696542,15.4591672701707,13.658898450879,12.2862438602322,11.2721788519393,10.5650810969041,10.1198659471009,9.89715563187302,9.85761330387413,9.98412132215555,10.3122629302873,10.882408936923,11.735591773759,12.9213004837437,14.4969866217613,16.5803412845528,16.6342889778894,19.5203241075676,23.9763497650389,30.6739637193548,39.754035074878,49.6040961704747,56.7499567576099,59.1772665219555,58.3702469825771,53.45066216508,44.3866514168244,34.6527465467525,26.857361447152,21.4392704223577,17.8921358543304,15.5394039458968,13.7898840505418,12.4277174430836,11.4065997773792,10.6859495358741,10.2250069624079,9.98857158557462,9.94503275871199,10.0818241277097,10.4239029598343,11.0052898997633,11.8646090634635,13.0479530666559,14.6056505383678,16.6342889047504,16.7273717107769,19.3366511837044,23.3513971309074,29.294173556849,37.26030936327,46.0656770326434,52.9352171764709,55.7450674119061,54.5782867716281,49.3215271828467,41.0954870389586,32.6600173633601,25.8670839320117,21.0435032906842,17.8417594919171,15.7144979042822,14.0803787725519,12.7563780460378,11.7368425558801,11.0034386475619,10.5259569663855,10.2746556402709,10.2258345697986,10.372242486659,10.7293081974092,11.3236128797116,12.1876923335825,13.3564955038302,14.855244898973,16.7273716405761,16.8288556232929,19.0035355178649,22.3340367542897,27.1391752568563,33.4086072793146,40.3085519672598,45.9129741581994,48.3743790891594,47.2010652540644,42.7297922498757,36.3001831749531,29.7751866542542,24.3740120076337,20.407958723546,17.7312601487484,15.9513066505935,14.5093457440826,13.275216128547,12.2921043917913,11.5703658557875,11.0939062242835,10.8395872701107,10.7888438924673,10.9361525914142,11.2929183175655,11.8810539817347,12.7256501893901,13.8441829147288,15.2222723544677,16.8288555560022,16.9118398950617,18.5441435350867,21.0359491828572,24.5159682937412,28.8580378303779,33.4802327954286,37.2178152922411,38.8926548521128,38.0798590838204,35.0926056331056,30.8347983197702,26.3927365612464,22.5349562171774,19.5790971161483,17.5544927867663,16.2141845391625,15.0449778701283,13.9814833985977,13.1063282415633,12.453781277305,12.0195066990699,11.7853059465946,11.7362441397321,11.8688557704515,12.1935814882859,12.7302053349841,13.4977238259791,14.4953778173081,15.6674223784495,16.911839831878,16.9636257658983,18.0246789694162,19.646439549266,21.8500372049528,24.4668111175303,27.1175460378849,29.2022446448167,30.1452025445524,29.72163325042,28.0856280740316,25.6761207477955,23.0347258014244,20.6084139179899,18.669529307242,17.3364795536398,16.4720165829703,15.6540552411217,14.8741317541538,14.2245705112928,13.7423319125759,13.4225402360451,13.2483826525927,13.2078453116426,13.3001221252023,13.5371121966474,13.9397260106967,14.5256787712745,15.2855576013108,16.1436908605543,16.9636257072232,16.9848403908258,17.5149024502322,18.3368606095562,19.4615660412398,20.7564168931085,22.0158949337682,22.9821625400692,23.426886670681,23.2551391307395,22.5176360474977,21.3808534224508,20.0725370226586,18.8179364254027,17.7953041127985,17.1169393719796,16.7038643252857,16.3135408789247,15.9613378644267,15.708024066139,15.5538859053427,15.4699689894874,15.4279688929556,15.4114239079413,15.4202738701806,15.4724773981958,15.6006577236515,15.8368691907858,16.1878225409525,16.6073740711764,16.9848403412096,16.9964612593343,17.0307210255671,17.1925510322004,17.4707419351052,17.8368220072619,18.2199199034867,18.5278197322171,18.6796362926777,18.6373152045754,18.4106965289588,18.0511298220931,17.6396499218962,17.2695382475856,17.0166606710277,16.9164113536708,16.9157067137902,17.0136709805288,17.2632690834661,17.62970887888,18.0376033785694,18.3942243800992,18.6190310907693,18.6609867496576,18.5103179092285,18.2048612558247,17.8250341105866,17.4625396041955,17.1877847171467,17.028755156302,16.9525582942395],"Archive1105_field2":[-2.69,-2.66746497311275,-2.47446484610175,-2.15139674261225,-1.72793537523854,-1.22987443377484,-0.68203889792221,-0.111833010973317,0.454297904563785,0.994874354674993,1.49404503835173,1.93812760057896,2.30777058758101,2.57286580263647,2.70471193687987,2.70471665063898,2.57293461592021,2.30784263192036,1.9381255105374,1.49396332447706,0.99474587200424,0.454166936023454,-0.111934329869238,-0.682101007536798,-1.22991010514055,-1.72797192972584,-2.15146209065758,-2.47456852491193,-2.66767988621792,-2.69,-2.69940031218092,-2.54136830798166,-2.24004171108604,-1.84182580794063,-1.40287782781433,-0.956795301828587,-0.51810272229469,-0.0890653063301535,0.335319322020952,0.762504454994094,1.19629367670206,1.62918661835816,2.03479229213971,2.36838493530504,2.59032675053829,2.69141095238445,2.66705277023991,2.52977376991551,2.27338148337846,1.87682227941708,1.32534144096303,0.632756287955582,-0.145354635655513,-0.921001270724772,-1.59971580072316,-2.11452293028748,-2.45260653568408,-2.6376749511886,-2.73806538694287,-2.69940035734284,-2.52987154086537,-2.27826639303519,-1.91697254338831,-1.51453379877142,-1.11657316212909,-0.743566217703919,-0.39782577413476,-0.0705524177992145,0.253065467334173,0.588908080073475,0.94798864361968,1.3300733750796,1.71858698634484,2.07957930954569,2.37046643178058,2.56691892339151,2.68296343622179,2.73683864738697,2.67133414684003,2.38504971435288,1.78954014910098,0.882887176470557,-0.209346044823962,-1.27542667616897,-2.10795520135048,-2.59499629618638,-2.77569836571067,-2.76512940670778,-2.67114681488727,-2.52987155909358,-2.28414871804758,-1.95229047562798,-1.57316066961841,-1.20440505343978,-0.869709742019788,-0.572071258873639,-0.304559279539494,-0.0551103525897111,0.191288795516172,0.450187354928253,0.73405091804728,1.04932339348919,1.39382058410221,1.75107921069177,2.08819022285991,2.37424174385585,2.64394980587901,2.91781634907749,3.09388235498951,2.96742592631523,2.32772133869672,1.14100778206608,-0.346797085549873,-1.74516256106431,-2.72110403959524,-3.12572691337629,-3.08697997017126,-2.84159912811469,-2.55986300726463,-2.28414874281219,-1.95463361483546,-1.58886426027436,-1.23304705491529,-0.920867592634046,-0.655728774863553,-0.428582215960811,-0.227949027401509,-0.0424126331438872,0.140033389015913,0.332307251668698,0.546383983189804,0.792828543879416,1.07982861493836,1.40636042799851,1.75272074248258,2.09496427925004,2.48003071769469,2.93104758936319,3.3207732166373,3.34463133446813,2.65083146844469,1.19887348712581,-0.576031893206959,-2.15184431577729,-3.17742698897312,-3.45757893422188,-3.20111744578027,-2.75138020553272,-2.32278652202066,-1.95463364410766,-1.49973449105935,-1.17081640149152,-0.883741763893646,-0.648889047010187,-0.458227991379557,-0.298811442827618,-0.159425781694783,-0.0315521870976783,0.0932777265192651,0.225581379153881,0.375459095093231,0.553427755841633,0.771165624948009,1.03546711485007,1.33781372148381,1.66594656301221,2.06329145564147,2.54721871812529,2.98671029037086,3.04148448985527,2.31106654973785,0.850796031172647,-0.740833349165594,-2.08015052672248,-3.00615903693079,-3.18507769540931,-2.83498071334901,-2.32566383252184,-1.87022448002348,-1.49973451894599,-0.890259595516222,-0.676361550910512,-0.502737593286103,-0.366711474047699,-0.258883866554673,-0.169626674683281,-0.09191634627476,-0.0212564034625513,0.0479326032904218,0.123218038037569,0.210453404067686,0.316216381237186,0.449355622372656,0.616538303959208,0.81432945605583,1.03650482002505,1.3083968567568,1.62986783027754,1.88920794485188,1.83205823490043,1.2229642344169,0.266461427869895,-0.564788678455492,-1.37493652130147,-2.012574603082,-2.1282426042171,-1.84932523331581,-1.47180981814201,-1.14748859113743,-0.890259614223983,-0.16515206257017,-0.11915305189936,-0.0886918736768492,-0.0671724933510573,-0.0501460024647992,-0.0355129323811603,-0.0223890892766138,-0.0099301427408946,0.00444801999694859,0.0225243731503731,0.0436097742697228,0.0695638126637966,0.103044574699443,0.144919501422633,0.190735036200435,0.23505362179596,0.283445999593742,0.32148703916018,0.293842109033015,0.141990970571891,-0.0748144056417655,-0.225417115512329,-0.307378406716101,-0.557015691245179,-0.71364896008665,-0.624425298427181,-0.453551330360286,-0.317922968585178,-0.228638810820843,-0.165152065711777,0.578026494953352,0.446528612259466,0.329190375340022,0.233644148164722,0.158703777480544,0.09866946966475,0.0482703632446767,0.00405481589457175,-0.0361922133462523,-0.0793045161065698,-0.127980508119252,-0.185044886066373,-0.255651202606742,-0.346783501873899,-0.465520552373694,-0.6148033840618,-0.802050159110453,-1.04421673694066,-1.30822054976361,-1.43548246220574,-1.20118024284002,-0.675847437913553,-0.244529094110395,0.249681947685408,0.801653061133768,1.09079935660312,1.07418652517969,0.908479549026451,0.728250709388119,0.578026508941267,1.22765933553391,0.957384122006994,0.717020732077384,0.518736877414383,0.360107397014713,0.230793653259082,0.120485732035527,0.0215188202543164,-0.0755901587717149,-0.179060210779507,-0.294923930125691,-0.431078259279469,-0.598600746386197,-0.80946275958477,-1.06880501765566,-1.37049469845076,-1.73405000838077,-2.18193365901825,-2.6150146962427,-2.74998865484794,-2.26744073627685,-1.23933606187306,-0.111240746647293,1.22717162645486,2.27643998560748,2.59728947246988,2.35787172358782,1.93272581731182,1.54040069798713,1.22765936238665,1.72585606533681,1.38830759716959,1.06961000622719,0.79247474779695,0.560607296064114,0.365192099172855,0.194988308849635,0.0389465329936207,-0.114591613422307,-0.276513123071727,-0.456685534694019,-0.666058777821138,-0.917103528396823,-1.21950066306353,-1.56647171126067,-1.93310731585612,-2.34987698901642,-2.847453750258,-3.30167927899714,-3.40272356233192,-2.79354195244952,-1.49064723839199,0.184298390874508,1.90249476519747,3.05513416857917,3.34785620546132,3.04360054802919,2.54822817483582,2.09450136080879,1.72585609807928,2.0891917727971,1.75501811430451,1.40447836037127,1.07139894327919,0.772702883655441,0.509231878098032,0.274179930903193,0.0568156721846774,-0.156467915539413,-0.379849608918244,-0.626197982869579,-0.906565817582833,-1.22857556445183,-1.59003554930697,-1.96332238990074,-2.30178045546647,-2.64346416514586,-3.02020385392984,-3.30986102863151,-3.25208062168994,-2.57250702056994,-1.2620466280665,0.389485626353233,1.94776137120532,2.96523126820196,3.29200088276593,3.12802905794331,2.76971727052463,2.40984000488002,2.08919180500424,2.36339336136276,2.08238885320016,1.73824307449582,1.36887357296311,1.00798653889675,0.672449740537932,0.364894155300417,0.0770839437245089,-0.205870367021669,-0.500474697427327,-0.820482608743381,-1.17329522041313,-1.55542711184038,-1.94490258304744,-2.29214203243174,-2.54106375885198,-2.73511559367914,-2.90140497829661,-2.9459043488881,-2.69972979282857,-2.01398274134531,-0.911526113411147,0.389277288545165,1.58616752327206,2.42493236424464,2.82541000356994,2.88342292710731,2.75930097881006,2.57662333017985,2.36339338791335,2.57644879701314,2.37439606465558,2.06466108578943,1.6818968989844,1.27124897782374,0.865594274038014,0.477543411333442,0.103711748367854,-0.267863357780998,-0.650606394228893,-1.05347802869993,-1.47547033422451,-1.8989612051179,-2.28250440051787,-2.56494948785754,-2.70364929359466,-2.74164032039232,-2.69540532900851,-2.51673755874873,-2.13055327932572,-1.49128035747391,-0.640700252922565,0.296064043408981,1.16811804690283,1.85660412868144,2.31476441087568,2.56644471583177,2.66820807782205,2.67015828655578,2.57644881432914,2.70772196859345,2.59510504506109,2.34874480761226,1.99031807455653,1.56427927202008,1.10492270147856,0.629278793806476,0.143545506310489,-0.349521534632715,-0.84546172464754,-1.33514153941823,-1.80300375746455,-2.22294620080373,-2.55235547583466,-2.74419805236443,-2.78584279540042,-2.6956989395165,-2.48124090453178,-2.142224339863,-1.68161058021047,-1.11115616645749,-0.464757540751861,0.205908778892117,0.847882359639145,1.41996973032839,1.89901617528592,2.27609049549625,2.54476833764199,2.69349127320034,2.70772197452968,2.70792195696276,2.69373991770303,2.54504912999427,2.27628681747569,1.899079872256,1.41991655329906,0.84776705808932,0.205786745554646,-0.464857270179441,-1.11123696101234,-1.68169945552145,-2.14235035238966,-2.48140177687194,-2.69582983927963,-2.78592571924002,-2.74423547639514,-2.55241020098827,-2.22301045236346,-1.80306083570861,-1.335174933619,-0.845455453544636,-0.349466184628823,0.143649142636851,0.629418770596052,1.10507766507793,1.56442695655977,1.99044962999754,2.3488758591935,2.59528315076193,2.70792195383589,2.57680739864546,2.67056000157877,2.66869855698615,2.56688799555607,2.31505977910904,1.85673112814709,1.16812127186142,0.295997259024561,-0.640812847765845,-1.49143888632507,-2.13075874018825,-2.51698289065035,-2.69566834619269,-2.74185494950988,-2.70379998576334,-2.56515779755719,-2.28282814069819,-1.89927837085237,-1.47570433510153,-1.05361623060659,-0.650661849520153,-0.267851962752742,0.103781565247922,0.477672991371155,0.865792220660351,1.2715259046222,1.68225585428468,2.06507661219227,2.3747875980477,2.57680738100064,2.36367839454587,2.5769979198017,2.75988812725607,2.88411539787567,2.82607945923565,2.4254886241293,1.58656716803412,0.389472903701726,-0.91158705771909,-2.01429101558287,-2.70016859879787,-2.94633924134497,-2.90177815682782,-2.73536991006401,-2.54119603214027,-2.2923965263558,-1.94530853564241,-1.55582946447054,-1.17359496243585,-0.820665315337485,-0.500562190185557,-0.205887920425209,0.0771247893770091,0.365000941596623,0.672644825445942,1.00829289159966,1.36928758498965,1.73869505131737,2.08275325398001,2.36367836761134,2.08938617491846,2.41019320449126,2.7704378544858,3.12912914852591,3.29339644652891,2.96671695360373,1.94902657128225,0.390186740515352,-1.26212321458673,-2.5732999169207,-3.25316458782357,-3.3107894732313,-3.0208460330135,-2.64381233773935,-2.30191864317671,-1.96355526123734,-1.59039798649781,-1.22893731598712,-0.906843222180895,-0.626375757242161,-0.379943722249477,-0.15649950939544,0.0568369970181461,0.274262836969454,0.50939717648148,0.772965825055189,1.07174398766225,1.40483702883705,1.75527617143635,2.08938614223782,1.72601485875745,2.09489910803647,2.54917530648169,3.04530625289925,3.3503584957927,3.0579800385284,1.90477851354516,0.185254147802805,-1.49123745172524,-2.79546424412928,-3.40510868382795,-3.30355627143239,-2.84861818764066,-2.35046002643838,-1.93334268873829,-1.56670147178649,-1.21979308118919,-0.917385559401778,-0.666281604698111,-0.456838197627198,-0.276602185422708,-0.114628342135704,0.0389572025738683,0.195053305525012,0.365322158322723,0.560803924810382,0.792720823830399,1.06985902220875,1.38848435787592,1.72601482543918,1.22784926762432,1.54092452312855,1.93399387876887,2.36029308205091,2.60099349579801,2.28048264975494,1.22980955954775,-0.110730978883216,-1.24055599591896,-2.27054640969983,-2.75376514467729,-2.617958534213,-2.18372485778011,-1.73494963180805,-1.37088383465916,-1.06905678513226,-0.809699151422293,-0.598813053527683,-0.431252507959783,-0.295054874389665,-0.179144779151584,-0.0756280525300755,0.0215281084891975,0.120544390077951,0.230897372363179,0.360249433757982,0.518904087022063,0.717190623912534,0.957524428176755,1.22784924009417,0.578292466920597,0.728939748124307,0.910065180762411,1.07718343445791,1.09530582396558,0.806196769399923,0.251845137256977,-0.244245134418491,-0.676543769154342,-1.20418025235717,-1.43974706218462,-1.31173640671795,-1.04638179665066,-0.803143159504802,-0.61528008581529,-0.465767782573507,-0.346969470951622,-0.255812269282133,-0.185186770668494,-0.128099353071235,-0.0793874851025557,-0.0362272269320092,0.0040709122576597,0.0483205584126091,0.0987543068335378,0.158813351131765,0.233767306783628,0.329322284417796,0.446674299670747,0.578292459544301,-0.164824302655877,-0.227872878783237,-0.316259056125199,-0.450531193235429,-0.620073234918702,-0.709505669355196,-0.555295628782895,-0.307410367404405,-0.226275391649953,-0.0782596598172042,0.137088124711781,0.289917151499491,0.319155740134126,0.282309696703501,0.234584062955099,0.190523005084653,0.144770098512542,0.102911005654303,0.0694410942677571,0.043503222780471,0.0224482935160756,0.00441393434193108,-0.00992429619680911,-0.0223393334212268,-0.0354204285245742,-0.050028922926162,-0.0670427780143127,-0.08854666306606,-0.118971258875135,-0.164824300335188,-0.88992591667301,-1.14677598353072,-1.47029720774334,-1.84662947298871,-2.12432904036038,-2.00855170296984,-1.37288776241877,-0.564221428412486,0.265168062407875,1.21932271462545,1.82747491759812,1.88568231385384,1.62782625692579,1.30743620471176,1.03613970812933,0.814165846755778,0.616390414671449,0.44920314177714,0.316075341856974,0.210335883766321,0.123137092950305,0.0478948013962544,-0.0212515604285247,-0.0918641038220637,-0.169531116730453,-0.25875380481032,-0.366553094095509,-0.50255103522587,-0.676140642750348,-0.889925898803534,-1.49946732397223,-1.86969916102148,-2.32453592915651,-2.83298977324705,-3.18216068244408,-3.00303662105615,-2.07828059240754,-0.740687574619159,0.849122199663593,2.30787829644165,3.03803659293648,2.98410485652104,2.54568126656729,2.06256482375064,1.66568701124889,1.33767068938508,1.03527691752745,0.770948838091583,0.553233171620008,0.375311063876087,0.225488291871555,0.0932377149119597,-0.0315463388148362,-0.159376125482679,-0.298713620708929,-0.458078160621285,-0.648689246301479,-0.88350597053951,-1.17057899461362,-1.49946729690964,-1.95443444405598,-2.32244415002201,-2.75067253570144,-3.19995984297581,-3.45598359156775,-3.17582146034423,-2.15101805005901,-0.576335786160601,1.19748533501256,2.64879401899942,3.34255668234259,3.31911472999812,2.92995966148759,2.4794629082418,2.09474187133546,1.75254520403512,1.4060842016355,1.07951160452471,0.792554062311754,0.546188971765888,0.332192900803997,0.1399841563945,-0.0424127445355963,-0.227901853631223,-0.428476289078502,-0.655550316935212,-0.920616015459211,-1.232754693833,-1.58861500599504,-1.95443441558097,-2.28396559079422,-2.55957464166811,-2.84112737564583,-3.08636410579295,-3.1250077165355,-2.72044954959295,-1.74487042024661,-0.346988195204738,1.14039519682712,2.32684934220128,2.9664500850278,3.09294476831751,2.91704964256463,2.64345405671615,2.37398105644352,2.08792926581231,1.75068761600592,1.3933953035563,1.04896981475182,0.733808367090244,0.450045467922977,0.191221354195799,-0.0551228350876081,-0.304518183197013,-0.571961315034976,-0.869510787812932,-1.20411474881027,-1.57282551319683,-1.95203294985511,-2.28396556678673,-2.52969596135097,-2.67084435596004,-2.76477044956711,-2.77531564514621,-2.59465565039203,-2.10767515790701,-1.27526005598331,-0.209307409597358,0.882803849704462,1.78932555978995,2.38467813300464,2.67081987038085,2.73627042234696,2.68248572222233,2.56657512447586,2.37011409262347,2.07912728709954,1.71813082112349,1.32970612125674,0.947731137368263,0.588744729827968,0.252974224279766,-0.0705859621088393,-0.397801894059941,-0.743472032500036,-1.11639189690189,-1.51426689524676,-1.91666965888103,-2.27805829526011,-2.52969594386383,-2.69922098379633,-2.73769008250134,-2.63744422789002,-2.45238990654661,-2.11435844920073,-1.59958618365198,-0.920885495880037,-0.145238820887877,0.632857845370822,1.32537883732359,1.87672938422673,2.27312373543803,2.52938556731525,2.66665044105605,2.69108094779774,2.59002729657949,2.36806660782774,2.03450109752224,1.62893633343852,1.19608506160183,0.76233980911845,0.335202741751512,-0.0891304680412096,-0.518113499291215,-0.95674972976283,-1.40277791086925,-1.84168594516333,-2.23989920287346,-2.54130265401525,-2.69922093959658,-2.69,-2.66746500833395,-2.47446484794398,-2.15139674547098,-1.72793537941486,-1.22987443742506,-0.682038899677542,-0.11183301003253,0.45429790870328,0.994874362309846,1.49404504390842,1.93812761454898,2.30777060216032,2.57286581335867,2.70471194046347,2.70471664701363,2.57293460516366,2.30784261731193,1.93812549654306,1.49396331333365,0.994745868169331,0.454166931849823,-0.11193433083688,-0.682101005796792,-1.22991010149403,-1.72797192554694,-2.1514620878008,-2.47456852305762,-2.6676798510201,-2.69,-2.6898424909496,-2.68285151231668,-2.49286802994729,-2.1714009682166,-1.74693378078681,-1.24518303105706,-0.691214278936617,-0.113388279264568,0.460543414012074,1.00781648113662,1.51161862064391,1.9577795704493,2.32705592074982,2.59021643679806,2.72022604914314,2.72022541137976,2.59025735012667,2.32706863120403,1.95769525067477,1.51144863623728,1.007615492776,0.460375172920792,-0.113480602350144,-0.691222542457084,-1.24513482777263,-1.7468803453988,-2.17139347137307,-2.49293537441089,-2.68302111451553,-2.74698117105181,-2.71357152692761,-2.55872140322926,-2.25811879911225,-1.85961545063434,-1.41856255570634,-0.9687153343563,-0.525030379965015,-0.0903056558268275,0.339881543260191,0.772410551929978,1.21051973258873,1.64618734599495,2.05275458693833,2.38572631648102,2.6060547115295,2.70634320527187,2.68405823362534,2.55004088642756,2.29543246262572,1.89791125351303,1.3418480863138,0.641137402672877,-0.147240444567857,-0.932871689127044,-1.61884420946097,-2.13690179377099,-2.47437205222687,-2.65806218230216,-2.74697352923745,-2.71357154516173,-2.54467559174174,-2.29479003738832,-1.9336922487577,-1.52974089676527,-1.12916126401698,-0.752717659891031,-0.403019360672931,-0.0715099943054461,0.256414192948377,0.596422043876748,0.959252189523864,1.34431366848105,1.73466769937127,2.09610109093958,2.38586254460478,2.58141438044928,2.70030355362477,2.75826339505323,2.69567658438475,2.4095580959697,1.80960952706049,0.893398991978343,-0.21163997103472,-1.29012538582283,-2.13098479297973,-2.62087404601706,-2.79945440657964,-2.78639305180809,-2.68844449880686,-2.54467563009851,-2.29862144766849,-1.96744066745612,-1.58762302896994,-1.21688380833064,-0.879587955319773,-0.579026811905506,-0.308434868346396,-0.0558326821581589,0.19375038820603,0.455823714647754,0.742761043806503,1.06082445212881,1.40751964054955,1.76593502309343,2.10265880999942,2.3885671395385,2.6615882614646,2.93974519089371,3.11913143249943,2.99301709449603,2.34845210144586,1.15148043161751,-0.349511289417314,-1.76067370283145,-2.74556279878003,-3.15319476321282,-3.11213906114115,-2.8620470071159,-2.57588820393538,-2.29862150494404,-1.96772197520549,-1.60169076731427,-1.24472644991869,-0.930620569756319,-0.6632694021784,-0.433805086906244,-0.230830390780545,-0.0429560966819197,0.14182885231741,0.336465339796644,0.552921368710223,0.80169488473207,1.09078716154203,1.41880091522489,1.76545129600294,2.10832672958208,2.49655509333868,2.95137839626672,3.34348133637614,3.36595621310378,2.66588811639109,1.20508444987802,-0.578410325478445,-2.16291019874853,-3.1968939424896,-3.48161094187779,-3.22433095940488,-2.77080258034743,-2.33791569875183,-1.96772204195203,-1.50998192429567,-1.1803484326099,-0.892174120514861,-0.655854915142273,-0.463605751774538,-0.302551275205316,-0.161502524145981,-0.0319616081744845,0.0945216417461176,0.228491042973469,0.380057867867961,0.559727556698813,0.779106446584079,1.04477401073528,1.34773843933179,1.67673049221939,2.07642028942423,2.56286475484615,3.00285324635074,3.05398271013957,2.31703375661928,0.852056694015709,-0.74155281766916,-2.08371314981873,-3.01575097330968,-3.20061059702568,-2.85190671470475,-2.3405262480663,-1.88217100557083,-1.50998198708677,-0.896212012645607,-0.681759558633675,-0.507481868390733,-0.370664040329782,-0.261986139580317,-0.171831963074292,-0.0931751776429766,-0.0215474111776507,0.0486056243345991,0.124878192155723,0.213109478969081,0.319872804487206,0.453997888981109,0.622063198550136,0.820347729200726,1.04305509868262,1.31609889410909,1.63859424841858,1.89722482561349,1.83654733395082,1.22368090949617,0.266259210081296,-0.564671084669212,-1.37505790187829,-2.01527283623954,-2.13530917521239,-1.8583147587482,-1.48016437492292,-1.15441519260999,-0.896212054288644,-0.166100741055124,-0.119965167008167,-0.0894290701659123,-0.0678335935972977,-0.050711231512393,-0.0359602786603736,-0.0226951283040327,-0.0100776246740808,0.00450109524777497,0.0228330139153359,0.0441683578402546,0.070371329022958,0.104100530652227,0.146204883246393,0.192111198092837,0.2364302683655,0.284882216201339,0.322849123712896,0.294608163363568,0.141783094395677,-0.0752260654061493,-0.225545262611861,-0.307401153780533,-0.556784606958643,-0.713781550583267,-0.625583524719603,-0.455095695994435,-0.31934453676029,-0.229802105453045,-0.16610074802472,0.582108917483674,0.45032812825759,0.332498128562148,0.236311225588595,0.160713866933254,0.100022712092329,0.0489683068116358,0.0041070437089493,-0.0367113861229968,-0.0804112404019438,-0.129644289102028,-0.187225182744053,-0.258317399561119,-0.349887660258175,-0.469010356136014,-0.618819998443268,-0.806988514190675,-1.05011144253113,-1.31407851914124,-1.4392317599768,-1.202138572171,-0.675893712057932,-0.244496890727321,0.249848884697062,0.803308406455789,1.09511871287943,1.07992199534652,0.913946933722651,0.732888578122248,0.58210894819624,1.23623088379867,0.965410892505117,0.724101312186814,0.524505437597473,0.36449332382297,0.233803320752629,0.122131865365,0.0218298958079485,-0.0766234058611799,-0.181441495355672,-0.298622767263365,-0.43605372403779,-0.604799474961529,-0.816751533025919,-1.07688780761392,-1.37955187995712,-1.74517379024505,-2.1952935818304,-2.62860100493899,-2.7596571693133,-2.27122632053551,-1.24002234502299,-0.111179330219163,1.22870269880668,2.28271750278637,2.60891583855659,2.37131848522628,1.94487309423549,1.55037304290039,1.2362309423554,1.7377125621755,1.39980523171882,1.08004052696674,0.801131713106216,0.567246008731486,0.369767219505474,0.197519853865126,0.0394646610747355,-0.116082580987219,-0.28002513528197,-0.462218162963832,-0.673580208700475,-0.926504217386305,-1.23046330293955,-1.57824972372992,-1.94591236850236,-2.36587282163166,-2.86732863069272,-3.32356181976776,-3.42181868422061,-2.80524406119666,-1.49517684002862,0.185143758165229,1.90983018742976,3.07024440106561,3.36795502068707,3.06384772459821,2.56558503074296,2.10835274869162,1.73771263245524,2.10288839712092,1.76905803343625,1.41777569184955,1.08282148447592,0.781666623719438,0.515495270616105,0.277675038978755,0.0575476568730854,-0.158482522200252,-0.384597745223688,-0.633642003553864,-0.916592013271257,-1.24089622805859,-1.60399920146638,-1.97753301087476,-2.31644771110617,-2.66188196215804,-3.04350397403739,-3.33674369695126,-3.27844802267918,-2.59225306413411,-1.27090695248399,0.392707880023386,1.96246502175838,2.98816959496568,3.31771896561145,3.15191524821189,2.7896033906662,2.4254938067423,2.1028884647576,2.37788038021375,2.09806969904927,1.75386383220074,1.38296451087335,1.0195070788406,0.680741888156176,0.369610501010744,0.0780904154513686,-0.208575813524175,-0.506794679501159,-0.830195007367359,-1.18599724574332,-1.57043725578038,-1.96113950597824,-2.30768008572425,-2.55612618753587,-2.75375063516532,-2.92484821927654,-2.97287778102394,-2.7267574668057,-2.03517449707321,-0.921137677630439,0.393775619014354,1.60313692895124,2.44945112002149,2.85175611302976,2.90754255568466,2.77938176596935,2.59242754272584,2.3778804347576,2.59134871313757,2.3909185193767,2.08194738466709,1.69847435003108,1.28558822181899,0.876370224583373,0.483860747838196,0.105106488286819,-0.271479985878872,-0.658972145810477,-1.06596312295319,-1.49107265870373,-1.91632863898904,-2.30015284521421,-2.58114138527176,-2.71872675790625,-2.75953960842245,-2.7173393240231,-2.54117586198201,-2.1542320798578,-1.50944467749867,-0.648830890255207,0.299997722195898,1.18277695544415,1.87812049177637,2.33859706861155,2.58901292816207,2.68744419915407,2.68568100385647,2.5913487481709,2.72294394546054,2.61171024107036,2.36697555204734,2.00907278871558,1.58161540782986,1.11869461791271,0.637713507234483,0.145521556084637,-0.354311321756699,-0.856437609455214,-1.35089883448974,-1.82155122701334,-2.24205908538118,-2.57029617540997,-2.76041385115301,-2.80143035526711,-2.71328825496114,-2.50164388325918,-2.16370706952094,-1.70119182870728,-1.12548325336403,-0.471081784375441,0.208765433928985,0.859182272749409,1.43742268610769,1.91957262632633,2.29677545040626,2.56337777738989,2.70948877329228,2.7229439573494,2.72312517543257,2.70969713943946,2.56357319940084,2.29684686657853,1.91949196064932,1.43723511542751,0.858975298299176,0.208619593002089,-0.471128953219727,-1.12544804338379,-1.7011330133186,-2.16369110537271,-2.50169602678068,-2.71335812995917,-2.80148682745051,-2.76043580734666,-2.57034504692976,-2.2421432207797,-1.82164845089971,-1.35097996741662,-0.856470586838951,-0.354274068763652,0.145633420111129,0.637884981449693,1.11889451093711,1.58180750298252,2.00923513290689,2.3671162483022,2.61187854849577,2.723125169026,2.59164306582476,2.68597172224259,2.68774104106249,2.58918972670049,2.33858739908857,1.87796070475576,1.18258217255736,0.299879849562227,-0.64882747730713,-1.50935023138374,-2.1541207556836,-2.541119415314,-2.71736504671459,-2.75960399467204,-2.718796903793,-2.5812920804218,-2.30041995368365,-1.91660694871001,-1.49128574236903,-1.06609345438683,-0.659026235771016,-0.271468726839651,0.105176794361337,0.483990459990555,0.876564239077414,1.28585145587797,1.69880441915253,2.08231760769187,2.39125369701668,2.59164302987431,2.37804551209714,2.59260621062559,2.77964577033867,2.90778850209243,2.85189845376216,2.44949610385277,1.60317833223038,0.393882730489827,-0.920979830353865,-2.03501810742933,-2.72663283119846,-2.97279711522956,-2.92482604422783,-2.75374985307657,-2.55611135926898,-2.30782729227121,-1.9614458242366,-1.57076058529652,-1.18623979885395,-0.830339627405027,-0.506859862184261,-0.208584289487056,0.0781283024460862,0.369701913517786,0.680907325509364,1.01976651988551,1.38331127249025,1.75422837624655,2.09833305574427,2.37804545663365,2.10291069618497,2.42557093726069,2.78987780989396,3.15238341669628,3.3183384251724,2.98888034517272,1.96318868816059,0.393286714193275,-1.27064317797828,-2.5923315818244,-3.27868203650238,-3.33692630200761,-3.04359511412111,-2.66187631797655,-2.31637523608055,-1.97761404084978,-1.60423116861296,-1.24115468792632,-0.916792898539907,-0.633766971275482,-0.384659895433644,-0.158500812408441,0.0575648003347199,0.277735947312403,0.515618972854317,0.781865632354925,1.08307715732178,1.41801816873664,1.76917871701375,2.10291062761799,1.73766211488431,2.10841855096444,2.56599859163164,3.06477642691194,3.36947253120684,3.07210339112104,1.91145734884585,0.185974793272652,-1.49537195704349,-2.80628789857499,-3.42312447815484,-3.32450945355973,-2.86782832285964,-2.36603419100749,-1.94589268382287,-1.57829927775939,-1.23060946836215,-0.926672555226642,-0.673719411204518,-0.462313423747135,-0.280079693503278,-0.116105016775208,0.0394710419838729,0.19756143175458,0.369852161581793,0.567372405011326,0.801278738675013,1.08015848380969,1.39982183755714,1.7376620436608,1.23619442308281,1.55054077787076,1.94556661354178,2.37288045456519,2.61150754326161,2.28568771161433,1.23071847961192,-0.110773811611435,-1.24092515938295,-2.27343184475733,-2.762235618754,-2.63050740763765,-2.19636014261895,-1.74562066430929,-1.37966553227834,-1.0769483998022,-0.816838275025263,-0.604897327459677,-0.436144925113225,-0.298697727754911,-0.181493217156903,-0.0766479826743982,0.0218353711645378,0.122168548343192,0.233863039609801,0.364565318872346,0.524572509809332,0.724136749793416,0.965382320201951,1.236194363562,0.582145573900213,0.733217567819418,0.914944041171385,1.08201562208418,1.09843712997819,0.806760851192391,0.25153334654825,-0.244280722799621,-0.67642663835879,-1.2042938273871,-1.44224107245399,-1.31650077859238,-1.05152603468674,-0.80761828689107,-0.619014911258429,-0.469064908383941,-0.349925558141264,-0.258366412109497,-0.18728680995799,-0.129710115366275,-0.0804639903968124,-0.0367344605533523,0.00411986932968355,0.0489979995066293,0.100065731766555,0.160755989603957,0.23633710440195,0.332498326205032,0.450305217306373,0.582145558048779,-0.166001832948532,-0.22939611771361,-0.318276046821331,-0.453001933261714,-0.622460168587558,-0.710757983491092,-0.555504579970415,-0.307491761236399,-0.226234098124044,-0.0778755064394474,0.138120239882887,0.29177053144292,0.321264633464554,0.284209082728138,0.236243728360883,0.192091755525601,0.146203771339153,0.104079327897828,0.0703290192765228,0.0441147482319802,0.0227868161248562,0.00447833797263564,-0.0100757744811982,-0.0226655659748387,-0.0359083982516315,-0.0506598771976748,-0.0677991046822558,-0.0894133089599764,-0.119950815921267,-0.166001826983836,-0.896105712660606,-1.15405895730169,-1.47924113177398,-1.8565278852399,-2.13259518834517,-2.01238340393914,-1.37352216998899,-0.564161837291726,0.265254604973251,1.22089043170765,1.83314816623162,1.894737170489,1.63727967451267,1.31559811603865,1.04297292838612,0.820377074259444,0.622066463025179,0.453961004518615,0.3198150536845,0.213047155857489,0.124828586362976,0.0485796235438415,-0.0215471382508609,-0.093144587802029,-0.171778957414565,-0.261923717826818,-0.370602624577911,-0.507426188274653,-0.681706947571225,-0.896105672018912,-1.50993335378186,-1.88198725246365,-2.33996044376422,-2.85076318133329,-3.19879547758846,-3.01371947546645,-2.08247927838303,-0.74153580933533,0.850765310727347,2.31473874962069,3.05163241175096,3.00120474638169,2.56201593359211,2.07613812141944,1.67674368420144,1.34778201257705,1.04473420145557,0.779006288703555,0.55961794782597,0.379966995285787,0.22843129922447,0.0944947001832445,-0.0319607465057019,-0.161476703274944,-0.302498886830214,-0.463526332413721,-0.655754299944977,-0.892070419292561,-1.18027716624637,-1.50993329197851,-1.96771609808546,-2.33787639694937,-2.77059296326653,-3.22390724787685,-3.4809528042463,-3.1962294815302,-2.1627017481016,-0.57884610816465,1.20408129447812,2.6646407970594,3.36480493113358,3.34263561352028,2.95089370252539,2.49638276249087,2.10834379633335,1.76544113359249,1.41866375501887,1.09058025054678,0.801501805404145,0.552781985094972,0.336384235928431,0.141793058838904,-0.0429612317976088,-0.2308072901506,-0.433744245237273,-0.663159791520036,-0.930464767421384,-1.24456005609702,-1.60159424380552,-1.96771603232025,-2.29858605141472,-2.57583831897384,-2.86196910933461,-3.11208210194884,-3.1531618464168,-2.74558571069423,-1.76083426317532,-0.349791623679265,1.15116015156405,2.3481505767811,2.99270890364909,3.11880011403242,2.93944499564887,2.66140150353954,2.38848910543151,2.10252627757218,1.76565707392182,1.40718617821005,1.06053907362545,0.742564994242361,0.455709655268442,0.193694283417091,-0.0558493154889373,-0.308413903367559,-0.578954735813565,-0.879447300931248,-1.2166749851863,-1.58739475803296,-1.9673062201877,-2.29858599512906,-2.54458885371358,-2.6882829660026,-2.78628649370898,-2.79944033283026,-2.62096092697861,-2.13111142994781,-1.29022505123311,-0.211648959829252,0.89349384275892,1.8097388323142,2.40959831406455,2.69555072296874,2.7580037659532,2.70002900148417,2.58118503164076,2.38559230564876,2.09572435869545,1.73427113705707,1.34398762781204,0.959019941375086,0.596272198230694,0.256327936622456,-0.0715455586256117,-0.403005057714045,-0.752643186743971,-1.129014094247,-1.52952626175812,-1.93346250243557,-2.29466247771625,-2.5445888163543,-2.71345415243903,-2.74672760099124,-2.65795323370134,-2.47435507276436,-2.13696207073439,-1.61892117373846,-0.932888284024414,-0.147146978111848,0.641329469178917,1.34206118151616,1.89803340096454,2.2953822078441,2.54981827589452,2.68375971638445,2.70606504417492,2.60579209675762,2.38543621450274,2.05247467828444,1.64593182402302,1.21029591245506,0.772229960999222,0.339755949756992,-0.0903689154570219,-0.525029153007406,-0.968653493653731,-1.41845190085223,-1.85948011058006,-2.25800111947761,-2.55869503754347,-2.71345413506393,-2.7465275542376,-2.68285151868903,-2.4928680430582,-2.1714009883607,-1.74693380187883,-1.24518304778206,-0.691214287502252,-0.113388278061633,0.460543424924409,1.00781650040179,1.51161863322791,1.95777959811032,2.3270559460916,2.59021645312227,2.72022605381006,2.7202254066109,2.59025733372813,2.32706860581652,1.9576952229868,1.51144861105311,1.00761548313958,0.460375162009405,-0.113480603542035,-0.691222533868768,-1.24513481101229,-1.74688032425808,-2.17139345116651,-2.49293536123055,-2.68302110800423,-2.68999423514182,-2.69073120704583,-2.69470722176741,-2.50774393048565,-2.18798840813252,-1.76295961458039,-1.25820534441672,-0.699058643005953,-0.114727925314879,0.465873139455346,1.01883775904209,1.52649616619865,1.97423555116656,2.34290320510649,2.60413767628068,2.73201837543614,2.73201075200254,2.60414707754878,2.34285162599182,1.97406304894976,1.52623202834986,1.018559704716,0.465665534058762,-0.114810255008166,-0.699009143240927,-1.25806737358987,-1.76280969126203,-2.18790212930295,-2.50776698214433,-2.69485378957985,-2.78918294293468,-2.72402446563904,-2.57256051419996,-2.27282203035584,-1.87432905247929,-1.4316797375503,-0.978760405485057,-0.53089598161721,-0.0913642652885187,0.343735064938068,0.780761812356988,1.22244516842863,1.66030191369847,2.0674654574259,2.39972368424871,2.6181541740549,2.71762816750275,2.69750197331214,2.56677856598887,2.31401055449643,1.91585691633247,1.35596529971016,0.648318140217861,-0.148866772197586,-0.943051469355238,-1.63517627209251,-2.1558557658581,-2.49260244445327,-2.67427195711394,-2.75426106498584,-2.72402448836538,-2.55593406552579,-2.30799620331687,-1.9472610397103,-1.54223033561254,-1.13957744160406,-0.760331395771652,-0.407357385962277,-0.0723164995098,0.259202451371817,0.602670477701257,0.968577503982192,1.35602014528791,1.74775789976906,2.10941780037793,2.39787096148154,2.59234799417695,2.71424351179076,2.77615370363795,2.71630822784828,2.43048068991416,1.82679474451612,0.902402977879073,-0.213614884982155,-1.30271934144258,-2.15068251047977,-2.64285946854582,-2.81961641312744,-2.80385141228255,-2.70175194710086,-2.55593411045558,-2.30980494607902,-1.97956727236059,-1.59931159818242,-1.22703361136525,-0.887655490493601,-0.584723661226735,-0.311616661087252,-0.0564308321640164,0.195762800501758,0.460432303226551,0.749867898486539,1.07017378588306,1.41859163130774,1.77785117426682,2.11403417567321,2.39965141266702,2.67602952601309,2.95818430811118,3.14058453197937,3.01483097495668,2.36610880857096,1.16036390793181,-0.3518521752224,-1.77386986643198,-2.76638645927707,-3.17654040857187,-3.1334269610351,-2.87922273689458,-2.58866230999561,-2.3098050113578,-1.97802625928706,-1.61194314176204,-1.25409917490919,-0.938465213716443,-0.66934245142174,-0.438014290676374,-0.233153268012169,-0.0433958811503164,0.14327118027259,0.339807874039486,0.558173445649754,0.808809151951896,1.09956373552145,1.42873048042771,1.77549290780453,2.11886317662972,2.51018560786541,2.96850177890055,3.36272197312162,3.38397563286217,2.67849505230576,1.21022429826398,-0.580442781595363,-2.17221545825295,-3.21327897685237,-3.50194565991325,-3.24394419375051,-2.78705493780947,-2.35011509683043,-1.97802633396234,-1.51810672021766,-1.18793402460279,-0.898879099623607,-0.661397577849181,-0.467894405831767,-0.305543455431215,-0.163166253729134,-0.0322827142954049,0.095520907359344,0.230814215134985,0.383714730182755,0.56472202885505,0.78539859496629,1.05215722746623,1.3555726179893,1.68529731652236,2.08725093689054,2.57600194551439,3.01640800772717,3.06429941446874,2.32171183388641,0.852967922496462,-0.742041928772313,-2.08655134469186,-3.02361712593322,-3.21358724481236,-2.86615038767328,-2.35295420464187,-1.89184498805494,-1.51810678963492,-0.900932202359652,-0.686022017449697,-0.51121751587789,-0.373786360613104,-0.264459909512677,-0.173615023526967,-0.094198808529167,-0.0217755642976308,0.0491515750418008,0.126213669746521,0.215222010728767,0.322755862300801,0.457646995197306,0.626417853712843,0.825085614927595,1.04824859142385,1.32240950589287,1.64585863859001,1.90384006380428,1.8400378150677,1.22392885482245,0.265967014822746,-0.564418962499487,-1.37498798666024,-2.01731538135948,-2.14110844371254,-1.86580941558787,-1.4871112575171,-1.16002023483859,-0.900932248093205,-0.166846551476844,-0.120589403028768,-0.0899913304594019,-0.0683417317045812,-0.0511527391781208,-0.0363180913092435,-0.0229441845368796,-0.0102062333346799,0.00453071249619179,0.0230899127805381,0.0446254149997948,0.0710149574220943,0.104928567338218,0.147209795622793,0.193172919613153,0.237479746400484,0.285998367708634,0.323902870805965,0.295124930000914,0.141476736131731,-0.0756170375203238,-0.225701356005054,-0.307486019694897,-0.556495314792988,-0.713721053284489,-0.62647915106964,-0.456349446605928,-0.320507378710089,-0.230735816306995,-0.166846558971219,0.585353845409389,0.453349340386746,0.335121475902258,0.238431682340168,0.162327689313704,0.101124457035303,0.0495403511194059,0.00413146611094301,-0.0371283188041475,-0.0813211095823804,-0.130993840304594,-0.18896594616611,-0.260430661520614,-0.35234849987063,-0.471801539987444,-0.62207823286799,-0.811120725622916,-1.05513447044168,-1.31907924514966,-1.44238298145123,-1.20284345483153,-0.675919016965386,-0.244418926099351,0.249874306014205,0.804592505025472,1.09873218976959,1.08477974808096,0.918535902222938,0.736666093100411,0.585353879287334,1.24302969068707,0.971793926505601,0.729713778462491,0.529076508601415,0.367977854447371,0.236211792299941,0.123458323164603,0.0220933777295903,-0.0774543428621429,-0.183365579184556,-0.301590543509865,-0.44002045779623,-0.609727850271955,-0.822551433249955,-1.08334037677079,-1.38683368189913,-1.75442412409406,-2.20660400930281,-2.64010746773693,-2.767750776865,-2.2742885433567,-1.24044466776619,-0.111053838987211,1.22973648316596,2.28777770496491,2.61868078750661,2.38271324597049,1.95508143182652,1.55850796813604,1.24302975517558,1.74706379959413,1.40897843006392,1.08836486469758,0.808051772345679,0.572555530310773,0.373431947118117,0.199549877024093,0.0398819398413614,-0.117278477144748,-0.282846293807253,-0.466660583162557,-0.679614183523691,-0.934039847043507,-1.23924391955573,-1.58765163351648,-1.95612575744224,-2.37916544829596,-2.88416995709715,-3.34216436057831,-3.43798275328809,-2.81510829427034,-1.49897128230508,0.18582539597953,1.91589057884376,3.08293755150559,3.38503078939471,3.08105561182218,2.58018177206963,2.11963084578863,1.74706387746922,2.11356008174586,1.78028214382769,1.42846520679734,1.09204944961078,0.788927511028286,0.520576429810639,0.28051133886859,0.058138420307017,-0.160124848123211,-0.388461451728313,-0.63969233368536,-0.924726242091637,-1.25086251471067,-1.61523736005539,-1.98882695608504,-2.32796673586732,-2.67713469358855,-3.0632432056145,-3.35967177557613,-3.30093352658221,-2.60907355794367,-1.27847653444608,0.39539614548176,1.97495637091883,3.00774791197898,3.33970142867017,3.17223724120006,2.80628452041963,2.43812384047777,2.11356015791642,2.38897273664569,2.11059690590347,1.76649920332065,1.39445685779179,1.0289633675319,0.687575765045813,0.373506083996228,0.0789179622853431,-0.210822010157695,-0.512024387236935,-0.838203809301176,-1.1964213443958,-1.58267165116718,-1.97423674065869,-2.31990858872486,-2.5676477189992,-2.76900576664722,-2.94462063165487,-2.99587132668478,-2.74990365018768,-2.053349139837,-0.929395180128912,0.397617238817597,1.61769641756706,2.47048660418515,2.87428751855643,2.92799343228708,2.79608859458458,2.60490741736298,2.38897279997754,2.60260165626503,2.40407478068185,2.09597778250402,1.71209093696185,1.29749188964487,0.885375244290539,0.489158490418761,0.106272485736243,-0.274527836239705,-0.665994411965857,-1.07638851300566,-1.50400100168048,-1.93056065668692,-2.31439107830466,-2.59377763163676,-2.72998317529242,-2.7738462285968,-2.73561467738035,-2.56188261343762,-2.17447797782199,-1.52505005419198,-0.655835009142673,0.303375627453781,1.19537698248537,1.89656512945376,2.35890086287363,2.60800229350684,2.70320101704575,2.6976178182975,2.60260169880745,2.73433409986105,2.62488519624173,2.38182094113832,2.02458763695524,1.59614658327805,1.13032910142513,0.644867215728308,0.147193891639103,-0.358392309870655,-0.865750842427586,-1.36418644208405,-1.83703071362587,-2.25774684614179,-2.58468231132431,-2.77290155303875,-2.81314496055607,-2.7271561948846,-2.51842126269255,-2.1817688994793,-1.71784794598716,-1.13774803357388,-0.47651654332626,0.211207632967986,0.868855241428234,1.4523064880018,1.93696563210358,2.31401899572081,2.57845898210049,2.72196299119423,2.73433411490058,2.734497249579,2.72212863246858,2.57856423740979,2.31395920276415,1.93673343309052,1.45197788944205,0.868552174446028,0.211037114251523,-0.476508098270379,-1.13759066081112,-1.71763390531006,-2.18160364387827,-2.51835866655635,-2.72716033284888,-2.81317292091017,-2.77290992194829,-2.58472935529249,-2.25785568043521,-1.83717357938375,-1.36432047944662,-0.865827085833645,-0.358375180608383,0.147314343721255,0.645072789364085,1.13057814041729,1.59638801965867,2.02478554102641,2.38197539958853,2.62504662350479,2.73449724166235,2.60283232103845,2.6977933207174,2.70329888447737,2.60790529016064,2.35857725610069,1.89610967148258,1.19497781812885,0.303205045158616,-0.655711747947849,-1.52469465654484,-2.17404050284879,-2.56151587812638,-2.73539647385525,-2.77375569244535,-2.7299708760803,-2.59387312261901,-2.31460585410164,-1.9308034473018,-1.50419664224273,-1.07651407258888,-0.666049489424446,-0.274517929830218,0.106343389732618,0.489289716085695,0.8855677024309,1.29774437936913,1.71239518798664,2.09630595188859,2.40435603728065,2.60283227770983,2.38901727515263,2.60488639351836,2.79602434933761,2.92778589272533,2.87389421835437,2.4700118077155,1.61737350625938,0.397633953297955,-0.929015876973134,-2.05272131986105,-2.74920674415784,-2.99526660624946,-2.94419640708365,-2.76874562041319,-2.56748373899346,-2.31995032084185,-1.97444691647683,-1.58291802975593,-1.19660855461855,-0.838311937630866,-0.512068477762156,-0.210822066508699,0.078952891976088,0.373582756584464,0.687712677384325,1.02917735538783,1.39473808645009,1.76677887389432,2.11076182220808,2.38901721103308,2.11340967900057,2.43792197358021,2.80610894105359,3.17206898531965,3.33954089982939,3.00768233252616,1.97513945510573,0.395853447031723,-1.27787473226326,-2.6084402630647,-3.30031610663997,-3.35910326514935,-3.06277812396436,-2.67677182068391,-2.32768204478358,-1.98875773383628,-1.61534159180991,-1.25101899150356,-0.924851478813873,-0.639765153108164,-0.388492132869915,-0.160130118899392,0.0581513428667356,0.280550441160494,0.520658904775622,0.789063162313676,1.09221666407933,1.42859349818423,1.78026805477381,2.11340960203339,1.74680398315171,2.11936301618703,2.5800598999976,3.08120728541669,3.38556897348978,3.08382297967263,1.91687519718425,0.18653587338453,-1.49877963239793,-2.81529081798538,-3.43822145458885,-3.34218408902268,-2.88400269467686,-2.37890314713128,-1.95585022955611,-1.58752257925825,-1.2392461121082,-0.934095562223649,-0.679670297248354,-0.46669870828163,-0.282866491405962,-0.117286708846885,0.0398839889375289,0.19956804652899,0.373471855688396,0.572611984593282,0.808100433243156,1.08835357975868,1.40883732185095,1.74680390446821,1.2427672917004,1.55831914473742,1.95520030226991,2.38341995482594,2.62017667529498,2.28970282742542,1.23115371471904,-0.110750480990359,-1.2410419471779,-2.27562434690087,-2.76915748361691,-2.64098527157739,-2.20694695630874,-1.75441773883821,-1.38667184758318,-1.08321142317414,-0.822490654627268,-0.609712457843343,-0.440029329589284,-0.301609942542053,-0.183384698122708,-0.0774657161154647,0.0220950421800011,0.12347322862081,0.236227856484988,0.367980345921885,0.529044316032134,0.729616627836389,0.971598791209072,1.24276722638405,0.585162000876964,0.73663521167863,0.918945289123014,1.08597632409364,1.10088577872579,0.806992315193286,0.251098093157536,-0.244279984966496,-0.676284240257593,-1.20418088573653,-1.44416857519246,-1.3204206328164,-1.05580145127118,-0.811287614569225,-0.621991771035303,-0.471664961266226,-0.352240431474032,-0.260369046398345,-0.18894841969869,-0.131007564459554,-0.0813443704253834,-0.0371398291337055,0.00414138420667155,0.0495500538906812,0.101126378601906,0.162303233788894,0.23836139245146,0.334991841394298,0.453159978969685,0.585161983510794,-0.166975584452567,-0.230689501421872,-0.320033192930969,-0.455175261474677,-0.624560847951294,-0.711781123069022,-0.555646727244877,-0.307638173057792,-0.226220292019777,-0.0774997847006601,0.139018446665138,0.293360896124356,0.323062419642213,0.285788011636204,0.237575763685303,0.193344570547501,0.147354793835893,0.105018301180658,0.0710519416203285,0.0446238083748237,0.0230728268931475,0.00451888528858708,-0.0102083160734656,-0.0229341647153245,-0.0363058502453308,-0.0511659728879162,-0.0684011824362686,-0.090103163853071,-0.120740465782031,-0.166975577827736,-0.901052391550113,-1.16002045717042,-1.48677679467606,-1.86492601443254,-2.13957422019209,-2.01552292211437,-1.37395213218307,-0.563957547619272,0.265241224114249,1.2219587149551,1.83779340185603,1.90237862965913,1.64526910134928,1.32236864169361,1.04844919164609,0.825306419101662,0.626569917271941,0.457724422991077,0.322780569666298,0.215214289034921,0.126194926460134,0.0491371266132589,-0.0217798197045067,-0.0941894736653671,-0.173603983042152,-0.264464315051227,-0.373820808753874,-0.511290942535471,-0.686135607351971,-0.901052346683071,-1.51827613928649,-1.89200384936101,-2.35295172700277,-2.8658526899027,-3.21286267478977,-3.02264989608248,-2.08593673185827,-0.742150221241943,0.852046501515823,2.32028702605347,3.06303022150873,3.01571040865047,2.57584168019239,2.08741437339845,1.68558387904795,1.35580142107322,1.05226533318484,0.785413961770045,0.564696873146608,0.38368081095207,0.230787720711815,0.0955070491014357,-0.0322867540793005,-0.163164139588039,-0.305536269360621,-0.467884935119402,-0.661395317370625,-0.898905789988625,-1.18802664879344,-1.51827607072238,-1.97821351053666,-2.35038108388139,-2.78734721985223,-3.2442580757701,-3.50222428090449,-3.21354671385003,-2.17261622373353,-0.581009182046094,1.20960027822779,2.67803080518346,3.38374499279877,3.36269040674491,2.96862317573336,2.5104114586263,2.11912132485684,1.77564683385006,1.42872982369217,1.09946580776669,0.808696957533159,0.558089476053678,0.339759920179769,0.143248834322691,-0.0434059125063702,-0.23315398918554,-0.437998163632201,-0.669301124538135,-0.93840431843837,-1.25405687624722,-1.61199684719031,-1.97821343670921,-2.30991759822755,-2.58885339284138,-2.87954244804218,-3.13393550595411,-3.1772013968145,-2.76709155558044,-1.77448499563462,-0.352221530838328,1.16033812843004,2.36638268054649,3.01519708084933,3.14086608102512,2.9583559181457,2.67615578092559,2.39975837703815,2.11402863368529,1.77768411319328,1.4183484330201,1.06995554227963,0.749717554500304,0.460345536115574,0.195717859464028,-0.0564513557818597,-0.31161515303939,-0.584688462174765,-0.887571890309081,-1.22690481225514,-1.59918777508302,-1.97955292684664,-2.30991753380919,-2.55593691872818,-2.70174058918429,-2.80400747343561,-2.81997690247683,-2.6433840107358,-2.15122487233957,-1.30309146680612,-0.213672406331581,0.902680556003341,1.82727631442142,2.43094217553622,2.71657913373015,2.77620895896014,2.71417684291162,2.59223573326931,2.39768110255006,2.10911329848878,1.74741846315466,1.35573310152621,0.968368591855878,0.60253279587437,0.25912067470013,-0.0723536316720776,-0.407351293376095,-0.76027456989805,-1.13946181912774,-1.54206537806576,-1.94710086988701,-2.30794585594994,-2.55593687468658,-2.72396216286884,-2.75411627632125,-2.67429962872265,-2.49279026328719,-2.15614963814506,-1.63546800659581,-0.94320605337824,-0.148796851968248,0.648604218178804,1.3563610318336,1.91620237941995,2.31417549428966,2.56672756548595,2.69731203573508,2.71740282781963,2.61792676547603,2.39945838106584,2.06719300288611,1.66003717581834,1.22220251231584,0.780562647281023,0.343599366260564,-0.0914249171735872,-0.530880334574359,-0.978678622661482,-1.43155396641961,-1.87419372198571,-2.27272572862456,-2.57256725585052,-2.72396214096085,-2.78854234609783,-2.69470723349247,-2.50774394641943,-2.1879884311314,-1.76295963803337,-1.25820536277029,-0.699058652409056,-0.114727924169236,0.465873151032927,1.01883777961462,1.52649617972385,1.97423558129409,2.34290323379296,2.60413769697151,2.73201838261984,2.73201074474439,2.60414705681806,2.34285159729263,1.97406301882024,1.52623200130167,1.01855969443207,0.465665522488243,-0.114810256143151,-0.699009133822179,-1.2580673552144,-1.76280966777901,-2.18790210626336,-2.50776696616505,-2.69485377781854,-2.69091685946417,-2.69172100841874,-2.70369068714136,-2.51966407133331,-2.20163144083355,-1.77633739632777,-1.26915572666808,-0.705683402206597,-0.115866185742192,0.470368376675118,1.02811712351073,1.53896007396634,1.98789329253345,2.35582519218092,2.61522817041643,2.74077043445134,2.74075402354464,2.61520280919034,2.35570534800387,1.98762767527864,1.53859698825214,1.02775835245811,0.470119774306059,-0.115937694201931,-0.705573010363735,-1.26892330476487,-1.77608574309929,-2.20146144951413,-2.51963742169209,-2.70382307951881,-2.820186472891,-2.73146500305998,-2.58350021563347,-2.28469587274399,-1.8864002615609,-1.44255350787368,-0.987142997374241,-0.535810911317086,-0.092257035408486,0.346958463207973,0.7877361313661,1.23235573775715,1.67193394359025,2.07942863575177,2.41095418337872,2.62726411289971,2.72600293157907,2.708060564993,2.58048956163755,2.32949399843434,1.93093952113785,1.36788063749439,0.654387890405854,-0.150248409030217,-0.951660657418538,-1.64893776724122,-2.17171890621361,-2.50770807236178,-2.68717297079546,-2.76003188241519,-2.73146503040259,-2.56431752380984,-2.31843720312667,-1.95819589315086,-1.55241712132283,-1.14813550674172,-0.766618687466755,-0.41095231475156,-0.0729892951731032,0.261507801528649,0.607830557507139,0.976247268771512,1.36558433046241,1.75834203114981,2.12008049248051,2.40709076127914,2.60051738140124,2.7254214888245,2.7909429458872,2.7335812496949,2.44810185736288,1.84130489802242,0.910006975035416,-0.215289784906276,-1.31335609419718,-2.16729289990272,-2.66130733315129,-2.83649916228852,-2.81811472616946,-2.71204109110777,-2.56431757579338,-2.31836100706634,-1.98918647248606,-1.60869163762682,-1.23523840635072,-0.894207608705483,-0.589365102221919,-0.314215447539621,-0.0569229200639943,0.197401334213892,0.464183638235243,0.75563820310739,1.07773319013362,1.4274820984335,1.78734553960862,2.12287190529355,2.40821341312312,2.6877843704775,2.9735126954106,3.15857150565414,3.03316529340866,2.38093571029319,1.16779653831479,-0.353839237749496,-1.78494162951377,-2.78386494054075,-3.19611843595705,-3.15121619871289,-2.89348928525381,-2.5988411523727,-2.31836108050395,-1.98607885327238,-1.62007892327441,-1.26156877792916,-0.944734571455092,-0.674204737821198,-0.441387956840667,-0.235016215804244,-0.0437504489435532,0.144423779356645,0.342481073022811,0.562369426125329,0.814483302962569,1.10654538779936,1.43660553622369,1.78334654968141,2.12715026040158,2.52134331540296,2.98274953583567,3.3788029732785,3.39898981036693,2.68890715201759,1.21442126347791,-0.582151030422799,-2.17993105944225,-3.22688396923166,-3.51891590412838,-3.26030405028573,-2.8005102341888,-2.35991247869817,-1.98607893561799,-1.52450819422059,-1.19393278507646,-0.904172069467231,-0.665770349905815,-0.471279881807742,-0.307909203663417,-0.164481723766445,-0.0325310175570154,0.0963114366877133,0.232643595910239,0.386588291615088,0.568643761973749,0.790344718502908,1.05797724126864,1.36171908093519,1.69207703978433,2.09611158711471,2.58689663241866,3.02763393202972,3.07269488187936,2.32531662498804,0.853600383723356,-0.742358914083918,-2.08876787275214,-3.02997353442295,-3.2242801944687,-2.87797670331171,-2.36322812809782,-1.89963306785692,-1.524508269864,-0.904652292571,-0.689367164684045,-0.51413353917491,-0.376222720282735,-0.266401343554066,-0.175031566301568,-0.0950163785668504,-0.0219490614126313,0.0495850204094151,0.127265094516334,0.216869629014081,0.3249950995317,0.460485733312037,0.629826217268449,0.828795461202167,1.05234687452424,1.32753528919604,1.65182766138224,1.90921678454343,1.84269196615692,1.22384566955033,0.265626671769504,-0.564095083324635,-1.37478320085185,-2.01881089136181,-2.14578852891301,-1.87196836278287,-1.4928173483038,-1.16452255930051,-0.904652342093761,-0.167425285265189,-0.121063406638238,-0.0904132362404439,-0.0687245525408844,-0.0514899331918321,-0.0365983381442836,-0.0231421295777083,-0.0103157567070876,0.00454180750699895,0.0233013271192234,0.0449927674474038,0.0715182093534943,0.105567939253665,0.147986177885172,0.19398313483591,0.238269092381752,0.286849660421203,0.324691973693699,0.295431760328447,0.141094317833181,-0.0759942936309545,-0.22587438382847,-0.307602039544124,-0.556174567528592,-0.713517521393036,-0.627134071697808,-0.457335248748445,-0.321435312065065,-0.231472405826344,-0.167425293247557,0.587929888364871,0.455743912467546,0.337189481867617,0.240099194935086,0.163603948052052,0.102006523494241,0.0500015514052485,0.00413343115110273,-0.0374546455700288,-0.082058378562238,-0.132072058308456,-0.190338254741513,-0.262092032809204,-0.354291625240784,-0.474029301344026,-0.624714678235052,-0.814559150855349,-1.05937888217537,-1.32331712856379,-1.44502561163748,-1.2033714829925,-0.675930733591491,-0.244316967052092,0.249821386831923,0.805599812114069,1.10174670836179,1.0888659761287,0.922364909112598,0.739737170188293,0.587929925102696,1.24840947997465,0.976846374681613,0.734136373536471,0.532665244604506,0.370710553353134,0.23810762490889,0.124507603088297,0.0223133766294825,-0.0781114023898827,-0.184896503670457,-0.303939935152466,-0.443150192110209,-0.613617024412543,-0.827142685750451,-1.08847052690299,-1.3926658786539,-1.7620660131405,-2.21608267750622,-2.6497571142072,-2.7744718739492,-2.27675239219535,-1.24068315226043,-0.110893776760265,1.23041421263394,2.2918349526577,2.6268099338344,2.39227301397347,1.96358939763692,1.56512153228412,1.24840954980923,1.75441540691864,1.41625232817299,1.09497071874626,0.813548155318531,0.576772829079086,0.376345579201908,0.201164221087822,0.0402143024079434,-0.118230506309272,-0.285095697954464,-0.470202915723316,-0.684423314122787,-0.940043072986086,-1.24623574943953,-1.59511511337165,-1.96424049279164,-2.39014153362424,-2.89828550596258,-3.35780348138576,-3.45152052250963,-2.8233392698649,-1.50211781411655,0.186371109767662,1.92085523962689,3.09349378458312,3.39937386679514,3.09551801729815,2.59234684583863,2.12878344776706,1.75441549167454,2.1218276566127,1.7891898603845,1.43700572694644,1.09946407458847,0.794781771591753,0.524682245007388,0.282805199078453,0.0586138406928103,-0.161458438196463,-0.391592265499259,-0.644587117381055,-0.931290960223553,-1.25887593648387,-1.62422045509326,-1.99773382786106,-2.33698073668149,-2.68970630863316,-3.07977665921861,-3.37899773167075,-3.31987755800439,-2.62323214166069,-1.28486417825314,0.397617337418274,1.98544364872172,3.02425312495666,3.35825901587788,3.1893286847746,2.8201539092865,2.44829797916394,2.12182774064037,2.39735150337794,2.12052449955202,1.77665336602872,1.40377653497499,1.0366830323258,0.693177017149518,0.376706122437691,0.0795954940121213,-0.212674634506639,-0.516325181214191,-0.844768030373213,-1.20492438690111,-1.59257977052666,-1.98472093266882,-2.32941672358615,-2.5764109017365,-2.78148647523586,-2.96111872348503,-3.01524108017191,-2.76947250354865,-2.06873311483206,-0.936395769611529,0.400856742796375,1.63002539183812,2.48829961645439,2.8933177523365,2.94514387630433,2.80988105246671,2.61477744010168,2.39735157525287,2.61089300543478,2.41445672923069,2.10728611155392,1.72320270239751,1.30730276144945,0.892840448879363,0.493563659236456,0.107239727770421,-0.277071787005063,-0.671836148108192,-1.08502158267841,-1.51463199428804,-1.94214033420044,-2.32579414669632,-2.60345033143308,-2.73826856347768,-2.78530369499573,-2.75072062136994,-2.57923682796748,-2.19157230494882,-1.53827947215937,-0.661786365041303,0.306238527056123,1.2060652484142,1.91217616581637,2.37599631007451,2.62382257155312,2.71603985170272,2.70675038608476,2.61089305639301,2.74256490845625,2.63526355332823,2.39382009476974,2.03732465410861,1.60821548528871,1.1400568246937,0.650868304559938,0.148594412296352,-0.361827912220904,-0.873564069687773,-1.37527480002691,-1.84983210945483,-2.27051768138275,-2.59615115445684,-2.78225930146712,-2.82173031567037,-2.73803886067875,-2.53210888198252,-2.19680510149328,-1.73185109212176,-1.14811590765314,-0.481125739797071,0.213270438323464,0.877034003289274,1.46485122538921,1.95152824742653,2.32827098613606,2.59059000610906,2.73160322950724,2.74256492756144,2.74271007061528,2.73172378132028,2.59060108091704,2.3280747640649,1.95113861333387,1.46437623739235,0.876631328388623,0.213074587001743,-0.481059225756672,-1.14783146767923,-1.73147580368608,-2.19648462052126,-2.53192653914452,-2.73797286639028,-2.82172768356452,-2.78225601456783,-2.59620009168683,-2.27065523693517,-1.85002507079069,-1.37546588487982,-0.873686787473821,-0.361832541729118,0.14872371051107,0.651110043866608,1.1403584225014,1.60851033605516,2.03756199173756,2.3939916060113,2.63542100312052,2.7427100607365,2.61105975387423,2.7068071779169,2.71593410350714,2.62344569383512,2.37535145399526,1.91141783903531,1.20545659732011,0.306013963375513,-0.661540195257994,-1.53765676924663,-2.1908011469675,-2.57855282617635,-2.75025285491989,-2.78505370200502,-2.73817259292823,-2.6034923755755,-2.32596014750508,-1.94235034760457,-1.51481299353408,-1.0851448675232,-0.671894103982023,-0.277064219649328,0.107311301748594,0.49369750265419,0.893033281428214,1.30754695514128,1.72348364922738,2.10757475760951,2.41468616541688,2.61105970226435,2.39727457679144,2.61455338295127,2.80948396725292,2.9444769712059,2.8923816958465,2.48729800444471,1.6293331390645,0.400781503218399,-0.935792847721858,-2.06762838889783,-2.76819606334584,-3.01410517239699,-2.96028668233974,-2.78096240110876,-2.57609636947374,-2.32935405596908,-1.98483757388191,-1.59275083148867,-1.20505772619835,-0.844840964078715,-0.516349172792387,-0.212666812116918,0.0796274608401422,0.376768571638032,0.69328632680094,1.0368527693422,1.40399358938585,1.77685001778873,2.12059296105507,2.39727450426264,2.12150380529973,2.44781414081585,2.81952461163024,3.18851984315165,3.35731478624797,3.0234094736309,1.98508633958194,0.39795336957145,-1.28392589736368,-2.62188836571511,-3.31840671480967,-3.37767317233929,-3.07875068415488,-2.68898235855894,-2.33648253601669,-1.99751521737098,-1.62419878319209,-1.25893134835956,-0.931341192922304,-0.644608318453304,-0.39159188805719,-0.161450929403116,0.0586225059261675,0.282822652158171,0.524723789458035,0.794854501869774,1.09954347335731,1.4370211347721,1.78904273786528,2.12150372061006,1.75394570851209,2.12817990986623,2.59168718356799,3.09489167081926,3.39893592604237,3.09341493277242,1.92120750688257,0.186963927226976,-1.50154570874795,-2.82267275428713,-3.45070024640484,-3.35689523535707,-2.89744870016157,-2.38945294857877,-1.96370821535565,-1.59480825854285,-1.24609534208332,-0.939986778676058,-0.684396620631046,-0.470184048931666,-0.285081618871641,-0.118224601686337,0.0402119711916087,0.201158959536042,0.376340450938553,0.576759440445366,0.813498793633721,1.09483125492274,1.41595493169888,1.75394562308418,1.24792103877366,1.56457505526784,1.96313255226565,2.39212645840301,2.62722120686577,2.29273493204722,1.23125031210516,-0.11069103360348,-1.24098353954734,-2.27724073071552,-2.77472552529832,-2.6496118138187,-2.2157018157089,-1.7616050754004,-1.39222817000843,-1.08815281069598,-0.826935572994819,-0.613489010142603,-0.443077044968222,-0.303903917863144,-0.184883089270832,-0.0781096223089789,0.0223112054975223,0.124500799603285,0.238080143052164,0.370643730501758,0.532534167843588,0.733907657068013,0.976485915892784,1.2479209682496,0.587509765935863,0.739345955918373,0.922186265514496,1.08916909162705,1.10275164920501,0.806974881545132,0.2505974329343,-0.244261397005999,-0.676125636728702,-1.20391105926771,-1.44561027219277,-1.32358610303636,-1.05929944379583,-0.814262673534016,-0.624346800910069,-0.473702321942,-0.35403873077421,-0.261920533107204,-0.190242140775558,-0.132034207229964,-0.0820526497451377,-0.0374548898621468,0.00414076464252416,0.0499916393181013,0.101967759419781,0.163513340137726,0.239933267690915,0.336931032709341,0.455389216787278,0.58750974720961,-0.167781926795606,-0.231786064890907,-0.321555445433347,-0.45707658526409,-0.626404237260044,-0.71263495875191,-0.555750645647155,-0.307817630985504,-0.226223672775133,-0.077131482898026,0.139815302223591,0.294732171191404,0.324594445473173,0.287102520777977,0.238647695162896,0.194345190319518,0.148276103159776,0.105767869002972,0.0716339098616384,0.0450425972868381,0.023312789616189,0.00454056613976242,-0.01032173142986,-0.0231511167079994,-0.0366250540712214,-0.0515670970779938,-0.0688772734899373,-0.0906516552240752,-0.121378832238677,-0.167781919542797,-0.904998686205376,-1.16487987884102,-1.4930721514716,-1.87198542667536,-2.1454202172089,-2.01808888633049,-1.37423716577107,-0.563674625292214,0.265172667634695,1.22267327114034,1.84158137493173,1.90877396887718,1.65196270998347,1.32795522304272,1.05283061278518,0.829207078397269,0.630125785510425,0.460676843077171,0.325101919395337,0.216916263783869,0.127276965944736,0.0495819538193779,-0.021957817858178,-0.0950280557732883,-0.175062197989399,-0.266472187869009,-0.376352488348694,-0.514335105609884,-0.689645855294702,-0.904998637410349,-1.52489552484232,-1.9001360084443,-2.36379088275689,-2.8785247552567,-3.22463880354103,-3.03005158468706,-2.08875982480033,-0.742589826234219,0.853039634867542,2.32474522240089,3.07249524857272,3.02788379545942,2.58742587312607,2.09672242754713,1.69263802787063,1.36213253571551,1.0582318288181,0.790475054735622,0.568702872357099,0.386611311983706,0.232650370124355,0.0963107122951182,-0.0325398836077249,-0.164503265038612,-0.307947138818287,-0.47134015596115,-0.665866027348095,-0.904328172634335,-1.19418805469437,-1.52489544991427,-1.9864593677983,-2.36048626428808,-2.80130838274458,-3.26135920500105,-3.52013198903275,-3.22807819524065,-2.18093499688591,-0.582846913634949,1.2141723534483,2.68922126050252,3.39967854855533,3.37958747620122,2.98348003474507,2.52197030617066,2.12765125607669,1.78366394678468,1.43673975846706,1.10655577039071,0.814451692761475,0.562340742421168,0.342466208136819,0.144414892745726,-0.0437652672716733,-0.235040554282331,-0.441416256483202,-0.674231298976485,-0.944768020702462,-1.26164936388392,-1.62028134210698,-1.98645928616311,-2.31862200580424,-2.59927560039069,-2.89421072119009,-3.15229614223459,-3.1974797777168,-2.78525643117769,-1.78601307144708,-0.354297466339786,1.16806729254843,2.38178928982991,3.03421141403087,3.15947162315362,2.97416078211876,2.68822753267408,2.4085074840483,2.12299251283245,1.78728744747181,1.42732804034457,1.07758123927568,0.755532913923616,0.464123719540698,0.197367418687779,-0.0569471147400867,-0.314232838070592,-0.589365966226512,-0.894180062189988,-1.23518851715364,-1.60867044954407,-1.9892902858481,-2.31862193309076,-2.56441098968649,-2.71218695140227,-2.81854080120455,-2.83723986391869,-2.66227763605704,-2.1682583189737,-1.31400557865879,-0.21539657202929,0.910470938844298,1.84214552846245,2.4489923648414,2.73425585495968,2.79131841987674,2.72556689700715,2.6005244337416,2.40698015346938,2.11984585003942,1.7580578097604,1.36533443132669,0.97606011759031,0.60770394850134,0.261430104556945,-0.0730276197103502,-0.410953323066896,-0.766577834570977,-1.14804938180731,-1.55229970178111,-1.95810260966865,-2.31846117900507,-2.56441093846741,-2.73145240065336,-2.75997527346227,-2.68734697864886,-2.50810567261606,-2.17225335764615,-1.64945081621633,-0.951957709993708,-0.150203017815809,0.654770745789198,1.36846457858453,1.93151503775913,2.32988050012699,2.58061520805949,2.70798328796829,2.72583177501796,2.62707072246693,2.41071072956833,2.07916064806496,1.67165667517439,1.23209127972443,0.787516278072534,0.346811805857825,-0.0923144944421909,-0.535778903867387,-0.987038323002073,-1.44240908231152,-1.88626134487216,-2.28461751047004,-2.5835361401296,-2.73145237406824,-2.8195064763043,-2.70369070437776,-2.51966409040622,-2.20163146667704,-1.7763374219933,-1.2691557465177,-0.705683412377224,-0.115866184664111,0.470368388823768,1.02811714521562,1.53896008830521,1.98789332477974,2.35582522376197,2.61522819563607,2.74077044486735,2.74075401309676,2.61520278397165,2.3557053164439,1.9876276430549,1.53859695959465,1.02775834161404,0.470119762170293,-0.115937695270241,-0.705573000185361,-1.26892328490819,-1.77608571742451,-2.20146142365492,-2.51963740260009,-2.7038230623245,-2.69189607627198,-2.69235620741589,-2.71036658849918,-2.52907706350281,-2.2126919419555,-1.78731634245748,-1.27819873360332,-0.711174090322124,-0.116814180251299,0.474090808536205,1.03579015111318,1.54922404609328,1.99905294824136,2.36621871228704,2.62394409817457,2.74712849964131,2.74710155368534,2.62388141801605,2.36602758017981,1.99869031855633,1.54875830479524,1.03534791370933,0.473800027344289,-0.116874201750988,-0.711000437081446,-1.27786833493539,-1.78695895740812,-2.21243437037067,-2.52899690501565,-2.71048779126361,-2.84284762849546,-2.73653839624129,-2.59207775855445,-2.29416053773699,-1.89616167267501,-1.45142840331026,-0.99402305836482,-0.53985882070773,-0.0929960551385372,0.34961017747892,0.793465842932855,1.24046451642799,1.6813854015926,2.08903393855465,2.41987200315163,2.63397872834517,2.73213017198852,2.71625480095826,2.59155766729204,2.3421722717644,1.94337563637711,1.37773961909505,0.659416221387567,-0.151397257020238,-0.958794076963816,-1.66030599285962,-2.18475020711751,-2.5200101308816,-2.69738319328918,-2.76448357043739,-2.7365384280102,-2.57041946891767,-2.32658542744248,-1.96690531464875,-1.56061874640701,-1.15507090280266,-0.77173638092543,-0.413887228780482,-0.0735413521106966,0.263387034696465,0.612032656212124,0.982471479688898,1.37330125841907,1.76679797510385,2.12853249839455,2.41405058146091,2.60657755847948,2.73429695947098,2.80296358103083,2.74777003055821,2.46264629653455,1.85330625759765,0.916297096601789,-0.216679937431401,-1.32215432314184,-2.1810135108244,-2.67649210532359,-2.85035747514674,-2.8296074154609,-2.72002820198402,-2.57041952831832,-2.32482451121545,-1.99672599580938,-1.6161339677706,-1.24179682124699,-0.899468817840201,-0.593103267672633,-0.316313177412833,-0.05732211312819,0.198721531271254,0.467204216412624,0.76027308057501,1.0837812814772,1.43454407792736,1.79483533513104,2.12964228799575,2.41479419620291,2.69722323723321,2.9860249216599,3.17335401372015,3.04826009142445,2.39313103525076,1.17389035660499,-0.355488588380965,-1.79404215548874,-2.79823469234432,-3.21221014715727,-3.16580336438057,-2.90511621500525,-2.60689458347779,-2.32482459256047,-1.9922979048208,-1.62646484257774,-1.26746001129572,-0.949696642901789,-0.678062411134911,-0.444068494016492,-0.236497719963687,-0.0440338900230255,0.145338499937634,0.344603245453697,0.565694461515857,0.818969206854333,1.1120455461829,1.44279164907745,1.78941973382558,2.13361358421364,2.53033986768435,2.99438109675105,3.39197174682135,3.41124351373175,2.69733283564129,1.21778026211091,-0.583554185265455,-2.18619655371289,-3.23795267910869,-3.53278965889809,-3.27368633926836,-2.81145328429511,-2.36769517886178,-1.9922979942028,-1.52949394654259,-1.19862878624976,-0.908311090262853,-0.66918928728446,-0.473928503415711,-0.309761766658175,-0.165510822063915,-0.0327207280337834,0.0969298764645982,0.234069574378729,0.388825582734758,0.571696608245193,0.79419840894116,1.06252360301977,1.36649405065555,1.69738787832491,2.10324671407791,2.59575749760443,3.03674022874123,3.07938259134341,2.32802515504132,0.854013203021699,-0.742549877221727,-2.09045087549178,-3.03499697921314,-3.23290899554392,-2.88759785705301,-2.37156454045133,-1.90582249637147,-1.52949402774644,-0.907549022923929,-0.691966771118577,-0.516388680030969,-0.378104750943412,-0.267905814025537,-0.176138889143497,-0.0956572382713125,-0.0220769740807005,0.0499193248472521,0.128075364671143,0.218134778655424,0.326715541438253,0.462674923969023,0.632471167422321,0.831672686813197,1.05554438555586,1.33163034051479,1.65663175098552,1.91348650887601,1.8446427945875,1.22354314387895,0.265270768063195,-0.563748074887749,-1.37449217395173,-2.01984990255904,-2.14947037395348,-1.87691879151475,-1.49741225446046,-1.16808614146218,-0.907549075787756,-0.167863233004439,-0.121415766333977,-0.0907232457372345,-0.0690072178914531,-0.0517425189274053,-0.036813798247553,-0.0232940373283871,-0.0104044230029776,0.00453825931933127,0.0234713122421857,0.0452822760022753,0.0719057777133085,0.106055606705452,0.148578345324971,0.194591547037166,0.238849124176471,0.287477614046004,0.325250765220546,0.295560227043237,0.140653480931165,-0.0763632468246854,-0.226053582199176,-0.307726166593128,-0.555842780281605,-0.713209566301093,-0.62756658520831,-0.45807100355804,-0.322146794311623,-0.232035776098175,-0.167863241423548,0.589964971913956,0.457633173490094,0.338813018339658,0.241403132813615,0.164603850469746,0.10270181324122,0.0503642028212709,0.00411644879827119,-0.0377000840454815,-0.082646137163969,-0.13292273232132,-0.191411305902993,-0.26339094186125,-0.355818882948013,-0.475797035547712,-0.626831918920763,-0.817388675426076,-1.0629187326466,-1.32686888004722,-1.44723453436134,-1.20378456167912,-0.675936807088246,-0.244206308863708,0.249739352561571,0.80640841945275,1.10425008093148,1.09226576140065,0.925524567039929,0.742216033688318,0.589965011101169,1.25263766838904,0.980817408328871,0.737599466580789,0.535462653869501,0.372834479468719,0.239581769996426,0.125325151524939,0.0224946321180531,-0.078624128482863,-0.186099868680136,-0.305781561674281,-0.445600202626844,-0.61666437709648,-0.830751325659501,-1.09251612472373,-1.39729503591473,-1.76829843086797,-2.22390279609839,-2.65772966538253,-2.77998714698521,-2.27872495560817,-1.24080378446912,-0.110721338689361,1.23085176241214,2.29506678559167,2.63348762837131,2.40017089005065,1.97057934980792,1.57044638436458,1.25263774280046,1.76015457342192,1.42196835444814,1.10017234647017,0.817880817170414,0.580099149277907,0.378647059435783,0.202439596970383,0.0404769305444287,-0.118982800010773,-0.286876024913543,-0.473006831095971,-0.688226838683936,-0.944785984100603,-1.25175449588839,-1.60098366142331,-1.97063137670487,-2.39908610219952,-2.90991992898536,-3.37073163460438,-3.46267911532709,-2.83010543529127,-1.50468993324616,0.186804264394057,1.92487211002162,3.1021428378799,3.4112210433736,3.10746884935275,2.60233141824728,2.13613780940984,1.7601546640857,2.12818619089287,1.79618728954913,1.44376547101594,1.10536778350656,0.799460059562613,0.527971531555624,0.284645279397942,0.0589940228942549,-0.162531057638632,-0.394105568795695,-0.648509921270803,-0.93653866650275,-1.26525579112496,-1.63132830420462,-2.00468243711018,-2.34398321778463,-2.69994074708462,-3.09338854979142,-3.39500114493358,-3.33555474608019,-2.63494231326329,-1.29015841168236,0.399425238735691,1.99409687149653,3.03791910540088,3.37364242177585,3.20345317337213,2.83151109136342,2.4564239308551,2.12818628168241,2.4036000135649,2.12831399193774,1.78472683862241,1.41125287915183,1.04291237699697,0.697712824865786,0.379302399083744,0.0801440456735469,-0.214181978392166,-0.51981634738719,-0.850081200503316,-1.21177779597437,-1.60051299812668,-1.99302078686819,-2.33670898368305,-2.58303607414532,-2.79160275980598,-2.97464931233391,-3.03126822289002,-2.78570790603782,-2.08150948694917,-0.942217799661232,0.403538196114339,1.64026821362145,2.50309922545743,2.90909532800407,2.95928112610639,2.82110363540741,2.62255100964665,2.40360009293799,2.61684429971257,2.42256941796604,2.11628979329751,1.73215796111419,1.31527620863081,0.898937170493354,0.497170104573771,0.108030233183231,-0.279160201303981,-0.676618862032676,-1.09206262725783,-1.52325065058561,-1.95144060230463,-2.33482829312476,-2.61071218838726,-2.74430855350775,-2.79444375150448,-2.76302165830345,-2.59353190181527,-2.20573701604466,-1.54927853076884,-0.666743846118986,0.308618490023853,1.21495735192715,1.92513992077229,2.39013214296931,2.63678859982368,2.72637808256681,2.71369108713307,2.61684435919651,2.74828437878005,2.64338242882058,2.40338656122839,2.04763488836547,1.61807920041423,1.14805114721772,0.655813287412489,0.149747010241168,-0.364666381305942,-0.880000963564723,-1.38436962902412,-1.86025290925311,-2.28076441760599,-2.60520017591068,-2.78908928556941,-2.82789146116245,-2.74650085634873,-2.54312061455876,-2.20911913767307,-1.74341216895558,-1.15671534211746,-0.484959133036186,0.214980649309624,0.883820327372026,1.47523291386968,1.96351393706802,2.33987457643927,2.60021915597373,2.73897180376255,2.74828440292489,2.7484110477356,2.73904546569439,2.60013292997483,2.33953779028497,1.96296223601221,1.47460742908756,0.883315416506632,0.214759024355836,-0.484832668676338,-1.15630013236428,-1.74287107000365,-2.20863882612194,-2.54281467358792,-2.74636074639843,-2.82785660899453,-2.78907594690112,-2.60525439307285,-2.28093382035971,-1.86049936604131,-1.38462088580952,-0.880172566902778,-0.364694021289515,0.149885305779208,0.656092715174533,1.14840789545515,1.61843063986761,2.04791465803193,2.40357741839783,2.64353856838053,2.74841103541768,2.61694645832982,2.71362678248793,2.72606487253747,2.6361270143232,2.38916026812027,1.92407314391549,1.21413531706913,0.308339007304163,-0.666372429174229,-1.54838368112542,-2.204626387988,-2.59252511811228,-2.76229983534897,-2.79403020520616,-2.74412838750424,-2.61070201053181,-2.33494830841555,-1.9516199274219,-1.52341909258824,-1.09218549984796,-0.676681109096731,-0.279155725098977,0.108102504188443,0.497307368036797,0.899131823756397,1.31551398340967,1.73241755333489,2.11654065835788,2.42274881852004,2.61694639833135,2.40340090891367,2.62212117704642,2.82036980455202,2.95815002087125,2.90761073531539,2.50156511136147,1.6392025386266,0.403369724330738,-0.941389537446825,-2.07992348523499,-2.78384609222742,-3.02959527758011,-2.97340473222506,-2.79081032202764,-2.58257013535281,-2.33654254569317,-1.99304571454871,-1.60060991072173,-1.21185831327932,-0.850119885317441,-0.519820973948376,-0.214166687428504,0.0801730286082993,0.379350990203844,0.697795204187385,1.04303874481575,1.41140675053043,1.7848416896607,2.1282875367525,2.40340082902106,2.12768816566107,2.45565538178515,2.83042460951104,3.20199993445145,3.37191090720646,3.03629521116386,1.99319855395382,0.399639798492512,-1.28888450409414,-2.63288814826061,-3.33322792801863,-3.39291589636632,-3.09179757139799,-2.69885184467749,-2.34327050454434,-2.00431486509502,-1.63118184125347,-1.26521069594149,-0.936514292489028,-0.648479858680667,-0.394074422506271,-0.162510949636609,0.058998387614213,0.284641171658046,0.52797232814929,0.799470135667276,1.10535975976248,1.44366873626355,1.7959082511024,2.12768807434352,1.75947428709282,2.13519636479215,2.60113129940139,3.10606262963238,3.40980798791535,3.10110512263334,1.92459854501766,0.187281180105403,-1.50374176292035,-2.82859762655983,-3.460804085564,-3.36889391715835,-2.90841070605004,-2.39796833005849,-1.96984144448042,-1.60049931121832,-1.25147218484644,-0.944617935889422,-0.688117412436781,-0.472931002443082,-0.286827688420979,-0.118962796637498,0.0404701672899638,0.20241084294743,0.378596806124357,0.58001586101581,0.817733511055254,1.09990520443707,1.42151539031766,1.75947419589305,1.25192274399882,1.56954077548379,1.9695449792496,2.39917111421086,2.63282051469702,2.29495445053109,1.2311183365524,-0.110618102196985,-1.24081313510861,-2.27838046763981,-2.77909929152284,-2.65656360618019,-2.2227968606515,-1.76738111613145,-1.39658084456177,-1.09200988008809,-0.830398390983925,-0.616423940828123,-0.445445060387808,-0.305690086482456,-0.186053880464639,-0.0786092099605951,0.0224885790195006,0.125296622098341,0.239510669897776,0.372698260173448,0.535232704449858,0.737239586567907,0.980292127880296,1.25192266903695,0.589316418765613,0.741463574587546,0.92475667674101,1.09167655972652,1.10411593152791,0.806776612212498,0.250076119238063,-0.244237476797974,-0.67596026914983,-1.20353971013508,-1.44663279337023,-1.32606988394241,-1.06209258702496,-0.816627717047994,-0.626182284059497,-0.475279861887594,-0.355421632051018,-0.263109814125996,-0.191236763607153,-0.132833490836793,-0.0826116789570417,-0.0376892853789013,0.00412144695049012,0.0503348976922875,0.102622507048314,0.164447161686636,0.241141674884621,0.338426152623321,0.457113564907944,0.589316398885619,-0.16844751470795,-0.232710128856418,-0.322862206316394,-0.458726352487734,-0.628015257490018,-0.713367243153692,-0.555838563536893,-0.308006216472483,-0.226233886071699,-0.076768695279965,0.140537886136512,0.295920244505337,0.325896517860059,0.288194768110641,0.239510672581571,0.195143831825523,0.149012709135547,0.106365484832084,0.0721000263136723,0.0453833005292614,0.0235109770007748,0.0045473574552446,-0.0104142745807206,-0.0233216442653157,-0.0368790941879687,-0.0518833573748822,-0.0692529932943104,-0.0910878402589373,-0.121895154681739,-0.16844750687544,-0.908121703064711,-1.16880157257528,-1.49825767054775,-1.87783554610939,-2.15025979577778,-2.02018114012009,-1.37442886223488,-0.563364517891157,0.265083932191441,1.22315358312956,1.84465305473204,1.91405858568782,1.65749226046781,1.33251256402959,1.05631196390741,0.832275012101824,0.632917700362028,0.462979564345386,0.326904498230513,0.218235810635932,0.128117785617523,0.0499275464384188,-0.0220901943943495,-0.0956898122775438,-0.176211133341304,-0.268043024537506,-0.378329693151649,-0.516717996422863,-0.692410138600412,-0.90812165078756,-1.53009939332001,-1.90667119993948,-2.37269492110988,-2.88899291944739,-3.23434715485007,-3.03610841996666,-2.0910406754397,-0.742901497000818,0.853806857943219,2.32829627102609,3.08024573336669,3.03793654097359,2.59697805990818,2.1043071621386,1.69822454284575,1.36709208046194,1.06292399423663,0.794443567149223,0.571840047196678,0.388905680307494,0.234109720300899,0.0969423545903419,-0.032734356722268,-0.165556023985911,-0.309844847028924,-0.474058508287362,-0.669382791763379,-0.908596169704164,-1.19904615745364,-1.53009931269244,-1.99287192404176,-2.36857925129397,-2.81276114690213,-3.27548650483369,-3.53494505029804,-3.24007065964711,-2.18779996950077,-0.584378585466481,1.21790418925762,2.69842288608308,3.41285182515955,3.39357473378794,2.9957237739109,2.53137096334887,2.13435913643008,1.78990037563225,1.44305982768323,1.11216391878595,0.819018068810163,0.565721038928616,0.344621472971605,0.145343107412253,-0.0440534081939812,-0.23654553822906,-0.444141043565982,-0.678156642116987,-0.949824147961035,-1.26766280420385,-1.62681517397202,-1.9928718352313,-2.32523404669969,-2.60757469260485,-2.90624322145182,-3.16745984027787,-3.21427732659767,-2.8003163557768,-1.7955716030456,-0.356035559199481,1.17445957579723,2.3945681363963,3.04999111967817,3.17487754215619,2.98715351118596,2.69798679634165,2.41527711558582,2.12988849563996,1.79488496053672,1.43447842868302,1.0836950344084,0.760212396504442,0.467170838135281,0.198698560862311,-0.0573498027999474,-0.316349049735597,-0.593139602476361,-0.899496620234728,-1.24182508028801,-1.61621419755904,-1.99694676331864,-2.32523396593802,-2.57060412053455,-2.72033689612179,-2.83030890061425,-2.85148318344785,-2.67791450905217,-2.1824077022479,-1.32308492833848,-0.216836560223705,0.91695028056023,1.85451126566284,2.46397195356766,2.74885389532373,2.80366361199345,2.73465791814408,2.6067054449811,2.41401841080975,2.12836597736704,1.76656762702759,1.37308706985447,0.982304920555079,0.611916319407857,0.263313143811082,-0.0735805701448654,-0.413894502691382,-0.771710253395761,-1.15501276048112,-1.56054727297099,-1.96687693456972,-2.32668157587814,-2.57060406175926,-2.7365715092714,-2.76451009270587,-2.69771032918473,-2.52062172085595,-2.18553055023198,-1.66104532735436,-0.959236997732845,-0.151377179354375,0.659897907501211,1.37851601704199,1.94418644536167,2.34278537261242,2.59186401395738,2.71629323567515,2.73201437947244,2.63381862554705,2.41964810751893,2.08876829248073,1.68109299830728,1.24017599598317,0.793223726896771,0.349451957828127,-0.0930498525485791,-0.539808987271724,-0.993893277776453,-1.45126265186152,-1.89601645305055,-2.29409723353788,-2.59213980529216,-2.73657147817691,-2.84220272927951,-2.71036661145242,-2.52907708591621,-2.21269197048858,-1.78731637011135,-1.27819875477736,-0.711174101171226,-0.116814179243885,0.474090821161705,1.0357901737709,1.54922406111423,1.99905298224094,2.36621874619417,2.62394412754153,2.74712851380382,2.74710153955332,2.62388138869522,2.36602754632638,1.99869028460293,1.54875827479113,1.03534790239472,0.473800014737159,-0.116874202749992,-0.71100042623326,-1.27786831377035,-1.78695892976769,-2.21243434185001,-2.52899688261292,-2.71048776841716,-2.69250790235094,-2.69252736471793,-2.71517707900028,-2.53633327021045,-2.22144252666794,-1.79608512462213,-1.28545933903175,-0.715595655622988,-0.117580516142038,0.47708668590961,1.04195837413565,1.55744775815238,2.0079373621637,2.37438612107816,2.6306162171375,2.75165403338978,2.7516151933618,2.63051463557406,2.37412151790632,2.00747486861587,1.55687673596036,1.04143081493102,0.476752991326263,-0.11762854055183,-0.71535710954908,-1.28502855512577,-1.79561922464343,-2.2210945407731,-2.53619707252306,-2.71528740720944,-2.85929289806904,-2.73980740836826,-2.59871665002823,-2.30152591164599,-1.90386301184241,-1.4584856662068,-0.999519239951204,-0.543101729656905,-0.0935904312296343,0.351733002136484,0.798047772546497,1.24692766119746,1.68887571860363,2.096574464854,2.42680616774159,2.63880872834494,2.73654407049443,2.72248062443954,2.60026941875406,2.35226478386559,1.95333087730495,1.38565398100763,0.663456695806826,-0.152322796994753,-0.964525760571297,-1.66941867757911,-2.19514865904187,-2.52975516846459,-2.7053303076819,-2.76782311139674,-2.73980744392909,-2.57472688149007,-2.33281594804324,-1.97369418570106,-1.56706808311899,-1.16055499730591,-0.775798059246691,-0.416222224280756,-0.0739822340250331,0.264880757447613,0.615370038808992,0.987401209174803,1.37938344523823,1.7734058288919,2.13510283560364,2.419183412844,2.61102140099779,2.74119289242232,2.81246863661602,2.75908593145262,2.47428960148137,1.86292951333299,0.921341281335415,-0.217797474152944,-1.32920826377138,-2.19200154233492,-2.68862409462162,-2.86139590846296,-2.83862738799033,-2.72619614943219,-2.57472694845694,-2.32961068038875,-2.00251415830417,-1.62191536449663,-1.24692646844495,-0.903600148455608,-0.596046200886537,-0.317967691579002,-0.057637891987905,0.199761945434973,0.4695827491036,0.763915395801977,1.08851838902724,1.44003781082745,1.80063139857691,2.13471915825024,2.419776139317,2.70461462633379,2.99594700226202,3.18513721913689,3.06030628355739,2.40285336894278,1.17873484558426,-0.35681328455634,-1.80129298232901,-2.80968558149793,-3.2250359916171,-3.17741901008779,-2.91431149432938,-2.6131448055381,-2.32961076893755,-1.99700064631179,-1.63137566042235,-1.2720141777269,-0.953547712884872,-0.681064386201497,-0.446157706790421,-0.237653512666875,-0.0442558297480456,0.146052106710277,0.346257857135751,0.568281009550372,0.822449979367114,1.11629601225175,1.44755910980483,1.79402393358777,2.13855693609325,2.53740416925096,3.00359715347602,3.40242438842008,3.4209332598893,2.70393984894898,1.22038572964355,-0.58466852514662,-2.1911241003992,-3.24667911744575,-3.54378043489363,-3.28430591605615,-2.8201014426764,-2.3737396748237,-1.99700074177681,-1.53329351543549,-1.20223164873162,-0.911487937893088,-0.671816567745875,-0.475967129481421,-0.311189234934725,-0.166302686895287,-0.0328634235620971,0.0974071248078438,0.235165753427029,0.390541199408794,0.574034945395949,0.797149184506743,1.0660096061394,1.37013126198757,1.70145934841641,2.10883687735888,2.60274623305876,3.04389322357227,3.08453468675109,2.3299801207331,0.85425483418451,-0.742650857954094,-2.09167405210569,-3.03882956719547,-3.23964828096103,-2.89518130089862,-2.37812993254547,-1.91062283748082,-1.53329360134118,-0.909752840911353,-0.693946555762348,-0.518101950627431,-0.379535995800293,-0.269054935270931,-0.17699063299143,-0.0961488979903332,-0.0221681470379067,0.0501672467450163,0.128688255778423,0.219092928023443,0.328019277192033,0.464337189858343,0.63448730188421,0.83385952075716,1.0579818242472,1.33480844002072,1.66037189546534,1.91675369674681,1.84599730044189,1.22311038573618,0.264924468569089,-0.56341518069042,-1.37415562115635,-2.02050612014382,-2.152251073399,-1.88076090955569,-1.50099580865599,-1.17083193760037,-0.909752896570126,-0.168179428533104,-0.121667024957168,-0.0909425429970116,-0.0692093876407692,-0.0519274166851788,-0.036977269737469,-0.0234047843488519,-0.0104694262750417,0.00452115384139017,0.0236026554884323,0.0455074181020083,0.0722004004858144,0.10642083842167,0.14901924824756,0.195034493647429,0.239257028365166,0.287913017965061,0.325605920701238,0.295535224627963,0.140167677808924,-0.0767281788463249,-0.226229160785171,-0.307841437981456,-0.555515344967917,-0.712826402026054,-0.627791454510372,-0.458570614585984,-0.322656065598047,-0.232443439049281,-0.168179437322537,0.59155198356364,0.459105593871988,0.340075267765218,0.242415635580818,0.165383486683673,0.103245050629815,0.050639156671139,0.00408163231498129,-0.0378713398180023,-0.0831070115292424,-0.133587647671049,-0.19224324032721,-0.264396379283308,-0.357005323447572,-0.477180011073244,-0.628505504726875,-0.81967292627998,-1.06581231506756,-1.32979606357011,-1.449071398738,-1.20413221972584,-0.675944787380988,-0.244097733198462,0.249666364298674,0.807082007107276,1.106313432805,1.09504648382981,0.928083603093136,0.744185913813249,0.591552024745531,1.25590857157916,0.98389027400695,0.740273857319653,0.537615304863101,0.374465259493354,0.240713912789469,0.125953877774477,0.0226414880598792,-0.0790189817366648,-0.187032283090957,-0.307206883541793,-0.447493774383318,-0.619018944524337,-0.833544297716764,-1.09565223303775,-1.40090353211175,-1.77326949500122,-2.23020049590842,-2.66416808678928,-2.78443181192471,-2.28029595732125,-1.2408601226974,-0.11055294337121,1.23114272852984,2.29761783443873,2.63886232075994,2.40654323491489,1.97618949987593,1.57465115546773,1.25590864971852,1.76456424360371,1.4263821742172,1.10420237336988,0.821242229071842,0.582683078506579,0.380439084938735,0.203433498833505,0.0406817064979052,-0.119568057416118,-0.288263073034441,-0.475191343559797,-0.691186581773228,-0.948470237932787,-1.2560346205722,-1.60551389318199,-1.97557562441172,-2.40620788124174,-2.91926528204172,-3.38114771777646,-3.47165639658151,-2.83554329612531,-1.50674839009871,0.187144148525485,1.92806134973342,3.10907027503898,3.42076255439274,3.11709197255283,2.61032600260417,2.14192959936837,1.76456433908439,2.13300587901887,1.80158133798493,1.44901780980441,1.10998127568941,0.803127323005545,0.530555942987415,0.286093055016634,0.0592928882128277,-0.163376067632765,-0.396082745936719,-0.651591565250394,-0.940651943310365,-1.27023746936328,-1.63684635007517,-2.01000089850184,-2.34933847554744,-2.70808103606728,-3.10430370567406,-3.40789968589568,-3.34818416809675,-2.64437441684369,-1.29443030657049,0.400862547602044,2.00105277474803,3.04893366956076,3.38605109710656,3.21481655941871,2.84058200590038,2.46279001645654,2.13300597527531,2.4081858891744,2.13432039220994,1.79101643644658,1.4171256822848,1.04782780574035,0.701302172326312,0.381359874017098,0.0805782316251972,-0.215378655961097,-0.522583245327735,-0.854282489396776,-1.21717849032116,-1.60673062711816,-1.99946271943587,-2.34218666848344,-2.58798751920538,-2.79962511831451,-2.98545428815002,-3.04417018696786,-2.79880329190519,-2.0918239758953,-0.946923637547318,0.405696691903988,1.64853952381596,2.51505085363334,2.9218149622232,2.97062611791001,2.83001492981929,2.62857870474555,2.40818597444239,2.62097066588813,2.42880736770587,2.12329980303722,1.73921180419834,1.32159751750186,0.903789531815934,0.500045862599928,0.108659857266497,-0.280828601859305,-0.680431664762445,-1.09765870640569,-1.53006734361141,-1.95873766182195,-2.34184758484926,-2.61603430664312,-2.74866933144275,-2.80161706317681,-2.77279107470932,-2.60499108142919,-2.21714560067007,-1.55816151215613,-0.67075389045206,0.310540429703896,1.22214307898582,1.93560055262817,2.40149934878844,2.64713982747198,2.73451935480049,2.71889736648625,2.62097073273357,2.7520748203048,2.64964499414167,2.41083288882771,2.05577736073729,1.62592789660386,1.15444056458245,0.659773825609378,0.150669329804682,-0.366944053789674,-0.885154523739625,-1.39162536269099,-1.86851634743765,-2.28878687515316,-2.61218606811312,-2.79394941082234,-2.83223790581765,-2.75295350204933,-2.55177478257078,-2.21893971535505,-1.75269298113376,-1.16364500401813,-0.488055032569486,0.216358506859876,0.889291374283777,1.48358470342672,1.97311343058041,2.34908653538467,2.60769311108748,2.74448182727628,2.75207485024766,2.75218195903623,2.74450777214583,2.60750727951841,2.3486061283899,1.97239628110092,1.48280584931512,0.888682471278813,0.216110878914104,-0.487867289870904,-1.1630964783155,-1.75198290958596,-2.21829625658102,-2.55134251408126,-2.75273599726971,-2.83216985156271,-2.79392711731577,-2.61224840865012,-2.28899034865159,-1.86881866162932,-1.39193891664849,-0.88537664467928,-0.366995581406105,0.150816664836688,0.660091920065504,1.1548542261737,1.6263381861616,2.05610172150482,2.41104434795064,2.64980178470259,2.75218194391211,2.62100758043844,2.71871086900573,2.73399561722964,2.64618990376624,2.40019617747858,1.93422130152306,1.22110492491587,0.310205412203278,-0.670255564476443,-1.55699109972221,-2.21569136878342,-2.60365742102371,-2.77181182172826,-2.80103659932634,-2.74840495280345,-2.61597288163222,-2.34192352856031,-1.95888769716778,-1.53022458541141,-1.09778238639156,-0.68049913635762,-0.280827735412047,0.108732802828567,0.500187034462041,0.903986946496867,1.32183013205641,1.73945142795007,2.12351381084669,2.4289381638477,2.62100751321666,2.40786431485099,2.62794100780938,2.82894118985142,2.96902697707274,2.91977731592924,2.51297980145354,1.64709721226302,0.405433947527881,-0.94586870743867,-2.08975329872275,-2.79635156655005,-3.04195558953113,-2.98379347017648,-2.79856036728482,-2.58736975705466,-2.34191686213539,-1.99939703801954,-1.60675406598706,-1.2172067866666,-0.854287493622383,-0.522568966122605,-0.215356169476976,0.0806041906039457,0.381394802595675,0.701358013668398,1.04791131419952,1.41721698057028,1.79105007495931,2.13420020695742,2.4078642291964,2.13233309761812,2.46173441850643,2.8390351870318,3.21271545485041,3.38352879453189,3.04652686552607,1.9996119963453,0.400954971530849,-1.29282098247257,-2.6416087074023,-3.34499820491638,-3.40504938438587,-3.10214414651819,-2.7066235609129,-2.34841056951365,-2.00948454130782,-1.63657561724448,-1.27009206946767,-0.940553091616376,-0.651510386899959,-0.396020977794385,-0.163343472630864,0.059292898128558,0.28606738846833,0.530516030654107,0.803074801142702,1.10988596671917,1.44880918860172,1.80117104248349,2.13233300096563,1.76367262272124,2.14064809228116,2.60858256597709,3.1149032274675,3.4183732420925,3.10707535880649,1.92716492733879,0.187505869483672,-1.50542670421664,-2.8331976489477,-3.46872709616273,-3.37837767996571,-2.91708052656313,-2.40465794129342,-1.97452721814774,-1.6048520348358,-1.2556105828856,-0.948190388564796,-0.690994301350787,-0.475058451274454,-0.288180413335632,-0.119533949987941,0.0406704483307399,0.20338112262777,0.380343515587683,0.582529686716637,0.820996833094877,1.10380761311388,1.42577387927675,1.76367252683923,1.254966547576,1.57338471775476,1.97457519747043,2.40468846158992,2.63711830264087,2.29649913557072,1.23084585863292,-0.110548460595459,-1.24058163491585,-2.27912606025438,-2.78240719740999,-2.66198060695376,-2.22836724586361,-1.77189361610315,-1.3999121361337,-1.09495733449389,-0.833045565180296,-0.61866597548579,-0.447256453080634,-0.307059766811195,-0.186953587255911,-0.0789908986255319,0.0226315011481128,0.125903528900462,0.24059893658018,0.374259334330008,0.537286222881251,0.739782760265183,0.983200178667852,1.25496646902482,0.590674611626528,0.743070981160582,0.926724487858728,1.09356380798435,1.10504343945973,0.806451668646355,0.249568264081675,-0.244216538840622,-0.675797089764648,-1.20311012546971,-1.44728992753332,-1.32792971224833,-1.06423781904479,-0.818445874658966,-0.627573565264499,-0.476472511332702,-0.356463725422992,-0.26400555141079,-0.191990161281418,-0.133446963279883,-0.0830438889536386,-0.0378496551076268,0.00408443347413462,0.0505905557474186,0.103125134424913,0.165160519345129,0.24205846302278,0.339559950619421,0.458421035649276,0.590674590820589,-0.168991619340961,-0.233479516976948,-0.323968528284668,-0.460140866315043,-0.629414966005309,-0.71401585102467,-0.555927659151288,-0.308186158270506,-0.226241383573878,-0.0764088386285324,0.141208591696799,0.296954123797659,0.326996657639472,0.289096043397425,0.240202113472573,0.195777158461757,0.149598034417438,0.106840751585566,0.0724733128441074,0.0456596474422573,0.0236703765910881,0.00454051314743185,-0.0104831798894817,-0.023450821504435,-0.0370810272199586,-0.052131962471989,-0.0695483036274295,-0.091433312762455,-0.122310404611483,-0.168991610993556,-0.910552120894133,-1.1719067470159,-1.50243391355758,-1.88257869085444,-2.15419549948526,-2.02188221729071,-1.37457077855331,-0.563066995068467,0.265002262602052,1.22349611957694,1.84712304490255,1.91834061313342,1.66195993514753,1.33615488928651,1.05903414476209,0.834652784392568,0.635080786132065,0.464755548751827,0.328290669356252,0.21924865063739,0.128761299839902,0.0501867072027813,-0.0221857607560084,-0.0962023386698698,-0.177104587739594,-0.269258650399379,-0.379856237789133,-0.518559038156197,-0.694554638005568,-0.910552065679984,-1.53411743295468,-1.91181906055835,-2.37983069764784,-2.89742588481629,-3.24216594486067,-3.04096921817259,-2.09285683264671,-0.743122027812475,0.854399506137551,2.33108853468073,3.08645844621654,3.04603727944775,2.60466069330546,2.11034937659802,1.702572982777,1.37091408965,1.06655567389175,0.797509329194562,0.574262971094617,0.390678660845555,0.235239486429487,0.0974329031187883,-0.0328817820825786,-0.166371631222985,-0.311317595277294,-0.476167018675464,-0.672108032485252,-0.911901976458053,-1.20281107378978,-1.53411734748633,-1.9977684149191,-2.374936306198,-2.8219226424718,-3.28685492086616,-3.54687810680547,-3.24972098114831,-2.19332550888197,-0.5856206597257,1.22088191369664,2.70580570799074,3.42346280571176,3.40484877385553,3.00555510123224,2.53884220444171,2.1395485467014,1.79466780062422,1.44796087048756,1.11652236351357,0.822579397235659,0.568362950461733,0.346309269041301,0.146070284863407,-0.0442799797266275,-0.237724751262966,-0.446274464460722,-0.68122626474559,-0.953769249420834,-1.27233895650351,-1.63187362202451,-1.99776831988743,-2.33016881677546,-2.61407261898067,-2.91584735203875,-3.17965638367791,-3.22781365573851,-2.81246088719899,-1.80328213259995,-0.357448860596303,1.17960440914589,2.40487740099447,3.06272637590243,3.1872881884379,2.99755948544846,2.70570153632655,2.42044920194349,2.13509049120878,1.80078808149706,1.44006021754086,1.08849755473415,0.763899107730095,0.469575767122133,0.199749907013359,-0.0576689465958345,-0.318021783972353,-0.596117659672398,-0.903682917896687,-1.24703248395789,-1.62209636550526,-2.00285121497211,-2.33016872866859,-2.57500271704441,-2.72667215373173,-2.83960816209715,-2.86291032732116,-2.69050333442626,-2.193828702021,-1.33042271308179,-0.218004350316774,0.922185747017078,1.86450281402704,2.47605498701557,2.76058329834192,2.81349658201807,2.7417721103742,2.61127082639832,2.41922885055937,2.13500339932233,1.77322854918021,1.37920401182773,0.987254509232384,0.615263488752415,0.264810534844175,-0.0740221217486885,-0.416235207542044,-0.775785848456617,-1.16052387359689,-1.56704154172486,-1.97372943273079,-2.33298283726974,-2.57500265055239,-2.73988266213098,-2.76793139058424,-2.70581543843232,-2.53058396690038,-2.1961786460063,-1.67038776748924,-0.965116917878744,-0.152328631691248,0.664038572564978,1.38662579374535,1.95438075662788,2.35310821859327,2.60075957478263,2.72263670378062,2.73648405561383,2.63868142656761,2.42660047697756,2.09630981191618,1.68856633274859,1.24661353822053,0.797782371520653,0.351562870934855,-0.0936402109754849,-0.543033072728659,-0.999362866672191,-1.4582967812393,-1.90370962497797,-2.30147558258068,-2.59880233935609,-2.73988262713449,-2.8587155811473,-2.71517710783213,-2.53633329596292,-2.22144255759224,-1.79608515397981,-1.28545936132777,-0.715595667046463,-0.117580515201905,0.47708669891981,1.041958397567,1.55744777372477,2.00793739755718,2.37438615673163,2.63061624972259,2.75165405145436,2.7516151754078,2.63051460308333,2.37412148233647,2.00747483329101,1.55687670487027,1.04143080323527,0.476752978339573,-0.117628541485337,-0.715357098135822,-1.28502853285582,-1.7956191953235,-2.22109450989234,-2.53619704681522,-2.71528737854151,-2.69265553362134,-2.69236083838218,-2.71844681870839,-2.54171214664496,-2.228082123592,-1.80278428732056,-1.2910307639729,-0.718996529293857,-0.118171730864595,0.479390076402416,1.04669652947909,1.5637483631101,2.01470925807448,2.38055173155495,2.63549150260083,2.7547863423769,2.75473491449733,2.63535062082751,2.38021215860954,2.01414509141122,1.56307050935408,1.04608268168421,0.479013176813233,-0.118207398920507,-0.718692178925689,-1.29049826809635,-1.80220827914999,-2.22764185987201,-2.54151851047169,-2.71854485525236,-2.87097805035692,-2.74175696989097,-2.60370787339283,-2.3070182493934,-1.90968812539085,-1.46385713252078,-1.00371806854318,-0.545584864770331,-0.094046919633654,0.353357724003458,0.801551545005428,1.25185755991743,1.69456107488778,2.10226334754728,2.43198541240136,2.64216070731511,2.73963383462736,2.7270368292412,2.60683311578722,2.35993533834725,1.96092963169845,1.39170798187647,0.666549796984414,-0.153032422789891,-0.968912398758537,-1.67638058596088,-2.20306525056071,-2.53712709149812,-2.7113003690055,-2.77023406101842,-2.74175700834319,-2.57762832956186,-2.33740725729089,-1.97878023389207,-1.57193115656725,-1.1647097745779,-0.778884381428185,-0.418000001338722,-0.0743188580853475,0.266017470049902,0.61790797527045,0.991142460169378,1.38397957161673,1.77836546930306,2.14002004840199,2.42282753721268,2.61419223630163,2.74633351225088,2.81964757058184,2.76768864877324,2.48316628275125,1.87027527948475,0.92519199920664,-0.218651815514614,-1.33459114672558,-2.20037903542274,-2.69786164500356,-2.86977540967334,-2.84538955791876,-2.73083175611287,-2.5776284038399,-2.33303168736046,-2.00678929571065,-1.62623231511326,-1.25077905872645,-0.906712960236257,-0.598268293746974,-0.319218752803217,-0.0578770941144464,0.200548468166509,0.471379575926733,0.766662860522717,1.09208195287816,1.44414567820773,1.80495043477747,2.13838638782166,2.42341801985041,2.7101521127264,3.00344885528337,3.19407869962625,3.06945223643875,2.4102265750761,1.18239979634769,-0.357823608818056,-1.8067884153371,-2.81836626748108,-3.23476544992177,-3.18623537893394,-2.92124074382524,-2.61780663781787,-2.3330317819716,-2.00042121446963,-1.63500764794341,-1.27540035823409,-0.956422442101756,-0.683311124556822,-0.447723635855585,-0.238520605472219,-0.0444224169183111,0.146588283319845,0.34749890582189,0.570217004175461,0.825049576032921,1.1194573426682,1.45109595632938,1.79738599977037,2.14219210883948,2.54270206599621,3.01055000387774,3.41031274972004,3.42821290595834,2.70885975564828,1.22230384717408,-0.585507397153199,-2.19480158536516,-3.25321385414608,-3.55205512535382,-3.29232561575432,-2.8266175454843,-2.37823864187911,-2.0004213148285,-1.53607377537336,-1.20488898187895,-0.913835368259649,-0.673762458692069,-0.477480632175661,-0.31225013021441,-0.166890596830894,-0.0329679366417706,0.0977643323451877,0.235981831001194,0.39181159646401,0.575763268869168,0.799327176769951,1.06858279603939,1.37279630749671,1.70445349137601,2.11301354172547,2.60798561409662,3.04922199649983,3.08828627645294,2.33129341537932,0.854363767968141,-0.742689403087495,-2.09249693300703,-3.04158234448239,-3.24463368330867,-2.90085636023597,-2.38305055246279,-1.91418411309367,-1.53607386499905,-0.911357667267568,-0.695394059678095,-0.519355027745666,-0.380586935063929,-0.269905083487113,-0.177625595045233,-0.0965116865235783,-0.0222295824077422,0.0503398430931629,0.129139662084828,0.219797534927523,0.32897524331633,0.465555241351497,0.635966216524474,0.835455113541153,1.0597586881098,1.33715231646139,1.66312472990772,1.91909926249724,1.84683908095622,1.22261637469755,0.264606798269593,-0.563124291850375,-1.37380637856725,-2.02083755411337,-2.15420642917693,-1.88357176262892,-1.50364352083734,-1.17284759403807,-0.911357725117326,-0.168387502138023,-0.121831513354947,-0.0910859889086202,-0.0693447193378214,-0.0520562072109598,-0.0370988851840729,-0.0234793656714139,-0.0105097563725172,0.00448983231979306,0.0237007354971532,0.0456803834897174,0.0724174039926326,0.10668245363866,0.149330602636732,0.195337054506478,0.23951923983498,0.288178302303513,0.325777729994058,0.295375803662357,0.139646620958933,-0.0770926360411083,-0.226392731034006,-0.307935628162969,-0.555203603436137,-0.712389378894142,-0.627820025199163,-0.458844592194439,-0.322973913275407,-0.232708074899047,-0.168387511216483,0.592756160827259,0.460221418644097,0.341031660439877,0.243184618144094,0.165981968144541,0.103665677899674,0.0508389213090054,0.00402817554563298,-0.0379721664615508,-0.0834616438393098,-0.134098035799117,-0.192874024622489,-0.265155436127874,-0.357902552495369,-0.478231239833041,-0.629789991975463,-0.821458923763062,-1.06810458258699,-1.33214706240556,-1.45058577318957,-1.20445339114454,-0.675961212377178,-0.243998885963806,0.249631634638048,0.80767144338249,1.10799312314105,1.0972604052023,0.930093305203145,0.74570633731617,0.592756203546096,1.25835934609406,0.986192438835371,0.7422760628255,0.539223016450183,0.375681460792238,0.241560122044448,0.126426925617273,0.0227557847531879,-0.0793155332155511,-0.187731862809318,-0.308277804930674,-0.448914388754594,-0.62078276807876,-0.835637382324828,-1.09800345546,-1.40362323442718,-1.77708795314723,-2.23508042604299,-2.66918360787986,-2.78791291981385,-2.28153838740693,-1.24089460359313,-0.11040046815622,1.23136093408506,2.29960297684726,2.64305074533526,2.4114951868078,1.98052285003057,1.57785607415475,1.25835942710259,1.76784429861793,1.42967599340664,1.1072216162437,0.823763711945832,0.584623992242645,0.381788190648902,0.204182939255709,0.0408368195996161,-0.120008074418792,-0.289307350481708,-0.476835696586705,-0.693411895300328,-0.951234959406235,-1.25924072256235,-1.60889122728424,-1.97927287717399,-2.41165829536954,-2.92646894274208,-3.38920540164057,-3.4786071299663,-2.839760783625,-1.50834199038543,0.187406266113878,1.93051813640631,3.11442234138489,3.42814756449194,3.12452878771294,2.61647280271218,2.14632588021573,1.76784439780337,2.13654934153893,1.80559199520248,1.45295411336729,1.11345631510483,0.805895544625907,0.532510455407104,0.287189060046752,0.0595192402180072,-0.164015936955513,-0.397578789980977,-0.653921022826231,-0.943756125606307,-1.27398540729314,-1.64097771184146,-2.01393126776618,-2.35330551646631,-2.71429888787398,-3.11269448448847,-3.41785914885635,-3.35793673549623,-2.65166115910374,-1.29773559230707,0.401962424241487,2.00641864806318,3.05744399397695,3.39564002995813,3.22357643122865,2.84753385968354,2.46759849586232,2.13654944194383,2.41146344248305,2.13879935122159,1.79573181847129,1.42156190975547,1.05155170749036,0.704027317496263,0.38292355887484,0.0809079855163582,-0.216289035838721,-0.524685664186172,-0.857469509670089,-1.22126495728612,-1.61141633484659,-2.00428154758144,-2.3461557272108,-2.59159275088604,-2.80573477507813,-2.99372225575649,-3.05411092262929,-2.80890875985173,-2.09978979884731,-0.950561779956772,0.407359533273984,1.654928289121,2.52428245061706,2.93162608483125,2.9793451389277,2.83680759423005,2.63309187283975,2.41146353190409,2.62367320350102,2.43345221225265,2.12854304396811,1.7445441339258,1.32639877354749,0.907485632101466,0.502239392629119,0.109139801568405,-0.282102664777426,-0.683338834309909,-1.10191585604795,-1.53523417782586,-1.96423128732619,-2.34710489482417,-2.61979150550387,-2.75175346351061,-2.80704297237484,-2.78023195443956,-2.61378102228352,-2.22593090951521,-1.56501614653716,-0.673852313093936,0.312023295837778,1.22769074829363,1.94366739594984,2.41024177860732,2.65505562250452,2.74067856590243,2.72270272583469,2.62367327504465,2.75443897456943,2.65431644482135,2.41639833989178,2.06193727069155,1.63190019337102,1.15931869960664,0.662802273571587,0.151374182217844,-0.368687858552005,-0.889093546281649,-1.39715602828558,-1.87478655452219,-2.29481137922927,-2.61735604314895,-2.79729942316268,-2.83523866567605,-2.75769338340978,-2.55831071023435,-2.22643577832823,-1.75981546328655,-1.16897921688632,-0.490442367469043,0.217419017700318,0.893504570926114,1.49000554619837,1.98046771428643,2.3560950212832,2.61327739434451,2.74841703646421,2.75443901045301,2.75452514882849,2.74839550625392,2.61299030731164,2.3554689959418,1.97958296134484,1.48907166759421,0.892790779463344,0.217145367198156,-0.490192556187383,-1.16829594942509,-1.75893459813793,-2.22562713305059,-2.55775031215332,-2.75739631701064,-2.83513699365052,-2.79726896136399,-2.61742847038644,-2.2950503265703,-1.87514607859089,-1.39753302876983,-0.889367056599196,-0.368763784022388,0.151530489044914,0.663159469996845,1.15979020606524,1.63237068738508,2.06230755918198,2.4166307825796,2.6544745150993,2.7545251308295,2.62364485577269,2.72239407332139,2.73994200334685,2.65381487687202,2.40860447830784,1.94197315741335,1.22643486768711,0.311632441301467,-0.673226059659296,-1.56356811901626,-2.22413050246605,-2.61211780499471,-2.7789928976078,-2.80629313498187,-2.75140514280467,-2.61967976689802,-2.3471377327633,-1.96435272481567,-1.53538086771533,-1.10204092564809,-0.683411990429153,-0.282105695944201,0.109213348031754,0.502384643901276,0.907686231418479,1.32662685171403,1.74476459516811,2.12872037205262,2.43353544771368,2.62364478399467,2.41101963667994,2.63224488790555,2.83539150258161,2.97727508758604,2.9290320647991,2.52167119999616,1.65310693403601,0.407001685713544,-0.949279211201771,-2.09723192330783,-2.80586378310599,-3.05135127178084,-2.99164245593897,-2.80439448382568,-2.59082316776111,-2.34578283276852,-2.00412570392165,-1.61136646472114,-1.2212411844367,-0.857441019125958,-0.524652661390999,-0.216259489262386,0.0809308591668035,0.382944843091994,0.704056717836664,1.05159247021748,1.42159085309592,1.79568420636611,2.13858622772007,2.41101954700102,2.13570143953121,2.46625398024383,2.84552388759914,3.22082431730367,3.39232347432952,3.05425106384937,2.00443309313542,0.40193158402248,-1.29579045172218,-2.64818149043699,-3.35388778319448,-3.41423970601501,-3.10996324789879,-2.71246963477071,-2.35216209779184,-2.01326615950631,-1.64058271568657,-1.27373955250198,-0.943582653459446,-0.653788661786772,-0.397486397383161,-0.163970892113766,0.059514835242075,0.287141748795747,0.532429714812376,0.805780243424095,1.11327359314449,1.45263342575971,1.80505072925094,2.13570133885947,1.76674065710194,2.14470229109035,2.61418305708751,3.12155410096569,3.42477872180686,3.11146819653441,1.9289983745874,0.187652504399437,-1.50664756530988,-2.83657661490281,-3.4746203914908,-3.3854988963256,-2.92360531631008,-2.40967325987317,-1.97796532266802,-1.60805163505324,-1.2586747052986,-0.950842986474024,-0.693136453280841,-0.476645506691885,-0.28919022232817,-0.11995982640361,0.0408209808545923,0.204106739486083,0.381647020841532,0.584400148213366,0.823419870359873,1.10669892079817,1.42891224756508,1.76674055764816,1.25718952885675,1.57622699738289,1.97832570513332,2.40878190786313,2.64022670395701,2.29747715472129,1.23050137392276,-0.110494276049589,-1.24032892480368,-2.27954352949006,-2.78474971711798,-2.66597113645206,-2.23251670005098,-1.77525106567189,-1.40235386611091,-1.09711952553904,-0.834992492225319,-0.620316902540879,-0.44859453562403,-0.308074738334176,-0.187620219314464,-0.0792741779118599,0.0227418226700767,0.126354545690764,0.241400833240315,0.375405355417012,0.538794341510195,0.741653343054299,0.985337189797794,1.25718944757409,0.591649429823696,0.744227476032934,0.928140321311275,1.09488090656886,1.10558443523379,0.806041725839434,0.249099263029944,-0.244203892891677,-0.675644028719906,-1.20265518509238,-1.44762365394662,-1.32921027900563,-1.06577881849861,-0.819763757972986,-0.628575053564721,-0.477333048511927,-0.357216276729753,-0.264654594198288,-0.192542119048805,-0.133905717261175,-0.0833698455168692,-0.0379397399316937,0.00402883860858563,0.0507710089580078,0.103504856150703,0.165692313862832,0.242731347640575,0.340387541096653,0.459371561525602,0.591649408320714,-0.169428037232926,-0.23410714929682,-0.324885923648594,-0.461332929644268,-0.630620778080936,-0.714610490583656,-0.556031018324005,-0.308344424226651,-0.226237961389948,-0.0760488650802819,0.141845755131189,0.297856820405611,0.327916410309166,0.289829182921202,0.240748620472065,0.196270467370141,0.150054132312821,0.107212726920568,0.0727692964054516,0.0458840381971857,0.023796525595834,0.00451953815464342,-0.0105274818582951,-0.023543758220486,-0.0372411335544583,-0.0523246900748671,-0.0697770716087997,-0.0917032334516899,-0.122639211919132,-0.169428028451231,-0.912384013836402,-1.17428322179985,-1.50567704166973,-1.88629393459065,-2.1573084132868,-2.02325865451944,-1.37469848259291,-0.562812338360788,0.264948580614295,1.22377698035281,1.84908231515187,1.92170449650036,1.66544347245606,1.33896526461876,1.06109676733268,0.836439756988494,0.636707021220778,0.466087753630453,0.32932955589434,0.220008465659791,0.129243576499416,0.0503705186339355,-0.0222515199087944,-0.0965860393825856,-0.177781473886635,-0.270175592302662,-0.381002806573944,-0.519940226737997,-0.696167233728932,-0.912383956288995,-1.53711658938231,-1.91572958599665,-2.38532475177906,-2.90395416265818,-3.24823428695066,-3.0447514950266,-2.09427155762207,-0.743279704124701,0.854858841921643,2.3332394192085,3.09127303284966,3.05231732706903,2.61059724327001,2.11498067418778,1.70584533783974,1.37376433148396,1.06927484072608,0.799802730560083,0.576076300025911,0.392006829270879,0.236089489763744,0.0978035661068823,-0.0329910266367459,-0.16698344103586,-0.312424011897905,-0.477750712524938,-0.674152228181875,-0.914378700460262,-1.20563079241799,-1.53711650005586,-2.00138290970919,-2.3797497804212,-2.82895545477312,-3.29562738198495,-3.55609918827321,-3.25718253829181,-2.19760161644071,-0.586586663758108,1.22317336142391,2.71150356024184,3.43166682878465,3.41356195475273,3.01312631125673,2.54454967498333,2.14343098320692,1.79819317919945,1.45163139102391,1.11979195077857,0.825259843125053,0.570354551426392,0.347583680669834,0.146620148681892,-0.0444511474842047,-0.238615282333931,-0.447884696857575,-0.683540824468949,-0.956738240537209,-1.27584731587953,-1.63565335963224,-2.00138280964738,-2.3337383256538,-2.61898376211468,-2.92318806417111,-3.18905723943742,-3.2382574872096,-2.82183847338576,-1.8092390135401,-0.358547631943612,1.18357157111035,2.41284061140272,3.07256488386765,3.19686037351264,3.0055480059519,2.71156476225414,2.42428202115003,2.13888235017816,1.80521407944754,1.44425616061138,1.09212656948006,0.766691016958739,0.471399026034592,0.20054741689449,-0.0579114316357182,-0.319290962302109,-0.598374780534233,-0.906850641656691,-1.25096281341396,-1.62651398428065,-2.00724241281921,-2.33373823134608,-2.57799497475198,-2.7314785169154,-2.84665232363002,-2.87168109291063,-2.70020094061544,-2.20264192166265,-1.33609119503582,-0.218909220016911,0.926229071007975,1.87221944265926,2.48537449142025,2.76960249109158,2.821005859578,2.74713293728616,2.61456316327173,2.42294954806794,2.13998742376531,1.7782409317838,1.38383447513304,0.991015327005012,0.617811055360807,0.26595091678174,-0.0743592649355797,-0.418018414992534,-0.778885716267585,-1.16470525320776,-1.57194910585102,-1.97887857301071,-2.33764403105589,-2.57799490079583,-2.74187057559188,-2.77042395892755,-2.71194683121848,-2.53817528736289,-2.20434715161621,-1.67758146118106,-0.969653166217641,-0.153064591935063,0.667232544728634,1.39287690327726,1.96222093182949,2.36101158301133,2.60750926484479,2.72731155105954,2.73962889318378,2.64206569802525,2.43179772468759,2.10199893583404,1.69423366528439,1.25151701331638,0.801262394597398,0.353175587119722,-0.0940924354375217,-0.545496846577895,-1.00353433020233,-1.46364415541356,-1.90952551149523,-2.3069797118928,-2.60381549550526,-2.74187053756399,-2.87047740251493,-2.71844685354914,-2.54171217546019,-2.2280821564872,-1.80278431805183,-1.29103078716517,-0.71899654117616,-0.118171729982876,0.479390089708069,1.04669655350773,1.56374837910658,2.01470929452101,2.3805517684405,2.63549153706297,2.75478636394993,2.7547348931201,2.63535058650979,2.38021212183399,2.01414505505456,1.56307047743211,1.0460826696953,0.479013163535908,-0.118207399797744,-0.718692167063401,-1.290498244948,-1.80220824848209,-2.22764182705396,-2.54151848174037,-2.71854482062359,-2.69246946409011,-2.69211359861131,-2.72043092158317,-2.54543230406207,-2.23274871204321,-1.80751571473238,-1.29498014967344,-0.721411623865106,-0.118592608595792,0.481025263619744,1.05005787211481,1.56820909434443,2.01948418979466,2.38487286499824,2.63877477553555,2.7568348744734,2.75677110718365,2.63859552691319,2.38445735532499,2.01881756947414,1.56742392848468,1.04935765167125,0.480605308356384,-0.118615708860387,-0.721041264541736,-1.2943456667631,-1.80682916336556,-2.23221525901316,-2.54518064148324,-2.72051408564597,-2.87882908658391,-2.74279842909987,-2.60721803757534,-2.31080596467669,-1.91376744357718,-1.46763585598577,-1.00668076683461,-0.547340215002659,-0.0943703787196197,0.35450584775718,0.804025805639441,1.25533252485231,1.69855058673546,2.10624581327568,2.4355686805875,2.6443389997839,2.74166480817604,2.73013893352695,2.61139587768504,2.36530232540306,1.96626226161331,1.39596305833123,0.668725096571732,-0.153531676239769,-0.971995916390576,-1.68126845630202,-2.20861108386485,-2.54225928501605,-2.71547159031593,-2.77186301085148,-2.74279846980752,-2.57943612401044,-2.3405533563309,-1.98231219673372,-1.57532308174172,-1.16761955467996,-0.781051053789848,-0.419250064204333,-0.0745560746876332,0.266816591761976,0.619690930529085,0.993767209786313,1.38719126438854,1.78181401367836,2.14343399779262,2.42523842291003,2.6163125833508,2.74987278736551,2.82463727404932,2.7736947739297,2.48937567528908,1.87541817947536,0.927888264980371,-0.219249984302728,-1.33835772855646,-2.20623705985463,-2.70431964783839,-2.87561796226011,-2.85005299773283,-2.73407664294658,-2.57943620463173,-2.3353111794167,-2.0097176200822,-1.62921811324235,-1.25345646845699,-0.908881889567291,-0.599819360146469,-0.32009303983232,-0.0580444995770872,0.201098122085531,0.472634578089748,0.768579865237427,1.09456266659014,1.44699049503483,1.80793495316087,2.14085023960437,2.42588932370563,2.71397180639681,3.00865392297205,3.20029499922692,3.07580873306491,2.41534350842247,1.18493745691514,-0.358527310498573,-1.81059875791957,-2.82438836706428,-3.24152442699024,-3.19237388045249,-2.92603496576573,-2.6210188316861,-2.33531127858293,-2.00272652357977,-1.63749540649909,-1.27773166686834,-0.958409003584983,-0.684867477915911,-0.448809906416707,-0.239122587326052,-0.0445377400152607,0.146961416316134,0.348360303857931,0.571558575308521,0.82684774330884,1.12163544517543,1.45352689111777,1.79966363692459,2.14466275320749,2.54635039668146,3.01535113869836,3.41574980554716,3.43319789380487,2.71219135646647,1.22358425304908,-0.586081178127494,-2.19729496979524,-3.25766879429722,-3.55773945189743,-3.29786402547319,-2.83111892778213,-2.38132308955013,-2.00272662749214,-1.53795202484636,-1.20670079798316,-0.915440655131232,-0.675097227271689,-0.478521591751686,-0.312980506984839,-0.167295384370639,-0.0330398883310836,0.0980131059731456,0.236546294950328,0.392683622057313,0.576947731684645,0.800816540020814,1.07034051710539,1.37460212338601,1.70648142581164,2.1158696852705,2.61156549903722,3.0528226476934,3.0907387406867,2.33204883437923,0.854369094537636,-0.74268574443892,-2.09296515957662,-3.04333812370843,-3.2479661401944,-2.90471921464379,-2.38641896069592,-1.91661050082366,-1.53795211714067,-0.912428989297366,-0.696367853503304,-0.520200555980121,-0.381300626355181,-0.270488282321649,-0.178064377528325,-0.0967579542369641,-0.0222670047652844,0.0504479509380237,0.129451123252096,0.220278029499708,0.329624189626051,0.466380334824962,0.63696675187998,0.836526012748497,1.06094322662447,1.33872035825503,1.66494629153222,1.92058323680455,1.84723035075494,1.22211198094969,0.264331531150444,-0.562895416896803,-1.3734695144839,-2.02088744603894,-2.15539291251197,-1.88540817598825,-1.50541052875584,-1.17419476754726,-0.912429048703947,-0.168496982921542,-0.121918976790995,-0.0911636520020635,-0.0694222040173612,-0.0521355330303597,-0.0371832010195265,-0.0235222136968321,-0.0105290885136666,0.00444856203401469,0.0237705712212814,0.0458051706801995,0.0725626114895173,0.106850134034721,0.149525353083031,0.195515718120996,0.239653918900248,0.288289303872557,0.32578102071513,0.295095791010699,0.139096604071936,-0.0774597766161297,-0.22653754209028,-0.308000271411073,-0.554915561484708,-0.711913108488921,-0.627660341712092,-0.458900490995169,-0.323108185149557,-0.232838613653506,-0.168496992195053,0.593621746456839,0.461019568403445,0.341715878062033,0.243736706665335,0.166417790499368,0.103977379084706,0.0509777373629238,0.00395871975960649,-0.0380081857297865,-0.0837219148005263,-0.134469104435265,-0.193326351309406,-0.265697509307222,-0.358544324535667,-0.478986879648419,-0.63072359330813,-0.822780406173741,-1.06982894242036,-1.33395854138413,-1.45181608144465,-1.20477776794321,-0.675991216526824,-0.243915245886484,0.24965696966466,0.808216061634571,1.10933222413532,1.09894659253437,0.931590742785799,0.746818649392146,0.593621790271499,1.26008372277083,0.987808784703685,0.743681124418324,0.540349057176879,0.3765316858592,0.242153133589606,0.126764420887954,0.0228372689000941,-0.0795266671682098,-0.188220998814471,-0.309031158388418,-0.4499132242385,-0.622021196114618,-0.83710722392206,-1.09965558899052,-1.40554639514556,-1.77983138418289,-2.23862001149233,-2.67285950428048,-2.79051192571589,-2.28250911035663,-1.24093953156356,-0.110272209681382,1.23156241058266,2.30110982267332,2.64614112640678,2.41510480747752,1.9836536865513,1.58014450351065,1.26008380581372,1.7701312440344,1.43197421141932,1.10933534707366,0.825529834010328,0.585984721771016,0.382734868916471,0.204709633488052,0.040947387735328,-0.120316385157225,-0.290040655574756,-0.477989754426018,-0.694972682959623,-0.953171376144849,-1.26148333433175,-1.61124525870873,-1.98186193724344,-2.41554451315732,-2.93163957329524,-3.39501916215145,-3.48364757761619,-2.84283985041229,-1.50950822318061,0.187602561372359,1.93231481060704,3.11830966122427,3.43348834389379,3.12988396281423,2.62087456042798,2.14944191772492,1.77013134583918,2.13899426747627,1.80837163686287,1.455702375021,1.11589241058953,0.807837885651619,0.533883800210462,0.287959321056997,0.0596782874604289,-0.164465520818822,-0.398629791718536,-0.655556829026356,-0.945933979276069,-1.27660962215452,-1.64386050033268,-2.01664602225851,-2.35606052488715,-2.718714601374,-3.11868677663534,-3.42500152133886,-3.36494046939441,-2.65690187720002,-1.30011620447136,0.40274963680775,2.01027525458649,3.06356072010954,3.4025248905854,3.22984902155881,2.85248640729956,2.4709882609883,2.13899437077843,2.41368212848129,2.14192263074508,1.79901638951984,1.42467298793165,1.054166579464,0.705943404382364,0.384023842414502,0.0811399408416933,-0.216929818474764,-0.526164405151385,-0.859708859292662,-1.22413171743522,-1.61469541671517,-2.00763747844307,-2.34884360879356,-2.59406671827336,-2.81005597680122,-2.99959356572072,-3.06120972913431,-2.81613602311848,-2.10549148626305,-0.953168398234196,0.408547105476244,1.65950081786802,2.53088910552855,2.93863908247557,2.98555895016386,2.84162055271836,2.63624133240235,2.41368222052419,2.62526988924182,2.43668612351951,2.13218258352097,1.7482767913839,1.32977171771107,0.910086252736781,0.503784280035772,0.109477745764587,-0.283000443245688,-0.685385461399511,-1.10490841492274,-1.53885776250688,-1.96806338426971,-2.3507687823843,-2.62227063142932,-2.75382209900418,-2.8108584870214,-2.78548944891699,-2.62002305398667,-2.23219045149252,-1.56990730066759,-0.67606563863204,0.313080963979107,1.23165042509466,1.94942037944901,2.41646398101495,2.66066600857011,2.74500378208914,2.72533668035168,2.62526996165432,2.75580249263837,2.65755310430133,2.42026417162959,2.06624250649009,1.63609431022196,1.16275175538282,0.664935769372337,0.151870604077291,-0.369917152828876,-0.891867361703033,-1.4010433737909,-1.87918029360066,-2.29900273217751,-2.62089086551106,-2.79947548233686,-2.83720935162341,-2.7609362464078,-2.56289737798098,-2.23172921213362,-1.76486818866852,-1.17277200544765,-0.492142209501273,0.218172937526068,0.896501208259225,1.49456656943332,1.98567762264094,2.3610336983634,2.61716622465104,2.75098158005935,2.75580253361486,2.75586654962909,2.75091379676508,2.61677675500584,2.36026106978975,1.98462432321231,1.4934772152576,0.895682484754063,0.217873453619682,-0.491830066815552,-1.17195366552063,-1.76381600048417,-2.23075461469137,-2.5622077451475,-2.76055883678083,-2.83707414423605,-2.79943755775082,-2.62097415838306,-2.29927784497008,-1.87959740059276,-1.40148401497683,-0.89219238831176,-0.370017624923615,0.152035704905536,0.665331961218968,1.16328120599626,1.63662546958329,2.06665920967116,2.42051750847949,2.65771116510846,2.75586652915821,2.6251778443938,2.72490650989154,2.74405291267174,2.65913303800892,2.41449112678236,1.94741012069963,1.23017631841461,0.312634279207803,-0.675311060957582,-1.5681809297192,-2.23004278756756,-2.61802901183612,-2.78398910483609,-2.80993773018335,-2.75339033952567,-2.62210940972103,-2.35075855718122,-1.96815621460265,-1.53899386697614,-1.10503482855163,-0.68546429613842,-0.283007431953766,0.10955176786098,0.503933464795256,0.910289931464517,1.32999526268579,1.74847824297529,2.13232285543669,2.43672229919583,2.62517777189656,2.41311678414249,2.63518434421976,2.83986030926511,2.98301604992457,2.93548651228218,2.52773552035782,1.65729878096068,0.408093517692524,-0.951657549212244,-2.10244470569596,-2.81249557955778,-3.05790281858655,-2.99709293877597,-2.80843774110736,-2.59314580805403,-2.3483678520205,-2.00739128790959,-1.61457189479364,-1.22405558706596,-0.859646681561149,-0.526112586605528,-0.216893210862768,0.0811596450203086,0.384031322634702,0.705946154398782,1.0541643145652,1.42463937747096,1.79888692008266,2.14161677282402,2.41311669196402,2.13797115777298,2.46935342232802,2.85001081407584,3.22644305277065,3.39841062000272,3.0595778577318,2.00774172587758,0.402593925452154,-1.29783425200235,-2.6527045563257,-3.36002396195841,-3.42060912472514,-3.11538120419892,-2.716510853494,-2.35470165952891,-2.01583211976042,-1.64334076872722,-1.27626281312778,-0.945685478259179,-0.65537300661806,-0.398506623338659,-0.164407984410205,0.0596694083518529,0.287890193230817,0.533761944045904,0.807659378627911,1.11562186946976,1.45526904129036,1.80769936663124,2.13797105433024,1.76881502334942,2.14747441329801,2.61803541361424,3.1261191686458,3.42913457119644,3.11439059468278,1.93016782062347,0.187732063130485,-1.50744012328403,-2.83881242095268,-3.47859662551538,-3.3903707756425,-2.92809351928319,-2.41312158112078,-1.98029474689725,-1.61022754803954,-1.26077469288748,-0.95266669394257,-0.694613598668927,-0.47774191249493,-0.289888846687113,-0.120253942790238,0.040926858164577,0.204609361644283,0.382547733933464,0.585689921719219,0.825086985057412,1.10868404413452,1.4310545898574,1.76881492140762,1.25868539649205,1.5781509279195,1.98087034009063,2.41152784131625,2.64222941193974,2.29796951078959,1.23013570119723,-0.11046408270234,-1.24008484356288,-2.27968288873936,-2.78620185260598,-2.66861562152058,-2.23532175662859,-1.7775308444988,-1.40399828188962,-1.09858205294227,-0.836315477835059,-0.621441835680793,-0.449510332230665,-0.308771730237731,-0.188076078620593,-0.0794718301400116,0.022819296816476,0.126669646985047,0.241949002212716,0.376184829773388,0.539820169488164,0.74292608383115,0.98678777964455,1.25868531331164,0.5922850111084,0.744974235486131,0.929040641205063,1.09566480928897,1.10577602284213,0.805577071151724,0.248687163016725,-0.244202644639601,-0.675507684149669,-1.20219860094056,-1.44766496671352,-1.32994464446382,-1.06674776381345,-0.82061474953813,-0.629224847315746,-0.477897449532811,-0.357712753676917,-0.265086120983654,-0.192915160035502,-0.134224824593544,-0.0836014256163768,-0.0379652758323649,0.00395730076879985,0.0508903057361737,0.103775103305546,0.166060908391604,0.243186808839362,0.340942352877124,0.460003831467674,0.592284989128764,-0.169766426871606,-0.234602150244102,-0.325622912278184,-0.462312317257324,-0.631646674447393,-0.715173994663174,-0.556158333880995,-0.308471685905046,-0.226217094547608,-0.0756854423777851,0.142464143234506,0.298646011824134,0.328671799351866,0.290410370101222,0.241168483220016,0.196640406831014,0.150394215079095,0.107491289444774,0.072993959174438,0.0460606722281201,0.0238946514819559,0.00448870208156495,-0.010550777208202,-0.0236047834212227,-0.0373640987939679,-0.0524683649711031,-0.0699484716063728,-0.0919079256341186,-0.12289155599819,-0.169766417749458,-0.913682980305899,-1.17599278042937,-1.50804280390491,-1.88904008087148,-2.15966017598337,-2.0243620864207,-1.37483967410355,-0.562622958064917,0.264938504181234,1.22405400852301,1.85060033926579,1.92421370826012,1.66799995308719,1.34100234996882,1.06256814336631,0.837702619714134,0.637855548725159,0.46702762808469,0.330062023491048,0.220544795747856,0.129586362316536,0.050489884103904,-0.0222932737041613,-0.0968533521909854,-0.178262494382679,-0.270826012841007,-0.381812646045302,-0.520914491743578,-0.697306776841503,-0.913682921059547,-1.53921418540843,-1.91850686663097,-2.38926990080605,-2.90867508299744,-3.25265653984805,-3.04754442622036,-2.09533410912314,-0.743395478195937,0.85521664304966,2.33483815658175,3.09479536341761,3.05687498496484,2.61487822506373,2.11829411437771,1.70815262176615,1.37575584668971,1.07117920629419,0.801408153200718,0.57734634062505,0.392937120867794,0.236688301980513,0.098066019840646,-0.0330677198746992,-0.167412330204646,-0.313200234053101,-0.478862304064237,-0.675585840916702,-0.916113939746678,-1.20760565063577,-1.53921409327621,-2.00388220399675,-2.38315030548625,-2.8339766710747,-3.30192255778945,-3.56273516530008,-3.26257003821452,-2.20069631864547,-0.587287134790919,1.22482980405535,2.71561751422295,3.43758083709308,3.41982777019398,3.01854889117077,2.54860998268441,2.14614975656743,1.80063426724017,1.45419653233811,1.12207886562097,0.82713936993701,0.571752123631098,0.348478701948594,0.147007110537952,-0.0445710239851622,-0.239240798105385,-0.449015496608175,-0.685165359460995,-0.958819538582069,-1.27830139121984,-1.63828933436498,-2.00388210024715,-2.33616596869922,-2.62244631608578,-2.92839569895591,-3.19578302758177,-3.24573401345503,-2.82856058897492,-1.81351263476461,-0.359339592527812,1.18641332537723,2.41855033308025,3.07961681325337,3.20370991627251,3.01124191785625,2.71571204040292,2.42694453910339,2.14147030383375,1.80830602908474,1.44718944601921,1.09467311575849,0.768652776460204,0.472680684246551,0.201108181832975,-0.0580820850535491,-0.320183420445376,-0.599961026754078,-0.909074748532978,-1.25371831373143,-1.629600871595,-2.01028696997194,-2.33616586970239,-2.57989297911997,-2.73489659728339,-2.85159950312616,-2.87791632901057,-2.70712076645751,-2.20893704424107,-1.3401442097603,-0.219558056687155,0.92911855126725,1.87773446656257,2.49202836572975,2.77602683310314,2.82632747263474,2.75089363661409,2.61680435425495,2.42543577104185,2.14346865381592,1.78174233771607,1.38708066691706,0.993659787421773,0.619603819992394,0.266753847149529,-0.0745969224461766,-0.419273903023355,-0.781065994545882,-1.16764175491327,-1.5753856371278,-1.98247383970864,-2.34085963885,-2.57989289867533,-2.74294635119089,-2.77213440093564,-2.71628140974135,-2.54352800095793,-2.21014577041676,-1.68270174591556,-0.972886697416236,-0.153590431100224,0.669508724389478,1.39732953410828,1.96779592915187,2.36661264590362,2.6122592725806,2.73053265664305,2.74171325534281,2.64427569275483,2.43539991016084,2.10598130017002,1.6982049624841,1.25496544691558,0.803713002283046,0.354311866302228,-0.0944114921500571,-0.547232750236659,-1.00646959136811,-1.46739866215981,-1.91359528635817,-2.31077894674478,-2.60734698408013,-2.74294631074712,-2.87840028962308,-2.72043096258315,-2.5454323353401,-2.23274874640368,-1.80751574647276,-1.29498017351949,-0.721411636082317,-0.118592607759298,0.48102527713453,1.05005789656808,1.56820911064146,2.01948422697511,2.38487290269941,2.63877481043533,2.7568348986277,2.75677108329985,2.6385954922028,2.38445731775684,2.01881753240364,1.56742389597733,1.04935763947533,0.480605294874465,-0.118615709694819,-0.721041252354693,-1.29434564297935,-1.80682913171516,-2.23221522476527,-2.5451806103346,-2.72051404487551,-2.69220553153033,-2.6919611750195,-2.72138979329636,-2.54764067883367,-2.23553183517288,-1.81034893699283,-1.29735251510969,-0.722864450249207,-0.118846400304403,0.482008438830129,1.05207788772887,1.57088538165137,2.02233952036677,2.38744804976616,2.64065089409071,2.7579956119108,2.7579210331038,2.64043530553755,2.38695611192714,2.02157067774837,1.56999349225759,1.05129209314977,0.481546017523698,-0.118856867386863,-0.722428578352885,-1.29661680379002,-1.80955253324501,-2.23490529929429,-2.54733046304233,-2.72145678645615,-2.88337579972483,-2.7432608957657,-2.60931796683758,-2.31301567006434,-1.9161862498383,-1.46988368234987,-1.00844798743486,-0.548388996817417,-0.094564075144737,0.35519150344517,0.805502553755187,1.25740351788686,1.70091795461803,2.10860860165138,2.43766675498521,2.64555561361173,2.74280914545279,2.73192679396238,2.61405704221935,2.36844556626639,1.96939022790758,1.39846112503847,0.670002797544911,-0.153824412846984,-0.973805270694257,-1.68413483344066,-2.21186150388985,-2.54524777010832,-2.71793448072861,-2.77280514546956,-2.74326093834224,-2.58039478812875,-2.34237935097928,-1.98438463805209,-1.57731968989138,-1.16933921268069,-0.782334380693449,-0.419991629648726,-0.074697087884009,0.267290560495485,0.620747640411275,0.995321193581248,1.38908519638857,1.78383966724032,2.14543620046564,2.42659734832686,2.61751542822727,2.75191270292204,2.82752968467072,2.77718396460444,2.49298613030988,1.87840977348466,0.929457087705023,-0.219596855876238,-1.34054599265686,-2.20963919415659,-2.70807488041604,-2.87900977109739,-2.85273651988222,-2.73598295675382,-2.58039487317285,-2.33659596190937,-2.01140904320738,-1.63095756790847,-1.25502327131423,-0.910154367997152,-0.600731061369338,-0.320607564270173,-0.0581431713817322,0.201421644270826,0.473372818340964,0.76970640484811,1.09601706876507,1.44865040592688,1.80967245140978,2.14225037041407,2.42729576900096,2.71616364057815,3.01164613503018,3.2038662912281,3.07945258417907,2.41826871430394,1.18638409918444,-0.358929821626327,-1.81277256675206,-2.82782959755928,-3.24540049241663,-3.19591227350751,-2.92879014457457,-2.6228658726265,-2.33659606386858,-2.00402822779449,-1.63892574336091,-1.27907935827211,-0.959561950132927,-0.685773163889605,-0.44944309290592,-0.239473815286082,-0.0446047500621939,0.147179719319145,0.348862765349975,0.572339869032622,0.827892869500164,1.12289624032593,1.45492980212816,1.8009593023037,2.14606115301117,2.54842662484357,3.01807661853306,3.41881356597941,3.43596835474189,2.71400319524249,1.22426131017615,-0.586397276255547,-2.19864998688269,-3.26012071759709,-3.56092140879361,-3.3010019533289,-2.83368436998072,-2.3830780834467,-2.00402833383678,-1.5390056748429,-1.20773107112791,-0.916357840080023,-0.675863083668264,-0.479120939753357,-0.313401809299867,-0.167529216915371,-0.033081736124682,0.0981584094433508,0.236873624558851,0.393184978463674,0.577627500068174,0.801668401318,1.071343350632,1.37562129868571,1.70761507658535,2.11746709405314,2.61354713371905,3.05476140352746,3.09196217730192,2.33230406920962,0.854290931512477,-0.74265365402537,-2.0931107247237,-3.04415362486187,-3.24971497412514,-2.90683625853576,-2.38829836557272,-1.91797001323409,-1.53900576871996,-0.913009753152832,-0.696904935419282,-0.520670385574036,-0.381701265970637,-0.270820155897603,-0.178316110252024,-0.0968968689540196,-0.0222855620963545,0.0505034605333035,0.129630829792877,0.220549530264179,0.329988779002217,0.466842060020379,0.637524442829611,0.837114368351397,1.06157959359451,1.33955126832428,1.66587469855044,1.92124670640515,1.84721344058494,1.22163148613891,0.264107781581649,-0.562741704093741,-1.37316246313935,-2.02068495852838,-2.15584915053855,-1.8863089591496,-1.50633437334218,-1.17491426845209,-0.91300981346826,-0.168514151621849,-0.121935699099729,-0.0911819903341364,-0.069447474435299,-0.052168866963643,-0.0372288477840915,-0.0235388217217387,-0.0105354899502518,0.00441150626511141,0.0238101967818182,0.0458759607330308,0.0726352960905162,0.106927630280511,0.149610498457996,0.195580663493418,0.239672804742007,0.288256504227668,0.325625804276306,0.294704236317332,0.138520713656583,-0.077832661799134,-0.22665859365038,-0.308029974811508,-0.554656401049128,-0.711406252243578,-0.627317230574043,-0.45874320676094,-0.323064142133151,-0.232840959612713,-0.16851416098711,0.594177039225371,0.46152370723188,0.342146719866921,0.244084461325291,0.166694772510532,0.104178073334023,0.0510654250596852,0.00389329297015342,-0.0380021004258954,-0.0838883760179941,-0.134703815507733,-0.193611140430883,-0.266039604467363,-0.358951482572988,-0.479470241765592,-0.631331488831207,-0.82366010276336,-1.07100855526559,-1.33525649633964,-1.45279032743628,-1.2051267999694,-0.676038283337945,-0.243850801944512,0.249757875077987,0.808744639675532,1.11036161411863,1.10013230646422,0.932601018633783,0.747549905722616,0.594177083715245,1.26114206886314,0.988792712093009,0.744534782307626,0.541031509353586,0.377045459183086,0.242511148524245,0.126972922595946,0.02288588525648,-0.0796577729132482,-0.188514303933697,-0.309487702667011,-0.450519587502712,-0.62277359105665,-0.838001729479278,-1.10066437349652,-1.40673362198365,-1.78155176820508,-2.24087259019805,-2.67525384084113,-2.79228662026575,-2.28324938770338,-1.24101780717302,-0.110173595278629,1.23178689735937,2.30220059245181,2.64819554839242,2.41742607703786,1.98563216479036,1.58157094827143,1.26114215313717,1.77151318462462,1.43335611689886,1.1106077253754,0.826591741755132,0.58680273642396,0.383303470798935,0.205026142925537,0.0410153298207229,-0.120501105432432,-0.290481612835906,-0.478683403644734,-0.695911269512962,-0.954335949451628,-1.26283243122974,-1.61266133660006,-1.98343343731223,-2.41793793501266,-2.93485159694843,-3.3986683936204,-3.48685890966824,-2.84483836752565,-1.51027374191699,0.187741589607115,1.93350245893396,3.12080995576235,3.43686331689763,3.13322963682816,2.6236006143731,2.15135286534223,1.77151328800344,2.14045401477539,1.81002333750534,1.45734397816945,1.11735067367771,0.808999765846526,0.534705788347876,0.288419991542763,0.0597732257051878,-0.164734306249646,-0.399258408950754,-0.656535597852631,-0.947237288888291,-1.27817952985305,-1.64558308137485,-2.01826058665422,-2.35771549801879,-2.72140879045356,-3.12236561894728,-3.42941064314327,-3.36928432330655,-2.66016565380721,-1.30160140615282,0.403241390537847,2.01267897073255,3.06736094484586,3.40678582324791,3.23371393504985,2.85552051265052,2.47304850772839,2.14045411980591,2.41499282488396,2.1437893595625,1.80096552193813,1.42652826733256,1.0557251742004,0.707085606480838,0.384680035321234,0.0812782942784518,-0.217311799720789,-0.527045841851056,-0.861043563248814,-1.22583989354403,-1.6166483767609,-2.00963248491843,-2.35041129515843,-2.59553757492922,-2.81267222779821,-3.00316405595467,-3.06554761499827,-2.82056201158035,-2.10898766030505,-0.95476845493626,0.409273501367835,1.66230292933208,2.53493637732248,2.94292965923161,2.98934985299661,2.84454527431399,2.6381282460186,2.41499291834426,2.62605454847942,2.438609960466,2.13433029908826,1.75048895047009,1.33177574932338,0.911631214092778,0.504702505133077,0.109678660837614,-0.283533911307258,-0.686601363913821,-1.10668553942873,-1.54100823157455,-1.97033063458422,-2.35294149198449,-2.62368074040545,-2.75502844323334,-2.81314974008038,-2.78865991398097,-2.62380087893643,-2.23599016010737,-1.57287964827246,-0.677412045630842,0.313722872931068,1.23405620469762,1.95291388204999,2.42023682695177,2.66405824422969,2.74759670273796,2.72692358033165,2.6260546188071,2.75649369984834,2.65944951613295,2.42254884766948,2.06877942868843,1.63857521272374,1.16478379104993,0.666199094701912,0.152164596276814,-0.370645001220057,-0.893509148106044,-1.40334249551069,-1.88177563644668,-2.30147057890509,-2.62293590320464,-2.80069922588999,-2.83833613458523,-2.76283471942531,-2.56564039332545,-2.23490411000556,-1.76791081121281,-1.1750599816586,-0.49316884460554,0.21862746717422,0.898308998822986,1.49731549026712,1.98881081041877,2.36399179289018,2.61948370454337,2.75237290396119,2.75649374429735,2.75653640294036,2.75226185913474,2.61899103581802,2.36307253532873,1.98758923169543,1.49607140676522,0.897386150968123,0.218302547763277,-0.492794629999343,-1.17410731883012,-1.76668803771265,-2.2337640224186,-2.56482103374226,-2.76237746519605,-2.83816795441269,-2.80065443300078,-2.62302969675073,-2.30178187765373,-1.88224974871309,-1.40384603140534,-0.893885082007435,-0.370769810214233,0.152338203111081,0.66663363284585,1.16537045073164,1.63916662205019,2.06924209080558,2.4228231230865,2.65960448459745,2.75653638076646,2.62590298145211,2.7263722655414,2.74643098222112,2.6622326581795,2.41792837603244,1.95058803645028,1.23236447306654,0.313220673630117,-0.676529358957358,-1.57087550494641,-2.23349561589198,-2.62147611350821,-2.78689765898544,-2.81205731958471,-2.75451409021933,-2.62347052297402,-2.35288741145379,-1.9703941809595,-1.54113305215993,-1.10681263197054,-0.686685410676262,-0.283544691450106,0.109752981215176,0.504855161242063,0.91183732516756,1.33199417731747,1.75067077442798,2.13443279222742,2.43859853183751,2.62590291115825,2.41430691746966,2.63686131737696,2.84243961722349,2.98633309033635,2.9392174675277,2.53123941776292,1.65971932209165,0.408723725002131,-0.953028995811355,-2.10545104773003,-2.81632497508492,-3.06169241318302,-3.00024161908265,-2.81077446083659,-2.59446641399844,-2.34983293961352,-2.00929511134757,-1.61645036233371,-1.22571068631933,-0.860947132260955,-0.526974843808917,-0.217267993833438,0.0812947224625845,0.384673377244565,0.707061177710065,1.05567921871448,1.42643143988703,1.80075317899952,2.14339015305279,2.41430682398936,2.13925593361344,2.47112236108017,2.85257718119359,3.22965153653162,3.40187035336904,3.06258372675859,2.00959337853726,0.402958699261115,-1.29898105272788,-2.65524568260314,-3.36349493189747,-3.42424175675118,-3.11848346649592,-2.71882834233926,-2.35614164604067,-2.01729780511148,-1.64493766862791,-1.27773091733205,-0.946913090500454,-0.65629982749107,-0.399104167919451,-0.16466415956946,0.0597598141250255,0.288328791363615,0.534542354551083,0.808757382337988,1.11699159456238,1.45679702647087,1.80921974100357,2.13925582856615,1.76998399659931,2.1490398208063,2.62020887733711,3.12866981822259,3.43151708094265,3.1159165988192,1.93072096238673,0.187752139707131,-1.50782937758211,-2.83995889862939,-3.48073336163622,-3.39307145726336,-2.93061933490164,-2.41507446456907,-1.98160634052379,-1.61146498586248,-1.26198013285419,-0.953717710086586,-0.695467897724013,-0.478377444870444,-0.290294845209958,-0.120424389608339,0.0409899859116336,0.204901516471003,0.383069931126057,0.586436326830393,0.826049125503575,1.10982678131332,1.43227989785469,1.76998389321351,1.25951452489389,1.57921099746064,1.98225883553216,2.41297859822645,2.64318398031873,2.29803185836713,1.22978340297708,-0.110463502984387,-1.23986989410723,-2.2795785375847,-2.78681497392098,-2.66996930546212,-2.23683487104068,-1.77878475577202,-1.40490600879059,-1.09940048071279,-0.837062098362889,-0.622079899928582,-0.450032996775594,-0.309171417425062,-0.18833574113085,-0.0795891841928828,0.022863883263479,0.126855269263688,0.242261568949612,0.376627210049848,0.540401649146483,0.743646458355948,0.98760512297396,1.25951444061806,0.592609574478322,0.745338178229223,0.929449976325076,1.09594071709151,1.1056431623429,0.805077412658486,0.248343595911497,-0.244214205073561,-0.675393158202204,-1.2017558010001,-1.44743449717023,-1.33015524441493,-1.06716660318998,-0.82102124780629,-0.629548029579203,-0.478188864253657,-0.357973724684456,-0.265316906520689,-0.193120002503701,-0.134407032762237,-0.0837390674223141,-0.0379491330721721,0.00388964829607323,0.0509582463824175,0.103933674828476,0.16627008669055,0.243437290870867,0.341242960767518,0.460341316604344,0.592609552232065,-0.170013181133459,-0.234970593480533,-0.326185402499215,-0.4630861034326,-0.632503368012781,-0.715723270020414,-0.556316402218521,-0.308561571838293,-0.226174147333196,-0.0753150844075119,0.143075323818324,0.299334523940901,0.329273996885868,0.290850401599832,0.241473548358426,0.196897288810727,0.150625521535705,0.107680376264758,0.0731467206910699,0.046183901440226,0.0239630494734847,0.00446199953082409,-0.0105608062127798,-0.0236392868566333,-0.0374488219339197,-0.0525666861787698,-0.0700683336167714,-0.0920540959990508,-0.123073929830198,-0.170013171774332,-0.914492057631597,-1.17707633748246,-1.50956933946707,-1.89085789647006,-2.16129450924134,-2.02523009938897,-1.37501432641562,-0.562514563115087,0.264983068214433,1.22436840009958,1.85172670690496,1.92591273503147,1.66966850358067,1.3423050868869,1.06349246000544,0.838483629807469,0.638562170308409,0.467604923096179,0.330510808739774,0.220872736370578,0.129797988321705,0.0505568559651451,-0.0223162273362569,-0.0970135517500206,-0.178556874741468,-0.271225693051029,-0.382310153218521,-0.521513967818756,-0.698010526701724,-0.91449199733453,-1.54048762817075,-1.92021879813284,-2.39172960827461,-2.91165618376136,-3.25550542237433,-3.04941111406577,-2.09607998284629,-0.743483821253056,0.85549565023007,2.33594787212058,3.0971000160124,3.05977867813047,2.61756552623692,2.12035153975502,1.70956662631052,1.37696129179094,1.07232970313911,0.802376935087987,0.578112418504929,0.393497325728686,0.237050441211015,0.0982252650182711,-0.0331143129758706,-0.167670481079191,-0.3136677686421,-0.479532842235819,-0.676451270315415,-0.917162058390506,-1.20879993318138,-1.54048753431928,-2.00537779939415,-2.38522253231761,-2.837064826413,-3.30582131565353,-3.56687519295399,-3.26596310100417,-2.20265740163164,-0.587729602712679,1.22588723444282,2.71821839330041,3.44128648408918,3.42372476455924,3.02189890912806,2.55110035578913,2.14779679486096,1.80209353706868,1.45573463690502,1.12344930168026,0.828266585929794,0.572589970978603,0.349015135225858,0.147239402971273,-0.0446425928046848,-0.239615734856301,-0.449693563532509,-0.686139766064842,-0.96006793469301,-1.2797728292389,-1.63986868724394,-2.0053776933816,-2.3375982073432,-2.62454420189903,-2.93156567715846,-3.19991072004912,-3.25033011215077,-2.83270484841234,-1.81615167209985,-0.359830140125709,1.18816597730063,2.42207084701124,3.08395839519466,3.20791629482209,3.0147245783799,2.71823279350788,2.42854196787153,2.14299401155976,1.81015200846377,1.44893858936475,1.09619408503693,0.769824647311032,0.473445992180515,0.201443008421295,-0.0581840154939978,-0.320716324570478,-0.600908303198065,-0.910402985434956,-1.25536391738053,-1.63144236636335,-2.01209518182637,-2.3375981054228,-2.58094085210451,-2.73697742690317,-2.85456756807714,-2.88170112540916,-2.71133819950733,-2.21277627580214,-1.34261884794311,-0.219955605234191,0.930880487856115,1.88109815410318,2.49608355439358,2.77993478068542,2.82955254023223,2.75315555320023,2.6181268046356,2.42686876160081,2.14553930599428,1.78382143875452,1.3890098429755,0.995234072257974,0.620670855826326,0.267231901600275,-0.0747383705199222,-0.420021159537577,-0.782363414068859,-1.16938877767387,-1.577427515751,-1.98461048824752,-2.34275534893288,-2.58094076710388,-2.7434393087825,-2.77315788844086,-2.71890882794661,-2.54673690571052,-2.21364855397111,-1.68579977811379,-0.974845512712696,-0.153909836962598,0.670886645472216,1.40002435826415,1.9711658187478,2.36999005345449,2.61510802692834,2.73243942596943,2.74290899001257,2.64552334322386,2.43751854663803,2.10834403463443,1.70055476937009,1.25701051893018,0.805166756523352,0.354986094154032,-0.0946007545349108,-0.548262448086022,-1.00820999312165,-1.46962297244667,-1.91600491564315,-2.31300081958775,-2.60946863975803,-2.74343926630029,-2.88300509261836,-2.7213898405648,-2.54764071167393,-2.23553187044411,-1.81034896935301,-1.29735253935598,-0.722864462671657,-0.118846399496842,0.48200845247013,1.05207791243736,1.57088539812873,2.02233955798123,2.38744808794484,2.64065092851047,2.75799563753243,2.75792100780713,2.64043527132963,2.38695607390262,2.02157064026289,1.56999345940487,1.05129208083138,0.481546003920876,-0.118856868194966,-0.722428565970948,-1.29661677962467,-1.809552501002,-2.2349052641724,-2.54733043038149,-2.72145673941255,-2.69203788912119,-2.6919250332318,-2.72164807522535,-2.54839596381784,-2.23648384840854,-1.81132462620615,-1.29817343148856,-0.723368505440267,-0.118934967957952,0.482348815591268,1.0527767484029,1.57180882690076,2.02331992168767,2.38832709232227,2.64126786062679,2.75837364619308,2.75829135381322,2.64101770275995,2.38775889500655,2.02245004678582,1.57081186245886,1.05190705700129,0.481844953288785,-0.11893288256113,-0.722868311247885,-1.29733827112578,-1.81042013897426,-2.23576537323027,-2.54802632973218,-2.72170067213127,-2.88486168031213,-2.74337672839993,-2.61001359371136,-2.31373582643831,-1.91699051197621,-1.47063613947532,-1.00904285178345,-0.54874324794817,-0.0946298782719086,0.355422667861292,0.80599990165939,1.25809881531271,1.70170726421178,2.10939226141151,2.43835004858302,2.64593715765975,2.74316390254087,2.73247573151479,2.61487541711216,2.36941103980233,1.97034946110464,1.39922675984009,0.67039476360371,-0.153912920736103,-0.974357594566436,-1.68501089095295,-2.21285792669597,-2.54616145233601,-2.71870461121271,-2.77309219358101,-2.74337674968608,-2.58066627572554,-2.34295636052445,-1.98504817469908,-1.57796469861464,-1.16989945310101,-0.782754800089293,-0.420235491177656,-0.0747437164168052,0.267446248890314,0.621094266323157,0.99582928103637,1.38969987897417,1.78449133566543,2.1460748839922,2.42701390749796,2.61787032082144,2.75251231516305,2.82837747258628,2.77820289996421,2.49403783434811,1.87928051820818,0.929914449097916,-0.219695347920826,-1.34117821985532,-2.21062408007483,-2.70916929494361,-2.88000377372529,-2.85352494795438,-2.73656063454739,-2.58066631869217,-2.33696724050638,-2.01192659136056,-1.63149759298913,-1.25551497944377,-0.910556680004275,-0.601020914725151,-0.320771756133505,-0.0581747718145959,0.201524954500957,0.473608104710718,0.770064107890742,1.096475885852,1.44916876922189,1.8102097327938,2.14266741320071,2.42769525313779,2.71677879305509,3.01247437276241,3.20483955449104,3.08042906427797,2.41904026341968,1.1867610864165,-0.35903442448809,-1.81333813285897,-2.82873601797957,-3.24644603814666,-3.19689112098329,-2.92956376224163,-2.62339330333772,-2.33696729164255,-2.00439068558473,-1.63934709347282,-1.27948249765905,-0.959910848734755,-0.686049547462747,-0.449637455649895,-0.23958204000115,-0.0446253299278702,0.147247318033036,0.349017512656469,0.572579170043634,0.828210713019128,1.12327561172856,1.45534713496368,1.80133045807085,2.1464388927134,2.54897499711124,3.01877067999287,3.41954971557426,3.43657123025337,2.71433526852635,1.22435497747305,-0.586460155492545,-2.19889325884355,-3.26061379320508,-3.5616532457414,-3.30178709942582,-2.83435916226371,-2.3835518755925,-2.00439073866875,-1.53927872044306,-1.20801536726588,-0.916616170920589,-0.676082380800279,-0.479294953421556,-0.313525425231244,-0.167598306873024,-0.0330940859446372,0.0982019406059673,0.236970305079803,0.393330553638317,0.577822800911885,0.801909998279843,1.07162422979341,1.37589431696822,1.70789480233642,2.1178410734942,2.61396603275798,3.05507672492748,3.09199708004826,2.33209206758402,0.854140727314133,-0.742601028258091,-2.09295215250102,-3.04406095174632,-3.24992001707566,-2.90724617556151,-2.38872552391141,-1.91830097287307,-1.53927876736342,-0.91312426632059,-0.697025642561197,-0.520781400873392,-0.381800841918053,-0.270907212155461,-0.178385054921842,-0.0969350988913651,-0.0222896264463307,0.0505165084438417,0.129679837332826,0.220620067755458,0.330080658849019,0.466955446266873,0.637658123223537,0.837243415449026,1.0616925333549,1.33966708893089,1.66593193997076,1.92111312746128,1.84681181966295,1.2211936383035,0.263940359601481,-0.562670092172815,-1.37289514775028,-2.02024562538062,-2.15559696975701,-1.88629642225921,-1.50643678305199,-1.17502937609293,-0.913124296355428,-0.168442569419817,-0.121885179737374,-0.0911445647867223,-0.0694235832149118,-0.0521577158061304,-0.0372313746512185,-0.0235370139400792,-0.0105360235085039,0.00439389023698933,0.0238142895221397,0.0458832077870036,0.0726328406579886,0.106915791173145,0.149589299555124,0.19553736223797,0.2395824555442,0.288085831983014,0.325317698968696,0.294205713798284,0.137918946972548,-0.0782144895623905,-0.226752669559366,-0.308021971138584,-0.554428827639997,-0.710872027540241,-0.626792348467426,-0.458375171454074,-0.322844702728971,-0.232718452768164,-0.168442573861094,0.594437786446863,0.461746476678956,0.342333381180899,0.244232783058293,0.166810541509369,0.104260410946301,0.0511018619865547,0.00386663968448522,-0.0379957102166395,-0.0839549838467865,-0.134800373528844,-0.193732814401174,-0.266190388209392,-0.359135347454465,-0.479694394999393,-0.63162799609808,-0.824111189055205,-1.07165722517254,-1.33605696739708,-1.45352661804462,-1.20551439606572,-0.676104086491351,-0.243808520769588,0.249944322560172,0.809276104589717,1.11110073502642,1.10083394236571,0.933138751211041,0.747915413913309,0.594437809024693,1.261568050954,0.989173632505323,0.744861786941617,0.5412909220105,0.377239130423758,0.242644777989931,0.127050859761383,0.0229030974258794,-0.0797069063170824,-0.188622102735334,-0.309658047896568,-0.450748487252273,-0.623060879288006,-0.838347131659446,-1.10106120475973,-1.40721922915071,-1.7822790302478,-2.24186953887296,-2.67640132133213,-2.79327247947917,-2.28378528264171,-1.24114342827127,-0.110107670258742,1.23205889449474,2.30291343634277,2.6492515884126,2.41849092170907,1.98648733825594,1.58216622391856,1.261568093461,1.77203964659849,1.4338649649351,1.1110723738859,0.82697662565152,0.587097652301188,0.383507322082116,0.205139217292589,0.0410398965323852,-0.120566958679896,-0.29063952245527,-0.478932609310841,-0.696250281196613,-0.954759342973876,-1.26332666689779,-1.61318802712904,-1.98403846374831,-2.41887946442844,-2.93614841093379,-3.40020003390547,-3.48828960684808,-2.8457914089651,-1.51065470609596,0.187828640694344,1.93411200246369,3.1219699052618,3.43831914660529,3.13460824796208,2.62469091225681,2.15210121493603,1.77203969864376,2.14099189395489,1.81061071402722,1.4579248372884,1.11786351758967,0.809406168967468,0.534992323161596,0.288580104932989,0.0598061493985973,-0.164827632484612,-0.399477198093348,-0.656877411782186,-0.94769444345037,-1.27873335344794,-1.64619468269927,-2.01884130145331,-2.35833192799284,-2.72242822174574,-3.12377985572925,-3.43113562811632,-3.37102083130896,-2.66149341215439,-1.30220856797076,0.403447899800027,2.01366324258319,3.06889025567952,3.40847001226317,3.23521735356391,2.85668355495961,2.47382768939487,2.14099194676843,2.41546356104863,2.14444041325608,1.80163692798747,1.42716460924895,1.05625675588597,0.707473716966367,0.384902658478799,0.0813253307348795,-0.21744103132431,-0.527344803946184,-0.861497801155908,-1.22642390296178,-1.61732012865883,-2.01032277869967,-2.35095682521517,-2.59607057055028,-2.81363255134897,-3.00448900737789,-3.06717134111484,-2.82223151468494,-2.1103127854062,-0.955376507858722,0.40954695351008,1.66336140795688,2.53646253637627,2.94454175171322,2.99076625713433,2.84563082840359,2.63881880914956,2.41546360790636,2.62629493682849,2.43926507362708,2.13505234692707,1.75122809429603,1.33244290804485,0.912143517600001,0.505006516495782,0.109745352267751,-0.283709946845413,-0.687003600040954,-1.10727535771501,-1.541725317551,-1.9710904733051,-2.35367589899713,-2.62415231615668,-2.75544970926177,-2.81396550894247,-2.78979806810853,-2.62516426013815,-2.23736750116081,-1.57395929670894,-0.677902026279103,0.313954454215316,1.23492773130723,1.95417928675985,2.42160126609831,2.66528117289713,2.74852426646024,2.72749383369714,2.62629497102021,2.75670891275591,2.66007356723942,2.42330087856208,2.06960370554904,1.63937909543713,1.16544020298665,0.666606538392355,0.152259600287619,-0.37087900607724,-0.894038119843722,-1.40408538090446,-1.88261770602636,-2.30227537778926,-2.6236002707466,-2.80109589295196,-2.83871281456774,-2.76348284510417,-2.56659279714093,-2.23601111658571,-1.76897726193722,-1.17586423068928,-0.493530474782462,0.2187867112632,0.898943773291925,1.49827949566836,1.98990633000092,2.36502068726267,2.6202865014725,2.75281261092135,2.75670893530912,2.75673469812338,2.7526629331259,2.61969006778791,2.36395570228547,1.98851794405913,1.49688263208795,0.897918464017063,0.21843696431772,-0.493094970107608,-1.17477906983903,-1.76758591902713,-2.23470710442119,-2.56564403689192,-2.76294693776975,-2.8385126663176,-2.8010444998567,-2.62370378250517,-2.30262210741776,-1.88314732130529,-1.40465013281503,-0.894463616950779,-0.371027584006725,0.152441314136974,0.667078228467671,1.1660824981178,1.64002944970958,2.07011096161757,2.42359634522364,2.66022185327027,2.75673468652188,2.62608944809449,2.72682133121687,2.74714402511143,2.66316356980745,2.41895854364985,1.95153975530116,1.23302008309292,0.3133973692841,-0.676892061049619,-1.57167923777915,-2.23452793580234,-2.62251013510172,-2.78777419389243,-2.81270136724972,-2.75485409055481,-2.62389308218175,-2.35357636052486,-1.97112345459729,-1.54183748564438,-1.10740184804625,-0.6870919327087,-0.283724126425839,0.109819740944261,0.505161862420845,0.912350869652756,1.33265503543001,1.75138888181917,2.13511606520476,2.43920397128742,2.6260894133735,2.4146584248471,2.63734263181249,2.84317901560996,2.98727551744354,2.94026995455331,2.53222225374942,1.66039609181922,0.40890073553952,-0.953408413887691,-2.10628617650378,-2.8173978536641,-3.06276797818725,-3.00114460389166,-2.81145442866306,-2.59485086859656,-2.35027626597892,-2.00989268526725,-1.61704628082206,-1.22624047122417,-0.861366176637447,-0.527253991514247,-0.21738975259865,0.0813383564984613,0.38488135359561,0.707421255958787,1.05616606681265,1.42700338273377,1.80134041529817,2.14394654862245,2.41465837781212,2.13961936383443,2.47160965532158,2.85327068772355,3.23049620574166,3.40274981777526,3.06331362698412,2.01002060185054,0.403035584323126,-1.29924762039309,-2.65584445268777,-3.36435242752177,-3.42518699717034,-3.11931928414079,-2.719469372552,-2.35654395151059,-2.01772951701065,-1.64542214851573,-1.27818173028926,-0.947293617561656,-0.656588998417513,-0.399291442474542,-0.164744684126179,0.0597881412284042,0.288466491095023,0.534786670906759,0.809098993428169,1.11741483384326,1.45726284777776,1.80967508430623,2.13961931105671,1.77029723701154,2.1494412135712,2.62074328913973,3.12924771754467,3.43197076305567,3.11608917024835,1.9306853176177,0.187717044265189,-1.50782989214622,-2.84004703658323,-3.48107543828438,-3.39364661821264,-2.93122592297072,-2.41557297008367,-1.98195142877229,-1.61181237525688,-1.26232926934345,-0.954026429089875,-0.69572181218756,-0.478567962760894,-0.290417448254094,-0.120475837773618,0.0410096275749274,0.204989913158209,0.383226860537892,0.586658850729924,0.826333295848414,1.11016038751865,1.43263113494281,1.77029718517432,1.25971055917386,1.57943801204052,1.98251982416418,2.41316446656743,2.64312338744636,2.29769576283367,1.22946376446108,-0.110495742673139,-1.23969573337132,-2.27924953795417,-2.78661808280516,-2.67006406708503,-2.23708653085259,-1.77904254212001,-1.40511138827507,-1.09960602723198,-0.837258241204361,-0.62225177230576,-0.450177381798554,-0.309284327340768,-0.188409547348177,-0.0796243548972289,0.0228770665016741,0.126909799794299,0.242349001051442,0.376748746905668,0.540559202158253,0.743838946396094,0.987818412866578,1.25971051701988,0.592638782484708,0.745334485267849,0.929382378032111,1.09572299814618,1.10519935291816,0.804552419043205,0.24807435884894,-0.244238578354983,-0.67530398790375,-1.20133450873016,-1.44694294223847,-1.32985456293339,-1.06704791745813,-0.820996099209606,-0.629558827936914,-0.478220201407781,-0.358010225292518,-0.265355364183058,-0.193160828368401,-0.134450267666686,-0.0837763528977342,-0.0379329558822175,0.00385997216715832,0.0509750113879207,0.103973347014633,0.166317493654159,0.243487595719641,0.341298339941243,0.460396476759203,0.592638771427956,-0.170171962281021,-0.235215979247751,-0.326576960269953,-0.463658884462099,-0.633198430572184,-0.716269964033658,-0.556509452199312,-0.308610153249288,-0.226106513410738,-0.0749342216796296,0.143687940337524,0.299930662081139,0.329729768323002,0.291155513262701,0.241670471223546,0.197046709317534,0.150751552672925,0.107781024746312,0.0732251178501764,0.0462443186701912,0.0239965146939191,0.00445458470073405,-0.0105642780684431,-0.0236553680677984,-0.0374912825172472,-0.0526214333577553,-0.0701399315339559,-0.0921455667953291,-0.123190040490894,-0.17017195730476,-0.914835609413253,-1.17755727188121,-1.5102789829292,-1.89177165560676,-2.16223829618829,-2.02588684722656,-1.3752348142537,-0.562496971281052,0.265089223102526,1.22474583826885,1.85249225876991,1.92682843448876,1.67047210696626,1.34289575064275,1.06389448343172,0.838806115799947,0.638845983381986,0.467834817213091,0.330687605414954,0.221000271046794,0.129879538057668,0.0505818052507004,-0.0223246663772369,-0.0970734150240449,-0.178668982121231,-0.27138132061647,-0.382507533840949,-0.521755839139364,-0.698299087190643,-0.914835578814334,-1.54098084832209,-1.9209035836916,-2.39274091452981,-2.91293731113548,-3.25682416367186,-3.05039019008058,-2.09653107974598,-0.743553303886393,0.855709881823896,2.33660701872688,3.09823198915346,3.06106909499705,2.61869530682826,2.12118831320104,1.71012756641745,1.37742120323277,1.07275962800394,0.802736524370723,0.578394915212885,0.393702434150577,0.237182416026531,0.0982829839176353,-0.0331314254103852,-0.167764108193101,-0.313838057619309,-0.479778715236991,-0.676771061019126,-0.917552641313445,-1.20924952865978,-1.54098080082569,-2.00593383290191,-2.3860142512222,-2.83826495210176,-3.30737139863048,-3.56857269201128,-3.26740881491981,-2.2035135660922,-0.58791859268654,1.22636725431933,2.71934848921002,3.44283225586555,3.42529917403303,3.02322062796344,2.55206481991594,2.1484233263369,1.80262844797461,1.45628864568006,1.12393942316019,0.828667478980411,0.572886535461484,0.349204302902325,0.147321178771472,-0.0446677712714212,-0.239747924044129,-0.449933282377183,-0.686485587218877,-0.960513235754164,-1.28030109844198,-1.64044020949871,-2.00593377922155,-2.33811582884933,-2.62532253609161,-2.93275507251773,-3.20148006547719,-3.25209749554575,-2.83431722453793,-1.81718455999143,-0.360022526167719,1.18885093268362,2.42343996295841,3.08563434048589,3.20952580889875,3.01604432418706,2.71917772601808,2.42913172001052,2.14353414936353,1.81079942682019,1.44954730955282,1.09672057569738,0.770228536152154,0.473708938318873,0.201557886994766,-0.0582189313391894,-0.320899258623816,-0.601234369761754,-0.910861953186193,-1.25593549107764,-1.6320859470554,-2.01273042998977,-2.33811577707993,-2.5812995431341,-2.73772942449146,-2.85564038603843,-2.88308735272377,-2.71289379384892,-2.2141968982702,-1.34353649800325,-0.220104657744848,0.931530146775483,1.88233966683464,2.49757884522203,2.78137183918045,2.83073292534763,2.7539772324739,2.61859949762981,2.42735830993537,2.14624834132822,1.78452765525059,1.38966104631111,0.995763536927483,0.621028656262969,0.267392092771456,-0.0747855005533945,-0.420271248810461,-0.782798837560956,-1.16997754916488,-1.57811900324493,-1.98533976836147,-2.34340315049825,-2.58129949942994,-2.74358355392488,-2.77352695714237,-2.71984396048349,-2.54786972030008,-2.21489565506317,-1.68690534401223,-0.975545791322014,-0.15402492986449,0.671377498442089,1.40098470598054,1.97236514374247,2.3711886123417,2.6161135231577,2.73310675260612,2.7433135911623,2.64593503890117,2.43822416551772,2.10912839971259,1.70132790492149,1.25768125434821,0.805642332815624,0.355206505025686,-0.094662198510673,-0.548598425407695,-1.00877934375066,-1.47035343387926,-1.91680104741683,-2.3137346247189,-2.6101868251978,-2.74358353187566,-2.88452805510947,-2.72164810060997,-2.54839598051828,-2.236483866219,-1.81132464250429,-1.29817344368339,-0.723368511677971,-0.11893496754012,0.482348822457246,1.05277676082344,1.571808835176,2.02331994055834,2.38832711145342,2.6412678775557,2.75837365910384,2.75829134081317,2.64101768572839,2.38775887587974,2.02245002796661,1.57081184598824,1.05190705083362,0.481844946492415,-0.11893288294174,-0.722868305016283,-1.29733825898359,-1.81042012276744,-2.23576535553936,-2.5480263131796,-2.72170064701402,-2.69198769789004],"Archive1105_field3":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.00626466629207688,0.00739815238333303,0.0223199234517083,0.0423931831544361,0.0638430706397887,0.0835477550292473,0.0989672277330939,0.107969715278996,0.109201620286813,0.102404110638356,0.0884477565139366,0.0692944568265593,0.0477990555100203,0.027622137776458,0.0117792681819216,-0.000411606582044499,-0.0150583382658177,-0.0374696259720019,-0.06561534746726,-0.0948847570772829,-0.120380963574728,-0.137717257396345,-0.143815840865923,-0.137558206962418,-0.120186161399833,-0.0952617869666854,-0.0671001404768043,-0.0402216532746476,-0.0189568221372577,-0.00551327329164914,9.96280061329805e-05,0.0113975985361776,0.0263898847934107,0.0433829678719653,0.0599960698398681,0.0739728574546616,0.0834485013859924,0.0871839862448769,0.0847309712834803,0.0763908799258702,0.0631766503102866,0.0468398145253484,0.0298476452798754,0.0147690482291114,0.00190474871855314,-0.0108439787293907,-0.0302051159536945,-0.0587083423274711,-0.0926112790608783,-0.127679870459453,-0.158217447317936,-0.177958458473205,-0.182168255741275,-0.169417270427954,-0.14247414663745,-0.107843219787114,-0.0721918731817134,-0.040093415015841,-0.0165123542281893,-0.00179851745030199,-0.00526246064161697,0.00694840540866936,0.017302021213342,0.0276627786082837,0.0369559709978651,0.0445940848692578,0.0499952703702967,0.0527117274033019,0.052451558873413,0.0490991260921708,0.0428074856513848,0.0341053919074205,0.0238804939390283,0.013067270751581,0.0016607520362436,-0.0126228181006043,-0.0374356490499435,-0.0740838558831909,-0.120350018038609,-0.172481548123662,-0.22166425125823,-0.25598444463615,-0.265380516952016,-0.245925667438604,-0.202705283251235,-0.149527928240606,-0.0987896648262596,-0.0557391394657378,-0.0239727343988653,-0.00403671469560081,-0.00696367644762096,0.00477014876608605,0.0135196742378246,0.0204824652715495,0.0258888421153106,0.0299025029388828,0.0324907371498033,0.0336022431879664,0.0331942682609628,0.0312398356640766,0.0277985388722198,0.0229701049473119,0.0167490383795655,0.0089680654881859,-0.00109949220111807,-0.0173074598961277,-0.0455455972351559,-0.0867032188731243,-0.14122541128341,-0.206217958482705,-0.269705800508037,-0.314562867580728,-0.328502327904679,-0.305398023038829,-0.24857804902271,-0.179306644023025,-0.115583061857044,-0.0656411770484098,-0.0296651013129857,-0.00790935830281575,-0.00966884288951126,0.0017090006049865,0.00845316484504937,0.0129988325562698,0.0158332053004665,0.0176136550482529,0.0186154364773406,0.0190499890431232,0.019007047067622,0.0184026764233243,0.0170910805233885,0.0148215861492538,0.0111757596097903,0.00553943231670494,-0.00304959974632816,-0.0192069823304856,-0.0469570249079658,-0.0878273598696151,-0.143315944153727,-0.209219253454339,-0.268535179742022,-0.301881973520323,-0.311325102482241,-0.298036875985849,-0.249133601579579,-0.182413816899086,-0.117282506668863,-0.0668099020541153,-0.0314738873813227,-0.0101540616967248,-0.010128847131128,-0.000253663727184239,0.00445457424725422,0.00741573509542252,0.00878626784513436,0.00934376460478017,0.00942983865763336,0.00940653043223831,0.00945752943428615,0.00946463629252338,0.00918258664920306,0.00825009318066244,0.00619318010488571,0.00235740037708301,-0.00422114831384323,-0.0175142475612991,-0.039833896100002,-0.0728475890819983,-0.117180017846677,-0.164308536810968,-0.19183105451496,-0.185282837129668,-0.180405536983551,-0.191684066911047,-0.181138966820774,-0.143134533931453,-0.0952599480108564,-0.0553432531568047,-0.0273083154113446,-0.00958602965191668,-0.00804979270161387,-0.000737666919554543,0.00158404719418524,0.00327095616395982,0.00381169190739146,0.00386746716755855,0.00367201091171691,0.00352100194482395,0.00355350762437356,0.00370612661600225,0.00378054513298418,0.00346668305533596,0.00246372495627989,0.000357038705481692,-0.00351970222969056,-0.0116135830264775,-0.0248414120667798,-0.0442341297569838,-0.0692926869910935,-0.0900862115739058,-0.0860695052743813,-0.0559464505267068,-0.0472711565479751,-0.0682679028997592,-0.0875444356411599,-0.0801580737929069,-0.0558698232170204,-0.0330728472207263,-0.0171643515762773,-0.00552077614086287,-0.003537917338639,0.000146454827561807,7.50832256656879e-05,0.000570873078378129,0.00061975411790713,0.000593743077612056,0.000515929312139919,0.00040860749600179,0.000298707858427877,0.000308421958018875,0.000329826295751178,0.000273962051573736,9.5614321769821e-05,-0.000282860960463788,-0.00101420259023557,-0.00284060640662618,-0.00569796072077426,-0.00965403246070863,-0.0144341523218121,-0.017059087055711,-0.013016298818512,-0.0119160093822101,-0.000938341428911547,-0.00469801801007564,-0.0165991029920606,-0.0160014814718588,-0.0111658399562577,-0.00645267571985078,-0.00385011197249519,0.000502258798736569,0.0019793626959112,0.00116816909438077,-0.00113109545128249,-0.00188948667173612,-0.00225404124463265,-0.00226998488819288,-0.00215126065436641,-0.00212979877164781,-0.00224346077823605,-0.00239953785808113,-0.00251754554254079,-0.00239478373084564,-0.00180770741994433,-0.000501738824859207,0.0019684587657857,0.00653877566273666,0.0141833168495288,0.025759936491381,0.0405799485180669,0.0504904678031581,0.0400749703723374,0.0181185776243516,0.0165554170066997,0.0328331549612773,0.0512144867231233,0.0479800721053492,0.0337962073834015,0.0204759608693898,0.010042496443709,0.00634127207879981,0.00669829172238346,0.000909187237828703,-0.00332933983840331,-0.00547656875731566,-0.00643532186599887,-0.00669741109870218,-0.00660291775977821,-0.00648255459830747,-0.00650391126199725,-0.00664749939683188,-0.00663156048135933,-0.0060945311056335,-0.0046123749078866,-0.00163889601622428,0.00381589160934893,0.0143965525772757,0.032343214436174,0.059378192116777,0.0946058473207537,0.126117360621362,0.132808319975236,0.115874002172986,0.104103054386348,0.128008757397164,0.136935686942254,0.112591426487084,0.0758914548821204,0.0448768354986493,0.0221414758017841,0.00996737378350513,0.0092530585011687,-0.00100854034286576,-0.00684761781170486,-0.0105953523330934,-0.0126093457904948,-0.0136557946876517,-0.0140883633914929,-0.0141750739159818,-0.0140949470710798,-0.0138161190276431,-0.0131010467212955,-0.0116180259124544,-0.00888194440265831,-0.00421405476179843,0.00354195995248069,0.0184550723916601,0.0442905189537954,0.0834248583929894,0.136680118806542,0.196074016091274,0.240459919239444,0.257229784723182,0.253785466595397,0.248975245849066,0.217967624882814,0.162339828194978,0.105787775192087,0.0613392128935719,0.0295713480738383,0.0102523410135793,0.00944857024547633,-0.00385359594803882,-0.0111750117878105,-0.017007285431001,-0.0209777363415532,-0.0237511720508919,-0.0254243803464496,-0.0260805261119272,-0.0257793508605555,-0.0245429889674062,-0.0223203139444016,-0.01899758242621,-0.0142879392238752,-0.00769198848956453,0.00151493912865019,0.0180517592704547,0.0471320637999776,0.0907452800339266,0.150129836387021,0.221337061344832,0.28866190330199,0.329000081024902,0.331407136390868,0.302529372436763,0.246542372364791,0.17777436031913,0.114793012656768,0.0658981096847095,0.0309295609223232,0.00783317966941744,0.00793662855174294,-0.00679740497537319,-0.0158290563079152,-0.0246882804644,-0.0320265891028395,-0.0378369489329514,-0.041633052976956,-0.043208577170581,-0.0425247290046388,-0.0396821421578236,-0.0348746043633171,-0.0283798818966211,-0.0204697068831621,-0.0113057710458072,-0.00111962281195513,0.0144796974394964,0.0420318116216028,0.0824816483083792,0.135065826867816,0.196263210623451,0.255156102007023,0.29348749569673,0.298465128112823,0.271030035979362,0.220303455417302,0.160511846987914,0.10485067519936,0.0597734991750447,0.0270840177508822,0.00422986454908127,0.0058226871767004,-0.00947783535340864,-0.0209685282449802,-0.0343310587307265,-0.0469615768832494,-0.0575158220093259,-0.0646198427699898,-0.0676350947833007,-0.0663656299015036,-0.0610015596450056,-0.0520953574049585,-0.040552325400613,-0.0276150381627702,-0.0147170664343431,-0.00334420043572486,0.00994075630613549,0.0327661077684832,0.0659349217827069,0.106856302853826,0.15130438257224,0.191801453944399,0.218085426807223,0.222700235615704,0.205114402250532,0.170562442132874,0.127646695402097,0.0849324636112452,0.0478037954264818,0.0208355273718627,0.000987612202818771,0.00354701919098741,-0.0122867204760359,-0.0272723517368704,-0.0471432945840896,-0.0673950330763034,-0.0850925361835531,-0.0975122862830826,-0.103008293959626,-0.100882987203632,-0.0914637474388554,-0.0761132914190087,-0.0569658044503536,-0.0367002010330768,-0.018414641956189,-0.0048489297188721,0.00642874761686145,0.0238744450287081,0.0490123202159049,0.0786875526321865,0.108584417205364,0.133979253676631,0.149998445777865,0.153294231394002,0.143351345757344,0.122288357782748,0.094133479307028,0.0638612424724169,0.0357299512806958,0.0155254912595845,-0.00151077429337103,0.00118818641342379,-0.0158644000041357,-0.0361580868100083,-0.0644073889916472,-0.0948041892937554,-0.123070611180944,-0.144215326176395,-0.154195571597957,-0.150885917690318,-0.134804749192832,-0.109311282733728,-0.0792951842789574,-0.0494967460089174,-0.0242507867567875,-0.00674806415835472,0.00451934801840886,0.0180302395286782,0.0362335004274012,0.0564113577170861,0.0754801666954101,0.090769258898873,0.100151306891064,0.102267949653092,0.096793124426528,0.0844222857572673,0.0667961886878945,0.0466308036335468,0.0268465463471039,0.0119311234295972,-0.00386856432614572,-0.00131651296312804,-0.0211810257704987,-0.0482592059363628,-0.0855251866205474,-0.12839516538757,-0.171463973836576,-0.206137709301035,-0.223782751372256,-0.219147647861696,-0.192771482489167,-0.152136479057033,-0.107533760570575,-0.0664647985098554,-0.0331673837387268,-0.010265603551344,0.00299828876436311,0.0143106633783358,0.0271532208143342,0.0400391439343794,0.0515388343476949,0.0604119432796502,0.0657560466588978,0.0670205065501925,0.0640159278885545,0.0569378623489024,0.0464232578023542,0.0338434099971036,0.020536999248701,0.00910311859396855,-0.00614995627195627,-0.00457709028238491,-0.0274655673669793,-0.0602718165651166,-0.105490545908256,-0.161319749135248,-0.221286600646053,-0.272161403403881,-0.299675866099404,-0.294682171481296,-0.256243076768067,-0.197188450139764,-0.135814548764867,-0.0830670584206195,-0.0424774707010587,-0.0148314623377091,0.000754346490013597,0.0108848435444592,0.0200139699070287,0.0278999418447454,0.0343765741315429,0.0391704561063569,0.0420045302247285,0.042685869958158,0.041114253643991,0.0373284050104081,0.0315342918533815,0.0242187894436016,0.0153929590505094,0.00640647518533354,-0.00827995000062057,-0.00820387472795453,-0.0313484121641549,-0.0664305994896787,-0.115457708227726,-0.178584278067786,-0.247486447466044,-0.303568087123478,-0.332492783746889,-0.330101260784995,-0.289724812823975,-0.222289106661023,-0.15092002862048,-0.0913692443998841,-0.0476153135438995,-0.0184361486584549,-0.00189928809498918,0.00726661825507413,0.0138421600646356,0.0185432155762726,0.0218623424562887,0.0240829790350514,0.0253179658193408,0.025618348498883,0.024962021544713,0.0232893738663225,0.0205180308204954,0.0165539673292829,0.0107395081616578,0.00345143073822608,-0.00981499664496279,-0.0106401384583237,-0.0300102496943882,-0.0618822571656175,-0.106442404337513,-0.163077557906619,-0.218706754516239,-0.249629623199191,-0.254360645759183,-0.257841975312808,-0.241194493888817,-0.196890339144065,-0.137439648249894,-0.0840525243638322,-0.0447895091385242,-0.018861433901844,-0.00393702927034737,0.00379343330345105,0.00844878147749498,0.0111814731472516,0.0126649583045687,0.0133813156841489,0.0136609008835496,0.0137408608603034,0.0136529558378431,0.0132183276116915,0.0121698958519136,0.0101565566658728,0.00641862356058069,0.000603297462824879,-0.00963678212098468,-0.0103601527917081,-0.0225807000963309,-0.0454079688425905,-0.0765116443524538,-0.113220018836219,-0.137402187627545,-0.128217701639845,-0.104186888216734,-0.116004199774629,-0.13312797564907,-0.126698993955343,-0.0952734861277539,-0.0599750365210245,-0.0328347119559154,-0.0148080810907769,-0.00421074476808583,0.00122832401858617,0.00419113417523042,0.00566783485206669,0.0062015731217771,0.00621473855744472,0.00606885373064113,0.00604683944627374,0.00616860421473722,0.00626505334241145,0.00600510682017145,0.00504945544473942,0.00291064327347009,-0.00130977503702118,-0.0070870562088295,-0.00673189587693789,-0.0104740512744464,-0.0209916697370587,-0.0343867024967404,-0.048524526784011,-0.0514858900359724,-0.032831741546382,-0.0165363846883841,-0.0181035724665163,-0.0401718835092858,-0.0509149654676032,-0.0411746295179569,-0.0263233505316926,-0.0146587958967797,-0.00694505615957877,-0.00235699957259182,0.000100396108231262,0.00139412331599056,0.0019715674655684,0.00208548744813805,0.00195879691715019,0.00179569051230207,0.00168065964907138,0.00170724770737141,0.00183367279821384,0.00182594083699541,0.0014696399999724,0.000721931789132574,-0.00156160944829348,-0.00236509638629602,-0.000893525987776995,0.00341942817728945,0.00593840262591473,0.0105819970100762,0.0154799189908584,0.0163774959094287,0.00471258641234404,0.000935261880850597,0.0119420400736269,0.0129433149764009,0.0166590054812533,0.0138516491861311,0.00909869914913033,0.005228532467487,0.00243744982312807,0.000628742866739802,-0.000116740489077397,-0.000508387907588773,-0.000697185688610975,-0.000762895897621165,-0.000751401194348503,-0.000749806448187995,-0.000861611466323203,-0.000963462840767695,-0.00103184717770512,-0.00104766963253816,-0.000988569220568576,-0.000481054957025702,-0.000538293069355239,0.00315281370403239,0.00512430010773799,0.0167252586772135,0.0325410593977912,0.0552545827560449,0.0795676074795226,0.0872038364695259,0.0681873803349428,0.047258878142977,0.0559397657158635,0.0858717474187963,0.0895945158690829,0.0686785458531601,0.0436660882906413,0.0243647116811097,0.0112072445832129,0.00313113090145651,-0.000763452647103656,-0.00288261603383432,-0.00389259603321636,-0.00421169173892928,-0.00414255691466859,-0.00399448972484286,-0.00396344309704872,-0.00411118643521949,-0.00430106833995621,-0.00423916984941366,-0.00369168870608223,-0.00199539350870525,0.000339378270260064,0.00766043654988167,0.0091895658796605,0.0268634052560028,0.0547886675480992,0.0945885704969567,0.142404796677414,0.180527450708687,0.191276179039988,0.18012197187188,0.18495088245901,0.191318444726186,0.163647761856945,0.11650635099309,0.0722561750434917,0.0393460937588961,0.0171067673631801,0.00382995563928036,-0.00277338015665034,-0.0066228305878427,-0.00868372015890983,-0.00961606004800573,-0.00989736445621022,-0.00988979810769019,-0.00983857262682412,-0.00986140046332016,-0.00977510330584408,-0.00921729190664241,-0.00784485219152466,-0.00487661422861333,-0.000152592519489211,0.00973898279504941,0.00977073023562091,0.0310389189995815,0.0662524189926583,0.116576336844001,0.181556814071681,0.248200279294709,0.297117469419865,0.310451202335644,0.301011482835673,0.267660106628633,0.20839094160354,0.142590221908279,0.0872256494556196,0.0464733551751937,0.0188125672074581,0.00266350700086458,-0.00596069932630305,-0.0116170789243647,-0.0152693969417128,-0.0175388530167447,-0.0188487273792857,-0.0194515361378985,-0.0194937558015186,-0.0190592235168389,-0.0180580013917069,-0.016277841414821,-0.0134413364295486,-0.00888599422230703,-0.00211737277423139,0.00929059343005715,0.00755302452032934,0.0292565585369789,0.0651064015656483,0.114894721745875,0.178442596218876,0.247543872996681,0.304237832678461,0.327297813040799,0.313395353342475,0.268647574971023,0.205315526652714,0.140490302380021,0.0861194428991196,0.0450892487226087,0.0169417397018341,0.000726211210539144,-0.00938725210943251,-0.0172000653087209,-0.0234390797097226,-0.0282775469590877,-0.0317250079069564,-0.0336824791282247,-0.0340903952261507,-0.0329757735546434,-0.0303817463182535,-0.0263598074374923,-0.0209415154859988,-0.0139582257651569,-0.0051707118784891,0.00660917010316929,0.00370921224686306,0.0236089698374765,0.0552583427623698,0.0981554036269506,0.148729759827741,0.201742926157669,0.244828811714606,0.264217706044639,0.25484743888322,0.220636751467627,0.171612917617262,0.119651686747568,0.0735399136407049,0.037021913758124,0.0122897072643978,-0.00201755533078622,-0.0134773201163381,-0.0243382843354364,-0.0346024443419025,-0.043335565682885,-0.0496493375410203,-0.0530139980938045,-0.0532759233069364,-0.0505508433716313,-0.0451315180677413,-0.0374671714256168,-0.028140874281208,-0.0177385911038763,-0.0073336335296563,0.00493857117087539,0.00148142470379372,0.0161618170948168,0.0396480213943493,0.0716189123459042,0.107131720909347,0.141631189896493,0.168473540534088,0.181176072489714,0.176982384582598,0.157318758299826,0.126901733097485,0.0919732280725251,0.058207641157935,0.0298243723957744,0.0105253055208496,-0.00224500925306715,-0.0151647728158093,-0.0303111607096983,-0.0473742958193915,-0.0637734462424442,-0.0770334629596842,-0.0853991984168014,-0.0878559585269004,-0.0841025493444193,-0.0745894355990431,-0.0605591907761247,-0.0438813996735153,-0.0268169479824659,-0.0117612391511775,-0.000416916241608318,0.00511849282885293,0.0186051203346471,0.039801855411252,0.0665763169437446,0.0946348628736945,0.119469842653043,0.136776827052175,0.14300257805325,0.136910628054918,0.119619477617417,0.0942010498579052,0.0650323672229429,0.0369951363053463,0.0146796707785476,8.67766106167706e-05,-0.0121055645706772,-0.028003671488223,-0.0482735653700206,-0.0698742850146599,-0.0891268174595071,-0.103162767959533,-0.110009404622078,-0.108788508348241,-0.0997568979589017,-0.0842723284986837,-0.0644758529244835,-0.0429215619630603,-0.0227423946465512,-0.00774941052101212,0.0058829448024924,-0.0108358805845417,0.0149799377237938,0.0446201230140288,0.0851336593820861,0.128370697997129,0.168131403789681,0.199271782029896,0.217459065787461,0.2199392791753,0.206191241707568,0.177998674805242,0.139351832429105,0.0960172507343154,0.055321977808782,0.0234629987618239,-0.000770636348345141,-0.0301025997090571,-0.07514361006719,-0.131698567686615,-0.190569659692142,-0.241932085642376,-0.276915388308672,-0.289258444665072,-0.276671386341635,-0.241662520216895,-0.191449235909934,-0.13481405693888,-0.0807593886807659,-0.0375014847748083,-0.00912105117383641,0.000476020152703805,0.0225932850575437,0.0528603008224381,0.0871451527262552,0.120724834149984,0.148984192116275,0.16815149899761,0.17570567620278,0.17073696796759,0.153865775585069,0.127159972301748,0.0941685085910851,0.0598685419586704,0.0294970819591702,0.00374411563543015,-0.021724411067495,-0.0607238952652097,-0.117934780706448,-0.185914964483798,-0.256307380000912,-0.317664560305895,-0.35736744515179,-0.365862056683251,-0.340247429581622,-0.286099819355175,-0.216540888932997,-0.144942917543936,-0.0809168848238709,-0.0330250866869865,-0.00355183067956232,-0.0106661102762454,0.0137728975496124,0.0345882290617551,0.0555638433611873,0.0744149936770971,0.0899223521190002,0.100891350455135,0.106405212505382,0.105868008154079,0.0990472212906816,0.0862594840814342,0.068589023270924,0.0478642763099172,0.026056407049953,0.0031974911103137,-0.0255457409970295,-0.0754259990155588,-0.148715493395899,-0.241241548450269,-0.345525635399142,-0.443908317165612,-0.512566449968674,-0.531436117401415,-0.492645491590895,-0.4062378476576,-0.299875836905338,-0.19819204212219,-0.112186974253888,-0.0484058168308324,-0.00843582591233244,-0.0141219182083707,0.00947211453428455,0.0270970551507615,0.0411732225456707,0.0521561664539285,0.0603342548802072,0.0656212537562582,0.0678972889224138,0.0670674974329987,0.0630759615549276,0.0560502064627174,0.0462138177067332,0.0335921729125043,0.0179070571913848,-0.00230965175163767,-0.035002762560922,-0.0915824192404158,-0.173764457126736,-0.2825366775368,-0.411992682278547,-0.538168947542413,-0.627077106549656,-0.654710758791034,-0.609112573202569,-0.496440751612349,-0.358662509147186,-0.23151703987886,-0.131763681054938,-0.0597730772760622,-0.0161042632143766,-0.019460915032292,0.00343331072490698,0.0170162999570161,0.0261746060256732,0.0319115201178916,0.0355348386705361,0.0375863215626518,0.0384795526094661,0.0383902840246327,0.037147500127567,0.0344634444862841,0.0298479198360585,0.0224708209927568,0.0111240740162239,-0.00615050828205839,-0.0386707750444409,-0.0941341254463038,-0.175630788723594,-0.286034191611502,-0.416653952086918,-0.533548401487594,-0.59865235959754,-0.616950285659268,-0.591187753079818,-0.495248712558018,-0.363557423776115,-0.234255483122907,-0.133720951891354,-0.0631895502371309,-0.0205058579004409,-0.0202462088436853,-0.000406803671679547,0.00905138797355628,0.0149726994407055,0.0176966480396638,0.0187845733247019,0.0189264938352315,0.0188607658336435,0.0189735068484355,0.0190178887886163,0.0184842870364366,0.0166391697182581,0.0125224789295945,0.00482889288034252,-0.00840271160072223,-0.0350730151977833,-0.079591232222019,-0.145327627459643,-0.233336779278923,-0.32627975665322,-0.379678237625475,-0.365710094515106,-0.355909817205014,-0.378704585169016,-0.358808071163781,-0.284425219618915,-0.189768644660677,-0.110449385576079,-0.0545981468861282,-0.0191863537978207,-0.0160069195444184,-0.00135186774973631,0.00328859876158096,0.00663292059938568,0.0076665015817758,0.00771665125978979,0.00726411397753306,0.00692849400884167,0.00701060618954474,0.007369245974716,0.0075835140357601,0.00701489699595867,0.00504631026952689,0.000846467229103455,-0.00694235658131677,-0.023137233615481,-0.0494865670609483,-0.0880835080192077,-0.137789047729409,-0.178615854438121,-0.17000621970839,-0.11024073990221,-0.0931508193323441,-0.134609632170446,-0.173143671467621,-0.159053234856895,-0.111099044252516,-0.0658442648150358,-0.034196047967306,-0.0109510309225791,-0.00700972423247427,0.00035764765677389,0.000207057076220498,0.0011956710301113,0.00128736376705486,0.00122397656346347,0.00105556719106707,0.000829456250513107,0.000605534735938709,0.000638938177678593,0.00070315986431027,0.000613418710078116,0.000271052217622279,-0.000483448682923385,-0.00196928631143872,-0.00562562379445207,-0.0113264999652129,-0.0192206371047244,-0.0287111655220934,-0.0338251829437361,-0.025678655022384,-0.0236963131046091,-0.0018752801148222,-0.00923833727331527,-0.0328322238022525,-0.0316924399156232,-0.0221263635205434,-0.012777960982981,-0.00762417775485616,0.00107238418571123,0.00395737636772367,0.0023257514814612,-0.00226793204875799,-0.00375103843000273,-0.00443087541210287,-0.00440640713629919,-0.00411876971365401,-0.00405142054493694,-0.0042900596125403,-0.0046402653920322,-0.00492640632648627,-0.00472561254523609,-0.0035871774881748,-0.00100214205924479,0.00392477870755864,0.0130573457944708,0.0282687911508271,0.0512684154246224,0.0806205389926258,0.100013301775778,0.0790548337176512,0.0356432537140807,0.0327592078028475,0.0647292659443348,0.101304000685755,0.0953101082368686,0.0673076771253793,0.0408264849427896,0.0200399065907619,0.0126869686423686,0.0134219888304914,0.00180250729402802,-0.00668805447422987,-0.0109630643976076,-0.0128365744230269,-0.0133022146367198,-0.0130525233134761,-0.0127726160491302,-0.0128238404280721,-0.0131606338466587,-0.0131895579607171,-0.0121699989907549,-0.00924517116621912,-0.00331544012342187,0.00762769652047866,0.0288183847056655,0.0645806639588625,0.118341666333885,0.188142904899707,0.250025438818125,0.262382657797577,0.228480909150486,0.204997461639731,0.25258419831982,0.27118323380387,0.223771420336794,0.151205520943074,0.0895520044657418,0.0442649645431936,0.0199909342733491,0.0186596793983548,-0.00196957478424574,-0.0136986216215274,-0.0212342282990004,-0.0252893955019213,-0.0273975081141362,-0.0282675842405934,-0.0284382339073762,-0.028276545690428,-0.027716462218496,-0.0262771620910315,-0.0232965446798302,-0.0178033799581553,-0.00843565717830194,0.00717472151205583,0.0371178002193118,0.0886966325786903,0.166642027916802,0.272395924228153,0.389643296549276,0.476422163415374,0.508700737611344,0.501691514422361,0.493050144337296,0.432843578596773,0.323310903081845,0.211180129770586,0.122710158424207,0.059349130990559,0.0207109570371435,0.0191574405572029,-0.00757477858677601,-0.022295814182321,-0.0340767806387731,-0.0421492382503412,-0.0478155778775299,-0.0512466617088437,-0.0525933514478103,-0.0519733601754397,-0.049437278506723,-0.0448948926652802,-0.0381359988277859,-0.0286020466189564,-0.015318149424782,0.00322495116433002,0.0365138844281449,0.0947198304248158,0.181785674038063,0.30016431058323,0.441620889934352,0.574735249347797,0.654136302448575,0.658788655187107,0.602036557632111,0.491462259433648,0.355036083913999,0.229692322463249,0.132177138169385,0.0623250570346,0.0159974539060957,0.0161281019652525,-0.0134018466257899,-0.0315580119628914,-0.0494707108718225,-0.0643804375741372,-0.0762034440818412,-0.0839336068842088,-0.0871430329911231,-0.0857512629333932,-0.0799646254397228,-0.0701839107302474,-0.0569880293672259,-0.040950451753518,-0.0224681087884079,-0.00201116365408482,0.0294195020825708,0.0847346396363868,0.165652324044012,0.27080513391145,0.393078876011449,0.510524710544098,0.586771000086579,0.596549920016371,0.541875715115713,0.440751143749147,0.321416605063059,0.210234897240559,0.120171275554546,0.054753498718576,0.00880590015216512,0.0118021622732742,-0.0187484423759838,-0.041858462856198,-0.0688430175077924,-0.0944075323471437,-0.115779705354694,-0.130176340764911,-0.136292929722531,-0.133725337763032,-0.1228584338721,-0.104817376328609,-0.0814451058051431,-0.0552621536572322,-0.0292401624577793,-0.00648439589911865,0.0201853928902914,0.0661286106396343,0.132629386752564,0.214617979814502,0.303740949313832,0.384969906966944,0.437664563024233,0.446857026829089,0.411526649820779,0.342197664877195,0.256144458225705,0.170557610168403,0.0962332453173383,0.0420734291235269,0.00219970032461481,0.00712501558367252,-0.024398579373427,-0.054562138683099,-0.0946026840866168,-0.135436164909888,-0.171148873649481,-0.196242639963858,-0.207363286101164,-0.203080472315751,-0.184054719494688,-0.153056649077181,-0.114419417717904,-0.0735448738962494,-0.0366977251288466,-0.009541748038221,0.012930261376806,0.0480049762215136,0.098538084328702,0.158167445918956,0.218308338193533,0.269445318541686,0.301712294626767,0.308328814669962,0.288262748475749,0.245820468715652,0.189164605684631,0.128322706805414,0.0718179501376812,0.0311233588506598,-0.00289585042991519,0.00234168134058249,-0.0317138936730371,-0.0725842927187996,-0.129312229986264,-0.190386038976204,-0.247247059026977,-0.28983831761611,-0.309971622625433,-0.303328995940295,-0.270948650640382,-0.219631121398254,-0.159270245786498,-0.0994103429855687,-0.0486696054652716,-0.0134793855408553,0.00897318053480532,0.0360209728133135,0.0727099263422136,0.113419042484178,0.151910071951093,0.182795213367424,0.201752806726428,0.206019513919556,0.194937193633756,0.169932833840348,0.134351814971852,0.0936798318300474,0.0538038407972056,0.0237773364295899,-0.0076776723409898,-0.0027697783549794,-0.0426810632989611,-0.0970561346135646,-0.171638914725119,-0.257514884347295,-0.343849668903637,-0.413401119223162,-0.448838334771805,-0.439607230053348,-0.38674359468628,-0.305262603158094,-0.215855627202407,-0.133593253928547,-0.0668474102629269,-0.0207483407234121,0.00588285489815148,0.0285230435095686,0.0544390730263487,0.0805250578104987,0.103816336635141,0.121796094701118,0.132626220706931,0.135184568762724,0.129087488648963,0.114738642676683,0.0934400596090494,0.0679708684308928,0.0410925893405725,0.0180911757704859,-0.0123689746830892,-0.00941384785777132,-0.0554367470186336,-0.121080928240708,-0.211410556033576,-0.32290521679294,-0.442564315465696,-0.543963042045043,-0.598783167343328,-0.588972774828929,-0.512527062399103,-0.39478324735286,-0.272183253093785,-0.166726385212675,-0.0855442027055812,-0.0300392412478087,0.001370748939437,0.0217243991801774,0.0401417437687957,0.0561343318925031,0.0692966681959748,0.0790521225937196,0.0848230480490216,0.0862101817630761,0.0830079412672357,0.0752967627543671,0.063503959443382,0.0486368348893597,0.0307864135464178,0.0127137066061679,-0.0167291600863958,-0.0166538847393527,-0.0630841931258855,-0.133156562710111,-0.230922830286068,-0.356541318198938,-0.493222728542008,-0.603981730002996,-0.660828347083097,-0.656202739447952,-0.57672369285421,-0.443395901915596,-0.30163238051712,-0.182938835717037,-0.0956049177973216,-0.0372006894506717,-0.0039037191086459,0.014566950933643,0.0278153597055816,0.0373354662986258,0.0440892379527648,0.0486289244862855,0.0511630695331472,0.0517816973735995,0.0504342888668633,0.0470034919834952,0.0413399214193049,0.0332777664732152,0.0215279379210909,0.00686541813431283,-0.0198062062734709,-0.0214025607178565,-0.0601494623892093,-0.123714873852147,-0.212401610915065,-0.324698188470667,-0.434249541328624,-0.494318312015631,-0.502828530938337,-0.509904452681387,-0.47783751597758,-0.391190048934543,-0.273820875017028,-0.167809678596612,-0.0896150446910794,-0.0378500179570215,-0.00787552095414039,0.00769444725695343,0.0170440462171364,0.0225353214098125,0.0255204288142309,0.0269649541628048,0.0275282701989326,0.0276900927700626,0.0275161192474366,0.0266398787837764,0.0245249251004586,0.0204671065293708,0.0129452859369805,0.00125444028889899,-0.0193441750316533,-0.0206937729768552,-0.0450682212506969,-0.0905387643361381,-0.152370731652335,-0.224968159059153,-0.27209624407891,-0.253033142820738,-0.205217153261345,-0.228788083631823,-0.26303528598066,-0.251146163465331,-0.18940491661809,-0.11945736788787,-0.0654880482236089,-0.0295631022528263,-0.0083291829736646,0.0025943799929744,0.00851164865938587,0.0114323228369077,0.0124503992603246,0.0124196321520741,0.0120803426376103,0.0120283258707031,0.0123099273123226,0.0125606638668758,0.0120950329745557,0.0102219751463123,0.0059561681629276,-0.00250874221408016,-0.0141178766072687,-0.0133868130918995,-0.020830055636657,-0.0417866433776385,-0.0684211253576963,-0.0963540192040844,-0.101851956726773,-0.064761921256994,-0.0327461127319835,-0.0356462192056028,-0.0792756239140304,-0.100839399058275,-0.0817487656245957,-0.0523238199436225,-0.0291474441128062,-0.0137934920260038,-0.00461470587618366,0.000299530166663293,0.0028702183876015,0.00399700623253292,0.00418526987677941,0.00388475717981087,0.00352176769581654,0.00328094442026794,0.00335832176741652,0.0036591102455315,0.00369576728356022,0.00302597321642144,0.00155538104927609,-0.00301843065100041,-0.00464851594071772,-0.00177372604467772,0.00683552241930138,0.0118203459496696,0.02102540269706,0.0306920250672339,0.0323811704741424,0.00923829372675151,0.00185620209495693,0.0237269343655959,0.0255060891364153,0.0330431973357701,0.0276043692808633,0.0181796145647287,0.0104588317631371,0.00489508006016763,0.00128524632304733,-0.000215535209369983,-0.000986020040969921,-0.00134153693015454,-0.00144582333687412,-0.00139858123769736,-0.00138045581150718,-0.00160835294567874,-0.00182403700220002,-0.00197529289436772,-0.00202213511213581,-0.00191635615142007,-0.000913366549149028,-0.00104741723986088,0.00631959847527552,0.0102403735170058,0.0333923455931386,0.0648547637113541,0.10994065746862,0.157925196372441,0.172463983539498,0.134408133099926,0.0930828950534654,0.110182819794396,0.169588780589115,0.177662700436627,0.136624821468991,0.0870201278606816,0.0486061637790984,0.0224014187415628,0.00625286304557211,-0.0015587235405078,-0.00577391753073664,-0.00774925443247677,-0.00832300244970318,-0.00811577194645281,-0.0077646224967401,-0.00768549374098185,-0.00801561750374736,-0.00845956816772468,-0.00840153796195376,-0.00736071386509553,-0.00400608803103583,0.000649588594041895,0.0153093983351825,0.0184773977947201,0.0537855576669574,0.109420506348603,0.188510387902183,0.28304210561195,0.357623624673003,0.377879151844096,0.355308539863716,0.365023108522505,0.378673479846013,0.32501960629628,0.232068927009868,0.144225174698905,0.0786924217607206,0.0343366872020488,0.00770907395763877,-0.00556015175579392,-0.0132729931343708,-0.0173919063969954,-0.0192324289484531,-0.0197612870435403,-0.0197139743239093,-0.0196004229931051,-0.0196665443367507,-0.0195269897447191,-0.0184423669145077,-0.0157197088957611,-0.00979107663029179,-0.000310690959583905,0.0195492906541446,0.0198248097160982,0.0623985113510623,0.132690583166481,0.232940909800154,0.36195274426588,0.493488339997523,0.589438654476892,0.615277475494858,0.596992282322288,0.531895625314796,0.415101400214703,0.284681621479388,0.174516067463758,0.0932466821421758,0.0379617687509755,0.00546773691036663,-0.0118663655782847,-0.0232466489679727,-0.0306327971994436,-0.0352458319250425,-0.037924825182893,-0.0391635319652888,-0.0392512240325683,-0.0383587997483929,-0.0363099460138827,-0.0326894288970435,-0.0269514413387917,-0.017778718793819,-0.00415454019421008,0.018788687265974,0.0154781221844204,0.0590382845763396,0.13078399476695,0.230246468421803,0.357063237772405,0.49452460395935,0.606960558750641,0.652473577565734,0.624908616252783,0.536206423879042,0.410321838947256,0.281178552254469,0.172690657599231,0.0907508862972816,0.0343524338521386,0.00165246358342699,-0.0186466134535985,-0.0343897931174729,-0.047044077799392,-0.0568986496440495,-0.0639355384886502,-0.0679324853980997,-0.0687620636471108,-0.066480337795227,-0.0611828819368937,-0.0529899352449634,-0.0419856898835907,-0.027872266735889,-0.0101782940627603,0.0134984021769041,0.00786727566277958,0.0477538744772674,0.111311369846674,0.197031623613807,0.298411576386528,0.404472812546546,0.490633984036427,0.529302390122844,0.510478283471555,0.442020276099702,0.343929674988084,0.239960490876573,0.147722651408291,0.0746805945865484,0.0249637887471561,-0.00382190342578931,-0.0267803141649448,-0.0486781598477871,-0.0694768778038966,-0.0872053825471801,-0.100034187044859,-0.106877571582458,-0.107418070427395,-0.10188837472551,-0.0908858217177466,-0.0753295805230519,-0.0564161217832644,-0.03536252390579,-0.0144478409943199,0.0101028412983531,0.0030151411369904,0.0324143192927806,0.0801143278312798,0.143901879738386,0.215243091537678,0.284561208885628,0.338524602122178,0.36405003216486,0.355583759280967,0.316021635789723,0.254885499457596,0.184752015544855,0.117028744838125,0.0600478984610369,0.0211753573271123,-0.00433453361291568,-0.0301960032504201,-0.0606970419064532,-0.0951310896865912,-0.128238573277724,-0.155028501247889,-0.171946200547955,-0.176921212248384,-0.169333828735543,-0.150097491810266,-0.121739118969219,-0.0880385049097111,-0.0536167109576388,-0.0232336644621333,-0.00100985974679573,0.00848807582883471,0.036889683507207,0.0800115821073005,0.133871592193823,0.190315008799843,0.240364320876162,0.275254256567505,0.287782114542726,0.275449298945301,0.240546608087688,0.189325819572193,0.130641059886555,0.0742902778808572,0.0294334251373311,0.000210990102604826,-0.0240253709242683,-0.0559956340619623,-0.0968694231896454,-0.140401728322758,-0.179232615766356,-0.207571963830963,-0.221410541368913,-0.218951045264909,-0.2007109189336,-0.16945121060237,-0.129520634725934,-0.086088467953517,-0.0453753878094116,-0.0155792282072526,0.0102713790101781,-0.0144911199242802,0.0226497151515067,0.0669588220974658,0.128239118217339,0.193553575247699,0.253671135798097,0.300791894570241,0.328322257100857,0.332065935668532,0.311236002472293,0.268566746252502,0.21013413976559,0.144664018606671,0.0831367846596625,0.0350700633997172,-0.00111180927113272,-0.04518404360575,-0.11305550313296,-0.198244252421496,-0.286993019150373,-0.364533653694396,-0.417426961037141,-0.436137929291772,-0.417160169357289,-0.364290679129949,-0.288485426247509,-0.20311461885453,-0.121672299804735,-0.0558136074268521,-0.0114251963449581,0.000998229500626564,0.0336591161280933,0.0794291778052511,0.131292502404114,0.182148001054966,0.224956234285456,0.254002227265798,0.265447466743345,0.257909531258584,0.23234293947101,0.19190665432488,0.1419856275162,0.0900890902300976,0.044223504376143,0.00551042475354843,-0.0326970750547601,-0.09160231748303,-0.17767724997575,-0.279864107419978,-0.385791104360917,-0.478203613006476,-0.538053227434918,-0.550895679563333,-0.512324456569418,-0.430754873146192,-0.326024798523999,-0.218249559536525,-0.122420990410937,-0.0496573641745154,-0.00537614489919582,-0.0162263237524705,0.0204679562707323,0.0518899465523848,0.083721874775259,0.112375192926031,0.135958212593621,0.152641511553664,0.16102323939699,0.160194208730226,0.149804501825705,0.130341549384576,0.103466213771861,0.0719811941641092,0.0389972808404822,0.00459700904726899,-0.0388183059951763,-0.113983223821673,-0.22386613012783,-0.362636618294464,-0.519080822598403,-0.666668770690375,-0.769671061371681,-0.798076470901164,-0.740058408854308,-0.610508683756414,-0.450960185460564,-0.298184411402011,-0.169303026914749,-0.0733167124812734,-0.0131928245097231,-0.0214857258941904,0.0141062879944811,0.0407465619504957,0.0620978943940503,0.0788264797999802,0.0913151364005493,0.099405730413539,0.102895989030386,0.101631009699746,0.0955248058672945,0.0847788672640361,0.0697611222151846,0.0505547895728594,0.0268333109693911,-0.00363713480709088,-0.0531037870687981,-0.138090932546264,-0.261166597574205,-0.423947391310175,-0.617403070140116,-0.805571614517092,-0.937835107709071,-0.978950500136179,-0.91137906206619,-0.743698011148593,-0.538073918030619,-0.34777354122137,-0.198336949366432,-0.0903259845775775,-0.0246092800933542,-0.02938524419414,0.0051643857502038,0.0257000574287873,0.0395605213298859,0.0482883972332077,0.0538350745100823,0.0569991144900749,0.058383943792929,0.0582436034911923,0.0563165113170625,0.0521806649370011,0.0451220443790684,0.0339062663285483,0.0167559090414822,-0.00931252980337406,-0.0583943459847931,-0.141526354906845,-0.263434999351701,-0.428258514127061,-0.622575095057515,-0.795561295617454,-0.891074231691106,-0.917735711978462,-0.880188930116592,-0.738800871491987,-0.543627329740683,-0.350974068728495,-0.200732865491383,-0.095138698736029,-0.0310629027875704,-0.0303663723475082,-0.000472143595641286,0.0137980790703913,0.0227065586891276,0.0267949964876322,0.028411354070596,0.0285962591195315,0.0284757433203708,0.0286592912688158,0.028758069829063,0.027980054739321,0.0252137802207815,0.0190063924448267,0.00740968903122061,-0.0125590692269165,-0.0526862805389248,-0.119294770169953,-0.217506168908667,-0.348634457846502,-0.486275374323423,-0.564156935626329,-0.542041870752042,-0.527282265001837,-0.561790313744571,-0.533550029090087,-0.424157850855562,-0.283644238369575,-0.165362421578093,-0.0818861580832901,-0.0288162505710476,-0.0238890242959301,-0.00185516400314815,0.00511690224865858,0.0101075006517165,0.0116002438711794,0.0115879796464023,0.0108102184332101,0.0102487611047904,0.0104008191320731,0.0110255278763496,0.0114450939919106,0.0106705625690048,0.00775666425228193,0.0014596462848385,-0.0102835171846287,-0.0345886623806009,-0.0739673600637721,-0.131610478623042,-0.205616952720878,-0.26583879390823,-0.252160189052738,-0.16315785525705,-0.137860280544312,-0.19933702602539,-0.257115458543514,-0.236886478260375,-0.165788957712748,-0.0983628540596811,-0.051119426418449,-0.016310037064845,-0.010426660105397,0.000624389197543223,0.000388898722614509,0.0018684767794878,0.00199771257774314,0.00188395010718172,0.0016101622834644,0.00125111257293736,0.000907433714848595,0.000983433757144727,0.00111627213862095,0.00101507052065905,0.00051945914143803,-0.000613352348196531,-0.00287537953437917,-0.00836323252041325,-0.0168935412331625,-0.0287100211144001,-0.0428563846174919,-0.0503567645998299,-0.0380659795802062,-0.0353660162192611,-0.00281339014561355,-0.013661778006664,-0.0487742975492687,-0.0471292520021973,-0.0329158759142994,-0.0189962792450476,-0.0113344963805893,0.00169895346112789,0.00593283787715093,0.00346716057558851,-0.0034276674540449,-0.0056153163672742,-0.00656770553742269,-0.00644314081081027,-0.00592652195356653,-0.00578305605736316,-0.00616159739474002,-0.00675282349395357,-0.00726406112324441,-0.00702814068925451,-0.00536471425428133,-0.00151520987659265,0.0058668498875728,0.0195621145303718,0.0422763953209536,0.0765694926041541,0.120204651025096,0.148703524832785,0.11708664166506,0.052636704852617,0.0486403232833866,0.0958124074223669,0.150421548474488,0.14208281021655,0.10058052153845,0.0610746374135125,0.0300010553945861,0.019037838750464,0.0201714360981362,0.00267396134475976,-0.0101003485410581,-0.0165098553938912,-0.0192782876235666,-0.0199071074455792,-0.019448870455823,-0.0189690478514768,-0.0190589300273132,-0.0196381932549139,-0.0197617332565774,-0.0182932596243836,-0.0139391309483171,-0.00504458800790234,0.0114353361698171,0.0432730334256643,0.0967379224499598,0.176960542741856,0.280774059710085,0.372045194179065,0.389180086129011,0.33826849190104,0.303133401585603,0.374207569709489,0.403127294170731,0.33375207021884,0.22603928622344,0.134067119118566,0.0663816969142398,0.030072589751791,0.0282157554601352,-0.00289397659719009,-0.0205815157984392,-0.0319716670113517,-0.0381236069440293,-0.0413367783122253,-0.0426717984501495,-0.0429335517157818,-0.0426843168139116,-0.0418237543469077,-0.0396267872610013,-0.0351066681612717,-0.0268075553384897,-0.0126808140490074,0.010893727151614,0.0559847869980203,0.133221181279801,0.249696782058716,0.407300515581415,0.581075934819076,0.708536148605773,0.755235103542571,0.744553201240615,0.73291835925019,0.645072706116369,0.48312380078137,0.316254753369875,0.184130963829262,0.0893262905211046,0.0313746490004634,0.0291236074019963,-0.0111824019786119,-0.0333977153281802,-0.0512591884762342,-0.0635746754455909,-0.0722594925958085,-0.0775370347855981,-0.0796102744339658,-0.0786525786206768,-0.0747502004168765,-0.0677861580122852,-0.0574695597364886,-0.0429843345927346,-0.0229001035623774,0.00512006745703627,0.0553774210247051,0.1427362206429,0.273102619719203,0.450142797865487,0.661018014844629,0.858594909830084,0.975960664654909,0.982717799909517,0.898953658131105,0.73500337849634,0.531884478074034,0.344715521768947,0.19882115683644,0.0941680398797582,0.0244938313129765,0.0245767689956379,-0.0198433501136028,-0.047231959012722,-0.0743921364257844,-0.097090261211842,-0.115106856431688,-0.126892534454265,-0.131787466628014,-0.129667288431887,-0.120847119930585,-0.105944465128374,-0.0858569269592066,-0.061484116723031,-0.0335196236694689,-0.00268357534586528,0.0448277951105858,0.128089486420256,0.249462834071284,0.407171280104216,0.590413071433748,0.766108187962184,0.879904153194476,0.894333993638817,0.812594844429063,0.66136058393201,0.482702332357533,0.316125476831324,0.181161452305172,0.0830139144596633,0.0137477254976806,0.0179510608000309,-0.0278501766880803,-0.0627235254473137,-0.103571578908937,-0.142336010415136,-0.174751173911398,-0.196600386775982,-0.20589100536656,-0.202000631714424,-0.185512430503018,-0.158140166503825,-0.122688991146027,-0.0829816544077788,-0.0436170412819703,-0.00942870772557803,0.0307701541725987,0.100111624361382,0.200058606694864,0.32322865292033,0.457216169366286,0.5793743853347,0.658584891113241,0.672322326419761,0.619112111236673,0.514812779323066,0.385432166766865,0.256838691460816,0.14528762053004,0.0637521531245377,0.00367086529973288,0.0107218453411274,-0.0363822373003714,-0.0819135717899561,-0.142395080094068,-0.204090908454598,-0.25808643463985,-0.296068889692719,-0.31292258568218,-0.306454308047777,-0.277663005447992,-0.230766108158818,-0.172350164224544,-0.110570350870762,-0.0549081061378372,-0.0141027141336987,0.0195400822076308,0.0724436062271039,0.148585895277974,0.238400430468649,0.329078004122275,0.406254979291917,0.454967438693927,0.464927029161995,0.434582638383413,0.370487970917232,0.285033893874261,0.19337084657473,0.10829131492369,0.0468291948411307,-0.00413197296320746,0.00341610517586606,-0.0476003422306086,-0.109316311375408,-0.194707247356792,-0.286687409540878,-0.372417442749119,-0.436709743304389,-0.467141674370396,-0.457146034593751,-0.408282603021308,-0.330864452977438,-0.239889491929106,-0.149757698913819,-0.0733225932226567,-0.0202485299879255,0.0133665025600352,0.0540134284225745,0.109452807826451,0.171004384479559,0.229222236242629,0.275968085709753,0.30466877601536,0.311115214565452,0.294311544408728,0.2564475390313,0.202628869748774,0.141153664345902,0.0809012266858211,0.0355652380214622,-0.0114356384876049,-0.00441154271428315,-0.0645519551627736,-0.146397566508879,-0.258307566294196,-0.387297086912682,-0.517058341576831,-0.62165519026396,-0.675005745968705,-0.661213724378135,-0.581776232226819,-0.45928027625541,-0.324909105200113,-0.201364564252873,-0.101074511038567,-0.0315021075525178,0.00864193658924745,0.0426654270012124,0.0818822077191878,0.121456520208749,0.156798173856715,0.184088444716688,0.200527765912063,0.204405753272376,0.195140720040113,0.173354859861645,0.14103843158456,0.102403998092452,0.0617030420958259,0.0269820976005854,-0.0186890404025486,-0.0145470256292426,-0.0839304125337809,-0.182400235126526,-0.317735798702899,-0.484745418447849,-0.663850065167143,-0.815461484589321,-0.897400238497475,-0.88292332975666,-0.768851731429023,-0.59274823101365,-0.409059168769839,-0.250931149049009,-0.129188173953122,-0.04564685182965,0.00183885521680321,0.0325318150734181,0.0604075768899676,0.0847202156969674,0.104763402118513,0.119632839483667,0.128432379754549,0.130546405260998,0.125660747145529,0.113899874501103,0.0959231317865773,0.0732819560241521,0.0462064513688044,0.018931992606328,-0.0253676883030954,-0.0253662522886814,-0.0951980812024628,-0.200167135462653,-0.346418101407221,-0.53397850094092,-0.737467932949057,-0.9016994885932,-0.985615769948547,-0.97889063259871,-0.861395915503915,-0.663499062962817,-0.452181701783859,-0.274694382376328,-0.143947842911481,-0.0562977052292104,-0.00602142258543325,0.0219031844131269,0.0419423958580835,0.0564121822736925,0.0667246392859792,0.0736870486376776,0.0775879337476066,0.0785439394589872,0.0764689509994103,0.0711902394346674,0.0625069120606145,0.0502025977149973,0.0323805351722443,0.0102415823704649,-0.0299871152349178,-0.0323001881589402,-0.090419520457922,-0.185522233804544,-0.317963676965076,-0.48508900977803,-0.647107776268625,-0.734816223697582,-0.746309542595784,-0.757078183212564,-0.710631287118006,-0.583296405142177,-0.409309677300964,-0.251323895241954,-0.134486417829761,-0.0569744291614168,-0.0118279999595798,0.0116994884161942,0.0258082606932396,0.0341108349352221,0.0386422402545493,0.0408504763786657,0.0417181436062388,0.0419681594842896,0.0417001351333027,0.0403531929314624,0.0371260501617915,0.0309650928971111,0.019587692585138,0.00194555006897055,-0.0291334485793481,-0.031016344029063,-0.0674829628761059,-0.135440812821456,-0.227683992362459,-0.335477353978067,-0.404508388228031,-0.374987820361344,-0.303599670700432,-0.338857938681283,-0.390234071266154,-0.373696548169886,-0.282572817332073,-0.178525484559999,-0.0979931793033393,-0.0442843032423674,-0.0123718902742794,0.00409312847198933,0.0129802245709993,0.0173369028405043,0.0188102710387332,0.0186896264350922,0.0181102103126505,0.0180200035687067,0.0185002893292668,0.0189554088014651,0.018320253515491,0.015544864745815,0.00913921168416365,-0.00360964206540557,-0.0211076409719858,-0.0199788959669188,-0.0310859463234094,-0.0624144764091154,-0.102158614890054,-0.143602167833342,-0.151290385327087,-0.0959532304310046,-0.0486792237992198,-0.0527206254474546,-0.117498569603115,-0.149938728747721,-0.121819943992208,-0.0780532467057007,-0.0434933720622579,-0.0205631456592253,-0.00678759225292474,0.000590959628188884,0.00443189851459127,0.00608829478132817,0.0063133072398121,0.00578550666521131,0.00517710177344745,0.00479595168005512,0.00495398481384068,0.00548654308859278,0.00562258392714606,0.00467607786317976,0.00249551642418466,-0.00438367562474151,-0.00686369485932807,-0.00264252754425163,0.0102514399518213,0.0176596583359814,0.031354908337379,0.0456713801707649,0.0480496682264593,0.0135884845714168,0.00275390701734324,0.035359987897589,0.0377298983215802,0.0491807990920075,0.0412697740670377,0.0272459189620979,0.0156916243104598,0.00736978176405478,0.00196299230701669,-0.000305461903094226,-0.00144896149089514,-0.00195363550879381,-0.00206880945494864,-0.00195690669577235,-0.00190257789999008,-0.00225251027219977,-0.00259633355258079,-0.0028469693776676,-0.002942021133628,-0.00280089282905783,-0.00131183704678668,-0.00153687925285678,0.0094969957466771,0.0153539933441801,0.0500161896569139,0.0969826005872116,0.164148832853208,0.235251256328358,0.256056153153264,0.198927018354695,0.137654669510511,0.162959171718373,0.251452610774852,0.264423663796356,0.203952805604308,0.130117142660729,0.072748894580587,0.0335888627415745,0.00936398759886972,-0.00239775385433114,-0.00870553165054999,-0.0116198648208706,-0.012394221196271,-0.0119792994209464,-0.0113628095067063,-0.0112150852381399,-0.0117701082136353,-0.0125394438508484,-0.012546715824378,-0.0110518582380753,-0.00605684892556369,0.000924698970425289,0.0229497551898385,0.0278650262692052,0.080773636685871,0.163932410889871,0.281872909521449,0.422175284515096,0.53178460007908,0.560472634008706,0.526258791858968,0.540907385408161,0.562628115228122,0.484448751194766,0.346838787273989,0.215965686941227,0.118054511050432,0.0516882596248783,0.0116347650410859,-0.00837578600827872,-0.0199907776016007,-0.0261941817356058,-0.0289479177715836,-0.0297142483694039,-0.0296080451358969,-0.0294226965293164,-0.0295458606523859,-0.0293685201006657,-0.0277624029709225,-0.0236824319508696,-0.0147717492200496,-0.000479944318241167,0.0294300541681857,0.0301551598381777,0.0940614668196913,0.199309503175554,0.349142028074599,0.541370213108046,0.736288554063704,0.87765016902958,0.915280644260277,0.888653976632523,0.793194008123747,0.620384237041932,0.426369077833599,0.261890111146399,0.140308455952659,0.0574385384775104,0.00840500938417893,-0.0177390634689714,-0.0349302259868378,-0.0461540338457051,-0.0532054932716771,-0.057331530216516,-0.059251195353171,-0.0593889402172473,-0.058006321613456,-0.0548482690260972,-0.0493088542346944,-0.0405837642330194,-0.0267086280596752,-0.0061216310476197,0.0284870447820635,0.0237837847148545,0.0893352458332265,0.196997070970675,0.346024765954943,0.535866243568149,0.741046294005464,0.908392754574383,0.975837831697089,0.934819167393673,0.802850525285831,0.61509300437598,0.422074710705972,0.259692388252821,0.13695887791114,0.0522361562960732,0.00276709420533506,-0.0278144738228868,-0.0516134704938227,-0.0708625731924109,-0.0859032585650979,-0.0966629704279599,-0.102775648977067,-0.104040049172962,-0.100542432533299,-0.0924386512243008,-0.0799314047024541,-0.0631758331952702,-0.0417757468717931,-0.0150419977936058,0.0206608962520608,0.012453806627071,0.072443637792676,0.168114425286922,0.296604364249422,0.448964974550121,0.608106947285063,0.737323891926104,0.795174193416367,0.766826940678026,0.664093636681602,0.516901400827996,0.360887290547255,0.222515275929328,0.112979654105176,0.0380555048754459,-0.00541915359684407,-0.0399585794021055,-0.0730664724745062,-0.104652569239629,-0.131605918399662,-0.151123489360815,-0.161543096902413,-0.162376588979956,-0.153974073862611,-0.13724626664171,-0.113597763722647,-0.0848598131897315,-0.052921173126987,-0.0213584691682198,0.0154909011761099,0.00469359478965513,0.0488579231261468,0.12134112805514,0.216841056364342,0.324266480823169,0.428673027835022,0.509996616399795,0.548447838936577,0.535641308361859,0.475978425167357,0.38386261845484,0.278287448443922,0.17645472102472,0.0907051389461744,0.0319877156431215,-0.00628118569033686,-0.0451517759351456,-0.0911985336986441,-0.143280155286248,-0.193358190050029,-0.233906225733421,-0.259533262920285,-0.267078221506514,-0.255588128076038,-0.226449982843376,-0.183508814088318,-0.132488808549842,-0.0804346439555492,-0.0345046340264961,-0.0016764767944298,0.010650078356931,0.0550172032230655,0.120677778899633,0.201851538013806,0.286962229537884,0.362548673672896,0.415260294697885,0.43415744678972,0.415455824871164,0.362665114251812,0.285311064961175,0.196814066121046,0.111907983084287,0.0442979138668586,0.000387241866090638,-0.0357985688096117,-0.0840289085434014,-0.145806826950702,-0.211549260154343,-0.270231919415796,-0.313099412799235,-0.334051933231161,-0.330337667096293,-0.302738276449695,-0.255458196780084,-0.195110620428864,-0.129528101976632,-0.0679704877429436,-0.0234262474569751,0.0138500409157314,-0.0177685368264626,0.0303570091695537,0.0893710107564639,0.171696127530314,0.259328947608033,0.340053633551578,0.403372145555333,0.440379046951756,0.445399541411818,0.417377819844067,0.360030656687447,0.281567470997065,0.193715734199329,0.111076740334806,0.0466171664409141,-0.00146603599031759,-0.0603414397362155,-0.151214538954884,-0.265223366709022,-0.384078736124217,-0.488060554193658,-0.55908599110525,-0.584268920436447,-0.558848203937601,-0.487929381330896,-0.386280201234952,-0.271954152909971,-0.162987037418905,-0.0740357161130605,-0.0128190021176455,0.00156957817489557,0.0446453523180692,0.106098613451448,0.175800695845479,0.24419350808166,0.301775348778318,0.340857449735747,0.356254976125858,0.346103211490103,0.311703450853883,0.25733629838858,0.190255205047654,0.120508630878065,0.0589716188866417,0.00720131138562779,-0.043808056394694,-0.122857321349861,-0.237905352033376,-0.374395672689534,-0.516032520083279,-0.639698390560736,-0.719850020355035,-0.737093284980855,-0.685488175966021,-0.576315110756203,-0.436214343905877,-0.292080135497683,-0.164542044263896,-0.0664842113816854,-0.00735386500450473,-0.0219547529805405,0.0270347379776834,0.0692220664843112,0.112127467918599,0.150797829821129,0.182633660227221,0.205155679369228,0.216464919456807,0.215331927228544,0.201289056404812,0.174999021378335,0.138717231769027,0.0962373633312401,0.0519107992530976,0.00585135434996332,-0.0524647212879846,-0.153081279105784,-0.299487681159237,-0.484486334084244,-0.693091869237866,-0.889886053308285,-1.02723403443617,-1.06522587345844,-0.988075404390106,-0.815430514531881,-0.602694935575425,-0.398717587555137,-0.227022796362096,-0.0987029174180996,-0.0183074376377035,-0.0290514309764274,0.0186709437998444,0.0544693243612982,0.0832527057673682,0.105883180964733,0.122814376464304,0.133801164597975,0.138548401860435,0.136835392368188,0.128546683145517,0.113961195559285,0.0936070798362896,0.0676411365028688,0.0357569069482322,-0.00508504082232772,-0.071598855321781,-0.185028246975292,-0.348880717501455,-0.565460289518674,-0.822517243377367,-1.07208204207595,-1.24710863457055,-1.30152472907997,-1.21241972704623,-0.990450288820564,-0.71754428542304,-0.464319505861193,-0.265307509295601,-0.121289452580667,-0.0334281553796577,-0.0394392824667401,0.00689322405537717,0.034500000798379,0.0531610787707574,0.064975859496208,0.0725329384164434,0.0768781660606448,0.0787917980021485,0.0785949307311436,0.0759318667541257,0.0702573784365798,0.0606522423598983,0.045482502117677,0.0224307831757341,-0.0125428938702601,-0.0783623216244109,-0.189117419035933,-0.351253545216299,-0.570076233012109,-0.827222487381783,-1.0550387232343,-1.17982268470092,-1.21443795735751,-1.16568963403169,-0.980192080415791,-0.722795398839686,-0.467485725400056,-0.26784059151177,-0.127300059489337,-0.0418205295069622,-0.040497556009309,-0.000465168417078651,0.0186883904390056,0.0306306261437395,0.0361198011034282,0.0382910839853874,0.0385320914009116,0.038358336127899,0.0386191445844762,0.0387694957230826,0.0377235287918489,0.0339975456276999,0.0256459261561607,0.0100883717454226,-0.0167027527811825,-0.0703553280435851,-0.158960191157436,-0.289437759238371,-0.463213660807231,-0.644607412824389,-0.745794068459491,-0.714920285968081,-0.695170726375338,-0.741557910465911,-0.705826419187295,-0.56257908661223,-0.376988202358269,-0.22011787701951,-0.109180570146972,-0.0384846282173506,-0.0317111340615311,-0.00226341023288197,0.00706350386459273,0.0137074378116202,0.0156494666620132,0.0155389174230053,0.0143734877165994,0.0135400159778467,0.0137813441322734,0.0147285380340901,0.015405813680281,0.014453755165318,0.0105949107627239,0.00218338335970588,-0.013557849885681,-0.0459819476341934,-0.0983115611506615,-0.174868242373599,-0.27288281779818,-0.351957885287892,-0.332807529237534,-0.214906412598196,-0.181569360274484,-0.262693900793673,-0.339712815159229,-0.313824566014723,-0.220025974719228,-0.130671014539736,-0.0679547638248524,-0.0216147406787248,-0.0137991571095532,0.000936391421210688,0.00061183724753107,0.00258160186914919,0.00274463225827354,0.00256757667139524,0.00217375269757327,0.00166959930978245,0.00120250955375546,0.00134503538949506,0.00157265829113091,0.00147696824858938,0.000832653158306534,-0.000684609296701323,-0.00374179106119024,-0.0110610789857602,-0.0224070947239196,-0.0381302662450578,-0.0568837936870893,-0.06667952036527,-0.0502112441202387,-0.0469305003767055,-0.00374601271786235,-0.0179755678665709,-0.06445841929711,-0.0623450354757175,-0.043559774620997,-0.0251251891177923,-0.0149924388048151,0.00237031986155942,0.00790403634876943,0.0045884250274421,-0.00462374006767028,-0.00751138871465938,-0.008708582807102,-0.0084311550292318,-0.00762202661103182,-0.00736844465848142,-0.00790520571961922,-0.00878937126912448,-0.00958068186736142,-0.00933967376058599,-0.00716247420904462,-0.00205063478408523,0.00779375253238657,0.026057139249149,0.0562225416517914,0.10170441828217,0.159417891216616,0.196713351634605,0.154345931822414,0.0691907919905109,0.0642517450889671,0.126235593540468,0.198745865747512,0.188401140972562,0.133660854195908,0.0812407432610079,0.0399323259516436,0.0253921135996486,0.0269437073158292,0.00352114957079957,-0.0135804228100718,-0.0221536866254441,-0.0258269632118391,-0.026609731754673,-0.0259105214571177,-0.0251978142743431,-0.0253342468717549,-0.0261935332869009,-0.0264341933006688,-0.0245187682796949,-0.0187212719785074,-0.00683321576556733,0.0152388328010415,0.0577617523340721,0.128833960707417,0.235299260925835,0.372658764568607,0.492503041199109,0.513678643525829,0.445715902487769,0.398988646205408,0.493386190561201,0.533163029445438,0.442744067235877,0.300483104283807,0.178456605500846,0.0884969514934741,0.0402077514282992,0.0379090748630332,-0.00378919292445543,-0.0275117179845124,-0.0428387367816207,-0.0511632257235153,-0.0555489177824369,-0.0573981777685691,-0.0577680095090762,-0.0574185404511853,-0.0562205088905886,-0.053211718773013,-0.0470900035995675,-0.0359176670832326,-0.0169569360994596,0.0146916554885033,0.0750394874301834,0.177855712604899,0.33262638194036,0.541538187803719,0.770734040906136,0.937450922299254,0.9976615997022,0.983215400334318,0.969279392908299,0.855098033884869,0.641981081358617,0.42107910186058,0.245608393479022,0.119483410318954,0.0422296499724027,0.03933286852378,-0.0146927092785101,-0.0445020912357584,-0.0685789769672877,-0.0852744566881415,-0.097096865811898,-0.104304428068057,-0.107139161287196,-0.105826822913547,-0.100495581793149,-0.0910125535788472,-0.0770195301958113,-0.0574556868553654,-0.0304512945808388,0.00718583801830852,0.0746105796273147,0.191132145715382,0.364666486686526,0.600092313330091,0.879682485514404,1.14060458023627,1.29501289074851,1.30375669785551,1.19370211905212,0.977397146040653,0.708404119481103,0.459864325366609,0.265796650759688,0.126413967081118,0.0333060179207572,0.0332763357660002,-0.0261492536996553,-0.0628802432163277,-0.0994720444019401,-0.130151890155832,-0.154518522134907,-0.170463050697162,-0.177087517277099,-0.174221885225658,-0.16229160863971,-0.142137816807681,-0.114989539317883,-0.0820915630066024,-0.0444841515802113,-0.00314878405821783,0.0606836670960055,0.172034922017191,0.333836382038821,0.544093967354173,0.78820753201074,1.02188646003425,1.17291759621527,1.19187252371033,1.08322021892785,0.882125290845665,0.64433375593855,0.422472524490264,0.24268216440068,0.111829184966816,0.019057906546857,0.0242766678320978,-0.0368165050748823,-0.0835963763588904,-0.138525666705171,-0.190717335125731,-0.234365662194941,-0.263801974898979,-0.276327409208874,-0.271093038833668,-0.24888329473114,-0.212013366447931,-0.164269577874679,-0.110792589314737,-0.057884089547072,-0.0121839782265729,0.0417095205184853,0.13469219742182,0.268156128878902,0.432597704931835,0.611602925954395,0.774850905566671,0.880660571805423,0.898914311678982,0.827712619354392,0.688283102151453,0.515418381301855,0.343708249762095,0.194923409557659,0.0858780067059285,0.00543050989261532,0.0143255000956752,-0.0482718323050331,-0.109346539816056,-0.190511837028476,-0.273305537848271,-0.345808468582802,-0.396860255756994,-0.419538063464593,-0.410860211243371,-0.372168913946355,-0.30916194962912,-0.230725651858281,-0.147788717872995,-0.0730925032895445,-0.0185579653868934,0.0262904210582611,0.0972169408478536,0.199126016040153,0.319313028700431,0.440766126050191,0.544231263929558,0.609554818154954,0.62287655034648,0.582124073251291,0.496147992670775,0.38164756104136,0.258956645939015,0.145145155103227,0.0626647555713825,-0.00520118631071887,0.00437711605540308,-0.0635636565819052,-0.146366119851403,-0.260560668548727,-0.383635206721722,-0.498464097884062,-0.58467204672042,-0.625525068779403,-0.61215912549812,-0.546657619323818,-0.44290747738819,-0.32109875652964,-0.200526192518556,-0.0982538341037229,-0.0271072256875304,0.0177073396419028,0.0720382980331831,0.146457252311159,0.229116056645035,0.307315142973619,0.37014358696988,0.408728428872316,0.417380030549137,0.394759742424353,0.343846497439549,0.271553353090283,0.189025959352591,0.108142356487092,0.0473132123533199,-0.0151474986841824,-0.0062903982299269,-0.0868188119361534,-0.196254939731081,-0.345480217650481,-0.517670504577376,-0.690991110782498,-0.830773212322529,-0.90213797485962,-0.883815610930413,-0.777735517805941,-0.614086741356672,-0.434622834713474,-0.269728359266759,-0.135842386793839,-0.0425604036343278,0.0112656824325246,0.0567581098699454,0.109484025635504,0.162799904579317,0.210413011860922,0.247186231343008,0.269338694582126,0.274558384987755,0.2620624233868,0.23270005207717,0.189168446602406,0.137133160197873,0.0823837379302142,0.035793062117999,-0.0251344991384624,-0.0199965545717101,-0.112925548096624,-0.244181409900348,-0.424430236852306,-0.646821412897954,-0.885157339758838,-1.08671287708572,-1.19560788144818,-1.17659082184161,-1.02522116386956,-0.791045688794705,-0.546388845108921,-0.335618369662509,-0.173361861541383,-0.0616503551910296,0.00215430896481692,0.0433136997239219,0.080813519162372,0.113640344225067,0.140736982471549,0.160852389057926,0.172758883672575,0.175617321871609,0.169003271409989,0.153087068959501,0.128766551850456,0.0981537815164518,0.0616640706186475,0.0250718379923827,-0.0342059428856159,-0.034341241834828,-0.12765836891952,-0.267439635899743,-0.46195461331545,-0.710987538641603,-0.980455894059483,-1.19713699247561,-1.30740393555674,-1.29869397564938,-1.14410231414442,-0.882758039614965,-0.60260473996273,-0.36661678265809,-0.19260677902626,-0.0757101973757446,-0.00825389988082925,0.0292705486489329,0.0562238506582115,0.0757727597815575,0.0897639562409469,0.099247311047943,0.104578009329673,0.105888454811567,0.103050715858062,0.0958399275521312,0.084016691816226,0.0673315156128512,0.0432992327499932,0.0135789272598114,-0.0403588134815138,-0.0433346099998776,-0.120812159845493,-0.247319223326861,-0.423199914516841,-0.644447756626234,-0.857701569448497,-0.971776805742883,-0.985585117146952,-1.00013132388715,-0.940183141962677,-0.773555206417193,-0.544050034831256,-0.334638637325023,-0.179404943920174,-0.0762312373940958,-0.0158029382306481,0.0157968815480392,0.0347428036100184,0.0459256451585383,0.0520664576104765,0.0550932327329702,0.0563026663056282,0.0566536044866645,0.0562742188009185,0.0544068363983331,0.0499994460443569,0.0416584374341519,0.0263406776386994,0.00266629501688682,-0.0390064726369697,-0.0413379365996718,-0.0898402144445535,-0.180154812654604,-0.302542012357559,-0.44494476395064,-0.534996154282539,-0.494527114578363,-0.399747369850499,-0.446629438142263,-0.515146766007822,-0.494648665448339,-0.37493036706027,-0.237247116120183,-0.130377358345853,-0.0589849482870597,-0.0163545906745935,0.00571169106240764,0.0176007958717186,0.0234103422955459,0.0253397302301718,0.0251094359069603,0.0242545284310202,0.0241187700938822,0.0248291986972848,0.0255184759548665,0.0247204016248664,0.0210302838079438,0.0124525093998687,-0.00462815209493329,-0.0280668062346106,-0.0265206744500625,-0.0412577414822073,-0.0829013140763725,-0.135644577833622,-0.190355838616586,-0.199939952756962,-0.126514472691998,-0.0643646622080346,-0.0693861015333336,-0.154972045669841,-0.198337223759667,-0.161466429915066,-0.103555635130679,-0.0577209116768837,-0.0272697234334598,-0.00889047817411288,0.000964232199405663,0.00607761312706734,0.00825669899629613,0.00849308462577729,0.00768732037543881,0.0067839725944166,0.00624484261895812,0.00651615277355259,0.00734010129973355,0.00762361310608769,0.00642386648271402,0.0035338051041756,-0.00567158256089284,-0.0090219675796254,-0.00350249698623106,0.0136689149562363,0.0234681009436297,0.0415969644100108,0.060467786792554,0.0634543783429407,0.0178040019469006,0.00363235313181115,0.0468690746125486,0.0496893980754585,0.0651262440189311,0.0548688343070341,0.0363025908889334,0.0209270127724065,0.00985755760003902,0.00265549649032982,-0.000394679506480386,-0.0019128240083823,-0.00255759482889794,-0.00266176754165542,-0.00245467437841745,-0.00233800969410767,-0.00281351670617029,-0.00329867638414289,-0.00366649082786369,-0.0038275184287187,-0.00365961233762719,-0.00168977450751216,-0.00201463051247422,0.0126824967792108,0.0204678440086227,0.0666073061212943,0.128961198778094,0.217966787529318,0.311728408790099,0.338274809457893,0.262039319609073,0.181188179536563,0.21452852301296,0.331789838621358,0.350107340093031,0.270775313345055,0.173007047658628,0.0968127180731929,0.0447718096573275,0.0124632986311062,-0.00328732148376289,-0.0117011006446586,-0.0155506551195487,-0.0164934976644626,-0.0158144968991049,-0.0148734214735078,-0.0146372863306919,-0.0154650809615566,-0.01662572086896,-0.0167381068334888,-0.0148027718657617,-0.00816401875007892,0.00116246682916071,0.0305835633818086,0.0373466320335815,0.107825319895384,0.218352941625072,0.374776573710497,0.560063087077799,0.703511933331098,0.739736679487398,0.693692716379446,0.713314357661883,0.743755749132832,0.642266985585134,0.460959522549251,0.287527486910692,0.157439214474872,0.0691502337679022,0.0156034859248722,-0.0112283210338394,-0.0267998035956655,-0.0351392757097403,-0.0388433717599595,-0.0398693180442908,-0.0397057834023889,-0.0394418274373159,-0.0396213364923657,-0.0393944689424558,-0.0372418985759271,-0.0317701614323033,-0.0198333913109097,-0.000662699280249118,0.0393761856592397,0.0407414407377552,0.125994344283584,0.266094769227074,0.46522050598584,0.71998013112196,0.97701703758097,1.16243315881146,1.21125900055872,1.17670652486184,1.05203811944161,0.824482998047228,0.567735489935944,0.349353204839698,0.187631730986783,0.0772137295911251,0.0114662513999025,-0.0235933633951572,-0.0466895018345519,-0.0618644610826912,-0.0714569848719786,-0.0771165904072062,-0.0797687281685154,-0.079961895837277,-0.0780519739705838,-0.0737164512082425,-0.0661717818339528,-0.0543648648536192,-0.0356911671640508,-0.0080270987775201,0.0383691496289008,0.0324570560607085,0.120098506067101,0.263679506850334,0.462183249491433,0.714840717617292,0.98719501534038,1.20874330100253,1.29768299077788,1.24338809599442,1.06873573379564,0.819684481161624,0.563169436709229,0.347083791690151,0.183657571346622,0.0705654685501689,0.00405682158893421,-0.0369187222437066,-0.0688952510726068,-0.0949108471146639,-0.115290303983007,-0.129890492475227,-0.138185790781188,-0.139897728510618,-0.135142135539454,-0.124140784985371,-0.10718920287042,-0.0845285532636003,-0.0556884380575722,-0.0197771720377313,0.0280779871309176,0.0174506933023409,0.0976602565938162,0.225589513735274,0.396807732815679,0.600282996862539,0.812531857519619,0.984778148506532,1.06172388674251,1.02379746923417,0.886770265528666,0.690451500324703,0.482366396024679,0.297855141601454,0.151877990720159,0.0515707510674738,-0.00681789777433779,-0.0530498794285306,-0.0975279493822336,-0.14012966174372,-0.176503783081291,-0.202857632455734,-0.216935230630893,-0.21807349199813,-0.206740238799002,-0.184166263861265,-0.152253121996607,-0.113481392987826,-0.0704464740576934,-0.0280833229863887,0.0210984451813087,0.00657724016667205,0.0655476024875899,0.163248676718063,0.290387151881795,0.434100065325374,0.57381615279299,0.682698388220633,0.734160322317644,0.716956971168709,0.637024555488226,0.513711365125344,0.372497695619335,0.236438958155148,0.121795660610294,0.0429893381914961,-0.00809957680234754,-0.0600712114168538,-0.121832278199111,-0.191804306160505,-0.25907301907584,-0.313571080334793,-0.348039957956315,-0.358198182600597,-0.342747072185755,-0.303556349982044,-0.245816939310374,-0.177226388990456,-0.107290147084644,-0.0456389644843347,-0.00234057982059464,0.0119594790892194,0.0731084810485454,0.161809311541146,0.27044935306588,0.384463532827732,0.48585468090276,0.556588189935608,0.58191162902319,0.556734174383984,0.485823504776914,0.382058805827908,0.263504369872371,0.149841148509376,0.0592952601978245,0.000628986270130229,-0.0474594522105944,-0.112129567444792,-0.195079736327354,-0.283262562861202,-0.362026115366519,-0.419610074890535,-0.447778615093145,-0.442795013290705,-0.405708497876705,-0.342201895255002,-0.261201688928063,-0.173243474977654,-0.0905771315790573,-0.0312584348876478,0.0171109074261668,-0.0210510415828144,0.0380636016905669,0.111874324008877,0.215478408413137,0.325624895014897,0.427163680360037,0.506860676746036,0.553455712498103,0.559764622304597,0.524459895645655,0.452267346563818,0.353569414703532,0.243136011746066,0.139132599892968,0.058116677584704,-0.00184935490054548,-0.0755961794925066,-0.189604768415986,-0.332577208188232,-0.4817215520886,-0.612356763935437,-0.701694198147397,-0.73343345275403,-0.701527593134651,-0.612407514013936,-0.484713650267234,-0.341256186528042,-0.204691324590129,-0.092265512692956,-0.0135555168911078,0.00212182585447771,0.055587155893974,0.132862443196945,0.220633545805464,0.306781703791521,0.379324459002283,0.428573888473002,0.447974996407068,0.435172478569989,0.391824927491176,0.323360521732569,0.238927640816655,0.151114281363867,0.0737496544875038,0.00882234261832644,-0.0550787195321473,-0.154471474786077,-0.298556434867091,-0.469419727332788,-0.646904561177746,-0.801981836168695,-0.902559539377144,-0.924246339039041,-0.859546635458188,-0.722626325436314,-0.546999181493541,-0.366368518902618,-0.207193193728805,-0.0835348520942098,-0.00952708534703014,-0.0278468674343104,0.0334805239144297,0.0865906154653349,0.140758724371343,0.189630054508164,0.229867628189772,0.258332260072598,0.272618953509726,0.271172539562715,0.253406944818617,0.220162963320598,0.174306241093011,0.120627344245747,0.0648112510504003,0.00696451721964862,-0.0664723021297558,-0.192656694499219,-0.375509461539676,-0.606718996640046,-0.867479213694211,-1.11347343586621,-1.28516227389498,-1.33277988828876,-1.23657946666577,-1.02088785166602,-0.754970024392952,-0.499710712501765,-0.285254522177506,-0.124529016590855,-0.0237622994842169,-0.0368008866264463,0.0231702625763318,0.0682606851249343,0.104619331518702,0.133289156332093,0.154776927618718,0.168738488842967,0.174777994175605,0.172605302023429,0.162077647958938,0.143552160966471,0.117728792118096,0.0848453007731168,0.044685751168691,-0.00664706660700046,-0.0904457877214241,-0.232330255172619,-0.43686110098435,-0.707061773868461,-1.02738719469595,-1.33785277612524,-1.55515388850375,-1.62272100476128,-1.51244221863524,-1.23678184253677,-0.897062242610612,-0.581108554766361,-0.332602414433586,-0.152600152317137,-0.0425413352272295,-0.0496094206968016,0.00861615129424087,0.0434057066799219,0.066963399500659,0.081957242527649,0.0916075435525663,0.0971985795352352,0.0996760932935259,0.0994159953260525,0.0959664975685505,0.0886718083889362,0.0764242031994279,0.0571899271315736,0.0281447089387028,-0.0158401917806117,-0.0985417459690803,-0.236878313893469,-0.439088642020927,-0.711564762658256,-1.03082959451614,-1.3124455397748,-1.46557844371616,-1.50781923530958,-1.4483411536606,-1.21982112492979,-0.901224689211938,-0.583830119059958,-0.335031188772601,-0.159639119243859,-0.0527582646533135,-0.050641024534363,-0.000398013549256476,0.0237095718624648,0.0387403329880902,0.0456799333522468,0.0484512669525864,0.0487838519733418,0.0485746185693959,0.0489176153054879,0.0490966558744389,0.0477336366496356,0.0429907651478029,0.0324313932343988,0.012853109712276,-0.020839375216635,-0.0880720915501291,-0.198595216974349,-0.361169398709481,-0.577209905353824,-0.801590644468747,-0.925133515313955,-0.885016159564668,-0.860253587102079,-0.918649407761161,-0.876111300472396,-0.699934918429734,-0.469896700418177,-0.274743997004126,-0.13648125555346,-0.0481905041736787,-0.0394840126651263,-0.00259032632602015,0.00911898926884141,0.0174353867510526,0.0198383442638752,0.0196257378827883,0.0180368686184226,0.0168892616748428,0.0172315270008464,0.0185398457202442,0.0195003128080596,0.0183744321799852,0.013555115631745,0.00300448896528282,-0.016775585097718,-0.0573256952578266,-0.122541810243532,-0.217905544599562,-0.339693607603056,-0.437190118400612,-0.412254287895708,-0.265729146499507,-0.224481476958686,-0.324958489201562,-0.421211977180228,-0.390040680677271,-0.273894561746545,-0.162806164394409,-0.0847168669702866,-0.0268757156950006,-0.0171345154821276,0.00128692343755458,0.000870390298438941,0.0033308862146351,0.00352728619827144,0.00327769354686852,0.00275258633624418,0.00209737235058497,0.00150926445470272,0.00174123795986787,0.00208088800111833,0.00199884835349864,0.00120469580338535,-0.000705477701075239,-0.00457379410637022,-0.0137233956877703,-0.0278728853029744,-0.0474902498394566,-0.0708161733172249,-0.082845872622486,-0.0621826874179546,-0.0584178746958518,-0.00467876992588149,-0.0222175658932237,-0.0799517415487995,-0.0773881014935611,-0.0540850674267523,-0.0311792595867264,-0.0186057173863341,0.00307944522212298,0.00987186755168539,0.00569140283225785,-0.00585885810452863,-0.00945420710340087,-0.0108880967658511,-0.0104264600699888,-0.00927436235878915,-0.00888046363954537,-0.00959574738022968,-0.0108166364405277,-0.0119218839214099,-0.0116838869447981,-0.00898953497847427,-0.00260909542752764,0.00970891646949729,0.0325479504761114,0.0701233602212129,0.126708885219819,0.198329018053327,0.24415630459941,0.19095429988426,0.0853640252732597,0.0796246054930179,0.15609968025751,0.246404698072616,0.234343329020318,0.166586924506103,0.101344059642401,0.0498416723488516,0.0317511774806383,0.0337366580566354,0.00434791193021708,-0.0171274161513608,-0.0279047897608351,-0.03251474261624,-0.0334748839071567,-0.0325345876218669,-0.0315720339253049,-0.0317584463340853,-0.0329103698770582,-0.0332562601733824,-0.0308689735064362,-0.0235965209980189,-0.0086768624306194,0.0190412372830997,0.072284885803642,0.160886060125868,0.293414809384241,0.463935228056434,0.611674467468204,0.636272633396902,0.551215931653942,0.492950182092652,0.61053689646689,0.661622686964981,0.550926921106273,0.374614923345032,0.222750868846044,0.110615801017409,0.0503922082271322,0.0477236362391186,-0.004658059564283,-0.0344895370787221,-0.0538368757473319,-0.0644136827853016,-0.07004734090641,-0.0724708662695382,-0.0729712205197114,-0.0725042015750636,-0.0709233010357906,-0.0670415822772834,-0.0592501900352806,-0.0451329869013752,-0.0212614583928539,0.0185610334181551,0.0942605518806007,0.222589868379657,0.415462783985618,0.675236100129233,0.958935874275773,1.1637309727404,1.2366980310449,1.21840972378471,1.20274538699011,1.06331025877518,0.800061084236008,0.525710299311367,0.307144652396747,0.149798557934756,0.0532565683953457,0.0497623827625656,-0.0181197218637702,-0.0556154348763348,-0.0860327309305578,-0.107229044518003,-0.122291224064186,-0.131499759083144,-0.135127638973167,-0.133448188909104,-0.126634938085595,-0.114547982255044,-0.0967727950174005,-0.0720146417266795,-0.0379771809952646,0.00940407999308128,0.0941696531494617,0.239854046580693,0.45644813292555,0.750035724113047,1.09775510380106,1.42109736117118,1.61178554423048,1.6224173438626,1.48666859153003,1.21885607265225,0.88466943681657,0.575134494104721,0.333064847501728,0.159008822850647,0.04240580833956,0.042211931138593,-0.0323454556829646,-0.0785159958524167,-0.124703015877294,-0.163527243888609,-0.194373658164294,-0.214561015255014,-0.222950360682023,-0.219325161998341,-0.204222004620867,-0.178710161867444,-0.144358962405082,-0.102772367395918,-0.0553775662905572,-0.0034257729480747,0.0769455891609589,0.216492082801456,0.41869203160262,0.681503128928711,0.986408586984095,1.27784907188336,1.46585324152821,1.48922964700458,1.35379095103002,1.10304196194785,0.806274639410091,0.529221297500448,0.304663286268383,0.141139127160069,0.0247189117372239,0.0307755971326576,-0.0456760968223623,-0.104488362207382,-0.173686351047704,-0.23948991363552,-0.294526218159685,-0.331658652632805,-0.347468132337472,-0.340872304391173,-0.312859450724891,-0.266356378545658,-0.20614487540229,-0.138692953303065,-0.0720653134150517,-0.0147635800853489,0.0529924832592991,0.169818610408755,0.336840210126008,0.542628803212719,0.766777830191422,0.971248602510664,1.10372561551898,1.12647166293787,1.03718552178761,0.862491765637592,0.6460112981655,0.43109240657835,0.245075035794342,0.108435170673614,0.0074971364430773,0.017924299137092,-0.060086010379296,-0.136858498396335,-0.238916533927123,-0.342996793865786,-0.434188275071215,-0.498455373282899,-0.527030820304553,-0.516123610490107,-0.467423343329345,-0.388135881405966,-0.289485704259749,-0.185186550150845,-0.091280403099557,-0.0229323659624651,0.0331996276791095,0.122329516700554,0.250111734298059,0.400823444547386,0.553246258193512,0.683205909037716,0.765278848765994,0.781979097344622,0.730710511705343,0.62266156920563,0.478907912245762,0.325018287605241,0.182358476201636,0.0786406440550167,-0.00610005809304926,0.00520686821544774,-0.0796222103686397,-0.183716102899134,-0.326810896827975,-0.481127596831879,-0.625239248652304,-0.733535817240113,-0.784908592901723,-0.768158438668975,-0.685894392973402,-0.555627186230927,-0.402814094646305,-0.251670869830208,-0.12347329095142,-0.0340855818221771,0.0220070200303339,0.0901158588118976,0.18370450240149,0.287692766986787,0.386083367457902,0.465178862501154,0.513765643928409,0.524644031228522,0.496128113068092,0.43200789919819,0.341043302722411,0.237257458278494,0.135517698812751,0.0590279510030014,-0.0188152398063677,-0.00843458405234485,-0.109470495227855,-0.246563948479788,-0.433081394520059,-0.648537939607166,-0.865520739163512,-1.04059737972307,-1.13005584722206,-1.10722955385134,-0.974456805394546,-0.769549588541298,-0.54489575265812,-0.33860156529772,-0.171100902179568,-0.0539209644391319,0.0137545824689817,0.0708138739730432,0.137235328773563,0.204509533397289,0.264579676951545,0.310979667513397,0.338931970722559,0.345512026550812,0.329732962105147,0.292678237897039,0.237766781240871,0.172134152687081,0.10313737820525,0.0445403285588662,-0.0317136645112671,-0.0257536950250546,-0.142365120364412,-0.306354487367077,-0.531438232845136,-0.809094203649411,-1.10647812895747,-1.35775036975718,-1.49346365402961,-1.47000973374387,-1.28161759791048,-0.989615704061829,-0.68409813803718,-0.42070576375724,-0.217986527010075,-0.0780146534131851,0.00232500296151972,0.0540751700150788,0.101350867188227,0.142861952959474,0.177159840816493,0.202632511893629,0.217711444879158,0.221329115986125,0.21294988841588,0.192790847628516,0.161991532647091,0.123237768195419,0.0771628254833566,0.0311479490732325,-0.0432384869608474,-0.0435572246588756,-0.160413777859917,-0.334936573343306,-0.577530102841816,-0.887647799587178,-1.22241087023058,-1.49070315248426,-1.62673607695702,-1.6161346114494,-1.42519580513682,-1.10132203295664,-0.752926252985387,-0.458677916398677,-0.241529144147844,-0.095399807934819,-0.0105924105891622,0.0366643965463203,0.0706491953942887,0.0953960301735706,0.113174033226532,0.125265001820745,0.132079730277603,0.133757430417879,0.13012483765914,0.120909686682551,0.10584221618958,0.0846523561112104,0.0542804567694791,0.0168813137527285,-0.0509063242989386,-0.0544922359813225,-0.151308842842515,-0.309110884918924,-0.528173199377047,-0.802966924162452,-1.06645395465697,-1.20586682681248,-1.22145668590268,-1.23984912066607,-1.16710848528763,-0.962311404316877,-0.678179337134148,-0.417790149629127,-0.224362840341331,-0.0956043295243539,-0.0198012147888348,0.0199743589379282,0.0438368406299051,0.0579728155224721,0.0657917260236024,0.0696984834238134,0.0712951847075727,0.0717642309755271,0.0712509322818381,0.0688030988829097,0.0631397853521528,0.0525381941779236,0.0331942481684057,0.00341020226079461,-0.0489543405797426,-0.051660006439436,-0.11214909487435,-0.224714906439908,-0.37703028271006,-0.553569326544212,-0.663932770849458,-0.612128855120696,-0.494107768914597,-0.5525554462257,-0.63822340789236,-0.614311057954912,-0.466629527838311,-0.295685155743982,-0.162661486932847,-0.0736707463116103,-0.0202882400441154,0.00743576345522793,0.0223667981579787,0.0296616729800342,0.0320727040104665,0.0317456374650584,0.0306039618089754,0.0304196736972142,0.0313762125427275,0.0322984901042133,0.0313133280167981,0.0266761456722887,0.0158843211402052,-0.00557711007837265,-0.0350001916576887,-0.0330192797927538,-0.0513575938753616,-0.103270015342409,-0.16892468290741,-0.23671332906272,-0.247968055397234,-0.156586981301768,-0.0798554769211597,-0.085731734007572,-0.19185918172989,-0.246178512203916,-0.200770132843297,-0.128872176137356,-0.0718498279152414,-0.0339240328707093,-0.0109345923002735,0.00140973714312589,0.00780368747509142,0.0105103068354233,0.0107521434063465,0.00963780689112824,0.00839830489958799,0.00768123812603674,0.0080940236239727,0.00925656322799545,0.0097164184455939,0.00827022357561728,0.00466135843672351,-0.00689303463522195,-0.0111312540622299,-0.00435240944693724,0.0170913936114801,0.0292565502035469,0.0517708041123577,0.0751091169209822,0.0786253197988829,0.0218919482081421,0.00448616483610416,0.0582615960042864,0.061414038662819,0.0809017752485185,0.0684120140449294,0.0453537164678095,0.0261672927535939,0.0123575138332486,0.0033602293664323,-0.000485435620552923,-0.0023847190203971,-0.00316919429075259,-0.00325188020642184,-0.00292877301369504,-0.00272385471510288,-0.0033217993754062,-0.00395581142593717,-0.00445567171108977,-0.00469521299081047,-0.00450287734708743,-0.00205346588974516,-0.00248292859229338,0.0158763091873472,0.0255865516568112,0.0831760818836522,0.160823801161119,0.271470211823585,0.387508621172596,0.419353955874366,0.323974962122456,0.223846700221539,0.265086798932999,0.410857192437933,0.434900532366352,0.337186943304203,0.215733611799371,0.120816755315818,0.0559538376001726,0.0155532244255188,-0.0042245181590509,-0.014766857289928,-0.0195661728402691,-0.020672600202329,-0.0197018302173442,-0.0183953191057322,-0.018058546758922,-0.0192027336842644,-0.0207928052572114,-0.0210158158758258,-0.0186294935010398,-0.0103293243098437,0.00136778432490246,0.0382143368474686,0.0469151693095463,0.134936374190783,0.272706550316321,0.467309352297739,0.696931074121893,0.873233898584696,0.916247977936886,0.858217329791711,0.882845168635277,0.922548802634508,0.798762276344739,0.57455562506226,0.358952906422861,0.196851107537262,0.0867098059384743,0.0196128847141565,-0.0141159876877451,-0.0337012337513983,-0.0442393936616492,-0.0489508433287854,-0.0502853634566601,-0.0500869617170364,-0.049739230780475,-0.0499576265968413,-0.0496461204516995,-0.0469023326301143,-0.039989671953937,-0.0249735338001352,-0.00085568481554666,0.0493814398990521,0.0515567448238458,0.158159446716648,0.333031785112913,0.581212050644966,0.897934729836163,1.21604489323728,1.44439269690337,1.50391952071347,1.4617823427212,1.3088618405502,1.02761590388966,0.708852165995521,0.436904854871765,0.235185431402367,0.0972498704582268,0.0146413693658652,-0.0294355210155269,-0.0585246585260325,-0.0777591087794917,-0.0899873195730685,-0.0972613473039674,-0.100696128805301,-0.100951369122184,-0.0984793215914285,-0.0929023484048519,-0.0832706434187108,-0.068291247138513,-0.0447256894723792,-0.00987674289323124,0.0484132353291527,0.0414708952701266,0.151261566725832,0.330758215953465,0.578676848514901,0.893976840037234,1.23305363055857,1.50821428558393,1.61828740746265,1.5508635691693,1.33401067700112,1.02414706145077,0.704448874306221,0.434818739594092,0.230781680543606,0.0892931498188262,0.00550538552431315,-0.0459779921149,-0.0862380676519222,-0.119172999101844,-0.145019988480153,-0.163558115990527,-0.174090826529954,-0.176261733719416,-0.170214022654741,-0.156238873566633,-0.134732276824962,-0.106033227572147,-0.0696153060181933,-0.024398516212687,0.0357221728728491,0.0228316647999406,0.123365519737514,0.283645565202373,0.497563810738817,0.752262626565903,1.01764273147593,1.23289398027476,1.32886259117721,1.2813110495538,1.10997441068034,0.864507101703038,0.604329060459967,0.373671936640007,0.191310630475785,0.0654896359431661,-0.00803362793754613,-0.066079379156891,-0.122064896498508,-0.175876917362047,-0.221831924375937,-0.255142667567427,-0.272944344243302,-0.274396393453845,-0.260084983780411,-0.231566046363115,-0.191246420353049,-0.142265321816631,-0.0879541304003282,-0.0346420336993627,0.0269105031170702,0.00869585661341349,0.082505524750327,0.205748704619284,0.364475414279748,0.544638943356879,0.719846336095115,0.856452299026,0.920995562666389,0.899348307618791,0.799005352142951,0.644312263444433,0.467295920811273,0.296918217292917,0.153298323078301,0.0541911101915949,-0.00980851991268263,-0.0749725807467514,-0.152591661825112,-0.240656251732623,-0.325293462347049,-0.393896550475582,-0.43731469603757,-0.450121267564066,-0.430661717228474,-0.381296179309215,-0.308583857102232,-0.22221904550848,-0.134185181565933,-0.0566836678967913,-0.00294923915328771,0.0126453351194352,0.0912538395345987,0.203390504733636,0.339588140155321,0.482703688173633,0.610120508616298,0.699042978190451,0.730840971291603,0.699098924656291,0.609874920837143,0.479468170551717,0.330653079949071,0.188069849832623,0.074440369247023,0.000938791899170463,-0.0590338386378513,-0.140295835741319,-0.244654546331521,-0.355457743247058,-0.454486757424329,-0.526938691526709,-0.562405123221952,-0.556139712655219,-0.509462190436654,-0.429562823926621,-0.327721473203014,-0.217211392220292,-0.113219901081578,-0.039052878493166,0.0204080895079195,-0.0245710266603414,0.0457440379590586,0.134467428816077,0.259541489077263,0.392349747595818,0.514865710825458,0.611083803552377,0.667355350351013,0.674962036657872,0.632302355675764,0.545131669693922,0.426037281144142,0.292869784147234,0.167278037870475,0.0695764656734223,-0.0022594034015031,-0.0909618311302643,-0.228199968228625,-0.40023939516218,-0.579816850626302,-0.737273544803253,-0.845065873652146,-0.883428462434563,-0.845003898701182,-0.737562428585622,-0.583666693180982,-0.410937455512069,-0.246749139317985,-0.110569988991612,-0.0137962795399166,0.00261252165707525,0.0665062827937307,0.159705466098576,0.265737927989774,0.369814013543486,0.457465810661452,0.516986453499816,0.54043192899418,0.524949601879998,0.472563705936238,0.389871041111908,0.287933820512988,0.181879969759422,0.0885528549579188,0.0103868039386266,-0.0665086058578878,-0.186408866653064,-0.359555762246546,-0.564845335010799,-0.778285215137967,-0.964898830454053,-1.08600055155029,-1.11216473746496,-1.03432295526121,-0.869542665683627,-0.658268935948658,-0.441038343066864,-0.250280142553614,-0.100806396009701,-0.0119047949143674,-0.0338862101330419,0.0398202304730288,0.103993121094509,0.169579370110576,0.228800369648389,0.277558477897363,0.312048174178089,0.329352061528625,0.327585062266006,0.306041656321997,0.265743012957204,0.210177708233834,0.145133443553336,0.0777061608095146,0.00795175892656141,-0.0808017919444388,-0.232628896330169,-0.45185770619573,-0.729262210435311,-1.04216910069794,-1.33735634997591,-1.5433804108261,-1.60065441429796,-1.48547134122697,-1.22677538162779,-0.907680839743816,-0.60107763622698,-0.343899710683531,-0.150740399679664,-0.0295261889739013,-0.0447066604300716,0.0276128428594377,0.0821094618067364,0.126164025717088,0.160986132998331,0.187122980868107,0.204122290833213,0.211481952982874,0.208840414027554,0.19602980435793,0.173484102667385,0.142083744027642,0.102150078874254,0.0536239457052614,-0.00830991816261879,-0.109587101069318,-0.279928414846594,-0.525058378835382,-0.848735740010693,-1.23206184593968,-1.60303077714051,-1.86221614473338,-1.94281473759899,-1.81164823691,-1.48277495746036,-1.0766177845207,-0.698095820955072,-0.400148664197495,-0.184184757768073,-0.0519142755145897,-0.059876289571544,0.0103314860384725,0.0523994097366211,0.0809371470104981,0.0991892627856804,0.111003189807704,0.117893953144466,0.120963717589767,0.12063268870977,0.11635383662307,0.107371908775509,0.0924024182358649,0.0690078708531202,0.0338915644003693,-0.0191979113713823,-0.118893960524729,-0.284777214112485,-0.52693805608536,-0.85279144459575,-1.2336070400556,-1.56820165641731,-1.74895114408794,-1.79855852817503,-1.72872541188994,-1.45804598677536,-1.07906214296228,-0.700041541654953,-0.40229155698793,-0.19211965977915,-0.0638482493262092,-0.0607952840654503,-0.000283418003684617,0.0288401937499841,0.0470114357323952,0.0554516110643623,0.0588718255818395,0.0593388947597813,0.0591193851654486,0.0595467715948121,0.0597220140451171,0.0579860573198028,0.0521680864601542,0.039340618132812,0.0156886792353743,-0.0249723291775509,-0.105827093098051,-0.238205594428678,-0.432741556916946,-0.690741557686427,-0.957499686075287,-1.10264419572442,-1.05289878981496,-1.02310479510465,-1.09361148727773,-1.04481142337718,-0.836441275593981,-0.562454915437826,-0.329265370682688,-0.163786525854449,-0.0579300998865156,-0.0472173658062656,-0.00285164910533657,0.0112662898010555,0.0212779608275039,0.0241639291765431,0.0238684679343326,0.0218562248281583,0.0203770857892372,0.0208242759730111,0.0224991514384453,0.0237367276951616,0.022422882595122,0.0166204881360633,0.0039058625885192,-0.0199473208938664,-0.0686285965070011,-0.146679581702523,-0.260765412525244,-0.406139436779339,-0.52171219301542,-0.49074097057471,-0.315808674776101,-0.266751190690878,-0.386347064440272,-0.501832643323525,-0.465679269466412,-0.327467928810736,-0.194802227510868,-0.10141953371473,-0.0321030071607957,-0.0204397373543212,0.00166813546892168,0.0011573232874215,0.00410954608152715,0.00434190876215411,0.00401832146913044,0.00336015192333263,0.00255517728268996,0.00184612222272084,0.00218103472433815,0.00264068528694042,0.00257407498833976,0.00162599310984068,-0.000685493197410204,-0.00537735399752154,-0.0163554690127033,-0.0332974670907267,-0.0567970792119583,-0.084665320673584,-0.0988765428508935,-0.074005123646469,-0.0698358323683594,-0.00560736766422027,-0.0263928256411174,-0.0952811877966306,-0.0922852032256698,-0.0645113840525498,-0.0371714154610032,-0.0221820802001495,0.00381852748718316,0.0118372725238364,0.00677844770489921,-0.00713088956402817,-0.0114479402559526,-0.0131248505603481,-0.0124733286372846,-0.0109580663670654,-0.0104103690393935,-0.0113166728471131,-0.0128899278455563,-0.0143151510209593,-0.0140712235609324,-0.0108480468002756,-0.00318871898830383,0.0116153421603923,0.0390379972098757,0.0839925781362117,0.151617678934926,0.237012552689763,0.291167436327978,0.227066859662792,0.101244494693771,0.0948132609079844,0.185539244221419,0.293556493014043,0.280000890223941,0.199398959550091,0.121402381802163,0.05973570323026,0.0381146134158133,0.0405469696435303,0.00515819809813968,-0.0207340648905259,-0.0337569313654796,-0.0393430933824838,-0.0405215558045814,-0.0393665912664393,-0.0381574541362857,-0.0383900540992208,-0.0398215247036043,-0.0402381746204432,-0.0373421516615273,-0.0285576630057041,-0.0105675610816206,0.0228442747227272,0.0868391533472052,0.192908171241606,0.351361967761876,0.554743796812024,0.729849746101467,0.757389223437971,0.655202286436358,0.585443954251933,0.726114047964011,0.788859342116354,0.658485842859407,0.448510676802126,0.266976564615333,0.132740549495495,0.0606179759233611,0.0576384041752774,-0.0055040285620725,-0.0415094742733899,-0.0649525578242139,-0.0778533303196623,-0.0848037885693635,-0.0878584349706116,-0.088511982566852,-0.0879107007627572,-0.0859043235124245,-0.08109355242979,-0.0715694726428259,-0.0544416230995615,-0.0255896647235526,0.0224910180004502,0.113619759351335,0.267408479557236,0.498233810937409,0.808519177083294,1.14600527450133,1.38795792058197,1.47308962352286,1.45089779812174,1.43395029224161,1.27010925108324,0.957541381203799,0.630200487781112,0.368735939159426,0.180244508572226,0.0644267937783411,0.0603784826141184,-0.0214797915486284,-0.066738488732014,-0.10360480749224,-0.129401977295698,-0.147786458986604,-0.159052091143952,-0.163499829781559,-0.16144503905178,-0.153107172718021,-0.138346514658911,-0.116700969584905,-0.0866505109598254,-0.0454820502994352,0.0117511365655119,0.113998070269167,0.28884028647482,0.548411972238457,0.899987083233275,1.31537149618567,1.7004052730497,1.92677280399344,1.93921490576488,1.77824006332351,1.45958845263393,1.06074687865955,0.690512994475075,0.400576387863214,0.191888588371173,0.0517503243121293,0.0513585283974578,-0.0384576271828864,-0.0941448508844645,-0.150065782777914,-0.197165860876416,-0.234596671671575,-0.25909318284119,-0.269274601456569,-0.264878117030308,-0.246552134785623,-0.215596693856978,-0.173927618063905,-0.123517445393023,-0.0662133225669252,-0.00354208918847331,0.0935505755333056,0.261365247675723,0.503937516687965,0.819312766982526,1.18494508827347,1.53396799010693,1.75873519832702,1.78645143887873,1.62432840256588,1.32409080510227,0.968473985071415,0.636302203872037,0.367022717365651,0.170858469856727,0.0306873942843541,0.0374314709648633,-0.054454096407409,-0.125401814963145,-0.209023988510105,-0.288584298140058,-0.355131612546847,-0.400046483649311,-0.419179119298569,-0.411207911968456,-0.37732721638873,-0.321083587133946,-0.248264841609569,-0.166672787190417,-0.086175856473172,-0.0171898968479364,0.0645772264099628,0.205407977031242,0.406006765213849,0.653202843121735,0.922594053081318,1.1683908688652,1.32758684508376,1.35480561349071,1.24736227821643,1.03729926977276,0.777099469771402,0.518900891188205,0.295650209349332,0.131382111010297,0.00987219692629226,0.0215053419285356,-0.071827881358818,-0.164437354477821,-0.287563187111475,-0.41307798616266,-0.52310081293851,-0.600698764330596,-0.635229888208528,-0.622077430665674,-0.563281742223402,-0.467579254050067,-0.34856369137098,-0.222739539233837,-0.10948815573949,-0.0272501180679205,0.0402625015868778,0.147755069617109,0.301474296538049,0.482827523827535,0.666369743876758,0.822986403628523,0.921917755072809,0.942009590080814,0.880139701266908,0.749866558187401,0.576696384797146,0.391473037395253,0.219889551981392,0.0947515088806309,-0.00684768583615714,0.00591492006728029,-0.0957815236860164,-0.221336000575505,-0.393387809279664,-0.579062448618483,-0.752601826731154,-0.883124068078979,-0.945094712516971,-0.924949231936755,-0.825824283068587,-0.668894251623565,-0.484946241918024,-0.303134993557172,-0.148965424190062,-0.0411900990185506,0.0262784594347588,0.108253156080762,0.221159142624449,0.346654261061409,0.465401387948396,0.560909487288564,0.619591492398635,0.632714011661561,0.59824025474944,0.520788440707633,0.410996922045746,0.285790251972195,0.163005022526405,0.0707042823470584,-0.0224362400047253,-0.0108575551482723,-0.132477380686785,-0.29724252532223,-0.521033659121011,-0.779804536513569,-1.04052982561479,-1.25098667241656,-1.35860131115085,-1.33129263612729,-1.17178972681051,-0.925542709184709,-0.655624373757869,-0.407892229297714,-0.206777296572646,-0.065552913275373,0.0161214879750249,0.0848387587573547,0.165115263676605,0.246522473396955,0.319197565706006,0.37533830560035,0.409159192170798,0.417114495278478,0.398010956462105,0.353172276413365,0.286750069360494,0.207365661012939,0.123956079530072,0.0532402964942513,-0.0384197755226989,-0.0317851132528322,-0.172172830243505,-0.368847417273267,-0.638700898873983,-0.971525997364894,-1.32780906639235,-1.62861454161895,-1.79103461226564,-1.76322586683674,-1.53803304940097,-1.1884042584536,-0.822114766461738,-0.506111990496277,-0.262975711660227,-0.094686676497325,0.00236959044476117,0.0648199410074793,0.121999365356796,0.172334806927256,0.213953250107325,0.244872118252126,0.263175531310168,0.267564711794368,0.257392013056426,0.232921109760482,0.195534275418417,0.148502803477757,0.0926979281857202,0.0371768615502522,-0.0524497609003615,-0.0529808735632732,-0.193408464842994,-0.402616323187789,-0.693138275493466,-1.06403013506217,-1.46354034039812,-1.78277535661574,-1.94410998947155,-1.93169166485886,-1.70500150682029,-1.31932879438025,-0.903167159472265,-0.550850040048354,-0.290661377961812,-0.115318807115437,-0.0130220463434684,0.0440787862217116,0.0851960029374964,0.115240744473095,0.136895233991405,0.151664728492857,0.160006830862619,0.162060291581961,0.1576058531695,0.14632931339452,0.127933655824145,0.102137127892019,0.0653140635610761,0.0201557115796741,-0.0616042475924626,-0.0657533766819789,-0.181889346398787,-0.370898805765351,-0.632937305852198,-0.960817159859475,-1.27373988777671,-1.43767250343807,-1.45462152951179,-1.47691528401314,-1.39194555005825,-1.14987031004816,-0.811819910313933,-0.500810035876394,-0.269351369474557,-0.11507335184413,-0.0238207663947391,0.0242165330931515,0.0530661498714571,0.0702210638962555,0.0797807692989765,0.0846232674937979,0.086649518997208,0.0872532386992531,0.0865836267596398,0.0834990635398285,0.0765114790868472,0.0635778455241353,0.0401314763644613,0.00417089628908166,-0.0589636952118927,-0.0619831766598194,-0.134418022561768,-0.269151540077691,-0.451223165015692,-0.661521452831985,-0.79163316794038,-0.728186231273908,-0.587043693284634,-0.657007609653899,-0.759836189047563,-0.732945169246133,-0.557802712089225,-0.353895582201092,-0.194864699086492,-0.0883455577745926,-0.024183310666673,0.00924642857092406,0.0272581006189005,0.0360745711775283,0.0390031926557491,0.0386131125033646,0.0371975920842411,0.0369685163257174,0.0381678030818758,0.0392972410591302,0.0380851945055873,0.0324624976241884,0.0194155806163182,-0.00647041473334166,-0.0419118338361574,-0.039482704478107,-0.0613979723169269,-0.123541858581077,-0.202036867975975,-0.282749200666976,-0.295493628518423,-0.186262854267528,-0.0951827284665383,-0.101813628068945,-0.228272021962459,-0.293569422050304,-0.239796902316684,-0.154038485147309,-0.0858987666969443,-0.040536438224068,-0.0129316773316294,0.00191451512856619,0.00959891827402272,0.0128439522488164,0.0130998412174236,0.01167182241698,0.0100824126139574,0.00917559491325721,0.00974141177598598,0.0112610945850091,0.0119030478491082,0.010204985440022,0.00586394987760409,-0.00806039130391047,-0.0131996728266075,-0.00519284636303156,0.0205207575131402,0.035034481215595,0.0618986940584196,0.0896396042888696,0.0936269674768027,0.0258898063289806,0.00532208833373775,0.0695669191118816,0.0729689997110292,0.0965569483280901,0.0819193605074714,0.0544051858408813,0.0314140678779287,0.0148680177473381,0.00407441863623476,-0.000579253161663253,-0.0028684278282422,-0.00379748609082604,-0.0038571315196163,-0.00340839545009652,-0.00309822078818073,-0.00381715759275545,-0.00460170951015199,-0.00523819724950964,-0.00555842550702061,-0.00533849448346362,-0.00240790273947287,-0.00294398843288659,0.0190782998298035,0.0307117378932488,0.0997304027839581,0.192600962363,0.324735265902269,0.462753361688044,0.499554538743255,0.385000528846758,0.265827598559199,0.314865971723944,0.488944884476902,0.519007551216624,0.403285569960064,0.258338542995584,0.144777523193715,0.0671366122020851,0.0186356076992145,-0.00520316075102774,-0.0178990725091643,-0.0236716981153812,-0.0249568431899133,-0.0237005768143913,-0.0220224134394733,-0.0215806844518524,-0.0230593629890394,-0.0250791358129494,-0.0253931027622276,-0.0225328203015642,-0.0125477892926208,0.00154634040093897,0.0458446261804325,0.0565581047050711,0.162098660970329,0.32701349034772,0.559557499675261,0.833009056829154,1.04139800445706,1.09061632583364,1.02047777689548,1.05013732622675,1.09952347305946,0.954230513770049,0.687750264559609,0.430279889865025,0.236290274534321,0.104350026510618,0.0236575004704289,-0.017034242687477,-0.0406854824661612,-0.0534831441101484,-0.0592611629424053,-0.0609612260304768,-0.0607610385721555,-0.0603272584171668,-0.0605589449015776,-0.0601192103796537,-0.0567345678482357,-0.0483301046188052,-0.0301824942461747,-0.00105612065264466,0.0594369632917409,0.062563890492691,0.190512903796033,0.400100675410421,0.697146817733327,1.07538278440518,1.45374728894191,1.7241456969531,1.79398568691304,1.74452881779811,1.56410597467303,1.22999989156807,0.849784427296391,0.524537285111827,0.282930523146328,0.117500128454207,0.0179148769964694,-0.0352696917711289,-0.0704270679580802,-0.093815601569466,-0.108758372986681,-0.11771359536556,-0.121973942376722,-0.122299044536855,-0.119236625980035,-0.112364508321545,-0.100575719580347,-0.0823452179016554,-0.053805689521404,-0.011678610839998,0.0585922693449499,0.050780889151669,0.182742632660695,0.398150905281316,0.695450306881223,1.07325336243339,1.47869387666978,1.80699870707368,1.93792057597248,1.85748462873149,1.59881372520439,1.22852016933953,0.845887679766279,0.522838968944492,0.278253793858533,0.108352692599297,0.00709042557928218,-0.0550061290112269,-0.103636188599531,-0.143619171181031,-0.175038433499671,-0.197592488241437,-0.210405400577336,-0.213044285175644,-0.205677443588096,-0.188667280967632,-0.16251564318357,-0.127668305064539,-0.0835558361762711,-0.0289242287979846,0.0435578252771444,0.0285545003101306,0.149495153522284,0.342174127503589,0.598773190606225,0.904781629606943,1.22331175117474,1.48154487810614,1.59647705401997,1.53926482591513,1.33360830187409,1.03897653314134,0.726689421608049,0.44988088152419,0.231187048380497,0.0797624957785395,-0.00909075567951418,-0.0790638465165756,-0.146670715510496,-0.211851449151611,-0.267514399241102,-0.307877822042138,-0.329455968566599,-0.331228606635489,-0.313901239530894,-0.279358862066652,-0.230519526952642,-0.171187080348657,-0.105451580599564,-0.0410585396688621,0.0329012326739327,0.0110466059096213,0.0997173832456486,0.248736075344053,0.439016207942128,0.655755376506963,0.866595345506011,1.03105443233196,1.10873415269366,1.08260580939503,0.961741251730642,0.775523951716602,0.562576337653166,0.357806121813,0.185165759049068,0.0655811392428564,-0.0114310221724225,-0.0898598921653122,-0.183461380893566,-0.289779664044834,-0.391926820657289,-0.474757066492883,-0.527209640991582,-0.542692378623638,-0.519186714335468,-0.459549509419933,-0.37172612166441,-0.26742607265232,-0.161114827320657,-0.0676700356144197,-0.00346948421818289,0.0128551313136892,0.10950687404434,0.245373091934882,0.409170719479787,0.58154540984881,0.735160969646291,0.84240418214616,0.880715189052126,0.842338699777353,0.734648689535652,0.577417243393389,0.398180705011061,0.22655704216444,0.089736221701937,0.00130390775226782,-0.0705399519572134,-0.1685110239225,-0.294488268299364,-0.428046839827736,-0.547486850086306,-0.634926529525029,-0.677755074838029,-0.670197438363679,-0.613846288638213,-0.517422929167861,-0.394592272711929,-0.261398679127717,-0.135906696467152,-0.0467901519662121,0.0239586121029788,-0.0283905557173542,0.0533744399114923,0.157138343404244,0.303836501069147,0.459412804052454,0.603031032188339,0.715879140773449,0.781894860260219,0.790806496731043,0.740736837278973,0.638485615028752,0.498870971171773,0.342858244218419,0.19548367659988,0.0810029275182139,-0.0026813655181276,-0.106436487090314,-0.266956823210833,-0.468126445322989,-0.678241044169619,-0.862639896249832,-0.988990417747511,-1.0340251112463,-0.989058040881207,-0.863209193226091,-0.683000472083812,-0.480896865205049,-0.289090516631208,-0.128992039735233,-0.0136621412129354,0.00302292527508009,0.0774095822846181,0.186614928875127,0.31105837473628,0.433194757571467,0.536068362211664,0.605939574917556,0.633460735625828,0.615276629905977,0.553783493900022,0.456763247368635,0.337203425908391,0.212777618536157,0.103372023229348,0.0119122843615336,-0.0780744078186454,-0.218607957912368,-0.420810216797588,-0.66056465761314,-0.910032267151946,-1.12827038203538,-1.26996531114862,-1.30063124353303,-1.20961461381391,-1.01689543757936,-0.769892488186516,-0.51599209267066,-0.293694155853274,-0.118266372820912,-0.0144596708787833,-0.0400435196184464,0.0460768735521445,0.121424826032317,0.198552144205572,0.268236702693642,0.325606079856272,0.366183518941488,0.386534864262381,0.384441846140519,0.359078445325779,0.311648921720743,0.2462734439452,0.169736463809429,0.0906004659531568,0.00883851269960068,-0.0953872253097953,-0.2728978540518,-0.528446240836572,-0.852028075979928,-1.21706995944765,-1.56143859076526,-1.80178875806682,-1.8687402295005,-1.73462757341734,-1.43296538277847,-1.06070456825888,-0.702714958488982,-0.402844711949424,-0.177256899429564,-0.0355486045568972,-0.0527339810983916,0.0320134218373351,0.0960054966591238,0.147851046560395,0.188912846426386,0.219769665158199,0.239854702843606,0.248555908734057,0.245439492784079,0.230313311966235,0.203685923258889,0.166625215472608,0.119537441351424,0.0625750780233364,-0.010052049903715,-0.128950518852504,-0.327744440812115,-0.613412248680461,-0.990455706428357,-1.43657957026115,-1.86775341614068,-2.1685323891781,-2.26207319431586,-2.11023040684456,-1.72850112984048,-1.25618936575875,-0.815226056481342,-0.46786920536651,-0.215961705810897,-0.0614944682999435,-0.0702148059022742,0.0120425227743213,0.0614641694344101,0.0950483344400691,0.116620985807006,0.130653285351253,0.138884848860298,0.142567134349465,0.142157217453474,0.137016685107254,0.126297981686258,0.108545951398382,0.0809149792809234,0.03966735774192,-0.022601951454349,-0.139372547997441,-0.332774940296875,-0.614793118275094,-0.993818699971235,-1.4357659876831,-1.82273701593083,-2.03057053645838,-2.08735783439669,-2.00744150905989,-1.69523183845381,-1.25645310967382,-0.816148200886764,-0.469601651214692,-0.224700192625716,-0.075052439453134,-0.0709550822946834,-0.000130190216269952,0.0340586983238891,0.0554134664827915,0.0653965611557229,0.0695080036828702,0.0701480472012049,0.0699422594481464,0.0704539117647459,0.0705933949807386,0.0684364821521895,0.0614950598827846,0.0463497021635921,0.0185818058507051,-0.0291000246581412,-0.123606372660081,-0.277792577472189,-0.504190905305692,-0.803927192105547,-1.11262016496422,-1.27882416793401,-1.21918124207876,-1.18434433722316,-1.26703118287915,-1.21235789212254,-0.972320803224532,-0.65474775079233,-0.383702867442127,-0.191090647423446,-0.0676930652176001,-0.05491810428463,-0.00306009081657365,0.0134881849447225,0.0252159383024672,0.0286073412658119,0.0282550654402169,0.0258395152653068,0.0240364008578924,0.0245884641506049,0.0266092243576721,0.0281005957374305,0.0265791426448799,0.0197719157067853,0.00487200011023561,-0.0230806638415836,-0.0798962482186658,-0.170743235070776,-0.30348906408477,-0.472314776021733,-0.605720749041095,-0.568545591969383,-0.365367381470277,-0.308569422387836,-0.447116007778126,-0.581825029291152,-0.540895873137586,-0.380820183193405,-0.226690228859745,-0.118073277083531,-0.0373018887087717,-0.0237192812435224,0.00207564322783188,0.00146872485999687,0.00491349551693528,0.00518495778677628,0.0047891888619788,0.00400632112697895,0.00305871934181714,0.00222016150601891,0.00266424533476997,0.0032473234828063,0.00319547883283858,0.00208883901933699,-0.00063113814971558,-0.00615567046157116,-0.0189601692798131,-0.0386855666876136,-0.0660588819743889,-0.0984521850175593,-0.114820009835092,-0.0857407312829833,-0.0812142562450465,-0.00653919600897388,-0.0305376616127471,-0.110509168303593,-0.107079780642038,-0.0748612744548219,-0.0431125733071984,-0.0257264310194303,0.0045837647939985,0.0138038226937571,0.0078562632031216,-0.00842988976327506,-0.0134830621333486,-0.0154148263240962,-0.0145817377751866,-0.0127095089711416,-0.0120169686738352,-0.0131140351653202,-0.0150263391000303,-0.0167613262503793,-0.0164960414738852,-0.012730444421356,-0.00378196626466637,0.0135189841881825,0.0455324639483121,0.0978445039450233,0.17646163778188,0.275528807479306,0.337846952042038,0.262789198333084,0.116887458305988,0.109849635209729,0.214640759888617,0.340313111542857,0.325443257276932,0.232130907878273,0.141433372503871,0.069623146413417,0.0444854482140181,0.0473736746258886,0.00595958327049481,-0.0243848382033653,-0.0396878951835696,-0.0462866636044997,-0.0477263676211957,-0.0463935756727006,-0.0449513643089123,-0.0452198653737406,-0.0469068554696015,-0.0473547671887433,-0.0439144331694205,-0.0335846015260199,-0.0124911902494861,0.0266519652107004,0.101422331153378,0.22491465672174,0.409190752141244,0.645208083599158,0.847276234833274,0.877382564181078,0.758031266667224,0.676815594004243,0.840492187018421,0.915172286011082,0.765580856855731,0.522237703622538,0.311158801266592,0.15487517717125,0.070879735482605,0.0676325502432949,-0.00632770309756849,-0.0485583936627773,-0.076157472044391,-0.0914378033368176,-0.0997571705978604,-0.103486920684945,-0.104314291082923,-0.103567328440346,-0.101102339059889,-0.0953184362929181,-0.0840110626629314,-0.0638198984016912,-0.0299321179765924,0.0264714274229642,0.13308894048648,0.312298098746742,0.580965130932056,0.941500830030488,1.33223165690691,1.6106439320889,1.70748901888316,1.68134588262828,1.66345486507498,1.47585216983937,1.11458143016311,0.734595506829721,0.430377840740423,0.210795475903133,0.0757108200748284,0.0711424226193648,-0.0247888875153074,-0.0778654771146225,-0.121266090563083,-0.151739970461261,-0.173508904900283,-0.186872233220565,-0.192159148401019,-0.189723478668239,-0.179829488687809,-0.162342780819237,-0.136760062247443,-0.101342302249203,-0.0529671453028297,0.0142014836139472,0.134036640609878,0.338032402676626,0.640524428367194,1.0499593614326,1.53265976676195,1.97883793166024,2.2404331196375,2.25462614840978,2.06877760689415,1.69979002136869,1.23669784359025,0.805986080551424,0.468281085439379,0.224990553488634,0.0612914843963041,0.0606850227649808,-0.044507747858039,-0.109764964535621,-0.175526610539815,-0.230999681467693,-0.275092353846646,-0.303946681140463,-0.315939862847365,-0.310763230363669,-0.289177832189793,-0.252715822022838,-0.203643743310221,-0.14430793247483,-0.0770022576935203,-0.00353087891295897,0.110426553106495,0.306559765254323,0.58948625722648,0.957442135375019,1.3837552243835,1.79022817871934,2.05160229947564,2.08359721708812,1.89486515802158,1.54526035811799,1.13088577544928,0.743646387768494,0.429681465094095,0.200892269855896,0.0369028285144826,0.0442165896195098,-0.0631726958031744,-0.146331440021248,-0.244494262846841,-0.33791508661531,-0.416063121668082,-0.468823062982656,-0.491307343571817,-0.481950659246471,-0.442155055831288,-0.376092817347139,-0.290564821634186,-0.194711904278825,-0.100225810131639,-0.0194925360839671,0.0764044981318212,0.241365345077589,0.475550248185591,0.764203913371576,1.07891553246447,1.36611909402433,1.55207483897101,1.5837518782122,1.45809483513309,1.2125800070083,0.908578415334238,0.607046342503844,0.346548435124699,0.154664588915518,0.0125395628235536,0.0250564759138829,-0.0834934601944367,-0.192061894717977,-0.336389287469835,-0.483445057482261,-0.612401453082647,-0.703413821815462,-0.743942508585063,-0.728533274058011,-0.659579688992073,-0.547365389412581,-0.407876284586618,-0.260409022368925,-0.127718606578328,-0.0315315234138381,0.0474568476593027,0.173447204393083,0.353140035796153,0.565221493579613,0.779996685309899,0.963395227304973,1.07926889812732,1.10276268436214,1.03022618098374,0.877612458697846,0.674899692250023,0.458237000679045,0.257688132428427,0.110984496537515,-0.00748790366319307,0.00653636079626394,-0.112031395293046,-0.259174644953728,-0.460204195666462,-0.677318984644713,-0.880389224585074,-1.03323515247853,-1.10585981021016,-1.08231126905016,-0.966255384362582,-0.782558862332564,-0.567385857801704,-0.354842564700496,-0.174684450798936,-0.0484029348158369,0.0305355041278168,0.126448470178839,0.258781790195502,0.405920191261004,0.545149228760982,0.657180981639309,0.726029659154209,0.741409804738524,0.700930914810155,0.610052144263636,0.481315396798566,0.334563330939653,0.190580846524705,0.0823322171559747,-0.0260066588753068,-0.0135470320846291,-0.155784600404706,-0.348187961599563,-0.609245078748346,-0.911357483865644,-1.21587928834012,-1.46177454501287,-1.58758872638568,-1.5558146196227,-1.36955861858195,-1.08191797499267,-0.766685191581952,-0.477490404255418,-0.242773825592862,-0.0773991397138453,0.0183893705451639,0.0988371785300909,0.193101646896234,0.288775202899246,0.374168449025997,0.440136727473421,0.479878610946014,0.489220559990225,0.466761101362677,0.414068851153655,0.336035882480956,0.242783290011185,0.144831200374167,0.0619091686291466,-0.0452307605663977,-0.0380331548274606,-0.202252630835904,-0.43157861557259,-0.746145889032829,-1.13406532457734,-1.54913085439803,-1.89932832208208,-2.08836933167381,-2.05626646355935,-1.79444154409221,-1.3873403020406,-0.960351294803944,-0.59174669799456,-0.308231842362657,-0.111595338727942,0.00231604784011042,0.0755540874171649,0.14273774791104,0.202006963809671,0.251037338831383,0.287470190860383,0.309037627824975,0.314207973217623,0.302220624098334,0.273385446521238,0.229327828591074,0.173914101143142,0.10826411541424,0.0431756281387835,-0.061812315449673,-0.0625653887155362,-0.226579074454512,-0.470427480735217,-0.808765114798179,-1.24019846254321,-1.70404885718498,-2.07373346908915,-2.26002990360024,-2.24584890627938,-1.98384522331283,-1.53691189916135,-1.05333986817377,-0.64309825655923,-0.339943280947367,-0.135408867407516,-0.015521170496667,0.0515111300684061,0.0998408072481467,0.135261648919959,0.160862020438832,0.178364406664802,0.188266680587885,0.190701845824869,0.185405662651545,0.172025582038965,0.150237149849526,0.119754868517429,0.0763908628316669,0.0234140947523521,-0.0724163870449822,-0.0770895721723134,-0.212528141650778,-0.432679176723219,-0.737541903735991,-1.11817019885349,-1.47994705286968,-1.66780769133141,-1.6858149097126,-1.7120490375796,-1.61525591557129,-1.33654601637105,-0.945093403904118,-0.583726172472954,-0.314357073762649,-0.134611386018098,-0.0278544479510252,0.0285107772880925,0.0624043415929579,0.0826312194932532,0.0939823201411694,0.099804592065117,0.102293505970582,0.10304342257608,0.102197123982303,0.0984320273784023,0.0900680459972903,0.0747466018405022,0.0471360401073931,0.00494578744511148,-0.0690160768547911,-0.0723032994267802,-0.156652031168638,-0.31349151396278,-0.525193963217121,-0.768979440330959,-0.918437154954973,-0.843135557371349,-0.678962946616792,-0.760403621295952,-0.880395607473153,-0.850830552836469,-0.648585802134914,-0.411932511294626,-0.227002518080953,-0.10300880252198,-0.0280464974473524,0.011126523112504,0.0322513206042084,0.0426213569517943,0.0461015457875758,0.0456864351181433,0.0440200782318396,0.0437560075691736,0.0451851804606317,0.046486709468693,0.0450067149468639,0.0383637261423674,0.0230274545542278,-0.00731846244356491,-0.0488032495888667,-0.0459153141288331,-0.0713888746995221,-0.143736176371666,-0.235021097357937,-0.328552147717702,-0.342668603601369,-0.215670696458847,-0.110400943566737,-0.117718170168172,-0.2643587635429,-0.340639999090946,-0.278619006535238,-0.179089246894792,-0.0998832744302615,-0.0471137786964889,-0.0148902366362693,0.00246780543366158,0.0114517529920388,0.0152467004763603,0.0155298197510499,0.0137967697575219,0.0118702496199606,0.0107743902675378,0.0114840028898816,0.0133554317883859,0.0141734765225318,0.0122141604230452,0.00712797196608748,-0.00918315060277818,-0.0152334246684121,-0.00602143347165719,0.0239605821449409,0.0408110593595521,0.0719968021786205,0.104082986914876,0.108483924297602,0.0298020172670183,0.00613688404948976,0.0807934521399317,0.0843764435459288,0.112110162826618,0.0954006560411602,0.0634619543836916,0.0366709955477625,0.0173904170807459,0.00479874684398134,-0.000673002553067983,-0.00336041413590566,-0.00444092147915081,-0.00448071414586174,-0.00390463990008093,-0.0034825158827129,-0.00433069765884503,-0.00525939400302746,-0.00602338671760031,-0.00642032382320771,-0.00616719891880701,-0.0027529262092936,-0.00339618983360434,0.0222902021048881,0.0358471296927313,0.116279353789911,0.224321534154406,0.377828772764221,0.537598019883448,0.579084341677679,0.445322993317892,0.307280385148311,0.364039953423379,0.566280842767263,0.602595351302309,0.469154529741766,0.300859766330824,0.168712248482261,0.0783243479268784,0.0217155635024929,-0.00621101118951469,-0.0210822510899883,-0.0278517288970691,-0.0293374500311097,-0.0278210537083923,-0.025792832394675,-0.0252462667192463,-0.0270512718292322,-0.029479320237078,-0.0298562996823689,-0.02649759449096,-0.0148055935389911,0.00170813339623846,0.0534784748983489,0.0662635431489488,0.189305472905507,0.38129297601167,0.651599538772184,0.968500873624605,1.20839027423666,1.26336313404407,1.18102178385118,1.2157338797307,1.27512706082246,1.10893188605008,0.800652602528963,0.501542345145668,0.275757322837736,0.122055974210083,0.0277331886577846,-0.0199731034486616,-0.0477316157238524,-0.0628390046276082,-0.0697329086108909,-0.071847649257879,-0.0716784940286392,-0.0711589524574399,-0.0713794987673475,-0.0707722273163584,-0.0667034471104404,-0.0567639554769176,-0.0354417595341395,-0.00125806249312153,0.0695344914110324,0.0737231909305607,0.223013466295717,0.467281959401363,0.813051247132682,1.25246127080189,1.69046447891006,2.00224781314538,2.08210679633527,2.02553004437712,1.81817213339533,1.43183320216873,0.990590693816636,0.612241287082637,0.330828434945843,0.137917646194287,0.0212696256540941,-0.0410955562356041,-0.0823780010436483,-0.109994784245366,-0.127711416903819,-0.138396470255258,-0.14351430100848,-0.143917276683704,-0.14024466802548,-0.132037104555004,-0.118037521660917,-0.0964949385642607,-0.062917301002839,-0.0134394871838749,0.0688777617885026,0.0603322047366999,0.214461143672768,0.465782795166094,0.812452205187891,1.25265297194217,1.72418927283504,2.10528782051894,2.25684494491859,2.16348426404703,1.8632817634503,1.4328437862375,0.987461555204465,0.611086246696034,0.325997388487737,0.127671604135517,0.00878624871060459,-0.0640110763438732,-0.121073951349417,-0.168203245663097,-0.205273538075546,-0.231901688413677,-0.247025613195015,-0.250138259875433,-0.241432189182098,-0.221341700534931,-0.190477937020352,-0.149399516345924,-0.0975033022410847,-0.0333735245568672,0.0515460149853903,0.0345651668781434,0.175971188950036,0.401064803058484,0.700338145866127,1.05772701083833,1.42942504562352,1.73062522223102,1.86447745050363,1.79757707312126,1.55759001286958,1.21377784696844,0.849365276628912,0.526399033859237,0.271409316464955,0.0943223340672494,-0.0100201106718882,-0.0920130872656403,-0.171328163502874,-0.247994335299285,-0.313457794467587,-0.360943526866167,-0.386336749397921,-0.388435006959924,-0.368064103497225,-0.327441027445318,-0.269998898817114,-0.200210379955371,-0.122938096813938,-0.0473620344767512,0.039036032744657,0.0135973447900909,0.117149762498739,0.292104478627181,0.51391678864798,0.767326783968494,1.01390767320505,1.20631991190217,1.29717882437152,1.26654088824052,1.1250688559966,0.907214922666279,0.658237357508621,0.419012406763166,0.217337368302081,0.0771321638062323,-0.0129914333867269,-0.104728863593731,-0.214414483660523,-0.339102097007859,-0.458863077851421,-0.556008208814957,-0.617556873310111,-0.635735970555587,-0.608156897528477,-0.538177906143125,-0.435143783617286,-0.312791335859195,-0.188069305655476,-0.0786117845301085,-0.00388994154206841,0.0127019847171338,0.127909827395896,0.287687890620678,0.479099618456376,0.680858147636707,0.860803932597885,0.986469132814941,1.03132318320529,0.986259226937533,0.859986471810565,0.675790397950991,0.466007273787961,0.265259817231931,0.105178463877159,0.00170261664015614,-0.0819909147469892,-0.196749165441631,-0.344520520142547,-0.500924560134305,-0.640879467489528,-0.743393320898098,-0.793629775371358,-0.784772019500956,-0.718687423129097,-0.605645738423164,-0.461719299516245,-0.305755511626927,-0.158628426429425,-0.0544530582912694,0.0278094658590488,-0.0323989333326831,0.0609470166782737,0.179863864927135,0.348300803857043,0.526711133598495,0.691516235790769,0.821067343049395,0.896872466081807,0.907093635637825,0.84957692596994,0.73217557485367,0.571957557845947,0.393028495673966,0.223721869046759,0.0924041893864276,-0.00310060355175545,-0.122003139043843,-0.305824851479153,-0.536157164594563,-0.776877793543361,-0.988297757130726,-1.13327457161248,-1.18501376448014,-1.13348880520762,-0.989176301217254,-0.782583652861651,-0.551035684177918,-0.33162668865113,-0.147555524305621,-0.0132643750210128,0.00336034661856703,0.0882929869185209,0.21357778651622,0.356529063822756,0.496816177641135,0.614986790370689,0.69526175655633,0.726879723747538,0.705979346487764,0.635333076448499,0.52391926484759,0.386655758743396,0.243771448290187,0.118198992428865,0.013416394212888,-0.0897390454708589,-0.250992983622538,-0.482227929013025,-0.756474537863145,-1.04201428035309,-1.29193394728037,-1.45426689709628,-1.48945051945868,-1.38523812505366,-1.16452922507892,-0.881745103418721,-0.591132108397347,-0.337326116582252,-0.135865419990023,-0.017139904935669,-0.0462823843717069,0.0522815970600605,0.138877597107386,0.227633161747102,0.307857140254428,0.3738988069769,0.420605844188677,0.444024825683632,0.441602039416298,0.412390139961381,0.357779216834327,0.282525519319217,0.194410975074973,0.10349734386756,0.00965697314654396,-0.110149260711712,-0.313361570798039,-0.605190832633827,-0.974933669627839,-1.39210023895349,-1.78563970220139,-2.06030810195722,-2.13695054596262,-1.98394486253982,-1.63934435021934,-1.21392782324272,-0.804523877577827,-0.461977931736553,-0.203986135990096,-0.0417643504185308,-0.0608437598916034,0.0363882152686209,0.109936999702245,0.169637890726954,0.216998680459096,0.252622998272268,0.275825945887298,0.285883275320623,0.28228871349616,0.264825485253176,0.234074832264517,0.191297185766121,0.13698465899608,0.0715399745192862,-0.0118473325995281,-0.148460873200541,-0.375701518901705,-0.701863515384679,-1.13219672641837,-1.64097981036902,-2.1321569635686,-2.47433418887215,-2.58075721104138,-2.40837958835168,-1.97403385717155,-1.43575938351195,-0.932446501169065,-0.535696161090805,-0.247854486946765,-0.0712181340289207,-0.080597874610971,0.0137532306581597,0.0705800265466946,0.109255977715157,0.134191339452443,0.150478812453943,0.160078272549192,0.164385528024128,0.163890168551184,0.157867258460151,0.145380048674236,0.124804959707498,0.0928854025372523,0.0454664609318745,-0.0260354444169647,-0.159931679764055,-0.380833049375258,-0.702644136665646,-1.13470294289654,-1.63750052108002,-2.07644534747477,-2.31100799500245,-2.37485111050785,-2.28503235281118,-1.93171171049887,-1.43353278014513,-0.932174781820321,-0.536940532624538,-0.257342357882897,-0.0863307500537372,-0.0811148444337154,5.19804283348285e-05,0.0393396091053179,0.0639076924552295,0.0754633008871592,0.0802961065165798,0.0811366147379717,0.0809627156803875,0.0815580741139506,0.0816366539402111,0.079025807477566,0.0709274905755439,0.0534294964231028,0.0215170140666499,-0.0332209969903628,-0.141397330771322,-0.317357746379164,-0.575550488115754,-0.916872668149662,-1.26720484584275,-1.45410767584809,-1.38438903025893,-1.34450201369245,-1.43941381008162,-1.37912502406947,-1.10777212150944,-0.746853346393246,-0.43807638681449,-0.218388646527398,-0.0774689177982579,-0.0625931869614497,-0.00323001895965459,0.0157634541456999,0.0292221852602349,0.0331358052525907,0.0327481114686117,0.0299518941826236,0.0278357898927916,0.0284929209025625,0.0308345603930451,0.0325571391144213,0.0308124702994504,0.0229847243802703,0.00588487572072814,-0.0261846464319421,-0.0911356948451183,-0.194751319942768,-0.346114071039412,-0.538300465098225,-0.689377255949461,-0.645887564977662,-0.414572710774933,-0.350081081235615,-0.507465091333974,-0.661389421627929,-0.615821432160522,-0.434016496410783,-0.258499367725158,-0.134689100654702,-0.0424784277577503,-0.0269778617241769,0.00250371241748871,0.00179898734643142,0.0057362677012028,0.00604911716660925,0.0055820276187673,0.00468617843119558,0.00361022605405949,0.0026306300096326,0.00318349715294407,0.00388972684052097,0.00385121710440245,0.00258237974764665,-0.000550719983825964,-0.00691344954400329,-0.021541951006507,-0.0440429991019972,-0.0752821441233506,-0.112187059988332,-0.130694002347814,-0.0974100425590569,-0.0925621953362161,-0.00747120301864168,-0.034656109616239,-0.12565913973518,-0.121795022035805,-0.0851510320182578,-0.049012814722306,-0.0292443588741003,0.00536997905015615,0.0157748714708434,0.00893076579831773,-0.00974507888363312,-0.0155460157788224,-0.0177435615891417,-0.0167387827732019,-0.0145240513533841,-0.0137065776275897,-0.0149916783516197,-0.0172161884783766,-0.0192482979084244,-0.018947119374475,-0.0146277252216555,-0.00438177257725876,0.0154244481848035,0.052034713944599,0.111691726409177,0.201272079346674,0.313946161484629,0.384320011520345,0.298264343302207,0.132378357406788,0.12478846257688,0.243527930720984,0.386821073069272,0.370755503777854,0.264820004884877,0.161453925306668,0.0795115807460306,0.050864910548598,0.0542153004891801,0.00675826667800539,-0.0280634770057222,-0.0456715026016831,-0.053310120382583,-0.0550466963507079,-0.0535709617911784,-0.0519081872566382,-0.0521986671537215,-0.0541195441232054,-0.0545657104090097,-0.0505545574114228,-0.0386546214294266,-0.0144340353925706,0.0304667016042859,0.116029880529154,0.256917899944785,0.46695115508855,0.735457701074179,0.96422320008713,0.996649464985478,0.860108560889538,0.767459442808216,0.954093387888279,1.04088985675083,0.872382874968945,0.595864442011277,0.355320764248983,0.177021975174088,0.0811696948501788,0.0776834071002971,-0.00713140238013564,-0.0556230220738808,-0.0874207776094925,-0.105117810321372,-0.114838368117271,-0.119270799292394,-0.120289244460097,-0.119392028960342,-0.11644673922172,-0.109659922648624,-0.0965338832323336,-0.0732427679032282,-0.034280546262966,0.0304897780658909,0.152636438412453,0.357242263963914,0.663680638707085,1.07429672978504,1.5179178638506,1.83233166060845,1.94059265274818,1.91046643580756,1.89185448395285,1.68091394335524,1.27134510514852,0.838939541380573,0.49206260545679,0.241422423521713,0.0870744517552374,0.0820094966910391,-0.0280641552855771,-0.0889913894992981,-0.138985587213502,-0.174187889550333,-0.199384378502987,-0.214872026204418,-0.221009337064964,-0.218188488440908,-0.206717280578023,-0.186469467051243,-0.156904559108566,-0.11606857397119,-0.0604351071055955,0.0167260548828791,0.154220404206717,0.387367804406329,0.732746342622779,1.19995964747963,1.7497472934858,2.25671068212761,2.55323614555226,2.56914088106491,2.35864998972436,1.93965736942706,1.41257984627663,0.921534625557058,0.536122071181714,0.25824747755773,0.0709723206367404,0.0701494746120988,-0.0505141516408551,-0.125374207122865,-0.201049688800542,-0.264960292745373,-0.315765944770441,-0.349010568578557,-0.362828922726985,-0.356866356805009,-0.331997385767836,-0.289987060767988,-0.233455462519271,-0.165124891945937,-0.087755945888538,-0.00342984274445875,0.127490259151977,0.351974272515013,0.675245138840224,1.09579781655404,1.58276286153497,2.0465994040315,2.34447772917838,2.38071101213405,2.16541927580667,1.76652619931282,1.29345305639229,0.851175275907186,0.492552584180724,0.231134755305821,0.043289532642736,0.0510929842312075,-0.0718519316834608,-0.167272191038245,-0.280051091169225,-0.387399643772357,-0.477207398832738,-0.537853500484542,-0.563707997162094,-0.552959200338208,-0.507217754930138,-0.431285663941912,-0.332981068245623,-0.222788734634398,-0.114226732079815,-0.0217064308687028,0.0884002124855558,0.27757859051212,0.545352899565016,0.87550067661966,1.23558737963085,1.56425223325791,1.77699532311645,1.81312105276161,1.66921231555133,1.38818965028923,1.0403292454999,0.695429392375396,0.397658694086396,0.178204174401529,0.0154497809871094,0.0285695677402525,-0.0950831862962723,-0.219711060979275,-0.385331003125263,-0.553998167601869,-0.701953933090605,-0.806435728848219,-0.852989467922705,-0.835315863127423,-0.756163397066975,-0.627374144729288,-0.467341450712475,-0.298153919302653,-0.14596665668508,-0.0357921200859221,0.0547459521289806,0.199334810839684,0.405020186594671,0.647886122796089,0.893970345585339,1.10423467221183,1.23710696722286,1.26400977431169,1.18076290613251,1.00573063435127,0.77338984210024,0.525214878379904,0.295685231596387,0.12731197130694,-0.00807855793994209,0.00712356355076151,-0.128352598386521,-0.297170809964248,-0.527174616447622,-0.775782941855168,-1.00845117250316,-1.1836845493306,-1.26700004367174,-1.24004347109355,-1.10701107207852,-0.896480835186766,-0.650025911239827,-0.406713488548048,-0.200566525992986,-0.0556930244272338,0.0347885507317371,0.144690423104059,0.29652397179716,0.46539811903424,0.625192938535636,0.753822651989459,0.832885926806347,0.850532854199052,0.804017261118505,0.699647439361127,0.551886882523292,0.383504132453601,0.218217916739837,0.0939080808528005,-0.02952475837265,-0.01646136825622,-0.179321001358469,-0.399297104873382,-0.697626597063765,-1.04309201486609,-1.39144422536195,-1.67281473232699,-1.81685633659302,-1.78062845111164,-1.56760584056739,-1.23853860107509,-0.87796018022891,-0.547288001478199,-0.278985676369922,-0.0893915581034808,0.0205885769533483,0.11281592850183,0.221166049671475,0.331194802126988,0.429382415058306,0.50523628779711,0.550934252120872,0.561670520769231,0.535834333274467,0.475242062117576,0.385531244486262,0.278333163247565,0.16575154070976,0.0705633883330126,-0.052114377169495,-0.0444275626604174,-0.232504927110062,-0.494468829687529,-0.853703181081213,-1.2966660506597,-1.77043267847749,-2.16992561430084,-2.38552900788871,-2.34917259595085,-2.05082961610829,-1.58636215456267,-1.09872578927009,-0.677525589332572,-0.353660700401266,-0.128663224803675,0.00219770049481119,0.0862841321723028,0.163540372524655,0.231818145956851,0.288321761153144,0.330314019001636,0.355171895363266,0.361129825809662,0.347313325513184,0.314078576393275,0.263294596315782,0.199428484411851,0.12385347041516,0.0491583382516537,-0.0712891082544873,-0.0722594364791145,-0.259863977269885,-0.538318873281321,-0.924396256825711,-1.41621251789564,-1.94412948819519,-2.36393342247227,-2.57496474308467,-2.55905726874801,-2.26203206703555,-1.75419817508374,-1.20345618372367,-0.735389196527592,-0.389318253094954,-0.155610489903063,-0.0180652780136076,0.0589586004015822,0.114555330718683,0.1554053059803,0.184998285638689,0.205269998195136,0.216754437376028,0.219575887433078,0.213426356407607,0.197915116971724,0.17268919093009,0.137467268551333,0.0874999075950916,0.026668788712349,-0.0833024198620782,-0.0884720609139095,-0.243200756413236,-0.494447751261146,-0.8420311182878,-1.27518127480556,-1.68542379450838,-1.89681862371534,-1.91568420111417,-1.94588452431987,-1.83753747663967,-1.52262097074772,-1.07811110536744,-0.666564409789748,-0.359367842813289,-0.154191578783268,-0.0318945731633227,0.0328429816541494,0.0718194388951096,0.0951545489694521,0.108331895471858,0.11516330345381,0.118136381007356,0.119037218511504,0.117997320699553,0.113524494962023,0.103752281323961,0.0860063229693364,0.0541884703931545,0.00573190507635119,-0.0790930309344545,-0.0826178256938025,-0.178857166293954,-0.357760071682009,-0.599008133365519,-0.876098333058995,-1.04463450699232,-0.95733851589031,-0.770198336968675,-0.86308836326243,-1.00024411359023,-0.968206841911532,-0.739099126150069,-0.46984554500948,-0.259090496454808,-0.117660190510586,-0.0318850461687102,0.0130563621075156,0.037316802346188,0.0492632082226501,0.0533194023752463,0.0529103608728992,0.0510133108861206,0.0507276212520529,0.0523752900919038,0.0538161510464122,0.0520348286584654,0.0443463981054883,0.0266973868095043,-0.00813288256029247,-0.0556769701339591,-0.0523234239293947,-0.0813414082644223,-0.163871702889848,-0.267911046640756,-0.37418951913999,-0.389600379293218,-0.244893355004956,-0.125542219611369,-0.133499346955608,-0.300220398542597,-0.387486921179107,-0.317295057814281,-0.204055158736201,-0.113818888565482,-0.0536635098741119,-0.0168197279048844,0.00305661269309525,0.0133463082764011,0.0176997640818427,0.0180216307158278,0.0159934955287184,0.0137549491209393,0.0124726364415155,0.0133071680103775,0.0155180784355205,0.0165055203786879,0.0142770109791527,0.0084363430234799,-0.0102726904470941,-0.0172397261472513,-0.00683805403600311,0.0274129357180955,0.0465945681607622,0.0820853129097614,0.118480630698861,0.123256567327846,0.0336639578483863,0.00693891488396469,0.0919711694133625,0.0956960916713555,0.127608089724297,0.10887551362994,0.0725307150816036,0.0419408785256636,0.0199250480348722,0.00553308573517316,-0.000764219366853351,-0.00385662551610916,-0.00509512946998354,-0.00511974165511854,-0.00441976415615457,-0.00388766193584219,-0.00487730083283524,-0.00593460856924222,-0.00681192019898083,-0.00728146576523011,-0.00698973288055113,-0.00308927768683505,-0.00383931451311912,0.0255129033635389,0.04099371597783,0.132830408400715,0.256013059999386,0.430820191309518,0.612191549439563,0.658184701074003,0.505191380992725,0.348391560757331,0.412823915299747,0.643133432220477,0.685853490569821,0.534883557232596,0.343335010651295,0.192636478391725,0.0895198757361755,0.0247972779288896,-0.00723585169556092,-0.0242985499237347,-0.0320829947609198,-0.0337876124777942,-0.0320365004489894,-0.029685189663414,-0.0290340081520511,-0.0311529763273979,-0.0339644463987969,-0.0343805013495314,-0.0305039660779655,-0.0170879590407557,0.00186196685693921,0.0611190150382523,0.0760156905017571,0.216547838082627,0.435562391345201,0.743516282044503,1.10362053698869,1.37462640895974,1.43505654105137,1.34044948662276,1.38022819520611,1.44984170660449,1.26314169335561,0.913374758320811,0.572772445837504,0.315250204784512,0.139810447172339,0.0318336071957924,-0.0229228111856151,-0.0548173553772008,-0.0722703390161525,-0.0803149814521713,-0.0828786977868306,-0.0827666854124317,-0.0821622504356181,-0.0823530514135888,-0.0815496905252606,-0.0767653132761244,-0.0652598175527319,-0.0407323026917887,-0.00145733951646482,0.0796645148228792,0.0849888811737789,0.255617728303563,0.534549860491014,0.928947792734787,1.42930943949532,1.92654922557396,2.27927949164394,2.36896365246992,2.30539762508825,2.07147739774442,1.63331836607666,1.13132724193569,0.700003495100514,0.378835664716259,0.158451425258984,0.0246839627264521,-0.0469128907978719,-0.0943584074740823,-0.126254521642107,-0.146784931654877,-0.159231160731525,-0.165227037543381,-0.165714513852708,-0.161419521734625,-0.151849811492632,-0.135603092271864,-0.110706804871828,-0.072046836246949,-0.0151685772803619,0.0792385540597881,0.0700551278483563,0.246334996883837,0.533578679971926,0.929621616781484,1.43214921136855,1.96960587460331,2.40326764821437,2.5753194951808,2.46909155377501,2.12754563818572,1.6371504009098,1.12913846900666,0.699494560302244,0.37392909876483,0.147169088521136,0.0105620916071989,-0.0729985793235513,-0.138535297116459,-0.192877231914504,-0.235651789152152,-0.266393199113878,-0.283848317064928,-0.28743785543763,-0.277378954106965,-0.254177939803425,-0.21855732599927,-0.171191912428775,-0.111451882741873,-0.037767544742801,0.0596434294913816,0.0407914381162179,0.202695382642279,0.460197841813016,0.802148849634742,1.21097017667703,1.63584938846864,1.98000767193725,2.1327512911454,2.05614439847776,1.78181882057102,1.38881414722445,0.972262549287971,0.6031335330349,0.311868079743669,0.109083861463947,-0.010858356839475,-0.104934926313917,-0.196018482724518,-0.284246367436926,-0.359571310346686,-0.41422479411999,-0.443458849376195,-0.445886160641833,-0.422453593855841,-0.375712141676018,-0.309612136199942,-0.229298980425539,-0.140411046473345,-0.0535878328373339,0.0452729221946253,0.0162890156241921,0.13474655959135,0.335737023859219,0.589068826765202,0.879213646346179,1.16160824535182,1.38204104125639,1.48610780262268,1.45094116633307,1.28880388694619,1.03923698177209,0.754163585094469,0.480436129064665,0.249729735411982,0.08880063882303,-0.0145118587418659,-0.119576438156669,-0.245421867737637,-0.388552331984204,-0.525996692071635,-0.637513750318365,-0.708199015073455,-0.729087800555891,-0.697417419346315,-0.617050650666882,-0.498740863244373,-0.358257771261002,-0.215041971686652,-0.0895099821791444,-0.00422281328731651,0.0122944712850273,0.146477192115751,0.330237329809833,0.549265322989873,0.78049529215901,0.98685822823523,1.13101342613735,1.182430931062,1.13064440266476,0.985711098075843,0.774456855641477,0.534041351690598,0.304120412073971,0.120742293772799,0.00211531810149421,-0.0933996784996436,-0.224989879145166,-0.394686928564286,-0.573989800107532,-0.734526356508107,-0.852171019859124,-0.909844847429463,-0.899681462100487,-0.823824042748098,-0.694102481572677,-0.529010679430593,-0.350227336353507,-0.181367715177749,-0.0620357759101168,0.0318450512081568,-0.0364645979948746,0.0684677280693508,0.202622919590664,0.392869008498078,0.594148343136483,0.780188424516269,0.926483339557863,1.01210290496945,1.02363581769023,0.958650980899865,0.826059814760053,0.645191351853877,0.443306297476591,0.251978450908328,0.103793861239601,-0.0035111235714633,-0.137617378239405,-0.344738371735458,-0.604240855307005,-0.875596046843842,-1.11407040440099,-1.27770318506986,-1.33616163771132,-1.27807303679544,-1.11527340231937,-0.882268792822396,-0.621245844386928,-0.37424819827384,-0.166227742685295,-0.0127288004937945,0.00365080128555315,0.0991601846574885,0.240581425224133,0.40208816638312,0.560577524569494,0.694086394490307,0.784794513493456,0.820521094549761,0.796896675746603,0.717072154805285,0.591228545171354,0.436215624494148,0.274826136404314,0.133033348734288,0.014914421406272,-0.101451423036778,-0.283465632729105,-0.543710364860107,-0.852457895405998,-1.17408353705807,-1.45570595730292,-1.63869414232308,-1.67840217082131,-1.56098681613356,-1.31226928034467,-0.993686011610281,-0.666347060677276,-0.381055487019656,-0.153534171537037,-0.0198779473168312,-0.0525571595150958,0.058467511406243,0.156347120904682,0.256781283117998,0.347584712393196,0.422331809578762,0.475190998604065,0.501688517182894,0.498933960887665,0.465858115551654,0.40403876470789,0.318869875609438,0.219132603364853,0.116401931496719,0.0104449985947622,-0.12499460986043,-0.353910242058045,-0.6819968495008,-1.09788506693982,-1.5671632300989,-2.00985983987094,-2.31883641225445,-2.40517450584641,-2.23329709520458,-1.84577933187269,-1.36722124475334,-0.90639563913256,-0.521184253425546,-0.230815316598644,-0.0480819694454427,-0.0689911799193726,0.0407567580917416,0.123895202035259,0.191485413747344,0.24517683635855,0.285593700143349,0.311931631249345,0.323352890707012,0.319278690833652,0.299467134782142,0.264571192583907,0.216046439858511,0.154471771271038,0.0805197315870861,-0.0136639436147291,-0.168036258424373,-0.423715975879349,-0.790345952131195,-1.27392621741306,-1.84529461342209,-2.39637145788573,-2.77984907979481,-2.89912396981625,-2.70628072318506,-2.21943891561497,-1.6153010525384,-1.04969267986689,-0.603559812990658,-0.279789879025701,-0.0810085062975736,-0.0909956765158235,0.0154712336821564,0.0797300802401321,0.123521669674983,0.151841518896495,0.170403058321616,0.181384154857138,0.186322559999349,0.185738120827947,0.178822594145662,0.16455098914267,0.141131876007081,0.104896585997756,0.0512853434198029,-0.0294766664128317,-0.180521324121267,-0.428908182085262,-0.79047740112157,-1.27549908869396,-1.8390102224035,-2.32973821159743,-2.59086644960586,-2.66170896729862,-2.56206979579951,-2.16783313339748,-1.61043971674322,-1.0481430588987,-0.604279569286409,-0.290004027028989,-0.0976376953567527,-0.091266752129438,0.000256719064082813,0.0446600996759367,0.0724568072254311,0.0855998682302502,0.0911696648197982,0.0922244865998064,0.0920920114415036,0.0927709907721493,0.0927749679763526,0.089694067988203,0.0804218491296278,0.0605532909232049,0.0244813575579795,-0.0373306252163691,-0.159184275532559,-0.356899695313756,-0.646851878215896,-1.0296878612179,-1.42152408311854,-1.62896847650598,-1.5491045730823,-1.5041669946125,-1.6113176971495,-1.54552114348153,-1.24300540878346,-0.838852590392213,-0.492404331866825,-0.245672708333504,-0.0872425641533355,-0.0702475412725812,-0.00337274607988907,0.018073198335443,0.0332703026449447,0.0377144265783533,0.0373019894994615,0.0341393873416944,0.0317147419999688,0.0324779681827901,0.0351254216884544,0.0370671333244793,0.0350919045960321,0.0262360870299477,0.00692893296332963,-0.0292658717254831,-0.102351557303013,-0.218720185840034,-0.388677859173831,-0.604184495969944,-0.772867745632601,-0.723030271434373,-0.463636702143244,-0.39147033072119,-0.567639245549933,-0.740762726296181,-0.690601908467329,-0.487124988025213,-0.290257251423573,-0.151275721211401,-0.0476350080703851,-0.0302181354502608,0.00294974896112362,0.00214579886864791,0.00657483065219266,0.00692947522957794,0.00638998023377406,0.00538886143333606,0.00419511333138963,0.00306776069156657,0.00372772302150365,0.00455616892486937,0.00453071123990935,0.00309834918649513,-0.000449798744364878,-0.00765302733380604,-0.024103056667521,-0.0493738730853404,-0.0844744335995271,-0.125889693796284,-0.146544891155261,-0.109072501277605,-0.103910561884869,-0.00841154860565719,-0.038783936313535,-0.14079117358653,-0.136471910903673,-0.0954008479536493,-0.0548809191637962,-0.0327391036921893,0.00617542705856519,0.0177560341902923,0.0100112705400478,-0.0110612463312752,-0.0176166758434225,-0.0200870839974566,-0.0189172163368585,-0.0163719701952576,-0.0154441040974709,-0.0169163518120469,-0.0194319464904345,-0.021752386911651,-0.0214058542293252,-0.0165257325205227,-0.00497743035573787,0.0173388040818574,0.0585501066818641,0.125547995952394,0.226077606621417,0.352320831377248,0.43068001959857,0.333589345974453,0.147770462537271,0.139661753198932,0.272279461201226,0.433183919414247,0.41600274052262,0.297498339128088,0.181481331437801,0.0894106857546844,0.0572575466202984,0.0610726008868725,0.00756351463804046,-0.0317486837085264,-0.0516743411714488,-0.0603675528211209,-0.062421576988183,-0.0608248685479364,-0.0589480919796178,-0.0592513983484121,-0.0613926968628653,-0.061818423146756,-0.0572222759801458,-0.0437388415669313,-0.0163786240468461,0.0342931205147959,0.130659154722687,0.288931584190784,0.524690242694071,0.825609004543122,1.08092351339649,1.11552280682623,0.961770547902476,0.857698725629654,1.06726940194481,1.16629415675244,0.979042243304879,0.66945332200192,0.399485529032963,0.199185527218294,0.0914830741254157,0.0877706120234562,-0.0079163230815899,-0.0626867336795623,-0.0987048428589272,-0.118836686804001,-0.129972665641191,-0.135120410840671,-0.136339812182419,-0.135291764252523,-0.131856237340512,-0.124051667114561,-0.109089017576563,-0.0826795359809399,-0.0386236732469144,0.0345351817754221,0.172232843517071,0.402227074157428,0.746403753175224,1.20701454060567,1.70333909513201,2.05350640932136,2.17301934520632,2.13889150158458,2.11968316634013,1.8856346547069,1.42798262793355,0.943273471940884,0.553783401577963,0.27209887988135,0.0984866992107917,0.0929355404479178,-0.0313174936894243,-0.100108217242298,-0.156724839928726,-0.196680853914686,-0.225326416819785,-0.242951086282861,-0.249943383428538,-0.246734754990401,-0.23367609860618,-0.210650409933217,-0.177081617951036,-0.130802814233091,-0.0678864056079554,0.019295391732745,0.174486377898831,0.436788963173488,0.825041601805723,1.34999670288718,1.96675742761904,2.53432228078232,2.86562409526734,2.88321907187631,2.64820636812722,2.17937869188106,1.5884489027585,1.03714052802938,0.604046253891825,0.291594367955804,0.0807335213560171,0.0796963376553026,-0.0564919831878076,-0.140968776271087,-0.226592543084534,-0.298970692144577,-0.356512788393015,-0.394162874207489,-0.40981290526213,-0.403061923649505,-0.374898286035422,-0.327320325798483,-0.263303016837602,-0.185945031350068,-0.0984845486752489,-0.00327797288630864,0.144657160260938,0.397512887917201,0.761128350614481,1.23429382652665,1.78190337081838,2.30306609057151,2.63740064474585,2.67785182810212,2.43602210947839,1.98787469137583,1.4561260363732,0.958816742386981,0.555548931614161,0.261488280064627,0.0497689800548181,0.0580179635682989,-0.0805076224786162,-0.188212133416601,-0.315639288140149,-0.436944934270769,-0.538438621376795,-0.606989207670369,-0.63622213675729,-0.624078312403271,-0.572377279091822,-0.486552536755508,-0.375441128005795,-0.250874654622776,-0.12819440435059,-0.0238706515110631,0.100487591540076,0.313934154685241,0.615303297267123,0.986970862826909,1.39246849322478,1.76262953068457,2.00217905514784,2.04274943287185,1.88056608640936,1.56400028664925,1.1722439996097,0.783953781209687,0.448883268921133,0.20189664784892,0.0185066960644972,0.0320551481429806,-0.106619192589726,-0.247361877982227,-0.434315537405246,-0.62462458483338,-0.791607134786928,-0.909582291645973,-0.962173153499261,-0.942232000170197,-0.852862989004203,-0.707471763153282,-0.526865972809156,-0.335925055911522,-0.164218894650355,-0.0400407025690277,0.0620883498436738,0.225334398749566,0.45702510848983,0.730708377599787,1.00814634370716,1.24532464244985,1.39522790470406,1.42554411225353,1.33156224569803,1.13406707879095,0.872048487172768,0.592317548417405,0.333800593258799,0.143696732662699,-0.00865961761705878,0.00771071587894557,-0.144709855722258,-0.335239955378919,-0.59420440097864,-0.874326228995379,-1.13661924255059,-1.33426609165713,-1.42828799221383,-1.39792175787421,-1.24789445628009,-1.01050349928332,-0.732745562053827,-0.458653158937453,-0.226526050112826,-0.0630189362026216,0.0390445918757921,0.162963532955518,0.334338842297506,0.525000441198085,0.705408010471495,0.850677039645398,0.939981610732824,0.959900543203949,0.907330852424349,0.789434267011287,0.622606441385958,0.432543756275198,0.245894400774579,0.105450615224959,-0.0330056415260156,-0.0195048904632481,-0.202977295368853,-0.450468591693262,-0.786075129418188,-1.1748896915119,-1.567080872647,-1.8839374960564,-2.04621631620209,-2.0055413345028,-1.76575105075218,-1.39524912046226,-0.989317491759437,-0.617167187154458,-0.315294549791141,-0.101452063719067,0.0227555010839102,0.126788699359248,0.249281131103548,0.373712932296923,0.48473661139169,0.570507746592093,0.622180956332889,0.634315814187323,0.605091777067787,0.536574150428595,0.43514893484275,0.313962970371207,0.18670539988292,0.0792168907210308,-0.0590315319833195,-0.0508892203159509,-0.262829210543444,-0.55742615153081,-0.9612953387588,-1.45927075418676,-1.99169046236768,-2.44042496543259,-2.68255832182843,-2.64196827208766,-2.30716770763058,-1.7853935067604,-1.23714359881368,-0.763357227013605,-0.399161815621203,-0.145803819067258,0.00205189573239494,0.0970192295500543,0.184385041498434,0.261711712231061,0.325721270299513,0.373297240072129,0.401459694911154,0.408208527901066,0.392554893001828,0.35490158959261,0.297361815486602,0.225005734112207,0.139462258669016,0.0551390454013315,-0.0808244578653877,-0.0820019952997195,-0.293195468104406,-0.606234492245168,-1.04001153085146,-1.59212882798856,-2.18397669254492,-2.65374008897831,-2.88939860410884,-2.87178081256324,-2.5398738488752,-1.97131394347045,-1.35352235690821,-0.827683611127478,-0.438725307821353,-0.175858942110655,-0.0206255589370808,0.0664214986338691,0.129314300168231,0.175621274456805,0.209231281173943,0.232291260013787,0.245369496698383,0.24858028249525,0.241572231030574,0.22391552997756,0.195227979679773,0.155237752347743,0.0986335185702122,0.0299310323626068,-0.0942178912591548,-0.0998682730341203,-0.273878998348904,-0.55619665274948,-0.946448134460529,-1.43201128343596,-1.89053915437875,-2.12529108910954,-2.14492977507178,-2.17910643628148,-2.05932367706205,-1.70839328680319,-1.21098727056677,-0.749348733234265,-0.40436801068107,-0.173783336497214,-0.0359302182542524,0.0372023107758476,0.0812819797498111,0.107743914910592,0.122765404334375,0.130620788700589,0.134088023918834,0.135140478553858,0.133897229919524,0.128704164793093,0.117509572614766,0.097320964620695,0.0612728202284271,0.00653067958403431,-0.0891739420836108,-0.0929205305475656,-0.201037125240912,-0.401980464121575,-0.67273277809984,-0.983045744833824,-1.17054746439329,-1.07120940232211,-0.861136819051253,-0.965460824081332,-1.11977157282573,-1.08533833840131,-0.829470054856235,-0.527684414873505,-0.291141757687995,-0.132296384218905,-0.0357032823384545,0.0150191021300974,0.0424266380816443,0.0559609230985625,0.0606051977837376,0.0602190518839263,0.0581035939943725,0.0578053274111646,0.0596661230037117,0.0612260791482365,0.0591247480560421,0.0503782363940592,0.0304047421586579,-0.00892241055496775,-0.0625336305241293,-0.0587103193242531,-0.0912645881430694,-0.183965954353711,-0.300743642600586,-0.419744941490668,-0.436432928298914,-0.274053303640801,-0.140661829175684,-0.149242059345394,-0.335997604337286,-0.434233177778412,-0.355892202838174,-0.228967363092657,-0.127718913625117,-0.0601903596008302,-0.0187268041929217,0.00367076576776536,0.0152690126091645,0.0201848156067491,0.0205513298926057,0.0182331542001295,0.0157004819583448,0.0142312977973139,0.0151784558293459,0.0177212274039752,0.0188752210909894,0.0163739371343406,0.00977434402533254,-0.0113377573457214,-0.01922422938954,-0.00763978251473078,0.0308816784181073,0.0523934900596738,0.0921791964326505,0.132854490370105,0.137966550005851,0.0374784215306004,0.00772613498037567,0.10310874745434,0.10694621072931,0.143067135221407,0.122353533855596,0.0816171521089451,0.0472284119130502,0.0224748950863296,0.00628021813747329,-0.000846906065580596,-0.00434832110454619,-0.00574945231356705,-0.00576308902974542,-0.00494449364448941,-0.00430808405094964,-0.00544635090256504,-0.00661924367869807,-0.00759803891875603,-0.00813716765084529,-0.00780273392486,-0.00341418972713514,-0.00427016149453147,0.0287489325662357,0.046154970184,0.149392829040658,0.287702487932095,0.48377157359605,0.686660703582071,0.737049899029041,0.564800189985723,0.389302683342673,0.46137979897138,0.719715207557579,0.768938775872433,0.600550576758361,0.385799740548503,0.21656709523292,0.100728694292518,0.0278878221774728,-0.0082616658576549,-0.0275243525030388,-0.0363338395331795,-0.0382677019584914,-0.0362969347183057,-0.0336401638030116,-0.0328839605035736,-0.0353107958177215,-0.0384888051236153,-0.0389303168219384,-0.0345247863383982,-0.0193753183914423,0.00201978501665876,0.0687709264459912,0.0858006283374574,0.243818966328206,0.489840101038594,0.835383702647767,1.23856086015716,1.54047019665492,1.60618893881607,1.49927694532454,1.54413231041266,1.62409096278006,1.41710604153406,1.02601853866615,0.64400048025061,0.354768591685739,0.157599063104167,0.0359545759920277,-0.0258700451454671,-0.0619148553767236,-0.0817320873931393,-0.0909455918241052,-0.0939754228154842,-0.093935007497813,-0.0932461195178818,-0.0933973981865942,-0.092383309803747,-0.0868666519948012,-0.0737790552907173,-0.0460304614097747,-0.0016470886196589,0.0898189022198648,0.0963167067538058,0.288285855971464,0.6018780309657,1.0448581055553,1.60605956483568,2.16232654627083,2.55577153414186,2.65517637541537,2.58469118689856,2.32440733147416,1.83464404039096,1.27204671237463,0.787811316926735,0.42691126039975,0.179053305679757,0.0281362540208624,-0.052718200404716,-0.106344501592341,-0.142545131346587,-0.165908879289149,-0.180131249879305,-0.187014937859566,-0.187590561565385,-0.182667507979717,-0.171722788964318,-0.153211167249172,-0.124940696271443,-0.0811767115952488,-0.0168735679624155,0.0896442625521793,0.079873715581144,0.278293962051689,0.601472995461036,1.04689993451759,1.6117216927374,2.21501436592338,2.70112541119199,2.89360043320312,2.77453358337225,2.39173788396647,1.84147602808919,1.27088997249174,0.788001558461239,0.421968909852456,0.166765502657157,0.0123854145973045,-0.0819704139493755,-0.155999024452125,-0.217585105491138,-0.266089242445908,-0.300962538667078,-0.320758288565909,-0.324826001038909,-0.313407823881996,-0.287082015134861,-0.246683515511266,-0.193004277646356,-0.125392585479415,-0.0421266336090137,0.0678041754046687,0.04714181250772,0.229559665700939,0.519462468627567,0.90410409722996,1.36439380076408,1.84246816782983,2.22958689893449,2.40121029515869,2.31488578161017,2.0062118412771,1.56400066770094,1.09529504154385,0.679995006721205,0.352457679217761,0.123955811207491,-0.0116451514946981,-0.117835747052856,-0.220715799245152,-0.32053973292646,-0.405753759319202,-0.467595423965975,-0.500682162058737,-0.503440167794723,-0.476937782774546,-0.424060926081851,-0.349277769630553,-0.258409449513921,-0.15786658040985,-0.0597714317550002,0.0515645232823517,0.0190515054874616,0.152441806906656,0.379518535693769,0.664367631549563,0.991286004293591,1.3095378649206,1.55803128626222,1.67532318867468,1.63561711246843,1.45278073581662,1.17145535547797,0.850246417693922,0.541983667352977,0.282248467722218,0.100535334436645,-0.0160102194121645,-0.134404124732287,-0.276446123887207,-0.438050443181533,-0.593209101949826,-0.719122753635012,-0.798962534764054,-0.822567068691738,-0.786797665370124,-0.696023038700963,-0.562409608173323,-0.403759916467536,-0.242020014478001,-0.100370847241251,-0.00449998494255504,0.011759322361064,0.165176206372331,0.372916052813589,0.619565797436318,0.880320195728999,1.1131487406802,1.27583274363283,1.33382579247064,1.27529778926505,1.11166088152604,0.873295905655057,0.602198095039741,0.34307634513146,0.136383452093209,0.00253344747142799,-0.104782379860888,-0.253220489238461,-0.444908769524038,-0.64712930409238,-0.828274557990128,-0.961073761422173,-1.02619691815593,-1.0147250650194,-0.929077691615234,-0.782650043236757,-0.596363505295968,-0.394745214192883,-0.204103003464261,-0.0695533539696458,0.0359315916164279]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1106.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1106.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1106.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1106_field1":[16.68,16.68,16.68,16.68,17.0310426744492,16.6799745949136,16.6799745949136,16.6799745949136,16.6799745949136,9.51652122119583,9.46230663478847,51.2130316535583,16.1543104724215,16.6799745949136,16.6799745949136,11.8356914265765,11.8414887624641,33.2456820035183,16.6799745949136,9.82083263390732,11.1151219209905,16.6799745949136,13.4207917389555,16.6799745949136,20.0937965705124,16.6799745949136,12.4916598916848,18.8436837527367,12.151437819126,16.6799745949136,10.3127258973688,10.2321870752078,13.5307583699193,10.2130131270948,16.6856476711839,16.6799745949136,24.8872342672165,38.1883415078633,26.7252534384593,28.9258916242888,17.225115241863,23.2113731855523,16.1389741873894,18.0713414560429,15.959168750259,34.7599029588635,58.3703800024914,16.8107155307197,19.8210555213214,11.0334143478165,22.9095723302263,30.1527465871619,17.6915857754847,42.9592668499097,18.0227167435004,15.404411813211,14.8783427812404,16.6799745949136,36.6460058227677,15.8144601342476,13.2759083280119,18.7532913104374,15.9770450105349,16.6799745949136,10.448820831486,11.6086739819285,10.6084017925428,34.9941860462915,16.5051756951493,14.9914754085382,19.2872583610287,17.760694862381,18.2009383070532,16.6799745949136,12.5684663888079,33.6230629091096,48.3877192607199,32.0382593247743,49.1968826921203,42.1289066867659,16.8757151563388,16.6799745949136,25.2620044004732,15.2633766870003,17.0946453786902,16.6799745949136,10.7831494567014,12.2649377905583,25.8452757318549,15.2309400288836,12.5807425936403,16.6799745949136,21.0330220120825,9.6045226762513,10.3788752807789,13.5970657848268,14.5579098969625,11.4520903409874,18.3404052884598,16.555542018656,44.9653270506379,28.7715193416957,26.4555285336172,13.6561394394675,13.226428606009,10.6129266681908,9.94672431014822,17.1103629199336,9.75353610816625,13.8117023066287,11.0476242214041,11.8329668873749,32.4277608560615,12.5495678501228,12.4787319843596,9.79964786518166,17.8714023357606,15.6249882551019,15.0529407005268,52.5524653595703,16.0628800232085,22.4199132831513,24.4460360099527,28.8462439283821,14.0216842406393,21.9665499535515,14.2323712282428,35.6284538562091,45.9502073452102,34.5836973752128,24.9941155356273,11.5714310315218,42.5047871079629,29.2838041475489,14.9124608827706,16.0689327005867,16.6799745949136,9.50432320143927,16.4368172663047,27.0851953281842,11.0819874335419,17.4052309850925,40.2800142316742,41.7152700228523,14.1867047217926,31.5529194951067,21.2345113173634,15.407475058164,13.5449284743231,16.5135193260199,20.8273862691908,16.6799745949136,20.8218077771954,16.1176393270769,10.7824517970897,13.996299087097,11.4097764964796,17.9145613974661,10.2938300329265,12.5204751924097,13.2617712629388,13.1280182430713,15.6697855343914,14.2977738151186,16.3840510525333,10.5061019964528,25.7162626475189,10.7918496007955,29.3065753551722,13.249148275237,14.6717107631127,15.5367863679032,18.2729691334831,24.7469327996715,16.4867812837271,19.4278236641716,16.6799745949136,14.4982158987817,12.1006419167506,16.7285289637242,16.6799745949136,26.1535934136005,11.070042477773,16.6799745949136,41.364142543589,10.1289470674707,16.9142544608828,41.7573289909459,14.592537984681,10.0615659450925,12.0989996317121,11.3252955638075,16.6799745949136,15.023580799185,16.6799745949136,21.0646273408523,40.2518178316967,41.2536964748867,29.1470692224745,16.2012854022054,16.6799745949136,28.2159814473711,11.7034409953104,9.69254172187512,9.60421356643226,12.6686426477038,47.3477376546038,30.2196251971671,26.932380954788,15.5372813803429,12.5546113992192,15.0507319203156,24.0874068751882,12.0948969759051,10.6845293751521,15.3117657272132,16.6799745949136,10.755485559021,16.1468426809357,16.6799745949136,15.4794419870003,16.6799745949136,16.6799745949136,16.6801396235327,18.4669783336176,26.9685925998814,28.9666683467738,10.2630644196284,16.6799745949136,11.6858252199672,15.8269370265755,16.6799745949136,16.6799745949136,14.4209428128081,16.8668107983422,21.660364689388,16.6530851386857,16.5279353623058,11.3783954154826,16.8005489582256,11.8046217705124,18.1733544036749,19.7534467016766,12.3819045993614,9.76254928209645,9.73198767929937,11.2228785145528,16.6799745949136,19.7160308609534,16.6799745949136,24.3734780236912,12.2686415380405,46.3984492459578,21.4523625287824,17.288166721324,18.0599142815954,18.1217838860422,28.7257299292411,31.6542682891261,10.8189841776842,27.7249868035384,32.2967701113956,51.910291255557,12.4560865851946,16.3719934557126,11.7264169445364,9.43947519659865,13.9922683934674,29.9839236745729,19.8299582250562,27.8029318342245,16.1914036732741,15.055941022097,11.3080117650873,18.6058598789646,33.0666532756246,15.1072140812782,14.9886426745709,16.6904076573538,10.8023316798463,23.3725517876801,15.8157082561725,12.6521458169668,10.3206542865773,20.2823075019265,17.0636814455046,15.8595242221228,36.6367095070103,14.6970832381883,18.0472235206581,26.8143145763674,50.2787656553937,10.422616649385,15.0845286567068,10.440700973063,13.3470339420094,14.3793349937027,46.4104437093691,25.3834964783322,26.7513687050278,46.8693991183103,21.7456499149079,12.3833107713928,17.4644223784493,12.3651276988189,14.2651836037062,12.3020542461232,25.4884553360124,16.3917436328096,34.6300272419828,15.4684532991443,12.8008994656474,10.3015005317668,9.68059825251629,16.195619417417,34.7434390634272,22.6658263936881,18.2078319466449,10.102490193644,15.9038837890633,13.3320969350136,11.2568633622155,16.6799745949136,17.7229646409139,14.0138415779015,44.6843793379715,35.1850466353227,17.1501640896153,19.4734690732855,16.6799745949136,13.8415451314089,14.2342563757046,10.8619783944819,10.9651717367964,11.7328450136458,17.3475374246487,33.9569486148879,49.2441882668516,13.6963977240983,16.3337348141571,16.6799745949136,17.5651320840511,16.8988175885502,25.4033555737776,24.2381535796278,19.6742824716975,41.3099025307647,44.3627281696177,47.6795227517909,24.4095436700881,15.0292892339572,13.0735223974484,15.3187592998932,15.3842823232401,16.6799745949136,16.7392969359191,11.3314259706453,29.1270258906552,10.7040207828539,33.2362519355233,14.4171318666125,17.9797181394587,15.1381939118793,14.6993380661316,16.6799745949136,9.92566828734968,11.8853852598384,10.9499686642067,11.7718310884815,16.047291450195,17.4905799087504,16.3138530876638,16.474277086825,13.1554094801954,21.2398885343939,10.9278943324366,16.6799745949136,16.6734235894679,11.8722710921814,11.207676859115,16.6799745949136,16.2231361000262,11.4705252691372,16.6799745949136,21.8555765641854,21.0680606901292,14.8116970890944,10.7761374146286,23.1420289081551,37.7799386571138,15.6265881947676,15.2461016833944,16.6799745949136,14.9561537031748,9.21342015200763,13.3041684827402,12.9976833594286,21.9238227147199,14.7016816449212,16.9845181240317,17.965248060659,16.6799745949136,31.3493589653832,23.0759552492324,18.4384902076679,9.60105253769585,22.5408270711948,21.0177044830613,19.7043033049163,10.2158530147461,10.7733580814451,10.3503052381425,15.3565242666625,18.6412651134046,16.6799745949136,16.9065449356295,53.9157797246606,16.6799745949136,16.6799745949136,28.5340348648667,26.7785081572403,16.6799745949136,16.6799745949136,20.8911501093794,50.8863097555594,16.9793586279507,17.0071875180363,15.5666929137232,18.0136750036296,28.9081631176831,18.4881598177744,17.0854465036462,14.8386856417101,12.2314490069607,16.6235515637426,20.0271149874043,13.5660641520865,10.0701059817066,30.8842283564004,11.3289881138985,23.4585198403816,15.4366564535704,17.3365089705004,19.3865882428957,35.0050161155571,14.715368111009,10.8539391162683,10.0130702521174,15.1566728824264,9.81007318420445,10.7866789858514,16.6799745949136,10.2785477527395,28.5250071042206,11.8660226317654,16.6799745949136,12.9472578353936,16.6799745949136,11.6197328422087,16.6799745949136,16.6271783726063,34.3566516586758,22.8091196234718,16.6799745949136,20.0953896773579,16.6799745949136,20.2111118115095,44.0377902987012,15.8329384277873,38.0020454606419,20.17279294444,48.8943347625018,15.1219342803535,16.6799745949136,13.1915743913554,16.6799745949136,23.6928527366808,16.6799745949136,32.1037612436912,39.0812338485459,48.8825366029221,22.6234985257246,16.6799745949136,16.6799745949136,22.120264970767,16.6799745949136,54.6751763783021,21.808901748252,14.8932277419236,48.1168130765849,35.7250751143466,17.6730939079273,16.6799745949136,15.0324158183135,16.6799745949136,9.5672160181175,14.5051225330851,16.6799745949136,8.89324871043858,14.1104658798913,16.6799745949136,16.6799745949136,15.6825233202104,16.6799745949136,12.5591710178464,16.6799745949136,13.8830471721032,19.4780761715032,16.6799745949136,16.6799745949136,28.0487141966516,53.2439195359473,38.6424041073614,9.89532516386627,10.7354586933463,17.8458215392875,20.8407067664427,14.5421577394264,15.0295628929682,12.8857373009655,15.4202851710203,15.2740252821311,31.6949796742574,14.1691061178536,16.5479867850943,16.7370487568678,20.3544347826474,16.6799745949136,49.3642543977865,15.6897621882429,16.6799745949136,27.2034247258523,54.4352022096391,27.5316431748456,14.9543439989685,21.65099793075,14.4363947724453,16.7185586294851,17.2128922197896,14.7923338618943,16.7220881147198,10.6418268027253,11.6401241765864,14.12942506287,12.9190232730408,10.9739126014294,9.48991608274575,10.4957649207111,14.6357997629345,10.978815829767,14.8495353063286,14.9040725913218,38.08746159414,16.4578954615543,22.3740524882012,16.6799745949136,20.0333076699456,40.877780428754,24.4503531630626,14.4419656261254,16.9680165228712,21.8970952471551,11.7711835611493,29.2128107306292,12.8016726447166,10.5021160020799,13.4766304855136,15.1807982644487,22.7655554571184,46.5478121375576,40.1120126852186,20.55792425641,10.3736058573844,24.313724052881,27.7499245236142,39.6819969931175,25.2320005069362,47.275583309577,28.6204144144236,46.9914612738447,18.5151076002583,30.3086000964479,12.4414562007676,14.3631886122999,16.6266496636349,17.2244237542105,18.9669251270364,14.6757150463338,9.44742371553497,11.3383879760282,10.5405979515233,14.3484365748953,28.8242185514757,15.8069425319017,13.1254222822063,11.4134939073674,14.6117563633612,18.6808685168306,16.6799745949136,15.2322403799162,16.6799745949136,22.7990455479605,11.0725951238592,11.9341291754428,9.90689149266778,16.6799745949136,17.3052261824036,14.8525988450573,14.6429368506994,20.5647137260658,16.7153116716194,16.6799745949136,13.4719569551344,16.6799745949136,16.6799745949136,8.75249921300035,21.6197342793757,11.6204208385461,16.6799745949136,22.1149381191102,36.345942721949,12.4038753717731,27.2017619873055,16.6799745949136,42.9616701963138,43.7271580865719,10.629791545563,14.4729459466722,9.50744974983747,46.2169290375797,19.8396094842898,43.1396427270044,16.1258154980676,11.3876932965908,16.4290496529341,18.2044876349116,15.3547560010257,18.4741179597034,12.5826288245888,16.6799745949136,11.50240510621,17.3400125428081,16.6799745949136,18.1153201604193,16.647456552402,16.8014299170444,33.0941178381348,22.6489236213443,31.3869988443175,15.7870448515173,33.0287537714098,56.6485015853562,20.0716867107712,32.9688550023739,20.1536424750575,17.7313132873041,13.6527748895457,21.0646436852873,12.6436974624335,12.4650581066009,26.1262752809529,23.0050294646525,26.6928378805478,37.0490374944543,56.3503652275569,22.3742761711275,30.8829621878868,21.527691028197,16.241650360888,10.9502203982626,8.55642857829392,14.6977045575264,34.4223004618594,32.7986036117885,47.2854714293531,17.1387447210272,16.9524127007237,10.8600546229852,13.85281929964,11.2183340126819,9.47394145411439,9.7619145607584,11.085296780546,11.3306072671437,16.6799745949136,20.0696811645878,11.8811867049769,15.9467795736504,16.6799745949136,16.6799745949136,11.3512644089626,14.5799659855001,8.71451174526761,16.6799745949136,14.8797296382566,14.8256260796882,18.7102773046545,16.6799745949136,15.7532983501731,17.0398025782103,16.6799745949136,29.0257092789976,14.0970319968275,11.0122464314697,16.5471814641849,15.6440342635886,16.5479822261348,16.6799745949136,16.6799745949136,33.349529584534,19.3041054019602,23.6222845682793,16.0132997234858,27.4660626978408,55.2421264902007,16.6799745949136,7.82717324611379,16.4885650236076,11.3654313583581,10.1100645798399,16.0585892721627,16.6799745949136,16.8927443442277,16.6799745949136,26.1480962762046,16.6799745949136,14.6480653859239,16.6799745949136,13.6039360330994,13.3652965692731,10.345930166017,19.5002888754052,16.6799745949136,13.8203207226802,43.3716710164742,16.6799745949136,12.8135207427285,16.6799745949136,21.4217778545947,16.6799745949136,18.9778111621447,24.116980172154,16.6799745949136,16.6799745949136,14.6474111674468,12.3522384496323,21.3404595411862,19.6735318771247,15.1072426118569,16.6799745949136,16.4164142698497,16.6799745949136,27.7263807920277,19.3140783494528,11.3088588329535,9.77833569560199,16.6799745949136,16.2775277618388,31.9328118745371,46.2464412847529,15.3965854464515,15.5561916559894,22.6150420740853,23.6475122010292,16.6799745949136,16.68,16.68,16.68,16.68,17.1196125484306,16.68,16.68,16.68,16.68,9.63088223383547,9.57927315439434,51.1509248711214,16.2526305147964,16.68,16.68,11.9605830813032,11.9688995178527,33.3437282516445,16.68,9.93068217112134,11.2349447080996,16.68,13.6306656632271,16.68,20.383642370273,16.68,12.6358903900384,19.0831290452112,12.2757024416594,16.68,10.4432807037554,10.3446754480171,13.6549283445466,10.3541870889473,16.9085085489483,16.68,25.0957194684584,38.42287235983,26.893764586588,29.102210959508,17.3671355433187,23.3382073021773,16.3998078741761,18.1737372275823,16.1034692578216,34.9354421611178,58.3320907246025,16.9015321489893,19.9456461382529,11.1621962143307,23.0632445624766,30.2769458045251,17.8209370459385,43.0281476788278,18.1426290745588,15.5172512498946,15.0872689193538,16.68,36.8858356249197,15.9068735578423,13.4365067876181,18.937435160085,16.1897341406182,16.68,10.6058760345895,11.773073379053,10.7328305410169,35.1498738402076,16.694976460349,15.1011189525819,19.4010883156373,17.8932331106704,18.3547493171039,16.68,12.6806739480102,33.8244326936345,48.4142875041839,32.2593160808838,49.186271279235,42.2717306464616,16.9702521926469,16.68,25.4338890063567,15.3929724556641,17.3086984557945,16.68,10.898735480477,12.4243014875107,26.0774753452595,15.4452580621295,12.7317654538993,16.68,21.3126012657316,9.7093472235984,10.508904148098,13.7031502398232,14.7198361287305,11.5817996443033,18.4360818191039,16.756537294599,44.9980806335879,29.0531562029569,26.6517046681789,13.7641361185835,13.3522818793315,10.7279538439562,10.0702849285125,17.2934591130999,9.86736654431882,14.0249209179169,11.1634361559943,11.9499632260322,32.6745987982634,12.7095518214981,12.6107418992499,9.91589056307851,18.0087306050055,15.7103844070142,15.1599353205935,52.5398441141679,16.1628037405519,22.7011121985009,24.6025480979061,29.10256649331,14.1977614536835,22.233395501385,14.3543906855212,35.7772903581118,46.0410067352227,34.7002079345812,25.2513714668625,11.7446184772145,42.654388040279,29.4379376966089,15.0557038010829,16.1903094656749,16.68,9.61974692852209,16.5413451602443,27.2451393660029,11.1941364736091,17.5405792913588,40.341233545581,41.8796099049806,14.335798468716,31.7266076387105,21.4619131717173,15.5205418552413,13.6970516151628,16.6314201016195,21.1516218972303,16.68,20.978350083424,16.2137775825165,10.8889082932837,14.2086660734163,11.5298738912433,18.0768400303548,10.4222713485442,12.6441749509185,13.3630917552782,13.2418651850545,15.8768306398696,14.4257762590185,16.4887030931047,10.6283050355191,25.9199570837541,10.9069654326652,29.4259382672261,13.3869557860163,14.7726280871631,15.6455701741424,18.3937492329047,24.9239155580384,16.700020710668,19.6071665483365,16.68,14.6696809360965,12.3122642308077,16.9358703055731,16.68,26.3356691397492,11.2398489450331,16.68,41.418112236171,10.2537324026014,17.0110603366652,41.8191411704858,14.7090646240249,10.1982337759944,12.2312533470519,11.4255504405154,16.68,15.2155026949393,16.68,21.2585575106616,40.3408504140556,41.3512914403895,29.4667663892713,16.4518738178723,16.68,28.3875106966261,11.8213750851594,9.82132902895322,9.72136696899402,12.8839980337989,47.3889327498593,30.4506383833696,27.072653553633,15.7173112751712,12.6894129746964,15.2930273265981,24.3105799635511,12.2662875206747,10.795863315493,15.4286920244374,16.68,10.9628000808764,16.2461908934519,16.68,15.6974161403067,16.68,16.68,16.8290670042649,18.6000876691173,27.0652582849876,29.0960003444424,10.5059330504277,16.68,11.871275309803,16.0217189977906,16.68,16.68,14.6254882716247,17.004920011132,21.8222558049051,16.7620406631742,16.6599059743311,11.5088867037206,16.8924278707036,11.9134476260525,18.2758689583201,19.9441886791045,12.5064922811693,9.88128491877739,9.84928591240274,11.3530678288961,16.68,19.9323013202355,16.68,24.5492316528825,12.4607001546338,46.4474984497514,21.6455164574967,17.4687721543518,18.2907761956052,18.2360891577546,28.9679293131429,31.7994199441533,10.9499691361322,27.8459363376374,32.4131921146618,51.920496630074,12.568530088473,16.5078395138401,11.8348757447055,9.55670226312668,14.1195358504873,30.2380592455248,20.0325588358851,27.9412370113989,16.3125754959665,15.1747953481903,11.4254458729114,18.7260152743391,33.2727576667462,15.3126597515904,15.1202126280713,16.9239791022577,10.9283565424384,23.505753078972,15.9328869174755,12.7706654986825,10.4362131674509,20.451520009084,17.1582536957256,15.9563542241215,36.7620933441305,14.8846941279778,18.1664870906105,27.0346844878252,50.2780274724386,10.5448399313159,15.2028651663348,10.5660184159297,13.5114689263932,14.4900470569891,46.4257247919263,25.6502875500667,26.9724228039429,46.9716384924973,21.8651556330086,12.5928093103658,17.602248885276,12.4759975654814,14.3755146975001,12.4153098741882,25.673845767013,16.4861629003024,34.8388762593133,15.6076183760224,12.9105785373795,10.4120978617874,9.79135912140601,16.4285538421689,34.8779001323981,22.8213975783555,18.3690171125201,10.2200385546372,16.0625327430508,13.4591314489784,11.3910026559502,16.68,17.9885735224759,14.2539848364964,44.824902889308,35.4295398349377,17.2581255959824,19.6255044667228,16.68,13.9533467074283,14.3603804961223,10.9706094952587,11.097688073817,11.8672886832602,17.4641566122758,34.0851257656994,49.2787678422409,13.8224584517535,16.4331077295425,16.68,17.7965788464321,17.0381926085388,25.6616154295912,24.3972581526022,19.8133875191855,41.3674869544191,44.4736778424587,47.655364604942,24.534163036942,15.1262850466244,13.1909171207211,15.4255111848473,15.4951922621095,16.68,16.8702291310575,11.4488060921344,29.3261688389779,10.8350940913193,33.4837638946937,14.5682310117176,18.1208653797654,15.3575497848551,14.8686245138939,16.68,10.0393237715561,12.0171320910429,11.0712958531465,11.8900754062368,16.1699393361084,17.7604180080431,16.5083508347231,16.5844881142643,13.2543591679149,21.329931618779,11.0348364049201,16.68,16.7613316940426,11.994425440161,11.3361476154999,16.68,16.3120056834533,11.660727767571,16.68,21.9842508434768,21.2160690947187,14.9452146876473,10.8999625465143,23.2683164228778,37.900903654232,15.7271149504557,15.5189720201852,16.68,15.0884692092973,9.33077079164931,13.4278592074684,13.1782788184402,22.1307317412845,14.8183622141097,17.0845294813477,18.1134384100861,16.68,31.4681782883109,23.3001113465888,18.6605508494552,9.76820903720126,22.6713203794501,21.2201278973305,19.934503019087,10.3438807352414,10.8849504435508,10.4733895514385,15.469690104509,18.7953323549678,16.68,17.0178037215711,53.9905859187535,16.68,16.68,28.6753365150955,26.9204689902654,16.68,16.68,21.0967106416967,50.9245702849314,17.1452093857988,17.079164853136,15.8019118557934,18.1868450660123,29.176894703599,18.6234680058252,17.2160741629894,14.9625976725313,12.3352967440506,16.7138667482519,20.1521057420275,13.6768479568307,10.1872300365071,31.005143016462,11.4606547989976,23.6373037741612,15.534926485611,17.4473635306344,19.6548982427506,35.2508445918747,14.8405532173949,10.9691390684774,10.1237092227733,15.3378766387373,9.93472020946815,10.9202362915436,16.68,10.4076477025286,28.7365104004164,12.0400256886678,16.68,13.1346185788822,16.68,11.8227805328964,16.68,16.7735704086394,34.519808672327,22.9366881564147,16.68,20.2774787413507,16.68,20.3210373036916,44.0930993353546,15.9301533232301,38.2459812138035,20.4132140168298,48.8989192686244,15.3316586042112,16.68,13.3905933944841,16.68,23.9189202732872,16.68,32.2749338277221,39.2584836031108,48.8978043849475,22.8652778251099,16.68,16.68,22.317321341951,16.68,54.6272771043403,22.0279498815147,15.0404841214935,48.2854087051121,35.8346886604338,17.8568728107119,16.68,15.2150491346969,16.68,9.69330409669776,14.81532501527,16.68,9.02228458898687,14.4029503461227,16.68,16.68,15.9886252266892,16.68,12.7547264829051,16.68,14.123221554581,19.6764245736116,16.68,16.68,28.1913751105227,53.2051663467377,38.8401101426397,10.0154742430905,10.9004303067775,17.9883686410813,20.9305268511536,14.8794906937042,15.2621744307773,12.9963296255557,15.5561599507029,15.3653874531023,31.8094946302464,14.3005352560951,16.6341176236031,16.8588902203875,20.514949685947,16.68,49.4768614311728,15.8947423016523,16.68,27.330031200586,54.4361051433044,27.6582263587772,15.086435977041,21.7748346249007,14.5931369169093,16.8208163894957,17.309262683556,14.907734995259,16.8477613230556,10.7612805811285,11.7590454751386,14.3294644514855,13.0906459072599,11.1087025063511,9.60259540841328,10.6184912693834,14.7558054400267,11.1064487174434,14.9588451859048,15.0401741666296,38.2362395623777,16.533381906333,22.5226445306734,16.68,20.2197248720214,40.9183559420338,24.5882132315462,14.6591195740007,17.1012156797244,22.1822678584891,11.8823421114795,29.3958486509643,12.9120730781582,10.6096655629636,13.5793328827134,15.2925551255401,22.8917419330865,46.521979140636,40.2533032140351,20.7020837104634,10.4926422469411,24.5550579809127,27.8751353558451,39.8945542541069,25.3903246336882,47.2797709254527,28.7490042780819,47.0063531896082,18.6420194687483,30.5197862697798,12.6078899734522,14.4788841449259,16.833456401404,17.4149211932805,19.0935656430251,14.7864404892203,9.564234350198,11.468836237092,10.6692098900067,14.4626638897418,29.0284023309444,16.039304380547,13.2863367951858,11.5442832853085,14.7196103773437,18.7959196606681,16.68,15.3972693449236,16.68,22.8979909253726,11.2107473908155,12.0515184411549,10.0318762810328,16.68,17.4861994121096,15.1463782543372,14.8470548336017,20.7383967399675,16.8747173893189,16.68,13.7718772841801,16.68,16.68,8.88081943212573,21.8257434663288,11.7952511938406,16.68,22.3490416143113,36.5369395597608,12.520113407057,27.3780700736778,16.68,43.1068448292317,43.8435511518829,10.7575506762136,14.6021612570053,9.6235889698602,46.3314834924755,19.9909094319036,43.2632789364467,16.2711395043238,11.5291008424446,16.5347761092595,18.318650876811,15.4468512278597,18.6076688543655,12.7323276401551,16.68,11.613769332041,17.452832634159,16.68,18.2405743270923,16.7771587413018,16.9016656782052,33.3000495470463,22.8664612474737,31.5245776355332,15.9896570696276,33.1067961544822,56.6952446114496,20.3480269429534,33.1482871777016,20.4656080102268,17.9111023409335,13.772208185597,21.2911286695812,12.8147810886582,12.5720672966312,26.347012049401,23.2614897105575,26.9469994421344,37.1367202613524,56.3166583162678,22.6195153128476,31.1495596287235,21.7200226925979,16.4694766311997,11.0780451852402,8.70417231709876,14.859352019795,34.4713568055059,32.9789242676424,47.2865669176869,17.294314992123,17.0428590135859,10.9703256408311,14.0037350156311,11.4018794456661,9.60898872310266,9.85931424441197,11.2083836333949,11.4495451610741,16.68,20.2267394210693,12.0342678648978,16.115405582774,16.68,16.68,11.5617593644752,14.8229524141333,8.91258463112272,16.68,15.0415725195308,14.9532109361444,18.8502962462678,16.68,15.9619172156261,17.1109353987676,16.68,29.1946551432818,14.2353981334369,11.1303535033081,16.6582441836308,15.7516805979239,16.6359778093526,16.68,16.68,33.4786649935383,19.4382942613032,23.7775963212673,16.1301653342824,27.5663498316602,55.2728814679094,16.68,8.01113332653748,16.6544300551453,11.499297617173,10.2264582879035,16.2841683217254,16.68,17.0423831545369,16.68,26.3518236740826,16.68,14.8633105766152,16.68,13.8165235748739,13.5212301216511,10.4863362967044,19.7055830988944,16.68,14.018059289639,43.4752162537145,16.68,13.0149465572294,16.68,21.6397349408174,16.68,19.0895836758712,24.2693565041965,16.68,16.68,14.7606167029619,12.4915782216683,21.457629298054,19.7809513111943,15.2848614830867,16.68,16.4740781502938,16.68,27.9028336808313,19.4118067442765,11.4338551572309,9.91686798819907,16.68,16.5037492268106,32.2382330812155,46.3270510031346,15.5449629220824,15.6885105758053,22.7322877963259,23.7965128887144,16.68,16.68,16.68,16.68,16.68,17.1878179247709,16.68,16.68,16.68,16.68,9.7131208549951,9.66385568690105,51.0935520997628,16.3304443335865,16.68,16.68,12.0573404493964,12.0727127812,33.4272803587699,16.68,10.0133084514543,11.3268499868004,16.68,13.8044575303033,16.68,20.6254540216226,16.68,12.7530396271194,19.2881888572603,12.3704831730184,16.68,10.542309980128,10.4248801448846,13.7521756681246,10.4634607522931,17.0928947005808,16.68,25.2585640667964,38.6380079572717,27.0503301505777,29.2528038519459,17.4813163945318,23.4455780115054,16.6045580159683,18.2564960655797,16.2182098318524,35.085378114673,58.2894923328226,16.9727483690006,20.0455833574762,11.2620283837176,23.1789455890209,30.3836550640429,17.9221407093141,43.0774938977978,18.2333339752936,15.6051341686509,15.2591768711411,16.68,37.1017844050947,15.979919904356,13.5710119882833,19.0912181199096,16.381598944648,16.68,10.7049948997449,11.9227782614367,10.8264437071415,35.284493344401,16.8491834268493,15.1866226402526,19.4931575624961,17.9971229308341,18.4783358305878,16.68,12.7660439942202,33.999598393917,48.4403005742682,32.4479785514491,49.1720083750601,42.3921904015004,17.0412556072681,16.68,25.5827706602078,15.4957074461394,17.4835115218447,16.68,10.984082767218,12.559325948896,26.2850427036369,15.6253597333831,12.8553612605642,16.68,21.547291787598,9.78115823313377,10.6092975485254,13.7842271279009,14.8543922208986,11.6826593956127,18.4984799944809,16.9267333277084,45.0123996498008,29.3025987433048,26.8116016826782,13.8471076949523,13.4522918169793,10.8171837231565,10.1641135025107,17.4432704626639,9.94786012024449,14.1991297253997,11.2512264102557,12.0381662906728,32.8876655535481,12.8379516292493,12.7163852632503,10.0025505461024,18.1216513792077,15.7744939200742,15.2422572636388,52.5260305015315,16.240538099793,22.939963553447,24.7353781348785,29.322905897734,14.3454052525097,22.4591827836027,14.4513272395563,35.906363055381,46.1167679946571,34.8009979075106,25.4721670988615,11.8851462982383,42.7815570524025,29.571323337266,15.1686260048694,16.2870206407531,16.68,9.70246364893662,16.6242133039098,27.3823390948629,11.277080056642,17.6467163945552,40.3933146332161,42.0195754243884,14.4554515640945,31.8778789735935,21.6554138462972,15.6084526842417,13.8217433351222,16.7230275500561,21.4281125096577,16.68,21.1062015824013,16.2885062973559,10.9664440481665,14.3854358038805,11.6221157142687,18.2090027604469,10.5227198143303,12.742207798305,13.4405270833159,13.3308505787843,16.0492102075707,14.527970588505,16.5701553448213,10.7214985102842,26.0940945533593,10.9920233440375,29.5283270933135,13.4926921829959,14.8535848168493,15.7322443818634,18.4907881851518,25.0767680683045,16.8781696284006,19.7600209638765,16.68,14.8043457874918,12.4864916272365,17.1038489002899,16.68,26.4729465057046,11.4453178254848,16.68,41.4625957931644,10.3479157194126,17.0853447604978,41.8705998326198,14.8005899806015,10.299380031485,12.3367633439496,11.4963234578977,16.68,15.3750132214257,16.68,21.421567709144,40.4188166357578,41.4311133953582,29.7485370490201,16.6662476359451,16.68,28.5222794482296,11.9049550038241,9.94255220074613,9.80886906065695,13.0709932433074,47.4125783589384,30.6497431344469,27.1919622569031,15.865466251443,12.7973191415,15.4941349554675,24.5002716666308,12.4044797478234,10.867358513452,15.499124747922,16.68,11.1311560053711,16.330244201217,16.68,15.772285666741,16.68,16.68,16.8867523219614,18.757819199175,27.1382993240056,29.1910561227518,10.7717000606641,16.68,12.0144639752043,16.0505897450503,16.68,16.68,14.7356981122525,17.116250448615,21.9580932438302,16.8471419458244,16.7647948430847,11.6124469987228,16.9654394904724,11.9945437165617,18.3531038607985,20.1020849276056,12.6033184544208,9.96716473514235,9.93450528141521,11.4560320533241,16.68,20.0905369715963,16.68,24.704071274037,12.5828817039558,46.4922553572286,21.8156430750069,17.6177084717954,18.4863272164009,18.3244031196263,29.1759249541856,31.9249358361059,11.0500034573577,27.9485703495667,32.5131073641939,51.9269069191192,12.6548533778989,16.6168167316095,11.9160034132338,9.64256310141212,14.2218182381087,30.4568486505517,20.2010947521421,28.0588366366285,16.4083439818463,15.2682617874873,11.5125502811572,18.8232005386589,33.4505115625403,15.484461068289,15.2275029458975,17.118395226047,11.0264363472929,23.6200334336733,16.0267931949966,12.8624668180478,10.5193962034714,20.5917310737096,17.2329667410147,16.031382214242,36.8705151983093,15.0363568515998,18.2590825212195,27.2229801575525,50.2742945974784,10.6386276786213,15.2963629433567,10.6639990972471,13.645223577262,14.5763076559475,46.4362092178676,25.8798309077648,27.1600529698325,47.0584241119424,21.9653720703153,12.7645058071748,17.708688565826,12.5583473221289,14.4645249562762,12.5024067190159,25.8301597429773,16.5595984071813,35.0187673368177,15.7187597966246,12.9951474485761,10.4934248626981,9.87303078301825,16.6232029414716,34.9935850200879,22.9524750275866,18.4989491308062,10.3057884647541,16.1919375662007,13.5579062965406,11.4970217925952,16.68,18.2125841186889,14.4519600341341,44.9451548698241,35.6417241415421,17.3413154252988,19.7493944412162,16.68,14.0390029765746,14.4596190098631,11.0496910558227,11.1992502362364,11.9735069798466,17.5577907871282,34.1954081445593,49.3068427616857,13.9236225542282,16.5120479367096,16.68,17.9903996355232,17.1495866133532,25.8829351242417,24.5322332691609,19.9255529331416,41.4145910395827,44.5675379512336,47.6302071168206,24.6375340635197,15.2027755199854,13.2817266079696,15.5095593215461,15.5835419493955,16.68,16.9747485512465,11.5361418096347,29.4960936242423,10.9384276330624,33.6999814347953,14.6917798167424,18.2343583249662,15.5423018350321,15.0058246609375,16.68,10.1197474516623,12.1223220955651,11.1646514441393,11.978716260836,16.2673086673324,17.9864347443573,16.671540133678,16.6702442784603,13.3212917919769,21.3987494526761,11.1133855110487,16.68,16.8288653416537,12.0864069938086,11.4379600387858,16.68,16.3729581817531,11.8090336319931,16.68,22.1018479119978,21.3376301008359,15.0509750673999,10.9932785114603,23.3749415769254,38.0070416215408,15.8056367593137,15.7469242106657,16.68,15.2205800977366,9.42572737587485,13.5247057891551,13.326912473011,22.3026772104696,14.9121965372317,17.1624173360224,18.2296826669143,16.68,31.5697908592678,23.4889042775039,18.8442260346427,9.90417393941169,22.7811159540544,21.3858274623718,20.139011311777,10.4426093306147,10.9675459528945,10.5646510147318,15.5590467356765,18.9209056589196,16.68,17.0557900290745,54.0910266617329,16.68,16.68,28.7883448074665,27.0490834961953,16.68,16.68,21.2761896395512,50.9550070386801,17.2791819036324,17.1321436898278,15.9984136000913,18.3283747273913,29.4078696812422,18.7311930753539,17.3183117877562,15.06087285916,12.4152294230173,16.784635824997,20.255175670154,13.7625698676907,10.2760617165091,31.107581785755,11.5624525746791,23.7861149500024,15.6102920146724,17.5333102226712,19.8751073366475,35.4651043766667,14.9388518040514,11.0517928127805,10.1984408841532,15.4850549258615,10.0236966951762,11.0244748817559,16.68,10.5229547305409,28.9202091239774,12.1824220630654,16.68,13.2738909513333,16.68,11.9933363157307,16.68,16.8998627060087,34.6704788083981,23.0427294920916,16.68,20.4251940633837,16.68,20.4115593250159,44.139952517793,16.0056936240125,38.4513510344606,20.6233889027832,48.9002033597023,15.5016193626492,16.68,13.5213135199523,16.68,24.1162215479273,16.68,32.4241575789902,39.4091941551754,48.9086929114735,23.0732809765643,16.68,16.68,22.4996382323625,16.68,54.5816179774978,22.225258320112,15.1536984903825,48.4166136705407,35.926519829996,18.0168247150392,16.68,15.3708690767625,16.68,9.7912580193227,15.0531814166012,16.68,9.13235894280836,14.6484268765007,16.68,16.68,16.2253544684774,16.68,12.8994309924661,16.68,14.3203558803627,19.8481124519404,16.68,16.68,28.3049832181942,53.1681961382505,39.0149258685827,10.1027901554224,11.0325981396204,18.1047271422693,20.9974926994794,15.147515731859,15.4523917668784,13.0775178256431,15.6656303431102,15.4353599000457,31.9073979433418,14.4075718831936,16.6994770203941,16.9541539190703,20.646098660117,16.68,49.5706927697199,16.0806613431933,16.68,27.4411949070592,54.4320554381726,27.7722012055447,15.1903082371241,21.878384800589,14.7182958189372,16.89966952094,17.383136441662,14.9984049413233,16.9494459006011,10.8499853950502,11.8511969276537,14.4962618668757,13.2288462532651,11.2133794048099,9.68420598862586,10.7106574677912,14.8495785573828,11.2042409100104,15.0439431469184,15.1463013789471,38.3631109466877,16.5895841573934,22.6469652110764,16.68,20.3748089294591,40.951372748426,24.6907995598475,14.839737521762,17.2100479862314,22.4244681606704,11.9581717676813,29.5513717606023,13.0039838978927,10.6606612647732,13.6574026315988,15.380514543607,22.9966731645326,46.4966855684592,40.3734522753555,20.7648373263397,10.5796975595543,24.7623735231822,27.9812675235809,40.0775044217626,25.5241314501275,47.280570282932,28.8589387880587,47.0168697682235,18.7388957007963,30.7019927487393,12.7525167064853,14.5711533510274,17.0047544538964,17.5717526977208,19.1917814499071,14.8730515629363,9.65265357940616,11.5684625741119,10.7666018155872,14.5523832212179,29.202354167128,16.2326305167872,13.4183537159352,11.6440362779571,14.8061773799008,18.8846521234499,16.68,15.5440652890866,16.68,22.9622870110191,11.3188558502955,12.1403415455205,10.1290169380655,16.68,17.6564862805305,15.3819692962079,15.0191032234234,20.8916647924425,17.0468419087236,16.68,14.0100550243184,16.68,16.68,8.98506801908384,22.0132134370309,11.9466189281451,16.68,22.536029124725,36.6899818915429,12.61142684905,27.5070364717437,16.68,43.2278939060624,43.9444980424601,10.855533614083,14.7025959154617,9.71805156649577,46.4283185738192,20.115560376789,43.370660399822,16.395421336332,11.6556778607515,16.6193416207778,18.4091584170821,15.4987033213704,18.7707779001162,12.8621773713241,16.68,11.6956969013112,17.5409955543377,16.68,18.3428489019556,16.8859951688315,16.9780500393321,33.4691587107588,23.0550166837966,31.664039911983,16.1579223671998,33.1630117732035,56.765031535485,20.5859649596093,33.2947392575553,20.7283824008009,18.0592718279872,13.8613922294084,21.4925422614354,12.9432972696756,12.6541099408795,26.5363094601358,23.4802984655353,27.1668796579103,37.2107267679471,56.2838929700455,22.8264392041283,31.3793368161238,21.8827258215161,16.6608991927589,11.1705295209384,8.86656793220831,14.9330513094262,34.4997825677603,33.13359660274,47.2847390565938,17.4198264709712,17.1110953365917,11.0516729948313,14.1285336454653,11.5552705645273,9.72563109582849,9.91981014856694,11.3020417546557,11.5340298065655,16.68,20.3207983474277,12.1572246540738,16.2307853343065,16.68,16.68,11.7510037678304,14.9267160557794,9.16815421894935,16.68,15.1111465464584,15.1313454385704,18.9675696263014,16.68,16.0174337473104,17.1159021846249,16.68,29.3320149395298,14.3453443510933,11.2199166468439,16.745828778155,15.8358121611512,16.7061665960868,16.68,16.68,33.5769124041536,19.5449398195507,23.9530515676809,16.2446030135656,27.6297364180676,55.3354188284564,16.68,8.260811134534,16.7230464402302,11.6118086739058,10.2918063600282,16.4642456596533,16.68,17.1249618173715,16.68,26.4645806163069,16.68,14.9409069072234,16.68,13.9276247582103,13.6459907373183,10.6049682050622,19.880100910534,16.68,14.1755918919843,43.5869925202981,16.68,13.1605277822658,16.68,21.827214598932,16.68,19.1469890901126,24.4055313160177,16.68,16.68,14.8488584071781,12.6106707819687,21.5189661152986,19.8324145531841,15.4969660483684,16.68,16.4708005221401,16.68,28.0036741332728,19.4649357255384,11.5428016783769,10.0303192781503,16.68,16.5787806270602,32.5154745658126,46.3729074524031,15.6633374285254,15.7926244548984,22.8302872980473,23.9234101150553,16.68,16.68,16.68,16.68,16.68,17.2395013227955,16.68,16.68,16.68,16.68,9.7697818834844,9.72302745243999,51.0408546251894,16.3916897498053,16.68,16.68,12.1320144630497,12.1548992959363,33.4969589425952,16.68,10.0747113431096,11.39828744682,16.68,13.9452909724406,16.68,20.8271957190595,16.68,12.849819453631,19.4612316110306,12.4426622038564,16.68,10.6157029482983,10.4796234553578,13.8270681467405,10.5453745218423,17.2445771143074,16.68,25.3846511352377,38.8282423655807,27.1890658437105,29.3795933283162,17.571889224959,23.5348215421168,16.7685741914068,18.3224719753232,16.307563598505,35.2110758912873,58.245376104659,17.0282336515701,20.1251252637678,11.3385282537185,23.2684924318285,30.4740263230712,18.0004780356172,43.1119868201187,18.300089497716,15.6733369552765,15.3990128524637,16.68,37.289887489949,16.0371380233455,13.6819732413268,19.2184442415986,16.5424746756297,16.68,10.7717111237517,12.0488943216915,10.8960649193283,35.3993010142762,16.9726300546514,15.2528756442114,19.5669060688021,18.0770763812551,18.5764247123318,16.68,12.8305677190217,34.1493736603795,48.463533492895,32.6069430537891,49.1547300365607,42.4917109787918,17.0935977093423,16.68,25.7099161229193,15.5758789915947,17.6247101409656,16.68,11.0456512401249,12.6710456291378,26.4655946714442,15.776130240644,12.9551030195275,16.68,21.7451010255235,9.83267484224016,10.6861863706192,13.8458433616991,14.9650925659168,11.7606832369727,18.5396536609438,17.0680562296064,45.0122089618614,29.5193699641341,26.9413554853321,13.9109776146026,13.5316382789389,10.8863485725746,10.2343202450686,17.5641473416829,10.0017602214495,14.3407186758727,11.3172866925941,12.103920444958,33.0691883593895,12.9400768298917,12.8010923064377,10.0655842072074,18.2134804700941,15.8217385191211,15.3046809102937,52.5107376351117,16.300859073207,23.1410725601706,24.8466758645316,29.5100538006041,14.4686838830753,22.6483275771066,14.5284325058918,36.016162200404,46.1779768989827,34.8864946803563,25.6595882940692,11.9985688812672,42.8873562731059,29.6850204887842,15.2558319189306,16.3630624559869,16.68,9.75901417734395,16.6893128701249,27.4988655151019,11.3371934479934,17.727917278734,40.4361040420717,42.1364363538715,14.5514254318123,32.0076961330419,21.8185576702519,15.675923477192,13.9245138401469,16.7921130488931,21.6615165010225,16.68,21.2094067957644,16.346679192313,11.0288923573651,14.5318181056688,11.6920599574225,18.3148433303886,10.6012423828403,12.8196839214358,13.4996206586278,13.4001556273597,16.1921084490169,14.609367997408,16.6325869870839,10.7915862985314,26.2410024479836,11.0536575388993,29.6145154655869,13.5770900514031,14.9173676534458,15.80141441884,18.5675400861248,25.2057075192636,17.0253575310798,19.8862853559025,16.68,14.9097459662352,12.623957371016,17.2382567526423,16.68,26.5756747586671,11.6437259914116,16.68,41.4978037588007,10.417947639294,17.1412084665658,41.9118665029726,14.871476515063,10.3730145280434,12.4198684598199,11.5456551650958,16.68,15.5076878673043,16.68,21.5573228212971,40.4836382600584,41.4955040019822,29.9920313996652,16.8466667496825,16.68,28.6357646488135,11.9681046967986,10.0455841980092,9.87101004160719,13.2253943149178,47.4277757656991,30.819076026782,27.2919787214869,15.9866983250456,12.8836433184077,15.6601700343389,24.6595889084622,12.5145833170108,10.915436745129,15.5426330870174,16.68,11.2557642788921,16.3983186439836,16.68,15.7894684074325,16.68,16.68,16.9041953862399,18.9159556820638,27.1935735847718,29.2591343905037,11.0114568353201,16.68,12.1264737035532,16.0412231361987,16.68,16.68,14.795747278767,17.204758659553,22.0709548513198,16.91271452235,16.846553308818,11.6945214491351,17.0230542392282,12.0542536834293,18.4098130347443,20.2309950234458,12.6781721462324,10.0269610887313,9.99464394373374,11.5370492385324,16.68,20.2072180887776,16.68,24.8364004258375,12.6658226884877,46.5300659130327,21.9557577135935,17.7388517942201,18.6507546201042,18.3910591690366,29.3524077773791,32.0316716710512,11.1251879922356,28.0342080236189,32.5970667494698,51.9292511136088,12.7203159413937,16.7031908748891,11.9759198672692,9.70375508486122,14.3039452674461,30.6425686299694,20.3396236366414,28.1571952492577,16.4827487181515,15.3407745412979,11.5758931522373,18.9009615461328,33.6015373560301,15.6278199621783,15.3147384341626,17.2791050666585,11.1017775605763,23.7170466221,16.1010700208768,12.9330952275475,10.5770479830325,20.7064863241103,17.2918298342917,16.0889404702062,36.9624598381458,15.1576343034414,18.3297668051889,27.3817021067627,50.2675567628533,10.7095537270865,15.3689691065344,10.7401629622895,13.7535690302014,14.6429110797779,46.4417517427252,26.0753160418368,27.3175476282307,47.1300089533581,22.0486433663405,12.9044337447129,17.7888750244721,12.6187288964455,14.5362032115517,12.5686617156312,25.9604951469117,16.6160184135171,35.1714246156895,15.8061609598928,13.0606338635885,10.5518624368164,9.93160595366263,16.7846961711935,35.0911251066491,23.0616165462208,18.6022608142467,10.3665857005354,16.2962722739344,13.6338731090182,11.5807816737243,16.68,18.3999017774895,14.6143213847716,45.0453851201416,35.8232912779972,17.4044859729382,19.8495711518727,16.68,14.1035796549365,14.5361494092524,11.1059343129047,11.2758354410763,12.0570170628145,17.632288841506,34.2883462960804,49.3281370179891,14.0050914528271,16.5747463842576,16.68,18.1514554955217,17.2371795878577,26.0704358494602,24.645469648243,20.0152108596398,41.4516991042443,44.6446265842551,47.6041945497921,24.7221268435328,15.2620425953876,13.3510348762508,15.5755632561656,15.6532089130729,16.68,17.0572947218315,11.5998554345421,29.6390011144915,11.0193760786246,33.8852478487685,14.7919886199742,18.3242521617151,15.6968950143973,15.1164876422243,16.68,10.1745804405832,12.2051965616263,11.2360541054604,12.0420578956371,16.3436973294051,18.1745838807302,16.8082318247743,16.7353261556385,13.3772283776936,21.4505370917998,11.1698905208837,16.68,16.8800116872626,12.1543601093752,11.5127867122731,16.68,16.4165474576351,11.9237806431824,16.68,22.2041537314729,21.4355158726675,15.1335435053947,11.0627093459664,23.4622251134729,38.0973627507284,15.8667212321372,15.9109015457408,16.68,15.3344803945232,9.50776853880448,13.6004335506723,13.4486306137924,22.4446662397912,14.9872560655525,17.2225374305493,18.3191236911585,16.68,31.6554042245568,23.6468232248763,18.9959459426943,10.0139853879808,22.8724804564062,21.5207324232172,20.3153939670691,10.5180449513153,11.0275754084666,10.6312553448448,15.6292292839493,19.0228012652267,16.68,17.0552392341523,54.2008234515172,16.68,16.68,28.8756340282926,27.162298462555,16.68,16.68,21.4221335410186,50.9777008241124,17.3860549536339,17.1699541349569,16.1616393390996,18.4425221681286,29.6038303776786,18.8158469709858,17.3966293854635,15.1386035823559,12.4763870294103,16.8394649870754,20.3393945806561,13.8290181108314,10.3425848890458,31.1925733076395,11.6402654196829,23.9082951910716,15.6674928906132,17.5987362186348,20.0560674372276,35.6486416086844,15.0146117312244,11.1115082980956,10.2501014376334,15.6035939430184,10.084389777921,11.1048460320923,16.68,10.6184036729795,29.0767330153616,12.2979488579521,16.68,13.3800653576913,16.68,12.130888347192,16.68,17.0100071856746,34.8047370015743,23.1298999394232,16.68,20.5436315838341,16.68,20.484857516913,44.1782580635313,16.0643637569942,38.6223631114928,20.8030587496925,48.8977390162439,15.6397680124084,16.68,13.6141644448358,16.68,24.2836938994674,16.68,32.552339358095,39.5355060896746,48.9149625349475,23.250159302122,16.68,16.68,22.6559161053356,16.68,54.5355850575417,22.3908737435639,15.2435227759758,48.5237833214475,36.0037570774772,18.1463510274131,16.68,15.4924978854354,16.68,9.87276914743141,15.2229920000082,16.68,9.23261817245939,14.832114458023,16.68,16.68,16.4018370733278,16.68,13.0092898679229,16.68,14.4809274306132,19.9938624211862,16.68,16.68,28.3946334666614,53.1326765658661,39.1659650154009,10.1628095940431,11.1380116102557,18.1980190484189,21.0496523119282,15.3438431080409,15.5943748507823,13.1410566691485,15.7501503738563,15.4900557865809,31.9892958257543,14.4943356118887,16.7477620070398,17.0272079708699,20.7521376701649,16.68,49.6492928933574,16.2351715238204,16.68,27.5361027005339,54.4235434810478,27.8688724209979,15.2709122601024,21.9642919825964,14.8169280895093,16.9591886446836,17.438532452972,15.0690413673734,17.0306642853607,10.9144705371338,11.9225692447724,14.6345929655322,13.3392408718601,11.2943732997762,9.74119998905045,10.7788120840925,14.9222395477626,11.2785273773438,15.1096353899327,15.2294810803995,38.46896185806,16.630416316025,22.7494811809984,16.68,20.5027017682989,40.9770335558658,24.7676511342907,14.9895154448209,17.2975990771714,22.6286387793714,12.0108491499611,29.681823822927,13.0781286617378,10.6843086452251,13.7166164847796,15.4488433547392,23.0828544323006,46.4719417298208,40.4735464114338,20.7800118402316,10.6414996873741,24.9383712900966,28.0696263744118,40.2319570484531,25.6357795516631,47.2781374706743,28.9515389599634,47.0233083397636,18.8109144103481,30.8567087068184,12.8747932235789,14.6441125569946,17.1455235870985,17.6997013346052,19.2675876931399,14.9403219694797,9.72396230559251,11.6424290350025,10.8376531975761,14.6218911745408,29.3498675461155,16.3927991558188,13.5270754215512,11.7171873517768,14.8732677433279,18.9515636029142,16.68,15.6642134416546,16.68,23.010579433047,11.4029538611906,12.2068308603069,10.2033850220872,16.68,17.8012581103628,15.555920710551,15.1546934752934,21.0186672203986,17.1941340856166,16.68,14.1864374055664,16.68,16.68,9.07360934257521,22.1725027875672,12.0745751418542,16.68,22.684071421238,36.8123793030494,12.6831732309536,27.6003487689877,16.68,43.3285977719825,44.029747120755,10.9291632602707,14.780173473179,9.78556226604558,46.5080077549139,20.2170695452848,43.46186350436,16.4982875612922,11.7598067873704,16.6863448927181,18.4802428435113,15.5296521574882,18.9339083196204,12.9717903834713,16.68,11.7547248819577,17.6083639836929,16.68,18.4256232984331,16.9744203282212,17.0359563162932,33.6068372697924,23.2163689650591,31.7962506958932,16.2961725733429,33.2016401820872,56.8447495007929,20.7886219128735,33.4127906035239,20.9491617932119,18.1803799212152,13.9282727254313,21.6648807311388,13.0409806504965,12.7170875776593,26.6967072581221,23.6655409084925,27.3549099194404,37.271173413855,56.2516981424426,22.9988747249526,31.5748351328416,22.0187696365371,16.8209919091477,11.238773634088,9.01820086913148,14.9677423049711,34.5144288845347,33.2642820551986,47.2800957460103,17.5196563637251,17.161860050061,11.1118288216476,14.2308352549601,11.6804231855176,9.82145508422706,9.95704876815144,11.3717446159699,11.5935641851592,16.68,20.3760144994734,12.255631397942,16.3147589024457,16.68,16.68,11.9109201678816,14.9709660782402,9.41661515117553,16.68,15.1379240766379,15.3160077422871,19.0629167419206,16.68,16.0246249708197,17.0960573779625,16.68,29.4437830165223,14.431246446513,11.285519354799,16.8141969843405,15.9010911565664,16.762104577195,16.68,16.68,33.6506870987864,19.628477095275,24.1247959876687,16.3462273179944,27.6692467757211,55.4133432772577,16.68,8.5088707714606,16.7477825969026,11.702549261296,10.3302631730943,16.6097888213551,16.68,17.1683984728962,16.68,26.5193558635355,16.68,14.9670843330087,16.68,13.9892212203363,13.7477716798872,10.7000022591597,20.0250514590568,16.68,14.3023713957625,43.6974362161733,16.68,13.271648990428,16.68,21.9848546889646,16.68,19.1734947355477,24.5234957477432,16.68,16.68,14.9179519034644,12.7099960412402,21.5445556450427,19.8554538316549,15.702625934657,16.68,16.4440935737361,16.68,28.0540980724499,19.493037039799,11.6331194040462,10.1194993626931,16.68,16.5964427616439,32.7613389025809,46.393277108559,15.7565202923764,15.8733093675511,22.9114385328782,24.0301297139907,16.68,16.68,16.68,16.68,16.68,17.2780393620349,16.68,16.68,16.68,16.68,9.80729732794794,9.76333339210949,50.9928231932247,16.4394151019567,16.68,16.68,12.1893731893541,12.2186304606817,33.5531195627422,16.68,10.1193629769289,11.4541741908006,16.68,14.0560667273054,16.68,20.9945004213772,16.68,12.9304286041675,19.6040815316166,12.4976128181045,16.68,10.6687070271799,10.5156362660858,13.8836689040628,10.6044765591678,17.368043132003,16.68,25.4808660293993,38.9899325992595,27.3055772291128,29.484015701794,17.6425010039969,23.6071815249369,16.9019273665445,18.3739172946748,16.3750954256615,35.3136312007921,58.2017864537822,17.0711092721644,20.1876520720683,11.3961786355364,23.339789080742,30.5487957558318,18.0605641284337,43.1349074977702,18.3479526262766,15.7258749504357,15.510936847819,16.68,37.4480231698808,16.0814939040673,13.7721491712405,19.3221897366402,16.6666676451766,16.68,10.8189101474787,12.1493582548406,10.9473027269078,35.4949268127178,17.069704977513,15.3038013156086,19.6251336698419,18.1373124860846,18.6528926811956,16.68,12.8791469890724,34.274374043241,48.4821477317573,32.7383110805058,49.1350085952628,42.5715533001255,17.1311995952684,16.68,25.8162494828688,15.6372866417484,17.7368286536132,16.68,11.0891723852114,12.7614462892968,26.6175728964132,15.9012160132251,13.0343957386415,16.68,21.9112970869599,9.87065405537073,10.7444748515594,13.8924787721679,15.0549665268877,11.8205472706067,18.5672694637156,17.1827677066276,45.001289511857,29.7033360118585,27.0455650608973,13.960304730897,13.5943976320976,10.9398829245624,10.2859681235971,17.6598182568514,10.03584067137,14.455070652149,11.3667346482647,12.1525130218873,33.22086598962,13.0204267249454,12.8689510267045,10.1101374947579,18.2868418725478,15.8558181215543,15.3512818587318,52.4938110372088,16.3475438501051,23.3080925786682,24.9380206531488,29.6662376894954,14.5706904703985,22.8043911711512,14.5896602936219,36.1069270539847,46.2251331598824,34.9568873920409,25.815966514505,12.0894776908176,42.9727443386236,29.7796767724717,15.321546024873,16.4218149086095,16.68,9.79588492632458,16.7397270071352,27.596023182272,11.3799389717965,17.7880722301182,40.469429725537,42.2312991479557,14.627951659661,32.1165684728992,21.9540994703035,15.7268432353417,14.008967358806,16.842415948688,21.8558226182687,16.68,21.2911556447192,16.3916896707681,11.0818132338053,14.651929855574,11.7442727352376,18.3976290412928,10.6625679384225,12.8806140604506,13.5448122047792,13.4538674917435,16.3095576580119,14.6738134959308,16.6794087922273,10.8435074139799,26.3625214860008,11.097696963419,29.6850747731643,13.6461155716298,14.9668259903906,15.8564668757096,18.6269249466764,25.3110579233754,17.1453263348286,19.9869769115974,16.68,14.9907296523948,12.727750043865,17.3426322205294,16.68,26.6512286437276,11.8113505256027,16.68,41.5239895026988,10.4692392907968,17.1820401066255,41.9430693400469,14.9253682870619,10.4253905147647,12.4846115335043,11.5799642609865,16.68,15.6175434550004,16.68,21.668803643199,40.5346176164791,41.5460168810805,30.1973319787591,16.9950654138454,16.68,28.7342821096831,12.0183571584151,10.1265130236617,9.9130280004726,13.3471367432154,47.4388039466188,30.9602659354217,27.3739149816397,16.0848894053772,12.9524619271948,15.7960572525086,24.7909373952971,12.6007759155366,10.9486223190677,15.5707990460355,16.68,11.3472266648998,16.4508756364108,16.68,15.7787114277003,16.68,16.68,16.9016913950059,19.0575230741885,27.2348496586502,29.3078023566409,11.2030755213676,16.68,12.2137575217725,16.015898731395,16.68,16.68,14.8303982175504,17.2737493812402,22.1632743050388,16.9624314583352,16.9087741284228,11.759323411895,17.0680005527146,12.0979293673331,18.4504015813816,20.334146011939,12.7356578199755,10.0670903121188,10.0360528744176,11.600355851651,16.68,20.2931160615643,16.68,24.9452258611898,12.7246092933379,46.5590935857182,22.0659667316504,17.835210343362,18.7873684938936,18.4400230413955,29.4994710393735,32.1202428759699,11.1807274082022,28.1037570657329,32.6653899606834,51.9273891242009,12.7692099176114,16.770625030632,12.0197379420609,9.74628365588521,14.3695698003839,30.7970778856875,20.451500391146,28.237459652329,16.53927924559,15.3961390333956,11.6212590745522,18.9623255945764,33.727090728831,15.7466709475715,15.3851313749389,17.4105078470305,11.1586606023374,23.7978189703787,16.1587368510193,12.986984059229,10.6156939685775,20.7987440181107,17.3379446287028,16.132549448531,37.0381392791623,15.2532537942312,18.382721554137,27.5128714788073,50.2578470402051,10.7621015065259,15.4241858681529,10.7987808274772,13.840720161972,14.6938006786331,46.4422966607202,26.2391018634114,27.447480763595,47.1866647393134,22.1166891222987,13.0176363359996,17.8477734482221,12.6627254858071,14.5935169844996,12.6184310422161,26.0672974155346,16.6587551613999,35.298244915097,15.8735247782877,13.1117703139097,10.5929317622915,9.97240086432487,16.9171592012597,35.1709818286431,23.1507160669342,18.6829566939097,10.4087281109478,16.3789096262306,13.6914807055204,11.6468437820644,16.68,18.5545112995037,14.7464613345823,45.1258931104766,35.9755011179882,17.4517402583965,19.9296531109645,16.68,14.1514598293454,14.5936763624702,11.1452704070834,11.3325639356581,12.1222894331011,17.6908420601202,34.3643618021697,49.342471352226,14.0707324215779,16.62435849277,16.68,18.2835483289674,17.3044423430451,26.2265860970048,24.7387973986293,20.0860115184312,41.479257624561,44.7052764964107,47.5774593896859,24.7898236766413,15.3069407935821,13.4031181721465,15.6271251215583,15.7074868238502,16.68,17.1216097784803,11.6456046771281,29.7566713095513,11.0822085295094,34.0400754320489,14.8720293612551,18.3940804625296,15.8248492256366,15.2051056840667,16.68,10.2114431672825,12.2693644421313,11.2900805892498,12.0864253818547,16.4026241676912,18.3295772701976,16.9218581623746,16.7831810159041,13.4289116241641,21.4885773872592,11.2098322004909,16.68,16.9180706110139,12.2039843902049,11.5651491300504,16.68,16.4489137432198,12.0111622176001,16.68,22.2891064297923,21.5125413164019,15.1969718934589,11.1137580897613,23.5315357941573,38.1713911152716,15.9137696413877,16.0168515600485,16.68,15.4233570115312,9.5786665113786,13.659553312518,13.5474826378796,22.5603204683364,15.0468523656422,17.2682362016388,18.3864724925143,16.68,31.725677180674,23.7774389324706,19.12023010275,10.1011813262611,22.9470963268132,21.6294430056244,20.4633744839987,10.5750820777787,11.0705178702351,10.6793255341164,15.6839019050357,19.1048621722784,16.68,17.035124020111,54.305420538726,16.68,16.68,28.9444201562009,27.2579804494106,16.68,16.68,21.5349718940574,50.992801331168,17.4698534364622,17.1957639475219,16.2959763002209,18.5327765013228,29.7669327365729,18.8813386066051,17.4550368290013,15.1998111349186,12.5228306995119,16.8813402373993,20.4070532933059,13.8807260603039,10.3916615226444,31.2609260143304,11.6990677437091,24.0065624966471,15.7105258491637,17.6475835827551,20.2043817523128,35.8022620812899,15.0717863285589,11.1551136684562,10.2864807687349,15.6975637583176,10.123815140181,11.1662020840616,16.68,10.6922359585488,29.2068184819763,12.3908497145926,16.68,13.4603890603331,16.68,12.2371946104066,16.68,17.1029958226612,34.9188163521937,23.2001110739678,16.68,20.6370660691487,16.68,20.5428633475422,44.2077487237748,16.1098613636825,38.7621146204841,20.9523113905621,48.8912213406401,15.7503603253543,16.68,13.6824022379852,16.68,24.4208919639325,16.68,32.6597124411073,39.6389720895572,48.9165161097184,23.3982309388831,16.68,16.68,22.7835307512083,16.68,54.4883319224847,22.52320353242,15.3156561386833,48.6128901307213,36.067433453592,18.2456801120828,16.68,15.5821630403364,16.68,9.94162748021881,15.3388878820112,16.68,9.32384565544727,14.9595343310525,16.68,16.68,16.5241433821418,16.68,13.0933322722353,16.68,14.6089315251091,20.1130224315109,16.68,16.68,28.4643036307579,53.0985285543884,39.2925939456666,10.2028516090575,11.2211035463998,18.2710405816299,21.0912430754563,15.4802043689129,15.6943746122505,13.1924303028637,15.8129346905245,15.5334521673386,32.055691137902,14.5639537175372,16.7824059685194,17.0819322585209,20.8364281835916,16.68,49.7139465281892,16.3557496290242,16.68,27.614367225039,54.4110000745072,27.9463645908705,15.3324482055021,22.0345115579701,14.8934777881729,17.0029267244079,17.4790501141297,15.1234893621616,17.0943613977932,10.9604885690042,11.9778850669547,14.7481938840485,13.4266382559824,11.3567616283098,9.77968060881816,10.8285015743253,14.9778187964981,11.3345266096105,15.1598454699549,15.2946460481929,38.5546574491009,16.6595129951747,22.8321978202006,16.68,20.6065759357643,40.9955413408482,24.8251753049799,15.1126723836433,17.3666816637072,22.7985261094683,12.0485939022047,29.7889929109394,13.1363577329109,10.6948790893334,13.7615202394648,15.5010448452519,23.1521438645616,46.4477976984135,40.5545629087735,20.7687664432981,10.6842145601456,25.0850818252221,28.1411158129778,40.3589125569441,25.727065341347,47.2726322763069,29.027654220323,47.025928242121,18.8629967644731,30.9850638834158,12.9755688789199,14.7010990407262,17.2597929796933,17.8028726830465,19.3255380547385,14.9921498144543,9.78317527391752,11.6963652697213,10.8884223116347,14.6749022543042,29.4732551823761,16.5244462401641,13.616198656145,11.7695325382919,14.924068113645,19.000897486056,16.68,15.7565936113608,16.68,23.0516098902687,11.4679868485417,12.2561260242312,10.2591125306756,16.68,17.9161720428299,15.6776238435626,15.2558121040623,21.1199859180405,17.302807794672,16.68,14.3109645451968,16.68,16.68,9.14880714726712,22.3014611193436,12.1805645213226,16.68,22.7997828035246,36.9092408317076,12.739502087941,27.6659837092651,16.68,43.4111248999261,44.0992545236435,10.9835204962631,14.8393509463715,9.8292719800269,46.571105098115,20.2982032164808,43.5369125700094,16.580948978161,11.8401821375659,16.738836192726,18.5351702518062,15.5496195080662,19.0789945013186,13.0620466483021,16.68,11.7965589114743,17.6583329888429,16.68,18.4918474955588,17.04411420006,17.0795341304153,33.7173360567155,23.3518253012933,31.9139183038551,16.4080569059284,33.2260388465125,56.923119311024,20.9585641734574,33.5061769877034,21.1331594471563,18.2781163229012,13.978485283538,21.8062720791835,13.1163984047271,12.765420124303,26.8300433051532,23.8204411487979,27.5128788471063,37.3180995048623,56.2198487800619,23.1399672475857,31.7380424972365,22.1305500310874,16.9537238497581,11.290183061541,9.14523871692311,14.984592676323,34.5189205984077,33.3722029120128,47.2727553647427,17.5975394191818,17.1991130419325,11.1565742220834,14.3135879743905,11.780093890236,9.89654882082905,9.97997059111546,11.4225663706906,11.635615470995,16.68,20.4071157660181,12.333939139979,16.3761463021651,16.68,16.68,12.0369751751447,14.9877877489156,9.62585450051778,16.68,15.1437397722293,15.4777234238903,19.1378504122412,16.68,16.0108303981023,17.0587881085386,16.68,29.5340730900738,14.4970366193635,11.3320941032582,16.8667827531386,15.9512997879738,16.806472542478,16.68,16.68,33.7047121432435,19.692641319758,24.277956449994,16.4305802053387,27.6931483058262,55.4930487739886,16.68,8.72197124121487,16.7505486125551,11.7731868889943,10.354378422274,16.7284399594722,16.68,17.1893396439566,16.68,26.5385531321898,16.68,14.9718985460682,16.68,14.0259969433058,13.8315108230503,10.7723082466619,20.1422937148136,16.68,14.4027690175127,43.7985297122231,16.68,13.3577656613362,16.68,22.1137821397343,16.68,19.181914480525,24.6212105333775,16.68,16.68,14.9720282240957,12.7910881659954,21.5486841847282,19.8643882409448,15.8786114284445,16.68,16.4070529668758,16.68,28.0725316503175,19.5073548490315,11.7047343158545,10.1863451924515,16.68,16.5884007031567,32.9733610895744,46.3957181414378,15.8285299711988,15.9347564421124,22.9775779594461,24.1179304853453,16.68,16.68,16.68,16.68,16.68,17.3063620010756,16.68,16.68,16.68,16.68,9.83150684452751,9.79041155185432,50.9494854619804,16.4758850636236,16.68,16.68,12.2329699497272,12.2668649213367,33.5959329558402,16.68,10.1506461774474,11.4976560348428,16.68,14.1406313051316,16.68,21.1312161902997,16.68,12.9972537699605,19.718584767576,12.5392254216545,16.68,10.7057610683793,10.5388265173479,13.9255172817637,10.6452624733057,17.4667252974829,16.68,25.5523578397659,39.1212857201007,27.3979759394861,29.5671282150349,17.6962649237565,23.6637820969392,17.0105425452014,18.4125968470265,16.4239725860562,35.3939220528001,58.1598649132198,17.1037824204305,20.2357588704712,11.4384555625121,23.3971937219757,30.6083541187845,18.1061672646174,43.1479354027255,18.3815338339419,15.7657352781509,15.5984751982042,16.68,37.575614693979,16.1153655320714,13.8440949647733,19.4048811573319,16.7558453634358,16.68,10.8530048792718,12.2263532583604,10.9844109234308,35.5716008027389,17.1444270236799,15.342314717246,19.6699868910085,18.1814558514093,18.7109420428833,16.68,12.915497326681,34.3751229713528,48.4947362487291,32.843565593403,49.1133381998145,42.6328142698478,17.1572237400049,16.68,25.9023856961943,15.6832286665811,17.823545257194,16.68,11.119350981385,12.8327697495031,26.7404321517683,16.0032683996817,13.0963411234896,16.68,22.0489312159996,9.89920670976289,10.7879859599034,13.9274205305615,15.1264927821363,11.8658224551122,18.5859480748609,17.273239417375,44.9824290361884,29.854825001645,27.1273580286905,13.9982825589523,13.6435519834658,10.9810530235118,10.3231257315262,17.7336087999299,10.0563337892922,14.5463816499075,11.4034434509259,12.1879872221007,33.3439732448995,13.0826846658613,12.9227716756322,10.1405918438595,18.3438676544181,15.8797879173712,15.3853851832633,52.475198479918,16.3834124392252,23.4438787735979,25.0105254492246,29.7932126304101,14.653706220764,22.9302762638481,14.6377489682452,36.1787083752681,46.2587242915625,35.0122025533159,25.9430814210673,12.1614999094506,43.0385749732193,29.8556710631644,15.3695942896905,16.4660478000605,16.68,9.81907034282055,16.777856494938,27.6744758012118,11.4097275305613,17.8307347466171,40.4931246808211,42.3051240686261,14.6880715445128,32.2047108769812,22.0640676251422,15.7644379213739,14.0773250367597,16.8777098831192,22.0143413652208,16.68,21.3539873211052,16.4259008202786,11.1263583039671,14.7489433403274,11.7824664646151,18.4602096036836,10.7101335473757,12.92801815963,13.5793065383646,13.495002421513,16.4045752495747,14.7241056206867,16.7133787145324,10.8812819157153,26.4601339950143,11.1288463199021,29.7404188234177,13.7027313367082,15.0045127919471,15.8996873877711,18.6713813358592,25.3937272042909,17.2413271479043,20.0646758843348,16.68,15.0516286738039,12.8036734064262,17.4207496315474,16.68,26.7049768980696,11.9399836716854,16.68,41.5414267026459,10.5061172267038,17.210662650818,41.9642951297423,14.9652759467283,10.4616465671586,12.5342808999938,11.6039333454344,16.68,15.7072846984264,16.68,21.7583371698692,40.571960226659,41.5835702632001,30.3649703295573,17.1135633856566,16.68,28.8176513814114,12.0594013882626,10.1860048363645,9.94038145136822,13.4398114925856,47.446102961632,31.0745355421278,27.4386136300696,16.1629323325021,13.0066881483752,15.905561868364,24.8961260092258,12.6669959303184,10.9719028372123,15.5900225800956,16.68,11.4135170739838,16.4893111020353,16.68,15.7558246803167,16.68,16.68,16.8902178993108,19.1736654560481,27.264464646148,29.3423014535524,11.3435668919091,16.68,12.2807232013143,15.9858650927758,16.68,16.68,14.8511850586806,17.3260016047242,22.236894034065,16.9992827290205,16.9546706019391,11.8099600458295,17.1023500139099,12.1296993843038,18.4786840109058,20.4142766700224,12.7792987835456,10.0932277255077,10.0639770822483,11.6492251317657,16.68,20.3554388790565,16.68,25.0309161954828,12.7673617247756,46.5783265998778,22.1506880127534,17.9092242721044,18.8987263040122,18.4747734085277,29.6187271610465,32.191090225023,11.2210088333152,28.1578149991008,32.7182683139425,51.9212791064287,12.8049283609778,16.8221543306526,12.0514303856635,9.77521808845284,14.4212817047749,30.9218936315035,20.5395345408195,28.3004968082225,16.5809261065034,15.4374952145518,11.6533892449061,19.009818601145,33.8281688265339,15.8437555311527,15.4409641762143,17.5160437913163,11.2006544595021,23.8629068915479,16.2021947720279,13.0274989934521,10.6410764951778,20.870974800582,17.3735757051515,16.1649936836101,37.0975884410468,15.3271495885108,18.4215434516412,27.6181141324412,50.245217208353,10.7998768761612,15.4650618095676,10.8430167369675,13.9098863207352,14.7321062597569,46.4378583705421,26.372962002053,27.5518280279231,47.2286758250886,22.1706967032516,13.1081067771641,17.8899587479065,12.6946821341176,14.6385599152811,12.6551514928645,26.152450138294,16.6905488281478,35.4003396616732,15.9240321488721,13.1518798842649,10.6211198373916,9.99999191268063,17.023813679782,35.2334998093973,23.2211481453966,18.7444728171539,10.4374943341861,16.4427079905036,13.7342518210569,11.6985198196523,16.68,18.6796050229216,14.8525455910141,45.1870676217123,36.0993216261259,17.4864602187981,19.9924477321591,16.68,14.1862954788181,14.6354643025898,11.1725307258228,11.3737332564529,12.1727453401733,17.7360239380863,34.4237948009094,49.349754124328,14.1231929126775,16.6631097016606,16.68,18.3896234418005,17.3543105376192,26.353301129107,24.813558558975,20.14084905293,41.4976640842506,44.7498252447191,47.5501099812067,24.8419986440161,15.339969997786,13.4414704437963,15.6669245094472,15.7491130964165,16.68,17.1708335808177,11.6779826276265,29.8504998758801,11.1302765611137,34.1651306782104,14.9344022165346,18.4469493878607,15.9287902137452,15.275112261515,16.68,10.236475074837,12.3178547043396,11.3302803690188,12.1176030624243,16.4469683011181,18.4550181742648,17.0147450951789,16.8169829737667,13.4757684133571,21.5153278812144,11.2376042686558,16.68,16.9456582049685,12.2399024154267,11.6009027382084,16.68,16.4731373731302,12.0759971111827,16.68,22.3564947046346,21.571357219102,15.2446398754866,11.1507365694543,23.584650226371,38.2291291005785,15.9492404914265,16.0809499668215,16.68,15.4889504772344,9.63713196706989,13.7053459574686,13.6265857501839,22.652228391329,15.0934768170019,17.3021747159939,18.4358750418857,16.68,31.7809137055391,23.8833688185954,19.2202736082875,10.1684952329962,23.0061600457238,21.7154697634123,20.5840794184157,10.61761181971,11.1006977797299,10.7136262616156,15.7257894351584,19.1700907979282,16.68,17.0082831111595,54.3944857116224,16.68,16.68,28.9978541753269,27.3346113457901,16.68,16.68,21.6197100599209,51.0004790118172,17.5338525755088,17.2121687759298,16.4048211186399,18.6020076589167,29.8988633670273,18.9308777954812,17.4970829492034,15.2474996373747,12.557543820788,16.9126708035293,20.4597508541593,13.9208766773748,10.4271616804825,31.3132724361728,11.7429549519621,24.0830863962548,15.7425663883336,17.6832518039813,20.3245885124736,35.9267647877166,15.11383922717,11.1872343076713,10.3121451620208,15.7701669691151,10.1484783633552,11.2125358044917,16.68,10.7458720734236,29.3113650187763,12.4645332151108,16.68,13.5196654010048,16.68,12.3166018877673,16.68,17.1781202785386,35.0099813663427,23.2546799081604,16.68,20.7091170775927,16.68,20.5871961589306,44.2280775446076,16.1448473928233,38.8726587526753,21.0723228736236,48.8805348674911,15.8363434615595,16.68,13.7328729577591,16.68,24.5286919381838,16.68,32.7461853891451,39.7206491358605,48.9134433007598,23.5193324608438,16.68,16.68,22.8857046753392,16.68,54.4403890742733,22.6260740764863,15.3726743505291,48.6839694060162,36.1170495079446,18.3190303337457,16.68,15.6462295209738,16.68,9.99804351166095,15.4162121678046,16.68,9.40297366602287,15.0447978723147,16.68,16.68,16.6023826040429,16.68,13.1572610089029,16.68,14.7075864739189,20.2064984087355,16.68,16.68,28.5169323573722,53.065747631623,39.3945738699864,10.2295960920209,11.2852625956228,18.3262682701761,21.1237684391448,15.5719859311766,15.7626934981647,13.2335558089171,15.8580595381383,15.5679190716641,32.1069839235031,14.6187464720637,16.8064749758416,17.1217049496927,20.9017136240284,16.68,49.7639937835489,16.4462014808483,16.68,27.6761893994757,54.3947555794034,28.0049283974483,15.3784459145393,22.0904242173538,14.9517961899677,17.0339977226831,17.5079153219677,15.1647652739197,17.1431019558965,10.9927544336941,12.020591565484,14.8398799149784,13.4949655219426,11.4043864194128,9.80505346741992,10.8641250983494,15.0194447039773,11.3762326455824,15.1976034264309,15.3451762674214,38.6210353659381,16.6799787047014,22.8967275977984,16.68,20.6889179127091,41.007102599012,24.8673307474748,15.2123596310053,17.419842794394,22.9368745529941,12.0764311948199,29.8741564044791,13.1807508959018,10.6991686708653,13.7953810647017,15.5399955100324,23.2058624088629,46.4243178628563,40.6173802439419,20.7467219483218,10.7132138425962,25.2040132260043,28.1963465749112,40.4592628535934,25.7993311892586,47.2642144339363,29.0877516855617,47.0249458339242,18.8996516094087,31.0879474081501,13.0563355627627,14.7447511213077,17.3507994124715,17.884565700269,19.3690412782843,15.0315505582337,9.83185807773011,11.7352236943262,10.9244148838505,14.7145217561374,29.5737707398085,16.6310297034986,13.6880972025061,11.8064377005706,14.9618939061538,19.0362077796772,16.68,15.8246627510657,16.68,23.087164111717,11.5178603054936,12.292223146886,10.2996809479898,16.68,18.0039435112041,15.760463684008,15.3281050433347,21.1993584609087,17.3770558758501,16.68,14.3963499585193,16.68,16.68,9.21039371762046,22.4033871508452,12.2666775762915,16.68,22.8884924922363,36.9837304680087,12.7834243822566,27.7097107996605,16.68,43.4762742642364,44.1532040109629,11.023027712836,14.8834218575818,9.85609559755366,46.6181320500923,20.3611034061385,43.595823297033,16.6454481237429,11.8997856103806,16.7792807457332,18.5764711493564,15.563398981845,19.1965479761786,13.1344305594818,16.68,11.8257751313553,17.6938908928677,16.68,18.5438994372913,17.0974078212905,17.1118402747079,33.8038209332552,23.4624529438385,32.0118554419417,16.4966123511324,33.238766629068,56.9912708702251,21.0979353926071,33.5777203852612,21.2840497544963,18.3554493861246,14.0158965663956,21.9176649611227,13.174746347489,12.8022625065062,26.9376167573167,23.9474316956988,27.6421186674229,37.3514985438783,56.1882393179216,23.2523976213943,31.8704728884517,22.2200571664065,17.0621035826571,11.3292070834609,9.2437607138948,14.9921127757336,34.5158230114205,33.458235636829,47.2628400923298,17.6565746986768,17.2259753626264,11.1898286555927,14.3792035374549,11.8575979049605,9.95290965165393,9.99415841414025,11.4587249165294,11.6653276303508,16.68,20.4234264026868,12.3954989234334,16.4201372868112,16.68,16.68,12.1307697690015,14.990880203406,9.78531649668936,16.68,15.1398159077959,15.603994451477,19.1944233829125,16.68,15.9879749952023,17.0160036565041,16.68,29.6055259912211,14.5462473541287,11.3641543175779,16.9062979470175,15.9893386980005,16.8411482360419,16.68,16.68,33.7424299178341,19.7406561145238,24.4045794685408,16.4967129665941,27.7064437366357,55.5640627475133,16.68,8.88917324135097,16.7425424828775,11.8264509661551,10.3703634802684,16.8250454410048,16.68,17.1982771563568,16.68,26.5383273014741,16.68,14.9671607412224,16.68,14.0490664725371,13.9000264792657,10.8244486236533,20.2341714442465,16.68,14.4798947072989,43.8842894575717,16.68,13.4238513060009,16.68,22.2158961466798,16.68,19.1807874821191,24.6976636413608,16.68,16.68,15.0139160871588,12.8557623169529,21.5423540257844,19.8669267324788,16.0161060561896,16.68,16.3694057548511,16.68,28.0728865993816,19.5139660435414,11.7592715201922,10.2344525554564,16.68,16.5678685550162,33.1498276511677,46.3857149487691,15.882647469935,15.9805070932121,23.0300659416913,24.187530768021,16.68,16.68,16.68,16.68,16.68,17.3268858815196,16.68,16.68,16.68,16.68,9.84697003572341,9.80850896647696,50.9108916706316,16.5026942306385,16.68,16.68,12.2652661483308,12.3020143562989,33.62544841185,16.68,10.1713538293505,11.5307378627578,16.68,14.2027883092372,16.68,21.2398960877835,16.68,13.0515221050038,19.8066587780682,12.5701576297139,16.68,10.7304168782808,10.5536226390298,13.955544385178,10.6721248047523,17.5431670949521,16.68,25.6028225304451,39.2216930973231,27.4661085729993,29.6297242881524,17.7357880051646,23.7055334030337,17.0976963236189,18.4399211344876,16.4571710759351,35.4526592928458,58.1201350035911,17.1280284119624,20.2713534828396,11.4680707694491,23.4427413520376,30.6528125683996,18.140097840587,43.1516038148855,18.4046256613771,15.7951087227432,15.6646593808957,16.68,37.6729404261655,16.1406685673757,13.8998974284775,19.4684103685628,16.8150615419143,16.68,10.8774523955169,12.2832734935444,11.0104216174573,35.629346634966,17.2003103656688,15.3704717026408,19.7030035983526,18.212414724921,18.7532578179678,16.68,12.9421846289252,34.4521000484372,48.5002455951954,32.9237224088586,49.0901424344526,42.6763835206966,17.1742584851573,16.68,25.9687380197773,15.7164074950047,17.8878617397936,16.68,11.1397722269892,12.8871488994943,26.8344136681326,16.0841262958717,13.1435477963315,16.68,22.1596366033651,9.9206986072619,10.8196616306497,13.9528708463518,15.1816106989463,11.8992233497,18.5983919639181,17.3417681582971,44.9577217469586,29.9744243517428,27.1888129133356,14.0269153987955,13.6811153475487,11.012186557417,10.3489928231459,17.788586519572,10.0681106803376,14.6176394339267,11.4301526763393,12.2131822328467,33.4394221876455,13.1296957359382,12.9642854236486,10.1606557252642,18.386378406731,15.8961490706297,15.4095863319194,52.4549174256553,16.4104568213731,23.5506008117656,25.0649487908485,29.8922938007608,14.7193824948375,23.028364631938,14.6744324615018,36.2314364714004,46.279204225794,35.0523596459868,26.0423190161115,12.2173167090815,43.0855745076148,29.9132407264661,15.4032590957191,16.4978959855703,16.68,9.83333112036914,16.8056052290599,27.7344514745429,11.4299325827248,17.8591658726732,40.5070558464434,42.3587028227747,14.7339662753523,32.2721969045279,22.1498830230593,15.7913870052154,14.1309450805581,16.901628449458,22.1396755626525,16.68,21.3999077212129,16.4510369623782,11.1622829215742,14.8252213961404,11.809654864541,18.5051803683025,10.7463019671282,12.9640771833554,13.6051241117788,13.5256537703714,16.4793258470221,14.7621858594252,16.7367383920008,10.9081089730643,26.5350349682222,11.1505399340634,29.7808523222035,13.7483597753718,15.0324655245645,15.9325437319125,18.7029024339619,25.4548452050823,17.3160396651081,20.1222984024005,16.68,15.0961253815851,12.8576515667752,17.4763136407202,16.68,26.7407660997899,12.0307486016885,16.68,41.5503782967614,10.531888689254,17.2294981826111,41.9755954224406,14.9936332781987,10.4860680551092,12.5712690430579,11.6207223538772,16.68,15.7786377694269,16.68,21.8276742485739,40.5962501369275,41.6086654386201,30.4956403718344,17.2044895799178,16.68,28.8830029927523,12.0928262446015,10.2267495003739,9.95781853400072,13.5078161412878,47.4481439553923,31.1627677379491,27.486652744997,16.2228647918902,13.0482687980373,15.9914134565889,24.9764770910847,12.7165275309551,10.9883389450998,15.6037360167073,16.68,11.4600969579476,16.5155786277575,16.68,15.7306022179473,16.68,16.68,16.8766011567417,19.2613425917573,27.2837187964625,29.3661315914359,11.4399692413647,16.68,12.3306992239581,15.9581752408553,16.68,16.68,14.8638069332976,17.3638856354913,22.2931185936591,17.0255742887895,16.9869561101906,11.8486420307905,17.1276601365388,12.1524488943748,18.497668258654,20.473790646806,12.8116921221482,10.1098323161139,10.0822677445012,11.6860608112193,16.68,20.3990825737132,16.68,25.0945080421162,12.7987198804085,46.5873158251873,22.2155043417062,17.9631328621805,18.9867199470085,18.4981905113239,29.7113768361551,32.2445015512696,11.2495880426101,28.196776363248,32.7558477811651,51.9109384314761,12.8301040550929,16.8601243192284,12.0738896854717,9.79454185434176,14.4608126269118,31.0182129767014,20.6061371614753,28.3469209431867,16.6101831821029,15.4672711327864,11.6758830045199,19.0454383110105,33.9055847620236,15.920848220639,15.4837626094626,17.5983181433517,11.2307785845419,23.9125516641435,16.233264172469,13.0570839145875,10.657609347797,20.9252248063682,17.4002908871837,16.188414878867,37.1407755043618,15.3825292561539,18.4492109889448,27.6987272622306,50.2297202715081,10.8259250431429,15.4940864356875,10.8752150469367,13.9633785376547,14.7602050885242,46.4284819697823,26.4782660328511,27.6320775168449,47.2563184864166,22.2114415618966,13.1787776440038,17.9192778847246,12.7176400718245,14.672756877832,12.6813802622536,26.2173705548425,16.7135816849433,35.4785631460474,15.9603813147367,13.1830459238202,10.6399340077469,10.0181355953528,17.1070733805407,35.2789320373309,23.2739041914629,18.7897164032723,10.4567741874491,16.4902551786371,13.7649123635496,11.7380533985444,16.68,18.7776759360067,14.9356073535909,45.2293981322472,36.1955177619101,17.5112819703805,20.0400082642775,16.68,14.210921189156,14.6643285923505,11.1912648890624,11.402815978231,12.2108386695128,17.7698311806086,34.4669201725083,49.3499631355855,14.1641264558978,16.6924823556986,16.68,18.4719931078062,17.3893972158497,26.4520086582608,24.8706766115301,20.181918520936,41.5072570212229,44.7785921549703,47.522224807328,24.879618925748,15.3632956518622,13.4687862165533,15.6968805708313,15.780320149081,16.68,17.2075497831091,11.7004244145097,29.9215398420638,11.1661848737336,34.2611184213833,14.9811439469662,18.4855580160331,16.0105780754978,15.3289868683009,16.68,10.2537356277995,12.353142959671,11.3594451222606,12.1396384374655,16.4790345583665,18.5535634921395,17.0884221174595,16.8396780297041,13.5151683847894,21.5325632536945,11.2564784307352,16.68,16.9648184846706,12.2654400548553,11.6249521380404,16.68,16.4906812148832,12.1223786059691,16.68,22.4070707731416,21.6142518196325,15.2791182901742,11.1768839970021,23.6231509021291,38.2708804044368,15.9748898074284,16.1175965432969,16.68,15.5355828195617,9.68238869271044,13.7399877494003,13.6882222967213,22.7222438731694,15.1288775648972,17.3265925991241,18.470844165768,16.68,31.8212406726448,23.966451232356,19.2983246563922,10.2182275537015,23.050480588873,21.7814104485892,20.679141274306,10.648667148111,11.1212831952991,10.7375247025114,15.7567953481744,19.2206929542643,16.68,16.9835008528311,54.4610900503321,16.68,16.68,29.0374528438059,27.3913049582234,16.68,16.68,21.6822336487601,51.0008882017405,17.5806359349231,17.2213823504753,16.4906900922353,18.6526957626933,30.0009036583686,18.966928792424,17.5258844274516,15.2837729079295,12.5826047807339,16.9353993832765,20.4985206908581,13.9514323992725,10.452164989043,31.3500940098057,11.7751061495656,24.1395470517056,15.7659551938093,17.7084797734583,20.4196666181395,36.0228717624542,15.1436348057617,11.210861438116,10.3298055273984,15.8241257462025,10.1635688504514,11.2468641668705,16.68,10.7823924285537,29.3913121532347,12.5215109509055,16.68,13.561851131592,16.68,12.3740521000813,16.68,17.2358654253559,35.0764936427153,23.294512189219,16.68,20.7627707628527,16.68,20.6191608137655,44.2388956467741,16.1711282539008,38.9553170938922,21.1648441000142,48.8656890116727,15.9002454049091,16.68,13.7697369946619,16.68,24.6086019413126,16.68,32.811630201143,39.7812396991948,48.9059492410057,23.6148227746196,16.68,16.68,22.9674538216578,16.68,54.3929821149218,22.7049976868709,15.4158585382189,48.7339792489824,36.1514981324626,18.3712685830114,16.68,15.6905773444118,16.68,10.0418903844677,15.4663714249773,16.68,9.46672463180816,15.1005481323544,16.68,16.68,16.6482150522333,16.68,13.2051134301445,16.68,14.7798365316469,20.2762954872748,16.68,16.68,28.5546747773305,53.034302847696,39.4719216824492,10.2477526375002,11.3331896687754,18.3659780567075,21.1472942868964,15.6314492918463,15.8080114041737,13.2649452299151,15.8894388195193,15.5947409111785,32.14349010433,14.6604317226181,16.8226083983255,17.1494191322472,20.9503179803387,16.68,49.7978072212735,16.5119628521164,16.68,27.7221799803306,54.3750560890548,28.0457742554649,15.411787036625,22.1329651615993,14.9950899310982,17.0550736389242,17.5279188165528,15.1951171526904,17.1792239860148,11.0148360207629,12.0530052669666,14.9117023250156,13.5472022044137,11.440022254367,9.82162829121907,10.8889815218127,15.0496038137752,11.4065086314999,15.2251167474689,15.3833688929354,38.6688707144079,16.6941920538848,22.944340314469,16.68,20.7517753804624,41.0119039273349,24.896474313159,15.2908864556315,17.4593311741559,23.0456481088177,12.0973080082605,29.9382091401136,13.2131188451171,10.7007232857088,13.8203744983293,15.5679263830091,23.2449452057981,46.4015682385152,40.6627709835978,20.725731700937,10.7327622521818,25.2962572971496,28.2357481110869,40.5337693722778,25.8535770467071,47.2530298055965,29.1320554683511,47.0205244871596,18.9247653839401,31.166090413263,13.1186536557325,14.7770779919806,17.4210998216505,17.9472734969824,19.4006429644964,15.0607218823026,9.87044431172228,11.7627090380607,10.9497778565037,14.743192276362,29.6520518937263,16.7149883388201,13.7443204997121,11.8319935395223,14.9894028823804,19.060213857947,16.68,15.8727973860228,16.68,23.1157790878696,11.5554724099648,12.3180683240432,10.3281133963123,16.68,18.0693311759513,15.8152680739641,15.3775811525042,21.2609088571874,17.4258897355436,16.68,14.4529118891198,16.68,16.68,9.25820215198316,22.4835541756452,12.3348565065121,16.68,22.9543001693299,37.0377261031134,12.816998101332,27.7357995473827,16.68,43.5240594037106,44.1919053557547,11.0512372504328,14.9148387393126,9.87268370783825,46.6495638588708,20.4073736710925,43.6386289047479,16.693998977056,11.9424901439409,16.8095627229638,18.6060975244967,15.5733181377298,19.2836458984229,13.1904425563001,16.68,11.8457377818538,17.7176237202079,16.68,18.5835893928142,17.1367120298536,17.1350609694956,33.8685738505491,23.5490866567422,32.0862630632332,16.5643916746636,33.2418522155311,57.0425263462143,21.2084580362358,33.6294660072466,21.4043635529336,18.4147227825155,14.0431552874163,22.0013201835907,13.2190853971036,12.8297784248623,27.0202926323965,24.048238452092,27.743629842969,37.371338755613,56.1568431866759,23.3385118736708,31.9732306476416,22.2889797573505,17.1483095404527,11.3585711742383,9.31494929820611,14.9947099006851,34.5065633595882,33.5229782400983,47.2504714279272,17.6992842570046,17.2447957939386,11.2141024878042,14.4296603613218,11.9160403467111,9.99317698833533,10.0032144916537,11.4835352447385,11.6860346936214,16.68,20.4311437431832,12.4426648166564,16.4506491539357,16.68,16.68,12.1972472072002,14.9877522957424,9.89635614229285,16.68,15.1328501164293,15.6936109265113,19.2347944873171,16.68,15.9635223486313,16.977723075759,16.68,29.6596256994339,14.5818832914713,11.3853704239782,16.9347858106213,16.0173550790453,16.8673391169299,16.68,16.68,33.7663600572049,19.7752106712299,24.5011190869322,16.5454249451118,27.71207944209,55.6186709011882,16.68,9.0105185494128,16.730770724937,11.8652966883014,10.3814479210226,16.9024381890114,16.68,17.2020785523662,16.68,26.5313284067495,16.68,14.9588033657752,16.68,14.0639749790845,13.9547468683119,10.8597722244586,20.3032084538292,16.68,14.5366676301567,43.9504323166964,16.68,13.4731226029684,16.68,22.2933295336644,16.68,19.1763896556888,24.7527299765687,16.68,16.68,15.0455006505288,12.9056722349779,21.5344041869867,19.867609631573,16.1154443428334,16.68,16.3373909935192,16.68,28.0660727004515,19.5159536490445,11.7988666560459,10.2679588608444,16.68,16.5436421342342,33.2897141376634,46.3669881749389,15.9215774493721,16.0133741735593,23.0698656658063,24.2392812925608,16.68,16.68,16.68,16.68,16.68,17.3414344173273,16.68,16.68,16.68,16.68,9.85669626280965,9.82036986459566,50.8770987162612,16.520910332568,16.68,16.68,12.28774959698,12.3259409107769,33.6416816741889,16.68,10.1841080218307,11.5546957911284,16.68,14.245687597211,16.68,21.3222202570476,16.68,13.0936701396988,19.8701605646179,12.5920715605053,16.68,10.7454807709401,10.5630442701878,13.9759419335105,10.6891125159393,17.5992389311652,16.68,25.6347497764339,39.2911624026191,27.5106831627248,29.672398433629,17.7632491985564,23.7330783672359,17.1650220210834,18.4570752031059,16.4776081168159,35.4904034376514,58.0827704007449,17.1450905921966,20.2957713419944,11.4872185603598,23.4770221817494,30.6820709104985,18.1642344832708,43.1458058206693,18.4199723059968,15.8155887659228,15.7121180702839,16.68,37.7406368703978,16.1589934002693,13.9411130584654,19.5142171062413,16.8501314616697,16.68,10.8943739939322,12.3230868309224,11.0274497154709,35.668134594737,17.2402082603573,15.3896745584846,19.7251720385931,18.2323415733786,18.7821001295536,16.68,12.9608201157702,34.5057282623411,48.4979137703349,32.979479923867,49.0657607905938,42.7029311595335,17.1844836058434,16.68,26.0155294102383,15.7388325825643,17.9324625541738,16.68,11.1529948377633,12.9264070384519,26.9002015101525,16.1450132037461,13.1780308129095,16.68,22.2441513378911,9.93624940232194,10.8417075899525,13.9701934045067,15.2217366108496,11.9227193175838,18.6061582967452,17.390513204479,44.9288138819064,30.0627541922499,27.2312752943577,14.0473601439178,13.7083151641358,11.0348131936596,10.366044080597,17.8275185566463,10.074515238663,14.6708125169241,11.4487109549395,12.2299800641289,33.5078040575537,13.1634945816201,12.994449591755,10.1733096342442,18.4159693436772,15.9069110773343,15.4258657016961,52.4330358898572,16.4300023395704,23.6298291703624,25.1017968124437,29.9643688146603,14.7688859560546,23.1005921312436,14.7007101802035,36.2649921114444,46.2869870183912,35.0771829682124,26.114752737672,12.2587504183734,43.1143244928271,29.9525698081495,15.4251052873157,16.5188498741181,16.68,9.84181795052699,16.8245656556434,27.7759894548044,11.4429788776007,17.8764559028525,40.51114254958,42.3926315792621,14.7672388942788,32.3190422754154,22.2125071460813,15.809867233209,14.1706772201499,16.9172113371475,22.2336646415678,16.68,21.4304805176474,16.4684188518705,11.1892575412927,14.8824169027104,11.8282014644637,18.5351305764009,10.7726113504207,12.9902881361246,13.6233208671359,13.5471783059563,16.5352672626442,14.7893505724525,16.7513178348241,10.926423654721,26.5881666107744,11.165116146731,29.8066004536385,13.7836995348134,15.0521354913208,15.9559408892998,18.7230498454049,25.4954500706405,17.3714860754451,20.1622954675074,16.68,15.1270257759046,12.8941496005359,17.5126408000905,16.68,26.761189516017,12.0892675689858,16.68,41.5510810233959,10.5490155229354,17.240688869304,41.9770046085921,15.0123345574998,10.5019997441919,12.5971753404798,11.6322968948248,16.68,15.8327037027599,16.68,21.8780503568827,40.6081590815721,41.6215790800651,30.5899831496797,17.2701656823547,16.68,28.9268896433722,12.1190620408541,10.2522120073682,9.9689366970269,13.5548270757128,47.442686797137,31.2255418912754,27.518443408351,16.2660196030989,13.0784169102419,16.0554975265038,25.0329162069304,12.7516948970606,10.9999077560701,15.613590351243,16.68,11.4910905488274,16.5318618110102,16.68,15.7084264691109,16.68,16.68,16.8647432891921,19.3207937794318,27.2931990372842,29.3816147045002,11.5022183547532,16.68,12.3662501643342,15.9357997761277,16.68,16.68,14.8711162689544,17.3894796582478,22.3327816411604,17.0429644627911,17.007724064234,11.8768759960447,17.1450893087807,12.1679931740697,18.5095316429841,20.5149168907193,12.8346763050366,10.1199998095362,10.0935242941098,11.7125118001008,16.68,20.4272379373048,16.68,25.1371718259506,12.8211688295925,46.5859047380372,22.2657659272071,17.9993528969963,19.0526337321064,18.5125411174004,29.7782436789977,32.2805984392058,11.2690848703506,28.2209092324267,32.778274078319,51.8964192479848,12.8467814010593,16.8861752806419,12.0891229349217,9.80709607667663,14.4892731084985,31.0869137548157,20.653400114487,28.3771384902657,16.629015766965,15.4872162194151,11.6912466780275,19.0706214862774,33.9600127259683,15.9790505455867,15.514510244801,17.6592397177504,11.251480100587,23.9468131001354,16.2532535914887,13.0774455768704,10.6682030713665,20.9631343419032,17.4191176874589,16.2043920760578,37.1676864384643,15.4219708277763,18.4680389650586,27.7557256770155,50.2114039960368,10.8429666165347,15.5130708865146,10.8972224985788,14.0027902108372,14.7797877243971,46.4142078967815,26.5560754658728,27.6893346643438,47.2698401525676,22.2394179934324,13.2316201498875,17.9386064507241,12.7335176003049,14.6970474636992,12.6988418047466,26.2631193895806,16.7294946215888,35.5335423022539,15.9848003388355,13.2064513936857,10.6520808801318,10.029661739949,17.168632808919,35.3074540583399,23.3096959615336,18.8210688398528,10.4691434573447,16.5239509509055,13.7855036742827,11.7668677260032,16.68,18.8505598036117,14.9977486286745,45.2534552799663,36.2647018142196,17.5281196081075,20.0737524623589,16.68,14.2273573294585,14.6825945663722,11.203824315306,11.4224278787647,12.2382454902466,17.7937403521113,34.4939545155734,49.3431304695148,14.1944923041311,16.7133975591336,16.68,18.5324875246613,17.4122403720797,26.523685379509,24.9107083421542,20.210798025594,41.5083071105323,44.7918426329147,47.4938555454007,24.9033604224689,15.3786694429301,13.4869846261363,15.7183049816499,15.8029126352204,16.68,17.2337842004599,11.7152756433774,29.9705405692975,11.1919118161493,34.3286675664438,15.0139547526649,18.5121388044864,16.0714822330896,15.368410202918,16.68,10.2655819896355,12.3772657975479,11.3796745383793,12.1549788637134,16.5005957839534,18.6270806709726,17.1438978256803,16.8539604540099,13.5449958867669,21.5415062567407,11.268724279849,16.68,16.9772009747136,12.282755445403,11.6406002996089,16.68,16.5021846402177,12.1537852066442,16.68,22.4419556080057,21.6430664633343,15.3021576002017,11.194594153612,23.6482244130683,38.2970620933878,15.9919609713679,16.1366671235254,16.68,15.567232028246,9.71505401881772,13.764737655981,13.7339303419306,22.7716610572493,15.1542273894388,17.3434262647781,18.4942460227819,16.68,31.8467146166729,24.0278492472263,19.3558871544831,10.2525499192657,23.0805651962153,21.8290593970525,20.7501819270954,10.6704900580747,11.1344959936419,10.7533160135085,15.7781487319203,19.2580829494271,16.68,16.9662875242023,54.5008810103064,16.68,16.68,29.0641774609225,27.4275751730608,16.68,16.68,21.7278407038365,50.9941460035587,17.6122251077518,17.2254145072069,16.5553109047373,18.6872256947678,30.0739577825371,18.9912427068681,17.5442143832829,15.3099575864808,12.5994574088415,16.9511254663107,20.5239557800219,13.9734262023929,10.4690760150298,31.3717304752896,11.797773893114,24.1771871863982,15.7822671754541,17.7252947451646,20.4914135008701,36.0911647602564,15.163375237774,11.2277735103732,10.3412088581966,15.8619509992437,10.1725693774119,11.2712828902499,16.68,10.8054026514937,29.4475118349299,12.5634891208577,16.68,13.5901706337248,16.68,12.4136567280503,16.68,17.2773484436385,35.1173355657095,23.3202443040944,16.68,20.8003659467552,16.68,20.6397781044436,44.2399028238722,16.1898502040692,39.0109384845692,21.2317133129548,48.8467531596049,15.9444096401623,16.68,13.7955160895286,16.68,24.6621543214807,16.68,32.855990658663,39.821199096744,48.8942647037872,23.6856772529321,16.68,16.68,23.033800444017,16.68,54.3475383967541,22.7654612856787,15.4459890689886,48.7587319159006,36.1695864510421,18.4065469252013,16.68,15.7194137245994,16.68,10.0737990068562,15.4966469244092,16.68,9.51318088663486,15.135517642962,16.68,16.68,16.6719164503088,16.68,13.239672895162,16.68,14.8284986939154,20.324619364111,16.68,16.68,28.5790822750305,53.0041300649935,39.5247830799831,10.2601735749588,11.3670432854518,18.3924769111653,21.1612976123341,15.6668446731227,15.8363121480364,13.2866872191389,15.9101983680068,15.6144919321329,32.1654572805613,14.69029010062,16.8329524987101,17.1675292288793,20.9842199255159,16.68,49.8133896259759,16.5579612522149,16.68,27.753136877308,54.3520975058257,28.0703603322891,15.4346858464041,22.1627637559634,15.0258518615801,17.0682921172756,17.5412942151478,15.216120922172,17.2048963455241,11.0292349723649,12.0765637689865,14.9651141865121,13.5854267809618,11.4655891329715,9.83236395796523,10.9054951340847,15.0702811498771,11.4273552292249,15.2439010637446,15.41072795493,38.6988380610417,16.7038008814285,22.9759896087274,16.68,20.7968978665052,41.0101081384372,24.9139247632416,15.3498971922371,17.4870548010184,23.1261936910579,12.1129041587446,29.9817824001874,13.2349122507637,10.7016031238862,13.8378651428235,15.5864212086842,23.2700640916378,46.3796001303982,40.6913809964821,20.7142782727668,10.745781787747,25.362560954216,28.2596480139621,40.5830358176853,25.8905468319291,47.2392087035932,29.160684366378,47.0127799921989,18.9414163935511,31.2200936150485,13.163886932379,14.7995435285781,17.4726624296234,17.9928071497733,19.4222062115514,15.0811563918658,9.89918747781289,11.7813458751659,10.9672946023529,14.762663137558,29.7084020964158,16.7779543755351,13.7859594448985,11.8489715375033,15.0084222485206,19.0748277241684,16.68,15.9046646133787,16.68,23.1350433582401,11.5827757432264,12.3357182888872,10.3469652948775,16.68,18.1170118571782,15.849223437678,15.4092053231647,21.308440595285,17.4570844284629,16.68,14.4877840878327,16.68,16.68,9.2929675118667,22.5474110638994,12.3864513840124,16.68,23.0002203524206,37.0723231031738,12.8415726565374,27.7472624557907,16.68,43.5541339827748,44.2157168753068,11.0707351596711,14.935439071354,9.88377230022273,46.6658222519576,20.4381364462332,43.6653932017002,16.7285338563272,11.9715629752487,16.8310635985938,18.6255140018187,15.5805267915133,19.3414712168582,13.2313237706706,16.68,11.8587377711902,17.7316883688009,16.68,18.6122043619963,17.1640520365346,17.150715042541,33.9131731360289,23.6124087018988,32.134485586467,16.6135197081486,33.2368612528957,57.072150703286,21.2914316849131,33.662827545461,21.4957910696101,18.4577645965796,14.0620219163715,22.0596710568204,13.2512025788881,12.849334435425,27.0785541389256,24.1239474845018,27.8181663989987,37.3775748897437,56.1256779364057,23.4003572711681,32.0470751721724,22.338739079092,17.2137834173901,11.3799724543228,9.36235753315031,14.9948814812754,34.4916532335159,33.5668119273795,47.2357517988157,17.7277095590031,17.2573138574641,11.2310706452247,14.4665325731556,11.9579036355801,10.0198794746384,10.0094507256236,11.4995787114988,11.699877611933,16.68,20.4343368765765,12.4770215592245,16.4707163801783,16.68,16.68,12.2418508142272,14.982757655482,9.96642077163337,16.68,15.1266019602278,15.7507709680191,19.260879760974,16.68,15.9416027177753,16.9499978562999,16.68,29.696940980665,14.6061755115718,11.3986346901404,16.9537143077576,16.0369104631544,16.8857617669473,16.68,16.68,33.7783219991483,19.7983958854732,24.5667408660719,16.5782951673816,27.7116572630712,55.6515482616209,16.68,9.09139459744518,16.7195844261248,11.89239752024,10.3893818566726,16.9621048055643,16.68,17.2051540207151,16.68,26.5273080361409,16.68,14.9497028868356,16.68,14.0735540157365,13.9961745898046,10.881962396501,20.3518111519729,16.68,14.5757402043787,43.9940341987975,16.68,13.5077014123167,16.68,22.3480609968518,16.68,19.1731411044239,24.7867475076287,16.68,16.68,15.0680152499864,12.9421263043181,21.5316494173439,19.8690627539424,16.1810512568151,16.68,16.3139912279793,16.68,28.0604054963282,19.5146992765249,11.8256515021863,10.2906205388192,16.68,16.5214505750626,33.3924370364387,46.3419419496351,15.9477700248447,16.0354206234011,23.0976172541773,24.2733245649162,16.68,16.68,16.68,16.68,16.68,17.3512217740958,16.68,16.68,16.68,16.68,9.86244560272112,9.82753327193262,50.8481572526071,16.5312043669181,16.68,16.68,12.3011775913594,12.3400002997375,33.6446412340712,16.68,10.1913286102539,11.5702857993319,16.68,14.2716755870494,16.68,21.3792135768399,16.68,13.1236261640115,19.9107529563242,12.6058476960257,16.68,10.753247974797,10.5690934202343,13.9881415220927,10.6995064252548,17.6363187725615,16.68,25.6496626092163,39.329955377553,27.5326635659308,29.6955648752633,17.7804891822841,23.7467792629444,17.2130367988488,18.4650577939723,16.4879721848924,35.5075820217613,58.0477742353787,17.1557732268218,20.3098557028659,11.4978010145898,23.4996434474987,30.6958989745082,18.1796497474365,43.1301482299436,18.429321643008,15.8282965646959,15.7430611420684,16.68,37.7794346662052,16.1716475390142,13.9688197102912,19.5433634272215,16.8672877556752,16.68,10.9053649113385,12.3477208782055,11.0370736666656,35.6879441903087,17.2662248973648,15.4008339592162,19.7369754510503,18.2426850266191,18.799283692928,16.68,12.9722666679056,34.5363488308514,48.4872262804993,33.0112839211607,49.0404614638677,42.7128823423567,17.1896352087232,16.68,26.0428168849696,15.7518336632528,17.9602073085381,16.68,11.1608084701454,12.9519031833824,26.9385810900088,16.1866805267353,13.2011827704472,16.68,22.3025432127671,9.94618227686197,10.855626141465,13.9801722062468,15.2478577936096,11.9376346511163,18.6100749895412,17.4214207551406,44.8969391278618,30.1203557449103,27.2555565275525,14.0602172342823,13.7257865995267,11.0497328642137,10.3761947410043,17.8526580277723,10.0778435531437,14.7071161201772,11.4604090183564,12.2395767763117,33.5494489372043,13.1853643928127,13.0137472565323,10.1807518181326,18.4339559615371,15.9135871622811,15.4357408839571,52.4096537353796,16.4428754387325,23.6825982547576,25.1213860620856,30.0098950972186,14.8029685521923,23.1484562620961,14.7170956793989,36.2792645968958,46.282443385412,35.0864091577469,26.1611716208026,12.2868913367124,43.1252528364854,29.973823595217,15.4368759175999,16.5298180341146,16.68,9.84647834738353,16.8361223959666,27.7991146754493,11.4504127891427,17.8854515649726,40.5053620648118,42.4072896205541,14.789076704535,32.3452201635015,22.2525793349407,15.8214823123768,14.1970596768516,16.9265401515683,22.2973929267362,16.68,21.4468394666427,16.47903885278,11.2072097676822,14.9215500207212,11.8397732784542,18.5528653178929,10.7899225876611,13.0075756766238,13.6343219985686,13.5603827105965,16.5732470610034,14.8064174142505,16.7585367442307,10.9379575710655,26.6202229025578,11.1740899447511,29.8178334300273,13.8091278389828,15.0644168334022,15.970391381746,18.7329814615217,25.516337722571,17.4090574032067,20.1863937866787,16.68,15.1462655938379,12.9159645497502,17.5329029812102,16.68,26.7678444098222,12.1223771271795,16.68,41.5437352536344,10.5593439767881,17.2461375320686,41.9685530899168,15.0227448313015,10.5117001530296,12.6130293675985,11.6397852362147,16.68,15.8702150231351,16.68,21.910293849678,40.6082890080803,41.6224546490734,30.6484622899085,17.3126821887479,16.68,28.9463286871288,12.1378433121148,10.2662536137289,9.97606114823799,13.5833832277225,47.4275562438936,31.2631634492142,27.5343034007671,16.2931806670719,13.0978085415196,16.099064172231,25.0660559576914,12.7739090405651,11.0079188231511,15.6200786159094,16.68,11.5096970545079,16.5402348098679,16.68,15.6916777427629,16.68,16.68,16.8565280118244,19.3533100275486,27.2931242712031,29.3902803852391,11.5388150861936,16.68,12.3892041972892,15.9194028315063,16.68,16.68,14.8744233289245,17.4046925692277,22.3563068175386,17.0525315971809,17.0184294219105,11.8955760391963,17.155475149168,12.1773113001332,18.5157358305991,20.539814041893,12.8494575495111,10.125799574044,10.099543021977,11.7296025986012,16.68,20.441806879682,16.68,25.159911664654,12.8357382938878,46.5740804780921,22.3059054084659,18.0206802907602,19.0972029611587,18.5194989315334,29.8197886448327,32.2993199966533,11.2811898508881,28.2303935250241,32.7856967872799,51.8777901903733,12.8565017130463,16.9013274565045,12.098448681845,9.81466322378319,14.5073566472665,31.1285703368762,20.6830735998635,28.3914063644716,16.6388209485765,15.4985231477952,11.700964420617,19.0862538543668,33.9919820640688,16.0190243767765,15.5338245141815,17.7001441924776,11.264520790891,23.9656689376671,16.2630276627989,13.0897225610694,10.6745493834694,20.9859110597735,17.4306888105533,16.2139924744786,37.1783606350541,15.4474833914792,18.4796579633489,27.7898597358318,50.1903082685733,10.8532834866897,15.5230607117384,10.9106169569245,14.029162351605,14.7919361835807,46.3950495629292,26.6071646618562,27.7243908305405,47.2694432821427,22.2549364159551,13.267856128889,17.9498452491663,12.7433909780624,14.7120143858941,12.7085640452951,26.2904881719604,16.7394114172559,35.5657122471691,15.9989970463516,13.2227258276399,10.65950966917,10.036421062815,17.2095831236271,35.3191816670532,23.3290175155566,18.8403418562126,10.4762304909156,16.5458852047691,13.7974433866473,11.785818526011,16.68,18.8994253530702,15.0403513010484,45.2598561542097,36.3073361376526,17.5382323148935,20.0945947711135,16.68,14.2369303077347,14.692032565762,11.2116281851178,11.4343654210023,12.2560703614687,17.8087652363142,34.5050637565329,49.3293212375691,14.2148362625098,16.726371849614,16.68,18.5725044093857,17.4254116300914,26.5688893283466,24.9339270338136,20.2285253416576,41.5010100987102,44.789769839745,47.4650337284703,24.9136796027278,15.3873334798718,13.4973286317819,15.7320324149974,15.8183018707172,16.68,17.2509797588352,11.7239616612489,29.9979956309569,11.2088817999989,34.3682735728341,15.034301737743,18.5283680466165,16.1123397787918,15.3944355530943,16.68,10.2732745133233,12.3918680861359,11.3924027538373,12.164962897166,16.5129331345981,18.6767765064369,17.1818265198104,16.8620581341281,13.5642763966865,21.5429520842209,11.2757783528012,16.68,16.9841217529403,12.2931425816073,11.6498339699765,16.68,16.5078685498825,12.1728224454666,16.68,22.4622614435163,21.6591722680578,15.3148147672127,11.2055875854485,23.6606650958769,38.3080888186451,16.001295967726,16.1439916205072,16.68,15.5867061428747,9.73657930426919,13.7801778792372,13.7646025218799,22.801342724521,15.1703085084033,17.3542111562958,18.5082919547671,16.68,31.8573581035627,24.0681328832331,19.393890464603,10.2735387019798,23.0966919016453,21.8595462042684,20.7985443024072,10.6844996107009,11.141996555856,10.7628053192595,15.7905308896106,19.2830244751324,16.68,16.9598357473401,54.511350980912,16.68,16.68,29.0788562946594,27.4431324045663,16.68,16.68,21.7607186690836,50.9803336472063,17.6303626988724,17.2259890166498,16.5996769543062,18.7081488245592,30.118566373578,19.0049513698053,17.5544788943479,15.3267301438337,12.6091297865785,16.9611330149326,20.5363355133083,13.9872978467203,10.4796103785134,31.3783967450559,11.8124038780341,24.1968574130995,15.7924526334241,17.7350501945005,20.5407180679464,36.1320532651484,15.1746340709792,11.2388238872968,10.3478411960926,15.8859471591846,10.1776738469033,11.2870300542759,16.68,10.8183472568581,29.4806533145758,12.5914344213953,16.68,13.6069700778041,16.68,12.4381392130249,16.68,17.30377360965,35.1319441111744,23.3323008364505,16.68,20.8235860220197,16.68,20.6498290632669,44.2308680882516,16.2016089618534,39.0400701936521,21.2744882688078,48.8238089174223,15.971109378294,16.68,13.8115437932741,16.68,24.6905690740012,16.68,32.8792806647332,39.8408054294708,48.8786042993904,23.732540495013,16.68,16.68,23.0889913761261,16.68,54.3053710573033,22.8121115149407,15.4636277433619,48.7541899823756,36.1703091817866,18.4278740790424,16.68,15.7353420357542,16.68,10.0952105592055,15.51121552272,16.68,9.54220813412442,15.1548151027809,16.68,16.68,16.6815384977287,16.68,13.262457790311,16.68,14.8565572032501,20.3532626615479,16.68,16.68,28.5912330591947,52.9751446704964,39.5533371885928,10.2684866302676,11.3884409200937,18.4082766861798,21.1651451779474,15.6832040742462,15.8512860196184,13.2988074882316,15.9224959681445,15.6272816472955,32.1730772135327,14.7092689569966,16.8390221671072,17.178030590566,21.0050036893076,16.68,49.808838589768,16.5879108131835,16.68,27.7698155561551,54.3260480047348,28.079984448258,15.4486688205395,22.1802564285784,15.0458562126463,17.075140316331,17.5495930798986,15.228800552369,17.2220267190606,11.037563399399,12.0920903910228,15.0011001898061,13.6109841490767,11.4823511960207,9.83896896034668,10.9153864117969,15.0829823337058,11.4401551634618,15.2549339329795,15.4281528784847,38.7114780393879,16.7098167943135,22.9923288792092,16.68,20.8257425368161,41.0018400079514,24.920346518977,15.3905026900306,17.5045289864786,23.1793656481221,12.1240252510466,30.0052974146102,13.247278500111,10.7030603331139,13.8486620431433,15.5964868032249,23.2817041564093,46.3584498486999,40.7037023122814,20.7179462741924,10.7538955094418,25.4033868795601,28.26829434922,40.6075079471257,25.9107806208287,47.2228546883919,29.1737204816232,47.0017872463874,18.9518113698403,31.2504144892753,13.1931006498974,14.8131248053836,17.5068893035906,18.0224284578346,19.4350154971231,15.0937600415119,9.91840030226868,11.7927282458052,10.9786322033012,14.7740793854314,29.742943924881,16.820938535382,13.8138129210831,11.8590553217348,15.02007974996,19.0812626257132,16.68,15.9228065056001,16.68,23.142776874281,11.6008858720021,12.3464997845399,10.3583154338631,16.68,18.1507955294339,15.8666018501879,15.4264805148664,21.3451758193664,17.4757927120135,16.68,14.5054547518516,16.68,16.68,9.31597653259653,22.5996368403516,12.422155135487,16.68,23.0283167216879,37.0881367328629,12.8580064961718,27.7460519897658,16.68,43.566052396295,44.2249705036591,11.0831045686634,14.9465759909022,9.89241417047804,46.6672657121396,20.4540900859972,43.6762031185087,16.7505564352416,11.989112882459,16.8447324185455,18.6357299485469,15.585545642997,19.373015285489,13.2579731883974,16.68,11.8662581397724,17.7378791512361,16.68,18.6305770020508,17.1808580946365,17.1598122181326,33.9386307407284,23.6529395897512,32.1547580127698,16.6456993270956,33.2249780860539,57.0770479492136,21.3477469635702,33.6787099577934,21.5593715609054,18.4859300282122,14.0736041502568,22.0947325264924,13.2721938033002,12.8616591810111,27.1125396166122,24.1750822274947,27.8662793111051,37.3701629661686,56.0947756130334,23.4396348029742,32.0924830539435,22.3704537559179,17.2593222182654,11.3943797837895,9.39021484173015,14.9940575088949,34.4710179898211,33.5899206184347,47.2187530472741,17.7436889574287,17.2648959709254,11.2420081669962,14.4909433468327,11.9849635826778,10.0353085002927,10.0140939929673,11.5087873895206,11.7081875512025,16.68,20.4355556524547,12.49960600229,16.482570732271,16.68,16.68,12.2689288343079,14.9779905446121,10.0052313039612,16.68,15.1226389394492,15.7808046824243,19.2741029849369,16.68,15.9240143129076,16.9348780655015,16.68,29.7174747312913,14.6204621242453,11.4062244249351,16.9640973258212,16.0491350253251,16.8967876357728,16.68,16.68,33.7795567559233,19.8116512527808,24.6019492925859,16.5970067706197,27.7059419858881,55.6593120293786,16.68,9.13897983031278,16.7113631100725,11.9097000746951,10.3951089394918,17.0046371373624,16.68,17.2102179251093,16.68,26.5332009515898,16.68,14.940887813475,16.68,14.0790484925721,14.0242392462903,10.8946576559187,20.3820328273383,16.68,14.5992680524457,44.0132057642468,16.68,13.5288033333343,16.68,22.3816878303482,16.68,19.1738827788519,24.8001405268018,16.68,16.68,15.0822514333932,12.966090741829,21.5389139458036,19.8727639613939,16.2183377900139,16.68,16.2998162220128,16.68,28.061720291263,19.5105598349131,11.8415610064814,10.3053382674034,16.68,16.5042859808471,33.4577414644592,46.3119993242754,15.9637993952859,16.0480182678542,23.1136980258014,24.2896944046161,16.68,16.68,16.68,16.68,16.68,17.3569043453101,16.68,16.68,16.68,16.68,9.86510468185176,9.83072238078156,50.8240997364059,16.5339602556622,16.68,16.68,12.3059467097449,12.3450724425524,33.6343479690664,16.68,10.1945914966122,11.5779938986746,16.68,14.2823362316889,16.68,21.4114076953413,16.68,13.1411263567494,19.9297175672065,12.6118519874966,16.68,10.7555822640638,10.5727798752959,13.992967836985,10.7054061207803,17.6553157576104,16.68,25.6483531619449,39.3383370913045,27.5328386599146,29.6994688479383,17.7889319902194,23.7467225827563,17.2415717510597,18.4645783723266,16.490102189552,35.5044865148556,58.0151134401117,17.1605079425483,20.3140279355208,11.5015821689282,23.5098106976086,30.6940722652461,18.1868338662277,43.1042503280443,18.4336170320597,15.833951679365,15.7591010964871,16.68,37.7899274255998,16.1795247791768,13.9836315832834,19.55656550109,16.8723618363104,16.68,10.9116086547854,12.3581591714171,11.0403781397259,35.6888085153863,17.27966832249,15.4044518056059,19.7383926822961,18.2443014443505,18.8060683403126,16.68,12.9768599232277,34.5441926183782,48.4678908568521,33.0193871157598,49.0144317616668,42.706437268425,17.1907937989223,16.68,26.0505085476407,15.7561564218724,17.9742449629832,16.68,11.1643662387227,12.9643978874301,26.950090949727,16.2095120807059,13.2137866314101,16.68,22.3343367653168,9.95045916815728,10.8622746019906,13.9831971829262,15.2605750477106,11.9447507897273,18.6104958339065,17.4360206955351,44.8629347506902,30.147604326548,27.2620880181197,14.0657651128813,13.7336996798644,11.0572520325475,10.3809733004003,17.8655426584553,10.0793744659537,14.7271633775398,11.4663628554502,12.2426392894147,33.5645046939894,13.1958721808235,13.0223970760489,10.1844647581696,18.4412535084712,15.9170641417731,15.4402516197002,52.3848632842663,16.4495392137117,23.7094595869098,25.1238720596538,30.0289934741013,14.8219937871606,23.1729654951167,14.7237735202023,36.2741841555711,46.2658536387393,35.0797906692872,26.1820744585498,12.3022510622639,43.1186356240217,29.9771324299783,15.4395296293994,16.531260825151,16.68,9.8485340040291,16.8413213093679,27.8038809643974,11.4530270448625,17.8881500278951,40.4897334176882,42.4028630060806,14.8002830124827,32.3506615185693,22.2704733369718,15.8272058565019,14.2104112797882,16.9307169691085,22.3312673565369,16.68,21.4497068721193,16.4835025171235,11.2162525256843,14.9431185128095,11.8453548267059,18.561029825851,10.7985508625532,13.0163526169344,13.6382659052886,13.5656606003965,16.5936207925547,14.8138904284697,16.7593332465161,10.9437728633984,26.6316447255309,11.1783426086511,29.8146667843909,13.8248621614302,15.0697576641123,15.9761085907317,18.7334419664819,25.5179930924647,17.4295310695303,20.1956152832074,16.68,15.1550123952153,12.924565498137,17.5406352580821,16.68,26.7615996310708,12.1361679005197,16.68,41.5284891563457,10.564243206749,17.2473378066067,41.9502716831551,15.0256948160496,10.5163681157729,12.6194417907596,11.6437899670793,16.68,15.8916373622912,16.68,21.924904749102,40.5970638993819,41.6113778306189,30.6713206707456,17.3336510277238,16.68,28.9393234615544,12.1486575083681,10.2721783853131,9.98032588635215,13.5949674592963,47.4011967924891,31.2757407709198,27.5344958326479,16.3047216827114,13.10668950435,16.1228592042681,25.0762553138635,12.7839171827992,11.013039536129,15.6230615964611,16.68,11.5182354028925,16.5421533322802,16.68,15.6810090134201,16.68,16.68,16.8526267037578,19.3598135186229,27.2836436551615,29.3930814924873,11.5551838880528,16.68,12.4005295379851,15.9088429609823,16.68,16.68,14.8742504597692,17.411269914271,22.3637888671654,17.0548975376005,17.0199386656024,11.9051142913452,17.1593466320814,12.1807507111416,18.5171459957002,20.5504175419675,12.8566839071928,10.1285855230844,10.1016022049684,11.7378865421367,16.68,20.4437188314533,16.68,25.1634254211366,12.8426482400155,46.5518680488422,22.3389062776171,18.0298843106411,19.1207375599575,18.5201034010151,29.8361671101711,32.3005091767588,11.2868316087004,28.2253298004764,32.7782342790872,51.8551218012549,12.8602200185251,16.9061452301762,12.1026052529798,9.8181743256484,14.5154809829588,31.1435049090112,20.6964031353363,28.3898834991088,16.6404278271982,15.5019466784323,11.7056331185526,19.0927023173577,34.0018141525324,16.0411050186483,15.5420480378468,17.7218463410698,11.2709629298741,23.9690839671596,16.2630538657707,13.0945801749442,10.6774996426194,20.9942864270233,17.435355578282,16.2178123407656,37.172891866794,15.4604621308044,18.4850356780973,27.8016120810119,50.1664592907181,10.8584151312266,15.524319496231,10.9167016072286,14.0430751919941,14.7972218039596,46.3709887535758,26.6320218117059,27.737754478729,47.2552725878422,22.2581796128734,13.2881441629473,17.9540666543319,12.7477487446721,14.7179686466777,12.7110687806105,26.3000260163047,16.7439792570773,35.5753480365501,16.0040372365392,13.2321936520837,10.6633622997963,10.0393881459239,17.2305249288493,35.3141975177991,23.3321674072802,18.8486984984157,10.478965183618,16.5576003573595,13.8015658621141,11.7953776050788,16.68,18.9247083383602,15.0642207173861,45.2491910435215,36.3237302799332,17.5423042507229,20.1030574941988,16.68,14.2404053139638,14.6937472923848,11.2154296996876,11.4396865284805,12.2649798530946,17.8154974365151,34.5003722574917,49.3086022401172,14.2254677585209,16.7316403193846,16.68,18.5929724764897,17.4310845870137,26.5878463456588,24.9404598193529,20.2356650925586,41.4854871563429,44.7724891167862,47.4357739716554,24.9108408320458,15.3899980700528,13.5005737428164,15.7385229095053,15.8274411016482,16.68,17.2599935740535,11.7271914512912,30.0041808864191,11.217999414115,34.380250663,15.0433744857834,18.5353043359941,16.1336222248104,15.4076179895044,16.68,10.2773993140487,12.3981457530946,11.3984730090452,12.1702122673888,16.5168725058602,18.7033110545563,17.2025878867286,16.8653812299224,13.572857469901,21.5373663778313,11.2784013383661,16.68,16.986398612483,12.2973222221095,11.653710475017,16.68,16.507757230423,12.1810169818391,16.68,22.4688411244951,21.6634563071974,15.3176244804958,11.2109496746401,23.6609371295252,38.3042576776189,16.0033811613417,16.1424743804305,16.68,15.5956212569198,9.7484037758559,13.786498139796,13.7806476967514,22.8118147786138,15.1776406048102,17.3598944755657,18.5143910601514,16.68,31.8531697624516,24.0873899015435,19.4128293502249,10.2829360568536,23.0989929044142,21.8735430127642,20.8251440661561,10.6913344238977,11.1452458026102,10.7678206408407,15.7941848384043,19.295936931909,16.68,16.9658298393419,54.4912308856646,16.68,16.68,29.082359410403,27.4377748810384,16.68,16.68,21.7836058647932,50.9595012088109,17.6370644217776,17.2242648740138,16.6240716878441,18.717953292022,30.1349659841061,19.0086807739409,17.5583217607869,15.3343056645356,12.6122809849361,16.9662592867243,20.5357839913686,13.993217131379,10.4847809537755,31.3702113597419,11.8198161118701,24.19905120189,15.7969847715761,17.7385143291506,20.5678427236425,36.1457967020191,15.178417233392,11.2442137858962,10.3511232724789,15.8979213595075,10.180084396165,11.2946638571651,16.68,10.8242886963931,29.4912191561659,12.60569139167,16.68,13.6136419166322,16.68,12.4488533868015,16.68,17.3161270874015,35.1200125457206,23.3308979781416,16.68,20.8334875876882,16.68,20.6498998836753,44.2116492911504,16.2064374209565,39.0430601815191,21.2942047241761,48.7969223019926,15.9824354995014,16.68,13.8182567713359,16.68,24.6946094662326,16.68,32.8815517834597,39.8402013908737,48.8591234823328,23.7557919644748,16.68,16.68,23.135954099232,16.68,54.2674137809919,22.8481387986392,15.4691440222093,48.717420008156,36.1530034462604,18.4370379287028,16.68,15.7396968335042,16.68,10.107839050184,15.5120684049435,16.68,9.55548248109702,15.1604747700351,16.68,16.68,16.6836717918515,16.68,13.2736799754866,16.68,14.8674049147956,20.363273026798,16.68,16.68,28.591807093991,52.9472831564953,39.5577435187178,10.2735047975921,11.3984484067397,18.4156497368354,21.1583701382566,15.6831910202946,15.8548884302215,13.3013300932178,15.9275716511237,15.6329736269473,32.1664730632521,14.7180328548394,16.8415755631183,17.1822399319457,21.013724389921,16.68,49.7827546248135,16.6041316268411,16.68,27.7727607794719,54.2970397178314,28.0755395783306,15.4545805365518,22.1857542879944,15.0562082045239,17.0763717921747,17.5536467699563,15.2337231093605,17.2320411218335,11.0406978428289,12.1000052733031,15.0202393322746,13.6246505184553,11.491052946609,9.84225687650808,10.9197224412803,15.0886769304606,11.4457750167079,15.2587625422448,15.4360594522111,38.7071626597677,16.7127672484879,22.9937327198591,16.68,20.8393362449343,40.9871840842407,24.9159849975662,15.4133460774772,17.5127788752118,23.2056192532499,12.1308356272734,30.0090068737928,13.2511246205513,10.7055238867837,13.8531922841899,15.5986630261078,23.280180867106,46.3381352434389,40.7000538481265,20.7398994733781,10.7577552753235,25.4189718809148,28.2618447617233,40.6074684860845,25.9146285004222,47.2040376963656,29.1711522716714,46.9876019073166,18.9572868349852,31.2573519054642,13.207004564665,14.8183787069669,17.5246177570969,18.0368962180988,19.4398664525188,15.0989728317266,9.92838040459351,11.7977364280102,10.9845988336003,14.778080417098,29.7557124803437,16.8444304315784,13.8284586353581,11.8630762662231,15.0249808120156,19.0801398166957,16.68,15.9286788297264,16.68,23.1375304861998,11.6102385737059,12.3511472012731,10.3639010743976,16.68,18.1732331622134,15.869595478248,15.4314639715883,21.3733620424439,17.4848196415092,16.68,14.5083666544856,16.68,16.68,9.32839453371155,22.6434509285886,12.4420800326921,16.68,23.0397919582812,37.0854911387932,12.8667588386076,27.733241581844,16.68,43.5594647625895,44.2199194269105,11.0890336210699,14.9491446918134,9.90039577824226,46.6541551872767,20.4556171390241,43.6711425228564,16.7610512150744,11.9960577487709,16.8511411050722,18.6373276545234,15.5885618408792,19.3811070260258,13.2709919385503,16.68,11.8691482907455,17.737945975877,16.68,18.6391491443326,17.1879545224928,17.1629415852095,33.9455091521713,23.6710323475676,32.1460391984932,16.6621218207113,33.2069999585838,57.0554760846921,21.3779285228971,33.6776169544489,21.5956320945595,18.5000997967116,14.0785186044143,22.107803603596,13.2827242013166,12.8670172817344,27.1221975195397,24.2017694780198,27.8883389757672,37.3490767168655,56.0641651761089,23.4575927978663,32.1097044617362,22.3848655325293,17.2852219672807,11.4022356047637,9.40211231109728,14.9931174271928,34.4443520467382,33.5922234664712,47.1995030021762,17.7496136986148,17.2687771468746,11.2478042132351,14.5034126570029,11.9983193119544,10.041609596315,10.0175779706243,11.5123731355323,11.7116861401571,16.68,20.4362497063163,12.5110242537541,16.4876748315331,16.68,16.68,12.2811221880359,14.9740562359584,10.0215404539896,16.68,15.1211898849746,15.7876174051113,19.2752691864767,16.68,15.9113087429215,16.9310606494004,16.68,29.7210231142788,14.6253038731421,11.4095589415155,16.9666136080334,16.05476235846,16.900552487626,16.68,16.68,33.7708055820467,19.8157989229837,24.6075278572819,16.6027818083132,27.6952538298479,55.6400719783192,16.68,9.15953811615124,16.7071335894748,11.9182350181958,10.39905254397,17.0301677917047,16.68,17.218778221621,16.68,26.5531779267073,16.68,14.9324701279383,16.68,14.08074502974,14.0387164137242,10.900536960529,20.3953212135638,16.68,14.6087364751191,44.0068470748681,16.68,13.5368972845936,16.68,22.3952826374521,16.68,19.180195724208,24.7931892427284,16.68,16.68,15.0886750640446,12.978206403785,21.5591182976017,19.8794290991331,16.2318550706189,16.68,16.2944647572661,16.68,28.0734701606358,19.503348053507,11.8480969958425,10.3139596015144,16.68,16.4933216548324,33.4855595092642,46.2779160762972,15.9721915682217,16.0519417002579,23.1182951849036,24.288373118342,16.68],"Archive1106_field2":[-2.69,-2.69,-2.69,-2.69,-3.03471467091247,-2.69,-2.69,-2.69,-2.69,-0.0769169511147453,-0.0434492742033069,0.323974777371461,-0.0415713670242885,-2.69,-2.69,1.02151968603612,-0.875351623769501,-0.076413850792723,-2.69,-0.107057318271592,-0.550646833233698,-2.69,-1.72367596386494,-2.69,-1.10386105999568,-2.69,0.0990105813518206,-0.525517356970844,-0.702333420072277,-2.69,-0.387056046146404,-0.0804861441891478,0.302344826633896,-0.105129329513802,0.470618291004519,-2.69,-2.37432028046625,0.666534615405963,-2.26902301922536,-2.77405493067311,2.49077540390831,-0.895624223072662,-1.57674243489879,-1.52004194976357,2.28457143977859,-3.04926316047016,0.00110876875706058,-2.73054702918717,-2.5906431912285,-0.481653352979904,-0.0667661846207596,1.85376726798521,2.93283831457729,2.00124120216664,-2.8080801564409,-2.39625187734953,-1.34755366539673,-2.69,-0.354744398230443,2.03860881627405,-1.09789275421784,-2.42757952881125,-2.56112092275231,-2.69,-0.260674181241798,-0.589846659015118,0.423997918136225,2.8160537205498,2.13889404163485,1.76665414633929,1.19725202473641,2.77744223806359,2.50950673919295,-2.69,0.796963665247985,2.34786992509553,-0.492821266682627,-2.47721424515011,0.288552965632583,-2.25040603348271,-2.81317708366229,-2.69,-2.90627661173236,-0.495878930396474,-2.12835757790543,-2.69,-0.299885474334116,-0.0803162665161132,-0.205623860115942,0.0171603984967682,-0.717385821625447,-2.69,0.915043691450297,0.195955789978272,-0.0651990630281183,1.20370285527017,-1.42446263826109,0.530924532981297,2.93502193427558,1.58718141717543,2.25812963501301,1.46560938940668,-2.60896476895684,-1.35508591377717,-1.40161680015,-0.259134679321917,-0.0969492248487157,2.2203471566508,0.0163069621418175,0.330883418895823,0.458127063209221,0.471880590203024,0.568965778407919,0.894322715234299,1.00901603019153,0.153993697021797,2.40283222124342,2.4653477700676,2.11320136716478,0.180715409639517,2.7696033525092,-1.92128834819295,2.70218965914406,-1.46463672199941,-0.259392418536907,1.57873231500713,-1.63838345744152,2.3757432847029,0.715371445078499,-1.54668552058902,1.90239475024968,-0.0613363769297185,-0.347134044016472,-1.52488704239463,0.881453558447722,0.194115503120917,-2.69,0.055967129771284,-2.83218712713633,-2.48163345972764,0.308653768963186,-2.27211327335836,-0.256620735492132,-0.976919237878667,-1.47086199963621,1.89357939840992,-2.21169121743742,-2.24227408074575,0.783418807351836,-2.61014375209067,0.0546018639503522,-2.69,-2.27221921490839,-2.49668771686353,0.288676359546611,0.289072732508255,-0.770459664571595,-2.33656550773923,0.245766689566048,-1.07528506325126,-0.740844761053532,-0.961610485909487,-0.803184681501643,-1.60233793219692,-2.03668489348578,-0.377981823285708,-2.06897846702051,0.0570886933224974,-0.832359741119033,0.457929348865434,1.9191317072605,2.08595359367809,1.72524472719374,-2.79009413220614,-1.35749575061133,-1.81428589742407,-2.69,-1.83163654636347,-1.8998711830261,-1.90824793328391,-2.69,-0.934755395068442,0.583200741196897,-2.69,1.95558608274336,0.219443998228885,-2.71889282145255,0.845309352578565,-1.54232893046081,-0.352393684793971,-1.04729711255821,-0.0470283199230111,-2.69,-0.763402673053675,-2.69,-2.35129392602695,1.46734078806376,-0.949411466378585,-0.68466483214386,0.0759480998749373,-2.69,2.98469834963081,0.0511743632056943,-0.191437340688985,-0.12404947725009,-1.85815501510194,-2.76939943064975,-2.48035984174572,1.41396292361566,-1.47599509110461,0.698858015013754,-0.192507701954627,3.15865053291778,-1.69328966301325,-0.188573236756549,-0.0740745562139816,-2.69,0.318774699622806,-2.78759649944075,-2.69,1.59286656215576,-2.69,-2.69,1.53899035840941,1.64068434715373,-0.521520549566702,2.34241602655377,-2.47090432759226,-2.69,-1.35488669392457,-2.1067575555272,-2.69,-2.69,-1.99135048992303,-2.30049905448145,-2.92614901456614,-1.60798536616154,0.766217517069678,-0.552132806582612,2.97230975135536,-0.242982504467526,2.32355881822558,2.48999136918444,1.11090782220612,-0.00321875562132885,-0.14161570773402,0.511658328245549,-2.69,-0.9704766537765,-2.69,-2.49284653430371,-1.46921724908878,0.109218973279063,0.733648137359616,-2.20723534357043,-0.48367271132115,-2.37050673390856,1.88858297291907,2.86573899122236,-0.272042248060989,-0.901202964277484,-1.24640857453007,0.51432787804113,0.582951921673814,-0.444325158639508,-0.484626949943707,-0.0122513746299287,-1.73720719959955,-0.353233877651272,-2.09579379250691,2.70193458410746,1.66387571028518,-0.581667561908258,-0.415579748977197,-2.2513784645258,-1.96608691578144,-0.606114693725183,1.68969755714445,0.942433152400673,0.326460635777343,1.67499640191752,0.232967133582808,0.952457748603929,0.0786937876558327,2.47721330923662,2.50709365404508,2.48367977284794,-2.83529415263348,-1.31244118272302,2.85461142720649,2.09081776577942,0.664752464022098,-0.18015475582282,-1.34682648659524,-0.39014525586844,0.813624225764153,-1.76961325210072,0.270561978593198,-1.32230728167023,2.62176054883858,-0.933035694210912,-1.42466887331915,0.768854111550783,-2.36634292960135,-0.348092918759376,-1.99824298405556,0.38114476004376,-2.82862614904383,-2.75865392881852,-1.68140408999541,1.74036465605564,1.07343625953245,0.171821469786935,0.136837096967225,-0.810024822401493,-2.59141833802098,-2.45327380183805,-2.59792796029722,-0.000745407327184166,-1.65832474510223,-1.13600384505001,-0.55425876827489,-2.69,1.49951172648466,-0.0469118742295558,-1.05206484791724,1.448016720272,-2.73289466490067,-2.37040668582448,-2.69,0.80588113118112,-1.0681107220929,-0.22882943894769,0.530205111941487,-0.061663457026485,-2.85412093909871,1.78260339534184,0.166045244249865,-1.49406105642259,2.74341692900922,-2.69,-0.79917863126568,2.07529979949287,1.23721510539044,3.09768412670045,2.14761881126935,-2.02223009393611,-1.19569164118897,0.266424294602489,-1.31354401018647,-2.17201344741453,0.110806070533608,2.19029640490929,-2.04071013387193,-2.69,-2.70770188571517,-0.446058290684743,3.02857443451593,-0.342480579051529,0.80859078369105,1.2421225496846,2.89935770641044,-0.0137467708026273,1.66767055924641,-2.69,-0.00687523861784761,0.617413208552554,0.399679121776092,-0.690573792931663,0.542760942097103,-0.45919180797148,1.24976413367795,2.60867197957861,-1.21974946838982,1.69154230205558,-0.181343399403379,-2.69,2.37444625163552,0.306108458976716,-0.292854255548583,-2.69,0.0584420367375549,-0.456494735971213,-2.69,-2.91622540615311,2.62729037674502,-1.62220155215849,0.351331185176196,-1.74522872907276,2.31221983293812,1.5316399643032,-2.3040809087353,-2.69,-3.98719280533509,0.356450472531553,1.00504542520517,0.68606940628593,-3.00072588938043,-1.81817216067924,-2.97904663633809,-2.6841639768592,-2.69,-2.57895653551123,2.42257726881694,-1.39990698284347,0.25544113023429,2.53667842021952,2.60920754331358,-0.437629305116338,-0.0189715758290571,0.322484378403837,-0.258772239463972,1.83235555946803,-2.81780418000031,-2.69,3.54030064292025,-1.40132399381754,-2.69,-2.69,-2.32595505371052,-2.1217256047803,-2.69,-2.69,-0.317840222272281,0.890158769988895,-2.42513625550175,-2.61422804489994,-0.0497136269628112,2.08167178642976,1.36245877305425,2.6155994883594,2.38350213410882,2.12024491066946,0.26878783555407,2.94363992784124,1.28508986715984,1.4118646682203,0.147955278658398,1.31229045985875,-0.596458956381867,-3.10417640044233,-2.05990521249757,-2.54388799316497,0.484083138417292,-0.305122556907664,-0.804934533298295,-0.656315592956385,-0.139161730086579,-1.70834941740923,-0.307892167739963,0.184704774983542,-2.69,0.131079136337358,-2.98487962953476,-0.0134166128219256,-2.69,-3.15784268516164,-2.69,-1.5558060139165,-2.69,-1.63693557336577,-2.43590367849872,-1.21536602807705,-2.69,2.39691194777896,-2.69,2.17403698918537,1.6252193284783,2.26163098492713,-0.256373990055684,-0.963376636996193,-0.770546005906064,-1.69689101359445,-2.69,-2.84653893358174,-2.69,-1.04967207930689,-2.69,-3.39127284112327,2.68651366213131,-1.14155844570376,-0.525432354403927,-2.69,-2.69,-0.729426956981128,-2.69,0.017295917241507,2.20348110747223,1.68492054030449,1.07742789267494,2.81881712471461,2.52079829803471,-2.69,0.688418141755163,-2.69,0.0750763890639321,0.100715992084854,-2.69,-0.124175340948452,-2.30088678989318,-2.69,-2.69,-3.06608002634072,-2.69,-0.843114052143554,-2.69,-2.82039966122628,-1.25697918582879,-2.69,-2.69,-3.79553017602176,-2.06594973900494,-2.36275504093927,-0.121840684308088,-0.157117437774407,-2.57383888227602,1.33066518240393,0.969152994288852,0.948025135073468,0.731564702964466,-1.0670035601895,-2.11769668686242,-1.96107257232855,-1.57291240331274,-2.74887207305344,-1.99932889756019,-2.57229798607926,-2.69,-1.55637122158844,4.21442060321829,-2.69,2.776654337823,-0.239318680835473,1.16847943434525,0.66957845420879,2.29926520875633,2.03250089654561,2.89786042279986,2.8408490832295,1.40955116392753,2.10042050384767,0.147001456693229,0.753842973011456,0.415428623834107,-0.93282989672194,0.35436830532332,0.0101753819656835,-0.278603182767924,-1.80692825448957,-0.542733911396628,-1.52907686852326,-1.89591852720236,-2.19252106830587,-2.5591972402112,-2.21836792735607,-2.69,-2.59114291549507,0.937886031641474,-1.89018081798179,0.303236859933475,-2.87742001936167,-0.21114425043801,0.175099231381332,2.78436790277973,-1.26266160953912,-0.106912083142322,-1.44135763841946,-0.0786706324644635,1.71536899331787,0.695458632645745,0.439764822094399,-0.931526705091857,0.287711805981039,-2.95852410439381,-1.39757993043046,1.29326368258404,2.8600068969333,0.499160101976774,-0.17386411829741,-0.129374116384864,-2.72358501945859,-2.67184732376988,-0.0881892517801772,1.95821559003594,1.96870678821196,1.68109028823283,2.86354719924775,2.04323231107344,-0.335304572657209,0.535031116313741,-0.0729300242890591,-0.0398048187049884,2.49657190999883,-0.302939838197801,-0.45630049192674,-0.562279540163606,-0.878485159111495,0.78341166612705,-2.69,1.84297661027051,-2.69,-2.6332031804254,-0.447339705557041,-0.761690884631226,0.194264720904244,-2.69,1.52758727296642,0.580713854153178,-1.67375275878086,-1.9817198118463,-3.09424436721686,-2.69,0.127869571230135,-2.69,-2.69,0.0531158538790379,-3.09519037528891,-0.234509442388478,-2.69,-3.48004741896463,-0.700638160068231,0.960880550899744,-4.02648112893413,-2.69,2.7317704860852,-2.3080063519162,-0.732928701683873,-1.41210834299805,-0.202406992107037,-2.76855674821775,0.619895145029425,3.10640751857076,2.61417292782684,0.236457644405596,2.54041728764414,2.52901100504802,1.71095717078479,0.0763458569864767,-0.638981796155303,-2.69,0.344597603059806,2.52795474045454,-2.69,2.69385395626487,2.2016403097412,2.75722081218281,1.33757822116226,2.74538694333522,-2.80386081563551,0.931933738739638,2.53499025727095,0.907465982726978,-0.935333115438056,-1.45377173460076,-0.0435662972461207,-1.36683658327579,-1.63559022654403,-1.77574100980626,-1.44453041034842,0.635953678480962,-3.11360121921306,-0.960671017313898,1.25048466672574,-0.783288332789929,0.259537830846717,1.96499014000161,-1.37228268810306,-2.09889736974763,0.131839556510126,0.402248205132603,-0.444363942866464,-1.19595711564878,-0.705201365055892,3.00096736185296,0.422275161689793,2.6585692867657,2.92358059408759,0.467761575968564,1.38221355193095,0.011275592228499,0.432625222710567,0.127659195734178,-0.555386180889472,0.641395175989475,-2.69,3.61529202469777,-0.225720354672315,-3.38298519075562,-2.69,-2.69,-2.11818597827618,0.148593262898098,0.375953010916516,-2.69,1.3508931349164,1.43580214352727,0.311318798606486,-2.69,-0.24400526478008,-3.37944247686769,-2.69,2.83538995242939,0.336252260956079,-0.112126911051729,-1.60019475436693,-2.33385208587092,-2.69746365180849,-2.69,-2.69,-3.41691772213147,-2.69609355274539,1.7691454222599,-0.157840670627404,-0.224603392219821,0.671484903373251,-2.69,-0.00660431060687381,1.88490331429507,-0.0270221163601659,-0.0754579146254315,0.883118296220366,-2.69,2.57039101219115,-2.69,-2.05045557744743,-2.69,-0.102331509340196,-2.69,-0.52381529243207,-1.20121842152338,-0.394055264424869,-2.30684320549132,-2.69,-1.58898319922067,3.24746126558488,-2.69,-2.87922167561419,-2.69,-3.28839677097927,-2.69,-5.18566111482554,-0.642174649685032,-2.69,-2.69,1.81442035351971,0.668276479587485,-2.51209345537214,-1.58095435171973,-1.30537282373711,-2.69,-3.26338335651348,-2.69,1.23604167186022,0.0324971258354745,-0.189056127662165,-0.148420229511167,-2.69,-0.300397436166045,-0.344415087031865,2.31093533040488,2.11960382055618,-0.101995656188586,-2.10853113970538,0.879352309350773,-2.69,-2.69,-2.69,-2.69,-2.69,-3.05292690026388,-2.69,-2.69,-2.69,-2.69,-0.0779492378248499,-0.0440040768381016,0.323179581046961,-0.0418443775268296,-2.69,-2.69,1.03593977258075,-0.884190341038126,-0.0746213437041905,-2.69,-0.100235977227618,-0.547991558986189,-2.69,-1.771791888526,-2.69,-1.11673704506854,-2.69,0.112213017882781,-0.548843073146799,-0.708772234227895,-2.69,-0.397130027903556,-0.0820219298853212,0.304618180841528,-0.11193804495921,0.473333513396147,-2.69,-2.40876195902242,0.677615241581412,-2.30225837498039,-2.79001077265432,2.51138760112245,-0.899461012223218,-1.57845634761437,-1.5289096417901,2.30357861119203,-3.06686787608011,0.00331597141079877,-2.74721063983162,-2.60744860941457,-0.487579320814591,-0.0749817644282154,1.86200832034353,2.95582172010665,2.02563481003819,-2.82763704383768,-2.41440323519217,-1.36687195095175,-2.69,-0.350526570688437,2.05296897685534,-1.11461797711287,-2.45211368095989,-2.62097874536125,-2.69,-0.280312712732158,-0.604469340657133,0.430978131243419,2.82668487807985,2.15727075592838,1.77946296604242,1.20544605553062,2.79924250973978,2.53092878916484,-2.69,0.805211463869876,2.36145675154149,-0.476439946000709,-2.48499711612048,0.282881664367199,-2.25855379235396,-2.83054730191895,-2.69,-2.92569302781127,-0.500189359144439,-2.15516577839758,-2.69,-0.30355878202339,-0.0654215498906631,-0.223637128939726,0.0162706895546288,-0.734468819181923,-2.69,0.937929487917544,0.201923158146752,-0.0662329102734104,1.21432334162578,-1.44195136436356,0.538012999371388,2.95204542496429,1.60678913827935,2.25830965848524,1.4795682078401,-2.62649222514544,-1.36683152086573,-1.41610143160355,-0.262256637644658,-0.0988571879358466,2.24409089033157,0.016748877098755,0.336465356211267,0.463709358940405,0.477485801616158,0.573422505276503,0.907182695976555,1.02122485367115,0.155729073417744,2.42240059331097,2.48015423237889,2.12967099976815,0.181340961978225,2.79037684294894,-1.94350941415262,2.71909007152398,-1.4761744282151,-0.263706710615281,1.59710400241596,-1.65352132919787,2.38486427735672,0.716985770629454,-1.55185951864126,1.92121697649896,-0.0586992147475077,-0.34794685333316,-1.53229801761526,0.88857380057159,0.194644580216976,-2.69,0.0567390541475677,-2.85181461746052,-2.49609198996407,0.312475150574756,-2.2884518843706,-0.257377922942945,-0.980968301285041,-1.48729429229015,1.90356096767895,-2.23539147013397,-2.2606188696654,0.793891661806173,-2.62893127148365,0.0549013541743826,-2.69,-2.28368296424959,-2.51339554028242,0.296012482000591,0.294578275746104,-0.779836331119208,-2.35735777278181,0.249417939252091,-1.08765386266267,-0.747050822500287,-0.970799178894438,-0.814612396352123,-1.61769299594216,-2.04970595294075,-0.383358274270035,-2.08450752337933,0.0578329094878918,-0.836415639110359,0.463881213069332,1.93423194196444,2.10241612205298,1.73563767683438,-2.82650601490948,-1.36276068790754,-1.85027244087228,-2.69,-1.87265593473846,-1.95142863181853,-1.96008746208503,-2.69,-0.964371660380786,0.60010638461739,-2.69,1.959147567687,0.222804470106947,-2.73600061979103,0.847493272856501,-1.55590027956284,-0.364779151813289,-1.05748227060857,-0.0475768691694071,-2.69,-0.771960663505719,-2.69,-2.37361369373197,1.48743721274142,-0.956252914779214,-0.687522111162968,0.0605263019402988,-2.69,3.00576602442169,0.0628349100858095,-0.17821727982072,-0.121087363154027,-1.90956856630285,-2.76824656876511,-2.49758243709578,1.42089418724674,-1.49510059289618,0.707538171716378,-0.193388557704383,3.18511033395088,-1.72853941865605,-0.19256031688379,-0.0763940376811286,-2.69,0.326809602379795,-2.80630687854447,-2.69,1.58175953182314,-2.69,-2.69,1.54626736351238,1.6510375944601,-0.520770609630481,2.34221484783436,-2.52506187155136,-2.69,-1.38939881765242,-2.13812053865377,-2.69,-2.69,-2.05350419883568,-2.32121800010695,-2.94695316072993,-1.61920893003619,0.771814130416301,-0.55972646864509,2.99097290214587,-0.245660522942571,2.33743200586869,2.51247015268547,1.12313745010115,-0.00337184417089429,-0.14336103388136,0.518643804351937,-2.69,-1.00484320802937,-2.69,-2.52955655770246,-1.51420317200588,0.104615704989509,0.732321274252785,-2.23098795318379,-0.490443388962068,-2.38551104118354,1.90396416275762,2.87895101068434,-0.275596543637239,-0.90470381841645,-1.25071611178226,0.51506761021843,0.589084006832595,-0.448476738106554,-0.489783808304008,-0.0122715987595945,-1.75437867135766,-0.356414590692905,-2.11760942044698,2.71396152476616,1.67596103766457,-0.586597460947176,-0.420289234683883,-2.26617722008942,-1.97819493702294,-0.614768388883,1.70571708626891,0.956809336506926,0.330631208474274,1.68566255757172,0.235387825706254,0.962183122177117,0.0796092279132317,2.49810980085878,2.52166939835366,2.50096121931376,-2.84529705101097,-1.33003130826074,2.87453744622004,2.10654071382664,0.666168908498994,-0.183056874276519,-1.35791930246349,-0.395326156002088,0.825345147959399,-1.78443251594333,0.269733615918782,-1.33643317034063,2.64159444904044,-0.935243164755907,-1.43264450134389,0.783061373618312,-2.38419467792581,-0.351711644465048,-2.01580289596178,0.384296661362312,-2.84854619086187,-2.77624791655066,-1.69169964163906,1.75459801202024,1.08394185951782,0.173545625489003,0.138882695267445,-0.822424172026466,-2.60150107550146,-2.46934123673587,-2.62082911489443,-0.00051656547152819,-1.67728419917082,-1.14725342746449,-0.562121273460887,-2.69,1.51821963109773,-0.0490975686204836,-1.05583344354526,1.45751192146918,-2.75221040481156,-2.38809855022689,-2.69,0.812835077921691,-1.07772345886902,-0.231285094534137,0.537205725099135,-0.0624895307699526,-2.87484687089152,1.7894297257675,0.166079865286021,-1.50862587393211,2.76141233118497,-2.69,-0.810231080103869,2.0942470169613,1.24856749293149,3.1169108771751,2.1624054661922,-2.02492530172141,-1.19840784561704,0.26547184915987,-1.31992689776794,-2.18768346959565,0.111943866273049,2.20699241975723,-2.05786302456447,-2.69,-2.73016033051592,-0.451508585645871,3.0444448479774,-0.347409911994137,0.814538502676153,1.26079169120965,2.92305020131653,-0.0120645827641924,1.68753798390048,-2.69,-0.00747552041453548,0.625116716327693,0.404556772718031,-0.699592853914428,0.546707215865838,-0.467492711296163,1.26613287282555,2.62577624024759,-1.23088917038802,1.69928436971004,-0.183037681776764,-2.69,2.3879749990781,0.307305855463876,-0.293848140126431,-2.69,0.0571499160006482,-0.467430542246992,-2.69,-2.93312890046384,2.64498866208272,-1.63699858006334,0.355393286168513,-1.7552441158591,2.3227330431465,1.54144231261261,-2.34755407938077,-2.69,-4.01315806561249,0.363852887746163,1.01505781536913,0.696278392717115,-3.02783453304861,-1.83658008269365,-2.9972678598104,-2.70645054277443,-2.69,-2.58884145872575,2.42409923578735,-1.40720219255408,0.250159478873931,2.54951151618879,2.6367242843882,-0.459602369278225,-0.0195028690945189,0.32605792695691,-0.262326065749978,1.84627285886533,-2.84215669764189,-2.69,3.56730981783637,-1.40207620067264,-2.69,-2.69,-2.33970456101774,-2.14499621410238,-2.69,-2.69,-0.339644567977834,0.891878948522198,-2.44939103150241,-2.62593879083423,-0.0513512996894536,2.10303299904803,1.37446342620399,2.63458984184318,2.40129634098149,2.13867435577458,0.271079675078152,2.96226823445748,1.29302302581177,1.42450565199088,0.150040145978615,1.31664788774504,-0.603830168855881,-3.12517173731934,-2.0735707123282,-2.56024031212956,0.473654832069749,-0.307688392666036,-0.81160425075818,-0.662573815428564,-0.150774660993686,-1.72698991442917,-0.305532100183698,0.190256582061903,-2.69,0.121747176920762,-3.00404258992548,-0.0204159415462598,-2.69,-3.176491713209,-2.69,-1.56811648156092,-2.69,-1.63059150800406,-2.43830017382218,-1.2228051199556,-2.69,2.42168482460023,-2.69,2.18600421808851,1.61974477167996,2.27613566708002,-0.258321879544947,-0.962464926729583,-0.768127765330985,-1.70360066694781,-2.69,-2.85532288695857,-2.69,-1.04479448230576,-2.69,-3.40257182261026,2.70034913653472,-1.14277820690551,-0.543713142561139,-2.69,-2.69,-0.745600837327736,-2.69,0.0178963746788944,2.2111792714435,1.7025524982137,1.08495940342063,2.82963150079435,2.53619121916989,-2.69,0.69195028058179,-2.69,0.0845732498767252,0.0909261888311417,-2.69,-0.143995652673585,-2.34579661434218,-2.69,-2.69,-3.08593993904936,-2.69,-0.841508890204647,-2.69,-2.84412115182502,-1.24974884097423,-2.69,-2.69,-3.80333932994765,-2.07220101787327,-2.37516548105581,-0.123134197926112,-0.161804729148943,-2.59627159514883,1.33903281651124,0.976310865960126,0.950914963758819,0.742461598884314,-1.07638477813284,-2.13213892581,-1.96833073225295,-1.58945632284886,-2.7640906063822,-2.01344980645593,-2.59289313338602,-2.69,-1.56199971731427,4.24116143238964,-2.69,2.78606721315482,-0.240489112415407,1.17220068848798,0.676226503017579,2.31352169405705,2.05582750032963,2.91654847994344,2.85798031568343,1.42087577798002,2.11859433325296,0.148568745078602,0.761704878911407,0.422715492807896,-0.9467538422976,0.359393097001098,0.0104290472600491,-0.281776951279299,-1.8230683830541,-0.549800893453937,-1.54111842245022,-1.91464033444143,-2.20019843183616,-2.5715734952775,-2.2309690633296,-2.69,-2.61586874695534,0.939732997491305,-1.89922067185798,0.311891772547205,-2.9011084131215,-0.214857921760118,0.177119658876225,2.80082807919715,-1.27324246835118,-0.111391169802778,-1.4532738561449,-0.0797833363944701,1.72453267008321,0.695631786054904,0.441595275769835,-0.938565759386229,0.291006363814179,-2.98643863654033,-1.40351068717913,1.2993895708312,2.8767035720642,0.499036642860152,-0.174395118307388,-0.129107548661391,-2.74182505987857,-2.68970592620434,-0.0902449759677932,1.97546331505274,1.99273216216843,1.70047700107913,2.88274385606173,2.06004583488939,-0.339306132603942,0.541079874670675,-0.0741649141478812,-0.0391222970127379,2.51308586819819,-0.308102722515366,-0.462197725761495,-0.570348110589421,-0.88695431116488,0.788213504196415,-2.69,1.85518590872482,-2.69,-2.64302034998917,-0.45320601320661,-0.769854986360938,0.197158613370524,-2.69,1.53834425189225,0.578305234412731,-1.6994256418892,-2.00143369326804,-3.12320743695035,-2.69,0.120276116782995,-2.69,-2.69,0.0564260098833223,-3.11329060894442,-0.24159239961357,-2.69,-3.49671053887923,-0.70995468645757,0.971783265064785,-4.02833564490609,-2.69,2.74355238844007,-2.31662268024956,-0.74244324417633,-1.42421211790195,-0.205998424380663,-2.77719730303024,0.624371543368694,3.11618386793113,2.63859729687552,0.240860935288369,2.55794074846442,2.54500874508353,1.72278409938658,0.0745137311826386,-0.646697970881951,-2.69,0.348033095548715,2.54475870995496,-2.69,2.71327883211171,2.21954693798959,2.77526595813093,1.34483404955432,2.77244912278447,-2.81145675357567,0.945463231414308,2.53897145160391,0.913687422174098,-0.949040326591631,-1.46108726695608,-0.0441817838742694,-1.38303829897181,-1.65042294650275,-1.77669108390875,-1.46615788678504,0.639991668249764,-3.13789695695637,-0.972839534731718,1.26191994998438,-0.784678493172359,0.259406506288605,1.98703663107373,-1.38180498140385,-2.11910819413717,0.132458978831871,0.405792213966262,-0.438897933569545,-1.2192159852196,-0.704665598886124,3.01640805149425,0.422288386614317,2.68396520502898,2.93953177760872,0.473559716049231,1.40100496675105,0.0127981963034827,0.415996329778928,0.128473604000761,-0.562145713070762,0.647928648232389,-2.69,3.62979089155723,-0.229529166200565,-3.39156219792486,-2.69,-2.69,-2.1316098440734,0.133748812592028,0.382201767494549,-2.69,1.36837306276516,1.44805189952569,0.311559652469518,-2.69,-0.257544835792348,-3.39456160243195,-2.69,2.85551899924088,0.339258464383134,-0.113423408818918,-1.61149752621143,-2.35236972081136,-2.71345620301375,-2.69,-2.69,-3.42294279245495,-2.71680977305004,1.79274748758621,-0.154713473229994,-0.233398314661154,0.657262907204851,-2.69,-0.000986201275539056,1.89684201403609,-0.0314911432577396,-0.0772818654857203,0.874155651009839,-2.69,2.57430547269632,-2.69,-2.06935073059453,-2.69,-0.106164970592977,-2.69,-0.541267439046577,-1.21085777136908,-0.398760561641768,-2.32913971432629,-2.69,-1.59125985268688,3.26225767289804,-2.69,-2.8951577346027,-2.69,-3.30663595217116,-2.69,-5.19869748753079,-0.627881490469645,-2.69,-2.69,1.82929502240605,0.676999846707463,-2.52958202199842,-1.59419711603598,-1.32408810195906,-2.69,-3.27575859740645,-2.69,1.23204049546275,0.0348801199790004,-0.192198716053933,-0.145139917289186,-2.69,-0.321771339298983,-0.349334097149924,2.30723756687417,2.14077129234677,-0.103302480887008,-2.11969705276952,0.884508893415231,-2.69,-2.69,-2.69,-2.69,-2.69,-3.06888519723698,-2.69,-2.69,-2.69,-2.69,-0.0788454949324711,-0.0444640654353874,0.322315586004604,-0.042049246230415,-2.69,-2.69,1.05132990696307,-0.8894081846525,-0.0706263204288415,-2.69,-0.0848369957359641,-0.533842686193868,-2.69,-1.84223213522683,-2.69,-1.12496486778985,-2.69,0.138804675092719,-0.587799807788686,-0.711789295057155,-2.69,-0.412056328959296,-0.0840868238594751,0.305765017151888,-0.124434978029523,0.469329293957282,-2.69,-2.4582979422524,0.69598903934503,-2.35939627127483,-2.80492786321408,2.52899752056644,-0.902627155974752,-1.55244002550011,-1.53741248409274,2.31849851506891,-3.08765130408298,0.00712799316565958,-2.76196901442986,-2.62128431023493,-0.492641597651185,-0.0926199010028587,1.87034626774356,2.97641521137683,2.07324303393228,-2.84344558016395,-2.42953192293618,-1.38363160324488,-2.69,-0.33806158346113,2.06644942715705,-1.13278325085349,-2.47370092484566,-2.71436436765547,-2.69,-0.31039016116062,-0.623426178948215,0.43818097753749,2.83510181509786,2.16671715223912,1.78961332413047,1.21253347005321,2.81946458251193,2.54926700472257,-2.69,0.812064351879429,2.37415505800378,-0.442313709798851,-2.48069067458714,0.267241476199154,-2.26672833966865,-2.8444416440782,-2.69,-2.94432329521872,-0.503993361416914,-2.17978502379168,-2.69,-0.306536003932681,-0.0311060492064392,-0.255604312615486,0.0160667771577527,-0.760494923489559,-2.69,0.978496566569447,0.209106270439166,-0.0670802441219118,1.22301388177716,-1.4574055187443,0.544042874879132,2.96672750715734,1.62176912559948,2.25238391851563,1.49241972970645,-2.64197149178755,-1.3766870310707,-1.42841560731464,-0.264941235467698,-0.100574007375578,2.26472234495644,0.017236293693408,0.341271591222138,0.468450086520656,0.482105009869432,0.57725765178412,0.917944490123628,1.03178954389522,0.157118606641862,2.43992058969368,2.49264735989069,2.14339906144595,0.181659021789629,2.8096613139704,-1.96325743957829,2.73478133408295,-1.48684582286713,-0.267418635132394,1.61315771256474,-1.66625791454941,2.39382500338692,0.71858532891953,-1.55680966382149,1.93827610076289,-0.0564515274025245,-0.348840477906486,-1.53940118166309,0.894150740757574,0.194944944197127,-2.69,0.0573067163940153,-2.86884904484309,-2.5096007890052,0.315633837464451,-2.30208954764963,-0.257950420783591,-0.984743959827225,-1.50112295422906,1.91329648095858,-2.25701022846988,-2.27724774619258,0.802801698276246,-2.64432415049004,0.055395954926613,-2.69,-2.29100243124634,-2.527780112969,0.303178039745245,0.299060923770958,-0.787595432326174,-2.37564279719957,0.252563477136848,-1.09832022734964,-0.752095017116005,-0.978609958639026,-0.824517141779202,-1.63094126004511,-2.06036832360855,-0.387831635196741,-2.09903942281713,0.0585151806970336,-0.84001795919748,0.468168835992887,1.947937809782,2.11642133111029,1.74439735844552,-2.88192700481136,-1.34803770938726,-1.90712712082891,-2.69,-1.93326464278292,-2.02240580733151,-2.04431900983855,-2.69,-1.01984570459852,0.624104456597724,-2.69,1.96311231125471,0.225702889558277,-2.75045735908234,0.849727397883446,-1.56747416361565,-0.384589619574857,-1.06371377156174,-0.0480905887649574,-2.69,-0.776481245192909,-2.69,-2.39470408595842,1.52472519119862,-0.969720565004877,-0.686370700261061,0.0308314638442751,-2.69,3.02192692314347,0.0854204408899744,-0.146680130551672,-0.113565704128516,-1.98327530368333,-2.75943435109587,-2.51353864373201,1.4271280278233,-1.51186582613496,0.715122386870873,-0.19406331372145,3.2091489398866,-1.77345302546373,-0.197615428946939,-0.0792277429083633,-2.69,0.342140965294657,-2.82374337893531,-2.69,1.54561832962064,-2.69,-2.69,1.55354238869033,1.65624076746869,-0.515628602610519,2.32952069034322,-2.5901470189314,-2.69,-1.43299527828838,-2.14662837139858,-2.69,-2.69,-2.13316166585383,-2.33931617613149,-2.96624371158857,-1.62829954583114,0.776550793122666,-0.566150910147476,3.00758134500924,-0.24804515532548,2.34851162926167,2.53240879679701,1.13343137089498,-0.00344247492305255,-0.144746244605617,0.524433768530782,-2.69,-1.06554978603063,-2.69,-2.58782716600772,-1.57345771038046,0.0947537849317322,0.733315130492426,-2.25164216189427,-0.496217890356259,-2.39794506565609,1.91800450489707,2.89198907892933,-0.278324358629513,-0.907804852579228,-1.254968153305,0.515735299827882,0.594210608704815,-0.451937650310673,-0.494112032124565,-0.0122909405572605,-1.7691815651691,-0.359161989556608,-2.13707135344309,2.72547103459811,1.68580054485027,-0.590617889583207,-0.424118339939328,-2.27942876085362,-1.98963558895812,-0.622324632673239,1.71961331751537,0.969606170345449,0.334020937594828,1.69629548864144,0.237634653002452,0.970323557994473,0.0802929508031645,2.51680472592021,2.5343209928439,2.51593161154304,-2.85520653283562,-1.3450597557673,2.89114920305945,2.12106347506562,0.667357464443319,-0.185521507041995,-1.36736642543279,-0.399638661899963,0.835251091888195,-1.7969150186512,0.26904758421658,-1.34923713461128,2.65984038247805,-0.937647457765344,-1.43992279661263,0.795263573272654,-2.39833200401477,-0.354728550100297,-2.03152795013815,0.386871174677355,-2.86657984450352,-2.79149179080022,-1.70108188648203,1.76647015512364,1.09285000702389,0.174823353020859,0.140564532412696,-0.833620433928275,-2.61134260222755,-2.48408410164556,-2.64045290288965,-0.00024320231642266,-1.6938050853384,-1.15628289445706,-0.569173821074402,-2.69,1.53416311862898,-0.050696428714015,-1.05874529928006,1.46647361893374,-2.7693114159368,-2.40302910459156,-2.69,0.818512999505932,-1.08583393168862,-0.233241775574039,0.54288206687333,-0.0632085917683485,-2.8928255071384,1.79581782003078,0.165753755657588,-1.52088049406394,2.77706069721607,-2.69,-0.819873449998816,2.11111683381783,1.25875636203877,3.13564810941242,2.17508927964207,-2.02781687851013,-1.20120041492219,0.26472490611088,-1.32526431373335,-2.20283698554144,0.113328703813759,2.2213947455023,-2.07272554793745,-2.69,-2.74874075733528,-0.455840530998063,3.05913966077274,-0.351581759888541,0.819630523603555,1.28374527813028,2.9434903616904,-0.0102939386051603,1.70446774832686,-2.69,-0.00854795631218175,0.631979095908215,0.408487442528721,-0.707227216053638,0.550218936634421,-0.474455188400687,1.28054339125298,2.63776581291616,-1.24244211915924,1.70599840540408,-0.184386904608969,-2.69,2.39919717528861,0.304397437955965,-0.291963294687562,-2.69,0.053022078722285,-0.477388079747789,-2.69,-2.95114644569908,2.66078158414614,-1.64935943761396,0.358748461515378,-1.76399673690795,2.34021443887429,1.54843390062424,-2.38513389622748,-2.69,-4.02853401739657,0.36974436873742,1.02338577572353,0.704945864638513,-3.05237112601864,-1.85658371320904,-3.01183645788518,-2.72718906818119,-2.69,-2.59613076534177,2.38828948318941,-1.39733384088455,0.228669470951323,2.55811125466372,2.66707405623297,-0.508382665581673,-0.0199420425317448,0.328956334702574,-0.265089483161813,1.85782106297086,-2.86410886717897,-2.69,3.60581618900224,-1.4061546455609,-2.69,-2.69,-2.3547760403829,-2.1833476894618,-2.69,-2.69,-0.374203980967142,0.893427934364582,-2.47016309440519,-2.63583021299485,-0.0528109838322539,2.12172020912808,1.38525421017296,2.65061114512781,2.41571241670107,2.15444180142435,0.272801420138167,2.97876305525643,1.30020226775088,1.43514007993284,0.151846943415386,1.32081618200735,-0.609756404237932,-3.14454172187002,-2.08504005090901,-2.57374149470625,0.438994256629877,-0.310795399386677,-0.816394307476366,-0.664991496479096,-0.175003590882157,-1.73760675884951,-0.294107446413132,0.198552956192815,-2.69,0.0957007106006528,-3.0185158678744,-0.035905402092176,-2.69,-3.15562493726274,-2.69,-1.55451020633427,-2.69,-1.5883810368908,-2.42223687999678,-1.23162187807505,-2.69,2.44808890851785,-2.69,2.19568424624582,1.5928285380265,2.28778571960316,-0.261978603309158,-0.936526243216755,-0.758961971012616,-1.67756950506425,-2.69,-2.81225817017655,-2.69,-1.01027487989689,-2.69,-3.4000407853089,2.71679648257328,-1.1429953907808,-0.583268039260293,-2.69,-2.69,-0.767052471648635,-2.69,0.0209110449926465,2.22157010776819,1.71799034507826,1.09522394499415,2.8385609881708,2.54986933709963,-2.69,0.696505142125542,-2.69,0.100366237347346,0.082179066021574,-2.69,-0.193557991977079,-2.37907186588873,-2.69,-2.69,-3.04786861005368,-2.69,-0.809606603098269,-2.69,-2.83438939861691,-1.20199628198581,-2.69,-2.69,-3.78530094253922,-2.0939225574654,-2.38580685125221,-0.123829106714448,-0.165673801112433,-2.61586896063142,1.3471050636512,0.985010494945594,0.95387003634822,0.752394994809071,-1.08444336916938,-2.14452539063335,-1.97479361715974,-1.60398387392093,-2.77699459600706,-2.02495858614159,-2.61108715585211,-2.69,-1.57061669421486,4.26261969603867,-2.69,2.79429140389208,-0.24060284549444,1.17501180750919,0.681875652336755,2.32682456918235,2.07581662711292,2.93245976674473,2.87249760717248,1.4302151035457,2.13431891107343,0.149854083690753,0.768099389747737,0.429013497695662,-0.958592464124731,0.363671278066937,0.0106781812967279,-0.284306414380965,-1.83658794917752,-0.555737584591983,-1.55100378675073,-1.93140301324448,-2.20712154771749,-2.58163563936135,-2.24270811780639,-2.69,-2.63813456465093,0.941628208001839,-1.9071748926505,0.319789938246816,-2.92207975633412,-0.218045973124642,0.179431391524601,2.81567326778467,-1.2809153567706,-0.117670086117917,-1.46333424342072,-0.080733295314521,1.73307790681478,0.696149629904743,0.44305082030371,-0.931993714878852,0.293822189250216,-3.01236947912171,-1.40938852354803,1.30523677658989,2.89207121894597,0.498761136113448,-0.174469452339696,-0.129166269219653,-2.75587712198765,-2.70653700182704,-0.0928034025608705,1.99028217367314,2.01389922882399,1.71720190833682,2.89854702325995,2.07441027225057,-0.343927303054968,0.546006917829275,-0.074723523396012,-0.0381232048907913,2.52961779552558,-0.312517658343711,-0.467445031994865,-0.577112504500147,-0.89512883142961,0.792648006294772,-2.69,1.8661064319298,-2.69,-2.64860969012559,-0.45803245072515,-0.776658565782999,0.199608143942268,-2.69,1.55709063250364,0.574193787581304,-1.72096357011272,-2.02195023483672,-3.15529938033018,-2.69,0.115649958480966,-2.69,-2.69,0.0593307313188174,-3.11677948750375,-0.254377553682546,-2.69,-3.47983956766119,-0.729332664016157,0.981035728513837,-3.988749569842,-2.69,2.75631911840377,-2.32573212094398,-0.749394324636639,-1.43328506234401,-0.210151385361166,-2.78482042601259,0.628606138825492,3.12550290906293,2.6602352132647,0.24438775310462,2.57333660001619,2.55913371198846,1.73287777520987,0.065904607454403,-0.652058816459776,-2.69,0.350570717587277,2.55823719773753,-2.69,2.73039542396858,2.23639029159246,2.79010708870158,1.34988400042151,2.79925297691467,-2.81432583133116,0.957356806612287,2.53747080821132,0.925623985455625,-0.961651579348021,-1.46767285566724,-0.0444248912980408,-1.39788174402786,-1.66118932046362,-1.74015076006978,-1.48404425407532,0.640901314794808,-3.16067983054692,-0.983681303910261,1.27239463274663,-0.786534597212203,0.259319933179315,2.00694086956111,-1.39070112452651,-2.13772653527096,0.133040342216234,0.405726242610169,-0.416641388118712,-1.24079053257842,-0.698810726568669,3.03107022407917,0.422184532679875,2.70669362158164,2.95121299392455,0.478230172964746,1.42166691192351,0.0163461541436213,0.364784375549816,0.126509057291294,-0.567008230678234,0.651341250524087,-2.69,3.63893837979631,-0.232845910898105,-3.35911173474727,-2.69,-2.69,-2.10698797469403,0.11327528941716,0.38136924440727,-2.69,1.392734765198,1.45539605470214,0.308324570592901,-2.69,-0.264627270270824,-3.39769588205808,-2.69,2.88130839681552,0.341677904921898,-0.113580534830363,-1.62125687869806,-2.37029988290445,-2.72757558336331,-2.69,-2.69,-3.41385536570869,-2.73816263987631,1.83290492355527,-0.146725453688487,-0.254281404960986,0.612625681947682,-2.69,0.00393862634647875,1.90624165664957,-0.0429605210745666,-0.0780829560830789,0.835043770608729,-2.69,2.56197502459904,-2.69,-2.08211454372204,-2.69,-0.102981364288438,-2.69,-0.555221866919201,-1.21015844583857,-0.402811465419294,-2.34469986092685,-2.69,-1.55502604669851,3.28152594656677,-2.69,-2.86726718119343,-2.69,-3.30152864668772,-2.69,-5.18509677424474,-0.578604021497477,-2.69,-2.69,1.84206615320246,0.68468155121856,-2.54585401453398,-1.60635207900631,-1.35228042126874,-2.69,-3.27492386752983,-2.69,1.22213568723529,0.0405248272203276,-0.198816275101998,-0.134986110715811,-2.69,-0.34613884193991,-0.355642755459903,2.28198038652999,2.15874441490689,-0.104423333717106,-2.12987404852505,0.889500923349596,-2.69,-2.69,-2.69,-2.69,-2.69,-3.08288734264334,-2.69,-2.69,-2.69,-2.69,-0.0796061007695152,-0.0448294878942885,0.321434721570903,-0.0422320797531547,-2.69,-2.69,1.06590851976396,-0.892340295348862,-0.0657771180476523,-2.69,-0.0679320277236196,-0.516337411633834,-2.69,-1.91665874543666,-2.69,-1.13034824332002,-2.69,0.169574517469106,-0.631727473776281,-0.71312669052772,-2.69,-0.42733664255894,-0.0860934115205648,0.306272436420389,-0.138064157602493,0.463025204457735,-2.69,-2.51114014970269,0.717038261327203,-2.42537961317605,-2.81910178622226,2.544166351367,-0.905386936100855,-1.51535794823994,-1.54540841901877,2.33033641806415,-3.1094907827443,0.0113475460484062,-2.77507563555224,-2.63302893799244,-0.496891280693907,-0.116581476842941,1.87860651040774,2.99452482319974,2.1301885430782,-2.85629959987794,-2.4422611616738,-1.39822066529828,-2.69,-0.321609442232119,2.07884218527358,-1.15040603575722,-2.49312838178382,-2.81291455671102,-2.69,-0.342496581502387,-0.64389454713796,0.444983794146992,2.84260735343977,2.17159202706975,1.79799300565669,1.21867963209844,2.83744204919057,2.56541660427439,-2.69,0.817635095628625,2.38635547690532,-0.400949908963706,-2.47202959202537,0.247423498057826,-2.27456019190794,-2.85579746153156,-2.69,-2.96223757809517,-0.507262103831629,-2.20191472107286,-2.69,-0.308944541371541,0.00895135765809324,-0.292881839445488,0.0162559406259386,-0.788391971967956,-2.69,1.02586264953108,0.21555597345242,-0.0677202193493448,1.23021286806062,-1.47095977411671,0.549051154592201,2.97983192704223,1.63363920831575,2.24325440768927,1.50420323676454,-2.65628517071174,-1.38500774214899,-1.43884855281641,-0.267285693951142,-0.102099320801192,2.2827391221235,0.0177538153108229,0.345436009578851,0.472439897837401,0.485901797561119,0.580572572765472,0.92684433222391,1.04102134039163,0.158207039036447,2.45573815231841,2.50324719699076,2.15487866852431,0.181705022491894,2.82731248467529,-1.98100317826742,2.74953612750094,-1.49689231562405,-0.270626621377732,1.62739140907742,-1.67697744678804,2.40254094343771,0.720247217417092,-1.56160731514309,1.95398989221913,-0.0546172168335181,-0.349821035604763,-1.54628525020361,0.898574698885869,0.195117919454778,-2.69,0.0577036715215708,-2.88367270014021,-2.52244811042971,0.318218596234791,-2.31363575369926,-0.258391725560007,-0.988266090341057,-1.51274499687763,1.92287317007095,-2.27697359879696,-2.29201646574087,0.810456244410652,-2.65696499512317,0.0561093149723088,-2.69,-2.2962476158971,-2.54025672257202,0.309637784247929,0.302645904979737,-0.793972687263412,-2.39182694821419,0.255297624787073,-1.10752861406377,-0.756193929941874,-0.985249672644669,-0.833157654823202,-1.64245261494347,-2.06912119489609,-0.391505007608095,-2.11275931438587,0.0591402069516858,-0.843240327636894,0.47197425651914,1.95998922464635,2.12850640547957,1.75216663448155,-2.94222215314354,-1.32585613093268,-1.96910159072782,-2.69,-1.99731592012988,-2.09435051089407,-2.1381244713536,-2.69,-1.08614767703758,0.650299992225665,-2.69,1.96754757765293,0.228202208557813,-2.76264355100735,0.852015112714011,-1.577258974178,-0.405457014441669,-1.06785401165309,-0.048539455068112,-2.69,-0.778795710567067,-2.69,-2.41454396013118,1.56860921231524,-0.986300480267565,-0.683159163248565,-0.00398880646698586,-2.69,3.03525014275258,0.110733707816849,-0.110101730008474,-0.104798603946137,-2.05958638790971,-2.74693876021395,-2.52846626430172,1.43275085861651,-1.52675184586713,0.721816200464346,-0.194474668629034,3.23122079352119,-1.81818997266217,-0.202918570936997,-0.0821753074136166,-2.69,0.360186593810708,-2.83963407939235,-2.69,1.49802618426968,-2.69,-2.69,1.56109661415332,1.65799168508053,-0.508301321508875,2.31028562821159,-2.65420341124144,-2.69,-1.47561626615841,-2.15092467549049,-2.69,-2.69,-2.21037057698334,-2.35511621493998,-2.98450344873838,-1.6357207975971,0.780584463548051,-0.571568920688833,3.02242895570973,-0.250143480445539,2.357506303179,2.55028933460195,1.14204802678685,-0.00341437773904444,-0.145843422410438,0.529193095637725,-2.69,-1.1358052187625,-2.69,-2.65078258854677,-1.63448542649942,0.0830546122815815,0.735642594040809,-2.26967941593644,-0.501141708494728,-2.40833771676118,1.93094238922963,2.90500318133296,-0.28033033944905,-0.91058133351433,-1.25920562870975,0.516348929170008,0.598480436550667,-0.454856140868164,-0.49775043864836,-0.0123083081819267,-1.78197893885828,-0.361562751420189,-2.15457250102132,2.73664175662172,1.69387489571539,-0.593928605886414,-0.427214580844185,-2.29150606728278,-2.00057862602989,-0.628999728729743,1.7316827201802,0.981192234037487,0.336720762966599,1.70707938276103,0.239675120404881,0.977112881252634,0.0807873649921482,2.53371903589218,2.54543475401013,2.52901113644089,-2.86506396014768,-1.35790819463546,2.90507933434201,2.13464161775689,0.668369066921945,-0.187597772551315,-1.37540234243588,-0.40320313570239,0.843584776161776,-1.80749412321677,0.268496632835967,-1.36089817276866,2.67685768128613,-0.940273059046147,-1.44663111126781,0.80573108449654,-2.40961880001323,-0.357227672628361,-2.04571431847828,0.388975927665343,-2.88325931055774,-2.80477688171914,-1.70972878388398,1.77634371576006,1.10050635370995,0.175711274214325,0.142018825100479,-0.843748288671313,-2.62102305673571,-2.49774558606768,-2.65738854045722,5.60031183757294e-05,-1.70829023346502,-1.16348987515247,-0.575561437447215,-2.69,1.54784440336853,-0.0518496413138958,-1.06093125878973,1.47500892272553,-2.78421909321607,-2.41586015297967,-2.69,0.823211178769052,-1.09265567166778,-0.234819624355222,0.547396192511963,-0.0638241716658573,-2.90851329943421,1.80188849875725,0.165203450966675,-1.53129079844132,2.79085504960575,-2.69,-0.828359873599455,2.12583163200207,1.2681890654399,3.15382960095632,2.18629884698891,-2.03101273160023,-1.20413495070538,0.264169456163377,-1.32991880632171,-2.21687173893678,0.114510499997812,2.23388295801786,-2.08576575853686,-2.69,-2.76430403183408,-0.459236265495441,3.07294259703102,-0.355062744725935,0.824265940313131,1.30743070634921,2.96124212684399,-0.00842253316653938,1.71900724583349,-2.69,-0.0095059480785811,0.63777200501409,0.411684520212475,-0.71355589815545,0.553325858933077,-0.480433814288891,1.29328832426159,2.64646910230454,-1.25474200753204,1.71203700095021,-0.185458607847284,-2.69,2.40874211961278,0.30007589163732,-0.289528706649952,-2.69,0.0482172745480966,-0.485617995132959,-2.69,-2.97013471264917,2.67509311272313,-1.65964287957502,0.361469010096048,-1.77190761520494,2.36134344279664,1.55360630475676,-2.41371581410683,-2.69,-4.03652741558777,0.374791325181663,1.03035889921539,0.71232138624968,-3.07475139605953,-1.87618278416251,-3.02378991819764,-2.74575699387258,-2.69,-2.60203552957965,2.33459905385519,-1.37956751160109,0.199675744139321,2.56445712030572,2.69744291446478,-0.568305937429038,-0.0203090698828605,0.331270068541694,-0.267198455245904,1.86736183534164,-2.88367345036318,-2.69,3.6522949813856,-1.41256221365165,-2.69,-2.69,-2.36935923018406,-2.22834290279057,-2.69,-2.69,-0.412799372135195,0.894787808109523,-2.48808770528296,-2.64434271727689,-0.0541024158570241,2.13815048815659,1.39506462824676,2.66438423994456,2.42737952490174,2.16799041689227,0.274025829901432,2.99347138250829,1.30683507219395,1.4441793705255,0.153411993702285,1.32478955121845,-0.614416870965721,-3.16294133573001,-2.09469791065282,-2.5849574984087,0.393310759855405,-0.31426222247056,-0.819909893108962,-0.665443469406594,-0.202470296468624,-1.74368443711425,-0.280264298462117,0.20744680637813,-2.69,0.0643348365974148,-3.03052888953743,-0.0549918175260266,-2.69,-3.11638359953954,-2.69,-1.53077258624671,-2.69,-1.53048183890421,-2.39603807303328,-1.240811055202,-2.69,2.4738904873894,-2.69,2.20413551902463,1.5558000196559,2.29737221212705,-0.266350396922094,-0.898143667653652,-0.74645056271394,-1.63542185701507,-2.69,-2.74528874586083,-2.69,-0.963466346963737,-2.69,-3.39020685370095,2.73412944837085,-1.14309691075413,-0.631588595937747,-2.69,-2.69,-0.789853623497953,-2.69,0.0244698864041807,2.23444072362386,1.73163076224647,1.10681665265663,2.84645126906845,2.56082209163229,-2.69,0.702623024591221,-2.69,0.118250574614398,0.0736298992187411,-2.69,-0.255419080439047,-2.40125891140287,-2.69,-2.69,-2.98807574877051,-2.69,-0.763567163645541,-2.69,-2.80708009005748,-1.1356912420739,-2.69,-2.69,-3.7520913090953,-2.12422889046769,-2.39566583830244,-0.124363998886494,-0.168802081216417,-2.63299931551678,1.3547165066539,0.99086378022811,0.95725257545965,0.761026195708864,-1.09121318862947,-2.15542659172535,-1.98101303134903,-1.61670631443534,-2.78794356227233,-2.03436405484989,-2.62736397533742,-2.69,-1.57991866243597,4.280524340326,-2.69,2.80234169984885,-0.239921345096939,1.17750742599039,0.686792929341293,2.33950837317518,2.09290106621625,2.9460483678628,2.88493498763961,1.43791942034672,2.14786157310495,0.15092224492477,0.773280777266575,0.434424561348601,-0.968638825984293,0.367332364150367,0.0109220931186484,-0.286302837982813,-1.84786337714633,-0.560722384405441,-1.55916480029715,-1.94624590736351,-2.21341505241839,-2.58995073749617,-2.25377495392277,-2.69,-2.65833323597756,0.943602910248909,-1.914694421582,0.326986773265233,-2.94058481583134,-0.220889865027227,0.181808364987169,2.82933493877828,-1.28666956771803,-0.124330307769781,-1.47193543347083,-0.0815053255287973,1.7412336969772,0.697003553226843,0.444118466017402,-0.917608638784896,0.296221738642927,-3.03661646875118,-1.4152980616095,1.310912902531,2.90633312873018,0.498356661603696,-0.174183597779803,-0.129643463743422,-2.76696951017264,-2.72253570877377,-0.0953937186574787,2.00302721012654,2.03280168181555,1.73179094124428,2.91192082450163,2.08663669878084,-0.34847097959235,0.549966126697795,-0.0749725980078805,-0.0370271568996983,2.54584329558692,-0.316415632839883,-0.472131767836889,-0.582533391445065,-0.902848759176056,0.796799642450114,-2.69,1.87591912128126,-2.69,-2.65317242911721,-0.461954099295957,-0.782331419390525,0.201649628835154,-2.69,1.57921039598969,0.569711048463907,-1.73825471397141,-2.04257448589213,-3.18480943683255,-2.69,0.112665472959308,-2.69,-2.69,0.0618826302393101,-3.11292037565293,-0.269791467230185,-2.69,-3.44625619952041,-0.753803081713744,0.9889633989831,-3.9266349916988,-2.69,2.76993944939397,-2.33498608233117,-0.754456353149128,-1.44029239456989,-0.214405413158009,-2.79147127702745,0.632712424435991,3.13438234273442,2.67900945222972,0.247098089875882,2.58686781005798,2.57181758153752,1.74190878203256,0.0536582828403827,-0.65588913073197,-2.69,0.352360350654224,2.56914576992935,-2.69,2.74561657000328,2.25154861225487,2.80262549742601,1.35342496454825,2.82529029454801,-2.81432581360035,0.967806069256258,2.53315998641644,0.940806854298877,-0.973376729038264,-1.47384869478769,-0.0446321987906808,-1.41127129234093,-1.66939764739607,-1.68543002542133,-1.49826687723607,0.640118477247201,-3.18234426002062,-0.993481239214831,1.28199590398776,-0.788826910100201,0.259267445015553,2.02508006149666,-1.39908544811941,-2.15503023297795,0.1336314671073,0.403887447504019,-0.386801015852255,-1.25949691594887,-0.690150557363629,3.04513132677577,0.422043896536053,2.72688050736289,2.96042035362613,0.482243953144197,1.44202845628774,0.0201476708800283,0.300008964364769,0.123399044701697,-0.570366460579605,0.653112102123503,-2.69,3.64600403386877,-0.235759402721932,-3.31167153624448,-2.69,-2.69,-2.06429506002365,0.0903298685705903,0.37679118530019,-2.69,1.41979187192295,1.45871400693942,0.3032003079833,-2.69,-0.268957570391492,-3.39822102495458,-2.69,2.90988438931009,0.34364509707217,-0.113259312249684,-1.62978068382056,-2.38675554191017,-2.74019507395359,-2.69,-2.69,-3.39724398004685,-2.75855348624941,1.881398781317,-0.136789376285364,-0.281410670940692,0.551734891562141,-2.69,0.00853056837445461,1.91460137456863,-0.0571709250425144,-0.078366108616405,0.781896619928794,-2.69,2.54320062597916,-2.69,-2.09125733537277,-2.69,-0.0974834514928752,-2.69,-0.566815739814245,-1.2045317489589,-0.406593719284433,-2.35628178166206,-2.69,-1.49962016605837,3.30245159329732,-2.69,-2.82073704026045,-2.69,-3.28394924618101,-2.69,-5.15783662729761,-0.511981594599748,-2.69,-2.69,1.85303926624493,0.691360633655443,-2.56069851031965,-1.61908303294871,-1.38386197853515,-2.69,-3.26814549639151,-2.69,1.20860197423726,0.0477276968261739,-0.20664559309021,-0.122578424543177,-2.69,-0.371479127967131,-0.362244604111222,2.24663210202982,2.17400243999831,-0.105449299239082,-2.13932853394762,0.89436272258739,-2.69,-2.69,-2.69,-2.69,-2.69,-3.09522226943761,-2.69,-2.69,-2.69,-2.69,-0.0802428493378967,-0.0451071161278182,0.320574488628363,-0.042423672713261,-2.69,-2.69,1.07875084236828,-0.893934914645556,-0.0609651700041721,-2.69,-0.0535149654361402,-0.500329312649126,-2.69,-1.98296699536823,-2.69,-1.13435142698533,-2.69,0.198454135097687,-0.672775654308933,-0.713818353668401,-2.69,-0.440503037050285,-0.0877708599980841,0.306468015941489,-0.150220058600562,0.45712721283448,-2.69,-2.55897706693795,0.737307951955631,-2.4889440996111,-2.8327530623824,2.55736537438697,-0.907937015795913,-1.47848083821151,-1.55285662854954,2.33986928213126,-3.13084317154027,0.0150796073378738,-2.78678890495394,-2.64334918018392,-0.500402999049179,-0.144353881256224,1.8866669366824,3.01036747654131,2.1862454757081,-2.86697779955108,-2.45308001356426,-1.41098552332643,-2.69,-0.304560650939941,2.09007917331916,-1.1662965931777,-2.51094229259228,-2.89713913249978,-2.69,-0.372069060147485,-0.663567577034571,0.450980083557155,2.85022280293982,2.17483767448476,1.80524977780252,1.22402814386366,2.85299751142225,2.58007458411632,-2.69,0.82207318692489,2.3983192915568,-0.360190893079762,-2.46413450045818,0.227568065300149,-2.28187128543442,-2.86537835352379,-2.69,-2.97947089139454,-0.510044391785067,-2.22138877133447,-2.69,-0.310897590380105,0.0457691846463435,-0.328766086997653,0.0166261540778066,-0.813906893860409,-2.69,1.0720179993834,0.220533231041671,-0.0681525585343756,1.23627466546587,-1.48276446724233,0.553101771098995,2.99192024356831,1.64356222855876,2.23324793862982,1.51502253291455,-2.67007599461373,-1.39206577269575,-1.44764391758636,-0.269353309220779,-0.103428615586205,2.29860053582636,0.0182836597988525,0.349076244768903,0.475781238270055,0.489023383324071,0.583454211253922,0.934085168698819,1.04916354340132,0.159039016234405,2.47011184520201,2.51234319601365,2.16457477121845,0.181501245795304,2.84333098861497,-1.99714143838364,2.76354950200898,-1.50652504439661,-0.273414454378402,1.64021579429094,-1.68598285827963,2.41094821088177,0.722034171529493,-1.5663001112818,1.96870458910434,-0.0531886647401802,-0.350892817154898,-1.55301574313542,0.902189934287707,0.195249096780489,-2.69,0.0579636574702452,-2.89660372566492,-2.53483096265836,0.320306726750307,-2.32366439310256,-0.258752619195488,-0.991548904957954,-1.52245843170846,1.93234480116501,-2.29562746965269,-2.30496351240451,0.817082911293852,-2.66746316995543,0.0570871832948521,-2.69,-2.30086448252573,-2.55118556906733,0.315134265228763,0.305456499558162,-0.799177323128442,-2.4062873625631,0.257691359697336,-1.11547687227022,-0.759532532412623,-0.990893117959338,-0.840759190664848,-1.65251194004641,-2.07636732274701,-0.394473690467044,-2.12580955698525,0.0597106792879646,-0.846144662639756,0.47588285178657,1.97036160715526,2.13906427188867,1.75941123075346,-2.99799638592493,-1.30437915602232,-2.02603190284162,-2.69,-2.05448486017854,-2.15598389198767,-2.22447440994478,-2.69,-1.15169027299618,0.675025117877442,-2.69,1.9725130076364,0.230356672225029,-2.77289803824599,0.854361549135396,-1.585511457217,-0.423817051072395,-1.0710158603041,-0.0488973689347599,-2.69,-0.780210027672941,-2.69,-2.43310484415805,1.61145390924453,-1.00343862683283,-0.679451476193055,-0.0372678103910563,-2.69,3.04728092507125,0.13374379519979,-0.0771086252104062,-0.0967659811654768,-2.12588709147559,-2.73395627150666,-2.54256735769438,1.43783384182991,-1.5401344198112,0.727782253670301,-0.194581705850633,3.25169650020477,-1.8568730075693,-0.207990473645461,-0.0849707429623463,-2.69,0.377412566279528,-2.85392314515183,-2.69,1.44651639451136,-2.69,-2.69,1.56885953354201,1.65815430433088,-0.500523962410931,2.28959353389922,-2.70919319082884,-2.69,-1.51145775419462,-2.1550913339853,-2.69,-2.69,-2.27682307537257,-2.36888200894803,-3.00213139964887,-1.64188760204086,0.784057609548007,-0.576107984766408,3.03576386683592,-0.251958969952457,2.36510486925242,2.56651366305102,1.149200246418,-0.00328607113427424,-0.146722289237562,0.533062381945368,-2.69,-1.20326039357363,-2.69,-2.70703571277874,-1.68975578671182,0.072032303220616,0.738697085726808,-2.28547623539917,-0.505363452355614,-2.41720302149236,1.94298216277601,2.91811011024045,-0.281716074799921,-0.913090746661405,-1.26345032176254,0.516926722865479,0.602021956707087,-0.457365594508516,-0.500816920163342,-0.0123212805676343,-1.79305354865525,-0.363695663302144,-2.17045129190698,2.74761731660011,1.70062435201889,-0.596703731741066,-0.42972878316449,-2.30274179981577,-2.0111570830421,-0.634969777856875,1.74214862253846,0.991879943081862,0.338813679178752,1.71812653656805,0.241486866451801,0.98275250787261,0.0811359869520561,2.54921567377955,2.55532264304189,2.5405645985273,-2.87488115764638,-1.36891941417787,2.91693066109759,2.14747656005358,0.66925422465262,-0.189321665206778,-1.38224913929053,-0.406115277026632,0.850558187220002,-1.81656176760828,0.268068966946568,-1.37154429952991,2.69292457459766,-0.943140038324341,-1.45286195241372,0.814703733854419,-2.41890826597339,-0.359291181023046,-2.05856519781522,0.39070221431225,-2.89897644526547,-2.81645766954647,-1.71778659957541,1.78455500026118,1.10719632946322,0.176277970527122,0.143336814750569,-0.852943923669862,-2.63059147822163,-2.51049171644223,-2.6721719795579,0.000358756870893985,-1.72107793409198,-1.16921848900348,-0.581394292522652,-2.69,1.55966488543701,-0.0526644709595843,-1.06249444679317,1.48320412907865,-2.79714307416181,-2.42715205976417,-2.69,0.827209240597054,-1.09840109140075,-0.236127260528199,0.550898778730844,-0.0643339969068336,-2.92232467602002,1.80773457637836,0.164534042565714,-1.54020246707422,2.80318101962307,-2.69,-0.83591055129495,2.13840003277348,1.27719423586016,3.17142393235035,2.19655720711173,-2.03460753232011,-1.20729186051329,0.263803365349008,-1.33415963072182,-2.22946387838083,0.115239852333187,2.24475223604789,-2.09736342418832,-2.69,-2.77754968496216,-0.461863543315576,3.08607375215287,-0.357922996552469,0.828758487952869,1.32946688743162,2.97683848257595,-0.00644209786012447,1.73157405396988,-2.69,-0.0101734352112865,0.642472555906306,0.414336584564003,-0.718786024222349,0.556084945372848,-0.485685039984089,1.3046035520996,2.65320812430111,-1.26722957238006,1.71763542646601,-0.186307545387651,-2.69,2.41710480576486,0.295920831118549,-0.287568458580128,-2.69,0.043771358418375,-0.492056573840557,-2.69,-2.98964944447083,2.68834775340987,-1.66819560024519,0.363628436002289,-1.77937068379124,2.38344683323336,1.55768732601454,-2.43374109189478,-2.69,-4.04049992862373,0.379220802040085,1.03625131017969,0.718610326969261,-3.0953367778661,-1.89413093396247,-3.03388098252477,-2.76200323154201,-2.69,-2.60744549449735,2.27734939093554,-1.36035232355781,0.169541064619516,2.56996040811335,2.72599626967831,-0.62802951285649,-0.0206175349480833,0.333088870355413,-0.26878269569192,1.87520425064404,-2.90092217259264,-2.69,3.70227100637407,-1.42012661220167,-2.69,-2.69,-2.38322769353895,-2.27339428270171,-2.69,-2.69,-0.450028885488027,0.895933789112846,-2.50373575046161,-2.65188792643327,-0.0552401363263574,2.15268525005919,1.40410028489917,2.67654979154556,2.43690095435512,2.17968420762301,0.274821776509298,3.00669485898399,1.31306565794084,1.45197192515509,0.154764682041103,1.3285599189884,-0.617990430092622,-3.18092135838683,-2.10290590240301,-2.59441796728602,0.34619823507111,-0.31801258711399,-0.822584304465124,-0.665120639974255,-0.227801389852057,-1.74765456174039,-0.267723933429855,0.215632930780225,-2.69,0.0351090017262543,-3.04174618638934,-0.0743015899854215,-2.69,-3.072555215879,-2.69,-1.50689992441712,-2.69,-1.4727441352502,-2.3667521044799,-1.24967486544637,-2.69,2.49775026902344,-2.69,2.21209938301868,1.51738233418656,2.30549569396853,-0.27067160617994,-0.856447190264453,-0.73324400590538,-1.58916992836379,-2.69,-2.67249714317111,-2.69,-0.916140436594104,-2.69,-3.3782142633938,2.75108651267854,-1.14348855317541,-0.679759344749409,-2.69,-2.69,-0.81175157177097,-2.69,0.0273653671692946,2.24929691495571,1.74372832911001,1.11844380263767,2.8538805617894,2.56937154469414,-2.69,0.710169897348904,-2.69,0.135365865791359,0.0650661247675359,-2.69,-0.316693097255751,-2.41496936307755,-2.69,-2.69,-2.93012587306742,-2.69,-0.71451703761637,-2.69,-2.77339957417662,-1.06714797109961,-2.69,-2.69,-3.71224816730389,-2.15746556530732,-2.40532484744676,-0.124954574473222,-0.171230858542334,-2.64799819060249,1.36180889815463,0.992898523932074,0.961239406937822,0.768327014444573,-1.09697288740232,-2.16522759132303,-1.98730632201557,-1.62777538632785,-2.79729660226942,-2.04214850274824,-2.64215223872975,-2.69,-1.58842969667621,4.29611836128538,-2.69,2.81093121656484,-0.238658546276867,1.18008232249722,0.691210690264474,2.35183132003357,2.10749607377811,2.95773866750615,2.89581260816293,1.44430986331655,2.15945444597831,0.151827803559925,0.77745874052988,0.439036721133996,-0.977163998306463,0.370475005437496,0.0111629423760879,-0.287872578133692,-1.85720533248777,-0.564918081313087,-1.56598422181226,-1.9592225895891,-2.21918205545575,-2.59702691073872,-2.26429997171515,-2.69,-2.67680856058046,0.945686291435008,-1.92225955371234,0.333509580261178,-2.9569007606619,-0.223546146098615,0.184009955522979,2.84214157044303,-1.29127218824721,-0.130579441690314,-1.47940361091666,-0.0821020905012888,1.74914813800653,0.698190252933626,0.444782036887912,-0.899724423486038,0.298269207619255,-3.05941622386624,-1.42129145853923,1.31651248989629,2.919651923546,0.497843775487146,-0.173623163415114,-0.13061548245743,-2.77615510693249,-2.73785790981277,-0.0977004713848149,2.01401033400659,2.04995216232422,1.74468631421958,2.92359738987573,2.09702222164653,-0.35257068522468,0.553117314536978,-0.0750929742817518,-0.0358974975021449,2.56163860071926,-0.319954239132806,-0.476337593541137,-0.586759474727681,-0.910033115809557,0.800631245631006,-2.69,1.88485643710655,-2.69,-2.65855392976718,-0.465097911310552,-0.78706373954923,0.203307997956572,-2.69,1.60165624846795,0.565784027054428,-1.75176694414773,-2.06310638821516,-3.20913023934883,-2.69,0.11036155409624,-2.69,-2.69,0.0640801937033456,-3.10658230941577,-0.285528969592103,-2.69,-3.40813835137598,-0.779341967786449,0.995804325381118,-3.85694086583961,-2.69,2.78418420425575,-2.34414622221737,-0.758230606652303,-1.44592360532926,-0.218452266837908,-2.7971774561561,0.636774754552397,3.14283355045285,2.69506972931909,0.249221372044703,2.59879935383885,2.58342547437877,1.75014382878647,0.040545831851625,-0.658799341924309,-2.69,0.353561012967252,2.57813969174294,-2.69,2.75930721773847,2.26475495559804,2.81350608874901,1.35606866486082,2.850156372284,-2.81324818934016,0.976986066744441,2.52818766420398,0.957057124763714,-0.984392700253683,-1.47989272121698,-0.0450627928786827,-1.42320481169453,-1.67608495542454,-1.62761242480248,-1.50896999357962,0.638743772570035,-3.20320772371571,-1.00248363749752,1.29080136580438,-0.791529433973506,0.259241583639921,2.04177908104454,-1.40705392155986,-2.17123543055099,0.134258714942971,0.401489902437664,-0.356635570086937,-1.27527531197536,-0.680641989897676,3.05871214180645,0.42193519494776,2.74477050906266,2.96838819383,0.485867154796493,1.46065012895596,0.02320943271436,0.236611020164083,0.120142641537799,-0.572573283356818,0.654217985353255,-2.69,3.65282570423254,-0.238344613943922,-3.26513698791454,-2.69,-2.69,-2.01869109864303,0.0659873362000455,0.371446356905423,-2.69,1.44699576154818,1.45967376512216,0.297552495273304,-2.69,-0.271471743850773,-3.39832107440534,-2.69,2.93885878217143,0.345285701140176,-0.112857228873083,-1.63734732565904,-2.40129304368228,-2.7515891345478,-2.69,-2.69,-3.3790343738202,-2.77706766097914,1.93103371635019,-0.12709720605519,-0.310128911406327,0.486641731974123,-2.69,0.0130929092865344,1.9224556932667,-0.0711102707914084,-0.0784198084413537,0.726262534855768,-2.69,2.52421678134155,-2.69,-2.09819030582843,-2.69,-0.091474429773067,-2.69,-0.576541230798357,-1.19763458903377,-0.410251848610202,-2.36586993258963,-2.69,-1.43940576000769,3.32320118558364,-2.69,-2.77123155701096,-2.69,-3.261294506052,-2.69,-5.12565837715553,-0.44257213408162,-2.69,-2.69,1.86244564108401,0.697111331090587,-2.57391748942393,-1.63302192205872,-1.41423329793857,-2.69,-3.25836364029844,-2.69,1.19377758651194,0.0552405863727486,-0.21408251233216,-0.11102393197364,-2.69,-0.397846021821492,-0.368417842204201,2.20986818430416,2.18696713539959,-0.10644508631788,-2.14826625163375,0.899094511764569,-2.69,-2.69,-2.69,-2.69,-2.69,-3.10616818223038,-2.69,-2.69,-2.69,-2.69,-0.0807751943544856,-0.0453077589350788,0.319759207850402,-0.0426438310114671,-2.69,-2.69,1.08956987859323,-0.894763965391794,-0.0566586088182139,-2.69,-0.0430299057762241,-0.487890157170023,-2.69,-2.03576534254447,-2.69,-1.13797132859613,-2.69,0.222323000996593,-0.706293271717942,-0.714354211942924,-2.69,-0.450684019040573,-0.0890836502277904,0.30655336524501,-0.159865201099386,0.452845017216031,-2.69,-2.59712430910358,0.75471430769261,-2.5440266347123,-2.84604589054389,2.56897907856346,-0.910405040366834,-1.44767507952015,-1.55979434969928,2.34769166976928,-3.15083115553382,0.0178709815196113,-2.79734311938946,-2.65271993686795,-0.503266310453433,-0.173718058254315,1.89444816696486,3.02434057615786,2.23553790859451,-2.87620314568358,-2.46235200568672,-1.42223978444425,-2.69,-0.289082482776288,2.10020308878561,-1.17992475527009,-2.52751016638698,-2.96028383425691,-2.69,-0.396942804440771,-0.681068104989465,0.45600728087351,2.85860119249715,2.17810306403536,1.81180698661712,1.22870485588662,2.86631279754158,2.59376499112796,-2.69,0.825524503268218,2.41015075482983,-0.324652440826668,-2.45936521043025,0.209996393420684,-2.28864528063538,-2.87380339884106,-2.69,-2.99602828093203,-0.512436643922802,-2.23824805031233,-2.69,-0.312480922738827,0.0750630566260482,-0.358991214369236,0.0170358169409982,-0.835178441258181,-2.69,1.11221401722463,0.223965360380169,-0.0683908581108843,1.24146315793575,-1.49296175978266,0.55627686956856,3.00337051315437,1.65237671246149,2.22399497582167,1.52495410935947,-2.68375886540439,-1.39804505676285,-1.45498140048625,-0.271180366133748,-0.104549746172788,2.31274019552725,0.018812304186786,0.35229233392822,0.478563377758443,0.491579320699805,0.585979875537019,0.939838885938706,1.05638560973072,0.159655116404185,2.48323363341956,2.52028533294114,2.17290417943014,0.181058272110904,2.85782121217232,-2.01200410504947,2.77695298937643,-1.51593940023825,-0.275858817697628,1.65196959469111,-1.6934913605477,2.41901039310881,0.724004181250543,-1.57092108245966,1.98271549307303,-0.0521365618231804,-0.352060502140606,-1.55964503022702,0.905275164412793,0.195403118286803,-2.69,0.0581228549746219,-2.90790112879017,-2.54686306391046,0.321955977492819,-2.33270456309054,-0.259077131962561,-0.994605476845179,-1.53047965608871,1.94174809422052,-2.31325034145758,-2.31626931306435,0.82283661264431,-2.67642179519313,0.0584008769809107,-2.69,-2.30573243875911,-2.56086790870764,0.319600742101982,0.307620541010722,-0.803394298350911,-2.41938246925774,0.259783957676174,-1.12231788067563,-0.762239546871037,-0.995672498630044,-0.847517030128276,-1.66131256995412,-2.0824676607053,-0.39682334875816,-2.13830272155021,0.0602239015531793,-0.848780874716702,0.48001614556619,1.97917667423743,2.14835031848767,1.76646335007477,-3.04506733272906,-1.287454020755,-2.07391811255832,-2.69,-2.10067613142426,-2.20359856704486,-2.2939610679064,-2.69,-1.20909256696403,0.695835314281987,-2.69,1.97806379864016,0.232205606329698,-2.78153786543562,0.856772624629832,-1.59250260514961,-0.438304169446133,-1.07373657188636,-0.0491429704134479,-2.69,-0.781529864763578,-2.69,-2.45038269783568,1.64906952861487,-1.0196728709548,-0.676316245878182,-0.0650139736527069,-2.69,3.05898586578804,0.152148342282251,-0.051509977927552,-0.090357012055755,-2.17744620096989,-2.72259434039595,-2.55602408862418,1.44243841961387,-1.5523000592506,0.733138713005881,-0.194357962156036,3.27086677781579,-1.88741999272043,-0.212580576078793,-0.0874062463898277,-2.69,0.391853270233631,-2.86672566654662,-2.69,1.39778315420435,-2.69,-2.69,1.57662941886761,1.6584059021895,-0.493594105082563,2.27132485460236,-2.75191898773103,-2.69,-1.538688589545,-2.15965037855595,-2.69,-2.69,-2.32955605569763,-2.38082060421999,-3.01943734739107,-1.64715102100779,0.787096988652887,-0.579856861464822,3.04777892066784,-0.253488749286657,2.37193266189293,2.58142348080161,1.15504774567808,-0.00306901825724804,-0.147446472431244,0.536161089477392,-2.69,-1.26029021390807,-2.69,-2.7514917022942,-1.73558965139454,0.0631792505382524,0.74225287448856,-2.29933143178155,-0.509040806650962,-2.4250148151068,1.95430284233068,2.93140870834324,-0.282582846793325,-0.915374286544494,-1.26771296071795,0.517488492043529,0.604935949535616,-0.459581102944289,-0.503390051587613,-0.0123314294094195,-1.80260522866288,-0.365632989324765,-2.18499796239258,2.75851521543089,1.70643363399234,-0.599085021905802,-0.43179317435479,-2.31341522326681,-2.0214851671568,-0.640373052660372,1.75116014562861,1.00192383344361,0.340383025519869,1.72948860050207,0.243059172484554,0.987402962304097,0.0813759420958513,2.56360566034027,2.56421267335821,2.55089023235486,-2.88465492629515,-1.37839807037657,2.92725941800335,2.15972848774713,0.670061216738178,-0.190722229265386,-1.38810879925297,-0.408445446668324,0.856353525456772,-1.82445769728751,0.267751052835922,-1.38126575499379,2.70824886904133,-0.946264161768124,-1.45868210445714,0.822386642315783,-2.42698775858249,-0.360984811438406,-2.07019705744009,0.392119128504428,-2.91399328033748,-2.82683832758139,-1.72537555138266,1.79142220422609,1.11311575402875,0.176594625220291,0.144569192944016,-0.8613390240027,-2.64007376026454,-2.52242820598722,-2.68528038097246,0.000645025079062557,-1.73246322504108,-1.17374710016595,-0.586748652872279,-2.69,1.56993442538014,-0.0532187397395801,-1.06351467791642,1.49112637164977,-2.80840654486876,-2.4373528828125,-2.69,0.83075203602605,-1.10327378691256,-0.237254526842431,0.553526480131833,-0.0647306218293699,-2.93461864270969,1.81342797919642,0.163818917886745,-1.54784619228038,2.8143145212428,-2.69,-0.842720366116816,2.14890724182595,1.28603626077404,3.18843548779192,2.20627314821722,-2.03868222150526,-1.21076694321972,0.26363574211239,-1.33815904270389,-2.24054247781049,0.115424754165161,2.25421955653621,-2.10781830567838,-2.69,-2.78903375453245,-0.463853264802938,3.09869873956275,-0.360229325917333,0.833341622152914,1.34856542302,2.99077975140611,-0.0043359565576011,1.74246841441454,-2.69,-0.0105641876171702,0.646183159100325,0.416599230952794,-0.723128978563382,0.558567535747463,-0.490384546545496,1.31467133369935,2.65885663794064,-1.27899685822504,1.72294466534442,-0.186972266175458,-2.69,2.42462640960599,0.292679352151198,-0.286299198217293,-2.69,0.0399647049497941,-0.497019997599082,-2.69,-3.00916953286125,2.70093120804378,-1.67532597090522,0.365289243762128,-1.78670415179438,2.40468291540866,1.56116160010698,-2.44728622790016,-2.69,-4.04289432362605,0.383039568903043,1.04127306255528,0.723980567578297,-3.11443825395763,-1.90978795232498,-3.04263717001635,-2.77613966818039,-2.69,-2.61292752695631,2.22523857142153,-1.3434960233123,0.142242666511714,2.575498638301,2.751849753215,-0.681007483780411,-0.0208758299992019,0.334488797890891,-0.269943519317591,1.88159193009709,-2.91595095373956,-2.69,3.75083763067121,-1.42784884968481,-2.69,-2.69,-2.39670635099968,-2.31458604925518,-2.69,-2.69,-0.483732984179594,0.896832003555251,-2.51760416749796,-2.65884129148564,-0.0562449555866515,2.16563833176333,1.41255529939915,2.68764361389817,2.44484082481201,2.18979109214039,0.275251941061193,3.01867749558334,1.31898108657419,1.45877229906777,0.155930121673071,1.33211984850261,-0.620648176321828,-3.19893960527381,-2.10997206915317,-2.60259216007367,0.30345383626813,-0.322053545488859,-0.82471158435522,-0.664654779201552,-0.248631973899082,-1.75099586486104,-0.257908348378618,0.222461259973887,-2.69,0.0114104156848243,-3.05321224980429,-0.0917053540203378,-2.69,-3.0323979905698,-2.69,-1.48713207576015,-2.69,-1.42427954738504,-2.3393155535734,-1.2578243551207,-2.69,2.51914374112713,-2.69,2.22004453009831,1.48296681094149,2.31255540247996,-0.274552211101978,-0.816558789037631,-0.721045653799544,-1.54604114819629,-2.69,-2.60518989678298,-2.69,-0.87384613912574,-2.69,-3.36748764207416,2.76690857618152,-1.14418350540507,-0.722605734128775,-2.69,-2.69,-0.832136037678719,-2.69,0.0290589003542299,2.26559786106078,1.7544717650415,1.12903159161194,2.8611887671313,2.57656229688959,-2.69,0.718678695181506,-2.69,0.150068668521115,0.0566567142699227,-2.69,-0.369620916736224,-2.42306548634908,-2.69,-2.69,-2.88495224586637,-2.69,-0.669341724769717,-2.69,-2.74014570129263,-1.00540156243051,-2.69,-2.69,-3.67166504988554,-2.18970758766642,-2.41498914660163,-0.125690398083058,-0.172998822556563,-2.66117161884477,1.36843342249749,0.992013005367579,0.965837486787994,0.774446469815539,-1.10212751566563,-2.1741450865758,-1.99378570305978,-1.637287678595,-2.80539142790192,-2.04876101414521,-2.6558392658659,-2.69,-1.59543700232022,4.31006024742185,-2.69,2.82044934760071,-0.236992373196134,1.18291941599362,0.69532205943294,2.36398060125865,2.11999237140221,2.96792691425088,2.90562634831437,1.44965979584523,2.16931388264174,0.15261166294069,0.780791202363126,0.442923781813197,-0.984413065617137,0.373170245298115,0.0114029425713104,-0.289105207983189,-1.86486519873843,-0.568447267677711,-1.57178107965782,-1.97040265895959,-2.22450666416523,-2.60328946333662,-2.27436661442437,-2.69,-2.69385672944798,0.947901121597782,-1.93018226863677,0.3393855651522,-2.97131983105944,-0.226162274705363,0.185900896898388,2.85433367712262,-1.29524408688688,-0.13595678643929,-1.48596760985155,-0.0825442520596791,1.75690818370003,0.699710141935621,0.445028604101506,-0.881600142820575,0.300020273720274,-3.08095952392368,-1.42739324443896,1.3221174904102,2.93214349260119,0.497243628055863,-0.172857686291238,-0.132144395111,-2.78430464817026,-2.75263553928015,-0.0995611563637577,2.02349244632068,2.06577683624013,1.75624344622792,2.93412551247142,2.10581722135371,-0.35608941057571,0.555600869712134,-0.0751498968101719,-0.0347023180361651,2.57706865399075,-0.323233830484939,-0.480129000681627,-0.589994297121058,-0.916653127808847,0.804058408673581,-2.69,1.89314953286804,-2.69,-2.66548146818554,-0.467584475169732,-0.79099291494399,0.204603127376066,-2.69,1.62310234389589,0.562859984368634,-1.76223489873662,-2.08370167809354,-3.22832985208142,-2.69,0.108221774833704,-2.69,-2.69,0.0659075498653792,-3.09999371152233,-0.300139190663685,-2.69,-3.37325587074505,-0.803082977841645,1.00171981205223,-3.79000270332979,-2.69,2.79882470063562,-2.35310373971843,-0.761215428060479,-1.45064345417564,-0.222132509076407,-2.80194459694389,0.640860972797742,3.15086902055553,2.70870307626251,0.25089323968853,2.60936589445523,2.59425761098159,1.75758179558466,0.0285186494377869,-0.661197178093097,-2.69,0.354322395327787,2.58576919264438,-2.69,2.77177294107536,2.27605507874022,2.82323331417408,1.35828681621216,2.87357114201125,-2.81251141233907,0.985069363422134,2.5241153797963,0.972716786593307,-0.994849927810139,-1.48602590257387,-0.045884545711011,-1.43376243078877,-1.68189026949847,-1.57598105358861,-1.51659619597657,0.637528874243332,-3.2235386043196,-1.0108949974325,1.29887892407392,-0.794625262589592,0.259235967349841,2.0573239344505,-1.41468360297308,-2.1865178545343,0.134927852963682,0.399299551904551,-0.330547781699013,-1.28813330617211,-0.671564046802391,3.07189999225304,0.421909899055839,2.76069923439743,2.97587112423812,0.489184245773062,1.47677321556116,0.0252501685710816,0.182730468958205,0.117182586235272,-0.573905311623879,0.655196712495327,-2.69,3.66040926298206,-0.240671090822517,-3.22755845694974,-2.69,-2.69,-1.97863072979708,0.041911652469763,0.367046622095918,-2.69,1.47229035111694,1.459947807045,0.292282032398448,-2.69,-0.272519860272486,-3.39919845476207,-2.69,2.96657761165731,0.346712036902736,-0.112541670959793,-1.64420815934591,-2.41379404303692,-2.76193473564628,-2.69,-2.69,-3.36314737144742,-2.79338721953043,1.97683884175004,-0.118896752589328,-0.337254736681992,0.425957019473267,-2.69,0.0174114229074597,1.92993717564998,-0.0831425665430168,-0.078365762043462,0.675227672534473,-2.69,2.50881565438168,-2.69,-2.10355397013781,-2.69,-0.0858431304858936,-2.69,-0.584596699978432,-1.19162916513804,-0.413767053150976,-2.37470277056847,-2.69,-1.38360656755346,3.34280069579631,-2.69,-2.72716002362835,-2.69,-3.23740982976841,-2.69,-5.09522881734536,-0.379503745625299,-2.69,-2.69,1.87045210219028,0.702023515022189,-2.58562563188282,-1.64792587497079,-1.44065791852051,-2.69,-3.2482833312237,-2.69,1.1800627436422,0.0622083854381947,-0.220317131452921,-0.101761700578841,-2.69,-0.423634945048078,-0.373972783138827,2.17688268103497,2.19800262857627,-0.107455865689287,-2.15683520519085,0.90367104128885,-2.69,-2.69,-2.69,-2.69,-2.69,-3.11597876341645,-2.69,-2.69,-2.69,-2.69,-0.0812274638535235,-0.0454393466820119,0.319000902215298,-0.042904380587209,-2.69,-2.69,1.09841187395702,-0.895111379761534,-0.053029231769887,-2.69,-0.0365004515347267,-0.479471105344707,-2.69,-2.07370869843784,-2.69,-1.14187191137989,-2.69,0.239904844770911,-0.729802829600129,-0.714892841933152,-2.69,-0.457907163111516,-0.0900845031241963,0.306642614639611,-0.166870385590442,0.450512446212017,-2.69,-2.62309365009472,0.768042612658877,-2.58819531613765,-2.85910149842891,2.579326198805,-0.91287012281801,-1.42525966668897,-1.56631498021511,2.35429165874862,-3.16901874638376,0.0196029614677869,-2.80693814363994,-2.66147630591102,-0.505570742353085,-0.202775963640252,1.90190045361132,3.03686585724974,2.27518385278032,-2.88457672876762,-2.47034952260951,-1.43227148408759,-2.69,-0.276420968245475,2.10930887473506,-1.1911203224636,-2.54306955611415,-3.00323860529105,-2.69,-0.416319184712056,-0.695629715817514,0.460011209320178,2.86810827357519,2.18221900101522,1.81792747410682,1.23281648803419,2.87772565677194,2.60687716887308,-2.69,0.828113963375144,2.4218560664148,-0.296701650297135,-2.45832545305199,0.195774948954385,-2.29498154990859,-2.88159394477802,-2.69,-3.01189206049673,-0.514558337368582,-2.25266553228962,-2.69,-0.313752262687883,0.0955133675552156,-0.380945903357103,0.0174002986978318,-0.85175179427076,-2.69,1.14392667403863,0.22601957405623,-0.0684606746055555,1.24594247500745,-1.50167721122012,0.558676444895161,3.01443253567874,1.66063847739634,2.21649638194983,1.53408724455665,-2.69758253307571,-1.40302983864196,-1.46097743859906,-0.27278827039958,-0.105439794742435,2.3255741961822,0.0193343356142466,0.35516627737969,0.48084216413559,0.49363677547078,0.588215681686515,0.944247128574401,1.06279166063567,0.160090723720709,2.49525700550611,2.52738069029546,2.18022240569861,0.180380055581923,2.87091654546316,-2.02587312126768,2.78982957233185,-1.5253257993245,-0.278037423453072,1.66293903473194,-1.69964315458484,2.42671204665527,0.7262163537462,-1.57549791922109,1.99627910173382,-0.051421119099513,-0.353327814364401,-1.56621855833179,0.908050506594174,0.195625408967873,-2.69,0.0582186770756299,-2.91778960035456,-2.55859556554649,0.323202283992897,-2.34124790028334,-0.259400441485431,-0.997447463831884,-1.53695924186637,1.95111189125126,-2.33006453868743,-2.32619866877789,0.8278247853666,-2.6844289586772,0.0601407938581706,-2.69,-2.31134325447153,-2.56956339341749,0.323102276239775,0.3092732259402,-0.806787993281556,-2.43146598015783,0.261583609424684,-1.12816948997546,-0.764371148004096,-0.999682302946137,-0.853603828997908,-1.66896935502357,-2.08775353545395,-0.398624047398419,-2.15033350192346,0.0606696429344235,-0.851188186801614,0.48421360436814,1.98661767888105,2.15651534505087,1.77356003175042,-3.08243939307367,-1.27625513720415,-2.11237524823989,-2.69,-2.13548206363982,-2.23757053598656,-2.3426088838419,-2.69,-1.25404759194094,0.711657592623459,-2.69,1.98425180868379,0.233769383230345,-2.78889239190453,0.859255648771463,-1.59849860942668,-0.448815771626264,-1.07619068676303,-0.0492376021382725,-2.69,-0.78321521626002,-2.69,-2.46638293419215,1.67956886138197,-1.03428343286908,-0.674447250171026,-0.0850880623671634,-2.69,3.07097829020618,0.165250325484312,-0.0341084378448885,-0.0858021683884771,-2.21391804868143,-2.71411822904339,-2.56900958943298,1.44661570700478,-1.56344767409928,0.737965828797639,-0.193787183449896,3.28896280811557,-1.90975183381105,-0.21658809992604,-0.0893349202469164,-2.69,0.402646481872206,-2.87830091560757,-2.69,1.35682352766786,-2.69,-2.69,1.58424148976189,1.65984654053535,-0.488386153304152,2.25831912846886,-2.7824066217848,-2.69,-1.55765706453236,-2.16405323260656,-2.69,-2.69,-2.36898868927145,-2.39108714475411,-3.03664548915953,-1.65178909062002,0.789808158866426,-0.582868108805422,3.05862159629815,-0.254722920429009,2.37851357878811,2.59532214160159,1.15970319704827,-0.00278245078609716,-0.148070030517993,0.538586270194259,-2.69,-1.30255885865615,-2.69,-2.78282718887196,-1.77072230941104,0.0572485674136299,0.74631941746209,-2.31150840476267,-0.512344703106792,-2.43218612261814,1.96506255796726,2.94498835155231,-0.283026518072936,-0.917458970734462,-1.272000781107,0.518058425386343,0.607293173366807,-0.461592674101296,-0.505506545045392,-0.012347221251886,-1.81076523204931,-0.367441306619338,-2.19846197465123,2.76942916032769,1.71162265323812,-0.601181736634163,-0.433510004274503,-2.32373828776246,-2.03167224240465,-0.645317383511753,1.75880252156318,1.01152704717705,0.341515493073358,1.74117931403466,0.244389688758913,0.991185004264053,0.0815305208487506,2.57714944338504,2.57226075120314,2.5602205559976,-2.89438031988003,-1.38661432530514,2.93655704276272,2.17152211256027,0.670838296659366,-0.191832327729634,-1.3931532358103,-0.410242372788574,0.86112189091448,-1.83146418358394,0.267529799496522,-1.39012546177259,2.72297744968911,-0.949656340194507,-1.46414195802079,0.828948659650135,-2.43451898014809,-0.362349676272403,-2.08066668486175,0.393268189861231,-2.92846838265505,-2.83616661473369,-1.73259324022067,1.79725001419794,1.11837085842651,0.176730965880016,0.14573871144713,-0.869055727447403,-2.64948280365625,-2.53361628726108,-2.69713089371511,0.00089958690456395,-1.74272243133373,-1.17728367939638,-0.59167697320569,-2.69,1.5788924720708,-0.0535674593583655,-1.06405325630115,1.49882925927982,-2.81835178107566,-2.44680347791911,-2.69,0.834030562131558,-1.1074575711239,-0.238266383775279,0.555395447748507,-0.0650044407241763,-2.94569306090368,1.81902112875419,0.163102532378838,-1.55435778387557,2.82444107159416,-2.69,-0.848961257462973,2.15750224570093,1.29492780939712,3.20488634257941,2.21575194242136,-2.04330292041845,-1.21466323092347,0.263685719765875,-1.34201268416176,-2.2502078946949,0.115064598253992,2.26243854515638,-2.11737148799312,-2.69,-2.79919101399323,-0.465296062699173,3.11093110390063,-0.362043352981324,0.838185949287458,1.36417419905258,3.00352585090088,-0.00208025336373135,1.75189860040929,-2.69,-0.0107565604258863,0.649052714815015,0.418592556371404,-0.726730418716936,0.560840268744874,-0.494647115236323,1.32363032250548,2.66398786671435,-1.28921228364118,1.7280525972913,-0.187477765508059,-2.69,2.43152903356042,0.29060704567075,-0.285573520299682,-2.69,0.036681701361628,-0.500952717246236,-2.69,-3.02817752145159,2.71317215273517,-1.68127085695215,0.366495704068519,-1.79414923097896,2.423853449191,1.56434605508206,-2.45629718359369,-2.69,-4.04522191745109,0.386202271532608,1.04557296677372,0.728569563097274,-3.13231700880302,-1.92289540674641,-3.0504367881117,-2.78858197640231,-2.69,-2.61881566123744,2.18291817679344,-1.33096543119179,0.119952989789979,2.58157317811574,2.77471615444893,-0.724107429786194,-0.0210884430055622,0.335523732372291,-0.270738247555497,1.88670262068319,-2.92884712900008,-2.69,3.79384353118311,-1.4349112027411,-2.69,-2.69,-2.41044325786766,-2.34997806399069,-2.69,-2.69,-0.513480150738251,0.897439710858449,-2.53011428330575,-2.66556789494042,-0.0571439352911773,2.17729707967475,1.42062265019653,2.69808561464505,2.45172042076049,2.19848687083555,0.275375732317045,3.0296154880806,1.32462349771796,1.46473655822606,0.156931649845851,1.33546005528846,-0.622540213598273,-3.21737294983134,-2.11613158550828,-2.60986612859908,0.26813433177577,-0.32643973748537,-0.826491834810278,-0.664315371689243,-0.26436167656916,-1.75454808189999,-0.251002353788922,0.227687039823667,-2.69,-0.00611413805820679,-3.06552559645103,-0.105945654625684,-2.69,-3.00017697222446,-2.69,-1.47236046356583,-2.69,-1.38878510693702,-2.31697709671185,-1.26508336920495,-2.69,2.53803958856208,-2.69,2.2282627935983,1.45539466077851,2.31878695635548,-0.277814750737326,-0.78080484599444,-0.710831221703163,-1.50972742108359,-2.69,-2.54928468953752,-2.69,-0.838176289612651,-2.69,-3.36019295630905,2.78117590418932,-1.14494500118836,-0.75752172268222,-2.69,-2.69,-0.851288746555292,-2.69,0.0294536006980831,2.28284530805917,1.76403138331073,1.13771245431625,2.86856569723404,2.58356365608553,-2.69,0.727573868716956,-2.69,0.161621797392585,0.0487965287791701,-2.69,-0.410679195338678,-2.42778396037342,-2.69,-2.69,-2.85487712604194,-2.69,-0.631790564059204,-2.69,-2.71096539202567,-0.95421585269474,-2.69,-2.69,-3.63419489109484,-2.21841434648545,-2.42461023380373,-0.126602793476044,-0.174144731199295,-2.67281512455475,1.37471054375777,0.989531243929959,0.970985692276078,0.779606529863484,-1.1070890251881,-2.18227171602994,-2.00044426691918,-1.64529811250888,-2.81253923614919,-2.05461871197919,-2.66876971694495,-2.69,-1.60075514974724,4.32255891142534,-2.69,2.83105961557237,-0.235054683523377,1.18606364456105,0.69928198256774,2.37608913232382,2.13073711044142,2.97698522562664,2.91482720072072,1.45418876299371,2.17765627425809,0.153301315789195,0.783383987617365,0.446148284475208,-0.990596666179284,0.375463819664883,0.0116455837332119,-0.290066408339549,-1.87106827624953,-0.571391630542564,-1.57680233142667,-1.97985410873694,-2.22945759963296,-2.60906065905492,-2.28402447636721,-2.69,-2.70974935689764,0.950265994258324,-1.93864108179896,0.344631689666338,-2.9841292637419,-0.228859309341171,0.187404356397959,2.86608013224133,-1.2989245987655,-0.140173290188423,-1.49176612210731,-0.0828616973446838,1.76455549510513,0.701567794406201,0.444841678673212,-0.865684991608329,0.301515479401871,-3.10140286284098,-1.43361237781217,1.32780192364361,2.94389035653589,0.496574785759639,-0.171946431977638,-0.134276140919327,-2.79210311867069,-2.76698937287656,-0.100911570741512,2.03168468784072,2.08062994433005,1.76673426478092,2.94391850757165,2.11320569035132,-0.35902340545733,0.55751791045652,-0.0751443255068842,-0.0333622514017137,2.592304498621,-0.326313783917325,-0.483570797664178,-0.592415436297058,-0.922705992786107,0.806996503492934,-2.69,1.90095862088765,-2.69,-2.67403181906101,-0.469524902186541,-0.794207003230653,0.205553032391246,-2.69,1.64311067023137,0.561118638612956,-1.77037511778543,-2.10457279341528,-3.24341467795597,-2.69,0.106018814286363,-2.69,-2.69,0.0673399574226829,-3.09366546273482,-0.312728622353208,-2.69,-3.34653193398394,-0.822971710246923,1.00681512319153,-3.73243618529176,-2.69,2.81365332264986,-2.36183757530878,-0.763805175977792,-1.45475717373144,-0.225397229152997,-2.80575363499621,0.645032591948925,3.15850565554944,2.72024350210303,0.252214330671217,2.61876976882845,2.60455946560594,1.76410694317033,0.018671305579689,-0.663336679263138,-2.69,0.354765280811578,2.59251404100759,-2.69,2.7832484391194,2.28566149941597,2.83214024333166,1.36044277708303,2.89536226132519,-2.81304080479225,0.99221920176719,2.52198882960486,0.98658481970451,-1.00486338026756,-1.49242812370147,-0.0472117670456828,-1.44307442902184,-1.68716478987222,-1.53573206398116,-1.52188081319449,0.636964640636981,-3.24357680988595,-1.01889107353971,1.30628912531795,-0.79810698899964,0.259243653660234,2.07196591071112,-1.42203403323804,-2.2010224850047,0.135631178791105,0.397782566848674,-0.310541098388948,-1.29826432753491,-0.663653254344527,3.08476174803354,0.42200435319454,2.77505019644887,2.98331962917429,0.492149069542876,1.49006322457761,0.0264514147203382,0.141338602986888,0.114626713450521,-0.574573699574215,0.656282374311244,-2.69,3.66926565316072,-0.242795010422931,-3.20156347342943,-2.69,-2.69,-1.94745934518779,0.0200774556853313,0.364260917364942,-2.69,1.49422983460246,1.46069347145837,0.287930363353923,-2.69,-0.272493424076071,-3.40113491902268,-2.69,2.9920290490888,0.348014934930292,-0.112337045806103,-1.65058141064789,-2.42432997468887,-2.77133434847502,-2.69,-2.69,-3.35198171202612,-2.80756149898019,2.01582724609964,-0.112740261823495,-0.360795941221877,0.375310386028887,-2.69,0.0210970380066881,1.93706741188267,-0.0926231904772848,-0.0782474311715726,0.632628131360336,-2.69,2.49912332893815,-2.69,-2.10762057934417,-2.69,-0.0809297373664809,-2.69,-0.591174953575972,-1.18764265007556,-0.417065604981335,-2.38349230824966,-2.69,-1.33721396616201,3.3608659197737,-2.69,-2.69188825321956,-2.69,-3.21387389669854,-2.69,-5.07149157426275,-0.327612094774814,-2.69,-2.69,1.87716874114495,0.706200707181675,-2.59617228433852,-1.66332060788871,-1.46210452614336,-2.69,-3.23990361537496,-2.69,1.16979050673119,0.0681032080392399,-0.225029248248952,-0.095120036195481,-2.69,-0.446560867651209,-0.379007993373275,2.15034623195193,2.20744089300958,-0.108505901299001,-2.16513113546472,0.908057516163488,-2.69,-2.69,-2.69,-2.69,-2.69,-3.12485824504043,-2.69,-2.69,-2.69,-2.69,-0.0816189767500468,-0.0455016498211903,0.318302230760629,-0.0432121822905826,-2.69,-2.69,1.10542614789597,-0.895088910764459,-0.0501002663827012,-2.69,-0.0332966726838274,-0.474776045356524,-2.69,-2.09735729014644,-2.69,-1.14645916390487,-2.69,0.250890151241146,-0.742167919078804,-0.715425829483269,-2.69,-0.462605932009771,-0.0908388564194792,0.306801876717156,-0.171526788576781,0.450046446527607,-2.69,-2.63559161677576,0.776604932135695,-2.62107836786504,-2.87200864096518,2.58868037023676,-0.915374212584142,-1.41155985310204,-1.57253727663052,2.36011031268687,-3.18523139454114,0.0203540168962153,-2.81572526387346,-2.66985624463913,-0.507393543985719,-0.230113138787331,1.90898186972948,3.0482899750455,2.30404304637817,-2.89253539977407,-2.47727739326559,-1.44134693576161,-2.69,-0.26716083708307,2.11751114439086,-1.19986723067826,-2.55778456972157,-3.03006856527001,-2.69,-0.430171069857681,-0.706796080485947,0.462975019734103,2.8789067554212,2.18755307142516,1.82377591840071,1.23645011914364,2.88757689863457,2.61970903088385,-2.69,0.829930457516001,2.43338664578099,-0.277345054368948,-2.4606911775354,0.185259037027489,-2.30103954178809,-2.88919617154989,-2.69,-3.02700954817488,-0.51651989646058,-2.26496127395517,-2.69,-0.314742945129856,0.107321709638532,-0.393044803712922,0.017672176968492,-0.863814691794897,-2.69,1.16600919708301,0.226904722506939,-0.0683916302467347,1.24981144416608,-1.50900705424799,0.56039266798462,3.02527962568532,1.66874005983336,2.21134951448459,1.54249616993297,-2.71170045523068,-1.40703860425561,-1.46569585762164,-0.274195317932504,-0.106064769521969,2.33747981803378,0.019849928837931,0.357765068967998,0.482629771126534,0.49522984921137,0.590218612704192,0.947419421183054,1.06843472727507,0.160380974314858,2.50631532381019,2.53389047331252,2.18681790235294,0.179466215268878,2.88273551533155,-2.03899092948109,2.80222748490257,-1.53488719273419,-0.280030936123453,1.67336539362706,-1.70451683454581,2.43404874107295,0.728745827563286,-1.58005908213375,2.00962778812568,-0.0510038772179646,-0.354694370962605,-1.57277920743894,0.910675622709071,0.195943544583965,-2.69,0.0582866982332004,-2.92648017484524,-2.57004855145628,0.324063143249964,-2.34975406215025,-0.259743244362794,-1.00008540875688,-1.54200809202729,1.96046089443636,-2.34625027665381,-2.33503633255911,0.832121341614243,-2.691992064398,0.062412650966358,-2.69,-2.31795356371196,-2.57749287928652,0.325750976437185,0.31056060917359,-0.809497591619183,-2.4429109912126,0.263070929324071,-1.13312352680878,-0.765910915219351,-1.00298480969202,-0.859173513308204,-1.67553734617924,-2.09253416610852,-0.39992837804761,-2.16198511177069,0.0610317692295687,-0.853396270226788,0.488194090230427,1.99285781043517,2.16364082128122,1.78088056692356,-3.11069963283061,-1.27056484071787,-2.14263991910753,-2.69,-2.16007081781644,-2.25962496647807,-2.36974268126774,-2.69,-1.28427490524055,0.722445569805041,-2.69,1.99112924221601,0.23505020552607,-2.79532279030027,0.861818594331646,-1.60372768389637,-0.455792707379056,-1.07838193497797,-0.0491237952335954,-2.69,-0.785492875447181,-2.69,-2.48111959948375,1.70236395884949,-1.04699573791578,-0.674252886627401,-0.0965133153377433,-2.69,3.08364993706424,0.173090924566031,-0.0241945636393384,-0.082992786667005,-2.23667482273128,-2.70916688150453,-2.58169197499273,1.45040417185759,-1.57369722230095,0.742317164666495,-0.192863015088938,3.30615818125704,-1.92456287951379,-0.219978274994702,-0.0906808995224921,-2.69,0.409671949998103,-2.88897607271511,-2.69,1.3265482969402,-2.69,-2.69,1.59160424822119,1.66303287582069,-0.485429570054526,2.25253634690309,-2.80219093918784,-2.69,-1.56954531629003,-2.16748524902395,-2.69,-2.69,-2.39704715862277,-2.39980445087985,-3.05389883371025,-1.65600232216797,0.792271597921874,-0.58516212029818,3.06839999550285,-0.255647491601353,2.38525278860397,2.60849484897684,1.16323860049654,-0.00244811538713823,-0.148638626721547,0.540412948088674,-2.69,-1.32782487435525,-2.69,-2.80143968951717,-1.79513892870196,0.0545473646406486,0.751021875161133,-2.32229019593272,-0.515461558018376,-2.43905735337174,1.97539818556441,2.95892980032834,-0.283128270229876,-0.919357447544685,-1.27632194375014,0.518666888195827,0.609135012715555,-0.46345953964286,-0.507171612779149,-0.0123812922315971,-1.81761443078478,-0.369181563284727,-2.21105437707038,2.78042915961416,1.71644088780282,-0.603079522878513,-0.43494956742181,-2.3338407315376,-2.04183529383848,-0.649887765085652,1.76511727061608,1.02084812361859,0.342294804966562,1.75319346652931,0.245479947895231,0.994184506432988,0.0816055387807106,2.5900571444123,2.57956638019136,2.56872474176874,-2.90405751467751,-1.39380763592131,2.94522498347331,2.18295308514987,0.671631444676759,-0.192698491696808,-1.39751683064325,-0.411541630979587,0.864983978706433,-1.83779881807983,0.267394088894534,-1.39816627858682,2.73721107860771,-0.953322897267336,-1.46928290483341,0.834520890128112,-2.44199903886825,-0.363400700398586,-2.08999795504854,0.39416368809208,-2.94249560523167,-2.84462472900688,-1.73952036221803,1.80231959211279,1.12300198601926,0.176752684874006,0.146856787455026,-0.876193945438948,-2.65882409221173,-2.54408779743921,-2.7080733927946,0.00111009393785506,-1.75212698780982,-1.1799682927688,-0.596216635649459,-2.69,1.5867382669296,-0.0537552282025637,-1.06416774987571,1.50635477328208,-2.82726555270128,-2.45574990595702,-2.69,0.837172369425442,-1.11110673410702,-0.239200331991891,0.556593137817769,-0.065146832208811,-2.95577815860154,1.82455030058412,0.162405501387332,-1.55981067198519,2.83368294534549,-2.69,-0.854783655126772,2.16440307497782,1.30404723815236,3.22079154370165,2.2252072886574,-2.04852016595689,-1.21908039392364,0.263978595097203,-1.34575759905862,-2.25863178695815,0.114194701084433,2.26951264790545,-2.12623076049181,-2.69,-2.80835254303823,-0.466252156713365,3.12284095781617,-0.363417223985235,0.843418120317767,1.37617788254775,3.01547407267175,0.000363321527805312,1.76000073538253,-2.69,-0.0108145562047838,0.651224192842451,0.420396718176216,-0.729672520737182,0.562952031797104,-0.498544116751764,1.33158334262161,2.66900414147661,-1.29733945449877,1.73299312728087,-0.187842467426611,-2.69,2.43796431043878,0.289729404640137,-0.285161046294111,-2.69,0.0336706184704123,-0.504277865464822,-2.69,-3.04622105595123,2.72533173343637,-1.68617892157955,0.367272534712861,-1.80186771122374,2.44022318152489,1.56744062067469,-2.46212888255734,-2.69,-4.04834508678317,0.388696963270683,1.04924443032153,0.732489623894275,-3.14917215384278,-1.9334010989718,-3.05756929557112,-2.79980446316286,-2.69,-2.62529327116859,2.15246717546696,-1.32358345591699,0.103571833152766,2.58844794585953,2.79460316041104,-0.756248575871127,-0.021257565206126,0.336224905395815,-0.271176553047046,1.89065007735762,-2.93963748110327,-2.69,3.82834752015311,-1.44071106805487,-2.69,-2.69,-2.42517354533578,-2.37894930058412,-2.69,-2.69,-0.539617109256701,0.897702846155781,-2.54162659368464,-2.67243809230647,-0.0579723352731957,2.18795264296093,1.42851413252804,2.70818260690264,2.45801562623077,2.2058628944663,0.275252549647893,3.03967473211779,1.33000643466698,1.46993477266917,0.157794729389605,1.33857236507304,-0.62378280493031,-3.23652897593357,-2.12154109299468,-2.61653046258001,0.241510898309084,-0.331240617329729,-0.828077920977182,-0.664145846591005,-0.27529023694378,-1.75877276457006,-0.246782041278087,0.231300620514173,-2.69,-0.0182045510142925,-3.07898463103587,-0.116356161973653,-2.69,-2.97756778002337,-2.69,-1.46202175023676,-2.69,-1.36682579461857,-2.30174619923504,-1.27140971796575,-2.69,2.55462943070287,-2.69,2.23695087189229,1.43583539746884,2.32429825617105,-0.280426005065606,-0.749826678832685,-0.703088172656361,-1.48152495733386,-2.69,-2.50704471761131,-2.69,-0.808612855652043,-2.69,-3.35762534453714,2.79368039598446,-1.14543066746317,-0.783448449707585,-2.69,-2.69,-0.869904129693182,-2.69,0.0286914126246875,2.30062829025132,1.77256257584653,1.14381982533976,2.87611494105513,2.59139868389284,-2.69,0.736308992897739,-2.69,0.169856150279674,0.0419568641711918,-2.69,-0.439180030635884,-2.43063127329973,-2.69,-2.69,-2.83801053802206,-2.69,-0.603547917183983,-2.69,-2.68732451585256,-0.9143187479649,-2.69,-2.69,-3.6021597239248,-2.24205975631619,-2.43404126716565,-0.127706452573463,-0.174706045198156,-2.68324924937733,1.38078449440508,0.986640735402163,0.976599224673407,0.784009334338809,-1.11218749222858,-2.18961459239019,-2.00722414804821,-1.65183660661759,-2.81900546857231,-2.0601056881838,-2.68124244747158,-2.69,-1.6044764871497,4.33355499428238,-2.69,2.84280199747839,-0.232950120694005,1.18948593610732,0.703207537471467,2.38825352743466,2.1400066910117,2.98524494501316,2.92380217143861,1.45805248027603,2.18471146110489,0.153914843180813,0.785304620542643,0.448760633033421,-0.995885834177369,0.377387747625155,0.0118924019995262,-0.290797689050872,-1.87602014325065,-0.573799168205242,-1.58122821542341,-1.9876284734836,-2.23409146839405,-2.61456920798927,-2.2933038150848,-2.69,-2.72472264848245,0.952793699579493,-1.9477316699272,0.349280299232026,-2.99559828183599,-0.231749087328444,0.188461139106473,2.87749881717694,-1.30251913644226,-0.14305266028481,-1.49687299376498,-0.0830821209191022,1.77211057607595,0.70377008758591,0.44420567325528,-0.853687452041908,0.302774745917781,-3.12086671912641,-1.43994826707941,1.33363220328886,2.95494973540341,0.495857343092745,-0.170936654320248,-0.137043653298618,-2.80005738241726,-2.78102983056598,-0.101742200440518,2.03874710371937,2.09479221192317,1.7763629007492,2.95327788683466,2.11930413922633,-0.361431186292999,0.558931958120793,-0.0750525547482477,-0.0317783613172715,2.60756198674556,-0.329229378197488,-0.486724139946375,-0.594148343160016,-0.928189988777451,0.809373997496948,-2.69,1.90837837535654,-2.69,-2.6839972488002,-0.471014607583788,-0.796755794562345,0.206175577094403,-2.69,1.6616324428112,0.560626111664282,-1.77675936084683,-2.125936408722,-3.25540818685519,-2.69,0.103667106788276,-2.69,-2.69,0.0683682138127187,-3.08717127706139,-0.322760454387759,-2.69,-3.33103480059815,-0.83755320793254,1.01116160694523,-3.68809030514351,-2.69,2.82850717678082,-2.37038274456501,-0.766272730467683,-1.45847127752013,-0.228255325499181,-2.80855745162577,0.649350634432486,3.16576591106976,2.7300010784064,0.253264418466458,2.62715887840534,2.61452126328307,1.76958016834616,0.011460764129455,-0.665373427297217,-2.69,0.35497185303877,2.59880241857131,-2.69,2.79390053977382,2.29382872886089,2.84044685670962,1.3628025669582,2.91543000515019,-2.81534748508383,0.998587141534883,2.52248329968546,0.997829648896841,-1.01451397075443,-1.49922896874883,-0.0491150979964257,-1.45128803587892,-1.69208338449435,-1.50955566723534,-1.52564956599776,0.637338517900404,-3.26354749372899,-1.02662379716208,1.3130843218484,-0.801976990394454,0.259253773306715,2.08591377834123,-1.42914502522702,-2.21487315383814,0.136355897731566,0.397189545127156,-0.29697635433403,-1.30597032430838,-0.65726253000061,3.09737095041432,0.422234492478204,2.78822287307749,2.99102716280346,0.494651605430608,1.50042419274103,0.0271829933000995,0.112306799664146,0.112419996211155,-0.57471926612492,0.657544559732317,-2.69,3.67960843742425,-0.244762611265216,-3.1867358720088,-2.69,-2.69,-1.92564924789036,0.00205718505842944,0.363155124279291,-2.69,1.51197933446092,1.46248696069027,0.284806994615712,-2.69,-0.271762584247032,-3.40384555491915,-2.69,3.01461888338335,0.349248221007184,-0.112203328548724,-1.65665280180798,-2.43305376414851,-2.77983807807492,-2.69,-2.69,-3.34688851752675,-2.8197865211624,2.04648312425726,-0.108781304232103,-0.379605150165755,0.338056465686816,-2.69,0.0238903314912657,1.94382823853587,-0.0994620663488007,-0.0780712540633942,0.600182678936147,-2.69,2.49615263309874,-2.69,-2.1105007057586,-2.69,-0.0767177008291434,-2.69,-0.596449619619443,-1.18613836827644,-0.420177078412429,-2.39262882931774,-2.69,-1.3021717322073,3.37734028476366,-2.69,-2.66590604327639,-2.69,-3.19099490504085,-2.69,-5.05772754740733,-0.288954303740503,-2.69,-2.69,1.88266557009086,0.709740630245737,-2.60598935802584,-1.6787848678299,-1.47860870114188,-2.69,-3.23432815384491,-2.69,1.16499244354922,0.0726186921741858,-0.228143190551815,-0.0909153188391748,-2.69,-0.464888907651563,-0.38378758265349,2.13134064574303,2.21563040390733,-0.109612876400087,-2.17320216129238,0.912222345709054,-2.69,-2.69,-2.69,-2.69,-2.69,-3.13294749340653,-2.69,-2.69,-2.69,-2.69,-0.0819605259015504,-0.0454868240719268,0.317658676200593,-0.0435708798479931,-2.69,-2.69,1.11077512228149,-0.894688356190426,-0.0478178651390607,-2.69,-0.0326406057727082,-0.473273915278468,-2.69,-2.10786411333,-2.69,-1.15196507414163,-2.69,0.255386453030502,-0.742982724627182,-0.715862446541447,-2.69,-0.465337678311724,-0.0914049427976052,0.307066671236648,-0.174292897440924,0.451226448043008,-2.69,-2.63388373504717,0.779991154835866,-2.64319875307957,-2.88482820046711,2.59728792560956,-0.917934462951865,-1.40595604943603,-1.57858496587311,2.36552827790947,-3.19942286807802,0.0202915654081855,-2.82380608205927,-2.67802958224515,-0.508792179723786,-0.254728442402009,1.91565668154083,3.05885299747275,2.32183986546244,-2.90035163694086,-2.48328795870681,-1.44969866463267,-2.69,-0.261509522748859,2.12492132055991,-1.20619429769407,-2.57177060812673,-3.04578236338578,-2.69,-0.438900025335558,-0.71418985155263,0.464894060865315,2.89103874425406,2.19424221255785,1.82945731821096,1.23967080897591,2.89613367903948,2.6324824118988,-2.69,0.831034746376505,2.44467462925389,-0.266892470707775,-2.46579493332248,0.178456593994136,-2.30701885340911,-2.89694441534039,-2.69,-3.04129536513966,-0.51841876199371,-2.27561127798018,-2.69,-0.315469979759626,0.111318391481548,-0.394221390934974,0.0178338016719359,-0.87179624641946,-2.69,1.17817931182689,0.226776276494156,-0.0682130395430248,1.25311907101305,-1.51502799791774,0.561503122851401,3.03602924413625,1.67693716814963,2.20885132251969,1.55025933171885,-2.72620593905265,-1.41004552371536,-1.46916352752749,-0.275421832566615,-0.106389770493175,2.34875654949637,0.0203573415404028,0.360142108237331,0.483906736119979,0.496375859505802,0.592036542687857,0.949432383089183,1.07333491594687,0.160560982847289,2.51652598421826,2.54002046572852,2.19291416098752,0.17831068789252,2.89336520567465,-2.05156230990223,2.81417048086325,-1.54484309740295,-0.281915819917139,1.68344348262677,-1.7081405244164,2.44102217183054,0.731685091399027,-1.58463434018935,2.0229689619414,-0.0508529471843895,-0.356155028959569,-1.57936881862577,0.913250986426945,0.196366739465976,-2.69,0.0583536499873271,-2.93416670573529,-2.58123305362844,0.324544753549654,-2.35861572071318,-0.260110721967892,-1.00252726008445,-1.5457117618331,1.96981094983679,-2.3619552297188,-2.34302600021616,0.835778274565155,-2.69946756359889,0.0653282057282109,-2.69,-2.32567832591679,-2.58483477753683,0.327667302360298,0.311634006469271,-0.811631477975586,-2.45411853779441,0.264205949211813,-1.13724762343202,-0.766793030344491,-1.00561989810309,-0.864361643113804,-1.6810370027629,-2.09708732410532,-0.40077025522784,-2.1733328270496,0.0612936519195332,-0.855426078283783,0.491633261870847,1.99803115107324,2.16976019100583,1.78855823938004,-3.13093849807104,-1.2696551936363,-2.1663350732671,-2.69,-2.17591542468224,-2.27145241536172,-2.37685120217667,-2.69,-1.29867946560401,0.728758952459994,-2.69,1.99875175823716,0.236037739258432,-2.80119481441348,0.864470780419038,-1.6083650828916,-0.459780417405414,-1.0802480967893,-0.0487335946734476,-2.69,-0.788451051229516,-2.69,-2.49461518461941,1.7174506506657,-1.05775366678562,-0.675942603653405,-0.098955306420678,-2.69,3.09726033016456,0.175890422605593,-0.0204271053312733,-0.0817069712418826,-2.24735105140046,-2.70796778939979,-2.59422804298136,1.45382654912878,-1.58310539976052,0.746229774598152,-0.191586343570695,3.32257421590958,-1.93262717807173,-0.222745610638048,-0.0914596341009185,-2.69,0.413222305619956,-2.89907422055747,-2.69,1.30828009942472,-2.69,-2.69,1.59865875014258,1.66811251758546,-0.48498371267441,2.2552630054159,-2.81304140075166,-2.69,-1.57545656090892,-2.16923834974069,-2.69,-2.69,-2.41571794514096,-2.40711330585416,-3.07126486843579,-1.65992043918824,0.794543107594152,-0.586733242276359,3.07718471169069,-0.256249760070299,2.39243828344659,2.62121614166618,1.16569476998146,-0.00208133143555742,-0.149190482739358,0.541694596947273,-2.69,-1.33500659865251,-2.69,-2.80817583900213,-1.80927316564231,0.0551400040712867,0.75651769269885,-2.33202023196297,-0.518585790340406,-2.44588783865773,1.98542003284419,2.97329979286582,-0.282945171249278,-0.921067374602683,-1.28068731945343,0.519349845409887,0.610482799321162,-0.4652116837467,-0.508377603954964,-0.0124469651054071,-1.82320234528123,-0.370908072027105,-2.22294041018125,2.79155986193997,1.72106654983241,-0.604854545214769,-0.436151501210104,-2.34377216102999,-2.05209963334737,-0.654150873643633,1.77011946747201,1.03000671405793,0.342790399385599,1.7655247726613,0.246332944287648,0.996461472288297,0.0815931790840368,2.60248469554077,2.58619027016993,2.57651364400561,-2.91369208323797,-1.40018122724706,2.95355761898488,2.19408987990346,0.672482705578991,-0.193379880245987,-1.40129707993544,-0.41237397588991,0.868030164340057,-1.8436111287935,0.267335535946188,-1.40541331839534,2.75101387549577,-0.957266179417014,-1.47413874653838,0.839197937833912,-2.44975951708857,-0.364134096434169,-2.09820217780408,0.394801951059089,-2.95613425380703,-2.85232782218562,-1.74622099646454,1.80686071456893,1.12701291853625,0.176716330333108,0.147936847975568,-0.882830149743928,-2.66809814579384,-2.55385610100441,-2.7183811757775,0.00126659067264624,-1.76093610126099,-1.18188394850745,-0.600398122791406,-2.69,1.59367512704006,-0.0538271015088022,-1.06393390193986,1.51373654355672,-2.83534862554047,-2.46435816942288,-2.69,0.840250305069524,-1.11434431605892,-0.240071136135112,0.557178889329046,-0.0651516542734209,-2.96503712724759,1.83003720590784,0.161731230974861,-1.56424007344765,2.84211786067786,-2.69,-0.86030783649043,2.16991797226692,1.31353708077062,3.23614553357391,2.23477341354434,-2.05437043854109,-1.22410529132828,0.264542979253742,-1.34939383696886,-2.26598262071307,0.112855902765818,2.27550386475091,-2.13457246703508,-2.69,-2.8167424270993,-0.466764560258568,3.13446137197372,-0.364395953870792,0.849125120401148,1.38466701484412,3.02693826560847,0.00304282087305474,1.76685736543667,-2.69,-0.0107760839360457,0.652807856230809,0.422054453384012,-0.732005764969701,0.564928506899142,-0.502116195522155,1.33860683611333,2.6742088553976,-1.30312839717235,1.73776066626958,-0.188081469050656,-2.69,2.44406706021809,0.289959435459037,-0.284850103867688,-2.69,0.0306765773755292,-0.507325772108091,-2.69,-3.06294213119493,2.73760422987607,-1.6901150849506,0.367628579884776,-1.80996129874951,2.4533810194747,1.57056794632165,-2.46558336228752,-2.69,-4.05274840773165,0.390559220587043,1.05232706345017,0.735825025710534,-3.16514578275476,-1.94135820799003,-3.06424377683103,-2.810255876935,-2.69,-2.63244810584454,2.13454990960152,-1.3215265913941,0.0931994979099094,2.59623739530453,2.81160806050099,-0.777351547595803,-0.0213816706311661,0.336608792741923,-0.271232194905149,1.89348661825119,-2.94830285786733,-2.69,3.85255152709124,-1.44484146175043,-2.69,-2.69,-2.44155841526057,-2.40158935542376,-2.69,-2.69,-0.562739232454569,0.897558281191272,-2.55248811993519,-2.67978173409277,-0.0587759904399385,2.19793246093976,1.43646585830852,2.71814346451484,2.46412457143681,2.21194107467996,0.274937478211534,3.04899839203747,1.33513331799377,1.4743783003604,0.158546954089338,1.34145196579426,-0.62445401854923,-3.25665482535912,-2.12628580094773,-2.62278443687382,0.223807389911227,-0.336519224269198,-0.829595437247522,-0.664052766230834,-0.282205037003906,-1.76392259630835,-0.244942217662807,0.23342686431004,-2.69,-0.0260947526826963,-3.09370628524386,-0.122583411090715,-2.69,-2.96489850659667,-2.69,-1.45517437394078,-2.69,-1.35772600938728,-2.29479121627696,-1.27683419526354,-2.69,2.56914901476793,-2.69,2.24626030295741,1.4245272121321,2.3290980802292,-0.282415185475994,-0.723454587738073,-0.697999301567096,-1.4612903889326,-2.69,-2.47887372906315,-2.69,-0.783851329090336,-2.69,-3.36051913153216,2.80432346550163,-1.14530187131181,-0.800102849355134,-2.69,-2.69,-0.888781982066387,-2.69,0.0269994304602837,2.31863871966029,1.78019157263583,1.14688520781468,2.88389197891777,2.6008561165479,-2.69,0.74442380883058,-2.69,0.174873670804004,0.0366275331492689,-2.69,-0.456062188891772,-2.43269880799374,-2.69,-2.69,-2.83097304855103,-2.69,-0.58522364690626,-2.69,-2.66926339829537,-0.885149032689359,-2.69,-2.69,-3.57680714696649,-2.25981665142801,-2.4431342395408,-0.129007482214841,-0.174708583030196,-2.69285069912674,1.38678829420007,0.984233842899313,0.98259568588105,0.787803352353112,-1.11763946212228,-2.19613023341273,-2.01406012287755,-1.65692894256131,-2.82497179270839,-2.06554887794555,-2.6935005811635,-2.69,-1.60679003864166,4.342869058613,-2.69,2.85566394650407,-0.230761829840229,1.19313317304149,0.707182914810653,2.40054993490213,2.147988994964,2.9929790770129,2.93285906329001,1.46134395789284,2.19071344783233,0.154466482746027,0.786593172211923,0.450800105258553,-1.00040998570786,0.378965333891261,0.012142775728914,-0.291322742149577,-1.87990422126895,-0.575701780143306,-1.58518057729727,-1.9937512162654,-2.23845728471835,-2.61995770385079,-2.30222370001036,-2.69,-2.73897509753298,0.955494540171509,-1.95749296188984,0.353367456787281,-3.00597180511721,-0.234921034296389,0.189014276716784,2.88866704440646,-1.3061489411146,-0.144494955881178,-1.50132295171761,-0.0832222190897301,1.77958344306025,0.706325139999091,0.443103537868043,-0.846698465037605,0.303801471015499,-3.13942825928045,-1.44639574777515,1.33966816813652,2.96535951825158,0.495113748261872,-0.169865392783661,-0.140468799868604,-2.80850516459391,-2.79485376649885,-0.10206842237311,2.04479330355655,2.10847635825221,1.78527667556556,2.96241535873155,2.1241705817532,-0.363387605404999,0.559876972191163,-0.074840590162349,-0.0298522271309616,2.62304695450572,-0.331998368531615,-0.489647634944074,-0.595269325001049,-0.933113651716545,0.811139812380915,-2.69,1.91544664884518,-2.69,-2.6951252675355,-0.472128032891429,-0.798668732982229,0.206489077548959,-2.69,1.67875868515507,0.56141099957485,-1.78179489139724,-2.14799908183213,-3.26503375231422,-2.69,0.101149328617377,-2.69,-2.69,0.0689910233764073,-3.07972796528621,-0.329887042783606,-2.69,-3.32862663274189,-0.845830968921933,1.0148083976091,-3.65896412768699,-2.69,2.84327298992461,-2.3787940940826,-0.768796826755545,-1.46191528100327,-0.230701086739937,-2.81028587657573,0.653873914465397,3.17267561097814,2.73822850086944,0.254077994529723,2.63463300676039,2.62428113961584,1.77388261579302,0.00697155585728922,-0.667395710564527,-2.69,0.354985867000194,2.60503938896764,-2.69,2.80383329993842,2.30079320144369,2.84829190709969,1.36555156945598,2.93372580781571,-2.81965716083734,1.00429826648981,2.52598923643497,1.00592062317588,-1.02384245855854,-1.50651891308461,-0.0516456769111746,-1.45854208338486,-1.69671164317795,-1.49875908282474,-1.52864152987354,0.638792977797356,-3.28365951012182,-1.0342196240563,1.31930833070638,-0.806247102613084,0.259252402840443,2.09932117632324,-1.43603814751294,-2.22817472496728,0.137092797552735,0.397618979686422,-0.289333563075464,-1.31154889319266,-0.652510923809417,3.10983486539929,0.422597316532015,2.80065193239663,2.99922653398854,0.496578281203766,1.50785014303242,0.0278295335946031,0.0939859615223973,0.110485641468268,-0.574420254097783,0.658959276235284,-2.69,3.69149090548143,-0.246607285758558,-3.18153618350569,-2.69,-2.69,-1.91252615423781,-0.0111684628272971,0.363502494760599,-2.69,1.52513519874182,1.46551854752174,0.283086553947473,-2.69,-0.270596728093798,-3.40687568022005,-2.69,3.03404856611958,0.350408252307806,-0.112077183809429,-1.66256877619253,-2.44013685521399,-2.78746444837144,-2.69,-2.69,-3.34855271716947,-2.83028157606439,2.06820158408202,-0.106964644495051,-0.393106147818964,0.316015950683281,-2.69,0.0257200308044917,1.95017496194601,-0.103815199875255,-0.0778294275085863,0.578379314764508,-2.69,2.50029240986164,-2.69,-2.11223182701711,-2.69,-0.0730327396742876,-2.69,-0.600540689295861,-1.18717502975111,-0.423273427279161,-2.40231595168383,-2.69,-1.27861161611567,3.39230797224845,-2.69,-2.6485479942187,-2.69,-3.16850917369144,-2.69,-5.05589079507385,-0.264119859481148,-2.69,-2.69,1.88697989990094,0.712730396773182,-2.61548414772593,-1.69402799961659,-1.49074099184589,-2.69,-3.2319327618159,-2.69,1.16723401135523,0.0756189418156307,-0.229688066281046,-0.0888123894753868,-2.69,-0.477680270996745,-0.388600290705006,2.12008452577432,2.22298586246522,-0.110792058087049,-2.18105878137441,0.916143946419966,-2.69,-2.69,-2.69,-2.69,-2.69,-3.14032475563401,-2.69,-2.69,-2.69,-2.69,-0.0822560368039289,-0.0453840926419136,0.317062048855361,-0.0439812355326753,-2.69,-2.69,1.11459701106218,-0.893826596095197,-0.0461176007859551,-2.69,-0.0340185699278505,-0.474480024144334,-2.69,-2.1062493305367,-2.69,-1.15849603740755,-2.69,0.253591763449728,-0.732188220000749,-0.716112067126484,-2.69,-0.466518301402543,-0.0918348230664331,0.307471899270274,-0.175594607259336,0.453853738647467,-2.69,-2.61751083915405,0.777965924704816,-2.65518982285687,-2.8975966054372,2.60535498896838,-0.9205450283984,-1.40767586641568,-1.58455470976466,2.37078401477628,-3.21159573563322,0.0195706303387663,-2.83122915903892,-2.68611634969069,-0.509800861001334,-0.275990294953304,1.9218939328261,3.06868888906016,2.32858881005009,-2.90817044243295,-2.48847683112308,-1.4574943373219,-2.69,-0.259495174435199,2.13162317647362,-1.21013307229357,-2.58511546104439,-3.05475422362266,-2.69,-0.443035989000193,-0.717497225556798,0.46577702538097,2.90449673822588,2.20233125375878,1.83503553342056,1.24250693050136,2.90355756415882,2.6453529192694,-2.69,0.831460009058539,2.45565863887612,-0.265402599153065,-2.47304244183631,0.175308836574237,-2.31315531994353,-2.90499793259471,-2.69,-3.05463790790794,-0.520333863274672,-2.28516627291712,-2.69,-0.3159467015535,0.108481582561337,-0.383599185512393,0.0178899045603361,-0.876137873885214,-2.69,1.18074740144041,0.225671664154243,-0.0679442717689276,1.25588941892719,-1.51979908718032,0.562057807779857,3.04674871838694,1.68538175039699,2.20911803380573,1.55743856122892,-2.74116271925398,-1.41202082487627,-1.47138569567633,-0.276485125391025,-0.106414882835354,2.35960774198408,0.0208409929673455,0.362333733557612,0.48467326942353,0.497091241566353,0.593699885299399,0.950324344466083,1.07750327555769,0.160640865276408,2.52599425478188,2.54588386048761,2.19865213232538,0.176903084066017,2.90286037467341,-2.06374110293685,2.82566795808221,-1.55540949333739,-0.283739457746222,1.69330675053973,-1.71050428695408,2.44763258617666,0.735134228654959,-1.58925342772463,2.03647258746931,-0.0509505498118443,-0.357698271948588,-1.58602240864396,0.915829385154807,0.196886587409135,-2.69,0.058420682689213,-2.94096974905155,-2.59216442997449,0.324655530297993,-2.36806033119152,-0.260494675813318,-1.00477764181359,-1.5481316087586,1.9791650937294,-2.37728947868555,-2.35031971881346,0.838829248495249,-2.7070502209668,0.0689884845330712,-2.69,-2.33455582589452,-2.59170131755268,0.32893713961907,0.31262725707628,-0.813263930542819,-2.46544114486489,0.264950963196663,-1.14057823744594,-0.76695767322584,-1.00761009335557,-0.869272448880254,-1.68548724528124,-2.10163659080111,-0.401165873980753,-2.18443721441081,0.061449571188195,-0.857289535622402,0.494264463469718,2.00220776377716,2.17487605373882,1.79668923607869,-3.1440806180585,-1.27285052451642,-2.18475307382839,-2.69,-2.18415837763791,-2.27416160312944,-2.36720066460299,-2.69,-1.29681059996811,0.731419361083306,-2.69,2.00717721977882,0.236723448116417,-2.80675322969524,0.867220647482623,-1.61251660958053,-0.461165445692279,-1.0817419784967,-0.0480146206115872,-2.69,-0.792104572531176,-2.69,-2.5069039795395,1.72496980428451,-1.066586191239,-0.679587098724367,-0.0923907171138103,-2.69,3.11196282211511,0.173786911051028,-0.0215209119927134,-0.0817809431862328,-2.24716620987253,-2.71053653768671,-2.6067445865627,1.45688751931624,-1.59169613892205,0.749730667216869,-0.189960370630188,3.3382732923734,-1.93446156422333,-0.224892258707827,-0.0917873144906249,-2.69,0.4137417220001,-2.90879591197262,-2.69,1.30242517145001,-2.69,-2.69,1.6053482158894,1.67501594256801,-0.487129782647732,2.26724290469988,-2.81630052468257,-2.69,-1.57591243139828,-2.16883955160724,-2.69,-2.69,-2.42638628650092,-2.41324013511064,-3.08875536994884,-1.66363123964905,0.796663836656302,-0.587566105540907,3.08500451262536,-0.256526730833611,2.40024338024591,2.63372377698137,1.16708687970523,-0.00166171643764573,-0.149744481958537,0.542472145703255,-2.69,-1.3236066400035,-2.69,-2.80366847359535,-1.81353426290938,0.0590078248057426,0.762934537686391,-2.34106062940711,-0.521895273451722,-2.45284069255775,1.99520590368601,2.98813671117113,-0.282505428053374,-0.922570672972567,-1.28510891690101,0.520138829092798,0.611350009755834,-0.466858701663951,-0.509123215256346,-0.0125564912285364,-1.82756220307666,-0.372664306659523,-2.23421816747123,2.80283982303982,1.72560901369272,-0.606586615883506,-0.437115196821465,-2.35351581880924,-2.06259258724193,-0.658155832506398,1.77380856729323,1.03908312696405,0.343050090731917,1.77817440634718,0.246955366081302,0.998057643698668,0.0814814201144086,2.61453118923934,2.59216620926337,2.58364841054041,-2.92329342943469,-1.40588121618011,2.96173764622114,2.2049739445539,0.673426200893481,-0.193932138518495,-1.40455570246034,-0.412766842147298,0.870317842154129,-1.84898461215972,0.267348651376228,-1.41187336706944,2.76442203085912,-0.961485874616217,-1.47873356815334,0.843033122756225,-2.45798669141958,-0.364540858078597,-2.10528940880856,0.395175937304626,-2.96942783303621,-2.859330479937,-1.75274169730281,1.81101248535655,1.13039612090572,0.176661426512442,0.148999534707809,-0.889013320001216,-2.67729894823617,-2.56292247116952,-2.72823846939826,0.00136169931784828,-1.76937052597152,-1.18307083096066,-0.604245904581578,-2.69,1.59998351378045,-0.0538514275214658,-1.06348057887581,1.52100155300699,-2.84270611629417,-2.4727230885907,-2.69,0.843305028934515,-1.11726665054892,-0.24088003500361,0.557189687312565,-0.0650137341053158,-2.97356734555397,1.83548989575796,0.161075923413724,-1.56766274875106,2.84979299706168,-2.69,-0.865612090297889,2.17438750994505,1.32349715355821,3.25092244178063,2.24451304641212,-2.06088043564654,-1.22980830409971,0.265407919605974,-1.35290129068797,-2.27237886396133,0.111076809195808,2.28043794883511,-2.14252915192059,-2.69,-2.82448463693142,-0.466865727067152,3.14580188609713,-0.36501663420243,0.8553604525386,1.38976592126446,3.03813245382738,0.0060103128456634,1.77250820708484,-2.69,-0.0106489851646961,0.653862896109514,0.42357714530179,-0.733766792624513,0.566776979077241,-0.505381455206522,1.34475271934228,2.679820478795,-1.30650778365573,1.74232722044606,-0.188209308211645,-2.69,2.44996099003379,0.29115519148982,-0.284507081864745,-2.69,0.027528397059943,-0.510303755701573,-2.69,-3.07812166622941,2.75011552678923,-1.69308457142434,0.367558955054081,-1.81848245067362,2.46313271918709,1.57380110397375,-2.46705651707001,-2.69,-4.05869360775186,0.391860925881032,1.05482056778938,0.738627533455036,-3.18032724898285,-1.94684256801744,-3.07058173137546,-2.82026758378717,-2.69,-2.64032111029617,2.12925119877869,-1.32472004470933,0.0885907544610794,2.60498261381519,2.82580900675888,-0.787638007111885,-0.0214521756562388,0.336684887082329,-0.27088649512541,1.89521037082791,-2.95483733206136,-2.69,3.86554070141695,-1.44707981710647,-2.69,-2.69,-2.46009050245783,-2.41822850609608,-2.69,-2.69,-0.583362587390254,0.89694789211432,-2.56309649177645,-2.68777180496805,-0.0596231515891598,2.20757461731931,1.44473763767667,2.7280988791189,2.47028562966528,2.21669570282561,0.274467640717813,3.05768549474986,1.34001711682141,1.47806144104535,0.159217739545383,1.34410360951012,-0.624592880235376,-3.27794349967453,-2.13039178473312,-2.62875119398515,0.214797111483194,-0.342318097720655,-0.831152949362632,-0.663871052693699,-0.286068604846539,-1.77014873137108,-0.245135161641634,0.234225343638594,-2.69,-0.03107856854589,-3.10971272072931,-0.124394252619294,-2.69,-2.96203935604521,-2.69,-1.45100179685568,-2.69,-1.36069620842247,-2.29671665232308,-1.28141610419027,-2.69,2.58178225685527,-2.69,2.25633079166476,1.42134372151724,2.33311000788549,-0.283817506193295,-0.701345130602846,-0.695598204723445,-1.44825007133894,-2.69,-2.46460179591188,-2.69,-0.762681477572442,-2.69,-3.36925476038991,2.81305247117166,-1.14430698852331,-0.80747792845515,-2.69,-2.69,-0.908576139431978,-2.69,0.0245716196658273,2.33669221963341,1.78699652192565,1.14662604044251,2.89193285218811,2.61244130098956,-2.69,0.751586808887412,-2.69,0.176869630256476,0.033303969217928,-2.69,-0.463223296706909,-2.43503490274099,-2.69,-2.69,-2.82968274553499,-2.69,-0.577059550046646,-2.69,-2.65607618571935,-0.865985392972492,-2.69,-2.69,-3.55868621276667,-2.27130707336199,-2.45180006194249,-0.130507537550915,-0.174168092220369,-2.70199768672858,1.39281729230153,0.98285153520778,0.988916639724279,0.791067774391768,-1.12354053533345,-2.20175849698556,-2.02090927854001,-1.6606146423639,-2.83050318705608,-2.0711599333423,-2.70571696607941,-2.69,-1.60784416924344,4.35032805769289,-2.69,2.86962960319462,-0.228555107258799,1.19695568092954,0.711265697899725,2.41304385688506,2.15478290358202,3.00037421529438,2.94221525774727,1.4640933108141,2.1958705263062,0.154969886045894,0.787272541791128,0.452290303378516,-1.00425556527288,0.380215339308583,0.0123944147510875,-0.291656585723592,-1.88285516967577,-0.577125738660411,-1.58873035751282,-1.99821879346181,-2.24259820165889,-2.62530755082467,-2.31080376477069,-2.69,-2.75263808787581,0.958377798369654,-1.96793391214682,0.356935516636287,-3.01546065834548,-0.238441856604522,0.188999687465898,2.89962849654043,-1.30988118575202,-0.144446698005165,-1.50512797403982,-0.0832826059219981,1.78698504759029,0.709241566113584,0.441518638557773,-0.845299613367549,0.304585823452539,-3.15710114064938,-1.45294400687557,1.34595922903269,2.97513953620586,0.494379002456279,-0.168751190405881,-0.144567660392282,-2.81764295162241,-2.80853414561446,-0.101910860629404,2.04989459166381,2.12182239878832,1.79357246596069,2.97146998130214,2.12781923714856,-0.364955094139053,0.560368558581426,-0.0744793866942163,-0.0275021457491551,2.63892017773118,-0.334626036459812,-0.492390754127584,-0.59581565674953,-0.937505645030539,0.812276294081159,-2.69,1.92217422552878,-2.69,-2.70725149181532,-0.472920421097676,-0.799976607674385,0.206525774605166,-2.69,1.69460012304988,0.563490332299801,-1.78573167297968,-2.17093525943921,-3.27269476836561,-2.69,0.0984741747561268,-2.69,-2.69,0.0692164384715591,-3.07063781968568,-0.333827970309436,-2.69,-3.34034577935293,-0.847198733112422,1.01779145679857,-3.64593012212317,-2.69,2.85790032647415,-2.38712623753728,-0.771498456790477,-1.46515672773489,-0.232662669975184,-2.81086548691841,0.658652929266186,3.17925720362493,2.74510054622204,0.254642542956511,2.64124159863992,2.63392623957239,1.77694616036739,0.00513253066152002,-0.669451528656072,-2.69,0.354819172967159,2.61153819355226,-2.69,2.81309857353367,2.30674052341272,2.85575168569366,1.36879980166406,2.95023282999688,-2.82602795818539,1.00943408758545,2.53269490155982,1.01056260495185,-1.03285718458228,-1.51433651048577,-0.0548393658178103,-1.46494465088837,-1.70106510253201,-1.50393711353766,-1.53138574955612,0.641368073686739,-3.30408155585211,-1.04176887425474,1.32499174567578,-0.810936471329277,0.259225720540412,2.11227879904498,-1.44271977180599,-2.24101458052077,0.137840544827254,0.399062107431036,-0.286886117598811,-1.31519269395964,-0.649379387206821,3.12234274678486,0.423062317026154,2.81286048623427,3.00808612739573,0.497894842567634,1.51234387045599,0.0286744712974664,0.0843020295127287,0.10879520412378,-0.573709523638717,0.660472774327783,-2.69,3.70490308198674,-0.248353607728573,-3.1845646701258,-2.69,-2.69,-1.90724595320141,-0.0191159633001616,0.365062262957348,-2.69,1.533510993165,1.46985818309322,0.282865969261377,-2.69,-0.269144938070394,-3.40995058470815,-2.69,3.05019658412034,0.351432086921981,-0.111887360983822,-1.66842290625018,-2.44569625476358,-2.79421271031951,-2.69,-2.69,-3.35727762478128,-2.83920749892567,2.0808179086964,-0.107160006234923,-0.401068716139057,0.31006570883558,-2.69,0.0266486702884045,1.95604889319486,-0.105884419157293,-0.0775023950009634,0.567162666613257,-2.69,2.51167240863492,-2.69,-2.1128074867659,-2.69,-0.0696944660871358,-2.69,-0.603508616820061,-1.19065295068864,-0.426556230029726,-2.41266736161011,-2.69,-1.26593184207595,3.40586732471083,-2.69,-2.63902699017714,-2.69,-3.14605014986054,-2.69,-5.06704239689261,-0.253110992014249,-2.69,-2.69,1.89012386608244,0.715231642490403,-2.6249414908444,-1.70888949556761,-1.49919394123344,-2.69,-3.23272237567813,-2.69,1.17751290951069,0.0770770374206356,-0.229723885256063,-0.0885378704541055,-2.69,-0.484579537466793,-0.393664706461502,2.11646345137136,2.22993211226268,-0.112067320206935,-2.18869086035646,0.919808695596278,-2.69],"Archive1106_field3":[0,0,0,0,-0.0297248071539994,-0.0291120771431839,-0.0291120771431841,-0.0291120771431834,-0.0291120771431839,-0.016609479729704,-0.0165148573300838,-0.0893836929877175,-0.0281946192418952,-0.0291120771431845,-0.0291120771431835,-0.0206571994395294,-0.0206673177097115,-0.0580247202210558,-0.0291120771431839,-0.0171406038793242,-0.0193995671263458,-0.0291120771431837,-0.0234237241911758,-0.0291120771431834,-0.0350703265482533,-0.0291120771431839,-0.0218020815525724,-0.0328884658636534,-0.0212082814142218,-0.0291120771431839,-0.0179991204526331,-0.0178585535476637,-0.0236156523638225,-0.017825088661166,-0.0291219785392007,-0.0291120771431838,-0.0434364620728283,-0.0666512971959913,-0.0466444139554515,-0.050485256054194,-0.0300635280268509,-0.0405115297347686,-0.0281678523478326,-0.031540472891941,-0.0278540323400913,-0.060667537031896,-0.101875635112038,-0.0293402633545778,-0.0345943031335308,-0.0192569603639739,-0.0399847873388415,-0.0526265240830765,-0.0308776735210506,-0.0749781412095515,-0.0314556066725979,-0.0268857978469776,-0.0259676332446144,-0.029112077143184,-0.06395941087508,-0.0276014679030994,-0.023170854679166,-0.0327307011297563,-0.027885232331747,-0.0291120771431837,-0.0182366511633829,-0.0202609788503531,-0.018515172765585,-0.0610764385728275,-0.028806995200431,-0.0261650871288854,-0.0336626503890484,-0.0309982917544641,-0.0317666622966463,-0.0291120771431839,-0.0219361343148605,-0.0586833748235211,-0.0844525876154723,-0.0559173679605352,-0.0858648456559348,-0.0735288878555672,-0.0294537092177311,-0.0291120771431841,-0.0440905600133395,-0.0266396448657017,-0.0298358149269338,-0.0291120771431837,-0.0188201652852454,-0.0214063764356069,-0.0451085615635201,-0.0265830321599695,-0.0219575603560139,-0.0291120771431838,-0.0367095858501336,-0.0167630713993862,-0.0181145730237297,-0.0237313807521941,-0.0254083717905138,-0.0199876885639382,-0.0320100783461452,-0.0288949011074218,-0.0784793803142732,-0.0502158253201101,-0.0461736547110341,-0.0238344838343508,-0.0230844961852858,-0.0185230701714341,-0.0173603265275546,-0.0298632472392896,-0.0170231491651283,-0.0241059925326194,-0.0192817612971964,-0.0206524442167343,-0.056597177067059,-0.0219031501089813,-0.0217795180748401,-0.0171036294452272,-0.0311915129423631,-0.0272707767542151,-0.0262723644099035,-0.0917214481896648,-0.0280350428423283,-0.0391301702127068,-0.0426664250666068,-0.0503462444595233,-0.0244724805165669,-0.0383389011283266,-0.0248401990524243,-0.0621834458591206,-0.0801983224475028,-0.0603599999601156,-0.0436230052664898,-0.0201959775735762,-0.0741849236160673,-0.0511099318849854,-0.0260271806257014,-0.028045606767936,-0.0291120771431838,-0.0165881901473894,-0.0286876871138036,-0.0472726317024935,-0.019341736477431,-0.0303778896214544,-0.070301958493308,-0.0728069549532974,-0.0247604958819505,-0.0550702892985404,-0.0370612513856825,-0.0268911442234286,-0.0236403838866543,-0.0288215575982439,-0.0363506834083828,-0.0291120771431837,-0.0363409470932351,-0.0281306159542326,-0.0188189476382811,-0.0244281750205355,-0.0199138368983658,-0.0312668397917327,-0.017966140914193,-0.0218523737908987,-0.0231461808209026,-0.022912737525749,-0.0273489628355583,-0.0249543482163606,-0.0285955926038793,-0.0183366257577008,-0.0448833910249025,-0.0188353499166478,-0.0511496751801089,-0.0231241495288487,-0.0256069919727852,-0.0271168352640951,-0.0318923799327122,-0.0431915895687817,-0.0287748908635038,-0.033907983373548,-0.0291120771431839,-0.025304186003531,-0.0211196257499043,-0.0291968205894285,-0.0291120771431838,-0.0456466779787769,-0.0193208885755449,-0.0291120771431836,-0.072194121270294,-0.0176783655592229,-0.0295209730616025,-0.0728803617751558,-0.0254688092663173,-0.0175607631958915,-0.0211167594188761,-0.0197663897056208,-0.0291120771431836,-0.0262211216632248,-0.0291120771431839,-0.0367647476109655,-0.0702527464416554,-0.0720013563200871,-0.0508712841781629,-0.0282766060442062,-0.0291120771431839,-0.0492462277980322,-0.0204263786588784,-0.0169166937704329,-0.0167625319004291,-0.0221109750473986,-0.0826374754537325,-0.0527432493959735,-0.047005920035663,-0.0271176992246636,-0.0219119527716916,-0.0262685093572757,-0.0420404985115239,-0.0211095989264145,-0.0186480405973096,-0.0267240997588159,-0.0291120771431838,-0.018771882626374,-0.0281815854737331,-0.0291120771431838,-0.0270167503370423,-0.0291120771431836,-0.0291120771431839,-0.0291123651727527,-0.0322309902086852,-0.0470691213432814,-0.0505564249330119,-0.0179124447348256,-0.0291120771431837,-0.0203956332996566,-0.0276232442103648,-0.029112077143184,-0.0291120771431837,-0.0251693188892466,-0.0294381681654693,-0.0378045064876324,-0.0290651461410053,-0.0288467183536196,-0.0198590665241293,-0.0293225193201936,-0.0206029726048899,-0.0317185192543119,-0.0344763033630959,-0.0216105222358113,-0.0170388801372151,-0.0169855400237044,-0.0195876380521509,-0.0291120771431841,-0.0344110003354857,-0.0291120771431837,-0.0425397873621321,-0.0214128407009936,-0.0809806529432194,-0.0374414738636295,-0.0301735737300751,-0.0315205286898591,-0.0316285116299545,-0.0501359076379734,-0.0552471764930073,-0.0188827087355199,-0.0483892796134409,-0.0563685548565124,-0.0906006418029994,-0.021739994357122,-0.0285745481060714,-0.0204664792958727,-0.0164750089126844,-0.024421140125895,-0.0523318722161413,-0.0346098412985586,-0.0485253194936784,-0.0282593591561296,-0.0262776009642228,-0.0197362237554986,-0.0324733844784665,-0.057712255828042,-0.0263670894251168,-0.0261601430704086,-0.0291302862907378,-0.0188536446144132,-0.0407928397494977,-0.0276036462890169,-0.0220821826169125,-0.0180129581162903,-0.0353993405252494,-0.0297817726137135,-0.0276801196537446,-0.063943185726778,-0.0256512753406951,-0.0314983791110741,-0.0467998551224918,-0.0877530895562769,-0.0181909161913983,-0.0263274958498156,-0.0182224793225651,-0.0232949924198899,-0.025096699471713,-0.08100158725233,-0.0443026039060204,-0.0466899937403984,-0.0818026163662735,-0.037953357437637,-0.021612976471483,-0.0304811981966449,-0.0215812409908052,-0.0248974675092977,-0.0214711569370123,-0.0444857918565928,-0.0286090187028916,-0.0604408609139358,-0.0269975714392122,-0.0223418069749163,-0.0179795284737899,-0.0168958484628246,-0.0282667170251724,-0.0606388020844129,-0.0395593699937812,-0.0317786939796954,-0.0176321895565301,-0.0277575417821453,-0.0232689223981719,-0.019646952861129,-0.0291120771431838,-0.030932440028388,-0.0244587924739784,-0.0779890335551818,-0.0614095534801587,-0.029932713455534,-0.0339876497221861,-0.0291120771431843,-0.0241580781405571,-0.0248434892587744,-0.0189577478759577,-0.0191378544177889,-0.0204776984043147,-0.0302771952605158,-0.0592661159043491,-0.0859474095431303,-0.0239047478674974,-0.0285077741120211,-0.0291120771431839,-0.0306569699702681,-0.0294940306094042,-0.0443372646014131,-0.042303601411577,-0.0343381355765077,-0.0720994544931588,-0.0774276457920886,-0.0832165502772163,-0.0426027338536962,-0.0262310847715323,-0.0228176242356937,-0.0267363058581846,-0.0268506652236299,-0.0291120771431839,-0.0292156142653679,-0.0197770892948658,-0.0508363019293106,-0.0186820595558768,-0.0580082616308241,-0.0251626675266194,-0.0313805598749677,-0.026421159484589,-0.0256552107618588,-0.029112077143184,-0.0173235767977183,-0.0207439316284321,-0.0191113200235349,-0.0205457420102371,-0.0280078356222248,-0.0305268517457951,-0.0284730739179577,-0.0287530669007183,-0.0229605443016922,-0.0370706364093896,-0.0190727930074587,-0.0291120771431841,-0.0291006434701398,-0.0207210430647641,-0.0195611061312961,-0.0291120771431836,-0.028314742745013,-0.0200198636159666,-0.029112077143184,-0.0381452158290066,-0.0367707399419752,-0.0258513144504837,-0.0188079269506727,-0.0403905010160773,-0.0659384990302105,-0.0272735691785505,-0.0266094942659652,-0.0291120771431837,-0.0261034390606869,-0.0160804680301852,-0.0232201780039613,-0.0226852600097932,-0.0382643279528156,-0.0256593010826281,-0.0296436064127691,-0.0313553047975157,-0.0291120771431834,-0.0547150087907146,-0.0402751806092775,-0.0321812689986444,-0.0167570148589072,-0.039341204798231,-0.036682851691519,-0.0343905318680963,-0.0178300452051889,-0.0188030760942412,-0.0180647088419542,-0.026802218226314,-0.0325351783325535,-0.0291120771431837,-0.0295075173879962,-0.0941008830467799,-0.0291120771431837,-0.0291120771431836,-0.0498013362949368,-0.0467373610683246,-0.0291120771431837,-0.0291120771431831,-0.036461972416885,-0.0888134551228596,-0.0296346013841902,-0.0296831720094252,-0.0271690320863408,-0.0314398258434891,-0.0504543139416025,-0.0322679589101224,-0.0298197598449322,-0.0258984184086614,-0.0213479274226316,-0.0290136002764022,-0.0349539451125128,-0.0236772726407723,-0.0175756683867417,-0.0539032019085574,-0.0197728344278533,-0.0409428824589658,-0.0269420754181605,-0.0302579469573418,-0.0338360139134996,-0.0610953406287105,-0.0256831884965024,-0.0189437166742793,-0.0174761221584024,-0.02645341140518,-0.0171218250779546,-0.0188263254819719,-0.0291120771431838,-0.0179394682764623,-0.0497855798642022,-0.0207101374329465,-0.0291120771431834,-0.0225972507782838,-0.0291120771431837,-0.0202802802222922,-0.0291120771431839,-0.0290199302584308,-0.0599637300271345,-0.039809464113279,-0.0291120771431836,-0.0350731070470561,-0.029112077143184,-0.0352750804779766,-0.0768605216450442,-0.0276337186420882,-0.0663261489250914,-0.0352082013704678,-0.0853367993680669,-0.026392781045245,-0.0291120771431835,-0.0230236640431272,-0.0291120771431837,-0.0413518709328655,-0.0291120771431835,-0.0560316904917646,-0.0682096898994448,-0.0853162076741248,-0.0394854938526369,-0.029112077143184,-0.029112077143184,-0.0386071847167564,-0.0291120771431842,-0.0954262815860455,-0.0380637528247091,-0.0259936124282884,-0.0839797666476576,-0.0623520819385442,-0.0308453990909077,-0.0291120771431841,-0.0262365416962091,-0.0291120771431839,-0.0166979589315363,-0.0253162403666535,-0.0291120771431833,-0.0155216628801556,-0.0246274338659319,-0.0291120771431838,-0.029112077143184,-0.0273711944883277,-0.0291120771431833,-0.02191991081554,-0.0291120771431835,-0.0242305129397484,-0.0339956906336372,-0.0291120771431842,-0.0291120771431836,-0.0489542910760206,-0.0929282646155013,-0.0674437867378189,-0.0172706180029318,-0.0187369291163945,-0.0311468659846551,-0.036373932085494,-0.025380879061268,-0.0262315623970939,-0.0224898770809218,-0.0269135021108205,-0.0266582301891475,-0.0553182313365143,-0.0247297804925132,-0.0288817147238913,-0.0292116904487218,-0.0355252265059822,-0.0291120771431837,-0.0861569646864045,-0.0273838287092845,-0.0291120771431836,-0.0474789811382147,-0.0950074472244739,-0.0480518309799538,-0.0261002805277915,-0.0377881583931852,-0.0251962876737856,-0.0291794190557598,-0.0300421948072168,-0.0258175192093225,-0.0291855791758394,-0.0185735104728403,-0.0203158698508063,-0.0246605239161777,-0.0225479721206552,-0.0191531101200113,-0.0165630449561645,-0.0183185841387094,-0.0255443153900646,-0.0191616678765472,-0.0259173546649223,-0.0260125402803958,-0.0664752283528523,-0.0287244755419068,-0.0390501279444863,-0.0291120771431838,-0.0349647533934753,-0.0713452583822823,-0.0426739599278661,-0.0252060106575449,-0.0296148056563151,-0.0382176796744771,-0.0205446118606953,-0.0509860248719222,-0.022343156428333,-0.0183296688780596,-0.0235211812878953,-0.0264955181828938,-0.0397334302221994,-0.0812413406317906,-0.0700087401821666,-0.0358803829976358,-0.0181053761355997,-0.0424354969030587,-0.0484328041899613,-0.0692582204538554,-0.0440381932871034,-0.0825115422368258,-0.049952097202634,-0.082015655233208,-0.0323149917109247,-0.0528985400480622,-0.0217144594932857,-0.0250685186913226,-0.0290190074862604,-0.0300623211519982,-0.0331035628576827,-0.0256139807725208,-0.0164888817093801,-0.0197892402988514,-0.0183968326182944,-0.0250427715027703,-0.0503078028858892,-0.0275883471984976,-0.0229082067147135,-0.0199203250109183,-0.0255023516988627,-0.032604299381216,-0.0291120771431839,-0.0265853017029691,-0.0291120771431835,-0.0397918815167489,-0.0193253437879532,-0.0208290058965768,-0.017290805075425,-0.0291120771431841,-0.0302033481367531,-0.0259227015541092,-0.025556771970763,-0.0358922328696637,-0.0291737520394627,-0.0291120771431835,-0.0235130244303323,-0.029112077143184,-0.0291120771431836,-0.0152760084156375,-0.037733592972512,-0.0202814810036447,-0.0291120771431836,-0.0385978875972988,-0.0634357014360068,-0.0216488685065271,-0.0474760791090438,-0.0291120771431836,-0.0749823358445941,-0.0763183656081025,-0.0185525049651309,-0.0252600815721347,-0.0165936470093072,-0.08066384009202,-0.034626685940721,-0.0752929568238615,-0.0281448860791218,-0.0198752944044867,-0.0286741300572038,-0.0317728570486725,-0.0267991320174395,-0.032243451219594,-0.0219608524534068,-0.0291120771431841,-0.0200755044846558,-0.0302640618507856,-0.0291120771431838,-0.0316172302890927,-0.0290553223947424,-0.0293240568849513,-0.0577601905810563,-0.0395298690608143,-0.0547807028391654,-0.0275536191596132,-0.0576461086475344,-0.0988703872907307,-0.0350317375241066,-0.0575415654676254,-0.0351747774621269,-0.0309470111799425,-0.02382861158099,-0.0367647761374146,-0.0220674374416422,-0.0217556526317665,-0.0455989987943445,-0.0401513916370359,-0.0465878380765627,-0.0646628345554046,-0.0983500406560236,-0.0390505183452368,-0.0539009920253687,-0.0375729470306633,-0.0283470562588849,-0.0191117593827929,-0.0149338002539521,-0.0256523597486118,-0.0600783089200319,-0.057244420433725,-0.0825288002790432,-0.029912782877261,-0.0295875718214254,-0.0189543902578811,-0.0241777552961428,-0.019579706392046,-0.0165351639412141,-0.017037772338372,-0.019347512383427,-0.019775660386245,-0.0291120771431839,-0.0350282371821328,-0.0207366037603756,-0.0278324091257923,-0.029112077143184,-0.0291120771431834,-0.0198117139367325,-0.0254468669661108,-0.0152097077096732,-0.0291120771431837,-0.0259700537691909,-0.0258756251499025,-0.032655627450989,-0.029112077143184,-0.0274947203438592,-0.0297400960858028,-0.0291120771431838,-0.0506594709037191,-0.0246039872930453,-0.0192200153428564,-0.0288803091723236,-0.0273040183437139,-0.0288817067669979,-0.0291120771431835,-0.0291120771431842,-0.0582059686259896,-0.0336920540522518,-0.0412287061192342,-0.0279485088070337,-0.0479373713388568,-0.0964157972055093,-0.0291120771431839,-0.013661008298143,-0.0287780040800568,-0.0198364399530307,-0.0176454093677468,-0.0280275540614113,-0.0291120771431836,-0.0294834307876704,-0.0291120771431839,-0.0456370836543355,-0.0291120771431837,-0.0255657229623992,-0.0291120771431835,-0.0237433716096481,-0.0233268667498367,-0.0180570728928404,-0.0340344591548879,-0.0291120771431836,-0.0241210345215332,-0.0756979229959623,-0.0291120771431838,-0.0223638352813707,-0.0291120771431841,-0.0373880934829045,-0.0291120771431838,-0.0331225625924876,-0.0420921137042064,-0.0291120771431839,-0.0291120771431836,-0.0255645811345941,-0.0215587449843209,-0.0372461661076781,-0.0343368255405133,-0.026367139220421,-0.0291120771431838,-0.0286520771311044,-0.0291120771431836,-0.0483917125847981,-0.0337094601469132,-0.0197377021693253,-0.0170664326544668,-0.0291120771431841,-0.0284096741998317,-0.0557333272542132,-0.0807153487326046,-0.0268721382462652,-0.0271507039154253,-0.0394707345452365,-0.041272736689339,-0.029112077143184,0,0,0,0,-0.020147956790764,0,0,0,0,-0.0163632532966488,-0.0207859723781232,-0.0969739239967696,-0.0283187230747083,0,0,-0.043180696105895,-0.00966621174141414,-0.0609023604711032,0,0.00168736273828235,-0.0292723164291455,0,0.0316425076620738,0,0.144605462446826,0,0.0308520619547861,0.112042574982275,-0.00244346440714693,0,-0.00697118304325572,-0.017256168754086,-0.0345281390956281,-0.0358757544318363,-0.129033010825903,0,0.067196008660493,0.197873433257576,-0.109104814248827,-0.176984062498362,0.0286277029090111,-0.00289030914589923,-0.194920766707318,-0.0412281232478527,0.00167496865294415,0.0990657164693992,-0.161933442168373,-0.0152547523264925,-0.00764257823946856,-0.0238410746942053,-0.108768655919695,-0.0106150778823281,-0.0945229079483492,0.0584890063176125,-0.0765169099412517,-0.0141647465415523,-0.111857749700576,0,-0.302249874150241,-0.0509917725213877,0.0148761048381527,0.0622421389967339,-0.0537339592801325,0,-0.0182152971385529,-0.0422815161705841,-0.0381354521343341,-0.156323194097701,-0.106703498775743,-0.0207565462055097,-0.0561035967074835,-0.0898201339726803,0.0292686532408177,0,-0.0130535808168513,-0.228256037472449,-0.0584071312134284,-0.260464144433487,-0.164918081750014,0.123555556389762,-0.0229449119985977,0,0.0393863104728285,-0.0181098226870133,0.0780535750993731,0,-0.0252295026704695,0.0434118139281785,0.120418901159651,-0.118989299950324,0.00501370477172602,0,0.155485996670096,0.0023907383739967,-0.0364653327427677,-0.035266419299897,-0.0714737039197632,-0.0392770417305137,-0.0701834173269969,-0.127807704677595,-0.269951381942778,-0.23110271832763,-0.223957476887239,-0.0354095497826531,-0.050632291582629,-0.0241108733751652,-0.000509796870624846,-0.104916617957562,-0.0198586277449858,-0.123431506394757,-0.0124272017940472,-0.0311338892117405,-0.260000262889098,0.0184409845982186,-0.034862386241399,-0.0223686033011933,0.00879744465085195,-0.0324489645509921,-0.0280483576012721,-0.158914744195954,-0.0106805887964923,0.165424138281525,-0.133212412090398,0.139379623127295,0.0312162862412248,0.124848045246344,-0.00570002140298744,0.0586962314025768,0.0970842410609484,0.00376617525381131,0.133532586692735,0.0289026156455451,0.115166804521179,0.014013357624531,-0.0226433355353109,-0.0349341862226576,0,-0.018807053192369,-0.0500624086289698,-0.115231240144518,-0.0146698942445245,0.00213381482277235,-0.100786623613344,-0.261631356883482,-0.0534196781065847,-0.171203960407062,-0.176986304078475,-0.00217365238863182,-0.0581341453680038,-0.0629783704395063,-0.253613003365068,0,0.0225772172737801,-0.0236338088554459,-0.0131965321444092,0.0628913988762975,-0.026190921317994,0.0546850901731226,-0.00453489505278144,0.00820199135958284,-0.0246590050964743,-0.00613002991847256,0.057115965148178,-0.00370483680092837,-0.0360857015689962,-0.00460600778918968,-0.168262113565437,-0.0260877240947087,-0.0878973806582279,-0.0413377635699375,-0.0377626443820438,-0.0111337453157881,-0.0535904674950499,-0.102464050357432,-0.136955526225962,-0.0933713564917625,0,-0.0518709537718002,-0.0129701664054096,0.0519767540012537,0,0.0191222578081687,-0.0558059756223336,0,-0.172325323121764,-0.00840550351516435,-0.0277216525106468,-0.0926220321306693,-0.0221415689614532,0.000193458153666738,-0.00947729439422654,-0.0162082353354011,0,0.058537081142671,0,0.0758693147902929,0.0816637811052484,0.0558244179481727,0.187491953386186,0.109799409291811,0,-0.21399420393233,0.0136359534201613,0.00190639440258592,-0.0249481882656803,0.0190357678125212,-0.278377764806697,0.140002528015866,0.0108557086325473,-0.0967026970533106,-0.0468827175673685,-0.151503734852908,-0.192846442974293,0.00677295508286693,-0.00259799316238982,-0.0131501936787856,0,-0.0451160652738668,-0.0411995145415607,0,-0.0901692627470162,0,0,-0.0420941480500658,-0.0123992677417256,-0.0582831116248069,0.120835411451246,-0.0438879245062667,0,0.0237393947694027,-0.096105022366958,0,0,-0.0766388423818836,0.00916748892683419,0.0347997646618546,-0.0195144079212402,-0.0364426839734458,-0.0358352400361258,-0.0217532630951203,-0.02649140846321,-0.0566116304490036,-0.14092804003778,-0.00433345828025202,-0.0191516905712606,-0.0211245181901302,-0.0392172588310095,0,0.0940703296297236,0,-0.0222351800471687,-0.00275090118931502,-0.110136876561608,-0.272823073482322,0.0389336807779346,0.0777982818122275,-0.00415017197258623,0.136554681874756,-0.152341326074007,-0.0345043631354143,-0.0879890352111882,-0.0247088742168148,0.0156644978189723,-0.014905425921604,-0.0182650246953783,-0.0331410847861241,-0.0110141379072722,-0.0450005755071143,-0.239348533067877,-0.146130870726436,0.0328736818511377,-0.00483699668572173,-0.0304949504474013,-0.0137325745520935,-0.064231507621472,-0.221431132088002,-0.120502673427342,-0.0488792709630129,-0.148509657276508,-0.0364926749862298,-0.11215975557368,-0.0329861278343758,-0.0352067300837682,-0.0190412348920294,0.0452498857015194,-0.0355554824850054,-0.0103357606262662,-0.176982640099066,0.0441102774009195,-0.0672995018954498,-0.207462494379766,-0.175451817021152,-0.0111052108346388,-0.0270828517263177,-0.0059569037437895,0.0226755305545462,-0.0206520306677731,-0.0313105644282492,0.147613974211719,0.111186748683773,0.105759606400707,-0.0268062726384123,0.0612096875483606,-0.0746095493119343,-0.0150711747272231,-0.0388073098005471,-0.0225297233988867,0.0792148833763586,-0.0130488178608017,-0.238302331588578,-0.0371952033472631,-0.0207655125192035,-0.0116256442140013,-0.0234815812889177,0.0806130653212548,0.0558819050873905,-0.109687680883539,-0.0929868437099287,-0.0207547640704234,-0.0770705950228932,-0.022512306179001,-0.0377668393019329,0,-0.173949038518118,-0.145770552393264,-0.25907148509717,0.137619389885739,-0.0523577803405995,0.0227008639209221,0,-0.0231552499992937,-0.0248717129134761,-0.0193801467714657,-0.00122981800136712,-0.0463261105357918,0.000155697695840955,0.0147297024667243,-0.16940789840383,-0.00343542882666671,-0.0296687904106124,0,-0.156487347239533,-0.067811545164908,-0.226211320184754,-0.129960149701427,0.0216029211301884,-0.148191440695655,0.109534753474914,-0.0173482725953915,-0.0172933133421868,-0.0304636731146546,-0.0242106655162141,-0.0148371575380953,0.00791450355069826,0,0.00673343940709047,-0.00901211460613383,-0.209788910937247,0.00353827394095389,0.162210723298936,0.0166539503853213,-0.0721132139464293,-0.120930758924748,-0.0918118446762322,0,-0.0290967764560417,-0.0208608415265097,-0.0359701464712713,-0.0339462461917431,-0.0168075745627437,0.112907166819636,0.0499120585127557,-0.0426568191977236,-0.030290001151864,-0.0284462145546373,-0.0156898202478674,0,-0.0325039493822063,-0.0294815145888644,-0.014239427275489,0,-0.0388963468766799,0.0139213770353156,0,-0.143341407881644,0.0642963413536132,-0.0397167274884901,-0.0298636371853167,-0.00213335022262483,0.0460417173070933,-0.0268423802137433,0.00942109343588313,0,-0.0249178586998848,0.0124917741161278,-0.0344022438439621,-0.0864285914177158,0.0805726286696316,-0.042256982704408,-0.0145683194837426,-0.0975689010926383,0,-0.0778548664132687,-0.185603128493841,-0.121917821199898,-0.0629377262876577,0.00508228094235075,0.0897224242412686,0.0859211605132022,-0.0283419528261395,-0.0249462656999783,-0.00862532098857994,-0.0356087240133419,-0.072162951139369,0,0.027372831502518,0.0110581367370782,0,0,0.0800705479482513,-0.0721220255766553,0,0,-0.227190561442415,-0.214141747581511,-0.104638859001708,-0.0228053191849059,-0.141583089688422,-0.112002431807741,-0.272565506720118,0.00702634613355808,-0.0601966868180213,-0.0441284394440795,-0.0243514581733741,-0.0121227492161229,-0.0569301142604901,-0.0116018207631688,-0.0051856103052099,-0.0788185059842613,-0.0366947630394597,0.0541272076298143,-0.0450204278584926,-0.0568737870053849,-0.210649781173517,0.193123771309129,-0.0304855404067158,-0.0247933114123559,-0.0273964062506319,-0.0882128200259368,-0.00689545624849401,0.00204969566832396,0,-0.0581964142422454,-0.205104459328625,0.0201831374979955,0,-0.0194348909507263,0,-0.0444479442220347,0,-0.00360935836966849,-0.00876364709190258,-0.069748238574777,0,0.0721708533123464,0,-0.0187255407849416,-0.194024132801045,-0.042683703732313,-0.316839730891546,-0.214540006592445,-0.146141480670833,-0.109463386364638,0,-0.0935353998858626,0,-0.185246860149704,0,0.0417343162414401,0.0969639968161609,0.0526259067379704,0.119932375208416,0,0,-0.286216104884074,0,-0.0821995196860053,-0.253600125936821,-0.0532213189628368,-0.448376134195275,-0.124426996662892,-0.111007063546238,0,0.00611265995888616,0,0.0155975139289789,0.0208798650443901,0,-0.00932246602618153,-0.0134334441091313,0,0,-0.0255569954641794,0,-0.0509580956090885,0,-0.136908024982278,-0.130046394845476,0,0,-0.170648506117565,-0.158449052796328,-0.313551319120021,-0.0253761494279169,-0.0524821800814866,-0.0709646821168704,-0.0622009270686542,0.0357527182369141,0.000965047584805897,-0.0392459621874523,0.0069422494415802,-0.0609620165028213,-0.0150314251637981,0.00174769016280726,-0.0126140967227217,-0.056052528982484,0.0416143620799499,0,-0.305975478367826,-0.0782853932247076,0,-0.206509510715615,-0.0187146736772077,0.0441877744764729,-0.023066395279911,-0.00791715389592462,0.0192084857913427,-0.0119278820385128,-0.0550395731140205,-0.0317207646240601,-0.0636525208235815,-0.0160672847645393,-0.0116899964755188,0.0430706078106956,0.0300121411351477,-0.038432744682602,-0.020260963861922,-0.0135526411826513,-0.0473327161750847,-0.033682176299606,-0.0308582073308063,0.00808488026054041,0.0934246672910556,-0.0321705032614368,0.00332875084978579,0,0.0633877171189184,-0.0911472827608462,-0.125266200045175,0.0690185449555819,-0.0555326729447115,0.134508648174412,-0.0143941449389434,0.0952445413498267,-0.0155251551766319,0.0175403550100894,-0.0198693692082213,-0.030726462365288,-0.0641611066930154,-0.0602544361284389,-0.239983559519,0.171315087458405,-0.0243461833013991,-0.208149031468556,-0.0780264611357361,0.135323162693549,0.0265758895639806,-0.0304744017630536,-0.0446555718418297,-0.0238494268833087,0.0213234285700393,0.110973733893995,0.0170641384413714,-0.0294597718760001,0.0684233537507523,0.0534566057442241,0.00101978784727732,-0.0430058360294481,-0.00333321190768571,-0.0372898490896696,-0.0511497712594908,-0.0244419530444061,0.0933287939184426,0.0816552343655366,-0.0673214698177476,-0.0402549376865319,-0.036773125217659,-0.0150676177773676,0,-0.0336280912504594,0,-0.0900670246639312,0.00491735506850365,-0.00542812102594962,-0.00861613086509903,0,-0.0939026156317185,0.0203838082320301,-0.0154243076115907,-0.244116403616644,-0.0523428597632666,0,0.0252714018812058,0,0,0.0110398419901421,-0.30009278750269,-0.083792101416614,0,0.0825588511393117,0.172668132607747,-0.0229355458846937,-0.0687100539811081,0,-0.015486786722793,0.0881845087851647,-0.0437476393216194,-0.0252529656539343,-0.0285035027950909,-0.280577080107509,-0.0305494518386419,0.0824467193455788,0.0086930801942274,-0.0237495983777349,-0.0415609000144886,0.00560051101171452,-0.0143352190063634,-0.0430949527333911,0.0109087798157289,0,-0.0215035363761272,-0.051593436281133,0,0.0136833385130833,-0.0372156088472578,-0.0458779532194345,-0.262301554466424,-0.149149185503541,0.0765485285260822,-0.12460215898284,-0.187664626206654,-0.0408506669209989,-0.182010115630124,-0.273969691373927,0.166256720865956,0.0485644727797214,-0.00589016999819504,0.0305362107031466,0.000533163091057455,-0.0314416618009625,-0.202943879904563,-0.213916062737268,-0.212159673679136,-0.0667205595885159,-0.0797057554366837,0.115924008466359,0.165923632835486,0.0558538740083989,0.0773167857208904,0.00185998310760075,-0.0298296664514043,-0.034492600846848,-0.0210525719959643,-0.190054413483302,-0.155626411708277,-0.0990569778501548,-0.0153699538880303,-0.000250138815432602,0.00753108059146782,0.0288745218690772,-0.0589436604530033,-0.0149095354460956,-0.0291657827488101,-0.00152827775948722,0,0.0400764999482461,-0.0625668217156639,-0.0098444152227372,0,0,-0.0247814266794162,-0.0894896548183027,-0.0641164381724803,0,-0.061786964604639,-0.0402268853260688,-0.0340197887494374,0,-0.098659067943017,-0.027351845621978,0,-0.160972964992338,-0.0308284729843805,-0.0251405283457285,-0.0176449913709788,-0.0597431386716433,-0.0284063662914734,0,0,-0.218244294558295,-0.0780237315164824,0.0164666464701971,-0.055005124663467,-0.0496067619746527,0.0278013631339621,0,-0.0668672546344957,-0.0435831457829001,-0.0141772482324356,0.0117995409745021,-0.174833714353558,0,0.0595698230764625,0,0.204681831146077,0,-0.096640278465925,0,-0.0574285288083312,-0.0500864904227985,-0.0398881852154987,-0.125485399623686,0,-0.0874369117028695,0.00138292529245082,0,-0.0749677334500313,0,-0.201304043274752,0,0.0864602324603589,-0.0716546897317591,0,0,-0.0112578038376361,0.000112658582008991,0.179422577195086,0.0176520367077633,-0.0188928998330909,0,-0.0540011790336618,0,0.186433538634212,-0.0388180736943165,-0.029028778353702,-0.0141079042524067,0,-0.0874883923177138,-0.310809265743475,-0.280228789371529,0.0182738213375399,-0.0291431475224947,-0.096388762616112,-0.0849172790164127,0,0,0,0,0,-0.0108932081336369,0,0,0,0,-0.0159320661411531,-0.024860923918164,-0.104801568727096,-0.0284222033915367,0,0,-0.0636596682662632,0.00440534389551655,-0.0627740056011541,0,0.0231609266281458,-0.0363558025672893,0,0.0881137366465848,0,0.324396129219852,0,0.0882635297070698,0.261553265326359,0.0174849869193058,0,0.0012427342071564,-0.0168712277431087,-0.0460198174264245,-0.0564936325063021,-0.231182662425248,0,0.182990744760977,0.460467247092028,-0.168031103314664,-0.301768031901984,0.0870679579952335,0.0345076790405489,-0.357199660835913,-0.0511097219388406,0.0309544636093735,0.253725759774559,-0.220015462001834,-0.00130723869495993,0.0199099649626349,-0.0284431579856711,-0.173185541734711,0.0309498402409059,-0.157195005521843,0.193530479102944,-0.121012507200807,-0.00140667855607813,-0.19779645466981,0,-0.537134591015776,-0.073761387917955,0.0518687224094897,0.157636019879392,-0.0729368460200708,0,-0.0191540905675819,-0.062633559091852,-0.0574561637133834,-0.250214409036338,-0.187862245576828,-0.016121440851987,-0.0787553442127203,-0.14619129259759,0.0901710747544074,0,-0.00428456593960702,-0.395235005417446,-0.0276436779625122,-0.460655574012751,-0.245921846039113,0.31610960574218,-0.0164655406032313,0,0.122915517128766,-0.00985431929143803,0.18386761420937,0,-0.0313455436859416,0.114608696272411,0.288338495248044,-0.211838592390176,0.0279282600918196,0,0.351429211366646,0.0199065565742027,-0.0551262004169701,-0.0462424587107469,-0.116921561759337,-0.0589397918668367,-0.109573424841208,-0.226551998363031,-0.460375088340624,-0.407927292658251,-0.401858260677534,-0.046916542802541,-0.0781196049833162,-0.0300348798596996,0.0163752014367279,-0.180092301090117,-0.022509688356763,-0.222754349975021,-0.00541134885063362,-0.0412086727828584,-0.46073490064846,0.0589770884117799,-0.0480686903699167,-0.0277375709999825,0.0488070603944552,-0.0377396586722948,-0.0299476232280834,-0.225027903218438,0.00740392943720898,0.368751817481989,-0.22258428913545,0.327426043271345,0.0879142356731173,0.287239745060455,0.0130192422162803,0.177409859761367,0.27084959046966,0.0667692533053557,0.309602146808968,0.0785197951692076,0.300950958937322,0.0784223037591824,-0.0194384337646657,-0.0415672022775455,0,-0.0207313254519128,-0.0711426270814925,-0.182189361127093,-0.00995528977383896,0.0343481180937474,-0.130488277481347,-0.446549365440655,-0.081997189491094,-0.28636886518278,-0.316402977816452,0.0217066015398407,-0.0928052131168397,-0.0971066548926192,-0.470180905555304,0,0.0829784727849466,-0.0182633750255938,-0.00255061525750956,0.150675792295146,-0.0328784546224259,0.140196278447794,0.00914841577124886,0.0384329650702676,-0.0258965036723938,0.010310865713353,0.141762992790933,0.0177798551343205,-0.0435354875312093,0.00928904841978901,-0.290582650266389,-0.0331753880258341,-0.124058690213878,-0.0609502357084787,-0.0488990798459365,0.00476167370879897,-0.0755431906953337,-0.156836775032378,-0.244225539134795,-0.1465963711325,0,-0.0732155548991888,-0.00356743998196749,0.138106966441101,0,0.0887788358204894,-0.087232421096417,0,-0.270551428726527,0.000937303030054341,-0.0256505105976945,-0.111809765094379,-0.0191378855658104,0.0135331578165811,0.00319409419785963,-0.0123035600487629,0,0.145580557529713,0,0.187281558635619,0.234854193947546,0.179448240436531,0.423888212568864,0.251012504089665,0,-0.368759438016778,0.0507374129834508,0.0264226591644818,-0.0316351252695338,0.0631207180116789,-0.462580084858168,0.330444063141364,0.0680342930735668,-0.165593621482381,-0.0718355610087187,-0.276434802030963,-0.342215089662933,0.0394160891690136,0.00987850493635841,-0.00324393563685176,0,-0.0695265285497778,-0.052166780499838,0,-0.148394642338546,0,0,-0.0463927163961217,0.0113392159644993,-0.0726943502562694,0.294216497753754,-0.057783800311639,0,0.0670496298988561,-0.148666361983578,0,0,-0.119190324799352,0.0482604077753429,0.10674826463978,-0.00958539854716596,-0.0439692589635296,-0.0521914221230638,-0.0142818184077941,-0.0322959210998836,-0.0815662191941413,-0.246661161339609,0.0129796936951378,-0.0213182985833935,-0.0249858086651527,-0.0590062436134334,0,0.228229648076385,0,0.00315764527572974,0.0204644702327106,-0.143056583476649,-0.502872942935504,0.108355823014256,0.187410129867226,0.023291243699891,0.321138263199354,-0.24808462649062,-0.0501780005528334,-0.126774291509843,0.00632290329168985,0.119803472791903,-0.00814946647940392,-0.00773409150336839,-0.0456712544683538,-0.00545811099317088,-0.0656392803851042,-0.42403976640322,-0.256934314764544,0.112961141862785,0.018590792638954,-0.0347092504113797,-0.0077110945511053,-0.0960641233648655,-0.383130389412063,-0.214964501763166,-0.0715625446538613,-0.267958539845972,-0.054307661397622,-0.183074786683609,-0.0381429941629307,-0.0480797623128809,-0.0200089655547096,0.125487515355311,-0.0408319933962852,0.00656030078455275,-0.288138737699057,0.114061064366027,-0.103018927093967,-0.366238996874722,-0.261466479842573,-0.00349649850691272,-0.0280255747865331,0.00652871820391289,0.0692115402512452,-0.0162407061580016,0.0172515414927705,0.338313003298275,0.267166051928585,0.290154800335169,-0.0154632792426398,0.144381057791026,-0.118489066698406,-0.00873267306325491,-0.0523487106027508,-0.0237377154339571,0.201639674112581,0.00232019889443829,-0.413898573942348,-0.0474687219878748,-0.0187197056977825,-0.00487582965376096,-0.0301984362428985,0.18951119238999,0.17055628534739,-0.179076637802008,-0.154041054164993,-0.0239478719872305,-0.127187645234843,-0.0216197188769406,-0.0559742869231112,0,-0.316394554049534,-0.266849589495226,-0.436933338800373,0.334259536314379,-0.0741651506095805,0.0792680487056555,0,-0.0222257406016535,-0.0247340785809678,-0.0198169865733588,0.0166827382182364,-0.0723814341106397,0.030761227894111,0.0874629582274217,-0.250873132683831,0.0173877723799593,-0.0307325475122752,0,-0.282201986886467,-0.106450832316431,-0.406299622280736,-0.217012232915152,0.077195049721625,-0.222127693139193,0.293347425620019,0.0461232847038716,0.00750279924648027,-0.0339945690522506,-0.0257491308160988,-0.00285332620810176,0.042308002857644,0,0.0423102821805184,0.00159240223497015,-0.366260022628562,0.0261209639640807,0.380389325453028,0.0566691241689626,-0.113123115019784,-0.216023329581413,-0.157750933808008,0,-0.0405823163929184,-0.0211694819915789,-0.0528306793741415,-0.0493878977371493,-0.00563660754753515,0.256316723079526,0.128731904573721,-0.055251767596796,-0.0296444128078516,-0.0196872006697809,-0.0122607158915913,0,-0.0357349199341923,-0.036719679708434,-0.0114497666832679,0,-0.0485669457779769,0.048299746309397,0,-0.245422096333581,0.163607411283346,-0.053503753520299,-0.0411598233013789,0.0347554346133595,0.154682196707929,-0.0261857803388703,0.0465493647161816,0,-0.0217875611103581,0.0463909161730221,-0.0451251622535095,-0.150397310156547,0.199249061452988,-0.0576561824210052,0.000146637276100191,-0.162055622191265,0,-0.101439794130442,-0.323743743921978,-0.215768604325699,-0.107625894020015,0.050669331626127,0.21284234973251,0.210043533406741,-0.0393077012000579,-0.0308642991130338,0.000647391534121677,-0.04400508179144,-0.111865475336894,0,0.0838911202906536,0.125884692870034,0,0,0.212164503891006,-0.0962085088578029,0,0,-0.409431351675822,-0.336838669794702,-0.179088398316639,-0.0161052109453235,-0.256067618005244,-0.192410565759752,-0.492417694508458,0.0462584126987741,-0.0903715865719365,-0.0622174135012247,-0.027293652165119,0.00495145726716734,-0.0787607459051879,0.000180648891926704,0.0073940902091658,-0.103253418369032,-0.0537577117980177,0.147318091999517,-0.0625176335209913,-0.0834446953949126,-0.382240530125313,0.4441904965706,-0.035355767766795,-0.0311077877577374,-0.0341247172795567,-0.151804139412489,-5.02810303506956e-06,0.0226109247322053,0,-0.0947038882054938,-0.359817148387081,0.0611759875655151,0,-0.0123641920199477,0,-0.0664700208390009,0,0.0282636516490802,0.0446971726189447,-0.0984781356139852,0,0.176715089026814,0,-0.000997746512799359,-0.302419440116928,-0.0575025837629043,-0.565551183047566,-0.388229912242612,-0.206109780541239,-0.188037565789214,0,-0.156498965394937,0,-0.323031897226147,0,0.139379764432684,0.257589646511034,0.185604107382056,0.283207359208946,0,0,-0.526474428980989,0,-0.0713391077704296,-0.463893366419753,-0.0787450186498772,-0.797788192908824,-0.183974317914697,-0.186632206476178,0,0.0409947812161064,0,0.050230788347132,0.0653509628509403,0,0.00872576002651633,0.00248042736604956,0,0,-0.0219413070096206,0,-0.0751738100793262,0,-0.243959551494098,-0.219617550588777,0,0,-0.288780595869109,-0.219929799141057,-0.557703088436678,-0.034821713245943,-0.0859852608512451,-0.111770950435133,-0.0848421372046181,0.097424845456919,0.032979544044463,-0.0530644909626486,0.0390827144652494,-0.0937017684758165,0.0239125130243272,0.0278905425818067,0.00335430880526378,-0.0826688773285937,0.118915780885205,0,-0.519701518054875,-0.128511458281312,0,-0.36347503714823,0.056925598267376,0.131986339857981,-0.0199136181997489,0.0221221467612327,0.0635963290837829,0.00538140397894453,-0.0802544551283192,-0.0373233953380052,-0.0984744426839474,-0.0138096067430061,-0.00265445974411861,0.111263117038822,0.0830089162567094,-0.0580003996019174,-0.0238996220318029,-0.00870537657164336,-0.0702156033009637,-0.0475642749221556,-0.0353862277309043,0.0407349712519507,0.249948588721555,-0.0351736233863297,0.0447370723827302,0,0.161653476005937,-0.110157704490158,-0.209138715189913,0.16319667746636,-0.0808296808705053,0.306248241759162,-0.0106666229765867,0.23926753361206,-0.00669263761246752,0.0481324079929453,-0.0162998315391764,-0.0351267520439963,-0.0879874350919178,-0.0397708036395827,-0.406673121862352,0.380248675449798,-0.0305042181111571,-0.372721677409406,-0.106574528416889,0.336408936936707,0.096132410514657,0.0206436457412941,-0.0396203357722902,0.0314155475697793,0.0749256316536482,0.273472888496153,0.0578139398065197,-0.0334246995416592,0.165787119912874,0.136795544139529,0.0359008080384837,-0.0602892501055244,0.0129747332273963,-0.0551734409459373,-0.0851143091741133,-0.0241216875432098,0.235720784516139,0.190992713898562,-0.112091322320525,-0.0620404391962738,-0.0497624515382193,0.00119453147403211,0,-0.0392999535756453,0,-0.135590341279913,0.0296285685870809,0.0100261098551846,0.000277720350912094,0,-0.154714307388813,0.0682762073065938,-0.0022568098497515,-0.446910558096248,-0.0708759441264647,0,0.0765642766362975,0,0,0.0404393776224781,-0.553791913034704,-0.148498786604457,0,0.206585034047751,0.404864781736178,-0.0247658790332488,-0.086440207695303,0,0.0438895590941137,0.249308313988525,-0.068529701284623,-0.0248400135144694,-0.04585365728949,-0.476964614602739,-0.0264761649358688,0.237434484626964,0.0467028730296426,-0.0291099210996152,-0.0541805036179258,0.0424975992377053,-0.00437160993657377,-0.0494739784534713,0.0457000140772229,0,-0.0228293120322526,-0.0729547209937261,0,0.0594741480087431,-0.0435731426254858,-0.0633122866675266,-0.465882081543665,-0.256807212586335,0.207849877091119,-0.221439904755745,-0.317834302514036,0.0223967160560338,-0.327739906189622,-0.489082554877004,0.366863561970893,0.127886108683793,0.0114696490537949,0.103521647670662,0.0261456071804,-0.0412964225100732,-0.358646850507363,-0.386677528711775,-0.376580864798636,-0.0683779958021514,-0.0615542447874213,0.270065753823177,0.383281516873933,0.149094959060613,0.183430450201895,0.0232128173790429,-0.0437093470537175,-0.0382977522375074,0.0120247733867078,-0.320632279114074,-0.225949168504193,-0.168470309578495,0.000286212657156092,0.0195671043460051,0.0375651678743896,0.0750146991768022,-0.0931962634223895,-0.0121561017371454,-0.0386495666695784,0.0165747138417532,0,0.119306437460332,-0.104914062825802,0.0151151102413173,0,0,-0.0307816181879086,-0.146262390719375,-0.106286701214613,0,-0.0940477388913659,-0.0499034169016815,-0.0367569489149901,0,-0.156498907133886,-0.0204179581426833,0,-0.269721880999674,-0.0371585370480217,-0.0315313544399399,-0.00615396403637706,-0.0914501064265816,-0.0284093757209426,0,0,-0.379786357651236,-0.120027447452663,0.077234148510662,-0.0810541572084995,-0.0528367879869953,0.161610808050136,0,-0.112434692307225,-0.0549760403334122,-0.00979876906251209,0.0375414478345341,-0.316490485205604,0,0.156259182599211,0,0.459305377964781,0,-0.159739912905732,0,-0.0893517175403958,-0.0793754917563932,-0.063688901837669,-0.217241960266668,0,-0.147788180500288,0.0756565017402745,0,-0.122131218709307,0,-0.357564582107196,0,0.2153514604257,-0.0951209882004787,0,0,0.00255136996692197,0.0238580156728909,0.402718593785579,0.0731155644976553,-0.00613456093865554,0,-0.0684510593448611,0,0.426926511303717,-0.0482416207807918,-0.0385613747943828,-0.0130055599240904,0,-0.136295232800395,-0.564814552886864,-0.474716991778921,0.0637676576640941,-0.031021008553874,-0.152967622463566,-0.127903688488942,0,0,0,0,0,-0.00175137880616775,0,0,0,0,-0.0154608379597617,-0.0288622438198656,-0.112813709153324,-0.0285270196359959,0,0,-0.0841789786587521,0.0199876410450269,-0.0647477996494866,0,0.0456920185707882,-0.0432605827704201,0,0.144195433726315,0,0.506028750616098,0,0.147891288958829,0.411107045427456,0.0376345106213078,0,0.00944299526799612,-0.0165342836034235,-0.0575709748266906,-0.0778643168099158,-0.334672289714619,0,0.298348141114352,0.72125514650591,-0.227532505834729,-0.425690565198244,0.146063374804119,0.0719011291462516,-0.519059641780319,-0.061162883772364,0.0605326645299289,0.405993915472868,-0.277343005180635,0.0129102701342466,0.0480647626549928,-0.033044077623131,-0.237728640110828,0.0721370890194047,-0.220481922539557,0.328796867818292,-0.165853196841705,0.0117486617844022,-0.284554949861159,0,-0.770233034170705,-0.0963341206928009,0.0895806026111187,0.253430694269439,-0.0947590071826538,0,-0.0198018475085534,-0.084637541728671,-0.0763300709980241,-0.342862327554629,-0.270458410730018,-0.0116828653359499,-0.101758525736425,-0.202363642572242,0.151860290319932,0,0.00434867433489408,-0.561003259319963,0.00381567744866124,-0.658971879657754,-0.326195808196309,0.50668419817782,-0.00976263718258601,0,0.206585037667874,-0.00148780338249159,0.289683122576606,0,-0.0373633285393753,0.188735386090492,0.455151519971223,-0.306109062781577,0.0512711141441711,0,0.54908776058649,0.036796258627701,-0.0743219261812405,-0.0569432258613784,-0.16273686820339,-0.0792329094255991,-0.1497717336118,-0.325970403138129,-0.649182417657869,-0.582673732035548,-0.57966616604738,-0.0586391757656102,-0.105905165634016,-0.0365649506818947,0.0337024524674869,-0.256108857512658,-0.0250482002356867,-0.323103800680328,0.00176701370465338,-0.0511403114222288,-0.660153057198444,0.100262933751015,-0.061725867002541,-0.033345833226391,0.0893637307697081,-0.0431430294276413,-0.0320481232058286,-0.290152110075396,0.0260689930480571,0.572202712077173,-0.311541041936917,0.514754723110145,0.146065922072491,0.450042762784283,0.0317216047993659,0.294610472525104,0.441910202013693,0.129059013026833,0.485742652489623,0.129139268566981,0.484270751507351,0.142472497911311,-0.0162345912874891,-0.0480568839632841,0,-0.0224555339178075,-0.0921882035572405,-0.248794575565531,-0.00511119209876393,0.0667276288761646,-0.159490665456767,-0.628948529015567,-0.111124196270972,-0.401123774881015,-0.456094039044024,0.0456965172843139,-0.128702621390282,-0.131677302262602,-0.686959392084959,0,0.143019358878978,-0.0125084639365137,0.00917069173985188,0.239729534859272,-0.0401257845035555,0.22613915065254,0.0234084592994486,0.0692334689716752,-0.0269695686271647,0.026696742335807,0.227484577392155,0.0397563773341136,-0.0510982146243715,0.0236819900526249,-0.41262742732425,-0.0402341784077445,-0.159740127108152,-0.0813001628397053,-0.0601864504686544,0.0208516948531893,-0.0974943230329698,-0.211375227309088,-0.351048709196181,-0.201286023855199,0,-0.0953535369535459,0.00508031535750943,0.223826365549354,0,0.15756512044241,-0.118060125743031,0,-0.367167622308049,0.0106849413913813,-0.0233278189749259,-0.13050209539156,-0.0162974258065298,0.0267149007203066,0.016158334696946,-0.00837942528879704,0,0.234678282891559,0,0.299331064775229,0.388009428998492,0.300366688268295,0.659143804671317,0.392483512904653,0,-0.521763960692294,0.0895213832503852,0.0518569977591786,-0.0383125791834224,0.106434673852618,-0.644997358499826,0.519690206831887,0.124925756643545,-0.234745013011045,-0.0971950592210433,-0.40210838966821,-0.49123012808041,0.0716032164331027,0.0207935193646509,0.00521134193234482,0,-0.0928358520200448,-0.0625479920082483,0,-0.206157596992271,0,0,-0.0489809789040439,0.0358512768348706,-0.0878431253435549,0.468397945423248,-0.0716350626580084,0,0.109301473554892,-0.196002172634044,0,0,-0.160794586494014,0.0882772518456725,0.178790239635172,0.000745087721106453,-0.0515037633524373,-0.069142999928189,-0.00667645783179024,-0.0380814931670172,-0.106983064911962,-0.352607361227964,0.0305050922192712,-0.0233964473311914,-0.028834451474893,-0.0793297977636672,0,0.362235748159868,0,0.0273152299500356,0.0445455286080827,-0.175612796343826,-0.733514915988535,0.178752945711052,0.298100223221647,0.0510571959087298,0.504812817720642,-0.34314005450294,-0.0662706999060469,-0.164988560126784,0.0370059964766643,0.222129072780426,-0.00141183221137219,0.0031321674195493,-0.0582333976851589,0.000302156365499983,-0.0866987929187146,-0.607470577267769,-0.367985443476308,0.192296011822481,0.0422366777291117,-0.0389463767199013,-0.00155237453614085,-0.128366194274006,-0.543872197560873,-0.310619065927069,-0.0945172853354535,-0.388507559831865,-0.0726635703223347,-0.254156699857658,-0.0431345489216894,-0.0609778218660357,-0.0209594766785596,0.206071367640549,-0.0457150252638762,0.0234375096639024,-0.398149902811263,0.18495593723767,-0.13921584444425,-0.524169157158124,-0.345999054152014,0.00486052458528487,-0.029148329287223,0.0195608217990232,0.116796309836007,-0.01186079242055,0.0649100190453135,0.529000952994905,0.422395218709839,0.472273957351254,-0.00385023523800443,0.22871076080377,-0.162676045396628,-0.00240273991225533,-0.0658494162480195,-0.0250250256758872,0.323866624915947,0.0178678050388135,-0.588192893143526,-0.0579498988403108,-0.0161924639513697,0.002361496844464,-0.0372490622304878,0.299270159247575,0.28417311077122,-0.248336692252337,-0.215647357531321,-0.0272647206910031,-0.178634047070406,-0.0206292913992666,-0.0746649724370089,0,-0.459314913980918,-0.388709298335337,-0.612684907494365,0.529695878392908,-0.0962596117165686,0.136223310178414,0,-0.0213687632734055,-0.0244125954609795,-0.020303875038351,0.0350692389741775,-0.0991172979995143,0.0619424933466686,0.159380393891429,-0.330733843747879,0.038955169111256,-0.0318500454144906,0,-0.408821112286239,-0.145682413296443,-0.58585460547381,-0.303901015531614,0.13309126507351,-0.294356029154605,0.474756997310717,0.107525393083588,0.0320752370029744,-0.0372853005208977,-0.0270690256793473,0.00930991042083915,0.0772708565225923,0,0.0782808257214173,0.0122478481892293,-0.521128960790132,0.049435494238832,0.59791790837162,0.09686056852535,-0.154766364604887,-0.312187883225592,-0.224267858308423,0,-0.0517837826101635,-0.0216959663217298,-0.0703800554791479,-0.0650906182936364,0.00557827401245648,0.400570017357565,0.208516862144735,-0.0677421869378455,-0.0271449670569339,-0.0105418046225937,-0.00868028558750713,0,-0.038668198506426,-0.0436957615414804,-0.0086502108935812,0,-0.057891303714732,0.0830169842200569,0,-0.347865421007072,0.262988337661239,-0.067418417185672,-0.0529019883488661,0.0714977741699215,0.261429535264774,-0.0255013214167976,0.0817458046863231,0,-0.0199906406234733,0.0822485507787838,-0.0557935537350662,-0.215312931103967,0.318108637184584,-0.0728324306780804,0.0150927247382048,-0.227064702145702,0,-0.124620462205427,-0.461000078895931,-0.310817342484037,-0.152714230428995,0.0965086776161284,0.335707449736833,0.33549081423319,-0.0509786542147564,-0.0367663643275659,0.0100776099895163,-0.0522156943877553,-0.15205362340854,0,0.140193419784071,0.242767042130058,0,0,0.343532312814111,-0.120348558640718,0,0,-0.593430762274543,-0.457362161476319,-0.253880481555983,-0.00957260653885766,-0.371632044786786,-0.273494889207133,-0.711132707823217,0.0858614785947785,-0.120786747828438,-0.0804122515006017,-0.0302159982021151,0.0224318406713261,-0.10068814299843,0.0120207473219796,0.0204342132079592,-0.127349252817162,-0.0713129481761516,0.239574234449703,-0.0798206817938686,-0.110347662135449,-0.554247808201315,0.694027088465836,-0.0399488001128479,-0.0380869977166067,-0.0404983516390533,-0.216490788678797,0.00661542256425137,0.043383474703465,0,-0.130663047282364,-0.513978535149139,0.103702598561071,0,-0.00571933928972151,0,-0.0890134082066672,0,0.0599356999359397,0.0959313687971531,-0.126904733206517,0,0.281696836072118,0,0.0168886009177856,-0.408231873592479,-0.0722052719488949,-0.811426537080325,-0.562987516749208,-0.265544395416655,-0.26836105378918,0,-0.220384876343242,0,-0.460982506227266,0,0.235776265954335,0.416670080307194,0.316369048115576,0.446955591629313,0,0,-0.768902595153319,0,-0.0600889182357839,-0.676348593796539,-0.103515280154512,-1.14308680045391,-0.242426915300675,-0.263764207983863,0,0.0743603407198711,0,0.0859374525854762,0.108422627068258,0,0.0295115333134875,0.0166777753806806,0,0,-0.0189063160369638,0,-0.100526459924109,0,-0.351859776179948,-0.310835705587613,0,0,-0.40651150401848,-0.280412393490473,-0.799846228518523,-0.044566614351525,-0.120359945810685,-0.1535361647354,-0.10671931749519,0.157758244238478,0.0628232131274491,-0.0658170145690194,0.0711039637953497,-0.126158640386316,0.062043881667309,0.054321683928887,0.0194263268094603,-0.109501441302659,0.196675366815386,0,-0.731221173503835,-0.180668385072933,0,-0.519609865471072,0.13151519304135,0.219297530799251,-0.0165931704370845,0.052704053223121,0.108521570081782,0.023109399890504,-0.106008700962502,-0.0427831994936451,-0.134091754380702,-0.0116392788216631,0.00693946063519966,0.18060517720048,0.137063352762406,-0.0781928103161673,-0.0275992280482813,-0.00362731401328075,-0.0940836582642189,-0.0613878182543394,-0.0395805040128006,0.0732014681726946,0.404251785406305,-0.0378944848540006,0.085720932517267,0,0.260538663271875,-0.128554592811192,-0.293271927322892,0.258586769188875,-0.106373083002753,0.47806942248223,-0.00800280477858342,0.381951656016466,0.00274177714208996,0.0773109505786631,-0.0126988177854794,-0.0396980549243681,-0.111571868049985,-0.0196833034441016,-0.57124913193778,0.589373187902613,-0.0367662225724935,-0.537199662673766,-0.134400347207473,0.53514427630575,0.165326831069474,0.0710207465885669,-0.0348030535536503,0.0843388100612295,0.129337132226642,0.435560107649161,0.100174266081887,-0.0371905172565145,0.263829620684699,0.221034396607569,0.0710702959958746,-0.0777186239568602,0.0305847005556012,-0.073245052493781,-0.119378402053068,-0.0234481854780778,0.376831696266413,0.301276392119484,-0.158459169635438,-0.084116289699609,-0.0628700598479147,0.0181135535415507,0,-0.0459810689442905,0,-0.180171614819894,0.0551621911751118,0.0257367207727422,0.00965598572267099,0,-0.218385369509978,0.114759222027083,0.0101452694529802,-0.650054909755252,-0.0930771602796575,0,0.126383634511068,0,0,0.0716149492361909,-0.809968961080299,-0.213813132653436,0,0.330672395351731,0.63598375804826,-0.0274782651401891,-0.104768333675512,0,0.101722646332589,0.408223998970385,-0.0941017269762373,-0.0244126334616615,-0.0631447336971054,-0.670642825433421,-0.0223058027513956,0.390561358303368,0.0861132491411244,-0.0335202563028704,-0.0670033586856139,0.0794453655740885,0.00401522561245883,-0.0547331251572927,0.0824136484910856,0,-0.0241494873439934,-0.0945305168705826,0,0.106051682753997,-0.0491373771484167,-0.0814668091093445,-0.668204630733662,-0.364242335649624,0.338911037247573,-0.319063231202155,-0.447365467467817,0.0863422871651036,-0.473996213472288,-0.702859307449386,0.568153081859858,0.20776240830181,0.0290824498443399,0.175826144003766,0.0520753833663483,-0.0504205593259541,-0.513819503090328,-0.559531004264332,-0.540928789760065,-0.069690215979466,-0.0438909862691015,0.424508918856371,0.599280682812183,0.24290383679865,0.290931711212467,0.0446023213878231,-0.0578096252817425,-0.0421861745860268,0.0436864945227903,-0.450011634331261,-0.293911766806953,-0.23855886822789,0.0162039366921081,0.039841831967171,0.0677770507652323,0.122527515093183,-0.126246867044864,-0.00940789695660027,-0.0483790390371413,0.0345809225130427,0,0.199646868353936,-0.148227702696146,0.0416690125977635,0,0,-0.0383493493575721,-0.200399551040502,-0.147911610185325,0,-0.124818095061471,-0.0592330863681555,-0.0397229217841938,0,-0.211757051952251,-0.0106326963684459,0,-0.377930956989801,-0.043567301306397,-0.0378436031288329,0.00573987706218346,-0.123385704422459,-0.0287723882552029,0,0,-0.541040127442261,-0.161491181373385,0.138392190347545,-0.107167665293099,-0.0574291935069056,0.296727984187042,0,-0.156734910375345,-0.0649062472003403,-0.00666299038713642,0.0621211480678934,-0.459177544378726,0,0.255197125335106,0,0.715851558904415,0,-0.220721391516949,0,-0.121140534569999,-0.109767034890016,-0.0879203422120584,-0.3095403489483,0,-0.209616795240133,0.149491371288753,0,-0.169109708134075,0,-0.514385672776618,0,0.346121074332994,-0.118869808074511,0,0,0.0165133369453959,0.0496076398736932,0.627888575498225,0.130291239259779,0.00790266655592544,0,-0.0818192141239759,0,0.668110247326549,-0.0603233235782634,-0.0482465213095542,-0.0129816355646593,0,-0.181876956419867,-0.816920950039822,-0.666524996093602,0.110127917452824,-0.0328731737237016,-0.209752640477073,-0.170658335247808,0,0,0,0,0,0.00726322136680076,0,0,0,0,-0.0149454861317646,-0.0327644023584326,-0.121008375352939,-0.0286018423865372,0,0,-0.104501151049877,0.0368426945390623,-0.0666221585291189,0,0.0684024793958359,-0.0504729390374916,0,0.201871845757453,0,0.688210801939663,0,0.208244300384792,0.561715206592024,0.0580412338896498,0,0.0176998466796319,-0.016142370621145,-0.069293784166257,-0.0998258178117433,-0.438786186372002,0,0.414238210582611,0.979404640330067,-0.285311271586408,-0.548755401917356,0.205284538883032,0.109280592070588,-0.681431645360256,-0.0713682547698962,0.0902363295191622,0.55636362275072,-0.334308586443176,0.027340982157846,0.0765448152199323,-0.0376545518824035,-0.302192055558174,0.11307378291215,-0.284017868303985,0.462893292233071,-0.210699641656402,0.0250523662937445,-0.371785089292769,0,-1.00217798762366,-0.118737188360141,0.128044823722749,0.34944406489273,-0.113970938474563,0,-0.0194042934509844,-0.107071595268089,-0.0952270928728683,-0.434205487602061,-0.35360075402892,-0.00746471960835214,-0.12508744982699,-0.258133979494392,0.21389832753153,0,0.0129389556293909,-0.72543108855265,0.0346526580451417,-0.855987125693644,-0.405533921723991,0.695086947054658,-0.00287069550413989,0,0.29026727404579,0.00684469221613044,0.395519182763342,0,-0.0432880561861562,0.263808606481731,0.622066113951962,-0.401267132619235,0.075133506141456,0,0.746732766486192,0.0529258381750829,-0.0939587729601943,-0.0674525862518378,-0.208864980612093,-0.10001428005881,-0.190328886431955,-0.425962636737816,-0.835547354707226,-0.756016020769948,-0.756376983742574,-0.0704556915669275,-0.13379967339901,-0.0435988909991438,0.0513811547585914,-0.332648632476094,-0.027510580249829,-0.423985953812854,0.00911313728684253,-0.0609319067283819,-0.8580870769972,0.142026016570479,-0.0756776746234712,-0.0391801295715301,0.130284110118136,-0.0486239570340708,-0.0343194597078792,-0.354432260119616,0.0450568451140217,0.775302224687869,-0.399977432021479,0.701265585081723,0.205312576681359,0.612873974299312,0.050316833055909,0.410434984854636,0.610459543978929,0.190703793523225,0.661612903259992,0.180502768629695,0.665270934515992,0.206085599592758,-0.0130182411368101,-0.0543763262482842,0,-0.0239870710739019,-0.113157946531158,-0.314916863899333,-0.000180239758528175,0.0991350216096711,-0.187915062657331,-0.808918645101688,-0.140673800323654,-0.515465082662467,-0.595777659102037,0.0696479768563854,-0.165626853123442,-0.166442470741479,-0.903448384590212,0,0.202785859850151,-0.00643298591096433,0.0209835605397812,0.329606114167549,-0.0478427702657564,0.312159037830436,0.0381345621136551,0.100414788573248,-0.0278932816310067,0.0429426226497504,0.313826311619362,0.0620838102026929,-0.0587216959437394,0.0384506968045773,-0.534270220901296,-0.0472164873330706,-0.195052742689717,-0.102370493112309,-0.0713686478985595,0.0370129291393395,-0.119498536559902,-0.264178064267367,-0.458175613825243,-0.255477778789697,0,-0.116529284607064,0.0151126355669651,0.311471256741288,0,0.226520189835321,-0.149479277936058,0,-0.462408840240867,0.0207458515676087,-0.0207466893240168,-0.148725528766193,-0.013734309223663,0.0397502901143204,0.0294434371851953,-0.00420618190310576,0,0.325227608132837,0,0.411517760847458,0.539712762800347,0.41923102942729,0.892702639797873,0.534863154477499,0,-0.674029970416455,0.128467682451435,0.0772563577974751,-0.0453304867916596,0.151346821219177,-0.827657241896733,0.707654334961257,0.181452789047451,-0.303872949900961,-0.122800040856382,-0.528085324296413,-0.639702507774332,0.103756844692124,0.030561469081739,0.0126414328369015,0,-0.115626271600813,-0.0727292934442774,0,-0.26074134760465,0,0,-0.0486921920302561,0.0596069130134334,-0.102612349634251,0.643174777580505,-0.0848630041899481,0,0.151864205586404,-0.2420536904556,0,0,-0.200040084673301,0.128916904147128,0.250785029595691,0.0113886433624275,-0.0590391492825731,-0.0865692958723398,0.00098626649293979,-0.0438384694214679,-0.132649911865718,-0.458424171835036,0.0481656333155314,-0.025367503494637,-0.0326601192852701,-0.100048600823041,0,0.496421595478698,0,0.05294203709808,0.0706155835223877,-0.2077771812686,-0.963874656430376,0.249747895394442,0.409486866195,0.0789754382909433,0.687391545136676,-0.437520354365543,-0.0826850788851211,-0.202646402470632,0.067375409335362,0.322863293344863,0.005276482133231,0.0143115927655385,-0.0707862279058166,0.00622764941975255,-0.108044086806103,-0.789561468241884,-0.478917284379821,0.270864043998779,0.0659880145370436,-0.0431699360385613,0.00471586060896909,-0.16098041795487,-0.703556784917183,-0.407020619063663,-0.117586700235484,-0.509658573333818,-0.0914475729407711,-0.325261356447644,-0.0479238033256758,-0.0738826976070804,-0.0218844391493493,0.286752013638972,-0.0502218006307664,0.0401874076449812,-0.507054288162107,0.256404375169791,-0.175658893010914,-0.681124815267586,-0.429252039717176,0.0138346378783009,-0.0304530899116979,0.033026181644973,0.165129654726081,-0.00754558005521672,0.111832058066989,0.719339982394525,0.576664337197634,0.65226470483226,0.00799996801181946,0.313763053886911,-0.206959321153349,0.00390124507449,-0.0792198598972167,-0.0263739932172917,0.445643293868362,0.0334863081245581,-0.761189647809909,-0.068611091015598,-0.0132290190041547,0.0100266115115992,-0.044574136236177,0.409503617258784,0.396711428754467,-0.317365446685787,-0.277481552998825,-0.0307141157149904,-0.231067586500127,-0.0195770872450931,-0.0936963310866875,0,-0.602364882658506,-0.510886316988999,-0.786410652655497,0.723827102297089,-0.118445226965106,0.193300596294013,0,-0.0205776398060061,-0.0239431723413582,-0.0208371799835077,0.0537836848889821,-0.126335642914647,0.0935004042543075,0.230517762021963,-0.409141206439749,0.0610768696857562,-0.0329868112643478,0,-0.535877574179495,-0.185285912892287,-0.76460254478817,-0.39053672051299,0.189023276852788,-0.365020774384377,0.653952902767987,0.167097967207522,0.0564378082770064,-0.0403619802870302,-0.0282967994797687,0.0216026829656595,0.112500368783938,0,0.114378716148853,0.0229246601616312,-0.674405576779012,0.0733281381253323,0.814702051405241,0.137334733697543,-0.19684057469508,-0.409089021367463,-0.291026592014207,0,-0.0625715520326205,-0.0223496444119599,-0.0885536846158015,-0.0806138494656125,0.0167845346670801,0.54519466419732,0.28891049916972,-0.0801094028151257,-0.0246862472223418,-0.00123985905035859,-0.00499588486922151,0,-0.0414290377656979,-0.0503453794114545,-0.00577965382266074,0,-0.0673956741653114,0.118269743734938,0,-0.449558155429704,0.362091408390621,-0.0814136786325701,-0.065049525862975,0.108410804346417,0.36664880441196,-0.0248384624155309,0.11788160637379,0,-0.0179017316850846,0.118384926968933,-0.0662994924346503,-0.280847036579851,0.436817957442941,-0.0878175610501189,0.0300375488879307,-0.292024142812573,0,-0.147553603503597,-0.598664367990386,-0.406509507397312,-0.198656152818545,0.142608303693376,0.458262020159622,0.460675347648771,-0.0632455885295773,-0.0426580741000145,0.0196372161916664,-0.0602291578603759,-0.192513407227667,0,0.198727197856698,0.357173589297831,0,0,0.476377016667147,-0.143398571318287,0,0,-0.777105081576816,-0.575943757115147,-0.328716151110202,-0.00323781217229308,-0.487776905976103,-0.354883396354325,-0.928612881051089,0.125659363231971,-0.151296545538607,-0.0986013091251948,-0.0331483249214633,0.0401772878240766,-0.122679656346792,0.0238615799218964,0.0338459881158284,-0.151110204246675,-0.0892701556092449,0.330794985219961,-0.0968357521216454,-0.13743340368281,-0.726906593838427,0.942366368349497,-0.0444336863545065,-0.0453188296834395,-0.0469230309097549,-0.281857488421837,0.0130401126659073,0.0643650368776583,0,-0.167181943121981,-0.66720474312168,0.147011387879025,0,0.00212328549624338,0,-0.110304030001908,0,0.0932025162497365,0.147075671127735,-0.155154890235352,0,0.386694765775169,0,0.0350556686354768,-0.513222601236527,-0.0868139746904807,-1.05532740159773,-0.736933269858357,-0.324135391201473,-0.347918201077229,0,-0.283146937279903,0,-0.597325120195329,0,0.332219605379499,0.57435932000717,0.445085893364611,0.610122956791773,0,0,-1.01253639062101,0,-0.0484983906245862,-0.889237465276653,-0.128241021907592,-1.48661011860267,-0.300492378141152,-0.340947174758472,0,0.107800273615625,0,0.121776546711493,0.150898582933193,0,0.0502539228698731,0.0313269366693287,0,0,-0.0139102178261963,0,-0.124901919194802,0,-0.458780945547643,-0.400253734038488,0,0,-0.522944408370246,-0.340713722280935,-1.04009092855294,-0.0543249774966399,-0.155369022291695,-0.196050244285025,-0.128373692968269,0.218145058678499,0.0924853723259442,-0.0785427000495346,0.10303680798174,-0.15827538014067,0.0993827064599577,0.0808084022346267,0.0355361780510881,-0.136390269848268,0.274653876149689,0,-0.942103886701594,-0.231862836893566,0,-0.6747798246203,0.205494551853519,0.306484941194008,-0.0131451569510859,0.0836707816958258,0.153701343154277,0.0411552659786441,-0.132145942743183,-0.0481108982738462,-0.170229053597405,-0.00958594458954288,0.0170129626909789,0.250724039171377,0.191840230516307,-0.0988663969200327,-0.0313466838151797,0.00164415790225069,-0.118843803507054,-0.0750280741950921,-0.0434952955954472,0.105099523053191,0.556337191508231,-0.0402740394743693,0.126202709024846,0,0.359831769999977,-0.146363061461854,-0.377285659906433,0.354758077319311,-0.132013060893779,0.6495515345955,-0.00660498676940853,0.52348311789204,0.0130440378092345,0.105238756348326,-0.0090878301275155,-0.0444266514572731,-0.13488020506158,2.18142392887858e-05,-0.733705485848196,0.801106334681355,-0.0431561130687969,-0.701341943761651,-0.161535272700685,0.731615381845822,0.234005172261147,0.120774231068052,-0.0301740310667479,0.13518568339409,0.184178241269031,0.597120381426023,0.143848017067631,-0.040698195924654,0.362256440890774,0.305761441726939,0.106391382130965,-0.0952130714526943,0.0484486006210684,-0.0912449630199716,-0.153380470265251,-0.0225470048540889,0.516536710013483,0.412107539464525,-0.206137100300608,-0.106066106271292,-0.0760617879458246,0.0353966294351817,0,-0.0524010593865093,0,-0.225065536329661,0.0813522448533351,0.0416424204306774,0.019402079557359,0,-0.283245681196631,0.16140697535615,0.0227739500876074,-0.85331846599869,-0.114423028229054,0,0.176367575329226,0,0,0.10299056075288,-1.0665369487644,-0.280204323289092,0,0.455644709138209,0.865395984923971,-0.0308550797417507,-0.121868567686861,0,0.157912641285635,0.565151129099035,-0.119757657257909,-0.0240155116183876,-0.0805983731812401,-0.861814552536922,-0.0180833799939642,0.541958724915041,0.126076473203829,-0.038989548063078,-0.0797186644604088,0.116339754094455,0.0122024955515499,-0.0608155396579778,0.120535262309954,0,-0.0254940493523666,-0.116335305287959,0,0.153185662042643,-0.0540480875796731,-0.100266960007959,-0.869268511900789,-0.47095616544759,0.468997602169553,-0.417119649319248,-0.576308368415615,0.150492349784866,-0.620183353274157,-0.915198348009519,0.769547254167999,0.287877139333162,0.0466705305216856,0.249096013180607,0.0783797984806996,-0.0592422513723344,-0.668248873349593,-0.732105385223532,-0.704926124475932,-0.0707558204101669,-0.0266717970238569,0.578855524411778,0.813861442251582,0.337054388228273,0.39929753070524,0.0664642442738887,-0.0726992286576676,-0.0436399181901392,0.074524287245819,-0.578112951329137,-0.359847662626412,-0.309028274622295,0.0324250829869919,0.0606453476306361,0.0981367827472829,0.170960848884285,-0.159771089001117,-0.00694222617970208,-0.0580742636292191,0.0526873654783498,0,0.281144246221627,-0.192266523551404,0.0703566013643054,0,0,-0.0450167661606233,-0.253444610837347,-0.189423887347677,0,-0.153801478636057,-0.0682604441773074,-0.0433571283408492,0,-0.264126314296886,-0.00033807840477115,0,-0.4846927469557,-0.050031583016054,-0.0441587008184133,0.0179424709497301,-0.155471065190229,-0.0294612797538532,0,0,-0.700979171136558,-0.202332439866812,0.199048159612239,-0.133452090628632,-0.0629092865378076,0.43005666515318,0,-0.202027980957556,-0.0733814865299138,-0.00442431005256023,0.0860124520236122,-0.603648595225063,0,0.355944973321548,0,0.973309484130177,0,-0.278429688074579,0,-0.15090433497093,-0.140711196630517,-0.112997365544401,-0.401919960284833,0,-0.270135710762328,0.222691922256955,0,-0.214679260279098,0,-0.670323884121077,0,0.478472883807948,-0.141137152971909,0,0,0.0305106300955773,0.076840889353223,0.85390571554273,0.189850604079311,0.0212266911544787,0,-0.093383006879297,0,0.909804624182523,-0.0735820475068073,-0.0584713630425958,-0.0145087253220726,0,-0.226032156709312,-1.06754401555031,-0.856920461933277,0.157070783329616,-0.0346484164246169,-0.266535960528587,-0.213103740048432,0,0,0,0,0,0.016204796289899,0,0,0,0,-0.0144171263101807,-0.0366081723574369,-0.129366735739405,-0.0286819251205798,0,0,-0.12472912278596,0.0548871719014013,-0.0684454072517713,0,0.0917089055123372,-0.0576825622949865,0,0.259898134775731,0,0.871244568084466,0,0.269964544369648,0.712795113641078,0.078744772940809,0,0.0259228401518614,-0.0157820956054137,-0.0810914247138521,-0.122465444637699,-0.543795448105258,0,0.530310340748697,1.23566279894439,-0.342590206231162,-0.671170085891801,0.264786875851374,0.14670187585003,-0.843600474670356,-0.0817724775409767,0.120069364979101,0.704905907881269,-0.390752878081601,0.04201991430395,0.105425513329698,-0.042306964890061,-0.366473244898157,0.153811903470878,-0.347848290147206,0.59687658165442,-0.25569808662917,0.0386025821694885,-0.459446613695067,0,-1.23292497607904,-0.140968686250426,0.166982821237966,0.445706881510615,-0.133027295633018,0,-0.0187932762580991,-0.130024608419158,-0.114141498100552,-0.524575743233278,-0.437627299668787,-0.00346402720171956,-0.14871537465206,-0.313616440808612,0.276321895500937,0,0.0215036255062763,-0.888744519270061,0.0657644835683737,-1.0516632564058,-0.484431071581944,0.881694117540532,0.0041649121887084,0,0.374170300992747,0.0151821473006483,0.501199186490673,0,-0.049151643748484,0.34048983102186,0.78860037078638,-0.497412445315964,0.0990244561337215,0,0.945342464326875,0.0686996044104632,-0.114073428591405,-0.0778025474709797,-0.255084762734203,-0.121230169847385,-0.231406452114146,-0.526477065766938,-1.02060497848972,-0.927385737840708,-0.932807285667035,-0.0824614003770478,-0.161897467591632,-0.0511023818424309,0.0694538011774227,-0.409690938045874,-0.0299341310465733,-0.5254506192048,0.0166352496205136,-0.0706682372095867,-1.05490355310064,0.184255912290081,-0.0899104309633494,-0.0452548328903212,0.171593816853782,-0.054166825305951,-0.0367649035208367,-0.417964766589835,0.064462964662487,0.978242220537146,-0.488088209337888,0.887121065407946,0.265558734256191,0.775798011155638,0.0688750915110545,0.525147283692059,0.77690345095336,0.251851451687299,0.837395307887134,0.232548404622599,0.844377313541174,0.269345619404486,-0.00978440864648587,-0.060555730834693,0,-0.0253619303419487,-0.134099777068648,-0.380710329332679,0.00484991111124219,0.13164154906859,-0.215807710892116,-0.986919144171638,-0.170625127037518,-0.629490173092949,-0.735533960504846,0.0936141210742149,-0.20344657958928,-0.201463655153721,-1.1197669307461,0,0.262413117853534,-4.16992648963626e-05,0.0333248707786486,0.420287051565539,-0.0559910788883234,0.398359563827104,0.0533228850609949,0.131981934361564,-0.0287086545164451,0.0591434556148985,0.40080303714771,0.084714634440445,-0.0664226749673363,0.0536178557223226,-0.655607769624427,-0.0541859800648466,-0.229974393276898,-0.124082579127867,-0.0825249298022383,0.0532528360464565,-0.141567497663915,-0.316326782874649,-0.565108248091457,-0.309909204255562,0,-0.137508746772278,0.0253177731100611,0.399763437291693,0,0.295307758999712,-0.18057242035863,0,-0.556440823632753,0.0311521009346807,-0.0179120142712963,-0.166546298807089,-0.0113695429789379,0.0524755478175529,0.0430778254186221,0.000128506299599448,0,0.417178206677658,0,0.523968293860734,0.691005275492158,0.536059574542016,1.125049850124,0.677586930742266,0,-0.824926974958399,0.168313052804515,0.103416328995462,-0.0524667080054202,0.196547736948468,-1.00941620268376,0.894652862500439,0.237712966402679,-0.373111090471122,-0.148670833238255,-0.654422534639192,-0.787770497966493,0.136032843557379,0.0392003675144551,0.0188798036421363,0,-0.137890594314498,-0.0823946994717395,0,-0.314005951079565,0,0,-0.0464711121754817,0.0838269753034615,-0.117808046033736,0.818357638249903,-0.0977772450768281,0,0.194253052821365,-0.285827361291758,0,0,-0.238632127681651,0.170119029989816,0.322853968793912,0.0223202231347923,-0.0665967915969995,-0.10444068078442,0.0087239634546637,-0.0496012555307781,-0.158591041209592,-0.564237681202961,0.0659890054256855,-0.0272085655446474,-0.0365333622083973,-0.121152129465305,0,0.630739041132712,0,0.0787432175460243,0.0977762951167413,-0.239902999977935,-1.1944522134975,0.321302402328943,0.521536471375585,0.107081790979201,0.869156841743147,-0.53140332450567,-0.0994453508496792,-0.23983468295928,0.0975247726980315,0.422192059488865,0.0119359919014233,0.0257987629196688,-0.0833705244413117,0.0123278543908461,-0.12970038213433,-0.970573948835048,-0.589819512200789,0.348844984078742,0.0898668958454653,-0.0473693609488847,0.0111070406084625,-0.193950187750249,-0.86243869784196,-0.504155481662425,-0.140764567310208,-0.631432115367613,-0.110672638084205,-0.396470786210282,-0.0525496361084207,-0.0868563319486697,-0.0227908530065352,0.367594232492459,-0.0544127960048474,0.0568973071180198,-0.615106528454988,0.328415428593983,-0.212380090993405,-0.837368813004842,-0.511366602635785,0.0233772511882159,-0.0319232442896006,0.0469208844058628,0.21415884236014,-0.00331034262935672,0.158123861319231,0.909457134689338,0.7302367098009,0.83047571943093,0.0200642307007575,0.399536002907722,-0.251404932876717,0.0102269200315847,-0.092526700364288,-0.0277434369322165,0.567135964895607,0.0492460808128452,-0.933144391175468,-0.0794648986518345,-0.00989162590664148,0.0180975807122447,-0.0521725256815506,0.520249484042763,0.50843749514606,-0.386273415772652,-0.339601963428082,-0.0343118886172586,-0.284389408765359,-0.0184895364271778,-0.113078114049977,0,-0.745610953445739,-0.633464470885911,-0.958427270654187,0.916924583634271,-0.140760222748711,0.250533178101493,0,-0.019846209219707,-0.023349571101158,-0.0214256589880519,0.0728652552733622,-0.154055775169455,0.12545886467049,0.30103994575559,-0.486252754016715,0.083734229815576,-0.0341342833705248,0,-0.663398884427393,-0.225292611359598,-0.942789323826649,-0.477077124028532,0.245090728206902,-0.434395776912348,0.831281979745891,0.225104088661097,0.0806325036930735,-0.0431700391503386,-0.0294887036556208,0.0340372781887674,0.148017201406529,0,0.150625861847517,0.033677575324749,-0.826425349757489,0.0977749571245916,1.03086517359601,0.177824847059731,-0.239328507990161,-0.506722902973257,-0.358082250093764,0,-0.0730406399024423,-0.0232303238078061,-0.107299335260761,-0.0962474226631575,0.0279442850252604,0.690255840734672,0.369918214343749,-0.0923319136788121,-0.0213483641936414,0.00832008863660739,-0.00119305984734185,0,-0.0439374837310688,-0.0566221414808736,-0.0028913434244624,0,-0.076756202399977,0.15366474673563,0,-0.551064944071804,0.461035244207992,-0.0954966956895903,-0.0775954831574046,0.145309574837448,0.470360264960127,-0.0241571912383219,0.153147437959059,0,-0.0162818165521566,0.155346445928711,-0.0767227130165525,-0.34696695044372,0.555587781327064,-0.102482987884994,0.0450548326798643,-0.357035906855288,0,-0.17033351790387,-0.73572824931301,-0.50322997674106,-0.245113766994335,0.189110727448049,0.580430494035938,0.586448949062756,-0.0760867326929215,-0.0485927462478893,0.0293898883431051,-0.0680935765634665,-0.233321735502933,0,0.258090422143242,0.471868213542614,0,0,0.609292916420828,-0.1660700852673,0,0,-0.961409998696098,-0.692853112556531,-0.403659025931738,0.00289093116507041,-0.604537965225537,-0.436619609242586,-1.14511156841769,0.165687668621174,-0.18196966302158,-0.116811584219806,-0.0360962250240716,0.0581844804253812,-0.144791394393539,0.0357742764970556,0.0476292872662752,-0.174583199401576,-0.10762618549605,0.421247258489371,-0.113641992264567,-0.164742411292447,-0.899569309969321,1.18960160466289,-0.0487860600463846,-0.0530492801943869,-0.0530561803370559,-0.348024025370688,0.019064810237703,0.0855482840363935,0,-0.203496890568997,-0.819939645397705,0.191258213154606,0,0.010430321128848,0,-0.131236809162154,0,0.127184425760397,0.197537658144924,-0.183096458778663,0,0.491714652039024,0,0.0534766475687594,-0.616483884674405,-0.101295879316286,-1.2974501004141,-0.910939988830135,-0.38229080017196,-0.427779132381312,0,-0.345729145426997,0,-0.73288782303889,0,0.428243200214677,0.730791602010788,0.571884067548676,0.773502695499814,0,0,-1.25747115756689,0,-0.0367554125419607,-1.10326794823092,-0.152697301404314,-1.82736480268818,-0.35796437198283,-0.418707917582824,0,0.140815783437514,0,0.157862770443646,0.192186139823852,0,0.0723527941428385,0.0455753094076712,0,0,-0.00848458829965474,0,-0.14923007162638,0,-0.565345885525666,-0.489569842491114,0,0,-0.638550370248557,-0.400342527063082,-1.27895472812529,-0.0641506733784295,-0.190984613198752,-0.239219811444592,-0.149573442582887,0.277716923112384,0.121247627726075,-0.0907655095053139,0.134865215549473,-0.190149418520966,0.136093990420665,0.107422944214436,0.0517443466350888,-0.16342241370448,0.352870710719664,0,-1.15178790592231,-0.283508695177691,0,-0.829168092289507,0.27877783006528,0.393370371433627,-0.00958990659605071,0.115033616747456,0.199140612400636,0.0595750080123857,-0.158693332446499,-0.053351217793571,-0.206865861482717,-0.0075924596880695,0.0275191977350945,0.32159345327615,0.247334215581632,-0.120028340585273,-0.0351610951021539,0.00710622151511744,-0.14437359890298,-0.0886324672447293,-0.0471343029127935,0.136676581351966,0.706685483875646,-0.0424027362618841,0.166356897253489,0,0.45945335530054,-0.163706593591604,-0.461442001177138,0.451652006038789,-0.157713652975534,0.82089266445343,-0.00617631883650895,0.663956148164185,0.0239048257892714,0.132223860989454,-0.00546263299099226,-0.0492806116440766,-0.158013895867897,0.0194404927201544,-0.894499190781243,1.01396418512436,-0.0497223341512994,-0.86529053597831,-0.188137245932756,0.926263318703585,0.302362948868473,0.169971912914264,-0.0257161608488788,0.184295511813185,0.239437599255719,0.758368329214525,0.188683726972146,-0.0440400393523428,0.461002560553886,0.390988105146714,0.141936698171053,-0.112809373417271,0.0668940696118877,-0.109253584821346,-0.187436123904889,-0.0215006802006228,0.655202521188586,0.523497731459446,-0.254985526390446,-0.128069999528949,-0.0893740223473731,0.053074279834725,0,-0.0591913924668664,0,-0.2696113017556,0.108168736571226,0.057764096730293,0.0295223461137273,0,-0.349696282306736,0.207384493723094,0.0352805207799333,-1.0568094109419,-0.136800518071622,0,0.225704436951133,0,0,0.135052740468966,-1.32422792883122,-0.347293380768713,0,0.581017094054079,1.09369807138163,-0.034859918843282,-0.138704608153391,0,0.212922107036971,0.720368537868677,-0.145751678451836,-0.0236669676595395,-0.0979245639620093,-1.0508130625524,-0.0138070680970203,0.691938021736513,0.166959410278724,-0.0442574359065426,-0.0924601995657848,0.153190812880994,0.0194915377750619,-0.0665646847547164,0.160023348016643,0,-0.0268772075099411,-0.138306757403082,0,0.200902978056021,-0.0582054898505683,-0.119680085299254,-1.0693392969496,-0.577293215299757,0.598489428728714,-0.515558237229592,-0.704765479096636,0.214937360610198,-0.7665095637423,-1.1264244985727,0.97111610696272,0.368248079037538,0.0643980901602363,0.322718805024715,0.105134619907564,-0.0675679965385354,-0.822153194657165,-0.904582272592222,-0.868689369012864,-0.0716051103562639,-0.00985721508521131,0.733238227671041,1.0273109520173,0.431581540324914,0.508500230468247,0.0885015022244406,-0.0879111591778031,-0.0446019688479955,0.104402144266395,-0.705315625011597,-0.424063053310446,-0.379840197544429,0.0489401731342407,0.0819358495871337,0.128489051828956,0.220201023144807,-0.192556309098317,-0.00462242058390253,-0.0678919127302595,0.0707556336543602,0,0.363481091704399,-0.236995510799456,0.100376771176839,0,0,-0.0519074432143233,-0.305144618979275,-0.230588432682599,0,-0.181496757390078,-0.0768510271271824,-0.0472762836181843,0,-0.314895310664617,0.0108506475169075,0,-0.590721089211956,-0.0565861944148237,-0.0504318042370961,0.0304473087602848,-0.187641083796174,-0.0304924763424212,0,0,-0.860580864090584,-0.242553394850966,0.259787535289017,-0.15980573436752,-0.0694070440376548,0.56316519758906,0,-0.24684586504787,-0.0809153983280307,-0.00305066837738687,0.109135696544067,-0.748930064292635,0,0.458195418303993,0,1.23165777499153,0,-0.334625478827844,0,-0.180244172628264,-0.172594388665775,-0.138699867831125,-0.494487015838165,0,-0.330711585730583,0.295478775648953,0,-0.259532222197619,0,-0.825891908039111,0,0.611998807972861,-0.162919847486875,0,0,0.0445812395628717,0.105583093649878,1.08097847224736,0.250789305111923,0.0354994404823506,0,-0.103801078616402,0,1.15178081735232,-0.0887745075456881,-0.068917332677926,-0.0169645349147688,0,-0.268837412400638,-1.31680170861062,-1.04552573962618,0.204580460341996,-0.0363611174703931,-0.323425049790031,-0.255336184671875,0,0,0,0,0,0.0250698469501578,0,0,0,0,-0.0138883833606656,-0.0404028285627347,-0.137863862390854,-0.0287390826815042,0,0,-0.14495014304883,0.0737754672457968,-0.07022511980847,0,0.115299282462659,-0.0651390522675706,0,0.318740713679734,0,1.05471964715546,0,0.332435732859851,0.864424939512289,0.0996290064349924,0,0.034301845320123,-0.0154161459811197,-0.0929332107237629,-0.145552589751126,-0.649300927037277,0,0.646550620727159,1.49018639743986,-0.39882465374376,-0.793060695635477,0.324473409260238,0.18420770716867,-1.0059423285264,-0.0923324893594892,0.150006383062647,0.852093539655724,-0.446947903449962,0.0569397796654503,0.134555453012841,-0.0470006933742143,-0.430819894577705,0.194425980741758,-0.411913463108953,0.730364476910842,-0.300781840811617,0.052303006627756,-0.547424821360478,0,-1.46268233342134,-0.163110512255897,0.206487375857824,0.542120315605677,-0.151155739823048,0,-0.0177391761519072,-0.153360499697752,-0.133133001912665,-0.61413097943619,-0.522078771149529,0.000378736846467116,-0.172594445247654,-0.368928773076214,0.339005942953339,0,0.0300729760766332,-1.05113658065904,0.0966530109912713,-1.24636434130702,-0.562690560264284,1.0668175520178,0.0114084614000444,0,0.458141122036438,0.0234982894674967,0.606942635021702,0,-0.0549861371791445,0.418055228026649,0.955080488985487,-0.594217250307933,0.123254634961365,0,1.14414469625769,0.0840887067696709,-0.134573330068714,-0.0880675347549072,-0.301553798390208,-0.142837920748414,-0.272910259942842,-0.627410604284256,-1.20400996222011,-1.09757528067706,-1.10857004232516,-0.0945838929987057,-0.190118063253037,-0.0590185827440335,0.0878846522517898,-0.48711414588792,-0.0323351234024621,-0.627317309261545,0.0243132653396269,-0.0803643912031609,-1.25069619344784,0.226851474868234,-0.104363257186896,-0.0515584832914258,0.213236204525351,-0.0597523524096045,-0.0393656760866744,-0.480858067597056,0.0841512630754445,1.1809242761146,-0.575910593561686,1.07239327697948,0.326611715439538,0.93873198942598,0.0873750468752119,0.638939840828546,0.941536289616463,0.312606516638557,1.01303215347738,0.285170912978955,1.02187805768272,0.332264872983236,-0.00650970257599311,-0.0666133914046103,0,-0.0265978399721959,-0.155024198885755,-0.446198436811467,0.00995591815365852,0.164239229901864,-0.243262111817635,-1.16325541762227,-0.20091958109822,-0.743248263235117,-0.875283150837371,0.117626500081292,-0.242050074002064,-0.236669232484697,-1.33574976817583,0,0.321780459826705,0.00660248762289053,0.0457983944048133,0.511596719066407,-0.064500911283211,0.48466269931953,0.068906313712676,0.163845467268067,-0.0294238832915967,0.075268839979005,0.488231136237259,0.107599321037615,-0.0741974415861638,0.0691145054950395,-0.776658625293875,-0.0611187882455631,-0.264619737711228,-0.146302458005717,-0.0936796886838517,0.069524212995398,-0.163667126380225,-0.367499580287576,-0.672024178957565,-0.364347368234535,0,-0.158148061516361,0.0361892334937751,0.489110051127922,0,0.364074147646392,-0.211653228526439,0,-0.64948818249148,0.0418643606943109,-0.0148274647101295,-0.184005251839021,-0.00920955199906884,0.0652010105912169,0.0569393513394779,0.00461020256372457,0,0.510186457860024,0,0.636585366897554,0.841580661055046,0.651314872292162,1.35622472621185,0.820774105780199,0,-0.97516102566652,0.208544165092991,0.129861179538192,-0.0597780825297866,0.24251879438353,-1.19104149712924,1.08080014767963,0.293715119996104,-0.442415433624685,-0.174757969926796,-0.780977409104085,-0.935483524879486,0.168235318956935,0.0470802644120317,0.0243826534669275,0,-0.159691572979704,-0.0919373462554701,0,-0.365750742531826,0,0,-0.0423469009839248,0.107837461738511,-0.132907693197761,0.994004348640144,-0.110175300321495,0,0.236678176159338,-0.328327832990025,0,0,-0.276151804996163,0.211788111318071,0.394997387654051,0.0334944272618778,-0.0741733352695525,-0.122662034121826,0.0165221403706941,-0.0553764579797974,-0.1847442558926,-0.669991936385696,0.0839337468022319,-0.0289224841127392,-0.0404728877487732,-0.14258433071483,0,0.765103592365496,0,0.105220435724681,0.125943621528628,-0.271683562701177,-1.42494007945901,0.39329876609746,0.634079864007151,0.135330745782467,1.050184158513,-0.624885089289357,-0.116514191087993,-0.276613546144098,0.127518153080188,0.520335640761368,0.0185623951178384,0.0375561123965169,-0.0959749244059928,0.0185810452010305,-0.15160384165005,-1.15061854069989,-0.700614479534391,0.426321913941415,0.113838301858837,-0.0515363710700769,0.0176100943612825,-0.227186497776476,-1.0205892317391,-0.601839004918478,-0.164025361958664,-0.753648605075854,-0.13027499684426,-0.467750706148366,-0.0570155607824836,-0.0998823757691601,-0.0236790683320068,0.448551033086854,-0.0583117544583687,0.0735543218282011,-0.722445320817795,0.400844199944936,-0.249308755177079,-0.992963383279156,-0.592524967032776,0.0334162114854583,-0.0335410723431177,0.0611841578312673,0.263740161939718,0.000839120694015917,0.203928379801982,1.09931657444931,0.883161688248844,1.00716799220127,0.0323260320741216,0.485847114314824,-0.295954521193266,0.0165628013841651,-0.105763620474289,-0.0291200573705714,0.68834388153939,0.0651206534472991,-1.10420043787537,-0.0904952571529998,-0.00621561102323392,0.0265195054873667,-0.0600277154634163,0.631368685805421,0.619464830092751,-0.45507385609029,-0.401908930757499,-0.0380470669243318,-0.33843418969921,-0.0173873664497969,-0.13274792722636,0,-0.888925387761943,-0.756277710866309,-1.12900930475418,1.10910895659245,-0.16318636187207,0.307843822818549,0,-0.0191676910835564,-0.0226498044439662,-0.0220643649859026,0.092252710552427,-0.18218899513885,0.15773501683699,0.371039751384541,-0.562257087676832,0.106833514774711,-0.0352913723747544,0,-0.791223519649756,-0.265600839710185,-1.12042967950217,-0.563531787807167,0.301215198431609,-0.502677196098763,1.00700887709208,0.281799975948005,0.104714951531457,-0.0457765892959203,-0.0306581059824624,0.0465929452144333,0.183766643346281,0,0.186975863590181,0.0444967191628982,-0.977355757722323,0.122693877400305,1.24650478464234,0.218438447978127,-0.282139454656496,-0.604938681751076,-0.425330142919193,0,-0.0832134228056926,-0.0243195892190656,-0.126552681873866,-0.111787894239236,0.0390571138406923,0.835589107029103,0.451383916211578,-0.104491673024051,-0.0179706021050333,0.0181065196000917,0.00269409259736722,0,-0.0462121027168576,-0.0626632921848622,0.000217464647668297,0,-0.0860824782020281,0.189185625090691,0,-0.652181996779147,0.559817536121473,-0.109651409746026,-0.0904938387749794,0.182338899545355,0.572908848049543,-0.0234851868582287,0.188098015266776,0,-0.0148505017669046,0.192515775322154,-0.08704989573361,-0.413544821999152,0.674308752698985,-0.116952052190325,0.0601246427228617,-0.422079252201917,0,-0.192994047482878,-0.872802500140517,-0.600550002674039,-0.292128964227757,0.235897944562313,0.702347817352873,0.712268706360528,-0.089428599146243,-0.0545793813774772,0.0393325928914028,-0.0758222224672053,-0.274317034827217,0,0.318644872030127,0.585292165450757,0,0,0.742875047603583,-0.1881375290794,0,0,-1.14585850829496,-0.80835579087349,-0.478749163002719,0.0087841771241306,-0.7217017033014,-0.518604895226798,-1.36072003064808,0.205901204281648,-0.212769860726666,-0.134997380210148,-0.0390664299796492,0.0763990678889378,-0.167025409453941,0.04775897732394,0.061736052722198,-0.197813503123206,-0.126326806008453,0.511027487932059,-0.13024774024003,-0.192229414957603,-1.07252584481645,1.43580859849118,-0.053029125068857,-0.0611140124301897,-0.0590371053526183,-0.414745454640295,0.0249309669000119,0.106899407251543,0,-0.240039338143188,-0.972115663992582,0.236214431950141,0,0.0194177623534662,0,-0.151501867528918,0,0.162095690888558,0.247849381545662,-0.210864914599026,0,0.596739825145069,0,0.0721165492805092,-0.718880561134327,-0.1156438861178,-1.53799221679057,-1.08460004779188,-0.439979516857882,-0.507415720877539,0,-0.4079070838197,0,-0.8674754104357,0,0.524229118088584,0.886257953272494,0.697183317964097,0.936672270764526,0,0,-1.50335300170197,0,-0.0247653219033088,-1.31782282830115,-0.177074114255604,-2.16630553547574,-0.415121738999649,-0.496760401553766,0,0.173632970030705,0,0.194018381829425,0.232782195189717,0,0.0946145403794782,0.0597736486427198,0,0,-0.00225571600350735,0,-0.173177279698014,0,-0.671407976406675,-0.578123899142194,0,0,-0.753265648320679,-0.459701841490716,-1.51648612168529,-0.0739339754282489,-0.227119071882092,-0.282921609969506,-0.170567365688331,0.336891665593083,0.149535605290459,-0.10281810588033,0.166650591756814,-0.221829361709896,0.17234576955764,0.134107785279881,0.0680581995580447,-0.190561144267754,0.43122752836928,0,-1.36060087659629,-0.334916870233987,0,-0.982958920308286,0.351505964010362,0.480226952039939,-0.00594947937209627,0.146744697237125,0.244746597455588,0.0783284546612106,-0.185575152424744,-0.0585370514535065,-0.243877207080364,-0.00565464410415046,0.0384002773500081,0.39304969545235,0.303403817926299,-0.141571487461158,-0.039054135130853,0.0127401896801649,-0.170577243981787,-0.102174465506004,-0.050559641338037,0.16790376788946,0.855507053417545,-0.0442742121757267,0.206215978655661,0,0.559375533267178,-0.180628460091288,-0.545644832514216,0.549149577231508,-0.183464870194177,0.991946914952609,-0.0065318004636469,0.803667593175137,0.0352931732770709,0.15847879349909,-0.00182194201626826,-0.054243928089337,-0.181010939709569,0.0385895625092798,-1.05382420302681,1.22818176330262,-0.0564580170387894,-1.02901689944438,-0.214286602496237,1.11932746011466,0.370419176658508,0.218723153558172,-0.02140355160663,0.232009154681534,0.29499206373686,0.91932285287428,0.234465451620938,-0.0472009512120248,0.560003397191124,0.476619032414314,0.177582848168612,-0.13047090219228,0.0855872491642387,-0.127245635792093,-0.221341530600411,-0.0202651596337168,0.792873654867991,0.635310282318644,-0.304877707249203,-0.149957748172389,-0.102681755045079,0.0710933366469913,0,-0.0660738034654657,0,-0.314253350651217,0.135528916937077,0.0740589726869236,0.0399542947165117,0,-0.417262286951265,0.253091527792324,0.0476491015104696,-1.26053339568129,-0.159378276320241,0,0.274782559185881,0,0,0.167269885063397,-1.58241431950637,-0.415027894496082,0,0.706867109270758,1.32098147161837,-0.0393715862801971,-0.154920171528111,0,0.266771376984233,0.874148675489191,-0.171962703724554,-0.0233574121120498,-0.11495043683889,-1.23793216065596,-0.00950562044882661,0.840731637610844,0.208284203847213,-0.0498973530963574,-0.105090781917688,0.19002757292065,0.0265077427926592,-0.072511185871885,0.200539986165828,0,-0.0283219397503886,-0.160461529477006,0,0.249056774002233,-0.0618671379948001,-0.139606103087741,-1.26852062639715,-0.68308214673059,0.727377095088527,-0.614326009363438,-0.832952979568414,0.279628968826996,-0.912781301845498,-1.33671301344195,1.17273383292832,0.448816085999454,0.0821192647136869,0.39691360970529,0.132182576605273,-0.0755505645055494,-0.97556287165242,-1.07687888791715,-1.03219112735895,-0.0723065391837675,0.00659996350899591,0.887569755111149,1.23976034932441,0.526428846444589,0.618333325759676,0.110876984090534,-0.10346762447286,-0.0444791836799427,0.133635097304866,-0.831670490065466,-0.486915933042193,-0.451022934211054,0.0656929769543679,0.103614699991376,0.15890728206492,0.270188555162933,-0.225367454969513,-0.00241222043569064,-0.0778020583742692,0.0889187844490843,0,0.446482473724337,-0.282294528582845,0.131636587637463,0,0,-0.0583600004615865,-0.356130197547599,-0.271348844109062,0,-0.208135020430367,-0.0849722042149198,-0.0514977810036934,0,-0.364127460569275,0.0227878442478463,0,-0.695807025074975,-0.0631929516299636,-0.056672787044279,0.0432185099290135,-0.219926243804569,-0.0317649266533034,0,0,-1.0195690905693,-0.282293031221961,0.320407607599136,-0.186232021646586,-0.0767043584150953,0.695319264868082,0,-0.291936030584998,-0.0875712437395711,-0.00215843628971514,0.131852620393632,-0.895394951683339,0,0.561572665512802,0,1.49068827321554,0,-0.388979052841568,0,-0.208582145095422,-0.205063673789951,-0.164950712146963,-0.587120911234783,0,-0.390626403195316,0.36794975710389,0,-0.303703532061849,0,-0.980978393550846,0,0.746514222883401,-0.183887557656224,0,0,0.0587517869710126,0.135412389046611,1.3086257238204,0.313209427156936,0.0498866271974563,0,-0.113106010746168,0,1.39395925572354,-0.10499233126015,-0.0796828952929449,-0.0202915431784072,0,-0.310728045332431,-1.56465548320912,-1.23298071008651,0.25254162895712,-0.0380009032670785,-0.380355850532429,-0.297365780451381,0,0,0,0,0,0.0338603295460507,0,0,0,0,-0.0133732879338383,-0.0441668432403272,-0.146473810620558,-0.0287942940102139,0,0,-0.165151104109743,0.0933000194616033,-0.0719710188526199,0,0.139193785106327,-0.0726915039116989,0,0.377860390911262,0,1.23853188172034,0,0.395737416811431,1.01634998603973,0.120679903453755,0,0.0427692207875735,-0.0150747395522278,-0.104782416881105,-0.169036422212142,-0.755249504354785,0,0.762892960736929,1.74330685939646,-0.454476722764185,-0.914524090471275,0.384288913922369,0.221793671179319,-1.16821232629205,-0.103037626666606,0.180005005243512,0.99810375582335,-0.502817610942299,0.0720652410877483,0.163909973829172,-0.0517320649653134,-0.495104718581355,0.234951164625533,-0.476144691039638,0.863608884666709,-0.345958943769492,0.0661476626172678,-0.635597652729595,0,-1.69151032849259,-0.185203168802836,0.246387585084485,0.63865873645244,-0.169196002905212,0,-0.0165892600009309,-0.176952879499164,-0.152221337376859,-0.70307382726192,-0.606914229736394,0.00407675737244527,-0.196677693545674,-0.424098625164157,0.401878744402089,0,0.0386425351791595,-1.21269878757578,0.127620596427359,-1.44014714726634,-0.640554855660343,1.2506737106898,0.0187885982370285,0,0.542297524107444,0.0317984574434626,0.712524588615294,0,-0.0607881341523238,0.496443861146775,1.12135018350415,-0.69162424316441,0.147623318278932,0,1.34343988045452,0.099298827115022,-0.155422387229032,-0.0982452363269225,-0.348064657565744,-0.164708632590803,-0.314772345191782,-0.728667390560729,-1.38636313169288,-1.26629428132695,-1.28399971274719,-0.106828115978096,-0.218472535585182,-0.0672648102351441,0.106619715998378,-0.564786967435729,-0.0347283923229955,-0.72948796237051,0.0321320129808733,-0.0900452062487028,-1.44564345133425,0.269735171861197,-0.118983198429567,-0.0580642767074377,0.255155431037217,-0.0653775817882879,-0.0421061152238086,-0.543217337510107,0.104099029447971,1.38338036305185,-0.663517234391287,1.25714016929603,0.388330262957531,1.10159846719954,0.105825213859709,0.752003821773245,1.10470836169945,0.373058917681375,1.1885351686183,0.338247467785912,1.19808103839954,0.394899015365089,-0.00319032230591293,-0.0725719376071956,0,-0.0277219368619966,-0.175934443288487,-0.5114423020824,0.015127609475896,0.196898943014529,-0.270352190658594,-1.33822695748512,-0.231476168630476,-0.856767549040374,-1.01499799003874,0.141681568840597,-0.281246170333855,-0.272043979684492,-1.55141597944615,0,0.381021229529077,0.0134806351914173,0.0585193996499437,0.603413530254109,-0.0733006018294972,0.570997132776079,0.0848135457804177,0.195954250509662,-0.0300540416730442,0.0913508996913465,0.576001235132611,0.130667608195835,-0.0820360474313463,0.0849014571049099,-0.897425453467507,-0.0680546825753356,-0.298986471649607,-0.16895511815011,-0.104833891486998,0.0858244626880817,-0.185812612642234,-0.418171225137594,-0.778846591260656,-0.418878933921317,0,-0.178636653028262,0.0472449047214133,0.578924347400743,0,0.432799392482961,-0.24244321190392,0,-0.741720893003733,0.0528333552225983,-0.0115138385412431,-0.201178861864193,-0.00721887999144147,0.0778503428923689,0.0710155962590377,0.00921043578321422,0,0.604029542431931,0,0.749304243364525,0.991741708890863,0.765195085545266,1.58650140634625,0.964114533876112,0,-1.12449935126848,0.249323530085215,0.156745031431371,-0.0671628426917961,0.28876803012979,-1.37207256856268,1.26627509344428,0.349501990235197,-0.511777929436837,-0.201031933682374,-0.907662769822783,-1.08284724317436,0.200544328618888,0.0544127399786965,0.0291988465263407,0,-0.181188784031369,-0.101202582953829,0,-0.416588666640808,0,0,-0.0369637067010015,0.132124681630492,-0.148258440733666,1.16980925910745,-0.122254605238407,0,0.279089712476377,-0.369629074980901,0,0,-0.313244205038431,0.253765253286317,0.467223374066065,0.0448915411558007,-0.0817719491964076,-0.14118850461115,0.0243643763696339,-0.0611767878412523,-0.211080531674637,-0.775653310733921,0.101991701611677,-0.0305298948349041,-0.0444824521890405,-0.164277670128737,0,0.899565099796628,0,0.131952831597705,0.15477990804083,-0.303334882433768,-1.65542307502467,0.465557312626365,0.746979370120486,0.163709626882544,1.23060239413956,-0.718031948376848,-0.133846635794718,-0.313043831754343,0.157387765812442,0.617493203598618,0.025168025786524,0.0495358674801538,-0.108599374126821,0.0249605495578339,-0.173710562832197,-1.32982767825648,-0.811278982823727,0.503399789180635,0.137895047417773,-0.0556562705301519,0.0242133032673027,-0.260702019252705,-1.17815185506229,-0.699929845479585,-0.187352702708306,-0.876188414117212,-0.150189970778098,-0.53907404502908,-0.0613621207862419,-0.112950221804343,-0.024554536507442,0.529598391497785,-0.0619620294563172,0.0901804792727165,-0.829221068432258,0.473587841693032,-0.286405401221986,-1.14801443534895,-0.672886224057623,0.043845970000164,-0.0352772896923413,0.0757463185654235,0.313757757409014,0.00490692159786793,0.249339320177174,1.28889671374827,1.03555897967086,1.18261659615823,0.0447589440303778,0.572578347550147,-0.340598051235059,0.0229150555281031,-0.11895281908203,-0.0304766525124231,0.809289720730026,0.0811051130466473,-1.27449822924755,-0.101687271348041,-0.00226532212886321,0.0352289394471447,-0.0680996677884421,0.742787184370475,0.72994882482305,-0.523783386602577,-0.464356105786258,-0.0419049338657148,-0.393029174369275,-0.0162913037336211,-0.1526468002957,0,-1.03229707411506,-0.879244267238158,-1.29835706847535,1.3005096486605,-0.185708243560895,0.365213001900642,0,-0.0185325969576086,-0.0218674020975606,-0.0227493437397084,0.111899284906818,-0.210664219763861,0.190284966058599,0.440621445318886,-0.637320735474902,0.130294867636767,-0.0364539369835771,0,-0.91924262897058,-0.306131797297616,-1.2976076742728,-0.649950346285175,0.35739921739816,-0.570099854802765,1.18142786431431,0.33744896041228,0.128721217733329,-0.0481804301899915,-0.0318201637310534,0.0592435025432958,0.219682905606177,0,0.223395064223464,0.055381964651286,-1.12743149737497,0.148001375990577,1.46164314308176,0.259056682592301,-0.325192183150973,-0.703634394619951,-0.49274188705897,0,-0.093171455105392,-0.0255789862081041,-0.146196745432793,-0.12736168797105,0.0501149498664636,0.981108048545197,0.533216257303131,-0.116555789413878,-0.014273822941171,0.0281126865121322,0.0066505692490812,0,-0.0482533647868743,-0.0684761016658008,0.00343380333633438,0,-0.0953099427011544,0.224702247795254,0,-0.753053459242212,0.658447128549677,-0.123863828009072,-0.103680683290532,0.219409111803174,0.674452224081423,-0.02283092016662,0.222399351676436,0,-0.0137612261336055,0.229965589691543,-0.0972954140534347,-0.480466454914313,0.793036216240952,-0.1312303546732,0.0752451753638664,-0.487095931041842,0,-0.21561442790072,-1.00953971614679,-0.698467679303879,-0.339490224583626,0.282982823996988,0.823981685309773,0.838334418124699,-0.103181032369319,-0.0606255824036946,0.0494483253651915,-0.0834257390310934,-0.315505289575233,0,0.379774116757756,0.698614551667776,0,0,0.876464106634515,-0.209912550008885,0,0,-1.33056156834788,-0.922694462516413,-0.553791472391568,0.0144491148346307,-0.839188115431389,-0.600729803858489,-1.57557188700857,0.246274264931352,-0.243682166172153,-0.153148970824897,-0.0420464649010998,0.0947840755504848,-0.189381847272391,0.059823564099681,0.0761070307624736,-0.22084761898901,-0.14529704281651,0.600281556502518,-0.146693652803417,-0.219877049827861,-1.2453744938451,1.68118089784799,-0.0571717877626326,-0.0695099450519704,-0.0647946327516616,-0.481925810196589,0.0305631406975613,0.128404289409106,0,-0.276526953053379,-1.12388610184055,0.281738143681341,0,0.0288254434157505,0,-0.171481218162575,0,0.1975938099841,0.297936559613632,-0.238435674246383,0,0.701698459175809,0,0.0909660548468156,-0.820236112673467,-0.129892368730589,-1.7772686510133,-1.2581329374397,-0.497346788800454,-0.587104155092025,0,-0.469915262933297,0,-1.00141854230622,0,0.62000911225672,1.04087294415577,0.821136322982791,1.09988234210844,0,0,-1.74990522544308,0,-0.012763345301835,-1.53290483990919,-0.201371499743532,-2.5032393490692,-0.471930816616504,-0.575093450659083,0,0.206224863989955,0,0.230210005582002,0.272643886546046,0,0.117446436671522,0.0738284133533365,0,0,0.00415017671334507,0,-0.196984190120268,0,-0.77709026761552,-0.666467657730159,0,0,-0.867307512266936,-0.518618337249808,-1.7529990846851,-0.083697888271749,-0.263626162874132,-0.327038988431738,-0.19132115167849,0.395542591887742,0.177343739403627,-0.114623571890778,0.198387970735481,-0.253317786518068,0.208206098906992,0.160853292929979,0.0844842525097294,-0.217806502252967,0.50968056628027,0,-1.5684835893217,-0.386435936174125,0,-1.13617772231815,0.423700136777112,0.566972729642417,-0.00223679626311361,0.178746427894537,0.290460501443144,0.0973874823492217,-0.212745242558323,-0.0636821894078544,-0.281177268750303,-0.00374685227836144,0.0495840909344276,0.464966989235791,0.359950516085747,-0.163427554610645,-0.0430209716399066,0.018507744240259,-0.197303983834357,-0.115697203402339,-0.0537826941599134,0.198926101692251,1.00313166228295,-0.045952713597549,0.245869510061619,0,0.659453635633564,-0.197226427787494,-0.629899240625723,0.647070142325504,-0.209220462723302,1.16278783328376,-0.0074002673460033,0.94267542534851,0.0469720700845344,0.184264450034534,0.00182793500572554,-0.0592758175680932,-0.203920358256378,0.0575505648563133,-1.21200272129896,1.4430444048791,-0.0633473861542271,-1.19250377744757,-0.240107205494499,1.31111200800893,0.438257715075583,0.267108606751238,-0.0172018396710935,0.278639333312817,0.350762972826113,1.08004925957671,0.280976366925011,-0.0502383991007855,0.65913848138924,0.562535990248697,0.21336292173183,-0.148175071265768,0.104538478870124,-0.145205325295901,-0.255230470051012,-0.0189501494451294,0.929751276559432,0.747442145424596,-0.355549755644597,-0.171814117065602,-0.116003306543118,0.0893341189297187,0,-0.0731941671220436,0,-0.358780137206803,0.163343717346509,0.0904943181997749,0.0506473977895079,0,-0.485775267670278,0.298392844248965,0.059870907221535,-1.46436783786664,-0.182555471944343,0,0.32345861472501,0,0,0.199720236884543,-1.8410560181007,-0.483292299385286,0,0.832954250856242,1.54737255394693,-0.0443284056265305,-0.170873114814822,0,0.319801532961098,1.02672583566865,-0.198375980660228,-0.023066183712165,-0.131752074414158,-1.42346477584291,-0.00518987549594446,0.988547661949781,0.25010911466669,-0.0554626492326643,-0.11768599266395,0.226838018027665,0.033044316966914,-0.0782489678690541,0.241896086164687,0,-0.029820767315634,-0.182751207879254,0,0.297600997192108,-0.0650655531761062,-0.159960460734763,-1.46689577211511,-0.788527784071083,0.855756508722991,-0.713264543926959,-0.96080378826902,0.344427209887415,-1.05905158921906,-1.54616044504474,1.37431821835658,0.52952309564075,0.0998999201229619,0.471491807786717,0.159546520823301,-0.0832056105365018,-1.12853418439285,-1.24901425281568,-1.19540295327223,-0.0728955024089272,0.0227611758492281,1.04182869076463,1.45136788000548,0.621523733308579,0.728643921978706,0.133439888855847,-0.119157890153586,-0.0439936979615981,0.162201907045741,-0.95747308842023,-0.548696838446725,-0.522207445038547,0.0826585877292636,0.125616616691294,0.189307467970494,0.320688419248983,-0.257779251104693,-0.000250733845755353,-0.0878038042918019,0.107093003559333,0,0.52994256173336,-0.328037552822818,0.16361643818716,0,0,-0.0647725739488676,-0.406367755341214,-0.3117708595483,0,-0.233975387105785,-0.0927141634393418,-0.0558213578909082,0,-0.412434152896455,0.0354847356371318,0,-0.80027966133179,-0.0698760325628617,-0.0628634405705139,0.0562079375268758,-0.252263125061717,-0.0332677973458239,0,0,-1.17824704970355,-0.321631429636115,0.381062378499964,-0.212683257142274,-0.0846164103155491,0.827016163427999,0,-0.33669014008455,-0.0936037877312975,-0.00168586362783142,0.154174614618554,-1.04245646179426,0,0.665778988703941,0,1.75011819772755,0,-0.442354103877365,0,-0.236574662313698,-0.238182061596129,-0.191614228105216,-0.679748078417924,0,-0.450386473000035,0.440095632268828,0,-0.347469793812267,0,-1.13567529457624,0,0.881714115134586,-0.204466737550205,0,0,0.0730044966001102,0.166191983095563,1.53677223574613,0.37647139658091,0.0648724650634061,0,-0.121600476088183,0,1.6361562086571,-0.122288048703941,-0.090579919316711,-0.0241527403014014,0,-0.351801877388991,-1.81137343967716,-1.419270433427,0.300838446531168,-0.039571564626797,-0.437355339733167,-0.339227346410702,0,0,0,0,0,0.0425677819655894,0,0,0,0,-0.0128767434190099,-0.0479069501680992,-0.155163669542586,-0.0288292025496159,0,0,-0.185378486934442,0.113187220108024,-0.073697277896024,0,0.163183540551195,-0.0804131390302707,0,0.437298716428678,0,1.42242522037476,0,0.459532201762009,1.16847800242666,0.141784941465743,0,0.0513894881384899,-0.0147404681938956,-0.116593810445344,-0.192715419729619,-0.861371580362137,0,0.879187381663714,1.99529736989007,-0.509486016609562,-1.03564410473886,0.44416576748901,0.259464387119847,-1.33044737429357,-0.113838278231276,0.20998712350026,1.14328588147627,-0.558494260590135,0.0873575303993405,0.193406072229755,-0.0564839839849427,-0.559407656907,0.27541272569841,-0.54047589065239,0.996500656778427,-0.391196670257663,0.0800816338078581,-0.723864893856837,0,-1.91949966896725,-0.20730615945882,0.286700985662556,0.735251661261849,-0.187188098608404,0,-0.0153119112012288,-0.200771382816152,-0.171339070415862,-0.791564197246851,-0.6918803219715,0.00767309160429362,-0.22090212618072,-0.479197076275965,0.464874949527193,0,0.0472033180602401,-1.37360933836958,0.158496644185648,-1.63322079467138,-0.7179461194494,1.43355746140413,0.026312704337401,0,0.626480378124596,0.0400837411739313,0.818154339720588,0,-0.0665700145503979,0.57527664250179,1.28742935163544,-0.789359848262473,0.172273167929397,0,1.54274555724425,0.114376218186016,-0.176516619011102,-0.108363826166589,-0.39470452304449,-0.186790957764475,-0.356897066703484,-0.830130568633663,-1.56753651138391,-1.43408255471468,-1.45891739891868,-0.119126272176053,-0.246908647696928,-0.0757774967180931,0.125598990725619,-0.642604828740552,-0.0371187232640939,-0.831802583597881,0.0400580744077396,-0.0996948778115195,-1.63985016849835,0.31283290938676,-0.133737488449869,-0.0647283040416671,0.29727848667749,-0.0710492790049646,-0.0449685369285019,-0.60512930160202,0.124228572866843,1.58552539396909,-0.750917823512721,1.44139474141835,0.450533107908141,1.26432133668846,0.124210789621454,0.864509513795507,1.2667460460976,0.433256590668814,1.36386277754348,0.391665895949368,1.37325851299538,0.457278728095624,0.00018020020955739,-0.0784501384997956,0,-0.0287581620893685,-0.196828365843347,-0.576486559287279,0.020346679011689,0.229533099866423,-0.297156747837406,-1.51211878635209,-0.262227890718605,-0.970043230650754,-1.15459231151132,0.165794960673342,-0.320890283882796,-0.307546031503031,-1.76664684183575,0,0.440077351523758,0.0205357730715828,0.0713241730182171,0.695570065991569,-0.0823173789468502,0.657278971899867,0.100961129953786,0.228235963837213,-0.0306009706083282,0.107370970297936,0.663965448550479,0.153881306046039,-0.0899369429192673,0.100907783270673,-1.01791944336452,-0.0749764665150788,-0.333155804699557,-0.191927796327566,-0.11602021788038,0.102125429108928,-0.207966288901591,-0.468376086543054,-0.885575126946414,-0.473462270459105,0,-0.199028452551193,0.0585633510672397,0.669279661250537,0,0.501509172347692,-0.273028708354723,0,-0.833328938554098,0.0640036310098109,-0.00801982665060451,-0.218123798922876,-0.00536841558290926,0.0905784225579547,0.0852107439197553,0.0138857869995414,0,0.698424405221153,0,0.862072581470829,1.14143334949999,0.878067587393396,1.81598105138343,1.10759404878899,0,-1.27328512188449,0.290407467666542,0.183740908323281,-0.074601520280398,0.335327832374904,-1.55271387010499,1.4511787971286,0.405083111885807,-0.581164153283756,-0.227462923797242,-1.03435061294432,-1.2298730456351,0.232807739657311,0.0614255005472754,0.0336554352628116,0,-0.202422051620568,-0.110442631738244,0,-0.466748565004191,0,0,-0.0306605697448454,0.156389326572983,-0.163642946312745,1.34573603350977,-0.134047973617158,0,0.321434616061819,-0.410290347972153,0,0,-0.349900872022539,0.296067731544961,0.539507819126206,0.0564815736883708,-0.0893876606334821,-0.159905388348231,0.0322323960347176,-0.0670022564848564,-0.237555229065605,-0.881209150550845,0.12012565036823,-0.0320485776162156,-0.0485567775044279,-0.186150292688649,0,1.03402638096263,0,0.158948345742812,0.18401910383913,-0.334736291278334,-1.88564117980999,0.53800288339285,0.860071003167854,0.192176610307753,1.41049695102006,-0.810914470873816,-0.151393141190034,-0.349152575059823,0.187190956159929,0.71386213588687,0.0317497348456539,0.0616685714202643,-0.12121828256851,0.0314304411499892,-0.195957577479633,-1.50830865204937,-0.921772130258723,0.580164722331602,0.161999453889121,-0.0597397729798345,0.0308850895924421,-0.294362738095701,-1.33519972410443,-0.798262180867878,-0.210751355556682,-0.998898872928275,-0.170341035919461,-0.610385878848192,-0.0656122313989467,-0.126020997828528,-0.0254232432776083,0.610698200206437,-0.0653883206350704,0.106768634264343,-0.935550646621575,0.546544832899164,-0.323621724652013,-1.30258003067144,-0.752608797142404,0.0545847972577129,-0.0371122961045125,0.090534051506705,0.364099377522703,0.0089106738413985,0.294467944359307,1.47817116036311,1.18749539271997,1.35707045352116,0.0573384936634264,0.659568682983905,-0.385273906344839,0.0292682960154835,-0.132099942265782,-0.0318095186732402,0.929991118583986,0.0971731216212033,-1.44415416836972,-0.113006237629745,0.00191132892441493,0.0441645542472356,-0.0763492168628426,0.854379095494468,0.839993343456832,-0.592401356937562,-0.526882409800028,-0.0458484759205445,-0.448035626680636,-0.0152031850008136,-0.172726911283413,0,-1.17552947391579,-1.00223435871668,-1.46668508137928,1.49124718542837,-0.208324921704231,0.422605471055113,0,-0.0179314270758258,-0.0210164321950292,-0.0234736356739477,0.131741786632818,-0.239399924117253,0.223040447258081,0.509871332114045,-0.711631503738941,0.154038204130209,-0.0376194382928172,0,-1.04733747149748,-0.346779037061039,-1.47434805032381,-0.736312695952854,0.413585854204517,-0.636865885940086,1.35478544986793,0.392305364658914,0.152689814897682,-0.0504405759438225,-0.0329612248535687,0.0719520629200912,0.255729434161132,0,0.259867381154457,0.0663060058095797,-1.27680513164732,0.173612923778322,1.6763178550491,0.299731816764244,-0.368410117927946,-0.802664429169171,-0.560246268236489,0,-0.102967358570604,-0.0269720857137217,-0.16613258333666,-0.142895663243819,0.0611192774765542,1.12667757621244,0.615287803600499,-0.128551145199069,-0.0105540561420564,0.0383247450037324,0.0106499293210332,0,-0.0500696914038663,-0.0741718008579391,0.00679605075557247,0,-0.104489085127102,0.260207329019276,0,-0.853676574381642,0.756953495534962,-0.138116183034617,-0.11708605511966,0.256533808273598,0.775275546831,-0.0222208614593161,0.256363429893993,0,-0.0129057305081953,0.267464332698214,-0.107460598003146,-0.547605949270003,0.911707931635503,-0.145436629123651,0.0904278205431074,-0.552076563265026,0,-0.238191148718633,-1.14615728049035,-0.796647838116437,-0.387044628380403,0.330234564502748,0.945406479200334,0.964397897871896,-0.117252869711164,-0.0667090537322311,0.059712202129101,-0.0909170890599304,-0.356783689791933,0,0.441374631778704,0.811252647078755,0,0,1.01017168217546,-0.23139989987121,0,0,-1.51523834757209,-1.03615017371887,-0.629194152890229,0.0198574678836763,-0.956796698939114,-0.682900745541348,-1.78964362320463,0.286771911686504,-0.274603364252162,-0.171255662677866,-0.0450232626457448,0.113305526397714,-0.211843249857615,0.0719452004216249,0.0906809953862106,-0.243739407739286,-0.164454869386312,0.689118943823235,-0.163021741432746,-0.247635515299273,-1.41819008989595,1.92579995046698,-0.0612148681945988,-0.0781224768351138,-0.0703871245803851,-0.549383916915585,0.0361318352929167,0.150006359635983,0,-0.31316828939459,-1.27525078010703,0.327683953101225,0,0.0385789405327771,0,-0.191144629449772,0,0.233608211463827,0.347934547447657,-0.265884509071218,0,0.806590508072931,0,0.109957890805161,-0.921022005369162,-0.143974667663623,-2.0153915060371,-1.43140542891757,-0.554417774546469,-0.666756908137561,0,-0.53173136875566,0,-1.13478343010474,0,0.715674415836511,1.19483590196473,0.944093585857439,1.26293328439629,0,0,-1.99664674576078,0,-0.00084386335844625,-1.74805505910768,-0.225626348915226,-2.83855738110164,-0.52853556267469,-0.653566925611828,0,0.238621819082052,0,0.266338031506132,0.312095498833501,0,0.140327863106128,0.0878189525337915,0,0,0.0108126072038098,0,-0.220633961923276,0,-0.882622887658355,-0.754508655762518,0,0,-0.980723797838949,-0.577291149106483,-1.98860495035141,-0.0934089583753482,-0.300395466659778,-0.371426239501802,-0.211952234566074,0.453881315334192,0.204845085189181,-0.126308309926411,0.23007846962345,-0.284627826661636,0.243806347573396,0.187633173600652,0.101005881522604,-0.245101131204799,0.58816575985999,0,-1.77550244077745,-0.437846203278872,0,-1.28895716042422,0.495430062978986,0.653635895855458,0.00153662673258419,0.211008467841143,0.336226805303003,0.116685966913386,-0.240116930606756,-0.0688046397595761,-0.31867832846543,-0.00185982937123495,0.0610032149719516,0.537199253268151,0.416855132494539,-0.18548590726034,-0.0470524567413891,0.0243776691948273,-0.224449635747064,-0.129180497933038,-0.0568561101688033,0.229788044543927,1.1498062110987,-0.0474551017539896,0.285360873539663,0,0.759639212432512,-0.213568466466299,-0.714128749897028,0.745296354594407,-0.234976871881122,1.33330929490477,-0.00859610489575821,1.08119575495444,0.0588463801646021,0.209740081790867,0.00548195835555082,-0.0643567856742866,-0.226788051887918,0.0763570668530207,-1.36925418749418,1.65828145853519,-0.0703599717721243,-1.35576021274287,-0.265694991262365,1.50187621125213,0.505938512151429,0.315179633698282,-0.013029053988722,0.324520106795286,0.406693667623622,1.24051603203257,0.328033096169311,-0.0531596270767883,0.758318945918795,0.648658025295119,0.249228160906916,-0.16588076864852,0.1236177826865,-0.16314236141321,-0.289039183215833,-0.0175533217240291,1.06597134029417,0.859772167385091,-0.406834023617797,-0.19358904281731,-0.129255888266798,0.107693569482066,0,-0.0804334876421824,0,-0.403286110035062,0.191512414755885,0.107013718056706,0.0615546330346375,0,-0.554849717899801,0.343461880702272,0.0719347129334533,-1.66817078571456,-0.206046771827362,0,0.371915245860466,0,0,0.232202053569227,-2.09968625758776,-0.551908694372252,0,0.959131380445032,1.77298705966127,-0.0495913283712791,-0.186539752608562,0,0.37217564254669,1.17836830429154,-0.224935629042023,-0.0227614061416093,-0.148327029205186,-1.60771044041451,-0.000877315168283485,1.13558112226093,0.292153060275448,-0.0610987270570779,-0.130204837201771,0.263652846550888,0.0394220820556047,-0.0840062828457289,0.283832657409106,0,-0.0313724906836416,-0.205258041918433,0,0.346412739692596,-0.0680130550087924,-0.1806372358987,-1.66452744657364,-0.893589628222912,0.983678861258052,-0.812331750789495,-1.08839661376871,0.409293053917916,-1.20521221662733,-1.75487325851556,1.57575591224273,0.61034424302859,0.117651704454084,0.546355810977046,0.18707638923663,-0.0906276461881616,-1.28106861130645,-1.42091504236657,-1.35830811082644,-0.0734274927549108,0.0386854735999942,1.19597255131038,1.66225531563513,0.716796200643766,0.839254532149062,0.156213957216994,-0.134908911814121,-0.0430965327013983,0.190334181848633,-1.08275885261322,-0.609764966541505,-0.594165527168444,0.0997641705209114,0.147812687214,0.219757879944675,0.371625355343251,-0.290094684941682,0.00188811453036827,-0.0978750791834905,0.125306063535999,0,0.613654453180927,-0.374100387394413,0.196100561315762,0,0,-0.0709621193332337,-0.45622583327205,-0.351828590875028,0,-0.259304382492741,-0.100080466451133,-0.0602282421645922,0,-0.460054831928786,0.048739022973936,0,-0.904124555807987,-0.0765886495131356,-0.069012564269111,0.069365016845846,-0.284654298899076,-0.0349045823447805,0,0,-1.33653170371174,-0.360706558750165,0.441700809243263,-0.2391318427944,-0.0929274409202163,0.958072404746994,0,-0.381378815782058,-0.0991887086569879,-0.00139123009809374,0.176301798420225,-1.19009900982117,0,0.770452831301826,0,2.00968713085014,0,-0.494874029411511,0,-0.264099570885349,-0.271685431351946,-0.218533858132732,-0.77234664943517,0,-0.509849258372252,0.511978152829383,0,-0.390955503522609,0,-1.29003860776977,0,1.01730615625052,-0.22469159189122,0,0,0.0873669239094262,0.197620138084506,1.76499616793774,0.440418261060479,0.0800427089585832,0,-0.129542436637832,0,1.87823085420111,-0.140071252155348,-0.101598281455898,-0.0283906326240201,0,-0.392392375448873,-2.0569323554278,-1.60467996877722,0.349342588159255,-0.0410760842221288,-0.4943839709979,-0.380932769966022,0,0,0,0,0,0.0511905635607939,0,0,0,0,-0.0123943758137811,-0.0516320018473339,-0.163900866536092,-0.0288460440463862,0,0,-0.205608384003587,0.133173130636237,-0.07534358461912,0,0.187246868869839,-0.0882135362033701,0,0.496820066817808,0,1.6062740161752,0,0.523680418738773,1.3205752788169,0.162890823749785,0,0.0600616883425431,-0.0144137143642302,-0.128343042377158,-0.216461725844379,-0.967521189678474,0,0.995416285141458,2.24637749083018,-0.56412413899013,-1.15647626107438,0.504033866019192,0.297198088414991,-1.4925899937047,-0.1246956012849,0.239973382336993,1.28788546689324,-0.613942569710423,0.102748708038578,0.222973079418046,-0.061222093131508,-0.623609014487578,0.315822756865745,-0.604807947212313,1.12914863774634,-0.43644836315784,0.0940854246378383,-0.812104475769894,0,-2.14683343648074,-0.229458396150635,0.327297060156109,0.831818591062158,-0.205123692946085,0,-0.0140513409203188,-0.224677081733576,-0.19050514187896,-0.879720428120619,-0.776833184944034,0.011216965099158,-0.245229948161147,-0.534250311760929,0.527899600628322,0,0.0557257711190041,-1.53396491422224,0.189395446114778,-1.82569420451455,-0.795043928551572,1.61578200773622,0.0339231615553337,0,0.710538873641985,0.0484179457055873,0.92311997486939,0,-0.0723334827786442,0.654299017894405,1.45330341171151,-0.887276571975199,0.197257598534714,0,1.74187789877183,0.129469627285867,-0.197771203490128,-0.118415409632016,-0.441368913525465,-0.208962265833627,-0.399182821453282,-0.931627210209847,-1.74790644508356,-1.60095697257175,-1.63342466315553,-0.131451145676375,-0.275413092224211,-0.0844409524024486,0.144675210980269,-0.720417358306791,-0.0395190538380745,-0.934146653010032,0.0480279741313137,-0.109327596231405,-1.83344572854667,0.356046446969766,-0.148561378457324,-0.0715030368832811,0.339464396216469,-0.0767708053030536,-0.0479140359835569,-0.666716935190051,0.144475659293454,1.78735966270929,-0.83814709937026,1.62517209267062,0.513045951501573,1.4268664942496,0.142525961208041,0.976585279799456,1.42803803010205,0.49325601972546,1.5389932454075,0.445285449955311,1.54772813596378,0.519485625727502,0.00360927651845248,-0.0842604395935076,0,-0.0297355907133734,-0.217688392899001,-0.641367882425952,0.0255944519725027,0.262133612494975,-0.323758544873043,-1.68519604881307,-0.293065968904569,-1.08304449018088,-1.29404645826461,0.189960211124003,-0.360786553150178,-0.343136758852194,-1.98147171684119,0,0.499032041989674,0.0277251556886098,0.0842239916163842,0.787929918071274,-0.0914650609322478,0.743243906878554,0.117258638944581,0.26064385131762,-0.0310807411098694,0.123340500774809,0.751998204039166,0.177177509299798,-0.0978689333051323,0.117067394654351,-1.13813204621281,-0.0819023368881843,-0.367154742447323,-0.215135443654193,-0.12722572447944,0.118442472047234,-0.230169136028748,-0.518379697009539,-0.992174745264593,-0.52803473018591,0,-0.21939535820667,0.0699374827956698,0.758964619303715,0,0.570192282541132,-0.303261389607487,0,-0.924494556984415,0.0752879516134994,-0.00425492144957493,-0.234956969052667,-0.00362441213228058,0.103384746982113,0.0994769713872195,0.0186029394379392,0,0.793110022082854,0,0.974804699344855,1.29072802310112,0.990200886840708,2.04487240151684,1.25097140623086,0,-1.42154504003912,0.331717257420181,0.210812145597508,-0.0820259963981496,0.381991995952714,-1.73281253524002,1.63562896446585,0.460500429650146,-0.650530714028704,-0.254017536355146,-1.16093417702712,-1.37656132316143,0.26510988530221,0.0682754905110779,0.0378915789175285,0,-0.223519808439963,-0.119627060117748,0,-0.51650745151516,0,0,-0.0239279472554357,0.180757405003085,-0.179163280228861,1.52149266352829,-0.145673314832151,0,0.363650096124624,-0.450563263737684,0,0,-0.386365182573192,0.338266846514738,0.611803895403768,0.0682229884816251,-0.0970182082988406,-0.178767443745836,0.0401123741043638,-0.0728594992990037,-0.264113351287092,-0.986491767140026,0.138321672941141,-0.0335227597840419,-0.0526631178810563,-0.208214604970168,0,1.16854022239324,0,0.186001232938421,0.213429353862901,-0.365961833730742,-2.11557984699613,0.6102045040497,0.973224307026753,0.220692884378144,1.58995044641635,-0.903456087742481,-0.169072841756666,-0.385132385774435,0.216925703555467,0.809730786038993,0.0383221438201646,0.0739038300631544,-0.133812292704272,0.0379518045214184,-0.218281259846076,-1.68616488246205,-1.03208757392334,0.656740338155981,0.186203815566234,-0.0637953365053047,0.0376146533920115,-0.328158500081991,-1.49171078314676,-0.896668999254074,-0.234204951695329,-1.12163810817144,-0.190630744652616,-0.681627019787106,-0.0698164140164119,-0.139065150129625,-0.0262885841575518,0.691832390074414,-0.0686317032053116,0.123329767437653,-1.04155136796429,0.619559103191568,-0.360910994018293,-1.45671748304531,-0.831878659552748,0.0655029356075853,-0.0390104235227371,0.105438985152593,0.414648507853434,0.0128698821202071,0.339404597536655,1.66709550928948,1.33906443265803,1.53079687042402,0.0700507337472809,0.746693702378909,-0.429968770590252,0.0356230705840367,-0.145217620926916,-0.0330946122419906,1.05042721592195,0.113281820721331,-1.61327713558116,-0.124436777238531,0.00624056717127048,0.0532534755380353,-0.0847240655846338,0.966045939377865,0.949734005050075,-0.660923993720668,-0.589410364848857,-0.0498451052193314,-0.503257934678023,-0.014152577863679,-0.192890201580155,0,-1.31863513184149,-1.12515491309266,-1.63443444720278,1.68141959234948,-0.230989244317814,0.480010708638443,0,-0.0173542803711042,-0.0201194306391378,-0.0242252785337217,0.151709013084486,-0.268283737228403,0.255949541490561,0.578866802111428,-0.785393837935812,0.177954262353826,-0.0387981687683985,0,-1.17537303377816,-0.387410204652879,-1.65069722625417,-0.822627053447666,0.469782718517517,-0.703198212895761,1.52739161275285,0.446646581104833,0.176663194912681,-0.0525980740591905,-0.0340983131610375,0.0846775566685277,0.291836967525324,0,0.296378621340795,0.0772677802106324,-1.42569454576243,0.199419777323302,1.89055699943039,0.340381063475946,-0.411686684027728,-0.901901315964562,-0.627784007489095,0,-0.112656784833341,-0.0284344708965571,-0.186225305946568,-0.158422230456215,0.0720878958729215,1.27218596615133,0.697483635071952,-0.140486024124177,-0.00675100980508669,0.0487282714580075,0.0146725010716907,0,-0.0517345781295124,-0.0797998958288701,0.010215897866668,0,-0.113623644129502,0.295673107993469,0,-0.954054806654078,0.855324415190003,-0.152384997334824,-0.130619755503744,0.293648937525298,0.87560165200937,-0.0216572632688624,0.29009523820367,0,-0.0122788650024985,0.304957773278841,-0.117554566495807,-0.614848954197127,1.03033280296425,-0.159570909150766,0.105632055255506,-0.616980792158514,0,-0.26078019670072,-1.28246209616778,-0.895072241162019,-0.434465090986368,0.377598146590198,1.06662407742541,1.09043297500969,-0.13150985665395,-0.072807151075257,0.0700019572373852,-0.098296294816353,-0.398065176881738,0,0.503123779870358,0.923638517769772,0,0,1.14367212873364,-0.252722507118232,0,0,-1.69985930422624,-1.14900332754391,-0.703809798920678,0.0251886021527528,-1.07431337896061,-0.76486488815675,-2.00325694348091,0.327336965458954,-0.305525446955547,-0.189270606469013,-0.0479575992639949,0.131888839651987,-0.234419459848441,0.084103587721545,0.105377623955366,-0.266541843693492,-0.183694723674172,0.777645564573628,-0.179262467189519,-0.275497372784816,-1.59079300158896,2.16982139300335,-0.0651575921804574,-0.0869082376537804,-0.0757752456329446,-0.616979543773831,0.0415989242065133,0.171672579498957,0,-0.349448955114082,-1.42622813287746,0.373889614547868,0,0.0484969897310466,0,-0.210646339901493,0,0.269900855919323,0.397875713901025,-0.293230338584475,0,0.911353691420604,0,0.129038145986588,-1.02132123030015,-0.158007427662746,-2.25259537902843,-1.60446259936726,-0.611327307208294,-0.746258818170645,0,-0.593365036429967,0,-1.26780767025346,0,0.811142039439113,1.34833538171651,1.06629980965089,1.42584968805566,0,0,-2.24328028171547,0,0.0107942973451331,-1.96306902478475,-0.249870688674281,-3.17244549335576,-0.584955024959817,-0.732063229461411,0,0.270843092843818,0,0.302357044115258,0.351318936842848,0,0.163111214415718,0.101777904829295,0,0,0.0171089004874313,0,-0.244200595524645,0,-0.987331623188575,-0.842402526999279,0,0,-1.09378134174094,-0.635647238780151,-2.2235241481649,-0.103065668064347,-0.337275532408586,-0.415926861969055,-0.232489118679783,0.511960227551388,0.232147501136922,-0.137909731293697,0.261731232599396,-0.315778370775918,0.279195301809357,0.214434155588108,0.11757737733539,-0.272448556939168,0.666665420955061,0,-1.98174320992811,-0.48917005670954,0,-1.4413041818037,0.566750786439603,0.740161336567385,0.00537268478364446,0.243426024199349,0.381989850651988,0.136154272542738,-0.26762649834858,-0.0739102171955615,-0.356284908252968,2.2425180886829e-05,0.0725805322097502,0.609597052871607,0.473986098197193,-0.207655459078366,-0.0511248360908421,0.0303055415058077,-0.25185611002029,-0.142633515267003,-0.0598066759632833,0.260592549140595,1.29580622354228,-0.0488369707128909,0.324737645219368,0,0.85982086040443,-0.229715606285133,-0.798284363273901,0.8436567584304,-0.260694531340493,1.50354644089098,-0.00995165262315439,1.21933088486147,0.0707678975384581,0.235027226470723,0.00913702812389938,-0.0694457302947915,-0.249639792629073,0.0950681594862992,-1.52586143885222,1.87348972486107,-0.0774173837950571,-1.51854562278597,-0.291121100531162,1.6918659028569,0.573481788906995,0.363172795570741,-0.0089541447715024,0.369993257186065,0.462682045546843,1.4007630623924,0.375419859741727,-0.0559975237893692,0.857469512072841,0.734815087662159,0.285179661867233,-0.183547106552847,0.14278601743872,-0.181040387555786,-0.32281256604473,-0.0161691635797239,1.20169365240507,0.972185998184156,-0.458445272716673,-0.215315665789009,-0.142438488623265,0.126037216134956,0,-0.0877850307696074,0,-0.447663084570055,0.219916672296333,0.1235641788693,0.0725438791531661,0,-0.624161263804305,0.388337782556438,0.0839114171945463,-1.87182242068559,-0.22978548266536,0,0.420192696364951,0,0,0.264692304784726,-2.35816635857968,-0.620740456665193,0,1.08522658823301,1.99786294881206,-0.0550956191156452,-0.202089787155176,0,0.42415773052128,1.3293007760919,-0.251592218701788,-0.022420397399288,-0.164750144422171,-1.79098587394219,0.00342952330709351,1.2820040443112,0.334339693355351,-0.0666482833223697,-0.142683600283045,0.300462524120237,0.0456519413928505,-0.0897018395807582,0.326113179239832,0,-0.032960281291126,-0.227476162544166,0,0.395429645567236,-0.0708105594423227,-0.201532564383606,-1.86144480532104,-0.99839178694125,1.11121058930961,-0.911355325788812,-1.21567497634719,0.474093402017124,-1.35125361989199,-1.96294142145028,1.77698150500558,0.691202710023302,0.135383636041657,0.62137020551637,0.214741136964684,-0.0978620654919496,-1.43319489828427,-1.59253756647682,-1.52086646430828,-0.0739376104345498,0.0544480399935345,1.34994284558061,1.87255930216848,0.812132637168712,0.949980615304776,0.179100763079028,-0.150591364071259,-0.0421358452214069,0.218187109475537,-1.20748656487146,-0.670544393116742,-0.66457486782805,0.117061986295761,0.170070044475536,0.250169537268373,0.422779714425002,-0.322069295469792,0.00401003882389238,-0.10798284085851,0.143515280041236,0,0.697423774889761,-0.420331978046082,0.228819250489429,0,0,-0.0770709489632311,-0.505774613544049,-0.391532338472492,0,-0.284298604415338,-0.107249613873022,-0.0646510248844066,0,-0.507317250860957,0.0621810891451344,0,-1.00749900383624,-0.0833365814530247,-0.0751097799035203,0.0826235955476174,-0.317059637705275,-0.0366199629364677,0,0,-1.49449424431464,-0.399636777974893,0.502377904573907,-0.265568287397224,-0.101365952045898,1.0887081824727,0,-0.4257863100128,-0.104528137188428,-0.00121577204558204,0.198266836940382,-1.33795760284082,0,0.875306386913565,0,2.26915473605878,0,-0.547013008141082,0,-0.2914504655305,-0.305467023089201,-0.245579569743187,-0.864829075179525,0,-0.569189641717358,0.583522614235817,0,-0.434267136589494,0,-1.44410607202875,0,1.15311341995389,-0.244813390486347,0,0,0.101812206730767,0.229466394122531,1.9931521884084,0.504639242898826,0.0954006059756565,0,-0.137150942273636,0,2.12006110481626,-0.158146692734395,-0.112632506379863,-0.0328004791055346,0,-0.432692576468532,-2.30151413915545,-1.78934729915736,0.397759094106217,-0.0425155571573786,-0.551446033719216,-0.422516159749967,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1107.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1107.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1107.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1107_field1":[18.65,18.4941964668034,18.4840646700016,18.47838292117,18.47689448429,18.476450154104,18.4763013929458,18.4762532003973,18.4762368473652,18.4762311747618,18.4762293285477,18.4762284964767,18.4762281821909,18.4762279061183,18.4762273523618,18.4762277087958,18.4762278622314,18.4762279338901,18.4762282494118,18.4762291515609,18.4762312994871,18.4762374530232,18.4762549376887,18.4763066298935,18.4764661962277,18.4769501096079,18.4785787891717,18.4846066152786,18.49916378905,18.65,14.9007804594279,14.8852661341826,14.8748720823203,14.8718553910515,14.8707140476471,14.8703330560035,14.8702022358256,14.8701564739454,14.8701402938505,14.8701344365255,14.8701323040105,14.8701314311565,14.8701310722547,14.8701308799666,14.8701307072676,14.8701307831746,14.870130878953,14.8701309945551,14.8701313283035,14.8701321680909,14.8701342254211,14.8701396282885,14.8701547860352,14.8701972032475,14.870320700422,14.8707232719525,14.8715144871688,14.8769855344647,14.8778168900992,14.9007804602435,12.5592251930258,12.5541029802188,12.5508025823357,12.5491109073239,12.5484400198915,12.548175628554,12.5480755462048,12.5480376799033,12.5480232050365,12.5480175697776,12.5480153264167,12.54801437615,12.5480139582431,12.5480137544226,12.5480136497993,12.5480136721687,12.5480137481892,12.5480138957633,12.548014251622,12.5480150660094,12.5480169818357,12.5480216407603,12.5480335312106,12.5480670966581,12.5481334614677,12.5484515595581,12.5485941343402,12.550788634523,12.5545274652542,12.5592251932243,11.0625377562357,11.0613711193102,11.0600855476032,11.0593373627598,11.0589684268403,11.0588059716801,11.0587368646291,11.0587079850853,11.0586958510603,11.0586906546052,11.0586883682831,11.0586873181673,11.0586868209252,11.0586865788055,11.0586864702165,11.058686470042,11.0586865482234,11.0586867301956,11.0586871293675,11.0586879694899,11.0586897681924,11.0586939314274,11.0587023630278,11.0587299276375,11.0587615819307,11.0589482206566,11.0591917796604,11.0596338196978,11.0608219319197,11.0625377563902,10.1432808769908,10.1429836937091,10.1425250167582,10.1421925062976,10.1420052741744,10.1419104608976,10.1418651730137,10.1418439327794,10.1418339539101,10.1418291898282,10.1418268639279,10.1418256978997,10.1418251041534,10.1418248043388,10.1418246706014,10.1418246566113,10.1418247451478,10.1418249667862,10.1418254233793,10.1418263324118,10.1418280578735,10.1418319721666,10.1418382404771,10.1418579933014,10.1418858320658,10.141954611755,10.1421340558799,10.1424302449853,10.1428300338045,10.1432808773446,9.63031409067419,9.63022616040569,9.6300527359769,9.62990490973041,9.62980824028919,9.62975250235794,9.62972220073838,9.6297061643572,9.62969772795979,9.62969327263339,9.62969090138887,9.62968962939253,9.62968894781523,9.62968859257703,9.62968843127033,9.62968840742234,9.629688507372,9.62968876575163,9.62968927693175,9.62969026391956,9.6296919906502,9.62969560626729,9.6297014686189,9.62971393875867,9.62973876384048,9.62977804602968,9.62984761767636,9.6299779224587,9.63015744715372,9.6303140909414,9.38957565854606,9.38954661805372,9.38947074037744,9.38939534916517,9.38933879382577,9.389301732718,9.38927917024121,9.38926597776171,9.38925843651978,9.38925417827131,9.38925179129427,9.38925046128378,9.38924972919961,9.38924934110752,9.38924916285948,9.38924913360108,9.38924924066561,9.38924952125921,9.38925006589019,9.38925108999807,9.38925286942167,9.38925615878311,9.3892619764933,9.38927180504079,9.38928938362523,9.38932037572726,9.38936793558498,9.38943463218351,9.38951374180954,9.38957565873574,9.31098661304518,9.31097320953344,9.31092921427556,9.31087962107352,9.31083838801161,9.31080895976282,9.31078974485204,9.31077787284006,9.3107707908774,9.31076666224443,9.31076429296744,9.31076295068904,9.3107622033017,9.31076180414151,9.31076161973781,9.31076158813784,9.31076169696331,9.31076198357884,9.31076253924411,9.31076355798917,9.31076535971774,9.31076849118882,9.31077395852371,9.31078328582256,9.31079825435342,9.31082174999058,9.31085696585034,9.31090394876962,9.31095356788431,9.31098661311343,9.3334772551375,9.33346823516442,9.33343552231641,9.33339620516463,9.33336170484348,9.33333598463408,9.33331860270158,9.33330757266699,9.33330085875367,9.33329688530298,9.33329457978268,9.33329326327226,9.33329252616006,9.33329213099662,9.33329194783376,9.33329191575687,9.33329202283446,9.33329230466369,9.33329285336894,9.33329384605594,9.33329560187125,9.33329864657658,9.33330380572103,9.33331246538182,9.33332653113376,9.33334798681599,9.33337813853425,9.33341605470715,9.33345419761162,9.33347725495341,9.4814417538942,9.48143530205786,9.48141133740249,9.48138141842057,9.4813541659917,9.48133315674072,9.48131854706844,9.48130905535465,9.48130316756256,9.48129963101016,9.48129755548386,9.48129636013755,9.48129568666899,9.48129532400948,9.48129515528621,9.48129512517195,9.48129522302986,9.48129548038579,9.48129598110703,9.48129688336005,9.48129846224813,9.48130118604249,9.48130577550669,9.48131327842131,9.48132514433074,9.48134296667606,9.4813674930771,9.48139714652747,9.48142565125064,9.48144175371634,9.84283582780551,9.84283221333523,9.84281722799096,9.84279757789674,9.84277888841676,9.84276392023948,9.84275316423597,9.84274598111571,9.84274142354968,9.84273863580957,9.84273697610997,9.84273600957587,9.84273546039261,9.84273516270008,9.84273502322728,9.84273499718093,9.84273507567262,9.84273528334105,9.84273568569016,9.84273640696626,9.84273765757797,9.84273978106876,9.84274331155608,9.842748999437,9.84275776748392,9.84277050689429,9.84278746881204,9.84280726843947,9.84282567334301,9.84283582744627,10.5397715701931,10.5397699843425,10.539761880692,10.5397506440956,10.5397394601119,10.5397301410903,10.5397232108822,10.5397184456209,10.5397153473784,10.5397134137683,10.5397122436493,10.5397115532772,10.539711156916,10.5397109401797,10.5397108375283,10.5397108168693,10.5397108712452,10.5397110171424,10.5397112987378,10.5397117991772,10.5397126587491,10.5397140982876,10.539716445716,10.5397201498249,10.5397257359171,10.5397336409298,10.5397438525471,10.5397553933123,10.5397658325755,10.5397715699369,11.7182664479311,11.7182658819983,11.7182618874898,11.7182560457627,11.7182499807572,11.7182447352777,11.7182407036037,11.718237850499,11.7182359490168,11.7182347370799,11.7182339905853,11.7182335436164,11.7182332838736,11.7182331404085,11.7182330717191,11.7182330570225,11.7182330913002,11.718233184187,11.718233362337,11.7182336752931,11.7182342055035,11.7182350811997,11.7182364867816,11.7182386617061,11.7182418690597,11.718246300904,11.7182518870173,11.7182580416825,11.7182634863436,11.7182664478014,13.5825173812169,13.5825172466486,13.5825154040398,13.5825125571933,13.5825094786561,13.5825067198074,13.5825045301421,13.5825029350467,13.5825018439466,13.5825011320606,13.5825006842609,13.5825004110878,13.5825002498299,13.582500159786,13.5825001166113,13.5825001078076,13.5825001300186,13.5825001883064,13.5825002973456,13.5825004843888,13.5825007938907,13.5825012933177,13.5825020775521,13.5825032656905,13.5825049802715,13.5825072965353,13.5825101523791,13.5825132363205,13.5825159237052,13.5825173810308,16.4732337810077,16.4732338547749,16.4732330342399,16.4732316843672,16.4732301625613,16.4732287481125,16.4732275859127,16.4732267102438,16.4732260908869,16.4732256729775,16.4732254010645,16.4732252296691,16.4732251256641,16.473225066908,16.4732250398415,16.4732250373318,16.4732250572945,16.4732251022726,16.4732251799283,16.4732253044149,16.4732254984796,16.473225795725,16.4732262416927,16.4732268910592,16.4732277962157,16.4732289815677,16.4732304018653,16.473231894815,16.4732331620607,16.4732337806692,20.9890286273192,20.989028794113,20.9890284087631,20.9890276987184,20.9890268613576,20.9890260500306,20.9890253518342,20.9890247974476,20.9890243813532,20.9890240814801,20.9890238721763,20.9890237308344,20.9890236401578,20.9890235881636,20.9890235673343,20.9890235736743,20.9890236060476,20.9890236659495,20.9890237576693,20.9890238887813,20.9890240708607,20.9890243201048,20.9890246569843,20.9890251035346,20.9890256764039,20.9890263735036,20.9890271543053,20.9890279166257,20.9890284994295,20.989028627026,28.1541530324367,28.1541532078587,28.1541528539489,28.1541522041236,28.1541514270745,28.1541506479875,28.1541499402046,28.1541493373892,28.1541488462601,28.1541484595252,28.1541481646551,28.1541479489661,28.1541478019123,28.1541477157797,28.1541476856264,28.1541477089654,28.1541477854636,28.1541479168158,28.1541481067238,28.1541483608725,28.1541486867501,28.1541490929858,28.1541495875456,28.1541501738736,28.1541508440935,28.1541515686555,28.1541522842418,28.1541528783921,28.1541532007164,28.1541530314834,39.4955759192444,39.4955760151505,39.495575199787,39.4955738781685,39.4955723418189,39.4955707977865,39.4955693648396,39.4955681029512,39.4955670331472,39.4955661551475,39.495565458973,39.4955649319571,39.4955645624438,39.4955643414166,39.4955642630618,39.4955643248513,39.4955645274482,39.4955648746211,39.4955653730575,39.4955660317976,39.4955668610276,39.495567869554,39.4955690598554,39.495570419372,39.4955719072503,39.4955734368566,39.4955748587939,39.4955759469504,39.4955764158583,39.4955759179723,56.3214339771173,56.3214335977808,56.3214311622789,56.3214275762887,56.3214235228956,56.3214194895255,56.3214157553018,56.3214124573832,56.3214096442589,56.3214073170018,56.3214054556358,56.3214040338303,56.3214030267544,56.321402415002,56.3214021861519,56.3214023351934,56.3214028645842,56.3214037842044,56.3214051109224,56.3214068671888,56.3214090780086,56.321411764634,56.3214149322736,56.3214185481637,56.321422507567,56.3214265886252,56.3214304074023,56.3214333928769,56.3214348319633,56.3214339768019,76.7062367714967,76.7062344636117,76.706227880347,76.7062188653072,76.7062089718133,76.7061992714749,76.7061903708063,76.7061825506243,76.7061758978805,76.7061703983423,76.7061659959238,76.7061626258825,76.7061602298085,76.7061587623996,76.7061581948405,76.7061585156601,76.7061597307176,76.7061618633107,76.7061649534735,76.7061690554357,76.7061742319087,76.7061805415123,76.7061880130283,76.706196596958,76.7062060856508,76.7062160002929,76.7062254686833,76.7062331599141,76.7062374307702,76.7062367778393,92.2814810182213,92.2814751871797,92.2814618958244,92.2814445994152,92.2814261802799,92.281408477508,92.2813924567321,92.2813785034817,92.2813666918026,92.2813569556068,92.2813491738347,92.281343218145,92.2813389795351,92.2813363761713,92.2813353560995,92.2813358987076,92.2813380144046,92.281341744871,92.2813471625779,92.2813543678477,92.2813634816577,92.2813746284509,92.2813878979328,92.281403267211,92.2814204613097,92.2814387359348,92.281456611397,92.2814716849903,92.2814808512014,92.2814810319107,96.7725610982805,96.7725510531624,96.7725319898124,96.7725085967244,96.7724845062478,96.7724618509012,96.7724416444878,96.7724242312957,96.7724095905904,96.7723975606407,96.7723879613553,96.7723806221944,96.7723753995157,96.7723721891824,96.7723709262,96.7723715845428,96.772374177221,96.7723787564088,96.7723854139287,96.7723942793278,96.7724055148242,96.772419301115,96.772435801521,96.7724550800208,96.7724769376411,96.7725006243517,96.7725244228456,96.7725452616453,96.772558854815,96.772561094147,96.8188646166196,96.818852963239,96.8188316841873,96.8188064259396,96.8187811338238,96.8187578573279,96.8187373462261,96.8187197556304,96.8187050235769,96.818692957134,96.8186833376402,96.8186759862053,96.8186707572948,96.818667543288,96.8186662789214,96.8186669379137,96.8186695333389,96.8186741179463,96.8186807850916,96.818689667841,96.8187009363891,96.818714788965,96.8187314255764,96.8187509808963,96.8187733773271,96.8187980351783,96.8188233866422,96.8188462756456,96.8188617815742,96.8188646253051,95.7318380752176,95.7317962660902,95.731737116765,95.7316837320688,95.7316412500284,95.731608828705,95.731584860278,95.7315664941358,95.7315517518976,95.7315400763221,95.7315309628961,95.7315240324238,95.7315191326711,95.7315161235369,95.7315149397752,95.7315155537734,95.7315179785941,95.731522270359,95.7315285364291,95.7315369488555,95.7315477795418,95.7315614717983,95.7315787747793,95.7316009482744,95.7316299777518,95.7316684572149,95.7317181681809,95.7317757961126,95.7318256749767,95.7318380681796,85.7635069119194,85.7632564345219,85.7629702191071,85.762771118741,85.7626660079835,85.7626073522987,85.7625685279532,85.7625473720986,85.7625347169997,85.7625249873016,85.7625183368327,85.7625133563866,85.7625099249857,85.7625078279493,85.7625069995335,85.7625074156574,85.7625090839871,85.7625120635609,85.7625164939694,85.7625226501179,85.7625311072354,85.7625431112406,85.7625613817747,85.7625916307593,85.7626450687301,85.7627409459825,85.7629045723834,85.7631469859339,85.7634100166792,85.7635069001154,66.4519591141959,66.4510764791869,66.4503302855283,66.4498226042951,66.4495219670474,66.4494230764545,66.4493859653105,66.4493549247665,66.4493461751187,66.4493390258869,66.4493351549514,66.4493324569078,66.4493306798756,66.4493296104744,66.4493291809115,66.4493293823299,66.4493302057437,66.4493317019289,66.4493340256445,66.4493375105787,66.4493429615705,66.449352354001,66.4493705142084,66.4494087708756,66.4494923063629,66.449672359081,66.4500346165565,66.4506734015471,66.4515162009711,66.4519591123612,47.2201022164374,47.2169102441974,47.2148291083741,47.2142198319225,47.2138869230498,47.2135863767775,47.2135660222731,47.2135272123703,47.2135185390999,47.213513370622,47.2135110015201,47.2135096475798,47.2135088301632,47.2135083503087,47.2135081447142,47.2135082346588,47.2135085764595,47.2135092075938,47.2135102868105,47.2135121492332,47.213515677056,47.2135232446116,47.2135411964617,47.2135859915759,47.2136990577351,47.2139777292659,47.2146323818978,47.2159840686097,47.2182630674367,47.2201022175903,33.2138362798176,33.20631489003,33.2006693035547,33.1972131053482,33.1972907795471,33.1968312873463,33.1967711323227,33.1967327275601,33.1967207510608,33.1967161519107,33.1967142892612,33.1967134492287,33.1967130138496,33.1967127529156,33.1967126081937,33.1967126837634,33.1967128455967,33.1967131190496,33.1967136821401,33.1967148587812,33.1967175385167,33.1967243299237,33.196742632684,33.1967933914753,33.1969351337801,33.1973286129377,33.1983691274394,33.2010538076293,33.20635849253,33.2138362809898,24.1955854934,24.1625501047458,24.1643891945363,24.1571042872469,24.1563941971369,24.1559375424542,24.155809876448,24.1557671624515,24.1557522686539,24.1557471831714,24.155745346498,24.1557446218622,24.155744311099,24.1557440837649,24.1557438359823,24.155743960402,24.1557440887059,24.1557442336355,24.1557446115918,24.155745555245,24.155747863113,24.1557543682773,24.1557728799369,24.155827260255,24.1559887064757,24.1564757157425,24.1579761513222,24.162118413777,24.1759560321105,24.1955854947891,18.65,18.4941965474137,18.4840647489113,18.4783830000045,18.4768945630914,18.4764502329031,18.4763014717444,18.4762532791958,18.4762369261638,18.4762312535604,18.476229367947,18.4762285752753,18.4762282609896,18.4762279849169,18.4762274311604,18.4762277875944,18.47622794103,18.4762280126888,18.4762283282105,18.4762292303595,18.4762313388864,18.4762375318218,18.4762550164872,18.476306708692,18.4764662750262,18.4769501884081,18.478578867994,18.4846066942137,18.499163869471,18.65,18.9255234753704,18.7993877294106,18.7836548078748,18.7781586756749,18.776668388347,18.7761942173629,18.7760457137473,18.7759961357717,18.7759794319929,18.7759736721907,18.7759718172737,18.7759709378722,18.7759706165029,18.7759703336254,18.7759697722172,18.7759701290174,18.7759702871814,18.7759703605655,18.7759706820998,18.7759716057924,18.775973842859,18.7759801114746,18.7759980573607,18.7760511750108,18.7762141548847,18.7767160971554,18.7783722798647,18.7843897588586,18.8015291641114,18.9316016754079,15.1365855644767,15.1136402802754,15.1044283991045,15.1009503771133,15.099798260852,15.0994034701098,15.0992676929764,15.0992208569098,15.0992042315599,15.0991982368198,15.0991960627918,15.099195177648,15.0991948117528,15.0991946101262,15.0991944265556,15.0991945093895,15.099194606864,15.0991947245925,15.0991950652121,15.0991959160931,15.0991980252965,15.0992035996471,15.0992191654177,15.0992632888049,15.0993913880144,15.0997964182676,15.100782140738,15.1055275437561,15.1114440202495,15.1365855648831,12.7410266881286,12.7359726079192,12.7321209364801,12.7304257973496,12.7297038746776,12.729430299948,12.729326233168,12.7292870235035,12.7292721185298,12.7292663311513,12.7292640358334,12.729263066631,12.7292626424659,12.7292624360662,12.7292623276292,12.7292623500754,12.7292624277695,12.7292625776899,12.7292629409054,12.7292637750958,12.7292657361474,12.7292705547597,12.7292829056368,12.7293167413233,12.7293956250155,12.7296716958879,12.7300685707917,12.7318410328787,12.7348498000718,12.7410266884409,11.2115335468306,11.2102513157072,11.2089096126661,11.2080951041685,11.2077103269272,11.2075386754269,11.2074666039758,11.2074365651746,11.2074240077878,11.2074186576083,11.207416314598,11.2074152431039,11.2074147372158,11.2074144914431,11.2074143812017,11.2074143810134,11.2074144603791,11.2074146453959,11.2074150513766,11.2074159111144,11.207417763445,11.2074219868088,11.2074313480251,11.2074566031017,11.2075043005051,11.2076616065417,11.207938260876,11.2086729001633,11.209921806718,11.2115335469731,10.2711650507012,10.2708278464659,10.2703321160974,10.2699797695456,10.2697801699303,10.2696804841112,10.2696329347161,10.2696107890566,10.2696004347667,10.2695955164224,10.2695931260663,10.2695919323324,10.2695913262724,10.2695910207744,10.2695908845942,10.2695908703814,10.2695909606227,10.2695911869262,10.2695916541217,10.2695925803645,10.2695943967613,10.2695982196894,10.2696056572126,10.2696236157843,10.2696564132682,10.2697388998971,10.2698848191231,10.2701617967548,10.270638318991,10.2711650511619,9.74891150225297,9.74882011600391,9.74863517198366,9.74847847481716,9.74837673468471,9.74831815477301,9.74828648174984,9.74826976714495,9.74826100458773,9.74825638929579,9.7482539383112,9.74825262574326,9.74825192328056,9.74825155746659,9.74825139142185,9.74825136683608,9.74825146977877,9.74825173561213,9.74825226559198,9.74825326971878,9.74825511645458,9.74825868008244,9.74826509508625,9.74827831924215,9.74830121681441,9.74834699113108,9.74843407907926,9.74857022265999,9.74874668544562,9.7489115034303,9.50943268552934,9.509402081388,9.50932309551193,9.50924444536512,9.50918547519016,9.50914687788119,9.5091233846065,9.50910965900349,9.50910181589488,9.50909738905043,9.50909490826175,9.50909352628551,9.50909276571353,9.50909236256514,9.50909217741249,9.50909214695988,9.50909225837453,9.50909254895115,9.50909311900002,9.50909417082973,9.50909604630239,9.50909946054345,9.5091053431962,9.50911608557681,9.50913446761134,9.50916389087555,9.50921145825257,9.50928363622862,9.50936847030544,9.5094326864142,9.43418627637586,9.4341723289225,9.43412654792178,9.43407497354852,9.43403207323565,9.43400144729898,9.43398144840912,9.43396908968971,9.43396171691907,9.43395741840464,9.43395495153054,9.43395355391401,9.43395277569711,9.43395236005792,9.4339521680349,9.43395213501501,9.4339522485494,9.43395254611852,9.43395312660739,9.4339541859318,9.43395605370203,9.43395935300248,9.43396500192938,9.43397456069613,9.43399053173124,9.4340157829785,9.43405232193346,9.43410042316552,9.43415181336881,9.43418627659392,9.45518227314665,9.45517289247096,9.45513885561672,9.45509793464218,9.45506202457439,9.45503525003618,9.45501715409905,9.45500567050565,9.45499868026294,9.45499454322885,9.45499214277369,9.45499077205105,9.45499000458245,9.45498959312767,9.45498940240195,9.4549893688749,9.45498948039253,9.45498977353312,9.45499034425125,9.45499138000461,9.45499320261299,9.45499636841086,9.45500177628958,9.45501077150972,9.45502523217736,9.45504746124852,9.45507899820176,9.45511861408483,9.45515831228935,9.45518227251288,9.5995601758749,9.59955353895076,9.59952888398724,9.59949807683608,9.59946999083513,9.59944832150161,9.59943324202615,9.59942343916917,9.59941735538761,9.59941369968199,9.59941155357789,9.59941031729791,9.5994096206442,9.59940924543518,9.59940907083709,9.59940903958623,9.59940914069288,9.59940940690472,9.59940992417902,9.59941085712231,9.59941249132197,9.59941530110007,9.59942003654867,9.59942781320383,9.59944010631415,9.59945848620596,9.59948372850509,9.59951426036498,9.5995436120893,9.59956017481112,9.96414586810664,9.96414226149317,9.96412716918113,9.96410732455942,9.96408841079844,9.96407323621212,9.96406231557729,9.96405501336634,9.96405037544912,9.96404753618104,9.96404584467165,9.96404485909328,9.96404429885734,9.96404399506475,9.96404385266671,9.96404382598985,9.96404390589205,9.96404411753594,9.96404452757869,9.96404526181358,9.96404653533269,9.96404869816708,9.96405228551085,9.96405805286093,9.96406694406211,9.96407986163091,9.96409703440118,9.96411703992807,9.96413561325333,9.96414586720338,10.6761079054738,10.6761063510484,10.6760982985084,10.6760870976812,10.6760759231847,10.6760665935124,10.6760596435716,10.6760548578297,10.6760517424957,10.6760497962623,10.6760486175328,10.676047921614,10.6760475218496,10.6760473031469,10.6760471994931,10.6760471785379,10.6760472332194,10.6760473800416,10.676047663495,10.6760481670285,10.6760490309138,10.6760504771501,10.6760528357463,10.6760565537469,10.6760621506568,10.6760700592179,10.6760802641084,10.6760917822729,10.6761021864097,10.6761079053072,11.8808212897356,11.8808207378526,11.8808167819964,11.8808109823319,11.8808049496882,11.880799723344,11.8807957003475,11.8807928496199,11.8807909475339,11.8807897340071,11.8807889858959,11.8807885376348,11.8807882769844,11.88078813295,11.8807880639613,11.8807880491776,11.8807880835507,11.8807881766795,11.8807883551704,11.8807886686109,11.8807891993383,11.880790074845,11.8807914786487,11.8807936496411,11.8807968492144,11.8808012657049,11.8808068259135,11.8808129452307,11.8808183517366,11.8808212895181,13.7840483333515,13.7840482102486,13.7840463892007,13.7840435657143,13.7840405068955,13.7840377614207,13.7840355792634,13.7840339875807,13.784032897516,13.7840321855186,13.784031737186,13.7840314634285,13.7840313016961,13.7840312113448,13.7840311680408,13.7840311592757,13.784031181674,13.7840312402762,13.7840313496962,13.7840315370568,13.7840318466747,13.784032345773,13.784033128537,13.7840343128789,13.7840360200695,13.7840383241613,13.7840411623542,13.7840442245934,13.7840468904698,13.7840483328949,16.7321141553717,16.7321142395231,16.7321134289729,16.7321120879743,16.7321105726081,16.7321091619307,16.7321080010371,16.7321071249913,16.7321065043593,16.7321060848713,16.732105811443,16.7321056387886,16.7321055338666,16.7321054745661,16.7321054473341,16.7321054450361,16.7321054655803,16.7321055115002,16.7321055904479,16.7321057165351,16.7321059123939,16.7321062114492,16.7321066589962,16.7321073092631,16.7321082139175,16.7321093965346,16.7321108111694,16.7321122953695,16.732113550769,16.7321141546867,21.3326085148655,21.3326087035107,21.3326083190302,21.3326076064595,21.3326067641083,21.3326059465181,21.3326052414884,21.3326046803606,21.3326042580699,21.332603952825,21.3326037391114,21.3326035943697,21.3326035013038,21.3326034479115,21.3326034266564,21.3326034335346,21.332603467415,21.3326035298079,21.3326036250242,21.332603760662,21.3326039482984,21.3326042040602,21.3326045482309,21.3326050025005,21.3326055829392,21.3326062865997,21.332607071731,21.3326078347291,21.3326084101669,21.332608514496,28.6179953635649,28.6179955534611,28.6179951918148,28.6179945233043,28.6179937230316,28.617992920105,28.6179921896245,28.6179915663178,28.6179910574307,28.6179906558626,28.6179903490797,28.6179901242958,28.6179899708466,28.6179898809215,28.6179898495123,28.617989874107,28.6179899543924,28.6179900921274,28.6179902911138,28.6179905571565,28.6179908978571,28.6179913218953,28.6179918371201,28.6179924465294,28.6179931412484,28.6179938899425,28.6179946264267,28.6179952339613,28.6179955580206,28.617995363309,40.1012472424077,40.1012473522036,40.1012465010582,40.101245125038,40.1012435248548,40.1012419163093,40.1012404231906,40.101239107858,40.1012379922477,40.1012370761712,40.101236349443,40.1012357990725,40.1012354130402,40.1012351820359,40.1012351000677,40.1012351645399,40.1012353761632,40.1012357388712,40.1012362596221,40.1012369478045,40.1012378139717,40.1012388671982,40.1012401099125,40.1012415288124,40.101243081043,40.1012446759759,40.101246157637,40.1012472898167,40.1012477722363,40.1012472439053,56.9950284543417,56.9950280798254,56.9950255557994,56.9950218408077,56.9950176453857,56.9950134712305,56.9950096067222,56.9950061935402,56.995003282048,56.9950008733941,56.9949989467324,56.99499747482,56.9949964320744,56.9949957984418,56.9949955610733,56.9949957148022,56.9949962621774,56.9949972134202,56.9949985859804,56.9950004030871,56.9950026906279,56.9950054706392,56.9950087486113,56.9950124908247,56.995016589167,56.9950208143206,56.9950247691259,56.9950278628829,56.9950293579139,56.9950284595378,77.1848400143458,77.1848376179176,77.1848309036836,77.1848217041181,77.1848116096931,77.1848017146078,77.184792637579,77.1847846634932,77.1847778794524,77.1847722711115,77.1847677816381,77.1847643446746,77.184761900507,77.1847604030203,77.1847598227964,77.184760148098,77.1847613848863,77.1847635568876,77.1847667049,77.1847708842242,77.1847761588731,77.1847825888169,77.1847902038292,77.1847989542214,77.1848086294952,77.1848187429831,77.1848284069219,77.1848362645984,77.1848406424502,77.1848400224522,92.3927441429416,92.3927382478282,92.3927248614768,92.3927074646583,92.3926889456678,92.3926711480317,92.3926550406981,92.3926410146128,92.3926291439133,92.3926193588069,92.3926115373103,92.3926055512202,92.3926012905905,92.3925986730197,92.3925976463743,92.3925981898658,92.3926003139233,92.3926040604129,92.3926095021404,92.3926167399407,92.3926258954799,92.3926370940664,92.3926504263912,92.3926658704812,92.3926831516947,92.3927015243532,92.392719503498,92.3927346759001,92.3927439118631,92.3927441492807,96.7733632560857,96.7733532023234,96.7733341176721,96.7733106963848,96.7732865851165,96.7732639257093,96.7732437211149,96.7732263042983,96.7732116598894,96.7731996298748,96.7731900304236,96.773182690687,96.7731774678874,96.77317425745,96.7731729943905,96.7731736527431,96.7731762454724,96.7731808247775,96.7731874824871,96.773196348179,96.7732075841365,96.7732213711998,96.7732378729883,96.7732571540686,96.7732790165348,96.7733027119664,96.773326524869,96.7733473843291,96.7733609988243,96.7733632583342,96.8184927875923,96.8184811353064,96.8184598716453,96.8184346377045,96.8184093509441,96.8183860601083,96.8183655448987,96.8183479617448,96.8183332305385,96.8183211625933,96.8183115438841,96.8183041925988,96.8182989636072,96.8182957497157,96.8182944853316,96.8182951443199,96.8182977397073,96.8183023242506,96.8183089912943,96.8183178738841,96.8183291421687,96.8183429942794,96.8183596300253,96.8183791837099,96.8184015771071,96.8184262297727,96.8184515731257,96.818474452441,96.8184899489259,96.8184927857727,95.7538466921604,95.7538054086501,95.7537465179083,95.7536932715497,95.7536511553617,95.7536190627622,95.7535950456329,95.7535766200889,95.7535619126904,95.7535502249855,95.7535410963717,95.7535341638189,95.7535292570681,95.7535262457145,95.7535250610254,95.7535256764291,95.7535281047056,95.7535324019783,95.7535386754039,95.7535470964047,95.7535579352241,95.7535716312071,95.7535889248207,95.7536110582021,95.7536399858276,95.7536782556357,95.7537276113352,95.7537847662272,95.7538342453298,95.753846686697,86.0570862236317,86.0568406113666,86.0565602361788,86.0563633582862,86.0562552035466,86.0561961986264,86.0561588383756,86.0561373444169,86.0561244081186,86.0561147868787,86.0561079936356,86.0561029886375,86.0560995156778,86.0560973987104,86.0560965629933,86.0560969860753,86.05609867535,86.0561016899889,86.0561061696921,86.0561123884461,86.0561209177412,86.0561329925034,86.056151303946,86.0561814963585,86.0562346287577,86.056329682888,86.0564915102704,86.0567309478549,86.0569906135623,86.0570862160141,67.0813055762862,67.0804268392046,67.0796688516691,67.0791800124656,67.0788968265598,67.0787899719589,67.078750288395,67.0787223185404,67.0787119154006,67.0787051254414,67.078701058164,67.0786983144648,67.0786964897816,67.078695392877,67.0786949529572,67.0786951608252,67.0786960076711,67.078697544849,67.0786999290031,67.0787034967367,67.0787090579085,67.0787185957852,67.0787369480554,67.0787754425751,67.0788592091685,67.0790391222845,67.079400266473,67.0800340460223,67.0808678010518,67.0813055690601,47.889609345837,47.8865644821156,47.8845028571457,47.8837721698332,47.8834331233794,47.8831750621403,47.8831309450016,47.8830991716334,47.8830886999109,47.8830836960316,47.8830812416011,47.8830798433075,47.8830789987228,47.8830785009551,47.8830782886005,47.8830783819891,47.8830787371226,47.8830793923031,47.8830805096095,47.8830824294346,47.8830860475949,47.8830937689611,47.8831120104363,47.8831573755539,47.8832715153195,47.8835521934312,47.8842077147218,47.8855612487484,47.8878111127403,47.8896093426913,33.7551749455407,33.7473292014834,33.7421063478844,33.7390908344563,33.7388339390103,33.7384808259282,33.7383969206692,33.7383614058368,33.7383490736376,33.73834434236,33.7383424583306,33.7383415889413,33.7383411411091,33.7383408731645,33.7383407251968,33.7383408020154,33.7383409701561,33.7383412544482,33.7383418371915,33.738343049255,33.7383457965228,33.7383527323722,33.7383713833267,33.7384230061714,33.7385667981262,33.7389644410369,33.7400169819301,33.7426865217381,33.7480535289119,33.75517494512,24.6000118690065,24.5686907856865,24.566214982033,24.5606199993038,24.5595829692178,24.5591603268855,24.559030671402,24.5589863058526,24.5589714639279,24.5589662472291,24.5589643855471,24.5589636459463,24.5589633181011,24.5589630881509,24.5589628437778,24.5589629685743,24.5589630990997,24.558963249328,24.5589636398313,24.5589646069361,24.5589669832064,24.5589736334915,24.5589925447628,24.559048014758,24.5592127906706,24.5597080313048,24.561221583862,24.5654876414377,24.5787729225136,24.6000118697012,18.9255235893517,18.799387965079,18.7836550437371,18.778158911552,18.7766686242355,18.7761944532538,18.7760459496391,18.7759963716638,18.7759796678851,18.7759739080829,18.7759719352199,18.7759711737644,18.7759708523952,18.7759705695177,18.7759700081094,18.7759703649096,18.7759705230736,18.7759705964577,18.775970917992,18.7759718416846,18.7759739608051,18.7759803473668,18.7759982932528,18.7760514109026,18.7762143907758,18.7767163330446,18.7783725157469,18.7843899947209,18.8015293998742,18.9316017981708,19.1643022869807,19.0593955235811,19.0399918164466,19.0345606810812,19.0330441385568,19.0325567568719,19.0324062940571,19.0323558308992,19.0323388705202,19.0323330350061,19.0323311455362,19.0323302581633,19.032329930783,19.032329642676,19.0323290760852,19.0323294265587,19.0323295929451,19.0323296661699,19.032329997166,19.032330934215,19.0323332169677,19.0323396082374,19.0323579277495,19.0324122056664,19.0325781291075,19.0330934921661,19.0347776089881,19.0407856168189,19.0598176708554,19.1749315675488,15.3342692120055,15.3071406670644,15.2980868785848,15.2943863014092,15.2932036861038,15.2927970965662,15.2926579979404,15.2926100872261,15.2925931344381,15.2925870363013,15.2925848302628,15.2925839307871,15.2925835605148,15.2925833511697,15.2925831599951,15.2925832476028,15.2925833463605,15.2925834654671,15.292583810581,15.2925846751761,15.292586825772,15.2925925314807,15.2926084484837,15.2926538731278,15.2927860257999,15.2931950907933,15.2943143422327,15.2986482143942,15.3080467216759,15.334269212418,12.8918988386733,12.8865318701802,12.8824317126049,12.8806574620867,12.879906915165,12.8796233511648,12.8795160374773,12.8794757661692,12.8794604999214,12.8794545953724,12.8794522618094,12.8794512797179,12.8794508511438,12.8794506425849,12.8794505311709,12.879450553991,12.8794506327801,12.8794507845205,12.8794511523406,12.879452000008,12.8794539984751,12.8794589387081,12.8794716690773,12.8795059696918,12.8795927931657,12.8798497014817,12.8803991693926,12.8819339928479,12.8848615055227,12.8918988389009,11.3315804610408,11.3302012817331,11.3287692320752,11.3279146478371,11.3275102663977,11.3273318454595,11.3272570880361,11.3272261040424,11.3272132102128,11.3272077411157,11.327205357024,11.3272042712259,11.3272037602785,11.3272035125385,11.3272034012474,11.3272034010548,11.3272034810815,11.3272036678912,11.3272040785151,11.3272049514,11.3272068427938,11.32721113277,11.3272210493993,11.3272455877419,11.3273018307541,11.3274459789497,11.3277578052885,11.3285914562469,11.3298729371779,11.3315804610072,10.3694877892049,10.3691259530564,10.3685986349009,10.3682247474943,10.3680153121664,10.3679108853957,10.367861458572,10.3678385419349,10.3678278896652,10.3678228564796,10.3678204221427,10.3678192114986,10.3678185988026,10.3678182906168,10.3678181533953,10.3678181391742,10.3678182303411,10.3678184590991,10.3678189323649,10.3678198706685,10.367821738581,10.3678255692077,10.3678335902521,10.3678510374439,10.3678874654302,10.3679737123111,10.3681193797561,10.3684190025543,10.3689298768676,10.3694877890939,9.83481930302604,9.8347210735281,9.83452608427701,9.83436160048649,9.83425508917402,9.83419412313675,9.8341612651587,9.83414400521852,9.83413498841122,9.83413025479094,9.83412774752062,9.83412640754007,9.83412569146179,9.83412531892243,9.83412514992173,9.83412512489275,9.8341252297552,9.83412550053881,9.83412604205283,9.8341270629366,9.83412897337444,9.83413256312095,9.8341393343408,9.83415278976234,9.83417634807682,9.83422511547149,9.83431469633446,9.83445598811445,9.83464461560332,9.83481930432759,9.59458770845768,9.59455656614342,9.59447533455154,9.5943944242545,9.59433372760107,9.59429397780184,9.59426978955758,9.59425565649486,9.59424758216831,9.59424302522576,9.59424047182113,9.59423904951831,9.59423826680839,9.59423785195125,9.59423766142729,9.59423763005562,9.59423774475651,9.59423804359232,9.59423863151479,9.59423971038136,9.59424165251808,9.59424514658373,9.59425121928908,9.59426234095639,9.59428109519174,9.59431162764683,9.59436129674601,9.59443525906948,9.59452184441332,9.5945877096829,9.52308607106115,9.52307171911953,9.52302475288113,9.52297177384762,9.52292766871228,9.5228961588494,9.52287556913033,9.52286283973323,9.52285524296826,9.52285081274367,9.52284826978917,9.52284682887835,9.52284602648018,9.52284559789775,9.52284539988239,9.52284536579372,9.52284548291397,9.52284578954788,9.52284638889628,9.52284747961187,9.5228494080506,9.52285281114783,9.52285862101278,9.52286849954935,9.52288495918932,9.52291081955012,9.52294838846027,9.52299804091842,9.52305093897807,9.52308607125255,9.54223957282253,9.54222984966768,9.54219467036479,9.54215239372886,9.54211530122743,9.5420876497469,9.54206896370231,9.54205710694678,9.54204989030787,9.54204561964121,9.54204314182358,9.54204172700178,9.54204093487076,9.54204051019274,9.54204031331537,9.54204027863245,9.54204039367178,9.54204069595856,9.5420412850232,9.54204235364238,9.54204423366267,9.54204750350062,9.54205308441671,9.5420623618715,9.54207731192907,9.54210030440727,9.54213286891077,9.54217376256631,9.54221481445459,9.54223957213102,9.68361467888927,9.68360792406749,9.68358284827388,9.68355148863023,9.68352287219793,9.68350077323235,9.68348538209003,9.68347536955572,9.68346915201716,9.68346541419129,9.68346321907438,9.68346195420632,9.68346124129265,9.683460857261,9.68346067852508,9.68346064648358,9.68346074992455,9.68346102227983,9.68346155146821,9.68346250607384,9.68346417729092,9.68346704963386,9.68347189199824,9.68347983767537,9.68349238269728,9.68351113297435,9.68353687554121,9.68356797482958,9.68359783993695,9.6836146773474,10.0544989663184,10.0544954448899,10.054480475295,10.0544607138602,10.0544418265481,10.0544266388156,10.0544156883522,10.0544083550011,10.054403691522,10.0544008337594,10.0543991298875,10.0543981364915,10.0543975715366,10.0543972650553,10.0543971213141,10.0543970942611,10.054397174634,10.0543973877193,10.0543978004463,10.054398539214,10.0543998201618,10.0544019934936,10.0544055943238,10.0544113781833,10.0544202831391,10.0544331973107,10.0544503346045,10.0544702636328,10.0544887440671,10.0544989658416,10.7835777071643,10.7835761923188,10.7835682586655,10.7835571898612,10.7835461207544,10.7835368599191,10.7835299490146,10.7835251829886,10.7835220765823,10.7835201339072,10.7835189563327,10.7835182606172,10.7835178607462,10.7835176418782,10.7835175380787,10.7835175170008,10.7835175715352,10.7835177181044,10.78351800105,10.7835185034169,10.7835193648378,10.7835208062422,10.783523155167,10.783526854283,10.7835324170331,10.7835402681544,10.7835503853632,10.7835617858354,10.7835720635752,10.7835777073565,12.0136454300605,12.0136448927136,12.0136409943497,12.0136352651987,12.0136292953179,12.0136241149316,12.0136201215362,12.0136172881701,12.0136153955662,12.0136141869313,12.0136134412242,12.0136129940928,12.0136127339502,12.0136125901328,12.0136125212257,12.0136125064461,12.0136125407365,12.0136126336165,12.01361281154,12.0136131238007,12.0136136521309,12.0136145229811,12.0136159182597,12.0136180743292,12.0136212489927,12.0136256266193,12.0136311323582,12.0136371862028,12.0136425289078,12.0136454299569,13.9525025670741,13.9525024545947,13.9525006607294,13.9524978700215,13.9524948414378,13.9524921189886,13.9524899522025,13.9524883697858,13.9524872848413,13.9524865754451,13.9524861283146,13.952485855047,13.9524856934828,13.9524856031861,13.9524855599257,13.952485551232,13.9524855737253,13.9524856323981,13.9524857417543,13.9524859287206,13.9524862372817,13.952486734082,13.9524875123649,13.9524886886958,13.9524903827065,13.9524926668456,13.9524954776762,13.9524985076886,13.9525011425808,13.9525025666957,16.951845927813,16.9518460207719,16.9518452218438,16.9518438923425,16.951842387161,16.9518409839038,16.9518398274825,16.9518389535486,16.9518383334843,16.9518379137153,16.9518376396524,16.9518374663164,16.9518373608397,16.9518373012028,16.9518372738973,16.9518372718073,16.9518372928419,16.9518373395205,16.9518374194598,16.9518375466936,16.951837743707,16.9518380436799,16.9518384915166,16.9518391408509,16.9518400425717,16.9518412194906,16.951842625117,16.951844097358,16.9518453380495,16.9518459271933,21.627368988133,21.6273691909916,21.6273688096174,21.6273680960439,21.6273672508964,21.6273664292091,21.6273657194063,21.6273651532624,21.6273647261653,21.6273644166211,21.6273641993003,21.6273640517351,21.6273639566662,21.6273639021006,21.6273638805014,21.6273638878658,21.627363923069,21.6273639876324,21.6273640858794,21.6273642254109,21.6273644177749,21.6273646790028,21.627365029174,21.6273654896158,21.6273660758139,21.6273667840323,21.6273675714858,21.6273683335108,21.627368900576,21.6273689877994,29.0186820870633,29.0186822833432,29.0186819147624,29.0186812294435,29.0186804094795,29.0186795858551,29.0186788357333,29.0186781946353,29.0186776702949,29.0186772557792,29.0186769385687,29.0186767058097,29.0186765467478,29.0186764534937,29.0186764209874,29.0186764466983,29.0186765303326,29.0186766737045,29.0186768807022,29.0186771572332,29.0186775109923,29.0186779506906,29.0186784840567,29.0186791136786,29.0186798297857,29.0186805994614,29.0186813539304,29.0186819732799,29.0186822962629,29.0186820868758,40.6258779630454,40.6258780845351,40.6258772079429,40.6258757818692,40.625874125707,40.625872460295,40.6258709141752,40.6258695517197,40.6258683957071,40.6258674460588,40.625866692392,40.6258661214174,40.6258657208079,40.625865481001,40.6258653958458,40.6258654626884,40.6258656822827,40.6258660587081,40.6258665991606,40.6258673133351,40.6258682121077,40.6258693047879,40.6258705937574,40.6258720650556,40.6258736740551,40.6258753266354,40.6258768608833,40.6258780320371,40.6258785272793,40.6258779645696,57.5768115531531,57.5768111361565,57.5768085408641,57.5768047122748,57.576800392259,57.5767960945327,57.5767921158315,57.5767886017181,57.5767856040367,57.5767831239985,57.5767811400901,57.5767796242597,57.5767785502307,57.5767778973928,57.5767776525275,57.5767778103262,57.576778373418,57.5767793523233,57.5767807650005,57.5767826353607,57.5767849900658,57.5767878518422,57.5767912264333,57.5767950792954,57.576799299371,57.5768036508539,57.5768077249784,57.5768109142895,57.5768124541764,57.5768115581379,77.5957175627392,77.5957150903936,77.5957082611407,77.5956989014168,77.5956886335415,77.5956785701272,77.5956693403255,77.5956612329491,77.5956543355102,77.5956486332255,77.5956440684741,77.5956405736574,77.5956380879369,77.595636564448,77.5956359732682,77.5956363024323,77.5956375579852,77.5956397640253,77.5956429620109,77.5956472081687,77.5956525676386,77.5956591015619,77.5956668405773,77.5956757348481,77.5956855714297,77.5956958569432,77.5957056898653,77.5957136932144,77.5957181588431,77.5957175704669,92.4890470377702,92.4890410805698,92.489027615015,92.4890101299778,92.4889915235075,92.4889736439282,92.4889574625836,92.4889433734889,92.4889314512488,92.4889216238353,92.4889137680856,92.4889077556475,92.4889034759621,92.4889008461227,92.4888998138002,92.4889003580768,92.4889024893947,92.4889062497802,92.4889117123304,92.4889189783249,92.4889281700268,92.4889394134959,92.4889528002797,92.4889683092071,92.4889856659141,92.4890041236087,92.4890221924424,92.4890374510844,92.4890467463983,92.4890470440971,96.7740801626512,96.7740700941857,96.7740509899355,96.7740275458222,96.7740034168483,96.7739807515323,96.7739605470686,96.7739431281466,96.7739284809196,96.7739164503605,96.7739068507656,96.7738995106099,96.7738942876468,96.77389107712,96.773889813995,96.7738904723536,96.7738930651322,96.7738976445464,96.773904302432,96.7739131683943,96.7739244047752,96.7739381925421,96.7739546955818,96.7739739789874,96.7739958458015,96.7740195490481,96.7740433748475,96.7740642526855,96.7740778862483,96.7740801649157,96.8181872731207,96.8181756286706,96.8181543759897,96.8181291600086,96.8181038796799,96.8180805806021,96.8180600608584,96.8180424820352,96.8180277522631,96.8180156833717,96.8180060649966,96.8179987138967,96.8179934848453,96.817990271022,96.8179890066318,96.8179896656153,96.8179922609774,96.8179968454762,96.8180035124479,96.8180123949206,96.8180236630033,96.8180375147425,96.8180541497728,96.8180737020715,96.8180960928573,96.8181207409876,96.8181460771819,96.8181689481052,96.8181844348385,96.8181872712608,95.7733743596652,95.7733335444812,95.7732749334998,95.7732218340963,95.7731799754497,95.7731481512975,95.7731241361484,95.7731056592596,95.7730909679975,95.7730792754427,95.7730701335577,95.7730631978974,95.7730582856684,95.7730552720521,95.7730540866156,95.7730547032399,95.7730571345823,95.7730614367367,95.7730677166844,95.7730761452851,95.7730869913008,95.7731006905396,95.7731179757127,95.7731400732281,95.7731689097462,95.7732069923222,95.7732560296425,95.7733127604721,95.7733618802995,95.7733743541848,86.3101071647252,86.3098657098222,86.3095899301633,86.309395373762,86.3092852527912,86.3092256113141,86.3091892536598,86.3091676856974,86.3091544869251,86.3091449236059,86.3091380320446,86.3091329959841,86.3091294898988,86.3091273550611,86.3091265131205,86.3091269421978,86.3091286495577,86.3091316944784,86.3091362167321,86.3091424894637,86.3091510808174,86.3091632159135,86.3091815607666,86.3092116995642,86.309264558375,86.3093588773663,86.3095191169402,86.3097559105562,86.3100125810674,86.3101071573082,67.6244661238071,67.6235938695787,67.6228271828631,67.6223506966802,67.6220818958909,67.6219710424906,67.6219283783283,67.6219025963057,67.6218911849864,67.6218845344919,67.6218803445742,67.6218775519262,67.6218756869507,67.6218745661149,67.6218741171011,67.6218743306792,67.6218751979864,67.62187677089,67.6218792076609,67.6218828472303,67.6218885033566,67.6218981650336,67.6219166770692,67.6219553602394,67.6220392809209,67.6222189874817,67.6225789068058,67.6232081301511,67.6240334550016,67.624466116959,48.4705037080827,48.4675750944463,48.4655378315302,48.4647229312222,48.4643672928366,48.4641428590377,48.4640835735622,48.4640555115996,48.464044142979,48.4640391651513,48.4640366465862,48.4640352110701,48.4640343415988,48.4640338286276,48.4640336103161,48.464033706803,48.4640340738289,48.4640347501465,48.4640359008041,48.4640378706883,48.4640415668438,48.4640494186465,48.4640679015785,48.4641137320058,48.4642287213205,48.4645108600527,48.4651667706338,48.4665194538671,48.4687439435024,48.4705037049893,34.2247034260457,34.2166683551359,34.2117049769114,34.2090582820034,34.2085671603496,34.2082761435899,34.2081800729702,34.2081457479259,34.2081331752621,34.2081283729841,34.2081264574466,34.2081255667369,34.2081251067741,34.2081248320061,34.2081246815175,34.2081247591036,34.2081249327642,34.2081252265912,34.2081258267778,34.208127069194,34.208129874471,34.2081369318771,34.2081558699347,34.2082081922048,34.2083536292798,34.2087545077821,34.2098154501244,34.2124728507678,34.2178639288342,34.2247034255696,24.9485241872251,24.9188331631789,24.9132144831678,24.9087469146341,24.9075320405518,24.9071259799875,24.9069944204833,24.9069494144593,24.906934440688,24.9069291471019,24.9069272588083,24.9069265059956,24.9069261695246,24.9069259363985,24.9069256960079,24.9069258218453,24.9069259545739,24.9069261086041,24.90692650925,24.9069274969307,24.9069299260402,24.9069366943611,24.9069559373504,24.9070123026718,24.907179701441,24.9076816937133,24.9092053064245,24.9135578581547,24.9264421678549,24.9485241878402,19.1643024068384,19.0593957712787,19.0399920643562,19.0345609290054,19.033044386493,19.0325570048098,19.0324065419957,19.0323560788382,19.0323391184592,19.0323332829451,19.0323312695057,19.0323305061024,19.0323301787221,19.032329890615,19.0323293240242,19.0323296744977,19.0323298408841,19.0323299141089,19.032330245105,19.032331182154,19.0323333409373,19.0323398561763,19.0323581756884,19.0324124536051,19.0325783770455,19.0330937401023,19.0347778569175,19.0407858647247,19.0598179186343,19.1749316960263,19.3680103366717,19.2784870818804,19.2566412809383,19.2512116519734,19.2496624095036,19.2491692546422,19.2490163598742,19.2489652894143,19.2489481328765,19.2489422347156,19.2489403233079,19.2489394253548,19.2489390919496,19.2489388011784,19.2489382362188,19.2489385735061,19.2489387479925,19.2489388243749,19.2489391575669,19.2489401080382,19.248942427143,19.2489489157806,19.24896754054,19.2490227554556,19.249191146039,19.2497167129254,19.2514260461647,19.2574279262952,19.2778582479265,19.3820943520093,15.4987620154803,15.469290032793,15.4599371170483,15.4561248738759,15.4549075408177,15.4544912889996,15.4543496555481,15.454300833419,15.4542836271358,15.4542774478913,15.4542752172136,15.4542743079773,15.4542739343696,15.4542737178584,15.45427352104,15.4542736126943,15.4542737118215,15.4542738324181,15.4542741814774,15.45427505597,15.4542772400816,15.4542830499933,15.4542992597549,15.4543456977354,15.4544812539258,15.4548949411391,15.4561078428189,15.4602116539502,15.4720430465639,15.4987620159237,13.0162645601244,13.0104776318846,13.0062445859429,13.0043785135412,13.0036075550917,13.0033150551463,13.0032050762601,13.0031639386129,13.0031483824458,13.0031423867772,13.0031400244059,13.0031390329511,13.0031386016335,13.0031383914799,13.0031382776796,13.0031383009268,13.0031383804754,13.0031385332645,13.0031389044107,13.0031397619465,13.0031417898764,13.0031468241334,13.0031598592713,13.0031946795853,13.0032867331371,13.0035361245809,13.0041802438639,13.0055858476484,13.0087097034972,13.0162645603055,11.4281783576003,11.426714544841,11.4251946640227,11.4243079636143,11.4238859899345,11.4237018928061,11.4236248821163,11.4235931253505,11.4235799630236,11.4235744027638,11.4235719889061,11.4235708936229,11.4235703797573,11.4235701310497,11.423570019127,11.4235700189057,11.4235700992989,11.4235702871021,11.4235707006012,11.4235715823706,11.4235735021984,11.4235778542736,11.4235881214122,11.4236126348854,11.4236736154257,11.4238127808966,11.4241546827842,11.4250077131869,11.4263219459953,11.428178357501,10.4454480517561,10.4450658640419,10.4445097472404,10.4441163595652,10.4438980763654,10.4437895246393,10.4437384810837,10.4437149283562,10.443704040604,10.4436989227372,10.443696459236,10.4436952390988,10.4436946235478,10.4436943145898,10.4436941771967,10.4436941630703,10.443694254611,10.4436944844161,10.4436949607214,10.4436959066397,10.4436978041626,10.4437016731144,10.4437100003538,10.4437274839363,10.4437664245297,10.443853395203,10.4440101342174,10.4443383350232,10.4448686342083,10.4454480511206,9.8963150006845,9.89620990869317,9.89600503188365,9.89583297722911,9.89572201768997,9.89565885425991,9.89562496842673,9.89560725680616,9.89559804483136,9.89559322764836,9.895590684289,9.8955893284198,9.89558860516892,9.89558822935839,9.89558805901379,9.89558803383567,9.89558813969368,9.89558841310532,9.8955889606979,9.89558999325526,9.89559193707922,9.89559557236579,9.89560256589386,9.89561614920472,9.8956410197736,9.89569114522656,9.89578054390443,9.89592828080723,9.8961311008575,9.89631500138008,9.65229015218094,9.65225851634512,9.65217557734218,9.65209293334641,9.65203091227981,9.65199029253347,9.65196558035726,9.65195114449997,9.65194289940932,9.65193824720276,9.65193564092739,9.65193418940172,9.65193339070099,9.65193296740092,9.65193277300044,9.65193274094773,9.65193285794983,9.65193316285735,9.65193376299164,9.65193486356017,9.65193685013873,9.65194040391649,9.65194665702033,9.65195793681184,9.65197705086323,9.65200903728035,9.6520604358541,9.65213529298907,9.65222326185321,9.652290154256,9.58456694375525,9.58455240582268,9.5845047869664,9.58445095042516,9.58440605495544,9.5843739367145,9.58435292749448,9.58433992856375,9.58433216641814,9.58432763782144,9.58432503760391,9.58432356393052,9.58432274317011,9.58432230474361,9.58432210217644,9.58432206731405,9.58432218717541,9.58432250096109,9.58432311442864,9.58432422959089,9.58432620566174,9.58432967828241,9.58433562558049,9.58434575254882,9.58436247052896,9.58438868995923,9.58442704889202,9.58447775055457,9.58453155758015,9.58456694376989,9.60153058139433,9.60152052366558,9.60148437559655,9.60144098161783,9.60140292977098,9.60137457330131,9.6013554157847,9.60134326227024,9.60133586616238,9.60133148983337,9.60132895095819,9.6013275013794,9.60132668982721,9.60132625473842,9.60132605300643,9.60132601740218,9.60132613514278,9.60132644460753,9.60132704803901,9.60132814194964,9.60133006868169,9.60133341932149,9.60133913284995,9.60134864847423,9.60136401232913,9.60138761724516,9.60142101947305,9.60146298781885,9.60150518927684,9.60153058057104,9.74152370789489,9.74151693219033,9.74149175073114,9.74146021492732,9.74143139860183,9.74140911712473,9.74139358162947,9.74138346567012,9.74137717903932,9.74137339732762,9.74137117535665,9.74136989453829,9.74136917243546,9.7413687833775,9.74136860227717,9.74136856980127,9.74136867461236,9.74136895050126,9.74136948661701,9.7413704533706,9.74137214508694,9.74137505241908,9.74137995108431,9.74138797814452,9.74140064016268,9.74141955549635,9.74144549882682,9.74147678690015,9.74150679759681,9.74152370587375,10.1218718183134,10.1218684335766,10.1218537421615,10.1218342543471,10.1218155671683,10.1218005014643,10.1217896163169,10.1217823144082,10.1217776646307,10.1217748121894,10.121773110045,10.1217721169967,10.121771551942,10.1217712452616,10.1217711013245,10.1217710740715,10.1217711541837,10.1217713667971,10.1217717785591,10.1217725153577,10.1217737920843,10.1217759561737,10.1217795386341,10.1217852869375,10.1217941226606,10.1218069115948,10.1218238515383,10.1218435134145,10.1218617226319,10.1218718187918,10.8684500369859,10.8684485531473,10.8684407544396,10.8684298505598,10.8684189245195,10.8684097665859,10.8684029214784,10.8683981943055,10.8683951096438,10.8683931787086,10.8683920073284,10.8683913148316,10.8683909166067,10.8683906985458,10.8683905950776,10.8683905740016,10.8683906282061,10.8683907739793,10.8683910553352,10.8683915546717,10.868392410559,10.8683938419342,10.8683961727804,10.8683998406722,10.8684053521669,10.8684131228955,10.868423124049,10.8684343753934,10.8684444951209,10.8684500373191,12.1217151620134,12.1217146433205,12.1217108100544,12.1217051623825,12.1216992673412,12.1216941439528,12.1216901891781,12.1216873798867,12.1216855014408,12.1216843007891,12.1216835594495,12.1216831146534,12.121682855733,12.1216827125323,12.1216826438986,12.1216826291605,12.1216826632622,12.1216827556205,12.1216829324614,12.1216832426266,12.1216837670369,12.1216846308288,12.1216860137773,12.1216881489467,12.1216912899581,12.1216956170941,12.1217010546294,12.1217070298223,12.1217123006013,12.1217151619786,14.0921215069441,14.0921214022793,14.0921196370564,14.0921168810923,14.09211388612,14.0921111901098,14.0921090417752,14.092107471083,14.0921063930767,14.0921056875486,14.0921052424636,14.0921049702268,14.0921048091632,14.0921047191123,14.0921046759877,14.0921046673831,14.0921046899222,14.0921047485446,14.0921048576309,14.0921050438838,14.0921053508955,14.0921058446623,14.0921066174588,14.0921077844868,14.0921094636961,14.0921117259015,14.0921145069529,14.0921175015989,14.092120102526,14.0921215065988,17.1362246472689,17.1362247416153,17.1362239563672,17.1362226388396,17.1362211453005,17.1362197509564,17.1362186004405,17.1362177298406,17.1362171113106,17.1362166919859,17.1362164178089,17.1362162441495,17.1362161383507,17.136216078512,17.136216051188,17.1362160492907,17.1362160707339,17.1362161180194,17.136216198717,17.136216326766,17.1362165244832,17.1362168247631,17.1362172720615,17.1362179193738,17.1362188168129,17.1362199865184,17.1362213817594,17.1362228411181,17.136224066145,17.1362246466881,21.8768535436356,21.8768537496693,21.876853372631,21.8768526586648,21.8768518120926,21.8768509877811,21.8768502746112,21.8768497047124,21.8768492738677,21.8768489608784,21.8768487406124,21.8768485907134,21.8768484939768,21.8768484384337,21.8768484165575,21.8768484243515,21.8768484606986,21.8768485271284,21.876848627971,21.8768487708199,21.8768489671839,21.8768492329949,21.8768495881324,21.8768500535763,21.8768506442658,21.8768513557344,21.876852144212,21.8768529048,21.8768534611579,21.8768535433242,29.3597046679209,29.3597048682066,29.3597044949934,29.359703795337,29.3597029585152,29.3597021172542,29.3597013503403,29.3597006940128,29.3597001564163,29.3596997307714,29.3596994045794,29.3596991649424,29.3596990010367,29.35969890491,29.359698871461,29.3596988981458,29.359698984688,29.3596991329496,29.3596993468916,29.359699632508,29.3596999975679,29.3597004508007,29.3597009998186,29.359701646843,29.3597023813156,29.3597031689949,29.3597039386546,29.3597045685987,29.3597048887984,29.359704667773,41.0732834676003,41.0732835902088,41.0732826898494,41.0732812207248,41.0732795159715,41.0732778013659,41.0732762093677,41.0732748061125,41.073273615106,41.0732726363847,41.0732718593893,41.0732712705653,41.073270857325,41.0732706098917,41.0732705219765,41.0732705908755,41.0732708173812,41.0732712056989,41.0732717632308,41.0732724999366,41.0732734269718,41.0732745538489,41.0732758829078,41.0732773996181,41.0732790577961,41.0732807603653,41.0732823399935,41.0732835454474,41.0732840497859,41.073283469119,58.0715830097596,58.0715825741578,58.0715799166743,58.0715759903674,58.0715715628436,58.0715671586328,58.0715630815552,58.0715594805631,58.0715564086707,58.0715538671328,58.0715518339094,58.0715502802528,58.0715491792688,58.0715485098718,58.0715482585284,58.0715484198057,58.071548996401,58.0715499990927,58.0715514462766,58.0715533624507,58.0715557749442,58.07155870708,58.0715621648227,58.0715661129339,58.071570437815,58.0715748981571,58.0715790750559,58.0715823469287,58.0715839272317,58.0715830145444,77.9431916432051,77.9431890891172,77.9431821607835,77.9431726651139,77.9431622494806,77.9431520428737,77.9431426828817,77.9431344619226,77.9431274680273,77.9431216858656,77.943117057044,77.9431135129895,77.9431109919183,77.9431094462988,77.9431088457869,77.9431091782262,77.9431104497293,77.9431126847119,77.9431159251948,77.9431202281925,77.9431256598051,77.9431322821742,77.9431401266792,77.9431491433724,77.9431591172341,77.9431695492142,77.9431795261336,77.9431876534437,77.9431921943705,77.9431916506173,92.5709971465926,92.5709911561799,92.5709776197911,92.5709600596217,92.570941377954,92.5709234286557,92.5709071848351,92.5708930421611,92.5708810757808,92.5708712123562,92.5708633275396,92.5708572926623,92.5708529967589,92.570850356497,92.5708493193529,92.5708498643122,92.5708520018264,92.5708557740579,92.5708612543528,92.5708685443693,92.5708777668803,92.5708890485869,92.5709024817677,92.5709180459371,92.5709354669793,92.5709539971236,92.5709721425136,92.5709874743675,92.5709968219123,92.570997152913,96.7747053127822,96.7746952318259,96.7746761104283,96.7746526475597,96.7746285037354,96.7746058319737,96.7745856266999,96.774568206583,96.7745535572394,96.7745415259145,96.774531926171,96.7745245857129,96.7745193625761,96.7745161519704,96.774514888791,96.7745155471526,96.7745181399774,96.7745227194897,96.7745293775339,96.7745382437385,96.7745494804971,96.7745632688879,96.7745797730306,96.7745990584778,96.774620929097,96.7746446391719,96.7746684762257,96.7746893700175,96.7747030205597,96.7747053150594,96.8179401501851,96.8179285133403,96.8179072691216,96.8178820666311,96.8178567928334,96.8178334892124,96.8178129650174,96.8177953885087,96.8177806603535,96.8177685909254,96.8177589726192,96.8177516216949,96.8177463926041,96.8177431788173,96.8177419144268,96.817742573406,96.8177451687515,96.817749753221,96.8177564201439,96.8177653025325,96.8177765704636,96.8177904219105,96.8178070563583,96.8178266075012,96.8178489960783,96.817873640315,96.817898970363,96.8179218338582,96.8179373122292,96.8179401482919,95.7903937723894,95.7903533689637,95.7902950327279,95.7902420752548,95.7902004024969,95.7901687985303,95.790144813349,95.7901262937474,95.7901116067463,95.7900999131844,95.7900907602287,95.7900838209823,95.7900789044136,95.7900758886612,95.7900747026093,95.7900753202837,95.790077754298,95.7900820607052,95.7900883463357,95.7900967815564,95.7901076338293,95.7901213358617,95.7901386135636,95.7901606795609,95.7901894360378,95.7902273542478,95.7902761115912,95.7903324686663,95.7903812723926,95.7903937668929,86.5250890797352,86.5248511323499,86.5245790477832,86.5243867162349,86.5242753040374,86.5242149130996,86.5241792400424,86.5241577440977,86.5241443188893,86.5241347791792,86.5241278193516,86.524122751314,86.5241192184578,86.5241170680796,86.5241162208701,86.5241166550429,86.5241183777974,86.5241214484994,86.5241260069673,86.5241323255841,86.5241409695544,86.5241531554086,86.52417152719,86.5242016166173,86.5242542347013,86.5243479094003,86.5245067689082,86.5247412569021,86.5249953090246,86.5250890724829,68.0865679789397,68.0857030066557,68.0849296965095,68.0844615749629,68.084204689341,68.0840921666029,68.084046556436,68.0840222958102,68.0840102902714,68.0840036607102,68.0839993911278,68.0839965519969,68.0839946530453,68.0839935117024,68.0839930548816,68.0839932734307,68.0839941583396,68.0839957618873,68.0839982437607,68.0840019447369,68.0840076815481,68.08401744725,68.0840360907513,68.0840749220863,68.0841589409963,68.0843384054344,68.0846971011861,68.0853222488624,68.0861399787077,68.0865679724175,48.9670014974294,48.9641668015429,48.9621544236354,48.9612794033831,48.9609035015452,48.9607054793155,48.9606366950997,48.9606104102731,48.960598634328,48.9605936198258,48.9605910516304,48.9605895846168,48.9605886933025,48.960588167329,48.9605879438399,48.9605880430035,48.9605884204335,48.9605891150755,48.9605902944476,48.9605923073314,48.9605960699451,48.9606040312009,48.9606227134184,48.9606689200993,48.9607845751287,48.9610677716105,48.9617236992754,48.9630741514818,48.9652764431888,48.9670014944117,34.625981077305,34.6178378914483,34.6130398471242,34.6106956180047,34.6100390324469,34.6097830863634,34.6096813028928,34.6096473127816,34.6096345780122,34.6096297318473,34.6096277848951,34.6096268772173,34.6096264066393,34.6096261258019,34.6096259733622,34.609626051692,34.6096262298932,34.6096265319827,34.6096271473876,34.6096284153085,34.6096312694204,34.6096384272496,34.609657600428,34.609710486049,34.6098572330799,34.6102605933391,34.611327452483,34.6139741611728,34.6193689697402,34.6259810768049,25.2448715580705,25.2166261541862,25.2087021117468,25.2049986928653,25.2036927948748,25.2032941043197,25.2031610026404,25.2031157801831,25.2031006358562,25.2030952920449,25.2030933813492,25.2030926172068,25.2030922747555,25.2030920389258,25.2030918013818,25.203091928472,25.2030920642918,25.2030922200999,25.2030926299509,25.2030936354135,25.2030961079962,25.2031029728747,25.2031224841271,25.2031795766488,25.2033490433861,25.20385648338,25.2053876370877,25.2098020422466,25.2223800221627,25.2448715586258,19.3680104617951,19.2784873401015,19.2566415393873,19.2512119104396,19.2496626679807,19.2491695131206,19.2490166183533,19.2489655478935,19.2489483913558,19.2489424931949,19.2489404525475,19.2489396838341,19.2489393504289,19.2489390596577,19.2489384946981,19.2489388319854,19.2489390064718,19.2489390828541,19.2489394160461,19.2489403665175,19.2489425563827,19.2489491742598,19.2489677990193,19.2490230139347,19.2491914045175,19.2497169714024,19.251426304635,19.2574281847385,19.277858506218,19.3820944854238,19.5381387699148,19.4598240180366,19.436338433703,19.4308799746191,19.4292995896417,19.4288038975658,19.4286487719011,19.4285972645978,19.4285799519499,19.4285740112236,19.4285720787394,19.4285711740601,19.4285708359539,19.428570543156,19.428569979791,19.4285703056798,19.4285704856871,19.4285705647316,19.4285708999321,19.428571860741,19.4285742115781,19.4285807758683,19.4285996470069,19.4286556051442,19.4288260121869,19.4293593916123,19.4310900651055,19.4370890415797,19.4585528819719,19.5548601115077,15.6335864228987,15.6028179095594,15.5930001894755,15.5891275305939,15.5878778990134,15.5874539259131,15.5873102505806,15.587260704584,15.587243298265,15.5872370564484,15.5872348075215,15.5872338906948,15.5872335146085,15.5872332925443,15.5872330913381,15.5872331858116,15.5872332855296,15.5872334070726,15.5872337593581,15.5872346409159,15.5872368514809,15.5872427433585,15.5872591917563,15.5873064214933,15.5874447448873,15.5878629909752,15.5891424133411,15.5931212235937,15.6066746826733,15.6335864233857,13.1173824779568,13.1111873280896,13.1068641500912,13.104915616605,13.1041279344347,13.1038280202989,13.103715870313,13.1036740296309,13.1036582457972,13.1036521793339,13.1036497955055,13.1036487974341,13.1036483642964,13.1036481528853,13.1036480373223,13.1036480608977,13.1036481409434,13.1036482944065,13.1036486679375,13.1036495327228,13.1036515835724,13.1036566906519,13.1036699659124,13.103705284018,13.1038008810769,13.1040485086858,13.1047531181657,13.1060917063146,13.1095046485777,13.1173824781411,11.5052356541794,11.5036989780391,11.5021043152943,11.5011892759041,11.5007528440534,11.5005638912897,11.5004850428578,11.5004526580411,11.5004392822259,11.5004336520838,11.5004312165188,11.5004301149955,11.5004295996084,11.5004293505313,11.5004292382588,11.5004292380127,11.5004293185655,11.5004295068703,11.500429922106,11.5004308098873,11.5004327503309,11.5004371556981,11.5004476541151,11.5004724114114,11.500536142056,11.5006742132375,11.5010399591308,11.5018835593254,11.503234096687,11.5052356540496,10.5041821046303,10.503781752418,10.5031999364772,10.5027899666506,10.5025638693277,10.5024518906431,10.5023994940592,10.5023754306843,10.5023643597451,10.5023591796864,10.5023566967805,10.5023554714636,10.5023548550285,10.502354546218,10.5023544090325,10.502354394999,10.5023544865883,10.5023547166553,10.5023551942502,10.502356144759,10.5023580597984,10.5023619710297,10.5023704706677,10.5023881819866,10.5024288518121,10.5025158633653,10.5026855020579,10.5030376706677,10.5035823365393,10.5041821039334,9.94039790413431,9.94028681909781,9.94007226929194,9.93989285286656,9.93977771713514,9.93971250418361,9.93967770987708,9.93965961799032,9.93965025525411,9.93964538061175,9.93964281628249,9.93964145313958,9.93964072753294,9.939640351044,9.93964018057899,9.939640155498,9.93964026171276,9.93964053605621,9.93964108602214,9.9396421249716,9.93964408528218,9.939647761863,9.9396548941803,9.9396685991548,9.93969470839368,9.93974561142069,9.93983546816722,9.93999011230833,9.9402053952994,9.94039790322112,9.68948193430775,9.6894492990003,9.68936448996461,9.68928013120662,9.68921691017724,9.68917556393249,9.68915043950341,9.68913577967152,9.68912741423221,9.68912269765275,9.68912005679348,9.6891185866197,9.68911777788851,9.68911734934419,9.68911715253494,9.68911712002123,9.6891172383666,9.68911754700569,9.68911815448569,9.68911926963707,9.6891212837429,9.68912488182597,9.68913127209043,9.68914264380102,9.68916214973616,9.68919532038397,9.68924800326788,9.68932411364562,9.68941418959005,9.68948193757491,9.62467080808013,9.62465636192742,9.62460857955912,9.62455435114018,9.62450900755064,9.6244765057242,9.62445521567327,9.62444202926345,9.62443414931698,9.62442954952468,9.6244269074314,9.62442540963577,9.62442457529957,9.62442412958252,9.62442392365234,9.62442388824648,9.62442401017841,9.62442432939721,9.62442495325991,9.62442608694951,9.62442809758977,9.62443161877714,9.62443767112369,9.62444795469108,9.62446482611369,9.62449131648924,9.62453014888784,9.62458126987892,9.62463542017768,9.62467080805718,9.63938020061375,9.63936979333595,9.63933287500318,9.6392886456036,9.63924989571018,9.63922103240089,9.63920153761046,9.63918917212819,9.63918164779368,9.63917719590265,9.63917461331464,9.63917313882587,9.63917231334188,9.63917187077916,9.63917166555969,9.63917162929869,9.63917174897617,9.63917206364955,9.63917267741087,9.63917378967976,9.63917575093473,9.63917915934553,9.63918497295662,9.63919467110907,9.63921033598035,9.63923439694071,9.63926847179454,9.63931130569628,9.63935439674862,9.63938019895991,9.7805892778312,9.78058261211759,9.78055764028447,9.78052627983359,9.78049756156608,9.78047531565217,9.78045978154634,9.78044965397453,9.78044335385071,9.78043956103067,9.78043733116765,9.78043604520131,9.78043531994634,9.78043492909434,9.78043474712632,9.78043471448166,9.78043481976818,9.78043509686346,9.78043563531329,9.78043660572236,9.78043830324637,9.78044121914612,9.78044612719866,9.78045415970677,9.78046681585809,9.78048569514264,9.78051154426827,9.78054265655814,9.78057246690544,9.78058927635938,10.1723943871435,10.1723911403653,10.1723767753191,10.1723576333863,10.1723392194011,10.172324336679,10.172313562017,10.1723063224577,10.1723017063732,10.1722988716708,10.1722971787364,10.1722961904335,10.1722956277934,10.1722953222808,10.1722951787839,10.1722951514388,10.1722952309007,10.1722954420295,10.1722958509192,10.1722965823213,10.1722978489379,10.172299994341,10.1723035431236,10.1723092314596,10.1723179629642,10.1723305808645,10.1723472669163,10.1723665963219,10.172384467424,10.1723943884818,10.9351121741399,10.9351107126838,10.9351030401351,10.9350922974492,10.9350815160955,10.9350724658031,10.935065691996,10.9350610085641,10.9350579494013,10.9350560328399,10.9350548693892,10.9350541812027,10.9350537852834,10.9350535684096,10.9350534654708,10.9350534444677,10.9350534983117,10.9350536431452,10.9350539226244,10.9350544184646,10.9350552680358,10.9350566881287,10.9350589991971,10.9350626336693,10.9350680910876,10.9350757784201,10.935085661973,10.9350967664315,10.9351067335487,10.9351121744122,12.2086237014463,12.2086232033983,12.2086194349485,12.2086138685176,12.2086080485967,12.2086029833043,12.2085990685998,12.2085962848279,12.2085944217507,12.2085932299935,12.2085924936566,12.2085920516135,12.2085917941752,12.2085916517402,12.2085915834497,12.2085915687599,12.2085916026194,12.2085916943332,12.2085918698673,12.208592177566,12.2085926974868,12.2085935533553,12.2085949226911,12.2085970352118,12.208600140447,12.2086044147816,12.2086097818407,12.2086156768471,12.2086208767119,12.2086237014359,14.2060317448052,14.2060316467504,14.2060299070951,14.2060271840914,14.2060242213355,14.2060215512264,14.206019421318,14.2060178626042,14.2060167918738,14.2060160905322,14.2060156477499,14.2060153767323,14.2060152162971,14.2060151265699,14.2060150836194,14.2060150751101,14.2060150976744,14.2060151562037,14.2060152649612,14.2060154504328,14.2060157558336,14.2060162465525,14.2060170139676,14.2060181720177,14.2060198371082,14.2060220786052,14.2060248316937,14.2060277928322,14.2060303610763,14.2060317444577,17.2881209381019,17.2881210368421,17.2881202631227,17.2881189574167,17.2881174753203,17.2881160900236,17.2881149457128,17.288114078833,17.2881134622259,17.2881130436904,17.2881127696795,17.288112595908,17.2881124899329,17.2881124299776,17.2881124026643,17.2881124009361,17.2881124227117,17.2881124704741,17.288112551742,17.2881126803558,17.2881128784586,17.2881131786531,17.2881136249474,17.2881142697206,17.2881151623559,17.2881163244124,17.2881177091395,17.28811915599,17.2881203669314,17.2881209375394,22.0837976671333,22.0837978796102,22.0837975061521,22.0837967924778,22.0837959452171,22.0837951192428,22.0837944036869,22.0837938309698,22.0837933972097,22.0837930814786,22.083792858833,22.0837927070298,22.0837926089252,22.0837925525806,22.0837925304841,22.0837925386481,22.083792575963,22.0837926439658,22.0837927469897,22.0837928926179,22.0837930923202,22.0837933619363,22.0837937211645,22.0837941906751,22.0837947849255,22.0837954987871,22.0837962876659,22.0837970461259,22.083797593958,22.0837976668335,29.6438115391714,29.6438117425952,29.6438113644082,29.6438106529316,29.6438098019873,29.6438089459908,29.6438081650175,29.6438074959256,29.6438069472016,29.6438065122005,29.6438061784477,29.6438059330146,29.6438057650252,29.6438056664772,29.6438056322366,29.6438056597498,29.6438057487557,29.6438059011558,29.6438061209719,29.6438064142681,29.6438067888725,29.6438072535227,29.6438078157248,29.6438084773802,29.6438092272662,29.6438100300034,29.6438108124457,29.6438114509752,29.6438117690099,29.6438115390416,41.4465412810593,41.4465414113187,41.4465404904368,41.4465389849217,41.4465372390408,41.446535482878,41.4465338521183,41.4465324143858,41.4465311938018,41.446530190508,41.4465293937951,41.4465287898821,41.4465283659626,41.4465281120816,41.446528021834,41.4465280924739,41.4465283248267,41.4465287232048,41.4465292951843,41.4465300509489,41.4465310018907,41.4465321576937,41.4465335206626,41.4465350757822,41.4465367755597,41.446538520373,41.446540138429,41.4465413726577,41.4465418858832,41.4465412825529,58.4832749877548,58.4832745325114,58.4832718225418,58.4832678140903,58.4832632960811,58.4832588022527,58.4832546424224,58.4832509683833,58.4832478340904,58.4832452408209,58.4832431661151,58.4832415806437,58.4832404569824,58.4832397736465,58.4832395168404,58.4832396810249,58.483240268955,58.4832412916255,58.4832427677994,58.4832447224688,58.483247183524,58.4832501747907,58.4832537024234,58.4832577306031,58.4832621436163,58.4832666955111,58.4832709589766,58.4832743002082,58.4832759151198,58.4832749923591,78.2308286086255,78.2308259866562,78.2308189757048,78.230809366604,78.2307988279809,78.230788502188,78.2307790337361,78.2307707181428,78.2307636439766,78.2307577953677,78.2307531132127,78.2307495281684,78.2307469776765,78.2307454136328,78.2307448053452,78.2307451404999,78.2307464252644,78.2307486843186,78.2307519601518,78.2307563104338,78.2307618020653,78.2307684980224,78.230776430306,78.2307855488821,78.2307956370221,78.2308061909512,78.2308162878816,78.2308245184536,78.2308291225435,78.2308286157804,92.6391235841686,92.6391175627266,92.6391039673444,92.6390863444053,92.6390675997756,92.6390495924753,92.6390332969807,92.6390191097968,92.6390071065554,92.6389972131763,92.6389893042456,92.6389832507067,92.6389789413178,92.6389762924024,92.6389752512569,92.6389757967938,92.6389779394714,92.6389817215654,92.6389872166298,92.6389945266374,92.6390037747863,92.6390150883114,92.639028560102,92.6390441702439,92.6390616448372,92.6390802352815,92.6390984444561,92.6391138372551,92.6391232280443,92.6391235904863,96.7752336480593,96.7752235596108,96.7752044233291,96.7751809452775,96.7751567892223,96.7751341113118,96.7751139048174,96.7750964840532,96.7750818331392,96.7750698009945,96.7750602010979,96.7750528604238,96.7750476371234,96.7750444264484,96.775043163225,96.7750438215881,96.7750464144537,96.7750509940513,96.7750576522333,96.7750665186475,96.7750777557315,96.7750915446567,96.7751080497401,96.775127336922,96.7751492107657,96.7751729266199,96.7751967731719,96.7752176804563,96.7752313455412,96.7752336503464,96.8177446467772,96.8177330163561,96.8177117787582,96.8176865865656,96.8176613188257,96.8176380128237,96.8176174845333,96.8175999090881,96.8175851825058,96.8175731128222,96.8175634944412,96.8175561436638,96.8175509145489,96.817547700779,96.8175464363904,96.8175470953663,96.8175496907019,96.817554275153,96.8175609420444,96.8175698243752,96.817581092195,96.8175949434166,96.8176115774,96.8176311276003,96.8176535143508,96.8176781553314,96.8177034802324,96.817726337211,96.8177418093876,96.8177446448568,95.8048913116123,95.8048512665961,95.8047931812534,95.8047403526022,95.8046988166821,95.8046673929669,95.8046434506537,95.8046248964393,95.80461020674,95.804598514003,95.8045893521292,95.8045824092459,95.8045774892297,95.8045744715684,95.8045732850072,95.8045739035697,95.8045763398597,95.8045806498899,95.8045869403619,95.80459538122,95.8046062388117,95.8046199431864,95.8046372144229,95.8046592533348,95.8046879410772,95.8047257181883,95.8047742350099,95.8048302700928,95.804878801938,95.8048913061007,86.7041489536518,86.7039139360478,86.7036448415336,86.7034545233477,86.7033422435427,86.7032810968187,86.7032458909942,86.7032245380988,86.7032109273356,86.7032013898043,86.7031943822921,86.7031892845551,86.7031857300675,86.7031835665669,86.7031827149675,86.7031831533881,86.7031848889903,86.7031879812071,86.703192569885,86.7031989267397,86.7032076144493,86.7032198421916,86.7032382352724,86.7032682806677,86.7033206917855,86.7034138151828,86.7035715006021,86.7038040241979,86.7040558451612,86.7041489465326,68.4718224236451,68.470964510936,68.4701860375923,68.4697237557368,68.4694767059486,68.4693638140756,68.4693155222698,68.4692922943153,68.4692799552116,68.4692732883422,68.4692689649588,68.4692660847167,68.4692641575122,68.4692629989627,68.4692625356034,68.4692627583673,68.4692636580838,68.4692652873667,68.4692678070857,68.469271559459,68.4692773634696,68.4692872149662,68.4693059648714,68.4693449107852,68.4694289883657,68.4696082011711,68.4699657549377,68.4705873445817,68.4713984633227,68.4718224173972,49.3825417589015,49.3797833285904,49.3777940864041,49.3768751410632,49.3764790298045,49.3763015750983,49.3762269998432,49.3762014026969,49.3761894767197,49.3761844027149,49.3761817955837,49.3761803021277,49.3761793923097,49.3761788553443,49.3761786274588,49.376178728949,49.3761791152538,49.3761798253808,49.3761810289677,49.3761830780041,49.3761868960619,49.3761949474545,49.3762137914192,49.3762602979348,49.3763764668539,49.3766604223969,49.3773161109811,49.3786637937352,49.3808469217588,49.3825417559691,34.9618373342005,34.9536340304385,34.9489454702764,34.9468445986432,34.9460705202003,34.9458333118805,34.9457293149512,34.9456952587667,34.945682414952,34.9456775375593,34.9456755634928,34.9456746418411,34.9456741623616,34.9456738764904,34.94567372234,34.9456738012061,34.945673983283,34.9456742923813,34.9456749205768,34.9456762096628,34.9456791042218,34.9456863437369,34.9457057065866,34.9457590398783,34.9459068165399,34.9463120466274,34.947383092302,34.9500200775986,34.95540874662,34.9618373336981,25.4919188690263,25.4648977223861,25.4552803125267,25.4521005031021,25.4507533614657,25.450357312239,25.4502230690121,25.4501777944201,25.450162496294,25.4501571161806,25.4501551873275,25.45015441442,25.4501540666731,25.4501538286922,25.4501535940703,25.4501537223734,25.4501538607862,25.450154017922,25.4501544357104,25.450155455667,25.4501579635509,25.4501649057514,25.4501846311523,25.4502423055051,25.4504133904665,25.4509251488365,25.4524618044014,25.4569211041914,25.4692583259532,25.4919188695382,19.5381388996073,19.4598242852148,19.4363387011211,19.4308802420574,19.4292998570893,19.4288041650144,19.4286490393502,19.428597532047,19.4285802193992,19.4285742786728,19.428572212464,19.4285714415094,19.4285711034032,19.4285708106053,19.4285702472402,19.428570573129,19.4285707531363,19.4285708321809,19.4285711673813,19.4285721281902,19.4285743453027,19.4285810433176,19.4285999144561,19.4286558725933,19.4288262796356,19.4293596590596,19.4310903325463,19.437089308991,19.4585531492092,19.5548602490788,19.675940922524,19.6057468607228,19.5811597237519,19.5756615652053,19.574054850843,19.573557985325,19.5734010539282,19.5733492272549,19.5733317893103,19.5733258231405,19.573323872117,19.5733229613294,19.573322621446,19.5733223275897,19.5733217607269,19.5733220789303,19.5733222658885,19.5733223431591,19.5733226830484,19.5733236521323,19.5733260242617,19.5733326498739,19.5733517120177,19.5734082494838,19.573580254664,19.5741195610001,19.5758674147667,19.5818658062445,19.6040855905628,19.6946600770321,15.7412697037076,15.709799239241,15.6995010941124,15.6955921885564,15.6943153218045,15.6938853278046,15.6937400076567,15.6936899083814,15.6936723460513,15.6936660563673,15.6936637943517,15.693662871799,15.6936624934638,15.6936622678369,15.693662063776,15.6936621593151,15.6936622599139,15.6936623822328,15.693662736431,15.69366362372,15.693665854833,15.6936718098485,15.6936884471781,15.6937362865761,15.6938767887533,15.6942991233116,15.6956258080136,15.6995399046857,15.714314166961,15.7412697042418,13.1976109159588,13.1910669385794,13.1866717141265,13.1846563680758,13.1838545882566,13.1835488015114,13.1834349238862,13.1833925274372,13.1833765690131,13.1833704486777,13.1833680490379,13.1833670463838,13.1833666120175,13.1833663994469,13.1833662826512,13.1833663065386,13.1833663868088,13.1833665407815,13.1833669160046,13.183367785938,13.1833698542828,13.183375017016,13.1833884772691,13.1834242306194,13.1835222603395,13.1837707351288,13.1845147992397,13.1858210269345,13.1895250017161,13.197610916181,11.5654988690988,11.5639018314982,11.5622472578941,11.5613075856829,11.56085972582,11.5606667264077,11.5605864123138,11.5605535258966,11.5605399826356,11.560534299291,11.5605318479866,11.5605307424275,11.5605302264159,11.5605299773476,11.5605298649032,11.560529864647,11.560529945243,11.5605301337499,11.5605305500158,11.5605314418487,11.5605333970746,11.5605378456678,11.5605485004336,11.560573572815,11.56063896786,11.5607776034107,11.5611615234169,11.5619883047109,11.5633752604954,11.5654988689599,10.549045777654,10.5486297809803,10.5480261666538,10.5476026949768,10.5473700725093,10.5472553574291,10.5472018795402,10.5471774196999,10.5471662097659,10.5471609843985,10.547158488367,10.5471572601538,10.5471566436495,10.5471563352813,10.5471561983935,10.5471561844022,10.5471562758776,10.547156505845,10.5471569838463,10.5471579371154,10.5471598628801,10.5471638111489,10.54717241521,10.547190385377,10.5472322574927,10.54731927349,10.5475001694491,10.547870075269,10.5484267018728,10.5490457772647,9.97221952408892,9.97210364395076,9.97188026816855,9.97169410780152,9.97157519989701,9.97150815483757,9.9714725733061,9.97145416519795,9.9714446856465,9.97143977156273,9.971437195891,9.97143583065294,9.9714351054766,9.97143472977567,9.97143455987584,9.97143453502702,9.97143464124168,9.97143491554702,9.9714354658006,9.97143650742281,9.97143847513472,9.97144218233546,9.97144940254718,9.9714632242932,9.97149029750866,9.97154178926352,9.97163285629975,9.97179379584331,9.97201904467968,9.97221952164128,9.71250692512026,9.71247289232391,9.71238585632745,9.71229961684854,9.71223518897602,9.71219317462621,9.71216770570162,9.71215287654106,9.71214442887947,9.71213967237664,9.7121370118586,9.71213553183642,9.71213471810153,9.71213428704136,9.7121340890975,9.71213405634898,9.7121341752965,9.71213448573631,9.71213509680178,9.71213622007415,9.71213824950903,9.71214187773604,9.71214836204142,9.71215981145416,9.7121796897568,9.71221372913583,9.71226748571919,9.7123453280893,9.71243810554277,9.7125069282311,9.64864229595601,9.64862803653164,9.64858031742026,9.64852594303998,9.64848035357384,9.64844761308847,9.6484261375907,9.64841282337742,9.64840486162868,9.64840021186221,9.6483975401821,9.6483960252766,9.64839518128714,9.6483947303751,9.64839452203847,9.64839448622191,9.64839460958206,9.64839493260298,9.64839556366009,9.64839671042718,9.6483987444983,9.64840229949378,9.64840842511456,9.64841880119552,9.64843578374861,9.64846249134367,9.64850158359911,9.64855280049186,9.64860703504038,9.64864229714474,9.66178162777724,9.66177090601852,9.66173350412502,9.66168880433484,9.66164967712707,9.66162054208348,9.66160086513711,9.66158838361285,9.66158078803054,9.66157629357197,9.66157368607056,9.66157219725389,9.66157136370543,9.66157091680669,9.66157070958292,9.66157067300316,9.66157079392786,9.66157111187285,9.66157173202271,9.66157285576856,9.66157483855504,9.66157828218737,9.66158416019142,9.6615939725586,9.661609816243,9.66163415912552,9.66166867003385,9.6617120474826,9.66175566520538,9.66178162393765,9.80678443524199,9.80677801568637,9.80675350042311,9.80672256690569,9.80669414976687,9.80667208401495,9.8066566465649,9.80664656701981,9.80664028946233,9.80663650681352,9.80663428139432,9.80663299732154,9.80663227285105,9.806631882301,9.8066317004075,9.80663166769414,9.80663177273671,9.80663204927258,9.80663258658557,9.80663355436745,9.80663524664586,9.80663815112086,9.8066430340037,9.80665101561668,9.80666357223983,9.80668226346625,9.80670779918892,9.80673846634339,9.80676782524883,9.80678443625719,10.2101899972999,10.2101868360298,10.2101727451644,10.2101539152216,10.2101357592558,10.2101210563815,10.2101103946358,10.210103221403,10.210098642678,10.210095828495,10.2100941466726,10.2100931643339,10.2100926048518,10.2100923009371,10.2100921581065,10.2100921307565,10.2100922095421,10.2100924190551,10.210092824836,10.2100935504604,10.2100948065631,10.2100969332708,10.2101004491362,10.210106080587,10.2101147177322,10.2101271866526,10.2101436562493,10.2101627009644,10.2101802667926,10.2101899985765,10.9865418058606,10.9865403719126,10.9865328152015,10.9865222186163,10.986511568925,10.9865026175701,10.9864959101451,10.9864912680355,10.9864882333396,10.9864863307919,10.9864851751948,10.9864844913416,10.9864840977725,10.986483882124,10.9864837797385,10.9864837588187,10.9864838123011,10.9864839561808,10.9864842337626,10.9864847260871,10.9864855692843,10.9864869780223,10.9864892693311,10.9864928703373,10.9864982733659,10.9865058772244,10.986515645216,10.9865266117513,10.9865364463533,10.9865418060801,12.2769273157299,12.2769268342708,12.276923122317,12.27691762776,12.2769118749202,12.2769068620183,12.2769029838275,12.2769002235707,12.2768983748221,12.2768971914587,12.2768964599017,12.2768960205215,12.2768957645335,12.2768956228556,12.2768955549073,12.2768955402673,12.2768955738915,12.2768956649828,12.2768958392651,12.2768961446353,12.2768966603834,12.2768975089722,12.276898865977,12.27690095834,12.2769040322284,12.276908260709,12.276913566251,12.2769193896649,12.2769245248179,12.2769273156761,14.2965192138326,14.296519121936,14.2965174043281,14.2965147101103,14.2965117757654,14.2965091287211,14.2965070153933,14.2965054675851,14.2965044035663,14.296503706146,14.2965032655594,14.2965029957294,14.2965028359208,14.296502746522,14.2965027037462,14.2965026953251,14.2965027179007,14.296502776322,14.2965028847463,14.2965030694596,14.2965033733352,14.2965038612106,14.2965046236344,14.2965057733783,14.2965074254611,14.2965096481095,14.2965123763635,14.2965153084108,14.296517848603,14.2965192134695,17.4096895870081,17.4096896887781,17.4096889252154,17.4096876299778,17.4096861581346,17.40968478107,17.4096836425074,17.4096827791762,17.4096821644941,17.4096817468387,17.4096814731133,17.4096812993428,17.4096811932786,17.4096811332594,17.4096811059703,17.4096811043841,17.4096811264246,17.4096811745567,17.409681256253,17.4096813852644,17.4096815835775,17.409681883539,17.409682328773,17.409682971135,17.4096838593762,17.4096850144977,17.4096863896978,17.4096878252709,17.4096890238823,17.4096895864477,22.2502946651387,22.2502948818028,22.2502945113247,22.2502937982049,22.2502929506601,22.2502921236583,22.25029140641,22.2502908315969,22.250290395601,22.2502900777291,22.2502898532038,22.2502896998854,22.2502896006881,22.2502895437035,22.2502895214355,22.250289529906,22.2502895680125,22.2502896372974,22.2502897420951,22.2502898899774,22.2502900923769,22.2502903650489,22.2502907275302,22.2502912002237,22.2502917971924,22.25029251278,22.2502933017244,22.2502940581474,22.2502945983923,22.2502946648435,29.873144116191,29.8731443240899,29.8731439412885,29.8731432205217,29.873142358007,29.8731414900999,29.8731406977177,29.8731400182617,29.8731394604938,29.8731390178801,29.8731386779698,29.8731384278131,29.8731382564946,29.8731381559732,29.8731381210897,29.8731381492832,29.8731382403053,29.87313839609,29.873138620708,29.8731389202795,29.8731393026788,29.8731397766484,29.8731403496045,29.8731410231819,29.8731417856057,29.8731426005616,29.8731433933436,29.8731440388516,29.873144354935,29.873144116065,41.7481005695261,41.7481007087284,41.7480997690538,41.7480982343518,41.7480964547882,41.7480946646839,41.7480930022878,41.7480915364019,41.7480902916656,41.7480892683049,41.7480884554904,41.748087839254,41.7480874066117,41.7480871474646,41.7480870553128,41.7480871273761,41.7480873645075,41.7480877711065,41.7480883548915,41.7480891262291,41.7480900967043,41.7480912761407,41.748092666814,41.7480942533133,41.748095987078,41.7480977664052,41.748099415842,41.7481006735499,41.7481011944695,41.7481005709853,58.8150601207761,58.815059660752,58.81505690659,58.8150528310707,58.8150482396412,58.8150436728557,58.8150394457438,58.8150357123188,58.8150325272988,58.8150298919656,58.8150277835279,58.8150261721875,58.8150250300839,58.8150243354071,58.8150240741501,58.8150242406865,58.8150248378179,58.8150258767148,58.8150273764391,58.8150293623839,58.8150318628964,58.8150349022119,58.8150384866415,58.8150425798979,58.8150470645544,58.8150516908951,58.8150560248281,58.8150594222225,58.8150610673775,58.8150601252256,78.4615213255722,78.4615186415551,78.4615115677546,78.461501866081,78.4614912285356,78.4614808066665,78.4614712507733,78.4614628588704,78.4614557200238,78.4614498178919,78.4614450927582,78.4614414746783,78.461438900479,78.4614373215854,78.4614367070252,78.4614370443594,78.4614383397986,78.4614406182361,78.4614439225377,78.4614483109026,78.4614538508761,78.4614606061086,78.4614686091047,78.4614778097656,78.4614879899995,78.4614986421952,78.4615088360647,78.4615171492929,78.4615218064067,78.4615213325235,92.6938739752099,92.6938679112972,92.6938542707092,92.6938365968423,92.6938178013816,92.6937997474145,92.6937834105224,92.6937691875901,92.6937571546335,92.6937472371683,92.6937393088895,92.6937332403522,92.6937289201239,92.6937262642615,92.6937252199052,92.6937257659126,92.6937279127472,92.6937317027763,92.6937372097203,92.693744535806,92.6937538045732,92.6937651436869,92.6937786465287,92.6937942936434,92.6938118113182,92.6938304502539,92.6938487107805,92.6938641529653,92.6938735753798,92.6938739815271,96.7756612915817,96.7756511993393,96.7756320506605,96.7756085606508,96.7755843948558,96.7755617116042,96.7755415038417,96.7755240827609,96.7755094307039,96.7754973977944,96.7754877977508,96.775480456926,96.775475233484,96.7754720227504,96.7754707594927,96.7754714178562,96.7754740107561,96.7754785904245,96.7754852487204,96.7754941153075,96.775505352659,96.7755191420216,96.7755356478716,96.7755549364625,96.7755768129201,96.7756005334534,96.7756243876645,96.7756453059487,96.7756589826427,96.7756612938766,96.8175951306609,96.817583505467,96.8175622731282,96.8175370888115,96.8175118263181,96.8174885191391,96.8174679872781,96.8174504121739,96.8174356869915,96.8174236172281,96.8174139987083,96.8174066480437,96.8174014189156,96.8173982051505,96.8173969407643,96.8173975997382,96.8174001950683,96.8174047795094,96.8174114463818,96.8174203286748,96.817431596416,96.8174454474693,96.8174620810938,96.81748163055,96.8175040158372,96.8175286541945,96.8175539748974,96.817576826442,96.8175922942356,96.8175951287185,95.8168628260723,95.8168230810072,95.8167652116057,95.8167124939517,95.8166710597275,95.8166397814371,95.8166158847314,95.8165973032204,95.8165826073972,95.8165709161602,95.8165617473386,95.816554801086,95.8165498783585,95.8165468590739,95.8165456720966,95.8165462913892,95.816548729559,95.8165530425823,95.8165593370541,95.8165677825675,95.816578644543,95.8165923508187,95.8166096166248,95.816631632953,95.8166602634444,95.8166979230727,95.8167462395154,95.8168020058713,95.8168503100921,95.8168628205478,86.849032773037,86.8488001629662,86.8485334607111,86.8483448728569,86.8482319977014,86.8481701586473,86.8481352712181,86.8481140837367,86.8481003274541,86.8480907804377,86.8480837396296,86.8480786162506,86.8480750445602,86.8480728703565,86.8480720151979,86.8480724570578,86.8480742030767,86.848077312734,86.8480819258877,86.8480883136924,86.8480970367258,86.8481092980686,86.8481277075365,86.8481577151496,86.8482099539013,86.8483026205581,86.8484593370395,86.8486902389247,86.848940222021,86.8490327660227,68.7836378441199,68.7827861870358,68.7820036719948,68.7815455535366,68.7813064789234,68.7811938685366,68.7811432825068,68.7811207367652,68.781108223335,68.7811014967105,68.7810971359371,68.7810942213301,68.7810922712454,68.7810910986899,68.7810906300301,68.7810908562496,68.7810917680222,68.7810934182615,68.7810959687898,68.781099762896,68.7811056212414,68.7811155415123,68.7811343752841,68.7811734076331,68.7812575168019,68.7814364899151,68.7817930395683,68.782411626994,68.7832172141777,68.7836378380955,49.719887015899,49.7171896959629,49.7152205705659,49.7142692387072,49.713855042434,49.7136933440937,49.7136153647081,49.7135898818179,49.713577932018,49.7135727963253,49.7135701588561,49.7135686437516,49.7135677188416,49.7135671728533,49.7135669413266,49.7135670448263,49.7135674385048,49.7135681612385,49.7135693845823,49.7135714630896,49.7135753260062,49.7135834496192,49.7136024214818,49.713649161177,49.7137657172574,49.714050208095,49.7147055121659,49.7160504196789,49.7182174784747,49.7198870130506,35.234493546676,35.2262579681583,35.2216441410703,35.2197341071324,35.2188768721725,35.2186487882701,35.2185443635229,35.2185100843336,35.2184971677623,35.2184922661227,35.2184902703976,35.2184893373949,35.2184888506171,35.218488560818,35.2184884051933,35.2184884841073,35.2184886694567,35.2184889845791,35.218489623051,35.2184909292924,35.2184938563988,35.2185011603068,35.2185206723887,35.2185743532197,35.2187229215506,35.2191295244551,35.2202035200986,35.222831805582,35.2282105501643,35.2344935461845,25.6918451931285,25.6658179887081,25.6549674339658,25.6521471480634,25.6507860946441,25.6503904188295,25.6502553820276,25.6502101088759,25.650194690058,25.6501892827848,25.6501873391871,25.6501865600038,25.6501862077751,25.6501859675407,25.6501857365295,25.6501858666852,25.6501860060328,25.6501861641289,25.6501865890933,25.650187619492,25.6501901565863,25.6501971594471,25.6502170515989,25.6502751801659,25.6504475066649,25.6509626041985,25.652503143319,25.6569950589069,25.6691427035534,25.69184519361,19.6759410560285,19.6057471352606,19.5811599985377,19.5756618400138,19.5740551256591,19.5735582601419,19.5734013287454,19.5733495020722,19.5733320641276,19.5733260979578,19.5733240095256,19.5733232361467,19.5733228962633,19.573322602407,19.5733220355442,19.5733223537476,19.5733225407058,19.5733226179764,19.5733229578657,19.5733239269496,19.5733261616703,19.5733329246912,19.5733519868349,19.573408524301,19.5735805294809,19.5741198358158,19.5758676895761,19.5818660810225,19.6040858651482,19.694660217987,19.78242078451,19.7179698326037,19.6926536933481,19.6871164546336,19.6854893002694,19.6849918293402,19.6848335495113,19.6847814929567,19.6847639631619,19.6847579787726,19.6847560153367,19.6847550993648,19.6847547576741,19.6847544642649,19.684753893686,19.6847542081978,19.6847543975656,19.684754474324,19.6847548169101,19.6847557915601,19.6847581804002,19.6847648523126,19.6847840582049,19.6848410289426,19.6850142426007,19.6855579091356,19.6873188470769,19.6933179769038,19.7160750625869,19.8026097810459,15.8236154655331,15.7917769030487,15.7810597496496,15.7771270716334,15.7758289265905,15.7753944170274,15.7752478226815,15.7751973170094,15.7751796375064,15.7751733127667,15.7751710411557,15.775170114753,15.7751697346824,15.7751695064656,15.7751693000891,15.7751693962713,15.7751694979077,15.7751696206712,15.77516997658,15.7751708678348,15.7751731141055,15.7751791160368,15.7751958962597,15.7752441894684,15.7753863324263,15.7758120374375,15.7771716681534,15.781054751197,15.7966795413342,15.8236154661151,13.2586309296932,13.2518137296534,13.2473590162133,13.2452931997098,13.2444799837032,13.24416976401,13.2440545677479,13.2440117504901,13.2439956627205,13.2439895028275,13.2439870918806,13.2439860860381,13.2439856508862,13.2439854374804,13.2439853198352,13.2439853438775,13.2439854242492,13.2439855785122,13.2439859548877,13.2439868284947,13.2439889097136,13.243994113589,13.2440077110401,13.2440438158454,13.2441435010776,13.2443937322346,13.2451635764724,13.2464558895195,13.2504090301845,13.2586309299531,11.6108705817225,11.6092262665346,11.6075261102251,11.6065662976276,11.6061097752221,11.6059135834339,11.6058321490968,11.6057988793118,11.6057852099648,11.6057794874528,11.6057770250552,11.6057759169576,11.6057754007722,11.6057751518591,11.6057750393636,11.6057750391076,11.6057751196909,11.6057753082573,11.6057757250952,11.6057766195932,11.6057785851625,11.6057830668893,11.605793827166,11.6058191934857,11.6058856200959,11.6060253423779,11.6064225711634,11.6072335458599,11.6086529216767,11.6108705816534,10.5821804823778,10.5817519891787,10.5811310540962,10.5806971139526,10.5804593629002,10.5803425488455,10.5802882432066,10.5802634848209,10.5802521718905,10.5802469139184,10.5802444089898,10.5802431791808,10.5802425629561,10.5802422550988,10.5802421185098,10.580242104534,10.5802421958429,10.5802424255857,10.5802429035934,10.5802438585061,10.580245790891,10.580249768205,10.5802584383011,10.5802766328087,10.5803193380978,10.5804064229056,10.5805959860796,10.5809782245708,10.5815446643247,10.5821804821962,9.99503974362041,9.99492023911773,9.99468953103364,9.99449778171155,9.99437577949544,9.99430725288572,9.99427104686545,9.99425239511959,9.9942428296023,9.99423788898991,9.99423530732563,9.99423394221381,9.99423321840262,9.99423284388697,9.99423267469967,9.99423265007078,9.99423275612451,9.99423303000702,9.99423357969759,9.99423462205999,9.99423659282013,9.99424032077155,9.99424759783237,9.99426151812462,9.99428927734759,9.99434125214982,9.9944337353578,9.99459973955461,9.99483248088954,9.99503974133152,9.72632196101357,9.72628675868974,9.7261974697527,9.72610928857137,9.7260436399049,9.72600097828359,9.72597519895528,9.72596023122551,9.72595172443685,9.7259469434957,9.72594427306472,9.72594278906352,9.7259419737342,9.7259415420434,9.72594134388044,9.72594131111994,9.72594143027288,9.72594174134303,9.72594235371196,9.72594348069175,9.72594551769006,9.72594916424951,9.72595570760778,9.72596722245678,9.72598739602342,9.72602203752703,9.7260766748482,9.72615626077902,9.72625167696368,9.7263219606985,9.66129386600132,9.66127945362293,9.66123155065243,9.66117695616563,9.66113115235713,9.66109823835402,9.66107663876146,9.66106324289075,9.66105523028837,9.66105055000721,9.66104786047092,9.66104633531755,9.66104548556823,9.66104503155107,9.66104482175027,9.66104478562217,9.66104490971509,9.66104523482181,9.66104586989647,9.66104702426648,9.66104907210309,9.66105264891722,9.66105882314436,9.66106926292926,9.66108635992062,9.66111330189696,9.66115269127132,9.66120417702593,9.66125872516188,9.66129387018416,9.67404622397281,9.67403535883331,9.67399781110759,9.67395298674061,9.67391375677984,9.67388454026592,9.67386480258861,9.67385227862024,9.67384465498032,9.67384014278563,9.6738375244612,9.67383602923127,9.6738351920039,9.67383474311712,9.673834535005,9.67383449837101,9.67383462004663,9.67383493981581,9.67383556341525,9.67383669330465,9.67383868726013,9.67384214828624,9.67384805842514,9.67385792242046,9.67387383663709,9.67389828677146,9.67393295581963,9.67397649624963,9.67402026094382,9.67404621784327,9.8243675014117,9.82436138971732,9.82433743398741,9.82430702915602,9.82427899513253,9.82425716891876,9.82424186832097,9.8242318627408,9.82422562389579,9.82422186119435,9.82421964600767,9.82421836718621,9.82421764539456,9.82421725615049,9.82421707475919,9.82421704196344,9.8242171462977,9.8242174212125,9.82421795535238,9.824218916935,9.82422059772435,9.8242234799201,9.82422831990231,9.82423622292386,9.82424863640519,9.82426707480461,9.82429221202533,9.82432233261348,9.82435113705339,9.82436750561624,10.2377227520339,10.2377196125392,10.2377057015246,10.2376870977717,10.2376691382423,10.2376545768319,10.237644006198,10.2376368876633,10.2376323403502,10.237629543724,10.2376278715602,10.2376268944804,10.2376263378233,10.2376260353674,10.2376258931812,10.2376258659048,10.2376259442173,10.2376261525266,10.2376265559767,10.2376272772702,10.2376285256002,10.2376306387655,10.2376341309843,10.2376397222204,10.2376482947461,10.2376606637921,10.2376769899789,10.2376958444935,10.2377131901347,10.2377227524316,11.0247770932316,11.0247756972883,11.0247682463092,11.0247577764782,11.0247472391414,11.0247383719009,11.024731720994,11.0247271142207,11.024724100573,11.024722210162,11.0247210614132,11.0247203813626,11.0247199898655,11.0247197752973,11.0247196733911,11.0247196525213,11.0247197056369,11.0247198485853,11.0247201243353,11.0247206132798,11.0247214503372,11.0247228481668,11.0247251205725,11.0247286894582,11.0247340401594,11.0247415641203,11.0247512225829,11.0247620630069,11.0247717880361,11.0247770934743,12.3284056243823,12.3284051520885,12.3284014827016,12.3283960448215,12.3283903456966,12.3283853752045,12.3283815268431,12.3283787859472,12.328376949085,12.3283757727348,12.3283750451993,12.328374608075,12.3283743533246,12.3283742122984,12.3283741446507,12.3283741300658,12.3283741635113,12.3283742541131,12.3283744274077,12.3283747309549,12.3283752434678,12.3283760864518,12.3283774340753,12.328379511342,12.3283825620282,12.3283867567583,12.3283920164672,12.328397783982,12.3284028649183,12.3284056242347,14.3652395758704,14.3652394916476,14.3652377921114,14.3652351214019,14.365232210401,14.3652295822933,14.3652274826539,14.365225943899,14.3652248854913,14.3652241913756,14.3652237526571,14.3652234838483,14.3652233245842,14.3652232354723,14.3652231928465,14.3652231844944,14.3652232070648,14.3652232653692,14.3652233734708,14.3652235574765,14.3652238599595,14.3652243452671,14.3652251031931,14.3652262454615,14.3652278858806,14.3652300918187,14.3652327987746,14.3652357071615,14.3652382258919,14.365239575491,17.502522656549,17.502522759248,17.5025220050502,17.5025207179559,17.5025192545239,17.5025178842349,17.5025167504682,17.5025158901409,17.5025152771313,17.5025148602778,17.5025145868507,17.5025144131287,17.5025143070244,17.5025142469725,17.5025142197114,17.5025142182395,17.5025142404856,17.5025142889012,17.5025143709234,17.5025145002334,17.502514698697,17.5025149984687,17.5025154428881,17.5025160834197,17.502516968326,17.5025181180758,17.5025194856459,17.5025209117001,17.5025221004836,17.5025226559806,22.3779198033193,22.3779200149783,22.3779196475944,22.3779189349748,22.3779180874223,22.3779172597598,22.377916541351,22.377915965016,22.3779155273641,22.3779152078842,22.377914981935,22.377914827463,22.3779147274313,22.377914669958,22.3779146475613,22.3779146562712,22.3779146949908,22.377914765266,22.3779148714303,22.377915021043,22.3779152255018,22.3779155004857,22.3779158653919,22.3779163403993,22.37791693927,22.377917655975,22.3779184448365,22.3779191996938,22.3779197325443,22.3779198030245,30.049338732363,30.0493389468757,30.0493385609415,30.0493378325577,30.0493369613296,30.0493360841644,30.0493352829889,30.0493345955258,30.0493340307674,30.0493335822659,30.0493332375903,30.0493329837763,30.0493328098799,30.0493327078308,30.0493326724511,30.0493327011746,30.0493327937636,30.0493329521768,30.0493331805232,30.0493334849668,30.0493338734181,30.0493343546247,30.0493349359345,30.0493356187733,30.0493363909283,30.0493372153455,30.0493380160029,30.0493386672816,30.0493389806436,30.0493387322328,41.9798664364457,41.9798665716398,41.9798656210249,41.9798640624453,41.9798622570225,41.9798604405807,41.9798587536637,41.9798572659602,41.9798560025028,41.9798549635876,41.9798541382922,41.9798535125029,41.9798530730987,41.9798528098693,41.9798527162417,41.9798527894093,41.9798530302464,41.9798534432201,41.979854036159,41.979854819571,41.97985580519,41.979857002947,41.9798584150942,41.9798600259154,41.9798617860196,41.9798635921354,41.9798652658182,41.9798665418821,41.9798670684897,41.9798664378698,59.069434424316,59.0694339436988,59.0694311601682,59.0694270323198,59.0694223841348,59.0694177610379,59.0694134819583,59.0694097026853,59.0694064785022,59.06940381069,59.0694016762052,59.0694000448901,59.0693988885444,59.0693981851066,59.0693979204073,59.0693980887525,59.0693986929794,59.0693997443945,59.0694012622902,59.0694032723693,59.069405803332,59.0694088797308,59.0694125079988,59.069416651491,59.0694211914511,59.0694258752888,59.0694302636112,59.0694337048177,59.0694353700744,59.0694344286412,78.6375529715806,78.6375502254862,78.6375431026101,78.6375333306045,78.637522617109,78.6375121216712,78.6375024987699,78.6374940483843,78.6374868599882,78.6374809168648,78.6374761588055,78.6374725154142,78.6374699230523,78.6374683327797,78.6374677134088,78.6374680524061,78.6374693560145,78.6374716492904,78.6374749753886,78.637479392913,78.6374849699033,78.6374917705273,78.6374998276765,78.6375090912077,78.6375193419804,78.6375300695052,78.6375403374192,78.6375487153353,78.6375534079695,78.6375529783783,92.7356124741155,92.7356063910256,92.7355927135556,92.7355750010531,92.7355561666722,92.7355380770991,92.7355217087126,92.7355074585451,92.7354954028943,92.7354854670648,92.7354775240587,92.7354714440914,92.7354671156017,92.7354644544492,92.7354634076491,92.7354639540183,92.7354661040256,92.7354699001065,92.7354754161097,92.7354827544549,92.7354920389433,92.7355033975674,92.7355169240844,92.7355325993933,92.7355501499099,92.7355688258753,92.7355871254342,92.7356026055716,92.7356120529334,92.7356124804333,96.7759853195292,96.7759752253792,96.775956067366,96.775932568427,96.7759083953131,96.7758857078339,96.7758654989934,96.7758480777967,96.7758334249395,96.77582139139,96.7758117912204,96.7758044502952,96.7757992267409,96.775796015961,96.7757947526777,96.7757954110413,96.7757980039677,96.7758025836908,96.7758092420745,96.7758181087948,96.7758293463512,96.7758431360477,96.7758596424814,96.7758789321413,96.7759008105764,96.7759245346514,96.7759483946443,96.7759693211909,96.7759830069864,96.7759853218298,96.8174870801817,96.8174754586559,96.817454230291,96.8174290518782,96.81740379363,96.8173804859001,96.8173599511205,96.8173423759928,96.8173276519601,96.8173155822108,96.8173059635397,96.8172986129555,96.8172933838203,96.8172901700538,96.8172889056694,96.8172895646425,96.81729215997,96.817296744407,96.8173034112696,96.8173122935401,96.8173235612291,96.8173374121633,96.817354045524,96.8173735944221,96.8173959785966,96.8174206149347,96.8174459324283,96.8174687796143,96.8174842442108,96.8174870782216,95.8263101659305,95.8262706616359,95.8262129682345,95.8261603408456,95.8261189817397,95.8260878166362,95.8260639613981,95.8260453592356,95.8260306563841,95.8260189666703,95.8260097926561,95.8260028435319,95.825997918731,95.8259948981416,95.8259937108362,95.8259943307034,95.8259967703576,95.8260010857452,95.8260073833766,95.8260158325645,95.8260266979919,95.8260404057372,95.8260576671722,95.82607966547,95.8261082503308,95.826145816339,95.8261939730792,95.8262495250264,95.8262976471172,95.8263101603951,86.9611413965162,86.9609106695036,86.9606458223085,86.9604586332043,86.9603453492495,86.9602829300356,86.9602482572859,86.960227225427,86.9602133606563,86.9602037996485,86.9601967359188,86.9601915919099,86.9601880070293,86.9601858245045,86.9601849665848,86.9601854111081,86.9601871651988,86.9601902883704,86.9601949204829,86.9602013322389,86.9602100825497,86.9602223696731,86.9602407911926,86.9602707679959,86.9603228697333,86.9604151752904,86.960571127764,86.9608007514742,86.9610492883445,86.9611413895812,69.0247053523468,69.0238588215175,69.0230732316404,69.0226180808019,69.0223852144961,69.0222731275794,69.0222207045693,69.022198594087,69.022185998784,69.0221792110262,69.0221748241557,69.0221718825157,69.0221699147116,69.0221687312829,69.0221682585159,69.0221684874359,69.0221694085834,69.0221710750997,69.0221736495456,69.0221774759887,69.0221833762783,69.0221933492471,69.0222122463251,69.0222513411993,69.0223354642007,69.0225142268783,69.0228699485436,69.0234861267319,69.0242873148591,69.024705346496,49.9812016478169,49.9785515203444,49.9765987241468,49.9756238987721,49.975194908004,49.9750448810708,49.974964996018,49.9749393696702,49.9749274488632,49.9749222596025,49.9749195992079,49.9749180672079,49.974917130558,49.9749165775218,49.9749163431508,49.9749164482418,49.9749168477059,49.9749175802601,49.9749188189768,49.974920920386,49.9749248179692,49.9749329968626,49.9749520655068,49.9749989791111,49.9751158150655,49.9754006702782,49.976055542358,49.9773979987152,49.9795522197037,49.9812016450423,35.4456557516933,35.4374038588071,35.4328414544692,35.431074930366,35.4301600035394,35.4299356915979,35.429831626856,35.4297970971693,35.4297841331284,35.4297792127535,35.4297772006438,35.4297762588476,35.4297757664593,35.429775473596,35.4297753168089,35.4297753957121,35.4297755836651,35.4297759035133,35.4297765499262,35.4297778693061,35.4297808213833,35.4297881740462,35.4298077986735,35.429861738602,35.4300108919398,35.4304184619349,35.4314944868229,35.4341153868679,35.4394838900866,35.4456557512182,25.8462826736241,25.821021365288,25.8092964582641,25.8067195223796,25.8053581040546,25.804961880791,25.8048263243937,25.8047810645903,25.8047655578634,25.8047601304433,25.8047581759027,25.80475739166,25.8047570362572,25.8047567941004,25.8047565662542,25.8047566977142,25.8047568377409,25.8047569965845,25.8047574274637,25.8047584658155,25.8047610254503,25.8047680736906,25.8047880904843,25.8048465589015,25.8050198035788,25.8055373795166,25.8070805396797,25.81159563239,25.8235982106607,25.8462826740855,19.7824209210275,19.7179701128918,19.6926539738888,19.6871167351989,19.6854895808409,19.6849921099122,19.6848338300835,19.6847817735289,19.6847642437341,19.6847582593448,19.6847561556228,19.684755379937,19.6847550382464,19.6847547448371,19.6847541742582,19.68475448877,19.6847546781378,19.6847547548962,19.6847550974823,19.6847560721324,19.6847583206863,19.6847651328848,19.6847843387772,19.6848413095147,19.6850145231726,19.6855581897064,19.6873191276416,19.693318257436,19.7160753429117,19.8026099246251,19.8583397706748,19.7977141204277,19.7719376259964,19.7663686563797,19.7647270998453,19.7642292803088,19.7640700819823,19.7640178685887,19.7640002744534,19.7639942773396,19.7639923076855,19.7639913880015,19.7639910455044,19.7639907515965,19.7639901782583,19.7639904895421,19.7639906818556,19.7639907575132,19.7639911053423,19.7639920799827,19.7639944794153,19.7640011860081,19.7640204881029,19.7640777646475,19.7642518217278,19.7647984837953,19.7665685855656,19.7725689305806,19.7956839926618,19.8795398329056,15.8818792949386,15.8498559691026,15.8388204116876,15.8348718420868,15.8335585505751,15.8331208934446,15.8329733892664,15.8329226064205,15.8329048458342,15.8328984971432,15.832896218813,15.832895289841,15.8328949086606,15.8328946787699,15.8328944708965,15.8328945673115,15.8328946697069,15.832894792311,15.8328951495337,15.8328960441239,15.8328983005343,15.8329043352327,15.8329212153589,15.8329698227472,15.833113110683,15.8335413204901,15.8349226864023,15.8387926617821,15.8549792184426,15.8818792955632,13.3016172522866,13.2946056808069,13.2901052201687,13.2880043463966,13.2871826449829,13.2868693223286,13.286753191824,13.2867100780814,13.2866939003109,13.2866877131139,13.2866852945422,13.2866842865927,13.2866838509434,13.2866836369439,13.2866835187338,13.2866835428774,13.2866836233625,13.2866837778405,13.2866841548429,13.2866850308569,13.2866871209066,13.2866923531063,13.2867060453705,13.2867424071283,13.2868431674854,13.287095136177,13.2878812441581,13.2891686964011,13.2933085815533,13.3016172525681,11.642614351842,11.6409360762145,11.6392038162526,11.6382290860356,11.6377664761987,11.637567989758,11.6374857689538,11.6374522313404,11.6374384751906,11.6374327262235,11.6374302565961,11.6374291469983,11.6374286308319,11.6374283820904,11.6374282695846,11.6374282693082,11.6374283498341,11.6374285384032,11.6374289555641,11.6374298517413,11.6374318241584,11.6374363292608,11.6374471577895,11.6374727534005,11.6375398095066,11.6376805706439,11.6380868947994,11.6388859949367,11.6403306142927,11.6426143519044,10.6050083889049,10.6045709197016,10.6039374441479,10.6034959873536,10.6032545105323,10.6031361790901,10.6030812733562,10.6030562990873,10.6030449121582,10.6030396311779,10.6030371202773,10.6030358896401,10.6030352738293,10.6030349664699,10.6030348301676,10.6030348162207,10.6030349073835,10.6030351368917,10.6030356147447,10.6030365705641,10.6030385068557,10.6030425046589,10.6030512159007,10.6030695766327,10.6031128341745,10.6032000193898,10.6033956025448,10.6037858805843,10.6043596887259,10.6050083886983,10.0105862083631,10.0104640986895,10.0102279988418,10.0100322285715,10.0099080478249,10.0098385025799,10.009801876746,10.0097830656289,10.0097734458018,10.0097684894587,10.0097659048969,10.0097645404469,10.0097638178388,10.0097634442547,10.0097632755933,10.0097632510854,10.0097633569455,10.0097636303931,10.0097641794269,10.0097652218698,10.0097671939228,10.0097709351906,10.0097782487733,10.0097922409586,10.0098204520579,10.0098727900141,10.0099664639825,10.0101360625697,10.0103739560327,10.010586207681,9.73432293910851,9.73428710162667,9.7341957806918,9.73410570569865,9.7340388403719,9.73399553637499,9.73396945827757,9.73395436456058,9.7339458091948,9.73394101140274,9.73393833606048,9.73393685118942,9.73393603611539,9.73393560484038,9.73393540698499,9.73393537436404,9.73393549354084,9.73393580463264,9.73393641710108,9.73393754516727,9.73393958516544,9.73394324133502,9.73394981879708,9.73396138318311,9.73398176017998,9.73401681265328,9.73407214235008,9.73415319132906,9.73425084697472,9.73432293437818,9.66714893289792,9.66713401266994,9.6670856683979,9.66703078251463,9.666984801974,9.66695178348055,9.66693012239769,9.66691669059927,9.66690865714009,9.66690396485706,9.66690126846437,9.66689973942751,9.66689888750507,9.66689843230822,9.66689822192964,9.66689818563324,9.66689830992426,9.6668986357256,9.66689927223397,9.66690042963481,9.6669024835214,9.66690607172204,9.66691227404116,9.66692275865223,9.66693996162084,9.66696712880162,9.66700685914641,9.6670588038992,9.66711386941503,9.66714893744084,9.67990217555889,9.67989141875055,9.67985401163368,9.67980928193324,9.6797700908424,9.6797408779433,9.67972112913945,9.67970859130656,9.67970095599413,9.67969643542341,9.67969381160097,9.67969231296697,9.67969147373608,9.6796910237548,9.67969081516231,9.6796907785271,9.67969090066417,9.67969122150074,9.67969184704232,9.67969298024135,9.6796949797162,9.6796984482354,9.67970437051123,9.67971424718744,9.67973016304284,9.67975459710643,9.67978921369722,9.67983262669608,9.67987625921381,9.67990217231022,9.83600618706998,9.83600029936967,9.83597680455375,9.83594685208534,9.83591915513726,9.83589754535761,9.83588237194473,9.8358724372306,9.83586623669829,9.83586249440698,9.83586029003748,9.83585901693735,9.8358582981405,9.83585791038501,9.83585772957266,9.8358576966794,9.83585780019536,9.83585807326316,9.83585860384346,9.83585955872618,9.83586122739969,9.83586408706412,9.83586888578222,9.83587671676438,9.83588900478733,9.83590723103823,9.83593204610517,9.83596172836821,9.83599006480511,9.83600619141475,10.2563921852119,10.2563890487166,10.2563752482318,10.2563567921284,10.2563389645054,10.2563244998639,10.2563139924241,10.2563069122519,10.2563023871749,10.2562996030755,10.2562979378506,10.2562969645735,10.2562964099746,10.2562961085971,10.2562959669113,10.2562959397429,10.2562960178055,10.2562962254049,10.2562966274481,10.2562973460863,10.2562985896184,10.2563006943827,10.2563041716014,10.2563097368189,10.2563182671768,10.2563305699056,10.2563468002008,10.2563655318072,10.2563827388404,10.2563921850395,11.0512014781694,11.0512001172921,11.0511927504631,11.0511823784385,11.0511719268185,11.0511631234822,11.0511565154885,11.051151935586,11.0511489379866,11.0511470568594,11.0511459133667,11.0511452362431,11.0511448463429,11.0511446326036,11.0511445310552,11.0511445101984,11.0511445629836,11.0511447051296,11.051144979323,11.0511454654203,11.0511462973423,11.0511476861497,11.0511499431405,11.0511534861247,11.0511587951456,11.0511662563557,11.0511758288791,11.0511865694689,11.0511962099577,11.0512014783453,12.3642636733466,12.3642632045255,12.3642595639539,12.3642541659378,12.3642485051317,12.364243565182,12.3642397384439,12.3642370116609,12.3642351835049,12.3642340123142,12.3642332877496,12.3642328522987,12.3642325984708,12.3642324579346,12.3642323905187,12.3642323759879,12.3642324093228,12.3642324996002,12.3642326722304,12.3642329745487,12.3642334848787,12.3642343240602,12.364235665304,12.3642377323027,12.3642407671322,12.3642449387726,12.3642501673304,12.3642558962648,12.3642609379374,12.3642636731263,14.4133626282063,14.4133625512699,14.4133608651687,14.4133582119415,14.4133553181556,14.4133527040217,14.4133506144968,14.4133490824488,14.4133480282125,14.413347336564,14.4133468992471,14.4133466312087,14.4133464723573,14.4133463834625,14.4133463409478,14.4133463326414,14.4133463551956,14.4133464133915,14.4133465212168,14.4133467046371,14.4133470059926,14.4133474892539,14.413348243629,14.413349380053,14.4133510114373,14.4133532044617,14.4133558950751,14.413358785853,14.4133612892984,14.4133626278069,17.5677605391623,17.5677606425938,17.5677598949609,17.5677586137847,17.5677571564627,17.5677557911251,17.5677546608925,17.5677538027977,17.567753191047,17.5677527748113,17.5677525016273,17.5677523279596,17.5677522218389,17.5677521617713,17.5677521345349,17.5677521331477,17.567752155543,17.5677522041635,17.5677522864228,17.5677524159543,17.5677526145395,17.5677529142013,17.5677533580826,17.5677539973706,17.5677548799917,17.5677560260342,17.5677573882107,17.5677588072726,17.5677599889435,17.5677605385842,22.467820114335,22.4678203229592,22.4678199575454,22.4678192452687,22.4678183978115,22.4678175697487,22.4678168505714,22.4678162732007,22.4678158344041,22.4678155138036,22.4678152868572,22.4678151315746,22.4678150309557,22.4678149731384,22.4678149506518,22.4678149595319,22.4678149986857,22.4678150696608,22.4678151767887,22.4678153276181,22.4678155335186,22.4678158101098,22.4678161766846,22.4678166532562,22.4678172533662,22.4678179707363,22.4678187594582,22.4678195131286,22.4678200407396,22.4678201140386,30.1736017459031,30.1736019659818,30.1736015786437,30.173600844802,30.1735999673669,30.1735990836563,30.1735982762465,30.1735975831093,30.1735970133949,30.1735965607182,30.1735962126624,30.1735959562538,30.1735957805283,30.1735956773956,30.1735956416648,30.1735956707664,30.17359576447,30.1735959247525,30.1735961557502,30.1735964636586,30.1735968564144,30.1735973427695,30.1735979300237,30.1735986194553,30.1735993985391,30.1736002296752,30.1736010359313,30.1736016911855,30.1736020029944,30.1736017457659,42.143263346954,42.1432634737652,42.1432625147241,42.1432609394581,42.1432591156241,42.1432572805048,42.1432555761898,42.1432540730069,42.1432527962663,42.1432517463144,42.1432509121632,42.1432502795958,42.1432498353934,42.1432495692673,42.1432494745926,42.143249548544,42.1432497920108,42.1432502095082,42.1432508089426,42.1432516009222,42.1432525972862,42.1432538080413,42.1432552354226,42.1432568634963,42.1432586422878,42.143260467407,42.1432621582993,42.1432634474848,42.1432639771935,42.1432633483485,59.2482794442217,59.2482789584585,59.2482761533037,59.2482719885386,59.2482673002255,59.2482626373121,59.2482583214944,59.2482545098132,59.2482512579486,59.2482485671778,59.24824641428,59.2482447688445,59.2482436024303,59.2482428927972,59.2482426256616,59.2482427952815,59.2482434045194,59.2482444647776,59.2482459955116,59.2482480226431,59.2482505751219,59.2482536777252,59.2482573369731,59.2482615159679,59.2482660950148,59.2482708195018,59.2482752462408,59.2482787185291,59.2482803985148,59.2482794484566,78.7606455091844,78.7606427144948,78.7606355576377,78.7606257362205,78.7606149694725,78.7606044224351,78.7605947525224,78.7605862611006,78.7605790379433,78.760573066067,78.7605682849078,78.7605646237563,78.7605620186507,78.7605604203923,78.7605597976423,78.7605601378015,78.7605614471349,78.7605637508133,78.7605670921939,78.760571530165,78.7605771331127,78.7605839655678,78.7605920606938,78.7606013683179,78.760611668564,78.7606224489296,78.7606327688241,78.7606411918979,78.7606459103047,78.7606455158757,92.7646186596171,92.7646125643847,92.7645988611498,92.7645811217289,92.7645622602253,92.7645441459081,92.7645277556717,92.7645134865962,92.7645014151671,92.7644914665859,92.7644835133654,92.7644774254641,92.7644730912389,92.764470426416,92.764469377921,92.7644699245427,92.7644720767542,92.7644758770386,92.7644813993328,92.7644887461912,92.7644980415959,92.7645094137676,92.7645229567234,92.764538651609,92.7645562249333,92.7645749266045,92.7645932533214,92.7646087597842,92.7646182243427,92.7646186659361,96.7762035759693,96.7761934803208,96.7761743160514,96.7761508112582,96.7761266331998,96.7761039427879,96.776083733203,96.776066312014,96.7760516586422,96.776039624623,96.776030024362,96.7760226833764,96.7760174597432,96.776014248931,96.7760129856306,96.776013643994,96.7760162369387,96.7760208166993,96.7760274751428,96.7760363419537,96.7760475796494,96.776061369572,96.7760778763988,96.7760971667765,96.7761190465364,96.7761427729795,96.7761666368396,96.7761875689077,96.7762012607852,96.7762035782737,96.8174170461563,96.8174054276817,96.8173842018582,96.8173590275924,96.8173337724712,96.8173104644952,96.817289927554,96.8172723522754,96.8172576290924,96.8172455593903,96.8172359405889,96.8172285900561,96.8172233609167,96.817220147146,96.8172188827627,96.8172195417356,96.8172221370629,96.8172267214996,96.817233388359,96.8172422706187,96.8172535382778,96.8172673891361,96.8172840223205,96.8173035708358,96.8173259542361,96.8173505891546,96.8173759043669,96.8173987484634,96.8174142106467,96.8174170441824,95.8332384502466,95.8331991284143,95.8331415687322,95.8330890099148,95.8330477042835,95.8330166210835,95.8329927985529,95.8329741819305,95.8329594729084,95.8329477843842,95.8329386067365,95.8329316553964,95.8329267291006,95.8329237075427,95.8329225199953,95.8329231402834,95.8329255810274,95.832929898152,95.8329361981041,95.8329446499881,95.8329555179397,95.8329692267314,95.8329864848716,95.8330084697318,95.8330370206655,95.8330745171146,95.8331225551999,95.8331779475772,95.8332259348774,95.833238444703,87.0415512196275,87.0413218437968,87.041058337859,87.0408721835175,87.0407586327014,87.0406957805186,87.0406612472489,87.0406403399124,87.0406264003166,87.040616825852,87.0406097470267,87.0406045878899,87.0406009935871,87.0405988050772,87.040597945171,87.0405983916052,87.0406001514923,87.0406032843666,87.0406079300837,87.0406143590104,87.0406231288322,87.0406354342729,87.0406538639576,87.0406838174777,87.0407358181785,87.0408278589648,87.0409832524677,87.0412119419217,87.0414594202511,87.0415512127486,69.1970626000316,69.1962199273378,69.1954321829306,69.1949790646056,69.194750656856,69.1946390819437,69.1945853214819,69.1945634736771,69.1945508456978,69.1945440076151,69.1945396032017,69.1945366420692,69.1945346615804,69.1945334703619,69.1945329946556,69.1945332255136,69.1945341533831,69.1945358315755,69.194538423173,69.1945422727649,69.194548202978,69.1945582132683,69.1945771545397,69.1946162911928,69.1947004169797,69.1948790119326,69.1952341069954,69.1958484997376,69.1966464580313,69.197062594305,50.1681113731174,50.1654950379043,50.1635542925591,50.1625634395795,50.1621236069953,50.1619816486966,50.1619007667171,50.1618749306329,50.1618630510673,50.1618578214297,50.1618551449175,50.1618536007489,50.1618526556544,50.1618520975294,50.1618518611216,50.1618519673985,50.1618523710541,50.161853110638,50.1618543603609,50.1618564781424,50.1618604004388,50.1618686184777,50.1618877548495,50.1619347884863,50.1620518116164,50.1623368958966,50.1629913700452,50.1643318932297,50.1664766607186,50.1681113704005,35.5965838455692,35.5883248569233,35.583796595723,35.5821300030852,35.5811771744809,35.5809539747301,35.5808504803886,35.5808157405323,35.5808027470379,35.580797812927,35.580795789404,35.5807948414048,35.5807943451247,35.5807940500662,35.5807938923722,35.5807939711369,35.5807941610029,35.5807944843584,35.580795136497,35.5807964653135,35.5807994349155,35.5808068215678,35.5808265247847,35.5808806436484,35.5810301979242,35.5814383995681,35.582515727666,35.5851309130752,35.5904907567703,35.5965838451102,25.9564133269981,25.9316955913993,25.9193885238941,25.9169686319788,25.915611925385,25.9152149628646,25.9150790919203,25.915033843672,25.9150182790697,25.9150128379775,25.9150108757302,25.9150100874198,25.9150097297584,25.9150094862545,25.9150092611225,25.9150093936942,25.9150095339109,25.9150096930455,25.915010128017,25.9150111716576,25.915013748531,25.9150208278797,25.9150409314639,25.9150996354288,25.915273510681,25.9157927919566,25.9173375941477,25.9218681188677,25.9337674251947,25.9564133274472,19.8583399093778,19.7977144048522,19.771937910676,19.766368941085,19.7647273845557,19.7642295650195,19.7640703666931,19.7640181532995,19.7640005591642,19.7639945620505,19.763992450041,19.7639916727124,19.7639913302152,19.7639910363074,19.7639904629691,19.7639907742529,19.7639909665665,19.7639910422241,19.7639913900532,19.7639923646936,19.7639946217707,19.764001470719,19.7640207728137,19.7640780493583,19.7642521064384,19.764798768505,19.7665688702692,19.772569215251,19.7956842771142,19.8795399783623,19.9042284489962,19.8457960679285,19.8197647459402,19.8141752128414,19.8125251266345,19.8120271160506,19.8118673858087,19.8118150778584,19.8117974501197,19.8117914424206,19.811789472688,19.8117885488995,19.8117882064554,19.8117879097764,19.8117873388788,19.8117876446833,19.8117878411787,19.8117879128382,19.811788268711,19.8117892402754,19.8117916442986,19.8117983757048,19.8118177311437,19.8118751894424,19.8120497471748,19.8125981658246,19.8143736820294,19.8203751041492,19.8436937999238,19.9260223975384,15.9168845240238,15.8847748272209,15.8735409185427,15.8695828358726,15.8682604572946,15.8678209314763,15.8676728805578,15.8676219361852,15.86760412797,15.8675977655568,15.8675954831626,15.8675945529546,15.8675941714583,15.867593940275,15.8675937314629,15.8675938281462,15.8675939311712,15.8675940534015,15.8675944111205,15.8675953083878,15.8675975702467,15.8676036242103,15.8676205640794,15.8676693570711,15.8678133236643,15.8682430886975,15.869636866091,15.8735025242333,15.8900110966062,15.9168845246764,13.3273472819187,13.32021898668,13.3156892261752,13.3135676243086,13.3127406618394,13.3124254884193,13.312308794929,13.3122655029996,13.3122492713207,13.3122430678169,13.3122406447369,13.3122396354765,13.3122391995596,13.3122389852712,13.3122388667109,13.3122388908607,13.3122389714215,13.3122391260951,13.3122395033652,13.3122403807283,13.3122424760349,13.3122477248445,13.3122614729277,13.3122979919756,13.3123993613844,13.3126525512563,13.3134477131184,13.3147340937996,13.3189890822701,13.3273472822162,11.6615163303109,11.6598174486843,11.6580659480733,11.6570820078489,11.6566157627568,11.6564158943592,11.6563332088945,11.6562995147145,11.6562857087605,11.6562799449843,11.6562774715042,11.6562763612158,11.6562758451304,11.6562755965174,11.6562754840278,11.6562754837394,11.656275564202,11.6562757527512,11.6562761700797,11.6562770671683,11.6562790434947,11.6562835625663,11.6562944296969,11.6563201696179,11.6563875701441,11.6565290431517,11.6569406881426,11.6577326362982,11.6591932511162,11.6615163304618,10.6184643486549,10.618021486104,10.6173803833526,10.6169343487382,10.6166905748672,10.616571300051,10.6165160174124,10.616490906062,10.6164794717275,10.6164741759051,10.6164716611445,10.6164704299939,10.6164698144815,10.6164695074682,10.6164693713678,10.6164693574491,10.6164694485156,10.6164696778495,10.6164701555423,10.6164711117951,10.6164730501214,10.6164770600737,10.6164857941996,10.6165042562583,10.616547832563,10.6166351042777,10.6168342238094,10.6172290685411,10.6178074902589,10.6184643484728,10.0196613586426,10.0195376293989,10.0192982571768,10.0191001341757,10.0189747241957,10.0189046264635,10.018867782195,10.0188488922218,10.0188392473381,10.0188342846959,10.0188316996099,10.0188303359872,10.0188296142347,10.0188292412407,10.0188290728919,10.0188290484386,10.0188291541588,10.0188294273143,10.0188299758911,10.0188310182675,10.0188329908432,10.0188367394985,10.0188440736476,10.0188581081257,10.0188865743448,10.0189391330633,10.0190335595877,10.0192052653772,10.0194461330227,10.0196613590134,9.73860655443507,9.73857050696259,9.73847767383414,9.73838607682974,9.73831819981901,9.73827435173332,9.73824801855845,9.73823281732337,9.7382242210376,9.73821940956426,9.73821673064632,9.73821524548376,9.73821443092473,9.73821400018346,9.73821380268058,9.73821377019157,9.73821388932151,9.73821420024603,9.73821481244385,9.73821594055645,9.73821798157065,9.73822164240846,9.73822823861162,9.73823983703214,9.73826033875987,9.73829565840355,9.7383514822294,9.73843357148465,9.73853285454316,9.73860654996066,9.66944353073731,9.66942831705074,9.66937992871304,9.66932512168264,9.6692792268989,9.66924626461943,9.66922463247039,9.66921121323801,9.66920318434086,9.66919849328058,9.66919579693116,9.66919426763458,9.66919341544947,9.6691929600647,9.66919274957783,9.66919271324241,9.66919283756906,9.66919316351884,9.66919380034035,9.66919495846157,9.6691970138201,9.66920060501691,9.66920681509713,9.66921731124209,9.66923454687807,9.66926178104333,9.66930159842893,9.66935363927505,9.66940874079603,9.66944352646077,9.68185961153782,9.68184922062335,9.68181226578126,9.68176786458068,9.68172885555058,9.68169972620482,9.68168000933393,9.68166748067448,9.68165984610495,9.68165532392205,9.68165269831916,9.68165119832991,9.68165035821054,9.68164990770763,9.68164969886316,9.68164966218458,9.68164978445137,9.68165010559922,9.68165073162581,9.68165186537714,9.68165386510279,9.68165733163405,9.68166324685255,9.68167310142035,9.68168895674305,9.68171325957538,9.68174763112179,9.68179064725125,9.68183384983539,9.68185962016937,9.84291903838747,9.84291316789924,9.84288985805781,9.84286012511865,9.84283260784322,9.84281112055013,9.84279602236908,9.84278613108458,9.84277995473473,9.84277622565074,9.84277402842831,9.84277275917363,9.842772042418,9.84277165569029,9.84277147528844,9.84277144234948,9.84277154534508,9.842771817234,9.84277234557997,9.84277329637908,9.8427749579266,9.8427778050621,9.84278258211916,9.84279037826198,9.84280261146352,9.84282075265802,9.84284544859971,9.84287497002286,9.84290309827202,9.84291903802576,10.2670924678806,10.2670893689006,10.2670756574166,10.2670573020239,10.2670395589982,10.2670251546724,10.2670146860247,10.2670076292003,10.2670031175909,10.2670003410586,10.2669986800199,10.2669977090362,10.2669971556796,10.2669968549546,10.2669967135738,10.2669966864745,10.26699676439,10.2669969715586,10.2669973727236,10.2669980896583,10.2669993299715,10.2670014288102,10.2670048948869,10.2670104394378,10.2670189338373,10.2670311771582,10.2670473193715,10.2670659455089,10.2670830638494,10.2670924681638,11.0666681990295,11.0666668506496,11.0666595295651,11.0666492140534,11.0666388131731,11.0666300481176,11.0666234660229,11.0666189024241,11.0666159146018,11.06661403915,11.0666128988797,11.0666122235546,11.0666118346369,11.0666116214076,11.0666115200778,11.0666114992261,11.0666115518033,11.0666116934517,11.0666119666914,11.066612451075,11.0666132799745,11.0666146636093,11.0666169120987,11.0666204414355,11.0666257294215,11.0666331601218,11.0666426907224,11.066653377354,11.0666629632756,11.0666681989571,12.3852881311498,12.3852876659515,12.3852840434621,12.3852786696496,12.385273031886,12.3852681102621,12.3852642964873,12.3852615781731,12.3852597552463,12.3852585871587,12.3852578643833,12.3852574299417,12.3852571766714,12.3852570364323,12.385256969158,12.3852569546622,12.3852569879334,12.3852570780183,12.3852572502479,12.3852575518122,12.3852580607779,12.3852588975217,12.3852602345353,12.3852622944925,12.3852653181231,12.3852694732469,12.3852746805596,12.3852803860967,12.3852854066756,12.3852881309245,14.4416629546588,14.4416628824548,14.4416612042054,14.4416585614122,14.4416556778557,14.4416530721004,14.4416509886338,14.4416494606136,14.4416484088863,14.4416477187242,14.4416472822533,14.4416470146809,14.4416468560795,14.4416467673164,14.4416467248685,14.4416467165886,14.4416467391311,14.4416467972592,14.4416469049171,14.4416470879893,14.4416473886877,14.4416478707872,14.4416486232015,14.4416497564807,14.4416513831072,14.4416535692448,14.4416562505657,14.4416591304612,14.4416616239629,14.4416629542344,17.6061710556714,17.6061711593164,17.6061704149656,17.6061691376142,17.6061676838399,17.6061663214636,17.6061651933375,17.6061643365747,17.6061637255783,17.6061633097143,17.6061630366785,17.6061628630455,17.606162756917,17.6061626968413,17.6061626696204,17.6061626682841,17.6061626907684,17.6061627395105,17.6061628219094,17.6061629515679,17.6061631502117,17.6061634497728,17.6061638932565,17.6061645316522,17.6061654126765,17.6061665562956,17.6061679152463,17.6061693303593,17.6061705080102,17.6061710550881,22.5207766969455,22.5207769097671,22.5207765439433,22.5207758321474,22.5207749847455,22.5207741564267,22.5207734368032,22.5207728588182,22.5207724193456,22.5207720980826,22.5207718705466,22.5207717147848,22.5207716138187,22.5207715557981,22.5207715332585,22.5207715422393,22.5207715816502,22.5207716530396,22.5207717607383,22.5207719122896,22.5207721190494,22.5207723966067,22.5207727642013,22.520773241758,22.5207738426747,22.5207745604785,22.5207753490851,22.5207761019332,22.5207766268797,22.5207766966472,30.2467632373865,30.2467634653536,30.2467630770857,30.2467623396608,30.2467614586984,30.2467605710722,30.24675975998,30.2467590634827,30.2467584908361,30.2467580356891,30.2467576856339,30.2467574276906,30.2467572508835,30.2467571471103,30.2467571111722,30.2467571404977,30.246757234861,30.2467573962495,30.2467576288156,30.2467579387728,30.2467583340727,30.2467588234675,30.2467594142256,30.2467601075382,30.2467608907048,30.246761725812,30.2467625354539,30.2467631927342,30.2467635054374,30.2467632372437,42.2392811082956,42.2392812249753,42.2392802637612,42.2392786779265,42.2392768433675,42.2392749971965,42.2392732826167,42.2392717702945,42.2392704857128,42.2392694292455,42.2392685898668,42.2392679532983,42.2392675062635,42.2392672384275,42.2392671431347,42.2392672175485,42.2392674625675,42.2392678827348,42.2392684860032,42.2392692830402,42.2392702857477,42.2392715041779,42.2392729405567,42.2392745788202,42.2392763686507,42.2392782049557,42.239279906134,42.2392812025974,42.2392817348601,42.2392811096709,59.3529075348554,59.3529070318292,59.3529042162846,59.3529000294733,59.3528953176685,59.3528906313446,59.3528862939522,59.3528824632339,59.3528791951111,59.3528764908553,59.3528743271419,59.3528726734126,59.352871501084,59.352870787811,59.3528705192431,59.35287068961,59.3528713017888,59.3528723672384,59.3528739055098,59.3528759426531,59.3528785077645,59.3528816257531,59.3528853031901,59.3528895030277,59.352894105035,59.3528988533651,59.3529033026957,59.352906793559,59.3529084793816,59.352907539036,78.8319952297113,78.8319924040014,78.8319852283877,78.8319753779628,78.831964580386,78.8319540033524,78.8319443061204,78.8319357908404,78.8319285474731,78.8319225588795,78.8319177642872,78.8319140928063,78.8319114802886,78.8319098773837,78.8319092526651,78.8319095934953,78.8319109061523,78.8319132158735,78.831916566133,78.8319210159847,78.831926634016,78.831933484968,78.8319416021628,78.8319509354069,78.8319612643999,78.8319720754869,78.8319824254207,78.8319908754567,78.8319956065075,78.831995236341,92.7810867610937,92.7810806528383,92.7810669363084,92.7810491812934,92.7810303044236,92.7810121760719,92.7809957734682,92.7809814936853,92.7809694133173,92.7809594575223,92.7809514985272,92.7809454061371,92.7809410686666,92.7809384017682,92.7809373523146,92.7809378990795,92.7809400525383,92.7809438552008,92.7809493810542,92.7809567327288,92.7809660343089,92.780977414144,92.7809909663979,92.7810066723571,92.7810242585738,92.7810429748209,92.7810613167974,92.7810768385236,92.7810863118095,92.7810867674137,96.7763145285527,96.7763044305728,96.7762852635338,96.7762617558189,96.7762375752113,96.776214883262,96.776194673344,96.7761772522409,96.7761625986056,96.7761505643153,96.7761409640078,96.7761336229956,96.7761283993192,96.7761251884899,96.7761239251805,96.7761245835435,96.7761271764976,96.7761317562774,96.7761384147519,96.7761472816096,96.7761585193766,96.7761723094139,96.7761888164385,96.7762081071749,96.7762299875932,96.776253715211,96.7762775809912,96.7762985158043,96.7763122105152,96.7763145308593,96.8173826193939,96.8173710026593,96.8173497782269,96.817324606451,96.8172993532461,96.8172760451715,96.8172555069126,96.8172379315015,96.8172232088368,96.817211139173,96.8172015202829,96.8171941697759,96.8171889406328,96.8171857268573,96.8171844624742,96.8171851214471,96.817187716776,96.817192301215,96.8171989680764,96.8172078503347,96.8172191179825,96.8172329688041,96.8172496018945,96.8172691501956,96.8172915331509,96.8173161672418,96.817341481073,96.8173643234638,96.8173797835898,96.8173826174099,95.8376540043193,95.8376148012433,95.8375573314088,95.8375048195213,95.8374635484805,95.8374325158977,95.8374087143644,95.8373900892225,95.8373753760523,95.837363688197,95.8373545083236,95.8373475555262,95.8373426282789,95.837339606098,95.8373384183938,95.83733903895,95.8373414803907,95.8373457986265,95.8373521000623,95.8373605536664,95.837371423218,95.8373851326388,95.8374023885721,95.8374243646118,95.8374528933719,95.8374903444516,95.8375383050964,95.8375935934293,95.8376414927773,95.8376539987706,87.0910300419297,87.0908015012731,87.0905388309638,87.0903533243906,87.090239628954,87.090176515277,87.0901420631587,87.0901212355833,87.0901072520131,87.090097667952,87.0900905803032,87.0900854117705,87.0900818116757,87.090079619478,87.090078758346,87.0900792059553,87.0900809694086,87.0900841082535,87.0900887623387,87.0900952018125,87.0901039835796,87.0901163001273,87.0901347344102,87.0901646725596,87.0902166086671,87.0903084814326,87.090463521158,87.0906916200509,87.0909384272701,87.0910300350851,69.3021399489328,69.3012997558593,69.3005107950697,69.3000589037556,69.2998331855969,69.2997219606447,69.2996673887266,69.299645680915,69.2996330426299,69.2996261718343,69.2996217570618,69.2996187840221,69.2996167957954,69.2996155998268,69.2996151223221,69.2996153543599,69.2996162863359,69.2996179716545,69.2996205737083,69.2996244373932,69.2996303857608,69.2996404184927,69.2996593858581,69.2996985457699,69.2997826677963,69.2999611473915,69.3003158329524,69.3009290870432,69.3017250038725,69.3021399432816,50.2817466511944,50.2791508630132,50.2772175798153,50.2762174539358,50.2757711022514,50.2756339071342,50.2755525627184,50.2755265628659,50.2755147151763,50.2755094605769,50.2755067743709,50.2755052227999,50.2755042725483,50.2755037113243,50.2755034737059,50.2755035806977,50.2755039869056,50.2755047307791,50.2755059872084,50.275508114899,50.2755120521044,50.2755202936489,50.2755394700618,50.2755865734615,50.2757037013463,50.2759889019261,50.276643073489,50.2779822895063,50.280121109637,50.2817466485142,35.6881412380393,35.6798807449007,35.6753723685015,35.6737646050694,35.672790195173,35.6725670928311,35.6724640550242,35.672429179223,35.6724161698275,35.672411227448,35.6724091971511,35.6724082454232,35.6724077468743,35.6724074503568,35.6724072920863,35.6724073708218,35.6724075618358,35.672407887305,35.6724085428803,35.6724098775412,35.6724128575166,35.6724202641516,35.6724400140121,35.672494237321,35.6726440231151,35.6730525712946,35.6741305885238,35.6767420514557,35.6820957841439,35.6881412375919,26.0230355580522,25.9986446855777,25.9860059417399,25.9836747732792,25.9823227995335,25.9819252868657,25.9817892540022,25.9817440143314,25.981728417065,25.9817229678073,25.9817210012644,25.9817202100527,25.981719851296,25.9817196073698,25.981719383682,25.9817195168225,25.981719657313,25.9817198166636,25.9817202540969,25.9817213001552,25.9817238887272,25.9817309857338,25.9817511401188,25.9818099831096,25.9819842258192,25.9825044977837,25.9840501704149,25.9885893456323,26.0004263447616,26.0230355584945,19.904228589038,19.845796354873,19.8197650331407,19.8141755000682,19.8125254138658,19.8120274032821,19.8118676730402,19.8118153650899,19.8117977373512,19.8117917296521,19.8117896163038,19.811788836131,19.8117884936869,19.8117881970079,19.8117876261103,19.8117879319148,19.8117881284102,19.8117882000698,19.8117885559425,19.8117895275069,19.8117917879144,19.8117986629363,19.8118180183752,19.8118754766739,19.8120500344061,19.8125984530551,19.8143739692539,19.82037539134,19.8436940868902,19.9260225441348,19.9203970837531,19.8626820581447,19.8365673969575,19.8309704038423,19.8293174783084,19.8288194067977,19.8286595041471,19.8286071640819,19.8285895280258,19.828583515312,19.8285815185151,19.8285806198264,19.8285802788516,19.8285799799442,19.8285794084148,19.8285797140568,19.8285799133303,19.8285799818098,19.8285803414075,19.8285813121509,19.8285836868933,19.8285904571527,19.8286098293841,19.8286673512529,19.8288420764711,19.829391081425,19.8311683807062,19.8371703794936,19.8605521948398,19.9423896181068,15.9290971541458,15.896956030248,15.8856527329814,15.8816911827455,15.8803656725768,15.8799255068603,15.8797772688644,15.8797262705012,15.8797084456898,15.879702083284,15.879699799692,15.8796988648232,15.8796984838241,15.8796982525276,15.8796980433545,15.8796981396783,15.8796982430475,15.8796983653611,15.8796987223116,15.8796996251944,15.8797018888456,15.8797079448517,15.8797249055018,15.8797737616556,15.8799179587053,15.8803482872307,15.8817461668614,15.8856115871969,15.9022286669569,15.9290971544798,13.3362605211932,13.3290913669189,13.3245508993312,13.3224221541668,13.3215933341737,13.3212775216447,13.321160633143,13.321117279922,13.3211010292289,13.3210948194358,13.3210923955004,13.32109138629,13.3210909500854,13.3210907356778,13.3210906170645,13.3210906412732,13.3210907217712,13.3210908766987,13.3210912535598,13.3210921306297,13.3210942283936,13.3210994833283,13.3211132501658,13.321149824514,13.3212513964512,13.3215050475082,13.3223032157318,13.3235896408472,13.3278842807035,13.3362605213471,11.668013931416,11.6663077699487,11.6645495587238,11.6635623756978,11.6630948719973,11.6628945264747,11.6628116829,11.6627779362802,11.6627641141977,11.6627583457586,11.6627558709922,11.6627547605404,11.6627542445659,11.6627539960065,11.6627538835114,11.662753883234,11.6627539636513,11.6627541522037,11.6627545697487,11.6627554671236,11.6627574445542,11.6627619683514,11.6627728483343,11.6627986388323,11.6628661539874,11.6630078862401,11.6634213262473,11.6642109536148,11.6656771884663,11.6680139315048,10.6230479498192,10.6226032069904,10.6219594416106,10.6215118049154,10.6212672211819,10.6211476102377,10.6210921918978,10.621067030485,10.6210555785743,10.6210502771771,10.6210477609377,10.6210465295522,10.6210459141283,10.6210456072401,10.6210454712117,10.6210454573043,10.621045548338,10.6210457775771,10.6210462551699,10.6210472115636,10.6210491505467,10.6210531645952,10.621061906397,10.6210804032806,10.6211240874224,10.6212113994418,10.6214117104431,10.6218081004964,10.622388160233,10.6230479497571,10.0227064486212,10.0225821381975,10.0223416331246,10.0221427245431,10.0220169200545,10.0219466535096,10.0219097464616,10.0218908357346,10.0218811852266,10.0218762217438,10.0218736370451,10.0218722739451,10.0218715525832,10.0218711798303,10.0218710116038,10.0218709871721,10.0218710928435,10.0218713658956,10.0218719142942,10.0218729565975,10.021874929264,10.0218786802303,10.0218860210406,10.0219000694698,10.0219286190966,10.0219812536251,10.0220759384259,10.0222483513592,10.0224902097826,10.0227064488999,9.74001540917994,9.73997934433947,9.73988591916125,9.73979369308787,9.73972538473463,9.73968129929192,9.73965485250534,9.73963960227931,9.73963098678126,9.73962616855499,9.73962348765058,9.73962200213478,9.73962118768226,9.73962075711258,9.73962055973258,9.73962052728625,9.73962064638757,9.7396209572331,9.73962156931007,9.7396226973965,9.7396247387671,9.73962840128734,9.73963500431498,9.73964661655191,9.73966716426667,9.73970258664235,9.73975860762346,9.73984110396887,9.73994102969476,9.74001540791149,9.6699756603284,9.66996039965053,9.66991216760466,9.66985755956856,9.66981181476734,9.66977894182549,9.6697573559538,9.66974395857093,9.66973593932398,9.66973125231322,9.66972855759159,9.66972702892453,9.66972617697331,9.6697257216714,9.66972551121218,9.66972547488549,9.66972559921329,9.66972592515416,9.66972656193768,9.66972771995943,9.66972977501594,9.66973336547997,9.66973957371568,9.66975006466794,9.6697672902786,9.66979450056428,9.66983426274208,9.66988619514936,9.66994111219005,9.6699756550235,9.68224542742017,9.68223523565887,9.6821985264636,9.68215430482196,9.6821153990708,9.6820863209488,9.68206662691303,9.68205410753488,9.68204647638032,9.68204195528454,9.68203932993215,9.68203782993446,9.68203698975113,9.68203653919056,9.68203633030969,9.68203629361371,9.68203641586244,9.682036736964,9.68203736284813,9.68203849618151,9.68204049478272,9.68204395828877,9.68204986624369,9.68205970399178,9.68207552090558,9.68209974523305,9.68213397688427,9.68217677732644,9.68221974859618,9.6822454348069,9.84518112789152,9.84517522916736,9.84515194968133,9.8451222687433,9.84509479902573,9.845073345968,9.84505826949902,9.84504839101344,9.84504222189354,9.84503849679856,9.84503630175049,9.84503503367199,9.84503431754367,9.84503393113377,9.84503375086129,9.84503371791489,9.84503382076513,9.84503409232263,9.84503462004837,9.84503556974479,9.84503722943276,9.84504007349326,9.845044845576,9.84505263453254,9.84506485832788,9.845082987396,9.84510766950762,9.84513717056847,9.84516525683418,9.84518112662578,10.2704764070461,10.2704733310489,10.2704596557364,10.270441336957,10.2704236232121,10.2704092392237,10.270398783453,10.2703917343032,10.2703872270918,10.2703844530196,10.270382793338,10.2703818230959,10.27038127014,10.2703809696247,10.2703808283401,10.2703808012586,10.270380879117,10.2703810861266,10.2703814869651,10.2703822032601,10.2703834423362,10.2703855388301,10.2703890004263,10.2703945364617,10.2704030156193,10.270415233431,10.2704313380338,10.2704499203543,10.2704670077154,10.2704764073109,11.0715906271753,11.0715892797703,11.0715819710853,11.0715716722105,11.0715612866341,11.0715525332622,11.0715459591089,11.0715414005222,11.071538415708,11.0715365420027,11.0715354027236,11.0715347279517,11.0715343393361,11.0715341262637,11.0715340250018,11.0715340041533,11.0715340566699,11.071534198173,11.0715344711356,11.0715349550285,11.0715357830823,11.0715371653061,11.0715394115677,11.0715429375169,11.071548220565,11.0715556443518,11.0715651652489,11.0715758373677,11.0715854052002,11.0715906270872,12.391940754102,12.3919402908223,12.3919366741238,12.3919313080038,12.3919256773704,12.3919207613928,12.3919169515838,12.3919142358513,12.3919124145125,12.3919112473642,12.3919105251288,12.3919100909911,12.3919098378882,12.391909697738,12.3919096305059,12.3919096160201,12.3919096492707,12.3919097392943,12.3919099113956,12.3919102127143,12.3919107212276,12.3919115571471,12.3919128926933,12.3919149501425,12.3919179697199,12.3919221188498,12.3919273187104,12.3919330168885,12.3919380317664,12.391940753993,14.450578532817,14.4505784633578,14.4505767870867,14.4505741474773,14.4505712669162,14.4505686636471,14.4505665819651,14.4505650551284,14.450564004134,14.4505633144038,14.450562878177,14.450562610738,14.4505624522077,14.4505623634818,14.4505623210531,14.4505623127814,14.450562335322,14.4505623934331,14.4505625010474,14.4505626840277,14.4505629845531,14.4505634663519,14.4505642182722,14.4505653507781,14.4505669762508,14.4505691606669,14.4505718394266,14.4505747159588,14.4505772062851,14.4505785326019,17.6182006341017,17.6182007388545,17.6181999949283,17.6181987188321,17.6181972660391,17.6181959045079,17.6181947769653,17.6181939205671,17.6181933097695,17.6181928939979,17.6181926209933,17.6181924473621,17.6181923412258,17.6181922811445,17.6181922539271,17.6181922526061,17.6181922751186,17.6181923238997,17.6181924063439,17.6181925360444,17.6181927347087,17.6181930342377,17.6181934775892,17.618194115685,17.6181949961773,17.6181961390283,17.6181974970547,17.6181989110598,17.6182000878335,17.6182006338109,22.5372457756301,22.5372459932445,22.537245626755,22.537244915197,22.5372440677129,22.5372432392832,22.5372425194711,22.5372419412658,22.5372415015604,22.5372411800769,22.5372409523484,22.537240796432,22.5372406953547,22.5372406372691,22.5372406147121,22.5372406237239,22.5372406632151,22.5372407347344,22.5372408426129,22.5372409943935,22.5372412014295,22.537241479304,22.5372418472448,22.537242325154,22.5372429263836,22.5372436443791,22.5372444330125,22.5372451855182,22.5372457101935,22.5372457754803,30.26931285451,30.2693130858234,30.2693126965296,30.2693119582799,30.2693110760808,30.2693101872627,30.2693093750046,30.2693086774556,30.2693081038931,30.2693076479766,30.2693072973,30.2693070388805,30.2693068617383,30.2693067577666,30.2693067217641,30.2693067511584,30.2693068457251,30.2693070074548,30.2693072405049,30.2693075510945,30.2693079471796,30.2693084375128,30.2693090293524,30.2693097238631,30.2693105082973,30.2693113446376,30.2693121553935,30.2693128131611,30.2693131267167,30.2693128544307,42.2685060072811,42.268506127251,42.2685051635673,42.2685035751837,42.2685017371916,42.2684998876598,42.2684981699429,42.2684966548226,42.2684953678427,42.2684943093825,42.2684934684054,42.2684928306137,42.2684923827131,42.2684921143544,42.2684920188722,42.2684920934267,42.2684923389191,42.2684927599012,42.26849336434,42.2684941629212,42.2684951675661,42.2684963883414,42.2684978274708,42.2684994688489,42.2685012620573,42.2685031017662,42.2685048061323,42.2685061046323,42.2685066385166,42.2685060079427,59.3840923955773,59.3840918953532,59.3840890739457,59.3840848808773,59.3840801620948,59.3840754687171,59.3840711248702,59.384067288445,59.3840640154505,59.3840613071539,59.3840591401999,59.3840574839854,59.3840563098845,59.3840555955205,59.384055326523,59.3840554971129,59.3840561101718,59.3840571771755,59.3840587177034,59.3840607578444,59.3840633267377,59.3840664493319,59.3840701322135,59.3840743382877,59.3840789471678,59.3840837026176,59.3840881587608,59.3840916548166,59.3840933444247,59.3840923976187,78.852296893075,78.8522940674354,78.8522868876047,78.8522770282645,78.8522662221093,78.8522556364851,78.8522459314391,78.8522374093208,78.8522301601548,78.852224166761,78.8522193683085,78.8522156938581,78.852213079208,78.8522114749641,78.8522108496749,78.8522111906918,78.8522125042962,78.8522148157445,78.8522181685446,78.8522226217969,78.8522282441465,78.8522351003938,78.852243223905,78.8522525644773,78.8522629016933,78.8522737215191,78.8522840802002,78.8522925369886,78.8522972756019,78.8522968963397,92.7851251980897,92.7851190720736,92.7851053550294,92.7850875957935,92.7850687151854,92.7850505834501,92.7850341778703,92.785019895513,92.7850078130022,92.78499785549,92.7849898951203,92.7849838016584,92.7849794634137,92.7849767960204,92.7849757463376,92.7849762931362,92.7849784468915,92.78498225012,92.7849877768207,92.7849951296418,92.7850044326915,92.7850158143495,92.7850293688144,92.7850450774025,92.785062666691,92.7850813863681,92.7850997321196,92.7851152572501,92.7851247323844,92.78512520134,96.7763171655135,96.7763070665704,96.776287899416,96.7762643919087,96.7762402111192,96.7762175190863,96.7761973092782,96.7761798883149,96.7761652346496,96.7761532003024,96.7761435999997,96.7761362589913,96.7761310353083,96.7761278244781,96.7761265611678,96.7761272195301,96.7761298124845,96.776134392265,96.7761410507409,96.7761499176005,96.7761611553695,96.7761749454081,96.7761914524323,96.7762107431632,96.776232623567,96.7762563511496,96.7762802168755,96.7763011516592,96.7763148461069,96.7763171667274,96.8173823995856,96.8173707848882,96.81734956057,96.8173243896888,96.8172991371287,96.8172758290466,96.8172552903752,96.8172377149285,96.8172229924302,96.8172109227716,96.8172013038449,96.8171939533412,96.817188724193,96.8171855104134,96.8171842460297,96.8171849050032,96.8171875003347,96.817192084778,96.8171987516453,96.8172076339103,96.8172189015639,96.8172327523858,96.8172493854612,96.8172689337122,96.8172913165466,96.8173159503947,96.8173412637691,96.8173641055911,96.8173795650897,96.8173823983507,95.8395628959523,95.8395237514996,95.8394663253044,95.8394138396417,95.839372585439,95.8393415718784,95.8393177779782,95.8392991501694,95.8392844355363,95.8392727477395,95.8392635669538,95.8392566135145,95.8392516858429,95.8392486633899,95.8392474756125,95.8392480962828,95.8392505380283,95.8392548567514,95.8392611588358,95.8392696131864,95.8392804834159,95.8392941930521,95.8393114478735,95.8393334197212,95.8393619380814,95.8393993680025,95.839447292626,95.8395025323876,95.8395503910307,95.8395628934063,87.1100484419239,87.109820244184,87.1095578988193,87.1093726409943,87.1092589165601,87.1091957277246,87.1091613068803,87.1091405065957,87.1091265081015,87.1091169201832,87.1091098291515,87.1091046570432,87.1091010546889,87.109098861076,87.1090979994955,87.1090984475596,87.1091002123753,87.1091033535087,87.1091080107929,87.1091144542837,87.109123240559,87.1091355611498,87.1091539966305,87.1091839275531,87.1092358358421,87.1093276374951,87.1094825288331,87.1097103803089,87.1099569044652,87.1100484384964,69.3407915053401,69.3399523913101,69.3391631777377,69.3387117633899,69.3384869382083,69.3383758230744,69.338320981217,69.3382993192944,69.3382866784877,69.3382797960094,69.3382753774069,69.3382724001404,69.3382704091766,69.338269211365,69.3382687331,69.3382689655733,69.3382698990511,69.3382715869768,69.3382741928593,69.3382780616473,69.3382840165199,69.3382940572216,69.3383130332886,69.3383521991383,69.3384363133612,69.3386147359001,69.3389692375007,69.3395820134864,69.340377091229,69.3407915024854,50.3227721881828,50.320183715025,50.3182531279509,50.3172501880026,50.3168018268078,50.3166662456451,50.3165847657781,50.3165587068315,50.3165468710671,50.3165416079024,50.3165389181943,50.3165373633906,50.3165364113008,50.3165358495543,50.3165356115877,50.3165357187834,50.3165361259358,50.3165368713084,50.3165381301143,50.3165402614226,50.3165442037603,50.3165524527833,50.3165716424134,50.3166187680559,50.3167359243913,50.3170211405792,50.317675144031,50.3190137282653,50.3211501946404,50.3227721868158,35.7208280117112,35.7125699259284,35.7080684963432,35.7064798427272,35.7054983142578,35.7052751846597,35.7051723253801,35.7051374036257,35.7051243898975,35.7051194443834,35.7051174131057,35.7051164619283,35.7051159606696,35.7051156623681,35.7051155042854,35.7051155827678,35.7051157743433,35.7051161006428,35.7051167574301,35.7051180936991,35.7051210785016,35.7051284936029,35.7051482569711,35.7052025124298,35.7053523694778,35.705761009214,35.7068391571434,35.7094491119638,35.7147997057361,35.7208280114766,26.0466076855925,26.0223308326782,26.009588109097,26.007286934557,26.0059370227977,26.0055393295718,26.0054032557149,26.0053580209394,26.0053424132975,26.0053369626999,26.0053349858922,26.0053341937641,26.0053338437404,26.0053335981218,26.0053333757813,26.0053335090431,26.0053336489765,26.0053338085588,26.0053342469076,26.0053352947898,26.00533787888,26.0053449817456,26.0053651616942,26.0054240486322,26.0055984099446,26.0061189922977,26.007664892108,26.0122064126985,26.0240220115337,26.0466076858055,19.9203971542065,19.8626822024823,19.8365675414328,19.8309705483339,19.8293176228023,19.8288195512918,19.8286596486413,19.828607308576,19.8285896725199,19.8285836598061,19.8285815907622,19.8285807643205,19.8285804233457,19.8285801244383,19.8285795529089,19.8285798585509,19.8285800578244,19.8285801263039,19.8285804859016,19.828581456645,19.8285837591403,19.8285906016468,19.8286099738782,19.828667495747,19.8288422209651,19.8293912259186,19.8311685251966,19.8371705239643,19.8605523391864,19.9423896918108],"Archive1107_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive1107_field3":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.157930877933844,0.159583130876125,0.158333282081446,0.158080625366807,0.158115659259701,0.158102866178651,0.158103061475876,0.158103184581782,0.158103135601675,0.158103165449706,0.158103180575408,0.158103184131336,0.158103185582056,0.158103186050948,0.158103165458057,0.158103172080324,0.158103179295377,0.158103178087656,0.158103176135735,0.158103179161831,0.158103177981673,0.158103203378294,0.15810326056681,0.158103235389793,0.158105934843733,0.158100044420742,0.158124160844136,0.15832041490287,0.156898300691263,0.166973791401279,0.129856716120079,0.121740164644435,0.122654409467551,0.122460056250111,0.122442226118898,0.122441684532499,0.122439751016975,0.122439636231848,0.122439593752897,0.122439589493924,0.122439597539812,0.12243959919345,0.122439600670762,0.122439597786881,0.122439591000571,0.12243959877305,0.122439598719677,0.122439597431162,0.122439596838003,0.12243959913791,0.122439607584844,0.122439618808348,0.122439869313052,0.122439960794003,0.122441132774862,0.122461408717697,0.12240077417043,0.12278323782464,0.123598735045102,0.121088467622592,0.0718548654986031,0.0740058914649531,0.0733047336879899,0.0733526179190734,0.0733245729829777,0.0733205197053076,0.0733193527270867,0.0733189374643954,0.0733188545042754,0.0733188412568911,0.0733188432942358,0.0733188473792212,0.0733188505161349,0.073318852354522,0.0733188506453922,0.0733188517290717,0.0733188522954033,0.0733188509047017,0.0733188497456538,0.0733188479308461,0.0733188602327251,0.0733188742794559,0.0733189070715108,0.0733203322551621,0.0733168003379946,0.0733360090740026,0.0733608134391658,0.0732068409126004,0.0735245564101265,0.0756603596460449,0.0483924376347101,0.0478078088765863,0.0478999464189448,0.0478414262711283,0.0478377687384777,0.0478335996722667,0.047832453141231,0.0478321424433104,0.0478320334663183,0.047832018565717,0.0478320193031745,0.0478320239233166,0.0478320274055275,0.0478320295547634,0.047832030444498,0.0478320310949578,0.0478320307694443,0.0478320291359651,0.047832027408699,0.0478320252015759,0.0478320201150654,0.047832109613796,0.0478318873447412,0.0478330172057542,0.0478340355410553,0.0478262070568885,0.0478601770881478,0.0479467272932075,0.0476450581164976,0.0475702071878628,0.0276775561200654,0.0278381009109258,0.027772659336212,0.0277728885845725,0.0277645846010249,0.027763232134329,0.0277622445688221,0.0277620266977632,0.0277619401070968,0.0277619271886484,0.0277619290665076,0.0277619341577094,0.0277619382765574,0.0277619407802087,0.0277619419602888,0.0277619424622269,0.0277619419870584,0.0277619403201755,0.027761937096177,0.0277619386349367,0.0277619180781363,0.0277619827223327,0.0277620317815944,0.0277616879846744,0.0277643773166996,0.0277670617078465,0.0277466946310896,0.0277971924410808,0.027887256499412,0.0279742466897853,0.0142555583933285,0.0142213257367102,0.0142184352946567,0.014215726106806,0.0142119065740927,0.014211255918694,0.0142106783160918,0.014210547387929,0.0142104942213555,0.0142104857535115,0.0142104875549871,0.0142104913657308,0.0142104944579461,0.014210496451385,0.0142104974390981,0.0142104977540649,0.0142104972658752,0.0142104962663316,0.0142104928414292,0.0142104936701574,0.014210490637632,0.0142104667658797,0.0142106361318628,0.0142106418692624,0.0142096401928513,0.0142151455735355,0.0142160776083899,0.0142030896939622,0.0141865822156242,0.0142035541253271,0.00546720847361356,0.00553799754434996,0.00550240252757547,0.0055107211210647,0.00550726372698455,0.00550727955940468,0.00550698843775737,0.00550692196625822,0.00550689517173437,0.00550688960201816,0.00550688957109688,0.00550689117775394,0.00550689244941846,0.00550689335947555,0.00550689381358208,0.00550689398191946,0.00550689369084035,0.00550689332782726,0.00550689221580139,0.00550688945122526,0.00550689793883461,0.00550688848253784,0.00550684798985849,0.00550725742825954,0.00550688458070806,0.00550624698804327,0.00550941482891157,0.00551719334015469,0.00551733503800121,0.00556073698438352,0.000639065451286526,0.000782110851664782,0.000750170842839915,0.000755500075399163,0.000754209304229538,0.000754132054857314,0.000754037421758483,0.00075400823420515,0.000753993206692981,0.000753991148351814,0.000753989553802648,0.000753990064797838,0.000753990275930833,0.000753990547952659,0.000753990675730813,0.000753990778514601,0.000753990764100599,0.000753990612678538,0.000753991129071401,0.000753990128472017,0.000753988785979796,0.000754014056677367,0.000753965585582886,0.000753983423425617,0.000754326570356896,0.000754380511741034,0.00075289103981973,0.000756106997039941,0.000730154641832747,0.000873518588237366,-0.00321808740204665,-0.00314407239303691,-0.00315710770396825,-0.00315578915329035,-0.00315625266557239,-0.00315633760567984,-0.00315647099253478,-0.00315649255182818,-0.00315652617975089,-0.00315653221017408,-0.00315653922949565,-0.00315654149165721,-0.0031565430052719,-0.00315654355187369,-0.00315654388953936,-0.0031565439133772,-0.00315654369103691,-0.00315654330251069,-0.00315654238042711,-0.00315653914865849,-0.00315653994030035,-0.00315652803329709,-0.00315649574804504,-0.0031565068066633,-0.00315654282957884,-0.00315593446822123,-0.00315720039758476,-0.00314776027483617,-0.00318157915434338,-0.00309220485870137,-0.00972068521009914,-0.00969209150472666,-0.00969555361533417,-0.00969506002062868,-0.00969602564978944,-0.00969592051153645,-0.0096962135572285,-0.00969623217997493,-0.00969630402611057,-0.00969632285461057,-0.00969633916585728,-0.00969634551694391,-0.00969635026383287,-0.00969635215377239,-0.00969635313274146,-0.00969635329652421,-0.00969635267670689,-0.00969635103573279,-0.00969634823699484,-0.00969634183617234,-0.00969633047757026,-0.00969631493394821,-0.00969627990428124,-0.00969617340867063,-0.00969620471711586,-0.00969549285754608,-0.00969763971675134,-0.00969013523629495,-0.00970597414377075,-0.0096683726595061,-0.0208064036814089,-0.0207985995365866,-0.0208069669155995,-0.0208026090920445,-0.0208051014601036,-0.0208044984482936,-0.0208050119140922,-0.0208049996524338,-0.0208050936371667,-0.0208051144039939,-0.0208051423165976,-0.020805150299528,-0.0208051569621445,-0.02080516034249,-0.0208051616276698,-0.0208051619017282,-0.0208051609400658,-0.0208051584211069,-0.0208051535823585,-0.0208051449642798,-0.0208051285997526,-0.0208050976911357,-0.0208050610518715,-0.0208049369447401,-0.0208049465279322,-0.0208041896812485,-0.0208051203928814,-0.0208023894336292,-0.0208060721636153,-0.0208002085906029,-0.0373529530655565,-0.0372845800304352,-0.0373155736247628,-0.0373037515760526,-0.0373085655696551,-0.0373070458269966,-0.0373077164284693,-0.0373076306166269,-0.0373077778413925,-0.0373077702266952,-0.0373077990266905,-0.0373078114460476,-0.037307815402089,-0.0373078197102824,-0.0373078209264093,-0.0373078211992038,-0.0373078202481291,-0.0373078177846679,-0.0373078129206885,-0.037307804071739,-0.037307789654533,-0.0373077597038476,-0.0373077247168445,-0.037307615644697,-0.0373075983763194,-0.0373072534256627,-0.0373072839671231,-0.0373063115973889,-0.0373113962089676,-0.0372599202802448,-0.0606147155822697,-0.0604443974313202,-0.060507495615528,-0.0604845811919291,-0.0604930207566392,-0.0604906193941022,-0.0604917286541381,-0.0604912978237995,-0.0604914841616946,-0.060491514403729,-0.0604915017106304,-0.0604915247052303,-0.0604915251450089,-0.0604915284718459,-0.0604915297332758,-0.0604915299063665,-0.0604915292664056,-0.0604915274617119,-0.0604915239938596,-0.060491517327786,-0.0604915069208625,-0.0604914856393981,-0.0604914610137145,-0.0604913961581985,-0.0604913371974938,-0.0604911762495792,-0.0604914596997871,-0.0604876969130006,-0.0605126768641687,-0.0603666371277919,-0.0943149301826787,-0.0939976528722597,-0.0941118804330244,-0.0940725493724477,-0.0940851438361774,-0.0940797934618403,-0.0940818580345445,-0.094081780363673,-0.0940814862768218,-0.0940817019558714,-0.0940816452761936,-0.0940816627731966,-0.0940816661947851,-0.094081666867608,-0.0940816681012723,-0.0940816682576627,-0.094081667969283,-0.0940816669736141,-0.0940816650039594,-0.094081661066391,-0.0940816548144844,-0.0940816422324151,-0.0940816251636695,-0.0940815913077545,-0.0940815805662671,-0.0940812499363476,-0.0940829523674726,-0.0940724635620463,-0.0941275452100826,-0.093847460689772,-0.14618939033931,-0.145637355377686,-0.14582121684605,-0.145762038752852,-0.145785344394421,-0.145781664142946,-0.145778378192922,-0.145781070794804,-0.145780093009085,-0.145780300006625,-0.14578030379564,-0.145780291361668,-0.145780298920696,-0.145780298394111,-0.145780298965788,-0.145780299294771,-0.145780299443189,-0.14578029940366,-0.14578029900672,-0.145780297731986,-0.145780295306267,-0.145780290035412,-0.145780283412939,-0.145780251664069,-0.145780347809653,-0.145779613806726,-0.145783423825054,-0.145763458698829,-0.145863646639424,-0.145370744247191,-0.229855059465157,-0.229057586843032,-0.22928856877263,-0.229232727039634,-0.229204867637383,-0.229238524329885,-0.229223929390794,-0.229227246122835,-0.229227132370597,-0.22922691540229,-0.229227009883933,-0.229226988256578,-0.229226989443069,-0.229226989721293,-0.229226989417819,-0.229226989970848,-0.229226990957448,-0.229226992424182,-0.229226994322287,-0.22922699643043,-0.229226998637682,-0.229226999062664,-0.229227008034846,-0.229226952524615,-0.229227248616121,-0.229225677366501,-0.229233374494717,-0.229196339501446,-0.229369652842695,-0.228598781821588,-0.365445290559981,-0.364997504370697,-0.364788155325871,-0.365165472200726,-0.364958041301119,-0.365013093779866,-0.365009329508228,-0.365006244210982,-0.365007707125066,-0.365007356737263,-0.365007377777262,-0.365007381665357,-0.365007371820827,-0.365007370142119,-0.365007369189285,-0.36500737017541,-0.36500737320707,-0.365007378213566,-0.365007385283465,-0.365007394318248,-0.36500740616495,-0.365007414895562,-0.365007452371498,-0.365007357104726,-0.365007877687779,-0.365005600830972,-0.365016289383254,-0.364966374893605,-0.365176825506113,-0.364569663477135,-0.566023816675839,-0.569841980017894,-0.567175165030312,-0.568078422342288,-0.567981412178878,-0.567940053277608,-0.567963117810492,-0.567957478675352,-0.567957935916219,-0.567958068388988,-0.567957955698009,-0.567957952511175,-0.56795793633548,-0.56795792624945,-0.567957923210195,-0.567957925506702,-0.567957933765186,-0.567957948004906,-0.567957968545108,-0.567957995242639,-0.567958030659201,-0.567958064706083,-0.567958142050032,-0.567958055394057,-0.567958885160787,-0.567954583929278,-0.567976444864381,-0.567896747628185,-0.567968375672724,-0.56989295397495,-0.774932017129623,-0.788377133478199,-0.786043082967473,-0.785550849968361,-0.785914836157341,-0.785820859543435,-0.785829540674247,-0.785832115725228,-0.785830602513746,-0.785830811017856,-0.78583072278439,-0.785830653102799,-0.785830618980237,-0.785830592936656,-0.785830583443157,-0.785830588542995,-0.785830608504501,-0.785830643719128,-0.78583069495953,-0.785830762505502,-0.7858308500341,-0.785830944113708,-0.785831136497699,-0.785830858665079,-0.785833093848596,-0.785826376372175,-0.785825913221504,-0.786051137145833,-0.783948289520247,-0.796731763271009,-0.782389316453367,-0.779462612786363,-0.785203009170768,-0.783578033619034,-0.783741666863707,-0.783785531572897,-0.783761715624528,-0.783766467340678,-0.783766028692984,-0.783765639951947,-0.783765602180807,-0.783765479355353,-0.783765409458865,-0.783765364704254,-0.783765346195268,-0.783765354272044,-0.783765388721869,-0.783765450311011,-0.783765540396824,-0.783765659518365,-0.783765817905032,-0.783765967326505,-0.783766355801209,-0.783766189124634,-0.783765323940041,-0.78378917061009,-0.783609370624979,-0.784550820703838,-0.781222524505701,-0.785146343573037,-0.420936258424736,-0.39062937633281,-0.393869368686884,-0.394600225069635,-0.394195233534737,-0.394279212272083,-0.39427527108617,-0.394271298193028,-0.394272648412776,-0.39427217563859,-0.394272094750377,-0.394272011334947,-0.394271945447661,-0.394271908219333,-0.394271893013532,-0.39427190113131,-0.394271932410522,-0.394271987462375,-0.394272068168432,-0.394272172062369,-0.394272319872501,-0.394272466933677,-0.394272506654184,-0.39427478985252,-0.394261646423787,-0.394322916321193,-0.394153705006955,-0.394062789113775,-0.398579447091089,-0.367612586678919,-0.0285807313577989,-0.0418179890774094,-0.0345983779587368,-0.0360557419706844,-0.0360025907471257,-0.0359376565220813,-0.0359626017281597,-0.0359574909132623,-0.0359578810203756,-0.035957944613462,-0.035957862622988,-0.0359578578124794,-0.0359578402601874,-0.0359578323467252,-0.0359578293255341,-0.0359578318085212,-0.0359578398763416,-0.0359578533638462,-0.0359578739237905,-0.0359578995971311,-0.0359579166667019,-0.0359581207049007,-0.0359572240469285,-0.0359611426679914,-0.0359525110112292,-0.035935082363721,-0.0362390949830057,-0.0345229513746041,-0.0396034259726592,-0.043336497838697,0.0203233426471634,-0.00495771971526426,-0.00432695766425841,-0.00315852940904222,-0.00357280542847502,-0.00349498206007017,-0.00350004992788389,-0.00350210420639892,-0.00350121663627013,-0.00350144450896946,-0.00350140798655356,-0.00350141978789416,-0.00350142204468272,-0.0035014232274627,-0.00350142285839146,-0.00350142055521182,-0.00350141656606901,-0.00350141072788132,-0.00350140171409385,-0.00350140506197534,-0.00350133051684915,-0.00350156589176605,-0.00350111965590313,-0.00349949437280346,-0.00351957875982373,-0.00341816368635756,-0.00369093723438153,-0.00390652569807679,0.00235729260322546,-0.027327150067431,0.158702436388383,0.180263917168903,0.173277240633967,0.174449028441089,0.174403800340665,0.174364381725559,0.174379619587103,0.174376613117703,0.174377111231581,0.174376982739031,0.174376937938875,0.174376891606821,0.174376854029889,0.174376831313439,0.174376821010494,0.174376824042087,0.174376840379275,0.174376868736441,0.174376914469437,0.174376949638836,0.174377023819763,0.17437718741791,0.174375840676464,0.174381801649869,0.174365813018093,0.174349734131986,0.174699084788627,0.173008565751333,0.175821116339198,0.190023390603044,0.60610899914906,0.623516690102801,0.623557660669963,0.622810956807204,0.623058609372527,0.623015898840083,0.62302175562676,0.623021104771754,0.623021138407932,0.623021032731099,0.623020895625271,0.623020808253031,0.623020735015693,0.623020691793122,0.623020675092345,0.623020685047155,0.623020722453541,0.623020785703522,0.623020876894522,0.623020998415049,0.623021032746056,0.623021505396345,0.623020574284868,0.623019206103835,0.623038564591091,0.62293836857058,0.623107923281249,0.623824374392795,0.617086349849049,0.639852203489726,0.842414534222804,0.827717638348437,0.831496901019139,0.830897200440369,0.830951452754602,0.830951595216621,0.830953579488659,0.830953763544512,0.83095343468709,0.830953466179319,0.83095333810125,0.830953268912947,0.830953213620417,0.830953179820326,0.830953167045767,0.8309531741884,0.830953202504946,0.830953252948556,0.830953318345194,0.830953433356315,0.830953484934646,0.83095351758494,0.830954754544035,0.830948757957843,0.830958174555189,0.830993382898873,0.830593902126697,0.832014831004364,0.830359350377579,0.81926904156436,0.687927030771299,0.681388521013027,0.681745882002848,0.681850069307251,0.681869509991456,0.681868710907286,0.681866038419208,0.681868087028439,0.681867592036243,0.681867639788279,0.681867595472943,0.681867558782776,0.681867534444199,0.681867519188674,0.681867513706143,0.681867515912098,0.681867527822121,0.681867552058136,0.681867581724855,0.681867621584179,0.681867747275924,0.681867459212749,0.681868105398382,0.68186996093536,0.68184615655986,0.681931286485265,0.681781707936835,0.681233065963204,0.684948207083012,0.675363831052964,0.45619207510025,0.458115371482607,0.458436992675172,0.458371677999399,0.458351646785248,0.458386319593725,0.458380279941446,0.458381767190514,0.458381857913081,0.458381827554853,0.458381831883845,0.458381819344162,0.458381810590541,0.458381806187478,0.458381806842532,0.458381805846199,0.458381809506622,0.45838181789936,0.45838183428767,0.458381829447496,0.458381894953641,0.458382014132267,0.458380690574527,0.458386096927608,0.458373829379161,0.458352208523649,0.458535877707095,0.457837951838402,0.458181252414802,0.459433578836615,0.283415182572955,0.281202321332201,0.281079556258565,0.281668242840575,0.281565074861174,0.281582240679334,0.28158425186386,0.281583788111423,0.281584058654511,0.281584059715874,0.281584063948926,0.281584064148443,0.281584062618478,0.281584062631288,0.281584071727975,0.281584067604028,0.281584066866375,0.281584068144467,0.281584076775391,0.281584084094125,0.281584010891522,0.281584436717351,0.281583347721096,0.281583562641562,0.281594175879932,0.281538962910856,0.281658143727351,0.281288069092064,0.282532190725168,0.273484618189541,0.192219051263565,0.206385332286867,0.204512542014237,0.204628705154635,0.204672902704824,0.204660502185792,0.204663274923415,0.204663205789506,0.204663229483959,0.204663256280452,0.204663255120283,0.204663258669253,0.204663258881567,0.204663265250544,0.204663275384418,0.204663261738986,0.204663263720918,0.204663267490454,0.204663257972694,0.204663307475952,0.204663199959603,0.204663207793662,0.204664845899922,0.204657470469632,0.204679500913316,0.204644040190352,0.204684091902311,0.204644350950587,0.202125167095332,0.212896910956162,0.316718687844041,0.321970344826376,0.319707940474361,0.319108129006805,0.319186796564381,0.319163608369003,0.319163159033446,0.319163581967833,0.319163481176618,0.319163538612344,0.319163572141382,0.319163578073217,0.319163580389143,0.319163581393998,0.319163540705646,0.319163553598602,0.319163567906409,0.319163565500606,0.319163561738406,0.31916356762998,0.319163568276481,0.319163613809938,0.319163739672708,0.319163702122033,0.319168632627944,0.319160068365862,0.319194325382171,0.319611110911455,0.316841855343203,0.336137505339611,0.262007915628176,0.246034543254801,0.24760955531294,0.247290642747259,0.247242276243864,0.247242065213341,0.247238410632397,0.247238093145739,0.247238028373909,0.247238018880119,0.24723803524075,0.24723803821239,0.24723804131945,0.247238035468212,0.247238021698326,0.247238037161501,0.247238037224153,0.247238034594664,0.247238033617381,0.247238038063429,0.247238055685539,0.247238081410168,0.247238543823446,0.247238927780616,0.247240666243398,0.24728129863833,0.247167682916518,0.247898740539798,0.249475894915908,0.244233865686963,0.145306818300716,0.149506349922831,0.148175422341709,0.148239363254465,0.148190049474105,0.148180598759978,0.148178360620449,0.148177533816032,0.148177361488195,0.148177336667292,0.148177340807784,0.14817734916643,0.148177355352919,0.148177358853611,0.14817735536005,0.148177357688393,0.148177358796108,0.148177355982629,0.148177353579905,0.148177350129892,0.148177372183365,0.148177413291521,0.148177455063527,0.148180278191415,0.148173838736893,0.148210942466184,0.148258675063406,0.147989191485132,0.148798677269282,0.152996419579767,0.0979188416536155,0.09674078951868,0.0969069389222292,0.0967961662794846,0.0967861046707067,0.0967781662104488,0.0967757538523208,0.0967751352791877,0.0967749151597522,0.0967748852204138,0.0967748867519969,0.0967748960694465,0.0967749031398942,0.0967749074708955,0.0967749091714922,0.0967749104660384,0.09677490982858,0.0967749065857932,0.0967749029796449,0.096774899295829,0.0967748879090302,0.0967750630065871,0.0967746590722783,0.0967768364047678,0.0967786557526128,0.0967653510894875,0.0968324245852944,0.0969548670752192,0.0963355493096153,0.0962666805089255,0.0560585444801553,0.0563883103825031,0.056259148849783,0.0562565134568049,0.0562404091927559,0.0562374206842545,0.0562354361240622,0.0562349898737089,0.0562348137972994,0.0562347880839945,0.0562347921800027,0.0562348026526873,0.0562348110838231,0.0562348162168187,0.0562348186405798,0.0562348196564554,0.0562348186621505,0.0562348152810513,0.0562348086251325,0.0562348111402875,0.0562347724498958,0.0562348963217464,0.0562349797906801,0.0562344593473485,0.056239582085562,0.0562431484123822,0.0562126243400065,0.0563304439985531,0.0564972081042162,0.0566653535468817,0.0287749829171682,0.0286834787278091,0.0286813868761916,0.0286757200567656,0.028667545887629,0.0286663131797742,0.0286650959155605,0.0286648313271122,0.0286647231632349,0.0286647063589049,0.0286647106978406,0.0286647188627392,0.0286647254195838,0.0286647296201056,0.0286647316992328,0.0286647323565865,0.0286647313283324,0.0286647291645053,0.0286647222375634,0.0286647231378582,0.0286647155195321,0.0286646783525284,0.0286649908409461,0.0286649426956661,0.0286636254864152,0.0286736885249471,0.0286704857959453,0.0286444188929228,0.0286190215045225,0.0286361568702828,0.0108452323084952,0.0109875636852853,0.0109116847835601,0.0109298323094961,0.0109225175475319,0.0109225540445386,0.0109219690516823,0.0109218280689894,0.0109217750880407,0.0109217638783805,0.010921764138943,0.0109217676232036,0.0109217703445557,0.0109217722722139,0.0109217732302034,0.0109217735700924,0.0109217729615735,0.0109217721237723,0.0109217696782411,0.0109217646538116,0.0109217791405739,0.0109217586167637,0.0109217169347609,0.0109224163264209,0.0109216000335318,0.0109214149609937,0.010928995945713,0.0109425916266345,0.0109464463905212,0.0110272544837326,0.00125968455125094,0.0015713237234856,0.00150235442820334,0.0015135155067533,0.00151102417336938,0.0015108048032431,0.00151063066710962,0.00151056949217517,0.00151053956783449,0.00151053573482396,0.00151053261746816,0.00151053372583109,0.00151053419710274,0.00151053477359366,0.00151053504688745,0.00151053526132309,0.00151053523353847,0.00151053498204287,0.00151053584706313,0.00151053390076759,0.00151053336402637,0.00151057434378424,0.00151048717568166,0.00151058262254972,0.00151113403021512,0.00151079379985782,0.00150806893787933,0.00151453933577543,0.00145981523275151,0.00177063793937868,-0.00622345239473432,-0.00606968667915272,-0.00609417269014801,-0.00609253399686495,-0.00609322258607485,-0.00609343938498588,-0.00609371152980495,-0.00609375613896269,-0.0060938260015294,-0.00609383893323216,-0.00609385350653427,-0.00609385829352278,-0.00609386148201293,-0.00609386264928252,-0.0060938633594774,-0.00609386341210402,-0.00609386296126595,-0.00609386212185639,-0.00609386006106472,-0.00609385406844896,-0.00609385394190123,-0.00609382760818353,-0.00609377594096677,-0.00609379462160343,-0.00609375804487756,-0.0060924838827944,-0.0060952508323051,-0.00607496815442421,-0.00614840757853638,-0.00595851814201628,-0.0193485009685285,-0.0193050600349498,-0.0193080757396782,-0.019307644650382,-0.0193096197597219,-0.0193094011268469,-0.0193100117697221,-0.0193100547410917,-0.0193102034020331,-0.0193102437500425,-0.0193102780850377,-0.0193102916159381,-0.0193103015888937,-0.0193103056362319,-0.0193103077076567,-0.0193103080571326,-0.0193103067444276,-0.0193103033264747,-0.0193102972525841,-0.0193102838222653,-0.0193102608199577,-0.0193102257713164,-0.0193101474454674,-0.0193099433584519,-0.0193100342557446,-0.019308499096571,-0.0193131297758872,-0.019297197008932,-0.0193285763436773,-0.0192645123597399,-0.0419730110957725,-0.0419668173739303,-0.0419841448386322,-0.0419749289543058,-0.0419800777862425,-0.0419788463864955,-0.0419798867564159,-0.0419798679874673,-0.041980060609327,-0.0419801035455069,-0.0419801606522558,-0.0419801774668492,-0.0419801911142465,-0.0419801981117404,-0.041980200776313,-0.0419802013381524,-0.041980199336574,-0.0419801941347283,-0.0419801841634177,-0.0419801661281563,-0.0419801323432941,-0.0419800699792737,-0.0419799931644969,-0.0419797268431648,-0.0419797588439348,-0.0419781776691178,-0.0419800223933036,-0.0419753551628126,-0.0419785203779521,-0.0419797939728127,-0.0755213189830487,-0.075373366979425,-0.0754376075249104,-0.0754135470951929,-0.0754232701517218,-0.0754202284729546,-0.0754215749919927,-0.0754213966747346,-0.0754216937823125,-0.0754216804868169,-0.0754217373965757,-0.0754217628220848,-0.0754217708181148,-0.0754217794969658,-0.0754217819747919,-0.0754217825290391,-0.0754217806163026,-0.0754217756363051,-0.0754217658534565,-0.0754217480817748,-0.0754217188488732,-0.0754216580689727,-0.0754215905642382,-0.0754213697183177,-0.0754213350600134,-0.0754206932529806,-0.0754204868967849,-0.0754192786282743,-0.0754291084828565,-0.0753167008608806,-0.122430864359252,-0.122087478349168,-0.12221445033113,-0.122168360099135,-0.122185243641634,-0.122180392964841,-0.122182643086707,-0.122181790582381,-0.122182149781692,-0.122182215813346,-0.12218218951416,-0.122182235402135,-0.122182236440789,-0.122182243060173,-0.122182245599564,-0.122182245949605,-0.122182244675288,-0.122182241068602,-0.122182234117783,-0.12218222078163,-0.122182200164532,-0.122182157172933,-0.122182107486865,-0.122181980495438,-0.122181845932178,-0.122181574091569,-0.122182101506094,-0.122174180963706,-0.122226470576517,-0.121930223206903,-0.190379097348596,-0.189739889122347,-0.189969505549078,-0.189890779491351,-0.18991621474663,-0.189905513201565,-0.189909493541335,-0.18990941907286,-0.189908812938515,-0.189909243268829,-0.189909131906275,-0.189909166141723,-0.189909173114094,-0.18990917444782,-0.189909176908837,-0.189909177227669,-0.189909176659178,-0.189909174685295,-0.18990917077819,-0.189909162896073,-0.189909150451896,-0.18990912565991,-0.189909090689206,-0.189909026695964,-0.189909001072077,-0.189908321870546,-0.189911864070139,-0.189890442840089,-0.190001442144799,-0.18943737361101,-0.294958812360265,-0.293852541417536,-0.29421969233554,-0.294101130539224,-0.294146568602789,-0.294140298469337,-0.29413340418625,-0.294138795316901,-0.294136868391228,-0.294137270525551,-0.29413728036882,-0.294137255347623,-0.29413727033196,-0.294137269294514,-0.294137270426238,-0.294137271093271,-0.294137271413347,-0.294137271369605,-0.294137270636812,-0.294137268182859,-0.294137263346951,-0.294137253148176,-0.294137239690782,-0.294137175384565,-0.294137378008381,-0.294135869567145,-0.294143610394885,-0.294103322838055,-0.294305229961749,-0.29331480737649,-0.463491915416463,-0.461910242894342,-0.462363670874051,-0.462263312865247,-0.462202170927205,-0.462270004923473,-0.462241196235568,-0.462247640801907,-0.462247453128098,-0.462247017131104,-0.462247204248107,-0.462247161479576,-0.462247163662392,-0.462247164168118,-0.462247163546551,-0.462247164670812,-0.462247166698296,-0.462247169722796,-0.462247173641111,-0.462247178044827,-0.462247182659281,-0.462247183704422,-0.462247202717029,-0.462247089015591,-0.462247689478649,-0.462244536219126,-0.462259926883559,-0.46218596623055,-0.462531338683088,-0.461002143768145,-0.735959929453612,-0.73516097296322,-0.734673049175615,-0.73544428731994,-0.735033589721016,-0.735140674153335,-0.735133857927338,-0.735127647929179,-0.735130544350068,-0.735129853739721,-0.73512989367019,-0.735129901092834,-0.735129881230262,-0.735129877722374,-0.735129875758641,-0.735129877771279,-0.735129883963579,-0.735129894201365,-0.735129908661916,-0.735129927150697,-0.735129951422346,-0.735129969375944,-0.73513004533359,-0.735129856207181,-0.73513089578924,-0.735126329683263,-0.735147885198473,-0.735047311173412,-0.735466915762229,-0.734300268559272,-1.13667800388258,-1.1446072156161,-1.13928003916918,-1.14103962188343,-1.14085885369672,-1.14077521533045,-1.14082084637195,-1.14080975782568,-1.14081064122064,-1.14081090404015,-1.14081067905715,-1.14081067168351,-1.14081063871016,-1.1408106182264,-1.14081061201048,-1.14081061667707,-1.1408106334785,-1.14081066245675,-1.14081070426325,-1.14081075861363,-1.14081083066583,-1.14081090023496,-1.14081105720295,-1.14081087972729,-1.14081257917832,-1.140803861994,-1.14084729249239,-1.14069493305715,-1.14078071514665,-1.14494510659046,-1.5483055619543,-1.57469830377106,-1.57029562157671,-1.56928683031522,-1.57000629736878,-1.569821900543,-1.56983872801468,-1.5698438508121,-1.56984085131493,-1.56984126143916,-1.56984108271759,-1.56984094280916,-1.56984087358996,-1.56984082095942,-1.56984080172577,-1.569840811951,-1.569840852185,-1.56984092321459,-1.56984102659804,-1.56984116290257,-1.56984133962307,-1.56984152901988,-1.56984191903391,-1.56984136398947,-1.56984575247845,-1.56983319980441,-1.56982681137587,-1.57030033950332,-1.5660477687635,-1.59138132591941,-1.55272253875666,-1.54598591490495,-1.55731968233554,-1.55413944554627,-1.55445643684564,-1.55454353290165,-1.55449649651585,-1.55450589530037,-1.55450500979251,-1.55450424343856,-1.55450416597943,-1.55450392090884,-1.55450378162057,-1.55450369229017,-1.5545036553638,-1.5545036714748,-1.55450374019551,-1.55450386305744,-1.55450404278351,-1.55450428036708,-1.55450459654848,-1.55450489494605,-1.55450566130735,-1.55450539951778,-1.55450330766512,-1.55455204790783,-1.55419349657294,-1.55603966844924,-1.5496536275671,-1.55629469165616,-0.830302285857328,-0.77135615189598,-0.777623063170256,-0.779069698052385,-0.778272321043255,-0.778438142293991,-0.778430134978397,-0.7784223662855,-0.778425022714474,-0.77842408267293,-0.778423925341479,-0.778423759310732,-0.778423628791938,-0.778423555093134,-0.778423524964581,-0.778423541072157,-0.778423603074589,-0.778423712177201,-0.778423872140286,-0.778424078060806,-0.778424370385864,-0.778424666787581,-0.778424720768061,-0.778429325833453,-0.778403239217033,-0.778523179520202,-0.778199119295613,-0.777975484790873,-0.786950862189351,-0.726554806103723,-0.0569850172559732,-0.0828864126025,-0.0687235365270066,-0.0715934508033815,-0.0714844888590277,-0.0713576955516689,-0.0714067685569289,-0.0713966185117085,-0.0713974348714127,-0.0713975474721398,-0.0713973860496352,-0.0713973773124507,-0.0713973422807103,-0.0713973266879629,-0.0713973207415583,-0.0713973256811458,-0.0713973416880214,-0.0713973684287557,-0.0713974091235686,-0.0713974603487826,-0.0713974925794704,-0.071397901339794,-0.0713961258546559,-0.0714037913847929,-0.0713873331125269,-0.0713505675606159,-0.0719543690876171,-0.0685868435296034,-0.0784708065079371,-0.08581273989032,0.0403788059804111,-0.00943482210055262,-0.00810982624619578,-0.00583413663497052,-0.00664877428298781,-0.00649435037449962,-0.00650498599703482,-0.00650882912877348,-0.00650709760687841,-0.00650755916051861,-0.00650748170884616,-0.00650750608348828,-0.00650751070551741,-0.00650751301218782,-0.00650751233564183,-0.00650750777959005,-0.00650749985777103,-0.00650748827835931,-0.00650747025770793,-0.00650747706003777,-0.0065073294935027,-0.00650778923210678,-0.00650694337193705,-0.00650359668196566,-0.00654348978411918,-0.00634401759991811,-0.00687611196260319,-0.00731310093685562,0.00497872512366209,-0.0533957593446809,0.313373847467255,0.35540521875427,0.341686739485591,0.344017534441164,0.343919116737491,0.34384434915012,0.343873944249517,0.343867880040829,0.343868951690932,0.343868680610468,0.343868591429409,0.343868501147919,0.343868426453032,0.343868381533292,0.343868361153042,0.343868367119365,0.343868399412013,0.343868455446495,0.343868545834092,0.343868615647214,0.343868759839724,0.343869090892039,0.343866413836831,0.343878154544547,0.343846883114119,0.343814348877012,0.344502491516556,0.34117712046729,0.346771732611859,0.374307780013277,1.19885191693839,1.23342052668137,1.2333209068004,1.23188530448136,1.23236679429382,1.23228164173499,1.2322944612948,1.23229287534772,1.23229294477825,1.2322927532515,1.23229247696261,1.23229230342881,1.23229215831803,1.2322920723241,1.2322920391223,1.2322920588538,1.23229213311273,1.23229225872369,1.23229243958207,1.23229268109628,1.23229274838821,1.23229368058777,1.23229185256849,1.23228908752928,1.23232730036745,1.23212959390859,1.23246678787426,1.23385085717559,1.22066150859565,1.2655712723178,1.67601490250747,1.64780333416099,1.65521733463246,1.65403077004645,1.6541516639957,1.65414687564279,1.65415111682971,1.65415170623639,1.65415099885204,1.65415105768998,1.65415080644591,1.65415066638106,1.6541505555632,1.65415048791467,1.65415046234009,1.65415047672836,1.65415053358044,1.65415063484571,1.65415076608659,1.65415099581562,1.65415110084973,1.65415116235153,1.65415360773607,1.65414172444451,1.65416046433469,1.65422827950925,1.65344472139093,1.65625507824375,1.65282676571234,1.63184827305938,1.3792575380659,1.36587137752944,1.36667720113232,1.36681822674323,1.36686729921053,1.3668683100134,1.36686228920672,1.36686631904345,1.36686539700318,1.36686547805169,1.36686538743953,1.36686531462146,1.36686526475601,1.36686523374742,1.36686522260368,1.36686522717798,1.3668652514108,1.36686530054323,1.36686536098264,1.36686544165986,1.36686569324037,1.366865123618,1.36686641079682,1.36686998550303,1.36682311040281,1.36699166031482,1.36668627348867,1.36564808063,1.37289173046086,1.35357914077952,0.918195986414935,0.921807045161264,0.922632295781938,0.922511751719633,0.922461448212226,0.922529425290209,0.922518275706384,0.922521127450967,0.922521271709576,0.922521234248199,0.922521235694928,0.922521210844248,0.922521193285355,0.922521184331562,0.92252118542438,0.92252118339574,0.922521190900452,0.922521208017847,0.922521241165835,0.922521232572392,0.922521363553549,0.922521595705078,0.92251898891414,0.922529679239908,0.922504970594356,0.922464026974051,0.92282278230163,0.921424799029679,0.922229069984282,0.92452800827502,0.571969323617885,0.567104085976486,0.566810098959744,0.567967072951313,0.567775882301183,0.567809893900448,0.567813043946419,0.567812523823363,0.567812983418115,0.567812995673088,0.567813005713571,0.567813004956641,0.567813001820627,0.567813001588462,0.567813019806035,0.567813011723721,0.567813010275706,0.567813012995618,0.567813030478931,0.567813044558685,0.567812902390226,0.567813743330224,0.567811569234563,0.567812117961964,0.567832578742993,0.56772406643969,0.567958079814437,0.567231278800826,0.569622750413635,0.551633318696484,0.388731823602473,0.416197730991131,0.412694305279148,0.412953446131054,0.413020196074434,0.413001940007976,0.41300648892145,0.413006411014539,0.41300648568133,0.413006530818393,0.413006532467928,0.41300653609895,0.413006536721048,0.413006549870188,0.413006570481457,0.413006543275442,0.413006547185039,0.41300655480747,0.413006536052316,0.413006635467719,0.413006421860484,0.41300645198978,0.413009628889698,0.412995150832429,0.413038845488988,0.412966200193995,0.413056676035956,0.412911936800179,0.408025932698533,0.430877987930892,0.476636564530765,0.48684039130674,0.483755286914782,0.482750946158668,0.482876836490689,0.482844934053381,0.482843444886526,0.482844250502948,0.482844099521228,0.482844184659809,0.482844236078083,0.482844244990054,0.482844248524112,0.482844250151505,0.482844189669653,0.482844208202223,0.482844229872165,0.482844226350607,0.4828442208534,0.482844229777916,0.482844231517795,0.48284429565264,0.482844495762078,0.482844464854146,0.482851300805388,0.482842056008176,0.482878152556315,0.483527189768268,0.479465835716121,0.507404523976036,0.396196015693379,0.372561546598859,0.374629433103773,0.374225350944291,0.374139828622573,0.374140419769103,0.37413510527422,0.374134561887099,0.374134482068933,0.374134467178795,0.374134491859263,0.374134496577817,0.374134501145699,0.37413449230423,0.37413447135744,0.374134494393769,0.374134494844216,0.374134490795539,0.374134489483553,0.374134495941586,0.374134522618082,0.374134566375101,0.374135216079524,0.374136007383516,0.374138001377838,0.374198749983686,0.37403732260498,0.375095627802053,0.377390012466252,0.369228728320303,0.220190947794576,0.226379921255293,0.224450886112531,0.224516328208217,0.22444803547342,0.224432667513519,0.224429394704684,0.224428147211425,0.224427885803009,0.224427849837361,0.224427856006266,0.224427868542714,0.224427877790216,0.224427882793579,0.224427877485296,0.224427881127294,0.224427882739865,0.224427878523366,0.22442787488783,0.22442787024658,0.224427900478481,0.224427975519144,0.224428017683697,0.224432209725997,0.224423265989898,0.224477629001739,0.224546964617205,0.224187232478482,0.225612182126758,0.231828301254587,0.148505256851692,0.14672366022453,0.146954340506466,0.146792867424241,0.146775538925032,0.146763774228545,0.146760071544612,0.146759140862652,0.146758806886925,0.146758762260787,0.146758764534881,0.146758778585733,0.146758789255625,0.146758795755871,0.146758798200402,0.146758800153772,0.14675879921432,0.146758794379662,0.146758788751764,0.146758783945575,0.146758766093567,0.14675902403723,0.146758462447192,0.146761651833343,0.146764124948554,0.146746732930308,0.146846856273542,0.146974664118341,0.146031144212823,0.146012057128149,0.0851857708237179,0.0856994225623499,0.0855057115156196,0.0854980442874807,0.0854743360905079,0.0854695843846265,0.0854665590140645,0.0854658840357987,0.0854656148224037,0.0854655761710489,0.0854655826171169,0.0854655985765236,0.0854656114153815,0.0854656192338424,0.0854656229205004,0.0854656244496797,0.0854656229131332,0.0854656178066746,0.0854656076604653,0.085465610813192,0.085465555252562,0.0854657364308963,0.0854658448133726,0.0854652393786367,0.0854726902536173,0.0854761173707777,0.0854409852627277,0.0856342739706954,0.0858701751378814,0.0861302066062186,0.0436781609806133,0.0435072770704743,0.0435130097283671,0.0435033726505968,0.0434903945108624,0.0434886389087049,0.0434867281694274,0.043486324250229,0.0434861603817686,0.0434861352699504,0.0434861429138364,0.0434861559771697,0.0434861663652899,0.043486172989681,0.0434861762684325,0.0434861772983704,0.0434861756856588,0.043486172210983,0.0434861616297601,0.0434861621324573,0.0434861487917317,0.0434861033665055,0.0434865484060409,0.0434864138641375,0.0434851263940734,0.0434993208363769,0.0434898901674847,0.0434517647661487,0.0434188516514042,0.0434230145905833,0.0161798305315218,0.0163763296661002,0.016255359682136,0.0162855619792103,0.0162738415973196,0.0162739047965368,0.0162730265457177,0.0162728013551848,0.0162727224828161,0.0162727055274614,0.0162727063263411,0.0162727119477042,0.0162727162883856,0.0162727193361851,0.0162727208440998,0.0162727213548896,0.0162727203887922,0.0162727189696283,0.0162727149717845,0.0162727077505436,0.0162727270756808,0.016272694237323,0.0162726693116219,0.0162736100386257,0.0162723333596425,0.0162730252431307,0.0162853698737043,0.0163034806554629,0.0163186055894571,0.0164102474734807,0.00182175347770041,0.00234638589722696,0.00223203650985941,0.00224945059092686,0.00224602449567127,0.00224556647730688,0.00224533507447138,0.00224524164780067,0.00224519749105607,0.0022451926703721,0.00224518830633137,0.00224519020206789,0.00224519103555603,0.00224519197562742,0.00224519242535632,0.00224519276707987,0.00224519272938317,0.00224519239612093,0.0022451935404886,0.00224519061214842,0.00224519168229311,0.00224524456852462,0.00224512229220861,0.00224531277337422,0.00224603147739352,0.00224513496746554,0.00224159881111045,0.00225021196939567,0.00216478912112831,0.0026824390795238,-0.00901841609833917,-0.00878270660127386,-0.00881317794798044,-0.00881295372003903,-0.00881359457901009,-0.0088139695250431,-0.0088143941632573,-0.00881446236841106,-0.00881457148413187,-0.00881459240132307,-0.00881461517366803,-0.00881462281919218,-0.00881462787998702,-0.0088146297641598,-0.00881463089371811,-0.00881463098876786,-0.00881463029904943,-0.00881462895961316,-0.00881462562080058,-0.00881461691083549,-0.00881461504484805,-0.00881457332477766,-0.00881450444474171,-0.00881453098774486,-0.00881437745290404,-0.00881247968632819,-0.00881688577557311,-0.00878368204636022,-0.00890638594791766,-0.00860198740808698,-0.0289800364391521,-0.0289510254003665,-0.0289497668577,-0.028949434515196,-0.0289526039483445,-0.0289522446018441,-0.0289531982943905,-0.0289532723607865,-0.0289535028243351,-0.0289535675165181,-0.0289536216223613,-0.028953643204161,-0.0289536589002004,-0.0289536653801864,-0.0289536686603664,-0.0289536692149486,-0.0289536671296784,-0.0289536617463384,-0.0289536519602753,-0.0289536307939775,-0.0289535949677756,-0.0289535377792231,-0.0289534100571614,-0.0289531062718967,-0.0289532567073224,-0.0289507574820271,-0.0289583882408159,-0.0289329549833188,-0.0289764002926534,-0.0289153915712408,-0.063639172567682,-0.0636292529862084,-0.0636585648096099,-0.0636437683857123,-0.0636517103268649,-0.0636498343055709,-0.0636514083178629,-0.0636513869525002,-0.0636516814867503,-0.0636517474048089,-0.0636518345669995,-0.0636518608222165,-0.0636518816639472,-0.063651892446194,-0.0636518965548633,-0.063651897411016,-0.0636518943159201,-0.063651886309547,-0.0636518709679722,-0.0636518430624406,-0.0636517910822654,-0.0636516963581498,-0.0636515777758773,-0.0636511582464768,-0.0636512406645107,-0.0636487612205431,-0.0636513768435327,-0.063646395658955,-0.0636438365336947,-0.0636530544016072,-0.114500362185864,-0.114263393166007,-0.114362125894187,-0.11432565328507,-0.114340329339304,-0.114335764242901,-0.114337790264785,-0.114337512465699,-0.114337960837465,-0.114337943165175,-0.114338027341816,-0.11433806613184,-0.114338078164862,-0.114338091226585,-0.114338094988202,-0.114338095830705,-0.11433809296295,-0.114338085471711,-0.114338070782828,-0.114338044122113,-0.114338000133302,-0.114337908208975,-0.114337810595109,-0.114337474175022,-0.114337417662944,-0.114336571615229,-0.114335782230074,-0.114334722177416,-0.114351585236721,-0.114167541169577,-0.185342276787949,-0.184825082795318,-0.185016481145282,-0.184946980961093,-0.184972323250829,-0.18496497711355,-0.184968392727195,-0.184967127187666,-0.184967647247274,-0.184967753597796,-0.184967712851164,-0.184967781478797,-0.184967783220651,-0.184967793085521,-0.184967796907688,-0.184967797435658,-0.184967795531904,-0.184967790132413,-0.184967779715207,-0.184967759713532,-0.184967729062277,-0.184967664121413,-0.184967589273112,-0.184967405538573,-0.184967173488238,-0.184966829533896,-0.184967696354053,-0.184954882974101,-0.185036233109949,-0.184588234796142,-0.287994116919485,-0.287028524577053,-0.28737454744741,-0.287256349935615,-0.287294830132203,-0.287278794022016,-0.287284557880901,-0.287284555189553,-0.287283622106617,-0.287284265964102,-0.287284101598492,-0.287284151902189,-0.287284162517424,-0.287284164494382,-0.287284168173494,-0.287284168659902,-0.287284167822529,-0.287284164890196,-0.287284159087368,-0.287284147293751,-0.287284128742217,-0.287284092193496,-0.287284038128228,-0.287283947492177,-0.287283910196165,-0.287282839329089,-0.287288369481139,-0.28725578509178,-0.287423147920784,-0.286571410804823,-0.445984322141029,-0.444322416147304,-0.444872349701989,-0.444694352784537,-0.444760827689594,-0.444752903120921,-0.444742133239278,-0.444750224894733,-0.444747373631397,-0.444747960807234,-0.444747978571611,-0.444747940831765,-0.44474796311852,-0.444747961579275,-0.44474796325915,-0.444747964271126,-0.44474796478393,-0.444747964770765,-0.444747963754524,-0.444747960213007,-0.444747952972127,-0.444747938211969,-0.444747918109573,-0.444747818790008,-0.444748140354314,-0.444745827522041,-0.444757566016867,-0.444696677814766,-0.445001626778309,-0.443510232206764,-0.70041453854072,-0.698060428604131,-0.698728085019785,-0.69859320354462,-0.698494247099396,-0.698596649646145,-0.698553960847409,-0.6985633728808,-0.698563144481945,-0.698562487877909,-0.698562766021112,-0.698562702514638,-0.698562705529073,-0.698562706215829,-0.69856270526351,-0.698562706974516,-0.698562710089135,-0.698562714752376,-0.698562720799434,-0.698562727667567,-0.698562734880216,-0.698562736610693,-0.698562766879242,-0.698562592759564,-0.698563502201466,-0.6985587639169,-0.698581848183019,-0.698471034022397,-0.69898743145584,-0.696710480641565,-1.11084896724831,-1.10978622876225,-1.108960446171,-1.11013882326197,-1.10952860240091,-1.10968515159688,-1.10967587758798,-1.10966651265257,-1.10967081712734,-1.10966979488461,-1.10966985190137,-1.10966986254067,-1.10966983250674,-1.10966982703784,-1.10966982401352,-1.10966982708832,-1.10966983655356,-1.1096698522192,-1.10966987435133,-1.10966990265586,-1.10966993988013,-1.10966996747807,-1.10967008267489,-1.10966980130947,-1.10967135899086,-1.10966448728536,-1.10969707430554,-1.10954523836634,-1.11017229622751,-1.10849137135071,-1.71126017393339,-1.72354295537921,-1.71556621347924,-1.71814208902509,-1.71788861328833,-1.71776197384935,-1.71782974121808,-1.7178133636989,-1.71781464737827,-1.71781503856134,-1.71781470161462,-1.71781468919368,-1.71781463888261,-1.71781460773105,-1.71781459821326,-1.7178146053128,-1.71781463090188,-1.71781467504884,-1.71781473875052,-1.71781482157746,-1.71781493131571,-1.71781503770681,-1.71781527627141,-1.71781500423567,-1.71781760693883,-1.71780438945286,-1.71786904440739,-1.71765048956423,-1.71770002933112,-1.72437190185967,-2.32021413292242,-2.35911251430298,-2.3528619739722,-2.35131721824462,-2.35238482444278,-2.35211300867566,-2.35213753839036,-2.35214518343544,-2.35214072078222,-2.35214132677769,-2.35214105563982,-2.35214084504601,-2.35214073991234,-2.35214066024113,-2.35214063105923,-2.35214064643069,-2.35214070719761,-2.35214081454474,-2.35214097082784,-2.35214117690876,-2.35214144421512,-2.35214172996091,-2.35214232193898,-2.35214149127863,-2.35214795731645,-2.35213033764715,-2.35211340394971,-2.35285411834594,-2.34641768989335,-2.38407513252553,-2.31272015521816,-2.30146623594867,-2.31826671437621,-2.31358983987209,-2.31405166671273,-2.31418142240414,-2.31411167418709,-2.31412563217275,-2.31412429230641,-2.31412315786145,-2.31412303916674,-2.31412267237674,-2.31412246412608,-2.31412233038695,-2.3141222751266,-2.3141222992334,-2.31412240206611,-2.31412258591866,-2.31412285488631,-2.31412321034618,-2.31412368377517,-2.31412413080493,-2.31412526566122,-2.31412497016465,-2.31412134836483,-2.31419582582071,-2.31365965189461,-2.31637883036075,-2.30716162690014,-2.31553925515493,-1.22993135467045,-1.14372985515261,-1.15284714161462,-1.15499629134658,-1.15381722445268,-1.1540630899946,-1.15405090296255,-1.15403949056796,-1.15404341621,-1.15404201343864,-1.1540417832819,-1.15404153539332,-1.15404134130943,-1.15404123177105,-1.15404118696586,-1.1540412109541,-1.15404130320826,-1.15404146551298,-1.15404170350332,-1.15404200987169,-1.15404244389652,-1.1540428915968,-1.15404293853664,-1.15404989553809,-1.15401104783591,-1.15418743140543,-1.15372057846225,-1.15332999748907,-1.16671155979544,-1.07816597960579,-0.0852225513679682,-0.123311770379567,-0.102438642817945,-0.106683454513819,-0.1065163520277,-0.106330335254271,-0.10640284101802,-0.10638770988883,-0.106388982631763,-0.106389132929078,-0.106388894076144,-0.106388882024577,-0.106388829654997,-0.106388806562127,-0.106388797770446,-0.106388805146183,-0.106388828982514,-0.106388868778551,-0.106388929247072,-0.106389005922593,-0.106389051719705,-0.106389665616747,-0.106387027116438,-0.106398292870135,-0.106374684130569,-0.106317021856014,-0.107216842855494,-0.102252656095754,-0.116709234906636,-0.127559682740858,0.0601902137190032,-0.0135158709926741,-0.0114424637666685,-0.00811151497753533,-0.00931463342430189,-0.00908463116037689,-0.00910126503691373,-0.00910668060327359,-0.00910413776533445,-0.00910483693027517,-0.00910471594420013,-0.00910475321232434,-0.00910476029816211,-0.00910476370405824,-0.00910476276057276,-0.00910475599553825,-0.00910474419087123,-0.00910472695680008,-0.00910469994258011,-0.00910471028641005,-0.00910449103667643,-0.00910516574796762,-0.00910395940127079,-0.00909881291753422,-0.00915827019895188,-0.00886358907348478,-0.00964376308791592,-0.0103064551235099,0.00781397213749912,-0.0784026357050688,0.464543373531889,0.526109669878017,0.505876454417933,0.509355110448279,0.509196645312467,0.509089952716979,0.509133209503952,0.509124041160129,0.509125736985944,0.509125316653446,0.509125183058684,0.509125050521277,0.509124939272915,0.509124872570911,0.509124842300642,0.509124851114631,0.509124899030216,0.50912498215265,0.509125116260253,0.50912522025562,0.509125430927266,0.509125932523177,0.509121939737483,0.50913930631735,0.509093343063952,0.509044074767392,0.510062010022002,0.50514870927979,0.513500156027648,0.553624372916783,1.78008915482621,1.83161264411004,1.83121906064954,1.82914402748474,1.82984796153178,1.82972047757859,1.82974110406727,1.82973841143856,1.82973850947565,1.82973824506624,1.82973782972654,1.82973757083002,1.82973735491243,1.82973722659005,1.82973717707168,1.82973720643294,1.82973731706643,1.82973750427461,1.82973777348735,1.82973813366266,1.82973823277452,1.82973961335758,1.82973691712889,1.82973273319299,1.829789369645,1.8294964202224,1.82999971317362,1.83200986556699,1.81261287974955,1.87914334564901,2.50199880040765,2.46126836294111,2.47219301477833,2.47042910210039,2.47062670080546,2.47061330623102,2.47061986088693,2.47062101215624,2.47061990458221,2.47061998499542,2.47061961361044,2.47061940184343,2.47061923526826,2.47061913365602,2.47061909522755,2.47061911694788,2.4706192025096,2.47061935490999,2.47061955239117,2.47061989658025,2.47062005663079,2.47062014396986,2.47062377327836,2.4706060971791,2.47063408327098,2.4707322999106,2.46957773780645,2.47375063194464,2.4684513008272,2.43859257270568,2.07347381582808,2.05299218390805,2.0543255567866,2.05445122933713,2.05453666821675,2.05454167345954,2.05453193946061,2.05453787330482,2.05453656727738,2.05453667489944,2.05453653583973,2.05453642673438,2.05453635053322,2.05453630349354,2.05453628654586,2.05453629364239,2.05453633058357,2.05453640517906,2.05453649730246,2.05453661970221,2.05453699729958,2.05453615152583,2.0545380755288,2.05454325248656,2.0544739412406,2.05472440401045,2.05425821095912,2.05277995105134,2.06339370921485,2.03425221722804,1.38532426833601,1.39042104013392,1.39188384146702,1.39171741855949,1.39162934827671,1.39172932961063,1.39171365740252,1.39171782199797,1.39171799224956,1.3917179600296,1.39171795529238,1.3917179182364,1.39171789133404,1.39171787757519,1.39171787890855,1.39171787576563,1.39171788724966,1.39171791344912,1.39171796375647,1.3917179521519,1.39171814901636,1.39171848908091,1.39171463407865,1.39173050123726,1.39169320860651,1.39163496356897,1.39216094618669,1.39006421169901,1.39142005997866,1.39459557363169,0.864991154415556,0.8571424831835,0.856640550374946,0.858352095870315,0.858082872206007,0.85813390486453,0.858137657513388,0.85813730252077,0.858137914702515,0.858137942854466,0.858137958379207,0.858137956546841,0.858137951774759,0.858137951243967,0.858137978516036,0.858137966760338,0.858137964572118,0.858137968861449,0.858137995301177,0.858138016169791,0.858137807570666,0.858139054999891,0.858135798592283,0.85813679022265,0.858166414504346,0.858006280213525,0.858351965786326,0.857274885568936,0.860754755604953,0.833874503798842,0.588927402078951,0.629096794992398,0.624115387219669,0.62454122551596,0.624617774625201,0.62459709186671,0.624602982228351,0.624602923918585,0.624603059700137,0.624603119738576,0.624603123783065,0.624603128923202,0.624603129885798,0.6246031499882,0.624603181703638,0.624603141162377,0.624603146460885,0.624603158093799,0.624603130555376,0.624603278952619,0.624602958277118,0.62460302740124,0.624607657384471,0.624586303102011,0.624651406955598,0.624539881383724,0.624689509701611,0.624389883500441,0.617240064582859,0.65314016760927,0.637730204513013,0.653841167496072,0.650083162452789,0.648639283943424,0.648813658669032,0.64877418750217,0.648771490745744,0.648772719964258,0.648772520859439,0.648772634664616,0.648772705336236,0.648772716496603,0.64877272066513,0.648772722987007,0.648772643568903,0.64877266704387,0.648772695864902,0.648772691515102,0.64877268414325,0.648772696020417,0.648772700737059,0.648772781347121,0.648773057546055,0.648773051290475,0.648781566996272,0.64877288932077,0.648805841739783,0.649692252131991,0.644379180251872,0.680566593276526,0.53213558027154,0.500985153589848,0.503433633489969,0.502966505999368,0.502840426155257,0.502842090347353,0.502835112571566,0.502834345439412,0.502834253039196,0.502834232897947,0.502834266243226,0.502834272305296,0.502834278449422,0.502834266621072,0.502834238433409,0.502834268760136,0.502834269819125,0.502834264343326,0.502834262749557,0.502834271321816,0.502834307276935,0.502834370902345,0.502835192737945,0.502836456922046,0.502838550780822,0.502919082117866,0.502713350956761,0.504085170629513,0.507061789651738,0.495826892132637,0.296312357652074,0.304459355398688,0.301943422388132,0.302004017332086,0.301917097566292,0.301895655868558,0.301891358078188,0.301889678704107,0.301889330303815,0.301889282994901,0.301889291308067,0.301889308148747,0.301889320335575,0.301889326657324,0.301889319531584,0.30188932460585,0.301889326674793,0.301889321088114,0.301889316184849,0.301889310393779,0.301889348108697,0.301889461063932,0.301889501675934,0.301895038287502,0.301883854647159,0.30195518316274,0.302045249887524,0.301612088765329,0.303740636235309,0.311950676312509,0.200031039199792,0.197632876857726,0.197923569515161,0.197711556151631,0.197686691423039,0.197670917097042,0.197665930981772,0.19766468153005,0.197664231202507,0.197664172210216,0.197664174993634,0.19766419374986,0.19766420805442,0.197664216703996,0.197664219815365,0.197664222432179,0.197664221204778,0.19766421479445,0.197664207164935,0.197664201469583,0.19766417721503,0.197664516170762,0.197663811580005,0.197667998767715,0.197671031995806,0.197650389396531,0.1977837967466,0.197898449068871,0.196629122503965,0.196681264089916,0.1150280670361,0.115742438419138,0.115479752422311,0.115465395435844,0.11543430709407,0.115427700175553,0.115423592066143,0.115422691506235,0.115422326020256,0.115422274206928,0.115422283020289,0.115422304424677,0.115422321661045,0.115422332166483,0.11542233711013,0.11542233914276,0.115422337055956,0.115422330213777,0.115422316555484,0.115422320204444,0.115422248565752,0.115422486565209,0.115422614369726,0.1154219752201,0.115431714736082,0.115434418786067,0.115397796035704,0.11567010111619,0.115971953602076,0.116337383297747,0.0590510737982238,0.0587927780144003,0.0588164877667066,0.0588012702692543,0.0587830799640168,0.0587808709386713,0.0587782163865736,0.0587776664971991,0.0587774463373206,0.0587774126798582,0.0587774241943549,0.0587774425857387,0.0587774570965686,0.0587774663190069,0.0587774708867461,0.0587774723163087,0.0587774700924751,0.058777465214388,0.0587774508520664,0.0587774506572131,0.0587774308624867,0.058777379620307,0.058777953206336,0.0587777146117995,0.0587766369066136,0.0587947649824401,0.0587782953081761,0.0587296813761493,0.0586853199502428,0.0586825523137021,0.0215606167985136,0.0217656129036397,0.0215945909087665,0.021639536874461,0.0216228264173721,0.0216228999539235,0.0216217339455088,0.0216214140677523,0.0216213094321953,0.0216212867946981,0.0216212884244486,0.021621296490095,0.0216213026488728,0.0216213069360212,0.0216213090481726,0.0216213097311807,0.0216213083579848,0.0216213062414367,0.021621300470495,0.0216212909003523,0.0216213143864414,0.0216212682539036,0.0216212686726594,0.0216224322529225,0.0216206952127558,0.0216224534072574,0.0216395324201344,0.0216614115613327,0.021698039081464,0.0217434334193105,0.00229960253059375,0.00310939856774723,0.00293966234849473,0.00296330197955826,0.00295934909087869,0.0029585464739063,0.00295827741820407,0.00295815388030131,0.00295809616951446,0.00295809139450919,0.00295808618549697,0.00295808912358345,0.00295809045866129,0.002958091840159,0.00295809250543863,0.00295809299118669,0.00295809294253195,0.00295809251916854,0.00295809388678595,0.00295808988420322,0.00295809280972836,0.00295815606700971,0.00295799947997392,0.0029582901903603,0.00295916540684966,0.0029576438723668,0.00295379868604461,0.00296268134897388,0.00284549055708676,0.00363483691775611,-0.0116266447932629,-0.0113285252341675,-0.0113554905434492,-0.0113586511852301,-0.0113590574992898,-0.0113595856027157,-0.0113601834459941,-0.0113602763777436,-0.0113604282410766,-0.0113604586763531,-0.0113604905232736,-0.0113605015036728,-0.0113605087115658,-0.0113605114521819,-0.0113605130685797,-0.0113605132260078,-0.0113605122768475,-0.0113605103690139,-0.0113605055963187,-0.0113604939907176,-0.0113604898241137,-0.0113604318858567,-0.0113603448138555,-0.011360381318922,-0.0113600823196322,-0.0113576396602174,-0.0113637709189622,-0.0113151413953521,-0.0114991808994687,-0.0110823078285401,-0.0387602743191257,-0.0387721337889719,-0.0387656440164803,-0.03876476188316,-0.0387693956748954,-0.0387688649628446,-0.0387701822852716,-0.0387702941852239,-0.0387706107430568,-0.0387707023032317,-0.03877077773598,-0.0387708081516988,-0.038770830016531,-0.0387708391755072,-0.0387708437672815,-0.0387708445407241,-0.0387708416044278,-0.0387708340629402,-0.0387708201690728,-0.0387707905542185,-0.0387707405766272,-0.038770659144598,-0.0387704762808083,-0.0387700686065508,-0.0387702717370072,-0.038766660920503,-0.0387778630278132,-0.0387421445476217,-0.0387901353986629,-0.0387648654158637,-0.0858773175461265,-0.085847764417207,-0.0858927134265573,-0.0858717714849169,-0.0858825664165664,-0.0858800398423536,-0.0858821485678905,-0.0858821262089431,-0.0858825244869736,-0.0858826135054652,-0.0858827311225868,-0.0858827671571738,-0.0858827952718406,-0.0858828099286056,-0.0858828155126271,-0.0858828166647681,-0.0858828124485148,-0.0858828015729533,-0.0858827807370286,-0.0858827427732289,-0.0858826721729853,-0.0858825447420676,-0.0858823842785344,-0.0858818039639527,-0.08588196908171,-0.0858785361651161,-0.0858816476227989,-0.0858784066618991,-0.0858669036255192,-0.085872779990028,-0.154225489786532,-0.153895590878726,-0.154028922927849,-0.153980025097757,-0.153999678774716,-0.153993585407253,-0.153996294073214,-0.153995910029908,-0.153996510262186,-0.153996489092009,-0.153996599657458,-0.153996652022943,-0.15399666804114,-0.153996685469436,-0.153996690522666,-0.153996691659499,-0.153996687854653,-0.153996677887352,-0.153996658348781,-0.153996622920514,-0.153996564426026,-0.153996441313216,-0.153996316063503,-0.153995861537296,-0.15399577358638,-0.153994836399556,-0.15399316442606,-0.153991983868275,-0.154019513869015,-0.153756915352633,-0.24922274302374,-0.248531236667512,-0.248787707460682,-0.248694550744829,-0.248728376294322,-0.248718492806952,-0.24872309306739,-0.248721422416285,-0.248722092899729,-0.248722243292693,-0.248722187351671,-0.248722278553457,-0.248722281069195,-0.248722294129463,-0.248722299232602,-0.248722299936218,-0.24872229740482,-0.248722290220032,-0.248722276352382,-0.248722249680484,-0.24872220914046,-0.248722122094637,-0.248722021719623,-0.248721787467996,-0.248721437622641,-0.248721030772148,-0.248722444645005,-0.248704028791408,-0.24881508735382,-0.24821511265864,-0.386957621814133,-0.385661564570467,-0.386124830707438,-0.385967092448726,-0.386018782545222,-0.385997437472057,-0.386004869736543,-0.386004996547039,-0.386003724119916,-0.386004580425668,-0.38600436445612,-0.38600443024533,-0.386004444570778,-0.386004447171163,-0.386004452058722,-0.386004452718102,-0.386004451625538,-0.386004447759633,-0.386004440112967,-0.386004424468836,-0.386004399910266,-0.386004352142451,-0.386004277978359,-0.386004162857577,-0.38600412409644,-0.386002610201036,-0.386010224529604,-0.385966446609642,-0.386190564363003,-0.385047562207738,-0.59895569802282,-0.596737296417364,-0.597469589963028,-0.597232200591441,-0.597318726220529,-0.59730994119026,-0.597295074092105,-0.597305866440931,-0.597302111936442,-0.597302875626381,-0.597302902863233,-0.597302852288211,-0.597302881768493,-0.597302879732308,-0.597302881948793,-0.597302883310825,-0.597302884033634,-0.597302884078927,-0.597302882822113,-0.597302878272456,-0.597302868622004,-0.597302849555215,-0.597302823349666,-0.59730268571271,-0.59730313668398,-0.597300005399387,-0.597315776583817,-0.597234024591253,-0.597643146899213,-0.595648249079574,-0.940162300688001,-0.937045942094925,-0.937920218888857,-0.937759471108122,-0.937618924595388,-0.93775619800476,-0.937699914680786,-0.937712159149781,-0.93771191778494,-0.937711039271597,-0.937711407070481,-0.937711323161021,-0.937711326864105,-0.93771132769102,-0.937711326395283,-0.937711328706645,-0.937711332950369,-0.937711339324206,-0.937711347596833,-0.937711357078021,-0.93771136708601,-0.937711369499647,-0.937711412158285,-0.937711176366639,-0.93771239641372,-0.937706071584699,-0.937736859608105,-0.937589240881778,-0.938275830465707,-0.935259843589107,-1.4894851678841,-1.48823606928894,-1.4870221847818,-1.4886183221972,-1.48781183638961,-1.48801568982633,-1.48800445405552,-1.48799190949248,-1.48799760051593,-1.48799625386872,-1.48799632643648,-1.48799634002007,-1.48799629967997,-1.48799629213616,-1.48799628800901,-1.48799629217565,-1.48799630501131,-1.4879963262742,-1.48799635632156,-1.48799639474844,-1.48799644538618,-1.48799648301585,-1.48799663794671,-1.48799626589678,-1.48799834196191,-1.48798914657243,-1.4880329088988,-1.48782933300391,-1.48866195340469,-1.48650835451389,-2.28917303825791,-2.30600963716713,-2.29539544309883,-2.29875386430214,-2.29843688033043,-2.29826665108752,-2.29835619250193,-2.29833466079762,-2.29833632288697,-2.29833684077953,-2.29833639211729,-2.29833637390947,-2.29833630579786,-2.29833626374056,-2.29833625081474,-2.29833626039976,-2.29833629498563,-2.29833635466997,-2.29833644080731,-2.29833655281962,-2.29833670113924,-2.2983368454879,-2.29833716738762,-2.29833679742122,-2.29834033128922,-2.29832255169104,-2.29840807706447,-2.29812908811892,-2.29809896033834,-2.30750336392878,-3.09081906433478,-3.14184043439628,-3.13392511505384,-3.13182858904789,-3.133238162686,-3.13288143989918,-3.13291329807344,-3.13292344472139,-3.13291753823137,-3.13291833525531,-3.1329179701058,-3.13291768842684,-3.13291754669564,-3.13291743960447,-3.13291740029849,-3.132917420834,-3.13291750235264,-3.13291764643902,-3.13291785625619,-3.13291813296858,-3.13291849203136,-3.1329188749819,-3.13291967250986,-3.13291856831751,-3.13292704412365,-3.13290501626618,-3.13287365648964,-3.13389703407076,-3.12525130718035,-3.17502649984715,-3.06394176067861,-3.04759851273851,-3.0697593322132,-3.06363464443764,-3.06423417454379,-3.06440612670311,-3.06431409047007,-3.06433253352944,-3.06433073332293,-3.06432923864572,-3.06432907747735,-3.06432858942794,-3.06432831256743,-3.0643281345662,-3.06432806104332,-3.06432809311152,-3.06432822991922,-3.06432847451944,-3.06432883238528,-3.06432930521869,-3.06432993541726,-3.06433053082439,-3.06433202602442,-3.0643317489617,-3.06432634381559,-3.06442724405641,-3.0637145244592,-3.06727977480541,-3.05542003563097,-3.0647341488638,-1.62135859006155,-1.50904257262744,-1.52086354227134,-1.52370443487864,-1.5221525492141,-1.52247694617663,-1.52246049035541,-1.52244556027844,-1.52245072464029,-1.52244886294593,-1.52244856287503,-1.52244823383654,-1.52244797709495,-1.52244783224518,-1.52244777297685,-1.52244780475402,-1.52244792686112,-1.52244814164935,-1.52244845662417,-1.52244886210461,-1.52244943543393,-1.52245003608387,-1.5224500581837,-1.52245939102452,-1.52240794136572,-1.52263888590857,-1.52203930738921,-1.5214535767647,-1.53919635816027,-1.42355677869629,-0.113267286302753,-0.163159678937087,-0.135768589342059,-0.141356796607647,-0.141129738604308,-0.140886677818349,-0.140982036938522,-0.140961972974744,-0.140963726415003,-0.140963905785006,-0.140963591094581,-0.140963576156173,-0.140963506625543,-0.140963476178028,-0.140963464608778,-0.140963474402787,-0.140963505971393,-0.140963558649248,-0.140963638577003,-0.140963740605078,-0.1409637986199,-0.140964617902616,-0.140961129981808,-0.140975872069155,-0.140945678763355,-0.140865828452981,-0.142058472068662,-0.135543224196716,-0.154380729272675,-0.168665786275522,0.0797783471804476,-0.0172824415818256,-0.0144182725133721,-0.0100748720634683,-0.0116565371563869,-0.0113518263531413,-0.0113748132204138,-0.0113816277144035,-0.0113782979463291,-0.0113792372091098,-0.0113790712470646,-0.0113791214880977,-0.0113791311125402,-0.0113791356107073,-0.0113791344279503,-0.0113791254937471,-0.0113791098503997,-0.0113790870373476,-0.0113790510453054,-0.0113790650042222,-0.0113787752221225,-0.0113796569833834,-0.0113781229795439,-0.0113711116105553,-0.0114499260385625,-0.0110624202606846,-0.0120812806079606,-0.0129735077923837,0.0108114805701186,-0.102540479948292,0.612804365394325,0.693136075762699,0.666569298835469,0.671185839371954,0.670961702996547,0.670825903902902,0.670882274825635,0.670869962971724,0.670872316173361,0.670871744158304,0.670871566004144,0.670871392384115,0.670871245131107,0.670871156980982,0.670871116978811,0.670871128573574,0.670871191836562,0.670871301558692,0.670871478607954,0.670871616411684,0.670871890610027,0.670872565331213,0.670867269176088,0.670890132410651,0.670829973481728,0.670763724330444,0.672104014983794,0.665641850848205,0.676726849973912,0.728829434172277,2.35174033366545,2.42003541435963,2.41922328708028,2.41654999093038,2.41746703626808,2.41729725714478,2.41732633106924,2.41732243248536,2.41732254894269,2.41732221975295,2.41732166652985,2.41732132286803,2.4173210370033,2.41732086674898,2.41732080104575,2.41732083990778,2.4173209865125,2.417321234676,2.4173215911441,2.41732206886299,2.41732219884865,2.4173240184445,2.41732047832496,2.41731485618979,2.41738956009998,2.41700326268515,2.41767126592313,2.42027352480408,2.39487110117744,2.48257839708897,3.32154089242038,3.26911577085456,3.28344582136107,3.28111206511145,3.28139442932047,3.28136975385692,3.28137856687536,3.28138038696367,3.28137887314094,3.28137896957941,3.28137847981983,3.28137819591289,3.28137797331675,3.28137783769215,3.28137778640501,3.28137781552837,3.28137792994537,3.28137813372586,3.28137839775485,3.28137885617443,3.28137907256115,3.28137918311068,3.28138397598399,3.28136058659192,3.28139774732573,3.28152456595094,3.28000984172044,3.28552240491998,3.27827393310475,3.24036336618396,2.77004223968999,2.74227228057454,2.74419934696453,2.74426914054292,2.74439544437339,2.74440622601436,2.7443926039866,2.74440037051185,2.74439870673064,2.74439883827217,2.74439864888531,2.7443985033369,2.7443984001682,2.74439833669834,2.74439831381965,2.74439832353871,2.7443983735149,2.74439847407975,2.74439859867245,2.74439876351698,2.74439926727522,2.74439815014726,2.74440070702404,2.74440739011824,2.74431617452568,2.74464724800829,2.74401638315958,2.74213852471251,2.7559898803115,2.71695315909882,1.85681330414074,1.86322596526624,1.8654260041774,1.86522182695918,1.86509047567933,1.86522131621332,1.86520148219122,1.86520694492095,1.86520712153965,1.8652071009897,1.86520708820991,1.86520703849097,1.86520700218736,1.86520698348223,1.86520698493053,1.86520698067817,1.86520699618206,1.86520703175175,1.86520709952656,1.86520708569342,1.86520734849202,1.8652077920327,1.86520271889866,1.86522367128647,1.86517368623488,1.86509983542075,1.8657862017168,1.86299380175755,1.86497071095842,1.8688835504947,1.16179030283542,1.15070751959666,1.14996980935257,1.15222664306451,1.15188599644158,1.15195443304718,1.15195846418822,1.15195839117961,1.15195914221501,1.15195918751131,1.15195920917495,1.15195920581838,1.15195919928441,1.15195919832745,1.15195923444506,1.15195921925901,1.15195921642983,1.15195922234055,1.15195925795535,1.15195928522929,1.15195901325733,1.15196065962426,1.15195632310729,1.15195785095146,1.15199605367917,1.15178573540671,1.15224069014829,1.15081604065158,1.15534883826805,1.11959672774123,0.792211070269267,0.844668973393221,0.838306285147222,0.838918869755684,0.838997770349641,0.838976398308631,0.83898347125399,0.838983445179373,0.83898364464659,0.838983719863432,0.838983727756165,0.838983732233818,0.838983733769974,0.838983760824045,0.838983803704381,0.838983750559877,0.838983756996617,0.838983772535044,0.838983736782984,0.83898393433929,0.838983507638539,0.838983626582449,0.838989637839749,0.838961595563369,0.839047917253892,0.838895994239088,0.839112020223319,0.838618917621248,0.829275598317962,0.878944539621532,0.799945537591693,0.822645281726023,0.818331089945936,0.816426260216024,0.8166493572031,0.816603095607967,0.816599138669634,0.816600813246838,0.816600567309232,0.816600711536354,0.816600800270974,0.816600814241401,0.816600819450146,0.816600822552808,0.816600724320273,0.816600752249628,0.816600788432037,0.81660078328335,0.816600774077639,0.816600789112593,0.816600795904937,0.816600892942093,0.816601246142511,0.8166012797558,0.816611320152436,0.81660399194778,0.816630771091558,0.817756438617563,0.811220085840133,0.855385999536919,0.669558936768948,0.630997490803614,0.633751133310461,0.633233287512244,0.633064949097086,0.633067843073474,0.633059177809784,0.633058197213739,0.633058092549545,0.633058067394496,0.633058109240627,0.633058117067217,0.633058124621791,0.633058109797954,0.633058074232539,0.633058111747829,0.633058113600896,0.633058106645145,0.633058104807804,0.633058115459006,0.633058160464725,0.633058246018884,0.63305923018849,0.633061004682677,0.633063122375862,0.633163117667109,0.632915423280454,0.63459175449057,0.638223759929585,0.623791362421233,0.373480423500914,0.383570624527425,0.380468484847341,0.380521653358727,0.380415739359722,0.380388216919388,0.380382890444541,0.380380770730625,0.380380337594294,0.38038027895611,0.380380289382871,0.380380310377891,0.380380325509221,0.380380333043153,0.380380324075568,0.380380330602245,0.380380333121886,0.380380326183477,0.380380320037446,0.380380313383216,0.380380358086131,0.380380511035556,0.380380550915523,0.380387414136275,0.380374164209817,0.380462338406773,0.380572617143456,0.38007739148477,0.38297275430319,0.393163530264053,0.252362723463029,0.24933504873787,0.249684722957313,0.249421923829892,0.249389370740857,0.249369408846745,0.249363150666131,0.249361575209853,0.249361006434564,0.249360933162518,0.249360936351985,0.249360959805709,0.24936097772494,0.249360988500384,0.249360992244883,0.249360995539387,0.249360994032989,0.249360986067597,0.249360976393262,0.249360969922792,0.249360939524815,0.249361358413577,0.249360519821429,0.24936570019238,0.249369237510117,0.249345855905926,0.24951283280529,0.249603054897382,0.248008175326382,0.248143030692159,0.145508049268098,0.146433988720796,0.146095448265735,0.146073405010231,0.146035156692058,0.146026611389354,0.146021390827439,0.146020267694218,0.146019803735378,0.146019738473636,0.146019749553079,0.146019776299227,0.146019797882964,0.146019811038458,0.14601981720883,0.146019819730662,0.146019817088601,0.14601980852745,0.146019791396447,0.146019795494105,0.146019708277955,0.146020003181098,0.146020147685997,0.146019503871282,0.146031520453063,0.146033172473477,0.145996870151035,0.146349405122918,0.146717419155136,0.147193814954017,0.0749188531646668,0.074584482582042,0.0746362122603646,0.074613574651258,0.0745898773066472,0.0745872739434933,0.0745838355709597,0.0745831335257438,0.0745828564744902,0.0745828138842938,0.074582829563036,0.0745828535284314,0.0745828723335068,0.0745828842627366,0.0745828901760278,0.0745828920240189,0.0745828891756895,0.0745828828388182,0.0745828646238814,0.074582863588076,0.0745828369715913,0.0745827811586704,0.0745834820194973,0.0745831303082272,0.0745823590811966,0.0746043147426567,0.0745805648038995,0.0745229769221726,0.0744604512623304,0.0744775427623153,0.0270973118949093,0.0272477770044686,0.0270233425936227,0.0270854671521711,0.0270632542939502,0.027063301007035,0.0270618512205383,0.0270614266542168,0.0270612958186672,0.0270612676306364,0.0270612704016248,0.027061281244883,0.0270612894408661,0.0270612950994291,0.027061297879478,0.0270612987434716,0.0270612969216583,0.0270612940043405,0.0270612862626951,0.0270612741182078,0.0270613013007241,0.0270612411524646,0.0270612711682327,0.0270626508167686,0.0270604603733797,0.0270633890165047,0.0270850138344729,0.0271105600626803,0.0271781103235922,0.0271046860619099,0.00269887977770651,0.00387412230904734,0.00363923422614117,0.00366876621449528,0.00366471091447331,0.00366347386468741,0.00366317951899361,0.00366302922762113,0.00366295845273711,0.00366295469822302,0.00366294904993634,0.0036629532791849,0.00366295525433209,0.0036629571528995,0.00366295806901055,0.00366295870786652,0.00366295863443249,0.00366295808641026,0.00366295960373242,0.00366295439526882,0.00366295917544219,0.00366303211913519,0.00366284129272485,0.00366323480749509,0.00366426199822036,0.00366209359307094,0.00365838184069829,0.00366548204194373,0.00351713135193023,0.00464970716880653,-0.0141161647651006,-0.0137873397838053,-0.0137998425253321,-0.0138081311521034,-0.0138082379052702,-0.0138088928387991,-0.0138096870659509,-0.0138098071199586,-0.013810005373456,-0.0138100471481092,-0.0138100890798894,-0.0138101039525862,-0.0138101136247209,-0.0138101173847304,-0.0138101195652284,-0.0138101198048779,-0.0138101185649347,-0.0138101159990553,-0.0138101096082537,-0.0138100948166792,-0.0138100878115814,-0.0138100127245298,-0.0138099060185708,-0.0138099537072348,-0.0138094875521628,-0.0138065817170955,-0.0138144554982387,-0.0137481456180881,-0.0140054335823893,-0.0134886777762221,-0.0488008496255378,-0.0488739311278173,-0.0488641284376193,-0.0488615948694522,-0.0488679696401605,-0.048867244363117,-0.0488689382480918,-0.0488690934489632,-0.0488694991248461,-0.048869619379167,-0.0488697172854504,-0.0488697571053378,-0.0488697854641388,-0.0488697974822661,-0.0488698034574991,-0.0488698044535256,-0.0488698005962137,-0.0488697907288305,-0.0488697723950174,-0.0488697337023513,-0.0488696683961034,-0.0488695608473875,-0.0488693176848224,-0.0488688021295513,-0.0488690477691077,-0.0488642024224344,-0.0488794621165117,-0.0488330095979476,-0.0488761705337194,-0.0489172857934549,-0.108677802966439,-0.108604100324402,-0.10866789516702,-0.108640565547604,-0.108654193602366,-0.10865101720496,-0.108653658330264,-0.108653634642789,-0.10865413738957,-0.10865424913094,-0.108654397254268,-0.10865444319938,-0.108654478570282,-0.108654497133152,-0.108654504201408,-0.108654505653058,-0.108654500316105,-0.108654486569317,-0.108654460241135,-0.108654412263409,-0.108654323055196,-0.10865416336339,-0.108653962124251,-0.108653217695764,-0.108653495068149,-0.108649081723919,-0.10865237923272,-0.108652844076989,-0.108631766792312,-0.108611793741634,-0.194576420754065,-0.194159242707566,-0.194326168979493,-0.194264903140818,-0.194289563452792,-0.194281933129447,-0.194285327802932,-0.194284831664727,-0.194285583943216,-0.194285559923624,-0.194285696086784,-0.19428576215686,-0.194285782096348,-0.194285803864731,-0.194285810209414,-0.194285811642754,-0.194285806915692,-0.194285794502927,-0.194285770161615,-0.194285726066087,-0.194285653241637,-0.194285498867838,-0.194285347657067,-0.194284773285809,-0.194284641324706,-0.194283713088619,-0.194280966337103,-0.194278871002989,-0.194320959439344,-0.193981573995742,-0.313921413473373,-0.31305178424997,-0.313374440132086,-0.313257352202871,-0.313299687372991,-0.313287231537395,-0.313293030473015,-0.313290961797088,-0.313291773985994,-0.313291971381903,-0.313291899631373,-0.313292013249069,-0.313292016587497,-0.313292032797276,-0.313292039177329,-0.313292040054257,-0.313292036898158,-0.313292027939247,-0.313292010643661,-0.313291977322221,-0.313291927047249,-0.313291817921341,-0.313291691727764,-0.313291412713518,-0.31329093178234,-0.313290445618741,-0.313292658254618,-0.31326817608515,-0.313408277840673,-0.312654281951187,-0.487036416745548,-0.485407814453029,-0.485988738130263,-0.485791439286122,-0.48585646512742,-0.485829841522824,-0.485838845649742,-0.485839148750346,-0.485837527167049,-0.485838594906976,-0.485838328471832,-0.485838409264614,-0.485838427347815,-0.48583843055315,-0.485838436640092,-0.485838437477105,-0.485838436141908,-0.485838431365651,-0.485838421921441,-0.485838402486615,-0.485838371998188,-0.485838313460627,-0.485838218525562,-0.485838079343639,-0.485838052093347,-0.485836050611664,-0.485845772750603,-0.485790904398343,-0.486072541337806,-0.484635837854083,-0.753531299394916,-0.750755434475822,-0.751669820038723,-0.751373118393922,-0.751478843645821,-0.751469847490946,-0.751450707162618,-0.751464198508924,-0.751459558210214,-0.75146049148776,-0.751460529424139,-0.751460465923219,-0.751460502504608,-0.751460499973787,-0.75146050271658,-0.751460504432243,-0.751460505379165,-0.75146050550744,-0.751460504044132,-0.751460498554025,-0.751460486506861,-0.751460463279429,-0.751460431723521,-0.751460252738506,-0.751460839723918,-0.751456889575165,-0.751476719373997,-0.751373815054649,-0.751887868652795,-0.749387450177894,-1.18222990264053,-1.17836010474904,-1.17943428884271,-1.17925491273892,-1.17906975185558,-1.17924211162127,-1.17917247188682,-1.17918743914769,-1.17918720693828,-1.17918610558715,-1.17918656190229,-1.17918645785716,-1.17918646213234,-1.17918646306448,-1.17918646141588,-1.17918646433888,-1.17918646974552,-1.17918647789037,-1.17918648847097,-1.17918650068516,-1.17918651367109,-1.17918651674021,-1.1791865726406,-1.17918627482627,-1.17918780540587,-1.17917989044207,-1.17921839910441,-1.17903404584173,-1.17989019317581,-1.17614240022889,-1.87118202817678,-1.86981202575459,-1.86816899810261,-1.87019101247669,-1.86919103372231,-1.86944043414741,-1.86942763260075,-1.86941189065573,-1.86941895039961,-1.86941728519122,-1.8694173720853,-1.8694173883797,-1.86941733762175,-1.86941732790867,-1.86941732264338,-1.86941732792736,-1.86941734421349,-1.8694173712133,-1.86941740937825,-1.86941745817922,-1.86941752260812,-1.86941757062988,-1.86941776559672,-1.86941730410641,-1.86941989998296,-1.86940836374239,-1.86946341859993,-1.86920771796931,-1.87024405403158,-1.86765382874096,-2.86976059161497,-2.89131026380081,-2.87807150733731,-2.88218493259376,-2.88181179085108,-2.8815975346563,-2.88170854993842,-2.88168197314315,-2.88168399632155,-2.88168463943477,-2.88168407926531,-2.88168405466631,-2.8816839683723,-2.88168391521501,-2.88168389879023,-2.88168391090357,-2.88168395465749,-2.88168403018125,-2.8816841391977,-2.88168428097933,-2.88168446860849,-2.88168465184983,-2.88168505857952,-2.88168458774972,-2.88168907488935,-2.8816666907101,-2.88177274893103,-2.88143827298141,-2.88129235774472,-2.89361214895675,-3.86025974532048,-3.92308181859756,-3.91364786762067,-3.91098753025523,-3.91273395740066,-3.91229435931791,-3.91233325022752,-3.91234587957359,-3.91233854523066,-3.91233952941151,-3.91233906893544,-3.91233871585891,-3.91233853698049,-3.91233840216651,-3.912338352595,-3.91233837830793,-3.91233848075253,-3.91233866191479,-3.91233892577237,-3.91233927379994,-3.91233972555879,-3.9123402063828,-3.91234121229006,-3.91233983691953,-3.91235026403298,-3.91232437284951,-3.91227544611365,-3.91359364724548,-3.90272118399801,-3.96443051668682,-3.80797209568164,-3.78609962087383,-3.81353275757895,-3.80599966833053,-3.80673125235595,-3.80694499065833,-3.80683101475196,-3.80685388336733,-3.80685161747824,-3.80684976909438,-3.80684956447368,-3.80684895556158,-3.80684861038555,-3.8068483882507,-3.80684829652785,-3.80684833652854,-3.80684850719494,-3.80684881233574,-3.80684925880637,-3.80684984858506,-3.80685063513431,-3.80685137872814,-3.80685322741066,-3.80685301142678,-3.80684561942981,-3.8069734726202,-3.80608522422636,-3.81047433382762,-3.79612362229093,-3.80574920396121,-2.00619275316531,-1.86867311053854,-1.88308139260655,-1.8866047588518,-1.88468730663181,-1.88508901739363,-1.88506821274462,-1.88504986948833,-1.88505624766432,-1.88505393007487,-1.88505356240129,-1.88505315280662,-1.88505283414531,-1.8850526544063,-1.88505258084932,-1.88505262034092,-1.885052771978,-1.88505303866822,-1.88505342978326,-1.88505393329798,-1.88505464397984,-1.88505539893508,-1.88505538195057,-1.88506710835934,-1.8850031933985,-1.8852871568246,-1.88456295056217,-1.88375994201879,-1.90582496907747,-1.7639370491333,-0.141163877727888,-0.202548320523038,-0.168795622332703,-0.175701865209876,-0.175413269103092,-0.175114966794196,-0.175232704362146,-0.175207745805487,-0.175209999763444,-0.175210201526022,-0.175209812258801,-0.175209794713399,-0.175209708189947,-0.175209670498767,-0.17520965620484,-0.175209668404009,-0.175209707627835,-0.175209773050111,-0.17520987218573,-0.17520999949329,-0.175210068654309,-0.175211093428935,-0.175206767559053,-0.175224884800693,-0.175188561940567,-0.175085514827282,-0.176568245745815,-0.16853894745361,-0.191604121996756,-0.209263067115449,0.0991794739408984,-0.0207957943231821,-0.0171051041202264,-0.0117844330715713,-0.0137364976600601,-0.013357778706454,-0.0133874127205971,-0.0133954868744989,-0.0133913885713747,-0.0133925694289452,-0.0133923577500019,-0.0133924209303286,-0.0133924331447076,-0.0133924387404068,-0.0133924373369794,-0.0133924262654287,-0.0133924068201453,-0.013392378491632,-0.0133923335386079,-0.0133923511691856,-0.0133919918158166,-0.0133930741648258,-0.0133912388647436,-0.0133823119792844,-0.0134803073986255,-0.013001916831383,-0.0142519499883093,-0.0153762427874918,0.0139392828164539,-0.12596917731304,0.758626444902819,0.857086546137299,0.824334555754278,0.830080827719799,0.829786360809158,0.829623755211348,0.829692808852651,0.829677320625611,0.829680352825815,0.829679628907942,0.82967940610579,0.82967919222195,0.829679009476294,0.829678900156766,0.829678850547878,0.829678864863964,0.829678943242114,0.829679079154372,0.829679298495195,0.829679469786054,0.829679805111813,0.82968065491387,0.829674065919521,0.829702320683792,0.829628363188165,0.829544969661998,0.831201493215878,0.823222104877127,0.83702292746238,0.900596611192775,2.9154486648343,3.00037131675384,2.99903854361215,2.99580084065168,2.99692346377396,2.99671138737461,2.99674939756606,2.9967442378502,2.99674436270515,2.99674397355466,2.99674328400311,2.99674285604863,2.99674250088439,2.99674228904526,2.99674220728159,2.99674225554261,2.99674243778783,2.9967427463777,2.99674318919085,2.99674378351728,2.99674394362108,2.99674619457472,2.99674182997957,2.99673475618694,2.99682723303747,2.99634912453352,2.99718080510308,3.00034715389395,2.96910493342863,3.07763191810423,4.13576371661416,4.0723133405223,4.08996223861611,4.08706437041074,4.08743788801562,4.08739996028034,4.08741092773146,4.08741348760676,4.08741156946269,4.08741167724553,4.08741107001469,4.08741071382662,4.08741043501796,4.08741026528212,4.08741020110523,4.08741023768425,4.08741038106266,4.08741063642928,4.08741096727648,4.08741153973604,4.08741181350711,4.08741194532324,4.0874178848855,4.08738884698158,4.08743512931307,4.08758906402983,4.08572306339014,4.09255662001261,4.08329510629312,4.03800445549937,3.46855955162747,3.43335113498043,3.43592612665761,3.43590875778736,3.43607901503634,3.43609700218672,3.43607942753608,3.43608896711565,3.43608696069091,3.43608711566626,3.43608687437902,3.43608669190425,3.43608656133447,3.43608648123283,3.43608645232447,3.43608646479034,3.43608652808715,3.43608665501637,3.43608681270961,3.43608702066171,3.43608765065616,3.43608626593823,3.43608945284981,3.43609756222969,3.43598488269327,3.43639548938787,3.43559685632276,3.43335237558927,3.45033291613278,3.40135643748201,2.33198337062099,2.33957153463095,2.34258318230294,2.34234779480403,2.34216905135584,2.34232978933046,2.34230600646297,2.34231277061532,2.34231294003692,2.34231293386572,2.34231291251113,2.34231284992428,2.34231280377641,2.34231277994536,2.342312781353,2.34231277590357,2.34231279551457,2.34231284073372,2.34231292626418,2.34231291071356,2.34231323984015,2.34231378342279,2.34230751692757,2.34233347876204,2.342270712248,2.34218267297965,2.34302362682875,2.33953917702874,2.34219058719111,2.34672772051845,1.46175218981469,1.44724471963538,1.44625019550286,1.4490461815314,1.4486384870298,1.44872477060789,1.44872888861505,1.44872915614328,1.44873004322654,1.4487301060311,1.44873013330362,1.44873012854823,1.44873012020835,1.44873011877765,1.44873016366526,1.44873014528199,1.4487301418184,1.44873014945026,1.44873019429437,1.44873022808853,1.44872989433777,1.44873193385239,1.4487265188816,1.44872866234359,1.44877495352273,1.44851564393472,1.44907809399354,1.44730633324017,1.45287211980552,1.40824728639901,0.998057068942916,1.06251630264627,1.0548338305012,1.05564963198728,1.05572661126395,1.05570537723379,1.05571360379397,1.05571361497203,1.0557138783937,1.05571396826757,1.0557139791716,1.05571398450464,1.05571398647086,1.05571402059113,1.05571407525426,1.05571400970422,1.05571401684032,1.05571403644723,1.05571399281926,1.05571423868148,1.05571370494805,1.0557138859919,1.05572121918777,1.05568664141727,1.05579404158608,1.05560040080479,1.05588875217536,1.05517234761649,1.0436831336777,1.1076579832033,0.963125628687581,0.992895443486766,0.988113024434513,0.985734211080968,0.986005869593212,0.985953343312067,0.985948124700257,0.985950256570547,0.985949964955114,0.985950141140128,0.985950249036235,0.985950264982072,0.985950270792069,0.98595027483428,0.985950158045417,0.985950190021889,0.9859502335551,0.985950227576885,0.985950216552258,0.985950234757543,0.98595024504392,0.98595035741585,0.985950787209409,0.985950872359016,0.9859623321816,0.985956842145762,0.985975622581842,0.987340822253356,0.979601337643941,1.03156135050578,0.808172635930131,0.762275095191659,0.765283834672195,0.764722052449802,0.764510623070356,0.764514835363926,0.764504457654951,0.764503274209287,0.764503156890842,0.764503127076527,0.764503177554767,0.764503186754918,0.764503195867257,0.764503178028631,0.764503134998861,0.764503179569028,0.764503182334956,0.764503173856954,0.764503171894862,0.764503184709354,0.764503238918595,0.764503347165544,0.764504487847038,0.764506793503944,0.764508901490919,0.764628092101181,0.764339990132285,0.766314973240443,0.770582470530144,0.752857537703943,0.451487826127882,0.463514717834199,0.459822175697162,0.459867043537524,0.459741620521017,0.459708052863368,0.459701688909518,0.459699124325142,0.459698608045422,0.459698537934461,0.459698550646959,0.459698575867694,0.459698593828138,0.459698602492035,0.459698591666604,0.459698599685701,0.459698602665964,0.459698594384186,0.459698586956775,0.459698579416697,0.459698631004459,0.459698825292738,0.459698866096773,0.459707043336605,0.459691840834796,0.45979682445052,0.459927022001092,0.459377299504561,0.46308435429062,0.475247502151875,0.305346310988711,0.301680505482414,0.302090311238202,0.301776243596131,0.301735866213933,0.301711590572925,0.301704064373046,0.301702156669426,0.301701467986913,0.301701380294688,0.30170138371077,0.301701411827085,0.301701433374517,0.301701446251903,0.301701450599225,0.301701454574156,0.301701452794404,0.301701443297548,0.301701431633174,0.30170142448153,0.301701388088963,0.301701886277654,0.301700919251821,0.301707092282876,0.301711101992869,0.301685293892046,0.301886102936702,0.301945095468495,0.300025166892741,0.300252409352575,0.176512030284805,0.177649963236049,0.177228689189594,0.177198620745946,0.177153321227175,0.177142775122691,0.177136425533977,0.177135080832654,0.177134517320977,0.177134438400067,0.177134451675785,0.17713448366469,0.177134509534806,0.177134525304556,0.177134532675211,0.177134535675668,0.177134532478607,0.177134522201637,0.177134501618054,0.177134506185484,0.177134403752509,0.177134755810885,0.17713491594364,0.177134283883797,0.177148577214464,0.177148997711338,0.177114071628806,0.177547023976207,0.177983312207564,0.178565268875928,0.0912322548114707,0.0908464739574489,0.0909331939510454,0.0909016637463457,0.0908722981217077,0.0908693220450248,0.0908650754811983,0.0908642156685527,0.0908638808542517,0.0908638288401275,0.0908638486910737,0.090863878300996,0.0908639014556451,0.0908639161302481,0.0908639234093717,0.0908639256811522,0.0908639222042807,0.090863914393179,0.0908638923040177,0.0908638903737811,0.0908638568126106,0.0908637971201944,0.0908646251443662,0.0908641563261968,0.0908637440989197,0.0908894632151536,0.0908584504838025,0.0907929425013942,0.090705811170553,0.0907796764124255,0.0328708982012162,0.0329070938240518,0.0326276805799305,0.0327085037930118,0.0326804785599741,0.0326804523264292,0.0326787187641313,0.0326781827527592,0.0326780251341654,0.032677991723491,0.0326779960086118,0.0326780099773458,0.0326780204381666,0.0326780276045555,0.0326780311214478,0.0326780321834267,0.0326780298835387,0.0326780260840223,0.0326780162203548,0.0326780012913879,0.0326780318374733,0.0326779571746723,0.0326780188218384,0.0326796118206696,0.0326769779742493,0.0326811330410573,0.032707099369853,0.0327366691631346,0.0328412880723068,0.0325835699369363,0.00306034474697864,0.0046678152298622,0.00436134252657181,0.00439625007643248,0.00439238895761461,0.00439066304376014,0.00439034420854763,0.00439016911292029,0.0043900849518499,0.00439008263809956,0.00439007673909866,0.00439008239097846,0.0043900850863004,0.00439008754703622,0.00439008873291823,0.00439008952472583,0.00439008940762124,0.00439008869394562,0.00439009028865805,0.00439008375500171,0.00439009032529942,0.00439017265438632,0.00438994785786168,0.0043904460535883,0.00439162238074946,0.00438881801949538,0.00438551069260142,0.00438930977965906,0.00421110265683512,0.00574703601809846,-0.0165857491729655,-0.0162629698987231,-0.0162523160348769,-0.0162667243050667,-0.0162665823025458,-0.0162673339372033,-0.016268343701543,-0.0162684942072594,-0.0162687420718199,-0.0162687969311643,-0.0162688499082664,-0.0162688692041866,-0.016268881641657,-0.016268886576007,-0.0162688893926082,-0.0162688897299422,-0.0162688881619219,-0.0162688848374554,-0.0162688766281629,-0.0162688583035487,-0.016268847851155,-0.0162687545280192,-0.0162686265258159,-0.0162686838312101,-0.0162680362425728,-0.0162647191835306,-0.0162743046091852,-0.0161888713379781,-0.0165274670927811,-0.0159331841390831,-0.0591673478840983,-0.0593055437060874,-0.0592961253560939,-0.0592908871965677,-0.0592991904821479,-0.0592982591610858,-0.0593003346978428,-0.0593005361435734,-0.0593010324480321,-0.0593011823361486,-0.0593013033597737,-0.0593013528905254,-0.0593013879219868,-0.0593014029002268,-0.0593014102950783,-0.0593014115093965,-0.0593014066795965,-0.0593013943698706,-0.0593013713710176,-0.0593013231743774,-0.0593012417679182,-0.0593011068083533,-0.0593008001438171,-0.0593001743390422,-0.0593004543281601,-0.059294306754052,-0.0593139005141604,-0.059256706526345,-0.0592870480518876,-0.0594089315381725,-0.131955840507054,-0.131819346392158,-0.131903432241413,-0.131869769408482,-0.131886179291914,-0.131882352839113,-0.131885523860729,-0.131885497553224,-0.131886104927166,-0.131886238828968,-0.131886417344001,-0.131886473220827,-0.131886515788696,-0.131886538259856,-0.131886546811756,-0.131886548570648,-0.131886542132838,-0.131886525553724,-0.131886493812432,-0.131886435986258,-0.131886328445047,-0.131886137261426,-0.131885896649856,-0.13188498826557,-0.131885395574636,-0.131880003091809,-0.131883243134291,-0.131888658105558,-0.131859817692708,-0.131794073720909,-0.235431756745537,-0.234935402862899,-0.235135008770261,-0.235061358945158,-0.235091067392168,-0.23508189007144,-0.235085973860719,-0.235085360973959,-0.235086265339013,-0.235086238979555,-0.235086400091205,-0.235086479956564,-0.235086503759856,-0.235086529842307,-0.235086537474139,-0.235086539200771,-0.235086533555929,-0.235086518708677,-0.235086489580215,-0.235086436853921,-0.235086349742928,-0.23508616401312,-0.235085987443377,-0.235085292672928,-0.23508510603314,-0.235084246137923,-0.235080376069268,-0.235076462437188,-0.235135504954613,-0.234725066284671,-0.379284106034887,-0.378231064944001,-0.378621053083003,-0.378479804661389,-0.378530667835065,-0.378515612334879,-0.378522620132612,-0.378520159315022,-0.378521106172565,-0.378521352880727,-0.37852126481833,-0.378521400713488,-0.378521404907409,-0.378521424227462,-0.378521431880892,-0.378521432931358,-0.378521429158379,-0.378521418444836,-0.378521397757821,-0.378521357847772,-0.378521297998009,-0.378521167010816,-0.378521014965265,-0.378520694987945,-0.378520079181182,-0.378519484891963,-0.378522693480335,-0.378492012268719,-0.378660244671204,-0.377748756527485,-0.588007807890165,-0.586046041474597,-0.586744786475189,-0.586507922384908,-0.586586380962973,-0.586554507354113,-0.586565005493673,-0.586565521949757,-0.586563543501021,-0.586564821830861,-0.586564505828708,-0.586564601237724,-0.586564623113482,-0.586564626907281,-0.586564634185154,-0.586564635202334,-0.586564633632926,-0.586564627963046,-0.586564616751554,-0.58656459356914,-0.586564557193115,-0.586564488142958,-0.586564372224297,-0.586564208104744,-0.586564203120209,-0.586561688265661,-0.586573496311435,-0.58650760378157,-0.586847665190605,-0.585115953330151,-0.909391512293282,-0.906057022440861,-0.907153374668459,-0.906797451462233,-0.906921676785101,-0.906912986475211,-0.906889434742264,-0.906905623213411,-0.906900111008931,-0.906901208374588,-0.906901257977895,-0.906901181476111,-0.906901225083625,-0.906901222059228,-0.906901225320005,-0.906901227392705,-0.906901228575816,-0.906901228808273,-0.906901227170407,-0.906901220797369,-0.906901206401785,-0.906901179079743,-0.906901142895131,-0.90690092067871,-0.906901646499264,-0.906896880994848,-0.906920803912213,-0.90679648994947,-0.907415935364908,-0.904408248832644,-1.4261525081855,-1.42153658683173,-1.42280502184423,-1.42261285598343,-1.42238070020211,-1.42258830692545,-1.42250550097462,-1.42252310417098,-1.42252289860563,-1.42252157367548,-1.42252211760052,-1.42252199363033,-1.42252199838309,-1.42252199939221,-1.42252199738194,-1.4225220009255,-1.42252200752296,-1.42252201748673,-1.42252203044224,-1.42252204547937,-1.42252206159405,-1.42252206531352,-1.4225221349655,-1.42252177521276,-1.42252361643225,-1.42251410533799,-1.42256034875072,-1.42233933003739,-1.42336461367834,-1.41889075948238,-2.25532219884414,-2.25388472617302,-2.25177993811075,-2.25423405680742,-2.25304281974777,-2.25333637616987,-2.25332232128779,-2.25330336794383,-2.25331178230477,-2.25330980316773,-2.25330990340495,-2.25330992222488,-2.25330986095809,-2.25330984899982,-2.25330984256841,-2.25330984898961,-2.25330986879136,-2.25330990164058,-2.25330994808737,-2.25331000746737,-2.2533100859838,-2.25331014472173,-2.25331037996183,-2.25330982983283,-2.25331294733888,-2.25329905634324,-2.25336549702732,-2.25305737171641,-2.25429572774861,-2.25129897100609,-3.45246621541849,-3.47885344790025,-3.46300149847405,-3.46784811280039,-3.46742459694983,-3.46716597123364,-3.46729822354035,-3.46726668798083,-3.46726905839494,-3.46726982558509,-3.46726915405884,-3.46726912258245,-3.46726901780055,-3.46726895338412,-3.46726893338875,-3.46726894806394,-3.46726900112277,-3.46726909272787,-3.46726922497808,-3.46726939699907,-3.46726962451915,-3.46726984739095,-3.46727034019975,-3.46726976613621,-3.46727522360701,-3.46724820493346,-3.46737450352175,-3.46698859306827,-3.46669789623779,-3.48207765570809,-4.62873636830847,-4.70310000159183,-4.69226205509857,-4.68902853356433,-4.69110778595044,-4.69058691506673,-4.69063260315167,-4.69064770107078,-4.69063895141002,-4.69064011966371,-4.69063956284074,-4.69063913811181,-4.69063892165352,-4.69063875887802,-4.69063869892869,-4.69063872982976,-4.69063885333804,-4.69063907184229,-4.69063939014005,-4.69063981002249,-4.69064035522375,-4.69064093444538,-4.69064215092749,-4.69064050658139,-4.69065283715193,-4.69062351898675,-4.69055454040635,-4.69217702777447,-4.67906530431965,-4.75255740654315,-4.54626173880354,-4.51852048302078,-4.55115662298376,-4.54224609334231,-4.54310525543695,-4.54336047106065,-4.54322482823993,-4.54325207499217,-4.54324933948694,-4.54324714246471,-4.54324689364565,-4.54324616419336,-4.54324575093101,-4.54324548476638,-4.54324537489344,-4.54324542280272,-4.54324562723401,-4.54324599274875,-4.54324652758838,-4.54324723396838,-4.54324817652774,-4.54324906817418,-4.54325126480546,-4.54325114383637,-4.54324160452751,-4.54339682125073,-4.542333896856,-4.54752919879048,-4.5308066549324,-4.5402586280318,-2.38578738946518,-2.22377488151981,-2.24067893052799,-2.24487774245111,-2.24260038516533,-2.24307844347717,-2.2430532320109,-2.24303155684067,-2.24303912941853,-2.24303635834916,-2.2430359248459,-2.24303543519598,-2.24303505520675,-2.24303484091349,-2.24303475320912,-2.24303480035636,-2.24303498126625,-2.24303529939465,-2.24303576597579,-2.24303636666553,-2.24303721313927,-2.24303812346905,-2.2430380561613,-2.24305218966973,-2.24297591964746,-2.24331167868993,-2.24246922501717,-2.24143162496842,-2.26778801119888,-2.10031153830468,-0.168912851949214,-0.241551645240009,-0.201558944095936,-0.209763201124546,-0.209411917636877,-0.209059772580214,-0.209199515791543,-0.209169693050663,-0.209172462687019,-0.209172681931616,-0.209172219064011,-0.209172199099697,-0.209172095738168,-0.209172050891947,-0.209172033915645,-0.209172048508769,-0.209172095323691,-0.209172173377213,-0.209172291515043,-0.209172444036198,-0.2091725234877,-0.209173753797831,-0.209168599149333,-0.209190011279914,-0.209147918158343,-0.209020880805283,-0.21079154286372,-0.201277250124838,-0.228449810419716,-0.249440325265617,0.118423719138778,-0.0241188859214451,-0.0195754890989643,-0.0133047845117255,-0.0156208472186965,-0.0151686857781515,-0.0152051940041642,-0.0152144211978392,-0.0152095677434935,-0.0152109910044542,-0.0152107332959033,-0.0152108093357161,-0.0152108241713712,-0.0152108308726791,-0.0152108292615239,-0.0152108160796188,-0.0152107928627729,-0.0152107590701201,-0.0152107051712382,-0.0152107265189347,-0.0152102983647355,-0.015211576178604,-0.0152094604460805,-0.0151985780670541,-0.0153156156479085,-0.0147478686967396,-0.0162231425995958,-0.0175817268402241,0.0171605064178036,-0.148851169129203,0.902553651265794,1.01865021587135,0.979829450931498,0.986698647180616,0.98633027830665,0.986142655593828,0.986224063975678,0.98620537350171,0.986209098122617,0.986208223135429,0.986207955650074,0.986207702047231,0.986207484226171,0.986207353948727,0.986207294833897,0.986207311829825,0.986207405143056,0.986207566927284,0.98620782805296,0.98620803258829,0.986208427154321,0.986209453599262,0.986201580074527,0.986235143282622,0.98614770208674,0.986047021199167,0.988015020795905,0.978543244109318,0.995044424064312,1.06970030171727,3.4729573276892,3.57438625642022,3.57245479325994,3.56867913141782,3.57000145028297,3.56974706221078,3.56979436969292,3.56978792146756,3.56978804615569,3.56978759970291,3.56978677534983,3.5697862634862,3.56978583952948,3.56978558638353,3.56978548863769,3.56978554621161,3.56978576383835,3.56978613243896,3.56978666088275,3.56978737108418,3.56978756071393,3.56979023698948,3.56978506344674,3.56977652657061,3.56988654737972,3.56931783873786,3.57031230577159,3.5740211958712,3.53706849135043,3.66612893260725,4.94578483880813,4.87183186868756,4.89273066008219,4.88927321636537,4.88974277191669,4.88969017553502,4.88970318143969,4.88970652617011,4.88970420906662,4.88970432459104,4.88970360030981,4.88970317176239,4.88970283654941,4.88970263267339,4.88970255562104,4.88970259969462,4.88970277211394,4.88970307922247,4.88970347708621,4.88970416342961,4.88970449542973,4.88970464687611,4.88971171995881,4.88967708503692,4.88973244266194,4.88991235094028,4.88770201393326,4.89584162578431,4.88451917212275,4.83236985142752,4.16858676253618,4.12582916207556,4.1290943196765,4.12896621602181,4.12918250260862,4.12920879767992,4.1291872662202,4.12919853236689,4.129196191502,4.12919637030673,4.12919607594246,4.1291958562841,4.12919569795899,4.1291956009132,4.12919556588172,4.1291955811881,4.12919565803472,4.12919581164492,4.12919600296414,4.1291962545023,4.12919701082281,4.12919536172117,4.12919917610562,4.12920865016555,4.1290748518589,4.12956412757977,4.12859543689475,4.12600983835006,4.14603409465203,4.08709115282518,2.81008376993134,2.81873643769053,2.82261430091694,2.82235285314877,2.82212373391189,2.82231360211092,2.82228599035021,2.82229406622251,2.82229421933921,2.82229422864323,2.82229419827584,2.82229412230461,2.82229406633069,2.82229403733882,2.82229403860429,2.82229403190138,2.82229405566791,2.82229411075349,2.82229421420123,2.82229419753395,2.82229459297175,2.82229523366768,2.82228779374224,2.82231870465719,2.82224309335063,2.82214196984207,2.82313288534663,2.81895994276585,2.82232554764687,2.82739882751333,1.76422639505017,1.746152998343,1.74488611630508,1.74821717262058,1.74774528639363,1.74784982913055,1.74785392436604,1.74785455932413,1.74785558434315,1.74785566397542,1.74785569742247,1.74785569095677,1.74785568070376,1.74785567861327,1.74785573218534,1.74785571078112,1.74785570673021,1.74785571617423,1.74785577038478,1.74785581033874,1.74785541705461,1.74785784475543,1.74785135273745,1.74785417399665,1.74790816597873,1.7476008190556,1.74826941166851,1.7461501095451,1.75273789970271,1.69923107060649,1.20592950372393,1.28219198085126,1.27322827979999,1.27426021198093,1.27433288525542,1.27431214022479,1.27432154523203,1.27432159496311,1.27432192156557,1.27432202694947,1.27432204227817,1.27432204642102,1.27432204884528,1.27432209010177,1.27432215689066,1.27432207925783,1.27432208690923,1.27432211068167,1.27432205937738,1.27432235392752,1.2743217144363,1.2743219638455,1.27433057255665,1.27428957981722,1.27441795099827,1.27418153482977,1.27454686873234,1.27358459229497,1.2599816592837,1.3386548744993,1.12709025924435,1.16426080677643,1.15907338914023,1.15621277338412,1.15653274634234,1.15647430850541,1.15646784503405,1.1564704408052,1.15647010454646,1.15647031395264,1.15647043985928,1.15647045837579,1.15647046516509,1.1564704702659,1.15647033477649,1.15647037068486,1.15647042165486,1.15647041480084,1.15647040204087,1.1564704235042,1.1564704361607,1.15647056446574,1.1564710708362,1.15647121615624,1.15648402660059,1.15648067167219,1.15649036052166,1.15809481215757,1.14916529135674,1.20879733449292,0.947703922950113,0.894521145894651,0.897752748552869,0.897150670728939,0.896895749426545,0.89690132781597,0.89688922007422,0.896887842299417,0.896887711717847,0.896887677537611,0.896887736456743,0.896887747411474,0.896887757934457,0.896887737093608,0.896887686481427,0.896887738107635,0.896887741836453,0.896887731830849,0.896887729747486,0.896887744665562,0.896887807871462,0.896887940022805,0.896889233432177,0.896892081749495,0.896894166039329,0.897032352563384,0.896704821972544,0.898974688967525,0.903863503663135,0.882777402837163,0.530139243731017,0.544099629588854,0.539810808293654,0.539847238409792,0.539701867331614,0.539662287726941,0.539654875676283,0.539651864491624,0.539651265847903,0.539651184334407,0.539651199289302,0.539651228582038,0.5396512493843,0.539651259126092,0.539651246410841,0.539651255921821,0.539651259381703,0.539651249757837,0.539651241101051,0.539651232885599,0.539651291178913,0.539651527399301,0.539651570815869,0.539661054110529,0.539643971181269,0.539765765874773,0.539915744556141,0.539316496838536,0.543866468785321,0.557995457077809,0.358832007311635,0.354525110204492,0.354997201180559,0.354631207643219,0.35458288254484,0.354554224130039,0.354545427650101,0.354543183680402,0.354542374483757,0.354542272206298,0.354542275866609,0.354542308640337,0.354542333791857,0.354542348755642,0.354542353693878,0.354542358353105,0.354542356304684,0.354542345286846,0.354542331598053,0.354542323805156,0.354542281633236,0.354542858833724,0.354541766715805,0.354548933425998,0.354553399130155,0.354525352429468,0.354760197902446,0.354783910276302,0.352539035539952,0.352869663852735,0.207920267579733,0.209261460651458,0.208752059309509,0.208714134364764,0.208661758021784,0.208649165816224,0.208641678693307,0.208640110193048,0.208639446336577,0.208639353388549,0.208639368707915,0.208639405857757,0.208639435969718,0.208639454323588,0.208639462874032,0.208639466346949,0.208639462596452,0.208639450625473,0.2086394266319,0.208639431689456,0.208639314248259,0.208639723726724,0.208639899263251,0.208639288177973,0.208655861386143,0.208654958786375,0.208622015407644,0.209135262622578,0.209642524321046,0.210316429676959,0.107901999494016,0.10749449683526,0.107619294589412,0.107577916742272,0.107542853279502,0.107539492707132,0.107534429314059,0.107533408728358,0.107533015781159,0.107532954214987,0.107532978232716,0.10753301350822,0.107533041023268,0.107533058451385,0.107533067098675,0.107533069792867,0.107533065682541,0.10753305638582,0.10753303041744,0.107533027589907,0.10753298708063,0.107532923892079,0.107533879379592,0.107533292263788,0.107533267505437,0.107562709231824,0.107524553949145,0.107451635278532,0.107335337417693,0.107502806606173,0.0389073805161323,0.0387843024594931,0.0384502578549102,0.0385503062166844,0.0385163459898087,0.0385162077180437,0.0385141844852461,0.0385135325339694,0.0385133468772217,0.0385133082056002,0.0385133141255393,0.0385133313905258,0.0385133442401926,0.0385133529926547,0.0385133572879934,0.0385133585602782,0.0385133557702995,0.0385133510488685,0.038513338986609,0.0385133211573669,0.038513354915928,0.0385132655365931,0.0385133598395036,0.0385151649000808,0.0385120980929688,0.0385175016006421,0.0385476480676797,0.0385818458399247,0.0387258549968165,0.0382374619191715,0.0034204932125265,0.0055021814402152,0.00512113968566634,0.0051610104057098,0.00515746621980733,0.00515523036785375,0.00515488119138732,0.00515468197649227,0.00515458403620197,0.00515458340293469,0.00515457742843624,0.00515458463523403,0.00515458813748022,0.00515459121166861,0.00515459269128114,0.00515459363928784,0.00515459346271705,0.00515459254576404,0.00515459415237359,0.00515458618544995,0.00515459443571869,0.00515468592391919,0.00515442745490419,0.00515503105261473,0.00515635357825808,0.00515294322244734,0.00515012797492261,0.00514979452774805,0.00494353510925481,0.0069206540626847,-0.0191133883929949,-0.018826518052159,-0.0187878907881815,-0.0188087183544308,-0.018808422412452,-0.0188092509033003,-0.018810488676557,-0.0188106729477675,-0.018810972833487,-0.0188110421257035,-0.0188111068854907,-0.0188111310087173,-0.0188111464407745,-0.0188111526682168,-0.01881115617741,-0.0188111566271393,-0.0188111547071383,-0.0188111505534486,-0.0188111403791892,-0.0188111182469154,-0.0188111038231925,-0.0188109912817901,-0.0188108403390308,-0.0188109032734822,-0.0188100665685558,-0.0188063562408389,-0.0188175740214094,-0.0187124903851412,-0.0191361240848606,-0.0184864667393328,-0.0698406031461582,-0.070035939250876,-0.0700304175893121,-0.0700217889552794,-0.0700321083982247,-0.0700309689738638,-0.070033427503438,-0.0700336764646497,-0.0700342640720349,-0.0700344440115476,-0.0700345884839384,-0.070034647873279,-0.0700346896651891,-0.0700347076536913,-0.0700347164808502,-0.0700347179018636,-0.070034712056498,-0.0700346972160375,-0.0700346693885346,-0.0700346113939476,-0.070034513390545,-0.0700343501337148,-0.0700339784307338,-0.0700332411367363,-0.0700335489592163,-0.0700260850148093,-0.0700500943051677,-0.0699823359338535,-0.0699951003737542,-0.0701971662993523,-0.155583798033102,-0.155376665995716,-0.155481042387625,-0.155441204701229,-0.155460353882829,-0.155455873160577,-0.155459572054163,-0.155459541540439,-0.155460253380697,-0.155460408873244,-0.155460617598989,-0.155460683374027,-0.155460733068683,-0.155460759437562,-0.155460769471084,-0.155460771550916,-0.155460764047175,-0.155460744703823,-0.155460707679016,-0.155460640241926,-0.155460514803881,-0.155460293009024,-0.155460014377855,-0.155458944739369,-0.155459488546045,-0.155453131298298,-0.155456192773365,-0.155467033539865,-0.155433002530674,-0.155310905850289,-0.276662556485721,-0.276092103197584,-0.276324079494538,-0.276237959163677,-0.27627275689169,-0.276262025106247,-0.276266800460214,-0.276266067564394,-0.276267124018115,-0.276267095732466,-0.276267281322129,-0.276267375050915,-0.276267402677545,-0.276267433053534,-0.276267441965924,-0.276267443976623,-0.276267437404808,-0.27626742010814,-0.27626738616573,-0.276267324763284,-0.276267223259531,-0.276267006009134,-0.27626680374048,-0.276265988431023,-0.276265741029685,-0.276264967572404,-0.276260011912828,-0.276253615441485,-0.276330374220093,-0.275853452747885,-0.445135191451194,-0.443894640482668,-0.444352741622523,-0.44418719136882,-0.444246589855945,-0.444228914835757,-0.444237138249435,-0.444234289849006,-0.444235366114243,-0.444235663783516,-0.444235559039864,-0.444235717098699,-0.444235722168577,-0.444235744569024,-0.444235753494277,-0.44423575472236,-0.444235750346449,-0.444235737907549,-0.44423571388215,-0.444235667484362,-0.444235598235491,-0.444235445745058,-0.444235268186927,-0.444234909058352,-0.444234161125889,-0.444233433992704,-0.444237747189334,-0.444200925315738,-0.444396795323601,-0.443324719030259,-0.689631299801097,-0.687336210887233,-0.68815286776537,-0.687876432011451,-0.687968395042959,-0.687931296235685,-0.687943230116501,-0.687943986974203,-0.687941646198923,-0.687943134430539,-0.687942769527318,-0.687942879269082,-0.687942904960363,-0.687942909329892,-0.687942917791087,-0.68794291898814,-0.687942917186944,-0.687942910629675,-0.687942897659525,-0.687942870743223,-0.687942828479187,-0.687942748961523,-0.687942612110562,-0.687942421745824,-0.687942445165854,-0.687939407359711,-0.687953272180341,-0.687876342206792,-0.68827552071812,-0.686248145925443,-1.06618873169043,-1.0622946821845,-1.06357291063679,-1.06315785717341,-1.06330004609924,-1.06329204175873,-1.0632639798669,-1.0632828630028,-1.06327648924559,-1.06327774668538,-1.06327780864047,-1.06327771908807,-1.06327776966519,-1.06327776614766,-1.06327776992074,-1.06327777235393,-1.06327777378398,-1.06327777414003,-1.06327777235815,-1.06327776515161,-1.06327774848415,-1.06327771711137,-1.06327767684075,-1.06327741067912,-1.06327827615841,-1.06327269690268,-1.06330074998899,-1.06315484975863,-1.06387997317848,-1.06036368985701,-1.67142406393552,-1.66606767070002,-1.66752600329966,-1.66732541005313,-1.66704454317878,-1.66728749703611,-1.66719166775659,-1.66721184340762,-1.66721167696936,-1.66721012802216,-1.66721075887703,-1.66721061513327,-1.66721062029581,-1.66721062136021,-1.66721061898175,-1.66721062315195,-1.66721063095978,-1.66721064277594,-1.66721065815441,-1.66721067607291,-1.66721069541838,-1.66721069980279,-1.66721078344419,-1.66721036185575,-1.66721251431687,-1.66720140165383,-1.66725538487014,-1.66699775721341,-1.66819187381632,-1.66299634294775,-2.64122862950313,-2.63976373338525,-2.63717324180957,-2.64006374527256,-2.63868295701668,-2.63901964999808,-2.63900456565283,-2.63898239240541,-2.63899215078194,-2.63898986108182,-2.6389899739685,-2.63898999516956,-2.63898992332767,-2.63898990906848,-2.63898990145028,-2.63898990902373,-2.63898993238938,-2.6389899711713,-2.63899002602218,-2.6389900961362,-2.63899018895433,-2.6389902586664,-2.63899053439111,-2.63898989608713,-2.63899353671795,-2.63897728084166,-2.63905517890696,-2.63869440989611,-2.64013342878238,-2.63675293693294,-4.03666791097503,-4.0679820686779,-4.04952688030926,-4.05509063232492,-4.05462090094892,-4.05431768456239,-4.05447099559737,-4.05443456416378,-4.05443727210423,-4.05443816240435,-4.05443737964765,-4.0544373409412,-4.0544372174458,-4.05443714165456,-4.05443711803526,-4.05443713529654,-4.05443719775986,-4.05443730562264,-4.05443746136455,-4.05443766396835,-4.05443793180307,-4.05443819482989,-4.05443877465463,-4.05443809562112,-4.05444453557821,-4.05441286348112,-4.05455916457807,-4.05412490812655,-4.05366782701627,-4.07221340364304,-5.39641984352445,-5.48212911761927,-5.4699697148179,-5.46615666963284,-5.46856571061099,-5.46796473633965,-5.4680170561527,-5.46803461018565,-5.46802445468387,-5.46802580481229,-5.46802515087218,-5.46802465432128,-5.46802439997139,-5.46802420906372,-5.46802413865574,-5.46802417475177,-5.46802431942115,-5.46802457545643,-5.46802494847875,-5.46802544059958,-5.46802607977859,-5.46802675776676,-5.4680281863661,-5.46802627494272,-5.46804047241593,-5.4680080511281,-5.46791721102227,-5.46985068757252,-5.45449224578792,-5.5396476499147,-5.28030970573027,-5.24646496691329,-5.28425192261746,-5.27398655797433,-5.27497013560841,-5.27526656697872,-5.27510946176383,-5.27514105262568,-5.27513784409898,-5.2751353023257,-5.27513500876742,-5.27513415902683,-5.27513367785692,-5.27513336774576,-5.27513323976309,-5.27513329556315,-5.27513353368652,-5.27513395944566,-5.27513458247001,-5.27513540518358,-5.27513650347887,-5.27513754307795,-5.27514008348739,-5.27514008245289,-5.27512827980759,-5.27531114521499,-5.27407424960658,-5.2800626117687,-5.26105463989483,-5.26999129541762,-2.76160829989195,-2.575617130885,-2.59495176562906,-2.59982030014618,-2.59718726346926,-2.597740972008,-2.5977113024508,-2.59768635735671,-2.59769510980039,-2.59769188696539,-2.597691388929,-2.59769081958423,-2.59769037869806,-2.59769013009089,-2.59769002834145,-2.59769008310131,-2.59769029309722,-2.59769066232741,-2.5976912038858,-2.59769190112981,-2.59769288225633,-2.59769394875177,-2.59769382303875,-2.59771037254964,-2.59762183259599,-2.59800848370306,-2.59705240726093,-2.59576802725702,-2.62639130405748,-2.43380593189906,-0.196578760597824,-0.280293725871934,-0.234151397850553,-0.243639157164679,-0.243224202865933,-0.242819279311653,-0.242980749798578,-0.242946084518703,-0.242949381345338,-0.242949614466149,-0.242949078712587,-0.242949056437791,-0.242948936353708,-0.242948884412805,-0.242948864783189,-0.242948881763416,-0.24294893612574,-0.242949026732977,-0.242949163729668,-0.242949341425693,-0.242949430564827,-0.242950866392842,-0.242944889950578,-0.242969537924447,-0.242921934358315,-0.242770354075061,-0.244827257818556,-0.233849351438229,-0.265042560700322,-0.289329547152659,0.137554253290099,-0.0272984514251433,-0.0218809311617846,-0.0146807948897736,-0.0173560826362099,-0.0168308842308926,-0.0168744406358758,-0.0168847414092522,-0.0168791423649172,-0.0168808084451935,-0.016880504602728,-0.0168805934207139,-0.0168806108953566,-0.0168806187125895,-0.0168806169020646,-0.0168806016284863,-0.0168805746624335,-0.0168805354442048,-0.0168804726126371,-0.0168804977077103,-0.0168800013308069,-0.0168814708451846,-0.0168790897129917,-0.0168662242527787,-0.0170021959106413,-0.0163462176315425,-0.0180424715574035,-0.0196363990431735,0.0204546468973927,-0.171322237750582,1.04501586420946,1.17837284958531,1.13357003508744,1.14155732837453,1.14111231624109,1.1409010163411,1.14099453858529,1.14097262611753,1.14097705145952,1.14097602649338,1.14097571435829,1.14097542140353,1.14097516884398,1.1409750177754,1.14097494922668,1.14097496886618,1.14097507697453,1.14097526438498,1.14097556690647,1.14097580448833,1.14097625690681,1.14097746102014,1.14096830943836,1.14100712007549,1.14090642079026,1.14078838415623,1.14306426340269,1.13211832815318,1.15131025907661,1.23674757492041,4.02576988590111,4.14362379649226,4.14103426371783,4.13674051236373,4.13825817835266,4.1379614584388,4.13801832372033,4.13801057430401,4.13801069233842,4.13801018994204,4.13800923208077,4.13800863659946,4.1380081441954,4.13800784995718,4.13800773630536,4.1380078031331,4.13800805594761,4.13800848424773,4.13800909778576,4.13800992330241,4.13801014203223,4.13801323917311,4.13800726769708,4.13799726156331,4.13812465212504,4.13746623168534,4.1386229467019,4.14285792335621,4.10029152242417,4.24968008082972,5.7526844770021,5.66861593738179,5.69271351249119,5.6886996617922,5.68926883103303,5.68920056595594,5.68921550690217,5.68921966397536,5.68921695378903,5.68921707446113,5.68921623324814,5.68921573236706,5.68921534064245,5.68921510255134,5.68921501260068,5.68921506419636,5.68921526571436,5.68921562468911,5.6892160897369,5.68921688985608,5.68921728068197,5.68921745074461,5.68922564733102,5.68918545308004,5.68924985880329,5.68945486476155,5.68690539134916,5.69634011915817,5.68291980073091,5.6242989532867,4.86979698098503,4.81940963701699,4.82339646664564,4.82314066594268,4.82340438926151,4.82343980478893,4.82341433740434,4.82342729638906,4.82342462510469,4.82342482846122,4.82342448014142,4.82342422286072,4.82342403655025,4.82342392246401,4.82342388125205,4.82342389948881,4.82342399005985,4.82342417058066,4.82342439590103,4.82342469144725,4.8234255741353,4.82342366284541,4.82342810328514,4.82343889462497,4.82328423814117,4.82385154471971,4.82271104602023,4.81980347103718,4.84280796409524,4.77388103154378,3.29044896507121,3.30008268407111,3.30486528603411,3.30458144397525,3.30429982172386,3.30451824540109,3.3044868675435,3.30449626649835,3.30449639747411,3.30449642225167,3.30449638298777,3.3044962935361,3.30449622737279,3.30449619310689,3.30449619411277,3.30449618608299,3.3044962140764,3.30449627920454,3.30449640074714,3.3044963832464,3.30449684530433,3.30449758112985,3.30448898255767,3.30452479770736,3.30443629064432,3.30432292714732,3.30546028966249,3.30060176503211,3.3047102309754,3.31025395865895,2.06862681269079,2.04688632191752,2.04533599706669,2.04919961146467,2.04866535235017,2.04878849476035,2.04879250707428,2.04879352020527,2.04879468628606,2.04879478251212,2.04879482152788,2.04879481354112,2.0487948013758,2.04879479857413,2.04879486083674,2.04879483650711,2.04879483190774,2.04879484323344,2.04879490680336,2.0487949531057,2.04879450104844,2.04879731361981,2.04878974547194,2.04879329266684,2.04885469198648,2.04850001926309,2.04927383331696,2.04680605867715,2.05441084048772,1.99200906088031,1.41534341319644,1.50327920143211,1.49305800503125,1.49431567576883,1.49438276748961,1.4943626295697,1.49437325313643,1.49437334113003,1.49437373025573,1.4943738507898,1.49437386942831,1.49437387407028,1.49437387679772,1.49437392524979,1.49437400471343,1.49437391492466,1.49437392292878,1.49437395095136,1.4943738922061,1.49437423483052,1.49437348854416,1.49437381427737,1.49438366349272,1.4943363445332,1.49448561475708,1.4942056023093,1.49465139770383,1.49342694053848,1.47773101691453,1.57137844377441,1.29160463820627,1.33638271604969,1.33083091566809,1.32748411704813,1.32785219499173,1.32778805979828,1.3277803679817,1.32778343100972,1.32778305076363,1.32778329391026,1.32778343907368,1.32778345942305,1.32778346676905,1.32778347293253,1.32778331897555,1.32778335852373,1.32778341695301,1.32778340913342,1.32778339492546,1.32778341940571,1.32778343553313,1.32778357921282,1.32778416129958,1.32778437243454,1.32779849208208,1.32779744197873,1.3277974351074,1.3296407142302,1.31952940514785,1.3867584857175,1.08785653575877,1.0274204728797,1.03085576831178,1.03021522577965,1.02991662813909,1.02992359942667,1.02990975100265,1.02990818444532,1.02990804039192,1.02990800220845,1.02990806979127,1.02990808207199,1.02990809417427,1.02990807028748,1.02990801208852,1.02990807064868,1.02990807544597,1.02990806386399,1.02990806180624,1.02990807878868,1.02990815119589,1.02990830738298,1.02990975158277,1.02991314847038,1.02991520508379,1.0300722549439,1.02970588169167,1.03226841190309,1.03776956941528,1.01327805557164,0.609226773855703,0.625118983516615,0.620228872287621,0.620256964890657,0.620091332581093,0.620045759116556,0.620037290982343,0.620033832342993,0.620033151253384,0.620033058103616,0.620033075377006,0.620033108815981,0.620033132372918,0.620033143150571,0.620033128543301,0.620033139569192,0.620033143508821,0.620033132524254,0.620033122630674,0.620033113688156,0.620033178718095,0.620033457375119,0.620033504629921,0.620044289238319,0.620025368804125,0.620163986701022,0.620333685866253,0.619687883920405,0.625100449033704,0.641190433323568,0.412658401934158,0.407710352058964,0.40824663835531,0.407828188822487,0.407771850992006,0.407738774778184,0.407728703524202,0.4077261222478,0.407725192696668,0.407725075830804,0.407725079735432,0.407725117155564,0.407725145926119,0.407725162958672,0.4077251684672,0.407725173809286,0.40772517150194,0.407725158975556,0.407725143301739,0.407725134915278,0.407725087028228,0.407725743089493,0.407724527825748,0.407732689426146,0.407737603267698,0.407707424239142,0.407976447795074,0.407962626751343,0.40539273689471,0.405836062892377,0.239602668655272,0.241137254280769,0.240536121402729,0.240490469340694,0.240430929269696,0.240416270877374,0.240407638554652,0.24040584197073,0.240405076942077,0.240404969442244,0.240404986634759,0.240405028867552,0.24040506318338,0.240405084109053,0.240405093832052,0.240405097774491,0.240405093472525,0.240405079810656,0.240405052415513,0.240405057994117,0.240404925687542,0.240405392781002,0.24040558379133,0.240404998613591,0.240423855247564,0.240421584968322,0.24039095684133,0.240984314952634,0.241564815370732,0.242317222318142,0.124815208441892,0.124409876335525,0.124574445287685,0.124522939848504,0.124482156491101,0.124478389385566,0.124472513848752,0.124471331628388,0.124470880943856,0.124470810082746,0.12447083832726,0.124470879300663,0.124470911177741,0.124470931354626,0.124470941365174,0.124470944477708,0.124470939732056,0.124470928952014,0.124470899108948,0.124470895389438,0.124470847965138,0.124470781491032,0.124471864818386,0.12447115928999,0.124471536664778,0.124504678583193,0.124459487866703,0.124379425946667,0.124230919298219,0.124520640446694,0.0451553236681871,0.0448420230785489,0.0444522630387322,0.0445715564489002,0.0445317117700417,0.0445314197216684,0.0445290989231058,0.0445283283985934,0.044528113031454,0.0445280687762109,0.0445280762415946,0.0445280968200393,0.0445281120919205,0.0445281224568407,0.0445281275461749,0.0445281290335478,0.0445281257480219,0.0445281200883015,0.0445281058012642,0.0445280850278402,0.044528121959661,0.0445280178300945,0.0445281452809952,0.0445301619172003,0.0445266698195231,0.0445333261001863,0.0445675688486332,0.0446067465800917,0.0447916608885566,0.0440392092699845,0.00380882214920134,0.00639876358865295,0.00594436129001443,0.0059885393309714,0.00598532120877248,0.00598258048444973,0.00598218948501666,0.00598196569724633,0.0059818535457048,0.005981854695945,0.00598184882019675,0.00598185772273222,0.00598186212844462,0.00598186587522331,0.00598186767875936,0.00598186879176825,0.00598186854689015,0.00598186739850577,0.00598186896694321,0.00598185949207855,0.00598186934491482,0.00598196992554129,0.0059816782995593,0.00598238790250996,0.00598385751252196,0.00597986859660326,0.00597755797727273,0.00597292612855198,0.00573798230033463,0.00819197015188971,-0.0217094273848191,-0.0215003126362588,-0.0214319666861499,-0.0214587727990209,-0.0214584604412687,-0.0214593511456923,-0.0214608208709022,-0.0214610411684605,-0.0214613943401957,-0.0214614788615107,-0.0214615558626113,-0.0214615850699673,-0.0214616036465528,-0.0214616112462558,-0.0214616154867795,-0.0214616160605909,-0.0214616137752551,-0.021461608748301,-0.0214615965153247,-0.0214615703938079,-0.0214615516337633,-0.0214614192138474,-0.0214612441129794,-0.0214613092382249,-0.0214602816672739,-0.0214561700869784,-0.021469010266103,-0.0213441177916468,-0.0218522278138054,-0.0211876696816501,-0.0807846548084529,-0.0810029051373101,-0.0810052469352404,-0.0809929631358434,-0.0810052785324975,-0.0810039398340676,-0.0810067809214111,-0.0810070777188129,-0.0810077569826323,-0.0810079671603659,-0.0810081352633766,-0.0810082045897336,-0.0810082531898609,-0.08100827421642,-0.0810082844813917,-0.0810082861002247,-0.0810082792115585,-0.0810082617864764,-0.0810082290357096,-0.0810081610898153,-0.0810080462627489,-0.0810078543316843,-0.0810074174394035,-0.0810065682481419,-0.0810069035031471,-0.0809981346340928,-0.0810264896170486,-0.0809488014503039,-0.0809413522124367,-0.0811951538071374,-0.179406693445704,-0.179144098886633,-0.17926642688082,-0.179220670283633,-0.179242545107389,-0.179237400505896,-0.179241626927614,-0.179241590880821,-0.179242406969287,-0.17924258361252,-0.179242822386304,-0.179242898014287,-0.179242954776185,-0.179242985029554,-0.179242996541721,-0.179242998953816,-0.179242990413795,-0.179242968363195,-0.179242926158199,-0.179242849284955,-0.17924270626598,-0.179242454349347,-0.179242138399511,-0.179240909665629,-0.179241586106267,-0.179234292138294,-0.179237109320581,-0.179253100633876,-0.17921791442658,-0.179048867169598,-0.318158120571047,-0.31750712937899,-0.317772755904859,-0.317673929022849,-0.317713855733981,-0.317701565446794,-0.317707033555394,-0.317706178616096,-0.317707387154744,-0.317707357233147,-0.31770756699378,-0.317707674634708,-0.317707706059333,-0.317707740715407,-0.317707750902967,-0.317707753189226,-0.317707745679733,-0.317707725916487,-0.317707687133626,-0.317707617011777,-0.317707501042173,-0.317707252259757,-0.317707023836687,-0.317706089391855,-0.317705778704352,-0.317705081454404,-0.317699168631184,-0.3176899012297,-0.317782567340562,-0.317235891047677,-0.51129976226385,-0.509872943092819,-0.510398975421463,-0.510209137236241,-0.510277063153503,-0.510256756140296,-0.510266199550067,-0.510262966592722,-0.510264168737758,-0.510264518450736,-0.510264396772402,-0.510264576914757,-0.510264582871962,-0.510264608332084,-0.510264618528495,-0.510264619938526,-0.510264614972279,-0.510264600832723,-0.510264573512072,-0.510264520707692,-0.510264442162978,-0.510264268461702,-0.51026406557744,-0.510263667183807,-0.510262793893547,-0.510261911866696,-0.510267337466848,-0.510224637164079,-0.510448979956346,-0.509216298161712,-0.791684159664238,-0.789054181559493,-0.789989095903187,-0.789673030778893,-0.789778553308356,-0.789736245892273,-0.789749576532237,-0.789750591797796,-0.789747885066807,-0.789749582740453,-0.789749169378348,-0.789749293263352,-0.789749322785116,-0.789749327721338,-0.789749337360161,-0.789749338735917,-0.789749336703057,-0.789749329260542,-0.789749314533216,-0.789749283892825,-0.789749235740613,-0.789749145736694,-0.789748988326243,-0.78974877043668,-0.789748824474096,-0.789745270774229,-0.789761171111731,-0.789673020468617,-0.790131336752577,-0.78780724653019,-1.22359914214661,-1.21914540496026,-1.22060535139584,-1.2201312590874,-1.22029104523319,-1.2202839808051,-1.22025134318389,-1.22027291929844,-1.22026569087238,-1.22026710571157,-1.22026718047471,-1.22026707783693,-1.22026713534573,-1.22026713133531,-1.22026713561704,-1.22026713841349,-1.22026714009838,-1.22026714059275,-1.22026713868879,-1.22026713068065,-1.22026711181092,-1.22026707637469,-1.22026703230258,-1.22026672237444,-1.22026772663851,-1.22026132982336,-1.22029355621797,-1.22012603553067,-1.22095717050971,-1.21693158533945,-1.91758073958576,-1.91148750979426,-1.91313280040446,-1.91292669480416,-1.91259597987485,-1.91287434577073,-1.91276558830367,-1.91278829419201,-1.91278817520504,-1.91278640193643,-1.91278711926995,-1.91278695585362,-1.91278696137992,-1.91278696248519,-1.91278695973396,-1.91278696453466,-1.91278697356549,-1.91278698725582,-1.91278700508972,-1.91278702592547,-1.91278704856936,-1.9127870536678,-1.9127871513538,-1.91278666796623,-1.91278913329898,-1.91277641490139,-1.91283812887541,-1.91254389547329,-1.91390661386174,-1.90799224661667,-3.02829189165289,-3.02682667905574,-3.02373453020454,-3.02706423142692,-3.02549503091597,-3.02587418335948,-3.02585821849623,-3.02583281951287,-3.02584391489526,-3.02584131687478,-3.0258414419431,-3.02584146543075,-3.02584138296923,-3.02584136637189,-3.02584135755325,-3.02584136628905,-3.02584139325104,-3.02584143802129,-3.02584150135821,-3.02584158231175,-3.02584168956658,-3.02584177043034,-3.02584208683294,-3.02584136048347,-3.02584552496408,-3.02582689863561,-3.02591630814244,-3.02550276493681,-3.02714149383417,-3.0233928702182,-4.62183571217303,-4.65813580217213,-4.63708419206135,-4.64335442040313,-4.64284123389512,-4.6424932776436,-4.64266752975554,-4.64262624426522,-4.64262928318649,-4.64263029598243,-4.6426294020749,-4.64262935590235,-4.64262921354375,-4.64262912630014,-4.64262909902113,-4.64262911888446,-4.64262919081827,-4.64262931505597,-4.64262949446049,-4.6426297278764,-4.64263003631004,-4.64263033982851,-4.64263100730492,-4.64263022223785,-4.64263765264576,-4.64260131446366,-4.64276745161266,-4.64228692821208,-4.64164901960514,-4.66343064819158,-6.1635343007707,-6.26045845254178,-6.24703224517748,-6.24263545768489,-6.24537228595971,-6.24469198390303,-6.24475082422431,-6.24477082661854,-6.24475927150842,-6.24476080204137,-6.24476005048554,-6.24475948199879,-6.24475918955227,-6.24475897040037,-6.24475888948044,-6.2447589307758,-6.2447590966702,-6.24475939036085,-6.2447598182948,-6.24476038290527,-6.2447611164159,-6.24476189341465,-6.24476353512758,-6.24476135792697,-6.24477739775876,-6.24474209015918,-6.24462818657464,-6.24687707805487,-6.22926719120484,-6.32600554626096,-6.01150159870305,-5.9713986781744,-6.01430205672335,-6.00269680617308,-6.00380268353422,-6.00414016617256,-6.00396173295621,-6.00399764512973,-6.00399396148626,-6.00399107750116,-6.00399073885732,-6.0039897690007,-6.00398922004237,-6.00398886604143,-6.00398871997627,-6.00398878365465,-6.00398905542112,-6.00398954133549,-6.00399025241921,-6.00399119128437,-6.00399244512667,-6.00399363261154,-6.00399651400848,-6.00399664950473,-6.00398250640227,-6.00419320846233,-6.00278281639438,-6.00955550785036,-5.9883193362543,-5.99651526230178,-3.13490140491756,-2.92527058093946,-2.94699247086162,-2.95252709396221,-2.94954115058955,-2.95017004391,-2.950135885036,-2.95010771045995,-2.9501176332365,-2.9501139597905,-2.95011339806723,-2.95011274927902,-2.95011224778647,-2.95011196502681,-2.95011184930174,-2.95011191164557,-2.95011215060226,-2.95011257070843,-2.95011318691531,-2.95011398029642,-2.95011509531117,-2.95011631849123,-2.95011612899304,-2.95013510037057,-2.95003434726678,-2.95047129019836,-2.94940465924931,-2.94786541269841,-2.98273951926207,-2.76536120378906,-0.224176620685818,-0.318852636589069,-0.266619863630484,-0.277381480779641,-0.276902253266931,-0.276445244475498,-0.276628258762231,-0.276588765494516,-0.276592596954541,-0.276592841674245,-0.276592233505013,-0.2765922089846,-0.276592072260868,-0.276592013266671,-0.276591991003469,-0.27659201036568,-0.276592072244779,-0.27659217535214,-0.276592331109439,-0.276592533950748,-0.27659263237186,-0.276594273698686,-0.276587480102704,-0.276615324656515,-0.276562383336566,-0.276385891356692,-0.278727929793652,-0.266300524259981,-0.301456941139653,-0.329019403008218,0.156606158871292,-0.0303865465469678,-0.0240816460608188,-0.015965489471658,-0.0189968553346997,-0.0183988950281853,-0.0184496123929483,-0.0184609351560316,-0.0184545965377192,-0.0184565056093376,-0.0184561556311942,-0.0184562571627632,-0.0184562772845035,-0.0184562862243171,-0.0184562842198481,-0.0184562668684682,-0.0184562361687283,-0.0184561915507053,-0.0184561197955635,-0.0184561486586349,-0.0184555844448031,-0.018457243157634,-0.0184546066409913,-0.0184397396139049,-0.0185945744672971,-0.017851109385385,-0.019765507861045,-0.0215956178506684,0.0237934490138238,-0.193526434845152,1.186526440116,1.33689997642566,1.28617226200218,1.29527430239297,1.29475088133822,1.29451678208867,1.29462226197453,1.29459711446429,1.29460224506745,1.29460107107021,1.29460071432437,1.29460038223256,1.29460009515363,1.29459992339923,1.2945998454677,1.29459986773129,1.29459999054398,1.29460020342097,1.29460054708469,1.29460081758783,1.2946013269427,1.29460270942419,1.29459228403164,1.29463630161189,1.29452249489741,1.29438704841988,1.29696846009366,1.28456040710625,1.30643601833479,1.40246107723573,4.57552364388185,4.70974502620855,4.70645916371783,4.70166035173593,4.7033704981872,4.70303143121641,4.70309802054471,4.70308896562556,4.70308907265897,4.70308851491971,4.70308742446099,4.70308674556443,4.70308618495264,4.70308584976001,4.70308572023431,4.70308579627268,4.70308608414947,4.7030865719457,4.70308727022871,4.70308821069696,4.70308845824432,4.70309197330931,4.70308521132439,4.70307373132891,4.70321837792896,4.70247083411463,4.70378940107065,4.7085398173155,4.66042320896504,4.83000156650569,6.55755032011946,6.46362061884894,6.49088289858286,6.48631479514503,6.48698590413068,6.48690134222892,6.48691814137855,6.48692312603151,6.48692002750176,6.48692015166331,6.48691919353086,6.48691862029519,6.48691817195252,6.48691789964511,6.48691779681255,6.48691785594709,6.48691808660233,6.48691849752377,6.48691902985856,6.4869199436906,6.48692039376073,6.48692058168699,6.48692989521274,6.4868841667743,6.48695760040251,6.48718713727075,6.48430193997414,6.4950244545992,6.47948285802212,6.41464381910592,5.57181036087654,5.51374246608546,5.51847157180889,5.51807709972095,5.51838910543463,5.5184341736663,5.51840479559491,5.51841942554747,5.51841642564884,5.51841665414786,5.51841625133855,5.51841595631176,5.51841574182353,5.5184156104938,5.51841556305395,5.51841558427354,5.51841568868868,5.5184158962791,5.51841615587082,5.5184164956471,5.51841750476495,5.51841533295904,5.51842039834369,5.51843247622198,5.5182571326067,5.51890204344233,5.51758863289114,5.51437155997653,5.54031427909993,5.46139432403201,3.77234132112907,3.78290083543778,3.78861277754344,3.78830898116569,3.78797350619839,3.78822010369615,3.78818498999931,3.7881957209539,3.78819582629222,3.78819586645201,3.78819581810733,3.78819571483658,3.78819563860616,3.7881955990717,3.78819559976395,3.78819559037374,3.78819562261416,3.78819569789819,3.78819583761162,3.78819581967942,3.7881963482133,3.78819717762565,3.78818743051429,3.78822812012039,3.78812668655024,3.78800163300401,3.7892831156618,3.78374111097307,3.78861074657415,3.79458170747768,2.3743231205674,2.34885086338225,2.34700992032863,2.35140461333283,2.35080904933244,2.35095102821281,2.35095492706417,2.35095632167176,2.35095763162972,2.35095774382406,2.35095778891553,2.35095777914086,2.3509577649576,2.35095776134564,2.35095783220902,2.35095780508815,2.35095779993866,2.35095781325596,2.35095788617736,2.35095793855608,2.35095742919424,2.35096062401535,2.350951980447,2.35095628488167,2.35102489809768,2.35062337493917,2.35150179845426,2.34868479759771,2.35730427169504,2.28599702480871,1.62579074369756,1.72532074794942,1.71385546325192,1.7153451869576,1.7154060606795,1.71538655013027,1.71539842682234,1.7153985524878,1.71539900350671,1.71539914002398,1.71539916302645,1.71539916625998,1.71539916935318,1.71539922512117,1.71539931733855,1.71539921568922,1.71539922387823,1.71539925619052,1.71539918987502,1.71539958143316,1.71539872958615,1.71539913368215,1.71541020070716,1.71535661451145,1.71552673533245,1.71520258550347,1.71573114096584,1.71423390795216,1.69645757870351,1.80525403427008,1.45644232677163,1.50893054163763,1.50303452748518,1.49919956584336,1.4996156417257,1.49954591356129,1.4995370030341,1.49954053469209,1.49954011100785,1.49954038813505,1.49954055100181,1.49954057406553,1.49954058255437,1.49954058963467,1.49954041723101,1.49954046031476,1.49954052639793,1.49954051738323,1.49954050202482,1.49954052958671,1.49954054725094,1.49954070760955,1.49954136565639,1.49954164540514,1.49955705536272,1.49955838680535,1.49954840144203,1.50163032587103,1.4903406207468,1.56513081233218,1.22835642141153,1.16068171651381,1.16431154893857,1.16363327115961,1.16329092313982,1.16329930030099,1.16328370645986,1.16328195386619,1.16328179635448,1.16328175423306,1.16328183032205,1.16328184445985,1.16328185795212,1.16328183100587,1.16328176523175,1.16328183068735,1.1632818366227,1.16328182340873,1.16328182141238,1.16328184028482,1.16328192162469,1.16328210277535,1.16328369656322,1.16328764474055,1.1632896719671,1.16346552428001,1.16306056483264,1.16591467560764,1.1720238741432,1.14410483658071,0.688556280426636,0.706379720246317,0.700885484329398,0.700905356544356,0.700719290694157,0.700667728278338,0.700658199565315,0.700654292791835,0.700653528927495,0.70065342419134,0.700653443590568,0.70065348098664,0.700653507367908,0.700653519142565,0.700653502627724,0.700653515162756,0.700653519595243,0.700653507235155,0.700653496166169,0.700653486749038,0.700653558333869,0.700653879454376,0.700653931272443,0.700666015385347,0.700645277174524,0.700800729552059,0.700990143465365,0.700299267921462,0.706584204368196,0.724633143014971,0.466672797698097,0.461083586638973,0.461684950744418,0.46121372783747,0.461149360398722,0.461111851413651,0.461100502310463,0.461097584292006,0.461096534764525,0.461096403421593,0.4610964077555,0.461096449856884,0.461096482232594,0.461096501338196,0.461096507413964,0.461096513438108,0.461096510876729,0.461096496846667,0.461096479118968,0.461096470139282,0.461096416682601,0.461097151593697,0.461095814027395,0.461104971416298,0.461110330643244,0.461078068379477,0.46138133922169,0.461328925954011,0.458434039590621,0.458994701700981,0.271434781547395,0.273157891535015,0.272463481063932,0.272410119857333,0.27234333621057,0.272326605040723,0.272316820866729,0.27231479212517,0.272313925031214,0.272313802398281,0.272313821236942,0.27231386847927,0.272313906969147,0.272313930451628,0.272313941341599,0.272313945752511,0.272313940897472,0.272313925563183,0.272313894796796,0.272313900894949,0.272313753761025,0.27231427859316,0.272314485205674,0.272313928194607,0.272335070602669,0.272331415172702,0.27230325837017,0.272976644880181,0.273631438951697,0.274456021717015,0.141858895275372,0.141466329312472,0.141671315448101,0.141609748903848,0.141563229886531,0.141559041976207,0.141552362984691,0.14155102013286,0.141550512668591,0.141550433027592,0.141550465664486,0.141550512401852,0.141550548660026,0.141550571589717,0.141550582962094,0.141550586491975,0.141550581108667,0.141550568838953,0.141550535122618,0.141550530526467,0.14155047621306,0.141550406538342,0.141551617917758,0.141550794075854,0.141551579733886,0.14158841238535,0.141536237926077,0.141449150383165,0.141267133899032,0.141691867512956,0.0515213069924032,0.0510051763087276,0.0505583849539182,0.050696765637521,0.0506511158224644,0.0506506374943574,0.0506480110068695,0.0506471196220806,0.050646872868313,0.050646822545656,0.0506468313719592,0.0506468552111822,0.0506468728960403,0.0506468848755797,0.0506468907621519,0.0506468924654396,0.0506468886833978,0.0506468820807589,0.0506468655586404,0.0506468418228319,0.050646881927732,0.0506467630733779,0.0506469239245198,0.0506491521921472,0.0506452392046514,0.0506531481266811,0.0506914671651897,0.0507357278705143,0.0509623543565381,0.049931159925987,0.00422998334309756,0.00734547512841892,0.00681993316009255,0.0068679216280122,0.00686499752572174,0.0068617622995154,0.00686132011653857,0.00686107083862478,0.00686094403052812,0.00686094688935395,0.00686094116171977,0.00686095181583809,0.00686095716843508,0.00686096161608581,0.00686096375870428,0.006860965041553,0.00686096472566646,0.00686096333771247,0.0068609648579441,0.00686095387308121,0.00686096536369483,0.00686107519845551,0.00686075114015012,0.00686156779675569,0.00686318794646655,0.00685863805653647,0.00685682508287743,0.00684803036161159,0.00658304421449581,0.00953438299741536,-0.0243513972829049,-0.0242491001663777,-0.024151018258868,-0.0241832793492654,-0.0241830420782486,-0.0241839842937164,-0.0241856840768734,-0.0241859406762469,-0.0241863472135535,-0.0241864471308765,-0.0241865365023537,-0.0241865708766187,-0.0241865926520124,-0.024186601654066,-0.0241866066408504,-0.0241866073426335,-0.0241866046854734,-0.0241865987667581,-0.0241865844383446,-0.0241865542618411,-0.0241865310411201,-0.0241863785775889,-0.0241861790460072,-0.0241862453618488,-0.0241850295881724,-0.024180507365138,-0.0241949996196234,-0.0240503192349503,-0.0246410737496949,-0.0239920870152627,-0.0918820656320036,-0.0920939729830402,-0.0921066915434461,-0.092090733398862,-0.0921049990220134,-0.0921034699257141,-0.0921066929574272,-0.0921070375383122,-0.0921078085871861,-0.0921080490480439,-0.092108240846236,-0.0921083201348999,-0.0921083755590163,-0.0921083996337066,-0.0921084113384353,-0.092108413152648,-0.0921084052127264,-0.0921083851883909,-0.0921083474910626,-0.0921082695655176,-0.0921081378930882,-0.0921079172693541,-0.0921074155737648,-0.0921064544724334,-0.092106818964743,-0.0920967590236277,-0.092129366314751,-0.0920422957009086,-0.0920137585951425,-0.0922929312901121,-0.203300288595076,-0.202999046732829,-0.203137183997643,-0.203085685610179,-0.203110288681006,-0.20310447261136,-0.20310922690516,-0.203109184664732,-0.203110104892099,-0.203110302478471,-0.203110571216845,-0.203110656674932,-0.203110720474393,-0.203110754604843,-0.203110767593341,-0.20311077034167,-0.203110760776809,-0.20311073604066,-0.203110688692704,-0.203110602439092,-0.20311044193745,-0.203110159975159,-0.203109806784252,-0.203108419806216,-0.203109222839827,-0.203101013735924,-0.203103562255785,-0.203124289138863,-0.203090837720564,-0.202887231045102,-0.35978011833648,-0.359040629418202,-0.359341214947229,-0.359229491585853,-0.359274569915639,-0.359260720016111,-0.359266881139903,-0.359265903219169,-0.359267263790656,-0.359267232373893,-0.359267466154264,-0.359267587726475,-0.359267622936542,-0.359267661865541,-0.359267673325746,-0.359267675884189,-0.359267667433905,-0.359267645200111,-0.359267601574041,-0.35926752273155,-0.359267392308051,-0.359267112112307,-0.359266857360261,-0.359265805388861,-0.359265431255856,-0.359264795586762,-0.359258033776993,-0.35924575411447,-0.359352417939029,-0.358731132553364,-0.577597341242513,-0.575986948647296,-0.576580467373662,-0.576366401607381,-0.576442844352597,-0.576419899656547,-0.576430564940855,-0.576426949008489,-0.576428275329565,-0.57642867758218,-0.576428538858091,-0.576428741041522,-0.576428747891159,-0.576428776400893,-0.576428787867756,-0.576428789461414,-0.576428783910077,-0.576428768079816,-0.576428737480375,-0.576428678299719,-0.576428590475932,-0.576428395681044,-0.576428167453982,-0.57642772900566,-0.576426735575486,-0.576425685743544,-0.576432196227496,-0.576383833198059,-0.576637614560854,-0.575245483340074,-0.893924249009421,-0.890957869000974,-0.892011342787156,-0.891655599895994,-0.891774711482601,-0.891727204901917,-0.891741913190779,-0.891743195297042,-0.891740121031763,-0.891742027875313,-0.891741566270883,-0.89174170421076,-0.891741737568496,-0.891741743067442,-0.891741753881165,-0.891741755435201,-0.891741753171161,-0.891741744845568,-0.891741728363721,-0.89174169401157,-0.891741639984284,-0.891741539488373,-0.891741361890199,-0.891741115768613,-0.891741200668958,-0.89173714055731,-0.891755067650123,-0.89165553066463,-0.892172755106559,-0.889551113997021,-1.38127368291766,-1.37626054456708,-1.37790205338119,-1.37736898370563,-1.37754618043296,-1.37754017682373,-1.37750293416087,-1.37752720163338,-1.3775191219528,-1.37752069294193,-1.3775207807087,-1.37752066497554,-1.37752072939726,-1.37752072489387,-1.37752072968261,-1.37752073284348,-1.37752073478667,-1.3775207354258,-1.37752073340882,-1.37752072460973,-1.37752070357168,-1.37752066403445,-1.37752061623678,-1.37752026288298,-1.37752140490552,-1.3775141861808,-1.37755061383687,-1.3773614986793,-1.37829887831102,-1.3737638085594,-2.1641173470489,-2.15728903762143,-2.15911986052233,-2.15890965890067,-2.1585285764765,-2.15884237271746,-2.15872073501947,-2.15874595123935,-2.15874588334959,-2.1587438857211,-2.15874468930498,-2.15874450626197,-2.15874451213267,-2.1587445132716,-2.1587445101456,-2.1587445155786,-2.15874452583835,-2.15874454141298,-2.15874456171834,-2.15874458548805,-2.15874461146446,-2.15874461732231,-2.15874472904318,-2.15874418386457,-2.15874696336376,-2.15873263756192,-2.1588020705306,-2.15847122306358,-2.16000237626553,-2.15337063861297,-3.41584087685991,-3.41438840608501,-3.41078701618152,-3.41455707030288,-3.41280004903339,-3.41322133847914,-3.41320455948118,-3.41317593370932,-3.41318836249496,-3.41318545719074,-3.41318559425178,-3.41318561997343,-3.41318552687312,-3.41318550792077,-3.41318549789516,-3.4131855077979,-3.413185538371,-3.41318558915473,-3.41318566101483,-3.41318575285616,-3.41318587460434,-3.4131859667008,-3.4131863238864,-3.41318550947977,-3.41319019797439,-3.41316919889793,-3.41327014977978,-3.4128037728759,-3.41464176552672,-3.41053245092756,-5.20736637312272,-5.24867939537156,-5.22503566112136,-5.23200723140084,-5.23145184205357,-5.23105910268537,-5.23125423484041,-5.23120811485455,-5.23121148214744,-5.23121261700619,-5.23121161201045,-5.23121155826861,-5.2312113969765,-5.23121129824656,-5.23121126729162,-5.23121128976394,-5.23121137119806,-5.23121151186336,-5.2312117150072,-5.23121197933898,-5.23121232850078,-5.23121267265729,-5.23121342808395,-5.23121253650621,-5.2312209610192,-5.23117995177643,-5.23136583375763,-5.23084008458453,-5.23001430525657,-5.25506541167849,-6.93026683699588,-7.03833957259217,-7.02367163020591,-7.01868953807337,-7.02175310802247,-7.02099384534764,-7.02105916099717,-7.0210816055953,-7.02106865419255,-7.02107036450699,-7.02106951507089,-7.0210688746181,-7.02106854398445,-7.02106829654004,-7.02106820508479,-7.02106825158017,-7.02106843872541,-7.02106877012256,-7.02106925304544,-7.02106989024928,-7.02107071824109,-7.0210715943452,-7.02107344959015,-7.0210710073387,-7.02108887711529,-7.02105078819599,-7.02091325952293,-7.02347952294227,-7.00361703332004,-7.11189449819607,-6.74129036396209,-6.69486545256211,-6.74286733667982,-6.72992934721597,-6.73115663455929,-6.73153504786716,-6.73133535662547,-6.73137558013083,-6.73137141972511,-6.73136819496009,-6.73136781106448,-6.73136672118968,-6.7313661045152,-6.73136570665972,-6.73136554252949,-6.7313656140803,-6.73136591946119,-6.73136646548047,-6.73136726455023,-6.73136831946213,-6.73136972873529,-6.73137106405718,-6.73137428503869,-6.73137456492376,-6.73135804586084,-6.73159666280831,-6.73001305626131,-6.73756577652102,-6.71412815517335,-6.7214850391231,-3.50705780738015,-3.27394701161749,-3.29803713178724,-3.30423540258265,-3.30089798573147,-3.30160185401607,-3.30156317974016,-3.30153179803088,-3.30154288616487,-3.30153876259711,-3.30153813761573,-3.30153740948539,-3.30153684752001,-3.30153653068007,-3.30153640101024,-3.30153647092434,-3.30153673878396,-3.30153720966248,-3.30153790036737,-3.30153878969631,-3.30154003824393,-3.30154141836112,-3.30154116264569,-3.30156255791623,-3.30144962200182,-3.30193656517853,-3.30076080449442,-3.29896323721039,-3.33807873905508,-3.09605863151077,-0.25178099013591,-0.357355295844775,-0.299062520450693,-0.311093536966213,-0.310549561117046,-0.310040849153647,-0.310245313380117,-0.310200998326371,-0.310205368600295,-0.310205623655899,-0.310204943302035,-0.310204916553158,-0.31020476322185,-0.310204697189074,-0.310204672299706,-0.310204694043072,-0.310204763429001,-0.310204879018375,-0.310205053499916,-0.310205281485604,-0.310205389023028,-0.310207235809916,-0.310199627487572,-0.310230649785498,-0.310172449922286,-0.309970896577244,-0.312597430630773,-0.298727446533474,-0.337820621890106,-0.368641857468957,0.175625978502676,-0.0334222739495362,-0.0262204790248709,-0.0171956100714097,-0.0205814523400017,-0.019910846441066,-0.0199687886858551,-0.0199811059549734,-0.0199740309147063,-0.0199761830620853,-0.0199757869487034,-0.0199759011623625,-0.0199759239345932,-0.0199759340022758,-0.019975931806066,-0.019975912381977,-0.0199758779556218,-0.0199758279506147,-0.0199757472774348,-0.0199757799148971,-0.0199751480564902,-0.0199769947700911,-0.0199741073859483,-0.019957231625443,-0.0201308893876936,-0.0193003002957833,-0.0214315711584551,-0.0234975870943942,0.0271624674819399,-0.215586503553618,1.32749324230549,1.49474601037938,1.43812244848912,1.44833796891549,1.44773511900671,1.44747868069745,1.44759603745889,1.44756764786561,1.44757348605213,1.44757216351733,1.44757176221134,1.44757139109992,1.44757106963056,1.44757087725445,1.44757078996308,1.44757081483412,1.44757095229889,1.4475711905519,1.44757157521607,1.44757187855569,1.44757244440088,1.44757400546022,1.44756230866682,1.44761151372615,1.44748466599927,1.44733182619319,1.4502175015323,1.43635319117084,1.46091150013204,1.56741051321991,5.12364783397278,5.27422030758389,5.27021642092258,5.26491940135888,5.26682059266399,5.26643916669271,5.26651556661091,5.26650520418152,5.26650529809163,5.26650468524272,5.26650346266506,5.26650270044909,5.26650207172508,5.26650169565152,5.26650155028998,5.26650163552377,5.26650195839825,5.26650250558728,5.26650328843823,5.26650434366408,5.26650461990233,5.26650855145342,5.26650100206955,5.26648804853956,5.26664988875995,5.26581350513841,5.26729388302586,5.2725537173782,5.21891997721484,5.40862837046617,7.36144355336482,7.25778116179957,7.28819157171726,7.28307006748111,7.28384429844437,7.28374311565763,7.28376173266804,7.2837675519632,7.28376406762109,7.28376419442685,7.28376311933029,7.28376247377949,7.28376196880051,7.28376166221202,7.28376154646176,7.28376161314608,7.28376187296443,7.28376233588621,7.28376293558381,7.2837639631129,7.28376447261107,7.28376467826249,7.28377510514938,7.28372385438796,7.2838063149568,7.28406005908947,7.28084091853594,7.29284781381383,7.275170717124,7.20424390864212,6.27434263983863,6.20856671128346,6.21404880814627,6.21351022487573,6.21387095707829,6.2139259512211,6.21389267705951,6.21390896715149,6.21390563925545,6.21390589325946,6.21390543564648,6.21390510257173,6.2139048598394,6.21390471133042,6.21390465765735,6.21390468189467,6.21390480021364,6.21390503495456,6.2139053289455,6.21390571313756,6.21390684868372,6.2139044169785,6.21391010737492,6.21392345413753,6.21372751414754,6.21444982620544,6.2129628323954,6.20944292289981,6.23830288500942,6.1493836053133,4.25510578885774,4.26656269628775,4.27321605417732,4.27289341215712,4.27250337404491,4.27277795270249,4.27273911471876,4.27275118248143,4.27275126055048,4.27275131577005,4.27275125861343,4.27275114169332,4.27275105502548,4.27275101009715,4.27275101041536,4.2727509996383,4.27275103616732,4.27275112166723,4.27275127963525,4.272751261303,4.27275185661631,4.27275277904014,4.27274188842041,4.27278743793394,4.27267305535693,4.27253661757238,4.27396100259577,4.26773651131565,4.2733767832575,4.27975274711035,2.68074277069358,2.65150622083176,2.64937091600098,2.65429615218149,2.65363978862746,2.65380072953808,2.65380450207381,2.65380627893999,2.65380773420188,2.653807862602,2.65380791283954,2.65380790165676,2.65380788545445,2.65380788117017,2.65380796058161,2.65380793075354,2.65380792499513,2.65380794041911,2.65380802255716,2.6538080813647,2.65380751442455,2.65381109060374,2.65380137169738,2.65380645131785,2.65388217684624,2.65343403756205,2.65441683083695,2.65124997334754,2.66088390851891,2.58066393441478,1.83680460915399,1.94789437069914,1.93519116050084,1.93691614314786,1.93697053692786,1.93695164824315,1.93696479791779,1.9369649608366,1.93696547331637,1.93696562517552,1.93696565051482,1.93696565524861,1.93696565857252,1.93696572174408,1.9369658268461,1.93696571332556,1.93696572153249,1.9369657583228,1.93696568432,1.93696612415436,1.93696516501502,1.93696565226577,1.93697792517549,1.93691810065253,1.93710905496039,1.93674046939149,1.93735296089189,1.93557770227119,1.91572663351027,2.03975740846788]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1108.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1108.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1108.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1108_field1":[0,17.7170803674583,18.0291153670703,18.3765124244289,18.4606842907269,18.4798971311415,18.4824269710445,18.4808366463638,18.4790808755261,18.4778575408232,18.4771213597566,18.4767082693401,18.4764858299275,18.476371234039,18.4763186209957,18.4763072052467,18.4763312930315,18.4764007501801,18.47654380053,18.4768163687722,18.477317665565,18.4782026524208,18.4796565216252,18.481705765582,18.4829422063154,18.4796450206718,18.4464931150952,18.2523483860046,18.5078082046449,0,12.4193057960918,13.2658770602414,14.2331319497664,14.4743380450743,14.5880316413941,14.6252931503002,14.6368863565022,14.6404595708045,14.641360111515,14.6416008066809,14.6417236039093,14.6418270820787,14.641923721732,14.6419957333597,14.6420236000307,14.6419953439609,14.6419127040622,14.6417871401745,14.6416378891513,14.6414994340077,14.6414166523658,14.6414616017348,14.6415820533275,14.6414332710448,14.6385518572759,14.6221978910253,14.5911520082882,14.1871141561005,14.1095874629675,12.4193057961443,11.5733053259914,11.9953372386742,12.2338133404073,12.4238667976745,12.4916623879719,12.528157028294,12.5425261182618,12.5485832389546,12.5510776534215,12.5519996017895,12.5523120882937,12.5523833853199,12.5523645856596,12.5523148460147,12.552259625687,12.552212907603,12.5521793064704,12.5521558606171,12.552134426032,12.5521040218387,12.5520299232127,12.5518508821607,12.5512196929784,12.5490879466861,12.5432325318379,12.5125845255662,12.4872730931484,12.2152798943963,11.8221612451557,11.5733053301863,10.7133198139935,10.7700266579372,10.8741021581774,10.9375990935692,10.9854639520702,11.007434662895,11.0201715977778,11.0260636398815,11.0288455990385,11.0300533927286,11.0305125336639,11.0306397551488,11.0306313448135,11.0305867606107,11.0305569223626,11.0305629955379,11.0306081315858,11.0306814670964,11.030754183039,11.0307800939722,11.0306455543627,11.0301663228336,11.0287465032842,11.0249989038004,11.0180485188835,10.9943855878479,10.9559853361768,10.9262636430677,10.852064150681,10.7133198150583,10.0173970594328,10.0268770603429,10.0620456678259,10.0917169041737,10.1115700065847,10.1259499294898,10.1336861416568,10.138378185845,10.1408783631224,10.1422080320516,10.1428645732396,10.1431512929881,10.1432493042694,10.1432607632703,10.1432478256435,10.1432436748455,10.1432562270342,10.1432738072097,10.1432585252922,10.1431499245541,10.1427984014024,10.1420447278471,10.1403270506386,10.1368226709161,10.1299891150201,10.1191540636681,10.0932551852413,10.0563248337246,10.0385061690552,10.0173970600251,9.57972344310847,9.57493349087269,9.58554990309467,9.59750500033599,9.60800053837395,9.61534684773504,9.62062129102082,9.62379962903667,9.62585459257901,9.62708485817505,9.62781936949753,9.62823890747763,9.62846963787203,9.62858989312517,9.62864360255066,9.62865501729551,9.62863173032114,9.62856320107685,9.62841492995932,9.62815254906726,9.62762498974456,9.6267740149673,9.62513897532234,9.62270078423907,9.61782317828945,9.61189433968658,9.60848376453149,9.59984174934213,9.58455481412911,9.5797234434684,9.3645141178908,9.36301424781831,9.37094083068802,9.37704901395019,9.38334574530683,9.38841193875688,9.39200445797424,9.39448927482103,9.39612619438607,9.39725862783515,9.39803152602721,9.39856867642473,9.39894061030932,9.39918847393154,9.39932714277839,9.39935381360888,9.3992681084384,9.39908138765761,9.39877940721639,9.39836147073805,9.39773242941721,9.39685165062639,9.39544282001288,9.39337018515631,9.39034614404521,9.38454637379318,9.3781251045909,9.37284890875568,9.36715018660677,9.36451411808639,9.29417890759042,9.29187494873388,9.29844286822266,9.30331186615832,9.30801599525781,9.31204097583628,9.31503810361315,9.31707160517903,9.31850751502884,9.31954289900266,9.32032103690873,9.3209140350878,9.32137194766669,9.32170655219784,9.32190622917842,9.32195112750846,9.32182883109046,9.32156333120382,9.32117593028269,9.32067086531408,9.32001341249749,9.31914210392363,9.31803678402745,9.31625340934052,9.31407320517569,9.3111647657528,9.30734387997712,9.30185822465548,9.29464226468247,9.29417890763956,9.32009880606886,9.31816478836556,9.32369953238947,9.3276523610246,9.33165801501301,9.33498418650043,9.33756330549273,9.33938382934126,9.34068426475258,9.34166179816988,9.34240818508128,9.34298952514487,9.34344191043227,9.34378002956024,9.34398547564756,9.34403531810228,9.34392243800399,9.343659944552,9.343275358746,9.34276922932541,9.3421390079931,9.34126166490824,9.34022494257878,9.33869133134442,9.33641647259778,9.33316894764005,9.32988297074751,9.32592820167359,9.31962545413515,9.32009880589825,9.47129588683612,9.466732057589,9.47226732767763,9.47486306347174,9.47768938057677,9.48005528304238,9.48194379862348,9.4833705512888,9.48443721969142,9.48524015737404,9.4858456254598,9.486299582107,9.48663181979075,9.4868629013339,9.48699808975343,9.48703041850685,9.48696045039246,9.48679240694153,9.48653095831135,9.48614734420912,9.48566526052294,9.48498573276027,9.48412348592024,9.483012602873,9.48175484510582,9.47976270419256,9.47704453493613,9.47382230099504,9.46787668123984,9.47129588666565,9.83611909478537,9.83008697299574,9.83604213238946,9.83757418994743,9.83930273581388,9.84052842192571,9.84156912162049,9.84243425743753,9.84314889448359,9.84370692283605,9.84410620484426,9.84437477072851,9.8445409192184,9.84463493029646,9.84468254233453,9.84469950979631,9.84468647057906,9.84462838622097,9.84451690962775,9.84430514477475,9.84399432971003,9.84354824567164,9.84299159855063,9.84220523354935,9.84130534234657,9.84021893859208,9.83866446271156,9.83655735269594,9.83125028230993,9.83611909443084,10.5358751671521,10.5309706786931,10.5388424596843,10.5398664430948,10.541070965368,10.5417326087338,10.5423270007794,10.5428062864558,10.5431919043078,10.5435044445065,10.543729559824,10.543876270723,10.5439571541062,10.5439965966751,10.5440153138083,10.5440274025955,10.5440391143079,10.5440339101904,10.5440022728588,10.5439182948627,10.5437761189812,10.5435523910285,10.543304072287,10.5430154950469,10.5426320372533,10.5420222277884,10.5408663422896,10.5390446824894,10.531867903231,10.5358751668968,11.71620942326,11.711115867871,11.7223236717234,11.7231964468138,11.7242291193247,11.7242552604542,11.7243361384349,11.7244669162573,11.7245667790668,11.7246289233041,11.7246434305258,11.7246335575893,11.7246141511678,11.7245958830901,11.7245887126132,11.7245926496694,11.7246074377702,11.7246262780403,11.7246433806453,11.7246492228031,11.7246509954721,11.7246337079862,11.7245936940721,11.724522554375,11.724405565882,11.7240770351543,11.7230992045774,11.7212729491495,11.7116560780237,11.7162094231264,13.5814965537862,13.5739382184268,13.5897850969097,13.59016729379,13.5917115640788,13.5919544433664,13.5918106083287,13.5915643934274,13.591336851145,13.5911721699941,13.5910511700738,13.5909519787001,13.5908797908888,13.5908325419803,13.5908083325112,13.5908109795935,13.5908446250958,13.5909171769112,13.5910406636871,13.5912155320138,13.5914433944771,13.5917142299087,13.5920174806452,13.5922981758187,13.5924925328507,13.5924774193843,13.5915477735716,13.5898510195341,13.5764515644642,13.5814965535982,16.4727299885316,16.4570264380796,16.4796924526141,16.4781596380736,16.4779081398672,16.4770686084852,16.4766026316425,16.4760599600128,16.4754265976658,16.4747532577993,16.4741855388226,16.4737545491257,16.4734521836854,16.4732734528931,16.4731879129405,16.4731739506639,16.4732221867147,16.4733344685549,16.4735329086078,16.4738489072033,16.4743054162261,16.474894584933,16.4755724016817,16.4762931628389,16.4769315230827,16.477346702828,16.4768070164809,16.4754129543423,16.458178274033,16.472729988193,20.9887355683488,20.950278888013,20.9800012533995,20.9804033856691,20.9831261879368,20.9826048315591,20.9818123516667,20.9809541461159,20.9803530754591,20.9798041152325,20.9792491718196,20.9787887243041,20.9784141115198,20.9781451249148,20.9779929801366,20.9779644632349,20.9780795715916,20.978354759414,20.9787902816495,20.9793711220789,20.9800954529675,20.980978881884,20.9820357579947,20.9831623342422,20.984303104588,20.9851272963233,20.9844979066248,20.9844397801341,20.9593303991722,20.9887355680564,28.153858217177,28.0646852715059,28.0960766298275,28.0889851614987,28.0912352823926,28.0919394964049,28.0918684768719,28.0906414575713,28.0891038687229,28.088084003335,28.0873259370919,28.0867984765637,28.0864448292238,28.0862125063387,28.0860993586141,28.0860893856127,28.0861706060232,28.0863419558986,28.0866280506974,28.0870447539232,28.0875701776454,28.088192587148,28.0889573607249,28.0899213963427,28.0906440690052,28.0912669234785,28.0892061287894,28.0890185209857,28.0602690037895,28.1538582162268,39.4950155952656,39.3156974189801,39.3746503707039,39.3956905786483,39.4074759615945,39.4118452924761,39.4137574535869,39.4163408790821,39.4175623914961,39.4185000336233,39.4194262603465,39.4201230821397,39.4205218280688,39.4205519315893,39.4203567220277,39.4202000078436,39.4203093090929,39.4206502276353,39.4209369748701,39.4209631963207,39.4208022336276,39.4206904233534,39.4208396820841,39.4213348748459,39.4219083700919,39.4203503941692,39.4145648770168,39.4078809210285,39.3534490898779,39.4950155939978,56.3201028032174,56.1695360130158,56.1778676184427,56.2029418066201,56.2108706548268,56.2151871997102,56.2065143671724,56.1999961592549,56.1977698569685,56.1981241693468,56.2005932312519,56.2039490681802,56.2074946272231,56.2106706013102,56.2129824402085,56.2140274307782,56.2137556851157,56.2128168973203,56.2117701578224,56.2106222237918,56.2096354662376,56.2095963417452,56.211251902488,56.2145299191449,56.2184302447019,56.2214254800893,56.2073909782525,56.1932124473716,56.1100191801046,56.3201028029023,76.703101314447,77.4024869060419,77.5484593925105,77.6223895097289,77.6033158179156,77.5990831889901,77.5899579281257,77.5695589213836,77.5511202136023,77.5367551737701,77.5278747359026,77.5240910027874,77.5240434684,77.5266516189968,77.5310976537686,77.5367060216965,77.5422047488283,77.5460817967474,77.5495126875413,77.5566713418409,77.5709958040737,77.5936878458514,77.6248760465116,77.6639607754674,77.7061241243963,77.7499527262079,77.775479320821,77.722675361505,77.5643190568813,76.7031013207654,92.2753041271353,92.8870043339625,92.8634406904186,92.9118454808615,92.832075261969,92.6567576183315,92.4964489474178,92.3652678412391,92.2661527048982,92.1944973827104,92.1425165963965,92.1051641010763,92.0786684881803,92.0611472548497,92.0523579091527,92.052488787675,92.0610384006596,92.0783243819899,92.1058478457497,92.1448079533062,92.1971996716477,92.266858877181,92.3578871869537,92.4761430221036,92.6235108456003,92.7933087620304,93.0072405356692,93.1340430302564,93.1022948809644,92.2753041407717,96.7641776289234,96.5333155912326,96.2044379234461,95.9329813056771,95.6919597469561,95.4812851609743,95.3062155340513,95.1639452228532,95.0510200878507,94.9628562178181,94.8951104592775,94.8444039958366,94.8081878234733,94.7847593581434,94.7730609153699,94.7726043053311,94.7834343300686,94.8059933614504,94.8411122365413,94.890417294343,94.9564508107118,95.0425675420413,95.152875607663,95.2913937059883,95.4612301081089,95.6638610322599,95.8936163653267,96.1465694826768,96.4441797519124,96.7641776247968,96.8103102230098,96.5068662421768,96.1941750869352,95.9332192017373,95.6962339299183,95.4878455205152,95.3128284066713,95.1700966922845,95.056548777564,94.96772887981,94.8994347836346,94.8482743678954,94.8117173635824,94.7880581091919,94.7762391503795,94.7757438506676,94.7865569409091,94.8091250471307,94.8443567532341,94.8938708991509,94.9601678479818,95.0465884024297,95.1571439639281,95.2957983222182,95.4656185181407,95.6672995303019,95.8970482505577,96.1522663397371,96.4771677763924,96.8103102316471,95.7224859965347,95.556718020089,95.3059261620876,95.0599718559964,94.8318351177768,94.6426959145415,94.4743016522473,94.3392294711132,94.2294952784907,94.1434266806565,94.0774818567337,94.0283808265462,93.9938398371708,93.9717491385376,93.9607364648476,93.9600719824941,93.9696974506347,93.9899675383443,94.0222638160262,94.0685364417277,94.1311972291699,94.2132046084296,94.3179433651271,94.4479613753038,94.6056264245467,94.7944955397747,95.004191316111,95.3150416656848,95.6662528291196,95.7224859895241,85.7447852911845,87.0830156878526,87.0717881895502,87.005648066914,86.8731732019966,86.7674504896401,86.6732133224591,86.5924908282208,86.5281815412727,86.4781038419729,86.4420637601329,86.417574923131,86.4019291948153,86.3920987957547,86.3860269111696,86.3830118292088,86.3829419979568,86.3869666099667,86.3976994639098,86.4172851109766,86.4469689806349,86.4876604983072,86.5405642708626,86.6090153168578,86.6922568122265,86.8036858114613,86.9244191009314,86.9773600654632,86.9612420034714,85.7447852794338,66.3941813132596,66.5012707443792,66.5375906888935,66.5749155164461,66.5882312196034,66.5769683185795,66.5652376796166,66.5519806006119,66.5394230042762,66.5298818598756,66.5234553512887,66.5198165750034,66.5177950800101,66.5161076139122,66.513678539878,66.5100912028202,66.5057511051753,66.5014119164738,66.4976799857917,66.4948951238511,66.4929813096582,66.4918970485105,66.4912473300941,66.4926670595085,66.4972453990144,66.5044729579442,66.5311857994975,66.5007004124136,66.4949334187456,66.3941813115015,47.0222809681606,46.9857043770927,47.0351583642594,46.9952773634559,47.0018679949974,47.0135106030192,47.0062970377751,47.0042706714445,47.0014103280542,46.9991714153039,46.9971087331798,46.9950868798959,46.9931662825243,46.9915104314,46.9903071968078,46.9896822758446,46.9896980974322,46.9902778918193,46.9911634444909,46.9922008481845,46.9934185551683,46.9952695195538,46.9977027202504,47.0002896377053,47.0011471324472,46.9908502974113,46.9618249309367,46.9089786693606,46.8267873548806,47.0222809695955,32.5381295718327,32.5404347423205,32.856961016946,33.0953019609244,33.0463723620702,33.0693057641282,33.0660875233304,33.0652228870861,33.0647810500094,33.0650283035461,33.0655876532004,33.0660774333874,33.0662821824447,33.0662364746811,33.0661502102549,33.0661786499427,33.0661869867392,33.0658559915716,33.0649569026457,33.0635586224567,33.0618660044964,33.0602106308309,33.0590027346957,33.0571863067036,33.0548948422056,33.0416105631071,33.0184285167179,32.9183220967947,32.7853583495198,32.5381295703414,23.2308291243901,24.6485390740149,23.5198009469358,23.8428355525964,23.7910415295856,23.7791431671422,23.7679091007927,23.7615527899997,23.7585931093802,23.7576796900281,23.7579616146444,23.7589641610079,23.7603388309178,23.7617215471912,23.7626832383707,23.7628605564508,23.7621790958378,23.7609259504183,23.7595308878337,23.7583888272294,23.7578081214354,23.7579000633119,23.7589369965686,23.7602938510417,23.7605466148602,23.7559618558292,23.7165742586725,23.6909415544332,23.1529816414928,23.2308291125936,0,17.7170804934769,18.0291154569087,18.3765125013317,18.4606843701299,18.4798972101579,18.4824270498357,18.4808367250066,18.4790809540897,18.4778576193498,18.4771213990118,18.4767083478441,18.4764859084291,18.4763713125399,18.4763186994963,18.4763072837473,18.476331371532,18.4764008286806,18.4765438790307,18.4768164472739,18.4773177048178,18.4782027309377,18.4796566001733,18.4817058442064,18.4829422851224,18.479645100036,18.4464931937746,18.2523484792586,18.5078082762656,0,5.38722671302401,17.7286956565418,18.3415067683645,18.6761479158181,18.759508993685,18.780241713626,18.7824562459369,18.7807688201737,18.778935144071,18.7776674014872,18.7769096132511,18.7764861776673,18.7762590989505,18.7761425250804,18.7760891568943,18.7760776053612,18.7761020588073,18.7761725242963,18.7763177037782,18.7765945272475,18.7771038593965,18.7780034165973,18.7794792769972,18.7815477191197,18.7828884670966,18.7788061041482,18.7463972621708,18.56812021467,18.5411498343849,5.28774409204374,12.3944851107227,13.5273516460376,14.4254969051005,14.6974588711798,14.8123811905672,14.8510305177882,14.8630814127369,14.8667083607516,14.8676231756681,14.8678573797677,14.8679778768333,14.8680838585784,14.8681857187117,14.8682644773836,14.8682998481166,14.86827910195,14.868201980368,14.8680805125527,14.8679361172613,14.8678035200244,14.8677292683062,14.8677874226118,14.8679327485491,14.8677454057264,14.864749063518,14.8498842445309,14.8012590039487,14.4955617173625,14.0854041522805,12.3944851018503,11.6989607605007,12.123569757752,12.3987758647781,12.5903118744972,12.6636082204339,12.7012932182781,12.7163099722785,12.7226445300055,12.7252959565217,12.7263288764797,12.7267193313336,12.7268469272824,12.726867849343,12.7268427809772,12.7267964705047,12.7267429145647,12.7266886830383,12.7266319266068,12.7265651720117,12.726477845515,12.726335583949,12.7260707948303,12.7253397218005,12.7231909068732,12.7162578305956,12.6898516599324,12.6435622125467,12.397253464589,12.0565437118086,11.6989607672914,10.8410733410876,10.9066965740902,11.0138799985881,11.0837304621187,11.1331657466048,11.1566117304101,11.1699253049876,11.1761767633319,11.1791367852622,11.180431296028,11.1809337026851,11.1810815747577,11.1810825325977,11.1810408640177,11.1810100982146,11.1810136378739,11.1810543826369,11.1811202925255,11.181181996452,11.1811894337609,11.1810234771824,11.1805019090714,11.1789565946572,11.1753355407264,11.1669143142217,11.144980097523,11.103555033953,11.0483895200688,10.9736709931956,10.8410733407547,10.1359514884495,10.1464567173427,10.1840826577469,10.2151493993283,10.2365005571342,10.251534793317,10.2598297037381,10.264803241831,10.2674606590356,10.2688628962986,10.2695466524069,10.2698370585116,10.269927548605,10.2699307251449,10.2699130705582,10.2699092160893,10.2699293233656,10.2699587492561,10.2699531413316,10.2698480701823,10.2694783371392,10.2686759766951,10.2667655012519,10.2631700793451,10.2558291272415,10.2432596788211,10.2205551025998,10.1855535455992,10.1630382377219,10.135951488369,9.69565668649794,9.69142208746898,9.70253443800816,9.71490971870912,9.72561507620166,9.73319964235701,9.73866830136184,9.7420497667868,9.74422715399504,9.74551589507397,9.74625708659868,9.7466530245042,9.74684539682649,9.746925729806,9.74695358053448,9.74695989047806,9.74695150714548,9.74691682936843,9.74680847577745,9.74657210646402,9.74604601698953,9.74516231784144,9.74340905144584,9.7407364051296,9.73605146689109,9.72946562101965,9.72431480629625,9.71514910226701,9.70123431364657,9.69565668734226,9.4833207501009,9.48148885982639,9.4891711695964,9.49523024451465,9.50134824713803,9.50630741186177,9.50994296931078,9.51254276263423,9.51427513972546,9.51544353975968,9.51619993141687,9.51668110034525,9.5169806984018,9.51715888889677,9.51724876580075,9.51726814896932,9.51721806360049,9.51709355104179,9.5168675286187,9.51651252284607,9.51590250759949,9.51499107559661,9.51351690617337,9.51124955541829,9.50820862963418,9.50296090811384,9.49720936255243,9.49173705326575,9.48588532836023,9.48332075081512,9.41669019405091,9.41436374342416,9.42058512381276,9.42526550440087,9.42968465278013,9.43351252093561,9.43647104541784,9.43858648980123,9.44010062924576,9.44116019358382,9.44191005237068,9.44243377324295,9.44279755835278,9.44304157898684,9.44317885273757,9.44320802604756,9.44313008791828,9.44294939958453,9.44265243069671,9.44222800553828,9.441614297731,9.44071772741688,9.43955004508258,9.43770321898445,9.43551136430593,9.43267927789993,9.42919123340397,9.42406050877922,9.41719317942277,9.4166901942033,9.44125657587604,9.43918489448107,9.44441132693605,9.4481678556876,9.45188984231839,9.45501502064181,9.4575331862312,9.45939941939108,9.4607581181527,9.4617513886217,9.4624633481447,9.46297412137457,9.46333481699608,9.46357854920654,9.46371994457194,9.46375625192868,9.46368222204351,9.46350429101664,9.46321638132955,9.46278567414785,9.46220307815239,9.4613261689197,9.46023392071313,9.4586515309612,9.45647903567634,9.45349532699214,9.45052195263768,9.44673602634596,9.44076891132161,9.44125657527204,9.58909509600059,9.58481420709494,9.59007730592803,9.59246728830685,9.5950434055971,9.5972083098172,9.59901301554238,9.60044653123981,9.6015421868593,9.60235487566794,9.60293786618784,9.60333782562447,9.60360222476153,9.60376618866025,9.60385179181025,9.60387494760124,9.60383629872998,9.60372445630587,9.60353324794816,9.60320937641507,9.60275650153854,9.60208158583117,9.60120361313203,9.60008005167302,9.59887949286069,9.59707137693083,9.59465982321577,9.59165108692871,9.58593041214161,9.58909509497372,9.95735091553057,9.95199619484269,9.95795210659342,9.95937118134773,9.96097680808437,9.96209538949526,9.96309458742582,9.96395968342594,9.9646885129591,9.9652504087299,9.96564205587783,9.96588975445098,9.96602549623932,9.96609231686808,9.96612236959169,9.96613444304326,9.96613601313443,9.96610387696282,9.96601784280091,9.96583067178619,9.96553246325453,9.96508365614979,9.96451956202526,9.96374233318398,9.96289195459777,9.96189707172075,9.96046331789716,9.95847285327314,9.95317659155138,9.95735091466046,10.6722269785734,10.6679715178032,10.676010869868,10.6770270799694,10.6782225808342,10.6788444881588,10.6794240518779,10.6798975512373,10.6802867465071,10.6805995505268,10.680819833129,10.6809596737024,10.6810327373178,10.6810634701455,10.681078547495,10.6810906657915,10.6811033846872,10.6811044843471,10.6810796514444,10.6809999690479,10.6808620749009,10.680642278892,10.6803972766302,10.6801139703273,10.6797407836143,10.6791559648956,10.678003940251,10.6761742374756,10.6688381676438,10.6722269784055,11.8787915999312,11.8744275239975,11.8858890059103,11.8867769784504,11.8878486975896,11.8878690099751,11.8879469274433,11.8880616536495,11.8881490946896,11.8882017811348,11.8882107665502,11.8881962163542,11.8881752668774,11.8881566201123,11.8881480860579,11.8881530290684,11.888169289549,11.8881891108595,11.8882104901287,11.8882229415783,11.8882319705105,11.8882234623895,11.8881925453132,11.8881328293103,11.8880210055981,11.8876988729829,11.8867008387407,11.8848429129138,11.8749956874221,11.8787915997101,13.783054449198,13.7765060910742,13.7926721279391,13.7930588106471,13.7946037143757,13.7948070927133,13.7946562118785,13.7944001925475,13.7941632514993,13.7939847313835,13.7938509222328,13.7937415237439,13.7936612909744,13.7936101960264,13.793584337131,13.7935854465947,13.7936198744426,13.7936942187201,13.7938197473899,13.7940000040101,13.7942370785918,13.7945217688541,13.7948402728877,13.7951382236758,13.795347966703,13.7953434107294,13.7943925030698,13.7926546577882,13.7789488117208,13.7830544487411,16.7316370500971,16.717282912742,16.740296416825,16.7388124823566,16.7386365997568,16.7377914798558,16.7373164437243,16.7367603142534,16.7361221785343,16.7354493769031,16.7348819213702,16.7344502214952,16.7341464583975,16.7339649874951,16.7338782557549,16.7338642285604,16.7339131543801,16.734029476821,16.7342341090835,16.7345563268525,16.7350179816102,16.7356121503043,16.7362972426947,16.7370259297754,16.737671806402,16.7380975425361,16.7375277582695,16.7360818268917,16.7185665935011,16.7316370494138,21.3323450372628,21.2955586795699,21.3255076115212,21.3259237072357,21.3286648086388,21.3281943044017,21.3274628564395,21.3266427016022,21.3260601382295,21.325520160137,21.3249744179752,21.3245192424997,21.3241477081061,21.3238800306714,21.323727904063,21.3237007508187,21.3238161820691,21.32408748556,21.3245146805663,21.3250824900003,21.3257875478935,21.3266439875367,21.3276672914842,21.3287619909765,21.3298626812645,21.3306467140655,21.3299408557674,21.3297591360717,21.3042324281287,21.3323450368946,28.6177351114397,28.5303947619743,28.5617345129324,28.5554529813092,28.5580990276576,28.5589786943948,28.559050158086,28.5579739428728,28.5566052249004,28.5557262651487,28.5550788577022,28.5546309487464,28.5543250943795,28.5541171925724,28.5540114783897,28.5540012088806,28.5540832827451,28.5542543609486,28.5545242849128,28.5548951334897,28.555343373239,28.5558641991937,28.5565088383563,28.5573361244189,28.5579129343671,28.5583410775563,28.5560217524568,28.5554854055261,28.5267072872705,28.6177351111846,40.1007272609053,39.9244988979682,39.9817104160014,40.0032287511778,40.0156950971206,40.0205167277588,40.0226832443555,40.0253208192746,40.0265872933325,40.027613973852,40.0286516301941,40.0294683390471,40.0299650247685,40.0300602997579,40.029894832463,40.0297327073932,40.0298031693482,40.030085923509,40.0303121046967,40.0302707499322,40.0300168866412,40.0297806773359,40.0297800674707,40.0301018584972,40.0304579389727,40.028645971428,40.0223774776256,40.0150722865198,39.9598732111648,40.100727262397,56.9937431993803,56.8561063611883,56.8672775346991,56.8929685867437,56.9007859819474,56.9048992860976,56.8964303565297,56.8902170296086,56.8881700355369,56.8886504844484,56.8912116583599,56.8946938187556,56.8984129138626,56.9017961317434,56.9043184364674,56.9055401843444,56.9053852153625,56.904481446354,56.9033961622299,56.902210388717,56.9012773932363,56.9014186991169,56.9033514069686,56.9069355154824,56.9110384337156,56.9140281703509,56.8995967082511,56.8839173132147,56.8019357143462,56.9937432045563,77.1817555499794,77.8900400284605,78.037157202854,78.1108482177708,78.0916226468709,78.0860241885831,78.0745231263275,78.0518973171355,78.0315522592437,78.0157177164531,78.0057000530323,78.0010426941075,78.0003470371912,78.0025059432322,78.0067028704877,78.0122603835335,78.0178896154604,78.0220818365679,78.0260568380738,78.03402781403,78.0494264399715,78.0734424669683,78.1062095956642,78.1471490374792,78.1914758845111,78.2375897856772,78.2659610288369,78.2142938495065,78.0571297138971,77.1817555580535,92.3866639064256,92.9801727197439,92.9529944238818,92.9977491410475,92.9145294429975,92.7374899026438,92.5761875269017,92.4443339972987,92.3445994035311,92.2723811633541,92.2199223365812,92.1821634116741,92.1553421023988,92.1375767258956,92.1286254377129,92.1286853419647,92.1372680171315,92.1547176155497,92.182517962771,92.2218090969131,92.2745855393038,92.3447146007537,92.4363321307591,92.555307863936,92.7035246329652,92.8744690129002,93.0890885033035,93.2182286275654,93.1866292644028,92.3866639127367,96.7651259306696,96.5336412032587,96.2048124286754,95.933026799064,95.6920229883287,95.4813788104727,95.3063046449677,95.1640254057937,95.0510917628158,94.9629183748369,94.8951646763561,94.844451542022,94.8082296946176,94.7847970394879,94.7730963549634,94.7726385053592,94.7834680921939,94.8060278466759,94.8411482439442,94.8904558669613,94.9564934344684,95.0426156272548,95.152930206468,95.2914537575679,95.4612923896253,95.6639079051041,95.8936563732946,96.1466330512207,96.4440787904913,96.7651259328954,96.8100863508339,96.5058612021266,96.193954007151,95.9330621342968,95.6960823426038,95.4876557012317,95.3126341618545,95.1699061684679,95.0563753641235,94.9675730546713,94.8992944692043,94.8481461824742,94.8115976707523,94.7879435230442,94.7761267666247,94.7756317501992,94.7864439235623,94.8090093892692,94.8442356733437,94.8937409271706,94.9600258835756,95.0464335347612,95.156978242344,95.2956275045329,95.4654557626037,95.6671623805323,95.896927995482,96.1521010631956,96.4762555834238,96.8100863489789,95.7446345555185,95.5686739428888,95.3198647458188,95.0735716972667,94.8450776317527,94.6556251320595,94.4871501120478,94.3519563495219,94.2421769065557,94.156067356521,94.0900893188674,94.0409536238093,94.006376821675,93.9842572822066,93.9732305181784,93.9725718803214,93.9822266760937,94.0025462731676,94.0348980884737,94.0812277274291,94.1439516345571,94.226041568589,94.3308989241091,94.4610891335616,94.6190188898515,94.8081485802166,95.0178554267878,95.327887875268,95.6777487916059,95.7446345500318,86.0386440984746,87.3486084033336,87.3371962130595,87.2678882932131,87.1335868043714,87.025501754041,86.9290369917533,86.8466101710429,86.7808738802223,86.7295945504468,86.692579162985,86.6673000619356,86.6510712957821,86.6408819159,86.6346805458759,86.6317598437215,86.6320017168952,86.6365301541731,86.6479436391085,86.6684040064168,86.6991917671701,86.741262014343,86.7958459552317,86.8662182430751,86.9517176244612,87.0654280235782,87.18990060969,87.2473791439743,87.2383401228984,86.038644090838,67.0237011731724,67.1565235412906,67.1934601359046,67.227967310722,67.2382189001203,67.226767342539,67.2143556474919,67.1997341691725,67.1864077295788,67.1760978083598,67.1691739576915,67.1652249573368,67.1630316851339,67.1612388286089,67.1587240837783,67.1550508115048,67.1506329242216,67.1462691518597,67.1426247864957,67.1400738374528,67.1385412161595,67.1379593064097,67.1379784317141,67.1401281768138,67.1457843216568,67.1539505617964,67.181564873542,67.1519144817379,67.1377053915235,67.0237011659311,47.6951242359044,47.6375370570074,47.6880044172521,47.6642990962753,47.6715006927184,47.6783388780875,47.6729925942969,47.6701986028394,47.6673138771463,47.6649204550626,47.66274177083,47.6606337552456,47.658656734056,47.6569611397735,47.6557118660343,47.6550156506502,47.6549361886757,47.6554158644759,47.6562150936663,47.6571840857464,47.6583482652517,47.6601177992932,47.6624621686251,47.6649126958225,47.6656029606719,47.6555324130794,47.6262176335615,47.5736218885965,47.4954640926674,47.6951242327244,33.1094387670159,33.176418204831,33.4261715015306,33.6169036767013,33.6011682639569,33.6166112100796,33.6157555168204,33.6149587627537,33.6146649531654,33.614962603901,33.6154960451155,33.6159002246309,33.615974057377,33.6157790277481,33.6155680547402,33.615546343687,33.6156025028269,33.6153906935109,33.6146269916147,33.6133314679874,33.6117015798758,33.6100620830903,33.6088406383135,33.6069616545342,33.6044905697903,33.5906918629223,33.5663256835536,33.4690027929537,33.3155421689409,33.109438767032,23.3432980239449,24.7059095771669,24.0451522347832,24.2200173107342,24.1882121439055,24.1723651012693,24.1606712065143,24.1543244039765,24.1514395613952,24.1506817853301,24.1511322220366,24.1522969263879,24.1538186446584,24.1553304695117,24.1563938469604,24.1566216295775,24.1559135729558,24.1545507985627,24.1529843764179,24.1516340891434,24.1508334360755,24.1507093808166,24.1515471125609,24.1527438114698,24.1528012387513,24.1481137227475,24.1092758767752,24.0685445380005,23.6296500775053,23.3432980277038,5.38722668214201,17.7286958499646,18.3415070033679,18.6761481540429,18.7595092293086,18.7802419488514,18.7824564809777,18.7807690551647,18.7789353790545,18.7776676364741,18.776909730747,18.7764864126632,18.776259333949,18.7761427600804,18.7760893918951,18.7760778403624,18.7761022938083,18.7761727592968,18.7763179387778,18.7765947622455,18.7771039768945,18.7780036515914,18.7794795119921,18.7815479541275,18.7828887021607,18.7788063393553,18.7463974983021,18.5681204496357,18.5411500602842,5.28774417009382,8.82736670833991,17.7757699017686,18.6066404901663,18.9312129045004,19.0157759137633,19.0370172221801,19.0390640557027,19.0372710528659,19.0353652716352,19.0340594702238,19.0332830084561,19.0328509953949,19.0326201690388,19.0325020403877,19.0324481089767,19.0324364680888,19.0324611989961,19.0325324160343,19.0326792001035,19.0329592736012,19.0334747865135,19.0343856045164,19.0358792378716,19.0379627348234,19.0393750061108,19.0348159544092,19.0024082553203,18.8368017154907,18.6048034156586,8.57227332290971,12.4190901348375,13.7227970682052,14.5980252179573,14.8903408796979,15.0070550321092,15.0469188381866,15.0593062491978,15.0629775819361,15.0638930484961,15.0641143485495,15.0642275760085,15.064331963287,15.0644352897079,15.0645180991136,15.0645591162768,15.064543916657,15.0644722283245,15.064355912917,15.0642163020934,15.0640909557146,15.0640275690686,15.0640991687712,15.0642694239862,15.0640645570301,15.0609728172394,15.0471281395644,14.9864983348428,14.7455329758451,14.0818745331273,12.4190901255805,11.7967117176259,12.2352255173651,12.5328140649556,12.7290693172147,12.80644510351,12.8452623549057,12.860822300503,12.8673675351851,12.8701317196533,12.8712413720775,12.8716864468017,12.8718539983108,12.8719036365558,12.8718968972241,12.8718583036755,12.8718017073267,12.871734224436,12.8716557457041,12.871559406274,12.871434468789,12.8712482047108,12.8709274209177,12.8701320749506,12.8679549984461,12.8603389660977,12.8362792784413,12.7765856796951,12.5481499858133,12.2229733358859,11.7967117238316,10.9402006500827,11.0147515242245,11.1268881032707,11.201387681599,11.2526612431988,11.2773479014086,11.2911811304273,11.2977307495635,11.3008398145086,11.3022093332483,11.3027509437065,11.3029205921166,11.3029332684293,11.302896988012,11.302867009286,11.3028672579969,11.3029011796369,11.3029566507349,11.3030030978898,11.3029885037249,11.3027939762401,11.3022325922146,11.3005986198037,11.2970029974358,11.2876951388978,11.266467263045,11.2215003238328,11.1523870372552,11.0777981410432,10.9402006494316,10.226575345108,10.2383081021335,10.2779479730069,10.310609826793,10.3332672752328,10.3489665167518,10.3577390926686,10.3629498139661,10.3657323768751,10.3671928861618,10.3679002382691,10.3681975166396,10.3682882420798,10.3682893129306,10.368270769903,10.3682691448912,10.3682929161641,10.3683270314519,10.3683268721321,10.3682206149136,10.3678359544122,10.3670033013209,10.3649793744497,10.3612607387919,10.3535128328351,10.3399160559557,10.318096911151,10.2822897514035,10.2577808567873,10.2265753446069,9.77902520562205,9.7758834652745,9.7876328790115,9.80042199622089,9.81147710197602,9.81935071784551,9.82501105342785,9.82855398661771,9.83082204984843,9.83215522636072,9.83290695978558,9.83329155944516,9.8334625796233,9.83352209112526,9.83353469095278,9.83353725419956,9.83353956847952,9.83352312655745,9.83343532165255,9.8332166259982,9.83268712806517,9.83176622772864,9.82994228261698,9.8270959938578,9.82237286161874,9.81532300617662,9.80934000202197,9.79963459940732,9.78604459408458,9.77902520666454,9.56773626907359,9.56633709356764,9.57380082327934,9.57984230290762,9.5858557827001,9.59075288902922,9.59442315955159,9.59709501488034,9.59889325922379,9.60008460896382,9.60082847972972,9.60127290355049,9.60152170509928,9.60165078005904,9.60170971166217,9.6017227132509,9.60169490018852,9.60161697477367,9.60144082680135,9.60112451538921,9.60053776263428,9.59960099132809,9.59807360553579,9.59572056866014,9.59266183660003,9.58768782766544,9.582269468249,9.57681198759782,9.57079381330485,9.56773627007699,9.50506583296616,9.50363451442082,9.50960705362439,9.51412270097252,9.51838098556098,9.52207353103961,9.52501293374443,9.52718443125901,9.52875323481499,9.52983528999234,9.53056724262938,9.53104421010883,9.53134776073658,9.53153001772458,9.531624172769,9.53164691234284,9.53159687626837,9.5314701540523,9.53124025602935,9.53086485752465,9.53027413883825,9.52936903160628,9.52814237527459,9.52624887823204,9.5240577136695,9.52130139145289,9.5179946979298,9.51313023505016,9.50647860973421,9.50506583309995,9.52784336929747,9.52628568940014,9.53142977012935,9.53501393547088,9.53857945936057,9.54157762817816,9.54406486739059,9.54597063436987,9.54737467519652,9.54838209436098,9.54907601969304,9.54953868781221,9.54983576996511,9.55001866077574,9.55011508636373,9.55014019985731,9.5500968684414,9.54997311838092,9.5497478396008,9.54937487867455,9.54881701706495,9.54793493267502,9.54680368199954,9.54518043895392,9.54306660370962,9.54026421162658,9.53747416455823,9.53381996394137,9.52806795901737,9.52784336863431,9.67293397924692,9.66951481868446,9.67459369268048,9.67683863574029,9.67926192824754,9.68129184197316,9.68303731206513,9.68446948216733,9.68558573475407,9.68640643759104,9.68697726235021,9.68734851095531,9.68757103040251,9.68769275211663,9.68775137206411,9.68776723127896,9.68774598389528,9.6876729411511,9.68752129087766,9.68723134184427,9.68679916146284,9.68612386439707,9.68523387516668,9.68410653935728,9.68294237525922,9.6812586296042,9.67902634372637,9.6761783364211,9.67058664982905,9.67293397776075,10.0477093900888,10.0437033650295,10.0496204919496,10.0510130336127,10.0525640915784,10.0536256879554,10.0546033512696,10.0554634126575,10.0561963781342,10.0567616231483,10.0571499173532,10.0573881503015,10.0575131337822,10.0575675094202,10.0575891891425,10.0576020163407,10.0576082866356,10.0575859530153,10.0575132801349,10.0573348187747,10.0570399896588,10.0565930268595,10.0560289667537,10.05526318699,10.0544391807832,10.0534952037029,10.0521033468605,10.0501671743791,10.0448151760686,10.0477093896466,10.7797295354001,10.7770104483936,10.7849898674996,10.7860670298535,10.7872710420714,10.7878774550349,10.7884473823179,10.7889120318496,10.7892955591488,10.7896023563896,10.7898191305283,10.7899543393983,10.7900236845215,10.7900534790653,10.7900668105131,10.7900781539299,10.7900926463981,10.7900943916679,10.7900709699326,10.7899961445858,10.7898623357284,10.7896482393112,10.7894100785574,10.7891365693837,10.7887688125083,10.7881890397322,10.787014650724,10.7851608963548,10.7777917244554,10.7797295355802,12.0116354248571,12.0094192137006,12.0207365898462,12.0217204643001,12.0228019906005,12.022816938366,12.0228870722928,12.0229855680459,12.0230613581066,12.0231023008267,12.0231029211306,12.0230839757989,12.0230597714318,12.0230395868762,12.0230317770838,12.0230363129126,12.0230525257865,12.0230747500627,12.0230985951734,12.0231161158148,12.0231339561936,12.0231368905502,12.0231172191245,12.0230687477752,12.0229655497097,12.0226542382319,12.0216334544979,12.0197220773687,12.0098934818356,12.0116354247508,13.951518259765,13.9481545856114,13.9640054824727,13.9645370170971,13.9660598962418,13.9662426732051,13.9660805520091,13.9658087098107,13.9655588298554,13.9653684189515,13.9652236174846,13.9651056607736,13.9650204706619,13.9649654247305,13.9649374048606,13.9649388485197,13.9649736179161,13.9650498975642,13.9651802303854,13.9653672093624,13.9656136689336,13.9659117718747,13.966246780451,13.9665627269355,13.9667845140692,13.9667932339628,13.9658351221622,13.9640132160886,13.9504057827648,13.9515182593859,16.9513715375451,16.9418465750728,16.9642077611077,16.9629702603326,16.9627730763898,16.9619281802835,16.9614508205229,16.960887608536,16.96024294568,16.9595639695698,16.9589915630495,16.9585541378868,16.9582458219211,16.95806182838,16.9579728132316,16.9579577776184,16.9580078361241,16.9581261483479,16.9583343735828,16.9586619534179,16.9591294162179,16.9597297549482,16.96042175782,16.9611610139367,16.9618167521671,16.9622511270801,16.9616711732508,16.9601069488269,16.9429071294037,16.951371536927,21.6271038655373,21.5976932401733,21.626305451904,21.6271629136821,21.6298803431739,21.629444413816,21.6287490164965,21.6279564983843,21.6273985106042,21.6268777116029,21.6263488105202,21.6259048610136,21.6255379851267,21.6252716761118,21.6251210338685,21.6250959752661,21.6252140932106,21.6254867646099,21.6259104659371,21.6264685359856,21.6271562867119,21.6279888484589,21.6289829267176,21.6300479038262,21.6311152391722,21.6318614131352,21.6311053311931,21.6306680003808,21.6057279109345,21.6271038652048,29.0184146374676,28.9420386887158,28.9709719050847,28.9656988067703,28.9687070272754,28.9697960991144,28.9700214857414,28.969069867942,28.9678224301567,28.9670417217192,28.9664731130479,28.9660855021526,28.9658191571586,28.9656303184673,28.9655269177814,28.9655105210266,28.9655848397439,28.9657478645775,28.9659998134423,28.9663317409626,28.9667174184287,28.9671538950949,28.9676968502086,28.9684073104416,28.9688550788735,28.9691174873234,28.9666126505162,28.9655598983836,28.938274321152,29.0184146372807,40.6253406603496,40.4642878037873,40.5182027595716,40.5400485853553,40.5529440761602,40.5580194215753,40.5603704202643,40.5630739695931,40.5644267717934,40.5655728355895,40.5667354802941,40.5676697322859,40.568260615093,40.5684273549714,40.5683085913317,40.5681648835155,40.5682201215261,40.5684622295491,40.5686384948725,40.5685344482306,40.5681953235717,40.5678549756826,40.5677358262665,40.5679201960344,40.5680941728697,40.5660257126474,40.5593724454169,40.5510325878721,40.4975556819786,40.6253406618678,57.5754911471016,57.4571423818232,57.4725141056224,57.4989113973904,57.5071596872225,57.5111882936104,57.5029142366525,57.496838574132,57.4947827776544,57.4952296845572,57.4977736760042,57.5013114523989,57.5051402746779,57.5086604059982,57.5113198701541,57.5126619015152,57.512601226378,57.5117369954405,57.5106425595031,57.5094764495704,57.5086603945411,57.5090330758659,57.5112908931773,57.5152461412865,57.5196623769045,57.5228275759402,57.5082659593749,57.4909957015847,57.4126509205182,57.5754911520671,77.5925757606928,78.2928761454729,78.4429488155817,78.5139426164211,78.494086467506,78.4866686295841,78.4727864768372,78.4481551576283,78.4261591093279,78.4090594638178,78.3980069837063,78.3925276902114,78.3912325549427,78.3930054090792,78.3970202507159,78.4025545782248,78.4083048146957,78.4128038208628,78.4172898749587,78.4259937357008,78.4423701448732,78.4675987554378,78.5017989038208,78.5443948121473,78.5906216001852,78.6386577028912,78.6699259067096,78.6184930100119,78.4639296092852,77.5925757683895,92.4829287132863,93.0380214630335,93.0124611838462,93.0538661588625,92.9680497634897,92.7899722327184,92.62803881869,92.4957112784499,92.3954357506487,92.3227487819852,92.2699301084771,92.231856476233,92.204757141847,92.1867443863044,92.1776076832654,92.1775946044592,92.1861974688399,92.2037639918537,92.2317946984828,92.2713509086009,92.3244072136267,92.3948794440799,92.486953684624,92.6065180939197,92.7554837940244,92.9274618171316,93.1420376589928,93.2749174142866,93.2362858337408,92.4829287195854,96.7658417045656,96.5320194450393,96.2046525494419,95.9327502236465,95.6918137675515,95.4810813656528,95.3058853546795,95.1635582049158,95.0506310586892,94.9624790559032,94.8947487704595,94.8440533849992,94.8078402128096,94.784408231596,94.7727048519773,94.7722425062427,94.7830666922583,94.8056222003268,94.8407338409225,94.8900225667154,94.9560347108427,95.0421327187412,95.1524336416993,95.2909621157192,95.4608286802558,95.6634856272605,95.8933207198898,96.1462850238252,96.4421802361307,96.7658417068072,96.8097812623131,96.5038284833951,96.1934661450941,95.93270769074,95.6957633841693,95.4872533027884,95.3122330520281,95.1695144478253,95.056020525238,94.9672553365256,94.8990100113021,94.8478883267053,94.8113581879105,94.7877158418071,94.7759045329292,94.7754102456332,94.7862208798405,94.8087817249669,94.8439973077188,94.8934852631269,94.959746452171,95.0461265349229,95.1566469618897,95.2952832103245,95.465119276397,95.6668790475898,95.8966731011929,96.1518595774082,96.4739681836803,96.8097812604171,95.7641578357642,95.5683033083726,95.3246948757069,95.0781245166038,94.8492713037866,94.6596354587029,94.4912231637485,94.356014737803,94.2463393564559,94.1603196473233,94.0944261125638,94.0453566754506,94.0108189898305,93.9887161343469,93.9776911161812,93.9770341864056,93.9866968554154,94.0070191204045,94.0393539568123,94.0856482728785,94.1483270226982,94.230385735293,94.3352521997045,94.4655245829036,94.6237290535293,94.813127366974,95.0224185540737,95.3313324776958,95.6771042768373,95.7641578302603,86.2917874137712,87.550223251669,87.5407140206615,87.4683178654933,87.3325224339437,87.2223573953043,87.1240220383691,87.0400828361422,86.9730302621739,86.9206475518881,86.8827143433629,86.856690499918,86.8399115185428,86.8293861458491,86.8230647513727,86.8202241383846,86.8207477759598,86.8257489928141,86.8378044878383,86.8590797130239,86.8908711043078,86.934152989301,86.9901699376006,87.0620672890104,87.1492533073716,87.2649424500016,87.3930688034246,87.4563519086414,87.4497260356487,86.291787406332,67.567019092443,67.7230267460787,67.7585128756681,67.7913299258226,67.7989636608791,67.786999158551,67.773838412966,67.7580094279628,67.7439302097923,67.7329217325917,67.7255307095382,67.7212815370453,67.7189135567333,67.7170109476604,67.7144183107644,67.7106850979697,67.7062227932114,67.7018634089991,67.6983257218869,67.6960202583172,67.6948883823681,67.6948530693027,67.6956276287938,67.6986992013564,67.7055543333478,67.714635083191,67.7425007535284,67.7144656171805,67.6903877658053,67.5670190855727,48.279004905766,48.2191772275162,48.2679154579312,48.256257221975,48.2644317953985,48.267418346648,48.2632062927736,48.2598267697274,48.2568224588403,48.2542601950444,48.251956775723,48.2497655252316,48.2477411971328,48.2460186932356,48.2447351176079,48.2439784798898,48.2438148064977,48.2442045443888,48.2449293599373,48.2458453106008,48.2469720207511,48.2486791514014,48.2509359044127,48.2532490481313,48.253838260177,48.2441279233119,48.2147931032592,48.1621549127387,48.0880681685724,48.2790049026117,33.6022279778654,33.7236133851751,33.9253963927098,34.0774695284224,34.0862349939719,34.0974115454478,34.0981169136947,34.0974760971583,34.097302854931,34.0976320495517,34.0981314474416,34.0984500753564,34.0983993351129,34.0980637597144,34.0977332671789,34.0976545608371,34.097739799376,34.0976244897951,34.0969774287861,34.0957762186568,34.0942100761041,34.0925987736835,34.0913869431661,34.0894710797974,34.0868315844354,34.0726304617959,34.0470764610734,33.9526832505296,33.7835259890766,33.6022279779297,23.4943554372633,24.7935367587627,24.4896539996773,24.5626235847535,24.5415155317213,24.5228904249233,24.510805714445,24.504417835895,24.5016113170117,24.5009890111197,24.5015863524003,24.5028914342271,24.5045404011483,24.5061633833102,24.507315241487,24.5075904440028,24.5068659880953,24.5054165646587,24.5037095019434,24.5021845020011,24.5011967604893,24.5008862017991,24.5015507493702,24.5026114134204,24.5025104162735,24.4976882140171,24.4595803862127,24.406190042833,24.0436811885911,23.4943554399889,8.82736668959289,17.7757701126921,18.6066407390945,18.9312131543075,19.0157761613923,19.0370174693818,19.0390643027358,19.0372712998551,19.0353655186194,19.0340597172123,19.0332831319529,19.0328512423925,19.0326204160389,19.0325022873893,19.0324483559791,19.0324367150915,19.0324614459987,19.0325326630365,19.0326794471048,19.0329595206012,19.0334749100127,19.0343858515131,19.0358794848691,19.0379629818321,19.0393752531695,19.0348162015873,19.0024085033716,18.8368019626504,18.6048036546337,8.57227340266018,11.0198454621217,17.8390679630135,18.8295990806291,19.1462738825948,19.2326560895434,19.2539647947502,19.2558998240587,19.2540039089112,19.2520341501983,19.250695629122,19.2499033591095,19.2494642658813,19.2492304294183,19.2491110960854,19.2490567426668,19.2490450464621,19.249069986499,19.2491417612163,19.2492897572027,19.249572291533,19.2500925713725,19.2510120565403,19.252519862728,19.2546155023502,19.2560771998751,19.2512248541464,19.2185498278148,19.0623610275832,18.6856163121217,10.6003653844146,12.4704430553512,13.8739166594845,14.7493991951248,15.0559166272025,15.1745463570589,15.2153974093086,15.2280456088115,15.2317433068377,15.2326517709419,15.2328565672421,15.232959183347,15.2330591299395,15.2331618631884,15.2332464755964,15.2332910935765,15.2332809115932,15.2332139762012,15.2331023355608,15.2329688145325,15.2328508874429,15.2327978146702,15.2328845067999,15.2330784745912,15.2328682871232,15.2297084237488,15.2165490623305,15.1477372245716,14.9502396534326,14.0923275823759,12.4704430460714,11.8740634386765,12.3303522004235,12.6427926781068,12.8447288631912,12.925307994335,12.9651382799158,12.9811515053453,12.98786194259,12.9907090919719,12.9918743265409,12.9923591652318,12.9925561646069,12.9926272529859,12.9926347874228,12.9926026837657,12.9925446345705,12.9924687050954,12.9923752251986,12.9922581468613,12.9921075314088,12.9918909008222,12.9915316735545,12.9906917146342,12.9884786237734,12.9804468377816,12.9576302416324,12.8892633590672,12.6728249867001,12.3438737089511,11.8740634439716,11.0178029056212,11.100692752436,11.2180812269209,11.2963306497953,11.3494094587289,11.375151793324,11.389439327771,11.3962378997684,11.3994703315685,11.4009030703793,11.4014786078204,11.4016676346498,11.4016917994786,11.4016613910078,11.4016325294952,11.4016300721848,11.4016575324413,11.4017025385597,11.4017346620941,11.4017006007875,11.4014801403499,11.400883768155,11.3991917297379,11.3955561331897,11.385701832071,11.3646738862246,11.3163650466536,11.2399649931028,11.1652922704622,11.0178029049629,10.2957616078579,10.3094492616561,10.3507588863654,10.3850147444493,10.4088275821619,10.4251581520366,10.4343436831718,10.4397601722499,10.4426490859973,10.4441585702588,10.4448878591009,10.445194157994,10.4452876985251,10.4452901939268,10.4452728862047,10.4452722807353,10.4452978863849,10.4453336229802,10.4453329700365,10.4452234913074,10.4448295894862,10.4439665705461,10.4418757601301,10.4380401662849,10.429942067175,10.4156696265523,10.3935378482023,10.3557914093894,10.3306990790972,10.2957616068595,9.8380983078607,9.83625786362774,9.84867594273227,9.86193238224107,9.87341422221784,9.8816110794455,9.88746638723092,9.89114656718733,9.89348812706282,9.89485922308052,9.89562322347592,9.89600693005074,9.89617034558839,9.8962201249603,9.89622671287474,9.89622853976511,9.89623455338941,9.89622729474878,9.89615026590703,9.89593460585901,9.89540207031181,9.89445215929626,9.89256517948908,9.88958760833554,9.88473388455481,9.8773093605217,9.87092266738105,9.86057248152205,9.84700638686077,9.83809830849357,9.62488232075724,9.62446360957721,9.63174033748698,9.63782040222871,9.64380607297736,9.6486883130389,9.65239428739285,9.65511131804818,9.65695010724767,9.65815615627174,9.65889303372099,9.65931299345227,9.65953076408985,9.65963011779988,9.65966782218831,9.65967771656514,9.65966505636391,9.65961264948821,9.65946951212175,9.65917966424172,9.65860226893874,9.65765435893986,9.65609857235146,9.65369446736036,9.65060742974134,9.64573538001457,9.6404790090204,9.63504164939843,9.62883182358316,9.62488232253379,9.56619119962055,9.56614974553448,9.57191690161029,9.57629417257197,9.5804660473845,9.58407031366331,9.58699722816197,9.58920697044169,9.59081376686114,9.5919114249546,9.59263389986929,9.59308225730461,9.59334492120388,9.59348859931033,9.59355683612736,9.59357300048757,9.59354305146853,9.59345338444586,9.59326200007187,9.59292056518551,9.59234585053415,9.59142572810242,9.59015808810651,9.58824601893589,9.5860582486616,9.58334799698601,9.58012891864729,9.57550142047544,9.56899417563695,9.56619119961488,9.58674990626881,9.58614167291184,9.59132040051163,9.59478584585478,9.59826981851399,9.60119841687944,9.60367382426313,9.60560732011254,9.60704651263444,9.60806811639665,9.60875149894607,9.60918564981082,9.60944360357357,9.60958502913513,9.60965386855825,9.60967315106575,9.6096454312298,9.6095582756269,9.60937493254038,9.60903339411536,9.60849216818923,9.60760741369648,9.60643808425764,9.60477990559984,9.60270386458419,9.60003097815615,9.59732007750448,9.59372909507823,9.58815482576593,9.58674990545065,9.73075666861962,9.7286092502429,9.73347010310819,9.73566295480289,9.7379952823779,9.73994064065485,9.74164590615828,9.74307138653302,9.74419486621535,9.74502111151015,9.74558787259486,9.7459436034156,9.74614593168281,9.74624720727572,9.74628987201259,9.74630367213611,9.74629294037741,9.74623687996243,9.74610705072874,9.74583590170578,9.74540963916814,9.74473668118737,9.74384695934824,9.74272428118399,9.74157572608197,9.73996568416199,9.73784625282641,9.73509309141586,9.72957143695867,9.73075666670725,10.1151537336429,10.1130830426002,10.1187978910773,10.1202432300465,10.1217650993799,10.1228000548154,10.1237604601621,10.1246105570032,10.1253398375851,10.1259012373177,10.1262869039736,10.1265214964215,10.1266410902425,10.126692176165,10.1267121679199,10.1267236819761,10.1267324086452,10.1267141969755,10.1266436794293,10.1264702961887,10.1261792767263,10.125735640228,10.1251769480403,10.1244283339492,10.1236271960562,10.1227042801305,10.1213089908178,10.119389867906,10.1140561789116,10.1151537341278,10.8646460737124,10.864451230487,10.8720681861691,10.8732763123535,10.8744736925462,10.8750766476728,10.875638669531,10.8760905448009,10.8764645557588,10.8767630109592,10.8769732137172,10.8771049089866,10.8771726460537,10.8772007968451,10.877214412922,10.8772262229467,10.8772396355128,10.8772426687727,10.8772212992323,10.8771493515706,10.8770213321907,10.8768164952549,10.8765876893238,10.8763224874357,10.8759585809085,10.8753880847053,10.8741915647723,10.8722803576274,10.865094127287,10.8646460740315,12.1197294715045,12.1211459188933,12.1318771771988,12.1330534376481,12.1341100667741,12.1341191910533,12.1341779977045,12.1342627534195,12.1343263455527,12.1343563169717,12.1343486380076,12.1343230238777,12.1342957021489,12.1342742676566,12.134265126563,12.1342700843817,12.1342869485678,12.1343095702262,12.1343363742313,12.1343595281769,12.1343849067346,12.1343983683576,12.1343907782511,12.1343566207189,12.1342606136051,12.1339571802605,12.1329312096308,12.1309242202537,12.1214210129124,12.119729471468,14.0911476202642,14.0931986629982,14.1080664725357,14.108899952334,14.110366846703,14.110550397111,14.1103731451749,14.1100852514178,14.1098229551259,14.1096213687665,14.1094686919675,14.1093448022165,14.1092546367461,14.1091970414723,14.1091677133062,14.1091681200286,14.1092041413399,14.1092833441662,14.1094177350314,14.1096117822181,14.1098680273229,14.1101788436585,14.1105273971389,14.1108590430622,14.1110954548208,14.1111147777785,14.1101634523341,14.1081952308419,14.0951385133306,14.0911476199183,17.1357534452746,17.1346059696039,17.1552690943565,17.1545166164383,17.1542005240179,17.1533669024122,17.152889713076,17.1523221989396,17.1516708964464,17.1509829039781,17.1504013438801,17.1499566947747,17.1496432259332,17.1494552525628,17.1493646489155,17.1493491782014,17.1493989843177,17.1495188491404,17.1497298711899,17.1500610514534,17.1505330925711,17.1511395196826,17.1518393718201,17.1525873452106,17.1532510187299,17.1536928916663,17.1531276962382,17.1513424555686,17.13512396674,17.1357534446954,21.8765872576493,21.8603466824991,21.885988149269,21.8877282577616,21.8903630761467,21.8899615660257,21.8892880640147,21.8885194011583,21.8879898640862,21.8874956041491,21.8869889840158,21.8865585279898,21.8861981855573,21.8859339950262,21.8857838943996,21.8857616279294,21.8858838858362,21.8861593397108,21.886582380152,21.887133447086,21.8878059724636,21.8886160253151,21.8895835909787,21.89062343311,21.8916619330302,21.8923660912862,21.8915978367844,21.8907423384249,21.8674569557669,21.876587257339,29.3594310693302,29.3031732799878,29.3273338089762,29.3233328030731,29.3266386212645,29.3279526603662,29.3283289340253,29.3274758288295,29.3263138210152,29.3255986541591,29.3250855459473,29.3247442055173,29.3245095408953,29.3243366756391,29.3242334155002,29.3242069874148,29.3242695366547,29.3244205883456,29.3246534167004,29.3249518019711,29.3252863560392,29.3256533561702,29.3261087864473,29.326717300441,29.3270541019,29.3271684291669,29.3245566803735,29.3227564893604,29.2986062819982,29.3594310691827,41.0727312622546,40.9386096862886,40.9876596266736,41.0097555580773,41.0228947914205,41.0280753851608,41.0305761799386,41.033354034754,41.034818934726,41.0361038196319,41.037397831534,41.0384462749725,41.0391278493621,41.0393683690956,41.039307436568,41.039197797696,41.039253124915,41.0394680008285,41.0396031672027,41.0394416681902,41.0390255428874,41.0385990540895,41.0383896746401,41.0384670741829,41.0384912123609,41.036168514523,41.0292444606758,41.0194309470145,40.9702246066677,41.0727312637672,58.0702322142917,57.9765176544649,57.9974332935589,58.0244642242695,58.0336109080182,58.0375708433772,58.029453124933,58.0233867671569,58.0211738315401,58.0214549273568,58.0238884673476,58.0274160209938,58.0312964424461,58.0348936756247,58.0376321417643,58.0390533819569,58.0390716646999,58.0382534237126,58.037178199212,58.036080894235,58.0354359228293,58.0360848462623,58.0387086282037,58.0430878039054,58.0479060795595,58.0513789512866,58.0369571923511,58.0178510063775,57.945641981959,58.0702322190578,77.9400007270727,78.6151485991192,78.7704099337094,78.8363817102622,78.8156429260875,78.8061455975385,78.7898886534962,78.7634176120148,78.7399961370151,78.7218188456781,78.7098392860469,78.7036006128515,78.7017563376431,78.7031941090733,78.7070705130405,78.7125929752074,78.7184482729151,78.7232361559425,78.7281963886409,78.7375555782996,78.7548063310919,78.7811259221995,78.8166092588417,78.8606747328811,78.9085693872573,78.9582120109376,78.9924195594827,78.9405352411896,78.7892279377682,77.9400007344551,92.5648463260543,93.0615748915608,93.0428266833318,93.0810506433302,92.9932834820633,92.8147475795393,92.6526030484854,92.5200337975483,92.4193221299659,92.3462660907654,92.2931963808838,92.2548952302889,92.22757261095,92.2093320477474,92.2000123797417,92.1999363945008,92.2085555082845,92.2261997060722,92.2544097398134,92.2941670368501,92.3474111239847,92.4181105942846,92.510510338445,92.6305116818144,92.7800915812584,92.9529294260743,93.1667748687095,93.3045237227069,93.2530817519462,92.564846332347,96.7664658535117,96.5283738450705,96.2039427992615,95.9320303006104,95.6912406306615,95.4803294344347,95.3049096727716,95.1624916407084,95.049575938172,94.9614693152417,94.8937877769336,94.8431289588587,94.8069323391662,94.7835001122964,94.7717906874564,94.7713194739879,94.7821327388518,94.804680347178,94.8397758158089,94.8890271466048,94.9549881827566,95.0410364456321,95.1513088345921,95.2898498393739,95.4597731247447,95.6625247841525,95.8925250459066,96.1454796116356,96.4380375105173,96.7664658557656,96.8095344912228,96.5006334418926,96.1927016382146,95.9321001859649,95.6952435861429,95.4865953814507,95.3115686695447,95.1688651189548,95.0554248382698,94.9667152733216,94.8985194159408,94.84743748202,94.8109348985788,94.7873091547993,94.7755045797391,94.7750108037273,94.7858185850447,94.808372724015,94.8435728400546,94.8930347375264,94.9592605951436,95.0456002730024,95.1560851122901,95.2947019559772,95.4645524133017,95.6663950394233,95.8962173943754,96.1514580339675,96.4702279218399,96.8095344892931,95.7811739541294,95.5555639432089,95.320274621457,95.0733700862318,94.844250872669,94.6545363965981,94.486309009133,94.3511827882525,94.2417163701305,94.1558797198024,94.0901537298086,94.0412192498098,94.0067710456344,93.9847145542809,93.9737005230219,93.9730402118753,93.9826930676083,94.0029832096351,94.0352485399062,94.0814415512325,94.1439968479941,94.2259378854284,94.3307231589479,94.4609882286654,94.6194314117335,94.8090644388719,95.0176200159605,95.3254902292097,95.6645391354471,95.7811739486087,86.506870299283,87.6914698274531,87.6861899385248,87.6107350428333,87.4737319266531,87.3618159366864,87.2619370556553,87.1767005093791,87.1084965026605,87.0551429292082,87.016391278691,86.9897027237313,86.9724320628053,86.9616090556545,86.9551808847384,86.9524055308084,86.9531721312786,86.9585936955175,86.9712239210241,86.9932206935071,87.0258822674237,87.0701859528577,87.1273829041458,87.2004499502528,87.288843775395,87.4061990025935,87.5375917561487,87.6075447259633,87.5985086516714,86.5068702920061,68.0293177980289,68.204792193014,68.2368116979374,68.2691198114597,68.2745268207822,68.2618319762403,68.2478883797638,68.2309595695757,68.2161370603981,68.2044769001658,68.1966288765765,68.1920763893434,68.1895198722324,68.1874989251388,68.1848349949439,68.1810659284009,68.1765970236848,68.172281246626,68.168882203079,68.1668494840523,68.1661501093054,68.1667077158823,68.1683084034845,68.1724385550602,68.180571190214,68.1906148035463,68.2182993451055,68.1928528264337,68.157234253581,68.0293177914769,48.7781453889772,48.7336726484404,48.77799157511,48.7747997944878,48.7839164110529,48.7837949833552,48.7801800329263,48.776335896003,48.7731507004942,48.7704145534645,48.7679863095035,48.7657192521386,48.7636590957197,48.7619198017144,48.7606122240931,48.7598047248215,48.7595640546449,48.7598706941346,48.760528169121,48.7613986290168,48.7624970375536,48.7641563633888,48.766331036462,48.7685160693262,48.7690476959931,48.7597714800908,48.7305117067659,48.6776865727418,48.6074377680337,48.7781453858836,34.0216096899886,34.1903492029899,34.3581767544182,34.480289800497,34.5071744321842,34.5161986582495,34.5179799197166,34.5175320912633,34.5174588392297,34.5178048230553,34.5182652153176,34.5185001342048,34.5183341535261,34.5178702104055,34.5174272930592,34.5172888652454,34.5173887137738,34.5173487148261,34.5168001455533,34.5156836847286,34.5141784843749,34.5126011571042,34.5114133462453,34.5094784434754,34.5066883550514,34.4921870672288,34.465544224602,34.3737269179853,34.1941194945226,34.0216096900299,23.6611499172294,24.9024390731283,24.8664039800518,24.8688215424515,24.8528022990895,24.8320935075313,24.8196568247982,24.8132068794775,24.810470501768,24.8099629397917,24.8106845874836,24.8121071076379,24.8138610165946,24.8155760223384,24.816802601976,24.8171207396387,24.8163893377168,24.8148753864756,24.813056782252,24.8113896194821,24.8102476292658,24.8097801780729,24.8102978198841,24.8112475460508,24.8110178028761,24.8060573541363,24.7686979483338,24.7052453615635,24.4000320583611,23.6611499198708,11.0198454584879,17.8390681950338,18.8295993414131,19.1462741425591,19.2326563476518,19.2539650524271,19.2559000815825,19.2540041663981,19.2520344076825,19.2506958866114,19.2499034878569,19.2494645233798,19.2492306869192,19.2491113535878,19.2490570001699,19.2490453039655,19.2490702440024,19.2491420187193,19.2492900147049,19.2495725490341,19.2500927001223,19.2510123140387,19.2525201202273,19.2546157598592,19.2560774574279,19.251225111803,19.2185500862489,19.062361285551,18.6856165641402,10.6003654730955,12.4225224275843,17.906226236364,19.0139242225138,19.3244921799462,19.4126847939624,19.4338843841903,19.4357301259061,19.4337402179015,19.4317154898392,19.4303492904272,19.4295439130854,19.4290990516994,19.428862826626,19.4287425649987,19.4286879010219,19.4286761710067,19.4287012712677,19.4287734577962,19.4289223557412,19.429206743863,19.4297306628056,19.4306567770628,19.4321756912401,19.4342812733593,19.4357763909741,19.4307456319682,19.3977453888269,19.2481385441434,18.7724359970088,11.858098416607,12.5322223179605,13.9932226777838,14.8798180985651,15.1965456958308,15.3170011903548,15.3586042621024,15.3714535315183,15.3751608838396,15.3760560657592,15.3762421388925,15.3763322503846,15.3764259065925,15.376525934473,15.3766108452217,15.3766579432345,15.3766511859289,15.3765887119588,15.376482154604,15.3763540191796,15.3762439698074,15.3762019107431,15.3763026471094,15.3765196227933,15.3763143147922,15.3731108598958,15.3604316595804,15.2859564888434,15.1183939641885,14.1127448116935,12.5322223092783,11.9352658240201,12.4098667310112,12.732885530283,12.9405397061001,13.023664903836,13.0643858655862,13.0807689376599,13.0876097283962,13.0905189793276,13.0917246626796,13.0922389074072,13.0924580740942,13.092545559082,13.092564062685,13.0925374631689,13.09247916014,13.092397249577,13.0922933365876,13.0921617288205,13.0919925128083,13.0917545754173,13.0913676378404,13.090496962937,13.0882479296179,13.0799514480607,13.05779757884,12.9838000530525,12.7747322183791,12.4327828579782,11.9352658285349,11.0784870336646,11.1690822830697,11.2912970186854,11.3727077457146,11.4274476867012,11.4540768224964,11.4687565839338,11.4757603541237,11.4790943167534,11.4805795119449,11.4811833251435,11.4813891825912,11.4814234781528,11.481398539561,11.4813711581874,11.4813664741191,11.4813883589015,11.4814245075257,11.4814441963227,11.481393115443,11.4811520150662,11.4805257474935,11.4787877574806,11.4751019570232,11.4648889708844,11.4437776537888,11.3927100121179,11.3127660856359,11.2376572048545,11.078487033188,10.3485892116947,10.3650552693336,10.4077148322773,10.4434768787453,10.4682843717708,10.4851896577923,10.4947254772153,10.5003201356495,10.5032994753446,10.5048514014778,10.5055998709268,10.5059146422055,10.5060121850884,10.5060164449095,10.5060002315797,10.5060007653986,10.5060265963524,10.5060616913179,10.5060601325472,10.5059459747406,10.5055423208111,10.5046580611341,10.5025187114772,10.4985674825723,10.4902146625247,10.4754171065248,10.4524251932887,10.4124069350346,10.3875157464569,10.3485892106071,9.87991694328122,9.87957339025518,9.89251149009835,9.90628126407769,9.91821212541008,9.92673429761009,9.93278656819891,9.93659248929757,9.93900007645966,9.94040594648259,9.94118556748082,9.94157390077216,9.94173681046683,9.94178510745535,9.94178994379824,9.9417915436171,9.9418000992558,9.94179548828681,9.94172085944319,9.94150610839318,9.94096649243251,9.93998748237131,9.93805892615766,9.93495868191921,9.9299393031842,9.92222405154971,9.91567357202475,9.90461198122528,9.89107438449131,9.87991694244755,9.66153186650643,9.66244368051996,9.6696117382968,9.67579973850788,9.68183439742949,9.68675610392359,9.69050613486561,9.6932560171381,9.69512224332719,9.69633784747453,9.69707178492887,9.69748048233903,9.69768166247771,9.69776489097129,9.69779281579177,9.69780020479014,9.69779420761932,9.69775706455794,9.69763003400026,9.69735146871005,9.69678434600758,9.69582356420496,9.69424862744961,9.691818730285,9.6886779739224,9.6837589135528,9.6785391370829,9.67304634322551,9.6667395861292,9.66153186955209,9.60609710193518,9.60761544290982,9.61316928586673,9.61744769115163,9.62156841725294,9.6251158914022,9.62803500417009,9.63026726862186,9.63189741701296,9.63300758544867,9.63372412199395,9.6341540789753,9.63439297459203,9.63451204061324,9.63456358105129,9.63457849532579,9.63456020485851,9.63449198868807,9.63432868407347,9.63400519558678,9.63343793165361,9.63251361797912,9.63121423114256,9.62929586740613,9.62712796504301,9.62445667714262,9.62128561088287,9.61681531589625,9.61044890547447,9.60609710188339,9.62430863600768,9.62494514700821,9.63017053365353,9.63358825459096,9.6370363300519,9.63993411134887,9.64240505634554,9.64435725609021,9.64581906267236,9.64685111338391,9.64753261122339,9.64795127219483,9.648186702086,9.64830649193422,9.64835852393046,9.64837308574174,9.64835663566917,9.64828840688702,9.64812711887414,9.64780661527557,9.6472699791721,9.64637971636724,9.64518615637901,9.64349952095828,9.64143975594759,9.63883934042189,9.63615660506369,9.63258793357657,9.62714350219626,9.62430863434224,9.76985545895967,9.76934265039802,9.77383514620587,9.77607089330947,9.77833352985985,9.78023052284847,9.7819034414764,9.78331503591783,9.78443668706919,9.78526200229703,9.78582530711115,9.78617528036382,9.78636829034026,9.78646020805291,9.78649802203527,9.7865104303834,9.78650341073159,9.78645692714342,9.78633479250237,9.78607141558208,9.78565107568634,9.78498297256419,9.78410124576011,9.78299511463666,9.78186411159046,9.7803008646914,9.77823954641699,9.77553117297751,9.77011805673768,9.76985545766648,10.1657724609336,10.1663252756129,10.1716003563827,10.1731690363565,10.1746572501161,10.1756782908716,10.176623076033,10.1774590990891,10.1781786833228,10.178733705018,10.1791142466216,10.179344759422,10.1794625854721,10.1795118396488,10.1795307956075,10.1795434111819,10.1795519620022,10.1795345507909,10.1794666739267,10.1792960909337,10.1790083633711,10.1785725253042,10.1780225641342,10.1772901150195,10.1765039464004,10.1755952945992,10.1741934986238,10.1722454249299,10.1671101488601,10.1657724622245,10.9313527470686,10.9347624567514,10.941679560557,10.9430936157019,10.9442610662345,10.9448683744902,10.9454220272514,10.9458631424612,10.9462263654896,10.9465154646387,10.9467202830088,10.9468480585248,10.9469137291573,10.9469420071332,10.9469551224848,10.9469666241044,10.9469808771612,10.9469841785646,10.946964069249,10.9468968599305,10.9467744469832,10.9465780039891,10.946358445153,10.9461033747997,10.9457446357954,10.9451787020432,10.9439753929969,10.941965119721,10.9352220358283,10.9313527473388,12.2066629867732,12.2132362995906,12.2229130549622,12.224394840079,12.2253863314189,12.2253959589729,12.2254393661497,12.2255125013763,12.2255664750795,12.2255861455578,12.2255699301767,12.225538823562,12.2255075900627,12.2254840704091,12.2254748392096,12.2254792949563,12.2254960819841,12.2255204352225,12.2255492294615,12.2255766083013,12.2256092686292,12.2256325234938,12.225635429199,12.2256125033578,12.2255251756074,12.2252284002672,12.2242128626179,12.2220476921678,12.2132312806081,12.2066629867602,14.205067673256,14.2148217903223,14.2279964189271,14.2293149571109,14.2306796024739,14.2308864566101,14.2306929989608,14.2303905744635,14.2301166822112,14.2299073220415,14.2297487136115,14.2296201553322,14.2295272077155,14.2294670114206,14.2294360656325,14.2294366981527,14.2294732859695,14.2295547470561,14.2296939884926,14.2298945208293,14.2301590843322,14.2304806562959,14.2308418497083,14.231187562459,14.2314356603513,14.2314616501321,14.2305411399428,14.2283358203803,14.2163256187087,14.2050676729089,17.2876529868553,17.2985099553812,17.3163674631341,17.3163782421672,17.3158414471634,17.3150351015671,17.3145554370432,17.3139873903728,17.3133286116914,17.3126294061832,17.3120382315165,17.3115853047028,17.3112661009632,17.3110753085343,17.3109828199506,17.3109666869834,17.3110172084243,17.3111377573677,17.3113501103209,17.3116840632291,17.3121599538495,17.3127713037324,17.3134765153022,17.3142323115522,17.3149045053857,17.3153446633248,17.3148265880011,17.3126912106305,17.2981858397509,17.2876529862946,22.083530564816,22.0863591814739,22.1073037037647,22.1104033669047,22.1128713964188,22.1125202639596,22.111858435273,22.1111124405551,22.1106164194948,22.1101527914768,22.1096707367185,22.1092561138411,22.1089025265285,22.1086402042682,22.1084912663928,22.1084709364079,22.108596910713,22.108876628076,22.109300420625,22.109845719001,22.1105044277999,22.1112946608566,22.1122390393838,22.1132544744336,22.1142698263524,22.1149274121383,22.1141918214396,22.1127212309726,22.0922435329547,22.0835305645172,29.6435328197823,29.6166304083444,29.6335617150158,29.6311839522774,29.634687580612,29.6362311035231,29.636749545958,29.6359672900371,29.6348608955186,29.634187947486,29.6337127049161,29.6334065252852,29.6331986221005,29.6330387769453,29.6329343411102,29.6328976995495,29.6329463766999,29.6330829515774,29.6332972043942,29.633567079408,29.6338595368324,29.6341679782161,29.6345491226021,29.6350699179758,29.6353100900128,29.6352856095574,29.6326593273129,29.6298100945059,29.6105852911562,29.6435328196528,41.4459765868094,41.3503905880518,41.3928891901039,41.4152501637993,41.4285055871966,41.4336688506056,41.4363076853051,41.4391714815639,41.4407634462898,41.4421945950349,41.4436205613391,41.4447772636133,41.4455447740433,41.4458598613647,41.4458618015229,41.4457948049397,41.4458614141823,41.4460588828538,41.4461597006519,41.4459466852617,41.4454635141511,41.4449680191101,41.4446917485369,41.4446892488838,41.4445982264452,41.4420201657778,41.4349658401707,41.4231881608985,41.3809184101112,41.445976588297,58.4818984924264,58.4175581526533,58.4452688097732,58.4726542205896,58.4831250512868,58.4869735050845,58.4789448885913,58.4727753499753,58.4702951568752,58.4703090382398,58.4725557612604,58.4760149348285,58.4798952185317,58.4835204721491,58.4862954806302,58.4877665602133,58.4878531457477,58.487089671437,58.4860597819545,58.4850714009897,58.4846418892787,58.4856062013176,58.4886311419797,58.4934733543415,58.4987616874499,58.5026322714399,58.4886206105626,58.4672851412617,58.4038831030767,58.4818984970125,78.2275965665814,78.8603620348628,79.0236574740912,79.0824238746166,79.0606960355459,79.0489885127571,79.0304209887544,79.0022409476653,78.9775739314433,78.9584773614868,78.9456758601981,78.9387437949549,78.9363961017986,78.9375327437216,78.9412910820779,78.9468003628068,78.9527402454011,78.9577920485517,78.9631896932987,78.973133004114,78.9911528552123,79.0184351834388,79.0550519534704,79.1004142692775,79.1497831823168,79.2007600887103,79.2379653931413,79.1850571470176,79.0370768529822,78.2275965737074,92.6329456880278,93.0514362026049,93.0445798893881,93.079675989605,92.9905339007985,92.811992895014,92.6500512273455,92.5175051350466,92.4165052438483,92.3431952237436,92.2899803145917,92.2515418061747,92.2240639128476,92.2056399035399,92.1961637741547,92.1960429689181,92.2046795761749,92.2223675865337,92.2506982151605,92.2905887730993,92.3439370314787,92.4147551599527,92.5073467117338,92.6276120600364,92.7776253970138,92.9510981455268,93.1635840043668,93.307126657998,93.2382401201607,92.6329456943174,96.766993332657,96.5226319749451,96.2026246185549,95.930678458302,95.6901233274042,95.4789822874098,95.3032767997543,95.1607256223628,95.0478153657473,94.959772654445,94.8921601293904,94.8415510769503,94.8053757772836,94.7819404781066,94.7702210910553,94.7697390672952,94.7805368962772,94.8030727148162,94.8381479792333,94.8873475537848,94.9532349627815,95.0392118239229,95.1494422675574,95.2880039068817,95.4580108444169,95.6608931567084,95.8911084940524,96.1441214514183,96.4312187055073,96.7669933349209,96.8093392770626,96.4961461008119,96.1916651994137,95.9311869254758,95.6944882055596,95.4856456409341,95.3105863010693,95.1679016693954,95.0545276156139,94.9658886243308,94.8977561583491,94.8467249572082,94.8102556889858,94.7866484748868,94.7748499280268,94.7743546414908,94.7851579045143,94.8077037881276,94.8428834789282,94.8923106619077,94.9584905088333,95.0447787479371,95.1552215171912,95.2938177874687,95.4636979715596,95.6656532061725,95.8954883760229,96.150792328149,96.4649975062383,96.8093392751051,95.7956690421144,95.5302034760693,95.3064107700699,95.0589254993107,94.8297248420379,94.6400327759604,94.4720943882701,94.3371325896483,94.2279444009486,94.1423528683161,94.0768449827624,94.0280870844227,93.9937572980794,93.9717628724165,93.9607642106239,93.9600948690048,93.9697220825951,93.9899543315913,94.0221137585544,94.0681600611249,94.1305389029962,94.2122997312291,94.3169297812847,94.4470993912459,94.6057036492729,94.7954987343281,95.003097284853,95.3103273151308,95.640104771027,95.7956690365783,86.6860122419275,87.7752926940134,87.7767883349344,87.6983296673698,87.5603383749596,87.4470026785123,87.3458965393795,87.2596062118383,87.190444834275,87.1362875702222,87.0968496208475,87.0696043314636,87.0519226342113,87.0408509007155,87.0343330277895,87.0316078092416,87.0325723078007,87.0383471499738,87.0514635017342,87.0740626691717,87.1074347981981,87.1525516483539,87.210669157854,87.2845856727558,87.373789329153,87.4924959495542,87.6265163594311,87.7036836795643,87.6871308507908,86.6860122347817,68.4147831853212,68.6053996995959,68.6318966092695,68.6648685746124,68.6684172497438,68.6548999195799,68.6401206882626,68.622182858886,68.6066223695154,68.5943342045229,68.5860284110395,68.5811560195907,68.5783915698779,68.5762408448626,68.5735100082845,68.5697297390346,68.5652939685171,68.5610663773865,68.5578479294626,68.556126250571,68.5558994062681,68.5570993660951,68.559585256042,68.5648631390607,68.5743170869015,68.5854228832118,68.612653871587,68.5909920073434,68.5419121428044,68.4147831790365,49.1959327546897,49.1833671092568,49.22057018974,49.2229369769871,49.2326020895541,49.2299805887747,49.2265801895948,49.2223338206656,49.2189383023955,49.2160277925048,49.2134819423774,49.2111502621261,49.2090648494765,49.2073187253681,49.2059948327589,49.2051429457314,49.2048313664343,49.2050589314396,49.2056516831359,49.2064798515862,49.2075536918681,49.2091741462163,49.2112760221399,49.2133518332254,49.213846996758,49.2050532777911,49.1758040127767,49.1227754964509,49.0559809712855,49.1959327516719,34.371432086665,34.5837851285683,34.7277513863869,34.8278866920624,34.868239320236,34.8764472499729,34.8790245030398,34.8787793031049,34.8787885840619,34.8791409279763,34.8795590664477,34.8797160262813,34.8794466234634,34.8788686341955,34.8783246198475,34.8781266820762,34.8782287951245,34.8782451495843,34.8777765667237,34.8767329139574,34.8752838474133,34.8737418701648,34.8725839853288,34.8706427235629,34.8677254717919,34.8530019189633,34.8254758974251,34.7354552828494,34.5511097694762,34.3714320866619,23.8266801656816,25.0229697872385,25.1845643307271,25.1378946161032,25.1236660573198,25.1013065834312,25.0885412100865,25.0820193157783,25.0793394696184,25.0789251767426,25.0797467252926,25.0812617266343,25.0830971849193,25.0848830054911,25.0861687733324,25.0865251490956,25.0857953568206,25.0842379710623,25.0823369967676,25.0805597639689,25.079295666,25.0787017636637,25.0790999403603,25.0799629756136,25.0796314198817,25.0745523701072,25.0378501848811,24.9669366438225,24.7026418790569,23.8266801692738,12.4225224436402,17.90622649051,19.0139244931913,19.3244924485668,19.4126850609732,19.4338846507791,19.4357303923568,19.4337404843218,19.4317157562591,19.430349556853,19.429544046301,19.4290993181345,19.4288630930634,19.4287428314375,19.4286881674612,19.4286764374464,19.4287015377073,19.4287737242355,19.4289226221799,19.4292070103007,19.4297307960239,19.4306570434983,19.4321759576766,19.4342815398042,19.4357766574571,19.430745898546,19.397745656061,19.24813881142,18.7724362614566,11.8580985209886,13.3240350647924,17.9694888406286,19.1621213353419,19.4681035646742,19.557842818942,19.5788791541039,19.5806487481242,19.5785776408708,19.5765073576719,19.5751184432702,19.5743024971084,19.5738530500656,19.5736149765055,19.5734940005135,19.5734391202454,19.5734273719357,19.5734525927675,19.5735250751622,19.573674631341,19.5739603979137,19.5744870447822,19.5754181367033,19.5769455672603,19.5790591886916,19.5805760546639,19.5754407772115,19.5421390447216,19.3969194717191,18.8556860000417,12.6469924499917,12.5935806255382,14.0882624019321,14.9900326505853,15.3140752336033,15.4361401218387,15.4782789422324,15.4912741949626,15.4949755769,15.4958527547288,15.4960190095679,15.4960951876635,15.4961809812505,15.4962771930507,15.4963608757948,15.4964089184096,15.4964051794132,15.4963463967288,15.4962442866786,15.4961223746432,15.496019927277,15.4959881781756,15.4961039446681,15.4963426063511,15.4961513828595,15.4929190138272,15.4806245071156,15.4021264620801,15.2557185932036,14.1403650854023,12.5935806184834,11.9828874772262,12.4748439481006,12.8057251774369,13.0187794461686,13.1038884033202,13.1453810500529,13.1620585625224,13.1690008154752,13.171955618852,13.1731903510463,13.1737261502662,13.1739617749138,13.1740615742177,13.1740887619838,13.1740666252102,13.1740084423192,13.1739228889085,13.1738115599928,13.1736694752408,13.1734874452919,13.1732341335086,13.1728277967838,13.1719345372102,13.1696544124766,13.1611924228211,13.1393657006509,13.0618225338608,12.8565725514598,12.4977604541993,11.9828874812171,11.1252643645083,11.2230537787785,11.3493332228448,11.4334304771906,11.4896424803328,11.5170004860785,11.5320120549079,11.5391821659015,11.5425982689198,11.5441264187327,11.5447537088177,11.5449736683447,11.5450167996561,11.5449967837481,11.5449708708216,11.5449645443504,11.5449818384346,11.5450105076611,11.5450198078418,11.5449549942377,11.5446962467942,11.5440453909879,11.5422746532888,11.5385328583486,11.5280858318862,11.5067674282193,11.4535149531368,11.3721794746187,11.2965087914407,11.125264364303,10.3885181743176,10.4085464457272,10.4522313046934,10.4893858016117,10.5150169132932,10.5324290174327,10.5422526760844,10.5479975098221,10.5510517589837,10.5526383666464,10.5534028313561,10.5537248714278,10.5538255233875,10.5538315080412,10.5538162489533,10.5538169809748,10.5538427438592,10.553877031365,10.5538731829679,10.5537547986195,10.5533443040196,10.5524396264756,10.5502663897143,10.5462169108162,10.5376672728899,10.5224486541938,10.4984450174401,10.4561150370573,10.431908818768,10.3885181735766,9.90975103543965,9.91124497564698,9.92439469112138,9.93868897815542,9.95104344774724,9.95986736445114,9.9661095773081,9.97003069909611,9.97250076372146,9.97394021670488,9.97473577595549,9.9751315478634,9.9752973830304,9.97534631063215,9.97535179202643,9.97535410494072,9.97536291981193,9.97535926186865,9.97528520615147,9.97506693804524,9.97452082015061,9.97351873712288,9.97155038389038,9.96834532167943,9.9631747645219,9.95520935493291,9.94866184563059,9.93690400259708,9.92356355592148,9.90975103298028,9.68397785182736,9.68648300118195,9.69361301356359,9.69996042828644,9.70609578967258,9.71109598871998,9.71490103071168,9.71768432092341,9.7195718378046,9.72079692373797,9.72153260036722,9.72193712640445,9.72213224731575,9.72220930684293,9.72223218836127,9.72223881502982,9.7222359119748,9.72220330101991,9.72208363546469,9.72180974310473,9.72124356278184,9.72027236669726,9.71868477147286,9.71621800407387,9.71301861212236,9.70795592273082,9.70268748789693,9.6970286718782,9.69082701394168,9.68397785512304,9.62996759906505,9.63295702457364,9.63827778114659,9.64251707037697,9.64660867890366,9.65012865027987,9.65304137397998,9.65528620565363,9.65693030219927,9.65804778976595,9.65876210361126,9.65918249579651,9.65940674663878,9.65951262891788,9.65955578943329,9.65956859189653,9.65955820751965,9.65950342867534,9.65935392408114,9.65904202219602,9.65848158095929,9.6575502944415,9.65623596519746,9.65431909146338,9.65216916302504,9.64952049946923,9.64638410833412,9.64198266754407,9.63579566693523,9.62996760002457,9.64653487581194,9.64864544582007,9.65381037659808,9.65725944906869,9.66068396770072,9.66357460607644,9.6660420499606,9.66799992441239,9.66947244805292,9.67051047740868,9.67119132103582,9.67160408956052,9.67183015894721,9.67193882138522,9.67198384604428,9.67199704759113,9.67198390429503,9.67192529460334,9.67177483558365,9.67146067872592,9.67092581678315,9.67003274210497,9.66882207964016,9.66711906337586,9.66507020054533,9.66250662383736,9.6598239819265,9.65624260188268,9.65089680529906,9.64653487210023,9.79617019252773,9.79769805729497,9.80160173005537,9.80395873635841,9.80614481372765,9.80800845946463,9.80965046983162,9.81104427690296,9.81215559152667,9.81297543603631,9.8135347614574,9.81387993540229,9.81406894897775,9.81415755940008,9.81419245013949,9.81420525957117,9.81420049659898,9.81415659720174,9.81403877723115,9.81378135754836,9.81336499924691,9.81270796873172,9.81184310793137,9.81076243220035,9.80965357236619,9.8081268050585,9.80611061819078,9.80340680243376,9.79823628105883,9.79617019369103,10.2036531695473,10.2076388420712,10.2122209601295,10.2139740108435,10.2154165204712,10.2164332215854,10.2173619692756,10.2181849782689,10.2188947910789,10.2194415980129,10.2198168757954,10.2200438059278,10.2201587466934,10.2202071822544,10.2202260917867,10.2202381205089,10.2202472529972,10.2202311504682,10.2201636853984,10.2199966659524,10.2197129355122,10.219283007191,10.2187397685232,10.2180195486387,10.2172453412206,10.2163435789677,10.2149410660447,10.2129182518626,10.2081978447952,10.2036531707559,10.9828247594309,10.9909289596352,10.9967966611815,10.9985041223791,10.9996113544005,11.0002329522418,11.0007789460101,11.0012109677595,11.0015649439344,11.0018465268159,11.0020459410776,11.0021710794111,11.0022357061629,11.0022630514922,11.0022764025352,11.0022882177744,11.0023018168135,11.0023061322683,11.0022878413044,11.0022236651857,11.0021067232969,11.0019185454453,11.001707658324,11.0014605675777,11.0011063746597,11.0005448067715,10.9993528279192,10.9971816172128,10.9911869137113,10.9828247596602,12.2749886585707,12.2882675275331,12.2963944110424,12.2983127098841,12.2991956915578,12.2992140300368,12.2992388648876,12.2993040426327,12.299349123955,12.2993604228883,12.2993369031877,12.2992997640933,12.2992653471014,12.2992402747811,12.2992297619042,12.2992343768525,12.2992516368578,12.2992763848844,12.2993073399951,12.2993386944924,12.2993767479095,12.2994076346079,12.2994193961429,12.2994070388726,12.2993270929182,12.2990296880654,12.2980501657513,12.2956444962768,12.2879029122971,12.2749886585142,14.295563828035,14.315342358454,14.326075507427,14.3280841304433,14.3292903875511,14.3295472922472,14.3293339769164,14.3290209811442,14.3287377589881,14.3285225155472,14.3283606491827,14.3282293407166,14.3281336014095,14.3280718521162,14.3280399330603,14.328039739813,14.3280773096619,14.3281612134164,14.3283040105613,14.3285103643566,14.3287824688716,14.3291132609198,14.3294842715456,14.3298409775189,14.3301023265784,14.3301272669693,14.3292635737578,14.3267157277702,14.3162866472396,14.2955638276734,17.4092245748832,17.4357651305048,17.4496467513844,17.4507410740974,17.4498670618611,17.4491119030181,17.448624337044,17.4480577523511,17.4473912049622,17.4466800784028,17.4460782992325,17.4456178085789,17.4452936355539,17.44509960341,17.4450061548021,17.444990086543,17.4450405858728,17.4451618791066,17.4453752218622,17.4457105288441,17.4461887723491,17.446803760493,17.4475136655875,17.4482741751337,17.4489535995974,17.4493836071212,17.4489515265898,17.4463060036268,17.4343124200249,17.4092245743247,22.2500270087242,22.2779022602411,22.2923152886527,22.2973074416759,22.299497350801,22.2992238441492,22.2985653159706,22.2978431169679,22.2973844796944,22.2969547381182,22.2964985222654,22.2960994825512,22.2957531935547,22.2954929557841,22.2953439879681,22.2953253407801,22.2954548897962,22.2957384046419,22.296163808185,22.2967047428473,22.2973513569336,22.2981233413164,22.2990470789696,22.3000410651358,22.3010386303602,22.3016395763726,22.3009955187906,22.298676309291,22.2822450800429,22.25002700843,29.8728612750161,29.8846304766461,29.8917357446582,29.891426647814,29.8949909596082,29.8967644189565,29.8974141751157,29.8966750687686,29.8955980774223,29.8949479493557,29.8944979650212,29.8942188648293,29.8940326335476,29.8938843923938,29.8937789603269,29.8937317470855,29.8937663937647,29.8938878889252,29.8940841105076,29.894329714101,29.8945878252901,29.8948481076566,29.8951658181416,29.8956101365603,29.8957700241099,29.8956082998527,29.8930724117151,29.8888051391467,29.8764560646086,29.8728612748903,41.7475256793861,41.7020041336111,41.7360886418481,41.758839439163,41.7721364622277,41.7771664129265,41.7799407023157,41.7829056019721,41.7846374164924,41.7862145765074,41.787766725375,41.7890243018234,41.7898722044339,41.7902591954479,41.7903260743849,41.7903069054981,41.7903918953503,41.790580118753,41.7906530273722,41.7903949125087,41.7898549766601,41.7893066096613,41.7889860969465,41.7889271318517,41.7887556648432,41.7859170535583,41.7789053308542,41.7645908629169,41.7320844854754,41.7475256808395,58.8136626809737,58.7830738027981,58.8186941456109,58.8458932808704,58.8580982966906,58.8617812032279,58.8537681490898,58.8473769881662,58.844541766518,58.8442143446564,58.8462143871252,58.8495546507432,58.8533911663947,58.8570054502078,58.8597842447683,58.861283606341,58.8614305378493,58.8607296459112,58.8597682162919,58.8589213251558,58.8587426510838,58.860053517587,58.8635069713885,58.8688415321721,58.8746514902537,58.8789729863805,58.8656540485727,58.8415697986322,58.7898518090212,58.8136626854056,78.4582559933328,79.0314307733617,79.2064393034112,79.2559662524341,79.2332268167604,79.2191913795393,79.1984523072459,79.1687030924883,79.1429350530851,79.1230474630706,79.1095212542967,79.1019596688821,79.0991463109829,79.1000015945334,79.1036473043049,79.1091355284605,79.1151394920954,79.1204279944369,79.1262274181963,79.1366907139234,79.155378439007,79.183496032634,79.2210996420913,79.2675960696902,79.3182815594508,79.370344614837,79.4106160486931,79.3561235830129,79.2112065465304,78.4582560002558,92.6876742987824,93.0077636695211,93.0177582697016,93.049612567602,92.959766294349,92.7815913184518,92.6202011062971,92.4879448652183,92.386841483222,92.313410863021,92.2601602772445,92.2216805253812,92.1941286138222,92.1755846011443,92.1659925213086,92.1658470523446,92.174503361459,92.1922029468163,92.2205887498972,92.2605383562464,92.3139072819889,92.3847374642132,92.4773846164787,92.5977267233284,92.7479529277851,92.9218179793045,93.1323994065992,93.2825273495078,93.192150165873,92.6876743050717,96.7674202748933,96.514673319851,96.2006100478108,95.9284807737082,95.6882509309517,95.4768458347561,95.3008367132666,95.1581228851001,95.0452085817466,94.9572433250683,94.8897164503413,94.8391691796002,94.803018746809,94.7795784734591,94.7678478595561,94.767354493831,94.77813358045,94.800654367235,94.8357057669668,94.8848429304258,94.9506392403587,95.0365249704946,95.1466993115846,95.2852854004432,95.4553925406587,95.6584204820391,95.8888653059671,96.1421043969841,96.4213886989286,96.7674202771647,96.8091899911486,96.490259091108,96.190375262542,95.9299261991272,95.6934630503802,95.4843764084682,95.3092496084005,95.1665825127603,95.0532822626539,94.9647262949457,94.8966674612566,94.8456937797549,94.8092603636137,94.7856699101381,94.7738745698886,94.7733757579475,94.7841721929735,94.8067082858769,94.841864027308,94.8912476920075,94.9573711213701,95.043600089649,95.1539986657639,95.292579345708,95.4625118808624,95.6646081494722,95.8944150683679,96.1497767011368,96.4582337788091,96.8091899891685,95.8076387847108,95.4917131842068,95.282874824329,95.034315177895,94.805298098803,94.6157348361676,94.4481728959617,94.31345638292,94.2045906067328,94.1192856323343,94.054028254974,94.0054713958864,93.9712773209931,93.9493549095937,93.9383745060294,93.9376901526985,93.947275961964,93.9674269227609,93.9994510769544,94.0453162389067,94.1074784683752,94.189008596534,94.2934176601171,94.4234017728055,94.5820546897576,94.7719164019353,94.9784033177092,95.2856843975548,95.60362403365,95.8076387791613,86.8309609277482,87.8040490609394,87.8150597946915,87.7337122297626,87.5948654569668,87.4804638516261,87.378417869317,87.2913224663592,87.2214224824111,87.1666402884198,87.1266663650178,87.0989860865761,87.0809822539992,87.0697146085111,87.0631237806864,87.0604345455919,87.0615522372239,87.0676086757298,87.0811145262867,87.1041869836206,87.138099813553,87.1838156296541,87.2425961979895,87.3170732067027,87.4067483400304,87.5264999498944,87.6623176573292,87.7470486638968,87.7174198333075,86.8309609207057,68.726804484105,68.9280014748667,68.9468326731539,68.9817098418556,68.9836954779221,68.9693346731529,68.9537088751494,68.9348245783726,68.9185346880842,68.9056356558406,68.8968639553331,68.8916535822165,68.8886599108231,68.8863688258297,68.883576231867,68.879806386196,68.8754418303036,68.8713471296959,68.8683515856673,68.8669813460188,68.8672682060041,68.8691564164011,68.8725740155234,68.8790539961268,68.8898430350545,68.9021428697026,68.9287369234447,68.9123208971695,68.8475514322947,68.726804478038,49.5351041621272,49.5701550315447,49.5973638229449,49.6029573812348,49.6126712772273,49.6079850900769,49.6045201107907,49.5999113067828,49.5962856606268,49.5932058202864,49.5905520013322,49.5881672593393,49.5860672016786,49.58432072905,49.5829865360931,49.5820961443747,49.5817181197868,49.5818707159172,49.582401343255,49.5831881134583,49.584238760433,49.5858274449491,49.5878667870136,49.5898578667166,49.5903235006747,49.5820541578502,49.5526119249293,49.4994616424307,49.4357218851049,49.5351041591887,34.6546865707494,34.909774395927,35.0371749412065,35.1222353731232,35.1726474574177,35.180897129985,35.1840996609492,35.1840531409069,35.1841324366022,35.1844835338488,35.1848601713357,35.1849469213751,35.184589076319,35.1839148748177,35.1832828133021,35.1830284213069,35.1831227469654,35.1831761001016,35.1827680661715,35.1817835970143,35.1803825894838,35.1788733295166,35.1777469849605,35.1758066788788,35.1727848958417,35.1579011991898,35.1297740509445,35.0404761096461,34.8573457380604,34.6546865706862,23.9778036832021,25.1455772262455,25.4504312509174,25.3696430352358,25.3553429477083,25.3316125756473,25.3185413817324,25.3119408841555,25.3093004080034,25.3089560445721,25.3098518787214,25.3114332965711,25.3133245681363,25.3151587094404,25.3164873190681,25.3168758505516,25.3161559878438,25.3145764036037,25.3126217829697,25.3107665918693,25.3094130910571,25.3087232035183,25.3090296289695,25.3098321405392,25.3094241739229,25.30425392398,25.2680882213518,25.1920534504513,24.9551648028926,23.9778036880516,13.3240351045783,17.9694891148403,19.1621216139856,19.468103840418,19.5578430932548,19.578879428011,19.5806490219069,19.5785779146289,19.5765076314317,19.5751187170366,19.5743026339943,19.5738533238413,19.5736152502834,19.5734942742926,19.5734393940251,19.5734276457158,19.5734528665476,19.573525348942,19.5736749051202,19.5739606716922,19.5744871816709,19.5754184104801,19.5769458410379,19.5790594624766,19.5805763284821,19.5754410511188,19.5421393191712,19.3969197466443,18.8556862750176,12.6469925725776,13.899311804103,18.0237186994225,19.2759893009532,19.5786948741329,19.669630351242,19.6905072783674,19.6922134532934,19.6900765586597,19.687970431027,19.6865637629345,19.6857396829063,19.6852867467966,19.6850472934328,19.6849257954369,19.6848707666327,19.6848590079569,19.684884316718,19.6849570011735,19.6851070276408,19.6853937798249,19.685922399838,19.6868571069737,19.6883908131915,19.6905106687824,19.6920409595767,19.6868478112485,19.6533028283889,19.5108528986448,18.9279012216475,13.1429935707988,12.6471214719638,14.1638091068266,15.0809487063849,15.4099197572358,15.5333226966473,15.5758001570193,15.5888856819152,15.5925687696522,15.5934236377058,15.5935692891758,15.5936308686008,15.5937078336015,15.5937987595429,15.593880180753,15.5939283299136,15.5939261841149,15.593870775388,15.5937733056437,15.5936568118916,15.5935623354888,15.5935412625541,15.5936712173559,15.5939316774215,15.5937628396221,15.590509869066,15.5785941264683,15.4970418222736,15.3663684867239,14.1715443560477,12.6471214660872,12.0186017614128,12.5262286410772,12.8629684312522,13.0810173050048,13.167563896403,13.2097253004164,13.2266257178343,13.2336441470386,13.2366313631284,13.237885705237,13.2384365025855,13.2386839887319,13.2387928838637,13.2388264292594,13.2388080020936,13.2387505257385,13.2386624543678,13.2385463879198,13.2383973938346,13.2382063094,13.2379428260307,13.237522923046,13.2366136763648,13.2343130653909,13.2257285820848,13.2040966927161,13.1244000548402,12.9204287628003,12.5441951813112,12.0186017650273,11.1601177647918,11.2647357970009,11.3941867541774,11.4805206430098,11.5380063656065,11.565934399333,11.5812209147208,11.588520447394,11.5920012655283,11.5935637946646,11.5942100891556,11.5944418206604,11.5944924101396,11.5944766860498,11.5944521508248,11.5944445637005,11.594458132431,11.5944806798944,11.5944815284673,11.5944053063271,11.5941327777532,11.5934628363947,11.5916638944514,11.5878826248827,11.5772751454791,11.5556987336134,11.5008222444003,11.4192502291574,11.3431578200138,11.1601177649516,10.4177721760091,10.4420632417282,10.4864205321373,10.5248543864335,10.5511300255781,10.5689818141418,10.5790323384696,10.5849007561051,10.5880143366279,10.5896286783244,10.5904055763874,10.5907332172971,10.5908365754538,10.5908437730331,10.5908290693586,10.5908300477115,10.5908553071723,10.590888288622,10.5908827304855,10.5907603477041,10.5903429331085,10.5894246502138,10.5872246654547,10.5830897568262,10.5744100159759,10.5588310147101,10.5338529929974,10.4893087192641,10.4661329678946,10.4177721755907,9.93096709725385,9.93481005967107,9.94780245962935,9.96260577154633,9.97532700018708,9.98440992865856,9.99082133127657,9.99484267301039,9.99736817629285,9.99883751291732,9.99964833416282,10.000051309726,10.0002204069465,10.0002711991495,10.0002774318744,10.0002802026795,10.0002897750669,10.0002859866608,10.0002109927699,9.99999088903362,9.9994375940393,9.99841473478701,9.99641926800002,9.9931195442573,9.98782585393405,9.97965737204934,9.97322566267481,9.96082111247502,9.94788993254634,9.9309670947829,9.69726256150195,9.70165610495272,9.70872973196419,9.71524825713812,9.72149150831832,9.72658782006224,9.73045090390458,9.73327166557313,9.73518060394253,9.73641621450578,9.73715588780179,9.73756106597171,9.73775433993408,9.73782902997172,9.73785056115199,9.73785627690701,9.73785371534951,9.73782338697424,9.73770528976032,9.73743112192242,9.73686564066245,9.73588161458805,9.7342800210097,9.73177673012522,9.72852347057843,9.72326212895654,9.71790550451143,9.71201679780698,9.7061939722418,9.69726256186476,9.6425047508533,9.64672095081389,9.65180250099417,9.6560944290961,9.66018033752142,9.66370533498425,9.66662106034354,9.66887384883125,9.67052551169204,9.67164880507012,9.6723631686467,9.67277986111768,9.67299902943534,9.67309909582698,9.67313842152197,9.67315159330387,9.67314426199672,9.673094539717,9.67295337556487,9.67264461895261,9.67208728108317,9.67115271925234,9.66982961730049,9.66790255531277,9.66576281224427,9.66310749837812,9.65999539387447,9.65553439432565,9.64960767425388,9.64250475458025,9.65874028502547,9.66262405484632,9.66751672614357,9.67106186853776,9.67445142369735,9.67734191860691,9.67980062452611,9.68175596963627,9.68322875390109,9.6842665835729,9.68494690016941,9.68535645646995,9.68557814671684,9.68568316702622,9.68572501888515,9.68573725345163,9.68572665245486,9.68567106711444,9.68552409106244,9.68521391140785,9.68467856339665,9.68378436172742,9.68257054449598,9.68086342290098,9.67882376870272,9.67627432820814,9.67359910509484,9.66999461076069,9.66474677042304,9.6587402794001,9.813908173866,9.81790021011917,9.82101151398978,9.82354473888464,9.82563853972633,9.82747742466035,9.82908780765636,9.83046239134855,9.83156139895362,9.83237308801944,9.83292687514619,9.83326859508922,9.8334544419273,9.83354067819595,9.83357506158391,9.83358774552544,9.83358362318302,9.83354272179925,9.83342704584481,9.83317439738431,9.83276542817071,9.83212163707836,9.83127541983169,9.83022539622899,9.82914763105042,9.82765570345274,9.82567773517117,9.82294108609055,9.81823806818447,9.81390817800362,10.2312445747729,10.2395420175312,10.2431736936031,10.2451785195612,10.246560983419,10.2475832383615,10.2484988589189,10.2493119497312,10.250013592477,10.2505544736143,10.2509249912629,10.2511484277145,10.2512618406901,10.2513091614807,10.2513274959388,10.2513401560477,10.2513490405535,10.251333307361,10.2512673360033,10.2511021544519,10.2508201770998,10.2503946344681,10.2498545848287,10.2491392147982,10.248369477703,10.2474689146823,10.2460827586846,10.2439130605657,10.239820598436,10.231244575159,11.0210988765658,11.0349605560721,11.0394184875216,11.0415167332889,11.0425310842193,11.0431778888684,11.0437154707086,11.0441422891457,11.0444882786143,11.0447637208859,11.0449598231871,11.0450828603824,11.0451464866627,11.0451740940817,11.0451871851172,11.0451987751495,11.0452128717621,11.0452173960728,11.0452001472562,11.0451395904571,11.0450272056618,11.0448456994009,11.0446427225719,11.0444034819742,11.044054891492,11.0434899454045,11.042332353053,11.0399374335839,11.0350255841019,11.0210988768161,12.3264838808345,12.3480370289342,12.3540960887269,12.3565975164223,12.3573222718085,12.357362492238,12.3573643357738,12.3574247182169,12.357463052604,12.3574672234841,12.3574368896619,12.3573951595749,12.3573574770988,12.3573305749685,12.3573198168427,12.3573240610476,12.3573413550715,12.3573673699809,12.357399614667,12.3574335430288,12.3574760954064,12.3575128503106,12.3575311594943,12.3575257260964,12.3574541403272,12.3571499620723,12.3562306135108,12.3534839658036,12.3472271769635,12.3264838806874,14.3642915355915,14.3964290840186,14.4039310943164,14.4068622729373,14.4078420599728,14.4081791529739,14.4079423450034,14.40762310803,14.4073321286373,14.4071145250308,14.4069511116697,14.4068179846177,14.4067210555506,14.4066577105363,14.4066245887536,14.4066244416386,14.4066623007981,14.4067478494095,14.4068943450748,14.4071054948418,14.4073835720392,14.407721676691,14.4081013130484,14.4084667643292,14.4087399098427,14.4087553524641,14.4079837272488,14.4049697073036,14.3966962800328,14.3642915352141,17.5020599832486,17.5480000184394,17.5566666714262,17.5592067066055,17.5578624571312,17.5571894997365,17.5566842976354,17.5561228419117,17.5554472091248,17.5547230374893,17.5541115956664,17.5536438902339,17.5533151037869,17.5531192262931,17.5530248486789,17.5530088572842,17.5530602700007,17.5531817949617,17.5533951657856,17.5537311609247,17.5542107576019,17.5548278184319,17.5555398851455,17.5563031213508,17.5569909277992,17.5573962422669,17.5570970396393,17.5537545152783,17.5451327777754,17.5020599826822,22.3776517596847,22.4366041221883,22.4425335062179,22.4500222590937,22.4517901370632,22.4516363477875,22.4509709372657,22.4502738215064,22.449857646461,22.4494637128368,22.4490331309257,22.448650019183,22.448310391341,22.4480516698356,22.4479028920888,22.4478847848049,22.4480169140451,22.4483045787187,22.4487319087932,22.4492691599999,22.4499050724687,22.4506613409356,22.4515677490129,22.4525405487185,22.4535277395229,22.4540606170989,22.4535771288293,22.4501368850998,22.4390882254103,22.377651759391,30.0490527229575,30.1088895369673,30.1033794432622,30.1056958785382,30.1091375718592,30.1111401511557,30.1119131859338,30.1111897629775,30.1101172528398,30.1094737874894,30.1090385011345,30.1087795634425,30.1086118556383,30.1084734778139,30.1083670936567,30.1083107034607,30.1083312680342,30.1084372356213,30.1086169321777,30.1088424439592,30.109073014128,30.1092933921712,30.1095583746963,30.1099374536485,30.1100311659019,30.1097276737003,30.1074069767397,30.1012761425302,30.0979296426333,30.0490527228276,41.979283683374,41.9953631223563,42.0189284477571,42.0423264736862,42.055645097416,42.06042040591,42.0633267590392,42.0664082144209,42.06829374494,42.0700128946863,42.0716825985521,42.0730315214884,42.0739529390077,42.0744086262981,42.074539706718,42.0745708935813,42.0746805312036,42.0748662043509,42.0749168433615,42.0746204123791,42.0740347298229,42.0734494426407,42.0731047122657,42.0730106073011,42.0727971096282,42.0696807866567,42.0629231661208,42.0453966443479,42.0256876838305,41.9792836847925,59.068020748498,59.0754333116474,59.1198941233366,59.1460462636033,59.160395301218,59.163869736561,59.1558196648566,59.1490826251315,59.1458143435123,59.1450901062834,59.1467975793979,59.1499768401917,59.1537322902236,59.1573037240395,59.1600613269715,59.1615713014747,59.1617710730725,59.1611399618991,59.1602668571745,59.1595873642015,59.1596863307568,59.1613673388086,59.165269747882,59.1711145446928,59.1774857720283,59.1822825634743,59.1699596768,59.1424749688955,59.1055674662016,59.0680207528061,78.6342620409795,79.1307295165849,79.3221965178617,79.3606022025646,79.3369001625397,79.3203547275913,79.2976202150142,79.2664667889465,79.2397274218638,79.219152704476,79.2049895297716,79.1968585580296,79.1936111160682,79.1941950897835,79.1977242941439,79.2031812897255,79.2092305240665,79.214728003019,79.2208950708279,79.2318210195618,79.251081891507,79.2799110421152,79.3183612197021,79.3658391063917,79.4177106331444,79.4706237853644,79.5140422068347,79.4573770019994,79.3151073589016,78.6342620477495,92.7293961641295,92.9302592107824,92.9619186901449,92.9901973887143,92.9004803785606,92.7230302842899,92.562482404442,92.4307577886394,92.3297575462828,92.2563559048637,92.203183133909,92.1647638847314,92.137228117006,92.1186387500574,92.1089802176995,92.1088296915048,92.1175056580013,92.1351857317654,92.1635564737871,92.2034832902025,92.2567869522857,92.3275213903758,92.4200831680017,92.5403058902733,92.6904982159583,92.8645003706111,93.0727389766441,93.2300979621261,93.1144014253247,92.7293961704195,96.7677437629968,96.5043322327927,96.1977874625166,95.9252059585806,95.6854249779417,95.4737112741734,95.2974081461595,95.1545187224963,95.0415920989347,94.9537174344191,94.8862928590002,94.8358196964973,94.7997013171671,94.7762569021991,94.7645140306793,94.7640112175315,94.7747695928559,94.7972703601299,94.8322950321542,94.881361298621,94.9470505784453,95.0328276076521,95.1429298889283,95.2815353590727,95.4517498471968,95.6549320789002,95.8855752637296,96.1393479447284,96.4082480741977,96.7677437652736,96.8090821143739,96.4829111314258,96.1888620061342,95.9282914347766,95.6921404622166,95.4827620627537,95.3075367354461,95.1648817324706,95.0516586226727,94.9631935260437,94.8952146334732,94.844300929998,94.8079006688086,94.7843226072024,94.7725271983838,94.7720221126762,94.7828097517998,94.8053351363723,94.8404634959836,94.8897958795839,94.9558539071365,95.0420177545912,95.1523748648691,95.2909522994576,95.4609605188599,95.6632295795544,95.89293392175,96.1483575760336,96.4498969880479,96.8090821123758,95.8170848955385,95.4392990123637,95.2493567341826,94.9989087088416,94.770423281185,94.581113591923,94.414008402274,94.279616055192,94.1711046921335,94.0861170518753,94.0211315411344,93.9727940039204,93.938750638189,93.9169103909419,93.9059530440653,93.9052482320589,93.9147745235789,93.9348189134708,93.9666798479821,94.0123323807581,94.0742418889067,94.155492854145,94.2596115364485,94.3893117181347,94.547864073244,94.7376831079155,94.9429591991801,95.2512708732801,95.5546950980829,95.8170848899779,86.9431187193204,87.7795639091041,87.8030300174523,87.7190142089158,87.5793490343195,87.4642201807634,87.3615005518311,87.2738507280542,87.2034315755251,87.1482102781739,87.1078544967096,87.0798616010437,87.0616229028239,87.0502080154241,87.0435593561748,87.0408933476389,87.0421235932471,87.0483933475154,87.062192713761,87.0856095687574,87.1198957636002,87.1660043902729,87.2252034102352,87.2999886213228,87.3898477127176,87.5103470137799,87.6469482270924,87.7394889841523,87.6906010064537,86.9431187123559,68.9680560931928,69.1753621150315,69.1842561897938,69.2223055253031,69.222979355602,69.2078423020013,69.1913633264422,69.1715956676187,69.1545908791044,69.1410940985168,69.1318523502727,69.1262875175697,69.1230488138496,69.120610003257,69.1177605246378,69.114021064816,69.1097607871289,69.1058385275965,69.1031050477168,69.1021224535802,69.1029574772433,69.1055710663965,69.1099509648503,69.1176543564127,69.1297682422768,69.1434260220486,69.1692511329141,69.1598547759984,69.076803374456,68.9680560872947,49.7978218537188,49.8954728524819,49.9095957229863,49.9167099511029,49.9258401288629,49.9194148556519,49.9156875206365,49.9107262271583,49.9068642716763,49.9036194014525,49.9008682990888,49.8984411135189,49.8963336030121,49.8945921718784,49.8932515468068,49.8923270716168,49.8918884654755,49.8919709814145,49.8924425223069,49.893190200416,49.8942192913465,49.8957824204125,49.8977721317707,49.8997092580451,49.900133220836,49.8924435050087,49.8624544494792,49.8093666368076,49.748341593828,49.7978218508529,34.8736485221755,35.1732185465328,35.2889834992509,35.3648095479059,35.4228245157605,35.4316131701582,35.4353511206342,35.4354902514194,35.4356301563915,35.4359763312947,35.4363143353079,35.4363424823212,35.4359134852414,35.4351625578401,35.4344586602466,35.434152413111,35.4342294701105,35.4343011732913,35.4339327951487,35.4329909953464,35.4316277881679,35.4301454576297,35.4290469192141,35.427112648044,35.4240088302435,35.4090049519281,35.3806559247201,35.2907098823088,35.1150188434481,34.8736485220495,24.1047312638892,25.2613331934875,25.6684946173089,25.5640277269019,25.5487459530138,25.523836262259,25.510483123533,25.5037979226052,25.5011772537695,25.5008786325436,25.5018216882141,25.5034419028329,25.5053627608237,25.5072213673042,25.5085752145954,25.5089898439173,25.5082877113033,25.5067066801289,25.5047276640313,25.5028267510891,25.5014163674654,25.5006618151741,25.5009050090794,25.501672663628,25.5012156855297,25.4959830781291,25.4602203898355,25.3811216200216,25.1605669335123,24.1047312696445,13.8993118691881,18.0237189895395,19.275989585717,19.5786951554482,19.6696306312517,19.6905075579892,19.6922137328024,19.6900768381488,19.6879707105196,19.6865640424343,19.685739822659,19.6852870263057,19.6850475729441,19.6849260749494,19.6848710461458,19.6848592874703,19.6848845962315,19.6849572806867,19.6851073071535,19.685394059337,19.6859225395936,19.6868573864844,19.688391092703,19.6905109483005,19.692041239124,19.6868480908813,19.6533031084695,19.5108531795377,18.9279015042612,13.1429937097398,14.2519359315573,18.0653532110868,19.3568214684937,19.6573692930875,19.7491389464595,19.7698883124897,19.7715461250713,19.7693607281057,19.7672287072054,19.7658092986547,19.7649794404901,19.7645240520001,19.7642836475009,19.7641617971193,19.7641066715816,19.764094909857,19.7641202806604,19.7641930924047,19.7643434321224,19.7646308436667,19.76516079189,19.7660979407804,19.767635941854,19.7697602526931,19.7712981646893,19.7660753789456,19.7323580214728,19.5915221219909,18.9836526184744,13.4452502620626,12.6881045820936,14.2229140380449,15.1533878974334,15.4851238103179,15.6095748385629,15.6522103493245,15.6653290117255,15.6689837638877,15.6698122460125,15.6699371944395,15.6699836694387,15.6700508226092,15.670135816019,15.6702137881852,15.670260755394,15.6702598664319,15.6702070300225,15.6701135364714,15.6700031241643,15.6699162340701,15.6699052958307,15.6700503050305,15.6703319671599,15.6701945188449,15.6669201364315,15.6554476422971,15.5713518474398,15.4532478685703,14.2026236069887,12.6881045762486,12.0435063271548,12.5647651436084,12.9056559155443,13.1283072937644,13.2157261786229,13.2584714195378,13.2755253656134,13.2825975013545,13.2856060678983,13.2868719703753,13.2874323774623,13.2876876455015,13.2878026477977,13.2878409576308,13.2878253425242,13.2877686546839,13.2876797104239,13.2875607721722,13.2874074803405,13.2872112745014,13.2869412907413,13.2865133485851,13.2855917209517,13.2832846599216,13.2745957528945,13.2531299197672,13.1722163245636,12.9678727923121,12.5755944446506,12.0435063304642,11.1843235985905,11.2955178474591,11.4272204658642,11.5153371652825,11.5739037103616,11.602236159781,11.617743738777,11.6251365955339,11.6286653433295,11.6302541002208,11.6309151473626,11.6311563087941,11.6312130019385,11.6312008155371,11.6311775277698,11.6311689352144,11.6311794793445,11.6311971905038,11.6311912086497,11.6311062884994,11.6308225372322,11.6301389859521,11.6283181277031,11.6245126239618,11.6137965254644,11.5919788365519,11.5359358730969,11.4547526941522,11.3786505955867,11.1843235991466,10.4378076587886,10.4669909006917,10.5116157588698,10.5512111655067,10.5779486337089,10.5961787597808,10.6063963934522,10.6123652754333,10.6155242632536,10.6171600365779,10.6179466161058,10.6182786810707,10.6183840442467,10.6183922957188,10.6183780334993,10.6183788972464,10.6184036227253,10.6184354726515,10.6184278147457,10.6183021560402,10.6178796045904,10.616950281995,10.6147306156237,10.6105300831381,10.6017621029136,10.5858849226311,10.560072798555,10.5134089658784,10.4915755509158,10.4378076584607,9.94535905007723,9.9521841009351,9.96470053973106,9.97998849597683,9.99299452451724,10.0022826889671,10.0088309115942,10.0129295510948,10.0154990514893,10.0169918392695,10.0178144272241,10.0182234350376,10.0183954775226,10.0184476556634,10.0184549247032,10.0184583642774,10.0184680439483,10.0184643296674,10.0183888336826,10.0181661953786,10.0176076235473,10.0165695568095,10.0145531071955,10.0111758161136,10.0057981546735,9.9974522466856,9.99122772893081,9.9782372494752,9.96592843410795,9.94535904925699,9.70483188689632,9.71137999519035,9.71826367356965,9.7249636923726,9.73129803939071,9.73649636864852,9.74041813669162,9.74328183652689,9.74521373744364,9.74646257772725,9.74720843551903,9.74761571955736,9.74780932194618,9.74788342060354,9.74790379096271,9.74790916395231,9.74790658004387,9.74787621238482,9.74775843567205,9.74748368358061,9.74691528813451,9.74592016099582,9.74430681575544,9.74176252752894,9.73847070857761,9.73299969594768,9.72754404847562,9.72140058544276,9.71618582308649,9.70483188281693,9.64821679686623,9.65351474484175,9.65834844226247,9.66275906623186,9.66685223396896,9.67040237014883,9.67332706954371,9.67558686618629,9.67724313988128,9.67836922379594,9.679084921261,9.67950156267413,9.67971941975285,9.67981852000572,9.67985734202487,9.679870147568,9.67986421847795,9.67981608010752,9.67967675189744,9.67936811527187,9.67881295192664,9.6778710042303,9.67654505354916,9.67459646821118,9.67245697702819,9.66977490632675,9.66669209105903,9.66206867721966,9.65650232442768,9.64821680111798,9.66462543575123,9.6705878392035,9.67499896512124,9.67868781057282,9.68202124636983,9.68491359895315,9.68736013512321,9.68930914676553,9.69077824510378,9.69181382274647,9.69249184410083,9.69289910273958,9.69311842187297,9.69322071258157,9.69326121888909,9.6932734066818,9.69326314675346,9.69320973600069,9.69306518138921,9.69275653142338,9.69222290867149,9.69133084595123,9.69011924198371,9.68841590677736,9.68637957761485,9.68382607920695,9.68117674326481,9.67753536680402,9.67247883128131,9.6646254331909,9.82567468470234,9.83259362109777,9.83475768092219,9.83751103545263,9.83950708495569,9.84132998734187,9.842912694211,9.84427179033247,9.84535924418077,9.84616368507215,9.84671286421119,9.84705101969643,9.84723476066527,9.84731977385903,9.84735307594641,9.84736615542667,9.84736293316782,9.84732320926281,9.84720988688873,9.84696195427072,9.84655884605927,9.84592777248862,9.84509820171657,9.84407664907669,9.84303467122692,9.84157111372832,9.83963278387838,9.83681180325373,9.8327993206245,9.82567468874188,10.2499525861735,10.2634319162224,10.2658492751026,10.2681802227881,10.2694845703356,10.270524374413,10.2714280148298,10.2722354290433,10.2729318144512,10.2734682416716,10.2738356580674,10.2740569725222,10.2741687332036,10.2742156809035,10.2742340284635,10.274246296329,10.2742553380916,10.2742400834816,10.2741739432748,10.2740100220564,10.2737287852615,10.2733044172286,10.2727645549401,10.2720476188936,10.2712778182014,10.2703699833819,10.2690177373285,10.2666264662185,10.2633829208833,10.2499525860766,11.0475537008597,11.0682191947979,11.0708949439444,11.0734930252184,11.0743765652543,11.0750621509847,11.0755908663627,11.0760154166294,11.0763553361837,11.076626941909,11.0768204226054,11.0769426290194,11.0770061164768,11.0770333950243,11.0770467522741,11.0770585313182,11.0770721530803,11.0770772714452,11.0770612527642,11.0770028487755,11.076894544089,11.0767187536287,11.0765227702135,11.0762897557794,11.0759472531479,11.0753731600948,11.0742743124421,11.0715815845163,11.0681089378086,11.0475537010325,12.3623536298344,12.3937582013397,12.3972055965047,12.4004547082219,12.4009651891785,12.4010420370783,12.4010160183497,12.4010759402095,12.4011080460061,12.4011069564574,12.4010710106797,12.4010247082193,12.4009845922901,12.4009564346959,12.4009447112154,12.4009491290522,12.4009668658883,12.4009931324597,12.4010266470118,12.4010625776687,12.4011077640379,12.4011482204279,12.4011709675274,12.4011703029485,12.4011068701133,12.4007862080836,12.3999587098582,12.3967555504287,12.3924096378312,12.3623536296194,14.4124201405648,14.4592530761778,14.4626913230321,14.4668043980026,14.4674787932425,14.4679327250422,14.4676651953678,14.4673456286358,14.4670490553367,14.4668314584575,14.4666688289345,14.466535373535,14.4664372575261,14.4663731251221,14.4663392723053,14.4663383063537,14.4663766624565,14.4664637788183,14.4666127189316,14.4668279007042,14.4671110208023,14.4674549158225,14.4678411156051,14.4682123148107,14.4684991170615,14.4684935689003,14.4678529860964,14.464236333984,14.4587340272375,14.4124201401671,17.5672995308916,17.6363729274152,17.6385125389331,17.642907832353,17.6409339456228,17.6403841451005,17.6398484850678,17.6392952530332,17.6386092376212,17.6378714072304,17.6372501787991,17.6367765029721,17.6364442041125,17.6362464694704,17.6361521063653,17.6361368901938,17.6361887091101,17.6363106225891,17.6365237770996,17.6368592386825,17.6373388192542,17.6379564514488,17.6386695744615,17.6394321544103,17.6401287965368,17.6404947081595,17.6403833137091,17.6361237027759,17.6318020452624,17.567299530316,22.4675518106845,22.5636460124165,22.5590012502518,22.5696840470282,22.5708509819983,22.5708727367067,22.5701878925449,22.5695181997882,22.5691489305514,22.5687928890768,22.5683878180134,22.5680194556401,22.5676863388556,22.5674290328558,22.5672792839944,22.5672613313923,22.5673955996741,22.567686566701,22.5681161860992,22.5686508074507,22.5692776714347,22.5700199897614,22.5709120514444,22.5718655488629,22.5728504208259,22.5732981051956,22.5730612611272,22.5681832556599,22.5639587978066,22.4675518103893,30.1733134806843,30.2906973071685,30.2695388091647,30.2751596560655,30.2782396783103,30.2804735354082,30.2813644000398,30.2806298954861,30.2795387600223,30.2788862735649,30.2784567725079,30.2782124098745,30.2780593829343,30.2779299215782,30.2778231816154,30.2777580001035,30.2777653479931,30.2778563135195,30.278020634324,30.2782298776953,30.2784393725794,30.278628328993,30.2788498903989,30.2791730939779,30.2792170179023,30.2787601957518,30.2767994490757,30.2682780183853,30.2762568196418,30.1733134805476,42.1426750088697,42.2319765057285,42.2426127600036,42.2670856662317,42.2804620290744,42.2848485958564,42.2878811335801,42.291089828787,42.2931427037915,42.2949990524379,42.2967753250846,42.2982054460553,42.2991934199055,42.2997129463339,42.2999069114177,42.299989900347,42.3001280849719,42.3003173462089,42.3003515790829,42.3000236147011,42.2994027932959,42.2987956892177,42.2984467522549,42.2983358758902,42.2981209942148,42.294697811271,42.288453943929,42.266910842581,42.2633014726319,42.1426750102588,59.2468543068465,59.2966245570685,59.3506037358909,59.3744572520534,59.3913738558225,59.3946093630658,59.3865051538464,59.3793085427873,59.3755375217988,59.374373316485,59.375754071185,59.3787363973916,59.3823785804083,59.385880455948,59.3885963711766,59.3901037319958,59.3903503270765,59.389794098176,59.3890259754109,59.3885345314575,59.3889310246012,59.3909981310352,59.3953630026298,59.4017265242889,59.4086897280041,59.4139528987865,59.4029573563084,59.3712641571247,59.3525816831806,59.2468543110646,78.7573365944947,79.1601325060759,79.3741349015049,79.3996950390808,79.375163206022,79.355843413834,79.3312724587912,79.298881606925,79.271294698757,79.2501183632062,79.235397075646,79.226754870416,79.2231022615536,79.2234190127161,79.226819977146,79.2322312123999,79.2383082555669,79.2439884043086,79.250490540639,79.2618274402176,79.2815738142022,79.3109963963651,79.350158998599,79.3984771843397,79.4514279321985,79.5049786380588,79.5516498988642,79.4922068146339,79.3521332798604,78.7573366011587,92.7583907762912,92.8181676553234,92.8760932349203,92.9002037047454,92.8115959928644,92.6352645461618,92.4758486556304,92.3448760533794,92.2441974041316,92.1709868468649,92.1180086076083,92.0797516678528,92.0523257050268,92.0337745821324,92.024107626672,92.023973042661,92.0326662620068,92.0502946978664,92.0785766584781,92.118392882515,92.1715408613256,92.2420703153962,92.3344014816907,92.4542965617559,92.6041896744252,92.7780254690576,92.9836053266573,93.1486149022372,93.00382519508,92.7583907825822,96.7679616457438,96.4913943258928,96.1940230215939,95.9206142050841,95.6814760385769,95.4693871442694,95.2928059044644,95.1497363063744,95.0367956459805,94.9490257334128,94.881722795688,94.8313417667511,94.795265538839,94.7718195513666,94.760064225218,94.7595526615229,94.7702895566503,94.7927662641176,94.8277597403012,94.8767476444108,94.9423160592026,95.0279650045548,95.137977603926,95.2765914347017,95.4469140827924,95.650276046865,95.8810261734273,96.1358075753846,96.3914925780972,96.7679616480242,96.8090122007725,96.4741120846109,96.187148169966,95.9262596955918,95.690492358714,95.4807683008341,95.3054253769899,95.1627745766513,95.0496266502699,94.9612569348615,94.8933593833063,94.8425031943194,94.8061309505515,94.7825592599727,94.7707603639272,94.7702476219665,94.7810242819769,94.8035373618101,94.8386359131405,94.8879096773628,94.95389432765,95.0399902773565,95.1503107827941,95.2889023505868,95.4590061858044,95.6614855646194,95.8909832913596,96.1465153191464,96.4399559682673,96.8090121987604,95.8240124119898,95.3718358338685,95.2054342114004,94.9518464432756,94.7243642116043,94.5354583011712,94.3688887476355,94.2349068654942,94.1267742952239,94.0421289348437,93.977434355585,93.9293346478314,93.8954616084081,93.8737196436175,93.8627931767978,93.8620626546086,93.8715090509444,93.8914167277314,93.923084056169,93.9684931148061,94.0301120015194,94.1110285284535,94.2147738230017,94.3440707157021,94.5023208390108,94.6919718464069,94.8959975043578,95.2066587100772,95.4927083074562,95.8240124064209,87.0235634311985,87.7032054990009,87.7423162925535,87.6559914681335,87.5153929192296,87.3998785463858,87.2967122276791,87.2087496715902,87.1380334579721,87.0825527851454,87.0419659067107,87.0137741824294,86.995377061895,86.9838565839911,86.9771618416099,86.9745081206775,86.9758170274065,86.982238923664,86.9962405679237,87.0198782621098,87.0543808812866,87.1006952650386,87.1600943129385,87.2349877416711,87.3248028522174,87.4457601337405,87.5819103948591,87.6824368909559,87.6073159374424,87.0235634242894,69.1405613240085,69.3498554238827,69.3463097077475,69.3889140110665,69.3884692270413,69.3726816515596,69.3553817168227,69.3347817102263,69.3170863780571,69.3030094764628,69.2932978754814,69.2873719343266,69.2838788972202,69.2812896162685,69.2783899106297,69.2746968557371,69.2705681081772,69.2668520224697,69.2644134268416,69.2638477482347,69.2652549896665,69.2686157287428,69.2739654462743,69.2828761575332,69.2962771504757,69.3115042879142,69.3364770090594,69.3362601727224,69.2318908657032,69.1405613182311,49.9857254476161,50.1605193605814,50.1581393122947,50.1655898550138,50.17347087989,50.1655150226808,50.1613848561338,50.1560712488197,50.1519678647956,50.1485640880121,50.1457245520078,50.1432627180902,50.1411535302761,50.1394191626892,50.1380748459239,50.1371211550076,50.1366276909579,50.1366465085927,50.1370640293486,50.1377761356494,50.1387873546752,50.1403342558203,50.1422912600242,50.1442141967853,50.1445654538203,50.1375223480567,50.1064650715033,50.0537137938737,49.995229086373,49.9857254448083,35.0299607123865,35.3778689531968,35.4852113785997,35.5566653954324,35.6205206572345,35.6301112838096,35.6343367878257,35.6346443596137,35.6348390765506,35.635178725777,35.6354847058278,35.635467348168,35.634986716917,35.6341809637378,35.6334220493785,35.6330701317881,35.633121798108,35.6331925114003,35.6328419034883,35.6319246556991,35.6305857761976,35.6291211211402,35.6280428954276,35.6261159661159,35.6229542705926,35.6078556226515,35.5797695612505,35.4875180196518,35.3257738290077,35.0299607122055,24.2006492893774,25.36264266886,25.8418597624692,25.7209997872952,25.7044608135329,25.6785068935939,25.6649013313483,25.6581245525086,25.6555029484227,25.6552244674045,25.6561870319699,25.6578181880293,25.6597411735292,25.6616001143772,25.6629615528494,25.6633953201439,25.6627185723293,25.6611569401194,25.6591823386029,25.6572680748902,25.6558340989834,25.6550463408653,25.6552556800187,25.6560148790548,25.6555361731633,25.6502653238387,25.6147749895883,25.5343860346851,25.3211022831033,24.2006492955012,14.2519360200013,18.0653535122792,19.3568217576096,19.6573695784128,19.7491392305635,19.7698885962206,19.7715464086982,19.7693610117164,19.7672289908209,19.7658095822777,19.7649795823044,19.7645243356324,19.7642839311353,19.7641620807549,19.7641069552178,19.7640951934935,19.7641205642969,19.764193376041,19.7643437157584,19.7646311273021,19.7651609337073,19.7660982244146,19.767636225489,19.7697605363342,19.7712984483565,19.7660756626961,19.7323583056001,19.5915224071827,18.9836529059147,13.4452504132195,14.4423363051533,18.0919167858242,19.4055067500288,19.7048504279932,19.7971078391428,19.8177751616214,19.8194021850491,19.8171868363709,19.8150390507339,19.8136119332925,19.8127786139826,19.8123217687108,19.812080807384,19.8119587628687,19.81190357656,19.8118918201668,19.8119172303516,19.8119901060983,19.8121406294884,19.812428411095,19.812959114878,19.8138976638055,19.8154381482805,19.8175651014383,19.8191066883692,19.8138704685195,19.7800534101367,19.640020857032,19.0192416003413,13.6084731852008,12.7137598319028,14.2673874469055,15.2080260141906,15.5404102142022,15.6656302862144,15.7082573771589,15.7213482102765,15.7249673479598,15.7257654891011,15.7258694778272,15.7259007979446,15.7259576292205,15.7260355684797,15.7261093228023,15.7261544285683,15.7261534610677,15.7261028737297,15.7260134289307,15.7259082343589,15.725829265919,15.725828676232,15.72598807079,15.7262917078875,15.7261941398429,15.7228919698334,15.7119852061231,15.6255126249235,15.5183598754203,14.2307354363551,12.7137598253693,12.0582927949528,12.5910061762291,12.9343756522942,13.1613211230329,13.2489917668728,13.2922582919869,13.3093963728419,13.3165011614357,13.3195218931298,13.3207922863289,13.3213573709334,13.3216169505354,13.3217356069462,13.3217767809577,13.3217634027804,13.3217079413609,13.3216188140753,13.3214990808177,13.3213441593372,13.3211454703986,13.3208729335176,13.3204411655574,13.3195102151087,13.3172149543372,13.3084093793378,13.2871745470007,13.2056643513989,12.9998833716318,12.5942001855138,12.0582927980452,11.1986609790276,11.3162402263786,11.4493094498616,11.5387235003591,11.5982036686943,11.6267605284404,11.6424395934218,11.6498895589398,11.6534498085426,11.6550568180825,11.6557283082187,11.655976519834,11.6560379095827,11.656028515845,11.6560061101365,11.6559967591074,11.6560049665083,11.6560188402526,11.6560077839964,11.6559162295786,11.6556243017835,11.6549330940912,11.6530915734385,11.6492882244274,11.6384955144147,11.6164795380815,11.5596831962912,11.4792303785214,11.4037250672542,11.1986609798576,10.4495680410873,10.4842323736771,10.5286652411803,10.5692989708818,10.5963047251871,10.6148610586042,10.6251847107396,10.6312336958351,10.6344249466383,10.6360769824285,10.6368708805096,10.6372063535629,10.6373134667984,10.6373225367839,10.6373085620372,10.6373093453235,10.6373334615,10.6373640799763,10.6373547607777,10.6372265363974,10.6367987018414,10.6358643185251,10.6336288154279,10.6293786109261,10.6205659690089,10.6044474807284,10.5779681421453,10.5292632352264,10.5090882515721,10.4495680408528,9.95374989430382,9.96424966766893,9.97604546706565,9.99179843704204,10.0049930986802,10.0144272758579,10.0210756539441,10.0252254024,10.0278252832839,10.0293332144464,10.030163717432,10.0305765949512,10.0307506168438,10.0308041181248,10.0308121151055,10.0308159818811,10.0308260620714,10.0308221375772,10.0307457780304,10.0305221672321,10.0299592381813,10.0289095437722,10.0268832974226,10.0234429413102,10.0180164037327,10.0095196208563,10.0035787643036,9.99005344028627,9.97858575924608,9.95374989476703,9.70880620087945,9.71771782627196,9.72419757039862,9.73111008388563,9.73750530267687,9.74280408012647,9.74678047295567,9.74968827910768,9.75164447423178,9.75290797361448,9.75366121350606,9.75407213970609,9.75426676733655,9.75434082850833,9.75436102724391,9.75436595437453,9.75436298932302,9.75433305680066,9.75421447183998,9.7539383279379,9.75336821161014,9.75236101951863,9.75073874097468,9.74815647050413,9.74483874734224,9.73918276491106,9.7336610380586,9.72725348669444,9.72276793877336,9.70880619647662,9.65048048190072,9.65704033965544,9.66151283391085,9.66605473474249,9.67012619887388,9.67368752346713,9.67660976747837,9.67886685186783,9.68052101124533,9.68164529527948,9.68235956496313,9.68277489291337,9.68299192273602,9.68309005367285,9.68312825450321,9.68314121802603,9.68313561461528,9.68308799492701,9.68295063679785,9.68264166082151,9.68208894066499,9.68114395905919,9.67982130848227,9.6778577757397,9.6757334224698,9.67304545186168,9.67001547230865,9.66521761785215,9.66008682204494,9.65048047862432,9.66669631758747,9.67476733386307,9.6785924873391,9.68242573559541,9.68569303317526,9.68858051601125,9.69101019680764,9.69295075109133,9.69441273921551,9.69544412221892,9.69611904326319,9.69652334134683,9.69673987673918,9.69684021275233,9.69687912959249,9.6968907955537,9.69688145532085,9.6968298033392,9.69668679230731,9.69638227791648,9.69585103550729,9.6949629822101,9.693758889233,9.69206339654096,9.69000759473841,9.68741923612501,9.68483235192256,9.68112524884047,9.67649080353726,9.6666963260769,9.83263865451437,9.84311067464454,9.84419189220555,9.84721843841925,9.84911734763924,9.85094152948832,9.85250477755861,9.85385547521313,9.85493632017243,9.85573622128013,9.85628247240303,9.85661902474736,9.85680153106983,9.85688573757665,9.85691907301982,9.85693220439754,9.85692903426218,9.85689068775856,9.8567781712101,9.85653250723897,9.85613420583238,9.8555109439959,9.85469092425616,9.85369341834336,9.85269379846813,9.85124505450497,9.84934600435076,9.84636735716191,9.84317080419956,9.8326386542111,10.2606840101969,10.2801125706384,10.2810399819474,10.2837819819623,10.2849830101569,10.286051787131,10.2869439036949,10.2877490346511,10.2884420382055,10.2889764740312,10.2893418717805,10.2895617067948,10.2896729965963,10.2897196005904,10.2897377292552,10.2897503476224,10.2897590220304,10.2897435092637,10.2896777512622,10.2895137410287,10.2892318447025,10.288807835548,10.2882662599409,10.2875407152378,10.2867661937937,10.2858442533134,10.284548280112,10.2818710363279,10.2797413647422,10.260684010523,11.0630367329757,11.0915802813681,11.0920854981459,11.0953028542146,11.0960148672328,11.0967552158075,11.0972737421862,11.0977005500632,11.09803581783,11.0983053910843,11.0984981809611,11.0986202607752,11.0986837994964,11.0987116502397,11.0987249844371,11.0987365970557,11.0987505310258,11.0987555826966,11.0987400852899,11.0986838525051,11.0985783666397,11.0984062519258,11.0982164669871,11.0979890530556,11.0976538857208,11.0970610127495,11.0960466949303,11.0929676500123,11.0912833392761,11.063036732912,12.3833855916306,12.4261998698679,12.4264652356839,12.4306465186442,12.4308765638746,12.4310088165566,12.4309478357149,12.4310115613228,12.4310388051754,12.4310337101163,12.4309926118579,12.4309430479331,12.4309006174741,12.4308711174127,12.4308592907786,12.4308635205537,12.430881387163,12.4309085195773,12.4309425091646,12.4309791678318,12.4310260605438,12.4310682860198,12.4310930244226,12.431093269223,12.4310394620019,12.430692667241,12.4299913904612,12.4262085785314,12.4242315845284,12.38338559141,14.440723662386,14.5045893994659,14.5030802281882,14.5086687293827,14.5089453858996,14.5095599839674,14.5092530661365,14.5089395229796,14.5086386915049,14.5084249483342,14.5082648311655,14.5081319048939,14.5080339504828,14.5079690162964,14.5079342389175,14.5079331097975,14.5079713005547,14.5080592158968,14.5082105755711,14.5084287485685,14.5087155272612,14.5090636073423,14.5094555031829,14.509829978807,14.5101306765608,14.5100917526577,14.5096283927486,14.5052489018789,14.5031765763567,14.4407236619639,17.6057110540233,17.7016542327547,17.6958704337177,17.7025830164502,17.6997893233572,17.6994134229784,17.6988292811416,17.6982897216472,17.697590620766,17.6968376576224,17.696207646498,17.6957285877899,17.6953933222865,17.6951951074501,17.6951008963695,17.6950865469043,17.6951396253291,17.6952615085293,17.6954736384823,17.6958079332546,17.6962864250875,17.696902992623,17.6976148233137,17.6983742560315,17.6990822014289,17.6993882678433,17.6995321744937,17.6941027976185,17.6950810470461,17.6057110534424,22.5205082465718,22.6598267049028,22.6423604476155,22.657048851913,22.6573941826416,22.6576680846929,22.6569459278727,22.6563062266651,22.6559899030478,22.6556732058559,22.6552928498441,22.6549390244403,22.6546114701556,22.6543549456576,22.6542044050493,22.654185551581,22.654320945296,22.6546153080644,22.6550473397288,22.6555800113557,22.6561993527876,22.6569302078426,22.6578116887371,22.6587455053701,22.6597390559178,22.6600807262346,22.6601909655739,22.6535087783707,22.657673475939,22.5205082462746,30.2464736246001,30.4309744274142,30.3908295086952,30.4005807472284,30.4029844376516,30.4054561724645,30.4064639655312,30.4056908003744,30.4045590598797,30.4038836916636,30.4034512406605,30.4032159072652,30.4030748251602,30.4029524335981,30.402845279997,30.4027728753558,30.4027677078975,30.4028440863875,30.4029948322873,30.4031916413539,30.4033862148496,30.4035509823041,30.4037387932277,30.404015830469,30.4040249939774,30.4033972345237,30.4019686868218,30.3904304275868,30.4122794293449,30.2464736244577,42.2386894603801,42.4130075477862,42.4079182184116,42.4341136822078,42.4476501687463,42.4514956907471,42.454648086331,42.4579876275735,42.460217163961,42.4622039184499,42.4640751178943,42.4655751822935,42.4666227843421,42.4672023577399,42.4674565942593,42.467590777512,42.4677605036734,42.4679583730619,42.4679817506466,42.4676292424835,42.4669840970524,42.4663699847006,42.4660345323892,42.4659233477364,42.4657535342889,42.4619755542535,42.4565671007612,42.4300524140957,42.4461788069482,42.2386894617499,59.3514755953484,59.448299032132,59.5121436876464,59.5319667316658,59.5518993673196,59.5548651662798,59.546727727428,59.538986701991,59.5346610177961,59.5330260494159,59.5340567364018,59.5368115692742,59.540310291671,59.5437187496856,59.5463783763512,59.5478752927644,59.5481649833229,59.5476877576989,59.5470376552768,59.5467494834599,59.5474563527733,59.549919288628,59.5547555876472,59.5616340725654,59.5692145037288,59.5748947456717,59.5655868090759,59.5286759398809,59.5319772858304,59.3514755995124,78.8286758628639,79.1210454067031,79.365291023672,79.3764466175301,79.3513280805945,79.3289125652924,79.3026051358542,79.2691020050232,79.2407746270788,79.2190609552885,79.203851871838,79.1947575923341,79.1907299791558,79.1907789498394,79.1940286261784,79.1993703945916,79.2054571307715,79.211296015204,79.2181034782655,79.229806731588,79.2499589961361,79.2798613235037,79.3196090872635,79.3686428079308,79.4225865021992,79.4766185208991,79.5266919424191,79.4638877753827,79.3256083389603,78.8286758694668,92.7748522899285,92.6702552851079,92.7587321332742,92.7777922297678,92.6913553037749,92.5165797697832,92.3586547239571,92.2286630193047,92.1285450442134,92.0557025018733,92.0030349740139,91.9650385133554,91.9378159470206,91.9193954008849,91.9097936728071,91.9097027243114,91.9184070544804,91.9359501688115,91.9640652942423,92.0036746381075,92.0565727166469,92.1267871401986,92.2187350381459,92.3380766653187,92.4873868244113,92.6606276628962,92.8633962753125,93.0360990458884,92.8584645858257,92.7748522962206,96.7680724035843,96.4755835890111,96.189148174245,95.9144624614897,95.6762635522848,95.4637102900359,95.2868565854269,95.1435994903871,95.030644626865,94.9429969375462,94.8758392694629,94.825571316513,94.7895514028116,94.7661063215839,94.7543340617523,94.7538138597221,94.7645296416613,94.7869773918081,94.8219367319987,94.8708399788485,94.9362724873353,95.0217737502584,95.1316792180133,95.2702851846963,95.4407214816067,95.6443273941087,95.8750170627093,96.1314608035801,96.3708142005477,96.7680724058671,96.8089778426397,96.4639494970263,96.1852212139968,95.923781683881,95.6884663868089,95.4783398777933,95.3028722525325,95.1602188332564,95.0471421504306,94.9588689011156,94.8910520445477,94.8402500584672,94.803900099939,94.7803305077598,94.7685264897817,94.7680049159894,94.7787691712236,94.8012678624889,94.8363327505746,94.8855415489089,94.951446289019,95.0374713015062,95.1477588891857,95.2863818897926,95.4565864862443,95.6593178509218,95.8884807959085,96.1442354362294,96.4283896428322,96.8089778406175,95.8284275760059,95.2878341515869,95.1505402788643,94.8919786254406,94.6661507466653,94.47784641042,94.3119019641699,94.1784286157735,94.0707010581791,93.9864234534018,93.922040049271,93.874204455961,93.8405316777445,93.8189120740685,93.8080284591495,93.8072675221715,93.8166097706399,93.8363447362296,93.8677842210957,93.9129163865521,93.9742022766997,94.0547170480623,94.1579808750426,94.2867222047898,94.4444019387352,94.63372146449,94.8365030261992,95.1512794873047,95.4168550380952,95.8284275704313,87.0730638927429,87.5759416389676,87.6342111269835,87.5461104805002,87.4042534646448,87.2886736344215,87.1852497302262,87.0972011083107,87.0263974591659,86.9708305921957,86.9301507537609,86.901857510946,86.8833635446706,86.8717690720051,86.8650372182516,86.8623870344042,86.8637482633461,86.870270746018,86.8843906723248,86.9081335104829,86.9427105209105,86.9890717961828,87.0484915057476,87.1233584524641,87.2129789055742,87.3341420987223,87.4683263852823,87.5769285833253,87.4676209599271,87.0730638858675,69.2457388587188,69.4534796867547,69.4346660255818,69.4833445173051,69.4819537852694,69.4657086379892,69.4476323288228,69.4262613546909,69.4079080171002,69.3932734814922,69.3831042349082,69.3768202257349,69.3730736954902,69.3703360855894,69.36739290923,69.3637600846408,69.359783371745,69.3562995514059,69.3541827574365,69.3540549810208,69.3560444023846,69.3601542573088,69.3664526771178,69.3765097161365,69.3911179907581,69.4081844255,69.4322888405417,69.443900054181,69.3146457253833,69.2457388530145,50.0999658720176,50.3662588128283,50.3435912436448,50.3506846203671,50.3565648938773,50.3472287268591,50.3425956542444,50.3369134307601,50.3325710244135,50.3290111569706,50.3260904570149,50.3235991710359,50.3214905191798,50.3197646984792,50.3184181727467,50.3174394788437,50.3168986965161,50.3168611431997,50.3172304863792,50.3179133598492,50.3189137680525,50.3204578414765,50.3224062993304,50.3243705177072,50.3245967234674,50.318283079165,50.2854250261636,50.2333745142655,50.1775172710526,50.0999658692479,35.1247265490562,35.5264952004288,35.6272393437433,35.6984870672145,35.7669197856632,35.7773901405108,35.782094562613,35.7825470661243,35.7827932999659,35.7831277959991,35.783409577395,35.783362546257,35.7828508393185,35.7820124338178,35.7812170518427,35.7808261468208,35.7808444291643,35.7808957076383,35.7805401976477,35.7796272010182,35.7782971247515,35.7768378284407,35.7757661911188,35.7738455340017,35.7706530106778,35.7554728001499,35.7282765592392,35.6317154338457,35.4908418753376,35.1247265488371,24.2610982702442,25.4435697552924,25.9726110708803,25.8403927307116,25.8227755585888,25.7958702328268,25.7820477950676,25.7751726101095,25.7725280421804,25.7722441364572,25.7731980014126,25.7748117246427,25.776710071978,25.7785451062986,25.7798962044881,25.7803426101094,25.77969841977,25.7781763132418,25.7762350763069,25.7743398131885,25.7729154539162,25.7721270764686,25.7723333951784,25.7731092603588,25.7726388696129,25.7673390414233,25.7319964032924,25.6518774945721,25.4382500610885,24.2610982763804,14.4423364107408,18.0919170933735,19.4055070417776,19.7048507157618,19.7971081257397,19.8177754478551,19.8194024711842,19.817187122492,19.8150393368605,19.8136122194267,19.8127787570527,19.8123220548544,19.8120810935297,19.8119590490156,19.8119038627074,19.8118921063145,19.8119175164993,19.8119903922458,19.8121409156355,19.8124286972416,19.812959257951,19.8138979499512,19.8154384344269,19.8175653875906,19.8191069745458,19.8138707547783,19.7800536967274,19.6400211448492,19.0192418903679,13.6084733438887,14.5031277919875,18.1017816339514,19.422580140159,19.7215456940463,19.8139620271352,19.8345994960572,19.8362149678538,19.833988944629,19.8318356236694,19.8304058289193,19.8295712981136,19.8291139933034,19.8288728473169,19.8287507499924,19.8286955417702,19.8286837907579,19.8287092153976,19.8287821064927,19.8289326838573,19.8292205800178,19.8297514797316,19.8306904910202,19.8322317342933,19.8343594882951,19.8359019745115,19.8306614250417,19.7968163892064,19.6569938651102,19.0324590879399,13.6606895353056,12.7225933149673,14.2981442414198,15.2453599989288,15.576223258292,15.7019704910648,15.7444300352079,15.7574276729652,15.7610068806502,15.7617700295152,15.7618532746799,15.761869390069,15.7619151906771,15.7619857004778,15.7620542485998,15.7620963519568,15.7620950250401,15.7620458647563,15.7619597711727,15.7618603357873,15.761788819806,15.7617980773917,15.7619726081913,15.762298159496,15.7622507276449,15.7589047640187,15.7487379064989,15.6598215311852,15.5629667014348,14.2540925037237,12.7225933115305,12.0633491528654,12.605289488419,12.9493579530587,13.1804188164901,13.2676334110334,13.3113882603056,13.3285370620344,13.3356543388759,13.3386793974258,13.339947562473,13.3405131474967,13.340773735214,13.3408935674614,13.3409363673203,13.3409244434525,13.3408702356761,13.3407823618405,13.3406632984117,13.3405088584013,13.3403109646337,13.3400387467035,13.3396077393193,13.3386682641285,13.3364064130734,13.3274584754311,13.3065645256074,13.224894342949,13.0169525925278,12.6012474372143,12.0633491544409,11.2035567106815,11.3273412734833,11.4609508144414,11.5511189825632,11.6113888261473,11.6399675979279,11.6557761138465,11.6632461182859,11.6668217091666,11.668439217498,11.6691167751623,11.6693696802521,11.6694342621759,11.6694267413681,11.6694049937458,11.6693949291404,11.6694013195062,11.6694125510962,11.6693977984808,11.6693020590975,11.6690042907991,11.6683114468202,11.6664520467497,11.6626756532812,11.6518302780288,11.6296907284644,11.5724860783895,11.493033532897,11.4188879468178,11.2035567111672,10.453558674736,10.4942881624047,10.5380258627271,10.5795839561998,10.6066444643134,10.6254855615062,10.6358480601728,10.641958535685,10.6451685511256,10.6468314477818,10.6476304724093,10.6479684441983,10.648076937833,10.648086741529,10.6480730349993,10.6480736736772,10.6480972101303,10.6481268567063,10.6481158303578,10.6479858305336,10.647553802436,10.6466180029071,10.6443703398008,10.6400921683619,10.6312607089688,10.614974069147,10.5879956373354,10.5372482844355,10.5191018005806,10.4535586746566,9.95656361876027,9.97144088744201,9.98229771791559,9.99849555128855,10.0117849399474,10.0213052509675,10.0280223820756,10.0321974809615,10.0348165075808,10.0363323115831,10.0371670500409,10.0375821181732,10.037757361942,10.037811619539,10.0378202436882,10.0378244972511,10.0378345782592,10.0378305595501,10.0377536513229,10.0375292529506,10.0369635093175,10.0359076861386,10.0338769673546,10.0303922663349,10.0249490430121,10.0163162343959,10.0107512054657,9.99674638237741,9.98631434071573,9.95656361915435,9.71009284303506,9.72155900162074,9.72744808638369,9.73459683746304,9.74100718126527,9.74638322390637,9.75039530549875,9.75333636062044,9.75530949782629,9.75658449163613,9.75734358458442,9.75775744878982,9.75795337639543,9.75802783798418,9.75804791497669,9.75805289088146,9.75804987283898,9.75801984809341,9.75790084843444,9.75762369351771,9.757052049725,9.7560349362826,9.75441090124244,9.7517949838695,9.74847309928677,9.74268079926294,9.73715748228305,9.73046901538592,9.72681767594276,9.71009284158276,9.65104188827967,9.65914680906798,9.66308959311302,9.66778320512327,9.67181303275968,9.67538004224666,9.67829596042376,9.68054903890718,9.68220039766889,9.68332191745978,9.68403430211811,9.68444802250332,9.68466362043217,9.6847607843737,9.68479833622337,9.68481089712301,9.68480568670392,9.68475881337387,9.68462263310794,9.68431425672239,9.68376465917206,9.6828177668703,9.68150038090424,9.67953056240433,9.67742222355787,9.67473240993029,9.67174444755785,9.6668379571465,9.66205792349077,9.65104188401595,9.66714264578458,9.67710475292142,9.68044104209215,9.68436484774078,9.68759062110735,9.69047037254811,9.69288832364277,9.69482284370418,9.69627906588709,9.69730729342438,9.69797906553356,9.69838096840028,9.69859544035986,9.69869394247631,9.69873187807447,9.69874351325874,9.69873447215112,9.69868460500382,9.69854314821017,9.69824148725925,9.69771305553243,9.69682716648882,9.69562896552169,9.69393615519607,9.69184690560778,9.68920207812082,9.68669408900052,9.68287769578075,9.67892534347225,9.66714265302937,9.8349096668668,9.84972655113975,9.84955526654482,9.8529296665404,9.85472325728195,9.85656886480965,9.85812003349337,9.85947021712873,9.86054860253389,9.8613470852846,9.86189266682508,9.86222864859517,9.86241109246278,9.862495391769,9.86252857389926,9.86254194439196,9.86253884947131,9.8625004804033,9.86238831622848,9.86214326421463,9.86174698854726,9.86112719740915,9.86031137729787,9.85933096166235,9.85837405469276,9.85692535660057,9.85507012931885,9.85185409748441,9.84952841176868,9.83490966574649,10.2640801890949,10.2900908941246,10.2892378009959,10.2924870954544,10.2935540428747,10.2946642222609,10.2955432183698,10.2963496637902,10.2970414833575,10.297575540922,10.2979403306189,10.2981598409672,10.2982707413049,10.2983175620483,10.2983358945194,10.2983482323991,10.2983568378635,10.2983410725323,10.2982747063254,10.2981102280887,10.2978273299692,10.2974019639862,10.2968574444648,10.2961174874006,10.2953353296333,10.2943923416091,10.2931763459619,10.2901613787919,10.2894722875929,10.2640801893659,11.0679635878185,11.1055155166916,11.1034434258168,11.1074123210871,11.1079065939378,11.108721975557,11.1092292417249,11.109662554525,11.1099948636559,11.1102649099566,11.1104580028551,11.1105812893516,11.1106457186232,11.1106738299284,11.1106875945645,11.1106993304464,11.110712818456,11.1107179406061,11.11070284301,11.1106472183802,11.1105435409818,11.1103732613539,11.1101886092626,11.109965788538,11.1096386016672,11.1090170665529,11.1081128531682,11.1045318361194,11.1049692629721,11.0679635877385,12.3900406804063,12.4457840230878,12.4422598561052,12.4475849991682,12.4474553735045,12.4476639913675,12.4475588730435,12.4476320918333,12.4476543733064,12.4476469432738,12.4476014604994,12.4475486776322,12.4475046548155,12.447474304697,12.4474618421585,12.4474663699306,12.4474847251841,12.4475119072245,12.4475463407541,12.4475831436943,12.4476301752351,12.4476722122368,12.4476964499818,12.4476944394169,12.4476517109992,12.4472667322983,12.4467369752713,12.4422466057993,12.4431397733085,12.3900406802991,14.4496401459771,14.5328807207026,14.5254790850314,14.5328756021483,14.5326483545286,14.5334786943821,14.5331190294214,14.5328196399951,14.5325161791344,14.532309583611,14.5321545126422,14.5320236014442,14.5319259519362,14.5318609687367,14.5318256527702,14.5318235701956,14.53186168992,14.5319502115382,14.5321028236826,14.5323232439784,14.5326127488687,14.5329636426933,14.5333600130592,14.5337346617396,14.5340519136912,14.5339634106348,14.5337272479028,14.5283973019501,14.5304610361094,14.4496401457633,17.6177409208061,17.7442770915809,17.7290754850906,17.7386311345301,17.73478317157,17.7346456514057,17.733990038506,17.7334702660578,17.7327546259078,17.7319848102351,17.7313457194486,17.730862372493,17.7305251301582,17.7303265225731,17.730233366235,17.7302205494362,17.730274494251,17.7303965126801,17.7306073267362,17.730939256847,17.7314153665019,17.7320292822939,17.7327384931945,17.7334912479381,17.7342131849473,17.7344372757169,17.7349188839789,17.7280271954989,17.735392056822,17.6177409205164,22.5369772739255,22.7256117726026,22.6928852589032,22.7125378274443,22.7117934548566,22.7124190731647,22.7116351958482,22.7110296155366,22.710773030071,22.7104977565172,22.7101416354831,22.7098011258091,22.7094787884462,22.709222933554,22.7090706463119,22.7090505697284,22.7091865772834,22.7094834584822,22.7099183236643,22.7104501979302,22.7110637852347,22.7117851182823,22.7126598358412,22.7135744629394,22.7145895425426,22.7147964460886,22.7153760172916,22.7064615017166,22.7207233032992,22.5369772737762,30.269022807902,30.5303166597058,30.4674730408479,30.48234811871,30.4836644322132,30.4863911975687,30.4875193078411,30.486676929383,30.4854835868411,30.4847723320599,30.4843290779378,30.4840978438945,30.4839648741198,30.4838479006451,30.483740393922,30.4836613334622,30.483645316447,30.4837083473783,30.4838467940468,30.4840347570496,30.4842205478775,30.4843687510312,30.4845316106592,30.4847710185295,30.4847629381231,30.4839384859748,30.4832446768175,30.467951396881,30.50646907694,30.2690228078229,42.2679133163145,42.5393026174222,42.5152192225773,42.5440762379699,42.5579428079874,42.5610648253446,42.5643368475661,42.5678058430975,42.5702131542092,42.5723196554979,42.5742717612316,42.5758301391921,42.5769314624499,42.5775670567724,42.5778789873457,42.5780621097652,42.5782631459419,42.5784739418486,42.5784926348937,42.5781227479167,42.577463831326,42.5768570530188,42.5765528018929,42.5764548225833,42.5763817436509,42.5721816790644,42.5680088345387,42.5353781533838,42.5752960288096,42.2679133169734,59.382658416387,59.5318262806475,59.6054326884374,59.6189235030115,59.6423869014447,59.6450416097363,59.6369139995866,59.6285837216256,59.6236821557483,59.6215625536387,59.6222322775145,59.6247332028671,59.628059542599,59.631352939403,59.6339467381962,59.6354337489474,59.6357678417982,59.6353719696857,59.634848757555,59.6347737446246,59.6357970291138,59.6386583193188,59.643970517037,59.6513486711005,59.6595699958366,59.6655613706243,59.6583407130198,59.6149686598565,59.6443993480375,59.3826584184202,78.8489745071816,79.0144239996397,79.2985820301991,79.293877145862,79.2685194602808,79.2426808336801,79.2146719116592,79.1800988719519,79.1510999149455,79.1288837703626,79.113245577029,79.1037603203866,79.0993913983976,79.0991677478055,79.1022285931215,79.1074617755423,79.1135362608672,79.1195140786262,79.1266018039791,79.1386347526387,79.159123770335,79.189398853234,79.2296107914352,79.279254803223,79.3341222788973,79.3885769241245,79.442240054969,79.3755223297917,79.238833635805,78.848974510433,92.7788891265824,92.4847696482592,92.6077304133777,92.6205986033291,92.5374045937425,92.3646256851835,92.2086669225401,92.0799359637821,91.9806565371395,91.9083814557339,91.8561430743091,91.8184976683936,91.7915695428846,91.7733836321574,91.7639411492738,91.7639348714851,91.7726424248677,91.7900613023501,91.8179261418782,91.8572230213736,91.909768795057,91.9795570375661,92.0709615246463,92.1894998803826,92.3379269241843,92.5099373794767,92.7099907712745,92.8898955844888,92.6755975680683,92.7788891298184,96.7680750124582,96.4565928994084,96.1829297106758,95.9064725903119,95.6696381792351,95.4565253168013,95.2793801592964,95.1359127833249,95.0229411567406,94.9354301793429,94.8684427030671,94.81831320644,94.7823638669446,94.758920705747,94.7471248638558,94.7465912053863,94.757286252542,94.7797027235106,94.8146240478913,94.8634377857509,94.9287213729143,95.014052304818,95.1238336813141,95.2624136116158,95.4329764255196,95.6369276332139,95.867321656489,96.1262723813322,96.3458683877133,96.7680750136596,96.8089776428547,96.4525562976298,96.1830745790987,95.9207885283603,95.68600046821,95.4754209919885,95.2998365583102,95.1571797174847,95.0441723752586,94.9559987967741,94.8882624109866,94.8375124320346,94.8011822933779,94.7776125747198,94.7658029164546,94.7652732979998,94.7760239470059,94.7985050929609,94.8335325554782,94.8826699233142,94.9484885686247,95.0344399489258,95.1446947830453,95.2833615301794,95.4536526713404,95.6566914042548,95.8853237520484,96.1414859181445,96.4152063654856,96.8089776416011,95.8303364393238,95.1853873613825,95.084061989485,94.8178865164463,94.5946161958097,94.4071755394015,94.2419651479263,94.1091241391514,94.0018344478178,93.9179552258084,93.8539107143048,93.8063755454197,93.7729447491056,93.7514811180648,93.7406553164104,93.739858640474,93.7490694231166,93.7685887571625,93.7997601104585,93.8445786668815,93.9054821330246,93.9855126860775,94.0881594526847,94.2161557541767,94.3729333599823,94.5617162363036,94.7632337020226,95.0844391446919,95.3261190811566,95.8303364367637,87.0920914904297,87.3983120251209,87.4795974226458,87.3905306870691,87.2467808345187,87.1314500261547,87.0278980635132,86.9399648744744,86.8692712535212,86.8137744947458,86.773124988907,86.7448090787525,86.7262632529937,86.7146180190082,86.7078557008738,86.7052029226313,86.7065982205194,86.7131802297589,86.7273435349567,86.7510857532337,86.7856116895973,86.8318904822168,86.8911942395618,86.9659607654716,87.0552984404566,87.1765201340163,87.3069369499094,87.4236059119524,87.2709902436848,87.0920914869862,69.2844347952785,69.4879459898493,69.450550801897,69.5070411930652,69.5048713320212,69.4884139930397,69.4696416740989,69.4475626130078,69.4285962688256,69.4134365138179,69.4028311405094,69.3962053627463,69.3922140636111,69.389334510174,69.3863559142669,69.3827932332224,69.3789827265324,69.3757501907186,69.3739744311091,69.3742969661974,69.3768652987346,69.3817047384319,69.3889022589823,69.4000116499574,69.4156886048498,69.4349007658719,69.4581996270931,69.4848894938564,69.3265471498721,69.2844347923952,50.1412255857727,50.5135051954103,50.4663333192644,50.4727603817239,50.4758155295731,50.4652016472087,50.4599885596051,50.4539176822467,50.449337048501,50.4456239694149,50.4426265911027,50.4401080198952,50.4380014717216,50.4362835931351,50.434936194531,50.4339377434026,50.4333573019815,50.4332719902804,50.4336006693201,50.4342619762077,50.4352619853231,50.4368228264645,50.4387900806256,50.4408683678728,50.4409058898791,50.4354254145969,50.3997776592997,50.3488692187024,50.2961283148874,50.1412255843609,35.1585841108523,35.6208148968699,35.7157841540008,35.7906139194682,35.8626733512332,35.8739873890292,35.8791827605378,35.8797527005734,35.8800500262596,35.8803814423674,35.8806493212703,35.8805885465701,35.8800668959379,35.8792188060728,35.8784047184287,35.8779820207302,35.8779598787791,35.8779730264957,35.8775898833435,35.8766603334072,35.8753207725274,35.8738521990899,35.8727698926399,35.8708482451879,35.8676549073461,35.8524014476322,35.8268960339719,35.7236233633277,35.6110523776344,35.1585841107308,24.2834693251982,25.5001356807167,26.0619804767713,25.921900716274,25.903700852957,25.8759001302611,25.8619055606586,25.8549243613326,25.8522349486713,25.8519196931866,25.8528369112932,25.8544057369887,25.8562527485015,25.8580405786673,25.8593643384086,25.8598165565683,25.8592119936678,25.857749324993,25.8558695175368,25.8540254599171,25.8526445915519,25.851888085499,25.8521241346105,25.8529419600742,25.8525110231508,25.8471688015803,25.8118556687551,25.7334219060748,25.5128157292959,24.2834693282736,14.5031278491099,18.1017817898836,19.4225802870944,19.7215458387953,19.813962171299,19.8345996400411,19.8362151117919,19.8339890885624,19.8318357676068,19.8304059728611,19.829571370086,19.8291141372502,19.8288729912647,19.8287508939409,19.8286956857189,19.8286839347068,19.8287093593465,19.8287822504415,19.8289328278059,19.8292207239661,19.8297515517056,19.8306906349678,19.832231878241,19.8343596322448,19.835902118471,19.83066156904,19.7968165333436,19.6569940099711,19.0324592339881,13.6606896168756],"Archive1108_field2":[0,-1.35806378973351,-0.504494212348958,-0.221433508220391,-0.0935322807288693,-0.0396566563761299,-0.0175608312327103,-0.00813624581319621,-0.00399833757947966,-0.00208200603279526,-0.0011360430550829,-0.000637329939113312,-0.000356408483614499,-0.000185476103877225,-6.81603930262494e-05,3.01872683412373e-05,0.000137416215705015,0.000283431549683988,0.00050902226522959,0.000876745102437259,0.00148668203609078,0.00250111686225285,0.00419061957677239,0.00702747325663054,0.011956602493953,0.0216255724599028,0.0420261752997222,0.101970812964503,0.338492255136666,0,-0.27415908995387,-0.502098368662567,-0.309903980671953,-0.181732447515239,-0.098903979808595,-0.0492426237340791,-0.0256296240308756,-0.0130108968675199,-0.00669366375914185,-0.00351286971060118,-0.00186370003858656,-0.00100443951247702,-0.000542442836651558,-0.000281933619833221,-0.000120121817589502,3.81789464656494e-06,0.000136696314785889,0.000324601954415228,0.000632389182242494,0.00117323582479969,0.0021427366947981,0.00392714145017977,0.0072636301971867,0.0134851942262453,0.0267755357416358,0.0512742289427232,0.118002204133986,0.219413103886164,0.811620164050783,-0.274158989324762,-0.0997257159662435,-0.259602586784814,-0.229493487121688,-0.145146565408825,-0.0882086261444862,-0.0497759956227877,-0.0271667251683914,-0.0148193064425848,-0.00801508996270417,-0.00437359550498054,-0.00241484898561318,-0.00134593218862344,-0.000748557750409466,-0.00039666226214295,-0.000165035024046006,1.86616619714894e-05,0.000206630947609894,0.000454953686707456,0.000841314087670575,0.00150075491436036,0.0026857166386333,0.00483881941518729,0.00896546765306101,0.0165079527157329,0.0317436783080432,0.0578338070145669,0.123383549295173,0.155845686696994,0.210212446635699,-0.0997256665696749,-0.042876315767524,-0.102124936862989,-0.109786260654141,-0.0871861614165201,-0.0583710326277044,-0.0370601796682877,-0.0223598126672835,-0.0131123169925752,-0.0076261153658381,-0.00440779719079388,-0.00255494561191944,-0.00148636057018793,-0.000853612219630174,-0.000459161438264481,-0.000186382125554433,3.70281758771808e-05,0.000263901279768844,0.000548351580414223,0.000971129431500807,0.0016608932393068,0.00287063418967445,0.00499731855079852,0.00895104666580564,0.0157299957269853,0.0297351740276465,0.0448635142852157,0.0921962138491728,0.0959653781452891,0.0775377524103038,-0.0428762865623305,-0.0130939051640396,-0.0435954462655428,-0.0522605420144306,-0.0457280031075673,-0.0354082202671086,-0.0244806945406958,-0.0161736187878816,-0.0102826989457358,-0.00638038815993823,-0.00393034415991021,-0.00240813077550162,-0.00147367001524747,-0.000886478939674245,-0.000496839882353859,-0.000210941339916864,3.10482750153626e-05,0.000276674343639242,0.00057341165557104,0.000991912824411724,0.00163987518415066,0.00272390515967375,0.00449502817178475,0.00773493774362084,0.0119501233953941,0.0216904360172129,0.0273047807360411,0.0385224104221933,0.0389022682415467,0.0294142000039769,-0.0130938851996589,-0.00297840406527683,-0.0133724750237927,-0.0212054631077011,-0.021393670264786,-0.0182151057466293,-0.0142175221762112,-0.0102099063483541,-0.00709758907009766,-0.00479015902486748,-0.00319189062683475,-0.002112395102754,-0.00138580348437186,-0.000884542558994354,-0.000519953954234812,-0.000229125622161192,2.94306830519074e-05,0.000290147789603153,0.000589460455279426,0.000980747934435315,0.00153179225035504,0.00241166966757881,0.0036139358243062,0.00595837279197832,0.00816468595507741,0.0130516715924994,0.0166608978549174,0.0196397692870218,0.0155728883093656,0.010840827094266,-0.00297839288499703,-0.000558542450152315,-0.00427891257933487,-0.00789113832488605,-0.0094939664423443,-0.00907455155819615,-0.00785738462128434,-0.00631779794398425,-0.00484051308666371,-0.00360424092357349,-0.00263373378603197,-0.00189112793964204,-0.00133104982777973,-0.000896438876502088,-0.000546219757951698,-0.000245068016742703,3.4414460328478e-05,0.000316096137459633,0.000623267749622216,0.000996912773330586,0.00144518590574013,0.00212556261459541,0.00282805540725014,0.00410469229411284,0.00512416810835368,0.00640691382737255,0.00673280352991772,0.00767236607702836,0.00588348272770963,0.00336852028000449,-0.000558537757677524,6.8643769573324e-05,-0.00214996097798252,-0.00419929218565603,-0.00546631610389068,-0.00577379068001892,-0.00549034332871806,-0.0048096021979872,-0.00402546046400792,-0.00322344548956569,-0.0025107596439805,-0.00189406597957259,-0.00138046632308646,-0.000951533828382831,-0.000586995348967924,-0.000263788770691182,3.96475531425712e-05,0.000348302956215925,0.000675927259840478,0.00107018854499581,0.00149628071866499,0.00209113915743925,0.00268157114868144,0.00347043366628349,0.00414049577617163,0.00495838314555136,0.00480671635710741,0.00441968077493419,0.00318030855305581,0.00158100276365573,6.86444505470214e-05,0.000520971640733771,-0.0028755256735461,-0.004385767272967,-0.00536703724142973,-0.00563370245147647,-0.00545889303129162,-0.00491071346526707,-0.00419465983144533,-0.00342208574757677,-0.00268562457689319,-0.00202866293276617,-0.00146918404687952,-0.00100205579784632,-0.000611730970162058,-0.000272229981235295,4.14153447321376e-05,0.000365981354222562,0.000714519670401379,0.00114586602047852,0.00162347233209357,0.00223505876865227,0.00286847552800064,0.00361651604758403,0.00415495437486154,0.00471778864679901,0.00488648126537627,0.00469384814683438,0.00417738577508493,0.00340047350623017,0.000520968840945087,0.000560149459822891,-0.00208618424765147,-0.00285485291787285,-0.00386956688476573,-0.00421696142623598,-0.00422211480732568,-0.00390022326865247,-0.00341895231052867,-0.00283768980462082,-0.00226160873629834,-0.00172400805392982,-0.00125663042503162,-0.000858561114819265,-0.000524182861565869,-0.000233071861912416,3.4307101265024e-05,0.000313303245937098,0.000613110163245206,0.000980642125089321,0.00139211188485643,0.00189220643999114,0.0023884952825741,0.00296950847917406,0.00340841566480884,0.00371972372955734,0.00385397914561252,0.00377883821569574,0.00331761388329089,0.00330889214226555,0.000560141301350352,0.000432257217316776,-0.00141984573704315,-0.00153576392566353,-0.00231909000988488,-0.00257756409057106,-0.00271065555903933,-0.00257092999467135,-0.00233524606830423,-0.00199163685626633,-0.00162296095454992,-0.00125336929369509,-0.000920270472322672,-0.00063042570866269,-0.000384781476668945,-0.000170446892864321,2.61926240717046e-05,0.000231092608863675,0.000453064060578392,0.000717825192358136,0.00100916795823506,0.00135031573560364,0.00167034176521907,0.00198189491874827,0.002237030657557,0.00242224504610573,0.00246079744445684,0.00246265634448975,0.00197539595590363,0.00193609589014941,0.000432241309689023,0.000279956505293432,-0.00111435563761735,-0.000609878372499085,-0.00127787063718659,-0.00146279053886366,-0.00167260266810386,-0.00162039843301651,-0.00151077164872426,-0.00130435055275507,-0.0010889412420118,-0.000858042453157479,-0.000640371105694354,-0.000443629479307988,-0.000272762474295941,-0.000121517903627572,1.82217075656956e-05,0.00016321489197794,0.000319310438026742,0.000501351907133392,0.000696405683182245,0.000911273161357058,0.00111726164224899,0.00129653507215135,0.00140528831520747,0.00147269643928575,0.00140187741259602,0.00133189110443897,0.000958235312119165,0.00121481254017448,0.000279931788789983,0.000163576048192119,-0.0012608155517058,-0.000275300298390029,-0.000896560243786599,-0.000826246950452605,-0.0010018184113977,-0.000972226754936137,-0.000982435159470078,-0.000873217105128536,-0.000741662809575937,-0.00059402545693503,-0.00044963385192636,-0.000315590982317292,-0.000194154113840732,-8.17872086906152e-05,2.54040148404212e-05,0.000137446441666834,0.000257218677525871,0.000390614544326279,0.000529306660932374,0.00066757798025355,0.000788263919154996,0.000894295898707238,0.000952192678460453,0.000989621897777701,0.000916632813066088,0.000828494259580415,0.0005066463670299,0.0010206186616754,0.000163542493282974,8.84400194189785e-05,-0.00218005977715209,-0.00054810208008533,-0.00130962222259541,-0.00104905622940373,-0.00114976856592469,-0.00092033832584884,-0.000847636208595779,-0.000774873181631322,-0.000680620644882715,-0.000563151251817232,-0.000431655439728905,-0.00029952952974685,-0.000176249423942306,-5.86944308639291e-05,5.37585627476043e-05,0.000166588854213713,0.000283112757128156,0.000406930539389559,0.000534277549591268,0.000661893160140261,0.000770815947529245,0.000860186892340881,0.000903195856791076,0.000930947877418111,0.000891928418106065,0.000826137554586501,0.000547428327627531,0.000945094189877515,8.8397453788458e-05,4.65628670883083e-05,-0.00471374935108207,-0.00152110031198039,-0.00174097059235852,-0.000713176955755997,-0.000918830373796191,-0.000987677543042817,-0.000928549103442717,-0.000838638324551209,-0.000721397701327185,-0.000591392459635588,-0.000459275970098985,-0.000312171171399542,-0.00016686468344218,-2.0790132355886e-05,0.000131009305399477,0.000290634023589951,0.000458818788803473,0.000633055130399086,0.000804934706570958,0.000969487098235471,0.0011141427652975,0.00123342029889591,0.00130616107446961,0.00134147003232802,0.00134612200589282,0.00141195232222864,0.00136239618789828,0.00221961931718374,4.651045470983e-05,2.80517832649335e-05,-0.00999170235897758,-0.00405121043556098,-0.00418092724900784,-0.00258902246643937,-0.00185051449547014,-0.00187144523809793,-0.00189503572942548,-0.00175399031856412,-0.00149589671664428,-0.00112395129859504,-0.000780559258102816,-0.000463256876018756,-0.000167148300505647,0.000104157339819623,0.000371710746421064,0.000647061319634213,0.000939936679979402,0.00125558560813281,0.00158852464826187,0.00192099855193893,0.002217445602683,0.00244210342372035,0.00253229696212034,0.00250906613372843,0.00236553211162013,0.00231983016627201,0.00254621535344553,0.00326467851678515,2.80198933711469e-05,2.98375789754559e-05,-0.0143594409280876,-0.00172660582338804,-0.000515944902336174,-0.002275822521086,-0.00370955163801965,-0.00421519680699835,-0.00429620602551084,-0.00376102422772493,-0.00317462470701624,-0.00241739825889833,-0.00160573948313548,-0.000883705087705818,-0.000207721261622262,0.000430254119110562,0.00107100599693565,0.00175105339568843,0.00248543373293267,0.00328073727319032,0.00413880152554047,0.00505348587769578,0.0059486481343515,0.00667832336765277,0.0070073480730325,0.00667974995370845,0.0058631027955486,0.00471720218777342,0.00464778213418475,0.00851225823011884,2.97605519867458e-05,6.2482234520399e-05,-0.0068298596398621,-0.000180106621660136,-0.00630838651448231,-0.0102564310275166,-0.0151604650868647,-0.0162958581596952,-0.0160199555516441,-0.013615658005163,-0.0104290338658561,-0.0075068633911777,-0.00473255833981769,-0.00232948710191416,-0.000248657522692179,0.00161362564433139,0.00335583095978611,0.00512412678548243,0.00707274119174995,0.0093342650141763,0.0119617104405291,0.0148886442869919,0.0178954523020688,0.0205014889335506,0.0220183768727952,0.0214630937972409,0.0178097049547657,0.0119693485200228,0.00453949693488188,0.00593001152276524,6.23908330126471e-05,0.000153017297413724,0.0255742886530823,0.0232432862831147,-0.0181747557142523,-0.0356495291004956,-0.0477395223952001,-0.0489016506204375,-0.0448369739170686,-0.0390408888313004,-0.0305905594372548,-0.022266637051082,-0.0146495250063608,-0.00782516718703886,-0.00179506603535392,0.00374874138296778,0.00904039293795206,0.0143772950910529,0.0201211698392521,0.0266681367277566,0.0343857554070694,0.0432424381794169,0.0526258685703378,0.0614478328144654,0.0677560967064333,0.0690812212443525,0.0617643922293142,0.0425489355847866,0.0136863449636092,0.011459458191095,0.000152914001758053,0.000308682047371577,-0.0788048676528036,-0.0708370703076889,-0.104804297504352,-0.122822079635,-0.130747857700771,-0.129668444333325,-0.109295189392837,-0.0873318479414025,-0.0659817040056404,-0.0463738790883923,-0.0297695814498066,-0.0153285034248519,-0.0024723823147493,0.00949224523945183,0.0210912067867839,0.0326811175242035,0.0451638646616251,0.05964527051352,0.0764131442732686,0.0954180180569149,0.11634457901597,0.137822364428063,0.156852849569141,0.167331709692236,0.161643617182816,0.126499642161643,0.0436931110890747,-0.0349365739368663,0.000308577695116405,0.000399282174867978,-0.0939909145862147,-0.137745861671151,-0.155216520698833,-0.202227618803423,-0.189716704083127,-0.169244050839807,-0.139784525352985,-0.106192094574841,-0.0770804097795911,-0.0519783016932175,-0.0311635482994103,-0.0134084263790633,0.00281279140352672,0.0184853343836886,0.0339941347312595,0.0497689659456245,0.0665475351222497,0.0849836770856644,0.106091750978679,0.130914780658271,0.160018960060316,0.192713657631485,0.226553414101821,0.255621014156529,0.268692546691607,0.257754086863399,0.173925248421642,0.0305759221382243,0.000399198048288746,0.000210497979904138,-0.0612256441721845,-0.119631630111809,-0.118533315954264,-0.110983202096689,-0.0963936987804684,-0.0756073824839455,-0.0553386551239341,-0.0365724858764042,-0.0208881451493381,-0.00796322495708517,0.00276974741362959,0.0119123580047598,0.0201125391183933,0.0278672625325419,0.0355729257570103,0.0435359703869257,0.0520463834860368,0.0614688024869496,0.0724726707408076,0.0858359844696248,0.102153664434937,0.121803277717412,0.144188497938771,0.167856778404708,0.191125348302057,0.206496465901951,0.21542088781585,0.207593465438634,0.000210477410546892,-0.000265018940537252,0.148011842221553,0.130040342830018,0.119166716446456,0.108281083048303,0.0967040018540108,0.086331537834894,0.0762745274044006,0.0677224021292346,0.0603700336363571,0.054076136682627,0.0486552710980745,0.0438924172190576,0.0396369566204383,0.0357415339890934,0.0320690259366116,0.0284914686412725,0.0248703629724779,0.0210754330307111,0.0170106140194257,0.0125388353927908,0.00747945782999964,0.00169880194046408,-0.00490861302516028,-0.012244016919328,-0.01915079127647,-0.0255302466852915,-0.0367128142225655,-0.00640851749457592,-0.000265005276770009,2.12586495863392e-05,0.30775528900701,0.360072999396707,0.31859199886978,0.281911776317585,0.249292926593028,0.215538685299865,0.184094608507702,0.15465573657381,0.128626879552655,0.105947190684439,0.0862707415669423,0.0691028095704318,0.0537400965767734,0.0394946233337625,0.0257310308222834,0.0118841482510529,-0.0027397749358243,-0.0188001209066224,-0.0369233741047849,-0.0576735447397643,-0.0813339230623799,-0.108116670715571,-0.136757565911987,-0.165686855937339,-0.197675464104829,-0.203812367101089,-0.257963100732232,-0.11458519274526,2.13234255777126e-05,0.00230785713747752,-0.0568961704873659,0.132488379794556,0.235005020707579,0.253133030992118,0.24417710514759,0.218057446899983,0.188880215404925,0.158631001571665,0.130304824365964,0.10482943871159,0.0825014241532731,0.0632350736993675,0.0464938000172603,0.031332440999137,0.0167620923526269,0.00191142989491163,-0.0143078466938021,-0.0326882636872618,-0.0535782687664608,-0.0773295950730263,-0.103803809922193,-0.132865539713324,-0.165356754692898,-0.191988543163995,-0.233306347278414,-0.241432614385019,-0.240577392428879,-0.213539581404155,0.00230795428691606,0.00135451994257417,0.0730041249488459,0.0822131418459485,0.119248838063854,0.128109117315059,0.131339487083993,0.11856190173667,0.104536527542016,0.0884529855300198,0.0726223050210941,0.0579944382200045,0.0450036244020176,0.0337757415302763,0.0240643704022238,0.0153821286601963,0.00709962833161539,-0.00148905308814817,-0.0110424705198201,-0.0220265994648983,-0.0346326801049111,-0.0490080732469663,-0.0654052655888218,-0.0823606580074713,-0.103131349555141,-0.117532919303791,-0.129067333617318,-0.126730265395794,-0.0661230954336694,-0.0282768375764154,0.00135462545633631,-0.0207275868765431,0.0537277903866931,0.0532704176987788,0.0824500243961025,0.0602488064093883,0.0569215304088412,0.0484888743909874,0.0411741696346799,0.0346211630125262,0.0282755417796044,0.0225437394390202,0.0175240259260457,0.013263585615846,0.00965627867253724,0.00646884664434962,0.00340205797597611,0.000143756181034168,-0.00355492774108344,-0.0078601044947227,-0.0128920423155428,-0.0185924982789925,-0.0257186604285095,-0.0333045893960218,-0.0431730046932806,-0.0549808144790883,-0.0620082220132058,-0.0733188479539172,-0.0635817484798469,-0.0491286305229036,-0.0207274899445543,-0.0870817941405411,0.194546859958757,0.0929006378342526,0.0483906372403574,0.0278291980870451,0.0164943996334107,0.0142340726342423,0.0122676575233782,0.0109041707895709,0.00943263956970027,0.00786821528224956,0.00633253374178353,0.00488621107791642,0.00355271619681877,0.00229147844174768,0.00102224222521772,-0.000325364248683972,-0.0017903664681462,-0.00338355764290602,-0.00524297132264962,-0.00729257855502575,-0.00998813348003796,-0.0135238902266571,-0.0180969926190386,-0.026350022312191,-0.0409601831603906,-0.06084011333259,-0.111390979358011,-0.162650872209118,-0.0870817081917311,-0.39409196136692,0.0953360100152155,0.168835048680383,0.040643989399612,0.0179096188052239,0.00465388166703084,0.00171910847028047,0.00155120337540838,0.00182340454307675,0.00205381488107905,0.00207793524736956,0.00192625795000276,0.00163202212000412,0.00121749639282503,0.000725806889987811,0.000226795326379439,-0.000213013760604701,-0.000581522407779414,-0.000874053683773578,-0.00117796241368314,-0.00149325681516432,-0.00187577049977431,-0.00265594183730992,-0.00440915811793344,-0.00809588427527158,-0.0188225181867593,-0.0458469412934339,-0.0836442593816212,-0.17827083934865,-0.394091836591583,0,-1.35806378400139,-0.504494215101181,-0.221433507415172,-0.0935322805292313,-0.0396566562123222,-0.017560831140498,-0.00813624576291955,-0.0039983375523793,-0.00208200601834932,-0.00113604305122102,-0.000637329934980592,-0.000356408481431877,-0.000185476102803802,-6.81603926623575e-05,3.01872681267695e-05,0.000137416214832674,0.00028343154783978,0.000509022261757048,0.000876745096120107,0.00148668203044098,0.00250111684236492,0.00419061954290402,0.00702747320177032,0.0119566024126225,0.0216255724037671,0.0420261752046864,0.101970813678703,0.338492258836136,0,-0.400008895844475,-1.34505925992933,-0.516932112324518,-0.224986742502433,-0.0949482991621502,-0.0403361990025233,-0.0178438486077994,-0.00826939355786144,-0.00406383521157957,-0.00211598321449606,-0.00115459402327468,-0.000647726435902711,-0.0003622198121148,-0.000188500540343079,-6.92745466638299e-05,3.06726831900137e-05,0.000139643363912003,0.000288028462512328,0.000517279063953015,0.000890969315772182,0.0015107774050649,0.00254178567159794,0.00425857830858558,0.0071390647442761,0.012175810396781,0.0218611630913781,0.0428019225213637,0.108138113065404,0.293433918138363,1.01013590660928,-0.282696973256463,-0.513185967248626,-0.313246788997833,-0.184754095743314,-0.100436631279333,-0.0500132518461253,-0.0260292155413444,-0.0132140784413013,-0.00679795048610123,-0.00356726624037926,-0.0018926320956742,-0.00102022242901031,-0.000550564020662911,-0.000286241213642065,-0.000122385074631426,4.25718185900526e-06,0.000138876857470134,0.000328941033297017,0.000642703824248496,0.00119163072446157,0.00217475464548383,0.00398861836608591,0.0073796203915275,0.01368440264397,0.0271885554842119,0.0523905871810616,0.11705061080958,0.239891182504014,0.768806462760212,-0.282696906963634,-0.100092260015857,-0.262488945006089,-0.232880401597481,-0.147140355336292,-0.0894714657349853,-0.05048933050237,-0.0275567770566134,-0.0150319255498896,-0.0081306690826196,-0.00443694834265141,-0.00244967746305857,-0.00136553164727662,-0.000759832830730827,-0.000402185190332773,-0.000167395757787091,1.84857534976117e-05,0.000210185953402601,0.000461777015487029,0.000852777446108132,0.00152312643496512,0.00272478597640602,0.00490570959669243,0.00909366650284801,0.0167651304250424,0.0320184210691702,0.0595752419263034,0.121719857351905,0.164921159991227,0.221242169508416,-0.100092169943612,-0.04347855390795,-0.103544845148203,-0.111218224927046,-0.088380338730781,-0.0591750013163533,-0.0375718307534257,-0.0226702272563414,-0.0132952354549133,-0.00773237624561005,-0.00446943152574276,-0.00259088685713639,-0.00150693953019848,-0.000865492066510638,-0.000465872297544367,-0.000188616081047195,3.76654943227961e-05,0.000267135844906082,0.000556553519561171,0.000984886093603993,0.00168327961786103,0.00291161868266298,0.00506876732379723,0.00906294773836457,0.0160080375131282,0.0299296051009158,0.0460478243766059,0.0930274343477984,0.0950587557998463,0.0777520678405184,-0.0434784900719921,-0.0132269256279482,-0.0440810089932559,-0.0529171963923784,-0.0463007401838061,-0.0358527036453336,-0.0247938190136088,-0.0163802773276176,-0.010414732494152,-0.00646261112083652,-0.00398073029187111,-0.00243905720933116,-0.00149278790206042,-0.000897621945307924,-0.000503158361013584,-0.000213978931628066,3.17353172710946e-05,0.000280201152043693,0.000580210564446442,0.00100506998562742,0.00166089453672036,0.0027572863890715,0.00455784253499639,0.00781648566515334,0.0121485533619709,0.0218890079604123,0.0275981180500664,0.0394191678958247,0.0397671274614048,0.0298756986735562,-0.0132268823108072,-0.00301691575129987,-0.0135532533187452,-0.0214607880836563,-0.0216585931260081,-0.018442283458289,-0.014392797484445,-0.0103383497873405,-0.00718643648102983,-0.00485045462882857,-0.00323224626602314,-0.00213887145158124,-0.00140322591247315,-0.000895881726777574,-0.000526257699391539,-0.000231987859737807,2.95067731609491e-05,0.000294134686698482,0.000596815231138735,0.000992714270807944,0.00155209944600837,0.00243986233252767,0.00366520878961866,0.00602278088938545,0.00827578022656152,0.0132419816719996,0.0168084229942933,0.0197635144755277,0.0157121808646015,0.0109610877022823,-0.00301689085851099,-0.000567238238376288,-0.00432309397424153,-0.0079907938976103,-0.00961161829199568,-0.00918875382790211,-0.0079571451873711,-0.00639749821201647,-0.00490246667013441,-0.00365028024404261,-0.00266755445869294,-0.00191568327491981,-0.00134810935684124,-0.000908082603616807,-0.000553520234590815,-0.000248007573347656,3.48288461644391e-05,0.000320047346328873,0.000631813649472704,0.00100927343515228,0.0014650539690456,0.00215090018913958,0.00286701822352574,0.0041574135505782,0.00518136569964268,0.00649135172886274,0.00685395809796694,0.00778312311788686,0.00597037226750474,0.00339289062320772,-0.000567227786426658,6.8222332792961e-05,-0.00219534468477585,-0.00424937885096886,-0.00554115102827016,-0.00585053033354002,-0.00556342210214355,-0.00487418769116738,-0.00407901752267829,-0.00326687199703341,-0.00254434377664647,-0.00191960438498254,-0.00139924035404634,-0.000964250560786492,-0.00059501166309826,-0.000267515121670372,4.0433721708803e-05,0.000352812727106697,0.00068541158554389,0.00108427412053318,0.00151708130972226,0.00211917449733451,0.00271684741783132,0.00351825247804531,0.00419989215788083,0.00501133820063395,0.00486444963270763,0.0044741138640846,0.00322643280001228,0.00159361299481082,6.82238661203269e-05,0.000528879614336664,-0.00293424863537904,-0.00444423488392254,-0.00544319626278766,-0.00571208926008135,-0.00553441580914505,-0.00497856497020342,-0.00425239254445107,-0.00346902386515692,-0.00272242645014492,-0.00205616187151152,-0.00148912913022283,-0.00101568256263272,-0.000619792736975583,-0.000276010853154412,4.20205171507703e-05,0.000370844310004219,0.000724142095517968,0.00116140639783038,0.00164534110544883,0.00226557756056584,0.00290879436948828,0.00366338327670979,0.00421600886151653,0.00478872532626185,0.00495486482315465,0.00476057994754855,0.00423558949045681,0.00343761747263845,0.000528873497578904,0.000567778759277965,-0.00211135595778132,-0.00288987047719002,-0.00392148569374655,-0.00427110447966401,-0.00427671549179439,-0.00395053084102207,-0.0034629923915953,-0.00287430066055518,-0.00229082417028922,-0.00174637238103678,-0.00127275609982763,-0.000869750106103214,-0.000530970250577266,-0.000236019884267761,3.46468119891159e-05,0.000317435849119841,0.000620919390493478,0.000993128674532184,0.00141048398142327,0.00191562403017545,0.0024198953012615,0.00300775159006333,0.00344933703167711,0.00376682003144834,0.00390376855185413,0.00382816703828076,0.0033651009230883,0.0033556642772009,0.000567760617797554,0.000437689556647856,-0.00144995203674347,-0.00155131063474546,-0.00235113091329418,-0.00261060332939573,-0.00274563019314515,-0.00260384042397823,-0.00236505077949618,-0.00201710154878083,-0.00164362325020252,-0.00126951163212849,-0.000932123088750695,-0.000638481816339331,-0.000389863639737417,-0.000172582387014442,2.65285842813107e-05,0.000234000161312391,0.000459210517412467,0.000726742449951691,0.00102226591948876,0.0013679771038482,0.00169098114250266,0.00200796485526214,0.00226684606156996,0.00245316356407401,0.00249296422080884,0.00249412747119619,0.00199920820487897,0.00196594799581107,0.000437654643470729,0.000283609691148042,-0.00113681139458993,-0.000612470832459293,-0.00129782832400608,-0.00148176486931331,-0.00169549019333015,-0.00164205835983588,-0.00153087345785879,-0.00132178580477585,-0.00110346631250462,-0.000869466141342219,-0.000649072741078791,-0.000449594729069289,-0.00027643595541794,-0.000123252598517224,1.86418182754335e-05,0.000165282514207337,0.000323614843095624,0.000508371255697249,0.00070529119236501,0.000923580217812522,0.00113245879795464,0.00131298038597458,0.0014240392343583,0.00149265678557165,0.00142080840378067,0.00135112537744579,0.000968254566023524,0.00123646038394403,0.000283556727238299,0.000165873275266608,-0.00129065305500938,-0.000269850365042795,-0.000913007130655588,-0.000836455653295452,-0.00101633225622545,-0.000985968291357064,-0.000996430355253394,-0.000885643755644182,-0.000752271644535432,-0.000602431116652211,-0.000455941850008312,-0.000320119913185466,-0.000196805682775143,-8.29996826685724e-05,2.57428319671688e-05,0.000139635420155813,0.000260668791288917,0.000396281356332082,0.000537186132329856,0.00067667359978738,0.000799708085476514,0.000907444597104621,0.000965515943059899,0.00100377241851055,0.000929324212781607,0.000841470464841354,0.0005095490511918,0.00104023413441399,0.000165802716551238,8.97881053348177e-05,-0.00223019771556081,-0.000542228802451643,-0.00133531578831924,-0.00106349175477398,-0.00116787047414314,-0.000934243404041205,-0.000860370223312204,-0.000786554703685895,-0.000690952056627456,-0.000571861190665973,-0.000438274218052676,-0.000304151611672826,-0.000178994747010673,-5.94641318238914e-05,5.44036582704663e-05,0.000169091363449739,0.000287579844579819,0.000412713918035488,0.000542413213107491,0.000672152355071343,0.000782074246555637,0.000873236850947349,0.000917052432767609,0.000945026168932284,0.000904853390939165,0.000840454643641021,0.000548919207501599,0.000967523993978903,8.96997090937003e-05,4.7329327677697e-05,-0.00481500142851027,-0.00152478457589138,-0.00177430903603381,-0.000722629629313467,-0.000933256845604639,-0.00100349079380053,-0.000943523147235332,-0.000851880164039165,-0.000732642263693893,-0.000600512190427499,-0.000466444736303077,-0.000317002059536905,-0.00016958868398414,-2.11167330226357e-05,0.000133306499551499,0.000295104891232793,0.00046628226424662,0.000643463506777457,0.000817449592075751,0.000984987286612759,0.00113206983763864,0.00125272605770641,0.00132690976579191,0.00136302865696076,0.00136651833930172,0.00143696816307835,0.00137606382506723,0.00226028840166984,4.72214081790554e-05,2.85322407189937e-05,-0.0101951200434766,-0.00410091813630803,-0.00425110372716214,-0.00263183648369448,-0.00188057267629435,-0.0019003312854305,-0.00192551524445932,-0.00178244652258528,-0.00152045816272636,-0.0011425463840659,-0.000793414694529509,-0.000470856343391188,-0.000169745593828629,0.000105706597652997,0.00037780278192214,0.000657778840988635,0.000954887265756363,0.00127604017686358,0.00161454754558407,0.00195181096717752,0.00225338945439427,0.00248173615521407,0.00257291673582914,0.00254991311307678,0.00240224989025596,0.00236085085824393,0.00257610934107024,0.0033395339158332,2.84669975664944e-05,3.0370729287955e-05,-0.0146205307301445,-0.00176722829266544,-0.000513558020169165,-0.00230825336826547,-0.00377229508539717,-0.00428482048958048,-0.00436598157883092,-0.00382260453778855,-0.00322561123667235,-0.00245640056403896,-0.00163176468946139,-0.000898239620507752,-0.000211177323982463,0.000437530317143368,0.00108865376212888,0.0017805370412836,0.00252734370999085,0.00333504764249715,0.00420747194421766,0.00513720277663626,0.00604646885277928,0.00678841049751574,0.00712264171984416,0.00678963609071887,0.00595702460623487,0.00479698062406236,0.00470898503279038,0.00867430265096547,3.02139978899028e-05,6.35003915088804e-05,-0.00683599183360797,-0.000219036232937301,-0.00639141227784536,-0.0104020492150766,-0.0153823246032376,-0.0165492573206807,-0.016264890483441,-0.0138258738789279,-0.0105908798727162,-0.00762186959506522,-0.00480454496594786,-0.0023639162728678,-0.000251376798919956,0.00163941676784611,0.00340802984014361,0.00520239920759325,0.00718159826048135,0.009478586438476,0.012145945083983,0.0151185996856172,0.0181722558041225,0.0208182180372874,0.0223581174781206,0.0217938608707353,0.01807864036675,0.0121534415159426,0.00456579996740022,0.00612179249068309,6.33154175582917e-05,0.000154954395404062,0.0261986337840397,0.0234954509239247,-0.0184042362204641,-0.0361597357186561,-0.0483488007383999,-0.0495368927655495,-0.0454288957593955,-0.0395460955122813,-0.0309910601164559,-0.0225580097961672,-0.014841075433678,-0.007928112142067,-0.00181856790635764,0.00379660167761006,0.00915755913321291,0.0145631141348789,0.0203779326571327,0.0270091820961121,0.0348284734576399,0.0438004813442999,0.0533077830471104,0.0622467393223747,0.0686393331039056,0.0699850407094777,0.062575512811626,0.0431104128473874,0.0138460983107983,0.011502625606081,0.000154746598498136,0.00031064466456362,-0.0792117670476161,-0.0713947593806675,-0.105428302302095,-0.123675498417548,-0.131725685391042,-0.130574486925266,-0.110090585176612,-0.0879605348327009,-0.0664527174514477,-0.0467112825503529,-0.0299864114841408,-0.0154464611915638,-0.00250019960133159,0.00954839912687234,0.0212250744578967,0.0328965114855003,0.0454689469963006,0.0600474123335573,0.0769299317524424,0.0960670218627279,0.117137240926314,0.13876870947349,0.157942150704956,0.168517725353785,0.16280843566804,0.127542036927012,0.0439387000845798,-0.0350636829062634,0.000310435989368445,0.000399706456030727,-0.0945982170527495,-0.138145649524144,-0.155655761189265,-0.202470475988032,-0.189996797780982,-0.169445665526078,-0.139939370760856,-0.106330108211472,-0.0771753136633499,-0.052051821449177,-0.0312127629144629,-0.013435546592267,0.00280326719878043,0.0184953924487901,0.0340264298625084,0.0498183181979035,0.0666180561300394,0.0850791175862865,0.10620604385825,0.131055569805143,0.160192437260573,0.192922918256707,0.2268008743945,0.255911151636019,0.269026279881757,0.257977328397772,0.174650540978872,0.0306015839835278,0.000399538851130044,0.000210501758110803,-0.0611085811652368,-0.119700445367252,-0.118574484293452,-0.110980882306586,-0.0963954703939659,-0.0756149643969854,-0.0553474353201963,-0.0365823641460399,-0.0208945480539071,-0.00796852099432026,0.0027656725095913,0.0119093961858259,0.0201111577925639,0.0278678997618738,0.0355750430182906,0.0435393676739414,0.0520514900721613,0.0614757669765066,0.0724814363888989,0.085846870784037,0.102167070850096,0.121818732411245,0.144204210004807,0.167871829701036,0.191124637579613,0.206510593850376,0.215434458339121,0.207756716580728,0.000210460820998602,-0.000265059094982822,0.147765093992056,0.129922842237996,0.119125979260219,0.108278030958122,0.0966912195325083,0.0863156218705702,0.0762611679717422,0.0677089021838552,0.0603584599966156,0.0540666575462216,0.0486478953350663,0.0438869472943421,0.0396331603487027,0.035739161232602,0.0320677899500808,0.0284912640330038,0.0248714577978173,0.0210780979161506,0.0170148402566493,0.0125445293273633,0.00748632311807337,0.00170690549653184,-0.00489857723332128,-0.0122376828788993,-0.0191352557576139,-0.0255043988872003,-0.036549790333562,-0.00607668557560862,-0.000265031868640204,2.07456122420819e-05,0.308019010433928,0.360133990797428,0.318743330528706,0.281969103713984,0.249336027831573,0.215582384341574,0.184123340833342,0.154684215623431,0.128650750289962,0.105967992630927,0.0862891879485822,0.0691179933334982,0.0537518007440002,0.0395023712086839,0.0257336634982672,0.0118822008042593,-0.00274499774947544,-0.0188085880949792,-0.0369345538691563,-0.0576873507226881,-0.0813527012323489,-0.108142530045645,-0.136773027423315,-0.16575368373213,-0.197680069999476,-0.203910835588206,-0.257916380261128,-0.115002774366742,2.08745592448686e-05,0.00232003309917737,-0.0563743049485203,0.133088765702806,0.23585402511353,0.254041987661596,0.245015390932929,0.218803130415068,0.189514544204104,0.159157787406993,0.130737340186409,0.105177024134858,0.0827746305195901,0.0634433863804787,0.0466440316007661,0.0314293638559329,0.016808508676541,0.00190542160303629,-0.0143700549353676,-0.0328124981222433,-0.0537743726156284,-0.077608303028212,-0.10417196854252,-0.133351744642109,-0.165925813936602,-0.192687902962876,-0.234081155681358,-0.242349943040929,-0.241663028004809,-0.214358152300458,0.00232022693804034,0.00133683237457941,0.07324435093869,0.0828540138487057,0.120441823879784,0.129518973733239,0.132722417723944,0.119806356514698,0.105641282052646,0.0893765467625372,0.0733798551691425,0.0585964519315903,0.045469635680019,0.0341234289607675,0.0243113746241347,0.0155386700489941,0.00716876140870684,-0.00150975891273024,-0.0111642839730409,-0.022265993310823,-0.0350057462762404,-0.0495352856452869,-0.0660997883648229,-0.0832436105113748,-0.104219420429707,-0.118802663589316,-0.130468504895072,-0.127981561309507,-0.0669305873357861,-0.0282470188133487,0.00133704391980227,-0.0207845035248887,0.0550724281780112,0.0550632483893855,0.083685206312332,0.0609256830842316,0.0578612598952622,0.0491455077715629,0.0417882340923192,0.0351236481517955,0.0286890650481133,0.0228712851063038,0.017778656440752,0.013456393041809,0.00979622261798415,0.00656339070658133,0.00345271919212658,0.000146449833883206,-0.00360603325776919,-0.00797407248062116,-0.0130793370567976,-0.01886386193599,-0.0260914133011714,-0.03378785146829,-0.0437992272075733,-0.0557483209728548,-0.0629467863339395,-0.0742680005712742,-0.064658057723538,-0.0492812364092889,-0.0207843070361647,-0.0875206998210529,0.194350019775074,0.0906621768500318,0.0511853321924924,0.0275775845869503,0.0169526614971939,0.0144356192210059,0.0124768723110446,0.0110851907328005,0.00959079748683307,0.00800071085472871,0.0064388714764094,0.00496875303903667,0.00361304371859187,0.00232989729732496,0.0010392821289343,-0.000331018034611061,-0.0018212147546588,-0.00344113790289425,-0.00533117376068184,-0.00741528530487763,-0.0101564885572916,-0.0137492341633146,-0.0184042552322949,-0.0267980234596081,-0.0415829565998337,-0.0621194249709816,-0.112301982171016,-0.168037441429802,-0.0875205331384643,-0.416524808032739,0.128674207008818,0.160948886394559,0.0438180392507409,0.0178501633324738,0.00477037706106479,0.00175407614099826,0.00157614132594571,0.00185408017228245,0.00208722779035007,0.00211246288491074,0.0019586507810509,0.00165938807027739,0.0012380698178561,0.000738020800722078,0.000230039921645186,-0.000217019500498271,-0.000591139113147113,-0.000888309180204751,-0.00119690256184546,-0.00151678703451104,-0.00190623942473768,-0.00269989246945312,-0.00447860091245172,-0.0082371170276813,-0.0191789509381786,-0.0461508181491661,-0.0880990268374453,-0.16748804660346,-0.41652467419297,-0.400008963812936,-1.34505926033177,-0.516932114650565,-0.224986742637856,-0.094948299041928,-0.0403361988295322,-0.0178438484873693,-0.00826939348575618,-0.00406383517132997,-0.00211598319282769,-0.00115459401754262,-0.000647726429905242,-0.000362219809035343,-0.000188500538871273,-6.927454618194e-05,3.06726828817912e-05,0.000139643362691017,0.000288028459895179,0.000517279058919389,0.000890969306405686,0.00151077739650894,0.00254178564101404,0.00425857825589549,0.00713906465980547,0.0121758102821822,0.0218611630271636,0.0428019225676949,0.10813811661107,0.293433914512827,1.01013597638045,-0.736937863694137,-1.31555259262343,-0.529349504142333,-0.228155988945237,-0.0960935580414861,-0.0409388766136574,-0.0180879352469599,-0.00838500482981176,-0.00412083810695437,-0.00214550294426389,-0.00117070307207988,-0.000656743267611561,-0.000367254882611019,-0.000191119015842354,-7.02398195335358e-05,3.10900920729828e-05,0.000141564344004536,0.000291993937674703,0.000524400435387962,0.000903231450042119,0.00153156632458861,0.00257678802530671,0.00431699566904968,0.00723818503333941,0.0123457969047186,0.0221338508069166,0.0435540869951401,0.110320747537128,0.276910204268157,1.59309332414294,-0.275575210797595,-0.527601392314023,-0.315527853457715,-0.187556159168642,-0.101808937584277,-0.0507126335378075,-0.0263827322764202,-0.0133945910308,-0.00689019602122272,-0.00361547661295815,-0.00191808306628184,-0.00103363503746482,-0.000558153603345449,-0.000290105416830168,-0.0001236661720601,3.85341539881756e-06,0.000140527205559093,0.000333799315365905,0.000650559164246395,0.00120714147947771,0.00220492592617051,0.00404123525594887,0.0074782481370182,0.0138710673886425,0.0275700891075582,0.0531248770239571,0.11771709319269,0.252910877571174,0.733054537257286,-0.275575134585618,-0.101758722583702,-0.264670234578287,-0.236157941543165,-0.14893871528414,-0.0905941334404254,-0.0511216119806093,-0.0279021050246148,-0.0152194008216291,-0.00823281651985302,-0.004492928917003,-0.00248116370630163,-0.00138324144066628,-0.000769534392372402,-0.000407828413169686,-0.000169639456154578,1.9312102061118e-05,0.000212699486686138,0.000467909021879332,0.000864739272986011,0.0015419706439304,0.00275874769264368,0.00496818885106041,0.00920502371790366,0.0169695992779062,0.0323673603120295,0.0607923676394626,0.120655213149526,0.174028480298724,0.226784505894228,-0.101758625175577,-0.0439989290231067,-0.104935647228942,-0.112430528779069,-0.0894033980514735,-0.059868868957092,-0.0380088911175582,-0.0229359127347514,-0.0134523970664435,-0.00782390131846447,-0.00452253663631512,-0.00262150972087117,-0.00152501722448745,-0.00087576216480316,-0.0004709996282305,-0.000191014486447627,3.82019335021555e-05,0.000270925353455262,0.000562857784467222,0.000996601197288405,0.00170419735243358,0.0029453767180022,0.00512855432719774,0.00916851474942797,0.0162193252965621,0.0301323942769205,0.0471297918476004,0.0934274634917774,0.0945472690925303,0.0791793935444166,-0.0439988578239902,-0.0132742854598955,-0.0444128737202192,-0.0534704704479896,-0.0467689010611746,-0.0362142853581035,-0.0250530453545955,-0.0165507800927998,-0.0105238722483386,-0.00653041097034155,-0.0040224308143834,-0.00246453027191453,-0.00150806008913425,-0.000907045485908407,-0.000508356594797804,-0.000215907888300454,3.17048494167512e-05,0.000282921458140796,0.000586489302668323,0.00101485537210117,0.0016781394382135,0.00278637948929724,0.0046063932441608,0.00788821184541794,0.0123152454620925,0.0220169823628009,0.0278906733796271,0.0402007474237926,0.0401766318868503,0.0301434543597918,-0.0132742349750306,-0.00304789975507986,-0.0136943406260873,-0.0216362550715616,-0.0218533221284188,-0.0186111340872537,-0.0145226672494162,-0.01043655731648,-0.00725437761247863,-0.00489697368382878,-0.00326317434554835,-0.00215951165912757,-0.00141666311598467,-0.000904213295957008,-0.000531410287375351,-0.000234191608224248,3.00296167488376e-05,0.000296587347042433,0.000602503413954757,0.00100239773245164,0.00156677202070627,0.00246246358035636,0.00370507389924029,0.00606747374140429,0.00837351176664406,0.0133766490989813,0.0168970504208943,0.0198804110513705,0.0158661239972821,0.0110503831646506,-0.00304786924696611,-0.000575422783271211,-0.00433966603816806,-0.00805593567073674,-0.00968988579501695,-0.00926852920346232,-0.00802808165173715,-0.00645453481137012,-0.00494780438215184,-0.00368445200801087,-0.00269283902763763,-0.00193401516066532,-0.00136131942414754,-0.000916998810515494,-0.000558807481758906,-0.000250644703227541,3.52691267073205e-05,0.000323420841979599,0.00063789505543989,0.00101911546478659,0.00148027284074028,0.00216862183624275,0.00290023250463753,0.00418950557772915,0.00522616143402032,0.00655305821338281,0.00694293115644248,0.00783664698603725,0.00602863841938141,0.00338252500132931,-0.000575409698167601,6.48249502595936e-05,-0.00225502401326452,-0.00427732085911277,-0.00559917400673494,-0.00590790620842046,-0.00561861807608512,-0.00492384473349038,-0.00411966626034905,-0.00330033550554347,-0.00257045000587234,-0.00193955209059218,-0.00141377211567044,-0.000974597243167839,-0.000601321253336524,-0.000270276514027265,4.07190797582807e-05,0.000356689324975236,0.000693031798354572,0.00109493370569743,0.00153499311912144,0.00213827343850761,0.00274724914781094,0.00355478051957817,0.00424464513157456,0.00504645828704173,0.0049124505095765,0.00451353253143625,0.0032681803755707,0.00158531822171559,6.48269179879e-05,0.000536360222036001,-0.00301423520945217,-0.00449022259294534,-0.00551099664988612,-0.00577888108503226,-0.00559856996013786,-0.00503587735370201,-0.00430087598204116,-0.00350806193534446,-0.00275269423484704,-0.0020788962850351,-0.00150530734301816,-0.00102654877731244,-0.000626518918313221,-0.000278880751475784,4.25601077778189e-05,0.000374493722359155,0.000732498779581528,0.00117300149627535,0.00166445251812547,0.00229053683488448,0.00294114555685031,0.0037037162649345,0.00427087089567588,0.00484946497342043,0.00501380848153434,0.00481905184867199,0.00428614732338969,0.00345370508505794,0.00053635279427093,0.000574077116255796,-0.00212639553595713,-0.00291481850454798,-0.00396531753152168,-0.00431369254489752,-0.00432015638932652,-0.00399028242801875,-0.00349758539739089,-0.00290339947451881,-0.00231387535466145,-0.00176408305038373,-0.00128582666881105,-0.000878636444855447,-0.000536426429675456,-0.000238581342134532,3.52012786557e-05,0.000320412460285663,0.000627539892021205,0.00100307684172359,0.0014242548885725,0.00193496820157432,0.0024446558297979,0.00303524014672291,0.00348136713452516,0.00380385617718222,0.00394185841928673,0.00386834372464525,0.00340896143748066,0.00340005639960996,0.000574054755242518,0.000441757226082664,-0.00148963533326798,-0.00155834393099462,-0.00238041245364955,-0.00263720703122071,-0.00277448367100867,-0.00263045175155661,-0.00238887499379233,-0.00203750209881566,-0.00166042033746753,-0.00128251495098363,-0.000941787766911587,-0.000645284053091122,-0.000393909949392762,-0.000174513481385255,2.69005927932642e-05,0.000236622462970621,0.000463903270889765,0.000734662482656132,0.00103292587152275,0.00138135237742589,0.00170898937556727,0.0020293873100406,0.00229035026404241,0.00247961798946018,0.00252003067582289,0.00251996545599327,0.00201492535059781,0.00199617826436927,0.000441715972421951,0.000286462668275933,-0.00116316023110695,-0.000605628008877724,-0.00131903729900141,-0.00149633055539875,-0.00171534350813972,-0.00166007826591598,-0.00154768798998615,-0.00133612435756181,-0.00111548052053957,-0.000879191128444493,-0.000656302552886144,-0.000454761300361458,-0.000279625985473494,-0.000124579307939543,1.8729350780768e-05,0.000167311512427272,0.000327287795070602,0.000513695231574589,0.000713451246024992,0.000933543549773366,0.00114405760332233,0.00132733252254291,0.00143945449051442,0.00150870734546485,0.00143688643621558,0.0013692787049389,0.000971474888229832,0.00126189316298386,0.000286403064516966,0.00016771899245682,-0.00133184312338942,-0.000250202067125144,-0.000932614653727017,-0.000842421352714971,-0.00102906633789725,-0.000997268387332297,-0.00100838573084217,-0.000896503923410941,-0.000761211939228955,-0.000609537630777629,-0.000461315531798377,-0.000323782336293143,-0.000199192573772706,-8.38987041539618e-05,2.61367261151144e-05,0.000141176601028027,0.00026413679862131,0.000401099008759135,0.000543441341675437,0.000685347051524513,0.000809438180995856,0.000918121650895351,0.0009775692934346,0.00101590997029396,0.000939127295395331,0.000855067125468252,0.000503065336083426,0.00106377619794397,0.000167642211914129,9.08987568356631e-05,-0.00229600256506664,-0.000515519121841286,-0.00136735102558508,-0.00107408075327258,-0.00118519136504403,-0.000946628406131667,-0.000871196308177815,-0.000796686428914935,-0.000700352186262645,-0.000579677340750385,-0.000444416738883188,-0.000308336304550393,-0.000181394820604866,-6.04299305181072e-05,5.52078723918429e-05,0.000171191147828658,0.0002909764729288,0.000418257914538895,0.000549279298320811,0.000680519932523856,0.000792591474511404,0.000884547100240705,0.00092879264984727,0.000957967582407388,0.000914584168233255,0.000856743116708651,0.000539249302543681,0.000994129736200654,9.08045961398943e-05,4.79604147219895e-05,-0.00493912312264686,-0.00149606597134797,-0.00181140530807629,-0.00072711685482355,-0.000944787875281158,-0.00101727794524898,-0.000957200006106856,-0.000862898618757325,-0.000741893308283734,-0.000607949692303729,-0.000472290553693166,-0.00032125353909598,-0.000171778709505022,-2.13962314497565e-05,0.000135042075027133,0.000299566418470611,0.00047287485352231,0.000652277392117818,0.000829108868239755,0.000998370944323774,0.0011472072763699,0.00126998895159607,0.00134475831665692,0.00138222165062234,0.00138265688308456,0.00146253997475544,0.00137634617190587,0.00229770503352543,4.78471097431133e-05,2.8934705075542e-05,-0.0104272817815282,-0.00412295002881842,-0.00431546707452785,-0.00267305614645194,-0.00190752246559554,-0.00192223832764284,-0.00195166985389075,-0.00180765364046891,-0.00154245772755486,-0.0011594464574081,-0.000804808886739564,-0.000477606020396058,-0.000172269283699154,0.000107369790622886,0.000382958840824784,0.000666536167183558,0.000968153342041429,0.00129329909169509,0.00163623016956144,0.00197856352114328,0.00228375672849684,0.00251505738034067,0.00260735045265162,0.00258491499011255,0.00243110708292409,0.0024009465545186,0.00258526124121028,0.0034274513702532,2.88669404526128e-05,3.08048170052514e-05,-0.0148685175806345,-0.00182692340896923,-0.000473953145669987,-0.00231836133058585,-0.00382754236797315,-0.00434183888360713,-0.00442095926509146,-0.00387124920830715,-0.00326510422334276,-0.00248714099055731,-0.00165267518268149,-0.000909845515499099,-0.000214212905617716,0.000443372295744509,0.00110456051662898,0.00180646504256747,0.00256380019296025,0.00338290154974706,0.0042663102046817,0.00520806914465613,0.00612983028495235,0.00688143172214461,0.00721946031812247,0.00688192327714162,0.00603084029318828,0.00486577311755941,0.00473860422898716,0.00884431015446718,3.06434815950493e-05,6.43554104892566e-05,-0.00664526490321191,-0.000382349063674649,-0.00647724569407309,-0.0105064771863293,-0.0155584668187945,-0.0167739912130653,-0.016478905000883,-0.0140108502432269,-0.0107324743875059,-0.00771970019006761,-0.00486445086547542,-0.00239076727111683,-0.000250393907595794,0.00166339684387259,0.00345306567490193,0.00526971856257373,0.00727457087538565,0.00960243465260263,0.0123054485862828,0.0153170472379095,0.0184112652638192,0.0210923638997175,0.0226505769949737,0.0220778782832675,0.0183003065603494,0.0123075162815498,0.00452388953970494,0.00643698025953987,6.41666356869106e-05,0.000156606151034096,0.027470744925931,0.0238248884152405,-0.018569843948148,-0.0366671264217752,-0.0488633118953578,-0.050082625325543,-0.0459514815678424,-0.0399842271633475,-0.0313448460211018,-0.0228144718588809,-0.0150071240382477,-0.00801595555734568,-0.00183438171560935,0.00384496454087273,0.00926710729476933,0.0147319049332964,0.0206064050861364,0.0273106698384284,0.0352237421310273,0.0443028874327401,0.0539233633861933,0.0629680454467298,0.0694333211534166,0.0707899799878073,0.0632879669326019,0.0435759309599882,0.0139432007075899,0.011389459857571,0.000156396036991732,0.000312300073286764,-0.0794439980200095,-0.0719489613813116,-0.105809988809443,-0.124448071346476,-0.132746823102418,-0.131453699217855,-0.110911008680475,-0.0886054504472573,-0.0669336742435214,-0.0470674168391801,-0.0302163747546684,-0.0155795567679917,-0.00254272160160375,0.00959050459577208,0.0213417305872681,0.0330951198712369,0.0457624296238525,0.0604362062023511,0.0774311083944487,0.096700372410148,0.1179090335363,0.139689488743168,0.159002711803179,0.169676345643759,0.163926444591285,0.128671898705911,0.0438421512468291,-0.0351695452333035,0.000312091009665866,0.000400018247817116,-0.0962326786590167,-0.139030459625112,-0.156620076173936,-0.202815365042872,-0.190438510019196,-0.169719548848365,-0.140135303677154,-0.106535653170451,-0.0773137840031999,-0.0521732153833363,-0.0313020896924575,-0.01349334193145,0.0027688858853343,0.0184897901437136,0.0340569811216029,0.0498722481777107,0.0667033336795574,0.0852033235431937,0.106349549754261,0.131230902069641,0.16040839265873,0.193181288379709,0.227099634665203,0.256270382481991,0.269463931677178,0.258088919170471,0.176287904397002,0.0306494824085145,0.000399851358776109,0.000210489914841491,-0.060737639162415,-0.119897579490686,-0.11866948200895,-0.110948518899814,-0.0963714302400398,-0.0756148491402247,-0.0553566606249841,-0.0365988508737549,-0.0209039137535208,-0.00797708685413097,0.00275888087419379,0.0119046222458387,0.0201094088538038,0.0278707812303751,0.0355810510500486,0.0435474004311526,0.0520631292388516,0.0614916464269729,0.0725008082465452,0.0858705168581815,0.102195662922802,0.121849687151792,0.144232137170097,0.167892533457398,0.191094390166632,0.206524232765745,0.215454281077791,0.208149474953293,0.000210449236570467,-0.000265122798037847,0.147114700333969,0.129618377947703,0.119040535800752,0.108301262672383,0.0966807931207696,0.0862912584795991,0.0762403751427009,0.0676844178583688,0.0603362578152438,0.0540477322612566,0.048632950069881,0.0438755603984913,0.0396246313378434,0.0357331279255014,0.0320634067318834,0.0284879650292841,0.0248701598255854,0.0210793149451342,0.0170180508686121,0.0125493416999104,0.00749127588698274,0.00171150749411242,-0.00489184051330521,-0.0122450789950354,-0.0191207690868622,-0.0254655439653169,-0.0361172632777115,-0.00512949446823459,-0.00026509570384217,2.10409370575642e-05,0.308682441489716,0.36018146802512,0.3190736336987,0.282077055305951,0.249410292442338,0.215671275098808,0.184175344525564,0.154739170424184,0.12869725924344,0.106008210451988,0.0863252721012098,0.0691465120591103,0.053772733168589,0.0395132697901235,0.0257317416626726,0.0118692539346664,-0.00276582866847725,-0.0188364944976136,-0.036967469075172,-0.0577252409569725,-0.0814014214803017,-0.108206448391818,-0.136806339635565,-0.165920495652273,-0.197671495112103,-0.204145577167934,-0.257786945227047,-0.116210438119321,2.11691431062936e-05,0.0023154053987839,-0.0549804541092526,0.133742689755557,0.236630024928349,0.255000276061276,0.245899649487842,0.219589153916844,0.19018005655288,0.159706262930456,0.131190841979263,0.105539954284141,0.0830604439944048,0.063657539706726,0.0467906241856531,0.0315162116079452,0.0168374166024622,0.00187332566598576,-0.0144631752219032,-0.0329723327216035,-0.0540131352217876,-0.0779360554032992,-0.104592812737259,-0.13392428104505,-0.166535950476882,-0.193484654456287,-0.234864618209072,-0.243404551039744,-0.243199768310393,-0.215517019142323,0.00231559889709774,0.00139269922580173,0.0726687192799617,0.0832436997787456,0.121783464465366,0.130788376141755,0.133949976388008,0.120983121299409,0.10666289149609,0.0902314875879773,0.0740814054430077,0.0591498961828676,0.0458938253878298,0.0344393897813417,0.0245340093506272,0.0156776828422998,0.0072300420589445,-0.00153050705262523,-0.0112795386220116,-0.0224903290472197,-0.035355522547134,-0.0500329795173917,-0.0667426510210517,-0.0840730537900631,-0.105231246134344,-0.12000423733424,-0.131820463228451,-0.128933941179838,-0.0676442585138148,-0.0274683936516651,0.0013929121717859,-0.0207741629107749,0.0578066307400829,0.056385861207893,0.0844437807102562,0.0618307610778137,0.0586152861489335,0.0497259461360835,0.0423418450064763,0.0355693028066899,0.0290569562300625,0.0231637518834503,0.0180046615844172,0.013627162924399,0.00992279931375642,0.00665073469251654,0.00350169959761776,0.000154722441735167,-0.00364589828773599,-0.00807089200620387,-0.0132392519582915,-0.019099349286672,-0.0264161753088282,-0.034206971540917,-0.0443505589998132,-0.0564008809816425,-0.0638308795766713,-0.0751724559427024,-0.065634365100783,-0.0492102616573626,-0.0207739632909351,-0.0900023246914137,0.191097546668225,0.0902952122556929,0.0531519494093402,0.0273309911172484,0.0174087147844444,0.0145901209687244,0.012659582563444,0.0112448012477061,0.00972945590585384,0.00811827685680784,0.00653508838552737,0.00504329897054623,0.00366703349594025,0.00236475972901454,0.0010537072821371,-0.000338397054472008,-0.00185068884301996,-0.00349476581949216,-0.00541212116320054,-0.00752503802076515,-0.010307533747682,-0.013948632154044,-0.0186800187795714,-0.0271989719813632,-0.0421028327163542,-0.0632435527823533,-0.113547189814889,-0.172112288976489,-0.0900021536881069,-0.421088504272674,0.159917115933566,0.152108855399542,0.0474454394132615,0.0176732959508929,0.00488248667920491,0.00178852216825127,0.00159219026393121,0.00187848433719267,0.00211493895525206,0.00214134670086015,0.00198649728554331,0.00168408045339953,0.00125647072481854,0.000748243915189916,0.000232548340440601,-0.000220920489790446,-0.000599438342439603,-0.00089901385399956,-0.00121103582357543,-0.0015342899602776,-0.00192976264556933,-0.00273525625252453,-0.00453562676169851,-0.00836181700567336,-0.0195035417824744,-0.0465761947057922,-0.0906273469891504,-0.164833236773523,-0.4210883669698,-0.736937924793179,-1.31555259461903,-0.529349505943384,-0.228155989216736,-0.0960935579022221,-0.0409388764305742,-0.0180879351182692,-0.00838500475271772,-0.00412083806410932,-0.00214550292127956,-0.00117070306602847,-0.000656743261311113,-0.000367254879390715,-0.00019111901430887,-7.02398190318095e-05,3.10900917554891e-05,0.000141564342742272,0.000291993934965354,0.000524400430168601,0.000903231440312182,0.00153156631568282,0.00257678799338302,0.00431699561394928,0.00723818494451757,0.012345796783096,0.0221338507332309,0.0435540870873729,0.110320750528126,0.276910203105533,1.59309338850825,-1.00269343595781,-1.2800000413036,-0.540519517862525,-0.230859467130558,-0.0970733749674415,-0.0414475290560986,-0.0182975681043819,-0.00848399026983977,-0.00416960009100817,-0.00217079859330232,-0.00118448298128691,-0.000664450025325405,-0.00037155482579948,-0.000193353593282948,-7.1064076302348e-05,3.14440618640024e-05,0.000143198085323064,0.000295366814895203,0.000530456068582097,0.000913655660800818,0.00154923685888699,0.00260651328172116,0.00436660489055295,0.0073231452465965,0.0124841599642259,0.0223936770392186,0.0442270847148529,0.110539146733581,0.277301965350861,1.93081510967147,-0.259861788499237,-0.543172171620227,-0.317458869372001,-0.190118692960129,-0.103040981887232,-0.0513480005119344,-0.0266932497593041,-0.0135546791636973,-0.00697134807587277,-0.00365729193544866,-0.00194030285447797,-0.00104571598141749,-0.000564298145602099,-0.00029342130149896,-0.000125542348299591,4.11439468134538e-06,0.000142004217828085,0.00033678371885276,0.00065827582399985,0.00122089666334117,0.00222914705051781,0.00408880189194054,0.00756534635369242,0.0140335221727964,0.0279143061492933,0.053669348402817,0.119122828658576,0.261328576351207,0.706400454921072,-0.25986169909411,-0.103807674331355,-0.26684041990227,-0.239263915073463,-0.150611729599658,-0.0916031901085191,-0.0516887135910053,-0.0282096931468379,-0.0153849614499825,-0.00832355738332753,-0.00454302285826896,-0.00250902447700879,-0.00139921615193302,-0.000778923364300581,-0.00041246701771105,-0.000171594280769782,1.92839383786454e-05,0.000215931254373729,0.000473809572614284,0.000874312999511173,0.00156021802420018,0.00278948928845047,0.00502088751352155,0.00930623257924171,0.0171417581626676,0.0327237407152268,0.0616920309427584,0.120113177634103,0.18206071838313,0.229576213466469,-0.103807570819841,-0.0443758329787334,-0.106239480672342,-0.113526445149262,-0.0902991193196232,-0.0604817234357346,-0.0383886104656395,-0.0231670354893375,-0.0135892140619333,-0.0079031583407159,-0.00456870091506423,-0.0026484543136511,-0.00154039563339742,-0.000884606597814834,-0.00047594095847425,-0.000192479121125604,3.88987989212036e-05,0.000273544029524928,0.000569299173532149,0.00100711072673356,0.00172114432051408,0.0029762388598498,0.0051795686870033,0.00926125474762598,0.0163921380490921,0.0303336381991473,0.0480822788740141,0.0937543634179719,0.0943112325572467,0.0812077889431136,-0.0443757548495321,-0.0133092216296645,-0.0446631598153253,-0.0539470700257995,-0.0471659564929297,-0.0365193973271209,-0.0252733842409509,-0.0166947845754784,-0.0106160488283194,-0.00658764872918991,-0.0040571585161202,-0.00248573040689887,-0.00152105480671348,-0.000914516293918964,-0.000512579951398918,-0.000218012281619681,3.21150843492076e-05,0.000285162667552351,0.000590883758324736,0.0010236880700285,0.00169228044710914,0.00281004900397612,0.00464782414254398,0.00794827445344732,0.0124589230619219,0.0221115403532046,0.0281395783646,0.0408818319264721,0.0403096276191289,0.03035934864407,-0.0133091640367022,-0.00306235248372389,-0.013795767934044,-0.0217574141340411,-0.0219947225413254,-0.0187363100983525,-0.0146194033068571,-0.0105116996210574,-0.00730636333354069,-0.004932814729837,-0.00328721275843619,-0.00217518779172779,-0.001426872566079,-0.000910800586562636,-0.000534969673215912,-0.000235805581988033,3.00026886320791e-05,0.000298833180032149,0.000606649653029727,0.00100929637040143,0.0015786503675964,0.00247888150992519,0.00373760820380803,0.00609843254717377,0.00845165816687498,0.0134874822446004,0.0169446779136104,0.0199957756158657,0.0159974184062129,0.0111294487387455,-0.00306231539818662,-0.000583322610474539,-0.00433769567300089,-0.00808959264223054,-0.00973601226420776,-0.00931845792928828,-0.00807460757551563,-0.0064925206292566,-0.00497926581563084,-0.00370837586776877,-0.00271082632696531,-0.00194742633147943,-0.00137070822221918,-0.000923503339886346,-0.000562916694195771,-0.000252267446748038,3.55193786047392e-05,0.000325637008415072,0.000642769883724737,0.00102576408854353,0.00149208901867615,0.00218008043971265,0.0029251879216015,0.00421204089128093,0.00525135607721462,0.00659302220828509,0.00700474391507288,0.00784849896388288,0.00606115332061039,0.00334730374750188,-0.00058330585179178,5.86881494234244e-05,-0.00231743782837627,-0.00428756822343691,-0.00564196776383388,-0.005947980007783,-0.00565794770564526,-0.00495993276331101,-0.00414893341742341,-0.00332512590527832,-0.00258963574431407,-0.00195451079452759,-0.00142492316096143,-0.000982269469737181,-0.000606217844124202,-0.000272573250602109,4.12509534857577e-05,0.000359434334782832,0.000699175132010269,0.00110276887791314,0.00154891856433046,0.00215273063244434,0.00276908765290704,0.00358233934384111,0.0042817148133972,0.00506351562942966,0.00494940433629837,0.00454267454628112,0.00330365327020345,0.00156355198826109,5.86907489087408e-05,0.000543394498894993,-0.00310608091686003,-0.00452662361040356,-0.00557035562226475,-0.00583518909811392,-0.00565238012005217,-0.00508344410415922,-0.00434072228972912,-0.00353987312171454,-0.00277731973568429,-0.00209701133275583,-0.0015182546394801,-0.00103528437060105,-0.000631610426113762,-0.000281282836430625,4.30499606553395e-05,0.000377383079296237,0.000739066548815704,0.00118246940939759,0.00167948528348853,0.00231079608662149,0.00296884796306172,0.00373408595600651,0.00431889848604033,0.00490465591540344,0.00506153943284609,0.00486877324796917,0.00432895849719093,0.00345926198471757,0.000543385150549332,0.00057914590020258,-0.00212928486728236,-0.00293365005521182,-0.00400156351877103,-0.00434652490727501,-0.00435442326141059,-0.00402119283945074,-0.00352443475708405,-0.00292590785508446,-0.00233185507669874,-0.00177806062358618,-0.00129602361589533,-0.000885866216643533,-0.000540849925099574,-0.000240560616391895,3.55060400636363e-05,0.000323010551562654,0.000632705462346336,0.00101080006447261,0.0014355738946051,0.00194888153108107,0.0024642565024092,0.00305675189831996,0.0035028890270846,0.00383231787856511,0.00397225169248725,0.00390092079656078,0.00344813296259483,0.00343722752032348,0.00057911825142312,0.000444727201602387,-0.00152662595834605,-0.00156062653096843,-0.00240655271309133,-0.00265857722941649,-0.00279835092461834,-0.00265181668742412,-0.00240812210810999,-0.00205395483313515,-0.00167388766092522,-0.00129316652557332,-0.000949692863028639,-0.000650750988729446,-0.000397408859122754,-0.00017598115604762,2.72141183570773e-05,0.000238691862180859,0.000468206153141735,0.000740755590248741,0.00104176260642462,0.00139284213832019,0.00172260875816675,0.0020476022637652,0.00231084396864659,0.00250093590939007,0.00254232437223906,0.00254141088677022,0.00202429043645191,0.00202317679995711,0.000444679356820063,0.00028869862008125,-0.00118295230443131,-0.000594320103625457,-0.00133940044805174,-0.00150731898195581,-0.00173290237934532,-0.0016752119984162,-0.0015618586383025,-0.00134819055579922,-0.00112560076733573,-0.000887306439453408,-0.000662588789437922,-0.000459113457033732,-0.000282316827888742,-0.000125857703350787,1.90461056194964e-05,0.00016879332684786,0.000330335976073408,0.000518612995912898,0.000719632283958956,0.000942083246444553,0.00115427080760597,0.00133825248734147,0.00145232213789636,0.00152261385310034,0.0014496358846885,0.00138658019520228,0.00096812093824688,0.00128490728620509,0.000288632851466771,0.000169203539473187,-0.00136804077695164,-0.000224544115535905,-0.000952926561753378,-0.000844911059346875,-0.00104012221856314,-0.00100652698652389,-0.00101883767095578,-0.000905865550024058,-0.000769006074623644,-0.000615555416244457,-0.00046576728054259,-0.000326968775678377,-0.000201048705940003,-8.47495277542855e-05,2.64155792362935e-05,0.000142853864630321,0.000266748107229409,0.000405401106670006,0.000549405547963969,0.000692229517963203,0.000818175437953871,0.0009280118150097,0.000987456403954959,0.00102665452224058,0.000946391211551274,0.000868938578674049,0.000491165969016289,0.0010808230898613,0.000169121232744426,9.18191236287096e-05,-0.00235531392456398,-0.000479494585057255,-0.00140212453070031,-0.00108242565905373,-0.00120227900454384,-0.00095765771905803,-0.000880710321299018,-0.00080571668263039,-0.000708859868663643,-0.000586999342840357,-0.000450045557084107,-0.000312208570246835,-0.000183668363422001,-6.10936922146478e-05,5.56180975813063e-05,0.000173007051975747,0.000294281553021713,0.000422522783380452,0.000555421476071304,0.000688356066098555,0.000801246002269491,0.000894697049828087,0.000939407093540165,0.000969550478031461,0.000922081666301193,0.00087304800085407,0.000525282949611837,0.00100861885940277,9.17199315441068e-05,4.84903964415099e-05,-0.0050543069366117,-0.00145250518913405,-0.00184720970788169,-0.000727560617022729,-0.000953341310653555,-0.00102948527139117,-0.000969365092740577,-0.000872089815107221,-0.000749430711579295,-0.000613883797319696,-0.000477210796154192,-0.000324767857009421,-0.000173864019978211,-2.16911994516387e-05,0.000136867087170704,0.00030313813966536,0.000478875135095455,0.000660558160343889,0.00083882410935862,0.00101025300484198,0.0011608369287173,0.00128467213081468,0.00136038600761132,0.00139954433228374,0.00139550855970449,0.00148707837956943,0.00137201234756547,0.00231382243340038,4.8372428957517e-05,2.9277521191745e-05,-0.0106429081271454,-0.00413993911956037,-0.00436971180272316,-0.00271620306435089,-0.00193125715214832,-0.00193821276503751,-0.00197443874220694,-0.00182979203921452,-0.00156232519866514,-0.00117457979127568,-0.000814958206237438,-0.000483595994363101,-0.000174248466454092,0.000108511119351594,0.00038744838193164,0.000674347921202642,0.000978830579302447,0.00130794089308808,0.00165483751057792,0.00200040117800901,0.00230918188130872,0.00254311418698168,0.00263552753728784,0.00261460506723821,0.00245354484935593,0.00243600339834118,0.00258968024512388,0.00349068272409105,2.92075835717624e-05,3.11778754524839e-05,-0.0150520678516211,-0.00192631230549494,-0.000389220872547003,-0.00230629486747841,-0.00387634022806184,-0.00438536889645745,-0.00446191276349258,-0.00390726312023948,-0.00329405628705376,-0.00251041084323846,-0.00166861497606756,-0.000919310707679337,-0.000216842723322976,0.00044837678403473,0.00111762302365329,0.0018290914511801,0.0025958930941392,0.00342332769720948,0.00431613973193096,0.00526771044190062,0.00619864123226153,0.00695861324313967,0.00729926949991621,0.00695689897973209,0.0060878858986597,0.0049187357558562,0.00475710616494521,0.00898917449378142,3.10125872716922e-05,6.50920211593162e-05,-0.00622922598474395,-0.000679402202961086,-0.00657848545211554,-0.0105652321755211,-0.0156942856354223,-0.0169700835005566,-0.0166653278273109,-0.0141714729671042,-0.0108534268115119,-0.0078011611410721,-0.00491225181942582,-0.00240969275956857,-0.000246603072760331,0.00168605539285205,0.0034922740700317,0.00532539229778787,0.00735256284796609,0.00970743344423736,0.0124396836924144,0.0154850692505332,0.0186141887227724,0.0213242897097884,0.0228974273835212,0.0223156433289594,0.0184775242266242,0.0124227105128415,0.00444519160250651,0.00679585543697013,6.48999998857153e-05,0.000158027598088866,0.0293518684649393,0.0242989515535854,-0.0186990098834666,-0.0371579366080852,-0.0492945321177192,-0.0505371325160924,-0.0464014015957658,-0.0403611283737519,-0.0316531331029878,-0.0230374238168489,-0.0151497453607818,-0.00808893108998733,-0.00184232781198136,0.00389267862041257,0.00936936653027098,0.0148849212515843,0.0208064853859623,0.0275744137683332,0.035574125685439,0.0447511547560202,0.0544757825500775,0.063615704299477,0.070141557085159,0.0715000239997355,0.0639082526660621,0.0439408622217398,0.0140008952645516,0.0110624169577401,0.000157815520330109,0.000313711844471331,-0.0796802004045029,-0.0724264906547652,-0.10599628987661,-0.125133271618373,-0.13379995705864,-0.132338725449539,-0.1117539311595,-0.0892682933047159,-0.0674289179314418,-0.0474413645934279,-0.0304607802991691,-0.0157287369831205,-0.002600279450426,0.00961854297936925,0.0214412809054059,0.0332780973119765,0.0460452416558689,0.0608130977830935,0.0779190987161001,0.0973201012485566,0.118662318403415,0.140587468804701,0.160039766823568,0.170810318140701,0.165009903264728,0.129868125555894,0.0434996448782349,-0.035332061721003,0.000313502455593991,0.000400270523229455,-0.0989194873474888,-0.140380530434128,-0.15805062418871,-0.203320285406017,-0.191006188316178,-0.170062120980159,-0.140381585884569,-0.106801572745804,-0.0774973834784151,-0.0523402414937928,-0.0314298938264775,-0.0135806957057579,0.00271143351386245,0.0184699386581329,0.0340857236578177,0.0499320197026069,0.0668040795643912,0.0853550889648497,0.106523364854279,0.131441496386643,0.160667695155735,0.193491171937822,0.227450487661593,0.25670409413518,0.270000886210935,0.25812319852012,0.178656985508835,0.030963661388092,0.000400104241471656,0.00021047974335945,-0.0601086516509554,-0.120268928960872,-0.118821212588421,-0.110892434397157,-0.0963193791416679,-0.0756040840283785,-0.0553680534453972,-0.0366244065763693,-0.0209199089492185,-0.00799184197957758,0.00274719053269327,0.0118963448434523,0.0201062866064607,0.0278748880844728,0.0355897495966651,0.0435589358278194,0.0520798903355483,0.0615151700210327,0.0725301610564972,0.0859060358709012,0.102237509996827,0.121893044657516,0.144267920752727,0.167911113412228,0.191029961767734,0.206541294243012,0.215510861342295,0.208625587654471,0.000210439286509108,-0.000265201441496629,0.146151810881187,0.129145293887388,0.118911991925947,0.108348426749341,0.0966744894688866,0.0862619468847959,0.0762162375799141,0.067653389853659,0.0603077137890032,0.0540231520818991,0.0486135286457276,0.0438608697253562,0.0396136290089104,0.0357250504475928,0.0320571886845665,0.0284827220399205,0.024867084719496,0.0210794852205571,0.0170206064879062,0.012553387865607,0.00749470223458525,0.00171358185896122,-0.0048863777490249,-0.0122606644656043,-0.0191071323135289,-0.0254221700017636,-0.0354658049907626,-0.00360892416715427,-0.000265174464132548,2.15618447253257e-05,0.309818157687631,0.360305316969872,0.319533896531751,0.282253728619959,0.249517704381313,0.215798401832183,0.184256126326611,0.154818989689316,0.128765828467344,0.106067599870202,0.0863782656815241,0.069188480767095,0.0538019843271288,0.0395266937654081,0.0257255439191705,0.0118447525868241,-0.00280261034811398,-0.0188839140897666,-0.037023101292802,-0.0577881571572937,-0.0814815436009801,-0.10830899705262,-0.136869628736251,-0.166169928713249,-0.197671436292785,-0.204448581326508,-0.257695362850483,-0.118085652284969,2.16894165722515e-05,0.00230554433089622,-0.0530129178887167,0.134436463986816,0.237369002498606,0.25599165976234,0.246849575788589,0.220413260389974,0.190875497220933,0.160280882118408,0.131664381720752,0.105920758311818,0.0833582747657789,0.0638776956117261,0.0469357807141483,0.0315925625558142,0.0168490816596101,0.00181695752998941,-0.0145873071857354,-0.0331671884662163,-0.0542929228076864,-0.0783122339971035,-0.105067962728082,-0.134572833370663,-0.167199983172971,-0.194366696065124,-0.235712120525944,-0.24454999971538,-0.245132826222766,-0.217312329479588,0.00230573754122922,0.00146376872055095,0.0715367860381056,0.0834630839184274,0.123215802197173,0.131899672311425,0.135045424391933,0.122093646899745,0.107601050105682,0.0910256615627152,0.0747271083863402,0.0596568904347871,0.0462800894423757,0.0347230682284283,0.0247329257380976,0.0158014062245091,0.00728226424125369,-0.00155180460154368,-0.0113875672483777,-0.0227018384434169,-0.0356844674221884,-0.0505015434265122,-0.0673414465832621,-0.0848512474308357,-0.106175875476333,-0.121128364511345,-0.133120541852731,-0.129672399455323,-0.068101584623912,-0.0260383839427287,0.00146398285490229,-0.0206897511635743,0.0611511313505529,0.0572639440325722,0.0850466053829002,0.0628481885221434,0.0591987402658337,0.0502550033989267,0.0428257388251103,0.035963327350061,0.0293824640543209,0.0234198240234461,0.0182029015678714,0.0137777884361937,0.0100345546205504,0.00673069948803795,0.00355045164769347,0.000167592463634409,-0.00367461646017315,-0.00814925505741619,-0.0133732224042111,-0.0192992410099213,-0.0266931874351675,-0.0345631113756058,-0.0448312840202267,-0.056950240642917,-0.0646468253531371,-0.0760377788591312,-0.0666010842056953,-0.0488031990729385,-0.0206895488558814,-0.0932510280245005,0.186831636380732,0.0903519998936597,0.0543888293431551,0.0272173149372916,0.017771860953434,0.0147192170555757,0.012815715410991,0.0113800717625461,0.00985125579954112,0.00822300851515834,0.00662087797254367,0.00511095866230232,0.00371671182324253,0.00239562659270346,0.00106552470925937,-0.000346815686590124,-0.00188035542920344,-0.00354562557018911,-0.00548631700845734,-0.00762376203129987,-0.0104435423559869,-0.0141233525153776,-0.0189242074796855,-0.0275592921913953,-0.0425160651338178,-0.0642709774252079,-0.114907627840757,-0.175449888633424,-0.0932508533862238,-0.416237087172268,0.191264063360138,0.144124997381454,0.0508185972362661,0.0175622890302518,0.0049930390767617,0.00181346815813735,0.00160551247472931,0.00189642510515515,0.00213562581633684,0.00216467874113171,0.00200997713747169,0.00170483890796216,0.0012722227378448,0.000756972413489351,0.000233901547557838,-0.00022439127376865,-0.000605323187445011,-0.000906055157494685,-0.00122019037429303,-0.0015450014397189,-0.00194619129040051,-0.00276345442303476,-0.0045786985438664,-0.00847476134200306,-0.0198041535199311,-0.0470180713953753,-0.0920322194681249,-0.167400369018535,-0.416236945779352,-1.00269349122948,-1.28000004384318,-0.540519519302215,-0.23085946750226,-0.0970733748112093,-0.0414475288627196,-0.0182975679679845,-0.00848399018818492,-0.00416960004581714,-0.0021707985691506,-0.00118448297495642,-0.00066445001876443,-0.000371554822460357,-0.000193353591698378,-7.10640757843337e-05,3.14440615391539e-05,0.000143198084027542,0.000295366812110993,0.000530456063210453,0.000913655650769491,0.00154923684968758,0.0026065132486674,0.00436660483335269,0.00732314515402645,0.0124841598364579,0.0223936769550207,0.0442270848465268,0.110539149369105,0.277301966361287,1.93081517117535,-1.20403434105543,-1.24488622822758,-0.549920883541724,-0.233084070025958,-0.0979197231265831,-0.0418626449723409,-0.01847429035788,-0.00856692527695733,-0.00421040512229082,-0.00219200910989078,-0.0011960191083698,-0.000670897620193748,-0.000375149873899787,-0.000195220707213811,-7.17531668430416e-05,3.17382102329745e-05,0.000144559076429647,0.000298176831343733,0.000535499687087553,0.000922335679578409,0.00156394325197634,0.00263124390183718,0.00440789567150102,0.00739376590851638,0.0125983986549425,0.0226193526922541,0.0447936323510456,0.109940339698845,0.286457230562794,2.13014327618636,-0.240932349282762,-0.55900903062239,-0.31928879514054,-0.192484495047685,-0.104147035323692,-0.0519219424485035,-0.0269661198309855,-0.0136948463752146,-0.00704177320534416,-0.00369369785536104,-0.00195944637900333,-0.00105569673446354,-0.000570031851160175,-0.000296379941901788,-0.00012656235245255,3.54455587879468e-06,0.000142994911163963,0.000340238223709534,0.000663749276037425,0.00123222642281776,0.00225170148574946,0.00412826510408397,0.00763962072354376,0.0141813772288024,0.028209339470034,0.0541205469507763,0.120732746015854,0.267096773833212,0.689638449708601,-0.240932245779129,-0.105726101037949,-0.269320032280872,-0.2422632425805,-0.152171823438406,-0.0925266981511926,-0.0521994628897433,-0.0284839267402763,-0.0155320869263419,-0.00840399560075733,-0.00458736707877386,-0.00253435535426351,-0.00141372516198964,-0.000787012957316585,-0.000417283631605232,-0.000173470638056839,2.01214186907905e-05,0.000218201971779235,0.000479149540522272,0.000884351634739888,0.00157546920489627,0.002816509778016,0.00506976045192959,0.00939299624939333,0.0172903173384688,0.0330651385236824,0.0623951848088629,0.120019449619412,0.18840725818565,0.231256087839701,-0.105725992116743,-0.0446290006747468,-0.107452599205336,-0.114550429568251,-0.0911173976162181,-0.0610295346582772,-0.0387261358527972,-0.0233707251920051,-0.0137092364102828,-0.00797282610694687,-0.00460914007799154,-0.00267171504234373,-0.00155416628726966,-0.00089238869687566,-0.000479713178972427,-0.000194170681080668,3.95375011364132e-05,0.000276745249847461,0.000574344869742733,0.00101633150648578,0.00173724597386615,0.00300198896051143,0.00522365659999987,0.00934554825018236,0.0165321501488847,0.0305448500751932,0.0488614994126391,0.0942733470267418,0.0942448474219227,0.0834984362115512,-0.044628916441737,-0.0133497433380672,-0.0448872850240933,-0.0543785254283876,-0.0475127144337595,-0.0367911803508028,-0.0254653790143101,-0.0168204509605517,-0.0106959115123243,-0.00663664162080324,-0.00408696377807295,-0.00250375074337874,-0.0015317063985297,-0.000921069781598155,-0.000516188013843628,-0.000219352106603048,3.19711756827686e-05,0.00028691429162836,0.000595131876957672,0.00103036265604193,0.00170421160398849,0.00283106696010742,0.00468110571686899,0.00800463731333643,0.0125725082153401,0.0222164682754537,0.0283184630407589,0.0414537613082672,0.0402930911404081,0.0306130953985618,-0.0133496792537615,-0.00306518091532426,-0.0138602101824156,-0.0218483913645178,-0.0221037306240892,-0.0188318994149505,-0.0146960089880584,-0.0105708288597884,-0.00734772720368087,-0.00496130221767553,-0.00330603212860832,-0.00218762077423832,-0.00143481591471336,-0.000915565030913383,-0.000537885032731942,-0.000237044529821295,3.03115657785217e-05,0.000300104706624949,0.000609774889319996,0.00101490844842584,0.00158716899265834,0.00249268014128205,0.00376163057284499,0.00612644250549741,0.00850948293320506,0.0135815580536889,0.0169907171090238,0.0201232893171996,0.0160785243689152,0.0112181378503195,-0.00306513685935766,-0.000589566039606978,-0.0043296334157516,-0.00809486422499004,-0.0097581831270198,-0.00934521823754853,-0.00810160193302615,-0.00651606669305512,-0.0049995699505135,-0.00372445820825202,-0.00272309116521273,-0.00195654324941934,-0.00137737416693967,-0.000928033608069789,-0.000565565781664713,-0.000253625283815029,3.57260538087005e-05,0.000327351256144521,0.000645810422605256,0.00103066212752959,0.00150000041572628,0.00218806794154151,0.0029422426735131,0.0042255835233162,0.00526626870118378,0.00661150464005836,0.00702789394787667,0.00784185837339957,0.00607359537336662,0.00330103427130232,-0.000589544390191409,5.03527733840256e-05,-0.00237247773299929,-0.00428531399767516,-0.00567031928620042,-0.00597296930370656,-0.0056835733752817,-0.00498387843855009,-0.00416850131160059,-0.00334205071770595,-0.00260305389285987,-0.00196507294206987,-0.00143276404509249,-0.00098797739791028,-0.000609737920721676,-0.000274107591759522,4.14414073445488e-05,0.000361636537677022,0.000703650742217925,0.00110834781861361,0.00155942539513133,0.00216203058825815,0.00278547405499237,0.00360136711350725,0.00430757677517087,0.00507603715675453,0.00497589944643931,0.00455892509980052,0.00333058213528053,0.00153411857684502,5.03563735767621e-05,0.000549871428639388,-0.00320229203951418,-0.00455550599706131,-0.00562206533215455,-0.00588186789557116,-0.00569704055401421,-0.00512216632000062,-0.00437291731722107,-0.00356524577135738,-0.00279676047439911,-0.00211136621922844,-0.00152832982473724,-0.00104196779001466,-0.00063569573899373,-0.000283028782343608,4.34495843165462e-05,0.000379519195089665,0.000744440310483505,0.00118946794168141,0.00169178461586214,0.00232698055492613,0.00299018953712013,0.00375957462729985,0.0043579742598605,0.00495008028660855,0.0051019727385723,0.00491137355850606,0.00436567296019975,0.00345833847353549,0.00054985925500971,0.000583194500671895,-0.00211672132619938,-0.00294982600161157,-0.00403022135874676,-0.00437171159971766,-0.00438126240078105,-0.00404496744594755,-0.00354508809407059,-0.00294328042257469,-0.00234569598629672,-0.00178890420269098,-0.00130421492807948,-0.0008915731291176,-0.000544441491498449,-0.000242284986444589,3.59353551644647e-05,0.000324933636256007,0.000636992909604545,0.00101699236202491,0.00144376817422987,0.00196015284525874,0.00247898930963314,0.003071951710213,0.00351916460787749,0.00385395553636716,0.00399485330519587,0.00392716431300144,0.00348221293982306,0.00346520958458162,0.000583160781055351,0.000446803801967873,-0.00155143903821875,-0.00156204191903331,-0.00242905937975784,-0.0026756985477074,-0.00281839638621673,-0.00266912341996118,-0.00242382203667016,-0.00206732116542396,-0.00168504370123251,-0.00130178507719706,-0.000956168720723619,-0.000655353594897734,-0.000400144148102952,-0.000177291674418591,2.75286755035481e-05,0.00024059813698576,0.000471460769689192,0.000746234436034517,0.0010490425884311,0.00140177048233506,0.00173470796443556,0.00206280668301106,0.00232735175561395,0.00251960271630111,0.0025606758524664,0.00255952481232336,0.00202840104646436,0.00204437452483756,0.00044674971313894,0.000290463117275366,-0.00118787241157189,-0.00058247593423202,-0.00135796990713751,-0.00151544475872686,-0.00174861508142619,-0.00168802367265972,-0.00157420147923814,-0.00135827784221889,-0.00113421339460844,-0.000894362971395851,-0.000667878747824775,-0.00046291096025378,-0.000284652961789041,-0.000126816753441192,1.90781972835445e-05,0.000170244348364244,0.000332929820394085,0.000522338381025544,0.000725406393369811,0.000949158183340259,0.00116223407429305,0.00134815079676927,0.00146297093849119,0.00153398051652851,0.00145974860255049,0.00140255909811038,0.000960521473361678,0.00129833520444894,0.000290391959779692,0.000170379526609431,-0.0013867992337133,-0.000198958841412992,-0.00097198919528513,-0.000844624092707228,-0.00104979550268346,-0.00101374165961095,-0.00102809871002461,-0.00091417038130172,-0.000775658525459252,-0.000620670120561575,-0.000469568270398084,-0.000329523405883229,-0.000202736137493497,-8.53560292609873e-05,2.67298549646744e-05,0.000144009805634944,0.000269415313869108,0.000409127168919085,0.000554208952912925,0.000698991064502536,0.000825749385998529,0.000936225318256649,0.000996491059621973,0.00103621822882006,0.000951434289959451,0.000882457085288985,0.00047783770334515,0.00108191496107262,0.000170292502774718,9.25716134250843e-05,-0.00239150166518749,-0.000443060457954201,-0.00143730993521141,-0.00108935394524771,-0.00121971929974324,-0.000967705211271057,-0.000889057206186136,-0.000813850296636375,-0.000716886608758278,-0.000593771997890186,-0.00045538149919711,-0.000315760519826485,-0.000185693364380794,-6.19328067190581e-05,5.62022475297443e-05,0.000174550075522086,0.000296771034770115,0.000426743301006761,0.000560681584079508,0.000694843195453498,0.000809540306287578,0.000903728185791949,0.000948452815497201,0.000980440837556569,0.000927736603808314,0.000887753488557172,0.000513669485597942,0.000995871854861965,9.24681650615115e-05,4.89272182632308e-05,-0.00513703677249011,-0.00140577844296887,-0.00187880748434815,-0.000724064435078476,-0.00095874422136082,-0.00104023205132136,-0.000980315820179381,-0.000879396115727191,-0.000755386491770698,-0.0006185690705285,-0.000481248881060419,-0.000327927161120791,-0.000175574815210833,-2.20196269442022e-05,0.000138147426114062,0.00030669870922021,0.000484136784356426,0.00066752408499694,0.000847970926944962,0.00102054775942904,0.00117233587428174,0.0012979732283661,0.00137394979066997,0.00141502112099163,0.00140640510513342,0.00150803027886566,0.00137175565730121,0.00229372807859004,4.88053232279216e-05,2.95636290748667e-05,-0.0108121207338222,-0.00416640995367509,-0.00441264434765935,-0.00276393646597776,-0.00195194633969136,-0.00194889415603747,-0.00199430059357044,-0.00184947035468103,-0.00158027026078975,-0.00118803205417466,-0.000823763335504474,-0.000488848043717504,-0.000176131771506631,0.000109822572722326,0.000391213595946358,0.000680552910154678,0.000988192879392942,0.00131986832766296,0.00166965711902027,0.00201873540535915,0.00232972225497373,0.0025656558265115,0.00265832547284951,0.00263883861880342,0.00247107367767868,0.0024625285131,0.00260166976486655,0.00350015807428426,2.94918658246914e-05,3.14914124548019e-05,-0.0151392201754133,-0.0020759095838052,-0.000251150622764821,-0.00227360358071987,-0.00391842100757678,-0.00441503487079455,-0.00448931449664845,-0.00393031453184989,-0.00331318745295085,-0.00252685907115063,-0.00168012333063986,-0.000926417262739427,-0.000219300837919503,0.000451828227677869,0.00112884178354308,0.00184819209606674,0.00262279123565261,0.00345787750561313,0.00435707532136782,0.00531574964334144,0.00625450195557811,0.00702049941487184,0.00736282950914224,0.00701509985997964,0.00613050519191143,0.00495206487406265,0.00478065561164532,0.00908567986443546,3.13228122308796e-05,6.57117282963835e-05,-0.00557756695033177,-0.00112781826846209,-0.00669766981124573,-0.0105762264749083,-0.0157957905867541,-0.017136444779716,-0.0168272264555974,-0.0143092892623273,-0.0109532946334084,-0.00786633896121642,-0.00494818670684239,-0.00242125156502486,-0.000239255765608861,0.00170717989381769,0.00352491714642715,0.00537115576823401,0.00741567877054756,0.00979287752112194,0.0125505462777747,0.0156231352807494,0.0187809304145973,0.0215153372413016,0.0230992387749389,0.0225079092876147,0.0186116486254197,0.0124938616055664,0.00434983732642639,0.00714306502583348,6.55169983354795e-05,0.000159222660267502,0.0318351649372756,0.0249546344784683,-0.018817686861542,-0.0376145449495653,-0.0496505129378246,-0.0509022643370278,-0.0467735867901201,-0.0406799106813676,-0.0319176975846583,-0.0232280701121778,-0.0152695677957087,-0.00814744943192798,-0.00184324219970632,0.00394129000038756,0.00946420747382169,0.0150211931926279,0.0209806669673422,0.0278013724294807,0.035879492084128,0.045148216052189,0.0549673837429249,0.0641920744533689,0.070767627024716,0.0721167193384673,0.0644430270248609,0.0441982045068546,0.0140352787035658,0.0104986185597479,0.000159008955143982,0.000314888571544136,-0.0800512899943881,-0.072744271016118,-0.106031734117525,-0.125737417357683,-0.134867673915171,-0.133250830835743,-0.112624180672522,-0.0899488861236505,-0.0679415422135159,-0.0478322483764363,-0.0307212246861508,-0.0158937164584692,-0.0026739341221941,0.00963074379657581,0.0215259053846529,0.0334461196581601,0.0463160289948657,0.0611811195140895,0.0783961486842113,0.0979264063811219,0.119399763330834,0.141464836592547,0.161056720345875,0.171924888441473,0.166063713014237,0.131126014223623,0.0429711814095726,-0.0356253591536236,0.000314678916392143,0.000400468625756715,-0.102707148873519,-0.14217530979903,-0.159882968065637,-0.204025875889914,-0.191692351609751,-0.170464446619565,-0.140687677046706,-0.107123266208406,-0.0777285370968646,-0.0525514989602398,-0.0315949099265285,-0.0136971256994785,0.00263345076522865,0.0184373462066589,0.0341116043881155,0.0499999736245034,0.0669220155570804,0.0855328917651736,0.106729707516352,0.131689714384681,0.160972041203267,0.193856538072699,0.22785727791856,0.257215001462552,0.270641305306183,0.258106576225429,0.181610901980662,0.0317299138254976,0.000400302848114168,0.000210471646289144,-0.0592182400404346,-0.120878245109035,-0.119023806487713,-0.110820454150857,-0.0962442987822205,-0.075579409383512,-0.0553819072190723,-0.0366609626757541,-0.0209455086808682,-0.00801533795528719,0.00272887047778013,0.0118837189244455,0.0201007742741013,0.0278789183613243,0.0355998923141002,0.0435722221721255,0.052099640774063,0.0615444439557419,0.07256757465183,0.0859512322361446,0.102289582182051,0.121943890686362,0.144305622270483,0.167920316258666,0.190929632258936,0.206567212857145,0.215654488840616,0.209105440297747,0.000210431374101517,-0.000265283507959263,0.144969515200934,0.128524503756284,0.118743320197092,0.108417030010952,0.0966747951006974,0.0862308554357606,0.0761924647612245,0.0676206609793551,0.0602772913819528,0.0539966924394964,0.0485930145775836,0.0438458259045191,0.0396024254386203,0.0357167826635866,0.032050743307905,0.0284766941197536,0.0248631425475728,0.021079403657961,0.017023066446067,0.0125573545873883,0.00749756596032815,0.00171428511713405,-0.00488006681312583,-0.0122794491115372,-0.0190956980581547,-0.0253853155506297,-0.0346700350312062,-0.00154675054965549,-0.000265256631893542,2.20386680588444e-05,0.311462223528763,0.36062989293617,0.320078618280876,0.282502954687805,0.249663515463795,0.2159629380403,0.184368221437447,0.15492322071986,0.128857086238218,0.106146192768132,0.0864482012555368,0.0692436565112294,0.0538393646400661,0.0395417705204163,0.0257148277988099,0.0118086835344193,-0.00285636241737781,-0.0189516438564979,-0.0371024159973798,-0.0578780627578384,-0.0815951504435711,-0.108451171901169,-0.136975086789899,-0.166483921583966,-0.197706216749387,-0.204747565535756,-0.257756531920739,-0.120535711805965,2.2165708706915e-05,0.00229579433744998,-0.0507659418582002,0.135116001590279,0.238127454236749,0.257029208538339,0.247861664651729,0.221275444752231,0.191606443576401,0.160880312273501,0.132160521888598,0.10631847792899,0.0836693451507798,0.0641043684748029,0.047079385615269,0.0316600523777731,0.0168437136773664,0.00173637221627292,-0.0147407615751538,-0.0333963925109637,-0.0546133767423153,-0.0787351512025199,-0.105598864869477,-0.135289443056998,-0.167931184955345,-0.195320758796255,-0.236672992480548,-0.245753166361533,-0.247384746999044,-0.220017021682552,0.00229598730964227,0.00152506122282771,0.0700782009185771,0.0835829160148063,0.124634576702763,0.132843146480323,0.136049533464213,0.123118485804352,0.108468326288393,0.0917575735079776,0.075321520844967,0.060119761118685,0.0466279997089281,0.0349771444288581,0.0249087911707608,0.0159088876010609,0.00732698563738,-0.00157381869280899,-0.0114902018335514,-0.0229005985733905,-0.0359943742711833,-0.0509432970504298,-0.067901587217165,-0.0855780985755106,-0.107064279394403,-0.12216539986584,-0.134365432094939,-0.130273401141081,-0.0681822032423624,-0.0239823635337242,0.00152527634634333,-0.0205531321778279,0.0645788627545208,0.0577501468775484,0.0857681753154928,0.0638444977008863,0.059665719855164,0.0507249021106589,0.0432465903401375,0.0363067842416111,0.029664272990868,0.0236422718926873,0.0183735150921925,0.013906852656516,0.0101328621877167,0.00680324876596254,0.00359767566545832,0.000186405925690477,-0.00369171249149739,-0.00820991209590715,-0.0134806367238721,-0.0194625488857188,-0.0269244828679418,-0.0348554008695688,-0.0452421334757551,-0.057411005164685,-0.0653733550233523,-0.076879688734273,-0.067613814317356,-0.0480244047280446,-0.0205529276151738,-0.0965109367971763,0.182912242458843,0.0897967932667555,0.0550681076319929,0.0272119589119748,0.0180316405196537,0.0148218187154162,0.0129421821959583,0.0114951026576624,0.00995602899855103,0.00831483067347139,0.00669857525914767,0.00517259287096378,0.0037617696938179,0.0024240205762476,0.00107492901493899,-0.000357656452788349,-0.00191028024906879,-0.00359446248846579,-0.00555602169327167,-0.0077122553789433,-0.010565703858471,-0.0142768195092848,-0.0191362100921778,-0.0278801894537953,-0.0428364259078048,-0.0651946743361297,-0.116342675636967,-0.17823736953606,-0.0965107591379153,-0.407511607805135,0.223848992951438,0.137935289190505,0.053718883774724,0.017579226581988,0.00510336028159439,0.00183582974383525,0.00161429543234579,0.00190757142652502,0.00215027715391843,0.00218178321737465,0.00202802517302702,0.00172190633190054,0.00128494504562684,0.000763342312931265,0.000234761542873296,-0.00022694572173668,-0.000608899213392528,-0.00090848975957471,-0.00122371813929589,-0.001549157120144,-0.001954837747534,-0.00278421929625192,-0.00460890214513263,-0.00857837879461687,-0.0200773020125743,-0.0474686655373432,-0.0926260546263667,-0.173960654451726,-0.407511462173513,-1.20403439174241,-1.2448862308971,-0.549920884752153,-0.233084070465591,-0.0979197229566592,-0.041862644769085,-0.0184742902144251,-0.0085669251912951,-0.00421040507503649,-0.00219200908473095,-0.00119601910180139,-0.000670897613413772,-0.000375149870462426,-0.000195220705587632,-7.17531663118166e-05,3.17382099024319e-05,0.00014455907510784,0.000298176828499846,0.000535499681593372,0.000922335669302044,0.00156394324253552,0.00263124386784851,0.00440789561252128,0.00739376581277351,0.0125983985219822,0.0226193525972226,0.0447936325171984,0.109940342079739,0.28645723342542,2.13014333663476,-1.35172444798625,-1.2138945187257,-0.557425209581582,-0.234846689800793,-0.0986336398983294,-0.0421903341891192,-0.0186185410585806,-0.00863420088894525,-0.00424347814600239,-0.00220922522577605,-0.00120537252158267,-0.000676122572615556,-0.000378061958764757,-0.000196732359554242,-7.23113244878732e-05,3.19753360304043e-05,0.000145658329500218,0.000300446571810256,0.00053957217287224,0.000929342271107908,0.00157580687820426,0.00265118880759235,0.00444120946019471,0.00745044493123047,0.012691225596521,0.0228033942487523,0.0452459330296895,0.109123357264499,0.298952588336741,2.25091597730213,-0.222501411212385,-0.57491460242673,-0.321022190420612,-0.194719323552707,-0.105140549627893,-0.0524333802591225,-0.0272052739055483,-0.0138160664640171,-0.00710233517906283,-0.00372439787459075,-0.00197563449408687,-0.00106452100516241,-0.000574454899030801,-0.00029887830425879,-0.000128184455388104,3.56945119831684e-06,0.00014376508553352,0.000341957857855927,0.000669131613887831,0.0012418712525026,0.0022690839292402,0.00416318051082184,0.00770383880594092,0.0143073273183186,0.0284626761740647,0.0545297982926524,0.122229488122945,0.271428873602593,0.682853672711863,-0.222501295045136,-0.107281154777584,-0.272240051318842,-0.245265378794344,-0.153605909264531,-0.0933879383725464,-0.0526603505175877,-0.0287277725422035,-0.0156623941614067,-0.008475056738682,-0.00462703065064449,-0.00255673985319425,-0.0014268461811335,-0.000794933574724404,-0.000421224675282458,-0.000175117059215807,2.01885081312356e-05,0.00022117758128577,0.000484295338616365,0.000892404493855851,0.00159037252664903,0.00284085188138323,0.00511082680729155,0.00947106020660201,0.017420078945179,0.0333703009125738,0.0629900781078165,0.120283038186056,0.192872523783006,0.232851363118401,-0.107281041112766,-0.0447944180242138,-0.108586730625463,-0.115522774119697,-0.091900940573719,-0.0615221797489512,-0.0390324905100363,-0.0235522493898152,-0.0138155998105856,-0.00803414277243111,-0.00464465930009359,-0.00269241238978792,-0.00156594020112617,-0.000899143667137301,-0.000483455175891028,-0.000195093809724452,4.02973215165741e-05,0.000278992315085467,0.000579654364020991,0.0010246853199753,0.00175040504423089,0.00302581686861334,0.00526161368138017,0.00941953143226409,0.0166515795049001,0.0307594317794914,0.049475808115949,0.0951056598773205,0.0942149996623025,0.08594541076553,-0.0447943287078714,-0.0133951548907774,-0.0451260898833913,-0.0547874917046123,-0.0478236773149779,-0.037045135460001,-0.0256362434754356,-0.0169330493985321,-0.0107664427518341,-0.00667954576252911,-0.00411259414812712,-0.00251913005783405,-0.00154103088958305,-0.000926341321054824,-0.000519180009929987,-0.000220921454821005,3.22109640909235e-05,0.000288387285009537,0.000598068719376569,0.0010366135189274,0.0017141460491371,0.00284880322578316,0.00470983349533263,0.00805660058443804,0.0126625918484578,0.0223446925195852,0.028409874191833,0.0419678909239863,0.0401743955084596,0.0309399501144343,-0.0133950853196786,-0.00306334774939011,-0.0138938194959535,-0.0219292377772836,-0.0221983982622665,-0.0189113240500712,-0.0147630421298759,-0.0106205164696119,-0.00738275625245334,-0.00498506220928579,-0.00332172423699226,-0.00219760808000589,-0.00144111156705205,-0.000919517232749548,-0.000539913269948323,-0.0002379425838117,3.02204500136776e-05,0.000301356093439711,0.000612102885772064,0.00101899235824452,0.00159425662936224,0.00250401374449608,0.00378051182214974,0.00615464377605692,0.00854817637025168,0.0136803490957936,0.0170363133420566,0.0202709338908482,0.0161158742043462,0.0113385803687161,-0.003063297143851,-0.000593586253868515,-0.00432592362962971,-0.00807883707773527,-0.00976623455340538,-0.00935634998234407,-0.00811572243111415,-0.00653006082547647,-0.00501242269328502,-0.00373505149638165,-0.00273133473897525,-0.00196287116530662,-0.00138180847075158,-0.000931089441030036,-0.000567510032207903,-0.000254362917374171,3.58198113589102e-05,0.000328304061088358,0.000648029568774593,0.00103382520346329,0.00150527380128092,0.00219388275935876,0.00295176194064564,0.00423733676243576,0.00526935683233468,0.00661506887199881,0.00702313140534283,0.00782596011125902,0.0060676195387863,0.00325610444198689,-0.00059355870195177,4.09614901377543e-05,-0.0024145317905616,-0.00427274000722862,-0.00568624370917192,-0.0059849288451389,-0.00569755853654699,-0.00499727034537409,-0.00417989119063187,-0.00335236637371725,-0.00261137806601024,-0.0019718434504264,-0.00143799696945418,-0.000991654660476985,-0.000612129587501323,-0.000275236254071793,4.1738360114173e-05,0.000363052367562812,0.000706722906541921,0.00111218945306018,0.00156607261426789,0.00216888019620972,0.00279474393996509,0.00361377734413184,0.00432617581523084,0.00508396535426592,0.00499118060646918,0.00456795799106483,0.00334676856670617,0.00150365794460492,4.09667605378155e-05,0.00055561664544342,-0.00329820458084924,-0.00457981827690938,-0.00566614167171555,-0.00592064702192816,-0.00573397005409921,-0.00515343919948162,-0.00439860266299692,-0.00358524013756462,-0.00281204782497898,-0.00212241469361177,-0.00153613416047346,-0.00104715696630313,-0.000638696993861916,-0.000284440402985936,4.37778349096387e-05,0.000381255237280603,0.000748424713757627,0.00119526251940728,0.00170094309045584,0.00233992894592239,0.00300763249587777,0.00377904641785558,0.00438852716524905,0.0049895582435397,0.00513449106939425,0.00494680876078282,0.00439841719056213,0.00345113756102125,0.000555600668884278,0.000586478561727365,-0.00207994457398382,-0.00296771928701726,-0.00405122084991867,-0.00439068686279158,-0.0044021494085979,-0.00406315284507526,-0.00356101450023962,-0.00295648509696951,-0.00235642705963321,-0.00179739565922737,-0.00131061893692006,-0.000896276324845252,-0.000547381104519315,-0.000243612259164035,3.61419489412336e-05,0.0003267037128773,0.000640306951669045,0.00102182801271026,0.00145038561840184,0.00196822214401314,0.00249003923901561,0.00308412545103003,0.00352958735471574,0.00387002488464502,0.0040124106110154,0.00394745321194301,0.00351172571338971,0.00348310436097222,0.000586438619567611,0.000448119216488347,-0.00156022558074928,-0.00156402775235711,-0.00244835887685505,-0.00268954256942703,-0.002835541098255,-0.00268314057254952,-0.00243700324162198,-0.00207838408066512,-0.00169426656982449,-0.00130899977094925,-0.000961533939933387,-0.00065905800360055,-0.000402534001338762,-0.00017824570242725,2.77981997383036e-05,0.000242111585094655,0.000474496365599723,0.000750586271519712,0.00105516569288601,0.00140986408762035,0.00174420036114227,0.00207600318224418,0.0023420886182521,0.00253517656994442,0.00257582705973393,0.00257533105958332,0.00202832091850427,0.0020578011577727,0.000448059733186959,0.000291879283734253,-0.00117117500788543,-0.000573787899959033,-0.00137359680053161,-0.00152126149089031,-0.00176301031725523,-0.00169885989319241,-0.00158496938455952,-0.0013668292680502,-0.00114165088464997,-0.000900344871514886,-0.000672559855247939,-0.000466131967104422,-0.000286634432578285,-0.00012775359719234,1.92878285648681e-05,0.000171286289269146,0.000335046216346451,0.000525864519307921,0.000729768017156245,0.000955286689443041,0.00116943981660894,0.00135587870248365,0.00147188426969903,0.00154399373015947,0.00146692595116318,0.00141715614552516,0.00095132715743051,0.00129369332971333,0.000291803672162792,0.000171278259384327,-0.00137926796753924,-0.000177827092776862,-0.0009887747910433,-0.000841763888363986,-0.00105822997951489,-0.00101904343334235,-0.00103651277845921,-0.000921331904351567,-0.000781479583959442,-0.000624982286565362,-0.000472678379136709,-0.000331732284108605,-0.000204018942031633,-8.59426670918081e-05,2.69397815529469e-05,0.000145302338062454,0.000271399475589351,0.000412493474473021,0.000558903874542454,0.000704444322974564,0.000832593514904944,0.000943967951619111,0.00100383457303714,0.00104499182381302,0.000954887127823188,0.000894037103349859,0.000468816453677927,0.00105745690228543,0.000171187377409385,9.31754009327558e-05,-0.00239370928978647,-0.000411738625256121,-0.00147176510835128,-0.00109539727826417,-0.00123822325130223,-0.000976618325820769,-0.000896570765915296,-0.000821392729087325,-0.000724365128604513,-0.000600269351980761,-0.000460364140984903,-0.000319076721247427,-0.000187631797250837,-6.25045600327645e-05,5.64583448227401e-05,0.000175894173823622,0.000299259315920977,0.000429948747916966,0.000565419923732886,0.000701059244731732,0.000816417229727245,0.000912015268477182,0.00095666837545549,0.000990140093342974,0.000932743704962654,0.000898270449768674,0.000510454611509374,0.000944599866444761,9.30684858147583e-05,4.9276263015045e-05,-0.00517308527713973,-0.00136289722148829,-0.00190470919738725,-0.000715777026742186,-0.000961004770878203,-0.00105002011240756,-0.000989611721826639,-0.000885031173650991,-0.000759913380673233,-0.000622014169855249,-0.00048467118566724,-0.000330541717293969,-0.000177280052336745,-2.24203477195894e-05,0.00013948071454895,0.000309440928095886,0.000488890567098432,0.000674102839072612,0.000855499400015423,0.00102967244735736,0.00118270374114622,0.00130923818879515,0.00138596935229525,0.00142877495399411,0.0014162386754635,0.00152384411459195,0.00138178545132506,0.00222688569267659,4.91511754606019e-05,2.9795619816039e-05,-0.0109181299677794,-0.00421051397826825,-0.00444524786053604,-0.00281960707352212,-0.00196820983628703,-0.00195543348403623,-0.00201212906808209,-0.0018665983617059,-0.0015967102439682,-0.00119974559825004,-0.00083136369971806,-0.00049340348759728,-0.000177458017691604,0.000110694590218034,0.000394456782085357,0.000686005618566493,0.000995264445970074,0.00132947123044038,0.00168173543418593,0.00203264374744663,0.00234578300239468,0.00258345443356474,0.0026754381492598,0.00265794452108183,0.00248462912284358,0.0024773158198097,0.00263197849047185,0.00343343001377018,2.97223749116701e-05,3.17462774176745e-05,-0.0151153282272824,-0.0022800229714563,-4.75085818271804e-05,-0.00222476154201132,-0.00395357636330891,-0.00442866157884015,-0.00450391191674236,-0.0039404387879341,-0.00332271566990919,-0.0025370061559618,-0.00168724381305488,-0.000931831827750457,-0.00022156015027148,0.000454347846909416,0.0011372185603085,0.00186407383435273,0.00264556304727388,0.00348552080154153,0.00438966243425801,0.00535345062883812,0.0062970159353516,0.0070678506255015,0.00741129773439204,0.00705613957218943,0.00616166829117594,0.00496168129686626,0.00482078717353185,0.00912377365085303,3.15749945892257e-05,6.62160969166704e-05,-0.00469163158260476,-0.00175810564054678,-0.00682972115904591,-0.0105355612707628,-0.0158714084468745,-0.01727350989847,-0.016965479374025,-0.014425846174637,-0.0110322256169227,-0.00791548012969627,-0.0049721646968941,-0.00242506996057008,-0.000229347286410291,0.00172698381680267,0.00355200189361775,0.00540593133476413,0.00746445927823237,0.00986016809325178,0.0126372474463648,0.015731876559631,0.0189126255387516,0.0216651975302374,0.0232566600233314,0.0226554836065635,0.0187023119874039,0.0125206582398611,0.00424720365368446,0.0074411211858936,6.60191809842871e-05,0.000160194218801348,0.0349447159926992,0.02581049325909,-0.0189565015692143,-0.0380176663901188,-0.0499307872051042,-0.0511817459612183,-0.0470660655144525,-0.0409401760398391,-0.032139683761891,-0.0233871852131811,-0.0153679021333327,-0.00819126585222263,-0.00183617857196732,0.00399004529045086,0.00955209819592416,0.01514205493277,0.0211283198216886,0.0279925040031086,0.0361415283162408,0.0454943328885836,0.0554001285923212,0.0646997284143429,0.0713135928603602,0.0726408586166335,0.0648980987705829,0.0443377585880542,0.0140599827850953,0.00971340329518675,0.000159979208280433,0.000315837140611775,-0.0806619126035211,-0.072807142237641,-0.105954323128335,-0.1262787400019,-0.135939857839053,-0.134193362160001,-0.113530387930601,-0.090648863662871,-0.0684731868979053,-0.048239194503768,-0.0309980792954235,-0.0160756617970623,-0.00276442707302168,0.00962733014811202,0.0215954896086322,0.0335999615943253,0.0465755750729932,0.0615406883088186,0.0788642355118276,0.0985211324697951,0.120122430354997,0.142323770083197,0.162055983664544,0.173026476215707,0.167088767725382,0.132454114232751,0.042273215178366,-0.0361167960877678,0.000315627274905694,0.000400617765938424,-0.107662867814061,-0.144388217275176,-0.162058698808846,-0.204942443462535,-0.192513515913377,-0.170922076596093,-0.141058160301717,-0.107499607258472,-0.0780098596000163,-0.0528067484470432,-0.0317967671269366,-0.0138416978710796,0.00253621377323728,0.0183928707691676,0.0341346627838699,0.0500772771973528,0.0670587575396321,0.0857370691784352,0.106969955559701,0.131977917565762,0.161324409987597,0.194281358563476,0.228326132347244,0.257802775389362,0.271395301273745,0.258060960162976,0.185054754674937,0.0330081923845419,0.000400452393842576,0.000210464589958659,-0.058065530000619,-0.12181379063018,-0.119256598520788,-0.110741087455991,-0.0961567109087984,-0.0755398538231411,-0.0553977603938756,-0.0367087279920393,-0.0209827960464851,-0.00804886079147018,0.00270340934759086,0.0118663401005912,0.0200926982241401,0.0278819958709188,0.035610231493896,0.0435863338389081,0.0521207927926742,0.0615774710193343,0.0726116339325207,0.086004255754545,0.10234889107657,0.121998431464334,0.144340360024735,0.167916756423501,0.190798337851237,0.206604665436372,0.215953770429834,0.209637823237524,0.00021042446641391,-0.000265360889192503,0.143664082733272,0.127775586047091,0.118538920732584,0.108505828532907,0.0966817775297392,0.0862010685794101,0.0761718186164408,0.067589878701114,0.0602487099195386,0.053971662353827,0.048574038166885,0.0438325355640133,0.0395927894515878,0.0357094658022984,0.0320450397847221,0.0284709243505123,0.0248588928920209,0.0210794152448287,0.0170258599120123,0.0125615135590525,0.00750043561620701,0.00171471401072895,-0.00487177090090307,-0.0122987361376122,-0.0190868509323152,-0.025371472516714,-0.033823308147668,0.00104751269797329,-0.000265334098789942,2.23682617896714e-05,0.31362363066846,0.361298012975853,0.320665231036483,0.282830855494546,0.249855891874477,0.216161098990746,0.184517418416556,0.155052040273341,0.128971984926869,0.106244912183054,0.0865355082521635,0.0693127376120491,0.0538843469513596,0.0395582824724574,0.0256996977617064,0.0117605627177828,-0.002927769858746,-0.0190404439827957,-0.0372069240275202,-0.0579967479509481,-0.0817440852528789,-0.108635377438937,-0.137131612692055,-0.166849060128415,-0.197802202361508,-0.204971470478499,-0.258065882657988,-0.123512394285832,2.24948708490844e-05,0.00228810392787888,-0.0485236318341634,0.135733072016252,0.238953683597303,0.258100233625463,0.24895481570912,0.222172961661427,0.192373682500947,0.161507873447088,0.132678287016246,0.106734979514282,0.0839929234975936,0.0643377237351767,0.047223325361817,0.031718277262278,0.0168215820700466,0.00163309767600562,-0.0149233949727972,-0.0336592586782349,-0.0549729248757127,-0.079204936690583,-0.106186439239171,-0.136067882481774,-0.168742655735687,-0.196332340874346,-0.237787452649193,-0.247004262274088,-0.249854152890902,-0.223887373630726,0.00228829670947127,0.0015690848951593,0.068462450355518,0.0836154349774704,0.126023247219065,0.133592064433764,0.13697553152698,0.12405988692878,0.109263723172471,0.0924327653248276,0.0758650613258952,0.0605396970356706,0.0469407449007976,0.0352007315162818,0.0250620005309838,0.0160021410704395,0.00736315301028295,-0.00159683185526394,-0.0115866619626277,-0.0230885997116757,-0.0362869711181379,-0.0513583783681634,-0.0684289881033014,-0.0862527782989237,-0.107905853516747,-0.123110102398675,-0.135545986005795,-0.130810459300203,-0.0677849464211666,-0.0212833664804417,0.00156930081935391,-0.0203936044122089,0.0678551821231129,0.0578346111559686,0.0867744904701986,0.0647749551517341,0.0600317410504622,0.0511449442024592,0.0436020032635686,0.0366011420619275,0.0299049209524764,0.023829378170088,0.0185166897783517,0.0140158693660965,0.0102161221135022,0.00686810770044681,0.00364476635259263,0.000210330490372515,-0.00369693163071891,-0.00825115438549288,-0.0135621891857347,-0.0195883856903054,-0.0271099444230106,-0.0350832050710095,-0.045582668448474,-0.0577955637929175,-0.0659877725584458,-0.0777173573744453,-0.0687240422626852,-0.046848335824919,-0.020393398016521,-0.0993780835081554,0.180114326970324,0.0880665073831514,0.0552390185368302,0.027305989677006,0.0181671220323505,0.014900004817233,0.0130404098232912,0.0115877553538707,0.0100454543189611,0.00839575576875323,0.00676777544114328,0.00522909765018742,0.00380405780347977,0.00244941049488234,0.00108183836765494,-0.000370351450731239,-0.00194206984963894,-0.00364242427656122,-0.00562187221936514,-0.00779220227456851,-0.0106759466622743,-0.0144110175527701,-0.0193157873299382,-0.0281636424593992,-0.0430819933796172,-0.0659689397460239,-0.117907886647841,-0.180500109651132,-0.0993779033969895,-0.398209311701738,0.258157481781323,0.134103731852399,0.0560885651569966,0.0177600774687412,0.00522047087001044,0.00185425079627185,0.00162079613086175,0.00191232177926796,0.00215755802897176,0.00219262588149905,0.00204091503071316,0.00173418540533061,0.00129425835728448,0.000767830515272976,0.000234632244249924,-0.000228361176721781,-0.000609179965744704,-0.000906149487522631,-0.00122133297517152,-0.00154590314040792,-0.00195522867877001,-0.00279796185151962,-0.00462627960884498,-0.00867271559972985,-0.0203196731584176,-0.0479693117517738,-0.092444088877107,-0.184114106551029,-0.398209162217485,-1.35172449589656,-1.21389452171862,-0.557425210658421,-0.234846690282536,-0.0986336397177461,-0.0421903339770192,-0.0186185409089415,-0.00863420079990588,-0.00424347809700842,-0.00220922519977918,-0.00120537251481903,-0.000676122565658306,-0.000378061955249116,-0.000196732357895422,-7.23113239463878e-05,3.19753356954471e-05,0.000145658328158105,0.000300446568920025,0.000539572167282094,0.000929342260637881,0.00157580686857078,0.00265118877285241,0.00444120939976092,0.00745044483288221,0.0126912254593058,0.0228033941436873,0.0452459332241467,0.109123359459548,0.298952592657717,2.25091603764303,-1.45580877434465,-1.18893464595418,-0.563085638707015,-0.236176209587838,-0.0992051904337344,-0.0424373482592116,-0.0187304058036119,-0.00868609194418107,-0.00426897666378616,-0.0022225096729457,-0.0012125859814763,-0.00068015108027999,-0.000380306840983538,-0.000197897365151646,-7.27416235399914e-05,3.21575320280381e-05,0.000146504043492062,0.000302192883046132,0.000542704014661571,0.000934728314768311,0.00158492000056762,0.00266650277927404,0.00446679128707999,0.00749371109871311,0.0127633021100995,0.0229443939992885,0.045586766000344,0.10836883298162,0.311339370763066,2.32515317683203,-0.206811320863731,-0.591154088060357,-0.322495996048515,-0.196903199508866,-0.106030809931904,-0.0528786967393142,-0.0274153267935542,-0.0139185541095594,-0.00715296155300699,-0.00375020556776421,-0.00198896638208678,-0.00107138018171321,-0.000578526772969776,-0.000301057601011078,-0.000129030659579629,2.75039195896882e-06,0.000144069713946434,0.000344064335838387,0.000672367114118804,0.00124940862759058,0.00228470236917251,0.00419075997847375,0.00775771189299434,0.014415945822921,0.0286744678292877,0.0549149480502262,0.123464955855956,0.274932534640973,0.686095823866801,-0.2068111944781,-0.108418126087564,-0.275608178513943,-0.248417178957132,-0.154877765161138,-0.0942100754186517,-0.0530750974599616,-0.0289422984205784,-0.0157779384921376,-0.00853723480650474,-0.00466177914305832,-0.00257706309362163,-0.00143876010989262,-0.0008017303972035,-0.000425393720959471,-0.000176683846489681,2.10732304085594e-05,0.000223284122779629,0.000489054945643165,0.000900923178182771,0.00160269462047875,0.00286240423457754,0.00514783508732746,0.00953802645889759,0.0175330698425905,0.0336357728045457,0.0635106577150473,0.1209034595034,0.19529607283686,0.235064940185647,-0.108418008473186,-0.0449016130454865,-0.109659030316778,-0.116440214909,-0.092692368643453,-0.0619615898922645,-0.0393171570797212,-0.0237152037980163,-0.0139098894338398,-0.00808868725601548,-0.00467589732028169,-0.0027102595952871,-0.00157655211276756,-0.000905090658662902,-0.000486233767576342,-0.000196284693495817,4.10187937333131e-05,0.00028178240074456,0.000583786802490777,0.00103213863304746,0.00176288580458385,0.00304587700763657,0.00529448443895364,0.00948595152959226,0.0167513794953978,0.030988678373428,0.0498956108182105,0.0963703235480685,0.0941115351438497,0.0885202807727848,-0.0449015197432793,-0.0134394499988259,-0.0454107446596016,-0.0551899180073956,-0.0481049792105434,-0.0372935261947996,-0.0257893494378822,-0.0170364636718068,-0.0108296006259999,-0.00671715926431641,-0.00413507109194072,-0.00253236224509371,-0.00154868092160657,-0.000931030228819702,-0.000521749641939744,-0.000221874269141692,3.1980116513349e-05,0.000289528499791344,0.000600980092856683,0.00104130635946515,0.00172255117294579,0.00286485556865708,0.00473291600364097,0.00810886974771278,0.0127230940383206,0.0225191216943176,0.0283984242428402,0.0424438391068112,0.0399866990840876,0.0313582735184654,-0.0134393761228552,-0.00306136288034847,-0.0139014037792063,-0.0220136122808291,-0.0222921292853901,-0.0189829051271928,-0.0148281589000681,-0.0106648424124045,-0.00741452455845388,-0.00500600675511262,-0.0033351088012748,-0.00220613940370375,-0.0014463327938198,-0.000922460980731598,-0.000541678991850196,-0.000238681224541587,3.04100313897203e-05,0.000302021999117451,0.000613881931366471,0.00102256419577003,0.00159954107539777,0.00251480107766971,0.00379383349687324,0.00618867635064906,0.00856875486731664,0.0137887571183794,0.0170922226244884,0.0204477222231097,0.0161073700030533,0.011506158382532,-0.0030613068551875,-0.000596215078473072,-0.00433463667167957,-0.00804978101373822,-0.00977142385257941,-0.00936074113046032,-0.0081239557115099,-0.00653992305686721,-0.00502138641026799,-0.00374283311131726,-0.00273738787863933,-0.00196731841700905,-0.00138504271321917,-0.000933221175069769,-0.000568681689962778,-0.000254987023700873,3.58528025935245e-05,0.000329033514580275,0.000649272125825461,0.00103617936708601,0.00150839523852908,0.00219925762071432,0.00295592571389816,0.00424839043177117,0.00526814094646908,0.00661053004262116,0.00699336748330425,0.00781411464656444,0.00605091899386459,0.00322703932887128,-0.000596181171119464,3.2148856286527e-05,-0.00244560864668793,-0.00425201685092509,-0.00569143145027876,-0.00598669808721248,-0.0057023927628372,-0.00500213008540936,-0.00418495843452636,-0.00335723184796313,-0.00261577846742795,-0.00197554899978721,-0.00144092758907845,-0.000993897024260844,-0.000613549919571382,-0.00027583583817072,4.18158633909242e-05,0.000364047175782597,0.000708503190373433,0.00111472811225105,0.0015696038187722,0.00217334629191181,0.00279901531601991,0.00362109702031887,0.00433581471569047,0.00509372976963309,0.00499675204352083,0.004570787013437,0.00334928264287888,0.00147712938981161,3.21566246699888e-05,0.000560427479277077,-0.00338711670202587,-0.00460333405338925,-0.00570302985862517,-0.00595310698176486,-0.00576477422127242,-0.00517884670787163,-0.00441930237607985,-0.00360110546840537,-0.00282407608503169,-0.00213113073730562,-0.00154218060262446,-0.00105112475904798,-0.00064110887368143,-0.000285441118156081,4.40191009470136e-05,0.000382628614875181,0.000751543756843754,0.00119988419837969,0.00170796827641491,0.00235065843874797,0.00302076934635762,0.00379588488788262,0.00441094372887145,0.00502256921823941,0.00516154210101471,0.00497657319097417,0.00443015903121901,0.00343324234457761,0.000560407185152833,0.000589201745057625,-0.00201055673763793,-0.00299027667335067,-0.00406493905261106,-0.00440488226549151,-0.00441837620083627,-0.00407691736383967,-0.00357329821072379,-0.00296658717045677,-0.00236466347573314,-0.00180400437044836,-0.00131584699712836,-0.000900018301068964,-0.000549840505606666,-0.00024478310675498,3.64438896833788e-05,0.000328087111613323,0.000642988301378746,0.00102588150006909,0.00145503763063927,0.00197482057377838,0.00249798380494421,0.00309320169738302,0.00353729282009058,0.00388168078127607,0.00402539848421214,0.00396196066774353,0.00353797630890574,0.00349366304642104,0.000589156240207553,0.000448785646058413,-0.00155544779373354,-0.00156645177587148,-0.00246505976133732,-0.0027005211024917,-0.00285053259734317,-0.00269449910303129,-0.00244814411470398,-0.002087558619889,-0.00170216197503858,-0.00131491408535979,-0.000966005276010972,-0.000662203764353033,-0.000404388119946699,-0.000179100264748956,2.80556068571788e-05,0.00024356856704963,0.000476801414056308,0.000754602964929723,0.00106034088506809,0.00141645598811975,0.00175280343449197,0.00208720789068321,0.00235425865289973,0.00254912728841113,0.00258855531733667,0.00258926539860935,0.00202501192163348,0.00205789603295977,0.00044872189903196,0.000293030881610304,-0.00112676601690807,-0.000571071887083776,-0.00138577499323416,-0.00152513431019132,-0.001776367023319,-0.00170790921211947,-0.00159461865657207,-0.00137386471214783,-0.00114807031512004,-0.000905579025336309,-0.000676524072762383,-0.000468950140694123,-0.000288351624817294,-0.000128443376324957,1.9257707556228e-05,0.000172317542330074,0.000336820402230152,0.000528502535085651,0.000733831611173504,0.000960402141180742,0.00117505983405272,0.0013630333543224,0.00147916909631667,0.00155216344817793,0.00147183645318581,0.00142934520475631,0.000945531475990231,0.00126311080865401,0.000292951810427875,0.000171921462986046,-0.00134351758806448,-0.000162258965847059,-0.00100306666100415,-0.000836219222628415,-0.001065770629303,-0.00102221750429502,-0.00104428082611548,-0.000927608578213739,-0.000786397655421605,-0.000628567250962929,-0.000475264874420239,-0.000333443968953767,-0.000205179872590635,-8.6323719210744e-05,2.71651965726116e-05,0.000146161467834735,0.000273445050889014,0.000415439244630049,0.000562686963853966,0.000709863331696673,0.000838518591275322,0.000950426312893686,0.00101046951999696,0.0010529444113908,0.000957317616203168,0.000901834835277168,0.000467922584106738,0.00100256758989975,0.000171827596569613,9.36452461193382e-05,-0.00235761386783608,-0.000388149976222842,-0.00150560974968176,-0.00110045691839011,-0.00125863592866746,-0.000984462659701118,-0.000903279034371646,-0.000828446992363792,-0.000731588671591445,-0.000606423068895439,-0.000465149760934555,-0.000322120601992086,-0.000189378405145268,-6.32237646565245e-05,5.68915421847527e-05,0.00017702852740705,0.000301062172411645,0.000433166218512035,0.000569461755532744,0.000706217557444667,0.000823065108642501,0.000919501881007402,0.000963643471239819,0.000998941823679509,0.000937766000322397,0.000903160899565033,0.0005194872955762,0.000847753318781168,9.3535653827881e-05,4.95412842482128e-05,-0.00515867747663321,-0.00132477810369902,-0.00192561966794572,-0.000700970212584028,-0.000960086839413376,-0.00105908745615374,-0.000997282410544431,-0.000888878300178083,-0.000763006065731889,-0.000624350801681362,-0.000487463370933138,-0.000332910779914805,-0.000178705311027812,-2.29147746829375e-05,0.000140281856828424,0.000312166148531551,0.000492999188935045,0.000679547629750226,0.000862587845494721,0.00103748718764321,0.00119130755945818,0.0013193818088697,0.00139655319982252,0.00144063301658498,0.00142585843210578,0.00153312434077946,0.00140636456910722,0.0021091782338422,4.94137337802682e-05,2.99755832679665e-05,-0.010960948947308,-0.00427236968355242,-0.00447143043725455,-0.0028862907720176,-0.00197868409512573,-0.00195890009381441,-0.00202831298093252,-0.00188164738879389,-0.00161184361940162,-0.00120978045995656,-0.000837653214919807,-0.000497263510646982,-0.0001786250438336,0.000111785162008141,0.000397095717130151,0.000690014386279767,0.00100113645271666,0.00133656751308675,0.00169030692031973,0.00204329829671175,0.00235728937865352,0.00259615355929017,0.00268741384144256,0.00267184791607492,0.00249506432077922,0.00247812932352625,0.00268692234707694,0.0032787314804147,2.99011965511692e-05,3.19431798097364e-05,-0.0149857052228092,-0.00253490398852081,0.000236110268183512,-0.002166666605602,-0.00397997700068878,-0.00442477052418222,-0.00450595697409139,-0.00393707623987217,-0.00332300354482994,-0.00254118508891767,-0.00169038264677421,-0.000935305124303208,-0.000223828430846097,0.000455252701017797,0.00114372837137447,0.00187657804907638,0.00266343428918865,0.00350763826444448,0.00441386547925254,0.00538027838275985,0.00632744026511308,0.00710091052065026,0.00744525324437507,0.00707992866192201,0.00618339798362636,0.00494555956622306,0.00488234497240857,0.0091083718586113,3.17698332277146e-05,6.66061084482081e-05,-0.00358624165753747,-0.00261325703917514,-0.00695894761913595,-0.0104416266477321,-0.0159302194735968,-0.0173810510784673,-0.0170820496347574,-0.014522258796243,-0.0110902595483142,-0.00794860211390662,-0.00498427660550955,-0.00242168017199481,-0.000216209560647472,0.00174514275343119,0.0035726096495901,0.0054310456761989,0.00749877615969339,0.00990851386159823,0.0127013365059474,0.0158114068492046,0.0190088161443393,0.0217745929682915,0.0233695023084111,0.0227596030685029,0.0187476068241318,0.0125064129465258,0.0041360245134104,0.00767555305293185,6.64075163605572e-05,0.000160944558449599,0.0387388702550172,0.0268607024700579,-0.0191482077842174,-0.0383429701811061,-0.0501343350443949,-0.0513770577140734,-0.0472766301396529,-0.0411418569432813,-0.0323191853880199,-0.0235155463206681,-0.0154447148198145,-0.00822039591703033,-0.00182150985104164,0.00404053453840446,0.00963304712424756,0.0152466478895351,0.0212512303418651,0.028148031334092,0.0363595133589944,0.0457912012788472,0.0557751396122632,0.0651398483144777,0.0717813614321758,0.0730717839606351,0.0652787254646743,0.0443505623862926,0.0140764009605226,0.00876281202878109,0.000160728552816416,0.000316563044914212,-0.0815926090850457,-0.0725008731796474,-0.105808556721269,-0.126777354644189,-0.137007891580785,-0.135168555417686,-0.114476037235852,-0.0913711710057775,-0.0690248647168156,-0.0486613714540318,-0.031292068334308,-0.0162742158585994,-0.00287247700893282,0.009607164603242,0.0216518500135078,0.0337402338784674,0.0468228505359221,0.0618936542858053,0.0793251216560158,0.0991048510180946,0.120832185043409,0.1431660789663,0.163039375065501,0.174121240316283,0.16808286615043,0.133867307063165,0.0414008294159582,-0.0368826767864316,0.000316353021891127,0.00040072249055014,-0.113866578011512,-0.146993646547954,-0.164503059041602,-0.206085590617983,-0.193482308755048,-0.171442188984791,-0.141497085690761,-0.107930667423004,-0.0783448111426534,-0.053106578555203,-0.0320355911035274,-0.0140147991579803,0.00242073821570715,0.0183372092730163,0.034153879838312,0.0501653367692086,0.0672163312926414,0.0859677012664069,0.1072458072502,0.132308870352717,0.16172750466731,0.194770140745262,0.228864231899514,0.25846930265234,0.272270651333839,0.25802150191529,0.188902849381073,0.0347863917945175,0.000400557429175396,0.000210457325767986,-0.0566542898813188,-0.123194651935689,-0.119483334910813,-0.110659884211829,-0.0960666828887319,-0.0754856680195265,-0.0554147213547109,-0.0367668489079983,-0.0210322216371294,-0.00809298247269022,0.00267093385912089,0.0118450727095205,0.0200823386578965,0.0278837799659085,0.0356205228068145,0.0436007175820522,0.052142491325464,0.0616134338860079,0.072661441459236,0.0860642372373565,0.102414066046857,0.122054189952303,0.144368732913506,0.167901163736835,0.190646717152765,0.206646091802909,0.216498404377704,0.210384284747324,0.00021041731551756,-0.000265428407752134,0.142336123019939,0.1269214329522,0.118300734368436,0.108615563535306,0.0966914241873465,0.0861739479982214,0.0761555401983907,0.0675636648925463,0.0602247374518547,0.0539502229249366,0.0485582658314985,0.0438220734108071,0.0395852115772094,0.0357034710220348,0.0320405330456193,0.0284657936972888,0.024854642870313,0.0210794690850849,0.0170284920096077,0.0125656120716096,0.00750353158282754,0.00171531257272961,-0.0048602518700158,-0.0123176786308264,-0.019077263141803,-0.0254057009323129,-0.0330325729789895,0.00418030746730282,-0.000265401687279484,2.25352956080966e-05,0.316291904238749,0.362481863836094,0.321251121146746,0.283239270642372,0.250104660224629,0.216395226458159,0.184707218067063,0.155207153636234,0.129112496273268,0.106365207274495,0.0866414658535902,0.0693962719406356,0.053937643751006,0.039576199703543,0.0256799190352427,0.0117006722422461,-0.00301771510677104,-0.0191514097613076,-0.03733750265974,-0.0581464882149172,-0.0819299656891639,-0.108864811659842,-0.137346386507933,-0.167256026651154,-0.197984703922195,-0.205049109237283,-0.258702072912529,-0.126999181440608,2.2661569824619e-05,0.00228273668443791,-0.0465760402308499,0.136213922538608,0.239910100534574,0.259207980818692,0.250131944818354,0.22310631579341,0.193182550171862,0.162162644715069,0.13322007833009,0.107169305185932,0.084330234464787,0.0645784050418077,0.0473670757042807,0.031768761276527,0.0167829339936593,0.00150674788911048,-0.0151335571076134,-0.0339552327562191,-0.0553714637509001,-0.0797212364117322,-0.106831479336011,-0.136904976982584,-0.16964608428619,-0.197387316270529,-0.239089550421061,-0.24831473243434,-0.252412784031966,-0.229178098075575,0.00228292932112122,0.00159669291989048,0.0668490814811283,0.0835633042736841,0.12733051900208,0.134127295336764,0.137848756242747,0.124903603344654,0.109995909246068,0.0930497848208237,0.0763607728232835,0.0609184703643622,0.0472171608308962,0.0353959299065066,0.0251930773679354,0.0160800406853398,0.00739240436946606,-0.00162071059541413,-0.0116785072400293,-0.0232656771399168,-0.0365632165267851,-0.0517486050014172,-0.0689272534708576,-0.0868727399810359,-0.108711518894153,-0.123957352702992,-0.136647967367756,-0.131357011448563,-0.0668313949595829,-0.0178651250131809,0.00159690946477425,-0.0202392255566935,0.0708792576945245,0.0575533690965816,0.08822809685293,0.0655691541953885,0.0603355764525914,0.051509043344687,0.0438961654150122,0.0368473033351142,0.0301024510774264,0.023983061116643,0.0186323643686381,0.0141031169412058,0.0102854955764743,0.00692521174326558,0.00369043493077965,0.000240783509028176,-0.0036895097151392,-0.00827332315318729,-0.0136167103888629,-0.0196749095886118,-0.0272511586068532,-0.0352441557265421,-0.0458494145038566,-0.0581206208187975,-0.0664589245509379,-0.0785769038471748,-0.0699723037889544,-0.0452794487196897,-0.0202390177391546,-0.10166342131006,0.178783834095287,0.0846812339560284,0.0550109673395476,0.0274378562595565,0.0181812368338877,0.0149506470043602,0.0131075667465285,0.0116610014583551,0.0101196855344516,0.00846541878524371,0.00683055371013072,0.00528122108020937,0.00384310445223006,0.0024731622353547,0.00108637220214337,-0.000386319334377629,-0.00197585594793083,-0.00369025263766027,-0.00568618106505199,-0.00786422750692005,-0.0107753599017525,-0.0145300501695782,-0.0194615119789858,-0.0284081844045409,-0.043285698408992,-0.0664990407942855,-0.119762812298532,-0.182105884674956,-0.101663239290676,-0.390092573018605,0.294828804184707,0.132785755172093,0.0580082241271381,0.0181127574082622,0.00534633523129256,0.00187489353782072,0.00162372701815558,0.00191001809504541,0.00215826371186638,0.00219668530472978,0.00204766008445793,0.00174204721551514,0.00129992639742609,0.000769623678512505,0.000234088237433904,-0.000228261882380787,-0.000606349269780605,-0.000898093964456774,-0.00121234200161295,-0.00153537216990097,-0.0019462465236294,-0.00280395289249657,-0.00463308296933093,-0.00875504622488698,-0.020522204956235,-0.0486133518750764,-0.0912859836470269,-0.19805821047187,-0.390092420388889,-1.45580882151039,-1.18893464964471,-0.56308563971765,-0.23617621009283,-0.0992051902451341,-0.0424373480397868,-0.018730405648902,-0.00868609185245473,-0.00426897661341092,-0.00222250964629233,-0.00121258597456119,-0.000680151073186983,-0.000380306837408847,-0.000197897363468617,-7.27416229910584e-05,3.21575316897138e-05,0.000146504042134855,0.00030219288012143,0.000542704008999545,0.000934728304152068,0.00158491999078748,0.00266650274395818,0.00446679122551888,0.00749371099832935,0.0127633019695521,0.0229443938858821,0.0455867662157722,0.108368835049315,0.311339376096716,2.32515323747672,-1.52426304631265,-1.17090960746105,-0.56701476381894,-0.237102769515358,-0.0996226722933466,-0.0426092687636716,-0.0188098927426147,-0.00872279277360357,-0.00428700448230286,-0.00223190693218398,-0.00121768901486647,-0.000683001693013741,-0.000381895791240117,-0.00019872210955113,-7.30463124290292e-05,3.22863011638455e-05,0.000147102123778488,0.000303427848361097,0.00054491727746482,0.000938532139374957,0.00159134989847097,0.00267729828230301,0.00448481674981226,0.00752403192399864,0.0128145717971511,0.0230431233019327,0.0458226801278302,0.107793721147808,0.321469724325709,2.36980378970255,-0.195089219000273,-0.608165533315066,-0.323463099648673,-0.199122789003872,-0.10682105424378,-0.0532535271757319,-0.0275999199687657,-0.0140022365842033,-0.0071943739992472,-0.00377073170742936,-0.00199942270773677,-0.00107715360023168,-0.000581334437428879,-0.000302813600482397,-0.00013047943808701,2.47830954761546e-06,0.000144089279735887,0.000344500225326699,0.000675491618006078,0.00125523539340654,0.00229560954174346,0.00421400483391687,0.00780250921550149,0.0145022998636814,0.0288539306335804,0.0552748679944559,0.124399609239371,0.277757592429994,0.699716341617776,-0.195089085058436,-0.109167481287992,-0.279396995083874,-0.251872301571102,-0.155937513706367,-0.0950169325049173,-0.0534450308646036,-0.0291284444853563,-0.0158796743831707,-0.00859078387416893,-0.00469246121993047,-0.00259481990338719,-0.00144948293919123,-0.00080845524806191,-0.000428760776202626,-0.00017805569961815,2.12587785978326e-05,0.00022612373353612,0.000493657654171378,0.000907751989500266,0.00161479909744893,0.00288163207885364,0.00517780814878036,0.00959822699548096,0.0176283996160768,0.033862010392224,0.0639589189026186,0.121940787286994,0.195521567096118,0.238347758599718,-0.109167360669622,-0.0449701011677125,-0.110674053675707,-0.117291887986156,-0.0935301294369434,-0.0623442355086862,-0.039587849761776,-0.0238616009990648,-0.0139936426883705,-0.00813693233890086,-0.00470314464407977,-0.0027260762468436,-0.00158549753711102,-0.000910199906696123,-0.000489050035215451,-0.000196781622398626,4.18206443494458e-05,0.000283731526670458,0.000588229398042313,0.00103886342673192,0.00177294519192286,0.00306455589053568,0.00532212353966243,0.00954481970023096,0.0168332649606816,0.0312423513016155,0.0500935952029255,0.098158572178506,0.0938339254565972,0.0912727525179309,-0.0449700050033198,-0.0134761595418078,-0.0457654122546034,-0.0555949014069171,-0.0483592297444577,-0.0375464356310108,-0.025926249178224,-0.017133530637203,-0.0108865375467292,-0.00675057220435275,-0.00415457704949502,-0.00254361064719738,-0.00155537671282798,-0.000934686344898374,-0.000523844019028611,-0.000223057422153169,3.21090754914747e-05,0.000290437468504545,0.000602818782895339,0.00104575549352527,0.00172934011893393,0.00287872681125804,0.00475172815990012,0.00816254868946034,0.012752421265066,0.022754311529323,0.0282644831718624,0.0429181997297571,0.0397271105242969,0.0318725711778628,-0.0134760825873212,-0.00306083687308855,-0.0138863100152562,-0.0221095242811002,-0.0223914525690824,-0.0190503449479231,-0.0148954472617549,-0.0107056413198496,-0.00744453692530833,-0.00502482809369801,-0.00334704381011977,-0.00221331591275148,-0.00145059195066992,-0.000924989870923364,-0.000542871893921152,-0.000239193704686729,3.02737768659769e-05,0.000302757396469294,0.000615195247124985,0.00102526177620437,0.0016039017967584,0.00252528313872433,0.00380218211062564,0.00623090867030274,0.00856893160574298,0.0139183285708752,0.0171515119179991,0.0206578142772487,0.0160617039383561,0.011719056005078,-0.00306077691738883,-0.000598265761701732,-0.00435982651324921,-0.0080157668809208,-0.00978527216050344,-0.00936644306941462,-0.00813319008894963,-0.00655025755865184,-0.00502989113299609,-0.00374988288421771,-0.00274261045594654,-0.00197103574886892,-0.00138749585441075,-0.000934726314777441,-0.000569606029950665,-0.00025530677115741,3.58666285644747e-05,0.000329332290753913,0.000650148880028892,0.0010379355153656,0.00151019231276595,0.00220509176141937,0.00295620239429312,0.00426294117558249,0.00526439768365019,0.00660520966901792,0.00695117210559841,0.00781290585059636,0.00602805269099594,0.00323498423115929,-0.000598226042686902,2.52316223360616e-05,-0.00247634239989259,-0.00422500567568236,-0.00568966484138746,-0.00598205990801399,-0.00570165407676038,-0.00500145825126516,-0.00418611011275265,-0.00335863298977692,-0.00261756439341509,-0.00197721496989636,-0.00144245062977634,-0.000995027274417363,-0.000614331336241302,-0.000276210395642423,4.19335664322017e-05,0.000364648507189214,0.000709393651037171,0.00111654498255668,0.00157063144408488,0.00217710562078153,0.00279905838394553,0.00362535346737005,0.00434006084539728,0.00510586691615109,0.00499512491104017,0.00457241249817637,0.00333727410243523,0.00145270736054139,2.52416617883162e-05,0.000563983406485707,-0.00345544161802794,-0.00462811145440545,-0.00573177303778919,-0.00597947444713818,-0.0057897170909015,-0.00519903350701245,-0.00443553961890527,-0.00361353485884167,-0.00283347352444305,-0.00213784120461696,-0.0015469095311029,-0.00105422169407781,-0.000642909689721993,-0.000286270092117655,4.41939470132235e-05,0.000383874179578466,0.00075364739826989,0.00120407062229083,0.00171271918108917,0.00235961013133451,0.00303080344557133,0.003809682681554,0.00442511219694494,0.00505128263559974,0.00518199633257523,0.0049997552916105,0.00446361405962778,0.00340183996061872,0.000563958835120303,0.000591377535896007,-0.00190906897127079,-0.00301880495497529,-0.00407329783412722,-0.00441579691746536,-0.00443149312268309,-0.00408762412349934,-0.00358307153599321,-0.00297428751555488,-0.0023711957933413,-0.00180924196877773,-0.00132003574685324,-0.00090321698455905,-0.000551903032599394,-0.000245675927802308,3.6548428203343e-05,0.000329495218923023,0.000645087128352194,0.00102921503004759,0.00145890472951439,0.00197987883701656,0.00250374926885041,0.00310153762553597,0.00354273038828028,0.0038905080937693,0.00403635815645668,0.0039709332460013,0.00356214893323652,0.00349882864178002,0.000591327798974737,0.000449003161160531,-0.00154200474701945,-0.00156722170123595,-0.00247990361185331,-0.0027085823936714,-0.00286370036323816,-0.00270321393601999,-0.0024576322867794,-0.00209506529150644,-0.00170874885160624,-0.00131982948229096,-0.000969693220136155,-0.000664697175721017,-0.000406009373240386,-0.00017967921402313,2.82646580141745e-05,0.000244732660190955,0.000478947611249915,0.000757823061960793,0.00106457288679331,0.00142253364812594,0.00175942120241061,0.00209656792569467,0.00236477134115094,0.00256061123112035,0.00259916647574966,0.00260174139398661,0.00201972770051981,0.00203947792524015,0.000448936380014057,0.00029392222637744,-0.00105362418641576,-0.000575223465014352,-0.00139456813849694,-0.00152714063533607,-0.00178920808950852,-0.0017153216296442,-0.00160325977929869,-0.00137959794676604,-0.00115366730774601,-0.000909985254685434,-0.000680026252070763,-0.000471318343216295,-0.000289795899352071,-0.000129107379384844,1.9367309695492e-05,0.000173025999594473,0.000338199823309898,0.000531048412314383,0.000736790324207025,0.000964821230141746,0.00118024860696331,0.00136875691664375,0.00148520797385007,0.00155932875230877,0.00147427595413845,0.00143846077439227,0.000946524668698002,0.00120325278492303,0.000293840701455539,0.000172341887488622,-0.00128347896821022,-0.000150553532605335,-0.00101582000041111,-0.000827271403140965,-0.00107265771510698,-0.00102309999584784,-0.00105173016402248,-0.000932820629130019,-0.000790579813743698,-0.000631462414448694,-0.000477249396957095,-0.000334851191311266,-0.000206004636117538,-8.66959695112791e-05,2.72934497714316e-05,0.000147145102442063,0.00027489713110849,0.00041809069412116,0.000566415186251116,0.0007141961545495,0.000843760823394772,0.000956468315195565,0.00101560815812726,0.00106029641798621,0.000959330477782041,0.000904528948248814,0.000476913117787132,0.000916952361347708,0.000172245908936652,9.3986438219147e-05,-0.00228711590368689,-0.00037041257618951,-0.00154083982810239,-0.0011039370636479,-0.00128220244459637,-0.000990775114842527,-0.000909382081774421,-0.000835311503898155,-0.000738462985523354,-0.000612454293366169,-0.000469691585124269,-0.000324962803451964,-0.000191057384484092,-6.36903996763569e-05,5.70398072302018e-05,0.000178006049463209,0.000302888270511682,0.000435498897683157,0.000573059950728772,0.000711226455393627,0.000828535188609446,0.000926477323767691,0.000969938710448677,0.00100632783972597,0.000943586146616447,0.00090153676593874,0.000541921351584678,0.000705135302256284,9.38749525834718e-05,4.97265693600835e-05,-0.00510257624239342,-0.00128573549015037,-0.00194443538368619,-0.000676494032342333,-0.000956271176190283,-0.00106815140691256,-0.00100263279689666,-0.000891010488894857,-0.000764710291399249,-0.000625467954064307,-0.000489813340806714,-0.000334817555992384,-0.000180186526004921,-2.35323706421832e-05,0.000141102990294102,0.000314121154860853,0.000496665183238066,0.000684702872278017,0.000868252318786548,0.00104429671716787,0.00119896706858959,0.00132773755258827,0.00140610721309128,0.00145074492343096,0.00143532693003123,0.00153634147931234,0.0014450551089408,0.00194516510409569,4.95972786127925e-05,3.01044244698981e-05,-0.0109577533146917,-0.00434396452635673,-0.00449865019383193,-0.00296750262590973,-0.00198041856249064,-0.00196084618717307,-0.0020438200357564,-0.00189451407267745,-0.0016261831565308,-0.00121804190369193,-0.000842785316171078,-0.000500457183260024,-0.000179159301607455,0.000112515621093441,0.000399305441708476,0.000693330841366649,0.00100480090052123,0.00134142004789431,0.00169626723086698,0.00204976802210139,0.00236448849410811,0.00260438072695377,0.00269368188362928,0.00268107526892691,0.00250234190642322,0.0024642002276216,0.00276891415367878,0.00303451815171617,3.00292318739949e-05,3.20828610973474e-05,-0.0147765770513747,-0.00282772486458268,0.000617545484065585,-0.00210938235215679,-0.00399608238865179,-0.00440017365846313,-0.00449584844665963,-0.00391954366760078,-0.00331416332019523,-0.00253970283798593,-0.00168937280431835,-0.000937506122952936,-0.000226078495933518,0.000455130920500274,0.0011474311247165,0.00188605937648965,0.00267747012754923,0.00352319778009256,0.00443006214004345,0.00539728670941756,0.00634523524128912,0.00712018619090415,0.00746571306875598,0.00708570192326178,0.00619793429170443,0.00490277243591295,0.00496233709944515,0.00906350046995183,3.19080606856441e-05,6.68825264276659e-05,-0.00229137340156452,-0.00374992585497765,-0.00706114593799216,-0.0102912369943645,-0.0159832875515647,-0.017459316433005,-0.0171792718981689,-0.014599632966312,-0.0111270952493957,-0.00796640366323412,-0.00498424354809702,-0.00241065218578784,-0.000200813210276019,0.00176177509240406,0.00358749461622358,0.00544513715985992,0.00751893624234862,0.00993917522604151,0.0127418746061637,0.0158620078537966,0.0190702457625436,0.0218427302161411,0.0234376307724802,0.022821843545648,0.0187433272986555,0.012460679950952,0.00400150401858123,0.00785569536008222,6.66827576981211e-05,0.000161475274054702,0.0433127929683761,0.0280808822105829,-0.0194315148025437,-0.0385606425751304,-0.0502607957005894,-0.051486594437048,-0.047401111843377,-0.0412866467108677,-0.0324546844504506,-0.0236133418898741,-0.0155008943232802,-0.0082343487268305,-0.00179810244461603,0.00409216366503218,0.00970771205350761,0.0153362767435666,0.0213482180838096,0.028268179124128,0.0365344509397662,0.0460381596173406,0.0560931873842899,0.0655141960172877,0.0721709517770424,0.0734094841228877,0.0655879192328552,0.0442293683341795,0.0140735202690672,0.00774126447574373,0.000161258574616962,0.000317070660516093,-0.0829163462791898,-0.0716850918167864,-0.105652224022607,-0.127252538215187,-0.138055970673961,-0.136190186798818,-0.115455172717089,-0.0921196044687025,-0.0695977960193489,-0.0490973929749768,-0.0316027566689954,-0.0164899355316001,-0.0029982342369368,0.00957081049110195,0.0216946290034687,0.033867839147739,0.0470588078982568,0.0622395983125514,0.0797802314283057,0.0996795061165987,0.121529596814789,0.143992817263215,0.16400976713752,0.175210709146569,0.169046877856651,0.135379583834563,0.0403391434440254,-0.0380107971921865,0.000316860531622777,0.000400786315256899,-0.121397675759221,-0.149981869724953,-0.167093800968594,-0.20751310416283,-0.194587406379225,-0.1720455643286,-0.142011234562402,-0.108417263887312,-0.0787375855957658,-0.053452452643264,-0.0323125367776458,-0.0142168718491765,0.00228670417718066,0.0182705083170179,0.034169142976023,0.0502643629460237,0.0673966879101585,0.0862264570052183,0.107558591338721,0.132685003055613,0.162185289372133,0.195327994774674,0.229478620718103,0.259225900837615,0.273260665060177,0.258059206354493,0.193036970484792,0.0370330566588398,0.000400621472680172,0.000210448872115433,-0.054996275411266,-0.125178187490381,-0.119648069048949,-0.110579857977192,-0.0959769716333671,-0.0754150735826,-0.0554315562206248,-0.0368330372106969,-0.0210939544545978,-0.00814770976219384,0.00263219601026896,0.0118209275491463,0.0200711995248683,0.0278847612828011,0.0356304750130601,0.0436157183998371,0.0521646398317062,0.0616517750837057,0.0727174348079061,0.0861316004814707,0.102484354693714,0.122110386289826,0.144387931299753,0.167874013823864,0.190489605945724,0.20666459791752,0.217400103324718,0.211603947310249,0.000210408940372184,-0.000265483145832139,0.141093558904341,0.125989784721398,0.118025245869032,0.108748564288588,0.0966934044807504,0.0861489084195166,0.0761436559738757,0.0675430189246336,0.0602070147741613,0.0539336336864856,0.048546045383108,0.0438140924803892,0.0395793827015989,0.0356984074796935,0.0320370205365702,0.0284615765153735,0.024850378946245,0.0210790153034351,0.0170301357646146,0.0125688350392265,0.00750681575516749,0.0017168923177758,-0.00484292356592724,-0.0123366330351375,-0.0190568181114122,-0.0255200433859416,-0.032414474629684,0.00786758329456369,-0.000265456479471586,2.25628018747341e-05,0.319436374928804,0.36439995432406,0.321774384709638,0.283741209000937,0.250420989803475,0.216667034979609,0.184944283249176,0.155390484443924,0.129281351372159,0.106509183019013,0.086767884080005,0.0694958202542498,0.0539998804893356,0.0395962121758744,0.0256555583973382,0.011628592119703,-0.00312663647452464,-0.0192856260182658,-0.037495678170052,-0.0583294859689919,-0.082154454160516,-0.109144423927903,-0.137627085385682,-0.167695654660591,-0.198283795709623,-0.204899442837155,-0.259739744836757,-0.130989161550634,2.2688835702086e-05,0.00227926998399365,-0.0452313927711121,0.136478403897544,0.24107241256719,0.26033452758588,0.251414266323957,0.22407034552083,0.194037172588644,0.162847080773368,0.133785544730242,0.107623386460322,0.0846810155130599,0.0648266755046109,0.0475119717090683,0.0318110987488923,0.0167282101795677,0.00135838278790524,-0.0153712404439462,-0.0342836539501179,-0.0558076900235034,-0.080285337528719,-0.107534921588269,-0.137796403267188,-0.170656323710649,-0.198469533057341,-0.240612055226383,-0.249712857762283,-0.254906116451466,-0.236162547566379,0.00227946252004771,0.00161179210121371,0.0653858631929477,0.0833865322087955,0.128542170154788,0.134411137973178,0.138686047707983,0.125646745718062,0.110663819084726,0.0936123213120359,0.0768086326070807,0.0612561468093686,0.0474594889183674,0.0355615670368411,0.0253021911615303,0.0161443033549556,0.00741381379550921,-0.00164538883643383,-0.011764758365641,-0.0234335820709529,-0.0368240832122844,-0.0521133221283917,-0.069401600030956,-0.087433612230672,-0.109491085456256,-0.124703450795075,-0.137650319708826,-0.131992396770119,-0.0652508751555935,-0.0135977429241109,0.00161200909325237,-0.0201129648125719,0.0736985660791815,0.05693739106442,0.090277774228623,0.0661810510020934,0.0605974051306774,0.051821527408492,0.0441279963613398,0.0370452407578504,0.0302587243913193,0.0241015289558798,0.0187202551638573,0.0141698488444324,0.0103393525158682,0.00697428187027448,0.00373605811894475,0.000277055766703361,-0.00366888326088672,-0.00827433905003755,-0.01364451191774,-0.0197200401030654,-0.0273479748487055,-0.0353364671766626,-0.0460372555775945,-0.0584043750772852,-0.0667500545035058,-0.0794867065042692,-0.0714074096124154,-0.0433265960960249,-0.0201127559747974,-0.103295431874714,0.178940174851984,0.0792262336285837,0.0544823677727677,0.0275578088685203,0.0180677965766599,0.0149720017691035,0.0131449218030332,0.0117131984956899,0.0101797650801953,0.0085256978353196,0.00688642702250929,0.00532960865778773,0.00388055087736651,0.00249461454442536,0.00108835837025021,-0.000405079805568021,-0.0020133124102323,-0.00373902374785789,-0.00574982214721852,-0.00792990037468963,-0.0108655581753206,-0.014636999168341,-0.0195724473986549,-0.0286110541556403,-0.0434889545584997,-0.0666569778322195,-0.122120664489899,-0.182871914577191,-0.103295248479858,-0.383998927063171,0.334806082368659,0.133911334062799,0.0595904540754203,0.0186401607608433,0.00548790320290677,0.00189726998309945,0.00162433908544162,0.00190110265308621,0.00215118235198657,0.00219384817765508,0.00204867255672679,0.0017445919268126,0.00130171520808378,0.000769252666167671,0.000232598596175845,-0.000226497864045548,-0.000599544690530062,-0.000884121314831223,-0.00119635732566198,-0.00151669255864959,-0.00192703289224562,-0.00280191437232185,-0.00463045759101447,-0.00882267515399721,-0.0206711781868812,-0.0495284306853315,-0.0888163484683345,-0.216248568356576,-0.383998772116085,-1.52426309430102,-1.17090961196342,-0.567014764805394,-0.237102770031268,-0.0996226720991366,-0.0426092685387775,-0.0188098925841378,-0.00872279267992051,-0.00428700443092369,-0.00223190690505683,-0.00121768900784267,-0.000683001685823916,-0.000381895787623594,-0.000198722107851052,-7.30463118748105e-05,3.22863008233429e-05,0.000147102122411001,0.000303427845412748,0.000544917271753136,0.0009385321286569,0.00159134988858798,0.00267729824658062,0.00448481668744901,0.00752403182215423,0.0128145716542015,0.023043123182338,0.0458226803573169,0.107793723134454,0.321469730286758,2.36980385075347,-1.56294587168397,-1.16015566429442,-0.569326329346851,-0.237651093076675,-0.0998764407552677,-0.0427100554877948,-0.0188570036233194,-0.00874443326514531,-0.00429762440044301,-0.00223744590118979,-0.0012207001795101,-0.000684686202215718,-0.000382836055453369,-0.000199210673005608,-7.32268331263489e-05,3.2362728189662e-05,0.000147456638396675,0.000304159575668763,0.000546226944107893,0.000940779806896194,0.00159514227958169,0.00268365232925885,0.00449540525300053,0.00754174908485755,0.0128448307148877,0.023100711035094,0.045960439325587,0.107437921754655,0.328052805877707,2.39383411367119,-0.187925967978259,-0.626454202553838,-0.323602059097158,-0.201471242394118,-0.107511870217902,-0.0535502525812971,-0.0277633224994069,-0.0140668653286989,-0.00722615308311678,-0.00378664680990919,-0.00200705754808384,-0.00108098547835943,-0.000583791081291587,-0.000304246806052032,-0.000131191181309695,1.3403689113984e-06,0.00014363926598988,0.000345229849056596,0.000676475684109049,0.00125911661587455,0.00230455025979729,0.00423033632234248,0.00783861885092877,0.0145676183149118,0.0290051958475301,0.0556016302553621,0.125046957821047,0.279771948087981,0.724358361008494,-0.18792582927934,-0.109588456257615,-0.283562448467185,-0.255804052244037,-0.156714815567664,-0.0958354411879023,-0.0537704073629395,-0.0292854819362443,-0.0159691487668781,-0.00863588693678752,-0.00471863415481354,-0.00261078857061512,-0.00145914370116799,-0.000814162590348049,-0.000432398698317409,-0.000179339481015633,2.22461541491226e-05,0.000228159500467967,0.000498011233487554,0.00091504582486004,0.00162456658722414,0.00289868434940367,0.00520306521813698,0.00965033149049548,0.0177056560586588,0.0340536306054312,0.0643130253243835,0.123525247470792,0.193299890371155,0.243026833005293,-0.109588333731552,-0.0450106373377272,-0.11162089093576,-0.118055478566992,-0.0944553300705156,-0.0626591356011758,-0.0398518542464475,-0.0239926164778739,-0.014067074200798,-0.00817982095649047,-0.0047266795554662,-0.00273939034261767,-0.00159348363711804,-0.000914595199000878,-0.000490994188652507,-0.000197565722982668,4.26081326794118e-05,0.000286190821159832,0.00059158913332665,0.00104490734843838,0.0017822876153371,0.00308027237878005,0.00534511597577826,0.00959790664200062,0.0168939003111354,0.0315422253113086,0.0500079217887693,0.10058842633661,0.0932972279462572,0.0942611357511181,-0.0450105394402743,-0.0135003332793648,-0.0462086449581975,-0.0560098442038569,-0.0485831181678541,-0.0378143809525808,-0.0260459806696775,-0.0172267866899407,-0.0109380583447053,-0.0067798756786647,-0.00417173835356927,-0.0025530941229669,-0.00156067371837748,-0.000937894905686408,-0.000525578440339166,-0.00022369547894803,3.17871653440344e-05,0.000291089897863536,0.000604638229977491,0.0010488865973596,0.00173485862768914,0.00289140538811563,0.00476498732096048,0.00822223061415208,0.012739966082645,0.0230755709969221,0.0279851612334964,0.0434064376168984,0.0393908217249391,0.032486908187073,-0.0135002544688539,-0.00306119551794128,-0.0138477172366715,-0.022222662092717,-0.0225004774990001,-0.019114306301271,-0.0149677705176324,-0.010743295322043,-0.00747386292119939,-0.0050420520290501,-0.00335757548208575,-0.00221956436979859,-0.0014541159421314,-0.000926758778917192,-0.00054390863280455,-0.000239594141174235,3.03798173231097e-05,0.000303032325625625,0.000616095333652334,0.00102772710717386,0.0016067037798143,0.00253666747742687,0.00380377519694982,0.00628601198902297,0.00854498061832268,0.0140721088264405,0.0172146577694195,0.0209061434390262,0.0159814578488145,0.0119643571462513,-0.00306113319804128,-0.000599778268137851,-0.00440177495867791,-0.00797954552143188,-0.0098132216633695,-0.00937904506336357,-0.00814671244055784,-0.0065637651317584,-0.00503937233849642,-0.00375729939434697,-0.00274772924899206,-0.00197424271310832,-0.00138957001680131,-0.000935871312612305,-0.000570112697728902,-0.000255572653721291,3.58097769874992e-05,0.000329592137641437,0.000650529794449969,0.00103949875795023,0.00151086752407738,0.00221242827924178,0.00295326647125192,0.00428199859394832,0.00526107304602028,0.00660454887589406,0.00690012058358587,0.00782969110611713,0.00599990574302464,0.00329394940518833,-0.000599734566581891,2.08786109699911e-05,-0.00251935289914661,-0.00420108186361183,-0.00568497946362595,-0.00597682439945657,-0.00570037430019791,-0.00499944326898706,-0.00418661259147819,-0.00335894579972593,-0.00261857227443906,-0.00197810318395989,-0.00144329669534222,-0.000995712157013425,-0.000614791706266157,-0.000276380164929552,4.19595354051558e-05,0.000365070725484038,0.000709823086759314,0.00111801592987619,0.00157051963998451,0.00218057784994068,0.00279792204524728,0.0036287214511527,0.00434165936512954,0.0051234949313174,0.0049926071537338,0.00457527675749749,0.00331527747979026,0.00142910868923084,2.08891136793027e-05,0.000565975850681636,-0.00347323814382416,-0.00465310872619683,-0.0057500173774197,-0.00599699123525674,-0.00580670465596571,-0.00521259072964277,-0.00444632304587447,-0.00362189911638138,-0.00283983079346755,-0.00214252864793576,-0.00155020937116729,-0.00105644288785588,-0.00064430960915108,-0.000286808925724687,4.42501197157831e-05,0.000384934863073685,0.000754934730132774,0.00120760207994662,0.00171513585740891,0.00236676564808792,0.00303622087675848,0.00382063900471942,0.00442887138309021,0.00507273031000952,0.00519391961967833,0.00501326351232756,0.00450020527208825,0.00334898294193449,0.000565947617382816,0.000592772306102413,-0.00180570982148549,-0.00304672797773643,-0.00408074304787529,-0.00442511479747646,-0.00444371046917446,-0.00409662042109606,-0.00359158361877532,-0.00298057681092071,-0.00237655780701664,-0.00181352143136679,-0.00132365660822224,-0.000905852356236855,-0.000553723426043469,-0.000246470830427197,3.67497593870305e-05,0.000330756805814547,0.000646848194409381,0.00103241022267205,0.00146189372297626,0.00198476756788498,0.00250834438092581,0.00310978177473281,0.00354905705281578,0.00389853474220264,0.00404739437652288,0.00397466274619272,0.00359054557577413,0.00349194579993547,0.000592719984648116,0.000449078359886012,-0.00151402204109186,-0.00156795102432786,-0.00249226541613543,-0.00271326041235645,-0.00287497536989377,-0.00270918426567354,-0.00246539090088628,-0.00210085940121246,-0.00171424103961788,-0.0013236275952546,-0.000972643695995539,-0.000666714620073666,-0.000407208049192807,-0.000180172846798092,2.84384174577548e-05,0.00024583346097246,0.000480437298170859,0.000760679758313354,0.00106783176456538,0.00142724697643759,0.00176478936159253,0.00210355296689529,0.00237237577689539,0.00256982265816329,0.00260814642901748,0.00260988543084108,0.00201698948634404,0.00200019545366639,0.000449009784378624,0.000294477330799232,-0.00096181288013322,-0.000582219440120445,-0.00140181259785316,-0.00152700889872206,-0.00180210694119078,-0.001721129552849,-0.00161129522948548,-0.00138396259884877,-0.0011585378736626,-0.000913787233502762,-0.000682971770790595,-0.000473353778083097,-0.00029101518714301,-0.000129567110837755,1.9274466286371e-05,0.000173752725306299,0.000339298706861505,0.000532928841509717,0.000739542974724049,0.000968567124494226,0.00118438611244343,0.00137436732919986,0.00149020741403845,0.00156493296048385,0.00147568954628197,0.00144344611341592,0.000953986846947852,0.00111855034831132,0.000294394354056863,0.000172589286397265,-0.00120747109609077,-0.000138680582768149,-0.00102880021092511,-0.000813666035070902,-0.00107939564939316,-0.0010211955977523,-0.00105908740692557,-0.00093708460638141,-0.000793921809980182,-0.000633659561669423,-0.000478721478545719,-0.000335815792598067,-0.000206716189144397,-8.6875753030152e-05,2.74104848972391e-05,0.00014774234025134,0.000276386083504478,0.000420377537238619,0.00056932862266589,0.000718445682278161,0.000848076091743951,0.000961317171319926,0.00102002786787985,0.00106678936800744,0.000960790448982325,0.000903087584078359,0.000493180881705796,0.00080669999120519,0.000172492061299373,9.41933173586445e-05,-0.00219551043841786,-0.000352098098931481,-0.00158144734816876,-0.00110449828981923,-0.00131049895736453,-0.000995214288683724,-0.000914907608787459,-0.000842069210692101,-0.000745239116583145,-0.000618339609584283,-0.000474114856475118,-0.000327555225119085,-0.00019258951417946,-6.42728417669329e-05,5.73708202115969e-05,0.000178803288440446,0.000304089094509444,0.000437843646780213,0.000576039313925363,0.000715366518108639,0.000833827175689612,0.000932851030943621,0.000975158683718294,0.00101279260333855,0.000949856571602433,0.00089412017330914,0.0005757727172264,0.000523110971013029,9.4080715814617e-05,4.98379801823129e-05,-0.00502506624236192,-0.00123332795750516,-0.00196666579226978,-0.000637755646619778,-0.000950086862081506,-0.00107760345628247,-0.00100539532836048,-0.000891288077106738,-0.000764838161136621,-0.000625394098269533,-0.000491687647229481,-0.000336489017581447,-0.000181449828155775,-2.43068568817404e-05,0.000141391565102692,0.000316057205394764,0.000499765973832759,0.000688864848155888,0.000873541238895026,0.00104993377236786,0.00120507333026784,0.00133505512972781,0.00141458779210891,0.00145921272873966,0.00144441190374673,0.00153507937226779,0.00149353694150917,0.00174817171973362,4.97076656604771e-05,3.01817532442777e-05,-0.0109442707478589,-0.00440802010881952,-0.00453867540441704,-0.00306629256835486,-0.0019702687929758,-0.00196316121153538,-0.00205887212166897,-0.00190581167376957,-0.00164012166237762,-0.00122448860585092,-0.00084669016848761,-0.000502994494116376,-0.000179401979825625,0.00011352783292096,0.000400992415051234,0.000695236782602765,0.00100721112031798,0.00134378623517072,0.00169882398474357,0.00205306222903735,0.00236719802453982,0.00260781025491166,0.00269434320589971,0.00268599212513071,0.00250602322898235,0.00243616811148452,0.0028753976714593,0.00271109594157948,3.01060876288621e-05,3.21661080121882e-05,-0.0145350106286726,-0.00313628117719936,0.00111772134730288,-0.00206697063700027,-0.00399745294399783,-0.00435302063106186,-0.0044736567742298,-0.00388606880134821,-0.00329660430837718,-0.00253277658589018,-0.00168438768043693,-0.000938235649740684,-0.000228523592891778,0.000453298978138791,0.00114929928954963,0.00189244796677371,0.00268695978099375,0.00353347704266127,0.00443812595505636,0.00540386813409661,0.00635141574326136,0.00712579644106444,0.00747325490855812,0.00707288148422489,0.00620674030224465,0.00483528045470193,0.00504834835812305,0.0090322408590093,3.19904570800117e-05,6.7045737487184e-05,-0.000849546812445765,-0.00524254324601791,-0.00709714488313057,-0.0100859422377336,-0.0160428193310877,-0.0175054908909973,-0.0172624047343129,-0.0146591977620907,-0.0111417610314392,-0.00796949027042055,-0.00497193861320005,-0.00239243212174706,-0.00018248678503266,0.00177649833974367,0.0035954887618412,0.00544918118528183,0.00752466388538912,0.00995129540356314,0.0127601827094888,0.01588353483932,0.019096183461284,0.0218696928030351,0.0234602313780532,0.0228444931461816,0.0186826492390574,0.0123984942539846,0.00381689329215846,0.00801500722719197,6.6845284242162e-05,0.000161787649712001,0.0488077642028107,0.0294199899234941,-0.0198501738224719,-0.0386265381771003,-0.0503185810898038,-0.0515062045348364,-0.047429469384581,-0.0413790414700017,-0.032543690073032,-0.0236808020870004,-0.0155361620321088,-0.00823291058159532,-0.0017662405139859,0.00414670350242738,0.00977647663955192,0.015410047104865,0.0214204422223516,0.0283525860547896,0.0366649961171355,0.0462359853419362,0.0563544045495392,0.0658236492191317,0.0724815331980452,0.0736546066137249,0.0658261192156692,0.0439717787341889,0.0140209492024847,0.00678304874565507,0.000161570551534692,0.000317363186440692,-0.084707686119242,-0.0701785074577008,-0.105573055072748,-0.127723603286195,-0.139046537381953,-0.13729308350206,-0.11645281439444,-0.092897570641946,-0.0701929574452559,-0.0495455727845209,-0.0319301946183292,-0.0167217406186214,-0.00314172929822324,0.00951710043181038,0.0217251914833627,0.0339837451892379,0.0472824308410955,0.0625794599542688,0.080230871617606,0.100245493067832,0.122215703226088,0.14480414254885,0.164970595459879,0.176289892818826,0.169988682643125,0.136994635930463,0.0390821683154734,-0.0396132370121261,0.000317153002017108,0.000400811756675404,-0.130329229647832,-0.153371770877746,-0.16962612540132,-0.209355601657877,-0.195783925426539,-0.172764564149766,-0.142611998002128,-0.108960838585292,-0.0791934791654139,-0.0538462823735906,-0.0326288529276484,-0.014449816330251,0.00213370696814872,0.0181931563571588,0.0341793131630709,0.0503749125846917,0.0676028502679134,0.086514761630744,0.107910513295197,0.133109727468639,0.16270207791827,0.195961655509223,0.230177198664112,0.260098179982805,0.274333312475641,0.258308542300943,0.197260462230208,0.0397460754657428,0.000400647043121309,0.000210438666859959,-0.0531228357839722,-0.127966792794064,-0.119671729327644,-0.110504446191865,-0.0958811228944575,-0.0753200949532764,-0.0554459778620257,-0.0369048012923024,-0.0211677631742633,-0.00821392165603018,0.00258733907664766,0.0117957382893693,0.0200611400615551,0.0278859283233345,0.0356403836752811,0.0436311644362413,0.0521871542856883,0.0616926504503873,0.0727800292348618,0.0862073454203798,0.102559910363156,0.122165915137325,0.144393270348924,0.167831952379136,0.19034225886389,0.206606432848771,0.218792706856914,0.213651685297857,0.000210398779347356,-0.000265523883340324,0.140059318852104,0.125005959893531,0.117700826795719,0.108908968568705,0.0966717147390008,0.0861230661409691,0.0761346110814758,0.0675278078400498,0.0601963928588965,0.0539220980501286,0.0485368886722044,0.043807498631218,0.0395741293708587,0.0356936987983272,0.0320343608577976,0.0284582907820877,0.0248462789869522,0.0210777337795829,0.0170296876952529,0.0125706321942677,0.00751086682481089,0.00172108637837904,-0.0048139807082211,-0.0123573806499754,-0.0190050621643511,-0.0257472010228473,-0.0320865681082975,0.0121180891000596,-0.000265497255343516,2.24830242696777e-05,0.323018692339357,0.367327957472987,0.322150665967099,0.28435382088772,0.250820750958723,0.21698163791561,0.185234653006019,0.155605236670985,0.129482109175563,0.106679449993196,0.0869172876133065,0.0696129490668549,0.054072958647569,0.0396188675961465,0.0256262152220735,0.0115442642600486,-0.00325561981589624,-0.0194447238377009,-0.0376828291639352,-0.0585490158763246,-0.0824203432491817,-0.109480264789159,-0.137983131067783,-0.168164347723983,-0.198727015537965,-0.204432093603282,-0.26125685194964,-0.135468307458553,2.2608910355117e-05,0.00227713705126595,-0.0448316095545168,0.136426416418177,0.242543392333504,0.261461947597796,0.25281363666717,0.225063458620892,0.194944317245329,0.163560646290406,0.134377481547442,0.108096854834605,0.0850467962973401,0.0650831415926169,0.0476571286254483,0.0318468378882317,0.0166579323531506,0.00118752904371276,-0.0156348838913623,-0.0346439244620958,-0.0562815171418494,-0.0808971832675875,-0.10829804904436,-0.1387391708616,-0.171785127560108,-0.199564057360872,-0.242394905396862,-0.251236610134906,-0.257145641079666,-0.245159416148022,0.00227732952993045,0.00161852978572475,0.0642343980407851,0.0830301429684493,0.129618313858723,0.13441192609213,0.139514041089121,0.126272507217789,0.111274540551768,0.0941184211351091,0.0772101677243849,0.0615536914872179,0.0476658560984806,0.0356992545778637,0.0253896686903881,0.0161935644658937,0.00742895808602352,-0.00167049764480808,-0.0118467211326947,-0.0235919859526401,-0.0370702195919743,-0.0524533144927154,-0.0698553379625851,-0.0879302493133703,-0.110256356647494,-0.125339952336911,-0.138524862616552,-0.132810972023749,-0.0629771167541072,-0.00828524211259921,0.00161874705590851,-0.0200314718352016,0.0764198569046638,0.0560468520912286,0.0930980892995627,0.0665293908024259,0.060856291431427,0.0520777856742064,0.0442986392210557,0.0371961361536442,0.0303713020729903,0.0241861058423246,0.0187801709935314,0.0142141413673823,0.0103787573417773,0.00701532355437769,0.00378043124482123,0.000320666710933268,-0.0036340150594615,-0.00825401581436053,-0.0136441113648995,-0.0197208765107054,-0.0274016065037974,-0.0353566372476534,-0.0461386168269692,-0.0586730115905661,-0.0668098875144889,-0.080481135937842,-0.0730847587644389,-0.0410062185005193,-0.0200312623714273,-0.104258282906428,0.180424619719825,0.0712219663122093,0.0538180191608568,0.0275959722928233,0.017825611721954,0.014963553277339,0.0131495854776441,0.0117463606356521,0.0102261621713919,0.00857597069530757,0.00693723757772444,0.00537486648344298,0.0039157161197296,0.00251494249300834,0.00108781312652886,-0.000428102940087737,-0.00205470190989248,-0.00378946770013743,-0.0058152902624061,-0.00798985429001,-0.0109475006675477,-0.0147370893677032,-0.0196457049953465,-0.0287657999336188,-0.0437533064604275,-0.0662621529894624,-0.125275157344124,-0.182549820749554,-0.104258098665456,-0.38026523237427,0.379357099789668,0.13721064276146,0.0609664234438715,0.0193436843867544,0.00564715038800383,0.00192461296613856,0.00162247568158189,0.00188455425198714,0.00213698901483212,0.00218375521277878,0.00204305887936805,0.00174234760125583,0.0012995618155229,0.000765990435172705,0.000230699518238528,-0.000222751189354699,-0.000589022357787443,-0.000863276882521805,-0.00117259129181683,-0.00148994662948768,-0.00189599107260427,-0.0027906981147687,-0.00462204031285912,-0.00886917531802444,-0.0207472311331683,-0.0508855979749461,-0.0845535818678865,-0.239351134654142,-0.380265075981223,-1.56294592101987,-1.1601556694039,-0.569326330329829,-0.237651093596601,-0.0998764405577032,-0.0427100552595139,-0.0188570034625148,-0.00874443317026819,-0.00429762434845186,-0.00223744587377465,-0.00122070017242037,-0.00068468619496711,-0.00038283605181139,-0.00019921067129505,-7.3226832568737e-05,3.23627278481411e-05,0.000147456637023401,0.000304159572706818,0.000546226938367394,0.000940779796118574,0.00159514226963802,0.00268365229329524,0.00449540519015803,0.00754174898213249,0.0128448305704828,0.0231007109116796,0.0459604395630159,0.107437923696604,0.328052812169633,2.39383417506527,-1.57562797675217,-1.15672295560108,-0.570103526435851,-0.237837128493195,-0.0999602815796745,-0.0427420620919575,-0.0188717395099269,-0.00875108803064434,-0.00430086901026759,-0.00223914203904704,-0.00122162904088152,-0.000685210707795426,-0.000383131386514747,-0.000199365072152031,-7.32838794366016e-05,3.23875211590382e-05,0.000147570087845007,0.000304392717682891,0.000546641777827569,0.000941486536005242,0.00159632371234844,0.00268561025035778,0.00449862665368833,0.00754706631340849,0.0128539302125892,0.0231179344037947,0.0460049624964559,0.10731081929323,0.330393262134851,2.40170214481507,-0.185549900557682,-0.646478638978487,-0.322539434743902,-0.204052701441586,-0.108096429534232,-0.0537599250689822,-0.0279102645242427,-0.0141111477297557,-0.00724893240424602,-0.00379751191141975,-0.002011731188315,-0.00108371944208912,-0.000584964401370107,-0.000305249731245074,-0.00013249854707516,7.16647449599887e-07,0.000142841943031415,0.000344284678695848,0.000677278516191772,0.00126123575108644,0.00230891846246193,0.00424222290509498,0.00786699603879663,0.0146071187280979,0.0291369246498047,0.0558815624267268,0.125460545416967,0.280624526797308,0.760938402019373,-0.185549829638881,-0.109733603542645,-0.288073839723723,-0.260398892191386,-0.157117888749056,-0.0966998256606012,-0.0540480039987979,-0.0294129980260791,-0.0160473382272145,-0.00867228852429778,-0.00474103997872013,-0.00262440795939192,-0.00146771291036763,-0.000819863026835048,-0.000435279085865897,-0.000180448831169726,2.25790033172382e-05,0.000230962820753105,0.000502247627706498,0.000920820254700337,0.00163415370025249,0.00291377938788998,0.00522101362232566,0.00969773456858689,0.0177626350660473,0.0342178122597369,0.0645294982554342,0.125841420377966,0.188312464560548,0.249318725183376,-0.109733541574601,-0.0450278946799084,-0.11246741591198,-0.118701697202233,-0.095510425655375,-0.0628887288293866,-0.0401165908554502,-0.0241080019979371,-0.0141306657170445,-0.00821747304352051,-0.00474648131524317,-0.00275087002877262,-0.00159993728492511,-0.000918222257311018,-0.000492996184712897,-0.000197675204705908,4.34535126657108e-05,0.000287864580019264,0.000595271733736193,0.00105029637807277,0.00178934496515922,0.00309496231350956,0.00536292927571204,0.00964576953687592,0.0169286458593547,0.0319146181754534,0.0495626439807393,0.103790168351945,0.0924158458011397,0.0975738716643599,-0.0450278453166449,-0.0135089887884502,-0.046751793949362,-0.0564463533092421,-0.0487652450081536,-0.0381098556444275,-0.0261451403045262,-0.0173184446956,-0.0109842279692552,-0.00680554863627976,-0.00418641947100701,-0.00256077186717958,-0.00156513479929071,-0.000940143493801259,-0.000526900310847952,-0.000224561257083961,3.18165628468786e-05,0.000291506992642321,0.000605471726730307,0.00105185236470072,0.00173885436671664,0.00290249201969119,0.00477281364957479,0.00829126126846452,0.0126752454552915,0.0235093805959757,0.0275274867489476,0.0439313474247445,0.0389558483118333,0.0331944680466891,-0.0135089490373344,-0.00306122441238932,-0.0137711571715548,-0.0223638795345509,-0.0226198255521265,-0.0191743485310993,-0.0150478161588112,-0.0107777415763345,-0.00750335007462349,-0.00505784906517781,-0.00336723948949892,-0.00222482948803824,-0.0014569168722949,-0.000928230940528891,-0.000544456319486478,-0.000239823255220272,3.01901597971902e-05,0.000303392517383594,0.000616567944405434,0.00102953187635464,0.00160843424457862,0.00254932665891022,0.00379732044197982,0.00635818404647138,0.00849004925498227,0.014259539535025,0.017276663803952,0.0211985469529918,0.0158740588622893,0.0122292215683552,-0.0030611928461601,-0.00060026253159193,-0.00445339912324954,-0.00794288476683496,-0.00985616179408456,-0.00939997111932277,-0.00816502561098995,-0.00658087187373189,-0.00504996224327005,-0.00376511798896952,-0.00275260843365413,-0.00197711377787686,-0.00139115482017693,-0.000936567082124927,-0.000570458170036357,-0.00025561181518257,3.57727964834221e-05,0.000329608004478048,0.000650625367568647,0.00104111214814556,0.00151013248224249,0.00222205963403991,0.00294606401785252,0.00430812954023287,0.00525577946473669,0.00661148144011287,0.00684138708029286,0.00786645799352543,0.00596291873662945,0.00340004175334437,-0.000600239988091526,1.95291442272425e-05,-0.00257941940268173,-0.00418638063449208,-0.00568317660377173,-0.00597600628801353,-0.0057034176399489,-0.0049998723517855,-0.00418934172314017,-0.00336038172147548,-0.00262023750097578,-0.00197918948458094,-0.0014441936198185,-0.000996265276813965,-0.000615125881094567,-0.000276542635326598,4.20004043083888e-05,0.000365358897685283,0.000710037274917868,0.00111944791863857,0.00157008860322888,0.00218479225654674,0.00279724024410784,0.0036333310073024,0.00434503483659455,0.00514870631287027,0.00499451131739998,0.00458382370675938,0.00329261833317678,0.00140298616270618,1.95342146478125e-05,0.000566628751518599,-0.00344287834884836,-0.0046747332346697,-0.00575883355876475,-0.00600532637197383,-0.00581602482312776,-0.00521984203013204,-0.00445194965968772,-0.00362669021497434,-0.00284357295558887,-0.00214548582489589,-0.00155251031219022,-0.0010580806023763,-0.000645367010886911,-0.000287285623446825,4.42667574422005e-05,0.000386043331197642,0.000755436658609116,0.00121098112327089,0.00171550955964675,0.00237227006473155,0.00303782579463191,0.00382857195648766,0.00442201968844868,0.00508595108518336,0.00519672582146586,0.00501572689244009,0.0045413349091422,0.00328316134714689,0.000566613840306166,0.00059327059323277,-0.00173847738767671,-0.00306407102582518,-0.00409061825960741,-0.00443294187255341,-0.004455801485958,-0.00410429684884365,-0.00359927492735593,-0.00298548088533585,-0.00238102538506042,-0.00181691129256152,-0.00132661062820608,-0.000908101105119209,-0.000555271385350726,-0.000247052009039112,3.67661284573326e-05,0.000332112161158655,0.000648145978567857,0.00103531305112941,0.00146450883924045,0.00198928272375577,0.0025118257768107,0.00311951213287903,0.00355652737284543,0.00390625519099769,0.00406095445695594,0.00397283099831452,0.00362087331361659,0.00347114212063055,0.000593244001277333,0.000449120690922311,-0.0014596731580951,-0.00157181978415059,-0.00250188602960601,-0.00271422763485637,-0.00288466993173764,-0.00271217205226809,-0.00247164879961787,-0.00210503910926527,-0.00171859791936301,-0.00132647088806839,-0.000974910100177018,-0.000668158698689593,-0.000408183761403311,-0.00018041825774942,2.85358702318863e-05,0.000246725874763072,0.000481712115123651,0.000762827671410922,0.00107005644255469,0.00143142740821892,0.00176790271218169,0.00210791305136745,0.00237808192269866,0.00257561357412967,0.00261540184270324,0.00261472620878971,0.00201780782311691,0.00194523903733013,0.000449086108544837,0.000294656439217245,-0.000874793352119468,-0.000581730600307281,-0.00141147942134706,-0.00152345992431624,-0.00181590259502583,-0.00172525925840422,-0.0016187982507302,-0.00138697296131537,-0.00116283324725382,-0.000916874668880263,-0.000685530129682895,-0.000475009666394107,-0.000292010900385504,-0.00012998155727033,1.92859883162201e-05,0.000174199900234692,0.000340044419574074,0.000534794852197049,0.00074132389744889,0.000971822683502795,0.00118853567259921,0.00137894729204116,0.00149442673265423,0.00156967156607287,0.00147552790733939,0.00144513687619844,0.000962068107725597,0.00102263332910801,0.000294614712744203,0.000172659094460572,-0.00112803411993348,-0.000120172100156692,-0.00104491651821081,-0.000793575745801077,-0.0010864906606018,-0.00101598451710027,-0.0010668231026625,-0.000940131918816879,-0.000796497148265847,-0.000635157448786222,-0.000479568896715366,-0.000336461569922597,-0.000207116092925957,-8.70440545603249e-05,2.74315435625142e-05,0.000148454927267085,0.000277308506638829,0.000422403928159685,0.000572200004670963,0.00072160160537732,0.000851644674590635,0.000965699939888593,0.00102295896297295,0.0010728996267993,0.000960812976925375,0.000900896627296464,0.000509484390484107,0.000684752068089511,0.000172610278070329,9.42391419583153e-05,-0.00210716386980698,-0.00032040512484123,-0.00163451632503493,-0.00109971486308575,-0.00134587847921354,-0.000996777039179677,-0.000920043415421297,-0.000849076547426103,-0.000751818864250923,-0.000624313682250244,-0.000478402313828506,-0.000329963452384414,-0.000194079779687905,-6.45962128395397e-05,5.74436740628326e-05,0.00017946217646914,0.000305301551366205,0.000439328004894053,0.000578598511729353,0.000719441507553374,0.000838032643678198,0.000938903540193131,0.000979527722483657,0.00101844072099649,0.000955732134098179,0.000883035915978409,0.000615206790550695,0.000316636148115429,9.41826591751582e-05,4.98463937173028e-05,-0.00496065036005312,-0.00114633815938788,-0.00200123809400612,-0.000577962170123856,-0.000942698540710855,-0.00108836354345179,-0.00100448792435223,-0.000889722874694399,-0.000763267877133613,-0.000623872338553866,-0.000493237849669807,-0.000337674442545194,-0.000182814817223539,-2.52688597126944e-05,0.000141671729477309,0.000317256305144519,0.000502505162442806,0.000692838584949459,0.000877515831294796,0.00105464700826108,0.00121032289059662,0.00134074069717553,0.00142218637015694,0.00146655103128628,0.00145191501771076,0.00153348532507032,0.00154092114561465,0.00154299304602258,4.97810700042074e-05,3.01895894893224e-05,-0.0109769173792651,-0.00443647507916002,-0.00460911297597914,-0.00318525386377054,-0.0019434256127749,-0.00196844398852423,-0.00207436869347669,-0.00191555895518494,-0.00165454339427525,-0.00122894558712144,-0.000849550337992036,-0.000504912295674096,-0.000178842619350563,0.00011426580103532,0.00040231588049513,0.000696398368311897,0.00100730742669861,0.00134383140326566,0.00169876376061278,0.00205225074405128,0.00236551141272019,0.00260704678594249,0.00268842270939819,0.00268768127610875,0.0025043270947546,0.00239742925189836,0.0029976856000959,0.00233157775609914,3.01516800868529e-05,3.21511079632627e-05,-0.0143321207756046,-0.00342415045685906,0.00175900166750448,-0.00205726128845293,-0.00397938008961365,-0.00427956376484146,-0.00444000081265771,-0.00383429730837288,-0.00327037868668532,-0.00252068399951707,-0.00167501100904365,-0.00093823513551823,-0.00023114972111868,0.00045031092223207,0.00114845286350468,0.00189618905131195,0.00269300692068982,0.00353745777564184,0.00443832046687051,0.00540095699916993,0.00634535992254436,0.00711811882237542,0.00746894132379153,0.00704043060832248,0.00621112191734692,0.00474712503209399,0.00511776447108676,0.00908026439254691,3.20631454009698e-05,6.70478903995851e-05,0.00067425037368822,-0.00717781422231462,-0.00701673122436506,-0.00982733227720325,-0.0161243677185299,-0.0175152103232399,-0.017337929907505,-0.0147031109742927,-0.0111326801934632,-0.00795923093360342,-0.00494681214248104,-0.00236652322688601,-0.00016215440240097,0.00178935413697345,0.00359705270443403,0.00544151128039447,0.00751607490838798,0.00994602683527937,0.0127552050677162,0.0158759745850919,0.0190870514888434,0.0218541236649867,0.0234363936519738,0.0228303225757096,0.0185557509925838,0.0123438875337927,0.00353664235853066,0.00821675888356062,6.69475542074394e-05,0.00016182842995858,0.0554078733568612,0.0308041149055778,-0.0204527896494616,-0.0384829126928079,-0.0503231720421661,-0.0514302654461828,-0.0473459257379804,-0.0414258045110237,-0.0325821698588593,-0.0237178479571604,-0.0155511257193688,-0.00821541679618086,-0.00172475279381571,0.00420379010696638,0.00984034915685713,0.0154692648477052,0.0214662509932094,0.0284009261429682,0.036751597635703,0.0463833235370467,0.0565586525773613,0.0660700497395476,0.0727102179691523,0.0738104726072336,0.0659882342496098,0.0435815484238541,0.0138721135812539,0.00605929910810543,0.000161719817831725,0.000317388955673661,-0.0870424212401358,-0.0677647446083759,-0.105697729206141,-0.128205045766041,-0.139920080729974,-0.138532545000803,-0.117445428068114,-0.0937091609933235,-0.070810706575631,-0.0500037845230548,-0.0322734520262325,-0.0169694403047151,-0.00330248850382616,0.0094466445323586,0.021742714565372,0.0340889298540909,0.0474945456151994,0.0629117308399458,0.0806776351156533,0.100804310187239,0.122889874388463,0.145598640945647,0.165926707840937,0.177343550540574,0.170929096695811,0.138702818821571,0.0376142106376989,-0.041791962614129,0.000317283855073364,0.000400753325638409,-0.140748282559983,-0.157177948987082,-0.171817775925206,-0.211819953050496,-0.196992782956432,-0.173643160906271,-0.143313783614728,-0.109564861964908,-0.0797184568757524,-0.054290119810307,-0.0329863543580549,-0.0147152801429149,0.00196007262652624,0.018104763828494,0.0341847280427866,0.0504968487422778,0.0678382966426597,0.0868366073691745,0.108304283128197,0.133586890812053,0.16328488778971,0.196679851850502,0.230969213725398,0.261131802651776,0.275420240447838,0.25899077189257,0.201291854460759,0.0429316611258339,0.000400670988299098,0.000210414197273483,-0.0510664761854157,-0.131821394231379,-0.119444347321416,-0.110447580772993,-0.0957654618164293,-0.0751859017427479,-0.0554542980270514,-0.0369791919010316,-0.021255111280063,-0.00829383202816029,0.00253554526763115,0.011770335603927,0.0200549116756815,0.0278888633015634,0.035649613612656,0.0436466330062098,0.0522094275430922,0.061734965461716,0.0728495575776655,0.0862922585600746,0.102639619798285,0.122219035020352,0.144375878322871,0.167765703338706,0.190216290445386,0.206387109224556,0.220836919073538,0.216957943024498,0.000210394259272799,-0.000265544811930677,0.139382904693634,0.123973472603465,0.117305683193843,0.109108011866518,0.096604693353091,0.0860912435646997,0.0761259617201863,0.0675168962096055,0.0601936600305637,0.0539161248778178,0.0485302197017554,0.0438009136478033,0.0395684759191166,0.0356888646671068,0.0320325668459344,0.0284566212409317,0.0248429240507871,0.0210757748833311,0.0170268848300545,0.0125710949376228,0.00751691213971801,0.00173144670672991,-0.00476355352556338,-0.0123877862259888,-0.0188805075489829,-0.0261208294111616,-0.0321616810786647,0.0169444102122215,-0.000265531506873668,2.23459098159986e-05,0.326960646411337,0.3716483083255,0.322250470144185,0.285107318052986,0.251324435463435,0.217343375525002,0.185587910424916,0.155854159642151,0.129719016019472,0.106878765857437,0.0870928080963587,0.0697503271629537,0.0541584712552359,0.0396451044643575,0.02559150922068,0.0114462490426328,-0.00340603716014368,-0.0196307188670694,-0.0379017832055389,-0.0588085716966426,-0.0827323004313855,-0.109882975004818,-0.138417508493467,-0.168682425459823,-0.19933183687789,-0.203534298750643,-0.263352175186233,-0.140394916191395,2.24088258421388e-05,0.00227594895557647,-0.0457415877854875,0.135913125969303,0.244468947801926,0.262546703567017,0.254357944250163,0.226077065445246,0.195911813363347,0.164305259375559,0.134996613246226,0.108592034355867,0.0854274702493976,0.0653478931680584,0.0478036275734949,0.0318757438630771,0.0165730413073313,0.000995660684023391,-0.0159243331892694,-0.0350351161973302,-0.0567916811109653,-0.0815579548670227,-0.10911917359186,-0.139735451394211,-0.173036661577509,-0.200647053594344,-0.244504476571383,-0.252928853790312,-0.25891352015616,-0.256542572208028,0.00227604518483942,0.00161994612587018,0.0635798419906406,0.0824101934471328,0.130534114798231,0.134080889026736,0.140360744633379,0.126768554726737,0.111828367073512,0.0945698979321243,0.0775645715048441,0.0618102633660757,0.0478378151671743,0.0358075493026524,0.0254553783226467,0.0162292068579112,0.00743673898197046,-0.00169590034904515,-0.0119233006143581,-0.0237424584337785,-0.0373021271389768,-0.0527683548554136,-0.0702919929717206,-0.08835527266102,-0.111027315077104,-0.125849735559088,-0.13923218070309,-0.133920969778045,-0.0599437295047016,-0.00166675047001304,0.00162005481099433,-0.0200048884204351,0.0792237678421344,0.0549234680363435,0.0968903845813065,0.066526570429825,0.0611455420899211,0.0522787659253483,0.0444063085385184,0.0372995588533647,0.0304413402231305,0.0242348818313242,0.0188114415085388,0.0142370629752525,0.0104021004385532,0.00704814512731953,0.00382504938493368,0.00037109413782162,-0.00358402964178543,-0.00820987113719425,-0.013615240887686,-0.0196740365109349,-0.0274127399883935,-0.0352994821597031,-0.0461429250069696,-0.0589622769639563,-0.0665733338125204,-0.081604069825012,-0.0750672987120748,-0.0383420657385012,-0.0200047835715257,-0.104555639329942,0.182976783408612,0.0601557062191832,0.0532040664796396,0.0274893197607624,0.0174469910818564,0.0149252864737953,0.013122084099582,0.0117591030118072,0.0102596055670732,0.00861797403030265,0.00698243251115105,0.00541740376921982,0.00395002195010449,0.00253330941901675,0.00108443143276742,-0.000455014612495741,-0.00210182961671066,-0.00384265804995887,-0.00588392079745063,-0.00804543757659283,-0.0110227711050931,-0.0148357927886855,-0.0196779824117891,-0.0288615422755524,-0.0441585312718658,-0.0650851926031557,-0.129578661551038,-0.180875155682786,-0.104555547006477,-0.37898957129387,0.429880654228315,0.142308175663732,0.0622549244258231,0.0202255217382843,0.00582955599417408,0.00195544061556833,0.00161936963356075,0.00186063532379432,0.0021145893683455,0.00216625438532943,0.00203136116534684,0.0017346005663064,0.00129338712445008,0.000760455854326398,0.000227851393649435,-0.000216896065493056,-0.00057400760744451,-0.000835256309507018,-0.00114053469607523,-0.00145428344708649,-0.00185158203501304,-0.00276925680591163,-0.0046113334014118,-0.00888834950810276,-0.020721333361997,-0.0529020266573542,-0.0778984495415823,-0.268121370985402,-0.37898949278625,-1.57562800151823,-1.15672295798366,-0.570103526844579,-0.237837128720001,-0.0999602814713281,-0.0427420619748681,-0.0188717394287707,-0.00875108798308279,-0.00430086898429251,-0.00223914202537674,-0.0012216290373501,-0.000685210704186783,-0.000383131384702283,-0.000199365071301439,-7.32838791608374e-05,3.2387520985288e-05,0.000147570087153591,0.000304392716192344,0.000546641774936731,0.000941486530571147,0.00159632370732612,0.00268561023215003,0.00449862662175478,0.00754706626088601,0.0128539301377113,0.0231179343357879,0.0460049626019931,0.107310820222105,0.330393265223194,2.40170217549844],"Archive1108_field3":[0,-0.030922170023372,-0.0314667743888275,-0.0320730972507468,-0.0322200050203616,-0.032253537786799,-0.0322579531948687,-0.0322551775518646,-0.0322521131505503,-0.0322499780265404,-0.0322486931468853,-0.0322479721673657,-0.0322475839369579,-0.0322473839291984,-0.0322472921020216,-0.0322472721777607,-0.032247314218919,-0.0322474354446347,-0.0322476851148491,-0.0322481608366581,-0.032249035765503,-0.0322505803605185,-0.0322531178435456,-0.0322566944525998,-0.0322588524509712,-0.0322530977705754,-0.0321952367212613,-0.0318563899023967,-0.0323022518493034,0,-0.0216757997048075,-0.0231533467963149,-0.0248415267633013,-0.0252625112446653,-0.0254609442055742,-0.0255259778730757,-0.0255462118555304,-0.0255524482973081,-0.0255540200389488,-0.0255544401316892,-0.0255546544535016,-0.025554835057161,-0.0255550037253461,-0.025555129409474,-0.0255551780460395,-0.0255551287298442,-0.0255549844958651,-0.0255547653453159,-0.0255545048528752,-0.0255542632028176,-0.0255541187214498,-0.025554197172978,-0.0255544074008791,-0.0255541477265452,-0.0255491187057009,-0.0255205756210358,-0.0254663902787214,-0.0247612104803515,-0.0246259007376237,-0.0216757997048999,-0.0201992488378624,-0.0209358342282652,-0.0213520539671474,-0.0216837601623703,-0.0218020859094193,-0.0218657811373902,-0.0218908599559004,-0.0219014316365627,-0.0219057852155191,-0.0219073943206085,-0.0219079397129988,-0.0219080641499106,-0.0219080313382803,-0.0219079445261349,-0.0219078481483837,-0.0219077666098624,-0.0219077079647629,-0.0219076670439882,-0.0219076296335417,-0.0219075765681598,-0.0219074472415291,-0.0219071347556263,-0.0219060331215642,-0.0219023125186248,-0.0218920928814305,-0.0218386019652551,-0.0217944251369897,-0.0213197069688394,-0.0206335847941325,-0.0201992488451831,-0.0186982894434183,-0.0187972616574375,-0.0189789078568646,-0.0190897310281447,-0.0191732710506549,-0.0192116172138806,-0.0192338473814848,-0.0192441309453641,-0.0192489863849889,-0.019251094384787,-0.019251895737706,-0.0192521177813104,-0.0192521031024913,-0.019252025288299,-0.0192519732106789,-0.0192519838103802,-0.0192520625877251,-0.0192521905824668,-0.0192523174958573,-0.0192523627190129,-0.0192521279028583,-0.0192512914852031,-0.0192488134300951,-0.0192422726284499,-0.0192301419060239,-0.019188842258364,-0.0191218211077859,-0.0190699469147111,-0.0189404442386696,-0.018698289445277,-0.0174836738694457,-0.0175002196091434,-0.017561600470861,-0.0176133866001848,-0.0176480368357491,-0.0176731345613209,-0.0176866368124257,-0.0176948259827141,-0.0176991896196825,-0.0177015103321165,-0.0177026562138204,-0.0177031566346928,-0.0177033276968228,-0.0177033476965726,-0.0177033251161311,-0.0177033178716145,-0.0177033397793389,-0.0177033704625646,-0.0177033437905601,-0.0177031542463226,-0.0177025407220601,-0.0177012253122219,-0.0176982273969001,-0.0176921110942499,-0.0176801842771394,-0.017661273525866,-0.0176160714098561,-0.0175516157216197,-0.0175205162533626,-0.0174836738704794,-0.0167197885284062,-0.0167114284761647,-0.0167299576297812,-0.0167508232318936,-0.0167691414200471,-0.016781963161688,-0.0167911688111904,-0.0167967160631347,-0.0168003026547587,-0.0168024498754715,-0.0168037318408702,-0.0168044640735226,-0.0168048667744381,-0.0168050766596624,-0.016805170400389,-0.0168051903228974,-0.0168051496794184,-0.0168050300732022,-0.016804771291021,-0.0168043133495099,-0.0168033925838569,-0.0168019073511772,-0.016799053665759,-0.0167947982152184,-0.0167862851782311,-0.01677593739228,-0.0167699848096515,-0.01675490163243,-0.016728220870138,-0.0167197885290347,-0.0163441770164091,-0.016341559246639,-0.0163553937576374,-0.0163660545593863,-0.0163770444399738,-0.0163858866245767,-0.0163921567598221,-0.0163964935877541,-0.0163993505542551,-0.0164013270254866,-0.0164026759886798,-0.0164036134939331,-0.016404262641681,-0.0164046952457506,-0.0164049372687911,-0.016404983818219,-0.016404834234326,-0.0164045083447544,-0.0164039812889217,-0.0164032518514199,-0.0164021539660871,-0.0164006167155381,-0.0163981578397603,-0.0163945404058435,-0.0163892624530738,-0.0163791399341198,-0.0163679326937664,-0.0163587239854855,-0.0163487778289207,-0.0163441770167502,-0.0162214187917784,-0.0162173976209077,-0.0162288608145558,-0.0162373588277096,-0.0162455690901687,-0.0162525940136438,-0.0162578249937365,-0.0162613741271072,-0.016263880265116,-0.0162656873528874,-0.016267045461116,-0.0162680804392352,-0.0162688796482655,-0.0162694636439346,-0.0162698121463636,-0.0162698905088119,-0.0162696770610794,-0.0162692136758904,-0.0162685375330439,-0.016267656027485,-0.0162665085546872,-0.0162649878328016,-0.0162630586836954,-0.0162599461045264,-0.0162561409265584,-0.0162510647370016,-0.0162443960265175,-0.0162348217420966,-0.0162222275032864,-0.0162214187918642,-0.016266657594737,-0.0162632820936381,-0.016272942054094,-0.0162798410485442,-0.0162868322407222,-0.016292637511011,-0.0162971389274035,-0.0163003163441565,-0.0163025860344249,-0.0163042921538253,-0.0163055948460578,-0.0163066094769064,-0.0163073990389834,-0.0163079891687873,-0.0163083477402173,-0.0163084347317998,-0.0163082377186623,-0.0163077795806968,-0.0163071083511582,-0.0163062249877782,-0.0163051250429348,-0.0163035937888299,-0.0163017843651846,-0.0162991077059183,-0.0162951373243723,-0.0162894693183118,-0.0162837342008964,-0.0162768318197382,-0.0162658314389217,-0.0162666575944393,-0.0165305465505673,-0.0165225811577932,-0.0165322420364061,-0.0165367724546182,-0.0165417053135459,-0.0165458345965191,-0.0165491306813526,-0.0165516208370432,-0.0165534825264988,-0.0165548839185468,-0.016555940660781,-0.016556732965401,-0.0165573128301379,-0.0165577161439243,-0.016557952092467,-0.0165580085168433,-0.0165578863993226,-0.0165575931078742,-0.0165571367934687,-0.0165564672598748,-0.016555625864261,-0.0165544398633751,-0.0165529349572147,-0.0165509960985681,-0.0165488008949161,-0.0165453239495756,-0.0165405798444434,-0.0165349559795788,-0.016524578904962,-0.0165305465502697,-0.0171672838137448,-0.0171567557644437,-0.0171671494888876,-0.0171698234364743,-0.0171728403212016,-0.0171749795491985,-0.0171767959146629,-0.0171783058630444,-0.017179553141252,-0.0171805270854479,-0.0171812239647243,-0.017181692701094,-0.0171819826852081,-0.0171821467656592,-0.0171822298644264,-0.0171822594782638,-0.0171822367205135,-0.0171821353440812,-0.0171819407805246,-0.0171815711807569,-0.0171810287055816,-0.01718025014127,-0.0171792786077802,-0.0171779061405471,-0.0171763355325125,-0.017174439398335,-0.0171717263233544,-0.0171680487188727,-0.0171587861242805,-0.0171672838131261,-0.0183885897962106,-0.0183800298403452,-0.0183937687039247,-0.0183955558939393,-0.0183976581840321,-0.0183988129707254,-0.018399850381603,-0.0184006868937635,-0.0184013599245641,-0.0184019054106692,-0.0184022983114169,-0.0184025543705005,-0.0184026955387784,-0.0184027643791177,-0.0184027970467109,-0.0184028181456464,-0.0184028385864612,-0.0184028295035535,-0.0184027742859372,-0.0184026277165352,-0.0184023795725584,-0.0184019890932216,-0.0184015556948181,-0.0184010520320081,-0.0184003827712244,-0.0183993184518465,-0.0183973010490251,-0.0183941216496603,-0.0183815957941669,-0.0183885897957646,-0.0204486637923085,-0.0204397738520649,-0.0204593351798416,-0.0204608584612839,-0.020462660816655,-0.0204627064415791,-0.0204628476004283,-0.0204630758510189,-0.0204632501446785,-0.0204633586069439,-0.020463383926848,-0.0204633666953056,-0.0204633328246761,-0.0204633009408334,-0.0204632884259775,-0.0204632952974437,-0.0204633211075749,-0.0204633539900829,-0.0204633838397899,-0.0204633940362892,-0.0204633971301834,-0.020463366957798,-0.0204632971202723,-0.0204631729579519,-0.0204629687743055,-0.020462395379434,-0.0204606887413919,-0.0204575013211355,-0.020440716697604,-0.0204486637920758,-0.0237042072902368,-0.0236910154930425,-0.0237186735416953,-0.0237193406017678,-0.0237220358646124,-0.0237224597693679,-0.0237222087296149,-0.0237217790031088,-0.0237213818665041,-0.0237210944433822,-0.0237208832584675,-0.0237207101366855,-0.023720584145059,-0.0237205016800731,-0.0237204594265357,-0.0237204640465705,-0.0237205227691094,-0.0237206493960438,-0.0237208649213449,-0.0237211701244606,-0.023721567819887,-0.0237220405173682,-0.0237225697902867,-0.0237230596962813,-0.0237233989136392,-0.0237233725356373,-0.0237217499959589,-0.0237187885984968,-0.0236954021138561,-0.0237042072899081,-0.0287503667020691,-0.0287229588082754,-0.0287625185066373,-0.0287598432378655,-0.0287594042902431,-0.0287579390300759,-0.0287571257462365,-0.0287561786046051,-0.0287550731776512,-0.0287538979766925,-0.0287529071191495,-0.0287521548994604,-0.0287516271716767,-0.02875131522728,-0.0287511659317468,-0.0287511415629523,-0.0287512257508282,-0.0287514217198075,-0.0287517680633883,-0.0287523195855405,-0.0287531163449009,-0.0287541446393234,-0.0287553276539237,-0.0287565856207323,-0.0287576997706705,-0.0287584243967606,-0.0287574824654357,-0.0287550493655356,-0.0287249691432998,-0.0287503667014786,-0.0366322913459352,-0.0365651717086578,-0.0366170470750791,-0.0366177489290051,-0.0366225011202755,-0.0366215911808144,-0.0366202080410728,-0.0366187101882997,-0.0366176611210348,-0.0366167030037202,-0.0366157344437651,-0.0366149308104311,-0.0366142769871167,-0.0366138075164498,-0.0366135419734484,-0.0366134922020152,-0.0366136931042012,-0.0366141733980452,-0.0366149335285146,-0.0366159472873361,-0.0366172114845077,-0.0366187533604034,-0.036620597959068,-0.0366225642075438,-0.0366245552294198,-0.0366259937168255,-0.0366248952234582,-0.0366247937734908,-0.0365809695918998,-0.0366322913454248,-0.0491378021970517,-0.048982165888454,-0.0490369542000241,-0.0490245772403423,-0.0490285044461464,-0.0490297335327097,-0.0490296095801163,-0.0490274680252629,-0.0490247844237434,-0.049023004421042,-0.0490216813445087,-0.0490207607512855,-0.0490201435196117,-0.0490197380392721,-0.0490195405590382,-0.0490195231528494,-0.0490196649093515,-0.0490199639716053,-0.0490204633017334,-0.0490211905868011,-0.0490221076251244,-0.0490231939357391,-0.0490245287187893,-0.0490262112800616,-0.0490274725830796,-0.0490285596703155,-0.0490249629014102,-0.04902463546369,-0.048974458039397,-0.0491378021953928,-0.0689318760192382,-0.0686189064429663,-0.0687217988585767,-0.0687585209862576,-0.0687790903807451,-0.0687867163094874,-0.0687900536635989,-0.0687945625962634,-0.0687966945397768,-0.0687983310356708,-0.0687999476079062,-0.0688011637926002,-0.0688018597362403,-0.0688019122768488,-0.0688015715715449,-0.0688012980534172,-0.068801488820279,-0.0688020838359867,-0.0688025843048325,-0.0688026300699438,-0.0688023491367616,-0.0688021539908215,-0.0688024144967139,-0.0688032787720048,-0.0688042797110498,-0.0688015605273371,-0.06879146288476,-0.0687797971690092,-0.0686847956053986,-0.0689318760170261,-0.0982972227079592,-0.0980344338178065,-0.0980489752272408,-0.0980927379857724,-0.0981065764505325,-0.0981141102502357,-0.0980989732865398,-0.0980875968560393,-0.0980837112215894,-0.0980843296139756,-0.0980886389443192,-0.0980944959906221,-0.0981006841648192,-0.0981062272909242,-0.0981102622150766,-0.0981120860695379,-0.0981116117834013,-0.0981099732879381,-0.0981081463810178,-0.0981061428561408,-0.0981044206375681,-0.0981043523523765,-0.0981072418539044,-0.0981129630780733,-0.0981197704372727,-0.098124998114519,-0.0981005032630541,-0.0980757570332304,-0.0979305572428657,-0.0982972227074072,-0.133872302375599,-0.135092961746483,-0.135347732055793,-0.135476764582996,-0.135443474676931,-0.13543608733835,-0.135420160737462,-0.135384557718131,-0.135352376069395,-0.135327304319712,-0.135311805015993,-0.135305201149201,-0.135305118185959,-0.135309670272112,-0.135317430074533,-0.135327218533073,-0.135336815632131,-0.135343582364146,-0.135349570404288,-0.135362064625729,-0.135387065554068,-0.135426670678587,-0.135481104412787,-0.135549320202805,-0.135622909203774,-0.135699404622262,-0.135743956979783,-0.135651796591388,-0.135375412420053,-0.133872302386629,-0.161050951059551,-0.162118570408028,-0.162077444049908,-0.162161926432389,-0.162022700994547,-0.161716713672017,-0.16143692197523,-0.161207967520828,-0.161034978798406,-0.160909916541543,-0.160819192862527,-0.160754000393613,-0.160707756778421,-0.160677176426308,-0.160661836108581,-0.160662064534926,-0.160676986439713,-0.160707156199211,-0.160755193754406,-0.16082319203883,-0.160914632930261,-0.161036211302799,-0.161195085835923,-0.161401481413804,-0.161658687048119,-0.161955040619508,-0.162328422381099,-0.162549734708847,-0.162494323678926,-0.161050951083352,-0.168885521245875,-0.168482590569183,-0.167908590172434,-0.16743480851572,-0.167014146111783,-0.166646449220861,-0.166340894769603,-0.166092585981646,-0.165895494240116,-0.165741619102537,-0.165623380328397,-0.165534880764626,-0.165471671555425,-0.165430781128034,-0.165410363472928,-0.165409566537261,-0.165428468515426,-0.165467841492772,-0.165529135555005,-0.165615189202036,-0.16573043954679,-0.16588074174968,-0.166073265838827,-0.166315025773247,-0.166611446514905,-0.166965104553286,-0.167366103664061,-0.167807590587437,-0.168327019023451,-0.168885521238669,-0.168966037893555,-0.168436427699708,-0.167890678125473,-0.16743522372309,-0.167021605975909,-0.1666578992199,-0.166352436421342,-0.166103322332084,-0.165905143633792,-0.165750123510678,-0.165630927705852,-0.165541635845057,-0.165477831771276,-0.165436538540575,-0.165415910545087,-0.165415046083134,-0.165433918504999,-0.165473307320947,-0.165534798310642,-0.165621216885648,-0.165736927007251,-0.165887759482056,-0.166080715533439,-0.166322713286602,-0.166619105743079,-0.16697110587059,-0.167372093439821,-0.1678175334888,-0.168384594045998,-0.168966037908629,-0.167067424522229,-0.166778104530125,-0.16634038971974,-0.165911118038785,-0.165512943911813,-0.165182833392516,-0.16488892966224,-0.164653183993997,-0.164461661503201,-0.164311443309194,-0.164196347762114,-0.164110650210814,-0.164050364750447,-0.164011809168775,-0.163992588407725,-0.163991428666058,-0.164008228294227,-0.164043606307172,-0.164099974002572,-0.16418073505178,-0.164290098868103,-0.164433228891338,-0.164616032692842,-0.164842957159706,-0.165118134861576,-0.165447773987894,-0.165813762531975,-0.166356299290966,-0.16696927903055,-0.167067424509991,-0.149653033931115,-0.151988688959932,-0.151969093258822,-0.151853656850839,-0.151622444359172,-0.151437923229336,-0.151273448177825,-0.151132560704278,-0.151020319710626,-0.150932917548418,-0.150870015675468,-0.150827274548504,-0.150799967573478,-0.150782810273016,-0.150772212824474,-0.150766950508387,-0.150766828629738,-0.150773852909939,-0.150792585292903,-0.150826768730357,-0.15087857690899,-0.150949597077205,-0.151041931672744,-0.151161401406957,-0.151306685371323,-0.151501165860682,-0.151711885416446,-0.151804284924294,-0.15177615357065,-0.149653033910603,-0.115879824471651,-0.116066730978146,-0.116130121304103,-0.116195265483605,-0.116218505793433,-0.116198848302852,-0.11617837445474,-0.116155236463463,-0.116133319300988,-0.11611666684566,-0.116105450460846,-0.116099099591704,-0.116095571413777,-0.116092626226845,-0.116088386688574,-0.116082125597912,-0.116074550690845,-0.116066977370183,-0.116060463915785,-0.116055603409841,-0.116052263170556,-0.116050370775937,-0.116049236802226,-0.116051714700021,-0.116059705417999,-0.116072319900829,-0.116118942651936,-0.116065735560074,-0.116055670247109,-0.115879824468584,-0.0820694458018533,-0.0820056075427021,-0.0820919211207748,-0.082022315572796,-0.0820338184064937,-0.0820541386114775,-0.0820415485522615,-0.0820380118722385,-0.0820330196261796,-0.0820291119822959,-0.0820255119191919,-0.0820219831159291,-0.0820186310377523,-0.0820157410294126,-0.0820136409867496,-0.082012550292805,-0.0820125779067116,-0.0820135898398439,-0.0820151354223951,-0.0820169460352464,-0.0820190713370238,-0.0820223018825892,-0.082026548623254,-0.0820310636505449,-0.0820325602627211,-0.0820145888770822,-0.0819639300044854,-0.0818716957846444,-0.0817282447335636,-0.0820694458043553,-0.0567898070107916,-0.0567938302963615,-0.0573462734234353,-0.0577622572672953,-0.0576768589204148,-0.0577168852985154,-0.0577112684030087,-0.0577097593265464,-0.0577089881745889,-0.0577094197138574,-0.0577103959641623,-0.0577112507927183,-0.0577116081475994,-0.0577115283724219,-0.0577113778124425,-0.057711427449112,-0.0577114419995822,-0.0577108643034472,-0.0577092950956507,-0.0577068546338564,-0.0577039004552182,-0.0577010112802038,-0.0576989031016047,-0.0576957328334771,-0.0576917334693973,-0.0576685480049529,-0.0576280876601855,-0.057453368819773,-0.0572213030665619,-0.05678980700819,-0.040545486788427,-0.0430198599468084,-0.0410498382754326,-0.0416136405945784,-0.04152324287935,-0.0415024762982402,-0.0414828691337133,-0.0414717752672868,-0.0414666096448799,-0.0414650154257466,-0.0414655074775258,-0.0414672572527972,-0.0414696565068391,-0.0414720698044487,-0.0414737482739,-0.0414740577526462,-0.0414728683782966,-0.0414706812247181,-0.0414682463787087,-0.0414662531049044,-0.0414652395810661,-0.0414654000500755,-0.0414672098418591,-0.0414695780020659,-0.0414700191586003,-0.0414620172364248,-0.041393272841139,-0.0413485352871963,-0.0404096171613714,-0.0405454867678383,0,-0.0309221702433162,-0.0314667745456254,-0.0320730973849685,-0.0322200051589453,-0.0322535379247089,-0.0322579533323853,-0.0322551776891226,-0.0322521132876698,-0.0322499781635954,-0.0322486932153988,-0.0322479723043812,-0.0322475840739693,-0.0322473840662085,-0.0322472922390313,-0.0322472723147704,-0.0322473143559284,-0.0322474355816447,-0.0322476852518586,-0.0322481609736697,-0.0322490358340123,-0.0322505804975565,-0.0322531179806378,-0.032256694589825,-0.032258852588516,-0.0322530979090921,-0.032195236858583,-0.0318563900651561,-0.0323022519743054,0,-0.656860467839549,0.0156754606358601,0.140492061899668,0.139873495189756,0.140742563843008,0.142141583743477,0.142263983858189,0.142260802434241,0.142277301588287,0.142254212406495,0.142234672172,0.142217512734625,0.142203229651211,0.142192986802636,0.142186748844447,0.142184521885202,0.142186657906809,0.142192726760206,0.142201567514002,0.142213080654112,0.142226434602096,0.142238849000382,0.142254827666865,0.142297282772992,0.142137357070228,0.142916413611577,0.141864191564597,0.128851301300368,0.251550378519803,-0.253901316042216,-0.0275063301720884,0.120966269994577,0.0728033712831241,0.0933175973950832,0.0930763211614732,0.0941147086884311,0.0946543515998261,0.094793959103715,0.0948861166550071,0.0949290072887904,0.0949505334074345,0.0949643003901174,0.0949729578231066,0.0949788709402813,0.0949833249357664,0.0949867096452687,0.094988349678331,0.0949884932849817,0.0949866545728161,0.0949812189304158,0.0949707104681292,0.094950072411823,0.0948979740596079,0.0948426246175272,0.0946808683814448,0.0933875264616199,0.0985372561381606,0.0811760839097107,0.0294931069324987,-0.167408600083532,0.00681295087386594,0.017658907430858,0.0420679829473708,0.0397233364296637,0.0439889694039581,0.0446324611163141,0.0451643838909947,0.0454256673058204,0.045549148996756,0.045625849362961,0.0456715969297452,0.0457000024683112,0.0457182287791995,0.0457293130672022,0.0457339612763544,0.0457331439796427,0.0457276118674582,0.0457168894725244,0.0457011097995392,0.0456788813764379,0.0456466188633317,0.0455995372359885,0.0455364444970525,0.0453138604363459,0.0456095240725564,0.0432308730788035,0.0445952631913401,0.0367768562828461,0.101822010633866,0.0397531294313728,0.0284074576379045,0.0243195005381771,0.0248223351512815,0.0286970502788239,0.0289483648965316,0.0299826664825423,0.0302997132554579,0.0305273694238738,0.0306466361116146,0.0307074656353983,0.0307408312953802,0.0307592496360051,0.0307689649124059,0.0307739609646411,0.0307762552093119,0.0307759082458878,0.0307734638546121,0.0307690489814333,0.0307608724933833,0.030747523690541,0.0307281010367541,0.0306817881913895,0.0306654940141696,0.0303490205442599,0.0305473336325526,0.0289309236113807,0.0306680080067048,0.0119423855215532,0.00978930993583744,0.0199656729689691,0.00412643830881291,0.00641302428228059,0.00697780079867745,0.00732648489184762,0.008214895363835,0.00843037569206311,0.00873844785436222,0.00886957485745233,0.00895432899815905,0.00900037617695338,0.0090237182030526,0.00903593696222208,0.00904230982183084,0.00904533322503304,0.00904693482218627,0.00904850643110015,0.00904898323716887,0.00904844542094411,0.0090470895825401,0.00903956100434705,0.00903050080451308,0.00898061994960018,0.00898677184962305,0.00869849326114843,0.00893890860529552,0.00738729254745913,0.0100349156583372,0.0129892467134257,0.0110831323966481,0.00547768120516823,-0.00244082567517134,-0.00333642930657865,-0.0029100314177159,-0.00279583757509296,-0.00266816984884372,-0.00246654596770929,-0.00239274860732976,-0.00230401836302722,-0.00226006690955214,-0.00223111713681617,-0.00221627531110015,-0.00221011094580098,-0.00220883872940517,-0.00220919739536993,-0.00221046773246491,-0.00221102009550643,-0.00220964808835819,-0.00220863983396372,-0.00220785253014496,-0.00221220723178472,-0.0022127623864415,-0.00226025517141008,-0.00223291576142672,-0.00245647763250654,-0.00226323925701098,-0.00273083122057809,-0.00409956815339451,-0.0047993284704541,-0.0031632208775846,-0.0035238999527862,-0.0114111741319797,-0.0113302445563988,-0.0114337962978483,-0.0113654423981035,-0.0113441481390003,-0.0113152504515211,-0.0112749893650968,-0.0112530805300277,-0.0112304016774729,-0.0112182195527529,-0.0112116108836011,-0.0112091519663181,-0.0112098779042812,-0.0112117887033978,-0.0112130394074303,-0.0112132861081531,-0.011211818754264,-0.0112092084778526,-0.0112060966996537,-0.0112103710072754,-0.0112030503345407,-0.0112349419199487,-0.0112084446813302,-0.0112784408766922,-0.0112970591778057,-0.011056810392469,-0.0105776580881467,-0.0109186066109019,-0.0111404804418581,-0.0111655352279607,-0.0155453777444398,-0.0154253434384155,-0.0154648655264334,-0.0154711626902955,-0.0154696571675512,-0.0154680494332471,-0.015466625202756,-0.0154584898499768,-0.015454199047695,-0.0154486832128158,-0.0154457168402814,-0.0154437615980519,-0.0154430394439376,-0.0154431373316884,-0.0154436267006389,-0.0154438569706077,-0.0154436233953546,-0.0154442176274378,-0.0154426067122229,-0.01544760283929,-0.0154438978231569,-0.0154569993798097,-0.015457581255704,-0.0154597362241429,-0.0154890449062465,-0.0156767916916567,-0.015686187005411,-0.0155408451484276,-0.0155066948716095,-0.0154810972050499,-0.0195832514699927,-0.0194706846809342,-0.0195208079336368,-0.0195009681934326,-0.0195016013604685,-0.0194860424661575,-0.0194819791797766,-0.0194777991233902,-0.0194736567827859,-0.0194682905876589,-0.0194625289824604,-0.0194565983882173,-0.0194513035700244,-0.0194472616228927,-0.0194445024350115,-0.0194440243098379,-0.0194454887458052,-0.0194496855743633,-0.0194531496004246,-0.0194604831375591,-0.0194636101424723,-0.0194693168316774,-0.0194700409767662,-0.0194790765625333,-0.0194320079503344,-0.0193981300684392,-0.019434245264149,-0.0194945354962899,-0.0194922033455077,-0.0193675768216719,-0.026367435812696,-0.0263626579504933,-0.0264055212244322,-0.0263450484049978,-0.0263344844575531,-0.0263014829086387,-0.0262806422502885,-0.0262632154517957,-0.0262539413457558,-0.0262443427032385,-0.0262356706572787,-0.0262267522120591,-0.0262179276999032,-0.0262104106189426,-0.0262059766415412,-0.026204802726622,-0.0262070364921322,-0.0262139287020874,-0.0262206712183014,-0.026230113381433,-0.0262377796990682,-0.026249847582729,-0.0262542859648458,-0.026277082521268,-0.0263189023912478,-0.0263507894911355,-0.0263519128125512,-0.0263808704681637,-0.0263799719276482,-0.0263920436185503,-0.0382783773845685,-0.0383322717805046,-0.0384345451889948,-0.0383811727674591,-0.0383785158396177,-0.0383479278313217,-0.0383407264989994,-0.0383272664780706,-0.0383180461403672,-0.0383085086066627,-0.0383008067145799,-0.0382936034266086,-0.0382882029516454,-0.0382833889411882,-0.0382804792605267,-0.0382809257154603,-0.0382825545074898,-0.0382870721332013,-0.0382927167453508,-0.0383002601689563,-0.0383059102062752,-0.0383160553198834,-0.0383248402864311,-0.038330079230597,-0.0383363690327494,-0.038368512353482,-0.0383875179250388,-0.0384310656674337,-0.0383567612147258,-0.038360000833804,-0.0561168612765889,-0.0561238123841097,-0.0562949258518704,-0.0562394756747955,-0.056265727696499,-0.0562274332725445,-0.0562121955703696,-0.0561956069391877,-0.0561887580946059,-0.0561787416375784,-0.0561712620642706,-0.0561638716837876,-0.0561585177017068,-0.056155545041731,-0.0561533292614363,-0.0561527754617092,-0.0561536525942488,-0.0561554664419973,-0.0561578637492017,-0.0561628635444087,-0.0561681764058043,-0.056175341395111,-0.0561850763777681,-0.0562010546322367,-0.0562095696580868,-0.0562171580106565,-0.0562057062799598,-0.0562179605772396,-0.0560956857990772,-0.0559771942737695,-0.0814111578332196,-0.0812564375938087,-0.0815364637546094,-0.0814377611364507,-0.0815104531117827,-0.0815127390150994,-0.0815295097303007,-0.0815108497139765,-0.0815031518270087,-0.0814956463654783,-0.0814921429745455,-0.0814902374398727,-0.0814883469070466,-0.0814872867233702,-0.0814870057963863,-0.0814867144226004,-0.0814871154753873,-0.0814893296459256,-0.0814927744975729,-0.0814985612473871,-0.0815061793142711,-0.0815154704396938,-0.0815226302023269,-0.0815311030136339,-0.0815383398912034,-0.0815535077365422,-0.0815396002592684,-0.0815635277177078,-0.0814373400777757,-0.0813257606819589,-0.118370942052697,-0.11791218096626,-0.118395352737267,-0.118209681778693,-0.118202482146369,-0.11808474222646,-0.11808037990993,-0.118062932769867,-0.118045999205987,-0.118025710069096,-0.118006936870767,-0.117994128156101,-0.117986115858602,-0.11798091737753,-0.117978867653094,-0.117979033946233,-0.11798018335516,-0.117982466856108,-0.117985797149403,-0.117991134666046,-0.117998922267585,-0.118010998646887,-0.11802499378193,-0.118040927986326,-0.118051557545957,-0.118064167246673,-0.118063448606528,-0.118066183606436,-0.117932914009733,-0.117650440740295,-0.175262349712077,-0.174212129758226,-0.174907497455289,-0.174729235159583,-0.175040761825361,-0.175043714025907,-0.175032709076642,-0.175026383126565,-0.175030901911794,-0.175040897757207,-0.175043622521404,-0.175039110590314,-0.175035294302357,-0.175030752308639,-0.175026691724439,-0.175024648450561,-0.175025403892379,-0.175030423269206,-0.175039725867849,-0.175052014503537,-0.175065390071064,-0.175079874230629,-0.175097182538961,-0.17511730230958,-0.175140743417165,-0.175169413418173,-0.175163284231639,-0.17524018039724,-0.175008254687338,-0.175198488303475,-0.266604165987246,-0.264691956427187,-0.26561913639472,-0.264718710640962,-0.26442479423049,-0.264395550374169,-0.264380269952878,-0.264339305266008,-0.264278546980294,-0.264226528795313,-0.264208537770733,-0.264194716573883,-0.264187085845115,-0.264185848434496,-0.264187643103125,-0.264192564427706,-0.264196808775407,-0.264197508143987,-0.264195665875917,-0.264194865139206,-0.264195724971924,-0.264196279221277,-0.264192450478751,-0.264193085000317,-0.264180225862828,-0.264188681468919,-0.264176011129731,-0.264156296794647,-0.264065465228528,-0.263840962644453,-0.414629769216471,-0.411357024520736,-0.412412911784694,-0.414121918175824,-0.414488664199079,-0.414611498004884,-0.414779681075439,-0.414953785499697,-0.415161587686095,-0.415249028791495,-0.415297156306084,-0.415326966478318,-0.415330312748234,-0.415324497010538,-0.415311256941999,-0.415300623523058,-0.415303697600142,-0.415320382569681,-0.415336130515499,-0.415337233558457,-0.415323996697621,-0.415305929527807,-0.41528530538894,-0.415255100266747,-0.415239199114905,-0.415147160611146,-0.415081208305243,-0.415118837019797,-0.414535723959882,-0.418079259994023,-0.635048931622504,-0.637477987663218,-0.630036195764292,-0.629444781240753,-0.629972853940629,-0.629990931102199,-0.629999962041472,-0.629618530607124,-0.629455135768329,-0.629464444217513,-0.629491791167901,-0.629569867010459,-0.629638684193695,-0.629690471930679,-0.629722458719246,-0.629723048099938,-0.629689245184193,-0.629639243187471,-0.629600675026273,-0.629571355246737,-0.629523546821869,-0.629441212207219,-0.629337952628172,-0.629209809007147,-0.629033449622787,-0.628925477099963,-0.628373664877513,-0.628326163892052,-0.627302782320221,-0.628515361334228,-0.870391103610727,-0.903315404165971,-0.908864735633693,-0.909019226609221,-0.909719198544871,-0.909528324742991,-0.91036769446354,-0.911170421733731,-0.911368220772386,-0.911522292858571,-0.911559399927641,-0.911613786289741,-0.911734207507447,-0.911895126089801,-0.912082283013039,-0.912266921879435,-0.912425634883687,-0.912522611643665,-0.912549813507029,-0.912584719246071,-0.912736782203639,-0.913043123018495,-0.913450772786603,-0.913907596129349,-0.914183400266811,-0.914196103126603,-0.913980512078693,-0.911888023332533,-0.911720711905087,-0.908150687967897,-0.925106492682928,-0.939413813978671,-0.946504743961105,-0.946505113710198,-0.946883754519596,-0.945350763006807,-0.941536086754911,-0.938482902696973,-0.935780555150817,-0.933734976005678,-0.932248342253017,-0.931118141691847,-0.93029891158743,-0.929728304297601,-0.929406161523531,-0.92933939088528,-0.929505721461926,-0.929916815439011,-0.930643714453402,-0.93172766393793,-0.933144552017802,-0.93489795965288,-0.937002353666987,-0.939459453378319,-0.942412558030586,-0.945322666861481,-0.948331982865621,-0.952174160443631,-0.942105198066419,-0.925919940422329,-0.573633857818734,-0.526236835612786,-0.51381267570637,-0.50630527109282,-0.49730769028104,-0.492231751083721,-0.488479606492105,-0.48581855801297,-0.483652246112348,-0.481735228338385,-0.480129266508765,-0.478804979006194,-0.477786179356304,-0.477079247133635,-0.476662161074289,-0.476524498486212,-0.476728620940457,-0.477336536628657,-0.478282953993007,-0.479480295243066,-0.480942930303209,-0.482724029290788,-0.484915530003019,-0.487572274185976,-0.490457646063903,-0.494595351436732,-0.497622825835612,-0.501706899068358,-0.521503268943321,-0.510319319600963,-0.186365881079848,-0.183811201053583,-0.172072242548888,-0.169695301959903,-0.168705647772774,-0.169070212399731,-0.169413127853286,-0.169374206638518,-0.169072958866101,-0.168684442732317,-0.168322560525933,-0.16804819850904,-0.167880754285558,-0.167804818539456,-0.167783167654774,-0.167797052893629,-0.167844887376349,-0.167919765369844,-0.168049913162643,-0.168278583939703,-0.168602223459144,-0.168977299963758,-0.169325041705518,-0.169581922398311,-0.169679704053544,-0.169539941644105,-0.169708207551694,-0.169829158206589,-0.186168864858784,-0.214000630356585,-0.160199445016062,-0.182360840694813,-0.171415834252047,-0.168979214327337,-0.169128801976372,-0.168617264175536,-0.168135326574242,-0.167776884719317,-0.167503641200112,-0.167307526125063,-0.167142177028179,-0.167007011072469,-0.166896052586345,-0.166815366353636,-0.166771043911359,-0.166759516042328,-0.166780252424419,-0.166829119426764,-0.166907516393974,-0.167013224341851,-0.167150002233257,-0.167341680537827,-0.167596095253222,-0.167913276804402,-0.16835472071762,-0.168624117311931,-0.169140324563994,-0.169811838510248,-0.162994816530202,-0.183254259141811,-0.0112027575261766,-0.0212492022942639,-0.0480757921327656,-0.0481075887591494,-0.0501552307115189,-0.0515432136203555,-0.052634658029978,-0.0537874834173514,-0.0545176313404328,-0.0552458116653549,-0.0558647470531364,-0.0564280368838852,-0.0569089425403931,-0.0572535968944069,-0.057422746672892,-0.0574092433867145,-0.0572073649492997,-0.0568213101290864,-0.0563076724797054,-0.0557083426129714,-0.0550157517961226,-0.0541943131802575,-0.053210179168152,-0.0520243309098508,-0.0506958143609995,-0.0496183922848549,-0.0479854346167416,-0.0516862730934953,-0.0476441086096928,-0.00999519168613934,0.428224342943951,0.447355534550357,0.454125295452358,0.448749094780144,0.444629622876134,0.440037475006406,0.437180866299303,0.434183858300234,0.431856089636295,0.429928787917198,0.428360525021271,0.42712642959257,0.426222504266987,0.425657606121363,0.425432393367313,0.4255393795372,0.425967962682936,0.426682861744895,0.427674034197944,0.428982004521351,0.430663128726032,0.432803949313601,0.435456210470183,0.43846381979219,0.442465753876656,0.445459003023884,0.452449832882561,0.459543814968128,0.471769721368077,0.503377525471328,0.762955363308187,0.759172886946224,0.757283940562693,0.760494412719518,0.763836465707653,0.761133560692477,0.759870915278343,0.75851567797996,0.757358819933861,0.7564223029447,0.755748512558616,0.755304362725895,0.755035245224121,0.754876087105373,0.754782088517174,0.754729330302775,0.754717991709289,0.754790015244553,0.755010516883246,0.75543001209419,0.756066134437961,0.756872573747078,0.758078053397968,0.75908845540519,0.761191921682853,0.76250211156543,0.763119241971563,0.763958493234281,0.74723068903014,0.704925117138997,0.5972775013323,0.621099624350034,0.62060183341215,0.596411944549403,0.596209264067697,0.596629860798675,0.596210094709484,0.596094531080063,0.595949139597139,0.59585699195226,0.595779146935778,0.595733245068824,0.595700616735405,0.59566177405303,0.595593027264267,0.595485287338992,0.595348183480427,0.595197564514427,0.595043805902917,0.594880507281153,0.594733256148874,0.594474359988974,0.594322853376013,0.594041993570278,0.593672285992071,0.594912165956801,0.59381468895121,0.599047796755316,0.607556857052232,0.59405811008726,0.397056400318921,0.318670136857356,0.392433593259631,0.409609006588939,0.406263234102571,0.407702509814227,0.40788051005145,0.408127699717308,0.408159294092202,0.408142795157189,0.408077621547839,0.407985967624549,0.407889521447484,0.407806751940992,0.407757908865736,0.407760703076666,0.407824395539159,0.407939766806564,0.408089939902256,0.40823989966756,0.408426013426397,0.408601089978113,0.40879787926781,0.409107872058357,0.409231601247236,0.408857390321825,0.411694592759637,0.403435366732175,0.427470486887556,0.426138889286759,0.497005526623655,0.337847044236491,0.25254035082584,0.247073171697676,0.242637496767003,0.242047140842708,0.241470349108852,0.241411597462773,0.241430172982696,0.241471573857713,0.24151180519434,0.241534686266537,0.241539821223397,0.241536556493893,0.241536817053998,0.241543171692506,0.241543862974143,0.241520145353199,0.241470848142909,0.241385642781488,0.24127877562709,0.24116654901993,0.241028315117135,0.240931656201749,0.241046252460423,0.241597867601648,0.239155934614298,0.260915702406356,0.190481060451256,0.397740043772627,0.777272345508078,0.115318401682572,0.140199834060374,0.146840671750747,0.145287877849483,0.146267879528964,0.146546750697044,0.146695901946333,0.146797604147111,0.146884571808209,0.146975251637929,0.147078977595624,0.147187840274138,0.147280059153322,0.147328454094744,0.147318436218039,0.147263010958495,0.147186852703523,0.147119709504628,0.147076317743249,0.147051899169242,0.147054316978324,0.147065296343007,0.14700831842028,0.146631633268995,0.147138780080471,0.147258981718281,0.124642127366765,0.288514148435562,1.17928077212707,-1.11295434548845,0.084907692273638,0.307465975500676,0.313389767125769,0.314376265286639,0.317081638153832,0.317387562776574,0.317347652692429,0.317379396225474,0.317333317884004,0.317292641602189,0.317258244952861,0.317230187108811,0.317209668076244,0.31719655573008,0.317192205366714,0.317195999415962,0.317207091371807,0.317225135459805,0.317246436300369,0.317273248455792,0.317302077030015,0.317320385617135,0.317413460467334,0.317235556537334,0.318047407169779,0.317494835359622,0.295883030507248,0.482124727986133,-0.3765044769067,-0.0129766102708237,0.253171916907525,0.176676054379583,0.213148218521359,0.213851394177989,0.215855222457266,0.216947127270191,0.217240888591056,0.217419137512897,0.217503200477584,0.217544738280574,0.217570419019577,0.217586143052606,0.21759750733083,0.217606154146322,0.217612273306221,0.217616404937933,0.217617233479157,0.217614006590567,0.217605695627489,0.217583194153664,0.217546150124214,0.217460019219026,0.217279156662745,0.21704462174081,0.215013279332323,0.220864978979986,0.197658537890259,0.102485614968184,-0.224895662838985,0.0324046917735289,0.0604833851423644,0.104564785163147,0.102571254375293,0.110642352518392,0.112138081900716,0.113203390450935,0.113732262050442,0.113981741514739,0.114133487141793,0.114224074254964,0.114280829937422,0.114317279021146,0.114338917279804,0.114348973211357,0.114348186790154,0.114337045459746,0.114317151695482,0.114286307114577,0.114243007107638,0.114182650017657,0.114080639671034,0.113968326003047,0.113570433807635,0.113771848987306,0.110192990622564,0.111391669938505,0.0947621900171748,0.197663003244157,0.0887328142065958,0.0736519934251327,0.0668444422713559,0.0692629139106995,0.0765930501731928,0.077475765249813,0.0795198845553311,0.0801977516303566,0.0806590210236453,0.0809033750020005,0.0810295120940173,0.0810988769509761,0.0811367959519089,0.0811578160585184,0.0811689142317803,0.0811726229264235,0.0811720333443509,0.0811667112273942,0.0811554689109106,0.0811384847804804,0.0811089325794847,0.0810689653941413,0.0809788008533208,0.0809057956723711,0.0803984836137842,0.0805362135453702,0.0774790257465589,0.0801576874511229,0.0488639626445841,0.0468296826106237,0.0572447739559289,0.0263955990174857,0.0305052243704855,0.0317227745022847,0.0326651638547852,0.0344376177357326,0.0349448156582978,0.0355709200286408,0.0358478895120518,0.0360218205389885,0.0361156912581756,0.0361643575949759,0.0361905097424254,0.0362032365638775,0.0362105871042226,0.0362150140674866,0.0362169170098629,0.036218362323489,0.0362173945582745,0.0362123792778105,0.0361976907481379,0.0361757956058295,0.0360877345337172,0.0360686689698652,0.0355317824431692,0.035941000561331,0.0331038146212047,0.0372783983327125,0.0407745697357789,0.0386162054002838,0.0291897863405763,0.011476145675855,0.00988329163121214,0.0107662611510972,0.0110378009075301,0.0113526932279554,0.0117755839139346,0.0119461805801711,0.01212930516865,0.0122225064916349,0.0122834698288014,0.0123144303684085,0.0123292516780459,0.0123344027189053,0.012334036468087,0.0123331855102969,0.0123332261601211,0.0123336168339275,0.0123352287097546,0.0123359733241702,0.0123245898872195,0.0123190090779431,0.012229524713282,0.0122693818018088,0.0118340706892267,0.0121388100532904,0.011220561414245,0.00921634744735656,0.00790817453658974,0.0102858987794308,0.00936070053240479,-0.00665185745738882,-0.00651903077413678,-0.00669636072062034,-0.00654362513916896,-0.00648307852064853,-0.00640809138533576,-0.00631877574831217,-0.00626780954379301,-0.00621986928748834,-0.00619271632958381,-0.00617716775217068,-0.00617114478651139,-0.00617056453757788,-0.0061724107909448,-0.00617495888139017,-0.00617483432794176,-0.00617196328218418,-0.00616942536641123,-0.00616469593338394,-0.00617292875085284,-0.00616346111790911,-0.00622634326282725,-0.00617774970066013,-0.00632115243253049,-0.0063300743174712,-0.00602433224114132,-0.00531127228894458,-0.00583782308018829,-0.00607993514190345,-0.00622397509220777,-0.0149414409119868,-0.0146714408220549,-0.0147444395183236,-0.0147450406404137,-0.0147358772733617,-0.0147251542581372,-0.0147160880691776,-0.0146960005501569,-0.0146844858811905,-0.0146716115317486,-0.0146641214587257,-0.014658832508197,-0.0146563764172309,-0.0146555305245782,-0.014655590563634,-0.0146560686333615,-0.014655896996535,-0.0146572582371253,-0.0146559906482561,-0.0146666593389719,-0.0146601553365838,-0.0146902979539547,-0.0146900248080466,-0.0147100002197032,-0.0147617654122054,-0.0150485213755504,-0.0150558291212201,-0.0148755467855724,-0.0148418590153866,-0.0147280927578961,-0.0226037807978359,-0.0223927282961171,-0.0224882018637182,-0.0224389096811243,-0.0224343787842228,-0.0223977385158503,-0.0223847265987105,-0.0223707477430046,-0.0223595408079877,-0.0223470475836273,-0.022333868820476,-0.0223217672747494,-0.0223112476815432,-0.0223024726541856,-0.0222974097966228,-0.0222965994477005,-0.0222988728367353,-0.0223076098832526,-0.0223145487173464,-0.0223296182085533,-0.0223362856591547,-0.0223501339330905,-0.022354480115958,-0.0223705419049826,-0.0223013430257034,-0.0222703673059958,-0.0223236180971631,-0.0224168182355217,-0.0224466029385604,-0.0221747980946129,-0.0359439672774068,-0.0359544392808268,-0.036040619420056,-0.0359174602770966,-0.0358974097167791,-0.0358279515324419,-0.0357850590042719,-0.0357478103606684,-0.0357256472783464,-0.0357056568078268,-0.0356886283445372,-0.0356700270305105,-0.0356542188044667,-0.035641054439003,-0.0356316603698076,-0.0356305803986583,-0.0356349493605885,-0.0356462032343047,-0.0356593194942582,-0.0356776417073283,-0.0356925547735102,-0.0357167242356538,-0.0357298324770032,-0.0357792288579511,-0.0358487418482336,-0.0359078650287415,-0.0359305079123119,-0.0359887789510407,-0.0359853820370406,-0.0359817236225941,-0.0594016537789881,-0.0595267986639327,-0.0597356498252265,-0.0596269680796154,-0.0596280322660602,-0.0595696307548326,-0.059554361571282,-0.0595265567148744,-0.0595073358666578,-0.0594858968447307,-0.0594712656280776,-0.0594582777400803,-0.0594470571418183,-0.0594397355239832,-0.0594354442185903,-0.059434742087469,-0.0594384524136473,-0.0594467037991326,-0.0594554078735425,-0.0594698844754602,-0.0594814755455495,-0.0595026965331845,-0.0595186693086328,-0.0595327922256042,-0.0595540092486659,-0.0596087389566594,-0.0596343073216215,-0.0597254392648689,-0.0595758998493942,-0.0595339650557867,-0.0941649996976402,-0.0941888154845658,-0.0945246175677074,-0.0944134461752333,-0.0944680640506552,-0.094392916542208,-0.0943640390861917,-0.0943283748736842,-0.0943141636550954,-0.0942937470759524,-0.0942771520202528,-0.0942633441011006,-0.0942536813055551,-0.0942468451684815,-0.0942437063859367,-0.0942431064446801,-0.0942432973864339,-0.0942471914371275,-0.0942520072385301,-0.0942613951151828,-0.0942716555137895,-0.0942872972495372,-0.0943093516869907,-0.0943372660037197,-0.0943517651614281,-0.0943728324721409,-0.0943473578900106,-0.0943666735760407,-0.0941448232412948,-0.0938705633670048,-0.143012486542514,-0.1427503270117,-0.143289710570106,-0.14308790198216,-0.143234343698488,-0.143234446691904,-0.143268527422231,-0.14323088581807,-0.14321422084296,-0.143199325502288,-0.143192348170561,-0.143187215214367,-0.143183993958155,-0.143182216972468,-0.143180608102478,-0.143180629585573,-0.14318170190936,-0.143185346333235,-0.143192265420232,-0.143204235678901,-0.143219960405496,-0.143237417339008,-0.143252344694273,-0.143273274031763,-0.143286077723979,-0.143313930551109,-0.14329165751691,-0.143340101383977,-0.143105787172251,-0.142832481593106,-0.214152707119549,-0.213311515634048,-0.214247282881643,-0.213870081160787,-0.213861700551528,-0.21362624794034,-0.213618065384052,-0.213583398844463,-0.213550187500582,-0.213509404702097,-0.213473036315818,-0.213448176121458,-0.213431667211076,-0.213421912945993,-0.21341812050971,-0.213417824860037,-0.213420368703966,-0.213425160358465,-0.213431607871483,-0.213441772098469,-0.213457375753612,-0.213482272809593,-0.213508276000353,-0.213538747432065,-0.213562761034014,-0.213587661496443,-0.213585732968669,-0.213595765061319,-0.213358270223163,-0.212729858235005,-0.323620354274322,-0.321652412562354,-0.322993305704978,-0.322625136529206,-0.323243236430889,-0.323247028915683,-0.3232274875232,-0.323215868875143,-0.323226208371384,-0.323246514099517,-0.323251418821093,-0.323242987907869,-0.323235657155473,-0.323226145050696,-0.323218292958844,-0.323214355130251,-0.323215477836675,-0.323225146459672,-0.323243273531088,-0.323267168212039,-0.323292011680563,-0.32331942229282,-0.323353857648321,-0.323391383077798,-0.323435188917944,-0.323493638365181,-0.323480802921565,-0.323637591430866,-0.323213558612385,-0.323449503948508,-0.499476512468497,-0.495889843861397,-0.497668880897763,-0.495907558525978,-0.495334656916973,-0.495280738745646,-0.495253704425071,-0.495176885790679,-0.495061601664886,-0.494964928936092,-0.494934152169121,-0.494909720616251,-0.494897028917975,-0.494896153089073,-0.494900370383835,-0.494910694890266,-0.494919453703975,-0.494920856234319,-0.494916361980562,-0.494913124554205,-0.494912499456358,-0.494908948698511,-0.49489630660766,-0.494894123073569,-0.494862816591071,-0.494873817125022,-0.49484622551628,-0.494796099366089,-0.494680615969975,-0.494110931490795,-0.784103439200714,-0.77805819987278,-0.779926694104753,-0.783322846819139,-0.784057387642822,-0.78431258681938,-0.7846530481164,-0.785002020362464,-0.78541271407852,-0.785584025111624,-0.785679376568056,-0.785739196015613,-0.785745891752449,-0.785733829508474,-0.785706226824241,-0.78568327824498,-0.78568715181324,-0.785717980812405,-0.785747586105156,-0.785748103034017,-0.785720352432612,-0.785683080584721,-0.785637890029474,-0.785572278703476,-0.785536115456932,-0.785347926302253,-0.785209230150744,-0.785301973541036,-0.784174646481622,-0.790872638294008,-1.20439228646307,-1.21030939018116,-1.19550875235392,-1.19428536183904,-1.19531083655635,-1.19533905390218,-1.19535551130667,-1.19460845551096,-1.19430002446102,-1.19433214451849,-1.19439580649596,-1.19455937110968,-1.19470530317334,-1.19481812828184,-1.19489095366481,-1.19489909611823,-1.19483600559111,-1.194737124139,-1.19465807713135,-1.19459640116684,-1.19449764753524,-1.19433233261892,-1.19412809752688,-1.19387303504506,-1.1935164506906,-1.19330042262824,-1.19218653864634,-1.19204136630278,-1.19017972563996,-1.19225230383796,-1.6396040461343,-1.70506707081374,-1.71652605746003,-1.71681814689606,-1.71816387855547,-1.71775876620039,-1.71940083707995,-1.72094899736442,-1.72128323394387,-1.7215353263599,-1.7215636513082,-1.7216336172182,-1.72184263007502,-1.72214058298339,-1.72249998986313,-1.72286320129355,-1.72318264730336,-1.72338618188914,-1.72345718076333,-1.72355338536138,-1.72389414931842,-1.72454836842815,-1.72540824165133,-1.72636956713359,-1.72697545634477,-1.72705089565594,-1.72672951429758,-1.72270317623171,-1.72226636694933,-1.71459893883371,-1.70301371628335,-1.72826990481802,-1.74155465282257,-1.74135109849775,-1.74205339744589,-1.73890526348364,-1.73124214075922,-1.72514671648688,-1.71976923409466,-1.71569331334388,-1.71272485103062,-1.71046068997499,-1.70881157059294,-1.70765595719218,-1.70699513891594,-1.70684651257661,-1.70716868866612,-1.70798991054099,-1.70945012323703,-1.71161734079975,-1.71443430557008,-1.71790797537054,-1.72206767902905,-1.72692396283732,-1.73276474855618,-1.73856570189853,-1.74448412629087,-1.75241276686683,-1.732762720397,-1.70172010061732,-0.973819181637413,-0.879669320050004,-0.855011868545945,-0.839880141500734,-0.822104688784927,-0.812359522483134,-0.80523199313728,-0.800207481232609,-0.796107635478995,-0.792447687764864,-0.789365837623907,-0.786814088749727,-0.784845210929332,-0.783476301195237,-0.782664743900861,-0.782390620279845,-0.782778880236672,-0.783950890853744,-0.785772919424421,-0.78806842689998,-0.790863088413878,-0.794257998399003,-0.798429251852845,-0.803474674825484,-0.808918519535708,-0.816796917597366,-0.822455414820897,-0.830184506939881,-0.869908980756868,-0.851410021836961,-0.204246948595935,-0.199395065365161,-0.176705818590533,-0.172394634075292,-0.17082575205877,-0.171984349756878,-0.172995774628117,-0.173159380094783,-0.172750474539968,-0.172122415687278,-0.171512054352971,-0.171048605579514,-0.170775985061892,-0.170667519120211,-0.170648586220747,-0.170679809629958,-0.170759019576767,-0.170870399974223,-0.171069983582895,-0.171445241937851,-0.171981854545429,-0.172584497695874,-0.173088187970528,-0.173357921350703,-0.173253973618225,-0.172590419436486,-0.172518791756612,-0.172412649883793,-0.204151951472157,-0.258013276989687,-0.151390030812311,-0.195404158546963,-0.174252920022336,-0.170054279500899,-0.170700911854778,-0.169999544841854,-0.169353446994294,-0.168909780885226,-0.168579341617525,-0.168359789981248,-0.168165680927616,-0.16799852070401,-0.167850865271189,-0.167737504146482,-0.167672790506596,-0.167651362792624,-0.167672650725646,-0.167727018350271,-0.167814665423791,-0.16792841064279,-0.168073050325207,-0.168292437077223,-0.168597033859336,-0.168982417876051,-0.16957150034671,-0.16978442280515,-0.170371884286596,-0.171207177360042,-0.15715579953545,-0.19655056054337,0.140443609881667,0.119903072757428,0.0668610780627149,0.0665833732505662,0.0619334966177679,0.0587659186629341,0.0563982386733683,0.0539203751158723,0.0523046373351362,0.0507423301642022,0.049424310676196,0.0482412233886502,0.0472426903643411,0.0465308910043349,0.0461806990275788,0.0462060914099396,0.0466185551724806,0.0474100431115122,0.048471047854125,0.0497221269932664,0.0511829356098176,0.0529298039014729,0.0550358991375187,0.0575895379881481,0.0604761572962484,0.0629207624180269,0.066428170388343,0.0595061442609793,0.0678995849936044,0.141890947822544,0.992792357528913,1.03141647806023,1.04318691243259,1.0327070899495,1.02508674238636,1.01576190766176,1.00976680139252,1.00369759865546,0.998956660972826,0.995030900382301,0.991848551044962,0.989347114925828,0.987513912498104,0.986366699642014,0.985904821644095,0.986111853354747,0.986967592528315,0.988402588472777,0.990398160412079,0.993037800010091,0.996435577408143,1.00076827832762,1.00613702460661,1.0122475490624,1.02035852623578,1.0265084759159,1.04062593215654,1.05472497973004,1.07940694259452,1.14064077910069,1.62900453161239,1.62516514570738,1.62360368047403,1.627214077541,1.63254611502848,1.62763404749013,1.62507314470068,1.62225447753829,1.6198976491538,1.61797622767564,1.61658506880144,1.61566716769202,1.61510922975943,1.61477782373823,1.61458439711658,1.61448019372173,1.61446536317691,1.61462457093161,1.61508750113223,1.61595523361322,1.61726334963109,1.61892308035968,1.62138406148247,1.62346847401303,1.62773515156256,1.63047409458676,1.63187243822328,1.63385303640481,1.60067178853352,1.51751638007489,1.28039869741089,1.31712762177051,1.31892346202683,1.2785993068892,1.27763625639786,1.27780193034679,1.27704844697336,1.27676379117961,1.27643673308167,1.27623682533615,1.27607401473234,1.27597648894623,1.27591132041988,1.27583483945025,1.27569768859801,1.27548087460665,1.2752021549036,1.27489400307344,1.27458054627031,1.27425202713797,1.27395946088367,1.27345187124896,1.27316501376354,1.272626982993,1.27192557676673,1.27429905003736,1.27234470035513,1.28166285763611,1.2995541328508,1.27191350303033,0.867015760845314,0.729278016591608,0.85031915846304,0.879453055304707,0.874772614940708,0.877739908471564,0.878063552454729,0.878571720863609,0.878642376214195,0.878597503457073,0.878463766269388,0.878275592822447,0.878077361183302,0.877907264228211,0.877804393325443,0.877804427976732,0.87792777285475,0.878157005330407,0.878457731105734,0.878759491871404,0.879133061138099,0.879481813469497,0.879875332476418,0.880485102980196,0.880734888762565,0.880121687992996,0.885035038626909,0.871671968584353,0.911376565141438,0.918443222916819,0.958373091138793,0.696927928929364,0.548898911616123,0.541082709336835,0.530671077697719,0.529498202081353,0.528424263917605,0.528252889439225,0.528297481046984,0.528378551748588,0.528455745343142,0.528499872076859,0.528507547222935,0.528498324930627,0.528497691582007,0.528511610809644,0.528516504978506,0.528473993141909,0.528380190408753,0.528213723583055,0.528004575859529,0.527784717998537,0.527512300063996,0.527333677754367,0.527525505907353,0.5285357254273,0.524728932395838,0.561305301993591,0.44299814252578,0.818662243773101,1.37164492502982,0.29789458385334,0.316466062218495,0.328999173806971,0.327747992038935,0.329162059526332,0.32981279111396,0.33011947052061,0.330326281873032,0.330513862322715,0.330707188340726,0.330926160666522,0.331155275045703,0.331349148914887,0.331451658128765,0.331431782101129,0.331314577497235,0.331150609864133,0.331002050965864,0.330899606186305,0.33083503080526,0.330826098096187,0.330835924044327,0.330699093417723,0.330054718866795,0.330748088744978,0.330714097169791,0.293287433725218,0.590950631372285,2.1388970135272,-1.37212579876779,0.184689603338658,0.474111306289078,0.490051486875994,0.491275640295681,0.495131891561784,0.495605164749979,0.495540261950593,0.495582906752943,0.495511070359659,0.495451758189571,0.495400896396303,0.495358592487343,0.495327998472306,0.495308809241868,0.495301287149728,0.495306392524959,0.495322986390236,0.495348061443239,0.495380644755443,0.495418566410212,0.495457700154308,0.495497608055986,0.495606348868136,0.495427911923781,0.496223675562059,0.496520972085985,0.467646468945092,0.689077521719107,-0.425519631003085,0.031176787860401,0.374652970135158,0.285943624576084,0.334996047330019,0.337025438300938,0.34000864050794,0.341643371537902,0.342084869211348,0.342353169576085,0.342477292678357,0.34253653860982,0.342573582583116,0.342596371559872,0.342612029892164,0.34262430912546,0.342634215180741,0.342640090561259,0.342642207756531,0.342638826153385,0.342626057809918,0.342597757656203,0.342538029176759,0.342412249484761,0.342151280334716,0.341750205400445,0.339181551457427,0.344482826839314,0.319972550984216,0.188604503944154,-0.230842954981829,0.0572229961321556,0.107117401235616,0.167468397529764,0.1672483204391,0.178906190440365,0.181291342654846,0.182897725143237,0.183694059130483,0.184066465977966,0.184293726093667,0.184429634954013,0.184514087683397,0.184568560841911,0.184602032262173,0.184617078309422,0.184616176410551,0.184601088023714,0.184571157048951,0.184526346185218,0.184462233464097,0.184371487926253,0.184226653707426,0.184042729609983,0.183483587963987,0.183591541028293,0.178922479642823,0.179824187537069,0.1532580707131,0.281296362011657,0.133409914351449,0.118365746232479,0.109752453577587,0.114767784531335,0.125387535801746,0.127034161301952,0.130086044850054,0.131129845446438,0.13182770596832,0.132200112392319,0.132392374779381,0.132498862215599,0.132558483837499,0.132590844887681,0.132607694801123,0.132614543819061,0.132612569904794,0.132603211227876,0.132586329816113,0.132558102928877,0.132512788447116,0.132448538713111,0.132313330783211,0.132195128082314,0.131464753536791,0.131567535909485,0.127041379212517,0.130531833301158,0.0894562343594833,0.0876789499672231,0.0949824307608979,0.0495623097880396,0.0553235220213708,0.0572686486963086,0.0588909489995344,0.061565854025352,0.06238799638177,0.0633404780153117,0.0637674213108194,0.0640324301799437,0.0641766359390434,0.0642506891988231,0.0642904943173702,0.0643117775394466,0.064322927220734,0.0643291635840126,0.0643336956790312,0.0643346298263608,0.0643316943726583,0.0643247796465579,0.0643009346935385,0.0642667320494242,0.0641344992407163,0.0641017897963176,0.0633032786910915,0.0638843707692312,0.0598177894638783,0.0649626176623976,0.0684895777105108,0.066530211190633,0.0534580051798327,0.0256686654146186,0.0234082118798978,0.024788751235507,0.0252517557159991,0.0257779634417229,0.0264378870404085,0.0267146933827977,0.0269975145510445,0.0271414012988612,0.0272346401665886,0.0272843198322369,0.0273080213083953,0.0273168997138046,0.0273196728415803,0.027318834577021,0.0273181620527569,0.0273202819823849,0.0273203935525212,0.0273185419503993,0.0273020890108003,0.0272915005609433,0.0271531238498594,0.0272119920015272,0.0265593550956335,0.0269370678573554,0.0256545312036706,0.0231161869825374,0.0210874879145972,0.0242078871409444,0.0225653994593504,-0.00191313261784399,-0.00175465117956422,-0.00200069085396847,-0.00175138864554414,-0.00164243472910338,-0.00151331481069057,-0.00137126165678169,-0.00128930277158316,-0.00121438735554251,-0.00117199849814153,-0.00114757566689117,-0.0011359765363802,-0.00113395782061309,-0.0011360270202865,-0.00113763666034104,-0.0011380015716949,-0.00113545484455168,-0.00113123967905375,-0.00112649570292726,-0.00114210274083433,-0.00112638345111173,-0.00122303572098932,-0.00115828047649288,-0.00135923290737039,-0.00138751608158479,-0.00106480069506498,-8.22521613525069e-05,-0.000825765917706996,-0.00110938387878798,-0.00135917696211875,-0.0143950795082025,-0.0139271936749311,-0.014047750012165,-0.0140391809076527,-0.0140256707515442,-0.0140047523309605,-0.0139884951739535,-0.01395638277408,-0.0139376345200339,-0.0139174321588888,-0.0139053834408135,-0.0138968308948016,-0.0138921546369583,-0.0138901887397324,-0.013889934652765,-0.0138899914684031,-0.0138899553738465,-0.0138930759653957,-0.0138909455167178,-0.0139079829176171,-0.0139007097441342,-0.0139429661395605,-0.0139487849991761,-0.0139853333215161,-0.0140358284279306,-0.0144401125905038,-0.0144581911829463,-0.0142046112951472,-0.0141863807947508,-0.0139536211682972,-0.0254323624073038,-0.0251221678412799,-0.0252635203773074,-0.0251818681493993,-0.025173952458054,-0.0251154674378302,-0.0250916689399491,-0.025067660677318,-0.0250478549406356,-0.0250271829411543,-0.025007660947369,-0.0249890125190665,-0.0249730703028735,-0.0249611379062266,-0.0249532288193638,-0.0249517921594366,-0.0249559207792482,-0.0249679138131156,-0.0249782162897628,-0.0250006318813716,-0.0250116743137092,-0.0250336818162322,-0.0250384950386544,-0.0250728330859406,-0.0249836697237429,-0.024933925758524,-0.0250188533792376,-0.0251551574152498,-0.0252091946883006,-0.0247957327477819,-0.0456017590232806,-0.0456700899301688,-0.0457937757268719,-0.0456142832051649,-0.0455844910206544,-0.0454821099954306,-0.0454164663650635,-0.0453575038093477,-0.04532380596944,-0.0452920988181427,-0.0452658830540198,-0.0452406551698052,-0.0452175168401693,-0.0451986202630381,-0.0451876891376101,-0.0451850988254575,-0.0451903938053013,-0.0452075276554229,-0.0452244665281721,-0.0452502854570369,-0.0452724668691759,-0.045310826498493,-0.0453324145429882,-0.0454017490648666,-0.0455096988812339,-0.0456002728227161,-0.0456238174465588,-0.0457136897940598,-0.0457057333878525,-0.0456905155071351,-0.0811264040665001,-0.0813431277880175,-0.0816545247734047,-0.0814964808152204,-0.0815040832644018,-0.0814183155276291,-0.0813987138868574,-0.0813550638534418,-0.0813241779955972,-0.0812928308399967,-0.0812698918486932,-0.0812501923408605,-0.0812363944612629,-0.0812253611936872,-0.0812189821569337,-0.0812200816858808,-0.0812236670367142,-0.0812343766067105,-0.0812477281606198,-0.0812681925039567,-0.0812848501817416,-0.0813159829080365,-0.0813442110563426,-0.0813675357609825,-0.0813914910113506,-0.0814737640674882,-0.0815108218017104,-0.0816365432460786,-0.08140487375958,-0.0813142381134697,-0.133167450440191,-0.133235505638946,-0.133728629870141,-0.133560851071511,-0.133647446716319,-0.133533465132281,-0.133490205454029,-0.133437260959652,-0.133414422220659,-0.133382292231607,-0.133358512525221,-0.133336751951543,-0.133321693696343,-0.133313302755644,-0.133307643240768,-0.133306227103889,-0.133307936825708,-0.13331279575395,-0.13331944009735,-0.133334078353715,-0.13335066887561,-0.133374232019542,-0.133404856411289,-0.133450347093926,-0.133474302734087,-0.133499246982432,-0.133460940211752,-0.133495362765513,-0.133175257966564,-0.132717445074951,-0.205900460162819,-0.205574176755614,-0.206366733978539,-0.206060902311306,-0.206280830168082,-0.20627917161555,-0.206329716430833,-0.206271785288078,-0.20624782792846,-0.206224509485681,-0.206213257109944,-0.206206633180075,-0.206200874573301,-0.206197666131434,-0.206196424203571,-0.206195665258644,-0.206196901723257,-0.206203270663712,-0.206213662930819,-0.206231288885818,-0.206254476848234,-0.206282623176228,-0.206305685910352,-0.206333749452761,-0.206355606426146,-0.206402082967762,-0.206364837422436,-0.206437305503492,-0.206104436572984,-0.205619856713906,-0.311700167597183,-0.310546364210195,-0.311918455199352,-0.311353063680919,-0.311344440544416,-0.310990207189138,-0.310981111615807,-0.310928892151034,-0.31087902660547,-0.310819280643911,-0.310764434714469,-0.310726881054551,-0.310703070542482,-0.310687816758339,-0.310681827128973,-0.310682132562158,-0.310685546198175,-0.310692338030321,-0.310702150464839,-0.310717846300652,-0.310740822532295,-0.310776431805681,-0.310816920881074,-0.310863863375797,-0.310895978314412,-0.31093492762144,-0.310935074359956,-0.31094773793842,-0.310616358667921,-0.309579946387967,-0.474482728867991,-0.471715243062358,-0.473672946331892,-0.473117456347614,-0.474040429590879,-0.474041272785056,-0.474011734512107,-0.473996369067464,-0.474012081175766,-0.474042533728988,-0.474051306956822,-0.474038686769475,-0.474027828806682,-0.474014266850225,-0.474002133708173,-0.47399610951847,-0.473998287816867,-0.47401278203481,-0.474039313041488,-0.474074044701093,-0.474111149340082,-0.474151055321848,-0.474198977574239,-0.474254850919234,-0.474320455547504,-0.474404917501633,-0.474384424925447,-0.474619698811407,-0.474019469910517,-0.474173273625937,-0.735931543906622,-0.730859429768685,-0.733439330627286,-0.730850996734408,-0.730016407686752,-0.729950015836863,-0.729915544429184,-0.729806063193616,-0.72964209027989,-0.729502698036415,-0.729460736929139,-0.729427512479303,-0.729410107970001,-0.729410052975957,-0.72941733905816,-0.729432718145088,-0.729445440353942,-0.729447294351215,-0.729440234423418,-0.729433496834648,-0.729428717989227,-0.729420452074539,-0.729397534998001,-0.729387323871303,-0.729335025692197,-0.729347781895464,-0.729299540921072,-0.729208183664012,-0.729103320913359,-0.728077097555633,-1.15832864206627,-1.14982238284445,-1.15236959931932,-1.15740882792462,-1.1584982735677,-1.15888287937121,-1.15940056070086,-1.15991949282068,-1.16053087336494,-1.1607878380605,-1.16093189947825,-1.16102379822727,-1.16103520385038,-1.16101693766432,-1.16097496389151,-1.16093978231787,-1.16094409613084,-1.1609878454517,-1.1610297383864,-1.16102948259653,-1.16098602297822,-1.16092580281147,-1.16085420320396,-1.16075080238282,-1.1606876067924,-1.16039759390286,-1.16017933162539,-1.16031828513861,-1.15867135488318,-1.16825303910471,-1.77813394880998,-1.78791874409104,-1.76607459461744,-1.76424982817287,-1.76580878938376,-1.76585022313663,-1.76588769052544,-1.76479696135841,-1.76435348812495,-1.76441435286708,-1.76451869730386,-1.7647720515375,-1.76500159674795,-1.76518200482049,-1.76530080172178,-1.76531993700925,-1.76522950354868,-1.76508291231595,-1.76496202521012,-1.76486495305441,-1.76471531368121,-1.76446873584153,-1.76416409311702,-1.76378650566162,-1.76325019123957,-1.762926785125,-1.76123753352192,-1.76094829768009,-1.75833841087229,-1.76127615926803,-2.40820270050892,-2.50482377456114,-2.52253085890261,-2.52288252118928,-2.52482810448481,-2.52417905640385,-2.52655322175872,-2.52878137589441,-2.52920302889869,-2.52951045792608,-2.52949849155936,-2.52955711985203,-2.52983304541395,-2.53025436335756,-2.53077900990928,-2.53132026209651,-2.53180324447523,-2.53212000896406,-2.53224913063834,-2.53242765093873,-2.5329842595407,-2.53402314656365,-2.53537750295566,-2.53688547048033,-2.53787588580155,-2.53804791796645,-2.53770958818693,-2.53183279256724,-2.53082731202769,-2.51952361335177,-2.47088767213377,-2.50469324779492,-2.52372865035166,-2.52324046706372,-2.52419003423766,-2.51937572115999,-2.50785943571215,-2.49871156566038,-2.49066104150962,-2.48454851767437,-2.48008903706185,-2.47668512751904,-2.47419773239764,-2.47244960682108,-2.47144223310743,-2.47120609602834,-2.47168488522016,-2.47292109168618,-2.47512242272668,-2.47838308296167,-2.48260659800378,-2.48780155759986,-2.49402031885302,-2.50128223249345,-2.51000890216383,-2.51876470627102,-2.52748467887072,-2.5396954569897,-2.51061822036574,-2.46532093175061,-1.36379274028394,-1.22502827297101,-1.18843223363886,-1.16568918758414,-1.1392220446957,-1.1248918221169,-1.11445628280331,-1.10710415499132,-1.10110655579151,-1.09574062488386,-1.09121239452698,-1.08745751269598,-1.08455478409671,-1.08253235375403,-1.08133110406584,-1.08092066729883,-1.08148732727404,-1.08321378928956,-1.08589431749306,-1.08926206354642,-1.09335772787194,-1.09833017915243,-1.10443883910759,-1.11183038855404,-1.11978851120057,-1.13131383183703,-1.13967065665746,-1.15074655271978,-1.2104595894775,-1.18621769674522,-0.222736704966324,-0.215850241855681,-0.182207259160865,-0.176041631607898,-0.173834673134284,-0.17579099606424,-0.17749014152615,-0.177864763070068,-0.177357310896519,-0.176491020849191,-0.175632539054821,-0.17498157029043,-0.174609384950725,-0.17447719596982,-0.174467731097109,-0.174519231301056,-0.174631842893844,-0.174779189431168,-0.175046071931929,-0.175570581631126,-0.176324694645221,-0.177157461713283,-0.177813478935306,-0.178083634020279,-0.177765747476364,-0.176540130292157,-0.176242523618201,-0.176028045547504,-0.222774682711232,-0.300788536167504,-0.14236478285505,-0.207307542865965,-0.176160577630711,-0.170431508635946,-0.171526759784684,-0.170623999443417,-0.169825818548781,-0.169316606774283,-0.168947615888014,-0.168719437221103,-0.168511520173469,-0.168324930855174,-0.168150168377056,-0.168011086423411,-0.16793014990866,-0.167900144011908,-0.167921017058034,-0.167977558278555,-0.168067673928317,-0.168179423684685,-0.168319448535996,-0.168553063802634,-0.168895638824465,-0.169339594849437,-0.170072835401071,-0.170251034209713,-0.170852118025667,-0.171844525336831,-0.150708225070595,-0.209086178712854,0.288255614808107,0.257999261451226,0.179597639814251,0.179201688334033,0.171972098688037,0.167000173600789,0.163393763118422,0.159656719359855,0.157189250264954,0.154825006051946,0.152837434501698,0.151059660376228,0.149564113815676,0.148498958774204,0.14797533486499,0.148012777081525,0.148629169448095,0.149813673650004,0.151403822022309,0.153283111082773,0.155484319225914,0.158123757677708,0.161313520502147,0.165198088699356,0.16960519566711,0.173390468771037,0.178694711555243,0.168492455886122,0.18111606070556,0.289542492735414,1.5471227493645,1.60363139575683,1.61958835929643,1.60406176283854,1.59313224687146,1.57926631808021,1.57009618425976,1.56096134020343,1.55384351946633,1.54793847514006,1.54315890346329,1.53939715758795,1.53664082223909,1.5349116809658,1.53421121209935,1.53451738195815,1.5357975800541,1.53794773924369,1.54094102600019,1.54490085772082,1.54999831718609,1.55650515899382,1.56456248197663,1.57375783208903,1.58594276150808,1.59519789880505,1.61635714697885,1.63735545290488,1.67440051419519,1.76522079193151,2.48651800267645,2.48309675700248,2.48286151234855,2.48606966906124,2.49260656672374,2.48554945646529,2.4817549181749,2.47741606866318,2.47383345216877,2.47088854962097,2.46875962817054,2.4673442240406,2.46647965527554,2.46596825107367,2.46567279218983,2.46552148363203,2.46551683780392,2.46578303644914,2.46651283953944,2.46785937025441,2.46987234180951,2.47242637319909,2.4761835302274,2.47938261021191,2.48586193050734,2.49013341309354,2.49238303706374,2.4958473670397,2.44655515279275,2.3247970347615,1.96759102457163,2.01269601749011,2.0172488546647,1.96480262670892,1.96319223691037,1.96260038156959,1.96156393149441,1.96103017606498,1.96052766190552,1.96020070454812,1.95994557959949,1.95979893995137,1.95970201924174,1.95958991428064,1.95938747204502,1.95906180449122,1.9586380551735,1.95816736962727,1.95768863780353,1.95719250892012,1.95675672346128,1.95600738935374,1.95560241762271,1.95483102387543,1.95381732083737,1.95726526689993,1.95467784877986,1.96723761923065,1.99509591702694,1.9533352950553,1.34744596831677,1.16150393740119,1.31618940011986,1.35318707202642,1.34875727522667,1.35300671009205,1.35363064651409,1.35436723426827,1.35447376071069,1.35440386425081,1.35419313417116,1.35390342731791,1.35360100700663,1.35333999344577,1.35317910201138,1.35317254764689,1.3533520653705,1.35369374286233,1.35414642347441,1.35460231278227,1.35516623344373,1.35568888294326,1.35627511234875,1.35717985113549,1.35756932891846,1.35681376658314,1.36328450976569,1.34741325561167,1.3960309832151,1.41987301580018,1.38014596907977,1.04522271128432,0.850885046862898,0.839815664524113,0.823862167937223,0.821839777923291,0.820312255442458,0.820048892043743,0.82011226066754,0.820232494164597,0.820346979645379,0.82040739225574,0.820412404794588,0.820392662673763,0.820387883696657,0.820409403484824,0.820422313886492,0.820366594098432,0.820234138063381,0.819991286573918,0.819683595857123,0.819360116397778,0.818957801312353,0.818699540238693,0.818937879218779,0.820384846735691,0.815967716030418,0.861800633371756,0.718316944520736,1.209096680861,1.86700100796613,0.497034577147215,0.49811670814049,0.513365738731776,0.513223101164686,0.51496854955096,0.515968792928111,0.516442092942199,0.516771042736709,0.517067020892346,0.517373507973744,0.517718681873737,0.518077129147908,0.518380518534124,0.518542423944281,0.518513351349204,0.518329968180222,0.518069678590177,0.517828623520664,0.517655134942997,0.517538114641909,0.517504628694735,0.517500886039706,0.517277746887026,0.516418738160733,0.517037573569644,0.516994361363261,0.471043558393101,0.86191026305909,2.85137419856088,-1.52478123949262,0.301861673873451,0.639865156294495,0.668444364601219,0.669450740389652,0.674440161922337,0.675109372569702,0.674993490422018,0.675048687113146,0.674955816643306,0.674876131775351,0.674809146782795,0.674754155952771,0.674713677049837,0.674687364776559,0.674677580533668,0.674683683813158,0.674704178042419,0.674737808318649,0.674778148827867,0.67482835849215,0.674882766979767,0.674917258783548,0.675073704130669,0.674951890797425,0.675312284353581,0.677506048872921,0.641617646331269,0.880144409097589,-0.424654646842292,0.0940131281570274,0.490666223990636,0.398720697215077,0.458500569260564,0.462262867816464,0.466128229709041,0.468312419672235,0.468912332311612,0.469263389439233,0.469427083732463,0.469504789342957,0.469551893384653,0.469580251841829,0.469600605692211,0.469616587320495,0.469628885716982,0.469637891539489,0.469641260803357,0.46963738445597,0.469623442854046,0.469582868332526,0.46950960584482,0.469355294088347,0.468942779025965,0.468503189520503,0.465498867210334,0.468727460421774,0.447555208719051,0.282428593404152,-0.206269280053374,0.0818856819557996,0.155925177970844,0.231064218069125,0.233333708151916,0.248438155471355,0.251778910010302,0.253910625737958,0.254972987410471,0.255470091626523,0.255770194019135,0.255950045772309,0.256062732349065,0.256135419011881,0.256179410351948,0.256200522551126,0.256200382161959,0.256180171869962,0.256142257345693,0.256083090862528,0.255999361530146,0.255882414876394,0.255680824267297,0.255453292860843,0.254735966370782,0.254585649949283,0.249350950283244,0.249293756293446,0.212752292032275,0.355367877904572,0.175562717496876,0.162704017736602,0.152900546666146,0.160904274906173,0.174786534495414,0.177284016562294,0.181331110851946,0.182755418216537,0.18368742209297,0.184188074995077,0.184448991262643,0.184593907162378,0.184674680024782,0.184719845458841,0.18474370607225,0.18475184828775,0.18474951978,0.184736575806078,0.184711418792509,0.184673166455068,0.184609187288707,0.184523014211206,0.184341915234953,0.184153436729653,0.183278783162208,0.183205082780605,0.177372304557751,0.181260669639355,0.132849715886452,0.131721533483003,0.132436739545799,0.0733593157202512,0.0807253189251157,0.0834653771363037,0.0858305469911851,0.0894239037695385,0.0905817935779012,0.0918607827339587,0.0924433274934448,0.0928007138529454,0.0929944180669935,0.0930951348452976,0.0931498960473443,0.0931778918449071,0.0931940131424797,0.0932034787875115,0.0932078218249201,0.0932095842512028,0.0932056369638815,0.0931938681411215,0.0931619939349017,0.0931131845635602,0.0929458327699462,0.0928766019800968,0.091852621285233,0.0925520446710964,0.0873830978969379,0.093147521499948,0.0957945931331936,0.0947338518424732,0.0784351686660962,0.0401309041568853,0.0372551155305155,0.0391605125157412,0.0398473175572427,0.0406048635634178,0.0415134593319755,0.0419064397224608,0.0422902430943109,0.042487613038252,0.0426149560078213,0.0426820897428128,0.0427162953910651,0.0427310401637553,0.0427348744277355,0.0427357982855825,0.0427364370591432,0.0427365269650718,0.0427364922351588,0.0427335757521848,0.0427082886491133,0.0426907674439204,0.0425123683701145,0.0425747411095129,0.0417169350674836,0.0421523114384595,0.040447675796115,0.0376491889016627,0.0349062511694479,0.0384405290842347,0.0360530559525995,0.0028329048335526,0.00296815951732647,0.00266107251162508,0.00301828422885358,0.00318691072622812,0.00337706638481766,0.00357589079236624,0.00369170316926202,0.0037929097635649,0.00385160906791022,0.00388630065543537,0.00390228356081993,0.0039071770167149,0.00390671800915288,0.00390395460952605,0.00390426440157091,0.00390788715292325,0.00390987565422218,0.00391513112125643,0.00389525818022705,0.00390994148538156,0.00378357951879322,0.00386737997005808,0.00359056577817122,0.00357380354543854,0.00386528412740076,0.00500469650773645,0.00411507819575056,0.0038775927991531,0.00338177534500945,-0.0139434008054981,-0.0132041891922114,-0.0133788371457577,-0.0133628140802248,-0.0133459669157889,-0.0133149531711525,-0.0132912950208583,-0.013247634683622,-0.0132216952086544,-0.0131945702158673,-0.0131779410036859,-0.01316581160673,-0.0131591829351863,-0.0131557563285761,-0.0131545179449615,-0.0131548135388055,-0.0131547824976282,-0.0131586035946413,-0.0131577889249503,-0.0131801858286131,-0.013170425452112,-0.0132301760066472,-0.0132340777027162,-0.0132905676330172,-0.0133543501333859,-0.0138283688496868,-0.0138431030142088,-0.0135811192391573,-0.0135674698799008,-0.0131269519177824,-0.0280359462972784,-0.0276835319887203,-0.0278542626193656,-0.0277433954031632,-0.0277305820599431,-0.0276511251784536,-0.0276169552971789,-0.027580095413065,-0.0275517461620738,-0.0275232269163437,-0.0274959519458702,-0.0274718372307262,-0.0274516530322159,-0.0274352651397367,-0.0274259035953079,-0.0274244653451047,-0.0274286093761593,-0.027444737242351,-0.0274580306734622,-0.0274870057755925,-0.0275018159173876,-0.0275324688685423,-0.0275428446803915,-0.0275852629960689,-0.0274824932084654,-0.0274422282875598,-0.0275369338725646,-0.0276874891890288,-0.0278072968877748,-0.0272390172445201,-0.0553975610857638,-0.0555656097373863,-0.0557171609528222,-0.0554872926662317,-0.0554513083320096,-0.0553130816855656,-0.0552264442379453,-0.0551462948517352,-0.0550977130868717,-0.0550552698498502,-0.0550213556024979,-0.0549870457635015,-0.0549589850718052,-0.0549365016369684,-0.0549211814810595,-0.0549194564783851,-0.0549264246760891,-0.0549455214274501,-0.0549675565287725,-0.0550008669208308,-0.0550294806205021,-0.0550801802377297,-0.055113140612484,-0.0552109029083913,-0.0553413078511777,-0.0554545721399722,-0.055504887726397,-0.0556147926256606,-0.0555866219210687,-0.0555852596898754,-0.103369036373921,-0.103703163002842,-0.104118483250472,-0.103907937075666,-0.103927203014059,-0.103816985534891,-0.103791270953656,-0.103733137138061,-0.103691823725373,-0.103647369479098,-0.103617662459979,-0.103592784652128,-0.103573379651908,-0.103560966484169,-0.103553967042213,-0.103553380266489,-0.103558998762001,-0.103572840159851,-0.103588128122501,-0.103615123718874,-0.103637885554166,-0.10368039108143,-0.103715332009594,-0.103748382016775,-0.103788563393078,-0.103886757403883,-0.103921056042805,-0.104093695654466,-0.103777792098496,-0.103580145287524,-0.172851155768603,-0.173005978530304,-0.173645648349021,-0.173426518701494,-0.173542530341868,-0.17339038130232,-0.173334661969495,-0.173261584023309,-0.173231576563999,-0.173188790397319,-0.173155106921914,-0.173126864311164,-0.173107459841866,-0.173094627684833,-0.173088298440392,-0.173086986080426,-0.173087664730819,-0.173094897905377,-0.173104242334571,-0.173123373370116,-0.173145047347627,-0.173177616154671,-0.173221358565377,-0.173277396701462,-0.173306284916231,-0.173348036858237,-0.173294145135292,-0.1733327243153,-0.172940106157274,-0.172245921436491,-0.269689395033138,-0.269378784966169,-0.270403141619419,-0.269996822860745,-0.27029290814745,-0.270285423967691,-0.270354251226158,-0.27027642379276,-0.270243057923043,-0.27021242774892,-0.270197806456022,-0.270187536540195,-0.270180639790941,-0.27017674640598,-0.270173740309743,-0.27017349227843,-0.270175588101188,-0.27018332320303,-0.270197417520019,-0.27022153779907,-0.270253182434465,-0.270289175417604,-0.270320134450019,-0.270362399846244,-0.270389344132362,-0.270448340063363,-0.270404742041133,-0.270496783568328,-0.270071370100238,-0.269303867425015,-0.410507829207956,-0.409169574822028,-0.410947981854876,-0.410197632294206,-0.41019160216985,-0.409718811239305,-0.409708553380527,-0.409640079041464,-0.409574622685242,-0.40949420209551,-0.409421895534967,-0.409372014554196,-0.409339103584928,-0.409319304395241,-0.40931156863572,-0.409311119267238,-0.409315948374528,-0.40932526032446,-0.409338096226428,-0.409358388742695,-0.409389127378191,-0.409437957168625,-0.409489756793709,-0.409550775841448,-0.409597184256842,-0.409649160446602,-0.409646489302834,-0.409663524986675,-0.409258681328604,-0.40769613437769,-0.627189069917756,-0.623835357232121,-0.626354327857247,-0.625620860483206,-0.626842916785696,-0.626837667098811,-0.626797854586509,-0.626776823779934,-0.626799137666115,-0.626840362603887,-0.626852239010843,-0.626836966321079,-0.626823174386254,-0.626804616768713,-0.626788875737151,-0.626781267499564,-0.626784088454496,-0.626803450998289,-0.626838767424485,-0.626884793876196,-0.626932192677208,-0.62698362716539,-0.62704780888263,-0.627119385695215,-0.627202835898337,-0.627317338511585,-0.627288322546108,-0.627590847686349,-0.626856611525338,-0.626707540126516,-0.975077125826597,-0.968869534428721,-0.972158755681934,-0.968785537091705,-0.967711304461695,-0.967643092209489,-0.967607602389881,-0.967469838911932,-0.967259577409091,-0.967081238582504,-0.967028840966117,-0.966986559948992,-0.966965532366872,-0.966966785210361,-0.966976576944524,-0.966996809226088,-0.967013311042911,-0.967015367529191,-0.967004819121992,-0.966994015647565,-0.966985465755825,-0.966969404095535,-0.966933114021178,-0.966916175642633,-0.966839080967748,-0.96684861614478,-0.96678178747222,-0.966632489595358,-0.966594400012701,-0.964871551008191,-1.5361412200976,-1.52568652813081,-1.52876000128451,-1.53537283614564,-1.53678988788451,-1.5373015977524,-1.53799139545098,-1.53867917607487,-1.53948599397123,-1.53982927375976,-1.54002601526145,-1.54015219561445,-1.54016941408372,-1.54014591194746,-1.54009027549798,-1.54004331899534,-1.54004766127501,-1.5401033938364,-1.54015707300177,-1.54015414998014,-1.54009332292842,-1.54001021934708,-1.53990835739179,-1.53976243467973,-1.53967126615216,-1.53927203461922,-1.53896658210334,-1.53913904042044,-1.53704629633792,-1.54900650055316,-2.35501844722,-2.36905244148302,-2.34058884478722,-2.33825010962375,-2.3403635947936,-2.34044309786645,-2.34051039221389,-2.33909943872396,-2.33853521060455,-2.33862466685831,-2.33877037356986,-2.33911598000038,-2.33943321685889,-2.33968611692768,-2.33985452515559,-2.33988730396343,-2.33977239289685,-2.33957907879062,-2.33941577020509,-2.33928357989294,-2.33908285640141,-2.33875763096651,-2.33835980064682,-2.33786462675473,-2.3371488934728,-2.33672836477927,-2.3344523310675,-2.33397032870882,-2.33072764411199,-2.33448006026537,-3.17568127690331,-3.30151294659589,-3.32569675822452,-3.32604332688945,-3.3285132300228,-3.32757884831886,-3.33061488141144,-3.33343633633097,-3.33389717241517,-3.33422297196471,-3.33414023297731,-3.33416268260423,-3.33448455241352,-3.3350149794289,-3.33569824300902,-3.33641512734201,-3.33706260968195,-3.33749991361582,-3.33769984945498,-3.33798072515982,-3.33878148165263,-3.34023618896681,-3.34212132012801,-3.34421929706465,-3.34564393720342,-3.34593878891512,-3.34568141155361,-3.33805640772237,-3.33607019061945,-3.32207914126232,-3.22953176917171,-3.26903081132792,-3.29344895279405,-3.29254409456686,-3.29371041609466,-3.28717041671833,-3.27183467212828,-3.25964967976881,-3.24893234107122,-3.24078465375208,-3.2348304732939,-3.23028374401312,-3.22695463671529,-3.22460935844984,-3.22324971002266,-3.22292343279399,-3.22355885198609,-3.22521347531374,-3.22816259689681,-3.23252026766589,-3.2381512552817,-3.24506709821469,-3.25334044578039,-3.26300456197386,-3.27460683367628,-3.28637988886847,-3.29774581050921,-3.31444523658779,-3.27611120408772,-3.21806671674911,-1.74503880386113,-1.56386291850056,-1.51585565923653,-1.48551655557505,-1.45044856061352,-1.43161811372075,-1.41793706914822,-1.40829532859917,-1.40043080122558,-1.39339066569142,-1.38744533969908,-1.38251036585427,-1.3786882633915,-1.37602082982891,-1.37443424246778,-1.37388884487168,-1.37463021565196,-1.37690046631673,-1.38042294941597,-1.38484065439239,-1.39020760045921,-1.39672330217934,-1.40473063888081,-1.41442773982341,-1.42485964048215,-1.43992653013278,-1.45107298367484,-1.46520559903081,-1.54473366842153,-1.51595825370071,-0.24200817319218,-0.233758359835769,-0.188930462775232,-0.181018288274906,-0.17813551052832,-0.180849864046134,-0.183212966764306,-0.183800365646893,-0.183204053764839,-0.182099443908714,-0.180991659893642,-0.180154570586342,-0.179685405096712,-0.179533605192855,-0.179536505576616,-0.179607160089199,-0.17975339522417,-0.179937778792897,-0.180269933366533,-0.180944503442639,-0.181920293013253,-0.182987165067609,-0.183798520354837,-0.184067965042195,-0.183536830648381,-0.181738849474096,-0.181253964323607,-0.181030738583683,-0.242318467724839,-0.342317417464704,-0.133001048142283,-0.217928827226001,-0.17708291484388,-0.170052624428094,-0.171541216448001,-0.170438277946688,-0.169518456522382,-0.168961762346845,-0.168566908718066,-0.168342017090699,-0.168130795950627,-0.167933302879665,-0.16773801410488,-0.167577915630032,-0.167483284453004,-0.167445478457447,-0.167465445064757,-0.167522352821029,-0.167610983408272,-0.16771480980851,-0.167842324262968,-0.168080381633947,-0.168450416360961,-0.168942032005724,-0.169809329945657,-0.169965762700833,-0.170522148359,-0.171716667777278,-0.143639159793299,-0.221177328566897,0.432796576520568,0.394077067909451,0.291394058278233,0.291024350178131,0.281115334350777,0.274322891914732,0.269552537373343,0.264588617538933,0.261294391655945,0.258157750331109,0.255523480494987,0.253170614265869,0.251194257015537,0.249787790651737,0.249095881056053,0.249145790310469,0.249962147550952,0.25153041637463,0.253636252685124,0.256126520827278,0.259046895955991,0.262554133189424,0.266798072039189,0.271984955159854,0.277886807410758,0.282999510210307,0.29004588965734,0.276505748973211,0.293342392293059,0.434060438597772,2.09292423836048,2.16553847188398,2.18430897063245,2.16407449742469,2.15030573845758,2.13187589161931,2.11949664890856,2.10735425441393,2.09788278075714,2.09001920242146,2.08366040961803,2.07865363233972,2.07497836086866,2.07266991344759,2.07173180081601,2.0721341481802,2.07383445683812,2.07669363676929,2.08067416348349,2.0859399506948,2.09271793852676,2.10137579030359,2.11209020345609,2.12434616194293,2.14055205269941,2.15286608571709,2.18096949677389,2.20882557369751,2.25787963160952,2.37838432139316,3.33506310582945,3.33237335361738,3.33488108154481,3.33609924290196,3.34326197967109,3.33434072693211,3.32929261582489,3.32339345874867,3.31856154206909,3.31457811193716,3.31168128409494,3.30975103238116,3.30856780918287,3.30786583617045,3.30746599340595,3.30727233981749,3.3072880685911,3.30767854404021,3.30869739713037,3.31054714775264,3.31329230699707,3.31677471409173,3.32185453664211,3.32621035959906,3.33493170765318,3.34081936704742,3.34399179590545,3.34923644053003,3.28426763553739,3.12708185615837,2.65835440392153,2.70662390910555,2.71497774576189,2.654157222854,2.65163279090728,2.64987961519613,2.64855203930569,2.64775489529909,2.64703467365115,2.64657277607313,2.64622262269572,2.64601990605082,2.64589285537227,2.6457479930845,2.64548202904741,2.64504960773459,2.64448096938637,2.64384490502757,2.64319894236719,2.64253714008749,2.64196267568342,2.64098709997468,2.64048460786494,2.63950519710874,2.63822307709801,2.64268248664125,2.63963195917645,2.65481208540266,2.69275388827912,2.63694656279061,1.83553054003108,1.61059397144798,1.78807815973967,1.82998470373966,1.82692591625764,1.83251247949625,1.83342078277969,1.83439749530491,1.83455155161345,1.83444081942653,1.83415306493994,1.83375930061154,1.83334859716045,1.83299466184306,1.8327727297379,1.83275481679894,1.83298642837567,1.83343832354816,1.83404204149225,1.83465335300541,1.83540801194291,1.83610102337175,1.83687870593301,1.83806797545529,1.83859854823722,1.83780203447247,1.84550218650517,1.82870634243385,1.88233888339457,1.92745652517327,1.77805770298168,1.3881651392201,1.15650285362211,1.14242823805224,1.12080710537874,1.11783008550519,1.11592913992309,1.11553780498382,1.11563265613545,1.11579283535976,1.11593886079634,1.11601321261464,1.11601130914896,1.1159762071875,1.11596459468827,1.11599381341111,1.11601749408776,1.11595365387371,1.11578804654529,1.11547347175022,1.11507280436089,1.11465003188757,1.11412046528626,1.11379204259386,1.11406126603999,1.11587104674934,1.11140458143423,1.16321928959205,1.00730238575765,1.583525129963,2.28951726643649,0.710330216605101,0.685454566664287,0.701093946156955,0.702772024998729,0.704617645031339,0.705999101581903,0.70665347975514,0.707104266981011,0.707522099425388,0.70795144804947,0.708430626098693,0.708926905434011,0.709346703179351,0.70957228149493,0.709534964939373,0.709282027113468,0.708918105913589,0.708575337494606,0.708319670618924,0.708138373217686,0.708069809756253,0.70804182889037,0.707714754443153,0.706692137083463,0.707131670758154,0.706863225240098,0.656750540151936,1.11806263636008,3.43491004308266,-1.61235728802354,0.429747419039379,0.806056630351579,0.848235761355185,0.848929542516318,0.855055329667418,0.855873720594613,0.855725202928637,0.855790745781294,0.855672749675986,0.855576219204515,0.85549419539163,0.855425751054331,0.855375728302866,0.855343555602642,0.855330244511537,0.855337120625622,0.855362427865997,0.85540194535854,0.855452587014847,0.855511764411499,0.855575029850779,0.855627966590295,0.855790545889397,0.855732568407471,0.855690725813,0.859996377130132,0.816599348592158,1.06425940631903,-0.395726177578147,0.168573140299938,0.603869873320365,0.513829153947027,0.583540619292286,0.589092703942085,0.593854061086919,0.596590950689944,0.597338138070948,0.597777942519016,0.597980783245154,0.598074445074051,0.598131645394099,0.598166075369733,0.59818984762152,0.598208997068153,0.598225055401878,0.598235909913703,0.598241157103609,0.598237745896626,0.59822006956856,0.598175044166463,0.59807836869175,0.597890421991327,0.597375623082581,0.596811727709713,0.593410137951978,0.59430065749296,0.57805939484677,0.381659291881787,-0.163399314071205,0.107345645494656,0.206182129116516,0.295661466474259,0.300741606211855,0.319302874274156,0.323591025848918,0.326258503331138,0.32758697672652,0.328204223423398,0.328577799937547,0.328801894483322,0.328941558660203,0.329031965444247,0.329087860151944,0.329114190449342,0.329114488113613,0.329091118877718,0.329043958470541,0.328972085134638,0.328868511899775,0.328723151814702,0.328479305586315,0.328183448144573,0.327315738337299,0.326959943363513,0.321095982595381,0.320119193318448,0.273159599105885,0.424563150182822,0.216744790508723,0.206887031418053,0.196449918749429,0.20757840225448,0.224797045487099,0.228177632814118,0.233235722219269,0.235038379910254,0.236207460835018,0.236838369500209,0.237167514923277,0.237351464767573,0.23745548415325,0.237513035517436,0.237543316574653,0.23755489411533,0.237550924145075,0.237533435127649,0.237501751733468,0.237451086546339,0.237370055136307,0.237257630906393,0.237030549027214,0.23678711429574,0.235725998977613,0.235517593172155,0.228358402591282,0.232590615533258,0.17794722184025,0.177085618803355,0.170355996637534,0.0976972424352247,0.106689297446728,0.110319925229358,0.113453059608525,0.117994824812504,0.119496537213663,0.121108901451525,0.12184757748445,0.12229825347587,0.122543569441038,0.122670340798183,0.122739257296352,0.122776226381763,0.122796301876413,0.122807599307964,0.122814466362726,0.122815333656699,0.122808990815538,0.122794564861227,0.122752838063416,0.122690597593192,0.122481020245696,0.122389028064525,0.121125450003108,0.121954675524845,0.115685447499156,0.121849479753095,0.123564637181376,0.123479437763176,0.103726068816108,0.0550028029307775,0.051542238820807,0.0539973303279892,0.0549365024934795,0.0559364577908069,0.0571058272747051,0.0576198290896282,0.0581096100668335,0.0583612589036027,0.0585225752741996,0.058609811520883,0.0586539576525355,0.0586734281931315,0.0586814443733466,0.0586829956217739,0.0586831334506217,0.0586848784966599,0.0586827190977117,0.0586763977013947,0.0586454809659642,0.0586214358899616,0.0583955272056942,0.0584707227070291,0.0573991756031166,0.0578747960895229,0.0557956214996976,0.052707002562314,0.049135509408222,0.0532229505724775,0.050007160117769,0.007682016367449,0.00773638554432147,0.00737453425359753,0.00785838300076559,0.00809644202370962,0.00835608019936651,0.00861610056546841,0.00876753486358505,0.00889749275607606,0.00897247443287173,0.00901684375465634,0.00903978749202098,0.00904716734533332,0.00904732079707281,0.00904651623335432,0.00904621707343782,0.0090486640204392,0.00905184245488093,0.00905555868872139,0.00902722125554615,0.00904732530607573,0.00888647765255235,0.00898398604000364,0.00864493590128078,0.00861505630377693,0.00885774792448522,0.0102153981998896,0.00912389628637423,0.00889863034370984,0.00811599513772123,-0.0135669325090554,-0.0124665364353319,-0.0127153226583823,-0.0126894573583031,-0.012671379240757,-0.012628487205597,-0.0125984608201113,-0.0125433445292928,-0.0125106543923286,-0.0124765863166836,-0.0124555955033455,-0.0124402523344789,-0.0124310403452561,-0.0124262783164878,-0.01242455332655,-0.0124240987592569,-0.0124243905690705,-0.0124302157802989,-0.0124286547945378,-0.0124574750468392,-0.0124472079564804,-0.0125186131440631,-0.0125268603702937,-0.0126031282794488,-0.0126629444603103,-0.0132356551506184,-0.0132609081256225,-0.0129508226848238,-0.012954041984046,-0.0122369171706288,-0.0305370082208129,-0.030163185915819,-0.0303550803993248,-0.030210078561759,-0.0301966841388259,-0.0300945638778942,-0.0300481233022675,-0.0299991901991817,-0.0299605915667714,-0.0299228270992119,-0.0298895018753674,-0.0298591344562765,-0.0298340753808533,-0.0298156126721511,-0.0298037028913353,-0.0298015362832439,-0.0298077396648746,-0.0298260522901546,-0.0298419211527115,-0.0298781237254132,-0.0298967680356711,-0.0299363503733963,-0.0299489948326883,-0.0300089452349592,-0.0298921612559167,-0.0298369117229193,-0.029956898777327,-0.0301321080846928,-0.030308345850062,-0.0296336682544649,-0.0654651113501089,-0.0657793886678935,-0.0659540583887154,-0.0656787057996624,-0.0656330272647793,-0.0654629766555175,-0.0653537509741692,-0.0652504102597261,-0.0651893205160225,-0.0651343990850507,-0.0650912303106896,-0.0650511570561162,-0.065016654863369,-0.0649894182944976,-0.0649736700962274,-0.0649704137968944,-0.0649777328203747,-0.0650019554369791,-0.0650264965140525,-0.0650663842646146,-0.0651024513976884,-0.0651675680878465,-0.0652118891117689,-0.0653310603396138,-0.0654962562948494,-0.0656391098387726,-0.0656954065994274,-0.0658293901304269,-0.065783042439208,-0.0657824997967461,-0.126183482236264,-0.126664739733017,-0.127171913541073,-0.126916539966986,-0.126947238857613,-0.126811475401107,-0.126783931976319,-0.126709846695046,-0.126656698441683,-0.126601894687076,-0.126563733925065,-0.126532205836499,-0.126510602602368,-0.126494759273509,-0.126485868936261,-0.126487157689393,-0.12649242719898,-0.126508426122596,-0.126528200151227,-0.126560950094242,-0.126588966497302,-0.126641077442556,-0.126687418367303,-0.126730271946436,-0.126773141651775,-0.126893551725512,-0.126934757418032,-0.127140093232295,-0.126747306304698,-0.126383361705362,-0.21317388254088,-0.213487716828834,-0.214254970335881,-0.213986029272868,-0.214134983671598,-0.213941999934335,-0.213872727052547,-0.21378200925657,-0.213743749084165,-0.213689048114649,-0.213648071466162,-0.213611617642241,-0.213586607491719,-0.213572161169955,-0.213563215382983,-0.213561062206776,-0.21356334153374,-0.213571545385992,-0.213582801065882,-0.213607229733786,-0.213635396788851,-0.213676375036825,-0.21372858866455,-0.213801276285719,-0.213840066516474,-0.213886931512673,-0.213818851812504,-0.213869499362667,-0.213412160998936,-0.212425410572266,-0.334323565882295,-0.334116011948408,-0.335352419781466,-0.334849955359401,-0.335220881701649,-0.335209938862413,-0.335296337396268,-0.33519686936519,-0.335156291032706,-0.335117206127107,-0.335098429605379,-0.335086907959497,-0.335077536762812,-0.33507220100691,-0.335069608619702,-0.335068521358162,-0.335070815251015,-0.335081424048342,-0.335099156415493,-0.33512911398803,-0.335168220456865,-0.335214940582031,-0.335254540080464,-0.335304065550523,-0.335339643340899,-0.335418781970376,-0.33536040499697,-0.335467719062,-0.334971225531057,-0.333826493197324,-0.510459002075055,-0.509094728531833,-0.511233613334503,-0.510310859537529,-0.510304481301857,-0.509711246680031,-0.509703763247008,-0.509618666898595,-0.509536804685194,-0.509437335398184,-0.509346096590675,-0.509282875378477,-0.509242294169434,-0.509216686855598,-0.509206636558106,-0.509206790586417,-0.509212378440628,-0.509223567688712,-0.509239651791072,-0.509265417356096,-0.509303523063542,-0.509362806859832,-0.509428986912765,-0.509507029768123,-0.50956077094409,-0.509627288737505,-0.509628070549685,-0.509639669138198,-0.509185731415696,-0.506959771412881,-0.781529807800146,-0.777862383441382,-0.780867673084988,-0.779973677238432,-0.781493349854969,-0.781476951660823,-0.781423077314242,-0.781398283285774,-0.781426912094523,-0.781479186609907,-0.78149676626227,-0.781478739223707,-0.781462254757875,-0.781440008261179,-0.781420077427098,-0.781410678682604,-0.781415035833515,-0.781439588644448,-0.781483347273189,-0.781539795314657,-0.781598757777788,-0.781661631713357,-0.781737534805132,-0.781826283023476,-0.781930379372146,-0.782069465013003,-0.782032610154221,-0.782394328723121,-0.781573199440257,-0.78085708688623,-1.21657952059687,-1.2096720652581,-1.21355806694083,-1.20943621607047,-1.20814229710742,-1.20809187301477,-1.20806055452264,-1.20789618511304,-1.20764391668377,-1.20742621852321,-1.20736327228745,-1.20731246773009,-1.20728716113918,-1.20728972801679,-1.20730240956468,-1.20732673675909,-1.20734607581481,-1.20734779791028,-1.20733397762537,-1.20731834949849,-1.20730351400622,-1.20728040128788,-1.20723069490559,-1.20720176041132,-1.20709848630255,-1.20710549880268,-1.2070174642094,-1.20679307486691,-1.206892604575,-1.2041460200763,-1.91708216632751,-1.9052609575051,-1.90874264761858,-1.91684594973618,-1.91855005618192,-1.91917347252141,-1.92003630662006,-1.92088809674991,-1.92188927224549,-1.92232209989639,-1.92257514458465,-1.92273943842928,-1.92276467799066,-1.92273683298258,-1.92266866032592,-1.92261117264293,-1.92261613726607,-1.92268313033682,-1.92274701482849,-1.92274148831371,-1.92266205244141,-1.92255150625174,-1.92241828642299,-1.92222844544021,-1.92210312638755,-1.92158796731765,-1.92119432231336,-1.92136838726978,-1.91894647598014,-1.93264843860576,-2.93470731280388,-2.95316993583252,-2.91864856835251,-2.9158852920332,-2.91861297884899,-2.91875234351605,-2.91886270703288,-2.91715112852853,-2.91647465282972,-2.91659206198471,-2.91677568015661,-2.91721293136506,-2.9176207207786,-2.91794932787516,-2.91816967264124,-2.91821773604389,-2.91807981927234,-2.91784189761066,-2.91763625311623,-2.91746767138966,-2.91721957468078,-2.91682171892355,-2.91633445720265,-2.91573088722266,-2.91484061171781,-2.91433008364216,-2.91146531993626,-2.91074789371074,-2.906971808554,-2.91157454209172,-3.94257861906607,-4.09495698796632,-4.12586985703684,-4.1260869864306,-4.12898884179561,-4.12771638194502,-4.13134130449948,-4.13467484996904,-4.13512302719555,-4.13543392554041,-4.13525575032586,-4.13521858311492,-4.13556667055126,-4.13619328385128,-4.13702778170957,-4.13791857633103,-4.13873131403755,-4.1392939883949,-4.13957879215543,-4.13998167003742,-4.14104829051917,-4.14294843577707,-4.14539843057782,-4.14811879659956,-4.15002936994849,-4.15046471777481,-4.15038572373254,-4.14112720156075,-4.13762776574391,-4.12248848918699,-3.98057984118294,-4.02254572813057,-4.05203963203732,-4.05058966854502,-4.05197542218498,-4.04367022155198,-4.02455846350912,-4.0093752606373,-3.99601251883812,-3.98583463056714,-3.97838677521182,-3.97269979814591,-3.96852802595175,-3.96558501454041,-3.96387058360833,-3.963451351592,-3.96424531496625,-3.96632126702771,-3.97001899791021,-3.97547508129061,-3.98251187744421,-3.99113995656451,-4.00146188346997,-4.013519701149,-4.02797116678083,-4.04282688664424,-4.05663636174715,-4.07805026002318,-4.0306002157781,-3.96208793697189,-2.11899941766899,-1.8979744906542,-1.83920853647436,-1.80130550853518,-1.75771731342599,-1.7344737042372,-1.71759441009295,-1.70568854829578,-1.69598183976691,-1.68729521429975,-1.67995715667528,-1.67386321527543,-1.66913508020192,-1.66582858341117,-1.66386103041192,-1.66318230018728,-1.66409338987269,-1.66689837466098,-1.67124840004812,-1.67669484107699,-1.68330860915317,-1.69133854998717,-1.70120804000567,-1.71317862878368,-1.72605160350603,-1.74454942968235,-1.75861664324169,-1.77550254412163,-1.87457281482179,-1.841913100358,-0.262279727092215,-0.253721664187042,-0.197268106224155,-0.187739986098176,-0.184129806814574,-0.187559345619744,-0.190538316622909,-0.191328318923642,-0.190647627144577,-0.18930350721791,-0.187944055474105,-0.18691884365678,-0.186353877054818,-0.186184761740929,-0.186200487391903,-0.186289953662309,-0.186470626711864,-0.186693439198871,-0.187091839773291,-0.187918271118992,-0.189119149827544,-0.190426595249536,-0.191399463910721,-0.191672363278041,-0.190942918631041,-0.188577511717448,-0.187959856442509,-0.187813560029826,-0.263233166325002,-0.382594903326935,-0.123129308110446,-0.227088708753036,-0.176922797419357,-0.168810632331168,-0.170638890462657,-0.169356462897408,-0.168348287160961,-0.167763615931819,-0.167357918908677,-0.167147179682475,-0.166942619263625,-0.166742700846635,-0.166533352336951,-0.16635640609573,-0.166250100000663,-0.166205036906275,-0.166223042928969,-0.166278019729508,-0.16636098924158,-0.166451019577074,-0.166558723360655,-0.166791997331919,-0.167178956733315,-0.167705052139733,-0.168692293277258,-0.168833675487459,-0.169286233820546,-0.170749351935828,-0.135858093841424,-0.233078950947443,0.574454814716969,0.529362671231808,0.403348633894836,0.403047504664835,0.390500758361736,0.381881494983245,0.375963263900474,0.369815298544569,0.365715069231647,0.36182546820689,0.358562957014599,0.355651161524276,0.353207272203188,0.351467495925826,0.350612220896257,0.350675044793935,0.351687921904059,0.353633491630292,0.356244736700286,0.359332285843338,0.362956422717701,0.367313521120798,0.37259009580248,0.379061323839472,0.386441374446841,0.392875461280198,0.401638191843451,0.384679886427532,0.405872139763684,0.576376724900407,2.63210650320371,2.71883563521923,2.73987978183034,2.71500899727987,2.69843834935729,2.67559232639166,2.66000508591599,2.64486325504358,2.63307612270783,2.62327775466288,2.61536061040112,2.60911905078615,2.60453599349989,2.60165181268501,2.60047529406974,2.60097281265706,2.60308797327088,2.60664688550557,2.61160371960969,2.61815977315282,2.6265968970343,2.6373828259298,2.65071852519722,2.66600813745236,2.68618894917861,2.70149326232988,2.73645592161753,2.77119524837425,2.8316544191584,2.98181095926864,4.17663660799908,4.17295439443737,4.1788476211867,4.17771510125936,4.18515769937485,4.17437411910503,4.16814171152654,4.1606558879209,4.15455968026027,4.14950798603652,4.14583359500814,4.14337068901067,4.14185417979811,4.14095623149506,4.14044869176747,4.1402140354373,4.14025992351441,4.14078920608182,4.14211438364975,4.14448844118236,4.14798581437497,4.15242232468151,4.15884735704007,4.1643771155997,4.17537383911711,4.18295159781299,4.18706750924691,4.19434824827601,4.11429030953797,3.92553968938686,3.35162980376231,3.40074416752129,3.41315698752466,3.34591142851768,3.34257148534159,3.33929580737513,3.3376817600563,3.33654116959258,3.33561174252352,3.33499272460908,3.33453579887362,3.33427749067918,3.33411763748369,3.33393993664831,3.33361415530572,3.33307771686414,3.33236521636892,3.33156480525677,3.33075251892162,3.32992961787248,3.32922648307311,3.32803941184997,3.32746884896845,3.32631484919137,3.32479049283894,3.33023507492756,3.32686599589991,3.34419721310976,3.39187450182722,3.32288759744055,2.3291976223021,2.07112352782835,2.2651139578336,2.30948712819602,2.30890865178324,2.31560211810933,2.31695294329887,2.31813829697085,2.31833261120612,2.31818947170758,2.31781763625357,2.31731705057276,2.31679854569166,2.316349710038,2.31606377890229,2.31603117298603,2.31631056735432,2.31686911081467,2.31762232598595,2.31838752119578,2.31933250536781,2.32019176241722,2.32115242475147,2.32261915856544,2.32330392930652,2.32250538128032,2.33125542904169,2.31457387566322,2.37075807218002,2.43914334652205,2.16234906460987,1.72860649832254,1.46657675690481,1.4480722630562,1.42148329688921,1.41732378142003,1.41505471171157,1.41456789467612,1.41468331668989,1.41488141646049,1.41506033878319,1.41514379193636,1.4151307706014,1.41507712321981,1.41505590686506,1.41509220691818,1.41512900733725,1.4150608288271,1.41486678720344,1.4144847706954,1.41399499443117,1.413477977055,1.41282711934999,1.4124280121193,1.41271433920451,1.41488388108429,1.41060187586007,1.4665622125448,1.30610495408368,1.94984608523207,2.67042519961443,0.931658596862729,0.878443503826,0.892145864923373,0.895825043958444,0.897816722490012,0.899539551100418,0.90037730908671,0.900967118053268,0.901510452438884,0.902069755186592,0.902690945911965,0.903330720276279,0.903872000377612,0.904165158797632,0.904120664924563,0.903796126284224,0.903323619070461,0.902872007872082,0.902526107457373,0.902271743065994,0.902157817883763,0.902095754540626,0.901667885026533,0.900483371900271,0.900696133982419,0.900125541595548,0.848338096533942,1.36696618323807,3.93841911125568,-1.66285013455613,0.564223796681653,0.972220895801348,1.02883108793394,1.02891099510699,1.0362011877713,1.03718534445262,1.0369865548133,1.03706367584349,1.03692604351918,1.03681088065779,1.03671411897549,1.03663396101749,1.03657463020664,1.03653558882725,1.03651984371103,1.03652728562945,1.03655590668416,1.03660299765563,1.03666034195074,1.03673043236669,1.03680631493446,1.03685345966489,1.03705501713912,1.03707963434036,1.03639802718221,1.04347474622305,0.991807463862542,1.24341223972474,-0.347980330527765,0.251079487542338,0.715761462998816,0.630532310900857,0.709799029484375,0.717261718911975,0.72287038039198,0.726163768798858,0.727068631143082,0.727591072892098,0.727832813704017,0.727943911280827,0.728010171213854,0.728049425091466,0.72807726973094,0.728099697450463,0.728118088799379,0.728132142216823,0.728138905465813,0.728135559383747,0.72811699857836,0.728060544252674,0.727950379948886,0.72773343366045,0.72706488233253,0.726474891670593,0.722653842575504,0.720664535379396,0.711064441752242,0.484332719810458,-0.109138279585748,0.133779085669425,0.257421183236127,0.361270723921995,0.369271209349801,0.391307350879954,0.396565341389677,0.399761089035016,0.401354111813741,0.402094051726262,0.402538743246883,0.402805763666138,0.402973013669562,0.403081225654667,0.40314761549701,0.403180140615205,0.403181539194467,0.403153741835015,0.403099246286165,0.403013890376599,0.402891901279028,0.4027211360921,0.402422851591524,0.40208407547687,0.401056221508163,0.400423795459736,0.394144584409518,0.392040825495363,0.334601802098713,0.490376541275746,0.257563429105224,0.251012210178744,0.240308524131675,0.254642779444575,0.275296917388232,0.279573788458624,0.285650414960012,0.287839862232077,0.289244522578365,0.290005511877614,0.290405036661817,0.290628890821521,0.290755378821135,0.290826572661198,0.290864349227361,0.290877610655541,0.290873153653516,0.290851635316697,0.290811335833701,0.290749698137853,0.290649052937391,0.290513586600698,0.290238176770757,0.289924947255725,0.288720904828569,0.288309226049525,0.279885722438704,0.28430271897373,0.224262977514581,0.223574619998126,0.208387298534052,0.122458763451287,0.133112707755793,0.137702167959881,0.141631539930779,0.147148871878398,0.148999981186489,0.150947708149816,0.151845707193979,0.152390323704512,0.152686171493112,0.152840002491221,0.152924095895233,0.152968154542192,0.152993227116784,0.153007580957513,0.153014335072309,0.15301565892139,0.153007721781086,0.152988270682381,0.152937539557661,0.152860398868483,0.152614373200139,0.152486059543148,0.151000489911804,0.151941254640987,0.144598400082211,0.15110577212769,0.151547189808867,0.152689110341329,0.129447976693779,0.0702445331928554,0.0662716307400417,0.0692850951392067,0.0704967137991673,0.0717486245951443,0.0731885675537115,0.0738281963809602,0.074425252307617,0.0747333868076372,0.0749303504038417,0.0750362012643061,0.0750914566499416,0.075117204590604,0.0751269108311609,0.0751304435527667,0.0751318697225024,0.0751318657475651,0.0751292278169024,0.0751213625111602,0.0750815441241108,0.0750503660222902,0.0747829946985049,0.0748618427902788,0.0735786295968295,0.0741046829526208,0.0715859280556678,0.0682992436887301,0.0638768530446765,0.0684113382644147,0.0643816588259327,0.0127243963483653,0.0126602629328168,0.012246419543505,0.0128713664945415,0.0131871839112228,0.0135218883402469,0.0138474624055259,0.014037338272527,0.0141955636943207,0.014287983280237,0.0143434816382197,0.0143715852583774,0.0143826907395593,0.0143852168415652,0.0143836806526843,0.0143841612374361,0.0143873622787649,0.0143875671777074,0.0143911405389214,0.014357512180231,0.0143760364261792,0.0141838517226254,0.0142999410613939,0.0138791892512447,0.013858650516579,0.0140450269857823,0.0155787980375944,0.0143050412919617,0.014132975859431,0.0129195361396339,-0.0132376940728673,-0.0117053262494028,-0.0120244530729522,-0.0119934657538542,-0.0119724757431416,-0.0119172179094632,-0.0118801007256139,-0.0118133562275349,-0.0117735351182508,-0.0117328728028927,-0.0117072899450509,-0.0116882728869306,-0.0116771496202115,-0.0116707065915733,-0.0116678272789422,-0.0116677962357134,-0.011668032368944,-0.0116746991158951,-0.0116747200536428,-0.0117088053787056,-0.0116959235539779,-0.0117846269572372,-0.0117908209151438,-0.0118876462695923,-0.0119589940832418,-0.0126154865510382,-0.0126444540451084,-0.0123212240113151,-0.0123247730497547,-0.011273961437504,-0.0329638049046774,-0.0326907070784658,-0.032869081792451,-0.0326967619944104,-0.0326780153928815,-0.0325548522560346,-0.0324966097826382,-0.0324329431618366,-0.032384599092261,-0.0323382229391115,-0.0322969380837423,-0.0322614675669079,-0.0322328005861251,-0.0322102089259945,-0.0321973083601745,-0.0321953256774894,-0.0322009534561776,-0.0322230043268364,-0.0322415329713043,-0.0322832650897575,-0.0323061107668285,-0.0323549547856048,-0.0323734858085698,-0.0324443828090209,-0.0323135293027514,-0.0322610378193853,-0.0323932001189387,-0.0325732194828891,-0.0328363642396185,-0.0320108564252189,-0.0758427799678149,-0.0763573553551817,-0.0765400075019985,-0.0762282774985128,-0.0761731196860669,-0.0759675022280478,-0.0758371862568863,-0.0757114402976128,-0.0756348138769731,-0.0755684815353734,-0.075517315983875,-0.075468410383321,-0.0754292505126371,-0.0753988107549872,-0.0753792019785168,-0.075376773458715,-0.075385565427239,-0.0754113883218509,-0.0754406037411058,-0.0754878177103738,-0.07553050601081,-0.0756091619728508,-0.0756663468785329,-0.0758144661382069,-0.076004542371067,-0.0761706722308378,-0.0762534880053763,-0.0764047786141743,-0.0763455100757378,-0.0763297006264846,-0.149467533520941,-0.150148405738848,-0.150739315756294,-0.150436391458675,-0.150482623914177,-0.150323844114683,-0.150292833469075,-0.150204560235112,-0.150141177069652,-0.150073293322708,-0.150028265491784,-0.149991488005833,-0.149964682661486,-0.149947398153775,-0.149937852912012,-0.149937712644578,-0.149944784609015,-0.149963767534605,-0.149985608859665,-0.15002476340922,-0.150058617997367,-0.15012135376614,-0.150174058664832,-0.150225270104021,-0.150281055039852,-0.150416349597265,-0.150451716063476,-0.150696630928926,-0.150235331206861,-0.149608204483334,-0.253991245017813,-0.254538249685487,-0.255411428590818,-0.255104379999895,-0.255280172056513,-0.255047356673425,-0.254965715541406,-0.254854582782506,-0.254809631177991,-0.254744076196426,-0.25469325766923,-0.254649955401068,-0.254620306295779,-0.254601487832051,-0.254591653905095,-0.254589514350606,-0.254590983958963,-0.254601499757791,-0.254615443695792,-0.254644518444203,-0.254678104639621,-0.254728226480232,-0.254793377486375,-0.254877795955083,-0.254921440663891,-0.254985383233635,-0.254903387633797,-0.254951802399401,-0.254461322388651,-0.253115986146698,-0.399608209738715,-0.399628401681256,-0.401035392204794,-0.400448378491407,-0.400895008910357,-0.400878408129981,-0.400984442454823,-0.400863655342138,-0.400813811005045,-0.400767467776375,-0.400745606689649,-0.400730868668412,-0.40072045669307,-0.400714439231055,-0.400710232996046,-0.400709560414093,-0.400712706727823,-0.400724899873967,-0.400746478001642,-0.400782985878262,-0.400830559120327,-0.400885432251548,-0.400932644249909,-0.400996150326342,-0.401037084341569,-0.401129079460937,-0.401065184511457,-0.401181975199363,-0.400627902984727,-0.398994809925373,-0.611282183709685,-0.610099669457984,-0.612540188272384,-0.611459705752074,-0.611449034899254,-0.610735832059388,-0.610730558925655,-0.610630432538576,-0.610533128232352,-0.610412482527741,-0.610303005391137,-0.610226605883811,-0.610176486236278,-0.61014596264505,-0.610134015467834,-0.610133453763188,-0.610140334855709,-0.610153881638915,-0.610172876994579,-0.610203170798722,-0.61024881421931,-0.610321220875183,-0.610398924581761,-0.610491196381917,-0.61055872294839,-0.610638779427516,-0.610638740242498,-0.610640979971316,-0.610175551701814,-0.607099463279786,-0.937131470021173,-0.933499821312821,-0.936886447663776,-0.935863835685754,-0.937673348377607,-0.93764403365053,-0.937574514661726,-0.937543599083846,-0.937580420683691,-0.9376452407593,-0.937668347076721,-0.937649441870235,-0.937631078382912,-0.937604347152331,-0.937580970618076,-0.937570302608103,-0.937575821389026,-0.937605667994613,-0.937658322808425,-0.93772584520112,-0.937794493045065,-0.93786766069712,-0.937958298943378,-0.938061681295868,-0.938182242589091,-0.938349728956961,-0.93830696681652,-0.938707563940329,-0.937871245109355,-0.936248570973964,-1.45989577389587,-1.45285893391382,-1.45718575626199,-1.45236073366171,-1.45086706158885,-1.45084854341228,-1.45082903448277,-1.45064189573883,-1.45034734815765,-1.45009162251636,-1.45001739586982,-1.44995674487448,-1.44992755062499,-1.44993147508606,-1.44994619443338,-1.44997418536687,-1.44999593574925,-1.44999686182977,-1.44997870794868,-1.44995781495635,-1.44993772462211,-1.4499052165347,-1.44983950757932,-1.44980106229381,-1.44966853108567,-1.44966756096746,-1.44956621080955,-1.44923750825062,-1.44957309340345,-1.44536275976017,-2.30043480417995,-2.28796967420889,-2.2917402227534,-2.30123472273555,-2.30318261089019,-2.3039086232453,-2.30493290267669,-2.30594859503727,-2.30714302069735,-2.30766825934634,-2.30798311522394,-2.30818899447172,-2.30822432893071,-2.30819394025035,-2.30811480023378,-2.30804810452891,-2.30805405911899,-2.30813196251001,-2.30820588350986,-2.30819572865338,-2.30809563409366,-2.30795771885538,-2.3077893540297,-2.30755059369279,-2.3073924079536,-2.30675053849913,-2.30626920461138,-2.30640871482864,-2.30380941505622,-2.31844714687586,-3.51654098670706,-3.53951556468615,-3.49959637350867,-3.49653079813212,-3.49990187181119,-3.50014328524343,-3.50031281925273,-3.49831586096164,-3.49753492372689,-3.49767510466358,-3.49789230598937,-3.49841901695963,-3.49891804401957,-3.4993244550487,-3.49959812463789,-3.49966249448488,-3.49950376686017,-3.49922246193829,-3.49897491548441,-3.49877221062765,-3.49847915752909,-3.49801418326295,-3.497448266069,-3.49674441489504,-3.49568277757406,-3.49509960593334,-3.49164183982091,-3.49064030864103,-3.48646907311065,-3.49192797381294,-4.70903572852497,-4.88474014837132,-4.92256146669974,-4.92255069515689,-4.92579475905582,-4.92410087424033,-4.92824285585359,-4.93200487079597,-4.93239523587908,-4.93265826351225,-4.9323615092262,-4.93224428106766,-4.93260002733052,-4.93330926304341,-4.93428822590805,-4.93534988139221,-4.93632754105584,-4.93702165144553,-4.93740303883545,-4.93794569044799,-4.93930167457927,-4.9416707175696,-4.94471248656264,-4.94808956009849,-4.95053012705566,-4.95111528869583,-4.95132682531416,-4.94054649321065,-4.93489194404787,-4.92069566193767,-4.72523113975741,-4.7660923805604,-4.80047235260672,-4.79826083756298,-4.79992193793577,-4.78983067845841,-4.76700940834306,-4.74887127829567,-4.73289643261716,-4.72070140947269,-4.71176530938261,-4.70494296516724,-4.69993249776653,-4.6963938029411,-4.69432370626963,-4.69381143709708,-4.69476466855874,-4.69726327096487,-4.70171042263575,-4.70826019938983,-4.71669543175039,-4.7270277081106,-4.73938489839978,-4.75382070874809,-4.7710916829439,-4.78908539120711,-4.80510437798827,-4.83146096829483,-4.77505356531849,-4.69898148534228,-2.48708749428933,-2.22891577586574,-2.160188634231,-2.11477532147587,-2.06274280674593,-2.03516524059923,-2.01512813720899,-2.00097614259101,-1.98944691145114,-1.97913709283294,-1.97042969496752,-1.96319625127103,-1.95757410468649,-1.95363525995222,-1.95128981883947,-1.9504791331506,-1.95155674041047,-1.95488597091801,-1.96004918240196,-1.96650728480608,-1.97434451268901,-1.98386188986089,-1.99556287472499,-2.00977555518377,-2.0250626609227,-2.0468798130212,-2.06402855426231,-2.08335739616694,-2.20157660225631,-2.1653302936022,-0.283767713376851,-0.276381537562727,-0.207664133029878,-0.196672096533705,-0.19223911745327,-0.196349309600477,-0.199889990542234,-0.200858850074438,-0.200093803250604,-0.198505320197661,-0.196888270996343,-0.19567132322693,-0.195007122274256,-0.194820328839954,-0.194849899933224,-0.194956076503909,-0.195172246986869,-0.195438302761236,-0.195905069463697,-0.196887329433588,-0.198320351793908,-0.199875968072598,-0.201020384335262,-0.20130872009416,-0.200405678121385,-0.19748204281198,-0.196796184262493,-0.196819397435578,-0.285959559766526,-0.42163674262238,-0.112646161404276,-0.234536582678963,-0.175544204121717,-0.166584480454022,-0.168694502764512,-0.167253062768792,-0.166202618683094,-0.165612905968018,-0.165210848944083,-0.165026943100027,-0.164839482319391,-0.16464656625762,-0.164430054045664,-0.164240919398526,-0.164125277073416,-0.164073211696499,-0.164087841680393,-0.164137762257852,-0.164209651864856,-0.164279108521632,-0.164359056392423,-0.164577555403471,-0.164969885349305,-0.165514093379714,-0.166603428361829,-0.166729331768583,-0.167011853157622,-0.168844986537868,-0.127307505725157,-0.245001868226991,0.713743479976839,0.664786252233332,0.516587404423611,0.516414195042364,0.501161186696632,0.490728794708888,0.483706402437003,0.476387654603692,0.471498565159145,0.466872448330683,0.462996162074915,0.459537190743623,0.456635521560611,0.454570114763105,0.453554287853336,0.453630588529647,0.454838374145444,0.457155841931958,0.460264482416812,0.463939402749194,0.468255865787664,0.473451201782268,0.479746761078303,0.487491840500428,0.496345225694078,0.504097950198936,0.514566777410207,0.494122996769163,0.519973722725105,0.717442222188152,3.16650058252564,3.26534077816003,3.28767964644138,3.25846283232868,3.2392987714609,3.21199594516949,3.19322252889224,3.17512160267336,3.16104595588467,3.14933661640643,3.13988092546476,3.13242374744542,3.12694055601626,3.12348624475642,3.12207390145256,3.12266321759275,3.12518684028186,3.12943621993204,3.13535549078104,3.14318451154216,3.15325862573577,3.16614543255434,3.18206648816572,3.20035575948892,3.22445595909373,3.24269696249495,3.28442313365223,3.32611895183364,3.39713960672382,3.5769333627802,5.01161878409932,5.00485587715825,5.01508364798737,5.01075488168969,5.01836771690656,5.00584215961162,4.99843933153685,4.98935380420494,4.98197706195925,4.97585358161185,4.97137955351476,4.96837269860348,4.96651483028539,4.96541157587679,4.96479347050143,4.96452027695189,4.96460239090049,4.96528244168125,4.96692924032525,4.96984265302488,4.97410768745359,4.97951624779249,4.98729756324093,4.99402171396558,5.00730363307611,5.01662792392375,5.02168452944132,5.03124441387344,4.93669932393727,4.72103633911325,4.04729506373273,4.09451540255978,4.11163293571618,4.03951858784292,4.03528422568456,4.03019759068663,4.02824414024894,4.02675320334887,4.02557105962856,4.0247852388684,4.02421605900972,4.02389160283125,4.02369755901877,4.02348800603305,4.02310363793653,4.02246701658438,4.0216147722775,4.02065254658994,4.01967816744106,4.01870244382471,4.01788276357555,4.01650643984481,4.0158963957745,4.01460219852291,4.01288113974509,4.01929134438374,4.01571375438378,4.03486711982909,4.09170248143804,4.01051355245391,2.82708400340419,2.54036853199503,2.74623445290412,2.79128636744903,2.79390396478779,2.80175812324137,2.80353917014156,2.80494405333495,2.80519003931467,2.80500133370981,2.80454804487951,2.80394102449838,2.8033128405012,2.80276907014395,2.80241768088455,2.80236638725615,2.80268917504109,2.80335044939489,2.80424951660458,2.80516611519292,2.80629815490622,2.80731668319887,2.80845537374401,2.81018660582172,2.81102590272732,2.81026442192393,2.81999212462819,2.80394412775784,2.86135296101214,2.9537554599929,2.53856348114619,2.06860974197972,1.77993509833194,1.75650808057845,1.72512914941138,1.71969431210172,1.71711254717101,1.71650227808613,1.71664836542695,1.71688522764077,1.71709135174714,1.71718248827094,1.71715546149657,1.71707965893527,1.7170467817133,1.71708972702677,1.71714080185649,1.71707135463463,1.71685280401406,1.71640700181959,1.71583308625404,1.71522593800662,1.71445703985855,1.7139947180669,1.71429324763211,1.71678420416361,1.71285476477609,1.77200463444229,1.61183041196156,2.31135533369756,3.02254382818846,1.16051358043019,1.07662717840226,1.08670331182475,1.09265017643281,1.09467027793863,1.09674693549262,1.09777934034378,1.09850444527876,1.09918287836955,1.09987807020945,1.1006449748293,1.1014329390507,1.10209946116323,1.10246273126927,1.10241240470463,1.10201549568635,1.10143110008426,1.10086597579804,1.10042324006978,1.10008845911161,1.09992269578616,1.09981882556674,1.09928166682187,1.09794932788243,1.09795268303002,1.09683120213301,1.04524872500834,1.61249582783554,4.3969827492064,-1.69140931176693,0.702654401708384,1.13821910906859,1.20975066089129,1.20899828435899,1.21752686796739,1.21863686996206,1.21840257255149,1.2184921623414,1.21833149533796,1.21820092542979,1.2180905566802,1.21799813279304,1.21792991739566,1.21788515388472,1.21786601181062,1.21787390839606,1.21790658564912,1.21795910501315,1.21802526722137,1.21810319117992,1.21818738008882,1.21824620277155,1.21845274682298,1.21857648578165,1.2172497003078,1.22728245032945,1.1666697621641,1.42003279678334,-0.289518101348012,0.338617834714448,0.827117774376107,0.748166293286333,0.837012767712111,0.846336597613961,0.852805609762651,0.856663571109691,0.857715980549295,0.858326343827982,0.858607066419389,0.858733616570293,0.858809199575873,0.858853784821006,0.858884694877226,0.85891002469889,0.858931816762357,0.85894793750565,0.858956719674918,0.858953952112539,0.858932441698955,0.85887066384372,0.858738261168229,0.85849090938714,0.857699680078879,0.85702323370859,0.852812693663456,0.847846297310235,0.845254350517447,0.589434188920499,-0.0474061151924877,0.161409841214005,0.309360090171855,0.427881305956759,0.438763150289226,0.464372500721702,0.470571059059793,0.474306680622687,0.47616512541862,0.477023677181978,0.477540222883825,0.47785027629705,0.478043933840661,0.478169486083316,0.478247372279358,0.478285304493584,0.47828753246359,0.478256808029607,0.478193958132905,0.478096566360879,0.47795570559092,0.477758423564279,0.477416123486326,0.477016144603064,0.475837805050387,0.474960641428716,0.468184026446794,0.465152277235353,0.3968973786171,0.554511126379865,0.298218954210356,0.295116937487389,0.284444814015241,0.30197619733373,0.326191415072032,0.331347093847634,0.338470539369961,0.341040157037599,0.342683838599102,0.343576305806471,0.344045568829136,0.344309794107498,0.344460289542822,0.344544720848033,0.344589546658731,0.344606169402359,0.344600247685973,0.344574115309676,0.344526548957368,0.344452279460786,0.344333473664232,0.344171502515698,0.343848670936506,0.343474779834413,0.342097516624033,0.34152645387593,0.331769968467825,0.336421072171043,0.271253109898837,0.270472315066359,0.246863577397389,0.147544460477092,0.159879945056204,0.165508918828634,0.170241642934913,0.176767148047875,0.178965891183542,0.181256450028077,0.182312595092581,0.182951988779865,0.183299868479854,0.183480208251468,0.18357887849233,0.183631756210229,0.183661012187927,0.183677394200582,0.183686095391483,0.183686521242484,0.183676055229828,0.183653093934867,0.183592115986107,0.18350089720149,0.1832130406348,0.183060326413639,0.181333936835267,0.182417501130696,0.173958574875928,0.180793981789031,0.179975055220694,0.182311495381867,0.155333653847349,0.0858140407635605,0.0813943165079334,0.0849717505414201,0.0864746605088802,0.087980588942024,0.0897012665426912,0.090467345087525,0.0911752171055816,0.091539730535562,0.0917720046878352,0.0918982792990544,0.0919639884202485,0.0919949555755174,0.092008577008233,0.0920130733559383,0.0920144036283091,0.0920154773629591,0.0920109409551768,0.0920000340512584,0.0919536625644531,0.0919161879616561,0.0916006856930496,0.0916939958146495,0.0901854900305455,0.090765412219747,0.0878104730820137,0.0842882562900555,0.0789294111696952,0.084037487112714,0.0791407740510288,0.0179882177685102,0.0177799924961949,0.0173190747834804,0.0181002363463002,0.0184994997715521,0.0189133463389945,0.0193080622141708,0.0195372979912997,0.0197262477504316,0.0198360435893058,0.019901990050665,0.019937361546476,0.0199515395825967,0.0199552667562577,0.0199556267459836,0.019955718115543,0.0199578381620592,0.019958408678071,0.0199602194525436,0.0199179462901395,0.0199410018259165,0.0197122640535689,0.0198452890733893,0.0193491236150335,0.0193285928020084,0.0194535968109172,0.0212125444504043,0.0197109101935459,0.0195789597765386,0.0178746068989578,-0.0129045781249855,-0.0108948672132223,-0.0113012814417349,-0.0112654646644791,-0.0112399598551488,-0.0111701886431886,-0.0111259029356248,-0.0110469599388696,-0.0110003557470467,-0.0109525555481666,-0.0109226828694633,-0.0109004943626011,-0.010886639053077,-0.0108789016241817,-0.0108755660248417,-0.0108747141873317,-0.010875461416107,-0.0108841871747939,-0.0108834319621455,-0.0109242237674979,-0.0109098705491934,-0.0110119559554674,-0.0110198203996499,-0.0111388450564719,-0.0112138248702672,-0.0119776880006069,-0.0120182265600725,-0.0116608210824834,-0.0116708049225471,-0.0102505371726074,-0.0355664958089474,-0.0353628594724245,-0.0355137097731334,-0.0353045722441615,-0.035283282859638,-0.0351351450951929,-0.0350625120976899,-0.0349846900125682,-0.0349247034145551,-0.0348680498533656,-0.034820127143618,-0.0347782615213526,-0.0347448062453848,-0.0347202064089479,-0.0347049178954174,-0.0347021766940141,-0.0347097359100933,-0.0347338296622259,-0.0347545266632782,-0.034804080263326,-0.034830470125964,-0.03488948757669,-0.0349131750869018,-0.0350012937563126,-0.0348549752517223,-0.0347909150881099,-0.0349480060630751,-0.0351433957561558,-0.035483350439641,-0.0346028791676877,-0.0865202254236298,-0.0872723938884357,-0.0874735501712098,-0.0871283802093274,-0.0870599436286315,-0.0868231280981452,-0.0866704728925984,-0.0865212596705326,-0.086431492750535,-0.0863526082503993,-0.0862923037463448,-0.0862371245638365,-0.0861918923353969,-0.08615706797861,-0.0861366393947262,-0.0861330708829173,-0.086142301392152,-0.0861726575773372,-0.0862045164863249,-0.0862585229275264,-0.0863088959183325,-0.0864018807793749,-0.0864714030712073,-0.086644192595862,-0.0868667387129615,-0.0870611802246873,-0.0871571860916175,-0.0873236542404479,-0.0872669626164407,-0.0871645587519161,-0.173117366114123,-0.174060293918456,-0.174702432528491,-0.174367482270047,-0.174426072915921,-0.174244190797911,-0.174213331255185,-0.174109892167793,-0.174035464838682,-0.173956722663282,-0.1739037083778,-0.173860635522951,-0.173831288449313,-0.173811007891657,-0.173799822783129,-0.173801003508606,-0.173808023363169,-0.173829247069813,-0.173855086320317,-0.173899862874262,-0.173938846151912,-0.174010862301562,-0.174072412311816,-0.174131967358893,-0.174191381249608,-0.174343035128888,-0.17438556838388,-0.174651435168478,-0.174127092312817,-0.173180874768763,-0.295181469420823,-0.296053594014568,-0.297007848062502,-0.296668225891548,-0.296871867593855,-0.296597043446794,-0.296501671894027,-0.296371853288873,-0.296319433578169,-0.296241943419352,-0.296183259559607,-0.296131712817144,-0.296096417416417,-0.296075406972549,-0.296063172477917,-0.296060322860225,-0.296063018511274,-0.296074760544779,-0.296090823359179,-0.296125210381855,-0.296165211768667,-0.296224423880292,-0.296299393140946,-0.296399301864549,-0.29645348482438,-0.296524220936363,-0.296428665927087,-0.296486673904039,-0.295975869421427,-0.294193133302271,-0.465399536777641,-0.465771941895783,-0.467310610019527,-0.466652869003665,-0.467170893718034,-0.467152664397438,-0.467278076636412,-0.467134442091103,-0.46707719925826,-0.467022828266789,-0.466997419752313,-0.466981486057584,-0.466969039136353,-0.466961775846934,-0.466957669678462,-0.466956350185884,-0.466959825889008,-0.466974758929676,-0.467000094188547,-0.467042691768123,-0.467097870733377,-0.467162758849634,-0.467218652026295,-0.467290417970316,-0.467338833521429,-0.467451294095743,-0.467374067947848,-0.467487915479475,-0.466910135110015,-0.464663615254946,-0.712769677276488,-0.71200380803465,-0.714668762429387,-0.713456161956941,-0.713431871108691,-0.712597270075114,-0.712597288161933,-0.71248200696627,-0.712368245794134,-0.712227460586023,-0.712098151820871,-0.712007558606265,-0.711948979117833,-0.71191248436824,-0.711898201708694,-0.711898009918472,-0.711905676956637,-0.711921095565828,-0.711943134497977,-0.71197860107167,-0.712031658772423,-0.712114920196834,-0.712206335951527,-0.712315713867767,-0.712391076607305,-0.712484564589712,-0.712494427791429,-0.712471320078126,-0.71203348955697,-0.70790524829185,-1.0936848171679,-1.09049529146368,-1.09413737761252,-1.09302626021112,-1.09512021701135,-1.09507576612552,-1.09498550602668,-1.09495070916389,-1.09499570793641,-1.09507421689121,-1.09510580521468,-1.09508616958049,-1.09506635371677,-1.09503627459848,-1.09500899938018,-1.094996924936,-1.0950043250621,-1.09503978184524,-1.09510117334895,-1.09517904728431,-1.09525834243623,-1.09534188659598,-1.09544351330278,-1.09556246142,-1.09570277640658,-1.09589215620137,-1.09584676027396,-1.09626791187864,-1.0954974795752,-1.0925862969879,-1.70457930986928,-1.6980663484599,-1.70265245938061,-1.69717127350582,-1.69549051299808,-1.69552720561195,-1.69552309484433,-1.69531486709895,-1.69498023164332,-1.69468331587796,-1.69459658701474,-1.69452576218438,-1.69449160989285,-1.69449669265689,-1.69451354733871,-1.694544396596,-1.6945675859646,-1.69456704078635,-1.69454463677199,-1.69451804952298,-1.69449090335968,-1.69445000907408,-1.69436877208544,-1.69431670565477,-1.69415438145339,-1.69414521122455,-1.69403557309306,-1.69356952870224,-1.6942564883088,-1.68805708150046,-2.68561182666388,-2.67329760696626,-2.67725391111385,-2.68803783482438,-2.69017716763276,-2.69098929647731,-2.69217110769128,-2.69334402241667,-2.69473567778131,-2.6953589104777,-2.69573999641633,-2.69599201192043,-2.69604005119222,-2.69600854705265,-2.69592008580608,-2.69584590089634,-2.69585393877058,-2.69594252475162,-2.69602518066378,-2.69601023326686,-2.69588819962559,-2.69571874682812,-2.6955144911651,-2.69522507231705,-2.69503065336464,-2.69425181207456,-2.6936922232262,-2.69373600928296,-2.69117200459239,-2.70579792538265,-4.10003535524431,-4.12741029918446,-4.08288595667158,-4.07960902411764,-4.08368395946625,-4.08405497265387,-4.0843106990699,-4.0820397579386,-4.08115378764388,-4.0813115800136,-4.08155517903038,-4.08216737136902,-4.08275773430673,-4.08324302724724,-4.08357079080557,-4.0836520518852,-4.08347361326333,-4.08315124719709,-4.08286295016785,-4.08262662610246,-4.08229419774329,-4.08177041750361,-4.08113237845222,-4.0803404041605,-4.07911459078242,-4.07846841200078,-4.07443123885547,-4.07309184705858,-4.06863855628408,-4.07508971330015,-5.47544866523633,-5.67048032242473,-5.71552835536665,-5.71513273370259,-5.71864498489147,-5.71642866448902,-5.72100801413362,-5.72512641551377,-5.72541324276164,-5.72559857468971,-5.72516322061356,-5.72494597131081,-5.72529132062204,-5.7260700865882,-5.72718529709827,-5.72841482672566,-5.72955686152181,-5.73038611701152,-5.73087696774635,-5.73157726810438,-5.73324049653595,-5.73610126353074,-5.73976116113376,-5.7438173805751,-5.74683864758357,-5.74757600812324,-5.74817505909032,-5.73602827727836,-5.72743629825786,-5.71687583613632,-5.46493049471582,-5.50059723478122,-5.53973528407344,-5.53651749968611,-5.53853911344479,-5.5266713451778,-5.50021016968912,-5.47917783781102,-5.46063384975836,-5.44644085682382,-5.43602759662617,-5.42808043705577,-5.42223803842231,-5.41810972624659,-5.41568664495019,-5.41508139241838,-5.41619613158489,-5.41911826946276,-5.42431018222708,-5.43194647466217,-5.44176975635285,-5.45378904642077,-5.46816630406679,-5.48496087128322,-5.50500152661002,-5.52619482835136,-5.54415952365775,-5.57568414047151,-5.51038544449871,-5.43047251906096,-2.85050508875479,-2.55831876290389,-2.48050721440259,-2.42765615038279,-2.36723382244132,-2.33542106310003,-2.31224627502683,-2.29585648054447,-2.2825184850291,-2.27060545043956,-2.26054797896017,-2.25219341312807,-2.24568902993779,-2.24112243737948,-2.2384020517098,-2.23746091470493,-2.23870074211671,-2.2425452812294,-2.24850895861758,-2.25596216679082,-2.26500453690311,-2.27598741683091,-2.28948995459718,-2.30592024809692,-2.32360108714288,-2.34863002499572,-2.36903313483203,-2.39052353503792,-2.5274479840315,-2.48740385947346,-0.306721443149683,-0.302372660406271,-0.220593155935018,-0.208348597054426,-0.202943997840628,-0.207692868662119,-0.211737907933323,-0.21285565633298,-0.21199719543788,-0.210156734297675,-0.208273561551486,-0.206856188482494,-0.206088017371369,-0.205881343767147,-0.205922781598041,-0.206044974106936,-0.206297882249308,-0.206611621088054,-0.20715320396843,-0.208297533852538,-0.209969933325035,-0.211785679687859,-0.213115384249439,-0.213436139434814,-0.21239322372132,-0.208919929326092,-0.208250845941544,-0.208530805261454,-0.310988265443528,-0.459445810756101,-0.101368072238604,-0.240097785721984,-0.17279176265436,-0.163203740143156,-0.165549731717043,-0.163983472793959,-0.162938512322081,-0.162370995128911,-0.16199011049276,-0.161846082135976,-0.161685753620736,-0.161508648234246,-0.161291485211964,-0.16109439822715,-0.160971636923802,-0.160913078794003,-0.160922370614062,-0.160963199165863,-0.161017941021174,-0.161059274888681,-0.161103147029229,-0.161297149411931,-0.161683187639261,-0.162227768687707,-0.163404332818967,-0.163503957182183,-0.163534000679349,-0.16588912918574,-0.117867311888772,-0.257213052030135,0.851056135677624,0.801552506828615,0.632143211810663,0.632102778187334,0.614144119808957,0.601914009380062,0.593795583169183,0.585325657260726,0.579660407628119,0.574305321588192,0.56982460781385,0.565826194643081,0.562473339400452,0.560085926844251,0.558912533196382,0.559003225501826,0.560404687130387,0.563091177547542,0.566691970241989,0.570947396343948,0.575950304145585,0.581979101349133,0.589288407678761,0.598310682380232,0.608639111021577,0.617703767268149,0.6299101181011,0.605877609976547,0.636891539151334,0.858103407477424,3.69782175551232,3.80638244542029,3.82968453408989,3.79623022590321,3.77446942403191,3.74276855767031,3.72084525096199,3.6997919690251,3.68346641750242,3.6698715608088,3.65890051354393,3.65024224272669,3.6438735555881,3.63985593668405,3.63820857844689,3.63888794466972,3.64181239826027,3.64673980240039,3.65360718875688,3.66269035505487,3.67437690286607,3.68933629287194,3.70779980673281,3.72905104706725,3.75702636320041,3.77811183855877,3.82654957701452,3.87535907187291,3.95586751633494,4.16514632347481,5.84152953767846,5.82813403169616,5.84324564548615,5.83548253301497,5.84327025365797,5.82897859263807,5.82048961635755,5.80979607994279,5.80113531573418,5.79392426967917,5.78864725976469,5.78508528451921,5.78287513091124,5.78156211765107,5.78082988765267,5.78051785169117,5.78064238119464,5.78148267728629,5.78346171213096,5.78692606114662,5.79196780342992,5.79835980449593,5.80750721095923,5.81541872795739,5.83101737579615,5.84212103233157,5.8480273188032,5.86007138698483,5.75171707600631,5.51466696024957,4.74446275228286,4.78824725860998,4.81052354609532,4.73425665046925,4.729236362666,4.72203532541586,4.71971510279828,4.71781406358844,4.71637384078814,4.71540047269806,4.71470440279189,4.714310312829,4.71407696945508,4.71383376703643,4.7133937909083,4.71266104123123,4.71167364625973,4.71055558105797,4.70942611667077,4.70830829340129,4.70738894964644,4.7058433873755,4.70523265587844,4.70383407503941,4.7019388921288,4.70936292645392,4.70565408786823,4.72648784933162,4.79145002679949,4.69964766652999,3.3283421618148,3.01590186595746,3.23066946648499,3.27480451667758,3.28139521794844,3.29029870748962,3.29259908492612,3.29421253728601,3.29450365415398,3.29427775949548,3.29373982363931,3.2930261054588,3.2922905884618,3.29165173237286,3.29123341967474,3.29116085774967,3.29152251633034,3.29228139082697,3.29332214880715,3.29438509121522,3.2957010308166,3.29687046534047,3.29817683288914,3.30016749335626,3.3011643284181,3.3004155639021,3.31116705963187,3.29587887302348,3.35400920316704,3.47013739379909,2.90924477504726,2.40883502300149,2.09664068125307,2.06716556299321,2.03142303894337,2.024604752271,2.0217018782718,2.02099052585215,2.0211601139505,2.02143307620635,2.02166763405916,2.02176302473736,2.02171935977769,2.0216196305154,2.02157310556359,2.02162166893781,2.02168784481926,2.02161893501213,2.02137906155838,2.02087231054751,2.02021773577282,2.019525397824,2.01864221522456,2.01811601175844,2.01843002030428,2.021249777595,2.01765465518258,2.07979883205452,1.92276028568041,2.67032768220753,3.35839188770587,1.39479364268124,1.27961681757836,1.28476389012616,1.2929752208281,1.29504491535052,1.29745184564095,1.29867533950317,1.29954700969937,1.30036143126471,1.30119551440274,1.30211188628042,1.30304983458612,1.30384340992806,1.3042788492746,1.30422402203548,1.30375515294075,1.30305765970272,1.30237647502203,1.30183331374852,1.30141310482835,1.30119026473163,1.30103912984265,1.30039799399563,1.29889234449857,1.29876579998359,1.29681018992145,1.24667795089928,1.85693479364013,4.82881811816975,-1.70790031835805,0.843162268614645,1.30342384564633,1.39045538153426,1.38858196063861,1.39842655702794,1.39966775100059,1.39938945881428,1.39949455444962,1.39931464794765,1.39916802637073,1.39904455634705,1.39894121647239,1.39886444366637,1.3988134763579,1.39879171466901,1.39879996734415,1.39883577380648,1.39889467011357,1.39896726718982,1.39905426215391,1.39914823835447,1.39920450380948,1.3994344470906,1.39966488297929,1.39755612835455,1.41091802163714,1.34082377209613,1.59393593713673,-0.224029683218633,0.429372998501964,0.938117722076956,0.866309915568267,0.964848569720308,0.9760241135105,0.983336334399113,0.987765431910643,0.988970172389893,0.989665377250156,0.98998507157499,0.990128136119294,0.990212436349355,0.990261616878086,0.990296022438745,0.990324278940015,0.990348559746022,0.990367535119205,0.990377991127633,0.990375554271616,0.990352668078853,0.990281175066655,0.990132745564901,0.989856071148535,0.988914909534763,0.988202717274823,0.983585534530971,0.975418672329643,0.98012174233964,0.69601736834752,0.0195794474042551,0.190272204749774,0.361914437062914,0.495400471073022,0.509061641445916,0.538344018963923,0.545470947052029,0.549746904104314,0.551870662853203,0.552849191519858,0.553436150398614,0.553788294682238,0.554008615794893,0.554151428379159,0.554239857252799,0.554283743863996,0.554287159773968,0.554252767085555,0.554182776763848,0.554072885503662,0.553914248055355,0.553692119378662,0.553299032378509,0.55285306357884,0.551516277144571,0.550368658790985,0.543138844591337,0.539311138830859,0.459992708282463,0.61764573464965,0.338796858945517,0.339175904264615,0.32872849931296,0.349459873023148,0.377363149700734,0.383360800973453,0.391557893529427,0.394508121986772,0.396390572011439,0.397414639495442,0.397954808493999,0.398259889432601,0.398433914802321,0.398532337062878,0.398584853958906,0.398603818124483,0.398597189550232,0.398566766355398,0.398510800985822,0.398424808462831,0.398286319515405,0.398100037700462,0.397727623082304,0.397286681256067,0.395751061368123,0.39501281877505,0.383869322563947,0.38880649815704,0.318602393356771,0.317700066136738,0.28562073810555,0.172870135760014,0.186908761807907,0.193615744363519,0.199161487576258,0.20673090859062,0.209267719965343,0.211907856625313,0.213122984361501,0.213857845573646,0.214257424406163,0.214464984461368,0.214578927620621,0.214639535906193,0.214673634012029,0.214692741369318,0.214701803011812,0.214702136136807,0.214689514616114,0.214661715687379,0.214590795062514,0.21448494023797,0.214157190473508,0.213976996060508,0.212005298389107,0.213256696378006,0.203633680165072,0.210877593757581,0.208661721260229,0.212238472050806,0.18139371762942,0.101588250635206,0.0968199039855993,0.100963107189932,0.102764596023986,0.104528943930109,0.106540427940305,0.107431754346674,0.108252119720637,0.108673432250298,0.108941767854748,0.109087381774846,0.109164145180432,0.109201186148707,0.109217232740218,0.109223520296718,0.109225784176045,0.109225979688441,0.109220521768231,0.109207649787038,0.109152700183661,0.109109320773888,0.108746688435527,0.108855643727509,0.107110499646422,0.107768560369557,0.104321349679808,0.100587705981328,0.0942535001600426,0.0999460038987143,0.0941572966115392,0.0234078583937815,0.0230984382186472,0.0225868928232557,0.0235339841397086,0.0240172205856793,0.0245142075639033,0.0249808925602869,0.0252510891664136,0.0254708219515135,0.0255988433338088,0.0256762119271275,0.0257175756478468,0.0257354837503362,0.0257413881035537,0.0257417736149562,0.0257423465759871,0.0257446591776004,0.0257430250290552,0.0257442828528522,0.0256950841961069,0.0257194143405526,0.0254542568839663,0.0256101642833735,0.0250244122408899,0.0250184053094755,0.0250822293714909,0.0270632895066475,0.0253252768766194,0.0252584197666432,0.0229296932161308,-0.0125370665296318,-0.010024160838785,-0.0105104190955791,-0.0104638010964627,-0.0104311602781565,-0.0103436113405338,-0.0102896484050203,-0.0101964477276354,-0.0101415761002569,-0.0100863600043574,-0.0100514808538638,-0.0100253519572039,-0.0100093888509154,-0.00999983946925355,-0.0099953364473582,-0.00999484898801279,-0.00999553812486427,-0.0100055117981836,-0.0100059356878929,-0.0100528791281927,-0.0100355310028806,-0.0101560270499384,-0.0101622675267449,-0.0103054148505718,-0.0103923927638593,-0.0112666986208949,-0.0113174848290746,-0.0109375959396199,-0.0109485566727317,-0.00916227158924602,-0.0381105809234944,-0.0382152759607906,-0.0383073108176002,-0.0380775878590803,-0.0380485926789671,-0.0378813345648359,-0.0377968101963406,-0.0377050887128906,-0.0376354696540323,-0.0375701174675464,-0.037514780563417,-0.0374677884273853,-0.0374307441773524,-0.0374026123508054,-0.0373861806792086,-0.0373835146948342,-0.0373908323278984,-0.0374182497272635,-0.0374412145183493,-0.0374964372553315,-0.0375265183122065,-0.0375950696107613,-0.0376234095816446,-0.0377260290584013,-0.0375643584117985,-0.0374973055971445,-0.0376718797921884,-0.0378672541696719,-0.0382776215626627,-0.0372013069559288,-0.0974355701689493,-0.0984994978137079,-0.0986856847090077,-0.0983240010727653,-0.0982403196098545,-0.0979698952227284,-0.0977959499912728,-0.09762349859589,-0.0975188505545455,-0.0974280175557105,-0.0973593553357003,-0.0972959440688717,-0.0972456643511795,-0.0972073454038677,-0.0971839165621447,-0.097180671824251,-0.0971910566679964,-0.0972238386202478,-0.0972597795103584,-0.097321202445046,-0.0973785116971064,-0.0974859167136872,-0.0975676052007241,-0.097768627366446,-0.0980207284838721,-0.0982391426157639,-0.0983557946936913,-0.098545980233925,-0.0985074779330722,-0.0982249149344504,-0.196966869596728,-0.198267981107981,-0.198945376420789,-0.198575655375003,-0.198649579685025,-0.198446148008761,-0.198414775992293,-0.198297240393166,-0.198212816815056,-0.198121518767154,-0.198061545143483,-0.198013045087323,-0.1979793702097,-0.197957304877505,-0.197945228022638,-0.197945738515689,-0.197954007725531,-0.197977988503898,-0.198006319647317,-0.198057228766357,-0.198101497544002,-0.198183520405557,-0.198251730107623,-0.198317206995376,-0.198384065214823,-0.198552745133081,-0.198588288606931,-0.198877870196492,-0.198319960668912,-0.196948872395581,-0.336621162787737,-0.337914370988618,-0.338917281633501,-0.338563636329589,-0.338786926513064,-0.338471055331378,-0.338362125752254,-0.338211676515193,-0.338152964352681,-0.338064049501888,-0.33799591933316,-0.337936862836502,-0.33789646089753,-0.337871558493943,-0.337857951017517,-0.337854903836102,-0.337857355976004,-0.337871156984594,-0.337889764439704,-0.337929088358178,-0.337974929136949,-0.338043277353438,-0.338130844871397,-0.338245403109102,-0.338305114115025,-0.338390974859517,-0.338285542110493,-0.338331321118095,-0.337836019041423,-0.335521513173287,-0.531494966126616,-0.532405844772531,-0.534012296428021,-0.533302655085092,-0.533890723198726,-0.533871226853269,-0.534018201286746,-0.533851385501662,-0.533785674034162,-0.533724088632445,-0.533695994886408,-0.533677788008807,-0.533664232229594,-0.533656207804447,-0.533650983934493,-0.533649784020825,-0.533653983055799,-0.533670900178397,-0.533700149757061,-0.533749242752527,-0.533812740548372,-0.53388638752309,-0.533949415192018,-0.534033712520236,-0.534088208369964,-0.534214562348399,-0.534133893429645,-0.534237908796794,-0.533659519101516,-0.530643038870752,-0.814664002373231,-0.814613382924812,-0.817411921911459,-0.816095237853355,-0.816046289978638,-0.81508929642724,-0.815094679813528,-0.814965341318753,-0.814835638911282,-0.814672950583831,-0.814523845909896,-0.814418938964578,-0.814350660989637,-0.814308678444398,-0.814292299743375,-0.814291676993698,-0.814300448351528,-0.814318005998047,-0.814342862391603,-0.814382906872631,-0.814443245130571,-0.814539208015909,-0.814642825674903,-0.814767144225153,-0.814854935632265,-0.814960275185769,-0.814978327298125,-0.814918007462471,-0.814566618737793,-0.809117818034721,-1.2508277956277,-1.24858909515617,-1.25232432546551,-1.25117862653222,-1.25355120925647,-1.25349197275121,-1.25337877724312,-1.25333825754401,-1.25339313364863,-1.25348736331561,-1.253528117874,-1.25350930326449,-1.25348881792775,-1.25345502005217,-1.25342437094657,-1.25341127137163,-1.25342038518727,-1.25346158883997,-1.25353202862577,-1.25362075154052,-1.25370951236039,-1.25380239355383,-1.25391691546093,-1.25404962701127,-1.25420702621205,-1.25442040346012,-1.25437716165688,-1.2547906455015,-1.25418877631657,-1.2495191118747,-1.95009927879218,-1.94493467805959,-1.94955447202629,-1.94346389235631,-1.9416058722394,-1.94171068568569,-1.94172890908284,-1.94150396132049,-1.94112745551823,-1.94078813422727,-1.9406874241166,-1.94060475194056,-1.94056546822578,-1.94057146442715,-1.9405896153493,-1.9406227679009,-1.94064684320935,-1.94064434135151,-1.94061690978486,-1.94058432457553,-1.9405510119991,-1.9405006228402,-1.94040221781005,-1.9403386990197,-1.94014417182017,-1.94012190246884,-1.94001684350621,-1.9393676293267,-1.940560173648,-1.93169232198134,-3.07191734114013,-3.0607267956321,-3.06476027512579,-3.07672583452523,-3.07902445344555,-3.07991487074197,-3.08123455081335,-3.08256253180776,-3.08415444772878,-3.08487966619939,-3.08533287464077,-3.08563483750007,-3.08569795248108,-3.08566757948603,-3.08557173709546,-3.08549169666437,-3.08550252285645,-3.08560161447185,-3.08569273807187,-3.08567142223894,-3.08552553213908,-3.08532404132192,-3.08508106105663,-3.08473651697606,-3.08450901584129,-3.08357895721092,-3.0829536238565,-3.08284017214593,-3.08054801566683,-3.09405530825683,-4.68455339419333,-4.71621047807761,-4.66795229804129,-4.66452633418667,-4.66930768603435,-4.66986478771455,-4.67023863446137,-4.66770147616378,-4.6667133695934,-4.66688018651595,-4.66714285233009,-4.66783626891499,-4.66851621391289,-4.66908046944099,-4.66946266956949,-4.66956139771916,-4.66936533964566,-4.66900388959144,-4.66867616428043,-4.66840916253626,-4.66804181459097,-4.66746676504641,-4.66676876793491,-4.66589929896351,-4.66451410823754,-4.66382623790183,-4.65920804243141,-4.65748102216683,-4.652914614157,-4.66031629032636,-6.24195965952572,-6.45185154730737,-6.50444518575959,-6.50362160078367,-6.50733095428006,-6.50445308231089,-6.50939501984422,-6.51378853213491,-6.51393042157326,-6.51400991017539,-6.51341547030976,-6.51308036994362,-6.51339881885315,-6.51423348423681,-6.51547646971501,-6.51686914391663,-6.51817353468237,-6.51914210886446,-6.51975365325808,-6.52062799253345,-6.52261752379177,-6.52598792305057,-6.53028504446208,-6.53504688868956,-6.53868786256199,-6.53958028037582,-6.54068113801796,-6.52730308890417,-6.51493819853745,-6.51119092678367,-6.20076425025068,-6.2269331262765,-6.27074320300428,-6.26617522953046,-6.26870853597043,-6.25508080597726,-6.22507709457579,-6.20121951982223,-6.18015459565433,-6.163990049181,-6.15211586392757,-6.14305598550293,-6.13639198735682,-6.13168226662771,-6.12891059468612,-6.12821475591243,-6.12949277702888,-6.13283823383999,-6.13877002122733,-6.14748103781987,-6.15867702512243,-6.17236693412096,-6.18874344602207,-6.20786960650153,-6.23063614714327,-6.25506436761841,-6.27469792197576,-6.31162627155092,-6.23743463164617,-6.15788947138894,-3.21051245317498,-2.88746511995502,-2.80147827875389,-2.74127169348244,-2.67252373822253,-2.63656615687308,-2.6102669915117,-2.59164520652214,-2.5765113931804,-2.56301183124407,-2.55162390771817,-2.54216578263106,-2.53479094553734,-2.52960332503825,-2.52651092040761,-2.52544087993804,-2.52683998263207,-2.53118919449658,-2.53793954779651,-2.54637364741244,-2.55660290411034,-2.5690296245377,-2.58430763937682,-2.60292894546987,-2.62297718597326,-2.65112856803657,-2.67495462854227,-2.69831095236598,-2.85350599155678,-2.80932987504202,-0.331484999962522,-0.332565117239848,-0.236714593068098,-0.223367089390804,-0.216822084489001,-0.222166846617956,-0.226659739065147,-0.227888092908941,-0.22692339083835,-0.22481663357847,-0.222653485845781,-0.221025645140056,-0.220144130804628,-0.219912780243037,-0.219964676726325,-0.220099845381341,-0.220391091543276,-0.22076070459829,-0.221384690670734,-0.222701003452383,-0.224626232621468,-0.226717122487369,-0.228250523320226,-0.228627600983084,-0.227482396165163,-0.223465397494123,-0.222885637222038,-0.223583176236885,-0.33882828953152,-0.495982974472145,-0.0892042796695531,-0.243275879045485,-0.168463097930658,-0.158464982039141,-0.161002263596815,-0.159332746945136,-0.158354232014149,-0.157838722209986,-0.157495593200941,-0.157405107288921,-0.157280344616565,-0.157126791125277,-0.156914437676003,-0.15671384125483,-0.156586753302721,-0.156521899605327,-0.156523332646359,-0.15654993117396,-0.156579700506872,-0.156584029612797,-0.156582617365731,-0.156741851988423,-0.157110237874799,-0.157637780404707,-0.158888175625979,-0.158960896131005,-0.158634579685068,-0.161687624114713,-0.107478098974239,-0.269791901855914,0.986855556451639,0.940395357704681,0.751037990035482,0.75114558918116,0.730390085568984,0.716399392829984,0.707212640336927,0.697589866141815,0.691158314979567,0.685076534102025,0.679996503362496,0.675461696929679,0.671661357970663,0.668955873499377,0.667626633150568,0.667732779521556,0.669327926830508,0.672380599229427,0.676469483671374,0.681301429452525,0.686988430797567,0.693851464022115,0.702175194615598,0.712486143283319,0.724302146379302,0.734664167959767,0.74865279012499,0.720964387017092,0.757881698543738,0.999307239631572,4.22765733673571,4.3435785473521,4.367230512621,4.32973001872056,4.30547849619033,4.26931284701405,4.2442957776615,4.22031001223118,4.20176775783528,4.18631189248738,4.17384749013988,4.16400879970453,4.15676619103398,4.15219313473523,4.1503139282653,4.15107972136321,4.15439681994951,4.15999040822245,4.16779011382541,4.17810799828731,4.19138147873683,4.20838436339496,4.2293464853402,4.25351288961447,4.28532558887768,4.30918963724226,4.36424835336425,4.42037268501751,4.50907517285449,4.74769089817172,6.66693543763372,6.64282487866424,6.66362070355998,6.65196969547325,6.66007714996704,6.64404892120237,6.6345339937594,6.62223302610187,6.61228631889385,6.60399122322305,6.59790064932019,6.59377741515839,6.59120938737071,6.58967954233505,6.58883027127693,6.58848016465333,6.58865057047341,6.58965838419593,6.59197784988493,6.59600009912841,6.60182260173024,6.60920149996806,6.61972130614738,6.62880937636481,6.64672300182109,6.65964190075863,6.66627044892666,6.68097460157803,6.5595299137624,6.30723001813694,5.44289647019004,5.48151235413781,5.50956539276528,5.4295931708413,5.42384898126622,5.414269726494,5.41152752818169,5.40920135668062,5.40746534944696,5.40629093317069,5.40545804605704,5.40498272565273,5.40470562003618,5.4044274525909,5.40393251480017,5.40310807306386,5.40199214133474,5.40072560762639,5.39945075679785,5.39820452461163,5.39720554106474,5.39551416786547,5.39493920728597,5.39348257233273,5.3914404904672,5.39994007807829,5.39617016429959,5.41863040853652,5.49051312257514,5.38979554145758,3.83209676188906,3.49625088892927,3.71767737727108,3.75961285486773,3.77071114000235,3.78070420157599,3.78351324452744,3.78534606004664,3.78568988593378,3.78542057755252,3.78480161113415,3.78398359389066,3.78314150348597,3.78240907262129,3.78192379433832,3.78182726258903,3.78222344408813,3.78307454833854,3.78425132392692,3.78545409587027,3.78694846051275,3.78825987932738,3.78972266729251,3.79196249524844,3.79311754478924,3.79233373823337,3.80423979211685,3.7895477214933,3.84837949298667,3.98750856995285,3.27604185748993,2.74980292064256,2.41589480865712,2.37980383752123,2.33982663877365,2.33158607247521,2.3283909727786,2.32756255894924,2.32776147667182,2.32807079326345,2.32833022543264,2.32842932746194,2.32836786614208,2.32824252054145,2.32818111298207,2.32823433435618,2.32831526174427,2.32824763909399,2.32798865501441,2.32742319822342,2.32669118348565,2.32591796353873,2.32492397352132,2.32433546527416,2.32467663380322,2.3278181708249,2.32449631244958,2.38981171258953,2.23790445164608,3.02752705191128,3.68382548144973,1.63442919352437,1.48691207305826,1.48623183408136,1.49678881919923,1.4988263457122,1.50156656322847,1.5029848003547,1.50399870725942,1.50495314184824,1.50592763538298,1.50699323979005,1.50808149633629,1.5090023589873,1.50951065397798,1.50945287795004,1.50891384094948,1.50810397382317,1.507306571974,1.50666141884182,1.50615301006401,1.50587013213274,1.50566892592351,1.50492327528027,1.5032224307859,1.5030931178564,1.49988988732684,1.45235867897588,2.10134440122282,5.24602606266127,-1.72333908217747,0.983938381367994,1.46733930064345,1.5705553015796,1.56723625478096,1.57852449342645,1.57987110069452,1.57955691475812,1.5796812085924,1.57948097547171,1.57932023941375,1.57918456113021,1.57907038534661,1.57898546101623,1.57892888381139,1.57890421791396,1.5789127903471,1.57895192690035,1.57901625775662,1.57909588240961,1.57919042880578,1.57929235571841,1.57935212687503,1.57958816707277,1.5799493710766,1.57698865588428,1.59386722211753,1.51395178149085,1.76590743294904,-0.155350732147398,0.521326414666128,1.04916919630298,0.984439768861185,1.0930523848371,1.10593847855882,1.11411981717293,1.1191294514472,1.12047906443719,1.12126256314539,1.12162135442067,1.12178014761143,1.1218733339687,1.12192727756107,1.12196475964073,1.12199576467648,1.12202287898174,1.12204421399899,1.12205649833414,1.12205448986817,1.12202940965074,1.12195042288298,1.12178207401847,1.1214767037562,1.12039484963988,1.11961183686696,1.11466369963712,1.10310876675414,1.1148375688558,0.803351134508292,0.0902455689684084,0.220335308220843,0.414871320215518,0.563744924065674,0.57994964559154,0.613092862824586,0.621090237211265,0.625921522198402,0.628312310586941,0.629408107094223,0.630066067511586,0.630460047216686,0.630706364388039,0.630866115881793,0.630965346423283,0.631014815802765,0.63101931872866,0.630981868540449,0.630904448279378,0.630782757157865,0.630606245136273,0.630359334580104,0.629919271554043,0.629420076246691,0.627934991584494,0.626519331712059,0.61874488690527,0.614560302202515,0.52358902641878,0.680592928384167,0.379108029150053,0.383224803456886,0.373102558795119,0.396968668234818,0.428725481633434,0.435483038605185,0.444806897253517,0.448123542177119,0.450248932376115,0.451405294990404,0.452015939142199,0.452362238587907,0.452560423628465,0.452672723853518,0.452732823705681,0.452754808687375,0.452747147292824,0.452712268461996,0.45264841998595,0.45255015110422,0.452392471340281,0.452180529903541,0.451759088424238,0.451253627176114,0.449539760887984,0.448697112209945,0.435990249205152,0.441436295104026,0.365960159889021,0.364987979901467,0.324795822853038,0.198368950210154,0.214077953920287,0.221910155068737,0.22825448161644,0.236910582524268,0.239767841974225,0.242769504091341,0.244140957535136,0.244972563293638,0.245424696589894,0.245659375058016,0.245788499329315,0.245857536814693,0.24589617943401,0.245917621853336,0.245927789901022,0.245927475534719,0.245912315938903,0.24588018781368,0.245798779292369,0.245678716106298,0.245307462366975,0.245111795620575,0.242862409857794,0.244352487618517,0.233459301514501,0.241258797548606,0.237594597121989,0.242376889105965,0.20750428103586,0.117507440654067,0.112442950737156,0.117154169331966,0.119272077795592,0.121285682797089,0.12360088486106,0.124613140858018,0.125549011533125,0.126026190918369,0.126330396617475,0.126495857200734,0.126583336940483,0.126626022766793,0.126645311890014,0.126653000335079,0.126655695823397,0.126656057812896,0.126649098333432,0.126633807394536,0.126570717898392,0.126523072378619,0.126106541379591,0.126245774283977,0.124238018643759,0.125005609693188,0.121023265863667,0.117062815323812,0.109689402144752,0.116060722089365,0.109362709035074,0.0289612753242813,0.0285519464068774,0.0279772507719733,0.0291040553494136,0.0296744859852091,0.0302555920748797,0.0307987930588196,0.0311105454963148,0.0313632522346195,0.031509993669878,0.0315989448782742,0.031647371823947,0.0316688832807073,0.0316765953071982,0.0316780597456988,0.0316786791958035,0.0316805233044762,0.0316778994873407,0.0316781609766715,0.0316200837256664,0.0316495578976897,0.0313422682941069,0.0315261104042359,0.0308450073823998,0.0308582289056563,0.0308592777997573,0.0330986657122994,0.0310877251466099,0.031087791182614,0.028115921801343,-0.0121291715883688,-0.00910221561000587,-0.00966914188091278,-0.00961965528686068,-0.00957525198139717,-0.00947046803589332,-0.00940718228960109,-0.00929985972330197,-0.0092375301838847,-0.00917483916484683,-0.00913547056305172,-0.00910592066207748,-0.00908749529874448,-0.00907650334165456,-0.0090713003456699,-0.0090704529724381,-0.00907143496570904,-0.00908324545194246,-0.00908333930404138,-0.00913745797985229,-0.00911671786481314,-0.00925455436170454,-0.00925918113036322,-0.00942763082858711,-0.00952330307653026,-0.0105180715222429,-0.0105774829651309,-0.0101729108481203,-0.0101777101170702,-0.00802517625593106,-0.0407359926109669,-0.0411091113375297,-0.0411104794754498,-0.040856530225957,-0.0408160745476336,-0.040624018396936,-0.0405239047182172,-0.0404168148518082,-0.0403354080559814,-0.0402598436498334,-0.0401970555997366,-0.0401439025461478,-0.0401023713210303,-0.0400713918489783,-0.0400530218620704,-0.0400499621543164,-0.0400582398841155,-0.0400885523684511,-0.0401136198094376,-0.0401766661243618,-0.040210393722291,-0.0402903641876014,-0.0403249447880961,-0.0404454161179893,-0.0402624904744188,-0.0401867079147149,-0.0403901453478575,-0.0405975539035324,-0.0411084824551883,-0.0399449588879304,-0.108540498838493,-0.109937029153398,-0.110110914209149,-0.109739461094837,-0.10963821768308,-0.109338165367752,-0.109142903526499,-0.108947183501469,-0.108829046438896,-0.108726041241751,-0.108648840770041,-0.108578280822888,-0.108522525156468,-0.108480313705812,-0.108455087822215,-0.108451409813257,-0.108462444219769,-0.108498762128104,-0.10853771324088,-0.108606212635188,-0.108670466317717,-0.108792059853746,-0.108885230870896,-0.109114518979988,-0.109398749220043,-0.109642315549286,-0.109776355072713,-0.109969167398235,-0.10995798981807,-0.109411646232802,-0.220955251996608,-0.222660381101105,-0.223338634076623,-0.222952484104639,-0.223036036013546,-0.222812604651255,-0.222782623046114,-0.222650728829142,-0.222556206567307,-0.222453097762882,-0.222385880992782,-0.222331592871788,-0.222294686770413,-0.222270270420494,-0.222256926496915,-0.222257848551299,-0.222266620217093,-0.22229309545914,-0.222324625734445,-0.222381354965368,-0.222430599474444,-0.222522095427811,-0.222596883161748,-0.222668198180935,-0.222739690124338,-0.222921657680241,-0.222963915307638,-0.223263044136975,-0.22267891160738,-0.220844554195583,-0.378183044533208,-0.380001255266795,-0.381008929411152,-0.380657553469763,-0.380895703105013,-0.380537640815095,-0.380413681281521,-0.380242597839078,-0.380177560335832,-0.380076496055868,-0.379999551042169,-0.379932253613694,-0.379886235997292,-0.379858220742585,-0.379842629025064,-0.379839123791629,-0.379842139076088,-0.379857647779412,-0.379878641789112,-0.37992327153304,-0.379975376984292,-0.380053361795547,-0.380152748060476,-0.380282565317072,-0.380352134123649,-0.380447336634089,-0.38033343309725,-0.38037075952303,-0.379921177920064,-0.376984829030099,-0.597778208164324,-0.599370563864476,-0.600983440168969,-0.600246950801186,-0.60089846923445,-0.60088286786713,-0.601052720489643,-0.600861579613616,-0.600788491818864,-0.600719627452059,-0.600689010352612,-0.600669593973087,-0.600654660440701,-0.600645700964158,-0.600640020666341,-0.600638514031241,-0.600643203039313,-0.600662522431192,-0.60069560531092,-0.600751025536033,-0.600822368201615,-0.600905141616991,-0.600976074868771,-0.60107039335221,-0.601131493812455,-0.601275002726881,-0.601189700276506,-0.601261435004833,-0.600725522804051,-0.596806357950765,-0.916776732207404,-0.917732719979819,-0.920549580464566,-0.919170910865358,-0.919079571312052,-0.917998382762542,-0.918010281783507,-0.917867088203163,-0.917720541694801,-0.917535888428441,-0.917365545220767,-0.917245475786492,-0.917167765169854,-0.917119773979801,-0.9171011379367,-0.917100525502456,-0.9171102257662,-0.917129760200572,-0.917157446778719,-0.91720229555192,-0.917269984218102,-0.917377782321175,-0.917494257248052,-0.917634894307115,-0.917733002998661,-0.917847632844973,-0.917887428809489,-0.917766708436491,-0.917564417443961,-0.91054161022587,-1.40828823616407,-1.40751153204248,-1.41115045920653,-1.41004098764309,-1.41268232235722,-1.41261235572346,-1.41247095981608,-1.412426833606,-1.41249157790512,-1.41260377931455,-1.41265663087251,-1.41263929131574,-1.41261879860426,-1.41258188935965,-1.41254772629246,-1.41253362377594,-1.41254478692634,-1.41259197738891,-1.4126715225061,-1.412770797629,-1.41286923919148,-1.41297131801441,-1.41309719339812,-1.41324333320684,-1.41342027518612,-1.41365177624987,-1.41361815183532,-1.41398863634166,-1.41368172520843,-1.40678084207655,-2.19606061026704,-2.19308345995913,-2.19746335534527,-2.19083248412676,-2.18879110640048,-2.18898677476073,-2.18902703496464,-2.18878980885143,-2.18837165816479,-2.18798414273018,-2.18786713862675,-2.18777121514378,-2.18772563630353,-2.18773225174206,-2.18775137341103,-2.18778613709738,-2.18781027159263,-2.18780511620476,-2.18777242312428,-2.18773367734474,-2.18769366923163,-2.187634464395,-2.18751907525665,-2.18744278781967,-2.18721559115122,-2.18717719468346,-2.18709407498999,-2.18620188355637,-2.18807681459383,-2.17584171241517,-3.45885051672322,-3.4497419418586,-3.45372592930474,-3.46677689984238,-3.46918484904274,-3.47014995239957,-3.47159445819737,-3.47306469443759,-3.47486602782417,-3.47570151101913,-3.47623249197113,-3.47658946930881,-3.47667023706567,-3.47664293736724,-3.47654162116149,-3.47645759784575,-3.47647255426325,-3.47658241414254,-3.47668126467903,-3.47665288041604,-3.47648166510782,-3.476245339374,-3.47596272249948,-3.47555967108889,-3.4753016207383,-3.47420268257504,-3.4735381023791,-3.47316509188478,-3.47148914481148,-3.48264917436446,-5.26975823952059,-5.30521675143061,-5.25424487268092,-5.25071755449223,-5.25623615872378,-5.25700116775204,-5.25754936326074,-5.25475423522973,-5.25365263865232,-5.25381780853625,-5.254088369823,-5.25485685505912,-5.25562405618151,-5.25626667316532,-5.25670307783522,-5.25681908582527,-5.25660612679042,-5.25620761240495,-5.25584248592088,-5.25554728914389,-5.25515144875042,-5.25453457033673,-5.25378665698162,-5.25285313949113,-5.25131554010139,-5.2505992493805,-5.24542828892641,-5.24323337059404,-5.23868030690158,-5.24738891013429,-7.00926328745196,-7.22847002234138,-7.28913143964048,-7.28768430420242,-7.29160055567492,-7.28790356689563,-7.29309787809842,-7.29770847681006,-7.29767096563619,-7.29762306086738,-7.29685402502876,-7.29638458532996,-7.29666000554533,-7.29753706329381,-7.29889888627454,-7.30045076112999,-7.30191639580193,-7.3030270462898,-7.30376980848788,-7.30483368467912,-7.30716400709493,-7.31105926250164,-7.31601098584906,-7.32149347410224,-7.3258026123844,-7.3268369302276,-7.32852794281197,-7.31414619290896,-7.29697147661193,-7.30385545635665,-6.93436725285372,-6.94591686312228,-6.99455482055963,-6.98823291207913,-6.99138533714421,-6.97609469067014,-6.94264352461356,-6.91603447300198,-6.89250330201966,-6.8743971870235,-6.86108325833656,-6.85092853801045,-6.84345748203195,-6.83817836818611,-6.83506519524452,-6.83428099041157,-6.83572421258088,-6.83949300431695,-6.84615627186548,-6.85592689266335,-6.86847781363752,-6.88381523749514,-6.90216767187058,-6.92359632800996,-6.94901885735483,-6.97674888369142,-6.99773075258673,-7.04026369070528,-6.95710791547409,-6.88304415871632,-3.56822184299403,-3.21817277135128,-3.12504092256626,-3.05770188740308,-2.98068169337496,-2.94071272146845,-2.91128181526111,-2.89040944824249,-2.87347565474139,-2.85839622398777,-2.84569005341598,-2.83514287560417,-2.82690748611626,-2.82110202765582,-2.81763741941583,-2.81643836691497,-2.81799327315304,-2.82283868771268,-2.83036628004678,-2.83977193958935,-2.85117755210295,-2.86503519853135,-2.88206730034455,-2.90286529646413,-2.92527435339149,-2.95644726049334,-2.98393168102523,-3.00885225067055,-3.18182078509444,-3.13278583474834,-0.357983448710998,-0.367225390911878,-0.256062393699144,-0.242036146349834,-0.233988422736897,-0.239863268579625,-0.244770146578473,-0.246092611682228,-0.245021425250426,-0.242645756740302,-0.240193431896448,-0.238343440635437,-0.237340584776633,-0.237082546470415,-0.23714678116065,-0.237296752941499,-0.237625267889751,-0.238054345831618,-0.238767698735898,-0.240258936304699,-0.242440493382453,-0.244817516991805,-0.246568503059179,-0.247026014327474,-0.245807902008189,-0.241253591185142,-0.240887914622891,-0.241943574643846,-0.369883282722349,-0.531204485037013,-0.0761123460549306,-0.24428599234075,-0.162657816565894,-0.152410300919718,-0.155116296141721,-0.153362742554322,-0.152488835294663,-0.15203688362259,-0.151734715159887,-0.151702471943833,-0.151615437702239,-0.151490175220724,-0.151286496916697,-0.151085324869691,-0.150955451058313,-0.150884697744182,-0.15087621656539,-0.150883890877025,-0.150882994533339,-0.150845240128183,-0.150793126166691,-0.150910231722068,-0.151250282160933,-0.15174274747933,-0.153049442881074,-0.15304025123408,-0.152378809362095,-0.156366436733423,-0.095976909134485,-0.283193488428216,1.12186277592234,1.08295862414128,0.874489077537148,0.874704719703346,0.85105352952337,0.83534187673627,0.825080485169092,0.814289011126878,0.807092867773201,0.800273247603303,0.79459163349472,0.789517062845322,0.7852680660131,0.782244035022063,0.780760099349995,0.780883667800693,0.782674391772124,0.786094561975295,0.790672606544091,0.796083255499098,0.802459700178152,0.810167774384893,0.819519216839618,0.831139780881146,0.844464000061681,0.856118083785516,0.87199350800344,0.840492245872979,0.884210316140815,1.14167940100366,4.75812255525572,4.87819109090657,4.90212829409178,4.86073295058874,4.83402210934511,4.79333037731104,4.76530157692577,4.73837749416426,4.71766036521336,4.7003677328851,4.68643465754786,4.67543545313534,4.6673358732884,4.6622170648939,4.66010831615691,4.66095683364585,4.66465583552854,4.67090023818313,4.67961468686681,4.69114597857659,4.7059780150235,4.72498779979743,4.74840403706432,4.77542264198553,4.81102563565248,4.83759453827602,4.89929460800427,4.96300415656943,5.05835190989802,5.32600673059266,7.48915807571693,7.44915693881665,7.47629210768657,7.46047950350434,7.46919989104261,7.45138595390197,7.44096766955835,7.42705944637695,7.41583831172326,7.40646022076832,7.39955665649102,7.39486738789151,7.39193477153121,7.39018369806831,7.38921408645407,7.38882509278925,7.38904416333888,7.39022382592716,7.39288715752893,7.39746911142094,7.40407373269456,7.4124347550887,7.42433336803581,7.43458227660317,7.45482919132317,7.46951125294817,7.47662728731685,7.49419445355487,7.3603111400712,7.10017851951176,6.14210587118659,6.17406209487671,6.20860828583285,6.12485663354556,6.11858741890526,6.10629484418239,6.10309716475056,6.10030561798167,6.09824987752978,6.09685636573271,6.09587138195592,6.09530682090379,6.0949795818824,6.09466361578999,6.09411522178483,6.09320374891422,6.09196675671038,6.09056188293681,6.08915439622895,6.08779466023605,6.0867389505962,6.08492411047565,6.08442232911807,6.08294478127758,6.08077619370349,6.09052651010294,6.08667617498962,6.1109890419928,6.18803462515769,6.08086642414867,4.33794872444983,3.97993861341812,4.20666489441489,4.24506458321586,4.26130702395776,4.27238700439199,4.27572017219139,4.27778412896752,4.27817875921245,4.27787116557585,4.27717248676218,4.27625229855117,4.27530676629823,4.27448240888628,4.27393038509998,4.27380813799023,4.27423452934011,4.27517158853947,4.27647843268421,4.27781321293255,4.27948093585128,4.28092489998131,4.28253519896219,4.28502005996953,4.28632257582417,4.2853820729629,4.29872388282661,4.28400635006887,4.34432869137339,4.50508869156674,3.63914036885425,3.09173043368289,2.73745622466148,2.69412682713508,2.6499396652139,2.64028012258708,2.63678214759247,2.63584124071115,2.63606798856556,2.63641167027655,2.63669626064678,2.6367978522858,2.63671783316917,2.63656635189409,2.63648896487429,2.6365455364245,2.63664056779287,2.63657394704488,2.63629719566507,2.63567392943516,2.63486653063665,2.63401536589972,2.63291088828262,2.63225998301793,2.63265381602942,2.63614100163305,2.632894942058,2.70216777554014,2.55606530009164,3.3839136795526,4.00500170286108,1.87836194233259,1.69793722617065,1.69098465625977,1.7038976273307,1.70585301053333,1.70892369868963,1.71053029479852,1.71168828154921,1.71278149698153,1.71389518208707,1.71510880233191,1.71634531196649,1.71739199926152,1.71797322481792,1.7179140183062,1.71730766954399,1.71638797575926,1.7154766215091,1.7147306830482,1.71413364871246,1.71379171516622,1.71354024622232,1.71269386515321,1.71074469943125,1.71082095764029,1.70577860799806,1.6618254477416,2.34693583344766,5.66171810200014]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1109.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1109.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1109.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1109_field1":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.41336097803009e-13,9.4168532953624e-12,-5.37419321143744e-11,-8.48084761723315e-10,3.47567559750442e-09,-4.39223870091742e-10,4.24715991718727e-09,1.92317008969444e-09,-2.37804378838635e-09,3.3104402931326e-09,5.94010919319694e-10,2.53046087787246e-09,-2.51820691628424e-09,1.7646440751388e-10,3.24033080739747e-09,4.51898007477347e-09,-3.94607861556136e-09,4.00549019143077e-09,2.2797382784501e-09,3.40641356314432e-09,4.05156693433978e-09,5.6500915442013e-10,6.60023909013568e-09,3.10765716537675e-09,-6.18848202974412e-09,7.15374623261709e-09,-1.19873058389977e-09,3.67545462261455e-09,2.81662982101694e-09,7.51110663025165e-09,5.44224694074449e-10,1.47624830804373e-08,-1.50483793440296e-08,-1.65106813449784e-10,2.13105239610974e-09,5.88465897030467e-09,-1.97009256889192e-09,-4.3395012977723e-10,7.80832375606844e-11,9.47939654169484e-10,-4.45365931610321e-10,3.43231459732044e-10,-3.40778341453879e-12,2.05228815952323e-10,1.25602425532823e-10,-5.50297715550565e-11,1.15931377856902e-10,2.44706727815912e-10,2.20724070495085e-10,-1.57134038267202e-10,6.25666172301807e-11,-2.84938136454657e-12,1.08232313586146e-12,2.07885205729681e-10,1.52198292594079e-09,-1.97531874308044e-09,1.42908739278521e-09,-2.34875071157995e-09,-9.31494372531283e-10,3.99747013380072e-09,-2.00575827225056e-09,4.53919210200322e-10,-2.5411856644054e-09,2.26800649268445e-09,4.32840355456745e-10,-2.21133963515992e-09,-2.81634289936273e-09,7.25032794152968e-09,-8.23982445516334e-10,7.69094260562814e-10,-1.96090926513507e-09,-1.63175007185152e-09,5.52385258445386e-09,-4.89355469985341e-09,-1.39927803529767e-09,6.73138508914719e-09,-4.36857003195752e-09,5.78590517082461e-09,8.45506637270204e-09,-1.91043466940696e-09,-7.02619284034827e-09,4.46756845806985e-09,-1.53550940017073e-08,1.67404819609814e-08,1.14186835130817e-09,-2.19437971928277e-10,-4.78661759185691e-09,2.61764589568965e-09,7.45416952696505e-10,1.43448182055146e-11,-8.79889882650473e-10,5.48869693747384e-10,-2.3317070080102e-10,1.18194734963319e-10,-8.82118343441295e-11,2.83920744637793e-12,1.3154274855411e-10,2.32286227804699e-11,-1.38615001045002e-10,-1.58733551681651e-10,1.86872102912877e-10,-5.97262305690467e-11,6.16600065024922e-13,-2.13589521420976e-11,-4.77541866961814e-10,-2.45739672630711e-09,4.29965495893409e-10,-2.37681355511101e-09,4.72722602123557e-10,2.91146508009444e-10,-5.28766144247325e-09,8.18942340310309e-10,-1.26708277696373e-09,7.70867757127852e-10,-3.66323903533802e-09,-2.55332487044605e-09,1.94620453854666e-10,9.59848890923426e-10,-8.37069051837102e-09,-1.07736123997013e-09,-2.50501354835644e-09,1.25841560898016e-09,-4.52326490804428e-11,-2.85572369676513e-09,4.24095089560149e-09,1.43260846374885e-09,-7.49374868689955e-09,5.99231361322237e-09,-1.95748116090612e-09,1.87334128208676e-09,1.32512543540602e-09,6.10922187265158e-09,-1.49947045243027e-09,1.35432786139626e-08,-1.72437858133023e-08,-1.81162960492057e-09,1.29430747382889e-09,5.5482138721747e-09,-2.30397086942724e-09,-7.62407869781748e-10,-9.06543567653458e-12,8.16129388717762e-10,-6.40769820408113e-10,1.17100446225898e-10,-2.2979313946884e-10,-2.40336670198408e-11,-1.03914691835727e-10,-1.90312626675753e-10,-2.14986008656253e-10,-2.70916536612731e-11,9.20595740049957e-11,-1.97425435310387e-10,5.86448603500084e-11,-3.36363834634383e-13,9.59960204405209e-12,4.76423977516987e-10,3.34723891249453e-10,-1.01691544801243e-10,7.53193277403353e-09,-6.37758518359005e-09,5.72491923993935e-09,3.323842628474e-09,-1.77425040910996e-09,3.22333866904153e-09,-7.05248111395016e-09,8.4812379956556e-09,-4.57365672421812e-09,3.39786618617747e-09,-4.39032720651767e-09,1.13164428424881e-08,-2.54652059329985e-09,1.09867145627379e-08,-8.08386822023747e-09,9.89778976122106e-09,3.02909959408789e-09,4.25885879977974e-09,-1.39395711841231e-08,1.82082293813669e-08,-2.83521793283675e-08,3.54618591369167e-08,1.59632000476141e-08,-1.76888646489757e-08,-7.11576087859112e-09,2.60295432779531e-08,-2.3889265491653e-08,1.38071782830933e-08,2.62367903016649e-10,3.39736271046474e-11,-4.25718007053011e-09,2.40949525273042e-09,8.42386747274957e-10,-1.13941653674543e-09,-2.76261673388383e-10,4.30956380396678e-10,-1.31392447742996e-10,-1.17526416207254e-10,1.41292560215206e-10,8.36212840539988e-12,-6.23522196440708e-12,5.83368386312489e-10,-9.79634351008283e-11,-8.7572118482011e-11,-1.98649305618309e-10,1.22696836624033e-10,-2.16287015092337e-12,1.31370114702129e-13,-3.20968154394666e-10,3.427565252031e-10,1.56517146934083e-09,-6.57257972828756e-09,8.23490748578793e-09,-4.64143151092295e-09,-1.72784049121568e-09,2.91625483301502e-09,-2.12648965287858e-09,6.22798565007182e-09,-9.27635569590566e-09,4.71204955317514e-09,-2.65248501514525e-09,6.04580388330249e-09,-7.47680825420151e-09,5.92222672114736e-09,-7.61069457673298e-09,9.9995474782589e-09,-7.89953921158198e-09,6.64560752136007e-09,-2.76285666515966e-09,1.6065431993679e-08,-1.62691839503228e-08,3.09848053979329e-08,-2.81568120455286e-08,6.06569472211062e-09,1.79520167562036e-08,8.39192456877282e-09,-2.15786210191953e-08,2.33320402353227e-08,-1.38729686585973e-08,-6.99401845479818e-10,1.96783280380159e-09,5.94915467573219e-09,-1.70011062522352e-09,-7.34958309945057e-10,1.13194183395952e-09,1.82812370645245e-10,-4.6518179792726e-10,1.19804812352076e-10,1.33336864657761e-10,-9.48101396984022e-11,7.48065043900984e-11,9.02431610427878e-11,-4.64412569950274e-10,1.89883755384212e-10,8.91265466897767e-11,1.93611487321536e-10,-1.27473587929352e-10,8.79967754923278e-14,-1.88938990237519e-11,5.2831097761902e-11,-1.26540932107299e-09,-3.06611435215594e-09,5.68480754018272e-09,-1.00209202209492e-08,4.12124325894041e-09,5.79479083610942e-10,-3.95172757709257e-09,1.55937812236224e-09,-8.88938250263542e-09,7.2416822553543e-09,-7.42877273894072e-09,2.86989476935401e-10,-7.94324974540058e-09,7.18630393244138e-09,-7.18615833508187e-09,6.31065926489059e-09,-1.029126439133e-08,5.92757703185751e-09,1.74020923815916e-10,2.49936194683027e-09,-1.54987394797705e-08,1.6428440530766e-08,-3.01986696385628e-08,3.4552855422436e-08,1.42693612580836e-08,-1.92018334745707e-08,-8.64295537547883e-09,2.43257713265716e-08,-2.46510556317387e-08,1.28688823459522e-08,-6.90132911991917e-11,1.84576871222903e-10,-3.957291623518e-09,2.65701047872255e-09,1.11181518089882e-09,-9.83621435741474e-10,-5.93126394260914e-11,5.11542504375945e-10,-1.2222329799541e-10,-1.52840435624066e-10,5.56490116944793e-11,-1.34232178416203e-10,-1.33216131446018e-10,2.30383605759633e-10,-3.40177002694367e-10,-1.21534829660747e-10,-1.72977735815751e-10,1.26916519519915e-10,-6.38686953089147e-13,9.52875665960763e-12,3.63508394555671e-10,2.30873115479986e-09,6.73979290151449e-10,-9.02496692859681e-10,-6.5324363702203e-11,-1.77976966278496e-09,1.0444640321448e-09,8.1815065050488e-09,-4.37602910049255e-09,1.31559184772241e-08,-1.7226560100841e-08,7.90617490047433e-09,-9.53302900845588e-10,1.02785560471076e-08,-1.19762718191753e-08,2.15883774223252e-08,-1.24067620994695e-08,1.74833368259153e-08,-1.33052470270643e-08,4.82511803145408e-09,-3.97464314768231e-09,2.569498783962e-08,-2.23709199819519e-08,4.99923684886901e-08,-5.13674451240269e-08,1.88021864327745e-08,2.19165546593974e-08,2.65850560630597e-09,-3.76634054061235e-08,4.91852640841577e-08,-2.24008766838477e-08,-1.51331739467466e-08,1.04599371148774e-08,3.73252080179136e-09,-8.85524682901132e-10,-3.06011304075879e-09,3.25108858621799e-09,-6.897159330878e-10,-7.92895326267796e-10,-1.86280218622544e-10,-2.1973009403779e-10,1.27743368495289e-10,1.06518856314426e-10,-4.8870829224835e-11,3.44166505727608e-10,-5.56718613636789e-10,2.10907229338207e-10,2.39650457612115e-10,1.17794471967983e-10,-1.71953306716372e-12,-3.1917302479569e-13,-2.06365737338139e-10,-1.62402607867974e-09,7.71176643950989e-10,1.85533116822157e-09,1.88804835886861e-09,2.95210650138004e-09,3.87869481845769e-10,-7.03426609118186e-09,5.28731814705296e-09,-1.33536817468966e-08,1.59932689262483e-08,-7.67747597672537e-09,8.43833255513582e-10,-8.44071727736702e-09,1.60274767380188e-08,-1.77477789661627e-08,1.5914437641275e-08,-1.54995713141915e-08,1.62521063246754e-08,8.42533786400838e-10,6.66022236391836e-09,-2.29743961934911e-08,2.52490902469178e-08,-4.6408169522822e-08,5.85290225555969e-08,2.30397376769622e-10,-1.84169589631193e-08,-1.62145078026816e-09,4.05228155645019e-08,-4.97918473842743e-08,2.11531201579299e-08,1.49075078063635e-08,-8.95802665455643e-09,-1.56029437119131e-09,1.49618367764617e-09,2.91850733476793e-09,-3.37874074274079e-09,3.88551431970923e-10,5.7966494025773e-10,2.14065389818272e-11,1.08390618791439e-10,-1.77587346279992e-10,-7.89801653524937e-11,1.1401929198514e-10,-2.26218056645369e-10,5.93791194922944e-10,-2.71794293519901e-10,-2.86697472078401e-10,-1.31067970795885e-10,-2.5098725309061e-13,-1.73821544180638e-11,-6.08569026832551e-11,7.05832481171426e-10,-2.25670793123709e-09,-2.70206279973274e-09,-3.62628093985264e-09,-3.36461964152782e-09,-1.6126087577245e-09,6.17339935443657e-09,-5.92947908314377e-09,1.12611181216637e-08,-1.85674173214904e-08,4.82169058333835e-09,-4.25730647030348e-09,6.60797001779547e-09,-1.60775848414726e-08,1.70909208132519e-08,-1.70124454648763e-08,1.52611829576826e-08,-1.72135481826278e-08,2.23803498101508e-09,-5.43416162276481e-09,2.42162387822724e-08,-2.43711812593947e-08,4.78075522469749e-08,-5.23757248639488e-08,1.71042944226271e-08,2.04469950635681e-08,1.23417251763328e-09,-3.89557728143719e-08,4.88472787832041e-08,-2.21868934372675e-08,-1.4223605871947e-08,1.16799118657669e-08,4.84664978826137e-09,4.82625727436566e-11,-2.14685864305101e-09,3.68485783463345e-09,-3.38755157415198e-11,-3.59695433456176e-10,1.20185226218577e-10,-9.29774014836296e-12,2.27245902983615e-10,7.52939610033857e-11,-1.55927273065829e-10,2.26896784299844e-12,-7.36833417687188e-10,2.92031002511705e-10,3.41350360434054e-10,1.31445021049459e-10,-8.01502765610308e-13,9.44099026966279e-12,4.82422681606422e-11,2.07213368959774e-10,3.16637659246168e-09,3.13753541928897e-09,-1.1245847565888e-08,2.18360149410726e-08,-1.12403797170658e-08,3.14348149604672e-09,2.92554012504507e-09,-5.03998353838694e-09,3.79520413829469e-09,-4.17491325370663e-09,4.51515133135656e-09,-5.43993217991008e-10,1.40650547148438e-08,-3.58018279850562e-09,-8.8469129902371e-10,-6.75229984463889e-09,1.74367073233393e-08,7.20228458964383e-09,-1.31702985627724e-08,1.6907880383648e-08,-2.43476815606753e-09,-1.44065794067912e-08,1.52850779262805e-08,1.31090430761624e-08,-8.83862256632243e-09,2.0238162866758e-09,4.95827652631586e-09,3.59812589824702e-09,-9.96731672680631e-09,-6.4428101841258e-10,6.2491379051889e-09,5.21944334489507e-11,-2.02640472349118e-09,5.7149870130248e-10,2.8727826113199e-10,-2.09424879093403e-09,4.57267458921992e-10,-1.05784541079742e-09,4.7651305513101e-10,-6.95937207405493e-10,-5.00723899008725e-11,5.37309768963584e-10,-4.47089154299304e-10,2.71892533994334e-10,3.09569900190041e-10,-5.61984056391669e-10,1.48946825141587e-10,-1.48299368839581e-12,-4.99099288031232e-13,1.10880156790599e-10,4.80502677593244e-10,-1.69743462355153e-09,-2.30342111602816e-09,1.3531033064013e-08,-2.21895899265771e-08,1.26877834495165e-08,-1.98299898830661e-09,-2.05983736542083e-09,5.35723604446017e-09,-5.3908137553887e-09,4.66167387590397e-09,-5.29474455188216e-09,2.5443321662619e-09,-9.6266629327267e-09,7.86064041133396e-09,4.60577224230694e-09,8.86685806363183e-09,-1.41915175507982e-08,-3.41128440122987e-09,1.61277870084818e-08,-1.35689230853207e-08,5.8630692519137e-09,1.87735873068273e-08,-9.4084580469115e-09,-9.1278457776052e-09,1.22519018208617e-08,-8.41574851827209e-10,-3.07337746772819e-09,-4.23811624711431e-09,7.82221198482271e-09,-2.76987290804867e-11,-5.29321010037493e-09,2.53239765249213e-09,2.43677248749045e-09,-9.84785230808534e-10,-5.45252318121723e-10,1.55382266796941e-09,-8.84049844661584e-10,7.08589003607202e-10,-7.46812054067513e-10,5.18222771054801e-10,-5.98809319366729e-12,-4.97164010745322e-10,5.78274436314832e-10,-3.01998432888884e-10,-4.34604331121082e-10,4.69751205837798e-10,-1.71203844408757e-10,-4.45678411796432e-13,-1.65799906020409e-11,-3.77334908716159e-10,-1.40226376653867e-09,2.39874658605952e-10,1.34908056058996e-09,-1.48039389194531e-08,2.02355523493903e-08,-1.39055109848194e-08,1.17935386499712e-09,1.38599897739369e-09,-7.06361022280913e-09,2.30650841087426e-09,-7.61227743255808e-09,8.79714976724818e-10,-4.49352784003123e-09,9.76413714879569e-09,-8.19900149334753e-09,-5.60203668469147e-09,-9.03634967639688e-09,1.34710138838891e-08,4.69303943261488e-09,-1.45004580426233e-08,1.54619158400096e-08,-4.5649568043387e-09,-1.68067775697131e-08,1.41988016125967e-08,1.13916309409194e-08,-1.02196861238773e-08,8.02604026571236e-10,4.11095299555213e-09,3.64210452085856e-09,-8.75199723946395e-09,1.3853950899995e-09,8.53363145926075e-09,2.05388321266481e-09,-3.62012027257452e-10,2.13905205765046e-09,1.01548851248318e-09,-9.37004522246511e-10,1.30942335605533e-09,-3.91802078098704e-10,9.9618107655985e-10,-3.49727782785055e-10,7.59165895913871e-11,4.64975876740981e-10,-7.49458689086809e-10,1.80048952719916e-10,5.13327903384645e-10,-3.79990945389457e-10,1.73051694978804e-10,-8.83855527871954e-13,9.34033512777992e-12,2.46079723125696e-10,2.65989865439178e-09,3.77307828338622e-09,-4.75259024499749e-09,8.18928872788006e-09,-4.03664545584096e-09,5.64837959864114e-09,1.45641343537621e-10,-2.67606600620841e-09,8.62820252917808e-10,8.44944863729387e-10,6.03488912162808e-09,-5.66010582551635e-09,8.04965952825241e-09,-5.03143400380541e-09,7.67179288059721e-09,3.53225331201762e-09,4.00626243730136e-09,-1.12281472518418e-09,4.26346706098408e-09,-5.37044395393728e-10,4.93449254835854e-09,1.04840874210299e-09,-1.05899514202144e-10,1.16714103707811e-08,-9.95998340872515e-09,1.2587747792321e-08,-7.41451974411807e-09,1.10597749952337e-08,-1.18488281422973e-08,-3.02990345855608e-09,1.19234005299635e-08,-9.8359173561906e-09,5.5420649566757e-10,-2.16707728642396e-09,1.66481308808031e-09,7.06527898696324e-10,-1.52909398054659e-09,-1.33351749545606e-09,2.01480887358882e-12,-1.17820585250756e-09,7.40745645080038e-11,-4.0402467265272e-10,2.24223680894047e-10,8.51746401195958e-12,1.51488064510246e-10,-6.52494016845002e-10,-5.26859774340813e-11,-4.46955359938629e-11,-1.38045096764635e-12,-4.85620432225048e-13,-8.5462963921179e-11,-1.9660449080221e-09,-2.32220170769062e-09,5.68603711692317e-09,-6.3056559469277e-09,5.65880057413596e-09,-4.38699077542258e-09,1.1357526340825e-09,3.62725980294249e-09,-2.48816514706112e-10,-1.91538792952319e-09,-5.6365544615225e-09,5.09218804086777e-09,-8.56536898022904e-09,1.02581887276671e-08,-3.06834012005649e-09,7.17723189047895e-10,-1.66478624163512e-09,4.52174012774789e-09,-5.83640355512619e-10,3.54966055467392e-09,-1.04508354795128e-09,2.78763693634189e-09,4.75451364161728e-09,-6.82013348660686e-09,1.38188153722973e-08,-9.63588124815633e-09,8.86952865581627e-09,-9.85020784910661e-09,1.11216370390272e-08,7.56761446384911e-11,-1.29382062397161e-08,1.02415424320769e-08,2.49692747518964e-09,2.31643240698958e-09,-2.33161159684292e-09,-1.08898382239124e-09,7.50501422380253e-10,6.85328452048556e-10,-5.47011801307114e-10,7.31646404573882e-10,-4.04315989997757e-10,2.2473722991039e-10,-2.15082488509857e-10,7.6298675840018e-11,-2.38483632440233e-10,4.6569708182563e-10,-8.28911676004633e-11,1.34353068584233e-11,-5.45550752820889e-13,-1.62695386467789e-11,-1.79693006853232e-10,1.04940576659478e-09,8.4653048241272e-10,-6.55029131615784e-09,4.56555051005842e-09,-5.69097770440348e-09,2.87400147101453e-09,-1.908469253077e-09,-4.33658986693831e-09,-1.43562827032746e-09,-8.48354954959744e-10,2.17021696472052e-09,-9.70438589849763e-09,3.71949859688109e-09,-9.67431850037976e-09,2.74185437774261e-09,-1.48177593107128e-09,1.58830530048269e-09,-5.28188694878042e-09,1.67361584218657e-09,-1.86838210325892e-09,3.439803795513e-09,-1.26340537056454e-09,-2.77076874885805e-09,1.0482542071291e-08,-1.17238759227195e-08,1.1317173158589e-08,-8.38880198928726e-09,1.06577028690703e-08,-1.14761200489885e-08,-9.90156893256277e-10,1.49000630981602e-08,-6.59319997217153e-09,3.40268779769207e-09,1.93870976610672e-10,3.83705219987823e-09,1.71195770529578e-09,1.26613415891233e-10,-4.59949116980861e-11,1.05213452446293e-09,-3.12762237439397e-10,7.24073341396651e-10,-5.26159538465651e-11,2.09385115959592e-10,-2.28186903555646e-10,1.6384110353698e-10,-3.33366904319202e-10,2.06635325539289e-10,-9.90037566384935e-12,-9.33507701485492e-13,9.22769843107871e-12,2.5719354287476e-10,1.77862192242259e-09,-5.61200942355122e-09,2.42000092733318e-09,2.94379329776841e-09,1.06816028789604e-09,2.21712424920467e-09,-7.04229786369976e-10,3.43213997221735e-09,3.32037166421452e-09,-3.2894563687667e-09,-5.62985372109729e-10,5.69592502126291e-09,-5.46513755798538e-09,7.82700744192363e-09,3.81684447917981e-09,-5.66208119389848e-09,1.61500515004331e-08,5.20488162880871e-10,-3.06571902584969e-09,5.71555623045063e-09,6.01804518328761e-10,3.76402002545743e-09,3.78472763353594e-09,-7.97211713027522e-10,8.65837166553127e-09,-4.27921609699598e-09,4.52049648442922e-09,-4.43622416650074e-09,-2.59014582736013e-10,1.00642989150355e-08,-2.08810870282604e-08,1.49155086703819e-08,-5.24911484007508e-09,2.74093904911895e-09,-2.57781968243366e-09,-7.99732420762131e-10,-1.23109885451822e-09,-4.2733361733704e-10,-3.64092988192087e-10,-8.97274643613474e-10,-3.00604120712358e-10,-4.50231915011351e-10,1.24911479286882e-10,-1.73334732327242e-10,-1.50556876250087e-10,1.20577826063745e-10,1.48707560820697e-10,-3.58643886221821e-10,-1.31528591895973e-12,-4.90867909899835e-13,-9.63907605073549e-11,-1.08840344272528e-09,7.06058882437224e-09,-1.51293602355019e-09,-9.37262581515462e-10,3.96431774581342e-10,-5.43723310766549e-10,2.03467745212072e-09,-2.27501584748305e-09,-2.35405109238881e-09,2.59902728915797e-09,8.39821575268062e-10,-5.47166222886529e-09,1.68922658670556e-09,-1.4095077128851e-09,9.71776306012285e-10,1.02604274890296e-08,-1.36017764245295e-08,2.90523299610763e-09,5.87071934540772e-09,-2.70800535391772e-09,3.42853339729632e-09,4.89784096666868e-10,1.12415021399521e-09,5.24719617558204e-09,-4.86574474818357e-09,6.89359526622656e-09,-2.94899005564281e-09,5.21365840111458e-09,-5.21544719152213e-10,-1.3823020901179e-08,1.9712038402535e-08,-1.51333468187011e-08,9.08876808028973e-09,-2.93205181590577e-09,1.71478695493842e-09,3.05984477254838e-10,2.45584210363249e-10,-4.19646120421074e-10,-3.59869566596125e-10,2.85019372690342e-10,-1.81028399536253e-10,1.18835428444435e-10,-1.66875357249082e-10,2.07954944158756e-10,2.88190471161062e-12,-3.6054988220057e-10,-3.23241681663602e-10,3.19028297198231e-10,-5.990336582973e-13,-1.58846176930256e-11,-1.65329928526606e-10,1.80474287974038e-10,-8.52062216184748e-09,6.14210033007934e-10,-7.63315208334901e-10,-6.54799608375504e-10,-7.27576080482147e-10,-2.97346533758445e-09,1.46776617204738e-09,6.00825578815327e-10,-5.19229346245029e-09,-4.80276973620677e-09,1.28575524534464e-09,-1.01490012599049e-08,2.84523407092361e-09,-1.46252953512991e-09,-1.10365372694386e-08,1.35683799139624e-08,-3.9032017289803e-09,-5.86457063603997e-09,4.23301381970605e-09,-1.13043505084727e-09,1.0469309585985e-09,6.80185524561946e-10,-2.14524243383267e-09,6.77577657545863e-09,-5.454734015082e-09,3.80778837767049e-09,-4.41165363991046e-09,3.85182140199928e-10,1.27626746121235e-08,-1.71409116747658e-08,1.8957725360689e-08,-1.66945690010247e-09,5.70943860151997e-09,1.11600869999438e-10,4.41631663514459e-10,8.59298347961553e-10,1.2518693249083e-09,1.03888795425666e-09,2.94410781818405e-10,6.59982328055533e-10,1.82828876789153e-10,2.02917045247321e-10,-3.1159567684575e-10,-3.1509824200018e-11,5.39858779090779e-10,4.77445605425935e-10,-3.13619289158012e-10,-9.76126191758327e-13,8.94833231738143e-12,1.17032638246115e-10,-1.39042072271356e-09,1.81836169877429e-09,5.80772062205045e-09,-2.27514227143589e-09,4.03139747739584e-09,5.58460824630804e-10,1.52285415961605e-09,6.22444526433608e-10,-1.57180586324416e-09,9.59902380187628e-09,-2.03754028800041e-09,-3.27653513150245e-09,4.46750699535454e-09,-3.03677609144868e-10,5.3885095213703e-09,1.32611351204298e-08,-1.32036244909988e-08,6.2431298656201e-09,5.71532257484936e-09,-5.36081709824894e-10,4.14495731018615e-09,1.40456210473192e-09,4.21604929646693e-09,4.02791769320906e-09,6.7437886431537e-10,2.20724010434447e-09,1.3926562528539e-09,-1.63573519926538e-09,5.43972079176767e-09,-1.34298110081033e-08,5.41925070389019e-09,-6.43282045858642e-09,-1.94964384611466e-09,5.42334211404751e-09,-7.19087887855109e-09,2.20014294374091e-09,-2.75205903794084e-10,-1.31751670954986e-09,-1.36736693905076e-09,-3.08548482048041e-10,-7.21495439408918e-10,-5.15644673376211e-10,-1.11006660202791e-10,7.17037356493987e-11,-1.34305407016009e-10,-3.23403022573816e-10,-5.35529518013936e-10,1.69790122852567e-10,-1.22341043153198e-12,-5.65972143077437e-13,4.16076178717725e-11,2.06759070050624e-09,-3.88437786530138e-10,-4.93141271908994e-09,4.34559670109841e-09,-2.64375149562927e-09,1.21195462867133e-09,-6.77729726650198e-10,7.9547886872619e-10,2.88324562738823e-09,-1.00849169623475e-08,2.39204419440141e-09,3.39922658605264e-09,-7.87539772859549e-09,3.64250913938003e-09,-2.43657201700606e-11,-8.42204437085535e-09,1.58727639875598e-08,-2.78109191356104e-09,-2.8743154934448e-09,3.64073463323676e-09,1.92154726749265e-10,3.24546282885954e-09,9.77269235440297e-10,2.92987451451789e-10,3.14460777914683e-09,2.86758728775838e-10,1.63686550257127e-10,2.09088684920699e-09,-6.09462124973595e-09,8.35647558800233e-09,-6.55397714353421e-09,6.01139049209175e-09,4.81475734137799e-09,-5.56498091159125e-09,6.08926384730946e-09,-2.76448512482863e-09,-8.79265767445303e-10,3.11771531581293e-10,4.97791281570947e-10,-4.38470072840016e-10,1.12284959843201e-10,3.85056985436617e-11,5.49111895056844e-12,-1.23587796977773e-10,-7.45989249670185e-11,3.9177950523513e-11,3.27471999843766e-10,-2.16814425753712e-10,-6.54651088833705e-13,-1.50430867704555e-11,-2.96379974611032e-10,-2.95752291984431e-09,-1.0398597620571e-09,4.01415767213538e-09,-6.02153044161923e-09,2.26252003368761e-09,-2.53059764604612e-09,-9.98526824183764e-10,-1.74270101569901e-09,-4.70194568693563e-09,7.55626595419637e-09,-6.49952484021384e-09,-7.91183934252196e-09,-4.34596658473002e-10,-5.49960916810601e-09,-1.29568390010519e-10,7.62174129157815e-09,-1.59079332850462e-08,1.5988605039328e-09,2.63635329587192e-09,-2.42241543210543e-09,1.83635056062241e-09,-1.94143367574212e-09,6.13726139016125e-10,2.50719418269885e-09,-1.4068419956647e-09,1.05392730964957e-09,9.36055726204554e-10,-1.21875016712612e-09,6.30668633370825e-09,-1.02065069141371e-08,9.75815748249764e-09,-1.75413155201452e-09,2.21955120969497e-09,8.88622583029851e-09,-4.08291522168272e-09,3.62928136561519e-09,2.1604921155237e-09,6.76829867655174e-10,3.22551287029541e-10,1.14947165764385e-09,4.99109564050637e-10,3.90853523191034e-10,9.32310878551532e-11,1.00546932980178e-10,8.60459031371582e-11,1.8166746388093e-10,-1.47290162458312e-10,2.24233026526836e-10,-1.00899767543142e-12,8.31681573439767e-12,2.26226350131439e-10,4.16046413551587e-10,3.25095499252884e-09,-2.75132709921982e-09,5.40834084575286e-09,-1.65981723064721e-10,1.18978708726836e-09,1.16360281624201e-09,1.60025050066925e-09,2.95995007992837e-09,-3.4827958722793e-09,-1.1671743716649e-09,6.24229692706855e-09,-6.19849234213717e-12,-3.92735058375902e-09,1.20793924155405e-08,-1.70925227534939e-08,2.3297121725908e-08,-2.48701251693145e-09,1.57703314968972e-09,2.75670137195062e-09,2.17375426235231e-09,4.95068671713305e-09,4.68576266995008e-09,-1.96959621738326e-09,4.84492113629629e-09,1.13747033619043e-09,9.16281734081927e-10,8.2820613308991e-10,-4.89359036695356e-09,7.82081407679926e-10,6.67966487117058e-09,-9.81371685868633e-09,2.22603737180678e-09,-3.05456119794621e-09,-1.42307835093136e-09,3.05909385835954e-09,-4.61141621216848e-09,-1.09876425598999e-09,-7.31225000327611e-10,-9.04293081212275e-10,-8.97906746630695e-10,-5.23741326815121e-10,-4.88276366431254e-11,-1.91939771379819e-10,-2.39856751990018e-10,-5.66668867817782e-10,-7.05869777922541e-11,1.0933719701692e-09,-1.09175782125186e-12,-6.19678438330101e-13,-7.26154453237961e-11,2.37538212197749e-10,-1.85876661663548e-09,3.58166771573211e-09,-3.32840703601703e-09,1.47215047987777e-09,6.60437248998737e-10,-7.58626200806682e-10,-6.99055747619912e-11,-1.39367479313712e-09,3.06087518118104e-09,1.64142744854994e-09,-6.64886822121927e-09,-1.07672617326621e-09,-2.97294445931323e-09,-5.02434216464924e-09,2.17757401548767e-08,-2.05380288378525e-08,5.93112358237444e-09,1.2696101431995e-09,5.48086636005492e-10,2.33708221742097e-09,1.04690927370534e-11,6.30706828890743e-10,6.24456621157787e-09,-9.5733572623567e-10,1.35761807693649e-09,5.86476134873812e-10,-5.33470936513488e-10,4.12989955213332e-09,-5.66529079806659e-09,-8.15830848269921e-09,9.65166763537617e-09,1.5182118350722e-11,2.90721361101871e-09,1.49716768757538e-10,-3.67873777815482e-09,3.33272320980999e-09,-2.35698173646762e-11,-2.45379005527837e-10,5.81515839304172e-11,1.96543045707933e-10,-6.35436940435663e-11,-1.10523081293812e-10,2.36650171313066e-11,-4.06234615276045e-11,2.42400797377047e-10,-1.6546628768719e-10,-1.14679385651674e-09,-7.32153801468531e-13,-1.3667911446585e-11,-1.70842920430709e-10,-1.09784636605355e-09,4.84101782273225e-10,-4.49989065043315e-09,1.71088864785317e-09,-1.92791748309017e-09,-1.92673418836025e-09,-1.48641167802656e-09,-1.01647648618853e-09,-3.82303302423619e-10,-5.56390015003801e-09,-5.66327431916276e-09,1.56436499705496e-09,-4.94439461725697e-09,-9.15690096627371e-09,6.5136776607458e-09,-2.27987197776468e-08,2.05614911523561e-08,-7.19484972706788e-09,-1.72161033210293e-09,3.4065278956572e-10,-7.78675495533169e-10,1.15213505466015e-09,8.26152537122747e-10,-3.5828517884686e-09,2.59035215748329e-09,-7.84386807542027e-11,6.56452968942012e-10,1.59942940639451e-09,-3.82756552810534e-09,4.4279678166438e-09,1.14779635773608e-08,-4.64660823778864e-09,6.84151204678769e-09,7.8170689892196e-10,2.00430414022114e-09,4.62905336955336e-09,-1.92244597182493e-09,1.12636996420715e-09,1.17004525386725e-09,7.48854948570628e-10,5.10823302538634e-10,5.87450831826851e-10,2.80465528516103e-10,6.21726137427553e-11,9.68057080040558e-11,1.540259529961e-11,3.67172660959281e-10,1.15631977566003e-09,-1.19809217970257e-12,4.79981707371278e-12,2.14377249162267e-10,1.68028461794059e-09,-8.08567328873326e-09,1.14855260621293e-08,-7.25613681662455e-09,4.99694161207769e-09,3.16639486478625e-10,1.05626246018927e-10,7.50330518656391e-10,-1.11252620219265e-09,3.32996553657582e-09,-1.94223712855644e-09,9.52728234197929e-09,-9.2365597263078e-09,-2.33766819135962e-09,-2.93697861015601e-09,1.57425736242831e-08,-5.99731439662331e-09,3.65016971934449e-09,-3.14131200247675e-10,2.72407009356846e-09,2.17028971252435e-09,1.84299930958492e-09,1.87321736720797e-10,8.1257452109841e-09,-1.88365259677565e-09,3.22866825677139e-09,-1.48410232156022e-10,-5.11355049566845e-10,5.46428224008748e-09,-4.52699700420608e-09,-1.88673761998579e-08,1.67832657740474e-08,-2.88266060505324e-09,-8.68532938620175e-10,2.72814398565447e-10,-2.10490178449626e-09,-4.58336508878498e-10,7.22615617767707e-11,-5.07166622954563e-11,-1.45710740611279e-09,2.36285440204813e-10,-3.89044551068109e-10,-6.84285070203287e-11,-2.17088009349859e-10,-9.77470949491128e-11,-1.46208139856842e-10,4.5367446333858e-10,7.55248128731729e-10,-3.32554483991207e-13,-1.38550117128381e-12,-1.33421673155804e-10,-1.34740056196418e-09,8.76858580676606e-09,-1.10773549660295e-08,8.3986895966369e-09,-4.16486816525604e-09,7.83609097306638e-10,3.63401242697469e-10,3.61393122438526e-10,1.81592724103655e-09,-4.22052563097646e-09,1.3480065513995e-09,-1.10572571813895e-08,6.75994067114054e-09,-5.30807555929592e-09,8.19483257356696e-09,-1.24051788045798e-08,8.03502774994393e-09,-1.37425645007642e-09,2.33664065207226e-09,-2.20559273958071e-11,1.65569433216191e-09,2.25920838055622e-09,4.28479073344379e-09,-4.31844004106957e-09,5.22378223638903e-09,-1.05544932905272e-09,1.55846143112469e-09,9.23072127610246e-10,-5.9503020129887e-09,4.90452761873763e-10,1.84390066094705e-08,-1.61006186732335e-08,6.26521090950157e-09,1.70237539911119e-09,-6.43674079700265e-10,1.87442947162882e-09,-1.96260245580843e-10,-6.36215737588104e-10,-4.64171471534862e-10,1.01537984988864e-09,-5.98680329597539e-10,8.82719250942603e-11,-3.5873972385251e-12,7.32302492642676e-11,-1.22627225030625e-10,-5.40146995602947e-11,-5.65428022536837e-10,-7.85547825698702e-10,-1.07608426353486e-12,-5.56013997852794e-12,2.13043723130616e-11,9.41046652650645e-10,-9.44049969623053e-09,1.0625185756206e-08,-9.08491321923381e-09,4.12356877242775e-09,-1.2330819770189e-09,-1.22775923410052e-09,-5.86296679382956e-10,-2.80131172675605e-09,2.29506714360332e-09,-4.17288084245565e-09,7.20166344044996e-09,-1.16900745536103e-08,-4.9366352466457e-09,-5.70613156100457e-09,1.28992010411802e-08,-7.36132149874848e-09,1.29830320013249e-09,-2.01378546156362e-09,1.39136820423166e-09,5.78606494901617e-10,-1.059070414916e-10,-1.76027517513458e-09,7.30995350917335e-09,-3.04887761200858e-09,2.5855388811491e-09,-2.52013234529317e-10,-5.64240624158958e-11,6.03393209248186e-09,-2.62860197002839e-09,-1.63750881732671e-08,1.94762684341883e-08,-4.76232904719505e-10,1.12892030118728e-09,2.05523594679742e-09,-1.28935649439622e-09,9.39839715672119e-10,1.23282610184084e-09,9.43878617511163e-10,-5.90129816892248e-10,9.79210209328862e-10,2.07943561343204e-10,1.241365503424e-10,-3.14246512508674e-11,1.0296622664375e-10,1.59891569394044e-10,6.8340438961094e-10,7.88747696601627e-10],"Archive1109_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.58229818159823e-05,-3.51932548860202e-05,0.0135792733321982,0.834879412228099,3.12340587600037,5.30023465119188,6.52254751483893,8.22568233080251,9.58086387767225,9.73343198639457,8.82965929222401,9.15943166641191,10.9939665922389,12.3852852940902,13.6989670612339,15.2202984802595,17.4632354743346,17.1705363280512,17.5831324899671,21.2562679472158,23.9144869137521,24.4170712462754,21.1134545635797,19.6028792979336,20.8778171958218,24.2271039880756,27.6275672348432,26.7174774145889,24.9103111043585,26.8542161576961,28.6318228983739,25.5374131443399,20.6040648008247,14.2875179640387,9.4102543691476,7.74119518628823,6.65723529195086,5.02756053953078,3.69616945478308,2.94537741161414,2.46154361907588,2.03839043659106,1.70436628635823,1.45140013796238,1.25747352688202,1.15606211431066,1.25870782137183,1.35795633181883,1.00054758578307,0.307133229293929,-0.0362399318842715,1.58229824336578e-05,-3.51932572444362e-05,0.0135792732556327,0.83487944885893,3.12340596114616,5.30023411071671,6.52254757705748,8.22568257365338,9.58086369945564,9.73343208809547,8.82965929140627,9.15943172059997,10.9939662109228,12.385284945817,13.6989671216887,15.2202987944149,17.4632351378016,17.1705365885051,17.5831327815494,21.2562683895102,23.9144874333077,24.4170715247821,21.1134553150785,19.6028797067415,20.8778168281058,24.2271041906445,27.6275665836872,26.7174764713728,24.9103114005771,26.8542176715706,28.6318239203449,25.537414686596,20.6040640780234,14.2875175012557,9.41025434016779,7.74119569057168,6.6572352321452,5.0275603745743,3.69616938545676,2.9453774723882,2.46154359716204,2.03839044741914,1.70436628356501,1.45140014779056,1.25747352874408,1.15606209810026,1.25870780376078,1.35795633445238,1.00054759594585,0.307133211078318,-0.0362399301212687,1.58229833629475e-05,-3.51932597978025e-05,0.0135792733316224,0.834879412230833,3.12340587600451,5.30023465119409,6.52254751483867,8.22568233080071,9.58086387767108,9.7334319864001,8.82965929221575,9.15943166640383,10.9939665922425,12.3852852940892,13.6989670612326,15.220298480257,17.4632354743348,17.1705363280632,17.5831324899675,21.2562679472115,23.9144869137614,24.4170712462795,21.1134545635695,19.6028792979342,20.8778171958207,24.2271039880688,27.6275672348446,26.7174774145951,24.9103111043567,26.854216157685,28.6318228983792,25.5374131443428,20.6040648008215,14.2875179640434,9.41025436914763,7.74119518628306,6.65723529195166,5.02756053953274,3.69616945478233,2.94537741161355,2.46154361907678,2.03839043659111,1.70436628635823,1.45140013796262,1.25747352688185,1.15606211430981,1.25870782137427,1.3579563318202,1.00054758578057,0.307133229293019,-0.0362399318812485,2.57286626337628e-05,-5.67209917060303e-05,0.0227613043071517,1.44528819750704,5.35859393699712,9.1243940863594,11.4552337117551,13.9387667765302,15.851576676945,16.3647541237584,15.5933485855779,16.0885466564296,18.4575952407472,20.7487307640533,22.9870674146747,25.5381828643497,28.6093699788983,29.7080139236615,31.2465663787337,35.4485113749524,38.9723035922595,39.8596742235227,36.9098274522755,35.2883883214535,36.8866793224306,40.5996855616394,43.9972868270608,43.8767404127914,42.6109886163291,44.0300712262663,45.2426866573208,41.6288614315429,34.3711224652285,25.0057831631632,17.249958145781,13.6515843696596,11.3313100458919,8.70317052708798,6.48677884982309,5.11305086197992,4.22086798675463,3.49415669565078,2.9191829196718,2.48677507467574,2.17101193316827,2.01107071305807,2.13016792455034,2.22340755071076,1.67762810726666,0.549755955770017,-0.0653296901890138,2.57286634709182e-05,-5.67209933372705e-05,0.0227613040669804,1.44528822690315,5.35859408171704,9.1243943179925,11.4552328160142,13.938767289584,15.8515772296864,16.3647540756406,15.593348620047,16.0885462733782,18.4575960258612,20.7487308309269,22.9870676261296,25.5381825108981,28.609370966309,29.7080142822587,31.2465671506605,35.4485109555043,38.9723041944906,39.8596741677515,36.9098272381106,35.2883869000424,36.8866799727298,40.5996847376783,43.9972909318302,43.8767428173947,42.6109874535946,44.0300702827737,45.2426883842139,41.6288599091541,34.3711226556581,25.0057838324017,17.2499585407959,13.6515841435303,11.3313102537091,8.70317073397287,6.48677881649216,5.1130507975744,4.2208679923499,3.4941566695973,2.91918289286851,2.48677507117027,2.17101192675334,2.01107072443295,2.13016797273721,2.22340754886701,1.67762811145008,0.549755956513315,-0.0653296870329581,2.57286639700028e-05,-5.67209957868351e-05,0.0227613043051787,1.44528819750952,5.35859393700258,9.12439408636121,11.4552337117536,13.9387667765297,15.8515766769451,16.3647541237619,15.5933485855666,16.0885466564236,18.4575952407515,20.748730764052,22.9870674146731,25.5381828643491,28.6093699789002,29.708013923666,31.2465663787348,35.4485113749508,38.9723035922708,39.859674223526,36.9098274522575,35.2883883214528,36.8866793224334,40.5996855616387,43.9972868270625,43.8767404127912,42.6109886163267,44.030071226262,45.2426866573284,41.6288614315443,34.3711224652231,25.005783163162,17.2499581457803,13.6515843696589,11.3313100458934,8.703170527088,6.48677884982233,5.11305086198032,4.22086798675587,3.49415669565075,2.91918291967186,2.486775074676,2.17101193316792,2.01107071305726,2.13016792455372,2.22340755071309,1.67762810726252,0.549755955768954,-0.0653296901852334,3.1976266576684e-05,-7.00967676965505e-05,0.0287429368479185,1.87437974369792,6.89819387849034,11.7654222441723,14.9205218113082,17.7420251128524,19.8376350316003,20.6738517463496,20.3270738915107,20.9520175281314,23.3907275204587,26.1582108274825,29.0035368790278,32.1669146754413,35.7046408087136,38.0801086071902,40.6302770252072,44.6943388604437,48.2290453603687,49.4792712817772,47.5949430345917,46.4920299452361,47.9831503542187,51.0502587463273,53.7892641746802,54.2388089616641,53.7065433744178,54.4399028004083,54.8690915694752,51.452007281436,43.7043723971676,33.0053924761255,23.4234585853071,18.1059716988941,14.6809129765692,11.3628564674086,8.53323838589966,6.66597544886962,5.44745929220093,4.49936316993894,3.75253453275279,3.19414539096607,2.80331096950782,2.60920185481038,2.70162770316809,2.75224876589366,2.13372577010054,0.739846841448745,-0.0880150658497688,3.19762676299231e-05,-7.00967681015426e-05,0.0287429368202405,1.87437973968459,6.8981938319718,11.7654224181034,14.9205218907483,17.7420243439682,19.8376345837132,20.6738524826201,20.3270739099387,20.9520179288412,23.3907258103118,26.1582109404591,29.0035370572748,32.1669152699619,35.704639515064,38.0801090811593,40.6302760322161,44.6943395683294,48.22904347111,49.4792703198681,47.5949428968885,46.4920318989929,47.9831492304064,51.0502599661379,53.7892583273686,54.2388081900318,53.7065452564005,54.4399029731638,54.8690893018098,51.4520111035928,43.7043706517766,33.0053898942345,23.4234585703256,18.1059719429096,14.680913003062,11.362856356405,8.5332387074552,6.66597553443623,5.4474592549538,4.49936314855222,3.75253451659686,3.19414540771042,2.80331098738421,2.60920184075577,2.70162769949811,2.75224872207596,2.13372575716509,0.739846837520307,-0.0880150634640282,3.19762679546041e-05,-7.00967719165563e-05,0.0287429368452352,1.87437974370047,6.89819387849642,11.7654222441739,14.9205218113062,17.7420251128525,19.8376350316009,20.6738517463521,20.3270738914977,20.9520175281262,23.3907275204634,26.1582108274818,29.0035368790264,32.1669146754415,35.7046408087156,38.0801086071924,40.6302770252082,44.6943388604432,48.2290453603809,49.4792712817801,47.5949430345702,46.4920299452341,47.9831503542239,51.0502587463289,53.7892641746819,54.2388089616625,53.7065433744151,54.4399028004067,54.8690915694856,51.4520072814375,43.704372397159,33.0053924761194,23.4234585853045,18.1059716988961,14.6809129765721,11.3628564674076,8.53323838589868,6.66597544887076,5.4474592922026,4.49936316993892,3.75253453275281,3.19414539096632,2.80331096950746,2.60920185480969,2.70162770317228,2.75224876589729,2.13372577009449,0.739846841447444,-0.0880150658453237,3.54503364246967e-05,-7.73494049849786e-05,0.0323234617534929,2.16060861759599,7.91343425228068,13.5022844531374,17.1930902478165,20.1349155059997,22.2471911482201,23.2903922325066,23.3661574550989,24.1001597343485,26.45923907036,29.5033426219909,32.7191591972043,36.2357136853225,40.0622556853082,43.3013745810198,46.5285251387857,50.3534544785843,53.6602479590999,55.1142700341889,54.2321612333426,53.7063971384081,54.9634284786426,57.257399776352,59.326317523214,60.0321686655516,59.9784122250842,60.2814729253175,60.2326799476443,57.3597972585698,50.118781326367,39.0673097344048,28.2509424597389,21.4775603295231,17.1412319621202,13.3199443267137,10.0338932129661,7.7692741318461,6.29206078579782,5.17943465858922,4.30708602482447,3.65535865951924,3.21419379933802,3.00055508922926,3.05134345753281,3.0589709350567,2.44737773051679,0.889599315939938,-0.105316993827602,3.54503376322933e-05,-7.73494051399602e-05,0.0323234615858222,2.16060860504649,7.91343427590278,13.5022845752191,17.193090244483,20.1349178992972,22.2471909569127,23.2903922358502,23.3661575220356,24.1001594251643,26.4592391536644,29.5033417339731,32.719159270031,36.2357138264788,40.062256800527,43.3013741900552,46.5285243590429,50.3534541466708,53.6602503375152,55.1142713869722,54.2321606910033,53.7063981878016,54.963427933284,57.2573985178364,59.3263185646011,60.0321689728508,59.9784105933322,60.2814718174303,60.2326789840402,57.3597966901715,50.1187818775528,39.067310486793,28.2509431199448,21.477560423272,17.141231973084,13.319944692128,10.0338934343831,7.76927409809417,6.29206084000157,5.17943461169951,4.30708606228591,3.65535862601182,3.21419381064494,3.00055514083784,3.05134343138359,3.05897095577888,2.44737779113864,0.889599314919724,-0.10531699248657,3.54503379209035e-05,-7.73494097458032e-05,0.0323234617505274,2.16060861759906,7.91343425228673,13.5022844531387,17.1930902478146,20.1349155060002,22.2471911482208,23.2903922325085,23.3661574550847,24.1001597343431,26.459239070365,29.503342621991,32.7191591972031,36.2357136853231,40.06225568531,43.3013745810213,46.5285251387868,50.3534544785843,53.6602479591123,55.1142700341915,54.2321612333194,53.7063971384054,54.963428478649,57.2573997763548,59.3263175232159,60.0321686655496,59.9784122250816,60.2814729253171,60.2326799476575,57.3597972585721,50.1187813263559,39.0673097343944,28.2509424597331,21.4775603295265,17.1412319621248,13.3199443267124,10.0338932129648,7.76927413184764,6.29206078579994,5.17943465858927,4.30708602482435,3.65535865951932,3.2141937993379,3.00055508922875,3.05134345753786,3.05897093506197,2.44737773050855,0.889599315938204,-0.105316993822816,3.69416454536461e-05,-8.0256756205873e-05,0.0341948092845073,2.33553475865958,8.53760364764102,14.578828554816,18.5884837737394,21.5507634823174,23.6129228934253,24.7441891492604,25.1281724020543,25.9406750573433,28.2458710500506,31.5054321106154,34.9301614585158,38.6456210417318,42.6471633009814,46.3832842145875,49.9820789328893,53.6021365365918,56.6482872647638,58.1343173843376,57.9506419369099,57.8616832767672,58.8841590865177,60.5862699276817,62.1773771711415,62.9396577137133,63.1165576783943,63.2252879979391,63.0130096982653,60.8440073717054,54.56554678719,43.7406171045345,32.0861117413895,24.0779948537296,18.9973924618961,14.8014207498511,11.1610731258278,8.56801453225403,6.88222833548538,5.64369763821403,4.67644409433803,3.94911955932407,3.46214838762352,3.23465271827884,3.24606424313019,3.22666713600168,2.67031009980572,1.00950524056081,-0.118292058858908,3.69416467274724e-05,-8.02567563836556e-05,0.0341948091398547,2.33553477306839,8.53760349596128,14.5788280862224,18.5884837021649,21.5507630924717,23.6129232587355,24.7441890184835,25.1281719792414,25.9406750256492,28.2458714369253,31.5054331106153,34.9301614200076,38.6456217031901,42.6471629107924,46.3832843931011,49.982079141836,53.6021364319485,56.6482865340369,58.134317360258,57.9506418712831,57.8616834859222,58.8841590439972,60.5862699270279,62.177378032208,62.9396577672413,63.1165589532725,63.2252880655128,63.0130104252746,60.8440061653222,54.5655452976984,43.740617285115,32.0861111029698,24.0779945588103,18.9973919969291,14.8014207275812,11.1610733610849,8.56801461692986,6.88222834054294,5.64369766946182,4.67644403964912,3.94911958725338,3.46214837920615,3.23465273577616,3.24606424326178,3.22666713876788,2.67031005380573,1.00950525016657,-0.118292057903407,3.6941646995391e-05,-8.02567612523603e-05,0.0341948092814802,2.33553475866334,8.53760364764669,14.5788285548171,18.5884837737378,21.5507634823182,23.6129228934261,24.7441891492617,25.1281724020393,25.9406750573372,28.2458710500566,31.5054321106158,34.9301614585147,38.6456210417326,42.647163300983,46.383284214589,49.9820789328907,53.6021365365922,56.6482872647764,58.1343173843394,57.9506419368858,57.861683276764,58.8841590865244,60.5862699276861,62.1773771711437,62.9396577137111,63.1165576783918,63.2252879979394,63.0130096982817,60.8440073717083,54.5655467871768,43.7406171045213,32.0861117413806,24.0779948537331,18.9973924619022,14.8014207498499,11.1610731258261,8.56801453225548,6.88222833548785,5.64369763821418,4.67644409433783,3.94911955932338,3.46214838762368,3.23465271827864,3.24606424313626,3.2266671360087,2.67031009979532,1.00950524055839,-0.118292058854089,3.74276447692559e-05,-8.09977750164944e-05,0.034965955761435,2.42310132031659,8.86140472336737,15.1788072532073,19.3834561757172,22.335426159375,24.3344412866021,25.4710124660922,26.0203727425148,26.9014641757105,29.2554915941564,32.6737719985815,36.2030408714778,40.031675329055,44.1337966462023,48.1285026052888,51.9007234768959,55.3693706341709,58.1880159054239,59.5772682424332,59.7579050091348,59.9235132093101,60.769927583617,62.1622001129657,63.4881097448837,64.197240473842,64.4348115594777,64.4840764013892,64.2960758566076,62.8266619915496,57.6282884853896,47.3571665663369,35.1604326661331,26.1026151431449,20.4150743580212,15.9401228652976,12.0234325366114,9.15891237684571,7.30548281815634,5.96964002931955,4.92989261958373,4.1423756875761,3.606092744895,3.3577531794847,3.33999551260903,3.31281868832699,2.83188589857536,1.10729497152606,-0.127848355488555,3.7427645939406e-05,-8.09977747895166e-05,0.034965955925956,2.42310126638277,8.86140463600303,15.1788074151476,19.3834563744795,22.3354261602514,24.3344412135802,25.4710124927198,26.0203730442701,26.9014643340375,29.2554909819343,32.673771488251,36.2030410825731,40.0316751836187,44.1337965274736,48.1285024933063,51.9007230070558,55.3693721493614,58.1880163415297,59.5772679522859,59.757905200072,59.92351306602,60.7699275388258,62.162199914981,63.4881094245222,64.1972405870201,64.4348110437238,64.4840764725274,64.2960758216074,62.826662525641,57.6282895215741,47.3571654660432,35.1604334747756,26.1026150233206,20.4150747094797,15.9401226787229,12.0234322828368,9.15891223528275,7.30548277587482,5.96964003720688,4.92989259320969,4.1423756872036,3.60609274397677,3.3577531921874,3.33999549838037,3.31281869117301,2.8318859281236,1.10729498117773,-0.127848354129385,3.74276461167244e-05,-8.09977798418507e-05,0.0349659557583335,2.42310132032085,8.86140472337277,15.1788072532081,19.3834561757158,22.3354261593759,24.3344412866028,25.4710124660929,26.0203727424987,26.9014641757056,29.2554915941634,32.6737719985807,36.203040871477,40.031675329056,44.1337966462037,48.1285026052902,51.9007234768975,55.3693706341715,58.1880159054364,59.5772682424342,59.7579050091099,59.923513209306,60.7699275836243,62.1622001129723,63.4881097448863,64.1972404738396,64.4348115594747,64.4840764013903,64.2960758566272,62.8266619915519,57.6282884853754,47.3571665663224,35.160432666122,26.1026151431475,20.4150743580281,15.940122865297,12.0234325366095,9.15891237684678,7.30548281815891,5.96964002931977,4.92989261958364,4.14237568757481,3.60609274489362,3.35775317948544,3.33999551261595,3.31281868833541,2.83188589856358,1.10729497152267,-0.127848355483771,3.75710188776814e-05,-8.10091279946778e-05,0.0350483052603446,2.44011897418062,8.94131555418389,15.4208452580961,19.7691681740904,22.7212815581184,24.6787206409558,25.793409251672,26.408796384962,27.365810017064,29.8017839557344,33.2911065231807,36.8738081163549,40.7624017316513,44.9160309802412,49.0381252061518,52.8857724201072,56.2602836222861,58.9130173714123,60.1741459232055,60.4613209632293,60.72872554904,61.5365537507707,62.8479365479937,64.0278383105193,64.6476285952577,64.8530537253142,64.8879722323327,64.7889377592463,63.8850711654544,59.6845416617301,50.1165920721659,37.5939207489086,27.6499334281113,21.4811890303164,16.8055179808438,12.6765924983901,9.59290817743373,7.6094304159346,6.20048317857479,5.10626384890843,4.27435475474767,3.69407171075445,3.41478095586288,3.37469077425328,3.3534745898676,2.94808354569628,1.18806616191439,-0.13467338655621,3.75710202019445e-05,-8.10091277202935e-05,0.0350483054936417,2.4401189772887,8.94131557020829,15.420845625872,19.7691680711947,22.7212819290278,24.6787207263953,25.7934091940228,26.4087962638529,27.365810052955,29.8017850748388,33.2911066505172,36.8738078299389,40.7624019643915,44.916031181005,49.0381257292967,52.8857727926754,56.2602820896238,58.9130172607576,60.1741462151645,60.4613208369578,60.7287256746014,61.5365538018107,62.8479368334753,64.0278384742183,64.6476285514627,64.8530537562118,64.8879722855099,64.7889376489981,63.8850716266872,59.684541177795,50.1165924565274,37.5939203299376,27.6499329329405,21.4811894205713,16.8055178760703,12.6765928865232,9.59290828619243,7.60943046409224,6.20048317680321,5.10626388089726,4.27435474777168,3.6940717063508,3.41478095737909,3.37469078640614,3.35347459374596,2.94808354645562,1.18806614679782,-0.134673384733232,3.75710204092798e-05,-8.10091325729594e-05,0.0350483052570494,2.44011897418502,8.94131555418944,15.4208452580967,19.7691681740888,22.7212815581193,24.6787206409559,25.7934092516717,26.4087963849464,27.3658100170632,29.8017839557405,33.2911065231787,36.8738081163545,40.7624017316521,44.9160309802423,49.0381252061531,52.8857724201087,56.2602836222869,58.9130173714235,60.1741459232056,60.4613209632046,60.7287255490351,61.5365537507818,62.8479365480001,64.0278383105217,64.647628595257,64.853053725311,64.887972232335,64.7889377592664,63.8850711654555,59.6845416617165,50.1165920721517,37.5939207488966,27.6499334281127,21.4811890303233,16.8055179808438,12.6765924983883,9.59290817743439,7.60943041593701,6.2004831785751,5.10626384890837,4.274354754747,3.6940717107505,3.41478095586363,3.37469077426257,3.3534745898758,2.9480835456852,1.18806616190946,-0.134673386551315,3.75981575502352e-05,-8.07078237725787e-05,0.034643547857606,2.39738653817161,8.81033261140846,15.3695172985765,19.8516603104413,22.8363843452523,24.7928965028827,25.903580959354,26.5520969384091,27.5619417487179,30.0186167366618,33.5014548268279,37.1147459947923,41.0224982008987,45.1932595789565,49.3696326702739,53.25302908068,56.5940560713447,59.1686613611079,60.3603568029546,60.6541665383554,60.9714164014173,61.8214906308642,63.1031995064599,64.2100491204476,64.7730115204809,64.9386649719817,64.9560832824492,64.9304415734675,64.38793238028,60.9994709916148,52.1493025274526,39.4382472017302,28.7592100500587,22.2380012209386,17.4317341732169,13.1453292957655,9.89325956950404,7.81677150284565,6.35690655658763,5.22422748558355,4.36147167494628,3.75025199027738,3.43968060245406,3.38343886520587,3.36862862067455,3.02868330178681,1.2548791877942,-0.139232396537772,3.75981590212046e-05,-8.07078235777375e-05,0.0346435479522458,2.39738655827812,8.810332768734,15.3695169735286,19.8516604845599,22.8363841962452,24.7928964140305,25.9035810157558,26.552096929169,27.5619415909144,30.0186161373437,33.5014545828874,37.1147463295971,41.0224983925355,45.1932593692081,49.3696326572457,53.2530281007556,56.5940578212377,59.1686613580924,60.3603566305005,60.6541664554566,60.9714162418798,61.821490558677,63.1031992412018,64.2100486050304,64.7730115841531,64.9386649715155,64.9560832945888,64.9304416257034,64.3879320535608,60.999471523495,52.1493033249706,39.4382470863774,28.7592105533735,22.2380013139237,17.4317344184182,13.1453298428506,9.89325938802218,7.81677140117762,6.35690657292352,5.22422749627442,4.36147167478301,3.75025200631606,3.43968061180772,3.38343886021584,3.36862861477268,3.02868329096902,1.25487919543349,-0.139232394563209,3.75981593284669e-05,-8.07078283161686e-05,0.0346435478539692,2.39738653817576,8.81033261141458,15.3695172985772,19.8516603104394,22.8363843452533,24.7928965028827,25.903580959351,26.5520969383975,27.5619417487187,30.0186167366666,33.501454826826,37.1147459947921,41.0224982008995,45.1932595789575,49.3696326702752,53.2530290806814,56.5940560713457,59.168661361119,60.3603568029491,60.654166538333,60.9714164014185,61.8214906308742,63.1031995064645,64.2100491204499,64.773011520479,64.9386649719823,64.9560832824526,64.930441573481,64.3879323802815,60.9994709916035,52.1493025274397,39.4382472017181,28.759210050059,22.2380012209451,17.4317341732173,13.1453292957638,9.89325956950441,7.81677150284782,6.35690655658797,5.22422748558353,4.36147167494605,3.75025199027474,3.43968060245245,3.38343886521573,3.36862862068422,3.02868330177784,1.25487918778735,-0.13923239653263,3.75565022916942e-05,-8.01429529401388e-05,0.03382007422348,2.30090124313626,8.48551851924674,15.0477795062654,19.6734512933697,22.7357927436679,24.7397419478815,25.8857073774589,26.5563250179795,27.5804172051725,29.9645016437604,33.3742296666043,37.0036692557576,40.8961738631447,45.0552223983697,49.2366591469802,53.1388803496461,56.5079674856734,59.1046221138292,60.3554848815615,60.6810465898461,61.0079189627915,61.8480483653483,63.0960730945829,64.2013382303398,64.7796239970088,64.9440196092756,64.9589605053398,64.9489198392148,64.5820660629839,61.7663547849252,53.546480747395,40.7038194860294,29.4328563155034,22.7027726112872,17.8326808386086,13.4371115333111,10.0680637326993,7.93688910601601,6.44751531659682,5.29148728388616,4.41035137624638,3.78088079589706,3.4493156522518,3.3855315761485,3.37152307491364,3.08038807675181,1.30948213502674,-0.141833881153043,3.75565028382284e-05,-8.01429492091438e-05,0.0338200742234915,2.30090116896685,8.48551844851434,15.0477803213328,19.6734510000001,22.7357928273675,24.7397419663043,25.8857073790593,26.5563251211021,27.5804173726734,29.9645024025426,33.3742299605684,37.0036699617153,40.8961730744648,45.0552220514301,49.2366592056282,53.1388812390388,56.5079669425852,59.1046221561538,60.3554849684115,60.6810467565919,61.0079191007768,61.848048436326,63.0960733049808,64.2013388010836,64.7796238656984,64.9440197907541,64.9589604948311,64.948919862822,64.5820664060238,61.76635383209,53.5464795511744,40.7038206106824,29.4328555758403,22.7027722433184,17.8326805842259,13.4371113387902,10.0680638181306,7.93688911250801,6.44751522386426,5.29148718182009,4.41035139776243,3.78088078602177,3.44931566040407,3.38553157756775,3.37152307903373,3.08038807603669,1.30948217619343,-0.141833879932865,3.75565014300927e-05,-8.01429483899906e-05,0.0338200742183788,2.30090124313331,8.48551851925012,15.0477795062674,19.6734512933692,22.7357927436676,24.7397419478823,25.8857073774573,26.5563250179742,27.5804172051741,29.9645016437605,33.3742296666064,37.0036692557569,40.8961738631449,45.0552223983702,49.2366591469808,53.1388803496467,56.507967485674,59.1046221138329,60.3554848815612,60.6810465898353,61.0079189627931,61.8480483653507,63.0960730945853,64.201338230341,64.7796239970098,64.9440196092749,64.958960505338,64.9489198392209,64.5820660629874,61.7663547849209,53.5464807473909,40.7038194860172,29.4328563155037,22.7027726112916,17.8326808386097,13.4371115333096,10.0680637326996,7.93688910601747,6.44751531659689,5.29148728388621,4.41035137624655,3.78088079589675,3.44931565225029,3.38553157614978,3.37152307491417,3.08038807677049,1.30948213500082,-0.141833881142443],"Archive1109_field3":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.96657394410714e-05,0.000324049705375794,-0.00770941048403947,-0.43955435775947,-1.60620720628534,-2.3663512575125,-2.12689797040248,-1.78964556857985,-1.77948488801983,-1.64768403502251,-1.04462961645551,-0.807125647221618,-1.32521406119258,-1.83981825591683,-2.09390725476864,-2.61851968437361,-3.66539667739741,-4.41851846086122,-3.61680442572208,-3.14859584016197,-3.65992139457167,-3.42328878280105,-2.11674148948408,-1.19846220804964,-0.755389127525339,-0.459687312664158,-1.22504169952319,-2.18119684352274,-1.47385097987873,-1.0224089824511,-2.50188351901233,-3.62014398588217,-2.85551464659674,-1.92659319708731,-0.745818585619338,-0.199630125522305,-0.282469505638316,-0.298739026543926,-0.122922371517808,-0.0718142752651211,-0.0918885031533708,-0.0881162478619738,-0.0716879212523272,-0.0647893741943849,-0.0556522035799928,-0.0528359984213563,-0.0726191453089927,-0.0795110863446387,-0.0440084863400486,-0.00947877385362556,-0.000633701072695828,-0.000269045395660919,0.000324071769670275,-0.00427027830824508,-0.448161309778181,-1.61609334461044,-2.35907069953151,-2.09629539258702,-1.80572177024513,-1.80448245891265,-1.63059346181558,-1.01325472500194,-0.838853771941861,-1.34403431796327,-1.80452871487051,-2.11460146247301,-2.56193296341262,-3.80380877361233,-4.34422507094201,-3.52816037774236,-3.25501432031442,-3.64939449516168,-3.4001957299845,-2.10080720921354,-1.23223217807122,-0.707299765664303,-0.451473378872546,-1.34635074679063,-2.11908834018064,-1.36901403810736,-1.08317822208354,-2.63136964812647,-3.46328805349418,-2.94180823109316,-1.89967506643848,-0.709239980703507,-0.231959600584241,-0.295045880688177,-0.278341927312823,-0.12604110501561,-0.0763948559020112,-0.0909000852212213,-0.0865835631821396,-0.072698026587521,-0.0648270070180567,-0.0544538814377949,-0.0539686153719582,-0.0737140120770578,-0.0771304769918612,-0.0446424721515092,-0.0105459511422068,0.000680602486036871,0.0003531305179131,-0.00178185768953597,0.00109719293974227,-0.449373615204652,-1.62697921844684,-2.37217117913156,-2.06614767823132,-1.79364634274451,-1.83134054590971,-1.64424267059388,-0.973525327971467,-0.837102367088577,-1.38802758370823,-1.76910270795987,-2.15726705061993,-2.45991939812043,-3.91046374955705,-4.38694656615331,-3.39381212623648,-3.29984133289881,-3.68329623112633,-3.39681879743767,-2.06124884096653,-1.26648638643911,-0.697958363730242,-0.372722457711612,-1.44976191063045,-2.16582382066233,-1.26319360859262,-1.01096596874682,-2.82315016465763,-3.35952465200249,-2.96441117792678,-1.92073967358584,-0.662785041608488,-0.233280706976632,-0.323468875429096,-0.269002789257688,-0.119689737506115,-0.0799581097832757,-0.09272498653705,-0.0850069284880621,-0.0727003142964513,-0.0657113201503653,-0.0532778751663713,-0.0536686889688358,-0.0759750133198242,-0.0756792450804877,-0.0436468522825096,-0.0121653746724279,0.0019369148787042,-6.53403082421792e-05,0.00109062931083558,-0.0173362766138282,-0.820617516496174,-2.91449340908485,-4.19085547767851,-3.81897540850426,-3.21203082338287,-3.0494361459161,-2.71455563748067,-1.7818894464584,-1.55215851560558,-2.5036052680503,-3.29776160417743,-3.72700454609094,-4.65199265723432,-6.1792385631514,-7.47501110724894,-6.63396088638725,-5.8355738811063,-6.28595762311474,-5.43393269956916,-3.24470002758963,-2.13966645155597,-1.85002290442558,-1.52916391919846,-2.41555454573852,-3.48810345597011,-2.64988205591259,-2.15518489889583,-4.06491551454367,-5.35538688083959,-3.9989351617497,-2.52810320490588,-0.919258498939123,-0.204189265895087,-0.311529975010455,-0.323212617366426,-0.0986698277199086,-0.0625191602529308,-0.113020757114282,-0.114637718267746,-0.0976505822626129,-0.0942125014578228,-0.0870142677908535,-0.0951714181806124,-0.139902130614653,-0.13836505128357,-0.0570677470959216,-0.0044834676945571,-0.00544845256290198,-0.000966985943291763,0.00150129869647519,-0.00725343136365885,-0.846597103781775,-2.92679587921019,-4.16622223671006,-3.78355224705045,-3.23676736419096,-3.08462991023541,-2.68009934072536,-1.7364089106023,-1.61960130948823,-2.51660413388493,-3.24316272461617,-3.75875853083254,-4.59096535887606,-6.34272473299013,-7.38930191467072,-6.51193143936496,-5.98350415959364,-6.28422011395647,-5.34769795612242,-3.25423444725879,-2.20344865370767,-1.77119175609232,-1.53537642959496,-2.54681751225512,-3.41428048567984,-2.51829143979786,-2.24905792489329,-4.21782538820897,-5.14855505642412,-4.10486379499236,-2.50879294886125,-0.867470480941196,-0.245069360006888,-0.327590360020074,-0.296324401076152,-0.103646994811179,-0.0690444959701367,-0.11078914324494,-0.112620151947664,-0.0992612856002611,-0.0941202727024849,-0.0846508353997617,-0.0980635721028696,-0.142453001979676,-0.132019253873666,-0.0581220171613411,-0.00864726515205493,-0.000708673434393597,0.00069211171607916,-0.00478830929838741,0.0102222858083028,-0.856067905406883,-2.95296989015544,-4.17081956942317,-3.74052901872251,-3.22239670215889,-3.127417375185,-2.69454611351573,-1.66425867948135,-1.63882778743824,-2.57884015863902,-3.18748166982099,-3.8065680181188,-4.47749019437569,-6.46859356260061,-7.45097616739392,-6.33378134084015,-6.03602044988347,-6.36743446146484,-5.29457088220481,-3.1937464325499,-2.28039503326022,-1.74641362992726,-1.4536803389292,-2.66357974895018,-3.47062149181448,-2.37724951879993,-2.17550764487652,-4.46197568848545,-5.01074694358101,-4.1199030888133,-2.54702094470071,-0.810072846745211,-0.245544843086457,-0.363962772070543,-0.283320135299054,-0.0955668406311913,-0.0748559395519252,-0.112773314910892,-0.110111345659063,-0.0993681193125234,-0.0957016127975121,-0.0820375318461739,-0.0976600177893263,-0.148108229001377,-0.128436205562867,-0.0542228449895772,-0.0143683867407736,0.0036257460983211,-0.000103309279873263,0.00212628975530522,-0.0280842165940328,-1.15212826021561,-3.99993443230523,-5.63027620215984,-5.14074678866021,-4.31135179260269,-3.96541818007534,-3.4298014851034,-2.30041346573683,-2.15908120072131,-3.4838733295425,-4.47554216522813,-5.02386951013633,-6.21547821587397,-8.0103417258294,-9.67090019568988,-8.92884681491748,-7.93015844400814,-8.18346441572296,-6.72260804470234,-3.89836745390273,-2.81550337992768,-2.87975202024985,-2.58621899891413,-3.39745384106114,-4.39529614748665,-3.49036482293409,-2.98823231494525,-4.9625880495925,-6.07006818855766,-4.18405299924325,-2.32820980396472,-0.564644335616877,0.0660508585585235,-0.14511680154792,-0.161591946322554,0.0518726404922619,0.0245325048064505,-0.0754002693019051,-0.0922693037718704,-0.0859763324488668,-0.0949413786848984,-0.0985762858137721,-0.125037287002696,-0.193402848772014,-0.175706548592528,-0.0499835979566631,0.0119994421145589,-0.0126211130600849,-0.00192831948781151,0.00325120960738287,-0.00969690383242751,-1.19980219406182,-4.00978935195455,-5.58710015439394,-5.10953553462176,-4.34102264724366,-4.00503976786153,-3.38066728023284,-2.24773260272403,-2.25630076018483,-3.48920645349586,-4.40628621369348,-5.06502156460598,-6.15568259901118,-8.17854708015265,-9.58254624910886,-8.79304312014912,-8.10336422695228,-8.18416850323855,-6.58602016141518,-3.92307862945768,-2.91787003628012,-2.77739743240483,-2.59755704854698,-3.52898733878919,-4.31260204389231,-3.35539089622231,-3.10373521322123,-5.11923798441662,-5.83100334464601,-4.2972695675686,-2.31803638167515,-0.512965249282601,0.0212201693970023,-0.156398519185281,-0.132770389833633,0.0438796035263403,0.0171948462884734,-0.0714079881817329,-0.0902271666889397,-0.0880478218338735,-0.0946533049162579,-0.0952500276962536,-0.129772683337707,-0.197169567219166,-0.165844956187756,-0.0499437678639526,0.00291197652868574,-0.00306107738899824,0.000929320722789654,-0.00827164107939699,0.0235394951253536,-1.22192251444493,-4.05052523682708,-5.57654686308855,-5.06084656872893,-4.32753331376945,-4.05815926469714,-3.39199150099883,-2.15131953972209,-2.2962002518783,-3.56405913571218,-4.33458353636172,-5.11384203594718,-6.04384674205716,-8.30847452581682,-9.65238116315197,-8.59422408622796,-8.16370342651618,-8.30030946259578,-6.49440758852234,-3.83530994903311,-3.03722114984681,-2.74875488891559,-2.51309040600372,-3.64967638471635,-4.36554766805842,-3.20002756149635,-3.04003818344462,-5.38904914501154,-5.66923280351962,-4.30133488260587,-2.363984360027,-0.457443456500578,0.0149067224331945,-0.191984558923104,-0.115518459948894,0.0512835402349404,0.0090185166542805,-0.0726345321711025,-0.0869081214400595,-0.0883183480240009,-0.0967840427301475,-0.0912430402566379,-0.129602855285446,-0.205690522327079,-0.161255170832362,-0.0411840858103313,-0.00842862839025303,0.00519096151268925,-0.000137513933172242,0.00339220607903927,-0.0399867225245168,-1.45069411505057,-4.93418311607782,-6.78386161767049,-6.15514395605946,-5.14638923536172,-4.62401510748652,-3.91387603676418,-2.66511691437738,-2.6376789333726,-4.29853054652864,-5.45837420242998,-6.08253784174511,-7.45891475366038,-9.41968631723376,-11.3107853577685,-10.648373109427,-9.50282783653266,-9.53983731660166,-7.56254896103146,-4.29989455213227,-3.29238760362123,-3.70178651106057,-3.43839828834607,-4.13162783811515,-5.01155128791182,-4.03628798089809,-3.50020651300555,-5.41357248290113,-6.22613054444316,-3.81181769306256,-1.59106998192148,0.169393582685805,0.547614105806395,0.174189628823841,0.125179775593411,0.293179212914745,0.171627129370963,0.00741638078410793,-0.0338113184105,-0.0458983013449774,-0.0737668514445059,-0.0950947522484937,-0.143347946681208,-0.230999228833072,-0.19416278448969,-0.0285758767603122,0.0381994613144478,-0.0216049919155353,-0.00312660503874212,0.0055181304911712,-0.0118880987487079,-1.52459426636276,-4.93593174166921,-6.72309009636405,-6.13323148649214,-5.17745637072901,-4.66577362969245,-3.85425316960161,-2.60643517876721,-2.75974250706802,-4.29841500455369,-5.375291249814,-6.13312046864122,-7.39963916833842,-9.58871621794037,-11.221425651484,-10.5058587300282,-9.69345260536897,-9.53808695701115,-7.39216846590588,-4.33204526186436,-3.42913204316141,-3.58238155104397,-3.45034229833064,-4.26212439116269,-4.92369984422443,-3.9012685310882,-3.63206197415937,-5.57316860481942,-5.96062433242037,-3.91858269267801,-1.59574908190989,0.211233527300344,0.504419483864041,0.169146279368261,0.155343325691393,0.281072124536013,0.164143303426987,0.0133147468291636,-0.031861132238794,-0.0483203054874233,-0.0733368220286857,-0.0911205998632908,-0.149556556942774,-0.235855211129543,-0.181633183887709,-0.0258051855082835,0.0226514602621455,-0.00618293587158834,0.00108931223914704,-0.0122446368538084,0.0407948703769753,-1.5646683244097,-4.98870590298228,-6.69373376378934,-6.08400546381234,-5.16551565801792,-4.72490451512974,-3.86351296259674,-2.4904754493774,-2.81642847802538,-4.38540054798787,-5.28871932624001,-6.18336393687571,-7.29061568214634,-9.71950370685535,-11.2954549016817,-10.2946350006357,-9.76233527093754,-9.67306855360014,-7.2751261923377,-4.21977062463657,-3.58266624575073,-3.55450294339714,-3.36257441550585,-4.38319406221872,-4.97343379101701,-3.7375110259372,-3.57704030685477,-5.86230339956397,-5.7848110508418,-3.90177872030213,-1.64402683275421,0.253827239278589,0.491644010876082,0.136947506389032,0.177831301959057,0.286639448975135,0.153581106197532,0.013190062405683,-0.0277652012780803,-0.0487076391760195,-0.0758593735035646,-0.0860937686895698,-0.149651178256378,-0.24645419362518,-0.177494032941304,-0.0104690231437586,0.004606385734134,0.00649015824992869,-0.000171815394396154,0.00476342598625279,-0.0522635794036267,-1.72064951870293,-5.75961934466063,-7.75704152744218,-6.96983535066528,-5.80008217301982,-5.11333114193639,-4.25094883602612,-2.92447693542142,-3.01174050078555,-4.97875214539161,-6.31538604707778,-6.98755083691504,-8.49793772116438,-10.5769365618275,-12.611498880572,-11.986460390617,-10.7120263270478,-10.5359992476146,-8.13033978830283,-4.55500850257719,-3.61402375021528,-4.29625633390852,-4.06558824596996,-4.65351742296753,-5.41043309114551,-4.35439628123916,-3.77196729041183,-5.59728167125014,-6.14000156278276,-3.22102711494134,-0.550047296467003,1.24003975761476,1.25072715692344,0.605474325245871,0.505295999960242,0.612672196702002,0.372497633706085,0.125301664884073,0.0521421336496628,0.0161388519242128,-0.0350972028346533,-0.0787724301561421,-0.150972856290453,-0.254123284555876,-0.199849641877247,-0.00122510328399383,0.0722557137447336,-0.0317359082363341,-0.00442941222953246,0.00803400386343729,-0.0139341877687927,-1.82210128256035,-5.7513410372278,-7.6799750221694,-6.95815341254062,-5.83111299406914,-5.15591322448042,-4.18439685018838,-2.86074715587098,-3.15199739149139,-4.97860673344374,-6.21777932447371,-7.04650112111092,-8.43933118266469,-10.7457192141212,-12.5216947252586,-11.8401912820505,-10.9146240761105,-10.5293682950358,-7.93932918377357,-4.59049530076721,-3.77645781819013,-4.16597672778207,-4.07682790686785,-4.78248684249868,-5.31942940228558,-4.2205755982173,-3.91387576792957,-5.76363580927581,-5.85557606778482,-3.31131647303206,-0.563604846650019,1.26316307018895,1.20442776359501,0.61300848347535,0.536430933013305,0.595431447345942,0.36457251945408,0.133741044086095,0.0538514731238465,0.0134644610054216,-0.0345691355257363,-0.0745184199904123,-0.158185354303155,-0.259721504584579,-0.186269026735978,0.00653497226791014,0.0486746118524743,-0.00962412245806663,0.00116757531637042,-0.016285133479537,0.0594346721582554,-1.88185593802204,-5.8147096184061,-7.6316609006911,-6.90991684277032,-5.8209199459466,-5.21830825127906,-4.19253447708763,-2.73069605337957,-3.21861197360179,-5.07954046717615,-6.11794021145585,-7.09726746503563,-8.33322794319001,-10.8766388997327,-12.5982409819744,-11.6207622367481,-10.9914090258961,-10.6735529452382,-7.80646016786597,-4.45999365395199,-3.95409765779896,-4.14041843955462,-3.98677874361285,-4.90283648171956,-5.36610125060445,-4.05301198437146,-3.8626045251176,-6.06861538759787,-5.67613765966132,-3.27241555380817,-0.602948131283934,1.29179432296269,1.17579515365212,0.586561875284539,0.566287188812172,0.598874753863308,0.350752910674544,0.135082202837612,0.0587900838279021,0.013002201342593,-0.0372977923055537,-0.0688821404497378,-0.158702523513528,-0.271014313998148,-0.184800955801214,0.0303340402343608,0.0231483546404043,0.00760387488833358,-0.000203801747635206,0.0062375361247856,-0.0650720587165178,-1.97293034972414,-6.51188912199342,-8.59899710041577,-7.63961833020009,-6.32796227480034,-5.4870247259622,-4.49022685482349,-3.11303015227966,-3.32614850157521,-5.60398634178697,-7.1042837447497,-7.79132113714897,-9.42142544707652,-11.5876554306018,-13.7118342401147,-13.0860153440744,-11.6793070870178,-11.2836097444014,-8.49846994174803,-4.71759144034553,-3.83614247589808,-4.71350589242857,-4.52466043155296,-5.01845096522403,-5.64741430761685,-4.51560374110263,-3.89166336363157,-5.64410889701439,-5.94525963957567,-2.49909520059947,0.707122690318717,2.53875528928614,2.10695429596937,1.12597247452485,0.950894770131011,0.986863068228494,0.612324047647447,0.268723623692286,0.156997395227554,0.0933219393920741,0.0160209092645448,-0.0527630793429011,-0.150550423051637,-0.266379319529643,-0.197632018125226,0.0307252325391262,0.113119222878105,-0.0430449927706283,-0.00583943459293939,0.0107784372116102,-0.0158557854684626,-2.10416830129512,-6.49088944207372,-8.50636693471109,-7.63972008381047,-6.35742561356295,-5.52928264139826,-4.42024540531947,-3.04276189301866,-3.48343467082914,-5.60608807577795,-6.98879293495559,-7.86196581583583,-9.36142173570059,-11.7564969079205,-13.6218130419789,-12.9368987350844,-11.8923375358685,-11.2657625562371,-8.30040495358351,-4.754811814963,-4.01342594013423,-4.57942676948704,-4.53431347432024,-5.14387078372701,-5.55667667872098,-4.38194480372715,-4.04017703482542,-5.82128820317167,-5.64658943921816,-2.56358117346389,0.68643119538691,2.53681205255347,2.05704156426881,1.14767541204852,0.983786712420275,0.963804227925373,0.603738778516716,0.279982035923443,0.158448801991494,0.0904616845121444,0.0167314433896956,-0.0487617115354851,-0.15815414951639,-0.272605988171289,-0.184251402974095,0.0453388927026597,0.0801734414570221,-0.0135241625516372,0.0012237326951785,-0.0205875985768479,0.0799832226895764,-2.1862464434541,-6.56347327844023,-8.43797942284293,-7.59423135259702,-6.34930607207425,-5.5919687687556,-4.42985781920908,-2.89959877919163,-3.557359268278,-5.72400173757505,-6.8722468709432,-7.9155571706206,-9.25760106803475,-11.8871593647524,-13.7007268790269,-12.7097791857533,-11.9802115352593,-11.4079986976221,-8.15904051031397,-4.61517755356443,-4.20413112999559,-4.55740548846296,-4.44442010986302,-5.26053780796288,-5.60218428887627,-4.21270811364901,-3.98874307769705,-6.14100281442853,-5.4721992867715,-2.49886982252234,0.66339389897732,2.54836238256392,2.00925358354147,1.12708101459836,1.02238354306132,0.965152003519992,0.586186374804167,0.282880930863537,0.164297575801934,0.0898897466038851,0.0141678302773728,-0.0430986564261527,-0.159050247960478,-0.283545423349562,-0.187280793744082,0.0791991484699027,0.0464840954767011,0.00840320176971265,-0.000238850453521539,0.00771425516817181,-0.0777042830674705,-2.20626083948737,-7.20342627883415,-9.36818969475271,-8.23745875011724,-6.78491214140679,-5.79662980805967,-4.67455666427703,-3.2605573386128,-3.61575128391249,-6.19471544833222,-7.83774353905221,-8.53348678300909,-10.2705729250839,-12.5094758930125,-14.6971841713847,-14.0510777086087,-12.508583087479,-11.8869349646726,-8.75208931111387,-4.81477016071783,-3.98978257019028,-5.02475285895421,-4.89530054979508,-5.28817446033225,-5.78708802452045,-4.58432450474309,-3.93199650464746,-5.63709782370275,-5.74881489482667,-1.78553805784148,2.06409162775523,4.06484320916448,3.13787783606518,1.71312647939854,1.45204863843071,1.41368086076093,0.889416557095164,0.4327312221591,0.277121276465755,0.182482690175994,0.0768984783072546,-0.0183605161622789,-0.143246681046993,-0.271809096882044,-0.192342174231095,0.0637933264795676,0.159289474081909,-0.0549934603383668,-0.00724583575743175,0.0135282953538579,-0.0176664287212801,-2.36653074914554,-7.17055252960597,-9.26062129453768,-8.24818170294028,-6.8131899929226,-5.83776976563559,-4.60213225493812,-3.1848574606016,-3.78860668783004,-6.19847686524623,-7.70558377383986,-8.61543473887178,-10.208942986319,-12.6785012841693,-14.6069329939619,-13.8998863245587,-12.730638937703,-11.8548058281237,-8.55379447962722,-4.85429330516641,-4.17371409967084,-4.89382575487794,-4.90003050733602,-5.41035485317473,-5.69751735337859,-4.45164012023141,-4.08284932599954,-5.82819921744607,-5.44194489162674,-1.82198460538618,2.04917561562934,4.03154820261233,3.07523060921784,1.75617329743083,1.48652138171964,1.38419305402549,0.87938896947398,0.447545111763286,0.278197708313984,0.1793739601135,0.0780278879789009,-0.0149818908391498,-0.151032926264998,-0.278225125888132,-0.180659767736865,0.0872059580107031,0.115788353600334,-0.0175502687376623,0.00124510637760938,-0.0247655565324595,0.100211241660557,-2.47009992848445,-7.25231363545308,-9.17348940884277,-8.20459926802957,-6.8074332989204,-5.89990773731847,-4.61308568001245,-3.03032417392791,-3.86961428457693,-6.33187365550883,-7.57306394414254,-8.67208468194659,-10.1070855839946,-12.8089831936165,-14.6878703674264,-13.665831102312,-12.8307249906532,-11.9895692645602,-8.40666053650154,-4.71275896161965,-4.36858364555822,-4.87898966665699,-4.80973953988174,-5.5224963880726,-5.74168146258764,-4.2837061358289,-4.02758666292917,-6.1609402661706,-5.27784758980415,-1.73829080864594,2.05449520851911,4.03114821522036,2.99670217267278,1.74295662144418,1.53592748595634,1.38377770967336,0.857005953237875,0.452249888741337,0.285146987420829,0.178509868158869,0.0759456786127819,-0.00948683319388583,-0.152665199525926,-0.28755131801327,-0.190120032615987,0.132621786299658,0.0734988150913467,0.00898864815222395,-0.000274724491803363,0.00920736617631103,-0.0903278274872604,-2.42688535051976,-7.84961978848514,-10.0764716038761,-8.7777964931637,-7.19194310528775,-6.06298240212746,-4.82501569895358,-3.38949316735291,-3.90227196773466,-6.77310652470211,-8.52760434722311,-9.23114450260266,-11.0700414317961,-13.3709421902968,-15.6068757377095,-14.9286737336221,-13.2465351005944,-12.3914326429971,-8.92002137419716,-4.86991810125073,-4.12730217452468,-5.30893296328468,-5.219698314407,-5.49598773999793,-5.87076343818136,-4.60805562392339,-3.93918591696575,-5.62048037146558,-5.55075970988218,-1.05195330864284,3.5116573555914,5.74253963401379,4.28399007826982,2.35571216535573,1.99464374807936,1.87713196804857,1.19252581030205,0.612082957315086,0.408274511569402,0.280160159285325,0.144618235414435,0.0216740342508092,-0.131306008127183,-0.273978208110134,-0.185687069186438,0.100025162258425,0.210016708990117,-0.0675830910844811,-0.00866696472115664,0.0163077043967166,-0.0193552206444902,-2.61636081696853,-7.80471532740925,-9.95419779041672,-8.79909685600625,-7.21894246634702,-6.10241100725911,-4.75074543820262,-3.30882799991903,-4.09160356664067,-6.77546524891155,-8.38081117525104,-9.32442532879659,-11.0061991098141,-13.5404249816703,-15.5163432033591,-14.7757061643667,-13.4776875611609,-12.3415248005846,-8.72583398023947,-4.91258701559931,-4.3152286271187,-5.18223098240343,-5.21796146183081,-5.61573407168449,-5.78293996962205,-4.4758260347145,-4.09174887118076,-5.8258356712015,-5.23986567543446,-1.05836819457676,3.50921943333124,5.67382783822325,4.20503429984661,2.42287806755733,2.0310034741719,1.84083488564495,1.18067845193603,0.630785385527714,0.40895394815629,0.27674457950842,0.146289930765935,0.0243189395717166,-0.139234336098765,-0.280414778134292,-0.176454858066168,0.133373707151192,0.155210897815704,-0.0218797877935276,0.0012636812026762,-0.0289768118153774,0.120749995609604,-2.74159995385195,-7.89548729296304,-9.848480399846,-8.75743855266999,-7.21578603932473,-6.16324738237944,-4.76322773441562,-3.14274808210391,-4.18214344022457,-6.92152876806436,-8.23265660608581,-9.38501189076853,-10.9058701654879,-13.6707554815257,-15.5993143448442,-14.5344728012924,-13.5920379226139,-12.4644392323514,-8.57423471911229,-4.77257119123715,-4.51225428410555,-5.17518951174995,-5.12601068384415,-5.72310181984435,-5.82658959657634,-4.30927587267207,-4.032292614527,-6.16977641308334,-5.08952554391265,-0.959035742455456,3.54990142650478,5.66297834023938,4.09078632096254,2.41732054021709,2.09233407409368,1.83885730786061,1.15293844396938,0.637378601750172,0.417123738766432,0.275494344645255,0.14480609818646,0.0296303604207033,-0.141784192237406,-0.287535786147213,-0.193427510680898,0.191287024308261,0.104017143420001,0.00923055790059646,-0.000316145149669796,0.0106273783465919,-0.102240196068939,-2.63008509872144,-8.45021657816435,-10.7557849894571,-9.30243638603447,-7.57633972760004,-6.31166543593285,-4.96228340107495,-3.50764075110222,-4.17773328411604,-7.31260313441664,-9.16969202000995,-9.89769299432309,-11.8221475652036,-14.1861943411784,-16.4663882134719,-15.756731337633,-13.9414561878287,-12.8580899185933,-9.06825913978211,-4.91225387478085,-4.25743493871708,-5.57150001477584,-5.50932933828967,-5.67988797598122,-5.93714085029408,-4.61824899470558,-3.93928066136292,-5.60705700124744,-5.38181846706745,-0.369666417288081,4.99055583154758,7.59698541057252,5.57048401607418,3.03635148792454,2.57736442829567,2.38002504892706,1.52192281637339,0.804454089494184,0.549683891556937,0.385588997240187,0.218377422331359,0.0668460089054139,-0.115654244190167,-0.275129975542922,-0.179216049726513,0.13735938347722,0.26427818890585,-0.0803036441104269,-0.0100039212938999,0.0189305355598027,-0.0209373550341839,-2.84599695636397,-8.39631080601132,-10.6193518942632,-9.33173102370003,-7.60340313797156,-6.34916591929531,-4.88545671556588,-3.42437977103629,-4.38129803345704,-7.31217926376301,-9.0129194717017,-9.99800434168625,-11.7581477468469,-14.3556181157653,-16.3755850568632,-15.6024841847951,-14.1808532537793,-12.7910376816996,-8.87722606935838,-4.95974506819594,-4.44877158243941,-5.44747985810681,-5.50296033385706,-5.79648786085581,-5.85088004298001,-4.48683246236914,-4.09253590873176,-5.82500236893586,-5.07347638004508,-0.34907634088348,5.01627083356265,7.48814069796892,5.46433767320659,3.13630301009218,2.61443846320078,2.33647978065263,1.50758599978064,0.827805821580492,0.549762965152344,0.381836473836728,0.220637385523531,0.0688717780063379,-0.123997477545302,-0.281071741969356,-0.173503263036063,0.181849705096612,0.197586367252243,-0.0262157940278839,0.00124195073156701,-0.0327980138665021,0.139444725636282,-2.98982745428509,-8.49685710566838,-10.4977192945427,-9.28987361526714,-7.60288236349123,-6.40943902040628,-4.89773547406726,-3.24899275687017,-4.48168976981204,-7.46664732852313,-8.85407966075861,-10.0600055315209,-11.6597751474582,-14.4859984178676,-16.4601903644183,-15.3549016343272,-14.3085994747961,-12.9028647109987,-8.71988487499195,-4.82225994475361,-4.64896557429825,-5.44607679722468,-5.4103937194187,-5.8992566522474,-5.89352805047612,-4.32198116480864,-4.02940499413245,-6.17633278424431,-4.93840363527346,-0.245866045811624,5.10348678020058,7.47478032195884,5.30148003996264,3.14099136062762,2.68941313360008,2.33306247786407,1.47345951073504,0.836650045526361,0.559250366091826,0.380151541024777,0.219673493836841,0.0743040231549897,-0.127984074463136,-0.285098523401767,-0.199205825326599,0.25305223075219,0.137439581667731,0.00920914977668237],"Archive1109_field4":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.77365783622027e-05,6.42203870030587e-05,0.00206507495535998,-0.00190519885915211,-0.00185129893352963,0.000815767453670803,0.0018307758455934,-0.000339903833320969,-0.0011511396665609,0.000282609742328038,0.00172578487840464,-0.00121615902411199,-0.000819227307835668,0.000743580009167495,0.000129002588105556,0.000664903371954309,-0.00346688447525593,0.0017567702856568,0.00102272820756121,-0.000284592770417399,-0.00112682690752363,0.00101893787123572,-0.000402518732985855,0.000548394277945698,0.000739414643802381,-0.000523319374788097,-0.00212240692996216,0.0012901557067131,0.0012029795629863,0.000883901804694224,-0.0044230781195095,0.000445022597814077,0.00124788513490352,-0.00162688720498429,0.00352668428698099,-0.00111237186615289,-0.00176430661993073,0.000934811473642251,0.000409465402624171,-0.000442381585680338,-6.4082217097517e-05,0.000164378203508184,-9.09774762419842e-05,2.22583509931536e-05,7.58924131119024e-05,2.15618132322826e-05,-0.00053182925979682,0.000761287359608864,-0.00157871403596984,0.0001996465043575,-0.0627636300270382,-1.63930903913399e-05,-2.77685763376643e-05,-0.00204000482363246,0.00190540184687498,0.00164064055255561,-0.000497172688766025,-0.00177408499067571,0.000123815847282732,0.00112164868616163,-0.000129351813854411,-0.00173227912028596,0.00110272960357236,0.00086099126525978,-0.000756750827791187,4.89264460254264e-05,-0.000824225308910079,0.00275784087450205,-0.000194589857922779,-0.00169469264997945,3.6306130144912e-05,0.00126177626386013,-0.000977552642703367,0.000471400768869051,-0.000634334102242578,-0.000728527078618482,0.000560285819364545,0.00185790298451467,-0.00077754340111555,-0.00136511156307093,-0.0010593323060848,0.0046389755104526,-0.000292803647720293,-0.00171432775490061,0.0021538137976568,-0.00377687044122387,0.00108437245698851,0.00179232412177427,-0.000910057095982632,-0.000434593416478624,0.000440944435564593,6.55061315775752e-05,-0.00016479439363092,8.74928448036491e-05,-2.2650706084127e-05,-7.66653138725961e-05,-2.20994946309613e-05,0.000536675375985072,-0.000785104819772751,0.0014765006513659,0.00049366340823912,0.0623594630060471,2.77365783622027e-05,6.42350128716038e-05,0.00206520903358347,-0.00190450293352747,-0.00184948951029627,0.00081742136199127,0.00183556361349695,-0.000337033826550958,-0.00114489992253446,0.000289240023403836,0.00173269744840146,-0.00120910541059572,-0.000815643827201952,0.000750923722386315,0.000136646118786874,0.000673006492126155,-0.00345802347111407,0.00176701034553499,0.00103435390651728,-0.000278459277148333,-0.00111422879642722,0.00103175816898997,-0.000389491134081497,0.000561506561740654,0.000752061136543546,-0.000511720347925149,-0.00211719951105325,0.00129978656295232,0.00121190670786465,0.000891811760330822,-0.00441620390923718,0.000448149071256332,0.0012537225934604,-0.00162119311920324,0.0035322952288487,-0.00110709121687966,-0.00175945684040815,0.000939329590860303,0.000411564142339137,-0.000438539832852518,-6.05827220315254e-05,0.000167564446061961,-8.80906202436024e-05,2.48592564810822e-05,7.82218296687725e-05,2.25983170401964e-05,-0.000530052672078982,0.000762599198280361,-0.00157798274287028,0.000199892389745115,-0.0627636300270382,0.000129866767906699,0.000370803680465838,0.00230633129165333,-0.00266278326629516,-0.000461824620404033,0.00159952272019268,4.54215338935842e-06,-0.000515201724209058,-6.8355388728204e-05,0.000667160978222284,0.000490068887388302,-0.00144410351563185,-0.000225227438321723,0.000927593200601003,-0.000391172696590692,-0.000142753982307197,-0.000598508468725666,0.000995233712951723,-0.000994691575984473,0.000115559082793396,0.000121993329863485,0.00130657365407542,-0.000585085507807052,-0.000317565111793944,-0.000255238022809325,-0.000857417863495824,0.000531336933641192,0.00180853744640703,-0.00275228181138978,0.00128940603212565,0.000309703401798099,-0.000903252301399312,0.00191112786071202,-0.00140230995383454,0.000614449338002288,-0.00033658122908756,-0.000591302739308192,0.000481270997249047,3.0508541048438e-05,-0.000247669053444136,-2.42736879072107e-05,0.000139966179009912,-7.15943720716042e-05,-4.2310626729998e-06,7.44200235919697e-05,-1.12652813630645e-06,-0.000614111694201296,0.00123757782058291,-0.000940198747937052,0.000926633515407706,-0.0779937026350944,-2.76798076369067e-05,-0.000285916739112643,-0.00227247310489562,0.00256719957140038,0.000323355905723819,-0.00127809875671793,-4.58384815005169e-06,0.000398950229157452,5.3303222394116e-05,-0.000607509017334853,-0.000482068836265604,0.00139957765446535,0.000227465265423288,-0.000917010982587043,0.000482659927137861,6.95176910347008e-06,0.000385140023388555,-0.000378674728956514,0.000847714828278388,-0.000267446472800018,-8.29860431287569e-05,-0.00129852020316634,0.000634954839903958,0.000298231062143972,0.000248201681223697,0.000857398184095772,-0.000607996699343542,-0.00161284119467614,0.00272732174482419,-0.00132324161568446,-0.000172698478114194,0.000934307258627058,-0.00216263052204416,0.00168729448646287,-0.000707219114096427,0.000288303637959353,0.000604417372240495,-0.000455860620090928,-4.84151489319956e-05,0.000243969798390604,2.56114291494376e-05,-0.000140177142642991,6.84296808221947e-05,4.31143641064168e-06,-7.5362995835243e-05,1.13681080565039e-06,0.000620298477000419,-0.00126572216800099,0.000745886165621517,0.000313268072521027,0.0774537759528504,0.000129866767906699,0.000370814415288072,0.00230644042916267,-0.00266219759511981,-0.000460273173397622,0.00160095644391774,8.72210738759349e-06,-0.000512688189582107,-6.29086764211461e-05,0.000672937064381406,0.000496115306344022,-0.00143790928690191,-0.000222091012194987,0.000934009961345669,-0.000384489271637248,-0.000135668663399921,-0.000590803359814051,0.00100413558679804,-0.000984480677705994,0.000120955430196491,0.00013300095082428,0.00131772191894293,-0.000573729178987021,-0.000306055467983938,-0.000244075858198724,-0.000847126581409052,0.00053592672920671,0.00181696017878226,-0.00274442888784413,0.00129641248549168,0.000315735825334561,-0.000900521749056529,0.00191624569982003,-0.00139730581419813,0.0006193986204914,-0.000331924364402646,-0.000587032994771124,0.000485248446637419,3.23576412051933e-05,-0.000244287651488378,-2.11957714412381e-05,0.000142767914686554,-6.9057156014942e-05,-1.9467838199088e-06,7.64634395014908e-05,-2.19054241623039e-07,-0.000612558446299236,0.00123872604641605,-0.00093955276754282,0.000926854847618341,-0.0779937026350944,0.000364273247190713,0.00138310911519221,0.00452574784656461,-0.00407558523335124,0.000410729542512663,0.0012030612560156,-0.000168474515489551,-0.000205081526979635,-5.39767555528765e-05,0.000577143275945815,0.000364389446070203,-0.00120372411809628,0.000251876890084067,0.000145703172645771,0.000310469488580554,-0.00120629136353754,0.00112609574035793,-6.72931577959181e-05,-0.000957312430631671,0.000610463605168761,-0.000344456633935966,0.00114492221049773,-0.000121497703837063,-0.000596536029110985,-3.12810399229018e-08,-0.000810546092093628,0.00113690514575765,0.00082913701570931,-0.00198732856409855,-5.47359396018624e-05,0.00155385674222277,-0.00219725495968195,0.00261324010858662,-0.000908751718714297,-0.000512988102810729,-0.000187583619644539,8.35294151591419e-05,0.000217460810180554,-4.24255488097591e-05,-0.00017707102580909,9.84760599691385e-05,7.03793755082372e-05,-5.8196897392352e-05,5.76510505986946e-05,2.47687347961058e-05,-2.46767801010521e-05,-0.000465716938203278,0.000606771041558224,-0.000391090941608053,0.000363774440261115,-0.0696148035468019,2.79626343895042e-05,-0.00118406818624911,-0.0045246331957701,0.00387110255479423,-0.000443438845139066,-0.000887786945939056,0.000147625405669324,0.00011696215522954,5.36261325834119e-05,-0.000548922966312777,-0.000357199621383763,0.00118168108249649,-0.000245932739489708,-0.000140536451474235,-0.000242365337051791,0.00110094055589058,-0.00125635164386707,0.000488053698264864,0.000876760175592331,-0.000695331530814644,0.000371529656293003,-0.00116071508807363,0.000173856122622232,0.000588880674151275,-2.69518625790954e-06,0.00080373685754894,-0.00117861900287516,-0.00070437195547579,0.00198443735845249,7.38914606581048e-05,-0.00141805319888182,0.00218158651012269,-0.00282279003280088,0.00114124577085802,0.000463827911979897,0.000137700751662755,-7.71415997474381e-05,-0.000190894544462064,2.66892762996285e-05,0.000173013625604843,-9.68468700117369e-05,-7.04486119831679e-05,5.49204801198315e-05,-5.67442391322192e-05,-2.55400215560559e-05,2.31399544699345e-05,0.000476814077982572,-0.000642310310294863,0.000165326069303268,0.00115248109267339,0.0688139968859876,0.000364273247190713,0.00138312124345319,0.00452582940712605,-0.00407511394328408,0.000412012079935736,0.00120426896183609,-0.000164945262407732,-0.0002029608159836,-4.93397311309785e-05,0.000582105731521144,0.00036957050172041,-0.00119847730814748,0.000254518715777352,0.000151110330526408,0.00031609987548696,-0.00120032142268885,0.00113265185754854,-5.96913259025059e-05,-0.000948693780152674,0.00061500747549882,-0.00033508852532284,0.00115454126356282,-0.000111681594325725,-0.000586703012278078,9.37513761786889e-06,-0.000801951516555576,0.00114077249332453,0.00083633023431201,-0.00198066454060758,-4.88332864957092e-05,0.00155901624889302,-0.00219486687268613,0.00261777738441842,-0.000904284481480159,-0.000508601336235373,-0.00018348907192734,8.72800665440141e-05,0.000220959402029535,-4.08035276116789e-05,-0.00017411684974267,0.000101156248008725,7.28150502991231e-05,-5.59947100450756e-05,5.96290778933865e-05,2.65313772729922e-05,-2.38982374234025e-05,-0.000464392981707384,0.00060775605166217,-0.000390527273150918,0.00036397209621776,-0.0696148035468019,0.000696707874111663,0.00248521951560645,0.00371707562544436,-0.00467654697979279,0.0013277216773884,0.00103046301223971,-0.000555967693790601,8.04511074771466e-05,-0.000186550777186816,0.000573325270868573,0.000202156509861572,-0.000811534250903693,-0.000337045332526754,0.000496396010770091,-3.96696811982067e-05,-0.000316858341941382,0.000357791631575031,0.000235758103159654,-0.00119828050747662,0.000925737198583063,-0.000565723123641252,0.001356451033585,-0.000352226660470882,-0.000527574443792113,-0.000419239559142381,-7.59567159833976e-05,0.000331720683018501,0.0011570517545158,-0.0019422855715258,0.000825711851704334,-5.72759329663173e-06,-0.000395005111783384,0.00206460454208148,-0.000246193281603622,-0.00126929244610865,-0.000393997501398402,0.000278968568750992,0.000382738549469783,-0.000220728071758448,-0.000169610975391019,9.3154304576286e-05,8.51857187628445e-05,-3.63280707754281e-05,1.17269329663498e-05,1.23690613750079e-05,1.65314130860484e-06,-0.000393372773246434,0.000680898494087298,-0.000350723517785143,0.000369954471002022,-0.0638827568862062,5.80500078440278e-05,-0.00216669970024275,-0.00383356681112681,0.00437105752601559,-0.00120613622294595,-0.000771580876237829,0.000525244283944392,-0.000134790161598067,0.000197147767877174,-0.000567988514323721,-0.000201456388001417,0.000817239925289632,0.000339779660400366,-0.000487787155781872,7.99803453245497e-05,0.000240293669629435,-0.000387606208646654,-2.54222053344676e-05,0.00120114467163677,-0.000956000358417699,0.000576567189906492,-0.001372028819118,0.000386374593603312,0.00053825409938785,0.000414983805136846,7.19354890798387e-05,-0.000329654810729901,-0.00111211224606085,0.00195580593739788,-0.000739282466532906,0.000123721957716454,0.000339652183582783,-0.0021903826662907,0.000373399891946882,0.00126551761734574,0.00035636205255438,-0.000281668127320691,-0.000358452441218183,0.00020812343862908,0.000165799823661352,-9.13841540716164e-05,-8.52553719476753e-05,3.30975138475524e-05,-1.01396373582632e-05,-1.32340501530846e-05,-3.43165217065811e-06,0.000403684667934964,-0.00070477101798882,7.52540598137623e-05,0.00138292262191476,0.0629595083068393,0.000696707874111663,0.00248522636587346,0.00371713069648233,-0.00467618684024757,0.00132874138607484,0.00103144385756185,-0.000553065203127873,8.22067648157228e-05,-0.000182722357951115,0.000577417631773108,0.000206458195609993,-0.000807166716090492,-0.000334866812613019,0.000500839410332765,-3.50346343891662e-05,-0.000311940927735795,0.000363157791331072,0.000241983223200118,-0.00119112162530357,0.000929528058008217,-0.000557966577590796,0.00136438042418091,-0.00034409039489303,-0.000519350310546499,-0.00041132335225172,-6.86794967255067e-05,0.000334965044330312,0.00116302917914325,-0.00193669486078703,0.000830719760271103,-1.40057248641765e-06,-0.000393008775463376,0.00206843146044866,-0.000242402164948686,-0.00126554470869138,-0.000390501213085146,0.000282159359388996,0.000385713352318138,-0.00021934682848479,-0.000167098893975745,9.54292908901381e-05,8.72512852160568e-05,-3.44625646910129e-05,1.33991510589671e-05,1.38525691680708e-05,2.30431454184794e-06,-0.000392269375752753,0.00068172403604262,-0.000350240944842645,0.000370128966579094,-0.0638827568862062,0.00111199493252534,0.00406991059871961,0.0047630055557143,-0.0057227442595098,0.00235958075904682,0.000338351578287161,-0.000280710276474329,9.00433397459886e-05,-7.57921982884017e-05,0.000146586397509729,0.000604432253709935,-0.000751119716793194,-0.000541413214880405,0.000646176478790142,-6.31779289278873e-05,-0.000431516425156664,0.000717218105666761,-0.000429614415615433,-0.000269487077079889,0.000398515315341157,-0.000291535062824379,0.000624765282183001,0.000215864535902325,-0.000630803415507059,-8.13651334522479e-05,-0.00015311158108963,0.000418231426644162,0.000229172328313064,-0.000527067696510519,-5.49141657804191e-05,-0.000175455178715277,-0.000660295864822948,0.00228688166886764,0.000307784057389797,-0.00162064824700965,-0.000804087939891821,0.000709272893967621,0.00034693667708667,-0.00028374433153051,-0.000175307405233689,0.000179119394145514,4.63713081936249e-05,-2.75981076499819e-05,5.61847233073943e-05,-4.50821716314088e-05,-3.10929273371581e-06,-0.000241319345942163,0.000157562004474453,0.00034116404618334,-0.000194128901945134,-0.0503364391504996,0.000158269499481251,-0.00356604141325266,-0.00511574426301708,0.0053700206966291,-0.00209083281172278,-0.000156084923348506,0.000260981899771492,-0.000126929446545213,8.9880339830904e-05,-0.000145713737405879,-0.00061018022583392,0.000770799700095865,0.000548008870069447,-0.000633131817236126,8.94225002909769e-05,0.000376266828909012,-0.000718672573867646,0.000560828203497495,0.000291177330548535,-0.000398431032695667,0.000302589229371298,-0.000633533471790099,-0.00019723120765642,0.000649062883593726,8.38781355577612e-05,0.000149859175268413,-0.000400605458953883,-0.000212537663177588,0.000537710494821251,0.000170750022692147,0.000293133032233156,0.000597226280772525,-0.00237491586562035,-0.000246383328809984,0.00162374948711718,0.000783079319996342,-0.00070936401208716,-0.000330387863428474,0.000271496330441844,0.000173226328846894,-0.000176743691288306,-4.68201350565704e-05,2.46006433829856e-05,-5.4156838560731e-05,4.43110618128954e-05,9.75079429617575e-07,0.000251285874747723,-0.000172026693992653,-0.000627497166465589,0.00199406863187445,0.0490928263947558,0.00111199493252534,0.00406991843306981,0.00476303221207449,-0.00572249409628888,0.00236033629949496,0.000339103855494543,-0.000278467144529031,9.140361230922e-05,-7.27904341140837e-05,0.00014983221889067,0.000607838615268624,-0.000747723159558175,-0.000539739013629049,0.000649597767722051,-5.96070464633933e-05,-0.000427724793369364,0.000721405468372917,-0.000424731465596755,-0.000263924752014488,0.0004014605160211,-0.000285430093498688,0.000631121699501348,0.000222415390302338,-0.000624269815370979,-7.5189522404564e-05,-0.000147502857160695,0.000420757106835705,0.000233905061664016,-0.000522652099397305,-5.09716414196255e-05,-0.000171987083769624,-0.000658648872610175,0.00229009284008696,0.000310989918594627,-0.00161749285476405,-0.000801160745502392,0.000711936492185131,0.000349420428762239,-0.000282593772878094,-0.000173221566213616,0.000181001822887178,4.80771201224767e-05,-2.60598449316979e-05,5.75605320005827e-05,-4.38699425744703e-05,-2.58380759328035e-06,-0.000240439535128999,0.000158229696423971,0.000341566683033315,-0.000193976865384655,-0.0503364391504996,0.00160545848288995,0.00552459414387067,0.00362996464674886,-0.00609294617375208,0.00315051220488076,6.94977173731879e-05,-0.000504922972999627,0.000289177088956803,-9.49838318198488e-05,5.6337921716782e-05,0.000579296876223945,-0.000708150456346517,-0.000629226967975106,0.000809578825610108,-0.00025361585832016,-0.000209439880006037,0.000589527841362917,-0.00031406340294486,-0.000495822337313911,0.000687464538502843,-0.000461935260499752,0.000742246880781354,-0.000184033430715243,-0.000149398518225415,-0.000524704602461921,0.000192951201934462,0.000282144122463296,0.000109118688536808,-0.000344666004662345,0.000247270948333018,-0.000753776757450081,-0.000206408396462427,0.00202554351790529,0.000899474644803968,-0.00190577258075019,-0.00106138927694037,0.000808657085899461,0.000437798833568937,-0.000339205381207532,-0.000188226455512601,0.000170290773409612,4.89877380531107e-05,-1.10689387304955e-05,4.7128335489664e-05,-7.79605056146891e-05,1.82943548824537e-05,-0.000132293309609863,5.68096542363362e-06,0.00053921161198009,-0.000253455103596682,-0.0449770134375001,0.000195869097148937,-0.00483817924526627,-0.0042492025402531,0.00571647789958318,-0.00273486517416785,2.24122601346836e-05,0.000508951164943889,-0.000314217817849877,0.000101184047804911,-4.43016957351998e-05,-0.000590654495686181,0.000727129771070032,0.000642741064003064,-0.000785489911939531,0.000257784163561275,0.000178224546003158,-0.000577993281698001,0.000395447308409819,0.000539588420903746,-0.000679112649222023,0.000475048359065122,-0.000736475667748753,0.000186946244718286,0.000174519890339039,0.000532682634156428,-0.000193426707755002,-0.000255820735754451,-0.00011279848002224,0.000354597958241898,-0.000116100302932301,0.000858411533210462,0.000167144820647799,-0.00208041690767532,-0.000917897246745976,0.0019031148106402,0.00105917705003746,-0.000800510423626376,-0.000430263626868774,0.00032509888669209,0.000188175738539605,-0.000166456120338595,-5.01110618939069e-05,8.70197718922189e-06,-4.51686177383527e-05,7.74624562926242e-05,-1.98393235154139e-05,0.000139285179722112,-8.44170308974352e-06,-0.00082685196386846,0.0020247653883936,0.0434320821499521,0.00160545848288995,0.00552459714587417,0.00362996493886248,-0.0060928029778503,0.00315100836175335,7.00216206734151e-05,-0.000503321545088914,0.000290161917587101,-9.28086374253277e-05,5.8691634258904e-05,0.000581787146451214,-0.000705685746323827,-0.00062802793582787,0.000812032002478963,-0.00025104820417106,-0.0002067124277626,0.000592524736533857,-0.000310560662553559,-0.000491752241909809,0.000689639438294065,-0.000457456721647301,0.000746906956824283,-0.000179167607262854,-0.000144500281881195,-0.000520075770053302,0.00019718138865388,0.000284032331967828,0.00011263048184186,-0.000341321743797179,0.000250321071202408,-0.000751134653813752,-0.000205150759274072,0.00202803902372086,0.000901994421767238,-0.00190327050803101,-0.00105907157230538,0.000810754222922687,0.000439751730086843,-0.000338299402063397,-0.000186586905495859,0.00017176700521235,5.03239538797619e-05,-9.86513650038287e-06,4.82046401697942e-05,-7.70152888183854e-05,1.8697630966211e-05,-0.000131629638173678,6.19267705409985e-06,0.00053953351396238,-0.000253326508732241,-0.0449770134375001,0.00215538238759018,0.00728856985085119,0.00424714497654336,-0.00681820920247,0.00393266932839915,-0.000529006276016678,-0.000228636753830209,0.000209303210744425,6.9063616417112e-05,-0.000102742407670257,0.00059285256433748,-0.000750164810433245,-0.000372331838516558,0.000749016587059983,-0.000432224051453154,-0.000138789801776957,0.00066610775128448,-0.000435413663247634,-0.000174910123096758,0.000368241109847908,-0.000113734021964196,0.000227814135217967,0.00016339123573227,-0.000247041765932744,-0.000472733618079038,0.000334188025836621,0.000337662148624662,-0.000447112405958133,0.000383876083841299,-0.000305964136138509,-0.000499133204596615,-0.00062512057695588,0.00204128080704824,0.00126174763125108,-0.00187424478476477,-0.00146636225625001,0.00105929905638238,0.000373361630752414,-0.000333026369404467,-0.00020202625832475,0.000216450194820543,2.1846108894644e-05,-9.53752472924867e-06,7.90024631143747e-05,-9.41825961810548e-05,-3.98803442528997e-06,-4.91911242452195e-05,-0.000273049629875581,0.00097735101590688,-0.000702340135288562,-0.0357187267408998,0.000302210798174475,-0.00638182938913611,-0.00517824485838145,0.00647640122759623,-0.0033969045507275,0.000526007870823328,0.000264945532362525,-0.00022619854000703,-7.19615481201268e-05,0.000124328062411177,-0.000595795431329413,0.000753012128414462,0.000395431150947637,-0.00072468657954018,0.000419732440226809,0.000129597030669815,-0.000656246715705522,0.000491096392975343,0.000233804565763116,-0.000358171141529296,0.000128886032760107,-0.000206850377532147,-0.000169770292198738,0.000271157084366409,0.000486207042667328,-0.000328910882846458,-0.000325166637149067,0.00044149134864345,-0.0003770717256083,0.000436327184702647,0.000599307291312061,0.000622926673961737,-0.00207283853616221,-0.00135927987443914,0.00184840537173512,0.00148296817998241,-0.00103250895527287,-0.000379068716980459,0.000315422129319441,0.000204933990803867,-0.000210291332414318,-2.42813244922339e-05,8.39326581016503e-06,-7.75225220487102e-05,9.39378187724815e-05,3.04084475564942e-06,5.42474631826124e-05,0.000272905948217599,-0.00121093182128972,0.00224123207679561,0.0335931932342176,0.00215538238759018,0.00728857411467218,0.00424711918322613,-0.00681817134083498,0.00393290855320751,-0.000528708726332154,-0.000227692661481252,0.000209893304662826,7.04035804951235e-05,-0.000101267932583954,0.000594383559327466,-0.000748698518277731,-0.000371616830056248,0.000750484082373525,-0.000430696728674146,-0.000137162834858557,0.00066794437026867,-0.000433227795155948,-0.000172399526747332,0.000369584502125636,-0.000110897517940283,0.000230860923956108,0.000166586935974073,-0.000243931214116556,-0.000469905442022036,0.000336742152739737,0.00033883469981909,-0.000444853860070769,0.000386047257271017,-0.000303965864507042,-0.00049732919071933,-0.00062420824001122,0.00204313346299393,0.00126363549780871,-0.00187237875406218,-0.00146464183550201,0.00106084858673972,0.000374801910564445,-0.000332361747463905,-0.000200829415258032,0.000217521920268858,2.28123354142053e-05,-8.66981241443803e-06,7.97767274330175e-05,-9.35046220473933e-05,-3.7025074241645e-06,-4.87387190516631e-05,-0.000272691042069718,0.000977591783451188,-0.000702235368213524,-0.0357187267408998,0.00272839511841806,0.00845823159782255,0.00309331380813298,-0.00687845680670286,0.00469367016869025,-0.000909028337962073,-0.000323273693973894,0.000262540633273031,0.000230356972504104,-0.000194248464924098,0.000292994347779798,-0.00064586115833038,0.00010170569080184,0.000248993782502021,-0.000336752666398097,-0.000101225580901123,0.000685572045677933,-0.000267751168805032,-0.000473758043972918,0.000502941976805645,7.85008259976487e-05,-4.89394301628183e-05,5.32390209547591e-05,-6.47669701690605e-05,-0.000475105090947207,0.000375780127719899,0.000282556895893815,-0.000342661767076042,1.98162830200624e-05,0.000173547152359324,-0.000669339379578614,-0.000320936104259455,0.00144007509393306,0.00166614151364345,-0.00185771361056994,-0.00155957270629029,0.00107952204853772,0.000343035338140167,-0.000313455649571332,-0.000189278352541999,0.000187748214625442,1.9856443707743e-05,7.96070885535005e-06,6.51896893936218e-05,-9.74325531931343e-05,-1.83007284914353e-07,1.07621098196019e-05,-0.000391016540507375,0.00130930387482971,-0.000758078674371463,-0.033934601861521,0.000274858601709811,-0.00741309314957714,-0.00412647301827875,0.00653094415416123,-0.00403799487485981,0.000804814398424587,0.00039962429891803,-0.000270122764109904,-0.000244129954408353,0.000221662681855687,-0.000274369091557002,0.000618964070035505,-6.17974326578599e-05,-0.000236600876860444,0.000311288708018146,0.000115409729164008,-0.000682427198772659,0.000310018785464287,0.000554180452456417,-0.000491569407465099,-7.19341783483152e-05,8.16739617717326e-05,-4.12568608138429e-05,7.11749861293632e-05,0.000487164321383924,-0.000359586482311942,-0.000295559857096098,0.00035763400098193,5.12757029974861e-06,-6.81590588345459e-05,0.000759808492260053,0.000380960052963194,-0.00146258600344419,-0.00184946483705782,0.00180029929183649,0.00160192369378173,-0.00102905252733338,-0.000364422545423381,0.000292469675641058,0.000195689658477855,-0.000178838855268637,-2.41018675538129e-05,-7.25957828914308e-06,-6.4731910778518e-05,9.70824592290671e-05,1.699016343618e-06,-1.20920189734005e-05,0.000389513961755472,-0.00145810395030656,0.00198250762434778,0.0311497545732505,0.00272839511841806,0.0084582313711251,0.00309326464094787,-0.00687852236702579,0.00469365443770364,-0.000908956404953131,-0.000322962925564963,0.00026276026112708,0.000230883730278901,-0.000193660013243257,0.00029360841056534,-0.000645293161803826,0.000101965565791504,0.000249518490668581,-0.000336203343810652,-0.000100634185065546,0.000686248614084454,-0.000266914814225272,-0.000472730097546269,0.000503515903823271,7.97307480013504e-05,-4.76074569068629e-05,5.46517233050085e-05,-6.33863921295138e-05,-0.000473838083822855,0.000376963625446639,0.00028309849703819,-0.000341613675530099,2.08710906252925e-05,0.000174596055373724,-0.000668341274041933,-0.000320403786808961,0.00144121046854695,0.0016673302149339,-0.00185652479743804,-0.0015584871228169,0.00108048708877314,0.000343928979671411,-0.000313044009996153,-0.000188544017704327,0.000188399453321684,2.04400695190309e-05,8.48187380753333e-06,6.56527212975548e-05,-9.70298898553219e-05,-1.59013833753671e-08,1.10163421830821e-05,-0.000390806710688007,0.00130946302188352,-0.000757999013010505,-0.033934601861521,0.00317841544623983,0.0088481671462451,0.00286320000288487,-0.00722516165178013,0.0054344578916369,-0.00151503268789163,-6.80194817820751e-05,0.000180358709661378,0.000334993052071088,3.86211847751258e-05,-0.000477165707003726,-7.64467396918609e-05,0.000361335545111665,-0.000283941566236461,-0.000102112212066786,-0.00028845955542544,0.000782900754230842,2.19098766140919e-05,-0.000835184483413209,0.000714488256767608,0.000167718202094121,-0.000273587209584391,-0.00021492013592471,0.00040558420786466,-0.000511696195764053,0.00024983765867831,0.000311850460046337,-0.000127461043211958,-0.000515580310420558,0.000641326176744666,-0.000806808197343962,-3.51624540732798e-05,0.000810950557317177,0.00209942229842663,-0.00186221459278166,-0.00169834152118473,0.00120725981977033,0.000203896346405102,-0.000256393003620926,-0.000179575306152048,0.000197804176273264,4.73452395680811e-06,8.40492921891745e-06,9.69248846257432e-05,-0.000120694158717293,6.41949496714157e-06,5.083489060707e-05,-0.00059656470011167,0.00145393031964896,-0.00104894514798489,-0.0285920861005013,0.000161045469783989,-0.00780769059510275,-0.00394712544580356,0.00697236761076918,-0.00468704722688671,0.00127164457779267,0.000190532095530117,-0.000179177092071164,-0.000350639483695678,-1.59686121297091e-05,0.000488595308391317,4.3938244951721e-05,-0.00031904536135373,0.000286792793934847,7.14045857916074e-05,0.00031930503768094,-0.000775997959143557,-1.4344593354518e-05,0.000969786469604759,-0.000713618896096109,-0.000178043455247731,0.000283956012436243,0.000237647423897503,-0.000376585590059241,0.000510824473354119,-0.000209941850905993,-0.000347025879345612,0.000151243998416456,0.000579312223575755,-0.000532771195570262,0.000819680491669737,0.000174860281786794,-0.000817284599043803,-0.00236705716298802,0.00177564587819311,0.00176227890435836,-0.00112052987639739,-0.000245458313300838,0.000234782741519568,0.000189208872929532,-0.000185548579866688,-1.12783417695362e-05,-4.99772949207944e-06,-9.88580935857695e-05,0.000122968405417211,-5.95416928461155e-06,-4.13204906363084e-05,0.000467939406034556,-0.00144354220588269,0.00179536467429009,0.0248655177035357,0.00317841544623983,0.00884817133803261,0.002863166591044,-0.00722522791046272,0.0054343676196884,-0.0015150697160169,-6.80780784283795e-05,0.000180338680392531,0.000334982289009346,3.86289713795997e-05,-0.00047718359950614,-7.64908533101208e-05,0.000361311517242674,-0.000283996224843222,-0.000102177599141271,-0.000288523933728452,0.000782863859380324,2.19135672116847e-05,-0.000835168934408979,0.00071450477850517,0.000167800868297702,-0.000273473720348255,-0.000214825102257772,0.000405656830392623,-0.000511641995793965,0.00024987581654738,0.000311881914634771,-0.000127338781308432,-0.000515501493259202,0.000641408998203367,-0.000806583743106492,-3.50055216679768e-05,0.000811301786831461,0.00209979632392615,-0.00186184293111678,-0.00169800371696162,0.00120755775582302,0.000204169253450927,-0.000256269898058699,-0.000179359288150703,0.000197992092936265,4.89972768708066e-06,8.55001201294113e-06,9.70520677477582e-05,-0.000120586238194969,6.46255717865559e-06,5.08966180618053e-05,-0.000596508807964067,0.00145398130324513,-0.00104891718623467,-0.0285920861005013],"Archive1109_field5":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.44219084135726e-05,-0.000474104669862255,0.0594784295280274,1.2708342682407,3.81773877738204,5.91538845900132,7.13598505537259,9.08593568250924,10.5930562783521,10.4600803771611,9.44397839319235,9.99800148913639,11.7906639776635,12.9482534020034,14.2792171653736,15.9698685092175,18.4233943783409,18.1628252351649,18.6678433938013,22.7169886964624,25.1575288114141,24.7185808732851,21.8861669845139,21.0320826386898,21.9304318608126,24.7855982776871,28.0051759700457,26.8410822904369,24.9340265518583,27.5386092040785,29.3772836611435,25.6688410629205,21.4161685247804,15.4945125000575,10.7025735195888,8.67422149782848,7.12973384739814,5.37718014458662,4.03626684523014,3.17621406795447,2.59852769567818,2.14817040965369,1.79317463473284,1.52071763876504,1.30305731358721,1.18989651453428,1.2940280992958,1.4199465350025,1.07335778490012,0.470006140154417,-0.0659750131971656,2.27886107256569e-05,-2.21351026132642e-05,0.0584909260462077,1.27102040356149,3.82005253829014,5.9127225826652,7.13644466093046,9.08689288605142,10.5922676395395,10.4595705278776,9.44464922905619,9.99824779170974,11.7900631834214,12.9482923485675,14.2792463448188,15.9704312749855,18.4238156346099,18.1599951914636,18.6701280081951,22.7169755444271,25.1564465034773,24.7181382465523,21.8867134645693,21.0323496128583,21.9312205351274,24.7848748275762,28.0040437530755,26.8402776023158,24.9360567569418,27.5395269750321,29.3754842828097,25.6677912719714,21.4173285269225,15.4940411766653,10.7030594589633,8.6745327167597,7.1295137882043,5.37684943637566,4.0366477967874,3.17626520206016,2.59824576051812,2.14832904593105,1.79325486084269,1.5205028196927,1.3032026938594,1.18998691214,1.29366047759773,1.4207629011085,1.07402830031559,0.459690679994439,-0.062375693428499,2.44219084135726e-05,-0.000474107016682832,0.0594784273559757,1.27083426874039,3.81773877731858,5.91538845877529,7.13598505629284,9.08593568259891,10.5930562778838,10.4600803769539,9.44397839323412,9.99800148911738,11.7906639775497,12.9482534021136,14.279217165135,15.969868509979,18.4233943769179,18.1628252350734,18.6678433956303,22.7169886962736,25.1575288113142,24.7185808730814,21.8861669844541,21.0320826389884,21.9304318601822,24.7855982780936,28.0051759698559,26.8410822904522,24.9340265516935,27.53860920483,29.3772836598426,25.6688410635623,21.416168524212,15.4945125002594,10.7025735201596,8.67422149751623,7.12973384723061,5.3771801447503,4.03626684523057,3.17621406794051,2.59852769566468,2.14817040964296,1.79317463477747,1.52071763876786,1.30305731350775,1.18989651453289,1.29402809937246,1.41994653494995,1.07335778489256,0.470006141574715,-0.0659750131971656,3.45580255167009e-05,-0.000802313869643888,0.106685814993249,2.23575582970391,6.56270304885338,10.2247592858737,12.5179650272399,15.3786421956732,17.5735591156891,17.7622080412663,16.6437072107257,17.4017343732197,19.8436039702073,21.8423440737169,24.070661004711,26.8528999206105,30.4008139911116,31.0642695747455,32.3670389781581,37.75009115698,41.3227919991607,41.2336103447946,37.9483142587903,36.743996267511,37.9976663095291,41.6939861854269,45.4938196133117,44.484122495352,42.379751363172,45.2278090522203,46.9083962125273,42.3146578530136,35.8438714794664,26.9561238200743,19.103829095456,15.1051822412085,12.2177585555469,9.32308722053507,7.0189800112111,5.4911141157897,4.46569239757577,3.68425473723478,3.06971347035049,2.60354217682786,2.24996371428564,2.06867493781086,2.19243582761361,2.33560002408723,1.81357911520637,0.817793227813402,-0.116316424792131,2.76834659514187e-05,-1.05122612627181e-05,0.107309947476259,2.23610875524293,6.55954499384803,10.2272554036682,12.5177184242075,15.3779249119258,17.5742148636353,17.762635459024,16.643073792605,17.4016292081785,19.8439971072916,21.8423392748642,24.0706559656501,26.8523925695218,30.4011293158259,31.0656508105533,32.3654533912319,37.7502232015083,41.3237984857034,41.2338899249833,37.9478714562977,36.7437826850085,37.9967998954865,41.6946461821009,45.4951020091905,44.484450666024,42.378310992728,45.2268769668224,46.9099731716821,42.3153882124087,35.843043626988,26.9565628189251,19.1033999536417,15.1049449910549,12.2178895393906,9.32334864042531,7.01871636748441,5.49104887008594,4.46593732220197,3.68410090988392,3.0696472586641,2.60376460838821,2.24982453956199,2.06855774546529,2.19275913367904,2.33519089639065,1.8133896338987,0.816667710735267,-0.111888621728602,3.45580255167009e-05,-0.000802317781799171,0.106685813427171,2.2357558308742,6.56270304867709,10.2247592859257,12.5179650270657,15.3786421957283,17.5735591156834,17.7622080412804,16.6437072102235,17.4017343731522,19.8436039703264,21.8423440735652,24.0706610048361,26.8528999203106,30.4008139917087,31.0642695747062,32.3670389779338,37.7500911571486,41.3227919992136,41.2336103450055,37.9483142579908,36.7439962678337,37.9976663090316,41.693986185848,45.4938196132747,44.4841224955727,42.3797513625817,45.2278090528661,46.9083962121508,42.3146578531605,35.8438714793725,26.9561238199587,19.1038290954123,15.1051822411119,12.2177585555563,9.32308722057458,7.01898001121305,5.4911141157285,4.46569239762639,3.68425473729468,3.06971347030342,2.60354217684869,2.24996371428837,2.06867493777258,2.19243582777349,2.33560002411167,1.81357911495608,0.817793229222194,-0.116316424792131,-3.22170974515503e-05,-0.00123257305908354,0.144539059648131,2.99305849949048,8.57291245680234,13.2595407238126,16.4331218419215,19.5909020083544,21.8643113877814,22.4868126395992,21.9174532879422,22.7088242042368,25.1372027152645,27.7166702978133,30.6445401818432,34.0136306512557,37.6493067953229,39.7551298421108,42.4004814537676,47.1545157537992,50.6341151041996,51.2240267613332,49.2220969906655,48.3675115583287,49.5760688628884,52.455921786771,55.1827989199348,55.151479174015,54.2146943841291,55.7592679829299,56.411063198759,52.5170777273957,45.4133526013063,35.21996981092,25.5792415898845,19.8150142502948,15.8365586451406,12.1896932793618,9.19207148690997,7.14099882646397,5.77385457556049,4.74819515083595,3.94615637047329,3.34300305604422,2.90713799269837,2.68842474836571,2.78590243959824,2.89363304002654,2.31035274260353,1.08298247909883,-0.152595555811068,-3.03382258263097e-05,0.000127901118272462,0.143531279345344,2.99340399869405,8.57492186989014,13.2579339565742,16.4333803243385,19.5912165315327,21.8638019680188,22.4866831201255,21.9179167753217,22.7088116407689,25.136855347963,27.7167606526407,30.6446071397773,34.0138949911523,37.6488738501983,39.7545706295432,42.4015568535618,47.1541599764083,50.6335405276761,51.2238260750985,49.2225585597015,48.3676028432332,49.5766011941947,52.4554685974564,55.1819252737033,55.1513490435519,54.2157933571522,55.7596744863622,56.409952599874,52.5169115292103,45.4135380491187,35.220217226744,25.5793918350046,19.8150799165541,15.8365129241057,12.1895321282629,9.19229985075369,7.14102563563036,5.77364471057733,4.74833662624268,3.94621088086134,3.34283348439445,2.90725991386233,2.68847078436637,2.785644959174,2.89419059204751,2.31084604415834,1.07999281491211,-0.148558048762641,-3.22170974515503e-05,-0.00123257633288912,0.144539058558187,2.99305850029651,8.57291245659168,13.2595407238954,16.4331218419349,19.5909020084331,21.864311387743,22.4868126394264,21.917453287462,22.7088242043137,25.1372027153254,27.7166702977652,30.6445401818219,34.0136306513684,37.6493067955443,39.7551298417068,42.4004814541577,47.1545157540195,50.6341151041702,51.2240267613534,49.222096989821,48.3675115586342,49.5760688624817,52.4559217874866,55.1827989198869,55.1514791737578,54.2146943836468,55.7592679840083,56.4110631982638,52.5170777275863,45.4133526009506,35.2199698106051,25.5792415899408,19.815014250236,15.8365586451519,12.1896932794055,9.19207148688812,7.14099882650096,5.77385457559631,4.74819515083356,3.94615637051745,3.34300305604882,2.90713799262033,2.68842474838112,2.78590243971946,2.89363304001136,2.31035274247561,1.08298248048256,-0.152595555811068,-0.000195140570637161,-0.00154364075985723,0.171058095102033,3.58918190455021,10.0405189645964,15.3297594166843,18.9694204278762,22.1815107864597,24.451797120665,25.3985628452165,25.3047870432991,26.1382611255821,28.4916326894887,31.4597810547158,34.840599777107,38.5233631819604,42.371464233092,45.1444371436491,48.3142107249091,52.8332268233479,56.1682976268936,57.2342059435461,56.0701619815109,55.5655241430884,56.568749857335,58.8060930325973,60.9738886685721,61.2546552418149,60.7658150608283,61.6904201638872,61.80804297719,58.6372315355711,51.9705590708759,41.3611299663831,30.4514301971642,23.3072506819061,18.494946463823,14.3030273593179,10.7774945789424,8.31249032519476,6.6799730896624,5.47182520528738,4.53090958005442,3.82691266470809,3.33656240729202,3.09642502289666,3.14964657835902,3.2148403406517,2.64152965071455,1.27891909832839,-0.178630085835412,-0.000145169031390246,0.000332149691486253,0.171015805025952,3.58990997839222,10.0376942900563,15.3314233652727,18.9692761556201,22.1811646588215,24.4522198708155,25.3987027041057,25.3044188643021,26.1382529356557,28.4918403858293,31.4597789078091,34.8404610850574,38.5232870937853,42.3718225772208,45.1447006539941,48.3134950812367,52.8333180635032,56.1689201419284,57.234283125951,56.0699073713093,55.5653958929302,56.5682260169239,58.8064676228785,60.9746196029948,61.2546143824101,60.7651518490427,61.6900496560822,61.8087074450897,58.6374292623868,51.9703571477126,41.3611435111441,30.4512226026269,23.3070706485697,18.4950331054693,14.3032202102956,10.7773063752566,8.31243759190018,6.68013894713913,5.47172723546135,4.53086827092383,3.82704999899126,3.33648117978128,3.0963507285642,3.14980840343776,3.21467670461863,2.64150692608212,1.27891517956131,-0.174698989825671,-0.000195140570637161,-0.0015436441869881,0.171058094301611,3.58918190569224,10.0405189640813,15.3297594167911,18.9694204279191,22.1815107864796,24.4517971206363,25.3985628452574,25.3047870426962,26.1382611255021,28.4916326896143,31.4597810547059,34.8405997772874,38.523363181713,42.3714642333165,45.1444371437367,48.314210724915,52.8332268234446,56.1682976271142,57.2342059436644,56.0701619805212,55.5655241433477,56.5687498570318,58.8060930330267,60.9738886685312,61.2546552421111,60.7658150602935,61.690420164568,61.8080429771188,58.6372315357674,51.970559070377,41.3611299660621,30.451430196987,23.3072506818565,18.4949464638976,14.3030273593791,10.7774945789251,8.31249032514902,6.67997308974121,5.47182520536898,4.53090957999691,3.82691266472269,3.33656240731394,3.09642502287606,3.14964657857992,3.21484034076643,2.64152965028415,1.27891909969314,-0.178630085835412,-0.00051144149127888,-0.00168635303469995,0.189961089137701,4.06568979764622,11.111301991214,16.6767646309354,20.5343554400261,23.6558375958181,25.805215716532,26.9668404720248,27.3610557525951,28.2183977795726,30.5410259853553,33.8614875457231,37.5323059777763,41.3764466672404,45.2162874903044,48.4645633758943,51.9889615746261,55.8964230283465,58.8403580890326,60.2194449716468,59.9956188346873,59.8463514110618,60.6306207744928,62.1881284949332,63.7177382769011,64.3132727208687,64.3294866367166,64.6024294151428,64.3704414385834,62.1549207658636,56.3337987263304,45.8971974996814,34.2327499136615,25.958319543359,20.4885665434942,15.9015126428978,11.9711159802775,9.16859584201105,7.32108556649124,5.9692456122153,4.92274869186436,4.13796493596672,3.59993988203719,3.3446915146396,3.35387729144943,3.38383523944261,2.86308319310596,1.43116838883995,-0.196538183703035,-0.000352189620066738,0.000700201087415449,0.189093073363172,4.06620000901937,11.1126669265479,16.6758284419394,20.5344689969022,23.6559697928644,25.8049618447703,26.9667957404338,27.3612884130818,28.2183728342595,30.5408331922266,33.8614741025731,37.5324632493372,41.3765383391002,45.2159774015177,48.4643579862533,51.9895162677272,55.8962144448979,58.8400605466404,60.2193796944168,59.9958297861434,59.8463846671649,60.630868580268,62.1879173160369,63.7173559280533,64.3132591229936,64.3299323596183,64.6025442914365,64.3699952565458,62.1547914984862,56.3339396776373,45.8974203895059,34.2327999047578,25.9583263544059,20.4885331911177,15.9014537891913,11.9712676494633,9.16859727773244,7.32094639323613,5.96934918158754,4.9227816952114,4.13786205702757,3.60001262802638,3.34470257415991,3.35375660188459,3.38407150822726,2.86334738042003,1.4292860303748,-0.192715400433986,-0.00051144149127888,-0.00168635583041396,0.189961089273534,4.06568979828176,11.1113019907879,16.6767646311451,20.5343554399256,23.6558375958659,25.8052157165791,26.9668404718821,27.3610557519369,28.2183977795246,30.5410259855677,33.8614875456575,37.5323059778032,41.3764466672947,45.2162874905996,48.4645633756187,51.9889615747853,55.8964230286046,58.840358089064,60.2194449717149,59.9956188336052,59.8463514113255,60.6306207741679,62.1881284956699,63.7177382769394,64.3132727206375,64.3294866361657,64.6024294162529,64.3704414386181,62.1549207659987,56.3337987257557,45.8971974992225,34.2327499133731,25.9583195433493,20.4885665435819,15.9015126429739,11.9711159802299,9.16859584203628,7.32108556655884,5.96924561223416,4.92274869189311,4.13796493594007,3.59993988199862,3.34469151467058,3.35387729167179,3.38383523962529,2.86308319269288,1.43116839019384,-0.196538183703035,-0.000968794235376578,-0.00156703053916705,0.201955519427044,4.4445549613323,11.8708985905126,17.4803613594469,21.354384971935,24.3807788388754,26.4433173763493,27.6873595249437,28.3773945109207,29.398497323802,31.8868850635902,35.4324766199769,39.2303366987182,43.1934730196055,47.0954928927551,50.421151324177,53.8689857492004,57.4008075591986,60.0230718918165,61.477069360699,61.712598859534,61.7920048730892,62.4577128675563,63.8000986840538,65.0891633650005,65.6641081430543,65.8012351976453,65.8647587759248,65.5899432645983,64.07236759512,59.1840070342737,49.2212885892361,37.1451949332659,28.0256707509595,22.0222001887885,17.123073454652,12.8859959118338,9.81575000733496,7.79001263334925,6.32180002249688,5.19395285861016,4.34500802972212,3.7581109192239,3.48071817051229,3.45264045769495,3.46435652665925,3.01325535506213,1.54903607997752,-0.209242027078374,-0.000640535369566859,0.00118363224238069,0.201848102210591,4.44564447904304,11.8682973822539,17.481647275044,21.3542875373483,24.3805639008118,26.4435282738912,27.6874701280561,28.3771975537767,29.3984983247206,31.8870138127794,35.4324240114136,39.2302800783411,43.1934565683856,47.0956548490861,50.4213515277027,53.8685698008503,57.4008438388616,60.0234201321897,61.4770832096796,61.7125131300104,61.7919296311915,62.4575155336365,63.8002626544305,65.0894502398405,65.6641073909811,65.8010266229421,65.8646611318664,65.5901455378759,64.07236394775,59.1839442183377,49.2213216403301,37.1450079816942,28.0255278833381,22.0222565603123,17.1232410840648,12.8858376308755,9.81571340168808,7.79013113273902,6.3217343182631,5.19392843761487,4.34508745311464,3.75807689820555,3.4806795616796,3.45269441141048,3.46426071966881,3.01321368443069,1.54822194012848,-0.205105507080179,-0.000968794235376577,-0.00156703364948716,0.201955519811389,4.44455496234902,11.8708985898527,17.480361359628,21.3543849719594,24.3807788388599,26.4433173762963,27.6873595250727,28.3773945100847,29.398497323722,31.8868850638656,35.4324766199025,39.2303366989228,43.1934730193584,47.0954928928541,50.4211513244823,53.8689857491346,57.4008075592013,60.0230718922258,61.4770693608338,61.7125988583412,61.7920048732363,62.4577128674528,63.8000986844055,65.0891633650655,65.6641081435089,65.8012351970135,65.8647587765786,65.5899432650421,64.072367595266,59.1840070335483,49.2212885889524,37.1451949328682,28.0256707508082,22.0222001889159,17.123073454803,12.8859959117921,9.81575000724324,7.79001263344869,6.32180002259415,5.19395285854847,4.34500802968585,3.75811091918327,3.48071817055322,3.45264045802273,3.46435652707652,3.01325535425325,1.54903608127349,-0.209242027078374,-0.00160624001995119,-0.00124622999634151,0.210655714933262,4.74113072927244,12.3683947414673,17.8726946321289,21.689325741748,24.6403245285259,26.6337745527544,27.8880068585211,28.8206092887314,30.1318925231453,32.8355542044294,36.4404823211226,40.2886302784352,44.3625567382634,48.2605309181781,51.5648832505925,54.829721108522,57.9312212412671,60.214681367746,61.611832888406,62.1825740703079,62.4700248392288,63.2493669217358,64.5683483336262,65.6301101328593,66.1152362336628,66.3409365358086,66.283090565595,66.0712920477377,65.027215039197,60.8730686298952,51.5108252940669,39.3591258937354,29.6322568919173,23.1991953011709,18.045948346393,13.5842848783311,10.3104495499943,8.1392262294784,6.57504735048804,5.38530473588789,4.48882856881405,3.85928249473133,3.55289280668221,3.49077502456904,3.49480225948027,3.11291698161849,1.64460139727291,-0.217652742080014,-0.00104083462843445,0.00188176297065458,0.210001144723112,4.74183883152638,12.3693950112335,17.8721286452941,21.6893433300665,24.6404123943061,26.6336349867713,27.8879951485554,28.8207092984301,30.1319271703701,32.8353885866151,36.4404473887027,40.288777418442,44.3625954354429,48.2603350102323,51.5647329027148,54.8300739385163,57.9310953494328,60.2145258492472,61.6118139155883,62.1826497214516,62.4700204865833,63.2494939717439,64.5682370649099,65.6299345135741,66.1152749367068,66.3410310046247,66.2831842861132,66.0711668945334,65.0271294151103,60.8732149240316,51.510982084019,39.3591245045941,29.6322995658191,23.1991405203128,18.0459314974182,13.5844015659645,10.3104521928444,8.1391135963028,6.57512963782364,5.38533584663733,4.4887407862474,3.85934083820137,3.55289707428771,3.49073550098601,3.49483441069103,3.11297867081236,1.64196480143538,-0.213157981498899,-0.00160624001995119,-0.00124623375497654,0.210655715747145,4.7411307297768,12.3683947409645,17.8726946324075,21.6893257415772,24.6403245285446,26.6337745527005,27.8880068585721,28.8206092877513,30.1318925235806,32.8355542046358,36.4404823209663,40.2886302784816,44.3625567383188,48.2605309183719,51.5648832504558,54.8297211086434,57.9312212413955,60.2146813679437,61.6118328886981,62.1825740687584,62.4700248393162,63.2493669220953,64.5683483340257,65.630110133047,66.1152362336277,66.3409365356369,66.2830905660514,66.0712920482498,65.0272150391979,60.8730686292674,51.5108252937699,39.3591258933006,29.6322568917972,23.1991953012399,18.04594834657,13.5842848782767,10.3104495499652,8.13922622954286,6.57504735051379,5.38530473591988,4.4888285688179,3.85928249443984,3.55289280673511,3.49077502513549,3.4948022599991,3.11291698086468,1.64460139842046,-0.217652742080014,-0.00238963593574744,-0.000733789032684505,0.215829631911412,4.96284847065836,12.6433064333777,17.9405976789622,21.6658453212965,24.5890731223123,26.5687289621998,27.810489549376,28.9599147358947,30.6529048387904,33.5060148444747,37.0007536736384,40.8721082120082,45.0560684625831,48.9863911823309,52.1346294901814,55.0718217603188,57.8841739047562,59.8926969193156,61.1522687869713,61.9770227989426,62.6319408305163,63.6171008765758,64.9194223519991,65.8493137486197,66.1959929450393,66.391281577213,66.4689939047756,66.3155879215103,65.4236382451497,61.6753177879486,52.8986127812955,40.9219173333227,30.857007740865,24.0774286251811,18.7029985831343,14.0930895920058,10.6804386834606,8.3921882246211,6.75098459195461,5.51635079909956,4.58700316291069,3.92764656882227,3.5965300684381,3.50725402915304,3.49666964034616,3.17543802380374,1.72016977969312,-0.222895417586797,-0.00154125706848126,0.00275687394065474,0.215556889160591,4.96412668308497,12.6409309256653,17.9417554429245,21.6656937392888,24.5889303943211,26.5688676809246,27.8105992306573,28.9597445534365,30.6529429363208,33.5061116994847,37.0007566688666,40.8720245415663,45.0560649812825,48.9864921751945,52.1348192948424,55.0715200568091,57.8842047267015,59.8928911610836,61.1523127624465,61.9769541560525,62.6319020056627,63.6170024603639,64.9195249134648,65.8494181574359,66.1960436908648,66.3912267206572,66.4689519610646,66.315647488465,65.4235304343311,61.6753096352041,52.8986475046858,40.9217942900616,30.8568950646438,24.0774497978126,18.7031633045772,14.0929386907307,10.6804168791065,8.39228780012382,6.75092728130854,5.51633612203532,4.58705225605216,3.92763461534092,3.59651656149941,3.50729597363742,3.49661371823417,3.1752021015603,1.71733589482765,-0.217864965301086,-0.00238963593574744,-0.000733793110237717,0.215829632036827,4.96284847154317,12.6433064327268,17.9405976791641,21.6658453212742,24.5890731222959,26.5687289619716,27.8104895493924,28.9599147357009,30.6529048387836,33.5060148446012,37.0007536736497,40.8721082122008,45.0560684623996,48.9863911822312,52.1346294905529,55.0718217603447,57.8841739045394,59.8926969199987,61.1522687871504,61.9770227973638,62.6319408313708,63.6171008767206,64.9194223519808,65.8493137485494,66.1959929461569,66.3912815776953,66.4689939031222,66.3155879237085,65.4236382448935,61.6753177874714,52.8986127812142,40.9219173328853,30.8570077406194,24.0774286252595,18.7029985833695,14.0930895919601,10.6804386833444,8.39218822470844,6.75098459204042,5.51635079903894,4.58700316296786,3.92764656868433,3.59653006824372,3.50725402983053,3.49666964135258,3.17543802244684,1.72016978067338,-0.222895417586797,-0.00334858737455741,-0.000106276844839674,0.218143495155726,5.11482855367097,12.713718846281,17.7437744573663,21.3712630402042,24.2982806082271,26.3136421273162,27.561381112927,28.8950951426091,31.0193640182945,33.9209461729247,37.1951734187802,41.0762331548243,45.347747713839,49.3111275750989,52.2968729214638,54.8808973934466,57.443314625051,59.2116552703556,60.3896515086882,61.5178352174039,62.6350330290782,63.769889697646,65.0050638224041,65.8719359550161,66.1340374888511,66.3045632700121,66.5972157288251,66.4992487106888,65.5037479327626,61.7539068575067,53.4587243469104,41.8698217232576,31.7239905727188,24.6819381286382,19.1127629977205,14.4253266577744,10.9371664310114,8.55995444557712,6.85898068474605,5.5956741128307,4.64712048698074,3.97052434152419,3.62851824958406,3.51494443406152,3.48725873299954,3.20610466760047,1.78102322964002,-0.225183545135994,-0.00216616891615827,0.00390281976488603,0.217964505535106,5.11639084090652,12.7147372886038,17.742881692656,21.3713060379161,24.2984446780447,26.3135198624504,27.5612918954574,28.8951793781373,31.0193462695614,33.920844466832,37.1951950618284,41.0762322750887,45.3478892023462,49.3109978149197,52.2966042423705,54.8812685938157,57.4432506580719,59.2114971584285,60.3896032422314,61.5179035879823,62.6349961351886,63.7700574746739,65.0050093995394,65.8718199349314,66.1339767218513,66.3046763307528,66.5971740106934,66.4992474072558,65.5033841494435,61.7546832877858,53.4584027919046,41.8695763246452,31.7242324417437,24.6819815991885,19.1126602908471,14.4253973682017,10.9372005648986,8.55986107571901,6.85904246559352,5.59570698498989,4.64702716105308,3.97056057670576,3.62854765524591,3.51482981271191,3.48752713613447,3.20580528206742,1.77527261455502,-0.219774613897408,-0.00334858737455741,-0.000106260325917855,0.218143497827897,5.11482855346897,12.7137188460452,17.7437744575173,21.3712630399247,24.2982806083336,26.3136421274524,27.5613811122069,28.8950951432386,31.0193640186559,33.9209461725547,37.195173418944,41.0762331549026,45.3477477138347,49.3111275755719,52.296872921031,54.8808973931887,57.4433146253759,59.2116552698457,60.3896515081639,61.5178352180276,62.6350330296528,63.7698896967255,65.0050638228984,65.8719359553196,66.1340374876289,66.3045632684143,66.5972157334437,66.4992487075939,65.5037479323877,61.7539068578742,53.4587243473391,41.869821722882,31.7239905725157,24.6819381285284,19.1127629979327,14.4253266577841,10.9371664309446,8.55995444554211,6.85898068478913,5.59567411286344,4.64712048705889,3.97052434131272,3.6285182499007,3.5149444330515,3.48725873204761,3.20610467090842,1.78102322799488,-0.225183545135994],"Archive1109_field6":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.000173228418114446,0.000423942048031478,-0.026141501052831,-0.663384372167437,-1.93343867225329,-2.61422181437312,-2.27313657515912,-1.9391977697419,-1.96073977419437,-1.78621996709911,-1.12354120086544,-0.85641256081014,-1.37582500062165,-1.84220122052048,-2.19845293507498,-2.60035340589423,-4.01252929679851,-4.79948915938896,-3.63142554064054,-3.24736194317557,-3.68058049356529,-3.53874364449517,-2.47804851010639,-1.33936706280254,-0.533800350398737,-0.102186499107329,-1.22620067193193,-2.29231518368796,-1.35429071865191,-0.871470100315182,-2.66948187592781,-3.61400675810146,-3.21343989675024,-2.31001888476521,-0.912838121130856,-0.233363978910129,-0.337881218183588,-0.344883662839639,-0.156764475886483,-0.0869762021191067,-0.101829136296303,-0.0968355787703413,-0.079454846793053,-0.0702562395984804,-0.0577475404745974,-0.0540839193280899,-0.072084104737052,-0.0792829577961872,-0.0506803162386612,-0.0298515744119459,-0.00562002169804465,-0.000171182170449003,0.000302987351779341,-0.0248466013534598,-0.663054130644747,-1.9345697684527,-2.61621368673627,-2.27318139469965,-1.93647048614031,-1.96074233636003,-1.78888393706284,-1.12322085445876,-0.853106903884364,-1.37783619403695,-1.84269472095449,-2.20015706928343,-2.59653410698922,-4.0096736016443,-4.80859849546902,-3.62815832739278,-3.24390009779822,-3.68234901971381,-3.53952491881171,-2.47846835356151,-1.33849416466251,-0.535722995708713,-0.0976018988723605,-1.22530591864455,-2.30061673167889,-1.35414927272755,-0.860861775152529,-2.6742254623361,-3.61864454410305,-3.20827703115655,-2.31494779640732,-0.911970442760671,-0.229077793039424,-0.339952331230067,-0.346450439880915,-0.155650593330525,-0.086662808431287,-0.102252756440156,-0.0969070536887331,-0.0792789994561295,-0.0703421188073201,-0.0578121050932699,-0.0537218705036556,-0.0727615675127606,-0.0789282499321292,-0.0499694611474737,-0.0145278578182791,-0.00635941377783945,-0.000173228418114446,0.000423936470818068,-0.0261415047028306,-0.663384371757783,-1.93343867301241,-2.61422181517739,-2.27313657138118,-1.93919776961695,-1.96073977652264,-1.78621996781791,-1.12354119767599,-0.856412560459941,-1.37582500243151,-1.84220121855038,-2.19845293659556,-2.6003534003188,-4.01252930598967,-4.79948915901791,-3.63142553166322,-3.24736194565929,-3.68058049311245,-3.5387436473716,-2.47804850667183,-1.33936706355621,-0.533800348785135,-0.102186496638789,-1.22620067571053,-2.29231518364503,-1.35429071080366,-0.87147010068163,-2.66948188387541,-3.61400675506562,-3.21343990011357,-2.31001888356545,-0.912838116809717,-0.233363981168058,-0.337881220859393,-0.344883661353998,-0.156764475609963,-0.0869762027067557,-0.101829136757956,-0.0968355785626423,-0.0794548468236319,-0.0702562397765117,-0.0577475404466196,-0.0540839192940526,-0.0720841046307289,-0.0792829577270874,-0.0506803180698461,-0.0298515752825647,-0.00562002169804465,-0.000668001096873677,0.000807894782439448,-0.049723702161832,-1.24838011679739,-3.49174055878977,-4.60142933225291,-4.12415562968549,-3.5758873632807,-3.36850990331826,-2.85623894433876,-1.88381696348397,-1.73960837661631,-2.61201384500447,-3.33451810807499,-3.94822558593962,-4.83380470867747,-6.73515108364787,-7.77044920949006,-6.8031254168094,-6.36626334190188,-6.32490037557014,-5.40394914582278,-3.68160583993248,-2.34571850070263,-1.56220796513048,-1.37786380434955,-2.52601428479071,-3.3621384384274,-2.59990156912647,-2.39707236583072,-4.24183297222834,-5.31757667761219,-4.55940565397594,-2.96910547047722,-1.03849182071348,-0.163020318541175,-0.323377190399983,-0.356796532585223,-0.11837205512459,-0.059530782581962,-0.114993624324026,-0.120882115073871,-0.103752615850863,-0.0979236635128876,-0.0859324123846784,-0.0976716831705199,-0.148478199155516,-0.141364384074508,-0.0716228904472692,-0.0369637222870032,-0.0169274911092418,-0.000635315744957504,0.00133422459571436,-0.0484772405072603,-1.24951944036536,-3.49082182472612,-4.60050035803691,-4.12406311662038,-3.57722448594344,-3.36872919219725,-2.85487242376741,-1.88387901703844,-1.74109091325805,-2.61141121647763,-3.33409876028649,-3.94747877727321,-4.83595220758512,-6.73582400019432,-7.76661628087569,-6.80431562264409,-6.36814410874479,-6.32433262161629,-5.40350188110583,-3.68130911281354,-2.34568289272012,-1.56181375714534,-1.38009737185244,-2.52627997763885,-3.3584564591156,-2.59964144582286,-2.40193645218696,-4.24060386305139,-5.31511218104243,-4.5610675109341,-2.9670633142456,-1.03846047955415,-0.165729383075573,-0.322599653897457,-0.355739501842116,-0.118870097548219,-0.0597934951459278,-0.114823742449087,-0.12082085373279,-0.103819233054564,-0.0978913058794819,-0.0858735848635078,-0.0977389756031054,-0.148455205511758,-0.141535274102328,-0.0713589071349244,-0.0278544065636637,-0.0183204714449887,-0.000668001096873677,0.000807885322260524,-0.049723703806924,-1.24838011595127,-3.49174055935081,-4.60142933218698,-4.12415563019166,-3.57588736324548,-3.36850990291743,-2.85623894426945,-1.88381696405958,-1.73960837642394,-2.61201384466416,-3.33451810861862,-3.94822558540606,-4.83380470980799,-6.73515108210736,-7.77044920940059,-6.80312541872813,-6.36626334134635,-6.3249003758325,-5.40394914515373,-3.68160584085668,-2.34571850023142,-1.56220796534462,-1.3778638049449,-2.52601428409282,-3.362138438538,-2.59990157047129,-2.39707236564013,-4.24183297097509,-5.31757667820554,-4.55940565339051,-2.96910547083255,-1.03849182119407,-0.163020317998918,-0.323377190219003,-0.356796532850528,-0.118372055089414,-0.0595307824748221,-0.114993624303622,-0.12088211511517,-0.103752615816487,-0.0979236634996837,-0.0859324124174921,-0.0976716831377988,-0.14847819896002,-0.141364384441898,-0.0716228906173415,-0.036963722231239,-0.0169274911092418,-0.00182250362106299,0.00181249656290384,-0.0729153231598071,-1.78089688914,-4.77914725365328,-6.13956485742278,-5.58543067021365,-4.79377954984197,-4.3310847775505,-3.5806179499036,-2.46290975633069,-2.42756367678214,-3.58031235104422,-4.51870528721578,-5.34050391853477,-6.51150662751947,-8.59631766919385,-9.99886439093308,-9.27316424804295,-8.56743794881315,-8.07685062888491,-6.59495052990869,-4.52318239540417,-3.10212533242322,-2.45759154876577,-2.38221685586408,-3.42131549315557,-4.13652242911243,-3.53484705073625,-3.38508918907643,-5.04494944528103,-6.07681362630052,-4.96747974095331,-2.92348166349442,-0.721906296903287,0.156630968876555,-0.119837398455464,-0.202381789937396,0.0300389509595691,0.0382017069948706,-0.0713290538672721,-0.0983940398434099,-0.0919511527934802,-0.0974427644353417,-0.0952463433353789,-0.128533440602648,-0.207273040760919,-0.180826635415994,-0.0719618280855026,-0.0333386286803223,-0.0310374019721713,-0.00168073628168124,0.00369606005326507,-0.070833493719803,-1.78075102216601,-4.78040699815135,-6.13923644980988,-5.58544629299036,-4.79355683706127,-4.33090200139283,-3.5811014892569,-2.46273573782132,-2.42722114287973,-3.58038027755865,-4.51902350175008,-5.34057209477809,-6.5108861885376,-8.59649485421959,-9.99927221636587,-9.27330468331697,-8.56682663352764,-8.07690969065029,-6.59521858216374,-4.52297813030412,-3.10232740309201,-2.45763119421255,-2.38170231632616,-3.42133639091642,-4.13712058888263,-3.53496599941437,-3.38427473348611,-5.04486264070445,-6.0778904357027,-4.96746786230042,-2.92304953525856,-0.722206865940513,0.157093621224164,-0.119930741061391,-0.20263671612741,0.030189565414251,0.0382425921845233,-0.0713868073744031,-0.0983890192536969,-0.0919350568473412,-0.0974282009059848,-0.0952678272122206,-0.128524745951813,-0.207295834430832,-0.180810222359747,-0.0718404345160652,-0.0275942296857023,-0.0327244115738607,-0.00182250362106299,0.00181248749633259,-0.0729153242128931,-1.78089688832997,-4.77914725451124,-6.1395648575052,-5.58543066950941,-4.79377954993103,-4.33108477764758,-3.5806179499618,-2.46290975594629,-2.42756367679763,-3.58031235114595,-4.51870528706283,-5.34050391871092,-6.51150662695946,-8.59631767034851,-9.99886439076457,-9.27316424703182,-8.56743794925967,-8.076850628582,-6.59495053023605,-4.52318239505774,-3.10212533235667,-2.45759154856911,-2.38221685582046,-3.42131549350453,-4.13652242917246,-3.53484704976347,-3.38508918937036,-5.04494944585439,-6.07681362599753,-4.96747974150447,-2.92348166364569,-0.721906295946893,0.156630968630524,-0.119837398989427,-0.202381789783124,0.0300389510517554,0.0382017069401465,-0.0713290539862166,-0.0983940398066634,-0.0919511528012321,-0.0974427644579983,-0.0952463432907292,-0.128533440604389,-0.207273040703244,-0.180826635376826,-0.0719618290915963,-0.0333386281994436,-0.0310374019721713,-0.0035239198942299,0.00338258246938092,-0.0947195658938457,-2.28064376909038,-5.89430482215124,-7.35875352670301,-6.70879433661617,-5.72941639510709,-5.02665113442637,-4.05160218964722,-2.84565588375892,-2.97797904509749,-4.4125732609419,-5.54284411374721,-6.51187321266152,-7.87228485524387,-10.0313348808583,-11.5734824360643,-11.1361365013276,-10.3302412476291,-9.37274137611819,-7.31849264310564,-4.91688690145382,-3.59383501128442,-3.22985921736486,-3.31365509888462,-4.16766756040461,-4.61729278394009,-4.15644832707254,-4.0926622751546,-5.4473050956732,-6.24456621846057,-4.70934223423991,-2.18634232432943,0.0769263508528212,0.720780462410595,0.264404971487311,0.118149482473979,0.294876866954174,0.207591582522335,0.0250506436719308,-0.0333382355442698,-0.0472459428777662,-0.0721022440835698,-0.087850517016058,-0.147330981894697,-0.251750259908691,-0.202624125817972,-0.056185759524941,-0.0185770873507833,-0.0440738601647172,-0.00310776415399997,0.0068811672547457,-0.0930405104049406,-2.28182461215467,-5.89360010472182,-7.35857769959435,-6.70892724605814,-5.72944534785004,-5.02677754664134,-4.05140802595056,-2.84582060944714,-2.97787539340143,-4.41264310942672,-5.54276603913229,-6.51199962932719,-7.87247852679181,-10.030970740318,-11.5737447768134,-11.1358188262187,-10.330528751563,-9.37274981748456,-7.31844090617086,-4.91698926602093,-3.59357617356813,-3.23008917499785,-3.31371719810908,-4.16757024741928,-4.61741135016782,-4.15629826869353,-4.09251809865543,-5.44767220241207,-6.2445667748576,-4.70888916295634,-2.18667891879048,0.0776923117122998,0.720068384746324,0.264116881193377,0.118536935437448,0.294887474082613,0.20745218601269,0.0250555715054804,-0.0333084737614333,-0.0472460600247943,-0.0720944662735995,-0.0878196537580239,-0.147364540424728,-0.251720532898834,-0.202741381285152,-0.0559720371455674,-0.0178593445612252,-0.0453452860987848,-0.0035239198942299,0.00338257353328022,-0.0947195657600603,-2.28064376865488,-5.89430482323906,-7.35875352655143,-6.70879433639738,-5.7294163951887,-5.0266511343631,-4.05160218939465,-2.84565588393719,-2.97797904509506,-4.41257326072723,-5.54284411409038,-6.51187321242094,-7.8722848556397,-10.031334880821,-11.573482435815,-11.1361365016423,-10.3302412476459,-9.37274137607977,-7.31849264288024,-4.91688690162554,-3.59383501105893,-3.2298592172969,-3.31365509924579,-4.16766756030671,-4.61729278378718,-4.15644832744399,-4.09266227507238,-5.44730509506312,-6.24456621865064,-4.70934223423734,-2.18634232474384,0.0769263511090434,0.720780462851405,0.26440497105442,0.118149482310078,0.294876867084546,0.207591582571453,0.0250506435423785,-0.0333382355224952,-0.0472459428664685,-0.0721022441160848,-0.0878505169124901,-0.147330981910643,-0.251750259848215,-0.202624125612645,-0.0561857603842325,-0.0185770868761172,-0.0440738601647172,-0.00581620327359587,0.00571558325297472,-0.116760405253379,-2.75965054077827,-6.87445988955565,-8.34142465377428,-7.57910347138763,-6.41696644737242,-5.51864686328505,-4.39419090272027,-3.13848085954258,-3.39025146138809,-5.10802475430131,-6.4484592583244,-7.51774432990401,-8.97573635283043,-11.1652329899009,-12.8468989108136,-12.5531042057408,-11.5624064711501,-10.2608109604168,-7.82502471431639,-5.20768371470039,-3.92420360606484,-3.75605448366692,-3.91003820439623,-4.64021942796605,-4.95524672450502,-4.52446021899921,-4.41843500665728,-5.57952399310901,-6.17945173027581,-4.19226632270889,-1.18722850092654,1.14079839992896,1.45988679974441,0.750239363526529,0.527075645600876,0.629853587653635,0.423870571166984,0.156140517278067,0.0592328766206779,0.0190660708504338,-0.0295838818601488,-0.0686519795241192,-0.154933701672763,-0.279198525860127,-0.210902561011065,-0.0305406007077546,0.0033990247906907,-0.0564581035706643,-0.00495523427328638,0.0110215601643538,-0.115180462194183,-2.75979576939589,-6.87525923647396,-8.34095640407871,-7.57914889256596,-6.41704632756038,-5.51838692857178,-4.39447359611107,-3.13836649778826,-3.38998417199566,-5.10814681798489,-6.4486246056954,-7.51751870996055,-8.97574474250794,-11.1653800767165,-12.846646316158,-12.5534459005505,-11.5621895090846,-10.2607296807806,-7.82512668024578,-5.20757802456725,-3.92431617805912,-3.75595435621874,-3.91006683491501,-4.64017876278922,-4.95522267930715,-4.52453352172348,-4.41827476018368,-5.57942216422268,-6.17993645554054,-4.19286451734745,-1.18654556332312,1.14062974389992,1.45993443357661,0.750240644491575,0.527012747333451,0.629891071969526,0.423885184288356,0.15611794960519,0.0592443732280493,0.0190613453238737,-0.0295553487974717,-0.0686513537140625,-0.154999355123277,-0.279088911909968,-0.211183323322951,-0.030545421753016,0.00257606357260758,-0.056729836440992,-0.00581620327359587,0.0057155742732538,-0.116760403906276,-2.75965054059734,-6.87445989060807,-8.34142465364627,-7.57910347094734,-6.41696644755016,-5.51864686324109,-4.39419090225069,-3.13848085994111,-3.3902514611734,-5.10802475414634,-6.44845925880464,-7.5177443296953,-8.97573635278361,-11.1652329904856,-12.8468989104701,-12.5531042056724,-11.5624064713987,-10.2608109601538,-7.82502471416938,-5.20768371450452,-3.9242036061459,-3.75605448335263,-3.91003820472757,-4.640219428124,-4.95524672406711,-4.52446021908978,-4.41843500698587,-5.5795239922817,-6.17945173017456,-4.19226632305243,-1.18722850144303,1.14079840021648,1.45988679997006,0.750239363241205,0.527075645556239,0.629853587698959,0.42387057121948,0.156140517200978,0.0592328766681679,0.0190660708297259,-0.0295838819418084,-0.0686519792271406,-0.154933701775844,-0.279198525812396,-0.210902560130727,-0.0305406022777793,0.00339902517976434,-0.0564581035706643,-0.00863294537472808,0.00872772565646623,-0.138713036822718,-3.22343615418638,-7.75812224205146,-9.14968289358922,-8.26948694007476,-6.96102952463251,-5.89074612143687,-4.64230988651252,-3.33963549552828,-3.74387006423873,-5.78922217498411,-7.31061551123199,-8.42876537140773,-9.96237249737583,-12.1459048521179,-13.8754062050309,-13.6840237756536,-12.5429133179156,-10.933024663635,-8.15564798020794,-5.3313347131531,-4.10243904177693,-4.13249603010346,-4.37985039787206,-4.99936010580392,-5.16247760471698,-4.70337996830231,-4.55750770534755,-5.60658828351656,-6.00084758450982,-3.47544645622211,0.115823548731361,2.47265832689211,2.35405838778999,1.33347142569601,1.02463720405507,1.0327569472275,0.683400754312366,0.316858740686451,0.174454012534072,0.102631081926992,0.0266994499533918,-0.0395530152557604,-0.15377691841167,-0.294894273041695,-0.211538794232532,0.00134723430785475,0.032535556127117,-0.0667910615670088,-0.007100143186925,0.0157833034122601,-0.138697000044963,-3.22412821734596,-7.75780119488742,-9.14940212302128,-8.26967241278974,-6.96101085735953,-5.89086031602805,-4.64214037665559,-3.33967300670187,-3.74393523069095,-5.78917513581851,-7.31051557434806,-8.42887489261773,-9.96242397992128,-12.1458117190021,-13.8755088372953,-13.6838413099159,-12.5430913346465,-10.9329922236445,-8.15558728599769,-5.33142134718301,-4.10231845958612,-4.13254395194205,-4.37997803755274,-4.99926572857671,-5.16249758580036,-4.7033611102487,-4.55735051701572,-5.60658051765088,-6.00090839568417,-3.47533784224143,0.115464743419377,2.47325374040164,2.35375584451918,1.33321090949426,1.02483022374942,1.0327712865332,0.683341716814767,0.316853850772562,0.174467703556719,0.102627705445494,0.0266999266614659,-0.0395073979664086,-0.15383466381498,-0.294778185701413,-0.211803293186903,0.00152877498194726,0.029099512045897,-0.0656756790650618,-0.00863294537472809,0.00872771544103979,-0.138713035810445,-3.22343615412188,-7.75812224324822,-9.14968289335297,-8.26948693970034,-6.96102952473501,-5.89074612173652,-4.6423098858865,-3.33963549560166,-3.74387006387652,-5.78922217528687,-7.31061551128555,-8.4287653710097,-9.96237249760994,-12.1459048525458,-13.8754062049696,-13.6840237754616,-12.5429133180781,-10.9330246637536,-8.15564797963706,-5.33133471309511,-4.10243904194328,-4.13249602926383,-4.37985039883471,-4.99936010605054,-5.16247760342275,-4.70337996943383,-4.55750770453613,-5.60658828239635,-6.00084758443539,-3.4754464561985,0.115823548160955,2.47265832680342,2.35405838818468,1.33347142542784,1.0246372040034,1.03275694726945,0.683400754338829,0.316858740638313,0.174454012594136,0.102631081939663,0.0266994497796761,-0.0395530148996512,-0.153776918525294,-0.294894272974748,-0.211538792828027,0.00134723282689769,0.0325355562248607,-0.0667910615670088,-0.012024899133115,0.0126200352327291,-0.162277631951163,-3.67554349884832,-8.55267632306997,-9.82138714138673,-8.84131015458731,-7.40598924659103,-6.18522536002466,-4.8411390427206,-3.53654101039512,-4.10791752322844,-6.4445883553611,-8.10632011071539,-9.27095777448698,-10.8649475873037,-13.0101348103987,-14.7431072719842,-14.5807775481498,-13.2763886091473,-11.4146046770724,-8.39287523072923,-5.43638837057675,-4.2385128882715,-4.4318350092279,-4.73713778278209,-5.23179388329472,-5.2849252546993,-4.78220735754544,-4.58562872310299,-5.58863775092059,-5.78193388264246,-2.70123505942347,1.51017814339295,3.94746704072718,3.36524049126085,1.98693190034405,1.57876578761352,1.47996797729476,0.974627970695933,0.500381256012282,0.305921251084401,0.19788779151242,0.0927516303090413,-0.00324387906753675,-0.145560908280048,-0.301349969483458,-0.208424092473721,0.0371657180812235,0.0669276876250191,-0.0761429422679397,-0.00962447089568439,0.0213493903020022,-0.163987169472107,-3.67508373777059,-8.55311626710256,-9.82104165044567,-8.8413762434416,-7.4060693058025,-6.18502709321065,-4.8413048065669,-3.53648715007494,-4.10788244714305,-6.44467474627295,-8.10624823570778,-9.27090667502534,-10.8650048750078,-13.0101105845675,-14.7430776317129,-14.5808805668519,-13.2763049434988,-11.4145730777231,-8.39294708735453,-5.43628301297238,-4.23843448620195,-4.43192352789898,-4.7371056021956,-5.23163745963804,-5.28502109973561,-4.78222043828293,-4.58538621204957,-5.58856900042404,-5.78189814915848,-2.70170425140441,1.51049487722569,3.94732168884575,3.36535160269308,1.98695423688144,1.578733123505,1.47995573119319,0.974647014393769,0.5003822505716,0.305922314812722,0.197883325457539,0.0927512581550884,-0.00322200643452049,-0.145601143213379,-0.30122642850864,-0.208784127322547,0.0372196015492114,0.061571431931208,-0.0732679988973806,-0.012024899133115,0.0126200204282223,-0.162277631800344,-3.6755434989221,-8.55267632412941,-9.82138714111623,-8.84131015421015,-7.40598924668527,-6.18522536055445,-4.84113904193586,-3.53654100962205,-4.10791752351771,-6.4445883559476,-8.10632011020142,-9.27095777423105,-10.8649475874192,-13.0101348109989,-14.7431072721148,-14.580777547655,-13.2763886093743,-11.4146046775571,-8.39287522911097,-5.43638837063457,-4.23851288846756,-4.43183500901003,-4.73713778381591,-5.23179388370188,-5.28492525260728,-4.78220735827468,-4.58562872343807,-5.58863774858638,-5.78193388255596,-2.70123505904527,1.51017814284203,3.94746704054725,3.36524049129694,1.9869319002875,1.57876578775082,1.47996797726205,0.974627970639587,0.500381256049858,0.305921251172634,0.197887791493346,0.0927516301897499,-0.00324387892039166,-0.145560908315946,-0.301349969914637,-0.208424089476147,0.0371657163291462,0.0669276871466802,-0.0761429422679397,-0.0159465535854374,0.0173716102887924,-0.187323473661435,-4.11557560781107,-9.27867266523619,-10.3950048362382,-9.33718058239348,-7.79849914188002,-6.43181445491598,-5.00993055408801,-3.73856363554874,-4.50406929076628,-7.09788626849877,-8.85134070154153,-10.0736914306467,-11.7264762946471,-13.7995358985432,-15.4853227975316,-15.3338378016068,-13.891746329219,-11.7843179561233,-8.54668510891117,-5.50801338798729,-4.38111183356084,-4.74009586094308,-5.05876064788712,-5.4003630950757,-5.35399874520986,-4.80780452272589,-4.58778834746859,-5.5693133732454,-5.53945412472825,-1.84233558855423,3.04407633404158,5.56005284700775,4.47163363842394,2.70516486269333,2.18828680241653,1.96676370437803,1.29249641249472,0.702955588649659,0.450910449099865,0.302554929259938,0.166246372244602,0.0387028573105778,-0.132941606579947,-0.303613446680936,-0.203536059804827,0.0764903156708968,0.106707277990678,-0.083907441383292,-0.0124626267181214,0.0274892453050883,-0.191336619655057,-4.11512487342109,-9.27827238037538,-10.3944402396118,-9.33752227123575,-7.79852336110285,-6.43190624156754,-5.00946417699281,-3.73870762681976,-4.50452470419191,-7.09751487688543,-8.85124054100454,-10.0738815540393,-11.7264991506915,-13.7996887349672,-15.4850022094146,-15.3338508826939,-13.8920372315215,-11.7840707004639,-8.54650349264355,-5.50829734273711,-4.38118588009898,-4.73996592237482,-5.05880963038785,-5.40040260664264,-5.35363030814791,-4.80800716510653,-4.58791595029872,-5.56925335599065,-5.53903209234621,-1.84269014497493,3.04402039361655,5.56072579736777,4.47130336964393,2.70495101953123,2.1884267358835,1.96676076170307,1.2924810221923,0.702948427849546,0.450912529226634,0.302546809917847,0.166251456103835,0.038720006354562,-0.132970786128746,-0.303492884414957,-0.203675157336005,0.0764203992235532,0.0973152763122521,-0.0792558458474366,-0.0159465535854374,0.017371594291183,-0.187323475395138,-4.11557560793163,-9.27867266626953,-10.3950048358596,-9.33718058222809,-7.79849914177183,-6.4318144558468,-5.0099305539309,-3.73856363275769,-4.50406929275322,-7.09788626912724,-8.85134070024273,-10.0736914308081,-11.7264762945491,-13.7995358991031,-15.4853227983492,-15.333837800286,-13.8917463295782,-11.7843179570822,-8.54668510663005,-5.50801338596654,-4.38111183582883,-4.74009586180661,-5.05876064701618,-5.40036309615991,-5.35399874467961,-4.80780451657075,-4.5877883543826,-5.56931337114194,-5.53945412466382,-1.8423355872657,3.04407633358713,5.56005284664478,4.47163363821749,2.70516486272985,2.18828680272441,1.96676370430931,1.29249641233607,0.702955588756244,0.450910449200021,0.302554929229378,0.166246372166275,0.0387028573809792,-0.132941606729511,-0.30361344719047,-0.203536057371562,0.0764903140813169,0.106707277048018,-0.083907441383292,-0.0203817601880758,0.0230335843271509,-0.214133255826471,-4.54606407640676,-9.93471259421504,-10.8840629949632,-9.78563317394522,-8.16090821152353,-6.65146284336414,-5.16562504915148,-3.99841114490686,-4.95897541391633,-7.69386098312642,-9.52258176986686,-10.8513184609673,-12.55822911108,-14.5244372012624,-16.0929336178189,-15.9404101018266,-14.3897097174493,-12.0413874042076,-8.68088281018787,-5.68989356649571,-4.61965204848057,-5.03703729593794,-5.3282709851735,-5.51907791942995,-5.37694934603777,-4.84173734154027,-4.62311142713155,-5.53921977902229,-5.23205788989325,-0.914678619202202,4.60940772968387,7.22900174576627,5.64966132686204,3.49033151564004,2.84547370577928,2.48050694512478,1.6326603394459,0.924200601814109,0.607927005226642,0.414745100166449,0.245754838113203,0.0847626657210869,-0.117479374257217,-0.301507897164002,-0.198610504385571,0.118863288862071,0.151977119584593,-0.0906445700050115,-0.0156345424702351,0.0342268440465971,-0.220887698390769,-4.53984208478136,-9.93402041332173,-10.8867601795695,-9.78475769463775,-8.16068721855139,-6.6515711515026,-5.16610194129693,-3.99854106176162,-4.95861558046765,-7.69387294158261,-9.52280028092491,-10.8512616603337,-12.5578160864269,-14.5243664237794,-16.093660179956,-15.9401437932383,-14.3892623600689,-12.041791832999,-8.68109748374097,-5.68961643001512,-4.61978479491514,-5.03699173471131,-5.32804560097247,-5.51924278011057,-5.37737947524898,-4.84142885186772,-4.62319915698181,-5.53930022840016,-5.23226683442859,-0.912849986952491,4.60785336593608,7.22665784769248,5.65143947101936,3.49184080770367,2.8446393246072,2.48016624821974,1.63291902409768,0.924399211144802,0.607807882405265,0.414739934912331,0.245723286290294,0.0845906108077955,-0.117361274979893,-0.301879287662301,-0.197806517922094,0.118139257386421,0.135318409944987,-0.0841395803314677,-0.0203817601880758,0.0230336465296025,-0.214133250686983,-4.546064081471,-9.93471258971985,-10.8840629954481,-9.78563317491271,-8.1609082111736,-6.65146284247334,-5.16562504916269,-3.99841114509372,-4.95897541501696,-7.69386098298361,-9.52258176966609,-10.8513184613092,-12.5582291114383,-14.52443720012,-16.0929336182574,-15.9404101032911,-14.3897097167733,-12.0413874035435,-8.6808828103399,-5.68989356617963,-4.61965204862723,-5.03703729799337,-5.3282709843873,-5.51907791816521,-5.37694934885027,-4.84173734310939,-4.62311142091767,-5.53921978886354,-5.23205788944423,-0.91467861809913,4.60940773130688,7.22900174419241,5.64966132496612,3.4903315170658,2.84547370643254,2.48050694483592,1.63266033896726,0.924200602299725,0.607927005287304,0.414745100124228,0.245754838548018,0.0847626650837567,-0.117479374176902,-0.301507897084827,-0.198610510133023,0.118863298929153,0.151977113758497,-0.0906445700050115],"Archive1109_field7":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-6.71367767809475e-08,-8.8340129545285e-09,-1.08595182368219e-08,1.51530360563943e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4.03822454797857e-08,-1.64297453317116e-08,-1.36837506789577e-08,-2.48235927686965e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-7.19595886984664e-08,-9.84208916679613e-09,-1.11464401231237e-08,3.94773653090255e-09,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.23762487836061e-13,9.13493552798709e-12,3.09258561651767e-11,6.90867717278791e-10,5.17967257715302e-09,-3.35315307528814e-10,-5.42215096694578e-10,-4.61326458007893e-09,4.93551056017969e-09,1.23927848976432e-09,6.78859751409777e-10,1.18272292828529e-09,-1.01560444710448e-09,-2.82511245087079e-09,9.29065945057617e-09,-9.37562716128409e-09,9.90745808603085e-09,4.76248952688702e-09,-1.35045887958106e-08,1.86452338218314e-08,-8.45347134318808e-09,-2.16629752434721e-08,2.99751571994132e-08,-1.23627571944492e-08,-1.30617606046011e-08,-1.90408884512741e-08,1.46001600562946e-08,8.93547118325889e-09,-2.97081755373986e-08,1.58258259410663e-08,5.14043444401377e-09,-2.36441822069511e-08,2.74590917633166e-08,-2.27727117900884e-08,1.40478045866776e-08,3.22796606548582e-12,-4.98649795612306e-10,2.2809061471618e-10,-9.23354101006273e-10,9.54796417944342e-10,3.48238186790737e-10,-2.21533432378271e-10,-2.33494363052525e-10,4.4290157828904e-10,2.95000822255919e-10,-1.305315414077e-10,-9.77475989154287e-11,3.44071204687293e-10,1.00051028683032e-10,6.26737170733715e-11,-1.27651306972174e-11,-2.81285879189832e-12,1.23947883342439e-12,1.22022796109622e-10,-2.09848503698957e-11,-3.69511711646993e-09,1.20182264139831e-09,2.16694949373231e-09,5.03754183826129e-09,-4.98699409396522e-09,-2.19966450861256e-09,-1.13384615299114e-09,-2.71456084392615e-11,1.41020063722736e-09,3.71412601992115e-09,-8.50556021355251e-09,9.70875549268428e-09,-1.0379557008216e-08,-4.58562383233521e-09,1.46853579459521e-08,-2.11029033354842e-08,5.19766776268427e-09,1.33642508977664e-08,-5.35458790589879e-08,-1.14345161012741e-08,-1.18502833546602e-08,-6.59104315179788e-09,-2.53563407153492e-08,-1.29248452467166e-08,2.80909514944596e-08,-1.60679192153136e-08,-6.8792564939474e-09,2.45921303519419e-08,-2.60945147249378e-08,2.35293466114685e-08,-1.22302364742128e-08,-4.73910970891318e-12,6.9183299169481e-10,-6.88178241010491e-11,9.67990546009208e-10,-9.0879889863222e-10,-2.55679461384303e-10,3.24630742187923e-10,3.40999422505105e-10,-3.35774222724989e-10,-1.67252625389476e-10,2.07944488032737e-10,2.63783191941435e-10,-2.25596146085386e-10,-3.69133188570103e-11,-3.49863476258413e-11,1.57451158682184e-11,5.90623164052903e-13,-2.126537583511e-11,-3.8982409857112e-10,-9.11849842170259e-10,2.13617770797123e-09,-2.27885855459047e-09,-4.34657643370981e-09,-6.26879190255051e-09,1.96218660066066e-09,-1.33211440913666e-09,-1.27962958823675e-09,-7.09063829404818e-10,-2.26084195291457e-09,-5.85180705319229e-09,5.82729431423477e-09,-1.35281570235074e-08,4.63948373258936e-09,-1.4485305011325e-09,-1.96991113180154e-08,1.55495491267964e-08,-1.61264489554413e-08,-3.31181604540018e-08,2.01574351971004e-08,-1.58298232823328e-08,-1.22293622907146e-08,-1.2003145920619e-08,1.71743981975417e-08,9.03400043123476e-09,-3.07488565727373e-08,1.46750447911113e-08,3.21265171665665e-09,-2.48449604219925e-08,2.52873643653253e-08,-2.43812252709457e-08,1.32667854272594e-08,-2.73484814910834e-10,-7.82464002061467e-10,-6.50209563433016e-11,-9.98170411213672e-10,8.406309309151e-10,1.65475599714063e-10,-4.38646523505952e-10,-4.53305561626762e-10,2.18567575467579e-10,6.91902211769744e-11,-2.64140287285472e-10,-4.25028518969453e-10,7.52562694854927e-11,-2.71230451614913e-11,2.28826761342782e-11,-1.66481616235298e-11,-3.4307749307069e-13,9.29143889031606e-12,3.92541401140448e-10,2.31215684317574e-09,2.15382344123481e-09,-1.65791423853616e-09,-1.54428334606836e-08,3.45078997464747e-08,-1.48112220369415e-08,-6.61987961738158e-09,5.31110374693845e-09,8.26427289373316e-09,-1.96950015755008e-08,1.65393147183135e-08,-8.38369109481637e-10,-1.69265881857602e-08,2.75659909883085e-08,-2.06054728954258e-08,1.40825389607969e-08,-6.79211653435947e-09,-9.21548626085943e-09,2.43248755125432e-08,-3.48418204017929e-08,-1.15595893617335e-08,-1.04281901988989e-08,-1.6282396377583e-08,-7.70911591557092e-10,2.24642448694634e-08,-4.67612013341475e-08,1.80581941387897e-08,-5.07487044160089e-08,1.11790579564948e-07,-1.05702930732836e-07,4.39494686838813e-08,-1.4640156584081e-08,3.83687997804339e-09,-1.93173319194507e-09,1.07858088453373e-09,7.11201136901995e-10,-1.01863762156287e-09,-1.17389210861706e-09,9.61601016268751e-10,2.80441641464687e-11,-1.51346957086613e-10,-8.45349198771744e-11,4.52947574968016e-10,4.11679209764496e-11,2.62249481374589e-10,-1.43824099948301e-10,-1.44545411636408e-11,-2.00660787760495e-10,-2.14027866840496e-12,3.2874938625626e-13,-2.3831671506181e-10,-1.63820242409376e-09,-7.21082370525997e-10,2.40424670162681e-09,1.68043223154267e-08,-3.4435600369374e-08,1.35724653253465e-08,3.69944103773384e-09,-7.21458055565268e-09,-6.83315713332182e-09,2.00021225677047e-08,-1.58655577665486e-08,1.06200969814891e-09,1.62155174474464e-08,-3.03455118683386e-08,1.83043856574737e-08,-1.51903568516097e-08,1.68666247350751e-09,1.42070353292345e-09,-3.99474517591371e-08,1.01452623475962e-08,-1.18830468607879e-08,-1.4400736896227e-08,-8.31361227388071e-09,-1.36624813192149e-08,-3.04464905243535e-08,4.27640265576854e-08,-1.87442278756474e-08,4.62457303553967e-08,-1.10722221168977e-07,1.06404237211702e-07,-4.35754530391477e-08,1.50640652403315e-08,-3.94798732042579e-09,1.75366733318811e-09,-1.2485464197532e-09,-8.13097741089589e-10,8.81708198778361e-10,1.11711032725172e-09,-9.86978957837193e-10,-2.5366192635044e-11,1.79507000263813e-10,1.67131778584131e-10,-3.72801384687105e-10,1.47991756668759e-10,-1.62190721276582e-10,1.51302406645193e-10,6.52561857569475e-12,1.9616317543926e-10,7.3681561008333e-14,-1.88515235893049e-11,-2.80587944506701e-11,7.17644751885182e-10,-8.12566991627159e-10,-3.5161685946988e-09,-1.91353706430577e-08,3.28656965903516e-08,-1.76597318262672e-08,-8.92751401123993e-09,3.4839850299384e-09,6.19838454926268e-09,-2.11058015207397e-08,1.31963249499204e-08,-4.61162701661995e-09,-2.13786807784797e-08,2.22380294697081e-08,-2.68032440795883e-08,7.37187750961429e-09,-1.04343182287429e-08,-1.78994043777045e-08,1.40071008550015e-08,-4.38877863067725e-08,-1.58468898420264e-08,-9.64193394307224e-09,-1.06587738209504e-08,1.71562495404822e-09,2.41590644112073e-08,-4.68481439293968e-08,1.73372063051047e-08,-5.18390384849443e-08,1.11263600096436e-07,-1.06285322871635e-07,4.38919838816694e-08,-1.42758083827387e-08,4.30217724901479e-09,-1.55739929903055e-09,1.43692945042397e-09,8.96850726556666e-10,-7.61169608079145e-10,-1.06571058661813e-09,9.89191924199247e-10,5.02027576216801e-12,-2.28783925336566e-10,-2.21722812988593e-10,3.28167437743237e-10,-3.07306915720169e-10,2.31786982548125e-11,-1.76993949803896e-10,1.11287513788068e-11,-1.96488707999635e-10,-6.46332108277475e-13,9.40335193019524e-12,2.21194886944935e-10,-1.21253682249388e-09,-1.57549970884136e-09,-2.62667605694668e-09,2.09419744324531e-08,-2.22810330985317e-08,1.39248520018907e-08,-8.1906963794953e-10,-1.01564592764703e-08,1.39362124199281e-09,7.28532319062796e-09,1.42770967198315e-09,3.33978967227989e-10,-2.70402506163645e-09,9.21371858697857e-09,-4.41886179537709e-09,1.05559163418995e-08,-4.52708054489779e-08,4.07133896159741e-08,-3.07455721498362e-08,5.90111090684926e-09,-6.71363247319896e-09,-1.75713610559075e-08,2.60676940727172e-09,-1.13375401993516e-07,1.14768169567868e-08,7.39450084568656e-08,-2.02895281328893e-08,4.62905739494115e-08,-1.08544893436302e-07,6.5501782533365e-08,-6.20014500434777e-09,4.33678194263581e-09,-2.47211483762003e-09,1.37073522389699e-09,-2.07916908875421e-09,-2.24176590590091e-09,9.12170609849732e-10,6.4271257087785e-10,-1.92754399806257e-10,-6.69417536268385e-10,1.37033149878371e-10,2.99048561077541e-10,-3.79871009262437e-10,5.1547529049172e-10,-2.62851821373544e-10,-1.35941572794058e-10,6.04236826814018e-10,-4.28383586076712e-10,-1.69828487070486e-12,-2.94650710919991e-13,-6.53105757368145e-11,1.89392601891165e-09,2.97761899963087e-09,3.3086633002321e-09,-1.98053550155882e-08,2.2199261834574e-08,-1.60939174660524e-08,-3.23192636329204e-09,5.71878814418268e-09,4.86231032792323e-09,-8.19328664864197e-09,-4.83824895383024e-10,-5.77244902432796e-10,1.47266360213697e-09,-1.3824760133936e-08,5.34496724664303e-10,-1.44472057506298e-08,3.81455212007343e-08,-5.16570585377678e-08,1.0118203897591e-08,-3.25140056074414e-08,-1.71968918910355e-08,-6.7870261313352e-09,-2.57815993057733e-08,9.74011153895675e-08,-2.20322206682223e-08,-7.95867592274519e-08,1.79298117972114e-08,-5.05250915077035e-08,1.09147467784843e-07,-6.52741918675578e-08,5.99868946392095e-09,-4.66963842342646e-09,1.96844513123564e-09,-1.93642489843273e-09,1.54302042723069e-09,1.98370609296689e-09,-1.27705258358606e-09,-8.89717411356564e-10,7.30741387902334e-12,5.3888655959275e-10,-2.12601605226138e-10,-2.76555640277204e-10,4.54975189697605e-10,-3.63763260502675e-10,3.22025953827281e-10,8.11784151129826e-11,-6.5445959227766e-10,4.15693538977819e-10,-2.65537450256079e-13,-1.71749784586537e-11,-2.00208645051597e-10,-2.81040433926546e-09,-4.51155494044275e-09,-4.44242238368077e-09,1.73112524491867e-08,-2.39211970652154e-08,1.11158408467249e-08,-3.01903093249024e-09,-1.19511367460557e-08,-8.4396012794914e-10,5.69171003016723e-09,-2.35051140272354e-09,-3.88506171466476e-09,-7.58199722750792e-09,3.53770901634646e-09,-1.09537763074184e-08,3.29201054224669e-09,-4.92963408487739e-08,3.16896088031291e-08,-4.00246597157209e-08,-1.75980820489192e-09,-1.0936997877051e-08,-1.7506925003172e-08,6.38957169283596e-09,-1.11256189814438e-07,1.39292029386873e-08,7.48437167453573e-08,-2.02053951615786e-08,4.61685085957331e-08,-1.08426497634336e-07,6.63978233729329e-08,-4.78910384744065e-09,5.93007795975685e-09,-1.08221740653909e-09,2.50567248693049e-09,-1.02678331223988e-09,-1.76088860566229e-09,1.63230769583947e-09,1.11947511060558e-09,1.42529582397636e-10,-4.39978874767816e-10,2.49011491860747e-10,2.75667145742384e-10,-4.84100680405451e-10,1.78806072055042e-10,-4.39887629953004e-10,-5.49031706548666e-11,7.05142955146834e-10,-4.14883201605852e-10,-8.20149833543527e-13,9.49049003858695e-12,3.85398825231227e-11,7.40069700627302e-10,3.41742227629119e-09,1.16264761793057e-09,5.55068885569755e-10,-1.38201855734708e-09,-1.23515110133118e-09,-4.40112481678411e-09,-1.23213528160888e-09,6.56866783061673e-09,-5.53011537446854e-09,9.4731371986708e-09,-3.46443590976422e-09,4.00501819010072e-09,1.39242712670825e-09,-1.51863136306517e-08,1.49167188478594e-08,7.63043288147238e-09,-3.86868663552906e-08,3.3876645917527e-09,3.02003681696166e-09,-1.95748259180628e-08,-8.46211305442077e-09,-1.88400384792986e-08,7.7684282036205e-09,5.17730087744779e-08,-6.60978054463122e-08,-4.16988430514392e-09,-1.48931347701519e-09,2.16170385400611e-08,-2.4136980451077e-08,2.19360891585678e-08,-1.77986278447529e-08,1.82370442429868e-09,4.32623458000555e-10,-4.57367457363724e-09,6.08704188099059e-09,-4.17196832206334e-09,-5.23333431510138e-10,-1.42911388072353e-10,-8.24884010206529e-10,4.85507493658715e-11,-1.98932028887675e-10,3.91942056016695e-11,1.44805298376671e-10,-1.66124688559498e-10,6.25694637117896e-10,-5.46680250632349e-10,-3.76919772987593e-10,-1.45241647463228e-12,-6.43520175878576e-13,1.19253897269913e-10,-5.34808350456659e-11,-2.01476724755367e-09,-5.75429257292797e-10,6.8619300072176e-10,3.29060139775149e-10,-1.73174999482433e-09,-5.9745865140218e-10,-4.23475816505766e-09,-1.59292878298798e-09,4.90757650587585e-09,-8.56909671660003e-09,3.37169596494794e-09,-5.46659381871178e-09,-7.55637770685394e-09,1.03418247519927e-08,-2.1239283422399e-08,-1.53417812884281e-08,2.53612720429218e-08,-2.71761281857021e-08,-3.17873611410306e-08,-5.15108063063906e-09,-1.53342703228758e-08,-3.0646205506609e-09,-2.43735772181066e-08,-6.39383756525427e-08,5.90837207433716e-08,6.49823961961238e-10,-2.04853613725054e-09,-2.19916971577412e-08,2.40830199293893e-08,-2.27039805646842e-08,1.68482983797508e-08,-2.77916192631736e-09,-1.40142604522387e-09,3.66906807428511e-09,-6.50284980312597e-09,3.5521687643198e-09,5.39810606928013e-11,-2.32376426189782e-10,5.30650886824847e-10,-2.58783333629715e-10,1.34163199227035e-10,2.08913165904749e-11,-1.693891466891e-11,1.70483346557066e-10,-7.44656502758054e-10,4.5104361516518e-10,3.55391179763965e-10,-4.70672910632706e-13,-1.62083813521973e-11,-3.84085707852706e-10,-8.64640137257868e-10,4.83366316103022e-10,-6.46111942311022e-10,-3.09202553806108e-09,-3.05487730644579e-09,-4.10541391906313e-09,-6.63231901166749e-09,-3.11162049035292e-09,4.06385664416199e-09,-7.3527235258908e-09,5.16798834704654e-09,-8.21910057486255e-09,-1.39776160472754e-09,-4.78856756843031e-09,-2.22516332234144e-08,7.02946995971158e-09,3.30556363050588e-09,-4.78516304169606e-08,-5.14491920504505e-09,-3.61359438601376e-09,-2.35687934264009e-08,-9.17979710162061e-09,-1.64801543202393e-08,9.53727488291355e-09,5.47061501444292e-08,-6.42318866796373e-08,-3.08670747711316e-09,-5.6469302218437e-10,2.2330728950897e-08,-2.19417831601898e-08,2.46660587858942e-08,-1.50058826962774e-08,4.19325226026726e-09,2.35763448304952e-09,-2.82860186278476e-09,6.87537899132084e-09,-2.93204414834734e-09,3.85192994013217e-10,5.60523858252718e-10,-2.80373459920732e-10,4.11646639470846e-10,-6.17740481222762e-11,-2.94357981694503e-11,-1.51615468326215e-10,-2.55106516693207e-10,8.28433600937941e-10,-3.66255389770452e-10,-3.53080070467682e-10,-9.02801685916298e-13,9.49018914574669e-12,3.33011420980958e-10,1.35258867946288e-09,4.23984139486695e-09,-3.0113763567506e-09,2.11926309808397e-09,1.52124664560773e-09,-2.82135516977716e-09,3.94566307533017e-10,-1.50556407087923e-09,1.28290282352053e-09,6.30508808304479e-09,-1.47678995156147e-08,1.6867414297163e-08,-1.9906759712576e-08,2.00738770987151e-08,-1.94536660386385e-08,2.42812496904766e-08,-4.35997215826857e-08,2.89511182271009e-08,-2.53639221602438e-08,-2.06467306482811e-08,-1.21427543916437e-10,-1.89735207140282e-08,4.08414903292612e-09,-3.92758376790929e-08,-1.65464112603594e-08,2.51893368726724e-08,6.89673530889995e-09,-3.80027210714736e-08,1.77629198322053e-08,-6.44635253630198e-09,-9.23350953911246e-09,1.32606964316064e-08,-1.11778458818581e-08,-6.60625474976667e-10,-1.85537724885785e-10,-6.68360028094527e-09,2.59205089496393e-09,-6.82805008857947e-10,-4.99687923359131e-10,-4.43583177973311e-10,-3.96311489333111e-10,-6.75669275046511e-11,6.99120896742464e-13,2.16015853819396e-10,-1.17590388695834e-10,-1.47769815039396e-11,-8.31936763724416e-10,1.53386980953491e-10,-1.35018102543689e-12,-7.28551190050372e-13,-1.73689234664745e-10,-6.63274550909099e-10,-2.84884575067592e-09,3.60592309734523e-09,-1.06174412480577e-09,-2.04599466455116e-09,-1.8431634393653e-10,-6.16985559802406e-09,-4.48690075735391e-09,1.0083584309817e-09,-6.40444801924789e-09,1.56657705409682e-08,-1.68384407904986e-08,1.83531494989788e-08,-2.67512328057481e-08,1.28760196780152e-08,-2.87056653158956e-08,3.40584542695599e-08,-4.3519952112025e-08,-7.34888732776627e-10,-1.04009493235232e-08,-2.55716571489986e-08,-4.41163895167331e-09,-2.48447019072476e-08,2.24568698084619e-08,3.28583741241252e-09,-3.31985679777058e-08,-1.16690554144338e-08,3.4729527689966e-08,-1.88090341437751e-08,6.13969555844012e-09,8.00438118545418e-09,-1.47533803161838e-08,9.76932541084226e-09,-6.85799621456744e-10,-1.05661167777054e-09,6.12427865847791e-09,-3.46044268670573e-09,-1.27672132413842e-11,-7.42663923635792e-11,-2.90842509337348e-11,2.87096849137053e-11,-1.20063142248113e-10,2.23411727394793e-11,-1.21180620309961e-10,6.6495020281111e-11,-1.63630185910221e-10,6.92371221488007e-10,-1.83654463735885e-10,-5.70464408977388e-13,-1.58020978924176e-11,-8.98089856780114e-11,-2.53206158651132e-10,1.30479216477542e-09,-4.83183403459359e-09,-1.60706041739823e-09,-2.18989738554805e-10,-5.84940212871995e-09,-2.00905539269188e-09,-3.62873559666675e-09,-1.63310431233162e-09,4.22685944837345e-09,-1.95880493377865e-08,1.1599886751109e-08,-2.5814311469421e-08,1.33931875157524e-08,-2.70573025787549e-08,1.58208111984466e-08,-4.8150372981977e-08,1.97256849322762e-08,-3.34099891800385e-08,-2.66152820128063e-08,-3.90233410054697e-09,-2.03156601757993e-08,5.40957859624699e-09,-3.7786065275557e-08,-1.32222636448108e-08,2.80339156587788e-08,9.07839219226792e-09,-3.60144944272532e-08,1.90080913252409e-08,-3.15389393690136e-09,-5.38149011780454e-09,1.71217838514072e-08,-7.8931045011528e-09,2.00291716047456e-09,2.19052135303145e-09,-5.6099497602123e-09,4.3404345097997e-09,6.67548851608654e-10,5.91858081436673e-10,4.49105304750256e-10,2.72681167628837e-10,2.98100601843759e-10,-9.06875342339305e-12,-1.36837784700437e-11,-1.02632423607037e-10,3.02507470680754e-10,-5.74948318692599e-10,1.87800608110157e-10,-9.44602333657049e-13,9.40547792573807e-12,1.85761322335514e-10,-8.65224497335498e-10,-9.03867438226161e-10,2.29613984074096e-09,3.98769659649995e-09,-2.81658941666886e-09,1.06378552651948e-09,-3.05912065467849e-09,-3.76327354263464e-09,8.27510824250305e-09,-1.28806811606452e-08,1.27092044147766e-08,-8.16060024108594e-09,1.4287361349623e-08,-7.53588679703346e-09,-1.07418456050696e-09,-1.44873914358221e-08,1.02481611592044e-08,-1.49502807388323e-08,-8.34412014052084e-09,-1.4746831289486e-09,-2.10145347023166e-08,-1.00108624118043e-08,-1.26985689660846e-08,-7.69324485693743e-09,5.65233583020076e-09,-3.92901097017584e-08,1.52400695005495e-08,-9.62550384640087e-09,4.47992030566024e-08,-4.68404126318934e-08,2.54604461359752e-08,-1.83069131423716e-08,1.0448751732001e-08,-1.1321407154674e-08,-2.17300358165498e-09,5.59716173685265e-09,-2.82687483465487e-09,-1.47345431064869e-09,-1.55516102277362e-11,-1.108032163771e-09,-1.52252667938272e-10,-6.19377560408687e-10,8.04576995923104e-11,-1.40594369372584e-10,2.02418439566994e-11,-1.17653410670348e-10,-3.50656146313627e-10,2.76682591310188e-10,-1.29322888060731e-12,-7.59986263758059e-13,-2.62452130281169e-11,1.54949389419769e-09,2.28578295332287e-09,-1.73293105793436e-09,-2.88998543645051e-09,2.09331617592007e-09,-4.35632749221033e-09,-3.09351222417742e-09,-2.86141086581207e-09,-7.4003854526714e-09,1.28771540950331e-08,-1.1703249940955e-08,8.29042696565323e-09,-1.60453144072417e-08,1.37436323041284e-09,-7.12241787957038e-09,9.8635058777085e-09,-2.05809645218115e-08,-4.74754468143549e-10,-1.9349569963084e-08,-3.21839629036169e-08,-5.58837620656013e-09,-1.33197617658451e-08,-6.99502618674113e-09,-9.17810952123666e-09,-1.96563290301898e-08,3.04638585881676e-08,-2.07469189629387e-08,6.07472847142628e-09,-4.62922657657986e-08,4.63634461577066e-08,-2.70558821288546e-08,1.63604705572483e-08,-1.21311805903767e-08,9.64956991840423e-09,6.42334286298889e-10,-6.27636239754207e-09,1.74334701134246e-09,5.77362591748795e-10,-7.38375843116537e-10,4.6972483943483e-10,-3.69698628285986e-10,2.80357641958267e-10,-1.09802489893246e-10,1.95553203792658e-10,-1.31569677597898e-10,-1.12617957863025e-10,1.71787152337138e-10,-3.15100540223089e-10,-6.15968486201964e-13,-1.53949504708356e-11,-2.33820525269083e-10,-2.45866229895984e-09,-3.82103464159098e-09,4.66921782371397e-10,1.72558084843296e-10,-4.63196626648652e-09,-2.16320547082204e-09,-5.74018894085723e-09,-6.28879564507963e-09,4.87377426734317e-09,-1.5175341684193e-08,7.50424760315894e-09,-1.38102782481453e-08,8.00756585516538e-09,-1.45837356936269e-08,-9.07721325706582e-09,-2.33544384200347e-08,5.55999024947102e-09,-2.41728619163919e-08,-1.60947210239925e-08,-7.06574029771882e-09,-2.46657644237089e-08,-1.17087925573968e-08,-1.20609500192735e-08,-6.4138309119114e-09,9.28178630359544e-09,-3.55350207887855e-08,1.85199223348566e-08,-6.61348033028261e-09,4.65105626931087e-08,-4.26366902214204e-08,3.02372265895558e-08,-1.35485326285736e-08,1.45191627466188e-08,-8.01997321378416e-09,7.39295700785399e-10,6.91219733411304e-09,-6.38864309555866e-10,2.70423189672003e-10,1.42921376672207e-09,1.10132160785883e-10,8.2605995653418e-10,2.82707504385296e-11,1.65066024112506e-10,-2.69411810493316e-10,1.41863254614701e-10,2.99166878283964e-10,-2.49425069422213e-11,3.21217795169454e-10,-9.79525454399213e-13,9.08739198123192e-12,1.19263024862321e-10,5.5180566926222e-10,7.16719680361604e-09,-1.73075249309026e-09,1.72263494179061e-09,-1.70875705028346e-09,-1.35191868411188e-09,-1.8728612216752e-09,-3.1366800574491e-09,-6.35082327005283e-10,5.31345564818073e-09,-2.74439697799385e-09,6.4053660592417e-09,8.92934363379307e-10,-1.18065583291616e-08,8.33557965500613e-09,1.49484197965473e-08,-2.88546145169741e-08,2.75384116484826e-08,-3.13831323974713e-08,-2.06186099418173e-08,-9.42184288165884e-09,-1.01276941738931e-08,-1.11961237205746e-08,-7.98535300084215e-09,-6.02058067600801e-09,-5.79657505335486e-10,-1.72159252952613e-08,5.78348548136605e-08,-1.15252184816998e-07,6.03154156422897e-08,-4.43980124447574e-09,3.77342249915268e-09,-1.17686968096656e-08,1.86616708829951e-09,2.53796153271976e-09,-2.89639513861318e-09,-2.30540944938239e-09,-3.28874272761094e-10,-1.23900787961938e-09,-7.87115957810858e-10,-5.68126529254335e-10,-6.02203323863238e-10,-7.20675679942463e-11,6.05966885127445e-11,-1.3061573756765e-10,-3.62607755939125e-10,-3.06654791898652e-10,-3.79641504421246e-10,-1.20975129841463e-12,-7.91554547057469e-13,3.81069097042971e-11,1.20640797874923e-10,-5.8082688720739e-09,2.25782939219571e-09,-5.87728037453886e-10,8.15705146760249e-10,-1.77052617150556e-09,-4.35608212441179e-09,-4.44598834585469e-09,9.30257284156448e-10,-5.49866036033703e-09,3.82896826039358e-09,-6.27779839783922e-09,-2.58788813735406e-09,5.28438941659139e-09,-3.74228144219781e-09,-2.07932157500839e-08,1.82222783073563e-08,-4.34786030460551e-08,2.90064122107941e-09,-1.66229783042338e-08,-1.76621997900485e-08,-1.39977725945673e-08,-7.3038227849439e-09,-8.97130580768508e-09,-8.51862457227359e-09,-8.38254401410275e-09,1.09651805659338e-08,-6.15888602300031e-08,1.13380417928154e-07,-6.10919741710438e-08,2.60856046512099e-09,-6.09900313378288e-09,9.66822822189823e-09,-3.78928899758084e-09,-4.3068804565963e-09,2.12371034613902e-09,1.05014185518363e-09,-7.27586528414839e-10,3.39189081079036e-10,1.53153858560823e-11,-8.5263737784154e-11,1.19703077506297e-10,-2.06042565439544e-11,-9.22172897035819e-11,-4.06697579124266e-11,8.91859168328497e-11,9.38560296064101e-11,3.34009627024417e-10,-6.63836057179541e-13,-1.46055517258656e-11,-2.91257778234128e-10,-1.01056556609711e-09,4.30086814546909e-09,-3.54720620744439e-09,-2.1307056077184e-09,-3.57000726726859e-09,-4.72663305969623e-09,-4.8194027547148e-09,-6.07006023912927e-09,-4.42224012710627e-09,2.8935939103164e-09,-8.14843348848071e-09,5.55731113779851e-10,-5.57423232136812e-09,-1.90334879145784e-08,1.38051086680507e-10,5.89314899630193e-09,-3.35869752082651e-08,1.8390370622112e-08,-3.89514321446597e-08,-2.6029229979695e-08,-1.30146939952864e-08,-1.19981613194658e-08,-1.09748907162062e-08,-6.85061657622435e-09,-2.18278867976695e-09,3.90166350477006e-09,-1.29686119276401e-08,6.17708559062123e-08,-1.13137915398337e-07,6.5270402613062e-08,1.08564478286793e-09,9.25985103667716e-09,-7.06072319266715e-09,5.68609524874764e-09,5.88403515928905e-09,-1.38906015853465e-09,2.31507272020828e-10,1.73068332454676e-09,4.9200824839981e-10,6.95840921379768e-10,6.67739134876392e-10,3.16176566530603e-10,1.39241625149193e-10,1.02615179643952e-10,9.31009781572898e-11,1.3955489469822e-10,7.79712220897771e-11,-3.25782897656923e-10,-1.00593215088056e-12,8.39760066011726e-12,1.26598345229888e-10,1.26331047831698e-09,-1.65653327654284e-09,-1.83320023435747e-09,2.49340779825535e-09,2.661358518907e-09,-6.22885947498891e-10,-3.09727358111272e-09,-2.52732120821304e-09,1.64708782670346e-09,-5.48361182092846e-09,8.46775699691632e-09,-7.07811167569854e-10,-4.38130531245664e-09,1.18203611661387e-08,-1.68731214350842e-08,2.31619198585875e-08,-1.02000177290386e-08,-1.48755317756241e-08,-2.09109277945655e-08,-5.96521415069879e-09,-1.48543518148308e-08,-1.27835653778365e-08,-8.76883831283209e-09,-7.88732188403357e-09,-7.83857635296295e-09,-1.2592517259541e-08,1.61571447770075e-08,-4.69178534664828e-08,3.45130051814774e-08,1.48310746037755e-08,-2.98180279249112e-08,-1.42443400805863e-08,1.58618273046587e-08,-6.18590265066504e-09,-4.55703560519573e-09,2.21169469976625e-10,-1.38615097457849e-09,-1.23029684750833e-09,-7.5396604965734e-10,-1.17392702776484e-09,-5.82759830817588e-10,-7.02928048021566e-10,1.05997815221392e-10,-2.28372665847749e-10,-2.121391479186e-10,-2.55897579590321e-10,-3.5380529015702e-11,-1.18531977634917e-10,-1.08583865881323e-12,-7.78285446089315e-13,2.57777559038669e-11,-6.13115469139026e-10,2.97463575209725e-09,2.31619047453085e-09,-1.36013499943799e-09,-3.65855555539197e-09,-2.34511355058103e-09,-3.36379125772802e-09,-5.4948771286517e-09,-1.74381140157058e-09,5.08589746329546e-09,-7.37803308407288e-09,8.3233571289274e-10,2.49733770686994e-09,-1.78707412477451e-08,1.46581388202831e-08,-2.89650267716143e-08,-7.87840108838554e-10,-1.40593215442566e-09,-7.13396382759303e-09,-3.66156214214799e-08,-1.19422311071805e-08,-1.30722714950252e-08,-8.23586741860499e-09,-9.47641205033223e-09,-6.90493628923611e-09,3.20685503254161e-09,-2.28229394532054e-08,4.26950406341043e-08,-3.65477513597357e-08,-1.59253221318806e-08,2.75684483019034e-08,1.16701759699233e-08,-1.82152597139145e-08,4.07454171494544e-09,2.60213510687634e-09,-1.06183301390582e-09,3.16957519146603e-12,5.60393922137307e-11,-2.52819545189087e-10,3.02605015785943e-10,-1.60338132191078e-10,1.11216678135569e-10,-2.51261828347231e-10,8.109107462466e-11,-2.99728668583043e-11,-5.68514611242914e-11,-2.05836065094182e-10,6.66670679196416e-11,-7.34442824901002e-13,-1.33124456024631e-11,-2.67685669836255e-10,-2.45874847423398e-10,-4.43080425531793e-09,-3.60360939306003e-09,-1.30697567583321e-09,8.10336164938095e-10,-4.0136528710309e-09,-6.14745250064955e-09,-5.66670378953687e-09,-2.30759327550381e-09,-7.92632015337573e-09,3.06046133141449e-09,-6.56374877395088e-09,-1.08398076748678e-08,4.6151939177194e-09,-2.50435895839908e-08,1.41466338781856e-08,-1.48848089365948e-08,-2.38554549908849e-08,-2.8324926948713e-08,-1.13093346010488e-08,-1.84344700392704e-08,-1.47437645001835e-08,-8.74868257737288e-09,-6.81502441262617e-09,-3.85119756492184e-09,-7.60078149651838e-09,2.11478860575166e-08,-4.22217005843288e-08,3.69646651631295e-08,2.03972796245023e-08,-2.36970970162127e-08,-8.18483843492591e-09,2.10588087286794e-08,-1.97253699777518e-09,-8.78750836540952e-10,1.87341496768771e-09,1.40757845157936e-09,1.06081761364548e-09,1.18809486503356e-09,5.03180798105729e-10,8.3951500718244e-10,4.1727106149108e-10,4.40865016080911e-10,3.90192445926854e-11,1.29301778740685e-10,3.2280700777954e-10,3.98286712955019e-10,-5.62529637612478e-11,-1.1875785207591e-12,4.88504103112944e-12,4.05296236982733e-11,1.64230481919329e-09,-7.17435613135386e-09,9.29466769792598e-09,-2.28761003644107e-09,2.1917607841023e-10,-5.37529317443426e-09,2.32485407334314e-10,-3.25542012040673e-09,-8.75320689049602e-09,1.23620684826156e-08,-3.74949373996735e-10,3.56267929598233e-09,-1.33122073096087e-08,1.84567625036499e-09,3.31407609400581e-08,-4.53152002136499e-08,-6.31659222454518e-09,-1.43980766990831e-08,1.24721493740196e-08,-2.6869987395346e-08,-1.27447256095896e-08,-1.90517186925389e-08,-7.98348583612535e-09,-1.0429454744406e-08,1.334831709528e-08,-1.47847585076932e-08,-3.28929156546727e-08,3.56544456402397e-08,2.47135491091774e-09,-2.71968634703075e-08,-8.19509260384194e-09,3.90945154311929e-08,-2.75543800346028e-08,1.22550401333107e-09,-1.88287843899129e-09,4.05525669104705e-10,8.89314658059311e-10,-1.86161153354366e-09,-2.01581499188271e-10,-7.86243788679961e-10,-4.81504662232144e-11,-4.08115396115067e-10,-1.72412104387538e-10,-1.28618017752465e-10,-7.46690207764667e-11,-2.22848079793238e-10,-1.65531375609807e-10,5.20760938156571e-10,-3.41427026509939e-13,-1.4954213209228e-12,3.97179671454071e-11,-1.31140696493608e-09,7.78203205507729e-09,-9.23307466206621e-09,2.47693154423723e-09,-1.71234305510458e-09,1.71389981859642e-09,-7.83909300517759e-09,-4.61541688974655e-09,6.99404908209263e-09,-1.33324682603556e-08,1.93901933717853e-10,-4.91682021002105e-09,9.83338744866046e-09,-9.43508004848459e-09,-4.34246751111642e-08,3.73736692149144e-08,-5.9351287227906e-09,-3.98787370493852e-09,-4.1880382566991e-08,1.60652071273625e-09,-1.4797440402952e-08,-1.73067875440364e-08,-9.06502942343903e-09,-6.71680837284137e-09,-2.71860076096271e-08,6.30423329104824e-09,2.738294743966e-08,-3.88130470021732e-08,-4.01928472479062e-09,2.76327816941595e-08,7.4037473910743e-09,-4.00798554907976e-08,2.64792341957355e-08,-2.3041391660584e-09,8.81217938582585e-10,-8.39150434908363e-10,-1.623487904975e-09,1.26326380637869e-09,-3.32691269581085e-10,3.26022001495033e-10,-3.52289679562986e-10,1.06937882937389e-10,1.11558664529455e-10,1.99784849819679e-11,-1.05806990917669e-10,3.42424129858014e-11,4.74535781868459e-11,-5.49755669465157e-10,-1.06806819609251e-12,-5.3450690011133e-12,-1.51186731417744e-10,9.05427773501328e-10,-8.5325491494075e-09,8.42385588058873e-09,-4.16629006744089e-09,-6.97488092793721e-10,-7.05780361510668e-09,-1.29241815174063e-09,-4.84228077459861e-09,-1.0739164085185e-08,1.11504323375486e-08,-3.05168787656063e-09,6.59152805092896e-10,-1.65119405185886e-08,-1.72335091745772e-09,2.90930928482227e-08,-4.97827080403868e-08,-8.63511309694427e-09,-1.88375932282476e-08,8.78210223990253e-09,-2.95599860774636e-08,-1.45477306460222e-08,-2.00561458739618e-08,-8.00355785125857e-09,-9.90452783959509e-09,1.53561608580688e-08,-1.21970616284808e-08,-3.02465312882742e-08,3.81598690605934e-08,3.76625379979949e-09,-2.42860347921459e-08,-5.00166643381156e-09,4.22579088669923e-08,-2.4845712721888e-08,3.41669815334415e-09,2.84874933902044e-11,1.26337998464167e-09,2.34095539530467e-09,-6.67695596957741e-10,8.13494757203515e-10,9.26226362648345e-11,7.01283479609966e-10,1.92851431857627e-10,2.23572446740704e-11,6.2902879263229e-11,1.28726743543499e-10,8.15008367427864e-11,6.20531615875537e-11,5.53905780844201e-10],"Archive1109_field8":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140.419534610028,140.911357154027,141.065753838084,141.61363355401,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140.419528192218,140.911356915028,141.065754459076,141.613636052072,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140.419534609665,140.911357154141,141.065753837969,141.613633554368,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.56200900822776e-05,-3.46695623652909e-05,0.013513598870891,0.846299464533578,3.20098136468368,5.484649099497,6.80977229599241,8.66909601784621,10.2064288342969,10.4953102162112,9.67112503442936,10.2557133868828,12.6557202761623,14.7828227186168,17.1441444590667,20.1659640977743,24.7941530417335,26.266945605222,29.0419155654328,38.9224744358529,51.0666512074691,79.8581878326468,135.588461345871,141.081825280906,141.164577237667,139.812703429958,92.657379695924,56.4999666519722,45.8850892808617,45.4274969090162,44.6800739316475,36.4841550947636,27.272797455918,17.7217495891702,11.1496931363466,8.89582142100036,7.41884215272286,5.45138773764108,3.92915378612568,3.08430377946493,2.5456310032649,2.08770741331027,1.73316141450152,1.46817256112552,1.26753344258705,1.16296264404585,1.26463151129733,1.36291400263578,1.00305773237664,0.307413818841296,-0.0362788816506405,1.56200907018354e-05,-3.46695639516302e-05,0.0135135989192255,0.846299453936298,3.20098141905953,5.4846488184654,6.80977203888487,8.66909513000026,10.2064286843775,10.4953103412008,9.67112497031149,10.2557130734983,12.655719994283,14.7828224187057,17.1441447339383,20.1659638237829,24.7941541003485,26.2669460815024,29.0419155234547,38.9224757805682,51.0666494654407,79.8581866312945,135.588465828355,141.081825269003,141.164576974253,139.812702519698,92.6573840122037,56.4999688773845,45.8850875153115,45.4274986217594,44.6800760435942,36.4841532890091,27.2727973728021,17.7217475941656,11.1496934511982,8.89582158349759,7.41884211140171,5.4513876555042,3.92915364228277,3.08430380417552,2.5456310342465,2.08770738451722,1.73316137257504,1.46817258367374,1.26753345788252,1.16296260443294,1.26463146314863,1.36291400542005,1.00305773993359,0.307413818540252,-0.0362788807349878,1.56200916114378e-05,-3.46695672213728e-05,0.0135135988702644,0.846299464536281,3.20098136468781,5.48464909949922,6.80977229599213,8.66909601784439,10.2064288342958,10.4953102162168,9.67112503442094,10.2557133868742,12.6557202761659,14.7828227186158,17.1441444590652,20.165964097771,24.7941530417348,26.2669456052349,29.0419155654293,38.9224744358465,51.0666512074407,79.8581878326778,135.588461346034,141.081825280721,141.16457723783,139.812703429847,92.6573796958833,56.499966652031,45.8850892808646,45.4274969090049,44.6800739316513,36.4841550947668,27.2727974559146,17.7217495891759,11.1496931363477,8.89582142099496,7.41884215272349,5.45138773764324,3.92915378612501,3.08430377946436,2.54563100326582,2.08770741331035,1.73316141450154,1.46817256112577,1.26753344258689,1.162962644045,1.26463151129974,1.36291400263713,1.00305773237416,0.307413818840402,-0.0362788816476516,2.53785752999105e-05,-5.58274053876196e-05,0.0226467246920885,1.46497658595425,5.49221217268569,9.44728627800342,11.9745444401015,14.7197265557844,16.9298587138268,17.6966003760088,17.1230679408063,18.049493279368,21.305440153744,24.8770436193126,28.9186528419852,34.0441153078966,40.8517962009079,45.7131355598949,52.1847577256667,65.5512480551126,83.628128019059,109.129398796966,135.66038433176,141.028694115547,141.173060183092,140.118768607585,122.274037698739,96.9104974075416,80.6612452108524,76.4830644686024,72.6820552678222,61.3517691170518,46.6926333136117,31.648159701876,20.6980403917799,15.800520316479,12.7064656866545,9.48948189718312,6.92081568658372,5.3665954460392,4.37287764938388,3.58356803482477,2.97124610076302,2.51700736744534,2.1891635146826,2.02353323293678,2.14068598170035,2.23209677897597,1.68212821082162,0.550291423412482,-0.0654050647035187,2.53785761175213e-05,-5.58274057124307e-05,0.0226467247181058,1.4649766223337,5.49221198156817,9.44728616616151,11.9745444457316,14.7197307495415,16.9298589176241,17.6966000000675,17.1230686385209,18.049493648476,21.3054386291332,24.8770445918958,28.9186530479953,34.0441147864724,40.8517986326609,45.7131346156501,52.1847581133212,65.5512479498031,83.6281299016108,109.129401087136,135.660382111769,141.028694271858,141.173060575161,140.118768691171,122.274038813344,96.9105024523781,80.661243239291,76.4830633316591,72.6820519984237,61.3517784469346,46.692629986167,31.648162455471,20.6980399365277,15.8005205538323,12.7064658150814,9.48948216296537,6.92081584841454,5.36659538687633,4.3728775230273,3.58356807226444,2.971246119041,2.51700736794289,2.18916352945971,2.0235332965833,2.14068599795363,2.2320967877689,1.68212822159363,0.550291457947419,-0.0654050625548768,2.53785766199297e-05,-5.58274094190867e-05,0.0226467246900766,1.46497658595667,5.49221217269111,9.44728627800523,11.9745444400999,14.7197265557838,16.9298587138269,17.6966003760123,17.1230679407948,18.0494932793614,21.3054401537482,24.8770436193113,28.9186528419832,34.0441153078954,40.8517962009109,45.7131355598989,52.1847577256634,65.5512480551067,83.628128019058,109.129398797,135.660384331792,141.028694115536,141.173060183114,140.118768607561,122.274037698711,96.9104974075425,80.6612452108653,76.4830644685995,72.6820552678283,61.3517691170527,46.692633313606,31.6481597018761,20.6980403917812,15.8005203164785,12.7064656866559,9.48948189718339,6.9208156865831,5.3665954460397,4.37287764938516,3.58356803482479,2.97124610076311,2.51700736744561,2.18916351468226,2.02353323293598,2.1406859817037,2.23209677897828,1.68212821081752,0.550291423411442,-0.0654050646997814,3.15209563329386e-05,-6.89442844138425e-05,0.0285934163256242,1.89986245652659,7.07088038736791,12.1883210613179,15.6151103093354,18.7708133061808,21.2377602808525,22.4144098182241,22.3684994658482,23.5384523072072,27.0633799454106,31.5106809801972,36.7005771847847,43.1648109817871,51.336047772906,59.050567721099,68.5271353107423,83.4079795535263,102.213462387076,122.391006339147,136.902742939094,140.995682865175,141.228210977533,140.715640926421,133.653580804305,118.739442001359,104.315367442191,97.0409210718029,90.7629088615902,78.2341091650422,61.0139524159201,42.6723773578757,28.5116357038972,21.1375015102323,16.5747959757048,12.4625390887283,9.14198626536982,7.01498416176896,5.65456774079751,4.62120116080198,3.82322872281279,3.23489777758218,2.82763012176562,2.62587573436922,2.71555135095315,2.76372288015234,2.13982799345894,0.740619515160182,-0.0881251539260279,3.15209573666955e-05,-6.89442836160975e-05,0.0285934164992193,1.89986238508733,7.07088046657859,12.1883207830872,15.6151102439743,18.7708107131475,21.2377605628513,22.4144094266775,22.3684982785783,23.5384520839305,27.0633804825128,31.5106807187623,36.7005771364102,43.1648108392274,51.3360491434634,59.0505689119509,68.5271363702953,83.4079778896838,102.213467288937,122.39100761332,136.902746181055,140.995682979767,141.228210422958,140.715640738744,133.653568463389,118.739438916996,104.315375113952,97.0409245779029,90.7629107820732,78.2340983175367,61.0139544091095,42.6723776607105,28.511636516582,21.1375016394439,16.5747960341755,12.4625389511598,9.1419860343133,7.01498415778618,5.65456784028341,4.62120118047158,3.82322866844029,3.23489776899149,2.82763012582124,2.62587569965713,2.71555137296206,2.76372286338114,2.13982796117149,0.74061952348331,-0.0881251506459066,3.15209576919322e-05,-6.89442885763369e-05,0.0285934163228973,1.89986245652906,7.0708803873739,12.1883210613195,15.6151103093334,18.7708133061809,21.2377602808531,22.4144098182266,22.3684994658349,23.5384523072011,27.0633799454151,31.5106809801964,36.7005771847828,43.1648109817867,51.3360477729084,59.0505677211003,68.5271353107391,83.4079795535234,102.213462387088,122.391006339171,136.902742939099,140.995682865178,141.228210977548,140.715640926412,133.653580804289,118.739442001341,104.315367442195,97.0409210718055,90.7629088615991,78.2341091650425,61.0139524159112,42.6723773578713,28.5116357038969,21.137501510235,16.5747959757078,12.4625390887276,9.14198626536901,7.01498416177026,5.65456774079926,4.62120116080203,3.82322872281285,3.23489777758247,2.8276301217653,2.62587573436854,2.71555135095731,2.76372288015592,2.13982799345295,0.740619515158912,-0.0881251539216341,3.49295149431385e-05,-7.60414523993014e-05,0.0321516295592385,2.18989818413549,8.1121583057752,13.9944225328107,18.0131685148367,21.3387956928524,23.8703429399417,25.3108369095189,25.7581268830676,27.1014001991796,30.700733664779,35.7438337215185,41.6851040716271,49.0028494796222,58.0953772157463,67.8050686547468,79.3596276188408,94.7968096619306,112.840836049761,129.056955192513,138.133679277354,141.011865948535,141.332094452837,141.172034042399,138.319437316971,129.737856046254,118.571151275917,110.201920805118,102.543696635257,89.9347555070627,71.8808666993751,51.5993784347887,34.9156547438954,25.3179507445713,19.4920759456717,14.6975094097637,10.7984666033621,8.20092910954821,6.54557836202312,5.32838975043051,4.3932260389595,3.70450289231815,3.2430037851876,3.02016770837542,3.06765278021226,3.07252135687939,2.45479924290857,0.890594442037088,-0.105459904438032,3.4929516141985e-05,-7.6041451459875e-05,0.0321516295352215,2.1898982318536,8.1121584568738,13.9944226643903,18.0131689441749,21.3387957810119,23.8703429504234,25.3108369102618,25.7581269210607,27.1014003443598,30.7007333323872,35.7438346860745,41.685103836076,49.0028495571929,58.0953768111103,67.8050667014387,79.3596279895608,94.7968084373067,112.840832994506,129.056956740983,138.133681438043,141.011865765867,141.332094694325,141.172034114346,138.319441464295,129.737862452709,118.571148059211,110.201920329994,102.543700482073,89.9347615514096,71.8808672054517,51.5993812534336,34.9156542437358,25.3179508877535,19.4920760930773,14.6975091543528,10.7984672459778,8.20092916390204,6.54557838794851,5.32838977511916,4.39322600898744,3.70450290520944,3.24300378104912,3.02016771288007,3.06765279122823,3.07252137489391,2.45479932295613,0.890594438784265,-0.105459901644728,3.49295164179381e-05,-7.60414570860995e-05,0.0321516295562177,2.18989818413846,8.11215830578113,13.994422532812,18.0131685148348,21.3387956928529,23.8703429399425,25.3108369095207,25.758126883053,27.1014001991732,30.7007336647841,35.7438337215183,41.6851040716253,49.0028494796222,58.095377215748,67.8050686547472,79.3596276188389,94.7968096619301,112.840836049778,129.056955192529,138.13367927735,141.011865948536,141.332094452848,141.172034042403,138.319437316962,129.737856046232,118.571151275913,110.201920805121,102.543696635269,89.934755507063,71.880866699364,51.5993784347808,34.9156547438923,25.3179507445757,19.4920759456766,14.6975094097628,10.7984666033609,8.20092910954995,6.54557836202536,5.32838975043065,4.39322603895944,3.70450289231826,3.24300378518753,3.02016770837494,3.06765278021728,3.07252135688459,2.45479924290041,0.890594442035394,-0.105459904433301,3.63906305184129e-05,-7.88806343759959e-05,0.0340112002992067,2.36704600249607,8.75208644734665,15.1159002455182,19.494152209738,22.8744997854746,25.3873293710495,26.9503234640934,27.7429568180045,29.2087767092286,32.9097777668059,38.4064833707503,44.8159802393893,52.6837008878061,62.4006099064738,73.404742314895,86.2677746678161,101.854948612711,118.944785977259,132.580886614401,138.995854034602,141.074993115625,141.444341710628,141.439695306279,140.292066948624,135.210705347405,126.640126835016,118.326689278503,110.247182665083,98.1907855516269,80.2729647546785,58.9482916733395,40.2433555687189,28.6593675439339,21.7543059271038,16.4258059145756,12.0648142671505,9.07250130080793,7.17606558282259,5.81615175431218,4.77605426284895,4.00560259566815,3.49440002783458,3.25608594021534,3.26392553731781,3.24176808022816,2.6788371894776,1.01070484539338,-0.118464902217332,3.63906317976427e-05,-7.88806331299589e-05,0.034011200237133,2.36704601081107,8.75208639775209,15.115899791715,19.4941521503158,22.8745000862574,25.3873292768154,26.9503237792423,27.7429572304057,29.2087768054512,32.9097781642064,38.4064824858049,44.8159813454029,52.6837003002159,62.4006117236465,73.4047421536457,86.267775747606,101.854947030629,118.94478747404,132.580884492318,138.995853263591,141.074993943621,141.444341324385,141.439695459104,140.292062821035,135.210703137832,126.640129328104,118.326689130673,110.247176674409,98.1907830835691,80.272963573817,58.9482918892534,40.2433577390556,28.6593674864077,21.7543061115225,16.4258060477996,12.0648135436279,9.07250125276652,7.176065538369,5.81615173043267,4.77605423183423,4.00560257494002,3.49440002436989,3.2560859263342,3.26392553541594,3.24176807695153,2.67883719984561,1.01070482221442,-0.118464898432304,3.63906320400509e-05,-7.88806393404232e-05,0.0340112002961198,2.36704600249971,8.7520864473522,15.1159002455192,19.4941522097363,22.8744997854753,25.3873293710502,26.9503234640945,27.742956817989,29.2087767092221,32.9097777668121,38.4064833707497,44.8159802393876,52.6837008878064,62.4006099064748,73.4047423148952,86.2677746678159,101.854948612712,118.944785977276,132.580886614412,138.995854034594,141.074993115626,141.444341710633,141.439695306293,140.29206694862,135.210705347383,126.640126835006,118.326689278504,110.247182665096,98.1907855516276,80.2729647546665,58.9482916733293,40.2433555687128,28.6593675439385,21.7543059271104,16.425805914575,12.0648142671491,9.07250130080959,7.17606558282518,5.81615175431243,4.77605426284883,4.00560259566749,3.49440002783477,3.25608594021518,3.26392553732385,3.24176808023508,2.67883718946731,1.01070484539102,-0.118464902212566,3.68666317727562e-05,-7.96016973334837e-05,0.034777454020664,2.45559926265532,9.08311337850205,15.7407398217572,20.3423913546538,23.7362987791646,26.2075717369932,27.7983758877365,28.7771692305356,30.3628798914728,34.2326050255976,40.027725068572,46.7125328395833,54.9244331289347,65.0378152937549,76.8329155426196,90.4645379490002,106.033508996704,122.325050833162,134.404994545893,139.507675187122,141.148319727053,141.533438818553,141.57550865135,141.12377045848,137.999938855907,131.208578291915,123.274101829965,115.276746063752,104.050334798355,86.7701581778956,65.0038627661019,44.6873649629851,31.3406618512241,23.5245587690644,17.7790521375678,13.0479536027008,9.72576516646538,7.6336364475435,6.16212510323177,5.04106270256659,4.20540724527812,3.64151162368428,3.38029502031492,3.35873430349063,3.32906277444186,2.84135113067951,1.1086764465947,-0.128046969274981,3.68666329603835e-05,-7.96016955573693e-05,0.0347774541113643,2.45559921237403,9.08311360497569,15.7407402184728,20.3423914358977,23.736298520421,26.2075717382064,27.7983758214447,28.7771690522741,30.3628800844276,34.2326036871495,40.0277248693087,46.7125320542193,54.9244338832243,65.0378154216258,76.832915884343,90.4645376175065,106.03350916444,122.325049379095,134.404996729248,139.507677011003,141.148319241379,141.533438935001,141.575508779912,141.123770916398,137.999939329112,131.208574790995,123.274103099631,115.276747188222,104.050337420077,86.7701546019501,65.0038625059922,44.687363019572,31.3406623305086,23.5245579748976,17.7790521771902,13.0479544721366,9.72576526327829,7.63363646978576,6.16212518356888,5.04106271039007,4.20540727084239,3.641511615692,3.3802950370038,3.35873429245366,3.32906277642119,2.84135115743258,1.10867645436812,-0.128046965690801,3.68666331026118e-05,-7.96017020840341e-05,0.0347774540175077,2.45559926265945,9.08311337850731,15.7407398217579,20.3423913546522,23.7362987791654,26.2075717369936,27.7983758877369,28.7771692305193,30.362879891469,34.2326050256041,40.0277250685703,46.712532839582,54.924433128935,65.0378152937555,76.83291554262,90.464537949001,106.033508996706,122.325050833178,134.404994545901,139.507675187112,141.148319727054,141.533438818556,141.575508651365,141.123770458479,137.999938855888,131.208578291901,123.274101829965,115.276746063767,104.050334798356,86.770158177884,65.0038627660909,44.687364962977,31.3406618512278,23.5245587690718,17.7790521375677,13.0479536026991,9.72576516646666,7.63363644754618,6.1621251032321,5.04106270256659,4.20540724527692,3.64151162368284,3.3802950203157,3.35873430349752,3.32906277445014,2.84135113066789,1.10867644659136,-0.128046969270246,3.70068702922419e-05,-7.96094963699664e-05,0.0348588904697857,2.4726330854639,9.16291762162086,15.9899444772695,20.7532117944921,24.1625118160133,26.6067507113733,28.192742859354,29.2638696652364,30.9638842631182,34.9662001103029,40.8930687270446,47.7283839866305,56.1225861267136,66.4429260581457,78.6603158141487,92.6881733562544,108.177791161258,123.896983484469,135.190826395879,139.760349110838,141.202236356434,141.586946939477,141.627428691541,141.457655683847,139.453114734144,133.896248074294,126.32764183937,118.539033965804,108.172295604946,91.7382235939338,69.9177759691804,48.3253113536025,33.4391133309491,24.8830439911604,18.8238534916906,13.8012627713576,10.2103421167269,7.96527887847428,6.40915816391411,5.2267728909,4.34272878267478,3.73235524877752,3.43830912606303,3.39383447540089,3.37051375765421,2.95835575356765,1.1896040968205,-0.134892679374926,3.70068716378192e-05,-7.96094945248254e-05,0.0348588905555193,2.47263309387813,9.16291769995619,15.9899443449191,20.7532119215591,24.1625118430973,26.6067506936578,28.1927429076355,29.2638697297234,30.9638843590526,34.9662006751777,40.8930686832674,47.7283843563574,56.1225862138306,66.4429246538389,78.6603162218626,92.6881747703604,108.177788534167,123.896987223098,135.190824635895,139.760348355863,141.202236662727,141.586947013637,141.627428524371,141.457655714929,139.453115428794,133.89624999221,126.32764202676,118.53903679953,108.17228872838,91.7382262000576,69.9177761291478,48.3253115006741,33.4391123398711,24.8830440365273,18.8238534138278,13.8012623982401,10.210342005796,7.96527889981615,6.40915809688602,5.22677284404274,4.34272877223456,3.73235522179642,3.43830911988104,3.39383448095643,3.37051375704631,2.95835573428613,1.18960410132221,-0.134892676803242,3.70068718034674e-05,-7.96095008822515e-05,0.034858890466443,2.47263308546817,9.16291762162625,15.98994447727,20.7532117944904,24.1625118160141,26.6067507113732,28.1927428593531,29.2638696652218,30.9638842631178,34.9662001103084,40.8930687270422,47.7283839866297,56.1225861267139,66.442926058146,78.6603158141492,92.6881733562557,108.177791161259,123.896983484485,135.190826395885,139.760349110827,141.202236356435,141.58694693948,141.627428691555,141.457655683848,139.453114734129,133.896248074279,126.327641839366,118.539033965819,108.172295604948,91.7382235939235,69.9177759691697,48.3253113535933,33.4391133309518,24.8830439911678,18.823853491691,13.801262771356,10.2103421167278,7.96527887847679,6.40915816391451,5.22677289090001,4.34272878267419,3.73235524877366,3.43830912606369,3.3938344754103,3.37051375766221,2.95835575355674,1.18960409681563,-0.134892679370077,3.70330877446669e-05,-7.93106148466625e-05,0.0344558485638152,2.42911313030393,9.02542507545242,15.9294779199477,20.8348994720484,24.2842698988604,26.7348863602679,28.3285163711629,29.4525001567715,31.2272796960343,35.2420930544791,41.1561103777675,48.0524383223396,56.4883922481659,66.8502024913623,79.1985983453776,93.3441740439769,108.747588937186,124.10609805924,135.227674437693,139.81476753757,141.224073743445,141.6083222894,141.640075255199,141.574168506337,140.199244615363,135.502254507147,128.216745796594,120.604056888852,110.991506090994,95.4241457073918,73.7723141619413,51.1650833588422,34.9725715970775,25.8651164722692,19.5909578364556,14.3472639296943,10.548386184864,8.19322518468811,6.57765310789986,5.35166345020449,4.43378514071843,3.79070711868411,3.46404759079099,3.40296945361356,3.38611514461187,3.03966742094569,1.25654653678315,-0.139466741988347,3.7033089237406e-05,-7.93106130494546e-05,0.0344558485034076,2.42911313212512,9.02542504717835,15.92947745899,20.8348993594486,24.2842700127934,26.7348861963847,28.3285163363119,29.4525002365054,31.2272797644942,35.2420922137379,41.1561106312061,48.0524381329409,56.4883923527305,66.8502040505109,79.1985979527314,93.3441756892156,108.747590366039,124.106097206084,135.227674979038,139.814769347239,141.224073789322,141.608322246066,141.640075240986,141.574168570996,140.1992444246,135.502252919147,128.21674745523,120.60405506691,110.991508974116,95.4241473414882,73.772313002553,51.1650823505207,34.9725732258362,25.8651164879363,19.590958063731,14.347264126319,10.5483862324651,8.19322516339196,6.57765313610946,5.35166343647815,4.43378515733783,3.79070713519478,3.4640476129549,3.40296945142538,3.38611514438174,3.03966741915787,1.2565465170811,-0.139466741591312,3.70330894972427e-05,-7.93106193238806e-05,0.0344558485601348,2.42911313030795,9.02542507545833,15.9294779199484,20.8348994720463,24.2842698988613,26.7348863602675,28.32851637116,29.4525001567606,31.2272796960345,35.2420930544835,41.1561103777653,48.0524383223388,56.4883922481661,66.8502024913626,79.1985983453781,93.3441740439788,108.747588937187,124.106098059255,135.227674437699,139.814767537557,141.224073743448,141.608322289401,141.64007525521,141.574168506338,140.199244615352,135.502254507133,128.216745796588,120.604056888865,110.991506090996,95.4241457073834,73.7723141619316,51.1650833588327,34.9725715970792,25.8651164722763,19.5909578364563,14.3472639296928,10.5483861848646,8.19322518469039,6.57765310790027,5.35166345020454,4.43378514071825,3.79070711868159,3.46404759078939,3.4029694536232,3.38611514462152,3.03966742093683,1.2565465367764,-0.139466741983256,3.69914951632299e-05,-7.87520850259654e-05,0.0336363370311998,2.33112162437228,8.68846865221802,15.583302720934,20.6312731886564,24.1586744225602,26.6570473469015,28.2895354405784,29.4437292393266,31.2401910787637,35.1304524419681,40.8974303272974,47.7792848716604,56.1308554252089,66.3809767287958,78.6105200159684,92.6281616038747,107.972541330715,123.128752825067,134.563458113968,139.67941262519,141.208517233282,141.609625211367,141.641763484314,141.603695325227,140.551951756846,136.402351563112,129.292357970886,121.794387030706,112.794717316247,97.9958008303806,76.6085054806961,53.1701664906139,35.9217870487578,26.4818952902423,20.0906944468605,14.6910785232088,10.7469707089672,8.32649019189924,6.67600494487576,5.42331069086985,4.48514459692423,3.82265027341002,3.4742076187568,3.40525998288845,3.38928063912149,3.0919525612072,1.31126103611414,-0.142079524407893,3.69914957411747e-05,-7.87520798727199e-05,0.0336363369666605,2.33112166066998,8.68846857428154,15.5833040027586,20.6312731037637,24.1586745035636,26.6570472948002,28.2895356746895,29.4437290908794,31.2401906638875,35.1304542267508,40.8974309064981,47.7792847074643,56.1308541987126,66.380977334478,78.6105212979186,92.6281570121436,107.972536457854,123.128750365733,134.563457961837,139.67941127331,141.2085171273,141.609625175209,141.641763569209,141.603695527496,140.551954196713,136.402351847706,129.292354510278,121.794389392806,112.794717288678,97.9957999481767,76.6085050974372,53.1701684254097,35.9217846702989,26.4818948116906,20.0906939914428,14.6910785114562,10.7469708793051,8.3264901404581,6.67600492350871,5.4233106212758,4.48514460738542,3.82265025566992,3.47420762254591,3.40525998515814,3.3892806420717,3.09195256418649,1.31126103100583,-0.142079525567038,3.69914943042596e-05,-7.87520805131774e-05,0.0336363370261708,2.33112162436933,8.68846865222125,15.5833027209359,20.631273188656,24.1586744225598,26.6570473469022,28.2895354405766,29.4437292393218,31.2401910787655,35.1304524419678,40.8974303272995,47.7792848716596,56.1308554252088,66.3809767287959,78.6105200159688,92.628161603875,107.972541330717,123.128752825069,134.563458113976,139.679412625187,141.208517233279,141.609625211369,141.641763484314,141.60369532523,140.551951756843,136.402351563107,129.292357970877,121.794387030713,112.79471731625,97.9958008303764,76.6085054806937,53.1701664906027,35.9217870487596,26.4818952902471,20.0906944468617,14.6910785232074,10.7469707089677,8.32649019190076,6.67600494487586,5.42331069086993,4.48514459692442,3.82265027340973,3.47420761875533,3.40525998288969,3.38928063912205,3.09195256122563,1.31126103608848,-0.14207952439737],"Archive1109_field9":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-21.0451600109923,-7.25432056838946,-2.69185688112061,2.44774668724712,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-19.6988949234747,-8.40229542668864,-2.19230364690166,2.65936313258704,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-17.9439614089749,-8.88900072876253,-2.23573601616207,2.98501025565612,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-3.12736998143903e-05,0.000328255197464482,-0.00768013343321106,-0.445867624015926,-1.64732476543005,-2.45193447465609,-2.22632900854483,-1.89427725643579,-1.905754101218,-1.78927325621357,-1.16283041573105,-0.928545419806019,-1.55658778229666,-2.24816442342616,-2.70540918067152,-3.58873555341431,-5.37211840790884,-6.95932136112877,-6.2892175655018,-6.30837332161633,-9.44298194982237,-23.1296374621149,-39.2177236180335,-1.42329238240658,-4.73331269576681,9.75786980189029,15.924757075828,-6.82653124341914,-1.70675882756453,-1.3660857988807,-3.63445368555712,-4.93854970314668,-3.62522684082208,-2.29867615498841,-0.836770064395648,-0.20472021990169,-0.298808021695747,-0.314684649566865,-0.125255893369537,-0.0722550622594225,-0.0932927289012238,-0.0891716083787219,-0.0722638238649525,-0.0651813003472735,-0.0559134359700445,-0.0530604233801487,-0.0728937425446641,-0.0797564177144874,-0.0440806575359429,-0.00947599278991015,-0.000641393537441297,-0.000270005597373639,0.000311859088573469,-0.00413089821452104,-0.45457460590431,-1.65781868586218,-2.44465207104444,-2.19414497240954,-1.9108146835594,-1.93253431633425,-1.77155065588673,-1.12751408522399,-0.962382095452427,-1.5795410265141,-2.20779148649869,-2.7278635660766,-3.51099221793243,-5.57416892897978,-6.83871464929468,-6.19824117349578,-6.4244569945114,-8.27658039222383,-27.2078273207878,-32.1683245925795,-6.30091838520756,-4.52195968602114,14.3312123716015,10.3669445592866,-3.69532136621217,-2.31866225869151,-1.40557364013019,-3.80499689933065,-4.71643338533246,-3.74353257881547,-2.26182554561646,-0.794735968748199,-0.242509839110108,-0.312166694410075,-0.292202575814203,-0.128888694490248,-0.0770054363804259,-0.0922098821983231,-0.0876117598668219,-0.0732940402149113,-0.06521335818931,-0.054710381291124,-0.0541962587641339,-0.073993015521188,-0.0773639151657615,-0.0447223361181709,-0.0105432184538024,0.000675969038231458,0.000376339877977265,-0.0018495131240861,0.00130738495755647,-0.455601580888858,-1.66905745362808,-2.45868891907512,-2.16278646747201,-1.89773109584411,-1.96069637958894,-1.78719902675727,-1.08428775203635,-0.958110668204249,-1.63047721839866,-2.16579754229478,-2.78578387282127,-3.36450523295648,-5.72746726411068,-6.93009789525371,-5.79660535106833,-7.52178772006949,-5.02538252581221,-32.6822411397121,-26.114029488338,-6.99547629333945,-8.36189045551652,20.3908207400816,6.35111476517226,-2.8987762618938,-1.94173687730696,-1.39363716064969,-4.07513583611579,-4.56772392106304,-3.77228786827958,-2.2860474736308,-0.739537143299841,-0.244750696920406,-0.343770118791034,-0.281737205246042,-0.122151303773241,-0.0807884669132021,-0.0940570644455879,-0.0859845191864139,-0.0732978004301189,-0.0661000642301496,-0.0535287845915757,-0.0538933531806362,-0.0762640719783217,-0.0759022200786752,-0.0437277537397109,-0.0121668632049456,0.00193718912407125,-7.05625757559392e-05,0.00110625142546387,-0.0172951758943455,-0.832950067730808,-2.99201948044403,-4.35146023186755,-4.01236877876668,-3.42004662232875,-3.29319310894984,-2.98109094753533,-2.02066025928581,-1.83099134468557,-3.01605177898385,-4.15917300456382,-5.00026242138508,-6.64867093686654,-9.44797329885827,-12.3105743022052,-12.2495308948519,-12.8061028624298,-18.7552534690401,-35.7056467205493,-46.3126469020725,-0.155832072559131,-5.11860871221248,12.3468374502513,22.8484223064321,-5.89855829230425,-2.91607711606812,-2.46064161255496,-5.442446181667,-6.99045866288474,-4.88797861428989,-2.91105416846115,-0.975197325710104,-0.161342059417926,-0.29126719438194,-0.319999582415199,-0.0879526127482333,-0.0555450868346435,-0.110762045314046,-0.113778331727044,-0.0971591995041603,-0.0940791493373749,-0.0870862579324329,-0.0954415273955996,-0.140372178111408,-0.138719961916044,-0.0570935694322658,-0.00445131334397851,-0.00547771880927894,-0.000972111665322702,0.00146539719797899,-0.00684097363975839,-0.859259953170288,-3.00566030255034,-4.32610637074603,-3.97480833860628,-3.44583303722713,-3.33103940766494,-2.94447923586575,-1.96867517612041,-1.90385230953656,-3.03485833552117,-4.09502011554966,-5.03267562388702,-6.56950436543336,-9.68735936365875,-12.1635573168065,-12.1109566310576,-12.8691927015872,-17.6622862091681,-40.4734678178658,-37.8173791717662,-6.05720457033294,-5.05397382918929,17.9989670511871,16.3788450958199,-2.67636067873945,-3.29613095068003,-2.60844713057768,-5.64205636824691,-6.70105290656434,-5.03717762803908,-2.88387819077608,-0.910015397269007,-0.208438790994085,-0.310235970369813,-0.289942387457245,-0.0934254053475677,-0.0622818694807526,-0.108406583976514,-0.111708921208821,-0.0987931821632417,-0.0939789416578222,-0.0847110139692828,-0.0983462626972935,-0.142922996153423,-0.132347433102055,-0.0581693058093953,-0.00861574657227917,-0.000727569850753054,0.00076835305589692,-0.005016691823734,0.0109086794543808,-0.868254820559579,-3.03307569306629,-4.33166745434423,-3.92976517960941,-3.43018467470341,-3.37632217068909,-2.96148271113358,-1.88932898077567,-1.92082727758183,-3.10826432433619,-4.03061217887419,-5.09349427825883,-6.40648724019206,-9.87660732171879,-12.2689395445756,-11.6685689811994,-13.9797217178312,-13.984536778103,-47.2183915065594,-30.5323170783986,-6.82775730394132,-9.86155829209192,25.1637907211174,12.0547015179079,-2.20060020422383,-2.7240479602947,-2.57123428507041,-5.99049020973353,-6.50575897315748,-5.05956644850709,-2.93360021430683,-0.839189277931416,-0.206464899556323,-0.351541028818706,-0.2757773753606,-0.0846576410985588,-0.0682850253001265,-0.110401573481479,-0.109116499182181,-0.0988907633531038,-0.0955629064924257,-0.0820811209784859,-0.097943881742085,-0.148595493201515,-0.128735591733734,-0.0542741168560344,-0.0143506305429489,0.00362356021761346,-0.000113097155397414,0.0021573177941908,-0.0280453169082772,-1.17009909264767,-4.10987158485182,-5.85760131373799,-5.42121672159586,-4.61794736552943,-4.31864531453719,-3.81067213375845,-2.65830984163001,-2.60611206373776,-4.29525630229489,-5.8138071426296,-6.98508902143335,-9.24032666951567,-12.7724430899946,-16.6740588202848,-17.476077049254,-18.8107468295274,-26.2560219972023,-43.1478381198853,-49.7514181725358,-0.0837718640596118,-5.13297758744628,13.3204700507457,25.9131331606541,-4.04717274777438,-2.72763211494161,-2.87039628275202,-6.05054811581248,-7.43697473545293,-4.70876874594528,-2.37859937950885,-0.38785677786305,0.239831387725525,-0.0464076315826003,-0.108471133662485,0.0926664968746555,0.0470257363236868,-0.0651136978167576,-0.0868290275124104,-0.082915159854524,-0.0934466088659351,-0.0980340837227644,-0.125169542032295,-0.193958026231521,-0.17608640598002,-0.0498725964765213,0.0120916347394347,-0.0126870442893751,-0.00193970426319725,0.00318697091632006,-0.00894774909396187,-1.21838398391824,-4.12176434493358,-5.81286116746434,-5.38771315782194,-4.64920347864299,-4.36129107805979,-3.75789109858655,-2.59712433004908,-2.71157340846351,-4.30801778055746,-5.73075332529204,-7.02636980524839,-9.16698762398807,-13.0195153289376,-16.5133584180281,-17.3057380492957,-18.8957698389325,-25.2632162316012,-47.9550063183064,-40.9001127517763,-6.26351701044809,-5.16146242169662,19.2592728377767,19.3438369540094,-0.922947271137088,-3.05530300127066,-3.02264368690401,-6.26461809234065,-7.10200072691289,-4.87734634537843,-2.36416097831578,-0.31829503814289,0.190495237032065,-0.0610806384496667,-0.076439523511404,0.084188457110861,0.0396061220729615,-0.0609279722992745,-0.0847430826920583,-0.0850019856447886,-0.093145293336663,-0.0946939807824335,-0.129919382177325,-0.197726997484958,-0.166173639531336,-0.0498715685738345,0.00299885137254377,-0.00310317341091681,0.00107345848700576,-0.00870877755903687,0.0248428445539948,-1.23973730271598,-4.16471017513178,-5.8030270029055,-5.33643226231762,-4.63448252331934,-4.41777233763646,-3.77186505836049,-2.49041738021256,-2.74939153409832,-4.39793637646318,-5.64845716111078,-7.08473944390195,-9.00662051227972,-13.2202049728562,-16.625880609059,-16.8309470240544,-19.9803759112695,-21.6125603196544,-54.9488643435911,-33.2599979867916,-7.04003332789502,-10.2544727082184,26.6223095384195,15.0947012209895,-0.563245604710054,-2.48796543471714,-2.96649194385356,-6.64448537063574,-6.86988583456133,-4.89128469742515,-2.43006032800471,-0.249017578946857,0.189508278069722,-0.100965516441358,-0.0579477061623243,0.0922674768789764,0.0313206715165359,-0.0620489962744264,-0.0813066880988263,-0.0852522827381127,-0.09527039420194,-0.0906655139799464,-0.129746775668545,-0.206279262239273,-0.161530451679621,-0.0411155307341417,-0.00837250088513884,0.00518430580813054,-0.000152769132127262,0.00344207697162844,-0.0399595640473122,-1.4741254144908,-5.0743055795718,-7.07242829362562,-6.51625381599845,-5.54631484981571,-5.07976092041,-4.39979050688476,-3.13623659924794,-3.25778451798321,-5.43241614168168,-7.30861616541931,-8.7575434311723,-11.5306814642134,-15.6732369528456,-20.4507363419625,-22.0996431394948,-24.1257312335691,-32.1996264810761,-47.8706661372172,-51.5894348759858,-0.279265003970368,-5.1102379718291,13.6748037271115,27.3189954343417,-2.45568991093259,-1.83524531832377,-2.56977128241011,-5.86395271741493,-6.91137105576254,-3.60335040048984,-1.05789834200469,0.712649655750396,0.917581695751825,0.386507747165401,0.249515695140073,0.376883790734621,0.216010481130184,0.0290784167962828,-0.0218506278036575,-0.0391329053289727,-0.0702710557375656,-0.0936097061719074,-0.143203695578549,-0.231558935423962,-0.194468910830188,-0.0282594002253423,0.0383720400453033,-0.0217169606997732,-0.0031458889430374,0.00542014109694047,-0.0107386316094667,-1.54896832453941,-5.07879632781654,-7.00913896292967,-6.49217546860831,-5.57939916082569,-5.12467483282177,-4.3350683858539,-3.0670457998947,-3.39073083264047,-5.44277090245871,-7.20509944826686,-8.81007808112566,-11.4607848921442,-15.9215494026141,-20.2820095772378,-21.9100966902366,-24.2663342028484,-31.2400065514009,-52.5934970993393,-42.6967087809753,-6.51914405142551,-5.19337520216223,19.6784801074666,20.7890336754646,0.623055038955225,-2.18147339333248,-2.72431400320765,-6.07401046819049,-6.53804654731043,-3.78043180372051,-1.06504237157105,0.777371547116207,0.872581353496852,0.377843543386882,0.282999740044865,0.364078819927729,0.208689742219265,0.0352673199795593,-0.0198696112363232,-0.0415612470440036,-0.0698219378827318,-0.0896201990907952,-0.149429862293299,-0.236413472370667,-0.181865247659887,-0.0255446328264029,0.0228112268358327,-0.00625380710278552,0.00131607240351653,-0.0129369268724469,0.042849806133637,-1.58797443007691,-5.13484329527736,-6.98005213078458,-6.43998184158441,-5.56639924662798,-5.18782526203277,-4.34692868841907,-2.93797114597961,-3.44445824128287,-5.55102586444435,-7.10368918949211,-8.86772635557982,-11.3052988697347,-16.125776572767,-20.4016942111885,-21.3985402444603,-25.3647293662578,-27.6673552217022,-59.5617901143449,-34.9741133801079,-7.28986927381754,-10.371534964331,27.0442893040825,16.6091687189503,0.976147311137068,-1.64245256938811,-2.67892617862263,-6.47088478068536,-6.27326029190685,-3.7761247824435,-1.14533937524013,0.832492979745458,0.868541928788295,0.342507296574204,0.30716387875939,0.370162688778164,0.198103630828103,0.0354188932281074,-0.0156080976258582,-0.0419144313364622,-0.0723291857298196,-0.0845657553818398,-0.149521564857883,-0.247052849236476,-0.177647411348387,-0.0102099858702749,0.00471409702747414,0.00647771393265345,-0.000192816277060709,0.00483336340599812,-0.0522548256099583,-1.74922217612017,-5.92764338561028,-8.10244730270785,-7.40693466194839,-6.28882870692631,-5.6658165938008,-4.83444310475153,-3.50183052174859,-3.80622733829923,-6.45416227983054,-8.69751231481129,-10.3874732534786,-13.6207162061416,-18.3148517760916,-23.8614181988739,-26.2805222762302,-28.8566858337504,-37.068701820036,-51.2307886077488,-52.7356484897758,-0.500103511550281,-5.11785954902083,13.7936929267163,27.9888038251942,-1.27022927703203,-0.724057837226225,-1.81974486443408,-5.22316876265041,-5.92668966261559,-1.99782342299405,0.844772260257336,2.3452859941807,1.90353796041887,0.963399071924935,0.72322478260112,0.753489132237772,0.445671612455265,0.16144184050503,0.0724612624208701,0.0276603981980817,-0.029001371619619,-0.0760057900669331,-0.150415856818959,-0.254611590459857,-0.200045330770671,-0.00065099062981785,0.0725352771571072,-0.0319058533014635,-0.00445726929654149,0.00790113348258785,-0.01236870837678,-1.85194371852382,-5.92275798571124,-8.02202885147987,-7.39323347080427,-6.32227896303505,-5.71148852964185,-4.76158040989647,-3.42501073371355,-3.96082395429898,-6.46757814532539,-8.57187116131672,-10.4513453051304,-13.5530415803437,-18.562869041765,-23.6876261354159,-26.0838289570662,-29.0507960308994,-36.1073716645999,-55.8616384447051,-43.8793970895393,-6.74881671165896,-5.2257796907736,19.7972155624,21.5048314930196,1.80193784638824,-1.09635416911356,-1.98707443530402,-5.430746039702,-5.51478302607624,-2.17385359119569,0.819957494492309,2.39235405280829,1.85885141830949,0.969472219805661,0.757149338931,0.735151930035169,0.438213379894079,0.170370548957455,0.0741574008011872,0.0249923007107122,-0.0284405142632662,-0.0717477778084678,-0.15763684203611,-0.260212329293861,-0.186360725407041,0.00703574557357379,0.048928688213311,-0.00973008657500429,0.00148111520371832,-0.0172462431071861,0.0622796925059013,-1.9103509166543,-5.99036647377678,-7.97360060242884,-7.34169812617633,-6.31131874961244,-5.77822105501419,-4.77269097717783,-3.27834149044978,-4.02387251489763,-6.59686475143049,-8.45167321497326,-10.5084044545021,-13.4021270355854,-18.7687429120414,-23.811399940959,-25.5441512304931,-30.1786058438699,-32.5975317784741,-62.7467450011716,-36.1462543233963,-7.52362769314669,-10.4240755096647,27.1316701966975,17.3588604740727,2.17847691213133,-0.571484264500976,-1.95969550064871,-5.84943862256106,-5.2221900438212,-2.14684386483621,0.737113622087499,2.42838582492321,1.84002546883802,0.943055187874109,0.789672059940155,0.738752479170709,0.424367442127919,0.172256346538307,0.0793289150655406,0.0245733346011446,-0.0311302558591887,-0.0660904407587285,-0.15814202675357,-0.271559448424313,-0.184785965686801,0.030840534951084,0.0233224197442189,0.00758435671957043,-0.000230973935168997,0.00632882739691295,-0.0650842584479385,-2.00650913331524,-6.70647459791907,-8.99825344172201,-8.14898323992062,-6.90204773757833,-6.13187391757209,-5.16496182997228,-3.79125232904833,-4.30646781501557,-7.44780557181306,-10.0321060913083,-11.9236888720513,-15.6045647430298,-20.8128225732898,-27.0620033087145,-30.1707944943694,-33.1561159462333,-41.218990262509,-53.732298327292,-53.4630852333718,-0.705115775013495,-5.14438488395805,13.8276984647168,28.3320752711185,-0.360952343338683,0.464628849781554,-0.822558544320168,-4.30865168866429,-4.63363667394831,-0.0318691840741648,3.16598322724816,4.33654854554105,3.10778180170296,1.65863989813009,1.27874083093702,1.19522892370457,0.719627196362059,0.321874992989632,0.187071780349686,0.110404988505218,0.0251666389355249,-0.0484456785604809,-0.149463247192254,-0.266777588333473,-0.197661177225731,0.0315983053489301,0.113524297248453,-0.0432802965175833,-0.00587630541310552,0.0106077552121426,-0.0138463762373481,-2.13935110882816,-6.68952513680234,-8.90144005688364,-8.1472817364384,-6.93428212023201,-6.17722021002208,-5.0869771115247,-3.70522640772529,-4.48321887091108,-7.46517582361206,-9.88029605879291,-12.0039560685341,-15.5354184828753,-21.0607356075631,-26.8877347978534,-29.9674901831796,-33.4091319950861,-40.223260739854,-58.2862911029746,-44.6714609580528,-6.94260451666943,-5.26268135846695,19.8130334728327,21.8780545394322,2.73076288924847,0.0650987949737689,-1.00915010205243,-4.51437874839123,-4.18508314457009,-0.197124699152916,3.12228788828319,4.35870383940845,3.06335574785943,1.68170833033653,1.31401623393179,1.17045960629205,0.711853080803973,0.333870548816381,0.188462327903176,0.107557996198974,0.025935109520995,-0.0444572261700957,-0.157075389544928,-0.272996101542368,-0.184152424418042,0.0461233874882132,0.0805371482576334,-0.0136693660951642,0.00163041822225594,-0.0218366749791858,0.0836705654011752,-2.21979086549605,-6.76732883185436,-8.83252214217804,-8.09825525813856,-6.92561619993061,-6.2447469857007,-5.09980829601684,-3.54086153049833,-4.55467054455932,-7.61861220543216,-9.73604495029407,-12.0642599849603,-15.388355447541,-21.2650588075635,-27.0201517180351,-29.3962900072199,-34.5858491999693,-36.749680939864,-65.0734327491898,-36.9599756117845,-7.72569732287564,-10.4588622794764,27.1186533514339,17.7364586633743,3.14303915200643,0.586773154710791,-1.00338152606987,-4.95595118507955,-3.87108332088518,-0.140952349982225,3.04282397339258,4.37054231144924,3.02588794950623,1.66480004030437,1.35675261163317,1.17154493078543,0.694220723713991,0.33762414444705,0.194633315594193,0.107032404078373,0.0234425676850086,-0.0387741846870024,-0.157965664542125,-0.283993563820192,-0.187047796194633,0.0799988390453184,0.0467362228780994,0.00837535131184813,-0.000272070396701148,0.00782642891665484,-0.0777394152111505,-2.24453167997511,-7.42262284572674,-9.81806029398313,-8.81608135368224,-7.44088109460251,-6.52975941962598,-5.43633161566584,-4.03993051945165,-4.78766425783679,-8.406704295954,-11.2990243832193,-13.3878744726477,-17.4907177572274,-23.1865903345269,-30.090132545456,-33.830452857546,-37.1346865235112,-44.9051183440008,-55.8604433251953,-54.065127437518,-0.890779234707752,-5.18041204809443,13.8368306572407,28.5130890353945,0.314800881737904,1.60501388694686,0.303442936232507,-3.27890433126227,-3.24718857864036,2.10326794591081,5.82267429699357,6.74430262736424,4.56932898564101,2.44634461985849,1.90859187239223,1.70162522989529,1.03666965615406,0.505362291778773,0.318435617767325,0.205960507887565,0.0895556465497737,-0.0122203042701661,-0.141484215393013,-0.27209238553472,-0.192206017735373,0.0649987673949195,0.159845962511376,-0.0553050373761963,-0.00729149755910191,0.0133213409273492,-0.0152299382950911,-2.40669596840373,-7.39440115521431,-9.70566460799018,-8.82511302045082,-7.47229672777471,-6.57394966842177,-5.35397567222059,-3.94630729967736,-4.98537883365389,-8.42576634807982,-11.1243343493927,-13.4829839210647,-17.4197596353351,-23.4347266592776,-29.9164443136605,-33.6259440009179,-37.4353408762507,-43.8723137133396,-60.3495933746749,-45.3344669290213,-7.11962929434145,-5.29966456205979,19.802692520873,22.0707881955308,3.436280569343,1.19097987652368,0.0885339316697863,-3.4875170763632,-2.76285400986185,1.954489602742,5.77162607656728,6.72977902884743,4.51653121135703,2.49645771003515,1.94420014623929,1.66969186852211,1.02782427041843,0.521268595367563,0.319369147768478,0.202872049570798,0.0907748691785018,-0.00886703058702261,-0.149289496081433,-0.27848763841866,-0.18036434847077,0.0883066648949942,0.11628267008307,-0.0177405176950648,0.00174134519305095,-0.0262915264940187,0.104705117962717,-2.50835193611517,-7.48221172578655,-9.61775121803912,-8.77774173735698,-7.46618377528288,-6.64153364853787,-5.36805950566359,-3.76594540022096,-5.06634693506063,-8.5997045871829,-10.9582014690155,-13.5466467299457,-17.2756796535712,-23.637849034217,-30.0551505496625,-33.0321340864854,-38.656910746086,-40.4231395819263,-67.0481377776489,-37.6443720166346,-7.91621538227413,-10.4887146352426,27.0905835643071,17.9166700096284,3.8785593735175,1.72540544720238,0.0733716395847133,-3.95750796195814,-2.43174934829568,2.03757089605426,5.71068160392437,6.71819453599282,4.44558041012742,2.49284700880855,1.99973771770858,1.66841037823498,1.00520789126468,0.527231563872265,0.326747318585918,0.202051105080052,0.0887972586029353,-0.00334236260073662,-0.150928175885659,-0.287880851351687,-0.189658121656572,0.133752079843417,0.073843743444814,0.00895081933590633,-0.000314022307800798,0.00934036649298496,-0.0903868514791285,-2.46966654324731,-8.09212255469164,-10.5742511056718,-9.42250872758006,-7.92625667121478,-6.88020083440224,-5.66976899278386,-4.26809778276506,-5.26728018817308,-9.35145188494253,-12.5109370658879,-14.7935374874399,-19.3053879817732,-25.4675441547254,-32.9907683234351,-37.3171126744922,-40.8772160251021,-48.2853075270222,-57.7173735062481,-54.5605044814889,-1.06432354971649,-5.21502586097856,13.8412158945844,28.6226784210183,0.872588168114051,2.7251710202779,1.51929282035684,-2.15427061583682,-1.74434917548372,4.41153047418446,8.73278728588463,9.42359096113772,6.20203327674301,3.31060365577566,2.59283672224538,2.25284932514058,1.38377726166588,0.706048507712808,0.461899798535865,0.310645713464374,0.161128745851183,0.0298363266687473,-0.128759137700959,-0.27414967253854,-0.18535523758219,0.101584278001016,0.210745086235335,-0.0679788677801056,-0.00872130161281437,0.0160646642118136,-0.0164956167236054,-2.66130339793976,-8.05245796153647,-10.4465760696195,-9.44220956752913,-7.95674459085371,-6.92260244189276,-5.58355382902502,-4.16756966465028,-5.48707599641017,-9.36833591041619,-12.3160823135641,-14.9033787579143,-19.2317880079625,-25.7159312335786,-32.8201499567869,-37.1098660256951,-41.2261417589895,-47.2073693099153,-62.1491522875739,-45.8935395458505,-7.28168337203335,-5.33246836063849,19.7892721715321,22.1811745022721,4.02762453615572,2.30612878981478,1.26893888369124,-2.36629265795289,-1.22587167416704,4.28303325930626,8.6798028871907,9.36575264195034,6.13773092198067,3.39172953544481,2.6288600869643,2.21323806802506,1.37351697418392,0.726247581542852,0.462341265758176,0.307257511860681,0.16292143083216,0.0324523908260891,-0.136727653160083,-0.280550160687971,-0.175929609280365,0.134812842859094,0.155852389766642,-0.0221194412759646,0.00184854858426448,-0.0307764633944157,0.126037420782521,-2.78435056990513,-8.15005718126994,-10.3398799735351,-9.39652867477932,-7.95341256116707,-6.98950001408838,-5.59894126455671,-3.97098618118156,-5.58067400067136,-9.55913150730725,-12.1286850026164,-14.971387149662,-19.0904654578804,-25.9162830531422,-32.9679834753862,-36.4920451583087,-42.4967285249467,-43.773593839544,-68.7602332263819,-38.2303805296556,-8.09196295161268,-10.5132257431014,27.0668344771676,18.0064547247818,4.49380615772067,2.86437175410471,1.23137573098319,-2.86623797030017,-0.880581375958697,4.39231313817699,8.64545199470429,9.32984242123025,6.02698437190675,3.40263246215245,2.69867901043463,2.20969589663613,1.34534329407898,0.734548842526868,0.471057171898161,0.306048278746734,0.161570233782774,0.0378144571870992,-0.139301626051201,-0.287749704047089,-0.192701493951463,0.192774303145126,0.104467227888752,0.00918097650137715,-0.000360982243186896,0.0107796421355288,-0.102325366154549,-2.67697770701802,-8.7139397013282,-11.2980510961147,-10.0102291950972,-8.38496889664929,-7.20813510774379,-5.88515963721262,-4.48148294718575,-5.72998491686625,-10.2337105874701,-13.6428879658749,-16.1381724370015,-21.0203349664814,-27.6327672580586,-35.7440928372929,-40.6303683206546,-44.4375937036947,-51.4771301277673,-59.5845358775606,-55.1355660662934,-1.22841392165354,-5.25240656992598,13.8458055378596,28.6924938984156,1.3226205147503,3.78902405880088,2.80659167348814,-0.984001126951483,-0.234119939882935,6.79528959435901,11.8724408069088,12.4545876604574,8.04246530779459,4.22863441745002,3.33260426894513,2.85307130700367,1.76145732842866,0.92145438837087,0.6167542491858,0.423703308023676,0.239085063287298,0.0772413236267824,-0.112213860943722,-0.275160860774428,-0.178686675127493,0.139279967629502,0.265210657194282,-0.0807971518959216,-0.0100664470472831,0.0186561489251407,-0.0177004644032941,-2.89525834426865,-8.66575901601468,-11.1559122299073,-10.0378490915911,-8.4158509885108,-7.24861011101442,-5.79403049914484,-4.37771252183888,-5.96817466464014,-10.2463782853202,-13.4353481037441,-16.255839022334,-20.9471704647813,-27.880978439563,-35.5748449178003,-40.4280041363663,-44.8171622769396,-50.3716623794416,-63.9599576248679,-46.5162917572535,-7.44666581555419,-5.36392833523025,19.7799513202074,22.2439597046246,4.50651306792815,3.38154143337606,2.51368403930009,-1.20504016536456,0.319470701945045,6.6860942104896,11.8349093831313,12.3410142981514,7.95676195029111,4.35275238249343,3.36655094410323,2.80534167110957,1.74914484091464,0.946809202571276,0.616452642163798,0.41999283546963,0.241499105523451,0.0792377486078212,-0.120623413517285,-0.281047947726687,-0.172751784260807,0.183646936866917,0.198395970027652,-0.0265105770201319,0.00190564090908839,-0.0348420865305037,0.145440226235351,-3.03666258645369,-8.77367967841544,-11.0333305998074,-9.99173899175154,-8.41516860471113,-7.31590222288021,-5.80809103323074,-4.16849084342175,-6.07472145993753,-10.4472902184894,-13.2346460334909,-16.3244009247675,-20.8085100077956,-28.080979146609,-35.7251079505594,-39.800537141182,-46.1190275146924,-46.9581160129643,-70.4982825805472,-38.8637368943575,-8.275287952922,-10.5390994610978,27.0535274555471,18.0480801426261,4.98246036134231,3.9763998378342,2.45707424073212,-1.74182769971994,0.679354549820818,6.81228713037345,11.844363664038,12.2836451390287,7.78957282209728,4.38363272589675,3.45266123944675,2.79941468822256,1.71430369121453,0.957912722392639,0.626605820746337,0.41834242223261,0.240696349836813,0.0847476738561814,-0.124656562329936,-0.285160130237102,-0.198228982015293,0.254929061772111,0.138007715214828,0.00914620099748563],"Archive1109_field10":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.24667889393782,-0.572286638255877,0.395400903985303,0.95451862753093,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.726029237908571,-0.254526303162718,0.578987478809858,0.486387165573512,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.24668633762718,-0.572275017196135,0.395409926368125,0.954530695730926,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4.41906267424448e-05,0.000494238932780264,0.00302992639876929,-0.00242876449542753,-0.00246345987661262,-0.000100699044579341,0.00368340243694538,-0.00116487128197071,-0.000951311729257982,0.000159482262386195,0.00241411752014386,-0.00188987195676739,-0.000239821235375006,-1.23980167507879e-05,0.00137137832352403,-0.00104413065445807,-0.00339926004662675,0.00104244591889753,-0.000621142253276391,0.0128962618852755,-0.0412983845530098,-0.00295648280794432,-0.137798660057688,0.0704929788504179,-0.0522559899003584,0.00249549844966055,0.0168716557216046,-0.0384246334202928,0.0298740361094634,-0.00575610675082845,-0.00738115291881679,0.00445481217906184,-0.00201329082742031,-0.000387443429599063,0.0031635218673313,-0.000776465528682892,-0.00229590771204033,0.00114916026073743,0.000473869191101291,-0.000530493340576806,-2.10569611154135e-05,0.00019788009664225,-0.000174825076570464,0.000115686693691426,-2.12654150892169e-06,0.000126270893404458,-0.00123658564390318,0.00154684627702654,-0.00127195046105558,-0.00219178816725084,-0.0662724641843315,2.12318311728298e-05,-0.000247239655543549,-0.00305447158112244,0.00252434747217735,0.00225141272952327,0.000361531008890705,-0.0036170286701241,0.000963876572903528,0.00089862678535053,-1.37003859124213e-05,-0.0024147767740148,0.00173211824722901,0.00024001159567422,-0.00015300142729145,-0.00136568004503069,0.000349951006766111,0.000836099831392696,0.000258157734762769,-0.00691795669749816,-0.0138273372972577,0.0168953541985466,-0.021794881698155,-0.212812096179021,0.115227466407566,0.00805981494625546,-0.101347807449258,0.0264075046306536,0.0363999613519689,-0.0342105034312581,0.00564090074790566,0.00703299979323754,-0.00448655996186001,0.00149498134125988,0.00092650833623764,-0.003475345846272,0.000736348724929225,0.00233284716544365,-0.001128579868339,-0.000500578317604455,0.000528440194785207,2.17269360918983e-05,-0.000198605456968721,0.000170372561376304,-0.000116726085617623,8.66747622194242e-07,-0.000127549948105645,0.00124425698194571,-0.00158813274876115,0.00122730956992284,0.00261259706615536,0.0653083035534413,4.41906267424448e-05,0.000494265675754036,0.003030112554725,-0.00242775551450095,-0.00246083589620793,-9.82976309730585e-05,0.00369034831357812,-0.00116070837409987,-0.000942260096948732,0.000169100906950142,0.00242414277096914,-0.0018796500632841,-0.000234628645913777,-1.78739780027009e-06,0.00138242576847626,-0.00103247265284657,-0.00338647437586612,0.00105714560567318,-0.000604301040693319,0.0129050952166401,-0.0412800743740142,-0.00293858566803691,-0.137780480153931,0.0705124180144971,-0.05223784628139,0.00251285325791304,0.0168793884639091,-0.038410923164463,0.0298870101504042,-0.00574462744878774,-0.00737099980507745,0.00445940950700679,-0.00200470865500238,-0.000379103579604664,0.00317172753948067,-0.000768756985490297,-0.00228883553069669,0.00115574309138308,0.000476924748922565,-0.000524902624524334,-1.59665860814477e-05,0.00020251347884065,-0.000170627889525732,0.000119468228235458,1.25857582617628e-06,0.0001277774137782,-0.00123400308655686,0.00154875534872615,-0.00127088925714587,-0.00219143090841895,-0.0662724641843315,5.61617904387092e-05,-0.000237852893905164,0.00137384237779225,-0.00190036760597743,0.000134345249170187,0.00234666465050465,-0.00138839577623828,-0.0001788154565309,0.000154485522152289,5.42561235608586e-06,0.00157465040122724,-0.00316216996409969,0.00201394476284663,-0.00305342321805718,0.00558699440508329,-0.0103152917555781,0.0119932363618498,-0.0214763880354837,0.0267507306662802,-0.0367697123964835,-0.0044908438235105,-0.0114015358644838,-0.147339041388057,0.0784429570808223,0.0132906650551624,-0.062632988944121,0.0218758445787483,0.00548795108744341,-0.0381156477521,0.0443928859306942,-0.0326768206452687,0.02124327536932,-0.0108904235254832,0.00472781561350394,-0.0021464647133979,0.00141887395914686,-0.00159452988670397,0.00104794924267436,-0.000282738027433557,-4.35324643386819e-05,-0.000134040972564377,0.000156172661623941,-1.22723986235783e-05,-7.74601610637286e-05,0.000120892680524448,-5.20528516988179e-05,0.000103162197035132,0.000397746085268864,-0.00135366469898894,0.00421347400302735,-0.0771929978849708,-0.000163312716450737,0.000329481360992602,-0.00112294723979006,0.00178524800375825,-0.000271098653973512,-0.00204544424264265,0.00138556491359155,5.90885463298979e-05,-0.000182052190620601,3.67703857480374e-05,-0.00158151905247305,0.00307147004439135,-0.00209830762776787,0.00283386978163628,-0.00586991919577638,0.00913698869194431,-0.0143646423440789,0.0187928280388899,-0.0340269443198951,0.0247016306751236,-0.0219269794204208,-0.0447180384482527,-0.0519275258080575,0.0106673255462188,-0.00685687092961448,0.00567562186855367,-0.014928987816573,-0.00363560677589591,0.0339659940545434,-0.0456330289053427,0.0322570383544975,-0.0216188421321739,0.0105579571488232,-0.00446088871054784,0.00200133257978306,-0.00148425037446619,0.00161100479365744,-0.00102399001469966,0.000262367746641076,3.91024915494943e-05,0.000135014949112355,-0.000156942429943568,8.29157244905318e-06,7.71347435600308e-05,-0.000123379285863265,5.39828772851694e-05,-0.000110416504836502,-0.000373730428726239,0.000994354309133268,-0.00262712381319276,0.0770389772240168,5.61617904387092e-05,-0.000237845116602088,0.00137401004779987,-0.00189951891496057,0.000136596988713029,0.0023487416408015,-0.0013823301877098,-0.000175169271904932,0.00016238968877044,1.37972048049102e-05,0.00158342609887561,-0.00315319998682978,0.00201849213266198,-0.00304417148861651,0.0055966705243507,-0.0103051377160023,0.0120043817913809,-0.0214636839744964,0.0267657134046782,-0.0367618630445706,-0.00447445567176148,-0.0113878241539537,-0.147325813785806,0.0784598676531042,0.0133070456703402,-0.062614722531659,0.0218834732457284,0.0054995510452397,-0.0381042474686058,0.044402935317642,-0.0326678390163339,0.0212472894313808,-0.0108828523253178,0.004735150480534,-0.00213920562705052,0.00142567389566068,-0.00158829572447108,0.00105374642792172,-0.000280043339966757,-3.86103016413086e-05,-0.000129561862371834,0.000160248206408024,-8.58238159331287e-06,-7.41393832707406e-05,0.000123863947420619,-5.07340767152918e-05,0.000105418879040937,0.000399412611372484,-0.00135272421385102,0.00421379596121977,-0.0771929978849708,0.000365515471673246,0.00206184020972591,0.00588510627227852,-0.00496353028487672,-0.000241755597135091,0.000598352146590837,0.00112334072268609,-0.000764797855817942,0.000114442720869749,0.000530065933099192,0.000856610394436383,-0.00184952763834033,0.000900457346564201,-0.00104595475047579,0.00228334649968319,-0.00617056201991258,0.00682531585238824,-0.0118633862919242,0.0125316822407754,-0.0293510231055406,-0.0153851051701621,-0.00936286958851903,-0.0777990713341912,0.0327596317297749,0.0184071679708411,-0.0400511358909987,0.0325843354275609,-0.0106510014575282,-0.020562176141547,0.0170405927197901,-0.00878662485112336,0.00353599310774587,-0.000508951170652191,-0.000556940229127006,-0.00119718861925469,0.000316781551610445,-0.00011585128881368,0.000290300839449601,1.08718109221245e-05,-0.000225131203234467,0.000142728022728205,9.72296791778548e-05,-0.000119435163015936,0.000122468285876839,-1.53142588252689e-05,5.6469447449404e-06,-0.00103355566927702,0.00128881493469795,-0.000131949358763397,-0.00263339208176913,-0.0715112672828719,5.93190529732396e-05,-0.0016893964319495,-0.005387559119473,0.00465672980712078,0.000206703929902887,-0.000287016607641768,-0.00114759440672437,0.000664399052448684,-0.00012544444290293,-0.00052364027808389,-0.000876559174698212,0.00177430945908673,-0.00101115386004508,0.000762761517244289,-0.00274599884075161,0.0047597588485489,-0.00969088302933927,0.00802686569536787,-0.0220968026420615,0.0122246407802633,-0.017095824707929,-0.0553473149551512,-0.0383079383574196,0.0189633650011334,0.00695542039146256,0.0097929973790759,-0.037785344858343,0.0108663958839182,0.0162566037511021,-0.0186849284741303,0.00796217483390693,-0.00389787062132066,8.95006812909352e-05,0.000775115500853669,0.00109702983175749,-0.000389248156315144,0.000122516725033146,-0.000264026124888995,-2.94101192896246e-05,0.000220304506081496,-0.000141315473021922,-9.77933794662092e-05,0.000115409163138004,-0.000122255424327584,1.44049719191019e-05,-1.12818845882336e-05,0.00105147762927443,-0.00133985182210849,-8.99341348966664e-06,0.00362494315459046,0.0698275647151448,0.000365515471673246,0.00206186345051944,0.00588521531538786,-0.00496284787108131,-0.00023989896843829,0.000600103695692999,0.00112845259209812,-0.000761728004604922,0.000121153786523845,0.00053724686685908,0.000864102622682254,-0.00184195799469495,0.000904262077269346,-0.00103820915064343,0.00229140978829176,-0.00616207902536292,0.00683467397401096,-0.0118526301976249,0.0125440273288947,-0.0293446689980045,-0.0153719872518413,-0.00934976278836743,-0.0777851312634617,0.0327734309575684,0.0184209725701058,-0.0400385174680766,0.0325903510146806,-0.0106403426710451,-0.0205522700258334,0.017049239822055,-0.00877887885525272,0.00353955658269537,-0.000502195706567669,-0.000550334816859936,-0.00119072905676343,0.000322791086819176,-0.000110358250143641,0.000295415116255766,1.32391324374389e-05,-0.000220823766548617,0.000146632469191204,0.000100775580025921,-0.000116230711205482,0.00012534611060356,-1.27518813249424e-05,6.77879052498852e-06,-0.00103163064248738,0.00129024914152144,-0.000131131588692334,-0.00263310513382997,-0.0715112672828719,0.000503837109335115,0.00179487758258874,0.00330483306991724,-0.00404845357630733,0.00180280503140651,0.00156625577546817,-0.00144220247275557,0.000227176513657811,8.50106185527383e-06,0.000121129359101124,0.000975395040647826,-0.00190807099696934,0.000847566527578219,-0.00197489353757329,0.00354460685361783,-0.00718256226775837,0.00722416877604752,-0.0131998286020496,0.00772406778646835,-0.026928016189765,-0.0142973719602184,-0.0054239522535692,-0.0787749969890098,0.0464704629605863,0.0145348733654827,-0.0242193432545121,0.00950806764607279,0.00565447135389423,-0.0207942449408556,0.0150913572787583,-0.0117038218626637,0.00905299057854264,-0.00389148559463265,0.00252356933912526,-0.00311580629272211,0.000793783647754592,-0.000201437662940043,0.000754887701062572,-0.000446674480874212,-2.17360582835366e-05,3.6757177660828e-05,9.61682942003477e-05,1.80751663064348e-06,-2.78324006680844e-05,3.51026801196838e-05,-8.17243385998939e-06,-4.91131396054502e-06,0.000233886022383806,-0.000621862358704967,0.00278943582603825,-0.0628744683905422,-0.000181613536524624,-0.00144108189157572,-0.00271057540697684,0.00357013238637475,-0.00168127308345492,-0.00130216158738944,0.00140672844569725,-0.000296116884734882,-9.30791479852883e-06,-0.000139442446145193,-0.00101144146618596,0.00185840827843459,-0.000983156357945991,0.00166580648527291,-0.00415229701043032,0.00564884149448798,-0.0103264597213539,0.00833489125330105,-0.0186875265970589,0.00593798338893863,-0.0215193297501251,-0.0559878964166554,-0.00118165787685067,-0.00507023563103131,0.0130794540315359,0.00922554182677698,-0.0189266637414511,-0.00793520748956488,0.017131327069577,-0.0171522848036315,0.01057865410496,-0.00943770369650805,0.00346058714184298,-0.00242573644626582,0.00306525001687977,-0.000853055799811766,0.000194422116686992,-0.00072961220012393,0.000431297525500221,1.70726420738494e-05,-3.50761817895612e-05,-9.66077863003168e-05,-5.92040175288991e-06,2.90985509033653e-05,-3.72808563801232e-05,6.32656653751791e-06,4.91292345544604e-06,-0.000209488395767532,0.000209574141311063,-0.000937456040293133,0.0619508132021142,0.000503837109335115,0.00179488205996042,0.00330492171273367,-0.00404793286193348,0.00180428243780804,0.00156767299390661,-0.0014379998388453,0.000229715746614349,1.40381063292039e-05,0.000127034498658939,0.000981609791439965,-0.00190179604724844,0.000850695449934565,-0.00196856913702326,0.00355123735775511,-0.007175643163362,0.00723182012684817,-0.0131911340744322,0.0077343949386457,-0.0269226778093503,-0.0142861644198217,-0.0054143230744656,-0.078765827040331,0.0464823300777149,0.0145462558179057,-0.0242061518060413,0.00951360865253193,0.00566305723095099,-0.0207858773340084,0.0150986764090338,-0.0116972119477793,0.00905598662040388,-0.00388572479349769,0.00252918795695838,-0.00311026185772747,0.000798920557103096,-0.00019675372590784,0.000759240357546623,-0.000444655268083961,-1.80705056368305e-05,4.00745144351453e-05,9.91776461289395e-05,4.52402374133204e-06,-2.53991362362389e-05,3.72615389315771e-05,-7.22577381860444e-06,-3.30808706229954e-06,0.000235083886803063,-0.000621159206773978,0.00278968987994578,-0.0628744683905422,0.000995444499410915,0.00497353909412668,0.00615045342191603,-0.0065522113100021,0.00180934939861869,-7.76805107815006e-06,0.000475335769972291,-0.000241380469590343,8.26451591063042e-05,2.23102266087407e-05,0.00113731826274861,-0.00140446215711027,-0.000123664899112012,-0.000340756015159505,0.00162105235424965,-0.00516140471678265,0.00548795218567698,-0.010859796600662,0.00346572196632514,-0.0242956076552985,-0.0123413985025629,-0.0218063506139807,-0.045968745022192,0.0201201109117997,0.0151517318485311,-0.0164042326688351,0.00614488826217643,-0.00241550385955778,-0.009309948430343,0.0032043240259899,-0.00381997743180603,0.00256219695305648,0.000399328932177687,0.000280420936137082,-0.00264634032315477,-0.000344252311921725,0.00070623300188928,0.000440986348208389,-0.000284415895692353,-0.000190871688148363,0.000219698143328056,6.81122157278719e-05,-6.40913680553823e-05,9.38395253665201e-05,-6.50736447241648e-05,3.87932860920294e-06,-0.000507938567728617,0.00049739492737733,0.000508516881835776,-0.00247953801964759,-0.0519424963530994,0.000163161425656007,-0.00419950575562691,-0.00562558461955455,0.00599506959848738,-0.00155325836853345,0.000204236836388778,-0.000499958770502325,0.000187797814190709,-8.12068437084399e-05,-4.40121386268213e-05,-0.00118619389310316,0.00136624404498737,-1.89206388516207e-05,1.20067166522964e-05,-0.0023233970096182,0.00353939600611057,-0.00877444380443025,0.00535246559742814,-0.0157717829343625,0.00109614923566309,-0.0268886951457151,-0.0381700834701472,-0.0148899881440219,0.00420188141610671,0.00883623889029696,0.00748952569135533,-0.016012667092393,-0.00301854035907011,0.00576791743344892,-0.00535800516851118,0.00249446282634618,-0.00301912853545253,-0.000828886243277997,-0.000284712854808318,0.00261193376505373,0.000300948403626652,-0.000712095500108524,-0.000423348887383643,0.000269214181038604,0.000188043301265727,-0.000217191266841682,-6.88939808356621e-05,6.02576003269506e-05,-9.22810007396507e-05,6.40788195653502e-05,-1.03523799033209e-05,0.000521201145346453,-0.000509750477338861,-0.000741887926745482,0.00376758552714492,0.0497084427134034,0.000995444499410915,0.00497355564522012,0.00615048249448211,-0.00655185069495453,0.00181043902465189,-6.67970667292107e-06,0.000478572767500983,-0.000239420726471968,8.6963946617095e-05,2.69728734416317e-05,0.00114219692450999,-0.00139962804088535,-0.000121286701958296,-0.000335931539283666,0.0016260776044257,-0.00515613831619636,0.00549379418251052,-0.0108530891084448,0.0034734391335712,-0.024291673676827,-0.0123330798605667,-0.0217976537046308,-0.045959434626109,0.020129800941784,0.0151604955294903,-0.0163960372852935,0.00614897851129235,-0.00240812944227824,-0.00930304253579093,0.00321035055276239,-0.00381456146279792,0.00256472966840184,0.000404201523061754,0.000285225848862109,-0.00264164866582883,-0.000339922801703458,0.000710157333502726,0.000444633938025034,-0.000282730908598646,-0.000187821777112071,0.000222446667302811,7.06000760557612e-05,-6.18497678873674e-05,9.58438882257447e-05,-6.33094829377963e-05,4.64390752641541e-06,-0.000506658476751528,0.000498368250588823,0.000509100771135105,-0.00247931741750865,-0.0519424963530994,0.0012672668728529,0.00473268707119632,0.00355277139410579,-0.00569453765678025,0.00356909783204747,0.000470335428412929,-0.0011164253060332,0.000375781517646507,4.29723996093216e-05,-0.000187572231464326,0.00114326832176915,-0.00157189309958831,8.37438133921721e-05,-0.000776308832595185,0.00199525234837034,-0.00533371935486657,0.0048201023054349,-0.00988109480918836,-0.00237019607073423,-0.0174836731268026,-0.0171933347529791,-0.0182572891313087,-0.0417766345522798,0.0192952546632086,0.0098814972325047,-0.00942493787420958,0.00272893727428433,-0.00342211545011732,-0.00306051177168273,-0.00111594002970444,-0.00356122413488594,0.0041062516550998,-0.000794901557829461,0.002227529809461,-0.0034784051404209,-0.000318749629440103,0.000713782966906335,0.000714872280559544,-0.000527245974525786,-7.16902204427672e-05,0.00014655825511317,5.750487390136e-05,1.48574147559302e-05,2.91929748907135e-05,-7.15490471388707e-05,1.52539909149761e-05,2.68895839634572e-05,-0.000178006256900196,0.000348263002599117,0.00154266948280771,-0.044283866454237,-0.00013024297948723,-0.00402588320269343,-0.00315482817063052,0.00507081402161664,-0.00316613734576082,-0.000362023007194544,0.0011164504629543,-0.000416310067828691,-5.22367111162392e-05,0.000180050603984035,-0.00119969368169524,0.00152399427138372,-0.000226361375227825,0.000453844714984701,-0.00278312072484194,0.00369667227764111,-0.00817906656785771,0.00395563261771207,-0.0105682768232719,-0.00707616462540461,-0.0243630161008823,-0.0371460064241091,-0.010937564119708,-0.00219624489916996,0.0108096947968805,0.00267734942932075,-0.0122768455473229,-0.00289551248584337,-0.000531934171209927,-0.00113189876509781,0.00216984790976171,-0.0046039487802957,0.000340992369417844,-0.00231579215098342,0.00343108948728172,0.000300378703520893,-0.000712511761691944,-0.000706244503156991,0.000509690008156698,7.13265670995455e-05,-0.000142473077236517,-5.88431405629849e-05,-1.80888387781054e-05,-2.74125252407943e-05,6.99430848558675e-05,-1.81888657141045e-05,-2.69636989532549e-05,0.000216442035925908,-0.000736907814771117,0.000146183443871215,0.042401764552286,0.0012672668728529,0.00473268630907576,0.00355278081896192,-0.00569433259478477,0.0035698134971868,0.000471087522390573,-0.00111411835539783,0.000377196381408679,4.60923823805915e-05,-0.000184218247740434,0.00114680844234994,-0.00156842383188427,8.5439235392513e-05,-0.000772893505735321,0.00199884732358572,-0.00533001023666026,0.00482425227171699,-0.00987641909916879,-0.00236454570113323,-0.0174807505418693,-0.0171870132933895,-0.0182517118799178,-0.0417717800120862,0.0193024512553488,0.00988799547784348,-0.00941720846664284,0.0027321150753951,-0.00341666138328139,-0.003055098710154,-0.00111117938824788,-0.00355692585895532,0.00410822026085672,-0.000791037304588312,0.00223132758044837,-0.00347465473557098,-0.000315313260549382,0.000716885712385242,0.000717745872193546,-0.000525915490192578,-6.92898880063281e-05,0.000148716842188447,5.94557837174894e-05,1.66133911873757e-05,3.0761234918981e-05,-7.01711310817573e-05,1.58412250353698e-05,2.78546507610522e-05,-0.000177264018524114,0.000348732739531674,0.00154285686747629,-0.044283866454237,0.00190416569164755,0.00835336962907183,0.00566852679564283,-0.00759093185281098,0.00346440901882737,-0.000750517244473244,0.000273268461336233,-2.95239074825101e-05,0.000238697779160364,-0.000210593273665372,0.00101949516740638,-0.00140357626103967,4.32745553933388e-05,-3.02369594915335e-05,0.000664865845012991,-0.00385306111426014,0.00361201311370153,-0.00810710111233696,-0.00478085921928061,-0.0150476431379154,-0.0171690602942607,-0.026265350755793,-0.0320881147073014,0.0124231107571966,0.00200381374004991,0.000902823179881782,-0.00638832366783167,-0.000876041346887536,-0.00342704586271479,-0.00252771109074244,-0.00248872053253573,0.00224432502057982,0.000532106437170547,0.00139845656091965,-0.00332860850590777,-0.00109964910445445,0.00121531726560119,0.000491108510108243,-0.000366011752189866,-0.000201000255544791,0.000257604473012873,4.34674819675065e-05,-3.5586202347265e-05,0.000103832740167407,-9.89051530400637e-05,-6.76490969579092e-06,-0.000151205008061336,-0.000123339847329749,0.00111367492700611,-0.00269878530099024,-0.0371630001380069,0.000280619001170098,-0.00713365835438882,-0.00559598905831938,0.00704222615913693,-0.00295970392906563,0.000768066214895005,-0.000242921454573894,-6.54176962383704e-07,-0.00025861489988393,0.000215080959676031,-0.00106288180927592,0.00132824327054055,-0.000174696915571001,-0.000293286721082764,-0.00151102363055716,0.00221602431469492,-0.00700018828278328,0.00181967124904603,-0.00854656252275246,-0.0105075212177994,-0.0257801379811095,-0.028786295396968,-0.0169980780794646,-0.002055920973992,0.0155153154611552,-0.00501526823486936,-0.00260864687019273,-0.00619172865883868,-0.00060863269697151,0.000260357204970622,0.00108815989113043,-0.00282796350271683,-0.000990822542357651,-0.00156991172763285,0.00324810525493611,0.00110446057362322,-0.00119290987108552,-0.000497121325792784,0.00034436156461114,0.000204046938233694,-0.000250843258742585,-4.61705282481778e-05,3.36577678271745e-05,-0.000102527374279908,9.83131884813405e-05,1.78407236015298e-06,0.00015538241583753,0.000136957917460756,-0.00130197451535333,0.0036534563445789,0.0338957444588726,0.00190416569164755,0.00835338091165685,0.00566847969799285,-0.00759088015875076,0.003464747788326,-0.000750090287593856,0.000274615561520117,-2.86845025635365e-05,0.00024059581588974,-0.000208518827998309,0.00102162671498543,-0.00140155232209706,4.42572703567094e-05,-2.82538588551051e-05,0.000666906938719276,-0.00385093855699229,0.00361439616759718,-0.00810434678961439,-0.00477772070418831,-0.0150460385982519,-0.0171654234400915,-0.0262608690883246,-0.0320831796584668,0.0124280235243853,0.00200765284192086,0.000906004087210013,-0.00638653499936937,-0.000872002338163699,-0.00342309343341329,-0.00252421351203913,-0.002485601944825,0.00224581688942004,0.000535019980516839,0.00140136540327369,-0.00332577666761079,-0.00109706243288073,0.00121762822050725,0.000493244031026349,-0.00036503148234927,-0.000199240311271479,0.000259175947563574,4.48812859018642e-05,-3.4318642126761e-05,0.000104963073265583,-9.79168118183043e-05,-6.34831231157988e-06,-0.000150544380217018,-0.000122815165948881,0.00111402369088398,-0.002698633413579,-0.0371630001380069,0.00224169583068997,0.00777249087124744,0.00306012518661115,-0.00656591697104785,0.00510564913992542,-0.000612150451473416,-0.000802747769674442,0.000314153830166157,0.000380210618627157,-0.000325337351831088,0.000599519016322557,-0.00132473884891292,0.000765675125930938,-0.00106527641277827,0.00113741624226473,-0.00379385957197536,0.002570359827597,-0.00633132697886368,-0.00940796402035929,-0.0106286458873928,-0.0191596678854704,-0.0257559207027698,-0.0299636535140991,0.010460803003767,0.00479594213661018,-0.00369673419218236,0.00382951322962962,-0.00736150915468734,0.00230365835248486,-0.00590745225195736,-0.00183409256987538,0.00308111409353711,-0.000656307863604734,0.00302691637182076,-0.00370416719179391,-0.00101880822541673,0.00118757094072017,0.000603540738818204,-0.000500482859978993,-7.96221361469593e-05,0.00017794248262345,2.83438485643485e-05,2.92025708049643e-05,5.62650223219079e-05,-9.76702259991094e-05,-1.78877816675408e-06,7.98457403704005e-05,-0.000466394771176677,0.00116521186643614,0.000792680772021343,-0.0334946157734882,-0.000116888758286238,-0.00672251428676178,-0.00299306764645085,0.00597496358719528,-0.00447325147150909,0.000522519657666436,0.000875007566933722,-0.000332560765588423,-0.000412382710620505,0.000338543818891098,-0.000618510695524016,0.00120633797316207,-0.000880886675164531,0.00074070216783165,-0.0020220636032828,0.00218846474899609,-0.00591383223825952,-0.000140932662317697,-0.00397460166085872,-0.0152605849210772,-0.0246116229084044,-0.0285366900291117,-0.0193247407053484,-0.00119538052511721,0.0120567884248695,0.00202779325957085,-0.012791292103602,-4.06593444613683e-05,-0.00653274110979982,0.00342730064866937,0.000544649084747046,-0.00371520488194457,0.000162570269063972,-0.00325524715732777,0.0035677747940369,0.00106011045251154,-0.001138890216201,-0.000626953080011724,0.000474526835458989,8.71950548820442e-05,-0.000168322087694621,-3.27950676130067e-05,-2.92601031384959e-05,-5.56823912415218e-05,9.62238065010765e-05,1.47200639604058e-06,-8.89651751023457e-05,0.000496834866947716,-0.00137734220304032,0.000228491608975236,0.030145448836548,0.00224169583068997,0.00777248502185083,0.00306006292341451,-0.00656601552220791,0.00510562062484269,-0.000612055362020308,-0.0008023170142368,0.000314457092970755,0.00038093410984041,-0.000324546551092177,0.000600337331010585,-0.00132401358288496,0.000766002098781816,-0.00106466243350103,0.00113806471063419,-0.00379324310715728,0.0025710943414766,-0.00633053138009292,-0.00940686116824264,-0.0106280391784803,-0.0191581292310007,-0.0257542467195901,-0.029962503962057,0.0104630875472229,0.00479749569262935,-0.00369421725974233,0.00383040903945113,-0.00735911696941271,0.00230603066607717,-0.00590528498291999,-0.00183213135589938,0.00308203559228253,-0.000654421103304111,0.00302879252213318,-0.00370231665664168,-0.00101715371107028,0.00118903260120181,0.000604878238491011,-0.000499869708109298,-7.85357506106346e-05,0.000178902944865915,2.92015264393744e-05,2.99667685364901e-05,5.69420924172959e-05,-9.70810638136939e-05,-1.54439252855962e-06,8.0217096817753e-05,-0.000466090772049682,0.00116544511691993,0.000792797028102207,-0.0334946157734882,0.00287252586791209,0.0100353847477731,0.00427411824707571,-0.008173738147735,0.00521958743323167,-0.00175241341188383,0.000357502597400395,-5.23863800074705e-05,0.000542356409120614,2.12956750433211e-05,-0.000301780482904549,-0.000765268002852684,0.00136689138879025,-0.00186753228645975,0.00162093622799621,-0.00418905568708099,0.00319033027640757,-0.00559752712642925,-0.0104902301293987,-0.00792130048463963,-0.0230475032255819,-0.0225588022828437,-0.030553086999266,0.00495149518723086,0.0123006385253854,-0.0133226507569163,0.0109633543973774,-0.01213270737472,0.00121887341974047,-0.00452371566694566,-0.00296154687627386,0.00367523459226305,-0.00151709686087605,0.00347008282838453,-0.00428934273514087,-0.00111655779456074,0.00134164005185853,0.000404504532898228,-0.000340594168927733,-0.000151330525121291,0.000227163412324989,3.57311680592828e-05,-1.62258352640104e-05,0.000118113113743314,-0.000123964403070552,6.95592377141803e-06,-1.99954089430433e-05,-0.000488724930038183,0.00159587216894211,-0.00306580937039249,-0.0300573337003566,0.000121364324901416,-0.00868360879689825,-0.00442014384540935,0.00777605485898983,-0.00450752961886391,0.00152699174970913,-0.00024538781276034,4.58854961096114e-05,-0.000576434949830682,-1.08774283653372e-05,0.000277526251408302,0.000638181011379943,-0.00148310399771183,0.0015619265060248,-0.00251182485746849,0.00263481110653847,-0.00641545874118492,-0.00107932498936463,-0.0025729613468951,-0.0178630566125331,-0.0207270257601274,-0.0312440067013316,-0.0186012989827506,0.00350145303205966,0.00419483397555145,0.0130925322878641,-0.0196226756893594,0.00311268729586418,-0.00497049458654061,0.00172067321682585,0.00178681518066169,-0.00433730784116262,0.000972758247096218,-0.0037454182528136,0.00409749497766675,0.00120021677197951,-0.00125862857748673,-0.000451026615128607,0.000313521121223093,0.00016357255553642,-0.000214278187735986,-4.25332290815403e-05,1.9022725917447e-05,-0.000119863596849626,0.000125567858079621,-9.46563846999449e-06,2.97085997377684e-05,0.000397151433092335,-0.00152950632720986,0.00309314154789743,0.025008181049535,0.00287252586791209,0.0100353934078725,0.00427406506657151,-0.00817383620726679,0.00521945180496931,-0.00175246995903917,0.000357405229952768,-5.24237696411481e-05,0.000542318045885842,2.12773752072848e-05,-0.000301846172228632,-0.000765380462291935,0.00136682582488843,-0.00186768641742352,0.0016207466317972,-0.00418926303917412,0.00319011464479839,-0.00559773927387369,-0.0104905221910067,-0.00792144173802345,-0.023047639468595,-0.0225580928761683,-0.0305520010159436,0.00495191295457439,0.0123006411454196,-0.0133231851424066,0.0109632590350365,-0.0121321605754983,0.00121956121077903,-0.00452306818202204,-0.00296097157648144,0.00367553759936753,-0.00151648326022651,0.00347071468382087,-0.00428873690129257,-0.00111601840165434,0.00134210482948303,0.000404923995942006,-0.000340407432431288,-0.00015100537035602,0.000227443955373917,3.59763576831296e-05,-1.6011541516383e-05,0.000118300569324327,-0.000123806040134331,7.01915929591077e-06,-1.99041059663821e-05,-0.000488641817752562,0.00159594577359331,-0.00306576888178251,-0.0300573337003565]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive111.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive111.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive111.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive111_field1":[0,0,0,0,168.541096783679,0,0,0,0,355.459617486456,369.954150670539,-114.900716360199,143.102058137617,92.5196137166235,0,0,223.521456604483,153.321563355256,8.50776988395319,0,0,132.145803366661,0,0,0,0,0,0,0,0,168.541129490002,0,0,0,0,355.459306287066,369.955145025375,-114.90049677275,143.101924131702,92.519499834111,0,0,223.521395374082,153.321743010253,8.50647347256413,0,0,132.145773235109,0,0,0,0,0,0,0,0,168.541137836691,0,0,0,0,355.45922404571,369.955299692142,-114.900461892963,143.101890465354,92.5194334140033,0,0,223.521355888322,153.321779830024,8.50611869510958,0,0,132.145755469224,0,0,0,0],"Archive111_field2":[0,0,0,0,1688.45103762567,0,0,0,0,1470.75220632922,1154.67701745604,1361.63677243106,1442.51209845548,1371.06909573039,0,0,1524.55788820314,1448.48346626746,952.446810393448,0,0,1459.16817518617,0,0,0,0,0,0,0,0,1688.45128831091,0,0,0,0,1470.75123385666,1154.67839153007,1361.63574561373,1442.51216006441,1371.07037178112,0,0,1524.5586680848,1448.48349138857,952.447396726725,0,0,1459.1669325505,0,0,0,0,0,0,0,0,1688.4513572102,0,0,0,0,1470.75089765348,1154.67797984353,1361.63536031891,1442.51214563332,1371.07025100291,0,0,1524.55860040402,1448.48344785192,952.44697614169,0,0,1459.16653674141,0,0,0,0],"Archive111_field3":[0,0,0,0,-2.69143769842368,0,0,0,0,-7.37582447860408,-7.9933349535438,-7.42902127810709,-3.84626978969507,-5.75831299644541,0,0,-4.36150909601865,-4.01447774589115,-7.34156862715285,0,0,-3.98646927326025,0,0,0,0,0,0,0,0,-2.84582258988764,0,0,0,0,-6.55541532935976,-10.1372761465074,-6.77274282176899,-3.61703404728429,-7.73465697652657,0,0,-5.40082846958996,-4.02234005320325,-8.44563027814855,0,0,-3.35294794961897,0,0,0,0,0,0,0,0,-3.00020646010652,0,0,0,0,-5.73500586142529,-12.2812181174896,-6.11646406562048,-3.38779746187552,-9.71100101700851,0,0,-6.44014765649466,-4.03020144574767,-9.54969247553586,0,0,-2.71942578351274,0,0,0,0],"Archive111_field4":[0,0,0,0,1696.84420369141,0,0,0,0,1513.11532768412,1212.52174481253,1366.49627332595,1449.5979259867,1374.19922222281,0,0,1540.86262165275,1456.58091772186,952.513100910931,0,0,1465.14510160626,0,0,0,0,0,0,0,0,1696.84470828498,0,0,0,0,1513.11053257424,1212.53938557264,1366.49182139412,1449.59738395156,1374.21019030719,0,0,1540.86667676689,1456.58098330454,952.522825077305,0,0,1465.14227455653,0,0,0,0,0,0,0,0,1696.84504361684,0,0,0,0,1513.10685452149,1212.55886010713,1366.48833941117,1449.596812402,1374.22261016371,0,0,1540.87059745647,1456.58096561603,952.53283042795,0,0,1465.14056592228,0,0,0,0],"Archive111_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4272990.75,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2136495.375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive111_field6":[-897.729993786431,-840.445584916673,-211.861018877267,-274.562146536458,-556.413904184249,-863.760253725313,-524.903872600445,-244.644615804637,-586.601499514822,-385.194198631276,-727.125895009649,-416.363443146137,-540.867143944913,-703.362339930272,-680.462047877926,-849.93954866214,-677.024929880877,-589.530673860851,-652.999066191489,-367.649849770292,-228.924452036324,-401.020517483177,-743.659412039859,-879.871849432375,-260.399959398635,-430.022654374541,-897.729993786431,-840.445584916673,-211.861018877267,-274.562146536458,-556.413904184249,-863.760253725313,-524.903872600445,-244.644615804637,-586.601499514822,-385.194198631276,-727.125895009649,-416.363443146137,-540.867143944914,-703.362339930272,-680.462047877926,-849.93954866214,-677.024929880877,-589.530673860851,-652.999066191489,-367.649849770292,-228.924452036324,-401.020517483177,-743.659412039859,-879.871849432375,-260.399959398635,-430.022654374541,-897.729993786431,-840.445584916673,-211.861018877267,-274.562146536458,-556.413904184249,-863.760253725313,-524.903872600445,-244.644615804637,-586.601499514822,-385.194198631276,-727.125895009649,-416.363443146137,-540.867143944913,-703.362339930272,-680.462047877926,-849.93954866214,-677.024929880877,-589.530673860851,-652.999066191489,-367.649849770292,-228.924452036324,-401.020517483177,-743.659412039859,-879.871849432375,-260.399959398635,-430.022654374541],"Archive111_field7":[103.772496555465,97.1507437308259,24.4899323893023,31.7378271896015,64.3182920867289,99.8457872354233,60.6759111184811,28.2795302893037,67.8078069231965,44.5262650544333,84.0516301755974,48.1292529700006,62.5211747635342,81.3046979635866,78.6575540622248,98.2481921027119,78.2602427125114,68.1464028672303,75.4829891126476,42.4982378142322,26.4623685014725,46.3556977679572,85.9628109882498,101.708196335694,30.1007586654911,49.7081803311901,103.772496555465,97.1507437308259,24.4899323893023,31.7378271896015,64.3182920867289,99.8457872354233,60.6759111184811,28.2795302893037,67.8078069231965,44.5262650544333,84.0516301755974,48.1292529700006,62.5211747635342,81.3046979635866,78.6575540622248,98.248192102712,78.2602427125114,68.1464028672303,75.4829891126476,42.4982378142322,26.4623685014725,46.3556977679572,85.9628109882498,101.708196335694,30.1007586654911,49.7081803311901,103.772496555465,97.1507437308259,24.4899323893023,31.7378271896015,64.3182920867289,99.8457872354233,60.6759111184811,28.2795302893037,67.8078069231965,44.5262650544333,84.0516301755974,48.1292529700006,62.5211747635342,81.3046979635866,78.6575540622248,98.2481921027119,78.2602427125114,68.1464028672303,75.4829891126476,42.4982378142322,26.4623685014725,46.3556977679572,85.9628109882498,101.708196335694,30.1007586654911,49.7081803311901],"Archive111_field8":[1001.5024903419,937.596328647499,236.350951266569,306.29997372606,620.732196270978,963.606040960736,585.579783718926,272.92414609394,654.409306438019,429.72046368571,811.177525185246,464.492696116138,603.388318708448,784.667037893859,759.119601940151,948.187740764852,755.285172593389,657.677076728081,728.482055304136,410.148087584524,255.386820537796,447.376215251134,829.622223028109,981.580045768069,290.500718064126,479.730834705731,1001.5024903419,937.596328647499,236.350951266569,306.29997372606,620.732196270978,963.606040960736,585.579783718926,272.92414609394,654.409306438019,429.72046368571,811.177525185246,464.492696116138,603.388318708448,784.667037893859,759.119601940151,948.187740764852,755.285172593389,657.677076728081,728.482055304136,410.148087584524,255.386820537796,447.376215251134,829.622223028109,981.580045768069,290.500718064126,479.730834705731,1001.5024903419,937.596328647499,236.350951266569,306.29997372606,620.732196270978,963.606040960736,585.579783718926,272.92414609394,654.409306438019,429.72046368571,811.177525185246,464.492696116138,603.388318708448,784.667037893859,759.119601940151,948.187740764852,755.285172593389,657.677076728081,728.482055304136,410.148087584524,255.386820537796,447.376215251134,829.622223028109,981.580045768069,290.500718064126,479.730834705731],"Archive111_field9":[271.856495530934,271.944623816316,272.84542161083,272.754506469767,272.345651185294,271.901485152868,272.392439249126,272.799431739551,272.302343992118,272.593595656455,272.099715443257,272.548166017862,272.368313816602,272.133081150007,272.16794091668,271.923315823072,272.171488339409,272.298332116785,272.205688141489,272.618627362591,272.822351191155,272.570717391937,272.078448616815,271.878974908054,272.776880139109,272.528245741764,248.298135623596,248.263344392632,248.129946718574,248.120213545544,248.168106616764,248.301001513576,248.171156607816,248.096290378193,248.190691242938,248.117090504646,248.228086730345,248.119461781426,248.162690358697,248.222048820061,248.223793824422,248.28866590176,248.196504188363,248.185824312974,248.19898728139,248.139559434348,248.10725972687,248.115140231549,248.238376542144,248.295842476189,248.100515762251,248.157761771652,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive111_field10":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive111_field11":[620000000000000],"Archive111_field12":[0,0,0,0,171.424063139974,0,0,0,0,366.947154901493,382.137434955194,-121.52751969171,142.562697022059,95.7312852278616,0,0,231.407650550363,158.987008623312,8.03754424437823,0,0,134.50774771932,0,0,0,0,0,0,0,0,171.424100628253,0,0,0,0,366.946843318143,382.138428898316,-121.527288758142,142.562575698073,95.7311617056378,0,0,231.407575446347,158.987182276455,8.0362212954596,0,0,134.507714629828,0,0,0,0,0,0,0,0,171.424110847277,0,0,0,0,366.946756272554,382.13857709619,-121.527251056898,142.562547238591,95.7310904663854,0,0,231.40753096053,158.987215837351,8.03585549102255,0,0,134.507695683551,0,0,0,0],"Archive111_field13":[0,0,0,0,1724.86405364204,0,0,0,0,1518.58753317358,1172.71904634285,1403.90715120281,1478.99578291952,1385.21509625243,0,0,1547.4067483279,1478.43781928033,962.879260461003,0,0,1493.41662010913,0,0,0,0,0,0,0,0,1724.86433540619,0,0,0,0,1518.58656901763,1172.7203490242,1403.90610786868,1478.99587560311,1385.21639175047,0,0,1547.40752582225,1478.43787644792,962.87981678073,0,0,1493.41529982529,0,0,0,0,0,0,0,0,1724.86441927434,0,0,0,0,1518.5862116274,1172.71990144063,1403.90568841916,1478.99587034181,1385.2162497908,0,0,1547.4074452701,1478.43784224227,962.87935979718,0,0,1493.41487091688,0,0,0,0],"Archive111_field14":[0,0,0,0,-2.67823232363435,0,0,0,0,-7.34817071797811,-7.99386694480989,-7.40808557262635,-3.83397454991229,-5.76579558860621,0,0,-4.36582693483869,-4.00247578057983,-7.34267697068483,0,0,-3.97157286084818,0,0,0,0,0,0,0,0,-2.85957379623424,0,0,0,0,-6.485017601853,-10.1844546925723,-6.71976677052611,-3.63981851025131,-7.77594462613029,0,0,-5.42271587347533,-4.04097411075983,-8.47554380670467,0,0,-3.31828462291023,0,0,0,0,0,0,0,0,-3.04091419282537,0,0,0,0,-5.62186415520824,-12.3750431527066,-6.03144764251292,-3.44566167896458,-9.78609372314455,0,0,-6.47960470618338,-4.07947158526845,-9.60841118432841,0,0,-2.66499548774555,0,0,0,0],"Archive111_field15":[0,0,0,0,1733.36360464221,0,0,0,0,1562.30992636334,1233.43539869673,1409.17674795345,1485.85576279691,1388.53108940915,0,0,1564.62014749549,1486.96713958371,962.94080152858,0,0,1499.46700824182,0,0,0,0,0,0,0,0,1733.36417840994,0,0,0,0,1562.30509468387,1233.45308746368,1409.17223819139,1485.8553551135,1388.54217530852,0,0,1564.62421136602,1486.96731911492,962.950651518146,0,0,1499.46410229123,0,0,0,0,0,0,0,0,1733.36457152485,0,0,0,0,1562.30138239726,1233.47274028779,1409.16870284781,1485.85488421572,1388.55474072746,0,0,1564.62814506826,1486.96739381269,962.960828934587,0,0,1499.46237000957,0,0,0,0],"Archive111_field16":[9009286.05754292,8434400.92535731,2126158.79687526,2755404.11464568,5583964.06924857,8668378.31509336,5267741.0509852,2455162.84570749,5886915.60657593,3865666.45561,7297166.44573569,4178469.46094067,5427942.53578789,7058684.19947444,6828865.34154515,8529678.83274023,6794371.69706043,5916311.71651817,6553257.01864329,3689597.86185023,2297401.09858929,4024493.53586969,7463090.70524957,8830068.32831902,2613277.64453973,4315548.25092077,4504643.02877146,4217200.46267866,1063079.39843763,1377702.05732284,2791982.03462429,4334189.15754668,2633870.5254926,1227581.42285374,2943457.80328797,1932833.227805,3648583.22286784,2089234.73047033,2713971.26789395,3529342.09973722,3414432.67077258,4264839.41637012,3397185.84853021,2958155.85825909,3276628.50932165,1844798.93092512,1148700.54929465,2012246.76793485,3731545.35262478,4415034.16415951,1306638.82226986,2157774.12546039,0,-5.11350322085491e-10,6.39187902606864e-11,9.58781853910296e-11,-1.27837580521373e-10,2.55675161042745e-10,-4.47431531824805e-10,9.58781853910296e-11,-2.55675161042745e-10,-1.27837580521373e-10,-2.55675161042746e-10,-1.27837580521373e-10,-1.27837580521373e-10,0,3.83512741564118e-10,-3.83512741564118e-10,3.83512741564118e-10,0,-2.55675161042745e-10,1.27837580521373e-10,-6.39187902606864e-11,-1.91756370782059e-10,1.27837580521373e-10,-5.11350322085491e-10,-9.58781853910296e-11,1.91756370782059e-10],"Archive111_field17":[-899.015860876747,-847.272132323219,-217.613492707933,-280.265392454759,-561.523697283078,-862.470383977586,-529.892963913829,-251.87175640804,-590.521038616719,-391.734638250671,-730.372382665564,-422.679656649022,-546.083613957923,-706.364653248143,-684.145182673964,-850.530982787125,-681.148974189993,-594.406510284293,-656.634467441653,-372.292207468612,-236.138507209366,-407.665892529979,-747.762679817739,-878.97958803377,-267.711446728385,-434.275737093281,-899.015860876747,-847.272132323219,-217.613492707933,-280.265392454759,-561.523697283078,-862.470383977586,-529.892963913829,-251.87175640804,-590.521038616719,-391.734638250671,-730.372382665565,-422.679656649022,-546.083613957923,-706.364653248143,-684.145182673964,-850.530982787125,-681.148974189993,-594.406510284293,-656.634467441653,-372.292207468612,-236.138507209366,-407.665892529979,-747.762679817739,-878.97958803377,-267.711446728385,-434.275737093281,-899.015860876747,-847.272132323219,-217.613492707933,-280.265392454759,-561.523697283078,-862.470383977586,-529.892963913829,-251.87175640804,-590.521038616719,-391.734638250671,-730.372382665564,-422.679656649022,-546.083613957923,-706.364653248143,-684.145182673964,-850.530982787125,-681.148974189993,-594.406510284293,-656.634467441653,-372.292207468612,-236.138507209366,-407.665892529979,-747.762679817739,-878.97958803377,-267.711446728385,-434.275737093281],"Archive111_field18":[103.921135499384,97.9398538999577,25.1548857437741,32.3970900765588,64.9089551930276,99.6966856070056,61.2526217828418,29.1149467603624,68.2608834169817,45.2823027857919,84.4269057388766,48.8593714338019,63.1241691161831,81.6517483580187,79.0833035588224,98.3165585337353,78.7369588485706,68.7100219085442,75.9032208820231,43.0348680389017,27.2962723709845,47.1238654396705,86.4371254751149,101.605055977731,30.9459251398134,50.1998125756682,103.921135499384,97.9398538999577,25.1548857437741,32.3970900765588,64.9089551930276,99.6966856070056,61.2526217828418,29.1149467603624,68.2608834169817,45.2823027857919,84.4269057388766,48.8593714338019,63.1241691161831,81.6517483580187,79.0833035588224,98.3165585337353,78.7369588485706,68.7100219085442,75.9032208820231,43.0348680389017,27.2962723709845,47.1238654396705,86.4371254751149,101.605055977731,30.9459251398134,50.1998125756682,103.921135499384,97.9398538999577,25.1548857437741,32.3970900765588,64.9089551930276,99.6966856070056,61.2526217828418,29.1149467603624,68.2608834169817,45.2823027857919,84.4269057388766,48.8593714338019,63.1241691161831,81.6517483580187,79.0833035588224,98.3165585337353,78.7369588485706,68.7100219085442,75.9032208820231,43.0348680389017,27.2962723709845,47.1238654396705,86.4371254751149,101.605055977731,30.9459251398134,50.1998125756682],"Archive111_field19":[1002.93699637613,945.211986223177,242.768378451707,312.662482531318,626.432652476106,962.167069584592,591.145585696671,280.986703168403,658.781922033701,437.016941036463,814.799288404441,471.539028082824,609.207783074106,788.016401606161,763.228486232786,948.847541320861,759.885933038564,663.116532192837,732.537688323676,415.327075507514,263.434779580351,454.78975796965,834.199805292854,980.584644011502,298.657371868199,484.475549668949,1002.93699637613,945.211986223177,242.768378451707,312.662482531318,626.432652476106,962.167069584592,591.145585696671,280.986703168403,658.781922033701,437.016941036463,814.799288404441,471.539028082824,609.207783074106,788.016401606161,763.228486232786,948.847541320861,759.885933038564,663.116532192837,732.537688323676,415.327075507514,263.434779580351,454.78975796965,834.199805292854,980.584644011502,298.657371868199,484.475549668949,1002.93699637613,945.211986223177,242.768378451707,312.662482531318,626.432652476106,962.167069584592,591.145585696671,280.986703168403,658.781922033701,437.016941036463,814.799288404441,471.539028082824,609.207783074106,788.016401606161,763.228486232786,948.847541320861,759.885933038564,663.116532192837,732.537688323676,415.327075507514,263.434779580351,454.78975796965,834.199805292854,980.584644011502,298.657371868199,484.475549668949],"Archive111_field20":[272.265253227228,272.330125718475,272.779819672129,272.724777012627,272.60032155784,272.272013072679,272.576195126764,272.739077043511,272.545979154132,272.777553817321,272.396137957158,272.746695958618,272.623254776188,272.431488600135,272.443331011005,272.305262060983,272.482552930535,272.575041079058,272.484780513739,272.693452117106,272.705382893419,272.76210891485,272.385763526274,272.250844583197,272.657469633129,272.645738118012,248.064458006859,248.394863056718,259.253018433451,256.935635653185,249.030747170465,248.370449694546,250.640293393671,258.64251669845,249.454014479731,245.004611703172,248.790464622941,245.538702164702,248.211988959474,248.504204923424,248.923931170858,248.099610861716,248.166649146865,248.373903126235,248.579338937408,253.275431078635,262.692738439159,247.606844983566,248.737751551229,248.268659940297,261.864063364946,251.882996127258,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive111_field21":[-1.33996603336477e-09,0.137949169499426,-0.000125863331105447,-0.000112515936184174,-0.000217591210386719,-2.56947091570798e-09,-0.00011847615970587,-0.000248156919951348,-9.59546337303746e-05,2.07712255149229,2.21120056803128e-05,1.8568504930433,-0.139189833636093,6.86188060832072e-06,-4.17694351948891e-06,-4.17976266210063e-06,1.70152099304092e-05,-0.449123018221907,5.80370181090719e-06,-0.000125863554826499,-0.000125859625582763,0.161727948067376,1.56744522893535e-09,-1.33984068366491e-09,-0.000112511826240167,-0.000112516437871673,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive111_field22":[625000000000000],"Archive111_field23":[0,0,0,0,174.260891991018,0,0,0,0,375.554322186948,393.951923244786,-125.602192588186,141.493894182755,98.1296496551566,0,0,238.45224219857,166.117466396476,6.99312276869614,0,0,136.651050665893,0,0,0,0,0,0,0,0,174.260929136687,0,0,0,0,375.553991720994,393.952932952921,-125.601962221026,141.493771523982,98.1295236610586,0,0,238.45216020685,166.117625064079,6.99177847583464,0,0,136.651024682468,0,0,0,0,0,0,0,0,174.260939987758,0,0,0,0,375.553895381588,393.953078337454,-125.601923532987,141.493744131785,98.1294503675698,0,0,238.452112025357,166.117654182206,6.99140401379291,0,0,136.651007326296,0,0,0,0],"Archive111_field24":[0,0,0,0,1764.9567042129,0,0,0,0,1567.17075748887,1192.14534307458,1449.03449046952,1516.9499053064,1402.95529945989,0,0,1574.95166817504,1514.19069498658,979.481149973355,0,0,1532.6588247678,0,0,0,0,0,0,0,0,1764.95701558059,0,0,0,0,1567.16974332777,1192.14664390015,1449.03345707231,1516.95001718446,1402.95664227094,0,0,1574.95245881206,1514.19078414933,979.481701883705,0,0,1532.65746615121,0,0,0,0,0,0,0,0,1764.95711426921,0,0,0,0,1567.16934801826,1192.14618154795,1449.03302207948,1516.95001274086,1402.95649460345,0,0,1574.95236775643,1514.19076177485,979.481221595569,0,0,1532.65701920123,0,0,0,0],"Archive111_field25":[0,0,0,0,-2.6636999136145,0,0,0,0,-7.32100044508531,-7.99396405104451,-7.38597083444135,-3.82182847075939,-5.77136704451944,0,0,-4.36789921396233,-3.98745693468156,-7.34008388786649,0,0,-3.95436229281534,0,0,0,0,0,0,0,0,-2.86924513601911,0,0,0,0,-6.41473732833722,-10.2373135442521,-6.66254638800176,-3.65641445132305,-7.82047949989877,0,0,-5.44689711369381,-4.05764309719378,-8.50645630376891,0,0,-3.27437980261897,0,0,0,0,0,0,0,0,-3.074789236043,0,0,0,0,-5.50847385344041,-12.4806637374598,-5.93912161122064,-3.49099960488654,-9.86959203680799,0,0,-6.52589495889251,-4.12782843103125,-9.67282926994274,0,0,-2.59439637131216,0,0,0,0],"Archive111_field26":[0,0,0,0,1773.54056100243,0,0,0,0,1611.55788884206,1255.57657683788,1454.48665099353,1523.5393475959,1406.39479133762,0,0,1592.90655954466,1523.2807926442,979.533615426579,0,0,1538.74371477769,0,0,0,0,0,0,0,0,1773.54119513429,0,0,0,0,1611.55296343453,1255.59441561884,1454.48210788344,1523.53904163387,1406.4060236666,0,0,1592.91065314839,1523.28108391958,979.543592235742,0,0,1538.74076200603,0,0,0,0,0,0,0,0,1773.54163885255,0,0,0,0,1611.5492040234,1255.61431700911,1454.47853729008,1523.53864665822,1406.41875827451,0,0,1592.91461093681,1523.28125342724,979.553932570595,0,0,1538.73901854819,0,0,0,0],"Archive111_field27":[9022190.54389051,8502909.62930687,2183888.49582451,2812639.78048075,5635244.06216498,8655433.65955698,5317809.72544254,2527691.75476122,5926250.65077311,3931303.88766758,7329746.99465002,4241856.64265663,5480293.09874455,7088814.30507666,6865827.91959831,8535614.24678796,6835759.07985032,5965243.80680436,6589740.56049147,3736186.84603823,2369798.68710553,4091184.06105064,7504269.5824593,8821113.92305935,2686653.02613079,4358230.61544544,4511095.27194525,4251454.81465343,1091944.24791226,1406319.89024038,2817622.03108249,4327716.82977849,2658904.86272127,1263845.87738061,2963125.32538655,1965651.94383379,3664873.49732501,2120928.32132831,2740146.54937228,3544407.15253833,3432913.95979916,4267807.12339398,3417879.53992516,2982621.90340218,3294870.28024574,1868093.42301911,1184899.34355277,2045592.03052532,3752134.79122965,4410556.96152967,1343326.51306539,2179115.30772272,1.27837580521373e-10,1.27837580521373e-10,-9.58781853910296e-11,2.55675161042745e-10,-5.11350322085491e-10,-2.55675161042745e-10,3.83512741564118e-10,9.58781853910296e-11,-1.27837580521373e-10,-1.91756370782059e-10,0,-1.91756370782059e-10,-3.19593951303432e-10,-1.27837580521373e-10,0,-1.27837580521373e-10,-3.83512741564118e-10,-2.55675161042745e-10,0,-2.55675161042745e-10,6.39187902606864e-11,6.39187902606864e-11,-1.27837580521373e-10,1.27837580521373e-10,3.19593951303432e-11,-1.27837580521373e-10],"Archive111_field28":[-900.24011822086,-854.132471119235,-223.42781305507,-286.02566509733,-566.611274993516,-861.127619998119,-534.872718804914,-259.23683653704,-594.400034091603,-398.341655469096,-733.558993149314,-429.050947848354,-551.24946109944,-709.30395103102,-687.807296391862,-851.07585521131,-685.214457444604,-599.239942034946,-660.225045989061,-376.954304756079,-243.501523374001,-414.357200829406,-751.834530689134,-878.019177608129,-275.169971155739,-438.53223171257,-900.24011822086,-854.132471119235,-223.42781305507,-286.02566509733,-566.611274993516,-861.127619998119,-534.872718804914,-259.23683653704,-594.400034091603,-398.341655469096,-733.558993149314,-429.050947848354,-551.24946109944,-709.303951031021,-687.807296391862,-851.07585521131,-685.214457444604,-599.239942034946,-660.225045989061,-376.954304756079,-243.501523374001,-414.357200829406,-751.834530689134,-878.019177608129,-275.169971155739,-438.53223171257,-900.24011822086,-854.132471119235,-223.42781305507,-286.02566509733,-566.611274993516,-861.127619998119,-534.872718804914,-259.23683653704,-594.400034091603,-398.341655469096,-733.558993149314,-429.050947848354,-551.24946109944,-709.30395103102,-687.807296391862,-851.07585521131,-685.214457444604,-599.239942034946,-660.225045989061,-376.954304756079,-243.501523374001,-414.357200829406,-751.834530689134,-878.019177608129,-275.169971155739,-438.53223171257],"Archive111_field29":[104.06265270601,98.7328701620926,25.8269882048391,33.0629449294624,65.4970503264042,99.5414697053442,61.8282532097284,29.966308258371,68.7092732973936,46.0460365100591,84.7952598405968,49.5958565669853,63.7213117519527,81.9915145139457,79.5066231379906,98.379542696182,79.2069056588092,69.2687392101464,76.3182714011346,43.57378004814,28.1473952864167,47.897342734915,86.9078083457451,101.494037978693,31.8080882688204,50.6918392165022,104.06265270601,98.7328701620926,25.8269882048391,33.0629449294624,65.4970503264042,99.5414697053442,61.8282532097284,29.966308258371,68.7092732973936,46.0460365100591,84.7952598405968,49.5958565669854,63.7213117519527,81.9915145139457,79.5066231379906,98.379542696182,79.2069056588092,69.2687392101464,76.3182714011346,43.57378004814,28.1473952864167,47.897342734915,86.9078083457451,101.494037978693,31.8080882688204,50.6918392165022,104.06265270601,98.7328701620926,25.8269882048391,33.0629449294624,65.4970503264042,99.5414697053442,61.8282532097284,29.966308258371,68.7092732973936,46.0460365100591,84.7952598405968,49.5958565669853,63.7213117519527,81.9915145139457,79.5066231379906,98.379542696182,79.2069056588092,69.2687392101464,76.3182714011346,43.57378004814,28.1473952864167,47.897342734915,86.9078083457451,101.494037978693,31.8080882688204,50.6918392165022],"Archive111_field30":[1004.30277092687,952.865341281327,249.254801259909,319.088610026792,632.10832531992,960.669089703463,596.700972014643,289.203144795411,663.109307388997,444.387691979155,818.354252989911,478.64680441534,614.970772851393,791.295465544966,767.313919529853,949.455397907493,764.421363103413,668.508681245092,736.543317390195,420.528084804219,271.648918660418,462.254543564321,838.74233903488,979.513215586822,306.978059424559,489.224070929073,1004.30277092687,952.865341281327,249.254801259909,319.088610026792,632.10832531992,960.669089703463,596.700972014643,289.203144795411,663.109307388997,444.387691979155,818.354252989911,478.64680441534,614.970772851393,791.295465544966,767.313919529853,949.455397907493,764.421363103413,668.508681245092,736.543317390195,420.528084804219,271.648918660418,462.254543564321,838.74233903488,979.513215586822,306.978059424559,489.224070929073,1004.30277092687,952.865341281327,249.254801259909,319.088610026792,632.10832531992,960.669089703463,596.700972014643,289.203144795411,663.109307388997,444.387691979155,818.354252989911,478.64680441534,614.970772851393,791.295465544966,767.313919529853,949.455397907493,764.421363103413,668.508681245092,736.543317390195,420.528084804219,271.648918660418,462.254543564321,838.74233903488,979.513215586822,306.978059424559,489.224070929073],"Archive111_field31":[272.267090488484,272.323429275696,272.838657240758,272.768031341815,272.600607115008,272.279771557123,272.581960063994,272.795464645743,272.549409858643,272.771179023595,272.399647402701,272.740523182583,272.618064208906,272.434087972579,272.447715523079,272.31271436693,272.483769388948,272.570202363906,272.485007621063,272.706425968392,272.811631582965,272.75560354884,272.390765328512,272.259641187176,272.765570052397,272.653525656676,247.925120061024,248.637562445835,265.659876710008,262.780491004,249.578169425161,248.5025416976,252.638468626267,264.897839110503,250.493142609648,243.343550620192,249.40204657698,244.143896013402,248.203471560077,248.897016957462,249.657632344274,247.985978175962,248.28154724622,248.497982333661,249.054214001212,257.265600513144,269.306477692149,247.437777828514,249.279990345333,248.346540897774,268.481478422447,254.879231898869,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive111_field32":[0.183524683610131,0.398163444344975,-7.45940667880419e-05,-6.85484904624977e-05,-0.000150168518309769,8.57694061901565e-10,-8.16307025978165e-05,-0.000149043475144008,-6.75465741007176e-05,1.23102588296849,-4.20874607791928e-06,1.13125573689823,0.132814151394867,-6.53002259692163e-06,-1.20606694644335e-05,-1.20613103430568e-05,5.31864997586383e-06,-0.140280796633874,-5.52725084681576e-06,-7.4593853507684e-05,-7.45918109439782e-05,0.097603462841179,-5.55837836455807e-06,-5.56042500835261e-06,-6.85460514431844e-05,-6.85485207469367e-05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive111_field33":[630000000000000]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1110.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1110.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1110.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1110_field1":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55.4459670431122,55.4460510056756,55.4345701547288,55.4190431224439,55.390649229918,55.3506631279291,55.2962553630011,55.2238131661793,55.1380099448228,55.0356748576209,54.9298458280257,54.8213887532195,54.7304194346966,54.6579336512858,54.6255712276647,54.6239983005387,54.6707577426704,54.7374777882526,54.8425608705705,54.9385928568785,55.0593733817698,55.1415526758912,55.2457696083543,55.2924283914719,55.3691420161387,55.3823588587233,55.4334640094473,55.4276922610681,55.4576743071946,55.4459503525636,55.4603297695019,55.4611253183451,55.4628214647757,55.4650258996182,55.4692981081554,55.4709102372388,55.4753094534689,55.4747231775435,55.4766959123455,55.4716701840676,55.4692667316027,55.4587017287624,55.4528196088012,55.4388509675206,55.4341779328255,55.421444558306,55.4236389790721,55.415190634717,55.4261489608758,55.4206208687206,55.4373994545796,55.4313436271804,55.449148669669,55.4412742415523,55.4558945945378,55.448434315398,55.4567120150188,55.4536848503905,55.4533434527845,55.4603292042095,55.4446520465107,55.4307558590992,55.4288951183865,55.4070724568034,55.392739356073,55.3589247709363,55.328817901343,55.2809332561142,55.2357018004181,55.1782822752972,55.1275756185118,55.0746242755701,55.0369864304407,55.0075885842944,55.0014469207501,55.0075152465151,55.0381085238449,55.0744637042548,55.1298278250958,55.1780357604217,55.2386908161672,55.2805353636543,55.3317282794764,55.3586735519117,55.3946373869976,55.4078339150064,55.4290403905301,55.4339698383285,55.4428614856848,55.4446524193791,55.4529977797886,55.43668114805,55.4453584661142,55.4279620367973,55.4302845364002,55.4102203987534,55.4034231883673,55.378740110169,55.3619788398116,55.3322594609986,55.308302575212,55.2773241437274,55.2542115302898,55.2304709146594,55.2194090416605,55.2114966462621,55.2198144517187,55.2292644814666,55.2548370890689,55.2747588127485,55.3082700613721,55.3292715781355,55.3608130457929,55.3772603237269,55.4004879344877,55.4122070292574,55.424350066428,55.43530573155,55.4341730325928,55.4529975172457,55.4446743524945,55.417077512793,55.4264825594804,55.3972299399565,55.3932140748867,55.3598943028126,55.341715320175,55.302853859226,55.2725232485009,55.2303067929487,55.1948996917734,55.1569321600894,55.1289644031202,55.1070117732531,55.1001263483259,55.1029146113187,55.1223025848764,55.1470735026366,55.1849854694733,55.2196318930582,55.2624035783474,55.2951690379713,55.3318434983541,55.3572250358864,55.3822786749617,55.4008308033825,55.4124171208074,55.4283897394944,55.425024799166,55.4446745345325,55.4483181099855,55.4187697687863,55.4327682803964,55.4048994449483,55.4063976691602,55.3779089436517,55.36568727094,55.3337821738351,55.308353520372,55.2717903927357,55.2370532652709,55.1995069391195,55.166123492354,55.1395848925157,55.1248266487167,55.1232433783273,55.1369389827639,55.1598353146176,55.1935119954265,55.2271557259152,55.2652970418645,55.2976362879827,55.3295088120341,55.3560682502596,55.3766536876141,55.3986889050194,55.4055722266071,55.4279959438489,55.4185139996168,55.4483179862938,55.4438257384068,55.4093949476837,55.4236375930607,55.3924239176024,55.390821391129,55.3599851844523,55.3426537806134,55.3084505400129,55.2760859927046,55.2354602772222,55.1905175677123,55.1449493516669,55.098497161009,55.0643856369987,55.0436171471027,55.0469329935433,55.0692340149443,55.1079779942039,55.1544080165202,55.202066139463,55.2469841194401,55.2872934662603,55.3200857676177,55.3512698654395,55.3698906880176,55.3958048487965,55.3994938492929,55.4254384017948,55.4130078633275,55.443825819398,55.4451694214301,55.4117648272537,55.425996346863,55.3981372281854,55.39618127672,55.3702273342795,55.3518005173547,55.3216405383128,55.2847481962394,55.2414705281599,55.1813573477882,55.1177875916649,55.0414271369826,54.9813986287291,54.939996511383,54.9434289351191,54.9793147303796,55.0444213223184,55.1139620345488,55.182617963119,55.2375689035764,55.2862695800411,55.3191804375806,55.3534865732315,55.368864359094,55.397429994977,55.3973449750258,55.4267169000866,55.410852628565,55.4451693690595,55.4429300107363,55.4116730131137,55.4231657448788,55.39937028406,55.3938881144,55.3733002675209,55.351214519182,55.325360321033,55.2814563916284,55.2326994839299,55.1479019441462,55.0487306636625,54.9141666428725,54.7971332279989,54.7145437546613,54.72052377119,54.7951678966265,54.92203490455,55.0461074636509,55.1561008006834,55.2312526253623,55.291667178018,55.3252430001627,55.3614330882299,55.3729476644004,55.4021337628876,55.3983563918504,55.4281816361629,55.4109173999872,55.4429300384438,55.443672670556,55.4192666653121,55.4263997008566,55.4116118364886,55.4031640627747,55.393332165077,55.3704141727814,55.3550518251727,55.3080830955417,55.2561507182593,55.1380897687013,54.9761607823002,54.732000258484,54.4944907662424,54.3247861215743,54.3317862572671,54.4890855183297,54.7395138375211,54.968391355022,55.1459333308608,55.248773003956,55.3185093767135,55.3484236064282,55.3815083397454,55.3864360651519,55.4131485690362,55.4051611729987,55.4332660832411,55.4155080284474,55.443672652314,55.4429577724147,55.4290184187167,55.4295617981033,55.4272860050526,55.4156946268946,55.4215225500346,55.4018448023732,55.40626242827,55.3670070179432,55.3234720367637,55.1723837594346,54.9193664474974,54.496079863219,54.042670296123,53.714963137659,53.7232913824039,54.0367062648549,54.5089468621984,54.9147516460936,55.188377591411,55.3178912937102,55.3839003319836,55.3983387565669,55.4186047667294,55.4115889355056,55.4308562099813,55.4173995570256,55.4401381178286,55.4232964482392,55.442957770025,55.4444354706867,55.4453659745286,55.4377110956285,55.4528087085998,55.4396511549702,55.4682295902572,55.4598958906993,55.499487563124,55.4900074560946,55.4830829887035,55.3205877706942,54.9657316161767,54.2988595492635,53.5242593726207,52.9553437519888,52.9637649375648,53.5163520751083,54.3173320272593,54.967347963296,55.3467309160622,55.480474448289,55.5122873090113,55.4884962074294,55.4803673793958,55.4534859457112,55.4587779743321,55.4383744203454,55.4515955653329,55.4373618120851,55.4444354711104,55.4451090263463,55.4657356192176,55.4481908508654,55.4850404136206,55.4724049751364,55.5308495281655,55.5439515520796,55.6373144200537,55.6882779859864,55.7620900161368,55.638417354462,55.2128003991913,54.2911677830124,53.1431119683104,52.2833274370836,52.2899387923115,53.1279015236878,54.309035292731,55.2186345571271,55.6728877781313,55.7621042682416,55.7154330875354,55.6235464311324,55.5679255480069,55.5114236594958,55.4953476345092,55.4657481104292,55.465218958536,55.4545585580262,55.4451090008385,55.4483761662354,55.4918284908029,55.4635970091283,55.5256981241165,55.5158167700964,55.6096262556166,55.6526987828634,55.8143233874961,55.9515627813685,56.1463194952055,56.119927661202,55.6917812198004,54.5847036407423,53.1204835704858,52.001104999718,52.0047867830548,53.0924012956999,54.5893093601219,55.6885285554238,56.1516104464649,56.1429754076729,55.9800817195421,55.7977372948581,55.6800378899308,55.587124880278,55.5430514897518,55.5035037815073,55.4841826217134,55.47967920638,55.4483761851886,55.4502272359726,55.5207448002825,55.4808176260821,55.5703121186965,55.5646259566549,55.6952575571939,55.7706905046527,56.0007528022168,56.2258792354916,56.5442239106131,56.6356420712939,56.2629869744514,55.0856754180849,53.4555262188271,52.1876617489802,52.1904681665714,53.4194814176064,55.0736013465301,56.2366894299328,56.6488794197553,56.5282354859808,56.2493681020871,55.9788183867097,55.7979019941689,55.6680471504196,55.5929453120244,55.5433798221568,55.5026611429494,55.5050037417725,55.4502271839188,55.4557427082145,55.5527166984107,55.5014602357607,55.6173763196374,55.615459112715,55.7782867864827,55.8788211791042,56.1575929790399,56.4364466811478,56.8241559420672,56.9803871767119,56.6561178982466,55.4911720923014,53.8480102758934,52.5611646025934,52.5670666399619,53.8181400374062,55.4782466583985,56.6164441201075,56.9775980172762,56.7971452193611,56.4565421166199,56.1353144528547,55.9090201254821,55.7524703029061,55.6475704938734,55.5916733426169,55.5259929774022,55.5390015664526,55.4557427325232,55.4577259206262,55.583164309702,55.5202483407293,55.6599450553547,55.6599277012808,55.8452815514843,55.9563686355933,56.2495702831532,56.5249322705416,56.8904071526165,57.0080842630033,56.6601365364263,55.5213958165761,53.9515180307049,52.7411749726839,52.7538957590673,53.9416144018866,55.5211380754847,56.6226529357564,56.9981622084348,56.8552817777404,56.5366068070883,56.2217586217343,55.9810177680683,55.8150664225289,55.6877223862551,55.6303964561416,55.5420211380757,55.5657956232551,55.4577258304825,55.4651424297162,55.6123947488435,55.5397051552352,55.6965562238434,55.6950391024561,55.8893968496142,55.9935548269024,56.265346172188,56.4830839407443,56.7472065265554,56.737660289485,56.2985776486932,55.1836244691203,53.7463225784499,52.6725517433034,52.6938587064364,53.7646287821393,55.2098591815677,56.2833543392593,56.73907584658,56.721089653565,56.4990840155181,56.2451029071571,56.0221113036697,55.8677629087905,55.7260930715159,55.6751283841696,55.562860759845,55.6019697065188,55.4651425282514,55.4652744067518,55.6343097193378,55.5523577896059,55.7200290393169,55.7141055811792,55.9043368395175,55.9877895859976,56.2124312511645,56.3441046141247,56.4727808355968,56.3160710435583,55.7898523169119,54.7407528414399,53.4936337778557,52.5955221226267,52.6164835628609,53.5168552301296,54.7690502022027,55.7821455642066,56.3167232732303,56.4441428973016,56.3474995930367,56.1835503105454,56.0009761736915,55.8756845908638,55.7317088888725,55.6941890397007,55.5666602220425,55.619222657415,55.4652742595748,55.4738559532735,55.6513442246723,55.5640356287207,55.7325351308052,55.719524545437,55.8933723298366,55.9480293959708,56.1136056677055,56.1585503096156,56.1652245474175,55.9028963576782,55.3491110881335,54.4292555319714,53.4211017254212,52.7220790506029,52.7358734458119,53.439572856854,54.458087595129,55.357831659476,55.9196276517617,56.1593600829419,56.1754055420245,56.1053150970096,55.9707126637602,55.8846449354189,55.7428143783619,55.7242143755186,55.579881630011,55.6495429373758,55.4738561277835,55.469928363166,55.6564235169256,55.5650848967852,55.7280332686439,55.7076327696615,55.8569809096008,55.8815328720795,55.9869637759948,55.9610154054322,55.8785690285598,55.5657723590451,55.0411279473308,54.2833295526901,53.5115382807894,52.9955776009659,52.9967979965289,53.5086532507504,54.285399448785,55.0319484441205,55.559950719672,55.8563329497409,55.9498744905932,55.9602116308077,55.8740947824949,55.8335494138041,55.7051723527887,55.7108756426724,55.5648587307362,55.6464836812385,55.4699281351046,55.4792498914007,55.655656309805,55.5662413963425,55.7133737416294,55.6859318219067,55.8046306813464,55.8023986242321,55.8540978219116,55.7799188139961,55.6445446512755,55.3273247162158,54.8655407323969,54.2695039280931,53.7003128533358,53.3368597592368,53.3372254246354,53.7051200098375,54.283375259073,54.8843368697557,55.3509115945416,55.6645782206643,55.8011298019623,55.8706835155205,55.8202664336238,55.8191668405318,55.6985906031719,55.7257262727785,55.5714602313482,55.6661964564558,55.4792500300946,55.4697065850498,55.6409218765453,55.5547780433687,55.6826513573596,55.65065711545,55.7361987853863,55.7118945674172,55.7166589467412,55.6105416100931,55.443624191536,55.1406667821095,54.7400791469739,54.2696505628502,53.8413250443185,53.5768695099253,53.5675934992289,53.8247802319916,54.2448231168228,54.71694167937,55.1104182486475,55.416470707469,55.5740491813955,55.6905117323578,55.6762889273285,55.7190800801849,55.6216763567445,55.6757654803337,55.5362972254092,55.6366674849728,55.4697062534177,55.4798040086887,55.622489320668,55.5467876538042,55.6468436904202,55.6129008987467,55.6652972792599,55.6267509809255,55.5967797625099,55.4778464032416,55.3026767455529,55.0326951579268,54.698452327186,54.3365472358449,54.0211436364822,53.8392604664736,53.8397350080448,54.0381205611445,54.3579939914751,54.739892836254,55.0696342055575,55.3558208675582,55.5107817981619,55.6483433945679,55.645874302957,55.7107977968158,55.6175423703447,55.6836336936103,55.5422848357938,55.6461711169109,55.4798044078427,55.4643103950411,55.5906307399767,55.5250533850161,55.5978120059132,55.5632569966756,55.58193443391,55.5295752350181,55.4661670445167,55.3337093738313,55.1467712963387,54.8943479446492,54.5958574513204,54.292666498689,54.031627980614,53.8814190760895,53.8654085182778,54.0061225000551,54.2416384792779,54.5498779435386,54.826642278196,55.0993140036477,55.2607549373523,55.430793646124,55.461174832684,55.5663222645817,55.5070498049744,55.5983019284041,55.4893174280568,55.590365360604,55.4643099486642,55.475057481749,55.5598918128023,55.5113177740941,55.552654359268,55.5219383632209,55.5151664030086,55.4607282887524,55.3841704495586,55.2605021960029,55.0905977314006,54.8818496473798,54.644422362432,54.4191868079967,54.2331445331828,54.1401671922208,54.1452901442315,54.2723874051332,54.4638902027136,54.7216477862384,54.9461099941946,55.1840760617863,55.3156239017132,55.4731251690209,55.4897661828496,55.5904021850547,55.5251554501392,55.6102817583756,55.5016717513035,55.5936541386214,55.4750580024849,55.4549247850124,55.5179852150416,55.4812620625916,55.4931152305935,55.4584349405921,55.4196607492192,55.3466771568609,55.238340778193,55.0927243789232,54.9001085099058,54.6805049401387,54.4365090777854,54.2119732931169,54.0209058005851,53.9162978872314,53.8917992249002,53.9828933768117,54.1312948843641,54.3623184491675,54.572561552871,54.8247604795705,54.9841153189875,55.1861598774918,55.2526217689717,55.3986043691335,55.3853021981436,55.4948238606205,55.4360727420499,55.5186855516552,55.454924225637,55.4655110026196,55.4865310237444,55.4679389125822,55.4599042737911,55.4333145664018,55.3905134490039,55.3306727847965,55.2393704261466,55.1283291037904,54.9846377538191,54.8315927858146,54.667476167568,54.5280522666932,54.4170655645551,54.3733557223864,54.3821250921839,54.4732395514856,54.5917404194434,54.771094632036,54.9168845190842,55.1029334565718,55.1988785305967,55.345984715206,55.3675668016166,55.4751685393145,55.4388981275583,55.5211479191153,55.4586756918388,55.5212050937068,55.4655116522447,55.4437032946149,55.4448116338022,55.4248828255843,55.3878743086308,55.3366542852425,55.2506267575911,55.1423277617554,54.9886536275827,54.8083853372162,54.586502757737,54.3544363298244,54.1089414925556,53.8981384368841,53.7195766340224,53.6305729567136,53.6027906799411,53.6918064021256,53.8201666962158,54.0495837595732,54.2536894162368,54.5280135224811,54.7112623223086,54.9510565217655,55.063199179548,55.2365544413155,55.2806156131723,55.3874401825476,55.3945805643484,55.4409597364084,55.4437025705769,55.4458822185979,55.4458459507362,55.434364495339,55.4188349398284,55.3904386985539,55.3504483351428,55.296035841114,55.2235870856776,55.1377766180696,55.0354330030591,54.9297205966269,54.82112967422,54.730153142129,54.6576617321106,54.6252966988148,54.6237236157294,54.670486528893,54.737211758669,54.842302925328,54.9383427549614,55.0592530925943,55.1413194814886,55.2455447058686,55.2922086783933,55.3689281703041,55.382147952551,55.4332564821083,55.4274863005594,55.4574695574078,55.4458909277767,88.7133956653732,88.7133221155536,88.6945294706366,88.6685519231406,88.6223978752462,88.5563852705635,88.4673997876407,88.3483374144746,88.2076424528978,88.0395814242403,87.8658337621737,87.6874594248061,87.5376594659432,87.4179899841193,87.364029935988,87.3605058555681,87.4364272896521,87.5452843817998,87.7174007933786,87.8751121411608,88.0735343358605,88.2092263281637,88.3804373594784,88.4584594699658,88.5840938140237,88.6075539822957,88.6905533698516,88.6828875913806,88.7305595101184,88.7133874324189,88.7355858761298,88.7363587270411,88.7392095262368,88.7411112274488,88.7470051680874,88.7471825334168,88.7520103508796,88.7477027478964,88.7474528537724,88.7353666610503,88.7276764427178,88.7071347154124,88.6948866619889,88.6707277367124,88.6628252233339,88.6433215573268,88.6491149225307,88.6386101288754,88.6601123762166,88.6549175552691,88.6859680489038,88.6792437085599,88.7112322478786,88.7003091493356,88.7262645552397,88.7148514220987,88.7298454289013,88.7248594020781,88.725543765031,88.7355852859873,88.7120036657069,88.6911167775501,88.6880178244871,88.6549231143334,88.6330112986486,88.5814913905212,88.5354586892701,88.4622822682853,88.392964626154,88.3049160403435,88.2269055803986,88.1452892070635,88.0869382676152,88.0410691531396,88.0308301374509,88.039315011674,88.0856364501517,88.1409329408819,88.2257546261195,88.2997207671765,88.393099310727,88.4576154585259,88.5366508680304,88.5783841062841,88.6339743537107,88.6545683114078,88.6873004555613,88.6951564762961,88.7087872574617,88.7120040464882,88.7233692323579,88.6978817493445,88.7106881919509,88.6825292876216,88.6846976573829,88.6516163506644,88.6387376612775,88.5976576847657,88.5685999339148,88.5192875181046,88.4790495789793,88.42829826892,88.3904471682766,88.3525076051158,88.3353135484201,88.3240001340161,88.3388545453175,88.3560644213436,88.3988253709669,88.4328009422945,88.4879474460883,88.5231799722147,88.5746399368167,88.6019683427673,88.639701285568,88.658888716328,88.6787203088828,88.6961034006065,88.6949477941534,88.7233689764369,88.7112753674431,88.6689599594013,88.6832117619311,88.6379170595558,88.6315029167629,88.5797177651621,88.5512096662686,88.490599408291,88.4429707763187,88.3768120251338,88.3209577940415,88.2610565905493,88.216538021796,88.1814452472849,88.1698561927284,88.1735873673493,88.2034028705489,88.2419459805977,88.3012097752303,88.3556498828762,88.4228879591985,88.4746369580222,88.5324927938127,88.572708487019,88.6123699279156,88.6417686215369,88.660295722141,88.6854487927236,88.6806811708146,88.7112755484288,88.7159664642049,88.6700469467428,88.6912030598605,88.6471563415957,88.6484675393251,88.6030297066718,88.5825615951669,88.5313947434316,88.4900683151404,88.4314520743379,88.3756548315209,88.3157343675269,88.2625709256671,88.2205707780465,88.1974465700313,88.1954462799931,88.2177598183836,88.2548057767409,88.3089051680058,88.3630226766788,88.424157252283,88.4760714720724,88.5271578232213,88.5696617344681,88.6027728368507,88.6377836851062,88.6492152595227,88.6843799173984,88.6701803430487,88.7159663476838,88.7094801649819,88.6562730977457,88.6779362755704,88.6292291472526,88.6262052906443,88.5777885060535,88.5500557003906,88.49604891106,88.44458028001,88.3801622930536,88.3087534309187,88.2363324197124,88.1625113540739,88.1081884980679,88.0750699406851,88.0800683258648,88.115215958803,88.1764410802201,88.2499444834202,88.3254687760491,88.3967640591774,88.4607538832252,88.5129804376685,88.5624729771927,88.5923612519323,88.6333207259624,88.6397292548935,88.6804236495515,88.6616337772418,88.7094802436158,88.7111675215059,88.6592488952829,88.6808726495054,88.637069507776,88.6332592559488,88.5921270294606,88.562391169579,88.5143573343517,88.4555338126994,88.3866443290682,88.291240205703,88.1903287095807,88.0694662201026,87.9744081953752,87.9091023209368,87.91463373733,87.971680723158,88.0748669234862,88.1852397954905,88.2941475294183,88.3815454937881,88.4588758877051,88.5114393159469,88.5658429700423,88.5907098932585,88.635771585952,88.6362872411507,88.682258722007,88.658082991242,88.7111674718481,88.7080740095003,88.659535872632,88.6769949157576,88.6397542997801,88.630675965698,88.5981770883106,88.5630269851481,88.5219478985471,88.4523674009019,88.3748831312942,88.2406295338608,88.083356872057,87.8704848729372,87.6851242498662,87.5545907811559,87.5638810742178,87.6819978811162,87.8825362278072,88.0789547131878,88.2529997961211,88.3722347461197,88.4679023751049,88.5214547078038,88.5786703974597,88.5974087863208,88.643339439598,88.6380445315422,88.6846974661881,88.658299399585,88.7080740335953,88.7092788932161,88.6711899479198,88.6819769191317,88.6587274046283,88.6451121136779,88.6294380349942,88.5931507563752,88.5685679081119,88.4943614814696,88.4118302939683,88.225146836867,87.9685270188903,87.5823093137462,87.2061972534714,86.9378273276578,86.9486845252083,87.1977318441838,87.5939297395831,87.9564145058705,88.2374202243187,88.4005384026707,88.5108510963769,88.5585700968517,88.610731517175,88.6189917956172,88.6608879287083,88.6488805438359,88.6927642853049,88.6654518291155,88.7092788728939,88.7086768289836,88.6867546366126,88.6874720150447,88.6838935303402,88.6656696790066,88.6747311922108,88.6439751674652,88.6507460986717,88.5891349142924,88.519893343381,88.2809031820344,87.8793322615644,87.2083439300529,86.4887978911828,85.9691393063245,85.9818458226228,86.4789301288594,87.2276989775304,87.8716432283014,88.3054557238473,88.5110639147485,88.615356486545,88.6384096913359,88.67006000482,88.6592925663613,88.6892714582642,88.6685276446386,88.703907313138,88.6778863313018,88.7086768206476,88.7114077378173,88.7124311986646,88.7006366961475,88.7242733678265,88.7039857399842,88.7489473341056,88.7366223104411,88.7991716843527,88.7851832100101,88.7738077870087,88.5160150532782,87.9504391317496,86.8890098977755,85.6551791478576,84.7497115222523,84.7625840378217,85.6423486638584,86.9173160398185,87.9528972676148,88.5568474841921,88.7700048771314,88.8200896351103,88.7822902264292,88.7686421435258,88.7261484477841,88.7338477919389,88.7018891082087,88.7222630153,88.7000010525094,88.7114077320519,88.7132294857797,88.7446846225405,88.71783746423,88.7756245978447,88.7566931986166,88.848890308892,88.8711188842478,89.0190685366328,89.1014243772623,89.2176910848834,89.0194984384776,88.335908286772,86.8603989693804,85.0226226456814,83.648107649757,83.6585281843313,84.9993783871508,86.8889810856114,88.346029826301,89.0741720298293,89.2185036625064,89.1441514539903,88.9979499060189,88.9085925259132,88.818813367446,88.7924707730587,88.7457046345254,88.7443407339758,88.7273866173215,88.7132294517362,88.7190493086675,88.7858543964951,88.7427506038482,88.8401963090639,88.826229945401,88.9744206185745,89.0448520466317,89.3013602289162,89.5212800995656,89.8291761577754,89.7830060444498,89.0880667143562,87.3047338413454,84.9487255290491,83.1510327185438,83.1571836395836,84.9063708944454,87.313958840233,89.0850340700814,89.8339942657183,89.8251547888242,89.5663077921934,89.2758991880614,89.0875212226963,88.9394926418609,88.8686151017664,88.80566140913,88.7747480199083,88.7668843618978,88.7190493187788,88.722967558733,88.8316275815869,88.770788661089,88.911260500074,88.9045672890898,89.1111047943434,89.2335652191995,89.599099833874,89.9594387614639,90.4640937863861,90.6044066790438,89.9938107106499,88.0903615209592,85.4588801274743,83.4165770617277,83.4211180133337,85.4034658603467,88.0729920042336,89.9544386583797,90.626326231408,90.4401474380944,89.9966071041094,89.5654176305578,89.2761707853237,89.0690246211418,88.948771788416,88.8695357048992,88.804821314679,88.8072901842157,88.7229674964273,88.7323978281807,88.8821548952936,88.8040752107194,88.9860925814314,88.9859848529701,89.2435786991021,89.406519332529,89.8498216498705,90.2965691307799,90.9128962508912,91.1588857378148,90.6289308080485,88.7497354970164,86.1009681401559,84.030144338927,84.0389854966868,86.0535151582305,88.7283486696052,90.5662394318743,91.1540115469625,90.8706350622991,90.3277057612232,89.8151233752371,89.4534276150264,89.2033494229592,89.0358387796244,88.9459838056847,88.8421633650345,88.8606092094861,88.7323978479664,88.7366155291932,88.9304116331204,88.8346402930916,89.0539808763167,89.0573796472767,89.3506494998431,89.5307512558284,89.9972186991944,90.4391259312584,91.0217529260049,91.2105567839625,90.6518032711894,88.8290805644,86.3144690738986,84.3764940464836,84.3956727843208,86.2970092418881,88.8258854667516,90.5908800287769,91.1933579331519,90.9662815324195,90.4571233870072,89.9541504681417,89.5693915692876,89.3040097502565,89.1008917714159,89.0083052718056,88.8686540827107,88.9036409818094,88.7366154286886,88.7487878117593,88.9766558104551,88.8658759277194,89.1122016092846,89.1135876529369,89.4210887206566,89.5903436198738,90.0227194571347,90.3730645476069,90.7949592919696,90.7838489127268,90.086960005717,88.3146048306555,86.0265621750774,84.3169927032102,84.3498144499203,86.0535446741787,88.3531772086538,90.0607156432902,90.7838557280757,90.7527540715874,90.3969163345283,89.9905723942255,89.6342878520645,89.387035801152,89.1615835080032,89.0785163223969,88.9017488794877,88.9600126728294,88.7487879041817,88.7499557051939,89.0114908250722,88.8865764305413,89.1497773671754,89.1443164072263,89.4451260951872,89.5813372165482,89.9384386272142,90.1512596124348,90.356995108775,90.1111183529658,89.2762985715752,87.6114438073248,85.6309314544096,84.2052358198695,84.2383465429381,85.6680969769945,87.6563878672042,89.2644847704181,90.11194781522,90.3123396942879,90.1567108215473,89.8939438328502,89.6023919946763,89.4011445738258,89.172222628689,89.1100615597119,88.9091332663689,88.9884457914888,88.7499555489254,88.7633814344488,89.0384804687854,88.905074375039,89.1696084298559,89.1528815343833,89.4276183157268,89.5177316069861,89.7805254601147,89.8543861343328,89.8647116668783,89.4484243198146,88.5669468414694,87.1042382277181,85.5009356266096,84.3902511295317,84.4124495289562,85.5311636051063,87.1503378134447,88.5807395402051,89.4738344434792,89.8544234548078,89.8793266757987,89.7663851149805,89.5519554255027,89.4130654337327,89.1884106044973,89.1559202776817,88.9294315519151,89.0349489434036,88.7633816093797,88.7578649599217,89.0467305588088,88.9071185406137,89.1627269091416,89.13401010052,89.3697606095022,89.411519799177,89.5784053866967,89.5385947626181,89.4062864479015,88.9079132164992,88.0705384671745,86.8624552273694,85.6320709260785,84.810376629154,84.8130072695188,85.6293260301927,86.867859829984,88.0582914540767,88.9006245388625,89.373151864788,89.5226311759763,89.5380509274635,89.4011925237638,89.3344193326594,89.1311726792168,89.1368536800207,88.9073182942811,89.0319856829244,88.7578647243639,88.771683647502,89.0455763862601,88.9084064665625,89.1392725782265,89.0989800100104,89.2861290135694,89.2846738273817,89.3658827047908,89.2484032366581,89.0312370002677,88.5245855000146,87.7860343561768,86.8335292491135,85.9237501534922,85.3429230100097,85.3433265597308,85.9306859341352,86.8542936222273,87.8140052331959,88.5596174368311,89.0603031921129,89.2792119907308,89.3894047978906,89.3105114254929,89.3068864046212,89.1173587884706,89.157183907923,88.9159766199012,89.0608655680064,88.7716837914818,88.7570251783379,89.0224798224595,88.8903523121351,89.09073838078,89.0426494211972,89.1772899255994,89.1401867554756,89.146904743888,88.9782304424434,88.7111522671399,88.2273044311446,87.58691216536,86.8350553746369,86.1505505384501,85.7281451418282,85.7140733062643,86.1259051554152,86.7984306437486,87.5535696821319,88.1833737775494,88.6720493283927,88.9245676253086,89.1089758197043,89.0873410839497,89.1527254551448,88.9993331504729,89.0813964616198,88.8624825238735,89.0169934318053,88.7570248395563,88.7713168461208,88.993383656511,88.8766227656722,89.0335522430278,88.9816487466638,89.0637947718235,89.003197343969,88.9544256025255,88.764397826029,88.4836483063818,88.0513896007317,87.5160344806532,86.9362030368004,86.4307359467528,86.1386461479729,86.1386310492409,86.4550595664975,86.9665392522343,87.5767999897502,88.1048264422085,88.5620171063148,88.8115137076856,89.0306180081059,89.0295938767234,89.1315119920864,88.9867097851841,89.0887879675862,88.8687123240845,89.0287086946718,88.7713172687889,88.747085791593,88.9431513444606,88.8421413473844,88.9560351410646,88.9025787787556,88.9316958504764,88.8489565026181,88.7478030116313,88.5367763974651,88.2386796049204,87.8359002882588,87.3597612572246,86.8759182942757,86.4598776289431,86.2207446739448,86.1966566058538,86.4225200772224,86.8003819354221,87.2931397651386,87.736246948326,88.1705769532563,88.4288753050353,88.6976523828616,88.7468708721899,88.9108003944981,88.817892427986,88.9588673197479,88.7878065613685,88.9443256682958,88.7470853350757,88.7619111813011,88.8945499439526,88.8188926671422,88.8836420113811,88.8352205042826,88.8236839775229,88.7363311237697,88.6131852101354,88.4143520786067,88.1414226381561,87.8057870378823,87.424217880346,87.061662438176,86.7619966390721,86.611034767261,86.6177189131932,86.8195928098208,87.1258563247333,87.5378644981144,87.8986364741303,88.2796529728543,88.4933898041498,88.7454193546588,88.7765003208215,88.9363861893487,88.8372170200013,88.9706692932127,88.802624235037,88.9452378727001,88.7619117393335,88.7302628503696,88.8284080379671,88.7713851898613,88.7900599515335,88.7353598556471,88.6743218089671,88.5586602375918,88.3872957472079,88.1562607486705,87.8510251989713,87.5024917346996,87.1157742514412,86.7596899714432,86.4576347687528,86.2926875341789,86.256047697039,86.4022316533233,86.6403016663957,87.0076922812661,87.3429085879096,87.741904267387,87.9950744250079,88.3127126851207,88.4179869864943,88.6459014538295,88.624941758591,88.7951962979825,88.7025422927801,88.8313587335352,88.7302622734989,88.7448910844611,88.7784045272936,88.7482699090486,88.7351308879878,88.691685159934,88.6222620167666,88.5246964324166,88.3765890738756,88.1959001786141,87.9626260617776,87.7135765781204,87.4466339138767,87.219024378238,87.0373616305317,86.9640636528543,86.9760386691745,87.1210498548153,87.3118041156095,87.6007352913187,87.8380983032694,88.1390532815978,88.2982965788513,88.5363054075361,88.5769271058966,88.7498351014338,88.697513044629,88.8279255318443,88.7328062359857,88.8304763931067,88.744891779876,88.7101433079812,88.7130634355692,88.68118802419,88.6240113890169,88.5430032397453,88.4085822157759,88.2380557090495,87.9970649954346,87.71348002641,87.365140201772,87.0001734697819,86.6148926742632,86.2835189874491,86.0040781007656,85.8644764830848,85.8228385568847,85.9629585589081,86.1670493131112,86.5269032011733,86.8496357483188,87.2787208034737,87.5680180078177,87.9419844235202,88.1189534098789,88.3887679525761,88.458049006146,88.6246255606411,88.6348149588583,88.7085636779266,88.7101425441149,88.7133530593952,88.7132183815699,88.6944250545975,88.668444799873,88.6222881827541,88.5562709386301,88.4672802772229,88.3482107189356,88.2075077963327,88.0394373843078,87.8657569992934,87.6872963742009,87.5374884307553,87.4178126956501,87.3638497312609,87.3603254294273,87.4362506762591,87.5451134549358,87.7172388023566,87.874958777266,88.073462928547,88.2090916105707,88.3803118350467,88.4583395958232,88.5839804642053,88.607443777251,88.6904469494019,88.6827827871405,88.730456097942,88.7133575664077,99.8021821419133,99.8017693631324,99.7802486124582,99.74961934207,99.69663019275,99.6198232872503,99.517171511966,99.3792495178373,99.2167084786992,99.0222974564346,98.8214922268552,98.61512158239,98.441811861923,98.3031250142005,98.2403920400462,98.2357270368803,98.3230889781745,98.4483764648913,98.6472099154563,98.8293534466466,99.0589839532277,99.2161270423892,99.4143706817485,99.5052815014106,99.6505731186383,99.6787065385633,99.7742467727759,99.766521980073,99.8207937503828,99.8021801398538,99.8267859355116,99.8280467985314,99.8311807477866,99.8327836244198,99.8390522577271,99.8383852686074,99.8429992871299,99.8368999631831,99.8353490321847,99.8202115570038,99.8101109988906,99.7855864484868,99.7707446822494,99.742840458225,99.733847962748,99.7122134863614,99.7197118492868,99.7089990116501,99.7348285462897,99.7302669584405,99.7669167209878,99.7603054110314,99.7977346876277,99.7858743734157,99.816162301382,99.8033191475656,99.8209669377415,99.8151305106849,99.8165129328717,99.8267856553277,99.8011105646022,99.7785842746827,99.774949410861,99.7386773173475,99.7145326717423,99.6578555813324,99.607135940014,99.5264856234326,99.4500091082526,99.3527893986527,99.2665511042255,99.1762016173728,99.1114647396635,99.0603855920966,99.0486770329197,99.0575927066378,99.1084634991921,99.1692461127779,99.2629036303447,99.3445302260843,99.4478749399138,99.5191919227171,99.6067994419519,99.6529615659319,99.7146548948479,99.7374242512578,99.7737907188797,99.7824324106999,99.7977185788505,99.8011107533059,99.8127358337264,99.7848827591329,99.7986122178034,99.7668240847314,99.7684879289665,99.7307907264813,99.7153265862306,99.6683156096906,99.6345444411925,99.5781847718737,99.532010515058,99.4743244111011,99.431357121447,99.388697379968,99.3696502714873,99.3575786261401,99.3750937037184,99.3954593979485,99.4445126827612,99.4837249105617,99.5465570037769,99.5869317826909,99.6453569872297,99.6765199902162,99.7192974500179,99.7410110043185,99.7635697341961,99.7829600267163,99.7820795078865,99.8127357247053,99.7998952372314,99.7535037951081,99.7691115495905,99.7189166988102,99.7117659158883,99.6542567788527,99.6225468384262,99.5551347050598,99.5020782924911,99.4283472907352,99.365988133038,99.2990411221012,99.2491463351918,99.209693311369,99.1964113390723,99.2002109761083,99.2331482721244,99.275886510046,99.3418424509059,99.4024958638782,99.4775391970686,99.5353242228646,99.600024747755,99.6449769893858,99.6894277787472,99.7222672187737,99.7431655858935,99.7711543091053,99.7662570325027,99.7998953249463,99.8045543366144,99.7538883352112,99.7770469525634,99.7277339187519,99.728735568576,99.6776489224576,99.6542480885568,99.5966109780071,99.549897813341,99.4839303282876,99.4211817290395,99.3539366979671,99.294403908654,99.2474699060873,99.2217842415376,99.2197795248635,99.2450458156168,99.2868027121433,99.3476858088121,99.4085680712156,99.4773421627504,99.5357170145387,99.5932232627221,99.6409589872681,99.6783108193661,99.7175105038245,99.7305991247164,99.7697517161037,99.7543178720458,99.8045542899459,99.7977463980074,99.738943711469,99.7628227184732,99.7085703384201,99.7050450848443,99.650981087602,99.619888717308,99.5594830379602,99.501872292674,99.4297741554983,99.3498971721702,99.2688679752203,99.1863484771298,99.125576862888,99.0885267112892,99.0939756993572,99.1331236047477,99.2013720447918,99.2834429417283,99.3677945987528,99.4475678310198,99.5191467160822,99.577727069159,99.6331164770521,99.6667804782521,99.7125592569722,99.7200235947682,99.7653667644009,99.7448235498653,99.7977464360957,99.7994794818761,99.7418363321202,99.7657057271194,99.7167035134511,99.7121983918511,99.6660537286267,99.6325946437633,99.5786754167175,99.5127705813774,99.4356052394465,99.3289943259669,99.2162768200537,99.0814933683779,98.975529873302,98.9028396554569,98.909067724727,98.9727598423071,99.0878603947858,99.2110958913122,99.3327134006666,99.4304883791392,99.5169726592486,99.5759529824131,99.6368259988159,99.6648953093834,99.7152438973066,99.7161180651135,99.7673419040788,99.7407102730542,99.7994794628536,99.7964019122846,99.7423040717851,99.7616810605515,99.7200542711035,99.709824046702,99.6734060818833,99.6340754704671,99.5880238937105,99.5102655209677,99.4235964502653,99.2737445179036,99.0982158806762,98.8608796630989,98.6542361553013,98.508787679164,98.5190918059671,98.6507042966368,98.874160756752,99.0931783933716,99.2873044482711,99.420484464996,99.527335746649,99.5873458093528,99.6512932224295,99.6724744608403,99.723765474888,99.7181277119853,99.7701342994825,99.7409603004923,99.7964019235976,99.7979313328558,99.7551072385479,99.7671912570938,99.7410639921347,99.7258282312896,99.7081356306998,99.6675945071132,99.63994660461,99.5570882538696,99.4647882518585,99.2564301567947,98.969955884698,98.5390687232454,98.1194213949167,97.8200706350966,97.8321124226641,98.1099406106911,98.5519251017973,98.956470482587,99.2701170810779,99.4523492742544,99.5755530366606,99.6290189181839,99.6872794701085,99.6967049763731,99.7434566124004,99.7302623380419,99.7791898014174,99.74885010913,99.7979313252007,99.7977147562435,99.7725158530666,99.7735823315774,99.7693832182008,99.7491519502007,99.7591108981528,99.7248976779599,99.732318158374,99.6636103182823,99.5860527995167,99.3189383851001,98.869765522895,98.1195661398486,97.3149127274829,96.7338955435198,96.7478945611926,97.3035904839938,98.1406995275469,98.8608719579999,99.346024927439,99.5761132512406,99.6927063960411,99.7185905061584,99.7538767499753,99.7419673786411,99.7753622955434,99.7523366828698,99.7917887842315,99.7627416660381,99.7977147508939,99.8012130804116,99.8011027509481,99.7884455552494,99.814554664737,99.7921750783226,99.8422490856749,99.82879443204,99.8985953139915,99.8831566431756,99.8699462225185,99.5807592213839,98.9458545982363,97.7553514289362,96.3714837469305,95.3562994124914,95.3705257494919,96.356948328742,97.7865966853732,98.9484007514523,99.6261414320265,99.8657370246535,99.9220594307118,99.8799117316981,99.8644795000477,99.816985424032,99.8254210361125,99.789742094711,99.8124641016962,99.7873767567995,99.8012130785235,99.8038235151821,99.8371365202515,99.8079762601343,99.872174048526,99.8515167555234,99.9544358756091,99.9798377076343,100.14523997426,100.237611699668,100.36664338186,100.142233551392,99.3708360136089,97.7096393477922,95.6416406115504,94.0961220064829,94.1078591317431,95.6161137709273,97.7419466863945,99.382495041347,100.203442303065,100.3677765741,100.285314792966,100.121840366296,100.021582047905,99.9210357170682,99.8913234579034,99.8389487010251,99.83740420421,99.8180065201016,99.8038234958568,99.8109457711479,99.8831339633458,99.8361139971833,99.9445696641453,99.929696633442,100.09530998263,100.174926709893,100.462015160868,100.708591711993,101.051824032978,100.995807820787,100.206789974217,98.1920421330601,95.5330581106319,93.5064498219666,93.5136240082786,95.4868226388207,98.2036310874491,100.204526639063,101.053438077887,101.047865626439,100.759017935813,100.433832570074,100.222488699246,100.056503054063,99.9768729378716,99.9061864876645,99.8716717248584,99.8620875334039,99.8109457768627,99.8159406818006,99.9343251004707,99.8678414190017,100.024343172216,100.017859767696,100.248866953898,100.387071736339,100.796606888428,101.201043296583,101.765229302064,101.91807934983,101.221686260289,99.0675667545375,96.0930421471767,93.7872105937186,93.7924581638595,96.0319419895505,99.0492930897568,101.178895212321,101.943366446751,101.739083636651,101.242745112093,100.759277990263,100.434595218328,100.20210293922,100.067090134437,99.977964298914,99.9056847153511,99.907351357583,99.8159406464353,99.8271174416379,99.9908970889928,99.9054076884934,100.108349667622,100.109481774914,100.39777904929,100.581691095338,101.078834310255,101.581031104081,102.271911936078,102.545726455009,101.943139623133,99.8201326772897,96.8294085590898,94.4931069983044,94.5028459397206,96.7762844195411,99.7960731070723,101.873218070459,102.540413534806,102.224953389031,101.615806110574,101.040244702,100.63395804477,100.353000920917,100.164985750449,100.063692337592,99.9477790220963,99.9668944989711,99.8271174521893,99.8323127138578,100.044945384348,99.9399845622245,100.184654693605,100.189922770467,100.518300242042,100.721742774715,101.245293039548,101.742929065727,102.397776557316,102.610961085695,101.982591133279,99.9328121402067,97.103591297105,94.9230678323135,94.9440662631155,97.0828521198598,99.9277639659768,101.91347247732,102.591100187179,102.335644985012,101.762926070783,101.197349337291,100.764864779558,100.466427922371,100.23844948239,100.133844038507,99.9778785928221,100.015230072114,99.8323126565224,99.8463872277847,100.096850237081,99.9752040572282,100.250110642259,100.253264556675,100.597699820251,100.789155930764,101.274729259996,101.670076853278,102.14550374715,102.136536137268,101.357687848483,99.3716815261596,96.8052397095702,94.8870149750715,94.9232484568581,96.8340964612602,99.413242677087,101.32705345315,102.135592267946,102.097870781672,101.696371573954,101.238745517006,100.83806155484,100.559678372679,100.306717258627,100.212497991684,100.015169731396,100.078168626649,99.8463872773984,99.8478465802526,100.135954611808,99.9986649561083,100.292475281679,100.28801512532,100.625020058288,100.779431312124,101.180600500804,101.421495390242,101.654179970638,101.381371317973,100.447687406481,98.5829019289964,96.3630884022109,94.7649488440845,94.801991152963,96.4046419638718,98.6330683669239,100.434228911266,101.381988403606,101.604133187029,101.427521670025,101.131012993622,100.803027784454,100.576073959901,100.319261317171,100.248262789169,100.023903113836,100.110359918446,99.8478464914297,99.8630222220929,100.166422005678,100.019457364594,100.314882184441,100.297751934787,100.605596442673,100.708175926361,101.003434888267,101.087883297122,101.100439933587,100.634680637944,99.6462795113757,98.0053716729785,96.2061937183048,94.9600047281909,94.9851866340801,96.2406766527469,98.0574920095025,99.6618569894272,100.66294423761,101.088629968742,101.11543333745,100.987343327174,100.746181416611,100.589114409136,100.337311206104,100.299392912855,100.046655178447,100.162175943209,99.8630223174856,99.8565729785839,100.17579685176,100.021882350467,100.307373606434,100.276675156137,100.540849229837,100.588953952146,100.776470399336,100.732787050661,100.584526670242,100.025186679942,99.0843264652969,97.7267172690431,96.3437807589877,95.4203801380749,95.4237063516464,96.3414872536816,97.7336481429377,99.0712864528166,100.017541744341,100.547778420164,100.715275930774,100.731590198114,100.577747549856,100.501537934526,100.27380937881,100.27856686258,100.022326616202,100.159462141303,99.8565728463259,99.8718770250618,100.174830675105,100.023171777263,100.281176817305,100.237276964785,100.447024893045,100.446342272758,100.537588734859,100.406199700465,100.16218130506,99.5926913125628,98.7618753894127,97.6901167954484,96.6662105187637,96.0124552023532,96.0129851666173,96.673983971908,97.7133680146706,98.7929315885717,99.6315793539037,100.194127850894,100.440215877335,100.563243053244,100.474892098011,100.469656535781,100.257673667473,100.300722144089,100.03168813346,100.191384073827,99.871877104821,99.8547934950339,100.149072520927,100.002935148232,100.22690110169,100.173997769062,100.324939424612,100.283966602595,100.291587417862,100.102408929726,99.8022310440404,99.2581291759882,98.5376017315475,97.6913264064465,96.9207719419756,96.4451991308548,96.4296164269481,96.8934864761231,97.6509704769052,98.5009401623963,99.209854669479,99.7591520526601,100.043258332986,100.249659985043,100.225656285839,100.297754621738,100.126207100525,100.216567317981,99.9722007825322,100.143134854491,99.8547933076906,99.8704230369083,100.116839814438,99.9871817060007,100.162783379912,100.105259880536,100.197409017614,100.129723957577,100.074966813883,99.8614389333307,99.545709272649,99.0592756033376,98.4566729787996,97.8036548224776,97.2343185637186,96.9050497483751,96.9048985771918,97.2609625073645,97.8369256689765,98.5236774163823,99.118188334563,99.632197631265,99.9133109256528,100.159005159696,100.158678214637,100.272126524925,100.110690183676,100.223760811599,99.9784083461176,100.155582361845,99.8704232737464,99.8423658764214,100.060604338182,99.9484538692798,100.075957640059,100.016432938677,100.049250456032,99.9565588392669,99.8431565492075,99.6060791171641,99.2711576318281,98.818196323872,98.2827505460852,97.7383391491053,97.2703653549986,97.0013354628651,96.9746535073682,97.2290976596766,97.6548905752964,98.2093736632548,98.7082682476529,99.1962550676641,99.4869605228835,99.7880319775246,99.8437136064652,100.026410611258,99.9227221623547,100.0793325098,99.8882911653419,100.062231938837,99.8423656276696,99.85855784305,100.006469246021,99.921876386816,99.994620564639,99.940353618448,99.9275361196098,99.8292886260314,99.6909241346552,99.4670898663451,99.1599795588864,98.7819328050928,98.3522072993771,97.9435524459561,97.6057735202129,97.4352116479175,97.4424207009918,97.6692400874716,98.0140751588205,98.4775777037442,98.8841199780068,99.3126162994604,99.5540029116598,99.8370279837042,99.8732375479901,100.052164542843,99.9421628680175,100.090926257038,99.9036759999152,100.062265125208,99.8585581572937,99.8221804498879,99.9323140068092,99.8686114732215,99.8898651064552,99.8285298877048,99.760486805152,99.630747033333,99.438807881691,99.1795122118339,98.8371016809088,98.4457440556864,98.0116698106015,97.6117680313698,97.2728468022201,97.0877932852877,97.0473070450048,97.2118779527235,97.4800761430307,97.8927662663544,98.2697430786225,98.7171670698977,99.0015898008513,99.356992100306,99.4752293214846,99.7296145291585,99.7062586494887,99.8960229354216,99.7922783827908,99.9360968463037,99.8221801406478,99.8382784728334,99.8763257179373,99.8420014570469,99.8275456601385,99.7783823713379,99.7003463217175,99.5901651180676,99.4232581657697,99.2192430032969,98.9560459590801,98.6747094496943,98.3732142820816,98.1157770633613,97.9102267146838,97.8266916168204,97.8396315536386,98.0024777015047,98.217561156127,98.5430602652143,98.8114100885023,99.1506519082306,99.3315111186251,99.5996175395888,99.6470903891379,99.8414046016931,99.7841759336092,99.9302662819131,99.8245234531379,99.9337083277601,99.8382788603515,99.79881216684,99.8032416859608,99.7673632060634,99.704065182264,99.6135528963371,99.4639053374622,99.2735794164636,99.0048397527062,98.6882940947543,98.2995983871048,97.8921487596459,97.4622110760033,97.0922975897387,96.7807443821072,96.6251048895362,96.5793660627486,96.7360532501331,96.9647209350776,97.3663759964604,97.7271890091736,98.2055925602766,98.5286534370623,98.9451988014947,99.1425226865344,99.4429396069386,99.519750587852,99.7054650458961,99.7159577622109,99.798907064631,99.7988117657718,99.8021713966785,99.8017428568152,99.7802217321023,99.7495910824077,99.6966005930358,99.619791299076,99.5171368370416,99.379211126444,99.2166659593528,99.0222500723621,98.8214660766331,98.6150643353539,98.4417504785181,98.3030603764255,98.2403258990992,98.235660764139,98.3230246985603,98.4483151123485,98.6471532217848,98.8293011996747,99.0589605817246,99.2160844626356,99.4143329029252,99.5052466131696,99.6505416423043,99.6786766562352,99.7742188698387,99.7664948869864,99.8207673825879,99.802172601235],"Archive1110_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.000385672660398546,0.0082020543082201,0.0013645579139008,0.0119405053382328,0.00971775598632582,0.0192633868300946,0.0212877668190777,0.0291077409350359,0.0335007575507293,0.0369147010314057,0.039937639010297,0.0346872929346504,0.0330689350809765,0.0168313591024212,0.0120180535396208,-0.011977029127161,-0.0127034406931122,-0.0375738798583306,-0.0270544222851155,-0.0487044178841117,-0.0264939054324117,-0.0452518205721118,-0.0174018889932343,-0.0336306071534722,-0.00874952232166677,-0.019494332476854,-0.00540033565222519,-0.00605903715546011,-0.00701640456896066,-0.000428179465427771,-0.00221030645791177,0.03245259130707,0.0173264266086561,0.049385299621957,0.0448418385033822,0.0739727485783683,0.0777848896730742,0.100223798162125,0.104711695657571,0.113272272874555,0.107725075829518,0.0954457541749167,0.0731761487551941,0.041228097584051,0.00703498748431099,-0.0313483450480165,-0.0625377897171006,-0.0896535382391947,-0.104889943761509,-0.111608308795014,-0.109743002861624,-0.0994857530585973,-0.0885822893151842,-0.0706670553067839,-0.0592655301567018,-0.0416834146005117,-0.0333215075630426,-0.0201434351857216,-0.0134028306907556,-0.00231393569953623,-0.00324020207972968,0.0178826135932588,0.00632932550375462,0.025509798076309,0.0203843553421502,0.0353548428865421,0.0361559409795833,0.0462663311175259,0.0497723295961503,0.0529219696053273,0.0545024729587595,0.0480066772708787,0.0439528634167212,0.0272199563754253,0.0177762640087822,-0.00533951734701586,-0.0150851649151867,-0.0372709142632171,-0.0409046140255979,-0.0560005557256521,-0.0510229192345104,-0.0574269342751303,-0.0467479436075252,-0.0463101849697025,-0.0354186653686746,-0.0304038665672371,-0.0240877143254254,-0.0151450618188829,-0.0175536652120868,-0.00334415559301586,0.000201954138642942,0.0286594854835194,0.0159059917049548,0.0386295801895651,0.0346842886878151,0.0514932856629589,0.0531774987352655,0.0622350463363386,0.0643776760577647,0.0630174819431849,0.0604943485822221,0.0475894698976814,0.0385837315870809,0.0169774222512837,0.00434305942446718,-0.0196181369239665,-0.0304129088956764,-0.0497729979509346,-0.0541422062271864,-0.064463152180233,-0.0614873989530223,-0.0623951646790008,-0.0550229989950875,-0.0490886830679097,-0.0417314075329757,-0.0318286595734381,-0.0281163633033164,-0.014968747408319,-0.0172872186427879,9.71493242634353e-05,-0.00136641799627127,0.0200806011668395,0.00950355491373157,0.0257953844894841,0.0221133145159338,0.031656441196481,0.0330104546504284,0.0355030809458082,0.0383934171728471,0.033592493028623,0.0352228553380368,0.0243451979765786,0.0243856821921069,0.0103367221303513,0.00964130976470872,-0.0054698565551747,-0.00699367754032067,-0.0217689703023532,-0.0233665565242686,-0.0347827526224483,-0.0344650205756807,-0.0394919497022956,-0.0369194912390938,-0.0349638242875408,-0.0324193273549342,-0.0244763253367436,-0.0254944654437503,-0.0120486917414044,-0.0194922127419407,-0.00147123796189196,0.000507099219085932,0.0212035736079642,0.0116952611360751,0.023978906045358,0.021875626681152,0.0256774652869545,0.0270598616055533,0.0222068180503082,0.0232434866741755,0.0108687252955477,0.0108956474072759,-0.00377611525504196,-0.000387221136703251,-0.00993257573824855,-0.000522870485638988,-0.00529148613523419,0.00337037667269641,-0.00368126672988998,-0.00182250433353409,-0.0114282418400315,-0.0137314114297165,-0.0201475393996312,-0.0225066405020921,-0.02212265104487,-0.0243493883683877,-0.0169818564809559,-0.021387255924563,-0.00817774759567103,-0.0162835058484471,0.000402258965963288,3.13067079063421e-05,0.0127558595550397,0.00686488735631074,0.0109059161620167,0.0103699276248166,0.00481193606651848,0.0054974665682983,-0.00961273382929685,-0.0113171484373494,-0.0332216827817445,-0.0348902336352286,-0.0525033375079747,-0.0414242267185959,-0.0387428329907551,-0.00810891731622696,0.0090203970937278,0.0373321795657481,0.0426506346154467,0.0485937078165434,0.037545885502382,0.0286417989765749,0.0157735805404346,0.00485097289169419,-0.000172936837844218,-0.00935267911471724,-0.00518988951347427,-0.0143138548172034,-0.00312758812177914,-0.0136181393171196,-7.29146121010754e-05,0.000866065460512842,0.006536370284527,0.00385946886949949,-0.00167266962469882,-0.00078853618176651,-0.0181655085199675,-0.0204238063041243,-0.0506451839132817,-0.0611167372188279,-0.100873923922172,-0.113249661970413,-0.141035275212571,-0.123925934230223,-0.100834589391253,-0.0317748805471064,0.0293583256991364,0.095588030757038,0.123405499062599,0.13411602722167,0.116951306202796,0.0943794994120933,0.0687480888039777,0.044185619498062,0.030083042087799,0.0118877519669358,0.0106422722523537,-0.0030842583254655,0.0037254637307501,-0.00668394782927215,0.000762753447061053,0.000862282761211733,-0.00524302475424125,-0.00281864623506134,-0.0211724886011599,-0.0193450804522681,-0.0522345909587836,-0.060652458253178,-0.112418219498813,-0.140284391956953,-0.210509164698403,-0.248756655816586,-0.299942812541387,-0.280040662745788,-0.220337853621984,-0.076951608761652,0.0735808794025958,0.214396367662317,0.281386008744541,0.293709650226017,0.256192801115009,0.203502287510235,0.151182787119613,0.10320212584169,0.073011131751884,0.0418844144176619,0.0316831519639078,0.012215608584591,0.0122707919049707,0.0016425328373806,0.000760445547080682,0.00124597797911182,-0.0180041750764622,-0.0105346411804661,-0.0440796613829819,-0.0425787361256954,-0.0949119990006084,-0.114634200678056,-0.197137528521696,-0.257023791282613,-0.379612942665178,-0.47284794502061,-0.575433263242922,-0.56468832706121,-0.444722283479959,-0.165296403378972,0.154997701052112,0.434424946861921,0.566538234530849,0.570326781425935,0.484513427523997,0.372616067565604,0.271380371314747,0.185803192545394,0.130318461873891,0.0817336299603625,0.058365974041915,0.0325926700662946,0.0227916915243025,0.0137004775010345,0.00114604362814062,0.00129697687246708,-0.0344558983153452,-0.0208261045781011,-0.072081987519295,-0.0721472057980672,-0.147519539391097,-0.183938144439775,-0.306792237780896,-0.416008804673085,-0.618656967048583,-0.806767195600173,-1.00188220717137,-1.02072347217226,-0.810484426566861,-0.309334311356626,0.292474177697196,0.797301506513501,1.02484160170286,0.999766131580719,0.823329910360414,0.611850465633215,0.433010899934885,0.292967873211542,0.20186594386248,0.131155280106601,0.0903871642028075,0.0574373219961594,0.0350523759985737,0.0278309354444275,0.00119943249570619,0.00147601728048647,-0.0522338872302946,-0.0325288787087034,-0.102791023661257,-0.105638984476216,-0.2059788535445,-0.263031290743254,-0.432438691318139,-0.604094367997708,-0.908429962004334,-1.2252567402899,-1.54930253219006,-1.61768275897801,-1.29251110477392,-0.496291553648117,0.480722522012381,1.2805584282741,1.62281566245763,1.54612536763368,1.24193699863847,0.898822873603209,0.621162032926997,0.415815958271545,0.282196743697705,0.18711679163668,0.125844339773662,0.0860946225055053,0.0484502260381063,0.0449660347285152,0.00138126001441413,0.00135214124039469,-0.0715949388277406,-0.0452538061781379,-0.134490521078176,-0.14015357997819,-0.263958797039207,-0.340399907476639,-0.551916093605792,-0.780625520628128,-1.17697803312981,-1.61228669713513,-2.05514370172626,-2.16969755050935,-1.73450322515669,-0.660753814576353,0.663546492539809,1.73188408524353,2.1726658119209,2.04219766179577,1.62055337068907,1.16048092890565,0.794867130150814,0.532519307442523,0.359875280086606,0.243370871542188,0.161372527642858,0.116230362324643,0.0619733644282302,0.0629685649382562,0.00126044853267781,0.00145289621159479,-0.0901563244658517,-0.0574411651266495,-0.163436198227183,-0.170512123076904,-0.311586010703745,-0.398707608438633,-0.631853176179041,-0.882571222530439,-1.30844027560702,-1.77472461889918,-2.24224468906362,-2.35772361644934,-1.87206543764997,-0.702259227164739,0.731313662680727,1.88188282511268,2.35474038247788,2.21364086336354,1.76819030005067,1.28332075289876,0.892784613402416,0.610814050401392,0.417695815435055,0.290708535379603,0.191729913294417,0.145209645222393,0.0741243551883674,0.0821732929530461,0.00136443208307913,0.000981914030582316,-0.107224582217701,-0.067843670551095,-0.186382764717626,-0.191760873859255,-0.339466610946473,-0.421700529295058,-0.642312817617244,-0.855224936883105,-1.20544672639756,-1.55316183513151,-1.88427588396437,-1.92325408116132,-1.49678996963832,-0.548919946042329,0.588557107340158,1.51151750269486,1.91688361842866,1.84993451879576,1.53884115456968,1.17669049496243,0.863222830985999,0.622198650624738,0.439855950833445,0.319823769137649,0.211727073362698,0.169047413709903,0.0830995398482955,0.0989116954893581,0.000896552624922811,0.00116509057652016,-0.120003072222165,-0.0746883842435461,-0.199675053328396,-0.199550279738022,-0.341018293031248,-0.401198337761718,-0.57354953064884,-0.690885435257402,-0.867746822789702,-0.964398056289774,-1.0179239673569,-0.916273861844657,-0.65633108146598,-0.226198932110466,0.24769313989905,0.661874085129302,0.911952023474472,0.9952228853671,0.957024797123361,0.844755050908796,0.698227173218019,0.555896730363477,0.417121273897934,0.324078141259706,0.216925058277448,0.185381737917114,0.0877773718057986,0.114415607770494,0.00112385003964943,0.000150345598011039,-0.12852024688327,-0.0774431668918472,-0.201942519594504,-0.192762999719631,-0.315981171500976,-0.341650617187916,-0.443044351404297,-0.438588490968062,-0.408361785025216,-0.222554778979488,0.0237825919802916,0.26514160700443,0.313966806372378,0.141937748166453,-0.148964023673184,-0.32076553037947,-0.260496233449264,-0.0276227782617993,0.228300770740569,0.396486720099789,0.446316857941922,0.429136390876452,0.353670753338017,0.302387941506218,0.205503820922748,0.190620694215024,0.0862885965128602,0.12300130124376,7.01039047762696e-05,0.000789833865639315,-0.129903636915536,-0.0749915314385426,-0.19198416124266,-0.171919763333272,-0.268461070190038,-0.255987484162093,-0.283607707954953,-0.172165516404987,0.0229506330045859,0.406014579874939,0.839028088366439,1.14094338299986,1.01455157522788,0.405680402106288,-0.431957589577964,-1.02712940987564,-1.13093218467181,-0.831220850232156,-0.394284663778621,-0.0276925766098796,0.176930920557931,0.273489477637824,0.262524415519599,0.25972803799356,0.179504312208691,0.186480857755502,0.0801741348712604,0.129428754091226,0.000711254251008887,-0.0011474831753524,-0.126460068514982,-0.068659739684554,-0.172082730329326,-0.141060190992945,-0.206855606637541,-0.160611364262981,-0.127113323444503,0.0516450517050984,0.330050328522419,0.775718779219868,1.23822074271493,1.50274642553929,1.27453868372943,0.499954841884736,-0.523980808377891,-1.28238484976818,-1.49157989557032,-1.22458204916301,-0.76318976441403,-0.328882277604332,-0.0500923429404662,0.121832121241583,0.160713631978939,0.202543582404808,0.140954330553365,0.170061529939015,0.0670235057593176,0.125000706158441,-0.00122549761956259,0.00051449151593575,-0.115059728343757,-0.057777834324987,-0.143075506928509,-0.10333463362863,-0.13873847797895,-0.0683085890481037,0.00662682547027089,0.210711624461049,0.499309516139631,0.902937211192623,1.28416721200096,1.45508073665983,1.18997426477281,0.460807035698268,-0.477432921265832,-1.19722824591636,-1.45186870614572,-1.27551796736456,-0.897337024934506,-0.49562533149817,-0.213084180717353,-0.00601687150862734,0.0633530693297914,0.142006793090435,0.0982304615855129,0.149329854341325,0.05320249103624,0.121105926933667,0.000436360709770982,-0.00282900691865108,-0.101100031926599,-0.0455059577743345,-0.10975923908191,-0.0641046795952524,-0.0719662060422425,0.0123687126256825,0.110615281492487,0.309826907657837,0.567906497036815,0.885150187440747,1.15135360726747,1.2268258206707,0.968030875290172,0.372402620751889,-0.373723699518245,-0.966884376852576,-1.22436532680231,-1.14223971857012,-0.882317342989669,-0.558910599203273,-0.314797317729903,-0.104387968332865,-0.0239987585207532,0.0789594482723697,0.0496712106548393,0.117502770679177,0.0322579605390246,0.103225051279585,-0.0029085899019435,0.000649364373160684,-0.0801047676581862,-0.0303456345920813,-0.0727985205874198,-0.0253343556845891,-0.0108441234402336,0.0773731898458853,0.1842293758455,0.361377310522301,0.573728515595817,0.802447890184748,0.967040104224309,0.972299713600383,0.738341577184278,0.278246467736604,-0.282609068622754,-0.742874775840011,-0.980669160544916,-0.965752139449956,-0.808655887058275,-0.564324267201387,-0.369971522514141,-0.170957475088578,-0.0905816642761832,0.0277953058741255,0.0101096134567663,0.0910947445281335,0.0180751268559175,0.0927202566472864,0.000608636279467692,-0.00477884811808766,-0.0608123346554523,-0.0168471133101303,-0.037654273772657,0.00930988051920611,0.0416613691060724,0.127732064162557,0.234646504605456,0.384909684382758,0.553260365603677,0.711553988089616,0.80475778625069,0.770277739774968,0.567121166854998,0.215409049736586,-0.204131849360155,-0.55712702930898,-0.769379289468762,-0.795371688037677,-0.71604888364026,-0.539855464531973,-0.3971923951206,-0.220240767005984,-0.14937886342767,-0.0264151327590889,-0.0355545664753191,0.0518052134601639,-0.00593406389018915,0.0645466236407998,-0.00486350810053557,0.00140504393186015,-0.0361246492911582,-0.00179983311244561,-0.0038537318387607,0.0389373599874166,0.0826055139059183,0.160908052411743,0.260389170925252,0.382062156120338,0.510399883330852,0.614889533816879,0.659523802242726,0.604102062672117,0.428499610595856,0.155442248090917,-0.164419660448058,-0.43596811789685,-0.619252856713039,-0.660906013491177,-0.628670820162141,-0.498230495202785,-0.394943625087642,-0.237915824193292,-0.177183337945828,-0.0547173455316854,-0.0577691123847881,0.0312305268503058,-0.0129468366661021,0.0540884116217483,0.0013173747326258,-0.00684646576374289,-0.0180508655784511,0.00947787274710115,0.0241815487511591,0.0638518384354757,0.115504848472305,0.186780877327305,0.277728835483108,0.377181179517733,0.475675160877106,0.545829162444207,0.562618730614155,0.502066121462488,0.351820603478553,0.136517711260951,-0.11612000024078,-0.331256869676735,-0.494997274432486,-0.54720798261797,-0.552458815760971,-0.461581527590441,-0.396122167438871,-0.263424327431719,-0.215995795159847,-0.100202083004227,-0.0970743194764227,-0.0104177082385344,-0.0375139089710017,0.0204800585922629,-0.00693828384758858,0.00247195537177649,0.00323517189510509,0.0204052147999941,0.0451586780213708,0.0780783926422081,0.129666085824664,0.189619000822902,0.265732019948239,0.341625203261241,0.411401094102007,0.453081123890912,0.44917175376691,0.387082535693023,0.258487062253103,0.0884686489902476,-0.109803924031065,-0.274653473567333,-0.409347799150287,-0.453025532793189,-0.469700953453642,-0.397495422939312,-0.353052818248298,-0.238188578418993,-0.201515466646086,-0.0965351018505876,-0.0923196247099526,-0.0144074211368466,-0.0314300437743305,0.0174360626302758,0.00237707063288571,-0.00819745577197572,0.0138496695023508,0.0286844906575991,0.0608575482827175,0.0938445626237108,0.144855999961064,0.201066773220276,0.267773177473419,0.332459325506848,0.386564006982213,0.416722595840998,0.405192449338295,0.350235612364795,0.238758587857903,0.100650520503373,-0.0681032681062432,-0.205748441896257,-0.334694891220136,-0.383103086666142,-0.42340073594782,-0.374563347640017,-0.356618512659158,-0.260432072723661,-0.234310647346489,-0.138001912005029,-0.127453612371021,-0.0549850458515584,-0.0555399226144835,-0.0158548634344765,-0.00829621892893223,0.00267079928832904,0.0227752645729656,0.0280061581686114,0.0568908345311668,0.0796308858342325,0.118860552149186,0.158008044448339,0.204026012755135,0.245223088858743,0.27638331845605,0.288956140687306,0.270660129089108,0.224557590986911,0.139954592467123,0.0433167304287206,-0.0743114084856555,-0.163606359869056,-0.251083227177888,-0.27632365715492,-0.303998230975582,-0.261572635263119,-0.251129522568864,-0.176078564658532,-0.161794885587915,-0.0881360156841398,-0.0848631226958297,-0.0309036659773492,-0.0318815860963738,-0.00456652883483,0.00257026915887258,-0.00499430946486379,0.021850021992152,0.0370723927971292,0.0601970427148045,0.0902885126608329,0.123076064482298,0.165081953902088,0.203990242660082,0.245181832420421,0.270063471958026,0.284853858979681,0.265793374819088,0.23034521478693,0.152141483757193,0.0729773796685635,-0.040565181597723,-0.117621903341194,-0.21653079358526,-0.241919678239617,-0.295271986647831,-0.257536474549933,-0.272910309206706,-0.197441352645961,-0.197984779565757,-0.119431681211794,-0.117259467396641,-0.0611678124139965,-0.0526027479536833,-0.0293682017253064,-0.00509713100379572,-0.000393935986172987,0.0082013977724641,0.00136512294985318,0.0119400562145106,0.00971820377759451,0.0192631299476401,0.0212881635894017,0.0291076755902921,0.0335011641698623,0.0369147835164708,0.0399378570641429,0.0346873962723533,0.0330693519905092,0.0168312883113139,0.0120183859133688,-0.0119774296143941,-0.0127031665776358,-0.0375746187671899,-0.0270540754494941,-0.0487053776112717,-0.0264936434528527,-0.04525283955955,-0.0174012326404301,-0.0336314993966671,-0.00874894211868599,-0.0194948715878232,-0.00540012203725191,-0.00605899568374039,-0.00701681582089977,-0.000423731416687012,-0.00045912630580841,0.0132406589499654,0.00370308805586579,0.0198677494375115,0.0181235371635537,0.0331808578110169,0.038043137546303,0.0509052145715434,0.0590386895556049,0.0649549397378101,0.0698185872615871,0.0613561915135548,0.0572070684654679,0.0304448206852082,0.0197294542988604,-0.0194936706021881,-0.0242140091979594,-0.0637330294446288,-0.0500350521760099,-0.0827092798628683,-0.0495748993339216,-0.0764001073070002,-0.033659574760565,-0.0563318753733913,-0.017724729714792,-0.0326322757053189,-0.0103440686677875,-0.0106542723194719,-0.011754218337174,-0.000480520112673636,-0.00297496736336672,0.0498114232705774,0.0289476529166595,0.0767975120103825,0.0720792292225647,0.116093876033278,0.12374183860511,0.157979944843636,0.165965641367307,0.178921001297367,0.170506249353422,0.150991594698313,0.115792779413055,0.065449447597902,0.0112072568656285,-0.0492675827086149,-0.0988103289667387,-0.141616274522379,-0.165803589749917,-0.176631072863263,-0.173444874888086,-0.15778184483601,-0.139852287232251,-0.112440049738254,-0.0933357634643833,-0.0666506363100455,-0.0522861556782233,-0.0323459785799655,-0.0210432430827234,-0.00302801252677406,-0.00479915356834131,0.0280004435579133,0.0114297907436306,0.0404253680654552,0.0339143616258072,0.0568862110692352,0.0591633263751229,0.0750033668648306,0.0809336054046158,0.086017443828671,0.088218548771614,0.0780136872232955,0.0706402243313815,0.0441281829543168,0.0277948866193559,-0.00874014385685754,-0.0256001443960567,-0.0603225628301261,-0.067252469571704,-0.0903403543172393,-0.0832945335203898,-0.0923948747084776,-0.0760202259297928,-0.0743656501752654,-0.057379541384434,-0.048819811483778,-0.0387516609109068,-0.024512918239342,-0.0279012764861828,-0.0048524895212885,0.000477245154053554,0.0444376595483195,0.0264670290391341,0.0605974076748935,0.0559550905664491,0.0815367463532801,0.0850376607792954,0.0990521101303382,0.102643144002351,0.100654641263926,0.0963615309250447,0.0763637677070925,0.0614285585559323,0.0277448789164513,0.00681179548557916,-0.0306025309573866,-0.0487065160345195,-0.0788524583059211,-0.0866636980506701,-0.102522345165494,-0.0984102712218427,-0.0994656748732484,-0.0879986273549545,-0.0784556134785979,-0.0665823802794957,-0.0511431038810055,-0.0445400537711333,-0.024536882788785,-0.027096722335227,0.000423010681410431,-0.00203146154199732,0.0314572968731243,0.0162452878769964,0.0408347065423608,0.0361476079048809,0.0507864748756868,0.0533202417299229,0.0574041659363269,0.061724442455665,0.0545967039856609,0.0564139363453517,0.039780334567134,0.0387419875664274,0.017098605540573,0.0147676625899711,-0.00855441012412207,-0.0121162153689221,-0.034900962820244,-0.038336902733472,-0.0558394406454765,-0.0558907926342789,-0.0634151537391875,-0.0594848391108067,-0.0562395401021403,-0.051889125245282,-0.0396398860777773,-0.0403596300569152,-0.0199907630459629,-0.0305867420423056,-0.0020856915556475,0.000825581930264268,0.0330448798971597,0.0194210409765284,0.0378855859248792,0.0352257978298966,0.0411147391474693,0.0431853311275383,0.0359854736169801,0.0369477537618346,0.0181837493476223,0.0172079253169939,-0.00505421535476421,-0.000845468795621428,-0.0149876741320131,-0.00122273934786945,-0.00789671838007038,0.00481027967596602,-0.0056712673019647,-0.00352899253850829,-0.018300733637755,-0.0224195335480267,-0.0324124916788035,-0.0361761857311827,-0.0357494462608254,-0.0387707976507335,-0.0277721354533872,-0.0336542063143491,-0.0139217521732728,-0.0254283315673616,0.000771323968775383,1.63407250573249e-05,0.0201039883320429,0.0114164968088048,0.0175606282584313,0.0166569038789915,0.0083467586009443,0.00863978009942843,-0.0143203559190569,-0.0182958792939911,-0.0518093148449552,-0.055926330338559,-0.0825769268682737,-0.0664201460839725,-0.0609282510560001,-0.013538474898476,0.0147319413694897,0.0587140824107665,0.0679698610384228,0.0767143837466189,0.0596179855246698,0.0451259202040724,0.0247485719693402,0.00750646655717882,-0.000844609931666611,-0.0147730575504647,-0.0090314271806393,-0.0223255165129461,-0.00583242659255803,-0.0212240128883905,-3.72678716916894e-05,0.00125835346184639,0.0103578308978291,0.00614912052386807,-0.00219244718188953,-0.0016910897257976,-0.0280681660545982,-0.033223749990423,-0.0796182145315876,-0.098130679943242,-0.159561872258559,-0.181059700223756,-0.223480254575942,-0.197852628844134,-0.159633776277868,-0.0511762151951912,0.0471822682269496,0.151551551770934,0.196659960738387,0.213141806907619,0.186250399588526,0.150131412283743,0.109261452018908,0.0704226345161917,0.0474153594116589,0.019227359496048,0.0162331605887765,-0.0044162119636915,0.00519971348549324,-0.0103028139080897,0.0012056847094023,0.00118666214017153,-0.00788656908131065,-0.00507401575170131,-0.032742123749373,-0.0318134551627169,-0.0819922595458267,-0.097849379534467,-0.177893768535434,-0.224773856742703,-0.334229356623646,-0.397237593066944,-0.476418372376408,-0.446347613220521,-0.349640977859218,-0.123100107336606,0.117362972874216,0.340411440903239,0.447988001038086,0.467357282414859,0.4081442771904,0.324265856449523,0.24076323886981,0.164721840418327,0.115936307798598,0.0671670819108671,0.049895172622984,0.0199262224926704,0.019065088259517,0.00276981669993216,0.00113552494433529,0.00173424837048705,-0.0277945449249559,-0.0180704668375354,-0.068773353188079,-0.0695537940040683,-0.149750771838829,-0.184577909858929,-0.312934703142865,-0.411498147613372,-0.603843947126655,-0.754519917199426,-0.914729307372293,-0.898792332354365,-0.70588465570311,-0.26335620737385,0.246477861782884,0.689792461134621,0.901263898897354,0.907742273440354,0.772010437668318,0.594175891937737,0.432645777662142,0.296734840291604,0.207521452227663,0.130818868899212,0.0926756445490667,0.0522818878186024,0.0362109424811416,0.0216689565781267,0.0016850842740195,0.00175758859681438,-0.0534148879268092,-0.0352814372446058,-0.112853261364357,-0.117451385641855,-0.233373738817418,-0.295836585917595,-0.487922571824894,-0.665806986065654,-0.985220241672406,-1.28681074541681,-1.59301626726769,-1.62295297726672,-1.28590526976659,-0.491677142382746,0.464158822672034,1.26518376772367,1.62904009905884,1.59101068071483,1.31193760446568,0.976090897871476,0.690856118806623,0.46806803459438,0.321991889360485,0.209750923660341,0.144101240538253,0.0917121156106502,0.056258163659034,0.0438217547470053,0.00171090468887697,0.00201051839403664,-0.0811678998703697,-0.0548052701899959,-0.16129788353207,-0.171676317091,-0.32646472816328,-0.422847688886448,-0.68872175685694,-0.966875688890008,-1.44798925827911,-1.95417084932627,-2.46382080082517,-2.57038471934361,-2.04952798685173,-0.787562219358651,0.761959189250216,2.03072759998517,2.57812389184159,2.46033377961973,1.97937644513535,1.43460506605938,0.991826264483788,0.664631984282677,0.450710789062817,0.299130781602623,0.201170316164179,0.137130613690393,0.078287750451403,0.070621796905297,0.00196672834818829,0.00178525981692269,-0.111415247597058,-0.0759899243828013,-0.211363254921542,-0.227539130443451,-0.418919342568428,-0.547197470526301,-0.880000822788619,-1.24994663351287,-1.87779103464886,-2.57258434524026,-3.26984242375022,-3.44719817609174,-2.74965667438625,-1.04754450327476,1.05113992716062,2.74567720850744,3.45144972294965,3.2508874737546,2.58431529502502,1.8535656606726,1.27035360558839,0.851650936219297,0.575419595105443,0.389010156570369,0.25848325696017,0.18487603755892,0.100600528917024,0.0988209818420316,0.00174465013148543,0.0019643053950864,-0.140427671594008,-0.0962704683148919,-0.257142573085056,-0.276720059860522,-0.494997859821582,-0.641123038575372,-1.00843337518526,-1.41433106803727,-2.0900024019983,-2.83508910287634,-3.57191217472614,-3.74920553987728,-2.96944711884183,-1.11337949448183,1.15912321567924,2.98530746868671,3.74385165110752,3.52779660527649,2.82321698667616,2.05205206303985,1.42843976908484,0.977540834986774,0.668628074917247,0.464632098843685,0.307695626975957,0.230670464240013,0.120883526128877,0.128782219833182,0.00192704970713103,0.00123110419461932,-0.16717312470614,-0.113597106175539,-0.293474245447347,-0.311230904159307,-0.539657055509347,-0.678522161095788,-1.02597535899178,-1.37227195621498,-1.92863189660655,-2.48693944340381,-3.00966078452222,-3.06681099368964,-2.38025121704051,-0.872214552808857,0.935613618148432,2.4041494677415,3.05574004024884,2.95566255800161,2.46253399099377,1.88476261366561,1.38303198150538,0.996483158780771,0.704921471388562,0.51111637526606,0.340409477979886,0.268270022470665,0.136058942534879,0.15497255669289,0.00119706493220603,0.00162559725289506,-0.187163365462593,-0.125065364905329,-0.314555318805004,-0.32405518683526,-0.542347960889695,-0.64615373714882,-0.916779283631249,-1.11069978720795,-1.39179691528341,-1.55189093684802,-1.63704210209939,-1.47453580514575,-1.05394101000968,-0.362978952148495,0.398624161875137,1.06356919256918,1.46638695941853,1.60056534898318,1.53834732325416,1.35670363106974,1.12071366397895,0.890902024264593,0.669389346484671,0.517730746356427,0.349544438417344,0.293767200933991,0.144467451539214,0.179021402780768,0.00161007397799266,3.81821341028791e-05,-0.200594048945557,-0.129766143720401,-0.318204901455516,-0.313340886533906,-0.502602403464139,-0.551013336250466,-0.708540582552657,-0.707420052675436,-0.658406283526562,-0.368312390146141,0.0217372852546151,0.403155599023478,0.485647672459167,0.220834831934147,-0.22999427467251,-0.495392714668047,-0.397272788243927,-0.0285475990579015,0.375701447303797,0.640421536546111,0.718337411326591,0.688098681409202,0.568534193144325,0.48276177233157,0.332017806283312,0.301655252272785,0.142788118323259,0.192430020715545,9.44363330096518e-06,0.00117953931561759,-0.20274405062774,-0.125882896364846,-0.302508221818966,-0.279901076998211,-0.426967125530179,-0.413746637249058,-0.453701259973209,-0.280419567329903,0.0323599760235531,0.639076436293487,1.32764760066543,1.80533859448309,1.60593094558088,0.642149189465405,-0.682552684245106,-1.62522300937727,-1.79026325753595,-1.31545568792475,-0.621587190856049,-0.0395124873439305,0.287040383665406,0.438535199373352,0.423180938216671,0.414068086682031,0.291131895241761,0.294434506001898,0.133739345676469,0.202122677756333,0.00115252412442551,-0.00184112513124588,-0.197537570568717,-0.115508437103055,-0.27109813362442,-0.230178536191823,-0.328840762491973,-0.260645409555147,-0.203337820537848,0.0789865538796463,0.525684315857549,1.23522056154986,1.97317025620316,2.3930291646586,2.02890115647998,0.795360015008279,-0.833524118184423,-2.04116899704163,-2.37518654757895,-1.95124522595236,-1.21564954960012,-0.523822993620343,-0.0769612324703527,0.19507829902937,0.260551156843462,0.322150454788964,0.22996551419223,0.267880578826888,0.113006613685605,0.195201443551556,-0.00186758100909377,0.000946400561101133,-0.17963240901175,-0.0976125987428595,-0.225288355690107,-0.169269763711079,-0.220330236712723,-0.112281900943547,0.0107119125059713,0.334856503350516,0.798324740104265,1.44302875274144,2.05305771487344,2.32524059995114,1.90092405670297,0.735395818978655,-0.762624653615789,-1.91249711759203,-2.31947216880587,-2.03886875762995,-1.4337220488497,-0.792813017771327,-0.338449999842494,-0.0103657429329445,0.104925162833797,0.224729288790394,0.161995272623483,0.234282855640464,0.0912035475971998,0.188635474444383,0.000919826289752952,-0.00432804840427058,-0.158073404360118,-0.0772446048398035,-0.172703848834764,-0.105785012523058,-0.113970401851254,0.0175481600895091,0.17711988799878,0.4945598253351,0.909099621687273,1.41695942288656,1.84384160910666,1.96445064957459,1.54974645054018,0.595539358120648,-0.598566288668761,-1.54819240116859,-1.95983275889671,-1.82921012365583,-1.4116150062554,-0.895542148757001,-0.50162057565621,-0.16847178632783,-0.0347397100996154,0.123537111691842,0.0844628261999302,0.183472895655279,0.0574500724041533,0.160796926919424,-0.00435616666031971,0.00136826882785381,-0.125060685513242,-0.0521392261341582,-0.114352788123464,-0.0429685507850888,-0.0166330288853445,0.122313027051267,0.294897033761899,0.577890035290283,0.918864912877073,1.28559122398491,1.54989711071241,1.55851540737651,1.18350064909626,0.445611606607649,-0.453043084568609,-1.19096687854485,-1.57105601677068,-1.5480468459985,-1.29429525220214,-0.905026304321068,-0.590120102947868,-0.275676622781884,-0.141337368131642,0.0411984578680313,0.0211142998065156,0.141044451156053,0.0345732849312141,0.143841660180926,0.00135324808371937,-0.00728158710729573,-0.095269594546075,-0.0295495075962672,-0.0589159435288281,0.0132657748528763,0.0669440017269269,0.203533085104565,0.375479622897888,0.616023258872175,0.886121837971145,1.14019462893478,1.28993866551747,1.23490271372861,0.909289775051321,0.344952477629697,-0.32739292931476,-0.893887801469359,-1.23287336356968,-1.27567056810838,-1.14604797710223,-0.866233848742199,-0.633644726723686,-0.354807284809732,-0.235376231238973,-0.0454795546609723,-0.0521122106609523,0.0787888554008578,-0.0045753270925918,0.100103669887311,-0.00731499778219964,0.00266767419026143,-0.0563307365632889,-0.00455026721176812,-0.00555225610166033,0.0614228464214147,0.132151789713548,0.257215100226516,0.416717127506489,0.611900608404954,0.817652050467068,0.985570746680838,1.05735735334185,0.968701450671486,0.687365363008276,0.249115254368638,-0.263285101694266,-0.699526548246755,-0.991974864359946,-1.06034434219389,-1.00600645457802,-0.799989725473998,-0.630237456249953,-0.383633243374586,-0.28024943404439,-0.0911113099991566,-0.0881721929408793,0.045884320019415,-0.0163812075594062,0.08321232183169,0.00263118709497213,-0.0104939083630423,-0.0285532062689783,0.0144154954180105,0.0386869622261204,0.101854235261116,0.184530431308181,0.298884931293365,0.444369996320647,0.604048599327964,0.761841189815151,0.874548488341455,0.901648604038065,0.804534044699557,0.564016733098623,0.218253265231071,-0.185993951986529,-0.53197740102493,-0.792692390791262,-0.878245038475706,-0.883603151864959,-0.741192706902737,-0.631815355343595,-0.424173247789316,-0.34227021301415,-0.163313937196314,-0.151401159303097,-0.0196932217133423,-0.0566689935007956,0.0311560087732414,-0.0105347480691271,0.00440721841177486,0.00525091511583474,0.0326021825935681,0.0719033844560297,0.125143311874723,0.207279344790473,0.30386223309294,0.425546456589575,0.547584664779237,0.659433663126,0.726494425278092,0.720470546940638,0.620825893023375,0.415062197404113,0.141782797343832,-0.175320786438998,-0.44098796406187,-0.655284479115614,-0.727572583824445,-0.751393376051631,-0.639191018547592,-0.563581477619653,-0.384477643394882,-0.319977839272833,-0.157868494143574,-0.144715151619854,-0.0261088337096019,-0.0477128020597614,0.0258987418796343,0.00436327199537266,-0.0126967228591968,0.0213686448122948,0.0462513317484038,0.0968457537606439,0.150336131688938,0.231526531119122,0.321872930241813,0.428566831410292,0.532280422893559,0.619070282987589,0.667247771193609,0.649147297197824,0.560564511491525,0.382665183518232,0.160297936249612,-0.108728968552105,-0.330989071461525,-0.535185694554137,-0.615328310608677,-0.676274329681403,-0.601793663156986,-0.568353880593359,-0.419175612997684,-0.372005873676317,-0.223129615576323,-0.201171515940237,-0.0896643887650162,-0.0872041201783419,-0.0255451066689363,-0.0127447476297062,0.00475251756965779,0.0359371953754053,0.0455454570662891,0.0907785415988915,0.1281389990868,0.190607360219363,0.253879955875556,0.327652074300783,0.394004417522499,0.444195746448864,0.464380408152704,0.43536563018809,0.360977368057368,0.225677637695986,0.069589272606208,-0.118398375101307,-0.263391196245534,-0.402271308231579,-0.445222999312714,-0.487029261375667,-0.422255124960307,-0.401688150762259,-0.28541348426434,-0.257812660962406,-0.144208366495461,-0.134280781994211,-0.0516987245442506,-0.0499358656577894,-0.00847575027283381,0.00470275232799845,-0.00823650864104999,0.0346036276954984,0.059109485922879,0.0963536375198825,0.144018659971417,0.196937957070215,0.263599653294289,0.326323719397298,0.391642553748806,0.43202620110531,0.454918906936339,0.425308074094908,0.367419242936616,0.243802533910892,0.115306379252758,-0.0638470309625928,-0.1899477909596,-0.344387615361511,-0.389128600734834,-0.469339927072706,-0.414463710974152,-0.432928268870285,-0.318498420537061,-0.313184119229438,-0.19328439544956,-0.185135513246755,-0.0987934794638885,-0.0835393653632392,-0.0462140781678376,-0.00828872032564301,-0.000463166067306194,0.0132400181090428,0.00370369904560903,0.0198673762767724,0.0181241001589322,0.0331807620082333,0.0380437509220303,0.0509054220217399,0.0590394219604856,0.064955385185905,0.0698189934685348,0.0613566462313851,0.0572077776218821,0.0304449357621596,0.0197298557273996,-0.0194941521024699,-0.0242139196091069,-0.0637340778717179,-0.050035035017212,-0.082710638042926,-0.0495747983423208,-0.0764014856337586,-0.0336591380985753,-0.0563330322128721,-0.0177242541613826,-0.0326329840754817,-0.010343884103367,-0.0106543165418163,-0.0117546476434713,-0.000478180682783436,-0.000379899502865597,0.0149603606971094,0.00492576436880282,0.022845377005117,0.0217663865680645,0.0387178165005011,0.0450266893930026,0.0597627848374487,0.0695306676433588,0.076428261660477,0.0819801437171946,0.0723057922755411,0.0669096030245399,0.0361155517651522,0.0226354715957776,-0.0223517827997388,-0.0292274288841871,-0.0740908481585181,-0.0598106945791531,-0.0961844209322072,-0.0594499509780735,-0.0886687860110681,-0.0407286186494873,-0.0651964466733409,-0.0216885564365768,-0.0377571638351088,-0.0124366322202163,-0.0125391246824007,-0.0135035654488328,-0.000385314779391167,-0.00323668084129137,0.0552259227967774,0.0328700791782372,0.0854777669022233,0.08099956178913,0.129590883762938,0.138684954621731,0.176619503220037,0.185868230433669,0.200219099324601,0.190948854744596,0.169114464200111,0.12974328526117,0.0734594784371015,0.0126850139405822,-0.0549702209715745,-0.110509484534881,-0.158464858981169,-0.185552481994814,-0.19781477677791,-0.194106101465654,-0.176842758334511,-0.156444080819806,-0.126159739493141,-0.104305168805021,-0.0749007759788734,-0.0583454107004665,-0.0364024980603555,-0.0234878030030544,-0.00325053874761756,-0.00521004473939976,0.0313835839802418,0.0134276287609503,0.0455511629106346,0.03885016554026,0.0644682504995334,0.0674241109287058,0.0852313652920396,0.0920403305707377,0.0978145300596418,0.100129632190699,0.0886422637367448,0.0798960817093635,0.0499831465217769,0.0309930042145267,-0.0101570070273216,-0.0297041735881199,-0.0686365970713755,-0.0768417403594128,-0.102485735216421,-0.0947939737686093,-0.104607622152402,-0.0863068420671493,-0.0840675628659669,-0.0650018423039922,-0.0551425885991176,-0.0437613548852458,-0.0277296040389383,-0.0313204777316685,-0.00522405546548918,0.000520339818537568,0.0494951515353814,0.0300770171983083,0.0677545724370433,0.0630628746027418,0.0914499383852771,0.0956427336127871,0.11131381448951,0.115412088606777,0.113310809139623,0.108405746360779,0.0861792098248485,0.069187668544957,0.0315929240313758,0.00774874716651924,-0.0340795584798266,-0.054795573710359,-0.088489833179557,-0.0975974227036026,-0.115256440001757,-0.110849646029573,-0.111917523036301,-0.0990958671613362,-0.0883479706235881,-0.0749106504489117,-0.057688306260972,-0.0499856712476992,-0.027866956982995,-0.0303112079467449,0.000505871602011827,-0.00220425221983382,0.0352592241491713,0.0187158440758472,0.0459684676935824,0.0410989464139695,0.0574572311110284,0.0604345276056275,0.0651536998746964,0.0699047577689892,0.0621248407840971,0.063857156772446,0.0453824671290876,0.0437337639058162,0.0195612972595799,0.0163747752910405,-0.00971127985279057,-0.0142207549237764,-0.0396555118748965,-0.0438543030912049,-0.0633046508451895,-0.0635109266378526,-0.0717735546934039,-0.0673401478125813,-0.0636140430746395,-0.0585502978750694,-0.0449004254227551,-0.0453389618921922,-0.0227954012887983,-0.0342237262174343,-0.00221872712096006,0.000896923081933247,0.0369307177489324,0.0221059066106527,0.042565579198943,0.0397776983027027,0.0464422751507581,0.048715032481051,0.0409180293222533,0.0417808851406513,0.021120879696924,0.0196878306938995,-0.00491188382977671,-0.000651575264511565,-0.0162696766888298,-0.00138451919894566,-0.00874151023527338,0.00500605548461414,-0.00663491864761364,-0.0045583768848496,-0.0209992247513164,-0.0257427323529916,-0.0368669863157465,-0.0410276717586931,-0.0405789785577948,-0.043725824920915,-0.0315982188916184,-0.037767220330972,-0.0160319744925473,-0.0284536448136416,0.000882430440752366,1.57692613868747e-05,0.0226300951118597,0.0130614599320326,0.0199880954619545,0.018924163296408,0.00990612140805942,0.00996451808743582,-0.0153161543401577,-0.0201753302962591,-0.0572305069775299,-0.0623160335094589,-0.091734342597749,-0.074175638956355,-0.0677644334232964,-0.015293229127609,0.0164800017650491,0.065242132234022,0.0757304323799665,0.085263850986508,0.0662451273439285,0.04995281635764,0.0271805281599145,0.00797468418498611,-0.00145797379825281,-0.0167835418273382,-0.0105866125858335,-0.0250479723267677,-0.00692334295607024,-0.0237518586529162,1.59904326630417e-06,0.0013544734873091,0.0117315510605995,0.00695983957759236,-0.00211035776202943,-0.00189367526589878,-0.0309278847434895,-0.037227890825176,-0.0885715520307484,-0.109886248675707,-0.17803005313451,-0.202626748914632,-0.249505968699359,-0.221307314563964,-0.178155414001654,-0.0573606797797576,0.0528429460349598,0.169197530391799,0.219858123711969,0.23815261347559,0.208202954446805,0.167766494664715,0.122003755719078,0.0786378045575233,0.052715824912464,0.0214220424265429,0.0177852109878453,-0.00495178073802069,0.00549531286181703,-0.0115577236415802,0.00134077659996034,0.00126961196219463,-0.00855380798295952,-0.00582799675959846,-0.0362131713411629,-0.0358794333261902,-0.0913197645238505,-0.109914758653338,-0.198779010961012,-0.252087873299504,-0.373860207992309,-0.444970646920713,-0.532752777598422,-0.49944870041524,-0.390705219981264,-0.13783700401192,0.131274090054148,0.380419888854811,0.501108575199558,0.522861185054713,0.45686648970325,0.363076383357575,0.269546283731832,0.184523061129932,0.1296579286005,0.0752757798882007,0.0556284583275493,0.0223580378083789,0.0211620021751709,0.00304823583045501,0.00125668812619526,0.00185537991747588,-0.0307697729311069,-0.0206749309396303,-0.0765282872377759,-0.0785150849206819,-0.167335551718221,-0.207530946312367,-0.350383215324972,-0.461841214671988,-0.676317117758943,-0.845547262925616,-1.02362528922297,-1.00574781543935,-0.789080592843089,-0.294641567917287,0.275586057343086,0.771132582576262,1.00835626479882,1.01614521290396,0.864786207727536,0.66595338145408,0.484978659089486,0.332834253012096,0.232580460137547,0.146798304738741,0.103767188608488,0.0586484110761445,0.0405541064312497,0.0241521498504949,0.00184345632652754,0.00186755557551149,-0.0593420582511652,-0.0402902548447809,-0.125866728749304,-0.132590734764216,-0.261215204234791,-0.332788377202161,-0.547012304222777,-0.747703439366629,-1.10450464336993,-1.44267447447781,-1.7835961335619,-1.81626991099725,-1.43775609445776,-0.549909486168348,0.518839993000387,1.41455510137187,1.82290352439728,1.78176072851395,1.470445502117,1.09483376468501,0.775137692737235,0.52546397424834,0.361338923419328,0.235534933093017,0.161692548576352,0.102888923493711,0.0632666740586352,0.0489082923081498,0.00185689117717054,0.00214259746442735,-0.0903361308720925,-0.0625416705308351,-0.180161732845555,-0.193844603186465,-0.365858468941534,-0.475916738336091,-0.772955700645003,-1.08655000184011,-1.62476732563172,-2.19214892972931,-2.76014378926692,-2.87728457601008,-2.29201267709257,-0.880733705322121,0.851702169673933,2.27087604362132,2.88575613073644,2.75673619468398,2.22003647233455,1.61043135223013,1.11384560762527,0.746729087162072,0.506310965404627,0.336086498249106,0.22605377989426,0.15385081213152,0.0882733292892304,0.0788444008170737,0.0021334061478114,0.0018787439818368,-0.124138020161459,-0.0866843640742028,-0.236326697254159,-0.256991908642733,-0.469929280765356,-0.616259307156959,-0.988630924440531,-1.40588479041061,-2.10920281652277,-2.88833994392002,-3.66592124944347,-3.86066222006494,-3.07593175511036,-1.17152366967506,1.17516083479241,3.0713499122687,3.86519973530102,3.64521483980703,2.90115037061052,2.08278689219813,1.42810265261993,0.95767406795384,0.647028135604923,0.437309118366178,0.290790190626196,0.20745178434214,0.113647530245004,0.1103759205344,0.00187117390700217,0.0020951260759772,-0.156583599857116,-0.10980880105333,-0.287751069219371,-0.312667089072805,-0.555745785687846,-0.722580821599813,-1.13408291939184,-1.59253470592326,-2.35051834905745,-3.18699953406742,-4.00910228026035,-4.202495550601,-3.32381460575262,-1.24555404735396,1.29661292736444,3.34156564018712,4.19625016337119,3.96005838541984,3.17329390285097,2.30868680174156,1.60772894846593,1.10028090880417,0.752575716560679,0.522595178516884,0.346528086658211,0.258861008821462,0.136810675125112,0.14385176256959,0.00208927015680045,0.00126802263785712,-0.186542622965603,-0.129595527426879,-0.328632175047521,-0.351848644209748,-0.606344675747742,-0.765401664242973,-1.15503637658011,-1.54734346237853,-2.17256983132767,-2.80086389568089,-3.38417488374867,-3.44311010968636,-2.66774212978754,-0.976726249910704,1.04801298553107,2.6947532727236,3.43040089532056,3.3237003217979,2.77291741819311,2.12394714270913,1.55880668659512,1.12275605644947,0.794242356612061,0.575177858947644,0.383775516167581,0.30109433178443,0.154234503577993,0.173164187394826,0.00126381300077864,0.00176348679135321,-0.208945879037141,-0.142734375794607,-0.352438061265643,-0.366587837347102,-0.609780028916633,-0.729621037646218,-1.03325591443281,-1.25471190133212,-1.5715781905106,-1.75378571253633,-1.84784785990613,-1.66196780463631,-1.18506912781203,-0.407444751912036,0.448167488348286,1.19630403144203,1.65239527066893,1.80660462952749,1.7378381504593,1.53254711392209,1.26538846967744,1.0048962658316,0.755054157664895,0.582876154973129,0.394541047397876,0.329701942651555,0.164090523482762,0.200028672960515,0.00176215075434517,-3.18159561451036e-05,-0.224076204146833,-0.148192341518289,-0.356702806723369,-0.354748674985793,-0.565438592499143,-0.622934633330844,-0.799546619369944,-0.801465499104837,-0.747289113340698,-0.423534114710158,0.0153640507740308,0.445678085608462,0.542024556840481,0.247346067555162,-0.256643075208088,-0.552440448654368,-0.439595577259607,-0.0234097835009288,0.431096429242332,0.727233322429778,0.813247372180781,0.777089542091254,0.642131370843448,0.543696208076734,0.375254853409804,0.338541757054969,0.16251346985736,0.215075603257763,-3.33000879532351e-05,0.00132467535194981,-0.226543226689946,-0.143880231722817,-0.339246302437536,-0.317201881484872,-0.480626124458091,-0.468496686713931,-0.51283410767679,-0.320301059041383,0.0312568213056674,0.712380003296818,1.48766387640183,2.02611873646542,1.80410185224959,0.721753747441229,-0.766584078059228,-1.82548086497427,-2.0094107604079,-1.47408830744428,-0.69319034988917,-0.0393060332557926,0.32741075067613,0.496028174663179,0.478838449420369,0.466402594509109,0.329623980903166,0.330339708946688,0.152649910452439,0.225862694698382,0.00132408657820701,-0.00209044534548431,-0.220871696475498,-0.132170017406913,-0.304144125734206,-0.261187623186443,-0.370401276882732,-0.295941559829843,-0.230747793042342,0.0854728487262773,0.588707918258524,1.38724874437435,2.21932108869094,2.69321312777503,2.28437662208477,0.89555985300379,-0.938558532869829,-2.29806760409918,-2.67297993769344,-2.1945351717604,-1.36532618490214,-0.586693947700373,-0.0833200463165424,0.221424750311711,0.295817394511561,0.362851029442964,0.261015636374395,0.30044017126037,0.129454363389643,0.218195581693736,-0.00209073703741746,0.00114580312825832,-0.200877470605315,-0.111868436889532,-0.252844882416659,-0.192448285631057,-0.248394246977745,-0.128526226766705,0.0106489444665018,0.374805162631753,0.897588808668189,1.6243881083707,2.3131915005114,2.62106574982135,2.1433934511634,0.829063245153202,-0.860153615356935,-2.15645583150174,-2.61424599701223,-2.29704047475089,-1.61371955340834,-0.891579553594517,-0.378746338640574,-0.0105659229112714,0.120517046847548,0.252982387700491,0.184668781328155,0.262558583604232,0.105057214203254,0.210766341512168,0.00114546950051473,-0.0048381645767612,-0.176942788088238,-0.088712238484837,-0.193928059249103,-0.120712839103292,-0.128737352946775,0.0181101585036675,0.198428009312675,0.555667918467514,1.02356082765739,1.59676522237941,2.07933661733722,2.21633426682578,1.74892669267677,0.671936495577879,-0.67575259848632,-1.74727391239758,-2.21078887257976,-2.06276870107979,-1.59036140337552,-1.00860405222173,-0.563257955595064,-0.189225927016633,-0.0369270772894895,0.138851714417371,0.0973765911561998,0.205405633701438,0.0669520493193213,0.17972861606911,-0.00483927827388489,0.0017073502269767,-0.139979182763744,-0.0601295165784912,-0.128494349970724,-0.0496653378209405,-0.0191857365405143,0.136540277259361,0.331387751221825,0.650244205457234,1.03519580248379,1.44944011776322,1.74850217133937,1.75899505140938,1.33610839129794,0.502974555940332,-0.511602985062128,-1.34467099021442,-1.7728339498029,-1.74651906421139,-1.45878205568008,-1.02006829531274,-0.66344306560198,-0.310491812146883,-0.157159209325187,0.045921290979928,0.026020117564969,0.157629086342666,0.0411534105612652,0.16064954748759,0.00170631184448013,-0.00812967392190222,-0.106855385923545,-0.0343630270807878,-0.0663229101996656,0.0139902574185976,0.0749089333204292,0.228419664064553,0.422398830118717,0.693675851544335,0.99860476559271,1.28575623973154,1.45532819409456,1.39377147722031,1.0265476226295,0.389338601292514,-0.36966055151687,-1.00935302329294,-1.39120403042641,-1.43947591095464,-1.29180871047827,-0.976744251332162,-0.712780390552766,-0.399997399035027,-0.263305679654354,-0.0518333880452913,-0.0566443003928203,0.0876685080770335,-0.00326139142604456,0.111854392334579,-0.00813347080045023,0.00322194267004286,-0.0631595631811626,-0.00584785151136836,-0.00642391954186643,0.068547054546539,0.148361613762258,0.289225185445311,0.469050827773437,0.689339008446982,0.921600136851848,1.11147678018002,1.19289735335911,1.09321592145507,0.775944728660603,0.281124972723605,-0.297127190622264,-0.789839696486499,-1.11918399338069,-1.19661971524933,-1.13395083491819,-0.902357909616131,-0.709159399817486,-0.432771250587303,-0.314050828767713,-0.103349305664764,-0.0974157488478677,0.0506772967116853,-0.0167244789794515,0.092828065367988,0.00321659175636239,-0.011738411849795,-0.0322990170095029,0.0158247309679067,0.0432560996456133,0.114356634835268,0.207422664846962,0.336427891660892,0.500397920946516,0.68068982468863,0.858813115545595,0.986275638305851,1.01717239119853,0.907773063333663,0.636601353989701,0.246171245862471,-0.209797504595847,-0.600674909016359,-0.894129515746785,-0.991174402310095,-0.995876543654933,-0.836207834064368,-0.711097347986683,-0.478631713597739,-0.384195109557125,-0.184727226303327,-0.168987448815597,-0.0229702451826817,-0.062573088792078,0.0347334061990569,-0.0117459965828576,0.00520798441238631,0.00577334848264455,0.036601078884,0.0806259464593053,0.140823865954973,0.233174678358313,0.342257257025362,0.479395627850388,0.617239498934861,0.743525267954916,0.819400896506251,0.812855560487417,0.700493159719013,0.468533708197859,0.159886618537538,-0.197666469322753,-0.497962178675444,-0.739059596598619,-0.821304018985667,-0.846902141382597,-0.721420877149821,-0.634409747640283,-0.434089986043362,-0.359310557836336,-0.178647784057857,-0.161681835020839,-0.0301208045830544,-0.0526868979620778,0.0287183732603485,0.00519882578576036,-0.0142512350832417,0.0236422304633656,0.052135908792713,0.108804911295856,0.169341701449937,0.260714625624205,0.362721440546907,0.483056598641248,0.600139500947988,0.698202047156557,0.752614847057751,0.732455436074415,0.632390438044651,0.431962977039106,0.180630413024796,-0.122472203644357,-0.373936306067745,-0.603456278561965,-0.694785680598605,-0.762161614839612,-0.67941501781208,-0.639942399948706,-0.473363524810254,-0.418259049050194,-0.252215042253348,-0.225724750216182,-0.101515171119153,-0.0976820272411138,-0.0287180570421403,-0.0142625017613323,0.00558387243695497,0.0402744181706456,0.0515178646480913,0.102131421207354,0.144576961740084,0.21489787124309,0.286461210150963,0.369722169679245,0.444724477620792,0.501503693189442,0.524329499251686,0.491763420173526,0.407647381645809,0.255103524848548,0.0784805012329645,-0.13344295911488,-0.297778822590798,-0.453930522688077,-0.503269727962257,-0.549373103593276,-0.477383555312638,-0.452683972052812,-0.322893018368218,-0.290052161411925,-0.163446863775821,-0.150667437303467,-0.0588432172599186,-0.0558342936109231,-0.00980988047565525,0.00557172119296026,-0.00944186695969949,0.0388901228808546,0.0666322338958446,0.108778887291347,0.162435204601382,0.222380620730982,0.297485449858465,0.368534360792282,0.442123408072811,0.487993979857714,0.513589480428988,0.480502414078318,0.41466580190628,0.275585667421995,0.129704278868205,-0.071754471378241,-0.215291748871122,-0.388322126791817,-0.440398286835218,-0.529047614886756,-0.469073306697286,-0.487613796165895,-0.36066106982919,-0.352364052634237,-0.219027794554565,-0.208139729897134,-0.111808628343526,-0.0940866853831018,-0.0517997644033572,-0.00945530083241926,-0.000380863982537132,0.0149600610365471,0.00492610293480423,0.0228452436615713,0.0217667426104634,0.0387178683779505,0.0450271251128444,0.0597630439562626,0.069531214793814,0.0764286778004776,0.0819804452942271,0.0723061967720658,0.0669101033288697,0.036115698072532,0.0226357038576803,-0.0223520668751692,-0.0292274791971807,-0.074091529413798,-0.0598108589083513,-0.0961853058510758,-0.059449989628405,-0.0886696653285249,-0.0407285338868581,-0.0651971666989622,-0.021688395343023,-0.0377576076735903,-0.0124365741051952,-0.0125391923687568,-0.0135037922542743,-0.000384673524853191],"Archive1110_field3":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.90553932497968,-2.90836838531215,-2.9069317106723,-2.91031797161592,-2.90930429969785,-2.91314954887511,-2.91381989666762,-2.91793553416632,-2.9202962340159,-2.92461034379746,-2.9280268801633,-2.93197000655132,-2.93522640834787,-2.93777884314087,-2.93949149909419,-2.93973659002574,-2.93906238237334,-2.93687253403322,-2.93405834384555,-2.93030168018084,-2.92651573201847,-2.92249562494238,-2.9190248367187,-2.91567314986021,-2.91328782170346,-2.91085720630387,-2.90969313733552,-2.90805229928261,-2.90752877149836,-2.90733128928164,-2.90928097192912,-2.90661936467725,-2.90675404200835,-2.90754296062675,-2.90735964213069,-2.90812994644436,-2.90806018827664,-2.90851787753306,-2.90836122150694,-2.90831677487144,-2.90783870048679,-2.90725563148278,-2.90645162290353,-2.90562301590901,-2.90481210883682,-2.9042545418418,-2.90381954302154,-2.90387210700076,-2.90386901135764,-2.9044367283218,-2.90458981551255,-2.90533725737025,-2.90536729395488,-2.90603748883246,-2.90587210044469,-2.9063738392309,-2.90609548974412,-2.90651558443919,-2.90607434993561,-2.90715145841521,-2.90645288879209,-2.90368012703182,-2.90409408964973,-2.9019687134023,-2.90055011246563,-2.89760237181,-2.89478497235092,-2.8906335720935,-2.88661482573003,-2.88172108057066,-2.87743153223072,-2.87309643941342,-2.8701648751275,-2.86802735363302,-2.8679342660435,-2.86887223098766,-2.87185924938318,-2.87523479001975,-2.88012023621116,-2.88426302168209,-2.88938715411591,-2.89278826535331,-2.89701058930202,-2.89904984127852,-2.90198715927009,-2.90287643433305,-2.90456292865106,-2.9049146442161,-2.90521645450426,-2.90674670889638,-2.9094138563622,-2.90558510479714,-2.90685866291352,-2.90652930049682,-2.90713333663612,-2.9070213460154,-2.90745212733381,-2.90723214900272,-2.907312809607,-2.90671082075646,-2.90622942483322,-2.90509987212677,-2.90410585290493,-2.90267780938162,-2.90163605480347,-2.90046757642741,-2.89998075770703,-2.89950914050425,-2.89982750567989,-2.90003199471989,-2.90092661609683,-2.90147127332754,-2.90250830416358,-2.90308907162241,-2.90391212102541,-2.90443140416784,-2.90486109331768,-2.90548494467377,-2.90508277381675,-2.90751254668449,-2.9066470696645,-2.90315351296337,-2.90402099414676,-2.90182563038709,-2.9011060684367,-2.89859700905544,-2.89685611659101,-2.89378593552726,-2.89127766460958,-2.88794870104003,-2.88529714158337,-2.88245717640152,-2.8806514306299,-2.87925892526948,-2.8792329391161,-2.87984500833721,-2.88178013194355,-2.88400418797865,-2.88713540748852,-2.88993194185455,-2.89318804264754,-2.89565706046467,-2.89829854476315,-2.9000760945455,-2.9018258261084,-2.9029894566483,-2.90381205886862,-2.90478467584505,-2.90415658598924,-2.90704966319942,-2.90831593769064,-2.90431438130974,-2.90568489402694,-2.90429060259011,-2.90460092445363,-2.90321419026238,-2.90282206883016,-2.90111109375156,-2.89990787524699,-2.8976851033359,-2.89571903418945,-2.8931352711898,-2.89097840059204,-2.88886192031526,-2.88771113249422,-2.88716909877436,-2.88783251656641,-2.88897682249334,-2.89096486232688,-2.89289970409542,-2.89519955808038,-2.89710061149352,-2.89903056467849,-2.9005657685432,-2.90184823560996,-2.9030626599535,-2.903570810728,-2.90488224836935,-2.90406179476955,-2.90716562987074,-2.90643642989339,-2.90309016370849,-2.9041629033941,-2.90200008493277,-2.90176457231264,-2.8994926583008,-2.8982583404253,-2.89556345440615,-2.89333640284895,-2.89007132760212,-2.88697331677082,-2.88331890674584,-2.88010888165717,-2.87735277313848,-2.87609122639337,-2.87631913532948,-2.87836621422027,-2.88136944832477,-2.88512859422199,-2.88870665671865,-2.89217728885814,-2.89506446507069,-2.89753835184529,-2.89960590265817,-2.90104681858664,-2.90258981660506,-2.90301431544507,-2.90454483669574,-2.90353056041471,-2.90664082395366,-2.90679834442568,-2.9037567901982,-2.9048122265315,-2.90303019573354,-2.90306044559114,-2.90114706229207,-2.90013304192736,-2.89763936551665,-2.89521219457975,-2.89144196419162,-2.88699173399418,-2.88127016422825,-2.87507410785312,-2.86934591291179,-2.86589103023833,-2.86581343459193,-2.86918309779609,-2.87459873885401,-2.88064111760006,-2.88610758449067,-2.89065555176392,-2.89430605754855,-2.89701314300066,-2.89937609970157,-2.90075232511436,-2.90251116502825,-2.90279981295061,-2.90457671296982,-2.90354244435956,-2.90621848690822,-2.90534082685323,-2.90348568782633,-2.90412647850443,-2.90225719439199,-2.90201652832323,-2.89995031750898,-2.89852867680849,-2.89569746712979,-2.89239584117198,-2.8873068251798,-2.88003961261437,-2.86974274918227,-2.85678268460435,-2.84397677190462,-2.83576732400474,-2.83603776558368,-2.84450421039531,-2.85743834038753,-2.87026021682881,-2.88059613453673,-2.88785803529433,-2.89304316703751,-2.896345185976,-2.89913471421925,-2.90051649187915,-2.90245597828156,-2.90259745731376,-2.90445913005043,-2.90346359107048,-2.90543734023259,-2.9047822620143,-2.9041651066006,-2.90437173114937,-2.90295421967984,-2.90266403972484,-2.90096251615581,-2.89947356017219,-2.89675632621279,-2.89270768505769,-2.88585321174777,-2.87361604637841,-2.85364449303208,-2.82520867719072,-2.79497110008945,-2.77458684914535,-2.77491036742525,-2.79535870723424,-2.82570301832293,-2.85360668872847,-2.87362095588642,-2.88554368285286,-2.89270019186685,-2.89651225032225,-2.89952145003062,-2.90075423864577,-2.90274438996059,-2.90271787187328,-2.90458549269436,-2.90378824214285,-2.90451054206678,-2.90335127873695,-2.90468017338883,-2.90421117611887,-2.90327546160494,-2.90283311828163,-2.90162863988699,-2.9001821583051,-2.89794991339852,-2.89345044438388,-2.88458812664567,-2.86491293175703,-2.82820797892295,-2.77128187804753,-2.70749664086117,-2.66331397359612,-2.6636421758065,-2.70785807202351,-2.77216957798743,-2.82867604135777,-2.86569637554126,-2.88481244523572,-2.89413844909429,-2.89804324478117,-2.90080789344568,-2.90159913560061,-2.90338139609849,-2.90309073466513,-2.9047534298703,-2.90424646953767,-2.90342787354799,-2.9022414712148,-2.90574417710889,-2.9045284211704,-2.90444484146001,-2.90399894114212,-2.90378863456739,-2.90292647568257,-2.90215430835018,-2.89844653302038,-2.88879183695354,-2.86137744763464,-2.80362782468755,-2.70813127233504,-2.59699460890213,-2.51839155313743,-2.51826845587855,-2.59628481677105,-2.70832681026104,-2.80390764208858,-2.86244513608567,-2.88907059081782,-2.89927152726767,-2.90197331818755,-2.90355637128588,-2.90337427484494,-2.904592253361,-2.90390346067379,-2.90516917353356,-2.90509140505215,-2.90209193666963,-2.90077142062541,-2.90699615175718,-2.90487172592868,-2.90587459710133,-2.90554045286904,-2.90678614478828,-2.90717687128898,-2.90920979044772,-2.90862029211604,-2.90212549743174,-2.87303064272463,-2.80233342839525,-2.67720507321396,-2.52602290214908,-2.41656490287478,-2.41606629022103,-2.52420593545807,-2.67645888286401,-2.80227912646655,-2.87443280369918,-2.90267066745288,-2.9098362171529,-2.90904056618526,-2.90811347585997,-2.90625559664672,-2.90643482564508,-2.90517688270175,-2.90575658768199,-2.90618651913309,-2.90088907594523,-2.89953691776122,-2.90857259114978,-2.90556469985105,-2.90792147582314,-2.90787636379956,-2.91104943126497,-2.91338394617528,-2.9195926353431,-2.92492921412799,-2.92770886033756,-2.90991467888659,-2.85039121398021,-2.73154958195715,-2.57924941079328,-2.46456788690236,-2.46436758202713,-2.57748481660604,-2.73057248418674,-2.84989311278095,-2.91109773637614,-2.92799272342942,-2.92612919763024,-2.91914877222609,-2.91440669032529,-2.91022411557981,-2.90892732076298,-2.90694309307336,-2.90659949994734,-2.90766043111492,-2.89940178842992,-2.89828163969809,-2.91040029441332,-2.90640659992789,-2.9102994218878,-2.91063778967156,-2.91597673941395,-2.92057120865211,-2.93154492458224,-2.94431422688497,-2.96083122547563,-2.96646083145222,-2.94466234153934,-2.87607650438043,-2.77480048679241,-2.6919694611245,-2.69260304879908,-2.77415782039261,-2.87597904668462,-2.94397877585372,-2.96707745103252,-2.96047504137468,-2.94534572967701,-2.93085877019998,-2.92173614370422,-2.91497632600978,-2.91190568738883,-2.90914553901767,-2.9076053086638,-2.90933462094796,-2.89851010883015,-2.89742692578612,-2.9122530060524,-2.90747509838743,-2.91290523116777,-2.91364122862696,-2.92103546499107,-2.92758463993984,-2.94248038723976,-2.96118885424902,-2.98952733484922,-3.01829112007118,-3.03941715779022,-3.03561270079356,-3.00795475955439,-2.97643016052448,-2.9773860149684,-3.00776552563537,-3.0360325218875,-3.03840225539052,-3.01813601759208,-2.98829413121592,-2.96184831904556,-2.94149427760026,-2.928790646552,-2.91983969758062,-2.91502908908865,-2.91158515571569,-2.90874575446633,-2.91127180584948,-2.8972436726463,-2.896764093702,-2.91421459599726,-2.9085632973798,-2.91545331232796,-2.91643923262141,-2.92541879830905,-2.93302762817806,-2.94973269050494,-2.97013142258297,-3.0018876849654,-3.0389963093002,-3.07961097451646,-3.11037551100896,-3.12728355564152,-3.13026043770586,-3.13098977005715,-3.12754291981819,-3.11109829306124,-3.07826319199598,-3.03839236201539,-3.00026440979145,-2.9706034984901,-2.94860650307161,-2.93429377597991,-2.92416572921808,-2.91792238202981,-2.91408974822569,-2.90985251695483,-2.91314298048039,-2.8971858877397,-2.89669977961591,-2.91577284845824,-2.90967735741377,-2.91766032999666,-2.91870803870457,-2.92854116007058,-2.93607461448716,-2.95212708941342,-2.96956829346024,-2.99534124015527,-3.02259279465986,-3.05174664969805,-3.07342195162537,-3.08699755089169,-3.09073389022427,-3.09179884819477,-3.08831944413361,-3.07487465833029,-3.05079546828581,-3.02213136373688,-2.99367586167244,-2.96994985219941,-2.95088238194006,-2.9372396161753,-2.92722571166429,-2.92013073295611,-2.91631534581798,-2.91085778372314,-2.915049562204,-2.89639259145282,-2.89686165443113,-2.91725867435253,-2.9105632363347,-2.91933095461451,-2.92016470669399,-2.93006918785876,-2.93653502084696,-2.95008301102587,-2.96181438391591,-2.97669384702958,-2.98605275159386,-2.99004060696328,-2.98279408890703,-2.96977072419891,-2.95768087158919,-2.95888285512238,-2.97127136797067,-2.98436075520477,-2.98971797880149,-2.98614280077355,-2.97543955901105,-2.96226238600597,-2.94893046752289,-2.93760669082143,-2.92886650829539,-2.92147069341719,-2.9181463154835,-2.91156525213561,-2.91648233482466,-2.89753450347738,-2.89772286274123,-2.91789279443352,-2.91131475975755,-2.92024131603224,-2.9207177550275,-2.92996448317686,-2.93475789123214,-2.94490958554844,-2.95057630180331,-2.95514713086494,-2.94937145183978,-2.93313101749464,-2.90382870550239,-2.87123273202631,-2.84777544532212,-2.84837416872318,-2.87194689314134,-2.9049915405941,-2.93311918321902,-2.94969080988096,-2.95418126118642,-2.95089920353386,-2.94377593419387,-2.93551846116575,-2.9288474224954,-2.92170424092625,-2.9192839346072,-2.91199728454693,-2.917759002885,-2.89715132770521,-2.89862817199571,-2.91843114905709,-2.91163308032114,-2.92040638893219,-2.92035796778577,-2.92842342144636,-2.9313405727681,-2.93797079617055,-2.93869181387764,-2.93602681735225,-2.92193826641523,-2.89688118736471,-2.8605175720525,-2.82344221214441,-2.7984544769453,-2.79855725606027,-2.82345848028943,-2.86117170903655,-2.89702314560083,-2.92249409547502,-2.93557567793689,-2.93906880981325,-2.93719990370162,-2.93191438819401,-2.92765422051241,-2.9210361828133,-2.91980419754933,-2.91197807492139,-2.91816606596717,-2.89953961422265,-2.90021929891691,-2.91777579765867,-2.91180664316107,-2.91972111284892,-2.91922711728789,-2.92571058328954,-2.92687527974937,-2.93028195061056,-2.92753315084069,-2.92064702099931,-2.90370210466836,-2.87788258623865,-2.8443094423074,-2.81189312137045,-2.790955869999,-2.79081296735372,-2.81155063731961,-2.84439592381095,-2.87784484974546,-2.9040077907097,-2.92032161009942,-2.92760242883109,-2.92969113005679,-2.92699016446941,-2.92520391088408,-2.9193998809797,-2.91952129062882,-2.91170019044733,-2.91843107399502,-2.89919737007043,-2.90151316029623,-2.91725306389971,-2.91143878376643,-2.91839695344555,-2.91744799616022,-2.92218346628427,-2.92188481660385,-2.92258009047303,-2.91764413718253,-2.90862452371946,-2.89178899475775,-2.86860599260606,-2.84101256963324,-2.81559749571725,-2.79979946878164,-2.79958376801903,-2.81524651892951,-2.84092085679699,-2.86869832536072,-2.89208614545673,-2.90875355582615,-2.91772985030437,-2.92255365229541,-2.92178721182569,-2.92222699811,-2.91722563639164,-2.91865005804148,-2.91094752966654,-2.91753903030122,-2.90258522165692,-2.90340857288547,-2.91533709393183,-2.91105908918252,-2.91636231673411,-2.91521615680411,-2.91806934097479,-2.91664098842809,-2.91509034155814,-2.90885272050863,-2.89879751147023,-2.88312218220871,-2.86308028616473,-2.8410414961404,-2.82152780570594,-2.80987879613708,-2.8096141841461,-2.82121289838134,-2.84068218928408,-2.86305517605353,-2.88299836583967,-2.89894805391816,-2.90850957355351,-2.91528359817893,-2.91603481206259,-2.91848722367372,-2.91445359899142,-2.91712256639815,-2.91012497133782,-2.91678228943302,-2.90180252893528,-2.90459967295692,-2.91399034325119,-2.91007119811736,-2.91398134953765,-2.91262487460617,-2.91372843288794,-2.91146762836323,-2.90820957074721,-2.90132757181753,-2.89099756469599,-2.87683692064088,-2.8597260155862,-2.84210721246762,-2.82700932773115,-2.81831669402795,-2.8180787953484,-2.82683329045559,-2.84174212985022,-2.85982686031695,-2.87661725355636,-2.89142794852386,-2.90085753965186,-2.90884312801182,-2.91058778285504,-2.91462715861233,-2.91144673255284,-2.91507494048656,-2.90880531111851,-2.91467633440093,-2.90568735260296,-2.90629916171441,-2.91120054317972,-2.90927731129979,-2.9111179314578,-2.90981658924814,-2.90917349944685,-2.90626208953103,-2.90157895073606,-2.89429554258018,-2.88387296446325,-2.8710205065962,-2.85612902257305,-2.84172776028566,-2.8296406713681,-2.82304050262333,-2.82279951778272,-2.82982728593484,-2.84151665017125,-2.8566714626663,-2.87087830077356,-2.88479454674165,-2.89382321635189,-2.90276235048834,-2.90525290641306,-2.91063757241803,-2.90840601789691,-2.91281497932343,-2.90778731682718,-2.91324289643148,-2.90414387016787,-2.90681398438628,-2.90951380950573,-2.90773203773252,-2.90829296096905,-2.90671382884212,-2.90468875806691,-2.90107892654145,-2.89534386619031,-2.88765989889941,-2.87725756206425,-2.86526424421461,-2.85194250798185,-2.83952228676591,-2.82931488380036,-2.82373101512403,-2.82330893544108,-2.82884708383568,-2.8383341866932,-2.85124947725177,-2.86375712364814,-2.8769277837241,-2.88593823797464,-2.89565054718585,-2.89911934529271,-2.90568481401482,-2.90462989007219,-2.90965558919224,-2.90591270019132,-2.91024615900687,-2.90767461312949,-2.90793801956015,-2.90671275090037,-2.90677466834419,-2.90551007246501,-2.90413089204063,-2.90097088319394,-2.89718997981098,-2.89098388158611,-2.88368817590329,-2.87403071650705,-2.86376837299658,-2.85259945188524,-2.84296113675584,-2.83507501880275,-2.83153066926927,-2.83150036469321,-2.83686569630606,-2.84435842622163,-2.85577486790387,-2.86559875668122,-2.87773083298255,-2.88483421925394,-2.89450944698604,-2.89713485940903,-2.90407738152383,-2.90311281198037,-2.90813334392653,-2.90553798832297,-2.90895042408194,-2.90551678804229,-2.90653427368051,-2.9053863198672,-2.90411805572093,-2.90188457844613,-2.89850859171043,-2.89328712438939,-2.88629702324063,-2.87678703304694,-2.86521626944824,-2.85130426085491,-2.83636375568196,-2.82088818837748,-2.80718568691512,-2.79603367527871,-2.79000742874313,-2.78871087398189,-2.7939498797142,-2.80293594082884,-2.81689878493195,-2.83094076391624,-2.84739901745538,-2.86019731305736,-2.87415226142904,-2.88238529155772,-2.89209569514731,-2.89578363350558,-2.90160031642681,-2.90250064455533,-2.90490304394963,-2.90732965410949,-2.90731027968885,-2.90563072230241,-2.9064731049357,-2.90685047460114,-2.90677491465116,-2.90762806417678,-2.90766682303364,-2.90873701019523,-2.90900216169614,-2.91036792476617,-2.91068054234262,-2.91240026706326,-2.9123663925748,-2.91444145822925,-2.91353759922957,-2.91587204407138,-2.91359165881311,-2.91612349601692,-2.91230784704652,-2.91508407210419,-2.91021158082524,-2.91315532670961,-2.90824195360908,-2.91084456895686,-2.90719623611995,-2.90852345518855,-2.90721268037202,-2.90683765283332,-2.90743901481774,-2.90534574990884,-4.64894193236941,-4.65739805060622,-4.65386478670705,-4.66597318242471,-4.66528005714594,-4.6809985378932,-4.68800078332531,-4.70748376136447,-4.72267529304681,-4.74548698489552,-4.7658653904167,-4.7880936765058,-4.80672374893542,-4.82136501978722,-4.82993647850127,-4.83090150625944,-4.82484739438582,-4.81187056378716,-4.79376244097166,-4.77303547977934,-4.75037409823974,-4.72994276522961,-4.70973108891901,-4.69459687015656,-4.6802539213553,-4.67113976048059,-4.66288671989512,-4.65814426741978,-4.65364787323091,-4.65444587976129,-4.65942346309942,-4.65052483502415,-4.65093335563817,-4.6532016665878,-4.65235707079433,-4.65467058449709,-4.65417424326087,-4.65573323198477,-4.65517089771841,-4.65554958922337,-4.65433364618799,-4.6534855101265,-4.65150097963931,-4.6501346519055,-4.64796601977819,-4.6473042934688,-4.64566726764292,-4.64653088792947,-4.64544941242555,-4.64768498000207,-4.64656061701383,-4.64944137912834,-4.64782496882832,-4.65066262053801,-4.64870831643537,-4.65101474176287,-4.64928763370775,-4.65095452538183,-4.64954383274445,-4.65265962926963,-4.65178888218226,-4.64375209365336,-4.64519716903733,-4.64029762201006,-4.63693638772921,-4.63041192662882,-4.62392731422951,-4.61475763272478,-4.60571474017991,-4.5949806179643,-4.58552771285545,-4.57618337930724,-4.56994776357546,-4.56561226823567,-4.56576324791314,-4.56825032971545,-4.57512684825958,-4.58286652573574,-4.59371078757809,-4.60295032293673,-4.61409670083001,-4.62156127182463,-4.63060050899612,-4.6350219774133,-4.64121393584365,-4.64314235703989,-4.64657789787506,-4.64744854576991,-4.64751746333807,-4.65265038483269,-4.66048871814053,-4.64927926005933,-4.65260443541013,-4.65296866124938,-4.65464441858732,-4.65590458153779,-4.65775155400175,-4.65904411301467,-4.66058309762183,-4.66108791369011,-4.66144994548552,-4.66041899520334,-4.65912612198587,-4.6566024890126,-4.65420989575881,-4.65124744585623,-4.64903857853841,-4.64687462400831,-4.64578864384138,-4.64490637869708,-4.64496997732937,-4.64506857143291,-4.64572319485599,-4.64629748470502,-4.64695051661912,-4.6476988899955,-4.64803722450067,-4.64913188728524,-4.64797893516504,-4.65441362115727,-4.65243916737242,-4.6433311700697,-4.64525409526885,-4.6408323325324,-4.63885120051278,-4.63377278511815,-4.62976167880191,-4.62338148464606,-4.61796562763134,-4.61104332285589,-4.60559602603228,-4.59984305851384,-4.59643378268451,-4.59388580524865,-4.59431718431356,-4.59600795624229,-4.6004242094847,-4.60536952476672,-4.61202309060907,-4.61797952597249,-4.62463681016724,-4.62974928400093,-4.63498121767769,-4.63855008890595,-4.64193194844124,-4.64414093374074,-4.64571996658106,-4.64751416471339,-4.64577048794874,-4.65362514995054,-4.65732408449879,-4.64682460969557,-4.64991409244907,-4.64787465542394,-4.64862151838235,-4.64663778456834,-4.64629784405197,-4.64356179967817,-4.64176814435118,-4.63780761837976,-4.634421043444,-4.62943876026159,-4.62540601292838,-4.6210244656048,-4.61864250331755,-4.61712563619363,-4.61805690720495,-4.61979111300698,-4.62323264793803,-4.62659112329749,-4.63066155165125,-4.6340429171351,-4.63746573844366,-4.64017565686795,-4.64248642881082,-4.64454707315687,-4.64556809616235,-4.64784669487883,-4.64607970325431,-4.65362968404257,-4.65172016304355,-4.64384570955928,-4.64593658392856,-4.64184164603388,-4.64113388773595,-4.63664571845949,-4.63412133341384,-4.6285713958998,-4.62419797337823,-4.61739375381771,-4.61140229801416,-4.60388491330866,-4.59784542908627,-4.59231030270646,-4.59021299586607,-4.59065045727916,-4.59498623249394,-4.60094023040181,-4.60863020805364,-4.61580582036709,-4.6228913071705,-4.62863945627427,-4.63366059268698,-4.63762166109865,-4.64058242932417,-4.64332571425676,-4.64435171959282,-4.64700647350895,-4.64488379872507,-4.65226293930623,-4.652599509095,-4.64574520931365,-4.6477433037852,-4.64456449197074,-4.64468845280958,-4.64091952570738,-4.63914577622685,-4.63389174923079,-4.62927463760067,-4.62120255318161,-4.61252072032636,-4.60067446705291,-4.58886632577231,-4.57746949370466,-4.57113053148539,-4.57059025554375,-4.57703707202749,-4.58709158922966,-4.59897431018076,-4.60970603425792,-4.61907354195398,-4.62641657107018,-4.63214077189017,-4.63674403949807,-4.63978206166295,-4.64295376999008,-4.6438902275295,-4.64699427238684,-4.64514279975579,-4.65067720726342,-4.64805280342594,-4.64497119860764,-4.64585841474124,-4.64211513028733,-4.64168032756591,-4.63703129325492,-4.63430373237132,-4.62769411620834,-4.62105081792542,-4.60972901369778,-4.59549488498798,-4.57500698522051,-4.55146433224943,-4.52809785265251,-4.51412859058274,-4.51438155010348,-4.52962226749515,-4.552586310745,-4.57659850155149,-4.59644959778537,-4.61146294038908,-4.62222368170964,-4.62964952448915,-4.63538069942049,-4.63875570531071,-4.64241126365896,-4.64320583888474,-4.64651224231665,-4.64492746772591,-4.6482306111156,-4.64600829758784,-4.64649408506582,-4.64634891793001,-4.64327991898394,-4.6429309490824,-4.63854479433313,-4.63568971425985,-4.62864307754561,-4.62026109850991,-4.60495409354132,-4.58175267431451,-4.5448590195968,-4.49665778600433,-4.44620904318792,-4.41377650716674,-4.41413347167149,-4.44762339285626,-4.49732081755646,-4.54516994943618,-4.58103735341774,-4.60454572465556,-4.61941067601995,-4.6284074668765,-4.63498572096006,-4.63843278601757,-4.64241572208623,-4.64304796831157,-4.64648302307565,-4.64559973787497,-4.64501103958811,-4.64132331590574,-4.64735093032165,-4.64561125479314,-4.64303049765893,-4.64247815151358,-4.63837374575865,-4.6354353555682,-4.62844081588947,-4.61881442548783,-4.59949795772532,-4.56462031319388,-4.5029409206273,-4.41425962428121,-4.31700528416833,-4.25192015472898,-4.25258842382427,-4.31923632196112,-4.41648921013576,-4.50506888648933,-4.56586786050724,-4.60068946989045,-4.61959521869462,-4.62936484326829,-4.63603951362409,-4.63906579815701,-4.642974157932,-4.64324188783919,-4.64645339243473,-4.64643837480113,-4.64140891873811,-4.63741643609522,-4.64935399724966,-4.64594138570647,-4.64458252937519,-4.64417588554326,-4.64131189482885,-4.63934544921389,-4.63427618688888,-4.62595682958066,-4.60587194375136,-4.56174534362135,-4.47413190562276,-4.33790014886318,-4.18212815092303,-4.07430540219883,-4.07428539709208,-4.18274921048381,-4.33910907631171,-4.47630935306105,-4.56362132134967,-4.60724243631173,-4.62679017075138,-4.63464806109719,-4.63965669520171,-4.64122394248754,-4.64447431700125,-4.64407257054658,-4.64680597018248,-4.6479432929184,-4.63676070428982,-4.63243257686657,-4.65162127642325,-4.64618891063799,-4.64641671337903,-4.6463612516184,-4.6455942492866,-4.64588038197591,-4.64540394177645,-4.64305557027332,-4.63040798261555,-4.59005375582934,-4.49492957395327,-4.33295564719899,-4.13828213575583,-3.99795977203176,-3.99685216172988,-4.13590124595449,-4.33138239823427,-4.49607076478598,-4.59255633215357,-4.6325566006664,-4.64473947211355,-4.64608081450116,-4.6468498058927,-4.64555749542157,-4.64727128366603,-4.6458448962039,-4.64754716132438,-4.65000412488891,-4.63264044950771,-4.62797057646487,-4.65440555694237,-4.64711423649701,-4.64946043214669,-4.65014711870233,-4.65249088947794,-4.6564746553661,-4.6634529929816,-4.67250351459301,-4.67820126079635,-4.66270447411426,-4.59681198244028,-4.46141997563016,-4.28280720572223,-4.14476043930507,-4.14319080962326,-4.27802325675617,-4.45679671382077,-4.59526457505591,-4.66381421840505,-4.67953586624742,-4.67392249735272,-4.66349622195432,-4.65739202388258,-4.65179339590439,-4.651151436133,-4.64825688258223,-4.64861763517468,-4.65253434179089,-4.62734748306979,-4.6235859694221,-4.65774464810152,-4.64838609453095,-4.65323035887978,-4.65484655072341,-4.66091513340533,-4.66934367946913,-4.68523311000926,-4.708373263369,-4.73888284044149,-4.76311631595734,-4.75716183358506,-4.69745417485965,-4.59271323293931,-4.49847174942095,-4.49770806652864,-4.58804278851765,-4.69278094039541,-4.75406810556268,-4.76248917878368,-4.7387496751454,-4.70952064982965,-4.68496429993497,-4.67070366804152,-4.66010996340345,-4.65643856555574,-4.6519213671545,-4.65029598695649,-4.65574159685116,-4.62419216856774,-4.62020848406433,-4.66087533520316,-4.65006144076991,-4.65748005135036,-4.66011830278324,-4.66993720706288,-4.68242536970807,-4.70601010244704,-4.74041450510934,-4.79062772826241,-4.84780185563935,-4.895833053922,-4.91087815778434,-4.88764809479429,-4.85017265370444,-4.85036230708542,-4.88462491465673,-4.90821623290032,-4.89276891685225,-4.84586613311183,-4.78852033194322,-4.7405451515797,-4.70477063609455,-4.68357843118644,-4.66837474321991,-4.6616952855476,-4.65552757160457,-4.65192502704122,-4.6589297342608,-4.61946958319777,-4.61780098307333,-4.66448082564797,-4.65198708136233,-4.66193864224549,-4.66528381607695,-4.67816397963287,-4.69311322939012,-4.72076194472231,-4.75876033132822,-4.81367120552621,-4.87709702351834,-4.93631088110318,-4.96985899545545,-4.97384967315128,-4.96202645386024,-4.96305009495714,-4.97552731162375,-4.97176434563458,-4.93505088407467,-4.87573144633289,-4.81150591048337,-4.75915036063043,-4.71964423897228,-4.6949666460116,-4.67688882376608,-4.66755999456963,-4.66025712565497,-4.65416268524984,-4.66264412966176,-4.61914027087643,-4.61692480405711,-4.66687439150356,-4.65388562775236,-4.66577249781055,-4.66951633518567,-4.68427734735077,-4.6996067211439,-4.72691217200411,-4.76031870893549,-4.80448957062575,-4.84655785312312,-4.87484814988757,-4.87211037272579,-4.84498884550882,-4.81592863480592,-4.81865864267788,-4.85058417512336,-4.87702449493278,-4.87494738649396,-4.84561226305539,-4.80168811670498,-4.76002563816932,-4.72470724097284,-4.70067800714338,-4.68199409307971,-4.67120331880135,-4.66339402599581,-4.65552889977343,-4.66546522724025,-4.61586291851911,-4.61745219612316,-4.66967271454277,-4.65568084544263,-4.669040767901,-4.67253230355535,-4.68778909019991,-4.70152448341573,-4.72502205007444,-4.74878878194559,-4.77464291762019,-4.78667368970761,-4.77402014093116,-4.7248532761718,-4.65518218853333,-4.60038698356026,-4.60337864326704,-4.66035721938396,-4.72948678512098,-4.77515222663157,-4.78748967434781,-4.77347393449343,-4.74994146787024,-4.72404247046732,-4.70375939662781,-4.68664165356312,-4.67511187042128,-4.66768380455947,-4.65758034701834,-4.66863108818516,-4.61975140332885,-4.61959084621677,-4.67013913420986,-4.65704031539047,-4.6707658568926,-4.67377107283083,-4.68825067216779,-4.69914109281896,-4.71700832502574,-4.73011484893427,-4.73869593011247,-4.72707319816762,-4.68710886931869,-4.61363180604763,-4.52703078958865,-4.46416754438275,-4.4651091410843,-4.52826953620463,-4.61507972926722,-4.68644897842355,-4.72648460639409,-4.73608913674828,-4.72942786292668,-4.71408660446919,-4.69932081541026,-4.68545965014971,-4.67464322383119,-4.66847049198095,-4.65768579345239,-4.66983690938151,-4.61774602199037,-4.62297648601465,-4.67135837035403,-4.65800274033301,-4.67161555061603,-4.67359512534034,-4.68631482823117,-4.69378550219898,-4.70561867738929,-4.70974216759108,-4.70599521796369,-4.6817398946722,-4.63286132022028,-4.55900524916507,-4.47992751343858,-4.42558468533482,-4.42568081013015,-4.48002295936485,-4.56055952023147,-4.63401101080994,-4.6839593738256,-4.70672347068127,-4.71198710378499,-4.70580918086076,-4.69629997754225,-4.68621838834504,-4.67596233643353,-4.67143617856913,-4.65909918188798,-4.67155317603285,-4.62619886481296,-4.62750582164802,-4.66922665252395,-4.65835685767992,-4.67055755050674,-4.67172580044677,-4.6819545624507,-4.68608526634283,-4.69220182869892,-4.68961217650169,-4.67817548073724,-4.64915287552118,-4.60168236282214,-4.53840058974094,-4.47521603313763,-4.43358707400221,-4.43288582019139,-4.47328691087758,-4.53687460870283,-4.59949731716207,-4.6476032931228,-4.67514409264092,-4.68755827876967,-4.68870004649856,-4.68447374057048,-4.67897802840624,-4.67082398577661,-4.66880274407418,-4.65737451653737,-4.67031379357255,-4.62422480070602,-4.63269210441272,-4.66878887440228,-4.65819446965332,-4.66892034091431,-4.66900152685259,-4.6764416468297,-4.67774676918632,-4.67921148059303,-4.67242693541089,-4.6573021265301,-4.62868229880785,-4.58738840929035,-4.53747607458602,-4.49063067735581,-4.46127422011695,-4.46136023278524,-4.49101445982334,-4.53942787102861,-4.59000929453544,-4.63256139532155,-4.66058370876624,-4.67620614149649,-4.68193272495871,-4.68077088563183,-4.67853332188268,-4.67094233892556,-4.67064883422835,-4.65828920934469,-4.67029718953951,-4.63655932642613,-4.6381841333764,-4.66415610834362,-4.65750325298524,-4.66537404606344,-4.6649477405375,-4.66919032990359,-4.66801843634802,-4.66523462832382,-4.65529350630647,-4.63760006135277,-4.61005566019747,-4.57375535467743,-4.53339335455152,-4.49708642462257,-4.47482168433765,-4.47379745382528,-4.49432252872175,-4.5298813079853,-4.56955395822584,-4.60577338784296,-4.63288739559584,-4.65062374638946,-4.66087500309129,-4.66379107015414,-4.66623017472647,-4.66164941308248,-4.66439836308035,-4.65469801489723,-4.66653629549431,-4.63295752302085,-4.64354343542039,-4.66262026012222,-4.65626070356535,-4.6619993132549,-4.66090234607934,-4.66248895925087,-4.65982086533092,-4.65454160458813,-4.64376168318287,-4.62639631112263,-4.60243534140985,-4.57286801190349,-4.54214057885666,-4.51591414802242,-4.5008930772594,-4.5016273862584,-4.51796687834233,-4.54596907816322,-4.57797837091463,-4.60843443179686,-4.63283482043329,-4.64940794459862,-4.66049173777217,-4.66357608673527,-4.66735865710722,-4.66241625468169,-4.66584051178008,-4.65551185443917,-4.66510147956785,-4.64753600616946,-4.648319622456,-4.65627122809639,-4.65467346758239,-4.65661259615474,-4.65523078052594,-4.65339839042119,-4.64864635390188,-4.63982076252591,-4.62676264828123,-4.60742899619412,-4.58361905741567,-4.55564709970164,-4.52822153724335,-4.50489847616578,-4.49132698400331,-4.48989900400847,-4.50153874237982,-4.5227752255957,-4.54960878198578,-4.57635909774786,-4.60105491852003,-4.61927510061775,-4.6348449974997,-4.64197765299664,-4.65081190189116,-4.64986737883934,-4.65658069341905,-4.65051905752088,-4.65957931139416,-4.64118327039026,-4.65182362109241,-4.65463441012935,-4.65244670386187,-4.65291050631869,-4.65098257296721,-4.64770743163854,-4.64248102586316,-4.63338877854919,-4.62132843178098,-4.60457969018681,-4.5850875218203,-4.56345586852426,-4.54308314285153,-4.5269683185372,-4.51829560994708,-4.51930455128738,-4.52950160209304,-4.54737581658302,-4.56906748093859,-4.59114470812848,-4.61159810220608,-4.62669659933515,-4.64015961313638,-4.64549053785248,-4.65353958130728,-4.65139534678117,-4.65753337244782,-4.65091937777111,-4.65717109403391,-4.65511321104089,-4.65462736914313,-4.64832048652053,-4.65016931622817,-4.64660485431751,-4.64430162114589,-4.63751862591051,-4.63014122315225,-4.61755833033357,-4.60304861921033,-4.58366353335974,-4.56303837207359,-4.54043176040431,-4.52062878673877,-4.50413043358858,-4.49596174202857,-4.49483891145236,-4.50421948955053,-4.51841420866504,-4.54014115724579,-4.55995079437347,-4.58362306584439,-4.59919671376215,-4.61821460373087,-4.6258045048788,-4.63912017828463,-4.6400766634013,-4.64904042037546,-4.64689533223643,-4.65210256721359,-4.64644903386908,-4.65189059916865,-4.648013240634,-4.64568123731772,-4.6417788358148,-4.63539161995047,-4.62623984412834,-4.61327294122849,-4.59628729405943,-4.57493499506054,-4.54979351598198,-4.52215695584706,-4.49407371254177,-4.46854556279803,-4.44852671312168,-4.43697872217474,-4.43547304071687,-4.44446828885553,-4.46234556467883,-4.48692137830958,-4.51438313226694,-4.54284615082403,-4.56812382555371,-4.59143227400532,-4.60829557355348,-4.62376792522159,-4.63200951701748,-4.64091281504007,-4.64337138131329,-4.64689559207207,-4.65481973147828,-4.65478882925548,-4.64928592904343,-4.65332519620103,-4.65666957428471,-4.65981358192122,-4.66746895832421,-4.67408986176301,-4.68615784586932,-4.69713357570671,-4.71349386211464,-4.72679931273001,-4.74484765803404,-4.75517409183878,-4.77004178310855,-4.77071589435003,-4.77821214787649,-4.765364492211,-4.76567887567327,-4.7412344037489,-4.73897985188445,-4.70933333953664,-4.7091975630147,-4.68135190729295,-4.68413128413357,-4.6635544980311,-4.66603876723727,-4.65601306992526,-4.65512819637417,-4.65379591643813,-4.64779366005789,-5.23058905550738,-5.24479372013911,-5.23921435219604,-5.26191721418938,-5.26241283091444,-5.29323307819181,-5.30933599113725,-5.3491105617102,-5.38211804284907,-5.4299619492272,-5.4737993793904,-5.52116387126892,-5.56111848168868,-5.59256765464678,-5.61070092663601,-5.61279202312786,-5.59933137542671,-5.5715259504438,-5.53230634061641,-5.48825021003149,-5.43959648882226,-5.39678218254114,-5.35357583166462,-5.32266314399684,-5.29182028008298,-5.27417141466442,-5.2558974311412,-5.24770785939007,-5.2373589141047,-5.24002603958447,-5.24831946741987,-5.23174297691551,-5.23264871854284,-5.23670613074274,-5.23526601724874,-5.23970312362577,-5.23906659371084,-5.24255791820077,-5.24216001032937,-5.24400575403239,-5.24277888460028,-5.24273976908894,-5.24013446516491,-5.23903018738807,-5.23550569098918,-5.23504668348389,-5.23144286369149,-5.23300088390421,-5.22943015539186,-5.23312791166683,-5.22900634354426,-5.2340622099815,-5.22910873833825,-5.23449311648724,-5.2293381255521,-5.23398836659167,-5.22987123336009,-5.23319819414836,-5.23040829546414,-5.23622552233918,-5.2355905494101,-5.22106932364853,-5.22384721747624,-5.21617749195936,-5.21083560018665,-5.20091519122194,-5.19078055259072,-5.17688750522493,-5.16295812347542,-5.14678787497765,-5.13242651604793,-5.1185307870592,-5.10926995129907,-5.10312748200778,-5.10366300992877,-5.10789538589323,-5.11853886429649,-5.13061559805265,-5.14703439301367,-5.16122122896411,-5.17785357003167,-5.18925518517318,-5.20255446929343,-5.20934865235543,-5.21829955231796,-5.22138311238467,-5.22614857896792,-5.22775394872368,-5.22712986034425,-5.23681403499459,-5.25068827773805,-5.23076730862028,-5.23635840542108,-5.23792828515227,-5.24079855266973,-5.24419039627211,-5.24784886790894,-5.25161237079648,-5.25528450839738,-5.25797172154677,-5.25997067204207,-5.26001649235459,-5.25902298940771,-5.25598847468823,-5.25232104672834,-5.24756400033155,-5.24306678881679,-5.23870695484207,-5.23518273426105,-5.23250796056743,-5.2305637181005,-5.22960480149053,-5.22882976938154,-5.22901514489843,-5.22872392919308,-5.22951424111967,-5.2293177539255,-5.23075927796974,-5.22864287418298,-5.23981883058228,-5.23689756804844,-5.22138798936651,-5.22438089804558,-5.21823460127794,-5.21490520259311,-5.20788732001327,-5.20176212783158,-5.19279400457874,-5.18488821505496,-5.17517374262807,-5.16752571139509,-5.15963812101838,-5.15518090741888,-5.15201633258614,-5.15312232650358,-5.15598431716095,-5.16259317788184,-5.16992027640043,-5.17940902685403,-5.1879773349905,-5.19720171346893,-5.20443339267577,-5.21149004772773,-5.21646489297121,-5.22090067470744,-5.2239002747061,-5.22589557674617,-5.22832915591988,-5.22522971037088,-5.23872845758294,-5.24520961257784,-5.22754791780041,-5.23224053000839,-5.23026990688739,-5.23138999924845,-5.22959905774702,-5.22956750725485,-5.22666827695588,-5.22485945279301,-5.22010077988214,-5.21608962750303,-5.20963116005558,-5.20447606278516,-5.19844815756031,-5.1951148716141,-5.19260633677872,-5.19337416020354,-5.19509750456562,-5.19909264153904,-5.20307138056516,-5.20793453934284,-5.21208390690914,-5.2161836390896,-5.21953099319053,-5.22232141914789,-5.2248103113313,-5.22612157080888,-5.22895688408683,-5.22624562591881,-5.23858622402705,-5.23547991898139,-5.22296795207794,-5.2258128417743,-5.22053948139943,-5.21925808397554,-5.21331630388708,-5.20977185816219,-5.2021899251414,-5.19633424572959,-5.18697091694296,-5.17912894267944,-5.16890010142947,-5.16121469644398,-5.15382805701629,-5.15147305303349,-5.15207701296168,-5.1581374931596,-5.16607849071204,-5.17653300292371,-5.18618226488672,-5.19579268225944,-5.20351262267952,-5.21028808510787,-5.21549031911367,-5.21950140153554,-5.222912384735,-5.22440984135001,-5.22766639892776,-5.22452931447009,-5.23622307087927,-5.23669106431669,-5.22627928762376,-5.22883359990842,-5.22504976181651,-5.22520394235657,-5.22030791227897,-5.21813440461017,-5.21091910096626,-5.20496684020653,-5.19371479808072,-5.18234287832422,-5.16612805191378,-5.15088546337198,-5.13563337848615,-5.12766716358274,-5.12655365326982,-5.13492619241478,-5.14764144183688,-5.16332034173505,-5.17744740311601,-5.1901770506256,-5.200026856505,-5.20793707137882,-5.21399765724264,-5.2183073507716,-5.2222468431029,-5.22382509521205,-5.22758587523292,-5.22521252344098,-5.23316719618105,-5.22852999951104,-5.22508478800062,-5.2257303626652,-5.22083825748914,-5.22019753578586,-5.21355638006424,-5.20996801595321,-5.20026910951948,-5.19135688811397,-5.17514922900845,-5.156399629127,-5.12893274235492,-5.09941549008033,-5.06983455455594,-5.05322184319899,-5.05331583490525,-5.07248468392232,-5.10085620152921,-5.13172136254908,-5.15759461790792,-5.17814434439942,-5.1928857139943,-5.20356918816987,-5.21137006851532,-5.21645314556081,-5.2211244771114,-5.22267628740756,-5.22669316688942,-5.22495525767258,-5.22865326946651,-5.22446431923953,-5.22746299552243,-5.22640128384063,-5.22226281359285,-5.22192496356808,-5.21520567510816,-5.21149039667443,-5.20057112004961,-5.18912393429192,-5.16705971590005,-5.13700334092788,-5.0897014822208,-5.03203261234164,-4.97217660306488,-4.93549470519945,-4.93576752639758,-4.97499009547339,-5.03282771004048,-5.09067157491317,-5.13536089270792,-5.16672002853001,-5.18713822348911,-5.20046346890342,-5.20975726783039,-5.2152975686456,-5.22058993999586,-5.2221153668535,-5.22635904500024,-5.22600031640411,-5.22251433719679,-5.21577226970321,-5.2285825663547,-5.22496198561292,-5.22105582954474,-5.22054311808039,-5.2135011735053,-5.20953711157879,-5.19777382807997,-5.18431755050223,-5.15666342271278,-5.11343764659524,-5.03971964279753,-4.94104954781437,-4.83475389456703,-4.76643521761332,-4.76743179995714,-4.83961608064455,-4.94482169889728,-5.0440781071516,-5.11491282887425,-5.15909597945107,-5.18480428641829,-5.19977462306037,-5.20974059725102,-5.21517461399998,-5.22066286667419,-5.22188148077765,-5.22594536195104,-5.22718864556413,-5.2157356515653,-5.20823520142317,-5.23130469968938,-5.22507849786286,-5.22238809318796,-5.2222373884359,-5.21612133921977,-5.2133084924747,-5.20312431973693,-5.19111982531305,-5.16289373908164,-5.11239587279991,-5.01730744340637,-4.87977495168624,-4.72546639823152,-4.62178080993051,-4.62190838669116,-4.7283956603482,-4.8822245342238,-5.02204489670306,-5.114716827712,-5.16564292523691,-5.19142496681075,-5.20438342458254,-5.21277326689919,-5.21672781717357,-5.22176284086976,-5.22222207759882,-5.22589746794533,-5.22915651831618,-5.20682418214091,-5.198786434356,-5.23427840837573,-5.22495006073991,-5.22384106300817,-5.22430803432173,-5.22018657618025,-5.22019283390488,-5.2151438165062,-5.2108920915769,-5.19351448394236,-5.15446510069361,-5.06577956064009,-4.92397043386842,-4.75453909629601,-4.63317968218374,-4.63126164485345,-4.75208582142723,-4.92112731481209,-5.06837401824427,-5.15743980249162,-5.19756825140354,-5.21240897433845,-5.21714841899383,-5.22059589520598,-5.2212000567605,-5.22467263101047,-5.22389015184289,-5.22644759199298,-5.23196935171048,-5.19899272624815,-5.19011551950477,-5.23776559503791,-5.22569395392257,-5.22686914228027,-5.2285330074195,-5.22783510559688,-5.23268363367261,-5.23676253826599,-5.24749772494488,-5.25475232250653,-5.25192922444716,-5.21056107331416,-5.12029532820515,-4.99238589413056,-4.88733253017449,-4.88365640585993,-4.98393743997897,-5.1103426092289,-5.20736297664847,-5.25184217374562,-5.25734232652455,-5.24834637358896,-5.23780279404773,-5.23272305830569,-5.22786759118604,-5.22874350624008,-5.22597647325718,-5.22719121260586,-5.23506007818964,-5.18872200556341,-5.1816483968708,-5.24207862564844,-5.22698442524943,-5.2309430266464,-5.23405734462292,-5.23773596920929,-5.24855375091852,-5.26403315314558,-5.2931852879369,-5.33182119289421,-5.37727111211842,-5.4053442319073,-5.3991594700374,-5.35043099171583,-5.28964297797527,-5.286421673379,-5.34041628494149,-5.38774052045263,-5.39909694695735,-5.37426736387286,-5.33224663420736,-5.29373286795043,-5.26488247958538,-5.24937111641955,-5.23794953896829,-5.23524124762459,-5.23023791149168,-5.22911941050629,-5.23941053481569,-5.18266626457137,-5.17489203129329,-5.24572983559504,-5.22872830017049,-5.23563487164135,-5.24040661787164,-5.24874159764737,-5.26524429661137,-5.290969907929,-5.33492769284545,-5.39686974474807,-5.47541886594146,-5.5488766363591,-5.59619600795318,-5.60071071138519,-5.57740343711387,-5.57600231246915,-5.59416431392759,-5.5891083295198,-5.5438341064194,-5.47102169553161,-5.39435960113081,-5.33370625341256,-5.29004498449127,-5.26536649213779,-5.2474853895835,-5.24120045705253,-5.23368692623588,-5.23052879240042,-5.24303152889562,-5.17329310183313,-5.17009208900937,-5.25034091700569,-5.23108306915909,-5.24095946724455,-5.24693530925626,-5.25923463805715,-5.2794402502463,-5.31108450291783,-5.3602068509312,-5.42661879273475,-5.50394483073875,-5.56621638744877,-5.59053234332236,-5.57372766239935,-5.54522574600539,-5.54627780720498,-5.57780084620042,-5.59416806295092,-5.56650550224863,-5.50204591090521,-5.42495598848128,-5.36011251431407,-5.31088523763186,-5.28121672944583,-5.25893944083735,-5.24928529152345,-5.23989083634028,-5.23362404951087,-5.24815871904329,-5.17262956891751,-5.1679790290862,-5.25270347206315,-5.23325089784644,-5.24542294131417,-5.25227328993724,-5.26722798057234,-5.28850861803438,-5.32059950870238,-5.36480607840768,-5.41770394318605,-5.46384441588169,-5.4748374488818,-5.42974605345396,-5.34416093727951,-5.27217432074326,-5.2766094922399,-5.35540035187183,-5.43897860629389,-5.47741243268772,-5.46249739471187,-5.41446006358842,-5.36308086815373,-5.3178672106515,-5.28840553062624,-5.26447681299088,-5.25314422540914,-5.24251567976999,-5.23461265417043,-5.25081948773246,-5.16581687327099,-5.16878773968415,-5.25630495062514,-5.2357337583688,-5.24968843850829,-5.25641002047789,-5.27231001770175,-5.29198107878441,-5.32004439481648,-5.35288178598231,-5.38406686073247,-5.39434145371382,-5.3572602664107,-5.25735674353708,-5.12072604081225,-5.01687829939517,-5.02164028275867,-5.13043218686844,-5.26549052525944,-5.36098182270221,-5.39622708685062,-5.38416189190204,-5.35478436537546,-5.32039336408476,-5.29514795472099,-5.27235692275248,-5.25988209869394,-5.2491471625238,-5.23818247295206,-5.25551734887556,-5.17333219645825,-5.17237083278724,-5.25582060329817,-5.23734525055563,-5.2517477000411,-5.25809988907901,-5.27341835118121,-5.28973879661997,-5.31125629680681,-5.33100933436805,-5.34183476499784,-5.32604413204949,-5.26386219059745,-5.14885311871366,-5.00913271652103,-4.90728792940716,-4.90820656298663,-5.0105585824095,-5.14963669263334,-5.26212709674607,-5.32360979258448,-5.33742590480777,-5.32829540432377,-5.30645814568624,-5.28817542746971,-5.26894902048905,-5.25778131604686,-5.24819454238925,-5.23723705217859,-5.2554257847342,-5.16876724273693,-5.17878650490102,-5.25758099134806,-5.23904067462844,-5.25334281527805,-5.25835003139358,-5.27181112018664,-5.28381444572129,-5.29809533815578,-5.3065039636798,-5.30262284508985,-5.27346819521997,-5.20761299523201,-5.10540451645276,-4.99196305186461,-4.91303986201171,-4.91299289520562,-4.99221144008852,-5.10779561919213,-5.21034780195534,-5.27786459810643,-5.30579532761113,-5.31139579996984,-5.30069446038534,-5.2888750570456,-5.27367617866962,-5.26273172282765,-5.25455926178801,-5.24094857576108,-5.25880113838356,-5.1853009660514,-5.18695138310185,-5.25342138493698,-5.23942396748621,-5.25203073363164,-5.25606483652483,-5.26676872373939,-5.27437687786281,-5.28156080804391,-5.28098503167018,-5.26730771528988,-5.2324794065331,-5.17140633569356,-5.08854075295894,-5.00335256692771,-4.94637691560472,-4.94482806862594,-4.99915736373297,-5.08418997580578,-5.16576674768763,-5.22747415421787,-5.26020445635676,-5.27520419222688,-5.27393778497765,-5.26959937183801,-5.26036669552626,-5.25300230540891,-5.24807726018152,-5.23693900491963,-5.25474648583124,-5.18062109984843,-5.19706527031226,-5.25345939410967,-5.23988288686223,-5.25079843158,-5.25317535212799,-5.2607723153168,-5.26463167998351,-5.2662851746619,-5.26018779124421,-5.24215143190966,-5.20813271147581,-5.15658956749189,-5.0936273950498,-5.03344518595641,-4.9955619109117,-4.99627745317749,-5.03542057653105,-5.09894786218338,-5.16339025499902,-5.21753969571615,-5.25066869916972,-5.26982204467813,-5.27377388884824,-5.27267325254641,-5.26645741971343,-5.25863896044693,-5.25496896929277,-5.24121339810717,-5.25676887126209,-5.20502450820651,-5.2071458301019,-5.24585233243307,-5.23889091511563,-5.24634479300658,-5.24792587591975,-5.25171659314119,-5.25190579233006,-5.24795733090562,-5.23685159558462,-5.21468851196995,-5.18067474422845,-5.13446660341585,-5.08274546928597,-5.03547457152841,-5.0058104719399,-5.0036987027213,-5.02901890964592,-5.07425267161044,-5.12348800305412,-5.16950044005036,-5.20196095108803,-5.22515339334109,-5.23611730787167,-5.24199113696944,-5.24305839265475,-5.24085410275447,-5.24205004058349,-5.23366167993319,-5.2486160421934,-5.1970555398163,-5.2178886206825,-5.24509312439593,-5.23808441846065,-5.24324329630478,-5.2436449866058,-5.24475648775127,-5.24312158020774,-5.23688394907259,-5.22524295400699,-5.20471402777177,-5.17645419243351,-5.14075495136029,-5.10344260519933,-5.07173406378975,-5.05379230109615,-5.05625855529776,-5.07767821168771,-5.1143834038265,-5.15410349842117,-5.19272819154975,-5.22079042489573,-5.24117596596372,-5.2512148319434,-5.25504911995657,-5.25560023067784,-5.2503908618894,-5.25085469574383,-5.2391452079269,-5.24993973724063,-5.22626477520872,-5.2267197459493,-5.23520237555998,-5.23578994072867,-5.23613182705827,-5.23566074041244,-5.23213996482366,-5.2266706934315,-5.2147101200431,-5.19813713054385,-5.17275667346125,-5.14172355173507,-5.10478920941909,-5.06821323136185,-5.03668921662926,-5.01735941883512,-5.01413930560685,-5.02746012920508,-5.05433490515738,-5.08764312210333,-5.12286570526612,-5.15380382731037,-5.17945930140393,-5.19880792928775,-5.21145168410774,-5.2218389815872,-5.22487912548692,-5.23193950868529,-5.22847162568986,-5.2389003891253,-5.21288533821985,-5.23418809066316,-5.2350917623144,-5.23381907369278,-5.23337995431322,-5.23219442342626,-5.22833280179786,-5.22337168824536,-5.21336824439181,-5.20044763042927,-5.18185875227466,-5.1600705569613,-5.13592044447854,-5.11295760898104,-5.09568507812121,-5.08667380685768,-5.09026476408616,-5.10345958764617,-5.12693381680025,-5.15225743824035,-5.17940284250831,-5.20100001034639,-5.21851504863367,-5.23034448795806,-5.23589448808211,-5.24119271133559,-5.23828146992638,-5.24218070083443,-5.23423317499552,-5.23988536370434,-5.24132310926129,-5.23940127391,-5.22548035036045,-5.23023885332603,-5.22394622674418,-5.22134054637277,-5.21130989126496,-5.20134499242348,-5.18369586061296,-5.16376907368449,-5.13690355843677,-5.1083599489742,-5.07686953178241,-5.04899975088805,-5.02541910419523,-5.01295876758012,-5.0101623748767,-5.0215672262437,-5.04016390120566,-5.06885851618695,-5.09629625435003,-5.12827786633981,-5.15132341221263,-5.17719205750522,-5.19044311808801,-5.2081334704659,-5.21297721379162,-5.22397634459634,-5.22482845154448,-5.22994314063263,-5.22346568028541,-5.23519330195762,-5.22788473776381,-5.22493978185795,-5.21993279300061,-5.21141259926933,-5.19993820086947,-5.18288298839832,-5.16129882220423,-5.13334885481797,-5.10108408314228,-5.06482367420871,-5.02863981951892,-4.99489196790659,-4.96932298191743,-4.95357980394131,-4.95258819807625,-4.96338799486828,-4.98827959649562,-5.0188606330796,-5.05672119037633,-5.09156987012393,-5.12686502425208,-5.15433353471366,-5.17876521576092,-5.19591684006646,-5.20886912164902,-5.21809336167572,-5.2227179004747,-5.22599789814114,-5.24136126372704,-5.24149478792501,-5.23136552029473,-5.23996109015388,-5.2484888303371,-5.25750155381689,-5.27656828386818,-5.29507192083008,-5.32578405988617,-5.35582730155811,-5.39758769267573,-5.43399134235108,-5.47931827565145,-5.50840110541202,-5.54369758803874,-5.54841861728851,-5.56229705292277,-5.53339054270292,-5.52655155533163,-5.4698288002658,-5.45495830854531,-5.38679968812792,-5.37722388971883,-5.31415200313799,-5.31370523332626,-5.26712617830993,-5.26972968230071,-5.24563009918379,-5.24396738649364,-5.23857549229605,-5.22750681336777],"Archive1110_field4":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.8421709430404e-14,-0.217062178479893,-0.162729728733694,-0.397655892722838,-0.461913773044358,-0.755717724036259,-0.960139740753363,-1.33491574409655,-1.66724247370658,-2.09984949325863,-2.48373566201033,-2.88340528994379,-3.17885062118674,-3.41469687163467,-3.4794167856551,-3.46400791746092,-3.24671979333826,-3.0094800959836,-2.58673271439116,-2.25413524987314,-1.76932190506821,-1.47081745950121,-1.04626418018361,-0.841524854129744,-0.54203590548164,-0.414863604409817,-0.262382082365463,-0.155653677359766,-0.161079725250971,-2.8421709430404e-14,-5.6843418860808e-14,-0.177840792246286,-0.070923615769118,-0.237932272366436,-0.208348499201009,-0.364875596761578,-0.413812942186439,-0.573053252479497,-0.68833829270892,-0.853944522145582,-1.00587144139837,-1.16190714460237,-1.30164360853956,-1.41404589419784,-1.4854922656022,-1.51966225045584,-1.48519640113676,-1.43167027127919,-1.2961441121941,-1.18108547049445,-0.990258185460164,-0.856267885764566,-0.670140212251169,-0.546120131924965,-0.413096635967634,-0.300374583459927,-0.249190070029101,-0.125476006270389,-0.175353469044296,-5.6843418860808e-14,0,-0.282643100363316,-0.168232531371586,-0.407423527475999,-0.417085026262498,-0.645014158081267,-0.766441439869027,-0.99765787211993,-1.19768832409591,-1.42073703504082,-1.63867506557415,-1.81489215980889,-1.97501734992022,-2.05848608620977,-2.10041895144286,-2.06810515558186,-1.97479181728045,-1.84274588644928,-1.64641494574198,-1.46024621890513,-1.22413730355902,-1.03167691072383,-0.821659819243905,-0.647867710319474,-0.512931594066345,-0.351729795175743,-0.323720963480241,-0.142368056421446,-0.25083155302616,0,0,-0.248149807006371,-0.118032759795256,-0.308732597174981,-0.28979700379557,-0.436286018550732,-0.508057650553042,-0.626385466927559,-0.755051100484025,-0.849786646403231,-0.992426766430867,-1.0571847086286,-1.17327720847959,-1.20135380323359,-1.26465073082602,-1.25303026252936,-1.25051738777017,-1.19514829087802,-1.1272368829126,-1.02876929036904,-0.918634746305315,-0.788907587215931,-0.679708296522108,-0.532077231044696,-0.469961942183772,-0.304255581324355,-0.326490533640822,-0.12508511100873,-0.255382516567238,0,0,-0.264761344702151,-0.153250440538727,-0.325214352024659,-0.336404774077778,-0.445227186113812,-0.538548329343257,-0.598163314917201,-0.721730181150519,-0.730459177214357,-0.832218947970546,-0.789545075033402,-0.845970636484822,-0.779098065240987,-0.809907553650078,-0.759599408461668,-0.785070950934937,-0.752402245088774,-0.758548875215297,-0.708815774303616,-0.683007553584389,-0.5933669773068,-0.556710791604246,-0.426612800888392,-0.421498806569844,-0.252296330529248,-0.319491108760189,-0.103717389320764,-0.268250004694323,0,0,-0.196357582929295,-0.115027160054069,-0.203936558541045,-0.227637392067663,-0.229802042184019,-0.303622492266641,-0.227475826308819,-0.286408336488421,-0.127384915166203,-0.119256991636121,0.106556037639166,0.166230686488689,0.367213692649557,0.370658361437336,0.425847826952577,0.301676087244005,0.220280558589366,0.0397796021391059,-0.0534000394050054,-0.193354561811702,-0.210440047750126,-0.295624112173755,-0.223998851239685,-0.298318934044346,-0.153326486191872,-0.264561866811164,-0.062183371106812,-0.229580949576302,0,0,-0.128073025974118,-0.102091542338712,-0.0957013155166351,-0.15415369540824,-0.0360338066070653,-0.0971254617911654,0.140693198504323,0.173111403884832,0.561837163546898,0.762674569161391,1.28690893577141,1.59203963406935,2.04817150128156,2.16829552657464,2.24667195110169,1.98125301905202,1.6955165370432,1.2375745334507,0.899451956511484,0.515424350017838,0.326431401389982,0.0801731420751821,0.056663403408038,-0.112087586224334,-0.0162481842498892,-0.173140998712825,-0.00712366021025446,-0.172423376425741,0,0,-0.000853568067896049,-0.049086657774069,0.0976433482276207,0.00868898218527647,0.294223986111092,0.276776873013205,0.741802870957827,0.940766949978524,1.67551209856128,2.22436545476307,3.2488054408102,4.02895762569847,4.94682302195383,5.3089330215555,5.40057242544094,4.85693017542485,4.14287052134591,3.16908692195398,2.37099032674973,1.58339898643749,1.10285362482659,0.622939052363336,0.445851003323924,0.157708355779732,0.169779702459209,-0.0312026831677485,0.0672972201489301,-0.0712157609921178,0,0,0.150437498241217,0.00791028868297872,0.32059106157044,0.197594402051664,0.681661311529524,0.734189093167515,1.48709129947679,1.94401494080807,3.17523029368203,4.3056012960717,6.15316029010137,7.80564787477124,9.56115588466741,10.4093806659639,10.519029297951,9.47340144094528,7.95981620139628,6.08618180414919,4.50003614683078,3.08113830634261,2.15125238668975,1.34895434925443,0.950297305873619,0.51506588623738,0.405836682149356,0.1600694938586,0.159391220654925,0.0630617129452276,0,0,0.34437548784922,0.0914279978458126,0.601818205377867,0.450916254219237,1.16767704640074,1.32687997731432,2.43161437616868,3.25293180839662,5.15173682733871,7.15049951484662,10.2337455319496,13.2922762951405,16.4057912456908,18.0784310950926,18.1980064889872,16.311531827532,13.4647196405665,10.1636815477029,7.36397928458132,5.03553594024766,3.47538455340373,2.2552460427853,1.56546775683341,0.956151775855687,0.687925675164934,0.399373748989547,0.267304082859255,0.234307497129976,0,0,0.565058955681025,0.188674676455548,0.914465761175279,0.7403120020183,1.70698367827868,1.99952774912822,3.49277093496994,4.75526287435696,7.44105561361334,10.5334894571176,15.1915504840888,20.1306845069882,25.0893442225452,27.9118739519809,28.024584120076,24.9587420613918,20.2768460340983,15.0939273356819,10.7406833546247,7.3031033977652,4.98899280883711,3.29177204939447,2.2632161726151,1.46773197168113,1.00881885466879,0.685205966329022,0.390042102435928,0.441561757394993,0,0,0.806162701969242,0.300312552963078,1.2493082592955,1.05714465440724,2.27096571987749,2.7028590451464,4.56619048349739,6.25658245435261,9.67670585258838,13.8066220815731,19.9595529893832,26.7478038694921,33.570017584474,37.5792698409446,37.6602515926343,33.3499164713257,26.7895613536962,19.7780631584619,13.9537036499833,9.49212505136984,6.4750249409326,4.33678804442616,2.97181286204523,2.00436257593356,1.339193928653,0.994104161456562,0.514285415395534,0.668023354221987,0,0,1.05688201668409,0.41937839657021,1.58116078089733,1.37043407936608,2.79819466107847,3.33899998716151,5.47316843832368,7.43488672169224,11.2632861026618,15.8970771822874,22.7194017329966,30.3484601302753,38.0834072151201,42.7067947990367,42.7561619673038,37.786958787925,30.2782545789291,22.4451645127001,15.9719287834387,11.0393443041748,7.63349701392008,5.23504575982906,3.61096694431308,2.52805790477578,1.66166799490702,1.32344651042831,0.640909070886664,0.919865881237911,0,0,1.29263870329851,0.532954048780994,1.87912252587921,1.64556159590393,3.22494481008562,3.80967974667328,6.03960507207012,7.98710450593626,11.6558224890996,15.8401304491308,21.8280833868739,28.3257126316248,34.9484081551554,38.9043716522319,38.9641148920027,34.7053742983803,28.2599237885834,21.527017251492,15.8636387501842,11.4112412278109,8.15425680803219,5.79678443441662,4.05990122234152,2.95361346368509,1.91841489949729,1.62098677153335,0.741192889823651,1.15482225208962,0,0,1.50857270842062,0.637517997964551,2.1218309423507,1.85494276581176,3.50005011824032,4.04153748465433,6.15874949828685,7.76930377934423,10.6833750318292,13.4484286806146,17.0970570218724,20.4333943440124,23.7325187952119,25.5506986209057,25.6689304325455,23.6769789537539,20.5206854940629,16.9001587569837,13.4929822669142,10.4678548725301,7.92369675542704,5.94656067678807,4.27558634256457,3.26556490028634,2.1099497551786,1.90088355461558,0.829165146456035,1.39546174682255,0,0,1.66742092043432,0.713080926248949,2.27541629271809,1.96771554863381,3.58511575488546,4.00279160115497,5.82480339332551,6.86878087139439,8.66122004829549,9.53523339953927,10.1977086233933,9.6184809559486,8.75376756382866,7.8622799865534,8.00826915532798,8.85053299368928,9.81045464610997,10.1170230064922,9.60402015316276,8.47781556688142,6.97757296926102,5.62517529730303,4.17434498418197,3.37038099811298,2.15927516829288,2.07911610891733,0.856712388781034,1.56723398567965,0,0,1.78140122114246,0.76582879848138,2.33808189626188,1.98222558210728,3.48235276796095,3.71939101390399,5.13143769897988,5.53623261158737,6.18645067339048,5.35695048576463,3.54224917375541,-0.014917767078714,-3.88681309773256,-6.72297371472587,-6.60203835986476,-3.77405191775142,0.178170169894656,3.543146259678,5.45192355479048,6.0782097752799,5.63670347608922,5.00327199227831,3.86291249911756,3.35100413336204,2.13564065916989,2.22428041387229,0.873383662746164,1.73185558275418,0,0,1.80397161865994,0.773260071748155,2.28597655379372,1.88787732891751,3.20007446699083,3.23820977063679,4.20090587302229,4.0378604421162,3.76907939702551,1.84619780255662,-1.32497899579676,-6.17184090468072,-11.147553692459,-14.5780638742158,-14.5339528852387,-11.1127232148506,-6.08187450357354,-1.34018346557923,1.8743526176354,3.66824081444838,4.04772608534176,4.0782961386426,3.2682639250952,3.08957102836894,1.92842446623172,2.20470717719445,0.799291298596017,1.77087786277161,0,4.54747350886464e-13,1.77805000835315,0.757304078400921,2.14564879855698,1.71250223474544,2.78480293028224,2.63546550457568,3.16601364790358,2.57791035583796,1.69707648725034,-0.703023878906606,-4.22417047573435,-9.00570724744102,-13.6781993299992,-16.752401488633,-16.7565665196239,-13.6683780798853,-8.96237502744225,-4.18409332868487,-0.652321364199452,1.71546863600452,2.60778970121646,3.17808633367167,2.66028321934937,2.81344272363913,1.72407939743744,2.18971283382962,0.747943387587839,1.81703701600873,4.54747350886464e-13,0,1.6446576724029,0.692066044577132,1.90137215292407,1.45661667313107,2.26253071813926,1.96135544417166,2.10897388061585,1.24380016942314,0.00717542125630644,-2.46160692748253,-5.78780154986771,-9.8945132146232,-13.7341113247262,-16.1515202360852,-16.1996959195335,-13.7686656822339,-9.96550406247616,-5.80923802053303,-2.54090633705755,-0.0234645882242148,1.11836087716438,2.08348874885951,1.8134781197632,2.27672879187185,1.30895701137251,1.95342824027603,0.577049117416209,1.68578682804082,0,4.54747350886464e-13,1.48757375062496,0.616804110024532,1.6057088069665,1.16487150953253,1.69573515203047,1.28542011397167,1.11860963510844,0.105379883334081,-1.29859776523153,-3.61496894998481,-6.53732682394366,-9.84812213586929,-12.8232409542261,-14.5983321224394,-14.6444740884936,-12.7863066399841,-9.86124013183053,-6.41737473201601,-3.59137467241453,-1.12730316865509,0.0899996211783218,1.31469261217262,1.21177987797591,1.91581130184295,1.04487038483057,1.82060238209579,0.497729594497287,1.61487993251012,4.54747350886464e-13,0,1.22591324403948,0.497167887587693,1.24085163381778,0.830976962240129,1.09738784130832,0.615855240957444,0.195794411724364,-0.887088777304598,-2.36258498681445,-4.47275888106651,-7.01080761213279,-9.67624462644153,-12.0109678135527,-13.344047834727,-13.4328459953535,-12.0437480891778,-9.85525274230122,-7.05537989386039,-4.6977999359201,-2.38039585960723,-1.17473095351988,0.229039215510511,0.285143571641584,1.2061089043159,0.504884723485247,1.39602300381875,0.258354173102816,1.32172289231539,0,0,0.990657364048275,0.388923359625551,0.882445745868608,0.512004430618617,0.54547692997221,0.0332738446104486,-0.558046519969139,-1.62977769685858,-3.07379553789633,-4.92432111095241,-7.07161218051533,-9.17645335261477,-10.977573829533,-11.9301434957151,-11.9805978333115,-10.855278858875,-9.15882170741679,-6.82861821998722,-4.86978453970005,-2.73775915784609,-1.6297731884888,-0.177982828698987,-0.0698000797110581,0.93765062593684,0.325628052363754,1.23236379789887,0.208904778559372,1.17924895445049,0,0,0.66803744284698,0.244136692053871,0.497433074752735,0.176103102698107,0.00597046659186162,-0.530935980929826,-1.26002676627832,-2.32542322535937,-3.74803485604025,-5.42248091911733,-7.32162495454577,-9.09082738106281,-10.6082422515046,-11.3968583113037,-11.5235880996624,-10.6645809706151,-9.39056927887123,-7.45271883973237,-5.82595281257363,-3.84924316204797,-2.78880896488954,-1.26461835102964,-1.01325715902567,0.11979810234061,-0.267631399859965,0.677048931465833,-0.0619654717602316,0.776832272666979,0,0,0.441002829390527,0.137983630687813,0.196609430918215,-0.0735303432647925,-0.366926897080702,-0.875369357878299,-1.62076767427516,-2.57768077088076,-3.8373835412176,-5.22341204771783,-6.75718464140755,-8.10547891859005,-9.23757252829,-9.74922278433132,-9.78481910242044,-9.01606658832316,-7.99114140582606,-6.36039064734541,-5.05248678401767,-3.3386335089599,-2.47421394903085,-1.10230935856907,-0.909447781880772,0.118264961039131,-0.224258035030289,0.592897203627217,-0.0242340428549142,0.639225684605663,0,0,0.149566903083723,0.000564470081371837,-0.110171093813733,-0.354815148189118,-0.764520464043017,-1.29851913571383,-2.10923315069613,-3.06900476026931,-4.3151976709587,-5.63186492645127,-7.07919293297709,-8.32854898341157,-9.41354339013287,-9.94012011621635,-10.1059039892925,-9.5304309954472,-8.76097459394714,-7.35009524659745,-6.20924525464943,-4.57285655395299,-3.67139269528343,-2.24314463113296,-1.84914228626258,-0.750326164691614,-0.804326679817677,-0.00653817214424635,-0.282807222912197,0.219174197417487,0,0,0.0408327658187773,-0.0452039961073751,-0.193898855562111,-0.373352698835333,-0.71798803301408,-1.11552515223775,-1.72217626467136,-2.39962352917337,-3.26342428573207,-4.1325480735004,-5.06338433037763,-5.81497709063933,-6.44083049682831,-6.66378114684449,-6.66996666885825,-6.1701029384285,-5.60471476623388,-4.59025675937755,-3.8440201338326,-2.71433555531075,-2.17904134237142,-1.20728901031089,-1.0343491253243,-0.29382365850779,-0.409966430601344,0.110723620254248,-0.116120290409526,0.178175980675405,0,0,-0.144633647374576,-0.153405353692506,-0.39728161808307,-0.590717260363817,-1.02046116103884,-1.4747609121232,-2.17207973502809,-2.92998231246565,-3.89208521463479,-4.85417677748137,-5.89810358643172,-6.75764564374458,-7.52501291952103,-7.87257165413394,-8.0354438446484,-7.6380134908195,-7.17396527701658,-6.16998756159774,-5.39186796997728,-4.16310706371951,-3.45285112706824,-2.34359192724969,-1.90045105998797,-1.08356988282867,-0.883374058281333,-0.402342997438609,-0.300230057931913,-0.145651088949307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.8421709430404e-14,-0.217062178479864,-0.162729728733666,-0.397655892722867,-0.46191377304433,-0.755717724036259,-0.960139740753334,-1.33491574409655,-1.66724247370655,-2.09984949325863,-2.48373566201033,-2.88340528994379,-3.17885062118677,-3.4146968716347,-3.4794167856551,-3.46400791746095,-3.24671979333829,-3.0094800959836,-2.58673271439119,-2.25413524987312,-1.76932190506824,-1.47081745950123,-1.04626418018361,-0.841524854129716,-0.542035905481669,-0.414863604409788,-0.262382082365434,-0.155653677359766,-0.161079725251,-2.8421709430404e-14,-5.6843418860808e-14,-0.1778407922464,-0.070923615769118,-0.237932272366436,-0.208348499201122,-0.364875596761635,-0.413812942186553,-0.57305325247944,-0.688338292708806,-0.853944522145525,-1.00587144139831,-1.16190714460231,-1.30164360853962,-1.41404589419778,-1.48549226560215,-1.51966225045589,-1.48519640113682,-1.4316702712793,-1.29614411219416,-1.18108547049439,-0.99025818546022,-0.85626788576451,-0.670140212251226,-0.546120131924908,-0.413096635967577,-0.300374583459927,-0.249190070029101,-0.125476006270446,-0.175353469044353,-5.6843418860808e-14,0,-0.282643100363316,-0.1682325313717,-0.407423527475885,-0.417085026262384,-0.645014158081267,-0.766441439869027,-0.997657872120044,-1.19768832409602,-1.4207370350407,-1.63867506557403,-1.81489215980889,-1.97501734992022,-2.05848608620977,-2.10041895144275,-2.06810515558197,-1.97479181728056,-1.84274588644917,-1.64641494574187,-1.46024621890513,-1.22413730355913,-1.03167691072383,-0.821659819243905,-0.647867710319474,-0.512931594066458,-0.351729795175629,-0.323720963480241,-0.14236805642156,-0.25083155302616,0,0,-0.248149807006484,-0.118032759795142,-0.308732597174867,-0.289797003795456,-0.436286018550845,-0.508057650552928,-0.626385466927445,-0.755051100484025,-0.849786646403345,-0.992426766430981,-1.05718470862871,-1.17327720847948,-1.20135380323347,-1.26465073082602,-1.25303026252925,-1.2505173877704,-1.19514829087814,-1.12723688291271,-1.02876929036893,-0.918634746305315,-0.788907587215931,-0.679708296522222,-0.532077231044696,-0.469961942183659,-0.304255581324128,-0.326490533640595,-0.125085111008616,-0.255382516567352,0,0,-0.264761344702151,-0.1532504405385,-0.325214352024545,-0.336404774078005,-0.445227186113812,-0.538548329343371,-0.598163314917201,-0.721730181150519,-0.730459177214584,-0.832218947970318,-0.789545075033402,-0.845970636484594,-0.779098065241214,-0.809907553650078,-0.759599408461895,-0.785070950934937,-0.752402245088774,-0.75854887521507,-0.708815774303844,-0.683007553584389,-0.5933669773068,-0.55671079160436,-0.426612800888392,-0.421498806570071,-0.25229633052902,-0.319491108760417,-0.103717389320877,-0.268250004694323,0,0,-0.196357582929295,-0.115027160054069,-0.203936558540818,-0.227637392067891,-0.229802042184019,-0.303622492266868,-0.227475826308819,-0.286408336488648,-0.127384915166431,-0.119256991636348,0.106556037639166,0.166230686488916,0.367213692649557,0.370658361437336,0.425847826952577,0.301676087244005,0.220280558589366,0.0397796021393333,-0.0534000394050054,-0.19335456181193,-0.210440047750353,-0.295624112173527,-0.223998851239458,-0.298318934044119,-0.1533264861921,-0.264561866811391,-0.0621833711070394,-0.22958094957653,0,0,-0.128073025974118,-0.102091542338712,-0.0957013155166351,-0.15415369540824,-0.0360338066072927,-0.0971254617911654,0.140693198504096,0.173111403884832,0.561837163547125,0.762674569161391,1.28690893577118,1.59203963406912,2.04817150128156,2.16829552657441,2.24667195110169,1.98125301905202,1.69551653704343,1.23757453345047,0.899451956511484,0.515424350018066,0.326431401389755,0.0801731420751821,0.0566634034078106,-0.112087586224334,-0.0162481842498892,-0.173140998713052,-0.00712366021048183,-0.172423376425513,0,0,-0.000853568067668675,-0.0490866577738416,0.097643348227848,0.00868898218550385,0.294223986111092,0.276776873013205,0.741802870958054,0.940766949978752,1.67551209856151,2.22436545476285,3.24880544080997,4.02895762569892,4.94682302195406,5.30893302155528,5.40057242544117,4.85693017542485,4.14287052134569,3.16908692195352,2.37099032674951,1.58339898643771,1.10285362482637,0.622939052362881,0.445851003324378,0.157708355779505,0.169779702459437,-0.0312026831675212,0.0672972201491575,-0.071215760991663,0,0,0.150437498241217,0.00791028868297872,0.320591061570894,0.197594402051664,0.681661311529524,0.734189093167515,1.48709129947679,1.94401494080807,3.17523029368203,4.30560129607125,6.15316029010137,7.80564787477124,9.56115588466741,10.4093806659639,10.5190292979507,9.47340144094528,7.95981620139628,6.08618180414919,4.50003614683123,3.08113830634306,2.15125238668929,1.34895434925443,0.950297305873619,0.51506588623738,0.405836682148902,0.160069493859055,0.15939122065538,0.0630617129452276,0,0,0.344375487848765,0.0914279978462673,0.601818205377413,0.450916254219237,1.16767704640074,1.32687997731387,2.43161437616914,3.2529318083964,5.15173682733871,7.15049951484707,10.2337455319496,13.29227629514,16.4057912456913,18.0784310950921,18.1980064889869,16.311531827532,13.464719640567,10.1636815477029,7.36397928458132,5.03553594024766,3.47538455340418,2.2552460427853,1.56546775683387,0.956151775855687,0.687925675164479,0.399373748990001,0.26730408285971,0.234307497129521,0,-2.27373675443232e-13,0.565058955681479,0.188674676455548,0.914465761175279,0.7403120020183,1.70698367827913,1.99952774912822,3.49277093496994,4.75526287435719,7.44105561361289,10.5334894571172,15.1915504840888,20.1306845069878,25.0893442225454,27.9118739519813,28.0245841200765,24.9587420613918,20.2768460340978,15.0939273356819,10.7406833546249,7.30310339776565,4.98899280883757,3.29177204939447,2.26321617261556,1.46773197168136,1.00881885466902,0.685205966329022,0.390042102435928,0.44156175739522,-2.27373675443232e-13,0,0.806162701969242,0.300312552963078,1.24930825929505,1.05714465440724,2.27096571987795,2.7028590451464,4.56619048349739,6.25658245435307,9.67670585258838,13.8066220815731,19.9595529893832,26.7478038694926,33.5700175844736,37.5792698409446,37.6602515926347,33.3499164713257,26.7895613536962,19.7780631584615,13.9537036499828,9.49212505136984,6.4750249409326,4.33678804442616,2.97181286204477,2.0043625759331,1.339193928653,0.994104161456107,0.514285415395079,0.668023354221987,0,0,1.05688201668454,0.419378396570664,1.58116078089733,1.37043407936608,2.79819466107847,3.33899998716106,5.47316843832368,7.43488672169224,11.2632861026618,15.8970771822878,22.7194017329966,30.3484601302748,38.0834072151206,42.7067947990367,42.7561619673038,37.7869587879245,30.2782545789291,22.4451645127006,15.9719287834387,11.0393443041753,7.63349701392008,5.23504575982906,3.61096694431308,2.52805790477578,1.66166799490748,1.32344651042831,0.640909070886664,0.919865881237456,0,0,1.29263870329851,0.532954048780539,1.87912252587921,1.64556159590393,3.22494481008607,3.80967974667328,6.03960507207012,7.9871045059358,11.6558224890996,15.8401304491308,21.8280833868739,28.3257126316253,34.9484081551554,38.9043716522319,38.9641148920027,34.7053742983803,28.2599237885829,21.527017251492,15.8636387501842,11.4112412278114,8.15425680803173,5.79678443441662,4.05990122234152,2.95361346368509,1.91841489949729,1.62098677153335,0.741192889823651,1.15482225209007,0,0,1.50857270842016,0.637517997965006,2.12183094235024,1.85494276581176,3.50005011824032,4.04153748465387,6.1587494982864,7.76930377934423,10.6833750318287,13.4484286806151,17.0970570218728,20.433394344012,23.7325187952119,25.5506986209057,25.6689304325455,23.6769789537534,20.5206854940629,16.9001587569837,13.4929822669137,10.4678548725306,7.92369675542704,5.94656067678807,4.27558634256411,3.26556490028679,2.10994975517906,1.90088355461512,0.829165146456035,1.39546174682255,0,0,1.66742092043387,0.713080926248495,2.27541629271718,1.9677155486329,3.58511575488501,4.00279160115451,5.8248033933246,6.86878087139439,8.66122004829504,9.53523339953927,10.1977086233942,9.61848095594905,8.75376756382821,7.8622799865534,8.00826915532843,8.85053299368883,9.81045464611043,10.1170230064927,9.60402015316322,8.47781556688096,6.97757296926102,5.62517529730349,4.17434498418152,3.37038099811343,2.15927516829242,2.07911610891779,0.856712388781489,1.5672339856801,0,-4.54747350886464e-13,1.78140122114246,0.76582879848138,2.33808189626188,1.98222558210728,3.48235276796049,3.7193910139049,5.13143769897943,5.53623261158691,6.18645067339048,5.35695048576463,3.54224917375541,-0.0149177670796234,-3.88681309773347,-6.72297371472587,-6.60203835986385,-3.77405191775142,0.178170169894656,3.54314625967845,5.45192355479003,6.07820977527945,5.63670347608922,5.00327199227831,3.8629124991171,3.35100413336158,2.13564065916944,2.22428041387184,0.873383662746619,1.73185558275463,-4.54747350886464e-13,0,1.80397161865994,0.773260071748155,2.28597655379372,1.88787732891751,3.20007446699083,3.23820977063724,4.20090587302229,4.03786044211711,3.76907939702551,1.84619780255662,-1.32497899579766,-6.17184090468072,-11.147553692459,-14.5780638742167,-14.5339528852387,-11.1127232148506,-6.08187450357445,-1.34018346557923,1.8743526176354,3.66824081444747,4.04772608534176,4.0782961386426,3.26826392509474,3.08957102836894,1.92842446623263,2.20470717719445,0.799291298595108,1.77087786277161,0,0,1.7780500083536,0.75730407840183,2.14564879855607,1.71250223474544,2.78480293028224,2.63546550457613,3.16601364790313,2.57791035583796,1.69707648725034,-0.703023878906606,-4.22417047573344,-9.00570724744011,-13.6781993299983,-16.752401488633,-16.7565665196244,-13.6683780798858,-8.96237502744134,-4.18409332868578,-0.652321364198542,1.71546863600543,2.60778970121737,3.17808633367258,2.66028321934937,2.81344272363822,1.72407939743835,2.18971283383053,0.747943387586929,1.81703701600873,0,0,1.6446576724029,0.692066044577132,1.90137215292498,1.45661667313107,2.26253071813926,1.96135544417166,2.10897388061676,1.24380016942314,0.00717542125630644,-2.46160692748344,-5.78780154986862,-9.8945132146232,-13.7341113247262,-16.1515202360856,-16.1996959195326,-13.7686656822329,-9.96550406247707,-5.80923802053303,-2.54090633705664,-0.0234645882251243,1.11836087716438,2.08348874885951,1.81347811976411,2.27672879187185,1.30895701137297,1.95342824027693,0.577049117415754,1.68578682803991,0,0,1.48757375062496,0.616804110024532,1.6057088069665,1.16487150953253,1.69573515203138,1.28542011397167,1.11860963510844,0.105379883334535,-1.29859776523153,-3.61496894998481,-6.53732682394275,-9.84812213586838,-12.823240954227,-14.5983321224394,-14.6444740884936,-12.7863066399832,-9.86124013183144,-6.41737473201601,-3.59137467241362,-1.12730316865509,0.0899996211774123,1.31469261217171,1.21177987797637,1.91581130184295,1.04487038483148,1.82060238209579,0.497729594498196,1.61487993251012,0,-4.54747350886464e-13,1.22591324404038,0.497167887586784,1.24085163381687,0.830976962240129,1.09738784130923,0.615855240957444,0.195794411724364,-0.887088777305053,-2.36258498681445,-4.47275888106651,-7.0108076121337,-9.67624462644153,-12.0109678135536,-13.344047834727,-13.4328459953526,-12.0437480891783,-9.85525274230031,-7.0553798938613,-4.6977999359201,-2.38039585960678,-1.17473095351988,0.229039215510511,0.285143571641584,1.2061089043159,0.504884723486157,1.39602300381785,0.258354173102816,1.3217228923163,-4.54747350886464e-13,0,0.990657364047365,0.388923359625551,0.882445745868608,0.512004430618617,0.54547692997221,0.0332738446104486,-0.558046519969139,-1.62977769685858,-3.07379553789633,-4.92432111095241,-7.07161218051533,-9.17645335261477,-10.977573829532,-11.9301434957151,-11.9805978333115,-10.855278858874,-9.15882170741679,-6.82861821998722,-4.86978453970005,-2.73775915784699,-1.62977318848789,-0.177982828699896,-0.0698000797101486,0.93765062593593,0.325628052362845,1.23236379789978,0.208904778558463,1.17924895445049,0,0,0.668037442846071,0.244136692054781,0.497433074752735,0.176103102699017,0.00597046659277112,-0.530935980930735,-1.26002676627741,-2.32542322535846,-3.74803485604025,-5.42248091911733,-7.32162495454486,-9.09082738106281,-10.6082422515055,-11.3968583113028,-11.5235880996634,-10.6645809706151,-9.39056927887123,-7.45271883973237,-5.82595281257363,-3.84924316204797,-2.78880896489045,-1.26461835102873,-1.01325715902567,0.11979810234061,-0.267631399859965,0.677048931466743,-0.0619654717602316,0.776832272666979,0,0,0.441002829391437,0.137983630687813,0.196609430918215,-0.073530343265702,-0.366926897080702,-0.875369357879208,-1.62076767427607,-2.57768077087985,-3.83738354121851,-5.22341204771783,-6.75718464140755,-8.10547891858914,-9.23757252829,-9.74922278433132,-9.78481910242044,-9.01606658832316,-7.99114140582606,-6.36039064734541,-5.05248678401767,-3.3386335089599,-2.47421394903176,-1.10230935856998,-0.909447781880772,0.118264961039131,-0.224258035029379,0.592897203627217,-0.0242340428549142,0.639225684605663,0,0,0.149566903082814,0.000564470082281332,-0.110171093814643,-0.354815148189118,-0.764520464043017,-1.29851913571383,-2.10923315069613,-3.06900476026931,-4.3151976709587,-5.63186492645127,-7.07919293297618,-8.32854898341157,-9.41354339013196,-9.94012011621635,-10.1059039892925,-9.5304309954472,-8.76097459394714,-7.35009524659745,-6.20924525464943,-4.57285655395299,-3.67139269528434,-2.24314463113205,-1.84914228626258,-0.750326164691614,-0.804326679816768,-0.00653817214424635,-0.282807222912197,0.219174197417487,0,0,0.0408327658187773,-0.0452039961073751,-0.193898855562111,-0.373352698836243,-0.717988033013171,-1.11552515223775,-1.72217626467136,-2.39962352917246,-3.26342428573207,-4.1325480735004,-5.06338433037763,-5.81497709063933,-6.44083049682831,-6.66378114684449,-6.66996666885825,-6.1701029384285,-5.60471476623388,-4.59025675937755,-3.8440201338326,-2.71433555531075,-2.17904134237142,-1.20728901031089,-1.0343491253243,-0.29382365850779,-0.409966430601344,0.110723620254248,-0.116120290409526,0.178175980675405,0,0,-0.144633647374576,-0.153405353692506,-0.39728161808307,-0.590717260364727,-1.02046116103884,-1.4747609121232,-2.17207973502809,-2.92998231246656,-3.8920852146357,-4.85417677748046,-5.89810358643172,-6.75764564374549,-7.52501291952012,-7.87257165413394,-8.0354438446484,-7.63801349082041,-7.17396527701658,-6.16998756159683,-5.39186796997819,-4.16310706371951,-3.45285112706824,-2.34359192724969,-1.90045105998797,-1.08356988282776,-0.883374058281333,-0.4023429974377,-0.300230057931913,-0.145651088948398,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.8421709430404e-14,-0.217062178479864,-0.162729728733666,-0.397655892722867,-0.46191377304433,-0.755717724036259,-0.960139740753334,-1.33491574409655,-1.66724247370655,-2.09984949325863,-2.48373566201033,-2.88340528994379,-3.17885062118677,-3.4146968716347,-3.4794167856551,-3.46400791746095,-3.24671979333829,-3.0094800959836,-2.58673271439119,-2.25413524987312,-1.76932190506824,-1.47081745950123,-1.04626418018361,-0.841524854129716,-0.542035905481669,-0.414863604409788,-0.262382082365434,-0.155653677359766,-0.161079725251,-2.8421709430404e-14,-5.6843418860808e-14,-0.1778407922464,-0.070923615769118,-0.237932272366436,-0.208348499201122,-0.364875596761635,-0.413812942186553,-0.57305325247944,-0.688338292708806,-0.853944522145525,-1.00587144139831,-1.16190714460231,-1.30164360853962,-1.41404589419778,-1.48549226560215,-1.51966225045589,-1.48519640113682,-1.4316702712793,-1.29614411219416,-1.18108547049439,-0.99025818546022,-0.85626788576451,-0.670140212251226,-0.546120131924908,-0.413096635967577,-0.300374583459927,-0.249190070029101,-0.125476006270446,-0.175353469044353,-5.6843418860808e-14,0,-0.282643100363316,-0.1682325313717,-0.407423527475885,-0.417085026262384,-0.645014158081267,-0.766441439869027,-0.997657872120044,-1.19768832409602,-1.4207370350407,-1.63867506557403,-1.81489215980889,-1.97501734992022,-2.05848608620977,-2.10041895144275,-2.06810515558197,-1.97479181728056,-1.84274588644917,-1.64641494574187,-1.46024621890513,-1.22413730355913,-1.03167691072383,-0.821659819243905,-0.647867710319474,-0.512931594066458,-0.351729795175629,-0.323720963480241,-0.14236805642156,-0.25083155302616,0,0,-0.248149807006484,-0.118032759795142,-0.308732597174867,-0.289797003795456,-0.436286018550845,-0.508057650552928,-0.626385466927445,-0.755051100484025,-0.849786646403345,-0.992426766430981,-1.05718470862871,-1.17327720847948,-1.20135380323347,-1.26465073082602,-1.25303026252925,-1.2505173877704,-1.19514829087814,-1.12723688291271,-1.02876929036893,-0.918634746305315,-0.788907587215931,-0.679708296522222,-0.532077231044696,-0.469961942183659,-0.304255581324128,-0.326490533640595,-0.125085111008616,-0.255382516567352,0,0,-0.264761344702151,-0.1532504405385,-0.325214352024545,-0.336404774078005,-0.445227186113812,-0.538548329343371,-0.598163314917201,-0.721730181150519,-0.730459177214584,-0.832218947970318,-0.789545075033402,-0.845970636484594,-0.779098065241214,-0.809907553650078,-0.759599408461895,-0.785070950934937,-0.752402245088774,-0.75854887521507,-0.708815774303844,-0.683007553584389,-0.5933669773068,-0.55671079160436,-0.426612800888392,-0.421498806570071,-0.25229633052902,-0.319491108760417,-0.103717389320877,-0.268250004694323,0,0,-0.196357582929295,-0.115027160054069,-0.203936558540818,-0.227637392067891,-0.229802042184019,-0.303622492266868,-0.227475826308819,-0.286408336488648,-0.127384915166431,-0.119256991636348,0.106556037639166,0.166230686488916,0.367213692649557,0.370658361437336,0.425847826952577,0.301676087244005,0.220280558589366,0.0397796021393333,-0.0534000394050054,-0.19335456181193,-0.210440047750353,-0.295624112173527,-0.223998851239458,-0.298318934044119,-0.1533264861921,-0.264561866811391,-0.0621833711070394,-0.22958094957653,0,0,-0.128073025974118,-0.102091542338712,-0.0957013155166351,-0.15415369540824,-0.0360338066072927,-0.0971254617911654,0.140693198504096,0.173111403884832,0.561837163547125,0.762674569161391,1.28690893577118,1.59203963406912,2.04817150128156,2.16829552657441,2.24667195110169,1.98125301905202,1.69551653704343,1.23757453345047,0.899451956511484,0.515424350018066,0.326431401389755,0.0801731420751821,0.0566634034078106,-0.112087586224334,-0.0162481842498892,-0.173140998713052,-0.00712366021048183,-0.172423376425513,0,0,-0.000853568067668675,-0.0490866577738416,0.097643348227848,0.00868898218550385,0.294223986111092,0.276776873013205,0.741802870958054,0.940766949978752,1.67551209856151,2.22436545476285,3.24880544080997,4.02895762569892,4.94682302195406,5.30893302155528,5.40057242544117,4.85693017542485,4.14287052134569,3.16908692195352,2.37099032674951,1.58339898643771,1.10285362482637,0.622939052362881,0.445851003324378,0.157708355779505,0.169779702459437,-0.0312026831675212,0.0672972201491575,-0.071215760991663,0,0,0.150437498241217,0.00791028868297872,0.320591061570894,0.197594402051664,0.681661311529524,0.734189093167515,1.48709129947679,1.94401494080807,3.17523029368203,4.30560129607125,6.15316029010137,7.80564787477124,9.56115588466741,10.4093806659639,10.5190292979507,9.47340144094528,7.95981620139628,6.08618180414919,4.50003614683123,3.08113830634306,2.15125238668929,1.34895434925443,0.950297305873619,0.51506588623738,0.405836682148902,0.160069493859055,0.15939122065538,0.0630617129452276,0,0,0.344375487848765,0.0914279978462673,0.601818205377413,0.450916254219237,1.16767704640074,1.32687997731387,2.43161437616914,3.2529318083964,5.15173682733871,7.15049951484707,10.2337455319496,13.29227629514,16.4057912456913,18.0784310950921,18.1980064889869,16.311531827532,13.464719640567,10.1636815477029,7.36397928458132,5.03553594024766,3.47538455340418,2.2552460427853,1.56546775683387,0.956151775855687,0.687925675164479,0.399373748990001,0.26730408285971,0.234307497129521,0,-2.27373675443232e-13,0.565058955681479,0.188674676455548,0.914465761175279,0.7403120020183,1.70698367827913,1.99952774912822,3.49277093496994,4.75526287435719,7.44105561361289,10.5334894571172,15.1915504840888,20.1306845069878,25.0893442225454,27.9118739519813,28.0245841200765,24.9587420613918,20.2768460340978,15.0939273356819,10.7406833546249,7.30310339776565,4.98899280883757,3.29177204939447,2.26321617261556,1.46773197168136,1.00881885466902,0.685205966329022,0.390042102435928,0.44156175739522,-2.27373675443232e-13,0,0.806162701969242,0.300312552963078,1.24930825929505,1.05714465440724,2.27096571987795,2.7028590451464,4.56619048349739,6.25658245435307,9.67670585258838,13.8066220815731,19.9595529893832,26.7478038694926,33.5700175844736,37.5792698409446,37.6602515926347,33.3499164713257,26.7895613536962,19.7780631584615,13.9537036499828,9.49212505136984,6.4750249409326,4.33678804442616,2.97181286204477,2.0043625759331,1.339193928653,0.994104161456107,0.514285415395079,0.668023354221987,0,0,1.05688201668454,0.419378396570664,1.58116078089733,1.37043407936608,2.79819466107847,3.33899998716106,5.47316843832368,7.43488672169224,11.2632861026618,15.8970771822878,22.7194017329966,30.3484601302748,38.0834072151206,42.7067947990367,42.7561619673038,37.7869587879245,30.2782545789291,22.4451645127006,15.9719287834387,11.0393443041753,7.63349701392008,5.23504575982906,3.61096694431308,2.52805790477578,1.66166799490748,1.32344651042831,0.640909070886664,0.919865881237456,0,0,1.29263870329851,0.532954048780539,1.87912252587921,1.64556159590393,3.22494481008607,3.80967974667328,6.03960507207012,7.9871045059358,11.6558224890996,15.8401304491308,21.8280833868739,28.3257126316253,34.9484081551554,38.9043716522319,38.9641148920027,34.7053742983803,28.2599237885829,21.527017251492,15.8636387501842,11.4112412278114,8.15425680803173,5.79678443441662,4.05990122234152,2.95361346368509,1.91841489949729,1.62098677153335,0.741192889823651,1.15482225209007,0,0,1.50857270842016,0.637517997965006,2.12183094235024,1.85494276581176,3.50005011824032,4.04153748465387,6.1587494982864,7.76930377934423,10.6833750318287,13.4484286806151,17.0970570218728,20.433394344012,23.7325187952119,25.5506986209057,25.6689304325455,23.6769789537534,20.5206854940629,16.9001587569837,13.4929822669137,10.4678548725306,7.92369675542704,5.94656067678807,4.27558634256411,3.26556490028679,2.10994975517906,1.90088355461512,0.829165146456035,1.39546174682255,0,0,1.66742092043387,0.713080926248495,2.27541629271718,1.9677155486329,3.58511575488501,4.00279160115451,5.8248033933246,6.86878087139439,8.66122004829504,9.53523339953927,10.1977086233942,9.61848095594905,8.75376756382821,7.8622799865534,8.00826915532843,8.85053299368883,9.81045464611043,10.1170230064927,9.60402015316322,8.47781556688096,6.97757296926102,5.62517529730349,4.17434498418152,3.37038099811343,2.15927516829242,2.07911610891779,0.856712388781489,1.5672339856801,0,-4.54747350886464e-13,1.78140122114246,0.76582879848138,2.33808189626188,1.98222558210728,3.48235276796049,3.7193910139049,5.13143769897943,5.53623261158691,6.18645067339048,5.35695048576463,3.54224917375541,-0.0149177670796234,-3.88681309773347,-6.72297371472587,-6.60203835986385,-3.77405191775142,0.178170169894656,3.54314625967845,5.45192355479003,6.07820977527945,5.63670347608922,5.00327199227831,3.8629124991171,3.35100413336158,2.13564065916944,2.22428041387184,0.873383662746619,1.73185558275463,-4.54747350886464e-13,0,1.80397161865994,0.773260071748155,2.28597655379372,1.88787732891751,3.20007446699083,3.23820977063724,4.20090587302229,4.03786044211711,3.76907939702551,1.84619780255662,-1.32497899579766,-6.17184090468072,-11.147553692459,-14.5780638742167,-14.5339528852387,-11.1127232148506,-6.08187450357445,-1.34018346557923,1.8743526176354,3.66824081444747,4.04772608534176,4.0782961386426,3.26826392509474,3.08957102836894,1.92842446623263,2.20470717719445,0.799291298595108,1.77087786277161,0,0,1.7780500083536,0.75730407840183,2.14564879855607,1.71250223474544,2.78480293028224,2.63546550457613,3.16601364790313,2.57791035583796,1.69707648725034,-0.703023878906606,-4.22417047573344,-9.00570724744011,-13.6781993299983,-16.752401488633,-16.7565665196244,-13.6683780798858,-8.96237502744134,-4.18409332868578,-0.652321364198542,1.71546863600543,2.60778970121737,3.17808633367258,2.66028321934937,2.81344272363822,1.72407939743835,2.18971283383053,0.747943387586929,1.81703701600873,0,0,1.6446576724029,0.692066044577132,1.90137215292498,1.45661667313107,2.26253071813926,1.96135544417166,2.10897388061676,1.24380016942314,0.00717542125630644,-2.46160692748344,-5.78780154986862,-9.8945132146232,-13.7341113247262,-16.1515202360856,-16.1996959195326,-13.7686656822329,-9.96550406247707,-5.80923802053303,-2.54090633705664,-0.0234645882251243,1.11836087716438,2.08348874885951,1.81347811976411,2.27672879187185,1.30895701137297,1.95342824027693,0.577049117415754,1.68578682803991,0,0,1.48757375062496,0.616804110024532,1.6057088069665,1.16487150953253,1.69573515203138,1.28542011397167,1.11860963510844,0.105379883334535,-1.29859776523153,-3.61496894998481,-6.53732682394275,-9.84812213586838,-12.823240954227,-14.5983321224394,-14.6444740884936,-12.7863066399832,-9.86124013183144,-6.41737473201601,-3.59137467241362,-1.12730316865509,0.0899996211774123,1.31469261217171,1.21177987797637,1.91581130184295,1.04487038483148,1.82060238209579,0.497729594498196,1.61487993251012,0,-4.54747350886464e-13,1.22591324404038,0.497167887586784,1.24085163381687,0.830976962240129,1.09738784130923,0.615855240957444,0.195794411724364,-0.887088777305053,-2.36258498681445,-4.47275888106651,-7.0108076121337,-9.67624462644153,-12.0109678135536,-13.344047834727,-13.4328459953526,-12.0437480891783,-9.85525274230031,-7.0553798938613,-4.6977999359201,-2.38039585960678,-1.17473095351988,0.229039215510511,0.285143571641584,1.2061089043159,0.504884723486157,1.39602300381785,0.258354173102816,1.3217228923163,-4.54747350886464e-13,0,0.990657364047365,0.388923359625551,0.882445745868608,0.512004430618617,0.54547692997221,0.0332738446104486,-0.558046519969139,-1.62977769685858,-3.07379553789633,-4.92432111095241,-7.07161218051533,-9.17645335261477,-10.977573829532,-11.9301434957151,-11.9805978333115,-10.855278858874,-9.15882170741679,-6.82861821998722,-4.86978453970005,-2.73775915784699,-1.62977318848789,-0.177982828699896,-0.0698000797101486,0.93765062593593,0.325628052362845,1.23236379789978,0.208904778558463,1.17924895445049,0,0,0.668037442846071,0.244136692054781,0.497433074752735,0.176103102699017,0.00597046659277112,-0.530935980930735,-1.26002676627741,-2.32542322535846,-3.74803485604025,-5.42248091911733,-7.32162495454486,-9.09082738106281,-10.6082422515055,-11.3968583113028,-11.5235880996634,-10.6645809706151,-9.39056927887123,-7.45271883973237,-5.82595281257363,-3.84924316204797,-2.78880896489045,-1.26461835102873,-1.01325715902567,0.11979810234061,-0.267631399859965,0.677048931466743,-0.0619654717602316,0.776832272666979,0,0,0.441002829391437,0.137983630687813,0.196609430918215,-0.073530343265702,-0.366926897080702,-0.875369357879208,-1.62076767427607,-2.57768077087985,-3.83738354121851,-5.22341204771783,-6.75718464140755,-8.10547891858914,-9.23757252829,-9.74922278433132,-9.78481910242044,-9.01606658832316,-7.99114140582606,-6.36039064734541,-5.05248678401767,-3.3386335089599,-2.47421394903176,-1.10230935856998,-0.909447781880772,0.118264961039131,-0.224258035029379,0.592897203627217,-0.0242340428549142,0.639225684605663,0,0,0.149566903082814,0.000564470082281332,-0.110171093814643,-0.354815148189118,-0.764520464043017,-1.29851913571383,-2.10923315069613,-3.06900476026931,-4.3151976709587,-5.63186492645127,-7.07919293297618,-8.32854898341157,-9.41354339013196,-9.94012011621635,-10.1059039892925,-9.5304309954472,-8.76097459394714,-7.35009524659745,-6.20924525464943,-4.57285655395299,-3.67139269528434,-2.24314463113205,-1.84914228626258,-0.750326164691614,-0.804326679816768,-0.00653817214424635,-0.282807222912197,0.219174197417487,0,0,0.0408327658187773,-0.0452039961073751,-0.193898855562111,-0.373352698836243,-0.717988033013171,-1.11552515223775,-1.72217626467136,-2.39962352917246,-3.26342428573207,-4.1325480735004,-5.06338433037763,-5.81497709063933,-6.44083049682831,-6.66378114684449,-6.66996666885825,-6.1701029384285,-5.60471476623388,-4.59025675937755,-3.8440201338326,-2.71433555531075,-2.17904134237142,-1.20728901031089,-1.0343491253243,-0.29382365850779,-0.409966430601344,0.110723620254248,-0.116120290409526,0.178175980675405,0,0,-0.144633647374576,-0.153405353692506,-0.39728161808307,-0.590717260364727,-1.02046116103884,-1.4747609121232,-2.17207973502809,-2.92998231246656,-3.8920852146357,-4.85417677748046,-5.89810358643172,-6.75764564374549,-7.52501291952012,-7.87257165413394,-8.0354438446484,-7.63801349082041,-7.17396527701658,-6.16998756159683,-5.39186796997819,-4.16310706371951,-3.45285112706824,-2.34359192724969,-1.90045105998797,-1.08356988282776,-0.883374058281333,-0.4023429974377,-0.300230057931913,-0.145651088948398,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.8421709430404e-14,-0.217062178479893,-0.162729728733694,-0.397655892722838,-0.461913773044358,-0.755717724036259,-0.960139740753363,-1.33491574409655,-1.66724247370658,-2.09984949325863,-2.48373566201033,-2.88340528994379,-3.17885062118674,-3.41469687163467,-3.4794167856551,-3.46400791746092,-3.24671979333826,-3.0094800959836,-2.58673271439116,-2.25413524987314,-1.76932190506821,-1.47081745950121,-1.04626418018361,-0.841524854129744,-0.54203590548164,-0.414863604409817,-0.262382082365463,-0.155653677359766,-0.161079725250971,-2.8421709430404e-14,-5.6843418860808e-14,-0.177840792246286,-0.070923615769118,-0.237932272366436,-0.208348499201009,-0.364875596761578,-0.413812942186439,-0.573053252479497,-0.68833829270892,-0.853944522145582,-1.00587144139837,-1.16190714460237,-1.30164360853956,-1.41404589419784,-1.4854922656022,-1.51966225045584,-1.48519640113676,-1.43167027127919,-1.2961441121941,-1.18108547049445,-0.990258185460164,-0.856267885764566,-0.670140212251169,-0.546120131924965,-0.413096635967634,-0.300374583459927,-0.249190070029101,-0.125476006270389,-0.175353469044296,-5.6843418860808e-14,0,-0.282643100363316,-0.168232531371586,-0.407423527475999,-0.417085026262498,-0.645014158081267,-0.766441439869027,-0.99765787211993,-1.19768832409591,-1.42073703504082,-1.63867506557415,-1.81489215980889,-1.97501734992022,-2.05848608620977,-2.10041895144286,-2.06810515558186,-1.97479181728045,-1.84274588644928,-1.64641494574198,-1.46024621890513,-1.22413730355902,-1.03167691072383,-0.821659819243905,-0.647867710319474,-0.512931594066345,-0.351729795175743,-0.323720963480241,-0.142368056421446,-0.25083155302616,0,0,-0.248149807006371,-0.118032759795256,-0.308732597174981,-0.28979700379557,-0.436286018550732,-0.508057650553042,-0.626385466927559,-0.755051100484025,-0.849786646403231,-0.992426766430867,-1.0571847086286,-1.17327720847959,-1.20135380323359,-1.26465073082602,-1.25303026252936,-1.25051738777017,-1.19514829087802,-1.1272368829126,-1.02876929036904,-0.918634746305315,-0.788907587215931,-0.679708296522108,-0.532077231044696,-0.469961942183772,-0.304255581324355,-0.326490533640822,-0.12508511100873,-0.255382516567238,0,0,-0.264761344702151,-0.153250440538727,-0.325214352024659,-0.336404774077778,-0.445227186113812,-0.538548329343257,-0.598163314917201,-0.721730181150519,-0.730459177214357,-0.832218947970546,-0.789545075033402,-0.845970636484822,-0.779098065240987,-0.809907553650078,-0.759599408461668,-0.785070950934937,-0.752402245088774,-0.758548875215297,-0.708815774303616,-0.683007553584389,-0.5933669773068,-0.556710791604246,-0.426612800888392,-0.421498806569844,-0.252296330529248,-0.319491108760189,-0.103717389320764,-0.268250004694323,0,0,-0.196357582929295,-0.115027160054069,-0.203936558541045,-0.227637392067663,-0.229802042184019,-0.303622492266641,-0.227475826308819,-0.286408336488421,-0.127384915166203,-0.119256991636121,0.106556037639166,0.166230686488689,0.367213692649557,0.370658361437336,0.425847826952577,0.301676087244005,0.220280558589366,0.0397796021391059,-0.0534000394050054,-0.193354561811702,-0.210440047750126,-0.295624112173755,-0.223998851239685,-0.298318934044346,-0.153326486191872,-0.264561866811164,-0.062183371106812,-0.229580949576302,0,0,-0.128073025974118,-0.102091542338712,-0.0957013155166351,-0.15415369540824,-0.0360338066070653,-0.0971254617911654,0.140693198504323,0.173111403884832,0.561837163546898,0.762674569161391,1.28690893577141,1.59203963406935,2.04817150128156,2.16829552657464,2.24667195110169,1.98125301905202,1.6955165370432,1.2375745334507,0.899451956511484,0.515424350017838,0.326431401389982,0.0801731420751821,0.056663403408038,-0.112087586224334,-0.0162481842498892,-0.173140998712825,-0.00712366021025446,-0.172423376425741,0,0,-0.000853568067896049,-0.049086657774069,0.0976433482276207,0.00868898218527647,0.294223986111092,0.276776873013205,0.741802870957827,0.940766949978524,1.67551209856128,2.22436545476307,3.2488054408102,4.02895762569847,4.94682302195383,5.3089330215555,5.40057242544094,4.85693017542485,4.14287052134591,3.16908692195398,2.37099032674973,1.58339898643749,1.10285362482659,0.622939052363336,0.445851003323924,0.157708355779732,0.169779702459209,-0.0312026831677485,0.0672972201489301,-0.0712157609921178,0,0,0.150437498241217,0.00791028868297872,0.32059106157044,0.197594402051664,0.681661311529524,0.734189093167515,1.48709129947679,1.94401494080807,3.17523029368203,4.3056012960717,6.15316029010137,7.80564787477124,9.56115588466741,10.4093806659639,10.519029297951,9.47340144094528,7.95981620139628,6.08618180414919,4.50003614683078,3.08113830634261,2.15125238668975,1.34895434925443,0.950297305873619,0.51506588623738,0.405836682149356,0.1600694938586,0.159391220654925,0.0630617129452276,0,0,0.34437548784922,0.0914279978458126,0.601818205377867,0.450916254219237,1.16767704640074,1.32687997731432,2.43161437616868,3.25293180839662,5.15173682733871,7.15049951484662,10.2337455319496,13.2922762951405,16.4057912456908,18.0784310950926,18.1980064889872,16.311531827532,13.4647196405665,10.1636815477029,7.36397928458132,5.03553594024766,3.47538455340373,2.2552460427853,1.56546775683341,0.956151775855687,0.687925675164934,0.399373748989547,0.267304082859255,0.234307497129976,0,0,0.565058955681025,0.188674676455548,0.914465761175279,0.7403120020183,1.70698367827868,1.99952774912822,3.49277093496994,4.75526287435696,7.44105561361334,10.5334894571176,15.1915504840888,20.1306845069882,25.0893442225452,27.9118739519809,28.024584120076,24.9587420613918,20.2768460340983,15.0939273356819,10.7406833546247,7.3031033977652,4.98899280883711,3.29177204939447,2.2632161726151,1.46773197168113,1.00881885466879,0.685205966329022,0.390042102435928,0.441561757394993,0,0,0.806162701969242,0.300312552963078,1.2493082592955,1.05714465440724,2.27096571987749,2.7028590451464,4.56619048349739,6.25658245435261,9.67670585258838,13.8066220815731,19.9595529893832,26.7478038694921,33.570017584474,37.5792698409446,37.6602515926343,33.3499164713257,26.7895613536962,19.7780631584619,13.9537036499833,9.49212505136984,6.4750249409326,4.33678804442616,2.97181286204523,2.00436257593356,1.339193928653,0.994104161456562,0.514285415395534,0.668023354221987,0,0,1.05688201668409,0.41937839657021,1.58116078089733,1.37043407936608,2.79819466107847,3.33899998716151,5.47316843832368,7.43488672169224,11.2632861026618,15.8970771822874,22.7194017329966,30.3484601302753,38.0834072151201,42.7067947990367,42.7561619673038,37.786958787925,30.2782545789291,22.4451645127001,15.9719287834387,11.0393443041748,7.63349701392008,5.23504575982906,3.61096694431308,2.52805790477578,1.66166799490702,1.32344651042831,0.640909070886664,0.919865881237911,0,0,1.29263870329851,0.532954048780994,1.87912252587921,1.64556159590393,3.22494481008562,3.80967974667328,6.03960507207012,7.98710450593626,11.6558224890996,15.8401304491308,21.8280833868739,28.3257126316248,34.9484081551554,38.9043716522319,38.9641148920027,34.7053742983803,28.2599237885834,21.527017251492,15.8636387501842,11.4112412278109,8.15425680803219,5.79678443441662,4.05990122234152,2.95361346368509,1.91841489949729,1.62098677153335,0.741192889823651,1.15482225208962,0,0,1.50857270842062,0.637517997964551,2.1218309423507,1.85494276581176,3.50005011824032,4.04153748465433,6.15874949828685,7.76930377934423,10.6833750318292,13.4484286806146,17.0970570218724,20.4333943440124,23.7325187952119,25.5506986209057,25.6689304325455,23.6769789537539,20.5206854940629,16.9001587569837,13.4929822669142,10.4678548725301,7.92369675542704,5.94656067678807,4.27558634256457,3.26556490028634,2.1099497551786,1.90088355461558,0.829165146456035,1.39546174682255,0,0,1.66742092043432,0.713080926248949,2.27541629271809,1.96771554863381,3.58511575488546,4.00279160115497,5.82480339332551,6.86878087139439,8.66122004829549,9.53523339953927,10.1977086233933,9.6184809559486,8.75376756382866,7.8622799865534,8.00826915532798,8.85053299368928,9.81045464610997,10.1170230064922,9.60402015316276,8.47781556688142,6.97757296926102,5.62517529730303,4.17434498418197,3.37038099811298,2.15927516829288,2.07911610891733,0.856712388781034,1.56723398567965,0,0,1.78140122114246,0.76582879848138,2.33808189626188,1.98222558210728,3.48235276796095,3.71939101390399,5.13143769897988,5.53623261158737,6.18645067339048,5.35695048576463,3.54224917375541,-0.014917767078714,-3.88681309773256,-6.72297371472587,-6.60203835986476,-3.77405191775142,0.178170169894656,3.543146259678,5.45192355479048,6.0782097752799,5.63670347608922,5.00327199227831,3.86291249911756,3.35100413336204,2.13564065916989,2.22428041387229,0.873383662746164,1.73185558275418,0,0,1.80397161865994,0.773260071748155,2.28597655379372,1.88787732891751,3.20007446699083,3.23820977063679,4.20090587302229,4.0378604421162,3.76907939702551,1.84619780255662,-1.32497899579676,-6.17184090468072,-11.147553692459,-14.5780638742158,-14.5339528852387,-11.1127232148506,-6.08187450357354,-1.34018346557923,1.8743526176354,3.66824081444838,4.04772608534176,4.0782961386426,3.2682639250952,3.08957102836894,1.92842446623172,2.20470717719445,0.799291298596017,1.77087786277161,0,4.54747350886464e-13,1.77805000835315,0.757304078400921,2.14564879855698,1.71250223474544,2.78480293028224,2.63546550457568,3.16601364790358,2.57791035583796,1.69707648725034,-0.703023878906606,-4.22417047573435,-9.00570724744102,-13.6781993299992,-16.752401488633,-16.7565665196239,-13.6683780798853,-8.96237502744225,-4.18409332868487,-0.652321364199452,1.71546863600452,2.60778970121646,3.17808633367167,2.66028321934937,2.81344272363913,1.72407939743744,2.18971283382962,0.747943387587839,1.81703701600873,4.54747350886464e-13,0,1.6446576724029,0.692066044577132,1.90137215292407,1.45661667313107,2.26253071813926,1.96135544417166,2.10897388061585,1.24380016942314,0.00717542125630644,-2.46160692748253,-5.78780154986771,-9.8945132146232,-13.7341113247262,-16.1515202360852,-16.1996959195335,-13.7686656822339,-9.96550406247616,-5.80923802053303,-2.54090633705755,-0.0234645882242148,1.11836087716438,2.08348874885951,1.8134781197632,2.27672879187185,1.30895701137251,1.95342824027603,0.577049117416209,1.68578682804082,0,4.54747350886464e-13,1.48757375062496,0.616804110024532,1.6057088069665,1.16487150953253,1.69573515203047,1.28542011397167,1.11860963510844,0.105379883334081,-1.29859776523153,-3.61496894998481,-6.53732682394366,-9.84812213586929,-12.8232409542261,-14.5983321224394,-14.6444740884936,-12.7863066399841,-9.86124013183053,-6.41737473201601,-3.59137467241453,-1.12730316865509,0.0899996211783218,1.31469261217262,1.21177987797591,1.91581130184295,1.04487038483057,1.82060238209579,0.497729594497287,1.61487993251012,4.54747350886464e-13,0,1.22591324403948,0.497167887587693,1.24085163381778,0.830976962240129,1.09738784130832,0.615855240957444,0.195794411724364,-0.887088777304598,-2.36258498681445,-4.47275888106651,-7.01080761213279,-9.67624462644153,-12.0109678135527,-13.344047834727,-13.4328459953535,-12.0437480891778,-9.85525274230122,-7.05537989386039,-4.6977999359201,-2.38039585960723,-1.17473095351988,0.229039215510511,0.285143571641584,1.2061089043159,0.504884723485247,1.39602300381875,0.258354173102816,1.32172289231539,0,0,0.990657364048275,0.388923359625551,0.882445745868608,0.512004430618617,0.54547692997221,0.0332738446104486,-0.558046519969139,-1.62977769685858,-3.07379553789633,-4.92432111095241,-7.07161218051533,-9.17645335261477,-10.977573829533,-11.9301434957151,-11.9805978333115,-10.855278858875,-9.15882170741679,-6.82861821998722,-4.86978453970005,-2.73775915784609,-1.6297731884888,-0.177982828698987,-0.0698000797110581,0.93765062593684,0.325628052363754,1.23236379789887,0.208904778559372,1.17924895445049,0,0,0.66803744284698,0.244136692053871,0.497433074752735,0.176103102698107,0.00597046659186162,-0.530935980929826,-1.26002676627832,-2.32542322535937,-3.74803485604025,-5.42248091911733,-7.32162495454577,-9.09082738106281,-10.6082422515046,-11.3968583113037,-11.5235880996624,-10.6645809706151,-9.39056927887123,-7.45271883973237,-5.82595281257363,-3.84924316204797,-2.78880896488954,-1.26461835102964,-1.01325715902567,0.11979810234061,-0.267631399859965,0.677048931465833,-0.0619654717602316,0.776832272666979,0,0,0.441002829390527,0.137983630687813,0.196609430918215,-0.0735303432647925,-0.366926897080702,-0.875369357878299,-1.62076767427516,-2.57768077088076,-3.8373835412176,-5.22341204771783,-6.75718464140755,-8.10547891859005,-9.23757252829,-9.74922278433132,-9.78481910242044,-9.01606658832316,-7.99114140582606,-6.36039064734541,-5.05248678401767,-3.3386335089599,-2.47421394903085,-1.10230935856907,-0.909447781880772,0.118264961039131,-0.224258035030289,0.592897203627217,-0.0242340428549142,0.639225684605663,0,0,0.149566903083723,0.000564470081371837,-0.110171093813733,-0.354815148189118,-0.764520464043017,-1.29851913571383,-2.10923315069613,-3.06900476026931,-4.3151976709587,-5.63186492645127,-7.07919293297709,-8.32854898341157,-9.41354339013287,-9.94012011621635,-10.1059039892925,-9.5304309954472,-8.76097459394714,-7.35009524659745,-6.20924525464943,-4.57285655395299,-3.67139269528343,-2.24314463113296,-1.84914228626258,-0.750326164691614,-0.804326679817677,-0.00653817214424635,-0.282807222912197,0.219174197417487,0,0,0.0408327658187773,-0.0452039961073751,-0.193898855562111,-0.373352698835333,-0.71798803301408,-1.11552515223775,-1.72217626467136,-2.39962352917337,-3.26342428573207,-4.1325480735004,-5.06338433037763,-5.81497709063933,-6.44083049682831,-6.66378114684449,-6.66996666885825,-6.1701029384285,-5.60471476623388,-4.59025675937755,-3.8440201338326,-2.71433555531075,-2.17904134237142,-1.20728901031089,-1.0343491253243,-0.29382365850779,-0.409966430601344,0.110723620254248,-0.116120290409526,0.178175980675405,0,0,-0.144633647374576,-0.153405353692506,-0.39728161808307,-0.590717260363817,-1.02046116103884,-1.4747609121232,-2.17207973502809,-2.92998231246565,-3.89208521463479,-4.85417677748137,-5.89810358643172,-6.75764564374458,-7.52501291952103,-7.87257165413394,-8.0354438446484,-7.6380134908195,-7.17396527701658,-6.16998756159774,-5.39186796997728,-4.16310706371951,-3.45285112706824,-2.34359192724969,-1.90045105998797,-1.08356988282867,-0.883374058281333,-0.402342997438609,-0.300230057931913,-0.145651088949307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive1110_field5":[100,101.093090042804,100.871287873503,100.942324638975,100.852800825123,100.854975236489,100.756069977611,100.701498243044,100.577619759127,100.475847610508,100.337536440035,100.22042151725,100.106675732817,100.025016016198,99.9856634082539,99.9803204097428,100.039790979888,100.107798933418,100.244286553576,100.338945405585,100.505239102547,100.572260156493,100.732361695922,100.741164035802,100.883945593066,100.832378554905,100.962388531885,100.858136558657,101.079383162964,100,100.739361901137,100.760519078394,100.763000843232,100.777854411246,100.773995117752,100.783456645833,100.785611324425,100.788334726063,100.791386690695,100.785792069927,100.785679158568,100.771213525912,100.768170830727,100.747979906385,100.747396741364,100.727070586211,100.735746414332,100.718184559674,100.739014428632,100.721316942346,100.752494062009,100.728995312771,100.767620946622,100.734831856198,100.779480292474,100.737392889039,100.791774706482,100.722356444634,100.879587842204,100.739363033714,100.781783707679,100.828698293872,100.804433837333,100.806467326965,100.782911399784,100.760230057936,100.726540362956,100.683282661496,100.637508216149,100.580357184815,100.530316927053,100.474650214401,100.4378988276,100.404281688976,100.399393663525,100.401261229329,100.434219551386,100.467009646378,100.526372174755,100.570655536338,100.63716725761,100.672403861262,100.73193897529,100.746770147219,100.794976886015,100.78654918999,100.828453954747,100.787259948401,100.803155486569,100.781783285039,100.770175589187,100.787463028413,100.779052755128,100.779794093908,100.769773109219,100.756236315852,100.740278839751,100.713088939498,100.688224607359,100.649551738689,100.617976933877,100.575427822048,100.547354784853,100.514692507224,100.505011270017,100.494598931631,100.511971254214,100.524207323283,100.564201418774,100.587231987277,100.637557417742,100.656715262518,100.706663397912,100.712864738558,100.757426445196,100.749139030653,100.785132953839,100.77173072913,100.801244842801,100.770175765912,100.776977562189,100.785685975988,100.775530499532,100.766479972084,100.751911838985,100.726556925753,100.701617900326,100.660918279876,100.623744725793,100.571177731054,100.526581234773,100.47259286581,100.435302898164,100.398612578743,100.389181072826,100.385879264245,100.41380521601,100.440985368283,100.495690406872,100.534386872987,100.59713565152,100.628500255628,100.685942372184,100.700821505864,100.747336897449,100.746439810343,100.778910761826,100.766233798886,100.790935809685,100.776977506016,100.770773069653,100.77131364669,100.767138566343,100.753087388806,100.742237912801,100.714259140653,100.690412111288,100.646629495015,100.605842256357,100.545872549177,100.490141657808,100.422103488422,100.36809981235,100.317043670588,100.297091336602,100.291468723213,100.323517412324,100.360711143387,100.42724631105,100.478240683941,100.55104996442,100.591367437393,100.654227443968,100.675570633161,100.723846627388,100.728787813463,100.763282024308,100.757279922293,100.777565419297,100.770773093104,100.767893329876,100.760712462176,100.759329947147,100.738249999472,100.726466073169,100.691685638426,100.66227672058,100.608980593154,100.555186525982,100.477825806966,100.397140825745,100.300122600191,100.212478680832,100.134067600596,100.097087073882,100.094159895147,100.144283818143,100.212205946098,100.311089332583,100.39332498004,100.489516569527,100.549165404254,100.62280677185,100.65450203392,100.705882251713,100.717045644623,100.750139314246,100.751324806891,100.766560797867,100.76789332624,100.76432227915,100.750999787096,100.753285224055,100.727795628913,100.716054792862,100.677362962738,100.642728600863,100.580909037806,100.510543691378,100.409245557377,100.288248935848,100.139248685874,99.9862081090377,99.8491807087801,99.7736388266836,99.7717605274371,99.8569327130976,99.9839787165505,100.143355524807,100.279551385976,100.413316938685,100.500837281209,100.589013732772,100.632968964515,100.687752038064,100.706177686052,100.737494636734,100.745732718416,100.755804277076,100.764322279605,100.761624862926,100.743850487093,100.748184300832,100.720118907065,100.707043446026,100.666235325876,100.625087997468,100.555287962649,100.464071011111,100.331009949881,100.149166726796,99.9131259442907,99.642370683266,99.3915947389197,99.2400873793539,99.239934017281,99.3977569750425,99.641082436583,99.9136127233827,100.141339652145,100.332771962276,100.45750053361,100.562594836049,100.619094325588,100.675648404239,100.700436233517,100.728409786393,100.742996330761,100.747560559078,100.761624861111,100.760214888007,100.74128757341,100.746490254291,100.719870116693,100.705786086358,100.667948484434,100.622692544994,100.550897180949,100.440912530901,100.274544315574,100.013328146944,99.6465326211769,99.1824053872649,98.7297563243134,98.4396487006363,98.4403454342563,98.7319564347913,99.1811750115964,99.6429867299133,100.007736762068,100.273887851552,100.437827225414,100.555625959552,100.62007379964,100.674042807754,100.702381989122,100.724805253074,100.743901717072,100.742979289518,100.760214883454,100.760506312471,100.744518537654,100.748801455316,100.728654780914,100.714547604628,100.687210115893,100.644259236381,100.583926933812,100.469465282087,100.285641085951,99.946854797335,99.421169157988,98.6911375693217,97.9375235691946,97.4339995604972,97.434991358175,97.9357526662845,98.6946218602371,99.4216145531905,99.9530772874078,100.289384163795,100.474924242883,100.587787464622,100.647333588327,100.689811426763,100.716016699796,100.729572544959,100.749972010567,100.743737136195,100.760506306608,100.763206113111,100.755360906988,100.756933624647,100.74961702368,100.737897198587,100.731549055031,100.702719431817,100.677305360936,100.591459631227,100.437718427204,100.072408926403,99.4239218266006,98.4255579829463,97.3296575107579,96.5696788961172,96.5700928491955,97.3227954727467,98.437464810556,99.4369775363501,100.099499868585,100.451712388143,100.608614245419,100.680116308102,100.711926684047,100.729244575054,100.744775934001,100.745268123103,100.762462543399,100.751470601841,100.763206105449,100.768566712055,100.774621548688,100.771562770212,100.783867078745,100.7776849358,100.804146256529,100.804762827155,100.844820418401,100.83733142414,100.794770450636,100.518355370481,99.8881283791002,98.7620396940954,97.4287734788339,96.4615837291489,96.4595765993644,97.4101524438264,98.7757950246352,99.9109615507611,100.564402947914,100.817174684095,100.864972200612,100.844958374668,100.819892368124,100.795838029491,100.790451631192,100.773487372988,100.781960557425,100.767244679245,100.768566702556,100.776918737196,100.80256754075,100.792932239893,100.831060299964,100.833175287949,100.902548128467,100.945983915316,101.078230800946,101.196013929475,101.34810751358,101.298847739872,100.892165140084,99.8993691406312,98.586828124514,97.5701118753,97.563648972407,98.5454078859405,99.8957231691691,100.901611193371,101.343089580277,101.364635438804,101.226404438918,101.072012416945,100.965911962232,100.887495958255,100.851953957389,100.814399529892,100.808364978685,100.791749790475,100.776918727807,100.787841094762,100.838210547172,100.819883731419,100.888221347541,100.899418747357,101.016294300798,101.106460959112,101.337946257209,101.593007268737,101.965719794901,102.203836841298,102.144099712694,101.488847600737,100.44813368451,99.5606628976585,99.553865040718,100.386438691522,101.459284115798,102.115340924769,102.219785126254,101.95830061688,101.617113643039,101.322286427937,101.130193216016,100.994565911129,100.923974401524,100.865521162343,100.8399749133,100.824133426519,100.787841082972,100.801117997349,100.879663750048,100.850488147972,100.950573871619,100.968563556543,101.129583106618,101.256315924587,101.564955129133,101.914192822709,102.435495094281,102.863753785302,103.05599573941,102.680040847018,101.91953054887,101.201456752865,101.204935774901,101.860043747442,102.645767804932,102.995096854217,102.849301009086,102.39971476239,101.929432493565,101.54011594678,101.283911558434,101.102544935297,100.99872329162,100.923177874678,100.874693753722,100.863394798578,100.801117992965,100.815357825463,100.924076520331,100.881783251428,101.012146537897,101.031663103246,101.226277817734,101.367700079392,101.70939860784,102.06951965843,102.598847478919,103.004777399114,103.179247429928,102.786350841772,102.053595072739,101.378548706535,101.40478267937,102.031350906842,102.785624222168,103.118381794158,102.983920775273,102.547527829669,102.081185538899,101.677383152492,101.398402725152,101.194592429343,101.065744328997,100.980957606367,100.90850768533,100.906159015696,100.815357812319,100.830286332778,100.968405838665,100.911100058222,101.067447785243,101.081341302372,101.295044759148,101.425442133549,101.753371234689,102.042788492712,102.452262161727,102.650516680763,102.577235898863,101.927971804229,101.019478826829,100.269607333417,100.319164329268,101.04664028376,101.981143149818,102.543911202879,102.647301229392,102.400964346351,102.058584042326,101.717626967245,101.459348902984,101.260782034867,101.118484803909,101.03497086666,100.939323381795,100.950801856579,100.830286326799,100.843731509164,101.009470557286,100.935577030443,101.112079400543,101.113076739687,101.331624907602,101.429701831773,101.711714220693,101.885054975196,102.120313509429,102.06056068675,101.714604941271,100.831880575955,99.7904791143398,98.9934627672666,99.050263757865,99.8313454991714,100.907150590332,101.702277530033,102.078768776019,102.074309073616,101.905556366588,101.671155588399,101.46322486718,101.293674360677,101.149411317265,101.078408780911,100.962484184523,100.992188470871,100.843731493861,100.856293801841,101.044896030092,100.953769712456,101.143629953494,101.125562016869,101.337470587459,101.390357237105,101.613364081868,101.666722387344,101.746500761667,101.495224197388,100.999741257094,100.061761895646,99.0717390975772,98.3405722844627,98.3859331819153,99.0907723440689,100.129113330452,100.992901854807,101.528776995579,101.709229933562,101.695354660038,101.573364394335,101.426077268383,101.300438005419,101.161992143346,101.112780311496,100.979281913817,101.030615634579,100.856293798176,100.865405712141,101.072863553261,100.964540875912,101.161705328755,101.120801806872,101.319051644393,101.323207751681,101.488723574725,101.443691735137,101.417734740168,101.070521416087,100.559779609575,99.7195469358806,98.9128940826557,98.3245033668732,98.3547181167543,98.9005357879353,99.7635234596772,100.54301173531,101.105181285198,101.381186179004,101.471694092479,101.444721053757,101.353824605038,101.278955355451,101.151095121523,101.131396701268,100.984796678493,101.060134775779,100.865405693265,100.872794935966,101.092547011733,100.967809261001,101.16656019732,101.100861705029,101.281137975901,101.239245727978,101.35607264264,101.24138989253,101.157993605181,100.786177030756,100.334997608028,99.6508510469517,99.0540449521039,98.6178567424842,98.6409977287469,99.0275821880022,99.6843417245805,100.317773858643,100.8282432149,101.133093749553,101.279239512669,101.322836802901,101.275245770134,101.249835744303,101.131614233238,101.143830289031,100.985697412033,101.084661125567,100.8727949311,100.876711748139,101.104448633578,100.965219931176,101.161942413206,101.073175624376,101.235198600743,101.154461224092,101.233326825525,101.074008889572,100.965619895508,100.605796960647,100.232563031548,99.6931694276329,99.2666462914087,98.9491782653026,98.9674499807922,99.2298027931508,99.7101513620863,100.200750590354,100.632065098341,100.930096202663,101.097431678941,101.192016260999,101.175677527789,101.1987879416,101.091080963955,101.13941390438,100.974892697773,101.098617346077,100.876711731661,100.877093502906,101.108200983642,100.95488483402,101.145262133785,101.033494456526,101.176779568631,101.065667114549,101.116971500606,100.933093168027,100.820204361865,100.490001178691,100.191403606477,99.7695891495779,99.4683975816131,99.2389784444249,99.2593676543327,99.4432423057462,99.7979685892754,100.179072600363,100.533705575961,100.81137493322,100.976161159961,101.103080809892,101.100819641235,101.162499242616,101.057618913008,101.136268491685,100.963786994407,101.106607636561,100.87709345215,100.879485176973,101.108385827538,100.946536595179,101.131751444662,101.00334161545,101.128173264177,100.993897701067,101.023519435215,100.825675981944,100.712716684254,100.410760562894,100.165497278942,99.8238475795984,99.5985825368659,99.4209089557067,99.433768403292,99.5621121173193,99.8234417041301,100.123833533724,100.411879581187,100.671201840783,100.826657114966,100.984232861361,100.994107061132,101.099223125039,101.001898250395,101.118164873998,100.944210651068,101.111299398038,100.879485206504,100.868126707886,101.099889968113,100.920121050158,101.093544045507,100.951291108388,101.060883281181,100.91165798477,100.927927586699,100.730867923375,100.628162123012,100.363995751964,100.170515319198,99.901773917602,99.7406098768442,99.6133296451748,99.6321427621339,99.7369832886829,99.938384950557,100.185635508992,100.414864699342,100.651704383591,100.779182452527,100.947470421726,100.945732984931,101.074315335899,100.967621732587,101.105058440625,100.923437301851,101.099512760508,100.868126487729,100.881160345119,101.107207229633,100.936284746919,101.095314508667,100.939969401924,101.030517428107,100.867744345578,100.86024700225,100.656184527341,100.541794690111,100.289158217688,100.105778100387,99.8646749203102,99.7167824562743,99.6020635462415,99.6011683922104,99.6822597103137,99.8339153026135,100.053761535184,100.246785761865,100.491345382829,100.61408950236,100.822742558862,100.832116675819,101.010890166667,100.913540028404,101.09365649414,100.912915050895,101.11857238734,100.881160617987,100.83287703538,101.057392279798,100.860812620019,101.036279617206,100.871370244906,100.949390951328,100.792649681732,100.781629172261,100.600822453856,100.507820904223,100.304207770021,100.168974177118,99.9933128673501,99.8953702964348,99.8282898758708,99.8397677771484,99.9228609158812,100.038060886534,100.227969554108,100.362877393012,100.579181451493,100.648777745726,100.847158966565,100.816212080854,100.99982233085,100.87480836683,101.063636596869,100.869801779514,101.073294922229,100.832876142989,100.928577302836,101.21425669701,100.948342667655,101.086641370676,100.932095416247,100.954467299606,100.783642800489,100.706670244943,100.491529959623,100.326551271841,100.080950797987,99.8776143587904,99.6671005958352,99.5138179766328,99.4302287049545,99.4051998436413,99.5001585254289,99.6055942335562,99.8453564238934,100.001083103585,100.300635381234,100.409672050913,100.701526419987,100.709141836343,100.971033010521,100.872174823429,101.111005263476,100.93043165756,101.147706298155,100.92857877962,100,101.092969099619,100.871164538032,100.94220268412,100.852676559409,100.854850852912,100.755942813053,100.701369578318,100.577487658862,100.475712918968,100.337467245094,100.220280248645,100.106531508374,100.024869813088,99.9855161798919,99.980173019001,100.039645074485,100.107654614549,100.244145755856,100.338806892373,100.505172066654,100.572127794401,100.732233729385,100.741036428597,100.883821894816,100.832253745763,100.962267074652,100.858012837485,101.079261965776,100,155.75778821927,156.626565942236,156.391454274332,156.493350805481,156.352220090138,156.35560350278,156.199093641102,156.112693217393,155.916479973306,155.755410506246,155.536220269635,155.350728684129,155.170319755444,155.040669045158,154.97799458759,154.968901688896,155.062855755369,155.169850715455,155.386156337517,155.535556062027,155.799474762584,155.905439408805,156.159691819193,156.173787042927,156.400411845736,156.318948573738,156.525100438173,156.36878366651,156.612459425218,155.757769951134,156.083888945536,156.27069774933,156.21353022819,156.261258582449,156.230695203453,156.252260683482,156.231466164533,156.232797870091,156.212107166113,156.193542217089,156.169214908633,156.134954244477,156.113067917285,156.074204859258,156.069189427003,156.038195215101,156.063038290778,156.042751261339,156.099137578172,156.078793214559,156.158322561808,156.122400284504,156.215853904638,156.15520350948,156.257919912706,156.173227383919,156.283348763986,156.184232248285,156.320665706396,156.083891133288,156.241411738127,156.321756504975,156.275709604768,156.290744730719,156.241364083495,156.215942535421,156.151507094502,156.090792826514,156.008399409885,155.923118258725,155.835230536095,155.749805288062,155.684667672816,155.63183392624,155.619832059079,155.621335167808,155.673357293381,155.72248761879,155.821532997579,155.887405204689,156.002993111042,156.05220475913,156.160865999665,156.174623574175,156.267397817522,156.243321932265,156.319293438616,156.254823739211,156.319401326207,156.241411014595,156.223167013818,156.271140091842,156.23781752771,156.254659239238,156.22047162059,156.209604795057,156.166460880271,156.130024147094,156.073816424102,156.016556613199,155.952493972548,155.888061086387,155.834305836771,155.785556131556,155.766955597005,155.753403296965,155.783938853897,155.805240294289,155.877354560737,155.913292679986,156.006349581198,156.032303438753,156.127746444884,156.128751825081,156.216520676136,156.191312788651,156.265393236113,156.220329322712,156.28717274901,156.22316730235,156.231317777267,156.265838747103,156.231166496387,156.235642968122,156.195105479313,156.171640394018,156.116386518571,156.066609487579,155.994520636225,155.924184622332,155.843597458546,155.768937905786,155.70305950491,155.652326632403,155.632747294089,155.629915152533,155.671521935191,155.71211544326,155.799520502684,155.854853235056,155.95966074283,156.000879803526,156.101729456974,156.114624723473,156.201309261831,156.186391942864,156.254421384093,156.218848067225,156.274237270646,156.231317690914,156.222746077489,156.247596572669,156.218718701206,156.219581111813,156.181691982367,156.159041534379,156.103481239633,156.054832193634,155.977028134761,155.902389887997,155.806587285849,155.718046794678,155.629230515667,155.562692931338,155.527890960969,155.523914338222,155.569265988221,155.623688864813,155.724067472098,155.794890217288,155.909416883245,155.961275835088,156.065571784656,156.086316061699,156.172312573556,156.165335569504,156.232793697424,156.206015124739,156.255778995499,156.222746112026,156.218104896631,156.235879592295,156.207840445782,156.204301302292,156.162566158455,156.137287850337,156.072857050111,156.018969455213,155.923674811726,155.833339174199,155.704406153504,155.582920176739,155.448003578831,155.347923810027,155.28819330752,155.28965434258,155.357094664965,155.45333247352,155.593495992852,155.704730906136,155.845395470402,155.92087205122,156.034328143367,156.067330458017,156.153216163446,156.154183794107,156.217416758053,156.200043482787,156.242063591486,156.218104894024,156.212851497878,156.228170842743,156.200337961824,156.198160149466,156.152851054419,156.130883919606,156.057883110492,156.002253806043,155.88543922787,155.772802739902,155.590932428413,155.406352271645,155.181556583338,155.004428471857,154.889390038637,154.894431389855,155.008414424241,155.186757675174,155.405546362238,155.587518394419,155.772146167893,155.881015047555,156.007122171745,156.053310996415,156.138623059723,156.147261754329,156.20535119775,156.195691678694,156.231419102725,156.21285149942,156.208979695272,156.226921712043,156.195487784248,156.199759955062,156.148471242002,156.134925464075,156.052406177358,155.999021220324,155.857203413052,155.715303438763,155.454605173644,155.159410839737,154.769652738118,154.43423319756,154.20784354228,154.217349238757,154.433919252872,154.778446026096,155.151147262375,155.455000232048,155.708471491021,155.860119597482,155.999265394388,156.056407562487,156.13753711973,156.150890676645,156.201621370002,156.196752234254,156.226920888418,156.208979694061,156.207235348784,156.235231888348,156.196802792007,156.215626151137,156.15835211909,156.162953536608,156.075558964316,156.036556283425,155.876354564102,155.707902097158,155.344915396582,154.874624757478,154.201495817194,153.565727541824,153.125948909585,153.138699204487,153.558129665527,154.213281806946,154.859306904741,155.352014100521,155.695547567835,155.887796471279,156.030058153252,156.088100915138,156.157237973335,156.169025313722,156.209382733472,156.204506374466,156.230664489238,156.207235342095,156.208264873923,156.254885547913,156.205404042726,156.248217851598,156.186225498648,156.222155574762,156.140792634503,156.139300937497,155.98552442142,155.817331480561,155.352717368119,154.649903905171,153.551248535097,152.421980943204,151.623757679547,151.638457256957,152.406447092553,153.572205954855,154.639329852866,155.380309821568,155.809385002534,156.012483507587,156.128315959445,156.164903817141,156.207716634417,156.207333323925,156.232878360185,156.221052701,156.245118220749,156.208264864002,156.213136004536,156.288187304029,156.223809208993,156.301471643835,156.238194028871,156.322303515211,156.265580470303,156.33835935117,156.241890324454,156.142190879082,155.635425164912,154.706656933971,153.09335851461,151.304704334412,150.009760491952,150.023955890425,151.277116098738,153.126294426639,154.712320697878,155.695816121799,156.147066184135,156.288552944756,156.322755643602,156.301577272319,156.297383975906,156.270212275498,156.275581419879,156.24800141204,156.272526999005,156.213135990357,156.222236943107,156.335750866826,156.252812451431,156.376074569241,156.316019265394,156.465993768527,156.456738515257,156.648564409673,156.680942074057,156.759106233257,156.347848223778,155.323806874841,153.273286172148,150.829789257269,149.007580008572,149.017750274508,150.777895093507,153.304980520787,155.338858580046,156.436023795099,156.773176325916,156.744583126321,156.626111577743,156.503685844614,156.429454898774,156.359011743695,156.339069863315,156.285750356471,156.313984956745,156.222236923675,156.236029975866,156.397092353203,156.292315585823,156.470064651318,156.416951411501,156.646356190675,156.702795502813,157.049126413433,157.272549869017,157.634790096632,157.486049702926,156.597022134242,154.383462687917,151.545840332738,149.350351977366,149.354689969728,151.455432530653,154.385800105578,156.585686816578,157.569491496149,157.636300588942,157.340865914427,157.014897654508,156.758400268684,156.597949617421,156.47033243836,156.42245203434,156.333555851227,156.369807551906,156.236029955133,156.253826835553,156.469660716989,156.340007610592,156.577361643919,156.531706443629,156.84424849404,156.968643304802,157.472115409304,157.893178630702,158.561387163092,158.747764725619,158.168102927519,156.100587352039,153.258546718348,150.970943703204,150.978152010851,153.140404179524,156.06719946465,158.09614707839,158.787340893615,158.523933548923,157.952240507319,157.42232326344,157.030674987777,156.785065632725,156.594138674242,156.520488249907,156.388120335186,156.437683560771,156.25382680769,156.275223646958,156.549540179918,156.392388278801,156.689225032632,156.646768046562,157.032979020085,157.205352739747,157.823172338859,158.366135633773,159.225142688577,159.622774645114,159.299053449089,157.466845918758,154.848104369543,152.680550660973,152.708171823127,154.741902523814,157.435838353287,159.181315724385,159.617996754223,159.143793589377,158.411874605284,157.759184542708,157.273085434517,156.966189550903,156.716977540969,156.626250105857,156.445698920554,156.5151152381,156.275223635319,156.298025209066,156.631336398431,156.444427435348,156.795375319292,156.747483343167,157.186571329169,157.369489587788,158.026469865678,158.558584789516,159.400135374263,159.737137326137,159.404552329621,157.628035777599,155.176488782615,153.169153711524,153.23316999864,155.1330410496,157.654345527123,159.291240774205,159.725291719313,159.295811078144,158.598563049447,157.952006030002,157.440658755504,157.114035147033,156.821702530037,156.728580716906,156.499592076715,156.595767193981,156.298025174695,156.321732950321,156.709700752843,156.491747400071,156.886773404507,156.822340832917,157.287805752665,157.439447356394,158.058830806567,158.454579917379,159.09219401974,159.129341020477,158.541520252923,156.643544558503,154.27332256167,152.404237427689,152.502076474616,154.304176534556,156.750963336033,158.472735913419,159.145274807637,158.989563099414,158.499986737334,157.980084811093,157.51337186578,157.213740280896,156.898399067157,156.820988970393,156.54659247069,156.676480136662,156.321732930641,156.342978170108,156.779124084128,156.529808771486,156.956502477468,156.864883668335,157.331474146549,157.41886754439,157.949324027173,158.142446703947,158.498657248436,158.175016975194,157.312819481516,155.348370875529,153.139119984579,151.460490755666,151.565897616942,153.188625653534,155.48622763526,157.277452743647,158.222562535583,158.406448641843,158.192931154782,157.865271632564,157.488846740591,157.254664739574,156.935743395623,156.892276073247,156.579332765411,156.74840849319,156.342978130531,156.362633326663,156.83591448313,156.556518854855,157.001174374827,156.874093691376,157.321701495478,157.326804390338,157.748494310441,157.738883745789,157.845704262827,157.258979188381,156.276005555424,154.439553728521,152.566593364417,151.174154133126,151.259117115234,152.58170905491,154.561281054156,156.250826518341,157.3286921695,157.77083578954,157.799629367943,157.669208765972,157.396735347588,157.250545861256,156.941055054422,156.9455064971,156.600599811852,156.812088966397,156.362633314862,156.376766997263,156.877120610821,156.570358288573,157.020783493165,156.854380547686,157.270639727414,157.191299492521,157.508389143501,157.33619824879,157.273263057375,156.562508995936,155.622855508791,154.063655397058,152.618457934108,151.550520387181,151.609343276511,152.585302022252,154.144848184154,155.583800434683,156.630499054016,157.202750015063,157.391947455711,157.426657155231,157.248333982946,157.198743380503,156.906761717424,156.969773628178,156.602599433057,156.857671319626,156.376766956228,156.388037132263,156.901926789398,156.571553075568,157.016378304278,156.810030671676,157.187174513438,157.031407072201,157.259798060841,156.975974268335,156.820784466939,156.091667546499,155.283035843993,154.036067453473,152.989194437812,152.210877208941,152.256193958418,152.936294627828,154.097892834146,155.246629020384,156.16849269135,156.773626817646,157.044210292901,157.200885894594,157.093123649309,157.134817979842,156.859140063421,156.981812589049,156.59721512189,156.892049757603,156.388037126159,156.393765881727,156.911351356257,156.563181315914,156.994757060061,156.754051628469,157.091205915907,156.874195447161,157.032551604212,156.681252676837,156.486113571417,155.793542684791,155.129673628788,154.14965982385,153.404522802598,152.839671375957,152.874453921677,153.337592387978,154.181116776863,155.072053314458,155.839767858327,156.424720277445,156.720565730956,156.964365159612,156.906296332211,157.034539235443,156.777492532232,156.963704594652,156.572636560411,156.906112965123,156.393765862519,156.393988633579,156.905031733339,156.542415318228,156.951996276797,156.679727751909,156.97546902267,156.71413430652,156.820166428414,156.43682072005,156.234906368301,155.6060141355,155.074678981635,154.307229959846,153.778620196651,153.369726712362,153.405402896343,153.734553166841,154.355060729763,155.053427176517,155.678031971305,156.222538559853,156.505221532658,156.802734936317,156.765783678194,156.960401076242,156.7103465141,156.946609409913,156.548867658116,156.907865993468,156.393988561302,156.39707760999,156.89129015101,156.525255079,156.913521685277,156.623186657296,156.877894347796,156.586599086748,156.650314324701,156.254072350448,156.0520452487,155.483521808661,155.046153239157,154.425438913307,154.02737165185,153.711742498155,153.731948155884,153.967022655017,154.421605046916,154.978349310534,155.479797238063,155.987569481713,156.247018346665,156.593220952112,156.575073600475,156.840915946063,156.607531325335,156.902657487465,156.511501639903,156.901952176549,156.397077721606,156.379073107065,156.860230285173,156.480751308919,156.83383644032,156.531452216668,156.749902094193,156.444993805769,156.480411009715,156.097465261009,155.912548189345,155.420222885417,155.073323223565,154.586019707826,154.297972342977,154.072675875971,154.100652622236,154.295557664199,154.642484922579,155.104280502439,155.498249069845,155.961157744771,156.16805771262,156.526016377719,156.48863102024,156.787330616185,156.544754407711,156.865904267841,156.474411770129,156.865860705323,156.379072728143,156.39883358197,156.850583559655,156.499114027438,156.819995310865,156.510973849103,156.68579491696,156.371467606064,156.362019291263,155.979971880511,155.776049793987,155.315517174616,154.989072364763,154.558301335399,154.294712228371,154.095371609836,154.088089453358,154.241537794626,154.498452064492,154.907490057998,155.233002814627,155.700003687614,155.894653300328,156.31137782146,156.294567562372,156.6677022946,156.449451181848,156.829919012533,156.453790909335,156.879977253169,156.398834270875,156.329208066306,156.772783263079,156.386590825763,156.694142435791,156.395329716868,156.536337401966,156.24823307264,156.22919635047,155.901122224934,155.735598029728,155.371434755975,155.131245771926,154.821184062547,154.645676078229,154.530764671316,154.54446992813,154.69775198888,154.889874861919,155.237948244767,155.461695082151,155.865808468503,155.970985765682,156.352342235619,156.274874893628,156.635721901254,156.386358191402,156.75784308486,156.384383298279,156.774701295529,156.329206396552,156.391021948558,156.887535580868,156.549633271471,156.761147941979,156.492370292572,156.536665026924,156.236866486063,156.109426854985,155.736688181055,155.457414665829,155.035843779782,154.689971152707,154.331438008796,154.06887472587,153.929399443808,153.88178601528,154.049444502,154.219767540579,154.63879541737,154.890777676641,155.418189079767,155.586621390467,156.107451126751,156.098668949723,156.573162572346,156.378804418347,156.816823888182,156.474410365849,156.907610761446,156.391025315713,155.757705439824,156.626375467985,156.391258426224,156.493157971283,156.352022318509,156.355405556485,156.198889777909,156.112486224782,155.916265692223,155.755190750952,155.536106469752,155.350494969049,155.170079776848,155.040424832454,154.977748226958,154.96865493257,155.062612212754,155.169610467816,155.38592365662,155.535328116981,155.79936556211,155.905224475145,156.159486362899,156.173582142014,156.400215423165,156.318749558274,156.524908758614,156.36858689413,156.612268668381,155.757712640533,189.18720586409,189.958250133109,189.708106537016,189.828742332966,189.655101606054,189.658913303349,189.464868264345,189.357743117395,189.114204364646,188.914556246771,188.642445130488,188.412315424642,188.1881531067,188.026949351897,187.948739505449,187.936689064977,188.052920172469,188.184774290033,188.453272228207,188.63799146296,188.966147720391,189.097361489699,189.413710090746,189.431378960337,189.713189305653,189.612652241346,189.868062944588,189.678716131144,189.944302570955,189.187196192276,189.310171259395,189.573500326726,189.487025258004,189.55378786236,189.505690017341,189.534522058919,189.49800857983,189.497684635798,189.460426152337,189.43266767166,189.391411699182,189.343857240578,189.308843104897,189.258095678302,189.249852041836,189.213000774051,189.248407688898,189.228068340785,189.307615173333,189.287579657286,189.398184220202,189.35631056096,189.484463327293,189.407823570725,189.546771432806,189.436397030799,189.581895803979,189.459814793185,189.594228773395,189.310173450256,189.51255273618,189.617283486186,189.556974688766,189.580099122395,189.516395361398,189.489674206447,189.408295676879,189.338074433133,189.235404986494,189.134556154043,189.025535954166,188.923395574958,188.842166257385,188.77823914055,188.761853627892,188.762666275172,188.824965271003,188.882822969074,189.003896175968,189.081626799691,189.224755906066,189.281725596663,189.41812685701,189.431280647604,189.54936699149,189.516196379576,189.612455753037,189.53484017432,189.620495998833,189.512552052438,189.496260230137,189.561526831064,189.514292888755,189.539693817054,189.491323236131,189.48114399649,189.421601959035,189.378715674114,189.303403002334,189.234202077542,189.150359872973,189.072333604592,189.003104951929,188.944735938391,188.920990689673,188.906080944608,188.944832223557,188.972446383302,189.064007406725,189.108747153721,189.227269733814,189.258446185844,189.380588710112,189.379640660802,189.492449584317,189.458142340368,189.553387688703,189.492266280067,189.580849836536,189.496260504257,189.504557087407,189.553261389659,189.504973519252,189.516998312014,189.461760207716,189.439164495338,189.366571393904,189.311304616423,189.219082785663,189.138176118528,189.036691179478,188.94973937008,188.867128541381,188.80797085859,188.782274978423,188.779562290479,188.828859431743,188.877317868963,188.983474126727,189.048828509462,189.177815237015,189.225357097337,189.351102946386,189.36357046228,189.4731466769,189.451019636556,189.538934907396,189.490297471287,189.563284576563,189.504557011087,189.494870939991,189.533120473782,189.490281459562,189.499318651956,189.445869546313,189.425775361308,189.351787955539,189.299722037005,189.200324438211,189.116611181847,188.997453087393,188.896617637853,188.787601063861,188.711943390817,188.668621611579,188.665713552183,188.718892814133,188.783648304197,188.903736980616,188.986611501124,189.125337205707,189.184577963953,189.312767312141,189.333889578406,189.441420725196,189.428197719593,189.514448351654,189.476214567005,189.542399953689,189.494870971747,189.489176663751,189.520615528598,189.47764732431,189.483860137721,189.425087725279,189.404890788685,189.320403924323,189.265711446281,189.146543340131,189.048243127313,188.891502507188,188.755507537322,188.593371013403,188.480574413302,188.407781194432,188.411708082093,188.489124856686,188.60178589874,188.765717620867,188.89399957093,189.060279230423,189.145387564763,189.28171406324,189.316038052697,189.421636994107,189.417240082322,189.497530772517,189.46992931859,189.52701010579,189.489176661489,189.48314121956,189.514038270058,189.46935599336,189.480157644829,189.415808366671,189.402991114405,189.30813115343,189.255541725216,189.1121709002,188.99250394584,188.775765746493,188.57033795679,188.304480577465,188.104130337194,187.966598430582,187.975570004674,188.106177538357,188.314037092437,188.566968374121,188.775484505125,188.989352209117,189.110879245194,189.258735654451,189.30662800949,189.409337300659,189.412745942036,189.48599910132,189.466371377372,189.516461661875,189.483141218784,189.478875332935,189.516167034561,189.464863057865,189.487228857682,189.414460630982,189.416101681565,189.310271023254,189.265830091082,189.095358597815,188.947906670916,188.642246426135,188.312659298462,187.854840007479,187.470550949772,187.201397893651,187.216301951575,187.46668580583,187.869266824473,188.299481445845,188.64715549906,188.936214039943,189.103532215891,189.26211354575,189.319865887707,189.414913215656,189.42193639524,189.485502581606,189.469716697597,189.514134484109,189.478875328113,189.477364955324,189.530713981533,189.468198970793,189.5125041629,189.43117774989,189.45963291406,189.348824622085,189.328213937962,189.139935774801,188.969853953177,188.548907916024,188.018465900142,187.225211364352,186.483306829121,185.957384546022,185.976754565217,186.470099724113,187.244019772571,187.996408443274,188.562919978226,188.950925462282,189.159461046485,189.315508661102,189.369871999946,189.447400478886,189.449742365867,189.50007639572,189.481632558365,189.522715236367,189.477364943265,189.479412015487,189.559838017406,189.480872619039,189.559062360787,189.47071987903,189.542445163764,189.44027744526,189.472267374065,189.297150876799,189.137507179022,188.600858539971,187.794113890742,186.481132321953,185.131874324566,184.161933178503,184.183984401079,185.108112032932,186.511170075727,187.776988343727,188.640090420751,189.122992390445,189.336064542592,189.453080802173,189.476133069052,189.518588444529,189.502776720624,189.534720191845,189.504554869698,189.545124256497,189.479411998388,189.486278261279,189.606107294612,189.505774023919,189.631256388882,189.540019865284,189.675558569718,189.604687023857,189.733820885378,189.633120470726,189.56391203475,188.974850557634,187.878582664567,185.901856935936,183.701807059644,182.090738155898,182.112315254753,183.66210827933,185.945944737472,187.879948123722,189.053818054677,189.563911875063,189.69634493138,189.708141732268,189.655650074543,189.638166368663,189.586032827056,189.593450510986,189.54031369976,189.583957034201,189.486278238237,189.498429277572,189.670052259267,189.54378580534,189.729569848431,189.640828676031,189.861303297666,189.849037283648,190.128480339378,190.186502179571,190.333285656461,189.840976447923,188.576088901445,185.969563075283,182.857005587266,180.522576854139,180.539560587196,182.786849074835,186.011791498787,188.587591874339,189.95342623915,190.34343681788,190.270575675999,190.093764409746,189.913764563576,189.809204087701,189.700619980529,189.677841237673,189.589210332639,189.640340707426,189.49842924781,189.516360150005,189.750753825357,189.594579920227,189.851087655273,189.769188540894,190.090224339931,190.157733740574,190.628222251158,190.916331869144,191.398804115636,191.186740724058,189.996531720977,187.038444945126,183.270657436357,180.361130422013,180.371775003276,183.153970667231,187.045760092292,189.975343400185,191.293485200294,191.393072401208,191.006337061634,190.578813303057,190.233264737191,190.023431241525,189.841776013667,189.78635613499,189.650109648107,189.714356352437,189.516360117777,189.539190227521,189.844771465483,189.655152518434,189.987921025195,189.913250786172,190.338079108842,190.48673653726,191.148527917602,191.670594634728,192.509324594225,192.659611778375,191.752392656752,188.819122775833,184.872767723452,181.73269494895,181.747797565323,184.723620615718,188.784655268601,191.657669419862,192.71348248697,192.456015953241,191.749524787179,191.080103809013,190.570115776433,190.258244311024,189.996696347885,189.912153701148,189.718785889664,189.802881371529,189.539190187556,189.566328871675,189.947009884666,189.721031742753,190.128983545852,190.056105924861,190.571702986715,190.775766326489,191.574030087804,192.235515495618,193.291336935647,193.668273797439,193.023295352953,190.304821693273,186.552680285607,183.506161502851,183.546906474174,186.419640398261,190.274596630315,192.873189553478,193.668488464451,193.18458007891,192.298143414597,191.488408313266,190.865769223695,190.482958046535,190.148509341493,190.046320533118,189.790461516379,189.902497527811,189.566328853913,189.595067308171,190.050602584611,189.785941224328,190.261452257201,190.179676034628,190.759223592063,190.971978125685,191.81311855172,192.452061301721,193.477145900178,193.775819374014,193.136564437057,190.532433185213,187.047413900964,184.241558726292,184.326050763445,186.990276596888,190.571175317699,192.991689358474,193.76712154195,193.342395964588,192.507230354391,191.715010962233,191.065541919628,190.664124467276,190.276156333634,190.174970641014,189.856883341805,190.005229175542,189.595067262017,189.624682263698,190.148847519319,189.844437057706,190.374169474429,190.269940808561,190.879855358094,191.049775299925,191.839084629338,192.303423437246,193.075608193682,193.023253747197,192.131607748416,189.498653753052,186.262248969613,183.731536972239,183.85599108383,186.293957019979,189.634386969234,192.041032441494,193.047898033802,192.943286097527,192.364485374004,191.736234780633,191.145730193713,190.783724474926,190.367532596793,190.289916693035,189.91404056676,190.106898851437,189.624682233204,189.65109817323,190.234877775033,189.890974678167,190.458720186649,190.319253700752,190.927762132977,191.01475224686,191.689252586723,191.899615387671,192.326362045048,191.852263830713,190.68605278559,188.088217398154,185.191221801264,182.995556498906,183.128534524905,185.246499264956,188.261559742065,190.637738698966,191.915355810329,192.207864673509,191.966191133444,191.580932187652,191.104837374828,190.829454802087,190.409273259488,190.377588000931,189.953088753717,190.196676579116,189.651098124083,189.675262739783,190.304219769888,189.923034966133,190.511129794197,190.326758149652,190.90867958889,190.891464909446,191.427223237791,191.385279769481,191.505741860516,190.724158518046,189.451297196143,187.086412979307,184.691214366717,182.910543853402,183.018430653881,184.706125463612,187.240226753148,189.416892650808,190.814036601373,191.409735974299,191.463366331043,191.325866726169,190.980070896839,190.818468109598,190.410531818965,190.441613324416,189.977405760065,190.274988505774,189.675262720775,189.692493794412,190.35323768325,189.938867015576,190.531592679184,190.298234125625,190.838057119063,190.715125726813,191.117935911963,190.874742873601,190.786463756741,189.862397563121,188.664857146119,186.679865839152,184.853360422484,183.502145729923,183.577499741902,184.810152834445,186.783353758405,188.614637157098,189.949535971175,190.697397570836,190.945918707128,191.015346685986,190.786812615595,190.748607249419,190.362927230557,190.469134925202,189.977844793508,190.330027306486,189.692493746935,189.705959507614,190.381155029254,189.938902830555,190.521704180661,190.239420546714,190.727491272612,190.509924371479,190.800035016601,190.419766296201,190.217997195453,189.278287060854,188.252958353054,186.67109165145,185.3529334228,184.371279990288,184.429001887555,185.28564542248,186.749015966946,188.206201899696,189.374453105089,190.158317464577,190.504468934074,190.726470740834,190.585467531041,190.663121169292,190.298466663168,190.480385376952,189.968826527243,190.370052661749,189.705959500864,189.712453329422,190.389166701545,189.926970057203,190.48988409816,190.166303168658,190.601418078706,190.30902841475,190.509997104207,190.048303481957,189.797603910804,188.908733471716,188.067913462796,186.825490352813,185.887286028233,185.175229417951,185.219155115499,185.803763340213,186.86536489253,187.996643227037,188.966808385385,189.722595577744,190.097029643644,190.427380775643,190.347553566194,190.533816997294,190.193073154138,190.454197071127,189.936438993331,190.384221304698,189.712453305934,189.712256369038,190.377154579475,189.899962840237,190.431902537099,190.071532863504,190.451931292241,190.106527101727,190.240489357667,189.741862833626,189.483013247556,188.677753909949,188.004063331559,187.030651913064,186.363478238918,185.847544843539,185.891410813159,186.308244204367,187.088454668811,187.977069733416,188.764689074182,189.467864987855,189.823457306176,190.220242279609,190.166574156797,190.435756141643,190.105256754769,190.428210377036,189.90494488576,190.382428298799,189.712256304683,189.714968703462,190.355124008512,189.877013780674,190.378080614862,189.99817462652,190.324448904153,189.944728539348,190.024422528198,189.513385829358,189.254949649857,188.529398518675,187.974809515407,187.188441368832,186.685512826873,186.288178423416,186.312583827713,186.612303603682,187.183543030991,187.893700005975,188.52449349163,189.179249400628,189.503351608252,189.958663551415,189.927759431369,190.283751005332,189.975333203784,190.368984925345,189.857083783487,190.3698691931,189.714968808234,189.693004443915,190.311188922481,189.821919798355,190.27515229667,189.88387472049,190.161527539314,189.768362597379,189.810946973613,189.319823503059,189.082401413606,188.455012027154,188.013568707939,187.395755606105,187.02971235781,186.745552814488,186.778173289323,187.02681590526,187.461540488602,188.051349947001,188.546027594516,189.142863314537,189.40085129661,189.869285195673,189.815857093112,190.211158713528,189.894532879549,190.318076783097,189.810150157745,190.320741859939,189.693004088892,189.715133466518,190.291870803451,189.840008628318,190.249264637311,189.85526840332,190.075507229529,189.675213497211,189.661559755872,189.176544369304,188.917480982606,188.335173921721,187.922599090075,187.380184018891,187.047593174545,186.798674511925,186.788390023647,186.985136044783,187.30625827936,187.826912472696,188.233310293881,188.829827944682,189.070019919209,189.605653440627,189.577427689569,190.059395813314,189.775388611419,190.26646170937,189.782687026478,190.329209331039,189.715134135821,189.632002553978,190.194920851978,189.709170187281,190.088736421566,189.7141553266,189.888604602483,189.524676920612,189.497203035806,189.082021820181,188.869769721131,188.409105026923,188.102992461727,187.711258962048,187.48694495234,187.342223631932,187.356446464002,187.551248444563,187.790705772351,188.233478327174,188.513693444714,189.02982492505,189.161173030361,189.650145829245,189.5509873151,190.013847142914,189.697302029603,190.172020967034,189.698520597275,190.195022685084,189.632000938346,189.687874838072,190.286424960643,189.905898381693,190.159860868674,189.827221606219,189.881998188959,189.509607124743,189.35166177924,188.888999502427,188.542969569533,188.02024887508,187.591922453198,187.147911149753,186.822946245023,186.650833008452,186.591944601689,186.800586274365,187.011127526801,187.531414633873,187.842505199479,188.497474755764,188.704555063608,189.351827438678,189.338968190747,189.929146314993,189.68610871746,190.231228682408,189.803746347472,190.347232994147,189.687878243594,189.18716552196,189.958161498422,189.70801219595,189.828651213452,189.655005206797,189.658816742993,189.464765379493,189.35763689968,189.1140903498,188.914436370952,188.642380989689,188.412180572257,188.188011521663,188.026803203713,187.948591029147,187.936540146795,188.052774681222,188.184632331445,188.453138374008,188.637862698501,188.966088453003,189.097246679873,189.413605433897,189.431274899627,189.713094329527,189.612554476269,189.867973057814,189.678620752673,189.944213753872,189.187168389135,200.330102735679,201.076596215235,200.818143740906,200.947096066422,200.759144704605,200.763583137117,200.55289777809,200.437311941017,200.173049135539,199.95722766305,199.662177607261,199.413147152402,199.170110659373,198.995371810156,198.910476842117,198.896788648879,199.02269059875,199.164519485253,199.455846530966,199.65485013066,200.011475260446,200.152541221937,200.496831084359,200.514961038649,200.821942363237,200.712037310491,200.990091764161,200.784784867158,201.064967486979,200.330100127262,200.386668343534,200.675685070049,200.578629603888,200.652655781815,200.597539741648,200.629286786143,200.586468401392,200.585617935646,200.541770465419,200.510616933316,200.462720020682,200.410271743296,200.370194345009,200.315178438178,200.30576710377,200.266994096264,200.306526073735,200.286429296308,200.374829807153,200.355059398594,200.477422002498,200.433337819156,200.574553999959,200.491842024835,200.644422402712,200.52424975742,200.683281840617,200.551394050507,200.687987839933,200.386669395009,200.601023356374,200.715071877087,200.650184620366,200.676067029672,200.608147150113,200.581338700609,200.495053170175,200.422300704047,200.313754435,200.208490337012,200.09326187562,199.98618612713,199.90009666863,199.832685616755,199.814790506469,199.815057136551,199.880201619494,199.940285239882,200.067834290712,200.148771529212,200.300207234741,200.359200460156,200.504134472762,200.516809620188,200.642832764239,200.606578814795,200.709476293533,200.627624662491,200.719231027705,200.601023073477,200.588155288563,200.658810449301,200.60703303374,200.635054105319,200.581854646455,200.571592938776,200.506356065879,200.460939039711,200.378967794024,200.305424176537,200.214761786537,200.131998647467,200.05757085686,199.996038505617,199.970743856312,199.955648740809,199.997418688084,200.027525338925,200.125832750676,200.173909470381,200.301068254959,200.33433841524,200.465372780455,200.464052423796,200.585070157045,200.54791151163,200.649906128021,200.58375098146,200.679462368119,200.588155395525,200.595953887066,200.648872602187,200.59645810091,200.610939883046,200.551119361981,200.528902472354,200.450890690997,200.39397907811,200.295449275057,200.211259480414,200.103199313446,200.012373887398,199.924454288572,199.862576272735,199.834843937115,199.832033898647,199.883595507179,199.934395361107,200.046338329894,200.114791020696,200.251362269981,200.300919852907,200.434545118274,200.446934074427,200.56379010551,200.539453810295,200.633678920037,200.58088012868,200.65945075569,200.595953856922,200.586318500369,200.62833373427,200.581137890708,200.592717210554,200.534232233318,200.514862811323,200.434898732143,200.381632643232,200.275283378467,200.188624064809,200.062067136957,199.957395226132,199.842118112918,199.763717918237,199.717835831176,199.715333204481,199.770999961809,199.83899893675,199.965290378046,200.051975231763,200.198375476297,200.260004859577,200.395816788635,200.41711566413,200.531520959693,200.51633025187,200.608569462044,200.566677488194,200.638010846269,200.586318510676,200.580358711728,200.615455461733,200.567970440416,200.57726084913,200.513109668295,200.494543862874,200.403726850763,200.348812426101,200.222169976423,200.121466713066,199.956157696996,199.815861379923,199.645499654718,199.529005212895,199.452292490932,199.45695842191,199.537290942423,199.654767583842,199.825831665693,199.95918280906,200.13334337506,200.22136388537,200.3648731139,200.399586569257,200.511448176659,200.505344173985,200.591070264115,200.56021281553,200.621965624216,200.580358711977,200.574351296509,200.609176725226,200.559448398976,200.574285856809,200.503927608571,200.493994147231,200.39225037801,200.34065961879,200.18904224068,200.067378704896,199.840075583088,199.628678410243,199.350689883221,199.14377975828,198.999679789722,199.00988432376,199.14528054516,199.361691333643,199.624644156737,199.84090526653,200.063594965562,200.188842289451,200.343451325749,200.391784639173,200.49999170109,200.501689745758,200.579769061631,200.556955532447,200.611432785729,200.57435129742,200.570298029068,200.612298761794,200.555157048378,200.583142445874,200.503668407678,200.510118909352,200.397025532746,200.3554993693,200.176232431547,200.027391274391,199.708254719514,199.368851377696,198.891006858112,198.492710960367,198.211029814597,198.227586556164,198.487710200707,198.907147395645,199.354130910287,199.714548675858,200.014174905572,200.186010791346,200.35053928878,200.408328283959,200.507750817014,200.512683909847,200.580325447964,200.561061289875,200.609728263724,200.570298029162,200.569294042415,200.628724161471,200.559219058397,200.611413043718,200.522627521262,200.558616170373,200.440561650855,200.425854365171,200.22900796168,200.058823159151,199.620438564101,199.072341912109,198.243128371752,197.469718980271,196.917981582005,196.939341989593,197.45463803398,198.263964394381,199.048065597937,199.636526127486,200.037814187362,200.251032456823,200.411238203484,200.46425588208,200.544396635314,200.54363623518,200.597115563433,200.574372245807,200.619777497819,200.569294039744,200.572187242081,200.66075954577,200.57331838287,200.66245843827,200.566009909197,200.649030849234,200.540484712282,200.583112383391,200.401484367166,200.244746001329,199.685802616301,198.846936928377,197.467397118262,196.0498521348,195.026540354272,195.050748996937,196.023240302204,197.49990036913,198.827410584992,199.728417385204,200.228024267007,200.444039140595,200.561352609612,200.579970913613,200.622268593254,200.601444318275,200.635363621677,200.59942009877,200.644634754528,200.572187237102,200.580278860878,200.711051704332,200.600437550934,200.740732831812,200.640969263863,200.792735299601,200.717626646832,200.864559361011,200.762532583213,200.702534814256,200.086432885753,198.935165895289,196.840534052632,194.507168840686,192.794126450995,192.817919760754,194.463509786654,196.887852160685,198.934820922349,200.170955041593,200.70083713516,200.830854857024,200.835731489042,200.773239795266,200.751496471037,200.691314542429,200.699274562065,200.638116258174,200.687016999439,200.580278853109,200.594035451419,200.780127912829,200.641504928526,200.846690329167,200.749300683122,200.992051244483,200.979145637454,201.286245360654,201.352137302259,201.519259007222,200.997705869403,199.64925129511,196.855232119081,193.518132527806,191.013307524781,191.032568664035,193.442664903255,196.901222097567,199.659789104843,201.117856844554,201.528185300182,201.442627904671,201.247733596318,201.049419308477,200.935142065421,200.814297895353,200.790428019151,200.690733936256,200.748071657192,200.594035439699,200.613932537937,200.866945279825,200.696114870979,200.97711905069,200.886675298609,201.236743069673,201.308242195054,201.818095001584,202.126471583967,202.645043029381,202.406968346414,201.108233857794,197.892613295493,193.805269644513,190.653056589486,190.665994345758,193.681260360133,197.902730354523,201.08486698601,202.521722856457,202.637386754022,202.223465662353,201.76404211326,201.390018410191,201.164260046197,200.965227384377,200.907100362068,200.756022137412,200.827822504851,200.6139325244,200.638974589188,200.967791011779,200.761042071004,201.123564851776,201.040442502981,201.500977385768,201.658110833832,202.370500574579,202.924984604606,203.816351693487,203.949186795009,202.922910277694,199.688359208557,195.359764636831,191.927557268047,191.945321662441,195.201606038525,199.654690163571,202.822116055272,204.008486883507,203.758609605645,203.010421878742,202.296380101717,201.748186784442,201.414732817784,201.130418785551,201.041936486044,200.829450711035,200.922895301867,200.638974570216,200.668491660643,201.0772125171,200.831497225081,201.274188336682,201.192592815002,201.74949128467,201.964783780925,202.821265301356,203.52189395418,204.640543333718,205.007916173568,204.249815308907,201.228252444057,197.088717747673,193.743721976138,193.788467531178,196.947217011166,201.198394995088,204.089825333242,205.010107789971,204.526145713923,203.589989003034,202.728978885125,202.061768522119,201.653923773414,201.291912994475,201.185403192942,200.905918851227,201.029602808351,200.668491651837,200.699536330106,201.187860512695,200.9007873403,201.415331820356,201.323908084869,201.948436762711,202.172201699288,203.073277707607,203.748776624411,204.834472738434,205.122115842737,204.381697808534,201.504345412701,197.675877308285,194.604816451995,194.695285829301,197.613161522083,201.545589415891,204.226002676,205.113947719755,204.690049103575,203.808636126188,202.967792665212,202.272753770253,201.846297468274,201.427328529622,201.322695331311,200.976637006108,201.139430877639,200.699536304962,200.731338029956,201.29261614894,200.963111547351,201.535134144684,201.419506731465,202.07577313962,202.253247259929,203.098185680604,203.587383619826,204.405475131576,204.328074783147,203.340995901188,200.472227027588,196.955137490175,194.209576537047,194.341883548851,196.985717916197,200.615325253585,203.24231243248,204.354635103662,204.263472899103,203.6531569584,202.987788077987,202.356092144252,201.972768722091,201.523851274687,201.445104086225,201.037352189918,201.247907813118,200.73133801283,200.759503534898,201.384136476478,201.01257865629,201.624666471977,201.471308768949,202.125382743911,202.214003267267,202.935743789624,203.154284642965,203.605939613433,203.086599194927,201.824666327278,199.024235897476,195.905524522737,193.543090726174,193.684753752623,195.962512703596,199.208497730051,201.771756228703,203.154055238479,203.478824146383,203.225656643543,202.819747759732,202.310323213096,202.020316314695,201.567317511698,201.538190958792,201.078662065589,201.343513684278,200.759503506626,200.785103748562,201.457713809209,201.04651673615,201.679740435897,201.478467583805,202.103466697326,202.080746155527,202.65380650262,202.603427566018,202.72930116775,201.886170523362,200.519517540742,197.98291159724,195.416885211626,193.509687264584,193.625201780836,195.432575944091,198.147576263179,200.482474103792,201.982409992452,202.626553149521,202.686876487121,202.545532360346,202.175225006234,202.007308399457,201.567570586905,201.605863017423,201.104200143811,201.426692601712,200.785103738506,200.803109481497,201.509439747232,201.06309442127,201.700606281435,201.447208592234,202.026572882339,201.89109909102,202.3217244563,202.056897669013,201.960349232894,200.9670757477,199.683926379354,197.558044747422,195.60422721821,194.159127119114,194.240025970581,195.558580998206,197.669249332527,199.630500933125,201.060300348553,201.865290831067,202.132749571291,202.212415849548,201.967260182347,201.931491837651,201.515731385554,201.63444249942,201.104240614286,201.484907235001,200.803109457705,200.816996931575,201.538548463472,201.06278215726,201.68900039296,201.383690024719,201.90712369232,201.670891006432,201.980754880623,201.570044801297,201.352433538891,200.343544113772,199.245151933088,197.551256082496,196.141121511919,195.091257597238,195.153052594658,196.069691473585,197.634751220073,199.195510173423,200.446116363405,201.288970822483,201.660092911063,201.902672643515,201.750921750686,201.839039559354,201.445995522221,201.645542554186,201.094187392994,201.526941415394,200.816996931676,200.823357948353,201.546308584425,201.049707615122,201.653944201039,201.304998906252,201.771228629756,201.455530698744,201.669831723286,201.172762457779,200.902936646856,199.949219792975,199.04824993254,197.717681645857,196.713467127153,195.951745475423,195.998530258639,196.624625878683,197.760143203638,198.972515712945,200.010869122114,200.823335116376,201.224189070501,201.582318713129,201.495855485788,201.699896119437,201.332710273705,201.61660634856,201.059228848618,201.541281942759,200.82335795124,200.822481738148,201.532512610923,201.020549244974,201.5909179155,201.203314046381,201.610474286797,201.238729473049,201.381126923381,200.845300472246,200.56680225293,199.703222426455,198.981052311425,197.938552117561,197.223978229554,196.672018590297,196.718524454748,197.165334678197,197.999827711956,198.952635079774,199.795413317707,200.551225300586,200.931580399625,201.360328361276,201.301842527317,201.594141842854,201.238327870459,201.587801053637,201.0252531712,201.538461593614,200.822481727222,200.824913917728,201.508086832204,200.9957485595,201.532307342867,201.12453964921,201.473309541984,201.065621174761,201.149771721361,200.601455998376,200.323479591349,199.545874498998,198.951236110955,198.109259824742,197.570368976228,197.145447568554,197.171067719414,197.492676495565,198.103528206311,198.865247711919,199.539981378309,200.243468362253,200.589877252947,201.080555021669,201.046481362851,201.43089957133,201.099193857957,201.523436707301,200.973870120069,201.523954605713,200.824914022872,200.800633492927,201.459652276681,200.936733072525,201.421328588148,201.002304897318,201.298472502383,200.877268852265,200.921550984149,200.395319073161,200.139910660069,199.46794625996,198.994463909806,198.333148176951,197.940672913284,197.636868033967,197.671152091238,197.937957396407,198.402616345302,199.035191412384,199.564159174723,200.205028623398,200.480724851759,200.98462001528,200.926826166091,201.352362358166,201.012654735346,201.467836648268,200.923538705391,201.470415202579,200.800633354048,200.824253502943,201.437912518182,200.955180732916,201.392041378041,200.971322826356,201.205695146686,200.777801179192,200.76207709823,200.243338881764,199.965303569676,199.342502230591,198.900546025533,198.320622305822,197.964449512083,197.698685921718,197.687310915202,197.898416436756,198.241452600501,198.79926335951,199.233472293702,199.87272250611,200.129155672684,200.703412577003,200.67276682266,201.189429075524,200.885330804697,201.411180812126,200.893868077539,201.477546416638,200.824253983762,200.735095008579,201.3330056088,200.817589802182,201.219516858479,200.820968916098,201.005890876697,200.61769270822,200.587135197392,200.143659050567,199.915778042139,199.423395173866,199.095314049527,198.676507607738,198.436004856442,198.281283372291,198.29596905153,198.504363552443,198.760127321756,199.233858406928,199.533566034102,200.085868565251,200.22678897377,200.749910441831,200.644733455507,201.139455335476,200.802223467836,201.30891658285,200.804354477051,201.333354042347,200.735094264337,200.793315048364,201.418383630997,201.023114907074,201.291832616871,200.938250535252,200.996853355499,200.600885338721,200.433465806143,199.941651217287,199.574324151591,199.018807429099,198.564002501072,198.092257264967,197.747278388915,197.564592383557,197.502286479374,197.724230968261,197.948002212288,198.501020803669,198.831293368266,199.52734001506,199.746790539566,200.434674488136,200.420255949765,201.047601844429,200.788558720025,201.368161034194,200.913162762586,201.49071275795,200.793317067246,200.330093287999,201.076577359211,200.818121890791,200.947075911664,200.759121812837,200.763560197322,200.552871573005,200.437284041329,200.173017227211,199.957192747731,199.662157995806,199.41310454613,199.170064618512,198.995323408313,198.9104272841,198.896738832121,199.022642597137,199.164473243335,199.45580452281,199.654810651458,200.011458193872,200.152508882171,200.496804074251,200.514934185943,200.82192031659,200.712013662377,200.990072319442,200.78476243669,201.064948654036,200.330093659551],"Archive1110_field6":[0,0.000688036160291466,-0.0148278762415554,0.0283045978490072,0.0125126962651284,0.0424773184980718,0.0411385134720455,0.0624226113344451,0.0683436620661559,0.0769404364319383,0.0816196508217317,0.0701283614773207,0.0676479436084317,0.0322009469673042,0.0265075657840103,-0.0272915131115445,-0.0209731498426643,-0.0819181220650293,-0.0472919226632602,-0.110175994148054,-0.0416488956252229,-0.11109432842451,-0.014215149861347,-0.0971444910210965,0.0181228763603209,-0.0802978556040438,0.0454411150845823,-0.0688661798456414,0.0543672196403715,0,-0.0166971118633337,-0.0361201730320232,0.0345242609056137,0.0104942145205246,0.0701731240199204,0.0549859278034305,0.106169128292693,0.095826125121085,0.134505112024046,0.117854656802677,0.135224425145648,0.102150820433627,0.093253875409993,0.043440504622395,0.0152817802031272,-0.0376851776468748,-0.0674648060014977,-0.103998819792101,-0.119852581254289,-0.128643871548885,-0.128427557759544,-0.111821406549009,-0.104848325849917,-0.072119169726535,-0.0692516256476835,-0.027292366192356,-0.0345555600854614,0.0251055268617735,0.0173212556396376,-0.0167573836526162,-0.00481584575091776,-0.00739663496913269,0.0100254402530967,0.00748923586367134,0.0318444849061755,0.0285256958130096,0.0541145906698488,0.0485045387093902,0.0716530901993328,0.059916716064894,0.0758698740247877,0.0537910618905201,0.0598078876326215,0.0263787867554605,0.0249285971659068,-0.0154945876519822,-0.0164827348799185,-0.0558188517372928,-0.0472289629835433,-0.0790067553408064,-0.0566801694602349,-0.0799579427086696,-0.0466248546814629,-0.064431685291496,-0.0268969132139983,-0.0412118778361728,-0.00785307997730017,-0.0176889273494394,0.0153132927142463,-0.00487639240723469,0.00411459560682784,-0.0113603947815235,0.0183312394995839,0.00653441967644085,0.0381146809736266,0.0261341508606085,0.0560502027181286,0.0410690140528067,0.0655251967954113,0.0444543181590119,0.0606140257580722,0.0323489235658738,0.0408520606231439,0.00767186909045213,0.0122423770295366,-0.02198595494293,-0.0168673400065414,-0.0480499207257982,-0.038122977954841,-0.0625757815323075,-0.0455568912125416,-0.0617384949071731,-0.0391420535292447,-0.047787045439837,-0.024226023868069,-0.0267842773864133,-0.00507900020200997,-0.00988300416656393,0.00500531763681435,0.00405414900655774,0.000748338879766774,-0.0130850132527853,0.0105741781839092,-0.00637496028400315,0.0212944682865213,0.00159223444211438,0.0281570262403071,0.00470685885649138,0.0273530235717344,0.000254641440544635,0.0194124911671843,-0.00806300804872955,0.0118513866849387,-0.011652517068121,0.0113683396622614,-0.00969145632864583,0.0123956583665748,-0.0113849615647908,0.00685923582092849,-0.0193883473644119,-0.00232570884652569,-0.0261954145948285,-0.00735676908277982,-0.0252429206597746,-0.00498222398001458,-0.0174261481160625,0.00309827020870521,-0.00744726883141973,0.0110113279351519,0.000687946202824866,0.00211563547522546,-0.0197598035746183,0.00718815617843866,-0.0196134212859013,0.00872886810278732,-0.0227029945655089,0.0020541779769466,-0.034572834933567,-0.0153699632892682,-0.0542488479727735,-0.0356346354531807,-0.066469452621089,-0.0360620588774932,-0.0475110345447756,-0.00113282315738117,-0.000944071458703422,0.0436694492710642,0.0340147078557644,0.0610403878685189,0.0362073661871687,0.0496709022260811,0.0203208305033151,0.0306689614907774,0.0062797495153419,0.0187241096126787,0.000899517306063362,0.0152696260432905,0.000923684060456674,0.016271604125379,0.00205556012412533,0.00122725152225891,-0.0305886174202485,-0.00157146836975668,-0.0413165782986435,-0.0132632584097334,-0.0601897299472577,-0.0395110111799774,-0.0940001140529288,-0.0822383952012065,-0.138393961025176,-0.124379512353901,-0.160735236162457,-0.116429412107395,-0.105877345100516,-0.019678109233388,0.0201456443245667,0.103206370157128,0.116380153674537,0.154558703614119,0.127257367098298,0.131948391099637,0.0896672038767754,0.0868881652736491,0.0498669763954901,0.0519556435678247,0.0246160385714497,0.0332047885117288,0.0110102330446839,0.0262724760938552,0.0011677254726181,0.00140250244825724,-0.0452549467057189,-0.0118396260264382,-0.0687073443921677,-0.0409718571814583,-0.108375395173304,-0.0952376706748171,-0.175505202865925,-0.179844668505846,-0.265595626061272,-0.268502943038967,-0.319932051606412,-0.261818074655599,-0.214289498550421,-0.0589845218259167,0.0568889297670918,0.208649693875962,0.261373784063393,0.311853445297212,0.274116522854232,0.257747886760608,0.191377212860013,0.166046283933903,0.109931774043973,0.096957900598952,0.0565507155263078,0.0575335527779772,0.0245688014223204,0.0398928772178317,0.0013438136934989,0.00118771282042649,-0.0645119037075392,-0.0257983639897999,-0.103877536074878,-0.0776523480534013,-0.171032613946762,-0.170890164782234,-0.28736696576985,-0.321844352441682,-0.457400271527482,-0.500953252171627,-0.588073736553145,-0.52129988783062,-0.412787066252111,-0.13457704691228,0.125892148247859,0.40272801534212,0.521799712133907,0.581125347407041,0.512195555667083,0.449884302369621,0.338286169927408,0.275315313180169,0.189544816255782,0.155579555544304,0.0968601358640291,0.0889562184626282,0.0411079580717063,0.0576026729847222,0.0011301743616174,0.00115214009358491,-0.0876565373830975,-0.0426256657533376,-0.145741621298465,-0.122596641599293,-0.247604363209103,-0.267495131422532,-0.433297094792246,-0.518408679963423,-0.735008510268992,-0.860117291678928,-1.02232099508879,-0.963164229653387,-0.759869701982887,-0.271100817040014,0.248339684403112,0.742316325958218,0.966014601292695,1.02031924381174,0.880120953169411,0.729278528952254,0.540015507222034,0.418465992686693,0.289890694865337,0.228152910204311,0.145423819875754,0.127323677376535,0.0606298965563267,0.0793734529569838,0.00109606957325163,0.00102323893994306,-0.114194643746882,-0.062119369582547,-0.193016036415281,-0.174448687909227,-0.335400025093524,-0.382015676402362,-0.609823772176734,-0.768551186264276,-1.1040485260554,-1.36506934124509,-1.65912640830593,-1.63635038754798,-1.2986792874906,-0.483354862352127,0.44679962494969,1.27532903356403,1.64365758781857,1.66386572593075,1.39400067354181,1.09911979177019,0.793478010300023,0.591118158310722,0.406794520095982,0.311805073448642,0.200065722029611,0.171348281346661,0.0821816034714357,0.104574959683066,0.000968939371077692,0.000891805824249978,-0.142600906345932,-0.0828715723368665,-0.242404452300466,-0.228839022321377,-0.426661563286494,-0.502730788639247,-0.798153101028252,-1.04435349755559,-1.52491801338626,-1.96491099369644,-2.44081736771749,-2.48526514167794,-1.98566525690851,-0.747508193286155,0.717433623894923,1.96743517290476,2.49580597889259,2.44384945998882,1.99331787561123,1.51423802001648,1.06801571980082,0.774108065555388,0.52833222316233,0.399327521199382,0.256307249490342,0.218314370807106,0.10425504468032,0.132166442581248,0.000839532150578186,0.000711938872809078,-0.170994890800461,-0.102940098634232,-0.289260437846049,-0.27893549001021,-0.508748749855307,-0.608237798995806,-0.959975967088207,-1.27901617703087,-1.88500458486178,-2.48538491959014,-3.1328498808768,-3.25114637306042,-2.60970104082281,-0.975268318518915,0.987907123900991,2.61347692474943,3.25864480019538,3.11565363110342,2.49568836846669,1.85902668285522,1.29653351904787,0.930169611918142,0.633739661292838,0.478957726287899,0.30727933429343,0.264016002991193,0.124622349324698,0.160354833153031,0.000661868278183896,0.0005238350314076,-0.196935729031221,-0.119821127701335,-0.327967034745578,-0.31635397427258,-0.566232561367819,-0.671513655136836,-1.04477497709839,-1.37893323694672,-2.01627174377389,-2.6512687178063,-3.34609644850844,-3.48946733109093,-2.80504743040093,-1.03008703092456,1.10209354015643,2.83674428426558,3.48744514014958,3.29760633431588,2.63368162113139,1.97192610949278,1.38998616751876,1.0116910800691,0.697176302993833,0.536166568068178,0.344655239469857,0.303266962027686,0.140647767317549,0.187026037934268,0.000476040085493503,0.000273131139413319,-0.218075441440054,-0.131093236301907,-0.353276204687547,-0.333610738858388,-0.585944910759682,-0.670625445337112,-1.01265576210307,-1.27131031321051,-1.78690075812217,-2.24220197554216,-2.75672715195835,-2.8137218052287,-2.24588321347758,-0.801252058066926,0.895711419267635,2.28622543898535,2.80531393119036,2.69445990114587,2.21269072380919,1.73551166882584,1.28115404455162,0.980792300825374,0.696938727877491,0.55795793973294,0.360715275862738,0.33086467840011,0.149755443643702,0.209647399088126,0.000227558132655504,2.40307496167997e-05,-0.232226948293945,-0.134894983541282,-0.36148383193981,-0.326495757275871,-0.562113388903444,-0.59993399372006,-0.859581347061201,-0.959400747271926,-1.2139414919142,-1.29589151380079,-1.41599007157254,-1.27022426334582,-0.961266762568001,-0.308108009018713,0.362761142522869,0.980354015307453,1.2669310756862,1.37253022618745,1.28394608606046,1.17422060186654,0.973955800804222,0.83193220213597,0.625572610543645,0.537626864137265,0.350655846626574,0.34288639408962,0.150084557900664,0.226218463491164,2.26534161014446e-06,-0.000399673825864479,-0.23819253001348,-0.130516749403181,-0.351468300595269,-0.295497452447985,-0.498540996512906,-0.473352520954364,-0.622464944731672,-0.531573178265543,-0.480910115997126,-0.144617556108969,0.17379355935448,0.535006716233884,0.532293973333199,0.257967421769197,-0.266275589566034,-0.542612308509427,-0.523281587402192,-0.184059450062143,0.159530243186949,0.459473568167871,0.550189746058553,0.599291159159573,0.495226872255204,0.478030941764026,0.314509527345413,0.33761201451069,0.140808351134497,0.234783188082774,-0.000441468255955302,-0.000736758665172863,-0.235233761410021,-0.118290425496315,-0.324527041541709,-0.245126726097127,-0.406212570646512,-0.316617678802454,-0.35775299183502,-0.106460063113193,0.179998156681629,0.804833675595185,1.3970734601405,1.85267620831672,1.59132425413759,0.655172805101586,-0.700772205209072,-1.61397766072953,-1.82986513636508,-1.38462555517618,-0.774992465322136,-0.190115638808045,0.122781190391754,0.33791852217403,0.331634373728554,0.390164769641584,0.25717718082333,0.316339303276858,0.122873787909577,0.235218170717686,-0.000777211404692155,-0.00156825461068579,-0.224228662395536,-0.0998972399148949,-0.284302745703472,-0.182706061257185,-0.299427278176582,-0.156457478018855,-0.114486259611134,0.231471487076091,0.627107428097393,1.33776573769048,1.96756002115107,2.36693811626105,1.95461230059748,0.783080566575895,-0.829519785842879,-1.97443177419257,-2.34397216830208,-1.94884273414808,-1.30670180619469,-0.631891236238329,-0.220014218707147,0.0988852815516067,0.163405632993613,0.288800998856438,0.186336105635772,0.281938375124996,0.0976821039073524,0.226915448226552,-0.00160784157015515,-0.00195607685792548,-0.205803245528329,-0.0771956247399976,-0.235136317776617,-0.115701337288462,-0.191232716269658,-0.0121296982674282,0.0807714234623145,0.455684786633415,0.851578175919772,1.49116491920669,1.99612350146642,2.2572998247412,1.79790748389096,0.71257860583747,-0.742604653262617,-1.81268905122871,-2.2428060718386,-1.98307069114633,-1.4679283544927,-0.852466418714391,-0.448290949587409,-0.0894177693686476,0.0121337689421125,0.188061877036917,0.111315749293765,0.239780067583498,0.0689025695414589,0.21247211435266,-0.00199528502637754,-0.00355234235702258,-0.1825559193646,-0.053105595966842,-0.182311312197046,-0.0513329287501953,-0.0922190149056109,0.104895721644332,0.221018632347559,0.57875664847009,0.916690036619686,1.41916433681088,1.7519731754407,1.8743682119217,1.43694969450335,0.566984853739786,-0.578533253370091,-1.4450441846765,-1.86840613592659,-1.74532632751224,-1.40516199243671,-0.912659653078951,-0.575157679469467,-0.221181938052733,-0.11162575128084,0.0965368303137788,0.0380565044835602,0.192896718044281,0.0374362548850918,0.191609310913646,-0.00359168835764426,-0.00388577094117769,-0.155384684600508,-0.0289938501922714,-0.129343234796392,0.00637007281560223,-0.00736881328411203,0.191591733606785,0.311853620099706,0.6277111527061,0.891449399905334,1.25623992861946,1.44233231175599,1.46516617228476,1.07976521458805,0.42443149534715,-0.427237049784963,-1.08523441624309,-1.46852792948457,-1.44173147159135,-1.25317547916316,-0.883823039774261,-0.629393921396999,-0.30260459708423,-0.203404195195095,0.0216149545497861,-0.0253972093731134,0.148239124369038,0.00903999261355999,0.169465413929631,-0.00390574057146455,-0.00708442087852728,-0.127575910937583,-0.00826624726714655,-0.0808857154214721,0.0526418621941533,0.0597794521446493,0.24871331573049,0.36337494861234,0.628917056202585,0.825565692630199,1.07946113303333,1.16606491642021,1.13185891642731,0.80483005921304,0.317560657787466,-0.310798986266907,-0.801768304154578,-1.13585203740061,-1.1628037852949,-1.08334550162477,-0.813179805571038,-0.637859282588476,-0.346906886020622,-0.269171020445393,-0.0395272645714629,-0.0816234030709471,0.10395088138142,-0.020221783919709,0.144177644734426,-0.00712540993135152,-0.00731198318756424,-0.0994845128898827,0.0103462554939693,-0.0365572737594078,0.088584763968383,0.110868486953679,0.280133836899074,0.384437931141993,0.598854389142757,0.741821496577414,0.912623724601536,0.938947944341952,0.876334823205474,0.602607242400262,0.23565248639329,-0.235848161578228,-0.603376190761094,-0.888798704898956,-0.937113604558058,-0.926402271121783,-0.725854857937925,-0.614642842507211,-0.358100045524894,-0.304394801108869,-0.0782027284760609,-0.119193149376394,0.0707171149943012,-0.0396456265746604,0.122937657488762,-0.00735440199432974,-0.0140022132495756,-0.0737193514035151,0.02003795208156,-0.00196387389735711,0.109309402786873,0.146169372975118,0.29137439824053,0.386407680969022,0.554690072845889,0.660334169829883,0.772700895083439,0.767761386889692,0.695620602587516,0.468752307734284,0.188097248602674,-0.175179364749932,-0.453926432441682,-0.699777466146739,-0.753700187347519,-0.789181031972463,-0.638246958598237,-0.581555188383386,-0.356888159184201,-0.33021992195644,-0.11143269336275,-0.156131914193114,0.0368091807827676,-0.064416015613182,0.102395749450439,-0.0140464019993254,-0.0139156722981594,-0.0496808103553795,0.0305522258085235,0.0291583763305628,0.119395480542443,0.164481819447465,0.28102618322759,0.365775611748529,0.490025794663874,0.567317516106705,0.63518613396563,0.613395201210113,0.539330276531347,0.352238338603037,0.135826733100065,-0.146607746374933,-0.355548307156154,-0.561211013214639,-0.60552485991422,-0.661763200444538,-0.53987864514688,-0.519705236287386,-0.32152344051731,-0.317332115403626,-0.11180720038223,-0.161782438444515,0.0242376893436523,-0.0696831027763601,0.0879296128904031,-0.0139620611506579,-0.0302531546101832,-0.0285401480781647,0.019534011999645,0.0499868967593732,0.116912115536732,0.17604481758803,0.261854086542223,0.345560980772047,0.434380397447117,0.49835150610856,0.538753206749228,0.514484836410429,0.447216157072429,0.293528532931107,0.126127161458805,-0.10322450267719,-0.262616899836146,-0.447765219071277,-0.483808554417286,-0.565835058851134,-0.463723506789941,-0.484136804429668,-0.302686716207038,-0.328372793967641,-0.125160012759594,-0.189978301292656,0.00520188643395067,-0.0955655549029716,0.0837980780894563,-0.0303018287916317,-0.0221603220882319,-0.0098013106857147,0.0250753230363552,0.0548792207590265,0.0954628245626057,0.155536992862601,0.206841731879487,0.275346611764168,0.328012423682947,0.371487534664224,0.387521556526169,0.361532340599631,0.30443999002331,0.188047450633168,0.0700821923928402,-0.0959263573773848,-0.199905968839161,-0.337234624564139,-0.350841103318739,-0.421596240291017,-0.333188921071086,-0.364826901720898,-0.213719113208916,-0.252513707531239,-0.0807262341406124,-0.150627858514764,0.0173318733331914,-0.0791360838666184,0.0710098175872672,-0.0222124327034986,-0.114876586817194,0.046201159051317,-0.0048344246985641,0.0871324775851301,0.0649893707856987,0.162137887248536,0.172008206842998,0.25699799317068,0.279888886887956,0.330865564132474,0.333106213618276,0.317912959394621,0.271633332466205,0.17474689297589,0.0898271971260388,-0.0612128105602687,-0.128388842830721,-0.278285946185894,-0.265424385705011,-0.382424990509857,-0.269898146654227,-0.367904644841433,-0.178914280772573,-0.290400003543757,-0.0605474759054671,-0.204319553916194,0.0388838390199333,-0.135866082533286,0.114599860595641,-0.114930987521687,0,0.000690116142841033,-0.0148293781837457,0.0283057876101996,0.0125117662070966,0.0424781535794849,0.041137945204732,0.0624232438573969,0.0683433822321625,0.0769409202445376,0.081619626173209,0.0701286656687447,0.0676480557457929,0.0322009748567912,0.0265077892224788,-0.0272918594573151,-0.0209727850384307,-0.081918879640679,-0.0472912964170308,-0.110177146048238,-0.0416483852888802,-0.111095847438569,-0.0142136734579528,-0.0971463458447493,0.0181247697547229,-0.0802999880318563,0.0454433130568303,-0.0688685112397601,0.0543695017996677,0,-0.0194056106304909,0.00533328909384102,-0.0222740608215251,0.0440223281682833,0.021138002499642,0.0676526999547037,0.0665160871589232,0.100229998301155,0.109849974374291,0.124004435132776,0.130808280538033,0.113473123350653,0.107862341964085,0.0529528241524092,0.0410747561615619,-0.0421043453008289,-0.036057707595664,-0.129107933758743,-0.0792832803869662,-0.173498466376227,-0.0711946329687525,-0.173867232042727,-0.0280446014696711,-0.150486695359303,0.0231541587561364,-0.122694947831597,0.0663829338652784,-0.104907878338411,0.0902120221709865,-0.0194469202321857,-0.0202813158908063,-0.0571163596843015,0.0516888361335563,0.0181373659782327,0.106685217971529,0.0866149873487735,0.162796090437645,0.149461664783665,0.206947990773349,0.183324662559466,0.208340551852282,0.158898095022131,0.143696816511059,0.0679691438943265,0.0233453993071253,-0.0577099381747702,-0.104458263122814,-0.160632449448474,-0.185341164570079,-0.199224664259682,-0.198374540992958,-0.173704635788098,-0.161518595298732,-0.112760517547323,-0.105958807271726,-0.0439628191471726,-0.0510173376690544,0.0345416766398271,0.0281102755749387,-0.0203761692810578,-0.00903368860710828,-0.0106443749817613,0.0151959749224667,0.0124383339545522,0.0494628173190341,0.0455000828498247,0.0843210103582325,0.0768958387602566,0.111765520711214,0.0947774729092774,0.118256784867706,0.085051454054074,0.0928596523805976,0.0418949571387519,0.0379497683647228,-0.0238379156913526,-0.0270693991923079,-0.0869343005491251,-0.0751987881820583,-0.12301753741579,-0.0898727697350077,-0.124255702285173,-0.0739992629235514,-0.0998180106364475,-0.0429322423533972,-0.063686252111754,-0.0128083609210317,-0.02531394754952,0.0223297025272296,-0.00912943781536608,0.00610643593891502,-0.0170378300425944,0.0276594596422745,0.0109674118086401,0.0583621263463394,0.0415128529603375,0.0862989698736451,0.0648092888876303,0.101152677346156,0.0701766230819239,0.0936679413657633,0.0514327532205498,0.0630197546941926,0.0130224328597188,0.0184573403459286,-0.0332683718362483,-0.0269921544111476,-0.074007504728447,-0.0602057421932286,-0.0967422462737117,-0.0718111067598799,-0.0955174868909938,-0.0617440808177479,-0.0739137792743702,-0.0383347781780375,-0.0412915263060983,-0.00881878237006619,-0.0152001415886339,0.00825143036738773,0.00601087886932142,0.00115141085209343,-0.019724353585275,0.0158025806530477,-0.00881065022745372,0.0324731083661981,0.00384085373848773,0.0432855677107815,0.00888454236323652,0.0421992045675563,0.00206308358252784,0.0299175158383321,-0.0109694386158972,0.0179826567778422,-0.0169328270346093,0.0167890652868467,-0.0144210529419103,0.0179202263651411,-0.0174516971770821,0.00909009944272054,-0.0300120498596229,-0.00511873751409555,-0.0405269077774713,-0.0126786055279504,-0.0389381921270241,-0.00871082923978192,-0.0265954010277101,0.00422415907581467,-0.0112583813344918,0.0165753365120565,0.00105595794114783,0.00314828957322774,-0.0298662921530396,0.0102179988765247,-0.0292097682053144,0.0126001230928197,-0.0337840636094527,0.00239757369359546,-0.0520217562329156,-0.0244095786590588,-0.0824147535338584,-0.0556537088867576,-0.101388213776167,-0.0563486103041171,-0.0723109835387183,-0.00254448703956801,-0.00065583589586273,0.0664840575893961,0.0531031698137261,0.0932064047950658,0.0563181917628747,0.075640485157945,0.0316795499771706,0.0463969259602484,0.00998306145111953,0.0281125044533819,0.0017020839989651,0.0229853023821099,0.00189685301873459,0.0247839366502949,0.00305347968207662,0.00182087877836096,-0.0464567197317471,-0.00358958306818654,-0.0625589621412155,-0.0217473645500972,-0.0916352669126094,-0.0622794022227514,-0.143945673297477,-0.128281535797563,-0.212695761637001,-0.193363596314326,-0.247348385077775,-0.180991418438437,-0.162669373623392,-0.0314124944315257,0.0319939275194306,0.158579244188565,0.180691780592425,0.238062759464019,0.197442751988579,0.203191973468309,0.139228353343099,0.133601232862932,0.0776237619571193,0.0796883276450437,0.0385902848600682,0.0507488425893059,0.0176298893376102,0.0401197857924233,0.00172719025021205,0.00205895631769606,-0.0689181173131095,-0.0199424898129058,-0.104737337176511,-0.0651567558393416,-0.166165210129563,-0.149112661419866,-0.270241680000132,-0.279989556196247,-0.409864901606097,-0.417006897714853,-0.493970802138018,-0.40631520947881,-0.33047557350689,-0.0923268670604161,0.0889519061525009,0.321873047458128,0.405402531078838,0.481896386604133,0.425210551922271,0.398364260865089,0.297065394421529,0.256476568602557,0.170874985097227,0.149525116031178,0.088224834802276,0.0884187075852784,0.0388760502810959,0.0610386371430455,0.00196697741895368,0.00171573335019831,-0.0984283937479649,-0.0420836217186486,-0.158919821023714,-0.122539259414864,-0.263141112256287,-0.266937341928533,-0.443729119836738,-0.500716390657614,-0.707443589428881,-0.777779963697321,-0.909609948291996,-0.808406642300563,-0.637803773560384,-0.209417205925147,0.195760618228898,0.622340776311475,0.808923553205115,0.899383429943688,0.794586385294725,0.696612784768458,0.525182604080476,0.42618569678166,0.294573864668858,0.240542280198931,0.150959626110302,0.137050691151742,0.0648394479864713,0.088246482545299,0.00162610545480387,0.00163758780297032,-0.133929075439361,-0.0687915422096649,-0.223499347126082,-0.192867180071738,-0.381818595476653,-0.417466483512568,-0.6703629530677,-0.806464616644788,-1.13860913215084,-1.33541947382878,-1.58291575431679,-1.49279992552353,-1.17485566985885,-0.420613266259662,0.385076724554169,1.14771881873788,1.49697688532352,1.58043041057336,1.36573568051084,1.13068679414707,0.838735511349584,0.648719261388296,0.450637515867321,0.353276415671169,0.226626604828361,0.196440094824854,0.0955397343180861,0.121696629658086,0.00155096130112152,0.00142211205296586,-0.174662214695708,-0.0997121842742092,-0.296504352293901,-0.274016400084349,-0.518075304287063,-0.59604880644148,-0.944935238540014,-1.19596186595052,-1.71244208152019,-2.11967602888524,-2.56999058859881,-2.53398077624614,-2.00667651525227,-0.748054067907988,0.690855902610576,1.97028198419093,2.54508937265061,2.57798352439403,2.16382564269465,1.70588009644353,1.23323560058597,0.917453978332857,0.632703975998759,0.483321408149022,0.31188325029527,0.264597500238786,0.129509060538154,0.16042724119809,0.0013391076592085,0.00120839566376323,-0.218301168614679,-0.132642690100907,-0.372868375732274,-0.35920833800018,-0.659936999368172,-0.784558405160769,-1.23843101012461,-1.62609323737379,-2.36766179543584,-3.05122105310751,-3.77931076314759,-3.84097527524351,-3.05961655073611,-1.15203891803564,1.10390973915879,3.03047508828557,3.85713255452517,3.78472302506347,3.09464549051295,2.3522829984079,1.66134984927066,1.20278649283607,0.822346193995007,0.619525407408529,0.399799043214965,0.337321730732151,0.164401731905867,0.202835539490416,0.00112953540894543,0.000930837117848243,-0.261956843062332,-0.164525880888959,-0.445404866788706,-0.437801672351401,-0.787782843014585,-0.949733468906083,-1.49133013640962,-1.99306355364354,-2.92909215793963,-3.85839950834013,-4.84312341087982,-5.00442661538242,-3.99603399885943,-1.49091349957022,1.50683973931661,3.99968231442286,5.01570129555577,4.81720207037414,3.87383368611094,2.8900430201851,2.01881282461984,1.44682626556394,0.987312312153076,0.743620077327493,0.479702818833964,0.408093611939257,0.196741251511191,0.246166408989983,0.000856483051449739,0.000655287124529356,-0.301874853560198,-0.191424772426826,-0.505403076915873,-0.496712484750676,-0.877574860858873,-1.04942033347112,-1.62480954630175,-2.1509017647603,-3.13486691447829,-4.11315501522941,-5.15760777845827,-5.33687466301718,-4.25196298262558,-1.55435918362362,1.65983580506929,4.29724644581182,5.33251577377408,5.08267290001449,4.0851105201345,3.0672898874749,2.16666074207868,1.57526723385028,1.08729646171398,0.832961920888329,0.538616179290672,0.468855686569447,0.222401242418995,0.287158317682364,0.000585586198242166,0.000295573673185921,-0.334436360775795,-0.209523405169194,-0.544698809269804,-0.524219603079405,-0.908706686947275,-1.0492221753124,-1.57627315766535,-1.98558082960003,-2.77942821162478,-3.47537263333914,-4.23174683863425,-4.2675069313846,-3.36029081684888,-1.18866229772012,1.32897949799864,3.41858528290739,4.2516150383745,4.13411319731425,3.42804901494757,2.70078058124903,1.9994610441931,1.52861640434235,1.08824944453874,0.867209137172493,0.564457990834853,0.511513677510195,0.237324992390831,0.321913688977604,0.000230412526295732,-4.38761536438116e-05,-0.356259445932986,-0.215874151909346,-0.557509445444491,-0.513678487679355,-0.872045541767474,-0.940053203220511,-1.33889120208671,-1.50139548529724,-1.88907032121496,-2.00667682099059,-2.15773725129299,-1.89649958253101,-1.40253099889025,-0.44089721119887,0.523217399756306,1.42950523581046,1.88697813599865,2.08795565910328,1.98560815992157,1.82830037983035,1.52254574860429,1.2976800131901,0.978243870927402,0.835763354303404,0.549653847024964,0.52994706454811,0.238563544532722,0.347335217575314,-7.43730006617568e-05,-0.00065030938415798,-0.365495451320557,-0.209332031699499,-0.542061901437741,-0.465768238449675,-0.773402925814622,-0.743372610930749,-0.969891722114618,-0.835513057923183,-0.748968505993617,-0.222034214636383,0.291498581020549,0.856511129023392,0.8499747615575,0.406060081812336,-0.418207364124667,-0.866872856237984,-0.843137853560335,-0.309609068815837,0.242357892952504,0.716367380765541,0.862948121069789,0.935382748730247,0.775987039462569,0.742951886999317,0.494150155338891,0.521468402534966,0.224760236445062,0.360418971625998,-0.000707766433664695,-0.00110678686300932,-0.360986617819169,-0.190383027621566,-0.500349319728901,-0.387464226663521,-0.629852293802659,-0.499238749829434,-0.557309017783352,-0.172823307513128,0.279905617220898,1.25051221890564,2.17769106925522,2.87189767650273,2.45632707768931,1.0045825361632,-1.07522792169373,-2.49194718159798,-2.83960068852487,-2.15875540525018,-1.20637090206953,-0.294991454148212,0.196804836038978,0.527579348638475,0.521532647141942,0.605864967791907,0.405508577260853,0.488085825004775,0.197345658430595,0.360952672724803,-0.00116151960208211,-0.00232954010209205,-0.344100193987127,-0.161637234687449,-0.438025914028635,-0.290159255498576,-0.463693995149826,-0.249404206004664,-0.17783965466755,0.354575906656702,0.976793784045914,2.07853753241473,3.0603660963279,3.66636352433542,3.01877046039885,1.2030338646037,-1.27675949855797,-3.0497115061978,-3.63169220886609,-3.03019847521987,-2.03157685484914,-0.983576508115734,-0.33788352589944,0.154212880681048,0.259574933378569,0.447564741513891,0.295653801088239,0.434283850492509,0.158454377237057,0.348027548923521,-0.00238252829167614,-0.00284705223928631,-0.31577369192692,-0.125993094422702,-0.361837373638688,-0.185511076883103,-0.295297637194774,-0.0240463489350431,0.126841764547494,0.704870701005323,1.32709380884613,2.31779961977436,3.10551603156289,3.50125990369835,2.78492926667317,1.09912265683938,-1.14770851117216,-2.80777987134167,-3.47875707878818,-3.08379486353555,-2.2822733911226,-1.32795258567791,-0.694079923531907,-0.140137218943933,0.0239167940660781,0.290146337940089,0.1791178676293,0.368436850575914,0.113796768696627,0.325624168442294,-0.00289929192644095,-0.00523127521535148,-0.280060212014386,-0.0880248899910641,-0.280002472328372,-0.084812249270744,-0.141202788846518,0.158854635329288,0.345642738929086,0.897456237289032,1.42886437338583,2.20647616211356,2.72687208630364,2.9104599816388,2.23075386231065,0.877002745002341,-0.896369624941566,-2.24321798729277,-2.90098916374301,-2.71545530575413,-2.1847856894481,-1.42237674268434,-0.892009769082309,-0.346231099112238,-0.16889280436076,0.147089322240359,0.0651827381190534,0.29529361224192,0.0647868439856943,0.293338844473341,-0.00528382607642945,-0.0056329410939088,-0.238285877851193,-0.0498963866277337,-0.197986848792441,0.00560334265999981,-0.00922195161881357,0.29453869760494,0.487227224750907,0.974411977042044,1.38955713181759,1.95336428358571,2.24554199972758,2.2764042356926,1.67847567936308,0.65746103259713,-0.662646828602131,-1.68698136720896,-2.28136201087129,-2.24410810455852,-1.94829320282762,-1.37792300413585,-0.976582807178437,-0.473707234881498,-0.311883530703039,0.0299589572909516,-0.0336190640931621,0.225687354438224,0.0203975783661881,0.25909591759961,-0.00565983329112624,-0.0104328012717278,-0.195617961153084,-0.0169307116444588,-0.123025971989085,0.0783044787699911,0.0951001913499192,0.384172210525816,0.567363136902796,0.97688465420635,1.28674019504006,1.67852588106274,1.81558909903962,1.75896695932992,1.25198386199429,0.492183519078055,-0.482116011127182,-1.24741866503327,-1.76479701352586,-1.810586718091,-1.6838350551906,-1.2681871294706,-0.989693546859415,-0.543169863867519,-0.414309326878832,-0.0656085210876967,-0.121216894596707,0.156701795468596,-0.0253781295363298,0.219949517575841,-0.010488749457157,-0.0106253778692623,-0.152487630800071,0.0127651063843874,-0.0545595615646219,0.134982985634543,0.174317236543614,0.433802398904939,0.599916405013024,0.930628591633392,1.15604212107818,1.41919352637515,1.46200128574546,1.36205868519433,0.937848041698726,0.365288855455309,-0.365713170190435,-0.939365776503575,-1.38086954746484,-1.45975123326696,-1.43951003100226,-1.13249947921585,-0.95351834022045,-0.560984519775085,-0.469242622562704,-0.126096217534282,-0.179906130787642,0.105024476831199,-0.0560026441833277,0.187179795532132,-0.0106842463374846,-0.0206413640681188,-0.113090527350663,0.0287875904943864,-0.00131299300347551,0.168038788673811,0.228818483497857,0.452031439434491,0.602632589661799,0.862420951225451,1.02881848691764,1.20175754924762,1.19539115840075,1.0812521361234,0.72970186525528,0.291487044335783,-0.27145245221363,-0.707209480735435,-1.08691612879629,-1.17458407189967,-1.22575032112049,-0.996293976275193,-0.901816229138094,-0.559366499331811,-0.509396546978749,-0.178065538600436,-0.237470424208019,0.0521641422153005,-0.0946467405651307,0.15508713895598,-0.0207038350137856,-0.0202943625099277,-0.0764943572571521,0.0458327958542975,0.0465601310530641,0.184658389838663,0.256849721379777,0.436685660312588,0.570142311043536,0.762403454541705,0.883789626956989,0.988268444384884,0.955195394244762,0.838624425092199,0.548655394501846,0.210471545771311,-0.227041387822338,-0.554387021795429,-0.871605814631953,-0.944394689304347,-1.02766525921775,-0.843521960813295,-0.805730488022067,-0.504605387141062,-0.489584290302884,-0.178786879409641,-0.246619202567656,0.0327563615813738,-0.103378571600834,0.13302447632601,-0.0203612902461159,-0.0445197143470459,-0.0439232049612044,0.0299965018503515,0.0776424423812521,0.181855477308553,0.274175284025832,0.40774164642761,0.538159011686081,0.676375989536834,0.776107643010145,0.838488845835091,0.801102416879793,0.695392392185922,0.457273709815376,0.195225754243975,-0.159537510027754,-0.410172970246817,-0.694907675088444,-0.755351848695462,-0.877932748637163,-0.725342506635638,-0.749851314195558,-0.475732004886905,-0.506322122090498,-0.200097637885872,-0.290073529910549,0.00245593147336177,-0.14283556442575,0.125111356060391,-0.0445912300973861,-0.0337800648644662,-0.0172591716583149,0.040922753879625,0.0848819130954789,0.149295485641465,0.241853861952998,0.323016319838708,0.428902174641648,0.511695240316465,0.579054911764485,0.60412941833619,0.563724235633401,0.474229304232587,0.293635198865463,0.108584198713733,-0.148394548831028,-0.312744157365154,-0.523869596582019,-0.548933050634031,-0.654722000115014,-0.522554665111976,-0.565400969559946,-0.337308654053268,-0.389374330751844,-0.130678587859592,-0.229838872706853,0.0219952801889159,-0.118714314847589,0.107663302098007,-0.0338584729244085,-0.162284790225363,0.0643452973375359,-0.00482967744465121,0.133027082361539,0.103998391446035,0.250497294151173,0.269898375671315,0.399223989969156,0.437179970356986,0.514935006394606,0.519222013135884,0.495209356591988,0.422495851606641,0.272815554534319,0.138363644715024,-0.0936625724246036,-0.2025372906015,-0.430382583996352,-0.417329762956409,-0.591070264190158,-0.425940193495361,-0.566858198085377,-0.285820167566499,-0.444607643656717,-0.102704117206515,-0.309365958792469,0.0512613142763583,-0.201201328766733,0.1649283238591,-0.162367709632368,-0.0194167660008349,0.0053374973807832,-0.0222771195658793,0.0440248484350912,0.021136169225929,0.0676545782435336,0.0665151027115571,0.100231558487358,0.109849685199217,0.124005763617501,0.130808393227435,0.113474065266701,0.107862816826403,0.0529530495696523,0.0410752559239238,-0.042105119415811,-0.0360571459747969,-0.129109745376431,-0.0792823154755668,-0.173501158898003,-0.0711937451558771,-0.173870639806799,-0.0280417999889052,-0.150490707786751,0.0231579311757632,-0.122699450871387,0.0663874359773794,-0.104912757408441,0.0902169192947403,-0.019443790219769,-0.0372433448186771,0.0117515488293013,-0.026320300643967,0.0537117390620641,0.0276869257947406,0.084332111228775,0.0839842376797556,0.125841402690106,0.137946410923391,0.15618894208433,0.163799350583195,0.143418151121642,0.134394177700344,0.0679211514433326,0.0497585343407514,-0.0507733049243635,-0.0480479471546747,-0.159093213890666,-0.10343532639882,-0.213652663382919,-0.0944670390847932,-0.212830864845168,-0.0414036597955514,-0.182340834155112,0.0219984376756722,-0.146618595039267,0.0755137382869676,-0.124376989661621,0.1132889934685,-0.0372633011592998,-0.0184268281483888,-0.0704112644262977,0.06041201768562,0.024081448519059,0.126702511798542,0.106415048625707,0.194970271292508,0.18198951391114,0.24870092706923,0.222706825906089,0.250749908827767,0.193094321627375,0.172989564120898,0.0831177449176638,0.0278448841397163,-0.0689754587497335,-0.126403524833684,-0.19374009793304,-0.223977097315311,-0.240883355976997,-0.239456244495649,-0.210588909700898,-0.194488362176888,-0.13747503970422,-0.12680957375331,-0.054910011144081,-0.0593226362037773,0.0379880707645724,0.0331077816371445,-0.0184709390543984,-0.0128006739653909,-0.0119416445876151,0.0179288691427571,0.0161707543392606,0.0599156597083004,0.0567371229805726,0.102551126948641,0.0952436225737326,0.136108195543896,0.117108865854449,0.143921597681789,0.105039135281636,0.112571257914246,0.051967204095184,0.0450684703534086,-0.0286339805241053,-0.0346524924086516,-0.105754282336213,-0.0934804187494394,-0.149615557894601,-0.111251211575486,-0.150831052918523,-0.0916584755628061,-0.120797757089347,-0.0534661551626782,-0.076795919775911,-0.0164130110639391,-0.0280236941008016,0.0258713249496984,-0.0128458729204543,0.00702487146351809,-0.0198657138336969,0.0325167288194214,0.0143108069457465,0.0697451003408481,0.051477997174548,0.103728826050074,0.0798623262909412,0.12191920914325,0.0865172711769548,0.113024599235811,0.0638632001003069,0.0759093790096226,0.0171762341029222,0.0216980613553161,-0.0392518998090699,-0.0337281892061908,-0.0889833141841789,-0.0742654733500521,-0.116769756517345,-0.0884169616632978,-0.115371222672311,-0.076083187611008,-0.089234583455763,-0.0474099078274401,-0.0496689481592527,-0.0118342311071303,-0.0182519237446057,0.0103903429676556,0.00697987612160938,0.00131123890610829,-0.0231330198983843,0.0183700745113672,-0.00931321856099341,0.038626763767824,0.00636686432684204,0.0519344847894138,0.0127344717740144,0.0508173685029274,0.00457151050047822,0.0359815144404838,-0.0113809171246483,0.0212673655866652,-0.0190947550797299,0.0192746986946447,-0.0167039406443186,0.0200788018787949,-0.0208698012204891,0.00908666526057641,-0.0362631670261845,-0.00807601387605487,-0.0489453804531339,-0.0169311346281677,-0.0468858753457733,-0.0117627872526027,-0.0316748707215265,0.00437134788734048,-0.0132305997940173,0.0194821768773478,0.00126635174376864,0.00361522019793613,-0.035172585023773,0.011196867988724,-0.0338634283203026,0.014079173073225,-0.039139274449434,0.00190799166555123,-0.061014599442149,-0.0302900437158073,-0.0976678381922114,-0.0678984058987265,-0.120666566451801,-0.0687764526089817,-0.0858535070639776,-0.00407088457106208,0.000223877358422884,0.0789633810854252,0.0647629617815171,0.111056445545282,0.0684290517189816,0.0898663483501736,0.038589209366957,0.0547322884172672,0.0124068296393816,0.032885346992867,0.00246337410556329,0.0269639431986956,0.00287041985641212,0.0294204823799731,0.00357098677195272,0.00206158454202253,-0.05498969294467,-0.00581127732050808,-0.0738518352363439,-0.0278169065397081,-0.108826967543187,-0.0766812644590507,-0.172010527282245,-0.156275181501558,-0.255120046213966,-0.234726892328012,-0.297061259887137,-0.219678399244448,-0.195025720821274,-0.0391620662016343,0.0396757611980181,0.190137430036388,0.219031703723691,0.286191837882683,0.239185487002304,0.244231518716804,0.168813402797807,0.160341177287389,0.094368983981105,0.0953877052723013,0.0472530218400842,0.0605235850698946,0.0220581804077466,0.0477731964244935,0.00201849693113477,0.00231062843196946,-0.0818268426574033,-0.0261546274938716,-0.124545542973655,-0.0809314443914891,-0.198811279370045,-0.182333181721111,-0.324760202945126,-0.340350747370977,-0.493618148171466,-0.505565589332126,-0.595141926815161,-0.492155161012546,-0.39764546181658,-0.112833712673149,0.108563769674119,0.387415542676062,0.490757526482768,0.581122431462048,0.514860885009725,0.480551264956199,0.360005224193922,0.309231012104838,0.207395668126201,0.179999639787133,0.107492839526823,0.106054366424233,0.0480570383643789,0.0728393815155236,0.00226928524144574,0.00188467091811642,-0.11709955033881,-0.0535920194561736,-0.189685707545113,-0.151035502154387,-0.315950284224731,-0.325597381968106,-0.534716580863071,-0.608114214128777,-0.853772251610347,-0.942384170590748,-1.09759371926724,-0.978126104422488,-0.768695540407798,-0.254321649454501,0.237489510083727,0.750167863550788,0.97839470539873,1.08598230678238,0.961912636689888,0.841746982960386,0.636414927603498,0.514938446321668,0.357422066314719,0.290310413860387,0.18372350413107,0.164811270580835,0.0798924878077972,0.10544687197591,0.00184572703557303,0.00176367857469038,-0.159570529806121,-0.0867086677912549,-0.267421698633123,-0.23696945125107,-0.459479835060829,-0.50867935651773,-0.809287321635715,-0.979144747209468,-1.375972002599,-1.61757187718309,-1.91152640826199,-1.80474838331446,-1.41666091636869,-0.509160642012022,0.465760710654841,1.3840018377287,1.80942749470988,1.90946392001059,1.65330525629811,1.36770333018609,1.01659670347924,0.784844834418889,0.546845482702127,0.426986895768234,0.27576385512885,0.236563766042536,0.117602741942066,0.145535792132096,0.00172779720470591,0.00148663139940139,-0.208329005544637,-0.125024588778391,-0.35538287590868,-0.336129583412114,-0.624454851832862,-0.725997016803249,-1.14233479970378,-1.45214839213349,-2.0715537450508,-2.56736607794309,-3.10465391596923,-3.06131408361173,-2.41911229611825,-0.903633190537951,0.833828046493809,2.375111215,3.07433550475758,3.11542225658838,2.61972696472074,2.06517278428224,1.49541317882763,1.11109746519348,0.768079644672839,0.584740492384382,0.379602554326475,0.318911170705734,0.159422608019873,0.191958677305704,0.00145444534944453,0.00121902073073701,-0.260605670165528,-0.165847505349499,-0.447489506381418,-0.440302582326199,-0.796444298567834,-0.955661581249799,-1.49889493388805,-1.97519433302608,-2.86674489999661,-3.69611478568786,-4.56600765573022,-4.63637798551498,-3.68481372294631,-1.38870317483162,1.32938644110952,3.6492489956897,4.65544832542841,4.57383710939152,3.74755788166327,2.84994245239853,2.0158707485562,1.45800002815645,0.99889104729557,0.750096850696176,0.486864282282158,0.406775097820882,0.202503154649772,0.242787499725752,0.00119106148441718,0.000888152482862557,-0.312936860648876,-0.205418068633644,-0.535066734970406,-0.536548348845932,-0.951687192927318,-1.15734471358096,-1.80688652397072,-2.42265242159877,-3.54967875387175,-4.67541061234051,-5.85066891922905,-6.03366939487552,-4.80322958480968,-1.79192731455429,1.80921361024472,4.80678176175436,6.04669968978946,5.82073897272427,4.69296580399819,3.5044283456852,2.45177086181044,1.75544447169635,1.20020465947897,0.900915734639348,0.58461028473399,0.492267058325184,0.242608148539693,0.294719345713783,0.00086478712206942,0.000577749361164221,-0.360818534534718,-0.238900545105524,-0.607578168844212,-0.608932001905644,-1.06098829391974,-1.27977819003905,-1.97051639988593,-2.61725572663971,-3.80282982853556,-4.98727883766058,-6.22968495398692,-6.42535668539734,-5.0967325154901,-1.86086562288435,1.98571545028932,5.15015225654642,6.41910309763845,6.14020058105501,4.95200450605666,3.72309715553539,2.63426632079014,1.9130871556232,1.32301469604113,1.0096780275285,0.657058406397312,0.56561915166232,0.274693782120621,0.3438287210072,0.000559124280115931,0.000180205950530234,-0.399905530867017,-0.261598595780131,-0.655123333012316,-0.643131673778773,-1.09922968788392,-1.28092567692319,-1.91331726456455,-2.41977356729322,-3.37588109585225,-4.21950483407514,-5.11261181639002,-5.13255854811257,-4.01645715706916,-1.41721908135762,1.58487729131409,4.0858494013593,5.11158780284429,4.99465499618369,4.16024501358688,3.28256945022398,2.43449436055509,1.8581653975265,1.32570603561039,1.05157233028754,0.689463700481774,0.617011363744432,0.293771813247234,0.385440369447231,0.000166200230058409,-0.000157617959206166,-0.426118534420206,-0.269867421443518,-0.670671546454085,-0.630970763611291,-1.05517725842564,-1.14940291356659,-1.62634289120261,-1.83413724965602,-2.29875658532336,-2.44456085193334,-2.61107156715574,-2.28182131666519,-1.67032453351549,-0.522562836830952,0.622473028705953,1.70288301739353,2.26763257356828,2.52559645050164,2.41625854009741,2.22670063685373,1.85767166047474,1.57883499779058,1.19343480405078,1.01356091649315,0.672516558770553,0.639001728276381,0.296193704059252,0.415818600276704,-0.000162503612871335,-0.000844056884450439,-0.437237215127486,-0.262264248996872,-0.652047599100205,-0.573178674013224,-0.935769728180497,-0.911010318531081,-1.17866925506291,-1.02592561576242,-0.915653124757246,-0.28267609773658,0.347596804207434,1.03026278066609,1.02810810840122,0.4892236763426,-0.501942822873045,-1.04776638135157,-1.01711911825043,-0.370743907749259,0.304364162964374,0.877281181005412,1.05717448130969,1.1389010474253,0.948654754796063,0.900767766671296,0.606029988149243,0.628326248483698,0.280223999375875,0.431369656154049,-0.000850247477992909,-0.00131572031056512,-0.431856761654114,-0.239340482447458,-0.601645679685662,-0.478171246585902,-0.761695494910162,-0.614348854191552,-0.677245699513435,-0.219754258800852,0.335490984041791,1.50637227179612,2.63445556102137,3.46676372179154,2.96388854737528,1.20858548004984,-1.29299215982961,-3.0064362056352,-3.42964064164925,-2.61160039531986,-1.45509145454217,-0.352897381578446,0.247095181704557,0.642680651386128,0.639950076898695,0.733909375727435,0.499103470346381,0.587414706579288,0.247546940355593,0.431810839759152,-0.001319163570279,-0.00271637148655548,-0.411635211556589,-0.204260478522626,-0.526311813220375,-0.3597765566035,-0.560056731767544,-0.310267528766186,-0.215562642764126,0.422996452855328,1.18510652556304,2.51677104703933,3.71193823413667,4.43812365029381,3.6526529834129,1.45157991981109,-1.54158679952861,-3.68987307775991,-4.3966678797883,-3.67434968851026,-2.46105518138841,-1.19256367343795,-0.404066964569766,0.187731938962688,0.321742759168219,0.541056097642022,0.366183015646821,0.521740426779902,0.200696575236335,0.416099623873844,-0.00271807307914154,-0.00324053192338372,-0.377670994844775,-0.160551819955729,-0.434218966979272,-0.232196724907467,-0.355634398023272,-0.035651523134041,0.155373369496802,0.850622493229771,1.61341570097472,2.81212823579757,3.77337305691764,4.24738189617204,3.37872670894931,1.32979208083448,-1.39024993530639,-3.40630826024633,-4.21990246629624,-3.74565808306185,-2.76944121921068,-1.6139063444162,-0.838297590233323,-0.171319388968856,0.0352915106317845,0.349153583990538,0.224919436313464,0.441484275078212,0.146606171741252,0.38898302789072,-0.003241508001089,-0.00601614128177574,-0.334891281877649,-0.113811553832169,-0.335332612661535,-0.109212048622029,-0.168562244499674,0.187497113879132,0.42180734476753,1.08627308713166,1.73863551408312,2.67969729449923,3.31697714653504,3.53544063083965,2.71148489974294,1.06295825679936,-1.08786418162301,-2.72661314697131,-3.52358692989841,-3.30207213613133,-2.65324329811758,-1.73059329700899,-1.07974930048219,-0.422957856910539,-0.199152021255906,0.174699282902196,0.0866302461077249,0.352451490941139,0.0870117618003352,0.350017716538345,-0.00601747409198659,-0.00634783222781107,-0.284817499592231,-0.0667149855000437,-0.236276708022821,0.00140169465882741,-0.00839578302061236,0.353312767077671,0.594143702252338,1.18101844717683,1.69143197621343,2.37333514334617,2.73300984733715,2.76701031719273,2.04242569871427,0.79757049381033,-0.804758507025521,-2.05287218831077,-2.77263100994556,-2.73081897051358,-2.3666448167959,-1.6776525338192,-1.18301731846138,-0.578824258807342,-0.373084023074222,0.0318062238137617,-0.033458199912806,0.267800029446735,0.0328216408366739,0.308723662416208,-0.00634914206347641,-0.0119698400899801,-0.233777866801831,-0.0257587523979845,-0.145822105038162,0.0906013775922039,0.11808199868576,0.463176415606271,0.691539516203231,1.18495681536108,1.56644356832509,2.03974936083077,2.21011174084038,2.13840794656608,1.52420840046318,0.597159373675316,-0.585417447122943,-1.51896855448145,-2.1450129918532,-2.20423796493638,-2.04524031322759,-1.54484595318007,-1.19911015795369,-0.663941763930045,-0.497665911774389,-0.0847689899528509,-0.139996435981759,0.183965299837317,-0.0230966371386546,0.261468799951545,-0.0119746927958496,-0.0120122291909511,-0.182153194842103,0.0112523736333041,-0.063327016787334,0.160396754220628,0.213954672527597,0.524442017017674,0.730918520561204,1.1295317103916,1.40731147000631,1.72482482982813,1.77973563331652,1.65589589638975,1.14205650699971,0.443128778888001,-0.443754039892001,-1.14430772600403,-1.67803449402802,-1.7777697993034,-1.74809208788619,-1.38030575693114,-1.15523943192113,-0.686157495352656,-0.564620766753206,-0.158625906006806,-0.211602802614923,0.121263557037138,-0.0608314603140542,0.222054549450846,-0.01202006546232,-0.0236644510668022,-0.135203488774602,0.0318990825810487,0.00060952390496747,0.201587078219311,0.279633485803783,0.547538121571064,0.733863918203935,1.04733726036071,1.2522321982969,1.46074184418586,1.45503090288486,1.31438955082146,0.888607000965083,0.353377196652651,-0.329083157919652,-0.861979703862189,-1.32033230656181,-1.4311018824409,-1.48791833771905,-1.21499950552812,-1.09225174786444,-0.684593617443568,-0.613407485877626,-0.222074461313398,-0.281637092123198,0.0569646928158829,-0.107897715759955,0.182933724952626,-0.0236759504769409,-0.0230530102182489,-0.0917226913899246,0.0535044452751662,0.0580347642171111,0.222938750984061,0.313166817209464,0.529868985362038,0.693999611444003,0.926580317302377,1.07564980500003,1.20169954572073,1.16278059697873,1.01967265638382,0.668417539617182,0.255101219085321,-0.274964938919033,-0.676058574331106,-1.05845231268064,-1.15137604819332,-1.24717102077218,-1.02965076719069,-0.975710626572568,-0.61844952301928,-0.589705355687816,-0.223159221224586,-0.293252377333323,0.0335852787066189,-0.119232767833041,0.156760840612455,-0.0230690224224789,-0.0508530354717456,-0.0528757639796565,0.0359277366158579,0.0941962385950126,0.220793113605463,0.333392487490116,0.49579608766531,0.654483710558575,0.822669240715655,0.944252102567739,1.01978297498187,0.974992828385233,0.845342442275351,0.557037239225363,0.23625117268911,-0.192810445047358,-0.501014687962862,-0.843171611531413,-0.92185707317224,-1.06448094621781,-0.886425064644919,-0.907113208765902,-0.583938610568054,-0.609449050215761,-0.249713435229758,-0.345468531329725,-0.00405050015148672,-0.16613694852884,0.145305877638679,-0.0508736530285882,-0.0400056162679364,-0.022725476519584,0.0517377878631675,0.102746390332626,0.182262826256988,0.293692021543211,0.39397193765211,0.521825819660705,0.623583680365936,0.705198578700939,0.735979010862713,0.6870036521038,0.577454777988376,0.358486031999187,0.131554583778075,-0.179412565796492,-0.38245355872323,-0.636075027460588,-0.671208110708368,-0.794494049669925,-0.640266701319559,-0.684477745555633,-0.415784130626052,-0.468844092643638,-0.165049154492953,-0.273669061636991,0.0205065567322661,-0.13857821125153,0.12688436950104,-0.0400331434287253,-0.179107863349823,0.0683995438161268,-0.00268636669413776,0.158379927140403,0.129956647375336,0.302025580667306,0.330728957576843,0.484180442089537,0.533337870894351,0.625909846317738,0.632250847600864,0.602677689824929,0.513473561043617,0.332877892760878,0.166465566291337,-0.111916075243207,-0.249790236516593,-0.520002754060083,-0.512815487795243,-0.713462774065159,-0.525178892986875,-0.681763698555672,-0.356616194907121,-0.530975392859739,-0.135471121007971,-0.364960561362253,0.0506521925399827,-0.23190948782569,0.184952221166488,-0.179139932540404,-0.0372501667294427,0.011755774587341,-0.0263234022950506,0.0537143640849558,0.027685105419278,0.0843341437303182,0.0839833605952645,0.125843182374224,0.137946320640182,0.156190540765663,0.163799584647192,0.143419344411247,0.134394843894789,0.0679215062402847,0.0497590799085649,-0.0507741391866588,-0.0480475046910114,-0.159095250573437,-0.103434570488184,-0.213655653946122,-0.0944662467054379,-0.212834558565236,-0.0414009598471582,-0.182345083721271,0.0220022144280227,-0.146623289418904,0.0755183366884091,-0.124382054490286,0.113294163505683,-0.0372624244263285,-0.0448252674539731,0.014172844856078,-0.0276236717672088,0.0576345242346118,0.0302207899220968,0.0910939831921232,0.0908572387250551,0.13620598877549,0.149077030271216,0.169214377787994,0.17688292310471,0.155562055948561,0.144857947205689,0.0740732654312238,0.0530214999950359,-0.0540685295230261,-0.0531212193092151,-0.170877155032605,-0.113423424992018,-0.229431379611514,-0.104124407046652,-0.228049048612936,-0.047095731103408,-0.194661555630707,0.021189831157118,-0.155777370809389,0.0788043979366373,-0.131857724899443,0.122739875853514,-0.0448298113774745,-0.0178257478849934,-0.0749728759297277,0.0628407783814061,0.0262657058423191,0.132895727251375,0.113064206089904,0.205226065721531,0.19279023579541,0.262213364215065,0.235801336598223,0.264627155089488,0.204551637291771,0.18268620940247,0.0883230091301505,0.0294417128115551,-0.0725478129181664,-0.133517893882747,-0.204648227186907,-0.236584559696527,-0.254748194767462,-0.25280894615928,-0.222996267533418,-0.205066699888509,-0.145975573319477,-0.133294193813868,-0.058978260458115,-0.0615738960849418,0.0382144757494067,0.0357512018620923,-0.0178349805242011,-0.0144566349249681,-0.0123922714517758,0.0189420530271575,0.0176901650815216,0.0637006518335272,0.0610263396534275,0.109165003007864,0.102148163132462,0.144951476590246,0.125457898436576,0.153207596585855,0.112457096614978,0.119579233698412,0.0556315920480092,0.0473530381612947,-0.0305039560363142,-0.0377805104490198,-0.112730710219524,-0.100430204224569,-0.159308223740424,-0.119180826438232,-0.16037918340298,-0.0981104206276373,-0.12823695165533,-0.0572655373458523,-0.0813817985385989,-0.0175929628483562,-0.028786638391095,0.027246077957536,-0.014466523208327,0.00729570413996718,-0.0207480466301451,0.0340249896063874,0.015550800579379,0.0735085120631544,0.0550247044302884,0.109619104290634,0.0852372438468498,0.129066458989507,0.0924564948249766,0.11981654013602,0.0685464284891038,0.0805200029683173,0.0189642025563815,0.0228746133574755,-0.0411378809102607,-0.0361808206576826,-0.0941582556431028,-0.0793746350237954,-0.123778142660611,-0.0944215135568729,-0.122318510530718,-0.0812500799772557,-0.0945902688640646,-0.0506922677030642,-0.0526278771990369,-0.0130133742957352,-0.019347582161513,0.0111559522620744,0.00728588101988551,0.00135568840619863,-0.0241434205332335,0.0192585298707227,-0.00916552189648834,0.0408543567288311,0.00771920125982971,0.0551838541659887,0.0147217387358955,0.054235940113032,0.00623945981376355,0.0386142691860471,-0.0107462854425518,0.0227890906026163,-0.0193955950375607,0.0200698333267726,-0.0175838878729106,0.0202629356407263,-0.0225503040617184,0.00828631460688852,-0.039016862414067,-0.00983569471184281,-0.0523180451715536,-0.0189322176020827,-0.0499068864626646,-0.0131441854516427,-0.03352456392806,0.00424462598364316,-0.0139554064879758,0.0203668249432651,0.00134591003173695,0.00375252604941174,-0.0367723044070028,0.0114836565763188,-0.0350878829652188,0.0146730209949261,-0.0404124296007783,0.00206413966168306,-0.0632653768709982,-0.0316618177024975,-0.101767418660335,-0.0711817440845966,-0.126043036591887,-0.0722229937868014,-0.0896934471205825,-0.00447116398330156,0.000438395973542447,0.0825077658790703,0.067970490226613,0.116034928493265,0.0716344353912585,0.0936922979121881,0.0402113283856885,0.056831343782284,0.0127698503855176,0.0340319680033548,0.00248147370013698,0.0280422374624162,0.00312878342102403,0.0308219429717218,0.00374306807086011,0.00213394122929635,-0.0575818395115471,-0.00656977485965982,-0.0771622130010385,-0.0296728048478561,-0.113874262031917,-0.0810202887896222,-0.180365377430858,-0.164747119254858,-0.267877874924563,-0.247265734218349,-0.312044114469887,-0.23138424721512,-0.20476727351074,-0.0415386105175618,0.0419694111218663,0.199601987083243,0.230576850068231,0.30069894867292,0.251779140382933,0.256609619592463,0.177712405961239,0.168373616387572,0.0993750555994411,0.100087113045999,0.0498533263526084,0.0634683571223604,0.0234615183032319,0.0501262065261379,0.0021250538951324,0.00237663948702948,-0.0858137322996558,-0.0282814288425494,-0.130612553282196,-0.0860188784461282,-0.208888107568744,-0.192841225323873,-0.341678673684138,-0.359275803476885,-0.519587376883965,-0.533080179941059,-0.626296573484183,-0.518560423553804,-0.41816792782275,-0.119136690399736,0.114562725115729,0.407438238959333,0.516991438935576,0.611711369704818,0.542655037636315,0.506086662556132,0.379645629388728,0.325685828983502,0.21883477315052,0.189508389031106,0.113571158232361,0.111545229831238,0.0510458026859818,0.0765099010201168,0.00236862637300394,0.00192591137374495,-0.122928338446332,-0.0575126274592985,-0.199303769571559,-0.160342384706353,-0.332601860649957,-0.344447616282155,-0.56347799139345,-0.642261236280552,-0.899798024638944,-0.994054370860877,-1.15603884150074,-1.03064862313444,-0.808924042270048,-0.268145947285628,0.25028501331803,0.789427824223157,1.03081059519878,1.1440240379195,1.0143618473102,0.887456078925679,0.671663983728474,0.543103214049124,0.377478846262522,0.306138574848347,0.194260616812602,0.173605772355377,0.0848568259754476,0.110854023694879,0.00191910505775195,0.00178743823465669,-0.167657844258515,-0.0928213515258342,-0.281354083517647,-0.251496470222199,-0.48431757868725,-0.53829301900311,-0.853755785191648,-1.03457851955544,-1.45137805676634,-1.70676995817898,-2.01433473322013,-1.90163616996197,-1.49120997330695,-0.536439065053082,0.490528334946535,1.45677561540463,1.90643571286251,2.01243269932281,1.74414392433303,1.44307909726274,1.07356306538938,0.828549831181705,0.577915215111798,0.450716741917222,0.291754615692292,0.249419655130901,0.124943450781496,0.153091721397382,0.00178217706151994,0.0014907459401481,-0.21903873687032,-0.133677359121726,-0.374265745373524,-0.356729166539132,-0.6588549930845,-0.768560829922092,-1.20620431862553,-1.53515334032888,-2.18672735434124,-2.70997432345322,-3.27303697059139,-3.22585191148429,-2.54674578622727,-0.951685263754853,0.877795957921462,2.50019907252193,3.23939601162185,3.28471476052619,2.76491591589338,2.18054147132485,1.58024168755043,1.17391925730583,0.812241647539037,0.617712219704001,0.401848914965457,0.336468166304283,0.169452195377073,0.20202661254985,0.00148735375595465,0.00120575758188266,-0.274169640139369,-0.177236225884253,-0.471648632064744,-0.46738434429848,-0.841031415143692,-1.01222638317444,-1.58409729326533,-2.08951724856029,-3.02857330072478,-3.90355419293987,-4.8158886241014,-4.88619253590248,-3.87927876272941,-1.4620743504914,1.39899637901013,3.84138186885319,4.90604938936694,4.82454963408344,3.95762268870232,3.01155340252419,2.13189015520485,1.54169949586623,1.05706525811043,0.792932885579116,0.515714883922271,0.429397587924328,0.215371606566471,0.255628373183347,0.00120450826940648,0.000858844613307228,-0.329401309567599,-0.219504091124098,-0.564344153985721,-0.569771809201505,-1.00574783514612,-1.22669246193158,-1.91136059077852,-2.56517680378365,-3.7536397080683,-4.94162320779188,-6.17433786105988,-6.35981616892719,-5.05594236594597,-1.8856416596682,1.90312259688768,5.05910296025932,6.37324474029358,6.14320617609354,4.95998634261438,3.70671510730679,2.5953681055054,1.85788113192235,1.27111463372109,0.952987771383515,0.619676605645143,0.519877372904352,0.258215691965252,0.310421749898423,0.000859929464871269,0.000540265666451023,-0.379984193583257,-0.255340207823952,-0.641207720361423,-0.646996369445791,-1.12207791021328,-1.35762637530874,-2.08652768164372,-2.77446882395938,-4.0261101607285,-5.2770106636102,-6.57934668330087,-6.7745275517434,-5.36357982483217,-1.95681218113784,2.0878422440895,5.41942814217612,6.76754759659528,6.48517198663436,5.23941382702008,3.9427231432451,2.79183437349127,2.02673101650878,1.40245396388055,1.06872005418705,0.697008525426695,0.597570685169343,0.292629207446452,0.362264499746821,0.000543764568224378,0.000132892505588469,-0.421329400119945,-0.279741486462505,-0.691740905229774,-0.683822132699539,-1.16331186143744,-1.36025354347019,-2.02814561261968,-2.56908360290738,-3.57971275811156,-4.47217331214166,-5.40629698697315,-5.41523863727192,-4.22658077862908,-1.48937591151226,1.66620854390687,4.29974411795537,5.39256784329297,5.28155831745706,4.40874843042332,3.48170598914151,2.58392068668706,1.97069698616766,1.40676767850253,1.11374807567379,0.73203538855408,0.652067985176743,0.313298608589842,0.406223352029818,0.000138749340678234,-0.000197521826574545,-0.44911499890803,-0.288808114733971,-0.708461941945382,-0.671488841143522,-1.11737647062529,-1.22212916437405,-1.72597647064181,-1.95165846206048,-2.44350019459293,-2.59987862178113,-2.76885111403469,-2.41247328906682,-1.75776779717232,-0.548272806724821,0.65461244200177,1.79260350073815,2.39663031582105,2.6779007619588,2.56868558086994,2.36761802942751,1.97572708584841,1.67649067095011,1.26795843966822,1.07408520308065,0.714797328497004,0.675456264900471,0.316320524875411,0.43834350910639,-0.000193509814278542,-0.000907915104982482,-0.460988213183483,-0.280978786875128,-0.689023505303599,-0.61067329587268,-0.99146111068897,-0.970264765737911,-1.25259964423555,-1.09638256245327,-0.979737724777742,-0.312590843988574,0.358769280086279,1.08433183602306,1.08755544494703,0.517706913681511,-0.529956113165212,-1.1076647685193,-1.07143338233158,-0.383843505228306,0.334238255123069,0.939262498035148,1.12865508428274,1.21112772012844,1.00949541674181,0.954991951256733,0.644985820278351,0.664240743788889,0.299804592151634,0.454823400714798,-0.000898052940303564,-0.00137315527212877,-0.455441803867279,-0.256804170714853,-0.635918609911619,-0.510225677445333,-0.807394512641005,-0.656047256165716,-0.721227769909121,-0.241192475794952,0.347791617206748,1.58572750961683,2.78397592146229,3.66603935467268,3.13670412698225,1.27844413977528,-1.36732839484548,-3.18132468684896,-3.62729013337675,-2.75975306803369,-1.53230377678425,-0.36612127601168,0.269494675371861,0.685027286408991,0.682726800430943,0.77832490907761,0.532162398041865,0.620961788531745,0.265501979927403,0.45534374777915,-0.00136187615687189,-0.00283143243052541,-0.434227903877224,-0.219629829563159,-0.556374158538261,-0.38477976642329,-0.593889337490192,-0.333464384229689,-0.231250372051135,0.441975258303108,1.2516378179631,2.66188483473553,3.93238650227958,4.70225090984211,3.87180896030119,1.53759423559163,-1.63346121003942,-3.91104617244225,-4.65832879557969,-3.89203967373658,-2.60321511736384,-1.25939643092785,-0.422356254136945,0.201919065858771,0.345407923332715,0.573832612885817,0.391592449011221,0.551398298820595,0.216056809644948,0.43879916874199,-0.00281924763284197,-0.00333735465768436,-0.398474748045693,-0.173183701193474,-0.459029626354978,-0.249403258919929,-0.377245579347201,-0.0418041822171928,0.16284280255925,0.897305921769962,1.70874657402985,2.9795586272431,4.00291374450848,4.50589419869037,3.58612190682591,1.41026443819755,-1.47523792434908,-3.61531332181665,-4.47654012416255,-3.97291013565357,-2.93430901701255,-1.70917318223188,-0.884440833686975,-0.17983218009752,0.0414615630971657,0.370153954144688,0.242000494709608,0.466345833425876,0.158826015059179,0.410190870466323,-0.00332478049096104,-0.00624196911096613,-0.353418261402233,-0.123423418063354,-0.354448731577075,-0.118751722203769,-0.178876032222249,0.195436015897009,0.446138271511615,1.1487973367864,1.84350071749315,2.84173511306073,3.52145503236612,3.75339476109111,2.88032736598558,1.12814735827034,-1.15525762397576,-2.89639598546722,-3.74058074363229,-3.50519925864884,-2.81346757324784,-1.83500449059773,-1.14179537883493,-0.447678737561428,-0.207483452790748,0.18485694146077,0.0953938397247203,0.37194656510593,0.0956304669767908,0.36903578877589,-0.0062295585210723,-0.00651566661849778,-0.300611627155304,-0.0731927189740784,-0.249644301404276,-0.00110805719109421,-0.00896974489528571,0.371934397429687,0.629499289444671,1.25045078465594,1.79445596775361,2.51787951683328,2.90247285013221,2.93845615610181,2.1704376902084,0.846734233389616,-0.854784316739091,-2.18163463124276,-2.9442375184502,-2.90002169250331,-2.51045466048964,-1.78007256899127,-1.25219606111604,-0.613805341324225,-0.392280767254063,0.033012126302188,-0.0320073906391771,0.282199706965529,0.0380914752265708,0.325420112151663,-0.00650977937673918,-0.0124007978844457,-0.246820384296153,-0.0294090293802345,-0.153944076067754,0.093892148157783,0.125202190180602,0.489089373539821,0.733203657548899,1.25547171948081,1.66232126492123,2.16437827068645,2.34735343127658,2.27095051412518,1.61986530735844,0.633961090490094,-0.621644056436978,-1.61442884985547,-2.27771499571271,-2.34124275539652,-2.16970688176279,-1.63985225064135,-1.26981696795687,-0.704747245732574,-0.524759815233995,-0.0909603267818454,-0.145157982455856,0.193248780603299,-0.0213660462308107,0.275414556084052,-0.0123901443206303,-0.0123452981706593,-0.192348890894888,0.0102334502647641,-0.0666501481840537,0.168386495763903,0.226905126400821,0.554672874419998,0.775207337206153,1.19728875214345,1.49362420040785,1.83036342276123,1.89016321506837,1.75833618211633,1.21360747005117,0.470293136439812,-0.471046220275183,-1.21625982946582,-1.78158475280449,-1.88849911931183,-1.85443292769922,-1.46568162867638,-1.22361169860506,-0.728779013022845,-0.596033762345212,-0.169519832905682,-0.221252133234507,0.126789069898486,-0.0615534282336211,0.233780543305799,-0.0123361441839688,-0.0244841670759196,-0.142916214137276,0.032615590863022,0.000903373814465842,0.212577594924478,0.296532494444274,0.579774694348465,0.778484099828207,1.11065137899244,1.32915892465692,1.55032742914165,1.54528476370726,1.3956340803408,0.944249259285305,0.374983194171316,-0.34908218041423,-0.916192347819364,-1.40146824930532,-1.52043408590792,-1.57829084406903,-1.29061534369766,-1.15706902312243,-0.7276171222498,-0.648110961606878,-0.237193801279317,-0.295780198744309,0.0584127197878864,-0.111616765726195,0.192150450198992,-0.0244768605598203,-0.0237610790693038,-0.0970996842946033,0.0559721351382514,0.0616447546572416,0.235786381952821,0.332051017477239,0.561574540776111,0.736228274859449,0.982961682360208,1.14173803991762,1.2755299773089,1.23482150988919,1.0826052314719,0.7101866942513,0.27051710138636,-0.291651155222378,-0.718749574984878,-1.12335562497322,-1.22354613665153,-1.32281716402401,-1.09413833728009,-1.03357081266174,-0.65766918310152,-0.623123280500969,-0.238436235777388,-0.30823914221517,0.0336994583873731,-0.123818453254878,0.164618768793668,-0.0237560454434122,-0.0525118373854578,-0.0563116327830775,0.0380777843742712,0.0994561957134538,0.234201230284075,0.353440597169669,0.526177469238667,0.694466768935212,0.87338028939146,1.00256816508855,1.08293306145529,1.03570073476656,0.897774892095152,0.592095446033705,0.250594538513994,-0.20423072959771,-0.532934567461439,-0.89468274190989,-0.980217894992459,-1.12902175812004,-0.942775817534576,-0.961078265217089,-0.621837033759515,-0.644364039376771,-0.267327793780843,-0.363754065351465,-0.00683819721746374,-0.173356932577118,0.151618973015095,-0.0525091177166509,-0.0417408712620288,-0.0250229026877925,0.055772702503698,0.108556713720284,0.193770954866554,0.311335763052627,0.418621520376156,0.553882246724621,0.662503065656627,0.749031066360992,0.781955843207174,0.730043497980198,0.613473116670569,0.381200670717301,0.139397004364186,-0.190223781620066,-0.407179640895589,-0.675154023471953,-0.714299761030828,-0.842864573173023,-0.681624430141949,-0.725247620593623,-0.44337390911177,-0.49558460633097,-0.17732257871749,-0.287962316007632,0.0195483691249994,-0.144598672695281,0.133053609724846,-0.041741625632094,-0.182775200303403,0.0679598874036519,-0.00122054633510909,0.16678175328625,0.13960187981805,0.31998665968936,0.352654115448972,0.514274249353238,0.56782012429551,0.66549699404433,0.672740869534364,0.641180333049984,0.546000737241722,0.35451634131737,0.176314323365263,-0.118245087887861,-0.267130203532738,-0.551727884244332,-0.547575805345235,-0.756629749379532,-0.561383603588465,-0.721914861414669,-0.382759911089515,-0.560647510411056,-0.148164892794196,-0.383476618022938,0.0492872715958325,-0.24148243099578,0.190727783308158,-0.182778205861437,-0.0448276243166272,0.0141750211677282,-0.0276252550597212,0.0576359138342458,0.0302199071265876,0.0910951131572819,0.0908568946527652,0.136207036964085,0.149077136925382,0.169215362971627,0.176883125676781,0.155562816107848,0.144858407885909,0.0740735201259853,0.0530218012488467,-0.0540689933882334,-0.0531210780285559,-0.170878327913268,-0.113423189807785,-0.229433080812006,-0.104124079794859,-0.228051096435216,-0.0470944646869683,-0.194663847033194,0.0211917062708381,-0.155779846323685,0.0788067481092041,-0.131860356248739,0.122742582751482,-0.0448299613233183],"Archive1110_field7":[0,-6.03082701574866,-5.23850302413532,-5.29440154540703,-5.29590379569144,-5.29306628654071,-5.28750521658864,-5.28435422969145,-5.27672619195552,-5.27081596131068,-5.26235112480755,-5.25551329582282,-5.24852776972633,-5.24376744049914,-5.2412157360108,-5.24095916856663,-5.24431328909435,-5.24842183475519,-5.25643022144599,-5.2621766953033,-5.27204695884859,-5.27620968084923,-5.28576138145185,-5.28654896129233,-5.29448173471398,-5.29468589792465,-5.29546000184006,-5.23803406439051,-6.02815174036111,0,-6.01081695145543,-5.0498115516197,-5.33350714343571,-5.28366871174207,-5.28855431564079,-5.28936122024888,-5.28894114799298,-5.28927829110773,-5.28913760305185,-5.28890712024453,-5.28868223937518,-5.28793979359792,-5.28766618552459,-5.28660583036847,-5.28659464637908,-5.28550930555908,-5.28612699643201,-5.28513462942428,-5.28652592627645,-5.28542403030193,-5.28748215600029,-5.28593883181516,-5.28845911592052,-5.28643039732182,-5.2893855992819,-5.28107099942949,-5.33529896616752,-5.0481759522917,-6.01814631833317,-6.01082258398284,-5.23256120748431,-5.33689757105366,-5.27561225180574,-5.29316087350105,-5.28861960628044,-5.28794447169588,-5.28633043227152,-5.28420043054936,-5.28200078197037,-5.27919769179528,-5.27676141652674,-5.27401510695028,-5.2721995412545,-5.27051361642971,-5.27023697411757,-5.27028281499691,-5.27185823828401,-5.27343211152971,-5.27631599068175,-5.27847794901027,-5.28172631776984,-5.28347590792954,-5.2864125334015,-5.28672236239728,-5.2924921703097,-5.27481054648321,-5.33658004658306,-5.23332639220154,-5.05148526955283,-5.23293642198859,-5.28421627824515,-5.28395798029639,-5.29195284178743,-5.28803965653027,-5.28856122105797,-5.28762008492265,-5.28670271369468,-5.2852640120367,-5.28384535014005,-5.28180690048381,-5.28006451507319,-5.27784534364179,-5.27633785550838,-5.27467169860942,-5.27418390305158,-5.27370855964872,-5.27467606245278,-5.27538663198712,-5.27755038137563,-5.27880367220749,-5.28150481604997,-5.28248990553127,-5.28538924132276,-5.28457757675015,-5.2908655441082,-5.28201631743851,-5.28482904779935,-5.33414849371798,-5.3358112613233,-5.2839244610419,-5.29143163297652,-5.28925639764072,-5.28824687227624,-5.28845038234646,-5.28742563946336,-5.28626996147913,-5.28496525645834,-5.28295667849459,-5.28104346210118,-5.27841665645466,-5.27611597591992,-5.27339193013452,-5.27144784105151,-5.26957761077044,-5.26904776836068,-5.26886728954837,-5.27025402388471,-5.27162614321055,-5.27439394449222,-5.27635017512333,-5.27955899291458,-5.28107143999009,-5.28427014023088,-5.28439708126347,-5.28730832681772,-5.28975666065403,-5.28342791901947,-5.27372626418297,-5.28401620099372,-5.29150313585711,-5.28812326059477,-5.28860357398428,-5.28829087730779,-5.28754270791607,-5.286966041453,-5.2855584787784,-5.28426592443678,-5.28206164852185,-5.27990003299614,-5.27686087178372,-5.27393814097906,-5.27046628538862,-5.26762555658623,-5.26500477048198,-5.26393979990823,-5.26369101795949,-5.26536854160861,-5.26734495254282,-5.27080254842276,-5.27344509333202,-5.27721863992949,-5.27924315972745,-5.28253870404614,-5.28372927731237,-5.28556837009912,-5.28641767271489,-5.29113236040491,-5.29080627600992,-5.28889628489089,-5.28806728959162,-5.28857252991652,-5.28786812875989,-5.2878820299655,-5.28684847849132,-5.28618539642247,-5.28449141041638,-5.28292538090061,-5.28027951326602,-5.27746726953476,-5.27355676161322,-5.26930815294388,-5.26423504335451,-5.25943260315758,-5.2551354627426,-5.25298948264106,-5.25287611477117,-5.25565340763724,-5.25945642489386,-5.26476060641512,-5.26911081965957,-5.2740922410474,-5.27715552600361,-5.28088418410936,-5.28257958093631,-5.28529998196506,-5.28528610946142,-5.28648648149272,-5.28703854462223,-5.28835346684869,-5.28858641527776,-5.28843853372604,-5.28740982797361,-5.28757110536931,-5.28632721782759,-5.2856514449904,-5.28377122082535,-5.28192240326434,-5.27885458690199,-5.2751592651298,-5.26993404731262,-5.26328085994567,-5.25478407329986,-5.24530746772497,-5.23645332566187,-5.23124776849178,-5.23125033410103,-5.23697841104634,-5.24539159715627,-5.25507932908309,-5.26293813828085,-5.27014368376572,-5.27473040268133,-5.27925648370973,-5.28143853887679,-5.28430694679248,-5.28539337048259,-5.28701189944895,-5.28722475864176,-5.28762379610337,-5.28845098304745,-5.28841586642514,-5.28702945596381,-5.28733507400256,-5.28597505768536,-5.28522469483291,-5.28327175250909,-5.28108645728968,-5.27762688137667,-5.27275311314814,-5.26545917191805,-5.25423643486183,-5.23794638245897,-5.21672736634059,-5.1952568204349,-5.18137717595249,-5.1815665241211,-5.19590980795539,-5.21708060758999,-5.23817912369986,-5.25399008656498,-5.26554186697375,-5.27246291514709,-5.27795903924694,-5.28082626571364,-5.28367388437554,-5.28486015046012,-5.2863346563251,-5.28708529548298,-5.28723804606276,-5.28844313905158,-5.28849956648289,-5.28688636754082,-5.2872689280696,-5.28600140719883,-5.28518772317391,-5.28342187086214,-5.28101471402661,-5.27742163553806,-5.27121021843432,-5.26070906424257,-5.24074302811729,-5.20703050454722,-5.15763128008281,-5.10401859775465,-5.06755329731153,-5.06780020456273,-5.10450224416238,-5.15806825166165,-5.20711665188714,-5.24065754536206,-5.2606822808635,-5.27112064919442,-5.27761637908107,-5.28094008499609,-5.28369957444106,-5.28507750732217,-5.28622230439401,-5.28714825189751,-5.28698792935084,-5.28853686427003,-5.28869695427691,-5.28704127686216,-5.28741763022052,-5.28650299775109,-5.28568018788969,-5.28449162462574,-5.28218199225892,-5.27904913450587,-5.27170708842508,-5.25673659500335,-5.22187260658754,-5.15508750011485,-5.04974455835081,-4.93019660158607,-4.846712284936,-4.84653748280516,-4.92949424515413,-5.04950559382369,-5.15478559173128,-5.22212952965747,-5.25683234098655,-5.27203265385775,-5.27918443833828,-5.28239503199447,-5.28456029058851,-5.28580583532994,-5.2865082767773,-5.28749272474196,-5.28701672649734,-5.288739727519,-5.28903795336457,-5.28758495475551,-5.28786678684434,-5.28763049809826,-5.28692254727527,-5.28684747985712,-5.28522602210034,-5.28364351699589,-5.27629517496666,-5.25709616250241,-5.20345892011497,-5.09087331814871,-4.9048012225461,-4.68750558054959,-4.53329971855819,-4.53231334157224,-4.68473639061175,-4.90311213865919,-5.0898730597452,-5.20413511468579,-5.25748461937029,-5.27716875745478,-5.28370730337811,-5.28576088041261,-5.28666517263889,-5.28733326827397,-5.28736297383037,-5.28816647680681,-5.28740262049158,-5.28908558020468,-5.28952642429704,-5.28856162411101,-5.28865202812662,-5.2894411739605,-5.28901104999818,-5.29065271178264,-5.29050795249952,-5.29206001379474,-5.28738029664468,-5.26869257139662,-5.20412536232898,-5.05752112566378,-4.80480551101393,-4.501454277103,-4.28239256392009,-4.2813067796104,-4.498095129361,-4.80293022278504,-5.05653881709161,-5.2054587821116,-5.2693766029095,-5.28876514768869,-5.29197424201126,-5.29134612167222,-5.29015724545965,-5.28972402854755,-5.28886258051,-5.2892009813059,-5.28820002864981,-5.2895720935622,-5.29016376291162,-5.28998605770538,-5.28978243033059,-5.29191116793386,-5.29190082662234,-5.29577314638932,-5.29783134296358,-5.30417436166496,-5.30608504533716,-5.29815796636082,-5.24763061076626,-5.11791342078868,-4.87847311728622,-4.5785306164511,-4.35520214319012,-4.35551142143967,-4.57772441128875,-4.87927017194441,-5.11845664794048,-5.24990054204201,-5.29886340831973,-5.30769982368876,-5.30377837721736,-5.29892096199218,-5.29493477420903,-5.29292191430259,-5.29101334899792,-5.29058967532324,-5.2894474315532,-5.29020699026057,-5.29091272375159,-5.29180739122679,-5.2911956514781,-5.2948833791859,-5.29533327790116,-5.30166575079848,-5.30618918548399,-5.31812409796043,-5.32954806788054,-5.34264556051601,-5.33570992972081,-5.28904348700071,-5.17507773951849,-5.01466719801224,-4.88529135173268,-4.88753833862626,-5.01719892922682,-5.179069711505,-5.29085907083756,-5.33819913810847,-5.34268479774832,-5.33098664529363,-5.31727231385538,-5.30747568641858,-5.30048985572932,-5.29664488763553,-5.2936791614464,-5.29223920782022,-5.29109864749559,-5.29094429535439,-5.29174673278438,-5.29393249461857,-5.29279112508971,-5.29810961668269,-5.29890129869496,-5.3075082228321,-5.31400051355931,-5.330597593298,-5.35047868955103,-5.3853412416358,-5.4301436786755,-5.49171831434112,-5.55470397259188,-5.60701359494103,-5.62999010664019,-5.63247839064536,-5.60881956410398,-5.55804565252803,-5.49191940828645,-5.43123521364343,-5.38399172208782,-5.35148428654398,-5.32928884705284,-5.31548338648665,-5.30607255386973,-5.30049557043478,-5.29667490025078,-5.29404529748911,-5.2931088910234,-5.2917716479886,-5.29258044168483,-5.29621175616294,-5.29441329637407,-5.30128032500869,-5.30214310168932,-5.31246254257319,-5.31975643844336,-5.338488162783,-5.36136065331598,-5.40620117464096,-5.47846908174886,-5.60431447994627,-5.77932978581015,-5.97404711135188,-6.10295937921987,-6.10430409319596,-5.97237204081954,-5.7794141608103,-5.60124562645995,-5.47768177704005,-5.40353457375597,-5.36204355212956,-5.3367922229688,-5.32137902697462,-5.31079373290925,-5.30392235016516,-5.29965573351478,-5.29579059133924,-5.29529681967887,-5.29258694150518,-5.29339302238597,-5.29849559926993,-5.29592649923771,-5.30411513504555,-5.30468124922925,-5.31594693029088,-5.32264481776239,-5.34061196528816,-5.35988224869462,-5.39888611487099,-5.46187851866266,-5.57841474916474,-5.74695527575859,-5.94218006873757,-6.07492922032451,-6.0763174874514,-5.9403840606113,-5.74697562417286,-5.57462017558178,-5.46088844668221,-5.39586660840593,-5.3606799848777,-5.33872770882575,-5.32442575155887,-5.31416825237367,-5.30661287644427,-5.30244226760541,-5.2973826876255,-5.2975934626943,-5.29339892182803,-5.2940655537515,-5.30061245993992,-5.2971811642793,-5.30638898071026,-5.30628771153091,-5.31775923434855,-5.3227251707627,-5.33796515621804,-5.34973191631526,-5.37395389082258,-5.40676857981948,-5.47129954264539,-5.56415582314599,-5.6759771812788,-5.75177656197993,-5.75400386892783,-5.67602814437769,-5.56622564828233,-5.46917466421724,-5.40710169030617,-5.37129012575477,-5.35075267041783,-5.33582781741182,-5.32445016302986,-5.31578551091861,-5.30814869719772,-5.30465227341134,-5.2985586076629,-5.29971449706881,-5.29405610775372,-5.29463737942783,-5.3024506741191,-5.29810645596723,-5.30798150231189,-5.30689433088225,-5.31797539519877,-5.32055532450888,-5.33239571055631,-5.33637875216857,-5.3463521626507,-5.35090322288854,-5.36614859274934,-5.38656531686842,-5.41799289543294,-5.43854647521478,-5.44087126661941,-5.41870542642742,-5.38999145470837,-5.36565231625534,-5.3526631226857,-5.34440623489056,-5.33788930556667,-5.33034734046519,-5.32241650342187,-5.31609666183467,-5.30877436961635,-5.30641725167372,-5.29942332570498,-5.30170399253057,-5.29464839649808,-5.29497562637439,-5.3039044898094,-5.29864190212629,-5.30888077013521,-5.30663782426002,-5.31698098786638,-5.31701378587021,-5.32566829841331,-5.32363548921714,-5.32438559358601,-5.31273273534023,-5.3014503240018,-5.28367713077241,-5.27305922472639,-5.26475098871099,-5.26656908495058,-5.27291022735268,-5.28655471891022,-5.30092382064598,-5.31469829918214,-5.3225092015094,-5.32505539510631,-5.32337263668074,-5.3185355988055,-5.31489082010471,-5.30813551522327,-5.30731963837202,-5.29967144745667,-5.30321626161345,-5.29499503195012,-5.29518709963871,-5.30494482550374,-5.29879333637543,-5.30905216934637,-5.3054969572121,-5.31490578819016,-5.31261181828305,-5.31867127354474,-5.31267391152618,-5.30891444632701,-5.29133652229786,-5.27227681139609,-5.2441676853818,-5.22228218460989,-5.20618653601315,-5.2075872676778,-5.22135272831375,-5.24638654296939,-5.27171720168519,-5.29370391735602,-5.30774655011078,-5.31469537022853,-5.31704029383646,-5.31449216994066,-5.31340604611667,-5.30714695199334,-5.30796215129773,-5.29972387530058,-5.30449706606827,-5.29525127873368,-5.2951901141882,-5.3055452458015,-5.29866515923903,-5.30902175977926,-5.30433267391672,-5.31257687918546,-5.3081950573569,-5.31230270702139,-5.30393169451911,-5.29840557311981,-5.28006097668726,-5.26169118022271,-5.23536711976814,-5.2153266065192,-5.2003700569401,-5.20136850849373,-5.21354534470629,-5.23632899944551,-5.26006589152616,-5.28133978818484,-5.29649651457713,-5.30499616913068,-5.31010027264653,-5.30919237400767,-5.31063924792732,-5.30495327128832,-5.30765464874316,-5.2991153709496,-5.30521711254158,-5.295337157703,-5.29504776207639,-5.30590944158894,-5.29764730477844,-5.30697350840712,-5.30159654964323,-5.30957105479904,-5.30363761516757,-5.30618260295376,-5.29661057453207,-5.29077452697915,-5.27369646744336,-5.25845138298602,-5.23693962538645,-5.22177902930207,-5.21023378592747,-5.21132099911686,-5.22061510661509,-5.23855090265498,-5.25801400251776,-5.27611250722253,-5.29053445097104,-5.29896526321856,-5.30571237980099,-5.30548876169526,-5.30886843578879,-5.30330265829698,-5.30750665514468,-5.29856506358998,-5.30558113960429,-5.29521858914649,-5.29438234803423,-5.30595633373545,-5.30061254593675,-5.31020475627142,-5.30064748616858,-5.30647867555107,-5.30009575825014,-5.30147855470793,-5.29109186067036,-5.28524177705261,-5.26954152852086,-5.25684635091805,-5.23918928032719,-5.22756124376105,-5.21840462671582,-5.21900539352507,-5.22559559439835,-5.23895590241049,-5.25449768892017,-5.26929297541594,-5.28285994990323,-5.29085477462406,-5.29924788081123,-5.29971018371577,-5.30539616170692,-5.30030591633577,-5.30646746100054,-5.2975357622498,-5.30601895667103,-5.29486416563403,-5.29664309293704,-5.30004014903349,-5.28198117515574,-5.29972923236003,-5.30026798482937,-5.30343680842569,-5.29517567838239,-5.29661805472725,-5.28616413733515,-5.28093469779468,-5.26730642669531,-5.25736377050231,-5.2435705905635,-5.2353240562435,-5.22885290449471,-5.22986047126753,-5.23533686158033,-5.24569615195199,-5.25851077008056,-5.27025832306708,-5.28255549464041,-5.28901905755623,-5.29779350923505,-5.29756341889528,-5.30430007885715,-5.2985946723897,-5.3059750500387,-5.29601754817221,-5.30524800889567,-5.2969507240143,-5.29002348347636,-5.35088961294407,-5.3422335533315,-5.30095558448551,-5.29198004749211,-5.30495196224496,-5.29258167492477,-5.29321476293429,-5.28236276181539,-5.27635099988647,-5.26320289312222,-5.25358352520973,-5.2410474466274,-5.23326698904928,-5.22730115667904,-5.22712788876754,-5.23134736927429,-5.2390856829464,-5.25058584182704,-5.26051003815248,-5.27340212453845,-5.27972403217516,-5.29081934137504,-5.29127729622579,-5.30077910585747,-5.29592650216201,-5.30434149264329,-5.29886395710335,-5.30100566239495,-5.29131035348719,-5.23675476812837,-5.06669372205442,-5.23752967258932,-5.34718100278584,-5.27925898484904,-5.30046392063952,-5.28910010382511,-5.28891465043429,-5.27969653661221,-5.27490162938493,-5.26453514735745,-5.2576305808797,-5.24870106632955,-5.24374202163465,-5.24037036100915,-5.24102492084974,-5.24531430547752,-5.25126187789191,-5.26097453285546,-5.26790288446854,-5.27891819966061,-5.28248706195665,-5.29254112356007,-5.29098078649098,-5.30026766227015,-5.29348919647093,-5.30633307171071,-5.2795330375552,-5.34844901219727,-5.23726687254361,-6.0163529170595,-6.03295276227903,-5.06019041051903,-5.35011610637952,-5.29131465981997,-5.29800781337025,-5.28915200069829,-5.28507291970409,-5.2739689447757,-5.26550511649948,-5.25283118847319,-5.24237685459355,-5.23155532617011,-5.22364025418378,-5.21939668222341,-5.21802135613484,-5.22301777546651,-5.22827850423271,-5.24080181691084,-5.24857286415096,-5.26427093377644,-5.26956834195011,-5.28497303516626,-5.28494689452279,-5.29903805323782,-5.29350092135982,-5.30082544540642,-5.34149859960627,-5.07135540945197,-6.01955153982202,0,-6.02920549890665,-5.23847855883194,-5.29396722764725,-5.29556080140807,-5.29296383548384,-5.28750944638409,-5.28459091022613,-5.27727501485314,-5.27155873741907,-5.2635775810709,-5.2568217596693,-5.25041524077953,-5.24550240366269,-5.24356128427474,-5.24277495564651,-5.24675693695551,-5.24987720417179,-5.25860821514518,-5.2629270243799,-5.27375385812072,-5.27614861171122,-5.28698376636117,-5.2858017976698,-5.29533922509758,-5.29353041774633,-5.29592504642427,-5.23737573697526,-6.02691241192102,0,-3.03348021609633,-8.91241941111213,-8.12618368231874,-8.17442699432021,-8.19222862198881,-8.18503630334636,-8.19836215227376,-8.19823191871296,-8.21244279595362,-8.21572614386351,-8.23031477796686,-8.23485738804547,-8.24724585434307,-8.2500447772292,-8.25713307507425,-8.25564090456673,-8.25552533430065,-8.24929117095222,-8.24258472644108,-8.23375517892228,-8.22327211784753,-8.21523988437528,-8.20415410612653,-8.19956610690796,-8.18923083131283,-8.19212654735122,-8.17673301767526,-8.12990942150475,-8.89855594440479,-2.93906648411017,-8.91902728732847,-7.94500958733632,-8.24594134059497,-8.1851439533568,-8.19869475157208,-8.1935015854455,-8.19933500313757,-8.19562446102303,-8.19997788751326,-8.19678018959287,-8.19924915239933,-8.19619655297445,-8.19677690765542,-8.19418742692787,-8.19337518670155,-8.19215422614236,-8.19054903801384,-8.1915039679017,-8.18915847311514,-8.19245614622203,-8.18883835848244,-8.19419113203076,-8.18873097894203,-8.19600743230889,-8.18864799077774,-8.19199008126814,-8.23385047376093,-7.96171827713795,-8.91653534193785,-8.94336760933055,-8.14965474647278,-8.25238812356087,-8.18410281537949,-8.20496780959749,-8.19484297371968,-8.19304287575754,-8.1855418249801,-8.17934000477512,-8.17049227959629,-8.16190356479543,-8.15309126394174,-8.14491503504913,-8.13905941046253,-8.13463475214412,-8.13453959206587,-8.13570333929692,-8.14194863675947,-8.14753498119155,-8.158007113299,-8.16465774562223,-8.17628186091042,-8.18073533208261,-8.19145875958629,-8.19158568709813,-8.20423081078461,-8.18331591053527,-8.25122964749417,-8.14234390262383,-7.95641607252138,-8.13706729660817,-8.18086595722303,-8.18926053548833,-8.19691713612138,-8.19314237445522,-8.19497650751399,-8.19400017732455,-8.1945893201331,-8.19296419499908,-8.19279610291549,-8.19009268670519,-8.1888350589918,-8.18518418657786,-8.18321557677879,-8.17951111704961,-8.17804930969867,-8.1755760414259,-8.17582754714301,-8.17519811738304,-8.17740944867135,-8.17809620492896,-8.18160345308412,-8.18246569356193,-8.1866621024752,-8.18573439776261,-8.19362887826409,-8.1845370404543,-8.18851469136556,-8.24021000604528,-8.24357072225461,-8.18859038580115,-8.19686882853612,-8.19803662680328,-8.19445526976294,-8.19430289313734,-8.19156386320924,-8.1880733979978,-8.18452806079531,-8.17892570108803,-8.17410819074,-8.1672598620916,-8.16197095768482,-8.15543268316051,-8.15155620103058,-8.14756159138182,-8.14733670659881,-8.14748269149622,-8.1516914231435,-8.15532280270293,-8.16251668887146,-8.16724910610306,-8.17521086832545,-8.17872365342923,-8.18618745974899,-8.1869379936872,-8.19324252250257,-8.19528679586138,-8.19079092664612,-8.17898303104157,-8.19229927390724,-8.19472831799309,-8.18847830591396,-8.19548003198561,-8.19347004947534,-8.19244049639097,-8.19181197024198,-8.18886937706649,-8.18712617207923,-8.18250372634944,-8.17898770856505,-8.17260807769524,-8.1673609369637,-8.15997811052547,-8.15460108088416,-8.14874844411471,-8.14659031357908,-8.145305340852,-8.14842315148678,-8.15161056553595,-8.15839036687556,-8.16313877362378,-8.1707931456588,-8.17453975118431,-8.18140736539453,-8.18347868636797,-8.18815871253703,-8.1892088494292,-8.19639174980431,-8.19537874945682,-8.1958241863759,-8.18996503320835,-8.18877600575233,-8.19488035790949,-8.19246276114621,-8.19050936849965,-8.18916981753839,-8.18487917120858,-8.1819290655792,-8.17558007145867,-8.1701278867647,-8.16137323986848,-8.15318873710624,-8.1425304917038,-8.13358556144423,-8.12493912200459,-8.12134868491828,-8.12094980166946,-8.12682941283008,-8.13409546841855,-8.14508338292829,-8.15367422215378,-8.16425951015282,-8.17038557239343,-8.17852135081924,-8.18178156065893,-8.18764439935369,-8.18795530480927,-8.19126724832469,-8.19138164089768,-8.19531877409592,-8.18834484738214,-8.18586036576054,-8.19436565203424,-8.1917258506485,-8.1895880363904,-8.18859145495936,-8.18402936970278,-8.18092353508067,-8.17384336871396,-8.16694658578627,-8.15568175118922,-8.14307670217991,-8.1260954104614,-8.10878065903799,-8.09206617733826,-8.08300391519128,-8.08253015705628,-8.09307273828008,-8.10798267262592,-8.12640962900752,-8.14123195535427,-8.15584981378173,-8.16494426542804,-8.17453445759913,-8.17899888617345,-8.18514877941142,-8.18720244510891,-8.19081071314003,-8.19098940524812,-8.19431628925577,-8.18561588267095,-8.18289807678809,-8.19428844024203,-8.19081136285983,-8.18848272896166,-8.18724278679175,-8.18222809600644,-8.17837460996827,-8.17019852234207,-8.16091950372097,-8.145593229293,-8.12489483533505,-8.09476199247517,-8.05843722006609,-8.02187483427358,-7.9994679290559,-7.99963260596744,-8.02382711410386,-8.05904156921034,-8.09593424408013,-8.12418089343788,-8.14650121974869,-8.16011493841318,-8.17163478957461,-8.1775868660815,-8.18373857653774,-8.18632830513252,-8.18955274917016,-8.19054762034697,-8.19411554221901,-8.1822808334314,-8.17930161688998,-8.19495435262935,-8.19038209249983,-8.18848955688245,-8.18718162987277,-8.18241205642206,-8.17818976756538,-8.16958316099659,-8.15786609868703,-8.13699967780392,-8.10236199490916,-8.04556162865402,-7.96731654619635,-7.88384381013226,-7.82894193623026,-7.82964365286588,-7.88639619093966,-7.96889307315066,-8.04691698648359,-8.10193181492302,-8.13749277142976,-8.15712250367648,-8.17042256000288,-8.17747340500891,-8.18337272635788,-8.18651891065782,-8.18905781516231,-8.19038863819742,-8.19439989811823,-8.17847700408323,-8.17524594974394,-8.19633479717951,-8.19021783341466,-8.18929693932633,-8.18791352642613,-8.18412896838976,-8.18009261251271,-8.17226056003762,-8.15890134047586,-8.13167419233221,-8.0762231230742,-7.9738213914699,-7.81935378601882,-7.64678981297948,-7.52882190285795,-7.52951702737434,-7.64892597136401,-7.82150966362749,-7.97604519430767,-8.07733023746656,-8.13296837769921,-8.15930879647365,-8.17322043741414,-8.18014960864503,-8.18481098003952,-8.18789101344765,-8.18945954873672,-8.1907654384703,-8.19543405475111,-8.17430708741175,-8.17105220443145,-8.19867757657323,-8.19070614988782,-8.1915227420513,-8.19030823697501,-8.18867796656801,-8.18605301995072,-8.18136554104741,-8.16926050824082,-8.13845203984309,-8.06125762641858,-7.90299637170809,-7.64885545178306,-7.35513757149899,-7.14900591722776,-7.14833902008145,-7.35374641652678,-7.64860259590282,-7.90473420842641,-8.06370108257044,-8.14062252696814,-8.17081733335119,-8.18219572260293,-8.18675666327409,-8.18876430292043,-8.19088191621142,-8.19102403682783,-8.19177537041212,-8.19734874788646,-8.17000939699779,-8.16692347733277,-8.20195345307338,-8.19185153892272,-8.19517436535489,-8.1944165767891,-8.19626075673457,-8.19667521465727,-8.1985225695573,-8.19332290950436,-8.16898620952218,-8.08662873556708,-7.8976297758266,-7.57562728414697,-7.1906176974663,-6.91273673813079,-6.91040184598173,-7.1844272544545,-7.57102806785477,-7.89722479059673,-8.08952018467299,-8.17163724865117,-8.19585394699087,-8.19904517920085,-8.19807637981324,-8.1956672510459,-8.19572150207949,-8.19397557619292,-8.19352439427692,-8.2002254170583,-8.16593011693521,-8.16325736195321,-8.20613236424837,-8.1937496700272,-8.20029774349276,-8.20026595299518,-8.2067950024787,-8.21176607357203,-8.22360565118386,-8.23232823261554,-8.230893152601,-8.17957737538769,-8.03012250082356,-7.74764975539216,-7.39028393304273,-7.11980708887142,-7.11765037961239,-7.38246216053764,-7.74112812205786,-8.0275134334572,-8.1815309965286,-8.23255139766166,-8.23498801537185,-8.22327171152909,-8.21368511048694,-8.20533303198376,-8.20228533086148,-8.1983050651564,-8.19598962876862,-8.20403894145268,-8.1623260219485,-8.16034636607161,-8.21104019078482,-8.19629634301415,-8.20657592339025,-8.20732308272896,-8.21919001771414,-8.2292608327736,-8.25269160742151,-8.27933229726414,-8.31359591892388,-8.32738579473485,-8.29239876240604,-8.17360886059508,-7.993304475276,-7.83792791547857,-7.83807528506943,-7.98770500684148,-8.16967339620537,-8.28910621148759,-8.32775933506629,-8.31275260178034,-8.28135047421621,-8.25115401266302,-8.23166893435252,-8.2168705352552,-8.21010352400887,-8.20385656035084,-8.199074180691,-8.20868883972905,-8.15966761619593,-8.15850188429264,-8.2163553633492,-8.19929949836223,-8.21349636560671,-8.2147554713989,-8.23176641291023,-8.2458987126071,-8.27910304375786,-8.32014758970251,-8.38649167732559,-8.46476591835123,-8.55532867672762,-8.62996151607322,-8.67680681653786,-8.68280805307822,-8.68516276590879,-8.67380567928831,-8.62984577641295,-8.55186679449595,-8.4639645372405,-8.38281937064464,-8.32139794376441,-8.27629817941818,-8.24879340989731,-8.22862534941874,-8.21821179100781,-8.21010799017311,-8.20246919271711,-8.21387757498024,-8.15798299319196,-8.15788684034623,-8.22177526951365,-8.20248373290433,-8.22042442402674,-8.22159378135795,-8.242722303435,-8.25847755628835,-8.2965732178008,-8.34150585248686,-8.41897626339079,-8.52058642007944,-8.66512164234336,-8.82988068352772,-8.99513888321091,-9.09341571203115,-9.09732385480706,-8.99657794126176,-8.83489417242313,-8.66190060336787,-8.51975163435833,-8.41376892918107,-8.34283985275639,-8.29291697697704,-8.2620092321429,-8.23900785885803,-8.22571240301923,-8.21661985902128,-8.20593950094528,-8.21935426325411,-8.1577557610916,-8.15859495116717,-8.22681996156479,-8.20553381489353,-8.22671463965247,-8.22701523419302,-8.25074799338946,-8.26522130710269,-8.30259020167101,-8.33994548041369,-8.40437058767598,-8.48015519948499,-8.58920835443436,-8.7111110168873,-8.83922942308045,-8.91683728433542,-8.92314448414539,-8.84528641570287,-8.71998381176111,-8.587380673352,-8.48066820727841,-8.39879858599564,-8.34182219151432,-8.2982174158268,-8.26911113779653,-8.24640998718327,-8.23143684711959,-8.22255719045249,-8.2089724298467,-8.22461316437889,-8.15848723396111,-8.16055494686363,-8.23127329306556,-8.20818440078855,-8.23187440036163,-8.23049914199612,-8.25523744592598,-8.26598066378876,-8.29858024284589,-8.32163073738394,-8.360890996004,-8.38975101540384,-8.42636858424968,-8.45107792442899,-8.47706295621965,-8.48648564136234,-8.49299222108244,-8.48227638121396,-8.45944382972083,-8.42526142706012,-8.39213628857927,-8.3560139430889,-8.32456591635867,-8.29397686284022,-8.27038396357282,-8.25071978929991,-8.23522485637432,-8.22780209454503,-8.21152961642994,-8.22948715947395,-8.16074056440577,-8.16361835115778,-8.23469188696683,-8.21023948623242,-8.23560520976731,-8.23192871375787,-8.25639039124362,-8.26197597736742,-8.28812247219839,-8.29626178656282,-8.31212835734817,-8.30174027308711,-8.2816349954178,-8.23408590536076,-8.18758039512143,-8.14914513530339,-8.15342045956726,-8.18829803964964,-8.23990336453689,-8.27990280548975,-8.30485058843012,-8.3073233862938,-8.29941695162303,-8.28278231172623,-8.26609460484444,-8.25133080430438,-8.23625215572823,-8.23148833208467,-8.21303305536624,-8.23342522426959,-8.16335733497609,-8.16756561198025,-8.23712120564854,-8.21155390255883,-8.2377699296875,-8.23136007549135,-8.25460993348675,-8.25453799470777,-8.27425006023673,-8.27036506595367,-8.27064457208352,-8.2388800536427,-8.19423182811644,-8.12011823350583,-8.05116266551714,-7.9993684607075,-8.00219230539502,-8.04887543212168,-8.12443320026511,-8.1923795961466,-8.24339129509309,-8.26708302105538,-8.27473996628536,-8.26962427651757,-8.25930773327375,-8.25011058905293,-8.23578626713916,-8.23433716883931,-8.21398785095595,-8.23658762095285,-8.16705852989446,-8.1720521395897,-8.23835145977657,-8.21222254968687,-8.23857499111064,-8.22934233573774,-8.25098146555017,-8.24572977599901,-8.25994772155344,-8.24764917886709,-8.23978022586884,-8.20045662943826,-8.15317164174355,-8.08140419407014,-8.01916416233828,-7.97303096959507,-7.97522214989763,-8.01503423075369,-8.08392719530736,-8.14972807100821,-8.20404635378345,-8.23526574314462,-8.25097606354366,-8.25438279990463,-8.24920035340251,-8.24588100331148,-8.23260990313751,-8.23525502880574,-8.21363535151405,-8.238526793706,-8.17051066543539,-8.17699814261451,-8.23843021424045,-8.21206861048705,-8.23806719562023,-8.2260238131969,-8.24545601215568,-8.23571740048975,-8.24575743068741,-8.2281640215074,-8.21710474694512,-8.17767039347071,-8.13681359955478,-8.07729661993786,-8.03024946000187,-7.99490918653397,-7.99734894598215,-8.02661719943799,-8.08074229382999,-8.13477290077904,-8.18315789049939,-8.21497016515216,-8.23362050835701,-8.2426458545973,-8.24064523572165,-8.24231841021679,-8.22960347259996,-8.23588388600441,-8.21312814444949,-8.23963902358892,-8.17363533041411,-8.18180097058996,-8.23812012339171,-8.21126990621312,-8.2360979688687,-8.22226860545114,-8.24038211930459,-8.2269987165288,-8.23378176445893,-8.21293661903473,-8.20087667483936,-8.16364289441403,-8.13006884091005,-8.0820072295941,-8.04756536740338,-8.02071616425374,-8.02266652595865,-8.04274505820544,-8.08295362930132,-8.1250876654887,-8.16541052150107,-8.19563369647817,-8.2147096491535,-8.22831761136176,-8.22863437395053,-8.23576786723999,-8.22386024539022,-8.23474895181947,-8.21138304576676,-8.23997968315435,-8.17764192506521,-8.18651791553214,-8.23604124531707,-8.21285884711892,-8.23625750815345,-8.21733701187915,-8.23254287916826,-8.21731327065831,-8.2220107900119,-8.19986103957246,-8.18867328537404,-8.15527684667658,-8.12906886717981,-8.09119184562849,-8.06705082100316,-8.04745931758495,-8.05019308799671,-8.06494932379267,-8.09556439554406,-8.12874451519299,-8.16161037333364,-8.1889965500947,-8.20618665074493,-8.22176381584603,-8.22212342720782,-8.23243023134216,-8.22020232505938,-8.233586667889,-8.20987131613247,-8.23930816654171,-8.17577033188735,-8.19313677302373,-8.23039851070381,-8.19667973588022,-8.22815078905125,-8.21730146914765,-8.22897429903836,-8.21032214413763,-8.21360883790819,-8.18983304325621,-8.17844958097673,-8.14707296804053,-8.12449211462403,-8.09223031825131,-8.07273967513266,-8.05645213871708,-8.05758202897749,-8.06825093488319,-8.09098109155885,-8.1185679098035,-8.14536604198362,-8.17248994872265,-8.18827680145194,-8.20833828178936,-8.20930007461095,-8.22564240307634,-8.21344304833312,-8.23263149694913,-8.20722393824693,-8.24009802533433,-8.18541426486721,-8.19428752218264,-8.27361235835757,-8.25008648816345,-8.22280912700577,-8.20344777014204,-8.22358038355235,-8.20131523995066,-8.20418387159735,-8.18184514991272,-8.17219560335663,-8.14556500015621,-8.12843809221697,-8.10334425763774,-8.09004275574993,-8.07845349376124,-8.08088174182679,-8.0897243023062,-8.10797368703153,-8.13021938043538,-8.15167612057583,-8.17493247217678,-8.18760739770709,-8.20640021212922,-8.20614316384382,-8.22251205291074,-8.21048134625292,-8.22807879997651,-8.20858418376921,-8.23174300852054,-8.16595407032729,-8.13982815253641,-8.00581406770801,-8.15122854089016,-8.27395017078561,-8.19274076120604,-8.22139788772521,-8.19660896683426,-8.19689546921552,-8.17296220611074,-8.16172432842048,-8.13520155597621,-8.11785909895725,-8.09474939171879,-8.0811723176987,-8.07152306846557,-8.07096866138844,-8.08048936769945,-8.0929565639757,-8.11700629470063,-8.13261547952468,-8.16160603913816,-8.16963442408172,-8.19780586382483,-8.19314181952833,-8.22038875336446,-8.20247847780016,-8.23479249182334,-8.18800089816747,-8.28581442485998,-8.12447958002559,-8.91914577799492,-8.94930102166628,-7.97874390054232,-8.27168249920782,-8.20707029253781,-8.2133231149168,-8.19696767028515,-8.18722076960158,-8.16555778450865,-8.14695682613349,-8.12115340937852,-8.09897664475445,-8.07607261214189,-8.06017836078578,-8.05010093454425,-8.04939528559075,-8.0575410991125,-8.07252429627579,-8.09468642779819,-8.11661173623662,-8.14312372028283,-8.16135502086673,-8.18501883217864,-8.19344994512154,-8.21271894463198,-8.21037818456703,-8.2220494079382,-8.25732861944019,-8.01136438826917,-8.86237089861853,-2.86073692002033,-8.91930887341135,-8.13794156353702,-8.17674100989507,-8.19772515964734,-8.18537246546478,-8.19825563075753,-8.19476899995134,-8.20472391063643,-8.20646167205505,-8.21349615419052,-8.21917414659536,-8.22127612773002,-8.22965554842414,-8.22406866716136,-8.23475406034204,-8.21929136877816,-8.23361671055461,-8.20763202714947,-8.22825395117643,-8.19269106403112,-8.22189099928513,-8.17868437140662,-8.21686579471691,-8.16803800022439,-8.21617498707595,-8.15897230135218,-8.15656363096506,-8.88762486330089,-2.81518723618785,-4.85531367562965,-10.6153445668443,-9.84628004108432,-9.88109324653968,-9.9212872059278,-9.90903049240822,-9.94793225438038,-9.95318788052747,-9.99740495468954,-10.0148215617421,-10.0614179969532,-10.083145630658,-10.1225172708906,-10.1368525399747,-10.157146077928,-10.1543029267817,-10.1487654659997,-10.1278572964159,-10.0998848717554,-10.0701616231871,-10.0307037589135,-10.0051110562227,-9.96497309245714,-9.9525006551968,-9.91666406209723,-9.92321036250881,-9.88472022635009,-9.85350772743577,-10.6013128422463,-4.67207577539033,-10.6613292754312,-9.67833681862103,-9.99558104554851,-9.92185886976894,-9.9470005563828,-9.93397558121158,-9.94867624522284,-9.94014768921995,-9.9512509214274,-9.94510214599418,-9.95209888776944,-9.94717809860711,-9.94971265879303,-9.94609074085382,-9.94446143130618,-9.94348687440058,-9.93831910832751,-9.9416869834377,-9.93300983505926,-9.94174219804428,-9.92882266979007,-9.94316631646094,-9.92527724373208,-9.9452727290307,-9.92243635546863,-9.94219078936123,-9.96634140768081,-9.7132755304342,-10.6466000398788,-10.7100628593704,-9.90814037284286,-10.0045662680327,-9.93089781850545,-9.95433399984115,-9.93859100775788,-9.93524563390191,-9.92160634028098,-9.9108149624639,-9.89500082121657,-9.88010454432484,-9.86465814419891,-9.85070648209903,-9.84077300383226,-9.83359604571319,-9.83393376220817,-9.83654276587283,-9.84789560253281,-9.85801162055494,-9.87648537606239,-9.88814286625884,-9.9083659400106,-9.91593984969237,-9.93443762472987,-9.93469626710293,-9.95402962803728,-9.93001417431337,-10.0038252688003,-9.89024837342578,-9.70360587776067,-9.88039456572067,-9.9133655160684,-9.93102159021447,-9.93886591295272,-9.93486908803096,-9.93905127556681,-9.93796736308621,-9.94126607931821,-9.93974597239325,-9.94210016465119,-9.93923630456747,-9.93959909879773,-9.93497210695902,-9.93324308356309,-9.92764197622007,-9.92523272551507,-9.9204940303215,-9.91936620034461,-9.91688485349894,-9.91799856662224,-9.9176733779045,-9.92062990454614,-9.92125383777085,-9.92537506957457,-9.92464562905907,-9.9328892982936,-9.92427629092188,-9.92834059247054,-9.9821123014913,-9.98589050967188,-9.93062989755931,-9.93917337374439,-9.94399444017246,-9.93811817056183,-9.93704271471458,-9.9331096014531,-9.92674232112432,-9.92147377748449,-9.91185708023398,-9.90465949464278,-9.89333369903043,-9.88560119829283,-9.87517698682315,-9.86989004908917,-9.86382737492556,-9.86427625700186,-9.86482122748635,-9.87194032129858,-9.87787293649484,-9.88928033174635,-9.89684813078357,-9.90910932681176,-9.91476896207015,-9.92589308749537,-9.92753587030114,-9.9365568507408,-9.9385614967896,-9.93540980213782,-9.92243776019787,-9.93775826620878,-9.93444224200015,-9.92489472493119,-9.93928879471582,-9.93601784962451,-9.93415184209638,-9.93431896315402,-9.92935985077848,-9.92806268766466,-9.9206990465959,-9.91671456756877,-9.90681433466547,-9.90005289358896,-9.88867937740929,-9.8813935745278,-9.87222258236345,-9.86923611471708,-9.86668760157738,-9.87105862716509,-9.87515146709022,-9.884759806591,-9.89142898621998,-9.90233445330935,-9.90784325416589,-9.91760029243035,-9.92082906034432,-9.92765451261769,-9.92939084871368,-9.93819025933879,-9.93714907970949,-9.93960462123643,-9.92818609645643,-9.92483401608228,-9.93889933710375,-9.93435732555192,-9.93073404011228,-9.92953590946397,-9.92184276661056,-9.91833513649991,-9.90759186563829,-9.90029855279906,-9.88620129558496,-9.87489071839164,-9.8584416490051,-9.84618275887135,-9.83319094034237,-9.82868524225789,-9.82781347453664,-9.83671374084984,-9.84708165437276,-9.86336831117396,-9.87604950754456,-9.89181756594816,-9.90113920127393,-9.91321153382395,-9.91837461271701,-9.9268254982358,-9.92798153920111,-9.93281619742712,-9.93304011202685,-9.93921971441993,-9.92380397708688,-9.91843651522856,-9.93828038152565,-9.93314107909389,-9.92918378887209,-9.92885164577673,-9.92055013181099,-9.91713089826475,-9.90506117861712,-9.8958153200623,-9.87775926020464,-9.86015374752842,-9.83454408870121,-9.81075541990205,-9.7866270755334,-9.77469504624444,-9.77343696574884,-9.7883062877617,-9.8086660009087,-9.83501065982713,-9.85636534697585,-9.87800610849698,-9.89180623190468,-9.90617487437035,-9.91337387345317,-9.92241368983921,-9.92600509818157,-9.93108381487634,-9.93187766688683,-9.93793351697996,-9.91774657386527,-9.91167990736039,-9.93840191198786,-9.93138634042671,-9.92686443496386,-9.92623381024082,-9.91668698349671,-9.91212533808132,-9.89778870818737,-9.88489913137647,-9.86046557029296,-9.8316225021428,-9.78828507537328,-9.74015652798482,-9.6911190085878,-9.66293765768681,-9.66275887453228,-9.69480788076625,-9.74070368819821,-9.79080476146472,-9.83005442292291,-9.86258231126121,-9.88317840170159,-9.90072537229188,-9.91041371166022,-9.91970005025446,-9.92441011578409,-9.92896156429894,-9.93092150403499,-9.93785576267309,-9.91011293180574,-9.90331989577678,-9.93971690780074,-9.93040831054179,-9.92630405956203,-9.92575721534321,-9.91602033173044,-9.91093513542984,-9.89527885030363,-9.87873997034428,-9.84621606655742,-9.79944877835552,-9.72316741877608,-9.6253028143236,-9.5216343446555,-9.4563548698788,-9.45725384731073,-9.52707668407544,-9.62789400875349,-9.72645175836993,-9.7981920020182,-9.8476856581346,-9.87675628244004,-9.89722965320485,-9.90899603512063,-9.91815217372786,-9.92401138835467,-9.92763132107547,-9.93025518480374,-9.93854749906352,-9.90123858531482,-9.89371728817823,-9.94206775874359,-9.92965787269358,-9.92668517245319,-9.92614337920689,-9.91718409342554,-9.91227653646677,-9.89694272204007,-9.87807818465193,-9.83745359933611,-9.76701422578612,-9.64027731914165,-9.46021812401992,-9.26154923299349,-9.12978371573684,-9.13129398549133,-9.26801439008348,-9.46512122080252,-9.64618935460653,-9.76856319807159,-9.84060322683819,-9.87790698599673,-9.89936729876773,-9.91149135397731,-9.91913916797605,-9.9253281902996,-9.92755664330417,-9.93031128565605,-9.94038115568058,-9.89134731249479,-9.88355492738084,-9.94587070075782,-9.92986057255702,-9.92915409977821,-9.92898333990606,-9.92251364207959,-9.91956104635514,-9.90804877481797,-9.89148746495842,-9.84861382030934,-9.75889846978919,-9.57994170152608,-9.30619633497189,-8.99302742288878,-8.77721257373704,-8.77695497338681,-8.99497723981003,-9.3079863499085,-9.58592675904546,-9.76272436983458,-9.8533863686168,-9.89296386269222,-9.91043347099634,-9.91962127207025,-9.92366646949621,-9.92894425632182,-9.92909060858715,-9.93124243156716,-9.94353013814977,-9.88093175900828,-9.87329682744476,-9.95101483864228,-9.93098650740584,-9.93368224675206,-9.93429141547143,-9.9322992743108,-9.93370985412951,-9.93112127484109,-9.92537030960258,-9.89563266160677,-9.81246809571698,-9.62136859122417,-9.30644168849991,-8.93027265471993,-8.65923962964489,-8.65533671838551,-8.92240656710124,-9.29874591549587,-9.62254511913926,-9.81621689441996,-9.90114812575336,-9.9281809930324,-9.9331790432762,-9.93476325262651,-9.93253993903347,-9.93531153620954,-9.93263889721257,-9.9332542806635,-9.94810707337016,-9.87078877255652,-9.86384532155008,-9.95743624373322,-9.93324572913427,-9.94045324219088,-9.94225048215612,-9.94667530969027,-9.95477358153741,-9.96639069002063,-9.98126741618005,-9.98597863800135,-9.95258911286822,-9.82946190968133,-9.5921393039419,-9.28221705957959,-9.03976069247362,-9.0337581551007,-9.26621906978828,-9.57553036701072,-9.82323899163364,-9.9527211518631,-9.98935195272639,-9.98396357329424,-9.96711778338172,-9.95650875545009,-9.94560264919965,-9.94430324494479,-9.9382074582821,-9.93632524114064,-9.95401504815355,-9.86149759683063,-9.85593487539564,-9.96486511797079,-9.936525107193,-9.9490666887824,-9.95214499169382,-9.96418729619232,-9.97991962369285,-10.0083488228455,-10.0486409310168,-10.1009905971402,-10.1481004145867,-10.1581339240057,-10.103060697873,-9.98516502734405,-9.8632435226307,-9.85918738272944,-9.96867418604315,-10.0868319193948,-10.1484475295676,-10.1443875209163,-10.0999042104058,-10.0501147272176,-10.0071516422123,-9.98236896863987,-9.96178196683472,-9.95539070013997,-9.94571635508629,-9.94041565580798,-9.9611421149012,-9.85420776909123,-9.85032110287165,-9.97276615695557,-9.94056820713772,-9.95881964828972,-9.96281044735438,-9.98247511046598,-10.0044836195656,-10.0474717832939,-10.107417303918,-10.1984937885621,-10.3114956549792,-10.4380384985357,-10.5489721779089,-10.621323870111,-10.6352773673297,-10.6358106184086,-10.6121039221074,-10.5423056948991,-10.4307341649254,-10.307404764761,-10.1933397424724,-10.1077952731768,-10.0441729552851,-10.0076640102672,-9.97865499078965,-9.96710104372813,-9.95433054248081,-9.9450136004528,-9.96891870477791,-9.84900998576933,-9.8475239106494,-9.98074173875829,-9.94502472882587,-9.96882895684276,-9.97284646842888,-9.99888483537303,-10.0237210578301,-10.0746297848324,-10.139586585057,-10.2409307952232,-10.3642455011961,-10.5110630721558,-10.6491561817331,-10.7670802812433,-10.8264687380568,-10.832159013907,-10.7733636079604,-10.659225708381,-10.5096265816375,-10.3629885445728,-10.2344555245274,-10.1406442602215,-10.0700564453357,-10.0281124410129,-9.99414500833635,-9.97835906155905,-9.96367377198815,-9.94996847926897,-9.97712922218968,-9.84717564051932,-9.84779290040641,-9.98797890940284,-9.94940720528777,-9.97811725881764,-9.98101558584399,-10.0114038579978,-10.0348807353347,-10.0859059344482,-10.1406761153678,-10.2227639215981,-10.3024820104504,-10.3803265075972,-10.4235039343346,-10.4455365910688,-10.4441212163245,-10.4551865103352,-10.4626640826624,-10.4426338954257,-10.3832141696593,-10.3044795164896,-10.2160222067113,-10.1427699815144,-10.0800217102032,-10.0398576466049,-10.0053881894946,-9.98702221997386,-9.97216171447278,-9.95426093602137,-9.98475672317998,-9.84755143524304,-9.85115764929499,-9.99429763490219,-9.95336937108645,-9.98595177085279,-9.98649707186457,-10.0189491904272,-10.0374070732525,-10.0826686117269,-10.1182431380045,-10.1678201493855,-10.1889255287651,-10.181018465749,-10.1135555440501,-10.0211752254131,-9.94340247552459,-9.95383873380848,-10.0338173586021,-10.1285330148554,-10.1828120961016,-10.1929817095682,-10.1620383012962,-10.1224198162393,-10.0766723845444,-10.0437305452222,-10.0127925586186,-9.99342490157753,-9.98019883969818,-9.95825837880657,-9.99194775050322,-9.85166669925868,-9.85721969318171,-9.99888008048371,-9.95656857289641,-9.99184319404828,-9.98910032001472,-10.0217793146902,-10.0330063671543,-10.0697860285168,-10.085034067629,-10.1050962640334,-10.0818738638754,-10.020517651438,-9.89652429598187,-9.7563639721898,-9.64887814230716,-9.65421572759735,-9.75768800138185,-9.90349292002926,-10.0180900695786,-10.085222353016,-10.0981817109702,-10.08893395707,-10.061872122916,-10.0385396531621,-10.0141130197736,-9.99519943742788,-9.98555611447956,-9.96042514409437,-9.9973546413443,-9.8567273364333,-9.86568673653027,-10.0020155363828,-9.95877971435524,-9.99548506560782,-9.98869051423516,-10.020108233785,-10.0231148066492,-10.0510402775356,-10.0493643500197,-10.0493384523304,-10.0030509476349,-9.9261249277819,-9.79792416933179,-9.66755773939498,-9.5708262610627,-9.57373263743145,-9.66332225102606,-9.80239519803708,-9.92340249059384,-10.0093363252553,-10.0450500933873,-10.0563063156244,-10.0450770247606,-10.0308520461744,-10.0139555643674,-9.99583392052097,-9.9906224191374,-9.96245029342539,-10.0019768631918,-9.86468216538607,-9.87559555967569,-10.00324865451,-9.96018365149782,-9.99736125085876,-9.98645640615537,-10.0160925484387,-10.0114892267422,-10.0316545078111,-10.0176292473694,-10.0065942800809,-9.95208907246887,-9.88011071988127,-9.77083699840576,-9.67037705090058,-9.59640864062481,-9.59860676400348,-9.66311467766751,-9.77236237787143,-9.87369899588647,-9.95566027328691,-9.99876987082999,-10.0212333579276,-10.0222178660405,-10.0157585094369,-10.0073875344482,-9.99086947715213,-9.99178762293888,-9.96181007411237,-10.004310026578,-9.87219493603465,-9.88689917850058,-10.0027242561803,-9.96021158773504,-9.99681024562483,-9.98145332555197,-10.0082449359834,-9.99698505134791,-10.0112630924865,-9.98915653047307,-9.97379532994022,-9.91965774496534,-9.86011058459043,-9.77392775452618,-9.70317352386786,-9.65051558389832,-9.6540311612656,-9.69841165846807,-9.77981715126017,-9.85867658759494,-9.92960877305589,-9.97260881453122,-9.99946143900986,-10.0083060617939,-10.0063400088039,-10.0046236207395,-9.98841337684708,-9.99407858623411,-9.96198692400586,-10.0058838157356,-9.87930383501675,-9.89811892979267,-10.001891321928,-9.96004335888411,-9.99576085974573,-9.97765812174798,-10.0026135090346,-9.98562390720767,-9.99533368108514,-9.96769679770028,-9.95053612998446,-9.89868557230993,-9.84984305689738,-9.78058164708657,-9.72947232505747,-9.68969457480589,-9.69200327823136,-9.72078226091981,-9.77968155617976,-9.83946128681451,-9.89823105613973,-9.93912912914001,-9.96741208011352,-9.98375358032047,-9.9860121953171,-9.99316662180264,-9.97862719467404,-9.99203615484283,-9.95916630288161,-10.00635258681,-9.8886803365483,-9.90974119018059,-9.99757819500865,-9.96040373406271,-9.99308394973462,-9.96860271477177,-9.99035962684803,-9.97010628461277,-9.9772706921332,-9.94774443167749,-9.9326018786092,-9.886651709097,-9.84992013694499,-9.79665315668959,-9.76263896569851,-9.73496679214631,-9.7400154342877,-9.7615199083917,-9.80699492676168,-9.85354135239326,-9.90156746843493,-9.93769124049137,-9.96272772856105,-9.98067402425137,-9.98191919346641,-9.99217741005601,-9.97601197540071,-9.99166676969922,-9.95772918392569,-10.004603999602,-9.8849363378091,-9.92241174178581,-9.9927827401284,-9.94702432433976,-9.98909343585151,-9.97073837544976,-9.98844863147392,-9.96280069910084,-9.96716192907202,-9.93356610939781,-9.91686258817938,-9.87141323761492,-9.8379291051868,-9.79021657481246,-9.76070837165487,-9.73556321477609,-9.73629171769963,-9.75040435096528,-9.78347008469041,-9.82221062292258,-9.86215767938895,-9.90008715908501,-9.92494570530486,-9.95255101777954,-9.95656255969569,-9.97882419771809,-9.96376304762394,-9.99081220248198,-9.95427446454776,-10.0082668655039,-9.90486252518577,-9.93276604073979,-10.0293395106234,-9.99423402652039,-9.97557833918595,-9.94969729746956,-9.97517232380778,-9.94652417846561,-9.95182009995747,-9.9219191915735,-9.91061667245225,-9.87488102318054,-9.85327884174049,-9.81952047169161,-9.80334965595695,-9.78801616321524,-9.79392549566968,-9.80624037949245,-9.83390706322951,-9.86301646351826,-9.89414054742775,-9.92240266769916,-9.94039107882056,-9.96115010130747,-9.96095521703166,-9.9785266815308,-9.96211571532229,-9.98328413043083,-9.95410761243861,-9.99431840040989,-9.8666464078085,-9.87571890739402,-9.77339354833233,-9.90230760805204,-10.0363646749658,-9.94395803340155,-9.97884156876579,-9.94238360317864,-9.94278630041591,-9.90579197710686,-9.88832764002295,-9.84713333489097,-9.81974764761414,-9.78337910694563,-9.76121957415829,-9.74520316948928,-9.74283526526429,-9.75642602198039,-9.77451544730319,-9.81109493891673,-9.83496346302641,-9.87997974717418,-9.89311334945466,-9.93743472553845,-9.93148761219789,-9.97452074338926,-9.94816571576417,-9.99770602116495,-9.9327882759608,-10.0612991935359,-9.84222821254212,-10.6734215574471,-10.7006015249035,-9.73339461769493,-10.0255634657716,-9.95897927823861,-9.96330007424396,-9.94295285918737,-9.92764735773039,-9.89907469146873,-9.87186823102777,-9.83647615355698,-9.80488414062119,-9.77252363673911,-9.75076902985707,-9.7354872455032,-9.73663571127345,-9.74586338856753,-9.77089896591131,-9.79805257661559,-9.83454871870334,-9.86540217886857,-9.89824509095753,-9.92269011118931,-9.94322398126968,-9.9597362026808,-9.96623417659034,-9.97395906898966,-10.0122530895469,-9.77856269842105,-10.5344840245293,-4.57031527254323,-10.6298653221665,-9.86880005576652,-9.88545128102509,-9.93353898694928,-9.90901057118642,-9.94866057950192,-9.94644827733962,-9.98272383354558,-9.9974305929074,-10.0283673397523,-10.0537161836014,-10.0705605990752,-10.0983461353326,-10.0895397548639,-10.1146490118621,-10.0726454589406,-10.0985268334257,-10.0241223015469,-10.0618017081829,-9.96207324656994,-10.0225137839506,-9.90570359374975,-9.9929685748499,-9.86567067370243,-9.97839263120067,-9.84192513133956,-9.91068500713604,-10.574959053377,-4.50022006216918,-5.49136466394007,-11.1480746003822,-10.4007231994338,-10.4200635560314,-10.4850287353574,-10.4677856076363,-10.5349794281782,-10.5471544995045,-10.6249513683564,-10.6592847648062,-10.7420350275155,-10.7841698589215,-10.8542123826915,-10.8823594858753,-10.9176936131,-10.9136021784061,-10.9018285406949,-10.864022194353,-10.8117599195904,-10.7576880571954,-10.6853206579306,-10.6389953719934,-10.5661503406921,-10.5438921193783,-10.4796530179622,-10.489526871438,-10.4253413272073,-10.4114174361192,-11.138429749327,-5.22064413098238,-11.2395821963437,-10.2483131773649,-10.5820082655048,-10.4942015428538,-10.532575130223,-10.5111029264503,-10.5362922982772,-10.5231324970017,-10.5426399912721,-10.5343643529061,-10.5474627190371,-10.5417757636,-10.5473606648717,-10.5435960203672,-10.5412716835242,-10.5408905462115,-10.5310511551652,-10.5367473512127,-10.5195575563363,-10.5337245946107,-10.5086483718373,-10.532635455442,-10.4991242177337,-10.5334496119861,-10.4917419651147,-10.5305291491137,-10.5334579371864,-10.302223261758,-11.2106783617725,-11.311941898804,-10.5054627306604,-10.5933031235423,-10.5153099418806,-10.5407158152377,-10.5199177353504,-10.5148684389919,-10.4955830879712,-10.4803345601736,-10.4580711303346,-10.4372179220948,-10.4156638178043,-10.3963847079601,-10.3827865354107,-10.3732311655051,-10.374122283305,-10.3783375614906,-10.3945118541272,-10.4091125034983,-10.4349235313719,-10.451497143628,-10.4794045438843,-10.4901668140616,-10.5153994901313,-10.5161584587377,-10.5410753736361,-10.5146413622793,-10.5932782844496,-10.4762161245534,-10.2896631639249,-10.4624207045718,-10.4833322549917,-10.5096254587709,-10.5181613530467,-10.5136723342364,-10.5207006696716,-10.5195736406186,-10.5261615003705,-10.5251102031492,-10.5306776120703,-10.528246002213,-10.530957170137,-10.5260161985032,-10.5250851461818,-10.5180803494629,-10.5148516656337,-10.5079877858039,-10.5050428115161,-10.5005295415117,-10.499631505367,-10.498025861484,-10.499260120807,-10.4995510330536,-10.5023616470572,-10.5020564569312,-10.5094784686696,-10.5018568376939,-10.5050239631332,-10.5610484747412,-10.5643079846459,-10.5100364002733,-10.5183964252791,-10.5270151485007,-10.5191783035403,-10.5170440867881,-10.5124120646091,-10.5033094233159,-10.4969396775008,-10.4837264393323,-10.4749183066827,-10.4597467076203,-10.4504051676636,-10.4367814301812,-10.430755672824,-10.4230937374671,-10.4244132180951,-10.4253787919339,-10.4349813847663,-10.4428418700334,-10.4575632866598,-10.4674866327358,-10.4829499461169,-10.4904503917634,-10.5041472861564,-10.5066749986928,-10.5174490991094,-10.5196816947202,-10.5171553564024,-10.5036490293819,-10.5201166795213,-10.5112765538814,-10.4983523714148,-10.5203427032164,-10.5160907840508,-10.5132616368255,-10.514673915555,-10.5077859550219,-10.5075303043487,-10.4977671174679,-10.4941025083854,-10.4812855440811,-10.4739627260013,-10.4593695262627,-10.4510660999716,-10.4391854543723,-10.4357386814757,-10.4319732412394,-10.4371668281911,-10.4416869603175,-10.4531369961064,-10.4611403612026,-10.4741474792495,-10.4810525275445,-10.4926129422103,-10.4969516911327,-10.5049760427002,-10.5076284434219,-10.5171902212473,-10.5165874636402,-10.5205167525478,-10.5033905413714,-10.4976775783355,-10.5202633944838,-10.5138222327748,-10.5084470281219,-10.5078979959232,-10.4969043216389,-10.4935457174185,-10.4787812632887,-10.470624937449,-10.4519114782707,-10.4387646983598,-10.4175900735524,-10.4033838329699,-10.3869707231346,-10.3821785562407,-10.380785364548,-10.3920284164696,-10.4045453132585,-10.4247338610978,-10.4404975696467,-10.4600676357854,-10.4719918648878,-10.4868639383497,-10.493772685814,-10.5039004670167,-10.5060737034994,-10.5117088920927,-10.5123500123536,-10.5203581325015,-10.4960220415387,-10.4875911728225,-10.5196267928691,-10.5121523015829,-10.5062421056025,-10.5071048513225,-10.4950618522222,-10.492093701207,-10.475330749171,-10.4648848206914,-10.4408888256346,-10.4200855434653,-10.3875317323141,-10.3596536331446,-10.3299337435967,-10.3164607650297,-10.3143434254429,-10.3323216231845,-10.3562185703886,-10.3882208561999,-10.4143748102302,-10.441270914038,-10.4589102352706,-10.4768644155993,-10.4865541435395,-10.4976243213365,-10.5028543896781,-10.508764451521,-10.5104203637977,-10.5189163007517,-10.4863239690863,-10.4766565068376,-10.5199617890743,-10.509546990386,-10.5026002863048,-10.5031849683652,-10.4889535998991,-10.4845387867325,-10.4642198407838,-10.449087413075,-10.4166082106609,-10.3823015733426,-10.3287905645881,-10.2734865003624,-10.2160730155103,-10.185124387022,-10.1844829477014,-10.2216364052981,-10.2738804347292,-10.3327951324222,-10.3797803023044,-10.4200049982803,-10.4463302880488,-10.4686687348749,-10.4817983917535,-10.4934664004916,-10.5003811968538,-10.5057278832097,-10.5088557424158,-10.5190069347521,-10.4739681763032,-10.4630495939796,-10.5218441685211,-10.5079369259459,-10.5011844036219,-10.5020753712463,-10.4869366407405,-10.4818697378202,-10.4590615912199,-10.4392165144016,-10.3963530001708,-10.341611333003,-10.2517449462943,-10.1438588673748,-10.0296381504735,-9.96103339552589,-9.96202853375206,-10.0383750815282,-10.1474953673719,-10.2573180462631,-10.3394034293599,-10.3989914702407,-10.4357918945775,-10.4622587489082,-10.4785165272692,-10.4903681577178,-10.4990815647755,-10.5033902489443,-10.5075260187696,-10.5200765761308,-10.459488285915,-10.4472970099666,-10.5249708508346,-10.5064486456863,-10.5006768342709,-10.5017269061096,-10.4867308017612,-10.4817553160236,-10.4582939340969,-10.4353938460986,-10.3829294473571,-10.3039788250998,-10.164205276449,-9.97788695918521,-9.77419199075061,-9.64397965304265,-9.64626108097803,-9.7857218689332,-9.98569906424285,-10.1743404117303,-10.3057146950842,-10.3881536204696,-10.4342751550337,-10.4623964044966,-10.4797883463905,-10.4902035316693,-10.4998157200042,-10.5024917948825,-10.5070095119499,-10.5225717186516,-10.4432393655272,-10.4304625276207,-10.5298963261499,-10.5061157800746,-10.5027031297313,-10.5043770423421,-10.491597247733,-10.4888653334342,-10.469019712673,-10.4490212604997,-10.3955897269851,-10.3027393810095,-10.122345657709,-9.86329609515082,-9.56989525206862,-9.37284595072138,-9.3729629853861,-9.57612489725454,-9.86725097518013,-10.1331420436917,-10.3074898175525,-10.4031825312819,-10.4498783703786,-10.4732851367222,-10.4878092640219,-10.4942108413536,-10.5032867184626,-10.5034478588542,-10.5075080216754,-10.5266848320673,-10.4259808132428,-10.4133042617662,-10.5364268692726,-10.5068816216122,-10.5072156613811,-10.5100178238034,-10.5019400327109,-10.5044425326118,-10.4946207023371,-10.4882657676732,-10.4536938325795,-10.381065563835,-10.2145631047477,-9.9563038780771,-9.64734603297461,-9.42535412517771,-9.41957168552771,-9.63832733994747,-9.94500030874412,-10.2175066228297,-10.3848770792808,-10.4622841089303,-10.4906590138348,-10.4986632358857,-10.5045422107656,-10.5035639863134,-10.5101746706929,-10.5068419928684,-10.5093344303786,-10.5325527232171,-10.4090101519432,-10.3972717495518,-10.5444624578471,-10.5090721292957,-10.5145627814864,-10.5190257220125,-10.5182086586279,-10.5289433044651,-10.5359556836907,-10.5552075013759,-10.5641611362432,-10.5585603847255,-10.4893821152499,-10.3521170374574,-10.1559028408893,-9.98953835243467,-9.97885901036915,-10.1313201798644,-10.323851460191,-10.4791445664591,-10.5557217752879,-10.5695102991031,-10.5571496059265,-10.5383341016221,-10.5297647954663,-10.5182184740953,-10.5203969995947,-10.512705589125,-10.5124763328572,-10.5399929505478,-10.393251285834,-10.3835991279237,-10.5536711834132,-10.5126009073621,-10.5243412522603,-10.5306147191343,-10.5388095003822,-10.5591573482377,-10.5866466433715,-10.6368407309832,-10.701583466209,-10.7859361986083,-10.8592535189483,-10.9108472020539,-10.9093677235375,-10.8611721649548,-10.8518319062913,-10.8812481043831,-10.8804052580992,-10.8428529981132,-10.777058954147,-10.7007308614359,-10.6369641415561,-10.5865236314442,-10.5608149177618,-10.5371385112064,-10.5334998360772,-10.5211167597906,-10.5170077659716,-10.5489201701024,-10.380629095914,-10.3735441876333,-10.5633313921238,-10.5171762175855,-10.53574824188,-10.5434220610575,-10.5609721535134,-10.5894968850803,-10.6352595706239,-10.7089941775901,-10.8156286921604,-10.9596880773541,-11.1249899742816,-11.2912596867654,-11.4159623032505,-11.4602367978545,-11.4580692554576,-11.4006012955341,-11.2769130034361,-11.1144739702145,-10.9517772055362,-10.8098492337832,-10.70773306434,-10.6322986126664,-10.5920261601668,-10.5573593505166,-10.5476139876345,-10.5309714286179,-10.5222301686646,-10.5584902076511,-10.3712878896592,-10.368043662493,-10.5730219397805,-10.5224332379457,-10.5477638964126,-10.5557580507536,-10.5814345872067,-10.6140656440613,-10.6705121013348,-10.7504127406194,-10.8652932301476,-11.002352201046,-11.1423820280871,-11.2520774171571,-11.3244144664917,-11.3500204768331,-11.3568427925019,-11.3367398087257,-11.2672739156687,-11.1444014477489,-11.0006297355997,-10.8587732221295,-10.7505165019983,-10.6659736888828,-10.6183610843674,-10.5766357091112,-10.5617109030944,-10.5421264377397,-10.5281893470335,-10.5686275759007,-10.3674353292064,-10.3675428851089,-10.5816249545995,-10.5277381112563,-10.5591587218105,-10.5660673981874,-10.5976239542962,-10.6293013305004,-10.687244358042,-10.7558671875596,-10.8470106084458,-10.9241361952963,-10.9599069909509,-10.9161407432907,-10.8234673915502,-10.7400055106796,-10.7552732675904,-10.8531619008612,-10.9457459779117,-10.9693370951907,-10.9275137096592,-10.8403839347789,-10.7574478542916,-10.6808144260582,-10.6343520880594,-10.5908621489115,-10.5726612848327,-10.5522179344806,-10.5333162265874,-10.5777715366695,-10.367146620593,-10.3721989238437,-10.5890852177091,-10.5327192379115,-10.5690259292404,-10.5732746223564,-10.6079878021455,-10.6341325797003,-10.6863435585709,-10.7331931503046,-10.7878790407714,-10.7999268979277,-10.7425768209601,-10.5802297195875,-10.3641396484956,-10.1972668908955,-10.2109477889888,-10.3852168463816,-10.6013333163872,-10.748533210416,-10.8051872748303,-10.7824621989265,-10.737945118694,-10.6800744229517,-10.6415119276224,-10.6012145183001,-10.5815473103984,-10.5624247324891,-10.5385618548778,-10.5865655517481,-10.3731318720591,-10.3813613626827,-10.5942051385138,-10.5368847089603,-10.5767087218164,-10.577119690602,-10.6127987490244,-10.6305591553907,-10.6734257361643,-10.6968024564692,-10.7191166581349,-10.6868909545622,-10.5863128251288,-10.3913772717746,-10.1596882444761,-9.98564226653163,-9.99115261570137,-10.1619268607518,-10.398155088023,-10.5836462401518,-10.6894177444539,-10.7109675553071,-10.7005212913566,-10.6638443718847,-10.6365195033261,-10.6033410215822,-10.5840980102466,-10.5688867986556,-10.5412265985947,-10.5927266888536,-10.3806840647077,-10.3946601302196,-10.5975956578648,-10.5399475387587,-10.5817054124783,-10.5771847223814,-10.6118806067875,-10.6197330102774,-10.6523749773909,-10.6556472910374,-10.6555290589667,-10.601499231704,-10.4981907452304,-10.3260349896717,-10.1409941241273,-10.0047455044725,-10.0069125846134,-10.1351571666882,-10.3294668984779,-10.4951394163376,-10.6087033883307,-10.6515753269383,-10.6645715980706,-10.646258071742,-10.6298614811413,-10.6050866377829,-10.5865030032843,-10.5761044127177,-10.5444983033569,-10.5983771714627,-10.3932634377497,-10.4104570008641,-10.5985250733931,-10.5421810847739,-10.5848132347376,-10.5753406946836,-10.6085135772328,-10.6071038162264,-10.6305669036012,-10.6186316146053,-10.6056862151245,-10.5436363609991,-10.4535815297538,-10.3174615456187,-10.1861404207744,-10.090147942676,-10.0916081525837,-10.1760864137093,-10.316766359422,-10.4443577252642,-10.5458716830235,-10.5948855577866,-10.6213447043599,-10.6177196528663,-10.6111497054247,-10.5966249295331,-10.5801432386433,-10.577287012741,-10.5436192081945,-10.6006648105871,-10.4051830567101,-10.4287422620892,-10.5972299123493,-10.5425184326734,-10.5844494334115,-10.5691904221281,-10.5992581180559,-10.589615067266,-10.6061511958458,-10.5839512680099,-10.5659695179361,-10.5045976716444,-10.4323283009799,-10.3289013733834,-10.2407045974175,-10.1758501986625,-10.1799819681469,-10.2357126702501,-10.3369903983003,-10.4325900944342,-10.5188542804798,-10.5670002737276,-10.5990808963567,-10.6046256183686,-10.603392160513,-10.5961532718173,-10.5795148879819,-10.581688632901,-10.5449571204674,-10.6025914103901,-10.4166868870927,-10.4470397375549,-10.595950976217,-10.5433621511856,-10.5849933800539,-10.5664008915175,-10.5945576677635,-10.5774758218105,-10.5886073948596,-10.5587659789769,-10.5381429826543,-10.4783705615534,-10.4189933098971,-10.3360596363474,-10.2728131234131,-10.223912008027,-10.2259692047059,-10.2604165693814,-10.332134307022,-10.4028366651971,-10.4740681432797,-10.5199935428236,-10.5548424612103,-10.5704370666934,-10.5754003724826,-10.5799535332989,-10.5660100249752,-10.5787237135616,-10.5412457794341,-10.6031594698394,-10.4321926394034,-10.4663548050603,-10.5893254962742,-10.5425387842164,-10.5795978257718,-10.5533964775487,-10.5784976856823,-10.5570146536088,-10.5656164628791,-10.5334565404013,-10.5161556921489,-10.4638906379463,-10.4207989345024,-10.3586036774141,-10.3185125986719,-10.2860829277117,-10.2933497141975,-10.319574328989,-10.3757140317237,-10.430178204987,-10.4885678091419,-10.5279495711083,-10.5583161965379,-10.574343074729,-10.5768568781888,-10.5833327135615,-10.5661033849161,-10.5798426701902,-10.5404170244946,-10.6002834985492,-10.4261516654723,-10.4857115850426,-10.5859292252339,-10.5327526428234,-10.5812226232906,-10.559377282229,-10.5802432094169,-10.5513659597976,-10.5559047869476,-10.5167408564532,-10.4960424431042,-10.4415120518656,-10.399968715691,-10.3414266873044,-10.3041504909842,-10.2720953816159,-10.2718032863938,-10.2873444504128,-10.3273612394677,-10.3727122037787,-10.4222320291359,-10.4663213383921,-10.4987343173216,-10.5300877422048,-10.5382696647323,-10.5630068575004,-10.5484393270086,-10.5794672898672,-10.5366133503004,-10.6076266485173,-10.4584121114042,-10.5063814190793,-10.6157840538824,-10.5734827782873,-10.5585719746529,-10.530357874558,-10.5587936412163,-10.5277734265749,-10.535390519957,-10.5025165748219,-10.4916769413079,-10.4521209998968,-10.4295429492709,-10.3919640873686,-10.375876413405,-10.3591548178823,-10.368972603283,-10.3833427200064,-10.4181463518206,-10.4496982974411,-10.4873550450707,-10.5150821019846,-10.5364985957132,-10.5537830746469,-10.554071708394,-10.5676371553211,-10.5496716738386,-10.5690404380377,-10.5349584146521,-10.587157187042,-10.3981617668319,-10.4457609565692,-10.3707419786694,-10.4899353227554,-10.6318774782036,-10.5317732609915,-10.5710059405051,-10.5259540836373,-10.5262037794996,-10.4793709086658,-10.4567610892521,-10.4042344140331,-10.3685282296775,-10.3215795806253,-10.2919673283366,-10.2704441828062,-10.2657924103248,-10.2819729353982,-10.3038356842828,-10.3498176023471,-10.3800919811537,-10.4375304768145,-10.4552581921852,-10.5122227132212,-10.5063641952825,-10.561634518087,-10.529918469878,-10.5928653377901,-10.5137307689757,-10.6700375377919,-10.3951564111355,-11.2707879773175,-11.2847347309185,-10.3233989779971,-10.611384843627,-10.5465824933554,-10.5475660596602,-10.5268650532642,-10.5064530439374,-10.4749242871373,-10.4411696537976,-10.4002624543156,-10.3620999593481,-10.323503737255,-10.2982194450994,-10.2787458805992,-10.2824954666884,-10.2908205727036,-10.3251346413171,-10.3526811208325,-10.4027021587794,-10.4318079963266,-10.4794409804201,-10.4980454423943,-10.532940147054,-10.5399400026314,-10.5596675831349,-10.5565388308352,-10.6042496134885,-10.374840269128,-11.039198274159,-5.1170454919545,-11.1656789655178,-10.4324136235635,-10.4222545538602,-10.5035920629406,-10.4654032205528,-10.5382472083878,-10.5391704157366,-10.6089384604811,-10.6412054400308,-10.7033441939125,-10.7540751326169,-10.7911036607745,-10.8427415380176,-10.8318177132684,-10.8727811075718,-10.7997149008624,-10.8359121531371,-10.7037822841112,-10.756961574383,-10.5810750003381,-10.67354838809,-10.4702600631521,-10.6111758720834,-10.3925138661379,-10.578076540188,-10.3498730944973,-10.4996307519085,-11.0899138485318,-5.03350061792404],"Archive1110_field8":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.8421709430404e-14,0.55835558142789,0.143222102792919,0.438983496669351,0.0635114862620583,0.177835040826579,-0.20199300973789,-0.240212760667674,-0.637899893114451,-0.786730238086903,-1.16333269000111,-1.34578715854528,-1.61350844288282,-1.73482270949856,-1.79900924980987,-1.80036380740844,-1.62070164141645,-1.5264650534439,-1.14343417036403,-1.0494244700665,-0.548465231911024,-0.558796785756982,-0.0142925451960139,-0.187324144695395,0.360577850846965,0.0241361170579637,0.547969715427797,0.10282047837083,0.497745035341126,-2.8421709430404e-14,-5.6843418860808e-14,0.332566797584207,0.0313903871996786,0.292387809562285,0.017963859618078,0.187403521833801,-0.0731843100117544,0.0168595705108032,-0.234545309794669,-0.208416043077648,-0.43664314331653,-0.450408491819701,-0.623204978022102,-0.647101267837741,-0.724654346140539,-0.736333096284,-0.689811133065803,-0.690518858035773,-0.518238008063179,-0.537298849499791,-0.264338482072446,-0.342861695604881,-0.00516741323821179,-0.17101299963673,0.19730919919283,-0.0534382145133918,0.312028564834179,-0.00257894998520669,0.373305575442089,-5.6843418860808e-14,0,0.40330390178076,0.0435317205639194,0.33732847657609,0.00350165027214189,0.20519339573093,-0.118206130869339,0.00623397497599854,-0.299402435082925,-0.231302197575701,-0.492701481336553,-0.45363407389425,-0.63483437660534,-0.602078445771781,-0.672917787573851,-0.639788819754358,-0.586224412206775,-0.565424193373701,-0.393211700913071,-0.412767700354721,-0.145086066394697,-0.236001327693884,0.0946629430658277,-0.0848109585585917,0.274470203738247,0.0108342002520203,0.374051433581144,0.0262594066175552,0.409936673745051,0,0,0.399722368102857,0.0339227594159865,0.378953748870913,0.0359340918531643,0.323511146652777,0.0055612901941231,0.24189913813791,-0.0375658513377175,0.157002600832016,-0.0656207251321348,0.091674659977798,-0.063030517301172,0.047012195862294,-0.0404665567674556,0.00616703050059186,-0.0108561781527214,-0.0308423712926924,0.0365902218155725,-0.043380392518543,0.115572486956808,-0.0220050057126855,0.214733516795036,0.0175978150415403,0.30521222093023,0.0460841713621676,0.36775996265203,0.0434251342973084,0.395181168605063,0,0,0.459709804138811,0.0402614656343303,0.462746352352383,0.0730762897798058,0.458107159976976,0.114476884280634,0.469602046325576,0.197535572889251,0.531875330980142,0.35043171374366,0.65390921726987,0.54902907910639,0.77148221165578,0.693577086667688,0.775817147578778,0.69939944478358,0.640022663286913,0.600541009348717,0.449314091306519,0.49449908914255,0.294685808166719,0.436243415155218,0.200979688987786,0.420648597949139,0.142729344006852,0.421875084565841,0.0867523770858725,0.433518081284433,0,0,0.548232012145036,0.0614942481388425,0.599064542727774,0.16017360873866,0.684453732210841,0.328350794382914,0.85077333958975,0.617845890475792,1.15125240918815,1.06157051593254,1.57906723357178,1.57865071635047,1.96366822443133,1.91315434410171,2.0245574670264,1.8455215136637,1.68952528285308,1.46984338350103,1.18291690665046,1.05152890168529,0.743739117568339,0.751313661438417,0.451370590933493,0.583348340340081,0.272695413088968,0.50657512440489,0.14392133814431,0.497291588802454,0,0,0.681382014975043,0.0948933459071668,0.783458451388924,0.278446389789224,0.975899103609891,0.610009255512523,1.34324740273541,1.18268026895885,1.98606011978654,2.0663949263685,2.90702408612788,3.12157073968365,3.77283347803154,3.81006432151389,3.95679794882813,3.62107933537482,3.27690254632989,2.76917458818889,2.24487939580149,1.85323805396592,1.37078087461623,1.19970774297644,0.796968347354778,0.822798790066599,0.45159997371411,0.64144994804451,0.221511096842278,0.604218622749158,0,0,0.861093807971884,0.147143025091282,1.02702291654668,0.446847835374001,1.35821708057097,0.997758831375904,1.99774163626375,1.96590298089382,3.13992348478928,3.51909057938724,4.85819926292538,5.48299872274788,6.5821896780385,6.81701811199378,7.00016148214104,6.39738242924545,5.68443549358494,4.6903186054592,3.75148829871091,2.96465450060691,2.20827376426519,1.79654447356074,1.24219719850385,1.14107439107033,0.678390236125551,0.827449439195107,0.317821191054236,0.755108835199508,0,0,1.08718138431527,0.216091847937832,1.32411658724391,0.659477649161772,1.82106711318534,1.48374846577144,2.8067999799548,2.974425101723,4.64387010937548,5.50657137410758,7.60507890321287,8.95718764967114,10.8080825366262,11.4343657222696,11.6571811610524,10.601617834667,9.21724205926489,7.42174056988438,5.8013159986474,4.43333398549544,3.27493655787725,2.55118605191501,1.78931711768314,1.54159307977557,0.95240223129349,1.06807768307931,0.432161921776469,0.953033236583678,0,0,1.35723090925489,0.302879489366433,1.67061802032117,0.915092624984254,2.35576312250191,2.05953156556166,3.75308276204532,4.19203584348588,6.48434187614703,8.04526643478334,11.2229669867804,13.721211754025,16.7398321116907,18.028005204922,18.2861625046182,16.5063697550584,14.0277749481654,11.0181652165043,8.38813691456357,6.2316884253903,4.53922109242876,3.43923936861233,2.41933304104145,2.01371189003726,1.26438105407192,1.3597897294153,0.560497677061221,1.19664371519593,0,0,1.66283876278158,0.403585840022743,2.05158836038868,1.19880138441272,2.93120601867327,2.68331980965627,4.76510183187725,5.51364879165681,8.49944096053036,10.9077319261562,15.4091398908213,19.4146149708151,23.9855689058707,26.1908664998127,26.4656035604339,23.6829152873834,19.7095180654935,15.1426702967403,11.26022221269,8.18919280593832,5.89151199970979,4.39350917831962,3.08900637025431,2.53289797018397,1.59723241128813,1.69366465400185,0.696428441188573,1.48078002215289,0,0,1.99171309279882,0.512891036736619,2.44692331762508,1.4890476789069,3.50258206626404,3.28797071871986,5.72175577888902,6.73526580658654,10.3334536648836,13.4975817453656,19.2169513366407,24.6710940495773,30.79500243032,33.9344761287443,34.2012586254391,30.3646217357082,24.8731931772809,18.8284293834195,13.8099040090174,9.94625049071647,7.12494044884215,5.29715398239023,3.72824354910881,3.05854144788782,1.92462335388836,2.05341350526396,0.830436488191026,1.79513009443053,0,0,2.32746214607641,0.622699879756055,2.8307075873804,1.75678619659584,4.01321630341909,3.78637959984235,6.46651269825452,7.5807173522594,11.4830750327123,14.9134800455354,21.1214315274756,27.1384159085201,33.9904467567758,37.5620868214123,37.8241511591982,33.446803491805,27.2472850601416,20.6014112772878,15.172686731813,11.0235519815683,7.97379267519227,6.00274734701952,4.25047919954113,3.54001991870791,2.21501782919449,2.41814686875068,0.951891494714346,2.12617736976927,0,0,2.65085996297148,0.723525795810019,3.17540415004987,1.9719761166657,4.40802274510543,4.09675052257626,6.85954864536234,7.80979601566196,11.5196419972444,14.384330640848,19.7851050136605,24.650569182937,30.4758060459826,33.3740717634705,33.687524905793,29.9741670665371,24.8193835775692,19.2301754091395,14.6358911122306,11.0231113334985,8.21027435120141,6.37658784242649,4.57216288067502,3.9242830599751,2.4346073052302,2.76193254856298,1.04832201078443,2.45501328734781,0,0,2.94334326317221,0.806575383418021,3.45649294598661,2.11026887071057,4.64683609169424,4.16959444962322,6.83468032250767,7.34484871989298,10.3646678423456,11.8463905915796,15.1684643574272,17.1427197740363,20.0363107314161,21.0076926956067,21.4260635513406,19.7285644526837,17.532173742823,14.716868246207,12.1644162847224,9.87578067236973,7.75677855262802,6.35295613493599,4.64230558972122,4.17306994947648,2.55875971665046,3.06298539797854,1.11131501845512,2.76484149010321,0,0,3.18662985022183,0.863968215368459,3.65510970572632,2.15771274356666,4.71332240380707,4.00276164080742,6.42529369534941,6.31542654311306,8.37086017792672,8.10824601518016,8.86103858721299,7.36507977767042,6.66391285687996,5.27029363750125,5.74469412220833,6.51794023451066,7.9223965191054,8.52866025267303,8.5055728916418,7.91247796579182,6.73009515580179,5.95590296539422,4.45209382218263,4.26461399345362,2.56937820854728,3.29787901267218,1.13141030373617,3.03372495176018,0,0,3.36873492106588,0.892012172940667,3.76190343709413,2.11364192776091,4.61567216204412,3.63619510105582,5.73642999146523,4.97845052787216,6.09115205509352,4.3250828018663,3.01744972294,-1.00307169640155,-4.21787704715416,-7.26056786913932,-6.81121979118961,-4.37430551548869,-0.458541446435902,2.73127467689483,4.74484327009986,5.66629610687414,5.38217424619233,5.29500908140653,4.04790357559204,4.21237233817374,2.47357746941907,3.46044991342433,1.11117652083249,3.25156133996552,0,0,3.47909457842297,0.88884334282875,3.77523334269517,1.98870102983756,4.38073114787176,3.13563910470066,4.89698381444032,3.5932163831153,3.98494365381157,1.31029382802444,-1.03308089233769,-6.03072218923307,-10.048961678101,-13.522264401618,-13.1593350254457,-10.302282591897,-5.59738101286075,-1.33103873476239,1.69421226576742,3.59270801256116,3.95662252664761,4.49085774625792,3.48548648421684,4.02989184887838,2.27483195930699,3.53580514447231,1.04592750039819,3.39894136196426,0,4.54747350886464e-13,3.51706975493607,0.857762123664088,3.70155879743652,1.80135198773314,4.04220653403081,2.56884085236152,4.01217476538932,2.32700382967414,2.26787510822987,-0.749572728734165,-3.26211309604196,-8.05270564507055,-11.6727362306201,-14.7474723594887,-14.4588192759193,-11.9806852910133,-7.72272513545204,-3.55147259176192,-0.402156611883584,1.94009440240507,2.65093085398848,3.67855581893127,2.85929902640191,3.77184524727272,2.0147927350281,3.54230731607413,0.954108821138561,3.48104790277421,4.54747350886464e-13,0,3.48102662942074,0.803166071616033,3.55237844748217,1.57612056245944,3.6394502951166,2.00100290486853,3.16683738972597,1.26528899707,0.971846175656083,-2.01756551212975,-4.25785478852549,-8.33294293060771,-11.1402368957642,-13.5579339999872,-13.3242695809049,-11.4476257561246,-8.09070732313876,-4.53067885672908,-1.74111145791312,0.693771431559526,1.50913678837787,2.89506680258182,2.19435414142663,3.43858112150701,1.69128796084033,3.4624620056743,0.827625333061405,3.48114306670186,0,4.54747350886464e-13,3.37832469825753,0.731261531826931,3.33825638321287,1.33058315019571,3.19495192065961,1.46281593234198,2.3938134874179,0.414162670821952,0.0214847744400686,-2.75103782962833,-4.59775857909517,-7.89814817587012,-9.94367783575217,-11.7560315857031,-11.5642027183621,-10.1944225028719,-7.69901617422784,-4.79645376996632,-2.512093779731,-0.149300022431817,0.617114661646156,2.24508541066689,1.59715699508524,3.11209057783708,1.37665082201738,3.34123801019859,0.702531280483527,3.42009350776152,4.54747350886464e-13,0,3.21568396823614,0.653003245609398,3.08030253592551,1.09739183458942,2.7540352705887,1.00234530639909,1.73356786693284,-0.219197032509783,-0.645506609235326,-3.1318647027465,-4.62461309619175,-7.27244107088109,-8.76524556200593,-10.1232282060651,-9.98797777973004,-8.97609765293555,-7.16961467460715,-4.80884593471592,-3.02325717362919,-0.792682745056027,-0.156613822897725,1.62908812090518,0.996040353817079,2.72716298681735,1.02466484159913,3.13879758242774,0.554065150099177,3.28437951110436,0,0,2.99368143739684,0.565527429207577,2.77010323528066,0.859681227469991,2.2945261156965,0.594057957619043,1.15248801149301,-0.690977173864667,-1.11613419601326,-3.28599870581911,-4.48686447675209,-6.59660176262514,-7.70017340045797,-8.70347983995453,-8.60849776153282,-7.80332045511659,-6.49554953247389,-4.52642910835402,-3.17136691362339,-1.08902588426463,-0.625764183174397,1.22986560044501,0.570426337416393,2.42453708399171,0.754982129788914,2.92795522053348,0.436430681545971,3.09071851638328,0,0,2.74048777979897,0.501636486716052,2.46945016132486,0.698055256661974,1.90304738435771,0.31212561342727,0.709593592997408,-0.977600749026351,-1.41125539477616,-3.28570802780541,-4.29400509984953,-5.99967293385816,-6.88052528275875,-7.64804522180384,-7.63458273945616,-6.97922635715076,-6.06766309361501,-4.39421573842446,-3.40349835632333,-1.45665069464485,-1.15212110313223,0.743293909899876,0.0819485398214965,2.02549843512043,0.441914736364197,2.64177601072151,0.306340120258028,2.85995536650807,0,0,2.40219488066941,0.398450375814718,2.06067111047196,0.484211858420167,1.45761399391358,0.0422740197145686,0.303097033267477,-1.15665150710993,-1.56580605118688,-3.10670934337304,-3.9209844852794,-5.23428958543445,-5.90598349758329,-6.42852342895094,-6.43226577087444,-5.83461201825685,-5.19528453747989,-3.74968849942888,-3.06682250169979,-1.30530156783516,-1.18552778005233,0.615255575954507,-0.0898179822306702,1.78261468165238,0.278459954532082,2.34679804523512,0.216084765704181,2.51605271014705,0,0,2.11633280060505,0.430330926360512,1.80870117851373,0.451333133946719,1.18358422013625,-0.0300423148255504,0.0686442374308172,-1.18770047163616,-1.64035838223026,-2.94687796392554,-3.70787557845415,-4.79348953469889,-5.42834385136121,-5.84928830670378,-5.96599602752212,-5.45601959117903,-5.06328013887742,-3.78489927740793,-3.31945972318863,-1.6615927255425,-1.61598147559107,0.161013049487337,-0.471361350121697,1.38006293759554,0.0588453588043194,2.03295212291141,0.155201806182959,2.27329333684884,0,0,1.52205134255382,0.200283937647328,1.22786644509415,0.216434320334884,0.700814979595634,-0.180534203420393,-0.14914764545756,-1.04346093176082,-1.37486990349589,-2.262978172771,-2.77076874157592,-3.45201673898373,-3.84818912543051,-4.03598510226857,-4.09488169539509,-3.63811306614116,-3.40427141234704,-2.41985084671524,-2.20002899665906,-0.937889925026866,-1.06208064637303,0.310467237502962,-0.32213519880861,1.12637680610806,0.00119225850357907,1.53616523692381,0.0540414613833491,1.63199202111355,0,0,1.52343752280103,0.432117308178931,1.12927187292553,0.387480097102525,0.626223797893545,-0.0922483750910033,-0.232601491787136,-1.02766149538911,-1.4857309086201,-2.31220896733976,-2.92702856553205,-3.58191027855173,-4.09611117134136,-4.29875613354125,-4.49695050898754,-4.07583878409605,-3.96293504396272,-2.98539208632701,-2.80530111014377,-1.49978077622109,-1.55406471268088,-0.130335496199223,-0.595742339441131,0.840742348472304,-0.0447562473409562,1.3742884747171,0.154848194009901,1.58584473528572,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.8421709430404e-14,0.55835558142789,0.14322210279289,0.43898349666938,0.0635114862620867,0.177835040826551,-0.20199300973789,-0.240212760667646,-0.637899893114422,-0.786730238086903,-1.16333269000108,-1.34578715854528,-1.61350844288279,-1.73482270949856,-1.7990092498099,-1.80036380740844,-1.62070164141642,-1.5264650534439,-1.14343417036403,-1.0494244700665,-0.548465231910995,-0.558796785756954,-0.0142925451959854,-0.187324144695395,0.360577850846965,0.0241361170579353,0.547969715427797,0.102820478370802,0.497745035341126,-2.8421709430404e-14,-5.6843418860808e-14,0.332566797584263,0.0313903871996786,0.292387809562342,0.0179638596179643,0.187403521833858,-0.0731843100118112,0.0168595705108601,-0.234545309794612,-0.208416043077705,-0.436643143316587,-0.450408491819644,-0.623204978022045,-0.647101267837797,-0.724654346140426,-0.736333096284056,-0.689811133065746,-0.690518858035659,-0.518238008063236,-0.537298849499905,-0.264338482072446,-0.342861695604881,-0.00516741323815495,-0.171012999636787,0.197309199192887,-0.0534382145134487,0.312028564834236,-0.00257894998532038,0.373305575442032,-5.6843418860808e-14,0,0.40330390178076,0.0435317205640331,0.337328476575976,0.00350165027225557,0.205193395731044,-0.118206130869339,0.00623397497588485,-0.299402435083039,-0.231302197575701,-0.492701481336553,-0.45363407389425,-0.63483437660534,-0.602078445771781,-0.672917787573965,-0.639788819754472,-0.586224412206661,-0.565424193373815,-0.393211700912957,-0.412767700354721,-0.145086066394811,-0.236001327693771,0.094662943065714,-0.0848109585587054,0.274470203738133,0.010834200252134,0.374051433581258,0.0262594066174415,0.409936673745051,0,0,0.399722368102971,0.0339227594158729,0.378953748870799,0.0359340918530506,0.323511146652891,0.00556129019423679,0.241899138137796,-0.0375658513376038,0.157002600832129,-0.0656207251322485,0.091674659977798,-0.0630305173012857,0.0470121958624077,-0.0404665567673419,0.00616703050059186,-0.0108561781526078,-0.0308423712926924,0.0365902218156862,-0.0433803925184293,0.115572486956808,-0.0220050057127992,0.214733516795036,0.0175978150414267,0.305212220930457,0.0460841713620539,0.367759962651917,0.0434251342971947,0.395181168605063,0,0,0.459709804139038,0.040261465634444,0.462746352352383,0.0730762897798058,0.458107159976748,0.114476884280407,0.469602046325804,0.197535572889251,0.53187533098037,0.350431713743433,0.653909217269643,0.549029079106162,0.771482211656007,0.69357708666746,0.775817147578778,0.699399444783353,0.640022663286686,0.600541009348831,0.449314091306292,0.494499089142778,0.294685808166946,0.436243415155445,0.200979688988014,0.420648597949253,0.14272934400708,0.421875084565613,0.0867523770856451,0.433518081284433,0,0,0.548232012145036,0.0614942481388425,0.599064542727547,0.160173608738432,0.684453732211068,0.328350794382914,0.85077333958975,0.617845890475792,1.15125240918837,1.06157051593277,1.579067233572,1.57865071635069,1.96366822443133,1.91315434410149,2.02455746702663,1.84552151366393,1.68952528285308,1.46984338350126,1.18291690665046,1.05152890168506,0.743739117568339,0.751313661438644,0.45137059093372,0.583348340339853,0.272695413088741,0.506575124405117,0.143921338144082,0.497291588802227,0,0,0.681382014974815,0.0948933459071668,0.783458451388924,0.278446389788996,0.975899103609891,0.610009255512523,1.34324740273519,1.18268026895907,1.98606011978654,2.0663949263685,2.90702408612765,3.12157073968342,3.77283347803132,3.81006432151389,3.95679794882813,3.62107933537482,3.27690254632989,2.76917458818866,2.24487939580126,1.85323805396615,1.370780874616,1.19970774297644,0.796968347354778,0.822798790066599,0.45159997371411,0.641449948044283,0.22151109684205,0.604218622749386,0,0,0.861093807971884,0.147143025091054,1.02702291654691,0.446847835374456,1.35821708057074,0.997758831375904,1.99774163626353,1.96590298089404,3.13992348478905,3.51909057938747,4.85819926292561,5.48299872274811,6.5821896780385,6.81701811199378,7.00016148214104,6.39738242924523,5.68443549358449,4.69031860545942,3.75148829871068,2.96465450060691,2.20827376426564,1.79654447356052,1.24219719850362,1.14107439106988,0.678390236125551,0.827449439194879,0.317821191054463,0.75510883519928,0,0,1.08718138431482,0.216091847937832,1.32411658724391,0.659477649161772,1.82106711318579,1.48374846577099,2.80679997995526,2.974425101723,4.64387010937548,5.50657137410758,7.60507890321242,8.95718764967114,10.8080825366258,11.4343657222701,11.657181161052,10.6016178346674,9.21724205926535,7.42174056988438,5.8013159986474,4.43333398549589,3.27493655787771,2.55118605191456,1.78931711768269,1.54159307977511,0.95240223129349,1.06807768307931,0.432161921776014,0.953033236584133,0,0,1.35723090925535,0.302879489366433,1.67061802032072,0.915092624983799,2.35576312250191,2.05953156556166,3.7530827620451,4.19203584348634,6.48434187614725,8.04526643478334,11.2229669867804,13.7212117540246,16.7398321116907,18.028005204922,18.2861625046182,16.5063697550588,14.0277749481654,11.0181652165038,8.38813691456357,6.23168842539076,4.53922109242853,3.43923936861188,2.41933304104145,2.01371189003771,1.26438105407192,1.35978972941507,0.560497677061221,1.19664371519593,0,-2.27373675443232e-13,1.66283876278203,0.403585840022743,2.05158836038868,1.19880138441272,2.93120601867372,2.68331980965581,4.76510183187725,5.51364879165635,8.49944096053036,10.9077319261562,15.4091398908215,19.4146149708151,23.9855689058707,26.1908664998132,26.4656035604344,23.6829152873829,19.7095180654935,15.1426702967403,11.2602222126905,8.18919280593786,5.89151199970934,4.39350917831985,3.08900637025386,2.53289797018397,1.59723241128836,1.6936646540023,0.696428441188118,1.48078002215289,-2.27373675443232e-13,0,1.99171309279882,0.512891036736164,2.44692331762553,1.4890476789069,3.50258206626359,3.28797071871986,5.72175577888902,6.73526580658609,10.333453664884,13.497581745366,19.2169513366402,24.6710940495768,30.7950024303195,33.9344761287439,34.2012586254391,30.3646217357086,24.8731931772809,18.8284293834199,13.8099040090178,9.94625049071647,7.12494044884215,5.29715398238977,3.72824354910881,3.05854144788782,1.92462335388791,2.05341350526442,0.830436488191026,1.79513009443053,0,0,2.32746214607687,0.622699879756055,2.8307075873804,1.75678619659629,4.01321630341909,3.78637959984235,6.46651269825452,7.5807173522594,11.4830750327128,14.9134800455354,21.1214315274751,27.1384159085205,33.9904467567758,37.5620868214123,37.8241511591982,33.446803491805,27.2472850601421,20.6014112772878,15.1726867318134,11.0235519815678,7.97379267519227,6.00274734701907,4.25047919954113,3.54001991870746,2.21501782919449,2.41814686875068,0.951891494713891,2.12617736976881,0,0,2.65085996297103,0.723525795809564,3.17540415004987,1.9719761166657,4.40802274510543,4.09675052257626,6.85954864536279,7.8097960156615,11.519641997244,14.3843306408476,19.7851050136601,24.650569182937,30.4758060459826,33.3740717634705,33.6875249057925,29.9741670665371,24.8193835775692,19.23017540914,14.6358911122311,11.0231113334989,8.21027435120186,6.37658784242694,4.57216288067502,3.9242830599751,2.4346073052302,2.76193254856298,1.04832201078398,2.45501328734827,0,0,2.94334326317176,0.806575383418476,3.45649294598707,2.11026887071057,4.64683609169424,4.16959444962322,6.83468032250767,7.34484871989298,10.3646678423456,11.8463905915792,15.1684643574272,17.1427197740368,20.0363107314161,21.0076926956071,21.4260635513406,19.7285644526833,17.532173742823,14.7168682462066,12.1644162847224,9.87578067236973,7.75677855262848,6.35295613493599,4.64230558972167,4.17306994947694,2.55875971665046,3.06298539797808,1.11131501845466,2.76484149010321,0,0,3.18662985022183,0.863968215367549,3.65510970572677,2.15771274356621,4.71332240380752,4.00276164080788,6.42529369534896,6.31542654311261,8.37086017792717,8.10824601518016,8.86103858721344,7.36507977767087,6.66391285688042,5.27029363750034,5.74469412220924,6.51794023451066,7.92239651910586,8.52866025267349,8.50557289164135,7.91247796579137,6.73009515580179,5.95590296539376,4.45209382218309,4.26461399345317,2.56937820854682,3.29787901267264,1.13141030373663,3.03372495176063,0,-4.54747350886464e-13,3.36873492106497,0.892012172940213,3.76190343709459,2.11364192776091,4.61567216204458,3.63619510105673,5.73642999146568,4.97845052787125,6.09115205509397,4.32508280186676,3.01744972293955,-1.00307169640064,-4.21787704715507,-7.26056786914023,-6.81121979118871,-4.37430551548778,-0.458541446435902,2.73127467689483,4.74484327010032,5.6662961068746,5.38217424619188,5.29500908140608,4.04790357559204,4.21237233817328,2.47357746941816,3.46044991342387,1.11117652083294,3.25156133996597,-4.54747350886464e-13,0,3.47909457842206,0.888843342829659,3.77523334269472,1.98870102983756,4.38073114787176,3.13563910470066,4.89698381444032,3.5932163831153,3.98494365381157,1.31029382802444,-1.03308089233769,-6.03072218923216,-10.0489616781019,-13.522264401618,-13.1593350254457,-10.3022825918965,-5.5973810128603,-1.3310387347633,1.69421226576742,3.59270801256162,3.95662252664761,4.49085774625701,3.48548648421593,4.02989184887838,2.27483195930608,3.53580514447231,1.04592750039728,3.39894136196335,0,0,3.51706975493698,0.857762123664088,3.70155879743743,1.80135198773405,4.04220653403081,2.56884085236061,4.01217476538932,2.32700382967414,2.26787510822987,-0.749572728734165,-3.26211309604287,-8.05270564506964,-11.672736230621,-14.7474723594896,-14.4588192759202,-11.9806852910124,-7.72272513545204,-3.55147259176192,-0.402156611884493,1.94009440240552,2.65093085398848,3.67855581893218,2.859299026401,3.77184524727363,2.014792735029,3.54230731607504,0.954108821137652,3.48104790277466,0,0,3.48102662942074,0.803166071616943,3.55237844748217,1.57612056246035,3.6394502951166,2.00100290486853,3.16683738972597,1.26528899707,0.971846175656992,-2.01756551212884,-4.25785478852549,-8.33294293060726,-11.1402368957642,-13.5579339999881,-13.3242695809054,-11.4476257561241,-8.09070732313876,-4.53067885672908,-1.74111145791403,0.693771431558616,1.50913678837787,2.89506680258091,2.19435414142708,3.43858112150701,1.69128796084033,3.4624620056743,0.827625333060496,3.48114306670095,0,0,3.37832469825662,0.731261531826021,3.33825638321377,1.3305831501948,3.19495192065961,1.46281593234198,2.3938134874179,0.414162670821042,0.0214847744391591,-2.75103782962742,-4.59775857909517,-7.89814817587012,-9.94367783575126,-11.7560315857036,-11.5642027183612,-10.1944225028719,-7.69901617422875,-4.79645376996632,-2.512093779731,-0.149300022431817,0.617114661645246,2.24508541066689,1.59715699508615,3.11209057783799,1.37665082201693,3.34123801019859,0.702531280484436,3.42009350776061,0,-4.54747350886464e-13,3.21568396823614,0.653003245609398,3.08030253592597,1.09739183458942,2.7540352705887,1.0023453064,1.73356786693193,-0.219197032509783,-0.645506609235326,-3.1318647027465,-4.62461309619266,-7.27244107088109,-8.76524556200593,-10.123228206066,-9.98797777972914,-8.97609765293464,-7.16961467460669,-4.80884593471501,-3.02325717362919,-0.792682745056027,-0.156613822898635,1.62908812090518,0.996040353816625,2.72716298681826,1.02466484159822,3.13879758242865,0.554065150098268,3.28437951110436,-4.54747350886464e-13,0,2.99368143739775,0.565527429207577,2.77010323528157,0.859681227470901,2.2945261156965,0.594057957619953,1.1524880114921,-0.690977173864667,-1.11613419601326,-3.2859987058182,-4.48686447675209,-6.59660176262423,-7.70017340045797,-8.70347983995453,-8.60849776153191,-7.80332045511659,-6.4955495324748,-4.52642910835402,-3.17136691362248,-1.08902588426372,-0.625764183175306,1.22986560044501,0.570426337416393,2.42453708399262,0.754982129789823,2.92795522053257,0.436430681545062,3.09071851638328,0,0,2.74048777979897,0.501636486716961,2.46945016132486,0.698055256661064,1.9030473843568,0.31212561342636,0.709593592998317,-0.977600749026351,-1.41125539477616,-3.28570802780541,-4.29400509984953,-5.99967293385907,-6.88052528275966,-7.64804522180475,-7.63458273945707,-6.97922635715076,-6.06766309361592,-4.39421573842355,-3.40349835632333,-1.45665069464394,-1.15212110313314,0.743293909899876,0.081948539822406,2.02549843512043,0.441914736364197,2.64177601072151,0.306340120258028,2.85995536650717,0,0,2.40219488066941,0.398450375814718,2.06067111047105,0.484211858420167,1.45761399391358,0.0422740197145686,0.303097033268386,-1.15665150710993,-1.56580605118688,-3.10670934337304,-3.9209844852785,-5.23428958543445,-5.90598349758329,-6.42852342895094,-6.43226577087444,-5.83461201825685,-5.19528453747989,-3.74968849942888,-3.06682250169979,-1.30530156783516,-1.18552778005142,0.615255575954507,-0.0898179822306702,1.78261468165238,0.278459954532991,2.34679804523512,0.216084765704181,2.51605271014705,0,0,2.11633280060505,0.430330926360512,1.80870117851373,0.451333133947628,1.18358422013625,-0.0300423148264599,0.0686442374299077,-1.18770047163616,-1.64035838223026,-2.94687796392645,-3.70787557845415,-4.79348953469889,-5.4283438513603,-5.84928830670378,-5.96599602752212,-5.45601959117903,-5.06328013887742,-3.78489927740793,-3.31945972318863,-1.6615927255425,-1.61598147559107,0.161013049487337,-0.471361350121697,1.38006293759554,0.0588453588043194,2.03295212291141,0.155201806183868,2.27329333684793,0,0,1.52205134255382,0.200283937647328,1.22786644509324,0.216434320333974,0.700814979596544,-0.180534203420393,-0.14914764545756,-1.04346093176082,-1.37486990349589,-2.262978172771,-2.77076874157592,-3.45201673898373,-3.8481891254296,-4.03598510226948,-4.094881695396,-3.63811306614116,-3.40427141234704,-2.41985084671614,-2.20002899665815,-0.937889925026866,-1.06208064637303,0.310467237502962,-0.32213519880861,1.12637680610806,0.00119225850357907,1.53616523692381,0.0540414613824396,1.63199202111355,0,0,1.52343752280012,0.432117308178931,1.12927187292462,0.387480097102525,0.626223797892635,-0.0922483750910033,-0.232601491787136,-1.02766149539002,-1.48573090862101,-2.31220896734067,-2.92702856553205,-3.58191027855173,-4.09611117134045,-4.29875613354034,-4.49695050898754,-4.07583878409605,-3.96293504396181,-2.98539208632701,-2.80530111014377,-1.499780776222,-1.55406471268088,-0.130335496199223,-0.595742339441131,0.840742348471395,-0.0447562473418657,1.37428847471801,0.154848194008991,1.58584473528572,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.8421709430404e-14,0.55835558142789,0.14322210279289,0.43898349666938,0.0635114862620867,0.177835040826551,-0.20199300973789,-0.240212760667646,-0.637899893114422,-0.786730238086903,-1.16333269000108,-1.34578715854528,-1.61350844288279,-1.73482270949856,-1.7990092498099,-1.80036380740844,-1.62070164141642,-1.5264650534439,-1.14343417036403,-1.0494244700665,-0.548465231910995,-0.558796785756954,-0.0142925451959854,-0.187324144695395,0.360577850846965,0.0241361170579353,0.547969715427797,0.102820478370802,0.497745035341126,-2.8421709430404e-14,-5.6843418860808e-14,0.332566797584263,0.0313903871996786,0.292387809562342,0.0179638596179643,0.187403521833858,-0.0731843100118112,0.0168595705108601,-0.234545309794612,-0.208416043077705,-0.436643143316587,-0.450408491819644,-0.623204978022045,-0.647101267837797,-0.724654346140426,-0.736333096284056,-0.689811133065746,-0.690518858035659,-0.518238008063236,-0.537298849499905,-0.264338482072446,-0.342861695604881,-0.00516741323815495,-0.171012999636787,0.197309199192887,-0.0534382145134487,0.312028564834236,-0.00257894998532038,0.373305575442032,-5.6843418860808e-14,0,0.40330390178076,0.0435317205640331,0.337328476575976,0.00350165027225557,0.205193395731044,-0.118206130869339,0.00623397497588485,-0.299402435083039,-0.231302197575701,-0.492701481336553,-0.45363407389425,-0.63483437660534,-0.602078445771781,-0.672917787573965,-0.639788819754472,-0.586224412206661,-0.565424193373815,-0.393211700912957,-0.412767700354721,-0.145086066394811,-0.236001327693771,0.094662943065714,-0.0848109585587054,0.274470203738133,0.010834200252134,0.374051433581258,0.0262594066174415,0.409936673745051,0,0,0.399722368102971,0.0339227594158729,0.378953748870799,0.0359340918530506,0.323511146652891,0.00556129019423679,0.241899138137796,-0.0375658513376038,0.157002600832129,-0.0656207251322485,0.091674659977798,-0.0630305173012857,0.0470121958624077,-0.0404665567673419,0.00616703050059186,-0.0108561781526078,-0.0308423712926924,0.0365902218156862,-0.0433803925184293,0.115572486956808,-0.0220050057127992,0.214733516795036,0.0175978150414267,0.305212220930457,0.0460841713620539,0.367759962651917,0.0434251342971947,0.395181168605063,0,0,0.459709804139038,0.040261465634444,0.462746352352383,0.0730762897798058,0.458107159976748,0.114476884280407,0.469602046325804,0.197535572889251,0.53187533098037,0.350431713743433,0.653909217269643,0.549029079106162,0.771482211656007,0.69357708666746,0.775817147578778,0.699399444783353,0.640022663286686,0.600541009348831,0.449314091306292,0.494499089142778,0.294685808166946,0.436243415155445,0.200979688988014,0.420648597949253,0.14272934400708,0.421875084565613,0.0867523770856451,0.433518081284433,0,0,0.548232012145036,0.0614942481388425,0.599064542727547,0.160173608738432,0.684453732211068,0.328350794382914,0.85077333958975,0.617845890475792,1.15125240918837,1.06157051593277,1.579067233572,1.57865071635069,1.96366822443133,1.91315434410149,2.02455746702663,1.84552151366393,1.68952528285308,1.46984338350126,1.18291690665046,1.05152890168506,0.743739117568339,0.751313661438644,0.45137059093372,0.583348340339853,0.272695413088741,0.506575124405117,0.143921338144082,0.497291588802227,0,0,0.681382014974815,0.0948933459071668,0.783458451388924,0.278446389788996,0.975899103609891,0.610009255512523,1.34324740273519,1.18268026895907,1.98606011978654,2.0663949263685,2.90702408612765,3.12157073968342,3.77283347803132,3.81006432151389,3.95679794882813,3.62107933537482,3.27690254632989,2.76917458818866,2.24487939580126,1.85323805396615,1.370780874616,1.19970774297644,0.796968347354778,0.822798790066599,0.45159997371411,0.641449948044283,0.22151109684205,0.604218622749386,0,0,0.861093807971884,0.147143025091054,1.02702291654691,0.446847835374456,1.35821708057074,0.997758831375904,1.99774163626353,1.96590298089404,3.13992348478905,3.51909057938747,4.85819926292561,5.48299872274811,6.5821896780385,6.81701811199378,7.00016148214104,6.39738242924523,5.68443549358449,4.69031860545942,3.75148829871068,2.96465450060691,2.20827376426564,1.79654447356052,1.24219719850362,1.14107439106988,0.678390236125551,0.827449439194879,0.317821191054463,0.75510883519928,0,0,1.08718138431482,0.216091847937832,1.32411658724391,0.659477649161772,1.82106711318579,1.48374846577099,2.80679997995526,2.974425101723,4.64387010937548,5.50657137410758,7.60507890321242,8.95718764967114,10.8080825366258,11.4343657222701,11.657181161052,10.6016178346674,9.21724205926535,7.42174056988438,5.8013159986474,4.43333398549589,3.27493655787771,2.55118605191456,1.78931711768269,1.54159307977511,0.95240223129349,1.06807768307931,0.432161921776014,0.953033236584133,0,0,1.35723090925535,0.302879489366433,1.67061802032072,0.915092624983799,2.35576312250191,2.05953156556166,3.7530827620451,4.19203584348634,6.48434187614725,8.04526643478334,11.2229669867804,13.7212117540246,16.7398321116907,18.028005204922,18.2861625046182,16.5063697550588,14.0277749481654,11.0181652165038,8.38813691456357,6.23168842539076,4.53922109242853,3.43923936861188,2.41933304104145,2.01371189003771,1.26438105407192,1.35978972941507,0.560497677061221,1.19664371519593,0,-2.27373675443232e-13,1.66283876278203,0.403585840022743,2.05158836038868,1.19880138441272,2.93120601867372,2.68331980965581,4.76510183187725,5.51364879165635,8.49944096053036,10.9077319261562,15.4091398908215,19.4146149708151,23.9855689058707,26.1908664998132,26.4656035604344,23.6829152873829,19.7095180654935,15.1426702967403,11.2602222126905,8.18919280593786,5.89151199970934,4.39350917831985,3.08900637025386,2.53289797018397,1.59723241128836,1.6936646540023,0.696428441188118,1.48078002215289,-2.27373675443232e-13,0,1.99171309279882,0.512891036736164,2.44692331762553,1.4890476789069,3.50258206626359,3.28797071871986,5.72175577888902,6.73526580658609,10.333453664884,13.497581745366,19.2169513366402,24.6710940495768,30.7950024303195,33.9344761287439,34.2012586254391,30.3646217357086,24.8731931772809,18.8284293834199,13.8099040090178,9.94625049071647,7.12494044884215,5.29715398238977,3.72824354910881,3.05854144788782,1.92462335388791,2.05341350526442,0.830436488191026,1.79513009443053,0,0,2.32746214607687,0.622699879756055,2.8307075873804,1.75678619659629,4.01321630341909,3.78637959984235,6.46651269825452,7.5807173522594,11.4830750327128,14.9134800455354,21.1214315274751,27.1384159085205,33.9904467567758,37.5620868214123,37.8241511591982,33.446803491805,27.2472850601421,20.6014112772878,15.1726867318134,11.0235519815678,7.97379267519227,6.00274734701907,4.25047919954113,3.54001991870746,2.21501782919449,2.41814686875068,0.951891494713891,2.12617736976881,0,0,2.65085996297103,0.723525795809564,3.17540415004987,1.9719761166657,4.40802274510543,4.09675052257626,6.85954864536279,7.8097960156615,11.519641997244,14.3843306408476,19.7851050136601,24.650569182937,30.4758060459826,33.3740717634705,33.6875249057925,29.9741670665371,24.8193835775692,19.23017540914,14.6358911122311,11.0231113334989,8.21027435120186,6.37658784242694,4.57216288067502,3.9242830599751,2.4346073052302,2.76193254856298,1.04832201078398,2.45501328734827,0,0,2.94334326317176,0.806575383418476,3.45649294598707,2.11026887071057,4.64683609169424,4.16959444962322,6.83468032250767,7.34484871989298,10.3646678423456,11.8463905915792,15.1684643574272,17.1427197740368,20.0363107314161,21.0076926956071,21.4260635513406,19.7285644526833,17.532173742823,14.7168682462066,12.1644162847224,9.87578067236973,7.75677855262848,6.35295613493599,4.64230558972167,4.17306994947694,2.55875971665046,3.06298539797808,1.11131501845466,2.76484149010321,0,0,3.18662985022183,0.863968215367549,3.65510970572677,2.15771274356621,4.71332240380752,4.00276164080788,6.42529369534896,6.31542654311261,8.37086017792717,8.10824601518016,8.86103858721344,7.36507977767087,6.66391285688042,5.27029363750034,5.74469412220924,6.51794023451066,7.92239651910586,8.52866025267349,8.50557289164135,7.91247796579137,6.73009515580179,5.95590296539376,4.45209382218309,4.26461399345317,2.56937820854682,3.29787901267264,1.13141030373663,3.03372495176063,0,-4.54747350886464e-13,3.36873492106497,0.892012172940213,3.76190343709459,2.11364192776091,4.61567216204458,3.63619510105673,5.73642999146568,4.97845052787125,6.09115205509397,4.32508280186676,3.01744972293955,-1.00307169640064,-4.21787704715507,-7.26056786914023,-6.81121979118871,-4.37430551548778,-0.458541446435902,2.73127467689483,4.74484327010032,5.6662961068746,5.38217424619188,5.29500908140608,4.04790357559204,4.21237233817328,2.47357746941816,3.46044991342387,1.11117652083294,3.25156133996597,-4.54747350886464e-13,0,3.47909457842206,0.888843342829659,3.77523334269472,1.98870102983756,4.38073114787176,3.13563910470066,4.89698381444032,3.5932163831153,3.98494365381157,1.31029382802444,-1.03308089233769,-6.03072218923216,-10.0489616781019,-13.522264401618,-13.1593350254457,-10.3022825918965,-5.5973810128603,-1.3310387347633,1.69421226576742,3.59270801256162,3.95662252664761,4.49085774625701,3.48548648421593,4.02989184887838,2.27483195930608,3.53580514447231,1.04592750039728,3.39894136196335,0,0,3.51706975493698,0.857762123664088,3.70155879743743,1.80135198773405,4.04220653403081,2.56884085236061,4.01217476538932,2.32700382967414,2.26787510822987,-0.749572728734165,-3.26211309604287,-8.05270564506964,-11.672736230621,-14.7474723594896,-14.4588192759202,-11.9806852910124,-7.72272513545204,-3.55147259176192,-0.402156611884493,1.94009440240552,2.65093085398848,3.67855581893218,2.859299026401,3.77184524727363,2.014792735029,3.54230731607504,0.954108821137652,3.48104790277466,0,0,3.48102662942074,0.803166071616943,3.55237844748217,1.57612056246035,3.6394502951166,2.00100290486853,3.16683738972597,1.26528899707,0.971846175656992,-2.01756551212884,-4.25785478852549,-8.33294293060726,-11.1402368957642,-13.5579339999881,-13.3242695809054,-11.4476257561241,-8.09070732313876,-4.53067885672908,-1.74111145791403,0.693771431558616,1.50913678837787,2.89506680258091,2.19435414142708,3.43858112150701,1.69128796084033,3.4624620056743,0.827625333060496,3.48114306670095,0,0,3.37832469825662,0.731261531826021,3.33825638321377,1.3305831501948,3.19495192065961,1.46281593234198,2.3938134874179,0.414162670821042,0.0214847744391591,-2.75103782962742,-4.59775857909517,-7.89814817587012,-9.94367783575126,-11.7560315857036,-11.5642027183612,-10.1944225028719,-7.69901617422875,-4.79645376996632,-2.512093779731,-0.149300022431817,0.617114661645246,2.24508541066689,1.59715699508615,3.11209057783799,1.37665082201693,3.34123801019859,0.702531280484436,3.42009350776061,0,-4.54747350886464e-13,3.21568396823614,0.653003245609398,3.08030253592597,1.09739183458942,2.7540352705887,1.0023453064,1.73356786693193,-0.219197032509783,-0.645506609235326,-3.1318647027465,-4.62461309619266,-7.27244107088109,-8.76524556200593,-10.123228206066,-9.98797777972914,-8.97609765293464,-7.16961467460669,-4.80884593471501,-3.02325717362919,-0.792682745056027,-0.156613822898635,1.62908812090518,0.996040353816625,2.72716298681826,1.02466484159822,3.13879758242865,0.554065150098268,3.28437951110436,-4.54747350886464e-13,0,2.99368143739775,0.565527429207577,2.77010323528157,0.859681227470901,2.2945261156965,0.594057957619953,1.1524880114921,-0.690977173864667,-1.11613419601326,-3.2859987058182,-4.48686447675209,-6.59660176262423,-7.70017340045797,-8.70347983995453,-8.60849776153191,-7.80332045511659,-6.4955495324748,-4.52642910835402,-3.17136691362248,-1.08902588426372,-0.625764183175306,1.22986560044501,0.570426337416393,2.42453708399262,0.754982129789823,2.92795522053257,0.436430681545062,3.09071851638328,0,0,2.74048777979897,0.501636486716961,2.46945016132486,0.698055256661064,1.9030473843568,0.31212561342636,0.709593592998317,-0.977600749026351,-1.41125539477616,-3.28570802780541,-4.29400509984953,-5.99967293385907,-6.88052528275966,-7.64804522180475,-7.63458273945707,-6.97922635715076,-6.06766309361592,-4.39421573842355,-3.40349835632333,-1.45665069464394,-1.15212110313314,0.743293909899876,0.081948539822406,2.02549843512043,0.441914736364197,2.64177601072151,0.306340120258028,2.85995536650717,0,0,2.40219488066941,0.398450375814718,2.06067111047105,0.484211858420167,1.45761399391358,0.0422740197145686,0.303097033268386,-1.15665150710993,-1.56580605118688,-3.10670934337304,-3.9209844852785,-5.23428958543445,-5.90598349758329,-6.42852342895094,-6.43226577087444,-5.83461201825685,-5.19528453747989,-3.74968849942888,-3.06682250169979,-1.30530156783516,-1.18552778005142,0.615255575954507,-0.0898179822306702,1.78261468165238,0.278459954532991,2.34679804523512,0.216084765704181,2.51605271014705,0,0,2.11633280060505,0.430330926360512,1.80870117851373,0.451333133947628,1.18358422013625,-0.0300423148264599,0.0686442374299077,-1.18770047163616,-1.64035838223026,-2.94687796392645,-3.70787557845415,-4.79348953469889,-5.4283438513603,-5.84928830670378,-5.96599602752212,-5.45601959117903,-5.06328013887742,-3.78489927740793,-3.31945972318863,-1.6615927255425,-1.61598147559107,0.161013049487337,-0.471361350121697,1.38006293759554,0.0588453588043194,2.03295212291141,0.155201806183868,2.27329333684793,0,0,1.52205134255382,0.200283937647328,1.22786644509324,0.216434320333974,0.700814979596544,-0.180534203420393,-0.14914764545756,-1.04346093176082,-1.37486990349589,-2.262978172771,-2.77076874157592,-3.45201673898373,-3.8481891254296,-4.03598510226948,-4.094881695396,-3.63811306614116,-3.40427141234704,-2.41985084671614,-2.20002899665815,-0.937889925026866,-1.06208064637303,0.310467237502962,-0.32213519880861,1.12637680610806,0.00119225850357907,1.53616523692381,0.0540414613824396,1.63199202111355,0,0,1.52343752280012,0.432117308178931,1.12927187292462,0.387480097102525,0.626223797892635,-0.0922483750910033,-0.232601491787136,-1.02766149539002,-1.48573090862101,-2.31220896734067,-2.92702856553205,-3.58191027855173,-4.09611117134045,-4.29875613354034,-4.49695050898754,-4.07583878409605,-3.96293504396181,-2.98539208632701,-2.80530111014377,-1.499780776222,-1.55406471268088,-0.130335496199223,-0.595742339441131,0.840742348471395,-0.0447562473418657,1.37428847471801,0.154848194008991,1.58584473528572,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.8421709430404e-14,0.55835558142789,0.143222102792919,0.438983496669351,0.0635114862620583,0.177835040826579,-0.20199300973789,-0.240212760667674,-0.637899893114451,-0.786730238086903,-1.16333269000111,-1.34578715854528,-1.61350844288282,-1.73482270949856,-1.79900924980987,-1.80036380740844,-1.62070164141645,-1.5264650534439,-1.14343417036403,-1.0494244700665,-0.548465231911024,-0.558796785756982,-0.0142925451960139,-0.187324144695395,0.360577850846965,0.0241361170579637,0.547969715427797,0.10282047837083,0.497745035341126,-2.8421709430404e-14,-5.6843418860808e-14,0.332566797584207,0.0313903871996786,0.292387809562285,0.017963859618078,0.187403521833801,-0.0731843100117544,0.0168595705108032,-0.234545309794669,-0.208416043077648,-0.43664314331653,-0.450408491819701,-0.623204978022102,-0.647101267837741,-0.724654346140539,-0.736333096284,-0.689811133065803,-0.690518858035773,-0.518238008063179,-0.537298849499791,-0.264338482072446,-0.342861695604881,-0.00516741323821179,-0.17101299963673,0.19730919919283,-0.0534382145133918,0.312028564834179,-0.00257894998520669,0.373305575442089,-5.6843418860808e-14,0,0.40330390178076,0.0435317205639194,0.33732847657609,0.00350165027214189,0.20519339573093,-0.118206130869339,0.00623397497599854,-0.299402435082925,-0.231302197575701,-0.492701481336553,-0.45363407389425,-0.63483437660534,-0.602078445771781,-0.672917787573851,-0.639788819754358,-0.586224412206775,-0.565424193373701,-0.393211700913071,-0.412767700354721,-0.145086066394697,-0.236001327693884,0.0946629430658277,-0.0848109585585917,0.274470203738247,0.0108342002520203,0.374051433581144,0.0262594066175552,0.409936673745051,0,0,0.399722368102857,0.0339227594159865,0.378953748870913,0.0359340918531643,0.323511146652777,0.0055612901941231,0.24189913813791,-0.0375658513377175,0.157002600832016,-0.0656207251321348,0.091674659977798,-0.063030517301172,0.047012195862294,-0.0404665567674556,0.00616703050059186,-0.0108561781527214,-0.0308423712926924,0.0365902218155725,-0.043380392518543,0.115572486956808,-0.0220050057126855,0.214733516795036,0.0175978150415403,0.30521222093023,0.0460841713621676,0.36775996265203,0.0434251342973084,0.395181168605063,0,0,0.459709804138811,0.0402614656343303,0.462746352352383,0.0730762897798058,0.458107159976976,0.114476884280634,0.469602046325576,0.197535572889251,0.531875330980142,0.35043171374366,0.65390921726987,0.54902907910639,0.77148221165578,0.693577086667688,0.775817147578778,0.69939944478358,0.640022663286913,0.600541009348717,0.449314091306519,0.49449908914255,0.294685808166719,0.436243415155218,0.200979688987786,0.420648597949139,0.142729344006852,0.421875084565841,0.0867523770858725,0.433518081284433,0,0,0.548232012145036,0.0614942481388425,0.599064542727774,0.16017360873866,0.684453732210841,0.328350794382914,0.85077333958975,0.617845890475792,1.15125240918815,1.06157051593254,1.57906723357178,1.57865071635047,1.96366822443133,1.91315434410171,2.0245574670264,1.8455215136637,1.68952528285308,1.46984338350103,1.18291690665046,1.05152890168529,0.743739117568339,0.751313661438417,0.451370590933493,0.583348340340081,0.272695413088968,0.50657512440489,0.14392133814431,0.497291588802454,0,0,0.681382014975043,0.0948933459071668,0.783458451388924,0.278446389789224,0.975899103609891,0.610009255512523,1.34324740273541,1.18268026895885,1.98606011978654,2.0663949263685,2.90702408612788,3.12157073968365,3.77283347803154,3.81006432151389,3.95679794882813,3.62107933537482,3.27690254632989,2.76917458818889,2.24487939580149,1.85323805396592,1.37078087461623,1.19970774297644,0.796968347354778,0.822798790066599,0.45159997371411,0.64144994804451,0.221511096842278,0.604218622749158,0,0,0.861093807971884,0.147143025091282,1.02702291654668,0.446847835374001,1.35821708057097,0.997758831375904,1.99774163626375,1.96590298089382,3.13992348478928,3.51909057938724,4.85819926292538,5.48299872274788,6.5821896780385,6.81701811199378,7.00016148214104,6.39738242924545,5.68443549358494,4.6903186054592,3.75148829871091,2.96465450060691,2.20827376426519,1.79654447356074,1.24219719850385,1.14107439107033,0.678390236125551,0.827449439195107,0.317821191054236,0.755108835199508,0,0,1.08718138431527,0.216091847937832,1.32411658724391,0.659477649161772,1.82106711318534,1.48374846577144,2.8067999799548,2.974425101723,4.64387010937548,5.50657137410758,7.60507890321287,8.95718764967114,10.8080825366262,11.4343657222696,11.6571811610524,10.601617834667,9.21724205926489,7.42174056988438,5.8013159986474,4.43333398549544,3.27493655787725,2.55118605191501,1.78931711768314,1.54159307977557,0.95240223129349,1.06807768307931,0.432161921776469,0.953033236583678,0,0,1.35723090925489,0.302879489366433,1.67061802032117,0.915092624984254,2.35576312250191,2.05953156556166,3.75308276204532,4.19203584348588,6.48434187614703,8.04526643478334,11.2229669867804,13.721211754025,16.7398321116907,18.028005204922,18.2861625046182,16.5063697550584,14.0277749481654,11.0181652165043,8.38813691456357,6.2316884253903,4.53922109242876,3.43923936861233,2.41933304104145,2.01371189003726,1.26438105407192,1.3597897294153,0.560497677061221,1.19664371519593,0,0,1.66283876278158,0.403585840022743,2.05158836038868,1.19880138441272,2.93120601867327,2.68331980965627,4.76510183187725,5.51364879165681,8.49944096053036,10.9077319261562,15.4091398908213,19.4146149708151,23.9855689058707,26.1908664998127,26.4656035604339,23.6829152873834,19.7095180654935,15.1426702967403,11.26022221269,8.18919280593832,5.89151199970979,4.39350917831962,3.08900637025431,2.53289797018397,1.59723241128813,1.69366465400185,0.696428441188573,1.48078002215289,0,0,1.99171309279882,0.512891036736619,2.44692331762508,1.4890476789069,3.50258206626404,3.28797071871986,5.72175577888902,6.73526580658654,10.3334536648836,13.4975817453656,19.2169513366407,24.6710940495773,30.79500243032,33.9344761287443,34.2012586254391,30.3646217357082,24.8731931772809,18.8284293834195,13.8099040090174,9.94625049071647,7.12494044884215,5.29715398239023,3.72824354910881,3.05854144788782,1.92462335388836,2.05341350526396,0.830436488191026,1.79513009443053,0,0,2.32746214607641,0.622699879756055,2.8307075873804,1.75678619659584,4.01321630341909,3.78637959984235,6.46651269825452,7.5807173522594,11.4830750327123,14.9134800455354,21.1214315274756,27.1384159085201,33.9904467567758,37.5620868214123,37.8241511591982,33.446803491805,27.2472850601416,20.6014112772878,15.172686731813,11.0235519815683,7.97379267519227,6.00274734701952,4.25047919954113,3.54001991870791,2.21501782919449,2.41814686875068,0.951891494714346,2.12617736976927,0,0,2.65085996297148,0.723525795810019,3.17540415004987,1.9719761166657,4.40802274510543,4.09675052257626,6.85954864536234,7.80979601566196,11.5196419972444,14.384330640848,19.7851050136605,24.650569182937,30.4758060459826,33.3740717634705,33.687524905793,29.9741670665371,24.8193835775692,19.2301754091395,14.6358911122306,11.0231113334985,8.21027435120141,6.37658784242649,4.57216288067502,3.9242830599751,2.4346073052302,2.76193254856298,1.04832201078443,2.45501328734781,0,0,2.94334326317221,0.806575383418021,3.45649294598661,2.11026887071057,4.64683609169424,4.16959444962322,6.83468032250767,7.34484871989298,10.3646678423456,11.8463905915796,15.1684643574272,17.1427197740363,20.0363107314161,21.0076926956067,21.4260635513406,19.7285644526837,17.532173742823,14.716868246207,12.1644162847224,9.87578067236973,7.75677855262802,6.35295613493599,4.64230558972122,4.17306994947648,2.55875971665046,3.06298539797854,1.11131501845512,2.76484149010321,0,0,3.18662985022183,0.863968215368459,3.65510970572632,2.15771274356666,4.71332240380707,4.00276164080742,6.42529369534941,6.31542654311306,8.37086017792672,8.10824601518016,8.86103858721299,7.36507977767042,6.66391285687996,5.27029363750125,5.74469412220833,6.51794023451066,7.9223965191054,8.52866025267303,8.5055728916418,7.91247796579182,6.73009515580179,5.95590296539422,4.45209382218263,4.26461399345362,2.56937820854728,3.29787901267218,1.13141030373617,3.03372495176018,0,0,3.36873492106588,0.892012172940667,3.76190343709413,2.11364192776091,4.61567216204412,3.63619510105582,5.73642999146523,4.97845052787216,6.09115205509352,4.3250828018663,3.01744972294,-1.00307169640155,-4.21787704715416,-7.26056786913932,-6.81121979118961,-4.37430551548869,-0.458541446435902,2.73127467689483,4.74484327009986,5.66629610687414,5.38217424619233,5.29500908140653,4.04790357559204,4.21237233817374,2.47357746941907,3.46044991342433,1.11117652083249,3.25156133996552,0,0,3.47909457842297,0.88884334282875,3.77523334269517,1.98870102983756,4.38073114787176,3.13563910470066,4.89698381444032,3.5932163831153,3.98494365381157,1.31029382802444,-1.03308089233769,-6.03072218923307,-10.048961678101,-13.522264401618,-13.1593350254457,-10.302282591897,-5.59738101286075,-1.33103873476239,1.69421226576742,3.59270801256116,3.95662252664761,4.49085774625792,3.48548648421684,4.02989184887838,2.27483195930699,3.53580514447231,1.04592750039819,3.39894136196426,0,4.54747350886464e-13,3.51706975493607,0.857762123664088,3.70155879743652,1.80135198773314,4.04220653403081,2.56884085236152,4.01217476538932,2.32700382967414,2.26787510822987,-0.749572728734165,-3.26211309604196,-8.05270564507055,-11.6727362306201,-14.7474723594887,-14.4588192759193,-11.9806852910133,-7.72272513545204,-3.55147259176192,-0.402156611883584,1.94009440240507,2.65093085398848,3.67855581893127,2.85929902640191,3.77184524727272,2.0147927350281,3.54230731607413,0.954108821138561,3.48104790277421,4.54747350886464e-13,0,3.48102662942074,0.803166071616033,3.55237844748217,1.57612056245944,3.6394502951166,2.00100290486853,3.16683738972597,1.26528899707,0.971846175656083,-2.01756551212975,-4.25785478852549,-8.33294293060771,-11.1402368957642,-13.5579339999872,-13.3242695809049,-11.4476257561246,-8.09070732313876,-4.53067885672908,-1.74111145791312,0.693771431559526,1.50913678837787,2.89506680258182,2.19435414142663,3.43858112150701,1.69128796084033,3.4624620056743,0.827625333061405,3.48114306670186,0,4.54747350886464e-13,3.37832469825753,0.731261531826931,3.33825638321287,1.33058315019571,3.19495192065961,1.46281593234198,2.3938134874179,0.414162670821952,0.0214847744400686,-2.75103782962833,-4.59775857909517,-7.89814817587012,-9.94367783575217,-11.7560315857031,-11.5642027183621,-10.1944225028719,-7.69901617422784,-4.79645376996632,-2.512093779731,-0.149300022431817,0.617114661646156,2.24508541066689,1.59715699508524,3.11209057783708,1.37665082201738,3.34123801019859,0.702531280483527,3.42009350776152,4.54747350886464e-13,0,3.21568396823614,0.653003245609398,3.08030253592551,1.09739183458942,2.7540352705887,1.00234530639909,1.73356786693284,-0.219197032509783,-0.645506609235326,-3.1318647027465,-4.62461309619175,-7.27244107088109,-8.76524556200593,-10.1232282060651,-9.98797777973004,-8.97609765293555,-7.16961467460715,-4.80884593471592,-3.02325717362919,-0.792682745056027,-0.156613822897725,1.62908812090518,0.996040353817079,2.72716298681735,1.02466484159913,3.13879758242774,0.554065150099177,3.28437951110436,0,0,2.99368143739684,0.565527429207577,2.77010323528066,0.859681227469991,2.2945261156965,0.594057957619043,1.15248801149301,-0.690977173864667,-1.11613419601326,-3.28599870581911,-4.48686447675209,-6.59660176262514,-7.70017340045797,-8.70347983995453,-8.60849776153282,-7.80332045511659,-6.49554953247389,-4.52642910835402,-3.17136691362339,-1.08902588426463,-0.625764183174397,1.22986560044501,0.570426337416393,2.42453708399171,0.754982129788914,2.92795522053348,0.436430681545971,3.09071851638328,0,0,2.74048777979897,0.501636486716052,2.46945016132486,0.698055256661974,1.90304738435771,0.31212561342727,0.709593592997408,-0.977600749026351,-1.41125539477616,-3.28570802780541,-4.29400509984953,-5.99967293385816,-6.88052528275875,-7.64804522180384,-7.63458273945616,-6.97922635715076,-6.06766309361501,-4.39421573842446,-3.40349835632333,-1.45665069464485,-1.15212110313223,0.743293909899876,0.0819485398214965,2.02549843512043,0.441914736364197,2.64177601072151,0.306340120258028,2.85995536650807,0,0,2.40219488066941,0.398450375814718,2.06067111047196,0.484211858420167,1.45761399391358,0.0422740197145686,0.303097033267477,-1.15665150710993,-1.56580605118688,-3.10670934337304,-3.9209844852794,-5.23428958543445,-5.90598349758329,-6.42852342895094,-6.43226577087444,-5.83461201825685,-5.19528453747989,-3.74968849942888,-3.06682250169979,-1.30530156783516,-1.18552778005233,0.615255575954507,-0.0898179822306702,1.78261468165238,0.278459954532082,2.34679804523512,0.216084765704181,2.51605271014705,0,0,2.11633280060505,0.430330926360512,1.80870117851373,0.451333133946719,1.18358422013625,-0.0300423148255504,0.0686442374308172,-1.18770047163616,-1.64035838223026,-2.94687796392554,-3.70787557845415,-4.79348953469889,-5.42834385136121,-5.84928830670378,-5.96599602752212,-5.45601959117903,-5.06328013887742,-3.78489927740793,-3.31945972318863,-1.6615927255425,-1.61598147559107,0.161013049487337,-0.471361350121697,1.38006293759554,0.0588453588043194,2.03295212291141,0.155201806182959,2.27329333684884,0,0,1.52205134255382,0.200283937647328,1.22786644509415,0.216434320334884,0.700814979595634,-0.180534203420393,-0.14914764545756,-1.04346093176082,-1.37486990349589,-2.262978172771,-2.77076874157592,-3.45201673898373,-3.84818912543051,-4.03598510226857,-4.09488169539509,-3.63811306614116,-3.40427141234704,-2.41985084671524,-2.20002899665906,-0.937889925026866,-1.06208064637303,0.310467237502962,-0.32213519880861,1.12637680610806,0.00119225850357907,1.53616523692381,0.0540414613833491,1.63199202111355,0,0,1.52343752280103,0.432117308178931,1.12927187292553,0.387480097102525,0.626223797893545,-0.0922483750910033,-0.232601491787136,-1.02766149538911,-1.4857309086201,-2.31220896733976,-2.92702856553205,-3.58191027855173,-4.09611117134136,-4.29875613354125,-4.49695050898754,-4.07583878409605,-3.96293504396272,-2.98539208632701,-2.80530111014377,-1.49978077622109,-1.55406471268088,-0.130335496199223,-0.595742339441131,0.840742348472304,-0.0447562473409562,1.3742884747171,0.154848194009901,1.58584473528572,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive1110_field9":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57.717502601382,77.7388495456012,49.5428784884327,60.4233224511711,55.7321836755098,57.7124380787909,56.605014584915,57.099134641929,56.7202947188789,56.8348912923326,56.4623214610555,56.7606601737895,56.2432207498654,56.4184571479547,56.4018981036472,56.2677198852971,56.3124283214563,56.6169410519842,56.3934674481821,56.6853068678373,56.7819981679842,56.7902951590613,56.90109041473,57.0382653014436,56.7686862291491,57.6071209928368,54.3688706832942,61.8275304048691,35.206672548139,57.7174564571767,-50.2361096144997,63.4406834772027,50.2087377684452,57.6174177569877,54.199082556664,55.234642587909,54.8912462523529,54.7102058055166,54.8457688703685,54.8331019359869,54.7141494830702,54.7753754887195,54.7617473070154,54.6674338687409,54.7584444074455,54.7505403044754,54.6520663027108,54.7436553994892,54.7455142692593,54.6413197245757,54.8259563676637,54.7709487803967,54.6553510882997,55.2537633990217,54.6185385620929,53.8885609830487,60.50975762606,45.3192774866946,78.4531683648934,-50.2360224010257,50.3674916019632,46.9511178045633,55.8830480878211,54.3999474784334,56.6936891076507,56.0753585602683,56.6143260888426,56.3460475504861,56.3594887093399,56.2830876121869,56.2018927549119,56.1462799334505,56.2005468343189,56.0842468311558,56.1192772298826,56.1277423367393,56.1051152451301,56.1699451817693,56.2758073627397,56.2766968775154,56.2372478193091,56.6522446465786,55.8071464980103,56.8164277114591,55.9407357158162,56.585068182149,56.7901628360993,48.3024548267389,69.8644199995604,50.3674908825525,57.7383460585624,52.0088635056101,52.567426087451,54.9168268616051,54.4955302258735,55.3543835301528,55.3312591025931,55.1869876790271,55.3775672767078,55.2541310122685,55.3684080702272,55.2648096099536,55.3274543920502,55.1641725542235,55.2392366945321,55.2219231800042,55.2188692764621,55.2440775927256,55.2655536019817,55.3139631873163,55.0901491675009,55.5509032443472,55.1218532141966,55.5398107981801,56.3378296883698,52.0174589650615,59.2646253961864,47.8023291877125,48.913365816137,57.738347880549,54.3539352825001,53.5274598134768,54.9828419575109,54.3486647253742,55.8066440393118,55.1314082213244,55.9289976171222,55.6149021959262,56.003649846537,55.7541276231074,55.8734463985109,55.6972491432464,55.7600470534236,55.6926122027685,55.7779810076876,55.7096761683344,55.7714438590326,55.7846355822142,55.6904762296069,55.9338781588187,55.710878181299,56.0919587797571,56.1397163110204,54.5396355015527,57.0170587442383,53.025466582434,57.3380937533635,56.5821338207586,53.9408830554242,54.3539351967509,55.7696171689653,53.6784564318901,54.6268426941084,54.2482416607386,54.9207487069578,55.0382470362657,55.4655341002548,55.3545042363985,55.589322062482,55.3349964578557,55.508611068028,55.395648538866,55.4927087329475,55.3573202949821,55.4698697910111,55.3302948005718,55.3476713373371,55.4808748043712,55.3575325543094,55.6165230885612,55.6307292499719,54.8987093544186,56.0554993783266,54.0121302886488,57.045025178569,53.9327844684812,54.5112705081491,53.5968030173421,55.0506006029556,55.7696170816107,55.5733957452335,54.1439245363396,54.9502033266695,54.5178662170342,55.4839555408567,55.0737471895744,55.6883625386913,55.3015817890017,55.678694664316,55.4967171944491,55.720975631436,55.4962006587125,55.6541993516267,55.4354037355934,55.4725556097034,55.5391831296131,55.501222814238,55.6281735290898,55.6862274881381,55.3402307835074,55.8345856868902,54.8710339385937,56.7541539847374,54.6121034550512,56.19660578223,54.8176905283495,55.8296366196381,54.8030494454202,53.7914064457862,55.5733954824899,55.5013485200426,54.3116577806734,55.215697665139,54.6140512551862,55.2953665783749,54.8819464895293,55.4013444534009,55.259072949558,55.6031792120714,55.3720685631753,55.5993861274518,55.2850886786543,55.3487338311237,55.3258566212514,55.2763133938483,55.2747254867468,55.424097419806,55.1755379854608,55.4680732717057,55.0901194402902,56.1930013665099,54.8811858837965,56.239642741974,54.4927861961033,55.6981885544401,54.530956587322,54.9691539332075,55.2352558063871,54.7159638907588,55.5013488626685,55.7016714040729,54.7540746986103,55.3670690302997,54.5876466938355,55.296920797672,55.0167953157733,55.5942221514324,55.2954681848194,55.6684950419254,55.3215897876796,55.4875759680577,55.3817678653016,55.3324715151364,55.1288823181405,55.2379384940002,54.9562070210749,55.1662830854766,55.1355367704628,55.8019827140301,55.1082089669673,56.157982512014,54.7192152044566,55.9912755067189,54.9160560117731,55.8523507806518,55.1383875423671,55.0039846727959,55.1388997654199,54.8271282794743,55.7016712815418,55.5858714302601,54.5567942159266,55.2976783351289,54.7784443699504,55.4325335618738,55.0696739958866,55.5442788032293,55.1903060919659,55.5146127216695,55.4059115297865,55.4780961908486,55.1793044131676,55.1922068682827,54.6672130329659,54.6771939425846,54.5608408285675,55.0419938800373,54.8286872993669,55.7649630831169,54.7739327808928,55.8833351740612,54.9850904738228,55.9857001543584,55.0257283914933,55.445887968948,55.1671562831699,55.1706791843149,55.3984171359041,54.6568938237061,55.5858712730205,55.6102093529056,54.7924659898352,55.5225637536222,54.9547389195726,55.4900283035066,55.0182417159955,55.5011456746815,55.3522672135597,55.6552663387844,55.4259481669515,55.6105278625572,55.0611616835312,54.8799295787286,54.2092164431338,54.2099999084925,54.0574046556217,54.6034493630599,54.4062336320108,55.4720764948723,55.0505046912581,56.0815372068249,55.2015895673213,55.8744055037732,55.2112949634331,55.4762215021794,55.3355565206821,54.9827298049616,55.3519700939406,54.9399003151421,55.6102095691519,55.7064415214556,55.0203873013367,55.5368555901726,54.8757281555524,55.4328203057639,55.1862368078127,55.6220782967939,55.4369149885138,55.7984695423817,55.4973197023173,55.5866635528021,55.0968039953631,54.7233199832461,54.0024731212941,53.0775858631703,53.0585045665988,54.1447336450457,54.1235655740471,55.8246177084298,55.2231044045114,56.0910175434354,55.2765272865513,55.7735503819517,55.4141286942781,55.3929249957346,55.4024472850165,55.1551062002597,55.4885682000989,55.1107455032428,55.7064414527982,55.6338224005277,54.9136868968893,55.4941032381343,55.0898825920894,55.5867476193784,55.3176070733038,55.7362313894388,55.4944881721067,55.8903274394693,55.8590436290028,56.0457219488738,55.4934491160451,54.4012047046964,53.3038781888192,53.2049109395596,51.6233861651788,54.1064942299169,54.3169216563953,55.7091936116245,55.6516328749374,56.1638055144047,55.6926259186898,55.8483885154972,55.5498949237883,55.4631025047203,55.502597426109,55.2377198415906,55.5420101088089,54.9547789404903,55.6338222784502,55.6534109108695,55.0805780969396,55.6305084458442,55.223802206371,55.6489485744779,55.3141925839678,55.77537597108,55.7614768403572,56.2197670567677,56.2198897718178,56.3825349621543,55.8960293082378,55.1878384771636,52.4865385819586,52.7917005137393,52.5335883873039,53.0463423107212,54.9348846187307,56.0208453794857,56.0749762142742,56.6648000781875,55.9969378978731,55.9825918230951,55.7132371695958,55.5718659787519,55.6384718460339,55.2098445039835,55.5372845175656,55.1968442399386,55.6534110583416,55.7089653394176,55.2607040588971,55.6554342922667,55.2021081562251,55.6490517933013,55.5181396517021,55.946222518453,55.9993403584638,56.5022722908272,56.6511190535742,56.9108086589477,56.1239629424967,55.8300246670745,53.8779629370928,52.0398364700112,52.3033763245651,54.0086935140487,54.7732441450561,57.1359747905206,56.54931173683,56.824746891696,56.3371670574097,56.1203070305953,55.8916390742323,55.5493171607228,55.6377949154977,55.3377300267817,55.6219491162201,55.2901758183569,55.7089652910581,55.6876429734011,55.2001926950952,55.6335994140807,55.379300510636,55.7724577473737,55.6811726060179,56.0805223316756,56.0489861844189,56.6126575931451,56.7721351137692,57.5875074734369,56.6490541241161,55.8146631841204,53.9140856359259,53.2905724165905,52.3925399566529,54.4589981534177,55.4570678587786,56.9957343279711,57.28061275001,57.0196891560623,56.5644867366972,56.2687622853468,56.0278518787921,55.7146926388611,55.802551915114,55.4749787984979,55.6988913262524,55.2482926542807,55.6876429428519,55.674265517728,55.3501649349756,55.720412856693,55.5105699666124,55.8344437538765,55.6497850208125,56.1428737773909,56.2465129622619,56.9384125996708,56.9359903299444,57.3526457558407,56.9002172903622,55.7160530280305,54.1483619149473,52.9605288121077,52.9767892046014,54.5865976762651,55.5668240851861,56.8421834964498,57.0796162995307,57.226357795405,56.6273052732986,56.2760341325406,56.1438378329042,55.7810929296675,55.8330922288826,55.4244722705509,55.6538795442361,55.3826993423863,55.6742655761583,55.7379276923658,55.4756199170665,55.7580184489364,55.4784232399721,55.8733381446981,55.8016571267177,56.1730756571484,56.1990414036903,56.7066913068876,56.8390986638211,56.9394635219798,56.4363228058397,55.7794841735994,53.7620494258722,53.6689780814891,52.2249617647033,54.2958259001422,55.5339528357551,56.7398183386773,56.8562338743671,56.9285709325012,56.7916962906771,56.3806004353282,56.2284171460472,55.8406791523993,55.9036894108495,55.5945436525314,55.7856090500373,55.5227058060603,55.7379276900933,55.6927069568155,55.4518072803505,55.7488784910007,55.5912506916728,55.8771058331851,55.9514606792328,56.3718913756943,56.2858618536813,56.5974028073367,56.4307948514575,56.8667631277758,55.6634828896898,55.381297584996,53.2448851917682,53.0020478818871,53.1169549685248,53.5380396001478,54.92474961952,56.0939378932569,56.5631624507111,56.5868666255024,56.4909225385711,56.252869817189,56.1422511882725,55.8104112356137,55.9233997547196,55.5974837174641,55.7375447830143,55.4395701499348,55.6927069090013,55.7653086864946,55.527611370788,55.7972581363551,55.7832738541559,55.9701053649614,55.6157927654815,55.9294290028602,56.0316443743246,56.6243727256414,56.2322496526526,56.3709230842542,55.4771226726265,54.7853718089425,53.8025113743736,52.9160410379241,53.0056951149668,54.0792877196677,54.5496796509798,55.7220115498098,56.1661482174226,56.4658713661021,56.439988167607,56.2085247236738,56.3128835847991,55.965445407464,56.0110234464242,55.7149906370598,55.8290877648762,55.6403716796812,55.7653087650917,55.6800699998368,55.6924929314917,55.7760081501628,55.5014426809325,56.0939820288598,56.2160582965873,56.3917866007571,55.9749797704055,56.2543862529542,55.8412053358041,55.7845563348984,55.0273613048215,54.6610162743573,53.5067466788723,53.5051253208044,52.8461092610532,53.8017361240031,54.5111087231936,55.1752644395787,55.7454327638398,55.8768614552974,56.2375705787896,55.9656873741874,56.0372264547291,55.7995665400233,55.8307732737699,55.6279066634585,55.7481312771372,55.5359637343813,55.6800699674721,55.820728929559,55.5332127223123,56.010787974348,55.7148673026615,55.4082424264816,55.3957112645999,56.1785772187612,55.9372619491801,56.1827396933493,55.7552055893256,55.9943089485523,54.9892293204427,54.8508431360127,53.8285176712177,53.8155319066592,53.7605554499455,53.9735020997173,54.6642595370317,55.2143063054634,55.7542397212227,56.0065055375071,56.1036254133986,56.1434612470862,56.1424654260367,55.9586458307336,56.1111383072878,55.8354288718969,55.9229876651626,55.7972349789526,55.8207289548441,55.7098196500475,55.6138415681979,55.4769035108908,56.4221078796128,56.9381417912315,55.8360505634663,55.7377830177268,55.573073408781,55.9906990976049,55.1792951410786,55.4590660894877,54.6477129979994,54.4622946559233,53.9687212101642,53.6198917405268,53.6882895295386,53.9591826988256,54.3756721570195,54.7667567418917,55.2813134026221,55.3911102174738,55.7896633165355,55.5295920053177,55.9605038238036,55.5725118860852,55.7414388392399,55.6753950049818,55.5583602434054,55.5510918586121,55.709819593105,55.6956454609247,56.2429249995437,55.8070023201645,53.9847859100461,55.0645836255921,56.0937845041966,56.4210853217772,55.6590719950934,56.3427046112087,55.4812833199594,55.6564326505881,55.1288161901325,54.7525695540554,54.5035778415955,54.311552976293,54.2820806663183,54.5139429787821,54.8766016516168,55.1352263720605,55.5578762305336,55.760277797292,55.9355078679282,56.2084412525432,55.8911378640207,56.2380964110474,55.9443048587998,55.9715844412004,56.2260337101856,55.7738815272229,55.6956456207418,55.5747650680114,55.0072483383193,57.7888106861003,57.9594800640629,55.7329484671508,54.6801639387796,56.1361781446511,54.7499136108865,55.446150219559,55.0620163631936,54.7675280436677,54.5685176448414,54.227264923898,54.0512671781278,53.8023987152806,53.9399845587298,53.8887679393068,54.2382891836557,54.4655376413085,54.8993283574184,54.9149661540848,55.3872571044393,55.0821278374683,55.841147343059,54.9559460411325,56.0139706743421,55.0874735242696,55.5260667508518,55.9855210937502,55.5747650421268,57.395429437855,55.168634559729,51.1588680945265,54.8080896245172,58.2622623301839,55.1188653395638,56.7760828033514,56.1681095632106,55.7099709066979,55.9122249158734,55.3873584569522,55.4120010895873,55.0329695973961,54.9787248738418,54.6889867451573,54.8797229082138,54.9119469753161,55.1481940032051,55.3753387770477,55.641155324795,55.7784535017198,55.9437744498344,56.2062045855076,55.7519575297418,56.9634702452053,55.2781148996324,57.206245117213,55.7523116153624,55.8115550496784,57.3954296476801,51.8118783309664,63.1826670259219,62.6600002841477,50.6622994969565,55.8166505108436,54.9715041794358,54.2550474687655,55.0067264856906,54.4068381008542,54.7982751857233,54.1638846031529,54.2357337463889,53.816421534345,53.6833470989007,53.6234824505001,53.6126734775263,53.5724897811269,53.9210076264907,53.9700291229464,54.2505360200895,54.4428665543817,54.7744558250468,54.5722798524235,55.2981693709603,54.1557887513731,56.6615536526717,53.0239393148405,57.8282524615851,54.0859520967419,51.8118801792214,63.3613798500008,36.4642153102507,62.6618859971865,58.6976470003483,55.522035758915,57.4522167507208,55.9438477511202,56.8158981385992,56.0062474690495,56.2235302361305,55.7583832130782,55.8321175672822,55.595076446727,55.4851532690372,55.4536964769115,55.5614506974386,55.4273133821853,55.7615725613064,55.8263004218799,55.9833825274448,56.1538284181271,56.287345014473,56.3491414796218,56.2699636163203,56.9929164530578,55.2171366296647,59.3513185908226,53.4386120121884,65.6989598520291,63.3613805376733,158.683592407858,37.33643875735,54.0659199987929,51.8828213625683,52.9729568889473,54.5140944935444,53.3415325410049,54.0426152122356,53.6718609274202,53.5390641197213,53.3396856755395,53.2103963987337,52.8062091327374,52.849892928027,52.6512027736143,52.5933695605772,52.7553653914449,52.9166706429306,52.9706553115522,53.3431661823849,53.5045118108504,53.6602613843755,53.8270297485046,54.0078120892112,53.331470538717,54.9400104212512,50.1943064657097,59.5885766103452,35.1205438396479,158.683676649395,57.7175487455873,77.7391223362998,49.5431576709477,60.423607076244,55.732465926747,57.7127214953209,56.6052979818738,57.0994179995354,56.7205783403891,56.8351744728669,56.4624630813629,56.7609434531687,56.2435035733004,56.418740079362,56.402181261462,56.2680025626306,56.3127112938863,56.6172242854358,56.3937503807154,56.6855901139798,56.7821399460466,56.7905784200857,56.9013738545785,57.0385488755904,56.7689697136085,57.6074028380389,54.3691564696505,61.8278104064405,35.2069468234031,57.717502601382,93.1881778188722,119.356915153179,80.000623195654,94.8517009205909,88.4662746327361,91.5813290355692,89.9897580228408,90.6904117074959,89.9752599811725,90.3954941876824,89.7048853014853,89.8889192540122,89.5326085909085,89.5877139858611,89.2808544079106,89.6226813302532,89.3816328888507,89.6748421334735,89.7685279351123,89.9821163073247,90.0757441355294,90.3216827268471,90.3807555612367,90.496004750823,90.1737151889488,91.1771097891864,88.2942300872714,97.3911423290142,57.612419190553,93.1881527156066,-37.1936565795341,97.408051594492,80.6512869504098,92.652096414521,87.3105199353733,88.7352279420567,88.2946671415096,88.1845924198786,88.1866929283525,88.0540450587878,88.116645776751,88.1086199678032,88.0171624999526,88.085128925575,88.0459568372605,87.9556736519157,88.0290355003981,88.0474685331529,87.9854042367886,88.0209576248121,88.1725984646968,88.0172619722573,88.0317949290519,88.7492386399238,88.2331697768169,87.4356581841865,94.9927988576986,72.1254857649725,117.955900905726,-37.1936147946978,71.842839777688,75.0295673251917,88.9458919337361,87.1474124849629,90.6346256411268,89.6442576530208,90.1126130452111,89.8791902909243,89.9529983104244,89.782422209816,89.8238258777954,89.6512435791859,89.595487630723,89.524659728104,89.5640812532438,89.5365203491164,89.6238619250575,89.6774660788172,89.7185170197774,89.8432629273131,89.7708488313576,90.2802076079481,89.3213473798118,91.0109409996131,88.5892280234495,88.9058703057108,89.6805986481275,82.1708648155965,106.541901217669,71.8428373345301,92.4264091230891,83.7995749880718,84.0591636336177,88.0608054670462,87.3195710430548,88.408427991449,88.5996512736962,88.5251917122185,88.7827406246836,88.5279912680929,88.6565993779109,88.4288643788475,88.5742732400925,88.4522028307933,88.4993777622408,88.4295179502382,88.4775890834124,88.4228606374158,88.4830327153152,88.6627858627247,88.3096954712844,89.1180108236044,88.1036284073433,88.1391392224292,89.8946519190571,84.9557309959897,94.8476673807619,75.6608364251131,83.3297711465329,92.4264100408129,87.2621893206765,85.7817492395722,87.50759565178,86.5684508331386,89.1887223901267,88.3643566185699,89.6243063980853,88.9981024439061,89.4120967883809,89.1108492864888,89.3275287637477,89.1140086046068,89.2812851099075,89.0531488692295,89.1555113405199,89.0947407067113,89.1466288045753,89.2282773127639,89.1780396155948,89.5211203029051,88.9523944412912,89.2722605826437,89.5475866902237,88.0248527983359,91.9970460349689,84.737674637596,91.4586881549733,89.8015586892646,85.6091217102288,87.2621881614301,88.7973697708504,85.5272221761092,87.3108322570448,87.0646683445604,88.0705754532464,88.1144938328976,88.6462412786177,88.4449829486208,88.9158275501243,88.6597398697133,88.9316062515089,88.6204450895063,88.7847179538543,88.5586182167111,88.6742573521713,88.6409028109409,88.663023672563,88.768575143834,88.5621580814369,88.7343888692455,88.8378931808591,88.3591289137001,90.3222485700698,86.4728138992281,90.6571238471365,86.051179024191,87.2513162716373,86.2670822476161,87.6539990611656,88.7973700550378,88.9879417115039,87.0641156744185,88.2360507511404,87.2492479065112,88.5328193475559,87.9299366733527,89.0426144462007,88.6031088715462,89.2250586181972,88.7743886947796,89.0700423654943,88.7696644011674,88.9279100005816,88.7787508998082,88.8911738648417,88.7713071487786,88.7779198821177,88.8761553596055,88.9078423867141,88.8432793671109,89.8033488286141,87.8582980154949,90.2250574198843,87.0097813685919,89.9005273038825,87.9325486326655,89.2933398417303,87.4506722811749,86.6401199756187,88.9879419234645,88.8815142384768,86.9354467537131,88.1506047677281,87.1484386221897,88.3960754640669,88.0044965961365,88.8068437051163,88.4125849314925,88.8833023002631,88.5423911647869,88.847262664612,88.5845372880434,88.7230534720813,88.3832774536823,88.4735564055809,88.4066972292717,88.4467898608833,88.5570792624616,89.1088770013634,88.1480145282017,89.5420786177121,87.4325441700777,89.912363039414,87.5824889501198,89.3099804305702,87.1630650172568,88.1092001712597,88.524274995756,87.4927008057685,88.881513910458,88.8896414648761,87.2562986370357,88.4796734152998,87.6215221922007,88.6818435738749,88.0243943175534,88.8161706545889,88.3778173132781,88.971257404464,88.6440408697733,88.9487895649058,88.4641035260221,88.545619228107,88.2209385971484,88.1204718749604,88.1694069576802,88.5724537507679,88.1104993532074,89.0836263221575,87.8759659889468,89.6926317320066,87.9730366217401,89.8655560022103,87.8087089130109,89.2277833068586,88.2654962915521,87.9771003547432,88.1617716628092,87.4157521974144,88.8896415402831,89.0145035226487,87.6271298127815,88.7067406333324,87.6379244050012,88.5546418593525,87.9713250362404,88.7870256105639,88.4610474907763,88.978380776751,88.5411821070037,88.7675045123314,88.2971843105447,88.0782958448877,87.6929373583686,87.6767312137714,87.2341418647804,87.9719259875704,87.5102954702168,88.9969499071013,88.0722252028473,89.724352160275,87.9021411215568,89.4048659575702,87.9723418787846,88.6930977692088,88.2899235816093,88.1408255620718,88.5379996716477,87.8070540168533,89.0145036902337,89.0178862026393,87.7031442405101,88.6519614972262,87.7410453547552,88.6971875560619,88.2188061774733,88.9520965479645,88.501701371487,89.0110150515749,88.657766904346,88.776440779651,88.296224788212,87.9072329108146,86.8456783749118,86.6297802874866,86.093837894763,87.4282117186988,87.3086293965962,89.0781178500749,87.9959683142933,89.5524208787386,88.181268288456,89.3296336221623,88.4608785227887,88.7404605426487,88.4530955568067,88.1513254216285,88.7103487307143,87.8856521098581,89.0178859704035,88.9725377006909,87.7880652905307,88.7831047824875,88.0260820606019,88.8500310804341,88.2638748682436,88.9315872676648,88.6235945992931,89.135876921156,88.9735244274697,89.0828454814551,88.1874968487641,87.4647608126819,85.761875084837,85.6571205946447,84.8424284734562,86.5771289100244,86.9642310243943,88.9133064691132,88.2518049524053,89.6464900254741,88.6621212417262,89.2911808139216,88.5806071145653,88.7172278041149,88.7373122935218,88.2297929140499,88.6835136970554,87.9564230368481,88.972537769209,89.0631680859234,88.1007240576731,88.9634948168632,88.1260328538158,88.8429747185522,88.3964209270375,89.0836466150946,88.9588182357151,89.5516824205242,89.3196371617672,89.584735827982,88.4883290504933,87.6398211642537,85.1510468177448,84.305442467324,84.1017951521845,85.6588098696757,86.6749945446332,89.3833982710754,89.0125067690092,90.0573331656517,89.0328710169653,89.3748123580895,88.9087918539742,88.7098841030548,88.7660999099693,88.257223113421,88.7960251397858,88.1851026922994,89.0631681809691,89.0759933559583,88.1420609727935,88.883223218916,88.2242718253215,88.965731887169,88.6689313029783,89.344942880682,89.1832794043201,89.8996970343242,89.8529627649293,90.3162058630679,89.2878341025393,87.9307174577115,85.4401690127268,83.6529402042987,82.894841820072,86.1679236195447,87.2027387079015,90.0550494598486,89.82999110216,90.4340808614873,89.6142765162542,89.5382887881496,89.1651842524022,88.833817453751,88.95433531694,88.4955020446109,88.9738116742408,88.296707784126,89.0759932158806,89.0346190174636,88.2592280241711,88.9922936606946,88.4908608616968,89.1477017609265,88.8108046051866,89.4653491025162,89.4767147218995,90.3791172323134,90.6448756234251,91.2338246938975,90.2987060802521,88.6187338605846,85.322980068185,84.5992959139807,83.2765324147686,86.2494585198131,88.2492419918368,90.6009497006919,90.7334180163342,90.9481503933034,90.1088524809074,89.7787273362561,89.3770594830612,88.990842242294,89.1136649779823,88.5265213364095,88.9191719780539,88.3200071878666,89.0346190448637,89.1223329411566,88.4822315717365,89.1274043523488,88.5965256340209,89.1706643600393,88.9698896264428,89.691432729784,89.7890927971355,90.6983637258599,90.9816346819442,91.638631515304,90.7078880885149,89.6619478936119,86.1443183129526,84.8554123471669,84.2606153262039,86.7876698019395,88.852709968894,91.2954717268076,91.32398955493,91.4110798709539,90.5156005348033,90.0394357439012,89.7005888145353,89.1415639868624,89.225395948158,88.6559370877517,89.071126843891,88.5685838807064,89.1223329754245,89.1031161951789,88.5634742291553,89.0734844496867,88.70535659125,89.2937384303736,89.1688001530687,89.8969437534187,90.0635186149157,90.9020296142512,91.0652293727707,91.8478610544571,90.7168077747464,89.6669068048069,86.3845357005397,85.1539090853234,84.4052089233228,86.9674972162183,89.0110576993631,91.2785561481812,91.3668330361048,91.3433634029662,90.6930267364638,90.0892033039589,89.7614114084389,89.1742890768168,89.2991234496385,88.7950144143325,89.1265754420477,88.5970294739773,89.103116108204,89.1330056017457,88.6495881536988,89.1775659754782,88.8908304120408,89.4705009713976,89.319274156436,89.7749793231897,89.7934037882534,90.7851269655872,90.8552972385303,91.5127802885973,90.2113060832622,89.0620483610297,86.1839744037723,84.9463856732903,84.72099524573,86.8629840896086,88.4979341173182,90.6956311684322,91.101192772089,91.1901832582935,90.7158025233338,90.1575307551073,89.9737247142158,89.415119829477,89.5105759606121,88.9491833835112,89.2042965535736,88.7407522947289,89.1330056439534,89.120050965998,88.827938928632,89.2767734795512,88.9653966677872,89.3363821627056,89.3629714765217,90.2040537128917,90.1105978209995,90.7029652597476,90.4151730501567,90.6207823552981,89.2818807857727,88.1528008241308,85.8372703531455,84.9555718976696,84.1229776939287,86.3704588695251,87.8417090222102,89.6965310398243,90.3694107547009,90.5638956601572,90.4603704683546,89.9801883107121,89.9068179996792,89.3265155238259,89.4043882907792,88.9040515733494,89.1618722477831,88.7995162057811,89.120050968357,89.2274863775173,88.8599829452588,89.2099321508533,89.1106244980824,89.5429455213099,89.0830794198207,89.6282015990603,89.7582001528602,90.3655501858471,89.8872724515204,90.1890214637111,88.7998161028144,87.9650717717035,85.5604029359763,85.2752801591436,84.6732579903072,86.1075604793051,87.5783222636286,89.1094810019202,89.9304804929244,90.2541796292793,90.3637989052504,90.0124351481928,89.9879409186187,89.4736640514862,89.6205332376066,89.201266090936,89.350503845823,89.0183641053231,89.2274863639099,89.058664049539,89.0113454345496,89.2192490175921,88.9382182563102,89.7794247473929,90.0273489549673,90.0461364523072,89.4121817597002,90.0625862923839,89.3562551635264,89.4675767893635,88.0029750415941,87.4441453895638,85.6404605099654,85.2344572571149,85.0412357890216,86.0110145079421,87.101690206725,88.3134789792005,89.2494664488562,89.5105017173347,89.8329377716798,89.5339070331518,89.6935680173409,89.2926375882224,89.395987911099,89.0176161290388,89.1544274815623,88.850778670377,89.0586640243177,89.3146372761415,88.9545297783652,89.6538932979031,89.2315413921285,88.5475412922127,88.5078687670937,89.8905976160884,89.5660053361614,90.0054129103174,89.2948597285773,89.3944278565531,87.9536689497349,87.6822480265284,86.331276464878,86.0379689694012,85.8021932342201,86.5746957044055,87.4240640302912,88.3749262454552,89.1143648780971,89.5227175604428,89.8330941811961,89.8175589026834,89.8691085359218,89.5649316593879,89.7004728991958,89.290909365582,89.4879450747532,89.2942971227722,89.3146373250756,89.1531116070047,89.0336859078649,88.7494863222149,89.8438848479742,91.0996315642813,89.4325006371971,89.3577622939256,89.0181766308787,89.3724676996761,88.2755587552184,88.7921908845027,87.4570456093399,87.171789916491,86.2274504475282,85.9554915869892,85.9379681055771,86.2658543138299,87.0292677207433,87.6192166087854,88.4885471865198,88.6085630901394,89.3221556244061,88.9157780538106,89.4529350494519,88.9750648029628,89.1982542059724,89.0497039476241,88.956636294829,88.8899766825298,89.1531114901548,89.1442457387751,89.6658066737489,89.3703378904644,86.6664655525274,88.2933089596531,89.8284027196509,90.049325079161,88.8774839927166,90.2310938480849,88.7824260373393,88.9487788786581,88.1579040401643,87.6729606700838,87.193885527241,86.817339317362,86.9345912054531,87.0993361319566,87.762544421593,88.2653497600484,88.8676103714198,89.2648909885197,89.4191168191615,89.784109274071,89.4744666864909,89.9932123276518,89.561206595039,89.542929985961,89.8760810118433,89.1934973111744,89.1442459375463,89.0490552631909,88.2529626467496,91.8324166231479,92.8945746882183,89.0154012478166,87.3283998277314,89.9154353297983,87.6769788172118,88.6786533537198,88.0612926373593,87.6820804227639,87.4872984304926,86.737697284074,86.5002040582301,86.1394462854475,86.2286081878196,86.3282218308641,86.8965473730105,87.1473217984976,87.7933649499361,87.9419515863838,88.6588575276067,88.1448867181604,89.3313845495678,87.9896971624047,89.6157094449211,88.4204925316002,88.8443286238661,89.4648310049425,89.0490553252017,91.4822783444344,89.1128960288109,82.681204924,86.8479075410333,93.1726958425793,88.4220950236314,90.4326827086145,89.7366378026294,89.2574995548097,89.4836488744891,88.5900108970569,88.5955296998815,87.911177929922,87.8565320834093,87.6007374938522,87.6990107340721,87.7661065804444,88.2488995643157,88.4315319452556,88.9838509898534,89.2483942916563,89.4208336046917,89.9287000973239,89.1939174964544,90.789518599978,88.5073139130375,91.5441528834844,89.4040872390885,89.1874584966204,91.4822778664576,83.2803219819979,95.4411216876172,100.526914158382,82.4900525324763,88.9482630185679,87.8110567475999,87.1703312215878,88.5120128672377,87.1131740535593,87.6046580476803,86.8748367463701,86.7853444173889,86.2418186471818,86.1866374033269,85.764864326279,85.8906306054808,85.9562942498102,86.2638959585137,86.479179933605,87.0691432137437,87.150281174728,87.6708916311069,87.5736242599838,88.5755658380556,86.7767574514796,90.3990723671995,84.9561909607986,92.735744052181,87.4783907864128,83.2803221502105,108.123863048354,65.1310785237484,96.0089890848793,93.5448131276413,89.1941155680073,92.0418812306229,89.262908272563,90.5262111191787,89.265906181498,89.6946617504122,89.1165393037559,89.0221893681268,88.6067193849984,88.6761018138842,88.363094775676,88.5317856554952,88.6343818967634,88.862330632557,89.0046782414072,89.4405455821899,89.487527817903,89.8060448208776,89.9983002174444,89.7000556479261,90.9796153436248,88.3536188719057,94.2154890956745,85.9696435219797,103.130624936139,108.123861579619,210.583877687228,67.3962120577581,87.6036625881799,85.4591621391723,85.2045928796305,87.2383779581703,86.0448214803229,86.9714466902413,86.3017080760258,86.3603766334199,85.7488787562382,85.5915821746652,85.2415714983101,84.9107860788323,84.7815876418593,84.9218503560548,84.7516426422226,85.1839800946552,85.4627505653278,85.766244124952,86.0690433290264,86.502037225337,86.5846272694323,86.8581281741617,86.0877194780146,88.6711821287796,80.0584137075014,95.4116329803808,63.5202633887332,210.583917620599,93.1882029221379,119.357051030975,80.0007551027706,94.8518414919303,88.4664151870383,91.5814704316274,89.9898997037992,90.6905532000056,89.9754013561136,90.395635699697,89.7049559722085,89.8890602564835,89.532749904765,89.5878549698415,89.2809951419624,89.6228224977358,89.3817738900918,89.6749830295344,89.7686693562416,89.9822575943732,90.075814782108,90.3218243744037,90.3808971506161,90.4961460662107,90.1738569829792,91.177249921905,88.2943712524148,97.3912736384767,57.6125535934919,93.1881778188722,106.757431465568,128.142450607351,90.5685347565832,106.228625498479,99.3475407461657,102.749469601865,100.902464806487,101.744268753794,101.024459265826,101.302247258969,100.611213486458,100.990897605154,100.276389411275,100.47891436731,100.326607578181,100.325128488609,100.269087181581,100.734826970097,100.549550105065,100.953452136919,101.126754864827,101.230253410308,101.392260382429,101.600366218518,101.172805672213,102.259654664974,98.9621999442199,106.554556034444,70.1820805403158,106.757426714061,-19.5558700936892,106.471954575111,90.672201515093,104.366698102268,98.4652401084029,100.034382049137,99.5327513191736,99.2830652681733,99.4231834421577,99.3528147615581,99.2439355426847,99.2990021480532,99.2531030770951,99.1657524595266,99.2459623382798,99.2102759660758,99.1294344337572,99.233625666064,99.2241202282248,99.1295176517229,99.3846721267077,99.283287046038,99.1659564529702,100.047980770641,99.3292044415074,97.9783774213207,108.165750264664,82.2135620280967,128.411048356415,-19.5558626588675,77.8368247063364,86.8950049650033,99.7029841712407,97.8828140551342,101.68600101955,100.701450798111,101.430689651813,101.055786732497,101.100264240913,100.943412651119,100.887454886953,100.745123408302,100.774532973756,100.630002661642,100.675058704346,100.670717981513,100.695911868235,100.781000063943,100.903537088811,100.969831795003,100.894903519949,101.531348106823,100.282703584787,102.035906308429,100.007385531878,101.04846058691,101.076462532914,92.2914658552881,115.624542583904,77.83682503167,103.414060836481,93.7047180206577,94.8262118888276,98.964704721144,98.2996186907883,99.6404607742995,99.7265564417999,99.5511854961982,99.860095901724,99.6180816943173,99.7882942301351,99.5793598087768,99.7024743389831,99.4846918491756,99.5825379559812,99.5311928684509,99.5504009138816,99.5549911178437,99.603293944063,99.7351388429881,99.3604328022164,100.183769171915,99.2783746785671,99.7668946576562,101.225284859441,94.7979765393673,105.943367528818,86.4125899729888,93.3881482980922,103.414061065943,97.9504068514608,96.5007356419077,98.6137414504817,97.6603709918719,100.312361349509,99.3051692023257,100.680579858293,100.089769813853,100.666112730709,100.278531061148,100.495338610357,100.220623351636,100.360357068296,100.18695189013,100.317013014288,100.2222462032,100.307522338935,100.358509977839,100.246377686082,100.645442176131,100.158407229729,100.704078592379,100.832683566257,98.5859042387513,102.854292742925,95.6039454534342,103.035047898394,100.812729898749,96.511057324224,97.9504068101255,100.121113749329,96.4786767759953,98.2876300005631,97.7938726454143,98.9697439430814,99.1134380423646,99.8024329144434,99.5986646593424,100.053912930236,99.6842874798176,99.9828322915073,99.7262200230055,99.8960878501966,99.6554313632668,99.819920959646,99.6655411753866,99.6950281400603,99.8770595340785,99.6593773127574,100.004035802875,100.048683624968,99.1219194008769,101.163862579956,97.3575979384227,102.306074817725,96.9706188367611,98.2525371339497,96.8624564807809,98.9061603032743,100.121113624718,99.9855025585893,97.7036238322655,99.0277382387666,98.1652546507994,99.7245702316838,99.0541189434119,100.185801357084,99.6081275630284,100.274450485888,99.8879592056999,100.245456561048,99.8807964105329,100.110159211263,99.820654797868,99.9099884265202,99.922363732045,99.8861624810939,100.062268226472,100.129696193141,99.7671524210168,100.693929842095,98.8499784772307,101.813558074056,98.1652260944163,101.112515537716,98.7805169543534,100.406646600933,98.5229780090669,97.1558596023199,99.9855023559779,99.8979143730174,97.8229525560645,99.2758242274125,98.2107511594999,99.478824931957,98.8952396847592,99.7970567453724,99.4779615520904,100.04166202465,99.6528137885878,100.020516984056,99.5831853391007,99.7083302297113,99.5278777813472,99.5147553361026,99.4832633303101,99.6510976103528,99.4613666381928,100.005537287865,99.1998950611984,100.935589330252,98.6452979944154,101.151260895999,98.3141501966474,100.329750938826,98.1551860932448,99.0304364971564,99.4646645411936,98.485281175828,99.8979144641842,100.105296143576,98.4034928745264,99.5816039941681,98.4125580159058,99.6189157422463,99.0447721818231,99.9905308001515,99.4944922444417,100.143838929676,99.6481226901573,99.953494104282,99.6225809987587,99.6007930350696,99.2410101801147,99.3013052551647,99.0423915481042,99.4395587866609,99.2124998127871,100.323134813297,99.0784889760077,100.96603002474,98.7338737424031,100.890726543803,98.8523266088011,100.442743099678,99.2652416609365,99.0044546249662,99.2175744185873,98.5625868809741,100.105296032603,100.057171191868,98.3951428229723,99.6281346476632,98.6191643866409,99.6978835695857,99.069270053955,99.9267176222226,99.427935060133,99.9955786462466,99.6870792178992,99.8573567535427,99.3327619187672,99.2353875877476,98.5177731027461,98.5087601077878,98.1978435405063,99.0189696050201,98.6085021233636,100.238988949222,98.8326641855571,100.715299380743,98.971951258405,100.666153659575,99.029974311257,99.7881230262005,99.3131823499814,99.2438067955472,99.6488301481598,98.5792908173595,100.057171062155,100.08972821793,98.6701697647072,99.832915528774,98.8418855444997,99.8226864601589,99.1366877257314,99.9650282776092,99.6147650393584,100.152920651115,99.7603370304929,99.9968757185592,99.2110778208749,98.8270476702823,97.6487968684427,97.5246634630256,97.1249435733961,98.3015819265708,98.080364627558,99.9869226935335,99.0808896988538,100.834071153464,99.3133930095799,100.521109229089,99.4478540996836,99.8423721567847,99.5607125886106,99.0676052488481,99.6917255071147,98.9065720915527,100.089728275537,100.165761552362,98.9337575796562,99.9093289757445,98.9010051150724,99.8436888189969,99.3321940920014,100.079333452951,99.756259864677,100.361427679825,99.9858395225941,100.1211071434,99.2036164258609,98.4545958174104,96.9042695992809,95.8960667868782,95.5096602526059,97.4240739538251,97.6281991653102,100.264696953778,99.3712788966713,100.894103513833,99.619369501867,100.409165573733,99.7118121797094,99.7505851889716,99.7629612029369,99.2804046936407,99.8195078975753,99.1052523999335,100.165761474,100.142137515941,98.9799769006063,99.9582206021747,99.1692474238992,99.9979060531207,99.5254673915725,100.26961543217,99.9777684938775,100.657018694373,100.528866893456,100.828561517348,99.7475218887711,98.2077085246104,95.9018931431992,95.3615519034197,93.6824885322896,96.9408466102507,97.6803023306319,100.376951406616,100.171996017966,101.175875717386,100.22313465775,100.528740413128,100.004070158935,99.8223868644966,99.88085339907,99.3766342430272,99.9263852627187,99.0631278942473,100.142137419614,100.172601496684,99.170172575315,100.060552406574,99.3479552494048,100.120521045557,99.6551468217797,100.437909837438,100.363336650777,101.161443723268,101.153901146421,101.531345452611,100.545186196464,99.1458310016812,95.1939642733705,94.6173438424194,94.0048503574795,96.0881733340234,98.5569996041758,101.029258434362,101.005347503282,101.870844561468,100.807525407245,100.749480243395,100.294165483228,99.9923173226831,100.107397605673,99.4642824374225,100.010734368417,99.3601003390502,100.17260153512,100.20905101864,99.4034786865903,100.138292988828,99.455915460361,100.212106508098,99.934012664317,100.672146176756,100.74404672288,101.683796950739,101.973988939322,102.517356088447,101.266635499414,100.127759588897,96.5433367102725,94.2716179357528,93.9427661850394,97.105999760987,98.8936114209436,102.425519139811,101.919744776852,102.293627580112,101.394175419932,101.00856901572,100.578874319515,100.048610193268,100.187136532495,99.6121219286102,100.073240648231,99.4645430079892,100.209050959338,100.235058499831,99.4509599123785,100.185172561572,99.6887958046263,100.350676081804,100.17283338186,100.918134856916,100.949081399744,101.956229084072,102.271047098708,103.400416877998,102.009935900582,100.598866090917,96.9792065449,95.6794419567767,94.4865478095612,97.820104894209,99.876840574746,102.626087327414,102.945720176888,102.71642746209,101.825132307102,101.287082186122,100.872644207715,100.290759497625,100.407973948507,99.8106881781807,100.222846383861,99.5390435081893,100.235058473402,100.215377488542,99.6431733496403,100.250069362748,99.8707796455897,100.473176375265,100.240894175914,101.082857570016,101.281636500634,102.380513618615,102.47740058353,103.259756323346,102.270556108179,100.532393205263,97.3294265681688,95.5116729797276,95.1751460002871,98.0427850263791,100.069101505536,102.467517713771,102.771479872671,102.895834633091,101.973510598524,101.324521562826,101.022375707106,100.375574251568,100.475837907033,99.8293722026268,100.208797639152,99.6956865970659,100.2153774848,100.295803592959,99.8082961082568,100.33788809244,99.9301180486621,100.59862033753,100.466637918468,101.060937885653,101.110340950545,102.090954172915,102.275250985149,102.684637794433,101.549912653313,100.306680154883,96.8683020748759,96.1362519509267,94.5891716670187,97.7182320053772,99.7976335868821,102.07845477477,102.407211037697,102.521073644857,102.147439718987,101.460873255569,101.207637992125,100.550797930163,100.65010592201,100.075265281415,100.379878833501,99.8958248960395,100.295803570786,100.245708229144,99.8702988120555,100.378898025022,100.081995056612,100.545572655015,100.636870657491,101.452805225539,101.341821991066,101.941255927378,101.648842848775,102.175530587275,100.321253183069,99.4586642188568,96.1845208413081,95.4876908289429,95.2203872634032,96.7236661135226,98.8594945665069,100.948671381536,101.751887325819,101.873294870542,101.719988326432,101.249195433159,101.092516225428,100.482647402396,100.622431278641,100.058632184129,100.3127598992,99.8506413531018,100.245708168211,100.375761173932,99.9649861762589,100.398371143363,100.338557012572,100.730418867561,100.179401063898,100.750845993686,100.91766768242,101.798078431558,101.185883112757,101.449573231522,99.8862131001952,98.7599501440402,96.6115731725353,95.551058010319,95.3609877598434,97.1454187562132,98.3429389974485,100.274848396309,101.130242458588,101.589866178952,101.615890662881,101.214603548686,101.299266446568,100.704828761398,100.811008591723,100.315800764282,100.497799786294,100.145242691302,100.375761194455,100.208702965121,100.200202594719,100.384027358492,99.9859690396591,100.963694993455,101.203247316811,101.404282497893,100.700392113197,101.274461878529,100.533358193163,100.514232558126,99.048012181456,98.3810054815221,96.3454538268303,96.1362333473558,95.3797354403726,96.8163332141112,98.0753857619118,99.3406269278558,100.371091364593,100.644036131053,101.153430860355,100.745200770475,100.882081374547,100.454753913298,100.529468732711,100.146108765649,100.324001079713,99.9780854943,100.208702903413,100.468535830917,100.013474109578,100.81788524366,100.336066001197,99.7305357009145,99.6886295895725,101.097469640479,100.720219862329,101.173207153753,100.403833748442,100.67482123334,98.9734634135126,98.6766214176892,96.9951138557299,96.82697805435,96.665986460571,97.2533924007749,98.3707181405875,99.3956943661625,100.306084882184,100.759187176207,101.014446358585,101.041328326281,101.070903805105,100.736549658005,100.949437712815,100.480891582947,100.656452302004,100.428610554648,100.4685358339,100.294983394559,100.134038925658,99.8612504273631,101.293683247061,102.394118666621,100.570378173201,100.43514642866,100.094169933428,100.678623866564,99.3476774769652,99.8461055627936,98.3974538930863,98.0537198877174,97.0977987667964,96.6073123100909,96.6663607328734,97.1087675458746,97.8992144262165,98.5929923904574,99.5293964654673,99.7180170285158,100.446227021902,100.018116815245,100.678980273332,100.084942909302,100.343267298068,100.208410842024,100.048810642877,100.018351335687,100.294983278448,100.282759363915,101.092415489369,100.542980780001,97.4977151816808,99.2473807098089,100.944804256913,101.421800594178,100.112975248178,101.406311665291,99.8758783883455,100.110758447104,99.1940367260939,98.5749873810711,98.0831252082365,97.709223129808,97.7308807058584,98.0508213552524,98.7388564411599,99.2518742611548,99.975231958781,100.371322980311,100.639826707869,101.065860314895,100.638879372339,101.189225582561,100.730862307203,100.72306690932,101.140283754397,100.347697345493,100.282759444729,100.056191091475,99.0285996572625,103.400287571913,104.166435777685,100.367784575703,98.4542532790488,101.053040565836,98.6597413887507,99.8027825431219,99.119913506924,98.6399737670684,98.3315862238527,97.6303442239042,97.3263506906217,96.9037708257131,97.082616396248,97.0854383142172,97.7132732957796,98.0752525267934,98.8224515578636,98.9240155858555,99.7288772573278,99.2135952319723,100.485431260613,99.0456836304394,100.777929235627,99.3745351993649,99.9530962482264,100.764869611095,100.056190937723,103.088326029945,100.27398609203,93.4048930744584,98.1795451391986,104.473341511989,99.3725297031528,101.908319934947,100.976659621252,100.298443147799,100.588808640396,99.6439437634461,99.6516609392455,98.9432117236215,98.8498533021473,98.4363268288106,98.6720695419836,98.7423708111885,99.21240271827,99.5384157370485,100.074096489523,100.347331296222,100.607311284733,101.096187958209,100.346136566498,102.222112802224,99.6106447622701,102.788072253333,100.516504398258,100.259097455833,103.088325831181,94.011882666981,107.947792976062,111.983716720049,93.1073984659114,100.346565250179,99.0176875525562,97.9892261663918,99.3464898884477,98.1030309493264,98.7021654445142,97.7232167417807,97.7426161451311,97.0589483125956,96.8950567034486,96.6371024081637,96.6810492195569,96.6788215300986,97.1813438862974,97.337027743464,97.9044610569163,98.144648061346,98.724074714526,98.487428512024,99.6596776479093,97.7537248218529,101.800743477393,95.905108400727,103.960197454861,98.4412507698251,94.0118840827378,123.425544526054,77.6800612560782,107.123510413349,104.930367550705,99.8209172063788,103.116023859532,100.361838313813,101.788056932385,100.405383960407,100.800839195291,100.055548131044,100.073976869059,99.6329872558926,99.5373207041436,99.3599614663246,99.5444325866938,99.4569663809087,99.908739283234,100.055645117601,100.423628788486,100.633624242242,100.922977498869,101.089878343305,100.874148280478,102.176220990323,99.2616347404344,105.941927137123,96.8441578565957,114.008776122306,123.425542189678,213.818505988812,79.4085184308827,100.052246783567,95.3712797311691,96.35409824602,98.6439671789404,96.9551265458843,98.0618510096773,97.3608160651033,97.277972241755,96.7863685034867,96.5703955572072,96.0099483306863,95.9087338466436,95.6284048047244,95.6525203299839,95.7464565489159,96.0923540293548,96.2824786695131,96.8112480885605,97.0915753589398,97.4725434999632,97.6582255657419,98.0003564214488,96.8999495307672,99.8803186539628,90.6691637112027,108.130117428436,75.8845267458927,213.818515834078,106.757436217075,128.142471238887,90.5685578365468,106.228650257422,99.3475636859547,102.749493353583,100.902488387119,101.744292408901,101.0244829879,101.302270807973,100.611225249869,100.990921197044,100.276412739308,100.478937774605,100.326631075821,100.325151771615,100.269110582295,100.734850524775,100.549573502591,100.953475686651,101.126766724867,101.230276970627,101.392284023934,101.600389955712,101.172829452281,102.259677010674,98.9622262947415,106.554576638725,70.1821051666655,106.757431465568],"Archive1110_field10":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.448752547148723,-103.480197347039,-7.79700362317249,4.12748627970895,-2.07590680640747,0.326091067695732,-0.0600212703083105,0.113937216773562,-0.104154622013247,0.0952111297450237,0.0054171114038658,0.0864410522070289,-0.100866932924271,0.179363212484641,-0.0579765205435805,-0.0410210105209772,0.0211854752208217,-0.00713569086293439,-0.120508366080019,0.0631211113400276,-0.0893259516019965,-0.0525049984427638,0.140095889307028,-0.17981070713276,-0.139240662639891,2.1100705727525,-4.86421631328245,8.72789925903044,103.348348967973,-0.448706025468115,23.0921013589733,14.6752667361361,-10.9595404253017,0.840056245745629,-0.721001831229306,-0.494056084779921,-0.0919014936004355,0.0747243873707278,-0.183722257427388,0.270496573997553,-0.077656801466674,0.184685809620807,-0.00624144514389923,0.0543492492448288,-0.0382101008236914,0.0503705864642969,-0.121483114437384,-0.0308328626828383,-0.0826048089042279,-0.0679013361100396,-0.0700198360148205,0.0908033785202655,-0.147215006844849,0.711446263240183,-0.457654759931061,0.177153866099152,6.86239991935601,-13.3734407363293,-21.4643905332419,23.092377709298,-3.24677564992027,-4.04742267473404,-0.822163959399025,-2.30657978222452,-0.944735879512098,-0.0709586545412659,-0.622623845069768,0.166758925666576,-0.267464245462364,0.205473075233855,-0.218920406868878,0.139007300021704,-0.0240460729913384,0.0628934597901242,-0.0612837209126907,0.124655763182027,-0.143152076546074,0.0333758843788543,0.0160712105098723,-0.0525764269144679,-0.0724362068515472,0.324103329969334,-0.28532668050184,-0.0810926356605383,2.57678634132831,-4.07040206043346,7.51795559607028,4.38528249752618,3.53125012768483,-3.24649702826356,1.07591706324709,4.25457138303033,-3.62054057491846,0.676617026166457,-1.69420945230045,0.0470203430839382,-0.494449912786134,-0.0610720980647702,-0.223208060771692,0.0895870108019195,-0.135888638273744,0.14991679779536,-0.0777836850568979,0.054711226817495,-0.0512823004713834,0.0296935536180277,-0.072742283215622,0.0445843061369185,-0.0711017115043193,0.0902967688190063,-0.088488848403985,-7.13812659572467e-05,0.919781135381025,-1.22001549602522,2.71545116956181,-1.21597344349923,-2.17002440493964,3.52774432262052,-4.50691229990019,1.07620012997271,0.319863070263257,0.0613624042178193,-0.093910284841986,-1.05560250099628,-0.429386061779492,-0.462888515923223,-0.551240306159135,-0.00628552970704398,-0.300123025210091,0.0592401380298211,-0.147317468711508,0.0748591062000066,-0.135915731475527,0.0709238576227476,-0.0372330844812872,0.0363406915551412,-0.0307270969703585,0.0892108223095213,-0.0884713258239055,0.0190874859218711,0.400988354887597,-0.539710926398723,1.35052939154499,-1.25782502948274,1.03805174735461,1.22291246138011,0.437834267842056,0.7151257820065,-0.572574408038031,0.320144400065932,0.398922651527391,1.44213506145951,-0.8788638501343,0.2085524266285,-1.11806504776937,0.000100824648567029,-0.602725743759299,-0.0134206851922526,-0.282194867115886,-0.0393003291322245,-0.197320379084047,0.0188909745244369,-0.113444344680694,0.045185203200061,-0.063053071295639,0.0474335000635461,-0.0367091100846284,0.0304244285879185,0.190140807081513,-0.164424911611028,0.664491703759288,-0.782498049922839,0.925008843653613,-0.124186111986309,0.203550558132291,0.688803507910613,-0.283683334114541,1.53413930431776,-1.07927244010831,0.39920525927875,-0.0963105118037884,0.499157694399031,-0.290142422049288,-0.132528998346427,-0.414149083520424,-0.284879696955506,-0.365744878179052,-0.188714977011411,-0.3678505919421,-0.0518733559404192,-0.225752419314334,-0.0475219157863396,-0.138444519194114,-0.0056112507375567,-0.107230949933507,0.0413268395881184,0.133166587705452,-0.0321389558796153,0.380985808295376,-0.375996125879083,0.648002732513317,-0.335896856474916,0.679395370590229,0.294692848298305,0.254205566556624,0.810301605119229,-0.591900165005389,0.645364572406442,-0.846102104357465,-0.0960274953005523,-0.00218405233572922,0.463626147833849,-0.273892935781099,0.140359904935072,-0.484076943323899,-0.149024209766934,-0.545486227919606,-0.111090796005825,-0.381413736930766,-0.139253932347499,-0.272277566516056,-0.178927923145399,-0.264084837444681,-0.0848328295718319,-0.0255753795470296,-0.0021598215900905,0.24238180382951,-0.0879983191444393,0.495329158319638,-0.208066653184425,0.728770997404802,0.0250982549547524,0.329535285092763,0.260613793420492,-0.115679268065227,0.767623425884099,-0.268160690842392,0.647067693855175,-0.48310512791695,-0.00190104215124135,0.326716073081571,0.481481275381229,-0.163998825715708,-0.0412462799886868,-0.423390049808063,-0.153461588152643,-0.40547968423075,-0.236505263596279,-0.359966347393738,-0.327660480710515,-0.467970897571033,-0.296550715797576,-0.36770783912633,-0.252339743514572,-0.0309146265916939,-0.0534732988312603,0.390070870218729,0.045593044986062,0.796037917355144,0.0938598880902972,0.533813648254663,0.14884457982969,0.23206884408545,0.493748818548377,-0.042488244041212,0.598403674179833,-0.299350978141229,0.476961801012162,-0.328167865419764,0.326999409345658,-0.18838816021166,0.244831172384253,-0.213017055321222,0.0333468372511912,-0.340999433165802,-0.142946288650403,-0.393069632471507,-0.349070202533668,-0.557284740296796,-0.399896543834249,-0.667736987081015,-0.628571536009289,-0.585165398641125,-0.583839659931348,-0.0690190754402207,-0.0153147671593602,0.714310094198553,0.439140620410617,0.848831643082119,0.346186832247382,0.578586199124734,0.377119124693095,0.268541125600765,0.603833970482471,-0.0514437885671763,0.641464961711972,-0.167999677640928,0.326827792655395,-0.410983595546789,-0.188104555949355,0.038789511988294,0.183797649353617,-0.102250305649593,0.0236609953031533,-0.278242447177128,-0.271964002629946,-0.493945677303949,-0.356186323919152,-0.670797861202159,-0.712771732702338,-0.871510230806752,-1.16042216099424,-1.04339316775467,-0.962056538755015,-0.224981958366337,0.306821570629318,1.01339089991717,0.737897720608329,1.26254514539592,0.766841371315697,0.828070250517563,0.724006417134817,0.235046867583588,0.634278739911004,0.00072243156315548,0.45429117045639,-0.140061113757148,0.275361273942655,-0.176004087791322,0.0390731433870967,0.183722686277277,0.240646705044521,-0.120543853774312,-0.0889039758065186,-0.345471899706799,-0.219917223481932,-0.518437320073968,-0.51659681002176,-0.715783015681745,-1.08959262252877,-1.37567343111418,-1.66533278488836,-1.55491772348933,-1.29899338845041,-0.456779074777696,0.0445280204655257,1.66820773195043,1.58943765087978,1.64278262440831,1.41682727821974,0.887729957433384,0.887892893008898,0.387926681187392,0.590998701852766,0.109116521998071,0.473866825178393,-0.074383149085951,0.293601869919897,-0.133479617549937,0.184006561384853,-0.12752857236698,0.0522179539585513,-0.157770073862002,-0.0679846837653048,-0.305462238228074,-0.292280772597115,-0.470129827285863,-0.72578605683823,-0.980920406433612,-1.22995283259247,-1.64364585983816,-2.19920288342055,-2.34722487048873,-1.80746249169211,-0.332729299406624,0.571985199556459,1.51255167007521,2.32751155617857,2.25022006695038,1.64614141213773,1.20562707283849,0.967582954821086,0.524958992591772,0.703539985568522,0.113382333408056,0.492386632384009,0.0250891571608507,0.20341742064156,-0.154043125108087,-0.127244507316612,0.0236962619207587,0.047806364335267,-0.107897191037026,-0.0885486686283523,-0.270338736703064,-0.415650492191103,-0.590317627522285,-0.653031557164412,-1.02684774311357,-1.45084258994953,-1.89206887008428,-2.12284598720462,-2.35247066234894,-2.45762139781186,-0.495210792236142,0.810779328977008,2.36255799629654,1.94006026315432,2.19367474311184,2.00857220145189,1.28192299576843,1.19084938260245,0.493365847842126,0.749841136183888,0.252678141526008,0.383956317791686,0.038129841965697,0.191462972407904,-0.0345955370237163,0.0239803916069395,0.103561383625841,0.0622344571446176,-0.108558553807247,-0.195020207720519,-0.329460982311831,-0.335554377475235,-0.57638736719494,-0.746688902818694,-0.902026325510804,-1.29391437685094,-1.67222094803602,-2.40916379626199,-1.23521800242366,-1.53072520025069,-0.765627605159686,0.358835987684014,1.29161435726443,2.64337083944418,1.63715589184973,1.60771644021097,1.18495655730571,1.11629765567886,0.609923671082417,0.613971435462577,0.27283902100719,0.40958037579309,0.0730258361749024,0.225309538007343,0.0137361729986962,0.103845700335477,-0.0733054800403103,-0.0571946601311683,-0.142669367472136,-0.149467781354281,-0.29696643008809,-0.373914466606765,-0.436573233576889,-0.703072229946855,-0.828642241720532,-1.03983328140923,-0.698356869348763,-1.12201419339519,-1.63751252012469,-0.183749613700307,-0.231665481990409,0.538151078763915,0.375926712252271,0.537982161560394,1.55978585263816,1.01466985617299,0.757250147431136,0.876483416275285,0.530632332104632,0.649247465747545,0.239151791976718,0.412556691502169,0.158379119705793,0.152893628063197,-0.00242143562509496,-0.0731632397819104,-5.09008883468636e-06,-0.0454181450117229,-0.106590023697147,-0.163687835536473,-0.225210057167423,-0.415832390493932,-0.482142077046448,-0.50315605830619,-0.451841435886156,-0.507251380458808,-0.496707063074269,0.347743902569577,0.424899355150002,-0.390537794177912,0.347158129236605,-0.305568620678712,0.369994460098347,-0.454841522588281,-0.459050472219922,0.668531141708783,0.343331770462692,0.622467272044255,0.368793883257614,0.558107752489192,0.311316644966247,0.300932723424527,0.142148533650728,0.148207672027785,0.063403905562525,0.000279441631550117,0.0698928473920809,-0.0274764633022615,-0.0903646310778993,-0.223555866176125,-0.251477646199595,-0.255277331135385,-0.277307555791765,-0.376995897052445,-0.253636871148854,-0.0255925718003645,0.378693774275054,0.307655924230906,1.47188122563128,1.34337446702843,0.180584951578089,-0.614533723407936,-1.37020950638648,-0.44359472483161,-0.990826831594306,-0.450684577014762,0.0617334744674227,0.322030486565047,0.293790903418026,0.365768562350689,0.236520175049877,0.29763963391217,0.132187043738748,0.155698689433711,0.0958272433808705,0.0701775237642311,-0.0785924697960236,-0.111877765545222,-0.104144386294819,-0.142584925384861,-0.201744389526474,-0.289085100601219,-0.21494108308038,-0.187472806782192,0.0109743856577001,0.191434670605152,0.904719346594506,1.40670891664052,1.01570976869082,1.29940008635157,0.714431987658761,-0.335913759865913,-1.52900578646906,-1.67674263944257,-0.904723795362463,-0.712143859082881,-0.405750656817787,0.104708834028986,0.103203949606773,0.285918179685658,0.165389892929563,0.260435742728577,0.164000659014991,0.101281987194351,0.0711584183739816,-0.0783077188567761,0.0440859665308127,-0.0677646510868329,-0.0861274734108743,-0.109014359300155,-0.0642193513487411,-0.112233067191258,-0.198392492913842,-0.117175100448054,0.146399806215264,0.505327397023799,0.655055397876992,1.34295554775982,1.65891854500537,0.916120698366578,0.341331432488457,-0.367007346945599,-0.958630526107968,-1.5698546734464,-1.41309258622963,-0.670314614351162,-0.531172008003294,-0.142139247413784,0.00794487263819549,0.166204390528492,0.172138820058321,0.153648435345494,0.125501156192752,0.0965282857514934,0.100258786105242,0.0443707647820543,-0.0202607729147097,-0.0204072731047198,-0.0496032258524588,-0.203088177316027,-0.247512117469973,-0.123161011589132,0.064428739565167,0.244606994672113,0.205632946430993,0.61020781312497,0.869390680554172,0.932208246861261,1.27447292313529,1.1416744999968,0.308011248879916,-0.503527600643951,-1.00133442850269,-1.00021838402175,-1.22709161967938,-0.894858126535728,-0.499254655192722,-0.192765809071841,-0.140449995618759,0.085808901372132,0.0620426645070497,0.112267972752233,0.0976595722504702,0.0801697072470911,0.0745687442654441,-0.019975933245309,0.034413646759204,-0.125412617513206,0.00730751011663719,0.0909519692948975,0.110459877039325,-0.0911654456238491,-0.235997115168165,0.102252433336064,0.269384543345868,0.466251693609047,0.820891409700853,1.05844227660788,0.826956902826266,0.667808669463479,0.420092955593807,-0.271438213320138,-0.821105620463984,-1.01700424640003,-0.829645435775379,-0.816886538226364,-0.562960636636904,-0.287005515034705,-0.139145726096669,-0.0692000814937686,0.0734758655640269,0.036998822329857,0.120738407935381,0.0406980864568523,0.0517981204732512,0.034556109897795,-0.0526793881272043,-0.0530784752654798,-0.262527333864249,-0.161446552662784,-0.161472583535132,0.401483196517962,0.206354404405417,0.233178638430754,0.348105994669337,0.597858996305658,0.59001163746183,0.75219844472835,0.913397357379933,0.385449091405357,0.27076319573186,-0.247627462933863,-0.466955145416132,-0.776642393824056,-0.872636682635881,-0.550119638354618,-0.600999117311239,-0.327406499549378,-0.264272099892551,0.0647658513236909,-0.151217728855199,0.111580850343471,0.0106300158213222,0.0214687103732933,0.0896783971300247,-0.0523946351874079,0.131576392104626,0.347522216692403,0.228094583758765,0.409812012095271,-0.583104812535051,-0.343878894369457,-0.127052508395204,0.47242968363251,0.213713299497229,0.390466077627887,0.862472907245874,0.363514849795205,0.75480709842435,0.396893728480091,0.159632952574188,-0.213039302058297,-0.42903734695928,-0.506756556916799,-0.747376561528245,-0.594439846536969,-0.417285018197397,-0.425258549160469,-0.109626884288229,-0.258486668340987,0.195561734128384,-0.229042126153097,0.219714776357699,-0.141234729057175,0.0338299834376887,0.131861354250655,-0.311890118640017,-0.320197354202329,-0.589566783744193,0.228443483004291,0.668674712344919,0.81111254357249,-0.246245252705694,0.209904090611715,0.637046655708978,-0.00440743483975749,0.875049112943344,0.338802056451031,0.494089425632361,0.369995746088417,0.121296148955236,-0.0834321953503944,-0.346172221930625,-0.539476638909742,-0.473554287925412,-0.494699993978939,-0.518111551353228,-0.246430035683256,-0.339401449778958,0.00440272441973306,-0.367743440106539,0.543577093736562,-0.506326520216343,0.378127992277125,-0.434675679583081,-0.311605446154384,0.817473595717578,0.242966669122476,0.280960526023193,-0.778882881046777,-1.84962007193911,0.278856027354848,0.712449609274999,-0.543404065785871,0.916847004864014,0.0972477928853998,0.492682465177162,0.413481277761552,0.464470357281854,0.217517326203962,0.0233941831708315,-0.0428831441598036,-0.263480571434932,-0.433816627537983,-0.4438558203458,-0.35414969964916,-0.480360524595143,-0.230507876714194,-0.141219022324579,-0.347695279758496,0.389790639482267,-0.644311694648323,1.15008935685335,-0.76134774436159,0.910147001103085,0.817757396252785,-2.64415089462945,3.53794795406626,-1.24695440425734,3.9191860441892,0.372143331830076,-1.67749300963815,1.47606665854733,-0.699571079618988,0.409158456822635,0.41000957455082,0.321501271071965,0.339939069559819,0.407450869672823,0.16784054255097,0.0778308456571769,0.0240990347711297,-0.323106448691505,-0.23800384239859,-0.348598810703446,-0.49050226018212,-0.274226920877984,-0.272299017388267,-0.200105852280419,-0.0406075217037348,-0.230107077469675,0.718822611886643,-1.16214269429851,2.26279973862356,-3.55371402289315,-2.64386460436758,6.52733609756796,-4.79199817377599,-6.59438425741019,-5.4156771959933,3.34867524655301,-1.54333904616609,0.285038941400608,0.335527167252354,0.197468284921716,0.266423492790802,0.194520478404231,0.384928778059094,0.138426794641599,0.128431074465606,0.100085511416987,-0.0406080933302475,-0.28288166041183,-0.139411439273952,-0.267235229198774,-0.334020737383754,-0.198171923042627,-0.123817681759074,-0.29757260774912,0.25774998884838,0.134067741430109,-0.309985548218659,2.11025405332258,-1.01604944547014,5.45458494005547,6.52761719468047,-19.8728101031179,19.5172828325301,14.1266272618442,-6.48248261773363,-0.231023069497491,0.389602730943018,-0.539737017945384,0.101476111714652,0.23878331510254,0.0936248494749587,0.245218838029977,0.343072358763776,0.0826608318144586,0.164491256860064,0.144392271180873,-0.162792730419782,-0.0730349779791725,-0.0927725116209412,-0.384202537016923,-0.174682496680241,-0.158666871811345,-0.292746001556414,0.0447042286097464,-0.30906059028184,0.859111291503615,-0.200304156424188,0.614905686511503,7.91151793291995,-13.6376271518834,-19.8725362526829,-0.448799068829331,-103.480112548557,-7.79700376595102,4.12748822029485,-2.07590677271134,0.32609103541242,-0.0600212350454791,0.113937236616108,-0.104154583111936,0.0952110041942956,0.00541721750954857,0.0864409780203238,-0.10086704323516,0.179363390979507,-0.0579765468165002,-0.0410211846932595,0.0211856828805661,-0.00713572225401109,-0.120508486615989,0.0631211897517057,-0.0893259252824953,-0.0525051317441772,0.140096067018855,-0.17981083100492,-0.139240375569907,2.11006954521356,-4.86421321022771,8.7278991858224,103.348437402198,-0.448752547148723,0.621750774509776,-122.59165809251,-20.2045967382067,6.18954174128458,-2.87772004255006,0.437701013585281,-0.0555810289680743,0.0509792610769456,-0.117310614041834,0.262418527470393,-0.131330138774616,0.179219448653089,0.00939623774212521,0.0605499472630978,-0.0659740899240204,0.117780215251826,-0.149189188513066,-0.0012590460777717,-0.0593270730319279,-0.0523913013211406,-0.108507130999268,0.0116339842536568,0.0851851847809898,-0.239865823195208,-0.0833244812485665,2.85604881162573,-7.07169303244123,21.7691094875278,122.455138339226,0.621776182391372,33.6116429550076,17.8012419227312,-15.5895995366044,0.357811578342363,-1.17313569754008,-0.595038079490225,-0.240278246502676,0.163619938489172,-0.196020210457936,0.284101739559715,-0.0824266825888308,0.289707182648145,-0.0440351574860273,0.153045725855793,-0.0537308555788017,0.0106177460555093,-0.162672134175458,-0.0146022147161151,-0.199715656834043,-0.0733933634218236,-0.0565788130254777,0.0276833874290408,-0.187999026362381,1.1214117279119,-0.560514984084591,1.48850267816887,5.10280471691565,-16.4957174139331,-27.4224119926412,33.6117790380707,-5.40096900802731,-6.5452978059519,-1.93245376028496,-3.7746788660033,-1.39810026002301,-0.201437316567243,-1.04775018670655,0.316722356164058,-0.48083946839113,0.223664289745975,-0.155754333128323,0.221048346873868,-0.165414460615282,0.19564214944905,-0.113298567989757,0.0807225375485016,-0.0644544907440774,0.0378350721340278,-0.11383386766106,0.0666973092830036,-0.134410652706384,0.318355088829736,-0.169919432115067,0.14146608262674,2.9177140980011,-5.77198093595804,12.7936025301147,3.24637025898979,6.97166946212877,-5.40083794185686,1.52571904554506,7.07992654230228,-5.14059812688389,0.909637933218068,-2.61221208010497,-0.191000873487284,-0.864157928388511,0.0534694189390505,-0.36685143840405,0.152244152218904,-0.165552517118462,0.118491579046716,-0.11550767024153,0.157446591690124,-0.126961999264212,0.0622405827054385,-0.0617439339869478,-0.023466277700748,-0.109134015169707,0.195123009836864,-0.134305544798128,0.146058566095077,1.13707276463602,-2.22917114109329,4.36835179080931,-1.84038066788894,-2.43463815322903,6.17752436734822,-5.5657968586867,1.52585788539542,0.587993080237285,0.264575317881203,-0.38020351064575,-1.50679454295767,-0.879526054904606,-0.689053208416132,-0.711005513512985,-0.0635951480835616,-0.525313854613932,0.0933895874557349,-0.267789096592229,0.0968474604502162,-0.11457318130376,0.107076247636206,-0.125244694258711,0.0980253982938327,-0.0647604477085697,0.0831194307647168,-0.0110440236437098,0.0812113812789085,0.408011790072666,-0.962177775237709,2.13308285883698,-1.68146215916332,1.97375993389376,2.03687571538676,0.0261158190104086,1.23711260243397,-1.28456799719115,0.588132294153722,-0.07562887455616,1.84748685205148,-1.44720825993025,0.439238094618126,-1.51479379318693,-0.0924428155769628,-0.946531674079648,-0.129576980158904,-0.50513078859978,0.0130718819624716,-0.275436147702701,0.0204510600612613,-0.176279961906989,0.0239170544061972,-0.111871824946542,0.0969576230309441,-0.0252780086031033,0.087834585149523,0.220989500717368,-0.40090038996848,1.0343201918656,-0.950081439339537,1.62946756107389,-0.107108859769,0.0462134814761832,0.777956262731706,-0.252996367448023,2.43929354561047,-1.69669631218778,-0.0754890127136598,0.409474534160975,0.872959940185051,-0.287537673960905,-0.26373772510486,-0.731169599829776,-0.468786713068034,-0.689572473868518,-0.236843559341723,-0.471787405114772,-0.126500660063987,-0.383340636459286,-0.0813574173673181,-0.262511238276534,-0.0129392491384083,-0.0749369446578798,0.0776339086516106,0.106014493817254,-0.0848878069065683,0.586487318756665,-0.463864805996499,1.21258685055903,-0.455722391819797,0.758247912753293,0.252761864395253,0.533625933040523,1.17371540015364,-0.807948855532407,0.973074565701096,-0.990945551104677,0.409614632270339,0.0119506693615291,0.880795982451722,-0.520743382923951,0.0587125561678693,-0.863959630824263,-0.129297402777593,-0.731675187136176,-0.244923511927536,-0.600248634532215,-0.268685399811726,-0.506605616723682,-0.224013195048914,-0.346344384228581,-0.15979058091866,-0.0927328123709269,-0.0405049674997466,0.377462263155064,-0.0651160045374575,0.918024847777596,-0.242327669614286,0.885664150082232,-0.157022284478965,0.600811131858204,0.512402333582715,-0.115555358171891,1.30750397947014,-0.375346807143514,1.04896639733694,-0.921000418352399,0.0120912495101533,0.0488896771939333,0.528439837039236,-0.26211710876961,0.0444523327524184,-0.527041877253791,-0.312824833198269,-0.662442875994106,-0.408955015722764,-0.677090087932722,-0.434743570930277,-0.649047498971845,-0.557094778650855,-0.594561163687905,-0.413871108932108,-0.0859277272627165,-0.0338296690910128,0.724342559416029,0.159442491699105,1.01432931606606,0.0225003785043593,0.921397329698623,0.323076220672569,0.500675409809696,0.869082686567172,-0.169604188154536,0.917590537802881,-0.42642766767163,0.670358313861125,-0.557488437736211,0.0490303969643277,0.0933296578127621,0.4643880417473,-0.211179572174094,0.0379922020950431,-0.574507206899822,-0.304512548130403,-0.729875390628404,-0.44134698217952,-0.791658265652904,-0.758037006329778,-1.01171478114695,-1.01526440226869,-1.03757733048146,-0.82180849095164,-0.101963642969305,0.0487948708444681,1.04833749953213,0.516526652385161,1.42402127878666,0.637580182533678,1.03500454883194,0.716203206307607,0.279736082381474,0.842538566070168,0.0193670345979361,0.928795664606796,-0.303525038726474,0.502872994917907,-0.453066860562977,0.0934705450002458,0.0699388028903447,0.378426144804157,-0.251468341034867,-0.0713505742596164,-0.514865064963805,-0.320933974351766,-0.681572969129684,-0.684858895126297,-1.00898451735756,-1.14746566571191,-1.56583575507817,-1.72088452926105,-1.61519968222653,-1.47649885342848,-0.319734352165378,0.10945215027136,1.64803238324197,1.4670360793033,2.0234007237838,1.34843216725961,1.11497822474974,1.02384125093176,0.51056153631205,0.934022548518269,0.000553560033951646,0.77836007772824,-0.154723905502963,0.487303700397243,-0.364653083518114,0.0700799647967617,-0.023661243736853,0.219024634460059,-0.20094886900736,-0.0364694454221863,-0.449016912308994,-0.430365221198904,-0.790024952741156,-0.85689736235709,-1.32722156337594,-1.5665018162923,-2.08248824552478,-2.68398956961026,-2.60801382798569,-2.37611801357841,-0.531643175146328,0.597479077539636,2.31956760003425,2.4496509765742,2.71498662928444,2.06450263109717,1.5644720646252,1.36540091899397,0.613124164359397,1.0617899652592,0.156543163061172,0.749542947193268,-0.0653452152952732,0.375952252250783,-0.248591599035883,-0.0235199584881922,0.0701810534654752,0.147984593650771,-0.156740604569334,-0.137999465481863,-0.495050002148596,-0.516755290122384,-0.890676277065648,-0.989062036370635,-1.4631061366255,-2.11988886348016,-2.70693912106051,-3.52968835114749,-3.31967224892608,-3.07255534577445,-0.909986674573259,0.912904688930353,3.06339890166677,3.39385730496723,3.30372479961212,2.82129636055755,1.92697583788941,1.71207376088076,0.741894416031993,1.06219177114348,0.295100538456817,0.6820340252765,-0.0246466626307167,0.330240108530144,-0.12216089219148,0.0703224686730945,0.0352501954776124,0.115080090954568,-0.223207077699816,-0.218641374081046,-0.513164222140644,-0.531797001223858,-0.854208513846071,-1.20455768358838,-1.57553111677654,-2.29419749101662,-2.90662979223662,-3.90449716465602,-3.74049849240801,-2.95747996658351,-1.08651670961544,0.963471328713517,2.94057797056856,4.01986047550446,3.70623788672078,2.95706604813967,2.02860797980071,1.79126160902898,0.965767633726359,1.08914433349906,0.33394787732512,0.685729538615108,0.104027594744606,0.345412913974031,-0.100197705039536,0.0353918374075636,-0.024899519351391,-0.00268910115092569,-0.197749845489362,-0.213120998056826,-0.448178064857624,-0.635023593050223,-0.865035366220276,-1.20138109028553,-1.59519159624136,-2.09826321250593,-2.52901869665321,-2.96035618385248,-3.30973203161881,-2.67920092170535,-0.647080033982951,0.948574190635173,2.60659236177896,2.80459616044972,3.13644126573912,2.74973052781104,1.83092987281529,1.72237942638325,0.902201703051596,1.1159435683593,0.425968318668887,0.652053749912101,0.178411923463217,0.283756648849623,-0.0118052297296022,-0.0247577747834899,0.0484308070013493,-0.0288392538730617,-0.164574127880923,-0.281133148446858,-0.463651618805242,-0.629739734050726,-0.837580165637192,-0.99482653254429,-1.1881169926078,-1.55294762280313,-1.74857663424333,-1.93109352741098,-1.07328603695572,-1.42303449501064,-0.314377577622679,0.245780120933458,1.24782200787871,1.72668444865014,1.28230242247598,1.88550795162278,1.32297604623204,1.46594044073505,0.823192596739706,0.979103792861469,0.498231943703408,0.575039890109209,0.176933977233106,0.270444328186306,0.0644204543918999,0.0485017428583756,-0.00975654332333385,-0.0673267761867043,-0.198130218026164,-0.309857319421215,-0.441102337150049,-0.551037460502161,-0.67743419767278,-0.903655977923622,-0.796141487882885,-0.835125996026535,-0.225550635243048,-0.316627313961537,0.339513480840103,0.723901844247874,0.123833636026573,-0.160606798386173,-0.856785108231584,-0.0690699137504231,0.0641351851253845,0.465445968926318,0.615796795828956,0.988146103993487,0.696449679867244,0.804908140415343,0.419363021281094,0.550543860311694,0.243586515699152,0.267389071795129,0.0812572301051162,-0.00961452555586504,0.0244831145749562,-0.107256084966314,-0.175870395467542,-0.271416538126332,-0.336987778371085,-0.474406375368661,-0.465540070954698,-0.584339542399663,-0.42589528250966,-0.18911077427103,0.562292442731249,1.48516521302134,1.56443329193634,1.45004719988381,0.674669666378973,-0.547854783864909,-1.53753063720566,-1.95985886801835,-1.25120647314438,-0.390072374787366,-0.0816072966717111,0.508443346779878,0.396715989394863,0.664869870062849,0.393889550826828,0.461630794109194,0.266115952481004,0.210753883502486,0.111095498207099,0.0246252404610419,-0.0328520400208504,-0.123879082229531,-0.114691239825346,-0.261272098997437,-0.333727972071466,-0.497594970329438,-0.419711352659793,-0.233757575948146,0.110329589659009,0.519121513329487,1.04733107742157,1.83997848423087,2.55144244371588,1.96772069272276,0.749030174833999,-0.89975900259984,-1.9949621844788,-2.18569742241089,-2.12582849215056,-1.01735739169005,-0.531716189763474,0.120954330692601,0.17976972438545,0.461088973904152,0.327807209237826,0.349351961421019,0.218363400831599,0.186976230931221,0.142047076841171,-0.0327098603298179,0.0696880896843247,-0.116125273345604,-0.15220242733154,-0.231399354199885,-0.144672945484338,-0.157101773003037,-0.162172148434677,-0.200456629681697,0.105639312799227,0.699564789793334,1.40988645201064,1.94968859450853,2.22421307190013,1.98350765931602,0.739344232429464,-0.746065851144647,-2.03925726501969,-2.19479142949168,-1.99433949217515,-1.38989245266049,-0.750251293089072,-0.191250240124895,0.0199818590770876,0.245072546469416,0.200947981045181,0.288765356627945,0.227068295729333,0.143470771694209,0.155352084411149,0.0698303787886482,-0.0912851659602763,-0.0835750986338085,-0.108315475562423,-0.248593114335207,-0.346321886826163,-0.200329165910128,0.0578307596952387,0.328245644713774,0.400243765672261,0.87137831374573,1.36661365355683,1.89327306224484,1.8621042085769,1.47077483276122,0.602579751937436,-0.573519965440545,-1.49372917698893,-2.00173869307771,-1.81426239649271,-1.23503885936907,-0.95656289634915,-0.330637714289099,-0.207802051006807,0.136854508072907,0.10062620768699,0.209007510806715,0.17826949982066,0.0882344978267761,0.12026257273313,-0.0911428846135565,0.0857903787353561,-0.107502170100177,0.0179942747518407,0.179658656244094,0.00988731634786543,-0.0799640000408175,-0.431223017175442,0.20669083265832,0.467721033495346,0.91507113833056,1.15157342878117,1.46510676153021,1.63520069903773,1.1158985492162,0.477712398275777,-0.531745842218693,-1.11569626375514,-1.52213627261743,-1.58676918536147,-1.19106825521105,-0.872163393542444,-0.546425466113137,-0.163052933522714,-0.11723862722687,0.13469600754785,0.0725748620827893,0.12913886548869,0.0886701706945486,0.118256562025447,0.0858615342529114,-0.0861651709744441,-0.0837280105880043,-0.416252720641076,-0.447736971970616,-0.247623052749653,0.692881863245175,0.450787601023816,0.423547683277026,0.395133200041131,0.921818135358727,1.14166554671796,1.07780598161839,1.36097868551875,0.755533189339819,0.427962530820112,-0.343180176183963,-0.910596891400284,-1.19226073989189,-1.25079546340858,-1.08424347901056,-0.902792902132665,-0.390850271947288,-0.483706103413096,0.0140708241129068,-0.193510406246928,0.181335153112438,-0.00651241169272223,0.0824894475674945,0.110732008362984,-0.0860229634682312,0.214919057709352,0.341002209552724,0.420817919011438,0.455634623055428,-0.533268846947315,-0.615647011644364,-0.194178061594368,0.610795167413125,0.452642676865378,0.635222620166389,1.22228973493316,0.763032715990278,1.18693609319892,0.515189261224598,0.308381060780773,-0.237536497050284,-0.737323803976365,-0.966616168153333,-1.0264321250033,-0.93165794117457,-0.793135436625636,-0.558894891712669,-0.218889823661519,-0.428616504975102,0.30385761682721,-0.399539593427661,0.372327130071796,-0.140935500975388,-0.0285948437896546,0.215061396165771,-0.447955672381366,-0.172053388014555,-1.20741939797878,0.498714317522106,0.913272105152973,1.33740817595281,-0.384562390593902,0.254748544465227,1.07822599571394,0.0674566715281071,1.21346387645743,0.643485656025857,0.913329880680349,0.455450716871603,0.243471366311938,-0.189655220086909,-0.569982986222064,-0.672620402943853,-0.919920545361318,-0.839244571148702,-0.681826908094757,-0.522400082761201,-0.52195228307259,0.167830522364322,-0.61023597674441,0.615954764599185,-0.658542344188286,0.607809003847985,-0.60319824112392,-0.447813609149652,1.23567338521572,0.4805593426108,-0.0891076478747151,-0.767204185180653,-3.05554939503054,0.586933875042386,0.997665635876442,-0.840912135527273,1.48291850453092,0.13088697732847,0.935784144191675,0.66535578022546,0.535477181711732,0.437773657614416,0.174475052290791,-0.195995922280414,-0.47325355709505,-0.529750910840475,-0.805774611034741,-0.660056310409924,-0.591001880987996,-0.48122396568041,-0.293225487420675,-0.320028512310027,0.571625606024432,-0.973080983890539,1.59241956914313,-1.29900715691753,1.56597627798279,1.23581493403976,-2.92748710312163,3.63367625016322,-2.04730176090829,5.30790740118994,1.344048356776,-2.82992058814487,2.02423761474792,-0.601813741930071,0.690486514818839,0.366782197392011,0.64515718444571,0.613931190311932,0.44863198229504,0.461476317283459,0.112023196214789,-0.146657895749783,-0.273823315086697,-0.507466101417938,-0.683457253820936,-0.497799261262718,-0.562427781821252,-0.577280995327901,-0.148224880092998,-0.181001544168357,-0.313805226418754,1.47163850195164,-1.86040219033764,2.94888743555391,-5.90169352226687,-2.92734515993852,8.51189838370587,-7.33155256986561,-6.79752927693704,-9.09884653009529,4.71840125279624,-1.89096670614252,0.474283413625557,0.519876998631162,0.0671895826274941,0.536384621020458,0.479894930099264,0.369795196029549,0.317001535632797,0.372786936698554,-0.105789231920325,-0.0458778361701463,-0.199671205306084,-0.434974312884642,-0.464963344994278,-0.315099147295217,-0.512349156306748,-0.202633182102126,-0.26335932357391,0.0897643317674164,0.13153426438311,0.0431679453768965,3.74224619198059,-1.08399385902179,8.50559434011605,8.51203142955102,-28.8505602136478,23.5646679574432,16.7044450147241,-4.99354240239545,-1.06012330593104,0.0967804345794359,-0.501154012115294,0.168094332180191,0.181497166633229,0.358177592540186,0.403063193205938,0.280743244968235,0.400347854985397,0.254786055871399,-0.028137988943349,0.0698675762700119,-0.211890677082547,-0.392549000064294,-0.274531662123937,-0.382772661320262,-0.453491483987972,-0.20680057484377,0.0121298448255091,-0.56134990157666,1.4524668548827,-0.415110472518937,0.772252805438117,11.997891456104,-16.1068480769879,-28.850424812622,0.62172536662818,-122.591616951519,-20.2045985236884,6.18954185500422,-2.87772067777126,0.437701081744285,-0.055580846157314,0.0509791007773068,-0.117310533056043,0.262418568076534,-0.13133018497469,0.179219443741101,0.0093964221448612,0.060549745593892,-0.0659740369186534,0.117780352056892,-0.149189360061142,-0.00125905954840151,-0.0593269321755884,-0.0523914477408501,-0.108507119904593,0.0116339885320412,0.0851851488676381,-0.239866048037291,-0.0833237669690728,2.85604752005803,-7.07169170366156,21.7691055069052,122.455179324193,0.621750774509776,0.317300683576059,-115.07019989126,-24.9967689733532,6.39170930251435,-3.3096749486563,0.505186289556558,-0.0923957798720825,0.128728033052635,-0.140827490406159,0.217792887284882,-0.0384190882240116,0.174515255977929,-0.0817986960853526,0.209227561290803,-0.0837024837306202,0.00993275808202511,-0.0520545585142447,-0.0193387596494538,-0.155875044872157,0.0249529604713694,-0.145292027911576,-0.0591819828669353,0.178317484339958,-0.26845813104081,-0.18274175368898,3.35725684012355,-7.50476247643454,26.3146787347221,114.956454378811,0.317305316241678,31.2160766107379,16.1015686114527,-15.8097518874219,0.391960001515287,-1.12136351020583,-0.850822795981805,-0.184817460498571,0.136053275112477,-0.265410037264706,0.393625398116147,-0.101418305012082,0.307888817619528,-0.0137337200247507,0.121146450115592,-0.0614024487863456,0.0529224067345518,-0.19407860748258,-0.0452085568075884,-0.174969127115817,-0.10349072945112,-0.0966267730857392,0.0988053258718821,-0.234699526689427,1.30435721531321,-0.922250785969428,1.5816047768476,6.43426698530887,-13.2342534207467,-25.9949543989624,31.2161002747184,-3.54553939489248,-7.64160260247516,-2.14988587117944,-4.04041498450708,-1.69567482591321,-0.184542270996514,-1.11296064514854,0.292928225729264,-0.480929032182648,0.297683004342038,-0.282321691997542,0.239038270491835,-0.0967791344588056,0.151770055908648,-0.108869725462024,0.156562272238073,-0.171085033358221,0.0490422137984012,-0.0384096203458016,-0.0263841476818802,-0.127347106399368,0.470605466016919,-0.384483420168216,0.100582649783411,3.68926246827725,-6.01617848511661,12.9652682383378,2.58488675963968,8.09668030598317,-3.54551824109637,0.990163900209642,7.67623688010403,-5.94028525032749,0.94495762364932,-2.89552753929742,-0.102464419272418,-0.899858929918698,-0.053365986795072,-0.39293024831156,0.154101925391062,-0.209136489425378,0.20188546146162,-0.128180154593217,0.12516791732105,-0.107690600921735,0.0565306842569556,-0.101137532552843,0.030929994800335,-0.119452405178531,0.176984343743786,-0.147858532575419,0.0908195967938141,1.39833623203219,-2.11730841134643,4.61444155737395,-2.09894526944174,-2.42412317820829,6.36262612638422,-6.88704058588683,0.990187518965393,0.613316454867763,0.170440884448668,-0.299882627859024,-1.78596872449412,-0.884723266785942,-0.808213450930686,-0.898278982655743,-0.051783072553762,-0.54664127046684,0.092371013993397,-0.269889263357789,0.114076905784589,-0.186452181329477,0.11858843868662,-0.0939214260423647,0.0798272207207238,-0.0579201701221946,0.124883266142671,-0.0899935148192017,0.0627190123824178,0.575743722446811,-0.939291250261681,2.29675481912353,-1.98163972230666,2.04283551472596,2.01448356328446,0.505223048343381,1.09642532430514,-0.889607733123316,0.613338273027338,0.392038824624294,2.24988529383441,-1.51652097838548,0.359554486841232,-1.8266945820733,-0.0826516411838117,-1.04951908407617,-0.0961127604173877,-0.52149400704086,-0.0443217865113492,-0.326397789284881,0.0224716333804241,-0.195196855813282,0.0522162425008074,-0.11380297981059,0.0905625325743107,-0.0454846513428991,0.0738249524697437,0.289385681062294,-0.329573466363743,1.12249417541929,-1.1829827597242,1.67868247897335,-0.170624299792775,0.280452660581251,1.05998670845391,-0.312162790806183,2.63403424586527,-1.86561634894579,0.392061436889016,0.0723105204261691,0.912373318477555,-0.416525346969828,-0.275350190490608,-0.770492307507104,-0.526856025822722,-0.702059457443184,-0.31735421276429,-0.595358866323196,-0.122523915400806,-0.408983767378732,-0.0950809844252642,-0.262837327189421,-0.017615677170538,-0.141500273737928,0.0786788497062429,0.182775302201506,-0.0600582671542818,0.645502409077814,-0.564918692292595,1.20178860028479,-0.521453910289042,1.04664171153534,0.420986602395532,0.524480681145895,1.34577092527199,-0.932284762539812,1.07347393436902,-1.2527108051356,0.0723333128702445,-0.0121960457304213,0.862280413636957,-0.496071901553069,0.143341709286705,-0.893718271797807,-0.235299466076482,-0.895918514834894,-0.24521185368136,-0.670713167374633,-0.281692283757865,-0.517400707638506,-0.297324348327004,-0.433091798534681,-0.165743317180048,-0.0722605335968386,-0.0163836367142155,0.417479546901796,-0.0982150577331727,0.919606384090198,-0.292798018995402,1.14364818714491,-0.0302006495189973,0.618502144513001,0.507134387975265,-0.137178754669066,1.37523483248484,-0.40355934453483,1.09922641352267,-0.862731763376725,-0.0121732893230422,0.359871337367835,0.712136358324663,-0.276048781854344,-0.0356808864853719,-0.676098790127784,-0.31775780317324,-0.728014905607394,-0.448325608139922,-0.690563794101418,-0.551870053313609,-0.787983194685341,-0.575629057783571,-0.662705123445089,-0.457957084600614,-0.0780157027324316,-0.0597680590918773,0.731534446544223,0.149595337528882,1.27692173766048,0.133252247609855,0.971786750152563,0.318022552885381,0.487454050461856,0.905060065003168,-0.0935692796644822,1.01906685991903,-0.468080797082834,0.767693403144917,-0.568172320491463,0.359894258151837,-0.154108062389989,0.463638272782198,-0.303078733203338,0.0390903850828677,-0.615172303616533,-0.30584463382232,-0.747636971451254,-0.579470336508172,-0.946922597786632,-0.780873394668649,-1.16964105166662,-1.1373287391585,-1.10131335504907,-0.989440936525075,-0.131030045650375,0.0244172464531007,1.21807286554891,0.722413661190123,1.53486512161926,0.680100944747952,1.08595436006253,0.732030339141089,0.425405800928115,1.0030649807752,-0.0166301413627244,1.07434840678521,-0.2870034764175,0.54719581357212,-0.604167549948577,-0.154085012208324,0.0663720960653333,0.352426642631567,-0.210025594858098,-0.023074847882279,-0.526514506381057,-0.441626112726154,-0.829341175076675,-0.700973057047973,-1.17148968734514,-1.28927002422017,-1.64879735990096,-2.01870919642796,-1.85600528907407,-1.68750731507513,-0.397211356418362,0.381934949070226,1.81348772353322,1.48513797329656,2.25832572038625,1.44717083405289,1.38801902325064,1.22682655825485,0.502207485410779,1.08065741978018,0.0268342968195343,0.817907113053782,-0.192246523548315,0.488296745508417,-0.321125973340982,0.0663951498067995,0.177816750058945,0.334683361431883,-0.211349152741764,-0.11668809955221,-0.563805954757584,-0.439082954682889,-0.908449740558171,-0.949786141980349,-1.37286801264912,-1.8757356223862,-2.41834716584924,-2.99700271079666,-2.86141849130188,-2.46813172139022,-0.740449752665738,0.355581340533349,2.81275897273889,2.8205505616631,2.9910267432976,2.44981500412401,1.67126623836113,1.559639958805,0.711177494767851,1.10066129422329,0.208774800818277,0.827026275030936,-0.0854105706386675,0.460422234039074,-0.240312406244842,0.177839921451156,-0.0970341161912609,0.120756019929361,-0.230334847524544,-0.141798513695514,-0.547264183636071,-0.555630298266737,-0.909731681794546,-1.22524689438176,-1.71321165067989,-2.28377368862494,-2.9992525630602,-3.95091774048657,-4.01501541859671,-3.31892764221274,-0.79454768779273,1.03077690254084,3.02718137912158,4.02444861924906,3.8982470084848,3.04871768056387,2.17625716732271,1.81006017289421,0.913265931003775,1.217558117969,0.277073376642573,0.817282570366375,0.0297763537290427,0.353998322691175,-0.202408616061593,-0.0970108520590614,0.0388315579382345,0.0973455751497714,-0.211376328790718,-0.20281379142796,-0.522366011431236,-0.686276302163621,-1.01731263280663,-1.25199789414552,-1.8179367408531,-2.59441816741402,-3.35025935194117,-4.0579200350156,-4.21826926903686,-3.92911644151513,-1.03437754151056,1.29561878960742,3.82073622497447,3.93287534655367,4.04170356799385,3.48625900804195,2.30464746876405,2.07475455933945,0.988058820371748,1.28099473425551,0.435672192799889,0.711915357027025,0.10220057926668,0.350897607726294,-0.0697233013261996,0.0388548484254464,0.0952042117724926,0.0544228285044571,-0.204114220187935,-0.305210204920269,-0.55288279459241,-0.651822575715092,-1.00996918117891,-1.34778711173236,-1.69927941142538,-2.34234846878797,-2.93794518880092,-3.89384842999549,-2.87367488145038,-2.85039414268763,-1.10234104676076,0.834843159745317,2.57869943334666,4.05235126964884,3.19704196425365,2.97247693097209,2.11422841998732,1.96582512040778,1.07582322792782,1.15739494345588,0.498564910423986,0.725028184652015,0.1717248151946,0.359184042422042,0.0136828960848561,0.0952275915059895,-0.0466826420365596,-0.0723648838392794,-0.224907115477917,-0.289631413014718,-0.528310317447829,-0.689619355672299,-0.854004508743556,-1.20251071297226,-1.42668565737966,-1.81687054676259,-1.57307273699904,-2.07587877510239,-2.20227213625444,-0.874835366666073,-0.393036287081183,0.667527649050338,0.993968394014591,1.38841877857851,2.22544129212523,1.94159784394666,1.43055092259686,1.59982558946948,0.954292840298759,1.1298390811968,0.495924716413433,0.693637360074912,0.254222365413923,0.283851262356938,0.0281726896379202,-0.0466709121597029,-0.00587379391753455,-0.0791240920901074,-0.204854606464023,-0.318991463452515,-0.445373636370166,-0.692471130107338,-0.823687407339394,-0.9510276982841,-0.854477930149294,-0.919824720423924,-0.630809231324526,0.19745072584353,0.589900310753792,-0.0493360689424775,0.414287887035861,-0.388704778128477,-0.0313428904581765,-0.498975325416625,-0.421038014214896,0.907656010912134,0.658264770608199,1.10963993212859,0.724304873370771,0.954976818503712,0.529168991839751,0.569352423120452,0.267940750157414,0.2793438431804,0.107148494580876,-0.00585031165586712,0.0856585230544158,-0.0800349472311687,-0.179366354408012,-0.358924841580468,-0.422160320900498,-0.490264928020049,-0.51289966423196,-0.667401648019295,-0.471087249400643,-0.117214470564041,0.657328634564537,1.02608783848067,2.25448034994027,2.06181025489153,0.511651230433019,-0.888702472986968,-2.13277949001819,-1.39844667621645,-1.61238285845594,-0.649816744021533,0.0320160446988439,0.57040184771669,0.50035242498137,0.691234704074561,0.438909791086797,0.525464420056806,0.267101659934654,0.261612399718038,0.147372332987778,0.0856820741854281,-0.0943535343716746,-0.171760078442518,-0.165062193464812,-0.271456461525424,-0.369521897367712,-0.53576570541385,-0.426161094261211,-0.304634836987397,0.0631019595941846,0.445331335853156,1.43240792955167,2.32549160592741,2.26935123455998,2.27765276773785,1.0854406038489,-0.774931240254594,-2.52119854475677,-2.77005246456876,-1.94639757600019,-1.2269537589442,-0.664905907720366,0.160707595136697,0.198635665732378,0.512737425135216,0.332196865172024,0.434148070210501,0.274807023707555,0.19515961029555,0.140472272391415,-0.0943299467959123,0.0826680967134387,-0.122169519312939,-0.161952772918166,-0.223539072570368,-0.139876064457135,-0.190666812135547,-0.281973521871507,-0.215606270061428,0.202074883347332,0.854107770932291,1.35179300663791,2.31772681373564,2.77064527225007,1.89769452094975,0.708657164794874,-0.741526835307789,-1.96304526215929,-2.66870768805539,-2.40763690183894,-1.36061608622852,-0.90548783959869,-0.239551454567086,0.0204847161855255,0.287281452403827,0.275915112659524,0.296155309919163,0.23825352307451,0.172607492481681,0.168253177622279,0.0826917051908644,-0.0638673903820309,-0.0654735161780021,-0.107276452814014,-0.323822608774604,-0.420200786024288,-0.224785507983358,0.0942910477832095,0.403778324295027,0.407646671108913,1.04550379911291,1.55512150830189,1.87042654513205,2.20843121847569,1.87552001217291,0.608529702358039,-0.791646403803252,-1.74919253648167,-1.99339058022199,-2.13262585179388,-1.51833891899764,-0.969000621940894,-0.364215937715107,-0.23824495934147,0.150038584389842,0.114701446783929,0.217043528974308,0.185183045463075,0.127494286215742,0.135659625920276,-0.0638437591154142,0.078441419926619,-0.164483873870035,0.00922859790021262,0.173671137094545,0.121552899859218,-0.135898928244678,-0.441293758976665,0.198868180956125,0.504927571233783,0.917673317437566,1.40298332245376,1.79206219550947,1.63787880847099,1.22916043323064,0.654424234977213,-0.530513739089726,-1.38303934176412,-1.77868027934114,-1.618802526316,-1.41342676251064,-1.00078533451036,-0.555602151367167,-0.226380486698708,-0.121837821957564,0.136969748850669,0.0755988610138162,0.185462869166616,0.086674158557104,0.100537239333984,0.0784532570294935,-0.104918214465842,-0.0995561635247135,-0.452384533960005,-0.386399401493597,-0.284837234651831,0.734234958362823,0.432614877789096,0.442063483639748,0.557256098302063,1.05219973806744,1.15668097347693,1.30008561806741,1.58493144335579,0.771443882314192,0.477934576865853,-0.417872638147486,-0.919810259083514,-1.37469736300057,-1.49720491611898,-1.0937814455192,-1.04615450635184,-0.534396280457364,-0.491250805705762,0.0578697490977614,-0.235000127812834,0.194548633202208,0.00873456629296306,0.0666544569295955,0.147556624299826,-0.104894635962752,0.258329117433431,0.500846772440341,0.414968844577935,0.644390481649926,-0.835101206904257,-0.647824848211687,-0.21086891946295,0.755120202170757,0.446242180448608,0.716560789544862,1.45793846679829,0.761270752167497,1.33444042135849,0.663814159571809,0.310068978142909,-0.331939128011492,-0.796975135069757,-0.989338826483024,-1.26144798078505,-1.06061719592658,-0.81463470201242,-0.697583448367084,-0.234249421941584,-0.44851359484159,0.317880153035599,-0.399518702361581,0.386171245649673,-0.203760768130109,0.0167136882065088,0.258352828136953,-0.60263314761524,-0.325935697968949,-1.17411110415794,0.413879946289158,1.13274080460457,1.42028463245728,-0.388498330082755,0.337075873816283,1.1449149987177,0.0659902995723632,1.45387831981384,0.676357242452865,0.941906825966714,0.602002221482212,0.241270091276494,-0.177720032483622,-0.630194661015884,-0.879840994612616,-0.92903437174069,-0.916198304554077,-0.857330382004373,-0.513710346081765,-0.581857364671571,0.0534922594671107,-0.622244091568502,0.794909358325219,-0.78038659449664,0.633653976685561,-0.675826626002384,-0.602609571942647,1.40954115275355,0.30223085103506,0.413526125298608,-1.17741511719935,-3.17751882100952,0.483578016289757,1.16548217448766,-0.887439445731413,1.59588181363246,0.196746722916592,0.945476756234211,0.750424905059457,0.734724433802057,0.434120378059285,0.110341651123646,-0.140696402473457,-0.497599209625283,-0.70270416125046,-0.843276415833911,-0.68561134669367,-0.77657458494608,-0.467971818166212,-0.298492682197651,-0.476145514349099,0.611850391744513,-1.03043946733437,1.83390232361242,-1.30566361131286,1.62460755343097,1.40956412112125,-3.37722587236539,5.0592467606857,-2.20341794145764,5.82186088973612,1.08104086121132,-2.87054584619584,2.33079209486368,-0.932184654198448,0.730883426313507,0.600471533962256,0.6434829060008,0.644254800226051,0.634020252762562,0.39543580319246,0.136022581414793,-0.0499642476007131,-0.460981967886744,-0.491123383296155,-0.688483724350514,-0.742806994933062,-0.553793772759043,-0.557762571753614,-0.275812593166933,-0.145402499542518,-0.328085398354494,1.32786280927083,-1.88634576200855,3.51272395997445,-6.39901426966773,-3.37720076404953,8.69347861261245,-8.8345037664007,-7.2467766942093,-9.25066125136522,4.92457451546093,-2.26302602902972,0.475460288155131,0.59050708052816,0.247978454278031,0.522212574667949,0.438370797511317,0.572181210684635,0.298850024792216,0.308649315960984,0.0566107787472032,-0.0681481937234497,-0.384260948027746,-0.354837815371421,-0.498745042055996,-0.497851483018016,-0.447402317122111,-0.233558366313488,-0.421833679344715,0.298069602877511,0.181859981782376,-0.189035463708329,3.74775009313962,-1.09827304555262,9.87795627958533,8.69350112716744,-27.3597895499401,22.8003904064801,15.2867991072743,-6.42795089649514,-1.00353084770951,0.439155138344751,-0.774419722772482,0.175354409098409,0.333417701066291,0.272519961935526,0.441861488987288,0.482922873178977,0.281891863555484,0.288440474482504,0.130541684274466,-0.128863060210267,-0.176760960624311,-0.289168480677617,-0.519909518164216,-0.362390897060252,-0.38752801673256,-0.384026503078802,0.026542914168906,-0.539296044982123,1.50256275722683,-0.347339938730673,1.26189079837328,11.3285648431427,-14.6205805999798,-27.3597674363635,0.31729605091044,-115.070190278622,-24.9967697205777,6.39171028334276,-3.30967492529672,0.505186258297267,-0.0923957678182059,0.128728038738371,-0.140827457845952,0.217792831738985,-0.0384190347671234,0.174515226017149,-0.0817987411139438,0.209227644403631,-0.0837024921214868,0.00993267518812056,-0.0520544667822998,-0.0193387825807121,-0.155875105535207,0.0249529857716295,-0.145292017709949,-0.0591820460051972,0.178317562612044,-0.26845820540011,-0.182741535083176,3.3572561919688,-7.50476064327813,26.3146778366859,114.956462963738,0.317300683576059],"Archive1110_field11":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.28482808277702,-6.46134451146081,-4.74979385337279,-3.57897512132315,-2.72560634599196,-3.11910001568625,-2.99506322735908,-3.00479070612626,-2.98034446702244,-3.01910080137077,-2.98463431501467,-3.01314554850678,-2.99632414439524,-3.01439347943931,-2.99939282194875,-3.0137923674965,-3.00410882496483,-3.0082707502449,-3.00235032075802,-3.00397206912304,-2.99212697614898,-3.01489247064046,-2.97179911102503,-3.03574339802957,-3.04724388838204,-2.84413322280012,-3.16140317293532,-5.52861861952141,-4.10984797333329,3.28483050751623,-0.0836515806588126,-2.41957002950751,-2.41581310179575,-2.97736752467575,-2.84419893857889,-2.85856724025525,-2.84850695443538,-2.84017187759094,-2.84784055318448,-2.84389993340124,-2.83017869239122,-2.83442070231717,-2.83855582099872,-2.82524453344083,-2.83458093197853,-2.83711280930842,-2.8223505282878,-2.83431654326647,-2.83930882568463,-2.82561805944101,-2.84585166825209,-2.84465823515102,-2.82888822087442,-2.86067194924082,-2.82523617996237,-2.9068690414842,-2.9501650015953,-1.65546263283892,-4.33395224843046,-0.0836383451453585,-4.88392303172949,-1.9356029330966,-3.14029770363845,-2.83977429819118,-3.01971059030746,-2.97623353901132,-3.01354192862815,-2.97541675460172,-2.995033547141,-2.96675835610897,-2.9817141554527,-2.97390659051745,-2.97592192815079,-2.96499079547032,-2.97328403102902,-2.96379549142627,-2.97174270543432,-2.97664327649914,-2.97891962357903,-2.97875475997302,-2.98375241528277,-2.99620793100981,-2.94456319330681,-3.04069725950416,-3.00040209471152,-2.93069553093137,-3.14894972628926,-2.47828161925985,-3.57554297876742,-4.88392881247256,-3.41048275415611,-2.55327056348203,-2.71776488550033,-2.8672054552104,-2.85639890780922,-2.86526834030057,-2.87726332765885,-2.85791239528871,-2.89305112106629,-2.86518232478217,-2.8910543857319,-2.86839131599562,-2.87312769805426,-2.86503603672266,-2.87750788081635,-2.86322311777986,-2.87697030307191,-2.87011864578237,-2.86692357841385,-2.87321272573797,-2.86364047072477,-2.88666795844469,-2.91578749842598,-2.82599378581912,-2.96985128733221,-2.52835402683849,-3.29277042456737,-2.43982753732621,-1.73011781126192,-3.41048062390209,-2.88012140330601,-2.80905020536529,-2.9313833723422,-2.81363028938165,-2.96182709098478,-2.87525674523767,-2.9656210195312,-2.92587699691311,-2.96014737792615,-2.92312303564952,-2.94464841335756,-2.91975386602906,-2.93896450740118,-2.92837174480095,-2.93756991036779,-2.92534065978921,-2.9362714001622,-2.92790457604785,-2.93251288507535,-2.9464706262358,-2.95766042105294,-2.91708267588387,-2.97880672156223,-2.77288179068512,-3.13372808751852,-2.74317561657591,-3.03512615579386,-3.12346319301489,-3.03505321167549,-2.88012187883413,-3.06969889526029,-2.70244833682659,-2.85431707863064,-2.80209132218336,-2.89112677518614,-2.87120999931217,-2.91850664595796,-2.87764921806627,-2.90759441362745,-2.88042992475354,-2.91044659303584,-2.88785719838874,-2.90711435793714,-2.88454098334101,-2.89427644308778,-2.88345517317238,-2.89436032237653,-2.89234954608353,-2.90911076673448,-2.88525174225341,-2.91488020606205,-2.8072037696693,-3.01073903645898,-2.78527116580325,-3.05104947042167,-2.76397952426551,-2.81194974778653,-2.72266944595302,-2.77973137312427,-3.06969903433167,-3.01101193438084,-2.78828122466233,-2.9211175968558,-2.84011201805373,-2.93883978361373,-2.86344970966338,-2.93147407706931,-2.8833800820363,-2.93496410713824,-2.90623438065548,-2.93138817618133,-2.89945730715967,-2.91729687071577,-2.89541623448819,-2.91103908924411,-2.90609134086897,-2.91888442174093,-2.90158354143671,-2.92481338282805,-2.86094124035589,-2.97821057120117,-2.85642004085705,-3.04141191312182,-2.7941953942703,-2.97207026708146,-2.85938090008999,-2.96937119851453,-2.90104472305928,-2.7582490159784,-3.01101180971219,-2.98445743542524,-2.80684148830427,-2.92771662270183,-2.82500430802279,-2.89811350791169,-2.85084860288037,-2.9180397130406,-2.88574178226679,-2.92369559278695,-2.88444088230913,-2.90781341056042,-2.87934881172941,-2.89776928363901,-2.8813296336921,-2.89202886663202,-2.87168917453917,-2.89371110344416,-2.85340273943055,-2.92943577154415,-2.86348714227078,-2.99091402399185,-2.81089284106882,-2.9641567697863,-2.81230749017009,-2.94914576566822,-2.8304184464599,-2.8596570286474,-2.91260274180453,-2.83963313008772,-2.9844573406154,-2.98354610085826,-2.81849292912428,-2.91022169278275,-2.82995633552508,-2.9225984599894,-2.87309464114281,-2.93100638604053,-2.88000619139543,-2.91880096871124,-2.88308885731564,-2.91131015349278,-2.88644431168687,-2.89105065349119,-2.85527031239952,-2.87226384216228,-2.83026912415478,-2.88750722931962,-2.86407157399984,-2.95019547904477,-2.83449792291737,-2.95688903561001,-2.82255236104444,-2.97687402604778,-2.86481495460566,-2.94309412542723,-2.88959168372367,-2.87633281922424,-2.90763603881283,-2.8328635662237,-2.98354622731803,-2.95724239071268,-2.81783654148557,-2.92751550472545,-2.85449620009029,-2.92475481764641,-2.86206796762439,-2.91114627501268,-2.87360109525115,-2.91633508629622,-2.88865406062787,-2.90263934617461,-2.85533742901529,-2.85577091219468,-2.78622313297455,-2.80648966397803,-2.78870737240753,-2.84926887638789,-2.79601629782092,-2.91210396238945,-2.81484047925886,-2.96085819490221,-2.85994523322202,-2.95391413409289,-2.85743445057548,-2.90131554865084,-2.89347655542689,-2.8763957109511,-2.90804134364114,-2.82417402082953,-2.95724233752734,-2.96633845503136,-2.84890609278589,-2.93739443599004,-2.85128177953478,-2.9117096016615,-2.86251009388073,-2.92195793751513,-2.88983518532532,-2.92233103315508,-2.88084868987206,-2.89387788937433,-2.82254314915172,-2.80207420534228,-2.72443874519419,-2.70176468245115,-2.6501092762891,-2.75749793248017,-2.73100534187572,-2.89418211289038,-2.85152668681835,-2.9534698822303,-2.85642794717022,-2.93240161998064,-2.88494076816185,-2.90733794087559,-2.89762066935733,-2.86226492836467,-2.92228430969638,-2.85954218375135,-2.96633842829004,-2.95126615769693,-2.84722231682228,-2.91483717000247,-2.85106387487091,-2.92184074594004,-2.88076071516363,-2.92549402520732,-2.88613354093429,-2.91761613528755,-2.87765059578655,-2.88591869030473,-2.81611091387137,-2.73612060141629,-2.59084587577839,-2.54082276063488,-2.48495700921884,-2.64904314316586,-2.69252572760263,-2.8709305392706,-2.82561475403681,-2.93479648705658,-2.87063204599758,-2.92802468884865,-2.8956622035745,-2.89471771948223,-2.91115131863445,-2.880762094471,-2.92522586739076,-2.85987889235562,-2.95126622444867,-2.94032595905938,-2.85162112210589,-2.93024969012667,-2.87536155745445,-2.92754988379106,-2.87974978522983,-2.91990011140656,-2.88979911547263,-2.93095461809122,-2.90904255553491,-2.90157535619268,-2.79666139500898,-2.69858405491449,-2.49910571424518,-2.46352076636703,-2.36380234363053,-2.58714124377454,-2.64578915502464,-2.83997022263316,-2.84846501544371,-2.9407635615714,-2.9083779117972,-2.92407126775026,-2.90719830016594,-2.89999622653172,-2.9172944547836,-2.87696650072944,-2.91299947304453,-2.85363586616751,-2.94032596803827,-2.94367257256623,-2.87103022554499,-2.93361289993439,-2.87263072198122,-2.91727266837627,-2.88162500281234,-2.93202399673313,-2.91358700325202,-2.94865847489542,-2.91647771724428,-2.93998994746226,-2.83182847476297,-2.76520003730545,-2.53328288532821,-2.51417183395729,-2.45322129045288,-2.55515943901976,-2.72013077651449,-2.88405153201068,-2.90926945808843,-2.95880992997942,-2.91713158765274,-2.931150466353,-2.92018808310587,-2.90111983320352,-2.91571418229658,-2.87663957689987,-2.92734324180215,-2.879255040317,-2.94367257084468,-2.93532452001827,-2.87366107681999,-2.91894664843731,-2.8753637447177,-2.92847071683669,-2.90127939915769,-2.94084691160211,-2.91852291760641,-2.96735600096642,-2.94507689295747,-2.98769621903866,-2.94508700476886,-2.91986099949712,-2.77036080939552,-2.64962557439435,-2.68579294191221,-2.82370530277542,-2.83914688577042,-2.99611596945223,-2.94381348186977,-2.98944772212489,-2.94380258219542,-2.93577266214798,-2.92817253180809,-2.89893961424698,-2.92501756255334,-2.89138794148395,-2.92735504335738,-2.8791168617131,-2.93532456858047,-2.92564727171464,-2.87670915004094,-2.92967068154951,-2.893817722377,-2.9334056385917,-2.90303551491972,-2.9417452909173,-2.92167549575499,-2.97903377919134,-2.99501968238703,-3.05287609787646,-3.01864799922578,-3.0494957352081,-3.00667963422855,-3.0464514977331,-2.91607736373126,-3.07118184643738,-3.02013100962007,-3.06736680515159,-3.01776444228446,-2.99889825635278,-2.97280538727182,-2.9418284193912,-2.94041125327785,-2.91370208586479,-2.93346221845662,-2.89228196590609,-2.91986246855119,-2.8794236225659,-2.92564730060703,-2.93001264481103,-2.89230648561383,-2.93163979992223,-2.89411653162761,-2.92797225218357,-2.90183768712214,-2.95311350338395,-2.94826263093066,-2.99956618721369,-2.98365881666973,-3.07242984098607,-3.07239083073198,-3.14527524152914,-3.10608715720989,-3.19120824257629,-3.15016770834481,-3.15087700110564,-3.10834130019941,-3.09487994998045,-3.05193713780881,-3.01220916172715,-2.97288080951053,-2.95250026842205,-2.94862293874564,-2.91201328247251,-2.92798849137755,-2.89184813822844,-2.92791307930612,-2.89529826615897,-2.93001263605604,-2.9220421856656,-2.89411924325866,-2.9233861412964,-2.89375562208198,-2.9385182012093,-2.921362496956,-2.9554355737221,-2.93279397998171,-2.99229285293066,-2.97617436882352,-3.0449189044127,-3.05362980243484,-3.13514100380539,-3.08966128468138,-3.12948495036723,-3.08052556518744,-3.14360375102031,-3.0912565853783,-3.07551585124146,-3.01943083984854,-3.01108192296916,-2.98543217494345,-2.94999233826633,-2.95024278847388,-2.91633232998069,-2.93843372279933,-2.90682028796867,-2.93101679460237,-2.89961689811749,-2.92204224354228,-2.92218788423803,-2.89644277256661,-2.93158979160229,-2.90915564987645,-2.93743785009745,-2.91958911299989,-2.9604706375834,-2.9365334468365,-2.98512562054665,-2.97585161583264,-3.02710025512326,-2.96525195402843,-3.01667127161681,-2.96116632623527,-3.01106975630919,-2.97873090446315,-2.98763031226841,-2.98869239271465,-3.01480626538448,-2.99475620828671,-2.97563325760441,-2.97436555854736,-2.94267476719601,-2.95118483204381,-2.92288158865456,-2.93810548140721,-2.90377535855662,-2.92252882987413,-2.89691855767547,-2.92218789048299,-2.91854204572185,-2.9047512126299,-2.93310635689378,-2.91137217455983,-2.94076176018584,-2.8985040422123,-2.94472543091322,-2.94002651373677,-2.98720450596437,-2.93752013174304,-2.9820486102766,-2.92618269490953,-2.938967632114,-2.88268084390343,-2.87647784569771,-2.86266431299669,-2.91167780285047,-2.9083154775144,-2.95058541617564,-2.96546883101813,-2.96267422255528,-2.96813127442889,-2.94655162519017,-2.95980828037076,-2.92453413375079,-2.9364629264658,-2.91277703982782,-2.9311955975103,-2.91325108304399,-2.91854210305924,-2.92727777444318,-2.90982895076257,-2.92743785694201,-2.88949848390488,-2.9521241999092,-2.94286874766567,-2.97405930149003,-2.91536249088361,-2.96389351797335,-2.91475105191757,-2.94499875628116,-2.89441480468656,-2.89152657291595,-2.81549775847387,-2.83161875919506,-2.78971639535888,-2.8418960617347,-2.87745333831641,-2.89741432054739,-2.93371528507865,-2.93688511538102,-2.95727175400034,-2.92821227156133,-2.9433626314846,-2.91832029178088,-2.93260508340431,-2.91441834664099,-2.92448777423836,-2.9054809122174,-2.92727776281335,-2.91580805014769,-2.89900420176772,-2.94763199675677,-2.92768870244273,-2.9141696837978,-2.88486988027736,-2.95786917430187,-2.91498763857141,-2.96200272659698,-2.92139332911295,-2.94935381814329,-2.8694462275107,-2.87702334045353,-2.81736228685365,-2.82097585110174,-2.81296249787747,-2.82424746432242,-2.86699562388487,-2.89349442533503,-2.92869639363109,-2.93313852362152,-2.94311845169678,-2.93948666396313,-2.94853589601421,-2.92786515828306,-2.94647983881187,-2.92043597738529,-2.9288588001723,-2.92264693501992,-2.91580809008675,-2.91935694601188,-2.91681448360548,-2.90701444758971,-2.93791291864701,-2.99274478325797,-2.90832947033043,-2.93214944932335,-2.91708239988436,-2.94975102332922,-2.87614219297548,-2.91882153670552,-2.85936182047807,-2.85454992399745,-2.82469622916797,-2.79813449124636,-2.80882581895304,-2.82384002703493,-2.85011856422697,-2.86456990142002,-2.90534109033314,-2.89663547413715,-2.93475122405726,-2.91293958186093,-2.940883282536,-2.90748983095661,-2.92488618316353,-2.91813112726234,-2.91348996355361,-2.91574583895977,-2.91935677138874,-2.93004111045596,-2.92558095619185,-2.97413639450637,-2.79424196765853,-2.89987624075744,-2.9462099835883,-2.97598384941406,-2.8914175544989,-2.95990356494272,-2.90314245734645,-2.91735404446468,-2.88048491074808,-2.85820988525531,-2.8521750341612,-2.82825258695867,-2.84044952822632,-2.84380036661468,-2.86487720163526,-2.88266359755176,-2.91324930479044,-2.91630049199738,-2.93237843724941,-2.94530891674067,-2.92198260786623,-2.95074109114257,-2.93065000963828,-2.92237076462371,-2.95236947275985,-2.9189148814377,-2.93004129346456,-2.99485358758131,-2.83452951600102,-3.00546278931834,-3.04341163945228,-2.953581073022,-2.82160640769204,-2.97423473457913,-2.86152740976595,-2.91366618680057,-2.89648512722791,-2.85745542857172,-2.86838128952429,-2.8413069576135,-2.83309407100678,-2.8100642453548,-2.82767703887644,-2.81455786921329,-2.84474207328761,-2.85810442478989,-2.88142540591112,-2.87469582632253,-2.91689653942475,-2.87677316272135,-2.94457103682774,-2.88004090384108,-2.9513623277741,-2.88434010777566,-2.9130653454748,-2.92331490358182,-2.99485321698697,-2.78964066770355,-3.06805182886908,-2.73815026389443,-2.80115749381877,-3.09011774456908,-2.87097429777794,-2.97617024732295,-2.93175847931703,-2.88948966751051,-2.93889263674062,-2.87828752872649,-2.9035325851042,-2.86475142552851,-2.85722953130742,-2.85035148123079,-2.86532638053864,-2.85003014929703,-2.88401171270796,-2.88645774018657,-2.89688129905061,-2.91568188832845,-2.92477396770226,-2.93393381838597,-2.90240794058439,-3.0003027045611,-2.86261650479815,-3.02758564245735,-2.90328482641399,-2.95366775381401,-2.78964016095302,-3.16115800139375,-2.75035961293703,-3.4672806445322,-2.60755588317593,-2.92930905428097,-2.916084672753,-2.81216242128429,-2.92953781730917,-2.86637113077795,-2.89276368269622,-2.83912963849935,-2.86338728366096,-2.8213381667182,-2.82412131172352,-2.82393350367624,-2.81522579312209,-2.81051598765151,-2.84510869042112,-2.83056923255397,-2.8566332681067,-2.874661618847,-2.88262513334713,-2.86863872146141,-2.93347716312092,-2.81893314263393,-3.03333615993079,-2.76644977252101,-3.05962686295369,-2.82060016747132,-3.16115969170455,-5.38728670396382,-1.50275272695035,-3.39311454181223,-3.1661745703869,-2.882166845323,-3.00202425221977,-2.8823453911021,-2.96924370720469,-2.88604644900661,-2.90311924347428,-2.88805534706027,-2.8963405174192,-2.85925860849319,-2.87911964192165,-2.86733466585786,-2.85843535334637,-2.87261890789694,-2.89011348287003,-2.87438311285838,-2.90741827676086,-2.907926289569,-2.9055987696402,-2.92942849400248,-2.91187266317226,-2.968271703905,-2.79186186753292,-3.17417016926176,-2.87436079261345,-3.14859821887154,-5.38727899088036,-10.6422633890562,-1.90980092804293,-2.54759008691599,-2.26929458677248,-2.9357450307155,-2.90573649295939,-2.79301951464211,-2.88137862955359,-2.83620107418738,-2.83429929721812,-2.82751246680633,-2.80416974970392,-2.77893110191287,-2.79577440903688,-2.76207519743408,-2.76603452867066,-2.78816793227939,-2.78062482733168,-2.78955112421521,-2.82943258751263,-2.82235713709394,-2.8359496743298,-2.86608452516702,-2.85567822988404,-2.80904361398784,-2.99499526135561,-2.5719350600293,-2.83160417541771,-1.28751765596277,-10.6422821899023,3.28482565803781,-6.46133671641762,-4.74980611427945,-3.57898386561752,-2.72561511013374,-3.11910940720212,-2.99507205762844,-3.00480002603336,-2.98035350015537,-3.01910977848476,-2.98463877009474,-3.01315461718642,-2.99633289775297,-3.01440240585163,-2.99940175104624,-3.01380116100235,-3.00411764137694,-3.00827978603791,-3.00235921724666,-3.00398104334587,-2.99213154896258,-3.01490144722253,-2.97180818991961,-3.03575254812174,-3.04725328692429,-2.84414073381558,-3.16141578263506,-5.52861645559852,-4.10987242144001,3.28482808277702,17.3577912375751,-13.8633356476841,-11.4357232176568,-6.96181793677373,-3.82842245074597,-5.23948074643103,-4.83823624211391,-4.83086557102982,-4.80597834216926,-4.90695384216101,-4.82448170093551,-4.91072994319194,-4.88730935209665,-4.9371754328723,-4.89709588357862,-4.9507247689452,-4.90730195623823,-4.90842312817068,-4.89366386731956,-4.87301078430989,-4.83833037844989,-4.89915354378918,-4.72287293297462,-4.97559935591999,-5.03371849916453,-4.03034029975285,-6.46480331164921,-12.4780628374263,-10.6786166201885,17.3577929363638,-6.76579179176963,-2.07759967578182,-3.1196276539641,-4.98170441852916,-4.64954787254939,-4.55183907986374,-4.59921242211487,-4.58342415701962,-4.56960733389041,-4.57002334577929,-4.55535066915189,-4.55906858237986,-4.55283306258207,-4.5507086567054,-4.54867045206397,-4.54971942209038,-4.54305036451263,-4.55224785640608,-4.55586357184656,-4.55476435594021,-4.56146099523607,-4.58744063204633,-4.55810825085573,-4.54115567454908,-4.75820625023274,-4.60140560656348,-3.79828628892434,-2.49038875852316,-6.06040466908701,-6.76578392893781,-11.1808909498327,-1.88489254669429,-5.85162497507395,-4.24176315417256,-4.99473647293372,-4.78982294651419,-4.82385246671938,-4.79995364466876,-4.80689862314807,-4.77294386558781,-4.79223157880562,-4.77188499691879,-4.76884121247727,-4.75864525959141,-4.76650690042471,-4.75702315575097,-4.77302778477392,-4.77914182998559,-4.77997986822774,-4.79434327847453,-4.79559033411244,-4.80087253459893,-4.79900222238916,-4.84873362912645,-4.68096429849474,-4.96744380810332,-5.06940041474706,-4.04660947913896,-5.96441723028622,-11.1808922246219,-6.7765059233237,-4.07346526327653,-3.87211903594382,-4.84571537699817,-4.38012786989097,-4.59818901954146,-4.57604881260005,-4.542661245911,-4.60761540462797,-4.55240845666939,-4.59313195740237,-4.55393252276692,-4.57309268117292,-4.55671985930837,-4.57410113974463,-4.55121995762422,-4.5684820568999,-4.55431010277415,-4.55646519831302,-4.55986183539245,-4.56332083899455,-4.58333365814863,-4.57709876347199,-4.56564107358993,-4.61892058923322,-4.07562704540282,-5.45868817747599,-3.58873495158946,-1.22619289940253,-6.77650520500401,-4.48763678096199,-4.46323497022121,-4.8591074091588,-4.34013150210036,-4.89219701303737,-4.58529860881119,-4.81396891686921,-4.70067721421499,-4.75816398958535,-4.70387306250322,-4.73607325962646,-4.69917809672877,-4.73086066567892,-4.70258410794914,-4.71984098356728,-4.70556052213778,-4.71967827706627,-4.71298458616062,-4.7316605516623,-4.73741573506253,-4.73891465096045,-4.71208757450048,-4.75420318998296,-4.5301796883451,-5.18448296577856,-4.16755163307018,-4.99637881880229,-5.52702399208228,-4.9200231699902,-4.48763713534139,-5.16903257126436,-4.1669352652612,-4.52148561924416,-4.53271457977989,-4.55071708602144,-4.60839361819066,-4.62331829449242,-4.58748966988081,-4.63877128738422,-4.59389709095503,-4.64336567893638,-4.59571220036435,-4.62779223627885,-4.59044695954885,-4.60754731715785,-4.59316783027736,-4.61246300996273,-4.59987635530041,-4.62082505366072,-4.59198166791515,-4.62865037293535,-4.52147475922067,-4.84603633222306,-4.3334268578371,-4.91955359504416,-4.40065261684868,-4.28980749041261,-4.16897867018336,-4.42776619635732,-5.16903257807112,-5.01735219197335,-4.45063391621401,-4.71678064493256,-4.50774499215869,-4.73539198551144,-4.55734685678181,-4.72808575076321,-4.62252115760347,-4.72050557915784,-4.65142146941059,-4.6951252726746,-4.64450855005976,-4.67080558672773,-4.64076781762425,-4.6692568390305,-4.64551534084264,-4.6705448655719,-4.6470992084355,-4.67870951057626,-4.61879343806696,-4.79864339985492,-4.53742040333186,-4.89271112773043,-4.44257362553666,-4.78092968308024,-4.62602331907228,-4.90450118696935,-4.63456965555218,-4.3246688218365,-5.01735212795773,-4.86349454089722,-4.42810047119817,-4.66741932523016,-4.49454338478115,-4.62786756137909,-4.56995296442449,-4.66064421917804,-4.60630983562077,-4.66136837284594,-4.60104201740664,-4.63964982802489,-4.59558095607983,-4.62600494878568,-4.57945872587178,-4.60347996417383,-4.57075136595389,-4.60026724562289,-4.56829877293777,-4.68362407807991,-4.54507862301707,-4.76701538207001,-4.45072271211023,-4.76546478662934,-4.49701027915777,-4.73071405619212,-4.43318830473599,-4.54516398243491,-4.71515655093221,-4.48862378007846,-4.86349449241614,-4.86946642082675,-4.46201242828416,-4.67874722861778,-4.53280010178067,-4.69567422717046,-4.58167650948355,-4.69270381820492,-4.59890124460253,-4.67534382816795,-4.61376044499027,-4.66136511924111,-4.59639149296092,-4.6111058407245,-4.55219709891034,-4.56774750153389,-4.52872776268454,-4.61663315348237,-4.54989637824532,-4.70232068381153,-4.50741569907913,-4.75149960024818,-4.52371645616448,-4.79382583878563,-4.54895328950722,-4.74668182676914,-4.65072585214695,-4.58499926343739,-4.63177251663142,-4.48542678237011,-4.86946649703085,-4.80530938465003,-4.49436247462789,-4.69594701645323,-4.54332550393165,-4.66857326417133,-4.56453983508735,-4.65598850869,-4.59754268640649,-4.66325194677697,-4.59865698191505,-4.6249591433072,-4.54583259520299,-4.53489231089684,-4.44479852516701,-4.46944219815883,-4.41680775046783,-4.52594447082431,-4.43442292303655,-4.64502491770568,-4.49782627356301,-4.74816511837972,-4.53167907217017,-4.72902133498257,-4.54518244040716,-4.62890467466779,-4.61552860490315,-4.60183457174591,-4.66974718735308,-4.50139072059673,-4.80530934813509,-4.80534685346259,-4.52827733628372,-4.69733332627079,-4.54464999199821,-4.66633035522013,-4.58299966165684,-4.68187754904683,-4.6074599890808,-4.66667947044884,-4.59417724165442,-4.60802454080382,-4.50821343355079,-4.46965679440428,-4.3382001375287,-4.3128080051367,-4.21347145701908,-4.4129233531291,-4.36417370833299,-4.63431249994098,-4.51692070436536,-4.71778936078775,-4.54573135251833,-4.701845905207,-4.61688488486692,-4.65887019974909,-4.62834456462865,-4.57689694616376,-4.68740700064292,-4.54326400332289,-4.8053468469886,-4.75828387964131,-4.52398433457088,-4.67482109080377,-4.56288063644035,-4.68028448269913,-4.59274480421631,-4.67194345314239,-4.60382536422864,-4.65539482057975,-4.59819430691024,-4.60842811746912,-4.4868925618153,-4.38084387473307,-4.14624136156435,-4.1475991687787,-4.02294328046547,-4.2671014482734,-4.31124479691087,-4.57041229860969,-4.49354786922239,-4.69209244538122,-4.58094206605842,-4.68197471725298,-4.6123762615464,-4.63362564311961,-4.66305214721524,-4.59645668572589,-4.67889782602192,-4.54313150413688,-4.7582839249394,-4.74240779380565,-4.5597003960865,-4.70014870978709,-4.58415850176926,-4.67908154401114,-4.59507792291181,-4.67044842530942,-4.62333936396656,-4.68683086463128,-4.63303641835405,-4.63293638351026,-4.47871688409063,-4.39664233976722,-4.10371971187324,-4.04731556859002,-3.97645718446298,-4.20687234326315,-4.27046427435079,-4.58677730782598,-4.54517268508485,-4.71311288426653,-4.6292680871786,-4.68108139894514,-4.64747046762193,-4.63103739211403,-4.6614137517851,-4.59046578342861,-4.67026357273225,-4.56352451274367,-4.7424077968074,-4.73088071132052,-4.57517809351504,-4.6890184422819,-4.58233810141819,-4.67003357318233,-4.61204825496473,-4.69115709526852,-4.64732053804025,-4.70815403048731,-4.66226424536563,-4.71556592663567,-4.57491144177366,-4.50537190534077,-4.27596877053224,-4.20188731404285,-4.07705124920972,-4.33586373944023,-4.40862264469272,-4.67914853027319,-4.65148383689504,-4.72573460089804,-4.65759854071577,-4.68215172940492,-4.66526289593301,-4.63339713763941,-4.66547323114237,-4.60358969340045,-4.69088189879307,-4.58681604898959,-4.73088072375989,-4.70985725941054,-4.58236038435944,-4.67786104303372,-4.60306257599969,-4.68937464025402,-4.63110614682935,-4.70015909787981,-4.65988666497558,-4.74564783996265,-4.71858039256508,-4.81090148075497,-4.77217889308252,-4.75024392084106,-4.55244399999846,-4.53976834231785,-4.47121658734696,-4.67660844295112,-4.66295849717214,-4.81221232817855,-4.74086680527622,-4.79125366368364,-4.70663713445833,-4.69625559856769,-4.68155503894825,-4.64053253448869,-4.6844380270806,-4.61521154099647,-4.68306229506785,-4.59020829317008,-4.70985728941751,-4.68689042803344,-4.60341038404664,-4.69318237777925,-4.61915955498808,-4.68920637986674,-4.63431205881515,-4.70868778766473,-4.68304205621047,-4.78185367447009,-4.79773664591094,-4.88574552502852,-4.87035842191398,-4.96519770697979,-4.88191718752615,-4.94732665776207,-4.79123563471283,-4.97472005093112,-4.89355169809661,-4.95048776492838,-4.83144241962147,-4.81872282376629,-4.75408032185029,-4.70809723825037,-4.70502782547017,-4.65354807822272,-4.68823455112456,-4.61628135417054,-4.67637857211805,-4.60786470576686,-4.68689044989144,-4.69343284141124,-4.62162715233855,-4.68713385667273,-4.62127649258985,-4.68861389135068,-4.64964719465987,-4.72767053477962,-4.71075392828654,-4.79405315794478,-4.78775129111368,-4.93931173137792,-4.91415017571346,-5.05432067673819,-4.93033818433193,-5.0739912303688,-4.97000107606781,-5.01045189069648,-4.9723269424149,-4.98988538261152,-4.89144778503379,-4.83181601171108,-4.76987598339471,-4.72857983726489,-4.71678696898991,-4.65563284075267,-4.69021704584827,-4.63047671344088,-4.69158638443471,-4.62492362895721,-4.69343284129941,-4.66550401245051,-4.6204581518135,-4.68264462946974,-4.63440594374942,-4.70336233548126,-4.66936263136013,-4.73375390859611,-4.70056061595475,-4.80550076992241,-4.77382894735906,-4.90638425433409,-4.86321759018339,-4.95525403184968,-4.84487618451256,-4.83677011007203,-4.84019083457093,-4.93430148537771,-4.87095960540216,-4.91611687637662,-4.84646900882709,-4.83207509561318,-4.77687899751519,-4.71958980265814,-4.72534541803729,-4.66514908376477,-4.70352612455238,-4.64109120742843,-4.68528336060982,-4.63069157601428,-4.6655040566774,-4.67893077603146,-4.64364777778173,-4.69228281911293,-4.65083664164127,-4.7018049931738,-4.65714155646458,-4.73342565942475,-4.70225169780802,-4.79949163091286,-4.77037890874346,-4.8413081389257,-4.74825461640354,-4.76736335390723,-4.66625549658445,-4.68956100257285,-4.57804253813413,-4.72331346354623,-4.73455649699465,-4.81574790582198,-4.7998809389175,-4.78226134486797,-4.77824235642196,-4.71884312724918,-4.73493794503709,-4.6780549328203,-4.70359330955699,-4.64607632801773,-4.68317861926645,-4.6419736973276,-4.67893077432842,-4.64558242603348,-4.64341400135968,-4.69283721618878,-4.64375914669911,-4.71156383044692,-4.66724975387356,-4.74060981059827,-4.70582944600152,-4.77803683307708,-4.70650895666407,-4.78221299611297,-4.67311086980543,-4.67986103302019,-4.50439737791194,-4.53214032671924,-4.47067958392365,-4.56358873455569,-4.62764881963232,-4.70894274355268,-4.75247272044946,-4.74257279167123,-4.75884227796103,-4.7153233701407,-4.7302523642054,-4.67089387455225,-4.70007699408541,-4.65529297348503,-4.68743487094339,-4.6573250243652,-4.64558248291493,-4.69662066249378,-4.65105300746351,-4.69010875836218,-4.64399787466397,-4.70455160330756,-4.67628920003678,-4.74656555640651,-4.67246205776212,-4.76165594125693,-4.68063312885062,-4.74191132204172,-4.62438217713835,-4.62032009603561,-4.47328453212224,-4.46651377051505,-4.43622534373585,-4.51569065995296,-4.58174853035928,-4.6492079542683,-4.71008828063724,-4.72200332556416,-4.73949481437238,-4.70263316010116,-4.72486283654347,-4.6802692655466,-4.70694755297596,-4.66715304278531,-4.68563103257117,-4.65650129192603,-4.69662064079765,-4.64502683374026,-4.65065447541239,-4.70274711363446,-4.68510379713948,-4.71831803708281,-4.64090154030322,-4.73090961857817,-4.66766744450038,-4.75050587121756,-4.66323036375171,-4.70698411829809,-4.57736935660038,-4.58361813060978,-4.48000366738391,-4.47259259532321,-4.44557406790153,-4.49698389325186,-4.56257717073541,-4.61673870292413,-4.67746545767088,-4.6781776835125,-4.72007283190224,-4.68669210786695,-4.7222035828904,-4.67147397377416,-4.70423253994633,-4.66172963565701,-4.68078634176734,-4.6676817762414,-4.64502687204181,-4.65943341842375,-4.68081982159759,-4.68389766616964,-4.61448318252602,-4.72438674087216,-4.66731100495111,-4.73110209576372,-4.66365673703164,-4.73511131621518,-4.62635744550579,-4.69083809894677,-4.58416043240322,-4.58007372723053,-4.50495542162187,-4.48450489821267,-4.49013113634717,-4.51088700840045,-4.56873794536271,-4.59801462585129,-4.66726462120406,-4.66139049510763,-4.71150526834813,-4.69292107627777,-4.70616417275862,-4.6890947539417,-4.68931720468312,-4.68459486994416,-4.68462172989044,-4.68024329197683,-4.65943328379632,-4.71943959011303,-4.5792356156071,-4.78286131984118,-4.65184799100076,-4.69032537835678,-4.65650527019982,-4.75014757737827,-4.61260282273856,-4.71813268597191,-4.61938973144087,-4.65026062187641,-4.57615282743532,-4.55358697402707,-4.52594909299463,-4.4849986665139,-4.50880767873059,-4.50648715230145,-4.55655466853861,-4.58453516251875,-4.63837613071811,-4.6438855987289,-4.67976917514414,-4.6658834634296,-4.69428962514688,-4.66521434944477,-4.70923858595296,-4.64282013697601,-4.69845074226407,-4.66517770580991,-4.71943971289397,-4.96996954728276,-4.7046829015727,-4.58311510285863,-4.70142349096212,-4.79059743259636,-4.5609194142616,-4.75717479032018,-4.62343994865736,-4.70831668591611,-4.63902832620963,-4.61762040861471,-4.61773627110895,-4.55594035822167,-4.55383167640018,-4.51281100678099,-4.53534227864838,-4.52791725122183,-4.58097812994658,-4.59244613101259,-4.64011775527899,-4.63646995081847,-4.69245175366122,-4.65658754258181,-4.70588013988137,-4.69440707156387,-4.68037600785195,-4.7322538552232,-4.66587774539555,-4.6411368076536,-4.96996931201963,-3.86411132976556,-4.95833354931944,-4.89190646768395,-4.41657737512182,-4.83963072522504,-4.61691816587923,-4.72198679905545,-4.60359968113513,-4.62336352291474,-4.6534435582552,-4.55905163300064,-4.60063603159105,-4.52250068210895,-4.52453518993973,-4.50542083366347,-4.52187990183099,-4.50484408486053,-4.55927230337126,-4.55777858285323,-4.59585491232346,-4.61760657143448,-4.63667762649292,-4.65024132736399,-4.64243272569192,-4.67418700339528,-4.6786798141614,-4.64522156668863,-4.77839775021504,-4.75993835650544,-3.86411096504511,-6.45160706785435,-2.91708405167838,-5.61682258120279,-4.35958452057957,-4.70595070772378,-4.58444603373189,-4.67800474156741,-4.73976758667366,-4.60148008120739,-4.69022233633815,-4.5822683878961,-4.61924713473214,-4.55671071764609,-4.57070159168562,-4.5406096450706,-4.55049576675883,-4.54640740167342,-4.58538250145458,-4.58021454308617,-4.62943465693434,-4.63536292515281,-4.6662462908931,-4.64811721180382,-4.72483068131232,-4.62830299638343,-4.74525932833891,-4.74436425169469,-4.58971878506225,-4.73217480040732,-6.45160783231837,-12.3567258505204,-2.8756222046686,-5.17289190097451,-5.06734958452931,-4.92464033722407,-4.65570633506426,-4.50043037627567,-4.73233023388724,-4.52319850328227,-4.59855734430557,-4.557070050414,-4.55575830647474,-4.50697212250199,-4.53195742383206,-4.50077992856996,-4.50180658395332,-4.52122449524337,-4.54072963720041,-4.53197097952978,-4.5841008025656,-4.57819326156896,-4.59451528341206,-4.63165278837326,-4.58328956681968,-4.70512943536651,-4.52951152093824,-4.71311274151498,-5.34997328974475,-4.04892253464746,-12.3567211703873,-19.0256168498835,-2.60907634568512,-4.26069829866,-2.66094930350183,-4.63280450757294,-4.87526836889502,-4.40443453427482,-4.66055855341735,-4.56316180857633,-4.56616114972079,-4.52079012448115,-4.50477388554951,-4.46065268710786,-4.45886780031987,-4.42095546427511,-4.44161892753605,-4.43680452691062,-4.4604969733995,-4.48117965845684,-4.5259132875253,-4.53878382663747,-4.56499673209039,-4.60526121240639,-4.61920966775806,-4.46123278709278,-4.92731159554563,-4.15391815439565,-3.78572375629015,-0.905987317430969,-19.0256287897924,17.3577895387863,-13.8633273600381,-11.4357252946606,-6.96182186865448,-3.82842505565102,-5.23948390772548,-4.83823922337225,-4.83086877136478,-4.80598139058647,-4.90695681528968,-4.82448316634769,-4.91073295342481,-4.88731214221415,-4.93717833100718,-4.89709878000406,-4.95072756430223,-4.90730478825423,-4.90842611383463,-4.89366677579261,-4.87301376002675,-4.83833193520274,-4.89915654562314,-4.7228759835904,-4.97560249218568,-5.03372184849943,-4.03034182238851,-6.46480907734559,-12.4780576991433,-10.6786289395629,17.3577912375751,31.6040939919103,-18.7797651614527,-17.0553480560171,-9.70385649603818,-3.78422700758296,-6.23314530816946,-5.5486206503826,-5.51384023176205,-5.51229319471812,-5.6559862322816,-5.54116259522746,-5.71457927993813,-5.65596269269532,-5.75843644346964,-5.71821551902114,-5.76844258199941,-5.71162314745385,-5.71981663616687,-5.6572841008018,-5.62246634159031,-5.56851464629852,-5.64375649698618,-5.32147371629675,-5.80980254731235,-5.8873068209029,-3.98803652501307,-9.32950687887114,-17.6217440753643,-16.6109365206555,31.6040900557371,-12.9559164462276,0.352789921825102,-3.19345115869522,-5.57186339546227,-5.36484011439934,-5.06271739848553,-5.19286235070244,-5.15654859950003,-5.13128602751783,-5.14579504523912,-5.11763644549926,-5.12555523529165,-5.11304192610271,-5.1095062879457,-5.10729173660703,-5.11065077341997,-5.10147977705373,-5.11264838388831,-5.11877250515392,-5.12166471930837,-5.1134613148848,-5.18246544688213,-5.12384343909717,-5.0429101523204,-5.60632788395915,-4.80341786758116,-3.86686735634566,-2.11789889272033,-6.82675191317869,-12.955956369915,-16.6606593090658,-1.36153292363354,-7.31847395938529,-4.51762853531471,-5.75684330011976,-5.42534142520883,-5.45644040117167,-5.44966002739765,-5.43306873590755,-5.40489826493302,-5.41366812648934,-5.38487404348565,-5.38778652662515,-5.37414574306704,-5.37877358236129,-5.37610034779216,-5.39115530904008,-5.39761186388868,-5.40675050132616,-5.42901368270279,-5.42556445993804,-5.41925299372272,-5.50019132680014,-5.36485008800569,-5.33458726176437,-5.78898016917184,-6.02730311993487,-4.22078898167034,-6.54193916787094,-16.6606384949825,-9.46841835070644,-4.26463105302385,-3.94715314587868,-5.67675565099874,-4.74750213294841,-5.19244828698137,-5.12515926143366,-5.06458091455756,-5.15746212045287,-5.08270722107976,-5.13725668250563,-5.08996442456641,-5.12310241473497,-5.08868265757653,-5.11391170279523,-5.08791053369617,-5.10118739980948,-5.08658550161772,-5.09605318051738,-5.0820974770404,-5.11490453123495,-5.09083792356045,-5.10463689439954,-5.19000902387422,-5.11887328737905,-4.48618236540563,-6.21091560174223,-4.03044789377917,0.294650061592423,-9.46843264120833,-4.99602622033758,-4.99533440518953,-5.6687436925158,-4.7402469039192,-5.67206855205829,-5.12734201739656,-5.48046649431551,-5.3032228684302,-5.39206074483572,-5.32225359285464,-5.35947666980795,-5.31148850789374,-5.34743088637661,-5.30963468856881,-5.336475353228,-5.31986701854034,-5.33884562066015,-5.32990832455074,-5.36152993806529,-5.34319724325006,-5.36464946539489,-5.36090285628051,-5.37599483681335,-5.11825601046376,-5.95347684520137,-4.5104512334469,-5.78393980783194,-6.6712306640663,-5.51048077462247,-4.99602504013366,-6.17346903134864,-4.529499106686,-5.05423075511049,-5.12255224624918,-5.035752246663,-5.19112193194251,-5.1669611363201,-5.14861276326312,-5.21059744146477,-5.1419470131699,-5.20483018877353,-5.14480521326466,-5.18503780684605,-5.13827830091414,-5.16799477310206,-5.13674843049256,-5.16517992909245,-5.14315030713381,-5.17237166679104,-5.14884106956193,-5.19640807022117,-5.0644963010762,-5.448098431884,-4.74411877818921,-5.61698674660093,-4.92016511336485,-4.63189595977953,-4.53700058254113,-4.9594912821623,-6.17347147069296,-5.90436302587209,-4.94281186939158,-5.34314893817759,-5.02383548836969,-5.38799044930409,-5.1105471795091,-5.36775280754277,-5.19836821898359,-5.3304749502827,-5.23501902553923,-5.29676564900642,-5.23078469662435,-5.27041849394533,-5.22200784045576,-5.25817325432053,-5.22841047978767,-5.26185074254775,-5.23638744134367,-5.28683707094827,-5.20603996952908,-5.41222372589845,-5.05967740650777,-5.58544233133993,-4.98275358580885,-5.42305503689473,-5.24161285354619,-5.65615333948529,-5.22389511977738,-4.71902774021645,-5.90436435748362,-5.59550819538987,-4.90220824207859,-5.2547895299047,-5.04022592450736,-5.20648715517964,-5.13157609726188,-5.22765640698581,-5.16860014141518,-5.23666460250956,-5.1624299213243,-5.21779626190362,-5.14685639922199,-5.18374210225872,-5.13046644726851,-5.15504022068857,-5.11485368132114,-5.1694658808265,-5.11329999582163,-5.24888711339709,-5.06868213210642,-5.38101429476987,-4.97296615353959,-5.39902944208407,-5.01904464080143,-5.32048109997111,-4.90080693635035,-5.07137970895452,-5.3573678779943,-4.98636970890738,-5.59550961766909,-5.62915759531843,-4.98371735382962,-5.30315389789922,-5.07693430534802,-5.29602249281832,-5.13562215227663,-5.29777936831465,-5.16824001325724,-5.27669434899338,-5.18023144454099,-5.2384725874923,-5.15981072914086,-5.17419329521899,-5.09975041216631,-5.13649272275098,-5.07115973685379,-5.17574282674026,-5.08940961540059,-5.29498642068922,-5.05389491924138,-5.38854794279852,-5.05837545107958,-5.41356590452146,-5.08719324070695,-5.39106851539303,-5.25659902350653,-5.14056540260946,-5.20096847405435,-5.00651749814909,-5.62915862233826,-5.50135423986639,-5.00559411013406,-5.28733169075496,-5.08246990329808,-5.25589290931989,-5.12576381827474,-5.2459340919726,-5.1578432394659,-5.23527976643497,-5.156881382954,-5.18522860408707,-5.08601282547458,-5.08802075672053,-4.96335588424518,-4.99575247855046,-4.92278187417512,-5.06912960766895,-4.95487789343036,-5.2356302172618,-5.01290968280348,-5.33904546839214,-5.05498980677228,-5.33834685279322,-5.08706111079366,-5.19657931886432,-5.17967232446268,-5.18162358371563,-5.28555143206452,-5.00829220349915,-5.50135535211579,-5.48729889468144,-5.05312648091262,-5.30281688839198,-5.10286241691764,-5.26885772697882,-5.14168829288868,-5.2679656047494,-5.17005558795386,-5.24642868290997,-5.15152055472718,-5.18006624115752,-5.04344561553387,-5.00865617097656,-4.84569900742476,-4.84855813248798,-4.72993805676567,-4.96299479493548,-4.87586608743817,-5.20256177387761,-5.03728632268686,-5.31718450302366,-5.09439254970853,-5.30932641878958,-5.18648380286915,-5.24987366059633,-5.20875380497625,-5.12875758105549,-5.28234274384234,-5.07391670911614,-5.48729977784031,-5.41845979465289,-5.06757628675038,-5.28123414023056,-5.11351931183414,-5.26469743171397,-5.15035151563386,-5.2547262456772,-5.16728600384592,-5.23807693261224,-5.14954933676656,-5.16738264051749,-5.0231598473617,-4.93597434895802,-4.70016546171802,-4.69386016744924,-4.56638225117665,-4.83856425867324,-4.815666980303,-5.15055908238702,-5.02738226642685,-5.28612047673339,-5.12222493615861,-5.26165096768836,-5.17510105080942,-5.20660618052627,-5.24840293457425,-5.15667206173534,-5.27419524100341,-5.08616522571809,-5.41846070154592,-5.383983647968,-5.10301656367278,-5.29413418373054,-5.13882364042793,-5.26994743961422,-5.16156557434115,-5.26329256721506,-5.18556059413482,-5.26374917115945,-5.19273515415456,-5.20786140386019,-5.05946379123705,-4.9853805387237,-4.72811640894318,-4.72586586452672,-4.55066004904595,-4.87150121282076,-4.85355804789136,-5.18625562925612,-5.09998723228978,-5.2974774755641,-5.1894609791633,-5.26773983126332,-5.22360782902405,-5.20253240563019,-5.24388833663954,-5.15707370275797,-5.27420443812358,-5.10609612621862,-5.38398439978613,-5.35178112505406,-5.12288959227763,-5.28413649264361,-5.14699151277055,-5.26505411173281,-5.175037940932,-5.27344776888499,-5.21450065016188,-5.29219893618447,-5.24447913005352,-5.31414302291475,-5.19648673663926,-5.18966916806987,-4.93160106291447,-4.9880275319182,-4.83357914926674,-5.03753410429065,-5.06878460473667,-5.30024077844408,-5.21989709985055,-5.32588960279792,-5.22522317999509,-5.26259230555578,-5.24064540324793,-5.20769539003517,-5.25710478548958,-5.16462671327069,-5.28190452392217,-5.13775911243439,-5.35178179296685,-5.32719172573459,-5.14758181485084,-5.27808634781811,-5.16598244552258,-5.27577187755892,-5.19849852229073,-5.28863614496784,-5.23796935417064,-5.34135260491901,-5.30943187669976,-5.43478877825067,-5.39614332539657,-5.48613410183522,-5.32633254765487,-5.32313603132453,-5.26348845825605,-5.45705347689801,-5.32966647597026,-5.50094835157088,-5.34014232105149,-5.39996188803667,-5.29418683599861,-5.28208372101412,-5.26959108590968,-5.21273930394029,-5.27207494145221,-5.18034665436366,-5.27702462556483,-5.1547519235781,-5.32719240667747,-5.28018526891701,-5.16449194931347,-5.2820225816104,-5.18425021702511,-5.27876034921462,-5.20875828545656,-5.30473851808259,-5.2664393402653,-5.39107667154519,-5.39238810644159,-5.53909300953801,-5.51428133690601,-5.66113419003145,-5.58876272117308,-5.70401565096222,-5.49066053801561,-5.70736720733439,-5.56074974656033,-5.61491186521531,-5.46354485388664,-5.42538636046538,-5.34684322027847,-5.2950016472014,-5.29102789303567,-5.22491311696778,-5.2753869945,-5.18643974485196,-5.27162511885705,-5.16823252229081,-5.28018552940776,-5.28782132384718,-5.19177160865071,-5.27843603261734,-5.19517594494114,-5.28465841798378,-5.22604471985033,-5.31964008979803,-5.28384186312764,-5.40475474670332,-5.39661531047849,-5.5813540853655,-5.55164777215838,-5.67580054635797,-5.53016485707888,-5.65768082231086,-5.56057150632253,-5.64585380260073,-5.58795055645925,-5.62817268525048,-5.51392467242361,-5.46555447103009,-5.37374878430144,-5.32122743044717,-5.31336416690934,-5.23812005989506,-5.28792032586377,-5.20305932756894,-5.28406000234811,-5.19675188550675,-5.28782194681874,-5.24090990689222,-5.19395451780651,-5.27845777106422,-5.20679106641178,-5.29093623319336,-5.24310884552914,-5.34387066665003,-5.30474276837846,-5.42620326060228,-5.38699985542944,-5.52506056946222,-5.45251238620813,-5.52839030603817,-5.32855983331102,-5.33701856309817,-5.25004379992491,-5.45464594185059,-5.43154064480758,-5.53020326324579,-5.45586384251832,-5.44304942714203,-5.38632948178643,-5.3096066349231,-5.32138153120027,-5.23925322877799,-5.29068706535061,-5.20922848629582,-5.27081565964716,-5.20581891010506,-5.24091036332333,-5.26851492699428,-5.22532450463889,-5.27842528835804,-5.22563073840569,-5.30057715554964,-5.23166355212043,-5.31913116848584,-5.284079740112,-5.41574377737408,-5.36592425604453,-5.47781768118925,-5.32175074984224,-5.33838239091695,-5.11442365473909,-5.12753837486463,-5.0184488381219,-5.18909337662988,-5.27787667545746,-5.41553266250019,-5.42034823809338,-5.40013641651869,-5.3932458367144,-5.32198438985824,-5.33812755696343,-5.2625297250329,-5.30314641808914,-5.23104229538421,-5.28065635279452,-5.22289277746012,-5.26851563172649,-5.19593197464102,-5.21685929940494,-5.28691447461582,-5.21550226304895,-5.31078361071373,-5.27686348545859,-5.36368446351395,-5.28606732487413,-5.3949833207642,-5.30084049946555,-5.39372691717455,-5.2395861881431,-5.21404008677362,-4.98844252865176,-4.96338298732304,-4.91534203881593,-5.06176995235436,-5.14863434799368,-5.28394911631084,-5.34890196638465,-5.34128969208327,-5.35907157033933,-5.29589956514566,-5.32439159082413,-5.24744914562017,-5.28841569533967,-5.22490309502107,-5.26873354298702,-5.23478903046859,-5.19593241667606,-5.30503083615646,-5.23398658889709,-5.28896788476605,-5.23514498440108,-5.27118907224645,-5.20623810819257,-5.34149622426709,-5.27189814547826,-5.37807059196015,-5.28220282925084,-5.35455756028537,-5.20002459675911,-5.19210887372364,-4.99487434615829,-4.98636072959452,-4.91816733239621,-5.05116304174274,-5.14228489948623,-5.24189573881898,-5.31481038241529,-5.33055006998816,-5.35534521115916,-5.31142422397772,-5.33262028206115,-5.27802442964598,-5.31014637134599,-5.25637185236505,-5.28474074848073,-5.250636865463,-5.30503164631562,-5.19736238325206,-5.23381038171683,-5.27448750028656,-5.2617673546288,-5.39205156410695,-5.26420948942362,-5.32294078180129,-5.24329478689407,-5.34886999687199,-5.22161037783016,-5.29490165802925,-5.13103897097279,-5.13666681751906,-4.98749202018303,-4.98606794019808,-4.95522311448992,-5.00972391448156,-5.10549749006847,-5.17118287846283,-5.25771672009965,-5.2467192279722,-5.3141843857109,-5.24961915500537,-5.31281691775116,-5.23363823412873,-5.28508745910268,-5.23256664401218,-5.25567938197093,-5.23635964559951,-5.19736268541695,-5.22943473675981,-5.27703807869562,-5.31408487484524,-5.12210440271485,-5.22905657243597,-5.24821772076298,-5.36090846603034,-5.23472535827693,-5.36680584969641,-5.23503612877249,-5.29780500153655,-5.17041728758371,-5.16590641982973,-5.06706852543947,-5.03977660062285,-5.04820876289153,-5.07543522656761,-5.15054108647751,-5.19244349562097,-5.2720596792741,-5.27904107803149,-5.31706024450043,-5.31542977792485,-5.3042423502243,-5.31693121948319,-5.28827254663755,-5.29406480571071,-5.29598580453564,-5.28879095203616,-5.22943620981352,-5.35402184858082,-5.05984810910559,-5.39628167351116,-5.41128138202946,-5.34549607841152,-5.16066199820806,-5.34860567848176,-5.17971918295571,-5.27208928830978,-5.16460038293805,-5.21093830893689,-5.11160242897867,-5.0863885625323,-5.04619335020714,-4.9999319005299,-5.01955725590186,-5.02276785932122,-5.09210614159398,-5.11495825989736,-5.18954502792225,-5.186487331877,-5.25405936497683,-5.19881472986754,-5.29647109618976,-5.17524577468433,-5.31482225358244,-5.1809076679091,-5.25692904273451,-5.24082459509762,-5.3540220419823,-5.78124614916888,-5.4586479339803,-5.01182402972539,-5.06046827377983,-5.47426726890073,-5.19358176144011,-5.34825302151281,-5.25594343103045,-5.3525013654822,-5.23871206872066,-5.24166739811189,-5.22036069327529,-5.14335652799829,-5.15023038516252,-5.09545590125821,-5.1275265634145,-5.11712186100832,-5.18437455909839,-5.19420821359179,-5.26302730863857,-5.2574895417712,-5.30884791715233,-5.30634701816787,-5.28987883621492,-5.38728607610724,-5.21562193914911,-5.44334189359161,-5.26455495885694,-5.18321371537957,-5.78124919107033,-3.66911482357026,-5.43077664634707,-5.94802132358231,-4.97292605944066,-5.34056825475364,-5.19404330733836,-5.28278844876337,-5.09658232657409,-5.17320185207875,-5.17684479447984,-5.07127970623125,-5.12440208102619,-5.02230271259404,-5.03835138865838,-4.99068537490091,-5.01840281051353,-5.00414844627474,-5.05930235841434,-5.06370635785286,-5.12126071979986,-5.1333246012804,-5.16993711271981,-5.17043365606765,-5.22147587362397,-5.1284946292972,-5.37578745811057,-4.98734845568458,-5.48954517343977,-5.45315643397927,-3.6691188845877,-9.34713675631106,-2.2741794736198,-6.47095283991418,-4.95822040904178,-5.33036340470514,-5.1341502414209,-5.39826183586502,-5.37511020241408,-5.19511741233412,-5.35551408803997,-5.18703149854278,-5.24557973451704,-5.16711357793069,-5.18378676148716,-5.14340257076632,-5.16768149081255,-5.15698486284696,-5.20517541000616,-5.20509138856937,-5.25939414261388,-5.2598588114414,-5.31116527685102,-5.28362390132556,-5.341894834209,-5.34470329269298,-5.22627685614935,-5.70400314746666,-4.83080975348008,-5.28726784020007,-9.34713306674917,-17.290867972547,-3.04522653239327,-5.62179743345053,-5.92337545164879,-5.6659066244964,-5.14583746110186,-4.94121735246655,-5.31916498618316,-5.00482588681373,-5.13307038811594,-5.05581163308266,-5.05473716494434,-5.01347360514258,-5.01507257589104,-4.98547610194861,-5.0043745257462,-4.99796492015588,-5.03413362236951,-5.03971445359109,-5.08414193362188,-5.08653903614605,-5.12013865861284,-5.15244598093508,-5.09739311574286,-5.24247026760934,-5.15590024167939,-4.98650560731701,-6.68127613298069,-3.95928829033316,-17.2908997536649,-24.8513830072681,-3.18562246450861,-4.3650928392425,-2.17448117653281,-4.98854884781785,-5.73494127881324,-4.86465693641045,-5.27818077820858,-5.14558765266418,-5.13893948894386,-5.07294830066347,-5.07036139999677,-4.9947883836875,-4.99670028325997,-4.95026329717713,-4.97394801403117,-4.96174354227357,-5.00712139766639,-5.02512675293861,-5.08077986527869,-5.11301392225761,-5.13565426260442,-5.18937680488262,-5.23151239070811,-4.95087955114486,-5.6853802092889,-4.53711036789475,-4.00964147129721,1.32333502954521,-24.8513526242706,31.6040979280835,-18.7797978558622,-17.0553251305327,-9.70385589350417,-3.7842232968245,-6.23313970267413,-5.54861801275906,-5.51383565143933,-5.51228988878637,-5.65598210375975,-5.54116090885363,-5.7145752719288,-5.65595927014161,-5.75843248631145,-5.71821209634121,-5.76843869562557,-5.71161962384561,-5.71981283444249,-5.65728044474441,-5.62246262650628,-5.56851269856161,-5.64375295437718,-5.32146993601712,-5.80979872549793,-5.88730203147504,-3.98803899411931,-9.32948863936223,-17.6217742907613,-16.6109023748347,31.6040939919103],"Archive1110_field12":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.8421709430404e-14,-79.067264097337,8.36697554507711,-10.2732005820993,0.520669292773817,0.214191435356582,1.45223085636857,0.726869760804078,1.93388017774359,0.46598743537092,1.40679103036106,0.205328276298332,0.61861375433088,-0.0768503409166499,0.324995648727025,-0.109543562973641,0.488506926110375,0.401106427483086,0.928205710159972,0.826178532132275,1.81252902125797,0.786963768531422,1.62721537042339,1.19326023894629,1.33840173634016,-13.0804445860908,32.2482214797598,-94.5586648640426,76.9197604855271,-2.8421709430404e-14,-5.6843418860808e-14,-17.320034111505,-29.7846746139918,-4.93430988349684,-7.62132825325244,-6.05050695888468,-1.6588870947366,-4.63063915399078,-1.34791360439129,-3.48731380544604,-1.66918483708588,-3.28321201694217,-1.97996469221715,-3.20128529164919,-2.25975863542141,-3.08765570462884,-2.39677721472123,-3.07533166922707,-2.24450330566145,-2.99297974979146,-2.46647547706237,-2.39165124073276,-2.86710828075383,-6.0210098805066,5.98071692635057,-27.3417994103019,20.1302242600996,-17.8216148816732,-71.997073204533,-5.6843418860808e-14,0,-23.5744388140018,0.325453136547935,-16.3908477320817,0.964567365507946,-6.05614362190408,1.00612459719321,-2.06537390116534,0.981068022251407,-1.03687952553082,0.875249108659773,-0.816842275935983,0.717517212145822,-0.65079984723809,0.392645683943897,-0.43058352720584,0.426881268138686,-0.372717841313715,0.662718940926425,-0.13349915440881,0.641712639093612,-1.8099461887914,4.60181430917828,-12.3418955351723,15.7379397328094,-21.5215879269298,2.41366131826067,-1.77044792379627,-0.0910589036627698,0,0,-15.1287943241786,-10.227390144905,-9.43453537920948,-5.95649247740016,-6.05906193566682,-1.9931874723128,-4.31881912665574,-0.674200854268179,-2.98541620084427,-0.448641362746798,-2.29228820578248,-0.568997694261043,-2.04096832065056,-0.727007033821906,-1.89165940415444,-0.813287462491076,-1.8943780782663,-0.79938601945048,-2.75928695360722,0.893748981083036,-7.36168309826485,6.81226333663403,-14.2142329690712,5.92829303343126,-11.0450509814945,-7.17318906772675,-15.4634327798346,-14.1650686824269,0,0,-13.3740602716631,-2.41801996147785,-11.7328648033059,-1.34013690533686,-7.27255282066051,-0.212332640339923,-3.74375457782833,0.492310959988345,-1.9145340470352,0.718470417441608,-1.04692954750271,0.858265166111437,-0.572924062358425,0.971026935915802,-0.367729619490433,0.921185215734226,-0.795935972361917,1.5976164872452,-3.22467013757444,4.7453655609936,-7.91302119041779,6.83649169904322,-10.2552874811828,2.86185335519053,-9.13918274651257,0.319553935720478,-4.97101194677043,-12.6083749018891,0,0,-11.3994385742631,-3.72970326570157,-9.67513576647661,-3.44615555090741,-6.4163641841169,-1.52263832603944,-3.90618097873039,-0.173611189838766,-2.2865718003552,0.610716270176681,-1.03448689779998,1.17931242999839,-0.243229046565148,1.45917307269519,-0.264110193801571,1.70517962281247,-1.56266938529916,3.10203148430287,-4.70315371183801,4.90551183177035,-8.08030485601785,4.23157569327941,-8.63017022557551,1.14926691665869,-8.39983101591429,-7.3068403760949,-3.37382481327018,-9.20224442149379,0,0,-10.1921704597421,-2.17863020295317,-8.99957062974454,-1.67280638526881,-6.29499936152206,-0.559606797517063,-3.65366623757154,0.610067139344665,-1.39508382690337,1.84667284321017,0.4066857743735,2.94166229877965,1.52907753841191,3.81613912433295,1.46468157736808,4.57384667461747,-0.689052142409764,5.3486455892521,-4.10411338929975,5.375202569257,-6.10273944288792,4.06573779191831,-6.47855642136574,-0.212790545507914,-3.89788654401173,-5.54068243620441,-3.97318573767825,-9.02282100871798,0,0,-8.89112009144742,-1.75473598351005,-7.98358810109607,-1.94178357784153,-5.7335310334031,-0.791075771946907,-3.08730419256267,0.978669141661157,-0.556518607512544,2.90828324814424,1.88743190065838,5.16644841955417,3.98044642193213,7.03299025709248,3.73723260133306,7.81253266051294,0.643651581545555,7.09019571576914,-2.59448857026246,5.72555430732587,-4.62034128912705,2.64566334979941,-4.76116362264088,-2.23823559194989,-3.95911617905017,-5.5434903430571,-2.17910686104165,-8.02170500343777,0,0,-7.87033367706522,-1.22454274146162,-7.15528178642603,-1.32917505858359,-4.99034517017367,0.0636578778041894,-2.25258649869556,2.03376678280847,0.879184349267916,5.04468911538947,4.8125982618335,9.13522883784503,8.30672309329725,12.8432213505951,8.11984311551782,12.7998209565135,4.5890291798803,10.0356950233413,0.207014982200462,6.34671834250071,-2.53752895361208,2.12992415020585,-2.68249269995408,-1.74184600467652,-2.52877199544741,-5.56727210760982,-1.85744446322883,-6.84807792095808,0,0,-7.16285065825673,-1.11830004084982,-6.24107410484635,-0.855614443917375,-4.17079414122304,0.460709939043909,-1.32095234114013,3.12504349196502,2.77741796712826,7.81431698361757,8.61343567431641,14.9383495263035,14.3055293603245,20.5738611088539,15.7748702188351,19.5125003885003,10.2240436259176,13.472004908326,3.17235642449373,7.22750876725991,-0.197161572727055,2.05373094681636,-1.55229302040584,-2.14587486297592,-1.5127194040067,-4.81318837222466,-1.48228491218083,-6.32615720445051,0,0,-6.12222876337682,-0.523295590810676,-5.30161485185749,-0.417013191020715,-3.34830544140596,1.19651743345617,-0.0795988057334398,4.73652103069458,5.04527214230643,11.3496772167625,13.0169863151166,21.8795735572396,23.1476975998387,30.4294639437906,25.4813106001313,28.0799057253364,16.9098705911717,18.0421736975802,7.46466204557032,8.69343237416251,2.2378904213499,2.54796867959612,0.0434360587310039,-1.74150206127206,-0.934077170130422,-4.37415005443586,-1.08265292815054,-5.52799362966994,0,0,-5.34929823303355,-0.423699428154578,-4.55210938968048,-0.0529662269282198,-2.41827358295996,2.02297064934146,1.09547015862972,6.25758487179701,6.94963051458262,14.783020541679,17.841724843609,28.3770050127719,31.3032946527219,40.0751890936172,34.8983805651292,36.0632079969546,23.7100604563934,21.907744177478,11.4547094191375,10.1514141575126,4.09283329823757,2.9726207104618,1.12899121608098,-1.29281030416132,-0.245481132012628,-3.75780593989339,-0.61569866018408,-4.72691813731035,0,0,-4.66447973814456,-0.228611200319392,-3.68615193329924,0.554766700029631,-1.57447009081125,2.77652013256966,1.97626101561355,7.54563415196117,8.55367607571043,16.6010066394379,20.5619012962998,32.0051002701971,35.634800559958,44.7926168006725,39.7480443512322,40.6210459714121,27.7760346050218,23.9407873952209,13.6668957061534,11.2730949893516,5.99029180812204,3.62072274466163,2.17988011106308,-0.710419610658846,0.4599186945361,-3.05800759030035,-0.387297937989842,-4.12768337538319,0,0,-3.8797260031406,0.132369695666057,-2.95935944741768,0.910986297612908,-0.950131124648124,3.29932498666039,2.73955405899324,8.1551453998336,9.22795054738026,16.781136625219,19.1509106950471,29.89200080725,31.9962170790814,41.6550129093571,35.7637346258816,36.210156127293,26.1470239996743,22.4726542188801,14.1718668710109,10.9206344863387,6.81669858245095,4.00163199740655,2.88906713996539,-0.232939189340868,0.845344392925199,-2.59772989411204,-0.170657450377803,-3.54435816502519,0,0,-3.19693026419554,0.279193371451584,-2.37719721890335,1.21917241276924,-0.338490517666287,3.77649105780347,2.94314794913544,7.92422768697907,7.6030193567376,14.5957155232418,14.394655753038,22.3513689754773,20.6885833238703,26.9770866577228,23.8432208215891,24.5957737395756,18.5648750810697,17.4851444274918,12.2568080179435,10.0343725894986,6.82036176851398,4.13271187577948,3.46743575510163,0.184091613332384,1.31734371607399,-1.92674115068075,0.240824987710766,-2.74921207454372,0,0,-2.77691771434229,0.394470824770451,-1.83542831987279,1.59255665370938,-0.100274466597966,3.89093848259745,2.78020042906746,7.56806913893388,5.90026602031548,10.5752368691551,7.5748900756812,10.9416305204418,6.56315908026045,8.54951448065594,5.45085826379227,10.1169562503101,8.01198761377145,10.3267899386915,8.29685703240693,7.63909589461537,6.24848700485791,3.46161606768828,3.49835999803554,0.345522294438069,1.47889274895851,-1.53323385097565,0.170123583513941,-2.41459032871398,0,0,-2.12162138685471,0.666689553342621,-1.50139196314922,1.81171155660013,0.035291862363465,3.54305335103345,1.67639903990312,5.99945544968205,3.53044278327479,6.58139932091581,1.01460291632384,1.19657654759931,-6.14241157967717,-4.99706890551033,-8.68463372337146,-3.11903414807648,-0.977999527689917,3.55131758503012,4.92267030196581,4.97850178431008,5.32818100159921,3.10830228678424,3.52239046421573,0.701410618064074,1.71295435892443,-0.985970067435119,0.45620110359323,-1.71860966674603,0,0,-1.95995612143315,0.820810270517995,-1.35113685298575,1.63286784751426,-0.00833176924697909,4.13543695644239,1.56021497833262,4.82652779337741,0.819961918704394,2.92881696272343,-3.76214893514179,-5.0089998575545,-13.3939197068162,-13.8929987847746,-15.9842531875006,-11.0187399164943,-7.00851524640666,-2.00828093932887,1.44850424712513,2.33908761246403,3.64164032130157,2.01092962160374,2.86255764490988,0.28878605599175,1.40952030662038,-0.94458006872128,0.266770041717336,-1.51690109062156,0,4.54747350886464e-13,-1.57809050308333,0.720872401599536,-1.02507396759256,2.07835699495081,-1.09484093019819,2.36197889867753,-0.0581869073562302,3.62825653548089,-0.866676692123292,0.599526780564247,-6.12520615211815,-7.75007969774833,-15.0589407929165,-16.0158195576059,-17.6027157010408,-13.4529398935356,-9.19353419666368,-4.59696205828004,-0.694047402084834,0.725160673468963,2.68570189452976,1.44233467538743,2.66644085511143,0.592874425215541,1.6075019650516,-0.287193555649537,0.479901301559039,-0.833826407902961,4.54747350886464e-13,0,-1.52287979344737,0.990903992952553,-1.85924037483028,2.39183349729274,0.458162024813191,3.26330883515038,-1.1525787242731,2.18847029956805,-2.60337544118693,-1.77250555734918,-8.02017266009489,-9.47545081230828,-15.1563844200887,-16.2208412475102,-16.885273257039,-14.4521530322668,-10.2895122787054,-6.92254050486963,-2.62745681458864,-1.80441330273879,1.05191244333355,-0.0785204283347412,1.5133695417021,-0.15464423262074,0.754918052997709,-0.766668345324888,-0.0245928387280401,-1.19227185361069,0,4.54747350886464e-13,-1.65043062755649,1.67614521395171,-1.55990237484093,-0.0606440805754573,-3.27557982364897,2.64021283276907,-1.38075371394052,1.24359025622607,-3.08921618160139,-2.38893056730285,-7.56480531537863,-9.16249303245831,-12.9836782201282,-14.5626068242314,-14.2889291794145,-12.9763940010253,-9.43326062449978,-6.86671482804422,-3.209265481888,-1.82382990246833,0.276823644737306,0.318967691197031,1.25435157689935,0.401380866145246,1.09489977182602,-0.0574608006181734,0.440875682837031,-0.186484487137932,4.54747350886464e-13,0,-2.320283854217,0.100928040180861,-0.635453870946094,5.70534137781806,-1.7878109039616,0.765766886349866,-2.76991540577137,-0.508029513300698,-4.97351044327297,-4.71753214960745,-8.1487479077623,-10.6945941340782,-12.426526573618,-14.4727912248441,-13.7514014113731,-13.2697090565016,-10.0900907230571,-8.52693166380095,-4.82726040972921,-4.32453004692479,-1.11937012747649,-2.44936331444433,0.311202562630115,-1.57158241833349,-0.11874390541243,-1.00244443068095,-0.962779740420046,-1.29222824713815,0,0,-0.927112257982117,1.53032981476827,-8.48248672250156,-1.18687293401308,-1.13315327621785,1.90850133478762,-2.80057143660724,0.0917171964802037,-3.00358856715229,-5.08716053930038,-5.81519203064545,-9.44416534394168,-9.92112281226491,-11.8500815979096,-11.0403493843451,-10.8459684607069,-8.10861630830004,-6.94984362381456,-4.05185237228125,-2.84877184280867,-1.38588799397803,-0.03514354388426,-0.728340928125363,1.22421099190706,-0.510360005471739,0.627018140811742,0.257917042963527,-0.129246640603924,0,0,-5.57100016181357,7.10444029040536,4.73280276641981,0.412024362776719,-6.49831333432394,0.525001071198858,-3.946913954298,-5.22604469542148,-3.64969794127865,-8.21541603329842,-7.56341977882585,-11.0117495702807,-11.2335955279877,-12.9633199521186,-12.1559284115401,-12.2321573902955,-9.99665211899719,-9.24284710327902,-6.44153596667729,-5.95009612466129,-3.20888305264361,-4.4177857168761,-0.565206166744247,-4.93598443435167,0.55177384614035,-4.14997138160197,-1.68346994323747,-1.57634942187724,0,0,-8.43436877128624,-13.199826170071,-10.1643835690866,8.90163891282191,-2.50759633511734,-1.91922778043954,3.21805150380987,-4.54528876815402,-0.755022988195378,-5.18693327712208,-4.94650692070627,-7.42364931546945,-7.43071565867558,-8.9750783359259,-8.13138458872618,-8.12265746900357,-6.41055651259467,-5.69438485423507,-3.43349204295282,-2.82247540938624,-1.48201267522109,0.0414733657198667,-1.98317464670617,3.2854845665679,-5.26099447095112,5.38248620067952,-5.28246472416959,0.156218909458403,0,0,14.0388899156223,20.6438129216585,-16.3720777356511,-7.94415753240719,3.00041812858308,-11.2116821548889,-1.05608043143457,-7.54199413884362,-5.61316410869676,-8.11957676262045,-8.580127120832,-10.4482178374055,-10.7394341121171,-12.0577166302164,-11.388753689419,-11.5395182110542,-10.1397569463616,-9.4675584290917,-7.59506441589474,-7.01490392264259,-5.35730134800087,-5.26430341475407,-2.99329765676339,-7.47053594349654,1.77595056792234,-14.8951467286843,4.36207543393175,-9.37328081429678,0,0,-78.5406541682487,6.83143908609418,17.7552729247345,-14.1641601661495,9.68540256936922,-2.27490529931219,1.5258623238542,-0.808597413158168,-0.348404275754547,-2.38326003997827,-2.3435390065988,-3.72607108935699,-3.83828997695309,-4.65235672892504,-3.87533800111032,-4.23302302508273,-3.03366006763372,-2.51167602006171,-1.4902718299827,-0.855989704742569,0.0898817849920306,0.338484835225245,-0.0469646807168829,3.1182379570073,-7.41536537978391,13.1480656981203,-31.4060617687655,12.6031436157273,0,0,44.5669236664608,-76.6849609946021,12.6067161621904,-13.7934596112955,-5.26285246059888,-4.59757132621053,-4.97748285067883,-5.33961611923405,-5.60687721268368,-6.82717862429308,-7.41660539308759,-8.19409000694941,-9.07161557863947,-9.30218805637651,-9.17958317325156,-9.36245464360036,-8.40159591040538,-7.70750952027811,-7.0465936333112,-5.97441034489384,-5.39073776842451,-4.59177434036974,-5.4389464733249,-3.71659819487741,-7.27122370830875,-11.5244439064072,0.159949940925799,-74.4505883997181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.8421709430404e-14,-79.0672640973371,8.36697554507711,-10.2732005820993,0.520669292773789,0.214191435356611,1.4522308563686,0.726869760804078,1.93388017774362,0.465987435370948,1.40679103036109,0.205328276298303,0.61861375433088,-0.0768503409166499,0.324995648727054,-0.109543562973641,0.488506926110404,0.401106427483086,0.928205710159943,0.826178532132246,1.812529021258,0.78696376853145,1.62721537042341,1.19326023894627,1.33840173634016,-13.0804445860909,32.2482214797598,-94.5586648640426,76.9197604855271,-2.8421709430404e-14,-5.6843418860808e-14,-17.3200341115049,-29.7846746139917,-4.93430988349684,-7.62132825325244,-6.05050695888474,-1.65888709473666,-4.63063915399084,-1.34791360439141,-3.48731380544615,-1.66918483708588,-3.28321201694223,-1.97996469221727,-3.20128529164924,-2.25975863542146,-3.0876557046289,-2.39677721472117,-3.07533166922696,-2.24450330566134,-2.9929797497914,-2.46647547706226,-2.39165124073281,-2.86710828075394,-6.02100988050671,5.98071692635057,-27.3417994103017,20.1302242600997,-17.8216148816731,-71.997073204533,-5.6843418860808e-14,0,-23.5744388140018,0.325453136548049,-16.3908477320819,0.964567365507946,-6.05614362190397,1.00612459719309,-2.06537390116523,0.981068022251407,-1.03687952553094,0.875249108659773,-0.816842275935983,0.717517212145708,-0.650799847238204,0.392645683943897,-0.43058352720584,0.426881268138686,-0.372717841313715,0.662718940926538,-0.133499154408696,0.641712639093498,-1.80994618879129,4.60181430917828,-12.3418955351723,15.7379397328094,-21.5215879269297,2.41366131826055,-1.77044792379627,-0.0910589036628835,0,0,-15.1287943241784,-10.2273901449049,-9.43453537920959,-5.95649247740005,-6.05906193566682,-1.99318747231291,-4.31881912665597,-0.674200854268292,-2.98541620084416,-0.448641362746685,-2.29228820578237,-0.568997694260929,-2.04096832065045,-0.727007033821792,-1.89165940415432,-0.813287462491189,-1.8943780782663,-0.799386019450367,-2.7592869536071,0.893748981083149,-7.36168309826485,6.81226333663403,-14.2142329690711,5.92829303343149,-11.0450509814943,-7.17318906772675,-15.4634327798345,-14.1650686824269,0,0,-13.3740602716631,-2.41801996147785,-11.7328648033059,-1.34013690533686,-7.27255282066074,-0.212332640339923,-3.74375457782855,0.492310959988117,-1.91453404703532,0.718470417441608,-1.04692954750271,0.858265166111437,-0.572924062358197,0.971026935915802,-0.36772961949066,0.921185215733999,-0.795935972361917,1.59761648724509,-3.22467013757421,4.74536556099383,-7.91302119041791,6.83649169904299,-10.2552874811828,2.86185335519031,-9.1391827465128,0.319553935720705,-4.97101194677043,-12.6083749018891,0,0,-11.3994385742628,-3.72970326570157,-9.67513576647661,-3.44615555090718,-6.41636418411713,-1.52263832603944,-3.90618097873039,-0.173611189838766,-2.28657180035543,0.610716270176681,-1.03448689779975,1.17931242999862,-0.243229046565375,1.45917307269497,-0.264110193801343,1.70517962281224,-1.56266938529916,3.10203148430287,-4.70315371183779,4.90551183177035,-8.08030485601807,4.23157569327964,-8.63017022557574,1.14926691665846,-8.39983101591429,-7.3068403760949,-3.37382481327018,-9.20224442149402,0,0,-10.1921704597419,-2.17863020295317,-8.99957062974431,-1.67280638526881,-6.29499936152206,-0.559606797516835,-3.65366623757154,0.610067139344665,-1.3950838269036,1.8466728432104,0.406685774373727,2.94166229877942,1.52907753841191,3.81613912433295,1.46468157736831,4.57384667461747,-0.689052142409992,5.34864558925233,-4.10411338929953,5.375202569257,-6.10273944288815,4.06573779191808,-6.47855642136574,-0.212790545507914,-3.89788654401173,-5.54068243620441,-3.97318573767825,-9.02282100871798,0,0,-8.89112009144742,-1.75473598351005,-7.98358810109607,-1.94178357784153,-5.73353103340287,-0.791075771946907,-3.0873041925629,0.97866914166093,-0.556518607512771,2.90828324814447,1.88743190065793,5.16644841955417,3.9804464219319,7.03299025709271,3.73723260133283,7.81253266051272,0.643651581545555,7.09019571576937,-2.59448857026246,5.72555430732587,-4.62034128912728,2.64566334979918,-4.76116362264042,-2.23823559195012,-3.95911617904972,-5.5434903430571,-2.17910686104142,-8.02170500343823,0,0,-7.87033367706522,-1.22454274146162,-7.15528178642603,-1.32917505858336,-4.99034517017367,0.0636578778037347,-2.25258649869556,2.03376678280802,0.879184349268371,5.04468911538993,4.81259826183305,9.13522883784503,8.30672309329725,12.8432213505951,8.11984311551782,12.7998209565139,4.58902917988075,10.0356950233411,0.207014982200462,6.34671834250071,-2.53752895361254,2.1299241502054,-2.68249269995454,-1.74184600467652,-2.52877199544741,-5.56727210760982,-1.85744446322838,-6.8480779209583,0,0,-7.16285065825627,-1.11830004084982,-6.24107410484589,-0.85561444391692,-4.17079414122304,0.460709939043909,-1.32095234113967,3.12504349196456,2.77741796712803,7.81431698361757,8.61343567431595,14.9383495263039,14.305529360325,20.5738611088534,15.7748702188348,19.5125003885003,10.2240436259171,13.4720049083264,3.17235642449418,7.22750876725991,-0.197161572727055,2.05373094681636,-1.5522930204063,-2.14587486297546,-1.5127194040067,-4.81318837222466,-1.48228491218083,-6.32615720445051,0,-2.27373675443232e-13,-6.12222876337682,-0.523295590811131,-5.30161485185749,-0.417013191020715,-3.34830544140596,1.19651743345617,-0.0795988057332124,4.73652103069503,5.04527214230689,11.3496772167625,13.0169863151161,21.8795735572396,23.1476975998391,30.429463943791,25.4813106001318,28.0799057253364,16.9098705911713,18.0421736975798,7.46466204556987,8.69343237416206,2.2378904213499,2.54796867959658,0.0434360587310039,-1.74150206127206,-0.934077170130422,-4.37415005443631,-1.08265292815054,-5.52799362966948,-2.27373675443232e-13,0,-5.3492982330331,-0.423699428154578,-4.55210938968048,-0.0529662269277651,-2.41827358296041,2.02297064934146,1.09547015862927,6.25758487179655,6.94963051458308,14.783020541679,17.841724843609,28.3770050127723,31.3032946527214,40.0751890936167,34.8983805651292,36.0632079969541,23.7100604563934,21.9077441774775,11.4547094191371,10.151414157513,4.09283329823711,2.9726207104618,1.12899121608052,-1.29281030416087,-0.245481132012628,-3.75780593989339,-0.615698660184535,-4.72691813731035,0,0,-4.66447973814456,-0.228611200319392,-3.68615193329924,0.554766700029177,-1.5744700908117,2.77652013256966,1.976261015614,7.54563415196162,8.55367607571043,16.6010066394379,20.5619012962998,32.0051002701971,35.634800559958,44.7926168006725,39.7480443512322,40.6210459714121,27.7760346050218,23.9407873952209,13.6668957061538,11.2730949893516,5.99029180812249,3.62072274466163,2.17988011106263,-0.710419610658846,0.4599186945361,-3.05800759030035,-0.387297937989842,-4.12768337538319,0,0,-3.8797260031406,0.132369695666057,-2.95935944741723,0.910986297612908,-0.950131124647669,3.29932498665994,2.73955405899324,8.15514539983405,9.22795054738026,16.781136625219,19.1509106950471,29.8920008072496,31.9962170790818,41.6550129093575,35.7637346258816,36.2101561272925,26.1470239996743,22.4726542188801,14.1718668710109,10.9206344863387,6.81669858245095,4.00163199740609,2.88906713996539,-0.232939189340414,0.845344392924744,-2.59772989411249,-0.170657450377803,-3.54435816502519,0,0,-3.196930264196,0.279193371451584,-2.37719721890335,1.21917241276924,-0.338490517666742,3.77649105780347,2.94314794913498,7.92422768697952,7.6030193567376,14.5957155232418,14.3946557530376,22.3513689754773,20.6885833238707,26.9770866577228,23.8432208215891,24.5957737395756,18.5648750810697,17.4851444274918,12.2568080179435,10.0343725894991,6.82036176851352,4.13271187577902,3.46743575510163,0.184091613332384,1.31734371607399,-1.9267411506803,0.240824987710766,-2.74921207454372,0,0,-2.77691771434229,0.394470824770451,-1.83542831987234,1.59255665370983,-0.100274466597511,3.8909384825979,2.78020042906701,7.56806913893342,5.90026602031503,10.5752368691551,7.57489007568165,10.9416305204409,6.56315908026045,8.54951448065549,5.45085826379272,10.1169562503101,8.01198761377191,10.3267899386919,8.29685703240739,7.63909589461537,6.24848700485836,3.46161606768874,3.49835999803508,0.345522294437615,1.47889274895897,-1.53323385097519,0.170123583513487,-2.41459032871444,0,-4.54747350886464e-13,-2.12162138685562,0.666689553342167,-1.50139196314922,1.81171155660013,0.035291862363465,3.5430533510339,1.67639903990357,5.9994554496825,3.53044278327479,6.58139932091626,1.01460291632429,1.19657654759931,-6.14241157967808,-4.99706890551033,-8.68463372337146,-3.11903414807648,-0.977999527689917,3.55131758502966,4.92267030196535,4.97850178431008,5.32818100159966,3.10830228678469,3.52239046421528,0.701410618063164,1.71295435892398,-0.985970067435119,0.456201103593685,-1.71860966674603,-4.54747350886464e-13,0,-1.95995612143224,0.820810270517995,-1.35113685298484,1.63286784751426,-0.00833176924652435,4.1354369564433,1.56021497833308,4.82652779337741,0.819961918703939,2.92881696272343,-3.76214893514179,-5.00899985755541,-13.3939197068153,-13.8929987847746,-15.9842531874997,-11.0187399164938,-7.00851524640666,-2.00828093932796,1.44850424712558,2.33908761246494,3.64164032130066,2.01092962160283,2.86255764491079,0.28878605599175,1.40952030662038,-0.94458006872128,0.266770041717336,-1.51690109062156,0,0,-1.57809050308333,0.720872401598626,-1.02507396759302,2.07835699495172,-1.09484093019819,2.36197889867708,-0.0581869073571397,3.62825653548043,-0.866676692123292,0.599526780563338,-6.12520615211815,-7.75007969774833,-15.0589407929156,-16.0158195576059,-17.6027157010408,-13.4529398935356,-9.19353419666368,-4.59696205828004,-0.694047402083925,0.725160673468963,2.6857018945293,1.44233467538743,2.66644085511234,0.592874425215996,1.6075019650516,-0.287193555650447,0.479901301559039,-0.833826407902961,0,0,-1.52287979344646,0.990903992953463,-1.85924037483028,2.39183349729274,0.458162024813191,3.26330883515038,-1.15257872427401,2.18847029956896,-2.60337544118693,-1.77250555734963,-8.0201726600958,-9.47545081230737,-15.1563844200878,-16.2208412475102,-16.8852732570399,-14.4521530322668,-10.2895122787045,-6.92254050486872,-2.62745681458955,-1.80441330273788,1.05191244333355,-0.0785204283347412,1.51336954170301,-0.15464423261983,0.754918052998164,-0.766668345323978,-0.0245928387280401,-1.19227185360978,0,0,-1.65043062755649,1.67614521395171,-1.55990237484184,-0.0606440805759121,-3.27557982364806,2.64021283276816,-1.38075371394007,1.24359025622698,-3.0892161816023,-2.38893056730285,-7.56480531537909,-9.16249303245877,-12.9836782201291,-14.5626068242309,-14.2889291794136,-12.9763940010243,-9.43326062449978,-6.86671482804513,-3.209265481888,-1.82382990246833,0.276823644738215,0.318967691197031,1.25435157689935,0.401380866145701,1.09489977182693,-0.0574608006190829,0.440875682837031,-0.186484487137022,0,-4.54747350886464e-13,-2.32028385421791,0.100928040180861,-0.635453870947003,5.70534137781806,-1.78781090396251,0.765766886348956,-2.76991540577137,-0.508029513299789,-4.97351044327252,-4.71753214960836,-8.14874790776321,-10.6945941340787,-12.426526573618,-14.472791224845,-13.751401411374,-13.2697090565025,-10.0900907230566,-8.52693166380186,-4.82726040972875,-4.3245300469257,-1.11937012747558,-2.44936331444342,0.311202562630115,-1.57158241833258,-0.11874390541243,-1.00244443068095,-0.962779740420046,-1.29222824713815,-4.54747350886464e-13,0,-0.927112257981207,1.53032981476827,-8.48248672250065,-1.18687293401399,-1.13315327621785,1.90850133478762,-2.80057143660815,0.0917171964802037,-3.0035885671532,-5.08716053929948,-5.81519203064545,-9.44416534394259,-9.92112281226582,-11.8500815979096,-11.0403493843442,-10.8459684607069,-8.10861630830004,-6.94984362381456,-4.05185237228216,-2.84877184280776,-1.38588799397803,-0.03514354388426,-0.728340928125363,1.22421099190706,-0.510360005472648,0.627018140811742,0.257917042962617,-0.129246640603924,0,0,-5.57100016181448,7.10444029040536,4.73280276642072,0.412024362777629,-6.49831333432485,0.525001071199767,-3.946913954298,-5.22604469542239,-3.64969794127956,-8.21541603329933,-7.56341977882585,-11.0117495702816,-11.2335955279868,-12.9633199521186,-12.1559284115401,-12.2321573902955,-9.99665211899719,-9.24284710327811,-6.44153596667729,-5.95009612466038,-3.2088830526427,-4.41778571687519,-0.565206166743337,-4.93598443435076,0.55177384613944,-4.14997138160197,-1.68346994323747,-1.57634942187633,0,0,-8.43436877128624,-13.199826170071,-10.1643835690857,8.90163891282191,-2.50759633511825,-1.91922778043954,3.21805150381078,-4.54528876815493,-0.755022988194469,-5.18693327712208,-4.94650692070536,-7.42364931546854,-7.43071565867558,-8.97507833592499,-8.13138458872618,-8.12265746900357,-6.41055651259558,-5.69438485423507,-3.43349204295282,-2.82247540938624,-1.48201267522109,0.0414733657198667,-1.98317464670617,3.2854845665679,-5.26099447095112,5.38248620067861,-5.28246472416959,0.156218909458403,0,0,14.0388899156233,20.6438129216585,-16.3720777356502,-7.94415753240719,3.00041812858217,-11.2116821548898,-1.05608043143548,-7.54199413884362,-5.61316410869676,-8.11957676262136,-8.580127120832,-10.4482178374064,-10.7394341121171,-12.0577166302164,-11.3887536894181,-11.5395182110542,-10.1397569463616,-9.4675584290917,-7.59506441589474,-7.01490392264259,-5.35730134800087,-5.26430341475407,-2.99329765676339,-7.47053594349563,1.77595056792234,-14.8951467286834,4.36207543393084,-9.37328081429678,0,0,-78.5406541682496,6.83143908609418,17.7552729247345,-14.1641601661495,9.68540256936922,-2.27490529931219,1.5258623238542,-0.808597413158168,-0.348404275754547,-2.38326003997918,-2.3435390065988,-3.72607108935699,-3.83828997695309,-4.65235672892595,-3.87533800110941,-4.23302302508364,-3.03366006763281,-2.51167602006171,-1.4902718299827,-0.855989704742569,0.0898817849920306,0.338484835226154,-0.0469646807177924,3.1182379570073,-7.41536537978391,13.1480656981194,-31.4060617687655,12.6031436157273,0,0,44.5669236664617,-76.6849609946012,12.6067161621904,-13.7934596112964,-5.26285246059797,-4.59757132621144,-4.97748285067792,-5.33961611923314,-5.60687721268368,-6.82717862429308,-7.4166053930885,-8.19409000694941,-9.07161557863947,-9.30218805637651,-9.17958317325156,-9.36245464360036,-8.40159591040538,-7.70750952027811,-7.04659363331211,-5.97441034489384,-5.39073776842361,-4.59177434036974,-5.4389464733249,-3.71659819487741,-7.27122370830966,-11.5244439064081,0.159949940926708,-74.450588399719,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.8421709430404e-14,-79.0672640973371,8.36697554507711,-10.2732005820993,0.520669292773789,0.214191435356611,1.4522308563686,0.726869760804078,1.93388017774362,0.465987435370948,1.40679103036109,0.205328276298303,0.61861375433088,-0.0768503409166499,0.324995648727054,-0.109543562973641,0.488506926110404,0.401106427483086,0.928205710159943,0.826178532132246,1.812529021258,0.78696376853145,1.62721537042341,1.19326023894627,1.33840173634016,-13.0804445860909,32.2482214797598,-94.5586648640426,76.9197604855271,-2.8421709430404e-14,-5.6843418860808e-14,-17.3200341115049,-29.7846746139917,-4.93430988349684,-7.62132825325244,-6.05050695888474,-1.65888709473666,-4.63063915399084,-1.34791360439141,-3.48731380544615,-1.66918483708588,-3.28321201694223,-1.97996469221727,-3.20128529164924,-2.25975863542146,-3.0876557046289,-2.39677721472117,-3.07533166922696,-2.24450330566134,-2.9929797497914,-2.46647547706226,-2.39165124073281,-2.86710828075394,-6.02100988050671,5.98071692635057,-27.3417994103017,20.1302242600997,-17.8216148816731,-71.997073204533,-5.6843418860808e-14,0,-23.5744388140018,0.325453136548049,-16.3908477320819,0.964567365507946,-6.05614362190397,1.00612459719309,-2.06537390116523,0.981068022251407,-1.03687952553094,0.875249108659773,-0.816842275935983,0.717517212145708,-0.650799847238204,0.392645683943897,-0.43058352720584,0.426881268138686,-0.372717841313715,0.662718940926538,-0.133499154408696,0.641712639093498,-1.80994618879129,4.60181430917828,-12.3418955351723,15.7379397328094,-21.5215879269297,2.41366131826055,-1.77044792379627,-0.0910589036628835,0,0,-15.1287943241784,-10.2273901449049,-9.43453537920959,-5.95649247740005,-6.05906193566682,-1.99318747231291,-4.31881912665597,-0.674200854268292,-2.98541620084416,-0.448641362746685,-2.29228820578237,-0.568997694260929,-2.04096832065045,-0.727007033821792,-1.89165940415432,-0.813287462491189,-1.8943780782663,-0.799386019450367,-2.7592869536071,0.893748981083149,-7.36168309826485,6.81226333663403,-14.2142329690711,5.92829303343149,-11.0450509814943,-7.17318906772675,-15.4634327798345,-14.1650686824269,0,0,-13.3740602716631,-2.41801996147785,-11.7328648033059,-1.34013690533686,-7.27255282066074,-0.212332640339923,-3.74375457782855,0.492310959988117,-1.91453404703532,0.718470417441608,-1.04692954750271,0.858265166111437,-0.572924062358197,0.971026935915802,-0.36772961949066,0.921185215733999,-0.795935972361917,1.59761648724509,-3.22467013757421,4.74536556099383,-7.91302119041791,6.83649169904299,-10.2552874811828,2.86185335519031,-9.1391827465128,0.319553935720705,-4.97101194677043,-12.6083749018891,0,0,-11.3994385742628,-3.72970326570157,-9.67513576647661,-3.44615555090718,-6.41636418411713,-1.52263832603944,-3.90618097873039,-0.173611189838766,-2.28657180035543,0.610716270176681,-1.03448689779975,1.17931242999862,-0.243229046565375,1.45917307269497,-0.264110193801343,1.70517962281224,-1.56266938529916,3.10203148430287,-4.70315371183779,4.90551183177035,-8.08030485601807,4.23157569327964,-8.63017022557574,1.14926691665846,-8.39983101591429,-7.3068403760949,-3.37382481327018,-9.20224442149402,0,0,-10.1921704597419,-2.17863020295317,-8.99957062974431,-1.67280638526881,-6.29499936152206,-0.559606797516835,-3.65366623757154,0.610067139344665,-1.3950838269036,1.8466728432104,0.406685774373727,2.94166229877942,1.52907753841191,3.81613912433295,1.46468157736831,4.57384667461747,-0.689052142409992,5.34864558925233,-4.10411338929953,5.375202569257,-6.10273944288815,4.06573779191808,-6.47855642136574,-0.212790545507914,-3.89788654401173,-5.54068243620441,-3.97318573767825,-9.02282100871798,0,0,-8.89112009144742,-1.75473598351005,-7.98358810109607,-1.94178357784153,-5.73353103340287,-0.791075771946907,-3.0873041925629,0.97866914166093,-0.556518607512771,2.90828324814447,1.88743190065793,5.16644841955417,3.9804464219319,7.03299025709271,3.73723260133283,7.81253266051272,0.643651581545555,7.09019571576937,-2.59448857026246,5.72555430732587,-4.62034128912728,2.64566334979918,-4.76116362264042,-2.23823559195012,-3.95911617904972,-5.5434903430571,-2.17910686104142,-8.02170500343823,0,0,-7.87033367706522,-1.22454274146162,-7.15528178642603,-1.32917505858336,-4.99034517017367,0.0636578778037347,-2.25258649869556,2.03376678280802,0.879184349268371,5.04468911538993,4.81259826183305,9.13522883784503,8.30672309329725,12.8432213505951,8.11984311551782,12.7998209565139,4.58902917988075,10.0356950233411,0.207014982200462,6.34671834250071,-2.53752895361254,2.1299241502054,-2.68249269995454,-1.74184600467652,-2.52877199544741,-5.56727210760982,-1.85744446322838,-6.8480779209583,0,0,-7.16285065825627,-1.11830004084982,-6.24107410484589,-0.85561444391692,-4.17079414122304,0.460709939043909,-1.32095234113967,3.12504349196456,2.77741796712803,7.81431698361757,8.61343567431595,14.9383495263039,14.305529360325,20.5738611088534,15.7748702188348,19.5125003885003,10.2240436259171,13.4720049083264,3.17235642449418,7.22750876725991,-0.197161572727055,2.05373094681636,-1.5522930204063,-2.14587486297546,-1.5127194040067,-4.81318837222466,-1.48228491218083,-6.32615720445051,0,-2.27373675443232e-13,-6.12222876337682,-0.523295590811131,-5.30161485185749,-0.417013191020715,-3.34830544140596,1.19651743345617,-0.0795988057332124,4.73652103069503,5.04527214230689,11.3496772167625,13.0169863151161,21.8795735572396,23.1476975998391,30.429463943791,25.4813106001318,28.0799057253364,16.9098705911713,18.0421736975798,7.46466204556987,8.69343237416206,2.2378904213499,2.54796867959658,0.0434360587310039,-1.74150206127206,-0.934077170130422,-4.37415005443631,-1.08265292815054,-5.52799362966948,-2.27373675443232e-13,0,-5.3492982330331,-0.423699428154578,-4.55210938968048,-0.0529662269277651,-2.41827358296041,2.02297064934146,1.09547015862927,6.25758487179655,6.94963051458308,14.783020541679,17.841724843609,28.3770050127723,31.3032946527214,40.0751890936167,34.8983805651292,36.0632079969541,23.7100604563934,21.9077441774775,11.4547094191371,10.151414157513,4.09283329823711,2.9726207104618,1.12899121608052,-1.29281030416087,-0.245481132012628,-3.75780593989339,-0.615698660184535,-4.72691813731035,0,0,-4.66447973814456,-0.228611200319392,-3.68615193329924,0.554766700029177,-1.5744700908117,2.77652013256966,1.976261015614,7.54563415196162,8.55367607571043,16.6010066394379,20.5619012962998,32.0051002701971,35.634800559958,44.7926168006725,39.7480443512322,40.6210459714121,27.7760346050218,23.9407873952209,13.6668957061538,11.2730949893516,5.99029180812249,3.62072274466163,2.17988011106263,-0.710419610658846,0.4599186945361,-3.05800759030035,-0.387297937989842,-4.12768337538319,0,0,-3.8797260031406,0.132369695666057,-2.95935944741723,0.910986297612908,-0.950131124647669,3.29932498665994,2.73955405899324,8.15514539983405,9.22795054738026,16.781136625219,19.1509106950471,29.8920008072496,31.9962170790818,41.6550129093575,35.7637346258816,36.2101561272925,26.1470239996743,22.4726542188801,14.1718668710109,10.9206344863387,6.81669858245095,4.00163199740609,2.88906713996539,-0.232939189340414,0.845344392924744,-2.59772989411249,-0.170657450377803,-3.54435816502519,0,0,-3.196930264196,0.279193371451584,-2.37719721890335,1.21917241276924,-0.338490517666742,3.77649105780347,2.94314794913498,7.92422768697952,7.6030193567376,14.5957155232418,14.3946557530376,22.3513689754773,20.6885833238707,26.9770866577228,23.8432208215891,24.5957737395756,18.5648750810697,17.4851444274918,12.2568080179435,10.0343725894991,6.82036176851352,4.13271187577902,3.46743575510163,0.184091613332384,1.31734371607399,-1.9267411506803,0.240824987710766,-2.74921207454372,0,0,-2.77691771434229,0.394470824770451,-1.83542831987234,1.59255665370983,-0.100274466597511,3.8909384825979,2.78020042906701,7.56806913893342,5.90026602031503,10.5752368691551,7.57489007568165,10.9416305204409,6.56315908026045,8.54951448065549,5.45085826379272,10.1169562503101,8.01198761377191,10.3267899386919,8.29685703240739,7.63909589461537,6.24848700485836,3.46161606768874,3.49835999803508,0.345522294437615,1.47889274895897,-1.53323385097519,0.170123583513487,-2.41459032871444,0,-4.54747350886464e-13,-2.12162138685562,0.666689553342167,-1.50139196314922,1.81171155660013,0.035291862363465,3.5430533510339,1.67639903990357,5.9994554496825,3.53044278327479,6.58139932091626,1.01460291632429,1.19657654759931,-6.14241157967808,-4.99706890551033,-8.68463372337146,-3.11903414807648,-0.977999527689917,3.55131758502966,4.92267030196535,4.97850178431008,5.32818100159966,3.10830228678469,3.52239046421528,0.701410618063164,1.71295435892398,-0.985970067435119,0.456201103593685,-1.71860966674603,-4.54747350886464e-13,0,-1.95995612143224,0.820810270517995,-1.35113685298484,1.63286784751426,-0.00833176924652435,4.1354369564433,1.56021497833308,4.82652779337741,0.819961918703939,2.92881696272343,-3.76214893514179,-5.00899985755541,-13.3939197068153,-13.8929987847746,-15.9842531874997,-11.0187399164938,-7.00851524640666,-2.00828093932796,1.44850424712558,2.33908761246494,3.64164032130066,2.01092962160283,2.86255764491079,0.28878605599175,1.40952030662038,-0.94458006872128,0.266770041717336,-1.51690109062156,0,0,-1.57809050308333,0.720872401598626,-1.02507396759302,2.07835699495172,-1.09484093019819,2.36197889867708,-0.0581869073571397,3.62825653548043,-0.866676692123292,0.599526780563338,-6.12520615211815,-7.75007969774833,-15.0589407929156,-16.0158195576059,-17.6027157010408,-13.4529398935356,-9.19353419666368,-4.59696205828004,-0.694047402083925,0.725160673468963,2.6857018945293,1.44233467538743,2.66644085511234,0.592874425215996,1.6075019650516,-0.287193555650447,0.479901301559039,-0.833826407902961,0,0,-1.52287979344646,0.990903992953463,-1.85924037483028,2.39183349729274,0.458162024813191,3.26330883515038,-1.15257872427401,2.18847029956896,-2.60337544118693,-1.77250555734963,-8.0201726600958,-9.47545081230737,-15.1563844200878,-16.2208412475102,-16.8852732570399,-14.4521530322668,-10.2895122787045,-6.92254050486872,-2.62745681458955,-1.80441330273788,1.05191244333355,-0.0785204283347412,1.51336954170301,-0.15464423261983,0.754918052998164,-0.766668345323978,-0.0245928387280401,-1.19227185360978,0,0,-1.65043062755649,1.67614521395171,-1.55990237484184,-0.0606440805759121,-3.27557982364806,2.64021283276816,-1.38075371394007,1.24359025622698,-3.0892161816023,-2.38893056730285,-7.56480531537909,-9.16249303245877,-12.9836782201291,-14.5626068242309,-14.2889291794136,-12.9763940010243,-9.43326062449978,-6.86671482804513,-3.209265481888,-1.82382990246833,0.276823644738215,0.318967691197031,1.25435157689935,0.401380866145701,1.09489977182693,-0.0574608006190829,0.440875682837031,-0.186484487137022,0,-4.54747350886464e-13,-2.32028385421791,0.100928040180861,-0.635453870947003,5.70534137781806,-1.78781090396251,0.765766886348956,-2.76991540577137,-0.508029513299789,-4.97351044327252,-4.71753214960836,-8.14874790776321,-10.6945941340787,-12.426526573618,-14.472791224845,-13.751401411374,-13.2697090565025,-10.0900907230566,-8.52693166380186,-4.82726040972875,-4.3245300469257,-1.11937012747558,-2.44936331444342,0.311202562630115,-1.57158241833258,-0.11874390541243,-1.00244443068095,-0.962779740420046,-1.29222824713815,-4.54747350886464e-13,0,-0.927112257981207,1.53032981476827,-8.48248672250065,-1.18687293401399,-1.13315327621785,1.90850133478762,-2.80057143660815,0.0917171964802037,-3.0035885671532,-5.08716053929948,-5.81519203064545,-9.44416534394259,-9.92112281226582,-11.8500815979096,-11.0403493843442,-10.8459684607069,-8.10861630830004,-6.94984362381456,-4.05185237228216,-2.84877184280776,-1.38588799397803,-0.03514354388426,-0.728340928125363,1.22421099190706,-0.510360005472648,0.627018140811742,0.257917042962617,-0.129246640603924,0,0,-5.57100016181448,7.10444029040536,4.73280276642072,0.412024362777629,-6.49831333432485,0.525001071199767,-3.946913954298,-5.22604469542239,-3.64969794127956,-8.21541603329933,-7.56341977882585,-11.0117495702816,-11.2335955279868,-12.9633199521186,-12.1559284115401,-12.2321573902955,-9.99665211899719,-9.24284710327811,-6.44153596667729,-5.95009612466038,-3.2088830526427,-4.41778571687519,-0.565206166743337,-4.93598443435076,0.55177384613944,-4.14997138160197,-1.68346994323747,-1.57634942187633,0,0,-8.43436877128624,-13.199826170071,-10.1643835690857,8.90163891282191,-2.50759633511825,-1.91922778043954,3.21805150381078,-4.54528876815493,-0.755022988194469,-5.18693327712208,-4.94650692070536,-7.42364931546854,-7.43071565867558,-8.97507833592499,-8.13138458872618,-8.12265746900357,-6.41055651259558,-5.69438485423507,-3.43349204295282,-2.82247540938624,-1.48201267522109,0.0414733657198667,-1.98317464670617,3.2854845665679,-5.26099447095112,5.38248620067861,-5.28246472416959,0.156218909458403,0,0,14.0388899156233,20.6438129216585,-16.3720777356502,-7.94415753240719,3.00041812858217,-11.2116821548898,-1.05608043143548,-7.54199413884362,-5.61316410869676,-8.11957676262136,-8.580127120832,-10.4482178374064,-10.7394341121171,-12.0577166302164,-11.3887536894181,-11.5395182110542,-10.1397569463616,-9.4675584290917,-7.59506441589474,-7.01490392264259,-5.35730134800087,-5.26430341475407,-2.99329765676339,-7.47053594349563,1.77595056792234,-14.8951467286834,4.36207543393084,-9.37328081429678,0,0,-78.5406541682496,6.83143908609418,17.7552729247345,-14.1641601661495,9.68540256936922,-2.27490529931219,1.5258623238542,-0.808597413158168,-0.348404275754547,-2.38326003997918,-2.3435390065988,-3.72607108935699,-3.83828997695309,-4.65235672892595,-3.87533800110941,-4.23302302508364,-3.03366006763281,-2.51167602006171,-1.4902718299827,-0.855989704742569,0.0898817849920306,0.338484835226154,-0.0469646807177924,3.1182379570073,-7.41536537978391,13.1480656981194,-31.4060617687655,12.6031436157273,0,0,44.5669236664617,-76.6849609946012,12.6067161621904,-13.7934596112964,-5.26285246059797,-4.59757132621144,-4.97748285067792,-5.33961611923314,-5.60687721268368,-6.82717862429308,-7.4166053930885,-8.19409000694941,-9.07161557863947,-9.30218805637651,-9.17958317325156,-9.36245464360036,-8.40159591040538,-7.70750952027811,-7.04659363331211,-5.97441034489384,-5.39073776842361,-4.59177434036974,-5.4389464733249,-3.71659819487741,-7.27122370830966,-11.5244439064081,0.159949940926708,-74.450588399719,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.8421709430404e-14,-79.067264097337,8.36697554507711,-10.2732005820993,0.520669292773817,0.214191435356582,1.45223085636857,0.726869760804078,1.93388017774359,0.46598743537092,1.40679103036106,0.205328276298332,0.61861375433088,-0.0768503409166499,0.324995648727025,-0.109543562973641,0.488506926110375,0.401106427483086,0.928205710159972,0.826178532132275,1.81252902125797,0.786963768531422,1.62721537042339,1.19326023894629,1.33840173634016,-13.0804445860908,32.2482214797598,-94.5586648640426,76.9197604855271,-2.8421709430404e-14,-5.6843418860808e-14,-17.320034111505,-29.7846746139918,-4.93430988349684,-7.62132825325244,-6.05050695888468,-1.6588870947366,-4.63063915399078,-1.34791360439129,-3.48731380544604,-1.66918483708588,-3.28321201694217,-1.97996469221715,-3.20128529164919,-2.25975863542141,-3.08765570462884,-2.39677721472123,-3.07533166922707,-2.24450330566145,-2.99297974979146,-2.46647547706237,-2.39165124073276,-2.86710828075383,-6.0210098805066,5.98071692635057,-27.3417994103019,20.1302242600996,-17.8216148816732,-71.997073204533,-5.6843418860808e-14,0,-23.5744388140018,0.325453136547935,-16.3908477320817,0.964567365507946,-6.05614362190408,1.00612459719321,-2.06537390116534,0.981068022251407,-1.03687952553082,0.875249108659773,-0.816842275935983,0.717517212145822,-0.65079984723809,0.392645683943897,-0.43058352720584,0.426881268138686,-0.372717841313715,0.662718940926425,-0.13349915440881,0.641712639093612,-1.8099461887914,4.60181430917828,-12.3418955351723,15.7379397328094,-21.5215879269298,2.41366131826067,-1.77044792379627,-0.0910589036627698,0,0,-15.1287943241786,-10.227390144905,-9.43453537920948,-5.95649247740016,-6.05906193566682,-1.9931874723128,-4.31881912665574,-0.674200854268179,-2.98541620084427,-0.448641362746798,-2.29228820578248,-0.568997694261043,-2.04096832065056,-0.727007033821906,-1.89165940415444,-0.813287462491076,-1.8943780782663,-0.79938601945048,-2.75928695360722,0.893748981083036,-7.36168309826485,6.81226333663403,-14.2142329690712,5.92829303343126,-11.0450509814945,-7.17318906772675,-15.4634327798346,-14.1650686824269,0,0,-13.3740602716631,-2.41801996147785,-11.7328648033059,-1.34013690533686,-7.27255282066051,-0.212332640339923,-3.74375457782833,0.492310959988345,-1.9145340470352,0.718470417441608,-1.04692954750271,0.858265166111437,-0.572924062358425,0.971026935915802,-0.367729619490433,0.921185215734226,-0.795935972361917,1.5976164872452,-3.22467013757444,4.7453655609936,-7.91302119041779,6.83649169904322,-10.2552874811828,2.86185335519053,-9.13918274651257,0.319553935720478,-4.97101194677043,-12.6083749018891,0,0,-11.3994385742631,-3.72970326570157,-9.67513576647661,-3.44615555090741,-6.4163641841169,-1.52263832603944,-3.90618097873039,-0.173611189838766,-2.2865718003552,0.610716270176681,-1.03448689779998,1.17931242999839,-0.243229046565148,1.45917307269519,-0.264110193801571,1.70517962281247,-1.56266938529916,3.10203148430287,-4.70315371183801,4.90551183177035,-8.08030485601785,4.23157569327941,-8.63017022557551,1.14926691665869,-8.39983101591429,-7.3068403760949,-3.37382481327018,-9.20224442149379,0,0,-10.1921704597421,-2.17863020295317,-8.99957062974454,-1.67280638526881,-6.29499936152206,-0.559606797517063,-3.65366623757154,0.610067139344665,-1.39508382690337,1.84667284321017,0.4066857743735,2.94166229877965,1.52907753841191,3.81613912433295,1.46468157736808,4.57384667461747,-0.689052142409764,5.3486455892521,-4.10411338929975,5.375202569257,-6.10273944288792,4.06573779191831,-6.47855642136574,-0.212790545507914,-3.89788654401173,-5.54068243620441,-3.97318573767825,-9.02282100871798,0,0,-8.89112009144742,-1.75473598351005,-7.98358810109607,-1.94178357784153,-5.7335310334031,-0.791075771946907,-3.08730419256267,0.978669141661157,-0.556518607512544,2.90828324814424,1.88743190065838,5.16644841955417,3.98044642193213,7.03299025709248,3.73723260133306,7.81253266051294,0.643651581545555,7.09019571576914,-2.59448857026246,5.72555430732587,-4.62034128912705,2.64566334979941,-4.76116362264088,-2.23823559194989,-3.95911617905017,-5.5434903430571,-2.17910686104165,-8.02170500343777,0,0,-7.87033367706522,-1.22454274146162,-7.15528178642603,-1.32917505858359,-4.99034517017367,0.0636578778041894,-2.25258649869556,2.03376678280847,0.879184349267916,5.04468911538947,4.8125982618335,9.13522883784503,8.30672309329725,12.8432213505951,8.11984311551782,12.7998209565135,4.5890291798803,10.0356950233413,0.207014982200462,6.34671834250071,-2.53752895361208,2.12992415020585,-2.68249269995408,-1.74184600467652,-2.52877199544741,-5.56727210760982,-1.85744446322883,-6.84807792095808,0,0,-7.16285065825673,-1.11830004084982,-6.24107410484635,-0.855614443917375,-4.17079414122304,0.460709939043909,-1.32095234114013,3.12504349196502,2.77741796712826,7.81431698361757,8.61343567431641,14.9383495263035,14.3055293603245,20.5738611088539,15.7748702188351,19.5125003885003,10.2240436259176,13.472004908326,3.17235642449373,7.22750876725991,-0.197161572727055,2.05373094681636,-1.55229302040584,-2.14587486297592,-1.5127194040067,-4.81318837222466,-1.48228491218083,-6.32615720445051,0,0,-6.12222876337682,-0.523295590810676,-5.30161485185749,-0.417013191020715,-3.34830544140596,1.19651743345617,-0.0795988057334398,4.73652103069458,5.04527214230643,11.3496772167625,13.0169863151166,21.8795735572396,23.1476975998387,30.4294639437906,25.4813106001313,28.0799057253364,16.9098705911717,18.0421736975802,7.46466204557032,8.69343237416251,2.2378904213499,2.54796867959612,0.0434360587310039,-1.74150206127206,-0.934077170130422,-4.37415005443586,-1.08265292815054,-5.52799362966994,0,0,-5.34929823303355,-0.423699428154578,-4.55210938968048,-0.0529662269282198,-2.41827358295996,2.02297064934146,1.09547015862972,6.25758487179701,6.94963051458262,14.783020541679,17.841724843609,28.3770050127719,31.3032946527219,40.0751890936172,34.8983805651292,36.0632079969546,23.7100604563934,21.907744177478,11.4547094191375,10.1514141575126,4.09283329823757,2.9726207104618,1.12899121608098,-1.29281030416132,-0.245481132012628,-3.75780593989339,-0.61569866018408,-4.72691813731035,0,0,-4.66447973814456,-0.228611200319392,-3.68615193329924,0.554766700029631,-1.57447009081125,2.77652013256966,1.97626101561355,7.54563415196117,8.55367607571043,16.6010066394379,20.5619012962998,32.0051002701971,35.634800559958,44.7926168006725,39.7480443512322,40.6210459714121,27.7760346050218,23.9407873952209,13.6668957061534,11.2730949893516,5.99029180812204,3.62072274466163,2.17988011106308,-0.710419610658846,0.4599186945361,-3.05800759030035,-0.387297937989842,-4.12768337538319,0,0,-3.8797260031406,0.132369695666057,-2.95935944741768,0.910986297612908,-0.950131124648124,3.29932498666039,2.73955405899324,8.1551453998336,9.22795054738026,16.781136625219,19.1509106950471,29.89200080725,31.9962170790814,41.6550129093571,35.7637346258816,36.210156127293,26.1470239996743,22.4726542188801,14.1718668710109,10.9206344863387,6.81669858245095,4.00163199740655,2.88906713996539,-0.232939189340868,0.845344392925199,-2.59772989411204,-0.170657450377803,-3.54435816502519,0,0,-3.19693026419554,0.279193371451584,-2.37719721890335,1.21917241276924,-0.338490517666287,3.77649105780347,2.94314794913544,7.92422768697907,7.6030193567376,14.5957155232418,14.394655753038,22.3513689754773,20.6885833238703,26.9770866577228,23.8432208215891,24.5957737395756,18.5648750810697,17.4851444274918,12.2568080179435,10.0343725894986,6.82036176851398,4.13271187577948,3.46743575510163,0.184091613332384,1.31734371607399,-1.92674115068075,0.240824987710766,-2.74921207454372,0,0,-2.77691771434229,0.394470824770451,-1.83542831987279,1.59255665370938,-0.100274466597966,3.89093848259745,2.78020042906746,7.56806913893388,5.90026602031548,10.5752368691551,7.5748900756812,10.9416305204418,6.56315908026045,8.54951448065594,5.45085826379227,10.1169562503101,8.01198761377145,10.3267899386915,8.29685703240693,7.63909589461537,6.24848700485791,3.46161606768828,3.49835999803554,0.345522294438069,1.47889274895851,-1.53323385097565,0.170123583513941,-2.41459032871398,0,0,-2.12162138685471,0.666689553342621,-1.50139196314922,1.81171155660013,0.035291862363465,3.54305335103345,1.67639903990312,5.99945544968205,3.53044278327479,6.58139932091581,1.01460291632384,1.19657654759931,-6.14241157967717,-4.99706890551033,-8.68463372337146,-3.11903414807648,-0.977999527689917,3.55131758503012,4.92267030196581,4.97850178431008,5.32818100159921,3.10830228678424,3.52239046421573,0.701410618064074,1.71295435892443,-0.985970067435119,0.45620110359323,-1.71860966674603,0,0,-1.95995612143315,0.820810270517995,-1.35113685298575,1.63286784751426,-0.00833176924697909,4.13543695644239,1.56021497833262,4.82652779337741,0.819961918704394,2.92881696272343,-3.76214893514179,-5.0089998575545,-13.3939197068162,-13.8929987847746,-15.9842531875006,-11.0187399164943,-7.00851524640666,-2.00828093932887,1.44850424712513,2.33908761246403,3.64164032130157,2.01092962160374,2.86255764490988,0.28878605599175,1.40952030662038,-0.94458006872128,0.266770041717336,-1.51690109062156,0,4.54747350886464e-13,-1.57809050308333,0.720872401599536,-1.02507396759256,2.07835699495081,-1.09484093019819,2.36197889867753,-0.0581869073562302,3.62825653548089,-0.866676692123292,0.599526780564247,-6.12520615211815,-7.75007969774833,-15.0589407929165,-16.0158195576059,-17.6027157010408,-13.4529398935356,-9.19353419666368,-4.59696205828004,-0.694047402084834,0.725160673468963,2.68570189452976,1.44233467538743,2.66644085511143,0.592874425215541,1.6075019650516,-0.287193555649537,0.479901301559039,-0.833826407902961,4.54747350886464e-13,0,-1.52287979344737,0.990903992952553,-1.85924037483028,2.39183349729274,0.458162024813191,3.26330883515038,-1.1525787242731,2.18847029956805,-2.60337544118693,-1.77250555734918,-8.02017266009489,-9.47545081230828,-15.1563844200887,-16.2208412475102,-16.885273257039,-14.4521530322668,-10.2895122787054,-6.92254050486963,-2.62745681458864,-1.80441330273879,1.05191244333355,-0.0785204283347412,1.5133695417021,-0.15464423262074,0.754918052997709,-0.766668345324888,-0.0245928387280401,-1.19227185361069,0,4.54747350886464e-13,-1.65043062755649,1.67614521395171,-1.55990237484093,-0.0606440805754573,-3.27557982364897,2.64021283276907,-1.38075371394052,1.24359025622607,-3.08921618160139,-2.38893056730285,-7.56480531537863,-9.16249303245831,-12.9836782201282,-14.5626068242314,-14.2889291794145,-12.9763940010253,-9.43326062449978,-6.86671482804422,-3.209265481888,-1.82382990246833,0.276823644737306,0.318967691197031,1.25435157689935,0.401380866145246,1.09489977182602,-0.0574608006181734,0.440875682837031,-0.186484487137932,4.54747350886464e-13,0,-2.320283854217,0.100928040180861,-0.635453870946094,5.70534137781806,-1.7878109039616,0.765766886349866,-2.76991540577137,-0.508029513300698,-4.97351044327297,-4.71753214960745,-8.1487479077623,-10.6945941340782,-12.426526573618,-14.4727912248441,-13.7514014113731,-13.2697090565016,-10.0900907230571,-8.52693166380095,-4.82726040972921,-4.32453004692479,-1.11937012747649,-2.44936331444433,0.311202562630115,-1.57158241833349,-0.11874390541243,-1.00244443068095,-0.962779740420046,-1.29222824713815,0,0,-0.927112257982117,1.53032981476827,-8.48248672250156,-1.18687293401308,-1.13315327621785,1.90850133478762,-2.80057143660724,0.0917171964802037,-3.00358856715229,-5.08716053930038,-5.81519203064545,-9.44416534394168,-9.92112281226491,-11.8500815979096,-11.0403493843451,-10.8459684607069,-8.10861630830004,-6.94984362381456,-4.05185237228125,-2.84877184280867,-1.38588799397803,-0.03514354388426,-0.728340928125363,1.22421099190706,-0.510360005471739,0.627018140811742,0.257917042963527,-0.129246640603924,0,0,-5.57100016181357,7.10444029040536,4.73280276641981,0.412024362776719,-6.49831333432394,0.525001071198858,-3.946913954298,-5.22604469542148,-3.64969794127865,-8.21541603329842,-7.56341977882585,-11.0117495702807,-11.2335955279877,-12.9633199521186,-12.1559284115401,-12.2321573902955,-9.99665211899719,-9.24284710327902,-6.44153596667729,-5.95009612466129,-3.20888305264361,-4.4177857168761,-0.565206166744247,-4.93598443435167,0.55177384614035,-4.14997138160197,-1.68346994323747,-1.57634942187724,0,0,-8.43436877128624,-13.199826170071,-10.1643835690866,8.90163891282191,-2.50759633511734,-1.91922778043954,3.21805150380987,-4.54528876815402,-0.755022988195378,-5.18693327712208,-4.94650692070627,-7.42364931546945,-7.43071565867558,-8.9750783359259,-8.13138458872618,-8.12265746900357,-6.41055651259467,-5.69438485423507,-3.43349204295282,-2.82247540938624,-1.48201267522109,0.0414733657198667,-1.98317464670617,3.2854845665679,-5.26099447095112,5.38248620067952,-5.28246472416959,0.156218909458403,0,0,14.0388899156223,20.6438129216585,-16.3720777356511,-7.94415753240719,3.00041812858308,-11.2116821548889,-1.05608043143457,-7.54199413884362,-5.61316410869676,-8.11957676262045,-8.580127120832,-10.4482178374055,-10.7394341121171,-12.0577166302164,-11.388753689419,-11.5395182110542,-10.1397569463616,-9.4675584290917,-7.59506441589474,-7.01490392264259,-5.35730134800087,-5.26430341475407,-2.99329765676339,-7.47053594349654,1.77595056792234,-14.8951467286843,4.36207543393175,-9.37328081429678,0,0,-78.5406541682487,6.83143908609418,17.7552729247345,-14.1641601661495,9.68540256936922,-2.27490529931219,1.5258623238542,-0.808597413158168,-0.348404275754547,-2.38326003997827,-2.3435390065988,-3.72607108935699,-3.83828997695309,-4.65235672892504,-3.87533800111032,-4.23302302508273,-3.03366006763372,-2.51167602006171,-1.4902718299827,-0.855989704742569,0.0898817849920306,0.338484835225245,-0.0469646807168829,3.1182379570073,-7.41536537978391,13.1480656981203,-31.4060617687655,12.6031436157273,0,0,44.5669236664608,-76.6849609946021,12.6067161621904,-13.7934596112955,-5.26285246059888,-4.59757132621053,-4.97748285067883,-5.33961611923405,-5.60687721268368,-6.82717862429308,-7.41660539308759,-8.19409000694941,-9.07161557863947,-9.30218805637651,-9.17958317325156,-9.36245464360036,-8.40159591040538,-7.70750952027811,-7.0465936333112,-5.97441034489384,-5.39073776842451,-4.59177434036974,-5.4389464733249,-3.71659819487741,-7.27122370830875,-11.5244439064072,0.159949940925799,-74.4505883997181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive1110_field13":[100,134.131739906419,90.916878092952,104.465765189065,99.4302753731454,102.055116571753,100.576493588447,101.387715519839,100.656233212944,101.140011317501,100.532669917565,100.806770516344,100.392246425801,100.62587431995,100.254958156751,100.605843974846,100.330456332905,100.674840873818,100.532253554866,100.903928277525,100.712999946397,101.089124133274,100.901298421919,101.185985331933,100.546031527847,101.745034853898,98.338088929746,108.108608328707,65.8743662956103,99.8629534754574,-71.4362104116162,117.97633395932,90.5717877259666,104.81985775758,99.5202171684181,100.72328317754,100.182144757315,100.101306097006,99.8734065326246,99.9190875882907,99.7671044815703,99.8482660470873,99.7040310091259,99.7961981485546,99.683133479597,99.7352497236133,99.6851823679209,99.7704292878752,99.7079096857455,99.8280415004616,99.8341087447767,99.9774261577973,99.901237478347,100.61442050321,100.154299377326,100.628698226534,103.424935125881,89.7090264497561,126.118341361177,-71.436153887078,82.8521904246864,87.9187049737028,100.187218595318,98.2305021751916,101.43736115567,100.794949635394,100.97105453107,101.006941313298,100.851629340099,100.884755860899,100.749388164902,100.747129142889,100.618636865433,100.643165147576,100.583424878882,100.651723165908,100.614922683246,100.732349376606,100.683676504779,100.847698519099,100.718951436692,101.12279559779,100.372576203623,101.828779223699,99.2578677473093,102.290227953043,98.2952843963208,94.754904504599,125.653908159734,82.8521892889234,99.390662287961,96.356198369595,95.4184354710976,99.7626422999685,98.9157817291054,100.154748675409,100.080933299993,100.181762929734,100.229587494872,100.133814978942,100.111401332132,100.050476980355,100.031198934383,100.019353263898,99.9887290735416,99.999648036674,99.9674077196798,100.044549283572,99.9876443584901,100.219248542657,99.9175705003939,100.629723502978,99.5363363801265,100.821094214168,99.7053444831498,98.3854844719899,103.773123337913,86.2701410242034,95.3133382031466,99.390663121385,97.9004525814636,96.7647828602682,98.6774734365907,98.0934807463824,100.121923242208,99.7433156026002,100.527436798261,100.289293348384,100.4710571258,100.34936211608,100.409098828089,100.326504154765,100.337347287408,100.26190490484,100.25143510975,100.268958738518,100.244953819894,100.38355126744,100.246025123391,100.616602859527,100.038826448924,100.821442024229,99.9660904670481,100.300577759501,101.437376531555,97.1219623187366,103.067277604327,99.5591491883034,97.2555968904898,97.9004520469271,99.6854085926591,97.3357173711648,98.4775896316453,98.7060410436907,99.3813642725123,99.6273961481456,99.9670390364719,99.9523256680724,100.191527053047,100.075528390321,100.18085774649,100.013197901923,100.036181199534,99.9443532437364,99.9448529229233,99.9827834047814,99.939027125998,100.117804205346,99.8731274947504,100.319444905628,99.8632914870917,100.2901405382,100.491513655146,98.9006471708669,101.276307251769,97.4461733345677,98.8062490552752,97.7176600235182,99.3157306928682,99.6854086706744,99.8161033611625,98.3549626584483,99.2048780047207,98.6709841665897,99.6508156963686,99.3895715820866,100.10878661031,99.9137123955533,100.259001313314,100.019207144954,100.136362734277,99.9504000663805,99.975804509532,99.8852429627339,99.8782111325606,99.8897259102274,99.8141855064153,100.071012770861,99.8607532472827,100.24338883434,100.220937512633,99.7813039819351,100.757644571818,98.8963180933243,100.886022083602,99.1213270272357,100.2635716141,98.2036801796998,98.2959784412106,99.8161034730347,99.8624494295185,98.4611165180747,99.3323451382705,98.7378069347291,99.5892650173671,99.4261580393955,99.9680886096279,99.7555561997506,100.038048650397,99.8186617791786,99.9401375180362,99.7285998569056,99.7153208732849,99.5083576126325,99.4571875975784,99.5234881941699,99.4596466861788,99.7793999565798,99.8079982839403,99.7857925733371,100.215892687755,99.3540797823485,100.633579268643,99.0535378979469,100.300183241722,98.5381319497989,99.6436646949136,99.4180687068406,98.8596014945008,99.8624492469798,99.9175688478176,98.706633157205,99.5751914879804,99.0108952798792,99.7549734367607,99.3802345711616,99.9235181161174,99.6603866913679,100.006549620634,99.7577524074865,99.8472958662262,99.4726489432943,99.3529886760675,99.0992546898477,98.9605064914186,99.08433752152,99.1874178556118,99.3436912773778,99.6895004297357,99.449246518499,100.286429923307,99.4127268969907,100.577472266397,99.1997530690776,100.344008612577,99.2466696709867,99.3559895800511,99.2603699520103,98.9298487945257,99.9175689061364,100.030576542262,99.000557157121,99.7687022527883,99.0606844687348,99.720588854994,99.3532106762481,99.9027457203813,99.6693114804724,99.9699881967129,99.6174327777391,99.6194379960252,99.1645452701702,98.8392334155091,98.4386324288189,98.2401542182393,98.247726844068,98.5991114051693,98.7959557265841,99.5502175417997,99.3032258779655,100.257549071874,99.2972827860278,100.331555709498,99.2388962713283,99.9536539617796,99.4171854906691,99.4965952717634,99.5676324625658,99.1624530327052,100.030576614896,100.057855360208,99.0818567512087,99.7873075948394,99.1427597892551,99.8194360301145,99.4819412373712,99.9831522434427,99.6583129066753,99.9396543181292,99.6040554967061,99.5321572229385,98.9513308063183,98.3448085454286,97.5321935555835,97.1319027676549,97.1026525457444,97.9668706986051,98.3726577020094,99.4965754953463,99.1807754243091,100.182839702222,99.396665241907,100.278476941685,99.5359248586237,99.913719255017,99.5312670800339,99.4772122937652,99.7394547191033,99.2403660746455,100.057855232506,100.062390835419,99.168680492768,99.9014173737326,99.3378346973117,99.9369204342196,99.5177258584403,99.9840406841571,99.7253328641698,100.042773532506,99.7888482621462,99.6850299549178,98.87217863412,97.9050072363865,96.5043505059909,96.0440661349983,95.8773588516536,97.1709838288854,98.0219112543663,99.4364645426247,99.3122170219344,100.27809683159,99.6289187200007,100.21633128383,99.6452850549276,99.8950563881287,99.7521351818815,99.5163929950987,99.7776334437557,99.3137426866871,100.062390882957,100.142357265003,99.3785519743592,100.033472779813,99.4112065336722,99.9556697439923,99.6042314886372,100.108444815819,99.9541759506295,100.328561238413,100.121277463963,100.117429271569,99.2688219048735,98.2342198441687,96.305315726453,95.254243214145,95.2878083667958,96.7006236325056,97.9615423895445,99.8598059480877,99.7970576961488,100.580527264358,99.9320714908229,100.293048094628,99.8694099054687,99.88571424875,99.8266406852006,99.5572515356476,99.8831716353467,99.4813172573773,100.142357316546,100.165574567841,99.4326216583641,100.018148140209,99.4916609619078,100.063122963241,99.801964766979,100.296587418486,100.163284102012,100.635784449366,100.653200792533,100.971514067136,100.382778947133,99.3782674371853,97.5963665215597,96.2352730049512,95.7329594039576,97.7122830016947,98.7593524682114,100.633561024971,100.53728546001,100.961898633376,100.345984258089,100.436973328488,100.075898096898,99.9594256486271,99.9691909505861,99.6946904633545,100.0119516842,99.5473565766436,100.165574476137,100.168447528162,99.5118162295084,100.11344464507,99.6838326439014,100.200748111976,99.9215258139693,100.412152959768,100.402433917192,101.047983658851,101.319759462225,101.945584903453,101.831466568865,101.279888030893,99.672347226304,99.0422197717516,98.2418993138889,99.5992849428116,100.440662995506,101.614661308285,101.401151577486,101.500726559647,100.774981259399,100.634375983712,100.284555725354,100.084068957586,100.114537981962,99.7478748567504,100.028418104116,99.5995366400671,100.168447562107,100.237554320969,99.6829138433694,100.215755379566,99.7688472939996,100.235577047026,100.042943503393,100.592187034014,100.682240632644,101.356614993992,101.730703259148,102.47961783321,102.689877478368,102.878759184704,101.790653294783,101.352778959575,100.737350920127,101.66108509236,101.901969076597,102.641786986918,102.047913840415,101.915905080882,101.144540447853,100.838848377469,100.512725973442,100.18707980281,100.203678146016,99.8295209741337,100.128096005624,99.7548399627594,100.237554340649,100.255536054412,99.7494945376032,100.203275614986,99.8525081041905,100.340584393983,100.222493814992,100.73643861804,100.845087816699,101.480039534686,101.812283496727,102.60439428753,102.623998333676,102.926932891354,101.944777741159,101.902570798224,101.300065341489,102.179767383356,102.333512457415,102.879810816394,102.276925754223,102.009952149806,101.347676890053,100.953847689435,100.631824385796,100.2614127033,100.313373212383,99.9579697652699,100.21812118951,99.8090108369871,100.255535986822,100.272614483795,99.8152464183821,100.282970332063,100.012787548327,100.450215831735,100.327329380741,100.735716696415,100.788162907601,101.437696919847,101.615531202299,102.191339318082,101.782200194867,101.656989553276,100.567809791871,100.330496526959,100.184203564247,101.178626157828,101.472327804752,102.271965149775,102.015680696653,101.891680317197,101.365711526182,100.987514638467,100.765115891667,100.389283174007,100.439749454624,100.035610095704,100.254582026786,99.8787964367816,100.272614515046,100.31401144882,99.9715213896034,100.361633113778,100.089618696103,100.407932946503,100.346165962975,100.876315475779,100.923134657495,101.378619317003,101.272890113061,101.498474435362,100.765385380314,100.251682754268,98.9397749733517,98.6848025896083,98.2278702236402,99.6274277640771,100.272086637298,101.294628781187,101.429688866913,101.500357810354,101.252237257948,100.930723153974,100.795666768564,100.40481815077,100.448041698845,100.071297560907,100.303404777904,99.9869150659081,100.314011474243,100.361062927542,100.023999657728,100.32143558857,100.164145113884,100.533261725433,100.359315460266,100.681042592475,100.68745244041,101.131480213188,100.859052196938,101.063192870051,100.113123320506,99.6055423951909,98.0019339827332,97.8559921985239,97.4899389488994,98.5692837351587,99.4600426705134,100.530276920021,100.929352737975,101.14624640133,101.1080091323,100.869097702878,100.797661233383,100.44334587557,100.549464695144,100.211256004165,100.406537828551,100.079600120194,100.361062882052,100.323293522462,100.121537680813,100.378661768526,100.176520523848,100.57408364298,100.667456345061,100.899311771491,100.553304928381,100.978316043205,100.524571869505,100.67389493304,99.6112126848473,99.2609987070196,97.9359903385996,97.7108488775179,97.4880653118875,98.3156050983054,99.0019840831586,99.9694966722525,100.472685326736,100.73499090944,100.835031581828,100.660640336349,100.722127294611,100.424623673613,100.530567209503,100.20532848775,100.368148852772,100.069117835538,100.323293545144,100.443762807028,100.191347006146,100.562808754134,100.428729655074,100.201650248953,99.9647434937855,100.697355517173,100.50538272383,100.908604958321,100.29150561644,100.534033637583,99.493322461056,99.3381035488141,98.3117110496237,98.1865432822321,97.9057347116697,98.5417577367071,99.0654825690652,99.7967258531793,100.264597718105,100.543823410993,100.739226206562,100.661867938743,100.75068296188,100.49031645406,100.622004031232,100.301792874458,100.533477454211,100.282503372808,100.443762828547,100.422459099205,100.36458716726,100.118423083879,100.50680154247,101.343568808743,100.645264488041,100.661167121485,100.167097202336,100.710601734382,99.8115858023833,100.245439161934,99.3098826723552,99.2154524016897,98.4559899770465,98.3842633778753,98.2238630777291,98.5866730805389,99.0108618001857,99.5144960647115,99.9827910578427,100.177855466549,100.499699290233,100.349338172206,100.584200274329,100.302712556266,100.518199559277,100.314355379378,100.412083855749,100.248046259847,100.422459023893,100.484164863074,100.711424508844,100.812133101697,99.3089119404427,99.7556524936383,100.352368809792,101.056170532779,99.959911107091,100.988546859401,99.9828569979032,100.237663788288,99.5660242362265,99.3986106737514,98.9251154015268,98.8072166556776,98.7472960599511,98.9737552930074,99.2947663593572,99.6813086631923,100.062137682685,100.268544466797,100.475975092279,100.5356563004,100.5989264486,100.642117328562,100.678116907564,100.550151486666,100.858382541634,100.3638395897,100.484164974648,100.463234864489,100.001948204879,101.793302221227,102.72143668566,101.164925022027,99.1372566444573,101.076948177251,99.4831360168884,100.240640503532,99.6888321662699,99.6562654349122,99.3231828519137,99.072299830825,98.7884774401959,98.6773143611631,98.629452413655,98.7883053707772,99.0585923996944,99.2883673865558,99.6589564023058,99.7613058070973,100.154921615463,99.9635686988907,100.504790279062,99.9650833307402,100.732682225295,100.163957062334,100.694241475483,100.808273960596,100.463234870681,102.590892900591,101.269892154213,97.0196389345629,98.0348684611929,103.045658242119,99.7333707300732,101.184561702512,100.493294160468,100.421217572458,100.301927785333,99.9783931221017,99.8004463111567,99.5459245499605,99.3495978112903,99.2719790841993,99.2678383856088,99.3455016678674,99.5942081296056,99.746249453769,100.072896333153,100.193159889336,100.422434052641,100.545362300457,100.452225213182,101.014344764024,100.406941024146,101.652217229108,101.193203561021,101.135135498786,102.590892655366,99.7340254662751,104.978806845947,111.367109276961,96.2657474466137,100.700326252938,99.4473779287504,99.3483483041131,99.7687508132301,99.2764290651606,99.425208420861,99.139908087516,98.9972261833319,98.7920071966578,98.6558501064906,98.5227477209899,98.5477434382505,98.5895355452446,98.789640163269,98.9056639902827,99.2396611461372,99.2655246557529,99.6096639423177,99.4581448894834,100.09991491853,99.1934529075552,101.232562469973,98.6221194953458,103.492222065403,100.31646238063,99.7340260447329,120.927884301351,77.9498569777151,105.935014578652,103.792824948227,100.728723763434,101.906401821194,100.459105271692,101.020791535387,100.390837648854,100.457002524736,100.199339200464,100.074032862232,99.8837889540724,99.8373440093388,99.7250823655839,99.7748832598106,99.8129952818033,100.000845248218,100.027440333076,100.326740364181,100.30708180995,100.586516244003,100.572386063384,100.626584476842,101.168153681466,100.205089007474,103.414001101731,101.043382276306,111.557632998561,120.927883383566,269.263097166977,72.8779099361662,104.874453828858,95.6400348354298,97.493793730409,98.510499815681,97.9494210030013,98.6413994046704,98.3599061540914,98.3980863177523,98.1722890575234,98.0666296702942,97.8740000545398,97.7445410537167,97.6372489947662,97.713360317528,97.6381322844309,97.9019570752236,97.947969993449,98.2496914752355,98.2566038792254,98.5729287543829,98.4197415760455,98.6177928815738,97.7291645150715,99.7099229104266,92.8678099528233,107.240113849673,76.6055448643114,269.263153215375,99.8629534754574,134.131923101452,90.917062006588,104.465952890126,99.4304633418537,102.055304941828,100.576682245709,101.387904119852,100.656421890347,101.140199991814,100.53276427723,100.806959101836,100.392435111445,100.626062914597,100.255146691282,100.606032598417,100.330644944055,100.675029455037,100.532442253463,100.904116969408,100.713094272105,101.089312851785,100.901487090845,101.186173865585,100.546220066369,101.745222630937,98.3382769578439,108.108791698938,65.8745496843083,100,159.261656959411,200.431566890154,142.98002872265,161.435567765734,154.61461446192,158.509064962782,156.113342509135,157.439720790338,156.387650356562,156.947254446653,156.116503853133,156.644145317699,155.810612148678,156.235508945433,155.793285676654,156.103289267217,155.796751830605,156.428744280151,156.018150450278,156.686269525259,156.486595851893,156.901059415229,156.673316148626,157.230413183129,156.066496555435,157.751313245619,153.109338996754,164.448879300586,108.949191641706,159.261608572247,-76.3682601902961,174.313343392773,141.478268975344,161.959409472179,154.711021576857,156.479630378162,155.790974204028,155.519200081767,155.457880524508,155.4310694287,155.201421927221,155.26739789026,155.117516541154,155.132079859386,155.081103847555,155.146713782318,155.021927572591,155.18544219606,155.122981488215,155.225720463255,155.321578722717,155.527321564222,155.318217206213,156.461297120903,155.668130160005,155.290755243756,163.040073478355,135.348454143975,193.560868613877,-76.3681743365115,124.124767187553,137.959614989881,153.696201363917,152.076902192087,157.038423060471,156.131076283086,156.955382104903,156.731203620482,156.696181386826,156.551123033153,156.481072158836,156.379422089656,156.363778646458,156.281390167537,156.260850276238,156.279591114352,156.266939106566,156.399465711474,156.417228949268,156.59553600641,156.42582565383,157.016456812616,155.808129343376,157.739377080411,154.717626222167,158.150990865288,153.625650345656,146.222313717769,185.519314385504,124.124765586227,154.062768199594,147.429036913251,148.310805122132,153.795444495071,153.857776902442,155.294549030224,155.596327119868,155.423147667724,155.783778696694,155.515268957306,155.738120347007,155.500271800293,155.580195354024,155.392589862047,155.45320846963,155.423955445844,155.454768212755,155.515388237816,155.483942593363,155.720386641525,155.307887342793,156.207894056485,154.974600595122,156.370135640181,155.652894041902,151.052934748699,160.658824915588,135.046054100786,148.317818524412,154.062770142586,152.063699274106,149.314527578844,153.000255511827,151.949864601936,155.297498370646,154.412638291237,156.03193875984,155.537023563072,156.25069506353,155.831310776111,156.109322207961,155.767331077782,155.931386314647,155.755592980547,155.883826830189,155.79180152105,155.857173535168,155.917066271062,155.773667087462,156.219262721266,155.612245964827,156.497884354671,155.710626682131,154.775958080752,157.495976085691,150.360182033713,159.810042890766,153.379020354013,150.310456464056,152.063699254831,155.11515806918,150.570191938273,152.937774936111,152.352760876163,154.207381240605,154.282590513394,155.461539446272,155.137116393935,155.785030712722,155.314071759408,155.717237717358,155.384019752649,155.628781288981,155.341420057261,155.496636101852,155.342296365867,155.381706012312,155.577663792218,155.382200342182,155.857303317031,155.481265927175,155.252136657065,156.2076430939,153.124399321239,157.783249613426,150.961023013426,153.534170863226,151.369490519317,153.661602338903,155.115157895576,155.032119465939,151.671268091375,153.781928046998,152.63926825488,154.849033459103,154.103141885631,155.549063970233,154.885770559851,155.760624586958,155.295782984939,155.797009763344,155.320243608868,155.577390078143,155.190347441103,155.314576231724,155.298480980046,155.327997697459,155.534028530617,155.468783789417,155.449175040971,155.818400427629,154.651614245109,157.050238033969,153.358428682871,156.757289419563,153.329532851973,155.295871981307,152.467239805976,151.767368646436,155.032119274183,155.176011618932,152.259371969712,154.428650776201,152.949980857963,154.716513884314,153.903075604497,155.232624571603,154.755837089146,155.632946732541,155.07030195804,155.535295375628,154.931128565631,155.108824168564,154.791255568631,154.86212586928,154.77829904686,154.948912321674,154.939569046741,155.266979435674,154.910675520983,156.206459309563,154.244387091675,156.585010280437,153.344999858565,155.716533986612,152.908253943396,154.366976310677,154.114957858235,153.023478278536,155.176011935134,155.440478015879,152.952021017304,154.71984217285,153.073569104209,154.802263641483,154.020693880318,155.393161334725,154.717183499676,155.5720801998,154.877883996386,155.29901081985,154.733808333486,154.769734804648,154.192829334826,154.259116238813,154.003597389155,154.386691737178,154.457877848009,155.40705175545,154.563390057073,156.210494150376,154.045560422917,156.29992220131,153.905646110141,155.82974509704,153.936890717633,154.017230601188,154.166880429169,153.343726401464,155.44047786777,155.411042458677,153.004228563602,154.838211897305,153.42057677108,155.052697825265,154.124528045675,155.333146475863,154.582713592097,155.421663129198,154.858126154786,155.187058198608,154.330632916149,154.145257637469,153.142716642979,153.060291332398,152.852880495008,153.727180027934,153.690820770025,155.217211568823,154.107363124807,155.997034286679,154.216226582536,156.118680867686,154.075673561601,155.181518245578,154.324393289371,154.288099349432,154.655408058785,153.347360055616,155.411042307472,155.508171389607,153.420392580008,155.208373019466,153.729919053435,155.15202186167,154.123381974853,155.340099661734,154.753115674452,155.602033619588,154.921672650447,155.176515388879,153.972186174227,153.387240610902,151.868951248043,151.603827450999,151.29201946922,152.603212829912,152.820096548286,154.925188797755,154.222241523548,156.141374630553,154.501174239618,155.947718880134,154.519362568545,155.115034185046,154.610686987603,154.119691433451,154.805261629821,153.777148622815,155.508171635829,155.64660031008,153.805179734301,155.293495060602,153.784249762985,155.199633775413,154.382546135744,155.576428270903,154.96610917975,155.81834689066,155.129721316192,155.342359178913,153.975304745351,152.894244528156,150.76493958077,149.556245198141,149.240440817339,151.490004073853,152.210636008001,155.173947306718,154.536477234244,156.234997651579,154.808111101368,155.822716881306,154.874330799662,155.038045870364,154.887218841443,154.330851930568,155.083939101447,154.061242148463,155.646600205807,155.616522639782,153.815554353411,155.343825215563,154.123854951282,155.483697448799,154.647169307727,155.765907113133,155.184640414576,156.173643561984,155.80430392832,156.189394269754,154.71120156037,152.831041490755,149.813662122386,148.857151406708,147.431491439302,151.036066346435,152.447949421321,155.487316508968,155.341513487407,156.626389332467,155.496669525134,155.983503894214,155.222280087631,155.107335937455,155.161080964383,154.50090306125,155.226040030614,154.039771720095,155.616522522721,155.692761258936,154.125876083641,155.595589338911,154.40001475308,155.607980506877,154.775025764117,155.962182187739,155.672916242927,156.852471657792,156.706813086668,157.269303498097,155.950251375465,154.364678109585,150.032646385944,148.979168181669,148.33821067427,150.916679243859,153.634029317768,156.61761153966,156.490425206701,157.456735059535,156.184022888122,156.234203747998,155.629614356537,155.284487297115,155.40490265484,154.563543798447,155.322634458971,154.386574116648,155.692761443478,155.793601229743,154.44130543892,155.663359286225,154.489211646607,155.708583048011,155.124748761985,156.334860814752,156.155219058852,157.437488778743,157.600752146253,158.595210026201,157.440423296768,156.379538989649,152.581345149128,150.256386627234,149.692536515011,153.101615854627,154.970935441738,158.465962415197,157.811450777481,158.138724680258,156.92702935086,156.56104777861,156.007951502063,155.384204475084,155.561477235486,154.793307462563,155.52951240391,154.600973210554,155.79360115236,155.789082231858,154.461556461948,155.699786737514,154.794069469862,155.971938301948,155.432737147943,156.569068071689,156.409823097218,157.826166348718,158.156936955065,159.68794217959,158.66419659559,157.65075362243,154.086119985566,152.767247781938,151.526049562843,154.88443739458,156.665064519572,159.229317660934,158.955063536816,158.692362698571,157.481877919638,156.846237739951,156.323832706913,155.628055666044,155.848211458451,155.017391922726,155.650510981639,154.62843917228,155.789082191772,155.845689324318,154.732299137784,155.899395519161,155.051690079539,156.080084499323,155.517866455501,156.700784930193,156.703926867642,158.207804012738,158.372615814338,159.587028203862,158.774019581237,157.667946413197,154.54091059993,153.068487570423,152.329965958081,155.348531485402,156.954377439273,159.230640144122,159.014027325905,158.895285544056,157.740708580317,156.983466117698,156.607342907341,155.809934142426,155.98801279214,155.082475311713,155.704370272669,154.89526302985,155.845689454976,155.941812960469,154.987311918248,155.951971236117,155.10163236882,156.150408010745,155.770970947332,156.865834384093,156.7068515618,157.936062201022,157.954919524817,158.81626775654,157.684219879659,156.81758900256,153.266641298098,152.666208082836,151.091277490741,154.229926831692,156.178499815072,158.421584017108,158.4765970107,158.45447427782,157.822501779411,157.057620736834,156.751675167928,155.901531620048,156.116653974339,155.31172055355,155.902703912897,155.1061570994,155.941812912011,155.922963449142,155.01556385709,155.971839825589,155.331770477101,156.269429053534,155.914588223681,156.979377536892,156.707182888218,157.712980114678,157.292227625038,158.092448084875,156.185593425271,155.390946922719,151.853903755717,151.113372434517,150.687734210676,152.651299753454,154.665756563791,156.994115742766,157.598735859287,157.784359504231,157.478188351385,156.873069411663,156.731226358736,155.959543207562,156.246982159284,155.439913799586,155.928067165895,155.107331809786,155.92296338626,156.020808088826,155.207831168087,156.099756035342,155.572954650522,156.389803509303,155.709706276617,156.537104034089,156.307873415188,157.487822347764,156.672551693584,157.12865618842,155.22289408667,154.27187027597,151.66584622998,150.748702647215,150.206821992193,152.332968683614,153.66842881979,155.846020003571,156.717500858756,157.160217462366,157.18723256239,156.710405582088,156.825706160974,156.081139814731,156.336526790325,155.549583133554,156.026397393519,155.375184071898,156.020808213335,156.017024256503,155.49354023936,156.120141862277,155.349717771538,156.350165411717,156.243871950817,157.112878757127,156.208516241127,157.026858779703,155.964390570017,156.301304393832,154.454742575758,153.922282317071,151.509825568511,151.29893068154,150.435412264023,152.051296679248,153.362835610712,154.951531846547,155.953736366244,156.381006406292,156.804129288552,156.403966801752,156.592241373089,155.940142022903,156.234844854368,155.591400873004,156.061347882523,155.425863757752,156.017024206104,156.127025606447,155.358862050504,156.317561304924,155.807205238101,155.97190472433,155.202047330762,156.614368251467,155.924658488928,156.796859078875,155.597052108592,156.206376254628,154.239536328194,154.008543959671,152.083273264765,151.93059543292,151.5754380325,152.433303950906,153.468812237864,154.70910069614,155.660855658009,156.114430607791,156.525888799543,156.323281648125,156.580351152662,156.059666288647,156.475737133133,155.810048665385,156.258478979304,155.627620911379,156.127025602557,156.123912973106,155.665495304456,155.792272435882,156.108888112998,157.688273136255,156.123746067084,156.426611981486,155.422031195909,156.618435236713,154.880694849232,155.554238642207,153.917519329122,153.703420846654,152.501374203231,152.230926083126,152.018880380012,152.670862944906,153.390881619654,154.266410544444,155.154205487609,155.442947558557,156.090900361877,155.782458813354,156.382097323554,155.776390305229,156.213750391898,155.718349265952,155.990675481065,155.619470989274,156.12391303422,156.256577232489,156.454744064046,156.821539719901,153.83442190686,154.900327559196,155.652738775469,157.266690589247,155.205956962516,156.833381106517,155.173348969891,155.525295927523,154.425830471751,154.032281839735,153.24049659013,153.05710521317,152.890963245311,153.316635951449,153.937795458816,154.505977502111,155.273750689667,155.58946569337,156.117641727913,156.160519381384,156.300781664967,156.255915932483,156.396619667532,156.116958007345,156.778838719655,155.884675491112,156.256577318703,156.117956586653,154.717715141369,158.341706590633,159.329157455654,157.58134423569,153.842758163012,156.972465274295,154.450398303654,155.564773538304,154.764901443196,154.558679337097,153.982850649387,153.569700303457,153.039641871745,152.823058327879,152.833480274386,152.988366443643,153.516701754421,153.929203307907,154.663077916743,154.780243450612,155.527146147715,155.122748083467,156.121127826799,155.120469706736,156.540827843147,155.408060237163,156.389958553478,156.377578454624,156.117956524961,159.540740791615,156.761980336276,150.895592912759,151.880129615925,160.062865368824,154.860318428362,157.12477425577,156.243391095048,155.79344339987,155.731900737525,155.144406129811,154.816639303746,154.370281545078,154.067422143583,153.821169909007,153.885987443701,154.025092901008,154.458972556538,154.735253123733,155.346765029131,155.4584767142,155.953157867144,156.098347940919,156.050436017555,156.980654189426,155.834565921912,157.78720948396,156.929614077801,156.884702887482,159.540740861917,155.208470282544,163.136785452746,172.799158719977,149.420889935638,156.057174241999,154.807780147729,153.849240647458,154.859033867317,154.077621626059,154.334978600137,153.771535075848,153.588939468957,153.174570539358,152.90184716494,152.762656381299,152.770143997631,152.791313133005,153.254933151889,153.348068432659,153.941407894454,154.033505445917,154.688314117482,154.331693426295,155.446958094338,153.826148267582,157.306296437273,152.72194338353,160.579160545073,155.332582396122,155.208472359755,190.469496051413,122.037611917827,162.851405818142,161.99440277992,155.355819025047,158.395666687157,155.982541828086,156.92571121126,155.912008497458,156.004797963294,155.509756063434,155.345576269518,155.038081229334,154.871578330517,154.724161275241,154.865431930398,154.78076527819,155.214671477391,155.267879159519,155.761251169732,155.756853310784,156.24615137662,156.110304151856,156.267667837538,157.09924193916,155.260318168456,160.884864296126,155.637613206123,171.423351319518,190.46949527933,382.308521139276,122.831797264617,158.566825400924,148.545786238333,151.262127940207,152.963731944454,152.073471321759,153.225074641034,152.818332394683,152.772965579799,152.547539189593,152.284648842979,151.898200507681,151.829330141491,151.559934594097,151.620122783421,151.660516147452,152.024217501884,152.028200241069,152.662928635216,152.596819085997,153.074163152079,152.925926724507,153.205558590817,151.612779864399,154.766537538243,143.910058194372,166.33681399425,120.620374108346,382.308604828633,159.261705346574,200.431839661664,142.980304616651,161.435849759174,154.61489550688,158.509347226196,156.113625240453,157.440003453672,156.387933437775,156.947537213665,156.116645295707,156.644428145643,155.810894843328,156.235791596901,155.793568497096,156.10357184616,155.797034526104,156.429027128589,156.018433164441,156.686552379637,156.486737349861,156.901342278305,156.673598941919,157.230695906111,156.06677908806,157.751593931514,153.109622193398,164.449154861525,108.949464817379,159.261656959411,196.042527354083,236.241831234463,174.005085166259,194.889851858778,187.40634333965,191.87485483861,189.362995272293,190.801323292416,189.514689206824,190.345819705703,189.263945814183,189.733317451248,188.975703266605,189.378043921975,188.715032472548,189.333935689116,188.845320222346,189.488787797084,189.234654146571,189.926853309434,189.60133167518,190.277622763237,189.932321129165,190.461724905453,189.275217164569,191.019197943499,186.691861629375,197.639201991698,137.170782252868,196.042500370966,-38.3400668375103,203.77522689558,171.80456893993,196.055313267437,188.088158852267,189.96214334856,189.346599202984,189.042212502525,188.85678312979,188.765031418122,188.640990095602,188.642074049324,188.484152892662,188.546116377401,188.408751823755,188.456927697241,188.407519170182,188.544768608078,188.469334877644,188.670338068055,188.712888787151,188.93179679441,188.788611064748,189.979033063497,189.274697344027,188.672685896495,197.039303262519,161.576236668517,227.76266676989,-38.3400241073461,141.678731566519,168.268723678776,185.634720040741,184.670041437378,190.502629965601,189.389670058111,190.290349124111,189.991954243464,190.144300473973,189.91715658806,189.946880314242,189.728278198875,189.683232099274,189.570672419689,189.596291367985,189.600816688747,189.638227189204,189.756660069416,189.754903585727,189.963194110822,189.798419333706,190.440748729327,189.12541412248,191.424745971811,187.507948204854,190.801825538648,186.349251789654,181.13222749479,216.412995113983,141.678729546014,186.75188178932,178.607417157241,180.165239303828,186.33484634194,186.686039792225,188.193372787163,188.919166442083,188.712191666769,189.257338932568,188.795959744376,189.061085544667,188.72422488401,188.906430176979,188.70821721033,188.810159331686,188.695241027802,188.757749904769,188.78311456523,188.783924406892,189.080924998202,188.636422087638,189.66423518948,188.107478901662,189.252716405297,189.064423294436,183.755094805543,194.865269832038,163.843002295691,183.292792262542,186.751883130392,184.59950442344,180.928265115465,185.208438567534,183.921592763318,188.362553187274,187.413585323253,189.500178499092,188.716297288807,189.55920844098,189.023334986455,189.496788972025,189.092904544586,189.370515997497,189.032138207034,189.204147725576,189.068519545486,189.178116044961,189.267833977565,189.162309567018,189.605675403329,188.847234416093,189.629924285075,189.033300659966,187.991577361318,191.695293170656,182.228873796258,193.46253962203,185.381612727867,181.919919634818,184.599503358216,187.966500477111,182.100667047492,185.506516288002,184.875260123543,187.323681682578,187.107607395671,188.581741891263,188.111903371476,189.115277755758,188.574308591197,189.158470725458,188.595062460257,188.924781914708,188.544780555646,188.766980597528,188.639203174127,188.743063293934,188.842777007428,188.636001961461,189.023916111256,188.760658864749,188.553146682427,190.051614540448,185.661682981228,191.159566165884,182.922945539214,186.367190660471,183.720895075166,185.928626658139,187.966500738301,188.254433786961,184.179082576567,186.84328371793,185.011364905654,187.725120478223,186.736460939537,188.775745191464,188.026829051449,189.210704339443,188.454928468345,189.090213480759,188.49278491854,188.861339247129,188.466698902244,188.702540656811,188.488534378205,188.591056080186,188.725235694118,188.729695508259,188.785410354307,189.476481268832,187.598435300594,190.399051543108,185.781804897099,190.289977657185,186.070647106115,188.341512336492,184.872076757521,184.376007416988,188.254434012382,188.387846388589,184.557014557675,187.208342015996,185.22761945247,187.726625575116,186.821357168597,188.571595964128,187.754473029892,188.857044549893,188.140467958907,188.816063120218,188.173739544182,188.497312316906,187.876949972084,188.067284784005,187.893773578396,188.10374118289,188.223358308346,188.781051151804,187.970278532894,189.521571162931,186.927543593074,190.125776162279,186.235584839344,189.106293010277,185.435899761559,187.282583786841,187.090697480159,185.464116507698,188.387846027039,188.505587943025,185.140623394924,187.728891323848,185.832982309987,188.053997252963,186.797944804155,188.50449867291,187.628866375921,188.84510534652,188.095377143326,188.732766057403,187.807098724419,187.96619520631,187.226680764187,187.289188103609,187.130510886568,187.720271387784,187.453886336804,188.672887488513,187.437263314046,189.681023206118,187.147232222096,189.930304425536,186.673668794666,189.012702721734,186.8093246266,186.794240253975,187.002322482514,185.701769119682,188.505588072572,188.733164148452,185.799369928781,188.136101834681,186.02302256827,188.050324983243,186.82066273911,188.528965978499,187.712085021263,188.856080030171,187.941216648001,188.452802233144,187.390069920069,187.203902161074,186.135569073305,186.087964585916,185.59392241965,186.688364678458,186.477950092371,188.495700061255,187.294885920467,189.658384502675,187.106252711206,189.432956508608,186.934246059239,188.304754690105,187.261295769279,187.04597554334,187.630156259582,186.240957299224,188.733164304966,188.793320550348,186.047395671288,188.21237372817,186.27192554601,188.286577137221,187.133945924841,188.726226962871,187.77505159911,188.89378409261,188.040708409498,188.450286686048,187.15468525454,186.484110144104,184.591756253376,184.169404717617,183.488605575486,185.47975258164,185.671626023776,188.398871652674,187.19440305866,189.549002559518,187.466982109589,189.315227589016,187.603503660175,188.210074306897,187.592436912391,187.079304792762,188.003637605588,186.462650512843,188.793320296553,188.814482700504,186.308642941232,188.471584523088,186.721290229074,188.548548192333,187.280603327966,188.795962026551,187.995405534329,189.197750927974,188.504803255347,188.864168561664,187.097848904712,185.776114951929,182.782396392384,182.244380940556,181.267728396199,184.00520232898,185.00843458326,188.287894899869,187.587047606697,189.769525195955,188.073015198556,189.225075143737,187.950081789025,188.198242601722,188.071234587314,187.201825937335,188.131087774671,186.682677299338,188.814482802481,188.972246166753,186.782156307354,188.738319251228,186.939161620642,188.631329332843,187.523897950751,189.097445250291,188.50787495677,189.81931332804,189.20110671146,189.697533349861,187.702490931363,186.055947910361,181.920299995141,180.33757118644,179.821581071901,182.992409627777,184.933331721651,189.09569114384,188.652515016103,190.38581747951,188.79126692654,189.395384954109,188.473189016788,188.221439786633,188.288453930702,187.341111783276,188.375200364277,187.073359842326,188.972246277206,189.021776113016,186.958614040846,188.741354234095,187.170143478416,188.881039083327,187.961832780873,189.501713662053,188.967912779814,190.462913077146,190.212857672147,191.148471688034,189.239611066211,187.073186519268,182.530890549734,180.133164474973,178.968596337155,183.811289938002,186.087290967931,190.484206489988,190.173080207404,191.16160837958,189.701440390961,189.701633551134,188.950712576749,188.401582392256,188.618132658993,187.655863726757,188.644204982311,187.262020101436,189.021775931304,189.036095091797,187.183403151436,188.949900859905,187.593712196788,189.169235140377,188.241829045145,189.762983716605,189.462120781341,191.266815691527,191.424132222743,192.742763730269,191.157509432988,188.935023724941,183.650250030181,181.893865558252,180.403012445283,185.045537313437,188.149882027993,191.957749910965,191.809280263085,192.170781914554,190.588800701433,190.092335087822,189.410493066771,188.672964454979,188.933937720316,187.809362903031,188.709530876794,187.427276224353,189.036095164186,189.171933164436,187.563754130232,189.155206211812,187.807872806495,189.26690985407,188.51412886994,190.129898639478,189.994328161839,191.836065708721,192.123906593479,193.599967227571,192.281078194934,190.725512060607,185.472826581209,183.363262484117,182.204015701218,186.59118864579,189.590711487172,193.278770692631,192.876874447211,192.868864104426,191.301431131252,190.468893584914,189.876239362375,188.894358227161,189.140182788969,188.01668498849,188.925165976862,187.778564619836,189.171933206361,189.21000483563,187.738657570364,189.153337464014,188.012544678914,189.490804445203,188.86835080597,190.39984916255,190.272347188483,192.040239963016,192.235193998586,193.838192576228,192.272862080185,190.957202976512,185.803078683632,184.082563523889,182.741354150566,186.896010927035,189.835989630135,193.270581907682,193.08783980461,192.881675202089,191.637858966095,190.639126595728,190.11096520872,189.052710984955,189.368532001687,188.297202729681,189.103089920718,187.928723904791,189.210004701879,189.248650506149,187.911759875753,189.323248711922,188.339901628777,189.706324153884,189.066616737767,190.38759612044,190.104948264865,191.870963543878,191.772999885439,193.11193110279,191.148207084636,189.715561192213,185.07532666191,183.286353007838,182.517924059686,186.129918043378,188.689025584828,192.054323488888,192.437797873647,192.465198550934,191.587565776236,190.644935172968,190.349674218844,189.299157787192,189.613596562597,188.478804900273,189.189488978736,188.107620925423,189.248650572349,189.330324093954,188.229107530028,189.479415599415,188.4978324404,189.634821097592,189.088301541977,190.642214420881,190.301430827552,191.663063051199,190.981209427332,191.752886410707,189.562632196303,188.136397693835,184.064663152162,182.786761889067,181.451626693186,184.96465435552,187.294309554692,190.34773516585,191.231847965199,191.547833367922,191.261305015127,190.456708139423,190.367696138533,189.314652516239,189.623369418398,188.569699041154,189.282431214228,188.345327670411,189.330324149035,189.421807323093,188.348156235711,189.413869814071,188.644415854413,189.888516941254,189.072602927123,190.206848239234,189.746942111027,191.085021016475,190.061897678467,190.762451326053,188.367747219483,187.33758188438,183.468629237015,182.860140026721,181.81018054897,184.243914638698,186.430021087947,189.024986844117,190.217675506079,190.736336269142,190.890658381318,190.2671542568,190.334394418739,189.38264395216,189.806695537953,188.854578720946,189.475274783636,188.547245705354,189.421807232768,189.355119535645,188.5354387978,189.544939574365,188.632465201746,189.955546185689,189.646768561378,190.638840310815,189.44426810444,190.684815263128,189.312931518666,189.83640375549,187.316285437693,186.675407678951,183.684857159018,183.16735358353,182.548258883235,184.286288042574,185.869220275596,187.979771779323,189.278202139886,189.82674469683,190.277539024779,189.795142462168,190.132303734981,189.314300339388,189.73494774263,188.838190588753,189.386557762421,188.538427099064,189.355119584376,189.581018955064,188.64024113957,189.905348965228,189.101119437372,189.228990739519,188.188918199405,190.169306908537,189.304890801658,190.454193086691,188.817168422444,189.453055037532,187.067194849618,186.743897027766,184.501487755405,184.200418427818,183.611776608118,184.900734634175,186.110766511425,187.655568857149,188.844418983091,189.402510530082,190.029231021129,189.756613229181,190.140623683275,189.429205260355,189.889785749962,189.033682467432,189.694934101888,188.954424147775,189.581019003203,189.548452381652,188.912879372718,189.021505342547,189.174299238062,191.507826722071,189.555900945528,190.045348137265,188.621197536134,189.977539485068,187.888043393939,188.762257487231,186.729218863032,186.439751296137,184.835534420835,184.619106276487,184.313732882721,185.050372399516,186.049012155738,187.093662771874,188.261650062611,188.62553138852,189.50120829861,189.07914696228,189.76732237102,189.014070105067,189.640335651698,189.015766655689,189.406127300019,188.859351744212,189.548452223721,189.669111042683,189.582301020076,190.490852706552,186.757523750313,188.214467309457,188.888531587872,190.763030512482,188.265637801308,190.395141447269,188.321605113638,188.686427424804,187.307946883981,186.831944434217,185.837279334501,185.536501120086,185.44335977614,185.889468676904,186.67949036189,187.454130675331,188.426187147159,188.803549293928,189.428568093392,189.450190375911,189.743433922078,189.686937129982,189.887484342267,189.480866874227,190.227957469382,189.067195281907,189.669111270761,189.618601990652,187.762712917588,192.117383005826,193.433779094138,191.137072134816,186.565902012266,190.598588450447,187.470912170416,188.73675732394,187.78800102303,187.507697143051,186.837498512255,186.228122991758,185.622682936471,185.339233034385,185.287003339961,185.575632562406,186.2485125381,186.695625117715,187.624172393172,187.780563425483,188.758726414184,188.262673160292,189.52299344318,188.250214685629,189.9648298103,188.572589549171,189.82771984084,189.781280671837,189.618602073439,193.642417998139,190.64675579365,183.434864194051,183.758837972869,194.330209003272,188.02075266918,190.472085976563,189.646064996382,189.077082543126,189.003217560581,188.218017761186,187.826198091577,187.243084504573,186.82955401132,186.608627145401,186.647845349098,186.772727266518,187.384230195027,187.664267169344,188.481137704255,188.66375968336,189.282357015414,189.439691745542,189.354858508562,190.382760958065,189.132022198441,191.563145359156,190.465304888943,190.309190025657,193.642417484329,188.613135967982,194.091831555491,209.845178945259,182.187757169525,188.977580222144,187.979425771886,186.75624714042,188.121194328342,186.951954437945,187.256629219592,186.647330137892,186.319700995519,185.855306298687,185.567235019869,185.257680314871,185.346276380187,185.393647320248,185.89655662285,186.092304800423,186.887431063556,186.893841786303,187.704420870419,187.313449739288,188.690629333936,186.689535387956,190.841738359928,185.262807580221,194.946320137047,188.593233734976,188.613137076008,237.657011028075,154.835077957185,193.72451431657,196.629083728009,188.365339045907,192.357662070478,189.146741100353,190.333876219136,189.124615892444,189.224468787678,188.665424269961,188.404811253172,187.977607455523,187.873575578961,187.606770000416,187.754816029138,187.778861014299,188.242726316583,188.272050989785,188.960808970872,188.886366627796,189.53783349969,189.422990024195,189.559746243668,190.584415389181,188.273440342173,194.896128341656,188.613283247456,206.265163885463,237.65700892244,409.397389148614,158.101230475524,192.473304023727,182.144456148912,183.553757681384,185.703973037163,184.923442918698,186.113482256067,185.652050980161,185.688802921602,185.266750205116,185.006016287996,184.633930701761,184.362830757504,184.135458173387,184.296169568147,184.148078373138,184.691255467408,184.771930742477,185.419152220927,185.404210418547,186.064287804217,185.746597639881,186.104380334699,184.326164638858,188.071997816811,174.533955862272,202.060157474571,152.985887803432,409.397429427497,196.0425543372,236.241967258756,174.005215287445,194.889990611237,187.406482819199,191.874995214193,189.363136211119,190.801464142604,189.514830224241,190.345960708722,189.26401636233,189.733458266338,188.975844284757,189.378184743083,188.715173177231,189.334076569847,188.845461079427,189.488928597488,189.234795191172,189.926994344142,189.601402153112,190.277763867942,189.932462128187,190.461865587842,189.275357963378,191.019337010256,186.69200102027,197.639331658494,137.170917669315,196.042527354083,210.28683507284,244.523013605753,184.671653602349,205.410205636407,198.255044975642,203.059603419287,200.25061061112,201.847413827267,200.57107452335,201.268144040475,200.229145981704,200.832123034817,199.837750734017,200.328814194247,199.755077042929,200.180692548322,199.779668330591,200.559245234514,200.098973359159,200.926256593453,200.673421014393,201.224565280692,200.927905571089,201.607856674717,200.12729732121,202.052605832597,197.832973441891,207.192407706026,149.953643301359,210.286830118832,-11.5006496624935,210.316001888562,181.434259063057,207.410400027786,199.244530114582,201.13270100184,200.496595470462,200.110195792783,200.071478744965,199.972730839512,199.756638894896,199.772025029089,199.621175968732,199.610377468434,199.549674236861,199.616691585668,199.489770224889,199.683558927407,199.619721147894,199.765753416804,199.877529461259,200.127476643934,199.889513043613,201.202324459819,200.399770761386,199.182063750899,209.108545133885,170.158166161906,238.133277801723,-11.5006412767121,145.323371935694,180.719895765639,196.27695407813,195.251324341325,201.492018233264,200.388704511111,201.548772121652,201.164119404664,201.275928930578,201.006357453162,201.017799549562,200.811701814348,200.836590749092,200.689370700432,200.707657591639,200.695715393108,200.71971368897,200.851144082817,200.890807969067,201.090709352601,200.906284344736,201.599434681348,200.147458514294,202.4642160104,198.765300872712,202.737504770159,197.762387149124,191.944062618622,223.699824149376,145.323371550383,196.689049256734,188.357829769936,190.611962156867,197.196012200744,197.710136065545,199.363883289329,200.0223586309,199.721458567617,200.314125257476,199.877049093581,200.231640014575,199.865681699385,200.036238725166,199.763006193255,199.884784462424,199.797183427603,199.871938544376,199.909413981169,199.905985486515,200.171214616809,199.698204395429,200.742122407485,199.279563071898,200.656341458633,200.220648821828,193.762534059124,205.629856166113,174.508776642578,193.845788043555,196.689049495328,194.952244393974,191.661007201125,196.215884702354,194.839585368573,199.423789527894,198.240388688133,200.504915036833,199.757239943327,200.779391158895,200.172105991001,200.638562406807,200.150900082723,200.436495559191,200.140430578038,200.351009329551,200.189299999388,200.315904502092,200.354222033574,200.226870235173,200.707149761739,200.00956897026,200.91052534507,200.199135873692,198.669988219253,202.580924417135,193.090305624014,204.907916732464,196.181993218907,193.057156556488,194.952244285928,199.190239415243,192.951135067099,196.420567726226,195.481381220004,198.134685426637,198.056892563295,199.746425275895,199.23345455043,200.232926801852,199.573095255704,200.197665397269,199.683614322811,200.067791240323,199.647433274423,199.903452769681,199.673651075893,199.781465356373,199.942334664074,199.761908751341,200.216600504889,199.91343658857,199.409179462804,200.950321684766,196.553983829691,202.654271382652,193.753199967337,197.259637190966,194.16797278141,196.99743023541,199.190239221799,199.133532429322,194.654037587503,197.560227603694,195.838829398085,198.873170715149,197.791412115953,199.869665546121,198.955394148605,200.226131676755,199.527217967014,200.266776087605,199.601204581804,200.014663912102,199.488445680458,199.723805659901,199.605264114164,199.715250506636,199.868688669219,199.89555998008,199.73525339803,200.423947973915,198.596665739125,201.83689191143,196.85659263064,201.408706104109,196.852110048896,199.404772037204,195.850369868898,194.830168181653,199.133532185049,199.350160130986,195.358358301329,198.334555027971,196.223157556966,198.754888875329,197.621599989196,199.513043457863,198.77258753317,200.028204193047,199.241820064344,199.961714044671,199.160858235756,199.491443069608,198.982853035119,199.161257710185,198.968611776521,199.263069190898,199.169601725678,199.737368070533,199.025547136262,200.833162308037,198.064890761259,201.28487585682,196.974524010869,200.086330296886,196.343875326488,198.147648165113,197.933802013927,196.379552918876,199.350160175657,199.669517315773,196.210359878981,198.761454358154,196.51231206693,198.929589139059,197.752130743939,199.668871818775,198.716545280053,199.978315342083,199.058050952179,199.732160325931,198.912640541017,199.069542425575,198.264270190039,198.41691131813,198.034560109147,198.642246387439,198.53095834613,199.881834834797,198.582953208404,200.876625401382,197.947404063153,200.946254527533,197.673111699863,200.157339073899,197.74262217857,197.746129336058,198.012632753161,196.767384068986,199.669517147659,199.702196569771,196.442131982016,198.990419064936,196.930898765914,199.195280397373,197.877651119512,199.626526365297,198.617926035962,199.850146714029,199.032990397491,199.59270028824,198.451173736973,198.31743488126,196.996698638055,196.971279319137,196.537321490163,197.756046184683,197.547733445179,199.66551329866,198.126909297574,200.668775825617,198.14992306754,200.645583274021,197.936689072271,199.33789222665,198.242965101815,198.076228291187,198.66775240904,196.916505279125,199.702196405488,199.826638372325,196.94186396134,199.394035048567,197.319931026951,199.362075300467,197.967602352602,199.694822607734,198.828143595411,200.066357702305,199.150697826125,199.624247503881,198.082048437176,197.445776063028,195.411392171925,195.111234952682,194.498922388206,196.340737804354,196.486947450978,199.352481071601,198.255284359244,200.801463753899,198.557105411956,200.448849881794,198.567360120005,199.263042533352,198.634958240843,197.92915437331,198.917465393432,197.422957694663,199.826638412232,199.97774961255,197.406192815317,199.549083329038,197.498529941765,199.484259593533,198.284318817044,199.966322195904,199.114603664889,200.381300083121,199.497006743502,199.91905314489,198.100923468094,196.82201895212,193.923954890016,192.64931142408,191.960223527324,194.896163318044,195.726601753153,199.580157610485,198.692388177657,200.959199475259,199.04429908798,200.314304773457,199.030049925062,199.189719792572,199.040506021172,198.1889406539,199.241683100468,197.77233052015,199.977749485375,199.99243806593,197.546215198176,199.671180519937,197.912752867695,199.802706998672,198.624190076754,200.243429765059,199.473753538293,200.905096488724,200.357124150363,200.968620635451,198.942511260262,196.736266481639,192.65112267655,191.409465779409,189.733213321895,194.184640537823,195.960977921167,200.087832998713,199.786594246943,201.513608553255,199.938317735043,200.528339113333,199.524917307886,199.278965666005,199.38236554543,198.406439303324,199.452202016541,197.860614596792,199.992437940577,200.087760603334,197.917687166825,199.935287648607,198.259789834245,199.996653236977,198.870234042793,200.54924516635,200.090321979673,201.752985813139,201.497232159791,202.344322851586,200.392772533746,198.210931243461,192.524754112995,190.937014713114,189.996255214954,193.958128630704,197.325660319861,201.531740265953,201.324230092438,202.546343378403,200.867114562059,200.863054779279,200.065224606705,199.511891671956,199.718412160579,198.556947415168,199.621076710268,198.268889080777,200.087760630857,200.196915802926,198.300200991187,200.05828897444,198.46248238374,200.175258702044,199.302519372436,200.996090993292,200.698166848599,202.533641390549,202.664149592095,203.981775131328,202.110801386938,200.195596597177,194.584471806165,191.656231308292,190.787479106908,195.810078707959,198.833991541979,203.628287438002,203.024768383105,203.466961998208,201.83820354202,201.289523142291,200.566319829124,199.68480945295,199.96017126308,198.838811937498,199.85405014777,198.53548333518,200.19691570367,200.230740287804,198.423359838358,200.14992128418,198.833568387911,200.471782338283,199.683512779941,201.322764155371,201.077617237094,203.05298668005,203.366257924136,205.236504754529,203.465038296049,201.537609841849,195.917156236702,193.732921044035,192.239435062358,197.313275313407,200.503886818757,204.528618147161,204.37707116554,204.163817026068,202.562871973153,201.663065439,201.000345497172,199.990833762227,200.306172259943,199.124053742668,200.032513028009,198.658129930031,200.230740241282,200.300802478578,198.747276267891,200.357143717332,199.148546845383,200.637899926311,199.853965372283,201.519339191772,201.433829790765,203.477814417742,203.598208944837,205.185707616808,203.605128994288,201.650633705131,196.453342263265,194.111152330234,193.030687944986,197.663998510889,200.695272201418,204.407078692074,204.422797263086,204.329206407718,202.885215068104,201.830043903862,201.340911557576,200.213931246553,200.503554313654,199.263581529382,200.132228290287,198.973948749379,200.300802487957,200.411328154589,199.053842602377,200.453849148959,199.280116636499,200.764298357009,200.15640098205,201.677384788059,201.377695540542,203.138090646954,203.049214094799,204.262542153228,202.378714144447,200.828544920927,195.523178630119,194.120397608538,192.254028146732,196.684742509773,199.788946360916,203.30242729927,203.689364676378,203.741448824243,202.933102362329,201.891670198111,201.536804006329,200.365195405157,200.693392683688,199.546537195777,200.357993637759,199.234836331929,200.411328081191,200.412625812901,199.157878046144,200.515101710213,199.551693979432,200.868183176787,200.301945977285,201.850327460878,201.411335306717,202.841562779592,202.163550813433,203.209256718567,200.599450665923,199.323150746902,194.433872604427,193.162259237803,192.32643522957,195.315546830139,198.185732607756,201.518749281562,202.501751402727,202.809175337772,202.478728782256,201.641233670843,201.50935667497,200.423768720056,200.824445319921,199.699582201191,200.403713640926,199.300174031347,200.41262572615,200.541103248284,199.387307003534,200.632641432847,199.830343630764,201.050770760419,200.074313177026,201.282156556845,200.854161013252,202.451480633397,201.290044349117,201.964968975743,199.368526092706,198.13240531574,194.428039753916,193.255928627012,192.392281425515,195.182496610421,197.164144467721,200.096066989093,201.363319642367,201.959243190517,202.075195415391,201.417054967859,201.588082868901,200.560236208905,200.955462294819,199.881549296768,200.550961991199,199.620983386963,200.541103262531,200.517813078952,199.712948395509,200.68369451906,199.587621689985,201.033229908652,200.758299506399,201.969665437753,200.669724781965,201.862495226905,200.37274610653,200.866988327461,198.322888643961,197.620864744378,194.399360109508,194.03270813236,192.979609145136,195.040595633221,196.804662668086,198.957210250683,200.354335172567,200.929402441784,201.520013060815,200.976413289951,201.287762983207,200.392048419893,200.826421166512,199.917417394546,200.558993039178,199.672085189914,200.517812992427,200.68324713993,199.597564504126,200.987178321802,200.156741341271,200.455745756562,199.325818552469,201.33327019541,200.340446792676,201.554692573783,199.879975387345,200.654385325871,198.040386683142,197.705766596624,195.188909133167,194.938401780577,194.441362764524,195.615449290281,196.995501785076,198.643040433002,199.950372996903,200.549967899897,201.166286044641,200.87920041777,201.269298615547,200.53972330385,201.103426405546,200.185509525925,200.831949171993,199.972265894312,200.683247110459,200.688926965598,199.927412437711,200.210511688413,200.479402790431,202.766066892403,200.59383789693,201.101817633791,199.670037317076,201.230053027718,198.931533268539,199.797107018954,197.632727202578,197.307949128498,195.694708743527,195.343764079048,195.0637658436,195.902506907348,196.906863088406,198.055916904159,199.287318003815,199.668707065463,200.583690577662,200.151611167951,200.96533332378,200.136323960602,200.763916895805,200.075361696152,200.473006586345,199.936914357756,200.688926900658,200.86403652287,200.982284662829,201.649586093415,197.549947403085,199.119263555066,199.937452766664,202.089543609158,199.386525575497,201.522355903008,199.356538955431,199.747807895623,198.302984759863,197.749236553705,196.700711719725,196.424765100202,196.24168386427,196.778356723324,197.631435469138,198.397669546505,199.454864678264,199.864753276237,200.591584421953,200.627285341625,200.867175225336,200.789850192362,200.994264368204,200.592152676821,201.467457409027,200.221191668267,200.864036535656,200.577234106042,198.451058411126,203.510587826205,204.650162749866,202.560761275093,197.6357652369,201.703429975508,198.457753817384,199.806433067564,198.813080306412,198.482533230495,197.738208794233,197.146234083041,196.455302380268,196.152714561113,196.160676114623,196.381867256568,197.107596447674,197.635388818501,198.64020884707,198.793537411987,199.82107832115,199.277367691176,200.622787148714,199.267473599645,201.153178122863,199.616010563337,200.924879197722,200.954503960256,200.577233906587,205.428604350538,201.55038203018,194.454782968025,194.843604924698,205.452059770076,198.99916276942,201.753417261173,200.808320211615,200.120865417146,200.073222598755,199.260908573403,198.822971648122,198.213684440555,197.800943708911,197.483891804838,197.568119520243,197.734956073713,198.344491376533,198.691474097467,199.540060193403,199.692092247842,200.372909017961,200.544661643341,200.492011286755,201.66654196078,200.179189126307,202.753682577389,201.572458245632,201.24156205727,205.428604102989,200.199281887893,205.976527535585,221.098828288062,193.2458376648,200.407955735427,199.144694345845,197.612855538067,199.059527184705,197.956932961167,198.279358576899,197.558283332327,197.281475059957,196.739581386779,196.389909472451,196.166871887839,196.202620944229,196.230822987912,196.841258480475,196.979300731267,197.794740478674,197.886022535981,198.76246582222,198.2980592653,199.763598560152,197.624080790701,202.136819258805,196.098352522658,206.339345544853,199.934657612719,200.199283334119,254.153069555322,168.807105960689,204.031914930034,207.511224771331,198.796728222754,203.428790021494,200.217867025487,201.459598538084,200.180272434957,200.283704237,199.642436437508,199.406842955882,198.980650238873,198.779016032333,198.555655969766,198.741178059759,198.652804002937,199.220722782843,199.285900860504,199.96709295164,199.948910181983,200.614419049102,200.440517392912,200.631200994905,201.685658115139,199.200843055222,206.482579005377,199.33743882969,216.118218783927,254.153066045216,403.592259266428,170.642827559032,205.476799976364,192.973871243871,194.934729746375,196.882289340484,195.854531503685,197.22547900724,196.703830758207,196.671491977663,196.336029821632,196.010833400878,195.532252119527,195.408582125827,195.076477802387,195.181899038752,195.191398182837,195.67968336303,195.703166968103,196.496693810469,196.418332007962,197.062123390135,196.832441428557,197.203802714908,195.223825713987,199.206347598509,185.229604796668,214.754891221939,167.694511475708,403.592271571045,210.286840026847,244.523035681811,184.671676907731,205.410230246321,198.255067448488,203.05962673934,200.250633920128,201.847437213363,200.571098015364,201.268167458631,200.229157681406,200.832146477489,199.837774053524,200.328837546052,199.755100433008,200.180715863268,199.779691659208,200.559268677007,200.098996699693,200.926280026207,200.673432757883,201.22458871664,200.927928931668,201.607880109759,200.127320666868,202.052627816654,197.83299957818,207.19242782167,149.953670697748,210.28683507284],"Archive1110_field14":[0,-169.582911509638,-21.6067805996735,1.43977367017638,-3.08391413859329,0.160652301995671,-0.35917433420697,0.0573650257659221,-0.196727446565589,0.195588063482236,-0.119307148404901,0.171024304421438,-0.0570272206320444,0.122718567903752,-0.0938536638276849,0.104642772836046,-0.135478560365367,0.0449221399662012,-0.125710095141613,0.0459296913740069,-0.120240992898992,0.10098272696088,0.0599085196990049,0.149626804766062,0.00445264727673668,3.08619995063519,-2.05689404572077,23.043907994148,168.860383097146,0,36.0452108013239,21.9195228420418,-14.6198708461171,-0.343668216101765,-2.43392262425998,-0.665556036364625,-0.776095943707877,0.048414396600336,-0.468056744826429,0.234207067609295,-0.242576648591175,0.227739150544341,-0.126112356566648,0.15844792281723,-0.110725168499771,0.0731199677223108,-0.116008467104423,0.0265066258264381,-0.0834779290494252,0.0481010447894413,0.0419553985473433,0.202448533773476,0.168396617161531,1.01839736670978,0.0140460226358952,1.50549473417291,5.25821395413717,-20.1225813539814,-29.5668898337372,36.0453954527831,-5.17380459787798,-7.44367509425433,-3.52525148851384,-3.75927919971293,-2.30881756233737,-0.558810036475106,-1.36544255686747,0.096550568080508,-0.694632260092175,0.192175536526056,-0.356047744787224,0.207390432950498,-0.238296771230509,0.186727973836175,-0.169611050891366,0.154374839479961,-0.124452963746643,0.135805869822668,-0.0774237296840028,0.166989125559309,-0.0134325426964729,0.471163622176077,0.0258709359519085,0.716559256676265,2.63398978498753,-3.31724358874021,13.6553280835517,3.187353910966,7.75821984958889,-5.17362014192076,1.16527138007236,6.43889202706233,-5.1519697528117,0.0580126817399706,-2.95663438257487,-0.479006980789209,-1.3194668560081,-0.143756050589994,-0.659761767652379,0.0498751421991918,-0.39080286358388,0.113402020824349,-0.241920751385175,0.139341132078117,-0.154205104416884,0.127352718218164,-0.0861064107437651,0.132543509004909,-0.0161730938666918,0.271686913279852,0.0709787920922995,0.392843611712228,0.950651788072261,-1.0155655777141,4.00268078109943,-1.88908011193344,-0.464076364488794,6.21251863531881,-5.13247679898914,1.16545869206034,0.533448339041619,0.838239870964315,-1.13181146378717,-1.30628707059117,-1.61455643930562,-0.746908186571836,-1.18330938300385,-0.250505531050019,-0.771350673722714,-0.0370548932436928,-0.468333305829169,0.0596173869828876,-0.27381803929846,0.102611636052674,-0.167808976799472,0.140420360160093,-0.0591729256362822,0.202356278733163,0.0471315406014804,0.2565617718838,0.423580786814198,-0.259957844899209,1.88845959590525,-1.02953346693237,2.63406751935267,1.67072942630575,0.54210803328015,1.51265991403761,-1.58203691003922,0.533636046947418,0.132630114893314,1.84446483713652,-1.56075854865358,0.0667728899717558,-1.75398948994131,-0.398314692308346,-1.25138651345635,-0.303212968945209,-0.797013319356266,-0.130952117337416,-0.503954182249423,-0.0461481790050768,-0.333862775761218,0.0371061668015791,-0.166032870989877,0.146768541916642,0.0048963072183542,0.221318235451244,0.23917203680715,0.0283825909114531,0.92128798760116,-0.450534323197273,1.67842350868853,-0.080798901051721,0.762173341096088,1.15258257335361,0.179684850274744,2.3058256375872,-1.98620194486069,0.132818131519296,0.30401843273651,1.15909915567746,-0.669382755646077,-0.215183950209152,-1.16513020345718,-0.528253133082897,-1.06654927681486,-0.376381216533186,-0.795498463108881,-0.265799167892278,-0.609680319529792,-0.168794651867632,-0.4124651500605,-0.0256322811535541,-0.154444896861494,0.141298400438032,0.11371169453409,0.166529036154113,0.545531957407787,-0.0535058203955081,1.12641140954699,-0.158386718669451,1.14503562603897,0.478909818807323,0.81194068309769,1.2430525732666,-0.557619027015488,1.32927364709207,-1.28988977953188,0.304206674164591,0.0591281073620764,0.945745580498416,-0.645841736400553,0.00431184009459362,-1.07879696164691,-0.337538237170856,-1.02101821177334,-0.431863619700511,-0.885742360663092,-0.410875106427631,-0.742386447242723,-0.334866209752842,-0.519375871098162,-0.165055146204543,-0.167842764674927,0.103011044828739,0.335371309693958,0.20331121295125,0.836654030778218,0.0776736110727381,1.03443308907889,0.147133573482502,0.883413872935543,0.665670853401059,0.290111417953396,1.43535849653832,-0.351015723069941,1.14458014772314,-1.08112492411691,0.0593166172926729,0.0484768532578026,0.671388017374474,-0.451967523133387,0.0286818460694262,-0.826781040310692,-0.403614782195195,-0.97301643252814,-0.542979855214944,-0.970004131650032,-0.592881909850987,-0.919585447055431,-0.643452311646043,-0.758771140201148,-0.393176450308793,-0.161470459915754,0.123767128235727,0.625110156811356,0.392975397486351,1.04632520143587,0.355648127771538,1.08718366209456,0.531455585049498,0.753975612871986,0.968904581801118,0.099811105309307,1.14123504060843,-0.369134785418006,0.855706658062093,-0.758849676579001,0.0486654649308104,0.0995069727446454,0.556899284653839,-0.365935168599717,-0.0012278931390988,-0.785445485037431,-0.407884797669663,-0.982390025371828,-0.61931728717161,-1.08390461982715,-0.899830095108337,-1.26296091114143,-1.09270766991259,-1.1510229194576,-0.742673798829041,-0.183651079506103,0.218109726125686,0.982316033092191,0.767928096698287,1.41359907343267,0.83207820695507,1.17242603898795,0.870366180000936,0.59987029355015,1.0586803173813,0.169691186497179,1.09974634548926,-0.295270959417066,0.676717343194653,-0.606214154458852,0.09969570114889,0.0563117449966239,0.441631984969152,-0.362947275277663,-0.0651003970950774,-0.715529442551653,-0.422158037207637,-0.961710458489812,-0.807152091063971,-1.29064433931146,-1.26468204060339,-1.74605454948538,-1.74952761550087,-1.75288875004176,-1.31256287103735,-0.289684266371163,0.411871040621241,1.55469946345687,1.5189312773875,1.90652795678052,1.40865924135762,1.31647084404591,1.1953187381377,0.695236481397999,1.1375971834199,0.147984003672213,0.99551911872123,-0.17127911421105,0.609637501688325,-0.489294612404145,0.0565006527477426,-0.00551158449963344,0.296954442197566,-0.311978739330297,-0.0661482195135716,-0.652653065502233,-0.507059830737802,-1.03026493924179,-0.962995351817899,-1.52565259080002,-1.65617742456327,-2.27342683844236,-2.62729740598973,-2.68580701420571,-2.14052539479037,-0.462719119480409,0.932012517525331,2.32494395367045,2.42323039610979,2.53117778182429,2.00712256569151,1.60805299754848,1.50626852948896,0.77177778705244,1.23828126168213,0.247381039722866,0.933717334412711,-0.0905951226232147,0.503288999331542,-0.352650375245822,-0.00532260389721837,0.0704901028266936,0.223416728795945,-0.275746888202614,-0.145071672796086,-0.666506548854629,-0.568812692109515,-1.07455893563418,-1.0702826469717,-1.65203591551619,-2.04311234392702,-2.80991853962012,-3.46666155255286,-3.59525287777155,-3.00837414427625,-0.816418787069529,1.37133287909887,3.28926955057457,3.44654437219497,3.11114957779927,2.59154498649213,1.83121914214285,1.75839210695797,0.865702761538583,1.25392566327461,0.340315604692984,0.86808798031258,-0.0275583792052125,0.454083539897819,-0.241025614473275,0.0706791713430556,0.0319787818577825,0.16663292900915,-0.303837398887937,-0.204794045370988,-0.649032610764289,-0.5755097645385,-1.03974147559649,-1.17101955433046,-1.70305946733411,-2.12796432777979,-2.90504661758482,-3.83197760488491,-4.20428133729271,-3.45952009872769,-1.15616268125207,1.58362330987991,3.64047627640382,4.18614987843629,3.47086365075147,2.76096767712166,1.87662715456814,1.82294642745661,0.962507222404968,1.25450439964435,0.381189605322473,0.838899647785716,0.072018516891668,0.438633603247809,-0.19280915205008,0.032167989943526,-0.00914697134064732,0.0700668781828773,-0.272740261016259,-0.201288991097588,-0.590899329159331,-0.612989324109566,-1.01055220776426,-1.11138342415391,-1.55351254531961,-1.82845112915511,-2.41894819266671,-3.0551699114792,-3.80820558819574,-3.31988125988836,-1.16584233365505,1.34101903115318,3.3043613534831,3.54670782933162,3.02461038965749,2.53041257390549,1.636952407036,1.71360769186437,0.89729804171005,1.21723633359858,0.435636544056973,0.785834403659343,0.12650960307135,0.379822723721901,-0.103489980786851,-0.00895770461694717,0.0492826485092858,0.040729181395124,-0.241836319589255,-0.240843569001328,-0.576824512152543,-0.582332377795534,-0.909513363195492,-0.906494283825091,-1.15454034492877,-1.17286666011711,-1.41900894708687,-1.66761678171371,-1.80554221970967,-2.01480651427938,-0.93578569437572,0.456443804952962,1.6742754945924,2.21408612026351,1.53703724912588,1.69332480651458,1.12793593402342,1.40673483287615,0.773140514337624,1.07913096678831,0.443193263683066,0.702260283161689,0.141258509252189,0.350072006804237,-0.0390914085138595,0.0493773161821512,0.0152382431085543,0.0138515566274386,-0.254029399851212,-0.249903525858314,-0.516289652197768,-0.482650343998234,-0.727822353344163,-0.701591297464166,-0.747639320852367,-0.439193058880044,-0.0277283208471323,0.172661487531423,0.155754778142802,0.0953681120866178,-0.383479025504765,-0.318575457759648,-0.504211839441836,0.0654686198634815,0.041762182418326,0.458151251242509,0.430663420952758,0.958427280336236,0.569458193659147,0.892828386078957,0.373913520174372,0.63767644057668,0.183878678389795,0.329421450961376,-0.0206807684282231,0.0154276777454392,-4.59299547625719e-05,-0.025257071110464,-0.217462698769212,-0.200332957185431,-0.420879722981547,-0.396148124331303,-0.553787733329322,-0.407607883634715,-0.322363707447121,0.193168488398038,0.820280616871062,1.71359551893761,1.75641711067319,1.35241547602134,0.293004882604997,-0.837581344329108,-1.70257736473517,-1.76557369789674,-1.39820392006306,-0.454885525802807,-0.2399461673675,0.494546955101057,0.297183353906077,0.702094548256539,0.318737092772047,0.541641983722258,0.178118132742461,0.27050955110725,0.0150540213515015,0.000143545000617762,0.0183639972452479,-0.0254873086290343,-0.172277738623986,-0.174402560268781,-0.378499638868558,-0.317575010267527,-0.427602446180099,-0.134078343375734,0.0488758098368018,0.685256295203696,1.2451622882285,2.12108293575721,2.53054090221426,2.03602950322321,0.57590328083018,-0.987949363586247,-2.20838531524516,-2.27596805442915,-2.14986923429957,-1.07078971141128,-0.668299470095343,0.113034535304638,0.0742559543206455,0.495043245100385,0.229299056843579,0.425826483802514,0.141092759156912,0.233102892210739,0.0396105000212704,0.0185535031115779,0.0356491923849796,-0.0072237836879086,-0.188819115017704,-0.143135078162214,-0.275420887138342,-0.0932145834947066,-0.21391903690639,0.0340219518461323,0.138766068329661,0.821022633979903,1.38060221916644,2.08763333920181,2.25794320893258,1.96060463435857,0.675436075118863,-0.772355873907109,-2.0570635231743,-2.21291108824299,-2.0945134029555,-1.30544729868378,-0.886901144088384,-0.14542254609514,-0.110165522763151,0.297045970829893,0.121618525659126,0.33928822347405,0.133351888120372,0.199253713674737,0.0232498477548872,0.0358387592405765,-0.0356650359641829,0.00254960483933394,-0.142063140169714,-0.0716104029697936,-0.307315282693778,-0.0905886300904819,-0.140694738220514,0.319734903494955,0.35776327302615,0.909142278109347,1.26073318046099,1.8099818924561,1.83904284412395,1.47033740692648,0.569975676494306,-0.52958705053618,-1.53597110400093,-1.84589092700363,-1.84194555998625,-1.1948811584695,-0.977370217707589,-0.295817721533747,-0.26272175129702,0.169159907771295,0.0461967399010619,0.257536490308724,0.0930390494078253,0.145855355298777,0.00867467504785064,-0.0354754745511202,0.0472700935972169,0.0278217426278089,-0.123799572342332,0.113393656554625,-0.131197005233524,0.111473292533067,-0.263084183711055,0.254669866336302,0.373157359050704,0.868319516210321,1.07547973331205,1.36960876140993,1.48539632166403,1.07518479167075,0.440952230580116,-0.397079488603097,-1.12324302766466,-1.36037537903058,-1.53075597414342,-1.06621434223281,-0.909974380535838,-0.401341585142089,-0.289076638642313,0.0306558502193827,0.0151348588448168,0.156621178163781,0.0488959084502747,0.121516316610184,-0.00537695174408985,0.0473648670078916,-0.00230209451667146,0.102682868380271,-0.323372861212255,-0.11133279829965,-0.434087804890215,0.383693435372452,0.189952417944022,0.447704440253765,0.365241895564035,0.751520912229061,1.04167334555761,0.982962432369063,1.17010955849514,0.741102759015061,0.334570830999062,-0.257881873173614,-0.853102428847419,-1.01207912111498,-1.20936254466312,-0.901513341794089,-0.85034818498756,-0.351881091639955,-0.400068004155264,0.041890532197789,-0.125234103814241,0.201570592610011,-0.00109120332440468,0.119555610524665,-0.0407762720108714,-0.00211257220770772,0.0467559135636635,0.332445665067621,-0.000454407207104737,0.532025803157758,-0.361507669540107,-0.25111961868924,-0.323800164555671,0.398284058669099,0.484900839388595,0.43807995921827,1.04444308453532,0.706091251188833,0.934450358569805,0.542090238609097,0.224262878296469,-0.162695694543557,-0.646923468029379,-0.767362988518077,-0.968507154968041,-0.726332111906881,-0.737712233854673,-0.392244301090807,-0.28335498196572,-0.131837319623294,0.103211918337536,-0.0315918126373355,0.183656464867863,0.000700566190694277,-0.203663299797746,0.0469454034321558,-0.248093498941485,0.289678862794871,-1.09329066896122,0.077611889750797,0.105504343878457,0.96660691269499,-0.0643040815898373,-0.0620436503510182,0.880497656100989,0.0979974126125277,0.902393696699236,0.555021036035775,0.685088427196603,0.438334440850879,0.144757260300318,-0.107915976834156,-0.499464679231825,-0.547810655124359,-0.7954802051422,-0.595248019587279,-0.633878637844653,-0.300411951653097,-0.364695297185943,0.160895463779047,-0.25144134132227,0.557678463156515,-0.313852458102694,0.568253438671205,-0.533194055310687,-0.247904239291326,0.592470127166523,0.534802789837861,-0.0537100648676699,-0.20969131963984,-2.43313222887678,-0.451267340218308,0.929892637823377,-0.766812341845305,0.933653782048321,0.188218292451528,0.649289393061135,0.532160863292507,0.464738527179597,0.368983117666174,0.0859320808474615,-0.0686208177315268,-0.409821329450594,-0.405489950578911,-0.642209586516745,-0.452016562031713,-0.517164157325978,-0.231446318884976,-0.18764086115208,-0.0472126507036096,0.434209014125466,-0.215926403754527,1.17823067815774,-0.493060614326036,0.69523772475047,0.592659101200444,-2.02291118755791,3.18091594765165,-3.43046602599155,3.41771866588975,1.65463578925179,-2.61735689304436,1.26151626895545,-0.532500105644861,0.334611281680927,0.253638527435058,0.40957688578409,0.421280028789565,0.346679333014403,0.304331991879336,0.0560949869137127,-0.0378466614213498,-0.299786423002983,-0.309764233541372,-0.511627965869848,-0.328136685117181,-0.414513890447107,-0.193549109655706,-0.109537245857298,0.263821755740362,0.0311431671160582,1.50752283935728,-0.723635177308403,3.05106014956944,-4.86830130404642,-2.02272235747995,7.60480207729356,-8.37159221063204,-6.37744581033919,-10.3302601628614,2.85137514015503,-1.64694745682975,-0.129651138359685,0.254781038691826,0.0352706316495477,0.324518480598706,0.27694875074137,0.335401415838308,0.201324691880615,0.260849719079446,-0.0403936360893808,0.0110060928074552,-0.246775339664029,-0.194691026820931,-0.390243532038655,-0.185520102467804,-0.339167426627389,0.0104471668776966,-0.109822551282134,0.396482809423972,0.607960136650123,0.630007536268741,3.75455631831335,1.07497165892938,9.20174298756675,7.60498675318248,-31.9322673291108,26.1917763134113,19.0783447534548,-5.27887833946725,-1.5992748362942,-0.405453726852827,-0.610375733594196,-0.293724078046477,0.0760714317971493,0.0367309980325329,0.242344851624616,0.160649950485681,0.22667936363534,0.148294498833175,0.017510527975307,0.0175145788348117,-0.168455129179817,-0.162430391892864,-0.258510557584024,-0.138416205838702,-0.245671823884908,0.036764924786769,0.162600006265085,0.125737057306296,1.32130969619443,1.21331512709455,1.50357179594306,12.0021167155936,-18.6099403511111,-31.9320832512792,0,-169.582856347198,-21.6067816577676,1.43977417764223,-3.08391438375084,0.160652234279352,-0.359174142612137,0.0573648968971167,-0.196727350827425,0.195588031741464,-0.119307148422613,0.171024274454238,-0.0570271426532655,0.122718497459759,-0.0938536369578348,0.104642804971082,-0.13547860820265,0.0449221490523788,-0.125710063995694,0.0459296520841842,-0.120240992464335,0.100982742276845,0.059908469617265,0.149626796054189,0.00445281582797936,3.08619937790468,-2.05689306497156,23.0439062657083,168.86044103783,0,0.948865990546454,-227.802052545246,-37.2653677000119,1.80465239172964,-4.79061582404888,0.23641677758197,-0.562409961425541,0.111644705394096,-0.286297959132397,0.234060678217023,-0.136781938610476,0.265857344552451,-0.132580887120797,0.250290784998431,-0.127894149144627,0.0861550404036305,-0.159571319644583,0.0687023847412124,-0.246046695940207,0.109867063847557,-0.172474060708276,0.107658595230189,0.133928631678613,0.240334747774921,-0.0220876521861678,4.84563862790877,-2.92937883754724,38.7073048453826,226.902574862147,0.948914776270112,48.2223033673798,28.1890521199411,-20.6291876659145,-0.785725892146346,-3.57446153702704,-1.1033170920649,-1.23431707981411,0.0435222988600375,-0.710656549597097,0.375455859484426,-0.354153334717501,0.353251323152798,-0.204780427741399,0.212634318581287,-0.147988488060829,0.11194749139782,-0.177540500749005,0.0513830954195908,-0.131504755192102,0.0571455630165011,0.0772402786398833,0.313543074754965,0.246982116249165,1.64915355351882,-0.176250592058546,2.36901992082492,7.9710501649448,-24.6337749151689,-38.468691448388,48.2225791405729,-5.02760783071682,-10.9608582884521,-5.65617595335941,-5.66946995541838,-3.71112652841361,-0.855165470104075,-2.06520371828511,0.136418379632818,-1.01983920383724,0.27893807781693,-0.595532359471468,0.302497786683192,-0.324538103903224,0.276906539171824,-0.24851040476497,0.250639910680669,-0.225977106692965,0.196766056154773,-0.0802908250339079,0.235253800941368,-0.0132912442195017,0.765842423865148,-0.0202302518165285,1.05065020933186,4.24402466937813,-4.51403480480572,19.7079150174558,3.22685874208956,11.5339355422701,-5.02733270103377,0.70062592993758,9.50149849430743,-8.00245582217859,-0.0357378761825038,-4.46128943955027,-0.725521726107321,-1.95769388605127,-0.306787657101809,-1.05363635103798,0.0704715550844046,-0.591808221232669,0.201002815693821,-0.356887739571347,0.186285689130042,-0.242166235071246,0.186472996347667,-0.126771651917278,0.223748065431358,-0.0205901608489221,0.409101645849823,0.0964742736660774,0.559420509495217,1.55398288316405,-1.28467457805707,5.88366911504781,-2.90063918196815,-0.225318502971385,9.40556354354045,-8.27216503007211,0.700906188830922,1.00220185738833,1.15769807106998,-1.66193498873855,-1.99659907074226,-2.42095544305805,-1.2263603290176,-1.92145818053386,-0.377471472621548,-1.15800026228291,-0.0499792419236751,-0.690834582206676,0.0663271071216271,-0.457302153171437,0.150848847958472,-0.229258423461301,0.216854200019535,-0.0830583522369498,0.316376200748182,0.040993403895281,0.368028133828474,0.721250605544003,-0.275194736585528,2.80198369977576,-1.62382672230833,3.97832855586562,2.3543684433179,1.09780499429265,2.21947519867899,-2.00369944799521,1.00248149839221,0.606245960991281,3.02373510655081,-2.31584861231869,-0.0502729672780074,-2.8218605381189,-0.608004657195,-1.89437187734446,-0.448858750769407,-1.18127893326398,-0.260598067881384,-0.817786948073755,-0.071132699671844,-0.496666099129427,0.0701389999212037,-0.242221350885272,0.21322154781848,-0.0161338364423521,0.3214459159409,0.41339194722997,0.121027290846303,1.37572877601459,-0.73923799717693,2.48202524627082,-0.143414485453856,1.36819340977764,1.94306753817347,0.275681462872983,3.48246282965544,-3.07511500462366,0.606526964018936,0.0695800519223253,1.67830768177635,-1.12962949303131,-0.325950690128774,-1.74366716137468,-0.794028387088711,-1.58531588278015,-0.653744513318373,-1.29611806836123,-0.398348489458349,-0.919733642361879,-0.254496639819701,-0.60969657316796,-0.0616491917179782,-0.279869222615074,0.206699105281656,0.22469529291201,0.296795599365227,0.821306311170752,-0.102363656863712,1.64315507768143,-0.243666636683042,1.91139791865521,0.851742526991035,1.18662762366824,1.89774417176148,-0.823086564188883,2.01359658553842,-2.10351090558066,0.0698616275242973,0.10638437536047,1.35000733442621,-0.887182506261525,0.0720646037371911,-1.60014894610826,-0.620820798836696,-1.66067059511718,-0.647191090289978,-1.34877234477995,-0.623001776103607,-1.1030913886659,-0.569379684044138,-0.856049921467081,-0.254658386199151,-0.228264964549924,0.185394058745499,0.51313195449977,0.307714023345708,1.2252271674057,0.113387898759395,1.70986925373746,0.33748181016221,1.31074841963102,0.977086587085272,0.46100517080932,2.13664048855973,-0.514495713794183,1.68888655468445,-1.50049296437215,0.106666096097299,0.381497702936197,1.16585044121464,-0.676930170849339,-0.0609157482654038,-1.36799160025268,-0.603962505068524,-1.47324932509173,-0.822403732816298,-1.44241423374125,-0.989720701340028,-1.49017920004752,-0.975054160026706,-1.17567492408343,-0.611501890851557,-0.256549637745692,0.162319438182883,0.931881238483493,0.612953368574595,1.7314619322819,0.652207652858035,1.62801386571829,0.789351097928746,1.12934540365096,1.43966305541635,0.23399174770444,1.76314656513923,-0.547179844466812,1.34030091266549,-1.1296492639385,0.381779875517963,-0.140689627620346,0.783275951985337,-0.64299318610056,-0.00727262799559575,-1.1617274641318,-0.594660997029067,-1.45973681824495,-1.04499487921753,-1.75026810575156,-1.35291978953788,-1.97391278505023,-1.70951442458435,-1.78439457760461,-1.26501588006841,-0.353013189172892,0.30204258197657,1.57477854360287,1.36073347284688,2.20524243732374,1.29965951515958,1.79044784835314,1.30180825836309,1.02398117071147,1.67978470221391,0.243089490710259,1.71686982984492,-0.392141852462913,1.01994580486675,-1.03209404112628,-0.14040712627836,0.0966801766846205,0.614210799892561,-0.471730131190486,-0.0367676634136942,-1.06206925639721,-0.743117442747124,-1.5644537188559,-1.20711273570537,-2.01042133766266,-1.96740713450305,-2.66072579823021,-2.81855292275556,-2.81936733945817,-2.15908049413255,-0.619364624275035,0.737991849931952,2.42445299056554,2.35310954840429,3.10305447657806,2.24672155273589,2.19011916206499,1.930977037928,1.03366509451478,1.77141127664541,0.273465954901681,1.48377131710259,-0.282519566275478,0.877263092315386,-0.655118663030344,0.0969627852154064,0.220014243633718,0.557692763466823,-0.469119602679283,-0.191787220649569,-1.08356265118377,-0.75708516810053,-1.58455231576645,-1.4790390637483,-2.29779501716073,-2.6860156333896,-3.63585678767066,-4.0940820841287,-4.10542362133527,-3.22637163318937,-1.01796622955433,0.922001157465911,3.63072056632862,3.97952492720925,4.147663584919,3.40728222385536,2.5447760519919,2.37571526896068,1.23681484040705,1.84626165427553,0.408343071842871,1.42460475078051,-0.134019695378115,0.817124687009232,-0.508902780803397,0.220297167568583,-0.109173294292636,0.284098572547057,-0.493891372129304,-0.218975810098473,-0.995052239995931,-0.84734802322683,-1.60206454202811,-1.76610796658975,-2.66728831342222,-3.16697925069553,-4.32664411566609,-5.24822460279838,-5.56643885370971,-4.39700678791033,-1.2812116012219,1.66108263874092,4.33132717836382,5.41436416025837,5.25429220532586,4.21969824221213,3.02540923141001,2.71253254029781,1.41534258753015,1.9629358808064,0.502266317745896,1.38238086333551,0.0224027537676068,0.684070118132799,-0.449231947930577,-0.1088901284014,0.0581107811404236,0.218302351049915,-0.405188223136114,-0.263429411395148,-0.96416325507276,-0.979091001728013,-1.68738236153516,-1.7730037207072,-2.69480843203568,-3.3798423107826,-4.62862632145081,-5.45670983689933,-5.86579261473189,-5.14428003376969,-1.59264035796843,1.86520223424994,5.12584613401287,5.62046550845035,5.36646651720554,4.69914086923696,3.14506623162599,2.95467021453223,1.46661103819541,1.98370009767887,0.65443000431368,1.25025056934177,0.0882861555636887,0.629194319401387,-0.234671611322969,0.0583940424288214,0.152223024841428,0.183133676032452,-0.410208004962239,-0.388183781638023,-0.981262689866913,-0.915841818086628,-1.56740831826881,-1.73182234761043,-2.43328193512892,-2.96770071961157,-3.89531387062662,-4.87241757185004,-4.38250304519042,-3.87827933224509,-1.66173864863716,1.27489885447717,3.57332465356722,5.30490354962706,4.34425093128796,4.014938396227,2.78176650657827,2.75712478292331,1.47710446706721,1.82524291716609,0.680113562079892,1.20044136623989,0.189029010376025,0.627782571532674,-0.129757426483128,0.152506526080538,-0.0816735431285247,0.0122765266365047,-0.432566295111977,-0.361045841531454,-0.866189481391422,-0.873037056470881,-1.36132572288085,-1.50596433305824,-1.95779864255142,-2.07434374231072,-2.11054437694661,-2.28808628467008,-2.71328305621335,-1.48413309564578,-0.825693279706969,0.632798130184853,1.34308424255009,2.04802237245832,2.61585067845025,2.59570285605442,1.83881557813033,2.22560092464558,1.23880565852072,1.68874536960401,0.660026461486529,1.12904793351586,0.277431250547219,0.52782055142895,-0.120255797297568,-0.0815316988724012,0.0294539538803598,-0.000189652659036789,-0.344517327478463,-0.341795571050992,-0.766499579564868,-0.820441700828545,-1.20476453073501,-1.0825973642067,-1.18837526514911,-0.836704149049351,-0.581978441151437,0.510462984186249,0.896282243487621,0.356554000429754,0.237600469276013,-0.681838288417325,-0.70236660914667,-0.735220857638753,-0.596157278112543,0.973745646543186,0.732328729904373,1.52551528555292,0.877720403011636,1.42140941211825,0.640208568348593,0.952098979412878,0.261770511220757,0.475104992487519,0.00804214286241905,0.029737703335322,0.123629179208542,0.0201234946781424,-0.3266936845085,-0.37410420302236,-0.713483423638024,-0.594268188526279,-0.830384159190952,-0.628550671489144,-0.564420452194599,0.180115599241113,1.02974268839697,1.98986063546708,3.07282919153063,2.85803787045963,0.741204855030064,-1.29758886533663,-3.10387407446248,-2.43434260689602,-2.3670230327655,-0.869668165194181,-0.241638454495839,0.79553140271508,0.513607538518328,1.05465816763086,0.482546545919764,0.824921358132729,0.266528349261041,0.451737587334498,0.0486251964074233,0.123913094488247,-0.0909648080043199,-0.0816306910416823,-0.319856105377304,-0.263863516535202,-0.549601514428116,-0.457682151231438,-0.635735785552702,-0.263637720757404,-0.0134752913046075,0.873761488082871,1.90560214127155,3.27327930334445,3.4268438503856,3.22023854224508,1.3199081221786,-1.17501633517743,-3.50029484860669,-3.7662757220064,-3.05351762229855,-1.68405576915876,-1.05789580106097,0.198279823041127,0.109172652008121,0.7559116621369,0.342576483209708,0.694834744681019,0.263009822396949,0.353003510187013,0.0147621683945683,-0.0906807866067885,0.0539804132867702,-0.0280794443878308,-0.246558172383399,-0.173169050207436,-0.407415834177072,-0.192814066637436,-0.406733467671376,0.0414236644464285,0.280578690880301,1.29132606046586,1.91128683044475,3.13718620749978,3.57054602340213,2.82202253811065,1.03806225457538,-1.00638639016404,-2.88204160518136,-3.48187707874472,-3.34377008661893,-1.89243960108635,-1.39275008432347,-0.256524584840352,-0.159921516482674,0.481859068083346,0.232396065055418,0.507389521131298,0.181267861889216,0.285393983180728,0.0648601030113603,0.0542644411256868,0.0558339584044574,0.0591081842468465,-0.214012962300951,-0.165279382362855,-0.535117906397749,-0.141287599939649,-0.173355904830578,0.540660752154579,0.526111675557313,1.4019460940952,1.93615824992189,2.59944379730287,2.84584894837468,2.41548876187249,0.868092950733119,-0.875901694517668,-2.37214511878952,-2.68032567159222,-2.87774580677507,-1.9289890289349,-1.44697202026619,-0.451720002828878,-0.391618671894386,0.254549930455441,0.055769098652297,0.376953692932049,0.14005103359809,0.253760467706242,0.0312433706107359,0.0561180404746153,-0.0298052806369115,0.000382651922171371,-0.236533636560538,0.154198148760547,-0.122830791576799,0.188485453210079,-0.381836130412648,0.353711898264342,0.548673211982984,1.27976313428616,1.73475705106366,2.2019615715283,2.17295372737319,1.62283943344577,0.744813008799156,-0.559731687764417,-1.77891507109005,-2.15171720849455,-2.26766770313329,-1.67421454824363,-1.42608752008784,-0.595014142178806,-0.47517474840407,0.0274810384780482,0.0217343682451907,0.262299809418442,0.113724663162218,0.184982055022057,-0.0580245032892576,-0.0296632177374059,-0.0200577718042861,0.121145303013996,-0.430031716314581,-0.0995457361247468,-0.6470527948432,0.511872818923133,0.248021509796788,0.669375028190062,0.640891116208898,1.20100684653992,1.53803624156894,1.54682685768915,1.84526974061911,1.10335313808719,0.508671072089892,-0.40043089333209,-1.25922806963237,-1.58674374305784,-1.91418144302089,-1.34044401634601,-1.33954023969025,-0.601117580892171,-0.592371818122955,0.0882165254251178,-0.173772820526593,0.298904983178966,-0.0146944223723973,0.155989852850243,-0.022097113986992,-0.0197738473349056,0.207410275599399,0.612357509372071,-0.0323661162230842,0.828910765506064,-0.698135470418698,-0.360211772825664,-0.467049627919074,0.658349112139154,0.716853441358138,0.678216286760176,1.64664045153539,1.05404597945528,1.45200184131322,0.883652449360142,0.334562625265779,-0.279729572500447,-0.999358362259359,-1.13961034313619,-1.5425350394047,-1.16455976460845,-1.10002346967046,-0.617172587934337,-0.4294966825617,-0.19008181242926,0.132516792187501,-0.0485504391081954,0.269054916518591,0.00174879052256259,-0.273898340627148,0.207694221785734,-0.535555249642879,0.404783974438975,-1.64500394477646,0.0602149207029378,0.184483804845833,1.48795789394543,-0.0764573296781971,-0.0899851987753399,1.33085473712721,0.162918047925683,1.42712503917714,0.864843528810682,1.01800529569145,0.704603640647969,0.223158884170667,-0.156321295018406,-0.776903963800499,-0.90422807560906,-1.18242968495762,-0.910065712184773,-1.00730303202925,-0.447058933428052,-0.569348811621417,0.182962187943886,-0.356840038694859,0.903069605535304,-0.458728922260848,0.839588150969147,-0.889532459614976,-0.535271626993012,0.798079478475888,0.538787458911915,0.264248870517466,-0.461640507191611,-3.54552393747114,-0.837404792161787,1.42982297342656,-1.10232444744277,1.39047891697103,0.320241130546138,0.964378967242734,0.825028946406003,0.770071616258152,0.54850933924963,0.104258851255219,-0.0888827615123413,-0.60988831322886,-0.662772452035793,-0.979495649032938,-0.675587602785276,-0.845375949043573,-0.359810683829616,-0.281223687236563,-0.0879805017664504,0.662016522099474,-0.284024584844727,1.79513489341239,-0.703136847835325,1.10180894974341,0.798361930304262,-2.6380852031226,5.58071805520999,-5.29510408179853,4.88494986901925,2.33887116388823,-3.75254245464255,1.89261885783564,-0.925586522035601,0.503873912702191,0.46440407577774,0.608345358079741,0.628723683677456,0.587228313275366,0.434164072594262,0.0865205650906002,-0.0166123399472979,-0.511554957438147,-0.45701887879909,-0.766797979142152,-0.588119026515557,-0.615744681606915,-0.247771545280526,-0.193109290367653,0.39581121335844,0.0742759350319614,2.15476253184356,-0.95180979171683,4.73791348859554,-7.32461635590604,-2.63780183495129,9.72367487804462,-12.5842291170101,-8.93639390451265,-14.9284837609391,3.86131011708702,-2.59480168690229,-0.182698723571515,0.375710306539366,0.125417237825804,0.474144418974345,0.387218225799546,0.579675763245324,0.300451116864219,0.359371244929712,0.00472119175394884,0.0134395357393524,-0.448893868735729,-0.269060465574518,-0.58289258329433,-0.336250255158574,-0.472928648196698,0.00654854280758482,-0.216161994082001,0.681570989052454,0.932805211293985,0.908972271356755,5.52763476046978,1.89196692698455,14.0654832251491,9.72395195812871,-42.950479350591,33.998858689662,24.8814572804089,-8.00788222417318,-2.35957343136898,-0.448461367306896,-1.10603567641661,-0.442324139145234,0.192860168978104,-0.00243068704018513,0.37054595817485,0.332009906986263,0.268410224310979,0.223685534096361,0.106327604592287,-0.0659556071755136,-0.236287912378517,-0.169708180865882,-0.492731283066067,-0.205669685209682,-0.312698602097229,-0.0302432844769587,0.246791199197664,0.301872470609283,1.96502447686995,1.8868612934117,2.69620342719069,16.656312442451,-24.3659648467725,-42.9502057667887,0.948817204822796,-227.801967762945,-37.2653685622879,1.8046543489003,-4.79061564798711,0.236416546550625,-0.562409777589475,0.111644578612547,-0.286297825929316,0.234060513051318,-0.136781824296374,0.265857248752076,-0.13258090375421,0.250290846022351,-0.127894139507055,0.0861549354223199,-0.159571212301978,0.0687023616439093,-0.246046789116439,0.109867141470604,-0.172474069348404,0.10765853497237,0.133928703006109,0.240334657950457,-0.0220874925817752,4.84563782276217,-2.92937554284102,38.7073029994292,226.902661751029,0.948865990546454,2.12117059988652,-221.973834074463,-52.8093763702022,1.59236760749454,-5.60956088077539,0.154078182696018,-0.666650678239983,0.0695267131195245,-0.341631839165777,0.342242982676817,-0.193968755384668,0.308722605665953,-0.0837323638280876,0.220046755547494,-0.159245451786439,0.179830368455639,-0.2453449275907,0.0653736530809215,-0.232156141996708,0.0675837938510347,-0.216276500364076,0.179617130014362,0.124605551158926,0.309919988556912,0.0990366445739671,5.6907714793947,-2.84584131410952,54.4022847049235,221.424027177971,2.12119788667781,52.4775369575219,26.3613454327033,-22.921268866427,-1.60126254706834,-4.30856629470706,-1.32361150184964,-1.41529789320277,0.0494458392361284,-0.838800191652642,0.40086314436448,-0.420936590946041,0.397232709137232,-0.213357786325846,0.279010832774311,-0.193742163054761,0.125663020507473,-0.205588622933031,0.040686570768309,-0.149878423309694,0.0872746833713259,0.0818776450470791,0.369690568728648,0.324735673282712,1.93361926983926,-0.172428096022333,3.54873449690989,5.60834473296537,-22.3691648179891,-38.6391029293427,52.4776743816979,-5.52513326310927,-13.2822822418795,-7.2301706916178,-6.86290684590238,-4.37015839339066,-1.11599589311505,-2.49496670800743,0.114340432353414,-1.25307548138792,0.31926165818944,-0.635455379717871,0.361243866043864,-0.422411971012186,0.328909909445269,-0.298384234037936,0.271500873174073,-0.219018182945768,0.240849319185283,-0.133848413762052,0.299914731760866,-0.00469984026457602,0.862038396236876,0.0591888799923572,1.44639191630783,4.54996119331514,-4.88203614427922,23.7386294124905,0.492115537089979,15.4464272849596,-5.52500357624774,0.775344708600821,11.2600782089228,-9.0971731948685,-0.232030185272852,-5.38541896291254,-1.00245103108114,-2.42615355961596,-0.314607110778546,-1.20983176614818,0.0635507409109149,-0.709595176202632,0.190485817657726,-0.433978614704537,0.243614148549675,-0.274398460485649,0.226064876732884,-0.150544070443293,0.238810437132493,-0.0177762370272292,0.49513227485542,0.148415149479978,0.749014399433776,1.69016022608077,-1.6308949482475,7.09405592083652,-3.27232512915379,0.542908532285667,11.4349929696595,-8.72320138674558,0.775481333913964,1.22463326674012,1.47757268464131,-2.13809017067811,-2.43972264086612,-3.03143126359484,-1.43283457486407,-2.19610151169043,-0.509625525946602,-1.41791902910125,-0.100752208126455,-0.854319197719778,0.0887684111034197,-0.496234359643787,0.175526449637612,-0.300297113589022,0.250285370903971,-0.0983331967213148,0.368045464874635,0.100067997980867,0.479233632657887,0.769398297032757,-0.392842686053784,3.3923869329984,-1.72767467381171,4.90095823585523,2.83232038635079,1.06911946718257,2.42372934627496,-2.51422304761011,1.22477072408345,0.178111983762801,3.30862873736248,-2.78953396992328,0.00309063672193509,-3.21462179765067,-0.818456981792703,-2.30714024048958,-0.61070873084585,-1.46885509193294,-0.274765737759362,-0.927392184132759,-0.106920152699648,-0.611118929040583,0.0540869983312751,-0.297962412142922,0.263510876449033,0.0195863026523479,0.409931544050857,0.443337118054816,0.0895899460211439,1.66405782968223,-0.736800478328927,3.05369868438115,-0.105468483988255,1.49927390554084,2.14637725438803,0.513841392369636,4.13174356338444,-3.55963239932225,0.178250272947832,0.554643394102625,2.07369384432725,-1.19233073007857,-0.451526355713314,-2.15920436798514,-1.02469456711147,-1.97853949493855,-0.738340944550321,-1.47489675723702,-0.523718557007279,-1.1281880139544,-0.337099767627495,-0.760529785603369,-0.0642833118528843,-0.28080288830465,0.256955169156326,0.217552415979321,0.326325457348826,0.999263807935357,-0.0447190572678103,2.04932164025976,-0.229180007359406,2.12025691019441,0.90973669857369,1.53856453230787,2.2502892019904,-0.925513920904842,2.36166768764614,-2.23958934536423,0.554782109420463,0.0958682501147199,1.6930407175178,-1.14747491874934,-0.0455073256585199,-1.98346355268567,-0.678002991864428,-1.89144976009934,-0.842074731552406,-1.64486941398132,-0.796065683760444,-1.38037133052939,-0.65147351826945,-0.972629931579497,-0.328585197110513,-0.315283519844569,0.194280947799508,0.627846962910191,0.415608729468371,1.54230609948908,0.198328159495414,1.90493808302023,0.318619313057995,1.64897377456867,1.24344008661103,0.604422964524329,2.61443425940113,-0.555832637115083,2.02368568798876,-1.90476874485435,0.0960075525662524,0.0940367646926835,1.19843924341438,-0.800048455499948,0.0119759456983667,-1.52645235150122,-0.787585726651088,-1.80868817679978,-1.04504751509865,-1.80706228560762,-1.1388246945651,-1.72689258769401,-1.23759011157025,-1.44538207079965,-0.776343813713006,-0.330096651352044,0.236605351372187,1.17939883175324,0.800736249560478,1.9682967165265,0.726577776615858,2.02659493612876,1.01819308310845,1.42727056104906,1.78492223698512,0.249234552368527,2.07570860981783,-0.608054421196123,1.5211674372002,-1.33890744337091,0.0941763002342632,0.173011230362081,1.00488799290621,-0.650741401225273,-0.0372245138817906,-1.44945616383003,-0.793788047077464,-1.82594064013613,-1.18991450445937,-2.03088498539041,-1.71730316729459,-2.39029340859296,-2.10551208666521,-2.22822308670738,-1.48644179023713,-0.441339234942611,0.387981713457855,1.87713307916605,1.57653068621748,2.73852946374355,1.65103071533423,2.22495633752991,1.64219820702353,1.1601546574774,1.95357585746981,0.372087466965145,2.00509357719663,-0.484604499596973,1.20442911878169,-1.06548504027181,0.173151013465722,0.0960461500423998,0.786312390439924,-0.646723212102358,-0.149704404680237,-1.32209514598358,-0.818159128451839,-1.79664325547939,-1.53825927987349,-2.43023415663529,-2.41670773155624,-3.32169202739083,-3.36101800333262,-3.40561994515232,-2.62781929115848,-0.770068946311783,0.648818759736352,2.94499705163076,3.08083507546698,3.82165733090995,2.82581852192367,2.56474213030761,2.26210009263539,1.34460076514589,2.10257156623745,0.332504565277337,1.8195812508423,-0.26480722591201,1.08399213816614,-0.854576466971436,0.0961863045808873,-0.00583504001970184,0.527582534509538,-0.560307185362323,-0.148489272721939,-1.21177671529743,-0.972267413893555,-1.9289500711747,-1.83623033940333,-2.88570817101495,-3.17508842817789,-4.33693107648752,-4.96836727924971,-5.06709040634191,-4.12172556293068,-1.23040247752953,1.3435901338796,4.19683208927491,4.7948021317941,5.17543223655558,4.10729295338168,3.21139274395151,2.87519980994556,1.50427410368435,2.29364706190323,0.513063704189495,1.71090329196875,-0.122838210133735,0.900253783554978,-0.619898593700038,-0.00569472505594296,0.124091069532676,0.401898755546727,-0.501111335387047,-0.291485910203687,-1.23971786059097,-1.08691113139424,-2.01498888457471,-2.04645438382566,-3.15659912642436,-3.93318174943728,-5.3396476770519,-6.36602453029606,-6.39202154567405,-5.33469239685871,-1.82251956209903,1.75393223437152,5.43743868749373,6.40640448543366,6.30651669475736,5.33840947948901,3.74300877402433,3.39080840056906,1.69550367149971,2.33244066283027,0.68074559621934,1.59660992442257,-0.0112324680235724,0.819321803057037,-0.417393001886077,0.124231568244426,0.054083071811214,0.292022875733415,-0.553475797572718,-0.399877978884965,-1.20873493431045,-1.09974776410519,-1.96038753016949,-2.242107767119,-3.28922909500383,-4.14903013526578,-5.5266942215295,-6.79492388950748,-6.88425014751205,-5.42737351609133,-2.05518425834338,1.85125968779608,5.34286076254062,7.10260845141265,6.70370719783626,5.66422428147017,3.89100868549144,3.55034849163739,1.88515653020292,2.34152814208128,0.756848083007167,1.54753513050789,0.167786097350836,0.792347356112154,-0.329116050869322,0.054223856875148,-0.0137289641790791,0.11861155392649,-0.500908520358478,-0.391868497370957,-1.1061017919822,-1.16595672518414,-1.90911327247518,-2.14171175515916,-3.04521751223467,-3.66766429071843,-4.68591240097814,-5.26472755028734,-5.67340798738103,-4.46260958703219,-1.53181663059692,1.47665015155465,4.2586261624115,5.2986053330927,5.4273142216085,5.05382080960901,3.41739162368196,3.34977422801043,1.76872242738643,2.27555993425001,0.853861723428342,1.45367400035852,0.264354916363798,0.691570363900071,-0.174447541758299,-0.0135880535223166,0.0884745392176497,0.0705361835190659,-0.448778640296605,-0.46293048390013,-1.08004372934594,-1.10775725425894,-1.71844912208468,-1.76132870164133,-2.31901023324786,-2.5159338993096,-2.96589643664072,-2.86275280904858,-2.09022344677697,-1.92012540518422,-0.726538453286636,0.287972309448791,1.47999957213724,2.68439700204068,2.40741559182798,3.27638010585895,2.36329563024526,2.74751860912228,1.52496185096077,2.02082736885988,0.861550005255977,1.3028350359464,0.288930843765411,0.642664850550504,-0.0583269830161432,0.0885450654878681,0.0247451647503406,0.0170186061500374,-0.470424105327596,-0.477864547130793,-0.966320664536644,-0.920214802575207,-1.37923349381858,-1.36826791988035,-1.54204766869301,-1.14361785771558,-0.502241794354634,0.198600286796901,1.00626232404451,1.48788542993972,0.312781640989814,-0.639328887854306,-1.83129970158915,-0.86585205001109,-0.34360960722155,0.869000080435957,0.954505213300412,1.86358255323274,1.1241928482871,1.67161576535009,0.729984041266025,1.18434741623771,0.363412176179964,0.604620917216021,-0.0231904155186144,0.0248864193754273,0.00326989285578709,-0.0517062117885711,-0.40436563018146,-0.384425161223075,-0.79039003711589,-0.755032347109223,-1.04649587987095,-0.801609739194784,-0.704898619441858,0.106190029814585,1.11766389940726,2.82031594852173,3.40019062196273,3.17352018224087,1.28164573294165,-1.28760844542091,-3.41184204006434,-3.67789509297963,-2.80076693907292,-0.862776889550856,-0.364863721513839,0.955767355839502,0.598216483516768,1.31112671483153,0.620521183498315,1.00692827085317,0.349061701003477,0.499613998776608,0.035299954022388,0.0034112327544435,0.0310612950514801,-0.0486642654729463,-0.322801614478093,-0.335429295924673,-0.70804359286684,-0.605715436147569,-0.803543344034569,-0.275889218625917,0.040822674393172,1.12269105948074,2.05505471153184,3.62000831272826,4.56175445213974,3.96276272038303,1.46268533351023,-1.5326270437128,-4.01814138897722,-4.29646090549372,-4.02496754960996,-2.00232593869757,-1.20819345153432,0.217400392703738,0.165395144239997,0.921139636862877,0.447474662070592,0.792262470117492,0.27797685736296,0.432474038500734,0.0817932836628394,0.0312026971669703,0.0652513207769219,-0.0188494177944516,-0.348951900648255,-0.275613416730258,-0.513381477812376,-0.185778888351364,-0.398872767295628,0.0470078397000868,0.249730831402185,1.46659129633526,2.45300162491397,3.70072608404597,4.07088841099604,3.64101523441687,1.40526099269238,-1.25831472559358,-3.69447091274335,-4.08291225012326,-3.8847615230857,-2.43811831847745,-1.64092013771018,-0.281065640808825,-0.189941613698256,0.549278260347949,0.243673143831845,0.630448976032112,0.259806097301929,0.368401994625351,0.0498203435410022,0.0653928461376776,-0.0642510214018554,-0.00115156736691717,-0.263277009389112,-0.14176614062262,-0.570799226632012,-0.184010188724611,-0.253564579188716,0.585503173770684,0.678245948537419,1.67864070638566,2.32801534385968,3.30348977395331,3.36981413087181,2.71825329191668,1.10445622293152,-0.91762130751573,-2.79740521588791,-3.41443066845264,-3.42278425084451,-2.24981313602587,-1.81832771069069,-0.570351638655679,-0.478745987415021,0.307234088821696,0.0985799636867158,0.47742660945428,0.182070848728747,0.269879862032859,0.0232968049997186,-0.0641095087961368,0.0849906060277649,0.0562321645356099,-0.22786288053266,0.193914560275224,-0.229609619698841,0.192196234964113,-0.474295263266762,0.464264713384439,0.712039639822414,1.61685432457833,2.01880676373776,2.55160873762839,2.75693073066357,2.00378018233381,0.830348547435789,-0.720426324038832,-2.07782541161037,-2.54446080786041,-2.85577879855785,-2.01400908503145,-1.70300248434702,-0.763776739795158,-0.537790107764316,0.0516816534740114,0.0342451277297834,0.29006341269009,0.10002302545301,0.223597848868366,-0.00637229068051631,0.0850613494788806,-0.0132387248225363,0.170929343726442,-0.574765496556069,-0.229266310695349,-0.796534642852911,0.693000455311967,0.371158166189152,0.827611348633938,0.705547621166467,1.41118632071703,1.9499800673509,1.85740345864735,2.18150606722189,1.39515342579786,0.625057932383364,-0.481749958813541,-1.58891116858196,-1.90622544314042,-2.26316651125302,-1.70681125051391,-1.58841249189025,-0.680497625309381,-0.735914839491452,0.0606626761117379,-0.217527399551451,0.365676404655677,0.00691942443358148,0.218321760574187,-0.0598639039881134,-0.0130973025355637,0.109662288937152,0.581839388810144,0.00209989921112294,0.979872861411242,-0.640446157513438,-0.486656332582681,-0.579386297330242,0.725895999937733,0.91029442218362,0.84939010481212,1.93901233862926,1.35110880693006,1.74315606650729,1.02473692697753,0.42173283618859,-0.3098787940585,-1.20905176998499,-1.44927197355864,-1.81457705592706,-1.37858064601341,-1.38185466915787,-0.743842651776731,-0.536725061828047,-0.238347276345778,0.177398875639467,-0.0428683958225496,0.335529006676046,-0.00548176731804608,-0.364625860047683,0.109803634285219,-0.489999712507375,0.589832283034443,-1.98208200197997,0.0305844267316816,0.223299712241717,1.73743537660407,-0.0791544703405179,-0.0850087482937719,1.60021519504061,0.238021230304112,1.66603945723507,1.0620734752733,1.28178316682162,0.82480053749539,0.27506433496938,-0.207657093059828,-0.932322486055719,-1.0402795273052,-1.48707449320213,-1.13101550877459,-1.18351684664278,-0.580763080097098,-0.664931918451061,0.26617423856585,-0.423202569409776,0.985537143317185,-0.525094990517974,1.01400881336896,-0.960349422879162,-0.489858791743548,0.995933141679269,0.664459501171618,0.192469711350448,-0.401645838804368,-4.31201533066132,-0.903021001436264,1.63795437846117,-1.3250425956038,1.68220249302044,0.391691834870678,1.21084420357368,1.00495435464354,0.878089648391292,0.691061915453991,0.166228132315162,-0.135764337286098,-0.762858515165338,-0.773485619333594,-1.20051556005915,-0.860720061748778,-0.967228684469681,-0.443303291088655,-0.357427483120513,-0.067526719164193,0.761436750952047,-0.31130156025746,2.09390243618254,-0.837968552180655,1.34783166747629,0.996073325715916,-2.68038904782082,5.43778577311235,-6.41026844242757,5.31394860600696,3.04455853852614,-4.5650389956298,2.16883147733737,-0.920007297915656,0.608205746886752,0.482481111889204,0.772482708022455,0.791529572759542,0.655450014746681,0.568656618559526,0.110302552292017,-0.0770141003772207,-0.557832941293388,-0.590463887617448,-0.954772087036937,-0.627935275637947,-0.773664016906732,-0.371237337689097,-0.196330885133971,0.467161811539767,0.129881817448179,2.67472561413102,-1.0858260151934,5.33305052165865,-8.81189808171534,-2.68024919385883,10.723284348418,-15.8591407542949,-7.47525633006403,-18.0673991574479,4.21209102650807,-2.8478600811209,-0.2746631901829,0.458467350047709,0.0860800551834644,0.603070389476794,0.52700551531025,0.629696895145976,0.387251729644994,0.482551519109749,-0.0652215288699789,0.0121491597995509,-0.458267613869567,-0.376578641568603,-0.725730578327492,-0.363228258258158,-0.626966264163028,0.00374521152779323,-0.190414035561979,0.732190077125672,1.13181306465784,1.29875683673323,6.76129412444314,2.55898759309697,17.2399420720769,10.7234152212645,-46.3828380839285,32.7997685150773,23.1693824857292,-6.05207057386498,-3.23162977050639,-0.753062420502588,-1.14572875067183,-0.526548036888831,0.119589875054684,0.0930264501707619,0.439262864602399,0.314272249495692,0.419664973365921,0.281235204055229,0.032552207281069,0.02996158252381,-0.312029635194803,-0.313026137314256,-0.476976960332499,-0.271905763695344,-0.45144755811738,0.0615200556999086,0.298371950468845,0.272286721231719,2.40645295206232,2.28623340532456,3.30581474786775,18.7093505404889,-23.0787708153192,-46.3827026040455,2.12114331309522,-221.973792224635,-52.8093786517821,1.59236825546267,-5.6095613173336,0.15407803924344,-0.666650315987507,0.0695264438314395,-0.341631639354585,0.342242921820446,-0.19396875271362,0.30872255169836,-0.0837321986183302,0.220046614429698,-0.159245395987538,0.179830432401831,-0.245345033009573,0.0653736628989874,-0.232156086964917,0.0675837037709924,-0.216276503361335,0.179617171332758,0.12460544006574,0.309919974448848,0.0990371263628233,5.69077021038122,-2.84583933167223,54.4022808228436,221.424069157431,2.12117059988652,2.35283672288598,-205.261838382539,-59.2782823911886,0.582231860888401,-6.25168251695611,0.244481959917185,-0.74514415342269,0.0901253257585665,-0.345275727172588,0.299072827822718,-0.161592181577477,0.335211758212557,-0.135577353891412,0.29874929084329,-0.15469317924675,0.11758997343202,-0.213340456925936,0.0685601501948336,-0.301299535320668,0.110155100729219,-0.214844006337602,0.133323870173562,0.191136686150112,0.354386004828741,-0.0081642143538665,6.37250108663556,-2.10996497480903,60.3727687752797,205.165647404261,2.35284161849239,49.6429533799573,21.7914267346314,-22.0055622267557,-2.02872708230436,-4.19326967458183,-1.56418509541152,-1.49846666278345,0.01537704866306,-0.871077531480807,0.43510595317763,-0.422245782476123,0.419266438654055,-0.234408623298265,0.26222462735818,-0.181803440205428,0.13278560986197,-0.21771358288709,0.0559092066524206,-0.162863058868911,0.0742585391670333,0.104780872723262,0.38480830512371,0.314361458102494,2.19079832937629,-0.492983171806895,3.5987573376773,6.48389021867383,-17.6427617824167,-36.8803694392139,49.6429790504638,-4.26913059850734,-14.4918167743589,-7.36310570828938,-7.34416037820356,-4.71852524510992,-1.15376423614093,-2.60512680632422,0.117801856729769,-1.27464406869847,0.320674654956443,-0.717932404014246,0.364761336735066,-0.403980127389248,0.337020176296182,-0.303243316855315,0.300743723388361,-0.266141913509284,0.243148956275072,-0.101656348481611,0.293487408939065,-0.0020636762148867,0.965011926044641,-0.0365696825842582,1.48206002726901,5.12623220662439,-4.82021224302718,23.7556742310098,-0.787146470898201,17.7921345298539,-4.26910927496804,-0.10347050264156,11.4112982229481,-9.81783174156552,-0.203784228265931,-5.66441880383862,-1.01489904984797,-2.48638514254942,-0.416329774169721,-1.30971248309979,0.0621951105459666,-0.737644561587992,0.228441754311695,-0.443082312614797,0.229283392020669,-0.294432721724201,0.228684139069968,-0.15269187454765,0.270472178798153,-0.0158435366836785,0.516693879735073,0.132856036340085,0.751501223561623,1.8974962855112,-1.53142271830094,7.29213204419329,-3.3982063583631,0.923474453308585,11.2400885379295,-8.9686863381649,-0.103446936161701,1.20259071163695,1.40326488525621,-2.06258085339755,-2.6637894299217,-3.06294524648791,-1.61244060724147,-2.40294740898796,-0.524951485536335,-1.46658148292785,-0.0949532114992276,-0.872770146556907,0.0706867409663938,-0.559826911709981,0.180005683578513,-0.28837751728917,0.265533682437674,-0.0973556974429243,0.394674401581603,0.0689822714046326,0.481645319499416,0.88453126271859,-0.318195537997362,3.51536165057289,-1.89277482585469,5.05869301492204,2.80948755505716,1.63321224060022,2.15789030457693,-1.92483925192131,1.20261200077526,0.621636588001675,3.58645628331955,-2.85100435300833,-0.109800367316295,-3.54319798365644,-0.829228173963534,-2.40901618699222,-0.617797120361493,-1.50361854836302,-0.345459080572578,-1.01850915971379,-0.110363647212831,-0.626581751913422,0.0712564751827571,-0.30188257532975,0.265748622782728,-0.00518854210860316,0.414024107521911,0.513092806948728,0.161496687005772,1.72746419754314,-0.847099498091464,3.1220330448453,-0.106906730399271,1.74799719968368,2.36107449120735,0.575971297146648,4.2590424891204,-3.67306375608784,0.621658615074998,0.174866355461222,2.03860449825193,-1.32895989664898,-0.488247839700531,-2.20555266636367,-1.07044069437551,-2.02099050060949,-0.852026249751258,-1.62289713880596,-0.537436724145144,-1.16891768786829,-0.346851211054838,-0.776062697009185,-0.0873353658971967,-0.338055035412976,0.26116187352825,0.277719801883773,0.379260998938827,1.03851731703568,-0.0808986014959361,2.07752855116122,-0.24037585959501,2.37025545421331,1.07728513646858,1.57300878421831,2.35761013826994,-0.946382889975168,2.40448519919867,-2.40473432645676,0.174888585360992,0.107459241734051,1.65067873159278,-1.09070200668759,0.019389018472741,-2.03596351226315,-0.806195670887942,-2.0841843733894,-0.862611170347091,-1.717520430874,-0.825020715736835,-1.4130479443622,-0.734913658505831,-1.07605882231597,-0.340374352519416,-0.298460740401614,0.229928958321583,0.655951467078337,0.420863878245981,1.56289573645502,0.196141839217491,2.12067881138058,0.446795434200127,1.68073574801028,1.25899442345913,0.635481359391485,2.69155112353031,-0.548509959930183,2.03845999548822,-1.79360555181805,0.107481472931277,0.399723563852019,1.36839268691025,-0.814856702447724,-0.0954983117235376,-1.69898260281064,-0.811188584008774,-1.8769525475377,-1.08572891532174,-1.85034975820778,-1.27152607872251,-1.88592460679151,-1.27640197790876,-1.51371816356994,-0.805581727185999,-0.340229572555892,0.220461800304862,1.20208406322737,0.828440933284814,2.17644725338719,0.856978060043703,2.07896070437146,1.04280876476784,1.46630861067422,1.83876954635006,0.332284306372047,2.18946053614459,-0.617424510437895,1.60537384456887,-1.32845794541399,0.3997459971863,-0.115274129060112,0.96433043678463,-0.755831309655177,-0.0443567812745033,-1.47854596521051,-0.800438567099775,-1.87105220716776,-1.3402531930177,-2.21538314224918,-1.76692320658205,-2.53100225192889,-2.21992483985556,-2.32016168396739,-1.63803127905513,-0.48421432704551,0.392904509099702,2.01397350136008,1.77825016774692,2.85163778087789,1.72183853548101,2.30706196240312,1.69024637694151,1.30935094512974,2.1103509136133,0.369348619884404,2.13922041189254,-0.444860541286668,1.22921942915984,-1.1911455370029,-0.115251555330844,0.109526905013596,0.749325429008212,-0.587928539627124,-0.0962162283489611,-1.3531830500404,-0.95307917289382,-1.97239948414502,-1.57984934484297,-2.57244309847272,-2.54946160379724,-3.44329565000998,-3.62778919650375,-3.64702294929093,-2.81430119018443,-0.865239344918162,0.865604120345257,3.11041148725528,3.14447000161528,4.05189303380226,2.96365411310975,2.81108025525298,2.46110251252935,1.36783355265503,2.23579680600135,0.388672803443503,1.86703159105115,-0.295416689461029,1.0701911447643,-0.776288056629463,0.109549510018938,0.217793786232927,0.644679965375877,-0.575783288918579,-0.246930516777978,-1.35278201180809,-0.997834414925784,-2.02561871287062,-1.92335058545234,-2.97122106010253,-3.45105093929622,-4.66517704502014,-5.26483229000602,-5.29902238585689,-4.21228932882701,-1.40959191254072,1.13375775273707,4.56275886586112,5.1720530957574,5.4646219027028,4.46228426446565,3.34639800162057,3.05276216188753,1.61638302873975,2.35599160538661,0.562835806996652,1.78951260450521,-0.121686527630072,0.9809811163479,-0.599224746726045,0.217816533182596,-0.0897905124422131,0.354131696758058,-0.592055015227848,-0.30217497205337,-1.27251529304171,-1.11486961513462,-2.0652525011777,-2.26177422391314,-3.41516669937898,-4.11516683163648,-5.58868475177448,-6.6962701961287,-6.96697029685688,-5.55113058851866,-1.78782493830542,1.85642994702681,5.39766232582187,6.89481900111371,6.84751002586688,5.59220506599478,3.98806376046037,3.51937217346788,1.84454992520933,2.48528598600631,0.691023921929493,1.7271586059866,0.0537279133374269,0.838664018113414,-0.501592837194568,-0.0897676571582563,0.0648680318312406,0.264733814772704,-0.517488839179106,-0.370015702763075,-1.23721299590088,-1.24894728282512,-2.14239157713854,-2.31328239691769,-3.48412891795555,-4.39457469286738,-5.93687439624269,-6.93087561633629,-7.19936817642129,-6.11744121252285,-2.04147911958746,2.00044221113489,5.96787769389495,7.06528970699749,6.97795037266051,6.14650845338028,4.16110404650117,3.80844488226329,1.94184307303901,2.51273792540819,0.859398639950905,1.58701891197786,0.154807541632009,0.782845501553219,-0.271829271050933,0.0648909216491649,0.148356804840127,0.196154359971773,-0.516990666789104,-0.490886922648888,-1.23323188861009,-1.19707304062063,-2.01201726101242,-2.25338406639408,-3.17644050816761,-3.89166694988635,-5.02306450761648,-5.97235878563224,-5.29890376501524,-4.43597100220854,-1.84581339935133,1.34194951695948,4.04025942647781,6.16869818177589,5.53819271132944,5.26476115889374,3.68299297267525,3.56512407645667,1.92725003640563,2.34042326481385,0.903794597434535,1.52051603121384,0.273831062825789,0.766400842934919,-0.144702933623608,0.148379804378432,-0.0664985708880618,0.0211613385424886,-0.530144109508876,-0.476647061079334,-1.11287907362236,-1.14121249519537,-1.76167946229199,-1.93902861021939,-2.53784755562455,-2.75077216772781,-2.87784371839227,-2.87911079548569,-2.85473143896612,-1.42602731999386,-0.719566060010705,0.54983475990933,1.24284318959963,2.26731174623196,3.05485604631977,3.37340210012474,2.46599473760325,2.8867601062081,1.62764397742763,2.14847703232195,0.881451853965079,1.4184649321652,0.363620304036444,0.660451941043793,-0.114280304404153,-0.0664870283229387,0.031437397029765,-0.00386956734810659,-0.447640602433206,-0.460271996280288,-0.987874024755987,-1.04445339297203,-1.5280760805767,-1.41991890036403,-1.58331733237757,-1.19156380082961,-0.82191026358334,0.524318883438358,1.32251407924499,1.04404684955328,0.58732308129063,-0.841833076330758,-1.35332852830892,-1.20511811406444,-0.785790900954332,1.17438814428314,1.00273047109397,1.96894556779835,1.16626553480713,1.80169811268981,0.828945961292751,1.21556085099118,0.361090017201213,0.601998113048257,0.020955981320912,0.0314605050349157,0.124973420736355,0.00463836251814196,-0.417798590465764,-0.470295920153148,-0.8951285731615,-0.776006414318741,-1.07255209312266,-0.829129155116043,-0.755735298517896,0.132180141225886,1.17947123346802,2.53068765424978,3.88936703598138,3.7579386817287,1.22904849420375,-1.51966550387603,-3.94635584971042,-3.37789274488052,-3.05850275674027,-1.08039579518886,-0.293549155075843,1.01791805587509,0.67385587787986,1.35049203396023,0.641935944961439,1.05035529405001,0.359947782366579,0.559205163333402,0.065808749060687,0.124996605746132,-0.0880953958288088,-0.094697469075558,-0.392632650529571,-0.346824846783516,-0.71139621301361,-0.607126862739189,-0.822240520479874,-0.337754402182459,-0.0128696369640682,1.08780087189283,2.31298568667149,4.01705786487333,4.42921507191626,4.170166515455,1.75855689519215,-1.44200977516069,-4.39224375719693,-4.77130489261789,-3.97484377941928,-2.15452096057772,-1.32019824977319,0.24341037284675,0.162420482530439,0.962171704522438,0.458790983523265,0.872537954815648,0.337392436663743,0.446676047940046,0.0431318899683176,-0.0880721607272168,0.0690827035950334,-0.0354931275470883,-0.323020882006121,-0.242601905564497,-0.521597868735882,-0.241135232579411,-0.495470855498962,0.0411879018415754,0.33910026008896,1.61043315670414,2.44620089110852,3.93795711392197,4.4750335621497,3.65108669957642,1.39881029082933,-1.24989029583252,-3.68709425475874,-4.41479129269186,-4.22997125794483,-2.46141862281472,-1.76313886163858,-0.331543437624976,-0.192584442473588,0.602104156659808,0.299449915608378,0.647734809726927,0.248800875827079,0.365830170347462,0.0826067408394545,0.0691059372618104,0.0406870445515952,0.0534493423564571,-0.272177572113551,-0.20707749376115,-0.666250234317292,-0.195594218372169,-0.220176738908357,0.67254345539719,0.690739267649732,1.78284569180651,2.47479373546764,3.34085710793622,3.6101835365972,3.03564744823084,1.1336820534165,-1.07194397907294,-2.99770801314837,-3.46221848345851,-3.66229418271676,-2.46165977296661,-1.86087844052322,-0.594705714797674,-0.494435247497576,0.318598791660434,0.08607862251257,0.483172798802277,0.188713679316138,0.311972873294585,0.045399179225667,0.0407103095613336,-0.0129500907517232,0.0128041356434641,-0.279915774251767,0.191537000649715,-0.156378432718743,0.218838111198442,-0.490191175324129,0.448412284631227,0.724854145204316,1.64869798665327,2.2086130847439,2.79452638564437,2.80516838904797,2.08675605097084,0.938563525661745,-0.721015684963067,-2.25386868169075,-2.74648033513388,-2.92405817473437,-2.1532687269547,-1.81751039962975,-0.782124289862785,-0.593913136266653,0.0321544303997212,0.0369325770204644,0.324696000977826,0.143109109680203,0.231748262869663,-0.0540231129948583,-0.0129384480299911,-0.0235267668793965,0.135370564858435,-0.542471106680378,-0.181105403341733,-0.825529707307788,0.669744119039585,0.35891127826253,0.85016867072869,0.81678805537339,1.53320869035896,1.98675407459927,1.98828090780246,2.34821467851148,1.4316029343867,0.652733309945089,-0.513662912642182,-1.6235872526438,-2.03705595070323,-2.43736827767349,-1.74704516220753,-1.70444336507982,-0.770238915816274,-0.756698910806926,0.0957649120026355,-0.219604405965861,0.380695703046526,-0.00967196977224955,0.200933556098286,-0.0199129825086344,-0.0235035840201414,0.258325185357374,0.709879285132714,-0.00621719752585332,1.05497265530937,-0.828676630122949,-0.52101306586479,-0.580646467690282,0.819867315189284,0.92036276780214,0.893684514792877,2.08803893254757,1.38202170858512,1.85273712515601,1.1272989343433,0.432872271078543,-0.354843442344794,-1.27834362114789,-1.48310398645479,-1.96246186691162,-1.4950330370875,-1.41754553880687,-0.797383570605445,-0.551418378729472,-0.250146430897979,0.177619102623493,-0.0650220925039534,0.355043372215687,-0.00990050738485362,-0.344876702754411,0.258348432786962,-0.720957472098989,0.543622300747796,-2.05659427190586,-0.0487263438733082,0.345048248619674,1.84454872738751,-0.0859440301518787,-0.0824146540067727,1.67616102219431,0.242782417514272,1.79993082319194,1.12443353632302,1.31250965128218,0.89907168247133,0.28892970207464,-0.207679377204812,-0.99068816261328,-1.15438592791266,-1.5235174083572,-1.18259268736851,-1.27806564557939,-0.59213070196445,-0.71578480993331,0.233267530525603,-0.445221702068211,1.12551495282025,-0.571918945195937,1.0429142766864,-1.02638446551964,-0.720934363408019,1.19444472740048,0.249435171856259,0.765354797663507,-0.802768782176135,-4.38283312512454,-1.05957698985096,1.74545289242624,-1.36157402218572,1.75098602901292,0.435999579393949,1.23683395739848,1.06667098579589,0.975834165598196,0.708572435678955,0.145782077068247,-0.125031914614714,-0.783270682872008,-0.850425597109633,-1.25515386949822,-0.883208431421795,-1.06783333289568,-0.467609091786229,-0.364975743627418,-0.0999205645935753,0.831335751763365,-0.352065378333494,2.28908339896143,-0.901172435912278,1.38835839290512,1.19446715271108,-2.48681420052761,5.91708806204925,-6.16739252915331,5.33040265223964,2.98444143007632,-4.63237766642369,2.3257184593808,-1.10741528246935,0.624395720593892,0.587922476328539,0.78556017223519,0.813863064429407,0.743418311956856,0.564179771708019,0.116840538983264,-0.0390178328824759,-0.637752370909729,-0.60050974941499,-0.985160223899835,-0.742935264601213,-0.790535091256289,-0.342827463097643,-0.228686873528541,0.485559748732565,0.138301799063229,2.73371116382468,-1.14760850810023,5.84940342396181,-9.07841030841825,-2.48678939787797,10.7772248492021,-18.1841724649554,-7.30777517547267,-18.1945735724639,4.17798388003555,-3.22295398348461,-0.271545273417924,0.506136117933422,0.138178094403391,0.618153123838325,0.511882838648879,0.72780796694926,0.39342785361786,0.468686351207888,-0.00528849683377375,0.0111952797168792,-0.552340494424785,-0.36282081981377,-0.746601706990412,-0.429834672589846,-0.611377469222249,-0.00152113101803248,-0.256303422700136,0.860081749864324,1.16369129922055,1.29002327930381,7.06187443270565,2.54081799387134,18.8454429777122,10.7772470845257,-44.4637576174721,31.4087155522225,20.4146561194008,-6.96630329099542,-2.99038117850472,-0.519628979075413,-1.46480542844374,-0.50417133054062,0.186605187604292,0.0470553606680906,0.450052480807065,0.423846010575345,0.35232887217084,0.298318663114297,0.108071025584623,-0.0576916968534235,-0.306977804131749,-0.247832879106736,-0.597172157738286,-0.276955614661621,-0.411190345843094,-0.0186768009217601,0.312810656270809,0.365865968503407,2.56000899210582,2.23672400851252,3.96660298728168,17.5055900669839,-19.4789976066434,-44.4637333047077,2.35283182727956,-205.261826384671,-59.2782835379861,0.582232838492229,-6.25168241211575,0.244481823228424,-0.745144066757112,0.0901252511651597,-0.345275653851892,0.299072741929798,-0.161592121076947,0.335211708961133,-0.135577354326467,0.298749318540245,-0.154693171587032,0.117589919300863,-0.213340406819011,0.0685601334016499,-0.301299584176853,0.11015513308335,-0.214844011263344,0.133323842490917,0.19113672410095,0.354385958427015,-0.00816405126401054,6.37250057697316,-2.10996325352025,60.3727665099715,205.165656904571,2.35283672288598],"Archive1110_field15":[0,-7.02954661986591,-4.7647516801986,-5.4748187646625,-5.21091992580781,-5.34848202399745,-5.27099067704551,-5.3135050169753,-5.27516965368523,-5.30052338980726,-5.26869397575917,-5.2830589794162,-5.26133469232947,-5.27357861139045,-5.25413971894416,-5.27252886545497,-5.25809641073678,-5.27614483979443,-5.26867215509313,-5.28815080194502,-5.27814467211853,-5.29785650549199,-5.28801297706895,-5.30293278581316,-5.2693942280968,-5.3322313297683,-5.15368085974627,-5.66573208388764,-3.45232924923055,-5.23359562429438,3.74381314806887,-6.18287767076242,-4.74666626041291,-5.49337596983903,-5.21563357556277,-5.27868359343168,-5.25032373054242,-5.24608715587194,-5.23414344578568,-5.2365374884003,-5.22857239108737,-5.23282588804609,-5.22526684927001,-5.23009712351934,-5.22417165476319,-5.22690295146376,-5.22427903320017,-5.2287466358149,-5.22547012298059,-5.23176596499074,-5.23208393594899,-5.23959488334691,-5.23560200386371,-5.27297834242322,-5.248864416015,-5.2737266061959,-5.42027117243992,-4.70145085787533,-6.60958219759985,3.74381018574333,-4.34209930889345,-4.60762408511263,-5.25058963912524,-5.14804247685972,-5.31610683450034,-5.28243947333553,-5.29166873982757,-5.29354948631597,-5.28540993033466,-5.2871460162733,-5.28005169164265,-5.27993329161396,-5.27319928076382,-5.27448473522537,-5.27135386863977,-5.27493323195473,-5.2730046146078,-5.27915870512572,-5.27660788253212,-5.28520392026525,-5.27845657506156,-5.29962115183915,-5.26030381968809,-5.33662018620553,-5.20188442500454,-5.36080368937544,-5.15143756920621,-4.96589412126258,-6.58524228488687,-4.34209924937065,-5.20884389198274,-5.04981437670667,-5.00066830570238,-5.22833853834958,-5.18395645646638,-5.24888796270579,-5.2450194626246,-5.25030371842057,-5.25281009169018,-5.24779084331442,-5.24661612387028,-5.24342305552308,-5.24241247395057,-5.2417913662485,-5.24018622372555,-5.24075848894136,-5.23906907831685,-5.24311219834065,-5.2401301784058,-5.25226817558135,-5.23645795700919,-5.27378033293139,-5.21647834661673,-5.28380965250052,-5.2253356869944,-5.15616475486032,-5.43851894340533,-4.52122650951334,-4.9951603912803,-5.20884393566067,-5.13074531059918,-5.07122738251233,-5.1714672480729,-5.14086148805982,-5.2471676546449,-5.22732566876676,-5.26841971705613,-5.25593913274731,-5.26546489275999,-5.2590868283792,-5.26221660147276,-5.25788596428408,-5.25845084595217,-5.25449315671456,-5.25394187077213,-5.2548605449309,-5.25360549276411,-5.26087299325358,-5.25366869861683,-5.27309163638591,-5.24281241824781,-5.283827805023,-5.23900079128183,-5.25653053911417,-5.31610764008984,-5.08994636471571,-5.40152713598904,-5.2176739162681,-5.09694985587722,-5.13074528258525,-5.22429089126385,-5.10114879234443,-5.16099178174015,-5.17296441290205,-5.20835660338561,-5.22125058499952,-5.23905049251745,-5.23827925125102,-5.25081451993299,-5.24473234359653,-5.25024357129384,-5.24143673768539,-5.24260751214672,-5.2377556621741,-5.23775550929034,-5.23974582992568,-5.23748239585037,-5.24689097129246,-5.23409981945059,-5.25750832762418,-5.2336100976419,-5.25598277690501,-5.26653692616112,-5.18316326711445,-5.30766635459686,-5.10693754388468,-5.17821609225804,-5.12116555856655,-5.20491689348591,-5.22429089535243,-5.23114031384503,-5.15456517439535,-5.19910735026444,-5.17112715970138,-5.22247795241475,-5.20878670861785,-5.24647900267653,-5.23625448190205,-5.25434461601891,-5.24175504083461,-5.24782702132063,-5.2379259233982,-5.23899614459569,-5.23394303652382,-5.23336614603258,-5.23398474773059,-5.23025519250632,-5.24402031388029,-5.23325120864226,-5.25344611431498,-5.25233092782838,-5.22931043186415,-5.28048325974598,-5.18293624538381,-5.28721235857814,-5.19472862733065,-5.25459113115255,-5.14663679563255,-5.15147394255715,-5.2311403197081,-5.23356920836601,-5.16012846243885,-5.20578761962513,-5.17462919187245,-5.21925220819738,-5.21070401487082,-5.23910439629952,-5.22795946023715,-5.2427306991934,-5.23110021321239,-5.23706461849229,-5.22505655329949,-5.22280251862072,-5.2101166180468,-5.20616755110033,-5.20970217582888,-5.20771711118979,-5.22630461414356,-5.22931626414605,-5.22901835661798,-5.25193306513187,-5.20688908585443,-5.27397535411924,-5.1911749260238,-5.25650974409553,-5.16416465938769,-5.22210318547347,-5.21028020148975,-5.18101217513082,-5.23356919879964,-5.23645789467421,-5.17299544426449,-5.21851465734124,-5.18894114244208,-5.22793657526881,-5.20829679573584,-5.23676450102778,-5.22294424670193,-5.24093250912164,-5.22728693658737,-5.23014472802935,-5.20630344706801,-5.19289436081642,-5.17111371722639,-5.15793023436174,-5.16455869323962,-5.17613366090715,-5.19279532786095,-5.21793178251032,-5.2094039716712,-5.25503293552815,-5.20982169837678,-5.27100825405096,-5.19883386804691,-5.25880607193544,-5.20129750633364,-5.20702676846257,-5.20201555977961,-5.18469368011805,-5.23645789773045,-5.24238037698107,-5.18839934835058,-5.22865612619389,-5.19155047283516,-5.2261344137156,-5.20687898639297,-5.23566267537156,-5.22332253230568,-5.2385414585108,-5.21794228572678,-5.21163729056336,-5.17309675417842,-5.13109275548672,-5.08030723437683,-5.04886159598131,-5.0494993001599,-5.08921670848962,-5.12933879843193,-5.19364404565231,-5.19523399090267,-5.25153599126094,-5.20330296864471,-5.25803093302125,-5.20087226754099,-5.2383469003421,-5.21023372128665,-5.21439559004468,-5.21811850502021,-5.19688395166577,-5.24238038078757,-5.24380999924875,-5.19266007946625,-5.22963118939979,-5.19585183284062,-5.2313144315961,-5.21362175124298,-5.23984513338895,-5.22253493248111,-5.23583699645899,-5.2125876183821,-5.19179263127642,-5.12236936774928,-5.02443990837156,-4.90308041013397,-4.82582465938117,-4.82434288204243,-4.9249620594056,-5.02556874347695,-5.15059683581733,-5.17334500819513,-5.24286697721603,-5.20738298116876,-5.25503267138406,-5.21640712798408,-5.23625020469391,-5.2162121390113,-5.2133797454819,-5.22712332645478,-5.20096720110314,-5.24380999255624,-5.24404769342831,-5.19721031883799,-5.23561142706389,-5.20607523317029,-5.23747095828924,-5.21549103032583,-5.23984040245089,-5.22570418198099,-5.23944708508269,-5.21482071564084,-5.17552185933587,-5.05594545263001,-4.87464817352398,-4.64616220674827,-4.50855409118023,-4.50021648150332,-4.67654849772908,-4.87797241303833,-5.08335302215967,-5.15539034666916,-5.24016341378412,-5.21771747863987,-5.25141991307744,-5.22208626122066,-5.23526580518095,-5.22778676929799,-5.21543307579677,-5.22912418617096,-5.20481270627728,-5.24404769591968,-5.2482385564155,-5.20820921701435,-5.24253215530574,-5.20992044815334,-5.23845303678188,-5.22001889386605,-5.24631292021357,-5.23738260579147,-5.25280128155119,-5.22564006813083,-5.1769085272728,-5.02262912448714,-4.78054509805667,-4.45631930027303,-4.23724241985167,-4.23833182941867,-4.47270048200922,-4.76386896727373,-5.04961886510204,-5.15916136418573,-5.24918337838298,-5.23197627570237,-5.25511716372201,-5.23378454596277,-5.23477035213172,-5.2316909032957,-5.21757434027545,-5.23465520609903,-5.21359491728252,-5.2482385591167,-5.24945532369788,-5.21104288908328,-5.24172902514075,-5.21413688868644,-5.24408446956429,-5.23038214677815,-5.25617852216255,-5.24838432423547,-5.26915830385148,-5.25464333535033,-5.22558506435542,-5.09195945465968,-4.86124309986228,-4.54731703223864,-4.3114351281706,-4.28991793081647,-4.55364647115005,-4.83099136793843,-5.10304790770016,-5.20278001848957,-5.27052250734099,-5.25400074666935,-5.26271242804808,-5.24461422025812,-5.23863405362395,-5.23916171628163,-5.22477721254615,-5.2414042826886,-5.21705589135596,-5.24945531889192,-5.2496058891753,-5.21519330087111,-5.24672330734797,-5.22420824881153,-5.25129804782561,-5.23665834570332,-5.26232249550869,-5.2614980925164,-5.29382331499525,-5.30216949034964,-5.31777969486374,-5.2725859744373,-5.17532458646867,-4.99332070811329,-4.87438714032653,-4.8373480073859,-4.99375696919919,-5.13490182951239,-5.26404640590749,-5.29100105669573,-5.31186703597601,-5.27967052567125,-5.27365829808933,-5.25564014912624,-5.24517690037888,-5.24678001373304,-5.22756455960457,-5.24226725528905,-5.2197905327882,-5.24960589095443,-5.25322762273043,-5.2241601471274,-5.2520851917361,-5.22866378180937,-5.25312477039013,-5.24303671599863,-5.27188563207325,-5.27700932893765,-5.31442759612998,-5.34190641892507,-5.40502411608533,-5.46962937166622,-5.56698863681506,-5.60679958957622,-5.64027364526243,-5.60633362620104,-5.60136153465287,-5.52179028624121,-5.46916180224502,-5.38430620751143,-5.35201746394031,-5.30348883958416,-5.28522930936864,-5.26772581130152,-5.25059070871646,-5.25145306132449,-5.23184355519444,-5.24749115875378,-5.22792963532009,-5.25322762376219,-5.25417000545511,-5.22764949364082,-5.25143115904083,-5.23304832917342,-5.25862891849363,-5.2524567101058,-5.279530983654,-5.28611691764375,-5.32388557419853,-5.35844914952,-5.45089498724405,-5.56717188671987,-5.77991874532763,-5.95683434763253,-6.1198085530973,-6.08178443679575,-5.96795263236923,-5.74781806884737,-5.58186580696175,-5.43436706138513,-5.36882828491252,-5.31698774499571,-5.2918115430914,-5.27404972170042,-5.25449627061654,-5.25720285602021,-5.23857534031556,-5.25220918268045,-5.23076861072271,-5.25417000191284,-5.25506504801255,-5.23109540370358,-5.25560778228012,-5.24144822090617,-5.26437447631985,-5.25795117663086,-5.27949466225165,-5.28314490436671,-5.32173373395307,-5.34850320700623,-5.43074749492733,-5.5254517948442,-5.71878246580526,-5.89727299616886,-6.05537107040369,-6.04435282500422,-5.92874901636569,-5.70532098725085,-5.55092007966938,-5.42097170850363,-5.36270439950359,-5.31790659797518,-5.29357775928612,-5.28103446365689,-5.26119781435858,-5.26382595086003,-5.24264429892098,-5.25412001421687,-5.23442591903928,-5.25506504965026,-5.25723457101396,-5.23928542779498,-5.2597303215622,-5.2454747291456,-5.26215794739896,-5.25893219908472,-5.28681064579283,-5.28987055799487,-5.31680308509432,-5.3230511594663,-5.37026305418536,-5.41107641579629,-5.51890069771672,-5.60936469633182,-5.71200662829538,-5.68433281482017,-5.64598562177458,-5.51847508056192,-5.43814055660645,-5.36611487334855,-5.33480159423171,-5.31013489676994,-5.29025809994086,-5.28258288959796,-5.26200588009962,-5.26425995030874,-5.24451455838541,-5.25667870376481,-5.24009217618359,-5.25723457234635,-5.25970043452141,-5.24203569717404,-5.25762365601097,-5.24938044955782,-5.26872554815445,-5.25961484802774,-5.27652126994135,-5.2771503358256,-5.30191005963823,-5.29338886703114,-5.32147540073436,-5.31081319807877,-5.35112038682087,-5.34511206669404,-5.39498218436876,-5.37470029050907,-5.3758547362347,-5.3432183822988,-5.33287140373014,-5.3144097672757,-5.30844214972998,-5.30067612530269,-5.28666951619224,-5.28263306518595,-5.26401869524765,-5.26957471037251,-5.25184942667773,-5.26208367542147,-5.24494959393898,-5.25970043213755,-5.25772102387421,-5.24714744829185,-5.26062275152336,-5.25002899137218,-5.27086457677468,-5.27575999192282,-5.28792738160765,-5.26989922769929,-5.2927113794177,-5.27102374896612,-5.28521572025606,-5.2439172444588,-5.25037064981261,-5.2101174205051,-5.21967899626509,-5.20802355668789,-5.23087297653754,-5.23725075322105,-5.26315667730303,-5.27483129764831,-5.28211266651271,-5.2852158290633,-5.27552724191552,-5.27864188146363,-5.26303370273824,-5.26858398019243,-5.25153875299569,-5.26007179296385,-5.24440024061135,-5.25772102506279,-5.26403455154925,-5.25080599997878,-5.27027348549384,-5.26324670135056,-5.2513460238681,-5.23893079461719,-5.27732982837818,-5.26729779271228,-5.28857743414163,-5.25681271883779,-5.27129000920411,-5.22077257612823,-5.21961562437759,-5.17413821037168,-5.17370730192296,-5.15908444442527,-5.18664774313986,-5.20570397265562,-5.23695169866245,-5.25728362634993,-5.27007800497616,-5.27971028155799,-5.2755007220116,-5.2801248507804,-5.26647493819644,-5.27337583468001,-5.25659422671368,-5.26873629720908,-5.25558330272341,-5.26403455267693,-5.26291807153135,-5.2598851320977,-5.2469842191919,-5.26733827249763,-5.31119139725826,-5.27459492874301,-5.27542927640625,-5.24954217608019,-5.27805702570071,-5.23106258001744,-5.25417344374597,-5.20600164826661,-5.20254715105067,-5.16454991558256,-5.16213275575458,-5.15378049603453,-5.17155174063019,-5.19196871258197,-5.21682233898085,-5.24045179901188,-5.25027319381208,-5.26700771504208,-5.25909372603348,-5.27139571519235,-5.25664255327884,-5.26793562855998,-5.25725259651095,-5.26237432811172,-5.25377748194438,-5.26291806758444,-5.26615193358459,-5.27806210694058,-5.28334002065421,-5.20455953793942,-5.22797221992137,-5.25924481475609,-5.29612965059938,-5.23867809518805,-5.2925916395803,-5.23990541071748,-5.25332007835415,-5.21826248227284,-5.20973526810467,-5.1852225867739,-5.17926972100574,-5.17614393591739,-5.18780702461902,-5.20432790153876,-5.22432709536544,-5.24413166967426,-5.25488122421763,-5.26572975824905,-5.26885179934955,-5.27216652645635,-5.27442989386187,-5.27631653154915,-5.26961014613475,-5.28576385109465,-5.2598459532159,-5.26615193943206,-5.26505503883854,-5.24088002939528,-5.33476091530332,-5.38340238147561,-5.30182906196065,-5.19556346734702,-5.29721841189639,-5.21369037672784,-5.25339012725165,-5.22447356618024,-5.22277443703658,-5.2053362483343,-5.19221931585176,-5.17738357136959,-5.1715870311618,-5.16908111938905,-5.17738032574303,-5.19150674888937,-5.20351537703595,-5.22291722877666,-5.22827233255298,-5.24889794472158,-5.23886881584274,-5.26723289116685,-5.2389480260989,-5.27917617691813,-5.24937055385751,-5.27716158232146,-5.2831377716313,-5.26505503916297,-5.37656087158434,-5.30733015603533,-5.0845838234028,-5.13778974835855,-5.40039411325127,-5.22680448060487,-5.30285817860661,-5.26663039386107,-5.26285308051291,-5.25660161236256,-5.23964662928751,-5.23032260441344,-5.216986792952,-5.20670161950112,-5.20263675438234,-5.20242004834799,-5.20648764459027,-5.21951793014634,-5.22748272022727,-5.24459954693008,-5.25090140017067,-5.26291685257571,-5.26935917293504,-5.26447805004073,-5.29393748511385,-5.26210480370559,-5.32736696417681,-5.30331107716996,-5.30026785898083,-5.37656085873256,-5.22683879364571,-5.50170613857944,-5.83650288237721,-5.04507404469895,-5.27748047199699,-5.21181623278626,-5.20662631020188,-5.22865867301442,-5.2028571881066,-5.21065440221809,-5.19570250220679,-5.1882249950882,-5.17747016105978,-5.1703347678576,-5.16335939602569,-5.16466939266139,-5.1668594298044,-5.17734617179139,-5.18342646398899,-5.20093035747611,-5.2022857371096,-5.22032128969133,-5.21238050664596,-5.24601424750602,-5.19850858632524,-5.30537379018521,-5.16856627093795,-5.42379753151512,-5.2573630188996,-5.22683882396147,-6.33756186963035,-4.08517889963272,-5.55181886238384,-5.4395514610499,-5.2789687224561,-5.34068821417588,-5.26483861606216,-5.29427534584653,-5.26126086187323,-5.26472841719762,-5.25122485801661,-5.24465783924377,-5.23468759288667,-5.23225353462029,-5.22637016523226,-5.2289801213239,-5.23097747603914,-5.24082225753396,-5.24221603098794,-5.25790167137582,-5.25687140591469,-5.27151594262247,-5.27077541086457,-5.27361582928137,-5.30199826861257,-5.25152618774135,-5.41969814451572,-5.29545927634862,-5.84648780752712,-6.33756182153126,-14.111480965395,-3.81936941854393,-5.49623722869226,-5.01228183627766,-5.10943322328963,-5.1627165314018,-5.13331163682705,-5.1695766881744,-5.15482425204145,-5.1568251896798,-5.14499165685742,-5.13945428338542,-5.12935899366006,-5.12257433575059,-5.11695139785278,-5.12094022334605,-5.116997688656,-5.13082415923488,-5.13323559336741,-5.14904814574758,-5.14941040929165,-5.16598829346395,-5.15796009361537,-5.16833952271877,-5.12176848342195,-5.22557563221868,-4.86699568650695,-5.62021621692186,-4.01472648710592,-14.111483902767,-5.23359562429437,-7.02955622071077,-4.7647613187038,-5.47482860165823,-5.21092977683049,-5.3484918960551,-5.27100056415347,-5.31351490108258,-5.27517954185055,-5.30053327781883,-5.26869892097034,-5.28306886284063,-5.26134458108335,-5.27358849547485,-5.2541495999479,-5.27253875112624,-5.2581062956853,-5.27615472307608,-5.26868204444496,-5.28816069089835,-5.27814961552918,-5.29786639581169,-5.28802286478782,-5.30294266644301,-5.26940410898235,-5.33224117074601,-5.15369071388124,-5.66574169391421,-3.45233886022495,0,18.9735192323336,-18.5702703833071,-15.6011156960668,-10.9199800472998,-7.70621556291122,-8.89311201269973,-8.30564248395205,-8.45977793784993,-8.29049925552287,-8.42753772462251,-8.28918784343941,-8.40912568977778,-8.31400540208822,-8.3942727483874,-8.33887241999875,-8.38285998751127,-8.3463221272079,-8.37404771803022,-8.34596924960355,-8.35957092372494,-8.34819693768458,-8.38593960948494,-8.31999153562028,-8.47329994275991,-8.61831019260809,-7.94243597909794,-10.3627489652046,-16.8021376334377,-13.6161956303577,18.9735217426891,-5.22055932863903,-7.40584235528477,-5.52161156381708,-8.81708958003851,-8.10542519454018,-8.1644843093305,-8.1370563542513,-8.13833603309343,-8.0974877365244,-8.12355197534292,-8.0825473621101,-8.10506491928245,-8.08154823685439,-8.09388946831212,-8.08043855430371,-8.09135819877577,-8.0792153620123,-8.09037292913284,-8.08935419479833,-8.09729123719796,-8.09558503172159,-8.13268843531911,-8.11095775181546,-8.11511818358881,-8.27788620173706,-8.2639861382701,-6.39563576466702,-7.81124512003562,-8.38733405162096,-5.22055625194796,-14.6586026405486,-4.46189421123534,-9.62537432405491,-7.43125318964762,-8.49461689112332,-8.223130924942,-8.28371856535317,-8.28407939718862,-8.2612266878734,-8.25568849648142,-8.2496542430808,-8.24144716229707,-8.23597839626906,-8.23193026118076,-8.22677732509105,-8.23284205102031,-8.23061682718177,-8.24638662506849,-8.24048987748012,-8.26386413564511,-8.24793437714224,-8.26550040444711,-8.25332819472224,-8.30530003430765,-7.98329868585976,-8.95597722100216,-7.97570320443724,-6.93153025938275,-12.0079856350146,-14.6586014399884,-10.3584973782216,-7.59355128548566,-7.08788607516045,-8.42593548604571,-7.850389461669,-8.16696731402016,-8.11929666608406,-8.09471566552827,-8.14742238453581,-8.10177685788079,-8.13437533495005,-8.10153957710821,-8.1176286027745,-8.09651605001856,-8.11067656185441,-8.09797855337467,-8.10713939363189,-8.10367410750085,-8.10720000695097,-8.11044705986342,-8.11733462650415,-8.14249633995357,-8.07208797072278,-8.29877041662263,-7.90982382133688,-7.80380140406723,-8.96917802606878,-6.28881728025367,-3.85384909046085,-10.3584968136906,-8.2196925195733,-7.58603489822059,-8.31517409978697,-7.7158280209215,-8.3233468310682,-8.03378215161224,-8.25940244793783,-8.16570436819054,-8.23214571800355,-8.18215663109221,-8.21142029993195,-8.17637122631342,-8.19926647432908,-8.17710031398743,-8.19273561236349,-8.17942545539417,-8.19055369144784,-8.1874600878843,-8.1953890585535,-8.20633641139149,-8.18244548063825,-8.25303267357887,-8.12293744078595,-8.16058234506573,-8.47079830000622,-7.5429027244549,-8.72643328426602,-9.00332617767793,-8.21239101284119,-8.21969310071826,-8.72309444409852,-7.62834394542724,-7.9529006586055,-7.99392049492876,-8.02405419974477,-8.09205429925364,-8.13396175240353,-8.10394755226013,-8.15919371537901,-8.10790734517714,-8.1552759838261,-8.11252294697583,-8.14179431653335,-8.10661834111857,-8.12693758638507,-8.10661286276081,-8.12436641746301,-8.12200828774386,-8.12659173787752,-8.14892492891409,-8.11185484407286,-8.13019516733027,-8.21275002845516,-7.89135980987878,-8.42476990732569,-7.77778339013813,-7.71229082861816,-7.61076006360167,-7.89280383360054,-8.72309443065409,-8.51180763717995,-7.80077992716025,-8.13010217645387,-7.92206996208927,-8.18012536839702,-8.02558623576464,-8.19303140827653,-8.09527454497054,-8.19120715188641,-8.1281514134673,-8.17822111192249,-8.12356474161855,-8.1538693538793,-8.11387130265594,-8.1382194646297,-8.12177498572693,-8.13937015179078,-8.13901154135421,-8.14110680101594,-8.14450820791595,-8.18428887365573,-8.07493395099842,-8.32485096166342,-7.94673128165631,-8.28197902536514,-8.07763529369657,-8.34318128479398,-7.9714394908808,-7.73135194550673,-8.51180761918974,-8.40760287033148,-7.84094874824785,-8.13119172371844,-7.95266254621196,-8.1093176231795,-8.03308523597855,-8.14460792841618,-8.08673026139537,-8.16060305372392,-8.09435961107702,-8.14147618377632,-8.08036812697035,-8.10852649836735,-8.06485630744879,-8.08304596307003,-8.05926118229746,-8.08554052490324,-8.08058386502535,-8.12268404990091,-8.08461596294505,-8.20994771134546,-8.00703619052203,-8.2457166253762,-7.96933644836089,-8.18460839883233,-7.87533004316739,-8.06275026657753,-8.14416062570353,-7.90827660179851,-8.4076028507231,-8.38301031907589,-7.89380565166964,-8.1433188222927,-7.96481446437051,-8.14508296178,-8.03605166852497,-8.16705796133161,-8.0745353824354,-8.15992247276163,-8.08384420932233,-8.13190794281719,-8.06228824056324,-8.06969639637854,-7.99740144412649,-8.01110274928218,-7.97920106587711,-8.03397525788235,-8.03638138909476,-8.13172960077512,-8.04163495175953,-8.20860635481826,-8.01818400075926,-8.24218313147117,-8.01716690754359,-8.23452956462337,-8.06134519660566,-8.03920033640817,-8.07517619316176,-7.9268630029392,-8.38301036056684,-8.32901783573218,-7.91619275126307,-8.15711472760239,-7.98878844391311,-8.14606611543292,-8.03327904917803,-8.14633706001666,-8.06559272931331,-8.1461059076911,-8.07446254658166,-8.10243964053605,-7.99790814882729,-7.96880669521842,-7.84274909286273,-7.82959181547279,-7.80286833579317,-7.90531449274133,-7.91490375041054,-8.08610706743364,-7.99850125437274,-8.1910098313828,-8.02238780502561,-8.20995659638931,-8.01178579999864,-8.12588327084283,-8.07122703848415,-8.07529746276974,-8.12691798650794,-7.93482579312182,-8.32901782009265,-8.30911205747475,-7.95647978375902,-8.17380423094673,-8.00087803017167,-8.14628489671508,-8.03647785847551,-8.15573923751032,-8.07644322757783,-8.15182182976309,-8.0638532248292,-8.0741894818411,-7.92079987592281,-7.81492066396641,-7.60398394765677,-7.52496983060046,-7.47116208169855,-7.66221900402308,-7.74774304793898,-8.01979278664992,-7.99078166088585,-8.18494682137516,-8.03680253460885,-8.19107235897046,-8.07249003177422,-8.13292129726179,-8.08411203546375,-8.04158452463576,-8.1403060885754,-7.98227945637652,-8.30911204202899,-8.28007720992116,-7.9768299997606,-8.16404522382281,-8.00925942904926,-8.15502432539332,-8.0542653103763,-8.16242093192077,-8.08054199969194,-8.15306592664438,-8.0650093022015,-8.05333244686564,-7.85368691605937,-7.63796693453722,-7.29478618697659,-7.12145761793937,-7.05349538848448,-7.34749093162376,-7.55565527254194,-7.93764847398348,-7.96546028930692,-8.16973500489153,-8.05914561350088,-8.1673339448754,-8.085691321881,-8.11610052541824,-8.11908871346145,-8.06049237349239,-8.14909172894712,-7.99925227314073,-8.28007723275731,-8.25611807021694,-7.99286232032719,-8.17684499132073,-8.03541357515472,-8.16719558880031,-8.06369225715821,-8.16771042483022,-8.09612026190958,-8.17791858387731,-8.10571131683964,-8.07992434845042,-7.8432733761327,-7.56275533275374,-7.13478353476382,-6.93033452486182,-6.8065480005397,-7.17944446759666,-7.45923519095935,-7.9002735621581,-7.99633322055754,-8.18510130677213,-8.11051948720766,-8.17340933742668,-8.1166445890333,-8.11292653171426,-8.13124510048224,-8.06361731623448,-8.15070328584002,-8.00769614577688,-8.25611806821563,-8.24421944756321,-8.02025997992693,-8.18356779284076,-8.04555327026766,-8.16670588004401,-8.07522510952485,-8.1851383130945,-8.13080484681698,-8.21838190830467,-8.16149319384608,-8.17090112080599,-7.97086931405573,-7.76516811700663,-7.35488984901983,-7.19671216192702,-7.10372279332728,-7.37420799681489,-7.64865420673131,-8.01859993133046,-8.09695465918248,-8.23208791928078,-8.15248816189446,-8.18232286441554,-8.14525785724916,-8.11958332025766,-8.1447420869795,-8.06857072399218,-8.16333217494855,-8.0391481689907,-8.24421943737216,-8.22835597169571,-8.03746675613681,-8.17795122107884,-8.05672516936855,-8.17990448239866,-8.10127286011471,-8.20639751263507,-8.15740308666901,-8.26223897640011,-8.2388399750081,-8.31664650008581,-8.2318190876637,-8.20188162024655,-8.00520071469605,-7.91225970937141,-7.8655372177326,-8.06883707743504,-8.09443313277736,-8.30203551175352,-8.24362496544011,-8.30370987415803,-8.21372862934501,-8.20089503720312,-8.17039564958638,-8.12441431717255,-8.16081219254264,-8.08545259939072,-8.1693048375877,-8.05285038775302,-8.22835598806851,-8.21238534789779,-8.04869925438797,-8.18706687150876,-8.08028755690771,-8.19217890628561,-8.11457130384249,-8.21773746020705,-8.18082287583679,-8.30582732360219,-8.32022921062067,-8.46251487256592,-8.47297258330754,-8.62485684650312,-8.64430385991293,-8.78263690221792,-8.66888591651188,-8.76267521207827,-8.58363207714222,-8.56040950193312,-8.40348170616414,-8.3600259620529,-8.26413691581454,-8.21913924619051,-8.19552487358894,-8.14041341018466,-8.17575407513073,-8.09428733315829,-8.1694210811864,-8.06047305426952,-8.21238535078484,-8.21120912157036,-8.07251818845399,-8.19384288305568,-8.09068592031438,-8.19390768034983,-8.12625762015939,-8.23452271604798,-8.20419608012557,-8.33046648686542,-8.34028090948,-8.51796268889142,-8.57766585863796,-8.80453354546309,-8.89453209314747,-9.10689638692904,-9.04554034796659,-9.0285431272826,-8.78464008795282,-8.66626687395325,-8.47275871923424,-8.39340393364293,-8.28995502103468,-8.23507795220873,-8.21702464006722,-8.14958850438783,-8.18382882674277,-8.10279830306737,-8.18031391287768,-8.08556067286146,-8.21120911111631,-8.20015597568752,-8.08293951630108,-8.19030853162994,-8.09940761572926,-8.20387421529525,-8.14473750769053,-8.2493444009937,-8.21059873085566,-8.32815582999189,-8.32243535325735,-8.47776145783847,-8.5075374404352,-8.69274723096881,-8.70527750059578,-8.87202109324489,-8.78762879889755,-8.83275752452183,-8.65952169062109,-8.58532946904563,-8.43056222354221,-8.37215638178818,-8.29965907143709,-8.23463224577472,-8.22622723008681,-8.1551969714329,-8.19499308916999,-8.11781840109897,-8.18450066365742,-8.09623669296225,-8.20015599354596,-8.20097793535487,-8.09492800239751,-8.19694152011187,-8.11896541717787,-8.21506718918453,-8.14727511249585,-8.2384998715203,-8.19747428539713,-8.31377316690333,-8.28467085039232,-8.40488334554697,-8.34410785102149,-8.44520230909796,-8.35700481634326,-8.43989179994552,-8.38015641001717,-8.43533292539744,-8.38843370167948,-8.41498483144255,-8.35245607961829,-8.32047023995722,-8.2864173417213,-8.22929142388074,-8.23448932437557,-8.16670921882303,-8.20522488133452,-8.12731892387349,-8.18573742844433,-8.10345564546856,-8.20097792726475,-8.19484785906696,-8.10694220430838,-8.20578745747241,-8.1212995438589,-8.21188157154993,-8.1571765388204,-8.25279838875908,-8.19425146692895,-8.29436143329655,-8.22469867184781,-8.30985485071487,-8.20896502478571,-8.23837283273013,-8.11045227448119,-8.11754097561883,-8.05769104588753,-8.16234789399402,-8.17010234305827,-8.25430855960401,-8.26565917833188,-8.26450928846136,-8.26406753319411,-8.21629604772532,-8.23552439255251,-8.16568616845765,-8.20346789329573,-8.13162407067761,-8.19150809642082,-8.12036324855979,-8.19484786214599,-8.21451438598626,-8.11884114895336,-8.20326610081617,-8.12999037514674,-8.2075519398426,-8.14093687869881,-8.24877801476346,-8.17944255844535,-8.26666132486635,-8.17909613707318,-8.24856585613075,-8.12699481286686,-8.1351437035057,-7.98333542314198,-7.9986248491049,-7.92549437344064,-8.02616524465833,-8.07641611526026,-8.16107113864982,-8.20658425311686,-8.22360760835739,-8.24567716849523,-8.2061634024192,-8.22877156796955,-8.16985786558654,-8.2111470972825,-8.14635847690446,-8.19874808522057,-8.13008616982513,-8.21451438248831,-8.20269590750346,-8.11670754660656,-8.20352372685759,-8.14871874533307,-8.25536726174276,-8.15972225747185,-8.23125749245163,-8.15205013517292,-8.25386817963614,-8.14468771659104,-8.20794434982037,-8.07035204359676,-8.08382378390208,-7.94961016012701,-7.96090067325343,-7.92057156189186,-7.98067193613401,-8.03600531789962,-8.10960702396222,-8.1685400065179,-8.18006734372361,-8.2201252342745,-8.18117265666822,-8.225060065036,-8.16245761189394,-8.21242038167514,-8.14712277077686,-8.19327418860316,-8.13045573535724,-8.20269590732245,-8.2279427547868,-8.1512247560669,-8.22520734319029,-8.09620000587459,-8.18278054347649,-8.14932443068355,-8.25614780799845,-8.13802587939747,-8.24612331490397,-8.12586799179227,-8.18691266688759,-8.06341497318623,-8.0761319548614,-7.97826308674694,-7.97503489313615,-7.95254724820211,-7.99824382371002,-8.04231267811777,-8.09484741368781,-8.15215139675335,-8.16500802262576,-8.20579953332855,-8.18794062737751,-8.21411241526578,-8.18239531685992,-8.20467327516063,-8.16750379399913,-8.2104877186566,-8.15223162693568,-8.22794268105489,-8.26458639651816,-8.08157239992377,-8.28771068742904,-8.24388096371774,-8.24323119193099,-8.09395275587906,-8.25576002143354,-8.1189532524352,-8.21218516105326,-8.09684792731191,-8.15628753512126,-8.0539236287249,-8.05382651155973,-7.99118016751197,-7.98358968151076,-7.97224774480597,-7.99799891569602,-8.03846441114884,-8.07104418881326,-8.12788900060536,-8.13223882719878,-8.1871898577824,-8.14936911409078,-8.21385277813597,-8.13748789904525,-8.23175261336371,-8.13659376339372,-8.22242160968056,-8.14658022244811,-8.26458650604797,-8.49622435020829,-8.14968277804775,-8.03402887907779,-8.02815326900855,-8.36823159256881,-8.11823238250627,-8.23655780610803,-8.12031547229445,-8.22950505633546,-8.11550310372315,-8.14211819875063,-8.08776141471423,-8.06524812048188,-8.03201437820799,-8.01678138214042,-8.01889459730404,-8.02742098523811,-8.06620404047859,-8.08703761135997,-8.13877784798322,-8.13716808729513,-8.18522411220953,-8.17058123966629,-8.19457444872173,-8.21419146726618,-8.17675323150848,-8.25544612869512,-8.20640639533429,-8.16042916703347,-8.4962241192895,-7.96204584008259,-8.50551402750944,-8.83299214410552,-7.95753459411875,-8.20197016590943,-8.13099632547057,-8.25083727292684,-8.06289584215752,-8.15037849599745,-8.11001592035379,-8.07728988314384,-8.06759278690973,-8.03279072480487,-8.0134433929017,-7.99885652328304,-8.00321011501384,-8.00686746588674,-8.04091333653636,-8.05071369911948,-8.09596736110399,-8.09643645238003,-8.1438379331719,-8.12169385828448,-8.18723147261864,-8.10697762138848,-8.28170321260818,-8.04035389752357,-8.41901390458655,-8.17866598716928,-7.96204533647323,-10.3810749934829,-5.57929623605876,-8.98318237390877,-8.19237409095603,-8.27317595512492,-7.99020216503099,-8.26245309168737,-8.18310938482211,-8.12118285732645,-8.17153016895724,-8.10201705217487,-8.1069463013433,-8.07271608309985,-8.06159649116199,-8.04975327735239,-8.05509545250788,-8.05124848910769,-8.08797916913312,-8.08500794379375,-8.13209815593069,-8.12632527390071,-8.1775919824831,-8.14558015322611,-8.20099277815543,-8.19977117273846,-8.15624177622114,-8.45618671550392,-7.98517511410783,-8.44106847938201,-10.3810760446173,-17.6879605316845,-7.76759216496407,-8.09722705148786,-8.34863240013684,-8.69665009008883,-8.04172510891277,-8.03843625199983,-8.18441805743337,-8.05525007672787,-8.0829086265193,-8.06221429143606,-8.03932718539682,-8.02571835031587,-8.01118317819814,-8.00343140260345,-8.00621830608097,-8.00577368694314,-8.03451145923629,-8.0322750042293,-8.07422965304903,-8.06628171629802,-8.10135777217807,-8.10031017458807,-8.1073514665111,-8.12777914109522,-8.20699438377653,-7.9180080535369,-9.56541838490575,-6.70925419132696,-17.6879581027249,-28.3599664082569,-3.8245398609319,-9.681293374458,-5.22131011204596,-8.07892061397488,-8.25228609938953,-7.87457478363267,-8.11770703875681,-8.03226319101385,-8.05115634335778,-8.01452837037158,-8.01563481896904,-7.96905585200338,-7.9831796188476,-7.9467691122296,-7.9647276138029,-7.95854345553712,-7.98959690608991,-7.98298519410745,-8.03585643201912,-8.0249925276503,-8.06173836099754,-8.04829774013162,-8.09868338858822,-7.89322016858064,-8.26389629786665,-7.6441888678595,-6.84306583784777,-5.0051529996271,-28.3599820158206,18.9735167219781,-18.570272587119,-15.6011266179808,-10.9199930627747,-7.70622843174177,-8.89312512141061,-8.30565542604007,-8.45979103280738,-8.29051228021895,-8.42755075428627,-8.28919432405473,-8.40913871432322,-8.31401830911402,-8.39428570153601,-8.3388853356091,-8.38287292070047,-8.34633502394339,-8.37406072652096,-8.34598220100824,-8.359583953299,-8.34820346124128,-8.38595265066667,-8.32000450026952,-8.47331304505115,-8.61832314647251,-7.94244765772396,-10.3627638433084,-16.802147076226,-13.616217985345,18.9735192323336,48.7326404305675,-28.5069954963573,-26.5938321241595,-16.3036536763747,-8.95507681151256,-11.427011322546,-10.2346283592022,-10.500334631178,-10.1721333820693,-10.4604779951916,-10.1843177805381,-10.4286189343796,-10.2645576628613,-10.4225830064239,-10.3162863116976,-10.4082118182964,-10.3363893400949,-10.3608209749194,-10.3268405978567,-10.3140396958192,-10.2983665073755,-10.3666217124805,-10.2202743194673,-10.5530206528704,-10.942615381608,-9.29014404022011,-15.6532324951823,-27.7514479835662,-23.5690722028659,48.732642206519,-16.7202945105719,-5.99390930478828,-5.38593133066327,-10.903173375365,-9.89714401200604,-9.88879929278447,-9.88249568911756,-9.8980698324349,-9.80064498140226,-9.86561408750939,-9.78890882641088,-9.83660593611731,-9.78784146565216,-9.8199548560735,-9.78785887995509,-9.80719802054757,-9.79324119725264,-9.8048679868934,-9.80589868022606,-9.82186251532102,-9.80665005205111,-9.88403567724771,-9.84870295522686,-9.76432369633819,-10.3048649753738,-9.86981159890459,-6.10980114784893,-9.76863222248452,-8.75501986359196,-16.7202923288372,-24.984370624701,-3.14467778765593,-13.1250562599292,-8.47138000404053,-10.5634873962242,-10.0104502858699,-10.0791220697396,-10.1144131871698,-10.0593717095251,-10.062473671258,-10.0467410031258,-10.0354023944367,-10.018158307526,-10.0185626009782,-10.0069916757878,-10.0223645750205,-10.0159441370761,-10.0456116151409,-10.0274527961315,-10.0745143226368,-10.0470843608986,-10.044884430662,-10.1221321862989,-10.0454656165088,-9.61394407103627,-11.407172372189,-9.66545613933521,-7.95445490831847,-16.0683462369707,-24.9843678729461,-15.4924135082432,-8.91788054313738,-7.88886847146665,-10.6277256174866,-9.2791427491703,-9.95488557143935,-9.82742417654705,-9.78827599918673,-9.88134774059381,-9.794103380517,-9.84967402325579,-9.79464533043258,-9.82757383834068,-9.7928957376932,-9.81808812011652,-9.79127525544429,-9.80750866230638,-9.79793982537606,-9.80909543975036,-9.80206459462052,-9.84846724456748,-9.8376031226324,-9.74998537184187,-10.1892870409739,-9.32650147621522,-9.48004196539499,-11.2413149309898,-6.9039806515703,-1.29095563023651,-15.4924133181467,-10.2814341295559,-8.95335345818401,-10.3809802785614,-9.07540827706969,-10.3016348628841,-9.68948324269285,-10.1078565943773,-9.92259048041776,-10.0259226357021,-9.94770926545419,-9.99673549811641,-9.94228920561558,-9.98044427644628,-9.93882288669728,-9.96482021337945,-9.94438341997919,-9.96404060198911,-9.957077942873,-9.98345331712701,-9.97611353717148,-9.95172663397729,-10.0713475302362,-9.8042268137981,-10.003049144731,-10.4828902686103,-8.80125786625601,-10.9932206224393,-11.8082067455432,-9.96807914511508,-10.2814349431159,-11.2168154511807,-8.96859207796644,-9.57876362027003,-9.73373062912824,-9.66281790065399,-9.83066767097916,-9.84348923618636,-9.81189303848538,-9.89994346410261,-9.81765817744686,-9.8961405996099,-9.81760035394264,-9.86700291021934,-9.80961311377136,-9.84485873820995,-9.81242200233624,-9.84783384575321,-9.82733528532809,-9.8453319932344,-9.87471859872252,-9.80538584369901,-9.89230950206522,-9.98857918592783,-9.43153518664357,-10.3656587871026,-9.29266471704367,-8.98245452963196,-8.99056165171762,-9.45758189885336,-11.2168152838529,-10.7692932989232,-9.32659450555793,-9.93324335162216,-9.52233900566935,-9.98075345310921,-9.68436118962809,-9.98784182643232,-9.81189298033372,-9.97255753443335,-9.85569427178834,-9.93692786605241,-9.84944211534263,-9.90084640952803,-9.83972867935286,-9.88477760584525,-9.84340612983666,-9.88014045377653,-9.87232324131964,-9.87544243708873,-9.90385871953916,-9.9516546557643,-9.76912276212821,-10.1831769328382,-9.55694728324076,-10.1195841668637,-9.86911437528386,-10.3293778659076,-9.61301822856953,-9.14726208768326,-10.769293324312,-10.4986768934161,-9.36225871885074,-9.8853899298115,-9.58382546018404,-9.8388629184847,-9.72806074515549,-9.89122479786965,-9.79016555753982,-9.90199651157173,-9.79610328801986,-9.87497562309363,-9.78068964274683,-9.83237264710814,-9.74879832048391,-9.78778632426203,-9.74443610372491,-9.78567072984065,-9.78855728236998,-9.84940303363521,-9.78024088438196,-9.97512611844215,-9.64500663027609,-10.049881694902,-9.61882395413343,-9.94901465552833,-9.39914963756625,-9.76301434834673,-9.96657587784197,-9.46408891031973,-10.4986769003329,-10.4268130588382,-9.44647258293915,-9.91890872416674,-9.62015813791328,-9.91468317423606,-9.71233798699757,-9.92633237882737,-9.76837709617849,-9.91337007126904,-9.79103505006554,-9.87337329977187,-9.75017532456241,-9.77610361153609,-9.66592598554571,-9.69311901419363,-9.65022943542995,-9.73205487867471,-9.71454831961245,-9.85878912017805,-9.71214160017109,-9.98975937716843,-9.69548920668705,-10.054684581232,-9.67605016502649,-10.0653957502937,-9.78019539556713,-9.71155305772298,-9.78339082566839,-9.49642426827306,-10.426813092695,-10.3130318652406,-9.51499552578307,-9.93774242671897,-9.63658379295775,-9.89275497021376,-9.70548455719207,-9.89307666300123,-9.76453082783781,-9.89198712176816,-9.76371590348157,-9.81758180731855,-9.66292665782159,-9.64062067641355,-9.47483245825218,-9.47204874478348,-9.41560981931257,-9.55799045825452,-9.54454429349075,-9.7991076144966,-9.6612485088036,-9.96261740266889,-9.67470399310286,-9.98885568517465,-9.66045210663904,-9.85211312485966,-9.77541333760198,-9.7890685795742,-9.88613853839347,-9.53642890777551,-10.3130318460236,-10.2523968786958,-9.5650648622996,-9.94470180988312,-9.65251226273189,-9.90192550656393,-9.7237578732081,-9.91408726903275,-9.76840514825339,-9.89088117422101,-9.75075518659755,-9.7831473647922,-9.58222390468606,-9.4736995592903,-9.21208555797528,-9.13713543778329,-9.0374236841935,-9.30383530641967,-9.3615019865609,-9.73222528004506,-9.6390662167024,-9.94209226367829,-9.7015656682027,-9.96399296928727,-9.77668198875562,-9.8749119367154,-9.78918253603321,-9.72924411472942,-9.90484204140935,-9.59929297560196,-10.2523968883378,-10.177378736447,-9.59149627285178,-9.93575917351067,-9.68149930181874,-9.9173332873629,-9.73594243438849,-9.90916439048655,-9.77164917310647,-9.89087863296164,-9.76197885526294,-9.77123713796844,-9.52321913774117,-9.30898625075958,-8.90526658397839,-8.79245000871645,-8.65779952290251,-9.00580540168373,-9.18494214664934,-9.63468609472932,-9.61516106573435,-9.92122935437301,-9.74097518215811,-9.91664971601775,-9.78106086682301,-9.846584972987,-9.85625801783187,-9.75079666427745,-9.90458540421535,-9.62471120588337,-10.1773787554349,-10.1313234024269,-9.64269920332537,-9.95759295442559,-9.70636956117892,-9.9214976390111,-9.74747727811257,-9.92024142314165,-9.80413013374087,-9.93167144348851,-9.81513120012087,-9.81620580819549,-9.55094766727463,-9.33412821105329,-8.88032438167271,-8.70502775449057,-8.58194338494001,-8.94218316698222,-9.1539030735741,-9.66474634645931,-9.68135676630101,-9.94900176907414,-9.81184286862253,-9.92485232932047,-9.83618679274663,-9.83025633248771,-9.86359339053515,-9.75164170639045,-9.9099020750265,-9.66379987505496,-10.1313233957529,-10.0928013660858,-9.67356971602807,-9.95010706054811,-9.71857758304381,-9.9251879220813,-9.7764192517787,-9.94814206202302,-9.84356131003163,-9.97874495516032,-9.89615862734142,-9.96422839422322,-9.76312912407149,-9.63104740216732,-9.28963652249958,-9.17228601199467,-9.01265314500891,-9.35312046452355,-9.46472215128233,-9.86136175406101,-9.84346185208086,-10.0021264002349,-9.87516303186326,-9.92934104241055,-9.87618787878274,-9.83806599211449,-9.88657582981656,-9.76878545424279,-9.92959604683212,-9.69870245142365,-10.0928013752916,-10.0510627559035,-9.69613082010387,-9.94829946586602,-9.74972066412736,-9.94782402084678,-9.80398919554453,-9.96960165574845,-9.87955193106684,-10.0459493274714,-10.0057109901583,-10.1574955644887,-10.098746928148,-10.1449712256267,-9.97546262003912,-10.0191873460803,-9.900868341985,-10.1243275718952,-10.0359710511841,-10.1922633974774,-10.0495022570283,-10.1130160959124,-9.96471685546115,-9.95495669553428,-9.91379826710879,-9.84983321429512,-9.91418721519667,-9.78444211206643,-9.92825550212618,-9.71999080181712,-10.0510627678819,-10.0199888155451,-9.7322962581856,-9.96314474870683,-9.77338590262922,-9.95439604338461,-9.81992224361016,-9.99066916276444,-9.92547944704884,-10.1166699352526,-10.1184010250511,-10.315495173071,-10.339728065843,-10.5629761544382,-10.5557485541099,-10.7435909683061,-10.594144001757,-10.7460295050375,-10.5073138728543,-10.491670418976,-10.2319342657313,-10.1880292815308,-10.0402242415114,-9.98118259988666,-9.95386111841443,-9.86584567184954,-9.92742600331971,-9.79459389823213,-9.92977089953361,-9.74957579278468,-10.0199888166087,-10.0094181193324,-9.76055326692745,-9.96035954295491,-9.7855415257289,-9.96253994261758,-9.85146684168032,-10.0194174200845,-9.94962350719755,-10.1344298878403,-10.1358798499943,-10.3909483955007,-10.3992061496585,-10.654782872766,-10.5925141374774,-10.8291222055732,-10.7100723269347,-10.8014517542946,-10.6048154950822,-10.5646402251069,-10.3170239937406,-10.2243257110891,-10.084647242006,-10.0065187392717,-9.98264458275646,-9.87877458517052,-9.94499206924528,-9.81805180639214,-9.94887594866283,-9.77886415754396,-10.0094181229374,-9.97878302312737,-9.76970093208926,-9.961411922362,-9.81250887869144,-9.97855117473617,-9.86756773467649,-10.0375284246931,-9.96872833953788,-10.1554534493967,-10.1159324029386,-10.3405700116513,-10.2828208551151,-10.423462605108,-10.2700684678413,-10.3372518602165,-10.2726122143887,-10.4459226836604,-10.3474901875887,-10.4059028443975,-10.2532094106868,-10.1998473955479,-10.0944637468281,-10.0018970744378,-10.0002913631935,-9.89064443257405,-9.96134085196811,-9.83068391511106,-9.94358444701758,-9.79226674059395,-9.97878303789812,-9.98688755679881,-9.80624608747646,-9.97152173817405,-9.83257477675594,-9.99193785437111,-9.8666784018712,-10.0129150875365,-9.94267038483286,-10.1373738736817,-10.0709732119372,-10.2267201495317,-10.0974723020846,-10.1356181517254,-9.90008135777416,-9.91032689978746,-9.76582714665987,-10.0049303405546,-10.0414097792705,-10.1916200741051,-10.1529767636545,-10.1329328967617,-10.0915766478982,-10.0028119112042,-10.0196600968133,-9.90848404175091,-9.97347999644787,-9.84778419034925,-9.9527882484857,-9.81937124699516,-9.98688754528223,-9.96188209210014,-9.81273984538082,-9.97883363074353,-9.82409062688623,-9.9850242378229,-9.91394702320821,-10.0755025766762,-9.95117550561129,-10.0966715251633,-9.98844705803627,-10.1161987735474,-9.93464317611496,-9.94351338977084,-9.65311282147034,-9.64909826228227,-9.53099728756212,-9.72469877769007,-9.82482547851224,-9.99883326992054,-10.0446886868729,-10.049330697408,-10.0574542923375,-9.97896178698354,-10.0098878165897,-9.89913175852371,-9.96998428447778,-9.85524603139736,-9.95637032386703,-9.83207832576237,-9.96188210851872,-10.0098117122284,-9.82210643218179,-9.98182440815845,-9.87392010956594,-9.97424979166188,-9.8243254120124,-10.0138485078134,-9.92680206066702,-10.0738848637754,-9.93548943230363,-10.0546343375158,-9.84910888077668,-9.85214609523768,-9.60005633506995,-9.59355823071979,-9.50098462227223,-9.660811337613,-9.7493905773586,-9.90712614581429,-9.97963484804146,-10.009255075058,-10.0339375730791,-9.97524094833681,-10.0153000730517,-9.92138340782438,-9.9931322301222,-9.88158225302018,-9.97000616681023,-9.85383264022231,-10.0098117033373,-9.97950930755583,-9.83896634452749,-9.96125475053605,-9.86650018938668,-10.1079899688965,-9.94825343255221,-10.015857742134,-9.88274078747837,-10.0555789465165,-9.87161203095845,-9.96642102644103,-9.76749223899943,-9.78705124391875,-9.58275140139485,-9.59822799786318,-9.52006749616626,-9.63315500838013,-9.71259921693388,-9.82572143079044,-9.91471926297963,-9.92321076264947,-9.99661533963915,-9.91976696919876,-10.0038329489123,-9.890271415752,-9.97486742724811,-9.87007187620373,-9.94908788794785,-9.84725664160042,-9.9795093101223,-10.0323310504571,-9.88781649336652,-10.0596074256251,-9.73300284186876,-9.82481906961981,-9.86223673749348,-10.0897759717517,-9.87017415251979,-10.0405686452963,-9.88191635274523,-9.9703313615384,-9.78150236528941,-9.81471498736743,-9.64866947422149,-9.66156461242443,-9.61894844954353,-9.68613158711056,-9.75540235651823,-9.83150015310754,-9.91506652346393,-9.93481315248395,-9.98731967349273,-9.96928315998165,-9.98541326778954,-9.95913978222601,-9.98003594601543,-9.92711559190082,-10.007471607177,-9.89212900469419,-10.0323309905581,-10.1202673266281,-9.65557132935028,-10.0965376635057,-10.239061369125,-10.1663785469077,-9.74610532517939,-10.0197796408622,-9.84761197589836,-9.95147784357189,-9.7867319464616,-9.89884599682872,-9.72345313361019,-9.74730525002001,-9.64476377117696,-9.63467950665136,-9.62152949357849,-9.65540561076451,-9.71488215400744,-9.76266799010152,-9.84813316376239,-9.8428755085086,-9.93743173201223,-9.84779905244995,-9.99831282931948,-9.81630356036407,-10.0322666109364,-9.82299933263218,-9.97490697012144,-9.86408521454212,-10.1202674128636,-10.6535905851903,-10.0309244213539,-9.51567383993632,-9.35122454947235,-10.2491131237217,-9.93838856025389,-9.9967814399912,-9.89487763893792,-10.0764719098887,-9.85202900061043,-9.933395512932,-9.83629849458843,-9.80338387738493,-9.75981561436967,-9.73638310440711,-9.736524023879,-9.75438039952732,-9.81177395521649,-9.83527753918286,-9.91277378366762,-9.90872757329307,-9.9723733491718,-9.97311203016879,-9.95299782026946,-10.077355995021,-9.87791592566191,-10.1609698993902,-9.97106872572768,-9.86158907911004,-10.6535904458777,-9.22924797678666,-10.3503536339572,-11.6598013309184,-9.71338365765826,-9.74387503386032,-9.88984758916103,-10.0267377276823,-9.63664917688498,-9.88325839523105,-9.78017726621936,-9.74120863406674,-9.73615040808527,-9.68051261620434,-9.65263192496141,-9.6349782339519,-9.63791653811879,-9.63990065207056,-9.69296722442905,-9.70162573013761,-9.77319966918708,-9.77024137372627,-9.84876286976582,-9.78888719245767,-9.95130450135852,-9.68329005754582,-10.2049895767899,-9.47154912479644,-10.4477288734367,-9.89563823977732,-9.22924736949461,-15.458980405758,-4.02582111762886,-10.8498454653406,-10.2524689922967,-10.1541831958134,-9.54795234393716,-10.2635577737771,-10.0102361449177,-9.89862052108524,-10.0098664345891,-9.8809038096219,-9.89641664309886,-9.84578104642741,-9.83645328971847,-9.80926270649249,-9.82703512170962,-9.81932265870475,-9.87065105707834,-9.86723269201175,-9.9402592709497,-9.91730294589318,-9.99912658490177,-9.95385703161312,-10.0020081929435,-10.1288996738277,-9.75064901843789,-10.8044904399576,-9.19159993140507,-10.4254367529842,-15.4589812163625,-28.748452698116,-10.7707437067324,-9.28561356512355,-10.0775830304926,-11.0676220854713,-9.55656401656567,-9.57959104278428,-9.90630483655719,-9.65585520207119,-9.71777374928067,-9.69850289204414,-9.65091666814872,-9.63999037719977,-9.61435872972185,-9.60407105187996,-9.6028499083292,-9.60969003454061,-9.6460557175109,-9.64243553732894,-9.70817253647993,-9.69267961375948,-9.74659093679387,-9.75357450923166,-9.75762421018573,-9.74612184826637,-10.0831593042749,-9.00417580696163,-13.0292785677247,-6.25527420575011,-28.7484508305796,-38.82204207189,-3.35944525290177,-12.6685286748525,-4.28990350465502,-9.63049918355746,-10.338702341929,-9.43905357796235,-9.93497399456873,-9.76769847358769,-9.81760074330836,-9.73295337662567,-9.76196859811937,-9.67776588035614,-9.70294812517765,-9.64394122827027,-9.68508810871004,-9.65440171398058,-9.71534278020772,-9.70380689136726,-9.77622876753706,-9.76586185808113,-9.82256530252519,-9.79087208308908,-9.89938347214959,-9.52019372264343,-10.1960078870479,-9.24602063254571,-6.93501811100079,-3.97989994947819,-38.8220533013544,48.7326386546161,-28.506992687301,-26.5938341038907,-16.3036601344847,-8.95508270037276,-11.4270171586905,-10.2346343574149,-10.5003406418448,-10.1721394023088,-10.4604839877129,-10.1843207657768,-10.4286249182406,-10.2645635784609,-10.4225889399899,-10.3162922214118,-10.4082177357198,-10.3363952439369,-10.3608269571544,-10.3268465469507,-10.314045708594,-10.2983695204238,-10.3666277324991,-10.2202802524064,-10.5530266836726,-10.9426213639145,-9.29014833014578,-15.6532403607211,-27.7514502702359,-23.5690846786472,48.7326404305675,76.5982439365119,-35.0574635789638,-35.6953959309745,-21.0305491178756,-9.17089615643373,-12.8480024047375,-11.0330966562896,-11.4083014682998,-10.9307138335129,-11.353288682149,-10.9500260729592,-11.3345497333956,-11.0850629333326,-11.329540574581,-11.1876455695054,-11.3034055003518,-11.2080342100164,-11.2339381765609,-11.1757546063597,-11.1371524492717,-11.1291032794783,-11.2071176193421,-10.9837711803002,-11.5249909952346,-12.1399160427574,-9.53704004450282,-20.512438017883,-36.232881766477,-31.5675296714181,76.5982404529769,-25.5819273296302,-2.46024414858401,-5.02079927468982,-11.5385836531265,-10.5857076726031,-10.4238956589137,-10.463922513116,-10.4807251965323,-10.342181652907,-10.4482533187134,-10.3288746870833,-10.4044577241745,-10.3330956806343,-10.3769556699187,-10.3366879603927,-10.3637475900817,-10.3430858549834,-10.356839547903,-10.3626691187935,-10.3775310288037,-10.3530105771842,-10.4746916921535,-10.4202448746016,-10.2206424003574,-11.2320195085103,-9.94962072211887,-5.33597153487466,-10.2364737270474,-8.73924695981949,-25.58198319634,-33.7839103274667,-1.69633118711585,-15.2709433698186,-8.43472696930849,-11.430526824597,-10.6384942920674,-10.7046796943055,-10.7842314703036,-10.6838776116383,-10.7000143254335,-10.6675137738239,-10.6590668898628,-10.6344672628686,-10.6401555593629,-10.6194409891935,-10.6445277491186,-10.6309349632731,-10.6747010066911,-10.6471331985301,-10.7165931077511,-10.6779836573098,-10.6432058772703,-10.8493642994471,-10.534318661398,-10.2424710012377,-12.5622999716938,-10.4742016199024,-7.69729148978296,-18.2016479542717,-33.7838876078595,-19.9979402526419,-8.86583306955153,-7.65454226897148,-11.6820425379465,-9.56398299765089,-10.6058090793604,-10.3765095719399,-10.31921679369,-10.4456568708898,-10.325917504332,-10.4069769811331,-10.3334476224525,-10.3794974619262,-10.3276873235207,-10.3630466963627,-10.3265847643006,-10.3492266933165,-10.3350483683931,-10.3542234487,-10.3280633729228,-10.4256492392195,-10.3493924913368,-10.2954978364206,-10.9292533158308,-9.58450008705134,-10.0142990207705,-12.0376737160733,-6.86097104510957,1.86964869699248,-19.9979555403984,-11.3125916125671,-9.25553362420162,-11.3249697381425,-9.32028590132309,-11.1399569641565,-10.18041788789,-10.7826111631608,-10.5168551828676,-10.6594674107673,-10.5569587053047,-10.6169145844167,-10.5426116765381,-10.5905552056616,-10.5384544627299,-10.5747347211075,-10.5481614335301,-10.5763202918751,-10.5598522515998,-10.6057605531589,-10.5724420310725,-10.5678857011893,-10.7360132646679,-10.3266628343306,-10.6832177206773,-11.2549871145754,-9.03412126366416,-12.0793872665664,-13.3438548819317,-10.3566446764631,-11.312592638122,-12.6168010328936,-9.21732260042967,-10.0789716103074,-10.3363387244509,-10.1300786555626,-10.4272948478503,-10.3981441829975,-10.3754152882307,-10.479047540208,-10.3641881320852,-10.4661403602136,-10.3645458032205,-10.4327221415579,-10.3559824139168,-10.4065274736825,-10.3545166716682,-10.4062299886445,-10.3706170343079,-10.4079942276735,-10.4458557958876,-10.3436771254917,-10.4871651318299,-10.5593884876661,-9.84448235791728,-11.1269430871384,-9.69977013135438,-9.10047591171503,-9.33717063004083,-9.91808919510601,-12.6168042569509,-11.8993031641073,-9.70142828835468,-10.5750501326566,-9.98852245940214,-10.6449418649322,-10.2089022277385,-10.627685180133,-10.3677235427759,-10.5815889735821,-10.4264853682784,-10.5371757747435,-10.4208814849134,-10.4919384253778,-10.4037447475234,-10.4645353065028,-10.4099437992322,-10.464374646343,-10.4500525223879,-10.4570878979849,-10.4953538612555,-10.5322226502909,-10.3145375858824,-10.8844264699657,-10.0559627007134,-10.785957225564,-10.5291414235517,-11.1431574499667,-10.1287039848023,-9.39505350183058,-11.899305859441,-11.4484565791635,-9.75523196237702,-10.5016078524671,-10.0996307027248,-10.4184162954396,-10.270544452745,-10.4657284918394,-10.342559764062,-10.4866159063227,-10.3478009402349,-10.4519082467235,-10.3196723378471,-10.3881858457192,-10.2840063243016,-10.3385049644961,-10.2774655318026,-10.3392908327305,-10.3313888548924,-10.3996281639891,-10.3236121560417,-10.5829600520752,-10.155312886184,-10.6807307351324,-10.1159388079932,-10.5314436706687,-9.79453031967496,-10.3053740936111,-10.6436316293327,-9.89023589805795,-11.4484588380171,-11.3438791330194,-9.88980441085809,-10.5490255272439,-10.1238805779981,-10.5165923934211,-10.2445172835335,-10.5348570079646,-10.3192211517494,-10.510235977695,-10.3372218973659,-10.4445898491378,-10.2908337465565,-10.3310319911736,-10.1897946990238,-10.2383121964134,-10.1686208054897,-10.267281742842,-10.2479725940123,-10.4309234492696,-10.246710290636,-10.6066728278713,-10.2137883131239,-10.6824231507848,-10.1989093350315,-10.7407575067066,-10.3572596863567,-10.2376082543423,-10.3484463941155,-9.9438517646438,-11.3438810100699,-11.1449637482081,-9.95802794091139,-10.547037879295,-10.1464924196909,-10.4919921764255,-10.2443056335526,-10.4844663537423,-10.3040425848633,-10.4654926001638,-10.3028004148704,-10.3767809467138,-10.1830993219995,-10.1765165389135,-9.96953383483818,-9.98070796134102,-9.90684048684108,-10.0801563482518,-10.0480154893835,-10.3604501992399,-10.1624355716837,-10.549438912362,-10.184530731503,-10.6060270425611,-10.1668195724112,-10.419357139929,-10.3317627001601,-10.3626901564223,-10.5039888906679,-9.97629310325309,-11.144965559147,-11.0423783891142,-10.0334097268991,-10.5696414114978,-10.177656202933,-10.5051335521551,-10.2542903704019,-10.5011010900245,-10.3101730905396,-10.4714936791638,-10.2879750235085,-10.3425098714731,-10.0960222498851,-10.0032601831947,-9.71481341018229,-9.67050611688029,-9.54862012344163,-9.83843771088498,-9.85461890547965,-10.2805999415433,-10.1443205817557,-10.537237190709,-10.2241699598318,-10.5734646776618,-10.327155462361,-10.4622538208551,-10.3485720179742,-10.2593563127945,-10.5071551925643,-10.0760466693732,-11.0423799767638,-10.9310666268991,-10.0838815842542,-10.55308440881,-10.1979516176755,-10.5083274765872,-10.27068683869,-10.4993918563206,-10.3157823832836,-10.4689719899829,-10.2938063518088,-10.3257414614542,-10.0589575130233,-9.88462924076711,-9.4964447273269,-9.40124490135126,-9.25282820061223,-9.62099369509676,-9.71561944674689,-10.2117053141832,-10.1263899767156,-10.5039887280685,-10.2604961797254,-10.4968068737625,-10.3262111113247,-10.4168113805744,-10.4336904346764,-10.2936761492431,-10.5107123016896,-10.1195460265003,-10.9310681342725,-10.8466144610601,-10.1337447485987,-10.5650249317124,-10.2325174271494,-10.5224897485285,-10.2907342915778,-10.5129205859235,-10.3451762903252,-10.5069821898176,-10.3627537840338,-10.400026430479,-10.1537895883696,-9.99548176993811,-9.60903155421426,-9.53255311693274,-9.32362264765726,-9.72791907653858,-9.80789163026067,-10.287597355522,-10.2232695732959,-10.5300098565945,-10.3542431966372,-10.5097394923068,-10.3957910298617,-10.3921881335601,-10.442057963128,-10.2980373869646,-10.517290613629,-10.1575709789949,-10.8466158071208,-10.7805222284153,-10.1803450760858,-10.563839546353,-10.2557475167739,-10.5252986915964,-10.3147944498691,-10.5349845610402,-10.3940549144721,-10.5684053791,-10.4700570796463,-10.5842771315724,-10.4309799723234,-10.4261059358929,-10.134774102471,-10.1721627431932,-9.99106927101689,-10.2478353251309,-10.2421858402192,-10.5495916566121,-10.4239185943589,-10.6033497336668,-10.4277614237602,-10.5072580895368,-10.4449134699803,-10.4035655560748,-10.4726838456848,-10.3088414216364,-10.5286797916585,-10.2117371861189,-10.7805234818258,-10.7208263927429,-10.221877376681,-10.5593425157695,-10.2822846950349,-10.5417020096812,-10.3508714641229,-10.568247259641,-10.4442791170834,-10.6467401701787,-10.5914022236515,-10.8067340814945,-10.7924285410993,-10.9884375025336,-10.9046231571259,-10.9976093626985,-10.8825487179179,-11.0873810795927,-10.832413767405,-10.9531097405306,-10.6695022876782,-10.7296234805108,-10.5417464821389,-10.537862156295,-10.4932935177646,-10.4103853704605,-10.4995478662599,-10.3312346162952,-10.5320301637189,-10.2484441633213,-10.7208275936315,-10.6627364178817,-10.2542828688148,-10.5649609255835,-10.3140685011906,-10.5573976852137,-10.3767274783788,-10.5928039142303,-10.4934460975987,-10.7326874570118,-10.7197635460303,-10.9932460849709,-11.0250402932587,-11.3182357848855,-11.3140015574598,-11.5570127314912,-11.351762251771,-11.5583408837785,-11.2435496964651,-11.2174141694653,-10.8804396959397,-10.8117027552075,-10.6320274861484,-10.5676125744416,-10.5382813704681,-10.4294119300871,-10.5191219975978,-10.3475928597139,-10.5314700280794,-10.2748422514213,-10.6627369557401,-10.6429891465316,-10.296142618003,-10.5694372818114,-10.3366611972544,-10.5667808357005,-10.4085884537411,-10.6226062459225,-10.5170614450264,-10.7577932473136,-10.7427534924318,-11.0508337787627,-11.0352499246118,-11.2683889490899,-11.1175552524883,-11.3127017035183,-11.1768884471596,-11.373809905306,-11.2038331950903,-11.2294932879192,-10.95568712508,-10.8667825860953,-10.6907583670337,-10.5995025547767,-10.580726190318,-10.4510483779694,-10.5428110954241,-10.3705081443733,-10.5481272492107,-10.3204262546828,-10.6429902194463,-10.5978499877427,-10.3148069232201,-10.5693650375295,-10.3610298588849,-10.5761213383526,-10.4252253384052,-10.6598942195977,-10.567191594261,-10.7935090423841,-10.7221473944071,-10.9741098764061,-10.8618702356788,-10.9509515558074,-10.6208447036048,-10.6396630493682,-10.4899978321152,-10.8310014748646,-10.8449412840015,-11.016068942122,-10.8711410799376,-10.8280750412737,-10.7109306883496,-10.5963726587654,-10.6004161232886,-10.4574769641632,-10.5542752680651,-10.3851673788004,-10.5420677199871,-10.3416770355044,-10.5978509867291,-10.6066156267647,-10.3534227240277,-10.5709481445278,-10.3869294895376,-10.6089549395609,-10.4334079537833,-10.6084597688937,-10.5083228732259,-10.7656561844867,-10.6702966229001,-10.8678129872439,-10.6559034031469,-10.6535008407179,-10.2351333671776,-10.1791434136486,-10.0216287737812,-10.351543696342,-10.510288567522,-10.7799738604467,-10.7708024409255,-10.7616718324038,-10.7134858066441,-10.6035704626889,-10.6275450986616,-10.484965188403,-10.5794613567479,-10.4163490523951,-10.5577225651459,-10.3709976228185,-10.6066167006459,-10.5610641621817,-10.3596490624274,-10.5927719912732,-10.3767252473135,-10.5883772804953,-10.5062025877536,-10.7227543918989,-10.5375938037273,-10.7291785313414,-10.5860834682499,-10.7381751887191,-10.4855524145299,-10.454783276667,-10.0657481544735,-9.99501094429604,-9.85712232950303,-10.1482648376356,-10.3017070462663,-10.5699868018432,-10.6454947354977,-10.6588771226178,-10.6695219089331,-10.5653123490702,-10.6157888009451,-10.4719804611867,-10.5670610279351,-10.4127561785336,-10.5493004666301,-10.3851945714415,-10.5610651323155,-10.6462531875694,-10.3780162819496,-10.5967640072343,-10.455902656118,-10.5607786060566,-10.3266502626683,-10.6070165186378,-10.5204199636394,-10.703957693882,-10.5262757671906,-10.6796112811945,-10.421832996218,-10.4134840859872,-10.0803533060257,-10.0697143890357,-9.92632019561877,-10.1565174692012,-10.2840039658795,-10.4943993345697,-10.5865066611892,-10.6245989601553,-10.656762842168,-10.5822036304708,-10.6306209301258,-10.5080291884967,-10.6036636314456,-10.4564246103406,-10.5811628070526,-10.4277188868666,-10.6462543530599,-10.5877066599322,-10.393148721878,-10.5351066785476,-10.4105248193543,-10.8184561115222,-10.6067172238463,-10.6291823094037,-10.4432198696084,-10.6745435632777,-10.4349157263397,-10.5616303672867,-10.3177723901611,-10.3429755318622,-10.0724259013154,-10.0995824283527,-10.0015084197182,-10.1401640008741,-10.2453794313248,-10.38712157729,-10.5011748257721,-10.5021031836105,-10.6004500246246,-10.4863550664911,-10.6069632015626,-10.448137323905,-10.5707271841307,-10.434620906104,-10.5346750730254,-10.3938013298602,-10.5877072540814,-10.6718402747683,-10.4615944613128,-10.7577260208605,-10.2212819855593,-10.2578625819786,-10.3929704578867,-10.7484569961279,-10.4420641103573,-10.6750995411767,-10.4963933746452,-10.5936783247622,-10.3578922057151,-10.4110847278714,-10.1976330307147,-10.2166101102475,-10.1609362065893,-10.2495206711627,-10.3303864207871,-10.4266082087864,-10.5245768088711,-10.5503574848545,-10.6009916509904,-10.5922484484781,-10.5924777704738,-10.5844199328774,-10.5881795777571,-10.5259267509728,-10.6403826080998,-10.4728898893893,-10.6718419478336,-10.8230902694812,-10.0622791639847,-10.698981871861,-11.1002254815181,-10.9573365382923,-10.2276233849,-10.6149563968979,-10.4299859739096,-10.5039579998289,-10.315885294251,-10.4780427060107,-10.242235123626,-10.290973442398,-10.1568434409748,-10.151685518161,-10.1284942445256,-10.172958508592,-10.246805717115,-10.2979511644533,-10.4058079565513,-10.3870684535924,-10.5243960177971,-10.3775249929462,-10.6168393600852,-10.3123515770451,-10.6646806041321,-10.3338415110396,-10.5528071568718,-10.4274909267404,-10.8230910981652,-11.6495699700237,-10.7899097590131,-9.8959794881584,-9.40730264913899,-10.9531653939142,-10.6321371181817,-10.5702704195046,-10.529394590679,-10.7729554234338,-10.4419974674022,-10.5823690352006,-10.4424850352037,-10.4095656073963,-10.356196235957,-10.3269602126051,-10.3316236536342,-10.3487215201907,-10.419965336943,-10.4469842342045,-10.5432549738152,-10.5364460325164,-10.6018983913985,-10.6300845485922,-10.5376377963803,-10.8047753329612,-10.3961585390272,-10.9317105186437,-10.5707838273674,-10.3794345026629,-11.6495735568545,-9.3460235350702,-10.7091669001563,-13.2995823182726,-10.4246589396564,-10.0943086322676,-10.4913954589321,-10.6378224557274,-10.0342410489783,-10.4481751115759,-10.279273156772,-10.2461960002954,-10.2466130872533,-10.1759087726384,-10.146711463672,-10.1193616217999,-10.1237698615212,-10.1275551089919,-10.1891316215817,-10.1993668858806,-10.2893832450869,-10.2770985326086,-10.3845226713012,-10.2802547322311,-10.5603517121558,-10.0672492115924,-10.9962799948265,-9.66780471364743,-11.3093302939362,-10.4799561985475,-9.34602774232571,-20.0208939796803,-1.99277290365716,-11.4788859596202,-11.032392962905,-10.8932660291063,-9.96159641055392,-11.1106157703731,-10.678686841727,-10.5343424765593,-10.7086435947984,-10.5146025391016,-10.5518497500679,-10.4829109024853,-10.4749561179295,-10.4434436516932,-10.4681990764501,-10.4544494663329,-10.5228807149379,-10.5116011873735,-10.6008301466999,-10.5675880400637,-10.674183623108,-10.6191943435701,-10.6352282216737,-10.9419362608106,-10.1298723637465,-12.0807470345546,-9.17828494808625,-11.0093210925528,-20.0208896237924,-36.9443577269961,-12.1783288030627,-9.33918848766593,-10.7832693613408,-12.1209373414067,-9.9565639734746,-9.95082775395178,-10.464656453444,-10.0946503787615,-10.196913058084,-10.1758552398333,-10.1096745871653,-10.1099334004696,-10.0639322174931,-10.0587020032122,-10.0569607790033,-10.0592782365664,-10.1046330343629,-10.105456091525,-10.1816416972002,-10.1656691344612,-10.2311427336564,-10.2420525494543,-10.2486975617706,-10.1811669338643,-10.8367355501224,-8.89309129834608,-15.1836429684787,-5.2598831413167,-36.9443960681735,-46.521176348565,-2.98685730166079,-13.7912135524156,-2.84010960396495,-9.82162047055748,-11.2995167440892,-9.85031219520184,-10.6108344459286,-10.3554364670325,-10.4342954814397,-10.3119771804342,-10.3690227955849,-10.2408145071184,-10.2945008935741,-10.2056848053475,-10.2637839877426,-10.2233309892638,-10.3024494157501,-10.2810507640561,-10.3757957524513,-10.362897884601,-10.4276625230023,-10.3908850643585,-10.5549377285063,-10.0024975481876,-10.9876859283538,-9.5845324483281,-6.64081103973848,-0.869582546166061,-46.5211289744024,76.5982474200468,-35.0575113241294,-35.6953691563471,-21.0305503792206,-9.17089450815674,-12.8479978903716,-11.0330961571427,-11.4082983296859,-10.9307124520579,-11.3532860344953,-10.9500253349491,-11.3345472059104,-11.085061381338,-11.3295381293957,-11.1876439691451,-11.3034030981379,-11.2080325464679,-11.2339357988612,-11.1757528615804,-11.1371501438108,-11.1291023159264,-11.207115453587,-10.9837694384246,-11.5249882870366,-12.1399139213904,-9.53704310846883,-20.5124211339971,-36.2329177669739,-31.5674788120046,76.5982439365119],"Archive1110_field16":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.8421709430404e-14,-78.9646374402783,0.896161954989992,-18.2194258757545,-2.334045465473,-5.09106617995261,-0.69004830558427,-2.69225819741942,0.185253980358624,-1.95267414900312,0.00557100813190914,-1.6731988829728,-0.445177901512949,-1.59246352110554,-0.747727125161219,-1.4177467128965,-0.81878661632291,-1.10634504982048,-0.708494828451336,-0.982539043902335,-0.537826563891173,-1.36721600455147,-1.36186575523496,-2.01828214165292,-2.81155573974743,-14.8995988326555,23.3886866543912,-103.311266249063,86.8414640286837,-2.8421709430404e-14,-5.6843418860808e-14,-26.7357937322654,-27.1542054658725,-11.7141321548315,-7.29234498532884,-8.67721768059442,-1.55492088910279,-5.82123805568648,-0.740222120128294,-4.07086809602396,-0.818842020537375,-3.29321804057912,-1.04513466807288,-2.91549943611147,-1.29465571029817,-2.69617794931315,-1.50729180705019,-2.61881112163127,-1.60666328393569,-2.7341062254273,-1.95490543477337,-2.84965820301085,-2.85736481546229,-6.11736046872437,2.75532509580665,-27.2508298913328,16.9804055119801,-32.7408018792632,-73.6307677069029,-5.6843418860808e-14,0,-32.8968975892975,-3.6088152722574,-21.3400930045294,-2.06640290809776,-10.3577227891994,-0.719525993709112,-5.45579160362934,0.0550756853118628,-3.44340661268552,0.285749961252804,-2.45261556169874,0.206848566518261,-1.91022101048065,0.00354263122665088,-1.62692916474941,-0.160370017836726,-1.59226620652259,-0.36301417050754,-1.82770481540729,-0.740264510949714,-3.66265923604965,1.45423709229544,-13.1566025439161,10.8746659298306,-27.3719281348534,3.87878476577976,-9.950642731073,-11.7311821839681,0,0,-22.2367225980232,-9.69291242249369,-15.6425583053528,-5.69344688546937,-10.2270946057129,-2.09733602376707,-6.68052305791923,-0.546999710730802,-4.40398286577818,-0.025586331190766,-3.07070657343002,0.0587253369741347,-2.35901647899277,-0.0366815888104384,-2.06661994920455,-0.242059034075851,-2.18105164500537,-0.508822920580769,-3.1720932967288,0.260385328444613,-7.44989504970988,4.4017465032282,-16.028672229976,5.34338220074267,-17.1167875510184,-9.33265156515381,-17.5520402759555,-17.6172554206279,0,0,-20.3989878503492,-4.06077271948936,-16.9004160290366,-3.03528923165038,-11.129642714702,-1.31825733472738,-6.76796435698429,-0.0802190208686397,-4.10852370705163,0.620533897173232,-2.51601047912061,0.989961157493212,-1.5797055622719,1.0869093335798,-1.2687397707324,0.918860387082646,-1.78177403853169,1.04223277023618,-4.06179648938212,2.80691107043754,-9.1756495266651,5.02420477592329,-13.4677372123742,1.6533695738151,-12.9150993675822,-3.94344606454047,-9.94412443320459,-17.9260768373584,0,0,-17.7140946885631,-3.90238692529647,-14.8543824401277,-3.65369931100486,-10.4639436031803,-1.74183304493613,-6.79351269170911,-0.144565616059936,-4.11154671758686,0.977868296493625,-2.15849423556915,1.75361026770224,-0.951990114125465,2.09551059701107,-0.738118136697267,2.13183953058342,-1.94321576217544,2.65562317689955,-5.13541939319384,3.89755034812129,-9.29457878409357,3.42871258463083,-11.4430792672511,-0.754951768881256,-11.7314333646145,-9.1794926617772,-6.06039476271894,-14.5408771744105,0,0,-15.9214470173133,-2.66099474553857,-13.8603479676299,-2.57244859552111,-10.1710602205321,-1.18085516886049,-6.54811759443282,0.424833479665267,-3.48415727441648,1.98295721406498,-1.03772417332243,3.33588510740515,0.567591340692616,4.20652477358863,0.688389573675067,4.50548693433757,-1.30963870899768,4.69420607990673,-4.85970497795574,4.55338102316955,-7.96662384912634,2.68796395138224,-9.24792372434422,-2.00621029783451,-7.42834348984661,-9.13028606074158,-5.80929591863833,-13.8085653162912,0,0,-14.3424291300551,-2.00853966757472,-12.6688077632093,-2.26216047346247,-9.48384050272148,-0.945992945901935,-5.96646048458229,1.01290218956478,-2.61057834607641,3.23774837738347,0.528837081300253,5.63230951791479,2.93083762232595,7.40838944246184,3.00277425517515,7.68726632068433,0.215747640307654,6.7296307874069,-3.59267501435784,4.96816626995792,-6.45575867744355,1.60244723565597,-7.22169968898083,-3.94183935968954,-6.11746565174121,-8.83135471011815,-3.94748743646119,-12.575396109414,0,0,-13.0454697862936,-1.47695016804323,-11.5983660375582,-1.66794468830267,-8.68016370673126,-0.28633376334983,-5.1658237765846,1.97869443762488,-1.29208387911581,5.19822215395084,3.06730916636593,9.26506917579127,6.82972185329095,12.5051959104796,7.22286972107963,12.3560467161924,3.52588501163814,9.39738990997125,-1.29298452138369,5.57481583213621,-4.3512223445839,0.998781020127808,-4.9804338758463,-4.08948938933781,-4.58499488221287,-8.84546888389082,-3.24222583978485,-11.3731808192156,0,0,-11.901926034288,-1.12566012216621,-10.5242462448916,-1.12885328423431,-7.79803409445208,0.301251597366218,-4.21236838366099,3.1183397696982,0.417292525072071,7.74062831319543,6.44942516106744,14.2672408926346,12.4540221310142,19.5780877657178,13.9127276852494,18.7451998248694,8.59855512881245,12.7483145700833,1.74277592780686,6.35881695482317,-2.08873214888058,0.708371357001397,-3.43201457526538,-4.34978018182892,-3.25750888689549,-8.19760283140636,-2.61079335251679,-10.4515682693038,0,0,-10.7606022877055,-0.686811435167101,-9.49813588719098,-0.634166428250637,-6.90789826472223,1.0177762036019,-3.10819752309203,4.48393497316533,2.33972683113302,10.6950419113946,10.3935123645697,20.1258593296541,19.5093632071155,28.0208724805552,22.2645717818634,26.4397261972983,14.977724167964,16.7908289879824,5.51393882928915,7.50712561779369,0.205147890398393,0.907144250889132,-1.80587498291402,-4.17869311077516,-2.38086217342448,-7.64491838173035,-2.06436069991219,-9.50040866663699,0,0,-9.7704357729549,-0.444520992439266,-8.58046851082963,-0.169036090756435,-5.99602879433633,1.74855377584117,-2.07806414192555,5.7353953604761,4.04370735492466,13.4201095205267,14.0713362773758,25.2649874673725,25.5350123650474,35.117069410464,29.5047251090396,33.0372907198516,20.9877382751101,20.3551754844598,9.02733795352287,8.61843908764513,2.15982477513535,1.15578406546956,-0.528097088752929,-3.79739745709048,-1.52974190547866,-6.97607138900548,-1.5752218471589,-8.58218516854549,0,0,-8.88043300166282,-0.194279454125081,-7.68011616067133,0.32020545031628,-5.18815764464898,2.3523954929301,-1.29258792655855,6.67120300464103,5.16874996262732,14.9374703555591,15.7977851682276,27.3313775177694,27.3731605967232,36.8896982689903,31.445664686421,34.9517883301128,23.6637838481311,21.8428770117612,11.1819102575614,9.24965359169755,3.7408746074484,1.47943952775404,0.522159032272157,-3.37277932372172,-0.824949201824438,-6.30691531042294,-1.23175040843216,-7.80285655569196,0,0,-7.99956151475908,0.0847563847182755,-6.89784380560195,0.673819220436599,-4.56554698342825,2.78306289263764,-0.820255739056847,7.02890044860487,5.24332444461288,14.6589665019201,14.3374308056846,24.5810311631685,22.5989265596641,30.8170799555064,25.2152123285796,29.2535009505018,20.7424199607767,19.755012364571,11.2468941301609,8.78707129007262,4.51009271252315,1.5818466024366,1.28123151562068,-2.97706523900706,-0.31217729299442,-5.71226131543108,-0.925534374937342,-7.03841009482221,0,0,-7.25691656909657,0.249326894567275,-6.27066565917312,0.965371523793692,-4.08691197950247,3.05953741798112,-0.79858390447589,6.6466221898645,3.89136450153455,12.3512916130362,9.87158552059645,17.4242648312957,12.0974440215741,17.4268605345937,12.2151225164503,17.3556541545749,12.832000659766,14.2930491356074,9.06602509664935,7.28399851827271,4.50392140249187,1.37546355371023,1.72473281242401,-2.67930281020017,0.0993342107285571,-5.114638450239,-0.630875438013391,-6.29247000359283,0,0,-6.66392159488032,0.401241600686717,-5.74166463158645,1.22881625812715,-3.87101586022754,3.03449775400577,-1.17284473693553,5.9069914427987,1.92014049395357,8.76881036819077,3.77140738858816,8.17842747666145,0.0118102197830012,2.40336626927501,-2.75975074972212,3.79013026862913,3.0956077001274,7.17291122878532,5.46771909258723,4.82280105530526,3.83593947130703,0.777591458527695,1.81272005794699,-2.52298655727964,0.325684646047648,-4.64702672568956,-0.526850276460209,-5.73805154492266,0,0,-6.0900943757415,0.592418968308721,-5.4007174303415,1.36011684329196,-3.81932714109007,2.83708841336329,-2.04954726087863,4.56121955200069,-0.515059725807532,4.93633421015056,-2.03824055507812,0.113662719060358,-9.42739607694648,-8.50191785444622,-13.3274517192358,-6.79006061381278,-4.76527468497761,0.68469167715557,1.92269937797619,2.15854044341086,2.80297184616893,0.0698911964905164,1.70123932103752,-2.4343270255099,0.436989137871024,-4.2274126698353,-0.378918668492588,-5.15572348880278,0,0,-5.77262644628627,0.70540393150668,-5.22182154807797,1.34782471943754,-4.03760073722015,2.83765493075907,-2.56777887437875,3.43248221351769,-2.76245982596129,1.65010869985554,-6.22111816325332,-5.25741905231416,-14.5182209117506,-14.2034628562574,-18.0137256721655,-12.448453118604,-9.35558559844367,-4.00847569648704,-1.04689253945662,-0.315873590771389,1.52113864221928,-0.879752074377848,1.25859063627968,-2.60655840947902,0.314040401759939,-3.99084817452194,-0.40693185815644,-4.76745547838391,0,4.54747350886464e-13,-5.51815415149213,0.735687839972343,-5.14204201593293,1.63513029309979,-4.56326742108104,1.87965754357901,-3.88692330080312,2.22351605263202,-4.39504123028428,-0.695934782027507,-8.44650943043689,-7.88518117949161,-15.7890298991306,-15.5308579723232,-18.3054727149211,-14.1055202452717,-10.9057075321643,-6.53262665564853,-2.92330176545147,-2.12608129360069,0.459012816557788,-1.65377431022716,0.859388175124877,-2.6544734938002,0.255380878440974,-3.67887121685089,-0.395810494775105,-4.35560348776335,4.54747350886464e-13,0,-5.46185002177435,0.973894829143774,-5.655391199522,1.55371936183064,-4.22109114372233,2.40440118175547,-4.54366509948841,1.05673175749052,-5.54104296425521,-2.52039112409284,-9.55836198467341,-9.14664079082695,-15.2423969036636,-15.1656954581226,-16.8203652264356,-14.0916775726992,-11.0953451912319,-8.00928349129072,-4.22279823488543,-3.77794612062689,-0.66887593241654,-2.64216093589539,0.16295734896994,-3.04908973028842,-0.203828155309566,-3.76374502014096,-0.664867915190825,-4.35081439066334,0,4.54747350886464e-13,-5.75223168512002,1.30362537063957,-5.48216505895743,0.762985180391297,-6.55863040425584,1.35435976939334,-4.91129868190183,0.0633034193988351,-5.97578371714508,-3.41072291802129,-9.15066099815431,-9.23572523707162,-13.4002726747613,-13.7736618137742,-14.4993440802464,-12.9116505575134,-10.2480384732207,-8.2385753791732,-4.69525405186369,-4.41009130672774,-1.37133433701365,-2.94635633532653,-0.303254300761182,-3.04022428246299,-0.338834404799854,-3.57478342261766,-0.619987677226618,-3.97150049316497,4.54747350886464e-13,0,-6.2822675744942,0.386715701905814,-6.06049837516912,3.66326173431844,-4.97899902240897,0.451595907235969,-5.61257349029665,-1.11943915091024,-6.49673984242554,-5.04373817975647,-8.77938456955417,-9.74975782787942,-12.1461919069429,-12.8976647823406,-13.0014317127848,-12.2463847693975,-9.83450309885529,-8.74996110586153,-5.34651552739251,-5.58989439952575,-2.23111412863682,-4.19691365118797,-0.969582821580843,-3.98084705190877,-1.03135003608941,-4.06974461934306,-1.49896799838461,-4.50265567621545,0,0,-6.25288677732988,2.12766328472026,-10.2549529389562,-1.69910073530355,-5.8531179572019,0.801687012955881,-5.3926922285882,-1.89557625121142,-4.83743753027557,-5.65507788465402,-7.23953681965486,-8.9332889322277,-10.2303308771043,-11.1123116883828,-10.8758997200166,-10.6397323521933,-8.46599615607465,-7.96211022293937,-4.96940341676782,-5.20569860493924,-2.51212515931729,-3.52982078272817,-1.68553250204604,-3.01214097018783,-1.71226253247733,-3.55916032285859,-1.35082383721419,-4.43570574428486,0,0,-10.4111723081305,3.38335337580702,-1.55414128770735,1.5729697794086,-8.5265749552791,-1.32720878543114,-4.55695169054525,-5.5247285175401,-4.73737600311506,-7.15975649409393,-7.61395471424657,-9.20868094274556,-10.0198344636237,-10.8764835751026,-10.4581601862801,-10.5851113461968,-8.6296422003943,-8.58691133769844,-5.79527880299156,-6.44443142792989,-3.39877763306504,-5.4906498294622,-1.89236465753311,-6.00587901230938,-1.45662240927231,-6.60935240128856,-2.64000862651756,-5.9845343050165,0,0,-12.2834241998307,-10.0315186318849,-16.6578564610754,3.72115660413147,-3.6629598845384,-4.91908872480417,0.0506412562981495,-5.12045778914126,-3.13058402857496,-5.3822886846965,-5.88364711635495,-7.13094499642011,-7.6149618622394,-8.45272080113045,-7.87516220784346,-8.20520600608415,-6.4416186313556,-6.66300692891309,-4.23746285805555,-4.8808361866686,-2.67790356856403,-3.46036263424685,-2.91240386053232,-2.12330163843581,-5.30678348929905,-1.514494715826,-6.73673978084298,-5.34814426327102,0,0,0.855216770873994,17.6073521414428,-13.7709255010732,-12.4527016782531,1.23692150800525,-10.607742071893,-3.10229535275175,-6.4099113630964,-5.73234836222127,-6.69349839989536,-7.32318144383862,-8.22536639264126,-8.59010866166682,-9.34300537768195,-8.80684423671846,-9.2448002837582,-7.72362038487336,-8.0701616252727,-5.9916234119919,-6.66094126474127,-4.5620397994644,-6.13523234344939,-3.41830436625605,-8.55313630229921,-1.52320768704158,-15.2499765526936,-0.887594532497133,-16.4613800415009,0,0,-88.5212226620506,-7.5515180680859,14.047135050514,-16.2694118373311,4.19672699115108,-3.47705582470553,-1.18816755256557,-2.17744248635245,-2.20855867530099,-3.13569946835014,-3.33979310931409,-4.19249384479826,-4.19214921767798,-4.90276977976009,-4.20901731945287,-4.78320067538334,-3.4408018407612,-3.928529381933,-2.30873874754434,-3.0239711875729,-1.41931364473021,-2.61927293411463,-2.08497260115655,-1.52079697075351,-9.07184193571175,3.93048441920291,-29.4819123752877,-1.67666903214558,0,0,53.7238299139399,-86.5484397722112,4.34422453368825,-14.6614534321388,-8.4267670338786,-5.58063052754005,-6.09690158987542,-5.0859274649174,-5.68728994849334,-5.54499880683034,-6.36364076327482,-6.48589869759599,-7.02735084098094,-7.25340921219413,-7.07333393271438,-7.30647018410491,-6.4650914787444,-6.6125957359709,-5.50934955205412,-5.82303585121554,-4.92090215581993,-5.47376177468504,-5.81925725045585,-6.94793736067913,-8.25326811406558,-18.616726807355,-7.54799695849215,-75.5563313870625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.8421709430404e-14,-78.9646374402782,0.896161954989964,-18.2194258757546,-2.33404546547297,-5.09106617995261,-0.690048305584298,-2.69225819741945,0.185253980358596,-1.95267414900314,0.00557100813188072,-1.67319888297283,-0.44517790151292,-1.59246352110554,-0.747727125161248,-1.41774671289653,-0.81878661632291,-1.10634504982048,-0.708494828451364,-0.982539043902307,-0.537826563891201,-1.36721600455147,-1.36186575523499,-2.01828214165289,-2.8115557397474,-14.8995988326554,23.3886866543912,-103.311266249063,86.8414640286837,-2.8421709430404e-14,-5.6843418860808e-14,-26.7357937322654,-27.1542054658723,-11.7141321548314,-7.2923449853289,-8.67721768059448,-1.55492088910285,-5.82123805568636,-0.740222120128351,-4.0708680960239,-0.818842020537431,-3.29321804057918,-1.04513466807276,-2.91549943611153,-1.29465571029806,-2.69617794931321,-1.50729180705031,-2.61881112163132,-1.60666328393563,-2.73410622542735,-1.95490543477342,-2.84965820301096,-2.85736481546223,-6.11736046872448,2.75532509580665,-27.2508298913329,16.98040551198,-32.7408018792633,-73.6307677069029,-5.6843418860808e-14,0,-32.8968975892975,-3.60881527225752,-21.3400930045293,-2.06640290809776,-10.3577227891994,-0.719525993709226,-5.45579160362934,0.0550756853118628,-3.44340661268564,0.285749961252918,-2.45261556169885,0.206848566518261,-1.91022101048077,0.00354263122665088,-1.6269291647493,-0.16037001783684,-1.59226620652259,-0.363014170507427,-1.8277048154074,-0.740264510949714,-3.66265923604976,1.45423709229556,-13.1566025439159,10.8746659298305,-27.3719281348534,3.87878476577987,-9.950642731073,-11.7311821839681,0,0,-22.2367225980233,-9.69291242249358,-15.642558305353,-5.69344688546937,-10.227094605713,-2.09733602376718,-6.68052305791934,-0.546999710730915,-4.40398286577829,-0.0255863311906523,-3.07070657343002,0.058725336974021,-2.35901647899277,-0.0366815888103247,-2.06661994920455,-0.242059034075851,-2.1810516450056,-0.508822920580769,-3.17209329672892,0.260385328444499,-7.44989504970977,4.4017465032282,-16.0286722299761,5.34338220074255,-17.1167875510183,-9.33265156515381,-17.5520402759554,-17.6172554206278,0,0,-20.3989878503494,-4.06077271948914,-16.9004160290366,-3.03528923165061,-11.1296427147021,-1.31825733472726,-6.76796435698407,-0.0802190208688671,-4.10852370705163,0.620533897173232,-2.51601047912061,0.98996115749344,-1.5797055622719,1.08690933357991,-1.2687397707324,0.918860387082646,-1.78177403853169,1.04223277023618,-4.06179648938212,2.80691107043742,-9.17564952666487,5.02420477592329,-13.4677372123742,1.65336957381487,-12.915099367582,-3.94344606454035,-9.94412443320482,-17.9260768373582,0,0,-17.7140946885634,-3.90238692529647,-14.8543824401277,-3.65369931100486,-10.46394360318,-1.74183304493613,-6.79351269170934,-0.144565616059936,-4.11154671758663,0.977868296493625,-2.15849423556915,1.75361026770247,-0.951990114125465,2.09551059701084,-0.738118136697494,2.13183953058319,-1.94321576217544,2.65562317689978,-5.13541939319362,3.89755034812129,-9.29457878409335,3.4287125846306,-11.4430792672513,-0.754951768881028,-11.7314333646145,-9.1794926617772,-6.06039476271894,-14.5408771744103,0,0,-15.9214470173131,-2.6609947455388,-13.8603479676297,-2.57244859552088,-10.1710602205321,-1.18085516886072,-6.54811759443282,0.42483347966504,-3.48415727441648,1.98295721406498,-1.03772417332243,3.33588510740537,0.567591340692616,4.2065247735884,0.688389573675067,4.50548693433757,-1.30963870899768,4.69420607990673,-4.85970497795552,4.55338102316955,-7.96662384912634,2.68796395138202,-9.24792372434422,-2.00621029783451,-7.42834348984661,-9.13028606074181,-5.8092959186381,-13.8085653162914,0,0,-14.3424291300555,-2.00853966757495,-12.6688077632093,-2.26216047346247,-9.48384050272148,-0.945992945901935,-5.96646048458251,1.01290218956501,-2.61057834607664,3.23774837738347,0.52883708130048,5.63230951791479,2.93083762232573,7.40838944246207,3.00277425517538,7.6872663206841,0.215747640307882,6.72963078740668,-3.59267501435761,4.96816626995769,-6.45575867744378,1.6024472356562,-7.22169968898061,-3.94183935968931,-6.11746565174099,-8.83135471011838,-3.94748743646164,-12.5753961094135,0,0,-13.0454697862931,-1.47695016804278,-11.5983660375584,-1.66794468830267,-8.68016370673081,-0.28633376334983,-5.16582377658415,1.97869443762443,-1.29208387911626,5.19822215395084,3.06730916636548,9.2650691757915,6.82972185329095,12.5051959104792,7.22286972107918,12.3560467161924,3.52588501163768,9.39738990997125,-1.29298452138414,5.57481583213644,-4.3512223445839,0.998781020127353,-4.98043387584585,-4.08948938933804,-4.5849948822131,-8.84546888389082,-3.2422258397844,-11.3731808192153,0,0,-11.9019260342877,-1.12566012216575,-10.5242462448912,-1.12885328423431,-7.79803409445253,0.301251597365763,-4.21236838366099,3.11833976969774,0.417292525072526,7.74062831319588,6.44942516106789,14.2672408926346,12.4540221310147,19.5780877657178,13.9127276852498,18.7451998248698,8.598555128812,12.7483145700833,1.74277592780732,6.35881695482271,-2.08873214888104,0.708371357001852,-3.43201457526538,-4.34978018182937,-3.25750888689504,-8.19760283140636,-2.61079335251725,-10.4515682693038,0,-2.27373675443232e-13,-10.7606022877055,-0.686811435166646,-9.49813588719121,-0.634166428250182,-6.90789826472178,1.01777620360212,-3.10819752309249,4.48393497316488,2.33972683113302,10.6950419113944,10.3935123645699,20.1258593296536,19.5093632071155,28.020872480555,22.2645717818634,26.4397261972988,14.9777241679635,16.7908289879822,5.51393882928937,7.50712561779369,0.205147890398393,0.907144250888678,-1.80587498291356,-4.1786931107747,-2.38086217342448,-7.64491838173058,-2.06436069991264,-9.50040866663699,-2.27373675443232e-13,0,-9.77043577295535,-0.444520992439266,-8.58046851082918,-0.16903609075689,-5.99602879433633,1.74855377584163,-2.07806414192555,5.73539536047656,4.04370735492512,13.4201095205271,14.0713362773758,25.2649874673725,25.5350123650474,35.117069410464,29.5047251090391,33.0372907198521,20.9877382751097,20.3551754844598,9.02733795352287,8.61843908764467,2.1598247751358,1.15578406546911,-0.528097088752929,-3.79739745709094,-1.5297419054782,-6.97607138900503,-1.5752218471589,-8.58218516854549,0,0,-8.88043300166328,-0.194279454124626,-7.68011616067179,0.320205450315825,-5.18815764464853,2.3523954929301,-1.29258792655855,6.67120300464103,5.16874996262732,14.9374703555591,15.7977851682272,27.3313775177694,27.3731605967232,36.8896982689903,31.445664686421,34.9517883301128,23.6637838481306,21.8428770117612,11.1819102575614,9.24965359169755,3.74087460744886,1.47943952775404,0.522159032271702,-3.37277932372217,-0.824949201824438,-6.30691531042339,-1.23175040843216,-7.80285655569196,0,0,-7.99956151475862,0.0847563847182755,-6.89784380560195,0.673819220436599,-4.5655469834287,2.7830628926381,-0.820255739056392,7.02890044860487,5.24332444461288,14.6589665019201,14.3374308056846,24.5810311631685,22.5989265596636,30.8170799555064,25.2152123285796,29.2535009505013,20.7424199607772,19.755012364571,11.2468941301609,8.78707129007262,4.51009271252269,1.58184660243614,1.28123151562068,-2.97706523900706,-0.312177292993965,-5.71226131543108,-0.925534374937342,-7.03841009482176,0,0,-7.25691656909703,0.249326894566821,-6.27066565917312,0.965371523793692,-4.08691197950202,3.05953741798157,-0.79858390447589,6.64662218986496,3.89136450153501,12.3512916130358,9.87158552059645,17.4242648312952,12.0974440215746,17.4268605345937,12.2151225164498,17.3556541545745,12.8320006597664,14.2930491356069,9.06602509664935,7.28399851827226,4.50392140249187,1.37546355371023,1.72473281242401,-2.67930281020017,0.0993342107285571,-5.11463845023854,-0.630875438013391,-6.29247000359328,0,0,-6.66392159488032,0.401241600686262,-5.7416646315869,1.22881625812715,-3.871015860228,3.03449775400577,-1.17284473693599,5.90699144279915,1.92014049395402,8.76881036819032,3.77140738858861,8.178427476661,0.0118102197830012,2.40336626927547,-2.75975074972166,3.79013026862867,3.09560770012786,7.17291122878487,5.46771909258678,4.82280105530481,3.83593947130748,0.777591458526786,1.81272005794744,-2.52298655727918,0.325684646047648,-4.64702672569001,-0.526850276459754,-5.73805154492311,0,-4.54747350886464e-13,-6.09009437574241,0.592418968308721,-5.40071743034105,1.36011684329242,-3.81932714109098,2.83708841336329,-2.04954726087772,4.56121955200069,-0.515059725807532,4.93633421015011,-2.03824055507903,0.113662719061267,-9.42739607694557,-8.50191785444622,-13.3274517192353,-6.79006061381187,-4.76527468497761,0.684691677155115,1.92269937797573,2.15854044340995,2.80297184616893,0.0698911964905164,1.70123932103752,-2.4343270255099,0.436989137870569,-4.22741266983621,-0.378918668493043,-5.15572348880278,-4.54747350886464e-13,0,-5.77262644628718,0.70540393150668,-5.22182154807888,1.34782471943754,-4.03760073722015,2.83765493075907,-2.56777887437784,3.43248221351678,-2.76245982596038,1.65010869985645,-6.22111816325332,-5.25741905231325,-14.5182209117497,-14.2034628562574,-18.013725672165,-12.4484531186049,-9.35558559844276,-4.00847569648613,-1.04689253945662,-0.315873590771389,1.52113864222019,-0.879752074376938,1.25859063627968,-2.60655840947902,0.314040401759939,-3.99084817452194,-0.40693185815644,-4.76745547838482,0,0,-5.51815415149213,0.735687839972343,-5.14204201593384,1.6351302931007,-4.56326742108013,1.87965754357992,-3.88692330080357,2.22351605263293,-4.39504123028473,-0.695934782028417,-8.44650943043689,-7.88518117949161,-15.7890298991315,-15.5308579723242,-18.3054727149201,-14.1055202452717,-10.9057075321653,-6.53262665564944,-2.92330176545147,-2.12608129360069,0.459012816558698,-1.65377431022625,0.859388175123968,-2.65447349380065,0.255380878440064,-3.67887121684998,-0.395810494775105,-4.35560348776335,0,0,-5.46185002177526,0.973894829142864,-5.65539119952109,1.55371936183155,-4.22109114372188,2.40440118175457,-4.54366509948932,1.05673175749098,-5.54104296425476,-2.52039112409284,-9.55836198467341,-9.14664079082604,-15.2423969036627,-15.1656954581235,-16.8203652264351,-14.0916775726987,-11.0953451912319,-8.00928349128981,-4.22279823488543,-3.77794612062598,-0.66887593241654,-2.64216093589539,0.16295734896994,-3.04908973028751,-0.203828155310021,-3.7637450201405,-0.664867915190825,-4.35081439066334,0,0,-5.75223168512002,1.30362537064048,-5.48216505895834,0.762985180391297,-6.55863040425538,1.35435976939425,-4.91129868190092,0.0633034193988351,-5.97578371714508,-3.41072291802038,-9.15066099815522,-9.23572523707253,-13.4002726747622,-13.7736618137742,-14.4993440802464,-12.9116505575125,-10.2480384732207,-8.23857537917229,-4.69525405186278,-4.41009130672865,-1.37133433701365,-2.94635633532744,-0.303254300760273,-3.04022428246299,-0.338834404798945,-3.57478342261766,-0.619987677226163,-3.97150049316588,0,-4.54747350886464e-13,-6.2822675744942,0.386715701905814,-6.06049837516866,3.66326173431935,-4.97899902240988,0.451595907235514,-5.61257349029756,-1.11943915090933,-6.49673984242645,-5.04373817975738,-8.77938456955371,-9.74975782787851,-12.1461919069438,-12.8976647823415,-13.0014317127848,-12.2463847693966,-9.83450309885529,-8.74996110586153,-5.34651552739251,-5.58989439952666,-2.23111412863591,-4.19691365118797,-0.969582821581298,-3.98084705190877,-1.03135003608941,-4.06974461934396,-1.49896799838507,-4.50265567621545,-4.54747350886464e-13,0,-6.25288677732988,2.12766328472117,-10.2549529389562,-1.69910073530264,-5.85311795720281,0.801687012954972,-5.39269222858729,-1.89557625121142,-4.83743753027647,-5.65507788465402,-7.23953681965486,-8.93328893222861,-10.2303308771043,-11.1123116883837,-10.8758997200166,-10.6397323521933,-8.46599615607556,-7.96211022293846,-4.96940341676691,-5.20569860493924,-2.51212515931729,-3.52982078272817,-1.68553250204513,-3.01214097018783,-1.71226253247823,-3.55916032285859,-1.35082383721419,-4.43570574428577,0,0,-10.4111723081305,3.38335337580702,-1.55414128770735,1.57296977940769,-8.5265749552791,-1.32720878543023,-4.55695169054616,-5.5247285175401,-4.73737600311597,-7.15975649409484,-7.61395471424748,-9.20868094274556,-10.0198344636237,-10.8764835751035,-10.4581601862801,-10.5851113461968,-8.62964220039521,-8.58691133769844,-5.79527880299156,-6.44443142793079,-3.39877763306413,-5.49064982946129,-1.89236465753311,-6.00587901230938,-1.45662240927231,-6.60935240128765,-2.64000862651847,-5.98453430501559,0,0,-12.2834241998307,-10.0315186318849,-16.6578564610754,3.72115660413056,-3.66295988453749,-4.91908872480417,0.0506412562981495,-5.12045778914216,-3.13058402857496,-5.3822886846956,-5.88364711635495,-7.1309449964192,-7.61496186223849,-8.45272080113045,-7.87516220784346,-8.20520600608415,-6.4416186313565,-6.66300692891309,-4.23746285805555,-4.8808361866686,-2.67790356856403,-3.46036263424685,-2.91240386053232,-2.12330163843581,-5.30678348929996,-1.514494715826,-6.73673978084298,-5.34814426327193,0,0,0.855216770873994,17.6073521414437,-13.7709255010732,-12.452701678254,1.23692150800525,-10.607742071893,-3.10229535275175,-6.4099113630964,-5.73234836222127,-6.69349839989627,-7.32318144383771,-8.22536639264126,-8.59010866166682,-9.34300537768195,-8.80684423671846,-9.2448002837582,-7.72362038487336,-8.0701616252727,-5.9916234119919,-6.66094126474127,-4.56203979946531,-6.13523234344939,-3.41830436625696,-8.55313630229921,-1.52320768704158,-15.2499765526936,-0.887594532497133,-16.4613800415009,0,0,-88.5212226620506,-7.5515180680859,14.047135050515,-16.2694118373311,4.19672699115108,-3.47705582470553,-1.18816755256466,-2.17744248635245,-2.2085586753019,-3.13569946835014,-3.33979310931409,-4.19249384479735,-4.19214921767798,-4.90276977975918,-4.20901731945287,-4.78320067538334,-3.44080184076211,-3.928529381933,-2.30873874754525,-3.02397118757199,-1.41931364473021,-2.61927293411463,-2.08497260115746,-1.52079697075351,-9.07184193571175,3.930484419202,-29.4819123752886,-1.67666903214558,0,0,53.7238299139399,-86.5484397722103,4.34422453368825,-14.6614534321379,-8.4267670338786,-5.58063052754005,-6.09690158987451,-5.08592746491831,-5.68728994849334,-5.54499880682943,-6.36364076327391,-6.48589869759599,-7.02735084098094,-7.25340921219322,-7.07333393271438,-7.30647018410582,-6.4650914787444,-6.61259573596999,-5.50934955205503,-5.82303585121554,-4.92090215581993,-5.47376177468504,-5.81925725045585,-6.94793736068004,-8.25326811406558,-18.616726807355,-7.54799695849215,-75.5563313870625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.8421709430404e-14,-78.9646374402782,0.896161954989964,-18.2194258757546,-2.33404546547297,-5.09106617995261,-0.690048305584298,-2.69225819741945,0.185253980358596,-1.95267414900314,0.00557100813188072,-1.67319888297283,-0.44517790151292,-1.59246352110554,-0.747727125161248,-1.41774671289653,-0.81878661632291,-1.10634504982048,-0.708494828451364,-0.982539043902307,-0.537826563891201,-1.36721600455147,-1.36186575523499,-2.01828214165289,-2.8115557397474,-14.8995988326554,23.3886866543912,-103.311266249063,86.8414640286837,-2.8421709430404e-14,-5.6843418860808e-14,-26.7357937322654,-27.1542054658723,-11.7141321548314,-7.2923449853289,-8.67721768059448,-1.55492088910285,-5.82123805568636,-0.740222120128351,-4.0708680960239,-0.818842020537431,-3.29321804057918,-1.04513466807276,-2.91549943611153,-1.29465571029806,-2.69617794931321,-1.50729180705031,-2.61881112163132,-1.60666328393563,-2.73410622542735,-1.95490543477342,-2.84965820301096,-2.85736481546223,-6.11736046872448,2.75532509580665,-27.2508298913329,16.98040551198,-32.7408018792633,-73.6307677069029,-5.6843418860808e-14,0,-32.8968975892975,-3.60881527225752,-21.3400930045293,-2.06640290809776,-10.3577227891994,-0.719525993709226,-5.45579160362934,0.0550756853118628,-3.44340661268564,0.285749961252918,-2.45261556169885,0.206848566518261,-1.91022101048077,0.00354263122665088,-1.6269291647493,-0.16037001783684,-1.59226620652259,-0.363014170507427,-1.8277048154074,-0.740264510949714,-3.66265923604976,1.45423709229556,-13.1566025439159,10.8746659298305,-27.3719281348534,3.87878476577987,-9.950642731073,-11.7311821839681,0,0,-22.2367225980233,-9.69291242249358,-15.642558305353,-5.69344688546937,-10.227094605713,-2.09733602376718,-6.68052305791934,-0.546999710730915,-4.40398286577829,-0.0255863311906523,-3.07070657343002,0.058725336974021,-2.35901647899277,-0.0366815888103247,-2.06661994920455,-0.242059034075851,-2.1810516450056,-0.508822920580769,-3.17209329672892,0.260385328444499,-7.44989504970977,4.4017465032282,-16.0286722299761,5.34338220074255,-17.1167875510183,-9.33265156515381,-17.5520402759554,-17.6172554206278,0,0,-20.3989878503494,-4.06077271948914,-16.9004160290366,-3.03528923165061,-11.1296427147021,-1.31825733472726,-6.76796435698407,-0.0802190208688671,-4.10852370705163,0.620533897173232,-2.51601047912061,0.98996115749344,-1.5797055622719,1.08690933357991,-1.2687397707324,0.918860387082646,-1.78177403853169,1.04223277023618,-4.06179648938212,2.80691107043742,-9.17564952666487,5.02420477592329,-13.4677372123742,1.65336957381487,-12.915099367582,-3.94344606454035,-9.94412443320482,-17.9260768373582,0,0,-17.7140946885634,-3.90238692529647,-14.8543824401277,-3.65369931100486,-10.46394360318,-1.74183304493613,-6.79351269170934,-0.144565616059936,-4.11154671758663,0.977868296493625,-2.15849423556915,1.75361026770247,-0.951990114125465,2.09551059701084,-0.738118136697494,2.13183953058319,-1.94321576217544,2.65562317689978,-5.13541939319362,3.89755034812129,-9.29457878409335,3.4287125846306,-11.4430792672513,-0.754951768881028,-11.7314333646145,-9.1794926617772,-6.06039476271894,-14.5408771744103,0,0,-15.9214470173131,-2.6609947455388,-13.8603479676297,-2.57244859552088,-10.1710602205321,-1.18085516886072,-6.54811759443282,0.42483347966504,-3.48415727441648,1.98295721406498,-1.03772417332243,3.33588510740537,0.567591340692616,4.2065247735884,0.688389573675067,4.50548693433757,-1.30963870899768,4.69420607990673,-4.85970497795552,4.55338102316955,-7.96662384912634,2.68796395138202,-9.24792372434422,-2.00621029783451,-7.42834348984661,-9.13028606074181,-5.8092959186381,-13.8085653162914,0,0,-14.3424291300555,-2.00853966757495,-12.6688077632093,-2.26216047346247,-9.48384050272148,-0.945992945901935,-5.96646048458251,1.01290218956501,-2.61057834607664,3.23774837738347,0.52883708130048,5.63230951791479,2.93083762232573,7.40838944246207,3.00277425517538,7.6872663206841,0.215747640307882,6.72963078740668,-3.59267501435761,4.96816626995769,-6.45575867744378,1.6024472356562,-7.22169968898061,-3.94183935968931,-6.11746565174099,-8.83135471011838,-3.94748743646164,-12.5753961094135,0,0,-13.0454697862931,-1.47695016804278,-11.5983660375584,-1.66794468830267,-8.68016370673081,-0.28633376334983,-5.16582377658415,1.97869443762443,-1.29208387911626,5.19822215395084,3.06730916636548,9.2650691757915,6.82972185329095,12.5051959104792,7.22286972107918,12.3560467161924,3.52588501163768,9.39738990997125,-1.29298452138414,5.57481583213644,-4.3512223445839,0.998781020127353,-4.98043387584585,-4.08948938933804,-4.5849948822131,-8.84546888389082,-3.2422258397844,-11.3731808192153,0,0,-11.9019260342877,-1.12566012216575,-10.5242462448912,-1.12885328423431,-7.79803409445253,0.301251597365763,-4.21236838366099,3.11833976969774,0.417292525072526,7.74062831319588,6.44942516106789,14.2672408926346,12.4540221310147,19.5780877657178,13.9127276852498,18.7451998248698,8.598555128812,12.7483145700833,1.74277592780732,6.35881695482271,-2.08873214888104,0.708371357001852,-3.43201457526538,-4.34978018182937,-3.25750888689504,-8.19760283140636,-2.61079335251725,-10.4515682693038,0,-2.27373675443232e-13,-10.7606022877055,-0.686811435166646,-9.49813588719121,-0.634166428250182,-6.90789826472178,1.01777620360212,-3.10819752309249,4.48393497316488,2.33972683113302,10.6950419113944,10.3935123645699,20.1258593296536,19.5093632071155,28.020872480555,22.2645717818634,26.4397261972988,14.9777241679635,16.7908289879822,5.51393882928937,7.50712561779369,0.205147890398393,0.907144250888678,-1.80587498291356,-4.1786931107747,-2.38086217342448,-7.64491838173058,-2.06436069991264,-9.50040866663699,-2.27373675443232e-13,0,-9.77043577295535,-0.444520992439266,-8.58046851082918,-0.16903609075689,-5.99602879433633,1.74855377584163,-2.07806414192555,5.73539536047656,4.04370735492512,13.4201095205271,14.0713362773758,25.2649874673725,25.5350123650474,35.117069410464,29.5047251090391,33.0372907198521,20.9877382751097,20.3551754844598,9.02733795352287,8.61843908764467,2.1598247751358,1.15578406546911,-0.528097088752929,-3.79739745709094,-1.5297419054782,-6.97607138900503,-1.5752218471589,-8.58218516854549,0,0,-8.88043300166328,-0.194279454124626,-7.68011616067179,0.320205450315825,-5.18815764464853,2.3523954929301,-1.29258792655855,6.67120300464103,5.16874996262732,14.9374703555591,15.7977851682272,27.3313775177694,27.3731605967232,36.8896982689903,31.445664686421,34.9517883301128,23.6637838481306,21.8428770117612,11.1819102575614,9.24965359169755,3.74087460744886,1.47943952775404,0.522159032271702,-3.37277932372217,-0.824949201824438,-6.30691531042339,-1.23175040843216,-7.80285655569196,0,0,-7.99956151475862,0.0847563847182755,-6.89784380560195,0.673819220436599,-4.5655469834287,2.7830628926381,-0.820255739056392,7.02890044860487,5.24332444461288,14.6589665019201,14.3374308056846,24.5810311631685,22.5989265596636,30.8170799555064,25.2152123285796,29.2535009505013,20.7424199607772,19.755012364571,11.2468941301609,8.78707129007262,4.51009271252269,1.58184660243614,1.28123151562068,-2.97706523900706,-0.312177292993965,-5.71226131543108,-0.925534374937342,-7.03841009482176,0,0,-7.25691656909703,0.249326894566821,-6.27066565917312,0.965371523793692,-4.08691197950202,3.05953741798157,-0.79858390447589,6.64662218986496,3.89136450153501,12.3512916130358,9.87158552059645,17.4242648312952,12.0974440215746,17.4268605345937,12.2151225164498,17.3556541545745,12.8320006597664,14.2930491356069,9.06602509664935,7.28399851827226,4.50392140249187,1.37546355371023,1.72473281242401,-2.67930281020017,0.0993342107285571,-5.11463845023854,-0.630875438013391,-6.29247000359328,0,0,-6.66392159488032,0.401241600686262,-5.7416646315869,1.22881625812715,-3.871015860228,3.03449775400577,-1.17284473693599,5.90699144279915,1.92014049395402,8.76881036819032,3.77140738858861,8.178427476661,0.0118102197830012,2.40336626927547,-2.75975074972166,3.79013026862867,3.09560770012786,7.17291122878487,5.46771909258678,4.82280105530481,3.83593947130748,0.777591458526786,1.81272005794744,-2.52298655727918,0.325684646047648,-4.64702672569001,-0.526850276459754,-5.73805154492311,0,-4.54747350886464e-13,-6.09009437574241,0.592418968308721,-5.40071743034105,1.36011684329242,-3.81932714109098,2.83708841336329,-2.04954726087772,4.56121955200069,-0.515059725807532,4.93633421015011,-2.03824055507903,0.113662719061267,-9.42739607694557,-8.50191785444622,-13.3274517192353,-6.79006061381187,-4.76527468497761,0.684691677155115,1.92269937797573,2.15854044340995,2.80297184616893,0.0698911964905164,1.70123932103752,-2.4343270255099,0.436989137870569,-4.22741266983621,-0.378918668493043,-5.15572348880278,-4.54747350886464e-13,0,-5.77262644628718,0.70540393150668,-5.22182154807888,1.34782471943754,-4.03760073722015,2.83765493075907,-2.56777887437784,3.43248221351678,-2.76245982596038,1.65010869985645,-6.22111816325332,-5.25741905231325,-14.5182209117497,-14.2034628562574,-18.013725672165,-12.4484531186049,-9.35558559844276,-4.00847569648613,-1.04689253945662,-0.315873590771389,1.52113864222019,-0.879752074376938,1.25859063627968,-2.60655840947902,0.314040401759939,-3.99084817452194,-0.40693185815644,-4.76745547838482,0,0,-5.51815415149213,0.735687839972343,-5.14204201593384,1.6351302931007,-4.56326742108013,1.87965754357992,-3.88692330080357,2.22351605263293,-4.39504123028473,-0.695934782028417,-8.44650943043689,-7.88518117949161,-15.7890298991315,-15.5308579723242,-18.3054727149201,-14.1055202452717,-10.9057075321653,-6.53262665564944,-2.92330176545147,-2.12608129360069,0.459012816558698,-1.65377431022625,0.859388175123968,-2.65447349380065,0.255380878440064,-3.67887121684998,-0.395810494775105,-4.35560348776335,0,0,-5.46185002177526,0.973894829142864,-5.65539119952109,1.55371936183155,-4.22109114372188,2.40440118175457,-4.54366509948932,1.05673175749098,-5.54104296425476,-2.52039112409284,-9.55836198467341,-9.14664079082604,-15.2423969036627,-15.1656954581235,-16.8203652264351,-14.0916775726987,-11.0953451912319,-8.00928349128981,-4.22279823488543,-3.77794612062598,-0.66887593241654,-2.64216093589539,0.16295734896994,-3.04908973028751,-0.203828155310021,-3.7637450201405,-0.664867915190825,-4.35081439066334,0,0,-5.75223168512002,1.30362537064048,-5.48216505895834,0.762985180391297,-6.55863040425538,1.35435976939425,-4.91129868190092,0.0633034193988351,-5.97578371714508,-3.41072291802038,-9.15066099815522,-9.23572523707253,-13.4002726747622,-13.7736618137742,-14.4993440802464,-12.9116505575125,-10.2480384732207,-8.23857537917229,-4.69525405186278,-4.41009130672865,-1.37133433701365,-2.94635633532744,-0.303254300760273,-3.04022428246299,-0.338834404798945,-3.57478342261766,-0.619987677226163,-3.97150049316588,0,-4.54747350886464e-13,-6.2822675744942,0.386715701905814,-6.06049837516866,3.66326173431935,-4.97899902240988,0.451595907235514,-5.61257349029756,-1.11943915090933,-6.49673984242645,-5.04373817975738,-8.77938456955371,-9.74975782787851,-12.1461919069438,-12.8976647823415,-13.0014317127848,-12.2463847693966,-9.83450309885529,-8.74996110586153,-5.34651552739251,-5.58989439952666,-2.23111412863591,-4.19691365118797,-0.969582821581298,-3.98084705190877,-1.03135003608941,-4.06974461934396,-1.49896799838507,-4.50265567621545,-4.54747350886464e-13,0,-6.25288677732988,2.12766328472117,-10.2549529389562,-1.69910073530264,-5.85311795720281,0.801687012954972,-5.39269222858729,-1.89557625121142,-4.83743753027647,-5.65507788465402,-7.23953681965486,-8.93328893222861,-10.2303308771043,-11.1123116883837,-10.8758997200166,-10.6397323521933,-8.46599615607556,-7.96211022293846,-4.96940341676691,-5.20569860493924,-2.51212515931729,-3.52982078272817,-1.68553250204513,-3.01214097018783,-1.71226253247823,-3.55916032285859,-1.35082383721419,-4.43570574428577,0,0,-10.4111723081305,3.38335337580702,-1.55414128770735,1.57296977940769,-8.5265749552791,-1.32720878543023,-4.55695169054616,-5.5247285175401,-4.73737600311597,-7.15975649409484,-7.61395471424748,-9.20868094274556,-10.0198344636237,-10.8764835751035,-10.4581601862801,-10.5851113461968,-8.62964220039521,-8.58691133769844,-5.79527880299156,-6.44443142793079,-3.39877763306413,-5.49064982946129,-1.89236465753311,-6.00587901230938,-1.45662240927231,-6.60935240128765,-2.64000862651847,-5.98453430501559,0,0,-12.2834241998307,-10.0315186318849,-16.6578564610754,3.72115660413056,-3.66295988453749,-4.91908872480417,0.0506412562981495,-5.12045778914216,-3.13058402857496,-5.3822886846956,-5.88364711635495,-7.1309449964192,-7.61496186223849,-8.45272080113045,-7.87516220784346,-8.20520600608415,-6.4416186313565,-6.66300692891309,-4.23746285805555,-4.8808361866686,-2.67790356856403,-3.46036263424685,-2.91240386053232,-2.12330163843581,-5.30678348929996,-1.514494715826,-6.73673978084298,-5.34814426327193,0,0,0.855216770873994,17.6073521414437,-13.7709255010732,-12.452701678254,1.23692150800525,-10.607742071893,-3.10229535275175,-6.4099113630964,-5.73234836222127,-6.69349839989627,-7.32318144383771,-8.22536639264126,-8.59010866166682,-9.34300537768195,-8.80684423671846,-9.2448002837582,-7.72362038487336,-8.0701616252727,-5.9916234119919,-6.66094126474127,-4.56203979946531,-6.13523234344939,-3.41830436625696,-8.55313630229921,-1.52320768704158,-15.2499765526936,-0.887594532497133,-16.4613800415009,0,0,-88.5212226620506,-7.5515180680859,14.047135050515,-16.2694118373311,4.19672699115108,-3.47705582470553,-1.18816755256466,-2.17744248635245,-2.2085586753019,-3.13569946835014,-3.33979310931409,-4.19249384479735,-4.19214921767798,-4.90276977975918,-4.20901731945287,-4.78320067538334,-3.44080184076211,-3.928529381933,-2.30873874754525,-3.02397118757199,-1.41931364473021,-2.61927293411463,-2.08497260115746,-1.52079697075351,-9.07184193571175,3.930484419202,-29.4819123752886,-1.67666903214558,0,0,53.7238299139399,-86.5484397722103,4.34422453368825,-14.6614534321379,-8.4267670338786,-5.58063052754005,-6.09690158987451,-5.08592746491831,-5.68728994849334,-5.54499880682943,-6.36364076327391,-6.48589869759599,-7.02735084098094,-7.25340921219322,-7.07333393271438,-7.30647018410582,-6.4650914787444,-6.61259573596999,-5.50934955205503,-5.82303585121554,-4.92090215581993,-5.47376177468504,-5.81925725045585,-6.94793736068004,-8.25326811406558,-18.616726807355,-7.54799695849215,-75.5563313870625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.8421709430404e-14,-78.9646374402783,0.896161954989992,-18.2194258757545,-2.334045465473,-5.09106617995261,-0.69004830558427,-2.69225819741942,0.185253980358624,-1.95267414900312,0.00557100813190914,-1.6731988829728,-0.445177901512949,-1.59246352110554,-0.747727125161219,-1.4177467128965,-0.81878661632291,-1.10634504982048,-0.708494828451336,-0.982539043902335,-0.537826563891173,-1.36721600455147,-1.36186575523496,-2.01828214165292,-2.81155573974743,-14.8995988326555,23.3886866543912,-103.311266249063,86.8414640286837,-2.8421709430404e-14,-5.6843418860808e-14,-26.7357937322654,-27.1542054658725,-11.7141321548315,-7.29234498532884,-8.67721768059442,-1.55492088910279,-5.82123805568648,-0.740222120128294,-4.07086809602396,-0.818842020537375,-3.29321804057912,-1.04513466807288,-2.91549943611147,-1.29465571029817,-2.69617794931315,-1.50729180705019,-2.61881112163127,-1.60666328393569,-2.7341062254273,-1.95490543477337,-2.84965820301085,-2.85736481546229,-6.11736046872437,2.75532509580665,-27.2508298913328,16.9804055119801,-32.7408018792632,-73.6307677069029,-5.6843418860808e-14,0,-32.8968975892975,-3.6088152722574,-21.3400930045294,-2.06640290809776,-10.3577227891994,-0.719525993709112,-5.45579160362934,0.0550756853118628,-3.44340661268552,0.285749961252804,-2.45261556169874,0.206848566518261,-1.91022101048065,0.00354263122665088,-1.62692916474941,-0.160370017836726,-1.59226620652259,-0.36301417050754,-1.82770481540729,-0.740264510949714,-3.66265923604965,1.45423709229544,-13.1566025439161,10.8746659298306,-27.3719281348534,3.87878476577976,-9.950642731073,-11.7311821839681,0,0,-22.2367225980232,-9.69291242249369,-15.6425583053528,-5.69344688546937,-10.2270946057129,-2.09733602376707,-6.68052305791923,-0.546999710730802,-4.40398286577818,-0.025586331190766,-3.07070657343002,0.0587253369741347,-2.35901647899277,-0.0366815888104384,-2.06661994920455,-0.242059034075851,-2.18105164500537,-0.508822920580769,-3.1720932967288,0.260385328444613,-7.44989504970988,4.4017465032282,-16.028672229976,5.34338220074267,-17.1167875510184,-9.33265156515381,-17.5520402759555,-17.6172554206279,0,0,-20.3989878503492,-4.06077271948936,-16.9004160290366,-3.03528923165038,-11.129642714702,-1.31825733472738,-6.76796435698429,-0.0802190208686397,-4.10852370705163,0.620533897173232,-2.51601047912061,0.989961157493212,-1.5797055622719,1.0869093335798,-1.2687397707324,0.918860387082646,-1.78177403853169,1.04223277023618,-4.06179648938212,2.80691107043754,-9.1756495266651,5.02420477592329,-13.4677372123742,1.6533695738151,-12.9150993675822,-3.94344606454047,-9.94412443320459,-17.9260768373584,0,0,-17.7140946885631,-3.90238692529647,-14.8543824401277,-3.65369931100486,-10.4639436031803,-1.74183304493613,-6.79351269170911,-0.144565616059936,-4.11154671758686,0.977868296493625,-2.15849423556915,1.75361026770224,-0.951990114125465,2.09551059701107,-0.738118136697267,2.13183953058342,-1.94321576217544,2.65562317689955,-5.13541939319384,3.89755034812129,-9.29457878409357,3.42871258463083,-11.4430792672511,-0.754951768881256,-11.7314333646145,-9.1794926617772,-6.06039476271894,-14.5408771744105,0,0,-15.9214470173133,-2.66099474553857,-13.8603479676299,-2.57244859552111,-10.1710602205321,-1.18085516886049,-6.54811759443282,0.424833479665267,-3.48415727441648,1.98295721406498,-1.03772417332243,3.33588510740515,0.567591340692616,4.20652477358863,0.688389573675067,4.50548693433757,-1.30963870899768,4.69420607990673,-4.85970497795574,4.55338102316955,-7.96662384912634,2.68796395138224,-9.24792372434422,-2.00621029783451,-7.42834348984661,-9.13028606074158,-5.80929591863833,-13.8085653162912,0,0,-14.3424291300551,-2.00853966757472,-12.6688077632093,-2.26216047346247,-9.48384050272148,-0.945992945901935,-5.96646048458229,1.01290218956478,-2.61057834607641,3.23774837738347,0.528837081300253,5.63230951791479,2.93083762232595,7.40838944246184,3.00277425517515,7.68726632068433,0.215747640307654,6.7296307874069,-3.59267501435784,4.96816626995792,-6.45575867744355,1.60244723565597,-7.22169968898083,-3.94183935968954,-6.11746565174121,-8.83135471011815,-3.94748743646119,-12.575396109414,0,0,-13.0454697862936,-1.47695016804323,-11.5983660375582,-1.66794468830267,-8.68016370673126,-0.28633376334983,-5.1658237765846,1.97869443762488,-1.29208387911581,5.19822215395084,3.06730916636593,9.26506917579127,6.82972185329095,12.5051959104796,7.22286972107963,12.3560467161924,3.52588501163814,9.39738990997125,-1.29298452138369,5.57481583213621,-4.3512223445839,0.998781020127808,-4.9804338758463,-4.08948938933781,-4.58499488221287,-8.84546888389082,-3.24222583978485,-11.3731808192156,0,0,-11.901926034288,-1.12566012216621,-10.5242462448916,-1.12885328423431,-7.79803409445208,0.301251597366218,-4.21236838366099,3.1183397696982,0.417292525072071,7.74062831319543,6.44942516106744,14.2672408926346,12.4540221310142,19.5780877657178,13.9127276852494,18.7451998248694,8.59855512881245,12.7483145700833,1.74277592780686,6.35881695482317,-2.08873214888058,0.708371357001397,-3.43201457526538,-4.34978018182892,-3.25750888689549,-8.19760283140636,-2.61079335251679,-10.4515682693038,0,0,-10.7606022877055,-0.686811435167101,-9.49813588719098,-0.634166428250637,-6.90789826472223,1.0177762036019,-3.10819752309203,4.48393497316533,2.33972683113302,10.6950419113946,10.3935123645697,20.1258593296541,19.5093632071155,28.0208724805552,22.2645717818634,26.4397261972983,14.977724167964,16.7908289879824,5.51393882928915,7.50712561779369,0.205147890398393,0.907144250889132,-1.80587498291402,-4.17869311077516,-2.38086217342448,-7.64491838173035,-2.06436069991219,-9.50040866663699,0,0,-9.7704357729549,-0.444520992439266,-8.58046851082963,-0.169036090756435,-5.99602879433633,1.74855377584117,-2.07806414192555,5.7353953604761,4.04370735492466,13.4201095205267,14.0713362773758,25.2649874673725,25.5350123650474,35.117069410464,29.5047251090396,33.0372907198516,20.9877382751101,20.3551754844598,9.02733795352287,8.61843908764513,2.15982477513535,1.15578406546956,-0.528097088752929,-3.79739745709048,-1.52974190547866,-6.97607138900548,-1.5752218471589,-8.58218516854549,0,0,-8.88043300166282,-0.194279454125081,-7.68011616067133,0.32020545031628,-5.18815764464898,2.3523954929301,-1.29258792655855,6.67120300464103,5.16874996262732,14.9374703555591,15.7977851682276,27.3313775177694,27.3731605967232,36.8896982689903,31.445664686421,34.9517883301128,23.6637838481311,21.8428770117612,11.1819102575614,9.24965359169755,3.7408746074484,1.47943952775404,0.522159032272157,-3.37277932372172,-0.824949201824438,-6.30691531042294,-1.23175040843216,-7.80285655569196,0,0,-7.99956151475908,0.0847563847182755,-6.89784380560195,0.673819220436599,-4.56554698342825,2.78306289263764,-0.820255739056847,7.02890044860487,5.24332444461288,14.6589665019201,14.3374308056846,24.5810311631685,22.5989265596641,30.8170799555064,25.2152123285796,29.2535009505018,20.7424199607767,19.755012364571,11.2468941301609,8.78707129007262,4.51009271252315,1.5818466024366,1.28123151562068,-2.97706523900706,-0.31217729299442,-5.71226131543108,-0.925534374937342,-7.03841009482221,0,0,-7.25691656909657,0.249326894567275,-6.27066565917312,0.965371523793692,-4.08691197950247,3.05953741798112,-0.79858390447589,6.6466221898645,3.89136450153455,12.3512916130362,9.87158552059645,17.4242648312957,12.0974440215741,17.4268605345937,12.2151225164503,17.3556541545749,12.832000659766,14.2930491356074,9.06602509664935,7.28399851827271,4.50392140249187,1.37546355371023,1.72473281242401,-2.67930281020017,0.0993342107285571,-5.114638450239,-0.630875438013391,-6.29247000359283,0,0,-6.66392159488032,0.401241600686717,-5.74166463158645,1.22881625812715,-3.87101586022754,3.03449775400577,-1.17284473693553,5.9069914427987,1.92014049395357,8.76881036819077,3.77140738858816,8.17842747666145,0.0118102197830012,2.40336626927501,-2.75975074972212,3.79013026862913,3.0956077001274,7.17291122878532,5.46771909258723,4.82280105530526,3.83593947130703,0.777591458527695,1.81272005794699,-2.52298655727964,0.325684646047648,-4.64702672568956,-0.526850276460209,-5.73805154492266,0,0,-6.0900943757415,0.592418968308721,-5.4007174303415,1.36011684329196,-3.81932714109007,2.83708841336329,-2.04954726087863,4.56121955200069,-0.515059725807532,4.93633421015056,-2.03824055507812,0.113662719060358,-9.42739607694648,-8.50191785444622,-13.3274517192358,-6.79006061381278,-4.76527468497761,0.68469167715557,1.92269937797619,2.15854044341086,2.80297184616893,0.0698911964905164,1.70123932103752,-2.4343270255099,0.436989137871024,-4.2274126698353,-0.378918668492588,-5.15572348880278,0,0,-5.77262644628627,0.70540393150668,-5.22182154807797,1.34782471943754,-4.03760073722015,2.83765493075907,-2.56777887437875,3.43248221351769,-2.76245982596129,1.65010869985554,-6.22111816325332,-5.25741905231416,-14.5182209117506,-14.2034628562574,-18.0137256721655,-12.448453118604,-9.35558559844367,-4.00847569648704,-1.04689253945662,-0.315873590771389,1.52113864221928,-0.879752074377848,1.25859063627968,-2.60655840947902,0.314040401759939,-3.99084817452194,-0.40693185815644,-4.76745547838391,0,4.54747350886464e-13,-5.51815415149213,0.735687839972343,-5.14204201593293,1.63513029309979,-4.56326742108104,1.87965754357901,-3.88692330080312,2.22351605263202,-4.39504123028428,-0.695934782027507,-8.44650943043689,-7.88518117949161,-15.7890298991306,-15.5308579723232,-18.3054727149211,-14.1055202452717,-10.9057075321643,-6.53262665564853,-2.92330176545147,-2.12608129360069,0.459012816557788,-1.65377431022716,0.859388175124877,-2.6544734938002,0.255380878440974,-3.67887121685089,-0.395810494775105,-4.35560348776335,4.54747350886464e-13,0,-5.46185002177435,0.973894829143774,-5.655391199522,1.55371936183064,-4.22109114372233,2.40440118175547,-4.54366509948841,1.05673175749052,-5.54104296425521,-2.52039112409284,-9.55836198467341,-9.14664079082695,-15.2423969036636,-15.1656954581226,-16.8203652264356,-14.0916775726992,-11.0953451912319,-8.00928349129072,-4.22279823488543,-3.77794612062689,-0.66887593241654,-2.64216093589539,0.16295734896994,-3.04908973028842,-0.203828155309566,-3.76374502014096,-0.664867915190825,-4.35081439066334,0,4.54747350886464e-13,-5.75223168512002,1.30362537063957,-5.48216505895743,0.762985180391297,-6.55863040425584,1.35435976939334,-4.91129868190183,0.0633034193988351,-5.97578371714508,-3.41072291802129,-9.15066099815431,-9.23572523707162,-13.4002726747613,-13.7736618137742,-14.4993440802464,-12.9116505575134,-10.2480384732207,-8.2385753791732,-4.69525405186369,-4.41009130672774,-1.37133433701365,-2.94635633532653,-0.303254300761182,-3.04022428246299,-0.338834404799854,-3.57478342261766,-0.619987677226618,-3.97150049316497,4.54747350886464e-13,0,-6.2822675744942,0.386715701905814,-6.06049837516912,3.66326173431844,-4.97899902240897,0.451595907235969,-5.61257349029665,-1.11943915091024,-6.49673984242554,-5.04373817975647,-8.77938456955417,-9.74975782787942,-12.1461919069429,-12.8976647823406,-13.0014317127848,-12.2463847693975,-9.83450309885529,-8.74996110586153,-5.34651552739251,-5.58989439952575,-2.23111412863682,-4.19691365118797,-0.969582821580843,-3.98084705190877,-1.03135003608941,-4.06974461934306,-1.49896799838461,-4.50265567621545,0,0,-6.25288677732988,2.12766328472026,-10.2549529389562,-1.69910073530355,-5.8531179572019,0.801687012955881,-5.3926922285882,-1.89557625121142,-4.83743753027557,-5.65507788465402,-7.23953681965486,-8.9332889322277,-10.2303308771043,-11.1123116883828,-10.8758997200166,-10.6397323521933,-8.46599615607465,-7.96211022293937,-4.96940341676782,-5.20569860493924,-2.51212515931729,-3.52982078272817,-1.68553250204604,-3.01214097018783,-1.71226253247733,-3.55916032285859,-1.35082383721419,-4.43570574428486,0,0,-10.4111723081305,3.38335337580702,-1.55414128770735,1.5729697794086,-8.5265749552791,-1.32720878543114,-4.55695169054525,-5.5247285175401,-4.73737600311506,-7.15975649409393,-7.61395471424657,-9.20868094274556,-10.0198344636237,-10.8764835751026,-10.4581601862801,-10.5851113461968,-8.6296422003943,-8.58691133769844,-5.79527880299156,-6.44443142792989,-3.39877763306504,-5.4906498294622,-1.89236465753311,-6.00587901230938,-1.45662240927231,-6.60935240128856,-2.64000862651756,-5.9845343050165,0,0,-12.2834241998307,-10.0315186318849,-16.6578564610754,3.72115660413147,-3.6629598845384,-4.91908872480417,0.0506412562981495,-5.12045778914126,-3.13058402857496,-5.3822886846965,-5.88364711635495,-7.13094499642011,-7.6149618622394,-8.45272080113045,-7.87516220784346,-8.20520600608415,-6.4416186313556,-6.66300692891309,-4.23746285805555,-4.8808361866686,-2.67790356856403,-3.46036263424685,-2.91240386053232,-2.12330163843581,-5.30678348929905,-1.514494715826,-6.73673978084298,-5.34814426327102,0,0,0.855216770873994,17.6073521414428,-13.7709255010732,-12.4527016782531,1.23692150800525,-10.607742071893,-3.10229535275175,-6.4099113630964,-5.73234836222127,-6.69349839989536,-7.32318144383862,-8.22536639264126,-8.59010866166682,-9.34300537768195,-8.80684423671846,-9.2448002837582,-7.72362038487336,-8.0701616252727,-5.9916234119919,-6.66094126474127,-4.5620397994644,-6.13523234344939,-3.41830436625605,-8.55313630229921,-1.52320768704158,-15.2499765526936,-0.887594532497133,-16.4613800415009,0,0,-88.5212226620506,-7.5515180680859,14.047135050514,-16.2694118373311,4.19672699115108,-3.47705582470553,-1.18816755256557,-2.17744248635245,-2.20855867530099,-3.13569946835014,-3.33979310931409,-4.19249384479826,-4.19214921767798,-4.90276977976009,-4.20901731945287,-4.78320067538334,-3.4408018407612,-3.928529381933,-2.30873874754434,-3.0239711875729,-1.41931364473021,-2.61927293411463,-2.08497260115655,-1.52079697075351,-9.07184193571175,3.93048441920291,-29.4819123752877,-1.67666903214558,0,0,53.7238299139399,-86.5484397722112,4.34422453368825,-14.6614534321388,-8.4267670338786,-5.58063052754005,-6.09690158987542,-5.0859274649174,-5.68728994849334,-5.54499880683034,-6.36364076327482,-6.48589869759599,-7.02735084098094,-7.25340921219413,-7.07333393271438,-7.30647018410491,-6.4650914787444,-6.6125957359709,-5.50934955205412,-5.82303585121554,-4.92090215581993,-5.47376177468504,-5.81925725045585,-6.94793736067913,-8.25326811406558,-18.616726807355,-7.54799695849215,-75.5563313870625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive112.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive112.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive112.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive112_field1":[-7.25317693059626e-06,-7.25317693059656e-06,-7.25317693059617e-06,-7.25317693059634e-06,-7.25317693059635e-06,-7.25317693059633e-06,-7.25317693059561e-06,-7.25317693059628e-06,-7.25317693059596e-06,-7.25317693059628e-06,-7.25317693059619e-06,-7.2531769305964e-06,-7.25317693059643e-06,-7.25317693059615e-06,-7.25317693059628e-06,-7.25317693059612e-06,-7.25317693059635e-06,-7.25317693059629e-06,-7.25317693059606e-06,-7.25317693059617e-06,-7.25317693059638e-06,-7.25317693059642e-06,-7.25317693059661e-06,-7.25317693059626e-06,-7.25317693059627e-06,-7.25317693059653e-06,-7.25317693059618e-06,-7.25317693059628e-06,-7.25317693059662e-06,-7.25317693059623e-06,-7.25317693059664e-06,-7.25317693059629e-06,-7.25317693059613e-06,-7.25317693059658e-06,-7.2531769305964e-06,-7.25317693059612e-06,-7.25317693059623e-06,-7.25317693059619e-06,-7.2531769305961e-06,-7.25317693059635e-06,-7.25317693059634e-06,-7.25317693059642e-06,-7.25317693059624e-06,-7.25317693059605e-06],"Archive112_field2":[-7.2531769305963e-05,-7.25317693059629e-05,-7.25317693059627e-05,-7.25317693059629e-05,-7.25317693059627e-05,-7.25317693059627e-05,-7.25317693059625e-05,-7.25317693059626e-05,-7.25317693059628e-05,-7.25317693059627e-05,-7.25317693059628e-05,-7.2531769305963e-05,-7.25317693059628e-05,-7.25317693059629e-05,-7.25317693059628e-05,-7.25317693059629e-05,-7.2531769305963e-05,-7.25317693059627e-05,-7.25317693059629e-05,-7.25317693059625e-05,-7.25317693059629e-05,-7.25317693059628e-05,-7.25317693059624e-05,-7.25317693059629e-05,-7.25317693059628e-05,-7.25317693059628e-05,-7.2531769305963e-05,-7.25317693059629e-05,-7.2531769305963e-05,-7.2531769305963e-05,-7.25317693059626e-05,-7.25317693059626e-05,-7.25317693059634e-05,-7.25317693059631e-05,-7.25317693059629e-05,-7.25317693059624e-05,-7.25317693059631e-05,-7.25317693059628e-05,-7.25317693059629e-05,-7.25317693059625e-05,-7.25317693059631e-05,-7.25317693059626e-05,-7.25317693059629e-05,-7.25317693059629e-05]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive113.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive113.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive113.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive113_field1":[-7.25317693059626e-06,-7.25317693059656e-06,-7.25317693059617e-06,-7.25317693059634e-06,-7.25317693059635e-06,-7.25317693059633e-06,-7.25317693059561e-06,-7.25317693059628e-06,-7.25317693059596e-06,-7.25317693059628e-06,-7.25317693059619e-06,-7.2531769305964e-06,-7.25317693059643e-06,-7.25317693059615e-06,-7.25317693059628e-06,-7.25317693059612e-06,-7.25317693059635e-06,-7.25317693059629e-06,-7.25317693059606e-06,-7.25317693059617e-06,-7.25317693059638e-06,-7.25317693059642e-06,-7.25317693059661e-06,-7.25317693059626e-06,-7.25317693059627e-06,-7.25317693059653e-06,-7.25317693059618e-06,-7.25317693059628e-06,-7.25317693059662e-06,-7.25317693059623e-06,-7.25317693059664e-06,-7.25317693059629e-06,-7.25317693059613e-06,-7.25317693059658e-06,-7.2531769305964e-06,-7.25317693059612e-06,-7.25317693059623e-06,-7.25317693059619e-06,-7.2531769305961e-06,-7.25317693059635e-06,-7.25317693059634e-06,-7.25317693059642e-06,-7.25317693059624e-06,-7.25317693059605e-06,-7.25317693059626e-06,-7.25317693059656e-06,-7.25317693059617e-06,-7.25317693059634e-06,-7.25317693059635e-06,-7.25317693059633e-06,-7.25317693059561e-06,-7.25317693059628e-06,-7.25317693059595e-06,-7.25317693059628e-06,-7.25317693059619e-06,-7.2531769305964e-06,-7.25317693059643e-06,-7.25317693059615e-06,-7.25317693059628e-06,-7.25317693059612e-06,-7.25317693059635e-06,-7.25317693059629e-06,-7.25317693059606e-06,-7.25317693059617e-06,-7.25317693059638e-06,-7.25317693059642e-06,-7.25317693059661e-06,-7.25317693059626e-06,-7.25317693059627e-06,-7.25317693059653e-06,-7.25317693059618e-06,-7.25317693059628e-06,-7.25317693059662e-06,-7.25317693059623e-06,-7.25317693059664e-06,-7.25317693059629e-06,-7.25317693059613e-06,-7.25317693059658e-06,-7.2531769305964e-06,-7.25317693059612e-06,-7.25317693059623e-06,-7.25317693059619e-06,-7.2531769305961e-06,-7.25317693059635e-06,-7.25317693059634e-06,-7.25317693059642e-06,-7.25317693059624e-06,-7.25317693059605e-06,-7.25317693059626e-06,-7.25317693059656e-06,-7.25317693059617e-06,-7.25317693059634e-06,-7.25317693059635e-06,-7.25317693059633e-06,-7.25317693059561e-06,-7.25317693059628e-06,-7.25317693059595e-06,-7.25317693059628e-06,-7.25317693059619e-06,-7.2531769305964e-06,-7.25317693059643e-06,-7.25317693059615e-06,-7.25317693059628e-06,-7.25317693059612e-06,-7.25317693059635e-06,-7.25317693059629e-06,-7.25317693059606e-06,-7.25317693059617e-06,-7.25317693059638e-06,-7.25317693059642e-06,-7.25317693059661e-06,-7.25317693059626e-06,-7.25317693059627e-06,-7.25317693059653e-06,-7.25317693059618e-06,-7.25317693059628e-06,-7.25317693059662e-06,-7.25317693059623e-06,-7.25317693059664e-06,-7.25317693059629e-06,-7.25317693059613e-06,-7.25317693059658e-06,-7.2531769305964e-06,-7.25317693059612e-06,-7.25317693059623e-06,-7.25317693059619e-06,-7.2531769305961e-06,-7.25317693059635e-06,-7.25317693059634e-06,-7.25317693059642e-06,-7.25317693059624e-06,-7.25317693059605e-06,-7.25317693059626e-06,-7.25317693059656e-06,-7.25317693059617e-06,-7.25317693059634e-06,-7.25317693059635e-06,-7.25317693059633e-06,-7.25317693059561e-06,-7.25317693059628e-06,-7.25317693059595e-06,-7.25317693059628e-06,-7.25317693059619e-06,-7.2531769305964e-06,-7.25317693059643e-06,-7.25317693059615e-06,-7.25317693059628e-06,-7.25317693059612e-06,-7.25317693059635e-06,-7.25317693059629e-06,-7.25317693059606e-06,-7.25317693059617e-06,-7.25317693059638e-06,-7.25317693059642e-06,-7.25317693059661e-06,-7.25317693059626e-06,-7.25317693059627e-06,-7.25317693059653e-06,-7.25317693059618e-06,-7.25317693059628e-06,-7.25317693059662e-06,-7.25317693059623e-06,-7.25317693059664e-06,-7.25317693059629e-06,-7.25317693059613e-06,-7.25317693059658e-06,-7.2531769305964e-06,-7.25317693059612e-06,-7.25317693059623e-06,-7.25317693059619e-06,-7.2531769305961e-06,-7.25317693059635e-06,-7.25317693059634e-06,-7.25317693059642e-06,-7.25317693059624e-06,-7.25317693059605e-06,-7.25317693059626e-06,-7.25317693059656e-06,-7.25317693059617e-06,-7.25317693059634e-06,-7.25317693059635e-06,-7.25317693059633e-06,-7.25317693059561e-06,-7.25317693059628e-06,-7.25317693059596e-06,-7.25317693059628e-06,-7.25317693059619e-06,-7.2531769305964e-06,-7.25317693059643e-06,-7.25317693059615e-06,-7.25317693059628e-06,-7.25317693059612e-06,-7.25317693059635e-06,-7.25317693059629e-06,-7.25317693059606e-06,-7.25317693059617e-06,-7.25317693059638e-06,-7.25317693059642e-06,-7.25317693059661e-06,-7.25317693059626e-06,-7.25317693059627e-06,-7.25317693059653e-06,-7.25317693059618e-06,-7.25317693059628e-06,-7.25317693059662e-06,-7.25317693059623e-06,-7.25317693059664e-06,-7.25317693059629e-06,-7.25317693059613e-06,-7.25317693059658e-06,-7.2531769305964e-06,-7.25317693059612e-06,-7.25317693059623e-06,-7.25317693059619e-06,-7.2531769305961e-06,-7.25317693059635e-06,-7.25317693059634e-06,-7.25317693059642e-06,-7.25317693059624e-06,-7.25317693059605e-06],"Archive113_field2":[-7.2531769305963e-05,-7.25317693059629e-05,-7.25317693059627e-05,-7.25317693059629e-05,-7.25317693059627e-05,-7.25317693059627e-05,-7.25317693059625e-05,-7.25317693059626e-05,-7.25317693059628e-05,-7.25317693059627e-05,-7.25317693059628e-05,-7.2531769305963e-05,-7.25317693059628e-05,-7.25317693059629e-05,-7.25317693059628e-05,-7.25317693059629e-05,-7.2531769305963e-05,-7.25317693059627e-05,-7.25317693059629e-05,-7.25317693059625e-05,-7.25317693059629e-05,-7.25317693059628e-05,-7.25317693059624e-05,-7.25317693059629e-05,-7.25317693059628e-05,-7.25317693059628e-05,-7.2531769305963e-05,-7.25317693059629e-05,-7.2531769305963e-05,-7.2531769305963e-05,-7.25317693059626e-05,-7.25317693059626e-05,-7.25317693059634e-05,-7.25317693059631e-05,-7.25317693059629e-05,-7.25317693059624e-05,-7.25317693059631e-05,-7.25317693059628e-05,-7.25317693059629e-05,-7.25317693059625e-05,-7.25317693059631e-05,-7.25317693059626e-05,-7.25317693059629e-05,-7.25317693059629e-05,-7.2531769305963e-05,-7.25317693059629e-05,-7.25317693059627e-05,-7.25317693059629e-05,-7.25317693059627e-05,-7.25317693059627e-05,-7.25317693059625e-05,-7.25317693059626e-05,-7.25317693059628e-05,-7.25317693059627e-05,-7.25317693059627e-05,-7.2531769305963e-05,-7.25317693059628e-05,-7.25317693059629e-05,-7.25317693059628e-05,-7.25317693059629e-05,-7.25317693059629e-05,-7.25317693059627e-05,-7.25317693059629e-05,-7.25317693059625e-05,-7.25317693059629e-05,-7.25317693059628e-05,-7.25317693059624e-05,-7.25317693059629e-05,-7.25317693059627e-05,-7.25317693059628e-05,-7.2531769305963e-05,-7.25317693059629e-05,-7.2531769305963e-05,-7.2531769305963e-05,-7.25317693059626e-05,-7.25317693059626e-05,-7.25317693059634e-05,-7.25317693059631e-05,-7.25317693059629e-05,-7.25317693059624e-05,-7.25317693059631e-05,-7.25317693059628e-05,-7.25317693059629e-05,-7.25317693059625e-05,-7.25317693059631e-05,-7.25317693059626e-05,-7.25317693059629e-05,-7.25317693059629e-05,-7.2531769305963e-05,-7.25317693059629e-05,-7.25317693059627e-05,-7.25317693059629e-05,-7.25317693059627e-05,-7.25317693059627e-05,-7.25317693059625e-05,-7.25317693059626e-05,-7.25317693059628e-05,-7.25317693059627e-05,-7.25317693059627e-05,-7.2531769305963e-05,-7.25317693059628e-05,-7.25317693059629e-05,-7.25317693059628e-05,-7.25317693059629e-05,-7.25317693059629e-05,-7.25317693059627e-05,-7.25317693059629e-05,-7.25317693059625e-05,-7.25317693059629e-05,-7.25317693059628e-05,-7.25317693059624e-05,-7.25317693059629e-05,-7.25317693059627e-05,-7.25317693059628e-05,-7.2531769305963e-05,-7.25317693059629e-05,-7.2531769305963e-05,-7.2531769305963e-05,-7.25317693059626e-05,-7.25317693059626e-05,-7.25317693059634e-05,-7.25317693059631e-05,-7.25317693059629e-05,-7.25317693059624e-05,-7.25317693059631e-05,-7.25317693059628e-05,-7.25317693059629e-05,-7.25317693059625e-05,-7.25317693059631e-05,-7.25317693059626e-05,-7.25317693059629e-05,-7.25317693059629e-05,-7.2531769305963e-05,-7.25317693059629e-05,-7.25317693059627e-05,-7.25317693059629e-05,-7.25317693059627e-05,-7.25317693059627e-05,-7.25317693059625e-05,-7.25317693059626e-05,-7.25317693059628e-05,-7.25317693059627e-05,-7.25317693059627e-05,-7.2531769305963e-05,-7.25317693059628e-05,-7.25317693059629e-05,-7.25317693059628e-05,-7.25317693059629e-05,-7.25317693059629e-05,-7.25317693059627e-05,-7.25317693059629e-05,-7.25317693059625e-05,-7.25317693059629e-05,-7.25317693059628e-05,-7.25317693059624e-05,-7.25317693059629e-05,-7.25317693059627e-05,-7.25317693059628e-05,-7.2531769305963e-05,-7.25317693059629e-05,-7.2531769305963e-05,-7.2531769305963e-05,-7.25317693059626e-05,-7.25317693059626e-05,-7.25317693059634e-05,-7.25317693059631e-05,-7.25317693059629e-05,-7.25317693059624e-05,-7.25317693059631e-05,-7.25317693059628e-05,-7.25317693059629e-05,-7.25317693059625e-05,-7.25317693059631e-05,-7.25317693059626e-05,-7.25317693059629e-05,-7.25317693059629e-05,-7.2531769305963e-05,-7.25317693059629e-05,-7.25317693059627e-05,-7.25317693059629e-05,-7.25317693059627e-05,-7.25317693059627e-05,-7.25317693059625e-05,-7.25317693059626e-05,-7.25317693059628e-05,-7.25317693059627e-05,-7.25317693059628e-05,-7.2531769305963e-05,-7.25317693059628e-05,-7.25317693059629e-05,-7.25317693059628e-05,-7.25317693059629e-05,-7.2531769305963e-05,-7.25317693059627e-05,-7.25317693059629e-05,-7.25317693059625e-05,-7.25317693059629e-05,-7.25317693059628e-05,-7.25317693059624e-05,-7.25317693059629e-05,-7.25317693059628e-05,-7.25317693059628e-05,-7.2531769305963e-05,-7.25317693059629e-05,-7.2531769305963e-05,-7.2531769305963e-05,-7.25317693059626e-05,-7.25317693059626e-05,-7.25317693059634e-05,-7.25317693059631e-05,-7.25317693059629e-05,-7.25317693059624e-05,-7.25317693059631e-05,-7.25317693059628e-05,-7.25317693059629e-05,-7.25317693059625e-05,-7.25317693059631e-05,-7.25317693059626e-05,-7.25317693059629e-05,-7.25317693059629e-05]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive114.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive114.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive114.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive114_field1":[6.27468230694039e-05,6.27468230694043e-05,6.27468230694039e-05,6.27468230694041e-05,6.27468230694034e-05,6.2746823069404e-05,6.27468230694035e-05,6.27468230694036e-05,6.27468230694034e-05,6.27468230694036e-05,6.27468230694034e-05,6.27468230694032e-05,6.27468230694039e-05,6.27468230694038e-05,6.27468230694036e-05,6.27468230694039e-05,6.27468230694038e-05,6.27468230694038e-05,6.27468230694038e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694039e-05,6.27468230694036e-05,6.27468230694028e-05,6.27468230694035e-05,6.27468230694038e-05,6.27468230694038e-05,6.27468230694032e-05,6.27468230694034e-05,6.27468230694032e-05,6.2746823069403e-05,6.2746823069403e-05,6.27468230694037e-05,6.27468230694036e-05,6.2746823069404e-05,6.27468230694034e-05,6.27468230694038e-05,6.27468230694036e-05,6.27468230694033e-05,6.27468230694036e-05,6.2746823069404e-05],"Archive114_field2":[0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694035,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694037]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive115.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive115.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive115.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive115_field1":[6.27468230694039e-05,6.27468230694043e-05,6.27468230694039e-05,6.27468230694041e-05,6.27468230694034e-05,6.2746823069404e-05,6.27468230694035e-05,6.27468230694036e-05,6.27468230694034e-05,6.27468230694036e-05,6.27468230694034e-05,6.27468230694032e-05,6.27468230694039e-05,6.27468230694038e-05,6.27468230694036e-05,6.27468230694039e-05,6.27468230694038e-05,6.27468230694038e-05,6.27468230694038e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694039e-05,6.27468230694036e-05,6.27468230694028e-05,6.27468230694035e-05,6.27468230694038e-05,6.27468230694038e-05,6.27468230694032e-05,6.27468230694034e-05,6.27468230694032e-05,6.2746823069403e-05,6.2746823069403e-05,6.27468230694037e-05,6.27468230694036e-05,6.2746823069404e-05,6.27468230694034e-05,6.27468230694038e-05,6.27468230694036e-05,6.27468230694033e-05,6.27468230694036e-05,6.2746823069404e-05,6.27468230694039e-05,6.27468230694043e-05,6.27468230694039e-05,6.27468230694041e-05,6.27468230694034e-05,6.2746823069404e-05,6.27468230694035e-05,6.27468230694037e-05,6.27468230694034e-05,6.27468230694036e-05,6.27468230694034e-05,6.27468230694032e-05,6.27468230694039e-05,6.27468230694038e-05,6.27468230694036e-05,6.27468230694039e-05,6.27468230694038e-05,6.27468230694038e-05,6.27468230694038e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694039e-05,6.27468230694036e-05,6.27468230694028e-05,6.27468230694035e-05,6.27468230694038e-05,6.27468230694038e-05,6.27468230694032e-05,6.27468230694034e-05,6.27468230694032e-05,6.2746823069403e-05,6.2746823069403e-05,6.27468230694037e-05,6.27468230694036e-05,6.2746823069404e-05,6.27468230694034e-05,6.27468230694038e-05,6.27468230694036e-05,6.27468230694033e-05,6.27468230694036e-05,6.2746823069404e-05,6.27468230694039e-05,6.27468230694043e-05,6.27468230694039e-05,6.27468230694041e-05,6.27468230694034e-05,6.2746823069404e-05,6.27468230694035e-05,6.27468230694037e-05,6.27468230694034e-05,6.27468230694036e-05,6.27468230694034e-05,6.27468230694032e-05,6.27468230694039e-05,6.27468230694038e-05,6.27468230694036e-05,6.27468230694039e-05,6.27468230694038e-05,6.27468230694038e-05,6.27468230694038e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694039e-05,6.27468230694036e-05,6.27468230694028e-05,6.27468230694035e-05,6.27468230694038e-05,6.27468230694038e-05,6.27468230694032e-05,6.27468230694034e-05,6.27468230694032e-05,6.2746823069403e-05,6.2746823069403e-05,6.27468230694037e-05,6.27468230694036e-05,6.2746823069404e-05,6.27468230694034e-05,6.27468230694038e-05,6.27468230694036e-05,6.27468230694033e-05,6.27468230694036e-05,6.2746823069404e-05,6.27468230694039e-05,6.27468230694043e-05,6.27468230694039e-05,6.27468230694041e-05,6.27468230694034e-05,6.2746823069404e-05,6.27468230694035e-05,6.27468230694037e-05,6.27468230694034e-05,6.27468230694036e-05,6.27468230694034e-05,6.27468230694032e-05,6.27468230694039e-05,6.27468230694038e-05,6.27468230694036e-05,6.27468230694039e-05,6.27468230694038e-05,6.27468230694038e-05,6.27468230694038e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694039e-05,6.27468230694036e-05,6.27468230694028e-05,6.27468230694035e-05,6.27468230694038e-05,6.27468230694038e-05,6.27468230694032e-05,6.27468230694034e-05,6.27468230694032e-05,6.2746823069403e-05,6.2746823069403e-05,6.27468230694037e-05,6.27468230694036e-05,6.2746823069404e-05,6.27468230694034e-05,6.27468230694038e-05,6.27468230694036e-05,6.27468230694033e-05,6.27468230694036e-05,6.2746823069404e-05,6.27468230694039e-05,6.27468230694043e-05,6.27468230694039e-05,6.27468230694041e-05,6.27468230694034e-05,6.2746823069404e-05,6.27468230694035e-05,6.27468230694036e-05,6.27468230694034e-05,6.27468230694036e-05,6.27468230694034e-05,6.27468230694032e-05,6.27468230694039e-05,6.27468230694038e-05,6.27468230694036e-05,6.27468230694039e-05,6.27468230694038e-05,6.27468230694038e-05,6.27468230694038e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694036e-05,6.27468230694039e-05,6.27468230694036e-05,6.27468230694028e-05,6.27468230694035e-05,6.27468230694038e-05,6.27468230694038e-05,6.27468230694032e-05,6.27468230694034e-05,6.27468230694032e-05,6.2746823069403e-05,6.2746823069403e-05,6.27468230694037e-05,6.27468230694036e-05,6.2746823069404e-05,6.27468230694034e-05,6.27468230694038e-05,6.27468230694036e-05,6.27468230694033e-05,6.27468230694036e-05,6.2746823069404e-05],"Archive115_field2":[0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694035,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694035,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694035,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694035,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694035,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694037,0.000627468230694036,0.000627468230694036,0.000627468230694037,0.000627468230694037,0.000627468230694036,0.000627468230694037]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive116.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive116.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive116.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive116_field1":[1000,930,230,300,1916.8554772363,965,580,265,650,5721.67240833248,1701.82099944789,4145.10867471369,2675.34506178755,405,247.5,8026.80029827971,8242.59424933257,2980.78381465324,2810.94699089976,282.5,2402.01996475106,3034.71190690189,1812.51473008294,1525.62416780386,1338.62014546121,755,2097.8635619983,6136.61561915107,475,11262.4620801484,825,1977.7627736237,982.5,667.5,2083.32283412698,3039.80448983943,947.5,562.5,3780.11767045169,2079.24691406997,1006.35123884845,1665.20616308618,1622.39385447849,1038.60514165877]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive117.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive117.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive117.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive117_field1":[1000,930,230,300,1916.8554772363,965,580,265,650,5721.67240833248,1701.82099944789,4145.1086747137,2675.34506178755,405,247.5,8026.80029827971,8242.59424933257,2980.78381465324,2810.94699089976,282.5,2402.01996475106,3034.71190690189,1812.51473008294,1525.62416780386,1338.62014546121,755,2097.8635619983,6136.61561915108,475,11262.4620801484,825,1977.7627736237,982.5,667.5,2083.32283412698,3039.80448983943,947.5,562.5,3780.11767045169,2079.24691406997,1006.35123884845,1665.20616308618,1622.39385447849,1038.60514165877,1000,930,230,300,1916.8554772363,965,580,265,650,5721.67240833248,1701.82099944789,4145.1086747137,2675.34506178755,405,247.5,8026.80029827971,8242.59424933257,2980.78381465324,2810.94699089976,282.5,2402.01996475106,3034.71190690189,1812.51473008294,1525.62416780386,1338.62014546121,755,2097.8635619983,6136.61561915108,475,11262.4620801484,825,1977.7627736237,982.5,667.5,2083.32283412698,3039.80448983943,947.5,562.5,3780.11767045169,2079.24691406997,1006.35123884845,1665.20616308618,1622.39385447849,1038.60514165877,1000,930,230,300,1916.8554772363,965,580,265,650,5721.67240833248,1701.82099944789,4145.1086747137,2675.34506178755,405,247.5,8026.80029827971,8242.59424933257,2980.78381465324,2810.94699089976,282.5,2402.01996475106,3034.71190690189,1812.51473008294,1525.62416780386,1338.62014546121,755,2097.8635619983,6136.61561915108,475,11262.4620801484,825,1977.7627736237,982.5,667.5,2083.32283412698,3039.80448983943,947.5,562.5,3780.11767045169,2079.24691406997,1006.35123884845,1665.20616308618,1622.39385447849,1038.60514165877,1000,930,230,300,1916.8554772363,965,580,265,650,5721.67240833248,1701.82099944789,4145.1086747137,2675.34506178755,405,247.5,8026.80029827971,8242.59424933257,2980.78381465324,2810.94699089976,282.5,2402.01996475106,3034.71190690189,1812.51473008294,1525.62416780386,1338.62014546121,755,2097.8635619983,6136.61561915108,475,11262.4620801484,825,1977.7627736237,982.5,667.5,2083.32283412698,3039.80448983943,947.5,562.5,3780.11767045169,2079.24691406997,1006.35123884845,1665.20616308618,1622.39385447849,1038.60514165877,1000,930,230,300,1916.8554772363,965,580,265,650,5721.67240833248,1701.82099944789,4145.1086747137,2675.34506178755,405,247.5,8026.80029827971,8242.59424933257,2980.78381465324,2810.94699089976,282.5,2402.01996475106,3034.71190690189,1812.51473008294,1525.62416780386,1338.62014546121,755,2097.8635619983,6136.61561915108,475,11262.4620801484,825,1977.7627736237,982.5,667.5,2083.32283412698,3039.80448983943,947.5,562.5,3780.11767045169,2079.24691406997,1006.35123884845,1665.20616308618,1622.39385447849,1038.60514165877]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive118.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive118.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive118.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive118_field1":[1102.61237264658,1045.31493796346,16828.9038722931,16514.4692541268,1503.10234585017,896.77911471084,4143.77167067036,10390.4998532226,4134.94130577635,1813.99775213863,1070.06378846006,2251.52891806187,1630.34657160456,6923.20691792267,10267.092293111,1095.73232829165,2642.10356259092,1990.49415714125,1995.57781471413,10880.0315280448,1846.61461497633,1689.96353796384,1669.55665659393,1318.29026170674,1041.67059977074,2520.92721167029,1195.37354998979,1294.30249319368,7789.59890432063,2175.00283063739,2507.05125832553,1346.88262459607,982.112644985321,3167.47917393319,1754.40888661346,2018.98611257533,939.642600502312,5084.48513360141,2573.2422131928,1597.96678701983,781.48993611849,1113.04669579347,1140.33561860819,824.421509973264]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive119.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive119.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive119.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive119_field1":[0,1000000,1000000,0,100000,200000,300000,400000,500000,600000,700000,800000,900000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,900000,800000,700000,600000,500000,400000,300000,200000,100000,0,0,0,0,0,0,0,0,0,879999.999077991,571428.570916344,866666.666154439,149999.998975545,71428.570916344,919999.999897555,66666.6661544393,924999.999231659,239999.999282882,799999.999487773,357142.85663063,928571.428059201,299999.999487773,199999.999487773,642857.142344915,799999.999487773,224999.999231659,666666.666154439,149999.998975545,850000,159999.999692664,150000,733333.332821106,899999.999487773,428571.428059201,899999.999487773,199999.999487773,266666.666154439,66666.6661544393,714285.713773487,428571.428059201,333333.332821106,79999.9990779907,74999.9997438863,850000,571428.570916344,799999.999487773,99999.9994877726,119999.999897555,357142.85663063,71428.570916344,699999.999487773,666666.666154439,285714.285202058,866666.666154439,774999.999743886,774999.999743886,142857.142344915,714285.713773487,599999.999487773,928571.428059201,733333.332821106,214285.713773487,785714.285202058,499999.999487773,819999.999897555,333333.332821106,142857.142344915,66666.6661544393,399999.999487773,323809.523297296,833333.332821106,624999.999231659,607142.856118402,704761.904249677,428571.428059201,607142.856118402,389285.713005146,266666.665129984,452380.951868725,361904.761392534,723809.523297296,535714.284689831,257142.85663063,709523.809011582,392857.141832688,660714.284433717,378571.427546974,266666.666154439,547619.046082365,661904.761392534,446428.570148003,171428.570916344,833333.332821106,446428.570148003,367857.142088802,464285.713261259,171428.570916344,535714.284689831,607142.856118402,553571.427803088,499999.998463318,771428.570916344,283928.57027606,457142.855606175,761904.761392534,571428.569891889,517857.141576574,460714.284433717,950000,49999.9989755452,50000,950000],"Archive119_field2":[0,0,1000000,1000000,0,0,0,0,0,0,0,0,0,100000,200000,300000,400000,500000,600000,700000,800000,900000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,900000,800000,700000,600000,500000,400000,300000,200000,100000,759999.999692664,928571.428059201,666666.666154439,150000,571428.570916344,239999.999282882,133333.332821106,150000,879999.999077991,199999.999487773,142857.142344915,428571.428059201,499999.999487773,250000,857142.85663063,750000,74999.9997438863,83333.3323088785,74999.9997438863,99999.9994877726,819999.999897555,899999.999487773,133333.332821106,850000,71428.570916344,499999.999487773,499999.999487773,166666.666154439,333333.332821106,785714.285202058,928571.428059201,933333.332821106,759999.999692664,850000,924999.999231659,71428.570916344,499999.999487773,499999.999487773,239999.999282882,857142.85663063,428571.428059201,499999.999487773,933333.332821106,785714.285202058,333333.332821106,74999.9997438863,924999.999231659,357142.85663063,214285.713773487,499999.999487773,571428.570916344,866666.666154439,714285.713773487,285714.285202058,499999.999487773,839999.999282882,66666.6661544393,642857.142344915,666666.666154439,499999.999487773,690476.189963963,583333.332308879,196428.57066023,767857.142088802,595238.094725868,678571.427546974,357142.85663063,410714.284945945,416666.665642212,857142.85663063,595238.094725868,357142.85663063,178571.427546974,607142.856118402,690476.189963963,767857.142088802,285714.285202058,321428.570404117,333333.332821106,857142.85663063,428571.428059201,160714.284433717,428571.428059201,416666.665642212,571428.570916344,232142.855862289,410714.284945945,571428.569891889,589285.713005146,642857.142344915,428571.428059201,767857.142088802,636904.760624193,241071.427418917,249999.998975545,428571.428059201,267857.142088802,660714.284433717,330357.141960745,950000,950000,49999.9989755452,50000],"Archive119_field3":[0,1000000,1000000,0,13244.643141293,26489.2862825861,39733.9294238791,52978.5725651722,66223.2157064652,79467.8588477582,92712.5019890513,110291.918820935,133174.153354403,156056.387887871,178938.622421339,202563.943517741,234784.353115879,267004.762714017,299225.172312155,340457.095486996,381911.06480646,428541.980408039,479180.827061331,535212.709333453,595009.842100511,663186.223049048,736380.869515772,816140.901339245,903685.276247253,1000000,1000000,1000000,1000000,1000000,749667.90998537,540580.597698182,367696.435299266,223636.790748688,103556.840476345,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55145.9585364405,174172.298632723,34057.6531217039,316838.145038894,65770.5847320804,149408.224690154,31950.9457628717,92400.4962131386,21191.4285749117,24273.1597966265,108809.153417879,11037.2023294095,194185.281958604,275167.425372794,35406.8037917901,88444.1540934557,99336.8278717034,102735.037778257,190955.532380338,509127.549882166,221160.381446742,885227.804384407,52978.571693393,40512.7881006457,517658.266208748,143150.897597103,40521.1537988122,182307.548757929,396661.720188951,53314.3111535481,17893.8621356095,62751.0573833725,168583.052343301,243684.80760016,94545.8091278987,29594.2560579574,19866.9641929371,186977.452353553,118863.030214666,142662.461095175,710762.382075901,6622.3213976457,27572.9790121065,245878.851782418,251765.226853793,262125.196412322,106720.159907565,30800.1654043795,42382.8576620509,72819.4804143342,163213.729870705,122075.495190989,693720.397673287,242731.601551856,227051.932063933,31825.9212950486,56222.7578891653,36860.0626353734,140581.054697354,51697.6773754672,810988.69541752,294880.508766398,79467.8583084306,81025.5767135188,621185.584060089,107363.173325884,13507.0512662707,163506.748539868,332901.200356801,217359.090566038,776737.798868434,21014.4550269604,101149.831201089,312085.670383727,46960.1116114856,59188.5116036874,17659.5232148278,397022.13159485,98656.9176881173,90017.5989046857,96505.4283351688,69056.4293591831,26051.6123623137,105093.408613553,44148.8098298654,306127.680797249,86697.9923441056,197615.277625262,638254.759542881,123752.766450637,255342.82085052,16045.2292915855,68932.4488108349,138836.970542406,349374.605155899,10595.7135191147,22074.4051710464,169912.12164975,53110.2059437988,147393.373025016,389281.602892356,793868.561502424,20256.3943064365,442320.763405711,161044.759220485,14797.127772865,9933.48235258226,198599.972341768,81516.2936519052,783572.913365041,132798.092051221,31787.1426062539,136011.441132064,846860.19858053,138716.788672578,17339.5982639302,648646.281285813,258020.444594343,892922.619863341,214270.989284172,564390.567237875,364781.460272876,876569.468645909,134866.441772195,44391.3843430499,141857.122808562,13025.8064372705,282411.47765183,55186.0126715023,202462.493863387,121546.57018515,73720.126807429,286433.297802166,35711.8311205058,331740.571913999,690202.489439587,283714.246129351,73985.6398887799,8829.76135130019,82718.9390852292,103584.644807116,192096.288448289,54404.5759405983,33111.6069882285,70813.6080958076,286133.084386711,405460.699233656,65823.5480224933,142890.58362403,571951.162742405,199782.236246189,311349.947900837,455480.610025563,295215.481934338,176455.929341219,437430.670659459,57723.4049399601,349708.244483646,143676.422437352,355613.004421455,358627.677903164,670867.813025478,477223.49188032,459783.535459809,532278.097218162,590980.876368453,409249.649531441,95845.6159064971,418551.240459598,259994.314992795,216763.228705864,282168.950263568,389128.533973478,152537.28879852,587728.618493051,556316.945242059,252809.633969152,438171.548199068,199141.940706542,210945.463423566,500073.697744006,516896.24289693,951842.637734341,51778.4197831325,874833.954055639],"Archive119_field4":[0,0,1000000,1000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103556.840476345,223636.790748688,367696.435299266,540580.597698181,749667.90998537,1000000,1000000,1000000,1000000,1000000,903685.276247252,816140.901339244,736380.869515772,663186.223049048,595009.842100511,535212.709333453,479180.827061331,428541.980408039,381911.06480646,340457.095486996,299225.172312156,267004.762714017,234784.353115879,202563.943517741,178938.622421339,156056.387887871,133174.153354403,110291.918820935,92712.5019890512,79467.8588477582,66223.2157064651,52978.572565172,39733.929423879,26489.2862825858,13244.6431412928,55145.9585364405,226690.96642797,45410.2046744993,58009.6755251378,23093.0708098161,85376.1280284972,10377.3110177157,258086.073219856,31787.1426062539,242731.601551856,190416.018609345,55186.0126715023,72819.4804143342,27372.7984888226,138340.188831408,564391.8232195,91187.5898402069,223565.615968374,190955.532380338,510441.141724997,258020.444594343,242400.707763062,39733.9288981016,162051.153939265,39937.3876768513,35787.7237589916,58650.0089696143,20256.3943064365,35647.4041805113,219431.307604007,161044.759220485,162051.929451574,290677.084532266,49559.807125069,151647.719835534,103579.896458965,19866.9641929371,695974.572231969,16770.0853820612,793866.52795958,105093.408613553,6622.3213976457,82718.9390852292,162787.014723557,116019.350538048,883721.166321748,128064.191786632,313000.087498687,10595.7135191147,194185.281958604,136011.441132064,38963.4415404531,846860.19858053,24273.1597966265,82118.3975153774,350085.142441173,482632.891025984,442320.763405711,54753.7347346113,281635.703082788,528975.346012949,184300.317274686,13244.642283064,121538.365326392,147392.839284048,71575.4480302105,81358.3370590195,45269.7447457069,106942.212541534,43654.7521442685,280910.816258668,210427.276753287,366078.581955357,28371.4237421485,193491.083703461,73985.6398887799,8829.76135130019,876569.468645909,28586.4178823181,50571.7943427822,13786.489762167,320368.867153645,57137.9044159669,710762.382075901,22074.4051710464,774117.726948222,69358.3945924029,491314.358954611,81517.2781529997,91347.1118000775,85114.2732753551,97003.6094514687,41359.4692865009,258181.352641602,29004.8369942278,42382.8576620509,44148.8098298654,97092.6407231881,118040.971800723,621186.098336415,503082.628131921,142664.681088798,182307.548757929,36860.0626353734,17893.8621356095,118377.024744057,29800.4470577468,141857.122808562,638253.515854714,65823.5480224933,892920.934635141,21191.4285749117,163213.729870705,693720.397673287,17339.5982639302,138716.788672578,519007.559278056,221160.381446742,132799.522190168,214270.989284172,88442.850986908,71294.80887325,397022.13159485,328377.833756039,88782.7681738723,198599.972341768,68302.8813621988,130229.6116764,11037.2023294095,110096.152462155,486643.757705245,405460.699233656,95477.7659340555,392830.148472293,147440.254127085,219028.449961011,56742.8490209792,59188.5116036874,17659.5232148278,27572.9790121065,289597.769118471,42688.0632459075,244820.595062171,33111.6069882285,97741.7557944932,496749.332590727,73720.126807429,783572.913365041,109136.880616785,409336.050003149,345371.123771529,335701.298700367,147419.983239304,622741.881546324,162238.310568257,744598.050689882,139100.452129823,258492.586117697,421288.514110528,196292.285384883,399567.632423311,358598.419473133,80367.9883762896,409464.614986875,147407.402933955,659618.204841035,640172.572797325,443017.639585787,325087.734568015,400707.779965091,558967.714951344,273026.456146526,147430.852705083,374262.773361302,255787.515179988,792034.855989772,340775.119225285,230694.135353616,411474.709083768,299758.393084405,291693.645940808,216323.139300871,51778.4197831325,951842.637734341,874833.954055639],"Archive119_field5":[1],"Archive119_field6":[3.537812]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive120.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive120.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive120.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive120_field1":[102804.896488471,102933.385494015,104223.943977456,104095.211127244,103513.69821607,102869.950913707,103579.489592226,104158.523045371,103450.03393656,103867.585610117,103159.179042546,103802.871414319,103545.916291106,103207.656375889,103256.781381573,102901.994550902,103263.52102662,103445.192333237,103312.266985376,103773.256357589,103594.124318855,103902.225040074,104190.8494368,103835.106547567,103127.441216436,102837.306147591,104126.439799245,87349.5855459067,77754.1739477361,79578.8789885116,79426.7724927939,82224.2890331884,90191.4040894386,82892.0762416667,74243.2768588919,81153.0344365031,77427.5575693528,84370.2929197872,76404.4800642172,81321.1642390306,86152.1124208645,86398.3445510349,88934.9870582114,84705.9569691195,81254.0005234876,83881.6320295486,81195.1093162769,79463.7026679598,81598.4930714172,74629.2849729576,77992.1462156171,83973.3852376499,88099.0345130597,73629.5424741392,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05],"Archive120_field2":[1.64240273700338e-07,0,0,0,0,1.58304974551258e-06,0,0,0,0,0,0,0,0,0,8.44623872194325e-07,0,0,0,0,0,0,0,0,0,5.21688428290905e-07,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive120_field3":[272.26841454,272.329830623036,272.946437638536,272.884931260031,272.607094226503,272.2992700311,272.638528233266,272.915180623684,272.57667651054,272.776175637896,272.43771096156,272.745256289689,272.622487477834,272.46087261151,272.484343708348,272.31469777665,272.487563796761,272.574363274361,272.510853791388,272.731106716478,272.645520458125,272.792725771655,272.930625626756,272.760657691145,272.422547165044,272.28384228555,272.899851791326,264.884154584762,260.299629215354,261.171442421649,261.098768510652,262.435374597797,266.241927419703,262.754432031375,258.622181967937,261.923547270188,260.143577433996,263.460698958331,259.654768305885,262.003876846169,264.312022179104,264.429667726247,265.641632612619,263.621073563841,261.971787158857,263.227225049951,261.943649936109,261.116413123727,262.136379871676,258.806610116081,260.413328339999,263.271063180913,265.242228625447,258.328950059312,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1201.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1201.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1201.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1201_field1":[530.475692686307,530.725076656693,500,500,530.405443025947,530.231552567154,530.093429296356,530.03478921918,529.890461229045,529.812733956628,529.748073710929,529.785549463449,530.054057737574,529.944106252994,529.895331084199,529.712400112344,529.646818201768,529.67829024495,529.808171970603,529.681250663889,529.877793139481,529.998730299163,529.90627168694,529.781969568924,529.830698855565,529.79156963087,529.752661716421,529.850087097361,529.868003216225,529.868333548812,529.874134586254,529.825345432744,529.830663067247,529.795529550532,529.793614072877,529.875330746649,529.860445695271,529.897473616626,529.951129927969,529.856017543443,529.824286966747,529.981686898691,529.884996768279,529.901242044662,529.844693927736,529.668796209617,529.770096534172,529.797290651879,529.747855306411,529.909169601168,529.785011930108,529.823677821046,529.78359061194,529.732729237988,529.768521482126,529.825879706983,529.875650450124,529.747140462943,529.684921208405,529.798393439708,529.720176454491,529.855538146797,529.861728497577,529.959767943095,529.964741999615,529.886013937701,529.900983867506,530.16604134615,530.401327071693,530.476062755236,531.723526156252,533.108660914889,533.978399126554,534.144876793313,533.51490277639,532.024216016262,529.547463843699,526.202833303727,521.889285715667,516.901003574539,511.243959889129,505.635063455602,498.536451290313,492.117551074431,486.207196563737,480.947033911841,476.65021865493,473.521231358852,471.812370604592,471.611655347131,472.995966939449,475.919259867784,480.396395646247,486.090978225472,492.966129939937,500.617749320262,508.591751052093,516.540636392386,524.059289162768,530.633683828091,535.861077142376,539.39935605882,540.994335596999,540.423399142173,537.545698998653,532.519191736903,525.4778900844,516.628363227251,506.560164256302,495.534744933546,484.066497967036,473.056671039777,462.942848302018,454.145912574781,447.550964908742,443.317631744003,441.967342287999,443.755179288082,448.742135073993,456.618568880337,467.26230966071,480.480792516006,495.184399166846,511.027472435086,527.038242973904,542.551802387569,556.378912790653,566.265119180545,577.259195937031,582.234909615345,582.99416521677,580.066888652368,571.673107389626,559.340563076126,543.162010242145,525.670644289097,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,522.745054558518,543.866133218936,559.980807855154,572.961308772102,580.965001538419,584.515496437804,583.038496333254,577.040847991582,568.384202713216,556.607509348324,540.002943994923,526.915915503656,511.059742533825,495.116455109275,480.445560333208,467.170781541619,456.364044036732,448.25119988301,443.166924363731,441.418013042313,442.832513184381,447.100534866753,453.752820167688,462.54146629209,472.794727277899,484.142404664763,495.591781190123,506.651178051352,516.761672359649,525.687785437358,532.738714697724,537.784706427676,540.651278404819,541.140595230958,539.463108071344,535.878314661021,530.626197857267,523.964794839764,516.38130288766,508.479955766371,500.492943390298,492.800933078436,485.93553137489,480.163527266349,475.61421363845,472.66292073784,471.257552961146,471.415028544629,472.998970308699,476.29665790908,480.663715689786,486.008032448729,491.964486896452,498.119146481871,504.742742945628,511.077445415412,517.666772373446,522.238855158933,526.42648507055,529.727604948016,532.178395231174,533.615299813143,534.098164715054,533.912882339637,533.051520309944,531.697206174798,532.021545615183,530.866492334503,520.746338908007,529.823494796721,532.115178336018,530.560090794452,531.989100294587,528.491037727047,517.961244116497,488.123653391227,505.461099848819,519.700828801601,529.487453523075,531.968362946298,530.194990145971,531.06242779192,531.742369982111,525.001887437849,512.609587675582,496.525289818522,548.065856069918,580.093275608498,575.621851821024,539.569286930032,496.861250873645,455.373986787648,442.149677026034,462.65933011038,503.777934450425,546.62021107981,577.827913140531,578.823011237056,544.804627077604,471.881430449698,514.228587815675,558.576805509181,581.655811480845,574.470897249131,531.639315405596,545.896820382398,580.75200785919,576.584065814796,541.530248839906,493.59638653038,456.733500957055,443.27689385549,453.628501811984,489.245484725193,532.60672735382,572.001168017813,583.282874653805,557.878782487793,516.111499818178,554.44928808632,582.332681975009,576.09384808682,540.12137535077,497.887835117887,460.991148254306,469.916961124391,509.523956576873,554.078032930969,582.126840558756,575.161902912457,531.819414940439,531.943964149565,530.807136223158,523.131982761259,509.948726023425,491.601787603878,478.099350403167,473.090208042464,473.609989083599,476.060089547726,487.439128239694,502.558544710268,518.161472111936,528.466315366665,532.425394873405,530.287371350302,481.278414013721,496.161041412035,512.116560998751,524.100176022096,530.927386687788,531.893716869247,494.973676082144,480.066932507469,474.718499085275,479.294897681075,492.0549945972,508.160010342806,521.921015286614,530.131124699975,532.050548239342,530.337968538133,532.008974608534,503.914707153843,488.287879909582,477.006038580404,475.31593506302,483.791046274984,530.351733270016,532.115720181133,528.720589456973,518.729194548377,504.604119870726,487.743175201596,476.214650495172,471.401755914053,474.15919309951,484.550692278837,499.898826671577,515.579073325269,526.394783140811,531.733964641076,531.100726254484,546.991570987572,580.478821279387,578.294666516365,545.186803434597,500.839775140129,461.772026043665,443.830206402745,450.433025652567,474.992012721033,499.268932829934,466.434019194539,446.034486929418,446.191339511042,469.824015153586,513.205419317301,557.400258357143,582.087452131162,574.927939655293,530.855632687591,441.719797973656,451.102414675999,480.254887799771,522.470169647296,565.52410201331,582.77149240318,565.744992868312,515.677638028671,554.25702075401,581.026205926706,575.366188089042,541.352943267454,500.929097191309,466.313950077646,442.540422088557,534.127440808829,507.818322510695,477.754340216248,450.431790159869,443.35243384517,459.965027694375,496.629803095303,544.705644028229,577.985725033568,580.400737436715,545.793517575358,530.716531546796,574.054929387176,582.336081614012,558.43474997121,514.795128159358,471.783153276553,446.624902520378,445.730516206679,463.881076675245,495.559357476531,522.851825080196,451.443193729653,483.914628695247,525.631898016766,567.58234835901,583.924108823575,565.401816807508,515.879797212539,557.145026795395,583.23112566703,572.275139053104,537.337683463576,490.698195770645,456.59793246156,530.280782156,532.195549740645,528.079564493642,517.622507385791,502.457707044849,487.215886989992,476.708332822333,475.047134471474,485.998536212743,505.397366446893,526.028389497269,510.505783652136,489.961613531128,476.827721103966,475.259108949502,483.570455645754,498.217459069602,513.997103518523,525.889727510781,531.781753433112,531.16219713498,531.722449493858,531.064899514852,523.00521973748,509.150521719034,492.297902084033,479.022352906211,474.245353706077,481.698537200913,484.593631513161,475.096373214664,476.565646098599,487.352196571654,503.823476350206,517.703639362428,528.51159903234,531.992066067896,530.33527741015,534.780415779543,517.547339012394,496.52539371686,480.726248478658,474.505563654648,480.062437279722,493.905739389669,509.867244789013,523.038959888795,531.166741569096,531.901734584086,531.191151820109,531.849206982753,526.503428098902,515.135400626268,499.122147760034,484.822146372516,475.719873971004,476.786291156943,489.48214746394,508.907961656055,528.27780033141,539.707519712511,538.407363507255,537.595380296862,537.48473891701,537.800214076467,537.820740987644,536.800041124165,538.020188926685,537.091812218018,537.556196642378,537.692675176867,537.076693076187,537.926033191303,537.470001467133,537.207737550987,537.575866852588,538.643755201838,481.583530762771,474.386000804044,476.352464646444,487.986829309542,503.513240760395,518.468215157606,528.598222564986,532.17400354276,530.165287073356,532.130985204667,529.98572551173,520.356821217162,505.771876533575,490.758748542624,478.519937277605,474.624579301651,480.630485267402,530.610690554166,573.80414636075,582.669019430885,558.47834945839,517.03831464298,475.058166968299,448.117356905266,444.54094776381,463.729506060032,491.507475429217,521.097634857553,504.127262159814,474.943751978533,451.069856076803,444.435846908603,459.803788791259,495.848554199781,538.968090205881,574.281569131929,581.823091012239,554.607600125564,515.869581965251,566.507115324692,583.603844088459,567.113895233649,529.412741215722,484.370867697556,452.634556697608,444.434798321384,456.105520833223,487.807865540238,456.575564093822,485.93357077945,533.549101517519,570.236108918838,582.589874738143,556.860144876692,495.323755664563,480.416547739868,474.227733157353,478.177501984788,492.375164874182,508.162573383774,521.658246043477,529.940265382033,532.125929282487,530.309660709101,532.0357337763,529.091402504542,519.267068614421,504.478868714412,478.608508476122,454.445833802602,443.524030660326,455.483250787417,488.880642685016,530.113001231496,568.693866619911,582.70715594964,564.766253534212,516.102122146448,556.737789164384,582.772019572382,572.118647460366,535.034189044789,489.197912311156,456.480373481565,443.774232686886,455.693241665361,482.889322078614,531.233077311969,531.496886955293,526.040656528172,514.103105422424,498.831791884622,484.08045016329,474.941833652919,477.940157382448,490.374356730347,510.707951366294,490.088481750143,477.819706927494,474.933702312529,482.475103888371,497.386566244398,512.637146886305,524.65190049616,531.081234039225,531.708709150761,531.204304561113,531.759513382958,525.791669616248,514.14012029435,498.234550501974,483.583468624129,474.372792317754,477.646004116292,491.40875576495,511.110574827063,502.607406091647,483.659813244843,506.21644533996,520.541563228919,529.509077193325,532.214201485615,456.494636026404,442.541402042596,453.326360933781,483.191615719011,526.007270200953,567.200751990703,582.773861342605,565.141794888833,515.940768862285,555.076298791234,581.913450597188,574.805468297047,541.395621919142,496.747892483842,461.142598075848,442.555548139666,448.939538209572,502.98734508162,485.3551503015,475.500190169883,477.414725168782,488.194755477985,504.200067319032,518.248605002959,528.284985291856,532.003962483414,530.377429611692,532.200465107204,530.014452457043,522.568811986431,509.146851427892,493.429033134052,480.769320386046,474.802871433153,479.268676782125,493.115757149102,513.693199030444,545.115663815832,580.534384232133,578.169205708017,545.442589950255,502.433894869757,462.464916099193,444.373344733314,449.411811595705,443.329472859423,455.855326290419,490.84148112917,533.405403621672,571.809179994846,583.074417187339,556.599770018069,515.7333093005,566.928735389968,583.910190992627,565.335221510114,523.638320844528,481.091143170383,451.529833870749,444.229664814363,460.188539802555,488.694945594712,520.107690827098,538.958855487535,525.795266959428,496.429226061475,466.845914317817,446.788029993334,446.964468059672,468.747073394184,509.63010618745,555.271184809104,581.599390181963,575.987484760538,530.408370124639,533.763962561034,514.944519558832,495.322103577156,479.817187252348,474.971426798583,479.351106134998,492.475953336939,508.69586862237,521.922071630456,530.712614934517,532.026978034825,536.970569672698,520.629918773165,499.881543334921,483.056754324288,475.105129243938,477.539435446879,489.010578205699,504.461726799306,519.310332466083,528.878987535064,532.176698074641,530.330725781839,508.79022099631,476.496401171584,451.331903542393,443.443718703795,459.797478817673,495.322277235889,538.479647409237,574.160578172754,582.896548287295,556.091309100702,515.872283715183,568.767816126235,583.298536507894,563.654257698869,523.050769839675,480.768006414731,450.153864769444,444.647940867943,461.293464761037,491.25007881366,522.144679550158,537.412134561377,522.108694117697,502.194716958244,483.947863496902,475.17715083921,477.728503002529,490.00132744617,505.845759544043,520.379099093138,529.622628274067,532.104026273943,487.167690796319,505.835575379485,526.257822504536,539.835669563288,556.388779810787,582.548338575571,574.437479169846,534.746022828759,510.534553110415,477.972930600815,453.065296070193,443.55689784694,458.190620943181,491.868491995404,536.662964112168,476.911600122534,450.633318120729,443.671275384853,458.556069755009,492.951307559727,540.015023408874,574.438598001702,582.824663743147,556.185980960844,519.351990172277,568.648827401744,583.718915042332,563.439162317054,520.23831989991,478.302990583402,448.873237023193,444.801387319652,463.854594179206,520.175627323276,554.775907659004,583.182149695767,570.987136991561,534.130137960098,542.506579519977,532.601570204244,531.715792387439,548.877086093046,577.834840191546,580.744892777286,553.873227755947,496.86184655317,511.721444568248,524.553090847116,531.505993421662,444.560205600565,470.153323675825,512.116363951594,550.963742768783,579.782878438849,578.224472886094,542.923151852811,531.073072763481,483.230660159751,456.181239020349,443.206892156978,453.442757457502,486.305940530871,528.720703968261,568.351660369734,583.838540878918,564.611784893747,515.955718193876,531.774372686635,475.481972815878,485.718611246949,503.141481976779,497.779285057308,460.697823785022,445.100029964673,449.10113394575,530.333856413465,532.13017429305,528.360770287745,518.39059534143,503.75468431062,487.672372083395,475.34614447427,482.716771859666,499.222360955501,514.236466740533,526.148482876153,531.429913296052,531.04218197038,531.818725213855,531.282119499796,525.36958908558,514.533439126517,527.874313949827,532.077882278917,530.350761375111,554.619302566461,581.993472300022,573.941652762941,532.895868399171,532.806403000717,577.118777203489,547.187530718222,531.900605144819,532.075934606822,530.645519244408,576.292724570506,541.220767395021,530.274595121092,572.275366901873,581.871417974836,559.943701083548,517.999162148968,544.606961007062,580.395871209723,576.020916536719,523.80667203989,530.604901882859,531.9020645738,530.320141099167,531.885141689206,527.83525185992,516.608877052553,501.21428576369,484.549017531604,532.189120321787,529.64036954043,521.077759359558,507.779347314722,510.806000248297,553.74651752463,581.04313674765,482.334998873612,497.578789381057,513.579693668481,525.426424846343,531.150467152724,531.438768730116,474.687562754619,474.201537598954,482.044456040478,496.919705762429,511.671865741017,524.674771383252,531.412180268559,531.582190706296,531.121607288096,531.421842818881,525.168312805067,513.761460638155,498.035951810333,483.32513339719,473.289682495592,531.252175707563,531.924021890789,525.478525833109,513.430952000976,496.983983912092,481.983697633597,479.799451752279,474.607014452382,481.743622395601,497.741925812459,518.611291393951,532.167927538184,529.896279033969,521.142456689202,507.102521542983,491.973925995354,479.273763191777,474.113584806791,481.270364714678,497.802059711914,518.892496288919,532.421819670828,529.620059282589,521.042953054354,507.13235393681,492.426004796044,478.594850811838,474.683757087253,481.295875405577,497.840848513144,517.971293625257,532.27560998005,511.446577956884,491.968181999099,477.863165183541,475.369410320057,483.04976857087,498.536146307063,513.987826378528,525.878983264828,531.707347932813,531.313729971493,530.225386602932,532.444568398794,528.48912344052,519.032658662159,504.284679695543,488.465287592292,476.524136567331,472.176321264557,532.187116343183,529.465512854475,520.30143302652,505.830904070922,489.693076731363,477.659885453021,473.553964197499,476.678075488003,473.436331728948,479.762186690064,493.913975422985,510.213292219275,523.48118830253,530.779127673436,531.829094590186,490.079454363819,477.234608626763,474.685326689276,483.153838336856,497.882545697371,513.968033350549,525.916533305784,531.73124929776,531.066213604129,464.842982669818,446.461574615016,474.208278998727,517.485169767966,560.988483804725,581.941790795232,573.800961858951,530.913465956127,531.808756190438,531.013154421869,523.703976822962,510.235603526441,531.142002358852,531.621262112704,497.752698583668,481.732827451164,531.121698821617,531.704154288322,526.268780926197,514.894011628372,499.707735780301,494.461531501594,511.650263217754,525.614744229329,531.71784714475,530.941423655085,531.671092796745,530.455258243962,523.17885765443,509.752413956897,493.836039274125,478.562460025747,534.220798744093,574.35011621952,580.784836364729,552.875559406123,555.255961371165,581.895993011809,574.664874473996,522.067973317864,556.276424547372,581.234285247409,574.7570612128,531.807053957179,532.134152528634,532.24969886047,532.089092698471,531.283077324891,531.857182451399,530.708982721922,524.143877886721,519.752451690412,528.636683787379,532.140822696226,530.300638695018,516.379240939621,567.728514311776,584.379423215407,542.138515118538,575.031311922847,542.302285433343,531.395561018182,530.669027170649,532.145809585051,576.364044595069,534.012854888758,532.704319284964,575.818387476737,579.174302174155,523.957818435161,541.082600640759,529.049161139905,532.450471881751,530.188182206454,518.566066244661,528.326569622622,532.188618937432,530.177470286954,532.773349105677,505.84520752246,550.251344463003,577.835078000825,579.785994809315,543.68299347055,530.676473692499,571.913463343253,582.69957485351,545.208208288289,580.224266106188,576.5268312496,540.148389983881,496.174189979039,551.025824562442,579.802839792482,578.531070421873,541.272014588875,534.293551438609,573.642866020163,581.606522366645,560.758736190867,488.17614796931,503.992817958153,519.262752771887,528.966364898882,531.87723534691,530.239505787005,532.486531577116,530.103603918125,521.532913859923,508.828010595818,514.091932100809,526.747554419445,531.852449515994,531.171452430919,530.23177477961,532.123441994918,528.620002407715,519.486646400011,505.316713315125,441.806836927123,451.195574604603,484.321425309664,528.402036972281,567.440114959649,583.922435089697,566.768406209604,516.643677522057,555.995924509655,583.265744843205,570.907985732998,536.129367833024,489.208303290853,453.185468484485,510.808422330305,552.580287816818,581.213592847855,573.94253931028,532.016321967834,545.96505343952,580.979325951992,577.648070243854,540.332280643837,496.445534112346,457.929188579905,443.87203610783,452.343608010996,442.945150673497,461.962036356158,498.610509309126,545.623844361599,577.694762954602,579.67352054207,545.246008315074,530.930321406472,573.991988324618,582.566926133476,560.389483478069,519.073855778589,475.761132482981,449.280053812029,482.112415746529,474.400422654893,476.276160445415,486.927226794792,503.42321360423,517.78687634999,528.737198860718,532.138417773863,530.223504018654,532.339158333461,529.68398058575,491.266568314476,477.899552791177,472.28911635586,505.224032010875,473.509090940763,449.409161135146,444.404621723923,546.967370993719,579.462098607013,579.842499634265,544.919263311522,458.740566368646,443.078057411303,451.944260725996,480.944632995289,525.681892350211,566.444638484686,583.426204631125,566.309970682141,516.057430558711,557.26317600839,583.408080939633,573.190581937468,532.751327920228,453.748359201418,482.80639350736,512.644691602619,534.813430278272,492.765165700106,463.374319151272,445.250631854306,449.686168362953,477.338482883821,555.142144109811,582.550595135866,574.247210099791,536.634690465599,493.473021090882,457.834373444572,442.965323742541,452.414824169617,477.677876732557,509.835994946551,488.866021895873,476.302824552153,474.731771051256,483.945078604438,499.470115703735,514.83501261486,526.543031447966,531.726168844376,531.160029183145,532.020299274279,530.734871129596,523.800925672511,510.802783534863,474.817014071567,479.316203505309,494.397935649115,514.852386253322,532.029002969728,574.721717467069,582.006646683532,556.113742321572,511.023362278856,470.071863848864,446.389950856715,445.770880409767,467.094954193558,495.699311497376,519.621091833694,487.288781375431,459.458810315741,443.0970693042,451.03238156876,480.5315300392,524.135467866979,566.339023724994,583.802299265173,566.093177238297,515.880425997792,555.121348291484,582.464067187516,574.362713397085,539.545409900358,494.452753431807,458.592285127435,444.039794930935,452.096308071804,476.655763024853,506.493120838166,531.957004261086,443.10168377393,455.40588541802,490.075161657694,573.106631716419,583.087097081375,556.563309806079,480.235156185352,493.832065088647,509.784162996907,523.413470488941,530.909441009926,531.099985485021,531.794839667891,526.445839747611,514.698661572257,500.139843308815,485.035761273395,475.841894681189,476.303575456752,488.545950393205,507.68379008713,527.554142508715,492.50091952287,478.785977200166,474.801939287609,481.193079284054,494.724126981295,510.290916785991,524.035853477129,531.060716294916,531.596485398872,519.979941013757,488.987975543943,458.44452939006,443.462882048425,450.602534965586,481.946993624128,557.196056456675,583.164298470017,573.384285189276,537.213984005993,495.509299483453,458.124039122091,443.139592062619,452.004679503642,478.851283930666,510.154466466073,442.683903665703,453.661017310332,486.206455082248,532.012787694816,571.286040068987,582.691729132616,557.48260947728,515.576786370808,567.088838920364,584.354745216842,565.202357085454,523.546765408004,479.707455681023,449.449902855288,444.929087505077,460.801007146364,498.248642349772,514.605375583305,526.327525114621,531.608314543814,531.014788049528,531.173032512018,493.977094652405,476.951531356127,474.511712387551,482.688690310863,497.360723289562,513.825140605048,525.895861738251,531.992183285982,531.766173992037,531.379174863815,523.4374918779,510.094661912033,493.614164289537,480.086101940133,473.824063744965,477.047556733044,496.179342943909,512.074975442154,530.907732278819,531.703930184985,478.540423804735,473.88664322083,478.669378220412,491.967181441134,507.58687774644,521.750944677689,532.177297726847,545.304201120829,579.856969424123,577.395466128031,546.775595255643,518.673246219132,565.827307443857,582.37485190153,567.143752657382,527.706923011841,486.340045811427,452.230657135578,441.454713996255,560.034710913527,583.056954278561,566.221186793312,564.50267448977,515.456400202202,557.260852261626,583.173057660564,490.007102965788,453.638279708404,532.193772453322,531.173481712799,531.679662747702,530.566612628572,523.009800295325,509.276394700257,492.564965020332,528.205461809795,532.254937256295,531.312784746254,531.701082585001,530.993107021096,523.785279437434,510.618776834768,493.614062283141,479.738481369286,471.259040361852,530.919158184378,490.159080297392,535.955065271564,570.781135238331,582.903993766061,556.794568247133,516.164195335143,567.628932187144,583.12343872743,516.29706270343,563.917410677288,583.269186227012,572.066140688826,579.798636445571,578.525170999487,544.886231930746,531.527272974641,532.779206556637,530.356554341898,529.343021910632,532.289667488068,530.295280140058,533.449143941423,534.117742725402,532.153309877736,530.829145978729,524.338761207663,517.47431265888,564.503949666524,515.08092580035,549.82536227726,582.60096589875,582.677940021159,557.875444804795,516.182370046735,568.310870061195,583.287109519929,544.740857150537,579.142293609245,577.172566906708,545.755910297735,502.014027801609,530.230367222608,566.923252711561,583.428363048097,565.662809367402,515.816080653258,531.702391517736,520.636647574039,528.774976175227,532.240939034065,530.236785157957,533.960789388726,567.816085039851,581.410108601782,567.303950608163,515.819515653939,583.907772152892,562.922017783997,515.232483833407,476.074794007237,521.975897602743,563.976294699401,555.630058955904,582.187831311509,530.601668194503,571.952416263322,581.490081839294,530.108867292306,527.789894950234,516.355777617839,499.829651761755,504.213796989559,519.257690350197,529.080880849254,532.146991106908,530.112819659444,523.741939280937,532.093842510826,531.357995300098,531.78209549168,490.873773310206,522.989276490034,531.757492918252,530.923002087706,522.407766119234,508.573339482738,502.844541305333,517.337297774668,527.946452252046,532.180954315918,530.09747272108,559.984596733476,582.932975172311,569.684551950846,529.427894014802,484.782250597796,449.946036963613,483.674619271006,527.626079445957,566.141182827716,583.119996029913,566.02464658103,516.208448399325,450.689169782484,530.780498775985,574.495692409144,583.125366003107,555.9764841394,511.767295170651,475.435131238278,447.85599326844,444.901396005478,515.876643450604,564.439238370791,583.535476384703,569.487367582887,532.603408078899,480.507775948093,523.905471592709,583.742953200976,567.142124941095,516.100086348915,473.449345415147,483.810825562916,499.625908726015,515.232403100298,526.29613040197,531.677105811973,531.318724092249,509.301920926552,492.431286138263,477.687604693586,531.602899888421,531.023911480936,531.815392153308,527.151514442996,485.158744979044,475.802102672869,476.104362543176,486.144033844635,531.135990176502,531.773659245769,530.254077788624,557.276399731372,583.302048511729,572.848293275393,536.146317028593,490.39062639381,459.91660677661,444.120425368509,451.09199368708,480.844432803098,523.768895733504,565.423158304817,584.08388645304,567.000782325379,516.116982652686,441.458236370254,458.28477376974,457.850898311788,441.212311699407,528.699287017534,501.371064873673,471.282504310113,544.258155855448,579.649469834745,579.224899736917,546.583031541409,503.780385553304,464.646427194222,444.278215728953,448.203782981954,451.822963211059,531.153815485136,531.850543773181,526.033544642852,528.125960382482,532.160153687376,530.28728068259,541.325065628307,531.003443952687,512.73733387663,492.146400197779,478.236028785931,474.671416234265,483.106283948634,498.014938295208,513.672341949904,525.949358434507,532.025860338034,531.311926922267,531.791230109029,531.125554588279,523.785228677165,510.92194467815,494.884213164766,481.888246392306,475.148082973374,479.381303023955,494.19347708261,513.94160618764,532.177855837712,540.779140859347,537.679353076822,537.660433828729,537.551158431278,537.781688292925,537.743042076454,537.432935559315,537.664234119548,537.121054434782,537.146574763757,537.668216410888,537.096955834858,537.743594695523,537.516049537056,537.579129854584,537.465381291696,539.258703361319,483.77923823347,498.258907173246,527.831597316152,531.261949746315,574.283650673393,582.129556070401,558.313491981305,447.930618389017,444.630251417871,459.966066218851,478.841240192883,451.998413739474,443.880437951057,459.781732440514,497.786408430157,545.301135156718,577.373784053845,580.146317704501,545.267379067626,490.98399989884,477.926095789757,474.463380297847,481.219255880539,496.612308041188,511.949833591074,524.617953493655,530.927675051823,531.816162277393,531.174990092986,471.392194967387,449.276455872142,444.535643533231,489.456677179918,502.822627678417,485.243972932018,475.917218538948,531.836181376268,530.926582071602,523.678159832622,474.062810941881,479.310236764762,495.296690512984,450.833938286061,491.502547637484,507.844073608159,521.569673846368,529.840321922551,532.1643654851,530.414643761,580.081797219744,544.835018651379,533.939729410317,575.154612322814,582.002876628191,566.090465388784,582.855352614333,566.390507763359,515.781075656004,501.114678214927,521.044248286046,538.003358732006,529.790376482181,510.309978030205,490.525068392505,477.550680013754,474.952306080869,482.828890797677,533.158452589728,515.349597656477,495.494952797711,479.877094884089,474.757830671141,480.074707808515,530.260093800181,532.157877464297,528.251559522121,517.79016931354,502.837699357689,486.876403719332,476.657130877325,475.745656004035,485.179161964645,503.78388648441,524.63017403568,528.345518889512,500.253023585242,467.918384867008,447.105052431249,445.457037589378,468.160703478549,505.936613462757,550.456452576542,578.903281307278,543.219196399982,530.923731759643,581.826116935771,534.905511071662,517.69803657989,496.927782276902,481.205162791299,474.691187131217,479.553881803872,493.916389971132,509.663562489671,523.524260943784,530.9349840679,531.73364537119,531.133514758135,531.826634540598,526.10329995101,514.101925740391,477.949136591787,490.715637702001,510.797294597659,530.365837217822,482.805654426728,453.356739341317,443.727123154329,457.088969569436,484.807320959837,515.930998422935,530.179437134246,502.880831995905,472.046451091311,449.174542118964,445.090365353345,464.148151005895,502.452885492415,545.822127793885,577.426910054812,579.592414571249,547.47517616853,468.304464018741,447.718799855734,445.197409313856,466.820739782398,506.316879862569,549.286155526724,579.298390442408,578.93221341073,546.46764340744,531.609578119556,576.218593775754,581.197087670353,553.047735064276,508.229677710337,467.64446318739,515.736807327352,565.885192830789,583.249242910262,564.55860270248,558.813158991403,526.513745605,561.462284154254,581.706247819536,573.26784520899,533.594020281202,505.649644936948,519.302356130265,528.908795737171,532.270547247683,530.195572771797,531.292662367272,531.671176690267,485.300547830441,527.850120911445,531.922265242737,502.646822728042,462.842066116209,516.321204997258,531.868644301206,583.774398957157,570.209879290907,524.45517861161,544.330120247063,579.262954797489,551.607269857089,506.002964152086,558.46454384461,582.451014709544,571.309074095796,525.688662409841,531.49301913107,531.454969698976,521.986520285706,560.85171870015,582.661310803301,572.364845470284,526.064993907732,486.559989792456,502.882401916707,517.252050820627,527.302014978387,473.940291563026,475.874895795384,485.808327719181,500.537108356341,515.844457481742,526.83329574728,532.013544882741,531.09167894401,471.767809489164,531.979566716335,530.901515279987,523.044959924889,509.563345799614,493.218395972406,479.250569120401,520.005428862503,537.126696520353,530.235846670916,532.379008898832,528.086680051287,518.505038809639,503.795632608399,487.993776947047,477.224411259917,475.287489284172,484.576297053738,502.655368734285,523.23236875079,527.938860499808,506.243402275798,487.71681495674,476.214420964057,476.724695632922,486.278222520709,502.171717289562,517.668846475546,527.885359397335,532.280930157971,544.898667525217,531.117612793994,531.944877564008,526.587947286515,515.379417756249,500.421623079046,485.680650579844,474.705589655479,530.176365489899,514.152327707268,526.087994281523,501.130866618648,458.483660451135,532.229899751447,521.120920280075,505.902052973564,531.957822405824,529.055424867371,520.236043574948,505.287352949756,489.119516532056,474.733117611422,531.450143100824,531.044677805811,545.739481498157,578.586373776727,577.937779208161,516.005339319775,565.742049206991,528.510794728032,485.4987704244,565.693803016525,516.169154196784,532.744270003964,526.769816048142,530.417178332799,531.005087908129,532.901722561427,530.414859653043,532.256301927358,523.241189408728,530.553104376313,581.583985643439,532.16006195851,533.130176235637,530.911496632342,530.904052997996,532.215235367483,568.892001327677,519.336258488735,532.960946774617,546.319517453466,580.004959165735,576.111343653705,554.036651377848,530.775745038484,532.299130062451,518.194858788975,560.002767432155,581.204049882036,572.839453291902,530.371274507869,545.814211585489,577.686182732318,579.299881013989,562.853798181891,582.719783734556,565.683717127938,568.8245506148,528.89644848209,486.051919507849,548.897552649514,522.308802425375,529.987196673238,531.905223435053,530.31863963567,532.362305587843,519.084448127367,503.071300497029,528.31119660281,480.561416640271,495.453916674262,511.075901294474,524.253975364464,530.744073067174,531.644589028825,500.354249693236,493.579480607175,536.369228194088,573.39137419129,581.892004138134,555.37485769465,515.795386376039,563.720430401649,583.56690735945,563.790581423733,525.646636382506,478.206655923938,446.102832558837,557.748326891903,583.881894852627,571.462796635642,443.834375058778,458.238212333059,445.800867404411,470.369367395873,508.242985609291,553.825903633081,582.140771418222,573.840432703865,531.538943287612,479.470788898029,473.96561129402,521.067820928212,530.291393938851,532.048279948452,474.532750620709,472.670772076675,479.278186756175,493.461660479358,509.35249800734,523.068569320186,530.716216106797,532.040686595926,498.807844001621,483.383875881877,474.272955118602,473.288022969786,495.851312618959,464.550560678788,445.157573901455,558.335428668566,573.791507339592,451.398375996931,443.822039215024,456.506398463719,573.133679225796,582.832630150775,557.249582480904,515.900475419534,565.590746818402,583.71873768327,566.747195462258,525.485403999498,480.742802287448,451.213020541412,443.689858751364,458.979855026531,490.004073200059,518.308229381753,538.45898669127,475.796954490369,487.550033152888,503.311903286278,518.185349640954,528.135773539742,532.153624399908,530.327294522414,482.938095326268,499.490715003793,521.217601092554,511.665141656739,516.988599994398,564.706695272351,582.672889693331,567.394270175412,527.7077284977,484.479449349024,453.209108678869,444.018959322721,456.185828288283,484.139796797907,513.912023301859,536.001717300768,530.276148309501,506.386514412413,474.343712797181,450.6289593395,443.81349241129,461.241994379184,500.614875576922,546.430497577875,578.809373481107,579.901806941886,544.563861324526,497.838508569677,481.551864218663,478.355379293013,492.586497760497,513.271418026842,532.230456760688,498.685147207948,514.436155286298,525.846792651366,532.058220056307,531.082212341138,494.96038502171,541.887898860984,512.744418953266,516.129752673592,443.009697900152,459.742952451711,577.551991887961,580.081270206204,545.803872807161,531.347133064555,485.128409265293,501.640059378642,517.655861396248,528.271139732295,531.959932075387,530.155696492449,531.849483086577,506.782495364223,490.748950670011,475.213178394669,475.662521602398,485.875467514454,501.558487229137,532.176095277878,530.071693268896,520.500062317451,490.264744616782,478.0119809303,473.758274200509,531.060296358794,476.529695057702,516.318812634428,535.069568785497,517.406196849871,478.806413859405,446.730465596081,582.050978995412,515.840505666208,566.390915379618,463.340169855838,505.078347715471,549.088374679106,578.680777088441,579.987411424451,546.719406345945,530.25777651159,532.425447982842,531.211229889589,531.948674154692,530.124560163975,530.086947070083,532.292592858029,530.399281757129,532.009812714041,529.388069113629,520.589161798636,506.127142199452,489.821763818742,476.737059398189,472.662466535104,483.891941116337,498.923194145037,515.185423477069,515.970370496155,557.088901345778,501.257829154049,546.591378072075,579.017362168922,544.288189161227,525.29943306278,571.468995926251,573.836311271198,530.37011115436,532.50929063541,534.537517561897,553.236688299006,560.711369612892,578.984003601933,546.808162980082,557.005089316966,583.316417769434,572.7466359255,536.894795322867,490.461139590424,518.293941781934,530.114507449155,533.201933917574,533.604261333907,530.337320104974,537.92549129366,573.741014407403,555.684916124916,516.10010267199,566.128187678601,486.578702864087,531.131548699994,531.930847316319,508.173352291616,532.043289702472,531.13490847931,479.604734350937,525.504847761666,531.352343419852,531.651782683889,510.948452265739,494.694071215826,532.127556066504,518.764964724478,568.379112967877,583.531045899698,560.781778841684,515.828641201249,446.621271579172,446.025817837605,468.41749995292,511.86199874624,553.952261459605,581.886959112548,575.220070904075,531.787004159429,474.617097722813,473.93606285753,473.547636293701,481.228391963066,494.974232920515,510.251801371568,523.746932114037,531.262938841329,531.791949520048,530.433381096592,531.9708579234,529.218096194459,520.533880622061,514.912081383285,526.910758410529,531.840634748047,530.95093851131,511.046569251316,478.760361003653,491.782304827985,532.042643028094,515.932256855192,566.381983342302,583.677584495681,530.877623499391,516.066159573022,465.988838360874,505.558133698882,550.60395598772,531.82909029297,531.046171098933,523.501734965284,510.992704330064,494.977639805219,481.098300663828,474.445350159952,479.412925846073,494.54911067397,516.64860191498,520.800840013675,500.134864451553,482.890797735913,474.566906256105,478.418206398974,490.701473243407,506.831641715136,520.378697744837,529.778360992241,532.176161940512,474.686855743632,476.363795658011,488.079612886589,478.459313101003,474.123334108861,480.496556362122,523.885495755898,531.062585124413,531.697147100433,540.529149753133,527.079020297372,508.049233317864,487.711240921879,476.578534892112,475.706742312097,485.789077154966,501.673492044202,516.945498102291,528.27550660745,532.215452152289,530.415051077693,532.039212293797,539.937080991571,537.87604866629,537.741759906873,537.654867176505,537.846582790607,537.042796421082,538.023617383628,537.776150287004,537.735327297266,537.207647913919,537.312573510594,537.404504711325,537.603990698667,537.267400757121,537.797938401155,537.328957828243,539.994962481413,474.596177169738,481.578520798874,495.209520332301,510.757630864271,523.950117269259,531.199644321645,531.773791416734,487.72595731374,506.597628525794,445.655658527157,447.096342434512,468.49970212753,469.831844159598,447.998371756785,487.796072514492,476.064812467532,475.217228665316,514.92873118149,526.745824117834,531.635152488181,505.99372864641,550.392409950767,579.397826246055,578.708241314184,542.401127653391,531.479077703096,574.387305419178,581.716736155019,555.88852935282,512.722496797063,469.030839105581,445.97146397012,446.16816226932,465.968689155453,498.984168980546,531.935050318222,529.741454929584,521.005129821637,474.979432745018,482.523774598634,499.161416636783,497.730444656321,482.123131677903,474.659189528125,478.425985638663,489.131170626925,504.302979533502,519.023480196712,528.621398252181,531.848518720941,530.344204215907,490.37368712819,477.71177227443,474.645345886437,513.258216898174,445.389722301345,445.424945055941,465.377633030342,579.107332993327,579.480857717923,544.977616920854,530.250487230367,515.974308130848,566.588036148384,584.230900942734,480.470895482753,450.832931397475,443.406307363289,445.358659286536,447.129796308633,471.260602771805,513.717606814999,556.898811414681,582.193634799214,574.698859272566,531.000347163898,540.235808024696,525.105454128237,505.476850739154,486.650402829368,475.953246486405,475.735548878155,530.265580079182,510.787535903781,490.936105225044,477.721678304498,474.931411877066,482.257716813071,531.071463709095,531.781373158803,526.235306637837,513.928446449503,498.511505494429,530.569039239474,557.902166933181,515.959651878127,473.281817507695,524.597879140516,495.353168183551,465.478629306488,446.067980173802,447.699985846839,543.900021733785,530.227029199491,474.22965011403,479.474826362072,494.691284013971,475.481569785458,488.871003742717,505.070195566064,529.48027603618,532.000738662134,531.938570303642,558.201150375191,581.945112751065,574.343234323003,539.960492857331,562.90808834409,531.652912314808,530.912436193053,493.53481639388,531.080765256342,531.856605076665,526.07539333761,515.095992167972,519.751344080654,528.84076907118,532.043303612262,530.408380053393,530.264454333102,485.632246231316,476.133038898858,476.21355316251,487.768410218944,507.492196272183,515.126863286963,500.07505960035,485.049443045424,475.32423030403,476.534942528396,488.83601640917,508.813088455027,451.890642097172,443.821099710462,481.297047701792,473.055084673644,528.762025407321,450.797920513106,532.436944843674,506.239561118394,489.393823753306,476.732985029618,531.801829048097,530.117907265297,520.933383139725,506.966944721512,490.344445679572,529.327606174407,532.010610734518,530.202660114222,531.89427208747,527.438812377108,516.396101836046,501.34267426203,559.30065235784,571.506752921268,475.368707442268,554.440118389478,555.212405645039,530.463229271499,557.93631605232,566.531355609943,516.183027582313,531.846887946104,530.994590098218,515.952209833826,582.607230424848,564.026365670408,531.419334820228,531.861571113404,530.640029604819,531.907154949439,533.251868616801,529.63344510706,567.884521754034,582.309407471451,584.13676366881,563.149279190199,519.178467691518,473.536750978916,531.024395953357,470.302050463587,569.365865624427,583.320810633802,561.839003967716,518.327623555669,474.614351128867,444.980244037248,465.961380786744,526.169664342706,514.551072185913,498.565654009755,483.202005716431,473.290749320823,547.250593630027,577.361034008664,579.119450812511,544.736613423424,533.331415824702,573.830956024013,581.746424217481,558.286804787125,516.11536782541,474.412485249448,477.924858214385,490.699271293964,506.679576980543,521.542460293241,529.621427307619,532.182610567336,525.909193032683,557.253602958659,582.725453305952,573.368021639006,537.0674050375,490.566202131314,455.531281732448,443.277441298403,455.121551552711,480.376272110678,503.783831632569,548.675425140708,578.662070086079,579.632008835108,545.676061310901,530.64500242513,517.291209312543,475.368302659016,524.864224729717,497.392860458679,466.876889591774,446.041650018688,446.62124645796,470.092493668784,512.677492717039,556.523376686084,582.437357129134,574.166463955661,531.413587511427,482.102868844191,496.918960227986,486.359319360139,532.149756895861,529.987022913198,521.10859987617,507.279870669277,491.618480300885,479.294708008141,474.764592152121,480.550419153293,496.9904367149,517.992445169523,518.202213083925,528.381106113764,487.476947164656,502.742496851697,517.6735064371,528.041719632637,532.446180530434,530.366240944309,464.83429665984,501.859407980076,578.754000173879,579.864325824537,531.084590142778,573.798051627671,582.961749799258,558.330680662571,447.484728086362,445.299408813927,464.370669303914,494.445016359509,444.464709012624,445.061840232313,466.570090503704,448.981742396964,444.008195160674,464.081728441852,578.972645689923,579.92854405239,543.984697470192,487.986265591056,531.844027535234,530.227846581038,566.393113889498,564.297853397053,522.25135689053,533.631038087265,575.23932985077,530.495041718221,530.852644338846,532.232674170093,530.271253507021,531.966762242834,528.218614382318,487.741781429293,475.388606540407,518.916637660295,566.443895998304,530.624155018718,532.420623081484,532.21811471992,531.132860454711,531.158212162256,514.390764058276,525.452756205825,531.404756795955,531.563585853538,581.226298401589,578.22041063145,530.441773827047,573.525672683427,583.158884214236,530.357713842922,482.868930777177,527.971916714082,531.645072477009,549.042142305852,578.42874990303,579.291967697514,541.716482939775,443.956662303751,483.694058001817,498.557500052444,514.242969276444,526.113424711776,532.164609693749,531.103208083542,521.730375034773,532.036354178213,518.034320823364,532.158165879981,530.13619904492,531.901814712315,530.232923153384,532.049097798561,529.825092848891,521.557198822504,508.600074817735,530.847055907485,574.479753637175,582.635281872104,578.360890066852,580.528669803348,545.398348788775,444.837391024409,445.791022507577,471.578483528058,511.633391858467,555.745676639428,582.098495778182,574.49554887286,542.210473490959,577.54324619423,579.919094936692,554.485028782681,511.292898507572,471.998786716137,445.761731204827,443.861868337011,515.807380723177,484.665864395356,456.841646945663,443.108869331443,523.291879263849,531.032112072217,531.830533926189,531.047948718649,513.589167038065,496.587361429863,482.518144037498,526.562275639919,531.691479183965,531.143680310204,538.156198934909,483.826147481603,475.313444161346,477.5596629583,530.314641759979,538.46949999104,537.736123535192,537.614561337516,537.754385003175,537.743239051461,536.56761394029,538.280974624457,537.58488005269,538.112018972393,537.453129086348,537.081610187512,537.727747697713,537.511638965558,536.974095067959,537.623303944478,537.898970149501,540.773872163445,475.491655957978,475.455233337353,484.296503450871,499.362352405142,478.459802056407,566.214443895509,583.344497991397,566.924623684716,443.826756214997,485.328041641996,514.088804929891,476.551475256157,464.527271268955,483.203448055027,474.454611265568,476.577145204718,488.267499023751,488.039680906171,458.707037631871,444.064127067626,444.120924848064,449.707312574089,473.963394785989,505.540362951307,530.327955006569,532.192045169346,527.855847400171,517.970767122477,475.746505565108,475.639481854735,486.45902397262,504.987580719183,443.597347078211,449.827209926517,473.466930265169,581.659760652135,572.770134423248,499.130258812586,515.23687522574,526.572870553626,531.476104824906,531.221063425342,565.571918460929,583.60345333549,566.765644587103,500.745203668648,482.92212115016,475.195884756445,477.07395052529,531.730852625592,530.970397001803,523.721384359314,510.416652156301,494.746272415229,528.623980014864,583.781499711863,565.828471803363,516.345005177112,571.149241916381,489.304246015323,537.353257751849,455.748323212733,443.076924622239,576.882968254384,581.850306576452,522.416573252183,530.517055760462,508.973233754306,468.455669921734,465.948105755078,478.111155597749,523.4985614842,530.536041519028,531.631669038554,516.72621426937,531.277003277232,579.688710513544,552.555211923036,515.72140750455,564.511341398228,524.327653387465,512.296766401201,480.273346918735,494.127894960771,530.380070041978,557.723115840448,515.776957708848,472.427477956348,447.065153052296,446.081076787225,451.038610196268,480.750098271498,527.212045344391,566.29011584152,583.367137343572,566.10051983938,516.656917342347,531.835252531934,572.494401941787,582.547188725627,517.900313648688,473.850397896685,579.879630749825,544.808372945219,502.906840250191,486.351264661242,516.269096739354,583.705177885381,547.575857699519,533.452304358075,531.211517798493,531.547420069895,548.035785513866,583.232735920635,527.660927489776,531.939195332608,533.00290479239,540.067746075255,558.053110002332,530.963911325945,512.340734143613,530.247256711506,545.88137201399,580.218891131171,577.394039750842,546.90622166748,499.088449688932,460.225587062767,442.253994468917,515.775349890241,566.433988960093,583.71382477026,526.696264927644,531.917549556424,472.017149797283,492.133900942431,479.296390105995,472.920335103681,480.492120787029,453.833103936073,443.802187908718,457.181278397405,583.10681718296,556.260289206909,445.127923887029,447.430441499871,557.119047823253,581.489928165751,573.900416740041,531.254227931771,500.920738489942,444.806761218513,448.248267283259,470.065889064627,510.611697139701,524.014250564999,530.834748717774,531.849933169471,515.988286134082,566.147799920494,583.794662232549,544.265785303789,564.535974059496,584.220184563318,567.602669220741,516.798974296845,532.16348962636,528.417423388395,517.818755822785,475.1351015032,484.726412032497,502.988838949576,524.015317528099,532.265772425971,471.453584363127,511.859637380361,547.373781851458,445.286967129318,447.836532388529,469.822579609722,502.060597464287,579.287768161339,548.554371622653,505.618236886983,448.883778839601,563.25073170883,557.116820536078,583.434027703547,572.584230372308,447.175742292409,510.306327133269,528.221867650712,532.210897321088,531.159531750918,575.423909303158,556.330934383046,555.904827122626,582.429026076871,497.897681907902,459.094121080826,441.635033702301,548.619444062391,530.497706839582,583.509678148353,511.262626792412,523.988655402133,530.738649682235,531.609746939913,531.946578049636,575.920901899679,583.589069432892,527.851436897392,526.706776951203,516.33749686903,531.571432757083,574.265571066904,581.623651889246,555.903847757944,515.666530294972,572.106725541923,581.257965973243,531.074355920881,583.271455311708,531.23047503818,509.036931622474,583.350305544561,525.706961408662,525.128944663362,530.394252158602,489.402195792593,501.497239784546,490.957602740213,529.673114389675,505.547703471059,535.206150473433,535.783667169549,478.834413836894,515.581795158694,448.227057225479,475.108988294689,506.550139065768,468.575311225553,444.54966187495,531.143758904927,524.626956095698,484.208405668779,581.804772786623,530.401938116037,484.056636367667,535.559720651176,535.424868551527,537.202776310802,503.38120891601,475.459378618762,524.025869600685,526.148920777612,537.2143730295,509.218765862433,448.126739870368,503.631094872874,448.227086914483,481.954655585675,525.11596702793,516.98816688261,489.626296905257,523.572014399811,504.958995043287,482.715560043739,477.489038500269,527.118809446478,531.794616292045,475.558446083478,556.586530588858,480.900089679878,537.868771778955,445.940072095633,509.490857269467,507.431179868075,530.584462184731,444.385348984196,457.230798886621,538.788017985435,443.891028745756,517.986123583744,537.328533278363,530.289212401438,534.187888809798,482.912417101289,496.709655182567,524.70764287023,479.874416008723,495.143706187713,501.094480396654,507.177334429182,535.554826391176,526.004262180924,519.905758014727,496.558171355837,494.563750169646,518.229871368606,464.094184959498,482.830678074395,479.545254760331,486.075906251153,510.287956381002,471.243574864257,536.953831445736,476.948377095446,494.79658390348,502.167003837899,481.963199224264,475.224235315534,513.060011256533,507.038156256357,481.856692635101,513.563925477459,537.528948600852,582.500019072424,535.203981494191,494.495844946337,537.494852720382,443.218861964771,537.314590622079,514.926689626585,500.956731557791,528.135424557253,447.478581953312,475.568395531517,512.026953965555,578.062148484357,461.336444018927,449.634287310396,530.88879704434,536.733191249136,529.07021318454,474.568011247698,526.646240957921,568.436649046194,570.121590346827,483.073669830755,523.681505469436,530.999516680426,512.732374658679,497.342732921908,508.446929823301,529.603552981195,510.897694836344,448.921042463373,498.418614256107,573.982542809616,482.967314632815,494.463829738312,490.903361190589,448.944555637992,531.50741221599,531.988140366748,521.402916748293,537.821951000344,517.885435371824,507.519479561802,515.928867836281,455.494767378333,493.343554811507,534.374151359988,443.528118247913,535.857985202206,531.103929482333,501.748149203477,492.250737062983,475.02777140225,582.608287101142,536.528919377702,475.27949391692,509.437503971995,443.456751052317,530.001070941117,534.635926845475,538.264927615752,525.123035159501,454.384205014205,537.846852479399,492.567488924743,468.888087963987,523.738492964312,531.029413330313,522.118092220137,475.801949356975,505.878477026574,535.109127658688,520.933557533223,477.652864202728,496.108472903753,445.305743605458,474.984546335598,489.084133850639,534.814617669139,500.373032008476,479.974966729308,446.544862986691,525.59695230429,478.264883816248,474.496972625061,488.126049422359,499.516190772289,475.918005320246,480.372777977598,534.967245260781,534.600068816064,500.248819522455,446.198467708443,538.183782288109,515.309960996991,475.870436667979,525.490485451866,512.317484724789,525.944752645092,446.491496300498,484.769142089995,443.798219424578,490.497372326978,446.798310847816,534.176913280978,513.502258498226,524.462102512836,537.011518078367,514.316227959322,510.337562784887,532.142747488315,526.873289433597,480.870348334965,469.856480545742,530.542996445685,468.279544246011,455.423008447365,527.664114837419,454.55553493604,481.904108710285,537.267030352003,575.702230016585,531.019527584325,512.664618445253,447.076624628371,518.283666204026,511.882911664129,515.572375572018,487.90049451726,496.215974447596,583.673398884928,475.097659613449,568.532244403748,513.017760173875,489.419971214663,517.038904040731,512.762159466973,482.311553576898,451.757225827835,460.497700816033,512.650623635004,453.554092780162,530.263204467397,574.135581358276,488.102534459411,449.579138531714,452.981882955711,476.704152462246,514.815571526329,538.445356700257,522.402645915532,531.884727378917,535.314063744395,460.599096905429,516.581405022381,502.434064825211,525.39324759119,478.945675470491,443.998004283521,499.522141452433,531.699479237666,446.72777840579,475.342663106101,490.970609240467,577.361565141362,514.715235852308,496.808024015465,462.115966215787,476.933426008119,497.513525853059,526.422213085783,528.265624528829,535.545308638773,530.873946378886,482.236592465372,520.632676792627,443.781082399206,531.222987216181,526.809477603033,494.231525805339,534.278067104685,494.552046360731,538.289086206834,479.340607598223,446.670926180054,443.716354496294,492.115274865647,536.351281002807,482.900414099774,525.342342690016,525.783228877585,524.566873925544,534.584532483994,493.41210631208,524.216774549089,443.377225299258,493.39731149731,454.945367691102,494.505367437248,511.346058371265,444.160272632555,534.637594566238,526.003370407705,534.22659196637,454.582769403632,487.257204707344,524.824573953666,480.912271550903,509.116015456335,493.437384685372,537.604652458606,456.030597915224,463.167890407648,474.647522448494,471.251542845362,475.348878804134,524.093740761119,536.819956637011,525.193567178366,477.464983398005,531.862645869242,493.529582913537,484.028925903193,565.999267949663,464.356353845571,569.434635909408,534.863902138853,475.902238086636,518.05747761391,499.165270883368,537.341313137706,517.55371020261,526.990781410759,500.684795800382,474.333740366357,531.694578721683,574.839030339445,491.208712750819,537.049929054713,458.363032672201,470.50479922021,480.820893703379,519.649686400615,479.839354556816,583.476981466396,518.316714489869,583.727376471244,537.497289986767,474.765825856796,483.038669751142,476.337011667299,458.591601034395,444.033899444652,476.284705097058,513.321319876696,573.226429183817,522.712167569193,452.900820049169,452.585919351948,537.265096821627,476.419754475601,490.670616968063,509.710615506849,525.594695771133,517.7712602203,448.80579631832,535.285889372378,506.094631028995,473.520675308264,455.393012344523,532.202500068342,456.704677915942,486.392147263724,500.875034182576,580.727826270301,529.791916331261,444.123009440517,523.871063036029,475.566708392838,532.24261318271,480.613749329286,538.671891723714,446.712272026136,525.107015089798,490.178157675732,475.8399359483,480.972898931847,531.891155877587,475.447060495178,525.883466607729,535.147735080353,556.796910059316,532.182214442727,506.43394623547,464.271563499393,505.088170758464,539.407041085362,524.25339142575,443.039793529338,497.441737865219,474.585303808458,534.658380330848,524.663063422384,458.969780108014,447.041075919207,464.486667530149,495.711892389381,530.80664081654,531.216425545128,498.36793052592,535.653676435025,508.30653763968,475.714637955168,520.503460537283,505.89064132334,531.249267889742,492.202252545768,524.658204357194,486.572156469606,500.644340855509,534.49021369476,481.349644626123,489.952796340314,492.765077225179,531.530126880095,525.120259346563,450.1349355342,535.361441769142,497.598665662658,498.721375729675,537.774612792311,534.921632231985,530.352440856078,529.740947873362,526.362620419815,535.456239792859,489.607042452682,500.96139874752,576.89820169018,449.943581374189,489.63245473656,506.549314416188,444.562438467955,537.246336883314,505.946061300028,583.131718294836,457.972554101843,584.225017423187,518.989683291873,487.282533444507,487.846303577169,499.010492453486,501.95841023583,488.355903468956,525.245131820553,519.339022339529,525.038054415799,573.882454793122,535.309118649941,526.116012498926,452.566465609746,499.871525498219,523.935139153349,484.33530815089,519.860556467319,454.777348808698,534.835305381428,518.734650888268,448.471237219089,531.696778044516,508.342352049614,524.88731741577,478.192074266491,582.001685019908,537.743826525148,538.241120568189,484.206408561202,481.079844033696,532.258124035727,476.517705232999,503.105867854256,540.42825313156,537.793137411061,507.978736192297,475.869170704807,513.278453217608,480.133770374083,474.884636987151,482.692707705093,507.789877743938,523.901835463615,537.898819403428,507.573050935355,539.19436827017,534.831859059982,507.988239022631,521.446003064038,535.401624665334,520.764117252575,520.039331646683,470.804433638695,450.055755464599,484.368467857453,505.424001771132,538.863056089339,524.715113303438,512.369006676904,532.634899759865,475.826340623436,479.105828053769,518.669667318355,486.205736881235,471.167184366193,538.068188878699,525.490959491252,472.095199271218,519.614680444218,506.061502266878,445.817333045514,530.37083746853,475.709084764112,483.270474761508,492.547704739102,534.735565558908,526.089271882971,529.814465459939,522.224627112343,500.864689285024,497.987382002044,448.70089350332,524.514597191911,526.222334611763,510.166198668121,519.548970218542,477.352175933817,577.541533085365,475.057597335074,473.935759497727,530.447872159159,527.249238050984,488.178988086084,534.578437652043,582.817883099166,475.685195758231,520.157309656635,464.196438048011,519.574344252276,530.796363715257,535.203176878741,530.585382776386,525.778501007821,483.907662959261,580.325241910386,500.276228147306,482.08349651178,498.629369194367,534.087616992484,530.646604348645,538.162422562008,566.954925179338,570.848924392857,446.736798211093,522.292434668761,499.28520711617,455.983026088608,534.534790966859,530.665994566577,534.733918400228,531.700111511575,544.162584901142,480.292700101932,581.110130362183,518.470297488575,519.463913747286,524.462226942534,519.37036943619,496.500808135633,534.153414769389,489.124761178324,531.45396351334,476.535306822777,482.512794368787,515.714217225404,444.853248851021,476.475426333708,512.832000879069,459.794282658617,449.026899815722,531.263366658395,519.147942538844,479.902587133353,523.86506092774,480.205603897267,534.857729390442,459.712320459037,538.217970235265,512.414158591636,538.413088289734,518.170864930858,454.605016802972,508.864881725985,478.612376339675,518.838376230649,508.380805814699,523.728349118194,479.434758101962,481.331123595509,531.64578496915,535.699150455509,477.478009452806,471.446928270838,443.24038098519,513.648665241554,448.100276533798,450.56526449863,538.677617591897,538.33636338354,529.896348873317,478.802700258071,506.16951313213,517.423285377996,484.023324010642,505.972482208244,507.396085725229,513.430123143942,531.491856768708,531.136431830036,526.125232094157,485.946639408707,522.699793500825,490.218567187108,476.193346704765,505.17436734564,462.295998176136,538.1651984186,479.392461475378,482.217446854,486.845145512591,499.105551804855,499.198684934601,493.302196182604,519.825629285294,535.160513235804,476.36165746796,500.575154977124,538.413679787664,445.002119883478,538.36107717429,506.616743404104,490.934191132639,444.226401770794,519.671470654492,445.062463869946,535.177687603782,530.023913195742,474.853304006809,521.828252737886,569.886737451258,483.926633145507,569.282433530503,523.737444992163,535.121604155821,534.416405320323,506.010866428915,499.511740442541,529.873802473759,535.298908469334,445.12584844904,488.634749755404,480.942354284631,445.317982167493,526.381116139784,537.195904500035,525.490412395513,516.520920810846,442.93966246371,516.203789478807,499.55492808987,537.217141421925,445.81653989217,531.921541660202,485.827503796698,537.864174312957,477.096724571772,500.322994386708,525.120217068982,538.347407386431,537.666026033746,525.479969131448,518.178694787429,461.284311510311,536.980277501191,486.951897495418,529.30612733989,477.430713869167,513.038211337607,535.966084284563,527.123349720953,475.676858775192,482.678683015191,443.511795560378,467.674112580497,537.555778035521,490.663510904664,451.709199597874,519.944873442354,488.557785361131,475.75089608616,477.923439061965,534.71366006004,470.841129561774,514.145216800901,491.931605641265,534.986476269991,536.892305556469,491.15285520487,552.941946659838,519.669597555721,519.343859014851,531.542183355213,444.015867027841,480.639904197998,485.94334813938,443.665745648635,536.962989600493,519.144137890959,530.530288658884,447.732512105959,477.161333589732,521.024148541887,538.238671804749,565.348926901322,501.148853233509,531.179528239421,477.625440719649,479.872522747704,525.083909032567,449.413049719016,525.451345093737,519.716098786651,444.015120969249,509.799186170522,505.040251765694,525.743773279076,493.600320486154,583.868954929878,483.313088376635,568.537065796023,484.919479459424,508.528422144496,505.723368624311,504.272209278153,461.828178899484,534.396374122079,494.060951559721,474.878855201831,445.685736854134,497.343115621822,474.933676527787,521.167345358922,515.462229146235,531.534922942812,469.65982162664,517.067350653532,488.083950451826,530.15812613167,488.826591922641,475.430618047771,577.503345981031,503.53409072486,454.44180231765,491.006423226128,531.656981852491,534.705305138825,471.435921933103,528.39259164847,514.269945110216,474.524551867308,500.813600276531,536.791715580437,556.096684764475,482.9779460897,443.756175057077,486.536776091936,526.78981060449,499.147880875943,451.735963372025,530.748267728432,530.254555331843,530.150495735338,487.477443859898,530.437059907666,499.434832812372,499.692337190748,442.999680643002,537.009574629638,531.417710173161,530.101883008988,449.236338311315,514.789257242006,485.361123001596,522.851010455161,538.337332139669,538.576166836226,473.906372919043,476.069422015182,462.857833987457,475.008343779748,463.192412302805,516.690159984875,537.867379786562,518.170672468128,454.602899191053,480.33375911308,532.696713443921,500.595081708422,456.79133356981,519.95290043829,530.58815765631,478.417986857123,524.792239129125,493.313853350743,538.471059390175,507.549627480355,451.972426000215,526.837856917311,574.371235844051,538.07271611148,466.164810225339,461.621826677445,581.437805872358,525.707733934874,583.315028747408,525.784513980342,538.527027176025,474.861535351504,461.375897952376,479.189841645688,524.374127514261,484.933445563618,537.886477156861,529.335992419344,488.758901465389,461.411313641942,483.789182236188,478.845711702743,533.167301237288,517.919842935968,518.259464129806,518.556810890225,444.96804983762,512.171518019279,449.763436082854,532.07792701543,491.429137042576,582.074271706901,533.855697220989,447.623963051453,530.132778471004,474.502996677741,477.67098990928,443.900033473444,517.792155398174,485.25583954233,534.610115248592,531.854539706814,530.529853224294,531.073611016806,535.449788876508,513.759782666068,468.073076037167,497.13812603874,530.790633794833,539.014309974289,536.926363622573,474.392864000955,517.488032143051,530.372877738513,469.012184361455,535.551010011052,475.153855847546,535.095535294697,500.312287063229,453.443450670148,535.45332531899,504.555005538127,539.48468016011,515.116658359277,503.495926949543,499.271110315846,510.064411703827,443.950437248386,492.295798168553,469.935300492959,530.525706303901,499.581787342903,488.017010446007,515.771340530857,531.005984977834,474.678817176615,456.019863937697,486.861040233567,506.745895507829,534.27786721903,530.493222277972,525.680469947604,523.143914057138,509.664022646652,535.253949174288,495.253407991724,494.338605554564,577.014419036297,485.096704944015,516.413815600288,445.939891452225,479.410222016435,530.485245603973,583.646429129453,468.213243773252,444.634470658435,493.741999590948,510.66503649424,525.165442610501,526.320334608586,518.60505448017,582.353212034123,519.136358982767,513.554392571585,567.099284515827,530.605281263356,520.97711298495,463.110492699629,490.841620192185,537.522948643656,525.938863412222,454.88393504861,517.329965451965,517.877817587375,581.645420961013,537.322609599144,498.626035000265,517.296341053323,485.157476743944,532.307429107063,478.813454724436,509.820538672762,502.976818584894,538.5526987647,516.703292842848,474.938801448031,515.226081633998,470.898304504826,474.839234141105,498.527654534198,530.853083098544,537.407460521418,517.118821361224,527.088821626676,475.731558756561,534.54612796544,514.60738073469,488.409606867476,470.725256782659,537.776236318244,535.140205888255,496.740914768224,515.14461724848,476.420339710513,513.264352031311,509.052037659055,531.544017561119,516.285543500331,488.790290590229,538.473603861563,448.382106467888,480.950635778703,450.801217887473,525.396324123582,499.305282693573,534.608301719566,487.765610987545,501.254303185434,531.312009748276,519.996033496635,534.019809953494,491.58507798867,516.866464750326,500.632629258785,525.69999149548,578.760470496783,483.63902013213,475.070358593672,450.557345822593,486.444234453306,517.790729704365,517.258078676373,559.868757302922,534.880274729447,524.730337593398,526.214525897016,486.520779341279,471.945301835778,536.809156527214,537.164371945579,566.640531934904,519.066380376481,522.717870206611,508.666917325953,524.479982216691,530.814999237995,528.947813771077,470.825301718345,580.15909514397,471.1974721786,513.872804806258,538.52889644314,503.013907776149,537.178566615264,496.320484479267,465.326900151464,515.455873137336,453.196905637261,455.980723800223,516.156265923509,530.825347758883,451.510625550642,538.524507678434,519.728829557118,538.532517795752,443.676822337529,476.19966514417,498.928471040051,523.754025413963,524.118834730395,477.1356799014,486.196643055767,535.508134604028,537.779397136714,542.295182656964,462.60322076703,464.992954110107,557.668584196737,519.849801468438,520.097329258069,452.982861306567,446.417525697495,537.309333124805,452.002252635077,478.314930834829,476.078490679327,508.91242406258,514.060450754661,519.749481186426,525.387317450097,534.908595329213,535.009251440179,575.360301725008,536.815063471506,499.55506066753,482.481001242263,493.234176202431,496.070372018519,485.565824072,565.735927708426,583.196600965501,531.324554960243,574.107566456643,480.686688768703,527.636592972695,474.535029010333,515.352694608993,450.872521891741,534.707280168962,530.697796014049,477.095357523075,489.872071503864,530.176303085632,531.527187978116,443.850244789744,513.154335663586,471.462994500786,443.339026774119,537.496370718268,531.095454853622,535.248680646008,524.459054886372,444.568950255519,516.685978214458,506.247175226745,538.538496148387,450.777025345761,526.250760395529,531.602849549347,582.973449154132,534.651976218322,490.514761891788,451.558081838653,537.548370378874,510.558141783807,473.20628713244,534.603498738313,533.373736076759,530.946649964658,480.241010695178,519.631909948353,470.504261001224,443.515548894504,507.39027031377,500.973960080171,459.30461998244,513.373939725133,498.92492079493,478.553044654531,480.295528951999,481.214576093641,530.692534731142,501.249216522652,537.733674173423,537.788636184577,479.125963650439,578.127920921891,513.220550423585,535.42533860433,477.610203834422,443.37902700312,538.339512064685,444.20138936583,475.457686781734,530.000314240305,479.596757390675,566.537606261356,491.343192379793,533.235195409051,535.252577992615,489.506827944836,525.181648879711,535.121359938101,445.441732791261,526.974613765989,478.663630239586,517.694825784674,525.301315503013,527.398239208012,484.961554240528,493.426429809081,525.734024804557,499.694603917029,448.193233699238,494.161271754806,471.900131531027,537.027650519329,501.425193140592,443.508582614168,474.408877885978,526.529251626157,478.657258128001,516.829249386717,487.730906891056,479.61424984554,532.113656564226,443.153116229931,511.029770834078,496.892610969348,535.422426149609,538.23580290332,537.643278041669,543.162751019789,530.789345029207,538.714034330291,507.21068278855,537.767760259915,556.786237078871,444.039742331248,444.769863181486,481.783403896382,532.164441781479,506.090847258737,534.304824753314,534.195682954892,534.84641416608,504.827625003752,525.084162873208,445.346496496558,536.48737242483,490.55230618276,473.183406007895,455.092117530681,476.070010315269,471.884536361964,508.929967450033,509.333616780734,462.187858778806,483.814446338725,507.100085321707,476.852864935997,565.45666324035,443.828366395477,530.386737448752,487.651845679881,477.374081571982,475.145279366907,574.183354601639,489.155354617737,531.348437186613,582.668622868993,535.079252234089,454.289173553606,476.812234449863,454.514829816046,524.674785017103,573.8911330086,533.891230668247,482.835314566245,503.870951249023,525.146023040708,509.858221667367,518.758659090032,490.890829952038,445.984228659339,476.354427420154,534.66563948048,475.767610434042,530.361779311568,497.038462557105,534.413624710823,520.152470931324,477.443048078707,482.206244349674,503.041804175867,521.541349472513,535.084615809623,534.511655121854,534.404743341663,475.131333313121,509.331263537545,525.725744141141,534.241318450038,531.822647781675,485.928659028629,537.267834227627,494.339926710668,462.929896951691,510.673432064718,530.912700181979,530.47486053807,494.694265678207,447.270297100403,461.183088054178,462.705102332336,479.875753224259,474.984015169312,566.961793208848,464.265576776502,513.274023976755,524.303872635119,531.003609182053,501.892424233779,507.817617449155,520.236378248369,582.636789556692,517.361278201476,525.480321085956,580.982487490172,509.95211279438,567.594347229052,535.13403993022,571.885470922848,464.446653157083,520.861001253096,538.516986051209,531.394505974201,462.97507294609,525.004493189133,509.31399838603,535.496644066498,534.710950701643,508.455076594606,482.278140067369,529.751784063171,538.659609107333,524.696887360125,515.715494386308,535.234112055669,538.4157887727,524.915247089589,537.28356367435,492.836579761936,530.738507401899,493.892903137557,474.286589352877,529.16085882151,500.498807499151,534.874612340994,567.163863459746,548.942948187507,444.301453690642,471.237232775221,445.63562933223,530.58204602953,474.945200687659,476.50536626895,566.899385808754,536.818152940235,502.651968476602,483.552798095334,507.67996479637,490.124592917926,476.093803408972,510.929424684768,524.774108253791,537.438094877547,517.897275183586,526.167421311894,461.950554875619,499.265187174433,531.183237777676,536.336846822761,534.748500382501,570.778539555371,517.097848870485,525.21260649055,516.695872119846,524.791192305786,545.813512518737,462.143041853621,520.940875812727,508.856089545711,538.264970710945,499.891942182066,536.173975853314,515.622299212858,525.367316786296,528.22758837464,446.176852847389,525.835033208138,509.104056767753,523.544221411288,530.235060631636,492.274050256836,521.383880428493,455.528914472379,513.779130658711,444.195599896973,459.715948140168,491.038527887387,525.828098290011,517.97335720788,530.7296356559,455.681272357895,510.697216827089,494.186249549083,524.131147934268,506.127501710675,555.340346786138,527.813837492503,445.029899900496,475.984969387581,444.612269956723,508.989931798968,500.631835902687,492.955016570404,530.525058580551,518.986488079188,443.887162548105,538.255162994894,535.020726504223,530.912344990917,535.306137321321,448.410911742166,516.685874748131,475.075674802235,518.714235641311,531.65502322849,482.243355847899,575.967219082382,529.67899329648,532.085800769293,536.049916695331,535.234231811056,525.277187583075,464.157871698338,525.383598244159,469.466407471138,525.391743788653,510.684148146037,537.780152525688,469.647289590192,581.650834434162,505.995526737042,535.181199682486,474.818640855703,483.55045223893,568.442707764487,537.518886565157,530.467727405478,530.745932127041,480.127482171316,530.457195524015,539.849950103438,505.810373117416,475.094675499128,583.203358365818,504.006889224814,566.473269285941,530.322009415411,538.179733735716,508.689195807307,531.801910794446,489.914894509597,535.575998794532,492.922783193616,457.080532696294,532.359325517799,445.644267766797,506.36331199811,537.718201348246,534.93847502731,538.573105085375,531.217278093154,554.973088178456,537.639963277316,512.692685970503,474.861114856148,536.954980084719,519.874017251995,502.979965176394,552.700907648036,582.68349913234,443.353615023321,537.98349379485,534.558582813358,480.301645500586,514.738278449074,495.211648236257,535.491754092955,531.171823706606,479.477339638366,483.322521683544,535.241497992244,494.212342856042,525.899944164158,530.972598302899,500.869112107594,524.747607080023,531.833245506246,485.751222535059,534.675387453656,532.160076784424,474.938578877926,537.409475986466,513.96763842896,524.33215286995,470.008844672812,507.130087327426,520.319743347507,525.828416008965,488.940801840406,537.434616654687,465.61265451488,477.379175742768,536.861657672892,538.245262759388,475.067860433953,514.129068133022,512.951324567133,480.916730155306,525.462910780624,565.746811723509,473.191882808537,519.340226284929,535.16575915598,525.160539052874,508.81551106614,577.926972708109,526.535913214711,493.184938654219,507.495191444682,525.302224522777,478.830911420818,581.328053210014,500.443238047157,570.346802067433,521.501617750399,537.402547200272,535.40626630497,532.117699608612,531.001653093766,499.712766247977,531.399483168231,486.374427623875,523.574074112038,520.077053141458,531.311692833025,515.245829114402,530.608035264334,489.434970560889,535.070648482301,531.066125867661,538.252697933991,498.093345727892,524.626690019083,484.421171528155,475.284879428579,445.727300966375,537.519471437323,534.534024927033,495.152739933689,537.873461961782,508.952558614274,497.438002689285,478.432616700129,480.227533395521,535.116746754391,534.685076466831,538.109406648408,510.153569924444,505.145855594753,577.788556272338,524.872104561977,545.976462733958,531.422567781197,570.349843588819,525.18232730438,519.245636502396,517.301627564697,529.037770675527,571.536185303572,515.150500348402,509.101264300199,515.634470250582,530.352882383192,474.233505908738,530.879823405261,516.33761119651,476.146246016862,505.698143323318,525.988564088994,531.181789520242,509.306682212348,490.639814849877,505.387214669588,519.206314710017,451.148914038261,489.122672195804,529.842494283796,515.553898187123,516.129937332209,534.563626580814,527.565828751253,448.79396704192,575.541666352364,518.53348309928,507.173947398434,525.340027723299,508.687324683372,453.942406859685,516.269787485788,509.48296579645,577.271587287019,490.20892198396,519.947206057042,531.906971787008,530.350568892684,517.27575819815,519.02029223708,518.230107574879,461.639402862439,499.440144375128,534.513016192074,531.204485768341,580.939688722676,553.112237862592,538.239526569949,509.586050690605,534.982832301286,526.878838424242,534.422216205073,513.102096836337,499.02085831407,516.177438600676,534.982841215833,499.256557892485,531.56629935764,478.094426091131,538.73654797721,455.618399052994,538.348675498343,518.853446078861,524.665305350827,486.404756952363,531.089972814978,538.962615085474,481.550755762712,580.787605546788,507.585857608736,495.822891110106,525.846529272678,482.450872603967,529.989105976665,531.473450996675,447.043714467237,530.089028237862,496.901085644635,538.171364877607,513.631120539687,462.160313356178,515.991586183427,530.851735292228,461.015172485568,457.151945061527,480.4037948808,537.893672444481,475.993012713089,467.076997517685,480.352781253479,566.542625187158,524.544862657149,518.069210100718,531.866298624292,534.872370033284,488.023289355104,521.900058702477,489.617569124786,556.233383295253,514.213762952794,481.961394006516,445.321255898257,580.916241214768,556.091085380784,493.28513672398,449.644283954344,477.126285974309,493.965401545069,506.87519470736,443.997168537892,520.457817398347,574.423817780367,484.922740071935,498.182446358114,505.550325499775,510.520528482702,443.969917822367,505.569931795625,493.482865335249,447.269883139731,467.275635244057,468.016190410368,502.963865937751,531.226500391874,458.945542660904,476.371190418845,456.767303503964,475.128476943961,479.604884748957,494.967490823492,495.621297924766,555.362991878858,502.329349024293,488.521899471502,452.868686436092,443.33705666898,523.580793924316,527.623462210549,443.110939192083,476.059831422639,445.586147280823,525.784456949713,480.284078010855,511.392981384219,500.720014642742,462.135823008912,497.66883633193,518.969312231753,479.765773167754,458.159846455328,493.486389119241,443.96987470463,474.756844867196,450.982185873401,508.977968771964,486.548682544046,450.547286368244,479.042951193969,494.558527921313,523.431268008405,488.409117162248,508.077320387346,493.528925527449,474.775114714714,463.7118036731,503.731234317708,474.192114235289,491.299572709146,515.464281802796,530.784141263862,474.754103907147,510.959293734105,482.377672234761,491.280756975404,451.465173711011,535.872419715091,486.941356333986,500.764873121033,463.582341055069,475.467857766267,476.8841205025,449.769175487984,506.833550401671,556.345327024809,495.977189015643,450.020438094385,444.852729387404,478.550434914387,529.492625420414,500.396954760386,480.347022811691,477.456202111044,488.180950763302,581.88097238827,469.894815487156,501.43601135311,507.829540100701,457.3145942725,473.626926204442,552.848770844282,458.98939834989,478.985945784642,501.293992438831,508.100563389929,544.639879825434,497.391674775969,455.704233422864,512.628068994888,526.53591802957,513.716575053036,481.574318520193,476.194354864754,525.808959146803,506.669013431786,501.820748896065,502.755076033017,529.143899753974,483.048345529014,469.891173366353,491.627041456386,474.901214128636,496.388241558077,498.143235477178,451.063890346959,499.135471797526,495.573721345368,535.096619177938,446.153348017849,503.581381450554,498.014431495788,486.484166712049,486.798053920462,509.59683608713,514.67686333994,460.899020827295,505.641931608421,504.025655859127,450.631694934072,444.220235191894,500.071573209459,475.366421203847,479.746327652891,556.64690144514,519.331130015613,548.553139237871,509.258065307065,515.058117996624,537.403620303336,450.580080381568,443.96037775402,515.376220668782,502.14575273188,492.044284335154,494.06742245578,505.242213339484,482.613526800388,579.143419437378,488.496936178349,512.239018211777,463.156262751337,456.47761327985,455.502465021206,579.861765334237,506.564852545205,490.211436412981,490.777732552352,493.414482634355,476.612227250336,496.768746213485,461.550066130431,499.051023509347,520.034551585129,475.959177828493,444.400611901833,525.867488432844,556.816885131384,501.943060675477,484.503147733614,502.291025226395,580.845949292218,507.729742208575,508.981260815231,474.866978085211,446.655455115484,496.734882811488,513.559852795922,453.317056814774,534.840316906902,500.370998519579,503.244790739,467.701248292552,498.370903257087,483.388670162753,500.472655546841,531.992327217026,499.648339098388,518.404154289731,482.19130289987,449.721573835576,474.707635549528,483.34382534128,542.53906491458,517.730183012935,532.082823109339,523.799406138455,461.774502129272,523.463712952118,452.172519142193,491.585619675806,513.500344111002,467.741788700988,504.383756070555,475.103712362331,444.196792105495,498.807688204461,510.170881832326,476.102249153561,513.903304322261,499.153723656135,475.133110483938,461.974897857623,456.138373610353,444.298357028085,444.580028629203,491.938042921124,511.430600431031,520.588122546256,488.569809290568,501.505898976002,513.268305804165,521.516699767758,475.685076018055,448.123904548293,532.061319411045,497.164658221002,504.877289977246,512.486304131251,492.289765495824,495.031224258619,445.527986759648,476.359265248559,528.49783417644,453.264596876424,496.211726585339,493.269843422611,446.51490562001,508.426654604916,535.25344807537,511.533949791646,512.185456724142,469.65597925407,491.201113673071,458.825077967693,494.524844171094,462.137846531272,530.770033005556,444.844870322134,480.807675716503,509.80854481526,487.622920936575,528.616671538628,543.971141058504,535.537906341673,500.4268770108,452.155225476475,534.973306687979,490.392583550393,493.515569635054,576.698406800193,477.177840094579,503.982530739967,509.080947482564,477.02689538927,454.997810779547,443.93951364929,471.337539737393,483.391299071013,480.18275593517,529.405702440036,484.282707242968,506.474497300205,473.328648242307,483.609421257063,475.425661559227,483.549656047315,492.426832727511,499.382053782006,504.926205412734,474.869666463941,517.948845216631,490.121693100885,497.335484199152,509.44427994207,490.451202637772,474.815578614507,475.619460028973,542.755275824063,528.391326972227,537.726321234788,493.47393722893,507.623246543926,512.869067000401,516.813943722034,541.561765412518,446.898499759009,525.937489413055,507.542825086515,469.178164287259,489.40783708229,470.340934718074,542.515056045642,520.68843239819,489.486829598705,443.321492494423,482.786754780827,492.324934018064,499.745561499956,548.705360073889,518.975305921458,478.237077336114,500.053615127298,448.463917203279,504.860784944941,497.550582069148,445.328274720066,477.680677923444,509.161978481617,510.81029408198,479.900334215505,455.301557087173,480.721583947804,443.696758867261,483.475296629428,452.350893048674,511.838279485483,463.406661884209,507.53091668218,555.679572662518,462.541745986335,475.201935232505,522.41854259647,486.004156078605,488.149449389746,506.744341181797,507.827658276094,502.259297243969,488.527381652084,529.163049790093,475.080857012417,489.647459012364,507.943885367938,492.998322537906,475.992584342547,536.635064080256,448.664402837874,538.77047135687,502.645363568227,477.877784769845,511.215070676719,494.22383447717,554.424394078117,445.144031610003,449.819640845603,534.466618766813,474.993108664706,496.994539241941,447.605539740174,512.893574910447,494.106933543567,559.932786019551,478.749750661857,475.709766178304,448.131254823972,451.171703585452,454.006497538414,511.378481167381,460.518609644528,483.307830921228,480.003435037781,444.560531803573,449.983986203261,475.506109811136,477.632252870856,493.537606988538,474.33455414168,479.759730093669,542.020688179047,474.705198106568,520.191010174265,490.355568893344,507.141332813063,475.174931582151,443.613568129476,496.817910811018,484.302904580332,493.491284192757,529.931089674649,549.895184365505,497.599135416041,489.557109907651,481.335424470454,506.841249779334,444.024016428366,576.594770791633,501.975254549271,479.278213868511,475.529087117254,513.267781907565,469.49639337462,531.082053416442,474.588668605811,487.507891841551,523.091951276827,444.927248881571,471.434643387729,502.985431238856,474.577106592954,490.40706800333,510.024097277682,581.74869234198,521.549889259908,514.681939658611,511.935526982064,525.194197741565,506.408630849129,510.03916485736,452.324013050652,560.836901211253,496.137648857496,489.74384610481,444.212874372533,530.1367686309,507.075505618578,480.772269153763,560.689638476559,576.296733611474,459.835154878348,480.677684620235,474.864019912871,532.321547842801,479.230193014965,498.686373295066,475.901916533112,519.828907300853,477.906277028307,451.344256830905,491.778795574444,444.174927352545,485.65213278837,530.656718990153,581.853334213808,482.181883375318,520.71960384715,517.606991435104,474.74686197258,469.929742012815,447.377224177064,483.306107484136,489.627590278132,475.808379113264,483.744815532241,495.787082636339,452.126515580118,504.309450043838,474.224772630717,510.826625851524,517.517806981389,478.84960599682,507.384332598417,459.158062583531,444.403677783535,479.068263531114,512.102258745655,480.879478158773,481.98570721386,479.77183116975,478.345608849336,532.038630024217,478.062502027067,537.101116346522,547.815372905595,532.10362269772,450.861998900583,520.01045799051,496.836656591303,495.936391965771,478.546291708641,443.359524369999,448.638536877764,519.018498623334,474.311702617536,476.194133149145,469.201741458163,448.270016153842,481.658312594108,494.549080554809,500.765319911863,449.535089064325,479.342258530672,442.984590237376,452.975123296257,483.954302298731,474.415461494428,495.020289132964,522.63671586201,520.507825092827,443.253566101284,487.09844459624,487.47750219387,474.988798084244,481.606070665311,482.828507408361,488.816416110566,486.868436682508,481.30487482316,485.932895559703,529.177978208035,529.974492931922,495.444367542782,581.446450547027,519.347541828289,582.910917504798,474.158102159774,483.100209606848,504.715444261102,449.130248388358,502.303846754672,508.375497143536,474.405342530871,448.121371628387,445.904250553761,523.066659949851,444.889186148986,442.801385188531,492.757829833202,461.381762887026,474.651306998585,464.970906237371,485.039015796994,524.428766851406,444.082892125248,485.08103615238,511.528373279797,477.455499953506,462.665896544541,506.882693538051,502.656760519849,445.036271800999,581.622255873523,488.649176057449,514.347942767692,474.445882395327,513.491747466805,477.176189463769,510.685617605861,474.374299343925,486.204003811168,445.219665668544,468.031503356548,529.492342686213,510.806044112368,492.528317802109,526.37838616591,500.945738684001,506.270419773749,464.918203755409,454.980069177175,487.726870443726,579.041531707134,443.657099650756,525.369657802319,455.029364489161,580.636908310085,474.546783521973,474.039481023042,461.128617647508,517.999716842341,479.565374973336,451.723693347087,476.558170643313,480.052183384516,476.163072945051,515.000849995631,476.34278360269,474.905316548273,561.455564685335,475.319969740529,480.049869231435,471.947479682202,460.689187222247,487.120045781648,475.928733761026,461.326298130921,443.518077130961,472.40784597233,487.522968207214,474.820377329966,483.086880910611,446.618472975831,549.308675419881,469.288347455352,497.32532948524,477.039261713357,477.756669976524,452.65032135747,444.29276092043,443.547441447411,483.490893166182,499.958936585592,518.293299874191,482.862443704528,495.872871773951,467.222967245121,522.98010599877,544.562780901703,483.165326443921,478.840867908838,476.754070276799,502.08143088603,464.530609595852,487.847831132999,478.114385196969,482.64427424194,458.525995548623,497.825368956857,446.019896816492,475.197556340242,477.607280064504,480.259649959589,475.502920215643,468.128061973315,445.777347559484,479.358965163026,477.670328262872,485.913249847694,470.885129729488,494.90721617023,523.928450044931,488.235919788872,475.335212509723,479.595544180062,442.826096337064,490.22846569119,456.720670275974,506.607779717868,488.097819859015,474.769764109796,486.740405903217,529.442535961451,489.925719438836,509.451694688043,476.187673788134,559.967643931356,474.579863205928,476.619938906917,520.427895166127,474.795226957105,468.859895124538,459.736611265635,493.963682716452,485.292919847197,524.513450696342,526.686201919314,477.097873808223,474.398807597307,498.238118739765,475.689973576126,503.246037451381,487.183381375547,521.051118687426,508.090836493944,470.609073292624,445.485686624863,494.48089366714,479.196760172819,552.926930071161,476.413239678725,451.446239137808,558.742662958941,520.13642922753,474.808179290825,474.848706358162,459.785987786459,492.680387373735,504.518305108447,526.17146661745,484.827179852563,447.007607845593,482.865851510659,487.526312145027,487.944925667791,476.226955822065,511.77517377292,486.010830915009,448.616442370277,481.195883957275,481.544280459314,477.739140184217,480.56066647029,484.636464061018,443.390016109853,575.428720332759,447.433284296962,540.252152008501,443.689849762867,484.796273443271,482.665928950744,468.309359268798,484.666926578888,508.135258274357,453.873983539425,469.672483750934,520.358711908416,485.184821956984,443.074905987759,446.09717759479,525.81669818107,446.30216473854,510.96832606815,462.188549854925,477.556496776074,502.315375773071,487.108902473211,468.128411230358,475.344018506932,512.050937492255,496.44149567463,479.655512072682,447.290762899961,537.38675532399,480.577433568683,486.24539450506,476.397550749906,479.452476760621,445.439056307579,490.036094255093,554.967488386388,461.794605952753,476.471337634943,488.488546319727,497.731716882091,475.92721755371,446.380028668708,459.448797232051,537.379659097869,520.321827744565,483.192673203667,481.140208997115,477.123257570035,446.784279001793,501.376380203654,537.669694434979,498.262982782642,463.74262217515,488.785490751625,543.501178230607,474.686732410904,458.015101552059,444.192707043371,498.94297090434,546.644707332974,487.679209258938,498.31231104012,454.757962620738,512.165166431612,444.497092839886,446.963704140051,499.140911840087,501.210941811029,558.888370398697,445.480372429405,527.216381549941,493.547299220852,500.856068698919,513.773454214809,468.260837660559,480.448740299547,476.288819403707,480.44020788523,479.557687940844,496.759311473262,482.486493898148,490.968758908354,479.604977125512,487.666094628304,444.392774411458,494.890057357212,508.665153832366,458.299475780678,443.550065957922,482.330032930548,511.055742919018,476.754844545074,471.615279569926,492.254734621083,509.597278714434,487.221317308258,463.753853928014,452.694678369732,457.778679029443,473.84519934639,477.26980483056,475.78815042407,447.858154134018,481.82314000622,463.84545640844,498.93548119583,483.494271326593,478.656705337047,481.466625703247,459.801812398685,516.88257924105,442.776984683438,495.272265062926,479.693566161333,491.100614471371,480.635209980077,484.819074410687,482.982748814394,477.374622439169,512.759660359643,511.426264754465,530.972428677595,530.686993836217],"Archive1201_field2":[524.124207636352,523.815773898805,500,500,523.957716884058,524.088969989542,523.844193651041,524.15870281148,523.645891447507,524.113715365204,523.995426308203,523.933342441832,524.601169818783,524.343005988907,524.151251747427,524.352846810663,524.094288903074,524.003427533422,524.327898699803,523.97861774404,524.190418917739,524.149729527077,524.116856792197,523.98543538439,524.07974753111,523.929586649489,524.11608020337,524.057550765198,523.741687245316,523.488156007075,524.127509815297,524.260735310156,524.286731195873,524.075510775585,524.092388143723,523.99230395688,523.962297231612,523.947981124226,523.923910848326,524.102659490243,524.140168468853,524.138029632847,523.934346072529,523.792848352702,524.162764486753,523.858667790271,524.073154273472,524.083403754886,523.989246362358,524.027173011485,524.222782796049,524.169041330067,524.021248607891,523.792617753965,524.343990450358,524.274045597429,524.454685431669,524.061527526351,524.33249187141,524.342811382596,524.055172320285,524.240163267958,524.231152222744,524.384131201018,524.38019029072,523.949954416206,523.87923852214,524.060974597758,524.013414940135,523.947810506803,533.741256218486,544.859211716768,556.655764118876,566.236951964033,575.776472882373,579.146985224869,580.901558787897,577.974958873891,569.075374231132,558.65959447498,543.744812164629,525.640468508679,507.370760779647,487.56953339175,470.427226702218,450.986298677608,439.184825035462,425.713802972172,419.223487880627,415.594653382104,417.285751470771,424.365834572453,433.415050799465,448.745276268561,465.491067657378,483.563724613225,505.315194965605,523.995834111594,542.956462762131,560.501254501315,572.350046970983,584.03614593366,586.93278918918,588.935281385485,583.834772212685,574.694455251576,562.431663877587,543.04381363066,525.791722073805,503.772373894546,482.135323293295,462.567210242704,442.544460487528,429.19275026916,414.79176268233,409.70583611146,406.602672354349,408.21347136069,417.357726588797,428.79238135151,444.497442234849,465.672706379716,486.067684021242,508.462070846783,531.280164846827,552.462751761828,569.707175586611,583.847618781057,592.638084843188,599.090745398359,597.323327888118,591.357074267464,582.415785854682,567.559377403409,546.550999027447,526.088311143266,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,524.221619180077,544.288451900153,567.369607350989,581.174467236982,593.102116324082,601.900625312895,598.523108770675,595.293910325701,583.361248388494,571.359582268417,552.602002431299,531.06319367121,508.127458422792,485.132024175076,463.212920894073,444.22747379813,426.018943005696,416.088974173079,406.218280707708,405.930740015597,406.574841580431,416.370089496847,427.238360441626,443.542499893908,462.650476971,483.229902126295,503.576697777655,527.742230592461,543.402517391509,563.846976398253,575.887123920114,584.209885879547,590.979270250846,587.565584260858,585.143517864711,573.381893764575,561.123136024342,541.62516153992,525.922944631597,502.26481410672,483.501014797376,464.672392048448,446.194582120581,432.51407196492,422.823729338992,416.851169128864,415.052508017765,419.770230669273,427.192846159286,437.065835364305,454.435566335436,470.037830085946,489.311926767805,507.831691852469,526.698656297447,542.821534351555,557.284445831491,568.901099503372,576.990138666185,579.059187742328,579.842944455656,574.261150686106,566.935785082418,556.60075049999,545.203453974792,534.193417947995,568.796359017627,538.709976532693,571.280443448878,578.520877426794,555.683236545998,531.58593099095,563.1003899518,580.196351842669,564.027862323405,472.814963803994,529.288832097838,570.230958368642,578.824389685782,556.118857355354,531.093564968866,539.490582922459,570.468973215002,577.605717536401,553.603253470279,502.72135813809,548.985236167387,591.943963676255,589.632203637473,551.233486855677,484.155265777309,429.577275240131,409.161242799587,439.152798164565,497.094779452522,558.825109106592,592.358423867364,592.317298943497,549.722834723164,455.733355654034,513.604929067025,570.145455588409,593.953123776476,581.84498265741,529.503046106887,549.369618280171,594.83489482756,594.276353977897,548.839100139975,485.482451952413,432.67827051329,408.636368067438,421.088493238341,477.402867564204,541.254992301446,585.631223900112,592.972478750028,559.83157751116,515.465665885634,558.439041925058,594.549267147769,587.484999473649,550.219276355766,487.753589907301,435.501931434437,448.559927204666,504.626416819489,566.085017791314,593.053346251186,584.508581227204,535.698138270502,547.283029310415,575.261536213129,575.944914307648,544.014599612181,489.18589032698,440.754250086585,416.474582150258,415.991768120307,428.840734153878,471.004324555557,525.137606083051,568.142556482231,581.116694877095,562.413456737624,530.861720052503,449.341450176312,501.972038520714,550.812356234691,576.675152988364,573.604128347028,546.526952495022,471.681931578812,426.807755135357,415.648202651021,439.269326919309,487.050068675261,539.890326897185,575.428325086416,578.911695781288,553.936464617498,530.894658779556,562.106278970943,526.775449152474,472.8785864139,429.650553477214,417.920846963932,436.68485415871,530.512005301112,561.686450178269,579.839586527439,567.852912573961,526.674054232229,475.222559781508,429.839462278004,416.306804097529,426.621144783021,461.141067912131,515.818876734792,560.447113480522,578.986906378702,567.315597667818,538.287041355373,548.724612717216,591.307179847195,592.196212650586,553.056785420748,495.861885067325,436.9545239221,408.659487068355,419.480478376702,463.28904062651,509.802214864409,451.509328990729,413.567874805553,409.109165299443,449.798415491148,510.703521344264,566.079389564193,595.186362827271,584.065675558737,532.640008441688,408.523114088893,417.699435982967,464.822448369543,529.987407308785,579.805486071367,593.681269351843,572.113258644549,518.522717639104,555.973318186077,596.667910109341,587.504389036306,552.329959634893,491.269570875977,439.829094571067,407.005887539014,577.996336410397,529.559440934648,474.106031694804,424.32805032035,408.113789484451,431.729530165484,489.268244460122,554.498588957511,592.482026740589,590.554038809553,547.325885785273,533.488260551901,580.122828376084,599.772624581888,569.903646660301,510.273045241863,449.670113309573,412.52274226877,414.935310460019,449.362257836404,506.689126596235,559.60821048952,420.869575038695,466.903149033428,532.501910557927,577.867667329204,603.137663836353,575.423553102514,520.515216989227,561.676640676303,594.177716832192,585.162034237243,544.860727220467,480.062133958877,427.373733352809,530.972169112045,561.957164652557,580.067023552091,566.692791575459,521.036936251751,470.629660672961,427.893640994514,418.324893921969,442.179722504178,492.59084266927,548.618096623367,506.948371550575,450.25934516783,421.43363134056,423.25410992488,458.143353218305,509.068558858166,557.914761498226,580.546747316465,568.816178699655,538.774763786465,547.224107135772,575.219905545875,576.521720685599,541.691055117889,488.572244670409,439.094562143395,417.23094057527,430.50351082075,440.770196420083,414.54269784837,426.851012447412,468.022039883823,523.256152558184,566.946866409835,579.844393195674,562.076408733787,530.630661977618,575.016944225196,528.553487736853,470.319755939388,428.825250504627,420.603246800004,443.486054697716,494.13829470766,546.386727198158,577.397019700813,574.7860079961,547.24412128865,538.214014967907,568.64296010872,579.892501985511,559.082439799512,511.659010257094,458.240493803804,421.975405965573,418.529819402075,451.943385517936,500.33546538831,555.770649502109,587.343503732715,586.80097448058,587.729645251438,585.403285917186,587.303213312099,589.36643417859,587.004295410884,588.730451704631,589.460245812269,588.995427669198,587.765894891731,588.614491570802,588.352783353957,586.154096756862,588.592684174251,586.621173696843,588.250473956121,438.256086031817,417.873826043038,429.851713896674,474.665981937903,525.05147497872,566.987426070264,579.530049231771,562.301406179891,530.778456937779,555.229091431629,577.900914923301,572.344390915361,535.552286754692,483.734705779133,435.44004904963,415.948067375417,431.1741635913,530.80313363127,581.146748201048,600.502346271884,570.97485071634,516.754090369483,457.464610382721,412.0620752269,411.483107609727,443.522067870295,498.322511103881,554.851912444545,522.023415562482,464.245636550054,420.086899498338,412.564499052901,433.990115145842,486.341737357309,547.2075181708,589.043165514266,597.419026565575,556.257019964807,520.154284591088,572.101484469872,598.882692844082,576.261045499343,530.505041758695,467.743247491343,421.408294633237,409.531704438337,430.73574966278,489.731604571737,433.32169119201,476.591538692813,539.569342709297,588.653935357915,593.821179043114,564.373565524126,469.365084896434,424.780867183145,415.359276098436,440.840799695766,486.380893781857,538.844754663081,574.06902491818,577.993770055211,554.270516752791,530.269228167973,561.766899851243,580.233255018993,570.086187470974,531.319027529633,474.420976419748,426.093086744442,401.733547360836,425.571478623184,475.741526817106,537.322976852564,581.824781507449,596.566402880353,570.638890934181,516.830327736241,565.350710290863,592.515719037303,588.874727732849,542.41698636669,478.129992734754,428.752314390351,407.392257847867,428.653917000427,478.202568511614,538.946042338622,569.144314377134,580.319077385609,558.561224944531,509.081628818893,457.721108494268,419.967072698763,422.693628991407,452.916446940707,509.938614228615,452.095026049484,417.915705377967,421.454169396835,452.871852067751,505.937953390216,554.619776920916,578.481438300934,573.263074891844,545.464384713912,538.205547168791,569.028210625738,580.828996635303,558.124292478056,508.24282146169,457.115149907918,421.721607035576,421.207944458457,453.331849343961,509.391329780974,484.794160253919,435.329887015182,533.781361470486,570.901545741471,578.890887753212,554.677492724061,433.133033636312,407.665134237725,422.590447100922,468.418879639428,529.008838931979,578.796503814534,599.178148205114,571.6873042429,520.50196548532,561.770426802961,596.638366494197,589.568352083281,545.649491979127,490.009390437694,433.263664459095,407.992357072027,420.517560122524,487.154101861872,439.008618334838,415.641537135528,428.384657880467,472.477086804262,527.510384356217,566.02897760114,579.832710337923,562.151159766283,530.870873349835,553.369700428586,578.150440197247,575.118747380664,541.510637569391,491.987342275431,444.334608194029,417.295641842046,425.15715818475,462.094656099189,517.645580003573,549.420154041534,588.19731034436,593.203920960462,555.861289193182,495.615335054517,437.871845209155,411.694836469167,418.843566885245,406.008007461568,424.297549522557,477.586529973995,539.232774389824,587.002115366865,596.389297001091,565.234241307897,520.451999248725,572.499131298439,591.314758972475,576.283423207714,530.496313594252,465.090996798828,417.885963275341,408.474454785037,440.601242821562,493.922338539004,551.504477487964,584.175313563129,563.879764734262,507.936745976322,449.500320705929,409.829289257154,415.895589650709,449.739102484531,511.978082520037,567.897221955365,595.712469464188,587.862007645523,534.74781447822,569.687914127083,520.47572415474,467.527766752836,424.334660716383,415.627962523034,440.711423867495,488.978420718921,540.625043624399,574.907668868047,578.168665023747,553.520895634385,575.704166947795,534.099948838892,477.873495740957,433.865742894592,416.454456808169,433.2023607461,477.57449235066,530.766890045831,569.773687175925,581.073703288307,561.652225841799,530.470905403413,527.683139296423,468.998390579347,418.472037228065,403.975771372568,432.081362649438,484.347652220555,548.461095850664,584.048024341138,595.297029846074,563.300162505251,516.654567798927,577.495275983801,597.677598901505,582.717989380986,524.765038096352,462.045311539815,418.621838904505,408.942631774555,441.031411404555,498.256504761602,552.832391446674,581.749384817009,540.552147048788,483.820134692132,436.825553641849,416.857155662834,431.238125314677,479.225409897787,533.274508141654,572.042622988719,578.456760433972,555.491104098736,444.336272903977,495.6560480852,550.181349669932,584.652231546788,560.847470647136,594.169804983894,591.123249794392,576.461520355758,535.677930195553,473.74720938952,425.786537480344,408.265160105146,430.659273919323,481.137027872339,543.365911387982,468.188806183268,424.134460618281,408.297143928718,433.620622684639,487.271614576683,547.268612391956,589.018448236556,597.189021042899,560.598511629635,521.199215644333,568.88467988518,597.189920760701,581.2999501371,523.207117971433,456.08018693896,415.889944642704,412.456598948032,442.409698316623,523.52109600067,557.810392068027,600.751738484622,586.014138071592,540.948476677297,542.742612862875,572.767587684885,544.730793487264,559.000339860515,592.970260435731,594.436888798481,557.418561285621,501.680164135328,550.772912009432,578.542118632105,546.245280599107,412.755327908711,449.413624510994,505.363931712262,563.511593427801,594.320828600007,586.514186806948,546.399996520318,538.084549653969,479.850228988452,430.760705442845,406.989865500417,424.188677878685,472.029685028502,531.530522082629,581.911269698802,595.700398165545,568.837942302948,517.511075193325,546.111150582358,415.506739334995,442.07612567931,490.893331408933,489.752244347919,434.772467271706,408.87357776139,416.716498164681,530.87742510389,561.635028197312,579.864645911083,566.058605417155,527.039572254438,474.407689264901,431.320056527085,453.255931854147,509.045436990948,555.313074820726,579.159735444523,569.537026595951,538.964589950737,545.822130469037,573.631407005069,579.968650783846,553.87881686917,581.348978893771,565.533051902581,531.587155228602,560.897723791935,595.114364535342,591.057727035062,549.539217172801,534.073316039839,586.88551195871,550.460922602762,546.968489161892,575.963260952824,532.063206305233,587.346197579655,545.488831551291,532.085006306267,575.713033018738,597.106290140289,568.563664518853,517.328725036968,546.436546297331,590.049690467582,591.694706450217,574.615944195019,577.833590776966,553.86330727175,531.441678009434,563.729446733201,580.257053395541,563.770852937633,519.989153872727,464.44635015764,555.57754559626,578.768748549524,571.808471365642,534.403629263804,510.780162980811,563.374655643524,594.562923106337,458.785880359818,510.594245402312,555.321714194221,579.30748134174,572.927222203376,545.155932758032,420.840707960179,419.405092907882,452.329105202742,504.057816330045,550.01381556897,577.932262324221,573.909811138481,545.565940116254,539.256723074973,570.88894235861,579.070559720439,555.511832366179,505.583019517152,454.128369351764,418.735910901683,538.793637330952,569.813991195833,580.259333748628,555.821444156304,506.949641542198,453.71578574597,441.481125903121,417.161823632513,428.672762619635,472.633963177697,530.619994371575,554.275896868913,578.214139330412,574.202721130302,537.589302653461,484.909345312432,438.149656747517,415.898716135786,428.612694105847,473.262994949222,529.56272590782,554.119070113465,577.074094897225,574.103381654879,538.86934980109,487.507110029253,438.1206687948,417.872223425602,430.088056110392,474.143111357537,525.817589724638,564.134883124181,512.726685717565,455.560666039174,421.135372039207,420.996654764211,453.574489316772,507.671634175876,556.993449051552,579.553780153549,568.400763843558,539.238428676255,530.526909011303,562.260590134126,580.161025085057,568.537846756099,527.571551541756,476.601039009841,430.98618262277,415.477353775818,555.191248756183,577.515535859138,571.321117878955,533.048263553291,479.830475006699,436.389155118611,414.240827106475,426.17708284396,416.479864192616,444.188245506137,493.393435301711,546.351515897037,577.094550553975,574.871516906764,546.554892466643,458.089511484984,420.498608546215,421.444573379003,455.161957048449,507.488468170925,556.177451825355,579.542539078712,569.433725064162,538.502895113682,442.8950985608,413.882834033158,454.669373783575,512.098043563991,572.699343412236,596.88539500468,580.063322997148,528.581986875619,546.982597026473,574.606388088233,577.15355025268,546.082903273176,538.924518664162,569.459264278,508.254010569467,455.844787133118,538.788313943594,569.033999309107,578.825378677961,557.555776405658,509.929993763731,498.182027758562,551.171454551588,580.799855559256,571.293713482919,539.632746393366,547.38102405865,574.25453527955,576.30641448524,544.353159503756,489.494533950109,440.475103434664,534.914186132728,583.08189000251,597.142591074091,563.675182124371,555.931178451368,592.099443232659,586.944344253592,525.131186184595,568.203657745028,599.05677847421,586.485831464632,531.687580670225,546.158053162492,553.817474270211,578.0473866132,539.927391309663,547.423140410985,574.960383899127,576.736181465916,566.918836250085,579.53091691996,561.739502703789,531.010626899176,516.239968013211,574.620943605474,596.94776779177,540.794053618391,585.888138953159,548.89567468941,537.489838805955,531.844826999724,539.553607708834,584.13103343405,531.42807531454,534.079203257253,586.988965010348,597.043372835884,526.035938928486,543.543881040771,580.434905962506,562.76589091631,530.596029633152,564.281372689288,580.717155458504,563.887644111175,531.042842777396,556.663831282113,502.161381669885,560.331965978498,595.595924121015,589.919652245079,549.417592796141,530.859285514624,582.791410003601,598.089578338873,546.994008214674,588.271073608977,592.598687100698,547.229888582053,485.768563877757,564.202099494951,594.32985226229,586.308197013009,543.199295909878,531.804424226025,583.181802156145,599.029936936737,571.109382616711,478.574597848806,530.456658548132,568.038744519017,580.119336458296,561.10501945563,530.901019089737,554.691519373298,577.907187879579,573.009681434342,538.368542824696,555.622551134065,580.407260123149,569.674125507613,539.0669012371,530.775945839138,561.334907904477,579.964833873361,569.019851585898,528.106376329571,407.827157857829,421.629094243133,466.177124370625,528.282482031453,577.968671443335,597.911840868569,573.352654626096,515.557485681738,556.232201469324,593.619604294054,585.076567223584,542.569911147009,477.557785918439,425.079920883627,506.147477865246,565.107013682114,600.278001434473,580.615970343137,534.779370278218,547.716726490429,593.859698806011,593.528723417029,550.965172321635,488.939063194644,430.744926542071,408.132241127968,423.950021269866,406.269851414448,432.701046955574,491.942758626113,551.697061124019,594.702635272754,592.303166777635,545.067620716502,530.986206704229,579.456140946095,595.336268074915,568.170237877268,517.669065429082,456.879423601153,415.556030821597,438.034193965832,416.023085380863,429.780725754935,473.364270436808,525.055011783599,566.879525453774,580.298321865441,561.587644896522,530.957782473283,554.938105179216,578.099356358862,483.521216629802,436.032289089851,415.649338757943,521.77313791928,463.288555178233,420.118762364403,409.168711617999,556.827033169776,595.494619558517,588.10841893618,549.65692999331,436.763423577138,406.91456501539,419.176195544538,464.984932165285,530.642926852701,578.789923090825,595.276665651673,576.033055562628,514.695703759594,561.77977464801,592.318949557016,590.230790764312,542.311949559212,429.442007577457,480.14936071238,540.721036062088,579.969652489167,500.10041324947,444.115667206221,409.526916482043,419.627389902002,459.406493644252,559.236724815451,594.987473587745,590.729271270536,548.616710897797,485.580159607721,430.318327504278,407.13861966235,425.834592989415,471.933841140816,530.922616341498,449.918693865077,417.197115189494,420.790378386156,458.342920137148,510.735217323883,557.727688538195,579.111319241402,569.530497179541,538.16307127694,545.925203489596,574.233179744487,577.787680719369,546.097729426214,416.510896045031,425.045832623969,465.766015253514,521.826727935881,532.651934101842,582.597228560974,596.897784075767,571.638163895101,515.975930724481,451.476558917761,412.404403166419,408.214933515732,450.475795624802,508.692985598961,549.919235867298,494.152784601899,436.708116520052,409.913327400681,422.932896156054,465.119019878006,526.249886037447,578.887720477718,598.602499300466,574.70264798376,511.262012954303,562.057339945344,590.814723702707,586.656216244442,548.206171099994,490.815315130773,431.273219583927,408.463159454113,421.837381228456,467.894198062328,526.952833472363,571.8734685443,405.444623305791,426.968312946066,478.798583547535,590.689638133901,594.100304118487,560.607436002773,442.585184340489,490.507956129083,544.308270887632,577.709041537041,575.65710472658,538.854365615659,568.776902793695,579.677640734939,560.749889777679,515.394934561658,458.965583641741,423.085618548828,417.642149336891,443.371719661706,497.461957177642,551.058061163846,462.373037572686,425.562274369485,417.323978662419,448.216709178673,497.525084136831,546.890871570164,575.519664249573,574.544727420896,546.497757348044,549.091263613138,491.679009401736,436.407639354893,406.461632484529,417.618332222428,467.492055344306,565.983401082092,594.894730713334,585.903462677704,545.925484777778,484.439615198125,433.02810553424,408.635778621021,423.409621760896,472.284654592601,531.239618172809,408.272752738033,421.804863545135,472.202306102569,537.680989288594,587.572890884534,594.76337182701,559.119948842595,516.21582985991,575.797556502359,597.995576344237,575.574392190255,523.028663693692,465.514330969043,414.033176873812,405.886497052395,440.759811587529,506.792977171251,556.463444001963,579.798566466328,569.232921288822,538.688808948962,574.385121879707,496.585224838727,421.935584151567,420.386768196198,451.998471028796,504.994335737391,556.625379842456,580.181956448663,570.157592801801,546.557574452851,574.974477418805,577.653551518233,547.788265886797,494.809093191515,445.110215292692,415.603945994276,425.543783100203,502.791351645939,552.528285768988,573.31306365823,546.048323171431,429.129077563572,415.325244598115,439.013281684217,487.174905939929,539.151481451458,573.061836969824,554.370010267456,545.190981750369,588.332021116296,590.404672912808,552.238934517731,515.513060837877,574.669125189878,594.722235810734,582.551558973682,533.030420816861,473.327629998784,420.751109823984,406.453640698786,570.456564233545,602.408030263639,582.11800302651,568.118171467621,512.667119972973,561.629518126872,599.357925990089,478.479542013091,425.720754484428,570.213761718419,538.532473002832,547.30155738354,575.571842539178,575.230509494959,542.89859630923,487.231026124867,579.068417794647,569.931013653467,539.394933103392,546.21165531359,574.117669868152,578.5621846419,548.142589936063,496.017857827972,445.236975662098,417.155333206776,537.604616826377,479.311479687685,540.565101744786,588.947237523724,594.993185747512,563.12403085029,516.215386712765,575.865811509977,595.114501565493,515.617223352093,565.734599996098,591.217237029494,586.825808118878,594.43082869844,589.83307558386,546.906814834565,539.424793270823,563.807174983121,530.606171071445,579.653323618228,560.832243448436,530.823463052736,549.23017507706,559.985527566228,553.558683481746,576.883564920609,575.30408195281,518.729425275862,567.625292875636,513.576494022845,552.88285347593,593.99689587574,597.636924970391,565.839965119456,517.80807085617,577.55201102444,599.295179480989,549.951073818207,583.921894929129,591.835139670215,558.033502860495,495.637672470622,534.499973965401,584.821301140555,598.596717818457,565.443439037358,516.505518398379,531.354379981334,570.205691642731,579.987331093371,561.041341502656,531.020973949352,568.939528646523,582.837702561919,596.356504932146,572.498836798003,518.117050586672,599.56542520039,569.081134694196,512.827092452469,459.751399248171,519.992790788979,574.883002852351,559.972717093812,590.804796369584,533.150419845502,582.753535450314,591.926642885479,531.365684165421,580.038742387371,562.812880398328,517.73381117752,527.720245411647,568.126336594647,580.677203736647,561.135881083728,530.611956553359,575.968321813562,547.977963588079,539.761677208956,569.521168932873,487.266068793252,576.570041641087,547.850653495638,576.530219244883,575.277311369972,541.529655623211,521.400791498378,565.65848145976,579.246529549981,562.8615706334,531.088626461758,563.342717207692,593.055137483263,587.101228152184,534.694877852625,469.174810528986,419.446394626602,466.707895364891,528.811401415948,578.466696154606,595.938167731771,567.25726246198,522.591500319132,423.353959109709,533.543369470782,586.128248086064,598.018873765281,571.189190838622,513.604098279956,458.110228609894,416.428668736213,409.943940195586,515.826444823377,571.288640154052,588.209426790341,580.596404242693,536.310354518722,461.724726200226,528.49089357062,601.703231671421,575.242264251846,514.950342605335,422.086446088159,460.572862804246,513.075654828548,557.984374517678,579.854174507125,568.805263838384,538.601329328326,543.669205973361,490.554049411072,440.404667618422,545.94686700239,537.987785266182,568.397992077275,581.020316388288,461.332624834525,423.798589451716,418.18215828324,445.828233728958,538.737643907368,568.229963900926,531.005563267131,561.547468327413,593.41626251877,586.051416672506,538.831727297829,494.079958260757,439.423964486673,411.980847527952,422.845810240809,464.148349166303,525.02458165088,579.754223932044,600.076272865841,576.881221500823,518.533883748948,406.790493641498,427.202294621005,428.986373002284,408.177817551653,569.836452268743,523.554690538804,454.206131621014,549.084846496077,588.89483084965,593.127925115594,559.52239250777,500.649263421306,440.777285659013,410.461467128131,416.524632781442,417.400818044754,539.218147783076,569.1737762616,579.579608740642,580.347192869285,562.059542634827,531.183081080824,587.744352063537,566.119916424245,515.062929976064,457.651951934109,422.707921002814,420.92759488773,454.493890461407,507.615801077081,556.554856370134,579.411263864348,569.84579504771,538.735382115806,546.669229906881,574.179931030351,578.889520469804,548.866626532639,500.175085997703,448.091409385266,416.599198176866,425.542157569448,460.587472194834,517.450418220855,566.134767446485,588.297987234268,589.385360697796,588.447227266112,587.004247960928,588.271280442242,589.161061167782,588.473557428574,588.456621044257,589.379269576285,588.643853947509,590.437323499142,587.032140799617,589.258714686783,587.999805375022,587.671628810318,587.077675260718,588.506902998819,442.725103000894,513.186372063485,563.974529470048,528.689974553861,578.221484247595,598.248683825752,566.054287700247,416.547395207135,411.467112363797,441.872656736551,471.747838111153,424.521205868804,408.048695557597,431.806446987419,490.751973725741,551.250608446352,594.632222697551,594.077174069865,549.596834906572,458.185346305415,421.641004619126,418.515983224308,449.85073723481,500.863737529642,551.09685727144,577.944951287934,573.733819519876,546.256579495493,537.837280023491,461.134688123754,419.667382271743,407.163487901856,496.146537379412,490.526006228119,440.616285877406,418.003565679022,546.310843913983,574.595559038388,576.404015591264,418.48908074272,423.89472497111,469.745556161521,421.290583498952,484.548483535179,538.921663224336,574.277020867355,578.096107847587,554.127016404473,530.621942086909,591.521513994842,543.346128549929,529.986301616788,580.528417540362,596.565500860025,579.958136228665,602.936767917846,570.551343754273,514.340989897759,483.058062637098,534.760605856183,578.92921161984,558.42684117662,507.18671648169,455.061298445796,420.731672931004,419.136514170168,452.82513551123,570.042898318504,519.950536648895,463.529279930042,428.473829870841,416.982164839131,441.61356710181,530.917370633499,562.479048433319,580.544462345563,566.37241640861,525.049468055119,469.929063855313,430.519440199978,418.240593773365,441.31179804185,489.033700964594,544.592719560786,563.872284074445,514.702916539309,457.492389380787,415.892774797557,412.474964930702,442.552409313285,501.909017534116,561.905796855256,588.302242866753,545.917555567616,532.325155716347,592.7172641425,573.218122512897,527.430510088419,473.224220389292,427.252562002424,417.557586862745,442.025337841365,493.616059435143,545.991966884302,577.761757154768,575.386237591077,546.528107113272,538.948804459127,570.070605112331,580.627612306875,557.145040538881,420.061790650308,454.188496021812,507.917280878581,559.210394777123,468.558409856692,424.079718006332,410.222496523869,431.477285163282,483.395881873813,541.947397593699,569.680913203602,517.973145561235,459.466058723825,419.981519689405,411.263734730866,439.460594704667,493.62738146421,555.686929630931,596.453728647437,595.478233464594,544.231464247193,455.467483674158,414.990635546371,410.05489135327,443.363012947361,502.492511956317,558.996013527273,592.310733072635,593.369774937566,549.507687782922,534.469870390294,585.928959838516,598.884983279375,563.010887395597,506.195578333778,449.197680578322,515.021417749614,574.04141050194,593.700885920854,577.423760611431,569.607865052388,580.035894692146,573.244672397701,597.030028431183,584.42062511206,530.948867242171,531.589572219965,570.362398321692,580.106944479521,561.059716742626,530.355457881814,538.507161184542,568.756782065133,468.827282388492,579.162391166426,562.379390081316,493.88344145695,440.969004809506,518.001898312867,541.320837454852,597.032695514203,579.281711703881,531.961546167657,541.630060167757,588.046683060376,558.008954814142,503.328588572824,566.426182895174,603.339956392465,586.191536897157,578.363683928803,573.340471010919,545.194282591505,524.411435994694,576.216321402029,598.916595744581,580.188818144025,529.679482771049,470.062661268196,521.072585860354,564.433181073108,580.209906742355,416.50252043952,423.498585375197,462.834063052453,516.202898092221,561.343247594833,580.472521682289,568.787548807264,538.673575512892,415.522948478868,547.603848056916,574.94037560163,576.250811191278,545.92666768414,493.444384551056,444.128742008299,532.661070027809,575.406415523453,530.863510057927,562.145923826401,579.761457596831,566.927983888676,527.383563095072,471.392164985079,428.92900462946,415.724512180489,436.485768745421,485.749731099651,543.533154902115,552.84737434288,497.228241389227,445.425393558797,417.327432872186,428.545692555896,468.911594940801,522.201244261852,566.748292195599,579.840215643931,562.150237268403,549.012903232359,538.393109167273,568.661381496348,580.368144805278,560.357305875218,514.610915756083,462.629926193646,425.038781037856,530.947613854767,555.24781352779,579.672021713425,519.635623167471,431.807132745918,555.552679201938,573.227186333621,534.480928051119,555.867412361496,578.489380888602,572.106278015107,530.461247229916,477.204289540051,431.454511784142,569.534215518663,538.903368067369,545.635743683426,590.770104663853,595.499723671206,516.691672376133,572.45733307186,535.956017538183,476.379748053439,568.301680107322,515.525476685762,554.90259023473,579.682155073633,531.024347716361,580.737220336136,565.49244600428,531.541539713222,556.603287895225,572.50774599855,579.207654284233,596.741267275242,544.847336535711,559.531197251986,530.428873915051,531.04617788428,537.395952624027,574.075102059733,512.964853478085,532.276270035208,551.320812435505,595.680384890033,593.177410075127,557.625393111478,578.717929933521,555.300221538181,517.877852612777,571.693878304009,598.30029673097,581.956082312475,529.783439091389,548.90326829337,588.978574378765,591.690155599861,575.035907354431,597.498584467668,575.137189257666,588.159727953422,530.917278662143,470.71668118973,560.572552714029,576.48056841966,577.108954457435,553.802009890405,530.944915629979,562.02621609372,568.839415536382,521.111754211052,580.395615065213,449.216251363505,499.420556096326,549.57259420051,577.96982295137,574.555866492499,545.909781992977,514.388553974228,483.106159916134,540.908510998233,589.642936262307,593.082252978129,563.380222739106,515.543286242152,579.384098208587,595.510068382251,581.379092015642,526.014871000885,465.517163427793,414.849990236861,565.827232068726,596.692419878427,584.308580432092,407.588322477103,435.378477422911,410.64974966279,445.458627019951,511.835250780556,566.230974190283,596.806040652269,585.895060227,534.960845837308,428.211250067047,416.501932180792,573.368370313997,578.228248842495,554.132131494896,427.180601093036,416.568213019666,443.333325163931,493.142819433247,542.373071435595,576.497917751324,575.232934781368,547.010886433252,511.691546311274,460.343393118422,420.513155661637,418.287473696955,506.724646151035,446.920867099954,412.724777684294,566.670538669777,583.043033356923,427.037876560201,408.411316736795,430.166628837532,584.512634208872,595.060270522893,555.863708921786,514.643802493219,571.076769137585,594.083393085861,577.135179156408,529.504879807984,467.478278425163,420.466062125078,409.142703478639,433.360661785331,495.479701485782,552.184363851678,584.884676185566,429.540766616859,470.761142492327,524.074056949753,565.718845553058,579.698911271832,561.938348857134,530.188289964607,434.409252042908,477.596001019806,536.252964114652,537.575808267003,520.137877066915,573.073335670512,599.657589101535,577.638192047944,534.489303925898,471.169657538048,423.690872085381,406.657546659097,430.463383728842,483.722316030383,540.41544483263,579.96598003945,572.388761563153,521.252453482501,464.991011572289,422.142487012559,408.483305076689,439.445335036236,493.561191955663,555.0686969097,594.158732853303,589.718168331189,546.182101354697,474.4858149345,429.332476005568,421.873858170321,460.63040476562,514.05896618689,563.936026351991,510.615167298648,557.990471445332,578.928506203115,568.730176492668,538.849768210217,489.681204268106,552.705280021432,535.532295081246,521.174878035674,406.103700775104,430.39583432352,586.706208164441,593.012003782946,553.768372662125,530.979024078827,464.056066899163,519.225991365484,566.10872286013,578.76933223717,563.890993699686,531.048834783258,555.267315158701,536.131092342305,483.26750787258,416.387162524167,424.618716272183,465.576944151786,519.397075805517,555.132705510019,578.650820202272,571.960278846296,479.784592913055,433.485227433464,416.642371973666,538.715661537166,422.301944982335,515.680488337118,541.309583097823,519.09610746206,458.772951229655,416.839572752461,596.870396167802,516.483991966651,571.716175780544,441.126918885713,496.20441756185,556.727328962997,595.887929957274,589.249617555295,550.298913612446,531.270789803923,553.899846854841,577.197118549126,561.945501966635,530.607783891425,580.560993987447,562.41048270358,531.31224233736,554.440053196974,577.943498974682,570.809956579187,534.548540829476,483.756545143397,436.915851606301,423.522110265189,460.640988568505,513.738443311838,559.482777155751,520.313707269381,560.168707020651,497.964327900365,557.314583052173,587.109389570202,543.486863571718,529.090788157373,581.170471984152,587.088370392933,532.929220861732,556.080026851649,537.843475181405,557.31634252526,566.762788302504,589.884813365023,554.103899304447,558.861401273863,595.607312226567,587.859323160482,540.363387566332,481.132448866338,516.177323869911,577.161833001782,557.562901649775,562.782146903097,530.520503972968,544.215451921861,587.741352176182,561.394958530633,517.206066296318,573.982882015286,473.498857514191,539.344420537392,570.148302549777,541.835375812825,553.870940799943,575.199622619035,447.599038988951,579.740433205396,570.627919397219,546.722072194304,547.713305369371,499.502312285114,555.108335982879,519.990967277989,571.498103703445,598.672443310028,570.332898759745,512.535720045052,415.259255895619,409.001781690796,443.046975536371,505.171132933391,564.265258790414,594.992565910533,581.901537552232,532.659289667136,423.731999596485,417.910845388317,417.95321829122,447.627910610817,499.498965661768,548.098729451274,577.846022163603,575.043165572478,546.418229660637,530.695640919955,555.591687964346,578.383455085212,571.454062249516,558.507589184225,580.826308460091,569.177397861281,538.599371905818,548.451562583044,439.897086170085,487.130318594706,553.831848613152,516.101246776123,573.092908988302,598.551678261614,531.928169264187,518.271260152104,443.924595407781,501.811033091159,560.734113921423,546.259589258497,574.49850303339,578.18833839622,547.772604015116,496.093847194634,444.572913698688,419.014755949917,423.142833436523,463.534639002702,521.025152229319,535.964310133215,477.909223659804,431.42546698684,417.195415261434,436.630387843951,483.260506646667,536.434947560417,573.815770539324,578.128183520407,554.602897236969,423.5661278606,419.897966803866,451.758175176736,426.046900560303,415.695028810672,444.878268403996,577.370455717324,574.325758145277,546.607241760243,586.307307790508,554.280940025843,499.262586863842,445.409467616005,416.855983194001,424.509504079076,466.678226604706,522.251417930426,564.253071199373,579.912298569643,563.909832579634,530.749492072929,554.166316822583,587.153867939891,586.593272094934,587.238408692815,587.887066426926,589.52015464395,587.514108840677,590.698751942386,585.457813068576,585.841886149989,589.381596362288,587.961284299556,587.099733517533,588.931706635091,587.562419266489,586.60311877796,586.871829885891,589.023280795314,419.917205615514,448.408104787944,496.972751783911,548.520086456724,577.509119979166,573.68269613131,546.543557699128,452.098495065771,531.568570327036,411.464481330133,415.90044548219,452.444194830269,461.033956540136,416.613779106133,444.886857026533,417.923777088746,425.464073994531,560.097382691741,579.765124352256,567.965006627502,503.325091029207,564.303487033798,593.720108146793,588.4411187457,545.925926053912,533.09609832511,585.126690171208,599.79441572528,564.684543305242,511.073319729222,452.894027622463,411.636500318832,409.788664446082,454.2856734997,509.42896354836,554.668475330391,578.704303255453,573.367270196557,415.726812600041,432.911971684948,481.132035402766,477.4614950949,431.494987528866,418.006846671605,433.283487578214,478.542582751422,529.223102409634,567.882783813923,579.956165276663,560.616780281693,530.114794560551,480.562568121593,435.700475518274,415.475271512177,513.881948430281,417.342909972584,410.68489290226,442.689342610407,590.803113405397,590.006114678533,548.696805289601,527.853519571408,510.211517206501,573.558951854846,600.827169918874,464.175819337397,415.374476285564,407.15099184798,411.320202537415,409.455122894151,449.106492282164,512.799822625639,572.751232626112,596.030545223807,583.457667908209,534.203214263941,584.002339944532,546.716456636448,493.216358501022,443.726008559328,417.306835323065,428.201855531137,559.563973768047,506.720894997944,454.752822627421,421.731424350193,421.288285205378,451.544098012992,538.313679976006,569.016788807366,580.356340091706,558.289836294718,509.968734547232,534.720889665688,568.109146128708,518.025424845083,456.64287038509,558.100326280986,505.082957641623,447.37430085983,412.759119684673,411.469251766618,547.893028337958,530.544228475705,416.592025670871,425.502127762161,462.920863704582,432.748741256791,479.750115304317,532.941605445491,578.791520928813,555.126693042165,548.882456016062,565.628048040834,595.369888077418,588.357031365711,547.881110317064,576.893892279375,547.240484789082,575.147761113713,492.297868048205,539.224716582586,570.300640066068,579.720909444344,556.317836028283,569.505554623316,579.512644801188,560.93381515164,530.812481237459,530.612236965058,463.612234602251,426.102024350838,417.930053390073,448.518967776014,500.92829453495,558.17048867977,513.646314648274,458.605564463168,422.487064812727,417.347795491962,449.468888500689,502.593781874382,420.81878975556,406.391651475611,451.156409245535,418.704138524105,530.826359831436,424.01909894101,563.152121747503,535.641755634499,482.040241611437,434.715985280106,554.827774583327,578.026508692416,572.391045214394,537.593609078295,482.223782401986,579.769332226452,556.830383915352,530.463362674295,563.341727039851,580.959960870465,562.19020886878,521.240230911141,560.119209856404,584.083984635951,458.21623037121,560.580265991791,560.972808842302,530.908589924465,565.793144166734,573.703317620357,519.412209153654,537.415571153801,531.266903015408,513.371564227673,591.515154980423,569.219160066602,574.809776584112,546.586646076201,531.052844991771,547.687586119765,570.966263222764,533.994132686617,581.038807534776,595.537506592478,597.513062697453,575.434935550053,520.948682592324,454.038090415336,537.882272098246,448.666853208253,572.690236974313,595.130878060444,579.937834444304,522.259269040205,455.839246222442,414.964938477246,448.746340848214,580.878341522696,558.445738044781,512.108010848627,458.552812545268,422.811718324175,555.244920269607,591.391070988364,589.393593324971,549.23360413616,531.427614794086,585.661494368745,595.730480579576,571.937721497312,513.609135088937,416.768258501195,435.32748103299,484.887155989555,535.969090014976,573.790096624708,578.194553152883,554.715829551018,547.761218156932,561.480959662629,599.138248266436,587.824451037242,540.658496139225,479.464931647013,428.421043042337,408.674463250575,422.784841297423,481.419358749441,496.967264598159,555.533144435044,595.689634435038,589.663700215229,547.167798196064,531.077227846829,514.096404318804,452.980883869262,563.078746399338,511.37772583713,451.636534260033,415.558371109769,412.438426420316,448.436904210263,512.008521774061,570.28427541922,594.419821268616,580.50905962151,533.597703530893,453.263338404411,503.823229649877,464.156042538208,555.081906100014,578.050911966704,573.251768749849,538.152056310085,484.723086066344,438.520588309807,415.640812138534,429.923581112955,471.205994010717,526.135497544262,566.704949592294,579.510717713847,471.226859968601,523.399421880739,567.750922944801,580.535654486556,561.366250844092,530.797128912709,440.411612542535,495.331208073955,592.690328620062,594.633148917678,532.414382288539,580.500706037091,595.826196933618,572.761850443985,413.655571143588,409.896961224062,446.101924175911,501.926969209748,411.194069983285,408.097086178436,442.067159274834,415.550365465244,406.338919700613,441.563651534078,595.918385967322,587.572612802663,542.45907190368,475.814463085029,561.560343465192,530.785395360697,570.786824605401,578.200314852078,524.548236880372,532.036828818815,582.687682562317,580.271952148772,578.179346802764,555.661425561664,530.804869192015,562.527557365926,581.555680564848,469.150891370311,424.123918767304,568.045876891245,574.005941434116,532.989842426441,575.843542982022,547.86607231272,539.799142363589,538.492152848116,553.079392110339,578.658654178851,573.571690844697,545.523452642,593.605346101758,587.886558087565,532.414905353078,577.460724138477,593.374864738451,531.182761182005,461.107575657565,580.140479896322,533.694734369018,559.587313617702,593.60713139681,587.617285711568,545.927224182837,405.673840067107,459.313169793176,509.816559592955,555.544215349487,578.970917556343,568.635409490114,538.427599397882,573.902401413605,554.50003663362,568.332840487228,561.246421275887,530.457911173599,554.452533146219,578.624589219247,554.296591425787,578.474297270391,573.274047192754,541.953064212405,534.419014849082,582.264547395143,594.049302349067,598.450482073777,586.960761693087,549.148768689489,412.649640697336,412.391529386982,451.220747998984,505.885859482339,574.416322776441,591.482017746981,587.725184288584,545.911033125747,586.657553846911,594.798464031422,557.006462681853,511.190047649013,448.977854049916,411.620818549653,412.048938246745,547.783295423754,485.877810243746,432.999118379518,408.452436615134,576.83338349175,574.121366622551,547.21894059668,538.955188461636,553.582460667402,503.552893221433,456.714773466179,580.809670451314,569.493427198756,538.938734149139,581.933778990337,437.183411131025,417.335909700266,435.355245162053,530.705487415339,590.508654454382,590.084463103257,586.170506919051,588.391832362799,585.692959751951,590.131350477442,586.653336966353,590.170816974361,588.916263900906,584.063074765849,586.984514282193,587.819420580042,587.205404398444,587.138889507426,588.196124415139,586.601398427832,586.603956842476,417.111322456411,423.593142242404,459.285074949041,513.392354706071,425.369956603728,571.636029532259,599.904983574355,583.164776160951,407.017598332757,486.709169909026,540.9539251041,469.235844249681,443.63315745172,437.861228474368,416.011169839888,430.74974800753,475.467995064677,490.587592130769,438.707413412362,408.504826352845,412.407115154706,418.638356911132,466.780107284282,497.183967923737,531.197322599658,562.339917554326,580.46606496792,566.977174327325,428.551964008556,415.999098476685,441.745309575997,495.283864308571,408.44772862019,416.579684965916,453.574842216058,599.315123800981,578.971528662747,511.353037326961,559.84844882696,580.941301735246,569.130494327523,537.788550285828,576.337535067413,597.635140020781,575.111886167547,477.548202447982,432.677926744242,416.173893732674,433.583107567492,546.792648974319,573.907630439365,577.212399858683,549.10612492536,497.456709181143,530.212428738569,599.490870238981,573.102868265104,510.265157561448,587.912099620734,476.231485319789,578.960395112779,432.759303487382,407.754399097338,591.614366150971,596.43971352068,574.883147780542,578.052979996294,503.448500607127,450.25644102406,450.580950754248,443.333512253717,576.035187938226,575.4686531766,572.056542665596,522.639405142714,539.053855305663,589.921219778977,553.498766115854,515.716704734124,571.755193166621,579.469965087004,546.746663280358,447.632989271282,496.732694213791,578.161109430395,572.762290129424,512.589325414415,454.581483053788,413.51719793213,411.66453877779,421.638769304173,471.022401093214,529.106592608735,581.39088654436,598.701148911132,573.923253633562,514.287324947482,547.207167693513,578.283330653977,592.890421605245,517.222379425355,453.170094781233,589.941342443759,548.581171448183,524.131241231482,468.160693744399,513.27838285927,595.085785809154,553.990739523954,569.246557494372,539.438431062204,569.91604079642,548.644559311263,592.388847885871,579.734683007721,547.431605883274,575.927904627623,550.400614909029,558.69686882093,538.639669865143,550.537878889877,530.975315793162,552.505165297602,590.41621749174,589.906651889037,552.531011381047,494.960549320277,437.933592250123,406.45445180143,510.20320474195,569.541034157967,598.815145763345,580.01711909499,568.432627247385,416.990448336954,486.210443472062,436.098837438991,416.161104780389,477.160646841289,428.205088872632,409.200354709744,428.832960260913,593.54044205939,557.503818130598,413.092092125537,411.484663065305,572.504570616865,597.877440309049,583.357708140746,536.594618591392,515.875747524596,409.762397336112,416.011955233767,459.079583004247,549.054044282853,578.085377445773,574.679726095381,545.95320074529,516.699653293107,571.351564309115,594.211379691933,549.485975816754,579.244844806792,600.299085089155,575.263366724662,517.63069123985,561.940443859302,579.750409197193,568.565253846562,416.850723475458,437.484196989411,485.106934914304,542.222109309956,555.049344517694,452.979802088963,509.53152704597,561.357952209672,410.686863747113,415.760324404274,457.906232845809,514.552324484856,596.927933174164,553.452489751482,497.06923992878,415.208465858489,576.213327487731,560.964566115172,594.439916915926,585.317990462091,410.775176506072,545.673566981158,580.300445008861,561.638971132454,534.896729468479,582.448422293215,568.187170921248,559.435758930203,590.237256427447,486.735427601449,432.385203548924,408.321141504256,550.41074453325,533.396341850652,586.267688438844,549.039068275186,576.188135322973,574.657968411202,546.784576966141,547.029215817286,582.427352651976,595.966309647104,580.422194639416,579.384832153928,517.315456120659,531.922599152734,587.611129772526,600.865125326987,567.932622251039,513.452410057422,581.126185477433,595.4006807657,529.706287258924,596.964918678613,531.582778864043,504.962774448497,598.090993716112,563.159582452079,547.693902356913,574.520220614857,497.115986977141,483.229985704205,454.050352116598,562.372362100462,533.677485255695,576.41750950068,584.575088233446,421.957868405357,559.241320805005,417.74412752495,414.527568405262,496.480198663567,449.028221338285,409.845489396003,538.597586873775,548.489866304819,437.144191030384,594.26033934288,576.130967499049,456.828064743636,584.901240515723,583.377558308609,583.300730333697,521.353275177078,417.332266799043,545.610829836932,566.420664865008,584.327114982403,530.760731515489,415.65710030348,525.876127077458,418.527497658649,430.57320224003,549.88836680745,546.23865713412,450.315374124085,576.269218410504,522.251673845787,453.363712076594,422.492060413946,570.540608406807,565.308606252215,421.820349877784,566.35923075764,478.261795668765,586.126987802591,416.814258450342,508.883706157294,499.102864280358,564.133464862383,408.102628484862,427.536855555845,586.986775135114,409.350303052091,549.883915931696,583.363188350494,576.305508863599,583.532030924186,433.18979136069,504.375334569195,565.387829609121,425.039563560353,509.702428513491,482.457765110018,496.537428100713,583.738894168649,566.41148980442,532.186389470185,505.819709808973,495.035041455489,567.449903887817,447.406167342196,432.738239356433,471.869445041229,486.175013416674,546.103189496221,461.195262100407,582.385335735201,427.112478204571,487.497405752568,484.760841034169,431.23620618752,465.651951460923,515.194674205755,498.442312818195,452.220833216432,518.033465628491,585.045197272256,600.527282864035,585.255529196605,465.22299905463,582.714398039262,407.135170608301,584.543465071406,547.4502788132,515.308310708594,579.428348053761,415.434894776372,416.913883227728,513.454250916915,596.452026645038,437.49466009813,418.591416852396,576.602623116307,582.124470902375,528.348095309552,417.581703834305,551.154233720605,573.843748023308,580.241627705373,432.824591209276,576.589527129753,575.669049974954,517.930555133995,509.238100116743,531.918601746213,579.760971719982,549.771597304032,416.928617303705,476.641074417051,588.546919909491,480.942721082167,460.897204317761,496.438241080399,418.95734125397,568.955817998161,569.130628098994,537.6861079268,588.301031512992,550.566256658427,532.803240264204,563.967774239163,427.381102325263,461.469397916669,573.545191753734,406.485242367357,583.262876117884,573.167242622752,497.609019732969,458.803211433009,419.267442903707,595.194547721475,583.323694775368,415.179947871411,533.916583095574,410.621940784726,562.989466066346,583.618975740826,586.955351917372,564.867659755428,425.775597851783,587.241466671253,459.60189759473,453.918352301054,543.259310967743,574.232208992634,558.802437356474,416.393120605334,492.802926336535,584.510127339141,537.593762703436,432.879433565877,490.968053280954,411.242603308745,416.379308864576,477.858652906782,574.299435549537,478.774430294246,474.313898038711,412.796735576538,549.682939245298,469.681152710815,416.034226199709,492.076628627888,514.131009671094,424.207897978677,473.727934749998,582.136426076191,575.50441749038,514.793935059321,412.242964970177,586.950055755339,546.700166817198,425.699490365001,549.244424165774,513.529468259623,563.260368278072,410.742012120684,459.040370566605,405.37960119578,482.022714908811,411.993631619022,573.954484216795,514.472524150871,560.43215846963,585.589440884871,517.630728232702,533.852968437737,568.089989265195,549.594766817106,443.82749756164,458.785610269366,560.809393118796,450.367639435492,427.053845955845,580.067205122476,428.923599032973,450.002107531996,585.709906486042,595.019332268967,574.865046638233,515.832546642163,414.356893914952,550.27360607758,511.883125453649,561.420609077231,451.057343316797,466.415878911183,593.883274690115,463.7144916886,577.766969052891,514.473883088912,475.455687977483,551.191562533292,510.507150532253,432.91074616117,422.535339554323,438.552736326853,539.805744518634,423.34269803828,564.31359613343,587.054254763602,448.098799066262,417.985178510345,420.283597048461,429.823814295616,520.305853610395,587.024796039897,538.387773301737,579.054879558766,584.111196432434,435.509821444075,562.453344818483,497.626491412881,548.899406616654,424.1614856904,409.843273575903,513.220691698554,570.934393477639,414.329558834096,416.179685654054,485.505451449858,587.764011420202,542.100509894633,471.030215199969,443.558830340842,469.357938517642,472.697790433239,548.176559534376,558.324241204002,576.973859112804,564.258981000601,477.507325769632,538.134784934005,407.838173760054,575.479796644999,566.170547035302,460.429981414553,573.857589528577,498.171432542673,585.819650587281,424.751551047826,412.279240179727,409.175055885824,458.379050238193,583.753260364781,468.787683153062,551.749411665042,548.223798938333,563.643183710779,584.126984584726,461.316347882078,561.636363928688,406.168728768603,460.35536599079,427.121455319251,495.796930018792,535.330598738712,411.125349447614,575.200286276744,566.129590489104,576.09142065551,423.399455741003,487.103883964485,550.029217861763,428.247580771162,543.108599750679,462.07610483588,584.09824787806,431.384393955918,442.932933825665,416.305378079656,453.129409728614,418.209332820776,565.504176474431,585.203603823964,567.331523263146,430.211180149945,571.297399986621,465.95696807357,435.254405445967,580.320412597738,443.817575851236,574.759525989973,583.562066241869,416.606577070229,548.502689858588,478.391824525207,582.298357884534,548.51724009357,580.777552429889,517.000823262614,414.517102730843,566.674805943402,591.655182125895,496.799702907996,583.561654944909,433.004622642628,455.197902632036,427.197526652766,533.928698206783,427.726155513804,595.118046921189,552.574516583499,597.380246703047,585.091485720832,418.83407061401,435.507276352898,417.470922290206,434.117172106649,406.217821036454,464.720127374395,515.53893543045,589.671055134736,543.555859053168,424.411902542262,420.681863287729,582.901714421238,417.964766465797,454.049875713321,531.377692735932,566.281164663178,565.86265214426,416.036466291563,582.710442262153,494.51318785847,462.812309056456,426.534000223875,565.782231855782,435.53269472172,466.492082305917,518.11834240478,592.182409616871,561.364947860252,406.335714643281,559.802734209464,419.93489091438,553.685642343895,444.328788115169,586.636139236341,409.355505999222,565.779751754981,451.590816729314,423.620962075898,467.864167682302,546.70597414102,465.426527672114,551.105307663733,575.081020848558,564.151477944537,567.212724499453,497.590749102146,444.792627749627,524.376360685303,588.348949598648,547.189187473294,409.81356273776,507.082936646355,414.805109128755,576.069987167094,550.664379872535,433.180717112988,413.149854703461,443.649800803078,500.628551908489,565.060275578923,575.545207336043,474.41332158852,580.633945769815,502.978266138048,429.713801836109,533.497380027881,527.912501991039,577.555876183289,458.718466126025,524.808506967571,442.579657751387,514.051191417314,575.517445059069,479.914009860323,491.511780490934,488.436997504722,568.705681936062,550.482822961975,417.460414103993,575.79668106715,509.14620409803,477.469060620691,541.488532120232,583.02315291355,565.140198958297,574.167946807519,580.946594752344,583.785587724072,451.379256506997,483.760105546257,592.637360229908,416.570704138739,479.12334803332,528.844003459399,407.450763678122,589.316004172326,499.136519566156,599.652171079878,434.360882201382,598.661426355204,551.446599557893,445.29042033457,449.309818985084,475.798581763082,518.562938634695,475.939595467765,578.474679852293,550.55043338427,549.391052921598,584.452689269747,583.638980849301,568.061009311889,419.989614645827,481.975410519109,562.176418482658,481.527062824789,570.839301477132,429.466018599351,577.412573182125,557.312060487124,415.485999160947,569.097718343067,526.327887903707,563.278227515041,434.881683691663,594.777639006687,580.567197497143,586.319275125679,472.644756035617,427.52673272749,556.919449509399,415.416825946714,488.897236053323,588.367309095598,584.577191004341,531.948095606426,424.747796957069,555.951895708766,475.635167641621,418.449565975044,432.09787456754,532.695637463439,562.857192557988,589.620696493952,498.417613105245,588.564020330092,575.816434999245,531.482925859006,538.306912857301,584.011433391264,535.355218808079,534.031891747119,454.493897661238,417.434100617287,458.27037612858,493.677799854093,587.569479092293,521.406192419898,536.232145723567,541.315910634853,426.30409244234,425.070198426548,549.11525584562,465.270815655623,452.133623602219,586.724273271592,551.818491026516,454.730511588334,531.058004280902,494.224879651142,410.637334674104,579.457796876894,422.501875806748,436.233154131946,498.838397000615,576.36811349487,565.039424526334,562.483115088344,574.251458120298,518.211081803641,476.11423389974,417.486876060254,566.25228313386,581.241228053811,531.452564126972,537.047683438183,417.608318811787,591.974772464297,416.988925919272,455.577383487774,567.015125180277,578.563011717207,446.54045898721,574.101426386526,597.720604775528,462.351702121671,534.199848775811,439.354637072984,533.759362208771,567.383007057516,582.48194213085,576.312566023154,578.53676878082,473.667817690889,597.673498136272,512.695477321406,478.90827820106,515.761925713604,574.177200764982,562.288067206884,586.185762052268,577.19442543692,584.229403298293,411.86276758461,574.878058035593,512.293271916216,429.392349060424,577.950958135651,575.92081431349,584.314587533458,569.240153284534,546.768493876208,474.62395432291,591.378504731655,552.797159031221,531.937545321599,563.932686096664,519.023028228038,467.774766648137,574.443732665995,479.384490087008,576.65896040395,460.328913598132,432.437441518107,560.954373851432,411.944532269937,416.90223532626,513.767949288432,435.803769300633,416.484095579509,538.471843562455,532.000154013253,426.349616771395,560.742824870599,442.408688933508,585.646943857434,434.633728192187,589.714824803918,536.531964076484,588.064459421844,549.983875477908,423.414202588434,542.087571244461,423.617112839068,531.534488094875,527.95647404619,577.396598109872,440.861292182199,433.140052999386,577.593582620181,576.191121663255,430.166655333621,458.013608015848,412.538991705266,519.809546634238,412.752629275942,419.885530100133,589.814583636258,588.53493376,578.384666398671,421.798501910385,525.775104395408,550.873394039967,434.101115478123,525.088057746788,501.567828744847,517.495985993856,575.525290990046,578.464295729817,549.643383883354,483.320966137999,574.313866414724,494.230697261918,469.446095913434,531.960884076761,443.992505757417,588.852389747436,439.430474259056,468.010841421704,442.722889156619,489.838762282599,478.67297569993,491.75328541028,535.342116159759,577.428808317262,424.055542291143,482.262223596447,588.812081782369,408.287004935881,586.631107511555,527.228303736984,496.645955864818,410.896063240155,531.703169577842,410.498839277671,581.669391577019,578.185269644477,414.31217542278,536.641804969593,579.021088934257,483.897503707698,587.728202331874,576.852697574475,582.300246366946,574.020333403777,496.790273716302,513.057764581694,578.254463266514,585.498023242999,408.925577198964,446.050140590971,476.757684914044,411.100958507924,552.8856293915,584.227387060389,564.91466256054,547.866577860522,405.480479370301,562.061221406384,478.151511078218,583.862738730096,409.345665567857,574.768417049624,442.916911070135,588.460045689089,420.721306052063,515.827190344372,546.149913287579,589.806927471801,583.511302769788,550.073099836553,551.104265747649,434.006492710873,582.672010958954,441.702208988734,562.734144659762,420.355362865433,514.235871464014,583.938718380942,552.6650993163,422.155678892174,467.541731546737,408.708969793099,442.166045844801,584.262149940567,492.578315226632,420.517993498678,533.927366885709,492.813236670362,416.276562403263,431.961994770269,583.089173407153,455.995986684358,515.48700018005,496.574283555511,576.006606865775,584.858018183583,494.898017223014,567.969907906883,532.331342287884,531.053172162508,577.130756758019,407.311388403135,447.326066504017,462.814482436012,405.238184019582,579.48572357177,532.192153409681,573.502293515058,415.58532131766,417.83010446758,572.409763003328,588.895159778707,579.907343068028,517.851450708109,566.422520477107,430.030585571979,474.626624682038,547.661657861101,415.880632928603,566.607145440537,531.652551572679,409.962600300994,534.731933421053,494.096607866385,577.725396491533,461.36915350666,598.171509738585,480.091279862229,583.737454758152,461.74076509382,534.324500571967,493.607676613504,522.160387295427,433.534708691585,576.478214831978,465.749028594981,417.2502697539,409.417984518622,492.513414538404,422.70108521341,537.990577750465,522.860836724362,577.397878245992,452.68181113773,564.686023153086,479.338566368815,561.5630823535,491.766766210181,419.264232953373,585.479693889243,489.655455188699,423.744952959157,455.847174191894,564.921047242604,576.010620291172,461.642752306001,535.161264858154,520.888412809782,417.556177115893,479.062482589367,585.847731535282,560.619506187416,432.426856764347,407.973534236056,442.008301376709,565.958071509601,480.196216002155,423.028845604271,564.310076132688,574.302499317477,573.521253757201,448.127289252688,575.116446745855,474.570667621318,513.817972301151,409.851139711162,581.411635414252,574.440313378378,563.52450297959,417.633044053405,541.082712270865,437.811852876875,576.189200205278,587.26165513122,587.319275546713,453.062982096534,419.914861141408,443.333812935351,415.422914466807,447.688975101832,547.466870066491,588.836418969862,548.885871250282,428.334383850826,440.698225746477,549.644468439089,479.822801926327,432.340144203504,569.955566998663,573.881036631223,423.062136920497,564.258723176542,459.976521017859,588.627792747886,527.827352416746,422.767352868799,553.16128830977,593.277892596954,586.510041564618,451.524579542024,439.534458400107,595.411048321877,550.708920228207,596.224090779401,566.666362748426,587.154246646161,415.969445693137,440.098597242248,422.603221980376,578.859000349153,483.852109977933,587.906588786023,560.85109648552,475.416657476088,437.319366313729,435.5757017804,421.929608190783,578.679744660504,548.522693128918,550.038638568371,567.871571741411,410.808476168404,511.837300263231,415.157701468331,566.474831407017,486.121219217435,594.260036727267,575.490996663226,412.998604817648,573.567826144439,413.676192600795,433.981351757892,408.002983354729,552.557835989033,437.001609246786,582.487371382682,546.027852560006,564.159107786549,565.461418182963,576.908036479558,514.542541577535,446.412850616406,469.603833010542,565.071613092115,588.233672673664,584.323798231517,417.744900074267,551.474707918743,564.57613826171,446.786056909595,584.84639435587,454.179368029626,575.416258934162,479.93234490268,422.464316967095,583.948312414516,491.288680563532,586.824839494163,520.624394655655,522.929369565223,478.811872326464,505.077806066346,407.444724953561,456.968225833096,456.307513791015,565.117735514216,512.346362980928,471.747549732962,561.45355526304,565.45425155243,416.75422145019,431.19789699302,488.820624499737,497.765665653836,533.56090208108,576.989533045436,551.520963098149,560.258964237007,507.025187075073,585.03270836125,465.857015783243,465.20502852995,590.036837735399,460.842855721065,545.004130532027,406.918893867261,439.299548657681,576.392681944725,594.162538806564,449.398380643708,409.620586391907,459.707960715273,535.965224055215,579.342070892212,566.861380995191,530.835450145461,593.813864886506,550.166272105912,518.044025872713,571.063271958784,573.295125404839,572.410089982428,439.551492280863,499.591086813291,587.24890957683,562.634732352496,424.383459957385,546.650671889257,545.769180065607,594.518451981362,581.584174953243,488.840884416435,551.225957601199,440.13068148719,558.863175429366,420.516963485994,507.496343904147,523.161262518982,587.816813757293,550.887855404547,417.520637587309,560.644612550515,453.75730767045,421.562444770405,509.201784153247,575.168213473917,587.263970081093,545.422524904741,552.629473564373,469.31876002328,573.108837378397,516.936647674036,475.351257675672,455.768253544882,586.18425590496,585.742584508764,502.789038884107,519.503441183534,419.06756458691,513.886605515475,534.798691205763,568.595458925609,564.087601252303,448.796274791851,585.22826203339,420.520494953287,478.146383511111,421.168674099326,548.521382279974,479.364249500021,583.876475987922,447.060068037968,516.437784447808,562.132236697548,551.173349789867,577.997848271172,497.765692033462,550.431969573642,511.644390108897,548.275380150858,593.628346309945,435.187900185899,415.528500037943,421.054178286058,473.072349682207,566.809779798576,546.7793160408,561.48434380135,574.066419049443,567.641378768379,580.345447986127,443.713012813277,459.139827975086,584.640080699009,583.01845463212,570.231676051374,550.879791690944,576.602924528189,532.752260542987,562.987786598222,575.825675356219,580.820398200561,459.229225387419,589.672810751046,456.090467153567,519.287218754103,585.60945520502,485.379604303255,581.854727974321,503.802598497693,440.553815017558,559.096148643521,422.033978800736,428.310281054726,546.812696735579,573.2179217127,422.248600677409,590.23758933334,554.791121517425,588.38449591899,405.456407854503,416.714761537756,508.77011216069,577.037593241245,559.929542796651,429.178358352709,443.784355080851,584.347947608617,585.611671056114,547.133152210453,442.871301230571,441.565911456463,562.819106422231,535.439387051317,532.801063655297,425.985022710542,411.706715741322,586.026746910639,421.537947196593,434.342061375061,416.900216926812,531.419256858455,518.493719361963,533.878159164641,566.566369057038,585.290949680088,583.383351942883,581.998209268903,583.365900246687,513.959066443881,450.521946511413,462.709861463806,509.509503956881,474.570352034828,578.927326574508,595.86744266275,576.067621110175,589.898962459284,480.294219031737,579.913508614351,417.625766633148,517.635013323311,421.472817372729,583.540909372618,564.779018582842,468.74085110416,495.45314034172,578.386863417675,575.396819556662,408.87076645161,515.843460085225,457.245977710175,405.043402512105,583.959618833269,565.508076042735,575.784579448443,564.374132532234,408.887090947394,564.053084671285,499.18665336603,587.969470554418,421.869457940772,568.222715657943,571.970365899441,591.922985170255,582.430568889232,495.898541564333,419.701216336431,583.838894786807,534.87460157847,450.917851470898,577.32834441346,572.212670236901,574.919102178378,425.9774478929,530.806429084947,443.488257782105,410.301624268037,496.891070836743,513.842521039077,434.983099958008,517.301676196712,511.342475815529,422.167358071191,474.628627785732,448.046956490893,574.479036539832,517.835509143033,583.291488751503,588.03625578008,474.381022876,587.240075545221,514.272347197387,585.981345457969,432.886964677613,405.709838024179,588.623096308386,411.69483422676,416.483462256276,580.475277165008,424.51153781814,580.075436831224,499.45182911098,553.596515658082,575.347327275267,492.994285463531,548.067847496592,582.379087710798,409.235153555773,580.156625150973,439.367227071673,552.37448833948,551.893680580234,579.27795266269,438.434471531785,498.714237257464,551.250248976723,515.845019201779,414.36641811482,504.273535494899,453.338738719533,583.278169391622,484.499401580777,405.881924558364,417.130845180794,553.593923914258,470.642570386705,563.835906822509,446.872307910993,474.833473336352,563.36495470795,406.287753725387,507.445339381268,508.455414800665,572.843568388487,589.645009944784,582.353277128411,551.919823372918,575.633391173675,584.835180684848,500.789121111045,587.961553515629,561.209554094151,412.351805325422,408.838002286143,428.437081073535,577.133861818852,496.894556480243,576.980890020073,583.823003285054,583.813369847086,530.886585942676,549.416624113677,408.42200081733,585.69638141577,452.464990837714,464.55906141278,429.609201934891,418.283336214897,461.602541498405,533.142121412387,533.851215771839,440.821503617686,456.772797069216,498.233729896727,417.353625934903,578.448146615195,408.436043934735,577.047634719719,444.853041526465,419.397192025203,414.648020986342,588.133435929093,448.225868157187,577.298431770759,597.751635138017,584.251236155069,424.852053173862,421.693956193821,423.251703457116,577.595913861757,586.859581450652,572.243692039975,434.220119102563,490.401650060659,567.595106061265,535.586013101617,531.091905950275,498.70400075882,408.543462661418,466.617795799492,584.399209760862,425.446807353338,574.633683245315,506.115383296447,578.68098983265,533.45680000044,468.424882020476,477.168629282914,485.557952431938,557.43032103603,577.301740300388,576.572713228143,574.959229689686,422.644831388628,533.004312085464,550.695790801938,577.793197888904,576.764722608776,465.943400943262,584.617147561239,461.212982455808,439.469917707701,509.0332926131,572.813838820854,563.126003895129,482.986333224164,413.23338998952,442.2205456807,441.062876044544,462.13601801766,417.199266659437,579.207956847451,445.363416091314,515.104968722306,563.268269957266,574.73924778039,482.411268976019,503.955153855627,534.548938483576,597.542654494527,517.372095192835,578.937412950077,596.077295766331,532.061302257148,575.793841145305,581.734070317122,584.850229271218,449.259497407219,571.906038034691,587.434509651165,576.151447544498,440.296531389378,562.521937237369,532.909477164719,585.301318948901,575.603128251719,532.549291250903,429.201770165943,577.710970035129,588.039020647135,560.44105922242,560.127218828621,581.899226319392,588.262511462195,560.457289749455,582.167240970594,491.536343435281,577.33767691352,500.358640941658,415.09094406933,536.324898702185,517.04644746244,577.883618421346,581.65041752784,556.173031148394,407.264415128391,459.05527936312,413.282133831372,564.83238114275,465.453711868776,415.844519976511,578.280425729918,584.883908153953,523.799680754136,480.467125253218,530.149371670443,494.396037163129,416.305792754085,548.023577920251,565.364835584548,582.421624766066,552.674653060312,579.489348135696,436.105835514614,474.986629338003,535.566896965504,585.271374796906,575.499254304884,588.123350208704,546.47666036013,550.216662861723,549.504491901624,563.311526483191,549.172872822245,437.789613502741,538.511016892726,503.350418409591,588.935916938991,515.384155508192,584.274902882868,563.504670934838,548.226702398244,556.860332155196,414.405187709265,566.494520664833,506.229369793101,577.281997626052,573.715427837591,459.170587447804,557.109643717164,427.233978403515,514.134615349641,409.849089087284,435.249735646574,494.686231520301,552.971447177349,554.390072470172,574.004559064733,427.57200690075,532.773730723148,495.752267966445,543.152451247731,528.529738018082,571.822029956492,580.623935245087,409.217868260551,425.439595775712,409.985657122302,500.135297781031,478.797594696382,459.029249171599,577.168738671507,532.660124138787,408.029513328425,587.333461275422,577.640962497783,567.051576400294,584.351848221608,414.706968754008,563.136187552523,417.075031894768,552.025751438473,571.84347729251,452.647419731418,586.379149080058,572.610304115198,566.077579186965,584.454989301444,584.551405506356,552.188216612956,440.187562604551,527.924504051004,448.696829206796,565.010356358812,540.25806221748,586.133594078733,460.601707137885,593.461120062828,497.611331955713,586.264654575403,418.03473670567,436.018997794933,577.600811938348,583.043755056699,561.810851651822,573.924395163667,477.943437506515,564.413127949378,541.520848787412,493.238653586035,415.337400479686,596.054028373484,518.66785695896,584.585968472698,566.514723481497,588.024115333332,503.177134428623,563.735687485381,489.859391717082,582.947120260474,462.065722243797,433.6021690596,564.53725908979,413.111973767082,534.166606585199,581.304796031293,583.945008029235,587.260599681475,574.918288962081,562.816961632248,584.023176923748,516.438525361323,418.335367795709,583.227596670088,537.245181493795,522.338663403855,567.50696182927,596.605864195985,405.326417823225,583.631414465429,582.193225239998,427.359600325389,520.009559739706,467.698619311213,582.434245006603,576.687098718234,425.475665967216,481.23499913574,583.739961458257,466.026500256728,564.766930565915,577.276709021109,518.20390779417,551.491049665155,568.094808784238,486.065218835134,584.660163295308,554.77951387529,419.333137859126,583.850446835692,557.602054014415,561.781829653819,454.757052584137,527.598296583231,535.98186441348,552.746735835625,490.703449215703,581.578668880871,445.460567785691,432.213125519966,582.984780390608,589.429514764149,414.668326061604,513.680728660327,511.18911949671,462.829508338061,525.375830591274,581.569003800537,461.001228453061,534.205504708213,583.749102488132,563.630997028256,501.85263018998,595.421296239791,579.268799447569,500.837316259344,499.78045149677,579.178569400797,424.066530729006,594.842520233574,513.940526614448,586.048643656884,574.294908934777,586.821194752485,586.260603236764,569.161213606074,574.397933019732,514.328889305266,576.811973223338,440.432102534344,546.792747053981,571.602495139532,578.37302112855,560.176865360757,560.91602732633,450.856710203276,584.922073032157,577.485613760093,585.467066634,509.442235701513,562.460771436121,436.360237275919,416.302154349469,413.701777952847,582.972520712082,574.367522473799,466.849512733807,587.967123400864,541.870553823564,511.193543412372,422.170137259335,443.641526090932,576.087056098672,577.89605633331,589.92825211053,533.591232017749,493.389902003737,592.179034360364,559.427466165921,548.905686378439,563.83077865362,584.130278570451,561.578158071527,530.931270306758,546.551476456468,579.571676753268,586.290860471751,519.304474409574,529.508733924894,561.007377205948,563.056698364424,415.920700697863,578.716102860113,527.382280817578,428.360947724808,500.486502881372,553.652149535462,565.983755488296,529.248101790344,480.633096542351,496.47192698581,549.640516530285,421.103490723945,478.446194966753,559.718864159963,545.946086790778,562.94726383034,575.220033528551,580.971365104701,417.255547406069,587.77986513211,530.185728746787,536.509162850216,545.211871701138,503.90460873376,423.179353254363,562.758048666362,531.993828749107,586.405209185475,453.787341864267,533.792304285664,576.268293595264,565.043626293683,550.881138913717,550.777960708715,550.789331567585,440.56587799015,477.56777009743,577.55360100363,576.654559233595,590.139948764121,565.883191059324,587.07027193599,531.079060011739,575.945116439464,579.33824032981,575.342517981509,515.023173167855,512.495471941011,524.982501612826,573.818089902695,512.485125975416,578.398235424972,421.821814387378,587.194001570238,429.455106710529,589.760409190542,533.894335024913,562.070924925886,467.820951261602,564.121823869224,547.749181175038,429.85223910026,592.282354390281,500.342095494012,507.860003719143,567.215945805876,432.229336663005,564.094736187152,575.795933066113,412.827952363087,561.042884012531,505.409086100771,586.249992540204,556.279738231491,438.125188089974,545.871547576705,563.029919922042,437.593020409965,432.098540868366,443.374342451781,587.395662754999,427.965665020605,448.655471397105,462.005882468248,582.182362306895,549.225781048981,549.506631940652,562.82898608613,582.985779252892,492.05519981122,574.607986088742,494.673837866596,566.97709584094,515.663862762083,466.955337914051,409.84994972714,593.986273713421,572.777151829315,458.286723537501,417.892725499085,429.904782796692,498.963152421943,528.65830679048,410.59130007853,571.045364582033,586.146424040562,459.025121871088,488.546638186321,531.383409086654,547.601083215811,407.050331289948,496.031685207498,459.69529192382,411.63010291588,451.748865359609,450.841699570536,526.314853170102,573.984916752647,432.842378471383,467.38411733241,426.806056745955,467.791179342053,423.829548060988,496.864647594296,465.327240481028,568.089635479013,523.015779026498,472.073622071624,424.8296996867,407.401376914152,579.167727304351,534.130251824049,405.158742144204,416.516396542406,412.862385318326,547.645254731743,476.060052208297,549.282443898541,485.591175080757,440.532430142096,507.971223719385,569.9570864797,444.170138263354,433.672455589956,501.401463366044,407.482446180954,416.238890603326,418.480168313705,503.980798665148,474.882949368998,419.246494348321,434.017204885767,464.661647412282,523.69207177805,446.260024829839,530.187737901531,491.311064678674,420.188896633757,445.240777148209,519.505142834108,458.165053220667,484.46625548529,520.577932165211,565.231153599391,414.967080670783,546.50397889251,480.813448417535,482.662265613059,421.367204368443,578.161836402053,442.551840155068,480.973744534559,446.717616386543,417.745825005457,431.15470555343,421.458316257563,504.628765746715,567.014966941392,492.585890639925,420.81007090149,406.451495876106,464.304392749642,579.664388257858,514.152201317867,443.756597987729,419.446328411777,446.800004104589,598.156509003046,453.334236889738,480.515729162144,539.294585796519,433.947292573364,463.866779763803,561.939968739632,429.218111173279,421.135174098536,515.959317960103,498.959976137854,553.682337355295,504.679763755602,427.765140474572,516.418059485737,529.13101177115,514.192941566873,478.864126718614,416.721783542174,551.010210048044,536.967239382923,483.112665062053,524.52959577458,561.154694408004,457.933256077165,447.492546528674,497.66681126113,415.926224435855,487.279072101485,494.256609907801,419.756504544213,514.627201832433,463.279223931539,543.772565678132,414.691284963348,521.070171379038,508.658101409974,476.530311897638,470.222537439406,532.226206045573,520.739442498653,432.419775276025,531.449684750358,501.917724889532,419.90054048865,408.796603596998,476.200671516319,414.15939120768,442.096177133235,571.29775591776,519.758022150843,556.637769783501,506.278297373659,517.943978035345,583.330844614792,421.703500251234,406.505281734246,546.887981443351,521.577972339445,485.656442510654,495.31927198212,530.809039087409,452.042349903566,596.441999197038,491.373643383889,552.337609459965,441.219815501198,430.565398296851,428.144169719674,594.132804046806,534.598310524596,493.715964242704,457.536674589234,490.157804194205,465.901798899521,506.035961326829,434.941810250923,488.285065281145,571.035907604369,415.795426920401,409.062882191018,549.40737046113,568.981973848105,522.366937634391,438.633866840315,488.650504145047,593.920677414114,538.56440906602,531.953648375913,415.268856529451,411.274079168589,486.79775813297,511.352403318701,422.840308549223,576.243712051621,518.749520836958,524.843545344987,452.674498566486,492.982109303417,456.03564973158,516.078961548995,568.457640820831,514.442557713012,519.848526561817,450.216574114801,415.994401979486,414.756344130329,455.895453370087,550.935510280782,528.797212549344,535.342592996869,525.838491102741,437.869616987305,522.392643841793,417.795257647807,496.826005637647,540.788384008848,446.525050043734,528.26097179869,418.291665659772,406.173324538073,511.974604181846,547.366466751994,415.68514468765,515.183743550662,511.093238671648,422.370086055773,436.501596660967,431.463263061322,409.747001456223,408.955017659503,477.699621558871,549.619260702687,572.101697616431,473.498343702053,520.62828328699,514.622712617191,537.459267819462,417.35070279701,416.707411113893,568.232194356861,505.477054775827,488.816600197335,552.778442063616,488.890185060448,485.870885714591,414.842573211015,422.11507820987,533.520147907306,426.309003328807,506.347566930772,461.0326620332,410.735964158544,539.989561698623,538.806029254024,512.320548060708,551.459508610963,451.463094837704,455.322380082945,433.965864856895,495.682055153737,441.32986653313,534.402426631724,410.083856864925,475.350669422646,533.686713038115,471.837669279605,532.058758604016,552.256428556076,543.83753625899,478.678358755538,422.771896371747,577.459499064708,479.633792932,463.682481400339,586.832366301314,419.094553319402,527.349751552214,503.592547940464,430.950214601191,428.723504424356,408.798664695718,458.779780447169,436.128050045223,442.682873664493,579.883539915709,460.46889016485,537.137706074231,454.624221384439,479.869392878758,415.393062629008,482.717913959374,488.609748447286,479.924914813312,493.652664355835,419.19943674486,529.287990870124,494.248090508221,505.244624447026,507.279181665981,493.11129369099,416.117982320069,419.241190872425,555.297436053409,570.128845450379,582.979552769043,460.074914140531,538.095388543715,553.324262532151,543.38760379251,553.18191521162,416.272922886732,526.931480325537,538.077108043316,445.792052683221,479.259242497404,454.698826770063,550.396447230612,571.907684710225,495.033676854731,405.28783272261,454.087916868458,488.384511769112,480.216505590434,559.893447647037,567.412398175165,421.244379000279,516.902984072885,412.54469367673,520.981645003948,473.350357606217,406.462545355659,457.897727754918,543.755381154056,509.426148661053,441.736081596596,431.222476241868,475.290558013692,409.697164826672,453.944817176319,422.388966535528,550.626236264576,449.335405075509,496.833725089444,567.323070623883,438.468194195295,415.097180204076,560.561705659701,465.339383229029,472.545982398627,498.132684033816,500.850422310043,522.653953944338,489.180236062029,579.905258704742,416.442971140091,479.164341890979,501.902486846714,460.009231176188,423.200955356523,543.882435631388,419.608833600557,542.472200390788,522.57872446782,420.52885691525,550.272696202745,496.367142945198,565.140844094266,409.381372992625,414.541773355547,578.169496567764,414.86782878425,504.22098976625,415.951422009906,516.303598903521,485.797553362079,573.002046754128,421.667020967578,422.521153863052,412.516678642674,419.01091282941,423.571207088097,549.489995047399,435.87464693697,456.303234790692,476.776803083371,409.572036279197,415.108768838769,414.563755018287,432.506966084297,501.885099870411,416.118405559227,475.432520322912,549.697577915866,415.205082663669,552.514997947938,450.742999777022,535.844999933728,416.481727513282,408.236344266011,506.917637868354,487.823125525404,461.676966853507,534.848620540484,557.671940253532,506.445252634556,448.696271359766,429.735843712146,535.424293175269,411.022716407069,587.59321075926,520.687876594749,426.388565086372,418.093317323996,515.791232217332,452.607145720373,574.64176779292,420.16136274444,470.053033004716,557.896760959428,405.6071513257,451.956503935146,525.205157541992,417.75125709123,453.761991897085,537.58584486455,589.963037113945,538.366039319182,519.234804886118,551.876315144765,565.892555632291,499.245671986281,509.778382324666,424.636305241528,573.716153644024,480.421741286016,451.558641389516,406.653009238146,561.971386401646,538.259920946724,425.686003505318,572.571465615616,587.205460108469,436.962548054878,427.084200810001,416.334920202849,556.417187324576,425.974641468743,515.281343265654,423.812892875661,569.524096233301,438.486081311238,422.380849221916,486.981476635538,408.168577659868,441.684900874688,564.78690277608,592.163350830255,431.060154090719,535.438289042952,551.323087531431,416.52340472812,458.21108802393,411.884349116928,433.832160639989,495.510054516633,418.263135180279,483.545346172348,468.936172036351,421.950510882568,522.145545738031,417.570498813629,533.082986703255,524.985760964699,420.504845646712,505.149235295777,434.532875131761,406.589905763044,438.183028217613,550.574186171299,443.765268074889,430.850142014448,475.48036403863,422.890387268825,570.442749614251,434.242251039547,581.06322816244,557.865565383065,562.372879160993,419.192979500156,571.587128556948,504.113176840748,468.353602711837,471.838635254582,409.346616455248,416.330332030263,568.108954134544,415.882855219389,466.332690040633,459.341357097953,413.479459721285,468.638163268362,465.180409964213,517.043542191824,414.729459918998,476.156084358853,407.135827857332,421.757859737218,434.935820917664,415.528251376342,505.691243895487,522.044588057431,518.368011057023,406.927119568277,442.852672832396,441.28132113352,421.856993033122,476.678193292834,434.504935608122,446.856534562395,487.50924513437,445.849838169715,441.650686912982,580.692096409464,578.789522141064,498.459349785812,599.282209267661,570.117542410817,599.123980830924,416.262626135181,456.780203862967,493.664884428296,415.270700754776,517.576141612855,532.47187989911,416.68163284243,420.070445422132,409.844116972971,543.744706388487,409.642280383921,409.690387480227,481.814334771704,440.081010984354,418.116923935117,446.351012824495,437.183133298369,544.142786870611,409.633051497413,462.529510244288,551.00590983226,470.074153255085,438.665548594687,536.689546627214,488.548469232186,413.350173930004,599.512312465902,474.69400504288,520.162335741117,416.521296787969,514.683419509643,428.386772806585,504.426074365297,413.716531250038,442.57176268042,409.353452952073,452.617585549185,580.033343678238,511.173393886956,490.894624587434,550.411447914582,482.463660433522,495.91873250478,448.864407391998,425.522216919884,470.994554562546,591.95570282915,408.362116546283,563.325691536693,430.514129719523,598.685307963861,415.585149045701,454.117969569414,442.678633882189,527.259060642691,465.869243880752,421.058890148027,429.656600493077,425.15450677411,418.286619905478,516.493650980304,417.376692427041,420.407815621034,574.969238208293,422.29047015135,443.199859382398,455.282214570895,440.624950698453,471.342574714354,425.440589361668,438.199364740988,408.683350133767,454.026468237989,468.447126003821,417.118802081256,467.947896354738,414.508075332062,558.269598644643,454.050652791744,505.625053490591,417.381404484113,434.015146590161,425.706490129394,407.347488709972,404.936375531301,454.974216839449,479.113128552054,530.989908397026,465.730532706005,501.304075880295,445.78529715207,525.362360116935,555.974983146251,435.571261273735,424.70794886601,429.595663058064,487.223085211471,439.449104063393,472.375768265422,435.36615374385,468.857291699863,430.222080314492,489.390039527375,411.153387695024,421.222123857004,421.126366507364,426.491386985979,425.677795300531,453.666749367417,413.693290312366,439.566494152499,420.161597079992,472.582159058575,449.315598864985,499.08342806533,529.147201393134,449.57849002589,422.686099257664,441.596869162927,408.068263014838,483.341541076176,431.641620079071,534.537918146231,470.904571841627,417.401995278709,469.220171928265,578.403942417847,482.264864197802,504.217734069598,416.761992007494,575.65402773867,417.280234884702,427.113747751925,534.279426370396,417.587579879486,448.78960621272,429.412709807259,494.031926697158,474.360648155164,521.82199974015,534.32543035444,430.106920403644,420.068633143952,472.652125342583,424.430956218212,523.559129170302,471.410792365779,535.478461868788,503.469290721693,448.869930996656,415.641056902432,488.348918113768,423.767465580897,568.841264470661,419.100579185191,417.747748053589,574.248707695601,570.6708031827,419.521731587541,418.760257717292,435.128938360539,491.112652037622,528.221925160548,529.631867621138,462.679134773628,412.967242541373,434.437016877705,443.810013791795,473.429658540387,426.120480878573,513.774667733544,467.169691005126,415.289637219099,463.650829652017,465.508315861828,433.45643268635,428.130832416422,461.481896355861,408.386327929943,581.646265245973,413.209741957896,550.812212545235,407.981397865259,436.138646217044,431.671117125947,448.858368973253,469.675491538519,499.59918000207,426.234561945793,451.177177728337,572.743605214676,438.934930373558,407.429557175021,413.665804308966,530.913852819639,409.453527587412,508.813242826195,436.102291287659,419.093907495039,486.026648313546,446.144571255205,453.06084648547,422.752107306157,537.464842111259,483.186612249282,439.308469065168,412.22260685605,541.13246937775,444.418950159835,439.189632154742,418.663138703348,439.493382649721,409.995754041179,451.202361862811,563.660016011561,437.52236870102,419.012626738056,485.904049275959,474.364887295406,425.914909673104,414.373327852277,436.332302410088,547.096629568064,571.471893579533,453.857342729181,427.813547167068,420.848039944574,415.390986441852,517.518795365757,541.189071574931,509.751292001581,445.548120594902,475.361873732314,549.282534285144,420.00751128344,431.548051395485,406.847291477493,513.593475481119,556.157936803715,490.752290500541,511.117808070994,428.604035530945,508.237386920972,409.687173736959,407.25064749731,475.980306221566,520.149918501326,571.021212019094,410.204973124616,580.321396905761,496.112555893457,518.528444443661,509.285342922971,444.044574831112,444.470052367099,427.871200856428,426.345481621456,463.86876482069,488.203411256032,453.330101004059,485.150696279335,425.258138431416,444.050203395662,408.615054669254,486.112987583125,504.201103475067,426.669688504616,408.068269284014,450.896473284758,512.058209874042,418.505220158794,458.894004072461,488.481545011251,503.11526261414,443.69088351185,438.673444123828,420.21877844343,429.75454058985,453.650796483845,431.824487383649,425.459207197559,416.45770824263,427.483921332556,439.373120808755,510.706015255221,455.436713101333,437.64533801586,466.284320308786,434.012247111797,525.303604557343,403.765182879618,484.951636586245,443.430674766161,487.91387548843,444.53585914681,462.563579175535,456.831216219435,431.842127361817,512.450166766898,509.892853847898,528.423738387762,528.544133086466],"Archive1201_field3":[524.030712027,524.029337957796,500.067506289801,500.067506289801,524.091997262663,524.111587197693,524.066100758545,524.073281618478,524.114962893926,524.076780820515,524.084347434422,524.106293249364,524.047181917913,524.116244819136,524.076484646065,524.10106839054,524.082405598666,524.093042947631,524.072756565649,524.100446956682,524.066755674618,524.057726052431,524.06995793346,524.085133541821,524.080739450676,524.091538947914,524.071557406419,524.064745175847,524.063162385623,524.08520968828,524.087824518795,524.080871920494,524.083138203112,524.062534965458,524.095284216211,524.090961760477,524.075182875344,524.079632685881,524.09266275371,524.050453094789,524.11733576411,524.055149675756,524.062291141544,524.094735544817,524.076785621174,524.088297688366,524.09456466266,524.051572627957,524.075466661361,524.070704517457,524.068137400189,524.108281107305,524.080208990832,524.083277363237,524.103526745553,524.063279885468,524.088679882452,524.092400267657,524.102688866506,524.057233671644,524.102730112745,524.083470524535,524.060508644074,524.104908353271,524.109210441523,524.062178931837,524.102967037817,524.073938140835,524.071987945055,524.099984178962,533.900527380149,545.034264210017,556.350646881841,566.617360800977,574.673274071114,579.496478450513,580.358673177764,577.036413102457,569.484317089752,558.113058764483,543.460364076553,526.270818995982,507.620468858987,488.326802862727,469.52873980599,452.266189830154,437.489260673962,426.048086425691,418.586498083583,415.531654266818,417.108197907883,423.240416746857,433.6340871218,447.760599465437,464.85328267277,484.0121955891,504.192196642189,524.290686657437,543.20677617984,559.887730941914,573.405219368863,582.993303102435,588.083260164292,588.331996210841,583.709118011097,574.501386981979,561.138872271053,544.315458758118,524.943329379735,504.055513608711,482.791127374724,462.316500987436,443.753816239096,428.144557126152,416.362401860995,409.075678235193,406.732334336538,409.491244228495,417.243993320267,429.587246308121,445.871211520294,465.262580055696,486.698024342791,509.017989231179,531.003365182547,551.45389498858,569.184120850058,583.394113520522,592.969515872528,597.529070090325,596.824039556995,590.833888022913,579.704450167548,564.207392384247,545.004846882648,523.271453904681,500.030148314213,500.055512946949,500.055512946948,500.050118521556,500.058386361891,500.147107603298,500.143939069672,500.050202683342,500.046836199068,500.050810404721,500.052119618458,500.052477401662,500.056990122124,500.170310431582,500.162547905525,500.048664616753,500.051020631093,500.05428306723,500.053709580267,500.049654227,500.04920670806,500.0510279948,500.050658658662,500.050219765591,500.049913244556,500.050272439388,500.051763050797,500.050012882759,500.050306746637,500.050744817655,500.050395328536,500.051652477791,500.050162284329,500.050162284329,500.051652477791,500.0526414483,500.052332893313,500.051039282662,500.048924678834,500.048560856414,500.052209848416,500.053374732271,500.051002713003,500.050658658662,500.051027994801,500.04920670806,500.048632704424,500.047907554651,500.04948294373,500.052171311562,500.04979978605,500.04786987543,500.048280262016,500.050434626426,500.052615960261,500.047339757829,500.150832605975,500.154199063157,500.050202683341,500.053635825666,500.055996508117,500.054677084529,500.064183484251,500.142535646454,500.119734009185,500.030148314213,523.239246704701,544.989066270543,564.169104652629,579.693044106138,590.734614823311,596.775700291325,597.980363935249,593.077855669788,583.389505513987,569.25002928128,551.435343211425,530.91667107207,508.955327215082,486.653108544266,465.240308383013,445.867307401868,429.59341862893,417.26076382826,409.541502838746,406.799004197428,409.148437748416,416.441597632888,428.222369919929,443.827096124786,462.372222059952,482.841276369183,504.08878342326,524.956781641732,544.310876113551,561.114735033696,574.454706767896,583.655127248342,588.248280054046,587.998005247188,582.892510609137,573.318137382838,559.811081603456,543.13962047076,524.241947810718,504.15878263148,483.996761014393,464.848433856388,447.7768060335,433.665433602968,423.276403060795,417.172412397452,415.603956241609,418.666861778157,426.1283722219,437.585951459743,452.33811271046,469.592933836186,488.369070680394,507.649570177104,526.363434006733,543.496744558657,558.063675054289,569.521730563604,577.029977075192,580.337288903214,579.469270945493,574.639787658091,566.60300857449,556.334881041806,545.019727668341,533.897541537465,568.362510521801,538.356198436479,571.19836052646,578.957886700776,555.65594048375,531.188568041798,563.41652315645,580.465589391779,563.92437457346,473.501277560266,529.485343208416,570.675731167205,579.218223132026,555.925963363204,530.966472008861,539.173640906852,570.315939800363,579.342152056232,553.712023010643,502.4668757158,549.63040464586,592.267266096553,591.711718193964,549.221355887624,484.946834429507,428.956912238548,408.346838984294,438.398423623253,496.15877255016,556.907356967496,594.262202649315,590.973654044361,548.11521175761,453.538141105382,514.502593625892,570.487893882327,597.277549646447,582.879057453297,532.537979128766,549.707437939257,592.460758672205,592.220006856323,549.744135655539,485.677187576305,432.225822254292,407.171557843679,423.390256116955,474.76190583484,538.620654712119,586.421448715697,596.041705285002,562.529693242993,516.49162033146,560.029469431562,594.667547825337,590.400208800216,549.954061899103,490.066184815058,435.195864186072,448.692067821046,509.853710446753,567.960444212577,596.888705674712,583.823810864668,533.15287337301,547.412572405743,575.488256407321,576.586535906953,543.482836214776,489.548810756844,439.44089876894,416.067004462237,416.011687214114,428.713175070352,471.298345083564,525.124877362003,567.31508691534,580.474660380065,562.263878206769,530.94619004307,449.360505298897,500.484790529789,550.300255371594,578.167875942632,574.08772600961,546.381664814655,470.429405471409,428.029339840575,416.113872706267,439.325441737382,487.30622244584,539.458853807672,574.172272602682,578.072335262066,554.306272738043,530.881428257734,561.842501709768,527.192430181853,473.988336875803,430.775219972605,415.94833929931,436.198443460827,530.862372196324,561.72437846513,580.271437095624,568.524162579885,528.111054142475,475.062176519609,431.384361741038,415.709502043284,424.363586913258,462.418195428209,515.171769902095,560.688528629694,580.348322184689,568.396644871631,538.361322862429,548.276418869626,591.104495814165,593.674049970248,555.791602029704,494.625232367915,437.081895550212,407.902471818972,419.198592027094,465.043479815311,510.173391728543,451.234507139896,412.515842676069,411.505670729412,449.464413626478,510.687478773085,568.273174786675,597.005824951063,583.536836594869,532.943472103829,408.485662825007,417.564979221433,463.260269840297,526.270295339712,578.785442389784,597.658991809851,573.806244601672,516.777280311233,559.63951248849,594.474116585674,591.013983613831,551.430107421053,492.222131402073,437.324574234314,408.422677853466,577.50174875497,532.372171824872,471.590408997791,422.373929746478,407.235329928161,433.364521781389,490.558956015741,553.167077370768,592.787359301813,591.427413129647,548.690198905323,532.650979271311,583.038350628661,597.179842061274,569.838447808621,513.433599328704,452.499655548589,412.963130419362,411.124251023022,447.051979347355,504.679912620756,559.119446253269,421.565951346185,469.793336658033,531.763398172937,581.44411592279,597.622745169226,572.676311479523,516.440335117097,561.569118210477,595.762860676729,588.164804641379,542.952026278188,480.363794590927,427.360592977699,530.989718617039,562.458081357277,580.222015172022,566.44830403188,523.635346974326,469.525008041445,427.53318917891,416.30806595839,441.404191455866,492.601346630808,548.10694368822,507.033197131423,452.426404386538,419.437156648059,421.540239810317,457.015487527722,510.240208286015,557.957428633133,579.993845296579,569.178026609718,538.669310112999,547.461971044729,575.554805029268,576.436180574073,542.911134383101,488.856379024575,438.757357597919,415.92273503851,431.39088808234,441.413960519984,416.341327073339,427.512342914637,469.492335879045,523.780343273152,566.418911688825,580.168968474686,562.398746600757,530.978901060774,574.528400957777,528.332921390789,470.83654856363,427.32271715214,416.599222403196,442.64545000066,493.200162129528,545.731944428365,577.188879421173,575.016781423842,547.061564448521,538.557358145241,568.955907231654,580.236108794605,559.210878806886,512.30404565325,459.19428012395,422.385484897375,418.241449430908,449.219557635375,502.477667687986,555.778390967233,586.3325485967,588.157572220998,588.249028631607,588.218998631566,588.178390763401,588.229863793157,588.213572344422,588.203873864151,588.231834431306,588.253051068618,588.238607528277,588.204703246563,588.246563308289,588.212797295699,588.234286955774,588.227765740545,588.155312966613,437.577765650981,415.82675762872,429.736932523454,472.794507538435,526.194197403256,567.636472164063,580.137573471808,562.020061895337,530.918204133941,554.824852446664,578.446449623444,573.089654162293,536.286066690194,482.815144702925,435.727413177597,415.740163076973,432.020924992318,532.370799732224,582.626299620832,597.452231411713,571.340280244246,516.080618376674,455.183992527081,414.376048186025,409.991198545047,443.216737989769,499.35376355846,554.643884626371,523.14516321286,464.733942811215,419.846127261514,407.474309294322,433.527501805763,487.687385673439,548.285392784435,589.949468454641,594.919027642356,560.41566248975,516.417426113852,572.610248900498,597.529226495271,581.530748439768,532.098509775056,470.2813137049,422.028810823209,407.114874755692,430.970981234154,488.686236847761,433.392356285559,473.58321656346,537.879380629001,586.261913056805,596.029906909279,562.659948158458,470.387707652482,427.848871320253,416.050088389609,439.349727503887,487.253360702585,539.360616634737,574.095999720066,577.957032012472,554.296746950844,530.787863850597,561.467376637212,580.17399575298,569.226474870413,529.717025462613,474.97564819313,426.194236625791,406.954702931897,425.421439508847,475.028836741433,535.845691363978,583.275770733406,597.405170251284,571.863535918061,516.180713968546,561.845859612793,595.690299440628,587.714357841301,541.771150635622,478.814512973166,426.468709224796,406.880394290307,428.003075734946,479.689868716994,538.7738628356,569.390870055115,579.989030091587,557.422759650603,509.099461234444,455.647157739086,420.643164216912,420.175734608073,454.585495066432,509.858700857174,451.594692281953,419.555887062196,420.660829005763,453.544236129118,504.642552221237,552.909805621122,578.606880621518,573.571938063584,546.022710383916,538.758964419425,569.335631438487,579.880973340644,557.287907254008,508.976654319787,455.714680058496,420.791457967402,420.084243334226,454.574554086776,509.846069736452,485.938679835689,436.202521108904,533.40147810345,572.064676291213,578.722528074603,555.319181979855,432.605755996598,407.245979832417,421.161753774111,468.835786829836,530.95841909714,581.17164149088,597.690611421712,572.880438209105,516.488300662148,560.33861513609,594.814846442091,589.978764401288,548.446417374503,487.96135026379,433.634285333964,407.352084452148,419.714748561363,487.495283675536,438.322701812918,416.007767941749,429.226750518767,472.186995443883,525.86788570812,567.364004401851,580.156131387849,562.122554294699,530.90497152573,553.715339720065,577.636478934652,575.32399062079,542.666245296225,491.964257870117,443.505679318779,417.183879347555,424.118146205667,462.249158364656,516.642281929686,548.187545264733,591.019215437085,593.549007451647,555.472487490842,494.262703022516,436.741923905561,407.857234825384,419.391234312357,406.759925839975,426.102737778401,478.451294496002,541.574325729042,587.543156184252,595.705669802097,561.910082693003,516.755112595423,573.733877762063,597.801040717093,579.087010688269,526.752189160761,463.957740792048,418.05956691157,408.445985844084,438.453643985201,494.453744837971,551.727949512128,585.245113270404,563.060736588404,509.686342404982,450.882083521318,412.319875143887,411.722113592487,449.67122641871,510.861003174585,568.530750686596,597.531726141203,583.894089616191,532.874552962035,568.432116653959,520.765304897817,465.613708713914,425.52076268179,416.493131775283,441.808089448465,489.96963647219,541.376453710142,574.910268434028,577.975485265294,553.993143353287,576.587652203645,534.278427705112,478.892829740771,433.225641568157,415.566491772962,432.790231883434,476.789814176343,529.403296147338,569.160065613017,580.235947981648,561.546157027268,530.822536702009,528.727195452148,469.756538501569,422.397839104902,407.037530844783,430.956171469494,484.671806844189,546.050721868872,588.994852474618,595.164482610308,560.891966087333,516.834001028027,574.430343064848,598.020659890633,578.768232709903,525.420118342848,462.236082576851,416.895337028292,408.698841230853,440.364532622111,497.305259048565,554.199317043891,581.494341617447,541.94986974518,484.868823161889,435.672677546311,415.711748920967,433.061990370872,479.356426210877,533.779586049986,572.249859200286,578.719169741614,555.30149377946,443.023349085461,494.943515214231,550.251121639387,584.717914169963,561.019241811091,595.310832896355,589.284924624455,577.536413618415,533.892390582071,474.619794969811,425.106677454711,406.704786391776,428.719713019963,481.690427903596,543.970468177515,468.447771739842,421.747654310787,407.066965392817,431.357389947341,485.390106732827,546.60598626524,589.312010561119,595.234639761098,560.863510024452,517.132438741629,574.843235065237,597.952008287191,576.90170124027,522.112903670618,458.642228477003,414.733557026072,409.969578997623,445.267003688502,519.577757936682,562.164159503773,596.057860875182,587.094010752793,540.313335109809,544.962342621694,572.413568572658,545.073725672492,557.677547330558,592.801397198221,593.569731881414,558.263356433275,501.781833874799,551.071981790482,578.585301248437,546.246497363417,411.831604251302,448.421850674104,506.702922659053,563.435490283947,595.494563980019,589.276701752607,546.449763071543,538.089778394156,480.820086018191,429.608661671613,406.843005307007,422.933058452237,471.514497788208,533.066857661865,582.072857755239,597.617657222524,572.439507236416,516.357288945327,546.178362270819,416.396349812931,440.848659186709,490.126070146055,489.121651231438,434.519380796268,407.5996890674,418.606599158053,530.89154845581,561.89054721939,580.099474963579,567.792816526167,526.899273313448,473.583516260813,430.466090209114,454.873850754949,508.403362371064,557.155913717401,579.870681266985,569.486336661192,538.82134429841,545.771845468344,573.363464734349,578.949315754596,553.688869777375,580.397698556084,565.224685927727,531.558677674798,560.289472864687,594.78965965072,590.450557897683,549.699217669838,534.330554049108,586.011545191831,550.200547374721,547.191423103645,575.25906515714,532.231425255197,585.366513275241,543.326719993513,532.164448463011,582.248783833323,597.44900208401,572.276611379825,517.851838885206,549.042598514185,592.099493554322,592.606807286888,575.046205668406,577.68749048167,553.822205362303,531.11213550478,563.09564857763,580.225426612264,564.710920617495,519.66332135997,464.6430938144,555.124307898647,578.541238256751,572.363196055883,534.143891680256,509.993235321056,565.404614475515,595.923699797231,458.276622269487,509.072208788067,555.405807552143,579.189994709776,572.917154799065,545.495579132152,420.407061601498,419.766233196109,451.836520801766,502.876144944309,551.646680131016,578.706943964114,573.939271540282,546.066968174989,538.912750381771,569.720269098765,579.79655759144,556.129983150737,506.86470704093,453.432197392213,419.447875602093,538.978041522031,569.850083191614,579.745641266659,555.627166964332,505.778687374558,452.293481718122,441.999990716764,416.465272905128,427.844304590901,471.875366520486,529.543095743232,554.490901246874,578.065130571108,573.570020593907,538.083426104832,485.517928449851,437.907952338086,415.943174895245,429.518954840588,473.591966179065,529.890250537288,554.402032281596,578.033262974441,573.905270475317,538.820995383954,486.579705707977,438.759719117009,416.062040547237,428.605240253484,471.724389565401,527.755898426516,563.815724868663,512.172811253907,456.234374027884,420.490387190889,420.116355708562,454.578015852872,507.997882876748,556.739059401176,579.875472696165,569.5304029186,538.809647192385,530.853484689523,561.732942049916,580.13264441865,568.64410225295,528.033993202921,475.027192579538,431.476804777076,415.64461942648,555.032234830883,578.520946480269,572.59442381723,535.091792989359,481.137637650573,434.505715851395,415.807509562465,425.939751606514,416.816123370364,444.109032168554,494.928348159236,546.897614473515,577.477539458871,574.811995180818,546.880542177628,457.01017077942,420.678799837985,419.860238768988,454.086458255674,507.574290639238,556.53421358608,579.921653618626,569.630022140198,538.840447464495,442.619422469702,414.446229279307,455.46074277689,516.398130576748,571.479697752396,597.443715165104,582.511992809162,532.331843220711,547.033529441501,574.9194288118,577.051094950459,545.868305730128,538.782651948929,569.472648267595,508.302371309656,454.980906244864,538.694338356704,569.179043219513,580.083022315793,558.042714534974,510.280999908584,497.915345805073,551.013107345355,579.237743013746,571.033415438527,539.468920688935,547.353784577655,575.347333787832,576.639007107624,544.007078350363,490.521247656996,440.126238469908,533.862712218664,584.726254775637,596.700912948744,564.73797812111,560.271552612897,594.691358074232,590.050722720738,524.101639916145,567.375172760589,597.337381090945,584.107024127699,533.23701701662,546.711306288925,554.140127757212,577.956427265401,540.044552295846,547.425621440201,575.410733601714,576.660653962544,566.504240043603,580.228567622534,562.392688153602,530.999894610053,516.978300872083,574.850385432192,597.975400058664,542.533390732983,584.460224673835,547.966915853126,537.614928609724,532.199731460566,539.488054761599,585.773265850756,534.469992804785,534.36865920945,585.836779682757,596.035400952017,527.761854480192,545.034553202818,580.437135850966,563.170650844459,531.12754688265,563.747816026465,580.37887483018,563.405269480597,531.184167744843,556.42973345942,502.245030284092,560.653882714463,594.826447258032,589.956195246608,547.032566970516,532.79944426763,583.29510582643,597.162495595249,549.367139535143,592.038176713492,592.138875042783,549.758093401877,485.705894372949,564.032729916292,595.589266376414,589.01823550288,546.376217247619,532.534030710698,582.710944152766,597.372493374927,571.044744753918,476.737692311034,529.29889912882,569.10307102162,580.083327303513,561.465760690292,530.828601871525,554.455023421781,578.253704155298,573.887041246637,538.576879356308,556.674847726609,580.017294995557,569.655924446918,538.855130134227,530.8755651038,561.749065944792,580.141318361539,568.624722262671,528.119181593552,407.54355874638,420.082171794857,467.243483164398,529.565997267361,580.471845799029,597.81341010613,573.280905610934,516.663264747774,562.046895612392,595.864760654338,587.224956650651,541.017836156348,477.838713194974,425.781834367055,505.546554794111,565.408399657101,596.580668396925,584.403063212431,533.517072545024,549.165748961381,591.874315199756,592.182186011422,550.920127067318,487.247115544496,430.633126903561,406.863160484445,425.491410339892,407.48356089242,434.834294028157,492.015788445988,554.004037279471,593.057612053426,591.225678047609,548.497127431486,532.180642558197,582.325599032558,597.417895534341,572.269618406336,517.869647409054,457.25106661551,415.349627457272,437.513187246995,415.805479478415,429.781130465663,472.772502949188,526.362989871274,567.572609604776,580.128322442126,562.034061869561,530.890661915549,554.818600076935,578.400279078572,482.886664463413,435.736045113963,416.001752522111,522.181813558391,462.472216862046,417.793249557088,408.163610277467,556.754690084437,593.828460796795,590.642547947589,547.887835050918,436.784477381777,408.040973005319,418.735640330003,465.263793459814,527.880569326342,579.571587871619,597.641524063241,573.465217897362,516.680848150361,561.812764916175,595.655048092357,587.536090764272,541.921758853345,427.683724202915,479.326510079498,538.761409021871,580.021820364075,500.468728746445,442.593582475899,409.22278083809,415.879700727328,460.677137730958,561.093500346981,595.291469897163,588.759333972674,545.198431779366,483.476243735655,430.044652348272,407.084574574164,423.548253168351,471.842738544569,530.979836963476,450.305875583956,418.690327960806,422.102515062551,458.424223820347,511.570034509825,558.716599213741,580.091561440773,568.979577642099,538.594387776037,546.753047311569,574.599507930639,577.619530591388,547.79777581004,417.372200645424,424.641714138899,464.945859527008,521.392477876681,532.923999125828,583.475474466403,597.268627270288,569.218947199526,512.103381140159,451.015922251018,412.092316155126,411.598330403499,448.927448540366,507.243522286307,549.564680146377,492.051206803597,436.851341611816,407.969987919316,418.72421421505,465.290646375696,527.860760454778,579.600850388634,597.650139363431,573.464446616653,516.681571397094,560.696936185043,595.125194434726,589.458985131406,546.864413020602,485.722766939529,431.769237237362,407.254032682095,421.477658478869,467.987507923784,526.781731992888,573.225197141625,406.751822243261,426.545284931085,479.035468770695,587.537539452933,595.645031941125,561.810955911959,441.254266248546,491.832152618904,544.853618406861,576.906221959567,575.163962459259,538.446609916748,568.625938245242,580.104978878293,559.695557802698,513.72782319531,460.677900066905,423.355906394427,417.767107155238,447.103384195832,499.546545100064,553.23988218886,462.538584472574,423.598022621929,417.784319265203,446.833775450721,497.891987368049,548.684140116759,577.842062311272,574.50591203993,546.622770515048,549.468511686626,492.051545548862,436.820600299915,407.939963838719,418.721431402721,465.190167096932,561.127665576568,595.3144826463,588.830418788781,545.224538762518,483.428728727646,429.850616308206,406.878041707235,423.586918526044,471.82534100386,530.907096641299,407.540093875717,421.618989088856,472.196583136425,536.600094256723,585.473866905801,596.110481278315,562.908873553274,516.868923015455,574.299247074855,597.95910938424,578.389371701633,524.95932642331,461.794192575711,416.460761673447,408.875570860461,441.058357358469,505.882043786864,555.700506322475,579.792607961053,569.858348466512,538.961592125967,574.583013854133,496.514381802066,421.909250714321,419.164880611037,452.318268843349,505.813513105032,555.666137683519,579.861370755563,569.8807913525,546.905604659279,574.792086647059,577.310390334948,546.80554637601,494.865327398553,444.082129754084,416.958930413687,425.913334253123,503.308229389694,551.930242131388,573.698629539556,546.107588235997,428.980216684089,415.979987446759,438.369866050848,486.039491397577,538.619352191268,574.070935535936,554.448312138003,548.355993902737,591.193649566733,593.431235124464,554.611704251918,516.443861798409,572.609968629815,597.701416775277,582.22130828395,533.067003917785,471.486586915462,422.818266245367,407.101239345616,565.534631119541,597.1794873629,580.407785193305,571.801612127836,516.214723756693,562.087218616733,595.806348044003,477.844734741317,425.723426559292,569.939127232391,538.960398234853,547.594483949523,575.636155136504,576.102896599346,541.995859099837,487.489957996872,579.784043618801,569.969253206183,538.967148944254,546.754801262705,574.82892804246,577.874615485274,547.943046537891,496.544408366607,445.675507524083,417.516049653249,534.361528108107,480.397329161052,542.851796146688,588.244825038111,595.907102619369,561.703428672005,517.532662044026,576.157330224438,597.710457963397,515.603916105483,569.75417015177,596.805184725945,586.907228448267,593.931397781127,590.678845762209,547.875484908432,539.482577024487,564.257186568397,531.35896267126,580.018257912183,561.334935421891,530.758439762057,549.690171620662,560.02667015182,553.838066425707,577.641153478078,575.053285460303,518.64411378425,569.807105846247,515.5969882689,551.905486366485,594.212498474972,595.90477303821,562.666523709043,516.982373421527,574.837568923985,597.945396917734,547.886491696247,590.647718850436,593.961257886982,556.795461044144,496.118137091116,533.128141922494,582.094167616211,597.509296850612,572.393819267946,516.353152364299,530.784551646499,570.017097684541,579.911396885271,561.145440456414,530.717838553091,569.236047157589,581.108639755915,597.896963948231,572.888896908963,516.492374038103,597.472262152532,571.75586999713,516.176819973339,459.698398161099,523.080592343104,577.408256257977,560.254355127566,594.876879157909,532.196127870293,582.381826847802,593.483793112504,531.237290685625,580.360468873142,563.322826401493,516.502967651272,528.042035807413,568.441780130829,580.170841684671,561.736845050768,530.847655556985,576.554816593951,547.406625116182,539.076457448443,570.189833992972,487.423844018981,576.122602897337,547.547494195679,575.61837667132,576.312163541097,542.481107359368,521.082735627926,565.35890133513,580.286097895047,562.797494325841,531.082381083186,563.665473951742,596.582078006917,584.59287291881,534.171078825984,469.081776264592,419.565904661109,467.876056631189,530.089565550389,580.819807387879,597.82732805095,573.137022571533,516.54907139511,422.512794101707,532.435129086783,582.765038583629,597.448323261229,571.201666024303,515.522941608762,454.695486633216,414.060193033231,410.093973663666,516.181004557125,571.797392810593,597.437668150348,583.35703021,535.850005813915,462.804759972991,525.732443565201,597.717138817308,573.945110796249,516.812458560244,423.496202906108,460.959955886213,513.907942738404,560.049430246323,580.319604306924,568.698191170343,538.43163888898,543.891432186683,490.499352916921,440.140812542827,546.341015577786,538.435467693308,568.593344481078,580.278331548907,461.33960342062,423.641098259763,417.54123850835,446.151910560351,538.363601067363,568.535719670976,530.83526346554,561.92486500152,595.748107067535,587.436860292064,541.642558833562,494.952125392738,438.782384970408,408.396398727842,417.812696274218,463.549209194802,526.515752945057,578.929645726424,597.675149869138,573.752952385344,516.766028787835,406.800237067127,426.035117654681,427.094626887954,406.931555613529,568.884663062887,517.601955676548,457.189620701184,547.714067860897,590.530330922833,594.084923780775,557.721332535138,497.547330707607,439.749224521026,408.711633543041,417.043640867473,418.915286011539,538.696532382702,569.201607269078,579.929074404806,580.157311601841,562.397236080127,530.989956535176,588.412678423629,565.395840960459,514.035988006275,457.704108613805,421.129243515575,419.896286369993,453.735161913478,507.123692910041,556.296002570374,579.792875776269,569.66304985403,538.873119823558,546.56927365641,574.320548290187,577.880672203784,549.095473121308,498.693421656672,447.720887150683,418.027960554539,423.035267014945,461.144011044601,516.775560158587,566.364944747222,588.504720841598,588.205351797532,588.224172288632,588.23803062455,588.265629995426,588.243098330052,588.235273133371,588.185202511338,588.239358682926,588.227345820693,588.221044674622,588.225060447351,588.184517619635,588.227191469323,588.287967530193,588.228115663872,588.209453551539,441.38061032069,514.28000846005,565.558866598313,532.295736324146,582.505247636105,597.518985582726,571.754179937348,414.66069924255,409.691354204465,442.087210171059,473.397087882571,423.343262201166,407.020861014088,432.689268640558,489.586421580673,552.428371925474,592.642623004756,591.599227532701,548.829699476217,457.707907354039,421.65750110056,418.796475447823,449.726321074234,500.848726457482,550.721654861663,578.115994744022,573.987992378647,546.340999809407,538.237024398933,460.943333878897,418.075773361616,407.91402077257,494.944815249583,490.159419213697,440.880094875861,416.499990163979,546.875112297893,574.755106176351,577.400140323425,417.014392600739,425.598969503798,467.192025870181,422.914760790811,485.513847375802,538.361727012157,573.894739620994,578.283202919151,554.523042339587,530.741383697091,590.983832163325,548.177347459208,533.073145516433,583.719350550959,597.187556468978,579.002447734834,597.909280811011,573.767905027702,516.752332712696,480.637292001327,537.463116625348,579.082474339392,558.408344489333,506.790979514474,453.436524714221,420.040274274135,419.818359317268,452.263199817624,568.404043807685,520.786340310957,465.681457025698,425.636907036305,416.673271276664,441.757425656394,530.96773088895,562.216239410655,580.099693754586,566.850378127659,524.557388040351,470.722127403087,428.401200385881,416.200453056413,439.912046905308,490.230494818132,545.855114748711,565.458986951719,514.296825810887,455.894552659275,415.035601544795,409.440077385313,442.291936156863,500.330935077099,559.464412018158,590.151795655881,547.301174987981,533.072783653522,597.393230087631,574.592870707427,528.382694497968,470.790832260291,427.29017032984,416.66185849845,442.63789623716,493.198603613243,545.73308420958,577.136610347833,574.984359723532,547.046068467463,538.751903615287,569.295931772899,579.950847464709,557.465295818306,419.973256914995,454.192817112222,509.432460116599,561.716437984542,469.480729922831,421.447921860169,407.07948238493,431.74403033568,484.406495291291,542.486628054971,569.399678189807,519.624531315773,460.296900032906,416.909848989629,408.535021187742,439.511199113222,497.490583398241,557.776897764542,594.259223883269,590.785266342255,547.967435114218,454.72644306788,414.449818434334,409.625776610034,442.973116393077,501.062376244894,560.101433734246,594.94024380091,590.36674497872,547.345643273468,533.500960950504,584.757113027268,596.890337547353,565.675279886752,505.921731547852,444.659102875912,516.863672095686,574.112079054229,597.788028498321,578.351949789468,569.166830745594,580.158480723682,574.386891000509,597.875160466931,581.749831513116,531.901759538813,531.843716106635,569.952050958508,579.798900234785,561.081901357,530.73347404512,538.418476845368,568.6767101947,467.336973521815,580.217839193086,562.692054286804,495.558109681039,440.354278094907,516.185137178856,541.307709033926,597.61542808166,577.196089996439,529.336058476298,547.049921982867,589.907347319226,560.718506494377,502.242716470653,563.123240696779,596.460380859231,585.714032044936,578.755488374267,573.625924923741,545.896189410129,525.054711779,576.104827473511,597.868082792657,580.984179932895,531.366874825394,470.302018078112,522.013079918249,564.012646285424,580.582739183173,416.844354233946,424.968294553949,463.514497449826,516.155843200804,561.369574607875,580.597701914793,568.414335015984,538.273092590734,416.396019232911,547.191123888284,575.186179272555,576.855067143615,544.765410081022,491.7942980026,441.352527730087,531.273427758767,576.196276980613,530.918268131837,561.921006042106,580.034235773039,567.79015309139,526.643430054233,473.250212136838,430.134810866315,415.751378662291,436.907206686594,485.370032318085,541.037048013985,552.705586456236,497.444068506057,444.449665410076,416.994979935514,425.715169239248,467.01069882563,521.632376433648,565.681034194757,580.352877751305,562.810330922989,547.857307851277,538.375724831724,568.417140677981,580.417330793406,560.547491660517,515.245893745417,462.44484921012,424.267109669651,530.999084919295,557.109500894157,579.876772841818,521.16946302577,431.321260831944,555.191679689504,572.579360346666,534.077827537648,555.565495273521,578.795875863479,571.416759238023,531.786886465624,476.671270772832,431.010788815837,569.409478495103,538.808823463698,549.064770535883,592.064738676545,592.512614349369,516.269725378026,572.066282317077,534.602313678417,473.364068345594,574.074041754718,516.863216312758,554.826908819445,579.984620770667,530.875341522637,580.129020830401,565.563715976373,531.638790043818,555.669299173837,573.067872540845,578.574051177728,596.765504447871,545.049535298092,560.046671741909,530.558962949497,531.358084908227,537.635338947807,576.446182700094,517.599083354138,534.341761579622,550.192057398563,592.693674547339,590.960320666262,558.174117454842,578.770444310166,555.382096626947,517.874676768367,572.32623768616,597.643801434147,582.228027725516,532.163646840573,547.898409534573,590.583408186637,593.901828390841,576.340314087959,597.864063584227,574.985120380915,584.928725990022,534.681086978596,469.775916459315,558.984541692178,574.99745786285,577.717424900602,553.96784457172,530.924706593793,562.025601768954,567.849598892048,521.170646924061,580.330135465449,449.368445292938,500.426986212204,550.236357460202,578.422518947229,574.09479054963,546.357215384668,515.152101722142,482.42206193288,544.387393829213,588.48522254905,595.355243090012,561.312441839668,516.822396106837,573.895793475347,597.690789983986,578.819506742216,525.744032357107,462.747600932815,414.788120463696,563.081078448204,596.271777211653,585.252496670451,407.49431459321,436.20846862025,410.592570510288,447.154808170099,508.174562766945,567.01919361882,596.92323198865,584.032823907226,533.227338516541,429.148512591791,416.113000213679,573.726193763813,578.045072157647,554.440780078553,427.639491795029,416.502475143471,442.247109420362,492.921885772827,545.583631267841,577.203253410841,575.111953231882,547.102017866127,511.852502182682,458.781767273551,422.283865526108,418.622624570556,507.207129323708,448.946903720199,411.658110738479,569.111012965733,583.293777679319,426.353183089383,406.820452143821,427.496938248754,587.847675036315,595.497169017078,561.580326600676,516.75436794047,573.717299614578,597.706408679746,579.074213894792,526.750545927826,463.901047443635,418.024906837414,408.444947548167,438.505601770961,494.448815856603,551.720552177563,585.356258827438,428.561529554475,470.963087435502,524.778543790916,566.991011633136,580.149026004277,562.232233453706,530.961302346523,431.994340708793,478.322664478487,535.204832488501,536.369447240258,516.485880521825,572.594317076985,597.55022504225,581.717208782911,532.327015754612,470.570076281368,422.140494230156,407.167531625292,430.730547816217,482.490715736486,540.462984355067,580.418178781227,572.76695806706,524.646838554275,464.621149356979,418.939815442755,408.004286559932,437.300648016937,494.878717649339,556.000761388211,593.571484201243,590.869583213249,548.085319204083,475.089631020992,429.465358895607,422.07465103323,458.800533639885,513.812824589979,564.087769068139,511.359961088578,558.57056701787,580.043781115247,569.021061720567,538.612147536308,487.313726970967,550.882900739717,536.412160464249,516.581086709604,406.914695338419,431.509492086599,592.319261177587,591.804709978415,549.047507246483,533.12930070391,464.616356477956,519.680940746528,564.722187584192,580.347935797204,563.101946121423,531.139758839852,554.824144817384,536.307524894942,482.818323121935,417.356029690231,424.357257956047,464.606364650298,519.557488774924,555.04282073253,578.573100989224,572.680786661052,481.161681531617,434.36945994572,415.515061940578,538.255720272471,422.404808877669,517.197422428459,540.330347168538,517.875471882384,457.125780089251,415.281205736661,597.875339904382,516.815434776525,573.923322883272,440.761942960044,498.682227939971,558.427191133721,594.389440477091,590.663071228143,547.775504322248,531.138924212343,554.219889866888,577.928049679444,562.110987706399,530.910441452047,580.379831713918,563.089458444518,531.135086942769,554.850358901479,578.383938680681,573.125797848337,536.257188029032,482.841724413267,435.767385310801,423.501070719145,460.995656973113,513.951545896483,559.974488822768,517.510698089331,561.679691676457,496.090554381427,556.895709220925,590.63395692976,547.895359021455,530.696523734502,579.613261711245,583.356778216812,532.811078177279,556.362849062907,536.692280500535,558.145642627917,566.078423563141,591.661013706918,548.828395554243,561.557703871145,595.832755141523,588.034315752776,542.942067106438,480.386898468973,515.687193595483,577.445110576131,557.730906206671,562.462026668608,530.988444448553,545.562187581622,588.945052853,560.983043510835,516.255350370094,572.08136991167,473.397548203046,539.211727907281,570.372854026515,540.187995307047,554.179000532574,575.47263281519,448.199203785133,579.386436840569,570.427030859329,546.549255254051,549.197236455011,498.789907146078,555.20315651017,517.393528945701,575.612564764954,597.832926127778,574.853708000085,516.649041965079,414.815153530437,410.057678777179,445.784661251073,507.016122757764,566.142270302609,596.72974244389,584.207530982222,533.361231909503,423.25588217476,418.440908039139,417.830360286289,447.284459830662,498.269543837964,548.865721933772,577.844131595756,574.369176654842,546.596110545571,530.860314102209,555.607352618114,579.002533590148,571.641081346287,560.25534061073,580.318228946243,568.556528935023,538.424023437728,550.952809648924,440.378501495021,488.304793310294,554.146833500394,516.768003337318,573.766515405632,597.741476040888,531.635413155645,516.977496896405,442.663299173071,500.6685122746,559.616248761484,546.756510238506,574.584057192492,577.541044916365,547.847860907657,496.549477955885,445.647384852852,417.359523436223,424.610584539876,464.921877651281,521.407788151368,535.200127387568,478.484111624549,432.183734888941,415.850594169163,435.81379087819,482.8372688503,536.325150803797,573.020845980046,578.394389988194,554.843038604555,422.872888337205,418.782185458751,452.090610669962,424.483029379008,417.275605659763,445.606860515364,577.631940955512,574.635533411308,546.758152722164,586.197739620278,554.475999274424,499.422045166565,445.908011468552,417.284332112508,425.46816242545,466.115880632866,520.74164830859,565.23955776577,580.352263845209,562.906960041057,531.103436447411,554.547715758061,588.10454314677,588.206385036873,588.252712535734,588.18609027636,588.213925156766,588.217146834021,588.243395606837,588.257736890055,588.232183259263,588.223822098873,588.225664973465,588.228937322208,588.21202373364,588.198983209008,588.218408329063,588.124218868748,588.000606307284,418.403153712341,448.550508366038,499.619784010412,549.847381386526,578.006244683184,574.210582100945,546.462556213563,452.484197428499,528.686635327396,409.870117823061,414.701484932957,454.676825043507,458.763884938928,415.433691973666,446.206042246579,417.535689517602,423.844708559298,560.020450959585,580.157407032125,568.53379798508,505.456646928374,562.734093600565,595.321391691949,589.359985961087,546.572320601349,532.964798391447,583.523451602917,596.965561084012,568.391387510888,510.696812125354,449.512832870986,411.51567545106,412.476044863788,451.27661091708,510.219425810329,555.000503354766,578.553525545354,572.828610233706,415.652775767321,433.476748839529,481.023982828364,476.462560321179,431.78493204593,415.419370205527,433.521628399234,478.086181017895,530.420775802372,569.312923024283,579.844312797978,561.251239848268,530.782391405591,481.45406260032,434.623205082787,415.71151307178,515.267585939532,415.410854966604,409.342018097976,441.753108926993,594.352116819205,590.185277617576,547.387800386812,532.033573579673,516.785873768894,573.824330976755,597.712822379548,463.326631951261,417.588747335157,408.462020205262,412.823390674303,411.427147727274,449.40107017072,510.334702718825,568.103593148295,596.943480584423,583.605159281722,532.986918950242,584.662429657667,546.970833188572,492.690706020737,442.513338306933,416.68240542344,425.261375657217,558.382892638623,506.801154397557,453.423597766647,420.016327140938,419.932437586516,452.268546898705,538.618941219288,569.03019345179,580.085336126443,558.533350857502,511.333051072107,532.36225595191,571.413145909119,516.034265382331,455.076936894108,559.223744767122,504.72688194559,446.96781202941,410.996833908322,412.813010975239,547.037432169236,530.825101691918,416.901155227704,424.730014692891,463.561469074547,434.034615008373,480.680646221324,534.746133472461,578.583664668682,555.057475396952,548.593440451855,564.320523174335,594.866847621742,589.74962856977,547.474331383011,576.24344881207,547.213336363523,575.228252451858,491.793244321502,538.857809458909,569.666384074118,579.995705079662,556.830865169006,570.955184070634,579.842720320751,560.74082018183,530.63443772411,530.807409991215,465.483307576428,425.054389028091,417.257419149115,446.581092501018,500.622952639239,559.341674654227,512.75475341354,459.567854559005,422.773987304826,418.244735392067,448.735204964216,501.723963331659,419.810997091274,407.707237004235,450.802101059363,419.358686533703,531.734987404291,421.691992324569,562.850063487491,534.695104782746,480.659944811568,434.02983578677,554.779731034584,578.540826080742,573.316351641402,536.402904426094,482.82555004983,579.350983267376,556.404756222011,531.147931046124,563.336145254252,580.479161923174,564.102892358609,521.850431698932,563.036236733024,585.706969524682,459.102450136876,559.438490727866,562.114836689896,531.011669039883,566.438952398335,573.515613591083,516.753517507339,537.614515029017,531.360882550833,515.621250794404,596.861245394451,569.879914486634,575.258252201933,547.200606163315,531.359220855526,547.421328989094,571.008147901012,533.098653209187,582.150147542131,596.393719894567,597.860880397065,575.287452128581,518.613727619807,454.71680692293,538.444174639032,448.803931563879,575.407118619785,598.062765292404,575.810022624241,520.009947612307,456.350540696605,410.984173196111,448.596137873911,580.105926859471,558.120733772612,510.255586137915,457.043463338184,421.400049663707,556.863003012748,593.866730608824,590.696091448435,547.907701884261,532.619020357222,582.997049518926,597.515242177915,570.820579175581,514.977461950468,415.863359190325,436.87148980404,484.263397573093,537.283058095305,573.435790605762,578.203481166732,554.652877398066,548.080107713058,561.582667699564,595.479735297993,587.787850976841,542.892869692706,480.344960648841,427.488134485156,406.792744657843,426.238896451956,476.984040881318,496.207804772349,556.782774272673,593.796194335696,590.741702781616,547.961781206558,532.283069549202,517.003498374717,456.341058376945,563.102560347486,509.695301972171,450.877752272306,412.388471978981,411.728571485702,449.812253462308,510.899420779762,568.474551408298,597.042551071844,583.52873710814,532.929204906468,451.445571549955,505.028453366674,464.628717698993,554.378466132392,578.01062339532,573.871050453356,538.806544429729,486.537797414548,438.744343458726,415.994090272038,428.43788422957,471.640549817773,527.760526622085,566.995361790066,580.257055761191,470.768126281976,524.582439490605,566.88801807546,580.181257324381,562.302947985417,530.942527355142,438.544415631216,496.164067523113,593.814761363651,590.677360237324,532.482653240104,582.781819148664,597.320187455126,570.646116555936,413.61120921236,410.310850744169,444.766482017425,501.623869573038,410.817305345231,409.105523689951,443.474935534306,417.835184891812,408.248729840637,438.580784942487,593.855002026653,590.733205907777,547.895526843098,476.759540202727,561.475618596253,530.802413615947,574.051498448458,578.312932837253,524.922043717321,533.155708009279,583.825991732552,580.13172367818,578.703883637754,555.398103264547,531.021793946887,562.474677896882,580.3955313043,469.525521044842,427.447949011976,568.007276314383,573.510045764378,532.814197160574,576.158295503559,547.995763805773,539.475857794307,538.209420256357,553.772705010436,579.086673410075,573.415723031666,545.750464107278,595.321679559562,589.516727400306,531.990525231351,582.020013053164,597.717199623007,531.198518210206,460.32204699297,580.42303882432,534.006668677681,558.343741840748,594.122035316791,590.304252066036,547.486467205072,407.08157784239,458.711848108619,511.82615938809,558.816285702979,580.032391907927,568.933180990397,538.581809027026,574.069170649343,554.31397404624,567.938411771363,561.863944090692,530.883161178281,554.27210545495,578.057244832419,554.166268094374,578.070481310355,574.429058087138,540.159332115221,532.950734290047,583.543002104416,596.984100037605,593.650536663627,591.077664220503,548.264364258944,412.654358059066,411.618877773376,449.36102493944,510.364227127272,568.243794148692,596.88830167995,583.572275866084,546.277458067314,589.035888713554,595.599728225044,563.99056414235,507.555332489664,449.358109829197,412.319183692776,411.070717457156,546.058731468054,486.773556380291,432.072738388288,408.269122064339,577.549824549817,574.612789387695,546.765952941834,539.129055454176,554.237099951311,503.066732735109,457.014387221413,579.999294820459,569.163588104864,538.663352220433,581.501313235782,435.687135500894,415.735918440144,433.088913277011,530.919711781221,588.009896938686,588.215677035544,588.183364134397,588.262911555262,588.279361643379,588.229042947807,588.254514235552,588.219911847441,588.21554542061,588.229916915421,588.236983378135,588.223942412,588.184105906464,588.156806409805,588.192020026007,588.14502830188,588.045375009962,418.037189517987,423.124962170226,460.182538251815,513.211599524021,424.707079116516,572.737185196303,597.573117142779,581.253312363698,407.327687990281,484.397543057973,542.293705159694,468.458900374807,445.288419132253,436.045962408178,415.613794767606,430.598907678104,474.036767524733,489.497425269184,436.365846862789,408.3017873408,408.047148865256,419.252754744853,465.02468952434,495.31959326181,531.041676264579,562.648091514129,580.207478488965,566.018499164158,426.654235445008,416.662298597862,443.195690650972,495.349239070491,410.101476227949,413.947313970831,454.553076575395,597.2857993507,582.620651146747,512.645274363589,559.259552314648,580.164809709631,568.797833798378,538.51870625279,578.935808048611,597.760314788082,573.83913877547,478.882239700449,433.097317233616,415.462439459595,432.735149497577,546.663780932149,574.480438862728,577.809123076825,548.53582756429,497.710652676981,531.452134679774,597.502535429768,572.686801511084,516.45980712397,587.282212721951,477.46410380875,579.054046828021,430.949063461976,407.210007180066,593.382942384437,596.972783039736,574.562845259338,578.06547057256,504.623729361793,446.450682349215,449.381134663348,443.715810117951,577.207788965483,574.772253706323,571.890702706668,517.503051349748,538.988993785432,591.444117146504,555.985236291388,516.354097932404,572.385660540044,577.363442771425,546.173850213881,447.243192403424,496.007494750703,577.859535788097,570.018534662068,513.670465114252,452.74938173618,413.107790519303,411.030031016382,419.829703290535,466.872418612993,529.233001872026,580.215960334563,597.586981971341,573.117786583776,516.693388676428,546.925308083049,582.709395504838,597.417563754861,516.36536727928,455.544211209347,590.121707572716,547.28161021855,521.9277339411,467.383998070569,517.119754703341,597.317116180355,554.641843496977,569.195214534871,539.110644109981,570.08404356237,550.166429582708,596.219382659698,579.795607635095,547.92066102277,576.190707079991,547.489420162675,560.778977851721,538.281082485886,549.708005245745,530.896583386465,548.263611022934,591.118990078528,593.529624619347,555.303640160885,493.683105815202,436.201927259906,406.958503607947,516.3549587768,572.40522795125,597.569546544645,580.137875474494,568.745390012505,417.378357454094,484.57423743834,437.14865760472,415.810414816673,477.000463235989,426.377589806724,406.978947389147,427.710520994209,595.51298766773,561.58327953293,411.798109379765,412.402994004878,569.197975311975,597.165353370435,583.322041350429,532.794948431929,515.818921390992,409.032043771761,415.82183005591,457.739170204141,548.650605286816,577.789441504098,574.404925222958,546.636648794912,516.681703174799,573.485884563589,597.686751194999,547.166197100214,579.097629263905,597.724625475941,573.754374844652,516.774409769386,561.983437876293,580.129434069151,567.709433558845,415.706815961693,436.911241833756,485.375511349007,541.034353674876,554.674389679717,451.029842439124,512.122034830594,558.788126276985,409.197714146711,415.874522014637,457.783243450341,516.572491155474,594.194674079101,558.086608561452,498.117496065159,414.170656219784,576.230385816538,562.164306199648,595.861999681181,586.992227262718,412.176467492716,544.857919691931,580.06598928461,562.016783210373,533.130255346128,583.828458741581,567.393449862601,560.559729454114,595.017428027512,486.683492842963,432.585847668944,407.252526691505,551.300276624529,531.863710816855,597.602079949827,549.223977721651,577.947988610677,574.346550786622,546.590335611178,547.212492270536,583.440520764002,596.862444545367,580.332202645444,578.692745678381,516.984601263982,532.799399650029,583.313963091879,597.160934799865,569.172640151643,512.180774631395,581.48423070716,597.479553526569,532.530499926063,597.660914551415,531.822373131492,504.129420810309,597.716656328953,565.716355505616,550.041532416361,576.435121399042,495.325805984317,483.215991132118,453.597203693728,561.986398610914,533.202066036515,576.949853107693,584.15545702522,423.236553272955,560.467414998661,415.44970852788,415.689519261049,494.879586449064,451.83460062057,409.424273524783,538.643842910339,548.082916432178,436.460440611267,595.263129831587,574.591903890356,457.701015979399,584.024639696489,584.323115452878,584.518601693743,521.642158049931,415.621783095608,546.230408625978,566.480369688051,584.111897078159,532.234599855954,413.825489356707,526.87361035977,416.332759574543,431.035050638625,549.048813191452,548.207890740624,450.255338068111,577.332969510791,524.696447919081,453.71746438765,422.123304160085,567.293556677093,566.317252341553,422.229875447011,568.565598590057,477.297101612267,588.271744031466,414.24662955989,507.781393182017,499.392203900708,564.401556256114,408.781892775237,429.135736463508,588.075578395174,408.068951122411,550.849359321748,583.745351174942,575.762420564164,584.236575366832,432.416647436611,506.39502164378,564.450296615518,424.697934809155,505.911355175402,481.774820512685,497.875258254607,584.202785112437,565.681376699022,532.377836881832,504.104224086807,495.384420968624,567.712203044097,444.975880650375,432.369279449023,475.08306197795,487.432375342283,545.929082707737,458.222003557165,584.323546806453,427.001424655973,487.640463842369,485.385288874707,432.353319393048,466.912947152016,513.455284944363,498.143148193467,451.171364444709,516.789241778011,584.186397558408,597.941114552983,584.052623669985,464.148963931162,583.938796445158,406.710846246528,583.992405770562,547.612353505714,515.956993046447,580.37488905995,413.621284570283,416.604733161134,513.541471745303,593.748762364593,440.19845853676,417.340275873514,575.523589250784,583.45465294456,530.71515711229,417.045592188978,552.566606400921,576.992053109381,584.793184856112,433.831395618158,577.027565132089,576.19174811478,514.107823637555,510.164866822415,532.372304449132,579.235423699955,549.674818665658,416.55493639236,475.732916934403,589.159416023965,479.289976498257,461.230515079002,495.928909923215,416.504267705635,566.008649542907,568.479728783288,538.332262992354,588.2328884625,549.916746185711,529.39748121179,562.044829194077,425.784642285391,460.50489518413,575.529871367015,407.255031922384,584.231462121184,573.320600239579,494.190775254793,457.160192273116,420.257074980919,595.430604512108,582.737504603799,415.623813464518,533.441240858725,407.768396273105,562.774463370251,584.558964430043,588.174993098712,565.643966468305,424.299238423639,588.235422454514,459.096474253967,452.316482186463,544.50907802984,574.458863329793,558.617737425904,415.770426798816,494.397190969058,583.333003350895,537.387937308749,432.213049216401,488.768209176043,410.220782089254,415.644669978118,475.562573488256,576.416800577335,478.403833136804,474.06897055064,412.232276979674,550.233877850082,471.003234338393,415.777632600978,490.92388985803,514.698598987672,423.92971179542,474.33362727862,583.813163758372,576.14492115111,514.544170203748,412.485195731253,588.062884348407,547.622155748946,425.550160653479,550.024966578896,514.555399983182,564.687083390651,411.315284234439,461.148229354021,406.598093621415,480.830153848347,412.951814975916,573.582446752563,514.636337168062,562.563321861708,584.143913061019,517.67004967976,535.341121612623,567.963824887,551.382034534884,445.366986324561,456.416686434939,563.849817208405,450.766604351253,428.647288399538,580.553237481286,427.629718935309,450.119161676065,583.706517801401,590.742897664407,576.543307393548,514.610668719595,412.425087815639,549.949202473479,511.005756011418,560.749242317128,446.569482291134,466.753924615027,597.770333345316,463.549729189466,583.140669222204,515.986850154127,476.96957708825,549.82942972877,514.028142743642,431.901604359438,422.239942293012,439.5198347977,538.906730372565,423.810809734266,563.59962618759,588.872414765966,447.236364292686,416.947306827873,423.931635542049,428.964082401416,520.504535216245,588.227672777228,539.23425576175,578.274783115087,584.672945227487,438.461874488913,563.727224591125,496.34903850122,549.7068470028,422.71294696224,407.559428986099,514.02668346248,570.773673299182,412.784669267767,416.048678315659,484.03987949698,588.029527823004,545.371948566183,470.802914710857,441.224452238005,469.484375852512,473.461682314945,550.002447911359,557.776823319782,577.581206126554,564.948183811478,479.233024597184,537.530919801705,407.305296065029,574.758313017704,567.9468127564,463.974838199695,575.435109007761,496.486752100366,588.152547282974,423.712154326862,411.427520961554,407.795834320294,456.790616408145,585.345373464738,469.42758180092,551.441586219712,550.041382540766,564.415887498763,583.882029080875,461.602909493177,563.5915193812,407.069233143166,459.228469992292,427.204565452949,495.452008891904,535.630129910753,409.019157965536,576.195080453968,565.752456727759,576.105360799787,427.001202194879,489.41298528117,548.401708300305,428.082002372862,544.09137881453,461.223232794061,583.878655916224,429.130460041428,437.008243990371,415.6332961325,452.327575666892,418.247223907349,564.377908548496,583.872647802312,565.409390653867,430.515882804837,571.784922135613,462.91254809069,435.647481874058,579.782376318579,444.50707618439,578.276815074158,584.004626551042,417.42523555827,549.885995972026,476.747389763132,583.871923528456,547.009080778112,580.346049525063,515.180713340316,416.293023985934,565.957461741074,590.596858388193,496.501135877581,583.884056660752,433.148076691032,456.65782683357,428.816597643551,533.876069871488,425.602757360977,597.732051984363,552.600220373708,596.209201943043,583.95164509623,417.659332884425,431.841159429264,417.25278017221,433.289678479245,408.778407234406,467.526852826555,512.281328580276,588.156445772158,542.726089393826,423.097057007246,420.375046584059,584.426840550931,417.954878871571,453.553323223077,531.855109146636,565.953058822296,566.402754045285,415.236316458288,584.332591908443,495.308357947556,462.414521871104,426.266118764536,565.985163280294,433.119651379136,467.215973342213,517.142645130171,593.516196488756,561.847756349485,408.273291679926,563.199380324029,416.303124335349,554.168756090816,445.130696426751,588.027587290863,410.913613681648,564.564549632148,452.306699481374,424.694201989236,465.470932881815,546.79378404295,465.847079590741,551.411927824621,576.551527807487,561.649695733307,568.216704067192,496.777119592717,442.821600177057,526.722852580421,588.090232363021,546.227381896774,406.843277558751,507.478415930658,415.643629240718,575.38499712258,549.074039417485,431.059468481751,414.17632607535,440.353871956288,499.277689250609,565.537020957142,575.527875919358,473.373040628385,580.690987750787,502.481392335229,428.048931446285,533.399506545641,525.922224172352,576.602885668521,459.973258262992,527.319181184187,443.714884432595,515.915790489667,575.748870282517,478.310686156427,495.052278496621,489.564392884494,568.619181025657,550.885861945155,418.965531471751,576.354366849859,509.778370160545,477.775880861636,540.278458156851,584.393829902686,564.120662083708,574.965223598698,580.050466809898,584.331355023057,450.256334128555,483.290897741463,592.026910987056,417.462567721583,477.790712080089,528.499779586646,407.002947677315,588.168324126165,499.375027118583,597.748340047775,434.664800992771,597.180200856001,552.952790551023,445.364201550573,446.620780573463,476.791692102162,519.573829419596,476.455632858374,578.955103693988,554.163106223992,548.313599358951,587.649669216916,584.216432296634,565.232261501754,421.600645191557,479.112307105541,563.096430690188,480.552794353974,570.818652114309,425.764961037833,575.598848415733,552.150414834769,414.985632403969,569.021052280781,528.44573502046,564.865465036986,435.344965233466,593.679887363753,584.360282538075,588.141724763391,471.839149967429,426.95121621241,557.445622606082,416.647715903167,489.657519189221,588.386974253426,584.375591554481,531.807983577952,423.623033643749,556.408096672754,474.50783209884,415.859382424819,431.584333392617,530.19405482206,562.098775642762,588.016330663261,500.236881494693,588.401757155938,575.902187128695,529.646968061368,538.187633897125,584.831772788291,535.318488731734,534.535856636364,455.538902507668,419.172358202433,458.303849671534,494.261260771605,588.106592500078,527.046465382993,537.25033661268,537.556470275263,425.141082512648,424.428771735898,550.882393355799,466.937039130233,450.333508342983,588.117111159981,549.537132500057,452.228888248543,531.841065383082,495.93015946121,410.694877243791,576.335857537112,421.949428470803,434.20007793506,498.307525205731,575.631980935253,567.222041951379,564.267638001455,573.168676542351,517.626596295916,477.200471596578,415.851735805835,562.654387712249,579.950375961648,533.72772404632,536.274671519209,419.635916101542,593.188526807157,417.822719918076,455.701857429857,564.946610805986,580.24713183686,447.553499848332,576.454672174839,597.840593179844,464.52100492437,533.051737198776,439.420834591332,533.899820691877,563.815490059091,584.541409378049,576.524065824737,579.464998164688,470.662027344462,595.555053303672,514.046576428947,477.327717656266,509.758314104279,576.514495224527,564.6683923525,588.200418762404,572.913120002031,586.025935361816,411.717854403195,574.757072446866,513.619649040562,429.262244201584,575.55039406603,575.669759301595,584.15239272796,569.514674258463,547.408308226649,476.110774914247,591.741846270449,551.680767972394,533.389352224589,565.041355878459,518.838806506076,469.17032016241,574.460543316469,478.708559955577,575.606686290751,459.576421002557,432.664733974224,560.955292822627,409.128278845703,417.5493538785,513.79074306907,435.581799294869,416.470439219282,538.801428164616,530.814436844522,426.093968561163,561.109255973533,442.581997867893,584.212178379471,433.519358543375,588.174192792693,538.7195733441,588.151337125649,549.525529880302,424.216846257941,542.6642120343,422.088478151551,532.110412713698,530.336689076809,577.222713254825,440.00807492379,431.181782302898,577.450758011025,577.021663909126,430.89148129231,458.991064390156,406.745741761353,517.645035474591,415.082218911196,418.179593379339,588.118351845024,588.07731544583,576.349847428145,423.040742763452,526.727205001874,549.638567010748,434.452224571566,526.51516005659,499.848992007401,516.357293492889,576.434075935922,576.733211643943,549.265559078163,485.792855391456,575.889526420194,494.459241705928,467.300056018853,530.406583855495,441.712765876396,588.166748259347,437.207220076272,468.009839322204,444.951693318172,492.923283341604,479.856741047627,492.771717810975,534.578519997325,576.457434777412,425.64226521779,481.261532837409,588.160045791304,409.099383537994,588.119437604643,529.413556327857,496.817111245318,408.215600109705,531.957404231031,410.121952313562,583.983074206714,577.543734968163,415.424935183801,536.826632376238,578.507303365675,482.618456077823,584.495450160122,577.49441875716,584.235713876825,575.622507553758,495.291628413305,513.48572539862,578.799039475558,584.517682289234,409.667390240915,445.845924651821,476.617015840796,409.669165749022,553.744677818661,584.586781555125,564.767935834003,547.522456580153,406.928325918955,562.396311563707,477.762967224503,583.79403830967,411.084999441467,576.26044520291,441.936325364844,587.868901352288,419.448980010667,514.825681477235,547.507635094165,588.340562103479,584.487202687397,550.817584342308,551.66910752807,437.743238427658,584.451843465263,443.660084607076,560.733324840096,418.655605870642,513.353975052142,583.344434555556,553.00229851194,423.077085517631,468.144147772069,407.024451185495,442.665667887901,584.164391070782,493.580485641467,421.088386830925,533.717787620423,490.852047157503,417.032795171392,433.349198283511,584.367867272864,455.970809795284,516.581363116694,498.320356532894,576.488830663998,584.016882575409,495.093670605744,563.394391821912,533.404628059014,532.763884345959,576.255309405929,407.098153702199,446.054578355375,463.764276951606,407.82020130141,582.951677041657,532.781202772104,575.324327797678,414.350740096812,418.066992842003,571.809608026927,588.209056834356,579.296957385829,517.222249633438,565.322249934031,432.935519822894,474.790335099059,549.226855591805,417.676923534738,565.220641395681,532.824721440133,407.466224878485,532.813448832845,491.762781736293,579.257198555063,461.900667677463,597.909604612294,481.60312876309,582.782180384989,460.262282460149,532.679217403486,495.213091289102,521.724339949859,437.005036044812,575.426879907326,464.308621566075,417.454703332429,409.810420956415,489.539166146897,421.015763769938,537.551830576966,522.688332493566,577.915104875183,454.799482632134,563.99981923406,475.999682736654,564.192572591109,494.469875811484,419.365487724542,589.100594959461,489.578497404169,427.248475955464,456.06441274386,564.393540241012,576.21235699605,461.00471411351,533.508084344247,520.478625387901,418.26038471663,481.267202605373,583.759476800009,560.883326344442,433.130851585305,407.029131153304,441.757563968136,565.645035874446,478.286765743794,421.506785292421,565.387504839762,576.120298546307,575.114583079949,446.191607282013,575.7191796796,476.424264068615,513.209323615917,406.889309547711,584.016593786242,576.77960268796,564.803239394528,416.398185265018,542.727500166446,438.700586911477,576.224015375393,588.11464782921,588.104549090783,454.272961895173,417.388642921592,441.729082590795,415.66377673404,442.686192562165,549.527362865791,588.135749350398,551.275706242095,426.92472946832,442.116235178631,549.621320088555,480.149311784924,430.204185532083,571.003758318014,575.523229607478,423.18659883569,564.558643171763,459.550644600364,588.148348121799,528.532421421017,421.725633073474,552.364611487379,590.874327175614,588.123828697602,449.366050833801,440.137401495483,593.147487208011,550.334487697633,597.564871960073,566.320639893201,588.114868191349,415.545782525768,439.855401902439,422.693885981346,578.459343123674,485.338462137232,588.053428300899,559.5207684406,475.683982922219,436.148572135797,435.7028939874,423.857189653348,580.385016426272,549.239042117426,552.182403759758,567.466723302358,408.871996518115,514.105600935508,415.839957867364,566.804912281749,484.748773577265,594.436894196086,574.469199053657,414.072363147589,575.543189884122,416.012428872615,433.332345002696,407.303738982073,549.770092431759,438.963913326636,584.100830425004,546.679307284677,565.332239729763,565.698919101108,578.052963091772,515.406404670063,451.183587286506,468.971654263186,564.431666956865,588.594915106015,584.174130917348,417.301620154676,550.213314528046,563.779801016314,446.566592348134,584.429248104098,457.239096562246,576.485995887174,479.623888338606,424.017001830558,584.016926100889,490.167305197032,586.117503190522,520.297647979549,523.662186930719,477.391062891239,506.428875444399,408.139288229739,458.89205805443,455.612251761259,564.122988255569,514.544778924265,472.354401639392,560.195982086969,564.893918160924,417.065624159376,430.244496032879,489.393533269611,496.256200811591,536.679218114487,576.812724854817,549.563690076247,561.897342297047,507.890833556486,584.249938614319,465.731812701583,466.080127200322,592.111868710891,461.053958714738,546.908262085655,408.77084456002,439.393855012715,577.372848129837,597.693616499621,450.82765969163,408.728019110621,461.951778786638,537.114762191763,579.002432194555,567.084812926222,531.176480969869,596.752857790967,550.918209122028,517.657838297358,573.676697253396,575.515182929728,571.871415188387,439.460453739615,497.402404279599,583.808709564208,566.026020040478,425.192985641922,546.893521687751,550.363561152923,593.511007337255,583.951349910286,491.817995571954,550.29517475998,437.390597095187,558.827835533951,421.133568608591,509.162926043525,524.175263414537,588.162339174028,549.244766717056,417.764976578271,559.580425942411,456.088315460499,418.914306223269,510.593118825607,575.102228186319,583.941167878965,547.733951398189,553.459750672144,467.489402911913,574.528555861498,517.722895205659,474.701567838784,457.306114262099,583.792416093563,584.047924913664,503.656798258165,520.290422312833,418.221918035512,513.408038708122,534.152065277286,568.108891998305,564.419070157443,448.716391163396,588.146703284017,415.909447693861,478.318833728345,418.981889278152,548.946463757234,477.490456840092,584.238631098271,446.822224328599,517.252554416262,563.874789924452,554.250515434775,575.832070032667,498.769919461107,546.67222015397,515.230361580459,552.11932149153,593.372372714134,434.740881638668,415.591345301704,419.692204733567,474.640628267842,567.519212959754,547.602421788108,565.537751548026,575.6196629213,565.254778749869,579.670542643917,442.549724508807,459.05085902773,584.212326074122,584.36163564995,572.988659392816,552.917211420632,575.606466657111,532.456526299041,563.382847113017,576.116460383708,580.315472830752,457.768194944672,591.325474738145,457.574053555245,519.169264353696,586.094048760287,486.153073301307,583.348270546766,504.278659532045,442.030978263142,561.126309030297,422.527697082401,427.558455220167,544.107727452091,576.339315944476,420.635171290949,588.022846433925,554.122241664233,588.106495076697,406.693413471874,416.827163519633,510.83079386094,577.143734431675,561.15975898904,428.955804605738,443.539057437361,584.548585479989,584.393760677693,550.712333167326,442.440266763007,441.151639264999,568.621346954759,535.241144129892,533.362759080226,425.382985139658,410.653884493277,583.983512920718,422.767755923972,434.697546210855,417.56101775243,532.412892298353,518.065206687112,534.212299285579,564.79886903814,584.357071565952,584.071397734717,585.303044335501,583.860267905362,513.345859189038,450.201596273413,460.293007163955,507.763093147196,472.885392499069,578.551107181454,597.790922280017,576.737472774608,591.013841271106,477.622822405125,580.359934943796,419.02003458727,519.638850011528,420.816680246653,584.218485333331,563.868307095175,470.041845274311,493.86309644821,578.101994311719,577.423994582214,406.862531882142,513.360969011351,458.252636761611,406.821554990621,584.298203753139,566.899776706791,577.497238414697,563.218955058216,408.69979266021,562.903206720422,496.165977599412,588.121088821171,419.385656261757,564.629085376467,572.382020233941,595.600498277053,583.826396367197,495.423223887838,421.486461024613,585.260665743181,535.273643733534,454.223280169212,577.119660666738,573.807329381346,574.583054592915,425.410943969385,531.794697766211,449.351075508509,409.939843840713,496.747410341121,513.289300613394,433.357721676613,515.768857326396,510.993853680719,422.542432158193,475.920885619636,445.973632695199,576.816374860394,517.243368768408,584.180700513519,588.120007419258,475.709136628652,593.62979411227,515.361440070991,584.22711503834,433.448353387793,406.983859133777,587.936251157663,408.528862925569,415.624851225058,579.717044510527,424.649152342292,579.458408429157,498.296582574789,553.778298376329,576.426055691316,494.261401817872,549.474108450862,584.00387424278,410.40696596933,580.464378727614,437.763439008557,550.864420530089,549.595314940574,579.676788605507,437.84547328131,500.361927030455,550.367307860716,513.891085607254,415.271817513184,503.648071865645,453.261870286935,583.751385572506,483.511321778618,406.951372550014,416.590912675172,553.090842478828,473.344837308772,564.272924353919,444.400984453755,475.03560843989,563.718725557795,407.161045906875,509.196843644156,509.758890065269,575.885607207542,588.267971170435,584.065560718743,552.140698450572,574.851299186995,585.542218660234,499.426515145661,588.097996239837,561.166219714147,407.628292856033,410.299845922705,429.675159087003,576.801539202888,496.734124686326,575.918342044597,584.171120758983,584.115017904287,530.232627985868,550.666700870396,409.609182196835,584.036273386502,452.083431382802,463.541472289779,427.715835109761,416.91227285817,459.314563184933,532.223202129178,534.69998362216,440.812457357426,456.28800446719,498.40230101918,418.892187114076,580.175097164406,407.484886724202,576.168664485323,444.302451381057,419.253195243768,416.086285295855,588.116165188136,448.680994116565,577.032767315683,596.581454220423,584.43605710742,426.16915284513,417.998444068819,426.061624307569,578.666422822459,587.994182755438,573.06503535103,433.674244946545,489.639371009582,564.189365874163,535.960740055277,532.373039951352,499.360277882236,409.226785556759,467.746054429587,584.019214682413,424.280529947557,575.708692464809,506.961797677006,576.426158417871,533.455650797997,469.691547182869,477.734912904027,485.95109971801,556.900216136901,575.921550321775,576.449578785899,574.525440687828,422.715609462966,533.213758716537,548.652469250634,575.518599100789,577.123446680674,464.12437229888,584.374809350454,462.510498388081,437.833578903348,507.457136177253,573.883299058815,564.368592481386,485.366131338849,413.682960673164,439.154172261889,443.511118107298,462.307074839897,415.668718073976,580.817751396494,444.48430400782,514.918780571782,565.847400554718,576.373969127969,482.835736296258,502.771239564103,535.269378690274,597.579623817844,517.569156190031,579.273837452735,596.661568084865,534.122222689298,573.626397969456,584.029845928014,587.010113630603,445.71352553824,572.631552574387,588.111744336923,576.925722518312,438.977236928177,562.792533324825,533.49230651941,584.269440173211,575.926858889006,533.370207985902,429.141861950483,578.638587762125,588.244341364095,564.218166879828,559.837615747841,583.967469960382,588.115303551024,563.332513853074,583.366760775691,492.145131535647,575.731208205733,501.137353382434,415.633325171435,533.477971106227,515.729171221066,577.949559673973,581.048346957375,558.181658847549,409.21802573992,460.016956725162,410.481836855802,563.637593589085,465.164878978192,417.178738271303,581.387978893943,583.884296459904,524.456020038412,479.83819938786,528.193068681314,495.869147911514,417.403753229732,549.038875620084,563.207681482991,583.839501229665,550.997903895064,579.745343774199,436.120112507232,476.175666238289,536.895732299276,584.047178271351,576.866808352337,585.340152566004,549.664808136882,549.264778933574,547.852584651326,564.442370903239,547.973969869905,441.037393597656,536.462966314745,503.8557814049,588.08292165336,514.021580766624,585.369934191603,561.388574013817,548.980582785799,558.94994576934,411.72587106086,567.147112060245,506.392030180838,577.136216213934,574.621552531874,458.698550499269,557.510668334318,428.37217094295,515.357564197211,407.132984159178,435.989915607583,496.502551233971,550.634380266178,550.20475414231,575.534019901132,426.868823041538,532.866911950007,495.56089883553,543.77764684466,527.941543737711,569.374550203599,580.482930327754,409.993166493731,425.946823362379,409.117643165058,501.698818561525,479.165157443678,459.57028103209,577.625817765366,531.767079255142,408.432409589938,588.159089721001,577.310060036937,567.438496607256,584.213385621875,414.61775311818,563.071552447041,415.659164790069,549.9169268574,571.858375235705,452.09742426919,585.028528703441,574.875931136852,567.233576084235,583.057533628523,584.647869716595,548.796140015259,437.165256326533,528.488321091176,448.688134383808,565.878758598107,535.29998587475,588.147007407579,457.346571770454,595.745191318526,496.761213588357,584.292662006959,416.91140180907,434.593807022209,578.46202024755,584.128471287831,564.097270828615,575.35029656807,476.599420791034,564.150432410984,545.34656317389,497.315519914568,415.8332237598,597.814204548001,519.077371413005,582.14210611291,564.702139140228,588.128456323472,503.673259071251,566.345800839373,492.949982869266,584.392839023991,459.609116534441,431.381197397665,564.520623645013,411.562719799607,534.660793135492,583.929762547725,584.661523296764,588.145836394226,574.960327506196,561.414014873002,584.737160979177,515.336470553629,418.503901079929,583.911490215294,535.604262199556,522.185561922198,564.626671329879,597.662115129928,407.237649404148,584.159766483935,584.191173937763,426.606089035878,519.218164529967,464.149369417636,584.442849209598,577.139852129294,424.140121537871,482.509447830107,584.290153143532,463.992796661071,565.80542765443,576.025219184849,518.139916448501,549.270551379192,568.263098281827,487.829077970397,584.269346470472,554.473187140257,418.112166508036,583.266862560526,556.689081930108,563.503409693946,454.849533481538,527.230816296256,535.876770267192,550.019897028152,489.609013359023,581.379917580957,447.831298797419,431.717990397644,583.783504058624,588.106901496147,416.415308866451,511.37674615871,514.593992826911,465.099997346245,527.337756831825,580.833018712511,461.022138485657,533.033392683056,583.914513791914,564.969259203386,500.808332306838,592.611709033614,580.164543727822,501.196621988594,497.47942022078,579.26772279068,422.302606105416,596.344607941091,515.737762719744,586.89702190775,573.308127958553,588.121721222684,584.412507956278,569.427969364516,575.397620930297,514.904265327224,576.716525107024,440.086345902327,546.33057103275,571.935759082432,576.027014884318,560.053311422822,563.096882570823,449.590611177926,583.735811746949,575.615235402989,587.985642580632,509.782383813673,563.585707550946,436.15178188683,416.741756905666,410.376062516874,583.82433142395,575.416999492673,464.651952629212,588.085216516874,541.374184316464,508.076477970353,423.090790300629,444.334772658768,575.788713966319,576.047189698694,588.098939768975,534.281347664874,494.661331492773,594.419496737448,563.213683012347,548.423956078172,566.083838114245,585.149719449531,564.500770694657,532.384213992958,549.648375918234,579.653425926412,585.760952310476,521.494291605106,532.809617289064,561.721472367338,563.752009095695,416.275315365246,577.463315853217,526.096408866745,426.227765812742,499.439162102374,551.610944547004,564.839256692973,533.207028099126,480.906651071723,495.811022416629,549.996720660389,420.11005465569,477.899799620351,560.232181947432,546.400801496193,561.847157044391,576.249005938962,580.43287429486,416.974808566535,591.515539154658,529.859040875551,536.282638332097,548.773376874014,502.677620094445,424.701087130049,563.34874311358,532.803645929132,586.901876581306,453.4076025399,533.391331933602,577.859502293538,563.580056604359,549.570504143033,551.970022508614,551.693660480582,440.869171745306,478.433838797244,575.76217661641,576.587263611546,592.772498999613,563.849348086487,588.108511400816,532.687422235996,575.647074094673,580.351716403141,575.763352422102,515.941044666006,511.835708869107,523.824759903834,577.049276599767,512.746275669507,576.846451050038,420.767462077674,588.142102865198,428.772082236983,588.068575120416,532.101771288975,563.205000609205,469.244643819901,564.394241088015,547.103671079209,431.112174064393,592.468901715547,501.195286417373,508.611699249031,566.502681646401,432.7511538307,563.270955192823,576.524270776524,412.448406991861,563.918606410979,508.37248052064,587.979374297292,556.61462144846,438.476336485344,545.913815154674,564.388522959952,439.05944047328,431.852927824227,443.789478346388,588.089183773978,426.517237046407,446.497761804297,464.614917070333,581.021602132908,549.776275523454,550.538637404816,563.094323487531,584.311044408461,489.367548379401,574.039827129856,494.019248888945,568.488030742793,515.040143139362,468.698196755914,410.546206784326,597.046278744994,569.182727565477,458.368978471385,418.587863123455,430.040211570065,504.797336758332,526.699116694039,407.430756789724,571.865560354291,584.968761644593,461.617937137552,491.08678917094,531.57573524543,546.457101974808,407.448163376661,494.515944483533,461.264168192404,412.055693319919,451.318608803803,450.861004124228,525.635138281888,573.990468098465,433.70112532442,466.291022762226,428.387883805944,466.727783650296,423.992623145207,498.571180371556,467.071945927911,568.162522760591,522.04620261921,471.773448473925,421.727741385684,406.848926965952,576.680190695483,532.427590643376,407.555469594909,417.097141819842,411.359538677132,549.722609200929,476.134692455003,550.298057469361,482.55707116008,439.218666721357,507.100518841621,569.135111383271,443.153939982675,431.065966518235,501.453630903223,406.763323330152,415.876326795573,419.311781053838,504.842472058063,472.47991780479,418.761379706875,435.765917790666,465.919042119549,523.886044538477,448.44099631628,527.896192262335,491.150564645358,419.88856831374,442.272947493057,523.269645553709,457.120128302571,483.81762382365,522.324285042279,564.614043929118,415.575960352076,547.645593385462,478.335952771461,480.570251607047,419.800554435219,577.004653540054,442.713357242351,480.538521856396,445.70702859449,416.806291569081,431.257632158379,420.805664810695,503.099817492406,570.880437800241,487.064850170227,419.411919451664,408.369287972253,461.789656115778,578.952598124359,514.17574674645,442.140044839269,418.755039496534,447.718126304194,597.099050629263,454.043297883745,483.52742595425,539.506623653914,432.639956524535,464.037571264733,564.947065436075,431.972840963258,423.325007067844,516.700353155565,500.402077220066,551.968477438292,506.326807600277,428.288442674155,515.429159441737,530.02127171403,512.497360890967,477.461681598046,416.812585700178,549.903264276484,536.837398866192,485.118290016716,523.47379813563,560.217558549014,456.919755207669,446.952978808169,498.263432188627,415.830730364137,488.466865845057,492.332764882544,420.048311751999,514.097870112339,463.889397522025,540.626139930818,412.066452744423,522.238220863716,507.871602119366,473.939608770889,469.389658359113,533.496353565066,518.518780162135,435.093550582199,532.010212695609,499.130067306492,419.087965190525,407.650023411311,477.43188464481,415.901802837511,442.567477457368,569.4494930082,520.8192838602,558.420907669318,506.074783189192,516.529982738325,584.047331213924,420.099464626847,407.765107350065,546.203742629746,522.748351022375,485.879992190013,496.008545626756,530.871681985995,452.36765976582,594.48637932317,491.886474590032,551.891541189892,437.600620972308,431.342450842361,426.752203333081,596.33677984216,533.919398337211,494.456421468321,455.294765435994,490.2657625134,461.632835654699,504.985252008594,438.738613181224,492.164406774331,570.822358784321,416.523965924664,407.838918602869,550.081180405684,568.359089025121,521.800843943994,437.363758563224,487.821115736953,596.72312276241,538.783841265805,532.397711219789,415.64507851034,412.263031574757,488.059730393453,512.686921566448,421.407478188756,576.073404988617,516.636517909296,524.188046736678,452.938765899537,491.840501429679,455.891384237392,517.201759645947,569.445102075127,514.610970884133,517.820780443198,449.979169502834,417.749174549256,415.517279919527,456.256498504407,552.973852319632,529.055707718521,537.92816457731,525.016163493008,440.157031940638,525.133775870781,421.066163156793,497.865442228505,541.998309465631,445.769570929441,528.360484982121,416.573175645473,407.741935029599,510.256254220629,546.838949227133,415.762626294867,516.402248523408,509.960724040247,422.429755057236,438.582167474119,430.148865230029,408.9013737893,408.591864298447,480.627684941594,549.310826445114,571.896139453021,474.435301365985,521.438159368916,513.091167186696,536.02805234855,416.30818226839,413.854742460339,566.410131043579,505.819496783195,490.57342563128,552.394218757755,488.849325165925,486.053773257413,410.138717285315,423.254322234359,532.627386456794,422.685405085828,506.791131747922,460.525115809349,412.415187531072,539.405202584939,539.588431772094,510.074611721044,551.952417636641,448.339488189567,455.733903642931,431.78402804451,496.429800483148,441.829113353879,535.955119302089,409.850121645989,478.253675406659,534.707700116262,471.691946993361,533.912473596533,553.902896595466,542.980064970933,478.681884208923,421.888979225773,575.92358761246,481.236726917142,461.473889250469,585.518923066345,419.730882401735,527.157664537207,502.876427095858,430.789535470629,429.131226069234,408.730660631587,458.48747197328,434.689047042216,443.679795274675,579.541190764858,459.518161445009,536.912447661307,453.804518524027,483.072486095262,416.233942152268,481.645501541651,489.507675304779,479.214040850471,493.17317782532,418.738968718852,527.638667964466,494.500046872616,505.742167409831,507.282335380313,492.586081586838,415.66164373832,420.611988736523,551.220082752721,570.760006505816,583.76334038495,460.66341395615,537.948982599447,552.830383184189,547.377248991213,551.38131755011,413.332904048694,528.071443252287,538.26292428857,447.411632150122,478.302833023564,455.881937463144,552.785723774444,571.892598760012,493.226318897723,407.11153523572,453.843464585787,488.199966753741,478.463412072727,559.338561578655,568.762276803794,420.519046633417,513.686252548806,414.83129587785,523.351113217914,472.610390924548,409.685034563661,459.846068712806,543.032023138886,509.316904517263,442.056528967404,427.95571301551,474.886715824795,408.712578801929,455.595618169872,423.590228565461,550.786810275917,445.838052840021,498.772633440317,567.383708365642,437.505509729297,416.042019497298,559.469330461696,465.330419215801,473.477709606572,497.621838408001,499.703326691889,522.250409281852,491.658423730127,579.601826616335,415.713937747668,480.090076312121,501.777295076074,460.832596798898,424.339506028839,543.126893871281,417.173890664158,545.139113854323,522.857428701376,421.208633679027,549.983791103842,496.616835470817,567.750342394183,409.497442743158,416.652069387154,576.153554673454,415.508282421787,505.06894635813,412.925049396087,513.425916016018,485.45692807319,573.484142691781,422.440356383866,421.065086662417,413.372669690248,420.430664824236,423.309044766813,549.95875932394,437.242627855059,455.67408158242,474.201855963357,408.466335294927,417.951244865632,416.139448729488,431.109586672572,504.419528356797,417.010914426162,474.568786844685,551.061405004877,415.866753698902,554.959805292318,451.08930886858,537.715895008895,415.748653930818,407.092092869538,504.070329431915,484.508222779457,461.034402926008,535.204139148588,560.650330226727,506.386300677763,447.997862825218,429.544151588533,536.934699565696,408.547127638721,586.962592560453,521.639502246507,424.564621615947,416.629309133797,515.970060626288,455.803225476399,575.494399565368,417.952387736087,471.034717475691,559.851215814874,408.355648123401,451.352156964108,523.689328227155,416.820516974075,452.919922440401,536.527034019514,594.981733139675,537.820790279318,517.916667800623,551.506197292762,566.546480890255,497.310043066637,508.222089353119,422.367391340175,574.089212552446,485.664415896167,449.692257126752,407.298836868027,562.79189018688,537.19349100319,425.829687185596,572.744963603318,586.707009883365,436.837306232695,427.775816836167,415.770716208445,556.092974219155,423.609976843921,513.385132999832,424.278518446184,570.253136176422,433.804777519768,420.756563951161,487.506812515062,408.207204902545,441.041360883121,564.613523113471,597.294571969121,429.885534781686,535.864853983123,549.775762446191,416.614383433165,457.126022851681,413.21594216877,434.737084771902,493.717818728718,417.053639237655,483.193986902274,467.994697190667,421.795721359918,524.063953721598,416.500542144582,533.20283778655,525.66124795205,421.425856502007,503.704230847889,434.384936882294,406.900279989405,440.085468966569,551.124189045649,444.97504362917,430.834342061575,474.23926980789,422.984484922915,568.780590692008,434.311232741768,582.315288272673,556.887818757526,562.251268041998,419.074558930188,570.357549822532,504.468927468633,468.810171501562,471.78338974436,408.087315668327,415.679162166211,569.406700983471,416.483001960507,467.533191129705,455.966415760422,414.027263040789,468.109327310468,464.316234745921,519.096677543365,416.972608669385,473.387780210324,407.007720575193,421.442015527386,433.99367213544,415.733018485227,505.281706867358,523.524032857034,521.668960640446,406.797324443761,443.62698812994,445.405260489346,421.643072813292,477.10730947286,434.2560155786,448.019657619436,488.288308184766,447.397646697848,441.455580291765,579.908948817413,578.81991139533,499.009631060804,593.724067354929,569.434595289919,597.687432855417,416.253095718779,454.387857262126,491.836630013291,415.299217746074,520.201359047756,533.206702247552,415.355616573618,416.852055526346,411.15603504284,541.940721554309,408.72049755906,406.961296291461,482.268259018499,441.34488492028,419.07550939864,444.649441667673,437.949338397879,547.374199933431,407.004633377129,463.036885256347,550.150964696782,469.526722457776,442.073307465874,536.491236035857,486.837230351891,409.484477812048,596.88199898661,473.818877766871,519.926790764695,416.191338750471,515.596879638297,427.887966773921,506.354906605874,415.402341620832,441.129145648613,410.450432935951,452.540978233473,579.444099086087,507.479157015299,490.167237895854,550.698855376228,482.620506226161,496.82310563652,447.796003414816,427.715608495435,470.814481680921,594.345562048069,406.591494012716,565.294838070028,427.938680658939,596.758089602438,415.9243945184,453.979465849258,440.570829475221,526.212102977232,462.816371537116,420.117207970222,428.619214217378,425.231662616374,417.623740999544,517.807678585676,417.653473314113,420.998685127873,574.415136909109,422.048569701005,442.875622311907,453.292277528631,439.289706082656,471.552824177869,425.483014834671,435.86081322947,407.019503302922,452.463547855077,469.532420135745,418.161295715639,468.910715429852,413.051869309643,560.016311473134,456.045152194799,506.938045702788,418.319414934454,433.590273853275,423.415637332112,407.646184208253,407.024422377754,454.618757128081,479.300082798084,530.036966000117,467.110913963076,501.491260312354,444.480447795243,525.568145015984,553.456868427307,434.298887302965,423.303938629271,429.330460363744,484.875167454938,439.907524197472,471.437318304044,435.117926847596,468.586136873559,429.323610100397,489.240818099253,411.085063286369,421.914793566988,420.823186270408,426.815318474975,425.119941548789,453.362405058188,411.228491923101,439.794373866322,420.74757182666,471.460130110198,449.54961914537,498.049783190363,526.155912964854,446.428764735411,421.440356055456,441.110422036325,406.852631588438,479.347540897053,428.220142438408,533.36509053181,471.279610593054,417.702332341471,469.580574272581,579.276773535508,481.380077655389,505.238994461848,416.472635937367,574.208019194172,419.199293235528,427.752220039758,534.728791282562,418.471687454506,446.95159100879,434.163220155367,494.497477883373,474.829605443973,526.847300643389,532.032827199165,430.081018787639,419.452232058749,472.005728583737,424.823611763854,524.278116634306,471.116848635329,536.545512501256,501.050023015914,449.526833242958,409.918958602818,485.375394599872,425.386715093277,564.274909001552,418.919251569922,419.610669829092,574.428477415362,570.815575345544,419.868106878755,418.521563460115,433.742984274523,491.022351142097,529.649895421075,527.44648647012,461.566434752313,413.383642660626,434.088168581391,443.482589339743,474.379906328092,427.110415093498,512.619440747471,465.721530024049,414.432079061287,466.293678395026,465.497060856342,432.71930669798,427.175983218815,459.865987912742,406.935907704264,584.489400985518,413.341240851565,549.013161922605,408.240134060303,435.98663857232,431.477883686115,451.371560150372,470.358668730414,501.868481217288,423.677421170766,448.789210592722,571.792505272378,438.581966519892,407.173723004594,413.095596145266,528.053904806207,411.986787656111,509.945045560141,435.598278815612,420.380363603797,485.059302176597,444.314019765895,452.854170979393,422.810253918743,539.425863379867,486.090738437204,439.896401185772,413.109511822925,543.684634121608,444.169556313353,442.053256487695,417.126475920885,440.168981253934,409.730299279641,452.150151211366,566.518451936877,436.202281334594,418.200405594116,492.227964917376,473.045749605237,425.254122476954,413.214956092682,433.846126794559,544.430908308842,571.426903035792,454.515367923147,428.853494480456,418.981088622073,412.813879867277,519.447169329033,545.997059346109,508.79465906757,444.801726778383,475.968154847668,552.87443801023,419.28212047866,430.286798892553,407.052389699136,512.791606157195,555.785928693137,491.30291236249,510.27893824322,430.230772394615,508.742961542893,408.656067804504,411.391166041915,475.366787545137,520.443725213919,570.956244440265,411.216044914534,580.433692419743,493.980064925942,517.328556531482,513.063350329979,446.585050497834,444.207504277879,427.749005329597,425.164165249319,461.99600353331,487.883052880243,452.97515836249,484.635331537296,424.515760336569,446.911974649878,408.095419846767,485.979700995005,505.832283080831,429.930382115567,407.61824442512,450.496746076619,507.474904301638,417.905257495842,460.019321611814,489.535663383198,506.496991178204,444.9325895388,438.197156320564,420.927825998705,430.807330699405,452.798850132406,431.989686968542,426.423792749902,413.624689772659,429.194742446823,439.418519340496,511.365557696956,457.249888417516,437.028537060552,467.135335042246,433.377961699223,525.87431618447,406.875687107314,486.924217202717,443.565794801777,487.045985825365,446.102758064937,463.336511152119,455.096376771237,433.215582358694,511.749106911338,511.730479191447,528.844516376048,528.823474157103]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1202.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1202.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1202.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1202_field1":[0,0,0,0,0.0637250034991373,0.0430242680158102,0,0,0,-14.3286977372117,28.8243915071695,14.3926030738344,-26.4457816855508,0,0,-6.40089054470486,-7.32254085535355,-9.44288525848807,0,-2.0385428617672,-3.8603751990696,0,-0.563109638436556,-1.10510493579781,0,-0.141677180040928,0,0.14209748615233,0,-0.220329440046828,0,0,-0.942951426140949,0.0744226702367934,-0.652746763938515,-1.29280207633937,-1.80818938019617,0,0.213576531323994,0.434983201595533,0.508771846889286,-0.982848131698456,-3.70096333919389,1.73039311643696,-1.2615600937216,-2.70592903514313,1.36264674554052,0.889395400540629,-0.012351652940578,-2.44508087482695,-3.3308740807124,0.748679264720388,1.03311005758575,0.703362405839543,1.75411735783947,0.720379480571164,0,1.51086307896461,1.3728427066227,2.87248223376563,0.484451691618548,-0.151931325403992,0.422566866171519,0.904000817023515,0,1.80689645974184,2.8668309042948,1.52401064481333,-0.64187857513829,3.72850369390052,-2.11628578379043,2.59109859604544,2.44857317745339,-1.29101528469021,2.65382215973331,3.80452259362006,1.62452427235142,3.0028351010774,-0.614425620068097,3.85359789051623,5.9876063092103,0.56630381048402,-2.00221216110303,5.13010397221078,4.80094946479148,-4.02953728154904,3.84523652989913,5.20171878284128,5.37467050277487,-4.12866185664988,-2.73242527641865,3.44450889298868,-2.99752827097739,-3.48042302858829,-2.06455165125299,-3.76485107701356,-5.97782635593472,-4.88758926791609,-5.75568649732296,3.28847625078261,-3.2350171152048,-4.08542529191283,-4.41200215290591,-5.00544125347148,-5.06163027236587,-2.82853527929292,0.976499624651782,-4.81539147393338,2.0122756101387,-4.07912641783186,-5.96433419243015,-1.01757514338847,-0.517593170238202,1.01002766580904,0,-1.80005827029758,4.23493729468125,4.39613786248413,8.07998280068133,-5.62005178618922,-4.06575999607053,-4.85829994704044,-5.23091695987032,-8.43604492956277,0,4.61856493163299,3.59883644291263,6.57137356309376,2.6341024810335,3.03659529720806,5.86075863056697,3.23652379971156,5.3994930867867,7.65836614064009,3.51402815497503,5.57990247941327,6.90893175098888,8.20663433853216,6.63710453044665,7.36512370590918,2.26402070206335,5.87132773613689,4.7046785474585,7.26043778379345,1.72814619552103,0,1.09851115081827,0,2.08517260437329,0,1.82685408648796,3.03563355228657,4.44536153147657,1.86870222898012,3.71117388673366,3.06088797243069,3.79160754783678,6.17721095517981,5.54305185206209,4.75426144526398,0,0,4.21276221862857,5.11084526640136,7.22314571020631,6.43306783620569,5.76113382925989,8.33211126338256,7.28397576938957,7.3593678585286,5.99873323316883,3.65910140954704,6.52822199587512,4.43952021568802,0,5.90657859691526,2.40240100884922,6.7299697781347,0,8.73686482588945,7.84417805628139,7.35771246832469,8.85813747092101,1.82534979288058,0,1.79461379656584,0,2.61002685742801,1.9209674176972,3.61404161108697,6.60586023298086,-9.03163047903124,-6.79848471037184,8.87498652183563,7.36623296596759,4.43922667435641,9.4018985096506,7.10549186885696,8.33113517950828,9.00656562491985,8.65601066060484,9.40133181043127,10.131332285795,10.1058422178044,10.555008971584,9.2358418961857,10.503086924313,10.3841367002475,9.2406598610244,9.79684436638107,9.72780246674416,12.0696675593781,10.264220217704,8.74627135553201,11.2055107620543,9.06869430584314,8.08052775530718,10.4567072105792,6.22842847088001,9.94159171563049,7.48019363056552,7.07237901619329,10.8246108479657,5.85634242038048,12.0980751377672,11.4775581342831,4.5026245237914,3.92126450575101,11.3163801279836,10.7540831411685,11.3260760529169,12.350615256423,12.0469295607475,13.4517456389586,12.4206067030241,5.12805314371696,4.95827392807823,3.81309932004496,2.08748437522463,0,7.98322218894252,0,1.49969257302174,6.43325957909162,7.75879272457499,-7.46130979443358,-5.86818879831015,-5.49889473961713,-8.40562611709248,8.21022969222879,9.06311751424322,8.97875467306995,9.77706475095742,11.8433978833189,11.1328196169783,8.16538941484392,11.7808564038904,12.8476529799736,13.7078150001467,6.32296558052293,0,6.44253389968709,-6.4498388546627,-7.94016023999976,-6.7413978933521,-7.922920133219,-8.98800421527393,-7.34073992751648,-9.74719609416114,-10.4077403647616,-11.0868125486437,-10.2733248224217,-12.4528074322798,-11.2737965786235,-11.3413628595721,-12.3306271102962,-12.1193795641214,-14.0945701328304,-10.2465848337566,-9.64136676175109,-9.5776024041946,-8.55750157563782,-7.49383469792081,-6.84758434856214,-8.33799803410378,10.3767643529474,10.9320931415148,11.1990680706857,12.035909356428,11.6040261840806,8.25853270601414,12.9172096063769,13.1085879127576,13.5310869293271,13.3319105782288,12.8108877728337,13.1647656165823,13.9317197207484,15.1634668571783,14.2500380327564,12.513313201255,12.5092385489902,14.655410882189,15.6629390043361,14.422870156242,12.4668572670387,14.658243648591,16.4729577702483,13.1742797132142,15.4241965197798,15.449966115676,15.2049038912432,13.1696083487463,14.1242586143842,12.7537218890784,13.273739068514,5.70251514860507,4.76977163469485,3.231830955863,0,7.5200856864054,5.5669548469828,4.94621469386226,5.88072492485182,4.58558793346214,3.40098945623569,3.46870859152081,0.911139681507987,1.97309466450278,-5.750345042254,-3.26443195130361,-4.37777593787459,-3.33484490540577,-4.63615405513316,-1.78787608184317,-2.91616883397949,-0.50196893289034,-1.21043928944531,-0.738363819927978,-1.73268685453034,-0.137332463706962,-8.80727157588233,-13.0024901669641,9.48451823502207,9.91850008922191,11.3664631505935,10.8048687873059,6.95081878177183,9.56334715518611,13.5358683235026,9.78649442265639,10.7180129389866,2.44855289115934,0,1.76781948123307,0,1.23105609563232,1.20461424770603,0,1.24236124360771,1.0449296454226,0,2.81885857735363,0.619050742863488,0,0,0,0.48989852459614,0,1.07182585346095,2.45138081529984,1.91261148536979,1.92468232668003,0.561847556036394,0,1.82116013869773,0.936515527585569,8.07128118726845,8.91609146355668,10.1495986981262,8.59928809141552,11.4286627744228,12.2990981988088,12.2244947534297,11.1494218014039,-2.62483058621013,-0.377535348281684,1.51525952072677,-8.12250985585151,-7.13497022849101,-9.4728840250836,-10.6759207880136,-5.6249681041459,-6.03175219428708,-4.27702535230315,-8.09250075031536,-1.15572715908368,-3.52636921368752,-2.50220654684299,-0.82825813412268,0.204662571067075,2.59914242635318,0.883997294475871,1.22568466689493,-12.0334041979565,-12.2129758133808,-13.4451717579321,-12.0234864700461,-11.804248011735,-10.8524098171107,7.34829816344098,5.15820688384977,9.54157596711231,8.72584502569272,9.05482207484267,7.67189759965137,10.4663890604462,3.15478919363796,11.9840090271978,11.1332255411838,11.9718162908264,13.8429167230537,10.5739195334763,12.6232166230139,8.33447205769652,11.7352668207982,9.02503042154941,6.09390892575577,7.49267594349309,5.24098632684446,7.69057139064576,6.14188955562613,4.28979915217205,3.16138533433596,4.20899312590519,4.21521870852833,2.64417743993803,5.71307200727745,4.19684583370607,7.30406094757751,1.01022803318682,5.59230661938623,6.98415556598031,1.76430465046164,-0.116287962462871,-2.49176301419034,-2.03825232287449,-0.909606894858251,-4.0205902077065,0.229162114564666,2.78954051674744,2.19138260749226,-6.30412352299053,4.40288697678881,-4.65600111288962,6.63670101055336,-2.90656525711982,-7.67728340255282,6.10227664163655,-5.88408315236499,-6.36267017314691,10.7856366348576,1.98971243653017,8.47422812528699,3.74251068826702,9.06050909540861,10.7743282370865,4.29921665237856,5.35619240887523,2.23961522736632,5.41284511961946,8.12171146716852,1.5014787870596,-1.22979853384696,8.69136153990816,11.5484293020099,10.1654274652176,9.18907558192823,2.62142087044975,9.62358252732928,14.374475728997,9.27689576161134,12.450629495101,12.3256835292386,14.1747719033587,9.8682497047898,2.04328902095347,-11.1640304344602,-9.53255667200577,-10.1746888166207,-11.4181620454652,-13.4633376789838,-14.4775342473939,-14.2436423818586,-16.233674660711,-15.1874897668925,-15.0254505914002,-15.7374927984855,-15.4607852130517,-17.3269159727827,-16.5040825054645,-17.969518397761,-17.169533236844,-16.9348202190995,-15.3032511376053,-10.4663030142959,-11.0182257098455,6.07927146654311,5.96478917829415,4.31121281386972,5.08449368048969,4.19625097205089,5.26768705239703,4.11322954099794,6.70666790193649,3.09398273057627,3.38321174180209,4.09790286953795,2.88676328931942,5.22444923252041,4.96406696165546,2.67690846791161,2.27803865867258,3.49259686390979,4.29587439761117,7.10662658809549,1.81930266695836,-1.06554390831455,-0.131885200183192,-0.696306063362066,-5.22726984169182,-2.74410360698905,-3.20899669450523,-5.05335307456945,-3.8751822927194,-6.34747689874662,-2.83372853852779,-0.895381577484817,10.4863893433815,14.6944186304181,8.27891484563319,6.6623692009049,9.64620531412061,11.0491680998208,13.2766177932784,12.4264200472384,12.4142962246216,18.8253457084372,-11.9600159215032,-13.4248882658095,-13.3632034050302,-13.4216757112275,-14.3573536812639,-13.5290833113494,-15.0204942081209,-15.7782507377456,-15.0944011591883,-15.7847829779366,-16.7611229957361,-14.131827028965,-14.0366463271692,-14.8951177514626,-15.257435258117,-14.8947224317479,-13.2420477080571,-14.0351681863444,-12.476668823501,-13.3323471878443,-13.000537955333,-16.1911571441287,-11.339397854342,-12.4750827126259,-9.71480185962827,-11.8021730122368,-11.4676799409112,-10.527121563613,-9.64236484924058,-7.7332367910664,-8.62324293192191,-8.81607079985796,-7.52044954513984,-8.14894821418764,-7.9523259854175,-6.79804113712792,-8.29724147569952,-6.38377947069443,-7.3425364655293,-6.33790689645433,-4.58988722949025,-5.26789917741816,5.01848056459849,7.74384787675063,8.61707730611877,8.99328087331708,9.86056586334019,9.1825094207809,10.5735905151164,7.1881718153239,3.47218779942467,1.43305767664291,2.35776444779608,0,0,1.53961761192498,2.86933851025575,2.51962697058947,3.91748322512821,4.45966274394104,6.70820516178312,2.82635150519813,6.44037433401602,3.02458543617371,4.71161026187135,6.8918265688909,7.36926853392741,3.07607624329082,5.28792064562403,4.94601918059096,-3.13065069267212,-10.8576371340919,-4.9365435332022,-7.31975579972006,-7.33524057941177,-10.004866452662,-8.92403491255959,-10.8168175583994,-8.30231722500353,-8.36878024305156,-10.0349373655103,-15.0519785048107,-12.5112494410854,-12.8672426269425,-11.8010668017207,-14.2686804747245,-12.6961544734004,-14.1003773079336,-14.1454692430363,-12.2445018549207,-18.0329161069683,-9.47314138336835,-16.1916256942624,-18.0740886359473,-16.8257100409528,-16.152263338945,-11.5259008371177,-12.4920614402762,-14.7787360460761,12.9692235576493,13.3146320266787,13.8321994509063,14.9321384885963,16.6641699196011,15.3099996232755,15.0119214487753,16.9066805699489,16.261476962277,14.1888575414377,17.7539960428229,18.6037023638389,16.2483428187317,16.5273661989023,16.5729452809127,17.1209985530431,19.4963893664086,18.1713985538498,18.8343237764812,17.5547315038035,18.2434594952359,16.3657637611399,17.3385968449263,17.2468364068654,18.6361324210174,14.9159501089267,22.2809043256287,16.2594179671533,12.3221662605956,20.4445432125327,20.7568347813989,21.0749247893607,20.2138613885896,16.3086821252727,18.762542049283,14.4103340282499,19.4281607826971,18.4427672952011,21.2724381000706,15.2167825670672,16.3699113794125,12.3886662743691,-12.8127509404607,-12.9356625976715,-13.3403104353424,-16.3945030438178,-17.865805056995,-16.4289436442424,-13.7236286701989,10.2062291343966,1.76245050566537,0,5.25828456806346,8.75253652825018,-6.78493514552809,-12.3254403878746,-15.2224764532319,-7.36035808907004,-8.97147929660721,-7.84913992247272,-10.518448751624,-14.5093789285634,-17.9512969429302,-17.1098907607252,12.3812530056329,17.622002102529,17.4873174868309,16.092583221415,10.0947214304678,11.0902934882114,9.5759164851525,20.0900390841522,23.0354910214209,21.766975566031,21.052782630721,23.2131810200467,25.6819130105931,-12.2692517214738,-13.6364875381885,-13.3252046037041,-12.1705483390942,-12.7235433979151,-12.1503497776507,-20.1770349528395,-15.6389353829207,-17.4595601763126,-18.9080280620542,-16.9289794085291,-18.2069499503254,-19.0342277949275,-17.8616401280626,-19.0554976002964,-16.8151376400206,-18.2030360690004,-15.5090805904873,-19.3377713686587,-16.2405190694402,-19.8601384230744,-21.650178378565,-20.5397524681095,-17.0377857601826,-20.8142912097175,-21.5734239170047,-21.2511459543842,-17.8466373051603,-15.0199881225991,-21.2390137507853,-23.5190508332046,-20.0737943605528,-22.364692855571,-22.8594220199681,-22.3223345124922,-20.0570750213775,-16.1580665718731,0,-19.6406065277318,-15.9178417653921,-18.891306898408,-17.6627639485224,-18.0444885285127,-15.3283678980621,-16.9289454466197,-18.1934516437412,-16.0282417418227,-18.7932644438427,-21.2785226137749,10.0296750953678,0,1.85750506405871,2.19123667291154,3.80498384518279,6.11661358046386,0,0,4.10904955108616,2.45229237238549,0,4.58208507631241,0,2.09022665523973,6.95036516104684,4.42314027666532,2.64893164394482,5.72602444886211,3.29979341005913,0,7.33791807951214,2.93096036831919,0,4.82030456347686,5.05488844585975,5.81071000580303,5.51337324669263,4.21004126623133,7.01050949496825,6.53781027893074,9.18393586018746,2.65889020535657,-14.6313975939818,-13.7922515226812,-15.9036398880999,-16.6630290283846,-15.7604033991467,-12.2000746946333,-6.11549773234743,-5.58283356422892,-2.81388502742425,-8.45785854465261,-2.03052426723918,-5.20104753562549,-1.6751853056635,1.26163245530734,-6.17130454742485,-6.59225541174824,-9.75800861263945,-17.5438502357496,-19.4086067005757,-16.0546722443729,-15.4114153521977,-21.9764943504195,20.8254043916999,22.0081933877897,23.3726232352685,22.9614151053378,24.8908614256377,24.4720007066032,23.5775205075459,25.866761742764,22.2360268969935,29.200096490817,21.1364697654921,23.1097037624505,27.4680664470123,23.5660887588247,27.1813998057887,28.8169116671319,19.1687786145413,27.9645357524298,29.2321625377173,29.1411483853657,31.421556212521,30.3624461481783,31.5259074439723,30.2402672038411,28.7817006601766,27.2910725498991,26.5460727770201,20.3831095522524,17.3147352755633,21.5596826724609,19.7254218484733,13.5082992080438,13.8219614803882,-19.2969589807998,-14.1097647881308,-15.8717239701492,-10.1421602125024,-13.4051043323863,0,-21.5051711208132,-21.0752998807816,-25.5047732566832,12.3783570415209,8.19061915071794,2.94122733630346,0,11.2870512964297,11.8773317312166,10.3662830250413,-12.7593109432946,-10.269656979819,-15.1012841394812,-17.4214545682887,-14.4285759824163,-13.9719497355071,-11.4111313847591,-17.6493829141522,2.88575879458519,-9.31591216738597,-20.8422461269622,-19.6377461684036,20.6910390563776,19.2274446900492,22.6885755967662,21.7858729605104,24.683004569793,25.5592257261685,29.322938145004,16.8659919420418,13.7742288261488,14.5780441476547,17.3837781466252,8.22149383603895,11.4594763841404,10.6325824713208,9.00654103224042,10.0475763792577,2.89220605719089,5.66648533488294,11.2937253356936,15.6421079712951,8.41394923651916,13.0057439926272,5.12352140452971,11.8443024509509,11.7652037598223,8.14872842571371,5.7368680796295,6.02778073071556,4.53350086432136,7.81470403054429,-19.5751628764168,-20.3953732763141,-19.9616372665649,-14.3798811899853,-14.1414838627456,-12.9966789197114,-11.2550353863686,-12.8369347035716,-12.8675202057832,-10.2478320700575,-12.2298521770818,-9.61903756790538,-11.8286881897036,-10.7927471293122,-8.05004511590651,-10.8103832646167,-9.58702448007696,-10.8499979470779,-9.94357904459002,0,-7.74974391334338,-9.29262171385938,-10.4571233742345,-11.7169633809287,-11.0223839080495,-9.73966698586442,-7.19392505361421,-9.90567726358925,-11.7288953351184,-8.23717756918639,-8.52249153755848,-7.89536449053389,-8.93104794745735,-8.93042210316667,-8.43096684868301,-6.63463869658911,-12.7049175060193,-14.8446027637288,-13.1367740411578,-9.19161306630688,-11.4629662520075,-11.0380278528141,-12.5726353223023,-7.52608341653293,-10.8222159424794,-11.3654250022886,-23.7580544293515,11.2523723389867,11.303987017276,12.1964741944718,12.346242160359,14.5496966883407,13.7255864370859,13.3765431896953,13.8432405167365,13.9538560118369,16.1436813946593,12.2269036949198,13.3143099304538,15.1548019175169,14.3368664266058,15.3545323525272,14.197240587832,15.868944426486,16.9505332469472,14.9654381878096,13.3095163812146,16.043383880428,17.7178384712544,12.8092726108009,16.1323334483952,16.7654849443616,16.7902087958483,17.7891029869741,16.8460165701349,18.2381043871955,16.2950085133281,16.5895225747852,8.01186324667994,9.76378415945156,8.45726260782927,8.05322770441642,9.64659786818469,11.0401747988452,10.4554727864909,9.41473181237135,8.80562196376277,7.3113687379733,0,-11.9719877750187,-12.6611803795768,-14.0184562944717,-17.5176958167345,-17.6379725449164,-15.2559565632414,-14.0528578748741,-17.1757449971161,-20.9681555689697,-19.0977905941389,-20.7342696402569,-23.0955714642052,-24.948055795755,-24.2114164195708,-23.6706227392271,-25.6864171871297,-23.0810431751081,-23.1495568337326,-20.5932615372562,-25.2423858147546,-28.0887365466911,-27.7353536824261,-26.2719643361633,-25.2416707403052,-26.419251009994,-28.8043346969139,-28.0589277722289,-31.0294312732289,-8.69637593982363,-2.98853636184044,-5.44812960812307,-2.65537951262409,-6.14637497453542,-0.115730976184231,2.09086737686361,-2.60198763213929,-3.75083790962983,-0.497833416364174,-7.90140493557982,-6.34329230933579,-0.116361600248343,0.874268898528154,0.160409900133242,-0.446423230523701,2.3948798789607,-4.44449611456642,2.90690358216905,-0.285294929658537,0.677552252361814,-3.09629995934791,-5.59021021474916,-3.50283959263202,-9.71483021604634,-0.231565172902481,-6.46525712625242,-6.9379137940552,-2.53781701594651,-9.62476280688549,-11.3728510778942,0.409316698782071,-4.03124949331566,-9.84304017242911,2.42786843645636,4.96807058857299,-4.17366783996143,-8.29029984187006,-15.492162019702,7.31155543234006,2.58607012933606,-2.0131634898303,-6.63210477460087,-12.450097229055,7.05601661615815,1.55673959420476,-9.42465413461323,-13.7118506645532,9.91016850995292,4.64701045925927,0.250403845743452,2.43338301205434,-1.1690824131252,3.90802052506349,-1.12381683221753,-6.78333086368937,15.0774642825762,1.75157190782754,-7.65384699135932,-5.14621433305489,-11.9283346521457,-10.1598442536484,-13.67382322257,10.2145725577203,12.8996173590794,2.44316146271414,-3.03128749949768,-1.56428449279899,-3.35764993989855,9.45678462475174,6.59638967438686,15.5276986251857,12.4226417125857,13.3637798316003,0.450781901036032,-1.86224783358142,-0.62929569812716,-0.0972212015107087,-0.0323776223330561,0.475498384353225,0.0721163493532517,-3.02050183077791,4.27962453780687,3.7620258738127,4.85748442576039,7.8240889569383,2.7551291406282,-129.001825669764,0.840591827247517,1.28992764140446,-2.86993350173285,-0.885534789181158,0.517664524448129,128.087204613259,-5.17098881597556,-7.58516275768866,-8.07942334656102,-0.95847018400014,1.78596518953718,5.46696835981522,-2.57491069202571,1.29407446945583,-5.61278479268174,-0.982549389115565,-4.29716322793353,-5.36455050570161,-10.9552849605688,-8.915199450342,9.54052357528051,-5.51774038711166,-1.0397485502709,1.42838971568851,-10.9134184259426,-2.84919364903782,-17.7387887792831,-5.08097273035257,-1.19609697066673,-14.3669164748275,-69.7539052155379,-1.78063708550025,-0.32225824401468,-14.9548858766468,-16.4687300793474,-11.2442355752727,2.42250148128232,-14.6757578030252,-22.6060938125567,-16.9904222777384,-6.79416707805794,0.586233209399985,1.91151686530474,0.83889143139746,1.80204140009508,8.15279983587609,4.61875116845051,5.75097386651587,-13.9628183885698,-19.7672311302971,-4.6181494611203,-13.6156724319005,2.1942613079109,-8.96562416677139,-21.1083920261383,-19.9102324544531,-22.3955436128934,-21.9959976437633,-26.6922207376194,-19.0825903079067,-24.3074375778487,-25.8302755521162,-8.65477340561864,-9.79100526523716,-11.1217610194448,-21.7073885601659,0.447242814876671,-22.9533771444144,-18.4287028674133,-17.6108988046717,-21.4126599049888,-20.4431804947139,-25.8213632057147,-20.361442087866,-19.7255927888096,-18.7344243926457,-21.5151821542912,-19.8859631984985,-21.5676129376015,18.5291888374894,18.4216158502264,19.4367408958401,24.6772269089182,24.2273866102567,25.9729508127691,23.8135695375,27.2480142092566,23.7255776765296,28.1260294003967,28.2536873612557,26.1541048617673,29.5278372831052,27.0781553456726,29.2940926277594,25.7496062712286,27.8211322505795,30.7242423294631,23.6657467624571,24.7764343711234,24.5552414798775,30.4154131330609,0,32.9462478444898,21.9307714411967,32.0447144345814,22.9852103969801,21.9090165297879,22.1383255281212,20.2650271834345,21.0533669739184,19.3376728723239,20.3131029500164,30.9333266946968,33.3158259023573,17.1589378434599,32.2376598760742,18.7927587993221,21.217262288088,17.2473469030796,21.2931050164838,18.999751902406,23.4838071800944,19.9268362631199,22.5189350865078,28.6688372597256,30.4427521302051,26.0827790003933,30.1994583560741,33.0642838705278,26.7457286011352,31.8778700176046,31.5290180668114,32.840733410486,32.7154641469304,35.1176257081742,30.5131578026338,34.1274578303724,34.8431613147437,34.2000382618677,31.6922385773667,32.8998036548154,30.4064318811182,16.094010570216,16.0337647471188,21.1029550129341,18.4038655411156,19.7785538745261,7.73957686121044,6.21879213465741,8.14166659935072,5.56120905795979,-18.6219647684667,-19.1174509346439,-14.0441217039004,-12.7402519160048,-4.62443289513335,-7.63236894846345,-6.87202998562828,-7.11541476662788,-4.81230812665736,-8.02845453812681,0,-5.76403586807155,-6.10964682248811,-3.37648163785307,-5.74182579190938,-4.76851285541042,-6.3681806899896,-5.06869180431388,-7.82400060354019,-7.36983903099476,-6.71293065229376,-8.56221347558196,0,-9.59780571757889,-9.7361278159082,-6.54811833681624,-8.92435689308616,-7.03256443353456,-4.85814030826542,-8.18860173200701,-5.93896372337228,-4.14722985993402,-5.70185905805893,-3.99136830989758,-14.783249011595,-13.6326291642965,-15.2620627711994,-8.37983483413782,-11.101621351544,-11.8027806835178,-9.0036644821991,-16.7531674585944,-8.27981547946436,0,-6.94021120187659,-16.8331313510786,0,-4.38284098160265,-4.80277036100446,0,-20.9114074392966,-14.0866280237292,-6.64058447402569,0,-18.7919088389846,-20.8320775377885,0,-4.03279274663374,-11.1195777427213,-13.651706186062,-16.7421260978794,-9.64240003228339,-6.20701893715134,0,0,-3.85956297029886,0,0,0,-6.49187223935322,-14.5413645892949,-9.35721619600914,-8.02778870027529,-11.5430765589111,-11.5333158268667,-12.3998172752568,-25.4825710445057,14.8769971832862,15.4494195183983,6.31095636274278,3.70448006953415,-16.5687092577231,-19.0227465088666,-27.2192655367326,-24.7012859665796,-19.5864708487871,-18.6970686136184,-20.040674823921,-29.7005091602453,3.15769768630447,-7.14891784132079,-12.0756916177871,-11.2199790244773,5.84375213093218,14.0652935475492,0.213519327714258,10.509363362748,5.0586887838271,-1.52779737241971,-7.51466691170887,-14.173452787451,69.5508102546677,3.94071796199343,12.658665183444,8.07168912496868,10.3549188381883,6.46438314109479,20.1006572089831,13.6367493212801,8.92691308479477,20.4275211428225,13.5756750073488,35.483277097656,20.4716182731776,15.2543421762489,5.92758076692177,22.5942083601339,33.0334660352734,33.52033979027,-2.55360392275078,-12.4823431839034,-9.15783732898278,-5.99893767601975,-19.0401726260856,-17.1899768599221,-17.2880495874463,-4.3924725929453,-35.6092098623126,-0.762937746829651,-26.0254058846678,-24.2839462767032,-28.0467667149351,-20.4685254675241,-21.5079354321229,-23.6136920453026,-22.6566688851205,-23.5846889980988,-20.9889457852381,20.0422766298737,18.7789357907171,19.3349812715657,18.928908291201,27.1474174597008,18.2335825966571,16.5778708028765,15.1943867731667,13.2995337078082,15.4850468253659,14.059299568668,12.3550343054425,12.37724236581,10.997352067902,9.04359195080943,10.8095800263382,6.92770432616587,8.65318811394547,11.6061937673474,6.84704281236953,7.96606651098914,9.13038475587587,14.3165812889604,10.8507255521846,13.4295506644796,15.3627416744656,10.1049641205148,7.15657647976766,4.99067060403419,13.4940655729088,25.7390069041263,26.9409741507511,31.5548761537269,24.9509040023297,20.6352103172636,22.1124143533501,23.6050687041649,25.7865592304662,24.0085447420132,25.9446895686102,21.8256452618021,23.5748134333479,25.9003757652075,28.5037778869175,20.7801562611527,23.12622781944,24.8234146425577,19.8409895925012,27.9874184717425,17.4696978082625,17.6900312805787,16.8389760769626,14.7840490774667,18.3946003246067,20.9505601088341,12.3723516177926,16.1083197086379,18.032061607283,22.3094828211985,11.1532101507143,14.5297474109016,9.64196901488224,14.2002160589139,10.6101917935077,13.9152459728591,17.5423360911005,-17.6429275705448,-6.6790268669375,-5.96494635047786,-5.68586596528377,-4.15933244744692,0,0,-2.55320703281073,-2.7994265644503,-3.69159900113758,-3.70354418545784,0,-1.46248620082324,-1.75982377361207,-3.81071236486111,-10.8253971878381,-10.082986708485,-10.7398828662707,-11.5559339204563,-6.80296113131976,0,-3.23555236717197,0,-2.80365889624086,-4.99282842999088,-22.154547000157,-23.5837273612539,-26.6291212893771,-21.813894492031,-24.2461941613746,-26.276483441433,-23.3539131493592,-28.5678302641138,-27.2714355811443,-26.4121468809042,-29.3212158701876,-25.0569403097577,-27.4300814013132,-27.8082650898842,-28.5797936134766,-26.6618465075194,-25.779942879737,-26.5045393978672,-31.8330988018859,-30.3611101290395,-31.2581866032745,-29.7839991509747,-31.4022175944474,-29.6802345455932,-33.1364119538515,-32.5114549330234,-34.0595339240669,0,-4.40455707476932,0,-18.5077733645778,-13.5912219727899,-5.57537363366044,-9.66769278464662,-14.4016213560168,-9.93830183757774,0,-9.13916363392705,-8.84099524593904,-9.2350504885229,-7.44871563730933,-5.87379213969147,0,-3.21608554461687,-6.89552125163223,0,-2.30983568688903,-2.40693556232404,-2.42765223400886,-26.0573586224273,-27.1102714342441,-26.1357863792164,-28.856505195055,-28.5430228768153,-28.3802274321209,-29.8935660015247,-27.4836465523585,-27.6026922449756,-28.4870198313713,-23.0791541023164,-29.6384061567277,-29.798470432435,-31.8361156360924,-30.4383394086778,-28.9403736714676,-11.2304205954524,-12.0745522663618,-15.5784034660161,-17.1723458074687,-21.6420496036256,-16.278551306964,-19.0807246717139,-20.9199238249368,-23.0656266818096,-24.2426349859284,-24.0258671638358,-22.3712773970866,-22.0758732109345,-26.6610392616187,-20.878779237914,-24.1847138376853,-23.0507914638721,-24.7682680955047,-26.9680476613299,-28.9522705686088,-31.0330444205496,-31.2038626886685,-30.585459458631,-28.7285289837362,-32.9117913066248,-0.0045610569778593,1.07897517565579,-6.06264790664256,2.01314103420918,6.62352102590526,5.81810154484166,0.0616531334177796,5.06004073035551,11.7448745779299,5.78205945983502,4.94886003226327,-2.56006472340383,7.22809130754056,17.1598562934987,6.66290060104988,2.42210266916444,4.79647236445333,14.4282433164208,17.7912347893062,52.3474837858618,30.2430984876192,40.9473773325424,50.1368205180573,43.2729950228543,61.1742433476828,55.5918927830335,50.5843180540547,32.879427429804,101.287997536501,85.7736435602339,66.1608525578732,46.1202150607025,55.9697765419682,57.3904965870412,72.3250743091083,43.5266987906984,93.4962669058441,83.1389262805586,115.661985664799,66.2248277316558,91.6365144056446,43.0370493825021,89.2574580739581,24.1332879591226,31.818750229873,97.6319517221048,72.1904868473761,34.57620211527,30.4495699649932,30.0822198291152,12.621407524607,20.2244132965813,10.6226443470783,21.8971650041319,-9.64004355738265,-3.56329161817046,-5.46163052050466,-1.27153655403133,-4.11271433274573,-9.12813335601643,-0.133056821003969,-20.9054821337113,0.397255524743519,4.60060956538422,-14.2216597174959,-16.0306259522945,-17.9748910618495,6.41389601047347,12.4827140413418,13.330152527224,4.55646088421452,26.4574458474667,26.8155605461231,-4.87151388295001,-10.8369751297306,-9.03045065996464,-16.4773986167488,-27.7979267776254,-26.545893448593,-27.7810511324192,-52.8626301198036,-35.6321026281878,-37.1553911429734,-24.8532188996826,-25.7949097491778,-25.1605221891653,-26.2941769039242,-22.7564149552683,-22.1883742214724,18.4591773251693,17.5733524972039,20.4525604852408,21.0690619628105,21.2621926704972,22.1065151640569,19.6171102460635,21.5550058812427,29.1534315679163,10.9291303823487,0,3.08553313791195,0,8.73149626747753,4.19424968614408,7.17595192873841,4.34137419974688,8.72951702428287,15.1829898122059,14.1372600408278,11.3638225979975,11.3005195984466,12.4331868159594,0,13.9274164940927,18.7654464117189,17.0776779940669,0,15.1528344304982,16.8307455402293,14.88725716003,19.6947028303714,16.8290261298804,11.2719842309966,12.5461679097456,18.8485103835402,16.1974208074339,20.1184274918248,7.95922889105311,12.6905155258896,26.5559486559702,25.3947096410773,27.0495916122882,24.7498642290129,25.7659459061956,24.0592562431044,26.7194486932881,22.7666009642372,21.6085946729222,21.5847016726598,28.9851003843015,28.5535595220113,22.5421926444309,-7.13201825862174,0,0,-5.18952245197656,-6.05192404949293,-4.38681742608834,-4.785065042548,-2.19489916675182,-3.73368986652427,-2.53491232123802,-9.7265255464713,-11.4823617175144,-7.20514390254632,-19.7388167627688,-21.3176786540284,-16.5632712619713,-18.0039856617464,-21.4735516550024,-24.2998921544898,-26.9838447538436,-23.9771466400559,-19.021590200489,-28.8004148868672,-26.8867767292172,-29.9490987651368,-23.1072743242012,-32.4612646399639,-24.1962115245739,-32.8355392721526,-31.152958645985,-30.6357765379825,-22.8989281955445,-24.7947738323606,-24.1345985484283,-31.80363028358,-10.5922355178653,-2.76554028884972,-29.8177797971007,-30.0217635245168,-29.5295702455777,-30.7453775555629,-21.8393365576373,-22.6861708594321,-14.4158306196901,-27.5052208796945,-32.2434454408285,-13.3780376894416,-32.0773605697514,-17.1480983423006,-22.2382686555072,-22.5796677396707,-29.8843925075134,-13.1493602132609,-101.523760324938,-32.0808880414714,-15.7747936058168,-6.29758396680854,-24.9382178686162,-55.5104459644502,-28.3468779642925,-38.5027339021785,-23.1230518041801,-44.0848954323788,-19.3168973700936,-48.4317164969304,-85.8315692399184,-57.9759123109823,-19.1607653916972,-9.94547487319794,-34.234871745184,-61.4916851581752,-48.6630077949894,-77.8665619321669,-68.9854818154169,-72.5363413325346,-78.997592881452,12.9784584739856,19.2471681356425,44.0442996107694,73.6177382634093,57.3575917730284,48.2257975689679,42.7223472745283,57.5517909492299,69.1266629019136,159.439895278854,76.7874467663098,78.4020048068539,149.199633620794,139.762620656746,52.7461082498619,103.985672718502,133.974933933071,113.855280072554,118.504764951901,93.0482872983603,92.8633919863769,50.3146552168555,89.2592216728488,68.5221349945587,48.5079183358893,15.921455854035,24.6269801784004,32.5229154651697,38.3109570192595,34.7342000946177,21.799083293274,23.8204040685606,3.87251311603015,12.5589041542499,34.0101366764123,23.4117275314075,15.2772649179519,19.8018766640924,1.270207164856,23.3041889184546,-2.87093253366312,8.4106812104749,-3.27296900212128,-0.202332101818065,25.5262458486153,27.0114933113935,20.6902768651289,17.764794203289,15.2163877776602,-15.5924142782413,-22.7910890584504,29.8615896957955,19.2414224638056,17.6474442240222,16.0162156538796,24.1453712936021,28.3539759735101,20.7266093078077,23.5998132284591,25.5885680122012,25.194360423097,27.7361684890977,23.2459052370431,29.85330180926,30.3722220213023,33.3269013087606,26.5882512398816,35.6875023146997,35.0702167871974,36.3746066052881,32.4995869903889,36.1169470671306,33.4411269308355,35.9827766069389,36.0744158449955,31.4631006563044,35.9121461821843,36.4908841672783,34.6966864987485,34.7141620395416,36.1969457874871,35.2662998156256,35.2333220611107,34.125660211748,35.2640695050889,35.846322300255,35.9262898310766,33.6610314309599,33.9462961364384,33.3247475390921,35.4599896919991,34.6004541647221,33.5671157743206,30.6097999386788,35.1827329586788,32.718938829611,27.5033814470809,31.0546772051445,30.4015625502116,35.3457202648018,-2.88169608638225,-6.8257129708423,-5.90098204134464,-4.48853906873504,-2.41766508932267,0,-1.87166407161418,0,-1.22756527060026,-4.20843977106181,-3.20984773006886,-4.77835665520686,0,0,-2.02121540149308,-2.5629189205497,-1.2889966410877,-8.99872036510104,-8.61840160718668,-10.5022118830182,-5.57267831478128,-14.5479008877248,-14.3625178091351,-16.8974756746859,-11.9416209568464,0,-10.8327750647579,-18.3272047949868,-31.3186213795993,-32.9343310961552,-33.9240982466545,-35.5909775357938,-35.0231384993633,-34.6186259586129,-35.1412142653233,-35.2443676259199,-34.8216596385579,-34.508488903927,-33.4831493170903,-35.3777951921934,-36.3411534705318,-26.6518262142578,-26.6104967235869,-20.6218657577742,-27.9186569620118,-31.4709164916322,-23.0456738881951,-30.8374128437302,-24.4140319199712,-16.5250596081454,-15.8884677094979,-21.487921865151,-25.338010507229,-16.3686041697532,-9.3825641230742,0,-10.9932835508058,-22.1113250189892,-15.0370641857754,-17.3883772853685,0,-9.55736423673879,0,-31.0602576406958,-32.5162562779284,-30.4663334036983,-31.9398722377783,-33.5787530410062,-32.8147337649264,-32.1389959824232,-33.635923160048,-29.5822400882511,-4.39046666730031,-17.7168333941822,-7.95389590304717,-43.48112609545,-32.3003163858605,19.4621839260379,16.4685876718557,23.5553277966977,57.4973176112252,156.114254004453,55.708805319427,1.59634812713698,-7.71538404081247,2.31322544554326,6.11469907886934,-4.60478633218956,-0.502629507884611,-4.97246665772635,4.56464280237109,5.38550859367349,17.0599717548581,10.8311219472898,-14.5914263441778,30.2164218890958,31.9247756524751,23.1705285539039,23.3267524603811,23.5650510409778,25.9023161374622,26.9959591314712,30.0647877422285,23.5216883465246,29.7594608943515,25.0824162349683,35.31317843062,35.794701388293,34.1095149418113,31.0948317213856,-4.34796443065768,-2.82680912980847,0,0,-1.84983293351886,-3.55146925439807,-1.75602379328466,-0.903048167690121,0,-8.20428233978294,-7.82101982110631,-10.1641450919829,-9.03502871439218,-10.2790746067518,-8.73623520716693,-8.13063567311076,-6.1719218798489,-7.1931636398045,-6.0322937101997,-9.13649191571068,0,-5.13726545955232,-3.44756461574238,-2.91553617603129,-4.6893899076865,-11.0776074087186,0,-6.26253112271654,-3.73305578193966,-5.26346196122286,-3.22731061791035,-6.01731357011994,-3.98252505848723,-2.06126971891017,-4.70163307378447,-3.95005843400092,0,-2.16070872245114,0,-1.60057167234675,0,-1.81412733488654,-19.9117864915416,-24.0342099722407,-15.9573059844638,-20.3753674074382,-34.9705022306741,-30.0366760035786,-7.97643428408665,-9.14762910161124,0,-21.8754463207894,-17.2319443900159,-21.8713445157614,0,0,-12.9548696949241,-29.4819287107613,0,-26.6443209379707,-29.1797933528325,-33.8578055184881,0,-32.9004142053801,-34.4144542642217,-33.8491081521332,-32.8019986995276,-31.6467194882224,-34.3394566319456,-35.5485888874369,-30.1466009237319,-32.7954689020622,-34.654953136574,-32.8024830703701,-35.7055701657449,-33.2261437763559,-35.8874499277382,-27.0149147766082,-35.0113595350688,-36.0950996279179,-36.1983263589059,-30.7312571046826,-34.3234910722074,-35.6422404912724,-35.4904294642616,-29.6671532318452,-25.9450246017385,-34.8532869201036,-25.6493825427405,-29.6284810245445,-30.81133066737,-27.980348152935,-9.84327085598739,-1.75707356680391,0.388840971000119,11.8869941257722,-9.69049946196593,-35.0252941161926,-48.1804095457615,-60.7182545002374,-50.8711276561165,-54.9851277788245,-115.519868558717,-45.5802103445763,-30.8420105145561,-75.9967062437255,-59.6259086837534,-43.1800152432061,-82.1614875212975,-41.0618904782214,117.76255739472,152.748080740349,128.950398843452,122.638810974034,155.248828380501,84.1723019433874,114.967364599166,158.612812907918,64.2724380653453,114.256437324687,134.55453309033,43.7418783680215,75.0367459253545,101.758510261171,28.2260983628415,148.016717757192,52.7894412963406,83.2030535325562,48.1220413630174,93.2016358727851,0,9.39566686600154,0,33.6343894946887,36.1741298346992,22.8856871384812,-5.99243981174181,4.5524906773958,6.93809305137016,-13.2634889014137,18.8561270533724,-4.00898536540943,-7.04943769326505,-3.41833980716719,-4.47691377253031,-17.3540298817191,17.3453736459376,49.7455776718118,3.14662565088837,69.4889769068531,82.1252481132888,36.2669941364131,18.4255798751507,34.1901664364515,0.130598434033322,0,-6.90912382786121,9.6331241658873,-10.8463276446059,-17.7720632958228,-10.2521474402688,-3.60542296288477,14.5792526665961,8.6256666407771,28.677063263665,31.8944180865597,31.6312751896114,33.8263804416034,27.0862283587854,27.9361649438937,27.5065277028137,33.5047189417576,-2.46314136265215,-2.31231450247817,-1.37249820805841,0,0,-1.01822946017513,-1.53172773820012,-0.854589502144836,-2.3503424388758,-1.08848098489328,0,-0.569507804322843,-0.340267101809692,-4.04230949675824,-2.27983840334477,0,0,-1.65154009048711,-1.96102616712586,-1.89258670602438,-3.51174128620648,-6.90404078218141,-4.9714886701448,-14.5091869774762,-33.4930282624438,-33.4501833279163,-26.4479780025034,-29.6161249002649,-8.92390134478281,-22.3834338467167,-16.727768935968,-21.4208248543694,-15.0807944630618,-27.2550949079205,-8.64441175452935,0,-8.82546299098655,-16.5787965240603,-9.58612752381961,-12.5519899686272,-8.60716195022371,-32.143871586552,-34.2598880390803,-31.942055982563,-21.348598528487,-28.3771667965012,-24.4214769006513,-32.4750534179009,-26.4241054069566,-18.2785436851357,-33.2981247984036,-29.8558250894781,-33.2017042478745,11.6324223817925,18.297577267074,23.5073048928171,17.0490442593121,16.5620982025805,5.57358992397051,18.7988551267761,11.7034104981726,1.6889148291796,2.29843941235856,-18.5404929949978,-30.1588539778034,-68.6510395128331,-95.954248919807,-95.4759153144055,-122.24254235462,-109.407140939257,-160.519168885545,-149.753093048668,-140.417492771737,-114.351039504984,-89.1160812640856,-87.0740184379764,73.6418154281832,98.1992292471668,0,4.90192603623545,-6.45240721891241,-19.7329897666261,7.50168561888471,1.5500964155711,0.102887572382838,0,2.73067507799889,-8.22252248277529,-10.5175432048034,-6.41362171035105,-5.30723818248567,31.2914015498115,29.3076896396809,25.550789556492,29.7390912215384,26.0709294835907,33.7978266054214,34.2476236488498,24.9608707208341,22.2964083323892,20.5858610987711,15.4584456792163,18.6610612076348,30.2132366826945,34.3692785034471,27.5513401209037,32.602521467395,-2.87769851041601,-2.83685449675097,-3.79439758988791,-6.99007185178204,-22.1025817263585,-6.64724045513269,-30.0034364279961,-29.8819010868931,-29.1694849201766,-26.4956718507528,-26.467035196155,-22.8032329756055,-21.9049541963648,-16.4163957668106,-12.3213980772532,-19.6811917840814,-33.0586433012254,-31.3095562638609,12.5009152553103,-0.539814523723812,-36.8759265941172,-23.6330338637278,-45.3788243500085,-36.1645138606101,-69.1610580718267,-113.477784403486,-107.006668268761,-20.5230367277454,22.1392021046816,15.0867872483822,8.2210753047256,22.2641177541494,16.8182451509068,22.5950838134934,19.0466770279216,12.3853631561428,20.5483028389346,18.2467328604181,33.5371102727579,34.1361873837277,35.1289713292406,34.5837596680591,33.033771906813,30.5502151070699,31.4307637402138,25.8076432613171,27.2669072137293,30.2054932984749,17.5929779416936,22.6973841281119,29.1675716166077,0,20.1875999933117,24.7105101240128,25.8469573635503,14.4951968449383,25.7989961331068,28.4519674087729,20.4284947080917,27.7247530406347,21.8907774096439,22.8013899626162,0,0,17.2089322277011,17.5361662573366,22.3070146205396,24.5034217344991,6.15651683248001,17.9467316349716,14.9114591082587,23.0731690367811,26.2068670296277,17.1776883588001,15.7816418556737,12.8030246648069,8.83994175974199,16.4018546367428,15.5332482415977,-5.4362278255568,10.872184366821,0,10.5201668844571,0,-31.7056379238016,10.2432753443608,9.05900244404798,10.3507743244724,0,8.18388113545345,0,0.313344328603003,-6.44161382224468,0,10.2351948735732,6.68753931298662,-10.0413432394275,-22.40835112646,0,5.76838347171276,5.43728322272701,0,19.1717420403658,-150.927344581738,-7.37304423301635,2.0772192298821,10.2816955972716,0,-53.2196331983315,0,-19.6529663492379,0,-47.4559138127524,-8.78342993760356,9.399920222167,-160.021795511118,1.87754840710075,-88.1614999702223,-98.8298221771553,-60.7041878841584,-52.8247588306117,-94.1649822123156,-82.0458345952616,-116.658377379165,-41.592091583881,-160.725621800662,-120.99909814457,-157.032255046624,-40.1586548674701,-65.9452077034522,-66.9178988226344,-59.9841531215276,-32.8089024350349,-159.490383730729,-125.312433706387,-123.868062518192,-22.8645010044355,-22.9111890885316,-11.6698278497303,26.9662193812643,27.4384950671075,30.2758343964157,31.2457683211202,28.9594175441304,24.3170891452047,23.9773756117675,25.6157151606404,14.0498467870091,22.041457787775,20.1027047476828,17.45851898171,16.7197531087995,8.47885789906031,16.1789637077607,-19.5423831837494,-22.4642216608976,-18.4160851999445,-13.1047935068173,-13.0865045978479,-18.928046160205,-23.8916288909454,-31.3584138115217,-30.7557466039165,-26.4221542724821,-28.0992012754871,-16.4852266878051,-12.9087496190733,-21.6803505742778,-61.0231172935777,-86.7469206485635,-75.4538403830278,-145.52778857747,-20.1536462419505,-13.6973755873314,-13.2279280112392,11.6058078352143,0,12.4270900398318,7.31275680276384,6.88253229400021,20.0828884281871,16.2361304564707,0,16.385187281416,9.00142806784005,0,9.53403647633836,10.5248735040481,0,12.7472403409028,7.36445868366427,6.26761464779809,11.606243558788,7.21830038934434,2.18659801751478,-10.4625492358419,-5.46388171074915,19.7980278010025,28.8292549291515,29.9544936418083,14.9343116720327,0,-156.02923479721,-91.1597307507067,-33.2914056030416,-93.5959954268681,-8.87487507830501,23.2634783223577,-24.7969365477136,-27.0893597576798,-27.9591733637773,-24.7083197698868,-23.0447868340707,-79.3568349837307,-61.9045386388495,-121.468318079478,0,12.6698142494355,6.8708123412746,8.37826569079447,0,0,5.32391322957718,6.25174139514485,-81.1713275538096,0,-0.281079153325916,-2.11345039870745,-1.71447761926854,-2.61336501295347,-2.80114558814886,-2.2070158256651,-1.42921165047566,-2.91532675432579,-3.6093925887653,-2.62921868979059,0,0,-1.0834695798459,-1.00040129026609,-1.11382294690616,-1.39358390474021,-0.732197241009301,2.11650239245291,1.45814455789741,4.2502252530833,-3.99238428774621,8.40706321913347,9.54514691341322,-1.5808188919736,-8.49742305307378,6.93589443358024,11.301447187952,7.8776463135782,-9.68637369202267,-18.2821885944118,-12.3664547511831,-12.3526245361333,14.1838433544297,15.7665873653385,-12.0768884823145,-0.735734588491983,-1.20581340160277,0,-5.60509894472758,8.55432390271558,5.05473730647323,-8.93048783969335,-4.0007976066116,-11.9423646775732,-24.7515222041792,18.0095048670226,24.8705992286243,-28.8426415691457,33.1503222145872,36.1794164573206,0,-5.94020792919518,-4.98195250307734,-5.47058685662184,-7.45838138391602,-10.4930994753277,-33.9567469858725,65.4958533799705,39.0041937681621,-7.80754964044502,-36.1120380207216,-35.5344410642234,32.7302452196403,-8.07199104011493,27.9930530755828,24.3328722080646,23.602102186061,27.4198822410976,-26.3712748625105,32.4401975039628,-125.457975660169,-16.9483227841408,-50.9916657587959,-144.376769326387,-92.4679343080317,27.7187891901327,-3.94541502863878,0,4.27648869024622,4.05645201543369,-54.2947272923512],"Archive1202_field2":[0,0,0,0,-251.152176082167,-957.541401644798,0,0,0,-59.4346488612163,-406.779480725457,-59.3786851131481,-172.805894016004,0,0,-35.3331896850282,-13.3123617805803,-26.0650700034091,0,-17.5568044855228,-16.4513823521821,0,-8.51596443994569,-8.39320412193797,0,-4.17079394027283,0,-14.4063292436468,0,-9.97507546751654,0,0,-19.4452057212284,-5.76007776431748,-13.7128658130768,-15.70514810591,-22.3188575006983,0,-4.44925683579956,-10.2332349605314,-4.64764456408116,-32.341967716541,-28.3098579224597,-9.69119443161236,-26.0493247804912,-23.7869519428255,-20.380692235048,-5.70567888669045,-23.6104665762765,-30.5174761577078,-19.4191503728416,-15.9921274318981,-11.6410534032882,-21.7831153585063,-32.0385169750248,-28.9671950440458,0,-11.5906545311572,-26.0535716544525,-26.3881812457633,-43.1206928907051,-29.5758650008037,-35.6733003497798,-4.60978853436985,0,-7.05517406243148,-18.5437936953517,-39.0492900779316,-39.4908691264742,-39.9121011960262,-38.8496666745799,-37.621409787862,-53.1563021667763,-54.1294295558813,-31.4556816710229,-32.6523706588375,-46.5737720341786,-45.6564841250307,-47.1358350808742,-25.8173008725416,-40.4440844820119,-50.909680386514,-46.9032961138305,-56.3699844135255,-38.2644038969624,-58.522997888419,-52.6848018930065,-31.6229109313535,-47.2340057709947,-44.9398910840429,-54.2426657908256,-68.3036367524906,-43.8268597151163,-36.6771390628182,-69.7510322615736,-51.2372675377657,-53.2762034011767,-50.501810130282,-42.3819635327829,-59.8645698400777,-31.1726473955763,-33.8608346330986,-39.639637590689,-30.4022192335352,-36.668464510465,-62.432974414004,-64.4349129871551,-73.6596543657726,-59.8265366651735,-66.4957221240961,-64.3274913216771,-10.6428906999193,-5.03995231606946,-4.13174390273079,0,-33.2854535908948,-18.3748847954138,-30.9981710028829,-54.0295518463659,-25.1907777559151,-25.1562898119053,-25.1627745758672,-58.0587768626258,-81.3986742236517,0,-24.3684784578954,-18.6065357074225,-27.0756868867544,-14.0803013492304,-13.3973943753278,-28.6949130684077,-10.0444759740724,-22.6859761065245,-38.7372124031248,-13.1571233218138,-17.8764027389194,-32.6525277647055,-32.9570935731206,-37.1514375794719,-45.3971442145092,-7.5485091790096,-21.6258962985324,-17.3790731045707,-24.7192082163982,-4.92486369611301,0,-3.61115888761538,0,-5.1752259307373,0,-3.92351058528152,-5.99047905079984,-11.3558747194956,-3.68374963903759,-8.24716816613341,-7.38754660775434,-10.6777171855584,-14.0597284030749,-13.529161595907,-10.2487960309124,0,0,-7.57404432196489,-10.3620714205104,-15.3486682990218,-13.7378060690439,-10.9469366758024,-21.5223285326356,-17.3129463555705,-20.1736393678573,-17.0118273167796,-5.65845986410194,-16.3666359588042,-7.61295932649432,0,-10.3081409045478,-3.70585156477558,-12.9774187593431,0,-19.4066683565203,-16.6096325024207,-14.0005314523067,-21.5492578423465,-2.98727811526792,0,-2.62440650983196,0,-3.525330778145,-3.50393380067013,-6.77954900538357,-54.0804715203003,-60.099417789967,-74.7535921757437,-47.1765925249861,-28.3229381778068,-14.2659819849885,-30.9826559367291,-21.6217211233584,-25.6841578236382,-26.1936524183838,-30.4558581598029,-25.5518914818801,-42.0861209131129,-31.3359831277603,-28.3564897212243,-36.5128022521419,-37.7853377824039,-29.7729059342305,-42.2037754153434,-25.2486255272119,-23.5656867356421,-39.5762268056939,-50.8369028040797,-18.1738438675127,-36.7427564181579,-20.0163824882662,-16.1188202337549,-25.6027605767658,-10.318234902414,-23.5722363943135,-13.7167227362571,-12.7802056909117,-28.4139515440778,-9.63862413534785,-34.5432425608509,-33.6009725183565,-6.98403625075071,-5.41834524227972,-30.396865512063,-26.6119530705735,-29.8240873752172,-34.6260388369415,-33.3670875164451,-43.3912974444501,-38.7712253027268,-7.8217470941813,-7.24207897650998,-5.40410106207783,-2.60224108050536,0,-18.7880119546148,0,-2.01810612808484,-47.0894729407561,-71.8895085045945,-59.6058028946296,-70.7799580379962,-96.1706846657937,-69.5371538522003,-48.7185591879998,-53.6302340873357,-64.1522869053104,-35.6468941762354,-50.1351965405429,-33.6194474687128,-16.1417536223374,-33.954304543323,-40.1734865581401,-49.2218395709629,-10.4193078567675,0,-64.049123309677,-59.0066910025368,-46.9638502721561,-86.2914868806665,-75.1385120560598,-75.4193929563638,-69.0981971113839,-68.2021299924649,-84.9437211920655,-57.9513130981549,-76.0848140013439,-79.0602077804277,-68.2944002131243,-79.9588900954575,-95.2777937832617,-86.6412453252399,-88.5115980762795,-61.3419519153561,-49.2476545303861,-55.3573618766239,-53.1775458523643,-52.446186714315,-45.7345078340694,-63.0903833099306,-60.8068670045092,-48.1379772619079,-43.7936518104552,-44.4946996957173,-58.0790777989645,-16.1722191537362,-45.1916758688076,-43.9371132706618,-52.71889795655,-63.4589799724006,-48.4982281669795,-55.8165438242994,-61.2971914548102,-73.8662283391703,-70.0899444410662,-57.3579612258918,-51.0079538089958,-66.4114259670408,-65.9994788623035,-87.9181118894069,-65.318592224585,-79.1834331878845,-90.900485180909,-77.5732621981502,-86.9647208695748,-105.646404477222,-95.6224792832982,-101.225618535058,-96.2064653614175,-88.5620025897075,-70.2073026086142,-8.94495340147216,-6.92349815957465,-4.1218246312631,0,-60.3359830628984,-76.9874349575793,-65.0908879373818,-69.9855248258295,-71.8404500880922,-84.0075824335291,-76.0163400355457,-78.835785827405,-71.6844512428485,-79.9331121354711,-86.0344634514892,-81.0872413407128,-74.5567657014835,-89.2262812842077,-79.6390278131321,-100.988272565481,-73.0847283770589,-91.7870009604357,-63.1317803121999,-60.064406195106,-56.6379333742974,-98.5206260816134,-64.1183263290062,-59.5113375116676,-54.9447969912169,-40.9033311113209,-56.3754785120332,-12.329835615084,-21.192417423273,-84.742702044205,-97.6179032356614,-77.1957823019614,-3.02711109817798,0,-1.98104518069912,0,-1.42500267020952,-1.26915104812411,0,-1.35267293279805,-1.08364727563453,0,-3.46096401801768,-0.685958338572964,0,0,0,-0.51121961180828,0,-1.19369795367425,-2.88965562504143,-2.15240631944341,-2.29723425494439,-0.626585735366799,0,-2.33705467302322,-1.08889562677706,-65.9633521949139,-71.527209493329,-68.7369026785285,-84.7005847106769,-67.5785460249261,-72.2655123529809,-80.3236953111135,-88.1571016245898,-93.0597884183958,-83.9937127145964,-90.8502964213125,-90.0412967314348,-97.9502257554672,-90.7366698959453,-100.245558511748,-115.22811672907,-105.275812715664,-108.064119369727,-112.447304786139,-118.19645957157,-120.689926246862,-110.830539355359,-103.168282839611,-95.9236477425042,-106.618612749553,-104.500064879889,-117.333528599924,-63.7258147062369,-71.1505440720337,-74.1165518391991,-52.2133280357625,-57.0079860865808,-48.409562741228,-13.3513430535875,-7.82255017907859,-21.3159416490628,-18.0802299432978,-19.4309011029541,-15.2399357925469,-25.2815146670607,-4.22412930846173,-96.0221487286347,-114.079034302947,-105.692244865015,-119.781297445894,-105.029442188454,-114.481138767831,-115.748709766874,-132.765394382559,-106.459556058614,-102.701388668878,-107.313004970131,-120.207750065095,-95.002497399895,-111.952122473863,-110.897042404623,-120.591924257568,-99.0838852309932,-142.068324998527,-97.3842718791819,-90.0014975921271,-130.222839968936,-133.037786077188,-135.766448159203,-135.597410515464,-153.423955955761,-126.587835098102,-126.874915303314,-142.031707541126,-127.520299904026,-136.345982587111,-132.505565210907,-155.689190917387,-136.112604627641,-148.702914947157,-152.487833897227,-156.878555564449,-144.320246670324,-183.244204215819,-160.138286880265,-132.093914260085,-167.746249144908,-135.311112350827,-124.729820100571,-167.234380677588,-180.03622449909,-171.934708146502,-170.143355087667,-157.910984255581,-196.341441471337,-183.439615897917,-209.722564716602,-199.986291598789,-195.257397486233,-196.224477613039,-166.543937770097,-176.020869785843,-143.6384938484,-149.767802452068,-181.672004264379,-221.561261872643,-158.429624423492,-129.93205667309,-178.541535235431,-207.24753168241,-213.947163129405,-184.48256677959,-197.329631996695,-88.4570222814692,-83.4471787647852,-91.9541610342272,-107.069982472508,-123.388174504168,-112.315520454891,-81.7110366139975,-79.7388838142471,-68.1735831916546,-92.4756416747355,-88.0488737537096,-106.932731647444,-75.8112591206189,-97.8108707376074,-111.075618607155,-102.333637978107,-95.9983385521907,-96.8708442046419,-83.9373411703528,-79.9880517655334,-52.2297600145982,-38.0463612412797,-9.89280793335177,-9.91910672521423,-6.4589477149522,-7.86251940373256,-5.98231236773386,-8.5424472119949,-5.6622237781652,-12.1571764678976,-4.80026199611369,-4.35286937327864,-6.36723605235254,-4.0792419829693,-9.16301312968676,-8.22872097583618,-3.35154122879175,-2.88515540869963,-4.68184784339937,-90.5646210934519,-86.2586908186401,-225.432451003792,-164.224262328968,-190.701098611077,-210.610277932641,-193.508349578007,-188.341474886194,-203.663112742306,-173.598140516139,-231.950948720204,-213.830161696124,-218.274114429301,-232.044627356973,-140.825500513289,-140.53542837717,-125.009131352089,-124.06700838903,-120.006442780984,-123.739044091158,-161.92345471148,-257.138560701008,-201.322380325759,-185.255002629176,-103.680086771518,-113.2244399202,-102.505805608727,-93.8753108308462,-99.1388566068086,-58.9435166235257,-67.7052900433078,-63.3448018491379,-61.3266171607036,-68.9569704795918,-73.7159662909587,-47.6241050898999,-50.9900968405039,-55.3853152882307,-53.2248255182569,-52.4300046823082,-39.959125352335,-45.322390217782,-35.9674022292615,-41.5076778074639,-41.2990061048826,-84.0891528476487,-44.6217492916299,-45.0177765424649,-36.597586703478,-43.0675368230224,-35.5259103164929,-42.030933888374,-42.156312147926,-31.0155006406578,-42.4562035671441,-35.5679892238735,-39.5961078634758,-25.7800898956666,-36.4312894259251,-30.9528049003842,-29.7424139856234,-20.9810228446095,-25.9838265420451,-24.3000897022761,-15.4432947703215,-20.328791762747,-7.3964398038869,-15.0680811682689,-18.118746085163,-19.9907976954005,-22.555821187573,-20.2290790441402,-25.9044386730259,-13.1733957480351,-4.88373272338743,-1.9102037281131,-3.36247604059482,0,0,-2.23735937470079,-4.7306531787194,-4.0241239897035,-6.52595241385102,-7.91125870284435,-13.3322449969469,-5.00419556490057,-11.8436844112056,-212.899409855618,-226.436752303734,-219.837541571872,-243.905178986706,-243.028122339013,-239.468515893623,-262.586113073573,-171.445783039345,-177.576578137506,-161.416938667101,-165.673975028619,-181.802305097517,-147.869613915768,-172.737851147226,-161.582191760135,-154.191071795206,-142.259163923163,-135.311878940732,-165.729122123184,-128.894300016735,-168.129506882404,-140.982471533931,-195.698249375224,-153.382307395425,-179.881912296941,-139.744257829566,-189.295705082075,-181.931747659626,-193.465020048518,-177.191344294723,-154.610222390443,-163.823703790837,-147.033421022374,-214.867655073396,-202.342155733031,-217.439233358391,-141.136141504361,-129.936141278396,-150.465816519008,-128.418454941534,-155.352477550611,-116.76129562329,-158.46241293595,-136.486927293814,-170.557652756584,-109.037062327461,-115.084250138645,-165.228854831059,-187.206508113783,-113.18707025719,-101.793074035122,-124.313893853237,-133.723034463705,-132.092221412029,-147.925687202244,-218.766608747493,-98.2214123157911,-204.24691773034,-97.2624584545391,-83.2692387646973,-202.005781401623,-221.351893036526,-193.461327594519,-245.342320086261,-234.875881515331,-193.821528232929,-172.871824520781,-220.93568305901,-208.614962050026,-230.392220772939,-234.924116264742,-239.054770667735,-272.650646627442,-254.802166739528,-243.890314390607,-278.118772646398,-261.674648479578,-172.037316094656,-57.0502337522881,-51.8270460387455,-48.8205807796859,-76.0033341196501,-84.4951439153745,-64.3254383962442,-46.2456371919787,-25.6655014369571,-2.91762708450643,0,-10.1765045623019,-265.973492303176,-142.885266533884,-118.997127742857,-123.61661198497,-199.953703245992,-211.684637754938,-235.667440614588,-203.230114784815,-151.927201885578,-131.558816260613,-201.936408484146,-123.244794430873,-175.663110204784,-146.275152415353,-144.910145899013,-247.722799673467,-224.570127776821,-234.53300257395,-157.396816610497,-154.81596845349,-160.745099945063,-143.359091746748,-174.987480295628,-222.819326104005,-48.6455105837919,-54.7060886083622,-45.4468407082991,-37.1159969053611,-42.667513703942,-40.0943721643445,-102.407796745578,-59.2369671445232,-74.268543782583,-84.9796822899855,-63.018413340441,-81.7798977518328,-94.1103617533896,-73.0619995503557,-77.0785447553067,-64.3639661951269,-72.0723682214041,-53.2184679958528,-83.6451023943755,-55.891315893235,-92.6303587222806,-105.424387198083,-93.1963683973397,-62.3358164713706,-101.700444764459,-121.840404698677,-90.8788014005498,-66.4469511931523,-49.3537876015008,-95.6024613975292,-115.435579712399,-83.423250767905,-103.154620954946,-99.7243566031656,-98.3840774085945,-77.7093559887462,-56.6165961070013,0,-76.7442242162828,-53.4353085126502,-72.7933570186319,-63.3136342303399,-64.8921338695852,-50.4671667623035,-59.5314575641277,-64.6861920908673,-53.8904260898028,-68.4500279625044,-85.0147185287178,-24.2720621700982,0,-3.38103614225356,-4.08476886005043,-7.19005302287755,-13.0680838421147,0,0,-8.80524648673276,-4.97161924478916,0,-9.48999872817005,0,-4.46501855262625,-15.89158753566,-8.84960448686751,-5.71546541428953,-13.8768547351826,-7.65738934373268,0,-17.9125969621135,-6.84348919251584,0,-12.2466176528161,-11.6807278619833,-13.2462559712847,-10.4481245001157,-7.68073415404215,-257.804766270796,-272.745785319458,-294.490627205527,-287.575996365353,-115.008641828547,-123.110655547888,-114.907930394614,-125.301532596103,-134.741188865731,-242.921920235477,-227.516827739547,-242.528882595268,-248.648510458821,-264.670890881338,-277.985225478487,-263.208551697661,-262.168666919348,-269.158741502451,-293.622997087297,-276.526991278904,-285.972037344127,-142.702944516502,-142.746026873837,-190.465002542024,-205.102240366717,-202.071952785921,-114.279515013727,-179.763154013571,-228.629102709413,-210.149790077009,-267.81356829665,-193.284103113463,-250.476406573106,-244.824998500203,-273.102328893884,-223.044554818551,-260.489710990487,-315.927557951718,-229.241494679258,-290.869842623891,-195.542414489434,-265.273946008153,-308.430847618482,-211.66509681326,-187.947485623685,-204.410493152759,-209.352310298885,-214.541819988142,-247.299354900416,-235.902729165129,-243.704798422565,-256.951243115196,-285.186525667616,-288.616522258907,-292.466119308198,-305.895073562563,-337.478268674149,-332.31399109198,-304.148401159079,-111.700633891864,-44.6081635340508,-57.621511986064,-28.6938124937712,-40.8191144429779,0,-87.8384358801725,-86.7032571097867,-114.931873682875,-34.6996634545129,-18.3956766562547,-6.82688364501437,0,-276.593851497609,-293.293595267749,-319.328443887563,-226.775249769581,-229.56902824984,-236.745929979875,-221.821352230214,-269.719243119965,-252.795789575854,-261.497741502406,-252.55209239524,-257.215535297601,-333.760551035406,-166.868545491292,-196.967198420633,-127.403533753212,-117.928986867799,-130.971399988629,-135.38997260134,-209.591030233235,-168.916272042556,-314.515241630981,-331.099614218077,-381.044416965178,-353.998825582149,-365.990143315642,-365.626804389959,-353.840900615025,-378.977580759259,-341.572946495076,-427.634317419458,-347.967251377158,-407.196919657568,-401.688883756163,-417.157214323872,-411.897021692348,-416.341380881459,-452.07550053297,-463.952526153446,-441.095605513457,-467.154931429692,-320.766871518461,-351.465536869172,-379.334703064314,-388.141013764611,-103.906165525215,-114.999994760145,-127.699581727955,-46.8056042110645,-44.4783621831848,-38.2598551343011,-30.1747945253414,-37.6579870986147,-37.8654069242318,-27.1401519937271,-34.2065883505348,-22.7818523920053,-32.071178151696,-27.6209946225788,-18.6330982451662,-27.3540734554718,-21.8623470120723,-27.1305623517962,-23.5715626460828,0,-16.1046771735592,-22.2523428946706,-25.1309518914579,-31.6026994188489,-27.8110758610771,-24.2463598128387,-15.4943598938402,-22.8767597189867,-32.2815531091449,-19.8400731649505,-19.4111079756106,-15.5563251895937,-18.670730807864,-19.118731087992,-17.8339856055234,-12.4263868820891,-39.0167266352658,-48.1196005488555,-39.97795155823,-24.3276145279223,-32.6390081641027,-31.4646764013679,-38.0578041173206,-19.7976915927816,-29.6501036330014,-34.6885122941338,-102.234363704754,-29.3986396831361,-29.8169026254371,-34.1915981015201,-34.7784499126219,-47.1499432538265,-42.2423472196384,-40.0882019331858,-42.4659188494147,-43.1394164353765,-56.1285476137665,-33.8684118535756,-40.243969664175,-54.1659221672932,-47.0782634382991,-53.1615506684557,-47.7611003069918,-55.4471194330225,-69.1275484154607,-56.2053497552159,-40.8698027052596,-60.3903532952202,-70.0022317236872,-38.2086715718735,-65.0182389717119,-63.9329585444243,-61.9406125401715,-67.0823810886822,-74.1142782922721,-82.7497815818727,-75.5021820718686,-83.4062158932817,-18.3456500397852,-24.9503736691392,-20.3157522840337,-19.5308852309692,-24.0407302521028,-29.2223788735161,-28.0434376064381,-22.4255472792982,-19.8412808981372,-15.2992318013557,0,-277.047425724954,-307.133300948485,-288.767621738451,-308.619821408928,-278.947159577177,-303.049369300157,-338.032346470463,-237.297892932437,-233.56057161242,-228.851081112969,-215.972422663258,-220.226540560309,-194.731907873506,-259.719761438635,-204.167283164548,-218.716903283562,-181.699438698322,-241.661741654594,-258.656931433957,-239.249962100351,-259.553224646134,-230.768074005003,-254.306334075896,-295.211843571937,-274.345348902094,-295.420774477775,-279.869776540599,-259.029768332774,-309.62001500576,-330.586492869712,-314.877315196415,-300.273887405291,-336.368169025592,-291.966664291271,-312.59051650032,-374.200837285623,-351.931379567086,-346.094181020941,-371.693331443622,-355.82817653648,-325.675423675743,-369.708625526214,-412.221409018572,-389.630274852082,-396.507201242067,-405.822507242897,-419.738500714176,-458.187199046011,-435.318803977104,-435.659912174299,-487.589643022208,-465.818509631591,-432.861757490418,-518.361769920949,-426.911972184218,-456.618490702185,-496.037031283488,-398.762158226555,-477.711907793091,-487.68057196451,-547.432983316466,-460.160124664839,-467.135529397864,-482.529242119279,-517.185191634731,-489.990292161151,-424.571799703621,-524.583050634585,-507.749816083261,-539.126041768186,-522.812951749243,-436.957075670816,-497.617637241924,-568.263417037668,-508.885808719028,-400.42011593916,-495.62861625723,-525.534158135053,-547.117577191562,-540.38031917211,-594.69989715047,-558.939042014942,-566.68270326376,-567.375543257796,-483.940110681078,-623.796974062471,-539.447944168599,-566.399782090543,-524.897214107596,-525.061204735521,-488.103700806897,-531.587722029906,-482.36836215581,-591.180116013008,-578.304795178138,-634.405996467398,-600.528363238636,-519.830169151736,-562.277860091143,-447.192773459323,-504.818324431933,-524.504752677773,-617.522936041951,-611.770683907312,-626.227101168424,-677.811097605842,-647.594265793407,-653.080308507107,-674.392699029061,-627.402497674121,-580.986264179713,-616.140823044422,-592.200912472737,-571.295309641042,-621.35349440447,-807.224981866798,-652.024413402273,-647.975831937685,-622.741557919297,-691.353086643466,-649.439277548787,-806.957811608517,-597.631873346359,-585.42904290822,-570.635281698753,-681.499695723446,-640.573390889661,-603.677881507731,-686.28175637966,-685.496224212953,-600.985607298732,-644.032467935368,-616.329737976982,-601.92604195353,-548.953069461513,-549.764461014511,-565.76260784746,-748.224749435704,-652.891885428966,-674.793492833979,-559.032197641531,-714.852190167561,-487.475772698646,-721.163395375797,-745.929324770619,-514.54076513189,-920.802949019921,-723.088537623806,-712.039550390695,-520.900152185476,-481.120349406909,-727.54366179022,-740.29087436157,-528.613003972633,-422.092071066419,-447.46507489568,-715.553176865385,-734.850703224022,-796.303108972289,-708.412066909499,-764.845497051284,-787.62989602699,-769.092138804129,-737.204741682497,-535.687783406467,-455.608257329474,-683.825731850586,-777.554670737863,-712.295356148024,-571.680367193678,-472.996987490005,-435.135001235492,-383.391206332426,-407.492884502015,-371.866677227429,-408.084802255151,-385.025410376186,-340.499237795431,-753.358117088041,-794.908485890812,-747.120674768716,-780.530865305652,-681.179645221413,-442.188497204177,-491.695704408073,-505.179728930949,-474.75775132966,-483.050675814096,-432.825901524352,-463.198953091775,-156.475222527917,-167.916400728143,-146.790614488882,-179.063763784388,-180.207079514428,-122.919870283775,-108.683000239344,-104.799357077986,-177.831271293769,-162.216490784872,-184.804014876241,-144.587659423937,-174.114500199387,-119.160519682369,-187.685739951023,-171.313340150638,-143.385518054631,-162.486043027595,-158.8984795192,-172.021835651465,-153.73005024964,-150.886539261484,-185.182147906784,-129.393538152577,-153.739374639287,-140.66730593079,-196.621698670705,0,-196.559817481095,-110.708214780266,-197.206909703357,-117.073194014886,-97.3157400063536,-105.346614490653,-91.1569808749524,-93.5992269308705,-77.9087344846072,-83.5463580759056,-169.819560953151,-231.548571599864,-60.2684962877355,-217.126223806799,-71.2764263330629,-85.4254824555115,-61.7198807501503,-88.4133476831976,-70.8638711751803,-106.667850205475,-78.7507760040468,-99.8889877804844,-292.812108116031,-272.784519343874,-327.345720486984,-254.974800937743,-272.36383247037,-304.959983393125,-265.464814850254,-293.2682907527,-319.587011541551,-299.356562705201,-268.980010136402,-334.811328103618,-291.040286001025,-312.779106342605,-308.902407564942,-363.303390429982,-336.480113696921,-361.335149324569,-312.32748715833,-391.509873640484,-382.153804951046,-396.760509490927,-421.226425663474,-445.24699156612,-429.287043127857,-311.11227942539,-298.065042826949,-120.532848767574,-131.861467299134,-43.8279314590915,-37.2021516364015,-9.77051634663286,-15.0931723873864,-12.6668767306573,-12.9811388027013,-7.95029422762167,-15.6740074687105,0,-9.71639140728237,-10.1745131614764,-4.73635953415888,-9.02624670403994,-7.26040236050162,-10.5867343339592,-7.58086259594233,-14.9505408023895,-13.3563326844617,-11.5782305051251,-17.2849113153845,0,-22.5530464659473,-22.1304440742444,-11.8430724849413,-18.9670266371781,-12.6921078363132,-7.39743800185175,-16.9123407839975,-9.94313863046438,-6.43582671967899,-9.02481850064809,-5.43180956043124,-48.0675014469361,-43.1041210754275,-50.2814196058066,-23.7205201408275,-33.2114481777617,-35.9718925712081,-25.3556678806004,-57.7799042691435,-23.8139920958871,0,-18.3954720834031,-57.8256260481921,0,-11.8131212311404,-12.5203834223075,0,-80.5168623219492,-45.3910890975082,-18.907623025125,0,-67.9207512277243,-78.3528132595347,0,-9.63382839735069,-34.8819562073704,-44.2306850778869,-58.3601434384607,-28.9729250558456,-17.7288512834499,0,0,-10.9199532433541,0,0,0,-20.0359755419697,-46.6722564374965,-25.5194747632133,-20.0526376397669,-32.1581599154802,-31.8900281276251,-35.8916913285474,-125.94174570003,-59.820771911199,-58.8083036394578,-13.092343600776,-9.4587178330716,-266.50091100163,-211.301424468401,-198.931512950033,-173.245849356637,-246.214294911873,-264.197273539556,-277.577882030925,-237.865751282809,-328.960690844225,-393.342937640952,-368.465472826896,-412.22722081298,-550.072062951772,-438.659415378916,-589.183552460306,-545.089158900042,-606.050057032667,-644.270171742452,-587.820375329112,-453.881168142934,-921.115566262279,-706.281247849151,-749.122514119254,-734.866920166489,-770.317531023415,-702.017557365313,-839.193481607083,-807.028696361461,-848.230625028825,-799.453057658036,-836.015428546918,-948.3868779301,-896.473722094197,-867.272315640717,-900.900150707321,-870.761334427462,-906.453591002407,-861.113282972884,-677.299669305458,-690.718966236201,-573.403804131963,-568.540635898906,-360.928366173477,-393.086317785907,-428.331300665305,-776.78385798971,-948.620349862735,-656.383760806978,-402.480216087738,-440.476388361261,-397.011890411041,-138.803018883588,-133.193542104173,-144.987097270928,-133.529955230763,-128.122757876908,-192.380191031998,-114.75631441535,-93.5245028917158,-88.8433398829579,-78.9213293767368,-123.44678714021,-69.4202003394306,-58.3056492460866,-50.0302079343176,-40.2568930755033,-51.2427529283378,-43.6476629274362,-35.7687693002609,-35.5690857655829,-30.695578918579,-23.5084362998904,-30.9519075873269,-17.1502548907609,-22.7713799082793,-33.6341781087515,-17.7967487058476,-21.5684794079138,-25.0747029125319,-45.403531203713,-32.0230816614544,-41.241016026402,-50.4704381052993,-28.7921695016107,-19.3277613453364,-13.2640179092852,-41.8473204503947,-124.51448063074,-355.674326501603,-337.923139614617,-435.689799152535,-359.348842719116,-337.375092167842,-352.854509176792,-347.884784759472,-379.513155039795,-400.872273666417,-398.07495789059,-406.206827585317,-381.624864964598,-361.71702319847,-458.035612661122,-427.929749723335,-424.979730427143,-446.170007478799,-393.86969516918,-480.891450877956,-448.65868654453,-505.562915303249,-501.053360548679,-484.6536442276,-471.758451802499,-520.045851968755,-517.248771192529,-502.211398489068,-467.969943691877,-557.543319546336,-530.793907427814,-562.84125750517,-532.153343085165,-561.689827010537,-529.347706580266,-423.089003216,-120.741727095652,-14.9284896949981,-13.5924670522579,-11.9002576101122,-6.35189311347573,0,0,-3.84172634121471,-4.00614852344974,-5.72723067409523,-6.11632202865466,0,-2.12492251765345,-2.27559351865075,-5.24162852110724,-27.5924885731556,-24.3309398681931,-28.9053556371012,-32.1150683795352,-14.6166702114742,0,-8.25598635651449,0,-7.21652703911862,-11.7626449757366,-89.5129061155083,-97.1581896149674,-116.813153305096,-84.7834460880955,-100.729884027478,-117.774370144414,-93.21973180429,-149.390850378664,-131.323615688171,-128.543493280773,-146.28613680094,-115.785183630676,-152.776236388698,-129.973608762339,-134.272205650138,-138.197251466225,-141.064405666535,-113.783019545729,-172.240447731066,-154.501376657011,-182.706762675593,-141.418043178851,-172.669507830702,-142.597210348485,-210.827255826361,-189.916437429611,-200.766695172959,0,-12.3722641768053,0,-66.4896382065395,-44.9167840423615,-16.6573708871558,-30.1876865852787,-49.0703630114609,-32.1090625343744,0,-29.3802311605755,-22.3549931141999,-24.3261798283022,-18.6343149734283,-13.90719140467,0,-7.0537316839188,-17.2890661446212,0,-5.16077166920954,-5.47619710420662,-4.84298853624972,-204.009226304772,-215.928420158488,-187.660218857173,-211.416977422276,-181.050776865679,-195.128697065722,-197.855528265786,-181.143970129172,-167.025448626797,-165.928926185502,-160.699687522999,-256.830232709883,-275.551152511472,-289.615701035524,-290.448968818705,-325.35347274916,-348.690092749069,-388.176417923043,-371.489029219021,-343.270747792563,-322.290157796264,-327.03667557895,-323.181935289861,-298.909283185126,-302.362341309221,-319.841263267316,-280.628413548096,-271.7574201378,-346.094089352147,-308.904766333006,-371.800217008096,-337.851779364617,-359.042202481292,-363.489682951034,-350.782718336247,-347.275463614148,-318.928642919219,-348.229902365986,-339.732786560018,-371.880912926776,-312.269642190298,-645.417223252168,-622.049933081475,-674.508092373125,-624.627367724265,-591.045195064725,-591.044354663189,-608.285319811921,-587.198005664021,-537.234400323399,-573.221529235852,-551.270302398057,-599.46864102124,-553.915180379772,-489.861986733008,-593.850178515247,-673.420019198521,-669.653052470463,-776.233053760255,-955.12145843098,-936.844511676174,-878.132750968674,-894.33327040064,-861.370960426071,-870.818892144824,-929.674171519521,-895.668951980556,-910.939013018796,-815.056910723527,-874.379983208907,-900.213419364837,-883.390761163789,-773.472339264225,-828.569638308818,-854.265585203783,-860.548293682066,-821.951646009425,-887.987889911425,-853.258648351839,-843.223704577406,-824.764450122665,-830.304723646106,-793.522119594109,-776.025821483856,-725.094569165583,-782.707302983976,-811.163838432259,-781.207690274589,-756.727896951608,-703.331911513333,-724.55430216556,-661.0015507976,-695.781027189975,-679.196109797047,-772.264836465306,-559.435989006126,-748.564909634466,-845.294939318305,-779.511760520565,-809.637815499176,-824.690547209898,-828.470920893257,-839.209630822593,-868.617906901579,-823.768154586038,-823.573761954756,-876.147846860546,-955.110874513834,-871.842057175106,-890.62180549984,-923.538853180785,-930.938963824857,-952.431295967523,-923.504751288919,-905.865165267161,-853.368337867901,-881.559150618579,-915.528365865146,-903.739359732228,-952.442981226949,-928.292825343376,-937.143829949744,-923.638439579198,-881.202985138996,-398.821367179961,-416.391742725801,-156.773745364055,-156.717135102749,-114.355050302503,-117.453726358866,-79.0879386859936,-72.0195733940089,-101.049830823542,-101.042340529776,-110.162368586547,-119.768773103455,-97.6948774824338,-124.270606301778,-146.100608535967,-29.3988646304567,0,-8.18471728348933,0,-25.1777572901717,-11.3034890165702,-20.9792280619805,-12.0378020583818,-25.6055203913802,-50.6994193993205,-45.8764077281834,-35.6602746248725,-34.4523201470328,-38.6023959099817,0,-45.0685466153768,-67.1392713666386,-58.9845039435874,0,-49.9660960660263,-57.9842974592583,-48.3500882251441,-73.323795716784,-57.6315878405303,-35.6311237755751,-40.059759265825,-67.1398475707291,-54.9406346434595,-74.1201640411161,-22.4754689759686,-38.622002654936,-138.609623999263,-127.63841844516,-135.220254591715,-107.570078785288,-119.687895333661,-106.242897286386,-122.845845294376,-96.7451385330054,-86.1322278112495,-84.1746740495919,-336.514671295157,-401.815375147829,-463.014575913538,-15.597844567098,0,0,-9.19466230556141,-11.4975506401207,-7.79821285697711,-9.2040043274797,-3.60970143760332,-4.94757891583517,-3.17611995698758,-24.8970856085503,-33.4350991556763,-14.586262284158,-71.9706387771423,-80.1883661869969,-57.3685271697391,-63.8778036680093,-81.7366864858175,-98.0157423519645,-117.68009999346,-97.1310913339976,-70.0262308378788,-129.228479463082,-117.117452798886,-140.797202927147,-92.8206719511551,-169.396531767313,-98.9224064488906,-170.025341209033,-150.026863562233,-144.594460443435,-90.8267595399931,-125.978298964259,-113.375075024722,-223.251019183629,-33.5774116316229,-6.69910980421308,-171.193923304241,-162.930933301095,-181.014945930936,-191.540586831884,-158.846111770262,-147.104749640506,-356.161495720303,-321.54288933182,-362.505621782136,-716.580767250358,-764.685374204141,-747.655705791156,-745.17911133215,-720.837646883612,-787.785197897164,-663.871961598116,-874.597501930827,-831.373247998197,-688.629438112379,-650.115274166639,-703.077437645607,-840.507335794016,-803.5251398169,-823.268768868771,-810.362067156319,-863.624287272224,-651.321501996761,-848.035980852878,-900.376129725316,-885.720883673554,-670.214321311349,-636.05871288941,-702.709822640668,-929.791780153593,-903.670302950309,-911.243438847167,-874.202808399492,-833.541236236338,-867.066902396941,-536.697364978406,-490.55278136772,-943.208294133475,-810.996680469177,-773.787682450191,-713.511777465649,-741.32510975936,-749.321330428165,-747.742622234175,-594.353004961305,-705.057942674861,-736.701063764873,-715.801728072865,-764.686366993977,-685.162787269122,-763.626046311186,-786.790789249505,-746.842531711592,-711.281594245812,-699.029926676754,-610.292520948239,-614.946017408352,-651.40419574302,-662.743350623509,-645.389755023754,-555.950632379104,-620.564199264651,-596.226152581192,-645.68034728735,-666.935816436846,-516.482025126347,-595.521082945477,-553.297411521654,-622.763219312278,-689.715034977134,-650.281327248029,-610.018999562021,-662.611526262679,-570.067666316828,-550.115019991016,-465.793021522156,-513.578029777416,-499.397691681441,-624.435617909926,-800.381897395276,-828.970304075743,-740.757854963177,-772.644727604918,-745.038268933659,-512.574253897247,-871.356136532721,-141.902969274786,-71.4714113427635,-62.3232923092234,-53.8752749876397,-117.283098383593,-143.907084701417,-77.7422555541013,-96.0700815541571,-110.727840197347,-105.577352984483,-124.579803322041,-96.9429191176488,-379.053493327362,-387.551007039378,-348.851111092857,-429.027158394642,-304.656580930911,-319.711884579861,-253.818554969498,-360.632280742915,-284.405706077069,-349.392763335693,-280.540390706086,-239.107115075642,-377.291473035606,-250.523684734912,-269.316666549338,-227.175014787931,-195.137206321409,-240.560747579144,-285.816665273954,-245.540962950098,-252.924862165335,-217.958322640285,-221.447391621148,-286.735141701637,-335.777061766206,-273.603956547497,-176.003622250779,-209.01818207253,-193.886099222509,-186.023838172984,-145.31728696659,-206.944387006488,-166.146890643765,-123.444210829588,-149.053329431712,-146.665931752057,-234.200589419293,-5.61898346156531,-13.8582372936471,-12.0198928938812,-8.80616008332985,-4.39297153600762,0,-2.93661210027992,0,-1.83190878343263,-5.8746995362619,-4.15873932475495,-6.88053347947968,0,0,-2.28697938378133,-3.35903439209083,-1.50427138077693,-20.6755425052462,-20.7869428364163,-30.5894457044511,-10.0277754060453,-49.1381938379058,-49.553062143038,-61.5121131702582,-40.4694076168461,0,-37.6225939885598,-65.8267204023496,-160.400292733599,-181.86197029299,-189.778873751104,-245.653153711577,-217.9249139123,-236.834130354886,-213.62182683084,-237.173101928192,-276.906296542348,-195.529276593137,-178.619796481772,-223.987589346947,-259.094165205738,-113.393754845664,-118.276437034324,-79.8283079831047,-124.80267634605,-160.176050787132,-94.0670401847336,-148.939633989035,-100.102667632619,-63.1501374863392,-58.7616618040426,-87.172579962172,-116.575066614484,-61.5999552243831,-32.4380345815306,0,-38.4674478562879,-93.4109861000082,-60.9847331922367,-70.7592231443968,0,-34.9194770247086,0,-238.267176653213,-247.884021363424,-217.58476412639,-268.146821623484,-269.883011130746,-227.611686406034,-205.975054794038,-326.906263982065,-392.092658026463,-653.771852380676,-808.248670678354,-594.330861821952,-759.310528652155,-742.09050921796,-492.075862735278,-503.076590424118,-452.798197042455,-714.821066777529,-659.472950552277,-576.415767096642,-592.669601759972,-543.246408889295,-615.49281238482,-539.738376583173,-602.030782690081,-634.052258385354,-591.658215106649,-655.86250953597,-645.744945021139,-711.613616139882,-696.261964410865,-525.885791325693,-151.263565656399,-170.6045178222,-94.3641393422687,-91.9835796335186,-457.849913227679,-435.33713848898,-422.389187521471,-390.960025417893,-440.970349206,-384.170310240031,-441.526008115799,-287.007284089376,-230.888637475796,-331.884731271145,-179.911421194295,-8.92069770317793,-5.62270187059409,0,0,-3.12586645808168,-6.35196288014145,-1.9925108250376,-1.06774618589362,0,-18.102218660476,-20.2824042263222,-31.7876443496394,-27.1902342058543,-35.929178659038,-23.9086606057519,-23.175591327729,-15.8721863976971,-20.6066396947819,-17.1796556006727,-30.8232312639421,0,-15.6438122424718,-8.13035868877812,-7.95819677359846,-12.4720134998625,-35.1503531707071,0,-12.2161965268544,-6.48158338401255,-10.3604356089024,-6.27193215502288,-13.57432188811,-7.52342039747616,-3.46983899279804,-9.86742922281766,-8.66042184134307,0,-4.38648009168583,0,-2.92177223433373,0,-4.07711522845154,-76.1986932014815,-386.338513791246,-58.1340490025916,-78.0712984506911,-210.546164214537,-148.27632348382,-29.6992598287249,-36.9282123039289,0,-105.515986453411,-73.7160231038384,-97.8137170048034,0,0,-56.9939873248548,-162.002163516287,0,-130.963421651289,-150.370492775496,-201.415322764709,0,-293.001717468162,-259.039765032138,-242.42547160671,-329.180557731494,-359.514062385967,-303.393886220068,-290.584567018979,-371.642149460929,-349.281338515509,-324.076334759764,-349.087097730645,-293.93018563469,-346.363384408004,-271.214062174251,-419.155426237911,-313.002215580673,-274.368045546411,-242.922022914575,-380.562881796983,-311.324807631062,-235.037923183092,-222.483613425045,-394.815835293421,-407.926598107894,-271.905512379478,-436.286868650333,-383.967284906592,-352.66505057349,-407.821838225017,-618.370836190386,-582.577677249085,-558.644301273384,-502.300829444864,-566.036228187866,-725.647444575605,-742.643323482554,-788.595125347618,-695.076166206145,-807.974128595283,-843.79604433121,-711.083719565097,-668.996367354273,-768.232881745999,-746.639266766712,-803.126201061687,-813.417908282107,-776.166471499111,-666.51815605123,-688.69870520994,-649.334201412674,-596.481787797627,-486.824763166025,-475.760197513889,-544.054342635159,-544.055575104457,-515.727312710542,-482.010742899455,-345.33104325027,-342.292639535363,-420.365062487824,-420.59150700017,-380.960970520941,-424.168509886704,-417.200721505333,-345.47579048224,-452.557464472118,-547.137234547374,0,-400.809121755525,0,-464.498343043217,-196.121175670806,-407.229423481451,-287.536932229522,-350.287884941369,-319.338340562368,-319.108039501901,-308.656434411941,-349.027768530379,-186.826499348589,-408.615454674117,-251.682971670149,-184.170630560312,-464.943466627676,-528.643237939236,-171.784643868498,-574.769834863605,-566.47972256479,-526.569771468252,-261.97756607444,-271.441339356353,-202.251698489917,0,-102.427688796248,-631.967317020603,-536.511896863066,-485.083136348446,-505.799084964894,-590.272213202911,-724.738552201695,-700.333487097799,-135.953149393822,-177.068306228339,-158.908561169686,-194.99997867356,-116.672850028771,-365.451474269773,-411.565128930031,-197.472147819605,-2.9882726665749,-2.69765594230169,-1.45068736400156,0,0,-1.10056187081424,-1.73803822993572,-0.853929842952032,-2.96326535464484,-1.17950625665129,0,-0.645897935528726,-0.340123848394453,-6.68099281982199,-3.33479473324075,0,0,-2.49559563399961,-2.57745461995454,-2.36872104873813,-4.98187313754449,-17.1985346471443,-12.1187346705295,-437.386641221885,-184.647996966808,-185.037255554379,-119.190354074813,-141.70356768806,-39.0501185178007,-123.837810849847,-81.4107015375042,-110.682381100692,-83.3169472544921,-154.449128368436,-42.4652291666383,0,-43.8997734986409,-111.188680773092,-53.4878054109383,-108.368385361431,-33.0633558560819,-186.712369942709,-232.241149316944,-213.054865344555,-470.77197883137,-409.648349900388,-447.24134161358,-342.02507740331,-387.676404771763,-447.870453035656,-311.029880578204,-335.834323071776,-275.353209405786,-516.456712415571,-471.465840135455,-420.356453584286,-463.05278837988,-430.513540387243,-507.216528818833,-437.337649954992,-468.66465562544,-475.898993214294,-497.61267615171,-552.614768426591,-629.083447189341,-780.739444597505,-805.387527952787,-760.916693917898,-826.281905055977,-793.557304717955,-594.536137282099,-716.324108002478,-765.254329860346,-771.822278622556,-703.886247273984,-844.305459180756,-495.924782127089,-235.584518289309,0,-415.53799791207,-369.307952167188,-338.59633721589,-463.649742112577,-120.228717533451,-92.2237909208029,0,-255.810852011495,-57.5278239050776,-121.697142544241,-536.43778633598,-512.589602855691,-157.325971503075,-133.8113114225,-105.270942488902,-138.388837585538,-108.755180424098,-208.611590008698,-192.58570419914,-103.089803066178,-86.7046093220495,-77.3430193389134,-52.3945035497504,-67.9746679891863,-363.25332733533,-205.877307506383,-130.564838820605,-272.1027415696,-3.53892160495104,-3.58169223642324,-5.21737154814989,-468.829816268855,-162.662987484113,-54.3963307261585,-182.312160452504,-226.176259326145,-190.376028776092,-185.768848592096,-158.532299445934,-453.35496699325,-447.565012433222,-480.015086309689,-467.641284683994,-424.236147180416,-242.092385925342,-265.507535621087,-522.936445502737,-544.340826016683,-663.618682220247,-632.337228385145,-660.596116943116,-610.543869637576,-703.382875790209,-738.448443887826,-684.069239309308,-377.204305368019,-85.7233368241277,-50.6389023377384,-25.5817528358047,-85.497602173678,-60.1195237133389,-87.8986891111459,-69.4527546986068,-41.3786149673347,-78.5100201124789,-65.5760885346495,-321.198451938892,-283.874399453264,-262.146358388149,-233.541460408421,-214.305353843669,-226.199790921867,-317.456115725953,-320.7444264143,-343.667369641139,-297.072297542859,-391.316347948149,-386.718654341101,-267.507576191173,0,-292.136866885153,-293.382137458226,-185.929068026692,-366.319082002527,-241.746760776054,-220.664182461593,-188.040932755203,-160.285592466965,-236.061917923511,-181.78753285821,0,0,-93.3640520856887,-108.727964333831,-140.146189452975,-144.80341726577,-299.209669215777,-80.694957919045,-290.286569327323,-118.445698025394,-130.172035072933,-81.6801214076555,-240.297024703796,-142.2487360302,-230.454834536891,-182.967604067406,-113.814470634376,-405.293438101431,-347.9711157495,0,-46.7002732954653,0,-370.836782786138,-55.0683310481894,-66.8528971558268,-43.534502974087,0,-44.0176132845626,0,-178.893762490818,-309.34341886671,0,-42.2018697687561,-182.526188616524,-277.705043920783,-407.286520675658,0,-49.6840656217627,-67.9298876175866,0,-83.6173079415203,-432.196641942001,-350.051614306482,-351.77758326782,-113.729740431764,0,-314.95792663719,0,-264.869657878198,0,-362.802442165774,-142.308614742782,-35.8515686561405,-520.429203604276,-82.2455518691292,-492.837556200461,-425.491169341635,-425.94015955749,-460.625439792684,-589.219062350325,-531.613728657973,-557.174997203313,-512.634644701819,-559.491857270696,-508.496051731506,-660.394274401448,-472.570053794721,-538.895747996256,-602.20663244192,-561.622344150031,-544.628237802424,-629.063088124985,-614.444176829723,-658.92182143299,-457.508077833428,-493.48357891107,-496.631301017351,-387.251392514689,-395.68585676506,-159.661662287117,-163.071801806607,-139.030550534632,-101.721747997583,-105.126374308991,-123.030986011914,-53.5456408298298,-94.3647621072843,-80.7517228486373,-66.3579677037443,-67.2705266895731,-30.6864986726821,-65.184284729346,-170.640090083336,-241.760563747926,-228.350556298348,-239.16874780457,-282.824540122308,-120.445498981837,-151.924668387216,-229.5132273628,-302.557738260874,-344.856014398529,-303.585048666432,-626.350101091539,-595.427877485174,-587.184873050753,-652.939839565544,-726.848494795149,-739.197117621713,-741.193010963049,-399.478166356764,-419.085703466737,-390.990354219905,-37.1667164205971,0,-40.5438448901677,-22.0972596314793,-21.0377893137734,-75.5493585958115,-57.88329742548,0,-59.9754228545792,-29.5543272666108,0,-32.1773075654522,-36.2033814366631,0,-46.0545955323334,-26.7566758284159,-20.4443476449459,-435.123465099431,-425.456734066098,-412.442943172001,-446.32478199162,-457.100834595141,-356.243274090634,-160.035237918962,-191.698631721385,-83.4209950283417,0,-475.606623198824,-451.735699239693,-575.714793583437,-636.119932211657,-512.020978831156,-402.438888723276,-207.04020281901,-231.275685830275,-268.285817432465,-308.646606764415,-285.25420581755,-657.898674498134,-728.486215399759,-721.421353037832,0,-42.9760359742114,-21.9597281828947,-26.088004838171,0,0,-17.0460512335556,-20.8105727799178,-595.754639476477,0,-18.3917451236688,-12.6821817067733,-12.8426583025077,-17.6019062179848,-13.4708389974926,-7.86181294241051,-6.63326430365555,-11.8484331299267,-12.9798957513457,-8.26529834255211,0,0,-3.65025237048924,-3.81495767356571,-3.27869569667798,-3.57841376010489,-4.17435903606941,-19.2556888753472,-16.369433084424,-46.4981076472745,-20.2654784498771,-37.9920429042108,-79.0483534780826,-151.886282044276,-122.477436273134,-77.844960851159,-29.2093154086202,-16.2995029290557,-247.910366813452,-107.07771159897,-36.9001880668264,-35.6991193578358,-50.1102276405487,-81.0156152862925,-326.708399203928,-645.58597463838,-1.58378115731802,0,-17.54790700498,-816.161594930546,-795.95382577863,-956.916104628903,-932.900945692217,-933.912346020647,-140.871423774461,-62.7667308166288,-131.560507061966,-850.417229215024,-176.695551842902,-256.165382227537,0,-18.704311079203,-16.1653198181536,-17.4127730689895,-25.9774537561081,-35.3548577395019,-214.697166413365,-620.600337329144,-567.288290354497,-18.5103310550616,-264.514772432493,-270.158544725134,-167.937962107561,-539.2920277386,-124.322947547792,-99.4093452769057,-99.1072125817263,-117.810667491124,-418.161653002877,-237.196341680188,-314.57338715678,-105.403962238393,-264.996339898934,-375.38668847893,-365.185014104687,-124.028819146623,-436.308861440063,0,-12.7404911237454,-11.7838644147894,-610.568142692848]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1203.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1203.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1203.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1203_field1":[0,0,0,0,-0.0401275720627183,0.285831090511206,0,0,0,-5.29567145918379,27.7129019184102,4.61463551981557,-18.1951452977313,0,0,13.6832550014071,-10.634994854947,-9.51158529800347,0,33.9155639150846,27.1014284928571,0,23.0975246400362,31.6744337602002,37.8074635469528,0,27.7951575427594,0,2.67313900517293,28.6807217274802,21.1059494910825,-2.57171771984828,0,6.35103792245664,19.9052368496657,8.19208976711182,6.38383864098039,18.0346367113829,3.41258534057898,-1.76150125622346,12.8685607596391,-5.51639872604239,9.56050761164914,12.9560894691746,7.36731463186858,1.43908744642345,-6.43120479304207,-8.21364739723126,-3.17887341137157,-2.05298466711281,9.91381608451542,21.9415417655638,-3.51111256070377,1.76692153566831,-5.19426717516669,-0.71700605910836,1.17884627714159,3.29743235461909,0,0,0,-21.4018082810771,-17.4206251636878,-11.297840132204,-4.39436558468734,9.02235623034073,-22.4181719679921,-8.56605233372976,-38.9236231533,-7.85458201406484,-3.06256382782773,18.013179655005,11.5680382527351,8.81097971885533,2.43036065159174,-3.51232580958781,-0.423412798101691,0.63848992216224,-4.49169628480175,-9.05168846520807,-6.37409325065382,-6.69243558375911,-10.678936803018,-7.57330178283474,-1.59089138571579,0,-24.5393694718868,-29.1245487371857,-29.286769297699,-26.2267840254058,-36.186640020473,0,-37.8079459688176,-28.834943745589,0,-8.86097113051894,0,-2.69999101659128,2.48217344778295,-9.39766151838919,6.44321376207588,-14.2061007643047,4.02180385676967,0,4.95410520790735,-20.2893108018119,9.99807441277973,5.83969490095128,8.85026354785598,4.24988564172711,0,0,6.57315127509897,8.04284478978209,0,-4.05580021721866,11.1393064489657,1.12311004163768,1.75963935944932,-2.51857166519447,8.91469996426075,11.2552641321264,7.03620022233855,10.9719755100373,6.80831814852029,12.1766950947597,1.44063884138693,11.9343025441011,11.9302664445053,-2.19209141710393,-1.13616240380053,7.05174104926082,9.60965892181635,5.32251171344438,4.8330986184494,6.42485471718037,5.76052588989147,5.71654496010707,2.54844400156992,4.51660171808936,2.26138991922347,3.8074381256004,3.40866102622183,2.41074362933427,-0.698430791456001,-3.14609354270572,3.66795295504249,1.47840076348065,0.942833936857488,3.12737088050475,1.78948196104122,-1.26914926774868,1.53653015561642,1.65013003444355,-3.59426555208231,2.26864846920243,2.52160776949614,-1.62834740686078,-1.69322984225452,-0.455861810485486,-4.51622979493093,-1.21320579527728,0.244588749958895,-0.901713829941012,0.728723430448903,-8.51753556526875,-8.33605196040498,-6.07923847105111,-6.62714113166309,-8.76337949773108,-7.05792627814911,-7.83449031578067,-10.3891931765436,-7.04249444081528,-11.0103891883759,-9.15566133624407,-10.9834157170264,-12.2676768149955,0,-4.01563272386311,-15.8554083591768,5.06930295215834,0,7.41800103094644,9.84046601979976,1.1467021755522,-1.82995722721121,-1.99490430612664,-8.05471517664284,10.4795655664125,0,-1.19985250133827,1.01061060542736,0.392349212920053,-5.82743302225946,-10.0725747286726,-12.0160548442647,-10.9592770702992,0,-10.9743538921701,0,-11.378156356147,-12.1593963244441,-11.8049523539128,-12.0319048618919,-9.88541955771215,-11.0140728750731,-10.5546086922175,-10.4277438831362,-11.1909924420089,-10.6647547410288,-11.4255853967171,0,-11.7125880597033,-11.1709199770624,-9.36337636471725,-8.87020723868548,-7.00560264654359,-11.9762199417193,0,-9.15233428830696,-10.4878183831233,-9.53114087099963,-8.04284432697021,-8.18598579501088,-5.67384786382086,-5.53432149114499,-10.6248182253356,-12.7827201761383,-19.5940990234775,-11.7878784899319,9.43307885084518,10.4538568832052,6.83598176344515,8.37526398279348,10.5764602874415,5.30184431176182,9.50069716770992,11.4897427949603,10.8624801038704,8.93802406606725,-4.53391033814872,-0.0231137007981386,0.404311923398435,1.45067346080001,0.559691546264935,-0.5994152446346,1.75087435843162,-3.15010954469684,0.775483192474173,3.00561980831672,-1.89267635819566,-0.590538545078364,-2.66795411841161,-0.620291906759256,-4.16192233187962,-1.62680668701622,-0.00644729572618962,-6.91088296451472,0.0959725159811434,-4.34545943202691,-4.46779703013521,-5.27461805148933,-2.33181779453022,-5.75795053681459,-3.22026188966147,-5.18293724601965,-4.50096036386725,-4.08484827899672,-2.98785877475253,-3.46177827797049,0.9066179701098,-2.91450835426058,-1.29802428493988,2.81910210344583,1.04813740997728,5.36122196973122,-0.204236342743005,3.42153190379315,7.18387335760495,4.93533904590364,5.98061551788361,-0.353777327519803,-4.7346907887282,-2.74634564208421,-8.2691668845064,-6.08754883724687,-9.69805925759837,-4.8055799422784,0,0,-4.5166211742757,-2.60383412501467,0,-1.9848569822364,-5.76736595307144,-7.58418234119863,-10.045658056169,-9.99831963330425,-7.4322296107255,-10.8452101460818,11.274452600064,11.8124657167911,5.96901137874408,11.3730477960146,11.5026624803156,8.83543943480122,10.4298355243688,6.7184868536762,10.4016448759467,3.24399288861103,1.74424621507128,0.423984323013727,-3.2784535967772,0.157612693268441,-1.48963103979782,-2.08684613658824,0.861694532221537,-0.864882645945611,-0.512008699033998,0.4614398087738,-0.441285036332153,0.00375291713870359,0.322273451241226,2.24184867663603,0.528813700705666,0.640255824130528,1.70545220255657,-0.471102227417204,1.52256370238223,5.92908057355199,2.39521354519453,0.00884532598049364,-1.16310924408045,-0.0295435129823263,0.0504461622930358,3.42935852398211,1.51384390013832,0.110033756092543,0.369622918170619,5.55018400105387,4.00467774931324,6.13471737944845,4.3116611515293,3.1479691482081,5.1276649033527,3.43443778215002,10.788501943369,2.87254934489851,7.75211652978474,3.82289566188003,5.78904106671496,9.9244245797157,-3.54290708360073,-2.03325791944505,-2.50594616345456,-4.48225777797636,-4.76912867438791,-9.13167789227063,-3.23724608107733,0,-9.33038755304349,-10.3616823985006,-9.97182697627351,-8.95651608070438,-11.5998272691296,-12.6791494149432,-10.6348711358788,-8.21492123611293,7.83565929673987,12.1149028871922,11.7437223487702,9.82671952246223,8.72722683343742,10.5557204401319,9.43380744675292,-1.68699487717519,-3.13135498569464,0.943502260694628,-0.925579347489945,-1.51328540683327,-4.0691536760161,-2.81424341014357,-3.32421105083807,-1.58799320811088,-7.64683003485365,-1.28731313464932,-0.56897355260319,-4.86264264830743,-6.13215885951083,-2.68002411854201,-4.20555846060899,-6.27050624663065,-11.0737396691907,-4.65632717643715,-8.20714340216249,-8.97459258611064,-11.5470092133764,-11.5729511359368,-16.8704155355188,-14.3536850230866,-13.9058470183838,-15.0664849401029,-10.4914129806169,-13.3565864760801,-18.7613741623024,-16.0096011255056,-17.0982730010028,-20.0670711110999,-13.5521476070628,-24.279798071352,-22.4548800340746,6.83274145769801,1.17232079596053,1.07479793548845,2.3200440721916,4.11353032859596,6.24529878797333,10.4299993165281,8.20339866803413,12.2941158340293,8.66347131620872,10.5434398721016,14.6908997830144,11.202037515358,6.12287347042236,10.7210622396134,14.9318417309682,8.3126891001262,8.53775638667358,-4.48400889280783,-8.80707068537609,0,-0.800484521649462,-1.54618452696984,-5.33570984941916,-5.56498440409915,-6.18491631854727,-8.53389676832703,-3.43791781752782,-2.96304139889257,0,0,-4.64893753805444,-9.75447932082098,-9.52987897322832,-9.46008953368721,-10.5236463983693,-10.8145600776795,-10.482260777795,-10.79554483576,-11.3745221543222,-12.9592045904949,-12.0350187855281,-12.1811691378052,0,-11.6545041917472,-14.2755215631124,-14.0525137290298,-8.96254441056082,-18.1417139170589,-9.2919194660066,-16.2698493902084,-17.2278345537215,-15.2031428494099,-17.5114506976223,-20.0416457336357,-14.520181856429,-12.6299255773403,-16.544004957744,-17.8035370077281,-16.9042230750165,-13.2471605282195,-19.0023115699425,-23.0056890541143,-22.428509245774,-27.0873396075758,-20.4498232331885,-24.8916324093196,0,-26.4324952195192,4.87783686135206,0,0,3.1558087082984,0,5.09660686253899,3.05287825348965,4.06585075563086,1.83449974065419,5.33866524641782,0,0,0,8.67028607633197,1.34771831645857,3.81402071993346,2.21434356993729,7.0634278510772,6.72170524868982,8.36559710662853,10.2417549874749,0,5.03729057405158,5.27321433071954,0,7.66686740377856,2.62205331880987,4.62756674975995,4.77881946910379,8.40480808669183,6.71261721338925,6.89720150191319,8.00497995335418,2.67986418288337,9.99066794864017,11.1105386925742,9.33442517560717,9.32172307061005,10.2070811452361,7.41469569935349,6.80022012450009,9.45586660161357,7.51971447768832,10.1611206907564,9.80693563861853,2.54023104527056,-0.883492988446215,-8.87623373206761,-7.88881495149525,-14.7044574309216,5.56763412761319,9.5506848061275,2.96617380904416,2.07459766878041,0.598122897241165,1.58610018887662,-2.78571910632765,5.23151379246587,-5.78870176075627,-1.87106115743109,12.8323432693567,-5.37050336683752,-2.18610655725868,9.11356760471454,10.5815821353941,7.80724276495631,16.2423094233935,5.70484158470892,1.82339189042294,9.78514953375767,14.6839603915073,11.5397462352724,9.74872736729152,13.0551177367631,13.0645697416784,15.7293221183731,11.6618805211702,15.3363777412997,14.7769038517589,19.9719749436388,16.0293232935118,-6.88022476290748,-9.45829315420616,-9.44871341561277,-11.7349670296161,-12.0484289736093,-12.7393519610666,-2.71034652146417,-6.96880712941263,-6.83953356124769,-6.47362281427423,-3.89892700769517,0,-3.50796036263091,-6.28629263025934,-9.62316661052026,-12.6604402734605,-8.79695373148859,-12.8585342997329,0,-10.1877414904232,-9.00189474920522,-20.8744877740521,-23.7109148909224,-27.8944469243221,-25.8041466774541,-27.2450231594211,-26.1940566932071,-22.1101077498233,-31.9107816832809,-24.5325264165001,-30.1333651986261,-20.8394386302507,-27.1647362956541,-31.2596712278931,-29.9094399523245,-26.8120329469002,-30.1729339803513,-30.8691538958018,-31.421714798286,-28.7520454917503,-35.0897446015225,-21.3311411026238,-33.5895412038854,-25.4513641769612,-22.8734468872814,-34.048198528446,-23.0099154040275,-27.4432133656549,-23.6872661822604,140.665812223337,-26.5935303407586,-28.7840801630717,-23.7534901328044,-32.1056044297248,-11.2077021871228,-12.3130780218428,-18.4664758010726,-20.5727453996726,-20.3239431501696,-14.9793272280283,-13.8702117160321,3.76903738633638,-6.05031458383743,7.04441984506163,-15.3079428400633,-5.0194925407825,-9.62628748026297,0.688772524111061,8.59859527662025,8.59330772934817,3.97802346909688,0,0,6.71174212220327,0,5.82432011116039,3.18285617191735,8.40271593266884,9.77192434043761,10.2893870214275,8.60732948012303,6.22996282538759,6.89715989206156,4.27044526826729,0,3.21174667865281,0,7.62925767776934,4.2282137878927,0,4.94423095660225,11.0125919620788,8.73131896734262,5.8174746980007,12.1522736752675,0,8.79069319431723,10.0104735747908,10.174912992487,10.3395056664147,8.37840816467519,6.92645115533966,-11.1800062587451,-5.72021936553983,-8.82101312857615,-12.23083330744,-14.8690482001732,-12.4334133215721,-13.3846015372544,-18.5652182650436,-13.4569415231241,-9.72303788184654,-18.2936076892884,-19.8417664918242,-5.92015124218786,-17.2750540937928,-20.3937282255882,-7.07524586592069,-2.50815219992145,-9.80924772456168,-8.87942780206526,-13.2761289599316,-8.52911599844987,-2.33062122278645,-5.81403341349069,-4.21392429559109,0.599897517793293,-2.11731364785608,12.9747841168753,17.5845208057486,13.8947155110157,17.7782472003566,12.6202868005334,18.4865035933647,23.0520477529392,21.3722297408794,25.9190819706589,22.9183039055462,23.2578906079292,20.6335639644697,24.1915671964205,28.1976824822185,13.8819062659977,12.4857972005348,12.7102606852923,-15.0176091453224,-13.9945484501276,-8.1427141590512,-7.55103493521619,0,-10.9395722639767,-10.0248486101876,-7.75518067645934,-5.25411826112531,-6.74782201299545,-7.44123800062583,-24.7132711942681,-21.5046181885917,-18.4687885693917,-32.78528557853,-33.2666694713735,-30.0802439658375,-24.5868800043144,-19.9841144507894,-17.0511888931792,-3.84738324191672,10.9799475626838,8.64239304125283,13.4461677987027,15.2542404875094,0,13.9321734208781,17.0205700784532,13.0166283661007,14.2562070098774,0,17.0139271336267,11.9293524398235,15.2154302950958,15.8917588864901,18.2556445648264,14.6777929849981,12.7263909950348,13.1640030510151,11.1692623247904,12.8906386456886,22.7565471348179,15.4439796898148,18.3323305368924,11.2142990831718,9.08175966554233,0,0,18.1340705371625,20.1428230376836,7.98871230508642,10.3168788946468,7.23770446399564,21.7044730796271,7.68001521793981,19.2784839119888,21.8878128702503,24.7531087302075,11.7219485472725,23.6252416362846,7.32748533505011,0,14.680921657983,28.090894517785,23.6114268220006,26.7237921173991,20.7813528669643,26.1382002928144,22.9843693408806,25.6651574150367,20.1305155990524,18.4829645905835,22.1411961037838,28.9761973555645,18.0091358540113,16.1100700901506,25.7255454706241,29.9065643853124,28.6068770108674,17.5963039746346,23.7508658246126,20.9787585492421,25.5903294386253,26.3286432399659,27.8429456343501,31.1091540214284,18.4573267147711,28.023116787571,31.8545040715571,28.226612653058,30.7607563867019,32.6005201184804,8.66520206685868,10.5371152930401,10.9199414527981,-7.84595891682006,-20.7374585006347,-17.0869638843324,-16.7476046576899,-12.7894532807896,-8.41652716051906,-16.9749913523784,14.2040804120984,19.5945583080095,18.0656984084739,21.9034035458797,18.3844639767856,-5.72317601404098,0,-4.1246827215549,0,-3.3993595858042,-3.33421297056928,-9.93194276148979,-12.327241834194,-5.81816840642094,-15.5131518265779,0,0,-19.5107222067966,0,-14.9649338167659,-9.18633189876424,0,-17.7590863836664,-20.6823431883377,-13.2934252666696,-4.30357746567192,-23.2593148149554,-16.1098272529866,-20.0005951297931,-23.6388287046013,-26.9162136441396,-29.5085091111809,-22.2057091766459,-27.8844667098458,-31.969562318334,-26.4504085531705,-33.7309883038771,-28.8982429992571,-21.0528107762916,-23.5235649877869,-13.2614720578577,-20.4977308321418,4.33075687976982,16.6521683434649,10.586919606297,12.3346338025066,10.8913251348115,22.4926313124184,20.4943811463036,30.803776200902,30.9238267874864,34.9237791550104,10.3829094512007,11.5101471885768,-12.5583725340117,-9.71018864300857,-1.93099821260196,-4.71061291048591,-7.72803000072731,1.16525110636754,3.96114496535921,1.65023888393585,-0.12606765115761,-6.78280185695017,-4.00276007002614,0.889258879077556,-1.70082174394532,-0.0301228008183488,-2.02493080598156,-1.13376220520744,-4.21133386294545,-0.0165035002984483,-14.388650245794,19.0023779473279,21.2140712485551,15.5627919944147,24.8956379628441,16.4225809152461,13.1859366598905,9.08265974713552,10.1630436312478,5.33270164396588,-7.13244414784559,-8.38849215085335,-3.83833986699423,-5.60212156274012,0,-6.75701567082943,-8.50694788530762,-15.6789077668993,0,-34.9568949739401,-34.6557315327579,-35.4320059997147,-35.3299141373532,-33.2506155452017,-31.0986062753389,-22.3844422424346,0,76.5659077986602,29.7202276144411,34.2988666913705,-2.13255670078388,1.53377990994363,27.2024164102656,2.756303779046,2.43660143674035,4.96859208263212,1.25596957573095,6.14899247140538,-0.916774067427807,3.74803054551122,-28.2171361582236,-31.7882641649759,-18.2934593896508,-34.2742813799105,-34.0057199169746,-31.1556115298679,-30.4536180522442,-26.6687764948113,-24.9929817904175,13.7617916134128,16.1795596783518,34.3495967063827,32.4318467099715,9.42434631340789,25.3031271320989,22.1486565164027,13.0982766409992,0.173257437853202,-0.731307862456118,-140.8990484597,-6.81294309374628,-0.286300850994904,3.33087874323533,0.78148669204653,6.34525550839614,0.394412740640845,0,-9.54173058947407,-14.3511446924252,-9.92990927412331,0,-12.9198887675305,-27.8148779567533,-30.1041243984552,8.67204863345325,33.4205792961139,35.2929651430325,32.3328380725829,33.0054547698661,35.1635919551893,35.122288390508,32.8071922820323,33.6449196067953,29.610522551324,35.099403600446,35.0498039379579,22.3240382434831,34.0975428408431,32.6970250733444,32.7030713787194,30.4919914902287,33.8343013118475,28.8321649068378,28.5455745739194,30.4937179425872,35.2778393763313,25.3535072290166,28.8152690676932,22.9464721118811,31.2645947122497,30.789410654154,27.6275949731858,12.9706263390871,21.4322663806152,30.0419481416699,7.22508594072579,16.3462208405813,13.1992704736013,23.7715186197951,9.49428753366517,-13.7436717895873,19.0267777007859,0.719691495467362,-13.8883854480407,-4.02800779325292,3.16749303014634,2.58335808803038,13.2793785658144,5.61984924297399,-0.0108723212764632,15.1727446800464,4.02930030759739,-4.75690728740745,3.01516045464062,1.94200275604365,11.0977662013546,8.66825400858485,39.0285658609436,21.7150254839814,19.9042266889106,23.1252427471378,11.9929233639888,39.5665198610847,9.810288204637,12.6872866549664,7.79585611077708,12.2141781096323,3.32959372386775,2.00436526532916,-1.99842393374184,-11.754213592045,-9.24036490534932,6.6888637943373,-3.2251728924437,-5.36017204012304,2.76462299439403,0,0,17.6204581025385,30.4751340031717,18.117106597308,110.963248529731,42.5849387326969,66.6614867434775,23.0857207172342,46.7690378996638,14.7123331596855,43.1538388710533,8.66100657991277,66.3403003251764,26.1883880870364,171.820787977039,63.0598934890282,36.6758087206607,36.0246776611322,21.7569797009481,-7.7650038841743,-5.19422830266109,10.1416678938136,13.3679775501176,-8.02759150358174,58.9208800619923,85.9956158023761,126.863898736522,92.9990478728774,-5.21604995820388,-4.64517892769895,3.50397645141655,57.3816072729083,62.0600152813445,-20.8228671889412,54.9099790032053,22.7903617245926,23.7147469813308,30.6484449395968,28.5954061886256,22.3059325875096,0,22.5492444187459,30.1754842822819,17.404900908364,-173.708029668023,-4.36224212022862,24.0762429060416,24.0124118841262,13.2645605508742,18.8913615440355,16.6015304923173,16.2898237584928,16.5687771937736,19.5162231566527,0.137766629820417,-2.76661425276981,-4.57225972876529,-75.0414675518879,-15.993772979018,31.821278365055,-16.2445241416958,-23.953578615214,96.039681089287,40.7535622217012,50.9336782532168,-18.3409318219852,-21.5427635360733,-26.4182780866939,-32.1705432939952,-11.0681607189631,-27.9922656992066,-24.7749051243147,-22.2806826147484,-27.6905395784849,-24.6057495966775,-24.4999156761459,-28.7733880006949,29.2429040705313,25.3487015402353,11.7114101798124,24.8230440492153,17.1560143845116,28.6794596384866,27.652440435254,0,12.74310898073,8.7009149561712,0,21.4401608132572,0,17.8314629892251,-40.0057711072858,2.21411463607329,20.3877878258354,-38.0838280071846,-20.5105571753852,0,-12.5780646197678,-14.5719815093269,163.953610913324,68.1858564154391,91.275423733563,104.907476113454,169.970037349858,68.467669531415,108.909510961,63.5074075393711,31.8402240194012,48.3716690146993,7.17218995573534,101.896915208892,0,150.068261598921,6.68081943812444,79.4549669430295,16.2859548872759,-7.19383901908167,-29.9463341859531,-32.1665495968103,0,7.81792962368749,-4.23343566301122,-52.97372575522,-19.5235416557244,-20.4339035370542,-22.1412924511155,-18.5371661208848,-13.2364924582558,0,-14.1224687918746,0,-3.11700717160616,21.0420372456062,166.989477951939,8.73918964248081,0.930904573134772,-7.09998623352115,-24.8147103095698,-30.7449996983947,-35.1524258290874,-161.975403958964,-77.6855088932208,-30.1447083386552,-68.6214144830316,-58.5295831127332,-102.082880390451,-51.5498563782809,-109.872628197024,-43.4639089045484,-42.5473197591047,-68.8595967302778,-27.1420962294549,-27.3019909515173,-125.978701193175,-49.4407551277139,-16.3087637001969,-94.7441744864091,-72.7525524732528,-106.523578644844,-41.4220107695725,-29.1353320111025,-8.37694665715008,-9.89382276698042,-13.0672383361787,34.0644528860875,0,-10.1281718721236,-15.091191343716,-97.6456946840936,-77.5360137890274,-110.924172859733,-170.225377529641,-40.8418272044354,-93.527163682442,-68.2786633386288,-62.1429903268793,6.10956326883701,22.3156753907065,-69.8584873089726,-52.41118858676,-153.765891145701,-90.9427507287527,-125.828562863816,-33.9604385126671,-26.308496974243,-57.5833056336658,-23.6099030080474,-17.4824487299785,-37.8525309614434,-22.501326545488,-15.3256891722203,-13.665645611064,13.7303566271892,-54.2166647909497,-72.3854983852769,0,-102.746867820683,-169.172718816337,-10.8617196459001,0,-123.776869238096,-103.617227836391,2.16820602727815,0,9.39105625242477,15.7804318240674,-70.673090033953,0,6.91589800916113,0,-4.02894431012834,0,3.69157924613867,3.74810419923098,-7.55753765862539,-10.2983105585845,0,0,-32.9714710673665,9.34459053269689,8.85081239897354,5.77041090794542,-17.828079115629,24.8921698778279,-4.48657295213227,93.947767299689,0,12.2337157592038,-152.409131749612,27.7726820112044,25.0572286327789,21.5136083806835,14.0100502236319,0,20.6644759969963,17.4701861090811,11.3794332597782,18.9306013216484,25.1634819286281,28.4337434524686,30.9327974149484,34.0265064365748,31.5966549762108,27.1960947729538,33.1064886474408,-13.4879851301947,0.557093672021111,152.333431986689,124.283135046376,104.512661179071],"Archive1203_field2":[0,0,0,0,-368.431848240766,-1049.1904021667,0,-400,0,-131.451934585464,-489.992712130618,-132.446174237664,-264.862272071759,0,0,-185.416370454898,-22.1421764391932,-63.4640479843897,0,-269.718873124694,-135.475127483067,-300,-337.465231993013,-284.159679482095,-191.203288268939,-175,-127.777005628392,0,-47.9117683211815,-210.716425502697,-104.00912208172,-70.7228993371485,0,-271.984189572284,-166.433721013018,-127.523541692589,-77.809361290363,-267.442043462722,-162.04419019623,-101.263644748252,-122.586269422173,-31.6439854532326,-298.383891126036,-244.47242482868,-159.098476654158,-99.1266915765057,-68.530329489136,-42.0038134564471,-39.504009972801,-53.634080268126,-280.571771333633,-284.088646997148,-275.329033515359,-276.02890216474,-285.354500059952,-272.073760719191,-272.588103226452,-265.709821454373,0,0,-300,-259.457944250072,-321.940573297956,-275.41494896331,-304.816705232093,-325.335934411902,-284.186270917667,-259.608828522514,-264.062472872648,-269.140069445468,-270.562559229986,-234.101562169201,-262.542400242827,-216.720471859927,-133.820354936261,-118.255443505421,-133.834612460144,-167.600258472917,-101.094629410877,-77.8095602333635,-94.8628934402922,-102.802220808659,-43.5218714646685,-17.4614331783782,-359.697293743078,-375,-319.970535203414,-258.68078024073,-149.871693042496,-208.112142781693,-208.543824482611,-175,-152.303209339054,-238.596844643924,0,-53.1451047491901,0,-82.0077187970878,-29.2362240449024,-86.3996533405624,-21.3487567492459,-153.294113691924,-17.2719570808075,0,-42.205689119021,-141.427405349366,-47.1511754495029,-60.8761932846051,-36.7404013159416,-97.6039407219471,0,0,-73.0830815807152,-17.1311573247586,0,-122.682769956804,-56.3308366875508,-90.115252966147,-99.33670043834,-137.720655922748,-70.5562687723891,-48.3637620600038,-94.4645076401595,-28.8925748700876,-89.1304103205018,-31.3743546016804,-131.769060550314,-42.4598788973321,-43.2607318767858,-272.372874782087,-272.56256135415,-186.184729833832,-191.704045449152,-220.928956540367,-193.780995786769,-217.151486609216,-250.96997860336,-238.860371435052,-265.277922648167,-256.432978123134,-266.191050389792,-250.493265844303,-197.672856999368,-171.481683102518,-145.490249148791,-137.180890259985,-226.080205893943,-249.181926997335,-197.925417216985,-243.163613359476,-189.455722924492,-165.77487715286,-273.222304658401,-225.347895251527,-181.733441200679,-261.037590244689,-216.931470986895,-181.682305570994,-229.508470969263,-279.515999334428,-153.291269654759,-206.877292955495,-233.882878214418,-259.622901824221,-266.440794673567,-140.804419904185,-108.820073442741,-155.228445997297,-127.070467381561,-93.4723300361499,-196.470333786909,-129.33882473717,-96.4515395123207,-170.090261930182,-157.245562868173,-156.320134085441,-119.131549761735,-33.3318361745784,0,-12.4902274926009,-226.520170039887,-11.1827011197631,0,-11.7593456809488,-30.7023354302428,-121.067215032702,-149.45891368162,-177.618227122553,-194.617563720829,-65.2460540857368,0,-271.427880295339,-269.143360986583,-271.914119880117,-292.485583760541,-74.5247671903765,-42.9718436643374,-57.6574857198632,0,-59.3533436120362,0,-44.1855374311043,-44.8871212871448,-43.9242070637545,-32.4855461198085,-18.4273816609991,-57.6553795305294,-64.9180607661104,-71.3467039466922,-31.7683652756918,-18.9583696045682,-30.5972009670684,0,-26.4984326733884,-21.7342244846733,-21.4669554962402,-24.3536789028686,-8.95954755011354,-29.7845389208357,0,-19.9398545700644,-31.9759406882365,-15.1526528087434,-10.8794090671406,-12.2554380596292,-8.36305997339772,-9.58543162626745,-43.9933019586691,-255.967764654375,-196.586451205556,-184.816198076109,-19.0147265584556,-20.3808423980829,-8.97792845512013,-12.569201573446,-18.1529267024086,-8.89046166629011,-72.2227438105169,-54.2410861073679,-45.2980129101835,-86.1110553854405,-261.537486023603,-271.57440827278,-278.015551889442,-269.120133768576,-274.103005188743,-275.65001619134,-272.241565028265,-267.87032457885,-279.410267904936,-264.307552622159,-272.536530699403,-285.501487923431,-268.918036982176,-280.517688018211,-260.897966100145,-276.141793717746,-288.846039927375,-236.494629844961,-282.770645204345,-242.866332969344,-255.714160789471,-239.158330295882,-268.255005585407,-210.624776773574,-264.617994401693,-182.144345012611,-219.476161665899,-196.266685058544,-202.384666771564,-226.585652969385,-178.419477488034,-250.368810173114,-208.044943650653,-207.837954984413,-199.960082412761,-155.573066069679,-241.040823125237,-182.400079693151,-178.547747300225,-188.516582833498,-228.443945310302,-221.447997012056,-255.09951657018,-279.641740812937,-92.7731851170718,-113.880617321942,-33.2884348226298,-5.53369426221903,0,0,-4.99840905226748,-2.62936608899705,0,-1.9297963493184,-6.80958952496636,-10.9058819361108,-57.6341542996293,-150.848081330929,-158.152796979456,-229.956582261437,-23.4388565276446,-29.2731470338425,-7.22354694198731,-26.330758891404,-50.1881651077398,-82.637087460959,-66.6723107224998,-106.259924923969,-66.6223265911007,-131.87662676881,-154.844046082548,-151.159609651166,-268.176950734414,-289.864051611333,-279.52856231286,-273.057265296971,-284.783514585773,-278.797943965373,-265.415158999606,-296.845794150278,-288.006393164664,-295.149286921759,-288.827539760328,-304.177408294121,-320.55344672387,-306.381805841914,-316.115993887048,-305.334056225562,-305.126370345063,-334.15775111155,-343.727986681216,-310.18336530881,-323.397934042757,-299.828378514924,-295.130592868672,-320.751962839014,-328.835109947142,-339.225698166826,-286.740949438567,-297.367070253116,-336.579081065511,-369.828962343369,-354.826836778473,-377.221985175605,-314.588764872663,-298.489634894474,-325.119031936775,-272.101901676715,-325.451839156679,-287.096590972145,-274.610066841389,-356.073328317654,-254.971755055563,-233.992816807107,-249.073793550144,-225.731061133263,-274.117960412362,-273.888249589819,-3.69202900933233,0,-15.2446236538868,-55.5848091143275,-80.1784253054449,-34.6419340492499,-240.273877862352,-214.505581250276,-205.485865868487,-246.219481763853,-10.4885220537078,-32.7127521111224,-34.5004794925665,-22.4364836289644,-104.547960205019,-58.2849982607896,-40.0654817299198,-263.194317619884,-309.842977630529,-352.764743206077,-352.918224570826,-337.912419182137,-373.737047288891,-325.487740949667,-352.264526376789,-309.613986820509,-335.086292730306,-296.356056204025,-299.761723285623,-325.479288708395,-355.169769425058,-294.618160332348,-338.814679589795,-313.554449969544,-316.09288898469,-301.15242629395,-305.218824975955,-324.457786287978,-360.554460826098,-338.201575489351,-352.741883428235,-328.19172839546,-351.305779912175,-396.495009033578,-294.80316190604,-301.108774772686,-313.084135700074,-311.332769512713,-289.124546152857,-288.917207829698,-257.299389326136,-330.015102759147,-244.544943153864,-425.217339588468,-274.699261611896,-257.553383447246,-236.557263462692,-220.159960267005,-204.030076043633,-195.3277181796,-212.974224803822,-241.696373957375,-244.69727932082,-221.494207044845,-200.558920814337,-286.687556891918,-252.565450997224,-262.831374327078,-274.619511649562,-274.78431118513,-299.933655310479,-198.973319491756,-233.247403001796,0,-0.78015977040694,-1.65308875338933,-6.67709096880407,-8.55423217583091,-8.82190748172638,-14.946602797984,-4.48974204301721,-4.20628247859976,0,0,-8.10175088840843,-84.5578775605998,-99.0026154632519,-116.992825678335,-75.8818470508599,-72.5433358071252,-62.952385567676,-81.5522403770874,-95.1006675174893,-117.565239998252,-111.827966623477,-137.312195654205,0,-83.3150921005876,-180.677075434366,-147.513976881913,-39.8163772239923,-168.403431865541,-46.4478728483368,-166.249320422101,-215.919192683542,-110.69754710061,-189.862777877434,-214.612871740488,-122.744967090431,-84.242950180319,-140.694943297497,-124.240449324399,-125.057482641742,-74.2021608856424,-239.254361271064,-185.836233441179,-210.492965637712,-248.251065682164,-174.091637257024,-220.660996245462,0,-192.064798235699,-5.52350983307215,0,0,-3.28227609405826,0,-5.73887911730656,-3.32034316874274,-4.50402810891231,-1.86454877051992,-6.706044421296,0,0,0,-14.2844469402912,-1.35025987739528,-5.04082669547741,-2.58643615935846,-9.84209005387642,-10.4238043070932,-12.2752228207792,-18.4041504561765,0,-9.19621812701175,-8.40149212160206,0,-15.4250927054753,-4.6447437018394,-10.9418820111636,-10.8382108613629,-26.4800777910827,-17.3218742391772,-22.4176008981526,-19.6470912799464,-3.96953009637189,-30.9677412573616,-35.2847020254881,-23.6004795167165,-87.8367838444146,-74.7907293082681,-112.633875280546,-128.826465180771,-128.604731815579,-139.927631397347,-48.4338332444729,-36.8968033957631,-360.787279501001,-419.841455463344,-354.724505462792,-382.70819883436,-281.00674774899,-396.203491151584,-388.139700044527,-415.849812820581,-476.174751896601,-393.93832781191,-443.68060235207,-395.705789437629,-454.322225270416,-461.961846657444,-376.878042586112,-454.220944562909,-422.584352250075,-445.940624682216,-447.247539651884,-416.563189165751,-508.005582931382,-385.24989411889,-484.215282604459,-531.410995001418,-476.551354181862,-505.078627360603,-498.548414445571,-559.473436143435,-395.602666036093,-365.748019763382,-421.797321073684,-345.437297651314,-322.754050309814,-345.532548188078,-351.641365695993,-238.854348655409,-220.233294689907,-203.804407847295,-178.345543758263,-184.635964441652,-223.799703346643,-161.42702855655,-4.17248992409618,-13.149437269961,-15.2186817938436,-18.3088205056559,-7.98982099700362,0,-8.92963892708235,-21.190008323515,-44.2237579740953,-95.6646306293923,-44.9577440685761,-77.2852332426338,0,-56.003787391467,-44.9666558977532,-263.367725241107,-291.687439710025,-306.873010135302,-309.651133204506,-346.452459871756,-274.947174319984,-396.46625653412,-351.363845734611,-366.258822498645,-337.997552313158,-349.741254435146,-418.955261912704,-278.863202825054,-382.333989208125,-384.143972771686,-301.442490275935,-435.232919642257,-397.458966041417,-443.829351604498,-352.892210331229,-500.508118033024,-366.021325208641,-464.365880039141,-538.232471403655,-301.122487220401,-437.91730888604,-484.435571602344,-512.364363997135,-884.515748516421,-498.150626212195,-477.144355871803,-531.706026215487,-420.688686381492,-632.516674806943,-595.651565950066,-579.896745100797,-550.812596883183,-517.249632269897,-604.304290717928,-603.11669994948,-693.766139609968,-642.901377234781,-655.892709527821,-606.630690513998,-690.377142531582,-653.231205789579,-710.736901007268,-15.8569569168967,-30.7764961466664,-10.888211398822,0,0,-24.3402822395857,0,-19.8918735795081,-9.55114795408817,-34.3364986419788,-55.3310880661874,-60.1293240387491,-40.6714144791876,-26.885237745244,-29.948267554198,-14.2128951204133,0,-12.4553632452259,0,-35.8049745586985,-17.2017724291658,0,-20.7343984223578,-59.2840590005947,-41.189210046024,-24.6843626616365,-76.2164697863827,0,-40.6435560630439,-98.2130850531611,-55.7878064561413,-62.6644626598142,-370.241818698061,-352.051251453779,-434.897798061883,-397.847501728691,-409.147732299875,-408.25888412484,-426.397424571711,-383.31701678034,-487.28687707854,-409.736263512655,-455.943094913334,-464.34878651622,-457.194712082685,-379.093581378678,-523.185227482328,-434.528093360404,-429.109109541847,-490.21437260509,-488.576021956826,-508.632247898869,-576.5825747378,-533.200665141714,-543.408779857485,-582.153900123086,-571.569379335068,-639.089116762759,-502.828860019929,-524.698745155645,-428.697693939597,-458.9871884256,-298.209578858763,-300.408810877485,-315.699588951838,-327.251416228303,-307.710554591041,-328.672086484175,-358.043226465413,-356.114901038532,-416.544927210007,-388.008786385118,-384.282280071607,-408.666278435166,-224.124723976133,-203.067650397431,-155.365980635884,-232.402184467478,-207.431474201263,-26.3187962898286,-25.1171012722696,0,-66.7828265162087,-55.9329710206924,-34.6160601304146,-20.3311600846953,-25.6263740028718,-36.0772703789938,-247.060995867836,-324.145628800209,-336.333032212449,-313.597533351024,-236.202509115712,-210.32198637763,-407.224658392875,-559.213880129469,-559.314538797144,-671.834973446213,-814.024901661646,-42.5474618085048,-73.9256954637719,-104.043565047279,0,-82.2493687523507,-111.667286013056,-81.7104672362772,-105.967284532447,0,-158.969352943231,-94.5464694122615,-80.939207474664,-128.95408017618,-143.284634749223,-143.346685432405,-92.8587707965318,-119.967034649013,-67.6870580743768,-67.8114939971401,-167.536364047926,-172.92500197391,-204.441860418301,-123.870091982991,-45.9759007118159,0,0,-108.86028456886,-145.152294779529,-36.6099382583494,-54.5968432127035,-32.2609690642119,-198.146985871907,-35.2062012978905,-177.129513988525,-174.349611321422,-210.774693224724,-52.8472698785101,-254.306102459065,-32.5295508995922,0,-72.6235545799881,-201.057768547227,-226.082171391604,-255.280822252984,-228.226346024891,-194.661870304086,-130.275137253591,-288.328149088698,-268.854227026313,-234.052579752279,-134.949659062382,-243.043983823709,-92.3760316901818,-80.4252783825391,-324.116591952509,-308.371858560936,-340.95504515127,-275.727190286349,-161.8254970477,-135.759996529899,-166.87645646105,-170.06930082708,-171.879375643769,-229.243662261497,-101.639071559105,-287.389355268329,-365.082796324169,-375.042668898869,-342.510041369985,-305.191922591565,-116.800462814444,-77.1027922654112,-80.4515646650306,-439.843582382806,-472.508921768931,-495.578778618707,-530.483100880984,-575.470406361393,-622.986622650557,-377.247160276395,-475.760642589047,-424.851300116902,-401.967488790027,-493.733336547149,-372.959954256977,-25.442581877678,0,-14.7447594373344,0,-9.7533172443081,-11.5042392824815,-51.0063250016255,-63.9121713347413,-25.8203151607146,-93.618737554145,0,0,-115.923425540618,0,-83.4569113962007,-41.5777733288299,0,-112.434365284034,-148.911560414979,-66.6245371204924,-17.7139372106521,-163.070773908641,-85.7829039622288,-114.146564593573,-152.562136487263,-178.596976977843,-227.724557533693,-119.592007715099,-228.013220495967,-256.7422807968,-161.334295144828,-254.248124050764,-177.57129080122,-116.315427859947,-142.68880506233,-61.6869090421235,-531.956078070284,-753.823149594878,-215.567261742333,-106.994626785538,-133.106745738015,-151.988584064193,-278.843262518199,-297.414166237154,-244.569296187472,-278.964034220894,-366.162464922129,-63.0730205170013,-100.419531771549,-610.110587019362,-650.668966246684,-725.867085328744,-697.392932254358,-657.364691941327,-748.753214530503,-802.583774701242,-766.520294239713,-752.777794730438,-609.226048247683,-607.127294415507,-633.285893284713,-634.860085747448,-699.950687591864,-673.991848991809,-715.72299844195,-681.493371629704,-765.176457160553,-371.833890055787,-488.243396976373,-451.053122258714,-560.912895330162,-445.120265576087,-525.07836773134,-554.263652767832,-626.486770216531,-590.005554479011,-626.887835311027,-32.311069432801,-41.8163614930411,-14.681410321061,-24.1891157622322,0,-30.6074924389481,-39.498742750527,-80.1013567725911,0,-303.301057647938,-335.360018625474,-331.620712856583,-287.963035364248,-257.019600441584,-211.068422084908,-119.707470462004,0,-1009.22835942525,-821.491484939388,-349.174984740415,-718.727834486497,-805.140410686214,-472.356422157901,-711.032608126402,-672.656423756864,-664.744251042463,-718.445646509865,-680.666784218436,-776.771716504517,-579.843771584364,-170.856242478172,-214.213643530221,-96.0064191325785,-265.912815339007,-312.866933596021,-414.785973443192,-326.049523255761,-170.510090173154,-141.238582313651,-756.718874740952,-803.888920606551,-289.185607620538,-421.717068147877,-908.484595315908,-471.289338955102,-530.899904952196,-619.391142143786,-755.459610885366,-796.82394047512,-885.781366050985,-852.982593573001,-752.103991011599,-612.165027323774,-598.399307335339,-591.164569195418,-563.428248948568,0,-43.9497965432582,-68.9154219929051,-44.403616236532,0,-63.7067824090818,-167.719135810997,-235.944695959168,-756.801079598486,-765.666350437881,-917.98906217201,-271.31573223934,-236.306999159396,-328.796662218576,-289.036160877326,-234.141023219674,-250.218069082386,-187.108780476421,-342.010953161974,-302.336850328599,-117.420829458896,-383.945462271019,-419.900317190294,-389.523272968229,-431.062958077779,-393.27599150337,-470.419588720794,-437.492615644364,-400.785405406633,-346.275845548089,-448.44019991696,-466.774640318466,-539.388808734157,-403.785457809313,-323.292835379671,-459.173667263415,-556.363174402772,-522.487795733262,-381.761889973302,-632.982863217906,-434.724547090834,-584.54882356916,-424.541498825663,-522.931850134455,-677.794786692137,-566.088104651019,-640.030219841196,-737.334874344698,-683.81991347368,-687.641668296242,-673.276834970384,-620.202002569609,-852.417398569036,-858.931576988482,-874.863341207181,-880.396699175888,-930.618984039639,-922.763361514507,-985.975966795288,-958.320350920742,-840.714954753755,-1038.94596015686,-936.105219812318,-1046.3614236226,-998.563461482695,-1010.07548593724,-981.271828407752,-640.82346417627,-600.275995782321,-670.958751621851,-634.68844513617,-712.081640347729,-711.566173384316,-750.765636904185,-776.223433667775,-819.249795121602,-673.673193645703,-731.745178220517,-721.665827216866,-717.469480545542,0,0,-740.039353565969,-791.831570152859,-711.339641943392,-957.542283479014,-720.023115377985,-861.72695062363,-691.784802551914,-846.793005839789,-602.781342065845,-888.054115460337,-625.341250934123,-911.384250203606,-660.927853643153,-649.985045165627,-686.78858558575,-649.49083092251,-563.574035111566,-580.435775557906,-437.316556409017,-509.501212253128,-510.435252459402,-421.979097369616,-582.966576319646,-949.887058264736,-913.074820302735,-924.21828483089,-874.629329392886,-553.153608419907,-620.096894941399,-668.768955009315,-1026.69748859605,-799.531211818261,-459.002692804628,-983.422288216287,-859.285779085115,-892.229946739238,-210.674470616929,-189.601058096305,-124.06469756601,0,-125.936577378643,-373.720743367433,-507.006308335777,-649.706884159976,-607.968271260919,-530.901475756106,-521.346301701312,-609.27680758057,-576.5587086971,-597.023439562343,-595.805991838805,-575.855600011571,-533.802271043893,-820.780729480772,-836.882711650559,-880.979184148897,-1009.4575818081,-916.932557547007,-942.770137441407,-87.2181114293797,-254.182571533199,-820.193353557197,-752.727388451001,-811.788662400541,-424.858877141123,-348.824725178431,-394.388826972614,-357.7064953754,-349.946544687837,-277.203906791672,-361.821392260025,-154.388738499222,-215.19798258105,-162.570376867097,-468.127317492054,-461.664885939506,-850.696986237183,-151.085794545994,-54.0545650453982,-142.314383376666,-84.8657519286059,-178.811424464048,-182.519932819189,0,-63.0218090832937,-40.2073001055616,0,-119.222659078831,0,-105.538678385381,-589.345132391273,-608.353463420372,-559.140758438682,-1038.71576441151,-111.012972941848,0,-72.7000682177892,-94.8899355670729,-783.745017540203,-769.544178891941,-761.15452033299,-719.093394478782,-721.760936466433,-642.18451724507,-658.596924442684,-571.695230226319,-506.40927317566,-484.450703871527,-452.453864685834,-575.846244718801,0,-463.348208230501,-267.76357919876,-455.659185568127,-373.196888703753,-266.275216326009,-457.05778701313,-415.010535015055,0,-36.0650416272718,-527.822138998299,-712.743753436046,-1046.20074828655,-983.314315494275,-174.472320320476,-203.160918568256,-130.844185899534,0,-107.076001645471,0,-130.033397434801,-217.964940569918,-565.411844161083,-494.645135806787,-368.161877093925,-578.91055646063,-652.552055360179,-619.603270185633,-716.412264736735,-785.748744470519,-821.195756374331,-754.428166785742,-684.006904272051,-763.270109401278,-790.459257288466,-791.174001298697,-959.181622297056,-845.624711261976,-808.009561130569,-856.599724290906,-792.725735808724,-833.631067227079,-925.985316367573,-923.663125906085,-824.332119854464,-905.092850905762,-927.091753317016,-870.469318397161,-876.640203921451,-884.293892570318,-792.136609839487,-1005.15540407777,-947.370533235192,-330.432856941429,0,-478.456009996286,-709.172911366639,-641.312292147724,-736.291040508229,-745.289329487911,-722.883778371304,-972.842705808303,-986.912176363175,-961.681379396771,-880.641570669762,-455.795544883652,-306.847090398758,-640.13543536311,-553.211884866284,-464.031227311933,-553.163931827723,-713.29781847546,-997.743600068662,-952.609275124749,-1026.26471350128,-905.582793177054,-858.894553680377,-929.741287761199,-457.695753355101,-319.372675270079,-372.58423882452,-186.803831339458,-447.710340457407,-397.858303800951,0,-312.466571484871,-566.465403412001,-195.157267904427,0,-628.840462556454,-500.523137940856,-167.181469888599,0,-83.6345867823737,-117.085153084524,-305.278705082024,-375,-243.986391643512,0,-5.21277881655545,0,-155.298798346334,-255.325382311214,-255.160503839946,-253.052957488032,0,0,-401.954584370715,-175.364253428541,-153.586929974044,-541.986675689433,-87.5891441596823,-511.209924668599,-806.395366513063,-987.141279707292,0,-61.6648843875573,-839.070305473635,-215.562813457184,-166.619204133362,-144.217939819859,-73.8801406778217,0,-216.205848171815,-295.652462942562,-383.294030841775,-379.30104471753,-366.295096977188,-291.85337619808,-250.641111693296,-284.672745002113,-223.896733110115,-168.133829017696,-338.311825504402,-873.321664432628,-280.119503762113,-838.828167588194,-780.560526254513,-320.097408051128]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1204.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1204.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1204.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1204_field1":[0,0,0,0,-0.0486575157347118,-0.0609798360002911,0,0,0,15.7437768920231,-4.66178390796351,-15.7178679801891,9.25720829988793,0,0,68.7100005247145,-8.69312643046704,6.25772318958387,0,69.5942932693829,81.3270488404074,0,32.8483041929465,59.8970656679262,0,8.74030109640777,0,-5.86446680456151,0,13.1437551601214,0,0,35.2960018197246,-4.85466680990395,31.9446627886199,52.8293782128292,54.5173462228287,0,-15.2212134634282,-22.2960844578548,-33.2228571545598,20.7183669831676,72.2022242557271,-76.5980503519538,33.5317832425502,69.9261484699812,-45.3816945580346,-51.0276183343409,0.395678719298243,50.4057999605329,85.9066077118007,-29.16425537319,-49.4681583535288,-22.6611047611237,-34.7235380146814,-14.9628229940409,0,-69.7991256802062,-35.709235926795,-66.1487812425842,-6.07509568907746,4.53938211081276,-6.02817040344845,-50.9992796086934,0,-63.9828668142709,-83.0219405719074,-22.61445900533,10.6873858475723,-50.4110319022843,33.2617611757188,-40.5391956154343,-22.6117802811444,12.9020877574634,-51.5984166123821,-63.3693558917059,-19.1503697685549,-34.7601948687173,7.53778161944207,-77.6960725572065,-63.1326717249646,-5.42468417448003,24.2965343944425,-38.589029840952,-61.8428731102229,31.0650976226189,-34.2706858956289,-73.4249886096019,-50.1318973067563,47.0089665904987,25.2483071762086,-20.6892480783014,38.4190464570025,54.0839157753566,13.0367051363276,36.7530776481957,46.5343827431229,45.3406573623391,60.0964499772557,-24.7198489340718,60.0602866277373,64.404466441386,57.2211666499431,75.9001688776172,65.2443430349778,20.7758392379929,-7.12821797957448,24.8547936855053,-15.8136982810126,25.5463256170191,35.9095330687474,53.185041831223,31.2932477769359,-52.5582353744588,0,35.5473764454486,-80.3875944977748,-70.532879664103,-49.282450206802,73.9452626935853,79.6779682268507,80.0201499579826,38.1892272664824,30.7137132119247,0,-80.7445471835535,-86.8949168124777,-64.6453014654987,-84.2048283523503,-78.3868187195916,-74.3193304545769,-36.6268625887509,-71.867063464064,-61.4077634010468,-63.3975231267978,-40.7898022378138,-67.330092257855,-52.0593617452254,-66.8776215884495,-57.1223923453795,-46.1218162995767,-57.8808492541119,-61.8922403927709,-42.3295815668278,-15.5305468888444,0,-23.5678965928351,0,-6.41261475328686,0,-1.24931479915626,1.11634065326519,-13.5513152906706,1.08103224559247,-2.50456651336646,-6.65488105187438,-24.6860647996736,-1.5237045024942,-7.51798233953534,-0.180935042261371,0,0,4.00563417714244,2.26641416443551,3.86890008406873,2.02498568561474,5.04543288569188,-5.6824628711609,-1.69208486685232,-14.8298238270932,-23.6405621773906,5.51923800177417,-8.31845650282276,5.2035002412069,0,7.09867896310939,3.88714959744239,6.21280379593394,0,5.49664257667462,5.35280127808798,7.74158844166772,0.896481100319935,2.25962243213554,0,3.50667394957289,0,5.59065243886425,1.6392643298335,2.54484427056983,-46.9469472597996,43.7431922984231,30.8824113955125,-52.091943955297,-54.6683747941816,-41.6238866209955,-26.286369513562,-27.4327708211884,-24.5759799379821,-14.5679838250676,-38.3285403637749,-5.83538246539556,-40.9043173451469,-15.1995252975405,0.137158759202804,-43.9888438917049,-27.544256913112,-6.02284399221913,-49.4023862679159,0.135240068884602,3.8127810899791,-9.3838879072309,-43.8658325847465,8.03560075405763,-14.2045182626836,6.56762117577362,7.91293615751286,5.64169708654006,8.5584985720901,5.63784565305348,8.77014422673435,8.43047613401558,2.92401758086437,8.01816010025257,2.01683844359553,-2.36977893893376,6.81167813403999,7.02022044411137,3.30335954914906,6.34840976630111,4.65121766856704,4.362684256674,3.91243881293871,-1.03624799194905,-3.21767282807926,7.89340449902348,7.9867180225194,6.70352855190678,5.15669577863597,0,0.616583775013266,0,3.49056269921586,-54.0313239248065,-34.3835380838652,43.7593396793986,30.276992825496,17.5204927136936,37.4814088715351,-53.5966043141799,-48.437874919531,-41.641572073874,-33.93923571094,-30.2378170045925,-6.61025830137715,8.29530821283309,0.0541592270103255,-1.41293794681915,-8.61162466129249,8.6786586837352,0,-37.3510124432806,42.0330875760495,55.808924454221,24.5132886045389,33.3637651785784,34.7424081025643,36.0682139046284,38.8948436393732,30.6955587195472,39.1324653536903,34.7507061884124,30.9472043069797,36.7925909655691,32.3922604540886,27.0726926076338,29.6191645642375,26.2410710129615,41.5469222254494,47.7374550671743,45.3504431557116,49.1733167800793,50.5169891928743,58.0611031565913,42.0708257024275,-41.9009039233669,-37.0338810848436,-29.392624759393,-20.0202584028886,-37.2020711445216,8.64113612808844,-10.4150157396835,-6.02420437891085,-15.9448885429808,-27.086012086375,-17.7059226530988,-23.2865185165602,-21.5755036404316,-20.6296280269339,-24.6535447715143,-30.312805899935,-24.6252550535784,-19.7141439191162,-11.9416822929124,-26.1745338725279,-32.9277701275154,-24.9876093454875,-20.2300791482812,-30.3341631943663,-23.2271957258362,-22.6241375613006,-23.8692441766188,-25.355355893201,-25.6389516866803,-28.6167463701609,-29.6321779375591,8.40887722532061,7.79733562054606,6.48743359999927,0,-43.6087805927794,-25.108207539101,-30.082456263437,-30.5118075118055,-24.2891531456959,-14.0509167138855,-16.9664201745224,-4.07477525459914,-10.9333777721513,25.0548014967219,13.3093659979875,19.532430495953,17.7560975863319,17.1026608843613,8.58102074984886,9.14110247078294,2.93064300275195,4.81677827120838,5.95063837448787,14.5389167125048,1.92809724630526,23.5199179714945,29.0781632805279,-44.3678190220085,-45.1893262140802,-21.1482232545697,-41.3582367379808,8.51319083818207,7.65763471182655,-28.2413266446669,-25.0203517010166,-34.1938561586686,5.57072646648304,0,4.84178948336367,0,3.60492188703941,3.84451820651893,0,3.30391413168712,3.36552945153916,0,5.69162345657072,2.27324014719846,0,0,0,1.91133266050559,0,2.39398079843625,5.52181364887388,4.50247108121064,4.07848608830263,1.56127627737072,0,3.19015029532373,1.72489327774382,-39.4341063352513,-36.3424370037107,-38.398121200346,-28.9713192322522,-37.0463825458868,-33.2620611971578,-31.9107642303181,-29.616643318518,9.53230510768461,1.92233052624841,-5.55051092314064,25.8985768171757,20.7566791680056,27.5248393256712,25.0622379827417,13.2914338559405,16.3385865920518,11.5251466740465,18.4612015918349,2.92272079255545,8.00376709956981,6.78380519267985,2.61910426337822,-0.505137224106607,-7.02311391348162,-2.47552691779247,-2.87795857023948,34.3757152470823,33.4834051212289,28.6247243323529,29.8011993544301,34.3072992412664,37.9944700743452,8.76907147867775,7.6725847757428,7.28550456609873,8.15766556870549,7.85649935176367,7.40630628204159,6.453347208642,5.4606080560432,-26.928121062999,-21.450827970908,-24.0397642374924,-21.4764817758476,-23.4362540835549,-22.2191264319742,-17.6666496375293,-18.0920965695428,-21.1288860042089,-16.6798109075552,-18.216158387617,-11.2884810685247,-22.8543511964369,-14.391142125276,-10.6580901770191,-7.12393709133443,-12.7296655385971,-7.19789544084214,-8.16795486176459,-19.8578641299376,-8.2364029953312,-12.9693599860218,-1.73232309774393,-10.1220773229614,-10.0166133980135,-3.68395842377224,0.381258033732178,4.44683066597451,4.42477389706738,1.76424758622435,7.83581169641233,-0.291044615521388,-5.10681832291668,-3.66318657359571,9.45886738977243,-6.39523494536612,7.77221895609657,-7.44380186531297,4.35375195116535,13.7349862897351,-7.86624261415214,10.549201826434,12.9033134506962,-12.6099260909401,-2.29208299868771,-10.0404744557772,-4.83414232004647,-12.0644708941444,-10.2383625279494,-4.88152793959141,-5.04964690676123,-2.28434044280095,-5.61892060055605,-8.12224520887555,-2.00477757620705,1.69940991015428,-13.409443105051,-15.4268810404293,-10.8280408637082,-7.59073760781223,-3.85711179037428,-16.4269237109706,-13.8834641280261,-8.54066510431264,-10.1834293924499,-12.224127078613,-12.239562049169,-28.8690454250725,-8.41232245528312,28.1275033415868,21.9812186429758,18.4567182074144,22.3557323615755,28.582931369813,25.4654462785248,22.9691566366118,20.7039852693771,23.4431794056711,22.7738417632814,17.7282520395841,22.8212690479208,19.487467334378,20.7458279682105,15.8225614474102,18.6874833839041,15.7255457446456,21.8890760747432,42.2294785305064,19.732618958818,8.3721798125637,7.78604900816243,6.25082215218788,7.21346283130665,6.67653023271837,6.81946306272109,7.11737388546297,7.56538708649436,3.99878779333406,6.54920149526223,5.49109900244354,4.38224670005945,5.74864484254658,6.01740349829093,5.19054444573703,4.2795483530848,6.23956418014308,-15.3685950876262,-25.2352674805221,-1.58504859767655,1.59214255525039,0.227544069991924,0.772761939337584,5.69202011149401,3.25246921628389,3.2800028907282,6.46444608579651,3.31999400288579,5.80167646902733,2.6393639137056,0.832930464821218,-15.7069379588677,-18.2733854494032,-15.6690282973339,-13.362104610246,-18.4885548878151,-19.1644019401184,-15.0950295655638,-8.10645871145548,-10.9535589850387,-14.3107043700312,24.9168600548836,22.5260796752066,24.9881938932,26.7614675851652,24.6264182751586,22.2813651714549,18.0147593822201,8.43875410288861,11.7492630182082,13.3094539648556,10.5133537897814,1.26443789666775,7.40486651491826,5.66554416106493,-0.0777376990763081,1.80975966758058,-3.70903197583024,-1.33934230861441,-3.55410319103199,-1.63263617384241,1.1422826519429,18.9367104123402,28.7204720424751,14.924593707156,36.9046482251046,19.9516316380919,6.92081491511503,35.2223837756728,45.9948365309459,54.1642575701905,54.9470208207586,47.3280785732148,62.3600615299212,28.559245288121,57.9357522455997,65.5312333065622,41.6041472349055,42.5712009032853,47.0035277631543,60.6314588302633,53.1594177803758,68.1975760474942,7.86101692857624,7.89521025143289,7.69168020720738,7.05040013601662,7.38223085804758,7.46143520019091,6.71482745941598,8.1748296305397,5.48233955477276,2.14476494926518,3.29109468927161,0,0,1.95916486253999,3.18780281021238,3.02347430739484,4.52049153673175,4.63286976470864,6.21214692531684,2.7914663169703,6.87030046395964,-2.85341256095406,-3.99694053320801,-5.95782239440277,-5.48142118048583,-2.36977128691702,-4.10895286794983,-3.42562412461679,4.17514634262997,11.890562950022,7.00809119094523,9.58028033003094,8.43319677597711,14.2475622605463,10.672391066256,13.4137356215372,11.6856740685771,13.2286401191289,16.2037084625611,15.4017968341927,19.4476107783222,14.1785161457799,16.9091139405392,12.4071636486021,15.690174777715,13.7373466882013,18.3729152858669,11.8283132848042,14.5065222039453,9.45838825495906,14.6635556957455,16.6089779069301,15.85771299142,17.6353910813741,9.51650448736715,10.9763413643877,11.0968121322731,-17.5219026370866,-19.5251342549557,-16.6781665652186,-20.0618167414858,-16.8961784063984,-21.6912119598199,-16.3304147049648,-18.6023910796669,-15.2864420556077,-23.2448435212408,-18.9661161389046,-15.7793539074716,-13.884965363644,-20.8998729723997,-20.8660833921295,-19.5331605572208,-16.908503370754,-18.2149171561643,-16.9721485047157,-12.0217506889175,-16.0678662567217,-12.6215695596033,-18.695910576909,-14.6486129631254,-13.2769494602326,-10.9573332413706,-13.1932632935808,-10.2367897293484,-8.94957384202814,-13.7162081902415,-14.6881458615201,-12.2224612860553,-12.9650228844481,-11.0013960330899,-11.401076510129,-9.7848085756571,-9.75268360914727,-10.3110744980133,-11.1970626907464,-8.43488975000861,-9.40251187918413,-13.4290344318026,27.0950365447559,20.161352924638,11.2540081598191,14.2093855495767,11.4861178895427,4.47996437498984,2.9978541628694,6.13521808232568,1.88756549663367,0,4.76428087629021,-5.79143321053797,11.0650281790157,21.0949387026476,20.7638182211786,7.27740767249096,7.98782791531205,6.19425338109215,9.6884654385471,16.6771958331781,18.2076740021604,12.8592201360854,-20.3084989512044,-15.1177353072551,-17.6367054923462,-17.9954447135457,-7.18311164225622,-8.81219918318889,-7.35778279078891,-15.6296756118203,-13.0821899784425,-14.4447354943893,-15.0025349543843,-13.163240716192,-11.010946339684,23.2816441034035,16.4059628574356,5.4753901061603,1.97260539003445,6.82186401555759,8.60161321902375,10.0343411741169,4.2920987006608,7.06795069372761,6.99348930600737,0.0099656820568082,8.40617267375637,11.3239371893044,3.89626866300443,0.877930457273561,2.01740327942296,1.41584726311433,-1.71401707615339,4.10086676873582,-3.35607228425046,7.14508053140464,6.35556186466311,4.79895972782869,-1.41767028041263,7.6607256560969,11.3925906141247,0.93544838610641,-1.65382884653058,-3.64983421436753,3.29074869783988,4.43335712206743,0.866272228166002,3.22502922860588,0.0212200531056107,1.11986146115691,-2.48451663608778,-2.14805999914002,0,-1.56583736101875,-4.50327775787849,-1.30749661090952,-3.35685291670193,-3.69694267849002,-4.48889704984172,-3.3344649631343,-4.42156595016266,-4.71754764992393,-3.87747836713246,-2.45961713743242,6.54515820229533,0,1.75547943706687,1.90793642641477,3.44989595772654,4.77728359769969,0,0,3.04222306996077,1.98727024661365,0,3.62042294585788,0,1.59469501117145,4.83205239411726,3.71143574931421,1.9183432702301,3.50881143339061,2.15615267073103,0,4.5252895213887,1.90857688328126,0,2.71261429533667,3.33953885455591,3.98879607409868,5.29991283488462,4.12172029347237,-4.97936557879224,-4.34352871055951,-5.34549624436345,-1.69688408287109,22.1231104048939,20.8468702475432,21.3482761680204,19.6166577540689,18.9615934615506,8.53742415511661,5.17871360725583,4.39308657686773,2.22023891757255,5.6378502356447,1.28117887635007,3.5653923665105,1.17035142949836,-0.921410201069702,3.65404473476042,4.18524714012337,5.74301796803938,17.6120217190028,16.3698826967875,13.5170673680034,12.1527564660219,12.8745756532738,-12.1143082330218,-13.8644876034818,-11.6957653956914,-12.3196840842862,-10.0119714373274,-11.9963609412602,-10.7559660075418,-10.4157393986137,-10.0290995193267,-8.59026961373163,-10.4235809103085,-8.75184212533021,-9.94196004256021,-9.39559648711848,-9.85579443961658,-8.75743979868198,-8.52508658104479,-9.36222993412792,-6.88379902157833,-7.9717799123511,-5.67630044348906,-7.21528531212511,-6.8574603164887,-7.71007681790583,-8.92762527122096,-9.61417368682737,-9.23234072578219,-9.33165392275961,-8.63307828591614,-8.94095372074722,-7.84468061451462,-6.33894488691339,-7.10505596570729,15.0666428695327,-3.31205722351107,0.709821053445406,-4.7451215292962,-5.03489357709164,0,-1.52331311468685,-0.735264131783416,-0.917719987285221,5.21365241199265,6.07796941327654,1.85162403408444,0,-6.77652857976045,-6.64455109374534,-5.31009992310318,9.64023337365048,8.07728673191232,10.1678447546561,11.7744806028106,8.36722013189357,8.98289740884429,7.33695001494744,10.1631658007706,-1.97255480379409,4.56833244371167,14.5277165942258,13.4215062814406,-14.6243281554631,-16.3405691373293,-11.2356831258812,-13.3079589909299,-11.7062020729583,-10.5872177559835,-7.60065509328458,-7.4070605595527,-5.59017473292814,-6.30871075024958,-6.81829420349259,-3.80390126860722,-5.19150327483688,-4.62677851621263,-4.3681832146803,-4.09163080949118,-1.45359307241457,-2.50733932176866,-4.63001374768079,-5.79017580705024,-3.54758146511832,-5.08948790177076,-2.19322534427003,-4.68649093013906,-4.62199379185834,-3.42385019220623,-3.09258682322442,-2.90606854105398,-2.12886747893163,-3.42024050142522,12.6409719277435,12.7800741875379,15.5497577536451,-1.8884841827329,-4.05492060741605,-5.31352422511267,-5.83274584451632,-4.90445709436319,-5.11054435734159,-5.51196936064512,-5.4309080769157,-6.6756805503333,-5.55653126779238,-6.29937224415583,-5.67168260520401,-6.44749983966722,-7.33633730107286,-6.55531960751184,-6.92058313971584,0,-6.82392219483355,-6.22424605999807,-6.84258745572809,-5.28318205216549,-6.3203542928376,-6.02652903433198,-5.74470016837751,-7.39563737506459,-3.59601596598184,-5.35211089521241,-6.29766058700744,-7.99539029530924,-8.30811620649643,-7.8280386478249,-7.4497466549563,-6.92890843363258,-4.85896510661691,-4.44050545328692,-5.08792329488816,-4.97445205414866,-5.28080526128428,-5.07576347843579,-5.00356567071955,-4.08603828841734,-5.47301584180764,-4.43562589814668,-1.2022751486657,5.95356492135141,5.99583491690643,5.55661660216605,5.3712243221804,2.86695999861889,3.55002146718555,4.5143037687647,4.69178196056327,4.26237206527153,2.06829675457392,5.00761335275044,3.29296164989409,-2.31837738743537,1.13267228862616,0.291307580297613,-1.10728597740295,1.10063953298379,-6.36887856637947,-6.62075488961894,1.96881823119146,-3.24201313981704,-2.57029995028547,2.01210480758161,-7.74948705068963,-2.31889682183262,-0.120365804318698,0.389562392931756,-10.8064861210818,-9.55938406976543,-15.4043464427562,-17.8830082780032,5.64286441400114,5.66791889504932,5.47701845943456,5.09268596680085,5.88263612599259,5.88517271672421,5.45531198607536,6.33777258011621,6.61550204189909,6.12494161095086,0,7.15161349882325,6.47514066695164,7.54006310755522,8.01981713130351,9.0286793964517,7.57976031200648,6.22629491934049,10.8401508176036,11.5029290530127,11.6639429681825,12.41241877129,11.8134468271515,11.4949497898067,10.1855655482199,12.1305517252663,10.8411402442069,12.8518482279986,10.9722875120091,10.3566198357541,10.5517149834328,8.84101022094864,9.44914066557847,9.77417909541917,8.8735790137793,9.21374722902318,7.82950064557332,8.48130359740331,7.00051298695664,4.63847559637987,1.53986806794597,2.96146226258825,1.57879180513797,3.03472033357515,0.0629623383863452,-1.21278412499208,1.17947027746517,1.73292961520081,0.187535581248451,3.46655038689224,2.98322688004037,0.04109139555926,-0.470762145108076,-0.129522896532047,0.121846655851174,-1.1362188352208,1.84655839849147,-1.35564581240313,0.00407662714640854,-0.396798013602243,1.16799688589846,2.19178603221312,1.37287855904434,3.68372477357825,-0.0641817118204338,2.57625070422788,2.65631864213254,0.911834682260574,3.9057365714965,4.27095785212919,-0.304248804121259,1.96668122247312,3.70182559364136,-1.14629075804468,-2.22793401942685,1.71957295639798,3.27926822940193,5.48045283343024,-3.54286209915438,-1.33384030617547,0.800966751871474,2.90573681899581,4.56720331499121,-3.13367242046084,-1.21169129391414,3.93576949009945,5.21429502955786,-4.24091184512633,-2.34989280749097,-0.345501259508792,-1.4088826177004,0.785981708903185,-2.49229711191865,0.478746453340109,4.10193142664257,-5.81050701265006,-2.60845092931311,3.69361425864344,2.90558627411607,5.26955620767452,4.53425887603051,5.11727341629101,-5.1077449353937,-5.14673243082178,-2.15984740252631,1.83250274309102,2.66002041744001,2.85175321601556,-4.42944819122391,-4.13330194948867,-5.67960715311894,-5.31861752506639,-6.2444300715967,-0.770995354438066,1.77150024002228,0.551401652658238,-0.933284562819801,-0.474567921941979,-1.98973480094891,1.5353052929029,5.22426349303543,-3.27695057759377,-5.11238048464864,-4.31090392498042,-5.37283007477667,-3.90310246643674,-62.5912626276668,-3.53067059647392,-4.95736942046908,3.89104894423994,-3.0789346528204,-7.64903979646944,61.5802682729048,4.4950686250664,6.21626477177207,5.19740076138771,-4.76136408065757,-6.2150054586597,-6.28480829842558,-7.12635250728845,4.77190905875666,5.55080714685629,7.62557865286337,6.61877328205188,8.08229288206621,5.8832993068111,4.73034968508794,-6.44768477025744,-5.86295066705064,4.61751640305303,6.7373251609378,6.83831665917985,-4.73456985519264,6.18230679938834,-7.01525117919722,-1.47737813835179,5.89260545310245,-36.9641739158508,-2.86392371148536,-0.844847397953774,6.45785306468403,5.79143655995989,-11.6547086091327,2.76275370245696,7.32967709263327,6.45479093475816,5.76163320889551,-9.05949917503339,0.610492414540624,1.2728015552982,1.76251176189886,1.52565067811763,6.17153780213478,3.90228912089204,6.2831394140549,6.98284339309744,6.20133417008894,-9.71760646405414,-10.7753642604263,3.82574066555647,8.12341197782504,6.32692980568011,6.21925113224048,6.98572031348601,6.57908977354176,6.79730410001699,6.35422966307025,6.8852244829831,7.63974558950938,-8.28313080750186,-7.50999405620128,-10.5294585251001,-15.6576824706591,3.10847873389019,6.25881011698403,6.40210384558636,6.72296501961777,6.24555710461463,6.43768411849855,5.63515482614907,6.29516947020269,15.8711331906031,15.4332409347015,14.2398781274422,14.4887928843785,13.9116439250645,-17.9150884076362,-17.1059502669312,-13.4533811520134,-11.9802354193245,-11.8298940050488,-10.8019637483183,-10.6780475946824,-8.76332562065321,-5.53554647667598,-8.44538698453666,-6.83650320660461,-5.99869387763137,-3.10577461161178,-7.07588937999145,-5.18399201259907,-8.62814710994608,-4.29564456212575,-4.34362304280017,-8.61502702600202,-10.2078390756474,-8.62471601692003,-6.02914913302117,0,-1.97810945090077,-7.78297165738388,-3.53648347363996,-7.05565317450951,-2.54633280322749,-5.14125178890041,-4.89222254165889,-3.50005060533263,-0.715135112910503,-0.377502400327462,-1.66834272889953,-4.38795202500819,3.50941542183787,-4.71041643189426,1.66240164459798,1.70993972392324,2.45689254924366,0.144994974771715,2.87967300279912,-1.48154222982373,1.28102234157166,-1.52242457736253,-8.28961509528668,-7.69948111310887,-8.12467054567972,-7.91160103942644,-5.67203674098356,-8.55648349523256,-6.62301082370976,-6.83516022710001,-5.26132205737811,-5.8410596976522,-3.00341239229255,-6.58636412031292,-4.49568535922648,-3.05022350360822,-4.06831389674999,-4.91615329622245,-4.81569237765172,-6.00895503236786,-7.66289153844557,-6.10253468039181,-7.2013224209214,-6.58212805219286,-6.58143059878132,-3.23250362619601,-2.64815662713643,-4.4239241003647,-3.26208602104351,17.4157617939901,16.9616607836097,-4.67589800853339,-3.98628249775491,-3.57954293934324,-7.50235543099938,-7.55255878263238,-8.21357939653754,-6.00527304602571,-8.46798479400568,0,-7.33771439392396,-8.16251696853159,-5.42053654374109,-8.54886696832481,-7.03995248061655,-8.71141411378352,-7.87622719819067,-8.64307176757865,-8.91382651889413,-8.81233544869577,-8.57516876481888,0,-5.36376480209602,-7.27447072987827,-7.62695518311459,-7.75721867891291,-8.47384040508919,-7.64261264366902,-7.16061212298426,-8.03951202539642,-6.35956244925639,-8.41532211639369,-7.28534951192364,-4.78454075247038,-4.85382466881833,-4.92091469149477,-3.80831324132749,-4.54295239274688,-4.62196309874101,-4.1779860797786,-4.85345583703729,-3.62008944831733,0,-3.63904073221408,-4.81631174382861,0,-2.19744351689327,-2.52385483280674,0,-3.8223594075993,-4.81952251081249,-2.98998785856963,0,-4.58596369921878,-4.55601116141342,0,-2.49813860731617,-4.01509119403044,-4.60805222821489,-4.74073082313205,-3.78811898193498,-2.68032557016991,0,0,-1.74092149398068,0,0,0,-2.45135357161734,-4.81695205437329,-4.75967926321977,-4.80820913281914,-5.55484529162724,-5.58035921347488,-5.43755712861016,2.83840287373943,-11.5923088423932,-5.5555811152337,5.24876573318381,2.04740509693332,9.2697146217213,12.6452911721244,9.55895471418958,11.3291451433718,10.8388743614514,9.87966641545361,9.56918412866895,8.01722643366425,-1.7495523464038,2.92355452573924,5.07107547046198,4.34700420471973,-3.38665864568195,-5.31254992918918,-0.410087303165813,-5.80026861571717,-8.14136495413106,6.39751010309242,7.04115162345628,5.09431395254838,36.6266896551734,6.60621754652633,11.0591158903261,8.43873688141727,8.44705945384267,9.39049566108862,12.434857504899,9.40011215232938,5.46884709225518,13.8176448065713,8.59637823407456,19.0878742872148,11.575364837409,8.988591819161,3.27647994210891,13.1567960432965,18.2980903339241,19.3622848317555,-8.20728434941855,-14.41980636137,7.55917870946366,9.72358736673489,7.01632149921419,6.1870588511448,5.85551923569014,-3.9075335462399,-19.4468661701538,3.45811677351203,6.28395103740754,6.03681676448843,5.72346446533744,15.3571021928139,13.4923767584064,10.830403436254,11.3281726395918,8.03352943296694,13.4200709450545,-14.2456595535893,-12.3317607147251,-7.57315209465312,-3.31126620022211,1.70390996778523,0.783252753023818,2.46463005923294,3.6482528440342,5.09296153106732,4.054826618382,4.75569314901176,5.32431795162709,5.30981319139435,5.29246994336911,5.01304678772084,4.865403874013,4.14210792156894,4.66322628358357,5.09289625002321,3.73939140667037,3.9906698487015,4.49619506756303,4.81531477772504,4.59181556724293,4.99055730175355,4.35876723590398,4.60365955258396,3.58348656868596,2.58081301462994,5.04008387170559,-2.11213220220858,-7.3983085600578,-5.94222577532652,-6.37353458396278,-7.47171446596714,-8.03398663958241,-7.81471369916689,-7.73230666271287,-7.27277084235695,-6.686955016138,-6.96878350980134,-6.8807470116301,-7.04633944291757,-6.84432653834423,-6.65571123442785,-6.67857040055389,-6.5506097726704,-6.50706051303849,-6.2157501132419,-6.34593133271841,-6.16606291607268,-6.84795788003048,-6.07663313760292,-6.58638852905699,-6.65712323386936,-5.70912151821662,-7.56980014067003,-7.04890512321872,-6.51970697403256,-7.83949345144949,-7.54350635604478,-8.8077924056515,-7.19878902764848,-7.17965036095018,-6.74537395244867,-6.18670200811805,18.9713175166627,-4.82612201451149,-4.10684538699904,-4.58175214460929,-5.8677637696642,0,0,-3.36656219392584,-4.16271281313601,-4.90357757596053,-4.32019003799078,0,-2.12988388738069,-3.0359940047736,-6.59326840370552,-4.98186585459103,-5.60436999482049,-1.1262937773456,-2.23955346963532,-2.90068604405155,0,-1.77408946622964,0,-1.54756072044199,-3.19286043231187,-2.7690410505176,-2.87169232649114,-2.83394390198187,-3.96587000025161,-3.35053260689717,-1.78698273839933,-4.39823527538524,2.06992816294998,0.144781404219708,1.42344723430378,-0.29547658495905,0.642009152470775,5.09103707512543,-1.40492800188951,-2.05411329924622,3.44095681875789,6.04792241338623,-3.82311603997034,-0.298997636714062,-0.810718272143386,2.80879320501333,-3.08627049282955,0.923032019601513,-2.29409231448498,2.61685864301727,1.34144992103336,-0.184866616372599,0,-2.09764974864758,0,-4.75553836990283,-4.41661185401374,-2.15547764757342,-3.45525376157654,-4.34181172288059,-3.31292860874401,0,-3.07110962296989,-5.21062826583595,-5.06718725430088,-4.41406731716349,-3.76308214637338,0,-2.31814530914824,-4.02038902411521,0,-1.62871342541818,-1.62595451009949,-1.94432843434893,10.6686371408827,9.88322917088995,10.2969374355786,8.2959967027683,6.87875650081267,8.12759338246886,6.40729680489721,8.39467499325347,6.85733036321159,5.11936409649561,12.9062752724352,7.97770245965443,7.64631357753965,6.21460273024936,7.15306554193409,7.18854074252844,5.04589670538924,4.88133133558329,6.10170007953253,7.04011140918355,8.21818841901586,7.21001266348522,7.88996192719871,8.89233151281656,8.85231973554319,8.26853161420827,9.50490290791761,9.95607221700467,7.67854394565401,8.2387924447344,7.06582803993269,7.86370600473536,7.43044767768043,7.27565383347132,7.17851352563909,6.63470578309719,6.25961807902285,5.39613397027094,6.01139635887432,6.13677035121114,4.99756789419082,-9.087099389329,-10.3408382088607,-11.4913602182253,-9.36436904360424,-8.6097469611737,-9.36283003321426,-11.5987606945188,-10.0304728527346,-8.7744707685763,-10.1978008066411,-10.7596001890817,-12.8639985730395,-10.0223049558717,-7.28900794753642,-7.07582101315354,8.12606690239289,10.5637779899743,11.0064168081448,9.58113762201642,27.9729653002821,17.2389211931735,22.61742677747,27.8283226308634,24.2000957346123,32.4500193897315,30.0235385389856,27.3289020521898,20.1777706683226,51.1637566138786,44.2719736805751,35.2650191543137,27.4676232456545,31.1364266395928,31.4413575110369,38.297808262424,25.3447976002184,47.7757755619182,43.1711459945351,56.9813621577717,35.8243333540423,46.817181853704,25.7247296910018,45.6099251252992,18.4831973122704,20.5719509907773,49.2496826783877,38.5968012397819,22.5708723599585,21.7524054282877,21.2042388638885,15.0788407341862,17.5167006970903,13.4955864044833,15.6861494837132,8.5249159415068,-3.92732399783593,-3.6603260995138,-1.23830978398512,-3.10131804779652,-6.33919459105482,-0.224040572572037,-13.2243186179371,0.0556362707210403,2.9594940964387,-9.60875887482764,-9.62264724133457,-9.90052951243899,3.6953767131987,7.10510045934335,7.3423844225153,2.42597477606249,14.2661135036378,14.7450872097736,-2.91885105267204,-6.91456100019084,-5.50408529315515,-9.39690921907098,-15.807737075945,-14.5826243536044,-15.4391963782382,-28.4013847428909,-19.6898170983101,-21.2054004126346,6.58281011890758,6.08710859150669,9.71225940005755,7.86861161303138,6.26663371095569,8.75896688784567,-6.01111520799796,-5.00838591962037,-8.92938474344486,-6.86566133913919,-9.65570911674289,-10.1414615809363,-10.523652822278,-12.3653260364354,-0.440403171868129,5.64453779468137,0,1.56312946883843,0,3.76989901744624,2.00960287418301,3.05388671214775,2.00298345276317,3.62547090345543,4.76849382339576,4.75301780605993,4.17869316430757,4.37648071686834,4.62887586159113,0,4.77316876203557,4.58600314877055,4.52057823205963,0,4.80938664136332,4.67193463603787,4.86604176483706,3.75337748343553,4.36769260715424,3.95941269506095,4.36174469369622,4.97887750478309,4.86385582730226,4.66822365304804,3.72174124402749,4.9549756064543,-4.02792618397943,-4.08288135639188,-2.12857702442895,1.53235607456531,-0.369244324083587,0.215524233467721,0.63800619584399,0.622784502084076,2.43848405869808,3.38769801895088,-7.16760737348185,-5.75433178168454,-6.52702910099427,-5.46199046182612,0,0,-5.73462182586119,-5.92178314099309,-4.58793322381974,-4.40634598759713,-2.38481151379016,-7.01933773436754,-4.83694751719078,-0.841168694636531,1.52361218591348,-5.92395063141951,-4.95217920107296,-5.11662637980866,-4.81317952731853,-4.94313617255765,-4.87775136556395,-4.70854815007887,-4.12051219918701,-4.87001516435892,-4.93995902511748,-4.76122069198596,-4.56979208797972,-3.82019859112369,-5.14227974726942,-2.10930124733678,-5.01278422469065,-3.53370880308254,-4.06483054593015,-4.96701192041991,-4.20850454076906,4.56627440182166,2.10911132401537,5.4894570926714,-3.73008268741729,-1.73863779463443,3.62157740150191,1.67195654044577,5.39683945559189,4.71275083758024,14.0939046523969,12.6616983208186,6.06351972298962,7.75230689428851,3.42995350982907,-13.6944479122169,-21.6452668014694,-14.4063517979121,-17.320466810484,-18.3586986968864,-19.8543758116841,-15.7121527767986,-51.6596779781227,-19.6913392627649,-16.145871245961,-13.0001566726541,-19.9466634293306,-31.1726663031113,-18.5318711265771,-23.2360153865146,-15.391879840094,-25.1438264346267,-18.5152054305469,-27.62777566682,-44.6965361630348,-31.6489447775869,-18.155982399468,-15.0602640403638,-23.8890579207312,-32.8283907062386,-26.7535364839047,-40.9103356588092,-37.0215777952097,-39.0185856626015,-41.6835064053501,-8.33444367444719,-7.0406320604655,23.6378091237332,39.1439603334377,32.3612518005497,28.9408703286258,26.4439182998603,32.5983295289394,37.3279366800985,71.1517619272417,40.1904112433955,41.0249664750524,68.573205350488,65.6405567615174,30.7316521407938,51.4381640925667,63.6608399979762,55.1830344038231,56.5905096528837,46.5140561194257,45.4713264855667,29.4648792371573,44.5783151592279,36.6959552873303,28.9553216498108,16.7103617673957,20.0464047294291,22.7251739202201,25.1049407021348,23.7405056698297,18.0517827804379,19.6800602591703,12.8537638353191,15.739084850989,23.3448336744824,19.5407895076694,16.7897099372852,18.0131008866697,12.0531901248908,19.0542066788848,9.45983102766707,13.7190383692111,10.0951401092159,10.2768501999958,16.6821777862065,16.6566026994164,16.2634686197783,13.2687878175071,12.9879408960178,7.3201942978744,-13.6065886497091,2.43841417389477,3.41853532395759,3.68903722643357,4.30981631167727,-3.67000946487689,-1.61583833289908,4.26498359406893,3.36466643469531,2.22533492878506,3.41914196213563,2.69242152407874,1.9512290304014,-5.62415996949198,-4.83812561672127,-3.69906163182452,-5.70484230023399,-0.456651109013316,-2.10148566263312,0.120858679501212,-2.60896998860526,-0.659925001059043,-2.94022085864676,-1.63418506398179,2.5808941962271,-3.92722733377978,-1.13279170663198,0.978992636013482,-1.88500716633845,2.15916092504561,1.54092129890583,1.74709945268667,-1.96955095655412,-3.84264365068052,0.111199096483633,1.57226565114047,0.979563148490933,-0.725846890400347,-4.67717204664925,4.33894843607857,3.28844815919704,3.09515817313108,5.16634222513051,4.42396516341645,4.11795268687248,4.10647841581796,5.27843502476139,4.99372893584621,5.60467323551715,3.92722117061282,-2.50128831742814,-6.0931556599736,-5.01319231923274,-3.90977221089397,-2.30718888058303,0,-2.23317201896604,0,-1.61562783274206,-7.25961295905722,-6.24038006269072,-7.92682688131979,0,0,-5.00208094918914,-4.40984026060774,-2.80737402147245,-4.79698752344902,-1.13116947713003,6.27579579415423,-6.23723495361669,-4.4790120991144,-4.23764821767295,-4.57055575533394,-3.63340557985897,0,-3.18391831247545,-4.95442825559864,-1.79280506215764,-0.696743360751905,-1.89485845947478,0.415999999628227,-0.44964014720279,2.19763080827647,-2.30015955115577,0.994944269869842,3.20607448955194,-2.58570780836639,-4.04396826101051,-1.06690436046699,-0.648410427997641,-5.42532491009035,-5.69927995678686,-5.12440438978189,-5.47196597737632,-5.15808918106634,-5.33076291932272,-5.15996286102652,-5.4927284591438,-4.4059934923908,-4.25046861943487,-5.28148175915386,-5.69842180308553,-4.39742554311303,-2.78614646289339,0,-3.20455619121187,-5.33644624286863,-3.88984873989585,-4.40555676178751,0,-2.6609603415478,0,6.79278087440482,5.46784760361855,6.79705052938038,6.22106846913236,4.57398783069922,4.23642880171554,3.73964382056842,3.69460188605662,4.79923271663316,-11.7411623185947,-12.2343619487292,-14.8485283376217,-27.0273949218692,-22.3450353860055,-6.98435395605705,-7.68331617416108,-5.85808556387778,32.6425141700771,70.5680389462574,31.075890176886,12.0404475230614,9.41436628380266,11.8772730391806,13.4517336983216,8.89065576214485,9.35852198970191,9.38628894094916,11.2947469120312,12.2392114989365,15.4753395239028,12.7796903910915,7.51362444455922,0.7224450988937,0.473183548217276,2.96493302108456,4.80560131124363,-6.13206015438783,-5.49186260022906,-4.8503640924348,-3.81000183274517,-5.33047047076376,-2.94916083179178,-6.14867110109251,-2.91293096785102,0.279390387243225,-1.35418866368778,5.91006664882483,-3.55438480009009,-2.35125752305654,0,0,-1.89387230765429,-3.52176254967067,-4.37824059501946,-1.63618723244681,0,-4.67681377816308,6.58691238254143,15.7318801666329,17.1714259900718,26.1034138187385,8.07868037968172,15.5418615294545,10.7836607247356,20.221269994741,23.312213007761,29.8454282872934,0,35.5650776066369,5.36356613295143,18.0146146833525,15.7472967504218,11.6183362640429,0,-5.29788698593742,-4.21785324779323,-3.75272210449464,-2.03931645404973,0.845924181703334,-3.11444738357615,-3.02279420987069,-0.874575472348852,1.58509656880668,0,-0.496978535258307,0,-1.86276041465859,0,1.72538220444962,-4.87739849007502,2.26990236220159,-4.35590371906401,-5.07397766721618,-3.79674751823461,-5.82390784689284,-2.21006799511357,-2.3938369165613,0,-5.22135273891964,-4.35120723935292,-5.24461167299861,0,0,-3.33737849910179,-5.90633479744348,0,-5.87246616112842,-5.7651745495031,-4.98897667500393,0,5.21251517301271,3.20607092860347,3.72537899594738,4.57122475130547,4.56675040180841,3.54587617528515,1.66276727259631,5.35257702507539,3.67665675169605,2.15442506344474,1.27461548821433,0.608637257723836,2.18242053075822,-1.88250816707699,4.27242562522756,0.389580265507346,-0.88257655999354,-2.52230157144939,2.81196014241533,-0.581688946420279,-3.65756007754996,-2.72759510941059,3.98783075986219,3.32421857584256,-2.65699888675032,5.25445762093333,2.41254373034204,0.674165691700739,5.4070238150389,-15.3092698101919,-12.7529451629222,-12.1351307827173,-8.51550048102329,-15.3019158915035,-23.8842698073516,-29.2720425101419,-34.2046618953374,-30.6410554540938,-31.4275118716392,-57.4126673476817,-28.4569788288797,-22.8636545439911,-40.7561669017563,-34.0356378460653,-26.0263625681892,-43.2991656705578,-25.6255126396346,55.7635283826037,69.5977404582141,59.8686809647426,56.7883180229005,67.4511279483271,39.989654224867,53.1278993200082,70.1879470819154,33.297344591483,51.4884242031687,50.8713258184288,19.6986780403184,34.8840382821187,44.5543629723843,16.4052904455731,62.007782794447,26.4947857464664,33.6322383492768,25.8878011207715,44.8615787913254,0,10.9313526292421,0,21.0882185792148,7.32100259246983,15.6585023815278,2.18226790439288,7.68825465566197,7.17851540769448,1.62494215964759,10.5617073963265,5.00807385807699,-0.911138613829391,7.52614808760534,1.35739925746897,-3.78525599000673,15.4356237564644,28.1933015861965,1.12802270363428,36.280932284943,40.8596483152251,23.4010713640383,8.25123353768051,12.1781980602592,1.14235379714075,0,-2.08451514068842,14.4966117526539,8.56409098474425,6.566650040297,8.39109247106234,10.1009210146923,13.5640490267397,11.13143965397,1.30421530731892,-0.956310683816194,2.74690811641075,0.0177639955941792,3.97667135560149,-1.36169153114205,-4.15541784443581,5.4669045489695,-5.20050677724622,-5.28490917210122,-4.14229206954759,0,0,-3.31381976775177,-4.18750040958101,-3.06545818915821,-5.60520075382776,-2.97284305992831,0,-1.56389440898914,-1.72787014173142,-5.52584736411549,-4.48758059203893,0,0,-3.38272424245626,-4.75401797027222,-5.11928281637813,-6.36791371146048,5.9264708521253,7.04709865143702,5.65712148259052,-4.32046000556459,-4.97859003662057,-5.79869260162486,-5.69148687235408,-2.28316397010356,-5.3268324800927,-4.15992851814816,-5.075476878732,-3.71377023540581,-5.79348670255347,-2.23117976575658,0,-2.20527992917259,-4.11112723673664,-2.37530708653968,-3.11166089653911,-2.30604923158529,-5.53180789262355,-4.40802382684686,-5.07229524660972,6.03368584427237,4.81906521103244,5.76119758056842,0.584284778288704,2.28327215849015,5.47857359071142,-1.23681975778304,-0.299063857852977,-2.94829066742168,-8.78686501369852,-6.62763821211291,-4.2643865298006,-6.56096170779406,-5.679352916084,-10.1624993741096,-5.48106455940169,-7.78452571425095,-10.5082182631405,-10.8965166258582,-18.1986522414942,-22.71403787751,-37.6547830314699,-49.0647530985631,-48.6635867296654,-60.0504414595078,-54.5162468312977,-72.6858412000503,-69.6229143240899,-66.5672701232171,-56.310785171422,-45.7463038862817,-45.3555273458593,36.3842873728773,21.6679236981888,0,10.0892802015783,5.23975887223693,0.777458835176851,12.3245455721719,-1.54068567367125,-0.658425567923337,0,3.39289499686404,-2.12116140808256,-2.7536663640367,9.69660282292666,9.74541690602243,1.98934033800256,3.6761163722978,4.87869911158452,4.07481195594831,5.22774222867978,-1.51826796742774,1.26335175483048,4.07703519555634,4.46062152183051,4.8066677826529,4.66181444177377,4.87718964947595,-1.55439883465722,4.92363261817806,5.97800081464125,3.13980097813401,-6.12332407654267,-6.03049646527491,-6.9349236597523,8.40062674543164,-4.80454167907164,-1.72899714608773,-5.66520411610247,-4.90889110141568,-5.55441024433206,-5.33813238491812,-5.76015379741283,5.3628806318545,5.14192575092349,6.71167278961534,7.0513648165629,4.2916336858866,-4.14634073873919,-3.58516659214219,-8.59103669679705,-12.3223178448117,-25.2215692045162,-20.3272114047554,-28.4829398790338,-24.8365294897484,-37.8716362435344,-55.6566391143128,-52.6097257240741,2.23111282959741,4.26338169475319,4.68123880668778,2.92672447469441,5.11271330243232,4.64362206259408,5.1862207885965,5.00246751456543,3.88595631345142,5.07759432427529,4.8534248526357,0.487268562343481,2.37752578974335,3.05839520976023,4.41658414700545,5.10208185156752,4.72561823784478,1.03763576416302,0.540567982062794,-0.257288508290414,2.13659865361095,-3.91441418640343,-3.00761747432278,3.33057580286694,0,0.779767758235987,1.55189059543976,5.27820643822057,-3.51477216208675,3.83581226578631,4.77459243052033,4.32157086690073,6.01317855736194,3.22920703226671,4.7482258691197,0,0,4.36770474996087,4.53385072821426,5.30171294978544,5.60661630686065,-3.0233299089528,4.58513792997201,-0.339456162854825,5.55898213852201,6.07169935483756,4.37577968983118,1.73014607576844,3.16821065981617,0.268599456904285,3.56481889640946,4.09073428536369,-10.6194055263541,-3.71838783217133,0,2.76448436878686,0,-18.5285886046964,2.67179243390274,2.53342794005989,2.72330612145471,0,2.12980028350841,0,-0.2178357362514,-7.48502190251684,0,2.71832242853486,1.176285210002,-7.00234410272015,-16.3878590292887,0,1.87695978786677,1.90460425244112,0,4.85598339401115,-66.1868345522407,-9.35807540472096,-6.31173455883831,3.10265691946136,0,-24.1030592936396,0,-9.68448368080044,0,-23.85375706758,-1.78691100936875,2.59282599244022,-71.7931997450111,1.65359241341526,-43.1051108718696,-45.5995882185795,-30.7796903457326,-29.0093183849169,-46.663294799004,-41.4115669638932,-55.0407588107996,-25.8484660875966,-72.5154502684755,-56.1706790153664,-71.8588564848286,-24.61943514326,-35.4663506780513,-36.4087204547884,-33.3832407239987,-22.92680840485,-72.5650772548898,-59.0344976976176,-58.9300964177806,-18.0104086650934,-18.7203874655386,-15.0919552861333,-2.56854920290675,-3.19608644829158,6.02382629715184,5.78889840873798,5.79259983049487,5.62673710329362,5.50860321084574,5.79400753044054,3.71396383370404,5.43922427412936,5.01619679920832,4.48655450752091,4.30219507581493,2.39580101121643,4.24352977374927,-4.13698554985536,-3.29173552736874,-2.74274756467754,-1.24950196334957,0.291378449215031,-4.62561788694563,-5.41397298310128,-4.76475299611635,-2.00536687731709,0.115584921654656,-1.78514313596708,-17.6673434854213,-16.4861585242351,-19.5653080660262,-34.4823052249078,-44.9616645982086,-40.4913550163815,-68.2822312021475,3.25838531665293,5.23829701630686,4.39208854878036,3.93619325310592,0,4.01583473448319,2.845320706283,2.6804746973179,5.0270220751471,4.49659120213669,0,4.37602854471452,2.92775477590722,0,2.88672340477433,3.0838483656679,0,3.53898727826617,2.06178981126799,1.98989162880194,-6.97799479593299,-7.65189233548561,-8.5500840267241,-13.4824215665012,-12.1301791154439,-1.99388214028599,6.14979335157318,5.67033881921528,3.78683321076288,0,-69.2776080305042,-43.5945826673778,-23.4803976537427,-46.9318615376217,-14.4168609606952,-3.52641287894017,-4.64278217411336,-4.29318596573048,-3.16082885949578,-1.18878085204878,-1.92204023016444,-41.6001556335944,-35.0174877183687,-58.623205681563,0,3.84057016505791,2.3650783082948,2.98150943892985,0,0,1.76750538946367,1.88311271462265,-41.8412026743394,0,11.8956720670622,85.7449680846792,74.8095424396986,81.9235441242576,86.9422325618614,54.5699170839827,67.7776757951624,78.1197194270764,63.4697650606399,36.6430160453366,0,0,26.6164602384581,46.4758498456939,12.9668243373766,5.63332114954805,43.170982878769,-66.1528078793906,-56.179965949409,-44.4442229987653,84.0923718689071,-56.1770182882128,-33.1789365397535,2.68394845590795,16.6863138813889,-28.903055076375,5.93822575474716,7.01387621551572,6.8416610331903,17.1174166031215,-0.526528146079894,-2.85086706601733,-5.05974470772449,-20.7070464844481,5.83049520213926,1.5145109918267,-1.84895814302415,0,-2.00959768485696,5.7550617703486,3.66533435750371,-4.97796100622549,-2.32644974972737,-6.74577821420468,8.07286648473657,4.97051575982047,-6.28451866362292,-17.4451211147106,4.87430238444394,2.6345765033366,0,-2.05784280503868,-1.62087533371642,-1.77775352809522,-2.20705151107703,-3.18637560339418,1.48282415572008,35.1651100517006,24.8776120152719,-0.0167815534378489,0.507447209431511,1.80764368581725,3.19511449038137,-14.529576555864,5.14395696424402,5.4084923625975,5.19653522193434,4.82185298005957,3.8888609807403,4.51460383534195,-48.3720172087012,-2.38738663982149,-19.4517369986028,-60.8202132750967,-40.1030794676892,5.66562874539701,8.28715537075819,0,1.64648049349998,1.65033067500426,-31.6803685665167],"Archive1204_field2":[0,0,0,0,-260.426740238217,-385.798153335084,0,-400,0,-115.11519491296,-252.739022026072,-114.912836924356,-189.165049252328,0,0,-189.519276961345,-18.054888582292,-51.297716388594,0,-272.235951195869,-144.226575938826,-300,-348.215346495165,-287.271888980994,-375,-381.404209471581,0,-343.565723646548,0,-361.725881320605,-300,-375,-315.217072692446,-381.129309123315,-336.730846504882,-307.514804049692,-288.081967151,-393.75,-372.25892344124,-355.037279095957,-333.655066271182,-285.730570100415,-236.222549865456,-222.354284604475,-295.841881951898,-258.833908329054,-301.880852950045,-273.309376453378,-311.161462944403,-269.547622422707,-212.014456503979,-330.114346774372,-319.058857121707,-314.682317172698,-280.506178924484,-295.492134357574,-175,-275.708896131945,-295.170283769387,-260.090315249383,-271.878362776747,-295.296921169053,-283.763728355488,-207.608003215352,-93.75,-119.758550723743,-232.654289722809,-272.210782596333,-276.035423308557,-248.805586514722,-268.460836243377,-264.009307031506,-255.423326756372,-258.641150362605,-265.181107563913,-244.40777236369,-263.952048464383,-255.239457891206,-266.893827976364,-226.114646881378,-213.688497792879,-262.982084179964,-261.130356636264,-237.678644418354,-231.712249899114,-244.433250599678,-246.750886952741,-207.429535929038,-231.517666112007,-244.373388840405,-252.569099107154,-245.91274710888,-255.643617636665,-251.501156642696,-249.112071635919,-247.366562502587,-227.201384840096,-237.367800529297,-219.360921868008,-248.580937840229,-253.475311044033,-236.743119901924,-237.290630889596,-206.315702432631,-221.184591763964,-249.024455692161,-252.377348189302,-239.684242343824,-253.125472779353,-243.427942844854,-232.259748306254,-316.230208809551,-331.883284077975,-146.972142092669,0,-277.876389448106,-150.491871450863,-225.694094880756,-204.812501257096,-153.492420982609,-212.936535206631,-181.954155456658,-236.144295547349,-223.058850097587,0,-190.506032646065,-193.515032447114,-137.453555036037,-206.2861709071,-152.457756868714,-173.856895219957,-58.301590252334,-142.75663285681,-174.332909371356,-102.666515099027,-74.5676733814441,-165.598497697913,-129.512730906664,-191.257934833044,-200.345101333508,-67.7872461235469,-109.728120986406,-106.37993705723,-92.537902784221,-31.4029831467335,0,-38.6454240703368,0,-22.4111803786182,0,-15.6927659871064,-14.8058873071156,-34.0082942289105,-13.5626611148076,-20.4524542110382,-23.5767420435046,-45.5299185587948,-27.0317910222894,-32.2436670739237,-21.1755988633313,0,0,-14.7174336415579,-19.4191905085132,-25.3414753849044,-24.0631813051077,-18.4030841005727,-43.1100742819999,-32.1262410513467,-49.848266071781,-53.1686726283192,-11.521684301293,-36.6745112922682,-14.2869465752678,0,-16.5017235391279,-10.5922666222852,-20.3931312102032,0,-29.521003440488,-25.7876083180876,-20.8031954437382,-36.597073170679,-10.2897842163353,0,-8.60556417227147,0,-9.66091467873481,-10.530653129333,-14.5095434052412,-222.495914732719,-199.974472451774,-229.735446867048,-178.519050319125,-121.678858679977,-70.1602178429504,-84.4874792161472,-66.5227232166908,-71.3900856359593,-60.5067170397639,-100.193812730097,-50.0706744456777,-133.364558450723,-71.0410427505729,-47.0372968768097,-125.054937423992,-100.73992986185,-56.8536890744467,-153.453137840971,-42.9010131395647,-36.5090532397544,-76.015608479863,-163.882292223237,-25.2579435356469,-79.3390744875694,-29.1681578112897,-23.0544393311886,-36.4372042992768,-15.5050629639768,-34.4865651533351,-19.2397045808583,-18.7180689735096,-43.5965829926762,-15.1431267027562,-51.0135377706252,-57.2616837299141,-12.5589026893295,-10.1643624188962,-44.7797081673242,-35.0367413319967,-41.7063871741802,-46.8376057705726,-46.5762826996409,-66.1154120782847,-64.9432758818016,-12.8610407102072,-11.5915069575787,-10.6382422628496,-8.23198531770881,0,-32.6522220978218,0,-7.38714065752616,-216.849456110511,-223.595170444145,-216.57627286972,-234.086956679118,-238.185874971055,-216.012606383483,-193.489824230785,-190.924703244959,-207.396272574351,-106.390748200887,-129.949325272934,-63.2557281109233,-21.0657434000787,-54.412223316901,-63.2346653657912,-86.789516745081,-15.1353531966583,0,-229.474326155441,-226.438379967652,-192.254997995477,-233.144210938781,-223.601968828943,-215.881592716546,-224.617811086591,-203.067116665042,-212.357663401129,-168.130715286283,-206.320318628093,-188.904833145067,-186.884689297043,-200.820636811586,-206.975441166835,-201.12748474128,-185.257215225785,-187.637860076229,-169.626119155721,-184.719726509658,-195.510466935979,-208.016213029429,-207.300880576418,-211.150828389957,-186.884505809661,-140.789369997179,-116.317235429415,-100.74395827779,-162.014931261945,-21.7335819079093,-84.9609740629853,-75.7922834136286,-105.43114611714,-147.039779229071,-103.204485082706,-125.201795909542,-130.255037367585,-145.485543614637,-150.698867862609,-143.064376137004,-119.970382845972,-133.235256056886,-114.089163282554,-182.841442538979,-166.364466534501,-165.469743948846,-165.712071245831,-181.052838924344,-170.380803996158,-194.97809296684,-185.628220164429,-206.927579733097,-195.615831339833,-198.758612097639,-165.535664360751,-13.7012478917233,-11.5446234421056,-8.10684989254096,0,-218.202642969216,-237.074594271395,-239.239302475543,-234.607474074552,-240.794227534443,-243.664729502339,-244.387115716422,-247.6290750098,-248.894647143226,-235.948676817691,-243.245451424838,-240.886092997067,-244.544625670765,-240.098260167224,-246.696639038648,-243.17186247438,-249.815479980768,-245.519022481271,-254.19636067603,-253.798501640878,-258.811278084551,-227.626829215335,-153.346053456063,-195.699059940902,-181.438473347138,-97.5313231374203,-170.969563250422,-16.8584769627661,-28.1338437754037,-187.607707941283,-223.733103752908,-205.105241549933,-7.31027794995331,0,-6.19013608320965,0,-5.26804485614891,-4.96254464058949,0,-3.78904656347369,-3.73266080206127,0,-6.78166835815327,-3.24942408771476,0,0,0,-2.37060493917891,0,-3.03027866585051,-6.47919956326774,-5.03230912391138,-4.97256435848249,-1.97758406788012,0,-4.34944788236397,-2.36574733903947,-217.520271579659,-214.450764997425,-201.195351644122,-224.0559495269,-185.559925048089,-182.543488602899,-194.684039755501,-210.78351433316,-243.866570911916,-247.106978378168,-245.367275692437,-227.790269819986,-233.60880381295,-221.603209949959,-219.885157525517,-239.53485663774,-237.653000214483,-241.146423611021,-233.470664265301,-244.58522219445,-242.961720545089,-243.52495935884,-244.922295983476,-245.520713973361,-243.663638171985,-244.755571985455,-244.632529852261,-167.098392635864,-179.90955351712,-169.623387015786,-133.345321157984,-153.079694188917,-143.198723891759,-18.4393399413539,-11.691893151221,-29.3128629346587,-23.8701670673834,-25.0137011762257,-19.013260951116,-34.1716181599227,-7.28798330759995,-210.858209153504,-224.371757149474,-216.502940512574,-215.459506365331,-223.059615409825,-218.250703845646,-234.024016514204,-229.048407230979,-229.587104985266,-237.67416335674,-234.632267483306,-240.926382384807,-231.713160926456,-238.634010718796,-241.653383242972,-243.473948979832,-241.353437427854,-244.251559841315,-243.90022587289,-237.38835618389,-243.18889819902,-239.267741394637,-245.436103757856,-241.969262191913,-242.840492393148,-244.728781074438,-244.999187813622,-245.29214522424,-244.480704738741,-245.430517055274,-243.342392863853,-247.164019933318,-244.732689020299,-246.115953766678,-243.225515685477,-245.818340948303,-243.970616507286,-247.839496003667,-246.915736214904,-238.195574258863,-245.914833934772,-241.452761389,-239.457886207592,-240.065715737125,-249.783827059056,-244.075780191916,-247.880728311772,-240.82963875281,-245.936078165531,-249.373929271531,-252.774908112263,-252.415163010859,-250.500897212152,-248.682622970241,-248.20740264154,-249.365789129127,-238.638469518351,-234.380268709357,-243.891869080276,-252.301227195143,-246.97784837909,-234.042019614563,-236.506630544593,-249.596588325383,-247.687958901354,-241.407583271042,-241.623971075895,-219.064051606915,-245.912015030523,-212.209493460899,-227.308566712694,-230.239418100484,-222.083467748102,-182.534822025989,-167.9121100535,-143.962188901387,-169.387536026641,-173.450795799364,-198.384799516369,-140.05608671499,-184.666332649065,-185.419487655342,-181.130394359703,-156.295290441802,-166.968333142921,-143.749268017518,-157.020097151994,-162.957842883004,-89.3671928027742,-14.1796934434394,-13.7540207568476,-9.63292719894286,-11.4388300756847,-9.44538079263378,-11.7984240555291,-9.46365928803807,-15.8685698381754,-6.71634979241048,-8.09594677155601,-9.05849205094952,-6.46334187842441,-11.6893863972676,-11.0054167219103,-6.40124460990921,-5.54674331333058,-8.11646465792653,-241.086753857717,-231.87604778928,-256.213519380488,-248.003094307006,-251.337633530017,-254.135592394833,-250.12594681779,-250.573496927883,-252.603614825407,-247.346886080349,-256.732312959762,-252.722380842403,-254.926560887979,-257.37424995583,-234.529226770227,-222.536218131838,-235.887732081997,-239.113475442887,-231.455896195221,-228.241982916133,-233.907953324237,-256.464246490241,-244.996942545081,-228.362139911495,-214.921069101571,-212.984293801122,-205.89890301728,-197.708895601601,-195.771367158294,-128.264422021321,-130.190347304334,-102.873470352483,-108.179353521415,-120.771225072056,-119.105303464351,-71.1702131387365,-86.6462323849597,-88.3369547279361,-73.3544571709911,-76.5660227539939,-51.7396492053489,-62.9759125196554,-49.0597147584551,-58.5030809537654,-63.7430073732657,-153.740082493156,-116.391307519171,-93.564982234548,-112.344910720373,-98.2383303702674,-66.1505084494835,-122.618306935022,-142.957472471157,-128.816105896451,-167.070417794678,-128.774404979631,-179.447241845269,-75.6673001511863,-154.237308909656,-155.321007430411,-103.935971370492,-82.5136268747357,-101.634143219343,-121.006502169538,-85.0937671683064,-120.173251521785,-11.4791421572365,-19.2546501020967,-22.8245365070532,-24.0970743127214,-28.4695484708421,-25.0166375325949,-32.0806499005443,-17.4167311072996,-7.83736124994111,-3.16115951449833,-5.07329538842041,0,0,-3.16267995149531,-5.97702133691249,-5.35209191618941,-8.47653849389003,-9.75712127510199,-16.1089710950217,-5.88906097939748,-15.0439340575047,-254.122461380962,-255.700228340658,-253.556414075956,-257.41655521857,-258.835247683551,-257.616556074972,-261.60101313168,-248.181755094387,-241.710367730603,-245.773067456979,-244.104715737995,-246.685557676588,-236.798961329065,-243.377192916555,-238.330105125199,-240.96376349037,-238.657023088733,-233.815723332057,-230.388307787678,-224.448955552415,-236.140492552128,-230.663552340165,-240.555324778897,-232.128340780196,-236.748314714933,-223.481380416068,-242.258691040426,-228.477720864839,-246.684356124884,-231.391411085047,-216.113852221279,-224.628433161514,-219.671971936536,-248.678529651598,-244.755511331304,-245.199702544564,-228.361975179935,-222.814303905108,-229.128672578682,-215.451467173741,-222.073076905207,-205.943490900278,-228.441014561265,-211.143555170904,-229.567678733595,-206.579177286469,-187.97448327678,-220.183608839162,-235.117701142757,-195.119257990829,-181.104637665206,-201.655716567602,-195.299694901903,-201.603199767956,-209.954334432158,-241.671427404582,-159.241856577716,-239.859628899099,-167.488617321175,-140.064480597909,-234.895632290285,-246.321873507489,-221.727234186837,-250.07865568374,-252.153300311786,-227.360533197124,-216.515496549406,-235.699982181406,-233.719959153548,-246.542025316804,-244.131255181571,-250.788477049313,-252.562113086077,-249.615448289907,-242.439311033326,-258.284114547796,-253.649418277637,-238.379265737674,-135.852560720285,-113.170795129475,-92.4279497106074,-130.992488008711,-132.07926053873,-94.6306312169618,-72.4184153712132,-29.8014003435306,-3.51640560210061,0,-11.9537633155246,-260.587690873035,-241.238185410509,-221.074916448979,-210.307855613993,-249.728169788175,-250.475705311945,-255.44492650355,-247.312456213284,-226.895638111536,-201.173921590455,-237.421414209987,-223.41071146412,-227.472015357326,-214.647381756601,-219.254610573862,-256.413026056775,-251.196672810955,-254.364000222822,-209.992478238226,-193.887393906374,-205.011846305232,-194.910825497967,-207.956105738955,-224.84041828384,-113.868813613041,-110.044250069753,-76.9984545989253,-61.5823760828202,-76.0977540133528,-75.481081808561,-143.834342972607,-88.7347807651032,-110.702601152082,-119.759428749842,-81.2967211106445,-120.650264821923,-140.386341716895,-100.494972378234,-95.1980224673785,-88.4128873946602,-92.7268735078061,-68.1545017948312,-110.051502206267,-64.3910864690942,-126.782900814838,-134.404060215986,-120.088794114367,-75.9834671982764,-135.7871805471,-163.803283894962,-105.652001288536,-78.4527670791868,-58.4077113778195,-117.195015108127,-135.000315111255,-99.7393487730822,-122.254400251716,-108.63721433488,-111.446673764507,-83.780572396275,-69.4008764787921,0,-86.5227004596023,-56.2637740848838,-84.5654634686638,-69.7536706235863,-69.0465464648973,-54.978259097486,-67.0975533041441,-64.6435035033089,-54.5971210344565,-70.9991260764899,-88.1686539570497,-28.9256422909902,0,-3.89536474312896,-4.51829700366109,-8.28694051549978,-14.7101663306963,0,0,-9.49714136208829,-5.38770208985348,0,-10.47318409503,0,-4.7686609396471,-17.4623800081835,-9.98280164749929,-5.97292454740766,-14.2744368814849,-7.90027648926383,0,-19.055162452144,-6.9794373472772,0,-12.2960751059678,-12.3076979593345,-14.204253009758,-12.605930648603,-9.17456589491068,-260.008717463149,-262.808644461807,-265.516957493789,-266.3462885012,-207.479817825542,-216.711836066216,-200.03986205954,-203.786954410677,-214.240570884605,-253.564155141008,-255.106552050214,-257.856541569253,-259.708639262165,-260.297772885462,-264.787653465468,-261.50843329228,-262.148888138181,-263.397351473002,-266.469004010193,-263.318131581102,-263.48077789804,-211.23542992571,-201.884179326093,-235.847885193164,-241.275479365499,-225.789735261724,-160.3903878562,-215.603908706814,-233.339111546709,-227.168797414345,-242.639452345722,-213.852882684706,-240.086480328741,-233.003618747693,-248.629845802772,-212.72203264394,-247.078845677458,-257.494211876385,-222.001994021485,-251.040780144166,-204.305326265626,-232.712740776342,-260.666828570194,-211.014675133319,-187.78337699918,-201.162296387084,-193.876348926451,-202.441230962602,-215.876445321785,-214.897717805337,-224.076339999518,-233.85760717339,-244.35459017825,-254.991434178611,-259.166603092999,-257.344186195334,-266.1250984234,-270.164199803867,-264.550633120841,-168.604043643931,-56.4532507973641,-78.2684215407668,-29.21423146998,-45.0279717138905,0,-94.6699309007404,-96.7741643528456,-114.83878651104,-43.1344851365005,-21.2040973962041,-6.86394594370157,0,-261.036102800968,-263.752661232343,-269.512375639526,-249.651282724707,-252.623680407393,-249.104372786937,-242.343324644746,-256.864199989905,-253.837485789409,-257.829296349183,-249.554968555828,-261.177178684296,-272.416093821563,-211.581871930862,-230.023444894673,-179.904792409175,-179.345806995621,-169.627315065108,-181.243489625294,-221.751953513963,-191.959953134608,-245.790548841941,-267.442899998012,-279.073761540394,-273.513302821297,-273.723249696037,-278.884245557727,-275.291944314678,-280.339552732165,-274.225375637584,-289.455658998883,-276.93412033188,-287.199830524885,-284.207555109698,-284.311245630433,-287.261990412642,-285.9501729918,-295.608553552375,-295.010104696209,-291.063368352702,-297.415286865263,-271.529039569896,-276.979869863421,-282.359936065078,-283.139423021624,-153.416162749551,-163.489020046532,-184.519560560239,-62.7219231146858,-53.5792330651721,-43.3727128509853,-34.9865649628,-44.9442039207997,-44.0315015436809,-30.0331506868816,-41.5928988739445,-27.0104952834693,-40.4207753356909,-32.5858681578698,-21.0433546035685,-33.1185761897109,-27.0309661616148,-33.954513478607,-28.5773965214215,0,-19.3621164459321,-25.6413622301522,-33.4348593476102,-41.0245381321073,-36.2646386017288,-27.4328007367875,-17.9694238039139,-29.2765880680389,-46.3801352046307,-21.8504911973215,-22.638293235023,-19.8762781332278,-24.5277563231125,-24.0479681771259,-21.9986836934759,-15.6422388065065,-39.3728345135375,-53.5162171593923,-42.6809328009409,-25.6433195053234,-34.747236448368,-32.7560693360031,-39.5020825813233,-20.3008052644444,-32.1863097497274,-32.9939527072083,-105.868315146342,-36.1388690531832,-35.7197852932974,-39.795770202668,-41.7508835024015,-59.2304541713544,-54.0273474451076,-48.6537523079108,-49.2070468880421,-51.6171051406971,-69.405283931379,-43.3259054224954,-53.2352524072815,-79.1914992553063,-64.6372433797355,-72.0401880728487,-70.308562879468,-71.8602138499314,-103.620351103197,-91.2821657500965,-57.5203604892542,-87.3295833697677,-94.4547476294759,-54.8604411823913,-103.042510996013,-88.4991420390126,-80.7132497248351,-83.546926662708,-119.898147349569,-125.217841821075,-133.345882714575,-149.293131032642,-20.6360043871835,-27.8863355933842,-22.6055070356621,-21.2457023480627,-27.2927234605713,-33.7496340795293,-30.5523102742854,-26.1362524708134,-23.3823573720915,-17.9499744562925,0,-260.284347155095,-265.646724366469,-261.186298322947,-262.001324691453,-255.586036873477,-262.933143715362,-270.628847766285,-246.537493874716,-239.328401265973,-241.358626137909,-234.100736256336,-230.202216247783,-211.930559103852,-240.688549557746,-221.38354276047,-222.050184061314,-211.753750042172,-237.515076475379,-246.974055971491,-231.674903007324,-231.478288447711,-220.713085017982,-234.267975688128,-248.671112320561,-240.486832441209,-241.114682797229,-238.504094919946,-221.942141277288,-268.349462070875,-273.753936786939,-270.435974993949,-268.478756393054,-274.103438770043,-267.25875256364,-270.75532992541,-281.681502960586,-277.467532128345,-276.766965783212,-279.983247204763,-277.568208470157,-273.131979910375,-281.013311164303,-288.778364781219,-284.619282807897,-285.776891019729,-287.119235429464,-289.973810365748,-297.228919427059,-293.035797263439,-292.840771495064,-301.867097496754,-298.337062116926,-290.421503753451,-308.468340423234,-290.495377332359,-295.812999129688,-304.094895427405,-284.231009949864,-297.418291534518,-302.736964110838,-313.209745458668,-295.24403103342,-298.778145426092,-301.202140626333,-307.671302696301,-301.254060454023,-285.475105594771,-307.887284739107,-306.313638878914,-312.192208737325,-307.779224261334,-289.744403642128,-303.27698688777,-317.715862729376,-303.830873117907,-282.412385739749,-301.538889124368,-309.162267882563,-313.866769152299,-312.410827812473,-322.672330563269,-315.402269145593,-317.48117543923,-314.766733483797,-295.490283132085,-327.668125890455,-309.946216134157,-315.988205897368,-303.844940943373,-305.715103853852,-297.260230267791,-306.802202035543,-297.280054408038,-321.707421348606,-319.114458627246,-329.294510131888,-322.649180741711,-305.777681633251,-314.433561845408,-289.544575950597,-301.045774532804,-301.979229812578,-327.080640051065,-325.502284524298,-328.613964238646,-338.283429101675,-332.706470781185,-333.448834665961,-337.376837593994,-325.363497717756,-319.014117378312,-323.951288253711,-320.140114256682,-314.234310745107,-326.283327331529,-318.629136564368,-332.534360103092,-330.602513933191,-325.995002649371,-340.261235156002,-327.614698108947,-317.863532229565,-320.217227597642,-314.251316677896,-313.445904646452,-337.447220727213,-327.666296161844,-319.467561633054,-336.384009317371,-337.722020516728,-319.19210681018,-325.291715673767,-320.636389252714,-313.447908453319,-307.045137891712,-310.204016623131,-310.552659479729,-349.747569937792,-331.293370015066,-333.537749817453,-305.799825188272,-343.934732541017,-291.56308811027,-343.707714294604,-350.658129360307,-299.263046912325,-368.502838639023,-346.196958602579,-344.557263883258,-297.720884658595,-293.161470557904,-340.842180976815,-349.233287774928,-292.839361442775,-276.982273375766,-287.837060665023,-340.809549610107,-348.64109423598,-359.552380703392,-343.648273597483,-353.967042837391,-356.691551299454,-354.146717840612,-346.940525109872,-298.093700155771,-285.486733427606,-332.701615723219,-352.691211425723,-343.537114791245,-303.975309719252,-282.448850027685,-282.784871383578,-271.26746741286,-275.912237347499,-262.354421458299,-279.412036794564,-268.687496959793,-257.94189454596,-349.378042558194,-357.874414195032,-346.33433893273,-349.614487025959,-337.981633283938,-278.084435381813,-289.640944519511,-289.611643688652,-276.444921061118,-281.975727480074,-268.205800987184,-284.846412738093,-210.343028834121,-220.511852989316,-193.851445523561,-221.974302374916,-216.716633649712,-190.923845606467,-173.627502751345,-157.279172870952,-203.497725761435,-193.331245341832,-202.445224079337,-177.38088366518,-187.448290521084,-141.425010883212,-193.717794844907,-178.281674052013,-158.940550932113,-159.05615180607,-172.150950308562,-172.314439281985,-175.112737429089,-156.902341562705,-176.444376522126,-159.237653090634,-181.2372392654,-167.017978859989,-189.050228210783,0,-172.165832726628,-142.905874555206,-179.408919874039,-145.18590591693,-116.071417488125,-130.317531209367,-118.752996856158,-116.395544212444,-95.5929489583387,-98.5474889738886,-157.719649596093,-198.63446473481,-67.1539553700571,-193.674192344012,-82.3563917991577,-92.1688230440464,-71.9874877808855,-100.343535207409,-77.4307332017263,-118.654484380995,-88.9682096607816,-114.39825091628,-241.892397334369,-230.26625101406,-255.52841405577,-224.263111129982,-220.853407177444,-249.087387446411,-222.354867674915,-234.239279343048,-235.517934881621,-231.358386568359,-207.766526522499,-247.493770310911,-222.262172650142,-222.613244917885,-226.112094002872,-246.661059389104,-238.453681879292,-252.126529091757,-264.339304723475,-279.467003613916,-272.958279378312,-278.515099215814,-281.182965631485,-293.602498571855,-291.136437163926,-268.984301063475,-267.554113302922,-186.112623935443,-194.498526987072,-49.9914023845451,-49.0139668439371,-10.7262357840965,-18.8886609000288,-16.3351195932103,-17.1989441983582,-10.8061079960571,-20.6236407957433,0,-13.3061899977054,-14.295863500165,-7.78228592377511,-13.7685882775284,-10.8697114539429,-15.1906124788535,-11.6589390499544,-21.1212027614023,-18.6762624135425,-16.9628769416017,-23.5007507733832,0,-33.641520917275,-30.1701374616315,-18.259626011827,-26.6813769351385,-18.6894420777826,-12.5987807982137,-25.0471490557202,-15.5761387332717,-12.2801611973369,-14.103729024263,-9.87277026999626,-49.2367080331162,-42.9194243600767,-49.2838359592554,-23.1380798970761,-32.8542128710087,-34.9958373036844,-25.204631190647,-54.2834790930795,-22.7924535092836,0,-18.4764841214351,-55.8718621615312,0,-11.3578574262042,-12.3004768761361,0,-78.9214387982105,-42.90629492589,-17.6040049822847,0,-65.319515521273,-72.7751595347764,0,-9.71649021274411,-31.6100871692388,-40.9090541454636,-53.0861271610504,-26.6861382477582,-16.0122549728813,0,0,-10.0624004301434,0,0,0,-17.7061614178071,-49.3080211794757,-26.540487663861,-21.535431242853,-35.7523442905068,-36.2068683089485,-39.5315062329316,-136.349948117126,-106.033983806212,-91.6038136442502,-15.0855284598614,-9.32092427666069,-254.013034503094,-236.258121739146,-204.968635921672,-198.59845511768,-245.227986785638,-250.998607338012,-252.431251540146,-216.923472308102,-273.507979896662,-284.17107812633,-277.532545816663,-285.957636449274,-312.975808470885,-289.202917738354,-321.785880757572,-307.892879142049,-316.052282421572,-327.331006266722,-312.545695117161,-291.420671671197,-368.224428334971,-340.425385759199,-345.645392568074,-344.861467449076,-352.149326891332,-336.543650871042,-363.680595697676,-358.91294702244,-367.787108151693,-354.657931373022,-364.711951802626,-381.283756491555,-374.535913006509,-370.204413390742,-376.896174232706,-369.363779155725,-373.958843921703,-364.477957085541,-333.156527896244,-327.498735145493,-306.92457344474,-294.790265665307,-270.992019188697,-278.54255049429,-284.562018838938,-355.774654007501,-381.527232794391,-332.990063566085,-268.077216060873,-274.052489616949,-261.091867569989,-192.724351533934,-180.085686141728,-178.226205145824,-172.035306423527,-156.203487428651,-224.328815954662,-168.091505020808,-143.310201552698,-124.921339486117,-103.934185637482,-117.08437142338,-83.7334775290522,-69.7903454491291,-58.9117048085458,-43.85820957916,-58.289147041955,-49.3816235120535,-39.6755978612654,-40.480104932918,-32.8413801972807,-25.046172664779,-31.7538275622403,-17.9459304996718,-23.6728004552379,-35.4177390169358,-18.1478233205037,-21.7159698034475,-25.7787023689339,-48.1844268957702,-31.6098610472561,-44.0774303462219,-55.411997628478,-28.8548251498482,-19.1330366476794,-12.8476397787349,-42.6926817053537,-132.736607018881,-259.557989519104,-244.665924921015,-272.609072368682,-269.452319912663,-263.486666772809,-264.474225279113,-260.340151777686,-268.863646546275,-268.848827775546,-275.022602692789,-273.908062064203,-265.995508513382,-257.546865005268,-284.285121291066,-277.258020432097,-273.177938286113,-284.709162190634,-262.890764829802,-292.055733301393,-287.716092573238,-293.910114647681,-297.785613894921,-290.673765079413,-284.307980350789,-302.94405189954,-289.937830579315,-289.773265800103,-277.43426386021,-303.170382133226,-295.829341062105,-300.28179808632,-298.885146711218,-307.073648372315,-300.746953484489,-283.780520596438,-193.495324382272,-16.4927315256295,-14.6013167533679,-13.4583654491756,-9.36691604347432,0,0,-5.56387261440208,-6.36182906060411,-8.19813955926991,-8.05254383400296,0,-3.38463626214356,-4.39939712277447,-8.85223832605714,-39.7068510644295,-35.0877642073412,-46.5630642599397,-48.8457397266333,-24.9560099388321,0,-8.00989051131218,0,-7.14291918602481,-12.2291465804722,-90.4306327268851,-95.1026876596307,-108.0213498616,-80.9515963960676,-94.9829094054112,-113.145392280944,-83.8270252442468,-147.82578837221,-129.497803355703,-132.662909102394,-136.391335953407,-121.832478963248,-161.2334230211,-122.320286894535,-121.688026182992,-146.189227999082,-157.486172333076,-101.062469158573,-150.360893291696,-138.815791061318,-168.777607289775,-120.863452765489,-155.961484062659,-125.505241235518,-181.428794154793,-166.431042555295,-164.925759431871,0,-11.6767301381768,0,-61.9192809323894,-39.6309465120804,-14.3933518987507,-26.3833393247629,-41.6843814071659,-27.5132410632713,0,-24.3493680816995,-24.3883620892905,-26.0428885648553,-19.6392927720017,-14.6992264146553,0,-7.4556316655467,-17.9031863848564,0,-5.38358139116754,-5.64504690793648,-5.20519819528414,-212.877668660036,-215.656947096148,-202.254652765675,-206.012279328337,-184.159086123508,-196.840354847811,-191.257584036645,-190.213116685421,-176.258784491343,-168.934251790394,-197.348490321857,-225.738748352449,-232.083228957249,-230.147209234103,-235.138912585701,-248.448367979076,-274.340360536288,-281.11221640893,-275.876850640029,-269.228770592235,-260.397707654764,-266.764605701399,-263.407723066721,-256.090774238728,-253.857688912765,-256.207708062286,-247.047113623955,-247.53693508771,-264.665410863533,-249.518138590564,-271.076814539221,-260.036290462194,-265.949128772945,-264.226765392535,-257.977311539687,-252.822745388563,-241.116863395756,-245.752896702359,-246.598074164182,-257.553274820548,-232.326095542331,-324.093469348572,-314.850073924617,-327.622390889723,-318.018449429591,-310.436306371871,-307.766262514073,-306.530010101709,-304.049689313566,-288.708899897891,-297.558524181507,-285.116144528299,-299.343775242189,-289.69493417608,-271.07465968172,-315.561927192988,-331.502955480536,-326.621122634353,-351.625994136711,-384.579499320255,-375.758593788058,-368.99505148703,-369.681102061667,-359.148776183501,-363.71500960537,-372.289001623484,-365.954668264022,-370.782514964431,-353.469740721863,-346.86188536239,-358.571619517586,-359.761633730095,-335.278482072075,-348.223592443113,-354.862765830029,-351.675875280335,-351.108287332471,-352.996890369422,-346.09891327159,-333.258724730845,-343.250405357758,-336.324304578782,-342.930636819034,-319.28622714177,-330.809087426916,-344.878951055557,-328.285960698214,-327.123041401017,-335.415630756379,-319.116041700184,-327.043129719636,-315.379078841135,-322.876312081287,-324.254499521963,-346.830053975721,-297.220759274012,-350.583617080475,-367.789303805334,-356.61995101126,-361.740543577335,-363.670032157709,-365.114618237049,-363.683827059678,-371.883831393433,-364.101370612902,-362.352886569621,-371.825322666632,-384.68986637155,-372.09892233265,-374.600037175078,-379.960997556918,-381.630761445727,-383.213917383836,-378.249691129686,-377.813202927007,-368.575173895852,-373.609938410886,-378.522320680825,-374.747834460894,-383.390547853773,-379.141467474537,-376.067352734117,-376.931809966467,-368.129515695695,-269.955951681183,-269.081068452778,-181.507305879706,-173.962628147331,-140.460930870518,-151.169018116374,-111.946494829226,-103.173779036923,-139.068653258139,-132.581174114587,-148.612831407561,-157.664523413813,-141.611457777945,-169.030020810478,-139.424469087658,-32.7150151510987,0,-7.83540693645542,0,-24.0482558961056,-10.5950851129514,-19.2646430298063,-11.141717870065,-24.0214414357572,-47.2383576818801,-44.2973674738193,-33.1187701866653,-32.9068918780522,-37.7529897582341,0,-42.5749353931919,-65.3121300373009,-60.0832903564149,0,-49.4872598883951,-56.8937887383899,-48.9436437677966,-74.4939866257277,-60.6249972463202,-31.8648795733857,-36.5680055678979,-60.6900404577143,-50.1743043326658,-69.8499425037006,-21.9953126292924,-39.8932615602887,-148.681560588817,-142.101853247972,-139.283430493695,-107.685409851815,-122.936381299589,-112.29064401682,-121.185812063242,-104.349177540198,-89.6702915510874,-83.8393674636287,-251.65914984349,-260.389266293145,-279.18972371673,-17.7381757784285,0,0,-11.8057749418311,-14.0011242396478,-9.71084171652675,-10.8051498127615,-4.51762992741697,-8.89967682580358,-6.22418292679836,-41.5538632847487,-56.1509862929479,-22.7683424048241,-64.5666176555295,-68.9956064867922,-51.1729420570204,-55.6996274030008,-72.0841719995193,-85.2991461359542,-100.690246603957,-81.8007256378328,-58.1149157153227,-103.714397296766,-96.9049135582022,-116.164891837702,-74.4993118196718,-140.687052192908,-81.3530248419929,-133.574856341887,-120.283071761546,-111.314016704718,-83.7007790015738,-142.565984167579,-125.538572687419,-199.316019669662,-29.891467730107,-6.831573649668,-166.003184586683,-153.567996070682,-178.334438948342,-180.971327659421,-202.137481426192,-186.913024773419,-273.763235201699,-250.695206196148,-238.181207620632,-335.71065237715,-339.751553190322,-342.836461829802,-339.083865052985,-330.853349610978,-347.670674401405,-316.679042801553,-347.498096477855,-358.278263963617,-324.109752028739,-317.640149211608,-323.066154989839,-352.242240043308,-352.661502545498,-353.828883730506,-356.501569702029,-362.09171241183,-307.018966041062,-356.728522207351,-359.057891235767,-363.325842281664,-314.580547838209,-308.13885839476,-317.462163345226,-372.629351893783,-370.038091822727,-364.043037943159,-357.029539866216,-344.345499484048,-351.883212602471,-292.120786885942,-278.984677477758,-378.796286346452,-336.27820203695,-330.594668016793,-313.642671071011,-326.170984012631,-322.178879830888,-316.822899391447,-232.162503684654,-298.423276373483,-309.359702003905,-280.652966000447,-300.382810499492,-300.912028318726,-310.350854288638,-309.459263274491,-301.31777725094,-287.10490659062,-290.577141446589,-255.714328770904,-273.969273001247,-273.571656334435,-285.490951798514,-287.226232451097,-267.043449373816,-289.944961261749,-274.812457092273,-292.445729612903,-302.850168866661,-244.179854172153,-279.586505608384,-275.354144351683,-299.709207026461,-312.040414316952,-303.134451514532,-292.079220931374,-310.525191563327,-286.019161824041,-259.485252721961,-236.758861193132,-251.982526526406,-255.326977871933,-313.990718155584,-352.730119640692,-359.12257072187,-338.008197455437,-349.046073151908,-342.762023295498,-282.041186047677,-369.604589767741,-124.827474139617,-75.1470927050464,-67.7972827375763,-57.8692597399997,-133.679636123349,-142.771812046176,-75.2676215590728,-91.7863914556889,-106.860732333696,-97.9926659776511,-113.275718262529,-98.9939786084881,-255.136405849022,-250.980066740793,-235.730014943885,-264.620762744658,-206.158326534292,-219.433201526641,-187.347511563152,-230.925608240121,-201.328026672942,-230.993590961264,-205.517343738445,-168.004797267151,-243.301789746237,-192.092090448527,-187.849238048268,-185.973030853158,-153.2581489765,-174.475497862597,-186.241616325109,-194.070025372412,-205.362549506647,-173.338798073991,-167.543872819543,-192.293582593161,-213.4335379416,-216.764761656746,-131.08454004545,-152.690988049314,-147.226044728555,-129.191690321661,-115.19318510704,-146.344739363746,-128.090926358191,-93.5229351983071,-113.014689645403,-106.273646911522,-156.74628799381,-6.27215613249278,-16.4413075363391,-13.8719055969578,-10.0721490432979,-5.08342934990006,0,-3.95143970480572,0,-2.67135781395946,-9.77935317418728,-7.76544211385155,-11.1488908781692,0,0,-5.70583936709957,-6.09626466698079,-3.82365120810934,-32.0133626266814,-35.4696684493896,-58.2798467843676,-16.7582226764777,-42.5753731833603,-41.1579414907649,-49.4248198869981,-32.9308918460501,0,-29.3645773858378,-55.8103820283685,-137.400563344189,-153.606225500742,-151.676137950797,-186.880464814533,-171.627291118955,-191.338222927022,-159.393881051389,-186.689629151751,-211.441955722029,-150.963342759632,-134.186204234933,-170.561120791856,-186.312683845654,-88.4858721748386,-86.0167045509536,-61.8329636371471,-93.856595880949,-116.099902919221,-70.5291632475986,-111.32960076828,-76.8255041189033,-45.1746884770122,-44.4995388988139,-63.4291305209104,-79.5774027770507,-45.2978413054782,-23.6800747569996,0,-28.7717812044826,-65.6778507313763,-41.084957341938,-49.0772217482095,0,-24.5992257845215,0,-211.715784055324,-210.299673839512,-202.029490880239,-221.73948086324,-215.31990920716,-196.089439292058,-184.155719584059,-230.247868440268,-253.76217063188,-321.320894357353,-358.019206625043,-291.789000350368,-332.489245747365,-332.346986696958,-282.430780564519,-278.637273722416,-264.436909161703,-309.880026794041,-258.166506683947,-255.023103845692,-296.489040630931,-283.831613572139,-306.348387293856,-266.919388121614,-310.947107722517,-319.12937142421,-305.623473539436,-321.320283765513,-316.118157930474,-330.869896869919,-330.389498286537,-288.797996821033,-137.898791301022,-148.891814946488,-92.7969928834916,-80.2212961785457,-270.98168773637,-262.119749669657,-254.482814841239,-243.3651263523,-254.668657897533,-234.190314767448,-271.11332675624,-213.655427977599,-177.652005069661,-216.656579605081,-114.780596765032,-9.96627529697661,-6.17297050265283,0,0,-3.72966590278341,-7.60599019998748,-5.10057280374679,-2.36358003396913,0,-28.4723403216124,-41.3688462789563,-72.3003147158227,-65.5991932549619,-94.4924580376683,-49.8982213701383,-55.7714889401046,-37.3845887699227,-55.3912308533412,-52.6701316871996,-89.1350780826449,0,-61.92456397433,-22.4089374307104,-32.4396968623326,-37.2648161623383,-73.2172319056238,0,-19.9779344106544,-13.4550604494994,-18.4004836705072,-14.6929496840258,-26.4458537599516,-15.3134039440611,-11.3340480861806,-19.8857194513695,-20.7224353255503,0,-14.9570607929969,0,-10.4286774868771,0,-14.5917019298393,-61.8660016622612,-218.496158918856,-45.6704842612351,-61.8993918297042,-149.208503415259,-103.512340579566,-20.3424001381167,-24.3355770150077,0,-66.2940689744305,-47.8223780393583,-65.0069337735536,0,0,-35.011991543458,-104.241726638529,0,-86.435779931893,-101.421842577796,-136.205136243724,0,-226.940926125802,-205.137097858501,-200.36027541311,-235.723451389244,-244.651571184984,-222.82277098217,-208.982043157578,-252.351110184573,-236.953576658248,-221.723078523484,-221.123893454222,-204.447349062055,-226.305162560426,-182.545973877152,-251.96545491767,-207.951322643512,-189.705082456913,-170.000746134761,-237.250781339539,-199.974627243531,-159.543143616267,-160.731389101703,-247.702525830126,-237.897074882085,-175.752212091722,-263.083418590608,-233.116416961874,-213.379611400292,-261.447143160488,-300.718092556815,-292.282416053532,-283.100358762688,-268.369222550966,-277.254706527904,-325.279651299064,-324.689444317289,-334.676781517717,-306.334909694853,-343.000489466043,-334.113283543992,-314.729245055189,-306.646458583347,-322.07991701789,-321.14445213591,-346.300766332673,-334.754914715833,-339.010396793597,-270.638362616954,-269.848678642867,-260.942456930256,-241.627197105901,-188.250467290835,-198.717738827495,-221.654597588543,-211.923916439977,-224.083158155677,-193.819859242981,-126.519330596031,-141.380002715565,-174.06621148335,-167.151371781493,-170.026220732842,-161.75898998046,-179.486874958086,-131.806700207114,-199.34010144021,-229.084607354951,0,-191.311231851319,0,-211.812996883523,-60.9799611547745,-187.14569359025,-138.00554457464,-166.189844086099,-146.913757603914,-163.294405383907,-134.249372453585,-171.827469549528,-82.9733533087986,-205.380503197793,-115.852917541949,-90.4881664978965,-220.849730404281,-235.904631529954,-66.5642132565757,-249.024839099669,-240.959372119993,-241.352354162028,-106.703863963108,-103.633088448564,-85.0158123826093,0,-40.5760394794988,-306.140527351703,-285.818083455537,-268.580017482098,-267.256477145432,-302.402100285577,-336.996408367326,-333.843707214127,-126.206592650345,-158.669105228987,-132.011913875218,-163.221759961298,-102.017855643489,-213.359657910059,-246.572886713015,-130.669556386199,-6.28589627287941,-6.07796747673584,-4.95950439166479,0,0,-4.36161548831139,-6.11498134395007,-3.82454700732651,-7.88978851149988,-3.66850164814069,0,-2.12297245805026,-2.11243540409034,-13.0721072237438,-9.7894554901682,0,0,-8.39129160206385,-8.88090496369218,-8.00632156436557,-10.4652654520201,-36.0749150926964,-29.1463867988579,-233.829883517242,-134.310473732217,-130.053998279719,-84.2551057942618,-101.776435836955,-22.8520107267825,-71.9842683501897,-47.9656941633692,-66.9847110134244,-45.4325128544869,-95.2491482468487,-23.5868533929518,0,-23.0095832067855,-56.674866273612,-25.9460746796498,-50.7102557156383,-20.969496182852,-122.751432549837,-150.477210986505,-133.245906203035,-270.569585047926,-256.409137689256,-269.445722554115,-213.292149308096,-224.946894894346,-246.279491893785,-193.689274344526,-199.183258785877,-170.506203082661,-276.08515966043,-261.792457569194,-239.838203096859,-253.616845627752,-233.952456527557,-262.534595613148,-241.411251619261,-249.003004447136,-241.947988342012,-254.227670464888,-264.677913109909,-290.986209915683,-329.029522512652,-327.761415255487,-312.898333459752,-326.632440654023,-319.646039851827,-233.115993930291,-281.650131419669,-301.335277188371,-310.797587016707,-294.503524509367,-342.770916893786,-211.544763943098,-73.25468539933,0,-202.57780699585,-185.584568107307,-181.659187955889,-226.815350142055,-38.610508793146,-31.5401052896857,0,-112.703720287863,-24.3510255720756,-53.5462789414899,-278.164490230563,-264.385247342614,-134.90596074487,-113.616219008259,-88.584583826732,-113.500725016618,-87.588140494125,-176.210256813298,-156.370566551639,-92.4387982256456,-79.1653985951429,-68.5863383633891,-45.9573086648794,-58.1573710423771,-219.517058944575,-139.21551510384,-89.4611839485205,-166.818657311975,-7.57026384080801,-7.9244828887128,-10.054523482627,-242.718753672632,-88.5001829827542,-24.8009829922537,-113.657311380616,-133.274674856716,-114.700278876551,-106.38969642018,-94.2185231469011,-261.474900368443,-254.066344053736,-262.584790241033,-248.44197029403,-233.742160832872,-151.873829158744,-158.755804073614,-281.442970158008,-275.093916388218,-301.219150487887,-296.400669927219,-295.711122996873,-279.919628059065,-301.689439718514,-299.419269768654,-281.382239650525,-206.228853520522,-80.1984879575561,-45.3212618155838,-22.1912745975128,-72.6531218877175,-49.2961595912424,-72.3447036573037,-58.0938507125797,-34.9882383831239,-62.1475206251734,-57.265279053045,-200.87861821476,-178.965884656171,-170.601767695046,-151.7197517697,-136.714787745872,-136.254579961398,-191.334931507469,-181.050725148576,-197.667334553497,-174.901664827714,-212.152596956882,-217.292182635945,-154.807284988349,0,-156.219778891652,-162.762788723798,-105.47211094804,-193.078343405306,-134.39519988778,-128.256971193162,-97.4785324565668,-97.5632768570344,-125.817802347567,-98.6988592828556,0,0,-52.7976115288768,-57.3396982464587,-78.670281259688,-84.9645347787454,-146.558445685144,-50.1565953939502,-148.963328168678,-72.0193429473291,-83.0020875063399,-48.5468715795457,-121.104212089004,-66.5546615707492,-109.667449461206,-90.4750411824393,-56.1633908461991,-197.965338925277,-178.508428762378,0,-26.7189445029753,0,-165.212359641594,-27.4357092446642,-30.3294550947285,-26.4054637849597,0,-23.30858158589,0,-74.1256355839251,-144.014531601919,0,-26.9442069638581,-81.4361369794243,-122.815500902961,-189.13182672429,0,-20.9828210751218,-26.2562993803791,0,-54.6879530416326,-166.345356698467,-166.576030514509,-173.4033759908,-50.0012681662141,0,-127.50092660188,0,-110.931844445965,0,-154.457982642152,-50.8905026571193,-24.1601967895204,-203.416372431413,-29.508029384219,-207.520415936021,-172.651864467281,-182.84131224964,-203.634178440058,-247.908414939001,-226.988470470006,-228.237341395198,-233.418745598203,-219.162453819755,-206.184795788733,-259.41294277661,-214.699101111518,-235.895289095756,-262.729822152373,-247.983988769239,-252.255982895487,-246.978737914238,-249.396855024184,-267.117773627983,-215.444545869386,-233.519073603619,-242.115040308267,-226.058131385472,-234.089042599115,-105.871778625344,-111.608327950357,-98.0318451352934,-74.594878797888,-74.3360823902274,-81.5182888560704,-38.7769673251759,-64.6525752106412,-58.3224934340457,-50.1809532266101,-47.2064086583206,-21.7472838783283,-44.322457377445,-88.1297468702297,-129.040501164751,-116.593819682409,-117.06791029697,-142.033261533819,-64.5947445957874,-85.9141400178528,-139.172708421899,-179.934205010631,-196.929480985503,-174.552800119106,-298.742902459721,-287.958285691223,-278.337068806946,-285.696320177471,-303.737387121899,-312.243125091607,-291.650335531397,-219.313132326207,-222.302879073092,-205.691595029818,-32.6663793898049,0,-35.0002541835303,-19.5238350674472,-18.9331905912107,-61.2056105727457,-46.4043628632776,0,-46.7625662954689,-24.1703841922401,0,-25.5109563686926,-27.7955016839117,0,-34.420305866032,-19.6736957304075,-15.9632744551177,-230.213960113324,-219.839517954811,-207.910608211677,-217.093962951346,-226.327401877197,-193.869708714556,-100.364694578627,-117.340183016762,-45.1603724124489,0,-184.31938480087,-187.135203594174,-266.285917244158,-267.065815708508,-251.535902255445,-227.814787028766,-114.119792656843,-131.257538612611,-153.704796090685,-171.800727524593,-154.865079494113,-280.559340186928,-313.78604881245,-290.954800473052,0,-35.602552925606,-18.3618389149037,-22.1961112341467,0,0,-13.7553630543689,-15.7299526774218,-254.917143302506,-175,-327.357708575742,-228.48536071267,-270.375109705673,-238.023715232509,-174.784191824997,-81.6544982456572,-173.375169043161,-127.800881823634,-96.6987351811375,-51.7333411405856,0,0,-42.9475648250159,-99.8827961178658,-24.0865597176992,-18.1359434946661,-240.36946188299,-275.908333375459,-299.704721775082,-243.944933872873,-180.341217442784,-154.078451616267,-215.283334888871,-246.569596331254,-234.650359710963,-230.857202910217,-37.8635577140758,-19.8139377309975,-256.566871347935,-171.839116238392,-56.4555417312183,-51.0630373484182,-81.9807226528901,-154.461355049042,-269.709701258458,-332.008597449441,-2.8487940847984,0,-14.7558089265413,-362.09571772248,-359.069823717823,-385.514587393799,-381.992316138317,-381.809255945587,-164.893036832197,-59.6132598198495,-152.476215702732,-363.719490597509,-127.405482813651,-173.409483050469,0,-15.2773457617319,-12.9545174035919,-13.6140383802923,-19.8381788886903,-28.2169560829687,-178.688537715202,-269.809240321833,-258.63267639839,-33.4572195011209,-194.398742624818,-202.748872264493,-134.524763082999,-265.781974680185,-97.1672992486073,-77.074055262733,-74.774924883733,-97.020426931644,-246.839831048964,-146.329047773079,-112.450356685388,-34.8153342092717,-98.875456775773,-140.660451150259,-142.809603054716,-91.4330172728118,-221.687645480274,0,-10.9546376118558,-10.3293713102494,-271.436953574747],"Archive1204_field3":[397.369190651164,525.370925015171,500,500,383.002291407735,267.818854145992,332.520988536524,500,331.045703571296,279.27075599244,277.799351975774,279.73180982276,291.026025097789,357.034784433145,500,376.777242028556,336.917444608288,264.170388693501,500,485.91125652606,360.918299220081,500,508.926931788783,497.956725985491,500,507.288220559842,500,514.501185943735,500,512.218364654399,500,500,506.054206600124,511.706102533782,509.798661854888,502.735276078789,493.398531966449,500,508.406834094689,513.365048993816,504.812469135174,492.861909724065,450.932185975251,471.349631730609,498.345466982184,473.995327960497,501.8969225817,492.547810201882,507.37190444773,479.791059441598,437.693799388684,511.093340957588,506.147589683424,507.568517950962,489.143612636289,500.007781349015,500,488.933960519821,499.02110104621,472.378691322041,483.693822143535,499.901361627813,492.910985124417,485.410036431306,500,381.219164642652,459.082251584884,483.174014404098,485.781134893434,456.070515566591,477.38286467259,472.578796094521,461.665313930324,466.772119465803,475.070361898726,454.753604580497,474.03956457418,462.138783660077,477.011661725402,442.885638392625,407.044540143082,473.922871316611,469.675228807239,431.669722857539,435.29593972102,443.605395306747,448.086315140627,409.011825845423,427.810428420326,448.682502761464,457.935338102237,443.042726911687,463.104641041155,460.636432750166,448.928680192652,450.467026001064,415.731313419851,434.855538794626,412.265082226301,448.923681125878,464.834424591026,446.053109861096,442.166731953782,409.977499202795,422.242163559055,450.491881790239,457.60364868668,429.497274037654,458.35256096044,439.31581569128,418.442723622303,505.083792759329,505.363637392641,436.307880266737,500,485.750329942361,362.383790818616,435.935434014342,377.319726427152,348.691635241087,428.301614146799,386.526815876231,429.113435527524,387.295661292681,500,399.733823433512,417.607247832084,319.970858497829,439.664280168566,384.100303758067,367.866089625974,254.18473663208,337.570956235952,349.71624684678,315.565967503269,263.165033016866,346.266703542642,299.406764641548,378.652693733812,379.454490408509,298.708496861438,295.287105062847,303.194170232742,271.159486949328,231.91342902143,500,309.766180261482,500,249.907589388528,500,252.712487467861,283.205664210638,239.775021310195,252.373673510188,242.350593673206,241.61072393162,246.105956207462,266.434415632146,242.161375610063,266.4698870387,500,500,277.736704478253,279.309680169731,283.810815391985,279.724653638329,286.756608793405,262.330889363283,264.627806044871,250.991164352595,247.868513876756,296.429905465212,249.549768385421,294.443469608459,500,305.767282991691,290.331183447042,295.616681018466,354.697553145371,294.025249971115,291.732345367046,306.50517651858,277.520026712857,254.99283441428,500,283.650195769736,500,294.830719657109,330.542655619396,290.685525538385,407.608610226081,361.466222726475,407.239494529909,341.703460622721,295.852883237875,262.548010798682,265.102283000985,255.401607117565,258.562673486354,258.646776107779,273.216861213775,266.009906802189,293.262031183056,263.945561016009,282.136420690653,289.742538438626,271.39436456865,269.152342389205,315.83270546141,278.534666569531,292.464091877483,272.171853904084,317.900498892413,314.099960621462,268.332266838535,302.148484944039,311.186167806383,303.369512400315,326.871790297718,300.121653583992,325.609387329218,317.816200966289,292.469407281824,316.917013476615,295.264925497162,279.668957158166,309.098219526913,330.276935060348,295.993435763883,313.683893659944,303.792401324019,305.249948387247,302.259357732278,289.28767567628,280.815393999404,326.497808702011,342.792614966391,315.538191270387,299.266901088568,500,273.908407005619,500,295.53717607049,404.013183619949,396.500750098462,391.952457300894,419.37016911787,416.194095938613,381.887115712809,363.81397213926,353.327067400263,371.145336289255,275.842825195354,285.708321487142,272.100366554456,333.701952079361,287.297217771123,287.103712118721,277.310975639392,336.638385706542,500,413.483462218115,409.195756023241,364.041667279044,408.023789642993,393.362061619787,376.020166657157,399.554618944633,358.684071071582,361.956897908745,317.240666384023,357.338450721637,327.44933837086,332.740561079454,344.418893425679,344.220021868154,339.701680665919,316.049254209944,340.105783305945,327.58082824836,342.47424218768,361.307557599517,384.63099072748,390.526115896813,378.487106895866,338.591109574971,295.716556146778,279.307641151702,272.951002193175,308.800419092953,326.198275206999,274.661817511718,279.47823328128,276.802425129521,292.376026910577,275.293752683183,282.279978625614,283.808999856972,288.148452939424,292.758935993701,292.448383029594,280.397962844256,284.562123245688,280.311997751079,313.55900668469,307.839279072301,299.774943884376,295.485223594903,316.933666537466,301.253038176784,319.217044442393,312.680065214636,340.855087715506,325.505637615772,335.548912721711,304.398241131647,335.579151515958,336.14868851166,343.767829276597,357.640786922072,394.538881010643,421.314375359516,431.995190507925,420.279741814402,432.173572756278,434.442333867345,438.562312848671,446.087973143205,449.860213409182,418.363660680189,433.455885242479,429.308209483416,438.9815521662,424.099729066542,442.691633126812,427.050691061818,452.813579516888,437.383028288128,460.826692596797,458.132074162768,469.28226027172,386.992111801128,297.337176702625,355.321264891653,335.942096258315,272.100119692176,320.902809384428,339.11634448522,319.770067489735,320.812363994202,378.737666283104,354.222690268998,333.020360323943,500,324.858655205912,500,336.391380939509,332.235963549185,370.617359620524,383.717223029368,358.561702559115,500,364.772370522635,349.392949115597,500,391.534798947548,422.115367396284,368.812890667694,387.686442701897,380.640089595267,353.486242325154,373.012457036155,376.293019301129,388.77319939735,364.721671271356,366.617359723519,372.839925951571,388.779870259669,378.055132592058,354.839097832762,388.96301078699,330.621178621109,322.492511417048,335.045914115684,356.943204443209,431.942825929833,444.625372569365,437.758748032972,393.104691723498,402.672276449394,377.314968413952,366.98995515269,409.655458360173,409.831409949149,418.213092154801,394.194656621399,424.874008686107,416.53412288584,423.741873710169,432.046383991786,437.330711157013,426.337514130505,431.417817561903,425.588082144598,311.359134102843,320.79773341412,306.569214706396,288.298277778749,301.360940096897,298.274930874134,332.004068921025,351.251418281909,312.623944956281,326.300396467214,327.859917023954,340.423028137538,311.175021309787,365.470243316211,351.63863628645,369.168759242392,357.083845705456,345.296875730511,372.11471211987,354.720257460706,393.470357114069,368.806570313189,387.140038352517,411.174859437019,400.191796559004,410.87413860638,399.045355814208,408.70339005544,418.10711518289,419.053226513319,422.565294364176,408.125556427313,431.386994544158,416.198907656727,412.225474004273,397.632072650943,417.183753382734,404.642795333988,395.803589175575,420.781681157866,421.909253148218,412.162980031331,418.597315678322,416.641888102604,411.128713900217,410.674397204483,414.628171776865,411.472845416507,397.727931668703,403.742728211089,405.582255745033,391.250545002752,405.811535050013,395.745839078101,396.038018458133,403.844756213271,404.208030763835,377.537279503487,401.299292525863,386.872873044308,401.69950351716,386.217529192903,375.359187930294,396.812329572901,388.4123941608,395.63838898012,391.553287049479,384.355089400345,405.982548514101,402.888619684051,389.04623649227,371.932813602899,379.202730251219,377.449430529654,407.410244218418,384.153125873563,358.296501705699,379.237735260867,367.133593270703,368.967865440887,360.190545333406,374.792183755316,441.905892840236,356.754557275659,380.430931408724,377.858254890993,364.588712110702,317.123306154963,302.340181013772,289.630130959755,298.758960144183,303.718998646784,322.30203288828,286.566268834535,310.526520355974,305.577939817351,305.094940291746,290.437069329086,295.451951588622,287.191627663026,294.191035442812,315.833014196167,268.774544014529,343.706510072251,347.933751891276,357.649349823817,353.928740953704,358.888987963975,352.56099123222,354.770525786231,345.451755431552,355.802168132593,352.898198064047,356.587837673936,361.964483889043,350.723732986528,353.384746138264,369.209202533777,370.301825065812,362.432730259437,425.967672926956,404.644884644173,388.461642882599,407.077416170222,398.427356076398,392.934591048643,391.477827710288,397.619483895773,392.804030782201,396.5650722837,384.829770667491,385.005844737009,389.578017599161,387.328979271765,378.574956539981,347.326355718422,392.975188962447,403.248696912145,383.583902391219,372.707460539653,362.348060592124,362.715772213823,368.159910536285,332.899367479762,354.350978494571,343.628656174979,337.832227637737,329.867634227917,323.221713796029,283.620510261379,283.74190045436,281.995744660876,280.054322787657,282.16077725216,282.743137454927,289.465188035455,279.430517934434,282.18293547798,294.166386699878,289.83914057261,305.299018301292,297.020080222412,303.108810275776,297.86402077724,288.449934870392,290.95479925812,280.032037343479,273.501821223318,280.325844365352,272.298630605779,271.147310237614,285.525755361783,303.982670523962,302.19800318175,333.074762833501,295.486025748323,355.74634527444,259.192178296029,325.683873816443,337.192494861086,277.741991269989,265.729854262968,278.477410336392,305.667227245105,278.952844377376,312.985091936703,348.336097971838,339.350588645739,333.881554308942,334.077018004118,324.274280232408,331.2761234907,322.366946290086,341.274638400213,362.851562946411,358.889346572993,358.964875313664,358.493987242852,354.688144649806,355.868766167017,351.7667933879,353.326638086653,353.319204694141,351.053324212685,344.766292053521,350.786255355346,346.565073162138,391.356417985746,385.955975894689,382.886898910491,377.744724064605,383.792126753094,381.525597190333,376.702527023513,401.730527386096,375.122305305512,400.46921547026,391.256698345604,388.035788179749,380.584510047058,383.977914475621,375.824097442342,389.204280392884,390.370258257967,380.082186718745,350.331433311252,359.054350016701,364.342965274692,367.555296900324,358.516039328644,363.301595121525,358.085196069079,349.508302045838,368.469946345462,335.169939237668,380.105792268375,345.439033470718,325.454812214719,337.603961730259,336.718999465496,370.477933016272,366.760965156712,356.904720491521,361.170851871712,354.795719817474,356.680961723179,339.806192593755,337.46970310313,329.723874695475,350.009088722567,327.39997464249,344.8829710518,335.139145670044,306.115262784004,327.772191117625,348.334462449927,315.452849074333,305.083441268826,318.605933147181,306.382821733452,315.014000209249,319.417472380648,345.063352489886,290.925159900872,350.078708397095,295.055423975207,285.625913770151,338.097851913622,357.824544174031,316.221900706736,351.43145737764,365.90669364113,326.440156233019,317.955835947592,328.02892009103,330.887660752357,351.661577723576,340.839869798815,358.575012691178,339.110083616101,342.954091126616,330.562424789393,352.62221276629,350.406920960658,368.785922777544,288.045073391125,277.647508916048,276.068899788622,283.995398493676,284.601751107873,285.239839907872,285.334898790562,328.510700513532,351.726150353883,355.410103303699,349.110674400622,370.152045340271,398.091239204256,357.559438870157,332.679993103578,384.902259255452,378.408966014095,377.120445358281,374.923743142155,350.434731807178,314.862821571417,344.753761074705,360.860388745973,337.062964828205,328.0083323336,337.893417325353,370.22274347343,371.250060918725,374.058258812083,315.09181213838,297.879530151613,306.872638483327,302.247828171819,304.74665313281,307.228833827909,277.942461016366,277.47964338299,280.390192468182,283.597186363265,276.223765250574,272.893907002096,286.421861761875,285.212674365676,284.138412422117,285.251620428273,294.642957030086,284.389721182072,285.76230799489,287.328841195785,292.054135431723,289.349353058614,291.571352113844,299.576141824287,287.262351031209,304.776164993672,285.663039268515,285.894071580574,286.559008098352,298.174796278643,285.672942423266,289.110854001567,291.138408216326,298.616819791853,306.700931922691,288.071228570854,286.54718193995,291.93604574556,287.955050881604,291.399199463673,290.131196548332,298.669530794551,300.824010828674,343.572396546513,296.997542209538,310.239481577938,297.082339239037,303.160887772809,303.926648144472,310.562891765391,303.865388765235,305.692791683229,310.754999838627,303.169224460013,297.206765215372,328.539482390761,361.381158404095,351.975553560734,349.667917203009,350.636308290343,344.140688334918,344.428064888873,350.30413066366,346.826440830451,348.393893577926,353.650082066163,346.868151194187,356.678959564756,348.093061961909,340.844533025906,348.088436528967,346.12417779287,338.353852648928,343.004227614751,346.856991057346,338.032015878969,343.371272737441,348.662421073286,335.410086261379,341.924933038176,342.458021993262,348.488434764816,351.15064028765,375.51842606098,372.111414479572,364.635656062878,373.411453993149,332.782234209459,345.333176650908,320.492104180833,320.926430077419,333.374274321943,364.863719010646,382.596595553583,379.573921352765,382.043215291667,370.451144600098,375.724757580822,376.101741508332,379.660961954099,378.217798342271,368.385530051231,371.320464524341,364.017998100946,323.842304186222,311.063857036466,348.395760536577,353.690666862395,318.463155155344,288.679267618968,313.280945349231,318.638202787175,317.039537106761,316.678051610284,305.354066685554,320.915664404071,310.216479305068,327.927343254372,293.789604322628,332.116010877298,323.499395542829,301.401077957203,322.908037786589,294.715368775119,300.873016808308,337.808328496765,295.825272948845,287.059672247884,290.625873143658,285.386609703608,289.175526710115,289.597952340016,291.742785766021,298.507222132154,306.159937159823,311.027209062376,335.142699665451,344.939306956334,329.871316908568,333.502086009648,349.985932672587,353.052587291515,293.37150420792,304.428838228918,293.416309752891,326.258157536581,316.409048360188,336.066394183351,295.587076825244,294.3880225006,290.743460848377,312.751896706329,338.340170326604,341.106374822631,334.203181307246,363.209675529284,358.970245280076,357.855690666322,364.401773377817,372.204031764978,355.164290036505,345.154966271302,355.167906433666,358.020066788604,364.805997252159,344.883350245364,380.432848886728,356.465540228748,313.224952246789,329.898953238361,295.603405413801,297.683532896949,289.636838294065,294.711240768176,308.630399320311,292.966312620353,299.778653933554,341.379898451734,341.447479961385,343.962318915341,335.705086457182,353.021045077091,350.20998575951,347.260977149592,356.355966650044,339.50752921314,360.255163383023,348.150749914809,342.351599022584,331.42307410959,344.53297468461,337.139918687629,340.312243155435,329.840157038,334.403349953294,334.750561752235,363.656930036774,357.740043267798,353.701190226394,349.458718544829,288.054460244763,290.085714189183,298.865496464503,299.557528700582,308.035423452698,317.113671671195,323.332977368431,314.391666731406,316.269432757514,328.942996156038,315.408200624182,332.001453982858,314.175401539466,325.278989014334,338.412981043227,322.646271483273,328.551668668123,319.898962740743,328.457027779184,354.441132000961,340.479196049149,333.109270667739,313.237511719248,311.5937238621,313.74334923894,330.986354875065,342.581657117159,322.415594941759,298.559036072849,336.595989400974,336.729087597807,338.088019511291,325.188118090154,331.528690983335,335.821795148763,346.692653147781,319.300325199264,311.153442053135,318.121058242787,331.379846343254,323.954953443521,325.094035811928,319.909495721394,333.454958803618,326.571176426337,320.089488663196,292.587021615048,319.622191804837,322.269732671042,318.938124641375,316.396614182156,303.619253033739,304.676151240842,311.287447822242,312.125648934809,309.966902279254,300.25329306193,311.174571591101,304.196610060213,288.65288573615,297.361823322767,295.794212449467,289.468124861763,298.210236135603,284.505621137467,282.350199266537,297.597502284203,287.26415062878,288.941577703897,297.150756922651,283.060717886259,289.324246970667,295.171775149021,295.819694073777,282.34808932756,283.928803045356,284.314074476341,289.167918638336,338.450055269871,330.239216257655,336.078990165852,336.573747689432,331.237146863106,324.934756314952,327.874719223401,332.567789710082,335.664056502878,341.886104704622,342.993320386534,360.690098951892,355.179273416162,354.405222815096,342.03981753038,343.795269699788,348.94254357006,347.709140397139,346.587347849835,329.531826577535,337.643027445371,328.026261517601,317.188461515145,302.538294045694,317.402469120817,310.626527684543,305.58687872797,306.695396082659,320.651969605747,332.894436884316,310.91402557871,301.944928561104,299.198453351366,308.349586660184,314.914854798375,309.706150876085,301.058204572728,303.544025732086,291.994111334904,361.878042308987,364.192273667418,364.911502354272,370.194176936847,360.23449340939,372.628517277439,368.745142341442,355.585140802401,359.403398764762,361.649593037633,351.382061462928,356.011161657911,366.018928484807,357.197586127099,349.227505429559,353.262914012728,351.825742031069,348.58942773515,346.92593823138,340.957836106325,345.078600339866,344.374275100894,333.483928239637,339.084831269741,339.077993670247,331.329891877055,342.808457394498,337.391809979808,334.533440138261,344.886162350646,327.89644065084,336.097940899029,324.79836222471,333.873951936714,339.184689073476,334.997761287475,329.787906671759,330.354128753443,330.165384225156,325.695498415656,332.516214430424,328.113745517032,326.359955038713,333.525788477608,330.61600472116,323.293896467815,325.2204774424,337.549279772312,327.314458599122,328.35708423991,326.788356078856,327.587407989564,319.659430557537,323.346425552432,324.104528385163,316.598513183567,318.721814551232,314.043344343874,321.713170923905,320.269035689858,315.28652138909,320.148179022782,320.532119986792,317.711723764115,324.08857622853,318.925521027947,320.685059152323,312.23565380271,316.134303941583,322.67596412449,318.895441480726,325.565662172835,320.103315770995,310.61741766636,316.223403747083,316.19861912619,315.128994869754,307.071095164659,311.659064026048,310.619813306699,307.470106242046,307.688558136949,318.305397129244,310.266132437933,314.990222610963,312.451324076682,312.421118430774,254.724744087251,309.097556111673,307.058699181573,311.450190602919,305.112731993037,301.376930694003,254.833812377528,312.424205863093,306.296059817885,312.076978998431,303.771499754147,305.171250686621,306.943290439971,300.163672059788,302.939130997728,308.449777177103,299.494442839842,303.859938616378,296.50427031463,309.105105502184,316.437093502491,307.802374080665,294.883154547874,306.429155625458,300.454543999737,301.754534184133,300.164153879519,307.074106281714,297.50326135403,297.696397005438,310.130026046545,264.912125147959,301.075995538013,302.647949240489,303.20419783804,314.441669807431,290.887991919467,298.160992138166,290.076686304369,308.577119419266,320.774924508817,295.07180424217,299.507065417981,290.541510986987,303.017082289937,295.085199679654,290.467051330599,294.058610762393,295.50619436758,296.790909861622,310.451998269576,294.906667705581,288.281263138951,300.640919579646,292.483564438606,295.032250043013,315.779450305572,317.572854770055,314.772876676282,303.583320520419,323.822438893403,310.626510841844,310.924763824115,292.869444570573,288.823471011895,290.675902281822,284.029631390346,305.560710201695,300.782528623585,300.359839097653,294.310293573555,284.510666544341,290.088918394919,287.667699795694,304.57729279855,315.83278933631,326.594667246038,300.735455025937,323.367186170964,314.549047274539,305.931718243952,296.246177629879,288.782831968419,299.528877057573,295.521048784712,296.242361065342,290.617384788667,289.379504708729,286.028293511693,289.847982101551,286.492908031547,286.160141646245,284.610230241985,286.606359799724,285.323392268192,288.031024835004,285.436605472983,284.343761869571,287.075695129573,290.668802166495,287.721347813299,285.986847873103,292.67738274604,282.345157226395,285.954674084026,283.429033929651,286.210397654415,288.707582970875,286.542975963712,286.268259113871,287.863449798733,292.486760952924,292.759762496029,284.011986787859,282.911043042762,304.516383583263,283.674969235104,297.800667463728,296.043386912944,300.992087351997,293.080348325311,300.612135144507,288.861631433071,296.277228983277,289.42823300733,302.99573295206,294.797781264741,312.215852645341,294.728726797947,286.820489681807,310.431956449214,289.59984725111,292.241729183918,285.716144132717,287.679285381953,280.011880271819,294.275669769299,283.186417834183,278.092160577904,281.51441263725,283.74729698262,283.338732648427,290.940717722067,346.129904858195,334.935818703345,322.761357446368,328.761458280263,319.724047374004,339.301002069609,343.728475380803,362.760598657595,368.573090934496,302.197398610578,306.689690435172,312.714562644246,305.04143056751,345.228186187763,341.439889906342,345.157018216882,341.9476476973,353.505947449049,334.367056376082,500,350.096823904698,346.270573241116,362.643310919809,336.208573872588,355.32382359863,340.008944297703,350.340494066673,319.499349408084,329.83589765353,326.968818429828,321.732526551504,500,296.224209847512,312.381929864166,307.322545155757,310.380552088965,316.190357655054,322.494796889019,301.390826534106,316.923366985242,303.145646565174,328.74384858969,336.916830772675,313.923603181223,316.672428542811,312.799190810398,327.016421756182,323.019856424222,320.461430213837,328.181683620426,309.653772110408,325.193666030181,343.146551262466,333.91449135221,309.354547417978,337.748843447547,330.385639072926,332.811819152417,351.13584444576,300.899388301398,314.400859577046,323.407374027676,347.003747035411,304.512832751729,301.580829241275,291.431190127228,338.464752411635,316.174717842505,313.699462660481,307.706419993038,319.903633677608,319.949195847095,309.660070030372,329.454194639352,325.092365463924,319.014176434153,327.369214913936,328.010425418793,316.783079858528,314.159875059206,330.274325221647,336.394721251278,324.018178684038,323.692309095793,320.405916810213,286.766911441885,278.843919253612,284.013917707181,344.882922395363,334.52452839863,348.391819954002,336.022489043701,294.762476397934,296.957258333418,336.704646127464,340.777505982263,335.229188625843,293.491514350154,364.413856346717,348.293707872081,346.556684160326,340.262365172267,322.65345531868,330.764193261559,320.519956353026,312.821672312372,299.263484682289,303.382909461206,301.22659951482,326.902269695944,264.776478299408,298.497363163866,290.063749495521,293.90577698589,290.404930933616,293.851855089242,280.968000330249,285.885720116658,282.388090814903,283.521759248484,283.056874387662,266.961224367355,273.707202086282,278.830232783603,274.316874768715,276.680069029347,270.361297287006,275.085722813323,298.627520046761,284.595498534265,297.220308175469,279.308352050876,331.461640851339,331.217614225188,324.821845336334,292.64503010697,267.119416260688,308.301855569108,299.998120453314,294.202993817722,290.890384239837,302.337979036946,294.70851818278,290.974335518416,290.415640648919,286.810338805326,320.710554488602,292.277151717541,285.798406065212,285.081345788674,288.069948312792,290.072211753962,296.775527437247,301.257813092635,307.233583594202,317.076854680626,308.069859497123,312.8786589022,319.90361624569,318.909243003839,325.615075897103,332.410104174532,325.300899575757,336.439758404821,332.017117173388,323.590926968051,334.547123862689,331.565198543522,330.221185841344,314.275194482568,323.080339215389,316.936262451397,310.549320498323,326.175203995329,332.533498361634,329.575768000473,317.267148471591,287.267366695465,305.937138110854,289.984442148247,293.430082285668,327.823480206725,325.695300248161,318.48029226036,311.553991970488,313.524342089229,301.927754857027,317.944923491854,310.157271019659,306.00001488857,298.787575602074,305.7836063447,306.023337050332,298.593594586383,313.619939150186,294.253628229217,311.616360859324,319.637890752726,302.411025433888,314.234121920325,306.104443815677,298.789341255688,315.780794838217,289.557993429231,295.488586013265,288.225575814531,296.341968221263,294.191581449442,289.202313347749,299.859882124824,302.336623853356,305.278985831347,325.927171028188,310.396843800216,341.780366709322,341.879295711467,345.509688112266,357.542666033128,358.100662695571,371.547831216988,355.504261575258,360.830498996817,356.432788782991,353.527581936648,362.097941965232,357.686613842805,368.592988115123,361.799943263346,301.009397723133,301.143797397324,286.328182289546,292.590473867256,279.083480280277,338.412230431778,334.068438368282,341.498508283417,337.154159928392,340.731387405888,296.652568774332,294.984751445404,291.429702062191,299.813172912109,294.877733411597,291.040058857478,297.228562106325,285.429138651001,287.713932229777,287.285466632128,286.443907939068,289.246016681992,285.847926887381,288.991639606147,288.475383993768,286.171377932435,286.371125301525,292.336957755506,283.7886816872,285.663970668334,283.81753196767,287.462844767618,283.786741734583,287.366236296766,282.155821238705,282.503599101116,281.163295010748,338.320031116989,327.692480562776,350.811727594804,305.418023785585,310.999956339996,314.911392929632,313.751894503889,307.548418702148,311.652970160273,318.342404146652,307.970182285112,333.938162790776,332.131450727496,336.533333158911,340.382018130681,351.230672190685,345.576037061383,336.346394245939,353.693567217043,345.85353715691,345.392803264513,347.893631199054,300.42476595015,299.173833606917,295.783164851894,291.993397565489,287.288444938848,290.507346687555,287.083709564812,289.894193593917,286.933250892645,285.455362823177,299.517201699504,296.192931145513,296.870106320939,290.290047723447,294.900037653788,299.895507614375,351.166772000358,343.199389427898,338.535157439277,338.746778434789,327.656051130883,343.457337895399,335.549997622074,331.313059144804,323.295506230496,318.462706252745,319.490065444277,326.196899994739,323.991236535681,309.73050165167,324.399414288147,317.087178893181,318.945848984109,312.361727112167,305.479410467503,297.652227970975,292.32043589718,288.105546833549,291.817389669155,294.917879210916,285.577238815862,296.544869368006,290.461749320547,290.536344381801,294.547488745335,295.485968445612,290.895800199796,281.934153546026,285.842412334331,280.726761285088,281.042658813878,272.857247725896,275.917994708159,276.784180446984,274.143397920622,303.697576341735,297.796017060974,291.649029300078,287.771709535604,267.884707546779,266.045682532621,274.745153774394,269.854382198239,270.6656065958,272.109890003645,265.225081464296,267.567692149588,267.020796044481,277.448193983867,260.071330431104,262.546845677245,265.201273736414,270.675450907332,269.530987076053,268.796131596864,264.655341098926,273.809978450579,261.430517142399,262.486929537077,257.494409515085,266.385856320377,259.947912598117,273.409900621139,258.585909269823,278.777464873423,278.217079839961,258.459838148567,263.079628495962,275.320807683038,272.035965218023,274.802861151535,278.505849224186,277.920637008299,284.424968586187,283.592223577703,285.628042897197,296.99776766759,282.782219498932,292.945418649829,288.196691103227,286.072634827406,285.67342066137,280.509441682074,279.402946373508,285.993401042392,283.907242228059,276.881389362521,267.907796856616,279.254708233955,275.771327575041,270.61038121125,269.541259257069,267.203665111589,269.313558883731,274.244399485136,281.677570114339,277.204536408068,271.464657160562,272.083657875994,267.330186375082,268.887595069794,266.120300113387,268.299284641166,272.144199533292,305.9409257316,295.816134930651,290.325027391388,287.635142418777,286.22774385829,286.937297882132,285.880395503107,285.922245802134,285.485564775563,285.645067315202,286.51616484076,287.469958559926,285.989143871027,290.668987285437,286.105035602449,325.673609538005,345.001712276863,331.780347125807,333.096609238219,324.717820158505,328.428704468754,320.636695298402,327.407250978408,322.427848840197,312.125017763069,315.471452900849,317.419868501832,320.282341913072,319.325434340248,308.921710043839,314.91560743474,304.819333096288,307.565774440442,321.679085891958,313.009634367109,308.635049105817,313.782933514273,301.969480477762,307.731406669585,314.604454085578,315.027234167009,305.18721613219,309.560873855129,302.67001152813,328.478562805088,319.563207195888,285.853738879978,286.518497048058,286.376117351274,292.406641659191,289.114596690049,290.983172581159,289.427563462258,292.994885168272,297.118827928477,298.722918040577,300.287041450065,287.352111358401,293.255241450819,342.670020328969,355.891604145206,354.870756660564,351.225694898206,347.900940386819,351.261697713546,348.919833917633,351.961367429398,352.800997052712,371.694026124819,281.942574597661,281.690555221545,294.141444460433,303.294145688159,299.967259624784,307.44806693895,304.40864391388,300.238716628888,295.838969823175,291.55604303068,295.615798994404,301.026325797559,288.662143797286,291.384173094189,287.575289978,294.694348712389,283.549413747833,294.337354376234,283.034366774721,285.917249787335,285.786314951073,297.783216247141,286.338263179108,288.184014004333,285.737549572835,315.742519655695,341.64044258877,284.8123683744,284.507300313276,285.468817145498,284.453466873482,304.72482273403,295.557756947229,343.846180531411,305.805677495494,277.594754112817,287.4241373345,277.520977295822,286.187084802281,282.335427928691,279.819660942782,279.523504816089,279.055227220103,260.138106536176,277.256547788758,281.195294904028,284.749846542401,275.838272264002,269.48875433548,280.150519175281,275.819706061407,282.429403065065,271.93133608344,271.377481475358,271.778385741338,262.808295074389,267.167452563222,274.629340649768,276.347902075533,270.129831453397,265.202952840346,268.046347358823,263.473633232388,265.301218284811,264.966507189651,263.299844410923,285.427369418145,282.457873099295,266.717788634799,263.833839423123,267.03225239692,265.287836685797,270.181699067963,265.492723361859,261.802679289767,249.626781586322,257.559173666943,259.077876072357,251.148538397981,252.770071593933,261.245601259659,255.952758973829,253.714044108249,254.291040605702,252.640201387354,255.044686460054,251.992346346777,256.805262960964,253.560325296056,256.533359210546,259.045878015861,260.260097194216,263.711711331413,258.918654165205,261.750113001017,265.226909808215,256.503316451146,261.506940786015,264.942843082683,271.120872963933,268.233391862662,268.433729705285,266.98585857348,272.522817430503,269.474558150993,257.748779277324,259.659323220481,258.914768601261,262.328123375789,288.526873343739,281.534577391301,279.106342231848,282.41629391341,286.391893094443,287.814128009782,279.937637006859,276.436805730789,287.588628450169,301.840275095798,304.676398301143,308.896008032466,287.143263364819,285.925944584112,301.020946817045,295.847342117865,292.453173763228,293.749420015197,290.12635689357,294.714196721195,288.630915656549,281.195043158621,278.45330224478,283.936024105438,273.500949792192,275.327382081738,276.758890289385,272.952135599642,275.278386500891,275.388109182418,277.204123416128,275.26950648983,277.392461577487,278.450249395229,274.435902633603,280.672124954406,280.561316790264,276.204290433272,271.030314237409,279.823162452507,281.89892903854,279.609833326522,278.199505948889,272.379222350631,270.248851175932,283.842075749389,281.341206753722,278.019146663563,280.101864863498,278.611925419947,286.106522086338,277.251784139061,283.165315768235,288.265538884841,284.655579799599,283.387945625004,274.247538687915,349.05929728945,343.92612650696,345.947923994217,348.718447854463,350.006785937315,353.765123223262,353.605342646804,357.527355897196,354.802045436278,355.278628282486,362.391358687201,345.476140236829,500,500,355.828181847264,366.261979462507,381.134561581405,291.23971475421,278.700709286337,269.128917389737,298.996292212407,308.43266006576,305.040212180502,300.901194590017,304.758907632191,304.020656583121,301.098311407125,303.208022844829,284.947298158812,282.768353605748,281.476823390939,277.999397096108,279.631232266849,280.784961895201,278.419606076415,279.084237924606,280.539874155613,280.466752040516,281.435403600034,278.487280744551,276.038257724286,290.46452375687,287.538834827342,294.863587995321,287.853382937787,282.409953913339,291.43134194013,284.534342090714,292.084244913804,292.785900565904,296.662064255972,290.677432300044,284.48848116669,294.753882412835,295.351540801272,305.401611607449,297.046272662879,288.253278899833,288.853219025994,289.720957713303,298.501117560738,292.221812842087,303.489456829757,289.27750431228,286.016761196701,288.06278742653,289.263304788955,284.204345399792,283.556480317631,283.34169601138,280.408358400878,283.195165903548,288.731370400679,284.534120310681,269.572406022742,271.372826045591,275.881453383031,286.916230262572,278.499430461964,276.659934324332,262.57398102064,250.154178835912,254.212920225095,274.82401619718,273.580619444024,280.091871173508,262.403955753592,292.292615031779,293.152816068079,287.520267630347,288.372294668063,284.31173200665,283.003159134391,287.589751726467,284.816144139379,285.716922390009,283.482028585998,295.945046997807,297.187538545468,282.785758829291,279.446191083273,275.358613323805,274.355983384752,271.152463797702,270.487617005107,288.753288151178,279.059731769858,278.396213305768,272.198828918089,275.759170932762,347.300587843109,349.024133647092,359.285993204506,356.691414340585,351.26412083065,351.062093133423,377.427568332019,365.500506915836,389.687858346509,289.292669538117,256.642625053503,263.111520740688,257.819296270596,270.021745325364,257.748932480656,253.287028284101,243.927666636154,247.87734472904,247.702253255092,265.479417894271,500,252.633006690963,249.448309187248,228.60875986099,239.408436879017,267.972677015399,500,290.388073192138,288.16182315505,280.911454406831,284.75935879374,264.234171858831,275.906846003485,265.484738311647,270.024896152681,246.03348353078,500,235.741392084867,500,301.753389001569,500,264.636727092513,298.904296137145,264.91361989483,299.590655111557,296.769722478082,277.396399980475,282.389180226926,291.898465385347,288.219606881857,288.309076838216,282.053934111645,285.612039234786,285.133812425583,286.310325303628,288.560600768429,283.77149737024,278.063147868995,291.046179372104,281.694380753938,281.018901726003,276.483621040557,299.164254748798,286.447321994426,281.351401569552,282.492332323202,283.924148002969,283.628238164977,281.24594719865,276.947143316796,288.081189499792,279.803929677687,276.355940609736,271.40859106354,274.564544705676,274.233448035095,273.07712912628,274.72870118485,272.527142307169,274.370676512469,275.424406160981,273.513648930723,270.949963527232,274.49902201502,277.236501345342,276.974480686771,268.261665518393,271.43634206627,280.15070539614,270.409928281912,268.184159848987,287.204742328719,272.744095734411,272.654412304787,269.283278222931,268.494303788181,263.611365862926,272.503426866512,268.198527026578,266.781677890046,262.803592998455,269.407176762556,257.460955409606,266.358713626003,267.520314553835,261.253302444647,264.832384092454,273.833622595599,261.681250580442,273.73377749968,251.703751923831,250.49557897976,250.779332806619,250.363938565964,249.782568848126,250.933926657674,249.978008645698,249.499545584551,251.931702830103,250.208268519289,266.464044550257,255.368626416552,252.190395464468,251.970524313908,254.610682504657,255.573112542491,252.863692783058,263.529303120345,252.619990182356,250.906703256364,333.159328087863,255.769658898366,388.789651918455,253.592004811192,270.512403074816,254.376693838609,260.267157745227,257.226573667956,257.796955071897,260.479179079175,258.117051602652,258.321215374224,271.088941321937,258.354715352588,263.466513465139,269.70707151389,255.327333384094,253.24748963299,278.672332643093,252.893618390891,251.837587793563,254.73112508856,264.758577944332,271.576357128498,270.928079679515,299.278352334915,278.624338859104,275.43394199857,277.569339583003,272.846873565897,268.034061075519,282.805044554842,286.995931615539,291.359170949343,288.174541213379,283.375086583305,284.844983238348,281.25423999769,291.338678962434,265.924669551444,272.096289410719,276.197475336207,370.822978095203,364.748368978554,342.748715865423,500,500,344.208298997278,315.022598982718,354.289035549073,324.909847126025,391.418116629264,384.132778687556,388.782086289504,394.535486662342,298.731501556832,290.691303861485,500,500,309.992984482498,286.784696642741,298.447447604079,312.232302645175,253.304527808208,239.376432013673,262.60230803818,280.249790373401,278.904906808428,286.111512167213,284.306063845256,284.079577273887,278.0085856836,280.9817803383,280.138500381776,279.052925956559,277.252706403132,281.738525727093,284.715741862741,281.626673563879,276.153672876298,280.582444980527,276.852752383965,286.705429256214,276.692628653259,273.177710600938,273.536869223436,278.628140206374,280.928738300973,284.62432403541,269.972308771443,266.534186771728,265.803802569704,269.126469046696,266.7390330567,269.87695179769,272.560443997234,270.020037308645,266.851917462934,266.790831699786,263.105596326476,264.332117199361,264.878665348292,263.475618843746,259.740048596777,261.710007903207,259.275898946408,262.915186555582,264.241737440124,258.776413309185,257.52134119965,255.995923907179,256.370817307487,249.288845127695,251.077969780535,252.569512871372,254.777633164697,255.803923685771,261.231703087886,251.329405975337,283.780764308118,438.869529492224,256.807564048722,259.042389502673,261.890557925185,256.979843083348,280.931860295721,284.082054513879,310.360019642022,263.08506397283,281.5269154085,276.280238048791,269.892068878423,265.07378551646,285.187013971568,288.547388400876,293.755299707793,287.484712753505,292.09311544796,281.416429138093,281.379001018057,294.348372006233,298.73347933438,301.528119853257,308.015713603583,302.778922998973,268.085779853593,275.992748969636,282.703627065756,268.950937271693,344.249886940645,330.727934003051,328.61648046313,261.330330655387,272.666018687393,281.479887750052,275.443531485341,270.317290402974,273.556021549155,272.01887388836,275.447305796707,274.440002049398,270.37269624172,269.710760363007,263.794795508889,264.454441183723,271.320919311092,268.461461910546,276.036817186329,265.841229389564,264.296323926658,266.060942377495,261.150409234061,258.98422662995,259.087526174952,254.060561456746,252.903706164315,262.689860250474,298.887513278887,310.141248575899,313.222701344061,298.087673866071,302.042601212669,296.451233340064,301.31594073803,308.11775858188,296.379100185196,304.089424364968,268.827518222461,269.600557511385,271.940086753466,272.600940317236,273.607647117666,270.451549487926,266.855408918314,264.067712087316,264.172154600894,266.413197837071,261.096093615067,263.68564755244,266.944540553771,289.416636897773,262.607963798172,263.930956037429,271.43718786975,259.858929581149,266.58094233616,269.425893032687,269.119865977112,275.524081197626,265.701686025656,270.153748034362,288.720587768659,287.113908768352,279.911200153183,277.277064530224,274.923058491237,275.839952714126,260.137540306859,283.654193098172,261.233250850594,279.265414119568,280.033563695455,282.203501943253,264.556259248131,276.186490500738,263.164707656169,269.181470012265,277.275366854752,256.335884407637,259.254589614064,291.799033371952,282.798803164801,315.570072952342,254.283425580775,281.39182136209,281.67039671487,285.228746149712,288.036053176982,283.018886860462,287.780034091012,276.952651718411,258.501839003584,301.843604677545,286.886263323378,273.066738379021,259.70084408764,253.931915560113,297.343363858449,288.323213844207,291.029923585552,290.906251237197,285.571572920545,252.718402032256,256.179256772257,257.47671536916,278.991624423446,301.017039952617,258.891498627756,296.627167703649,264.395602718794,374.655654268381,254.244960187549,284.057157280756,290.244602184705,249.07429806535,294.028909134103,250.38335071465,250.798533559131,252.296566556458,251.719912395078,251.413380233615,250.906151262478,249.859851023165,253.691695370332,249.057988968804,249.529886564136,249.790885709694,252.76062671237,252.090620345064,253.994646777967,253.494928605894,255.605590643914,249.449442104124,250.199512203658,251.028138176355,254.507098740555,255.222495999891,257.23696222426,266.6587317134,268.307928993161,278.816486940514,280.038425889077,283.347980886601,289.09828882935,286.994805623372,282.196508840999,294.160375963275,286.908167813041,291.050858589193,295.145537001035,290.996563213989,293.354185141816,289.402456440376,271.221922899053,265.688703259654,266.320450505495,264.292904948152,261.910845512484,275.827294384005,274.921050639817,271.300688357582,267.545334376554,264.908672933185,265.798509749125,269.139603340094,266.044227244223,261.190091878114,257.144359115233,257.154647655629,260.155973263917,251.789999879401,263.180020965219,261.266540414166,260.534665606084,312.360148903751,329.452470490656,309.912644816535,315.863321730451,318.490111661905,298.03353104259,300.525666772943,317.705866195542,297.945433094156,305.676619790747,305.024518123054,303.319376889912,300.230843112003,311.348271215093,296.675391157123,295.694158711429,301.697187432578,260.976088329671,258.809230302586,257.542065336792,255.879951128921,257.024130083668,261.542881647632,276.811255409896,273.425580109553,280.202306319209,298.092191577421,249.696367990518,250.69758640287,257.390600657632,252.688530173812,258.832462546825,264.953907168657,269.199375408863,268.445074918252,266.7425014537,264.241008773166,263.729685013353,254.924719778023,262.680250724781,252.656730372489,330.317444599214,306.267988499149,308.630818323862,310.157758003844,320.511062955565,317.107039816712,306.623430739032,299.168204197882,252.660048300941,500,511.775682543296,464.833216842352,487.809729401694,464.681665543733,416.730322598398,313.02260489912,446.384849774296,361.208631460656,307.648250651677,256.139401348238,500,500,286.652806977492,401.957177593076,243.561670920783,224.197864954903,490.655270792883,484.945989510894,500.408792612281,445.675912660355,400.474560808231,322.785582651246,374.098527261524,410.457879801438,390.896229258611,407.36535590351,314.134685332049,340.346053372718,371.032267116084,295.858786106249,290.900526255628,297.442008416832,282.548539202928,291.280962728302,353.268394941689,311.624035485205,361.94678547802,319.382273737214,311.046222888859,287.070520439981,290.47290417571,267.676015561373,269.911150724438,269.450694226685,287.276298656555,307.134905022703,286.088108252124,277.300069117461,280.529403139485,273.361791562965,314.892681912368,308.010003750019,305.986386206638,303.321921773365,300.353906341218,303.887711608179,280.829627819213,254.86168122048,255.865908655588,271.767205646691,276.624110651813,278.353798026688,283.472475323356,261.478685440322,288.979728052287,292.402332457158,290.859669436921,291.060292949907,271.66663353155,270.911031645952,266.287540428945,323.226194609811,266.117531023375,256.13970784263,256.325986404122,286.906604751355,258.949014018337,318.986150166697,315.008494812211,318.793228093311,255.959085359816]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1205.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1205.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1205.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1205_field1":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.49681498585172e-17,1.29058191141078e-17,4.80122087199262e-18,5.80158873726504e-18,5.29335361709545e-18,5.7080186017116e-18,1.13093223389403e-17,6.906167061775e-18,1.06309316428379e-17,1.09106196143666e-17,4.3449551727392e-18,5.15649411237281e-18,1.1839295769009e-17,1.10049803554371e-17,3.39884257823279e-18,5.96168687039419e-18,3.26140177883357e-18,5.36186650826406e-18,8.11665730835224e-18,8.12275042275359e-18,4.91749712121343e-18,8.39720045705909e-18,2.18613301536686e-18,4.16366762448045e-18,7.65806078662443e-18,6.90910262446123e-18,1.21965688612077e-18,4.5669128244271e-18,5.77521503914714e-19,3.79621308871256e-18,3.48842966173937e-18,3.65091203201509e-18,1.98373246687167e-18,3.57075355338457e-18,-4.65901693344104e-19,2.53262869240515e-18,8.92941341725485e-19,6.19625696112267e-19,1.24222729253554e-18,-1.53012267309171e-18,1.48803859439013e-18,-1.49565261277832e-18,-6.97513397188613e-19,-1.63146643946613e-18,-1.96869849655699e-18,-1.74371404533057e-18,-2.50606361713056e-18,-3.18844596358351e-18,-3.3611234317429e-19,-5.16267364506592e-18,-2.98234568789774e-18,-4.7343678638639e-18,-4.11691679194569e-18,-1.48758625802298e-18,-7.12083603369327e-18,-4.36715286030401e-18,-6.36449159505314e-18,-4.3676631979373e-18,-2.54215697837249e-18,-8.92971206750048e-18,-5.39198192036445e-18,-8.14319428275771e-18,-4.79229086155369e-18,-3.44279273609343e-18,-1.03374146664002e-17,-6.09256123442276e-18,-1.00103641599321e-17,-5.10423877689491e-18,-4.1504047889137e-18,-1.16599050716271e-17,-6.77329480124791e-18,-1.05988389552973e-17,-5.36464640175857e-18,-5.04547249482937e-18,-1.17087501709254e-17,-7.0319823573806e-18,-1.15173621840253e-17,-5.37189625655691e-18,-5.32640155516117e-18,-1.197339092428e-17,-7.41092962454468e-18,-1.15135728664821e-17,-4.77946956236064e-18,-5.7156404565903e-18,-1.14956632900018e-17,-6.94539223504165e-18,-1.10912382510993e-17,-4.39482776168905e-18,-5.81445093653861e-18,-1.0571811225638e-17,-6.34546426646449e-18,-1.05622272125758e-17,-3.93612720762937e-18,-5.67211486560397e-18,-9.1720274731669e-18,-5.68263683655858e-18,-9.13842190683526e-18,-2.76099828772355e-18,-5.10349308288495e-18,-7.61944271921319e-18,-4.60766286879349e-18,-7.81372216803927e-18,-1.63397471410229e-18,-4.22707986625131e-18,-5.87541227910578e-18,-3.41556094388277e-18,-5.84470611779881e-18,-7.16694678549464e-19,-3.57752824442193e-18,-3.45196094107298e-18,-2.10658982715875e-18,-3.76891296168339e-18,3.78353981498779e-19,-2.63461374684016e-18,-1.09578907736963e-18,-8.95820763271716e-19,-6.7845442617061e-19,-6.56349820266584e-19,3.36288877840503e-19,3.81783342743651e-20,2.09836180210134e-18,-1.31322406142304e-18,2.58960807454494e-18,-3.93153742615813e-20,3.28632659683102e-18,2.80977388845153e-18,3.25721320547202e-18,4.61983520979489e-19,5.12174593888925e-18,4.85991620967627e-18,3.43943032205106e-18,5.33702852440679e-18,4.3907841075388e-18,1.79604852155712e-18,7.50032038000129e-18,7.27692509830666e-18,4.74647579633907e-18,7.73538426739894e-18,5.03498553654453e-18,2.82442233434886e-18,1.03831955179739e-17,1.00544300327017e-17,4.89800685882467e-18,3.82967041742157e-18,5.72713465768349e-18,3.69559833774349e-18,1.21852660903231e-17,1.15706028205942e-17,5.13391813503098e-18,4.8833126355507e-18,5.7708663055291e-18,4.46397236004428e-18,1.33831724150288e-17,1.14052360092606e-17,1.00172212929971e-17,8.02269736349882e-18,-59.0825729491168,-3.43995936842875,-1.95078551985771,-90.3639216577458,-36.558211215607,-73.5779974111428,28.3299350751561,1.14079650760247,26.554109788744,-1.05908742845701,-35.4260097654474,-2.88232091062042,-135.147301201395,-81.0210204201814,-123.015479760054,67.2902329513686,4.23827726413785,11.2867192360552,69.9239456900306,-32.1979975891048,-5.69400105164195,-111.749187437449,-167.078968155102,126.314433938625,80.7389283808521,113.698488580766,-246.112684916542,-6.2350844057959,-268.122719589052,-141.688455966751,-238.458315643293,133.279260421454,10.6010963721108,101.939627672731,178.800862118517,174.062229839948,99.4463616663613,-10.419262274661,-142.161301401029,-158.223344242289,177.434648080666,134.393210963514,311.651281057121,184.210838749549,-223.695400448364,-8.61725882354636,-289.163656775665,-192.012356845305,-177.964137380335,169.12426542121,14.6731361605131,177.902256992056,232.198624078457,232.669812830401,-9.53141278308834,-213.290812441683,-174.790584435059,7.43426842427744,207.074020067901,358.830519896534,203.964670090826,-235.578035228023,-3.89927937339376,-198.783143392127,-144.458390757445,225.81848732924,12.9031884125633,254.853357796262,-281.937980815478,-10.4719164735347,-242.931622901634,-193.826971472934,-100.896596054157,203.311806316639,149.734950385898,357.925166024349,204.115028124554,245.131322919755,-7.68053599956778,-193.274430977856,-117.436590585929,142.226381308827,132.575609879787,321.448226655389,182.493430866375,324.067403910331,-177.54104835821,-8.75074799159287,-175.820110372991,-164.113526006616,-159.00960970867,81.3230311480704,6.8695642537686,164.152706219687,145.513080978604,304.441592219309,-8.05893250617542,-116.684271100469,-72.8579555774638,55.5394316257068,5.98366165765948,138.552327766459,99.173535672749,-114.674121083957,-5.1182563725795,-73.1244994919667,-105.10653962757,-36.7103211189019,19.2081373988449,9.90982022720491,106.190691172207,45.9793636014741,-3.70440715157974,-69.5079265579771,57.4430813660957,27.7473005468972,-20.9329413470296,-1.79174816983197,-8.81203954439507,-0.52553100630394,-1.48171955707615,-4.00720983522365,2.26263286628521,-0.593783057052773,-3.34825226197834,0.994026811175074,-4.70884196554958,2.52060361732807,31.0706216459241,137.47788595132,1.80131388408962,-3.7856174678117,3.24043773034875,-9.8127660518921,5.09407475792966,47.1121941322423,216.448815368245,2.61646793651625,-3.55219081019189,3.74332062744491,-2.15638678433266,-6.48337297764404,39.6005989417023,250.986970925132,7.61304804173059,-7.55857332284113,37.4082246747301,224.770796322426,2.6857026535387,-3.95589423768783,2.20767707008687,40.7402762692558,194.530100880851,2.07688810518616,-3.34452949952863,1.23825490083273,4.33544670004799,-5.32637324029779,1.1524818939676,3.45932240682619,-0.515661663553539,0.158601619115936,0.497503416957617,2.41454234133964,11.5596869329462,6.21800805306178,20.0546119650624,11.640698186816,48.5798115699752,12.8907470983894,23.1518697982257,13.9490994500441,20.0474793649994,12.3494099337831,-0.0151158799619764,-0.353826252419588,11.6833414798012,15.1352101896059,20.8692505819769,21.5012003426584,32.8339631685565,22.939893814529,20.0367561590271,18.1587429800817,3.21803325434986,-1.55244421249422,11.2161176365052,18.4862241033721,32.6960230888894,19.7550061262592,26.5560170540258,29.1517365480641,20.252178357531,24.4933001924714,17.4750616292509,11.438179436465,19.213033840776,20.0533607284475,20.2807726184873,22.3205661847356,22.1551649768216,18.5503770921815,13.1408675982883,12.8379792796291,21.9321891032117,19.9306146004634,20.9085922976544,27.1895571245649,19.7216072219582,24.6500621208892,17.0895858574749,8.87935623923357,16.6760175153007,16.887736888606,9.29720459584079,9.75247742113862,13.2810913114877,17.9465053227695,24.8138034302786,17.1863622631606,16.617033680844,22.0603126378089,16.1791601086946,-0.823138861615267,-6.2265728795961,4.19971675765171,47.2840293786641,31.519844951505,22.2159106834463,21.3683459542978,23.3307523080066,23.207931260481,25.6367931460704,23.1453292417428,18.1852970686335,271.117487327332,2.6598955266574,147.70222625947,308.570639012131,28.8108209228324,26.0489711049289,20.5831087880682,19.1484383058948,19.3337809947194,28.9224224332439,17.0699197295391,23.0557786542833,14.1035467130328,12.1864213178468,15.7579379350093,15.1563105304822,18.6808501311656,18.1615587798932,18.3017169454658,15.7338951167504,17.8848954767483,16.7652769793462,12.3375346103164,14.0233313475203,12.8759829121771,14.4368675785527,12.7551269072078,14.3614894234015,16.4472545887686,12.0874719927881,15.1251823426096,14.5911457251655,13.4203246956635,13.205998959673,11.637546515456,-1.02612538985079,-3.62156975093011,6.01938485101837,13.7359847023062,9.31806015801889,18.4561858198623,17.0750736978429,20.4256459289767,23.9324420301067,14.1623274913066,13.9864990705962,12.9856380990292,10.5795208277567,11.8270696762926,11.6631857303349,11.1286994754907,14.9574686726722,1.94348192539248,-1.42891159299885,-2.70572316025779,-2.67970853140448,-1.52624879694222,-5.36274130784852,-2.81015134459248,-1.72775880064143,0.54079744812858,-0.490023461229947,0.358789637268337,-0.458079941650873,0.497637940039086,-1.43072124225179,2.3558839473261,1.82763316252149,-0.394159381971475,11.1054254665017,14.4876936131399,11.3622646164583,10.6835063633075,19.0776269014415,16.837229173477,13.1841092639646,13.8803534958363,13.2280985915854,13.644926409386,15.0401212303771,15.7994036821923,9.42544434995117,16.3215185654291,13.0198571242209,23.0082656195284,12.7908487181296,13.7625962799957,18.557088032933,10.3460310658521,34.7907938621945,11.349576657697,11.6072107704221,11.494539475768,12.423667308895,10.1689388614105,9.13861392130041,9.66174644541107,8.27409413200191,10.7079197942603,9.01471761144949,8.67823396333074,8.68659200215902,6.51064696571364,7.49023810502681,7.83381408742936,8.14741855554246,7.21273099683637,5.38626317368414,8.26862920841808,9.66363261366149,10.0492210072578,10.1124592256831,12.016907106547,8.92581855855623,9.3111273142854,8.38733991480162,6.51792839837215,6.11399283844497,5.59540349152554,12.1226223751052,10.7850636196752,6.88862829496014,6.94807620313993,5.27760655268094,6.14464740786993,7.6461247607713,8.62515960253218,6.53519605976747,8.52532033167845,8.01369008721961,7.68152523786758,6.47942087225818,6.46187946187204,5.0880649060432,6.03256956604309,5.71582565017291,4.7975121757051,-0.237063337069252,1.08301766182863,0.767967958248213,2.26246103563213,1.3678996718607,1.56083868555144,2.09000508553702,3.20255222220782,4.80082849607135,3.31406250942245,4.34742781185141,6.67396622755152,5.48309978412433,3.45242958688215,2.5814782470111,7.25537731999512,3.75891990671119,5.21006375309064,7.38537390312484,7.57446968239536,6.27257390728052,-5.70190738781197,-3.85894321699415,-5.59245417075173,3.50958076425552,136.136916268233,3.75744833694504,15.2162139898372,14.868866176832,14.454145251269,20.2566588009559,31.0982382607854,12.2371536289342,16.3814202734144,26.2061293768197,11.9098360341034,9.91471685278315,6.72779298598527,7.65184932342858,7.1329834481512,7.77158666620298,16.3677398121957,14.9650553700292,14.1242719274428,18.4640478468159,10.4762981782587,11.6999095236211,8.81511153710249,10.9588053382653,11.1623159529369,10.679187339046,8.46626504144089,9.15854993830756,9.32755405682429,8.63386548707621,10.2336701717231,10.0648643050127,11.988814366152,7.75663336112836,11.7267038506898,9.31002383997948,13.2353359252635,8.17074950534802,6.53340665869417,6.44464223985432,7.78584385612766,7.25077436993946,6.7813633752869,4.76433230613056,6.14350428622752,5.20266853980219,7.52702181355255,3.87420321377348,5.89157047504012,6.53457024548527,18.7318218087498,15.7641650376211,7.72416470781964,5.42253819184546,6.71845453761492,6.33189668806967,7.29873451524855,9.03471969505694,5.3424070419957,3.75249873669442,3.71044658748545,4.19904874458866,4.38917312314584,4.16564235378913,4.38592254978098,9.6495587367867,7.0155826767304,6.05084435547018,4.13281046918252,4.75214206437863,5.41069054869162,3.61253803680106,4.54304021344457,4.57443755778791,3.60624743468148,2.20532663257093,3.00013793340296,2.81934662300835,2.24317494235,0.805291735806201,0.828409499457005,9.15974492503601,5.30826281819654,-6.0857968535548,-16.9094272538145,-6.73626826430497,-9.88156310269276,-5.08814870809821,-12.3225625145339,-4.33086429820374,12.7211839530959,9.44895750828697,10.4777132176328,9.11270647995648,10.424458498792,10.7539606056091,11.4645653180762,9.22158146620906,7.99170756190397,7.86513164419593,11.0720250166923,11.6880120253483,10.3204421104206,9.11663194353977,5.79689696378708,9.00517247260989,32.2801130488916,18.7342894725805,18.6772850527485,15.0206583238173,9.57955386268796,7.32745014571813,11.9576118092654,10.1888403816627,11.5688112903161,12.7097876687551,6.32668275329158,6.10068121328774,4.319034371459,4.96393530571663,3.72400834436211,-3.54708036431321,10.0698800777708,8.47062632985866,7.54076688073871,5.77733693834778,11.9015027012762,7.52238927717683,7.08938100012559,10.3425810691643,5.04908001007834,6.42069824959568,5.99187457190593,3.81096204270012,5.17634910823923,4.66451443893256,2.73587169805332,3.54677574028576,1.76806048617453,2.63485778338872,2.59441130183048,2.77138919951162,3.77143212283284,13.9268564110203,14.5202907044542,9.49087121721001,8.99237437959994,11.8887592365204,9.7518348726404,11.370707263309,10.5071058400213,14.8317155213977,5.10015784429365,-3.41511477385668,6.3532910450737,6.76171423519821,6.4881993348244,6.98757196276757,13.2967263545878,11.4498522991201,7.84516290678123,8.88645333703478,19.1475885037855,12.013765694559,16.2093270710345,9.02252671011624,8.19040443719493,7.88910952956583,-2.65483772253699,-5.99331014370279,5.18746508165914,10.0315592654036,8.43903311764744,9.98651409247084,10.7265380894865,9.14321596146915,10.6977851339472,7.48349104307096,-1.43549451717402,-0.771027124343434,-0.0673595790519137,-0.471122073369347,-0.0690851803418042,1.32614106373521,-1.4294775788506,0.554298923403504,0.178218571507655,0.193796824617769,-1.34675673664788,-0.680328722599441,-1.72984412273737,-5.69419480703459,4.08839601193312,5.9341467810921,5.187139990934,6.7207707749344,11.4879631635666,-0.92870347501286,-1.09611636909924,-3.5448828720036,-3.0237501808892,4.20608177360821,3.13872419247468,4.87855193907754,3.80521911828551,4.75482114560183,3.68798819390322,2.87328704060586,5.86490530766851,8.58370670806054,8.16945843765978,11.4318748577108,14.3060539173143,12.1608589615028,10.5981701540591,13.6653236185771,11.0413269896094,9.86868783694591,10.7957876297903,9.32160806822579,8.37818184195631,9.0431454874371,9.42320466905138,-2.31376682042813,-2.29326654790221,-2.88021616140792,-2.26648239128995,-5.08275152884114,-4.00501102061725,-3.51697750437423,-4.61310172349219,-4.86552827468852,-4.35721697216854,-3.67401999200069,4.34293883022989,5.62399773810186,5.08409458135529,6.12757133824611,5.40205451846806,1.39550738602959,8.40591546968898,6.92288482258328,5.13021041551593,6.15465602795217,5.79293163844038,6.06462259466392,8.15471215751893,-2.14253845857083,-2.59881605708322,3.99904667237847,2.12766990475091,3.36128661859563,3.1067963364123,2.76040413883598,1.13154131964499,1.88653696833828,1.70698840447991,2.34097416932673,0.799760456889735,1.69961686716636,0.241917792623731,1.3548487524711,0.813885916304941,-0.421825247936878,0.0421109593494772,-1.18831615143365,7.18114906486053,4.86932926791369,3.82394904273068,5.18197598632736,3.57757088963888,4.49200870375669,4.32302137392763,-2.41380966443639,-0.0451003483125401,2.08812250710161,0.400386707185406,-0.23174346770228,6.54201015137544,6.03117521399931,7.07893881393858,-1.67129773695232,-3.96578858721464,0.534411348314199,0.963932303122255,2.98946319504564,2.22388147313938,3.11842905263049,2.3796292052376,0.884682551746163,4.02559821393269,2.28605279479527,-2.3188441058613,-0.568892675291471,0.492831350325204,-0.599293479798694,0.19412054233217,-0.75567167257958,-1.40081484786599,-1.32772353066241,-2.05141704547745,1.27357654822086,-2.8285597173097,-2.9247525859289,-2.27216141224117,-1.51436683132,-2.92902373060207,-1.99381898984097,-4.44921262460142,-3.9359329730463,-2.88588651376824,-3.68068114639678,-3.50840181919224,-5.84455044566733,-2.60482888186303,-4.63053474170178,-4.70822314223453,-5.88688449794565,-5.97905058906863,-4.82648766734486,-4.54357727109787,-6.20680951804256,-5.28052467283739,-4.69170851513912,-3.73053298830754,1.9475778192879,1.67760405209078,0.627862568674109,0.449586826106993,-1.17353252823214,1.10042800608251,1.92717467833103,2.06202913683817,1.33923149347073,1.87375844176069,0.935718050584879,0.0678226148820643,0.963707317145763,-0.669909434139462,0.240361181444368,1.10473925714106,-0.600500536274982,2.4035758052648,2.03854891402411,1.56910658674847,2.06929824343575,1.40908399762916,-8.32156107227695,-3.75712466605569,-2.95362061424576,0.576477789236951,-0.225567284396776,1.07775981257046,-0.522223934478393,-0.720618305228683,-0.94735040930469,-2.29433396673806,-1.6780170221665,-1.89687194886362,-1.36032940564066,-1.31364671079837,-0.0786992265304547,-0.677855512462515,0.286945371303944,0.843298907805929,-1.29754299833641,-1.83387241469339,2.35482618988486,2.73653741389573,3.06111058941909,3.01135837130828,2.29823751095784,-1.3166519340849,-0.168314239029805,-7.45892276498695,-6.80339028722914,-6.88212855934088,-7.59779755194747,-7.23062168550878,-10.1657645468048,-6.71391842314434,-6.634254837743,-9.41198755722119,-8.59233584528879,-6.62307997911116,-5.33706882968829,-8.95144693532809,-9.6318173039382,-4.74883689802409,-10.0185082250916,-9.0374705675709,-7.94460694865352,-6.46295769438963,1.66810234141974,1.70317882299721,1.5582869492648,1.36116226596511,2.44711765995608,-2.88748106065947,-1.94759123148385,-3.06357590881392,-2.39379216902566,-1.95223923077939,-2.83623501491343,-1.87718065434418,-1.06381462876644,-0.186526673551097,-0.730784363703504,-0.412391876848291,0.449108916570855,-1.24294100618237,-2.78230702228487,-2.20683294137722,-3.93228155345618,-3.51365451409371,-4.00333711532094,-3.04762622075553,-4.27971145618989,-0.990636879438646,-0.655058988798951,-0.859428621656615,-3.41440016809486,1.61961919016871,1.72849718033245,2.50168918823758,3.3345855286515,0.574174606697167,0.676395464973104,-0.130387313082343,0.418010541474582,-0.172173497335527,-0.761230284797928,-1.03838075967672,-1.54211028256791,-0.971946890586101,-0.614024218783214,-1.99181541896354,-5.88201227271949,-7.69255513077866,-9.37009131230857,-6.6994679730212,-5.95529454266533,-4.92682583838157,-3.86546184592374,-6.27932299212908,-6.30607626131596,-4.69166975819951,-7.32442451130972,0.353078010266804,1.70278521537703,0.814540054544337,2.66766141702966,2.79412012135812,3.11808011669919,-3.11114890562846,-3.75663592060265,-4.70819341020455,-6.80856676115291,-2.76161346379281,-3.73578581289558,-2.76839970447718,-3.44567927344733,-4.75001695230716,-4.52274906185923,-5.61317198111157,-4.44048053867449,-2.81821963616775,-3.51428906922425,-4.81451496413825,-3.70337549902095,-4.36919422642809,2.89232437826956,1.7055170785839,0.30121861901348,0.22454299785546,-9.16813106594759,-5.78738438653767,-7.04223110825031,-5.76001773172021,-6.84632183844862,-8.18310737976996,-4.28524284585384,-4.78503915724633,-3.9096720831928,0.386721906473715,-0.272272611278006,-1.03946109838995,-0.511446850989429,-1.0679974008114,2.24756463390281,1.58613405611113,2.11347035637539,2.64117907870797,4.16025770200682,-2.29739009667351,-5.20921435731982,-1.88827330481548,-12.3434408348156,-3.47685826287125,-4.10252954844458,0,1.00645827189966,1.5391677385901,1.14302014233721,-2.75732756559565,-1.18080707090198,2.44198730832973,3.61293749621701,3.16616179792993,-5.15350005655812,-6.57402796781758,-5.25608907679063,-4.8990168058056,-6.44048951571098,-6.91655645886469,-6.31641772836585,-9.73003271045841,-7.99140302326803,-7.33571286076309,-7.87802164909909,-6.39121216061814,-10.998626535012,-4.12717385462202,-5.97457229584852,-3.17418337913847,-4.9505055253857,-5.46384505842836,-4.96782336066644,-6.061421333132,-5.04174613788837,-7.18958420664892,-3.83236874281794,-6.59412506836958,-7.15055204203537,-4.55844016773112,-4.65809179096233,-3.76250971671289,-2.87480083917674,-3.18832893537519,-2.46191105850244,-1.93694700537101,0.950884972779522,0.380962285921334,-2.90565380494642,-2.20522365223233,-3.21472209994971,2.18700253320007,3.50303742337864,3.22444430827344,4.09118748586722,4.20950403204661,5.15286580591297,4.04097021417942,-12.4686789632224,-7.71826537961912,-13.5465805487501,-4.78437658084844,-6.45672973901031,-7.73974601737398,-10.8428257432493,-12.5729397536714,-3.18895512836131,-4.42324895454295,-4.0476923146569,-5.3609028479071,-5.55369546286796,-6.91936063891432,-6.4458182723356,-5.84783411578438,-6.64063421347023,-1.7279330067097,-2.08193312658298,2.54327979913339,3.11598565522799,3.41498743505533,2.20860055495055,2.97464680304833,2.92948146373941,-6.19812383110919,-10.3541190579545,-11.7691409136943,-6.93792131235494,-8.21753437778667,3.64761686979759,4.50846110874735,-13.6825269786152,-12.668729450704,-17.7534219033621,-14.010277758594,-13.695590413221,-16.3236835445166,-12.0096233010969,-15.3347561888292,-15.6506037651648,-16.4128661891534,-12.0918908567482,-14.6533099373378,-20.8271899911735,-14.9392160151241,-13.7180359947349,-11.4487522693491,-15.3635865130509,-10.5295386148541,-7.74043085745218,-9.89102309924903,-15.1122661188942,-20.2800174001099,-15.6517326916362,-10.780822829814,-11.7586303531684,-8.50765632539685,-14.4709538608339,-9.52134670973925,-7.99840152573695,-15.0139578266653,-15.1629089575892,-19.3520240980749,-12.7047163636932,-8.32244528286858,-8.61387378447139,-10.2704433474686,-17.7285548261033,-17.4880444361383,-38.6833398479514,-19.8977459637522,-7.88366575071278,-9.12550984288467,-7.13604887079593,-9.1035396721159,-10.3430580357539,-9.72968000942379,-10.3424392500243,-9.36035802699824,-13.3273097799222,-11.3893007462234,-13.1490101527676,-11.4068024375995,-12.5439360076348,-15.346053042605,-15.4649868755453,-12.8343433680036,-13.5276924760586,-13.8371954777512,-14.9436378410313,-11.8717205286893,-10.4279098292545,-13.2054816422964,-14.2294836196124,-8.15634899187768,-9.36492341388102,-7.92255859396153,-7.46320668409188,-9.12988732001276,-11.0356826120834,-10.195457326201,-12.5919220858265,-11.1790633865762,-11.7406319901553,-13.7381768817933,-13.2442147083591,-16.8520395199199,-14.0155197346713,-12.2208602722187,-17.2004186704239,-14.0947204873156,-10.8993645906179,-14.896781324511,-19.271149258201,-17.5414443719474,-19.0462530074124,-20.6172732505264,-35.2933190500032,-12.1548778793199,-23.6457500440797,-11.6224934505454,-10.3672166173758,-10.3727314398442,-9.29168345732618,-10.1936523267273,-7.95328393213664,-8.85202954558651,-9.74335293660941,-19.7421097136707,-9.579100386675,-12.1911344777247,-6.48917414291913,-6.25514971491565,-11.5539640946188,-9.8938259019729,-9.27850874194571,-18.5203067442495,-21.4304884092678,-17.4819160981073,-16.3443444258894,-29.5762015786346,-15.7696170776816,-23.3628129111268,-8.22470707992404,-17.2214093148554,-8.69016154028956,-10.9702739253064,-12.5236366750405,-6.1732101790918,-8.68061508754329,-17.2924940297124,-29.6709367911372,-17.8112802730027,-18.651500973192,-8.27795182263204,-7.71267883874167,-13.5112373352335,-10.3929838199743,-11.5333003655181,-11.3441441789225,-13.28207341721,-14.6135643599889,-10.960704167227,-5.12832499894236,-6.13658714856563,-7.84198649622181,-15.9517558752092,-20.8646556684501,-16.9263910180367,-16.2202153704889,-19.3011868769291,-21.6668279880045,-23.6469015271345,-14.2092539587565,-17.688796715673,-20.112178073751,-13.8140599493105,-28.7448544318639,-22.6102945163313,-21.0405246738683,-16.8096538508723,-19.7804568212896,-15.5983213666067,-19.297889554912,-19.5162437013872,-19.8918530823117,-15.2198009972197,-15.5129574082141,-12.1696558362535,-14.6703588983461,-6.0191284072133,-4.79997723727031,-7.10494536447664,-9.02461754767845,-7.89631839524037,-10.9038532170604,-9.67858737525462,-10.1407879288892,-10.9649481880567,-12.8780401033923,-10.1557388114057,-11.9309931561748,-15.5933686660516,-13.1159318884406,-14.3442750146882,-12.9909958037204,-13.8959407495,-17.1997065183443,-11.2613287262923,-12.1448296770647,-18.0961935113553,-17.8361288306055,-16.4058462057774,-55.207273431091,-10.4488912506107,-16.8471165224412,-14.2144430652858,-8.1583587984141,-7.84801522775712,-8.28159757086593,-14.3384255183754,-17.0479425037062,-15.4508422635224,-18.9036757480421,-27.2005386662737,-15.7256174550139,-19.8957042115979,-17.8021583896415,-20.4663528855283,-22.6043462741422,-26.9168434935879,-17.4777273567545,-50.4215235607048,-10.6738923388877,-12.3300114400164,-14.2831014236932,-7.408182526945,-6.65597903223641,-5.58417933909474,-10.6736578194304,-6.87055722288222,-30.2451677563853,-13.5720781184428,-12.5641370311953,-15.3584102194194,-13.9068406623413,-19.6589557532718,-24.0309577170935,-19.2764464304416,-35.1273690310495,-17.6562304969397,-17.8551243861322,-7.6935848082122,-9.1873275436792,-10.964651382619,-9.41134118687596,-20.1143051023849,-18.5647401249976,-17.9503194142524,-19.7869709992359,-29.7422649793965,-22.1612196159941,-27.2692092489325,-23.1676645876493,-7.89234322871853,-26.2367350880067,-21.5486655604923,-42.0887690196573,-7.48938836704877,-22.0689497297206,-19.6240460661214,-8.75004745449025,-9.70590862389688,-11.4601504536059,-32.4963714264372,-28.6933176191637,-44.4310384659472,-8.09807886760535,-11.3515134933188,-11.1902000383528,-12.5828849231301,-11.7444259443676,-14.7260235713345,-11.604375541442,-15.3366871637438,-10.2527943802494,-9.69449121741014,-9.91948593437478,-10.7653150013934,-11.8528760870762,-15.2873395600281,-28.2635167645295,-26.4067790159169,-9.71674806495108,-8.14616405551734,-4.57887814304855,-12.8813848264997,-4.55096803949424,-14.4767386001855,-18.5200043658777,-59.1999711852993,-23.7742852292672,-95.1508248642666,63.3441115846124,22.59839153922,-128.399792923913,68.2357708987732,-165.22832289801,165.931078612721,-199.971039943866,144.52229177002,-214.121644956195,184.112949552387,-236.387095068564,233.129405078787,-203.746252737798,-223.33503102212,-213.395354352899,-184.658275155801,171.602871218248,-155.456754861398,119.294588439886,102.382995457526,-117.159279364172,22.3649313334728,80.6464452583675,-78.386591228586,-30.2557498068113,6.111390385814,2.08668944189855,8.90174033051523,5.38994012114474,7.04196536409475,4.18874118472068,1.59275693774019,4.86375987610075,3.89130296348186,5.38578461120004,3.58374946530579,2.66276047174933,0.626386291168613,1.29904362576954,0.55298281391227,1.81131265097965,3.11147025437653,2.02122764865747,4.23596744086853,0.235219684121863,-0.928537556123711,-0.269197447007448,1.54756974706126,1.07762659053215,17.1335429283378,1.95772348034372,24.0690951467642,1.22655123039599,1.10293445939621,20.0327265811263,-4.465438795836,13.0767553746091,22.9882498917591,26.5720844640362,2.12068597875798,31.6156276527329,19.0866930939183,34.9521191247927,39.6927457034603,22.7393723408698,20.2148815194984,21.2649589634932,44.1593330819363,19.6006463885558,17.7292470116529,17.5248873899144,15.7329521043493,18.9148668297235,18.3298147908168,15.8675762578088,14.5335173249973,15.2290226458859,14.5601262007785,13.3037450422658,12.6501858998644,16.525844389704,13.5623185532566,14.830957157014,11.6911568214302,14.4094541507345,16.5897062361982,12.8859383028759,16.8161976380527,14.1389594998967,17.7700658081627,15.3851887850883,12.7161321967682,21.215404881782,20.4276724106972,17.4060610461449,18.4921833525329,17.6992926884258,15.3859297987224,13.7965900367754,15.9620561872304,13.5154873397312,11.8857249954012,-0.246238526581823,9.40291990808784,36.842484556117,14.7443822334904,7.62086929116505,3.77156081148673,-6.21808931381966,-11.4542668320205,-14.2536511965143,-25.9402928442434,-10.3282506024098,13.8147345218882,4.18730877812969,13.9898522097628,10.4381316459711,31.2987429079421,3.16876128638059,-4.55013133716897,-5.03086393177619,-4.44968337659155,-7.23885368830405,-6.17587859801799,-6.74049549479506,-8.54604645964471,-6.21684557078038,7.19192722588686,5.58373236311882,5.29272394567533,4.63313030196955,5.48636914217223,7.85162365686986,-4.0248014615764,-0.167568351196211,-8.93450947040962,0.788520339012164,-1.77362749472302,3.86473082152793,-2.76439812978734,-4.04294182042911,4.76889760860175,-1.16646182555984,-1.2213987117433,-2.99845035068313,-4.36740439737179,-3.90749929781184,-5.22388201267354,-2.25590810444281,-27.7277762540026,-6.34613015304727,-18.0996893920548,-24.7542133402863,-21.5478339528129,-46.2656660293424,-10.7085088586726,-8.70480929170401,-7.17443764766697,-3.8455686663564,-9.99350460361213,-7.643901942311,-7.38743419929527,-6.40068051266482,-7.29142202377005,-5.54803325254744,-5.93982655654883,-11.3054439754055,-21.5133463927368,-15.3129547034276,-29.2247866905681,-32.8713177132958,-28.902434595281,-20.2532278512814,-22.6880810931652,-9.46481460915334,-20.4265744846496,-28.8098993390697,-18.571768897162,-35.7052015918306,-23.1281274020996,-14.7648921960037,-15.3050263972517,-13.2184236927252,-48.3355648263752,-11.7140373877043,-21.360037448675,-15.7265600736185,5.29233405177144,1.44065659501846,-0.189230906813888,-1.73555858009221,-0.740629331820447,-5.36176129783236,-0.544408229629221,-0.915610124293606,-3.24620509683839,-2.10750820797604,-0.170628370562959,-13.8887273686937,-9.18974912859785,-5.8667605823863,-4.51635163755553,-3.86787781304573,-3.83355968192406,-1.87305584135469,1.31373692056674,-2.01063504782992,-1.81264194225422,-2.33643540170663,2.32873177332558,21.3794083298053,12.2881779280402,-3.39521600225088,-34.5501145880602,-0.320775543602677,-3.83564127408344,-8.45413164738206,2.5260650471169e-17,2.17802058883117e-17,8.10266889553318e-18,9.79091648966432e-18,8.93320529294809e-18,9.63300502357819e-18,1.90859151845808e-17,1.16550324450239e-17,1.79410448820307e-17,1.84130537913854e-17,7.33266268502843e-18,8.70223752838576e-18,1.99803125351227e-17,1.85722995045105e-17,5.73597773851862e-18,1.00611023857362e-17,5.50402896549601e-18,9.04882948250648e-18,1.36978881958399e-17,1.37081710988458e-17,8.2988998069971e-18,1.41713403250977e-17,3.68937661011202e-18,7.02671696464044e-18,1.29239484269199e-17,1.16599865792125e-17,2.058325617145e-18,7.70724436089928e-18,9.74640753056881e-19,6.40659085153925e-18,5.88716729932487e-18,6.16137689784292e-18,3.34780002522765e-18,6.02609930307497e-18,-7.86268172134472e-19,4.27413199205089e-18,1.50695171666451e-18,1.04569691514281e-18,2.09641603932976e-18,-2.58227599191136e-18,2.51125377389978e-18,-2.52410339519587e-18,-1.1771422849106e-18,-2.75330644550877e-18,-3.32242829439233e-18,-2.94273851057817e-18,-4.22930005974164e-18,-5.38090677829916e-18,-5.67232189697788e-19,-8.71266627321469e-18,-5.03308643474831e-18,-7.98984596903603e-18,-6.94781900790835e-18,-2.51049039893534e-18,-1.20173135497623e-17,-7.37012409690251e-18,-1.07408864241059e-17,-7.37098535635666e-18,-4.29021218256777e-18,-1.50700211767959e-17,-9.09965305830268e-18,-1.374267270437e-17,-8.08759837081678e-18,-5.81014920168304e-18,-1.74456977737221e-17,-1.0281969466612e-17,-1.68937585822789e-17,-8.61405002510459e-18,-7.00433424822757e-18,-1.96775679910624e-17,-1.14307936605239e-17,-1.78868844032603e-17,-9.05352090519905e-18,-8.51487447403252e-18,-1.97600002884582e-17,-1.18673617065733e-17,-1.94370087973814e-17,-9.06575595427049e-18,-8.98897787808133e-18,-2.02066151095355e-17,-1.25068832608949e-17,-1.94306138436371e-17,-8.06596080301025e-18,-9.6458678699455e-18,-1.94003891628428e-17,-1.17212298976768e-17,-1.8717870638772e-17,-7.41682900147118e-18,-9.81262308154184e-18,-1.7841271683024e-17,-1.07087753949259e-17,-1.78250974459697e-17,-6.6427136648025e-18,-9.57241291720589e-18,-1.54789591433567e-17,-9.59017007711305e-18,-1.54222454898315e-17,-4.65953463567138e-18,-8.61279157192755e-18,-1.28587755423638e-17,-7.77601522684824e-18,-1.31866467420054e-17,-2.75753947694341e-18,-7.13373316170606e-18,-9.91550307548886e-18,-5.76419210002123e-18,-9.86368253551442e-18,-1.20951312891106e-18,-6.03753245306094e-18,-5.82562170988381e-18,-3.55513739593526e-18,-6.36051842620807e-18,6.38520309547635e-19,-4.44624470054972e-18,-1.84928298655483e-18,-1.511811105562e-18,-1.14497785511957e-18,-1.10767353034847e-18,5.67530114327177e-19,6.44307791405106e-20,3.54125156054425e-18,-2.21623208743198e-18,4.37029192296428e-18,-6.63496782670094e-20,5.54609275570671e-18,4.7418496454192e-18,5.49696021694264e-18,7.79655759543477e-19,8.64359558043784e-18,8.20172471896685e-18,5.80447470171701e-18,9.00691223591572e-18,7.41000482245898e-18,3.03105957390573e-18,1.26577414932273e-17,1.22807336344648e-17,8.01027964006918e-18,1.30544416033994e-17,8.49717640244432e-18,4.76657075492545e-18,1.75229587646132e-17,1.69681253290219e-17,8.26600751834103e-18,6.46305433528346e-18,9.66526579146584e-18,6.2367907038592e-18,2.05641813126751e-17,1.95268591211651e-17,8.66413770455533e-18,8.24120915370828e-18,9.73906849127832e-18,7.53351927699157e-18,2.2585800100008e-17,1.92477816626873e-17,1.69053308636381e-17,1.3539318877142e-17,-99.7093320358321,-5.80536753454913,-3.29219787529739,-152.500573669867,-61.6966160880022,-124.172198470732,47.8103569625352,1.92523873088287,44.8134266617342,-1.78734430116884,-59.7858826061911,-4.86428194246692,-228.078204055904,-136.733243386594,-207.604217363824,113.56079881448,7.15263019018802,19.0477695829573,118.005522949504,-54.3382028278604,-9.60934863076288,-188.590920786932,-281.966940172505,213.171620764576,136.257177308051,191.880613588635,-415.346356694853,-10.5224953866576,-452.491080523513,-239.117231976342,-402.428638164746,224.925648419168,17.8906940803168,172.036045078524,301.749122277091,293.75207956762,167.828342609356,-17.5838259888802,-239.915218591594,-267.021952149258,299.443462886641,226.805581179805,525.951046327636,310.879143690923,-377.514347206975,-14.5427167164109,-488.000329487532,-324.045194513781,-300.337043205757,285.418638601311,24.7627774554703,300.23261220566,391.86461507764,392.659805831428,-16.0854674148671,-359.95528590564,-294.981270283914,12.5462704442167,349.463660641975,605.571993009972,344.216238368291,-397.567799816867,-6.58052827315134,-335.471755176976,-243.7918480937,381.097325472469,21.7757662459486,430.097350276856,-475.806085270746,-17.6726866247076,-409.977911266043,-327.107586745398,-170.275796992006,343.114447982645,252.696711401759,604.044093574561,344.469986611823,413.690183913259,-12.9618781980535,-326.175104611716,-198.18913461966,240.0250491865,223.738148924914,542.484634031002,307.980800163943,546.904827694514,-299.623026843876,-14.7679966105583,-296.718725822167,-276.962380603457,-268.348874802462,137.242924777271,11.5932605661977,277.02850218008,245.571771550099,513.783782406623,-13.6004702741135,-196.919500112759,-122.957036593205,93.7298318713754,10.0981876250967,233.824618056175,167.367914157662,-193.527117123432,-8.6377064949009,-123.406863239993,-177.380610487096,-61.9533208335221,32.4161669692475,16.72407794936,179.210253661818,77.5960051043132,-6.2516566939439,-117.303437923402,96.9424821431879,46.8270873326946,-35.3269922935672,-3.0238021851931,-14.8714338761393,-0.886900197251275,-2.50058959733744,-6.76267461035714,3.81847980679371,-1.00208418553328,-5.65060016625959,1.6775462614557,-7.94676777958874,4.25383815338125,52.4356130008293,232.011361280929,3.03994554069485,-6.38870939801082,5.46864947596381,-16.5602867244913,8.59689695455877,79.5078002394029,365.284816199554,4.41562134519577,-5.99477232064839,6.31732811771637,-3.6391760741679,-10.9415138283972,66.831031074029,423.572332271216,12.8479837134277,-12.7560507192775,63.1311215605992,379.329214077604,4.53246370739188,-6.67607303398839,3.72573493369629,68.7543810466954,328.294206760382,3.50501197467522,-5.64431753267306,2.08971212473191,7.31661593192683,-8.98893009315976,1.94495930178711,5.83804511659105,-0.870244430175546,0.267660338954277,0.839600087035978,4.07484630424864,19.5084371768991,10.4936768765667,33.8447001114238,19.6451539379937,81.9845907225544,21.7547699510344,39.0717153592774,23.5408737169102,33.8326629445832,20.8411948578247,-0.0255099637492178,-0.597126657227378,19.7171199010033,25.5425859589291,35.2195060531537,36.2860013896386,55.4114753676248,38.7139790135661,33.8145661750721,30.6451808507667,5.43083908239164,-2.61994641946286,18.9286204332096,31.1978467626888,55.178683995854,33.3390772759587,44.8166454136906,49.1972511318242,34.178118445164,41.3355492092012,29.4913818976405,19.3033778724927,32.4244303357518,33.8425884910108,34.2263748855607,37.6687851231237,37.389649616056,31.3061130642901,22.1768800036022,21.6657175672442,37.0133495616067,33.6354388389159,35.2859001858995,45.8858245996715,33.2827123908098,41.6001048368759,28.8408426641361,14.9850393327431,28.1428936566534,28.5001969397976,15.6902114071796,16.4585420170128,22.4135252964661,30.2870028976556,41.8764390547501,29.0041651175448,28.0433509583412,37.2295742690811,27.3043837939836,-1.38915118227972,-10.508131107148,7.08755444699031,79.7977940021268,53.1937342792133,37.4921656970128,36.0617927666851,39.3736022723357,39.1663261840166,43.2653385345449,39.0606773410345,30.6899942415885,457.545130743084,4.4889109090851,249.26623174012,520.752072328789,48.6219127947192,43.9609410939165,34.7366055003504,32.3154171815507,32.6282064657333,48.810254491803,28.8076535800742,38.9095493719344,23.8015230532318,20.5661309055751,26.5935179755126,25.5781954591505,31.5263028582754,30.6499328699211,30.8864675428551,26.5529426716761,30.183028471916,28.2935303180853,20.8211537439823,23.6661494546387,21.7298535150737,24.3640442704987,21.5258936851864,24.2368340776268,27.7568272167454,20.3991413752529,25.5256626958442,24.6244082014963,22.6484992835539,22.2867974329574,19.639835093021,-1.7317166822634,-6.11185807864879,10.1584750426923,23.1812155625127,15.7254078123159,31.1471533511672,28.8163515549803,34.4708669633035,40.3890299575026,23.9007230684931,23.6039903179229,21.9149105444063,17.854282613983,19.9596794537026,19.6831045185369,18.7810912040736,25.2426246159499,3.27987213372524,-2.41146946323539,-4.56625085057705,-4.52234786638646,-2.57573833479904,-9.05030581770785,-4.74248665050901,-2.91581201244152,0.912664253231193,-0.826976713475287,0.605502998392001,-0.773067974550764,0.839827111790101,-2.41452347576773,3.97585282794182,3.08436265967116,-0.665193926572551,18.7418133633457,24.4498196473274,19.1752619896416,18.0297713879753,32.1959139594306,28.4149587674094,22.2498557963866,23.4248562039265,22.3240933634868,23.0275431493087,25.3821112853423,26.6634966806978,15.9066322498162,27.5446317371948,21.972659487529,38.8293651023278,21.5861787697441,23.2261259735424,31.3174386275867,17.4602390401399,58.7138752400524,19.1538494507179,19.5886396774669,19.3984925838519,20.9665135922933,17.1613734943074,15.4225695385841,16.305421993067,13.9635827947781,18.0709721477172,15.2134788087748,14.6456199949111,14.6597252450229,10.9875421409204,12.640726376029,13.2205544031262,13.7498017002258,12.1723979500362,9.09000194828641,13.9543600434155,16.3086051411082,16.959334438212,17.0660569488202,20.2800541838683,15.0634503868535,15.7137077596054,14.1546994099695,10.9998304816341,10.3181380153879,9.44295274837576,20.4584621015975,18.2011621330015,11.6254335525494,11.7257594341023,8.90663012541692,10.3698714875209,12.9038048701049,14.5560502825695,11.0289718493439,14.3875588558955,13.5241179565248,12.963547663095,10.9348441495311,10.9052407956948,8.58675456760232,10.1807259207867,9.64618040759403,8.09641000037859,-0.400074434972855,1.82772960373513,1.29604328856494,3.81818982078282,2.30850411153773,2.63411315695496,3.52714854192049,5.40471287804647,8.10200671142265,5.59290062442085,7.33683557699873,11.2631641000464,9.2534260048508,5.82641260909928,4.35657180834328,12.2443690268477,6.34365387907446,8.79264308838015,12.4637547411762,12.7828778412839,10.5857636731387,-9.62269157537436,-6.51245589561691,-9.43797539567027,5.92286246624867,229.748304939492,6.34117041853605,25.6792901410639,25.0930966716517,24.3932025335817,34.1856797614508,52.4822195394998,20.6517481121162,27.6457234634499,44.2261656014483,20.099358175201,16.7323416257923,11.3540035787825,12.9134657953196,12.0378138516467,13.1155377409349,27.6226359508049,25.2554281295422,23.8364994799845,31.1604215183586,17.6800813069194,19.7450805753606,14.8766182532845,18.4943733092022,18.8378232714878,18.0224824869903,14.2878955668941,15.4562140946691,15.7414299701376,14.5707425664248,17.2706157867619,16.98573448635,20.2326441229989,13.0903021429185,19.7902993991357,15.7118455068213,22.3363072815807,13.7891756358003,11.0259520081816,10.8761507982937,13.1395985563858,12.2366009650905,11.4444104021069,8.04041476409863,10.3679423248302,8.78016272842885,12.7028035474153,6.5382090747658,9.9427720795809,11.0279157084052,31.6123240261254,26.60402700061,13.0355071742514,9.15122064019355,11.3382437632771,10.6858783863569,12.3175397904397,15.2472348606235,9.01598916620776,6.33281734062831,6.26184900768335,7.08642709025915,7.40728608206357,7.03004957069484,7.40180032741942,16.2848536896684,11.8396851664091,10.2115669447286,6.974641603164,8.0198421857262,9.13122624038829,6.09661591606184,7.66695630341964,7.71994330239257,6.08599972749492,3.72176827241179,5.06311310464759,4.75800484856582,3.78564209337768,1.35903189491026,1.39804605182196,15.4582307862677,8.9583664599179,-10.270553716344,-28.5368021808797,-11.3683066853991,-16.6763904694531,-8.58689599419414,-20.7958864342642,-7.30888254788136,21.4686106470097,15.9463136853849,17.6824693652546,15.3788474469043,17.5925952758518,18.1486718536851,19.3479073927777,15.5625877888153,13.4870196582233,13.2734067504483,18.6854458699553,19.7250020387216,17.4170544338133,15.3854721643511,9.7829985271214,15.1973701768994,54.4767830764256,31.6164885216774,31.5202863364843,25.3492651631156,16.1667115897695,12.3660010572768,20.1799858525534,17.1949598327451,19.5238356866998,21.4493779724224,10.6770792104231,10.2956729603558,7.28891804676246,8.37727013054003,6.28473619170239,-5.98614779535211,16.9941992387531,14.2952557940008,12.7260000908207,9.74998850447332,20.085294619598,12.6949855549921,11.9642291929097,17.4544167333564,8.52096261335736,10.8357422792365,10.1120479590786,6.43148158118965,8.73574535102443,7.87195945880708,4.6171303301833,5.98563370368713,2.98382621601867,4.44665654316312,4.37839797793704,4.67707061662002,6.36476983001404,23.5033357686996,24.5048313714115,16.0170483827966,15.1757717724689,20.0637884072717,16.4574576349631,19.1895100265174,17.7320731417803,25.0304002308375,8.60716293398036,-5.76343913153907,10.7219840760676,11.4112499871905,10.9496589179998,11.7924135355428,22.4399114138276,19.3230773080486,13.2397069745274,14.9970165850161,32.3139830327577,20.2747526528866,27.3552943673442,15.2266576527722,13.822345825043,13.3138724718028,-4.48037522342956,-10.1144706684802,8.75450496539636,16.9295280097683,14.2419382431697,16.8535085698494,18.1023928812429,15.4303360647917,18.0538686236188,12.6293398536208,-2.42257898233019,-1.30120601917594,-0.113677829150491,-0.795078225239953,-0.116590000090023,2.23803116638478,-2.41242463611298,0.935449704405103,0.300766433051459,0.327056710105445,-2.2728227279737,-1.14814096795687,-2.9193312578448,-9.60967561755127,6.89968657591958,10.0146249936483,8.75395633358436,11.3421527073944,19.387394223301,-1.56730485032596,-1.84983533284091,-5.98243924849289,-5.1029617657197,7.09829621834083,5.29699498608302,8.23317487487326,6.42178966818163,8.02436347493047,6.22394762135391,4.84903614154985,9.89777122916877,14.4860932679642,13.7869967954015,19.2927380965829,24.1432796332769,20.5229911885808,17.8857557163838,23.0619660256716,18.6336390575153,16.6546618262454,18.2192602596055,15.7313953605758,14.1392440010297,15.2614544534435,15.9028525043626,-3.90477483690914,-3.87017802810272,-4.86072991134156,-3.82497636826214,-8.57778756997125,-6.75896383195447,-5.9353454029196,-7.78519398366227,-8.21119579014371,-7.3533560260532,-6.20037450982672,7.32925985142245,9.49120916450456,8.58005414135417,10.3410534552145,9.11665184455462,2.3550956291615,14.186048013755,11.6832457857795,8.6578804578281,10.3867623027509,9.77630653789533,10.2348194701022,13.7621105782064,-3.61580526882541,-4.38583156083821,6.74889823817219,3.59071269929565,5.67259729547985,5.24311268132866,4.65853193410048,1.90961942787958,3.18377029950801,2.88075933575515,3.95069068738305,1.34969716051168,2.86831893201302,0.408266944143903,2.28647903053946,1.37353566402781,-0.711883582725117,0.0710675825127081,-2.0054341541436,12.1190994360324,8.21761044808152,6.45339879016619,8.74524142114476,6.03760442227089,7.58083416130946,7.29564661887989,-4.0736098190894,-0.0761125553672076,3.52397145214714,0.675703327339266,-0.391096480990461,11.0404714927878,10.1783727749441,11.9466066799126,-2.82052680962339,-6.69277100316955,0.901886900197594,1.62675796388989,5.04509813038128,3.75308191815815,5.26274436468269,4.01592596096893,1.49301396156756,6.79370733061258,3.85800390521231,-3.9133433997497,-0.960078510836722,0.831715382293245,-1.01138372250003,0.32760302478776,-1.27529174763937,-2.3640526438631,-2.24070177994143,-3.46202633232705,2.14932188259585,-4.77355311318797,-4.93589077381916,-3.83456043607435,-2.55568601147717,-4.94309887192885,-3.36482231145576,-7.50861035226852,-6.64238586931953,-4.87029934980766,-6.21161605233696,-5.9208728469938,-9.86341981905723,-4.39597896492909,-7.81461441195919,-7.94572343679336,-9.93486389916994,-10.0904058622822,-8.14530981588422,-7.66786265629499,-10.4747779290292,-8.91155482312517,-7.91785290993052,-6.29574735552105,3.28678447393009,2.83116951590168,1.05959768181919,0.758734765357034,-1.98048491579947,1.8571117668573,3.25235158696028,3.47993558184454,2.26012292610071,3.16220491591257,1.5791428358755,0.114459260815167,1.626378271532,-1.13055709777694,0.405639965439583,1.86438754957679,-1.01342078332817,4.0563388843414,3.44030972914413,2.64806628838687,3.49220312076784,2.37800788240864,-14.0436892741063,-6.34062418287694,-4.98460923134376,0.972879352221387,-0.380673388677723,1.81885631654893,-0.881319094292136,-1.21613474634942,-1.59877391590568,-3.87197943271008,-2.83186645525868,-3.20121188936011,-2.29572832757207,-2.21694536183417,-0.132814921852613,-1.14396711230996,0.4842566915312,1.42317381601325,-2.18976830550891,-3.09489218869148,3.97406772816269,4.61825381006339,5.166012191474,5.08204901608213,3.87856715845217,-2.2220170571169,-0.284051616374844,-12.5878777697143,-11.4815836084678,-11.6144644246889,-12.8222465785402,-12.2025907552603,-17.156016435987,-11.3305884950428,-11.1961460953391,-15.8839222061015,-14.5006560309945,-11.1772871047069,-9.00698025618795,-15.1067015216896,-16.2549127725691,-8.01426429849096,-16.9075027246982,-15.2518773067322,-13.4075314021901,-10.907060449761,2.81513417456638,2.87433018404397,2.62980677847528,2.29713388495531,4.12982128414494,-4.87299034983505,-3.28680710871107,-5.17017273049327,-4.03982775786886,-3.29465119677171,-4.78650615092895,-3.16798033349768,-1.79532205098109,-0.314787408508139,-1.2332912588262,-0.695963573098941,0.757928232427893,-2.09762052158972,-4.6954958266552,-3.72431035948449,-6.63622363585302,-5.92973743554962,-6.75613890455786,-5.14325560987546,-7.22255564208922,-1.6718253218924,-1.10549508860188,-1.4503947529783,-5.76223314372195,2.73331271038614,2.91705812177808,4.22191765641717,5.62753582117251,0.968992439699885,1.14150309707428,-0.220045120658234,0.70544578196116,-0.290564604022634,-1.28467261045005,-1.7523991725173,-2.60250660262983,-1.64028359628324,-1.0362437120236,-3.3614410315977,-9.92664140142518,-12.9821620056954,-15.8132169814213,-11.3062015285064,-10.0503145223074,-8.31464319986505,-6.52345690833377,-10.5971536094349,-10.6423031428294,-7.91778750268154,-12.3608949156383,0.59586390373627,2.87366592128538,1.37463960523507,4.50201683360787,4.71543192894515,5.26215549106233,-5.25045819367724,-6.33979936296431,-7.94567326022351,-11.4903195644609,-4.66057282327712,-6.3046121629394,-4.67202546475663,-5.81502059940807,-8.01625578969484,-7.63271241271173,-9.47293932714975,-7.49387385025796,-4.75610291539871,-5.93080832777804,-8.12510436138545,-6.24991564946335,-7.37356916103078,4.88116406231293,2.87827628677851,0.508344606529848,0.378944775285482,-15.4723834622077,-9.76694484705749,-11.8846577729498,-9.72076014764952,-11.5540360437916,-13.810031115555,-7.23189056338821,-8.07536020046439,-6.59806728847142,0.652642243785255,-0.459494548850509,-1.75422238105565,-0.86313139964139,-1.80238100907725,3.79305025437554,2.67680230159119,3.56674916126637,4.4573245303956,7.02096228817378,-3.87713703941655,-8.79120962533487,-3.18670058743708,-20.8311212465854,-5.86763909677257,-6.92353871055962,0,1.69852592742498,2.5975406866267,1.9289913963987,-4.65333982672533,-1.99276162878387,4.12116316537594,6.09729005446766,5.34329942368702,-8.69718467962749,-11.0945056170877,-8.87031665697729,-8.26771193190723,-10.8691425498408,-11.672565869727,-10.659755679514,-16.4206637223152,-13.4865057106674,-12.3799454364197,-13.2951602678508,-10.7859807659925,-18.5615766270385,-6.96512910151222,-10.0828481747383,-5.35683685891118,-8.35460567367323,-9.22093121422392,-8.38383171617541,-10.2294169354276,-8.50858577428625,-12.1333348071641,-6.46760810146962,-11.128422022076,-12.067463081082,-7.69294567860505,-7.86112042612709,-6.34971213854995,-4.8515908685498,-5.38070927836138,-4.15478701962278,-3.26884362772551,1.60473893986321,0.642922153928094,-4.90365915966616,-3.72159448003509,-5.42525108957029,3.69084403168855,5.91181974898789,5.44165854864807,6.90439754207207,7.10407171331193,8.69611430125677,6.81964952981193,-21.0424764653166,-13.0255513100266,-22.8615720417041,-8.07424201879493,-10.8965499855103,-13.0618026094425,-18.2986430393173,-21.218429766845,-5.38176605841097,-7.46479336750453,-6.83099392656094,-9.04720318348622,-9.37256516248711,-11.6772982790603,-10.8781355021972,-9.86896142866654,-11.2069121006232,-2.91610600726667,-3.51352608786418,4.29210708494722,5.25862082180465,5.76322423116843,3.72729343147842,5.02009359053998,4.94387135462716,-10.4601197312025,-17.4738885521666,-19.861917322908,-11.7086217685179,-13.8681310391856,6.15581589385719,7.60859968048234,-23.0909988766893,-21.3800870243118,-29.9611501492845,-23.6441198684589,-23.1130450787015,-27.5482854138698,-20.267761838768,-25.8793451300323,-26.412377956627,-27.6987924328105,-20.4065987683865,-24.7293181903957,-35.148523473948,-25.2118209423595,-23.1509248430414,-19.3212208683539,-25.9279999571163,-17.7699312932223,-13.062958363895,-16.6923554129314,-25.5038649308722,-34.2251003588062,-26.4142831631669,-18.1940052624852,-19.8441794195458,-14.3577486059436,-24.4215691931314,-16.0684796399656,-13.4983165708177,-25.337957224717,-25.5893311414082,-32.6589940154125,-21.4408195022166,-14.0451814915754,-14.5370040338341,-17.3326751827462,-29.9191838038904,-29.5132920301563,-65.2830400679423,-33.5799688475494,-13.304685404854,-15.4004547449899,-12.0429871409781,-15.3633772965526,-17.4552216749438,-16.4200684946057,-17.4541773955785,-15.7967908285244,-22.4915248212886,-19.2208888861215,-22.1906215965571,-19.2504252090929,-21.1694822684627,-25.8984100029358,-26.0991259238411,-21.659581505434,-22.8296960245047,-23.3520215770568,-25.2192833341543,-20.0350334277272,-17.5984198335492,-22.2859243943015,-24.0140575487171,-13.7648729436962,-15.8044954976653,-13.3703220084706,-12.5951074262971,-15.4078422925976,-18.624113454875,-17.2061267655158,-21.2504648588391,-18.8660866889075,-19.8138049002216,-23.1849151433104,-22.3512913536608,-28.4399531046113,-23.65296636764,-20.624251007071,-29.0278870868007,-23.7866276783906,-18.3940595119556,-25.1402070222985,-32.5225074702296,-29.6034111916028,-32.1429665358359,-34.7942623619432,-59.5619502020337,-20.5128973541464,-39.9052008857491,-19.6144311376344,-17.4959923441312,-17.5052993061874,-15.6808937859947,-17.2030806000753,-13.4221749118411,-14.9389220728762,-16.4431432926147,-33.3173129447749,-16.1659462915083,-20.5740849603792,-10.9513040302408,-10.5563581395737,-19.4987791617096,-16.6970854978529,-15.6586597835676,-31.2553655399911,-36.1666660375474,-29.5029496828099,-27.5831532704665,-49.9135896824016,-26.6132280093937,-39.427708604579,-13.8802358833607,-29.0633114603645,-14.6657492931459,-18.5137280037626,-21.1352245712652,-10.4180747849987,-14.6496384438864,-29.1832759284396,-50.073467363542,-30.0587934830391,-31.47677243346,-13.9700931367746,-13.016123314063,-22.8019258882642,-17.5394777651493,-19.4639064992111,-19.1446814540842,-22.4151827243787,-24.6622424898799,-18.4975778237989,-8.6546985783368,-10.3562687781067,-13.2343463790194,-26.9206103208399,-35.2117515540578,-28.5654306835832,-27.373669753036,-32.573199759848,-36.5655190385795,-39.9071441593831,-23.9799174314105,-29.8520869522108,-33.9418502177705,-23.31297743981,-48.510585978318,-38.1577384129567,-35.5085527964674,-28.3684219146566,-33.3820285503304,-26.3241447809671,-32.5676351109265,-32.9361354149171,-33.5700238630494,-25.6853436707642,-26.1800822791767,-20.537837029945,-24.7580904734766,-10.1580422612606,-8.10057010427768,-11.990496030922,-15.2301862062241,-13.3260383465314,-18.4016346381221,-16.3338431971843,-17.1138652268475,-18.5047401469842,-21.7333252860495,-17.13909673649,-20.1350635008873,-26.3157864709026,-22.1347978320134,-24.2077825805691,-21.9239523502948,-23.4511616705558,-29.0266852398833,-19.0049198788543,-20.4959397389814,-30.5396206925915,-30.1007285741658,-27.6869453209063,-93.1692728086567,-17.6338286420043,-28.4316449222536,-23.9886747065269,-13.7682647470193,-13.2445206277767,-13.9762457991084,-24.1979108139723,-28.7705642253216,-26.0752550978714,-31.9023493354382,-45.9043573434883,-26.5389730680965,-33.5765231319461,-30.0433991484416,-34.5395651131025,-38.147700000175,-45.4255857741686,-29.4958806507499,-85.0927131896681,-18.0135465029504,-20.8084574403522,-24.1045443904924,-12.5022471854325,-11.2328084276282,-9.42401056820856,-18.0131507216352,-11.5949363274605,-51.0425549154414,-22.904602423011,-21.2035740567028,-25.9192643053893,-23.4695566553103,-33.176980094771,-40.555287668604,-32.531447119934,-59.2818885067611,-29.797127329521,-30.1327859822759,-12.9838997169017,-15.5047799520103,-18.5042392501805,-15.8828313742004,-33.9454398482438,-31.3303525030386,-30.2934396605638,-33.3930220514488,-50.1938427238497,-37.3998675872355,-46.0202476574277,-39.0983710688117,-13.3193297490747,-44.2778166191108,-36.3661049621291,-71.0301335179612,-12.6392923354657,-37.2441504566482,-33.1180655720344,-14.7668143653872,-16.3799512679152,-19.3404567492904,-54.8417465046566,-48.4236110733148,-74.9830101494281,-13.6665347218005,-19.1571181063717,-18.8848812006278,-21.2352135011039,-19.8202076789328,-24.852031666025,-19.5838548691273,-25.8826038949998,-17.3028903131186,-16.3606829470289,-16.7403900555777,-18.167833836023,-20.0032310435039,-25.7993235576944,-47.6982676431816,-44.5647873047523,-16.3982441988627,-13.7476845723944,-7.72743735297442,-21.7389699303199,-7.6803355149274,-24.4313316741467,-31.2548552381546,-99.9074564425335,-40.1221203057815,-160.579079689797,106.901218739143,38.1376506300833,-216.690928423318,115.156513971155,-278.843741685891,280.029731046214,-337.476481203442,243.899689153463,-361.357421102544,310.713943260824,-398.933190866217,393.435426015316,-343.847631395228,-376.906178114409,-360.1317136341,-311.634249350156,289.601600108686,-262.352981835057,201.324741545609,172.784284423249,-197.721136776858,37.7436569360028,136.101100314324,-132.287310146417,-51.060413467073,10.3137460466476,3.52155297294035,15.0228153245206,9.09620726327063,11.8842092959976,7.06903177624261,2.68797925395504,8.20821139333838,6.56706707021684,9.08919431342481,6.0480315519968,4.49374586713072,1.05710627637381,2.19230080454412,0.933228602789063,3.05681972741394,5.25100051042854,3.41107789793715,7.14873207059354,0.396963036895314,-1.56702484116618,-0.454304819290461,2.61172014108513,1.81863148747009,28.9150257938682,3.30390656317642,40.6196494160402,2.06996069713887,1.86134172457941,33.8077657515154,-7.53599407329727,22.0686824983261,38.7955860242263,44.8437612050267,3.57892643879643,53.3553797303728,32.2112143086004,58.9861320726725,66.9865404163875,38.3755736056869,34.1151753026829,35.8873141128323,74.5244728685009,33.0785756496519,29.9203519547571,29.5754691854134,26.551351218699,31.9212357045232,30.933886218985,26.7785465446185,24.5271529703808,25.7009063719617,24.5720588215979,22.4517563390774,21.3487924314142,27.889457469034,22.888131919492,25.0291203947985,19.730309280791,24.3177806357223,27.9972324310687,21.746654498971,28.3794653851112,23.8612866205154,29.989238848664,25.9644565298042,21.460085167771,35.8036853177335,34.4742869081137,29.3749346661107,31.2079037511305,29.8698002368565,25.9657070842536,23.2834947476615,26.9379934031961,22.8090983096478,20.0586677407176,-0.415558730458573,15.8686193986391,62.1763633888223,24.8830142358296,12.8611830633861,6.36498700843196,-10.4938140143975,-19.3305273919698,-24.0548433985799,-43.7775327513398,-17.4302322539655,23.3141158665536,7.06661440852718,23.6096491653604,17.6156704451277,52.820596550523,5.34768638999727,-7.6789234736807,-8.49022067188193,-7.50940480593139,-12.2164833035882,-10.4225780802251,-11.3754406727576,-14.4225368243903,-10.4917150403434,12.137288949164,9.42325623958389,8.93214264260015,7.81899474896281,9.258943461029,13.2506103093625,-6.79236271000317,-0.282792836095838,-15.0781174023951,1.33072803662905,-2.99322124870091,6.52222321199035,-4.66527230016849,-6.82297686530835,8.04811929078429,-1.96855220865272,-2.06126516870269,-5.06026509486484,-7.37054859759295,-6.59440043768651,-8.81596315323405,-3.80713091865399,-46.7941376132459,-10.709899162952,-30.5455204344616,-41.7758732233635,-36.3647015187431,-78.0791767472877,-18.0719662685915,-14.6904692306242,-12.1077730686793,-6.48988464585907,-16.8653059436213,-12.9000535821557,-12.4672317521575,-10.8019598104201,-12.3051990340298,-9.36300946474537,-10.0242103347842,-19.0793699544368,-36.3064993889595,-25.8425523595371,-49.3205325082205,-55.4745158974891,-48.7765224812856,-34.1798895989171,-38.2890131227454,-15.9730745533785,-34.472434018719,-48.6203575052861,-31.3422144471375,-60.2570542077141,-39.031647055876,-24.9176273977183,-25.8291723377555,-22.3077657451265,-81.5723933783858,-19.7689231370587,-36.0477711101371,-26.5405638564921,8.93148464720859,2.43129064311432,-0.319351144967859,-2.92897512908056,-1.24990589061787,-9.04865192656496,-0.918757904769801,-1.54520816107967,-5.47838263807209,-3.55668727999202,-0.287957006710714,-23.4389881759699,-15.5088666835566,-9.9009022404572,-7.62191594816674,-6.527534159136,-6.46961796219232,-3.16101918865538,2.21709760225461,-3.39320154116531,-3.05906307496047,-3.94303094162255,3.93003009210322,36.0804619277851,20.7378580854553,-5.72985743179053,-58.3076984528723,-0.541349396100257,-6.47313091285481,-14.2674189262107,3.19705107525733e-17,2.75655730773946e-17,1.02549403209092e-17,1.23916286822314e-17,1.13060879488874e-17,1.21917719829662e-17,2.4155611405485e-17,1.47509004382334e-17,2.27066349288201e-17,2.33040212047221e-17,9.2804012107391e-18,1.10137693718632e-17,2.52875830522647e-17,2.35055665603961e-17,7.25959682531263e-18,1.27335827069474e-17,6.96603665945588e-18,1.14524248137973e-17,1.73363897478599e-17,1.73494040469767e-17,1.05032950682307e-17,1.79356025989518e-17,4.66936727217303e-18,8.89318865837305e-18,1.63568722278205e-17,1.47571705143158e-17,2.60506835919914e-18,9.75448114426315e-18,1.23352970308762e-18,8.10834154647936e-18,7.45094611320803e-18,7.79799263633244e-18,4.23705940692875e-18,7.62678193045426e-18,-9.95120655357691e-19,5.4094483024394e-18,1.90723576640352e-18,1.32346015822762e-18,2.65327654977673e-18,-3.26819305226282e-18,3.17830555759191e-18,-3.19456835954478e-18,-1.48982070433998e-18,-3.48465347009704e-18,-4.20494831009029e-18,-3.72440342745049e-18,-5.35270788811051e-18,-6.81021014128487e-18,-7.17903240086263e-19,-1.10269682520373e-17,-6.37000001897833e-18,-1.01121488045612e-17,-8.79333343188401e-18,-3.17733941115254e-18,-1.52094124614179e-17,-9.32781331014224e-18,-1.3593934380509e-17,-9.32890334163889e-18,-5.42979979356234e-18,-1.90729955518824e-17,-1.15167484019143e-17,-1.73930701414683e-17,-1.0235866688065e-17,-7.35347008338009e-18,-2.2079711244867e-17,-1.30131176061809e-17,-2.13811632056967e-17,-1.0902157063023e-17,-8.86486053291303e-18,-2.49044219886883e-17,-1.44670982266005e-17,-2.26380880728763e-17,-1.14583623956425e-17,-1.07766380061974e-17,-2.50087503650799e-17,-1.50196296598819e-17,-2.45999642591858e-17,-1.14738473796236e-17,-1.13766751269467e-17,-2.55739972480058e-17,-1.58290241270701e-17,-2.45918706458532e-17,-1.02084816413098e-17,-1.22080515228998e-17,-2.45536175342229e-17,-1.48346815892472e-17,-2.36898050271958e-17,-9.38692420498697e-18,-1.24191010875764e-17,-2.25803594738273e-17,-1.35532938592031e-17,-2.25598889550554e-17,-8.40718448201566e-18,-1.21150850983387e-17,-1.95905576658108e-17,-1.21375590038462e-17,-1.9518779448068e-17,-5.89722352327159e-18,-1.09005643332208e-17,-1.62743877958042e-17,-9.84151927147981e-18,-1.66893497828506e-17,-3.49001090050651e-18,-9.02863103278423e-18,-1.25493085799156e-17,-7.29530562658937e-18,-1.24837232090104e-17,-1.53079005377806e-18,-7.64125201090526e-18,-7.37305247657169e-18,-4.49947076673057e-18,-8.05003113316959e-18,8.08127266771225e-19,-5.62727844913323e-18,-2.34049877985845e-18,-1.91338593047691e-18,-1.44911259788571e-18,-1.40189931184729e-18,7.18280300945333e-19,8.15452048497088e-20,4.48189650631381e-18,-2.8049187356561e-18,5.53115071500167e-18,-8.39738115566838e-20,7.0192736439413e-18,6.00140345748368e-18,6.95709027456803e-18,9.86751820672214e-19,1.09395506564916e-17,1.03803078474424e-17,7.34628829436059e-18,1.13993732985808e-17,9.37828735342465e-18,3.83618477322444e-18,1.60199540773658e-17,1.55428035061195e-17,1.01380101694626e-17,1.65220276543024e-17,1.07542388843436e-17,6.03269111170253e-18,2.21774946864635e-17,2.14752836195433e-17,1.04616657654004e-17,8.17980314309313e-18,1.2232602017324e-17,7.8934382345718e-18,2.60265419738545e-17,2.47136810752246e-17,1.09655492823278e-17,1.0430280335162e-17,1.23260085592741e-17,9.53461033494245e-18,2.85851532515726e-17,2.43604736668387e-17,2.1395809374292e-17,1.71357004538829e-17,-126.19462335785,-7.34741828591374,-4.16668793592326,-193.008538550926,-78.0847797363778,-157.15543868952,60.5099830307087,2.43663026877363,56.7169931187574,-2.26210763116681,-75.6665076734606,-6.15635683343469,-288.661477008253,-173.053011161158,-262.74908760109,143.725385999576,9.05254758445672,24.1073333784303,149.350739982966,-68.7717879540108,-12.1618318608093,-238.685384120961,-356.864408655827,269.795332530166,172.450490030501,242.848901573117,-525.672732691924,-13.3175332237385,-572.684023787571,-302.632746720058,-509.323745177256,284.671523780509,22.6429096954009,217.733119552507,381.901232881943,371.779975702769,212.407746114966,-22.2545297671765,-303.642698529986,-337.949658188904,378.983132715905,287.050813680691,665.656793008415,393.456416233824,-477.791595683827,-18.4056258442076,-617.625417007658,-410.119699306504,-380.114070307287,361.232964479785,31.3403902170796,379.981899822789,495.953653457638,496.960066755401,-20.3581696969412,-455.568408724325,-373.335670203078,15.8788735309618,442.2899455,766.427053653245,435.648676684868,-503.171746643223,-8.32848109570717,-424.581440145861,-308.549057743589,482.326302551094,27.5599541550287,544.341958944146,-602.192076670788,-22.3669940093955,-518.878293946086,-413.995539474644,-215.505305568007,434.254223228035,319.819275367852,764.493305930304,435.969826805589,523.576639015218,-16.4048770944115,-412.815366774203,-250.833123503008,303.781702876664,283.168594733095,686.582114945486,389.78820020749,692.17642255087,-379.210393349281,-18.6907457102379,-375.53463736868,-350.530512951251,-339.629044671865,173.698076671234,14.672720404094,350.614198071664,310.801773368094,650.257599608383,-17.2130951906749,-249.226242330211,-155.617499438275,118.62681846221,12.780518713013,295.934282227346,211.82501635579,-244.932757609343,-10.9320972826089,-156.186811288116,-224.497335147731,-78.4096716799264,41.0267113204538,21.1664111546587,226.812977290739,98.2074439601464,-7.91225300327275,-148.462163621805,122.692828962472,59.2655324054417,-44.710724621546,-3.82699964063502,-18.8216584994889,-1.12248306214614,-3.1648087091302,-8.55901005373326,4.83276350547329,-1.26826279731556,-7.15154083542229,2.12314448715487,-10.057627971042,5.38376391287314,66.3638227041746,293.639379121176,3.84743107494192,-8.08571033185744,6.92125949301669,-20.9591128856844,10.8804477081134,100.627059677994,462.31359550256,5.5885207650134,-7.58713371832062,7.99536839898477,-4.60583221886875,-13.8478534390653,84.583023703068,536.083733030758,16.2607293873069,-16.1443766915856,79.9003257251334,480.088536566968,5.73639937966785,-8.44940493364156,4.71538327545937,87.0172635122238,415.497355431109,4.43603078044833,-7.14358937728934,2.64479190786383,9.2600920388449,-11.3766146491553,2.46158911632431,7.38877585068555,-1.10140310694093,0.338757616489007,1.06261886015491,5.15722735381468,24.690365802013,13.2810597969048,42.8346985785208,24.8633979527732,103.761747633233,27.5333807192779,49.4501397515855,29.7939182979644,42.8194640392381,26.3771372419343,-0.0322860478701037,-0.7557384255534,24.9544798747073,32.3273353542697,44.5746873485226,45.9244705087613,70.1301485121501,48.9973796890446,42.7965603153256,38.7853070142516,6.87340571365192,-3.31586968713269,23.9565352357809,39.484774809028,69.8355219322527,42.1947696773853,56.7210668517023,62.265270963715,43.2566811571606,52.3153044678953,37.3250302142013,24.4308376198735,41.0371696436859,42.8320260589355,43.3177557145377,47.6745561714535,47.3212752953209,39.6217993469922,28.0676137545591,27.4206737960434,46.8450205389085,42.5698522805029,44.658717422779,58.0742467589592,42.1234328696186,52.650132684171,36.5016914967972,18.9654404055029,35.618349784202,36.0705617519314,19.8579238122117,20.8303422402819,28.3671179533399,38.3319880423454,52.9998681786681,36.7083964768927,35.4923660566506,47.1186799343058,34.5571107392605,-1.75814446507277,-13.2993534324842,8.97018609697211,100.994083033942,67.3233199471293,47.4510222102819,45.6407064703358,49.8322153759249,49.5698815766461,54.7576940827833,49.4361697597467,38.8420239620104,579.080556096715,5.68127786931083,315.477574546089,659.076841541124,61.5371083808164,55.6380660719881,43.9635163363809,40.8991998704002,41.2950738081938,61.7754783411882,36.4596865622813,49.2448984238545,30.1238026142465,26.0290094273685,33.6574211877582,32.3724036279873,39.9004770550048,38.7913212884939,39.090685483926,33.6060680688401,38.2003954097687,35.8089993088267,26.3517727072276,29.952470403527,27.5018458550151,30.83574352985,27.243709195314,30.6747431294964,35.1297344461933,25.8176633030545,32.3059168494278,31.1652666300187,28.6645069057479,28.2067280010867,24.8566662896048,-2.19170392598962,-7.73532038078987,12.8568199759074,29.3387259463052,19.9024692624622,39.420615960071,36.4706949367719,43.6271910004311,51.1173660399643,30.2493526335616,29.8738002461212,27.7360586577642,22.5968264333222,25.2614693085924,24.9114291562732,23.7698185551557,31.9476967795616,4.15108816924601,-3.05201603940729,-5.77916123276158,-5.72359651839536,-3.25991882998003,-11.4542933005365,-6.00220966705047,-3.69032457824629,1.15509069549573,-1.04664240299216,0.766339732339876,-0.97841415529081,1.06290618835935,-3.05588127401853,5.03193873536387,3.90364649114631,-0.841886063318385,23.7201075379844,30.9443029911488,24.2686909556402,22.8189294129063,40.7479536049044,35.9626821900026,28.1599737423017,29.6470836330945,28.253930663163,29.1442342983439,32.1242345955113,33.7459879865081,20.1318314411736,34.8611745423872,27.8091471639039,49.1434152076336,27.3200075054574,29.3955656852646,39.6361332630394,22.098115035177,74.3097483506913,24.2415907110649,24.7918720917941,24.5512171764375,26.5357437652462,21.7198633287328,19.5191895722704,20.6365497099754,17.672659474641,22.8710741244546,19.2545591173556,18.5358628060594,18.5537147632322,13.9061080221024,15.9984193196617,16.7322641664566,17.4020927768483,15.4056911555146,11.5045337158,17.6609869299477,20.6405783817151,21.4641576483621,21.5992283258506,25.6669435764584,19.0646793958615,19.8876613832506,17.9145414407426,13.9216604533182,13.0588934257253,11.9512370721631,25.8927410973343,23.03584582458,14.7134393399453,14.8404142837857,11.2724537524808,13.1243686013936,16.3313780387265,18.4225011388771,13.9585424968258,18.2092541769927,17.1164617887267,16.4069900111046,13.8394121267502,13.8019453820512,10.8676112496217,12.8849812434957,12.2084470783612,10.2470189067292,-0.50634420676252,2.31322027972727,1.64030478709,4.83239649192825,2.92170051616494,3.33379946427113,4.46404737336812,6.84033973627756,10.2541022441443,7.07851485278263,9.28568252713902,14.2549420641212,11.7113672873893,7.37405345839128,5.51378619493446,15.4967795496042,8.02868694070361,11.1281889087311,15.7744395943011,16.1783297678749,13.3976071488162,-12.1787190250832,-8.24232699289015,-11.9449376101452,7.49612280884597,290.775198439045,8.02554381095969,32.5003515847841,31.7584504750591,30.8726469565644,43.2662509480862,66.4228091046795,26.1373687043971,34.9891187584288,55.973740839333,25.4382501904887,21.1768698701433,14.3699107793965,16.3436051472014,15.2353581559903,16.5993524533707,34.9598986252374,31.9639012264518,30.1680696543554,39.4374084841727,22.3763529040699,24.9898676031907,18.8282199768132,23.406941219459,23.8416200779768,22.8097043975972,18.0831178268504,19.5617709635656,19.9227473059553,18.4410960606313,21.8581231051206,21.4975702092867,25.6069402181704,16.5674136496312,25.0470976770311,19.8853044695708,28.2693889032506,17.4519254140598,13.9547205103549,13.7651283540905,16.6298044229258,15.4869480964427,14.4843319151666,10.1761499358123,13.1219270048632,11.1123934531678,16.0769857396974,8.27492086025046,12.5838209132196,13.9572058184503,40.009347595565,33.6707216726471,16.4980637674119,11.582013622745,14.3499647628976,13.524314832733,15.5893862972753,19.2972816204766,11.4108612884817,8.0149719467327,7.92515265034924,8.96875928610924,9.3748464476117,8.89740648791065,9.3679035393902,20.6105179509866,14.9846015387365,12.9240144144221,8.82728077900444,10.1501127663097,11.5567082104914,7.71602951876576,9.70349157151548,9.7705532420906,7.70259340511076,4.71036296977117,6.4080025230696,6.02184988646611,4.79120327443113,1.7200247419958,1.76940203433717,19.56432333887,11.3379325508336,-12.9986695472479,-36.1168902601759,-14.3880131487082,-21.1060566879016,-10.867790242652,-26.3197937683656,-9.25030447466235,27.1712103501216,20.1820532580653,22.3793752904003,19.4638537999882,22.265628396,22.9694128148202,24.4871952939842,19.6964001702194,17.0695092549389,16.7991554185361,23.6487674291622,24.964455705257,22.0434595177949,19.4722382080068,12.381607510888,19.2341716301384,68.9471785811011,40.0146182852479,39.892862394613,32.0826637220683,20.4609943558021,15.650720088116,25.5402945946379,21.762371038318,24.7098545409794,27.1468689963471,13.5131783756917,13.0304610904503,9.22503690293373,10.6024825089647,7.95411924262334,-7.57621830349252,21.5082834115469,18.0924331142823,16.106343864945,12.3398292009741,25.4204510029287,16.0670910930369,15.1422275722764,22.0907461781542,10.7843433075304,13.7139863221587,12.7980606982088,8.13984387619316,11.0561777098903,9.96294869005271,5.84355557413824,7.57556765622903,3.77640505464863,5.62779968744082,5.54140994082657,5.91941749915971,8.05541181611152,29.7464093322605,31.0139272044427,20.271576859477,19.2068361495309,25.3932322029533,20.8289698192502,24.286723627311,22.4421550700657,31.6791002921537,10.8934405883189,-7.29435265085413,13.570011096273,14.442363265038,13.8581620680935,14.9247733809214,28.4005128831256,24.455769717999,16.7565041396362,18.980599115411,40.897384775834,25.6602338263096,34.62154443367,19.2712385917899,17.49390643482,16.8503698471254,-5.67047489215304,-12.8011269397952,11.0799203468298,21.426433887363,18.0249530890117,21.3302217837156,22.910840990323,19.5290190820021,22.8494274767676,15.9840082522388,-3.06607652451165,-1.64683886801954,-0.14387350251859,-1.00627087881932,-0.147559218863935,2.83250819495574,-3.05322493008049,1.18392853213771,0.380657516830753,0.413931148727203,-2.87654126509171,-1.45311591257041,-3.69477862320983,-12.1622457034633,8.73241582264822,12.6747597575862,11.0792259846927,14.354912020296,24.5371708138654,-1.9836202011938,-2.34119784312678,-7.57152467387382,-6.45843598473899,8.98378115133761,6.70400927926133,10.4201119510115,8.12757754879238,10.1558350229589,7.87718370827605,6.13706136664904,12.5268667119167,18.3339617922673,17.44916781918,24.4173716534878,30.556338285866,25.9744107230475,22.6366595785482,29.1878007512407,23.5831994321678,21.0785563738419,23.0587512660632,19.9100472532287,17.8949806888032,19.3152782926395,20.1270477008339,-4.94198065296313,-4.89819406681751,-6.15186129404167,-4.84098571608177,-10.8562623932449,-8.55431359981737,-7.51192152557011,-9.85313613557256,-10.3922946719006,-9.30659122047358,-7.84734898899945,9.27609449945654,12.0123115988261,10.8591310226514,13.0878957792559,11.5382624907644,2.98066790565752,17.9542170174087,14.7866079476272,10.9576299544387,13.1457460394191,12.3731379620238,12.9534433918481,17.4176712005424,-4.57625354335716,-5.55081806918587,8.54157433268668,4.54449576004606,7.17938095209168,6.63581448730659,5.89595447909592,2.4168620884101,4.02945928531483,3.64596103431511,5.00009290121917,1.7082104687726,3.63021614832897,0.516712851182127,2.8938250230265,1.7383810747852,-0.900977659386476,0.0899449091176461,-2.53812760133799,15.3382352237285,10.4004132233532,8.16758284380408,11.0681961736363,7.6413430969366,9.59449323540728,9.23355275201986,-5.15566242728503,-0.0963299528866221,4.46002636912373,0.855187023663758,-0.494981483753552,13.9730967330595,12.8820030432886,15.1199240792644,-3.56972924342961,-8.47053830088646,1.14145060806258,2.05886554804814,6.38520232126381,4.7499943026689,6.66066083655153,5.0826562943513,1.88959579510895,8.59828584030654,4.88278619253433,-4.95282524030821,-1.21509936527773,1.05263978071489,-1.2800325237891,0.414622578247009,-1.61404111810608,-2.99200412738923,-2.83588819023837,-4.38162707685142,2.72023550766037,-6.04152815887853,-6.24698676061487,-4.8531155519066,-3.23454010827579,-6.25610950978495,-4.2586032379362,-9.50308497708985,-8.40676961585753,-6.16397261460032,-7.86157656623896,-7.49360469697652,-12.4833907084943,-5.56366087748838,-9.89037136513585,-10.0563062246916,-12.573812122387,-12.7706699194509,-10.3089077357285,-9.70463867437335,-13.2571408164276,-11.2786865730178,-10.0210325891308,-7.96805524683133,4.15983659981777,3.58319891856307,1.34105331605241,0.960273687404996,-2.5065512215587,2.35040707992877,4.1162574772466,4.40429347077199,2.86046807834622,4.00216559670184,1.99860265165492,0.144862501969196,2.05838499990768,-1.43086132687394,0.513388081259472,2.35961549243313,-1.28261067889971,5.13380390049458,4.35414200094804,3.35145889623963,4.4198195747218,3.00966622617344,-17.7740442375408,-8.02485248145363,-6.30864605841945,1.23130043015519,-0.481789757545243,2.30199002563224,-1.11541947871349,-1.53917053834849,-2.02344823731813,-4.90047396952369,-3.58408098243677,-4.05153379747139,-2.90553116458341,-2.80582147357137,-0.168093885469714,-1.4478333765173,0.612887375219175,1.80120436089177,-2.77142551165972,-3.91697292631266,5.0296794684559,5.84497747836148,6.53823417983428,6.43196828597895,4.90881155991603,-2.81224033791358,-0.359502826974412,-15.9315328022947,-14.5313792544671,-14.6995565374969,-16.2281558259649,-15.4439039246263,-21.7130833017961,-14.3402760640385,-14.1701224019136,-20.1030890420972,-18.3523927892274,-14.1462539918946,-11.3994593867379,-19.1194191133884,-20.5726239777828,-10.1430532527776,-21.3985581359462,-19.303157216333,-16.9689069308969,-13.8042483817288,3.56290418968558,3.63782413918065,3.32834920400777,2.90731007314656,5.22680506274594,-6.16737841150998,-4.15986524696245,-6.54349986203054,-5.11290700605278,-4.16979292091419,-6.05792184726945,-4.009475109583,-2.27220447077294,-0.398402813893113,-1.56088424945191,-0.880828897203347,0.959252919166553,-2.65480097263699,-5.94273690561049,-4.71358029872255,-8.39897053912648,-7.50482394186749,-8.55073830108104,-6.50943288124862,-9.14104698451917,-2.11590392302007,-1.39914222151175,-1.83565585923817,-7.29282632252309,3.45934889908245,3.69190168537539,5.34336453390298,7.12235002367145,1.22638105649517,1.44471485723464,-0.278494605833077,0.892829817794594,-0.367745826966146,-1.62591377260085,-2.2178802027172,-3.29379741895337,-2.07598392654597,-1.31149594802987,-4.25432380561584,-12.5634055236787,-16.4305487884583,-20.0136027421114,-14.3094113095159,-12.7199293172953,-10.5232202998292,-8.25625014960993,-13.412022536941,-13.4691649151434,-10.0209498080813,-15.6442576276048,0.754140253166217,3.63698343162681,1.73977825037563,5.69786505503496,5.96796853507121,6.65991554337576,-6.64511115137276,-8.02380856875171,-10.0562427199704,-14.5424356987708,-5.8985374794601,-7.97927476872018,-5.91303222883261,-7.35963544612584,-10.1455737338325,-9.66015164733828,-11.9891888359239,-9.48443409173274,-6.0194427523015,-7.50617928984409,-10.2833352073785,-7.91004949385206,-9.33217346942958,6.1777232663648,3.64281842545406,0.643373642639339,0.479601981220689,-19.5822353193566,-12.3612895720571,-15.0415199938896,-12.3028370618689,-14.6230768679237,-17.4783206306243,-9.15286149428821,-10.2203777537127,-8.35067891197163,0.826000339790714,-0.581547788388925,-2.22018770102356,-1.09240067767113,-2.2811384646134,4.80057922819404,3.38782791295135,4.51416690722775,5.64130135878193,8.88590539596993,-4.90700156551156,-11.1263746820644,-4.03316793097506,-26.3643878277096,-7.42623073185278,-8.76260368055202,0,2.14969687689724,3.28751243151192,2.4413797360671,-5.88938321819924,-2.52208893642959,5.21584713117892,7.71688272518563,6.76261333310389,-11.0073743601535,-14.0414836716266,-11.2264945189869,-10.4638229138201,-13.7562585396423,-14.7730911788733,-13.4912532818849,-20.7824025235552,-17.0688587900634,-15.6683684429686,-16.8266872139987,-13.6510069069592,-23.4919954185956,-8.8152415191014,-12.7611047211531,-6.77974664955945,-10.5737978057427,-11.6702410680022,-10.6107870157845,-12.9466058089006,-10.768678870581,-15.3562518653171,-8.18556650342249,-14.08440912169,-15.2728829619944,-9.73638437448451,-9.9492305393171,-8.03635442535227,-6.14029469300834,-6.80996018042612,-5.25840232171008,-4.1371302163401,2.03099772076438,0.813698351065243,-6.20619362395249,-4.71014301379441,-6.8663334102374,4.67122447760582,7.4821468698128,6.88709910063272,8.73837813918496,8.9910907621604,11.0060196625281,8.63111893616822,-26.6318842764163,-16.4854633767524,-28.9341771152817,-10.2189625550373,-13.7909460754115,-16.5313439275757,-23.159220096636,-26.8545751736632,-6.81129766767638,-9.44762910574792,-8.64547668830369,-11.4503665290998,-11.8621527837728,-14.7790806344357,-13.7676402449683,-12.4904043081561,-14.1837481273512,-3.69069666544688,-4.4468064549531,5.43219802938633,6.65544197759651,7.29408066757254,4.71735574921487,6.35355595052716,6.2570871832,-13.2385890348032,-22.1153901988359,-25.1377391118054,-14.8187244257804,-17.5518533464693,7.790954490663,9.62963397061046,-29.2245454533099,-27.0591726401446,-37.9195806576882,-29.9245892085182,-29.2524476777316,-34.865798726929,-25.6513860771907,-32.7535461801971,-33.428165851356,-35.0562841727758,-25.8271015662391,-31.2980433347196,-44.4848500217154,-31.9087108801738,-29.3003892544743,-24.4534201615104,-32.8151249457253,-22.4900692929845,-16.5328066793046,-21.1262623194913,-32.2783290531352,-43.3161426416141,-33.4305771283832,-23.0267879103329,-25.1152895778627,-18.1715255793973,-30.9085485100569,-20.3366695443315,-17.0838069099412,-32.0683521125325,-32.3864972258448,-41.3340393007564,-27.1360371824928,-17.7759328252751,-18.3983957303212,-21.9366670281631,-37.8664670017988,-37.3527602256666,-82.6238475859895,-42.4996480726797,-16.8387424655184,-19.4912005366279,-15.2419056003004,-19.4442743909494,-22.0917649323507,-20.7816491884853,-22.090443266279,-19.9928133923512,-28.4658361019434,-24.3264374964975,-28.0850054581426,-24.3638194052581,-26.7926259960231,-32.7776751599657,-33.0317062473614,-27.4129078428149,-28.8938340310137,-29.5549023084625,-31.918155469789,-25.3568391819672,-22.2730001018356,-28.2056230615378,-30.3927915850951,-17.4211673193655,-20.0025646142327,-16.9218137919706,-15.9406828364072,-19.5005504015688,-23.5711435913262,-21.7765041876059,-26.8951195869683,-23.8773909656486,-25.0768468268429,-29.3434082282523,-28.288353119477,-35.9943156480237,-29.9357855590444,-26.1025676808242,-36.7384195942321,-30.1049506554631,-23.2799815698188,-31.8180745125966,-41.1612985170093,-37.4668172893724,-40.6809420219173,-44.0364883018343,-75.3830932244489,-25.9616357138415,-50.5050198710263,-24.8245144085686,-22.143365310541,-22.1551444343935,-19.8461311978995,-21.7726488844703,-16.9874401227989,-18.907073248484,-20.8108532297154,-42.1672241957307,-20.4600257751902,-26.0390762779799,-13.8602441632735,-13.3603907703979,-24.6781423765387,-21.13224883322,-19.8179912885777,-39.5575720115512,-45.7734367037709,-37.3396706923062,-34.9099283579341,-63.1718869417896,-33.6823666993889,-49.9006937026703,-17.5671735398783,-36.7832535670238,-18.5613389491377,-23.431437004762,-26.7492685980075,-13.185375899764,-18.5409486555438,-36.9350835969313,-63.3742321319828,-38.0431605019713,-39.8377901110977,-17.6808991262303,-16.473531069361,-28.8586874523344,-22.1984015465171,-24.634006663064,-24.2299874653253,-28.3692156355419,-31.2131506512542,-23.4109969332454,-10.9536028882075,-13.1071526722913,-16.7497196359464,-34.071397437313,-44.5648730606044,-36.15312320891,-34.6448007811862,-41.2254559460576,-46.2782350332022,-50.5074793267192,-30.349582999129,-37.7815475488918,-42.9576541818658,-29.5054870722595,-61.3962103788087,-48.2933876788983,-44.9405121330291,-35.9037839857373,-42.249129884012,-33.3164957384115,-41.2184131872663,-41.6847963845045,-42.4870614516719,-32.508013083311,-33.134166634583,-25.9931999910241,-31.3344582554939,-12.8562722369079,-10.2522840382264,-15.1754715391357,-19.2757044172523,-16.8657672823288,-23.2895688388733,-20.6725202964363,-21.6597356777289,-23.4200617485268,-27.5062398151564,-21.6916693071201,-25.4834397433105,-33.305917252236,-28.014353506142,-30.6379748285328,-27.7475021933419,-29.6803764892972,-36.7368985067273,-24.053101721675,-25.9401737321484,-38.6517074390612,-38.0962346016786,-35.0412901717721,-117.917360898456,-22.3178143750366,-35.9838006047273,-30.3606664254481,-17.4254600704463,-16.7625964195299,-17.6886860894966,-30.6254808739337,-36.4127453476726,-33.0014947332435,-40.376410877664,-58.0977022628524,-33.5883877893097,-42.4952870888693,-38.0236770472464,-43.7141370962703,-48.2806828127215,-57.4917569954321,-37.3307239486054,-107.695465130674,-22.7983947927966,-26.3357039479457,-30.507313994217,-15.823156594063,-14.2165231662169,-11.927263375389,-22.7978938820695,-14.6748412894421,-64.6007335648554,-28.9886374416232,-26.8357734155144,-32.8040688865084,-29.7036576418771,-41.9896154324446,-51.327785955577,-41.1726127611664,-75.0286401413695,-37.711989276425,-38.136807258818,-16.4327480792037,-19.6232371267631,-23.4194278010097,-20.1017084579724,-42.9621973079336,-39.6524773866582,-38.3401345704011,-42.2630435338649,-63.5265821973723,-47.3342074150949,-58.2443759414319,-49.4838758839648,-16.8572767136726,-56.039111658562,-46.0258515926946,-89.8975127336697,-15.9966043620737,-47.1371279216954,-41.915051739606,-18.6892494311932,-20.7308758234552,-24.4777655733206,-69.4090854199561,-61.286132764664,-94.9003722203699,-17.2967080072788,-24.2457276033767,-23.9011777695446,-26.8758170873347,-25.0849503436493,-31.453352577313,-24.7858163187392,-32.7576705546091,-21.8989705525408,-20.7064893548334,-21.1870561640906,-22.9936646987166,-25.3165892894346,-32.652268877707,-60.3681199859017,-56.4023089325772,-20.7540278141856,-17.3994132869366,-9.78003789985825,-27.5133838180611,-9.72042463607999,-30.9209041500919,-39.5569261607895,-126.445374560081,-50.7795585120047,-203.232897732399,135.296854966728,48.2679640786991,-274.249456285762,145.744962994743,-352.911610571206,354.412628355365,-427.118671523106,308.685544084851,-457.342986082907,393.24733443948,-504.899819690056,497.941711050634,-435.182158484586,-477.021881676049,-455.791700068159,-394.412096833791,366.527025137556,-332.040492634994,254.801626018661,218.680109973175,-250.240813733211,47.7693158096285,172.252955085316,-167.426126904059,-64.6233357942643,13.0533348402883,4.45696548137763,19.0132506450964,11.5123873175769,15.040952390247,8.94674334180705,3.40197374328685,10.3885175446939,8.31144426074319,11.5035115529283,7.65453993299595,5.68739711308732,1.3379001310356,2.77463070575116,1.18111745040491,3.86878746750827,6.64579752101112,4.3171454645767,9.04761402684495,0.502406343570632,-1.98326581460095,-0.574979536914489,3.30545830356086,2.30170547632933,36.5955795203644,4.18150674402016,51.4092437921759,2.61979400731639,2.35576062017082,42.7879535292616,-9.53774249901686,27.930676286944,49.1006635619114,56.7553852751119,4.52957877410174,67.5279024712531,40.7673181093224,74.6543234044761,84.7798402144904,48.5690853446975,43.1770187424581,45.4198819240533,94.3200359741965,41.8650723065907,37.8679454427395,37.4314531877888,33.6040538861659,40.4003139385372,39.1506997459029,33.8915979705328,31.0421779781381,32.527709627014,31.0990119460848,28.4155041166448,27.0195654210086,35.2975946092461,28.967791960607,31.6774804996668,24.9711726835011,30.777191117086,35.4339972955714,27.5231096002602,35.9177608780313,30.1994408790898,37.9551304178403,32.8612652955335,27.1604202904602,45.3140392302565,43.6315193680814,37.1776516867963,39.4975031850246,37.8039659247715,32.8628480285085,29.4681730400091,34.09339790092,28.867765048148,25.3867513593457,-0.525941518236631,20.0837214264026,78.6919599139782,31.4925648922218,16.277434814598,8.05568668254671,-13.2812333619718,-24.4651987304617,-30.4444111763277,-55.4059398884145,-22.060137696425,29.506927893607,8.94368386079221,29.8809622249093,22.2948329071147,66.8510675092556,6.7681655873403,-9.71863752137713,-10.7454355378506,-9.50409045750691,-15.4614866811038,-13.1910753827849,-14.3970421014588,-18.2535231683689,-13.2785768479346,15.3612563262857,11.9263086782234,11.3047430320408,9.89591522915605,11.7183503178648,16.770303672787,-8.59658405484777,-0.357909683183794,-19.0832423374063,1.68420267135864,-3.78829564288709,8.25468875267528,-5.90448525490075,-8.63533009515588,10.1859009773989,-2.4914488890761,-2.60878872913935,-6.40439801068831,-9.32835056882858,-8.34603805394699,-11.1577033658118,-4.81840006892146,-59.2238304167643,-13.5547161281111,-38.6591742998655,-52.8725895483194,-46.0240753596593,-98.818958070786,-22.8723323086862,-18.5926251200088,-15.3239002900473,-8.21376025491539,-21.3451528348957,-16.3266303149158,-15.7788401863244,-13.671230385063,-15.573767527444,-11.8500588538184,-12.6868912049613,-24.1473275985841,-45.9504132891519,-32.7069803300391,-62.4212989557165,-70.2099341827596,-61.7327862653771,-43.2589227736295,-48.4595322334747,-20.2159224816196,-43.6291743049413,-61.5351399676277,-39.6674901596584,-76.2628342316382,-49.3994283050931,-31.5363721752372,-32.6900462399718,-28.2332660211757,-103.24006036952,-25.02004334534,-45.6229603112673,-33.5904011308728,11.3039102566234,3.07710222019156,-0.404178792849947,-3.70698414774258,-1.58191214281325,-11.4522000945588,-1.16280297322428,-1.95565407886646,-6.93357802630999,-4.5014323387399,-0.364445586618247,-29.6649694102118,-19.6284093963763,-12.5308293980787,-9.64648737189853,-8.2614104201565,-8.18811023339966,-4.00066491064196,2.8060141528535,-4.29452070053734,-3.87162670424685,-4.99039853549104,4.97394433531814,45.664334627353,26.2463516394044,-7.2518508121099,-73.7956808544165,-0.685145329439389,-8.19255631158187,-18.0572020784854,3.60450050953989e-17,3.10786784021679e-17,1.15618852317031e-17,1.39708846833287e-17,1.2746996783399e-17,1.37455571682597e-17,2.72341328210749e-17,1.66308347580919e-17,2.56004909662823e-17,2.62740113715537e-17,1.04631456005598e-17,1.24174235501197e-17,2.8510369040502e-17,2.6501242754513e-17,8.18479900380926e-18,1.43564191734929e-17,7.8538259469193e-18,1.29119836077304e-17,1.95458327717562e-17,1.95605056833531e-17,1.18418916476766e-17,2.02214125408125e-17,5.26445662442908e-18,1.00265845918523e-17,1.84414802553358e-17,1.66379039264916e-17,2.93707232292613e-18,1.09976448380524e-17,1.39073738224655e-18,9.14171233046562e-18,8.40053487711356e-18,8.79181088115278e-18,4.777053112921e-18,8.59878015938775e-18,-1.1219441994688e-18,6.09885757327261e-18,2.15030418031744e-18,1.49212905968455e-18,2.99142442535131e-18,-3.68470920384275e-18,3.58336596198776e-18,-3.60170138314488e-18,-1.67969149116089e-18,-3.92875650493751e-18,-4.74084960469059e-18,-4.19906149009423e-18,-6.03488585447749e-18,-7.67814005672687e-18,-8.09396701453382e-19,-1.24323045667794e-17,-7.18182718189085e-18,-1.14008955942783e-17,-9.91400327666923e-18,-3.58227668463465e-18,-1.71477820267762e-17,-1.0516600153657e-17,-1.53264187051665e-17,-1.05178291046474e-17,-6.12180276820248e-18,-2.15037609868896e-17,-1.29845049408857e-17,-1.96097368204664e-17,-1.15403807522039e-17,-8.29063597624772e-18,-2.48936687463496e-17,-1.46715795081272e-17,-2.4106093977021e-17,-1.22915867665916e-17,-9.99464617727858e-18,-2.80783758641697e-17,-1.63108632617475e-17,-2.55232081292676e-17,-1.2918677907034e-17,-1.21500708841003e-17,-2.81960004116077e-17,-1.69338122813027e-17,-2.77351163993404e-17,-1.29361363809013e-17,-1.28265799721853e-17,-2.88332854062987e-17,-1.78463603453538e-17,-2.77259912922668e-17,-1.15095056073723e-17,-1.37639114605761e-17,-2.76828629977487e-17,-1.67252934309157e-17,-2.67089615653246e-17,-1.05832444597916e-17,-1.40018583202001e-17,-2.54581222861612e-17,-1.52805987366058e-17,-2.54350428940568e-17,-9.47864142169895e-18,-1.36590968933976e-17,-2.20872840084052e-17,-1.36844349946498e-17,-2.20063579874134e-17,-6.64879749936185e-18,-1.2289791050712e-17,-1.8348483562373e-17,-1.1095775573695e-17,-1.88163305434e-17,-3.93479671517695e-18,-1.01792884730498e-17,-1.41486601577168e-17,-8.22505872733799e-18,-1.40747162333687e-17,-1.72588219548463e-18,-8.61509438494465e-18,-8.31271405525727e-18,-5.07290759189224e-18,-9.07597052355075e-18,9.11119364777586e-19,-6.34444916886133e-18,-2.63878456927631e-18,-2.15723815447501e-18,-1.633795324036e-18,-1.58056492215109e-18,8.09821816982241e-19,9.19377656197286e-20,5.05309357293044e-18,-3.1623927093741e-18,6.23607039776826e-18,-9.46758870656173e-20,7.91384773987381e-18,6.76625468634817e-18,7.84373938648353e-18,1.11250879534858e-18,1.23337460013171e-17,1.17032302720642e-17,8.28253890129619e-18,1.2852170921249e-17,1.0573506881278e-17,4.32508885353472e-18,1.80616234384128e-17,1.75236622245632e-17,1.14300528710218e-17,1.86276839802353e-17,1.2124817097334e-17,6.80152980798978e-18,2.5003914237198e-17,2.42122096041043e-17,1.17949568819405e-17,9.2222813784237e-18,1.37915908024378e-17,8.89942058127601e-18,2.93435048730864e-17,2.78633258998164e-17,1.23630580322693e-17,1.1759571523176e-17,1.38969015779395e-17,1.07497525067841e-17,3.22281993734729e-17,2.74651038340654e-17,2.41226067323451e-17,1.93195665516142e-17,-142.277546866514,-8.28381290506817,-4.69771312205896,-217.606587813541,-88.0363252640339,-177.18417551016,68.2217016657714,2.74716757368286,63.9453126596284,-2.55040282974476,-85.309855564988,-6.94095615636625,-325.450052710539,-195.107820370871,-296.235248622995,162.0425244622,10.206253079076,27.1797019818352,168.384803901023,-77.5364355736007,-13.7118013154347,-269.104736969045,-402.345133861536,304.179505014068,194.428510697257,273.798875543784,-592.66730128381,-15.0147914940383,-645.669964900858,-341.201896397011,-574.234710612002,320.951598321197,25.5286442453751,245.482202785125,430.572786018464,419.161621229181,239.478135031043,-25.0907670841329,-342.34056191339,-381.019785566825,427.282787426707,323.634117760414,750.491685336743,443.600624266663,-538.683933899183,-20.7513380838017,-696.338931691824,-462.387566017741,-428.557857805138,407.270442004179,35.3345785999211,428.408842801154,559.160662283863,560.295338320999,-22.9527246573681,-513.628504119201,-420.9155818282,17.9025628261707,498.657761916049,864.104651564229,491.170093979369,-567.298668200222,-9.38990765130441,-478.692389117916,-347.872214010625,543.796568270331,31.0723433740266,613.715834433514,-678.938683213257,-25.2175643760251,-585.006942614239,-466.757364163625,-242.970464169362,489.597923852158,360.578768961741,861.924456600624,491.532173203794,590.30407012238,-18.4956031210687,-465.426783888256,-282.800649784208,342.497281723813,319.257127889012,774.083843175006,439.464911003164,780.391119517941,-427.539011381069,-21.0727951635275,-423.394797230861,-395.204012322626,-382.913202121974,195.835096509106,16.5426910386898,395.298362726191,350.412027865718,733.129935664836,-19.4068248911389,-280.988979007053,-175.450232984919,133.745260093386,14.4093369573496,333.64974345708,238.821139048048,-276.14830943382,-12.3253427292624,-176.092101007836,-253.108486502741,-88.4026231893719,46.2553767138108,23.8639727662022,255.719246571287,110.723530360385,-8.92063320558918,-167.382982575315,138.329464904318,66.8186515401143,-50.4089005419747,-4.31473311810246,-21.2203921847988,-1.26553835838547,-3.56814900235458,-9.64981646324039,5.44867695507871,-1.4298970493571,-8.06297177570118,2.39372947307718,-11.3394263316439,6.06989982655555,74.8215862434911,331.062365520095,4.33776844460689,-9.11619687177698,7.80334213685605,-23.6302552876396,12.2671106543896,113.451514956994,521.233333884748,6.30075199641397,-8.5540789652329,9.01434127566451,-5.1928243212165,-15.612698578213,95.3627404940952,604.405135663928,18.3330844526218,-18.2019031417383,90.0832542268551,541.273609318427,6.4674770593938,-9.5262426754219,5.31633715538971,98.1072129550922,468.450579646545,5.0013824715558,-8.05400694085271,2.98185845490592,10.4402481182494,-12.826511786778,2.77530731139622,8.33044130098185,-1.24177185998126,0.381930714430911,1.19804473957826,5.8144922264471,27.8370392024215,14.9736696969472,48.2937836205317,28.0321235038294,116.985704454107,31.0423832762837,55.7523323011228,33.591015957591,48.276607509386,29.7387818932806,-0.03640075596523,-0.852053807043681,28.1348133972009,36.4473053490874,50.255525945077,51.7773327521381,79.0679129284185,55.2418700539732,48.2507848113529,43.7283157524402,7.74938961372038,-3.73846200623355,27.0096853104644,44.5169274959906,78.7357375479301,47.5722987283873,63.949905571074,70.2006929611799,48.7695459352148,58.9826490638987,42.0819334000948,27.5444353488261,46.2671679021689,48.2907705006346,48.838404163627,53.7504587718419,53.3521538752184,44.6714151801986,31.6447018512939,30.9153123747984,52.8152026436773,47.9951838816838,50.3502652652643,65.4755420249158,47.4918703730401,59.3601495941575,41.1536639553634,21.3824984324911,40.1577444100709,40.6675887102497,22.3887247387063,23.4850734165837,31.9823764807266,43.2172233655009,59.7544572665857,41.3867125331121,40.01570463671,53.1237386685734,38.9612553367997,-1.98221187932991,-14.9942947721227,10.1133949993592,113.865313749189,75.9033669907236,53.4984364368914,51.4574042940006,56.1831017039867,55.8873346702699,61.7363099858313,55.7365818981684,43.7922610139589,652.881705791093,6.40533056642528,355.683738367632,743.073149361465,69.3797294109262,62.7288813301655,49.566464002423,46.1116145167512,46.5579407645657,69.648478524842,41.1063056854135,55.5209339114911,33.9629425105731,29.346286792186,37.9469044958276,36.4981173667109,44.9856090785391,43.7350965182336,44.0726133015355,37.8890066584301,43.0688598580032,40.3726913384987,29.7101847654517,33.7697747987344,31.0068294388167,34.7656170167501,30.7157944507852,34.5840978569213,39.6068572977405,29.1080055777648,36.4231571544546,35.137136318289,32.3176662853788,31.8015455677968,28.0245339211954,-2.47102649661431,-8.72115133530269,14.4953624647647,33.0778114372778,22.4389473014199,44.4445918972425,41.1187170265295,49.1872755514831,57.632038900898,34.1044933015806,33.6810784921131,31.2708915845182,25.4766878837988,28.4809272204757,28.0862760629892,26.7991724488896,36.0192835866054,4.68012523696948,-3.44098142638588,-6.51568871370802,-6.45304253242068,-3.67538047004016,-12.9140902244985,-6.76716364361093,-4.16063944852232,1.30230168441836,-1.18003215653589,0.864006201551663,-1.10310853291667,1.19836868643895,-3.44533926734549,5.67323615064006,4.40114825668461,-0.949180564455448,26.7431259915432,34.8880118813787,27.3616238390656,25.7270968651494,45.9410926113414,40.5459603950342,31.7488326940747,33.4254678909875,31.8547639917447,32.8585327245905,36.2183203340845,38.0467587251495,22.6975406333916,39.3040706711511,31.353294884128,55.4065171267831,30.8018166291348,33.1418951391701,44.6875758878257,24.9144180149688,83.7801835156131,27.3310697931398,27.9514820013086,27.6801567254194,29.9176020874647,24.4879598707232,22.0068203800565,23.2665829208763,19.9249585263949,25.7858871800119,21.708463992521,20.8981731465847,20.918300253475,15.6783774395441,18.037344175026,18.8647141675378,19.6199093491684,17.3690755363979,12.9707335492856,19.9117983696429,23.2711250282737,24.199665679141,24.351950492355,28.9380773162121,21.4943849750871,22.4222522262062,20.1976672349949,15.6959119564856,14.7231892450342,13.4743671909516,29.1926516911257,25.9716582743983,16.5885994153685,16.731756730969,12.7090760635757,14.7970089302702,18.4127369492651,20.7703640570511,15.7374944465638,20.5299397520663,19.297876007195,18.4979853192625,15.6031814595232,15.5609397507799,12.2526382483864,14.5271127561995,13.7643574277592,11.552954269771,-0.570875443749728,2.60802954994513,1.84935407714458,5.44826316734779,3.29405778992499,3.75867685088574,5.03296965020193,7.71210952982784,11.5609403459146,7.9806389679236,10.4690999964097,16.0716687735277,13.2039271069217,8.31384260759936,6.21649284959753,17.4717727267712,9.05190611206394,12.5464253299578,17.7848192652937,18.2401833812166,15.1050704720556,-13.730840671015,-9.29277360489951,-13.4672648915141,8.45146913453175,327.833158202122,9.04836240491105,36.6423717012874,35.8059187122414,34.8072236152262,48.7803353519164,74.8880901890555,29.4684559599812,39.4483207882304,63.1073363005282,28.6802380115368,23.8757643968036,16.2012897220319,18.4265223463984,17.1770343806189,18.7148634687955,39.4153766836485,36.037553215616,34.0128511810549,44.4635245511964,25.2281160187196,28.1747111286876,21.2277898921868,26.3900480681308,26.8801247450845,25.7166961641285,20.3877279050682,22.0548285735471,22.4618096881578,20.7913288159369,24.6438402188026,24.237336517061,28.8704268062791,18.6788542116259,28.2392349118436,22.4195949347335,31.8721923133324,19.6760929264689,15.7331853655207,15.5194305621806,18.7491964016121,17.4606883001869,16.3302933045449,11.4730533749253,14.7942561635077,12.528616816335,18.1259235234272,9.32952141053119,14.1875709289404,15.7359874146858,45.1083546680482,37.9619000662551,18.6006660063357,13.058087913507,16.1788016775993,15.2479264666862,17.5761817778967,21.7566312818897,12.8651230025503,9.03644320528116,8.93517685327124,10.1117863480236,10.5696274478676,10.0313399643376,10.5617996979716,23.2372335341038,16.894319987453,14.5711205249781,9.95227705682248,11.4436978880939,13.0295574430156,8.69940194176516,10.9401568791103,11.0157652507217,8.68425345731006,5.31067703486452,7.22467293009329,6.78930691853045,5.401820064012,1.93923397312195,1.99490417394596,22.0577062373281,12.7828998331905,-14.6552901106293,-40.719821573486,-16.2216991549348,-23.7959264006427,-12.2528400532539,-29.6741302581231,-10.4292131740923,30.6340559616946,22.75416298953,25.2315235942671,21.9444323184672,25.1032801820809,25.8967586835276,27.607975548925,22.2066156525018,19.2449395892341,18.9401304016012,26.6626939144363,28.1460606014066,24.8527969036335,21.9538852806702,13.959586359854,21.6854782139604,77.7341789282842,45.114297082855,44.9770239647527,36.171451444292,23.0686538454019,17.6453322778835,28.7952875049897,24.5358849921093,27.8590116914062,30.606612414495,15.2353707194884,14.6911333395846,10.4007253667264,11.953720070886,8.96783510431379,-8.54177243106013,24.2494150676054,20.3982303829781,18.1590232065172,13.9124835967677,28.6601703995033,18.1147678496234,17.0720347329596,24.9061100310585,12.1587581905984,15.4617707138336,14.4291145877621,9.17722948700524,12.4652366355002,11.2326806123747,6.58828981730001,8.54103886179971,4.2576904851651,6.34503683659045,6.2476371146717,6.67381999525395,9.0820369497508,33.5374521930291,34.9665093799756,22.8550959616059,21.6546589522537,28.6294826888377,23.4835260868127,27.3819546916844,25.3023043676942,35.7164557140028,12.2817594173335,-8.22398429923459,15.2994465085426,16.2829759432603,15.6243209945305,16.8268670064861,32.0200274405002,27.5725449280231,18.8920434136525,21.3995890501576,46.1095680967427,28.9305124393113,39.0339008087873,21.7272691891481,19.7234242349652,18.9978718732263,-6.39315079958602,-14.4325716077159,12.4920051621617,24.157134198554,20.3221503392922,24.0486603054389,25.8307221497735,22.0179026155298,25.7614817667791,18.0210964834358,-3.45683385555578,-1.85672089659336,-0.162209517749355,-1.13451546755393,-0.166364961666917,3.19349831818751,-3.44234438460737,1.33481477051651,0.429170564084967,0.466684767112,-3.24314320030093,-1.63830884273845,-4.16566114100162,-13.7122679004289,9.84532199871602,14.2900995101674,12.4912223067685,16.1843794401666,27.6643202186334,-2.23642345950359,-2.63957272493838,-8.53648061996486,-7.28153390416157,10.1287226807863,7.5584043839877,11.7481072252999,9.16339987267456,11.4501494199969,8.88109449047039,6.91920157121153,14.1233581770062,20.6705407785182,19.6729838888229,27.5292532070472,34.4506028613297,29.2847297344749,25.5215975799168,32.9076515212468,26.5887695782237,23.7649212982195,25.9974829088986,22.4474910722062,20.1756135553155,21.7769215470291,22.6921472273789,-5.57181332497419,-5.52244634010042,-6.93588768118354,-5.45794704855867,-12.2398430325359,-9.64452146790426,-8.46928132493526,-11.1088729536104,-11.7167447620897,-10.4926734064067,-8.84745747363736,10.4582900187605,13.5432253847353,12.2430772555477,14.7558878149407,13.0087609012683,3.36054030161122,20.2423992811658,16.6710930250931,12.3541294225162,14.82111082431,13.9500374059968,14.6043000900304,19.6374731712099,-5.15947597974704,-6.25824426565761,9.63015863985339,5.12367081322572,8.09435998701163,7.4815184798959,6.64736672135107,2.72488002978202,4.54299531199028,4.11062197525061,5.63733171161196,1.92591402519167,4.09287047606472,0.5825655241438,3.26262969357746,1.95992973597815,-1.01580311227315,0.101407973508518,-2.86160027379721,17.2930226568,11.7258979855317,9.2085036582756,12.478786797095,8.61519707947116,10.8172672070993,10.4103265215555,-5.81272785723911,-0.108606761697054,5.02843618748688,0.964176670934106,-0.558064594028696,15.7539035531702,14.5237549980933,17.0468887624906,-4.02467479373184,-9.55006939298423,1.28692323066657,2.32125847924288,7.19896694758252,5.35535919860259,7.50953138191261,5.73041742892105,2.1304160759291,9.69409776791256,5.50507480320679,-5.58404000502746,-1.36995818277086,1.18679387242613,-1.44316677325965,0.467464316139458,-1.81974322451618,-3.37332127258927,-3.19730907830103,-4.94004526651283,3.06691699401176,-6.81149309612591,-7.04313645033426,-5.47162277609071,-3.64676734714627,-7.05342185186771,-4.80134260596187,-10.7142093872755,-9.47817368275978,-6.94954253376401,-8.86349829006543,-8.44863010090268,-14.0743413571932,-6.27272383072575,-11.1508536416802,-11.337936134809,-14.1762865638156,-14.3982329804103,-11.6227305449733,-10.941450174944,-14.9467023525763,-12.7161032283825,-11.2981670368624,-8.98354718807042,4.68998861472332,4.03986111692125,1.51196438444199,1.08265614595177,-2.82599962985232,2.64995563655407,4.64085553370101,4.96560038793971,3.22502155993602,4.51222316847524,2.25331535426849,0.16332456062472,2.32071668745527,-1.6132180125971,0.57881702760802,2.66033761881919,-1.44607350236442,5.78808356188715,4.90905734427874,3.77858689612126,4.98310522232642,3.39323432451387,-20.0392643103594,-9.04758296864364,-7.11265394164822,1.38822399874667,-0.54319164307475,2.59536805169098,-1.25757455377839,-1.73533073421398,-2.28132739538849,-5.52501680590554,-4.04085559577296,-4.56788311904847,-3.27582772895861,-3.16341049707876,-0.189516676951229,-1.63235307179614,0.690997048300289,2.03075956054199,-3.12463092824541,-4.41617308463284,5.6706889505706,6.58989293666737,7.37150201168021,7.25169301910181,5.53441698379136,-3.17064741611681,-0.405319806442565,-17.9619332790923,-16.3833366105445,-16.5729473136907,-18.2963595409169,-17.4121583469291,-24.4803157605815,-16.1678781986957,-15.9760392360416,-22.6651351479371,-20.6913207211498,-15.9491289071009,-12.8522679809451,-21.5561010174878,-23.1945101485506,-11.4357386720775,-24.1257058110117,-21.7632556953756,-19.1315159623559,-15.563536257159,4.01697991832357,4.10144807030889,3.75253198005511,3.27783335122469,5.89293729391451,-6.95338238380309,-4.69002091281465,-7.37743878081924,-5.76452345449749,-4.70121382308578,-6.82997608459477,-4.5204642451063,-2.56178646505378,-0.449177417525075,-1.75981175778661,-0.99308648315272,1.08150528550288,-2.99314312888379,-6.7001113526503,-5.31430439757209,-9.46938064962104,-8.46127918688042,-9.64049051381141,-7.33903012024536,-10.3060313200581,-2.38556613239262,-1.57745645335114,-2.06960174367289,-8.22226344738785,3.90022698289714,4.16241755069103,6.02435173281065,8.03006072944231,1.38267767357176,1.62883711159446,-0.313987460631556,1.00661686579843,-0.414613338816912,-1.83312899414219,-2.50053881924583,-3.71357672913717,-2.34055851623493,-1.4786400660029,-4.79651777970288,-14.1645536920336,-18.5245465542808,-22.564244231182,-16.1330798733687,-14.3410257222156,-11.864356258269,-9.30847120381473,-15.1213230350013,-15.1857479461142,-11.2980737057494,-17.6380462065454,0.850251954946755,4.10050021844953,1.96150497516235,6.42403171257122,6.72855863707173,7.50869110455433,-7.49199996097791,-9.046406014076,-11.3378645367035,-16.39580214775,-6.65027891321465,-8.99619658634815,-6.6666209516335,-8.29758708607845,-11.4385803768338,-10.8912934812156,-13.5171557322021,-10.6931815324835,-6.78659300620355,-8.46280726771405,-11.5938989156692,-8.91814886904194,-10.5215159951631,6.96504564276191,4.10707885536473,0.725368650086822,0.540725044734285,-22.0779010172271,-13.9366789933013,-16.9584924375553,-13.8707769799153,-16.4867206624872,-19.7058520918112,-10.3193515346809,-11.5229178245088,-9.41493447701114,0.931270278632037,-0.655663375475149,-2.50314039758326,-1.23162211256521,-2.57185905526023,5.4123909398974,3.81959097650127,5.08947668780702,6.3602592337568,10.0183731112018,-5.53237631393668,-12.5443798884586,-4.5471766074583,-29.7244076249353,-8.37266963424086,-9.87935716006776,0,2.42366584259487,3.70649074899425,2.75252233870737,-6.6399579835196,-2.84351755491853,5.88058282444028,8.70036388541346,7.62447725456879,-12.4102135236223,-15.8310060920751,-12.6572595374561,-11.7973889489907,-15.5094303307344,-16.6558536064182,-15.2106513734603,-23.4310240037652,-19.2442062256061,-17.6652298342757,-18.9711709975871,-15.3907648622431,-26.4859420331972,-9.93870344869628,-14.3874487416458,-7.64379413329248,-11.9213796343568,-13.1575595402964,-11.9630829488503,-14.5965910886294,-12.1410973933085,-17.3133354363765,-9.22877925248166,-15.8794021930393,-17.2193415503132,-10.9772417183172,-11.2172141465121,-9.0605507823155,-6.92284697012298,-7.67785823950797,-5.9285614780002,-4.66438840725448,2.28983902572789,0.917400458105088,-6.99714441629287,-5.31042904651161,-7.74141597780992,5.2665505221402,8.43571202644041,7.76482815980168,9.8520441850336,10.1369638678412,12.4086861760241,9.73111529061625,-30.025995263971,-18.5864597539226,-32.621704721047,-11.5213222652805,-15.5485386331705,-18.6381875696276,-26.1107560291797,-30.2770670903827,-7.67936618334796,-10.6516859205545,-9.74730287213119,-12.9096630041284,-13.3739295203181,-16.6626063905052,-15.5222625819814,-14.082248807828,-15.9914014974277,-4.16105895652282,-5.01353145614465,6.12450664813622,7.50364740342124,8.22367765293649,5.31856101184036,7.16328739265512,7.05452412525646,-14.9257862318313,-24.9338948186685,-28.3414281799956,-16.707302600462,-19.7887562136072,8.78387575623468,10.8568864671498,-32.9490791663528,-30.5077395616141,-42.7522565591714,-33.7383402738394,-32.9805374007626,-39.3092841867143,-28.9205370853189,-36.9278347816999,-37.6884316227254,-39.5240461252797,-29.1186467041207,-35.2868348024492,-50.1542392647488,-35.9753291139053,-33.0345889106476,-27.569895931382,-36.9972614772698,-25.3563250376365,-18.639836742327,-23.8187071469137,-36.3920534205908,-48.8365855119888,-37.6911502059036,-25.9614459707001,-28.3161175563519,-20.487402818481,-34.8477006563529,-22.9284844093356,-19.261059414513,-36.1553158860385,-36.5140071287017,-46.6018722296848,-30.5944001358552,-20.0413935899018,-20.7431865252017,-24.7323942030724,-42.6923738124744,-42.1131974738,-93.1538764046408,-47.9160324709262,-18.9847626353878,-21.9752642707357,-17.1844162665495,-21.922357603927,-24.9072586207851,-23.4301746596104,-24.90576851446,-22.5408053745483,-32.0936758026849,-27.426729910581,-31.6643100473949,-27.4688759714363,-30.2072227753833,-36.9550388888046,-37.2414450682502,-30.9065566866001,-32.5762200965047,-33.3215384811079,-35.9859773729663,-28.5884515449492,-25.111591377872,-31.8002998087917,-34.2662128868233,-19.6414148542742,-22.5517993447455,-19.0784210197792,-17.9722494429085,-21.9858057328989,-26.5751772759948,-24.5518193461783,-30.3227787024204,-26.9204544676334,-28.2727754537777,-33.083090454493,-31.8935734315698,-40.58162539158,-33.7509635476709,-29.4292197062436,-41.4205619584733,-33.9416879564728,-26.2469079959059,-35.8731415587414,-46.4071164286738,-42.241790584941,-45.8655407107504,-49.6487359087727,-84.990321249825,-29.2703266091858,-56.9416520331267,-27.9882844310091,-24.9654352295103,-24.9787155484444,-22.3754292100155,-24.5474727024152,-19.1524111242041,-21.3166926501426,-23.4631006213848,-47.5412427019673,-23.0675618236522,-29.357636616541,-15.6266684431513,-15.0631110376224,-27.8232579576702,-23.8254566142439,-22.3437029988599,-44.5990023666796,-51.6070503843464,-42.0984397397018,-39.3590379359349,-71.2228529698885,-37.9750291980195,-56.2603072780723,-19.8060288951031,-41.471109814597,-20.9268961067581,-26.4176657284458,-30.1583396766899,-14.8657913278251,-20.903907164161,-41.6422898825041,-71.4509861225926,-42.8915860854134,-44.9149329723602,-19.9342482836283,-18.573006728913,-32.5365942482539,-25.0274855802708,-27.7734973507973,-27.3179877671739,-31.9847415028635,-35.1911229374824,-26.3946206639591,-12.3495891252421,-14.7775989102984,-18.8843942562161,-38.41364011166,-50.2444608713671,-40.7606722446515,-39.0601210706783,-46.4794504265523,-52.1761829358193,-56.9444249351197,-34.2174975655896,-42.5966317664239,-48.4324093492032,-33.2658255006519,-69.2208746075229,-54.448157504642,-50.6679734134208,-40.4795558859139,-47.6335868929715,-37.5625296682262,-46.4715101005913,-46.9973316882087,-47.9018417430436,-36.6510096225136,-37.3569635599022,-29.3059136081138,-35.3278906371532,-14.4947449189526,-11.558890418027,-17.1095154902772,-21.7323041634967,-19.0152316406275,-26.2577171182435,-23.3071377929052,-24.4201692275401,-26.4048407481966,-31.0117833889399,-24.4561726509145,-28.7311867647276,-37.550603002711,-31.5846538295268,-34.5426436053505,-31.2837935459976,-33.46300376837,-41.418847015372,-27.1185587502114,-29.2461293967773,-43.5776895267364,-42.9514242346751,-39.5071412079086,-132.945385430814,-25.162117023783,-40.5697702544465,-34.2299935235441,-19.6462546967084,-18.8989121265583,-19.943027659497,-34.5285573537836,-41.0533820292089,-37.2073832358088,-45.5221984747984,-65.5019868247468,-37.869073108707,-47.9111156998154,-42.8696195541224,-49.2853025267732,-54.4338334617882,-64.8188166239098,-42.088352774724,-121.420756128334,-25.703945202287,-29.6920681168102,-34.3953306495103,-17.8397450222903,-16.0283535640387,-13.4473381569438,-25.7033804527948,-16.545082221107,-72.8337995139567,-32.6831057651425,-30.2558691347566,-36.9847963742286,-33.4892519966158,-47.3409985198463,-57.869275865585,-46.4198726211365,-84.5906947538783,-42.5182086125088,-42.9971676900937,-18.5270261345021,-22.1241283161378,-26.4041260069883,-22.6635786147244,-48.4375314757633,-44.7060029947204,-43.2264081310353,-47.6492737734135,-71.6227525021087,-53.3667341340938,-65.6673533880987,-55.7903679481891,-19.0056589881027,-63.1810383295773,-51.8916343882688,-101.354536673706,-18.0352979094529,-53.1445377669865,-47.2569320277876,-21.0711081906102,-23.3729304630636,-27.5973440537951,-78.2549536662601,-69.0967681084607,-106.994987559376,-19.5010937761076,-27.3357339133227,-26.9472727901266,-30.3010161881137,-28.2819117264771,-35.4619374926742,-27.9446544478701,-36.9324847886343,-24.6898934852577,-23.3454360513374,-23.8872488869975,-25.9241013583251,-28.5430719889998,-36.8136501534794,-68.0617588293091,-63.5905234233197,-23.3990330683771,-19.6168883706089,-11.0264586844366,-31.0198378621103,-10.9592479847618,-34.8616309658016,-44.598274205213,-142.560255154538,-57.2511793594036,-229.133994480441,152.539815970085,54.4194937836957,-309.201286327119,164.319487243455,-397.888569867176,399.580885454406,-481.552978947988,348.026094907441,-515.62924318863,443.364895960637,-569.246976197563,561.402088660316,-490.644120183191,-537.81612338633,-513.880252916351,-444.678101957338,413.239206308933,-374.357524080024,287.274919667004,246.549882773175,-282.132852862363,53.8572950894501,194.205800833132,-188.763815632003,-72.8592822934003,14.7169222434856,5.02498520369565,21.4364018669121,12.9795880564362,16.9578524954428,10.0869645730231,3.83553962775892,11.7124862574175,9.37069955019403,12.9695811164639,8.63007579150312,6.41222967963653,1.50840934051801,3.12824460956104,1.33164542936439,4.36184661104066,7.49277380526534,4.86734576974877,10.20069076227,0.566435718031391,-2.23602390797174,-0.648258030602926,3.72672373977916,2.59504723789001,41.2595175750965,4.71442051899405,57.9611151282728,2.95367468707124,2.65599146084216,48.241081130047,-10.7532838507434,31.49031233415,55.3583169807229,63.9885977194804,5.10685272612876,76.1340226152627,45.9629250326567,84.1686730729288,95.5846403633837,54.7589915681148,48.6797309126745,51.2084366763876,106.340690131592,47.2005829462341,42.6940406739034,42.2019194914937,37.8867357774512,45.5491478706851,44.1402761047825,38.2109260309749,34.9983605846587,36.6732163999915,35.0624377800493,32.0369292376835,30.4630845848257,39.7961104654293,32.6596036235827,35.714629486424,28.1536336275902,34.6996023686652,39.9498970458712,31.0308031504549,40.4953140687548,34.0482205238892,42.7923369725166,37.0492822021437,30.6218907586271,51.0891048187659,49.1921555496545,41.915772158181,44.5312780448824,42.621907261053,37.0510666471465,33.2237559668554,38.4384444330221,32.5468287418436,28.6221758915624,-0.592970342308194,22.6432992188273,88.7208877586656,35.5061472365107,18.3519189096778,9.08234684664715,-14.9738653820826,-27.5831756246953,-34.3244111572044,-62.4671717336426,-24.8716006393123,33.2674499480438,10.0835151752446,33.6891532321104,25.1362066736245,75.3709281547847,7.63073711803457,-10.9572331105213,-12.1148918048777,-10.7153430115406,-17.4319819447354,-14.8722171837058,-16.2318788061272,-20.5798506224953,-14.9708703075669,17.3189776928456,13.4462617880216,12.7454804630948,11.1571040456354,13.2118000924683,18.9076016337442,-9.69217909773529,-0.403523623813676,-21.5153136780331,1.89884654457453,-4.27109647410783,9.30671081403238,-6.65698470524042,-9.73586314242076,11.4840471418499,-2.80897257465446,-2.94126683687961,-7.22060903921098,-10.5172058834884,-9.40970216300652,-12.5797012686532,-5.43248296469474,-66.7716348250546,-15.2822022671353,-43.5861080045587,-59.6109575610302,-51.8896317825142,-111.412979127861,-25.7873057140287,-20.9621695560061,-17.2768608018463,-9.26056616774506,-24.0654942503211,-18.4073841499222,-17.7897806925017,-15.4135657294841,-17.5585724677887,-13.3602942746944,-14.3037770546344,-27.2247932811387,-51.8065818203999,-36.8753343284164,-70.3766060021146,-79.1578669152632,-69.6003455406036,-48.7720732353779,-54.6354764174559,-22.7923486896285,-49.1895116190183,-69.3775101325428,-44.7229290764924,-85.9821811963921,-55.6951579143461,-35.5555375559749,-36.8562420665665,-31.8314657363151,-116.397530551466,-28.2087326301877,-51.4373964686957,-37.8713430413791,12.7445415542861,3.46926472536697,-0.455689518396445,-4.17942220341879,-1.78351955930474,-12.91173024906,-1.31099685642152,-2.20489318369446,-7.81723061047979,-5.07511915721938,-0.410892498037211,-33.4456331280185,-22.1299597676904,-14.1278258892678,-10.8758877568072,-9.31428912707483,-9.23164716912828,-4.51053122688902,3.16362773244793,-4.84183758373973,-4.36504769542436,-5.62640184362295,5.60785063142421,51.484043750801,29.591328268092,-8.17606579690111,-83.2006004846755,-0.772463945973829,-9.23665987949667,-20.3585093139391,3.82856733703656e-17,3.30106245494725e-17,1.22806075447925e-17,1.48393578046475e-17,1.35393892721245e-17,1.46000232388607e-17,2.89270902016302e-17,1.76646585494894e-17,2.71918961493278e-17,2.79072846525684e-17,1.11135668819962e-17,1.31893287539597e-17,3.02826611860454e-17,2.81486414365237e-17,8.69359125994228e-18,1.52488583033815e-17,8.34204390082989e-18,1.37146321844239e-17,2.07608617968198e-17,2.07764468216882e-17,1.257802001998e-17,2.14784376802262e-17,5.59171142470103e-18,1.06498678995332e-17,1.95878593345505e-17,1.76721671591189e-17,3.11964976348539e-18,1.1681292234488e-17,1.47718989135184e-18,9.70998925936417e-18,8.92273793803925e-18,9.33833686079317e-18,5.07400941323566e-18,9.133306756223e-18,-1.19168769839131e-18,6.47798130045212e-18,2.28397369556965e-18,1.58488438701332e-18,3.17738055960916e-18,-3.91376205024066e-18,3.80611900106685e-18,-3.82559420834375e-18,-1.78410627556763e-18,-4.17298008147423e-18,-5.03555538368837e-18,-4.46008805509504e-18,-6.41003290304592e-18,-8.15543683585966e-18,-8.5971128751071e-19,-1.3205134820341e-17,-7.62827162766541e-18,-1.21096102968202e-17,-1.05302881838611e-17,-3.80496201088637e-18,-1.82137408488584e-17,-1.11703443343679e-17,-1.62791559865355e-17,-1.11716496807281e-17,-6.50235283920428e-18,-2.28405008460814e-17,-1.379166166649e-17,-2.08287383175608e-17,-1.22577662807692e-17,-8.80600738380085e-18,-2.64411356882976e-17,-1.55836099728339e-17,-2.56046028512664e-17,-1.30556695692992e-17,-1.06159440949699e-17,-2.98238139864539e-17,-1.73247966417315e-17,-2.71098091736914e-17,-1.37217426219423e-17,-1.29053566247055e-17,-2.99487504371945e-17,-1.79864700865252e-17,-2.94592164585312e-17,-1.37402863681912e-17,-1.3623919596467e-17,-3.06256510253897e-17,-1.89557449422938e-17,-2.94495241067624e-17,-1.22249718420624e-17,-1.46195184903862e-17,-2.94037148249336e-17,-1.77649890636664e-17,-2.83692726868888e-17,-1.12411314553548e-17,-1.48722568579618e-17,-2.70406773945833e-17,-1.62304877079345e-17,-2.70161633165479e-17,-1.00678628982163e-17,-1.45081883276402e-17,-2.346029745165e-17,-1.45351015231245e-17,-2.33743408205259e-17,-7.06210718218943e-18,-1.30537622262027e-17,-1.94890816813952e-17,-1.17855230781919e-17,-1.9986011468352e-17,-4.17939576974236e-18,-1.08120643232107e-17,-1.50281843487878e-17,-8.73635365159468e-18,-1.4949643842889e-17,-1.83316833600583e-18,-9.15063512417049e-18,-8.82945790404264e-18,-5.38825511571438e-18,-9.64016073972161e-18,9.67757344158134e-19,-6.73883962427067e-18,-2.80281952649716e-18,-2.29133870686741e-18,-1.7353570616656e-18,-1.67881769443441e-18,8.60162829527128e-19,9.76528996348365e-20,5.36720939644987e-18,-3.3589767575141e-18,6.62372369574273e-18,-1.00561231123436e-19,8.40579683286798e-18,7.18686586883848e-18,8.33133032880369e-18,1.18166576055808e-18,1.31004495516011e-17,1.24307390271841e-17,8.79740696978984e-18,1.36511013575598e-17,1.12307885590394e-17,4.59394966670088e-18,1.91843894506727e-17,1.86129869147357e-17,1.21405800794799e-17,1.97856380551523e-17,1.28785329849547e-17,7.22433380043389e-18,2.65582343776168e-17,2.57173149517988e-17,1.25281676449856e-17,9.79556672691399e-18,1.46489184651904e-17,9.4526359105366e-18,3.11675873020232e-17,2.95953958555159e-17,1.31315837084667e-17,1.24905826235891e-17,1.47607756820937e-17,1.14179901541903e-17,3.42316032765746e-17,2.91724190825105e-17,2.56221420902015e-17,2.05205301731684e-17,-151.121956366808,-8.79876016955102,-4.9897374047476,-231.133681968392,-93.5089337583783,-188.198488307203,72.4625722713425,2.91793995149435,67.9203497841909,-2.70894370645902,-90.6129783250084,-7.37242731905142,-345.681028022229,-207.236322007807,-314.650141942046,172.115585703196,10.8407051320037,28.8692757741696,178.852120720342,-82.3563386609759,-14.5641690185,-285.833114317694,-427.356143698953,323.08823772131,206.514784357514,290.819054970276,-629.509321865637,-15.9481570704029,-685.806793918449,-362.412054714143,-609.930904718443,340.902935885301,27.1155832154801,260.742130822138,457.338513451216,445.217995594674,254.364831767305,-26.6504862643966,-363.621503177885,-404.705146226219,453.843998437565,343.752208975642,797.144554590324,471.176202156555,-572.170182485571,-22.0413050233103,-739.625499379541,-491.130997934949,-455.198331108726,432.587624130113,37.5310845809472,455.040052874204,593.919807227048,595.125018213258,-24.379536550658,-545.557230200736,-447.080987774057,19.0154411420159,529.655860660494,917.820051905738,521.70273627694,-602.563696597439,-9.973613163995,-508.449378940105,-369.497019767014,577.600633919211,33.0038957165158,651.86629651336,-721.143597988475,-26.7851656655724,-621.372771762597,-495.772436160993,-258.074254816008,520.032835223696,382.993453218292,915.504329323944,522.087323458544,626.999184993532,-19.6453466439249,-494.359142927132,-300.380407157923,363.787965173289,339.103131964323,822.203273453237,466.783400248476,828.902629474498,-454.11615006025,-22.3827448628775,-449.714318824221,-419.771108102115,-406.716263372481,208.008807865551,17.5710355456434,419.871323616684,372.194716255619,778.703545210039,-20.6132127592032,-298.456117358401,-186.356758586576,142.059276430053,15.3050656192872,354.390436741389,253.666994895206,-293.314536890201,-13.0915239063342,-187.038527098114,-268.842487769505,-93.8980018883069,49.1307530627657,25.3474306419988,271.615540706193,117.606445236225,-9.47516717675873,-177.788023102655,146.928449498269,70.9723042386153,-53.5424726949378,-4.58295018693329,-22.5395169685237,-1.34420811145896,-3.78995610846456,-10.2496787063226,5.78738345717171,-1.51878384369888,-8.56419087698719,2.5425310525188,-12.0443199159392,6.44722345121846,79.4727259543819,351.642219441408,4.60741746011564,-9.68288768136015,8.28842186200765,-25.0991845668072,13.0296719467531,120.504009737845,553.634799552449,6.69242610131235,-9.08582679848272,9.57470042841387,-5.51562623741072,-16.5832318961646,101.290781471575,641.976816098562,19.4727253156639,-19.333389371405,95.6831061152832,574.920840086368,6.86951530651583,-10.1184231921387,5.64681700888344,104.205858773898,497.570907121204,5.31228377411714,-8.55466876045761,3.1672199390468,11.0892460218266,-13.6238471724452,2.94782894177109,8.84828712983331,-1.31896421448481,0.405672701227576,1.2725188819139,6.17593892987685,29.5674750962378,15.9044790160465,51.2958736063767,29.7746864372717,124.257895313872,32.9720732070365,59.2180685914049,35.679136727192,51.2776297753839,31.5874359563905,-0.0386635388074082,-0.905020089860244,29.8837598499582,38.712981844002,53.3795638618111,54.995970856171,83.9830173540564,58.6758744424361,51.2502018590937,46.4466022269433,8.23111548424984,-3.9708562919984,28.6886903440833,47.2842364997002,83.6301929312162,50.5295389963749,67.9252282051249,74.5645837466711,51.8012107684516,62.6491917701956,44.6978756886114,29.2566820879967,49.1432772276238,51.2926731816882,51.8743494359279,57.0917524522344,56.6686876993349,47.4483276130647,33.6118337554596,32.8371031878545,56.0983579293102,50.9787119902319,53.4801924692539,69.5457029088771,50.4441109673211,63.05015889339,43.7119021628312,22.7117002386887,42.6540731983654,43.1956109868808,23.7804766640066,24.9449777445351,33.9704992774564,45.9037387667593,63.4689779423556,43.9594377562789,42.5032037962359,56.426073501576,41.3832066877564,-2.1054322606427,-15.9263862092712,10.7420747087197,120.943531534474,80.6217535169326,56.8240636345351,54.6561546620071,59.6756159440088,59.3614631226502,65.5740287164195,59.2013390950054,46.5145225224075,693.466838782487,6.8035055965821,377.794132481119,789.264859623321,73.6925865794962,66.6283013454672,52.6476677114686,48.9780541657878,49.4521254246271,73.978041964139,43.6615999572999,58.9722857668382,36.0741833775545,31.1705421537623,40.3058006816363,38.766952492775,47.7820527695736,46.4538045059742,46.8123023696397,40.2443037367591,45.7461525277477,42.8823818883481,31.5570611432232,35.8690077671867,32.9343092337835,36.9267545974747,32.6251826166106,36.7339516489031,42.0689412503797,30.9174486468677,38.6873325233889,37.3213686803928,34.3266317266363,33.778427359326,29.76662506286,-2.62463309655547,-9.26328490045206,15.3964387365805,35.1340298369333,23.8338212155412,47.2074042978628,43.6747828255169,52.244907741257,61.21462352934,36.2245334006849,35.7747978256019,33.2147862938658,27.060397086818,30.2513891720181,29.8322052859074,28.4650913561741,38.2583529335491,4.97105620267732,-3.65488340521613,-6.92072394540584,-6.85418348499197,-3.90385341367979,-13.7168697549635,-7.18783132967772,-4.41927758135667,1.38325675880353,-1.25338658136098,0.917715481937877,-1.1716811489285,1.27286296630687,-3.65951214296046,6.02590194234932,4.6747371560641,-1.00818454496152,28.4055608788208,37.0567579029806,29.0625064530506,27.3263722599001,48.7969320947621,43.0664218818549,33.7224376913984,35.5032976840761,33.8349540040347,34.901120085671,38.4697624168469,40.4118621566826,24.1084895036277,41.7473324766859,33.3023120357862,58.8507564832156,32.7165521978934,35.2020971786502,47.4654929199361,26.463174795212,88.9882171607043,29.0300530737444,29.6890320111608,29.4008403224005,31.7773721633195,26.0102067023096,23.3748319569165,24.7129052082421,21.1635551733355,27.3888171613839,23.0579288195493,22.1972678047872,22.2186460744879,16.6529935573324,19.158600913669,20.0374027672382,20.8395432019048,18.4487906430237,13.7770342028716,21.1495769408016,24.7177296669922,25.7039912579151,25.8657425630556,30.7369571224254,22.8305419925748,23.8160883231519,21.453216293235,16.6716180737267,15.6384279295722,14.311975259257,31.0073566227337,27.5861363578304,17.6197977280826,17.7718541423113,13.499111283835,15.7168364732738,19.5573292562528,22.0615137095194,16.7157854591618,21.8061438909666,20.4974912778579,19.6478769268783,16.573123164133,16.5282555809749,13.0142998915223,15.4301627236924,14.6199921802597,12.2711214068238,-0.606362815505734,2.77015268066106,1.96431560923123,5.78694394712396,3.49882654404938,3.99232775350987,5.34583450884824,8.19151795578918,12.2796039219999,8.47674000888785,11.1198914213887,17.0707330891328,14.024723788602,8.8306566106661,6.60292914702028,18.5578718063161,9.61460041047223,13.3263496808262,18.8903782795952,19.3740492281958,16.0440480671009,-14.5843919189268,-9.87044096679438,-14.3044314590627,8.97683842540814,348.212274673918,9.6108364155937,38.9201741200501,38.031724642972,36.9709475899598,51.8126708884489,79.5433639895544,31.3003057324261,41.9005496242912,67.0302822396951,30.463089734289,25.3599552765914,17.2084116740921,19.5719715960313,18.244811618902,19.8782368886044,41.8655576129386,38.2777582588374,36.1271945243516,47.2275138637623,26.7963732307997,29.9261377470309,22.5473745401344,28.0305345467596,28.5510758958487,27.3153250193448,21.6550917185739,23.4258244872329,23.8581047984897,22.0837817022375,26.175777051811,25.7440038308742,30.6651012489202,19.8399891853608,29.994672526815,23.8132658462761,33.8534657236457,20.8992193230099,16.7112085124003,16.4841660536639,19.9147040620223,18.5460983377153,17.3454345156933,12.186253626837,15.7139125860708,13.307434135275,19.2526866265512,9.90947312894191,15.0695139331148,16.7141847455516,47.9124286020964,40.3217284227996,19.7569405609748,13.8698187827934,17.1845257037169,16.1957844293222,18.6687712448852,23.1090903356325,13.6648585800336,9.59817628188978,9.49061490227008,10.740366058674,11.2266679681276,10.6549188805844,11.2183536212451,24.6817313734037,17.9445228303388,15.4769061506043,10.5709411797954,12.1550733127413,13.8395147705885,9.24018349778122,11.6202306473704,11.7005390676887,9.22409333698449,5.64080503787412,7.67378079923151,7.21135109860756,5.73761379777555,2.05978271572337,2.11891354729266,23.4288810354369,13.5775241658131,-15.5663079763339,-43.2510908053958,-17.2300898200579,-25.2751543052648,-13.0145142412005,-31.5187653769316,-11.0775251116327,32.5383630118741,24.1686316794115,26.799992631714,23.3085656617143,26.6637772149629,27.5065807782415,29.3241721421786,23.5870471174232,20.4412641694948,20.1175071061482,28.3201288966511,29.8957062149374,26.3977231262482,23.3186062490946,14.8273571426684,23.0335141743632,82.5663743502075,47.9187404156673,47.7729339787341,38.4199800128472,24.5026722532445,18.7422203524352,30.5852910577763,26.0611109965043,29.5908134626543,32.5092134894527,16.1824481782975,15.6043793305392,11.0472664146244,12.6968000415997,9.52530329054893,-9.07275525233055,25.7568332212352,21.6662470627825,19.2878438876501,14.7773263270924,30.4417746578282,19.240837481785,18.1332848705038,26.4543503614933,12.9145839608697,16.4229218919678,15.3260726879785,9.74771427149057,13.2401140476464,11.9309385547545,6.99783815668406,9.07197608215081,4.5223616086533,6.7394638232316,6.63600943531083,7.08868515331471,9.64660427361503,35.6222432744354,37.1401350472955,24.2758389551761,23.0007790926481,30.4091793047712,24.943334227991,29.0841011339404,26.8751733555108,37.9367003498631,13.045231321814,-8.7352124337389,16.2505071152899,17.2951757618356,16.5955767975935,17.8728767648071,34.0104907365825,29.2865390450111,20.066430883268,22.729853261665,48.9758805340234,30.7289219895313,41.4603680255061,23.0779030049829,20.9494928910807,20.1788379650761,-6.79056869801043,-15.3297446069153,13.2685465881789,25.658815889805,21.5854376498041,25.543598926178,27.4364392106337,23.3866030982,27.3628946326723,19.141343215644,-3.6717212700942,-1.97214037281353,-0.172292959806213,-1.2050404351293,-0.17670671888644,3.39201598655193,-3.65633108910874,1.41779095823898,0.455849125093618,0.495695326253565,-3.44474694708514,-1.74015115455963,-4.42461143767103,-14.5646646078511,10.4573374666281,15.1784160059983,13.2677150680888,17.1904501971446,29.3840193696906,-2.37544641377529,-2.80365667633701,-9.06713448599704,-7.73417642616892,10.7583552059228,8.02825802578208,12.4784056697298,9.73302496583779,12.1619258916915,9.43317061361452,7.3493204020365,15.0013095192089,21.9554851092583,20.8959170180304,29.2405561776335,36.5921581941852,31.1051585201927,27.1080985076441,34.9532922576586,28.2416091965466,25.2422218304033,27.6135663309646,23.8428960933727,21.4297916890607,23.1306419060004,24.1027608269245,-5.91817436219041,-5.86573857384319,-7.36704377187706,-5.79722980814731,-13.0007092857377,-10.244054557806,-8.99575787630001,-11.7994346314881,-12.4450936194366,-11.1449302269869,-9.39744261645612,11.1084094623122,14.3851138899522,13.0041445579899,15.6731591430595,13.8174254519031,3.5694418129479,21.5007290208475,17.7074193940721,13.1221000688957,15.7424366151069,14.8172145964976,15.5121482593736,20.858198845094,-5.48020486056352,-6.64727595939542,10.2287988922297,5.44217393486997,8.59753027596164,7.94659265763875,7.06058746262104,2.89426694537999,4.82540186019183,4.3661508682539,5.98776557306493,2.04563475890052,4.34729588133222,0.618779587218102,3.46544478066136,2.08176499079215,-1.07894855506775,0.107711804745823,-3.03948613987389,18.3680100827366,12.4548158353736,9.78093254134563,13.2545065289225,9.15074420250432,11.4897017757347,11.0574644067398,-6.17406488205738,-0.115358091728424,5.34101923216051,1.02411285549857,-0.592755604001167,16.7332146062565,15.4265962370246,18.1065757492425,-4.27486094583545,-10.1437310516788,1.36692233311198,2.46555503902061,7.64647685385913,5.68826478220844,7.9763469277222,6.08663778459354,2.26284928550084,10.2967126729597,5.84728716883741,-5.93116109024564,-1.45511899298691,1.2605686262882,-1.5328784544141,0.496523334443949,-1.93286405501592,-3.58301728835501,-3.39606363522372,-5.24713365993318,3.25756597830933,-7.23491643717552,-7.48095945406966,-5.8117556609252,-3.87346161114508,-7.49188422776717,-5.09980881580014,-11.380237565157,-10.0673660831874,-7.38154745205224,-9.4144805793232,-8.97382290872497,-14.9492456632586,-6.66265561872066,-11.8440249681256,-12.0427370838899,-15.0575280971794,-15.2932713850214,-12.3452351896995,-11.6216043384471,-15.8758352986849,-13.5065752787991,-12.0004958166134,-9.54199208571159,4.9815327183003,4.29099129753849,1.6059527365072,1.14995737874425,-3.00167245050857,2.81468502164309,4.92934537398667,5.27427736623313,3.42549880987139,4.79271682567999,2.3933883606238,0.173477317172988,2.46497956779068,-1.71350060131818,0.614798072619368,2.82571237982732,-1.53596587473175,6.14788862157993,5.21421943323407,4.01347546833635,5.29287035491376,3.6041681967756,-21.2849665560674,-9.61000852717286,-7.55479836625539,1.47452026821054,-0.576958104714674,2.75670410476948,-1.33574925228652,-1.84320422493584,-2.42314171629455,-5.86846882770121,-4.29204759625144,-4.85183676981142,-3.47946324647642,-3.36005781402991,-0.201297615932867,-1.73382515459479,0.733951548101975,2.15699781489508,-3.31886758803695,-4.69069597348553,6.02319640049657,6.99954093087732,7.82973722770279,7.70248053999948,5.87845334952907,-3.36774460219281,-0.430515731068123,-19.0785022447232,-17.4017751565841,-17.6031726436691,-19.4337174705999,-18.4945516134413,-26.0020874107929,-17.1729231877992,-16.9691589257483,-24.0740695936226,-21.977556796976,-16.9405757680713,-13.6512044507849,-22.8960944938108,-24.6363521709251,-12.1466193274004,-25.6254338171207,-23.116126543016,-20.3207897814444,-16.531013494169,4.26668773332717,4.35640668519164,3.9858008986266,3.48159354438539,6.25926038378218,-7.38562599896874,-4.98156702414022,-7.83604304465386,-6.12286394551999,-4.99345572010712,-7.25454838500169,-4.80147019295742,-2.72103498351821,-0.477099666020148,-1.86920706415845,-1.05481979047808,1.14873497727353,-3.17920610303442,-7.11661086227428,-5.64465788859367,-10.0580264480897,-8.98725830075489,-10.2397730272205,-7.79524678371749,-10.9466858950415,-2.53386025349317,-1.67551599366223,-2.19825454748274,-8.73338460845357,4.14267707667899,4.42116621581991,6.39884394800727,8.52923397896458,1.46862916642014,1.73009063150321,-0.333505885997635,1.06919126328488,-0.440386977971804,-1.94708192521336,-2.65597999584653,-3.94442406961083,-2.48605482561678,-1.57055687603577,-5.09468406351527,-15.045065874035,-19.6760892898821,-23.9669069874667,-17.1359616916425,-15.2325079478722,-12.6018810997955,-9.88711437669338,-16.0613109392997,-16.1297407008508,-12.0003966837517,-18.7344813565143,0.903106229100285,4.35539991194816,2.0834381516844,6.82336926343693,7.14682651730749,7.97545441614135,-7.95772569979206,-9.60875840949279,-12.0426610350263,-17.415015589886,-7.06368068527938,-9.55542780945503,-7.08103859502177,-8.81339059597787,-12.1496376812562,-11.5683297505162,-14.3574236677113,-11.3579025542972,-7.20846848115118,-8.9888813717886,-12.3146112977248,-9.4725284062179,-11.1755657596873,7.39801428194303,4.36238749714869,0.770459794271802,0.574338175042059,-23.4503311849086,-14.8030257838215,-18.0126844371271,-14.7330270987813,-17.5115858788716,-20.930828409513,-10.9608341351353,-12.2392178038288,-10.0001957340895,0.989160900737027,-0.696421425601553,-2.65874329628748,-1.30818352758148,-2.73173371688271,5.74884179178792,4.05702848834914,5.40585419754435,6.75563249138083,10.6411459680134,-5.8762858253657,-13.3241770883982,-4.82984307783433,-31.572168139356,-8.89314050604593,-10.4934883581919,0,2.57432835875348,3.93689760316859,2.92362758516678,-7.05271817488057,-3.02027934362556,6.24613792252291,9.24120523880254,8.09843818902565,-13.1816705300604,-16.8151100758985,-13.4440736832312,-12.5307508967969,-16.4735441771025,-17.691232646305,-16.1561922017634,-24.887568454134,-20.4404852177302,-18.7633548020735,-20.1504772809614,-16.3475020984574,-28.1323895753552,-10.5565237944794,-15.2818167648377,-8.11895586428725,-12.662449224161,-13.9754738715581,-12.7067449448284,-15.5039600427575,-12.8958253141526,-18.3895855671081,-9.8024685287899,-16.866514627209,-18.2897487322649,-11.6596207941358,-11.9145106458489,-9.62378245998976,-7.35319241014579,-8.15513750001646,-6.29709907661578,-4.95434112327148,2.43218245573018,0.974428889547267,-7.43210841386903,-5.64054163380318,-8.22264618262998,5.59393548552796,8.96010180705977,8.24751373779474,10.464477524703,10.7671086904884,13.1800482378423,10.3360313186212,-31.8925033927454,-19.741851204259,-34.6495701257078,-12.2375230597361,-16.5150835717891,-19.7967945799363,-27.7338808564653,-32.1591826153745,-8.15673918227913,-11.3138274476241,-10.3532251699439,-13.7121673249713,-14.2052940743945,-17.6984052042007,-16.4871741205176,-14.9576446653227,-16.985476152507,-4.41972316726354,-5.32518797691915,6.50522480062313,7.97009718304767,8.73488672536465,5.64917910708448,7.60857934816215,7.4930550218568,-15.8536189676038,-26.4838623368775,-30.1032184425324,-17.7458798679099,-21.0188861062657,9.3299084641273,11.5317838907311,-34.9972951724822,-32.4041943962226,-45.4098681950094,-35.8356191756329,-35.030708947407,-41.7528700803965,-30.7183265368827,-39.2233824627052,-40.0312603405128,-41.9809822809785,-30.9287512583357,-37.4803728823185,-53.2719808902024,-38.2116661157637,-35.0881204652347,-29.2837253785989,-39.2971249350044,-26.9325521162901,-19.7985462702783,-25.2993511727242,-38.6542952858532,-51.8724177313156,-40.0341479191749,-27.5752892259542,-30.0763344327491,-21.7609627308832,-37.0139408083398,-24.3537894543229,-20.4583860526456,-38.4028414187117,-38.7838300111968,-49.4987878046096,-32.496242058047,-21.2872281981689,-22.0326467387798,-26.2698358238497,-45.3462629527714,-44.7310832332057,-98.9446076029751,-50.894640284567,-20.1649138167319,-23.3413142228754,-18.252652385545,-23.2851187150875,-26.4555703510866,-24.8866663121367,-26.4539876151736,-23.9420110994823,-34.0887173072656,-29.1316597180279,-33.6326608572818,-29.1764257075314,-32.0849965631388,-39.2522776606996,-39.5564877283217,-32.8278032191734,-34.6012580371399,-35.3929077027267,-38.2229763033276,-30.365597538899,-26.6726050602229,-33.7771041601132,-36.3963059722744,-20.8623855552896,-23.953688488649,-20.2643942940882,-19.0894596929815,-23.3525109747182,-28.227171955045,-26.0780358789848,-32.207735801678,-28.5939126378755,-30.0302980518983,-35.1396370140799,-33.8761759578922,-43.1043039241765,-35.8490271509544,-31.2586304325919,-43.9953913659323,-36.0516075750608,-27.8784964478077,-38.1031262681712,-49.2919253845668,-44.8676700872731,-48.7166836558763,-52.7350538923201,-90.2735807749573,-31.0898600523782,-60.4813200924635,-29.7281221929772,-26.5173633965738,-26.5314692609403,-23.7663546443982,-26.0734190344892,-20.3429838507592,-22.641803766703,-24.9216390528691,-50.4965524319245,-24.5015123480673,-31.1825975180747,-16.5980701708337,-15.9994803052914,-29.5528371669661,-25.3065202076832,-23.7326562344696,-47.371413396549,-54.8151032131577,-44.7154081130087,-41.8057166755508,-75.65028436239,-40.3356737017373,-59.757620853815,-21.0372325107185,-44.0490814321149,-22.2277762724242,-28.0598690057027,-32.0330747408238,-15.7898945960137,-22.2033582665154,-44.2309025790412,-75.8925989728683,-45.5578588727311,-47.7069832194627,-21.1734224104239,-19.7275618978768,-34.5591689244004,-26.5832709878044,-29.4999832878668,-29.0161578288463,-33.9730113166365,-37.3787112737242,-28.0353913891951,-13.1172775327917,-15.696219866818,-20.0583062307012,-40.8015500175229,-53.3678109491189,-43.2944808798058,-41.4882182194453,-49.3687558860196,-55.4196147928471,-60.484265366565,-36.3445623569816,-45.2445692869445,-51.4431167363084,-35.333731432212,-73.5238568733881,-57.8328222821374,-53.8176503321459,-42.9958894644015,-50.5946370215946,-39.8975319336533,-49.360321964998,-49.9188302382338,-50.8795674174343,-38.9293490010021,-39.6791872043772,-31.1276592485104,-37.523980873863,-15.3957828022231,-12.2774265642959,-18.1730955468662,-23.0832509688084,-20.1972768689617,-27.8899774984039,-24.7559810957324,-25.9382019844408,-28.0462467852729,-32.9395711366688,-25.9764434912426,-30.5172056185323,-39.8848638699617,-33.5480529641453,-36.6899204736751,-33.2284902809156,-35.5431669069361,-43.9935698166982,-28.8043316913886,-31.0641586668937,-46.286612612209,-45.6214167452201,-41.9630265019986,-141.20967910062,-26.7262715355377,-43.0917118352907,-36.3578351020798,-20.8675262572012,-20.0737265764741,-21.1827475392737,-36.6749585774268,-43.605386404003,-39.5203085077114,-48.3519982115235,-69.5737915987245,-40.2231310563338,-50.8894178718558,-45.5345268343568,-52.349028374546,-57.8176078127653,-68.8481534389742,-44.7046941112929,-128.968643428091,-27.3017814185343,-31.5378183080338,-36.5334500918401,-18.9487183904212,-17.024725273124,-14.2832660174411,-27.3011815624783,-17.5735753713073,-77.3613722937158,-34.714788047376,-32.1366669296901,-39.2838849628557,-35.5710468057046,-50.2838604561373,-61.466607872728,-49.3054745411499,-89.8491122680598,-45.1612711088052,-45.6700037543869,-19.6787230084292,-23.4994321147657,-28.0454876135548,-24.0724163015225,-51.4485572699946,-47.4850655124178,-45.913494485542,-50.6112990467271,-76.0750428783348,-56.6841743119038,-69.7494378557888,-59.2584686511678,-20.1871091509413,-67.1085658133397,-55.1173778332268,-107.65504611316,-19.1564274459402,-56.4481655358574,-50.1945681326147,-22.38095302254,-24.825863640434,-29.3128797606432,-83.1195220461202,-73.3920355329927,-113.646124757727,-20.7133416877289,-29.0350071299696,-28.6223980697015,-32.1846204626106,-30.0400022633825,-37.6663604938192,-29.6817800360211,-39.228321528359,-26.2246931308204,-24.7966600915906,-25.372153677985,-27.5356231577224,-30.3173970503106,-39.1020997671306,-72.2926868966971,-67.5435057587652,-24.8535888639013,-20.8363344300352,-11.7118972381019,-32.9481263006411,-11.6405085148118,-37.0287370686286,-47.3706399703281,-151.422238670715,-60.8100885884501,-243.377667654848,162.022159651514,57.8023767362199,-328.422188391591,174.534091487531,-422.622545992679,424.420061116918,-511.487791823966,369.660466373217,-547.682341358543,470.925820254686,-604.63311740661,596.300567554463,-521.144066333393,-571.248426204652,-545.824628476684,-472.32065917133,438.927425164728,-397.628738093759,305.132811405064,261.876181078987,-299.671097927426,57.2052300436292,206.278230163897,-200.497954440663,-77.3884391610325,15.6317713519502,5.33735372461272,22.7689544762266,13.7864391333945,18.0120047142464,10.7140012858677,4.07396855677561,12.4405703930285,9.9532110282974,13.7758101312845,9.16654782099515,6.81083357987,1.60217670012905,3.32270590688719,1.41442460110217,4.63299239936175,7.95854764861826,5.16991493906099,10.8347970444933,0.601647102794461,-2.37502202489249,-0.688555741737104,3.95838833883215,2.75636334819685,43.8243359688314,5.00748338481427,61.564156146186,3.1372841816011,2.82109605131567,51.2398949671405,-11.4217410173412,33.4478469115256,58.799560067968,67.9663255763686,5.42431038380084,80.8667474038463,48.8201216864725,89.4008564226442,101.526475318587,58.1629787461193,51.7058125681288,54.3917104522614,112.951154191322,50.1347162190037,45.3480334314288,44.8253204841421,40.2418916908406,48.3806228646681,46.8841713006492,40.5862346066874,37.1739662207333,38.9529362200044,37.2420266514843,34.0284432014142,32.3567635288622,42.2699589765046,34.68982494048,37.9347605983665,29.9037500036988,36.8566362760166,42.4333054033386,32.959773225003,43.0126272243091,36.1647625342186,45.4524401300063,39.3523794279845,32.525441582403,54.2649605596899,52.2500910951098,44.521385353324,47.2994791228072,45.2714159839857,39.3542747995719,35.2890467269244,40.8278962517191,34.57003962556,30.4014182945251,-0.629831200851275,24.0508762760624,94.2360507611837,37.7133184511792,19.4927305804445,9.6469334346547,-15.9046868655712,-29.2978305784542,-36.4581220259726,-66.3503230762495,-26.4176957599164,35.3354568602454,10.710337462924,35.7833745162494,26.6987505183966,80.0562166468864,8.10508718483961,-11.6383683897973,-12.8679907058211,-11.3814416589898,-18.5156075070008,-15.7967199028411,-17.2409022696482,-21.8591573744665,-15.9015056080204,18.3955785635767,14.2821227381193,13.5377786926908,11.8506639163968,14.0330861831221,20.0829562501276,-10.2946747323486,-0.428607892207754,-22.8527716880051,2.0168846805159,-4.53660095506232,9.88524455567287,-7.07080332994287,-10.341074311483,12.1979308000949,-2.98358694123928,-3.12410502131502,-7.66946428440452,-11.1709877182268,-9.99463816336862,-13.3616941541204,-5.77018279858496,-70.9223648200757,-16.2321909188491,-46.2955544084809,-63.3165578541603,-55.1152507393451,-118.338752257608,-27.3903238758341,-22.2652424276648,-18.3508435572171,-9.83623141638016,-25.561479320801,-19.5516437104547,-18.8956481243638,-16.371720337668,-18.6500672859514,-14.1908112200047,-15.1929437886574,-28.9171700871933,-55.0270381363918,-39.1676184199234,-74.7514320827716,-84.0785631571318,-73.9269168856984,-51.8038951733587,-58.031785514161,-24.2091911199642,-52.2472828096211,-73.6902293439492,-47.5030437714428,-91.3270977835667,-59.1573400690621,-37.7657790246667,-39.1473393244106,-33.8102074574574,-123.633158714116,-29.9622741296047,-54.6349030888016,-40.2255420949958,13.5367814184255,3.68492488097014,-0.484016579091912,-4.43922793001272,-1.89438861546772,-13.7143630762,-1.39249244941673,-2.34195611913638,-8.30317368582801,-5.39060415873791,-0.436434838295925,-35.5247164542043,-23.5056260672655,-15.006054958193,-11.5519663589402,-9.89329395994049,-9.80551472394774,-4.79091970780581,3.36028855341715,-5.14282108582867,-4.63639247298696,-5.97615627089668,5.95645185834394,54.6844501092992,31.4308161607682,-8.68431517005753,-88.3726054676346,-0.820482678464453,-9.81083903979557,-21.6240568100381,3.93483209262441e-17,3.39268591721779e-17,1.26214650103498e-17,1.52512353012079e-17,1.39151851678615e-17,1.50052578251891e-17,2.97299832682893e-17,1.81549543855181e-17,2.79466276047017e-17,2.86818722519657e-17,1.14220322593712e-17,1.35554084576778e-17,3.11231791412488e-17,2.89299280743336e-17,8.93488840038477e-18,1.56721017931661e-17,8.57358358086878e-18,1.40952920785197e-17,2.13370950742891e-17,2.13531126732021e-17,1.29271323916686e-17,2.20745878140945e-17,5.74691356575142e-18,1.09454629641514e-17,2.01315350496253e-17,1.81626714022348e-17,3.20623798055279e-18,1.20055152544777e-17,1.51819040380014e-18,9.9794972879746e-18,9.17039521625604e-18,9.597529398563e-18,5.21484234698923e-18,9.38680852978986e-18,-1.22476388351716e-18,6.65778252607926e-18,2.34736709711203e-18,1.62887404089553e-18,3.26557113818674e-18,-4.02239144893885e-18,3.91176068626696e-18,-3.93177644251665e-18,-1.83362548226459e-18,-4.28880427088866e-18,-5.17532099703421e-18,-4.58388114147753e-18,-6.58794816998217e-18,-8.38179709696599e-18,-8.83573218567708e-19,-1.35716532332767e-17,-7.84000002335794e-18,-1.24457216056138e-17,-1.08225642238572e-17,-3.91057158295697e-18,-1.87192768755912e-17,-1.14803856124828e-17,-1.67309961606265e-17,-1.14817271897094e-17,-6.68283051515365e-18,-2.34744560638552e-17,-1.41744595715869e-17,-2.14068555587302e-17,-1.25979897699261e-17,-9.05042471800627e-18,-2.71750292244517e-17,-1.60161447460688e-17,-2.63152777916267e-17,-1.34180394621822e-17,-1.09105975789699e-17,-3.06515962937702e-17,-1.7805659355816e-17,-2.78622622435401e-17,-1.41025998715601e-17,-1.3263554469166e-17,-3.07800004493292e-17,-1.84856980429316e-17,-3.02768790882287e-17,-1.41216583133829e-17,-1.40020616947036e-17,-3.14756889206225e-17,-1.94818758487016e-17,-3.02669177179731e-17,-1.25642850969967e-17,-1.50252941820305e-17,-3.02198369651974e-17,-1.82580696483042e-17,-2.91566831103948e-17,-1.15531374830609e-17,-1.52850474924017e-17,-2.77912116600951e-17,-1.66809770574807e-17,-2.77660171754528e-17,-1.03473039778654e-17,-1.49108739671861e-17,-2.41114555886903e-17,-1.49385341585799e-17,-2.40231131668529e-17,-7.25812125941119e-18,-1.34160791793487e-17,-2.00300157486821e-17,-1.21126391033598e-17,-2.05407381942777e-17,-4.29539803139263e-18,-1.11121612711191e-17,-1.54453028675884e-17,-8.97883769426384e-18,-1.53645824110898e-17,-1.88404929695762e-18,-9.4046178595757e-18,-9.07452612501131e-18,-5.53781017443762e-18,-9.90773062543949e-18,9.94618174487662e-19,-6.92588116816398e-18,-2.88061388290271e-18,-2.35493652981774e-18,-1.78352319739779e-18,-1.7254145376582e-18,8.8403729347118e-19,1.00363329045795e-19,5.51618031546315e-18,-3.45220767465367e-18,6.80757011077128e-18,-1.0335238345438e-19,8.63910602331237e-18,7.38634271690299e-18,8.56257264562219e-18,1.21446377928888e-18,1.34640623464512e-17,1.27757635045445e-17,9.04158559305918e-18,1.40299979059456e-17,1.15425075119073e-17,4.72145818243008e-18,1.9716866556758e-17,1.9129604315224e-17,1.24775509778001e-17,2.03348032668337e-17,1.32359863191921e-17,7.4248505990185e-18,2.72953780756474e-17,2.64311183009764e-17,1.28758963266466e-17,1.00674500222685e-17,1.5055510175168e-17,9.71500090408837e-18,3.20326670447439e-17,3.04168382464303e-17,1.34960606551727e-17,1.28372681048148e-17,1.51704720729528e-17,1.17349050276215e-17,3.51817270788586e-17,2.99821214361091e-17,2.63333038452824e-17,2.10900928663174e-17,-155.316459517354,-9.04297635189383,-5.1282313057517,-237.548970524216,-96.1043442909265,-193.422078387102,74.4738252685645,2.99892956156755,69.8055299923168,-2.78413246912838,-93.1280094442592,-7.57705456422731,-355.275664010157,-212.988321429118,-323.38349243211,176.892782768709,11.1415970270236,29.6705641580681,183.81629536365,-84.6422005587825,-14.968408444073,-293.766626610413,-439.217733730249,332.055793883281,212.246756960617,298.890955782297,-646.981824851598,-16.3908101215243,-704.841875430856,-372.471072886225,-626.859994064315,350.364952345242,27.8681965481858,267.979224064624,470.03228662393,457.5753547111,261.424918295343,-27.3901904826788,-373.714090498444,-415.938040847882,466.440778727267,353.293309145465,819.269899087279,484.254050749322,-588.051194687788,-22.6530779621016,-760.15435939404,-504.762706838774,-467.832701916661,444.594417821273,38.5727879594826,467.670030551125,610.404496563247,611.643159083571,-25.0562088577738,-560.699579968401,-459.490055634558,19.5432289611837,544.356856,943.294835265533,536.182986689068,-619.288303560889,-10.2504382716396,-522.561772487213,-379.752686453648,593.632372370577,33.9199435754199,669.959334085103,-741.159478979431,-27.5286080115637,-638.619438702875,-509.5329716611,-265.237299160624,534.466736280658,393.623723529664,940.914838068067,536.578248376109,644.402017249499,-20.1906179623526,-508.080451414404,-308.71769046524,373.885172771278,348.515193517655,845.024141471368,479.739323332295,851.909443139532,-466.720484122192,-23.0039947202928,-462.196476761452,-431.422169786155,-418.004978057681,213.782248210749,18.0587328050387,431.525166857432,382.525259529962,800.317045671856,-21.1853479269845,-306.73999056026,-191.529230077876,146.002238107335,15.7298691852468,364.226808895195,260.707712437896,-301.455701673038,-13.454888963211,-192.229921585373,-276.304412489515,-96.5042112983709,50.4944139328662,26.0509675749646,279.154433588601,120.870700258642,-9.73815754248954,-182.722662919145,151.006558723043,72.9421937297744,-55.0285841495951,-4.71015340385848,-23.1651181532171,-1.3815176149491,-3.89514918046794,-10.5341662199794,5.94801662212097,-1.5609388274653,-8.80189641282744,2.61310090726754,-12.3786190412825,6.62617096969002,81.6785510205226,361.402312764524,4.73529978454391,-9.95164348536301,8.51847322217439,-25.7958312439192,13.3913202561396,123.848688834455,569.001348310843,6.87817940309342,-9.33801073024076,9.84045341413511,-5.66871657706923,-17.0435119250034,104.102183019161,659.795363730164,20.0132053997624,-19.8700020819515,98.3388624309334,590.878198851652,7.06018385189889,-10.3992676106358,5.80354864671923,107.098170476583,511.381360530595,5.45973019132102,-8.79211000281765,3.25512850198625,11.3970363555014,-14.0019872604989,3.02964814316838,9.09387797007453,-1.35557305469653,0.416932451063393,1.30783859711374,6.34735674315654,30.3881425255544,16.3459197500366,52.7196290197179,30.601105172644,127.706766317825,33.8872378083421,60.8617104634898,36.669437905187,52.7008788175238,32.46416891315,-0.0397366743016661,-0.930139600681108,30.7132059996398,39.7874896667935,54.8611536597202,56.5224252415524,86.314028938031,60.3044673095933,52.6726896188623,47.7357624790789,8.45957626295622,-4.0810703841633,29.484966444038,48.5966459188037,85.9514116089264,51.9320242183203,69.8105438174797,76.6341796476492,53.2389921934285,64.3880670374096,45.9384987251708,30.0687232244597,50.5072857153057,52.7163397648437,53.314160879431,58.6763768264043,58.2415695942411,48.7652915039904,34.5447553902265,33.7485215951304,57.6554098940412,52.3936643452343,54.9645752895742,71.4759960110267,51.8442250702998,64.8001633035951,44.9251587652889,23.3420804990805,43.8379689651717,44.3945375408386,24.4405216150298,25.6373442957315,34.9133759425722,47.1778314367328,65.2306069891299,45.1795648946372,43.6829120697239,57.9922214576071,42.5318286021668,-2.16387011085879,-16.3684349938267,11.0402290424272,124.300409887928,82.8594707041592,58.4012581049623,56.1731771942595,61.3319573857537,61.0090850174106,67.3940850249641,60.8445166273806,47.8055679532436,712.714530580573,6.99234199299794,388.280091749033,811.171497281383,75.7379795456202,68.4776197809084,54.1089431832381,50.3374767635694,50.8247062254693,76.0313579583855,44.8734603843463,60.6091057524364,37.0754493713803,32.0357039106074,41.4245183849331,39.842958311369,49.1082794523135,47.7431646627617,48.1116129032935,41.3613145462647,47.0158712735615,44.0726145339406,32.4329510242801,36.8645789581871,33.8484256677109,37.9516843444307,33.5307190096173,37.7535300055341,43.2365962414687,31.7755856037594,39.761128430065,38.3572512369462,35.2793931147666,34.7159729244143,30.5928200487443,-2.69748175506414,-9.5203943148183,15.823778431886,36.1092011646833,24.4953467845689,48.5176811816259,44.88700915295,53.6950043082228,62.913681279956,37.2299724720759,36.7677541490722,34.1366875787867,27.8114786871658,31.0910391490368,30.6602205000286,29.2551612986531,39.3202421902296,5.10903159291817,-3.75632743311666,-7.11281382493733,-7.0444264841789,-4.01220779074465,-14.0975917545065,-7.38733497483134,-4.54193794245698,1.42165008676397,-1.28817526522112,0.943187362879848,-1.204202037281,1.30819223182689,-3.76108464494588,6.19315536660169,4.80448798910315,-1.0361674625457,29.1939785082884,38.0852959891062,29.8691580992495,28.0848362005,50.1513275137285,44.2617626953878,34.6584292212945,36.4887183176548,34.7740685085083,35.8698268287309,39.5375195021678,41.5335236757023,24.7776386968291,42.9060609752457,34.2266426632664,60.4842033324722,33.6246246221014,36.1791577664795,48.7829332468177,27.1976800432948,91.4581518162353,29.8358039520799,30.5130733437465,30.2168826786923,32.6593769418415,26.7321394815172,24.0236179351021,25.3988304122774,21.7509655072505,28.149014307021,23.6979189136684,22.8133696074577,22.835341247055,17.1152098733567,19.6903622395837,20.5935558971774,21.4179603407364,18.9608506529411,14.1594261117538,21.7365992983972,25.4037887774955,26.4174247979841,26.5836656318161,31.5900844017949,23.4642207949064,24.4771217024623,22.0486663886063,17.1343513271609,16.0724842162772,14.7092148580469,31.867989042873,28.351810245637,18.1088484183942,18.2651252723516,13.8737892338225,16.153069047869,20.100157586125,22.673847555541,17.179744611478,22.4113897562987,21.0664145092021,20.1932184752057,17.0331226175388,16.9870097009861,13.3755215379959,15.8584384535332,15.0257810195215,12.6117155775128,-0.623192869861564,2.84704034427972,2.01883666103384,5.94756491314247,3.59593909681839,4.10313780217985,5.49421215183769,8.41887967541853,12.6204335312545,8.71201828034786,11.4285323410942,17.5445440789184,14.4139905075561,9.07575810263542,6.78619839376549,19.0729594456667,9.88146085009675,13.6962325030537,19.4146948852937,19.9117904835383,16.4893626446969,-14.9891926462562,-10.1444024527879,-14.7014616740248,9.22599730319504,357.877167309594,9.87759238271961,40.0004327197342,39.0873236616112,37.9971039465407,53.2507703976446,81.7511496672978,32.1690691746426,43.0635307796046,68.8907579561022,31.308615619063,26.0638398401764,17.6860440361804,20.1152063350171,18.7512100381419,20.4299722503024,43.0275675387537,39.3401861248638,37.1299318822836,48.5383489035971,27.540126651163,30.756760127004,23.1731938176163,28.8085430393342,29.3435324036637,28.0734823355042,22.256145017662,24.0760258013116,24.5203043765604,22.6967336130847,26.9023053601484,26.4585479498913,31.5162341146713,20.3906629533922,30.8271971409614,24.4742208856255,34.7930940347699,21.4792928173043,17.1750406281291,16.9416964358036,20.4674515974472,19.0608591956218,17.8268700494358,12.5244922286921,16.1500640059855,13.6767919423603,19.7870593719353,10.1845179818467,15.487779585501,17.1780994688619,49.2422739637723,41.4408882124887,20.3053092521993,14.2547859972246,17.661495092797,16.6453105633637,19.1869369812619,23.7505004559712,14.044136970439,9.86458085751717,9.75403403119907,11.0384729675191,11.5382725509067,10.950654138967,11.5297274330956,25.3667913242912,18.4425865092142,15.9064792792887,10.8643455741593,12.492446481612,14.223640874451,9.49665171540401,11.9427588572498,12.0252962979577,9.48011496013631,5.79736980894914,7.88677233608567,7.41150755257367,5.89686556853062,2.11695352861022,2.17772558072267,24.0791671863016,13.9543785241029,-15.9983625196897,-44.4515572432933,-17.7083238753331,-25.9766851543404,-13.3757418371101,-32.3935923302961,-11.3849901226614,33.4414896616882,24.8394501637727,27.5438465112619,23.9555123692162,27.4038503335384,28.2700465413172,30.1380865156729,24.2417232864238,21.0086267753094,20.6758835920445,29.1061752974304,30.7254839449317,27.1304117142091,23.9658316406238,15.2389015518622,23.6728266217088,84.8580659459706,49.248760966459,49.0989075626006,39.4863553502379,25.1827622840641,19.2624247238351,31.4342087318621,26.7844566625452,30.4121286658208,33.4115310724272,16.6316041546975,16.0374905728619,11.3538915728415,13.0492092418027,9.78968522169026,-9.32457637352926,26.4717334295962,22.267609986809,19.823192449163,15.1874820935065,31.2867089266815,19.7748813452762,18.6365877812632,27.1886106808051,13.2730379169605,16.878752396503,15.7514593208724,10.0182693860839,13.6076033352496,12.2620906954495,7.19206839893937,9.32377557689726,4.64788314418293,6.92652269223486,6.82019685024809,7.28543692204271,9.91435300444495,36.6109653320129,38.1709873285448,24.9496330578178,23.6391829532688,31.2532088651732,25.6356551621541,29.8913521566905,27.6211139323886,38.9896618980354,13.4073114933156,-8.97766480105124,16.7015521184899,17.7752163262006,17.0561994684228,18.3689518534417,34.9544773946161,30.099408883691,20.6233897103215,23.3607373728135,50.3352428010264,31.5818262477657,42.6111316106708,23.7184474975875,21.5309617659323,20.7389167349235,-6.97904602111143,-15.755233156671,13.636825042252,26.3709955536775,22.1845576480144,26.2525806568808,28.197958141936,24.0357157932333,28.1223722790985,19.672625541217,-3.7736326455528,-2.02687860679329,-0.17707508002288,-1.23848723546993,-0.181611346294073,3.48616393225321,-3.7578152985606,1.45714280878487,0.468501559176312,0.509453721510404,-3.54035848011288,-1.78845035393281,-4.54741984395056,-14.9689177888779,10.7475887047978,15.5997043170291,13.6359704426987,17.6675840249797,30.1995948478343,-2.4413787091616,-2.88147426846373,-9.31879959861393,-7.94884428890953,11.0569614170309,8.25108834370625,12.8247531704757,10.0031723677445,12.4994892590263,9.69499533326283,7.5533062974142,15.4176821069744,22.5648760520212,21.4758988543754,30.0521497273696,37.6078009672197,31.9685055052893,27.8605040966747,35.92344707845,29.0254762242065,25.9428386139592,28.3800015582316,24.5046735424354,22.0245916169886,23.7726502063255,24.7717510164109,-6.08243772672385,-6.0285465437754,-7.57152159266667,-5.9581362659468,-13.3615537147629,-10.528385969006,-9.24544187762475,-12.1269367822432,-12.7905165192623,-11.4542661175059,-9.65827567876854,11.4167316916388,14.7843835062475,13.3650843355709,16.1081794206226,14.2009384501716,3.66851434542465,22.09749786758,18.1989020893873,13.4863137900784,16.1793797408236,15.2284774917216,15.9426995591976,21.437133785283,-5.63231205336267,-6.83177608515184,10.512706870999,5.59322555082592,8.83616117180514,8.16715629206965,7.25655935888729,2.97459949342781,4.95933450500287,4.48733665761859,6.15396049380821,2.1024128846432,4.46795833640489,0.635954278378002,3.56163079757108,2.13954593819717,-1.10889558078335,0.110701426606334,-3.12384935549291,18.8778279676658,12.8005085825885,10.0524096539127,13.6223952906293,9.40472996546043,11.8086070589628,11.3643726178706,-6.34543067973541,-0.118559942014304,5.48926322353689,1.05253787527847,-0.609207980004371,17.1976575176117,15.8547729763552,18.6091373283254,-4.39351291499029,-10.4252779087833,1.40486228684625,2.53398836682848,7.85871054924776,5.84614683405404,8.19773641421727,6.25557697766314,2.32565636321101,10.5825056496081,6.0095830061961,-6.09578491114857,-1.49550691111105,1.29555665318755,-1.5754246446635,0.510304711688626,-1.98651214536133,-3.68246661832521,-3.49032392644722,-5.39277178689406,3.3479821632743,-7.43572696477357,-7.68859908998754,-5.97306529465429,-3.98097244095482,-7.69982708896609,-5.24135783130609,-11.6961045871875,-10.3467933733631,-7.58642783335424,-9.67578654306334,-9.22289808858649,-15.3641731796853,-6.84758261844724,-12.1727647570903,-12.3769922765435,-15.475461073707,-15.7177475931703,-12.6878864439735,-11.9441706761518,-16.316481004834,-13.8814603975604,-12.3335785712379,-9.80683722686933,5.11979889208341,4.41009097669301,1.65052715821835,1.18187530757538,-3.08498611884148,2.89280871375849,5.06616304891889,5.42066888710399,3.52057609642611,4.92574227286381,2.45981864819068,0.178292310115934,2.5333969229633,-1.76106009461408,0.631862253857811,2.90414214453308,-1.5785977586458,6.31852787753179,5.35894400116682,4.12487248767955,5.43977793811914,3.70420458605962,-21.8757467538964,-9.87674151563524,-7.76448745651625,1.51544668326793,-0.592972009286453,2.83321849308584,-1.37282397380121,-1.89436373950583,-2.49039783054539,-6.03135257787532,-4.41117659376833,-4.98650313534941,-3.57603835641035,-3.45331873670323,-0.206884782116571,-1.78194877109821,0.754322923346676,2.21686690571295,-3.41098524511965,-4.82088975546173,6.19037473040726,7.19381843490643,8.04705745210373,7.9162686596664,6.04161422758896,-3.4612188774321,-0.442465017814661,-19.608040372055,-17.8847744670365,-18.0917618923038,-19.973114862726,-19.0078817533862,-26.7237948329798,-17.6495705403551,-17.440150648509,-24.7422634364273,-22.5875603559722,-17.4107741438703,-14.0301038606005,-23.5315927549396,-25.3201525880404,-12.4837578495725,-26.3366869365491,-23.7577319585637,-20.8848085303346,-16.9898441621277,4.38511284884379,4.4773220174531,4.09642978954803,3.57822778233423,6.43299084645654,-7.5906195833969,-5.11983415010764,-8.0535382917299,-6.29280862283419,-5.13205282574055,-7.45590381202394,-4.93473859640984,-2.79655934864362,-0.490341924791524,-1.92108830701773,-1.08409710425027,1.18061897743576,-3.26744735093783,-7.31413772998213,-5.80132959842776,-10.3371945096941,-9.23670638999076,-10.5239856013305,-8.0116096999983,-11.2505193655621,-2.60418944371701,-1.72202119570677,-2.25926874983159,-8.97578624310533,4.2576601834861,4.54387899738509,6.57644865711136,8.76596925990333,1.50939206953251,1.77811059351956,-0.342762591794556,1.09886746805489,-0.452610248573718,-2.00112464320104,-2.72969871103656,-4.05390451563492,-2.55505714036428,-1.61414885911368,-5.23609083768104,-15.46265295222,-20.2222138934871,-24.6321264518294,-17.6115831501734,-15.6552976212865,-12.9516557536359,-10.1615386456738,-16.5071046608505,-16.577433741715,-12.3334766868693,-19.2544709262828,0.928172619281498,4.47628730046377,2.14126553892385,7.01275699081226,7.34519204316456,8.19681913030863,-8.17859834015108,-9.87545670000211,-12.3769141168866,-17.8983823984872,-7.25973843625858,-9.82064586919407,-7.27757812779398,-9.05801285677027,-12.4868599801016,-11.8894174121087,-14.7559247211371,-11.6731496513634,-7.40854492590953,-9.23837451057734,-12.6564125629273,-9.73544553089484,-11.4857519623749,7.60335171244898,4.48346883132807,0.791844483248418,0.590279361502386,-24.1012127007466,-15.2138948579165,-18.5126399924795,-15.1419533069156,-17.9976330682138,-21.5117792376914,-11.2650603006624,-12.578926466108,-10.2777586608882,1.01661580281934,-0.715751124170985,-2.73253870895208,-1.34449314174909,-2.80755503337034,5.90840520393112,4.16963435440166,5.55589773197262,6.94314013388545,10.9364989488861,-6.03938654216808,-13.6939996086947,-4.9638989919693,-32.4484773264118,-9.13997628535727,-10.7847429914486,0,2.64578077156583,4.04616914647621,3.00477505977489,-7.24847165316829,-3.10410946022104,6.41950416145098,9.49770181561308,8.32321640997401,-13.5475376740351,-17.2818260573866,-13.8172240233685,-12.8785512785478,-16.9307797410982,-18.1822660663055,-16.6046194238583,-25.5783415674525,-21.0078262031549,-19.2841457759614,-20.7097688787676,-16.8012392701037,-28.9132251305792,-10.8495280235094,-15.7059750414192,-8.34430356868856,-13.0139049916833,-14.3633736221565,-13.0594301732732,-15.934284072493,-13.2537586099459,-18.9000022957748,-10.0745433888277,-17.3346573805415,-18.7973944147624,-11.9832423070579,-12.2452068176211,-9.89089775427973,-7.55728577601026,-8.38148945283215,-6.47187978056626,-5.09185257395705,2.49968950247923,1.00147489361876,-7.63839215255691,-5.79709909390081,-8.45087188952296,5.74919935705332,9.2087961474619,8.4764296623172,10.7549269405353,11.0659578611205,13.5458703538807,10.6229156137455,-32.77770372482,-20.2898010790799,-35.611294911116,-12.5771846831229,-16.9734720928141,-20.3462694493239,-28.503655503552,-33.0517848291239,-8.38313559098632,-11.6278512070744,-10.6405866932968,-14.0927588050458,-14.5995726569511,-18.1896377039208,-16.9447879938072,-15.372805302346,-17.4569207721246,-4.54239589593462,-5.47299255994228,6.68578219001394,8.1913132031957,8.97733005239697,5.805976306726,7.81976116987958,7.70103037932309,-16.2936480428347,-27.2189417831826,-30.9387558299143,-18.238430062499,-21.6022810418084,9.58886706543139,11.8518571945975,-35.9686713271507,-33.3035970955626,-46.6702531171548,-36.8302636412532,-36.0030125264389,-42.9117522792972,-31.5709367103885,-40.3120568371656,-41.1423579708997,-43.1461959049549,-31.7872019276789,-38.5206687196548,-54.7505846421113,-39.2722595448293,-36.0620175439684,-30.096517121859,-40.3878460870466,-27.6800852836733,-20.3480697591441,-26.0015536239893,-39.7271742192433,-53.3121755589096,-41.1453256964716,-28.3406620434866,-30.9111256342925,-22.3649545592583,-38.0412904739162,-25.0297471314849,-21.0262238891584,-39.4687410615784,-39.8603042779628,-50.8726637547772,-33.398199609222,-21.8780711695693,-22.6441793603954,-26.9989748038931,-46.6048824637524,-45.9726279700512,-101.690889336602,-52.307259166375,-20.7246061114072,-23.9891698912343,-18.759268431139,-23.9314146350146,-27.1898645321239,-25.5774143858281,-27.1882378661895,-24.6065395598169,-35.0348752023919,-29.94023076492,-34.5661605638678,-29.98623926801,-32.9755396874131,-40.3417540430346,-40.6544076890602,-33.7389634988491,-35.5616418843246,-36.3752643796461,-39.2838836551249,-31.2084174547289,-27.4129232022593,-34.7146129988158,-37.4065127201171,-21.4414367007576,-24.618541063671,-20.8268477439638,-19.6193019525012,-24.0006774173155,-29.0106382662476,-26.8018513078226,-33.1016856454994,-29.3875581115675,-30.8638114791913,-36.1149639732336,-34.816434608587,-44.300696182183,-36.8440437649777,-32.1262371456298,-45.2165164236703,-37.05224696057,-28.6522850090077,-39.1607070924266,-50.6600597132423,-46.1130058946121,-50.0688517192828,-54.1987548330268,-92.7791916608602,-31.9527824170357,-62.1600244566477,-30.5532485028536,-27.2533726898967,-27.2678700730997,-24.426007628184,-26.7971063193481,-20.9076186126756,-23.2702439981341,-25.6133578211882,-51.8981220870532,-25.1815701848495,-32.0480938805906,-17.0587620471059,-16.443557871259,-30.3730983095861,-26.0089216408862,-24.3913738936341,-48.6862424757553,-56.3365374815642,-45.9565177751462,-42.9660656713036,-77.7500146975872,-41.455220553094,-61.4162384032865,-21.6211366644656,-45.2716966978754,-22.8447248604772,-28.8386916981686,-32.9221767360092,-16.2281549535557,-22.8196291145154,-45.4585644269924,-77.9990549316712,-46.8223513870416,-49.0311262905818,-21.7611066168988,-20.2751151622905,-35.5183845567192,-27.3211095957134,-30.3187774314634,-29.8215230342465,-34.9159577052823,-38.4161854169282,-28.8135346870713,-13.4813574008708,-16.1318802120508,-20.615039551934,-41.9340276151544,-54.8490745361285,-44.4961516417354,-42.6397548076138,-50.7390227028401,-56.957827733172,-62.1630514790391,-37.3533329220049,-46.5003662140207,-52.8709589930655,-36.3144456273963,-75.5645666200722,-59.4380156047978,-55.3113995483435,-44.1892725978305,-51.9989290880147,-41.0049178318911,-50.7303546920201,-51.3043647809286,-52.2917679405193,-40.0098622563828,-40.7805127810253,-31.9916307581836,-38.5654870836848,-15.823104291579,-12.6181957393556,-18.6775034327824,-23.7239438981567,-20.7578674244047,-28.6640847247672,-25.4431019033063,-26.6581362187433,-28.8246913828023,-33.853833618654,-26.6974391472248,-31.3642335302283,-40.9918981565982,-34.4792043152517,-37.7082767120403,-34.1507719302669,-36.5296941406734,-45.2146443159721,-29.6038175036,-31.9263676703364,-47.5713322326907,-46.8876733559122,-43.1277417498733,-145.129059567331,-27.4680792308143,-44.2877545904336,-37.36697406209,-21.4467200867032,-20.6308879009599,-21.7706905716881,-37.6928995371492,-44.8156865817509,-40.6172242870689,-49.6940441571249,-71.5048643235107,-41.3395542022273,-52.3018918016853,-46.7983717504571,-53.8020148877173,-59.4223788464265,-70.7590855328395,-45.9455063982836,-132.548264776214,-28.0595628219036,-32.4131740897794,-37.5474633774978,-19.4746542696161,-17.4972592814978,-14.6797087697095,-28.0589463163932,-18.0613431254673,-79.5085951567452,-35.6783230050747,-33.0286442037101,-40.3742386295487,-36.5583478669256,-51.6795266860856,-63.1726596376332,-50.6739849368202,-92.3429417124548,-46.414756032523,-46.9376089339298,-20.2249207128661,-24.1516764637084,-28.8239111397042,-24.740564255966,-52.8765505328414,-48.8030490912716,-47.1878579328013,-52.0160535801414,-78.1865627044583,-58.2574860493476,-71.6853857740701,-60.9032318571875,-20.747417493751,-68.9712143489995,-56.6472019602395,-110.643092595286,-19.6881284456292,-58.0149266728559,-51.5877559872075,-23.0021531460839,-25.5149240904064,-30.1264807056254,-85.4265666707152,-75.4290864795864,-116.800458117378,-21.2882560089585,-29.8408955118482,-29.416834177901,-33.0779287228734,-30.8737850383376,-38.7118185566928,-30.5056200846021,-40.3171329902881,-26.9525791415886,-25.4849099751796,-26.0763768173422,-28.2998950138051,-31.158879125458,-40.1874078494856,-74.2992245980329,-69.4182263785565,-25.5434188482284,-21.4146625069989,-12.0369697229025,-33.8626262376137,-11.9635995520984,-38.0564974154977,-48.6854475825101,-155.625076381639,-62.4979181686212,-250.132797209106,166.519206112896,59.4067250199373,-337.537792351707,179.37841599353,-434.352751472254,436.200157975834,-525.684518797669,379.920669642893,-562.883675178962,483.996719310129,-621.415162695453,612.851336677703,-535.608810442567,-587.103854370522,-560.974400083888,-485.430273026204,451.110184784685,-408.665221704608,313.602001253737,269.144750736215,-307.988693825491,58.7930040733889,212.003637028082,-206.06292542038,-79.5364132852483,16.0656428803549,5.48549597708016,23.4009238708879,14.1690920831716,18.5119414033809,11.0113764206856,4.18704460712227,12.7858677473156,10.2294698593762,14.1581680651425,9.42097222522578,6.99987336995362,1.64664631512073,3.41493009938604,1.45368301588296,4.76158457539479,8.17944310278292,5.31340980255594,11.1355249561169,0.618346269010009,-2.44094254104732,-0.707667122356294,4.06825637361337,2.83286827855917,45.0407132558331,5.14646983879404,63.2729154365242,3.22436185515863,2.89939768636408,52.662096651399,-11.73875999879,34.3762169685465,60.4315859223525,69.8527818770608,5.57486618350983,83.1112645800038,50.1751607499352,91.8822441901244,104.344418725527,59.7773358088585,53.1409461445638,55.9013931372964,116.086198122088,51.5262428388809,46.6067020833717,46.0694808465093,41.3588355522042,49.7234633089689,48.1854766103421,41.7127359637327,38.2057575115546,40.0341041563249,38.2757070105659,34.9729281435629,33.2548497489337,43.443193365226,35.6526670284394,38.9876683072823,30.7337509950782,37.8796198364135,43.6110735945494,33.8745964310895,44.2064749268078,37.1685426204182,46.7140066681112,40.4446342098874,33.4282095882587,55.7711252064696,53.7003315299463,45.7571097683647,48.612311612338,46.5279580612573,40.4465821889335,36.2685206646265,41.9611051088247,35.529556982336,31.2452324422716,-0.6473126378297,24.7184263709571,96.8516429710501,38.7600798673499,20.033765925659,9.91469130159595,-16.3461333685807,-30.1110138221067,-37.470044524711,-68.1919260165102,-27.1509387032924,36.3162189459778,11.0076109055904,36.776568892196,27.4397943472181,82.2782369344685,8.33004995364959,-11.9614000263103,-13.2251514312007,-11.697342101547,-19.0295220690508,-16.2351697018891,-17.7194364325647,-22.4658746687618,-16.3428638128425,18.9061616323517,14.6785337578134,13.9135298855887,12.1795879743459,14.4225850066029,20.6403737511224,-10.580411144428,-0.440504225456978,-23.4870674921924,2.07286482628756,-4.66251771432257,10.1596169263696,-7.26705877526246,-10.6280985786534,12.5364935106448,-3.06639863270904,-3.21081689740227,-7.88233601315484,-11.4810468539429,-10.2720468356271,-13.7325579886915,-5.93033854636487,-72.8908682052483,-16.6827275422906,-47.5805222152191,-65.0739563671623,-56.645015827273,-121.623333010198,-28.1505628414599,-22.8832309169339,-18.8601849723659,-10.1092433906651,-26.2709573352562,-20.0943142337425,-19.4201109985531,-16.8261297046929,-19.167713879931,-14.5846878200841,-15.6146353291831,-29.7197878136419,-56.5543548174177,-40.2547450215866,-76.8262140993434,-86.4122266864733,-75.9788138650794,-53.2417511060055,-59.6425012104304,-24.8811353619934,-53.6974452983893,-75.7355568832341,-48.8215263503488,-93.8619498235547,-60.7992963754992,-38.8139965233688,-40.2339030645806,-34.7486351029855,-127.064689685562,-30.7938995019569,-56.1513357677136,-41.3420321610742,13.9125049312288,3.78720273254346,-0.497450821969166,-4.56244202799087,-1.94696879115477,-14.0950155009954,-1.43114212089142,-2.40695886629719,-8.53363449391999,-5.54022441691065,-0.448548414299381,-36.5107315817992,-24.1580423340016,-15.4225592591737,-11.8725998423367,-10.1678897478849,-10.077674133415,-4.92389527463626,3.45355588043507,-5.28556393912288,-4.7650790206115,-6.1420289667582,6.12177764346848,56.202258002896,32.3032020177285,-8.92535484567372,-90.8254533592819,-0.843255790079248,-10.0831462296392,-22.224248711982,3.97430185898561e-17,3.42671748891828e-17,1.27480692118425e-17,1.54042183713589e-17,1.40547665005638e-17,1.51557735286825e-17,3.00282006930484e-17,1.83370642674716e-17,2.82269564309834e-17,2.89695762174561e-17,1.15366051138248e-17,1.36913809190588e-17,3.14353715246101e-17,2.92201202540916e-17,9.02451305254913e-18,1.58293065179432e-17,8.65958403345466e-18,1.42366800391839e-17,2.15511245773491e-17,2.15673028466216e-17,1.30568027011529e-17,2.22960150066741e-17,5.80456007528442e-18,1.1055255416724e-17,2.03334717437959e-17,1.8344858692535e-17,3.23839931832068e-18,1.21259409476168e-17,1.53341916556666e-18,1.00796002700299e-17,9.262382205308e-18,9.6938009125918e-18,5.26715172238341e-18,9.4809663314004e-18,-1.23704932370676e-18,6.72456583845506e-18,2.37091321768491e-18,1.64521305519464e-18,3.29832763880127e-18,-4.06273951131247e-18,3.95099902648415e-18,-3.97121555806659e-18,-1.85201833046632e-18,-4.33182468409974e-18,-5.22723393913409e-18,-4.62986143070531e-18,-6.65403098341563e-18,-8.46587376537692e-18,-8.92436221531736e-19,-1.37077886437957e-17,-7.91864199890089e-18,-1.257056294888e-17,-1.09311238958558e-17,-3.94979799544033e-18,-1.89070473998063e-17,-1.15955438014969e-17,-1.68988225110032e-17,-1.15968988359025e-17,-6.74986508050627e-18,-2.37099251447427e-17,-1.43166416506228e-17,-2.1621584819736e-17,-1.27243584944701e-17,-9.14120829928257e-18,-2.74476182521661e-17,-1.61768005189846e-17,-2.65792427694748e-17,-1.35526339938244e-17,-1.10200403015984e-17,-3.09590582936306e-17,-1.79842655067617e-17,-2.81417448123411e-17,-1.42440611357038e-17,-1.33965993828228e-17,-3.10887504538363e-17,-1.86711255695968e-17,-3.05805823506878e-17,-1.42633107501683e-17,-1.41425144740486e-17,-3.1791417281709e-17,-1.96772958996531e-17,-3.057052105928e-17,-1.26903157345438e-17,-1.51760108674984e-17,-3.05229680458668e-17,-1.84412138654554e-17,-2.94491498391256e-17,-1.16690254362089e-17,-1.54383697280508e-17,-2.80699815301424e-17,-1.68483016730264e-17,-2.80445343230461e-17,-1.0451096378878e-17,-1.50604429190174e-17,-2.43533143253052e-17,-1.50883805660348e-17,-2.42640857526316e-17,-7.33092648809355e-18,-1.355065404766e-17,-2.02309341165316e-17,-1.22341393412793e-17,-2.07467795496215e-17,-4.33848458571987e-18,-1.12236258517707e-17,-1.56002326031429e-17,-9.06890319582667e-18,-1.55187024507072e-17,-1.90294793959685e-18,-9.49895430415478e-18,-9.16555146422824e-18,-5.59335919624911e-18,-1.0007113725849e-17,1.00459505432434e-18,-6.99535374161007e-18,-2.90950892956763e-18,-2.37855857834214e-18,-1.80141347638404e-18,-1.7427219365699e-18,8.92904951507542e-19,1.01370059969866e-19,5.57151237109666e-18,-3.48683630101979e-18,6.8758559220676e-18,-1.04389097177302e-19,8.72576372262029e-18,7.46043411761267e-18,8.64846264901192e-18,1.22664590053175e-18,1.35991185273956e-17,1.29039154532784e-17,9.13228051027351e-18,1.41707309096318e-17,1.16582888372582e-17,4.76881848827236e-18,1.99146437675896e-17,1.93214907782625e-17,1.26027115971762e-17,2.05387789168868e-17,1.33687547004803e-17,7.49932826706421e-18,2.75691743063445e-17,2.66962452592424e-17,1.30050526941207e-17,1.01684352462573e-17,1.52065299531596e-17,9.81245075883617e-18,3.23539823777545e-17,3.07219454201985e-17,1.36314378068064e-17,1.29660369978415e-17,1.5322645018129e-17,1.18526162663245e-17,3.55346302054212e-17,3.02828680245886e-17,2.65974496400268e-17,2.13016447237727e-17,-156.874417830414,-9.13368521962116,-5.17967189755322,-239.931791987808,-97.0683539173015,-195.362268988207,75.2208620961042,3.02901141673759,70.5057397839064,-2.81205972383414,-94.0621638599809,-7.65305896957836,-358.839385948531,-215.124778357033,-326.62730832842,178.667170250186,11.2533568737453,29.9681855578018,185.660131659736,-85.4912349779678,-15.1185545164286,-296.713359747709,-443.623467170444,335.386600457728,214.375775356056,301.88909036962,-653.471611674956,-16.5552241119408,-711.912048564036,-376.207279635855,-633.14794153564,353.879415601792,28.1477386431907,270.667287268976,474.74711665951,462.165230954344,264.047236148614,-27.6649377637551,-377.462765788938,-420.110258850214,471.119582834871,356.8371463514,827.487884186149,489.111537369493,-593.949856362896,-22.8803079107955,-767.779364542283,-509.825913003052,-472.525468216751,449.054084049419,38.9597063572243,472.361165116838,616.527381173835,617.778468549687,-25.3075442861311,-566.323881310676,-464.099137982744,19.7392644368746,549.817225697531,952.756897656313,541.561365413573,-625.500300433028,-10.3532590259076,-527.803518661853,-383.561934080112,599.587018081084,34.2601899230128,676.679605183178,-748.593949061787,-27.8047437400748,-645.025343566407,-514.644027703997,-267.897858488624,539.827899530387,397.572109645316,950.353027030169,541.960591916919,650.865926373143,-20.3931473091972,-513.176937423962,-311.814395693673,377.635564164818,352.011102094607,853.500463878102,484.551523334857,860.454831072259,-471.402093916627,-23.2347446673328,-466.832706852423,-435.749706983084,-422.197929226469,215.926668910394,18.2398775013856,435.853737203996,386.362318460432,808.34491727196,-21.3978552750175,-309.816857749521,-193.450433774645,147.466766730325,15.887653366889,367.880318552323,263.322836096609,-304.479562878091,-13.5898531271938,-194.158153823498,-279.075984528376,-97.4722319363947,51.0009165417607,26.3122812929234,281.954593802067,122.083137838397,-9.83583967833241,-184.555529136698,152.52128500653,73.6738669693477,-55.5805684041821,-4.75740031300213,-23.3974843075317,-1.39537543053115,-3.93422089292634,-10.6398330107662,6.00768036910212,-1.57659639286426,-8.89018704042524,2.63931256760278,-12.5027872878385,6.69263719083661,82.4978574736606,365.027490284539,4.78279893361726,-10.0514670697069,8.60392087023633,-26.0545857239894,13.5256467710546,125.090998213195,574.708923563961,6.9471734866121,-9.43167904775089,9.93916166597443,-5.7255787032281,-17.2144730785721,105.146417879692,666.413681421902,20.2139551452847,-20.0693153744402,99.3252862053178,596.805217821615,7.13100359732689,-10.5035812517918,5.86176325505823,108.172457680438,516.510957511226,5.51449600342532,-8.88030246426567,3.28778025393519,11.5113584794378,-14.1424392932045,3.0600381322588,9.18509742502127,-1.36917062391802,0.421114643859554,1.32095734847367,6.41102621666042,30.6929618564435,16.509883451233,53.2484524589589,30.9080607029251,128.987775547865,34.227156088827,61.4722060159785,37.0372640570137,53.2295141760329,32.7898125828035,-0.0401352674852477,-0.939469704700285,31.021285998093,40.1865925724018,55.4114584418007,57.0893940132655,87.1798332406501,60.9093732316803,53.2010422153479,48.2145934298721,8.54443312361859,-4.12200704696741,29.7807261383069,49.0841122744707,86.8135785463616,52.4529473007572,70.5108039020686,77.402886696584,53.7730252941342,65.0339349938034,46.3993015673215,30.3703385037174,51.0139174393018,53.2451302100157,53.8489479870179,59.2649515939531,58.825782869492,49.2544495206199,34.8912691402828,34.0870484321185,58.2337434809413,52.9192180770924,55.5159174799789,72.1929620203966,52.3642674514063,65.4501649416713,45.375796931916,23.5762217386547,44.2777016785569,44.839853118023,24.6856811682669,25.8945090147474,35.2635872753294,47.6510658570087,65.8849263493604,45.6327549745988,44.1210894284479,58.5739335555615,42.9584595989478,-2.18557559808192,-16.5326245423759,11.1509720806614,125.547250419212,83.6906228022719,58.9870731939781,56.7366427062389,61.9471699212589,61.6210588640358,68.0701059395663,61.4548397108343,48.2850991132684,719.863673248434,7.0624812259524,392.174876619972,819.308248411521,76.4976969330377,69.1645094855008,54.6517026441811,50.8424051570312,51.3345219514963,76.7940181848199,45.3235799715349,61.2170674613728,37.4473481690871,32.357049706007,41.8400421033005,40.2426176154183,49.6008779344741,48.2220698638543,48.5942139586506,41.7762042755096,47.4874810934352,44.5147009451607,32.7582815515299,37.2343625434159,34.1879546288839,38.3323725361573,33.8670610984483,38.132230537997,43.6702966667304,32.0943221877477,40.1599669096876,38.7420076150945,35.6332759160722,35.0642041343043,30.8996924720728,-2.72453982822451,-9.61589209729718,15.9825046044281,36.4714076578475,24.7410562816364,49.0043554527379,45.3372646459966,54.2336116045244,63.544759873042,37.6034212700211,37.1365664977898,34.4791080560431,28.0904518530093,31.4029091405009,30.9677690081307,29.5486158487168,39.7146581998539,5.16027959500762,-3.79400664347971,-7.1841614944776,-7.11508816959119,-4.05245370222589,-14.2390027829081,-7.46143632874555,-4.58749750515137,1.43591046572071,-1.30109677636917,0.952648347229723,-1.21628122438335,1.32131453044861,-3.79881157425475,6.25527806703827,4.85268115566051,-1.0465611176484,29.4868193420907,38.4673244210957,30.1687715678376,28.3665513784371,50.6543886693446,44.7057464261285,35.006083218113,36.8547316958411,35.1228824673128,36.2296321904388,39.9341149910012,41.9501408113382,25.0261798257324,43.3364458461394,34.569965467759,61.090912162196,33.9619086653786,36.5420659848161,49.2722682253738,27.470496278297,92.3755561168612,30.1350828497473,30.819145838707,30.519984125315,32.9869787167211,27.0002859423658,24.2645955841425,25.6536026309191,21.9691464884189,28.4313732468291,23.9356295200555,23.0422074198782,23.0643994540084,17.2868902193086,19.8878735892091,20.8001270597262,21.6328009923024,19.1510443709104,14.3014573921958,21.9546361740756,25.6586107328253,26.6824143985812,26.8503227716414,31.9069602484178,23.699587207201,24.7226483862061,22.2698335668871,17.3062236784364,16.2337051227677,14.8567609947402,32.1876525132105,28.6362034039651,18.2904958176528,18.4483402635095,14.0129553295322,16.3150982898615,20.3017795372204,22.9012858412061,17.352072296624,22.6361953634221,21.2777288522728,20.3957739074415,17.2039795573752,17.1574040884189,13.5096895781147,16.0175122960455,15.1765025883901,12.7382219837687,-0.629444032908014,2.87559861933808,2.03908733741767,6.0072241290922,3.63200947356117,4.14429582025727,5.54932384780519,8.50332831413801,12.7470273861205,8.79940735260444,11.5431703969848,17.7205310179816,14.5585752888819,9.1667957996526,6.85426982827086,19.2642777117112,9.98058044195729,13.8336175513096,19.6094410531246,20.1115229498084,16.6547652020896,-15.1395472021214,-10.2461595761569,-14.8489300395822,9.31854202923018,361.466984574274,9.97667317050924,40.4016716281884,39.4794032971058,38.378247736128,53.7849216439172,82.5711843476025,32.4917527388944,43.495495208721,69.5817917936248,31.6226680905506,26.3252826780794,17.8634503420988,20.316979238069,18.9393008795739,20.6349025275045,43.4591712254851,39.7348021893879,37.5023771866584,49.0252304898215,27.8163779215836,31.065277010994,23.4056409778239,29.0975176222905,29.6378733922807,28.3550836243634,22.4793933858948,24.3175291465408,24.7662642198438,22.9244014656851,27.1721587318165,26.7239500512406,31.8323691790932,20.5951989243753,31.1364205690728,24.7197184716696,35.1420988360446,21.6947486866137,17.3473211282569,17.111636292027,20.6727578248907,19.2520560857013,18.0056889619687,12.6501237093811,16.312063104811,13.813981984992,19.9855406773637,10.2866774986399,15.6431353992445,17.3504106518057,49.7362165266805,41.8565761343732,20.508989051797,14.3977738197276,17.8386551515982,16.8122774131505,19.3793985404875,23.9887385006684,14.185011801161,9.96353112846449,9.85187542194412,11.1491983908044,11.654011395939,11.0604986635091,11.6453805632116,25.6212421631923,18.6275815899393,16.0660350128001,10.9733243492088,12.6177565157639,14.3663162844571,9.59191133909248,12.0625550494908,12.1459204120575,9.57520870587842,5.85552243820557,7.96588347834579,7.48585137833252,5.95601622623965,2.13818840196819,2.19957005028239,24.320702042337,14.0943530000391,-16.1588399215076,-44.8974447773696,-17.8859536672925,-26.2372537554256,-13.5099120870194,-32.7185280558314,-11.499191412472,33.7769367030477,25.0886113151068,27.820135095094,24.1958068605741,27.6787346347236,28.553619539031,30.440397568685,24.4848887206241,21.2193614574692,20.8832805725202,29.3981353891485,31.0336871017868,27.4025531897374,24.2062296431918,15.3917609038485,23.9102855307228,85.7092656815397,49.7427685996102,49.5914120366082,39.8824376184115,25.4353671526542,19.455643490355,31.7495210108082,27.0531279099319,30.7171885984255,33.7466776032463,16.7984335173604,16.1983604628674,11.4677809173222,13.1801040875924,9.88788422468561,-9.41810993283163,26.7372677927017,22.4909733585902,20.0220362005821,15.3398256638889,31.6005416551127,19.973240494573,18.8235288624024,27.4613359422638,13.4061779577942,17.0480608696161,15.909460070233,10.11876128579,13.7440993563593,12.3850900619933,7.26421106034848,9.41730110351737,4.69450542880822,6.99600170072178,6.88860931865335,7.3585161504274,10.0138025330389,36.9782049533988,38.5538753187231,25.199899438799,23.8763043872136,31.5667055590368,25.8928029377004,30.1911882508548,27.8981775752289,39.3807619016422,13.541798414159,-9.06771853748153,16.8690831196785,17.9535171072504,17.2272878890165,18.5532083149346,35.3051010104571,30.4013319666293,20.8302601317985,23.5950657569544,50.8401487859133,31.898619257967,43.0385580851606,23.9563640234121,21.7469359194486,20.9469459922955,-7.04905188397751,-15.913271760866,13.7736141823363,26.6355194288301,22.4070879330639,26.5159167282847,28.4808080307054,24.2768147942457,28.4044639763426,19.8699589764298,-3.81148544215171,-2.04720995084291,-0.178851296103357,-1.2509103327393,-0.18343306504548,3.52113316922798,-3.79550943349987,1.4717592104162,0.473201034692741,0.514563982605802,-3.57587133523747,-1.80639005655714,-4.59303439485438,-15.1190689704022,10.8553963075466,15.7561828325549,13.772751010411,17.8448051610327,30.5025228825734,-2.46586784744794,-2.91037794553937,-9.41227521187163,-8.0285780664989,11.1678722954425,8.3338538903638,12.9533965278955,10.1035128313098,12.6248699383221,9.79224451484648,7.62907248712592,15.5723347824302,22.7912212593332,21.6913206793036,30.3535987601287,37.9850397114897,32.2891772426109,28.1399690297432,36.2837902976012,29.3166268344802,26.2030677049943,28.664677499788,24.7504765949444,22.2455173045047,24.0111104321606,25.0202330867916,-6.14344983355056,-6.08901807546451,-7.64747049753138,-6.0179015217009,-13.4955816455437,-10.6339947788803,-9.33818164954537,-12.2485804382379,-12.9188164534833,-11.569162305413,-9.75515653048459,11.5312513768173,14.9326836494429,13.4991476815296,16.2697583808604,14.3433861352428,3.7053127146303,22.3191548677949,18.3814528047901,13.621593172232,16.341672901804,15.3812322813762,16.102618613418,21.6521667630675,-5.68880901068806,-6.90030470328994,10.6181584059704,5.64933043675241,8.92479550454702,8.24907992771541,7.32934892035761,3.00443729698843,5.00908091593268,4.53234852223977,6.21569003579857,2.12350190277619,4.51277581971759,0.642333449380251,3.59735703242326,2.1610074329476,-1.12001876176343,0.111811857583095,-3.15518426415141,19.0671888963538,12.9289087458398,10.1532440100091,13.7590396878347,9.49906753455841,11.9270575927333,11.4783670962906,-6.40908083315869,-0.119749200691917,5.54432527747669,1.06309573976815,-0.615318862519847,17.3701648846865,16.0138100509637,18.795803057699,-4.43758364639065,-10.5298524557079,1.41895426966184,2.55940646001426,7.93754020753497,5.90478873902526,8.27996679491543,6.31832582080328,2.3489847063605,10.6886573266489,6.06986431721504,-6.15693090176966,-1.51050813784287,1.30855220603589,-1.59122751532757,0.515423508950935,-2.00643857891819,-3.71940494088557,-3.52533489175881,-5.44686594833667,3.38156531768986,-7.51031373216713,-7.76572238332846,-6.03298030146795,-4.02090503488415,-7.77706300883999,-5.29393317992259,-11.8134266239417,-10.4505806525712,-7.66252626069499,-9.7728430438811,-9.31541172682077,-15.5182891143581,-6.91626978977426,-12.2948681072771,-12.5011442052434,-15.6306933221316,-15.8754101847684,-12.8151569098467,-12.0639810301564,-16.4801494099751,-14.0207034416717,-12.4572950229556,-9.90520827929934,5.17115489948857,4.45432800037897,1.66708337199677,1.19373053828408,-3.11593119565085,2.92182608511563,5.11698104246515,5.47504288057031,3.55589051714643,4.97515172467494,2.48449275500123,0.180080736066171,2.55880908345599,-1.77872504926685,0.638200378317805,2.93327319999522,-1.5944324583853,6.38190817259963,5.41269884068469,4.16624852343559,5.49434361188114,3.74136095922225,-22.0951793988043,-9.97581376849269,-7.84237197575599,1.53064792314639,-0.598920030984542,2.86163812303192,-1.38659458464953,-1.91336584491754,-2.51537867298142,-6.09185225651141,-4.45542450713175,-5.03652207112066,-3.61190911152866,-3.48795850798189,-0.208960015270518,-1.79982325722806,0.761889434151851,2.23910399658816,-3.44520037489323,-4.86924744591004,6.2524695386598,7.26597865068867,8.12777639259552,7.99567567554268,6.10221683943977,-3.49593789394955,-0.446903324320518,-19.8047259622067,-18.0641742109188,-18.2732378989396,-20.1734624655157,-19.1985472339371,-26.9918575897921,-17.8266109855901,-17.6150904312487,-24.9904497208977,-22.8141331064565,-17.5854192548814,-14.1708379271034,-23.767634966216,-25.5741356001118,-12.6089807292364,-26.6008666666226,-23.9960425414814,-21.0943012084938,-17.1602669816552,4.42909932032139,4.52223342657879,4.13752052046171,3.61412049928666,6.49751930402131,-7.66676005761307,-5.17119051118125,-8.13432224064386,-6.35593093155089,-5.1835317506901,-7.5306929706322,-4.98423828912074,-2.8246112556902,-0.495260478049464,-1.94035848293689,-1.09497153507994,1.19246160606744,-3.30022267158767,-7.38750485227362,-5.8595219477947,-10.4408855040043,-9.32935853742122,-10.6295502717142,-8.09197306890261,-11.3633717974697,-2.63031171437158,-1.73929455646618,-2.28193116784687,-9.06582113597599,4.30036819458588,4.58945803053787,6.64241612049288,8.85389950710915,1.52453257640282,1.79594657941135,-0.346200796804841,1.10989005839803,-0.457150320511572,-2.02119765273933,-2.75707994810714,-4.09456868130101,-2.5806865715562,-1.63034016711405,-5.28861335379975,-15.6177567241173,-20.4250601748261,-24.8792079671641,-17.7882425490563,-15.8123337856976,-13.0815720536338,-10.2634676598665,-16.6726851859979,-16.7437197283217,-12.4571921165987,-19.4476099093396,0.937482992777377,4.52118833048385,2.16274428275565,7.08310100383738,7.41887066705433,8.27904030985648,-8.26063674942729,-9.97451606504842,-12.5010652615776,-18.0779186416819,-7.33255988662229,-9.91915543424,-7.3505785256808,-9.14887255363602,-12.6121139768156,-12.0086785435573,-14.9039393981238,-11.7902414302736,-7.48285903396264,-9.33104339069887,-12.783367318574,-9.8331004629177,-11.600963980516,7.67961990092262,4.52844189830899,0.799787367725447,0.596200373616222,-24.3429686923436,-15.3665033711517,-18.6983377701819,-15.2938401842226,-18.1781648813981,-21.727560973872,-11.3780585907154,-12.7051039692403,-10.3808534622705,1.02681333787848,-0.722930726496774,-2.75994843365607,-1.35797956986848,-2.83571723663717,5.96767161415574,4.21145939036402,5.61162818761741,7.01278582967288,11.0462014846388,-6.09996680840896,-13.8313622590906,-5.01369118864801,-32.7739635958897,-9.23165814624435,-10.8929232838011,0,2.67232023918185,4.08675571970475,3.03491555034363,-7.32118008796088,-3.13524636067078,6.48389733590998,9.59297197271413,8.40670546346912,-13.6834311846543,-17.4551777076536,-13.9558227211337,-13.0077342774838,-17.1006100934395,-18.36464990802,-16.7711781063507,-25.8349144381137,-21.2185528548841,-19.4775824234054,-20.9175057579528,-16.9697702195723,-29.2032497653767,-10.9583581657205,-15.8635195441495,-8.42800414460904,-13.1444457053344,-14.5074506723787,-13.1904275438385,-16.0941187121091,-13.3867052626691,-19.0895856521368,-10.1755997654131,-17.5085389746365,-18.9859485254043,-12.1034445832861,-12.3680368242793,-9.99011200644456,-7.63309188333136,-8.46556303530654,-6.53679832774786,-5.14292825564026,2.52476354841459,1.01152055227389,-7.7150118269267,-5.85524900765136,-8.53564143779749,5.80686879504846,9.30116833103983,8.56145557713982,10.8628081521302,11.176958981641,13.6817471398379,10.7294726376488,-33.1064924195906,-20.493325318299,-35.9685069742676,-12.7033447146665,-17.1437306863377,-20.5503601150964,-28.7895718010413,-33.3833227942309,-8.46722568564899,-11.7444886034416,-10.7473209733994,-14.2341213547878,-14.7460189876149,-18.3720954895311,-17.114758861029,-15.5270078246689,-17.6320287736968,-4.58796005229816,-5.52789140506516,6.75284636321624,8.2734791535364,9.06738043100898,5.86421526659285,7.89820013223177,7.77827836923913,-16.4570874136347,-27.4919712918102,-31.2490982880847,-18.4213772776321,-21.8189705892956,9.68505168877291,11.970741564605,-36.3294681845989,-33.6376609553175,-47.1383960882373,-37.1997030141979,-36.3641538557937,-43.342194238889,-31.8876204891193,-40.7164216048224,-41.555051376472,-43.5789895367176,-32.1060550334349,-38.9070643163798,-55.2997803213917,-39.6661942470536,-36.4237507446409,-30.398411197927,-40.7929710863765,-27.9577404601298,-20.5521784835799,-26.2623716773164,-40.1256721087882,-53.846942752016,-41.5580488708961,-28.6249433757129,-31.2211909377229,-22.5892943812261,-38.4228774925589,-25.2808171258594,-21.2371350855774,-39.8646466432146,-40.2601375770473,-51.382960536268,-33.7332124139441,-22.0975271303752,-22.871320048424,-27.2697978536235,-47.0723697106882,-46.4337731580224,-102.710936837664,-52.8319461796179,-20.9324918208581,-24.2298019966248,-18.9474401052168,-24.1714674052732,-27.4626023707949,-25.8339779560563,-27.4609593879954,-24.8533644165126,-35.3863052777245,-30.2405571537656,-34.9128890263139,-30.2870271619021,-33.3063128478578,-40.7464166993305,-41.0622065316202,-34.0773944598715,-35.9183558847074,-36.7401397167877,-39.6779349572211,-31.5214648520371,-27.6878985121585,-35.0628305674767,-37.7817323693158,-21.6565128405028,-24.865486305822,-21.0357590253461,-19.8161005060371,-24.2414249531373,-29.3016400389801,-27.0706970385338,-33.4337241589188,-29.6823407160817,-31.1734021807572,-36.4772282723478,-35.165673535988,-44.7450704494425,-37.2136213644721,-32.4484910676152,-45.6700771594015,-37.4239130180449,-28.9396921888821,-39.55352282715,-51.1682238924646,-46.5755591944809,-50.5710855714052,-54.7424151824322,-93.7098471327669,-32.2732964381943,-62.7835432204876,-30.8597239893792,-27.5267475702737,-27.5413903747588,-24.6710215935902,-27.0659044537243,-21.1173400956731,-23.5036646555228,-25.8702819351353,-52.4187051018154,-25.4341630956543,-32.3695639580965,-17.2298761725784,-16.6085009671898,-30.6777667339878,-26.2698136017901,-24.6360404527524,-49.1746075623177,-56.9016416384009,-46.4175013639401,-43.3970524411546,-78.5299145363747,-41.8710522407408,-62.0322963502331,-21.8380153501431,-45.7258109394436,-23.0738771931826,-29.1279686982274,-33.2524146199352,-16.3909373720713,-23.0485297152012,-45.9145531133743,-78.7814528592265,-47.2920200352141,-49.5229508598546,-21.9793893221609,-20.4784920890727,-35.8746646487233,-27.5951639357938,-30.6229009705135,-30.1206586819665,-35.2661949353507,-38.8015329558326,-29.1025593405681,-13.6165870661573,-16.2936969117088,-20.8218262141062,-42.3546621514175,-55.3992581541606,-44.9424864961664,-43.067468397505,-51.2479789490877,-57.5291639681498,-62.7866006065294,-37.7280191318707,-46.966805072649,-53.4013004027182,-36.6787108998933,-76.3225445259834,-60.0342302675003,-55.8662206857883,-44.632529190247,-52.5205232841136,-41.4162325940937,-51.2392239906283,-51.8189918967867,-52.8162995633794,-40.4111957512385,-41.1895765666374,-32.3125344617764,-38.9523322473328,-15.9818237019112,-12.744767147235,-18.8648549332656,-23.961915557629,-20.9660867735693,-28.9516102659878,-25.6983182032623,-26.9255403629127,-29.1138279475989,-34.1934168262486,-26.9652375337324,-31.6788438974296,-41.4030823202061,-34.8250605313769,-38.0865233148617,-34.4933336857403,-36.8961185417759,-45.6681862728453,-29.9007693767071,-32.246616728758,-48.0485138060124,-47.3579972398835,-43.5603502705124,-146.584829454966,-27.7436078033456,-44.7319990423438,-37.7417971043794,-21.6618492233754,-20.8378335357689,-21.9890694122992,-38.0709918936175,-45.2652266477716,-41.0246501479732,-50.1925183654911,-72.2221199070027,-41.7542256564163,-52.826524975622,-47.2677998621515,-54.3416955926096,-60.0184366589293,-71.4688603105609,-46.4063795334515,-133.877838419802,-28.3410244860122,-32.7383062372849,-37.9240968835992,-19.6700018818884,-17.6727719131795,-14.8269589348378,-28.3404017964188,-18.2425140055838,-80.3061350772989,-36.0362074179343,-33.359950048346,-40.7792271343205,-36.9250596896648,-52.1979170000664,-63.8063360074551,-51.1822887980692,-93.2692212203729,-46.8803361470468,-47.4084337149029,-20.4277941459427,-24.3939386504586,-29.1130398779883,-24.9887334961879,-53.4069480304702,-49.2925858491316,-47.6611929274976,-52.5378195496953,-78.9708414970184,-58.8418589803982,-72.4044521437174,-61.5141439051377,-20.9555320210802,-69.663055233673,-57.2154223502727,-111.752938431504,-19.8856173883709,-58.596866523741,-52.1052257617705,-23.2328846205431,-25.7708608289676,-30.428675342333,-86.2834689598504,-76.185705402607,-117.972067650963,-21.5017956139866,-30.1402254822603,-29.7119104466608,-33.4097289338282,-31.1834757833209,-39.1001315514745,-30.8116178169323,-40.7215486761475,-27.2229368027311,-25.7405456462269,-26.3379454119606,-28.5837674174929,-31.4714296105127,-40.5905222800745,-75.0445100299576,-70.1145511801933,-25.7996414138356,-21.6294700784426,-12.1577109315427,-34.202297642775,-12.0836047945192,-38.4382369729063,-49.1738046956063,-157.186130388553,-63.124826298399,-252.641845329259,168.189537655695,60.0026258110324,-340.923588108321,181.177736524329,-438.709684936096,440.575622523431,-530.957588816473,383.731602285917,-568.52988488369,488.85162467358,-627.648493802738,618.998765209193,-540.981429683118,-592.99301340356,-566.60145810942,-490.2995581723,455.635209786383,-412.764487045781,316.747700340387,271.844505180328,-311.07808658763,59.382748713014,214.130216720493,-208.129914641418,-80.3342322456714,16.2267951623337,5.54052024228235,23.6356553603335,14.3112203216602,18.6976321736309,11.1218300421894,4.22904428296532,12.9141210503365,10.3320802823484,14.3001867262898,9.51547271822573,7.07008814912754,1.66316360068908,3.44918479945704,1.46826471280154,4.80934738363564,8.26148998575836,5.36670789471121,11.2472238947199,0.624548816461498,-2.46542730419054,-0.714765635157708,4.10906450081783,2.86128439555089,45.4925105338623,5.19809337884367,63.9075974586498,3.25670499105142,2.92848115081064,53.1903429912664,-11.8565099061852,34.7210401325828,61.037766953981,70.5534656458894,5.63078690911602,83.9449423882909,50.6784609735071,92.80390250376,105.391083419533,60.3769541464473,53.6739957586682,56.4621324203094,117.250643010658,52.0430955834067,47.0742075826647,46.5315975525314,41.7737004149964,50.2222326168521,48.6688185825137,42.1311507534924,38.5889942767168,40.4356808183868,38.6596454296534,35.3237368363609,33.5884246306746,43.8789661381797,36.0102940896814,39.378748313451,31.0420370775906,38.2595851588467,44.0485303512848,34.214387907636,44.6499040734502,37.5413752238637,47.1825885251215,40.8503288431656,33.7635234190051,56.3305577895591,54.2389922628856,46.2160931225227,49.0999351084494,46.9946736899582,40.852296362125,36.6323252700588,42.3820112557496,35.8859491434243,31.5586491257203,-0.653805742993115,24.9663735490608,97.8231486490004,39.1488769647848,20.2347219110244,10.0141442236027,-16.5100992125556,-30.4130533126063,-37.8459014528138,-68.8759499657498,-27.4232860822606,36.6805020063927,11.1180267557237,37.1454696604048,27.7150391979232,83.1035587555704,8.4136075534933,-12.0813832055866,-13.3578111291989,-11.8146765516396,-19.2204046206694,-16.3980224843926,-17.8971776930766,-22.6912268066429,-16.5067968603479,19.0958067721824,14.8257721365569,14.0530946143793,12.3017597672985,14.5672559981814,20.8474145372062,-10.6865418117718,-0.444922863520975,-23.7226630766048,2.09365745185989,-4.70928679633352,10.2615266640569,-7.33995365495259,-10.7347075921738,12.6622453745633,-3.09715726096924,-3.24302416566325,-7.96140265526211,-11.5962116757803,-10.3750843424659,-13.8703074129608,-5.98982496696884,-73.6220266054553,-16.8500697167117,-48.0577959720076,-65.7267043862774,-57.2132142885033,-122.843320146875,-28.4329373144066,-23.1127694986624,-19.049368926564,-10.2106478382566,-26.5344777406253,-20.2958775709637,-19.6149114946806,-16.9949103267307,-19.3599826148377,-14.7309848429708,-15.7712636156641,-30.01790296918,-57.1216438703702,-40.6585349022044,-77.5968474197843,-87.2790159973716,-76.7409470288495,-53.7758118809886,-60.2407670404733,-25.1307146518899,-54.2360770799318,-76.4952499692541,-49.3112484510853,-94.8034662955503,-61.4091658607472,-39.2033344514582,-40.6374838823581,-35.0971939427531,-128.3392583321,-31.1027889259734,-56.7145821913095,-41.7567284713319,14.0520593788414,3.82519164884212,-0.502440683609288,-4.60820726438275,-1.96649857069567,-14.236400687348,-1.44549771315345,-2.43110274381406,-8.61923422263986,-5.59579765566052,-0.453047742529236,-36.8769657720487,-24.4003683759322,-15.5772608566809,-11.9916922790268,-10.2698824691214,-10.1787619140742,-4.973286199459,3.4881980304703,-5.33858271320359,-4.81287688115776,-6.20363882522106,6.18318436365759,56.7660152205176,32.6272310503137,-9.01488386804544,-91.736511147608,-0.851714374393314,-10.1842889001526,-22.4471771327041,3.98341026660742e-17,3.43457092854147e-17,1.27772855660331e-17,1.54395221567784e-17,1.40869775773412e-17,1.51905079217964e-17,3.0097020098762e-17,1.83790896248454e-17,2.82916476985869e-17,2.90359694402615e-17,1.15630450033141e-17,1.37227591793775e-17,3.15074159207704e-17,2.92870876801896e-17,9.04519566458705e-18,1.58655845313533e-17,8.67943029174371e-18,1.42693080301064e-17,2.16005160011321e-17,2.16167313481799e-17,1.30867266187262e-17,2.23471135895771e-17,5.81786311594588e-18,1.10805921365484e-17,2.03800725193737e-17,1.83869019133735e-17,3.24582116549788e-18,1.21537314921873e-17,1.53693349520508e-18,1.01027009581965e-17,9.28360997201229e-18,9.71601741582922e-18,5.27922311670515e-18,9.50269505484899e-18,-1.23988442528897e-18,6.73997737208024e-18,2.37634693781711e-18,1.64898359695597e-18,3.30588683125077e-18,-4.07205060262946e-18,3.96005402807273e-18,-3.98031689242426e-18,-1.85626283389748e-18,-4.34175247176383e-18,-5.23921384884944e-18,-4.64047226668096e-18,-6.66928086343874e-18,-8.48527607347175e-18,-8.94481529908051e-19,-1.37392045077616e-17,-7.9367901471031e-18,-1.25993724896337e-17,-1.09561761278555e-17,-3.95885024447496e-18,-1.89503790592405e-17,-1.16221187681924e-17,-1.69375516687824e-17,-1.16234769081009e-17,-6.76533459558764e-18,-2.3764264163409e-17,-1.43494528996311e-17,-2.16711377261219e-17,-1.27535205078265e-17,-9.16215835650018e-18,-2.75105234124079e-17,-1.6213874928119e-17,-2.66401577643628e-17,-1.35836942703573e-17,-1.10452963145127e-17,-3.10300110628291e-17,-1.80254823108261e-17,-2.82062407897566e-17,-1.42767060428139e-17,-1.34273020552051e-17,-3.11600004548764e-17,-1.87139165372887e-17,-3.06506677189476e-17,-1.42959997740419e-17,-1.41749266538975e-17,-3.1864277672729e-17,-1.97223928344881e-17,-3.06405833688123e-17,-1.27193997278239e-17,-1.52107916410679e-17,-3.05929213721752e-17,-1.84834779155672e-17,-2.95166421611404e-17,-1.16957688100123e-17,-1.54737517824314e-17,-2.81343130386148e-17,-1.68869150458447e-17,-2.81088075109523e-17,-1.04750484714193e-17,-1.50949588309785e-17,-2.44091278799087e-17,-1.51229605062167e-17,-2.43196948108882e-17,-7.34772769471256e-18,-1.35817097865011e-17,-2.02772998937276e-17,-1.22621778577222e-17,-2.07943275547009e-17,-4.34842763671846e-18,-1.12493484473057e-17,-1.56359856190401e-17,-9.08968754234117e-18,-1.55542686136958e-17,-1.90730916482129e-18,-9.52072425290379e-18,-9.18655731173984e-18,-5.60617820128253e-18,-1.0030048287482e-17,1.00689741120973e-18,-7.01138587394378e-18,-2.91617701725954e-18,-2.38400982030931e-18,-1.80554200230394e-18,-1.74671595170336e-18,8.94951334131318e-19,1.01602382490805e-19,5.58428130701208e-18,-3.4948275224889e-18,6.8916141862129e-18,-1.04628338805669e-19,8.74576165322981e-18,7.47753213316106e-18,8.66828341902493e-18,1.2294571592801e-18,1.36302853383827e-17,1.29334889799093e-17,9.15321010655374e-18,1.42032077566363e-17,1.16850076046469e-17,4.77974778962058e-18,1.9960284662397e-17,1.93657722697329e-17,1.26315948170322e-17,2.05858502207452e-17,1.33993935577007e-17,7.5165154212286e-18,2.763235805189e-17,2.67574284034576e-17,1.30348580096916e-17,1.01917395287162e-17,1.52413806711577e-17,9.83493918685489e-18,3.24281320699877e-17,3.07923547679911e-17,1.36626786879526e-17,1.29957528962323e-17,1.53577618516312e-17,1.18797803983329e-17,3.56160693884741e-17,3.03522710834685e-17,2.66584063618908e-17,2.13504643831855e-17,-157.233946671889,-9.15461803525054,-5.19154280335357,-240.481673864021,-97.2908176772342,-195.810005280769,75.3932552101518,3.03595338331529,70.6673266588886,-2.81850447492009,-94.2777379559167,-7.67059844773629,-359.661783318925,-215.61780687886,-327.375881227568,179.076644284372,11.2791476076042,30.0368674192788,186.085632343448,-85.6871659977798,-15.1532036100492,-297.393375087085,-444.640174887412,336.155248128754,214.867087293464,302.580967582079,-654.969254788038,-16.5931658020369,-713.543626979385,-377.069481193462,-634.599006336714,354.690445584072,28.2122483574226,271.287609546904,475.835154360028,463.224433164324,264.652386422446,-27.728340982465,-378.327844702129,-421.073078389214,472.199306859703,357.654954937385,829.384342285888,490.232495820301,-595.311085980229,-22.9327455912634,-769.538981114954,-510.994345194809,-473.608414286002,450.083237794376,39.0489952182417,473.443734632003,617.940354545509,619.194309195714,-25.3655447695982,-567.621797005048,-465.162772370787,19.7845033928032,551.077311012346,954.940450515724,542.802529734612,-626.933838172752,-10.3769868922771,-529.013152394463,-384.44099122468,600.961167091201,34.3387083109189,678.230436975042,-750.309596003869,-27.8684673697312,-646.503629304145,-515.823502175435,-268.511833718163,541.065091049555,398.483275672005,952.531070636809,543.202671195567,652.357597709369,-20.4398848507767,-514.353049580014,-312.529019977157,378.501039101788,352.817850227749,855.456538279657,485.662031027756,862.426843672118,-472.482465407651,-23.2879946551112,-467.902606104186,-436.748369413145,-423.165533342343,216.421535225697,18.2816801236195,436.852638053203,387.247793598233,810.197503025829,-21.4468954322559,-310.526904023967,-193.8937884739,147.804734874092,15.9240651011141,368.723436165506,263.926326171697,-305.177377002334,-13.6209987034976,-194.603130493834,-279.715578075806,-97.6956213144002,51.1178017591979,26.3725844586062,282.600784620559,122.362931126032,-9.85838170968077,-184.978498263825,152.870837225796,73.8427146400185,-55.7079493860099,-4.76830344588143,-23.4511072662197,-1.39857338797316,-3.9432374419552,-10.664217654794,6.02144892609777,-1.58020967718709,-8.91056180064012,2.64536141229553,-12.5314414985822,6.70797554956274,82.6869281936155,365.864069712234,4.79376027571112,-10.0745032814786,8.62363955825062,-26.1142982963133,13.5566451975734,125.377684992905,576.026056314681,6.96309519819334,-9.45329481333015,9.96194049332196,-5.73870073234169,-17.2539256524726,105.3873951552,667.94098550461,20.260282009636,-20.1153107496299,99.5529224609449,598.172991430068,7.14734661550258,-10.5276536305202,5.87519739544415,108.420370112097,517.694710660603,5.52713426775709,-8.90065457075367,3.29531527361571,11.5377405080385,-14.1748513007519,3.06705120666429,9.20614806847051,-1.37230852450759,0.422079765274052,1.32398475263366,6.42571917208439,30.7633047789563,16.5477212284322,53.3704886372453,30.9788965945285,129.28339306249,34.3055987689389,61.6130896050144,37.1221470151276,53.3515069510735,32.8649611219543,-0.0402272505276127,-0.941622805627788,31.0923813823514,40.2786932429267,55.53845185305,57.2202329605839,87.3796342335622,61.0489669060081,53.3229697376137,48.3250928800552,8.56401547607913,-4.13145396915298,29.8489783754459,49.1966045103939,87.0125401473082,52.5731603197811,70.6724023831276,77.5802806309535,53.8962637019893,65.1829814452788,46.5056406847409,30.4399420297,51.1308324525317,53.3671587742862,53.9723603964611,59.4007765403105,58.9606013176268,49.3673321398421,34.9712338518343,34.165170009885,58.3672050779183,53.0404997075212,55.6431502931492,72.3584157148666,52.4842772316616,65.6001653196889,45.4797903549838,23.6302543324025,44.3791784585689,44.9426182512194,24.7422564497832,25.9538547191356,35.3444052751965,47.7602738001493,66.0359231247982,45.7373373007438,44.2222072804612,58.7081748089355,43.0569129058972,-2.19058455667187,-16.5705144381949,11.1765281664078,125.834982849508,83.8824271326056,59.1222612914433,56.8666732090034,62.0891420448371,61.7622835978724,68.2261107660131,61.5956834993236,48.3957601501972,721.513475402555,7.07866720278804,393.07367312865,821.185960210783,76.6730163301341,69.323022494253,54.7769548274756,50.9589270939839,51.4521717344257,76.9700166986125,45.4274537224246,61.3573663172812,37.5331709685579,32.4312064280223,41.9359321921545,40.3348466855835,49.7145545072804,48.3325864487218,48.7055834329638,41.8719480591816,47.5963141287907,44.6167208862115,32.833357827049,37.3196972169302,34.2663074660777,38.4202236573249,33.9446785035632,38.2196229685653,43.7703813802523,32.1678767840527,40.2520065588312,38.8307975485134,35.7149411779119,35.1445651827404,30.9705091851486,-2.73078399895382,-9.63793004710001,16.0191337211686,36.5549937716547,24.7977584732673,49.1166648999176,45.4411697597765,54.3579055959787,63.6903933945234,37.6896017618546,37.2216770398015,34.5581281661792,28.1548302758962,31.4748791385311,31.0387417407697,29.6163361295007,39.8056772789979,5.17210605702827,-3.80270184587119,-7.20062634129458,-7.13139471237864,-4.06174122026002,-14.2716360971547,-7.47853664118729,-4.59801125038854,1.43920132240303,-1.30407866355718,0.954831651310463,-1.21906872909928,1.32434275320747,-3.80751778871065,6.26961407483133,4.86380265563529,-1.04895965344133,29.5543979960451,38.5554848284778,30.2379131375118,28.4315625733457,50.770479705256,44.8082042101456,35.0863110635327,36.9391963215765,35.2033779962677,36.3126641969868,40.0256370268859,42.0462832272542,25.083535470864,43.4357654317303,34.6491938072573,61.2309218921323,34.0397434445965,36.6258140352015,49.3851916819637,27.5334538709898,92.587264801621,30.2041472107475,30.8897779529286,30.5899306129972,33.0625791263087,27.0621658948693,24.3202058108441,25.7123962198364,22.0194959456116,28.4965330021695,23.9904858138372,23.0950161458214,23.1172590402285,17.3265087606821,19.9334531314304,20.8477973280067,21.6823796042023,19.1949352289033,14.3342338415286,22.0049523761552,25.7174157994399,26.7435658448728,26.911859034678,31.9800854437924,23.7539025331151,24.779308390147,22.3208721464903,17.3458865287308,16.2709099473424,14.8908101032079,32.2614210063653,28.7018325943485,18.3324144482509,18.4906206460844,14.0450705823882,16.3524896533983,20.3483076797808,22.9537715994366,17.3918402239653,22.6880735804506,21.3264937006737,20.4425174687267,17.2434080819528,17.1967258701341,13.5406514335267,16.0542216443175,15.2112844888983,12.7674157698278,-0.630886608995657,2.8821889905054,2.04376057042932,6.02099164046521,3.64033340665565,4.15379382442898,5.56204193149,8.52281646153481,12.776241352628,8.81957406158672,11.5696253329595,17.7611433885347,14.5919410076493,9.18780449896425,6.86997862084902,19.3084280807984,10.0034541939251,13.8653217932148,19.6543824764702,20.1576150574091,16.6929350230265,-15.1742444073211,-10.269641989242,-14.8829612008647,9.33989850446905,362.295403943046,9.99953796769146,40.494265222447,39.5698832129891,38.4662039952635,53.908187316134,82.7604231199805,32.5662181767986,43.5951793077479,69.7412611407454,31.6951417378169,26.3856156406724,17.9043902588492,20.3635422156963,18.9827064583659,20.6821941299357,43.5587720762692,39.8258674350473,37.5883261030525,49.1375877789502,27.8801282147576,31.1364732149917,23.4592826301794,29.1642040645112,29.7057982358077,28.4200685371771,22.5309122401023,24.3732606877475,24.8230241836784,22.9769402009006,27.2344325868169,26.7851966900135,31.905323424729,20.6423995330637,31.207779821714,24.7763717607567,35.2226384055695,21.744469271839,17.387078166748,17.1508531819247,20.72013618507,19.2961784449505,18.0469548648609,12.6791155895401,16.3494475122323,13.8456412255993,20.0313440555394,10.3102527717461,15.6789867408776,17.3901747709466,49.850203271967,41.9525041163466,20.5559920824734,14.430771009536,17.8795382420908,16.8508082246398,19.4238127464627,24.0437165109832,14.2175213774815,9.98636580637541,9.87445420442375,11.1747504115625,11.6807203601772,11.0858473999419,11.6720697470845,25.6799615875541,18.6702727624144,16.1028555666874,10.9984732972971,12.6466742159528,14.3992413790738,9.61389432917443,12.0902003246233,12.1737567460806,9.59715341643429,5.86894227572628,7.98413989579043,7.50300764581532,5.96966637801865,2.14308875735849,2.20461108171925,24.3764408552682,14.1266548021782,-16.1958731680809,-45.000341900618,-17.9269451577447,-26.2973849710607,-13.5408744523831,-32.7935132232627,-11.5255455562744,33.8543475587461,25.1461100423377,27.8838939990553,24.2512594355029,27.7421694734586,28.6190594615804,30.5101616578417,24.5410038208241,21.2679925379676,20.9311414141685,29.4655107949296,31.1048109072148,27.4653550687055,24.2617061053229,15.4270361389222,23.9650837404953,85.905696389748,49.8567703611066,49.7050669152253,39.9738412187593,25.4936605838673,19.500232436475,31.8222853828727,27.1151289670211,30.7875870444112,33.8240191103584,16.8369326010518,16.235484283638,11.4940630737408,13.210310590467,9.91054553306915,-9.43969460036295,26.7985449534183,22.5425187520782,20.0679232201403,15.3749818724387,31.672964592443,20.0190156828722,18.8666691118961,27.524272541062,13.436902582602,17.0871320557191,15.9459217816239,10.1419517241837,13.7755984381539,12.4134745311958,7.28085936682751,9.43888391735278,4.70526441756791,7.01203531806492,6.90439681136226,7.37538058774695,10.0367524242529,37.0629525583341,38.6422340856873,25.2576532190254,23.931024718124,31.6390509499285,25.9521447320572,30.260381195662,27.9621153389613,39.4710157486284,13.5728338574306,-9.08850016896545,16.9077441199527,17.9946634413388,17.2667698322305,18.5957290368175,35.3860141525743,30.4710065242304,20.8779994598316,23.64914153791,50.9566655516564,31.9717253372443,43.137194963889,24.0112678370639,21.7967761087216,20.9949527439967,-7.06520708310046,-15.949742207988,13.8051809069712,26.6965634000192,22.4584410757676,26.5766865909163,28.5460810819599,24.3324530252485,28.469562060322,19.9154974614789,-3.82022070290531,-2.05190179946975,-0.179261192121928,-1.25377720133993,-0.18385346168042,3.52920299314523,-3.80420808002432,1.47513222617728,0.474285529042686,0.515743273627817,-3.58406660949699,-1.81052998793198,-4.60356082967834,-15.1537192430616,10.880274985104,15.7922932592147,13.8043157568061,17.8857023462757,30.5724293521286,-2.47151918705248,-2.91704802486452,-9.43384650723879,-8.04697816901952,11.1934671135375,8.35295363190015,12.9830834565309,10.1266683229018,12.6538039412365,9.81468663367348,7.646556992444,15.6080238613815,22.8434547687128,21.7410334081331,30.4231639215347,38.0720948063212,32.363178412762,28.2044609373744,36.3669464250976,29.383815436851,26.2631205721563,28.7303719478394,24.8072003762926,22.2965001554699,24.0661397150456,25.0775751030333,-6.15752955051057,-6.10297304431584,-7.66499716788477,-6.03169350379799,-13.5265111680316,-10.6583660426974,-9.3595831353732,-12.2766520511597,-12.9484241306112,-11.5956768103147,-9.77751365011136,11.5576789964739,14.966906759411,13.5300853767508,16.3070458332229,14.3762586779515,3.71380464598544,22.3703064832291,18.42357989296,13.6528114911905,16.3791251697226,15.4164833866811,16.1395230105458,21.7017897579408,-5.70184677007085,-6.91611899978334,10.6424933755792,5.66227771812007,8.9452495813336,8.2679853820952,7.34614651146614,3.01132294396396,5.02056085691649,4.54273587561389,6.22993531471942,2.12836859926842,4.52311831586668,0.643805565765385,3.60560154815838,2.16596008558232,-1.12258564968192,0.112068110885424,-3.16241539691875,19.1108875722049,12.9585395527439,10.1765134768005,13.7905730102667,9.52083774281179,11.9543923312957,11.5046735143875,-6.42376933010252,-0.120023645002135,5.55703190530895,1.065532170035,-0.616729066177265,17.4099742770884,16.0505109143349,18.8388797644775,-4.44775381517535,-10.5539850434597,1.42220626569621,2.56527217382636,7.95573166713971,5.91832148632631,8.29894303661501,6.33280632306639,2.35436817016423,10.7131538675044,6.08377538898864,-6.17104151498991,-1.51396995939637,1.31155117977012,-1.59487433163466,0.516604769857622,-2.01103698666209,-3.72792916916873,-3.53341434529225,-5.45934921636188,3.38931527640114,-7.52752606310411,-7.78352006640714,-6.04680684150187,-4.03012024886784,-7.79488668265703,-5.30606595268024,-11.8405009401157,-10.4745315631577,-7.68008743623516,-9.79524069791597,-9.33676102795176,-15.5538543300518,-6.93212067546511,-12.3230458034741,-12.529794650328,-15.6665161486911,-15.9117938597526,-12.8445270173559,-12.0916295733882,-16.5179190419307,-14.0528364518512,-12.485844973352,-9.92790929139858,5.18300628581284,4.4645365443065,1.67090403671487,1.19646636075532,-3.12307236722224,2.92852240158266,5.12870827174505,5.48759072521639,3.56403999885112,4.98655390586212,2.49018677964982,0.180493449746995,2.56467342818507,-1.78280157726364,0.639663022423957,2.93999575125571,-1.59808661986365,6.39653439453836,5.42510380365036,4.17579683937929,5.5069356904416,3.74993550687517,-22.1458177014754,-9.99867659607518,-7.86034532634978,1.53415590157988,-0.600292651376409,2.86819649917332,-1.38977241792222,-1.91775094616639,-2.52114348277435,-6.10581372081205,-4.46563556406177,-5.04806490245249,-3.62018697809442,-3.49595230135388,-0.209438915229121,-1.80394813864264,0.763635552029969,2.24423563294397,-3.45309617407175,-4.88040691293657,6.266799109795,7.28263100817688,8.14640384040131,8.01400037151414,6.11620205755919,-3.50394997468435,-0.447927548898792,-19.8501149445495,-18.1055741518147,-18.315116977394,-20.219696527698,-19.2425469602181,-27.0537182259796,-17.8674664729521,-17.6554611503424,-25.0477234788523,-22.866419125799,-17.625721972807,-14.2033150193733,-23.8221062457413,-25.6327470644359,-12.6378783168511,-26.6618312197164,-24.0510372913854,-21.1426456726844,-17.1995953246231,4.43925004450853,4.53259759791549,4.1470029968264,3.62240343396799,6.51241048653625,-7.68433093627834,-5.18304197912131,-8.15296469039323,-6.37049761817782,-5.19541150260154,-7.54795200723411,-4.99566129513095,-2.83108477270095,-0.496395528801296,-1.94480544661054,-1.09748101911756,1.19519452036706,-3.30778620712225,-7.40443572664858,-5.87295095149477,-10.464814194999,-9.35073980221286,-10.6539113494951,-8.11051846172668,-11.3894146663715,-2.63633993067648,-1.74328071664143,-2.28716095661963,-9.08659841894614,4.31022388945506,4.59997626895774,6.65763938127323,8.87419110261819,1.52802653952674,1.8000625761556,-0.346994228730291,1.1124337330926,-0.458198029420307,-2.0258298857097,-2.76339869512343,-4.10395271953165,-2.58660105567741,-1.63407662280644,-5.30073393444253,-15.6535499022474,-20.4718708551351,-24.9362267783952,-17.8290101026447,-15.8485729005617,-13.1115527382487,-10.2869897400648,-16.7108960764165,-16.7820934175386,-12.4857418311517,-19.4921804438912,0.939631540507195,4.53155010664233,2.16770091594761,7.09933423761241,7.43587342641351,8.29801442821368,-8.27956869002949,-9.99737591852065,-12.5297155257371,-18.1193500824191,-7.34936483670622,-9.94188841078906,-7.36742477134699,-9.16984017598966,-12.641018745288,-12.0362003431223,-14.9380966312746,-11.8172626100222,-7.50000844351336,-9.35242851688076,-12.8126645698771,-9.85563621646144,-11.6275513693178,7.69722025210885,4.5388202983815,0.801620341066299,0.597566761027107,-24.3987585365583,-15.4017207203599,-18.7411911034978,-15.3288910020627,-18.219826069056,-21.7773567591444,-11.4041351191891,-12.7342218545785,-10.4046445702818,1.02916661519983,-0.724587557802726,-2.76627375474161,-1.36109182251142,-2.84221620662182,5.98134847805373,4.22111132173995,5.62448906199698,7.02885791331614,11.0715174544279,-6.11394686984917,-13.8630613322588,-5.02518169557386,-32.8490758119231,-9.25281549875675,-10.9178879666517,0,2.67844473170862,4.09612185198826,3.04187104816718,-7.3379589575284,-3.14243179923611,6.49875729924668,9.61495739358361,8.42597216812185,-13.7147912255664,-17.4951819346383,-13.9878070360026,-13.0375457387768,-17.1398017132106,-18.4067384868772,-16.8096147253874,-25.8941235621124,-21.2671820822062,-19.5222216497387,-20.9654450377647,-17.008661977142,-29.270178527253,-10.9834728139231,-15.8998759678565,-8.44731966212916,-13.1745704854078,-14.54069922243,-13.2206577062766,-16.1310036289436,-13.4173852594514,-19.1333356574511,-10.1989204677021,-17.5486654963507,-19.0294610124755,-12.131183570108,-12.3963822104312,-10.013007603098,-7.65058560040545,-8.48496463126217,-6.55177953094362,-5.15471495141331,2.53054986670737,1.0138387811943,-7.7326932902428,-5.86866821851687,-8.55520364124546,5.82017712689349,9.32248498878859,8.58107694209889,10.8877038163444,11.202574624838,13.7131033212126,10.754062720088,-33.1823667337684,-20.5402924504265,-36.0509405273026,-12.7324585680997,-17.183021130997,-20.597457961044,-28.8555524850773,-33.4598315554094,-8.48663109210961,-11.7714049256802,-10.7719519611153,-14.2667434816513,-14.7798142946912,-18.4142011323643,-17.153982907311,-15.562593022128,-17.6724383125212,-4.59847485761282,-5.54056036932428,6.76832271087831,8.29244052669194,9.08816128761175,5.87765502656212,7.91630143123612,7.79610482845053,-16.4948041915117,-27.5549781014935,-31.3207157784318,-18.4635958657397,-21.868975869485,9.70724814031325,11.9981764192222,-36.4127289978562,-33.7147526152609,-47.2464290815641,-37.2849582541082,-36.4474941625678,-43.4415269987947,-31.9607013611341,-40.8097365512047,-41.6502883162195,-43.6788649902012,-32.1796365193786,-38.9962325310086,-55.426517785841,-39.7571022552593,-36.5072276371038,-30.468079061635,-40.8864614708373,-28.0218147316198,-20.5992804969113,-26.3225604588534,-40.2176331602216,-53.9703505658097,-41.6532926803786,-28.6905467600728,-31.2927444692838,-22.6410651093725,-38.5109360353226,-25.3387563553304,-21.2858069001357,-39.9560094697461,-40.3524067999129,-51.5007213319966,-33.8105230611877,-22.1481708136381,-22.9237371302768,-27.3322954804843,-47.180251383058,-46.5401912783234,-102.946332414832,-52.9530277980586,-20.980465446116,-24.2853324824842,-18.9908643376963,-24.2268641984099,-27.5255418720267,-25.8931849338013,-27.5238951237968,-24.910323998827,-35.4674045258782,-30.3098632434992,-34.9929032868785,-30.3564397528003,-33.3826451156527,-40.839800389245,-41.1563139568264,-34.1554939124152,-36.0006745001804,-36.8243417176665,-39.7688698730894,-31.5937065591082,-27.7513543529044,-35.143188467937,-37.8683215191309,-21.7061457958286,-24.9224736693953,-21.0839693210498,-19.8615155568531,-24.2969820767885,-29.368794294226,-27.1327383610056,-33.5103484312463,-29.7503674709696,-31.2448461888109,-36.5608277259895,-35.246267134619,-44.8476183572717,-37.2989085028169,-32.5228573573042,-45.7747450214934,-37.5096821082314,-29.0060169226992,-39.6441726120861,-51.2854925492082,-46.6823022636814,-50.6869856911258,-54.8678752630642,-93.92461378013,-32.3472612123078,-62.927432165989,-30.9304491016543,-27.58983408113,-27.6045104443725,-24.7275632779147,-27.1279347924265,-21.1657373609802,-23.557530961074,-25.929572115277,-52.5388396436835,-25.4924537673785,-32.4437493605979,-17.2693640476874,-16.6465647585585,-30.7480748319267,-26.3300194389218,-24.6925019663951,-49.2873071976782,-57.0320502899785,-46.5238821921233,-43.4965109265048,-78.7098914222488,-41.9670133994285,-62.1744635687592,-21.8880642776072,-45.8306065336517,-23.12675850073,-29.1947249290102,-33.3286233623797,-16.4285025455749,-23.101352930744,-46.0197812717701,-78.9620062271239,-47.4004051078693,-49.6364488373791,-22.0297622541445,-20.5254252260225,-35.9568831314935,-27.6584072450432,-30.693083325679,-30.1896899852866,-35.3470189115203,-38.8904593109644,-29.169257337529,-13.6477939119927,-16.3310392270144,-20.869546213069,-42.4517316597859,-55.5262236044757,-45.045486847189,-43.1661715336338,-51.3654303905295,-57.6610107916062,-62.9304965590272,-37.8144851803012,-47.0744448092555,-53.5236868818688,-36.7627721166234,-76.4974625042706,-60.1718182665855,-55.9942563328909,-44.7348191731124,-52.6408911755211,-41.5111513853712,-51.3566553672302,-51.9377520004462,-52.937345322501,-40.5038111731282,-41.2839759017787,-32.3865891626056,-39.0416042081747,-16.0184512581417,-12.7739759336686,-18.9080898949155,-24.0168320944303,-21.0141373926072,-29.0179623139618,-25.7572142724829,-26.9872490115672,-29.1805517702443,-34.2717821818473,-27.027037161388,-31.7514462898607,-41.4979709733463,-34.9048735043288,-38.1738109924359,-34.5723863985418,-36.9806780189533,-45.7728498013545,-29.9692967320395,-32.3205203576245,-48.1586326306251,-47.4665335207999,-43.6601830060446,-146.920776352112,-27.8071913200836,-44.8345169927846,-37.8282947295232,-21.7114944087613,-20.8855902207248,-22.0394645293633,-38.1582439758794,-45.3689666630071,-41.1186715004895,-50.3075508751141,-72.38764042627,-41.8499190689215,-52.9475941696073,-47.3761294263887,-54.4662372937385,-60.1559884618145,-71.6326544900351,-46.5127348723364,-134.184663106784,-28.4059771777295,-32.8133367328631,-38.0110123080842,-19.7150821001051,-17.7132748281829,-14.860939742175,-28.4053530610401,-18.2843226702261,-80.4901827512729,-36.1187961285942,-33.4364052432621,-40.872686020037,-37.0096854949124,-52.317545534062,-63.9525690158756,-51.2995896891266,-93.4829780298925,-46.9877777119369,-47.5170855874351,-20.4746110920373,-24.4498453089394,-29.1797618945154,-25.0460033208545,-53.5293474529999,-49.4055558701762,-47.7704240801199,-52.6582270811308,-79.1518289106861,-58.9767142721791,-72.5703905367129,-61.6551236085108,-21.0035584504639,-69.8227108224439,-57.3465501325881,-112.0090567014,-19.9311917597728,-58.7311603354837,-52.2246418635927,-23.2861303454183,-25.8299231532509,-30.4984125661886,-86.4812156419586,-76.3603097694579,-118.24243908179,-21.5510739843777,-30.2093016292784,-29.7800049702208,-33.4862982132793,-31.254942878317,-39.1897422425779,-30.8822326782392,-40.8148753728842,-27.2853270322255,-25.7995384933917,-26.3983073953341,-28.6492764337286,-31.5435566455253,-40.6835486871335,-75.2164989757864,-70.2752415190325,-25.8587696982065,-21.6790410564681,-12.1855742873827,-34.2806833516583,-12.1112983120009,-38.5263307169236,-49.2865024909361,-157.546373620918,-63.2694974052708,-253.22085643391,168.574998780956,60.1401413782082,-341.704925590617,181.592964339129,-439.715131120059,441.585345111338,-532.174451128504,384.61104828046,-569.832856354011,489.971987449761,-629.086954827496,620.417402562613,-542.221264892476,-594.352050103492,-567.900009961466,-491.423239359861,456.679446325236,-413.710471355283,317.473630898845,272.467525436662,-311.791023378892,59.5188436298505,214.62096588028,-208.606912153965,-80.5183443134613,16.2639841504827,5.55321814963671,23.6898241655902,14.3440191459268,18.7404838898424,11.1473193394595,4.23873651585218,12.9437179664182,10.3557596107266,14.3329602634776,9.53728052430264,7.08629155970614,1.66697528197408,3.45708973024266,1.47162971978275,4.82036957015275,8.28042388182962,5.37900745443935,11.273000572859,0.625980173565689,-2.47107763414667,-0.716403753496496,4.11848176094193,2.86784196101052,45.5967714441768,5.21000650347051,64.0540625406788,3.26416879164207,2.93519271952907,53.3122459927743,-11.883682961738,34.8006147088989,61.1776548843568,70.7151619002344,5.64369169194822,84.1373295748187,50.7946071789468,93.0165928838297,105.632621425842,60.5153276089678,53.7970072080769,56.5915337933124,117.519361061867,52.1623692936819,47.182093467117,46.6382398693057,41.8694384602561,50.3373332263636,48.7803590376302,42.2277080126677,38.6774335302158,40.5283523557857,38.7482466032889,35.4046926885451,33.6654034495378,43.9795290857844,36.0928234115065,39.4689975456438,31.1131800197088,38.3472694640236,44.1494819105315,34.2928013253005,44.7522338765215,37.6274135169665,47.2907227998162,40.9439506816144,33.8409035337928,56.459657616426,54.3632985858716,46.3220123580976,49.212463607552,47.1023772965815,40.9459227097846,36.7162801790047,42.4791434435015,35.9681934882908,31.63097605267,-0.65530415187698,25.0235921286232,98.0473422669889,39.2385993718851,20.2810963691857,10.0370948979119,-16.5479374842422,-30.4827547334908,-37.9326376669913,-69.0338016463436,-27.4861354774071,36.7645673280269,11.1435073365236,37.2306006069145,27.7785572403936,83.2940176373632,8.43289007653416,-12.1090716315734,-13.38842490566,-11.8417537324303,-19.2644544402736,-16.4356038957396,-17.9381949070408,-22.7432311461539,-16.5446275636184,19.1395710352202,14.8597502239592,14.0853018594849,12.3299532579798,14.6006416116226,20.8951931801486,-10.7110335042358,-0.445942549228052,-23.7770312883923,2.09845575006888,-4.72007966141297,10.2850442958309,-7.3567755502657,-10.759309672217,12.6912650354675,-3.10425540595236,-3.25045661218501,-7.97964880344071,-11.6227881731274,-10.3988622286595,-13.9020957416383,-6.00355260249283,-73.7907554670415,-16.8886871415781,-48.167936069728,-65.8773385445347,-57.3443370103257,-123.124855639954,-28.4981006543174,-23.1657399405997,-19.0930267621482,-10.2340488646239,-26.5952901418643,-20.3423921872455,-19.6598654553253,-17.0338597010471,-19.4043523228931,-14.7647456944062,-15.8074086048521,-30.0866987743042,-57.2525567287439,-40.751717182347,-77.7746858783477,-87.4790442998865,-76.9168239127965,-53.8990566752154,-60.3788283858678,-25.1883098726352,-54.3603767218262,-76.6705637583357,-49.424261243563,-95.0207393275492,-61.5499049727275,-39.2931816656326,-40.7306179172298,-35.1776305980841,-128.633389558224,-31.1740711007465,-56.8445621352162,-41.8524276198529,14.0842642513674,3.83395832183412,-0.503592190141624,-4.61876847278088,-1.97100544289742,-14.2690280380447,-1.44881054213699,-2.43667440785641,-8.6389880061906,-5.60862224921819,-0.454086049043818,-36.961481354414,-24.4562897702239,-15.6129612253364,-12.0191751490322,-10.2934192509452,-10.2020898634571,-4.98468410518733,3.49619237278612,-5.35081781491452,-4.82390715666843,-6.21785648486633,6.19735514523969,56.8961130399688,32.7020069809103,-9.03554441166969,-91.9467552526064,-0.853666355388868,-10.2076295164249,-22.4986221528707,3.98401749378221e-17,3.43509449118301e-17,1.27792333229791e-17,1.5441875742473e-17,1.40891249824597e-17,1.5192823548004e-17,3.01016080591429e-17,1.8381891315337e-17,2.82959604497604e-17,2.90403956551152e-17,1.15648076626133e-17,1.37248510633988e-17,3.15122188805145e-17,2.92915521752628e-17,9.04657450538958e-18,1.58680030655806e-17,8.68075337562964e-18,1.42714832295012e-17,2.16038087627177e-17,2.16200265816171e-17,1.30887215465644e-17,2.23505201617707e-17,5.81874998532331e-18,1.10822812512033e-17,2.03831792377456e-17,1.83897047947627e-17,3.2463159553097e-18,1.21555841951587e-17,1.53716778384764e-18,1.01042410040743e-17,9.28502515645924e-18,9.71749851604504e-18,5.28002787632659e-18,9.50414363641223e-18,-1.24007343206112e-18,6.74100480765525e-18,2.37670918582593e-18,1.64923496640673e-18,3.30639077741407e-18,-4.07267134205059e-18,3.9606576948453e-18,-3.98092364804811e-18,-1.8565458007929e-18,-4.34241432427477e-18,-5.24001250949713e-18,-4.641179655746e-18,-6.67029752210694e-18,-8.48656956067807e-18,-8.94617883799805e-19,-1.37412988986927e-17,-7.93800002364992e-18,-1.2601293125684e-17,-1.09578462766555e-17,-3.95945372774393e-18,-1.89532678365361e-17,-1.16238904326388e-17,-1.69401336126343e-17,-1.16252487795808e-17,-6.76636589659307e-18,-2.37678867646534e-17,-1.43516403162317e-17,-2.16744412532143e-17,-1.27554646420502e-17,-9.16355502698135e-18,-2.75147170897574e-17,-1.62163465553946e-17,-2.6644218764022e-17,-1.35857649554594e-17,-1.1046980048707e-17,-3.10347412474423e-17,-1.80282300977637e-17,-2.82105405215844e-17,-1.42788823699546e-17,-1.34293489000306e-17,-3.11647504549458e-17,-1.87167692684682e-17,-3.06553400768316e-17,-1.42981790423002e-17,-1.41770874658874e-17,-3.18691350321303e-17,-1.97253992968104e-17,-3.06452541894478e-17,-1.27213386607092e-17,-1.52131103593059e-17,-3.05975849272624e-17,-1.8486295518908e-17,-2.95211416492747e-17,-1.16975517015991e-17,-1.54761105860567e-17,-2.81386018058463e-17,-1.68894892706992e-17,-2.8113092390146e-17,-1.04766452775887e-17,-1.50972598917759e-17,-2.44128487835489e-17,-1.51252658355622e-17,-2.43234020814386e-17,-7.34884777515383e-18,-1.35837801690905e-17,-2.02803909455407e-17,-1.22640470921518e-17,-2.07974974217061e-17,-4.34909050678503e-18,-1.1251063287008e-17,-1.56383691534333e-17,-9.09107316544214e-18,-1.55566396912284e-17,-1.90759991316959e-18,-9.52217558282039e-18,-9.18795770157395e-18,-5.60703280161809e-18,-1.00315772582575e-17,1.00705090166876e-18,-7.01245468276603e-18,-2.916621556439e-18,-2.38437323644046e-18,-1.80581723736526e-18,-1.74698221937893e-18,8.95087759639569e-19,1.01617870658868e-19,5.58513256940644e-18,-3.49536027058684e-18,6.89266473715592e-18,-1.0464428824756e-19,8.74709484860378e-18,7.47867200086428e-18,8.66960480369246e-18,1.22964457652999e-18,1.36323631257819e-17,1.29354605483513e-17,9.15460541297242e-18,1.420537287977e-17,1.16867888558061e-17,4.78047640971046e-18,1.99633273887174e-17,1.93687243691643e-17,1.26335203650226e-17,2.05889883076691e-17,1.3401436148182e-17,7.51766123150623e-18,2.7636570301593e-17,2.67615072797386e-17,1.30368450307297e-17,1.01932931475468e-17,1.52437040523575e-17,9.83643841538947e-18,3.24330753828032e-17,3.07970487245107e-17,1.36647614133624e-17,1.2997733956125e-17,1.53601029738647e-17,1.18815913404668e-17,3.56214986673443e-17,3.03568979540605e-17,2.66624701433484e-17,2.13537190271464e-17,-157.257915261321,-9.1560135562925,-5.19233419707359,-240.518332655769,-97.305648594563,-195.83985436694,75.4047480844216,3.03641618108714,70.6780991172207,-2.81893412499248,-94.2921095623124,-7.67176774628015,-359.716609810284,-215.650675446982,-327.425786087512,179.103942553318,11.2808669898614,30.0414462100439,186.113999055696,-85.7002280657673,-15.1555135496239,-297.438709443043,-444.707955401877,336.206491306822,214.899841422625,302.627092729576,-655.069097662243,-16.5956952480433,-713.652398873742,-377.126961297302,-634.695743990119,354.744514249558,28.2165490050381,271.328964365432,475.907690206729,463.295046644989,264.692729774035,-27.7325678637123,-378.385516629675,-421.13726635848,472.271288461358,357.709475509784,829.510772825871,490.307226383689,-595.401834621385,-22.9362414366279,-769.656288886465,-511.072240674259,-473.680610690619,450.151848044039,39.0549478089761,473.515905933014,618.034552770287,619.288698572115,-25.369411468496,-567.708324718006,-465.23368132999,19.7875193231985,551.1613167,955.086020706352,542.885274022682,-627.0294073554,-10.3785687500351,-529.093794643303,-384.499595034318,601.052777025209,34.3439428701126,678.333825761166,-750.423972466674,-27.8727156117083,-646.602181686661,-515.902133806864,-268.552765400132,541.147570484166,398.544020073784,952.676273543917,543.28547648081,652.457042465117,-20.443000686882,-514.431457057084,-312.576661596056,378.55873743092,352.871633436626,855.58694323976,485.736064873949,862.558311178776,-472.554490173719,-23.2915446542965,-467.97393272097,-436.814946908482,-423.230040283402,216.454526313383,18.2844669651017,436.91923144315,387.306825274086,810.321008742754,-21.4501647760718,-310.574240442263,-193.92334545385,147.827266083676,15.9264925500624,368.779644006385,263.96655884337,-305.223897943951,-13.6230750752511,-194.63279560519,-279.758217645634,-97.7105139396005,51.125594107027,26.3766046696517,282.643864008459,122.381584011875,-9.85988451177066,-185.006696205634,152.894140707081,73.8539711513965,-55.716441451465,-4.76903032140671,-23.4546821301323,-1.39878658513596,-3.94383854522379,-10.6658432977291,6.02236682989748,-1.58045056280862,-8.91192011798778,2.64576466860838,-12.5333517792985,6.70899810681115,82.6995329082791,365.919841674081,4.79449103185071,-10.07603902893,8.62495413745157,-26.1182791344682,13.5587117593414,125.396797444885,576.113865164729,6.96415664563209,-9.45473586436877,9.9634590818118,-5.73957553428259,-17.2565558240659,105.4034603069,668.042805776791,20.2633704672594,-20.1183771079759,99.5680982113201,598.264176337298,7.14843615004763,-10.5292584557687,5.87609300480321,108.43689760754,517.773627537228,5.52797681871253,-8.90201137785287,3.29581760826107,11.5394993099452,-14.1770121012551,3.06751874495798,9.20755144470046,-1.37251771788023,0.422144106701685,1.32418657957766,6.42669870244599,30.7679943071239,16.5502437469121,53.3786243824643,30.983618987302,129.303100896798,34.3108282809463,61.6224818442834,37.1278058790018,53.3596398027428,32.8699710245643,-0.040233382730437,-0.941766345689621,31.0971210746353,40.2848332876284,55.5469180804667,57.2289555570718,87.3929542997563,61.0582731509633,53.3310982390981,48.3324595100674,8.56532096624317,-4.13208376396535,29.8535285245885,49.2041039927888,87.025804254038,52.5811745210493,70.6831756151982,77.5921068932448,53.9044795958463,65.1929178753772,46.5127299592355,30.4445822647655,51.138626786747,53.3752940119042,53.9805878904239,59.4098315367343,58.9695892141691,49.3748576477903,34.9765648326043,34.1703781150695,58.3761025177167,53.0485851495498,55.6516324806938,72.3694459611645,52.4922778836786,65.61016534489,45.486723249855,23.633856505319,44.3859435772363,44.9494692600991,24.7460281352176,25.9578110994282,35.3497931418543,47.767554329692,66.045989576494,45.7443094558201,44.2289484705954,58.7171242258271,43.0634764596939,-2.19091848724453,-16.5730404312495,11.1782319054575,125.854165011527,83.8952140879611,59.1312738312743,56.8753419091877,62.0986068530756,61.7716985801282,68.2365110877762,61.6050730852229,48.4031375526591,721.62346221283,7.07974626791042,393.133592895895,821.3111409974,76.6847042899405,69.3335900281698,54.7853049730285,50.966695223114,51.4600150532876,76.9817499328653,45.4343786391506,61.3667195743418,37.5388924885226,32.43615020949,41.9423248647448,40.3409952902611,49.7221329454675,48.3399542210463,48.7130080645847,41.878330978093,47.603569664481,44.6235222156149,32.8383629120836,37.3253861951645,34.2715309885573,38.4260803987361,33.9498529972375,38.2254491306032,43.7770536944871,32.1727804238064,40.2581425354408,38.836716877408,35.7203855287012,35.1499225859695,30.9752302993536,-2.73120027700244,-9.63939924375353,16.0215756622846,36.5605661792418,24.801538619376,49.1241521963962,45.4480967673619,54.3661918620756,63.7001022959555,37.6953471279768,37.2273510759356,34.5633961735216,28.1591221707554,31.4796771383998,31.0434732562789,29.6208508148863,39.8117452176075,5.17289448782964,-3.80328152603062,-7.20172399774904,-7.13248181523114,-4.06236038812896,-14.2738116514378,-7.47967666201673,-4.59871216673769,1.43942071284852,-1.30427745603638,0.954977204915846,-1.21925456274701,1.32454463472472,-3.80809820300771,6.2705698086842,4.86454408896694,-1.04911955582753,29.558903239642,38.56136218897,30.2425225754901,28.4358966530063,50.7782191076501,44.8150347290801,35.0916595865606,36.9448272966255,35.2087443648647,36.31819966409,40.0317384959449,42.0526927216486,25.0873591805394,43.4423867374363,34.6544756965572,61.2402558741281,34.0449324298776,36.6313972385605,49.392719912403,27.537651043836,92.6013787139383,30.2087515014809,30.8944867605434,30.594593712176,33.0676191536145,27.0662912250362,24.3239131592909,25.7163157924309,22.0228525760911,28.5008769858588,23.9941429000893,23.0985367275509,23.1207830126431,17.3291499967737,19.9364917675784,20.8509753458921,21.6856848449956,19.1978612861028,14.3364189381508,22.0083067896272,25.7213361372142,26.7476426079589,26.9159614522138,31.9849604568173,23.7575235548428,24.783085723743,22.3242747184639,17.3485307187504,16.2733902689807,14.8930800437724,32.2663389059089,28.7062078737074,18.3352090236241,18.493439338256,14.0472115992453,16.3549824109674,20.3514095559515,22.9572706499853,17.3944914191214,22.6915321282525,21.3297446905671,20.4456337061457,17.246036650258,17.1993473222485,13.5427155572209,16.0566689342023,15.2136032822655,12.7693620222317,-0.630982780734833,2.88262834858322,2.04407211929677,6.02190947455675,3.64088833552862,4.1544270247071,5.56288980373566,8.52411567136127,12.7781889503952,8.82091850885221,11.5713889953579,17.7638508799049,14.5941653889005,9.18920507891836,6.87102587368756,19.3113714387375,10.004979110723,13.8674354093419,19.6573785713599,20.1606878645825,16.6954796777556,-15.1765575543344,-10.2712074834477,-14.8852299449501,9.34132226948498,362.350631900964,10.0010622875036,40.5004381287309,39.5759152073814,38.4720677458725,53.9164050276151,82.773039038139,32.5711825393256,43.6018249143497,69.7518924305534,31.6999733143013,26.3896378381786,17.9071195866326,20.3666464142048,18.9856001636187,20.6853469034311,43.5654121329882,39.8319384514246,37.5940560308121,49.1450782648921,27.8843782343025,31.1412196285915,23.4628587403365,29.1686498273259,29.7103265587095,28.424400864698,22.5343468303828,24.376976123828,24.8268081812674,22.9804427832483,27.2385841771502,26.789279799265,31.9101870411047,20.6455462403096,31.2125371052234,24.7801486466959,35.2280077102045,21.7477839775206,17.3897286359807,17.1534676412512,20.7232947424152,19.2991199355671,18.0497059250537,12.6810483815507,16.3519398060603,13.8477518416398,20.0343976140845,10.3118244566198,15.6813768303198,17.3928257122227,49.8578023883194,41.9588993151448,20.5591256178518,14.4329708221899,17.882263781457,16.8533769454057,19.4267736935277,24.0473817116708,14.2196886825695,9.98788811823613,9.87595945658906,11.1764538796131,11.682500957793,11.0875373157041,11.6738490260093,25.6838762158449,18.6731188405794,16.1053102702799,11.0001498938363,12.6486020626321,14.4014363853816,9.61535986184656,12.0920433429654,12.1756125016821,9.59861639713802,5.869836931561,7.98535699028674,7.50415139698084,5.97057638813726,2.14341544771784,2.20494715048171,24.3801567761303,14.1288082556542,-16.1983420511858,-45.0072017088345,-17.9296779237748,-26.3013937187697,-13.542938610074,-32.7985122344248,-11.5273024991946,33.8595082824593,25.1499432908198,27.8881445926527,24.2549562738314,27.7463984627076,28.6234221230837,30.5148125971188,24.5447448275041,21.2712346100008,20.934332136945,29.4700024886483,31.1095524942434,27.4695418606367,24.2654045361316,15.4293878212605,23.9687369544801,85.9187917702952,49.8643704785397,49.7126439071331,39.9799347921158,25.4975468126149,19.503205032883,31.8271363410103,27.1192623708271,30.7922802741435,33.8291752108325,16.8394992066313,16.2379592050226,11.495815217502,13.2123243573253,9.91205628696139,-9.44113357819837,26.8026300974661,22.5459551116441,20.0709823547776,15.3773256196754,31.677792788265,20.0220673620922,18.869545128529,27.5284683143152,13.4389508909225,17.0897368014593,15.9483525623833,10.1434977534099,13.7776983769402,12.4153668291426,7.28196925392611,9.44032277160848,4.70598168348522,7.01310422588779,6.90544931087619,7.37650488356825,10.0382824170005,37.0686023986631,38.6481246701516,25.2615034710405,23.9346727401847,31.6438739759879,25.956100851681,30.2649940586491,27.9663778565434,39.4770326717608,13.574902886982,-9.08988561106438,16.910321519971,17.9974065302781,17.2694019617781,18.5985637516097,35.3914083620488,30.4756514947372,20.8811820817005,23.6527465899737,50.9644333360392,31.9765990758627,43.1437707558042,24.0149280913074,21.8000987880065,20.9981531941101,-7.06628409637532,-15.9521735711294,13.8072853552802,26.7006329980985,22.4618646186145,26.5807379150918,28.5504326187102,24.3361622406487,28.4739019325873,19.9185333604822,-3.82080305362221,-2.0522145893782,-0.179288518523167,-1.2539683259133,-0.183881488122749,3.52974098140638,-3.80478798979261,1.47535709389468,0.474357828666015,0.515821893029284,-3.58461296111429,-1.81080598335697,-4.60426259199994,-15.1560292612389,10.8819335636078,15.794700620992,13.8064200732325,17.8884288252919,30.5770897834322,-2.47189594302612,-2.91749269681952,-9.4352845935966,-8.04820484252089,11.1951734347438,8.35422694800258,12.9850625851066,10.1282120223413,12.6557328747641,9.81618277492861,7.64772262613187,15.6104031333116,22.8469370026715,21.7443475900551,30.4278015989617,38.07789847931,32.3681118241054,28.2087603978831,36.3724901669307,29.3882946770091,26.2671240966337,28.7347515777095,24.8109819617158,22.299899012201,24.0698083339046,25.0813979041161,-6.1584681983079,-6.10390337557259,-7.666165612575,-6.03261296927113,-13.5285731361975,-10.6599907936186,-9.36100990109506,-12.2785234920212,-12.9503979757531,-11.5974444439748,-9.77900412475315,11.5594408377843,14.9691883000756,13.5321478897656,16.3095316633804,14.3784501807988,3.71437077474245,22.3737165909247,18.4263883655046,13.6548927124544,16.3816219875838,15.4188334603681,16.1419833036876,21.705097957599,-5.7027159540297,-6.91717328621624,10.6441157068865,5.66314087021124,8.94661318645271,8.26924574572051,7.34726635087338,3.01178198709566,5.0213261863154,4.54342836583883,6.23088499998081,2.12869304570124,4.52380781560995,0.643903706857727,3.60615118254071,2.16629026242463,-1.12275677554315,0.112085194438913,-3.16289747243657,19.1138008172616,12.9605149398709,10.1780647745866,13.7926752317622,9.52228909002868,11.9562146471998,11.506427275594,-6.42474856323211,-0.120041941289483,5.5578790138311,1.06569459871945,-0.616823079754426,17.4126282365819,16.0529576385596,18.8417515449294,-4.44843182642767,-10.5555938826431,1.42242306543183,2.56566322141384,7.95694443111336,5.91922366947971,8.30020811939498,6.33377168988393,2.35472706775115,10.7147869702281,6.08470279377355,-6.17198222253793,-1.51420074749994,1.3117511113524,-1.5951174527218,0.516683520584734,-2.01134354717835,-3.72849745105427,-3.53395297552781,-5.46018143423023,3.38983194031523,-7.52867355183324,-7.78470657861238,-6.04772861083746,-4.03073459646675,-7.79607492757817,-5.30687480419741,-11.8423058945273,-10.4761282905301,-7.68125818127117,-9.79673387485163,-9.33818431469382,-15.5562253444314,-6.93317740117783,-12.3249243165539,-12.5317046800003,-15.6689043371284,-15.9142194380849,-12.8464850245232,-12.0934728096037,-16.5204370173944,-14.0549786525299,-12.4877483033784,-9.92942269220519,5.18379637823445,4.46521711390167,1.67115874769608,1.19664874892007,-3.123548445327,2.92896882268046,5.12949008703038,5.48842724819279,3.56458329763144,4.9873140512746,2.49056638129306,0.180520963992383,2.56506438450034,-1.78307334579676,0.639760532031034,2.94044392133974,-1.59833023062887,6.39750947600094,5.4259308011814,4.17643339377554,5.50777516234563,3.75050714338536,-22.1491935883201,-10.0002007845807,-7.8615435497227,1.53438976680878,-0.600384159402534,2.86863372424941,-1.38998427347373,-1.91804328624965,-2.52152780342721,-6.10674448509876,-4.46631630119043,-5.04883442454128,-3.62073883586547,-3.49648522091202,-0.209470841893028,-1.80422313073694,0.76375195988851,2.24457774203436,-3.45362256068365,-4.881150877405,6.26775441453735,7.28374116534276,8.14764567025503,8.01522201791223,6.11713440543381,-3.5044841134,-0.447995830537344,-19.8531408767056,-18.1083341478744,-18.3179089159576,-20.2227787985101,-19.2454802753035,-27.0578422683921,-17.8701901721095,-17.6581525316154,-25.0515417293826,-22.8699048604218,-17.6284088206687,-14.205480158858,-23.8257376643763,-25.6366544953909,-12.6398048226921,-26.665895523256,-24.0547036080457,-21.1458686369638,-17.2022172141543,4.43992675945433,4.53328854267127,4.14763516191738,3.62295562961341,6.51340323203725,-7.68550232818936,-5.18383207698398,-8.15420752037652,-6.37146873061961,-5.1962034860623,-7.54910260967424,-4.99642282886497,-2.83151634050166,-0.496471198851418,-1.94510191085545,-1.0976483180534,1.1953767146537,-3.30829044282455,-7.40556445160691,-5.8738462184081,-10.4664094410653,-9.35216521986564,-10.6555354213471,-8.11175482124828,-11.3911508576316,-2.63674181176347,-1.74354646065311,-2.28750960920448,-9.08798357114415,4.31088093577968,4.6006774848524,6.65865426532525,8.87554387565212,1.52825947040167,1.80033697593855,-0.347047124191988,1.11260331140557,-0.458267876680889,-2.02613870124106,-2.76381994492452,-4.10457832208036,-2.58699535461883,-1.6343257198526,-5.30154197315205,-15.6559361141227,-20.4749915671557,-24.9400280324773,-17.8317279395505,-15.8509888415526,-13.1135514505564,-10.2885578787447,-16.7134434691111,-16.7846516634864,-12.4876451454552,-19.4951518128613,0.939774777022516,4.53224089171956,2.1680313581604,7.10041645319741,7.43700694370412,8.29927936943749,-8.28083081940297,-9.99889990875213,-12.5316255433477,-18.1221121784683,-7.35048516671181,-9.94340394255899,-7.3685478543914,-9.1712380174799,-12.6429457298528,-12.03803512976,-14.9403737801513,-11.8190640220054,-7.50115173748341,-9.35385419195955,-12.8146177199639,-9.85713860003102,-11.6293238619045,7.69839360885459,4.53951219171967,0.801742539289023,0.597657853521166,-24.4024778595059,-15.4040685436404,-18.7440479923855,-15.331227723252,-18.2226034815665,-21.7806764781626,-11.4058735544207,-12.7361630469343,-10.4062306441493,1.02932350035458,-0.724698013223123,-2.76669544281398,-1.36129930602095,-2.84264947128746,5.98226026898026,4.22175478383168,5.62534645362228,7.02992938555902,11.0732051857471,-6.11487887394518,-13.8651746038034,-5.02594772936892,-32.854083292992,-9.25422598892424,-10.9195522788417,0,2.67885303121041,4.09674626080716,3.04233474802208,-7.3390775488329,-3.1429108284738,6.49974796346912,9.61642308830824,8.42725661509869,-13.7168818949606,-17.4978488831039,-13.9899393236606,-13.0395331695296,-17.142414487862,-18.4095443921344,-16.8121771666565,-25.8980708370457,-21.2704240306944,-19.5251975981609,-20.9686409897522,-17.01125476098,-29.2746404447114,-10.9851471238033,-15.902299729437,-8.44860736329717,-13.1765788040793,-14.5429157924334,-13.2226730504392,-16.1334626233992,-13.4194305925702,-19.136252324472,-10.200475181188,-17.5513405977983,-19.0323618449469,-12.1330328358961,-12.3982719028413,-10.0145339762082,-7.65175184821039,-8.48625807099255,-6.55277827782333,-5.15550073113151,2.53093562126022,1.013993329789,-7.73387205446387,-5.86956283257457,-8.55650778814199,5.82106434901649,9.32390609930517,8.58238503309616,10.889363527292,11.2042823343845,13.7151937333043,10.7557020589173,-33.1874250213803,-20.5434235925684,-36.0564360975049,-12.7343994916619,-17.1856404939743,-20.6005978174405,-28.8599511973464,-33.464932139488,-8.48792478587365,-11.7731993471628,-10.7735940269631,-14.2689182901089,-14.782067315163,-18.4170081752198,-17.1565978437298,-15.5649653686253,-17.6751322817761,-4.5991758446338,-5.54140496694156,6.76935446738911,8.29370461823564,9.08954667805193,5.87855101056008,7.91750818450307,7.79729325906462,-16.4973186433701,-27.5591785554724,-31.3254902777882,-18.4664104382802,-21.872309554831,9.70872790374928,12.00000540953,-36.41827971874,-33.7198920592571,-47.2536312811192,-37.2906419367689,-36.4530501830194,-43.4481491827885,-31.9655734192684,-40.8159575476302,-41.6566374455359,-43.6855233537668,-32.1845419517749,-39.0021770786505,-55.4349669501376,-39.7631627891396,-36.512792763268,-30.4727235858822,-40.8926941631346,-28.0260863497192,-20.6024206311334,-26.3265730442892,-40.2237638969838,-53.978577753396,-41.6596422676775,-28.6949203190302,-31.2975147047212,-22.644516491249,-38.5168066048401,-25.3426189706285,-21.2890516877729,-39.9621003248482,-40.3585580814373,-51.5085720517119,-33.8156771043372,-22.1515470591889,-22.9272316024003,-27.3364619889417,-47.1874434945493,-46.5472858196769,-102.96202545331,-52.9610999059546,-20.9836636877998,-24.2890345148748,-18.9937592865282,-24.2305573179523,-27.5297378387755,-25.8971320656509,-27.5280908395169,-24.9141213043146,-35.4728111424218,-30.3144836494815,-34.9982375709161,-30.3610672588601,-33.3877339335057,-40.8460259685726,-41.1625877851734,-34.1607005425848,-36.0061624078786,-36.8299551843917,-39.774932200814,-31.598522672913,-27.7555847422875,-35.148545661301,-37.8740941291185,-21.709454659517,-24.9262728269669,-21.0871833407633,-19.8645432269074,-24.3006858850319,-29.3732712445757,-27.1368744491704,-33.5154567160681,-29.7549025879621,-31.2496091226812,-36.566401022899,-35.2516400411944,-44.8544548844603,-37.3045943120399,-32.5278151099501,-45.7817228789662,-37.5154000475771,-29.0104385716203,-39.6502159310819,-51.2933104596578,-46.6894184682948,-50.6947123657738,-54.8762392684397,-93.9389315566209,-32.3521921972487,-62.9370247623558,-30.9351641091393,-27.5940398485204,-27.6087184490134,-24.7313327235363,-27.1320701483399,-21.1689638453341,-23.5611220481108,-25.9335247939531,-52.5468486131414,-25.4963398121601,-32.448695054098,-17.2719965726947,-16.6491023446497,-30.7527620384559,-26.3340331613973,-24.6962660673046,-49.2948205067022,-57.0407442000837,-46.5309742473355,-43.5031414921949,-78.721889881307,-41.9734108100077,-62.1839413833276,-21.8914008727715,-45.8375929065989,-23.1302839212332,-29.1991753443957,-33.3337039452093,-16.4310068904752,-23.1048744784469,-46.0267964823298,-78.974043118317,-47.4076307793796,-49.6440153692141,-22.0331204496101,-20.5285541018191,-35.9623643636782,-27.6626234656598,-30.6977621493567,-30.1942920721746,-35.3524071765983,-38.8963877346398,-29.1737038706597,-13.6498743683817,-16.3335287147015,-20.8727275463332,-42.4582029603438,-55.5346879678301,-45.0523535372571,-43.172751742709,-51.3732604866256,-57.6698005798366,-62.940089622527,-37.8202495835299,-47.081620791696,-53.5318459804788,-36.7683761977387,-76.5091237028231,-60.1809907998578,-56.0027920426977,-44.7416385053034,-52.6489157016149,-41.5174793047897,-51.3644841256703,-51.9456693406902,-52.9454150397758,-40.5099855345875,-41.2902691907881,-32.3915261426608,-39.0475556722308,-16.0208930952237,-12.7759231860976,-18.9109722256922,-24.0204931968837,-21.0173407672098,-29.0223857838268,-25.7611406770976,-26.9913629214775,-29.1850000250873,-34.2770065388872,-27.0311571365651,-31.7562864493561,-41.5042968835557,-34.9101943691923,-38.1796301709408,-34.5776565793953,-36.9863153174318,-45.7798273699218,-29.973865222395,-32.3254472662156,-48.1659738855993,-47.473769272861,-43.6668385217467,-146.943172811922,-27.8114302211995,-44.841351522814,-37.8340612378661,-21.714804087787,-20.8887739997219,-22.0428242038342,-38.1640607813635,-45.3758826640228,-41.1249395906573,-50.315219709089,-72.3986751275545,-41.8562986297551,-52.9556654492063,-47.3833513973378,-54.4745400738138,-60.1651585820068,-71.643574102,-46.5198252282621,-134.205118085916,-28.4103073571774,-32.8183387659016,-38.0168066697165,-19.7180874479863,-17.7159750225165,-14.8632051293309,-28.4096831453482,-18.2871099145356,-80.5024525962045,-36.1243020426382,-33.4415022562564,-40.8789166124181,-37.0153272152622,-52.3255207696617,-63.9623178831036,-51.3074097485305,-93.4972284838604,-46.9949404829296,-47.5243290456039,-20.477732221777,-24.4535724195048,-29.1842100289505,-25.0498213091656,-53.5375074145019,-49.4130872049125,-47.7777061569613,-52.6662542498932,-79.163894738264,-58.9857046249645,-72.5814530962459,-61.6645222554023,-21.0067602124228,-69.8333545283619,-57.3552919847425,-112.026131252727,-19.9342300511996,-58.7401132562666,-52.2326029370476,-23.28968006041,-25.8338606415365,-30.5030617144457,-86.4943987540991,-76.3719500605813,-118.260463843846,-21.5543592090705,-30.2139067057463,-29.7845446051248,-33.4914028319093,-31.2597073513168,-39.1957162886515,-30.8869403356597,-40.8210971526667,-27.2894863808585,-25.8034713498694,-26.402331527559,-28.6536437014776,-31.5483651145262,-40.6897504476041,-75.2279649055083,-70.2859542082885,-25.8627115838313,-21.6823457883364,-12.1874318444387,-34.2859090655839,-12.1131445464997,-38.5322036331914,-49.2940156772915,-157.570389836409,-63.2791421457289,-253.25945717422,168.600696189307,60.1493090826866,-341.757014756103,181.620646193448,-439.782160865657,441.652659950532,-532.25557528264,384.66967801343,-569.919721118699,490.046678301506,-629.182852229146,620.511978386175,-542.303920573099,-594.442652550154,-567.986580084936,-491.498151439031,456.749062094493,-413.773536975916,317.522026269409,272.509060120418,-311.83855249831,59.5279166243063,214.653682490933,-208.638711988135,-80.530618451314,16.2664634163593,5.55406467679366,23.693435419274,14.3462057342112,18.7433406709232,11.1490186259442,4.2393826647113,12.945691094157,10.3573382326184,14.3351451659568,9.5387343780411,7.08737178707804,1.66722939405974,3.45761672562837,1.4718540535815,4.82110438258723,8.2816861415677,5.37982742508789,11.2747190180683,0.626075597372634,-2.47145432281041,-0.716512961385748,4.11910957828354,2.86827913204116,45.603722171531,5.21080071177897,64.0638268794807,3.26466637834811,2.93564015744363,53.3203728595415,-11.8854944987748,34.8059196806533,61.1869807463819,70.7259416505241,5.6445520108037,84.1501553872539,50.8023502593094,93.030772242501,105.648723959596,60.5245525064692,53.8052079713708,56.6001605515126,117.537275598614,52.1703208743669,47.1892858594138,46.6453493570906,41.8758209966067,50.345006600331,48.7877950679713,42.2341451632793,38.6833294804491,40.534530458279,38.754153348198,35.4100897453574,33.6705353707954,43.9862332822913,36.0983253662949,39.4750141611233,31.1179228825167,38.3531150843687,44.1562120144812,34.2980288864781,44.7590558633929,37.6331494031734,47.2979317514625,40.950192137511,33.8460622081119,56.4682642715504,54.3715856740706,46.3290736404693,49.2199655074922,47.109557537023,40.9521644662952,36.7218771729344,42.485618922685,35.9736764446152,31.6357978478,-0.655404045802571,25.027406700594,98.0622885081881,39.2445808656918,20.2841879997298,10.0386249428659,-16.5504600356879,-30.4874014948831,-37.9384200812699,-69.0443250917165,-27.4903254370835,36.7701716828025,11.1452060419103,37.2362760033484,27.7827917765583,83.3067148961494,8.43417557807021,-12.1109175266392,-13.3904658240907,-11.8435588778163,-19.2673910949139,-16.4381093231627,-17.9409293879718,-22.7466981021213,-16.5471496105031,19.1424886527561,14.862015429786,14.0874490091586,12.3318328240252,14.6028673191854,20.8983784230114,-10.7126662837334,-0.44601052827519,-23.7806558358448,2.09877563661615,-4.7207991857516,10.2866121379492,-7.35789700995324,-10.7609498108866,12.6931996795278,-3.10472861561791,-3.2509521086198,-7.98086521331928,-11.6245599396172,-10.4004474210724,-13.9042149635501,-6.00446777819443,-73.8020040578139,-16.8912616365692,-48.1752787429093,-65.8873808217519,-57.3530785251138,-123.143624672826,-28.5024448769782,-23.1692713033955,-19.0959372845205,-10.2356089330484,-26.5993443019469,-20.3454931616643,-19.662862386035,-17.0364563260016,-19.4073103034302,-14.7669964178352,-15.8098182707979,-30.0912851613125,-57.2612842526354,-40.7579293343565,-77.7865417755852,-87.4923795200542,-76.9285490383929,-53.9072729948306,-60.3880324755607,-25.1921495540183,-54.3686633646191,-76.6822513442744,-49.4317954297282,-95.0352241963492,-61.5592875801929,-39.2991714799109,-40.7368268528879,-35.1829930417728,-128.652998306632,-31.1788232457314,-56.85322746481,-41.8588075630876,14.0864112428691,3.83454276670025,-0.50366895724378,-4.61947255334075,-1.9713059010442,-14.2712031947579,-1.44903139740256,-2.4370458521259,-8.64030492509398,-5.60947722212203,-0.454155269478123,-36.9671157265717,-24.4600178631767,-15.6153412499134,-12.0210073403659,-10.2949883697335,-10.2036450600827,-4.98544396556922,3.49672532894051,-5.35163348836192,-4.82464250836914,-6.21880432884268,6.19829986401183,56.9047862279322,32.7069920429501,-9.03692178124464,-91.9607715262729,-0.853796487455238,-10.2091855575097,-22.5020518208818],"Archive1205_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.29227066771113e-18,4.00633820553561e-19,1.87157149696081e-18,-1.34963758684145e-18,2.9724693048882e-18,-6.32062511449713e-19,3.50427915882719e-18,1.905611051269e-18,3.54358605870535e-18,3.41672493590676e-18,3.59299647751453e-18,8.50196768323767e-19,6.16898336085884e-18,6.16925833487106e-18,3.88479834175372e-18,1.55871272416678e-18,5.01145085192719e-18,2.08009044755907e-18,8.02280200630927e-18,7.70075175449341e-18,5.17344911954963e-18,8.34646532731774e-18,5.18289498945321e-18,3.12264849449653e-18,1.09498533400698e-17,1.055516737871e-17,5.01522310395306e-18,4.13639036397379e-18,5.94870816272108e-18,4.32015116703061e-18,1.08334460924277e-17,1.0602849699309e-17,6.91372765650544e-18,1.12493914116723e-17,5.79463626397256e-18,5.11085735127395e-18,1.19060508441049e-17,7.3563432317647e-18,1.16119621588878e-17,5.17347481100954e-18,5.56197787203616e-18,1.16793183357602e-17,7.19938615843409e-18,1.05298391615158e-17,1.04616441209387e-17,6.99944079678778e-18,1.15619019894761e-17,4.60677786675215e-18,5.6497741207729e-18,1.09248165535671e-17,6.39810803973558e-18,1.07365905565745e-17,3.94752954792581e-18,5.57923516167401e-18,9.44709811466687e-18,5.88084948145845e-18,9.10752289197669e-18,2.76632095692695e-18,5.16355550629678e-18,7.91380742542799e-18,4.85841858467117e-18,7.74768950576797e-18,1.8224070836929e-18,4.47596678808218e-18,5.97444756711695e-18,3.59879471787044e-18,6.22070478079662e-18,8.07793311037642e-19,3.61278113448192e-18,3.97858551397732e-18,2.33901551711328e-18,3.97770793077382e-18,-1.88830697942099e-19,2.83706567400436e-18,1.46927866877081e-18,9.51058107259248e-19,1.80951676719083e-18,-1.29745909515481e-18,1.71900276014062e-18,-9.10898718662233e-19,-4.94578207277063e-19,-4.85138109499377e-19,-2.23436622634989e-18,6.45554875930154e-19,-3.24781321697165e-18,-1.89591176045391e-18,-2.7432106667681e-18,-3.2405508713205e-18,-5.23056117063545e-19,-5.44093103145148e-18,-3.19127199082992e-18,-5.03227413456312e-18,-4.32855919602933e-18,-1.710393097672e-18,-7.34352790959311e-18,-4.47263889933284e-18,-6.83896712462201e-18,-4.6593660154902e-18,-2.7124897844274e-18,-9.13248278034317e-18,-5.4243379164977e-18,-8.78383130297831e-18,-4.84427516920014e-18,-3.44821798202695e-18,-1.07760187637232e-17,-6.19573217105165e-18,-1.00418844741471e-17,-5.36179340865192e-18,-4.39429804519019e-18,-1.13658420870486e-17,-6.7053232522356e-18,-1.12174745840136e-17,-5.63461828511739e-18,-5.05899906085577e-18,-1.17354973943701e-17,-7.17764427087058e-18,-1.07047984191059e-17,-1.09436389688276e-17,-8.52629513381442e-18,-1.19197497913298e-17,-5.03586393118281e-18,-6.44454988486519e-18,-5.43868524153032e-18,-4.1031646613478e-18,-9.46711866820714e-18,-1.12675713592158e-17,-4.57098697664934e-18,-5.66776571712052e-18,-1.0187147031035e-17,-1.00873158141117e-17,-6.28568046888515e-18,-1.04400806719897e-17,-3.77380178379415e-18,-5.41449946112824e-18,-8.77099702454201e-18,-8.83700974971248e-18,-5.18234663047401e-18,-8.95733779789287e-18,-2.55989046077323e-18,-4.37361841258952e-18,-8.40217478216888e-18,-7.63672754104868e-18,-1.5595858922238e-18,-4.87105522290456e-18,-9.61904414073086e-19,-3.65123935428834e-18,-5.69331470205441e-18,-5.02759394156683e-18,-3.51415318039337e-19,-3.82296782975251e-18,4.23106972545863e-19,-2.65014789620213e-18,-2.85329143421717e-18,-1.04160352681749e-18,-1.09926156940618e-18,-2.00405748612773e-18,182.991998528242,171.44031772137,8.9510023835626,177.465758858599,178.571567588514,127.118533989994,143.645233034389,4.22243489292002,199.552707720576,9.52302992158627,203.530694242504,7.91797667238701,182.154648921651,194.966987713767,130.809596109068,159.751037584705,13.1268475375664,203.427755064861,206.989520066731,265.540531710292,10.7755886245319,166.969415820152,118.053626937255,152.446599615761,136.08463789169,180.72885917141,215.759607774911,8.29366152408678,153.560131419462,141.162098487231,113.113289795999,110.119401863617,10.3909476654786,174.286370000621,158.273249861601,340.416725447104,312.591879531039,7.33365684237675,91.7593564169897,35.6069511605334,75.0386412048082,83.3086230737617,221.510803719021,107.205369480162,74.3183754102378,4.36509011090703,36.1950148226779,76.1780153714671,7.28837065850448,36.0773524067735,4.40136628624332,110.773925514927,57.8198594404008,231.343452397994,2.49744223165852,38.8266446931013,-31.516903315375,-1.358180691253,16.450650421551,49.6280216174625,8.70220278093358,-17.3732399885538,0.793635306710154,-3.78398136661488,-56.5053125562493,-55.8589014893759,-1.15623204980238,83.3009019437256,-79.1543540717137,-1.21731861506029,-124.882417863882,-43.3673279779135,-62.5424363035869,-106.747155616914,-57.1046390455735,-110.478784870861,-97.7824925590621,-26.0399096663548,-2.80960530327369,-87.7731365717194,-115.056920537361,-135.356433716078,-91.6004095338514,-192.513044200987,-147.11439386229,-44.772956883037,-142.004805896821,-4.8329214642744,-210.865196251757,-117.66005239046,-224.493662198123,-122.52311554698,-7.15863533057538,-111.184843906164,-189.62332166451,-120.914962754572,-7.45142401760589,-127.151184733249,-171.95838183156,-158.039610827575,-11.9142332665618,-156.455188249756,-202.368665547628,-214.009717005294,-7.02404406452616,-239.305605269419,-171.56372034949,-164.758632593324,-150.430770081966,-163.20966577937,-194.008677740522,-206.404221636126,-9.15340701400076,-190.111332168065,-249.762117845112,-240.844700288681,-212.466903046425,-12.6212655137422,-196.118903734132,4.54438786154945,4.96406924522055,8.79728945518978,5.93533332639617,3.01965438541161,2.82688002581173,4.58385219049017,3.25577790097304,1.77986605070872,42.8195992180536,204.572048854478,2.23755125934885,1.23754372796181,4.22450162920843,3.28386252714421,0.953511601601599,23.4338464762556,117.939006806515,1.14502341098962,-0.0344473208822326,1.84236005320027,-1.15558338123454,-2.71396463323659,-9.01575945402714,-42.3359238417079,-0.725239369113607,-4.85906026265489,-18.1771956770957,-100.971012921526,-1.51430358120985,-4.08360806410061,-3.8274523492717,-34.1552492365331,-151.508271948528,-1.92875208534381,-5.0053264821278,-3.35306264166194,-3.05013002013598,-9.22788052770441,-3.05407263667139,-5.40459086690659,-4.13616401803638,-4.54124463323684,-5.23228006452256,-48.357373140433,21.0452070823347,12.7229173493005,13.3764395123752,8.64082769549229,-6.9034793523202,-0.507008241047014,-7.85305780016774,-3.81946909459468,-12.9034719367598,-7.18972462531517,-13.1779754135502,-11.9545703991376,22.4129467480038,18.9994827968289,14.5992442128057,9.14670284411324,-2.53088038289988,-7.54536228997697,-12.3417872553798,-16.6918468619101,-24.4952124758608,-8.07121291190754,18.6366327748235,11.3690804573484,-2.18979257270713,-0.0487750444491269,-2.58697694034168,-7.32255039521966,-8.05815748585144,-12.7765366404435,-12.4478884752159,19.5310982268035,12.0107706552336,-1.97649101854378,-3.82526751332634,-4.70909245230949,-9.262946198305,-12.7080688892599,23.5095714670614,18.2658455351158,14.4808824306718,10.3834829274158,-5.23642909741144,-9.82289406340968,-8.91671763553655,-16.1863144054686,-13.6798279122776,21.6838179197832,13.3290506342172,-9.93392338795899,19.0119317091693,20.7269157888074,29.097254927729,13.73993066743,18.9825801449561,12.8294087741843,-10.5064268450856,-12.2644691846251,-10.5636922607283,-21.6693730956634,-56.1022093428474,-20.7728058617311,-0.10357762008426,2.88737915807508,0.337049497233666,1.20420840633217,-0.175873241227717,0.635092549801669,3.22692774138297,2.34569656303325,3.25350162588803,-44.734662156407,-0.195307058408942,8.11162242405221,3.82576805258754,-8.43289757018611,-15.2684021987036,-3.47252139468756,-2.02903391933111,24.8988456633892,13.510910110815,-5.41647601317562,-20.5415627703798,-14.4101053374754,13.7260725569958,-7.15977637037405,7.68605964470208,-10.1879768544032,-8.51152617760581,-7.31297804879158,-8.62570644931866,-5.61608582158124,-6.0754548425701,-6.52535937249496,-7.00665760102399,-4.66128377007655,-6.18990177169499,-8.33420824984288,-8.23259584001777,-12.4798640902831,-9.31476728910265,-13.6564025980022,-10.9573979761871,-9.18939327920933,-11.3833750672461,-11.0063484802406,-27.4153063743073,-20.8020925009028,-34.4868575018376,17.0712317048857,13.810400308169,6.98285304616511,9.51105850115209,-6.50649637143895,-6.49124420581527,-4.79407958189884,-3.28760664602921,-5.82994373275546,-5.24041734337397,-4.82886614398751,-3.55084381026041,-3.93655095072157,-14.9653330479327,-25.5776728674861,-20.0929016713932,-21.7888563348521,-20.0234483397902,-16.7980624290652,-29.7077732203369,-18.1727809148683,-18.295711307292,-17.4724837098571,-17.2946452290837,-13.7789501872786,-15.923092394784,-16.5327281864482,-12.8819066823467,-17.2895833326486,-14.5845020953525,-27.9208143684645,-48.6144840764177,14.6238772739544,14.6488873443313,16.2103315919314,8.38231045310287,10.6779240210384,9.9762983503071,9.88362633732406,11.8024133826451,8.93043465425033,12.0069796449538,7.2875995118544,-1.94570042197653,-14.4828102274903,-16.0435108902556,-22.618749581225,-14.4541720180771,-15.9681724897646,-24.4412555150499,-13.0557542714364,-35.8350836235929,-13.4406332387753,-12.0287650983445,-15.455426019783,-11.4052761294343,-11.2680832541469,-9.23299641178277,-9.74038481621298,-11.3925731776271,-9.05797242144949,-11.6499423008463,-10.0096242507209,-12.9492206114476,-8.15568582105301,-9.66294719029273,-8.79187143015466,-6.91451478470959,-7.32121583351236,-9.38441283981973,-7.87671437084568,-8.46994214301338,-6.52572487130873,-7.55832713343013,-8.51454078787236,-6.64683276659633,-5.42517386342894,-6.07060396059041,-10.3758051335775,-8.85532328617963,-6.77538120843452,-7.26021705167149,-5.9600098104456,-6.30171151488807,-4.05952821245465,-7.97931790653326,-7.10031016735782,-4.65252317986458,-3.8383498652419,-4.80734297244046,-4.27814287966586,-2.71380010679891,-3.09761257947688,-2.35578792200305,-2.96633510862055,-3.08283866116741,-3.91063159096362,-2.95366798023287,-1.43386183695288,-21.7987585950093,-20.6386032559522,-19.4078671829681,-19.4463251351266,-18.0388029338734,-16.0230810825691,-21.7842225666104,-19.8895603419386,-17.2522171692275,-17.059777400508,-18.905934372141,-21.9675863393125,-19.0837826636559,-14.4196733321558,-15.2605510853322,-18.010014205445,-15.3357676952098,-15.1785165022648,-21.5033976108924,-20.6896227901075,-16.8124664673983,-27.3936082568359,-9.95044127358781,-28.3707110212341,-16.6148324933936,-291.147814553848,-17.5239148800632,17.8581303883423,15.7512056723412,14.4025054789189,23.1503193024392,28.4248379730913,12.2220990500906,14.3881062520967,21.4415098579914,16.2072755227281,17.095255315508,15.1429947965538,15.9149724023583,16.8728607563138,13.560604582059,4.85881841919652,8.92059792144451,5.16684918436529,9.05026956113561,-2.84999380733545,-1.63280199928831,-2.61041916317028,-1.94519387750259,-0.390709067019006,-1.24015054077481,-0.661458384026395,-1.10328450128233,-0.267724719426485,-1.72779896531819,1.26531853623976,0.436798780126711,0.309773593733814,1.10416630954508,0.725899823181935,0.498438020870996,2.33646656809632,0.0921364858356815,0.839881494571158,-0.744649718130704,0.958107889075174,1.97183041877566,0.075229265937957,0.147409298835016,-0.222334218918343,-0.850983879760836,-0.400832420270126,-0.556288531722245,-1.50141514389038,-1.48395052886877,-26.6805997140876,-23.3759013813505,-11.8183822517612,-12.2677575944541,-12.9451483167665,-11.9176662902705,-13.2491178895162,-16.1118951560128,-10.5279245526123,-9.69070745380621,-10.6946883100408,-9.39740766590149,-11.2154012948497,-12.4061265311929,-8.40214322363858,-4.48028424350873,-5.35939038989999,-5.77586218601513,-5.12239948819633,-5.36884634290601,-4.77200972731615,-6.37198229520959,-6.25504618689443,-7.26186933126884,-7.43055379271752,-6.48154412512346,-6.80579196810222,-5.14288544781966,-7.62213659313249,-13.6091611498061,-12.7760480511974,-31.3969488845743,-16.6119022415592,-18.9284021780281,-56.4729747329811,-24.5489597456841,-26.1891091526121,-21.4378979498524,-28.549023632237,-19.3455835988188,10.9314330908917,9.42558692530863,9.96010791974628,11.0548870741785,8.70351163798359,11.5267921548437,13.1805780390527,10.7047693287021,10.9051021958812,9.37687547299197,9.34969294330134,8.12016609955104,6.78816251061519,19.0137433398958,18.7954193840843,14.7670079097979,13.9843070077681,6.66026020100167,4.97759977134463,6.22611469494762,-3.38769912727039,-2.06200413211426,-16.7338305707743,-16.5658217349215,-18.8864921572656,-21.7866307080406,-15.4594020140184,-13.321095756829,-14.4731861331463,-3.63896240522448,-3.42262335620247,-14.0076098968296,13.2329460964162,12.0450079792237,12.3657316241702,8.6644205573223,6.58100835921454,7.0167994389443,21.1315053852016,25.6883086680177,16.8527931717152,19.0021297805792,15.349002262875,13.8683470857087,13.4749843399986,14.8224379977074,16.9816978600743,15.1759543044115,13.3101509436594,13.980803532796,11.2485758879581,12.3577151681874,11.5617625131194,6.5309878936916,4.55892761697295,-13.992205220503,-17.4140630969946,-18.2921722160781,-17.4140311349008,-21.6373569620501,-21.1704363195317,-25.9527052628327,-13.4139377967598,-16.0051672965458,13.0525523529772,9.10489687177404,10.666319783144,8.16914730475828,7.54482124805607,7.4453742535181,8.19464135257226,7.31960071258197,58.5623381941085,5.46174447815021,5.49145706922119,-19.4470070307572,-17.4241519267453,-21.3570722471052,-15.8806586337198,-18.1859453629324,11.7125408736267,8.99157747356636,6.062171525369,7.20509730432372,5.86660809986647,5.083278078371,4.72322914589992,-15.0960279896248,-15.008130256225,-14.2620076538424,-13.1924341793453,-10.5323851606613,-11.1694805595362,-9.92276209159667,-11.9003543408684,-10.434387244423,-8.25256229800791,-9.25893894344755,-8.53920175552342,-8.8998793994202,-9.85344422929067,-19.0287784840961,9.46881523612772,11.1817219256374,10.1666407156834,4.00109699716903,3.85131764258689,-12.3122568358847,-10.6905238626652,-8.53672528234462,-11.4037119192831,10.3131618538546,10.4994037058937,8.86969446920246,7.66995364019102,7.50219962821769,7.74950159338904,8.41231617552569,9.68862752415266,3.82305044592814,5.14379142204044,4.32687514843992,4.30421335645396,2.94214776602899,2.75367419771077,2.33624232099093,1.7479556825325,2.29829107410241,3.6391539008576,1.32779715938675,2.0060990523226,4.03823612721878,2.93336505620547,-8.88285546416947,-11.2350079485051,-10.081357154928,-12.5292365875093,-11.2266914317339,-11.048904106619,-9.47358635451798,-8.6744344111266,-12.8631380030743,-12.0770554811918,-13.7028658680841,5.33926402215888,7.59923356575988,6.43022533746707,6.65017963407284,5.40721159902203,9.44198238252589,4.15661343301044,2.98091847922125,2.83139435708758,3.24132882750296,4.21629679878601,2.30595225671612,2.90316599320446,-6.54300890929374,-14.3777033262755,6.26244954959064,5.78246268552616,5.37714122352934,6.2726608512614,7.29261280160065,7.44729954299219,7.41508123939421,8.3613033382475,9.59301973833971,8.49679650925828,6.41045080770433,5.80808117416845,5.24538009838362,6.38266799433354,7.5967201387996,6.46397202742897,5.74710411153859,5.62882876352866,4.60475429162307,4.54763017282102,3.93955171583353,2.85236555617837,2.98916948260841,1.86609922537091,-7.80299185135398,10.7950898756336,4.84843671293002,7.67281474012611,8.42729425507411,6.31936699284976,4.86723006767365,4.83730044832288,-7.69755563544227,-6.66078203724392,9.8180978524976,11.0309340108515,4.39768476705194,2.9063939517969,3.51342281147511,3.75853925098416,3.44611969317606,3.74340912430634,5.02904924208696,7.86346165827769,-7.93074777405788,-6.68123939219636,-6.31889135530618,-6.71993289073438,-6.7392386812813,-6.01466333222592,-5.01720334637711,-5.55078490134083,-7.82825252343411,-4.06761737325846,-5.85285870462036,-4.83295591128926,-3.05026135395858,-5.15168779485261,-3.76685943558786,-4.71238949289241,-5.46256686844353,-2.50899010079967,-4.53466803809557,-3.43408327240397,-6.12201039906487,-3.46571448576452,-5.9210467172515,-5.00925395363595,-7.90012114932008,-4.00385078065538,-6.79697326942602,-7.95452907817066,-5.14132474515326,-4.27328867619381,-3.2587360122966,-7.73665479373227,10.5107339895686,12.3449238010093,12.0262702866331,4.27353670667948,7.81411591920765,-8.80154519690999,-8.9625828638157,-7.48841920409137,-6.14911622388018,-5.33429414047538,-5.30336211044213,-5.72678984918162,-3.57896160582115,-4.95163667096794,-4.45001503038301,-4.52615362081712,-4.09480010535683,-4.03767418380783,-4.61884732902209,-3.46873313093859,-2.41191421618089,-2.69081931049158,-4.82957882876524,-2.538380163249,-6.64245524777522,5.3655923934114,4.73005075227458,4.62103420721099,5.96208817240312,3.95888691761891,4.88124150376338,3.97671003749486,4.31884933356396,5.10923607421138,2.28069529290611,3.22302253542262,2.68918748575173,3.08091490558296,3.17359775391557,2.61866476056104,9.88143053177743,7.2688226416526,-10.5183856061541,-8.75641458966857,-7.75167500359622,-10.1675249649472,-5.56790297863846,-3.98888614613478,-2.46274921890575,-6.35721314215627,-4.50379769568515,-2.69339056067564,-5.47030585815521,-3.75683891350826,-6.62060594379213,-5.88928449672542,-3.22361849983204,-3.48657900484499,-6.1369415248156,-7.25893986756711,-3.09344794385441,-4.12135553613984,-8.37663947835489,-2.26539818850677,-4.99177107984797,-7.31938864239667,-8.25014963771349,-1.99647312684411,4.30363911432467,3.49464132919179,2.59479630319338,1.10107855452214,2.13759426154943,-0.787030569569593,8.91162312044286,9.86333690110629,9.67041715286885,12.1293562195907,11.3863519041775,10.6095960356542,11.1263204898517,11.3660656226706,14.2316960223654,13.8566911165429,14.1120387956536,12.5632512294704,15.8229622972707,12.7722314498651,13.3137443888177,14.2704821925309,15.1550314806823,12.0069898938752,11.5600012529462,8.66574937249833,9.71976298551466,6.76995521028934,6.28424138335023,-11.4020035442096,-12.4612331837609,-12.9990562742453,-12.4914312454356,-2.83356413587048,-1.67079103521198,-3.36172068489342,-1.92534760653875,-1.16108285487156,-2.9191699906542,-2.16771752234186,-0.872734538096909,-1.23736556743392,-0.61795149184977,-1.93147268441589,-6.72502362734723,-7.36991507634829,-10.7087149681225,-8.24209730075284,-2.48794677793504,-1.55273428704936,-1.11260088062616,-0.541624739569189,-1.10319329336207,-0.614336857042404,-1.3505143491963,1.25376029597988,2.26585435037843,1.53550016934222,0.416673391117304,2.44131651808447,1.50743771458605,-1.78545702776044,10.7402429659745,10.3021632333885,14.6786444362392,7.18620538947866,8.17892327806278,6.04710231790784,7.86363877449269,8.03281496277346,7.55532113977468,6.45011566699808,6.28954404605141,4.96654360233558,5.53978412880554,4.43781993028593,4.51980268130921,5.31015153340436,-11.91351023362,-1.84095313184616,-3.91347961243027,-0.902799472602643,-9.45640660786493,-8.64610822527157,-10.8827788685925,-9.89401216039747,-9.88433787686128,-9.96665269327375,-1.89597688630191,-1.25621547306773,-0.412317648556402,2.3876813979941,1.48810422837931,2.29183977416127,0.994379919169843,1.28669738819571,1.18985511387797,-0.0195433752149218,0.496789925792856,-0.363162576150385,0.876451411999427,-1.19198466407886,13.7520714276169,6.14795291682097,-10.8414161155471,-0.854029220552435,2.83466833579255,0,-0.162170843705075,-0.799721706416971,0.803064408263973,0.833457362178173,0.344952899605991,-1.44690991676542,1.02607040439287,0.0585508975208734,14.4365252324241,20.0751525980162,15.657562084115,20.1590199370261,14.9188629585063,20.1592961987746,19.1468337366248,19.8934772246102,17.8657280811212,18.8817187701499,15.4105789073283,12.0519195803954,-10.5778627371081,3.65427169862011,3.19067703886845,3.29639438345669,3.23161441842715,4.11776787754043,1.49148208206596,5.38344282125995,2.46128971857707,4.39153518557806,1.21568367551703,4.01750848965879,3.15252955782678,1.4902736125978,0.732158388389427,2.01560435464903,1.6226152639435,2.46492000584958,2.48580496066105,1.86513724051739,-0.931504185615283,1.03081145509171,0.0146602943961145,-0.3522823636647,0.78368054059059,-1.16025071900421,-2.47872785615613,-0.809577091736021,-1.46754682523685,-2.1065617156678,-2.18850570442043,-3.0278673763769,34.1277623856129,24.5848849389073,28.5989615973679,10.9161069066448,12.7603711343711,12.8033699447187,-9.02876791059338,-13.5172121125265,3.98172597829658,-0.0858747604781911,0.485945083670598,-0.0167435997551582,0.821822422602742,1.6207122235085,1.43840717992515,2.37987035328596,0.662716996118242,0.959571007869627,0.336124582481031,-1.9224525112433,-2.96889252805369,-1.81534167998572,-3.05749678474162,-3.58504573985183,-4.56472947334063,9.12710443138226,-7.59455232998241,-12.3104367630284,2.63104583747517,2.37887741589279,-4.24176199354471,-4.24953511391166,-9.1825895800027,-11.8723212987884,-13.5598874723946,-11.7784641513896,-10.0283568898289,-15.2354452334083,-8.84469324827705,-9.75176160419778,-15.1373642373212,-13.6217729867101,-7.75091476726267,-15.7416874676816,-15.4200061944047,-7.29488676367031,-7.57826018615053,-6.04510079836268,-8.619207386544,-14.533781847784,1.31150787408426,4.25923394117581,-10.8085332687622,-13.1145733629654,-9.29268562135839,-13.1075364003625,-14.6708187851598,-12.3034389859311,-16.5314315642495,-12.3611072625259,-10.6375573053482,-20.750296970073,-18.5142077683708,-21.0406915698368,-16.8609042134418,-0.0992835065470963,3.44213890346808,1.69448998174465,-12.4124457422004,-10.0982402185124,-49.5421443629959,-29.3423253394091,0.460560243699115,0.863919079084358,-0.371172711102304,1.73646249038368,-0.441515910674861,-0.173461146611134,0.800158421679334,-1.45111002404661,0.845181368025557,1.03815216757661,2.82613164062506,0.124095612110622,1.92237938755732,-0.814615576748707,1.9016028514346,-1.65476395995547,0.0982768888142277,1.60911466657142,0.667336802153709,-0.731040138910729,-1.47242099962584,-1.00705610195041,-2.37858699773054,3.99538066550238,5.87793668435352,4.8446513305552,5.81216916527945,4.71815201701428,6.12645816862384,5.30194426214296,5.02402559091464,4.38187199696967,5.67466894191424,7.35434729723136,6.38121136425832,7.21494027832874,5.96749431975785,3.98978842462752,5.19521372400738,4.71558682407407,3.41015173365477,5.33551706016337,6.89231491239964,5.88035822789128,4.85605420766318,-8.45042650644544,-17.551529410415,-16.6762295254825,-33.7541065099317,-18.2000346237818,-15.3440468920142,-19.1297643430388,-15.8379759685695,-16.8508964414522,-16.3778925826099,-17.0362877914622,-20.2009753790815,1.10628686819008,-2.38370413710232,-3.08422859434153,4.90633004099901,6.20223166582073,3.01094516131476,2.55252341032072,3.04841190077624,-8.82142761605597,-12.379160069032,-9.04839237827988,-11.1901978417654,-12.2743362251091,-6.30748668649601,-14.494517209501,-21.0011765134211,1.3117783802967,-2.4252868916144,-3.35118480347207,-2.03614238736975,7.54997775720436,7.82118586676949,-6.98745599543157,-11.3580846050461,3.08733813369784,-0.783395908516302,-3.20594209820906,-1.96812661603311,-5.03371217773078,-4.28933930854715,-4.10081901222268,-5.11300975961715,-5.63487921661524,-5.33604296260657,-2.64132428830348,6.94494506005808,9.39600234524704,6.91282286490456,-7.6607802476667,-8.13524131526465,2.32700910805385,3.24359396350728,2.32522290260365,3.49482934189526,3.24906665897881,2.74385529505839,4.58626280054176,2.61377092569988,3.64761449382782,0.556611600717515,1.71488479687926,0.0713490601987397,0.222675679801547,0.615684497099451,-0.684003486067876,-2.61264443023749,-2.15104424066534,-1.93661898207221,-2.22080868299945,-3.62589457875339,-6.42320005285031,-6.27142334543437,8.62153486464159,8.54274122643422,8.77943597714651,6.88452515300718,5.81560313436297,8.00891119335686,6.18326361369889,8.02066179473816,7.23044878788316,8.39810717279266,9.22403727636296,6.83481189861489,9.3485901911303,10.5400220168289,8.86142147252927,9.49913249315972,9.60357098246229,8.99518118047016,9.47984813420637,10.8523297539549,12.9850481840718,12.6899184914218,10.516506292377,6.47359521788076,1.9061302896947,-5.56002863899049,-4.05881512299333,10.9256698113354,8.23749413465281,9.37594153190769,7.11886708503635,7.84078015420752,14.8180960827141,10.2465931485382,2.48361376440393,-4.7920419811113,-5.05182764464604,-6.70279765911443,-5.71760980946173,-8.91764409283,-6.20975092088644,-4.97806993343653,-14.0687258074326,-2.71587043889927,-3.75001313915092,-2.92879997611897,9.92543956695811,10.6295946525982,10.3069329097733,12.2663264496023,7.39178868243607,14.8504877405266,12.6118378111688,12.9326262886908,12.9993007696745,12.6449938073042,17.0396803113031,18.2561850594279,12.5260054059508,18.8049484738937,-4.80898848642185,-3.47144239169946,11.9886602331755,12.8196411172316,11.2217966931626,10.3847571271896,7.97967454306647,8.75464244280224,5.79008221212006,10.6468158558243,13.0730203231386,7.06140505120592,7.70705158520944,6.65296035470599,6.45636498366795,6.28788177054762,4.53054633915214,36.576779383409,7.51204485974254,16.2540024249828,14.6397936787431,11.0456697505603,14.57600434939,14.6884115178859,6.3615027988549,20.7859010260902,24.4236026508679,14.0881486217629,18.9536260504506,12.9891174503687,13.7924127708073,15.0055686490232,17.9755039184535,16.9170828774005,17.1551097183474,14.1077799651843,15.674957288432,18.5199803113771,16.6461201901119,17.2765985968534,26.1373343304801,37.5837870701942,33.6511548842154,18.3404585861149,18.5878060071453,10.1197457375734,22.6037169244391,7.07786628649986,17.280334975464,20.8998788163046,240.38049057045,245.095214732853,216.419912211331,229.793060375859,205.384928945838,185.143218559104,185.020527727621,156.770715758066,179.154834726901,126.143200840244,130.729763703523,80.2545319619541,65.9893574424934,37.645823304575,61.1358240863096,-7.92194826624771,-54.9586585506092,-100.960519004228,-137.98920901629,-183.780072575442,-174.012224003845,-212.026241278552,-130.207684710529,-201.832343570682,-194.79607352225,-177.321576770604,-228.827880564168,-242.700059195225,30.1244592047137,20.8629463906254,35.9727042762026,35.3813611144448,27.3385776678898,21.5676024301597,30.1616638887314,20.2820059250608,20.1251630621465,19.7971418800167,17.5119372888972,18.7339009553754,19.8684231687338,19.1970063764758,20.3701183138257,16.7780248362477,20.2336307810704,21.2064750344332,16.6847694875119,16.2487647765133,17.5972424090621,16.2469069106401,15.2312450728387,2.14236226512402,21.4961890059061,1.42780267049263,9.94637641532228,-0.453922201328271,-0.742509337042628,-18.2491851576646,-218.697172810352,-0.752200121401725,-2.10215508690857,3.56620467795114,0.348484376501195,4.73585556569598,5.00351986103578,6.97386767539854,11.6541117012768,4.60994675729211,4.19193843145811,3.09881078193851,15.2390360408699,-1.76210112996186,-0.127086538486067,-1.05390558849067,-1.15577904456366,-5.06421774648729,-3.2399957974145,-1.89996241309056,-2.05057756322213,-2.84567250646168,-3.94733913132959,-0.951144497903524,-2.58700226689879,-3.75207376617335,-1.39244052624814,0.484855028479861,-0.613369487510027,-0.432814200004049,-0.676925873430928,0.207099860779053,0.866784101584122,1.48104625549389,1.07137233817298,1.50873488002682,1.81695564907017,0.0877288600553776,2.1519755029158,2.04357878988606,3.72477969019233,4.69441350077488,3.68650627576263,3.21218189555383,2.63862782890027,-3.94880534240753,-10.161158822422,-19.7361094358962,-28.2879146415979,36.1658348308537,14.6178010761998,-1.1566994061784,-5.54671138180355,-9.82750444256065,-23.7670485155655,-22.3784684438737,-50.8654940962982,-25.2430810142775,-20.3765611291817,12.7283401112622,-35.1585312339984,-22.8125214730762,-60.8329486171699,8.858178096304,-9.58864342748699,-14.1504313297388,-15.2935001511642,-15.315322439382,-14.8094350912126,-17.2630478427206,-19.3537885403456,-19.6715122175904,1.67302788887767,1.2101807333099,2.03362342406457,0.970492985978622,0.536093232486766,6.55134004241014,-3.51940023721261,4.05886705849819,-5.1505397933728,13.3892962192967,-2.45574443796724,2.23418640050072,8.63365537830619,9.43720545466398,0.0538687195205628,-0.371392490976046,0.414437315039272,16.8611044105393,17.3809124978113,23.7065013290982,5.59421304825424,3.49699978214094,55.8258453096748,0.38133066529413,-16.9226335227922,-24.5590259076787,-19.735529772186,-36.7605890278563,-6.31954238877507,-0.829845360418043,-7.04511160909115,-11.5832014457018,-14.6678905349061,-12.7136934720908,-14.4570994767592,-12.2633359958025,-12.2376965267566,-12.7444201193939,-11.0864309644065,2.21667271713277,4.46320261264719,4.02988766935069,1.43206274638992,0.691063086943723,-3.89475529878514,-1.4477595763835,-1.25267264814886,9.10493541894292,-3.24164898107154,-3.6242404670923,-4.20580689870211,-7.47999405317127,-2.79907846140266,-0.962140099166619,11.9473646058734,2.22805546552655,16.1285874772508,4.46264355283394,21.5060403332933,16.0076668145279,33.1385164243523,13.4970561981636,24.2495490512414,18.8359347756085,33.9571665574587,48.528194877173,24.3285431076597,21.8408644035563,22.9729754711802,20.0623492275586,33.8710208257508,56.4292801432639,31.5158234455453,19.3812302604516,21.5332428548132,21.9098530998654,21.4457771006294,19.8833907758172,22.8194379640032,15.5091630724405,14.2207947716111,17.8403233909752,15.1692462377206,6.15885046951047,-2.71627631897951,15.1916022348143,0.0774281588104593,17.9463480169046,19.0567836985205,-6.20551388385217,2.18087057917984e-18,6.76120362475787e-19,3.15851416931317e-18,-2.27768452789469e-18,5.01641878634277e-18,-1.06668561770012e-18,5.91391533497814e-18,3.21596023256755e-18,5.98025071164878e-18,5.76615648412662e-18,6.0636370573876e-18,1.43481483011232e-18,1.04109414933764e-17,1.04114055468818e-17,6.55608969642819e-18,2.63052532759992e-18,8.45745863854649e-18,3.51041633340597e-18,1.35394954751507e-17,1.29959948473398e-17,8.7308512524651e-18,1.40857183617208e-17,8.74679235542611e-18,5.26986520775073e-18,1.84792656773591e-17,1.78131830813118e-17,8.46382479206683e-18,6.98068312946489e-18,1.00391991711642e-17,7.29080278087113e-18,1.82828136894521e-17,1.78936530422416e-17,1.16677919071248e-17,1.89847741470819e-17,9.77918330958452e-18,8.62521970843799e-18,2.00929701872114e-17,1.2414761802897e-17,1.95966582478594e-17,8.73089461006072e-18,9.3865427779596e-18,1.97103303354006e-17,1.21498768434425e-17,1.77704385038157e-17,1.7655350727426e-17,1.18124436976216e-17,1.95121753656068e-17,7.77452167370749e-18,9.53471007805894e-18,1.84370129261012e-17,1.07976184362272e-17,1.81193576938539e-17,6.6619565595827e-18,9.41566664201375e-18,1.59431757229267e-17,9.92467904375949e-18,1.53700994850398e-17,4.6685173147327e-18,8.7141545258396e-18,1.33555533021422e-17,8.19919728690956e-18,1.30752082531419e-17,3.07554298911255e-18,7.55376139489731e-18,1.00826376791913e-17,6.07342232305924e-18,1.04982279464965e-17,1.36325362025014e-18,6.09702617421694e-18,6.71436743940999e-18,3.94738521346501e-18,6.71288640649861e-18,-3.18675741760297e-19,4.78790799345158e-18,2.47959402113045e-18,1.60503112624684e-18,3.05378894584741e-18,-2.18962670825315e-18,2.90103508405071e-18,-1.537257066789e-18,-8.34663424857032e-19,-8.18732063090225e-19,-3.77077626840386e-18,1.08945569325332e-18,-5.48109654466614e-18,-3.19959144969097e-18,-4.62951577028612e-18,-5.46884041569707e-18,-8.82723507904401e-19,-9.18226088877816e-18,-5.38567605754663e-18,-8.49260056786312e-18,-7.30499239573306e-18,-2.88650518714625e-18,-1.23931343220719e-17,-7.54814516074021e-18,-1.15416240318165e-17,-7.86327084155749e-18,-4.577670386701e-18,-1.54122224609442e-17,-9.15425790370404e-18,-1.4823828892653e-17,-8.17532848027285e-18,-5.81930499198057e-18,-1.81858977919224e-17,-1.04560835016531e-17,-1.69469531084997e-17,-9.04870611764381e-18,-7.41593503772462e-18,-1.91812994247959e-17,-1.13160830544828e-17,-1.89309104541567e-17,-9.50913268401149e-18,-8.53770226903043e-18,-1.98051396188963e-17,-1.21131846518546e-17,-1.80657044314322e-17,-1.84687781380619e-17,-1.43892039580803e-17,-2.01160888973354e-17,-8.49865880475477e-18,-1.08759949375412e-17,-9.17847083357652e-18,-6.92461054410013e-18,-1.59769629451285e-17,-1.90154551133216e-17,-7.71412000927434e-18,-9.56507317777742e-18,-1.71921020888866e-17,-1.70236242542413e-17,-1.06078826574289e-17,-1.76189596736216e-17,-6.36876893329966e-18,-9.13765426299938e-18,-1.48021694207281e-17,-1.49135742632065e-17,-8.74586693013057e-18,-1.51166430990809e-17,-4.32013968227855e-18,-7.38103553605371e-18,-1.41797351293398e-17,-1.28879458704919e-17,-2.63199890939189e-18,-8.22052321593629e-18,-1.62333564403409e-18,-6.16192929567525e-18,-9.60819032882204e-18,-8.48470214885113e-18,-5.93057899814865e-19,-6.45174286887239e-18,7.14046655493221e-19,-4.47246054693747e-18,-4.81529102082897e-18,-1.75783800063317e-18,-1.85514325709116e-18,-3.38210107192347e-18,308.822196299183,289.32727047501,15.1059512842273,299.495966268468,301.362158688932,214.528641540924,242.419541348097,7.12589418034372,336.770492542636,16.0713202733464,343.483849107025,13.3625894349412,307.409062683192,329.031508677189,220.757776800699,269.600128337677,22.1532193737428,343.310126194654,349.321056177525,448.133311121629,18.1851718775062,281.782056718796,199.230461687213,257.272963246071,229.660078551494,305.002861725381,364.121691011615,13.9966052495745,259.152189332641,238.228937000764,190.893016450854,185.840451015273,17.5360414963047,294.130344504091,267.106174208624,574.496380470569,527.538425496601,12.3764756447413,154.855546732121,60.0912441492166,126.637220045437,140.593862874989,373.827563274291,180.922651942181,125.421680205513,7.36664294579037,61.0836761307667,128.56005839566,12.3000494683078,60.8851058872933,7.42786359057695,186.945042653995,97.5783429095607,390.421404452598,4.21475037878273,65.5248851615828,-53.1887698953184,-2.29210209963996,27.762558115072,83.7535780643586,14.6860704132591,-29.3195449705411,1.33936019306866,-6.3859482698247,-95.3598783910738,-94.2689777670604,-1.95128816518373,140.580832489208,-133.583007277213,-2.05437948829647,-210.754912094827,-73.187863849136,-105.548290070151,-180.149357957956,-96.3713178213329,-186.446955400722,-165.020352554036,-43.9456487675603,-4.74156513655925,-148.128295390813,-194.173139730395,-228.431141687174,-154.587303716358,-324.890167901058,-248.274190047516,-75.5600408249226,-239.65111258855,-8.15616766384646,-355.861751078015,-198.566254744143,-378.861515109205,-206.773290334862,-12.081104655251,-187.638519533324,-320.013394776617,-204.059328624349,-12.5752226828562,-214.583743809458,-290.201569338454,-266.711878719153,-20.1067790624329,-264.037964754152,-341.52277836841,-361.16852849575,-11.8539648310056,-403.858546823848,-289.535528054312,-278.051079751817,-253.87099535131,-275.437001883238,-327.414239107737,-348.333290874759,-15.447534757908,-320.836974368823,-421.505237418119,-406.455964787389,-358.564834350154,-21.2999856134555,-330.975512995533,7.66923063044451,8.37749617043306,14.8465412306651,10.0166274392731,5.09604959160743,4.77071842084251,7.73583168861626,5.4945379586401,3.00374960281877,72.2635021286422,345.241267032304,3.77615141537169,2.0885119303534,7.1293820598406,5.54193432572816,1.60917170899093,39.5475867510034,199.037025685639,1.93237216621372,-0.0581342210426319,3.10921615469092,-1.95019345474065,-4.58015938104024,-15.215237050204,-71.4472386131866,-1.2239333774899,-8.20028019985572,-30.6763221163157,-170.401384889877,-2.55557926889776,-6.89160630696086,-6.45931106408531,-57.6413131131754,-255.689416351268,-3.25501366126988,-8.44712298809396,-5.65871829181081,-5.14748108874875,-15.5732182536513,-5.15413475397687,-9.12093225408982,-6.98030114200054,-7.66392603418469,-8.83013593039102,-81.609197673104,35.5164549543661,21.471535972856,22.5744374732173,14.5824921757598,-11.650496594585,-0.855640682659463,-13.253030607991,-6.44583830974193,-21.7762447289739,-12.1335717814649,-22.2395041461943,-20.1748530873885,37.8246890351706,32.0640358761899,24.6380754260737,15.4362206213027,-4.27118149811907,-12.7337554264926,-20.8283306216551,-28.1696076858199,-41.3387764298503,-13.621195015633,31.4516804637996,19.1867645852208,-3.69555257706356,-0.0823140709567416,-4.36585155043464,-12.3577321071456,-13.5991623290637,-21.5620253242372,-21.0073898810947,32.9612043097373,20.2696981443294,-3.33557916314082,-6.45562387644527,-7.94719050775152,-15.6323960182348,-21.4464773141262,39.6753822730123,30.8259299902969,24.4383249134258,17.5234438044827,-8.83713794938401,-16.5773790279044,-15.0480914254897,-27.3164575767747,-23.0864438600709,36.5941917023522,22.4944627336079,-16.7647550888071,32.0850449939733,34.9792980452084,49.1053064906095,23.1878748789083,32.0355105083234,21.6512537527817,-17.7309272517469,-20.69784657527,-17.8275699004583,-36.5698142304096,-94.6795906151097,-35.0567433609741,-0.174800364929218,4.87281837630521,0.568813755980547,2.03225434902306,-0.296808390875173,1.0717991915517,5.44584965685726,3.95866032544354,5.49069645585972,-75.4954136189262,-0.329605421087708,13.6893911902869,6.45646859990433,-14.2315837289956,-25.7673643596783,-5.8603200819068,-3.4242519693377,42.0199586043405,22.8013736555742,-9.14098994515642,-34.6664913285112,-24.3188795959016,23.1644875606907,-12.0830303045663,12.9712000494769,-17.1935025210212,-14.3642794721461,-12.3415775590154,-14.5569731558481,-9.477856802344,-10.2531002617005,-11.012371192527,-11.8246229696794,-7.86650729554501,-10.4462439635907,-14.0650329895928,-13.8935491661152,-21.0613527852242,-15.7198506785667,-23.0469106724906,-18.4919982072772,-15.5082661426007,-19.2108885516202,-18.5746083885602,-46.2668050779385,-35.1061682773857,-58.2009441004643,28.8098677047971,23.3068013314332,11.7844497655363,16.0511169836887,-10.9805374868909,-10.95479752381,-8.09061706316397,-5.54825300100669,-9.83876913925465,-8.84386862005505,-8.14932379674972,-5.99249908749829,-6.64342878499056,-25.255896746207,-43.1655655694695,-33.9093188450286,-36.77145734401,-33.7921075430131,-28.3488599208565,-50.1356335077491,-30.6688716453762,-30.876332267073,-29.4870313318481,-29.1869063500967,-23.2537252653465,-26.872237063814,-27.9010747487321,-21.7398506282201,-29.1783637581413,-24.6131962339418,-47.1199139037777,-82.043104972778,24.6796468396148,24.7218545040236,27.3569896237057,14.1462115557436,18.0203504776957,16.8362682098489,16.6798724394597,19.9180688323747,15.0712406335421,20.2633003338774,12.2987480605737,-3.28361612796038,-24.4415783149533,-27.0754585409587,-38.1720074068543,-24.3932477059638,-26.9483154391159,-41.2477172180964,-22.0332404743106,-60.4762466020878,-22.6827725246675,-20.3000660483218,-26.0829907676662,-19.2478493705665,-19.0163190009133,-15.5818519565989,-16.4381342131627,-19.2264115289772,-15.2864767842718,-19.660754552341,-16.8925098916832,-21.8534514172909,-13.7637537588562,-16.307448402279,-14.837397626549,-11.6691202857574,-12.3554798650756,-15.8373863747059,-13.2929540700682,-14.2941011419617,-11.0129880181113,-12.7556352434358,-14.3693670091477,-11.2173729448441,-9.15566867012754,-10.2449137833899,-17.5104865540294,-14.9444806776906,-11.4343147371552,-12.2525366876079,-10.058272134464,-10.6349370798922,-6.85096850458879,-13.4661105440886,-11.9826735481576,-7.85172268893981,-6.47770200381594,-8.11300071616727,-7.21990847034887,-4.57988172181885,-5.22761392723076,-3.97569077303556,-5.00606655247931,-5.20268106712228,-6.59968657947613,-4.98468916745182,-2.41982362747424,-36.7881686633827,-34.8302594502074,-32.7532363006684,-32.8181389704367,-30.4427668174091,-27.0409806505021,-36.763637272657,-33.566154573008,-29.1153036202785,-28.7905371140418,-31.9061610499418,-37.073086885006,-32.2063025885633,-24.335026799906,-25.7541146105403,-30.3941821884995,-25.8810521752831,-25.6156708516923,-36.2897095583417,-34.9163613820882,-28.3731685616134,-46.2301867539299,-16.7926311148581,-47.8791715409062,-28.0396361754634,-491.348847279516,-29.5738279517497,30.1378589920908,26.5821564287786,24.3060538711167,39.0690987010739,47.9705176341014,20.6263416017756,24.2817533503944,36.1852661295108,27.3518321194925,28.8504105933116,25.5557234700461,26.8585335471848,28.4750915806351,22.8852393758074,8.19987205836006,15.054639899882,8.71971302513574,15.2734772309631,-4.80972585740994,-2.75556037202408,-4.40541327334214,-3.28276126994352,-0.659371082677105,-2.09291125745363,-1.11629487933055,-1.86193246463873,-0.45181940479277,-2.91587979542543,2.13538544046954,0.737153316562725,0.52278221092603,1.86342062787324,1.22504797745917,0.841177349624075,3.94308353885626,0.155492000436688,1.41740649793753,-1.2566908022003,1.61692852679624,3.32771381018529,0.126958923449047,0.248771879575525,-0.375217180811483,-1.43614318044831,-0.676455524674939,-0.938807420675269,-2.53382839699148,-2.5043546450686,-45.0268944464927,-39.4497970573704,-19.945018323459,-20.7033961837441,-21.8465789037519,-20.1125727251624,-22.3595660934634,-27.190865658829,-17.7672073585669,-16.3542973662612,-18.0486423406773,-15.859316791136,-18.9274115158519,-20.9369113061916,-14.1796818703191,-7.56104764827436,-9.04465071885759,-9.74749967295048,-8.64469852774715,-9.06060883833226,-8.05337138565322,-10.7535279302523,-10.5561834229131,-12.2553251188959,-12.5400015325375,-10.9384274079163,-11.4856367494139,-8.67927118171593,-12.8633217961181,-22.9671847396322,-21.5612007679438,-52.9863315861375,-28.0346910040106,-31.944078320729,-95.3053042146862,-41.4294817614791,-44.1974418153615,-36.1791705766271,-48.1800966775278,-32.6481248564245,18.4481791716469,15.9068728638069,16.8089448057382,18.6565234193033,14.6882792754612,19.4529230686206,22.2438964066771,18.0656553376879,18.4037424482215,15.8246661126355,15.7787921477215,13.7038097258143,11.4558848049327,32.0881023504935,31.7196529970754,24.9211979329652,23.6002909340022,11.2400334426641,8.40033064859784,10.5073578624674,-5.71717175231027,-3.47989338320297,-28.2404605170065,-27.9569243072104,-31.8733498475557,-36.7677013166122,-26.0897007619945,-22.481037869537,-24.4253364356546,-6.14121038772163,-5.77611081614696,-23.6396175135136,22.3322741424306,20.3274779689942,20.8687397795326,14.6223081210794,11.1062859125081,11.8417386068999,35.6620942809081,43.3522775087033,28.4412249875599,32.0685029968395,25.9033871860285,23.4045938647254,22.7407443628374,25.0147432334534,28.6587679910382,25.6113468179927,22.4625671097863,23.5943783758342,18.9833978474263,20.8552109937767,19.5119399815727,11.0218700356012,7.69376831099695,-23.6136201692869,-29.3884391413784,-30.8703596019817,-29.388385201293,-36.5157829460967,-35.7277951680534,-43.7984802812917,-22.6377205819557,-27.0107488655701,22.027836830988,15.3656677430345,18.0007668551234,13.7864717191864,12.7328423496605,12.5650129390001,13.8294961568765,12.3527541437489,98.8313699340735,9.21738621870381,9.2675299829453,-32.8192897557606,-29.4054653205925,-36.0427669565752,-26.8006247124845,-30.6910883204051,19.7663975798325,15.1744268925096,10.2306829799331,12.1595151261609,9.90064490687404,8.57867618905614,7.97104797036254,-25.4764610291438,-25.3281224608097,-24.0689459797098,-22.2639051464813,-17.7747352001424,-18.8499144534161,-16.745918986224,-20.0833566158266,-17.6093512928194,-13.9272450952182,-15.6256332676437,-14.4109855184493,-15.0196747673785,-16.6289363058212,-32.1134760624096,15.9798261185766,18.8705733106091,17.1574950820458,6.75235842118587,6.49958677207361,-20.7784942950427,-18.0416143077839,-14.4068061560055,-19.2452095676339,17.4047680779047,17.7190748140031,14.9687338709461,12.9440191250283,12.6609129628339,13.0782663807296,14.196850016303,16.3507872212881,6.45188229414241,8.68080012806825,7.30215035193107,7.26390570500953,4.96524734550937,4.64717430526443,3.94270509343702,2.94989681108934,3.87865755304909,6.14153356087935,2.24082603774803,3.38554647369655,6.81503541145238,4.95042540925548,-14.9909447184361,-18.9605002295259,-17.0135682614607,-21.1446751334843,-18.9464650531493,-18.6464264030568,-15.987877985718,-14.639207768879,-21.7081761025513,-20.3815621913826,-23.1253233311278,9.01068492177725,12.824670033899,10.8518204478146,11.2230212080093,9.12535507177755,15.9345422763926,7.01481212224075,5.03067783917258,4.77833692717417,5.47015331538024,7.11553536833663,3.89158676995499,4.89946066195966,-11.0421570233923,-24.2641970942419,10.5686775360232,9.75863885265267,9.07460750096635,10.5859104021288,12.3072086225796,12.5682621090659,12.5138896372738,14.1107593862514,16.1894369620662,14.3394212894582,10.818448421927,9.80187330001654,8.85224389828635,10.7715614022018,12.8204283072642,10.9087722653568,9.6989667764708,9.4993621323648,7.77110663413873,7.6747024417588,6.64849295653854,4.81372848426045,5.04460245340811,3.14927901725881,-13.1685379722647,18.2180827110085,8.1823516128961,12.9488475938842,14.2221274243847,10.6647329372231,8.21406778155066,8.16355775457329,-12.9906009912535,-11.2409141074786,16.5692848139513,18.6160995882931,7.42165056021747,4.90490825130836,5.92934640800668,6.34301147427753,5.81576386353445,6.31747746738921,8.48715815297434,13.2705884374991,-13.3841422880652,-11.2754384874389,-10.6639302385694,-11.3407386715842,-11.3733196406208,-10.1505068811602,-8.46716670220234,-9.36765322092409,-13.2111685588178,-6.86461998894735,-9.87744105931873,-8.15622579755104,-5.14770273122421,-8.69412625825024,-6.3570528405864,-7.95275468171701,-9.21877410658218,-4.23423887193778,-7.65282719613695,-5.79545087756612,-10.331668665359,-5.84883256015433,-9.99251697515872,-8.45375109416859,-13.3324559761345,-6.75700577992958,-11.4707540774086,-13.4242762536267,-8.67663729810854,-7.21171638659888,-5.49953014651273,-13.0565857776577,17.7381961040996,20.8336239400399,20.2958557372794,7.21213496948747,13.1873112470198,-14.853723334339,-15.1254948127681,-12.6376567501096,-10.3774131810716,-9.00229761638036,-8.95009589429585,-9.6646838834059,-6.0399514321363,-8.35651462524407,-7.50996451374983,-7.63845803756562,-6.91049429545007,-6.8140870607061,-7.79489042139225,-5.85392690657384,-4.07041100986308,-4.54109871466327,-8.15052654266263,-4.28383832824172,-11.2099853268742,9.05511738604115,7.9825602959279,7.79858105557717,10.0617796337513,6.68112356076863,8.23771385624976,6.71120233508261,7.28860577185642,8.62248359785774,3.84896244157786,5.43925912671727,4.53834480354044,5.19943448568971,5.35584854210497,4.4193287642734,16.6761667392268,12.2670597116733,-17.7511091771201,-14.7775597131932,-13.0819342859879,-17.158987364779,-9.39654214650546,-6.73175106203679,-4.15620152156103,-10.7286031121177,-7.60072957973639,-4.54543802531873,-9.23183463282989,-6.34014193922692,-11.1731118564605,-9.93891420137029,-5.44026489221147,-5.88404408119885,-10.3568668329545,-12.2503812775169,-5.22058557664679,-6.95530995145709,-14.1366410669194,-3.82314663861588,-8.4242465282627,-12.352396248426,-13.9231734251067,-3.36930150412637,7.26293659861688,5.89765027563402,4.37904771654543,1.85820964982235,3.60746130955199,-1.32821386182941,15.0394937854127,16.645631443652,16.3200549111296,20.4698263178487,19.21591234133,17.9050383400898,18.7770763642123,19.1816766694968,24.0177912588398,23.3849229390744,23.8158545192369,21.2020791539947,26.7032548302824,21.5547597693465,22.4686315040494,24.0832478381049,25.5760369004617,20.2633176302316,19.508967631747,14.6245506651493,16.4033322595298,11.4251576774051,10.6054540181489,-19.2423264681184,-21.0299107685376,-21.9375554161706,-21.0808738259683,-4.7819987039437,-2.81967168619952,-5.67332983738606,-3.24926817168406,-1.95947451369805,-4.92646943656043,-3.65829813101101,-1.47285017382683,-2.08821126187631,-1.04287148320286,-3.25960501710755,-11.3493299349957,-12.4376660112004,-18.0723141044176,-13.9095840856519,-4.19872559683965,-2.62043595704882,-1.87765503586403,-0.914060412416969,-1.86177853971042,-1.03677132872065,-2.27916417551992,2.11587944473684,3.82391646960416,2.59135119856537,0.70318917121622,4.12003112179773,2.54399224855089,-3.01318508538881,18.1255215977501,17.3862065115197,24.772073369069,12.1276326248403,13.8029699134853,10.2052517819459,13.2708873435658,13.5563936085751,12.7505622480579,10.8853879004917,10.6144029337014,8.38167196175092,9.34908802264951,7.48938373630405,7.62774002200661,8.96155390627267,-20.1055588526811,-3.10684179654362,-6.60449297675859,-1.52358856228276,-15.9588849852812,-14.5914037392007,-18.3660690033853,-16.6973998325572,-16.681073252634,-16.8199899407784,-3.1997013578158,-2.12002286732728,-0.695838303446098,4.02951505706104,2.51136453957725,3.86777016653585,1.67814217596209,2.1714649634459,2.00803134837013,-0.0329819232836003,0.83839598024271,-0.612882887134119,1.47912286974346,-2.01162523430752,23.2083639508666,10.3754499529311,-18.2962641138645,-1.44128257910675,4.78386218129696,0,-0.273683857936354,-1.34963176417631,1.35527299731364,1.40656496010596,0.58215174943648,-2.44184391632622,1.73162388733239,0.0988120623475998,24.3634665180057,33.8793650335689,26.4241210019953,34.0209018004173,25.1774725790613,34.0213680271409,32.3127092674885,33.5727648090785,30.1506810618516,31.8652941516525,26.007305579913,20.3391421721885,-17.8514843758092,6.16704676116012,5.38467200068672,5.56308342197965,5.45375901852209,6.94925532274572,2.51706509590037,9.08524224602085,4.15373842972845,7.41127236186805,2.05162032054801,6.7800548953268,5.32029329028779,2.51502565046931,1.23561009967546,3.40158787640567,2.73836896470789,4.15986499972991,4.19511100866124,3.14765554586302,-1.57203140452721,1.73962501143266,0.024741105350035,-0.594521149227243,1.32256026322793,-1.958070178928,-4.18316749761034,-1.36626397631718,-2.4766713156127,-3.55508995423045,-3.69338082368721,-5.10991005506202,57.5949255676063,41.4901100794542,48.264373324564,18.4223142927555,21.5347439833606,21.6073099269897,-15.2371904698047,-22.8120090823977,6.71966737108063,-0.144924545066643,0.820093934308189,-0.0282569472541412,1.38692952455473,2.73515734271616,2.4274944699751,4.01633292887204,1.1184189467959,1.61939772524854,0.567252845079549,-3.24438233134772,-5.01038252198919,-3.06361922464121,-5.15991343794123,-6.05021917962825,-7.70355967914686,15.4031458152333,-12.8167698550616,-20.7754226913583,4.44022340117513,4.01465722114159,-7.15851111283814,-7.17162923889352,-15.4967840376516,-20.0360473034319,-22.8840291623373,-19.877651468471,-16.9241235950053,-25.7117453026282,-14.9265411411085,-16.4573339851776,-25.5462211875279,-22.9884688132714,-13.0806512907962,-26.5660932517467,-26.0232153219974,-12.3110462218533,-12.7892747969113,-10.2018739639711,-14.5460051634982,-24.5275993861183,2.21333580372841,7.18799723946911,-18.2407701411971,-22.1325051480471,-15.6825850648482,-22.1206293815449,-24.7588665907768,-20.7636130553644,-27.8988865343927,-20.8609355830052,-17.9522265274841,-35.0187567527398,-31.245072744999,-35.5088344545725,-28.4549133987496,-0.167553503949664,5.80904577623822,2.85966666290374,-20.9475757758838,-17.0420605716071,-83.6086493103703,-49.5188938790839,0.777253798697087,1.45797296916468,-0.626401005349121,2.93050059229051,-0.745114072376236,-0.292737675416761,1.35036877654606,-2.4489321298312,1.42635070628248,1.75201339436864,4.7694554259636,0.209427077639021,3.24425892585738,-1.37476705852926,3.20919588720808,-2.79262396487413,0.165854708911638,2.71558499510633,1.12621545515596,-1.23372291191425,-2.48489710281683,-1.69953484142544,-4.01416710367506,6.74271138681132,9.91976332937551,8.17596330024733,9.8087723032708,7.96247967171578,10.339174840355,8.9477030955435,8.47868010474845,7.39496450604213,9.57672324477211,12.4113934103377,10.7691031542858,12.1761263926359,10.0709031927759,6.73327377137951,8.76758178169197,7.95815058342724,5.75506337200968,9.00436144838929,11.6316551868489,9.9238499910863,8.19520710096504,-14.2611660311615,-29.6204309725463,-28.1432514507128,-56.9643339072275,-30.7148657342524,-25.8950243694845,-32.2839025018424,-26.728592303955,-28.4380240147835,-27.6397700379948,-28.7508954208855,-34.0917069277805,1.86699933942018,-4.02280292508952,-5.20502675556217,8.28005394343037,10.4670522230484,5.08135167183343,4.30770685068324,5.14458154451488,-14.8872774372385,-20.891401982626,-15.2703092469145,-18.8848774936082,-20.7144984569792,-10.6446834141272,-24.4613353312471,-35.4421477873557,2.21379231725529,-4.09297909497603,-5.65554920180276,-3.43624841032785,12.741544612564,13.1992426798219,-11.7922178259616,-19.1682076904632,5.21027449743733,-1.32207991051838,-5.41043372354957,-3.32146317350822,-8.49502744801625,-7.23880386351163,-6.9206519638322,-8.62885217038837,-9.50957303899368,-9.00524897543341,-4.45756958999695,11.7204752332015,15.8569451343723,11.6662649565935,-12.928537862188,-13.7292510634892,3.92712287606654,5.47397601954981,3.9241084279234,5.8979675709064,5.48321188695815,4.63060366224865,7.73989989868304,4.41106979753002,6.15581188410698,0.939352640561811,2.894085498993,0.120410584351626,0.375793439340542,1.03904564216378,-1.15434259717743,-4.40916869362594,-3.63015985442914,-3.26829004682368,-3.7478961952445,-6.11915677387996,-10.8399643893944,-10.583821954161,14.5499330778536,14.4169588243271,14.8164112230951,11.6185089803285,9.81456756144015,13.5160529672878,10.4350412304208,13.5358835967995,12.202298968598,14.1728705228468,15.566732279785,11.5346115611513,15.7769311136317,17.7876233630865,14.9547721402522,16.0309903332837,16.2072435241554,15.1805086047691,15.9984455327783,18.3146822622524,21.9139149881292,21.4158462167605,17.7479375968716,10.9250126192227,3.2168365132373,-9.38325320008132,-6.84976507572099,18.4384529067567,13.9018156592924,15.8230899686556,12.0139906992906,13.2323105239364,25.0074157014567,17.2924249484459,4.19141308718879,-8.08717835351846,-8.52559959502131,-11.3118207959091,-9.64919140258045,-15.0496549396239,-10.4797419192242,-8.40112410673264,-23.7427583606165,-4.58337566970425,-6.32862257966241,-4.94272125787217,16.7504375653329,17.9387885415044,17.3942559450941,20.7009809453735,12.4745804944966,25.0620807304628,21.2840751701673,21.825446393896,21.9379680332032,21.3400301169921,28.7566207282032,30.8096267128681,21.1392221049717,31.7357345441776,-8.11577772962064,-5.85849912757394,20.2323840040609,21.6347695933807,18.9382045612806,17.5255941781375,13.4667124134509,14.7745689906926,9.7714977697442,17.9678515051639,22.0623791254591,11.9170162324611,13.0066266103332,11.2277140266032,10.8959344146283,10.611597633054,7.64587130664215,61.7279522251445,12.6775280391598,27.4306896908431,24.7065077904954,18.6409680171727,24.5988552103295,24.7885565575681,10.7358424516172,35.0788431109676,41.2179257718501,23.7755368221233,31.9866468031946,21.9207823908859,23.2764450817681,25.3237994239093,30.3359417041649,28.5497220162215,28.951422486136,23.8086672029074,26.4534776145546,31.2548146431354,28.0924381301685,29.156450370349,44.1100652392686,63.427405359841,56.7905899871546,30.951848972916,31.3692791033365,17.0783538613815,38.1466378927653,11.9447966538902,29.1627559829332,35.2711950814715,405.672552037757,413.629246770251,365.236038458067,387.804921364533,346.613105239223,312.452652821855,312.245596489616,264.570457425376,302.346495928564,212.882643203008,220.6230494956,135.439696941878,111.365406474958,63.5320993699927,103.174453630445,-13.3692920030793,-92.74970367973,-170.383675074072,-232.87428377597,-310.152171161801,-293.667688379714,-357.82116175204,-219.741975008438,-340.617667040177,-328.743069311384,-299.252640716314,-386.17605807178,-409.587118155024,50.8388439316873,35.2088669310352,60.708498900204,59.7105323472983,46.1373156585888,36.3980633304116,50.9016315525853,34.2284562467558,33.9637640318578,33.4101867021783,29.5536142481998,31.6158328496396,33.5304829135629,32.3973819578659,34.3771570732312,28.3150439427141,34.1468170585204,35.7886150682524,28.1576637192899,27.4218504950489,29.6975774530216,27.4187151108571,25.7046569991922,3.61550792004702,36.2775441235576,2.40959801592266,16.7857711512133,-0.766051260659475,-1.25307863776768,-30.7978134912312,-369.079204418282,-1.26943306492137,-3.54765320954955,6.01842249909807,0.588111564399583,7.99235665448084,8.44407408596707,11.7692858132486,19.6677909441426,7.77986957822927,7.07442753544248,5.2296360457867,25.7178052454437,-2.97376904691333,-0.214474645071821,-1.77859928929866,-1.95052366141373,-8.5465094626317,-5.46790365811128,-3.20642743953619,-3.46060959959597,-4.80243311435318,-6.66163520743655,-1.60517692141122,-4.36589429221053,-6.33210014899842,-2.34991991447961,0.818254327982241,-1.03513876999664,-0.730428832461194,-1.14239822858931,0.349507270117997,1.46280805784582,2.49945331555967,1.80807664373209,2.54618137968015,3.06634300208192,0.148053573156337,3.63173147753742,3.44879828232293,6.28603793557813,7.92241791611502,6.22144669662171,5.42096417261822,4.4530189729108,-6.66410962450926,-17.1482436922009,-33.3071867153461,-47.7394421537717,61.0344311952744,24.6693924855948,-1.95207688831731,-9.36077864028509,-16.5851596272018,-40.1099074339766,-37.7665025259694,-85.841969752779,-42.6008993993486,-34.3880301409314,21.4806875711362,-59.3344786748208,-38.4990220397554,-102.663312879281,14.9492985316936,-16.1820513826961,-23.8806467877133,-25.8097203362446,-25.8465482141294,-24.992799180302,-29.1335817548551,-32.6619717354311,-33.1981707201525,2.82344666033716,2.04233340793881,3.43199734040917,1.63782994793958,0.90472529295941,11.0562168667043,-5.93943407172595,6.84985272346956,-8.69218886021535,22.5961347960545,-4.14438006569724,3.77047278948601,14.5703879812389,15.9264806050313,0.0909102933896718,-0.626771911748621,0.699415509356337,28.4552512567317,29.3324933025942,40.0077263809527,9.44094372443718,5.90163046397822,94.2131912731227,0.643543840820925,-28.5590894340022,-41.4464696859811,-33.3062084593484,-62.0381543025891,-10.6650289400829,-1.40046924922477,-11.8895189832938,-19.5481208982229,-24.7539247972453,-21.455969510709,-24.398188163618,-20.6959341754719,-20.6526643210173,-21.5078246233991,-18.7097577330349,3.74091622850805,7.53222023067436,6.80094633042551,2.4167874340698,1.16625656863525,-6.57289332371041,-2.4432778246472,-2.11404390113561,15.3657327962688,-5.47069361511466,-6.11636525075211,-7.09783233208957,-12.6234382398347,-4.72379975636311,-1.62373339250837,20.1626923977417,3.76012605946875,27.2190360670845,7.53127674636479,36.294169487424,27.0149671190409,55.9254475964728,22.7779934216472,40.9241882568618,31.7880278566051,57.3070234803359,81.8974810097525,41.0575007415272,36.8592275532633,38.7698085030872,33.8577577227764,57.1616416369669,95.2315640551633,53.1869474780804,32.7082831170298,36.3400771910844,36.9756547243164,36.1924676424415,33.5557426480322,38.5106944950318,26.1736788565325,23.9993940161875,30.1078074265545,25.6000261050376,10.3938409546302,-4.58406064379503,25.6377546843113,0.130669833935704,30.2867374240663,32.1607384121076,-10.4725913820791,2.76016432677448e-18,8.55714833758418e-19,3.99749449553698e-18,-2.88269448061672e-18,6.34890502646507e-18,-1.35002398490172e-18,7.4847990958317e-18,4.07019966934331e-18,7.56875480693048e-18,7.29779180022276e-18,7.67429065075618e-18,1.8159375193609e-18,1.31763478275545e-17,1.31769351452723e-17,8.29755102204193e-18,3.32925861774365e-18,1.07039710894104e-17,4.44287067196694e-18,1.71359239607376e-17,1.64480559786644e-17,1.10499836164011e-17,1.78272373015529e-17,1.10701590748362e-17,6.66967315355952e-18,2.33878206229076e-17,2.25448098372852e-17,1.07120282524596e-17,8.834927085729e-18,1.27058614510047e-17,9.22742226954002e-18,2.31391860757128e-17,2.2646654631587e-17,1.47670491324548e-17,2.40276047799005e-17,1.23767788761929e-17,1.09162936934918e-17,2.54301653931895e-17,1.57124329067915e-17,2.4802020594947e-17,1.10500384908581e-17,1.18798432033551e-17,2.49458868307414e-17,1.53771878799819e-17,2.24907112313917e-17,2.23450532643986e-17,1.49501240548023e-17,2.4695096947096e-17,9.83962899328604e-18,1.20673674425433e-17,2.33343444845968e-17,1.366573583335e-17,2.29323120812838e-17,8.43153877072186e-18,1.19167030937987e-17,2.0178081774329e-17,1.25609219147581e-17,1.94527821607535e-17,5.90859222645857e-18,1.10288518217657e-17,1.69031221480237e-17,1.03771090662449e-17,1.65483104453827e-17,3.89248409559558e-18,9.56022926541691e-18,1.27608383127265e-17,7.68667512762185e-18,1.32868197447847e-17,1.72536786312908e-18,7.71654875174332e-18,8.49787129050327e-18,4.99590941079165e-18,8.49599685822481e-18,-4.03323985665376e-19,6.05969605421216e-18,3.13823618299323e-18,2.03136751915616e-18,3.86495163458813e-18,-2.7712463026329e-18,3.67162252825168e-18,-1.94559097515483e-18,-1.05637089708468e-18,-1.03620776734857e-18,-4.77238871469864e-18,1.37884236177374e-18,-6.93701281434309e-18,-4.04948292851514e-18,-5.85923089676837e-18,-6.9215011511166e-18,-1.11719693969151e-18,-1.16212989373599e-17,-6.81624626033246e-18,-1.07484475937018e-17,-9.24538100084965e-18,-3.65323312748197e-18,-1.56850606263723e-17,-9.55312121906182e-18,-1.46073679152677e-17,-9.9519521588462e-18,-5.79361408316846e-18,-1.95060940521326e-17,-1.15858576593754e-17,-1.8761408442264e-17,-1.03469001078453e-17,-7.36505788047541e-18,-2.30165268929017e-17,-1.32334806817797e-17,-2.1448487527945e-17,-1.14522686801429e-17,-9.38579278212022e-18,-2.42763320845074e-17,-1.43219176158298e-17,-2.39594335435421e-17,-1.2034996053202e-17,-1.08055294342416e-17,-2.50658798301657e-17,-1.53307493250035e-17,-2.28644071710314e-17,-2.33745473309846e-17,-1.82113362594454e-17,-2.54594250106901e-17,-1.07561150497677e-17,-1.37649310928256e-17,-1.16165021487453e-17,-8.76396021987673e-18,-2.02208437274282e-17,-2.40664353777976e-17,-9.76318313673784e-18,-1.21057957406246e-17,-2.17587542062471e-17,-2.15455244467741e-17,-1.34256014883084e-17,-2.22989958369273e-17,-8.06047318120738e-18,-1.15648436766086e-17,-1.8733995673109e-17,-1.88749924268707e-17,-1.10689878334465e-17,-1.91320014222742e-17,-5.46767678538379e-18,-9.34162310031798e-18,-1.79462272730707e-17,-1.63113064923413e-17,-3.33112361969911e-18,-1.04040996951694e-17,-2.05453417448065e-18,-7.79869176483898e-18,-1.21603658849154e-17,-1.07384511571397e-17,-7.50588904453188e-19,-8.16548706841662e-18,9.03715298358608e-19,-5.66045787971773e-18,-6.09435269823667e-18,-2.22476371955136e-18,-2.34791568475599e-18,-4.28047166915315e-18,390.853092191153,366.179826694934,19.1184695941002,379.04958230853,381.41148209068,271.512811950231,306.812232018685,9.01870982199752,426.225154624274,20.340264720954,434.721746526079,16.9120272535974,389.064594958414,416.430503169568,279.396561263384,341.212662427373,28.0376682698932,434.501878465109,442.10946172468,567.168721888312,23.0156081574688,356.630415534726,252.151053072878,325.611094108309,290.663536916734,386.019246871185,460.841515186575,17.7144535189927,327.989489624124,301.508498391592,241.598973945612,235.204320816205,22.1940525187606,372.25871726299,338.05625173279,727.096981533064,667.665819769136,15.6639769878757,195.98905133284,76.0529808763523,160.275231620006,177.939107701158,473.125509769025,228.980231364323,158.736814010102,9.32340747826593,77.3090276030017,162.708823907008,15.567250108327,77.0577121386055,9.40088985682396,236.602319608963,123.497590244913,494.127090010319,5.33429344814689,82.9299327826282,-67.3170368987624,-2.90094171985682,35.1369876143879,106.000622237704,18.5870578667811,-37.1075491033411,1.69512774435252,-8.08221577899689,-120.689846088703,-119.309174986436,-2.46959908406066,177.922616119154,-169.065993585222,-2.60007403987522,-266.736685620016,-92.6283901840628,-133.584554620034,-228.001531165538,-121.969949117625,-235.971927929039,-208.853883701202,-55.6187117214434,-6.00104337595781,-187.474873853997,-245.750379971281,-289.10816369783,-195.649556266015,-411.189118749776,-314.222021778888,-95.6306766690426,-303.308439369883,-10.3226496995557,-450.387528708114,-251.310416160556,-479.496605060088,-261.69744558006,-15.290148079302,-237.480001284363,-405.016952764155,-258.262587790192,-15.9155162079899,-271.582550758846,-367.286361193981,-337.557221503928,-25.4476422508917,-334.173049141974,-432.239766372519,-457.103918877433,-15.0026742392415,-511.133473323932,-366.443402693739,-351.908397810893,-321.305478491501,-348.599955508473,-414.38364637073,-440.859321263367,-19.5507861779773,-406.059295685541,-533.467566107307,-514.42083043404,-453.808618474413,-26.9577942920296,-418.890883634971,9.70637001665634,10.6027685907043,18.7901537450605,12.67729410283,6.44968776437816,6.03794050137881,9.79066198090496,6.95402460390388,3.8016205910675,91.4584948815627,436.94597858776,4.77919163507979,2.64327291185352,9.02312416948576,7.01401063099971,2.03660794419165,50.0524144817386,251.906235633388,2.44565852286424,-0.073576123507081,3.93510169578069,-2.46821359115613,-5.79676421662906,-19.2567843916645,-90.4254113698143,-1.54904068088566,-10.3784796279424,-38.824720178462,-215.66425275125,-3.23440501219873,-8.72218923224735,-8.17506556548297,-72.9522869088627,-323.606917569573,-4.11962666504469,-10.6908900318064,-7.16181533807306,-6.51478075294763,-19.7098543522774,-6.52320179800198,-11.5436798840824,-8.83444363284443,-9.699656387015,-11.1756407869011,-103.286640805022,44.9505133016195,27.1749127156459,28.5707724270407,18.455966659946,-14.7451597525217,-1.08292023899088,-16.7733668632386,-8.15801411076713,-27.5605597351075,-15.3565517859166,-28.1468724350272,-25.533798438726,47.8718720601378,40.5810454058029,31.1825642111245,19.5364667238362,-5.40571408355695,-16.1161592116547,-26.3608559430322,-35.6521597273658,-52.3193889190294,-17.2393249416605,39.8060330869963,24.28324892817,-4.67718373034606,-0.104178746054626,-5.52553086851885,-15.6402546981061,-17.2114398227212,-27.2894383009878,-26.5874778182604,41.7165242045113,25.6538367139168,-4.2215923783501,-8.17039896862604,-10.058162986373,-19.7847512105784,-27.143197850691,50.2141556892812,39.0140676439695,30.9297549685546,22.1781085650484,-11.1845027171891,-20.9807453321915,-19.0452407103854,-34.5723916206054,-29.2187805104023,46.3145238732895,28.4695543972224,-21.2178931592714,40.6076350704975,44.2706740884669,62.1489035271777,29.3471541436183,40.5449429870968,27.4023680308643,-22.4407048029922,-26.1957120718261,-22.5630181552675,-46.2836711353622,-119.828856872248,-44.3686908162329,-0.221231711863542,6.16716075751129,0.71990490991288,2.57207191048231,-0.375648119701391,1.35649585180762,6.89240347195997,5.01017947438948,6.94916270194747,-95.5488828614534,-0.41715686106413,17.3256357252069,8.17146807175391,-18.0118481570101,-32.6118205177178,-7.4169676036633,-4.33381889869303,53.1815101086184,28.8579885328361,-11.5690653993386,-43.874778087647,-30.778581988563,29.3175545689992,-15.2925852292168,16.4166750626193,-21.7605266281674,-18.1797912069349,-15.6198090981289,-18.4236691503703,-11.9954125154666,-12.9765800187146,-13.937532290542,-14.9655384460005,-9.95604829592416,-13.2210275164195,-17.8010573774534,-17.5840231633645,-26.6557746187994,-19.895436015061,-29.1687463198709,-23.4039352310853,-19.6276493367291,-24.3137808231444,-23.5084887417715,-58.5564251767658,-44.4312442260663,-73.6605698771502,36.4624888138838,29.4976704350952,14.9146942345068,20.314694932481,-13.8972427568463,-13.864665616072,-10.2396872205669,-7.0220077043991,-12.4521921918692,-11.1930212222572,-10.3139879302614,-7.58425665761503,-8.40808955600367,-31.9644943194182,-54.6314189238599,-42.9164816632394,-46.5388757010127,-42.7681361091259,-35.8790258373339,-63.452911158245,-38.8152906761792,-39.0778580255142,-37.3195240293702,-36.9396783493411,-29.4304960389542,-34.0101750338896,-35.3122977288641,-27.514498451341,-36.9288666313975,-31.1510764835826,-59.6361410344687,-103.835804731172,31.2351780313875,31.2885971066549,34.6236899925025,17.903799000238,22.8070060733336,21.30840195309,21.1104635561911,25.2088058659742,19.0745389268268,25.6457394850636,15.5656030141637,-4.15582666194986,-30.9338725548627,-34.2673772159008,-48.3114468743,-30.8727041278605,-34.106461727631,-52.2041421041533,-27.8858199752993,-76.5402496057673,-28.7078839765323,-25.6922710924073,-33.0112851903275,-24.3605593596233,-24.0675287355309,-19.7207813825705,-20.804513613534,-24.3334270913617,-19.3469471800939,-24.8831424803065,-21.3795828316615,-27.6582744500088,-17.4197508510524,-20.6391143841344,-18.7785813711011,-14.7687303616617,-15.6374042042363,-20.0441921304872,-16.82389499493,-18.0909717577953,-13.9383129604221,-16.1438508549735,-18.1862301209525,-14.1969876333183,-11.5876431606302,-12.9662190071029,-22.1617095449434,-18.9141083577021,-14.4715545892121,-15.5071167452537,-12.730000670181,-13.4598422417386,-8.67075701362018,-17.0430461573621,-15.165571209387,-9.93733652818945,-8.19834159857955,-10.2680165313992,-9.13769665778529,-5.79641280417698,-6.61619887665143,-5.03173363462314,-6.33580298048163,-6.58464322557664,-8.35272832714948,-6.30874722755621,-3.06258927852208,-46.5600259645938,-44.0820471166687,-41.4533146930334,-41.535457134459,-38.5291267532834,-34.2237411357917,-46.5289784232065,-42.4821643814633,-36.849056144415,-36.4380235349592,-40.3812350788326,-46.9206255888358,-40.7611017136504,-30.799018293631,-32.5950513039651,-38.4676368323196,-32.7557066593427,-32.4198334216731,-45.9291636597763,-44.1910198742053,-35.9097914607919,-58.5100801104425,-21.2531737547423,-60.5970764814594,-35.4876645345709,-621.863384838137,-37.4293760014332,38.1432277868649,33.6430417301729,30.7623494306321,49.4468280435467,60.7126863806595,26.1052135897472,30.7315940840929,45.7969774451622,34.6171625262326,36.51380090716,32.3439625167772,33.9928315206558,36.0387877817413,28.9641310850063,10.3779630738619,19.0535286232882,11.0358867974374,19.3304946204377,-6.08730928828445,-3.48750609584298,-5.57560117407365,-4.15474473227226,-0.834516526513211,-2.64884081021475,-1.41281070665273,-2.3565082755584,-0.57183393419085,-3.69041036608531,2.70259719809426,0.932959666274699,0.661646235703257,2.35839173215207,1.55045134647176,1.06461508311797,4.99046510386495,0.196794563052683,1.79390509895219,-1.59049929653475,2.04642516672649,4.21163779101576,0.1606823874902,0.314851910087773,-0.474884244464534,-1.81761871275489,-0.85613902341672,-1.18817814179214,-3.20687656494234,-3.16957384766494,-56.9871632838424,-49.9286494007344,-25.2429138156278,-26.2027357950511,-27.649576425061,-25.4549748552837,-28.2988258370396,-34.4134393494554,-22.4866218131862,-20.6984076041743,-22.8428129624197,-20.0719478137815,-23.9550051997501,-26.4982783718988,-17.9461598671226,-9.56945092984724,-11.4471360660541,-12.3366792735779,-10.94094657418,-11.4673330610143,-10.1925481599674,-13.6099337867256,-13.3601696446244,-15.5106458536026,-15.8709394396177,-13.843947188144,-14.536509010977,-10.9847025893592,-16.280141648212,-29.067843186097,-27.2883947219288,-67.0608259137053,-35.4814058019509,-40.4292241246726,-120.620775646712,-52.434187854372,-55.9373872975669,-45.7892627610437,-60.9779348574962,-41.3202830214123,23.3484767641156,20.1321359682556,21.2738207697623,23.6121624525558,18.5898534580055,24.620105758723,28.1524313897007,22.8643450367613,23.2922365360303,20.0280930488043,19.9700338119601,17.3438841842338,14.498854206243,40.6115045373433,40.1451858244235,31.5408911339091,29.8691182133465,14.2256673258717,10.6316684771316,13.2983747946853,-7.23579549901768,-4.40424006311626,-35.7418328418363,-35.3829823263132,-40.3397084008126,-46.5341219788373,-33.0197775268992,-28.4525635536327,-30.9133164263753,-7.77246939696019,-7.310390251686,-29.9188909155407,28.2642844615137,25.7269643045083,26.411998783471,18.5063587157411,14.0563931080181,14.9872004243577,45.1348380742744,54.8677262219526,35.9959253748804,40.5866991053751,32.7839744073173,29.6214391100431,28.781254584216,31.6592844048395,36.2712532386577,32.414360816522,28.4291864983233,29.8616351319152,24.0258629006489,26.3948764139986,24.694799039178,13.9495542638078,9.73742551860552,-29.8859880267538,-37.194743288307,-39.0702988712581,-37.1946750203864,-46.2152877911536,-45.2179907595676,-55.4324516060098,-28.6508651115377,-34.1854790329872,27.8789809892192,19.447173237278,22.7822205510155,17.4485032695953,16.1150035987891,15.902594500922,17.5029560735468,15.6339544631822,125.083452572812,11.665754433047,11.7292176346651,-41.5369135971345,-37.2162920463749,-45.6166269294154,-33.9195406517382,-38.8434086555127,25.0168469369755,19.2051340358324,12.9482081464778,15.3893863315474,12.5305037102625,10.8573870517742,10.0883575874901,-32.2436459900101,-32.0559049894623,-30.4622597555702,-28.1777549510154,-22.4961492376802,-23.8569229801047,-21.1940537169397,-25.4179982169055,-22.2868352299746,-17.6266695736355,-19.7761921043616,-18.2389035467873,-19.0092758774634,-21.0459975120549,-40.6436181414871,20.2244674313235,23.8830693462397,21.7149547132142,8.54595362681336,8.22603950840567,-26.2977818421634,-22.833918108289,-18.2336140411945,-24.3572183590367,22.0279095985982,22.4257040614727,18.9448038054162,16.3822742051139,16.0239679685867,16.5521808881109,17.9678883018835,20.6939650769427,8.16566352852398,10.9866376620864,9.24178403916276,9.19338065790268,6.28414117166029,5.8815799801003,4.98998613388123,3.73346315153494,4.90892596557776,7.77287841298793,2.83604545402485,4.2848322557722,8.62527919261942,6.26538215858897,-18.9729144092707,-23.9968831029937,-21.5327973309112,-26.7612294658161,-23.9791198328921,-23.5993834163688,-20.2346580756743,-18.5277473324875,-27.4744103797915,-25.7954146484686,-29.2679873409586,11.4041481041243,16.2312230116534,13.7343352542654,14.2041362163868,11.5492775127185,20.1671550685594,8.87812159221095,6.3669516402028,6.0475826734548,6.92316278977812,9.00559945055104,4.92528950572428,6.2008799002927,-13.9752299827309,-30.7093744473999,13.3759825065293,12.3507772978885,11.4850501184105,13.3977928526942,15.5763109129523,15.9067067317866,15.8378915721746,17.8589298482244,20.489756155115,18.1483300694705,13.6920987840013,12.4054958953334,11.2036211837687,13.6327573996617,16.2258545763813,13.8064148983422,12.2752548264709,12.0226301987742,9.83530683383182,9.71329527785099,8.41449889811909,6.09237511289214,6.38457498009464,3.98580625621818,-16.6664308711475,23.0572609311201,10.3557887600716,16.3883852360097,17.9998800214869,13.497552623673,10.3959295360251,10.3320027831318,-16.4412293795552,-14.2267819172776,20.9705010926572,23.5610010414334,9.39302649027524,6.20777450556215,7.50432904763345,8.0278738971325,7.36057613978579,7.99555741966447,10.7415595373581,16.7955884912098,-16.9393050833325,-14.2704768356648,-13.4965367081895,-14.3531223812237,-14.3943576701607,-12.8467352714683,-10.7162578574748,-11.855936107732,-16.7203852072538,-8.68803467351149,-12.5011363407003,-10.3227232750255,-6.51506126920564,-11.003503545598,-8.04564500136717,-10.0652051440481,-11.6675109786431,-5.35895857229626,-9.68560942011083,-7.33486751691963,-13.0760181545949,-7.40242870894532,-12.6467792966853,-10.6992787285571,-16.8738895947952,-8.55183544022337,-14.5176731292203,-16.9900996334963,-10.9813690804186,-9.12732855178922,-6.96034284168017,-16.524741374848,22.449904444251,26.3675552991131,25.6869424174942,9.12785832075758,16.6901907970094,-18.7992435950228,-19.1432043724096,-15.9945343243574,-13.1339135572938,-11.3935329207314,-11.3274651162182,-12.2318655399356,-7.6443135312975,-10.5762138225745,-9.50479883771463,-9.66742345379398,-8.74609434267899,-8.62407893620617,-9.86540818957457,-7.40887624113252,-5.15161393435796,-5.7473280607457,-10.3155101555574,-5.42173288418093,-14.1876376793252,11.4603829417083,10.1029278745337,9.87007914846486,12.7344398489665,8.45579700659779,10.4258565993161,8.49386545533893,9.22464168000578,10.9128308035387,4.87134309012198,6.88406233225155,5.74384264198087,6.58053427095104,6.77849581110161,5.59321296728352,21.1057735293339,15.5254974475866,-22.4662475522926,-18.7028490120102,-16.5568230807035,-21.7168433835484,-11.892498654171,-8.51987243789031,-5.26019255072568,-13.578388313774,-9.61967337435387,-5.75282000079401,-11.6840407071753,-8.02424214183407,-14.1409696933329,-12.5789382861093,-6.88533525420515,-7.44699329026729,-13.1079095854581,-15.5043888043573,-6.60730362044359,-8.80281415731288,-17.8916863503199,-4.83866996449823,-10.6619370123325,-15.6335015019142,-17.6215163661507,-4.26427221615994,9.19215413262449,7.46421363009931,5.54223226625281,2.35179658805642,4.56569321990173,-1.68102066887785,19.0343593221629,21.067127295872,20.6550694968984,25.9071239335273,24.3201390569958,22.6610641491762,23.7647372734561,24.2768095348319,30.3975170619692,29.5965430947661,30.1419408759092,26.8338814292745,33.7963068945761,27.2802428330791,28.4368617473125,30.4803605451015,32.3696717021469,25.6457613757619,24.6910371589298,18.5091969355796,20.7604673909674,14.4599651854659,13.4225277417197,-24.3535694362123,-26.6159808164304,-27.7647185735909,-26.6804809359912,-6.05221710967874,-3.56864697784627,-7.18030807544173,-4.11235502978764,-2.47995993139909,-6.23506288064679,-4.63003357206081,-1.86407600124959,-2.6428923783122,-1.31988422092862,-4.12543759977674,-14.363995698979,-15.7414210454255,-22.8727725384035,-17.6043173584031,-5.31401208350019,-3.31648925813992,-2.37640715476541,-1.15685770946523,-2.356313464321,-1.31216371291207,-2.8845671596424,2.67790992224507,4.83964428184277,3.2796788606843,0.889973794820529,5.21441438852525,3.21974018957223,-3.81356237369521,22.9401132721525,22.0044176161421,31.3521553577279,15.3490350408134,17.4693837967548,12.9160217865253,16.7959667942004,17.1573106608528,16.1374303451983,13.7768190615598,13.4338537129658,10.608053576591,11.8324395286658,9.47875129125981,9.65385846535212,11.3419666626263,-25.4460979229246,-3.93209664875052,-8.35881142371009,-1.92829177413911,-20.1979638094965,-18.4672453574259,-23.2445560824095,-21.1326466630802,-21.111983335365,-21.2877997687977,-4.04962203098563,-2.68315394146109,-0.880670352798968,5.09985499409288,3.17844574540246,4.89514661702193,2.12389869145202,2.74826034436122,2.54141467528094,-0.0417427466558066,1.06109491249468,-0.775679904029119,1.87201488201906,-2.54596318717046,29.3730856253155,13.1314288466785,-23.1562092691098,-1.82412326418198,6.05457557320396,0,-0.346381132700698,-1.70812770153564,1.71526738722508,1.78018377763411,0.736785807880545,-3.09045870660038,2.19158648240506,0.125059016408681,30.835012311851,42.8785713706106,33.4430281431502,43.0577038411531,31.8652387328744,43.0582939093502,40.8957726666652,42.49053046149,38.1594557189059,40.3295129106852,32.9154961245774,25.7417268116761,-22.5932849131336,7.80516855709327,6.81497550086914,7.04077745594299,6.90241375781702,8.79515126785006,3.1856605119989,11.4985097176201,5.25707520012507,9.37989158298925,2.59658196819358,8.58100697689798,6.73349619552048,3.18307933887521,1.56381903240176,4.30513465607593,3.46574822095842,5.26482914028317,5.30943737033688,3.98375155023288,-1.98960224635475,2.20171290509446,0.0313129614586381,-0.752440829490729,1.67386533314785,-2.47818257020575,-5.29432136416309,-1.72917784502643,-3.13453713382233,-4.49941072332292,-4.67443510497913,-6.46722991343787,72.8935776715017,52.5109205693092,61.0845974889014,23.3157415267687,27.2549103539408,27.3467516263464,-19.2845691883465,-28.8714489949096,8.50457901652393,-0.18342012734997,1.0379313856088,-0.0357626988685224,1.75533267951458,3.46168351187515,3.07229768856224,5.08317136310367,1.41549897953856,2.04955024601768,0.717929382053804,-4.10617138811196,-6.34126537939257,-3.87739308118653,-6.53051544489437,-7.657308649217,-9.74981771892025,19.4946064224047,-16.2212243478123,-26.2938943437503,5.61965774211227,5.08105054550732,-9.05999062718577,-9.0765932554746,-19.6131172976528,-25.358122368406,-28.9625994085832,-25.1576526397836,-21.4195939249286,-32.5414276486389,-18.8914036317155,-20.8288133249904,-32.331936190465,-29.0947808417966,-16.555199289914,-33.6227117717419,-32.935631891903,-15.5811678745331,-16.1864259148408,-12.9117467356509,-18.4097877850524,-31.0427429730559,2.80125312659377,9.09730900620309,-23.0859747099526,-28.0114518279971,-19.8482717226986,-27.9964215610177,-31.3354405289519,-26.2789477731956,-35.3095282700908,-26.4021215972409,-22.7207866988471,-44.3206140151863,-39.5445451928894,-44.9408686065683,-36.0132497702925,-0.212059903436293,7.3520735605515,3.61926562023755,-26.5117755913529,-21.5688579109402,-105.817196783437,-62.6723500657156,0.983711838976001,1.84524703909904,-0.792788772394981,3.70891481211768,-0.943034997851174,-0.370496120449338,1.7090604828161,-3.09942972681761,1.80522511263876,2.21739195224781,6.03634202348518,0.265056145136886,4.10601520303825,-1.73993955845109,4.06163854474773,-3.53441470554382,0.209909865966292,3.43691225943145,1.42536643543176,-1.56143056039148,-3.14494789575256,-2.15097378367907,-5.08043024058875,8.53374409893307,12.5547004637409,10.3477035518755,12.4142274463271,10.0775133345153,13.0855181573244,11.3244367302972,10.7308295075723,9.35925195295957,12.1205403566647,15.7081697849587,13.629646179643,15.4104099656798,12.745986853357,8.52179961690219,11.0964706924539,10.0720343321501,7.28375208019975,11.3961449581177,14.7213135958556,12.5598726449686,10.3720589871589,-18.0492882581887,-37.4883579496289,-35.6188026173084,-72.0954851013347,-38.8735019449132,-32.7733902176288,-40.8593141038943,-33.8283746346931,-35.9918741437103,-34.9815839543372,-36.3878520170582,-43.1473165804722,2.36292103895366,-5.09135995206642,-6.58761198750837,10.4794432721541,13.2473629697956,6.43108570966419,5.45194148289597,6.51111101727664,-18.8417105065049,-26.440680634261,-19.3264851406262,-23.9011730778479,-26.2167871096143,-13.4721774460047,-30.9588775286096,-44.8564682933721,2.80183090152622,-5.18017666707904,-7.15780445853162,-4.34900189432118,16.1260174002763,16.7052915166496,-14.9245256859826,-24.2597628582424,6.59425366081912,-1.67325738674983,-6.84758018136743,-4.20372682897134,-10.7515191138956,-9.1616111397569,-8.75895014172513,-10.9208910281478,-12.0355533774764,-11.3972682345329,-5.64161151233989,14.8337264670206,20.0689461856899,14.7651165856887,-16.3626807318317,-17.3760833772285,4.97026489002171,6.92800089974273,4.96644972909056,7.46461520692842,6.93969004443141,5.86060776003345,9.79581080927073,5.58276021249894,7.7909494158229,1.18886818571104,3.66282695966301,0.152394645820026,0.475613571665374,1.31504214086353,-1.46096484955268,-5.58035412787033,-4.59442106576188,-4.13642959051123,-4.74343112210632,-7.74455779194182,-13.7193299303273,-13.3951496607351,18.4147590516584,18.246463512039,18.7520204542298,14.7046754282283,12.4215620699477,17.1062545367237,13.2068490572514,17.1313526771993,15.4435346321318,17.937539255478,19.7016455416028,14.5984927570821,19.9676784406901,22.5124608189063,18.9271334900067,20.2892221405622,20.5122925852592,19.2128312029109,20.2480326274225,23.1795197381632,27.7347986568511,27.1044303680875,22.4622335210406,13.8269690962037,4.07130871206596,-11.8756798313529,-8.66923392395938,23.336166960114,17.5944854437919,20.0260982415797,15.2052069787896,16.747143006857,31.6500104971561,21.8857253253768,5.30475718847331,-10.2353351036718,-10.7902119874488,-14.3165231948225,-12.2122578688909,-19.0472195329614,-13.2634233665181,-10.6326726975835,-30.0494285501553,-5.80083483196944,-8.00966295238524,-6.25563159199447,21.1997725436245,22.7037792478415,22.0146051805097,26.1996790089883,15.7881409383472,31.719195924492,26.937657637243,27.6228305922746,27.7652407920228,27.0084756168182,36.3950981091321,38.9934338084738,26.7543279766049,40.1655390324748,-10.2715311890511,-7.41466295833577,25.6066110051396,27.3815052666224,23.9686651478707,22.1808301317052,17.0438078982738,18.6990638788453,12.3670518648325,22.7405620612231,27.9226985806592,15.0824736692086,16.4615118037029,14.2100755649197,13.7901669935139,13.430303254334,9.67680587246897,78.1244395349486,16.0449964245616,34.7169666399733,31.2691739223457,23.5924751467342,31.1329261255733,31.3730168931721,13.587550602828,44.3966608123183,52.1664373049978,30.0909137904997,40.4830998602931,27.743490213465,29.4592508066127,32.0504336458852,38.3939262193337,36.1332419267804,36.6416440840159,30.1328444286796,33.4801826059207,39.5568747827182,35.5544920084945,36.901132499973,55.8268013184493,80.2753099085487,71.8755904524925,39.1734338563469,39.7017438651602,21.614791605811,48.2793385830311,15.1176332650798,36.9091130408998,44.6401062749874,513.429323672786,523.499515443599,462.251861173492,490.815603601987,438.682211318391,395.44788872766,395.18583305717,334.846985178992,382.657283909589,269.429595303807,279.226047017869,171.415866442064,140.946842569869,80.407813265147,130.580167876032,-16.9205101913973,-117.386343719658,-215.641838765623,-294.731515403962,-392.536341626655,-371.673168105576,-452.867407842425,-278.110937120054,-431.094234847725,-416.06544709722,-378.741623406585,-488.754073497097,-518.383696414953,64.3429118510417,44.5612222095914,76.8341939205707,75.5711425020494,58.3925401304015,46.0662989025521,64.4223774337407,43.3203899373003,42.98538885282,42.2847675449444,37.4037930328778,40.0137884503252,42.4370174374781,41.0029365404241,43.5085894208083,35.8362274899976,43.2170653396899,45.294965945757,35.6370431447263,34.7057795327962,37.5859964639804,34.7018113121786,32.5324565146027,4.57587721130951,45.9137667813776,3.04964748890212,21.2444916132543,-0.969533626772148,-1.58592765092472,-38.9784826998395,-467.115868091889,-1.60662622279111,-4.48999859333615,7.617065975421,0.744328698693223,10.1153263908273,10.6870312650521,14.8955023573928,24.8920479136805,9.84639743494642,8.95357234954439,6.61875812044879,32.5490972637646,-3.76367644999968,-0.271444472669024,-2.25103972551861,-2.46863150897675,-10.8166760386432,-6.92031556729709,-4.05813472816299,-4.37983402448865,-6.07807941035325,-8.43113205941188,-2.03155204116108,-5.52558496357895,-8.01406425107613,-2.97411739176326,1.03560313385252,-1.310097505777,-0.924448991083698,-1.44584775805835,0.44234513874309,1.85136644821112,3.1633706025052,2.28834700222343,3.22251080865769,3.88084036200993,0.187380303525989,4.5964101512583,4.36488532606495,7.95576676221608,10.0268101750831,7.87401847541186,6.86090778096994,5.63585213759024,-8.43426374351953,-21.7032459229418,-42.15440818661,-60.4202314758673,77.2467019815191,31.222199864581,-2.47059731177659,-11.8472354666108,-20.9905926531772,-50.7641015961267,-47.79822975943,-108.643742968361,-53.9167633023006,-43.5223506471163,27.1864952072192,-75.0951995728201,-48.7253247690655,-129.933255362839,18.9202059541747,-20.4804087812248,-30.2239435906996,-32.6654273005596,-32.7120375835076,-31.6315114625697,-36.8721894084885,-41.337807977655,-42.016434817693,3.57342467948922,2.58482821942256,4.34362163395535,2.07287852786103,1.14504294890175,13.9930244719227,-7.51709624702816,8.66934485314117,-11.0010515262101,28.5982331012565,-5.24523102064807,4.77200462419323,18.4406472887554,20.1569520157427,0.115058340071303,-0.793258200806849,0.885197754029114,36.0136773718011,37.1239368360958,50.6347787008933,11.9486944012408,7.46925105597244,119.238570205046,0.814485173538984,-36.1450975649091,-52.4556881963198,-42.1531700813628,-78.5170390392143,-13.4979272522924,-1.7724688935501,-15.0476724632312,-24.7405905118134,-31.3291860715135,-27.1552114119911,-30.878956894579,-26.1932916908316,-26.1385282812875,-27.2208405389895,-23.6795371308722,4.73459710170549,9.53296622944724,8.60744769944478,3.05874659624459,1.47604346967899,-8.31881811282099,-3.09227349681911,-2.67558681237475,19.4472555702777,-6.92384660662948,-7.74102477048315,-8.98319404530086,-15.9765390222908,-5.97855906664706,-2.05503757489341,25.5184075658919,4.75890954401513,34.4490925224038,9.53177213211793,45.9348082575211,34.1908177600362,70.7806446142859,28.8283979242723,51.7946757625908,40.2317227560158,72.5292015923002,103.651499402968,51.9633993759953,46.6499598720989,49.0680388867197,42.8512246178889,72.3452026967862,120.527448257316,67.3147304019456,41.3964208199908,45.9929101949662,46.797313010463,45.8060918599651,42.4689867889158,48.7400977202746,33.126062302799,30.3742330517373,38.1051937742331,32.4000330391882,13.1547049582039,-5.80170175230309,32.4477832723315,0.165379008574876,38.3316520523339,40.7034345528237,-13.2543734679439,3.11193455721431e-18,9.64771747994296e-19,4.50695675698148e-18,-3.25008061480358e-18,7.15804372974295e-18,-1.52207832371825e-18,8.43870226644957e-18,4.58892787031755e-18,8.5333577462373e-18,8.22786175234991e-18,8.65234364727231e-18,2.04737039219873e-18,1.48556126693948e-17,1.48562748380506e-17,9.355035682211e-18,3.75355729438296e-18,1.20681429034644e-17,5.00909407574468e-18,1.93198185433882e-17,1.85442849552426e-17,1.24582531333252e-17,2.00992365853785e-17,1.24809998610119e-17,7.51969227721354e-18,2.63684906396162e-17,2.54180420121795e-17,1.20772269148338e-17,9.96089785012105e-18,1.43251649711612e-17,1.040341473732e-17,2.60881687645643e-17,2.55328664564294e-17,1.66490415290127e-17,2.70898123406438e-17,1.39541423379071e-17,1.23075250455019e-17,2.86711228440594e-17,1.77149101110569e-17,2.79629238844455e-17,1.24583150012789e-17,1.33938745023962e-17,2.81251252093601e-17,1.73369396496814e-17,2.5357048788137e-17,2.51928273841348e-17,1.68554485069908e-17,2.78423733101542e-17,1.10936443882518e-17,1.36052978421533e-17,2.63081992137828e-17,1.54073709224626e-17,2.58549296323838e-17,9.50609955232763e-18,1.34354320161042e-17,2.27496853584838e-17,1.41617535585953e-17,2.19319496498068e-17,6.66161509140704e-18,1.24344281887942e-17,1.90573472119029e-17,1.16996238209363e-17,1.86573163919832e-17,4.38856326523368e-18,1.07786364519496e-17,1.43871483806922e-17,8.666306468673e-18,1.49801637236547e-17,1.94525805043385e-18,8.69998734859418e-18,9.58088584623503e-18,5.63261505459814e-18,9.57877252619609e-18,-4.54725769973347e-19,6.83197640604053e-18,3.53818993015153e-18,2.29025595322146e-18,4.35752191888226e-18,-3.12442887985354e-18,4.13955390839543e-18,-2.19354758376431e-18,-1.19100050239215e-18,-1.16826767464028e-18,-5.38060767529936e-18,1.55456946998839e-18,-7.82110314642746e-18,-4.56557087628981e-18,-6.60596288760058e-18,-7.80361459316774e-18,-1.25957854397128e-18,-1.31023799605258e-17,-7.68494545134539e-18,-1.21182877333739e-17,-1.04236622262191e-17,-4.11882086319715e-18,-1.76840493595719e-17,-1.07706225178254e-17,-1.64690096761689e-17,-1.12202826239147e-17,-6.53198351333105e-18,-2.19920558961935e-17,-1.30624218549008e-17,-2.11524635352857e-17,-1.16655648699278e-17,-8.30370058471073e-18,-2.59498772338584e-17,-1.49200268427434e-17,-2.41819984740516e-17,-1.2911807575561e-17,-1.05819688422917e-17,-2.73702387946127e-17,-1.61471800508197e-17,-2.70129529942006e-17,-1.35688008683395e-17,-1.2182644391578e-17,-2.82604107638867e-17,-1.72845827147618e-17,-2.57783705540821e-17,-2.6353525727773e-17,-2.05322871863377e-17,-2.8704111465044e-17,-1.21269323714001e-17,-1.55192081608762e-17,-1.30969718432957e-17,-9.88088658408134e-18,-2.27978971255487e-17,-2.71335917193934e-17,-1.10074558593876e-17,-1.36486236498286e-17,-2.45318072114497e-17,-2.42914023012443e-17,-1.51366325611774e-17,-2.51409001496678e-17,-9.08774336251605e-18,-1.30387297368184e-17,-2.1121557134962e-17,-2.12805232755754e-17,-1.24796793503017e-17,-2.15702868836885e-17,-6.16450700817439e-18,-1.05321699379843e-17,-2.02333912807118e-17,-1.83901073767403e-17,-3.75565998224766e-18,-1.17300542812014e-17,-2.31637509206403e-18,-8.79259911036737e-18,-1.37101485076653e-17,-1.21070172970145e-17,-8.46248003197364e-19,-9.20614078596791e-18,1.01888965072302e-18,-6.38185716505308e-18,-6.87104987972134e-18,-2.50829960859579e-18,-2.64714672454161e-18,-4.82599806801388e-18,440.665518565372,412.847759023957,21.5550304863398,427.357705713852,430.020618744592,306.115869275702,345.914037846707,10.1681028496443,480.545587435839,22.9325377746597,490.125030841178,19.0673872321661,438.649085597939,469.502652766297,315.004366127151,384.698644666455,31.610939952533,489.877141608525,498.454276314853,639.451763177402,25.9488414098262,402.081319394898,284.286543407523,367.108728324201,327.707265933093,435.215621923524,519.573643712727,19.9720790292005,369.790239393884,339.934367797244,272.389650397179,265.180028179485,25.0225822889578,419.701376196222,381.139963966922,819.762142902235,752.756753304766,17.6602787084578,220.966953221603,85.745582997536,180.70157168022,200.616627410081,533.423176826008,258.16270719442,178.967089831713,10.5116328188009,87.1617070942863,183.445314095346,17.5512244336238,86.8783626314838,10.598989969631,266.756195479355,139.236789305566,557.10131173813,6.01412457895535,93.498970749797,-75.8962831967813,-3.27065338064009,39.6150348488142,119.509913314912,20.9558927819966,-41.836735323349,1.91116396780182,-9.11225695424987,-136.071211088802,-134.514579813767,-2.78433811262756,200.598034051909,-190.612675768638,-2.93144150060766,-300.731047643004,-104.433451877036,-150.609290830869,-257.059276163084,-137.514457352748,-266.045463283338,-235.471349221336,-62.7070603567879,-6.76584871409032,-211.367683038429,-277.070133999909,-325.953667561314,-220.584191072187,-463.593278043432,-354.268171183187,-107.818365946332,-341.963702962892,-11.6382238587963,-507.787344807476,-283.338771192604,-540.606238867366,-295.04957967013,-17.2388070273004,-267.745733641781,-456.634497931249,-291.176965075513,-17.943875443614,-306.194495974265,-414.095316248332,-380.577334633868,-28.6908270467793,-376.761865091502,-487.32673374877,-515.359707968935,-16.9146959703965,-576.275080275567,-413.144926569807,-396.757502261247,-362.254381828215,-393.027414225697,-467.19493349604,-497.044811209753,-22.0424438276302,-457.809682657051,-601.455550315855,-579.981395908159,-511.644436707335,-30.3934410099691,-472.27659738978,10.9434021688266,11.9540426124256,21.184872294526,14.2929568460396,7.27167076340907,6.8074482082022,11.0384367556794,7.84028301021337,4.28611962556063,103.114458806639,492.632731034557,5.3882775965496,2.98014586985043,10.1730797853879,7.90791398017365,2.29616424629091,56.431364171624,284.01052511297,2.7573464371742,-0.0829530615646786,4.4366122822705,-2.78277604503377,-6.53553511679203,-21.7109728677911,-101.949713559585,-1.74645878095674,-11.7011690544095,-43.7727519428966,-243.149668439017,-3.64661503369642,-9.83379207647108,-9.21694001836788,-82.2497198653388,-364.849128716617,-4.64465410896587,-12.0533947253187,-8.07455571639158,-7.34505955356071,-22.2217845080947,-7.35455382202084,-13.0148687164128,-9.96035278339308,-10.9358329180097,-12.5999247314426,-116.450047448929,50.6792491848839,30.6382301766523,32.2119857790909,20.8080946046419,-16.6243624484271,-1.220933435641,-18.9110552137102,-9.19771543428561,-31.0730261324973,-17.313673580475,-31.7340616855311,-28.7879634439274,53.9729216617242,45.7529127310248,35.1566383964359,22.0262994250126,-6.09464744539299,-18.1700894739567,-29.7204256178233,-40.1958632747661,-58.9872540595172,-19.4363975030763,44.8791286618063,27.378037158142,-5.27326925419453,-0.117455847403658,-6.22973432773559,-17.6335331221192,-19.404958554164,-30.7673515203539,-29.9759294072543,47.0331030727405,28.9233000444084,-4.7596148827894,-9.21167868523536,-11.3400295322147,-22.3062266260197,-30.6024733982339,56.613718551106,43.9862308707699,34.8716097803115,25.004606351781,-12.6099160739287,-23.6546446898174,-21.4724689186795,-38.97848369609,-32.9425795080243,52.2170966214333,32.0978679775712,-23.9220159151824,45.7828911260158,49.9127675952782,70.0694950308313,33.0873137695191,45.7122092253384,30.8946736241615,-25.300669270762,-29.534234920866,-25.4385708964231,-52.1823118441614,-135.10049276233,-50.0232761035439,-0.249426674572077,6.95313699080475,0.811653474879935,2.89987062879829,-0.423522742364189,1.52937500025262,7.77080854882325,5.6487037720752,7.83480148124599,-107.726147894699,-0.470321581628998,19.5337081984478,9.21288404063271,-20.3073752440668,-36.7680468363102,-8.36222596302855,-4.88614415624726,59.9592486238858,32.5358062546847,-13.0434894986655,-49.4664164726063,-34.7011705003058,33.0539418654472,-17.2415547807466,18.5089046859844,-24.5338055203802,-20.4967218621777,-17.6104818245951,-20.7716809262294,-13.524172591037,-14.6303853734264,-15.7138065862597,-16.8728273913503,-11.2249007947969,-14.905986578816,-20.0697201505344,-19.8250259254951,-30.0529303204545,-22.4310176990318,-32.8861686903616,-26.3866589803841,-22.1291028419418,-27.4124602025043,-26.5045373544455,-66.0191718612121,-50.0938016573465,-83.0482702356625,41.1094650710758,33.2570126690836,16.8155033192844,22.9037092344174,-15.6683823370635,-15.6316533897442,-11.5446881939763,-7.91693024374417,-14.0391667333211,-12.6195202232324,-11.6284581869006,-8.55083523639179,-9.47966184319806,-36.0382218955492,-61.5939416395123,-48.385989582714,-52.4700410562604,-48.2187380709917,-40.4516424255298,-71.5396924283651,-43.7621206939791,-44.058151042631,-42.0757254773678,-41.6474702149456,-33.1812772055521,-38.3446151949038,-39.8126874299216,-31.0210945502679,-41.6352805933477,-35.1211377030478,-67.236492531929,-117.069199788079,35.215957605758,35.276184696126,39.0363198092108,20.1855557199264,25.7136539508658,24.0240596378998,23.8008949039982,28.4215520646577,21.5055010578621,28.9141708610328,17.5493674248956,-4.68546762874347,-34.8762521340295,-38.6345966103679,-54.468518261319,-34.8072880727407,-38.4531731842769,-58.8573195688991,-31.4397392921893,-86.2949518822099,-32.3665715640448,-28.9666327074131,-37.2184214415545,-27.4652004480007,-27.134824420534,-22.23410413807,-23.4559530503206,-27.4346102971174,-21.8126264883262,-28.0543843804557,-24.1043121915941,-31.1831941377497,-19.6398178635987,-23.2694744509443,-21.1718250748065,-16.6509370231384,-17.6303193459348,-22.598732096215,-18.9680229230588,-20.3965827833377,-15.7146867489203,-18.2013102896719,-20.5039813861299,-16.0063283174506,-13.0644349100666,-14.6187038986064,-24.9861173520957,-21.3246243516277,-16.3158875672484,-17.4834273503943,-14.352380622639,-15.1752371409232,-9.77580505847092,-19.2151038917572,-17.0983534091018,-11.2038042984487,-9.24318247467583,-11.5766279449925,-10.3022540096132,-6.53513891844151,-7.45940295001004,-5.6730049107546,-7.14327188834548,-7.42382567654757,-9.41724508071401,-7.11276800432548,-3.4529021761267,-52.4938868235193,-49.700100984719,-46.7363487213383,-46.8289598385847,-43.4394864971492,-38.5853993128318,-52.4588824159836,-47.8963205637922,-41.5452986273974,-41.0818818050366,-45.5276374981862,-52.9004432089894,-45.9559163859883,-34.7242113183273,-36.7491404635018,-43.3701599689743,-36.9302706039617,-36.5515918691456,-51.7826240236338,-49.8229618182873,-40.4863289859944,-65.9669203296461,-23.9617928600476,-68.3198947756777,-40.0104039272959,-701.117009002694,-42.1995775773044,43.004406484868,37.9306924426033,34.6828691776319,55.7485985311478,68.4502386240446,29.4322028240721,34.648194203832,51.633591284802,39.0289604474296,41.1673166543023,36.4660515668735,38.3250613307907,40.6317652939062,32.6554761862483,11.7005866678907,21.4818130879086,12.4423597397129,21.7940771257205,-6.86310881961187,-3.9319726846959,-6.28618586311513,-4.68424781211171,-0.940871814127715,-2.98642337121268,-1.59286692396782,-2.65683440146527,-0.644711535300453,-4.16073616962629,3.04703076313154,1.05186107863373,0.74597000097522,2.65895789592682,1.74804922937443,1.20029537196358,5.62647689582951,0.221875123700043,2.02253004128778,-1.79320110621657,2.30723262862078,4.74839162914901,0.181160617690756,0.354978335855845,-0.535406054157924,-2.04926584594739,-0.965249998670778,-1.33960597334817,-3.61557821263015,-3.57352143584788,-64.24991476788,-56.2918258010939,-28.4600069153973,-29.5421537852656,-31.1733875895845,-28.6990941578279,-31.9053808487497,-38.7992736900982,-25.3524381924166,-23.3363243187804,-25.7540242630434,-22.6300251135056,-27.0079602783887,-29.8753619022965,-20.2333152841861,-10.7890333750376,-12.9060208334468,-13.9089322256332,-12.3353198222854,-12.9287918423895,-11.4915414772206,-15.3444571620138,-15.0628617303876,-17.4874062273476,-17.8936175714285,-15.6082944936036,-16.3891201308944,-12.3846523400639,-18.3549707167685,-32.7724059169367,-30.7661749419505,-75.6074193017578,-40.0033475480305,-45.5817425268863,-135.99333793711,-59.1166835904183,-63.0663496673044,-51.6248933997256,-68.7492917975493,-46.586362775898,26.3241325872347,22.6978839710475,23.985071242034,26.6214238021597,20.9590446584465,27.757824840224,31.7403291033739,25.7783005010855,26.260724801116,22.5805812607222,22.5151226415565,19.5542823395274,16.3466663947309,45.7872537385887,45.2615048535191,35.5606324351157,33.6757997558262,16.0386631047245,11.9866256562685,14.9931914114438,-8.15796430810426,-4.96554017372424,-40.2969648146515,-39.8923804537502,-45.4808184363199,-52.4646814940889,-37.2279960873075,-32.0787117292239,-34.8530762216455,-8.76303482247972,-8.24206581842509,-33.7319157596675,31.8664373340067,29.0057474096032,29.7780863777177,20.8649088958479,15.8478156674635,16.8972500890764,50.8870653008343,61.860365214342,40.5834402707104,45.7592869685672,36.9621409462176,33.396555091589,32.449292917741,35.6941143831201,40.8938574025968,36.5454218056742,32.0523553758874,33.6673629901327,27.0878484669045,29.7587818411198,27.8420374352442,15.7273607046464,10.978415551461,-33.6948195492517,-41.9350420055822,-44.0496285089816,-41.9349650372296,-52.1052133576995,-50.9808154128763,-62.4970622475354,-32.3022859073292,-38.5422608812558,31.4320287088328,21.9256258948684,25.6857096278876,19.6722346454544,18.1687865835541,17.9293069244963,19.7336272084661,17.6264299512725,141.024762482851,13.1525011043812,13.2240523987412,-46.8306019207199,-41.9593370536147,-51.4302559264976,-38.242429878199,-43.7938221802704,28.2051288542994,21.652739912004,14.5983976367507,17.3506927377142,14.1274586940395,12.2411110236147,11.3740722961712,-36.3529501608167,-36.1412824344631,-34.3445344556628,-31.7688800359406,-25.3631798432801,-26.8973779316052,-23.8951382457273,-28.6574050171987,-25.1271897293693,-19.8731074243306,-22.2965767011378,-20.5633677974795,-21.4319205334516,-23.7282129594602,-45.8234600736691,22.8019826538151,26.9268565316769,24.4824256747653,9.63509605484599,9.27441035553581,-29.6493130133109,-25.7439958007224,-20.5574041687617,-27.4614336522777,24.8352652188564,25.2837567538276,21.3592317927732,18.4701195976365,18.0661488815822,18.6616801048103,20.2578129078785,23.3313156119149,9.2063397351032,12.3868340288974,10.4196068483324,10.3650346790713,7.08502601993836,6.63116025866579,5.62593688332744,4.20927583428517,5.53454596992775,8.7634959657163,3.19748638463276,4.83091439131316,9.72453129864936,7.06387625705301,-21.3909249636146,-27.0551753275158,-24.2770531730843,-30.1718249020103,-27.0351482104553,-26.6070161366695,-22.8134720488514,-20.889023393285,-30.9758974386405,-29.0829214346267,-32.9980575224939,12.8575542537668,18.2998176252944,15.4847130236124,16.0143879545056,13.0211797370364,22.7373660943909,10.0095972975051,7.17839030128088,6.81831923069852,7.80548800002335,10.1533216217419,5.55299496789731,6.99115348302706,-15.7563086756867,-34.6231427767836,15.08068986871,13.9248269782082,12.9487668571481,15.1052798430376,17.5614399960655,17.9339432402441,17.8563579054945,20.134968201151,23.1010812035637,20.4612511476499,15.4370937097496,13.9865192088697,12.6314711010163,15.3701895392957,18.2937650076732,15.5659788863361,13.8396795156564,13.5548590427205,11.0887713894826,10.9512100226635,9.48688802644538,6.86882026023318,7.1982596546708,4.49377890539623,-18.7904907219624,25.9958026376313,11.6755863399402,18.4770094512733,20.2938818247951,15.2177535373453,11.720842872905,11.648768949795,-18.5365883375194,-16.0399197456714,23.6430948691383,26.5637421048336,10.5901244532334,6.99892677398232,8.46072122065568,9.05098944983448,8.29864766681261,9.01455438615922,12.1105218259749,18.936108885816,-19.0981414956623,-16.0891833801532,-15.2166081481126,-16.1823617198374,-16.2288522564243,-14.4839925111939,-12.0819955635272,-13.3669205575494,-18.8513212896977,-9.79528467653641,-14.0943485884894,-11.6383068111209,-7.34537582032378,-12.4058493915801,-9.07102539945214,-11.3479691804501,-13.154481513623,-6.04193315957276,-10.9199957298723,-8.2696625983732,-14.7424964417238,-8.34583415314329,-14.2585530683996,-12.0628525228329,-19.0243891044073,-9.64172747828412,-16.3678837027638,-19.1554095772905,-12.3808939907626,-10.2905645362623,-7.84740647829316,-18.6307435519654,25.3110413639267,29.7279787759801,28.9606249174256,10.2911618218456,18.8172787409398,-21.1951206039991,-21.5829175982191,-18.032964054964,-14.8077703468368,-12.8455862141427,-12.7710983722452,-13.7907604643984,-8.61854608200987,-11.924103561406,-10.716141671543,-10.8994920459109,-9.86074378312299,-9.72317807508448,-11.1227090243713,-8.35310339361113,-5.80816340253539,-6.47979855053874,-11.6301744127994,-6.11270776837569,-15.9957867548859,12.9209559623895,11.3904994991894,11.1279752754582,14.3573855543144,9.53344938863523,11.7545840025718,9.57636948582941,10.4002797744567,12.3036208261739,5.49217333009764,7.76140436927735,6.47586893120579,7.41919305458031,7.64238388123441,6.30604219825166,23.7956071548198,17.50415058858,-25.3294673258136,-21.0864409753642,-18.6669139234674,-24.4845550474346,-13.408142832129,-9.60569093852173,-5.93057986345824,-15.3088913638295,-10.8456564387777,-6.48599041305095,-13.1731178799227,-9.04689484405073,-15.9431711490264,-14.1820660334938,-7.76283951927098,-8.39607828509528,-14.778452288562,-17.4803517459953,-7.44937403436907,-9.92469227688685,-20.1718993685658,-5.45533616510189,-12.0207517768672,-17.6259192621771,-19.8672974642869,-4.80773406934955,10.3636518387956,8.41549327792393,6.24856424168598,2.65152223109267,5.14756979170687,-1.89525901053351,21.4602007476466,23.7520356369034,23.2874629693426,29.2088675535457,27.4196287639747,25.5491124006666,26.7934435812413,27.370777093782,34.2715406039599,33.3684861938331,33.9833924101419,30.2537360235847,38.1034905462876,30.7569841324136,32.0610088000089,34.3649421074496,36.495037269505,28.9141955415997,27.8377961206851,20.8681088337323,23.4062933395599,16.3028211473743,15.1331670797432,-27.4573196910458,-30.0080649812595,-31.3032040746127,-30.0807853439779,-6.82354430447351,-4.0234545983847,-8.09540526796242,-4.63645573728764,-2.79601940223837,-7.0296929267843,-5.22011002540417,-2.10164390188367,-2.97971683906197,-1.48809738564715,-4.651205620565,-16.1946207918593,-17.7475926544436,-25.7878020489959,-19.8479065222186,-5.99125844779812,-3.73916053871198,-2.67926930117521,-1.3042938961796,-2.65661476243295,-1.4793929344437,-3.25219195814573,3.01919720768219,5.4564346547044,3.6976588256452,1.00339685585084,5.87896748533445,3.6300812469707,-4.29958333338172,25.8637250490973,24.8087792914377,35.3478431535561,17.3051988608297,19.6957762996271,14.5621092734689,18.9365354017804,19.3439308799283,18.194071515498,15.5326111964708,15.1459364938585,11.9600011454215,13.3404294477037,10.6867744852646,10.884198262171,12.7874480739506,-28.6890859013258,-4.43322425583724,-9.42410343991322,-2.17404367925732,-22.7721012674589,-20.8208107201672,-26.2069676932921,-23.8259051456874,-23.8026083720278,-24.0008318001107,-4.56572770672947,-3.02510955299393,-0.99290773299424,5.7498080237294,3.58352401608907,5.51901050686461,2.39457979723821,3.09851346707088,2.86530627017429,-0.0470626674546758,1.19632657180787,-0.874536735102916,2.11059455644162,-2.8704344689542,33.1165500991212,14.8049689712979,-26.1073614855529,-2.05659937249463,6.8262033433122,0,-0.39052581267072,-1.92582070965158,1.93387031539754,2.00706000076659,0.830685765542054,-3.48432343445011,2.47089408538583,0.140997212042152,34.7647926083851,48.3432477979002,37.7051880451548,48.5452098767493,35.9263166416605,48.5458751464203,46.1077505316855,47.9057528621851,43.0227025921036,45.4693235779349,37.1104245005682,29.0223913303152,-25.4726950131739,8.79990133996308,7.68351273944144,7.93809211367096,7.78209459950653,9.9160527874564,3.59165827145783,12.9639418202836,5.92706522088175,10.5753155625117,2.92750438047428,9.67461679294708,7.59164927191065,3.58874813970812,1.76312056530614,4.85380423902502,3.90744186887165,5.93580736499922,5.98610070851278,4.49146233659684,-2.24316788876767,2.48231107400584,0.03530365417255,-0.848335947551181,1.8871917602214,-2.79401552454726,-5.96905823697476,-1.94955359697567,-3.53401945420121,-5.07283989622883,-5.27017032918445,-7.29144857856927,82.1835284060844,59.2031955364519,68.8695480900509,26.2872253946626,30.7284231454877,30.8319691650508,-21.7422987088366,-32.5509821906521,9.58844844104198,-0.206796177768171,1.17021096010899,-0.0403204901203322,1.97904174465309,3.9028591313373,3.46384787831063,5.73099814081356,1.59589780485107,2.31075598487388,0.809426175094279,-4.62948401896155,-7.14943044483843,-4.37154897054573,-7.36279955952383,-8.63319736785415,-10.9923870806288,21.9791042209676,-18.2885446777994,-29.6449300711304,6.33585723783066,5.72860703478281,-10.214644703319,-10.2333632601134,-22.1127187614183,-28.5898982675894,-32.6537493047198,-28.3638795953951,-24.1494225144114,-36.6886827202888,-21.2990260128895,-23.4833496480803,-36.4524925406648,-32.8027766527835,-18.6650831880208,-37.9077715246078,-37.1331264786964,-17.5669159550292,-18.2493113448234,-14.5572893870511,-20.7560304448378,-34.9989975855765,3.15825993532016,10.2567191378578,-26.0281758553236,-31.5813823458672,-22.3778425348411,-31.564436540589,-35.3289980968392,-29.6280786290008,-39.8095650163834,-29.7669503895958,-25.6164463142177,-49.9690721356403,-44.5843153399793,-50.6683753178707,-40.6029725805235,-0.239085961405097,8.28906147301685,4.08052435360496,-29.8905792802034,-24.317709507947,-119.303111131336,-70.6596524197697,1.109081381987,2.08041527523114,-0.893826049940476,4.18159892207607,-1.06322046481378,-0.417714144536994,1.92687236960995,-3.49443776987451,2.03529273858,2.49998834350294,6.80564601166345,0.29883633001568,4.62930792881957,-1.96168684120906,4.57927566982384,-3.98485958064732,0.236661911562375,3.87493089686326,1.60702282254946,-1.76042769353918,-3.54575701978864,-2.42510548526476,-5.72790767485942,9.62133047887307,14.1547392123012,11.6664707091991,13.996363555821,11.3618459931021,14.7532071760451,12.7676840324871,12.0984243033141,10.5520455066986,13.665247399271,17.7101036739819,15.3666818086156,17.3743957371843,14.3704041712303,9.6078637276223,12.5106647731066,11.3556687171212,8.21203273467534,12.8485311436632,16.5974772089267,14.1605705642039,11.6939301325309,-20.3495869136958,-42.2660765031334,-40.158254954671,-81.2837226137746,-43.8277507207986,-36.9502078503028,-46.0666454930136,-38.139645172182,-40.5788727287872,-39.4398257080618,-41.0253161582636,-48.6462433469484,2.66406444201879,-5.74023032772389,-7.42717279351371,11.8150000500487,14.9356783644267,7.25069796250078,6.14676631385954,7.34092212698085,-21.2429997277518,-29.8104235982855,-21.7895566561742,-26.9472675004948,-29.5579958751511,-15.1891444101584,-34.9044438765103,-50.573218573496,3.15891134500658,-5.84036632398503,-8.07003366872624,-4.90326215473704,18.1812040433124,18.8343039777459,-16.8265877439683,-27.3515578967763,7.43466091749711,-1.88650633385508,-7.72027273629574,-4.73947245142903,-12.1217507046693,-10.3292162821647,-9.87523799454518,-12.312708289285,-13.5694292210256,-12.8497975764838,-6.36060891495719,16.7242165827606,22.6266409417389,16.6468626880623,-18.4480290264298,-19.5905851713635,5.60370225777186,7.81094270481915,5.59940087215224,8.41594603387029,7.82412157715952,6.60751522574712,11.0442417785054,6.29425728801399,8.78387003462958,1.34038396018628,4.12963738510155,0.171816641517127,0.536228330751312,1.48263820477986,-1.64715809058779,-6.29154455898163,-5.17995886920466,-4.66359848989072,-5.34795957090658,-8.73156601195948,-15.4677953402513,-15.1022997884375,20.7616352764757,20.5718912454822,21.1418790914165,16.5787185834688,14.0046329434396,19.2863678879376,14.8900011403313,19.3146646708177,17.4117419898071,20.223596015293,22.2125295223085,16.4590034199505,22.5124670890667,25.3815702604042,21.3393094770522,22.8749900524933,23.1264897979295,21.6614180475744,22.8285511256183,26.1336427665218,31.2694710022921,30.5587651785313,25.3249417247668,15.5891526220447,4.59017825542707,-13.3891805278083,-9.77408785804803,26.3102539554105,19.8368215753749,22.5783322245047,17.1430405747569,18.881489247617,35.683658558617,24.6749602148978,5.98082405902708,-11.5397814198283,-12.1653748067419,-16.1410981357011,-13.7686538859898,-21.4746999330787,-14.9537855847391,-11.9877578599916,-33.879089814572,-6.54012451330875,-9.03045760405674,-7.05288302565606,23.9015859105328,25.5972713419159,24.8202652139612,29.5387074258983,17.8002667825316,35.7616613500066,30.3707380312772,31.1432331235977,31.3037928473784,30.4505814361695,41.0334857313976,43.9629673479772,30.1640438497866,45.2844519841919,-11.5805905295741,-8.35962760126897,28.8700556365638,30.8711519967086,27.0233611239811,25.0076747695731,19.2159627130396,21.0821734444114,13.9431756637504,25.6387419554454,31.4813179059436,17.0046654701656,18.5594556632062,16.021084245653,15.5476602608734,15.141933545627,10.9100702106317,88.0810395212639,18.0898573174165,39.14148413578,35.2542861164377,26.5992274398887,35.1006741655087,35.3713633956068,15.319221344423,50.0548107468037,58.8148094667553,33.925862157722,45.6424844768661,31.2792702577641,33.2136966359075,36.1351137933475,43.287055277866,40.7382571846854,41.3114528552172,33.9731366626101,37.747077673076,44.5982162792432,40.0857482549712,41.6040118746134,62.9416700144949,90.5060284173116,81.0358034047475,44.1659075728917,44.7615482589917,24.3694972406636,54.4323179162151,17.0443059945895,41.6130094987239,50.3292822124074,578.863526176953,590.217117506782,521.163731799781,553.367791639391,494.590238629814,445.845900757339,445.550447298644,377.521691172364,431.425192267297,303.767156262753,314.812120626414,193.262029097833,158.909868470037,90.6554187164127,147.222008834213,-19.076951281317,-132.346692558384,-243.124397894157,-332.293689541865,-442.56329038857,-419.041201495669,-510.583273115411,-313.554895108194,-486.03520950733,-469.091071978936,-427.010498868279,-551.04352901781,-584.449310905823,72.5431196102153,50.2403447362079,86.6263580460604,85.2023365417217,65.8344004205248,51.9372365214719,72.6327127154197,48.8413741059477,48.4636786762279,47.6737664096467,42.1707341772389,45.1133614892935,47.8454198497379,46.2285719475702,49.053558746803,40.4033896259498,48.7248812642733,51.0676007320064,40.1788201532945,39.1288712833197,42.376158596427,39.1243973312615,36.6785682565397,5.15905168591325,51.7652648839995,3.4383110150281,23.9520042196158,-1.09309622194102,-1.78804682543004,-43.9461107894107,-526.647633996857,-1.81138333494549,-5.06222823362648,8.58782595063609,0.839189963047098,11.4044781492784,12.0490441765146,16.7938655258279,28.0644247702958,11.1012754366271,10.0946639063429,7.46228835764179,36.6973297925369,-4.24333967848017,-0.306038820467868,-2.53792437049924,-2.78324722455574,-12.1952115793706,-7.8022779121511,-4.57532530795357,-4.93802369788501,-6.85270263625012,-9.50564100753446,-2.29046399170601,-6.22979531696194,-9.03541982799391,-3.35315495489207,1.16758598339004,-1.47706339872597,-1.04226575708886,-1.63011439541014,0.498719989283757,2.08731457484923,3.56652761566399,2.57998628778695,3.63320496869745,4.37543559143227,0.211261060157696,5.18220145448609,4.92116985669925,8.96969259269034,11.3046809495334,8.87752586325637,7.73529887708216,6.35411553442273,-9.50917181035744,-24.4692246531021,-47.5267933515132,-68.1205116886511,87.0914383594107,35.201325431368,-2.78546355986816,-13.3571110597914,-23.6657470065071,-57.2337525307897,-53.8898939889794,-122.489887608773,-60.7882064506089,-49.0690737780213,30.6512888034289,-84.665736878302,-54.9351429874972,-146.49265030082,21.3314990586858,-23.0905425499241,-34.075845993237,-36.8284855567183,-36.8810361055462,-35.662801907277,-41.5713801194279,-46.6061212070959,-47.3712359122177,4.02884119609649,2.91425267055885,4.89719620496846,2.33705734879071,1.29097339879977,15.7763709905666,-8.47511554080895,9.77421292464311,-12.403084873615,32.2429461897547,-5.91371155528337,5.38017463422811,20.7908228501524,22.725862709487,0.12972199556757,-0.894355304841302,0.998012130658465,40.6034546778748,41.8552115971633,57.0879480282056,13.4715004683315,8.42117270052277,134.434976778187,0.91828755747909,-40.7516237692878,-59.1409240519192,-47.5253974554549,-88.523674024079,-15.2181759106567,-1.99836189023996,-16.9654290107769,-27.8936648201565,-35.3219465376077,-30.6160180325887,-34.814337725778,-29.5315060734618,-29.4697633196055,-30.6900112895426,-26.6973850729074,5.33799969529417,10.7478988676161,9.70442726379947,3.4485697616919,1.66415841139876,-9.37901316575602,-3.48636951132351,-3.01657802815888,21.9257187208297,-7.80625896618284,-8.72758272318859,-10.1280607507893,-18.0126753345333,-6.74049888311813,-2.31694264854079,28.7706110752391,5.36541064639579,38.8394706957244,10.7465525880821,51.7889879993627,38.5482800044777,79.8013117626593,32.5024444593505,58.3956686280605,45.3590705184634,81.772714273864,116.861405594685,58.5858952888715,52.5952823933103,55.3215344409436,48.3124158275001,81.565265566595,135.888116401791,75.8936827475687,46.6722039862233,51.8544947611243,52.7614150104669,51.6438672897916,47.8814635477691,54.9517986832954,37.3478263683599,34.2452891538675,42.9615252125066,36.5292680191114,14.8312115160301,-6.54110191864598,36.5831037995365,0.186455801500563,43.21684455511,45.8908998111227,-14.9435823182744,3.30538197156944e-18,1.02474492437736e-18,4.78712303786527e-18,-3.4521156125904e-18,7.60300972305076e-18,-1.61669538932675e-18,8.96327792957624e-18,4.8741897274852e-18,9.06381748484268e-18,8.73933092125441e-18,9.19019991510309e-18,2.17464122688898e-18,1.57790832008986e-17,1.57797865319927e-17,9.93657344614898e-18,3.98688994964363e-18,1.2818335749047e-17,5.32047475531843e-18,2.05207978295253e-17,1.96970546904994e-17,1.32326964295174e-17,2.13486668919831e-17,1.32568571636927e-17,7.9871394554972e-18,2.80076370422474e-17,2.69981056076132e-17,1.28279844504763e-17,1.05800978680952e-17,1.52156612437957e-17,1.10501229647578e-17,2.77098894980758e-17,2.71200678921474e-17,1.7683997109236e-17,2.8773798316671e-17,1.4821574703589e-17,1.30725986206013e-17,3.04534079399923e-17,1.88161233575158e-17,2.97011851569119e-17,1.32327621433733e-17,1.4226478897845e-17,2.98734694145915e-17,1.84146570908426e-17,2.69333208573456e-17,2.67588909462551e-17,1.79032349792077e-17,2.95731407884977e-17,1.17832594117129e-17,1.44510449620581e-17,2.79435977161221e-17,1.63651404424068e-17,2.74621515047473e-17,1.00970279106175e-17,1.42706197543021e-17,2.41638757050607e-17,1.5042091675698e-17,2.32953070320134e-17,7.07572155514175e-18,1.32073904532256e-17,2.02420104735592e-17,1.24269083879723e-17,1.98171125086682e-17,4.66136984287371e-18,1.14486696141412e-17,1.52814977325243e-17,9.20503070838667e-18,1.59113767314088e-17,2.06618126819161e-18,9.24080529529756e-18,1.01764631503558e-17,5.9827557141579e-18,1.01742184598495e-17,-4.82992921105451e-19,7.25667305257505e-18,3.75813468827584e-18,2.43262530071787e-18,4.62839887104998e-18,-3.31865297969618e-18,4.39688129926436e-18,-2.32990524185208e-18,-1.26503675329894e-18,-1.24089078312112e-18,-5.71508278179961e-18,1.65120628508707e-18,-8.30728695050963e-18,-4.84938079093788e-18,-7.0166098393399e-18,-8.28871125504087e-18,-1.33787781666761e-18,-1.39168641595544e-17,-8.16266527471912e-18,-1.28715977356675e-17,-1.10716290997829e-17,-4.37485942426853e-18,-1.87833442068903e-17,-1.14401575092469e-17,-1.74927739232218e-17,-1.19177698692356e-17,-6.9380316798437e-18,-2.33591496673686e-17,-1.38744221353014e-17,-2.24673656654273e-17,-1.23907322279135e-17,-8.81988412847055e-18,-2.75630013408823e-17,-1.5847501557193e-17,-2.56852258050699e-17,-1.37144452095539e-17,-1.12397765415514e-17,-2.90716569407063e-17,-1.71509383794505e-17,-2.86921611570813e-17,-1.44122792242049e-17,-1.29399550014992e-17,-3.00171647348897e-17,-1.83590454879671e-17,-2.73808332788894e-17,-2.79917418655001e-17,-2.18086372489655e-17,-3.0488447235024e-17,-1.28807797509564e-17,-1.6483929827211e-17,-1.39111198571394e-17,-1.04951128559018e-17,-2.42150844637103e-17,-2.8820299156128e-17,-1.16917131390564e-17,-1.44970640350689e-17,-2.60567797284688e-17,-2.58014305103344e-17,-1.60775721526657e-17,-2.67037357553328e-17,-9.6526654145323e-18,-1.38492572423584e-17,-2.2434538028291e-17,-2.26033859926723e-17,-1.32554545659791e-17,-2.29111621970444e-17,-6.54771170595343e-18,-1.11868819843314e-17,-2.14911610554056e-17,-1.95332929599643e-17,-3.98912334704708e-18,-1.24592304991534e-17,-2.46036808548917e-18,-9.33917408875779e-18,-1.45624134671209e-17,-1.28596266943525e-17,-8.98853379406904e-19,-9.77842278563471e-18,1.08222696223191e-18,-6.7785730164521e-18,-7.29817545344391e-18,-2.66422321970965e-18,-2.81170149902878e-18,-5.12599693713401e-18,468.058641265949,438.511644313687,22.8949574151571,453.923573875646,456.752021762913,325.144972335462,367.417117355709,10.8001833670834,510.417777759933,24.3580947892906,520.592708802835,20.2526746123327,465.916860629213,498.688380338865,334.586005463559,408.612694511792,33.575973113329,520.329410013772,529.439725769062,679.202049668719,27.5619011268454,427.075929714425,301.958668494682,389.929334919827,348.078556554608,462.26996230253,551.871937939479,21.2136048313863,392.777536957284,361.065732641783,289.322228058325,281.664433570023,26.5780628928368,445.791303389013,404.832795284946,870.721076650707,799.550426143287,18.758095899061,234.70293801587,91.0757919136564,191.934536631365,213.087573419905,566.582400587597,274.210894349868,190.09223406148,11.1650682147135,92.5799466356933,194.848838505923,18.642262475404,92.2789886104288,11.2578557544682,283.338580272461,147.892175972303,591.732441123468,6.38798104284257,99.3111540730239,-80.614229372592,-3.47396724476681,42.0776271431559,126.939016753794,22.2585754700958,-44.4374353459763,2.02996779261968,-9.67870284645307,-144.529815686471,-142.876419428201,-2.95742112535659,213.067824241456,-202.461745404525,-3.11366891194934,-319.425413643723,-110.925356146347,-159.971627137572,-273.038870655027,-146.062778572958,-282.583666779219,-250.108971839711,-66.6051239133335,-7.18643466009762,-224.5069477017,-294.29366490388,-346.215949119623,-234.296382195105,-492.411660725041,-376.290569290767,-114.520686875273,-363.221217517021,-12.3616916155173,-539.352966477617,-300.951979846591,-574.211983837389,-313.390768163775,-18.3104242431147,-284.389631167694,-485.020301458309,-309.277419946279,-19.0593218787039,-325.22848671121,-439.836753528595,-404.235191183716,-30.4743370164999,-400.182540330512,-517.620460964622,-547.396051001371,-17.9661654469929,-612.098110029894,-438.827284707317,-421.421167748848,-384.773227329329,-417.459205979282,-496.237206147664,-527.942643982057,-23.4126698674543,-486.268539277747,-638.843875461837,-616.034821630887,-543.449827061952,-32.2827906953934,-501.634761883855,11.6236776742675,12.6971426333126,22.5017890527268,15.1814509626482,7.72370016228001,7.23062010658943,11.724619903059,8.3276590935639,4.5525579917722,109.524370413723,523.256295345836,5.72322948892271,3.16540089444187,10.8054696844459,8.39949421243175,2.43890087143938,59.9393111694895,301.665492054797,2.92875156441767,-0.088109678767739,4.71240573445342,-2.9557619548413,-6.94180406188912,-23.0605936542155,-108.287221023111,-1.85502402525813,-12.4285496779063,-46.4938007075409,-258.26459897372,-3.87329982942317,-10.4450908089876,-9.78989333150429,-87.3626151871565,-387.52927165739,-4.93338008036216,-12.8026707788299,-8.57649491102576,-7.80165102513482,-23.6031589156902,-7.81173548649619,-13.8239129476049,-10.5795189183446,-11.6156378955612,-13.3831747694989,-123.688940223298,53.8296270402111,32.5427967088599,34.214381795345,22.101589703886,-17.6577839011679,-1.29683040965575,-20.0866245152364,-9.76947368820262,-33.004620917351,-18.3899447312828,-33.7067484715757,-30.5775117105731,57.3280443189305,48.5970543748503,37.342083067643,23.3955218791618,-6.47350945808672,-19.2995980682778,-31.567938598446,-42.6945616488208,-62.6540830264919,-20.6446236955688,47.6689532029462,29.0799400744752,-5.60107187461195,-0.124757263793811,-6.61699375612751,-18.7296877248925,-20.6112304049871,-32.6799446320471,-31.8393252885341,49.9568252819456,30.7212612499992,-5.0554871691353,-9.78430493773735,-12.0449606133109,-23.6928502151371,-32.5048171792225,60.1330012575343,46.7205501415438,37.039336196911,26.5589695161691,-13.3937872045351,-25.1250900891676,-22.8072635667578,-41.4015060147991,-34.99039147542,55.4630717988776,34.0931700806244,-25.4090819314732,48.6288963189908,53.015498599769,74.4252301498301,35.1441228633454,48.5538206141777,32.8151814690597,-26.8734366159289,-31.3701737156436,-27.0199106303821,-55.4261246929646,-143.498754526026,-53.1328766564764,-0.264931803095846,7.38536535158759,0.862108348908017,3.08013549773808,-0.449850217420184,1.62444564969555,8.25386588617429,5.99984455575036,8.32183681591239,-114.422736266185,-0.499558216336057,20.7479835227786,9.78558522172999,-21.569744089259,-39.0536616076374,-8.88204762413999,-5.18988189102746,63.6864997597035,34.5583319467296,-13.8543128856277,-52.5414009197747,-36.8583018875384,35.1086764591719,-18.3133428053584,19.6594750749885,-26.0589022584227,-21.7708610749714,-18.7052034878827,-22.0629124393323,-14.3648767160526,-15.5398550841397,-16.6906250886737,-17.9216941884204,-11.9226751198104,-15.8325885073172,-21.3173156248517,-21.0574104548933,-31.9211128151054,-23.8253986847027,-34.9304739879935,-28.0269347829046,-23.5047158723793,-29.1165029610494,-28.1521408389115,-70.1231264462505,-53.2077862954127,-88.2108059022663,43.664955740083,35.3243707679535,17.8608066758909,24.3274741784032,-16.642377128569,-16.6033649970245,-12.2623414863579,-8.40907095465077,-14.9118844766828,-13.4039883772709,-12.3513188794488,-9.0823814294896,-10.0689467522513,-38.2784685059699,-65.4228103162272,-51.3938113744965,-55.7317400370152,-51.2161629948792,-42.9662408175481,-75.9868195351822,-46.4825085875233,-46.7969410922825,-44.6912818623322,-44.2364049368653,-35.2439273552908,-40.7282342998431,-42.2875664160471,-32.949461108396,-44.2234575709329,-37.3043755420681,-71.4161195104131,-124.346580974367,37.4050897412912,37.4690607326608,41.4629373984289,21.4403518891739,27.3120936927575,25.5174690055522,25.2804316660561,30.1883230740679,22.8423490852123,30.711564568533,18.6402900293071,-4.97673069393996,-37.044267133601,-41.0362418511405,-57.8544487260136,-36.9710160543514,-40.84354058741,-62.5160714086774,-33.394130093877,-91.6593112562893,-34.3785771076992,-30.7672876044878,-39.5320328822441,-29.1725217022649,-28.8216084857592,-23.6162443717202,-24.9140471668247,-29.140029973606,-23.1685663761619,-29.7983311183918,-25.6027103045823,-33.1216373043315,-20.8606892907664,-24.7159764847041,-22.4879307777384,-17.686010433101,-18.7262741705052,-24.0035387241637,-20.1471335124471,-21.6644970432858,-16.6915599649499,-19.3327596658324,-21.7785718732394,-17.0013308695294,-13.8765603281621,-15.5274474529503,-26.5393311834507,-22.6502285271248,-17.3301332735009,-18.5702509171557,-15.244568703797,-16.1185765117117,-10.3834991397674,-20.4095737933843,-18.1612395964264,-11.9002672004244,-9.81776709953354,-12.296266710441,-10.9426737753725,-6.94138323463169,-7.92310235845912,-6.02565632788203,-7.58731961860146,-7.88531349235721,-10.0026499720185,-7.55491951941917,-3.66754518539064,-55.7570681304395,-52.7896119792206,-49.6416237682005,-49.7399918770681,-46.1398184576357,-40.9839862984172,-55.7198877413707,-50.8737030247153,-44.1278820494846,-43.6356578134696,-48.3577753413181,-56.1888973100873,-48.8126773607912,-36.8827749936074,-39.0335799566002,-46.0661823794445,-39.2259697031635,-38.8237511345962,-55.0015910493617,-52.9201102197274,-43.0030836011952,-70.067626798925,-25.4513315334569,-72.566869366686,-42.4975735784368,-744.700596658017,-44.8228329893707,45.6776925348876,40.2885808373676,36.8388628984113,59.2141027188151,72.7053157891848,31.2617989901911,36.8020324216915,54.8432939775399,41.4551205561058,43.7264035554879,38.7328933842887,40.707464907452,43.1575606769001,34.6854409289581,12.427931088452,22.8171885982587,13.2158150537214,23.1488639281785,-7.28974075263694,-4.176396188849,-6.67695449240918,-4.97543504975814,-0.999359297182487,-3.17206862457816,-1.69188442648536,-2.82199139171808,-0.684788785389043,-4.41938031494167,3.23644355821165,1.11724799541538,0.792341788434765,2.82424688912038,1.85671334083655,1.27490942052399,5.97623598857902,0.235667563161855,2.14825672343657,-1.90467199708482,2.45065729842555,5.04356624356208,0.192422118352462,0.377044879981654,-0.568688539667405,-2.17665450786697,-1.02525290458545,-1.42287999696095,-3.84033366419021,-3.79566250893209,-68.2438868954655,-59.791098665077,-30.2291683964926,-31.3785848409871,-33.111221150999,-30.4831180365743,-33.8887173604055,-41.2111557641626,-26.9284236528279,-24.7869819457396,-27.354973547589,-24.0367770115655,-28.686858078713,-31.7325061984467,-21.4910803347023,-11.4597128419158,-13.7082987457685,-14.7735541918156,-13.1021212061168,-13.7324852705973,-12.2058910063807,-16.2983157692886,-15.9992155003527,-18.5744771333266,-19.0059398227521,-16.5785540401231,-17.4079181983304,-13.1545203847882,-19.4959720972415,-34.809639371005,-32.6786949139147,-80.3074088102397,-42.4900785529535,-48.4152437048548,-144.447101700384,-62.7915582947418,-66.9867477514073,-54.8340554052005,-73.0229590268781,-49.4823142355184,27.9605215570274,24.1088541842073,25.4760569711969,28.2762933073816,22.2619232768708,29.4833365258781,33.71340549137,27.3807588711832,27.8931721480856,23.9842595769632,23.9147318488904,20.7698366156874,17.3628254074762,48.6335301249667,48.0750990736924,37.7711906171504,35.7691909468471,17.0356756865377,12.7317511392811,15.9252142603021,-8.66508843709524,-5.274213408917,-42.8019479710879,-42.3722134031158,-48.3080458627016,-55.7260473079903,-39.5422027173978,-34.0728230210169,-37.0196505352889,-9.3077719938906,-8.75441795572273,-35.8287952939191,33.8473529971213,30.8088337967568,31.6291837283541,22.161935746011,16.8329645861451,17.9476350760827,54.0503616445014,65.7057955991284,43.1062316217704,48.6038248545849,39.2598212038244,35.4725875762244,34.4664406749254,37.9129702132028,43.4359452364173,38.8171975210201,34.0448282757699,35.7602297258737,28.7717123625055,31.6086791624428,29.5727840345712,16.7050217727081,11.6608675963548,-35.7893930690755,-44.5418530736516,-46.7878887717536,-44.5417713207096,-55.3442335276778,-54.149939551581,-66.3820716763327,-34.3102952570267,-40.9381662493797,33.3859401969662,23.2885901730367,27.2824122647964,20.8951211993919,19.2982141862043,19.0438477356721,20.960330112766,18.7221429991194,149.79129505633,13.970100987723,14.0461001304015,-49.7417360360746,-44.567658376523,-54.6273186685592,-40.6196968298593,-46.516180735614,29.9584463319336,22.9987407589598,15.5058788914611,18.4292651130877,15.005664936981,13.0020560990382,12.0811195800807,-38.612761247296,-38.3879356046647,-36.4794962504976,-33.7437312376357,-26.9398330377159,-28.5694015934587,-25.3805334634957,-30.4388373708621,-26.6891730531795,-21.1084808474401,-23.6826004212725,-21.8416499263997,-22.764194569308,-25.2032315885102,-48.6719871570895,24.2194239609677,28.6007126738919,26.0043284837256,10.2340432321098,9.85093620142407,-31.4924054159241,-27.3443216852349,-21.8353155801959,-29.1685207509452,26.3791016180744,26.8554727649735,22.6869872731528,19.618278986371,19.1891962092951,19.8217474832933,21.5171008059592,24.7816618822647,9.77863410205959,13.1568376941034,11.0673216271455,11.0093570841551,7.52545300803764,7.04337355641641,5.97566240724048,4.47093735430728,5.87859035384003,9.30826180320777,3.39625196346185,5.13121887419634,10.3290380454825,7.50298851090284,-22.7206505888797,-28.7370081603752,-25.7861893962764,-32.0473982491872,-28.7157360961794,-28.2609900171329,-24.2316275721038,-22.1875492747072,-32.9014544054293,-30.8908051963142,-35.0493181737406,13.6568193345687,19.4373905201282,16.447290366219,17.0098915183891,13.8306162806629,24.1507906376575,10.6318246227711,7.62462109999594,7.24216690524835,8.29070111862318,10.7844832926352,5.89818619821303,7.42574506578262,-16.7357692385789,-36.7754237209604,16.0181518905351,14.7904370110517,13.7537019936521,16.0442704532264,18.6531130685972,19.048772259053,18.9663639814931,21.3866196947872,24.5371153956316,21.7331853918351,16.3967108894831,14.8559642203376,13.4166821583402,16.3256477502122,19.4309616531974,16.5336079646814,14.6999965205886,14.3974707318654,11.7780834923665,11.6319708882907,10.0766221372537,7.29580723395725,7.64572559344667,4.77312601053288,-19.9585653642137,27.6117816088722,12.4013766632957,19.6255971344808,21.5554118775831,16.1637358579788,12.4494464814127,12.3728922217751,-19.6888796273686,-17.0370104441472,25.112822296145,28.2150259385067,11.2484391303296,7.43400156838924,8.98666564963512,9.61362676570189,8.8145171056694,9.57492678651177,12.8633490756017,20.1132356005845,-20.2853406553489,-17.0893364575246,-16.1625192678318,-17.1883070491198,-17.2376875803159,-15.3843619917584,-12.8330495330254,-14.1978494129631,-20.0231773469582,-10.4041896707483,-14.97049660553,-12.3617797244133,-7.8019869520117,-13.1770351101605,-9.63490821151377,-12.0533938144774,-13.9722045052886,-6.4175182902807,-11.5988162191451,-8.78373023631116,-15.6589353209347,-8.8646368489839,-15.1449085404749,-12.8127165020993,-20.2070035888288,-10.2410868852058,-17.3853616485724,-20.346168696903,-13.1505284049458,-10.9302576484389,-8.33522537830835,-19.7888878192625,26.8844534702759,31.5759612841231,30.7609063518141,10.9308920631295,19.9870186087644,-22.5126744286075,-22.9245780756016,-19.1539485118848,-15.7282668525617,-13.6441073248265,-13.5649890897921,-14.6480365107871,-9.15430138933157,-12.6653424788855,-11.3822899661521,-11.5770379631854,-10.4737179165415,-10.3276007013827,-11.8141307949226,-8.87235796777598,-6.16921668682372,-6.88260273941152,-12.3531417912231,-6.49269246624136,-16.9901340110437,13.7241622882186,12.0985679485157,11.8197244123592,15.2498847574043,10.1260778967899,12.4852850633785,10.1716660391096,11.0467931229699,13.0684517030031,5.83358370051645,8.24387711393087,6.87842884286598,7.88039289237346,8.11745794662785,6.69804515835188,25.2748152141406,18.5922623755049,-26.9040248465726,-22.3972389403085,-19.8273066522005,-26.0065902247432,-14.2416341907973,-10.2028102033995,-6.29924293111594,-16.2605390918034,-11.519855769288,-6.88917950712369,-13.9919993653828,-9.60927762664081,-16.934247657448,-15.0636668364518,-8.24540147725801,-8.918004310567,-15.6971262936967,-18.5669841237365,-7.91245001460529,-10.5416416451772,-21.4258466170497,-5.7944566241522,-12.7679986443981,-18.7216005640207,-21.1023097224274,-5.10659759219153,11.0078882822787,8.93862619900782,6.63699419538917,2.816349000512,5.46755854728973,-2.01307413433521,22.7942327685161,25.2285351567851,24.7350832246808,31.0245805129895,29.1241171423282,27.1373237341986,28.4590063645092,29.0722287022061,36.4019648766791,35.4427738295347,36.0959045057184,32.1344012177732,40.4721206021468,32.6689327754157,34.0540196233248,36.5011725046277,38.7636809272623,30.7115907833198,29.5682790668665,22.1653346018669,24.8613004558499,17.3162546048172,16.0738912462569,-29.1641510532419,-31.8734585085648,-33.2491074276336,-31.9506993924833,-7.24771678566467,-4.27356489939615,-8.59864053478825,-4.92467207270865,-2.9698285598236,-7.4666802397869,-5.54460810481356,-2.23228854470629,-3.16494519378128,-1.58060209172933,-4.94033885405363,-17.2013281827279,-18.8508375482256,-27.3908510645079,-21.0817133798161,-6.3636934827101,-3.97159824740212,-2.84582091373142,-1.38537281256947,-2.82175809924861,-1.57135654509223,-3.45435820352238,3.20687978342928,5.79562339924381,3.92751666032564,1.06577108762458,6.24442216897468,3.85573825170995,-4.56685864504241,27.4714936715901,26.350969244022,37.5451736999952,18.3809431970235,20.9201262751261,15.4673347320117,20.1136886300919,20.5464090629966,19.3250709072127,16.4981660366827,16.0874544463911,12.7034715670287,14.1697115343282,11.3510972253358,11.5607934708538,13.5823551391945,-30.4724876360949,-4.70880709788642,-10.0099346678997,-2.3091889147098,-24.1876850558168,-22.1150962922261,-27.8360733332558,-25.3069966212195,-25.2822516485235,-25.4927972539923,-4.84954737043958,-3.21315965829291,-1.05462992866049,6.10723375835813,3.80628688029677,5.86208915865589,2.54343423544254,3.2911265852227,3.04342251237347,-0.0499882274767066,1.27069390755536,-0.928900625812649,2.24179559945493,-3.04886949574734,35.1751766130322,15.7252913349112,-27.7302752975759,-2.18444390895866,7.2505411185282,0,-0.414802097184786,-2.04553564257972,2.05408563655349,2.1318250176606,0.882323745239665,-3.70091968568193,2.62449245423815,0.149762031995581,36.9258789413524,51.3484126290028,40.0490583936491,51.5629292912575,38.1596068776397,51.5636359161355,48.9739499835373,50.8837216637596,45.6971259843688,48.2958364485983,39.4173225195556,30.8265123547232,-27.0561560070859,9.34693024738329,8.16114350104082,8.4315483114379,8.26585351244755,10.5324650985365,3.81492678597399,13.7698202791254,6.29550980755718,11.2327096734563,3.10948704833058,10.2760207007297,8.06356951809243,3.81183575149254,1.87272155732062,5.15553162517735,4.1503404621354,6.30479539021565,6.3582151225022,4.77066543669863,-2.38261009748655,2.63661915795263,0.0374982377961468,-0.90107111679754,2.00450539895484,-2.96770011493775,-6.34011323856568,-2.07074383910572,-3.75370496272551,-5.38818321188053,-5.59778031090093,-7.74470742720338,87.2923090634033,62.8834480891727,73.1506908200423,27.9213200999576,32.6385963497809,32.7485791080938,-23.0938668057977,-34.574451265509,10.1844958592941,-0.219651263616631,1.24295486918585,-0.0428269356820577,2.10206506065326,4.14547284755419,3.67917130605601,6.08725459532168,1.69510371623753,2.45439967732982,0.859742593323691,-4.91726697094889,-7.59386100988987,-4.64329788734684,-7.82049380437968,-9.16986344412406,-11.675707638707,23.345392876213,-19.4254168115777,-31.4877500165899,6.72971359240606,6.08471485079272,-10.8496184053953,-10.869500565198,-23.4873133070657,-30.367134194264,-34.6836066991675,-30.1270655069013,-25.6506248236799,-38.9693639742959,-22.6230389169926,-24.9431468212848,-38.718491487347,-34.8418980451145,-19.8253621126131,-40.2642350846786,-39.4414357224024,-18.6589294299965,-19.3837446140686,-15.4622152266437,-22.046289075927,-37.1746428195855,3.35458707752588,10.8943083160704,-27.6461672452519,-33.5445781150089,-23.7689179889106,-33.526578906404,-37.5251571766461,-31.4698510370367,-42.284249903689,-31.6173554929922,-27.2088433307181,-53.0753032033713,-47.3558133791391,-53.8180772202114,-43.1269781199799,-0.253948279423709,8.80433500461105,4.33418228596349,-31.7486695353238,-25.829373053842,-126.71935911103,-75.0520735354865,1.17802528865027,2.20974028139021,-0.949389023732262,4.4415399601903,-1.12931351594523,-0.443680539303529,2.04665267695262,-3.71166275927541,2.16181278920939,2.65539530083997,7.22870587997608,0.317412914546642,4.91707993450259,-2.08363132308341,4.86393751654975,-4.23257069676236,0.251373543194201,4.11580850820803,1.70692029922074,-1.86986128837004,-3.76617217145676,-2.57585749403543,-6.08397201650752,10.2194219456359,15.0346412960848,12.3916943769373,14.8664205221448,12.0681332524442,15.6703118674131,13.5613625041831,12.8504995337594,11.2079930794701,14.5147211678577,18.8110181375431,16.3219219682145,18.4544415638388,15.263712651551,10.2051180597471,13.2883661378769,12.0615719780069,8.72251792320216,13.647235320215,17.6292273925678,15.0408351427402,12.4208607624001,-21.6145797659791,-44.8934656927655,-42.6546154799866,-86.3365685781417,-46.5522183784763,-39.2471463099999,-48.9302897293549,-40.5105227106818,-43.1013801474062,-41.8915264638359,-43.5755758722796,-51.6702433124174,2.82967087380871,-6.0970606833388,-7.88886867639891,12.5494567580117,15.8641260255577,7.70142362762255,6.52886819556678,7.79725640340536,-22.5635298658145,-31.6635311299175,-23.1440624523548,-28.6223924512499,-31.3954117238591,-16.1333482995365,-37.0742113614214,-53.717005240211,3.35527898084004,-6.20342144082304,-8.5716917589823,-5.20806399690314,19.3114035534173,20.0051021866051,-17.872580142473,-29.0518147808582,7.89682228517846,-2.00377736437943,-8.20018861225482,-5.03409262234839,-12.8752759758996,-10.9713121056348,-10.4891131326832,-13.0781040707449,-14.4129466372248,-13.6485804783913,-6.75600390983913,17.763845275321,24.033182469283,17.681682824837,-19.5948151973787,-20.8083961431008,5.95204560903834,8.29649490463019,5.94747683607141,8.93910709965501,8.31049301617095,7.01825867559561,11.7307857839415,6.68552766188144,9.32990238684965,1.4237063458515,4.38634833441126,0.182497291907933,0.569561931500509,1.57480355140448,-1.74955049884704,-6.68264630127682,-5.50196102936917,-4.95350210221715,-5.68040517091745,-9.27434698541182,-16.429321027676,-16.0411051492753,22.0522423211218,21.8507032181208,22.4561232600035,17.6093026733105,14.8752039603077,20.4852677785456,15.8156093648566,20.5153235763992,18.4941093742813,21.4807568861897,23.5933286115491,17.4821456473699,23.911911219098,26.959366659678,22.6658265250698,24.2969697238832,24.5641034662981,23.0079583541032,24.2476440106171,27.7581903037264,33.2132774038834,32.4583919222776,26.8992179202585,16.5582222510094,4.87551784037529,-14.2214931313732,-10.3816751928896,27.9457801868032,21.069939358615,23.9818707337436,18.2087046536123,20.0552206378411,37.9018644225203,26.2088315624883,6.35261046027051,-12.2571296920514,-12.9216118862042,-17.1444783937998,-14.624555719536,-22.8096332678674,-15.8833588463241,-12.7329537242666,-35.9851181403094,-6.9466787493955,-9.59181859730084,-7.49131190646251,25.3873819349578,27.1884763832176,26.3631691667832,31.3749242453317,18.9067860619714,37.9847161071077,32.2586764297848,33.0791921907486,33.2497328003236,32.3434831460662,43.5842532911829,46.6958404866908,32.0391335028478,48.0994726685192,-12.3004756214563,-8.87928774022926,30.6647070061548,32.7901976649676,28.7032162881908,26.5622286762396,20.4104860016365,22.3927061265185,14.8099263072686,27.232524937514,33.438293362024,18.0617277273239,19.7131684562862,17.0170040715705,16.514150597171,16.0832026625975,11.5882736991295,93.5564275912347,19.2143784343516,41.5746390626841,37.4458008699696,28.2527171510274,37.2826399281557,37.5701560325641,16.2715112157323,53.1663715900602,62.4709187479603,36.0347979960306,48.4797615610918,33.2236858111865,35.2783620770548,38.3813835018626,45.9779116453749,43.2706724308358,43.8794997055499,36.0850112294065,40.0935520095593,47.3705784435021,42.5776015410366,44.1902450925602,66.8543176282665,96.132161248509,86.0732379492812,46.9113960995759,47.5440636409943,25.8843800711563,57.8159980562225,18.1038324285524,44.1998020366332,53.4579050453553,614.847461682225,626.906827136162,553.560870788009,587.76683394312,525.335487628197,473.561051933123,473.247232179574,400.989599535336,458.24390789173,322.650256104558,334.381809391769,205.275790677534,168.788194188609,96.2908381076452,156.373781283644,-20.2628331921671,-140.573769639591,-258.237757534141,-352.950086347954,-470.074384417105,-445.090090200505,-542.322698280435,-333.046430872164,-516.248651607769,-498.251214425066,-453.554783585663,-585.298088015042,-620.780475953709,77.0526228339635,53.3634389423501,92.0113186456217,90.498775588874,69.9268690450486,55.165814735155,77.147785321887,51.8775039989892,51.4763298607845,50.6373142204889,44.7921965949278,47.9177466627351,50.8196381658688,49.1022820298906,52.1028786891161,42.9149884756761,51.75376960432,54.2421197128201,42.6764590745488,41.5612421565584,45.0103908272359,41.5564900898929,38.9586207644007,5.47975419132127,54.983152812267,3.65204699288278,25.4409344010576,-1.16104644193702,-1.89919731036664,-46.6779360726472,-559.385669196459,-1.92398448902145,-5.37691189572354,9.12167160019552,0.891356589793118,12.1134155544475,12.7980497865438,17.837823810705,29.8089956497161,11.7913648295037,10.722179233405,7.92616713189547,38.9785485751255,-4.50711871172801,-0.325063133936979,-2.69568954784328,-2.95626242433018,-12.9533034043012,-8.28729148182491,-4.85974158804704,-5.24498642438764,-7.27868768894154,-10.096540861271,-2.43284627151388,-6.61705853663158,-9.59708928832574,-3.56159737038317,1.24016671584808,-1.56888219827616,-1.107056199199,-1.73144731520568,0.529721956272589,2.21706846267257,3.78823393139512,2.74036616315645,3.85905615357773,4.6474261125304,0.224393696815073,5.50434302064266,5.22708489664568,9.52727624611061,12.0074146541118,9.42938014956728,8.21614882412449,6.74910688081794,-10.1002911496468,-25.9903068459921,-50.4812048654465,-72.3550920143102,92.5053097803377,37.3895479859797,-2.95861653385592,-14.1874301266821,-25.1368825599777,-60.7915784546209,-57.2398553909223,-130.104235406556,-64.5669881521377,-52.1193581823491,32.5566671000032,-89.9288192415253,-58.3500802790043,-155.59908358266,22.6575305870981,-24.5259216268988,-36.1941052876279,-39.1178573846207,-39.1736746370399,-37.8797112576452,-44.1555848472023,-49.5033009115127,-50.3159774977312,4.27928634457351,3.09541157140726,5.20162096905764,2.48233601484593,1.37122427214161,16.7570786885988,-9.00195476495965,10.3818080340086,-13.1740987412639,34.2472668002701,-6.28132603707239,5.71462282156473,22.0832442840651,24.1385721670006,0.137785913418721,-0.949951178744004,1.0600516313682,43.127490185984,44.4570601617444,60.6367102961315,14.3089303323501,8.94465867196699,142.791868023327,0.975371133744215,-43.2848699234096,-62.8173056178151,-50.4797221962,-94.0265776148616,-16.1641844873131,-2.12258620585629,-18.0200522090546,-29.6276207363691,-37.5176672708248,-32.5192037896684,-36.9785039354835,-31.3672752346996,-31.3016943615419,-32.5977966948393,-28.356976564131,5.6698261588325,11.4160212871158,10.3076842820512,3.66294345476204,1.7676076118378,-9.9620414437486,-3.70309295298091,-3.20409778765865,23.2886887693449,-8.29152001040815,-9.27011608317117,-10.7576521283233,-19.1323985822494,-7.15950900573784,-2.4609709230205,30.5590806653273,5.69894105888232,41.2538515391749,11.4145913187091,55.0083506293771,40.9445595397964,84.7620065134041,34.5228962796841,62.0257228268062,48.1787297201671,86.8559574623842,124.125869655406,62.2277745613771,55.8647667604147,58.7604910124915,51.315664048583,86.6356131060279,144.335339271107,80.6114672714657,49.5734915992483,55.0779294927373,56.0412266915421,54.8542087705754,50.8579224509239,58.3677713440326,39.6694820169321,36.3740815557841,45.6321456308717,38.8000395654476,15.7531651968615,-6.94771691325184,38.8572219434093,0.198046467058802,45.9033364083504,48.7436191558506,-15.8725213134637,3.3971253252609e-18,1.05318748770267e-18,4.91999322527628e-18,-3.54793166845135e-18,7.81403695564931e-18,-1.6615679814175e-18,9.21206042563902e-18,5.00947651611484e-18,9.31539053160675e-18,8.98189760027416e-18,9.44528080093069e-18,2.23500002382881e-18,1.62170434800671e-17,1.62177663326428e-17,1.0212370488667e-17,4.09754906799218e-18,1.31741182638897e-17,5.46814851934392e-18,2.10903679516771e-17,2.02437612045101e-17,1.35999798355706e-17,2.19412151403728e-17,1.36248111690291e-17,8.20882849668864e-18,2.87850099974247e-17,2.77474582612741e-17,1.3184034772258e-17,1.08737564132049e-17,1.56379833243134e-17,1.13568274086646e-17,2.84789982470311e-17,2.78728057004148e-17,1.81748297014828e-17,2.95724366521853e-17,1.52329586168528e-17,1.34354383919899e-17,3.12986650993101e-17,1.9338378962205e-17,3.05255638091656e-17,1.36000473733638e-17,1.46213454810525e-17,3.07026299455279e-17,1.89257696984393e-17,2.76808753617129e-17,2.75016040177213e-17,1.84001526828336e-17,3.0393965473349e-17,1.21103126071213e-17,1.48521445446687e-17,2.87191932118114e-17,1.68193671795077e-17,2.82243841000416e-17,1.03772784870423e-17,1.46667115000599e-17,2.48345621837896e-17,1.54595962027792e-17,2.3941885736312e-17,7.27211350948747e-18,1.35739714729425e-17,2.08038426437215e-17,1.27718265430707e-17,2.03671513173941e-17,4.79074965611763e-18,1.17664360189747e-17,1.57056471541249e-17,9.46052323399613e-18,1.6353008916658e-17,2.12352967769733e-18,9.49729077137639e-18,1.04589185113886e-17,6.1488115825128e-18,1.04566115178151e-17,-4.96398751588155e-19,7.45808745133804e-18,3.86244453291475e-18,2.50014463896143e-18,4.75686355026231e-18,-3.41076468016357e-18,4.5189200347713e-18,-2.39457350788287e-18,-1.30014879641191e-18,-1.2753326367367e-18,-5.8737091873214e-18,1.69703675295229e-18,-8.53786192534534e-18,-4.98397898894171e-18,-7.21136110371492e-18,-8.51877064752812e-18,-1.37501161808186e-18,-1.43031371536737e-17,-8.38922616656303e-18,-1.32288585768637e-17,-1.13789304625842e-17,-4.49628692613165e-18,-1.9304690001689e-17,-1.17576876542299e-17,-1.79782989726372e-17,-1.22485565031953e-17,-7.13060194851502e-18,-2.40075003718555e-17,-1.42595171192313e-17,-2.30909642366326e-17,-1.27346462865789e-17,-9.06468662212358e-18,-2.8328033098956e-17,-1.62873608391135e-17,-2.63981384959323e-17,-1.40950999140221e-17,-1.15517449626095e-17,-2.98785625655475e-17,-1.76269755271751e-17,-2.94885335920519e-17,-1.48123028347102e-17,-1.32991131498359e-17,-3.0850313637127e-17,-1.88686145538504e-17,-2.81408088258848e-17,-2.87686736381349e-17,-2.24139523193174e-17,-3.1334676936234e-17,-1.3238295445868e-17,-1.69414536527085e-17,-1.42972334138404e-17,-1.07864125783098e-17,-2.48871922799117e-17,-2.96202281572893e-17,-1.2016225399062e-17,-1.48994409115379e-17,-2.67800051769195e-17,-2.65175685498758e-17,-1.65238172163796e-17,-2.74449179531413e-17,-9.92058237687063e-18,-1.4233653755826e-17,-2.30572254438265e-17,-2.32307599099947e-17,-1.36233696411649e-17,-2.35470786735683e-17,-6.72944835124159e-18,-1.14973822773144e-17,-2.20876643360869e-17,-2.007545414442e-17,-4.09984445501429e-18,-1.280504577867e-17,-2.52865744551464e-18,-9.59838986441721e-18,-1.49666041660497e-17,-1.32165552703258e-17,-9.23801728557769e-19,-1.00498302380512e-17,1.11226498259521e-18,-6.96671739042182e-18,-7.50074178244513e-18,-2.73817073175552e-18,-2.88974238123815e-18,-5.2682728235731e-18,481.04995961988,450.682863624535,23.5304241158157,466.522562841267,469.429516419298,334.169614707977,377.615054792228,11.0999505501508,524.584805691414,25.0341719642511,535.042149570558,20.8148027736584,478.84873225651,512.529850054852,343.872690785704,419.954046064459,34.5078994090994,534.771542726288,544.134722122684,698.053811554846,28.326902347654,438.929742196586,310.339757628158,400.752115825611,357.739737743673,475.100611533766,567.189557152707,21.8024043310679,403.679371845075,371.087382635805,297.352583317676,289.48224100456,27.3157569461669,458.164575092911,416.069232901896,894.888592656079,821.742547408168,19.2787409081547,241.217293948111,93.6036687708951,197.261823532315,219.001978709118,582.308319715722,281.821823217628,195.368386473972,11.4749630501735,95.1495724344636,200.257014039394,19.1596924410178,94.8402610936683,11.5703259776295,291.202854903339,151.997034147585,608.156418474239,6.56528424387309,102.067609578619,-82.8517377215537,-3.57038980905455,43.2455232177082,130.462304292559,22.8763789129613,-45.6708296656505,2.08631106997233,-9.94734249722694,-148.54134903225,-146.842061521767,-3.03950656499774,218.981681377421,-208.08122287412,-3.20009112600027,-328.291305378481,-114.004172534231,-164.41175953235,-280.617269126816,-150.116860452461,-290.426988220355,-257.050933786094,-68.4537990417765,-7.38589953964038,-230.738306281843,-302.4620061185,-355.825432243483,-240.799453865865,-506.07891538434,-386.734796035555,-117.699294361899,-373.302694609087,-12.7047996302224,-554.32311225614,-309.305127582222,-590.149667766262,-322.089163790843,-18.8186437899101,-292.283078503832,-498.482403402037,-317.861646511005,-19.5883276406029,-334.25544708781,-452.044752238746,-415.455041850989,-31.3201750780205,-411.289906636276,-531.987404766177,-562.589438618379,-18.4648298329126,-629.087351783301,-451.007264853832,-433.118028074946,-395.452896604925,-429.046099087351,-510.010641687052,-542.59608770876,-24.0625060652028,-499.765286997589,-656.575465978224,-633.133329764972,-558.533684276201,-33.1788237440364,-515.558010627657,11.9463015589617,13.0495613424053,23.1263430708437,15.6028235111753,7.93807724846542,7.43131138631237,12.05004551496,8.55879951249708,4.67891765054462,112.564301392693,537.779665954166,5.8820820124059,3.2532589684351,11.1053835932132,8.63262846892272,2.50659439285126,61.6029716698322,310.038443856477,3.01004125890984,-0.090555228931792,4.8432020871147,-3.03780134296139,-7.13447903585114,-23.7006577128178,-111.292813993618,-1.90651160724388,-12.7735133882368,-47.7842709888763,-265.432926463077,-3.98080616885997,-10.7350021319967,-10.0616191575175,-89.7874300416771,-398.285437008705,-5.07030974159347,-13.1580185006848,-8.81454195455146,-8.01819169593555,-24.258282279726,-8.02855605907935,-14.2076060111784,-10.8731613942701,-11.9380386301723,-13.7546348146475,-127.122019452335,55.3237086789164,33.4460464192565,35.1640276025116,22.7150358891643,-18.1478889261805,-1.33282490952724,-20.6441438316783,-10.0406327517134,-33.9206889047477,-18.9003714288204,-34.642304535418,-31.4262134630474,58.9192271509389,49.9459020379112,38.3785405675379,24.0448821216445,-6.65318656437779,-19.8352728758827,-32.4441303914243,-43.8795812029118,-64.39309405419,-21.2176306974283,48.992040722457,29.8870756039016,-5.75653382196439,-0.128219995144155,-6.80065337663858,-19.2495442438229,-21.1833105510415,-33.5870009858311,-32.7230496224744,51.3434144055523,31.5739528786669,-5.1958060041232,-10.0558756536936,-12.3792775216899,-24.3504630284042,-33.4070127393119,61.802037771423,48.0173140233471,38.0673907305287,27.2961336185211,-13.7655418057712,-25.8224557934664,-23.4402962589358,-42.5506358407452,-35.9615760128028,57.0024909209717,35.0394515658123,-26.1143300421802,49.9786277790738,54.4869834934978,76.4909581872956,36.1195743306071,49.9014682918115,33.7259914226022,-27.6193289882981,-32.2408763960936,-27.7698684987907,-56.9645183204458,-147.481669996613,-54.6076194661328,-0.272285183832052,7.59035170155235,0.886036812200468,3.16562696674746,-0.462336147324789,1.66953335607092,8.48295811933535,6.16637473771013,8.55281563316611,-117.59862506025,-0.513423829002006,21.3238593541007,10.0571914729279,-22.1684285009355,-40.1376252525758,-9.12857551220098,-5.33393095223757,65.4541662875303,35.5175243481059,-14.2388497222629,-53.9997268771039,-37.8813316782314,36.0831440849221,-18.821643359036,20.2051385386083,-26.782186619283,-22.3751276393045,-19.2243804284663,-22.675285108148,-14.7635846344205,-15.9711754076488,-17.1538858960517,-18.4191242412314,-12.2535979026759,-16.2720338663625,-21.9089936953273,-21.6418746626025,-32.8071072231377,-24.4866904800751,-35.8999954706103,-28.8048433613357,-24.1571068759742,-29.9246533207931,-28.9335246052572,-72.0694463714041,-54.6846082782354,-90.6591629257233,44.8769093093954,36.3048251508864,18.3565467501623,25.0027014553613,-17.1042987776569,-17.0642038351655,-12.6026919637746,-8.64247102079889,-15.3257750053774,-13.7760261197011,-12.6941389910909,-9.33446973244926,-10.3484179150814,-39.3409160854378,-67.2386694447506,-52.8202851239869,-57.2786162474002,-52.6377059804627,-44.1588010305649,-78.0958906563015,-47.7726654476052,-48.0958252621713,-45.9317218823018,-45.4642195068813,-36.2221489710205,-41.8586769647872,-43.4612895124481,-33.8639980939582,-45.4509127771047,-38.3397864413325,-73.3983274270384,-127.797913515289,38.4432960386308,38.509042592806,42.6137722984646,22.0354449233698,28.070161321026,26.2257254807262,25.9821089922352,31.0262226042759,23.4763556022483,31.5639870585398,19.1576652482014,-5.11486358393829,-38.0724585290618,-42.1752334964933,-59.4602423068308,-37.9971743112129,-41.9771836647766,-64.2512518204963,-34.3210092003684,-94.2033841301752,-35.332780278809,-31.6212567291167,-40.6292740804031,-29.9822269041517,-29.6215738283457,-24.2717309323945,-25.6055552166572,-29.9488333432144,-23.8116272985772,-30.625406129608,-26.3133327158911,-34.0409531692416,-21.4396933551414,-25.4019869343192,-23.1121001490475,-18.1768989066605,-19.2460359436755,-24.6697749298304,-20.7063323014523,-22.2658113942096,-17.1548467205195,-19.8693548984289,-22.3830524565569,-17.4732155486995,-14.2617146592371,-15.9584233933574,-27.2759502091611,-23.2789025940949,-17.8111441097995,-19.0856821480046,-15.6676931325304,-16.5659596821398,-10.6717009398402,-20.9760568090611,-18.6653184115532,-12.2305680346947,-10.0902665828671,-12.6375588078759,-11.246395886505,-7.13404652821783,-8.14301400203252,-6.19290293492079,-7.79791136059278,-8.10417627763279,-10.2802810180301,-7.76461197237688,-3.76934065048872,-57.3046473410385,-54.2548272205153,-51.0194642375796,-51.1205626270264,-47.4204636963488,-42.1215275517436,-57.266434982408,-52.2857407771856,-45.3526844854339,-44.8467981968728,-49.6999816354863,-57.7484622631825,-50.1675098014158,-37.9064840536996,-40.1169862202648,-47.3447837936242,-40.3147158884218,-39.9013334420592,-56.5282014274169,-54.3889475374835,-44.1966664132823,-72.0124062897754,-26.157752313529,-74.5810172079501,-43.6771255810104,-765.370319800785,-46.0669243094563,46.9455111222953,41.406820590982,37.8613531453933,60.8576345151344,74.7233063146578,32.1294936489196,37.8235004111912,56.365510701738,42.6057384938248,44.9400626549661,39.8079538668027,41.8373311023456,44.3554311159893,35.6481613353923,12.7728776293685,23.4504967671239,13.5826299045384,23.7913779943849,-7.49207297019624,-4.29231519488367,-6.86227836809064,-5.11353197818124,-1.02709726340087,-3.26011176641816,-1.73884394664951,-2.90031787761034,-0.703795611311815,-4.54204352748962,3.32627347457756,1.14825805079963,0.814333828557855,2.90263597803332,1.90824781104217,1.31029548691442,6.14211089706456,0.242208692987918,2.20788319871039,-1.95753759573508,2.51867712827875,5.18355420432709,0.197762938449477,0.387510043184952,-0.584472916264042,-2.23706918492909,-1.05370956728212,-1.46237309759032,-3.94692500300596,-3.90101396635685,-70.1380471185752,-61.4506454162885,-31.0682016192343,-32.2495209785244,-34.0302479077674,-31.3291998218876,-34.8293241071257,-42.3550022762528,-27.6758422316138,-25.4749632051377,-28.1142313383627,-24.703935770808,-29.4830833227693,-32.6132656884908,-22.0875813749201,-11.777785759812,-14.0887828505282,-15.1836052597882,-13.4657803989908,-14.1136406904791,-12.5446746584214,-16.7506877375084,-16.4432857164608,-19.0900256659724,-19.5334639256834,-17.0387042315619,-17.8910880135101,-13.5196339561344,-20.037097413184,-35.7758069982732,-33.5857165808355,-82.5364011245604,-43.669422525478,-49.7590450765201,-148.456339257492,-64.5343850515347,-68.846015135467,-56.3560157058999,-75.0497659784568,-50.8557329494304,28.7365867866039,24.7780134993915,26.1831640243229,29.0611230185302,22.8798196406222,30.3016686261206,34.6491463257855,28.1407323529369,28.667368044345,24.6499606754515,24.5785031531816,21.34631899598,17.8447436384529,49.9833901998071,49.4094594762136,38.8195583186573,36.7619916471957,17.5085136318421,13.0851304333928,16.3672305165357,-8.90559446032945,-5.42060315460462,-43.9899481130293,-43.5482859400777,-49.6488718779233,-57.2727655124151,-40.6397261869529,-35.0185397583172,-38.0471586786158,-9.56611618087408,-8.99740338669045,-36.8232503575885,34.7868116449399,31.6639560670871,32.5070754258104,22.7770568809122,17.3001761329453,18.445785137671,55.5505699375684,67.5295091962494,44.3026773844682,49.9528604373847,40.3495069628521,36.4571558277454,35.423082565189,38.9652731136486,44.6415424475788,39.8945979280271,34.9897679979364,36.7527817008187,29.5702928007987,32.486001740306,30.3935988174498,17.1686821708404,11.9845237152068,-36.7827544944662,-45.7781455856086,-48.0865216877023,-45.7780615635525,-56.8803542044968,-55.6529117040833,-68.2245558227813,-35.2626032142003,-42.0744357329073,34.3125919867313,23.9349824458807,28.0396560627883,21.4750809471942,19.8338505831251,19.5724240011348,21.5420997828269,19.2417901085319,153.948864704999,14.357851609904,14.4359601657417,-51.1223551964732,-45.8046671339999,-56.1435408362036,-41.7471269559854,-47.8072721914003,30.7899654608929,23.6370880441014,15.9362561802804,18.9407831772891,15.4221584126307,13.3629379098759,12.4164401076801,-39.6844873723201,-39.4534215254921,-37.4920120068556,-34.6803137858651,-27.6875682925295,-29.3623667447442,-26.0849891900797,-31.2836901131145,-27.4299510522764,-21.6943625521668,-24.3399287438297,-22.4478812883537,-23.3960318491857,-25.902766168683,-50.0229146356765,24.8916522231674,29.3945468876796,26.7260981085713,10.5180967714626,10.1243563180377,-32.3665007288165,-28.1032838255864,-22.441371127624,-29.9781149034298,27.1112733521208,27.6008665371972,23.3166816066661,20.1627990216786,19.7218067305682,20.3719149392134,22.1143240638566,25.4694954793141,10.0500474197218,13.5220155841063,11.3745034328157,11.3149300404956,7.73432759588959,7.23886766781575,6.14152139554613,4.59503157111993,6.04175503455724,9.56661958521591,3.49051748187674,5.27363969941194,10.6157282370701,7.71123957980181,-23.3512792729485,-29.5346253575307,-26.5019044072754,-32.9368978040813,-29.5127628712518,-29.0453949739923,-24.9041945546761,-22.8033813322923,-33.8146589289742,-31.748202644269,-36.0221382657952,14.0358745896915,19.9768898604965,16.9037972360189,17.4820138047838,14.2144954002689,24.8211139305346,10.9269188827212,7.83624817255729,7.4431786750213,8.52081574126538,11.0838147083705,6.06189477627604,7.63185218497563,-17.2002830556687,-37.7961531660306,16.4627477003438,15.2009566743244,14.1354462995822,16.489591203316,19.1708442005567,19.5774852083527,19.4927896272919,21.9802213516608,25.21816142168,22.3364062393483,16.8518138880016,15.2683026404104,13.7890722261768,16.7787783380452,19.9702825555462,16.9925106441135,15.1080059402718,14.7970833215682,12.1049930262546,11.9548249573551,10.3563063361466,7.49830783125186,7.85793843703955,4.90560769996084,-20.5125303029508,28.3781672998401,12.745586166242,20.1703202904735,22.1536984879839,16.6123724599052,12.7949901981847,12.7163111177007,-20.2353592363756,-17.5098854366493,25.809847498655,28.9981551279181,11.5606479880311,7.64033785299957,9.23609728939502,9.88046018108616,9.05917063358251,9.84068605497165,13.2203809690562,20.6714935276428,-20.8483754871785,-17.5636637977414,-16.611122102387,-17.6653813922754,-17.7161325171208,-15.811366487961,-13.189240439969,-14.5919213633625,-20.578935639697,-10.6929657520141,-15.3860139577849,-12.7048901846468,-8.01853694671464,-13.5427735945821,-9.90233230937498,-12.3879447926746,-14.3600135121761,-6.59564131974924,-11.920750055521,-9.02752925159339,-16.0935608056553,-9.1106814879327,-15.5652668266895,-13.1683430505318,-20.767864116671,-10.5253359264288,-17.8679053898096,-20.9108918566109,-13.5155311758998,-11.2336351406637,-8.56657580514483,-20.3381432305822,27.6306516236936,32.4523757527545,31.6146983599929,11.2342871640093,20.541773288627,-23.1375305784895,-23.5608669198887,-19.6855807069014,-16.1648166859,-14.0228097485925,-13.9414955276532,-15.0546037414592,-9.40838588467385,-13.016878550861,-11.6982139541103,-11.8983673277464,-10.7644238063741,-10.6142509984076,-12.1420408487072,-9.1186169121631,-6.34044791920979,-7.0736345363024,-12.6960124991476,-6.67290201129961,-17.4617079130156,14.1050866974872,12.4343727686569,12.1477897211875,15.6731567371895,10.4071347773511,12.8318235068506,10.4539882527248,11.3534051446225,13.4311763735861,5.99549918784244,8.47269210123268,7.06934479013031,8.09911910270896,8.34276407520198,6.88395442127203,25.9763366514879,19.1083045508758,-27.6507662182063,-23.0188910917048,-20.3776284070197,-26.7284226259057,-14.6369214205181,-10.4859968466342,-6.47408313935468,-16.7118625400295,-11.8395979992048,-7.08039384713109,-14.3803577934466,-9.87599032841116,-17.4042703917943,-15.4817701982883,-8.47425877440633,-9.1655302034059,-16.1328117974868,-19.0823246822859,-8.13206599439211,-10.8342328090005,-22.0205370465475,-5.95528611015166,-13.1223840151784,-19.2412326177405,-21.6880201429547,-5.24833503527377,11.3134204709225,9.18672446781454,6.82120894308038,2.8945188776079,5.61931473218675,-2.06894851554197,23.4269037811236,25.9287720564579,25.4216239961826,31.8856909951105,29.9324788393794,27.8905404912938,29.2489074134845,29.8791501967162,37.4123286916544,36.4265145781736,37.0977733857344,33.0263156052609,41.5954546394783,33.5756834868666,34.9992144582308,37.5142899016634,39.8395959411039,31.5640140009377,30.3889688109905,22.7805500745595,25.5513444811907,17.7968802282657,16.520034143655,-29.9736239214921,-32.7581302356067,-34.1719613213427,-32.837514998143,-7.44888259652768,-4.39218089581079,-8.83730224669751,-5.06136003666171,-3.05225837710657,-7.67392354541144,-5.69850285792099,-2.29424738615334,-3.25279061946117,-1.62447288729676,-5.07746166126368,-17.6787639372049,-19.3740566712929,-28.1511046626505,-21.6668521334193,-6.54032256430792,-4.08183293309528,-2.92480880586513,-1.42382487318797,-2.90007810993354,-1.61497072358409,-3.55023650417526,3.29588913507085,5.95648526996033,4.03652782853452,1.09535236285604,6.41774078587723,3.96275715639659,-4.69361522916334,28.2339855657262,27.0823601429442,38.5872681325882,18.8911200502319,21.5007800575444,15.8966421988003,20.6719591313236,21.1166900441266,19.8614527325517,16.9560849988428,16.5339738005733,13.0560659404197,14.5630024968194,11.6661554353967,11.8816719573565,13.9593435847709,-31.3182743666764,-4.83950356769294,-10.2877679061047,-2.37328218355583,-24.8590323809188,-22.7289173629857,-28.6086844091194,-26.0094112776372,-25.9839794896799,-26.2003689462125,-4.98415019198231,-3.3023433125675,-1.08390197267565,6.27674460811431,3.91193322511071,6.02479583633469,2.61402915871017,3.38247426998304,3.12789498496116,-0.0513756881917619,1.30596296922422,-0.95468295880507,2.30401831633115,-3.13349315344057,36.1514900003883,16.1617585805273,-28.4999498696736,-2.24507478668551,7.45178532086642,0,-0.426315240247013,-2.10231101727463,2.11109832273856,2.1909954186266,0.906813302006824,-3.80364148504662,2.69733720911392,0.153918789426069,37.9507843838166,52.77362630229,41.1606500223388,52.9940970352654,39.2187553635377,52.9948232730464,50.3332586666648,52.2960374910646,46.9654839617303,49.6363235823818,40.5113798456337,31.6821253066783,-27.8071198930875,9.60636130103787,8.38766215491586,8.66557225346829,8.49527847115941,10.8248015604308,3.9208129378448,14.1520119601479,6.47024640015393,11.5444819482945,3.19579319162287,10.5612393561821,8.28737993294828,3.91763610938488,1.92470034757139,5.29862726901653,4.26553627194883,6.47978971111775,6.53469214810694,4.90307883105585,-2.44874122628277,2.7098004985778,0.0385390294875546,-0.926081020911667,2.06014194848966,-3.05007085563785,-6.51608783281611,-2.12821888618638,-3.8578918570121,-5.53773627485897,-5.75315089843585,-7.95966758576969,89.7151725187714,64.6288253160728,75.1810430632632,28.6962972637153,33.544505051004,33.6575404631956,-23.7348543856573,-35.5340910706579,10.4671741741833,-0.225747849046117,1.27745401305699,-0.044015629376643,2.16040945171025,4.2605335530771,3.78128946284583,6.25621090843529,1.7421525902013,2.52252337971407,0.88360539329699,-5.05374940075318,-7.80463431309855,-4.77217609992188,-8.03755747063922,-9.42437987595938,-11.9997756540557,23.9933617506519,-19.9645838126921,-32.361716115385,6.91650183644587,6.25360067139363,-11.1507576949979,-11.1711916990457,-24.1392212894189,-31.2099967611151,-35.6462761951793,-30.9632647874259,-26.3625771383736,-40.0509878752478,-23.2509583159575,-25.6354625538343,-39.7931522344185,-35.8089610360574,-20.3756298952788,-41.3817991036823,-40.536162328496,-19.1768219994254,-19.9217549721117,-15.8913805977242,-22.6582003508337,-38.206452889915,3.44769615580772,11.1966880076346,-28.4135073353263,-34.4756330190733,-24.4286421202444,-34.4571342289449,-38.5666960356331,-32.3433203362408,-43.457880947804,-32.4949188889119,-27.9640451678118,-54.5484480186909,-48.6702094681715,-55.3118382850071,-44.3239997172831,-0.260996804229284,9.04870592067877,4.45448076336929,-32.6298776508959,-26.5462866596187,-130.236549887308,-77.1352000808807,1.21072226335508,2.27107327889113,-0.975740027563054,4.56481823029868,-1.16065845889375,-0.455995225168416,2.10345905577366,-3.81468274069859,2.22181552324771,2.72909778738191,7.42934402890484,0.326222947860783,5.05355717297015,-2.14146407193981,4.99893974738182,-4.35004886836163,0.258350604266205,4.23004585776178,1.75429715130062,-1.92176068971259,-3.87070510246468,-2.64735234914348,-6.25283721918616,10.5030696602253,15.4519390322965,12.7356351407699,15.2790491647103,12.403093334788,16.1052531167069,13.9377682834428,13.2071747785505,11.5190793267195,14.9175881312796,19.333132043026,16.774949144176,18.9666584192983,15.687368434901,10.4883687592642,13.6571946984048,12.3963499472617,8.96461794486122,14.0260245638372,18.1185398102838,15.4583047938075,12.7656110611186,-22.2145086254631,-46.1395174764663,-43.8385262982257,-88.7329047401043,-47.844310086047,-40.3364802678508,-50.2883865894084,-41.6349226273145,-44.2976912537973,-43.0542571745688,-44.7850486363794,-53.1043896375043,2.90821050948143,-6.26628917177406,-8.10783013847184,12.8977763349589,16.3044467320561,7.91518241189439,6.71008182510273,8.01367509818663,-23.1897975464676,-32.5423761652443,-23.7864432500015,-29.4168284035051,-32.2668149041407,-16.5811414720058,-38.1032338813657,-55.2079609764579,3.44840726341689,-6.37560205178959,-8.80960548742352,-5.35261771608761,19.8474060311092,20.5603587897226,-18.3686469981325,-29.858169671683,8.11600450562353,-2.05939370676902,-8.42779099245222,-5.17381763565703,-13.2326389094099,-11.2758290950854,-10.7802463282771,-13.4410966500281,-14.8129887722786,-14.0274070578867,-6.9435218613414,18.2568941132561,24.7002414593107,18.172451182386,-20.138683977639,-21.3859487719736,6.11724909541134,8.5267703381449,6.11255351272684,9.18721871621958,8.54115697776174,7.21305570465655,12.0563825344871,6.87108949230638,9.58886081947434,1.46322238241359,4.50809471958525,0.187562641009263,0.585370549741999,1.61851340413973,-1.79811058406484,-6.86812815737887,-5.6546720809377,-5.09099026524459,-5.83806907336163,-9.53176343623609,-16.8853291450183,-16.4863380439816,22.6643188328104,22.4571858609711,23.0794097898212,18.0980620655118,15.2880763937818,21.0538517375061,16.2545834550786,21.084741756553,19.0074272395468,22.0769713913576,24.2481791281266,17.9673757010241,24.5756042346955,27.7076440848078,23.2949335261621,24.9713503268458,25.2458985664729,23.6465614805057,24.9206555414431,28.5286396777394,34.1351368084321,33.3592989145692,27.64582587205,17.0178081184046,5.01084149177349,-14.6162213308959,-10.66982636795,28.7214362586018,21.6547513154362,24.6475055280981,18.7141008969718,20.6118683161317,38.9538590734229,26.9362773235407,6.52893192427485,-12.5973355122114,-13.2802609076293,-17.6203362397815,-15.0304712232503,-23.4427317328756,-16.3242133741761,-13.0863663970258,-36.9839120617295,-7.13948902396239,-9.85804671062799,-7.69923888245473,26.0920277459994,27.9431129204203,27.0948986837042,32.2457587802933,19.4315580779658,39.0390103686055,33.1540401689145,33.9973299597226,34.1726040517204,33.2412007591608,44.7939669035472,47.9919185335062,32.9284036635137,49.4345095784306,-12.6418845403706,-9.12573902564402,31.5158289294026,33.7003141743045,29.4998955666101,27.2994832390218,20.976994336337,23.0142324662712,15.2209869105631,27.9883840753515,34.3663982531191,18.563044515949,20.2603222199421,17.4893237722088,16.9725132227863,16.5296040053341,11.9099149199618,96.1531563507059,19.7476879071528,42.728574326121,38.4851371351947,29.0368924882883,38.3174475391672,38.6129438685195,16.7231392034806,54.6420440766995,64.2048459138434,37.0349708190766,49.8253536742069,34.14583410888,36.2575394542926,39.4466875641664,47.2540630391799,44.471682371422,45.0974081034042,37.0865777583749,41.2063785919024,48.6853843479609,43.7593747796856,45.4167784615052,68.7099093150146,98.8003814259062,88.4622651722985,48.2134570539654,48.8636847571203,26.6028204379212,59.4207244098845,18.6063178647136,45.4266006657229,54.9416692615229,631.913013751121,644.307095930584,568.925367598144,604.080742894753,539.916567776481,486.705093818658,486.382563762671,412.119366374144,470.962810965648,331.605655758531,343.662827098916,210.973374082541,173.47303700907,98.9634624801809,160.714052770502,-20.8252433124889,-144.475499962656,-265.405340019228,-362.746480497184,-483.121651232806,-457.443899206863,-557.375271190677,-342.290384147759,-530.577519812584,-512.080550273502,-466.143536500412,-601.54347507335,-638.010703279942,79.191276124359,54.8445811810355,94.5651617483947,93.0106369255993,71.8677416989556,56.6969832646796,79.2890799184501,53.3174029997542,52.9050939727016,52.0427908245469,46.0354375789265,49.2477396311695,52.2301753076653,50.4651526651373,53.5490331333025,44.1061261415354,53.1902342642337,55.7476503947778,43.8609761781247,42.7148055788261,46.2596879556683,42.709921614989,40.039946479511,5.63184887545786,56.509251423234,3.75341229403337,26.1470666009283,-1.19327215602726,-1.95191095498427,-47.9735171690332,-574.911837651555,-1.97738612035829,-5.52615211487526,9.37485043128738,0.91609685993012,12.4496324810182,13.1532692492949,18.3329259783296,30.6363666629914,12.1186429968571,11.0197813532854,8.14616384055237,40.0604274015565,-4.63221716923038,-0.334085504823414,-2.77051043140752,-3.038315703356,-13.3128320475609,-8.51731146744257,-4.99462735773907,-5.39056495321679,-7.48071312043476,-10.3767779192762,-2.50037174296748,-6.80071995517409,-9.86346369363216,-3.66045217447786,1.27458847243388,-1.61242769941784,-1.13778337364147,-1.77950493299489,0.544424786145341,2.27860485933676,3.89337920308333,2.81642707965961,3.96616714911716,4.77641890708914,0.230621912031987,5.65712018616406,5.37216655515686,9.7917129381121,12.3406894462561,9.69109966204536,8.444194191963,6.93643340011106,-10.3806322997163,-26.7116872897745,-51.8823485373661,-74.363361816452,95.0728639772543,38.4273229102535,-3.04073515295581,-14.5812128819826,-25.8345755731412,-62.4788942721559,-58.8285904731446,-133.71537596106,-66.3590932951391,-53.56597002722,33.4603017935006,-92.4248610127017,-59.9696304850037,-159.917852754264,23.286407328215,-25.2066569615074,-37.198699803938,-40.2036028314579,-40.2609693335478,-38.931091030855,-45.3811561950628,-50.8773021263446,-51.7125351602376,4.39806114398673,3.18132703928931,5.34599585717582,2.55123511121358,1.40928362941754,17.2221839654433,-9.25181076557312,10.6699628961737,-13.5397557245662,35.1978253553926,-6.45566894848994,5.87323646054551,22.6961812784682,24.808556327068,0.141610264703143,-0.97631778560843,1.08947415880506,44.3245259960628,45.6909991828872,62.3197276318687,14.7060854169118,9.19292437658146,146.755163329287,1.00244329050952,-44.486273926042,-64.5608470108552,-51.8808247155235,-96.6363557405714,-16.6128335412829,-2.18150017667705,-18.5202122624384,-30.4499575530011,-38.5589982418628,-33.4217986609121,-38.0048700240972,-32.2378974656389,-32.1704963462,-33.502572971064,-29.1440456995351,5.8271964328683,11.7328815131658,10.593781783932,3.76461119537796,1.81666888575875,-10.2385453696258,-3.80587507300814,-3.29302992292277,23.9350837788033,-8.52165736200552,-9.5274151021331,-11.0562388249857,-19.6634326428194,-7.35822654356561,-2.52927701525342,31.4072708503284,5.85711943878786,42.398883104497,11.7314118549144,56.5351486246413,42.0810064738907,87.1146395252749,35.4811051375659,63.7472932462656,49.5159664689425,89.2667096520617,127.571076188268,63.9549530781481,57.4153352271986,60.3914324759627,52.7399687604786,89.0402494729676,148.341474778235,82.8488989562407,50.9494410092195,56.6066587014968,57.5966929359544,56.3767284430339,52.2695222017425,59.9878125787995,40.7705382188295,37.383671448292,46.8987000298253,39.8769637405394,16.1904061024048,-7.14055600283457,39.9357332582541,0.203543395169078,47.1774179105648,50.0965348342445,-16.3130750374694,3.43120142806059e-18,1.06375186836635e-18,4.9693450091718e-18,-3.58352048919971e-18,7.89241849918592e-18,-1.67823494419406e-18,9.30446535274805e-18,5.05972589474871e-18,9.40883194897626e-18,9.07199379533864e-18,9.54002512995237e-18,2.25741900554931e-18,1.63797144409011e-17,1.63804445443128e-17,1.03148093901737e-17,4.13865102623593e-18,1.3306266055117e-17,5.52299877455339e-18,2.13019225684763e-17,2.04468236239997e-17,1.37363993863904e-17,2.21613044897747e-17,1.37614797995827e-17,8.29117014055974e-18,2.90737485236335e-17,2.80257892469196e-17,1.3316282034634e-17,1.09828295871028e-17,1.57948458113629e-17,1.14707462021158e-17,2.87646672109288e-17,2.81523940291998e-17,1.83571389500317e-17,2.98690737482334e-17,1.53857583560651e-17,1.35702074499343e-17,3.16126177584853e-17,1.95323596153752e-17,3.08317615942884e-17,1.3736467601646e-17,1.47680102119581e-17,3.10106038570185e-17,1.91156115241181e-17,2.7958538463335e-17,2.77774688728373e-17,1.85847221156089e-17,3.06988432134366e-17,1.2231789508273e-17,1.50011243896384e-17,2.90072715387817e-17,1.69880799675738e-17,2.85074990640081e-17,1.04813715582858e-17,1.48138312913413e-17,2.50836743044603e-17,1.56146693128379e-17,2.41820435407657e-17,7.34505909253017e-18,1.37101301374087e-17,2.10125231640674e-17,1.28999390006786e-17,2.05714514463494e-17,4.83880501532252e-18,1.18844635407699e-17,1.58631883678622e-17,9.55542045779393e-18,1.65170437283221e-17,2.14483051551374e-18,9.59255680534853e-18,1.05638305026294e-17,6.21048947647319e-18,1.05615003679167e-17,-5.0137806005316e-19,7.53289851373572e-18,3.90118818949491e-18,2.52522325030904e-18,4.80457900254118e-18,-3.44497759748002e-18,4.56424870795959e-18,-2.41859314955144e-18,-1.31319041242531e-18,-1.28812532522248e-18,-5.93262756651521e-18,1.71405949815937e-18,-8.62350405885575e-18,-5.03397260534313e-18,-7.28369728762564e-18,-8.60422127902339e-18,-1.38880417289286e-18,-1.44466099800608e-17,-8.47337735496219e-18,-1.33615554607366e-17,-1.14930709687675e-17,-4.54138856968082e-18,-1.94983327254714e-17,-1.18756274223665e-17,-1.81586368481343e-17,-1.23714201100947e-17,-7.20212804830722e-18,-2.42483163478077e-17,-1.44025523989767e-17,-2.33225865630803e-17,-1.28623857940831e-17,-9.15561326262327e-18,-2.86121877519548e-17,-1.64507371438268e-17,-2.66629346382526e-17,-1.42364859471103e-17,-1.1667618947574e-17,-3.017827036906e-17,-1.78037893249014e-17,-2.9784329067898e-17,-1.49608830328979e-17,-1.34325147477895e-17,-3.11597689436722e-17,-1.90578830640357e-17,-2.84230854576259e-17,-2.90572482965421e-17,-2.26387836311624e-17,-3.16489908252549e-17,-1.33710869896923e-17,-1.71113910736076e-17,-1.4440647020615e-17,-1.08946096180614e-17,-2.51368323259293e-17,-2.9917344643435e-17,-1.21367585242069e-17,-1.50488951799407e-17,-2.70486317720584e-17,-2.67835626788483e-17,-1.66895653829019e-17,-2.77202141980417e-17,-1.00200943914534e-17,-1.43764296036853e-17,-2.32885093410253e-17,-2.34637845078573e-17,-1.37600238119482e-17,-2.37832762219914e-17,-6.79695053377719e-18,-1.16127109575653e-17,-2.23092226974829e-17,-2.02768282986465e-17,-4.14096943797353e-18,-1.2933491453919e-17,-2.55402206495268e-18,-9.69467000966214e-18,-1.51167321399376e-17,-1.33491287414016e-17,-9.33068258242377e-19,-1.01506387203774e-17,1.12342196158729e-18,-7.03659958646772e-18,-7.57598070464558e-18,-2.76563695051541e-18,-2.9187289946302e-18,-5.32111815282191e-18,485.875306437055,455.203602225707,23.7664546046317,471.202187314212,474.138300148813,337.521624732054,381.402860125792,11.2112926467187,529.846844637393,25.2852863435222,540.409084712856,21.0235932335793,483.651998860935,517.670967377933,347.322031048215,424.166548069735,34.8540434618141,540.135763448079,549.592863625457,705.055894541121,28.61104565824,443.332586832818,313.452733592021,404.772005876331,361.32817647104,479.866281248225,572.878958574764,22.0211012880925,407.728624803398,374.809709776442,300.33528669972,292.385998051673,27.5897575945467,462.760361725788,420.242766873905,903.865098600932,829.985335306552,19.4721233401038,243.6369118658,94.5425944607266,199.240530095525,221.198757816539,588.149375391883,284.648739654224,197.328100227183,11.5900668462014,96.1040048740068,202.265764951826,19.3518807139602,95.7915908731573,11.6863863462323,294.123871194807,153.521695755547,614.25675291881,6.63113971854157,103.091435909269,-83.682812251168,-3.60620390436142,43.6793131882562,131.770953949814,23.1058487631685,-46.1289475558152,2.10723857298903,-10.047122938943,-150.03134713211,-148.315014299378,-3.06999544257873,221.178256885065,-210.168457362826,-3.2321908055049,-331.584350879963,-115.147732906874,-166.060951564696,-283.432102844909,-151.622662293419,-293.340221898492,-259.629376794751,-69.1404498037696,-7.45998649489911,-233.052810897324,-305.495961426787,-359.394668832345,-243.214880486433,-511.155324257794,-390.614080255047,-118.879919999788,-377.047243243283,-12.83223974997,-559.883452116733,-312.407725312599,-596.069378939844,-325.319996452325,-19.0074110501484,-295.21493037154,-503.482612695422,-321.05007352076,-19.7848154950225,-337.608318084833,-456.579151759659,-419.622414955975,-31.634343500871,-415.41549983556,-537.323698178184,-568.232696876125,-18.650048033397,-635.397641577424,-455.531257479681,-437.462576196068,-399.419630907289,-433.349802241777,-515.12648917311,-548.038795378678,-24.3038737957951,-504.778364722102,-663.161485312882,-639.484204214775,-564.136259812922,-33.5116360192466,-520.729503018213,12.0661332875623,13.1804597200684,23.3583202775729,15.759333314914,8.01770302333429,7.50585386163804,12.1709178850946,8.64465166810083,4.72585123808866,113.693418613453,543.174060751546,5.94108437827108,3.28589196734687,11.2167801878983,8.71922119276222,2.53173770080424,62.2209027128166,313.148397382815,3.04023457400693,-0.0914635761355831,4.89178358953174,-3.06827311569172,-7.2060440261799,-23.9383957917272,-112.409177096949,-1.92563556626716,-12.9016427663595,-48.2635885219438,-268.095448101982,-4.0207370949365,-10.842683480543,-10.1625458928938,-90.6880755590706,-402.280584139194,-5.12116933005081,-13.2900047973738,-8.902959427861,-8.09862108794725,-24.5016138149393,-8.10908941461024,-14.3501205776485,-10.9822285996138,-12.0577874744564,-13.8926056885599,-128.397163165977,55.8786532875784,33.7815391688324,35.5167531880306,22.9428873294106,-18.3299279354709,-1.3461942951938,-20.8512224349281,-10.1413489753031,-34.2609427286379,-19.0899584879058,-34.9897967877023,-31.7414455425379,59.5102379171134,50.4469025984767,38.7635104960703,24.2860730688524,-6.7199237752859,-20.0342378044216,-32.7695730573877,-44.3197313230027,-65.0390124359063,-21.4304618695476,49.4834732297039,30.1868688005457,-5.814276830981,-0.129506152502854,-6.86886980711412,-19.442633807997,-21.3957974624331,-33.9239076315223,-33.0512900893665,51.8584332228919,31.8906669121721,-5.24792442854727,-10.156744776763,-12.5034523733735,-24.5947192161892,-33.7421139473452,62.4219656194389,48.4989691794455,38.449239557301,27.5699374279661,-13.9036220862304,-26.0814773407774,-23.6754226874591,-42.9774554903823,-36.3223016981164,57.574275166321,35.3909275460249,-26.3762793404428,50.4799566071047,55.0335350254541,77.2582286012114,36.4818848755901,50.402023143504,34.0642922624894,-27.8963747266066,-32.5642802488322,-28.0484242784854,-57.5359216677959,-148.961038599974,-55.155381081148,-0.275016439534071,7.66648948868212,0.894924527137664,3.19738094095094,-0.466973778432213,1.68628021843891,8.56804952022374,6.22822880529518,8.63860776528892,-118.778240898046,-0.518573913706501,21.537756091449,10.1580737948014,-22.390796996701,-40.5402403206958,-9.22014301348077,-5.38743488925847,66.1107281407231,35.8737958114743,-14.381677690156,-54.541390804112,-38.2613141719174,36.4450892030579,-19.0104407075449,20.4078135393814,-27.050835096174,-22.5995695060568,-19.4172175778259,-22.9027378137082,-14.9116761469571,-16.1313800992378,-17.3259541959349,-18.6038839751326,-12.3765120791688,-16.4352564282936,-22.1287598357897,-21.858961368323,-33.1361908604068,-24.7323131469277,-36.260103449868,-29.0937808333244,-24.3994235344524,-30.2248234544121,-29.2237528613284,-72.7923652007469,-55.2331421575696,-91.568552677293,45.3270634922828,36.66899392169,18.5406787777488,25.2535001582314,-17.2758696758896,-17.235372546475,-12.7291078553866,-8.72916247393962,-15.4795057731783,-13.9142115668895,-12.8214721754151,-9.42810253069142,-10.4522214898469,-39.7355394720973,-67.9131314067735,-53.3501182309405,-57.8531702684004,-53.1657076608223,-44.6017519668282,-78.8792599298601,-48.2518665670642,-48.5782679538444,-46.3924567468619,-45.9202649186016,-36.5854884282915,-42.2785556689092,-43.897243805397,-34.2036832600241,-45.9068247108256,-38.7243676324878,-74.1345760817849,-129.079837030489,38.8289155204998,38.8953215694314,43.041225261335,22.2564794789283,28.35172929724,26.4887921715051,26.2427319991018,31.3374424297818,23.7118437371474,31.8806011262567,19.3498331866479,-5.16617008593767,-38.4543581902329,-42.5982875361958,-60.0566799225629,-38.3783188066186,-42.3982510935128,-64.8957474020291,-34.6652785827795,-95.1483254833328,-35.6871985995069,-31.9384452611217,-41.0368208111479,-30.2829745505668,-29.918703812735,-24.5151973692163,-25.8624010637379,-30.2492460233547,-24.0504784983314,-30.9326054194884,-26.5772781829487,-34.3824133476368,-21.6547520076235,-25.6567908156048,-23.3439344869624,-18.3592289111255,-19.4390903165673,-24.9172340919352,-20.9140347087972,-22.4891567245528,-17.3269246583025,-20.0686616991076,-22.6075738160749,-17.6484870009627,-14.4047719822079,-16.1185001712228,-27.5495515615678,-23.5124101046838,-17.9898052775675,-19.2771280337484,-15.8248536346314,-16.7321305740132,-10.7787473227244,-21.1864647863125,-18.8525476857432,-12.3532512017094,-10.1914806766768,-12.7643244440661,-11.3592069563542,-7.20560718012124,-8.22469546964551,-6.25502310324947,-7.87613115047526,-8.18546816930658,-10.3834011208344,-7.84249774061831,-3.807150394668,-57.8794624764039,-54.7990500244248,-51.5312335547775,-51.6333460484395,-47.8961319278709,-42.5440428744077,-57.8408668147932,-52.8102119423888,-45.8076111045007,-45.2966503392797,-50.1985154018917,-58.3277292457607,-50.6707332793621,-38.2867188474482,-40.5193942610545,-47.8196928903195,-40.7191073286606,-40.3015782991169,-57.095228139266,-54.9345156840786,-44.6399971720576,-72.7347529578056,-26.4201371746987,-75.3291292632767,-44.115244896252,-773.047645539527,-46.5290153712024,47.4164151690467,41.8221667851817,38.2411352371295,61.4680891823387,75.4728456526907,32.4517802364474,38.2029028072912,56.9309054850117,43.0331108706919,45.3908503204866,40.2072620460221,42.2569956890204,44.8003544219367,36.0057432006393,12.9010006302804,23.6857255155596,13.7188754205561,24.0300260761187,-7.56722493671827,-4.33537082569654,-6.93111295048661,-5.16482512302411,-1.0373999365677,-3.29281350481587,-1.75628605413905,-2.92941057237031,-0.710855289511702,-4.58760414929314,3.35963887208489,1.15977607137092,0.822502300603574,2.93175192534384,1.92738918568997,1.3234388830023,6.20372157735919,0.244638255494741,2.23003017524066,-1.97717338951946,2.54394163650994,5.23554973261123,0.199746671628369,0.391397103803319,-0.590335684714221,-2.2595089221236,-1.06427918485516,-1.47704196353837,-3.98651607170895,-3.94014450768605,-70.8415923443017,-62.0670484953099,-31.3798425305383,-32.5730115438954,-34.3716007031385,-31.6434587707183,-35.178692327336,-42.779859552172,-27.9534548465914,-25.7304991014855,-28.3962413749358,-24.9517375956695,-29.7788241277045,-32.94040492765,-22.3091389041438,-11.8959271293163,-14.2301055180103,-15.3359099421781,-13.6008538134868,-14.255212703578,-12.6705085863222,-16.9187116114186,-16.6082260824438,-19.2815151209552,-19.7294014496293,-17.2096171598106,-18.0705510877197,-13.6552475683487,-20.2380868162483,-36.13466925983,-33.9226103428346,-83.3643125555938,-44.1074645724157,-50.2581713002815,-149.945484635846,-65.1817207040578,-69.536600163832,-56.9213152461597,-75.8025799890432,-51.3658599003121,29.0248395861609,25.0265583878884,26.4458037869125,29.3526311969568,23.1093240043013,30.6056205490678,34.9967072071399,28.4230082175883,28.9549265200984,24.8972210834614,24.8250467804898,21.5604410229459,18.02374183853,50.4847667990336,49.9050790542929,39.2089520363599,37.1307461930395,17.6841391543837,13.2163855997771,16.5314079831368,-8.9949252689593,-5.47497648871717,-44.4312053086075,-43.9851128823779,-50.1468929692913,-57.8472608454872,-41.0473777613591,-35.3698059750287,-38.4288045604228,-9.66207259318223,-9.08765511819275,-37.1926193812372,35.1357534284154,31.9815729103526,32.8331494848656,23.005530445304,17.4737118503283,18.6308123034038,56.1077901607076,68.2068885323229,44.7470715248988,50.4539307967103,40.7542473876337,36.8228526068817,35.7784066958583,39.3561284766713,45.0893356974387,40.2947752220582,35.3407456090268,37.1214438629411,29.8669083921647,32.8118644120837,30.6984728796619,17.3408988901467,12.1047388450661,-37.1517173096113,-46.2373399471926,-48.5688710564833,-46.2372550823227,-57.4509133130295,-56.2111585035841,-68.9089070771765,-35.6163175982933,-42.4964786839318,34.6567769372155,24.1750710043656,28.3209180448996,21.6904945678065,20.0328012448385,19.7687523283067,21.7581856602781,19.434801892028,155.493104860219,14.5018732695713,14.5807653217252,-51.635156598907,-46.2641275296341,-56.7067090699001,-42.165886717118,-48.2868204464066,31.0988154230777,23.8741884642969,16.0961106018418,19.1307756011354,15.5768559893006,13.4969797253299,12.540987732217,-40.0825570759004,-39.8491734389422,-37.8680892877885,-35.0281873037789,-27.9652985300318,-29.6568966580789,-26.3466441742394,-31.5974925602368,-27.7050971662267,-21.9119757567796,-24.5840792636366,-22.6730529370794,-23.630714267426,-26.1625932984614,-50.5246876991516,25.1413370062702,29.6893995956578,26.9941839692283,10.6236023717936,10.2259123613514,-32.6911647021766,-28.3851840491455,-22.6664774738116,-30.2788213029241,27.3832228533381,27.877727081166,23.5505680733996,20.3650493205072,19.9196334956125,20.5762628514123,22.3361498453613,25.7249765296467,10.1508580805678,13.6576530861074,11.4885995320646,11.4284285671364,7.81190958566318,7.3114797663355,6.20312616263108,4.6411237087932,6.10235905882363,9.66258104710465,3.52553038871655,5.32653886306345,10.722213165374,7.78858997682142,-23.5855127841741,-29.830883173617,-26.7677414113607,-33.267283353042,-29.8088013877072,-29.3367453865401,-25.1540051482029,-23.032118953681,-34.1538491805765,-32.0666645535094,-36.3834714428441,14.1766665415943,20.1772753297762,17.073356930516,17.6573735111589,14.3570790732654,25.0700911536032,11.0365253221312,7.91485251379436,7.51784018950839,8.60628688681819,11.1949949485008,6.12270081955659,7.70840625781875,-17.3728167591592,-38.1752812456282,16.6278832868441,15.353435406397,14.2772370417848,16.6549960533492,19.3631443352845,19.7738643038069,19.6883191528743,22.2007019670709,25.4711213742123,22.5604596969961,17.0208521445942,15.4214569107231,13.9273885370875,16.9470839849546,20.1706017478472,17.1629602107597,15.2595522961542,14.9455108548864,12.226416567413,12.0747421830075,10.4601890385925,7.57352233881843,7.93676035037406,4.95481518460551,-20.7182887087675,28.6628248421996,12.8734354101935,20.372646034128,22.3759192289899,16.7790089120493,12.9233350072714,12.8438667076159,-20.438337376864,-17.6855247195787,26.068742573873,29.2890316839851,11.6766112780345,7.71697704442626,9.32874332702012,9.97956973537175,9.15004194395023,9.93939664039961,13.3529928151964,20.8788464719787,-21.0575027104295,-17.7398425241076,-16.7777460123647,-17.8425804340189,-17.8938406365055,-15.9699681579792,-13.3215399196909,-14.7382909449395,-20.7853601484285,-10.8002254393414,-15.5403489743368,-12.8323312127336,-8.09896980189002,-13.6786193173673,-10.0016612600091,-12.5122065845764,-14.5040568575914,-6.66180130212327,-12.0403254804607,-9.11808317155536,-16.2549931285515,-9.20206949668511,-15.7213999044264,-13.3004329113782,-20.9761837412981,-10.6309141417402,-18.0471359222691,-21.1206461730738,-13.6511036336828,-11.3463182092043,-8.65250596368409,-20.5421523833581,27.9078109378201,32.7779011268177,31.9318211058879,11.3469767729076,20.7478250268617,-23.3696200055886,-23.7972027763382,-19.8830440936219,-16.3269637668543,-14.1634706488484,-14.0813407760015,-15.2056144271374,-9.50276012580097,-13.1474490918804,-11.8155571496377,-12.0177182345834,-10.8724002797406,-10.7207211087311,-12.2638360115414,-9.21008452007832,-6.4040480912389,-7.14458920371901,-12.8233644763767,-6.73983698517838,-17.636863933748,14.2465729066441,12.5591002732808,12.2696425501809,15.8303720439669,10.5115273329881,12.9605377858545,10.5588507892105,11.4672896098078,13.5659026798026,6.0556392259921,8.55768052508764,7.14025642768562,8.18036026654786,8.42644920867236,6.9530064332138,26.2369017567883,19.2999773588707,-27.9281272990988,-23.2497904622235,-20.5820336302382,-26.9965318034804,-14.7837423915573,-10.5911804569786,-6.53902378812907,-16.8794969636563,-11.9583593988881,-7.1514163162767,-14.5246052095845,-9.97505504621159,-17.5788502645515,-15.6370657326847,-8.55926291334714,-9.25746839217463,-16.2946378417518,-19.2737368897471,-8.21363764402722,-10.942909526992,-22.2414220632181,-6.01502277638003,-13.2540128671825,-19.4342388091222,-21.905569727722,-5.30098037127574,11.4269038552758,9.27887525337132,6.8896315636514,2.92355340338637,5.6756813151485,-2.08970185713306,23.6618958715207,26.188860047765,25.676624854169,32.2055320313269,30.2327274697127,28.1703067153577,29.5422992316753,30.1788638946771,37.7876066800737,36.7919039990967,37.4698961125974,33.3575980920421,42.0126929962015,33.9124766082626,35.3502868254815,37.8905906491338,40.2392215176736,31.8806283389101,30.6937964302365,23.0090586787025,25.8076465477458,17.9753983169752,16.6857443626885,-30.2742852725564,-33.0867225913651,-34.5147356247203,-33.1669036516737,-7.5236013262768,-4.43623826590766,-8.92594802540667,-5.11212985184427,-3.08287516638311,-7.7508996303577,-5.75566376621804,-2.31726067011938,-3.28541892042799,-1.6407677542218,-5.12839298965599,-17.8560972174392,-19.5683952027179,-28.433484570532,-21.8841893847576,-6.60592765175854,-4.12277724492417,-2.9541471658005,-1.43810706713199,-2.92916839961652,-1.63117027559535,-3.58584844441776,3.32894975139486,6.0162339647979,4.07701769101211,1.10633969365629,6.48211627215532,4.00250703528019,-4.74069624612254,28.517196840691,27.3540196196866,38.9743317789799,19.080614309995,21.7164514624426,16.0560992578932,20.8793167460668,21.3285086942606,20.0606802676776,17.126169184788,16.6998238464124,13.187029564822,14.7090819971733,11.7831770562764,12.0008553952003,14.0993678645564,-31.6324237237495,-4.88804797076394,-10.3909631088666,-2.3970882548415,-25.1083899588138,-22.9569080464107,-28.8956542372973,-26.2703081500209,-26.2446212592524,-26.4631812890372,-5.03414552569818,-3.33546866986948,-1.094774446167,6.33970578088088,3.95117329604161,6.08522974518681,2.64025013020958,3.41640341003688,3.15927047477944,-0.0518910307430682,1.31906290641551,-0.964259253916541,2.32712961117089,-3.16492479772662,36.5141206871206,16.3238749860419,-28.7858289964528,-2.26759482698405,7.52653316744918,0,-0.430591550527268,-2.12339901358989,2.13227446332158,2.21297299612825,0.915909423091769,-3.84179529623921,2.72439383235348,0.15546272790025,38.3314635481604,53.3029913809395,41.573526912995,53.5256736258969,39.6121533725856,53.5264071484705,50.8381447489693,52.8206119412065,47.4365883533217,50.1342188035013,40.9177439953199,31.9999244031187,-28.0860493364595,9.702721406681,8.47179765492659,8.75249543193673,8.58049345582382,10.9333836748487,3.96014207996824,14.2939688702419,6.53514856311844,11.6602830789487,3.22784975913143,10.6671777139216,8.37050951560903,3.95693338517346,1.94400675537882,5.35177707958537,4.30832328702239,6.54478760173853,6.60024075761727,4.95226094895996,-2.47330421697851,2.73698213938144,0.0389256092586489,-0.935370413868343,2.0808069526026,-3.0806657021836,-6.58144982496627,-2.14956676081633,-3.89658984631855,-5.59328455539382,-5.81085997380596,-8.03950993038003,90.6150932307652,65.2771082860643,75.9351738964595,28.9841459245396,33.8809854257441,33.9951546808048,-23.972935486748,-35.8905287125704,10.5721689768564,-0.228012295062783,1.29026798078055,-0.0444571441774889,2.18208022553142,4.30327038655704,3.81921906393919,6.31896611044892,1.75962788624499,2.54782646917108,0.892468719001358,-5.10444287468048,-7.88292154000463,-4.8200451503069,-8.11818111810706,-9.51891455064107,-12.1201437740424,24.234035904015,-20.1648458416774,-32.6863320949374,6.98588032708923,6.31632969047396,-11.262609431136,-11.2832484059034,-24.3813585400072,-31.5230600002312,-36.0038391508408,-31.2738530916208,-26.6270165695456,-40.4527338956014,-23.4841855212873,-25.8926083973527,-40.1923119404736,-36.1681558612648,-20.5800150716975,-41.7968943107409,-40.9427750679022,-19.3691820966419,-20.1215873908135,-16.0507848784113,-22.8854816815134,-38.5896966303231,3.48227952774098,11.3090004645013,-28.6985193687825,-34.8214534120116,-24.6736825118826,-34.8027690630316,-38.953553326114,-32.6677517902308,-43.8938010499039,-32.8208710073964,-28.2445487073037,-55.0956160929524,-49.1584137298122,-55.8666638233598,-44.7686077391385,-0.263614827728497,9.13947226093249,4.49916305497716,-32.9571835223941,-26.8125688560501,-131.542935032782,-77.9089327977414,1.22286685395972,2.29385410653433,-0.985527543271634,4.61060730205322,-1.17230086627463,-0.460569251346803,2.1245585679072,-3.8529473052272,2.24410225303337,2.75647299666893,7.50386676993552,0.329495245948893,5.10424871868667,-2.16294480722933,5.04908343311945,-4.39368361781279,0.260942084092949,4.27247687331031,1.77189426778743,-1.94103761021124,-3.9095316196962,-2.67390758104075,-6.31555858018108,10.6084245256442,15.606935334318,12.8633845673362,15.4323112319489,12.5275070796586,16.2668027235874,14.0775761443106,13.3396541551872,11.6346256471264,15.0672244319792,19.5270600650626,16.9432163809617,19.1569103941832,15.8447262972881,10.593576161942,13.7941881637437,12.5206960501277,9.05454081004888,14.1667177114683,18.3002844225783,15.6133649499182,12.8936611720712,-22.4373393447,-46.6023367104124,-44.2782646021431,-89.6229724574047,-48.3242298631447,-40.741090023624,-50.7928225659997,-42.0525568820638,-44.7420353790283,-43.4861285814125,-45.2342813773307,-53.6370725582509,2.93738237415987,-6.32914546747858,-8.1891586815275,13.027152177825,16.4679944230412,7.99457853176678,6.77738974464466,8.09405918481968,-23.4224112564245,-32.8688043212228,-24.0250418319845,-29.7119046143427,-32.590478942531,-16.7474646503515,-38.4854422459164,-55.7617445356353,3.482997768374,-6.43955485014858,-8.89797344370169,-5.40630909749898,20.0464926656806,20.7665969565949,-18.5529004016631,-30.1576729168465,8.19741504464599,-2.08005120537087,-8.51232901938268,-5.2257154977431,-13.3653737132852,-11.3889354054528,-10.888381515212,-13.5759224651904,-14.9615758510129,-14.1681140731278,-7.0131713861851,18.4400265387749,24.9480062270352,18.3547365723328,-20.3406923817357,-21.6004683198406,6.17861039034987,8.61230121345036,6.17386770691314,9.279374459515,8.62683216349546,7.28540888687919,12.177318470404,6.94001245789279,9.68504538016351,1.47789976742237,4.55331480550701,0.189444056389757,0.591242322231695,1.63474849229854,-1.81614718714574,-6.93702141821678,-5.71139332866316,-5.14205729722621,-5.89662995141232,-9.62737526082797,-17.0547035886026,-16.6517102620154,22.8916615371518,22.6824508426012,23.3109162151821,18.2796012683294,15.4414290119293,21.2650400651199,16.4176309743039,21.296239937753,19.1980881609312,22.2984224932771,24.4914093199982,18.1476040066671,24.822118783346,27.985575699856,23.5286018408536,25.2218345508034,25.4991367465378,23.8837569274553,25.1706312528928,28.8148065880871,34.4775417301216,33.6939215117061,27.9231373970011,17.1885114405799,5.06110456229282,-14.7628346621472,-10.7768539472582,29.0095370852699,21.8719671851126,24.8947413088583,18.9018195016483,20.8186231680682,39.3445999437582,27.2064714633601,6.59442275376217,-12.7236976739852,-13.4134734013016,-17.7970834397176,-15.1812398389156,-23.6778825913072,-16.487959341664,-13.2176339611935,-37.3548926611142,-7.21110426880152,-9.95693143843521,-7.77646890210899,26.3537533329577,28.2234064913813,27.3666839328463,32.5692116075648,19.6264733981923,39.430605380019,33.4866038434483,34.3383525596272,34.5153848022392,33.5746387297388,45.2432891024254,48.4733189508947,33.2587040089039,49.9303804306833,-12.7686935673959,-9.21727807451237,31.831959929466,34.0383574492011,29.7958050128801,27.5733206480552,21.1874117177972,23.2450851067508,15.3736665632153,28.2691317551196,34.7111229269544,18.7492478945812,20.4635507607285,17.6647568038745,17.1427621980149,16.6954102183506,12.0293816591281,97.1176556042238,19.9457742827647,43.1571788525404,38.8711763194212,29.3281576135566,38.7018046518286,39.0002650647315,16.8908867417871,55.1901510003084,64.8488760040286,37.4064635819223,50.3251450305068,34.4883463337376,36.6212339086952,39.842371930165,47.7280621283075,44.9177717779255,45.5497740797501,37.4585881834204,41.6197141796298,49.1737408267599,44.1983191254694,45.8723479985419,69.3991290843782,99.7914346346537,89.3496181408478,48.6970796941672,49.3538297431099,26.8696697170053,60.016765626959,18.7929553124307,45.8822687279562,55.4927816846709,638.251647376711,650.770052911369,574.632180699051,610.140194791074,545.332397545844,491.587166518999,491.261401207821,416.253279771416,475.686974964532,334.931947058578,347.110062247284,213.089619347257,175.213121485241,99.9561515328371,162.326153608477,-21.034138500037,-145.924714082652,-268.06758494226,-366.385141181184,-487.967778907209,-462.032456837796,-562.966226843053,-345.723852507266,-535.899670860087,-517.217160731492,-470.819359011604,-607.577475980722,-644.410502001114,79.9856330607916,55.3947197268329,95.5137320437104,93.9436139935258,72.5886372561211,57.2657030042172,80.0844179114592,53.8522226286098,53.4357777856994,52.5648249917685,46.4972128015547,49.7417370194451,52.7540891031898,50.971361758229,54.0861762125717,44.5485487031403,53.7237782807731,56.3068475052193,44.3009396737386,43.1432719928113,46.7237126033717,43.1383390385962,40.4415817451233,5.6883411867086,57.0760880501645,3.79106226303216,26.4093442751661,-1.20524170697506,-1.97149030869939,-48.4547330048337,-580.678700220591,-1.99722101199768,-5.58158419627448,9.46888828283579,0.925286103123864,12.5745130537445,13.2852079068881,18.5168210691616,30.9436758964936,12.240203459017,11.1303192835267,8.22787690376778,40.4622681085165,-4.6786823105884,-0.337436671152661,-2.79830104530281,-3.06879263556559,-13.4463712579145,-8.60274746210056,-5.04472778648182,-5.44463697821048,-7.55575113784653,-10.4808659693924,-2.52545263236453,-6.86893705348988,-9.96240275846026,-3.69716967314161,1.2873736963086,-1.62860174269904,-1.14919632414868,-1.7973549053166,0.549885837240935,2.3014612352406,3.93243316113895,2.84467827721792,4.00595123317466,4.82433051649667,0.232935249112554,5.71386599050058,5.42605402831816,9.8899322808555,12.4644772261954,9.78830976668007,8.52889675716016,7.00601182156279,-10.4847590125993,-26.9796285974652,-52.4027733297934,-75.1092906001047,96.0265269646805,38.8127821678409,-3.07123635433576,-14.727475048237,-26.0937186923162,-63.1056115758118,-59.4186920751129,-135.056656738447,-67.024732348254,-54.1032829981721,33.7959375367996,-93.3519622419958,-60.5711777043749,-161.521967018003,23.5199901177727,-25.459501514362,-37.571834909996,-40.6068797117118,-40.6648216493935,-39.3216035180472,-45.8363684099824,-51.3876454347107,-52.2312565777399,4.4421774980545,3.21323849878835,5.39962081561971,2.57682620415014,1.42341996212003,17.3949373539855,-9.34461442294384,10.776991844978,-13.6755711755071,35.5508899615809,-6.52042488701646,5.93215009788123,22.9238435906751,25.0574075865216,0.143030738037356,-0.986111096729502,1.10040252613876,44.7691392969493,46.1493193907402,62.944848356571,14.8536001626061,9.28513735258112,148.22724444293,1.01249866302234,-44.9325096984482,-65.2084480996986,-52.4012342227008,-97.6057019015494,-16.7794746184717,-2.20338250869618,-18.7059859965523,-30.7553969420358,-38.9457783168198,-33.757048184517,-38.3860917141538,-32.5612714371307,-32.4931942262159,-33.8386327308046,-29.4363856641137,5.88564824893874,11.8505724542701,10.7000465703449,3.80237349903529,1.83489164464368,-10.3412468278088,-3.84405128901825,-3.32606185887801,24.175173353745,-8.60713694974169,-9.6229833091761,-11.1671424551746,-19.8606738653168,-7.43203591475878,-2.55464784951137,31.7223129190432,5.91587140846705,42.8241805430452,11.8490880540763,57.1022450228823,42.5031153351257,87.9884746439699,35.8370112847791,64.386733687779,50.012654404202,90.162131893942,128.850724329046,64.5964765272344,57.9912606577184,60.9972107338234,53.268996224897,89.9334001235452,149.829467966597,83.6799450105857,51.4605079329231,57.1744724076076,58.1744375410219,56.9422357499471,52.793830680618,60.5895421802844,41.1795019509628,37.7586619797949,47.3691345208652,40.2769641484306,16.3528098673209,-7.21218195039387,40.3363231751965,0.205585111324323,47.6506481828158,50.5990463719337,-16.4767092778144,3.43906514409128e-18,1.06618980236566e-18,4.98073388237846e-18,-3.59173329398779e-18,7.91050654769437e-18,-1.68208116637327e-18,9.32578956669629e-18,5.07132190520268e-18,9.43039535298461e-18,9.09278522496891e-18,9.56188920588045e-18,2.26259261671558e-18,1.64172538934012e-17,1.64179856700828e-17,1.03384491366752e-17,4.14813609352295e-18,1.33367616992464e-17,5.53565652575557e-18,2.13507428646608e-17,2.04936841823435e-17,1.3767880821195e-17,2.22120943396367e-17,1.37930187143258e-17,8.31017205837615e-18,2.91403804912201e-17,2.80900194743763e-17,1.33468006336438e-17,1.10080003195408e-17,1.58310448468358e-17,1.14970351544506e-17,2.88305908179821e-17,2.82169144127656e-17,1.83992103150814e-17,2.99375284627061e-17,1.54210198343448e-17,1.36013080017676e-17,3.16850683721411e-17,1.95771243814915e-17,3.09024226216244e-17,1.37679491927881e-17,1.48018559190901e-17,3.10816747596702e-17,1.91594211761978e-17,2.80226145637093e-17,2.78411299932487e-17,1.8627315061634e-17,3.07691996149953e-17,1.2259822639308e-17,1.50355043538622e-17,2.9073751152698e-17,1.70270136878967e-17,2.85728332864619e-17,1.0505393036265e-17,1.48477820124063e-17,2.51411617169228e-17,1.56504554151592e-17,2.42374645725627e-17,7.36189268861695e-18,1.37415513676701e-17,2.10606802072242e-17,1.29295034139728e-17,2.06185976299545e-17,4.84989471360057e-18,1.19117006611842e-17,1.58995440325709e-17,9.57731981713188e-18,1.65548979156291e-17,2.14974609347137e-18,9.61454127472672e-18,1.05880409621465e-17,6.22472283661789e-18,1.05857054871709e-17,-5.02527131237392e-19,7.55016260505826e-18,3.9101290333211e-18,2.53101062215849e-18,4.81559026075938e-18,-3.45287288609151e-18,4.57470917100304e-18,-2.42413614378266e-18,-1.3162000161207e-18,-1.29107748410382e-18,-5.94622411555994e-18,1.71798782397639e-18,-8.64326762812738e-18,-5.04550959374346e-18,-7.3003902531435e-18,-8.6239406555223e-18,-1.39198707015694e-18,-1.44797190938425e-17,-8.49279685997738e-18,-1.33921778185534e-17,-1.15194110855791e-17,-4.55179664126908e-18,-1.95430195078827e-17,-1.19028442919365e-17,-1.82002532809413e-17,-1.23997732501484e-17,-7.21863407133619e-18,-2.43038892653351e-17,-1.44355605404564e-17,-2.33760378691837e-17,-1.28918641419687e-17,-9.17659633350782e-18,-2.86777619026468e-17,-1.64884393679914e-17,-2.67240414403265e-17,-1.42691134932075e-17,-1.16943590979504e-17,-3.02474337083321e-17,-1.78445925089921e-17,-2.98525895623241e-17,-1.49951707709412e-17,-1.34632997319326e-17,-3.12311817067211e-17,-1.910156041254e-17,-2.84882262187969e-17,-2.91238424484823e-17,-2.26906677800497e-17,-3.17215247996443e-17,-1.34017311921133e-17,-1.71506074015074e-17,-1.44737424683322e-17,-1.09195781656964e-17,-2.5194441567318e-17,-2.99859099863917e-17,-1.21645738607788e-17,-1.50833846264952e-17,-2.71106225247827e-17,-2.68449459393804e-17,-1.67278149597917e-17,-2.7783744100711e-17,-1.0043058702511e-17,-1.44093778762683e-17,-2.33418825480712e-17,-2.35175594150563e-17,-1.37915593898213e-17,-2.38377833485506e-17,-6.81252796051618e-18,-1.16393252683924e-17,-2.23603515501127e-17,-2.03232992573141e-17,-4.15045981865644e-18,-1.29631327635918e-17,-2.55987543866915e-18,-9.71688850471866e-18,-1.51513770569886e-17,-1.33797226193422e-17,-9.35206688169594e-19,-1.01739022162988e-17,1.125996649047e-18,-7.0527262470937e-18,-7.59334353284569e-18,-2.77197530869077e-18,-2.92541821310528e-18,-5.3333132288024e-18,486.988848010249,456.246849595208,23.8209231789739,472.282100654122,475.224942547931,338.295165506841,382.276969048922,11.2369869766959,531.061161317234,25.3432358156616,541.647608207232,21.0717756474072,484.760445000418,518.857379067875,348.118032647256,425.138663917106,34.9339228585945,541.373660537723,550.852434741482,706.671759845646,28.6766171914522,444.348627902717,314.171112660605,405.699672811112,362.156277715817,480.966051182331,574.191897364469,22.0715698166366,408.66306779378,375.668708347358,301.023602864808,293.056095831776,27.6529885134035,463.820927871836,421.205890098215,905.936599972821,831.887517129256,19.516750055169,244.195285231421,94.7592696199185,199.697154687035,221.705706841329,589.497311317151,285.301104985747,197.78034186254,11.6166292606694,96.3242585139014,202.729322854695,19.3962318538699,96.0111285145778,11.7131695082175,294.797951877454,153.873540742,615.664522406019,6.64633713577276,103.327703524034,-83.8745986810791,-3.61446869558608,43.779418566075,132.072950024565,23.1588033439855,-46.2346670689302,2.11206799676211,-10.0701491947236,-150.375192847463,-148.654926478826,-3.07703133740512,221.68515892529,-210.65012686022,-3.23959842385213,-332.344284457228,-115.411631454407,-166.441534341391,-284.081679856777,-151.970155025948,-294.012506593446,-260.224402104441,-69.2989076719219,-7.47708348457421,-233.58692734705,-306.196104959469,-360.21833881439,-243.772286629641,-512.326803228591,-391.509299690314,-119.15237207007,-377.911369851175,-12.8616490083733,-561.166607469178,-313.123709404225,-597.435466133747,-326.065573220359,-19.050972725588,-295.89151157178,-504.636507147742,-321.785864369165,-19.8301588460425,-338.382057545684,-457.625551649101,-420.584116441741,-31.7068439061442,-416.367559804625,-538.555150504032,-569.534987243298,-18.6927906950473,-636.853862299144,-456.575255777954,-438.465164224019,-400.335031130911,-434.342964508183,-516.307069362201,-549.294804840967,-24.3595740413164,-505.935228812374,-664.681335928572,-640.949790626268,-565.429161859858,-33.5884388519875,-521.92292433911,12.0937867633933,13.2106670379906,23.4118534791258,15.7954509619306,8.03607820215018,7.52305597132857,12.1988115089718,8.66446370400939,4.73668206598344,113.953984125936,544.418921089403,5.95470030885535,3.29342265940343,11.242487094364,8.73920412903288,2.53754000263955,62.3635021842745,313.866078965816,3.04720226210626,-0.0916731947210734,4.90299470547414,-3.07530506324487,-7.22255902394807,-23.9932584253217,-112.666799351563,-1.93004878758023,-12.9312110843879,-48.3742002603439,-268.709876172498,-4.02995192403108,-10.8675330225152,-10.1858366779807,-90.8959168323152,-403.202541169307,-5.13290615815635,-13.3204631735328,-8.92336346016321,-8.11718171687302,-24.5577672461424,-8.12767403511737,-14.3830085545263,-11.0073979546932,-12.0854218231374,-13.9244451210012,-128.691427099895,56.0067174280388,33.8589605725806,35.5981514000735,22.9954684310059,-18.3719369376148,-1.34927953803992,-20.8990098049089,-10.1645911807469,-34.3394628418434,-19.1337093476947,-35.0699873074602,-31.8141914070356,59.6466250169999,50.5625181124533,38.852349710347,24.3417325182081,-6.73532467011085,-20.0801527879306,-32.8446752110715,-44.4213044276391,-65.1880705239947,-21.4795767554213,49.5968807313762,30.2560518459251,-5.82760214075407,-0.129802958047169,-6.88461206030078,-19.4871929381911,-21.4448329035235,-34.0016553189895,-33.1270378894185,51.9772837192011,31.9637547660578,-5.25995175726052,-10.1800222667021,-12.5321081083774,-24.6510860287549,-33.8194449953528,62.5650258920579,48.6101203693144,38.5373585173253,27.6331229224535,-13.9354867663363,-26.1412515440031,-23.7296826325029,-43.0759523326062,-36.4055460870349,57.7062253767862,35.4720373876124,-26.4367291785035,50.5956478751118,55.1596623020594,77.4352910044228,36.5654950013554,50.517535801587,34.1423616870788,-27.960308358524,-32.6389119071565,-28.1127063814919,-57.6677839787229,-149.302431354596,-55.28178760769,-0.27564672931146,7.68405974725053,0.896975538277017,3.20470878115175,-0.468044000995465,1.69014487898537,8.58768599735184,6.24250282089173,8.65840594962495,-119.050459937537,-0.519762394792154,21.5871168769909,10.1813543306184,-22.4421128034162,-40.6331514902619,-9.24127397531457,-5.39978195164791,66.2622424145369,35.9560123030208,-14.414637990439,-54.666390171883,-38.3490024396911,36.5286149995508,-19.0540093264315,20.454584693406,-27.1128308985334,-22.6513637829996,-19.4617184584474,-22.9552268996067,-14.9458511113886,-16.1683504126815,-17.3656622651387,-18.6465208368022,-12.4048768891287,-16.4729231733546,-22.1794750989733,-21.9090583004124,-33.2121332382382,-24.7889953008168,-36.3432052912351,-29.1604587114757,-24.4553427633319,-30.2940934852473,-29.2907286127295,-72.9591926229029,-55.3597268989544,-91.7784118507322,45.4309452267954,36.7530328687986,18.5831707841149,25.3113767819707,-17.3154629600972,-17.2748730183157,-12.7582807534509,-8.74916819389517,-15.5149821042093,-13.9461005162407,-12.850856756413,-9.44971009951654,-10.4761761609466,-39.8266064074802,-68.0687764749327,-53.4723874094682,-57.985759657862,-53.2875542024437,-44.7039714136583,-79.0600374545275,-48.3624514407855,-48.689600882692,-46.498780177145,-46.0255061674601,-36.6693359953541,-42.3754507544759,-43.9978486422314,-34.2820721445009,-46.0120351570689,-38.813117138139,-74.3044796174957,-129.375665533996,38.9179046317003,38.9844628717295,43.1398682527667,22.307487453288,28.4167065225201,26.5494998693771,26.3028757699172,31.4092623895139,23.7661871528934,31.9536659111144,19.3941796339817,-5.17801004793753,-38.5424888812724,-42.6959153915118,-60.1943193723472,-38.4662752286353,-42.4954205001442,-65.0444771516135,-34.7447253633359,-95.3663888725231,-35.7689874427449,-32.0116426146613,-41.1308700567044,-30.3523778535857,-29.9872722706709,-24.5713819315598,-25.921673182295,-30.318572026464,-24.105598005967,-31.0034975633069,-26.6381886753466,-34.4612118503433,-21.7043809274271,-25.7155917112861,-23.3974347187889,-18.401305066002,-19.4836413256962,-24.9743400524209,-20.961966033569,-22.540697954632,-17.366634951637,-20.1146555761873,-22.6593864375021,-17.6889342591773,-14.4377852105857,-16.1554409661149,-27.6126903352001,-23.5662964532813,-18.0310347778217,-19.3213078535355,-15.8611214428086,-16.770477702907,-10.8034503341592,-21.2350204733705,-18.8957544413255,-12.3815627017897,-10.2148377752482,-12.7935780524176,-11.3852402801655,-7.22212117671434,-8.24354503909466,-6.26935852670993,-7.89418187121737,-8.20422783661591,-10.4071980676354,-7.86047137944326,-3.81587572024784,-58.0121121230266,-54.9246399022501,-51.6493341664386,-51.7516806841502,-48.0059015197606,-42.6415464104071,-57.9734280068821,-52.9312437497434,-45.9125941704392,-45.4004623721429,-50.3135616556775,-58.4614062417403,-50.7868617742728,-38.3744653383132,-40.6122576550828,-47.9292872972492,-40.8124284302542,-40.3939424968995,-57.226080457385,-55.0604160256006,-44.7423042702364,-72.9014483427356,-26.4806875272763,-75.5017705068136,-44.2163493536154,-774.819336094622,-46.6356517700669,47.5250853336816,41.9180159069201,38.3287772582994,61.6089633363088,75.6458162691598,32.5261540643384,38.2904572063911,57.0613812042286,43.1317352653535,45.4948782432991,40.2994100873805,42.3538413628684,44.9030290310015,36.0882620926194,12.9305674766447,23.7400090728909,13.7503166934833,24.0850987103649,-7.58456769822336,-4.34530674049951,-6.94699785411645,-5.17666200260324,-1.03977747652928,-3.30036005983073,-1.76031115586741,-2.93612427116108,-0.712484446019369,-4.5981181389401,3.36733857920197,1.16243407611814,0.824387332614125,2.9384709901078,1.93180642599331,1.32647197440719,6.21793942665795,0.245198923765546,2.23514101597841,-1.98170472654662,2.54977190764022,5.2475487006768,0.200204456208113,0.392294117792173,-0.591688631279647,-2.26468732301464,-1.06671832737202,-1.48042708644946,-3.99565247217887,-3.94917463260817,-71.0039489348539,-62.2092953596994,-31.4517596639162,-32.6476632128272,-34.4503744251472,-31.7159800666023,-35.2593157627692,-42.8779035389226,-28.0175192962016,-25.7894689237196,-28.4613206141449,-25.008922632176,-29.8470720057665,-33.0158985982252,-22.3602675647339,-11.9231905222788,-14.2627184412754,-15.3710571765757,-13.6320246014474,-14.2878831681393,-12.6995471850686,-16.9574863515517,-16.6462892438245,-19.325704995182,-19.7746178013091,-17.249058604791,-18.1119656433065,-13.6865430173213,-20.2844689861863,-36.2174836278815,-34.0003550571421,-83.5553690396784,-44.2085511986321,-50.3733542749956,-150.289133569313,-65.3311058546401,-69.6959659396086,-57.0517689862197,-75.9763062991785,-51.4835815043617,29.0913594629817,25.0839149006185,26.5064129628948,29.4199023150552,23.1622865497657,30.6757633005171,35.0769135643755,28.4881488017386,29.0212861683492,24.9542811776176,24.8819414637147,21.6098537983995,18.0650491154708,50.6004690911628,50.0194528030804,39.2988121250605,37.2158433959265,17.7246681211241,13.2466752535581,16.569295090814,-9.0155400709508,-5.48752418120468,-44.5330338922025,-44.0859190998318,-50.2618209134532,-57.9798366915807,-41.1414512016067,-35.4508674096544,-38.5168766869937,-9.68421638063796,-9.10848244084713,-37.2778583866946,35.2162784553713,32.0548691049524,32.9083973446476,23.0582551140099,17.5137585543397,18.6735108801114,56.2363794429705,68.3632068406475,44.8496240188444,50.5695624180931,40.8476490241218,36.9072441712978,35.8604045721666,39.4463258681381,45.1926726012526,40.3871238283731,35.4217404423554,37.2065197465078,29.9353581440184,32.8870634901863,30.7688284324801,17.3806412099866,12.1324807981106,-37.2368625746448,-46.343307876789,-48.6801824492789,-46.3432228174235,-57.582580799614,-56.3399846880843,-69.0668342897292,-35.6979439946225,-42.5938732110914,34.736204233481,24.2304760563236,28.3858246561561,21.7402054033324,20.0787129360032,19.8140588653464,21.8080516319976,19.4793430728348,155.849467972962,14.5351090371868,14.614181896183,-51.753495384084,-46.3701568517036,-56.8366709699839,-42.2625235850717,-48.3974854283311,31.1700884912743,23.9289039458805,16.1330000837406,19.1746200066384,15.6125554300706,13.5279124519731,12.5697294917255,-40.1744193151882,-39.9405008035845,-37.9548763526192,-35.1084658079128,-28.0293901233015,-29.7248650996176,-26.4070260936609,-31.6699085095727,-27.7685924232922,-21.9621941886133,-24.6404216912844,-22.7250156252469,-23.6848717485584,-26.2225534053334,-50.6404814830305,25.1989565716016,29.7574425282682,27.0560499370722,10.6479498180239,10.2493483713469,-32.7660871575673,-28.45023794689,-22.7184250921626,-30.3482150874228,27.4459804305421,27.941617975928,23.6045418734151,20.4117224663907,19.9652858260073,20.6234200619197,22.3873404103239,25.7839336951081,10.1741220792246,13.6889540481076,11.5149294011221,11.4546205348227,7.82981312176477,7.32823640445545,6.21734264734299,4.65176035594857,6.11634460288511,9.68472599984821,3.53361029029497,5.33874636236764,10.7467866103672,7.80644006844133,-23.63956667138,-29.8992503619447,-26.8290884123034,-33.343526172033,-29.8771179684277,-29.403980097128,-25.2116537467091,-23.0849045586168,-34.2321238540232,-32.1401557633341,-36.4668560221631,14.2091569920334,20.2235181303792,17.1124860907846,17.697841135707,14.3899829978031,25.1275474358498,11.0618191158412,7.93299197715676,7.53506976977464,8.62601099733038,11.2206519269924,6.13673298339056,7.72607258232101,-17.4126322291955,-38.2627723409199,16.6659914991134,15.3886228061061,14.3099579822931,16.6931664033569,19.4075212894524,19.819182556604,19.7334413510856,22.2515821090887,25.5294967478736,22.6121643410687,17.0598609730387,15.4568002038722,13.9593076857592,16.985923749626,20.2168292537628,17.2022947261396,15.294524532127,14.9797633625752,12.2544373846034,12.1024153889273,10.4841619699262,7.59087953287225,7.95495002268202,4.96617075798505,-20.7657714178021,28.7285150442825,12.9029390818746,20.4193365903559,22.4272009384528,16.8174634779288,12.9529530401376,12.873302612981,-20.4851784862074,-17.7260568617932,26.128487591231,29.3561570430776,11.703372037266,7.73466301167857,9.35012318185669,10.0024411709761,9.17101224634279,9.9621760062676,13.3835955489211,20.9266971514409,-21.1057628388721,-17.780499153269,-16.816197683898,-17.8834725205751,-17.9348502025174,-16.006568543368,-13.3520705688575,-14.772068540688,-20.8329965735204,-10.8249776748785,-15.5759647473872,-12.8617406807536,-8.11753123000741,-13.7099683303177,-10.0245833255401,-12.5408823827076,-14.5372976296104,-6.67706899036343,-12.0679198092929,-9.13898023000812,-16.2922467415276,-9.22315903716644,-15.7574306146734,-13.3309151869582,-21.0242575008275,-10.6552783452736,-18.0884968143751,-21.1690510153345,-13.6823895854788,-11.3723219942521,-8.67233600027007,-20.5892314186141,27.9717707795417,32.8530223669861,32.0050032780175,11.3729820672687,20.7953754279928,-23.4231791041499,-23.8517418201343,-19.9286125674805,-16.3643823239976,-14.1959308565998,-14.1136127563896,-15.2404630469093,-9.52453879683031,-13.1775807551926,-11.8426363486055,-12.0452607515458,-10.8973179274405,-10.7452911341904,-12.2919425875801,-9.23119242959721,-6.41872505401485,-7.16096335773824,-12.8527533941988,-6.75528351761195,-17.677284553917,14.2792235702957,12.5878835435786,12.2977624337948,15.8666524993771,10.5356179227505,12.9902410810092,10.5830498360918,11.4935706402351,13.5969933658526,6.06951769633432,8.57729323828494,7.15662065173685,8.19910822743377,8.44576116255015,6.96894151289268,26.2970321657038,19.344209545331,-27.9921337023817,-23.3030749323432,-20.6292040663656,-27.0584031521515,-14.8176241541048,-10.6154535978272,-6.55401009169239,-16.9181818306471,-11.9857658757382,-7.16780611684876,-14.5578930748471,-9.99791613493476,-17.6191379274955,-15.6729031636993,-8.57887925310271,-9.27868489727511,-16.3319823135052,-19.3179089376228,-8.23246187086609,-10.9679887696054,-22.2923955286037,-6.02880816089427,-13.2843887561066,-19.478778699441,-21.955773478053,-5.31312929496851,11.4530923285882,9.30014081926903,6.90542139916779,2.93025367856602,5.68868898813967,-2.09449108980792,23.7161248154585,26.2488803534512,25.735471206012,32.279341501223,30.3020156151742,28.2348681516801,29.6100050358732,30.2480285942065,37.8742092927859,36.8762246346943,37.5557705880274,33.4340478966839,42.1089787708299,33.9901980978156,35.4313035256163,37.9774292831654,40.3314428045743,31.9536931861344,30.7641412654471,23.0617914335047,25.8667931784893,18.016594798985,16.7239851824655,-30.3436686612636,-33.1625515965401,-34.5938373870382,-33.2429164178731,-7.54084411006506,-4.44640535131463,-8.94640474357032,-5.12384596304025,-3.08994057929308,-7.76866334226837,-5.76885474505582,-2.3225714279577,-3.29294852834341,-1.64452810812758,-5.14014637313113,-17.8970202821086,-19.6132425561237,-28.4986491646585,-21.9343441350664,-6.62106728732407,-4.1322259322693,-2.96091755655482,-1.44140295804214,-2.93588154338951,-1.63490863375179,-3.59406658447372,3.33657912439271,6.03002212514503,4.08636150543001,1.10887523153327,6.49697215360411,4.01168008425333,-4.75156109619004,28.5825532887598,27.4167102681657,39.0636541589165,19.1243437545558,21.7662217866499,16.0928970407608,20.9271685033152,21.3773899212146,20.1066558527067,17.1654193815446,16.7380969339137,13.2172519396841,14.7427926511012,11.8101820457102,12.028359265472,14.1316811598915,-31.7049197292279,-4.89925052531878,-10.414777386427,-2.40258196359973,-25.1659340152511,-23.0095212810473,-28.9618780437999,-26.330515120571,-26.3047693599229,-26.5238302912275,-5.04568291040185,-3.34311298309302,-1.09728347851116,6.35423528228856,3.96022869702566,6.09917603184499,2.64630112363252,3.42423321158777,3.16651097242981,-0.0520099559472158,1.32208596884427,-0.966469168173033,2.33246298690314,-3.17217825410033,36.5978046917511,16.3612864642376,-28.8518011026326,-2.27279175936064,7.54378267050674,0,-0.431578391361173,-2.12826547427802,2.13716126499459,2.21804474478248,0.918008527957526,-3.85060002189904,2.73063766848569,0.155819021394292,38.4193125860859,53.4251525529356,41.6688061954541,53.6483451468119,39.7029375285197,53.6490803504914,50.9546569218088,52.9416675835469,47.5453047513813,50.2491177006828,41.0115203375551,32.0732626561434,-28.1504176695453,9.7249583541371,8.49121353954445,8.7725546269679,8.60015845228484,10.9584410858683,3.96921803584289,14.3267281571867,6.55012598534102,11.6870064167919,3.23524742855648,10.6916250272461,8.38969326545382,3.96600198727852,1.94846208025746,5.36404242048587,4.31819721357783,6.55978711495871,6.61536735981196,4.9636106684763,-2.47897259944676,2.74325482572074,0.0390148199750553,-0.937514119935268,2.08557579970559,-3.08772605138647,-6.59653336161631,-2.15449319342324,-3.90552015154311,-5.6061033893634,-5.82417745273753,-8.05793508682857,90.8227672412253,65.42671204837,76.1092040887356,29.050572538576,33.9586347429918,34.0730656540992,-24.0278772793073,-35.9727835530117,10.5963985467041,-0.228534859528168,1.29322505025522,-0.0445590322084534,2.1870811733363,4.31313273274472,3.82797204880689,6.33344808014437,1.76366064687045,2.55366564366116,0.894514101856212,-5.11614136866371,-7.9009878231368,-4.83109185424191,-8.13678657521502,-9.54073024479839,-12.1479210325008,24.2895760932526,-20.2110601560587,-32.7612434748342,7.00189074800693,6.33080561795404,-11.2884213702448,-11.3091076459475,-24.437236367066,-31.5953053631042,-36.0863536790704,-31.3455273156658,-26.6880410536622,-40.545444515683,-23.5380071840558,-25.951949745857,-40.284425718794,-36.2510469747742,-20.6271808816402,-41.8926855123698,-41.036608776996,-19.4135728883072,-20.16770256436,-16.0875704816467,-22.9379312193625,-38.6781374934942,3.49026030587942,11.3349187237782,-28.7642913765032,-34.9012581180743,-24.7302302945684,-34.8825309478208,-39.0428280854558,-32.7426205873055,-43.9943979965423,-32.8960907270466,-28.3092802933403,-55.2218856485512,-49.2710762517292,-55.9947004860566,-44.871209590336,-0.264218986997546,9.16041833945258,4.50947435304052,-33.0327156465859,-26.8740185936881,-131.844408527892,-78.0874865016323,1.22566945179156,2.29911122060584,-0.987786200742845,4.62117401091965,-1.17498757567022,-0.461624795849508,2.12942768609186,-3.86177758934919,2.24924534452237,2.76279035265823,7.52106432555799,0.330250391661534,5.11594676769818,-2.16790189998845,5.06065505290505,-4.40375317537844,0.261540117899121,4.28226864612921,1.77595514082285,-1.94548613032632,-3.91849158521116,-2.68003571147858,-6.33003274041068,10.6327371868948,15.6427037117075,12.8928652042362,15.4676794013116,12.5562179438595,16.3040834020983,14.1098394968186,13.3702263190264,11.6612901826049,15.1017558859868,19.5718126855325,16.9820472817584,19.2008146960797,15.8810396501467,10.6178547933292,13.8258020403604,12.5493913046353,9.07529224047679,14.1991853609216,18.342225486954,15.6491480628669,12.9232111976756,-22.48876181837,-46.7091411490153,-44.3797426722779,-89.8283726998587,-48.4349805809365,-40.8344615057255,-50.90923086829,-42.1489340177752,-44.8445763310046,-43.585791213761,-45.3379504713964,-53.7599993861154,2.94411434293182,-6.34365076648732,-8.20792680684804,13.0570081415633,16.505736197884,8.0129007132758,6.79292234146203,8.11260935865808,-23.4760913433376,-32.9441338956794,-24.0801030432114,-29.779999124536,-32.665170643698,-16.7858469222774,-38.5736441761973,-55.8895407415994,3.49098019259488,-6.45431318823143,-8.91836604899665,-5.41869941628622,20.092435735197,20.8141903797192,-18.5954204178625,-30.2267890503458,8.21620209211271,-2.08481832043284,-8.53183779482817,-5.23769192745527,-13.3960048218718,-11.4150368616914,-10.91333578912,-13.6070361148432,-14.9958651768747,-14.2005849227988,-7.02924435345673,18.4822878677408,25.0051827118948,18.3968024315513,-20.387309705758,-21.6499728308868,6.19277068918184,8.63203910775163,6.18801713634075,9.30064116950625,8.64660336020324,7.30210577508441,12.2052267633079,6.9559177576435,9.70724181724563,1.48128685627055,4.5637502099505,0.189878229169871,0.592597346652394,1.63849505110442,-1.82030948016441,-6.95291986302553,-5.72448284736903,-5.15384199691427,-5.91014400019325,-9.64943952804148,-17.0937899986605,-16.6898730815617,22.9441252381537,22.7344350691312,23.3643407748808,18.3214949305181,15.4768180776556,21.3137758330308,16.4552573248944,21.3450472103377,19.2420868350968,22.34952659372,24.5475393642763,18.1891951541232,24.8790067561115,28.0497137648672,23.5825252980901,25.2796386024859,25.5575763265528,23.9384943382898,25.228317955535,28.8808451058596,34.5565582505115,33.7711421110454,27.9871323642975,17.2279045149281,5.07270373241267,-14.7966685078205,-10.8015526194062,29.076021891424,21.9220939242687,24.951795719803,18.9451391796505,20.8663358262074,39.4347709138355,27.2688239571646,6.6095360221054,-12.752858172856,-13.4442147459951,-17.8378712550875,-15.2160325963769,-23.7321481740222,-16.5257468726227,-13.2479264760015,-37.4405035686645,-7.22763086376439,-9.97975099100611,-7.79429121433689,26.4141515453327,28.2880896231416,27.4294036057253,32.6438545677043,19.6714538567061,39.520973459576,33.5633493068023,34.4170500826821,34.5944880523589,33.6515859537184,45.3469788406281,48.5844113549075,33.3349271655324,50.0448121658186,-12.7979571890172,-9.23840247040506,31.904913237173,34.1163674357157,29.8640918081732,27.6365138962937,21.2359695750572,23.2983587930153,15.408900329212,28.33391968122,34.7906747747625,18.7922179050348,20.5104496547562,17.7052413496435,17.1820504230676,16.7336731905851,12.056950906628,97.3402323550356,19.9914865232905,43.2560875894065,38.960262285012,29.3953726424646,38.7905024470581,39.089646879242,16.9295977121656,55.3166372134489,64.9974983325328,37.4921926810405,50.4404814973453,34.567387616397,36.7051633981728,39.9336837069339,47.8374465334908,45.0207154871186,45.6541662281376,37.5444367430462,41.7150993152592,49.2864384757135,44.2996139744965,45.9774794301657,69.5581798003851,100.020139221288,89.5543919028207,48.8086849188292,49.4669401244921,26.9312503198708,60.15431360013,18.836025492673,45.9874228961639,55.6199614746282,639.714408982617,652.26150452232,575.949137568491,611.538529844071,546.582204415697,492.713798680617,492.387286772086,417.207259786171,476.777166656582,335.699552743204,347.905578050754,213.577983639115,175.614679441281,100.185233621912,162.698176878779,-21.0823450817789,-146.259148110343,-268.681949155268,-367.22483210826,-489.08611606284,-463.091354752627,-564.256447378217,-346.51619135946,-537.127859563357,-518.402532375644,-471.898394975726,-608.969937728577,-645.887378629077,80.1689461999684,55.5216747758631,95.732632881091,94.1589163938165,72.7549977693131,57.3969460210336,80.2679574483075,53.9756425429611,53.5582432810065,52.6852944149734,46.6037763144688,49.8557364167395,52.8749922867723,51.0881792412501,54.2101323077877,44.6506462173569,53.8469038230514,56.4358929922442,44.402469711188,43.2421488575771,46.8307952143802,43.2372045978901,40.5342668064185,5.7013778739203,57.2068965025331,3.7997507174165,26.4698698922978,-1.20800391103994,-1.97600862109519,-48.5657828130953,-582.009514659599,-2.0017982946837,-5.59437621505891,9.4905893255008,0.927406697707035,12.6033316474506,13.3156552894096,18.5592583978152,31.0145934119172,12.2682558733615,11.1558280366593,8.2467337645098,40.5550005793535,-4.68940503551717,-0.338210017228641,-2.80471426389404,-3.0758257737678,-13.4771879987654,-8.62246346086779,-5.056289423884,-5.45711513782441,-7.57306760340309,-10.5048862886499,-2.5312405299177,-6.88467946079352,-9.98523485034367,-3.70564294206401,1.29032413258738,-1.63233421422547,-1.15183008195804,-1.80147412969853,0.551146079801457,2.3067357835261,3.94144561299794,2.85119778434676,4.01513217564947,4.83538704174456,0.233469096131147,5.72696117611671,5.43848959904769,9.91259828302706,12.4930436369506,9.81074286774962,8.54844350297489,7.02206838035934,-10.5087882540338,-27.0414612069323,-52.5228713588151,-75.2814280117168,96.2466030387019,38.9017343042072,-3.07827509311575,-14.7612278558342,-26.1535209505874,-63.2502386458862,-59.5548693678748,-135.36618307169,-67.1783413605112,-54.227278299161,33.8733919390993,-93.5659086795251,-60.7099962934605,-161.892147232712,23.5738938384398,-25.5178502573285,-37.657943011394,-40.699943607155,-40.7580183376656,-39.4117217843223,-45.9414173826561,-51.5054169674106,-52.3509615202405,4.45235819514706,3.22060268174967,5.41199580602984,2.58273184098165,1.42668219274368,17.4348035205722,-9.36603065156785,10.8016908331635,-13.7069132026473,35.6323664091629,-6.53536856513796,5.94574555265101,22.9763810473382,25.1148348002417,0.143358539576021,-0.988371091603596,1.10292445706192,44.8717423663846,46.2550855925525,63.0891069853485,14.8876420269971,9.3064172701195,148.566955469155,1.01481913360223,-45.0354871843882,-65.3578945048164,-52.5213287243571,-97.8293971694674,-16.8179302516691,-2.20843227762368,-18.748856858271,-30.82588295489,-39.0350352571944,-33.834413459195,-38.4740659503206,-32.6358961997826,-32.5676629677581,-33.9161849830525,-29.5038487328626,5.89913712957038,11.8777319022173,10.7245692133633,3.81108787680237,1.83909689669404,-10.3649471643126,-3.85286118502059,-3.33368461332923,24.23057864027,-8.62686300845004,-9.64503751080141,-11.1927356006028,-19.9061910705085,-7.4490688465726,-2.56050265741705,31.7950149349004,5.9294295553161,42.9223261057871,11.8762441000368,57.2331134224764,42.6005250723338,88.1901289021302,35.9191434725976,64.5342968665898,50.1272746969542,90.3687677959144,129.146027746148,64.7445204001005,58.1241665262998,61.1370057164067,53.3910794859166,90.1395118121401,150.172851010065,83.8717248692808,51.5784464537778,57.3055063397869,58.3077632191143,57.0727374361578,52.9148249449739,60.7284028575502,41.2738781968398,37.8451982562956,47.4776963264898,40.369271934867,16.3902876592246,-7.22871101521524,40.4287670021832,0.206056276590918,47.7598551687199,50.7150105729389,-16.5144710255863,3.43958939182666e-18,1.06635233129895e-18,4.98149314059223e-18,-3.59228081430699e-18,7.91171241759493e-18,-1.68233758118522e-18,9.32721118095951e-18,5.07209497256628e-18,9.43183291325183e-18,9.09417132027759e-18,9.56334681094232e-18,2.26293752412667e-18,1.64197565235679e-17,1.64204884118008e-17,1.03400251197753e-17,4.14876843134208e-18,1.33387947421883e-17,5.53650037583572e-18,2.13539975510731e-17,2.04968082195664e-17,1.37699795835153e-17,2.22154803296275e-17,1.3795121308642e-17,8.31143885289725e-18,2.91448226223925e-17,2.809430148954e-17,1.33488352069112e-17,1.100967836837e-17,1.58334581158673e-17,1.14987877512729e-17,2.8834985725119e-17,2.822121577167e-17,1.84020150727514e-17,2.99420921103376e-17,1.54233705995635e-17,1.36033813718898e-17,3.16898984130515e-17,1.95801086992325e-17,3.09071333567801e-17,1.37700479655309e-17,1.48041122995656e-17,3.1086412819847e-17,1.91623418196698e-17,2.80268863037343e-17,2.78453740679428e-17,1.8630154591369e-17,3.07738900417658e-17,1.22616915147103e-17,1.50377963514771e-17,2.9078183126959e-17,1.70296092692516e-17,2.85771889012922e-17,1.05069944681303e-17,1.48500453938106e-17,2.5144994211087e-17,1.56528411553139e-17,2.42411593080159e-17,7.36301492835606e-18,1.37436461163542e-17,2.1063890676768e-17,1.29314743748591e-17,2.06217407088615e-17,4.8506340268191e-18,1.19135164692118e-17,1.59019677435514e-17,9.57877977442108e-18,1.65574215281163e-17,2.15007379866855e-18,9.6160069060186e-18,1.0589654992781e-17,6.22567172729421e-18,1.05873191617878e-17,-5.02603735983007e-19,7.55131354447977e-18,3.91072508957618e-18,2.53139644694845e-18,4.81632434464059e-18,-3.45339923866561e-18,4.57540653520594e-18,-2.4245056767314e-18,-1.31640065636706e-18,-1.29127429469591e-18,-5.94713055216292e-18,1.71824971236419e-18,-8.64458519941216e-18,-5.04627872630348e-18,-7.30150311751136e-18,-8.62525528062223e-18,-1.39219926330788e-18,-1.44819263680946e-17,-8.49409149364506e-18,-1.33942193090745e-17,-1.15211670933665e-17,-4.5524905127083e-18,-1.95459986267101e-17,-1.19046587499078e-17,-1.82030277097951e-17,-1.24016634594853e-17,-7.21973447287146e-18,-2.43075941265036e-17,-1.44377610832217e-17,-2.33796012895905e-17,-1.28938293651611e-17,-9.17799520490012e-18,-2.86821335126929e-17,-1.64909528496024e-17,-2.67281152271314e-17,-1.42712886629474e-17,-1.16961417746421e-17,-3.02520445976169e-17,-1.78473127212648e-17,-2.98571402619525e-17,-1.49974566201441e-17,-1.34653520642088e-17,-3.12359425575911e-17,-1.91044722357736e-17,-2.84925689362083e-17,-2.91282820586116e-17,-2.26941267233089e-17,-3.17263603979369e-17,-1.34037741389413e-17,-1.71532218233673e-17,-1.44759488315134e-17,-1.09212427355387e-17,-2.51982821834106e-17,-2.99904810092555e-17,-1.21664282165502e-17,-1.50856839229321e-17,-2.7114755241631e-17,-2.68490381567492e-17,-1.67303649315844e-17,-2.77879794275556e-17,-1.00445896565815e-17,-1.44115744277738e-17,-2.33454407618743e-17,-2.35211444088696e-17,-1.37936617616795e-17,-2.38414171569879e-17,-6.81356645563211e-18,-1.16410995557809e-17,-2.2363760140288e-17,-2.03263973212253e-17,-4.15109251070197e-18,-1.29651088509034e-17,-2.56026566358358e-18,-9.71836973772243e-18,-1.51536867181253e-17,-1.33817622112049e-17,-9.35349250164742e-19,-1.01754531160269e-17,1.12616829487765e-18,-7.0538013578021e-18,-7.59450105472569e-18,-2.77239786590246e-18,-2.92586416100362e-18,-5.33412623386777e-18,487.063084115129,456.316399419842,23.8245544172634,472.354094876783,475.297385374539,338.346734891827,382.33524297713,11.2386999320277,531.142115762557,25.3470991138042,541.73017644019,21.0749878083291,484.834341409716,518.936473180538,348.171099420525,425.203471640265,34.9392481517131,541.456187010366,550.936406149217,706.779484199281,28.6809886269996,444.416363974044,314.21900459851,405.761517273431,362.211484465469,481.039369177938,574.279426617116,22.0749343852062,408.725363993139,375.725974918753,301.069490609147,293.100769017116,27.657203907994,463.891632281572,421.270098313169,906.07470006428,832.01432925077,19.5197251695066,244.232510122462,94.7737146305313,199.727596326469,221.739503442982,589.587173712169,285.344596007848,197.810491304897,11.6184000883006,96.3389420898943,202.760226714887,19.3991885965306,96.0257643573391,11.7149550523499,294.84289058963,153.89699707443,615.758373705166,6.64735029692151,103.343454698352,-83.8873844430731,-3.61501968166773,43.7860922579296,132.093083096216,23.1623336493733,-46.2417150364711,2.11238995834699,-10.0716842784423,-150.398115895153,-148.677587290789,-3.07750039706021,221.718952394638,-210.682238160046,-3.24009226507528,-332.394946695712,-115.429224690909,-166.466906526504,-284.124984990902,-151.993321208117,-294.05732557311,-260.264070458421,-69.3094715297987,-7.47822328388588,-233.622535110366,-306.242781194981,-360.273250146526,-243.809447039188,-512.404901826644,-391.568980985999,-119.170535541422,-377.968978291701,-12.8636096256001,-561.252151159341,-313.171441677,-597.526538613341,-326.115278338228,-19.053876837284,-295.936616985129,-504.713433444563,-321.834917092392,-19.8331817361104,-338.433640176408,-457.69531164173,-420.648229874126,-31.7116772664958,-416.431030469229,-538.637247325755,-569.621806601109,-18.695640205824,-636.950943680592,-456.644855664505,-438.532003425883,-400.396057812486,-434.409175325943,-516.38577470814,-549.378538805119,-24.3632873910179,-506.012353085059,-664.782659302952,-641.047496387034,-565.515355329653,-33.5935590408369,-522.002485760503,12.0956303284487,13.2126808591854,23.4154223592293,15.797858805065,8.03730321407124,7.52420277864128,12.2006710838969,8.66578450640329,4.73740412117643,113.971355160101,544.501911778593,5.95560803756097,3.29392470554054,11.2442008881284,8.74053632478425,2.5379268227619,62.3730088157051,313.913924404683,3.04766677464621,-0.0916871692934394,4.90374211320363,-3.07577385974841,-7.22366002379928,-23.996915934228,-112.683974168538,-1.93034300233443,-12.9331823055898,-48.3815743762373,-268.750838043866,-4.03056624597072,-10.8691896586467,-10.1873893969865,-90.9097729171981,-403.264004971314,-5.13368861336338,-13.3224937319434,-8.92472372898335,-8.11841909213474,-24.5615108082226,-8.12891300981784,-14.3852010863181,-11.0090759116984,-12.0872641130495,-13.9265677498306,-128.711044695489,56.0152550374029,33.8641219994972,35.603577947543,22.9989738377789,-18.3747375377577,-1.34948522089633,-20.9021956295743,-10.1661406611098,-34.3446975160571,-19.1366260716807,-35.0753333421108,-31.8190411313355,59.6557174903256,50.5702258133851,38.8582723246321,24.3454431481651,-6.73635139643251,-20.0832137868312,-32.8496820213171,-44.4280759679482,-65.1980077298673,-21.4828510811462,49.6044412314877,30.2606640489504,-5.82849049473894,-0.129822745083457,-6.88566154384656,-19.4901635468707,-21.4481019329295,-34.006838498154,-33.1320877427553,51.9852070856217,31.9686272896502,-5.26075357917474,-10.1815740993648,-12.534018490711,-24.6548438162593,-33.8246003985534,62.5745632435658,48.617530448639,38.5432331146603,27.6373352887526,-13.9376110783434,-26.1452364908848,-23.7332999621725,-43.0825187887545,-36.4110957129628,57.7150220574838,35.4774447103849,-26.4407591677075,50.6033606263122,55.1680707871664,77.4470951646368,36.5710690097397,50.5252366454591,34.1475663153847,-27.9645706006518,-32.6438873510448,-28.1169918550256,-57.6765747994513,-149.325190871571,-55.2902147094595,-0.275688748629952,7.68523109782176,0.897112272352974,3.2051973038318,-0.468115349166349,1.6904025230218,8.58899509582704,6.2434544219315,8.65972582858068,-119.068607873504,-0.519841626864531,21.590407596027,10.1829063663395,-22.4455338571972,-40.639345568233,-9.24268270610349,-5.40060508914054,66.2723433661244,35.9614934024573,-14.4168353437912,-54.6747234630677,-38.3548483242093,36.5341833859836,-19.056913901024,20.4577027703409,-27.1169639520241,-22.6548167347958,-19.4646851838221,-22.9587261719999,-14.9481294423507,-16.1708151002444,-17.3683094697523,-18.6493632942468,-12.4067678764593,-16.475434289692,-22.1828561165189,-21.912398095885,-33.2171960634269,-24.7927741110761,-36.3487454139929,-29.1649039033524,-24.4590707119239,-30.298711487303,-29.2951936628229,-72.9703144510467,-55.3681658817134,-91.7924024622948,45.4378706757628,36.7586354652725,18.5860035845393,25.3152352235533,-17.3181025123777,-17.2775063831051,-12.7602256133218,-8.75050190855887,-15.5173471929447,-13.9482264461974,-12.8528157284795,-9.45115060410488,-10.47777313902,-39.8326775365058,-68.07915281281,-53.4805386880367,-57.9945989504927,-53.2956773052185,-44.7107860434469,-79.0720892895053,-48.3698237657003,-48.6970230779485,-46.5058684058306,-46.0325222507174,-36.6749258331582,-42.381910426847,-44.0045556313537,-34.2872980701326,-46.0190491868185,-38.8190337718491,-74.3158065198763,-129.39538743423,38.9238372391137,38.9904056252161,43.1464444521954,22.3108879849119,28.4210383375388,26.5535470492352,26.3068853546382,31.4140503868294,23.7698100472764,31.9585368967716,19.3971360638039,-5.17879937873752,-38.5483642606751,-42.7024239151995,-60.2034953356661,-38.4721389901031,-42.5018984605863,-65.0543924682525,-34.750021815373,-95.3809264318024,-35.7744400322941,-32.0165224382306,-41.1371400064082,-30.3570047404536,-29.9918435012,-24.5751275690494,-25.9256246568655,-30.3231937600046,-24.1092726398094,-31.0082237062281,-26.6422493748397,-34.4664650838571,-21.7076895220807,-25.7195117709982,-23.4010014009106,-18.4041101429938,-19.4866113929714,-24.9781471164532,-20.9651614552205,-22.5441340366372,-17.369282304526,-20.1177218346592,-22.6628406122639,-17.6916307430582,-14.4399860924776,-16.1579036857743,-27.6168995867756,-23.5698888765211,-18.033783411172,-19.3242531748546,-15.863539296687,-16.7730341781666,-10.8050972015882,-21.2382575191743,-18.8986348916976,-12.3834501351284,-10.216394915153,-12.7955282929744,-11.3869758350863,-7.22322210982055,-8.24480167705793,-6.27031422160729,-7.89538525260018,-8.2054784811032,-10.4087845307555,-7.86166962203159,-3.81645740861983,-58.0209554328015,-54.9330125607718,-51.6572075405493,-51.7595696598642,-48.0132194925532,-42.6480466461404,-57.982265419688,-52.9393125369004,-45.9195930415018,-45.4073831743337,-50.3212314059299,-58.4703180414722,-50.7946036739335,-38.3803151043709,-40.6184485480181,-47.9365935910445,-40.8186498370271,-40.400100110085,-57.2348039452596,-55.068809381702,-44.7491247434484,-72.9125613683976,-26.4847242174481,-75.5132799230494,-44.223089650773,-774.937448798295,-46.6427608633245,47.532330011324,41.9244058483693,38.3346200597108,61.6183549465735,75.6573476435911,32.5311123195311,38.2962941663311,57.0700795855098,43.1383102249976,45.5018134381532,40.3055532901377,42.3602977411249,44.9098740049391,36.0937633520847,12.9325385997357,23.743627976713,13.7524127783451,24.0887702193147,-7.58572388232369,-4.34596913481971,-6.94805684769177,-5.17745112790851,-1.03993597919339,-3.30086316349838,-1.76057949598263,-2.93657185108046,-0.712593056453213,-4.59881907158324,3.36785189300978,1.16261127643462,0.824513001414828,2.93891892775874,1.93210090868019,1.32667418050085,6.21888728327786,0.245236301650266,2.23548173869426,-1.98200681568176,2.55016059238224,5.24834863188117,0.200234975180096,0.392353918724764,-0.591778827717342,-2.26503254974071,-1.06688093687314,-1.4806527613102,-3.99626156554353,-3.94977664093631,-71.0147727075574,-62.2187784839921,-31.4565541394747,-32.652639990756,-34.4556260066145,-31.7208148196612,-35.2646906584647,-42.8844398047059,-28.0217902595089,-25.7934002452019,-28.4656592300922,-25.0127349679431,-29.8516218643039,-33.0209315095969,-22.3636761421066,-11.9250080818096,-14.2648926361598,-15.3734003255356,-13.6341026539781,-14.2900611991101,-12.7014830916516,-16.9600713342272,-16.6488267879166,-19.3286509867971,-19.7776322247544,-17.2516880344564,-18.114726613679,-13.6886293805861,-20.2875611308488,-36.2230045857516,-34.0055380380959,-83.5681061386174,-44.2152903070465,-50.3810331399766,-150.312043498211,-65.3410648646789,-69.7065903246603,-57.0604659022237,-75.9878880531875,-51.4914296112983,29.0957941214364,25.0877386681338,26.5104535746269,29.4243870562618,23.16581738613,30.6804394839471,35.0822606548578,28.4924915073487,29.0257101448993,24.9580851838946,24.8857344425964,21.6131479834298,18.0678029339336,50.6081825773047,50.0270777196662,39.3048027976405,37.2215165427857,17.7273700522401,13.2486945638102,16.5718208979924,-9.01691439108357,-5.48836069403718,-44.5398224644422,-44.0926395143287,-50.2694827763973,-57.9886750813203,-41.1477227642898,-35.4562715052961,-38.5227481620984,-9.68569263313501,-9.10987092902408,-37.2835409870584,35.2216467905017,32.0597555179257,32.9134138686331,23.0617700919236,17.5164283346071,18.6763574518919,56.244952061788,68.3736280612025,44.8564608517741,50.577271192852,40.8538757998877,36.9128702755922,35.8658710972538,39.4523390275692,45.1995617281735,40.3932804021274,35.4271400979106,37.2121914720789,29.9399214608087,32.8920767620598,30.773518802668,17.3832906979759,12.1343302616469,-37.242538925647,-46.3503724054287,-48.6876032087986,-46.3502873330969,-57.591358632053,-56.3485731003843,-69.077362770566,-35.7033857543778,-42.6003661795687,34.7414993865654,24.2341697264542,28.3901517635732,21.7435194590341,20.0817737154141,19.817079301149,21.8113760301122,19.4823124848886,155.873225513812,14.5373247550278,14.6164096678135,-51.7613846364291,-46.3772254731749,-56.8453350966562,-42.2689660429352,-48.4048630937928,31.174840029154,23.9325516446527,16.1354593825339,19.1775429670053,15.6149353927886,13.5299746337494,12.5716456090261,-40.1805434644741,-39.9465892945607,-37.9606621569413,-35.1138177081884,-28.0336628961862,-29.7293963290536,-26.4110515549557,-31.6747362395284,-27.7728254404299,-21.9655420840689,-24.6441778531275,-22.7284798044581,-23.6884822473006,-26.2265507457915,-50.6482010686224,25.202797875957,29.7619787237756,27.0601743349285,10.6495729811059,10.2509107720132,-32.7710819879267,-28.4545748734062,-22.7218882667193,-30.3528413397227,27.4501642690223,27.9458773689121,23.6081401267494,20.4148340094496,19.9683293147003,20.6265638759535,22.3907531146548,25.7878641728055,10.1756730124684,13.6910407789076,11.5166847257259,11.4563666660018,7.83100669083821,7.32935351366344,6.21829041299045,4.65246946575893,6.11727697248921,9.68620233003111,3.53414895040019,5.33956019565459,10.7484248400334,7.80763007454932,-23.6431702638604,-29.9038081744998,-26.8331782123663,-33.3486090266324,-29.8816724071424,-29.4084624111672,-25.2154969866095,-23.0884235989459,-34.2373421655863,-32.1450551773224,-36.4724149941177,14.2113230220626,20.2266009837528,17.1150947014691,17.7005389773436,14.3921765927722,25.1313778546663,11.0635053687552,7.93420127471425,7.53621840845906,8.62732593803119,11.2223623922251,6.13766846097949,7.72725033728783,-17.4152865938646,-38.268605080606,16.668532046598,15.3909686327534,14.312139378327,16.6957110933574,19.4104797530636,19.8222037734571,19.736449497633,22.2549741185565,25.533388439451,22.6156113173402,17.0624615616016,15.4591564234155,13.961435629004,16.9885130672707,20.2199110874905,17.2049170271649,15.2968560145252,14.9820468630878,12.2563054390827,12.104260269322,10.4857601653484,7.5920366791425,7.95616266750255,4.96692779621035,-20.7689369317377,28.7328943910881,12.90490599332,20.4224492941044,22.4306197190837,16.820027115654,12.954927575662,12.875265006672,-20.4883012268303,-17.7287590046075,26.1324705923881,29.3606320670171,11.7051560878815,7.73584207616206,9.35154850551245,10.0039659333497,9.17241026650228,9.9636946306588,13.3856357311694,20.9298871967383,-21.1089801807682,-17.7832095952131,-16.8187611286669,-17.8861986596788,-17.9375841735848,-16.0090085690605,-13.3541059454686,-14.7743203804046,-20.8361723351932,-10.8266278239143,-15.5783391322573,-12.8637013119549,-8.11876865854857,-13.7120582645144,-10.0261114632422,-12.542794102583,-14.5395136810783,-6.6780868362461,-12.069759431215,-9.1403733672383,-16.294730315726,-9.22456500653186,-15.7598326620232,-13.3329473386635,-21.0274624181294,-10.6569026255091,-18.0912542071822,-21.1722780048185,-13.6844753155986,-11.3740555799219,-8.67365800270914,-20.5923700209645,27.9760347689898,32.858030449664,32.0098820894928,11.3747157535594,20.7985454547349,-23.4267497107207,-23.8553777563873,-19.9316504657377,-16.3668768944738,-14.1980948704499,-14.1157642217488,-15.2427862882274,-9.52599070823227,-13.1795895327467,-11.8444416285367,-12.0470969193433,-10.8989791039538,-10.7469291358877,-12.293816359316,-9.23259962356514,-6.41970351819991,-7.16205496800618,-12.8547126553869,-6.75631328644085,-17.6799792619283,14.2814002812058,12.5898024282651,12.2996370927024,15.8690711964044,10.537223962068,12.9922213006862,10.5846631058839,11.4953227089303,13.5990660782559,6.07044292769047,8.57860075249809,7.15771160000693,8.20035809149283,8.447048626142,6.97000385153793,26.3010408596315,19.3471583577617,-27.9964007959338,-23.3066272303511,-20.6323487621074,-27.0625279087296,-14.8198829382746,-10.6170718072172,-6.55500917859661,-16.9207608217798,-11.9875929741948,-7.16889877022023,-14.5601122658647,-9.9994402075163,-17.6218237716917,-15.6752923257669,-8.58018700908641,-9.28009933094847,-16.3344719449554,-19.3208537408145,-8.23371681932201,-10.969660719113,-22.2957937596294,-6.02972718652856,-13.2864138153682,-19.4817480254623,-21.9591203947417,-5.31393922321469,11.454838226809,9.30155852366221,6.90647405486888,2.930700363578,5.68955616633908,-2.09481037198625,23.7197400783877,26.2528817071636,25.7393942961349,32.2842621325494,30.3066348248716,28.2391722474349,29.614518756153,30.2526395741752,37.8799828003,36.8818460104008,37.561495553056,33.4391445503267,42.1153978224718,33.9953795304524,35.4367046389586,37.9832185254341,40.3375908903677,31.9585641759494,30.7688309211278,23.0653069504915,25.8707362872056,18.019341231119,16.7265345704506,-30.3482942205107,-33.1676068635518,-34.5991108378594,-33.2479839356198,-7.54199362898427,-4.44708315700843,-8.94776852478124,-5.12462703711998,-3.09041160682041,-7.76984758972908,-5.76973414364501,-2.32292547848025,-3.29345050220444,-1.64477879838797,-5.14092993202947,-17.8997484864199,-19.616232379684,-28.5029934709336,-21.937687785087,-6.62207659636177,-4.13285584475897,-2.96136891593844,-1.44162268410282,-2.93632908630771,-1.63515785762889,-3.59461446047745,3.33708774925924,6.03094133583484,4.0869844263912,1.10904426739174,6.4979625457007,4.01229162085154,-4.75228541952788,28.5869103852977,27.4208896447309,39.0696089842456,19.1272590508598,21.7695398082637,16.0953502262853,20.9303586204651,21.3806486696781,20.1097208917086,17.1680360613283,16.7406484730805,13.2192667646749,14.7450400280297,11.8119823783391,12.0301928568234,14.1338353795805,-31.7097527962598,-4.89999736228911,-10.416365004931,-2.40294821085028,-25.1697702856802,-23.013028830023,-28.9662929642334,-26.3345289186076,-26.3087792333009,-26.5278735580402,-5.04645206938209,-3.34362260397459,-1.0974507473341,6.35520391571573,3.9608323904246,6.10010578428887,2.64670452319405,3.42475519835783,3.16699367227317,-0.0520178842941589,1.32228750633952,-0.966616495790133,2.33281854528529,-3.17266181785857,36.6033836253932,16.3637805627839,-28.8561992430445,-2.27313822151908,7.54493263737725,0,-0.4316441807501,-2.12858990499057,2.13748705177279,2.21838286135943,0.918148468281909,-3.8511870036097,2.73105392422784,0.155842774293895,38.4251691886143,53.4332966310686,41.675158147618,53.6565232482062,39.7089898055819,53.6572585639595,50.9624243999981,52.9497379597029,47.5525525112519,50.2567776271615,41.0177720937041,32.0781518730117,-28.154708891751,9.72644081730084,8.49250793185231,8.77389190663665,8.60146945204891,10.9601115799362,3.96982309956786,14.3289121096497,6.55112448015585,11.6887879726481,3.23574060651815,10.6932548481344,8.39097218211013,3.96660656075219,1.94875910191604,5.36486010987924,4.31885547534819,6.56078708250672,6.61637579995827,4.96436731644405,-2.47935049161131,2.74367300481002,0.039020767356149,-0.937657033673063,2.08589372284579,-3.08819674133332,-6.59753893072631,-2.1548216222637,-3.90611550522475,-5.60695797829471,-5.8250652846663,-8.05916343059181,90.836612175256,65.4366856325237,76.120806101554,29.0550009795117,33.9638113641416,34.0782597189855,-24.031540065478,-35.9782672090411,10.5980138513606,-0.228569697159193,1.2934221882202,-0.044565824743851,2.18741456985663,4.31379022249056,3.8285555811314,6.33441354479073,1.76392949757882,2.5540549219605,0.894650460713202,-5.11692126826259,-7.90219224201228,-4.83182830117091,-8.13802693902221,-9.54218462440887,-12.1497728497314,24.2932787725351,-20.2141411103507,-32.7662375668273,7.00295810940144,6.33177067978605,-11.2901421661853,-11.3108315952837,-24.4409615555366,-31.600121720629,-36.091854647619,-31.3503055972688,-26.6921093526033,-40.5516252236884,-23.541595294907,-25.9559058357572,-40.2905666373487,-36.2565730490081,-20.6303252689697,-41.8990715924784,-41.0428643576022,-19.4165322744182,-20.1707769092631,-16.0900228551958,-22.9414278552191,-38.6840335510389,3.49079235775532,11.33664660773,-28.7686761770179,-34.9065784318118,-24.7340001467474,-34.8878484068067,-39.0487797360785,-32.7476118404438,-44.0011044596516,-32.9011053750233,-28.3135957324094,-55.2303036189245,-49.2785870865237,-56.0032362635697,-44.8780497137491,-0.26425926428215,9.16181474468725,4.51016177291141,-33.0377511215321,-26.8781152428639,-131.864506760899,-78.0993900818917,1.22585629164702,2.29946169487727,-0.987936777907592,4.62187845817741,-1.17516668962992,-0.461695165483021,2.12975229397083,-3.86236627495732,2.24958821728831,2.76321150972419,7.52221082926615,0.330300734709043,5.11672663763228,-2.16823237283905,5.06142649422409,-4.40442447921615,0.261579986819533,4.2829214309838,1.77622586569188,-1.94578269833399,-3.91908891624549,-2.68044425350777,-6.33099768442598,10.6343580309781,15.6450882702002,12.8948305800295,15.4700372792692,12.5581320014729,16.3065687806657,14.1119903869858,13.3722644632823,11.6630678183035,15.1040579829206,19.5747961935639,16.9846360084782,19.2037416495395,15.8834605403372,10.619473368755,13.8279096321349,12.5513043216024,9.07667566917199,14.2013498708851,18.3450215579124,15.6515336037301,12.9251811993826,-22.4921899832813,-46.7162614449222,-44.3865078769536,-89.8420660493556,-48.4423639621226,-40.8406862711989,-50.916991421776,-42.155359160156,-44.8514123944697,-43.5924353892509,-45.3448617443341,-53.7681945079731,2.94456314084995,-6.34461778642123,-8.20917801520274,13.0589985391458,16.5082523162068,8.01412219204306,6.79395784791652,8.11384603691397,-23.4796700157984,-32.9491558673099,-24.0837737906265,-29.7845387585489,-32.6701500904425,-16.7884057404058,-38.5795243048827,-55.8980604886636,3.4915123542096,-6.45529707743695,-8.91972555601632,-5.4195254375387,20.0954986064981,20.8173632745942,-18.5982550856091,-30.231396792579,8.21745456194383,-2.08513612810363,-8.53313837985787,-5.23849035610274,-13.3980468957775,-11.416776958774,-10.9149994073805,-13.6091103581534,-14.9981511319321,-14.2027496461102,-7.03031588460817,18.4851052896718,25.0089944775521,18.3996068221659,-20.3904175273595,-21.6532731316233,6.19371470910397,8.63335496737171,6.18896043163592,9.30205895017233,8.64792143998376,7.30321890096476,12.2070873161681,6.95697811096021,9.70872157971777,1.48151266219376,4.56444590358006,0.189907174021879,0.592687681613774,1.63874482169148,-1.82058696636565,-6.95397975934611,-5.72535548194942,-5.15462764356014,-5.91104493677865,-9.65091047918904,-17.096395759331,-16.6924172695314,22.9476228182205,22.7379006842332,23.367902412194,18.3242878413307,15.479177348704,21.3170248842249,16.4577657482671,21.3483010285099,19.2450200800411,22.3529335337495,24.5512813672281,18.1919678972869,24.8827992876292,28.0539896358679,23.5861201952392,25.2834922059314,25.5614722985538,23.9421434990121,25.2321637357112,28.8852476737111,34.5618260185375,33.7762901510013,27.9913986954506,17.2305307198847,5.07347701042066,-14.7989240975321,-10.8031991975494,29.0804542118343,21.9254357068791,24.9555993471993,18.948027158184,20.8695166700834,39.4407823118407,27.2729807900849,6.61054357332828,-12.7548022061141,-13.4462641689747,-17.8405904427788,-15.2183521135409,-23.7357658795366,-16.5282660413533,-13.2499459769887,-37.4462109625012,-7.22873263676192,-9.98127229451083,-7.79547936848541,26.4181780928244,28.2924018319256,27.4335849172505,32.648830765047,19.6744525539404,39.5269979982131,33.5684656710259,34.4222965842191,34.5997616023669,33.6567157686503,45.3538914898416,48.591817515175,33.3400087093076,50.0524409481609,-12.7999080971252,-9.23981076346457,31.9097767910201,34.1215681014833,29.8686442611927,27.6407267795096,21.2392067655412,23.3019103720996,15.4112492469451,28.3382388762933,34.795978231283,18.7950825723984,20.5135762476913,17.7079403193614,17.1846696380712,16.7362240554008,12.0587888564613,97.3550708050897,19.9945340059922,43.2626815051975,38.9662013493847,29.3998536443919,38.7964156334068,39.095605666876,16.9321784435241,55.3250696276582,65.0074064877664,37.4979079543151,50.4481705951345,34.572657035241,36.7107586974712,39.9397711587185,47.8447388271696,45.0275784010648,45.6611257046968,37.5501599803546,41.7214583243011,49.2939516523104,44.3063669644316,45.984488192274,69.5687831814523,100.03538619373,89.5680434869522,48.8161252671399,49.4744808165843,26.9353556933952,60.163483465008,18.8388968380225,45.9944331740444,55.628440127292,639.81192642301,652.360934629716,576.03693469312,611.631752180937,546.665524873687,492.788907491391,492.462345809704,417.270858453821,476.849846102718,335.750726455513,347.958612437652,213.610541258572,175.641449971683,100.200505761183,162.722978430133,-21.085558853895,-146.28144371219,-268.722906769468,-367.280811503399,-489.160671873216,-463.161947946949,-564.342462080561,-346.569013949606,-537.209738810241,-518.481557151921,-471.970330706667,-609.062768511767,-645.985837070941,80.1811670759135,55.5301384457985,95.7472262702496,94.1732698871692,72.7660884701926,57.4056955554881,80.2801934174307,53.9838705372511,53.5664076473604,52.6933257098538,46.6108805486631,49.8633363765591,52.8830524990112,51.0959670734515,54.2183960474688,44.6574527183046,53.8551121925366,56.4444960247125,44.4092383803513,43.2487406485615,46.8379340551141,43.2437956351764,40.5404458105048,5.70224698640108,57.2156170660244,3.80032994770879,26.4739049334399,-1.2081880579776,-1.97630984192158,-48.5731861336461,-582.098235622199,-2.00210344686277,-5.59522901631121,9.49203606167847,0.927548070679246,12.605252887031,13.317685114911,18.5620875530587,31.0193212462787,12.2701260343178,11.1575286202015,8.24799088855926,40.5611827440759,-4.69011988384575,-0.338261573633707,-2.80514181180012,-3.07629464964795,-13.4792424481554,-8.62377786078561,-5.05706019971081,-5.457947015132,-7.5742220344402,-10.5064876432671,-2.53162638975457,-6.88572895461377,-9.98675698980256,-3.70620782665883,1.2905208283393,-1.63258304566056,-1.15200566581199,-1.80174874465733,0.551230095972158,2.30708742007847,3.94204644312187,2.85163241815535,4.01574423848112,4.83612414342775,0.233504685932386,5.72783418849111,5.43931863709633,9.9141093498385,12.4949480643343,9.81223840782092,8.54974661936254,7.02313881761245,-10.5103902034628,-27.0455833808967,-52.5308778940832,-75.2929038391576,96.26127477697,38.9076644466317,-3.07874434236775,-14.7634780430073,-26.1575077678055,-63.2598804505579,-59.5639478540589,-135.386818160573,-67.1885819613284,-54.2355446525603,33.8785555659193,-93.5801717753604,-60.7192508660662,-161.916825913692,23.5774874198177,-25.5217401735262,-37.6636835514872,-40.7061478668512,-40.7642314502171,-39.4177296687407,-45.948420647501,-51.5132684029239,-52.3589418497405,4.45303690828657,3.22109362728042,5.41282080539052,2.58312555010375,1.42689967478526,17.4374612650113,-9.36745840014278,10.8033374323759,-13.7090026711233,35.637798172335,-6.53636481034606,5.94665191630233,22.9798835444491,25.1186632811563,0.143380393011932,-0.988521757928535,1.10309258579013,44.8785825710136,46.2621366726733,63.098724227267,14.8899114846232,9.30783593128873,148.589602870903,1.01497383164089,-45.0423523501175,-65.3678575984909,-52.5293350244675,-97.8443101873286,-16.820493960549,-2.20876892888551,-18.7517149157189,-30.8305820224136,-39.0409857198861,-33.8395711441735,-38.4799308993984,-32.6408711839594,-32.5726275505275,-33.9213551332023,-29.5083462707792,5.90003638827915,11.8795425320804,10.7262040562312,3.81166883532018,1.83937724683074,-10.3665271867462,-3.85344851142074,-3.33419279695931,24.2342723260383,-8.62817807903059,-9.64650779090976,-11.194441810298,-19.9092255508546,-7.45020437536018,-2.56089297794409,31.7998617359575,5.9303334317727,42.9288691433032,11.8780545031008,57.2418379824493,42.6070190548143,88.2035725193409,35.9246189517855,64.5441344118439,50.1349160498043,90.3825435227125,129.165714640622,64.7543899916249,58.1330269175386,61.1463253819122,53.3992183699846,90.1532525913797,150.195743212963,83.8845101931937,51.5863090218347,57.3142419352655,58.3166515976538,57.0814375485718,52.9228912292643,60.7376602360345,41.2801699465649,37.8509673413957,47.4849337801981,40.3754257872961,16.3927861786849,-7.22981295287,40.4349299239823,0.206087687608691,47.7671356344468,50.7227415196726,-16.5169884754378],"Archive1205_field3":[3.18263437305163e-17,2.73527383965733e-17,1.09162924236161e-17,1.26182057177739e-17,1.28604234925694e-17,1.21657211158349e-17,2.50813127263373e-17,1.51766841163028e-17,2.37386187108086e-17,2.42197603865392e-17,1.19437156392197e-17,1.10709515444235e-17,2.82807378080543e-17,2.67261124725097e-17,1.09346295837658e-17,1.30537049144695e-17,1.26663794748129e-17,1.21833052701572e-17,2.41761649092376e-17,2.37109025214469e-17,1.51203775661519e-17,2.50809293656029e-17,1.19161277318837e-17,1.10252140826809e-17,2.83061075017234e-17,2.67242583838876e-17,1.09338573208088e-17,1.30528664626221e-17,1.26609361687406e-17,1.2183038442585e-17,2.4109920843438e-17,2.37552363046581e-17,1.52369335358004e-17,2.50023148142417e-17,1.23149172295787e-17,1.2083199938399e-17,2.52925031202302e-17,1.5638792778581e-17,2.47390312732985e-17,1.14287364559833e-17,1.21968283064247e-17,2.49434066209218e-17,1.53225252636164e-17,2.2572465033472e-17,2.25508418924678e-17,1.52807371748721e-17,2.5061371924522e-17,1.18683948401576e-17,1.19895902522539e-17,2.55970356380725e-17,1.49538244166585e-17,2.48573655840387e-17,1.20826284382902e-17,1.22319006955389e-17,2.50610170304366e-17,1.55173268380904e-17,2.35373835561785e-17,1.09521037020879e-17,1.21922303123725e-17,2.52762379798294e-17,1.53751543968192e-17,2.38107791546981e-17,1.08612148956715e-17,1.1962269926378e-17,2.52929267043274e-17,1.49898605405093e-17,2.4966883337519e-17,1.09473434848478e-17,1.16565495769025e-17,2.60985858007824e-17,1.51799391693561e-17,2.39816012027469e-17,1.13714555500638e-17,1.22621225698096e-17,2.49982331629655e-17,1.50321118067387e-17,2.46975644880686e-17,1.17069930138323e-17,1.18564658547916e-17,2.54376158500799e-17,1.5734166485793e-17,2.44118892234795e-17,1.11765386868741e-17,1.21849439352955e-17,2.53055561121839e-17,1.52513773207695e-17,2.42035555180379e-17,1.1567205447556e-17,1.23670173587231e-17,2.51872054874781e-17,1.50464116378189e-17,2.47846678564436e-17,1.23938575578689e-17,1.25501616286299e-17,2.48902797522164e-17,1.53194752769472e-17,2.41795752862407e-17,1.14731551602198e-17,1.22433536888476e-17,2.51953310005645e-17,1.50769311324959e-17,2.49043798652514e-17,1.08301111880787e-17,1.15560910419106e-17,2.60004361024979e-17,1.4987244960152e-17,2.461347996527e-17,1.14593938544756e-17,1.20037383864978e-17,2.51632729320864e-17,1.48889995125454e-17,2.50683999455524e-17,1.19632029573433e-17,1.2083123828114e-17,2.49685094229067e-17,1.53230211102185e-17,2.27224457073712e-17,2.32245618376975e-17,1.80760685979674e-17,2.52508178725347e-17,1.1556991222102e-17,1.39326324313847e-17,1.27606219823056e-17,8.69250528752841e-18,2.12290112407092e-17,2.46000720200126e-17,1.18900729531482e-17,1.20463624420471e-17,2.41543231802299e-17,2.37196139779992e-17,1.5178600494153e-17,2.48384513323817e-17,1.22648360620546e-17,1.20845969799551e-17,2.4447477630115e-17,2.42503827306677e-17,1.48869902991824e-17,2.50714098066968e-17,1.19654616073924e-17,1.10290471868719e-17,2.82951747887719e-17,2.67464075781814e-17,1.08891838806859e-17,1.31260859338313e-17,1.2302240024783e-17,1.10052381816812e-17,2.8491729616874e-17,2.67249546620796e-17,1.09010933820648e-17,1.31377510533843e-17,1.22577636478153e-17,1.09973526393044e-17,2.89879606850923e-17,2.42612952042458e-17,2.13477777048814e-17,1.75174293602343e-17,407.352957397113,363.250694057092,19.4068194371061,421.872270778311,386.130450568369,311.142815951546,310.158300742424,9.26547743337479,426.456871755417,20.2978725213893,437.639984496496,17.8501457447468,480.483113516051,447.259137304755,380.391024203339,367.211723440725,29.2212888872874,431.602262813435,462.828491585534,566.638793149724,25.8178707172016,425.615589585764,433.375544887682,419.394846786821,335.200141724095,452.316207413304,693.344041932874,21.9803947143725,654.546788595317,423.690641254005,559.098616778529,366.24057170173,31.4461567136593,427.723124647912,505.848348184687,809.938146885309,694.894383011649,26.9912874643142,358.437828269712,343.561464715197,408.107051164153,334.95946790962,809.972360552594,451.50370188105,499.342293591529,20.463168474927,617.341750303451,437.599425517617,377.313617949898,366.332143455175,32.4517109440423,443.953641062614,506.90811144573,695.061535390245,20.8728742154713,459.258522885972,376.24590885689,16.0093454520857,440.045779405637,767.378940497245,432.469962566349,500.40157555209,8.42955498863828,421.176670885531,328.597015135855,492.789820712285,27.4435173038235,567.986655328591,620.346565442274,22.3329936959323,578.640267681623,420.753264999448,251.470740191327,486.449350425886,339.481595727035,793.523256227633,479.451139858531,522.205644160399,17.3248257145155,449.673691600688,348.276899101818,415.926534195353,341.362935201553,793.733174942602,496.564980581882,693.022413234931,481.607606135759,21.1767806112301,581.600876420576,427.774063899468,582.774894471809,311.521228982956,21.0177009035038,419.998320051754,506.339987830783,693.930996939048,23.251219790813,365.584437234324,395.623118908976,354.861425219133,28.2432551249114,442.713135080114,477.406837357748,514.338625982103,18.4109664518654,530.082019812978,426.220518440111,357.581950048051,321.258481854084,346.37859506569,468.522870905152,447.962297614505,20.9182368623478,428.803693773003,542.906918314282,513.577986441584,452.26712431704,27.0048472114655,415.875652547503,9.69094772194974,10.9743023132838,20.4783900541453,13.4559825700462,6.51930800957077,9.28281748496332,9.93608623920928,12.1273539382116,6.53665715270696,112.072716373166,522.130230345297,6.08511855166438,8.43705196727108,11.2786856038978,21.9203942634092,10.9786575806329,111.466495309043,522.172371731065,6.05021576896271,7.52528216695006,8.83821989034423,5.18264945239541,14.8890972541233,86.0361770249273,539.199292762828,16.2004236469865,19.0351880441302,88.1053408893194,521.989102777732,6.53141972522351,12.0441190776912,9.36013069312202,112.620938616899,522.331413281753,6.00426429758615,12.7524963629239,7.57196688157861,11.229347927574,22.5709575653915,6.91503704646808,13.5934868248008,8.82984313457138,9.62599608903597,11.1340057962449,102.567432791409,50.8646367077813,29.9987063866823,51.0666914726645,30.7108045593608,103.944930070652,27.3287536148808,51.7893304151205,30.6373598185115,50.5048988583085,30.2715055829522,27.9161203044142,25.3355418938647,53.5429572354073,51.4579292765196,53.953028843154,49.4980399897162,69.7614908957496,51.1568888044489,49.8516056523665,52.2499148028656,52.3363088275377,17.4113890732395,46.0780618748524,45.9742771568779,69.4181222133229,41.8489508764983,56.522322577466,63.6731856252714,46.1733699836724,58.5213518358174,45.4506020332632,47.9475540863915,47.999168128541,42.6866939889975,43.7201380179079,48.3245398538643,50.8702124701516,47.6337262511807,57.0544568361561,47.2954089222928,55.6744731232932,47.6070861109969,45.6605082214685,61.2416949592348,45.849809924828,62.4699884607595,46.3725200186727,49.6368813226104,45.2242030712738,41.505244077218,44.8324551063177,48.5252940494116,67.7566439755407,47.8804474398896,66.182786728139,45.4326815404078,41.6473053364537,53.4688972260057,40.9324862595356,45.9373076722037,119.576135742255,44.8952479998466,100.166293361765,67.0509202490005,47.0673968538153,45.3383306689565,49.4250553915887,49.1818730313499,54.7372764487617,49.282009751064,39.1352449671704,582.098492970097,5.64986744294304,313.362533265859,653.723443377575,63.5932721017451,63.9625293710334,44.2192336466668,40.7909705141155,66.7796486320138,67.6245031685237,37.9375565752189,65.4142043383341,42.7138805760226,38.8835195195155,36.6656062853044,35.9995111085649,45.0759035515072,42.4888308524312,41.7507092562617,38.0107005024428,39.7112065608357,37.775467938912,29.5661699556758,33.2085764674577,29.0086919027931,33.2754646494176,32.276955850947,35.0673996755091,43.7363927554395,32.3269399757204,43.1688583072197,38.6550371368788,34.4556159377548,36.934168673857,33.9321109262722,58.1169989632795,44.7298015168191,74.1611175579418,46.4166558297804,35.2922510477685,41.8021919352131,41.404563390371,45.4117726040934,52.530028259823,31.6736419871664,30.43638221526,30.1537912010804,25.0103138616255,27.0621855318404,25.8268585198475,25.0063796150266,44.8222191389873,54.3396960520236,42.6721150749727,46.511835328181,42.795653292423,35.7314407496478,63.9498216155394,38.9546044235023,38.9299026120343,37.0312738444932,36.6515205941207,29.1990952424203,33.7452878810879,35.0386414471404,27.456705280838,36.9645465662206,31.1373143974619,59.1530898718584,105.637387451733,43.6075289397763,39.2726435392475,41.1269171469609,44.1428615102161,42.2357588691616,35.0238149586369,36.0966758302371,37.5546869985487,34.5457959753445,40.7685841383603,36.8581897880538,20.3877645807261,46.2248096390779,43.7698154156111,68.3484970549668,40.8870773092285,44.6569438025538,65.0087332652978,35.2884156360159,105.804079143302,37.265830789896,35.4106326238409,40.8027932758699,35.7266362996446,32.1533078480625,27.5197219229365,29.0632441528841,29.8273154499088,29.710867979246,31.2048593208441,28.0640270974057,33.0319011250862,22.1068808341449,25.8995446773034,24.9454029061102,22.6371586145035,21.7714196905374,22.9216380441458,24.1916944934413,27.2215868590156,25.3828772037283,26.7446432724176,31.1989029939933,23.5751888285647,22.8285093445088,21.9332442135285,25.9570500020869,22.7958595377359,18.6146570097458,29.9337484582274,26.1034673775119,19.7777358137628,17.046864975651,20.2661085443809,19.8915764303278,18.9603901043471,19.9990350030341,17.186317249032,20.2063385382958,17.9231310924474,17.5457288055139,14.605015160226,15.0621951274707,12.6026091613528,15.229585024792,13.6294731429482,10.6072129950904,46.1810203730574,43.7807818674981,41.1456220822587,41.472784342162,38.3229461951054,34.1038119617436,46.3593976452009,42.6765562134966,37.9355798937161,36.8148661826519,41.095388419478,48.6361803300714,42.062469516052,31.409831942117,32.7870818285985,41.1317699422427,33.4487971177243,33.9955279715656,48.1643930199507,46.6735427965648,38.0134125518278,59.2741313531555,22.6085723128984,61.2567705981159,35.9733582458945,680.858548776495,37.9662684690657,49.7008067577481,45.8857170429731,43.2252688460664,65.1648659037818,89.2511969935773,36.6382186932042,46.1871640804845,71.7287114520038,42.6065204463835,41.8643208668682,35.1022847136818,37.4084750972977,38.8060565412444,33.1098150526571,36.168756133434,36.9068396058033,31.8598785088139,43.5600308898831,22.9994508387896,25.0251742871314,19.4754301674013,23.5779079324525,23.6606283807265,22.7747224564269,17.9895127799212,19.5416555545489,19.7675423339706,18.6525390003431,21.8439926241455,21.3413850356916,25.4054706035597,16.5972295576282,24.8892902429662,19.7505135791168,28.471140344617,17.3099410519715,13.9541995336684,13.7431028844045,16.6178726225314,15.9178208340918,14.3664617498635,10.0975474445489,13.0228628077183,11.1677443488401,15.9677666461815,8.29124940413915,12.8795460808206,14.1952287381001,69.058745808559,59.7274141295566,29.9088634704237,28.4134410741744,30.8961686056765,28.5883636431971,32.0438138665256,39.1311753531892,25.0094412384554,22.0140515974172,23.980312276899,21.8043323119551,25.513206803285,27.7229743842198,20.0780905413308,22.53742135621,18.7020996495747,17.7203487551549,13.9426649001006,15.1886353453559,15.2829306143435,15.5167736950087,16.3767937777789,18.1812024852266,17.496696241725,14.503457064455,15.7559909810671,12.4243189263293,16.8313848335081,28.8799498156572,27.1214974575506,69.283665093284,36.943481474356,42.1193061068457,124.879553078236,53.9266217263002,59.2965826037573,46.6754485899403,65.8711329008053,41.9958883763499,35.5312146147781,28.2727397639818,30.6242112700148,30.349373192424,28.7680629977958,33.3950456929152,37.0060437206175,29.9308194026763,28.6405060809526,25.9263765185148,30.698874050947,30.1487071122554,26.1679728530597,44.6691931067187,41.6667495357733,36.6400571095207,74.5230056022493,42.1199099770069,40.9467723488051,34.4448443140244,21.5248059925621,16.1253080613382,43.5691536293965,41.1992385010283,46.9182666775536,53.4320138396131,35.3853723135884,31.0378523673347,31.9959193621199,13.0384675753755,10.714658351192,30.610191071849,35.2260650111742,31.1938874295174,30.6819115129839,22.0607600903124,28.8097596092939,21.7918291443045,47.2168279363942,58.662911193055,37.2686205013967,42.4897817734393,34.9049118594767,30.4676214431795,30.579012946344,32.9178002799128,36.4377416357015,33.0149155919163,28.4437774587815,30.1381832267222,24.4544734695046,26.8287084333631,25.7624588146444,32.5854459989804,32.2401169092333,35.8163722248807,41.5178868468861,46.2152169889413,42.2801704245964,51.7801709773026,50.0669755715953,63.3226201491914,30.4005936516743,34.6684469732274,30.7519599677006,24.0248237910977,26.4474205885081,22.772566125918,32.3862576032557,28.9323419162386,24.0321823008094,24.3887056735865,130.520684800405,27.956436347632,36.2547213059205,45.4142708981169,40.78569648556,48.2306267686776,34.1082946128745,40.5630838249302,27.1363635921992,28.5378493998803,22.0116201196122,26.0866638600539,25.8995009018248,22.1610525153369,24.7726309325037,35.6930117257131,31.9381835470034,30.2566240663049,27.9470955456174,22.3340178549556,23.6617775034082,21.2071824812678,25.3908239482658,22.1352767129511,17.4862281652169,19.6183470820217,18.3129610849104,18.9084269662801,21.1926683087843,42.0765031659473,21.8485536604207,26.8162675947055,24.1781627320668,16.5692204715808,25.6671651166874,26.1562644875025,22.7654355408691,19.5812973751963,24.9923174440221,23.5943883201511,23.214419025136,21.4441164538988,18.1376666933073,18.8157140054136,18.1806849729371,18.8313911626474,23.9918039441706,19.9056309059572,20.450826922155,25.8937738446936,31.6477540921146,26.5046776177385,23.1965178470337,29.3684992899129,23.6811316816286,21.4651786690986,24.1340847805084,19.9461340744416,18.2499539186348,20.980180547523,20.9068556001572,19.4452396624692,24.2908840543136,22.2107398660731,26.9725902435175,26.1063596356937,24.8961300801733,21.407066949973,20.8127470915929,29.1333565732376,27.1980762856498,30.0533107270147,14.5798326739495,20.027220210032,17.3650963536579,19.1561595161265,16.1915096581284,20.2190911126444,19.8651356590587,15.9671322191133,12.4130928101996,14.7355366983669,15.1779730735978,13.7445960761854,18.3369580965148,14.5848455629471,30.9511466733399,15.7404631645828,13.0524256935488,13.4333198364908,14.8285022488806,16.5182916996209,15.9573552524978,16.2084518456477,18.0778564850805,20.9180969299496,18.0790932527823,14.0490325497282,12.3144539429371,11.4764449961432,13.6304680526897,16.1176123267206,13.693509481782,12.4321389773091,19.3288058978416,14.1970325003102,12.5867940807406,13.7895595993469,9.69265140336337,11.4301419609679,9.97463833190447,17.3026186204787,22.8684187030756,11.1829355313894,16.2761351086709,17.859051368896,19.2683098356674,16.4178708171445,18.1627583952095,16.6863586169695,16.4217644878533,20.8293560162425,23.4568784030394,11.2646855745161,7.75249264036737,9.95164437100231,9.42368535334814,7.53694873781743,11.6450917278616,11.7025272275909,17.3670669458365,16.8435914671089,14.1919287310935,13.4459490378576,14.2413823628693,14.3658102994616,13.08240661022,10.9942603523327,12.5360642008301,16.8013279111008,10.4953942710939,13.8605150785929,11.3131153727782,7.21417085825469,12.5538683021974,9.02855679976503,13.7290859770748,14.2627974663923,8.10083620465107,12.3723141739335,10.3999421391667,17.9298702099535,9.18422229304092,15.9232894663545,14.5630686513686,20.870968827847,15.2435650352349,17.6595325149239,19.4059660903192,17.0734551210248,14.3902424461532,12.1010910761943,18.1950784710635,22.6448534145686,26.3917403137987,25.5110363307083,9.10298048098664,16.7389855767452,18.7902744667949,19.4202133970838,16.4538273933178,13.3315925134739,11.9769973168934,11.4081231608335,12.1324296999346,7.85168855538213,10.5850637009274,9.44061219012402,9.86963605369392,8.76716676761547,9.95418054483116,10.6951323758491,8.06497977398038,6.73212646034814,6.43447956760524,20.3820914121742,9.6052986831811,15.3997084242875,11.431836333687,10.0314831889237,10.0518756123632,12.6783899032883,8.52427308387025,10.533322340751,9.72574214578714,9.81530740725176,11.5452136477571,5.62554108614832,7.3729562406571,5.69918899209959,6.68268355321858,6.75034473882597,5.82790762453627,21.1124280987123,15.8807085936035,22.8336236129528,19.4342508796305,17.6550893090884,22.4636185760872,12.7602829816236,8.89844802427218,5.22923532130572,20.7612769218208,17.284084558585,15.6557602837396,19.832796691755,17.2614054229051,25.6994239015727,18.919065000465,15.6252042613503,21.2623279666555,22.3678683755152,20.8160755777485,13.0678657400494,20.8759835051997,27.0408245277119,11.1459330648796,23.711624882491,24.6361951006897,24.2629045891234,14.3294266315357,9.77767022796463,8.23542949018462,6.41184304532015,3.70877943777479,6.88320365354979,6.33995969248878,19.3238743265532,21.8790815504582,21.1040221268883,26.0254048824959,24.8577828735969,22.8243544836978,23.6773848188334,24.0810109411008,30.1880142331287,29.3668839686545,29.9099481259109,26.7438079118054,34.0334741177684,27.4574836456591,29.4081652461842,31.1333137181307,33.2055097775612,26.2420513843412,26.1129420378507,18.4770040824762,20.6369642792076,14.4565096297544,15.1505406198239,24.3963629849906,26.6505043169512,28.0423988373882,27.3883694791028,6.12459065556857,3.81842719542757,7.12679272311177,4.17365796019863,2.48652261155262,6.3907412756424,5.09173809368551,3.75366040642342,3.33318834134354,1.8454209086107,5.87750015667944,18.9266110060276,22.5676789429105,30.1433827066168,22.5003659496283,13.6723069863213,10.9430001096015,8.52100838966918,13.3514518693456,13.5616118722994,10.0236323025782,15.7775442462616,2.75926315116334,6.00427349755451,3.68212415018034,5.71966856956206,7.8600959205953,7.33672844293184,7.59882588495822,24.1036322415525,23.9950802962432,34.277316529913,16.3085904599639,19.0479596576173,14.0887296261899,18.1872851268877,19.7691127865752,18.6536473675671,18.1133800476014,16.3097151507345,12.0969050570293,13.8975859193375,13.8708179509216,12.3782935587675,14.5673169552947,25.9705784834304,5.31623116809856,8.31480003643333,1.97074847880361,27.9015675217171,22.0403273302358,27.4597624440599,24.25250154694,25.471150656777,27.3179954448459,9.92665241433798,10.4800792685899,8.32814345412306,5.12395616870774,3.2047175232535,5.33103007560658,2.36878276483888,3.54234509181206,5.38725648351749,3.36030684552368,4.59918069209877,5.64769265078512,9.00650267759563,5.48283931967839,31.1522590565997,13.6242178270632,34.8020621697886,7.58428561275021,10.5635492574345,0,2.15957203302198,3.67441106761398,2.95923916634254,6.10210789911135,2.60596326228544,6.01296575327922,7.9562815660611,6.70831479975094,32.4723692157652,44.7491992149379,34.9878213824075,43.947621730248,34.4231907500551,45.1488660110916,42.7105820113454,46.9128619403015,41.4602561020779,42.911507244674,36.6640250511923,28.8984813099389,32.3261831915381,11.6775542630806,14.3482370337067,9.69419148391088,12.5237638847529,14.4935114421795,10.9878518860286,17.1736421978246,11.8851260663257,17.8468236399586,8.51712636059112,16.3573325991435,16.5544938826741,10.159509934449,9.98880794064198,9.04211492301997,6.99305163412413,8.53721272315304,7.41141127324363,5.69626606834492,2.81983381990194,2.32801850606776,6.15538864738365,4.73075808323163,7.00947104032322,5.24453062867161,9.09067694010424,7.04263990456306,9.20745074401492,9.97164298099542,11.8595046091825,10.6968082576052,76.969977770135,54.586627002044,67.0366250882034,25.2481302976897,30.2949461325796,31.6931336302657,29.8900003140602,39.1067701634258,10.8066123920432,9.37193564405695,8.63616663584449,11.3565426877809,11.8930099898777,15.0546300477724,13.9906182857372,13.3745718243949,14.137337252228,4.18698696294705,4.46745732568748,6.75367966006628,9.11737521967995,8.19288967751565,7.99006998609477,9.86839948974539,11.4899253562239,23.3715995149843,27.2017387669651,36.0785980192378,15.7185674501379,18.1226976381881,11.8511903211609,13.1245842592684,34.9072943967254,36.7800913778071,47.3238519402797,38.77408115677,35.9588423870443,47.3014152143631,31.5959710973895,38.4971473130009,46.1245823462347,45.1835862745001,30.4260588743018,45.5587125409876,54.8965122147366,35.2185607769333,33.1996204034725,27.4261809715768,37.317997539568,38.019184062096,16.6309629772893,22.8131522739299,39.3590500450091,51.1612712000155,38.559993262009,35.95238432026,39.8290322775731,31.6878146519002,46.5418094016664,33.0532114636049,28.1938678615755,54.2570197180869,50.6950747461482,60.5582515398297,44.7226320647158,17.63144603946,19.6505317559447,22.0509426460442,45.8459348994408,42.7792306681408,133.152698070462,75.1026262785563,16.7291591786645,19.4178322530593,15.1373754157019,19.632550258253,21.9305926744964,20.614539936229,21.9748003611306,20.0657598612427,28.2891654209845,24.2270134051846,28.4908590800883,24.165495315083,26.8831950264439,32.5547074713394,33.0076227237341,27.4132059003515,28.6576955709274,29.5101213304866,31.6880145669597,25.1965794346908,22.3095144151236,28.0555976388927,30.561844351452,19.2399683588272,23.4225376124749,19.6722649988634,20.0387637610794,21.7706066476153,26.7387396222939,24.3438004660324,28.7194214958641,25.4358898959094,27.6240359820413,33.0104787430107,31.1431606985308,38.8334374419813,32.2695509312646,27.2332990310798,38.0629880198485,31.4848682875654,24.1928468954747,33.5202687978053,43.3562304866056,39.1919980455037,41.6381563333111,47.2017053670558,83.4999295572866,43.7147631759489,87.303950887908,45.7456483074152,39.2285114313829,46.0983178912465,38.8986891546284,41.7201060334964,38.5692645664495,40.6705397168233,47.5111343091175,41.8871148089453,20.9111258577413,26.6392361268385,17.2335298123668,18.6604350050463,25.2932559437271,21.6452655640258,20.6891572216184,43.4564186017765,52.4279015127725,41.700069396037,41.9611523506526,67.8351945454531,35.9793078981326,58.2427293643697,47.7787641021048,36.5873568247256,19.112643106262,24.2994615155175,26.8783101053197,20.6595446108694,24.752018848757,39.5098280584869,67.302531947376,38.2938829604004,39.5460045708622,18.8051248570767,16.8620364822238,30.5439186707487,23.8177739408633,25.930499566287,26.3594965935366,30.564007012356,32.9564436140873,23.883729446385,18.2884714888811,23.7734572937513,22.1454301259194,37.4869032282829,47.4404153067571,36.1939752606315,35.0410455697121,41.1830905526498,46.492055531643,50.564013224756,30.656828851342,38.7107930687662,42.9637390427635,30.2665595901842,60.9042504094037,48.0350077127919,44.5723102612742,35.6125403822052,41.9230310652732,33.0750951194097,41.253421575146,41.5933915480198,42.3379527872438,32.5829119875899,33.7482300479262,29.1506294481889,33.798138996333,22.2744305660582,20.7578745699602,23.9255098312628,24.0454068131363,20.7746087807513,28.6599309516736,24.3299560973402,27.3892935959481,27.8235514704998,32.5689838404901,29.0630475713799,29.1279314439249,38.5144937409342,35.6443872205131,35.7175400113103,34.0922400029722,35.7829846796464,41.1176975135556,31.1831908127136,34.5024638507573,47.1827836642234,46.371062917676,41.2813819313481,117.751862841472,22.500128809758,37.5821427546746,31.3152600735837,28.8854901749555,24.1020050069734,26.5004794955974,33.9120370584308,39.7507540528979,45.350610988505,45.549916116642,57.8610689464846,34.8253855267516,43.4843256747952,40.2964673138417,45.0158126908617,51.4764975712208,58.5181244493169,38.49717832407,110.892428808046,23.3319307317884,27.3011004679418,30.8867521986614,26.2368939039071,26.5678926211604,24.8327385002986,34.4451736119303,21.3782366499404,71.3777363500055,39.2479997615298,38.1963169541598,42.6245595580071,39.8176381372443,55.1117697890499,63.9310277260756,48.6991368825324,84.4055302342051,38.7653272994343,38.5323803808575,30.1764172583654,33.4108703778428,33.235945067817,29.6889673831489,45.8405514594051,43.4808854505669,39.955064327066,47.5992047608903,68.8234555304629,49.2717434930044,60.0296942559053,51.0616808772524,21.6007035018044,57.153529277515,46.6465055475445,118.124276268702,22.4711000462013,58.0621178227209,51.86497106921,29.851287369625,37.0969223290101,39.4660517188851,70.1466619096555,75.0568360279967,107.405329060609,34.4233495185075,46.8014234690476,36.3189901641992,39.5498311474334,40.3662484102729,49.2257920421574,43.4579612528645,48.7465504868526,36.9444713273509,39.0432382519821,44.5056652019902,41.9946773478923,44.3837772862751,64.1443347539523,99.6177061126779,90.6146019333219,43.9680987697964,42.9916712617735,23.529913585851,55.1131071046558,17.8256640347473,47.7548410742242,59.1556790335379,524.435088059537,521.644351928634,500.815803174601,504.947797242427,437.711299004029,477.294265977583,417.751372382992,482.49788945542,517.293414131457,500.857315903137,412.825203529565,484.407329335055,414.318323805863,507.070665945982,510.558151111074,431.940315015931,487.225234851242,500.095511000456,488.332505027782,532.650656170623,494.303045851233,515.367197652392,350.888394074915,494.373558472713,415.36506945187,412.661173317938,512.399530363449,518.113219866663,65.1153546762251,44.4163866837478,78.5027853716514,75.8162618960058,59.8042061654173,46.5423055828121,63.9832175331639,44.183351941574,43.4225898791693,43.4623124002754,37.8659738894502,40.0845968779583,42.1099966405599,40.7597640929218,43.1677687139976,35.7489335650437,43.3665726542941,45.127191074735,36.4661735640434,34.4248403419068,37.329696018927,34.422022285054,32.4318505257029,5.08016225056976,58.2324183970091,5.1330238360508,55.169816884909,2.77053876073251,2.81657128946591,57.4057678951754,463.382644027478,27.7474697568152,48.9012835720517,56.7947444455598,4.55269260906675,67.7214864463738,41.7992950597664,75.5017027969032,87.6341273912589,49.1508057349506,43.7340631171405,45.5232823058487,98.9602566914461,41.6892819084923,37.5584387352895,37.1916308899496,33.4183523168639,41.4803687056252,39.4316517247358,33.8538359270738,31.092607998718,32.819403804151,31.9574374189226,28.2544663326038,27.3526653527064,35.8991677701801,28.8813182159882,31.4345480087584,24.800500654639,30.5386219922524,35.1727252889055,27.3009784731426,35.6705698241338,30.1157155586801,37.7122995551415,32.7481783637879,27.2113335559474,44.9429028620776,43.5132528020287,37.1261013154841,39.9604444348077,38.7904185135637,33.5159394954102,30.0082607663346,34.2727609195059,29.8280755501024,33.1255370021196,41.8120466883549,63.1486939806576,109.365939431522,43.9828599978016,16.3288776321269,14.2091255646425,24.6357537309512,55.889911476937,56.2057595474044,120.956169004401,57.7775664814428,52.1507689611438,28.3851875984572,80.1591434113819,53.1444146032584,144.92423734263,19.9295846295282,22.4834804986876,31.8142734326641,33.7410401335967,35.8853216462349,33.990822767209,39.2587086069984,44.8180629157022,43.703463112926,15.6421092729177,12.1031519086428,12.0112106655249,10.0277901556442,11.677626633409,21.66235097799,11.3260046842287,8.60559102451118,21.8465073920582,28.4129057152442,6.41716320260952,9.45660028659138,19.2041096626546,21.7489959936207,10.1030333341446,2.59324744200238,2.73229147666901,36.2787983631125,37.96416031136,50.8972545300162,16.2142250639357,8.81569519457917,132.044833137318,13.4678319373906,52.4905559211512,73.8682852795589,61.899085092815,125.17973961533,26.3404479498413,18.5237920982785,21.3007490569852,25.8546932645359,37.5987303359097,31.4256145654681,34.3925108054392,29.304177164,30.1769251054266,29.4449400526142,26.6438064230835,24.4053608410654,46.5441000706242,33.5433371860668,61.9838022082811,69.6496839107062,61.7800574931147,43.0137281678981,48.1354243549702,27.8213809557983,43.8129739231555,61.5116426580667,40.3384893495803,77.2795159157495,49.3519190833859,31.3441498212213,41.1308012265267,28.3967862438681,107.943562469446,26.5546738272439,64.2106921780176,47.5374679305762,71.0899278079433,28.7544547754809,51.3715857733321,40.0708951126191,71.9516572112491,103.427254099147,51.5502639477058,46.308124730956,49.1491981483422,42.7337473536415,71.7529694916469,123.106767257659,69.5432119435378,42.8968104993888,46.6083519141865,47.1313219977073,46.1506659716055,42.3072698369357,48.4205315045926,33.1294102711774,30.3689386917172,38.1155005177266,32.5108480276232,47.1317218013838,26.6595483988017,32.9756819589128,73.1908288320052,38.02345111923,41.1793131904971,22.2159254906145]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1206.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1206.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1206.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1206_field1":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-14.7574529682214,-14.8141020715682,-13.4470219561615,-13.9746152047335,-13.2346719160046,-9.8991131402669,-12.2115417280166,-13.151032993451,-13.0272231934781,-9.63131541200947,-11.5130079830641,-11.0497824518491,-12.9940950368155,-11.7216318825026,-11.0493285835416,-7.845769530493,-13.1231745528742,-6.53978110968114,-10.5619152994751,-9.04111861933683,-9.84661647409674,-5.9299360017919,-8.74656107080543,-6.94638166583172,-10.0369624150325,-5.19684571675201,-7.53341469017009,-2.4395381607609,-9.33663458016526,-1.63586520104747,-6.85496789171138,-3.44758642599803,-4.18339365998117,-0.665062654189695,-3.73079003126872,-0.103979578220538,-3.86236489595584,-1.51622977760791,1.18343956967331,-1.5077656985259,2.07376172563023,-1.60311593210059,1.8750866078577,1.56289812170934,3.16575911319977,2.81769341547162,5.44763259426002,1.93554098612876,5.27624400374084,2.22806812968185,5.60039554174309,7.80354841582309,3.57022025196291,6.68626543456944,4.88262746903584,7.21382337980587,11.2611210864925,8.0074018550234,8.62361776743319,6.75933407128861,9.48562032032788,12.7600791291933,10.8338230390589,10.4592775183539,8.40134494204792,11.9765112829189,12.3099825936792,13.0576422615575,12.1712336232456,8.55786846150312,12.8227647882765,14.7862219362513,11.5501333559247,10.2730437181009,11.6698906377902,13.8414908552731,13.6770242379942,12.0584045478166,11.4451288394896,11.4411277500206,12.1288518193622,13.5308610646701,13.3755972896595,10.366148060696,12.0911538105065,13.2065974606776,13.2835845288009,11.6199735587053,8.53409852843265,12.139429223005,12.6907003176217,11.0967919301046,8.96419965032178,6.37276342963815,11.7341851233501,10.7993456406597,9.80255792048705,9.9406062980053,6.05085970087104,9.97882754027065,9.39223036377139,6.48294737171752,10.3996161082632,5.77103802403516,7.1829285369051,7.25479476402767,4.42789779420726,6.68775577560409,2.70782721565072,6.33710556399064,4.73830890379285,1.55096565356138,4.36738643991021,0.537450716418025,4.13353683338979,1.1967694479685,1.42402002449602,-0.10810815598524,1.14434880819663,-2.62759495240897,0.817876260692475,-4.56449282544325,-1.15226832430454,-6.94578960996537,1.30464343070485,-4.50361054756823,-2.52396314789047,-5.35364082502658,-2.24567039877581,-6.58748615984955,-6.19502925381992,-8.33377842651782,-3.90089111965373,-7.25590730418555,-4.53644655292686,-8.39427831997774,-9.39157104200227,-9.91646192951541,-7.34657281348672,-10.1562057403912,-8.12066680328005,-14.9691890998735,-9.03732560984806,-11.8094863105777,-11.908677401222,-12.9231760188083,-9.8001328030937,-16.1241109193022,-10.7033745026261,-12.1967772732615,-14.2451986814806,-13.5443989075108,-11.3848060326565,-15.3404502360847,-15.7996279718251,-16.9977654490755,-38.7272567645176,-2.0022980206346,-3.87975242392066,-53.0608260916055,-27.1054215823426,-53.9036657948736,19.9368256071921,2.97776022905932,12.3244169842796,-1.59341276776941,-23.7981365787529,-6.13207534187047,-78.0097244191712,-52.9764608728654,-81.0550014198058,48.289426116799,7.31340379161315,11.0203979460302,37.4140971905009,-13.6925602573051,-9.46414613006337,-73.349011396144,-105.109487828649,79.5512117177061,57.8526786726662,64.2162287550223,-124.00704277856,-11.9696582534719,-139.879954145554,-91.2087148302892,-135.457108068264,94.4324852843875,17.3230322726598,67.0427181855467,99.3369142584089,73.855715142333,55.546904080835,-17.0694888748399,-97.0810440684871,-109.440293558719,115.615820814441,96.3773734911472,132.310910757303,107.060696079587,-131.910133130655,-15.355803895079,-157.179698221909,-119.284669503513,-120.135086303596,117.576927392417,22.3545858507626,108.668082868054,131.959645306646,120.205117458086,-19.3198059820079,-126.920605524721,-119.536169409281,17.8308744384387,135.535001844217,156.32956689336,125.507645691161,-139.873541470721,-9.38964986986861,-124.693926943285,-103.05178702237,140.566134540132,22.1263761015099,141.170066745884,-152.954877511922,-19.4082756390652,-137.812083183667,-121.506506565406,-80.9403360214708,127.796347975999,106.188396701644,153.27871834527,122.992316741378,152.555206022651,-15.0651312041523,-115.518726567271,-81.9378283448832,92.0252021189937,93.6479579880218,137.543279692957,108.390443202146,160.721546139041,-109.863460667583,-17.3347776548352,-101.372303348653,-99.7534526625513,-87.9597825419199,58.8383432039251,12.7665571496076,100.790657564076,87.745591968513,149.287837065954,-15.280826566383,-74.8775815189632,-48.8332702709473,39.265096013195,10.8494907565867,81.7396296422472,60.6381306439041,-71.1772936646237,-10.5060637496291,-46.3492048784237,-61.6476118271013,-25.187566044983,12.9054283574721,10.5526624632442,58.1968848634112,30.7567978758864,-7.069580769259,-39.180599915114,28.8763713677936,15.3063689863893,-16.6392966885992,-3.082315465065,-6.40792520918924,-1.96395328866766,-3.21779733786508,-8.38429037252065,4.60255437674985,-1.95632789473968,-8.33918363532847,2.72325908766023,-10.765146709689,7.86812609740228,20.3614876381108,84.8226972191904,3.85559624739869,-10.3143949022898,7.45342519122845,-19.6461618474421,11.1455607235971,31.2443970658154,133.44751656256,5.44500696850625,-10.2277243962792,10.3165171866863,-6.33964062191383,-13.8217953921801,30.8813768653241,147.40951116837,17.2833239116094,-14.7895217677534,28.1371506860171,138.518620932343,5.5132672859454,-9.5570776009894,6.44928551415307,27.1273697311424,119.747233575431,4.09045300663911,-8.51679285012354,4.19663088384424,9.85431236231362,-11.3379271418693,3.5112838341899,7.35361859659282,-1.91254402398819,0.596128562652762,0.555695784732152,1.45174136310737,11.9941078872482,10.3550784702097,21.2330474971101,17.8946822799079,34.4344256938923,19.6401210837088,24.7946528221695,20.6201013914673,21.8950638051016,18.004627561132,-0.0807361881643919,0.177299965385033,11.7304957901978,15.7536370725595,20.2807119178798,22.9371321306058,31.0745136893701,22.7385996555399,19.9691952533763,19.0290793545445,3.04501988046715,-3.56209561328319,11.1782384236538,18.5466506191421,29.6449012733228,27.5642164961486,25.4208653809755,27.4045065670358,20.178382779345,24.1408483936944,17.5989731712696,12.9642875412522,21.4055980081513,24.5017923809695,20.2045626432539,23.5442484994043,23.6399725153643,20.3404435765029,12.4050772604502,12.9449345877046,20.9758911340465,19.9810590397118,21.1993574328225,25.1740065701313,21.3038869338943,22.4780218132198,17.3389959530661,9.44543913993201,17.5305072815113,17.0303284158605,9.45490109108971,10.173671879536,11.6279788278149,18.76392742444,22.564593929016,17.0668254405793,17.593988067719,21.5794490794967,15.8430556932195,-0.894439167594396,-3.60476255766196,4.15856483025508,34.6326566913364,28.6470541355958,25.1005122079743,21.2973831902499,22.4805225231492,23.5759082406344,25.8056272547696,23.9224840709512,18.7328567859431,151.189100417067,0.96611967835198,117.174365748415,167.168907273023,28.0760819158831,25.2533255658254,20.6238924839495,18.8510428719706,17.2852585960035,26.0266829055397,16.6339159903473,21.514498275868,13.7672259261181,12.4524640465523,15.8575643657917,14.9779376426292,18.8408689002602,17.9448485123322,18.163452654213,15.7211549910218,18.2638791299415,16.5425469377197,12.3317041162893,14.0434228000596,12.9101374876809,14.3776063967674,12.8835086758813,14.2929953944898,16.1831466676483,12.4142977209389,14.9170111329257,14.4388732415399,13.6095931681815,13.364269045009,11.3712646039783,-0.654263143817022,-3.78118528978099,4.66888369882827,13.5989076672928,9.29831417215677,17.9464658542426,17.0783985949752,20.8833503287067,23.9536301371264,14.3866558887366,13.8599684941133,12.9002364000304,10.5366644408251,11.7647261840746,11.7944589410846,10.8503928781659,15.3317995658196,1.80124955036419,-1.7327788994469,-2.53015908172411,-3.12279902939481,-1.50073200952732,-4.78477945877344,-2.84272576416898,-1.70111184659703,0.513914713057444,-0.519599039273066,0.306077484824609,-0.435858964812401,0.513524392515139,-1.4510868183126,2.36240806639036,1.77638930162865,-1.00911811609366,7.37703519028514,15.8045746862621,11.3190530092604,10.7089786934765,19.6210675690867,16.5562367113392,12.9832855078717,14.2261715155763,13.6024078060935,13.4992788631973,14.9797711686288,16.054328087238,9.51256912863327,16.5706983721823,13.6261650507072,19.2380518189546,15.1844977955129,13.2679473015657,16.9245079300612,10.2489256303052,23.3781477029872,11.5969269106454,11.6505703045312,11.3110883384081,12.7018471737729,10.1626346678641,8.99831761731228,9.76717456266348,8.16685142707689,10.7007476031038,9.08224936766927,8.65779045609027,8.66474405527907,6.54565642976301,7.41976547435771,7.7746501455058,8.13979614303071,7.20184286842913,5.36013689516967,8.27728687559209,9.54474952429277,10.0936723587272,10.1228694774353,11.7771978094373,8.99661329856613,9.18914795062837,8.18909945038972,6.53926002667099,6.15399440099154,5.48281594732457,12.035343326054,10.8485753743906,6.86748688454496,6.96782713250513,5.23160533238493,6.15918287273812,7.74300428874057,8.72404982799661,6.48478801630628,8.21321662668092,7.9084183878813,7.59511792451876,6.35860813967547,6.49888084386621,4.9286973095457,5.94726118410229,5.67411296510768,4.7803322145602,-0.21328126420601,1.21843665638681,0.82042470356631,2.19226186309799,1.40129070919778,1.51477695844347,2.4677684778181,3.11891509213719,4.72399437188031,3.34614786084683,4.33332716165641,6.60060050014403,5.56785845906922,3.42371092486011,2.58979691180403,7.43386605631729,3.77178834438725,5.1661562381539,7.07096979752327,8.39261279321366,6.29953076827187,-6.24300640789988,-6.15214887978345,-4.7796138090797,5.05760616383122,54.3856592727172,4.81693763224907,15.4124336939383,14.520652813634,14.1863886525932,18.2565053190946,24.3861719058381,12.1354444180444,15.7859698867268,20.9340431410604,11.9847087730237,9.73074245545851,6.67957216907684,7.77484361786886,7.25846988270757,7.77947758720917,21.1650939461801,15.0517225370398,13.8850105577509,18.1977964769811,10.4362118554603,11.864303733032,8.88105922361342,10.9020284653373,10.9026447100348,10.4941859287724,8.43294959744216,9.21383538347783,9.38413943970131,8.39813676972424,10.2765410418421,10.1567452990959,12.1353509423487,7.96363549288077,11.456672623969,9.11935837090307,12.7440426994773,8.11555846109629,6.52504123204709,6.46809731267689,7.55622051566544,7.26507202305473,6.76275575906024,4.91675665489926,5.93929754392427,5.18126472313101,7.46567095271813,3.86631838088872,5.7834359311316,6.61850209621003,15.8149018084792,17.7163790855626,7.63254134380158,5.3695901811134,6.82832341781961,6.27713150743063,7.40208073247437,8.84670019275197,5.27417113379914,3.62840512683998,3.70759304825916,4.2939548226405,4.41958037822774,4.18922991896055,4.31242348885259,9.68134395955781,7.07846935403883,5.96109137677714,4.0406954305683,4.80674064988526,5.33937024440226,3.63189159723303,4.52783992811684,4.51444583536936,3.59931710624977,2.18830117846349,2.96130037537027,2.84440870545432,2.28591983581546,0.881032459774109,0.809048518606565,7.54856808503282,5.28747271008169,-6.24874443013487,-10.5635946215742,-7.12399093255296,-8.93884931109623,-5.17517433778497,-11.0206905659273,-4.29358731735468,12.527571712506,9.34715860730364,10.5946228120802,9.32324855523994,10.3904752747549,10.6573484389458,11.2428524740257,9.18231300694987,7.85006773843511,7.905596871731,11.246919192311,11.6487882648362,10.159946925296,8.82915160391497,6.20306160106695,8.99427737068062,26.2596708563202,19.1726100169416,18.821633323638,15.1801232548338,9.5343968989115,7.39156609248347,12.5263029254979,10.1569689288729,12.2137984599725,14.1627115155444,6.32261423178506,6.03136668262326,4.28081740369449,4.99499035168045,3.69833262858471,-3.6334684910171,10.0158224201015,8.51193541965979,7.41232557732294,5.73273165523351,11.9426155573342,7.54310744682312,7.21148055990195,9.30731799623836,5.13583505064536,6.31776385918383,5.97428721555838,3.7383876241643,5.15656626439456,4.6703779112279,2.75369841412841,3.54164868608317,1.74058370293543,2.64521401823506,2.55183927838245,2.79092395133934,3.78620907320364,13.8143500340525,14.9797676798618,9.64856626195186,9.24253833421399,12.1206185872437,9.84882808971979,11.244575243528,10.5164046035676,13.0266302629929,5.09954154668295,-3.51121092853387,6.33489056394484,6.80260844808555,6.48447218732045,6.82826243528257,13.2371361799799,11.6377920898453,7.93853163279626,8.9308261937249,11.7578552728485,11.9450015032832,16.2565946434624,8.92860036601075,8.03763004018196,8.31792307559016,-2.59229794989652,-5.87823543108375,5.13828658882354,9.73419643248694,8.44838873916368,9.95293134739256,10.7422477960701,9.19454062658413,10.4740894280281,7.56788161599245,-1.48689137354738,-0.748262880718111,-0.0917124760776975,-0.447701475772733,-0.0541201785980891,1.31380798240501,-1.39158728739309,0.547975512175064,0.201729311519281,0.174776063100476,-1.33500384433528,-0.677401656526115,-1.71365425044074,-5.41131094165912,4.00996856844312,5.99867319170594,5.15855364491039,6.8031084895106,11.5610976616987,-0.916343640962015,-1.11631717890387,-3.48573483015309,-3.08273824359899,4.21437926412849,3.10302703220494,4.82529054913067,3.69544930648852,4.73537530156029,3.82450770322466,2.77245966904447,5.82830944802709,8.52754902530465,8.05733124440006,11.8396285170747,13.7604231912198,12.3052954051045,10.7021199418181,14.0222487242824,11.0887535476733,9.76853488075633,10.4972728671311,9.20013378593998,8.36324311336786,9.25159751800784,9.34659434268602,-2.31495061603233,-2.24704315701443,-2.87007718957802,-2.33271394564158,-5.03177449918718,-3.96503722747235,-3.5513787604479,-4.66564075239397,-4.86828518934001,-4.26445619044055,-3.57541304571488,4.33167071424488,5.65292562549265,5.03244650597794,6.12401631340571,5.43027302038523,1.41041931537341,8.11485027254539,6.98718913366007,5.1336625723907,6.08671519247704,5.75041281679374,5.99768037569513,8.03353184528207,-2.13632309861442,-2.48967124859538,4.00388519408843,2.13888562427931,3.27436797436835,3.08595214278457,2.75296170382904,1.10300780644068,1.90496139023375,1.73982281886108,2.32434559648492,0.793100877972119,1.67695069986908,0.204439210244981,1.30930561985224,0.828569589186407,-0.3828521139128,0.0556390754178453,-1.18099801112061,7.08974122181648,4.84085574065074,3.7725246027429,5.06480167376438,3.59438297368329,4.46004982149103,4.321676631236,-2.44668234126158,-0.1088299125706,2.05195183491991,0.395818692775528,-0.250838514389411,6.39768808500753,6.09331985566903,7.05462492716304,-1.60830973027223,-3.95690646022799,0.510571252930722,1.02122377766128,2.95066372527533,2.20346143940174,3.10715207552953,2.36785439147239,0.930139612223157,3.96455051680274,2.3430934327961,-2.31271168163802,-0.563690243902071,0.520123255423928,-0.621802241554422,0.183887045423579,-0.795810153999652,-1.39844974156664,-1.32649669563583,-2.01173428984313,1.24669294122876,-2.81846873385797,-2.93515862616268,-2.21282586777192,-1.48999325685441,-2.9261892979871,-1.98924826841731,-4.3506973360659,-3.87430685155883,-2.81765485314903,-3.61914889068728,-3.45723997513345,-5.71214842400193,-2.5371161738494,-4.62745644879937,-4.79936196533063,-5.71374551121638,-5.93562343280177,-4.82677315797253,-4.56737884312893,-6.08596406374173,-5.24551043212064,-4.61294218213082,-3.6088041927542,1.9019582835851,1.67807798859891,0.568735110711555,0.420758918606818,-1.19294632972181,1.07304519700562,1.96629201960358,1.95654010786083,1.35703439044955,1.83068978572106,0.917465712915797,0.0659725937168467,0.940604774996511,-0.638189469088478,0.232095002174916,1.1114923580863,-0.601036421037175,2.3394589422498,1.94650625445461,1.59856342419326,2.11781422435787,1.34711737240753,-8.17884392634403,-3.74165461192326,-2.93527497552483,0.572692080207137,-0.194386054376074,1.06144306807884,-0.508175686644669,-0.734880292878622,-0.945241653438545,-2.32721515161531,-1.61117533230215,-1.90481031763823,-1.42687185018722,-1.31946042871318,-0.102627811837485,-0.662133942901952,0.257772437320876,0.828498510536592,-1.33038173710896,-1.77340797082792,2.37326437325806,2.73538868295475,3.11519793191722,2.89501314816035,2.30992497368826,-1.30321838588732,-0.157522041435864,-7.54253796311506,-6.82517581103502,-7.05395908466262,-7.53163872614191,-7.2966434735711,-9.93932896663609,-6.68618787968341,-6.50378378970427,-9.42762329977124,-8.58087744889404,-6.60555796103339,-5.40716495793494,-8.75961538590433,-9.53311116047743,-4.73755616231181,-9.95487633690317,-8.91954944404139,-7.93544942191567,-6.3159685761046,1.5807364943833,1.67073532451586,1.55009596695276,1.38465848107265,2.31843327710055,-2.8153912710166,-1.87906560920674,-3.11309297780673,-2.35224970290087,-1.89731113441659,-2.83445561770078,-1.87300629850901,-1.054539412205,-0.18916360174138,-0.78819296590018,-0.377325968161771,0.466665823254947,-1.23611135957868,-2.7548179098162,-2.27089690669496,-3.93425693202486,-3.35673569017782,-4.08514307021047,-3.10057365714044,-4.23789619927516,-0.994596417880311,-0.597763817680276,-0.891471266042436,-3.483530329982,1.59308702237683,1.73194581490019,2.52110744163609,3.32264345113123,0.563806796789933,0.638725144593294,-0.122700928607505,0.389835042019649,-0.207446652262004,-0.763778571898225,-0.938611630573627,-1.46675806949159,-0.943639018994662,-0.411562747733036,-1.90893213538494,-5.86936940592882,-7.57084842566854,-9.50921657156105,-6.7666829492294,-5.75971943556581,-5.10931681926625,-3.88751911075385,-6.22778362539869,-6.12239723432025,-4.73987837387417,-7.42140055105228,0.334649449032073,1.57107911760275,0.857899762028716,2.67919771156649,2.80370149031769,3.1311796423796,-3.03448479541616,-3.68700864631492,-4.62645133637835,-6.69231717651344,-2.7403999297032,-3.69090639546958,-2.70354594618047,-3.41576228997084,-4.79111290095562,-4.35654423725824,-5.48649352317171,-4.39578511325056,-2.78681556835775,-3.5070374369155,-4.78359666427935,-3.68683632589702,-4.33261921182989,2.88496993608158,1.60998156622932,0.30694548407628,0.174646399956285,-9.15945095448565,-5.76402439466333,-7.00613089082157,-5.74498111829407,-6.76109341934296,-8.04268663110392,-4.17762579208777,-4.66208274952486,-3.78979546707121,0.350425667036214,-0.284571938877465,-0.936203361683159,-0.363206020485752,-1.06662806106458,2.18696458411295,1.54435664202247,2.02611897858002,2.49892810767791,4.05344634933575,-2.32430409906542,-5.18706258283571,-1.89181845224762,-12.2961513704845,-3.42598232359152,-4.03550761692398,0,0.713644747891721,1.51225944184778,0.887677110465695,-2.60269089884936,-1.21160372026871,2.48231614646737,3.43052874701949,3.24338176227868,-5.05554310910278,-6.48747901665266,-5.38269790709894,-4.86859310048793,-6.50733302601731,-6.39791899242201,-6.92588995924128,-9.40523965896609,-7.82094761614559,-7.71867538143741,-8.06254730112841,-6.25604286491705,-10.8845773638444,-4.10688944761347,-5.9458376940066,-3.10676852976644,-4.92657979180003,-5.44903239362335,-5.07765923212721,-5.98720520758029,-4.90993306716785,-7.15986462119907,-3.77329888712146,-6.43307529441791,-7.19827195635072,-4.4658256508252,-4.63026287316969,-3.76195692275955,-2.81248851212674,-3.20618866253166,-2.40880272930494,-1.86509630964392,0.87722113443905,0.263571378877079,-2.89938433017485,-2.07828659517425,-3.23254052206759,2.09698905621779,3.41624469412584,3.15786366401511,3.98470504744811,4.2557468114445,5.12059871913549,4.02432923469768,-9.85707086529212,-7.67258059842575,-12.1463639519289,-4.95469174837963,-6.33778208721718,-7.79502447798743,-10.8625571062522,-12.8309881907219,-3.13390258780414,-4.40890241524909,-3.92781646075017,-5.25169745623279,-5.56488700106943,-6.88109293580832,-6.19287461538451,-5.85359354292373,-6.74459396430186,-1.68269503068336,-1.98124625164922,2.5960522962196,2.95625341023277,3.28359309590738,2.23196867880264,2.95254788767213,2.93167245965818,-9.9396628916636,-10.4094768561702,-11.5884580470339,-6.81048954034514,-8.12194888995567,3.62363494815319,4.46907685539331,-13.6275270609132,-12.8732199015446,-17.5670826658858,-14.1500517583816,-13.6135508929496,-17.1492190478818,-12.0364793530407,-15.5662596963494,-15.1187844188552,-16.532214213579,-11.9834516112222,-15.7644109161712,-20.1739530654454,-14.5424544514879,-13.5958858219859,-11.3894519556769,-15.6199334409364,-10.5840116320711,-7.77043208525991,-9.81669736358371,-15.1640299924582,-19.9610923107072,-15.3447586092908,-10.6834335374313,-11.8937414546289,-8.57169696047132,-14.1931363823525,-9.42737685583122,-8.05775231499914,-16.0761192147734,-15.0285490936043,-17.9868601444213,-12.528301482255,-8.34386654409589,-8.56988822479212,-10.3217076010046,-17.9188468534792,-17.5396500048987,-23.9182493465189,-15.528601928798,-7.75226106282204,-9.02486105376813,-7.12536950805262,-9.03975842449584,-10.3903868635578,-9.60669401933774,-10.2305990067645,-9.25050397534985,-13.1092171160691,-11.3949802099035,-12.9660258426341,-11.5143206430443,-12.4657128361491,-14.8939472050301,-15.3803865565991,-12.6610803947379,-13.4667907134812,-13.8315596672122,-14.9985988155072,-11.7260533595189,-10.5502422562532,-13.3362623102214,-14.2751435497833,-7.99879563765654,-9.05589691513643,-7.99298610397459,-7.31036952738741,-9.13684008104972,-10.9626085559376,-10.2067325398349,-12.5968921222914,-11.1555024512455,-11.6608609895318,-13.5674566176766,-13.0378388560419,-16.3081577400405,-14.0442313026957,-12.2408171504383,-16.8749751501341,-13.9741967445528,-10.732182170445,-15.2401777529101,-18.8316137248756,-17.5958218429671,-19.4558770829277,-20.8293967361243,-26.3773179330837,-13.531685058298,-17.2072193890233,-12.0568401986783,-10.6399045349678,-10.8864400689447,-9.08252457020971,-10.1231409337446,-8.02888896609295,-8.9814159046405,-9.79758021613031,-19.892193445565,-9.63821037372807,-12.2706797236952,-6.56451231239115,-6.36763192009383,-11.6193983054563,-9.83629656241828,-9.38925151323938,-18.1168044095208,-21.1924024850097,-19.7473557346119,-19.8462051348573,-24.7839672537259,-20.3825794144102,-21.6868366582373,-8.69143003516234,-17.2285312833888,-8.55930123008128,-10.8407842903652,-12.2939097505004,-6.14920548620338,-8.77292832267557,-17.0491045494477,-25.842878897227,-18.0987237591209,-18.5951138270483,-8.14832727071284,-7.64716066010486,-13.1587105314701,-10.340591005807,-11.532592778754,-11.487999640583,-13.1810301199678,-14.7227151248798,-10.9030695888248,-5.21722645392679,-6.13849297556502,-7.75013848892453,-16.1917932264436,-21.9485603911135,-16.9268883896545,-16.0752203363392,-19.3912269477962,-21.9702963798861,-22.6223245979769,-14.2564738795291,-17.7141094765278,-24.6503517565,-13.8195012413904,-26.6360633654183,-23.185287251346,-22.0516477805336,-16.8164182875797,-19.4418744422837,-15.9635726124864,-18.8450286714331,-18.7911588733731,-20.9176281204134,-15.5661787934041,-15.7008669469821,-12.4626977811309,-14.8955665363377,-5.88226801486173,-4.87006622060056,-7.0709198758311,-8.94943413257465,-8.06718213997191,-11.0513197226326,-9.79367825098892,-9.97946859157572,-10.9162281978522,-12.7368075092604,-10.2784944854929,-12.021841192286,-16.0332205133245,-13.243146542102,-14.2694278090661,-12.7411602890574,-14.1394815668605,-16.8360401600177,-11.256859408049,-12.0720035559726,-17.7774769751418,-17.0304110292923,-18.9340650337082,-36.2173707739935,-18.6443186793037,-16.9456728677081,-14.1239771630748,-8.070556272897,-7.76180060980834,-8.3450886435853,-14.715658424642,-17.4367617437783,-15.3617343540924,-18.4876719931793,-25.6001541680092,-15.5977548915501,-19.9069702317051,-18.2719321493667,-20.1119092152655,-22.0937846548527,-24.9766497176051,-21.8425247545625,-34.1263910161068,-18.3350783189583,-12.5108232775152,-14.0017895075982,-7.30423636885843,-6.68159710152835,-5.56857732139893,-10.4810651649146,-6.8356211824794,-25.2107378616673,-13.5748490471131,-12.4924058424383,-15.7830092133097,-17.4294095572231,-18.8043535179921,-21.9876620992497,-18.2567843146692,-28.0385495647426,-17.6240655057554,-17.7574116799136,-7.62871556191544,-9.1587710049038,-10.8880648795847,-9.42121464453513,-20.0920799511518,-19.9336491101934,-21.9446267910375,-21.4096152209511,-25.051086476065,-21.602754770336,-25.6530221873294,-23.4092202584514,-15.1349775138835,-25.628745858779,-22.7944089476177,-27.800603411426,-14.0045929195501,-23.3099485818505,-20.3724596798087,-8.90117621744641,-9.67158089569897,-11.6009454693368,-26.5995672043268,-22.4040341907186,-31.1362593447338,-8.15937108340129,-11.2163379035087,-11.1938765162546,-12.9337526025523,-14.2565327583567,-13.8694529082635,-11.4508155586396,-16.0795636411802,-10.2633603156305,-9.74372131011448,-9.66232969382754,-12.4048769969806,-12.6503653723494,-12.7810274268111,-20.3958411418447,-20.5701869710138,-10.5801711797458,-8.96177149052882,-8.75467083335012,-12.2750114529848,-8.92960770141688,-15.4509345781462,-18.2809909700129,-32.7892999521726,-14.2985991679598,-56.3298692172498,37.6448418921355,14.4586028629772,-78.2898874833279,45.8601683326772,-99.6186662404024,95.1107833039597,-118.61785087256,98.9860729656215,-129.24006701398,126.819661245709,-138.746894627092,133.713001931546,-128.96066121296,-134.550204295468,-126.84255458276,-110.977416077188,95.1020778771988,-92.6339156214448,66.8803962540133,75.9193656727088,-69.9511246273188,17.3367455438971,56.0860832704604,-45.5419479077322,-16.3661968036894,5.64057708650751,2.21931872607313,6.74842162414294,3.92306339622498,7.65546659072041,3.99788210469866,2.04471456665183,5.19537310021885,4.50217757210842,5.18392506474662,3.70198125411952,2.6275558703809,0.578754634439532,1.39091876295992,0.511932365752369,1.7336604702486,3.27239262270187,2.25664133853211,4.21176651560923,0.353286345645275,-0.966039306961476,-0.300118196436051,1.5015709970944,1.61298023601665,16.9604015243775,3.65756260622375,24.6510552242411,0.895276293447367,0.925901996322771,20.4409410579767,-2.7766308557584,20.2530699427127,24.2361970472806,25.4562398443499,3.2493656653057,28.4955430635755,22.1363276497591,26.8580053400712,30.9515131346169,23.8983174771833,19.9172531137341,21.2198253761844,32.6940543566046,20.1595381800175,17.7616879134565,17.9631106179444,15.6880735426647,18.6902994553533,18.056544502455,16.1802039718931,14.3228293762646,15.2912373868599,14.8237656844082,13.2528580568488,12.8287386478693,16.6613465986369,13.3484623659049,14.8139504316633,11.7298553194716,14.4237135167593,16.3488662419114,13.022690794169,16.5974339553644,13.8565360023628,18.1613001387349,15.368867401047,12.6970205970379,20.9222166211719,20.0379009016653,17.2779817594077,18.0190593469217,17.3375043260679,15.3554427794111,13.8107910132359,16.0000650458868,13.2400490705383,11.7111160882123,-0.246508621766763,9.48161070337335,25.8394869482616,16.7692953146124,7.51905199883007,3.71348782844604,-9.82442880835699,-11.7877002052008,-13.6314792114359,-16.6800861652347,-10.7957810705323,13.7501376549771,4.17528082659765,10.5544413787206,11.4938443157543,18.1882288016557,3.18676973536905,-4.52734447059492,-5.04700351578983,-4.52365429939232,-6.97289574642203,-6.18461348680858,-6.7893591171638,-8.31450594213875,-6.53870702714271,6.89043944803227,5.60783512748818,5.17438658071487,4.62266353087737,5.49747491966488,7.73945746691318,-4.06628157811177,-0.129847343344119,-9.02941500690578,0.824392088232027,-1.82866510784634,3.71764976629665,-2.82280505314853,-3.95848294504701,4.46681667005714,-1.09770271920863,-0.735361070030315,-3.09003139563026,-4.41656263111683,-3.71832629703039,-5.19278771291341,-2.14279751852593,-15.8474923500623,-6.20265276973962,-18.3908448291946,-19.3570169149952,-20.5803723137946,-28.9336231686693,-10.822856427249,-8.52784612214393,-12.71646759899,-7.1846002170259,-9.69424185080153,-7.87314253459722,-7.50466093291668,-6.38213308916658,-7.20617824812892,-5.67711272125813,-5.92550242434403,-11.3112339177098,-20.7435128172618,-15.3837360251832,-28.6379795075589,-27.2587121285444,-27.895129959832,-20.2074338404748,-23.8468940799098,-9.31352727325922,-20.6119559555236,-26.6326153565284,-21.2510239871722,-27.9038051659483,-25.4458237973819,-20.5737747145404,-15.2553266946991,-19.791260129854,-32.9172874709125,-19.375861717698,-18.5139424362479,-15.9564026074119,4.90198387176859,1.40467473978454,-0.295078527223437,-1.913063937811,-0.72262338396033,-4.1084350836724,-0.497033458979059,-0.831500650946266,-4.02750531977067,-2.11062654461049,0.072498007118291,-8.26861913392065,-7.44178441460391,-6.17819205728371,-4.68474139588538,-3.69783315052639,-4.87022190786515,-2.19134217747904,1.18043586107266,-1.94598750050166,-1.78743492596314,-2.29179907918918,2.33649334727212,21.2910523728488,12.0209470241094,-3.4108064351509,-31.9485492518301,-0.338155942714726,-3.81946622132154,-14.3018256620021,-24.7421595857442,-24.8417868110819,-22.5676752706361,-23.4549330476582,-22.221481136859,-16.6114474314017,-20.492434057451,-22.0863201900267,-21.8159146737271,-16.1544629718115,-19.3474643255826,-18.5198108949297,-21.7890985579873,-19.6590881377202,-18.5800406638705,-13.1448583539805,-22.058072218497,-10.9573333660779,-17.7311418935724,-15.1211688799091,-16.5421782983912,-9.93756535871762,-14.7138573383642,-11.6177332105932,-16.838362343128,-8.70856842837456,-12.69272104144,-4.05399005640058,-15.7200916260537,-2.71209127843378,-11.5133986608786,-5.75399659876691,-7.03455893184443,-1.1011736538037,-6.30230036239567,-0.134377244694958,-6.49581463956043,-2.54981161016301,2.00167918291916,-2.57808678322165,3.52037706783094,-2.70075496369537,3.15657444470196,2.60859272104574,5.31012179525205,4.72385403975309,9.14810812340214,3.21472090683125,8.89583609854361,3.7217183821922,9.40570467888836,13.089323976664,5.95620747292911,11.2620050858518,8.18050714048877,12.1196839470758,18.8918018202294,13.4165323568533,14.5043323063429,11.3345651614695,15.9305659480771,21.4032213690423,18.1552593621628,17.5800451320681,14.0915530460045,20.1124278177624,20.6266736490338,21.8995544005153,20.4598616266129,14.3423824340939,21.5405910357435,24.7978879554289,19.3873660234587,17.2558131925326,19.5725312445774,23.2381295029201,22.917389630258,20.2338121438243,19.2149531679216,19.1919629130053,20.3837638247632,22.6836251590503,22.4681734260951,17.4019756734934,20.2897712308514,22.1798323588531,22.2646724063134,19.5273136620775,14.3199093136954,20.3742892530721,21.31009579802,18.5960278257813,15.0800027976127,10.6905486901456,19.691723582894,18.1367943558134,16.4207534049927,16.7214289191002,10.134747524399,16.7476938196852,15.7728097196073,10.8429247019763,17.4883294268515,9.66859152255344,12.0501366582769,12.183217208424,7.40274953544944,11.2679235050348,4.51127535036135,10.639305583282,7.95509813752412,2.58430305829695,7.37207453888143,0.861970627783122,6.9471179757757,2.0012826316559,2.39756150951796,-0.19368834857979,1.92681388846897,-4.42885609799225,1.42373784562303,-7.71464246349914,-1.88061179130095,-11.6744174114181,2.1928340634796,-7.57697385023467,-4.1939280154057,-9.02580821778932,-3.75295718427124,-11.0404044674315,-10.3965399806899,-13.9929086668243,-6.51433412044709,-12.216579906899,-7.59819988062969,-14.0676274479304,-15.7615640784325,-16.644027899292,-12.3094867699543,-17.0720699045921,-13.6006915380278,-25.1209549697525,-15.1452694602723,-19.8458913904289,-19.9607166921606,-21.7116321152466,-16.4207685032512,-27.0559968426941,-17.9549968373657,-20.4863211139539,-23.8955805062973,-22.7411266604526,-19.0981341470638,-25.7002400180484,-26.456151133058,-28.5213259431831,-65.184229300935,-3.34861627777662,-6.69323413418161,-89.249491125512,-45.6565068321073,-90.7448194485587,33.5519982518054,5.05903488755269,20.6668186898624,-2.76277961672184,-40.0008396134964,-10.6946310873991,-131.123230034851,-89.2177638647106,-136.348615286534,81.2914891958444,12.5368057221309,18.6169813056721,62.9017949255454,-22.9767343434937,-16.2743145101389,-123.546573345084,-176.743186791673,133.787520370796,97.3610185998769,108.03779663448,-208.384354515822,-20.6758843338151,-235.099993649806,-153.624689148927,-227.851222081672,158.895497297304,29.635720791042,112.928560504628,167.057289119151,124.18341278071,93.5056182985309,-29.2413462550001,-163.454258911856,-184.173463257232,194.468778855838,162.191960478451,222.464003066027,180.20879348241,-221.773657616003,-26.4629485591424,-264.229665137618,-200.798814505051,-202.133990101469,197.820714903848,38.1534415977028,183.014272189838,221.962026771341,202.216711290691,-33.3281717571812,-213.607574624536,-201.14253087523,30.7641125547946,227.99571099473,262.909472121945,211.266111736445,-235.197311738951,-16.768828472071,-209.939242952334,-173.456230071437,236.390101286848,37.9968830811851,237.424471575231,-257.127785619765,-33.3324156859983,-231.701579536827,-204.552580531087,-136.353878293853,214.911846491091,178.685106915299,257.736636103881,206.943552580697,256.358657239628,-25.9848809639807,-194.383739880888,-137.906805301672,154.819559969823,157.569305311993,231.275980384974,182.414593112297,270.28260400841,-184.809473887551,-29.8050082275369,-170.448432142761,-167.877927142404,-147.935219485107,99.02806566179,21.9723235206566,169.643593742077,147.65332283422,251.025003173276,-26.2209964684163,-126.008940629544,-82.1702147691823,66.056210608731,18.6342645508116,137.519541714356,102.12104512732,-119.6933874109,-18.093773448227,-77.9702563042053,-103.720041899837,-42.3759618445454,21.701069315828,17.7568303032355,97.8568312222572,51.8549526612321,-12.1147975695069,-65.8883525943579,48.5201352102767,25.8346084027845,-28.0348518907355,-5.2506059002161,-10.7940705132688,-3.46750485299955,-5.42626390177091,-14.2882131631896,7.83899710833063,-3.20749603018488,-14.3043059109165,4.79149057121267,-18.4624606606109,13.6181078411237,33.9833533431071,142.616598016582,6.83963505039106,-17.7945484722766,12.9246840652138,-33.433362344584,19.2009198852126,52.1574798292516,224.376981798237,9.72566506237115,-17.7869132505032,17.9020995159461,-11.2787167850613,-23.6746308238504,51.7518924315536,247.915270676318,29.7554899531328,-25.2156682050356,47.1055955640023,232.907762243618,9.83422839615229,-16.4646957203638,11.2082422693767,45.2793091471771,201.347654458874,7.40248477153698,-14.6891373117183,7.36019353922353,16.8575048210236,-19.2793646341252,6.06032574944349,12.5683060816649,-3.40995224106991,1.11251694966386,0.844209803143619,2.41927283806067,20.3182449678637,17.8018642674576,36.0025682214935,30.6246840593846,57.5701366139551,33.5750851079715,42.0696304802151,35.1333598661583,37.178370198223,30.6665383351756,-0.143521923579488,0.399119420074397,19.7763704969634,26.5859363523387,34.1226904715483,38.7413065673125,52.2613184564555,38.2920613052334,33.6405399122534,32.1035359921035,5.13074881516559,-6.02254912915551,18.8588471166566,31.2984070374003,49.8690986306468,46.9217691550693,42.7589904781058,46.1144204325367,34.0602484237685,40.6903848489098,29.7112803760064,21.9425030422631,36.1999145097548,41.5485457684868,34.0762191434796,39.7694731497415,39.910885388137,34.3746375511114,20.8697959797066,21.8533928609174,35.3056281491265,33.7279663241654,35.7784369805834,42.2984006452731,35.9804386363455,37.7460056337161,29.279488282771,15.9332639467953,29.5905754476332,28.7387289313624,15.9568280035745,17.1745838678422,19.6092384289303,31.6869484765031,38.0993052454323,28.7776353839447,29.7566367103669,36.3751697610584,26.6967882034957,-1.51349911536417,-6.00246973684375,7.01045399950506,57.9377963721014,48.1017748206135,42.5157288133279,35.9259318678063,37.8690483787064,39.8017592655863,43.4438493099408,40.3809521561302,31.6417136133828,254.247502167815,1.6748798274554,197.000806828055,281.000642877454,47.568257073818,42.7800846484883,34.8312935993197,31.7659216864358,29.0343676990542,43.7240549038856,28.0256084617333,36.1863660217194,23.1948167571368,21.0266313284199,26.7614021550664,25.2532663200096,31.8175123889316,30.2629329087609,30.6251494453229,26.5222349751501,30.8392009884521,27.8903095815919,20.8047618815277,23.6943872814025,21.7853810792489,24.2526085786587,21.7473143296248,24.1080612598606,27.2737186928939,20.971352130844,25.1458199620378,24.351596507905,22.9772138048576,22.5614457923342,19.1633805587349,-1.07748158085765,-6.38588885250354,7.82790407780884,22.9297221902899,15.6867003576807,30.2373697198906,28.8038392125935,35.2647808765937,40.4134778658652,24.2914234975769,23.3753507793226,21.7582415221619,17.7751947397206,19.8455815884636,19.9104151729873,18.2853091483288,25.8918929236912,3.02742333226319,-2.94080966460522,-4.26054778903885,-5.28188126327247,-2.53049698332931,-8.03814513584302,-4.79719136528978,-2.86653442406132,0.864977757671256,-0.879204256538069,0.511011520286399,-0.733200470244803,0.867647740534979,-2.44962243947039,3.98524996898639,2.9930525071565,-1.7565868482529,12.3406147514151,26.7302030065976,19.0921675564192,18.0636581725667,33.121364826012,27.9092247691997,21.8849027041798,24.030658833302,22.9745251481387,22.7645656586756,25.2665423271851,27.1061482963621,16.0580572204799,27.9794775322237,23.0056714431387,32.3074048155529,25.7076686317758,22.366438299882,28.5360638663052,17.2837729309114,39.0911972456315,19.5810137923723,19.6620051080138,19.0687519486587,21.4508965969799,17.1459681825255,15.1712692366478,16.488166179664,13.7700605171634,18.0557741228948,15.3286801959289,14.6055194336957,14.6167560721919,11.0477500494173,12.5134435901591,13.1129029206409,13.7333863078473,12.1511635758763,9.04184478053872,13.9667200962969,16.0941488200876,17.0337679127409,17.0808743105081,19.8490005468202,15.1857969015547,15.4935590673961,13.8022836096707,11.0356751100319,10.3867507681212,9.2426247902125,20.2976603000066,18.3095773988024,11.5863323364357,11.7594210551158,8.82329264667456,10.393862391927,13.0736390695663,14.7284360003342,10.9382015331964,13.8332641595883,13.3359141533865,12.8090981000959,10.7199581457343,10.9697334023728,8.30472574670293,10.0291787863596,9.57171917121229,8.06626495106517,-0.355720603930394,2.05119020606174,1.38841230259461,3.69422578704674,2.36686944224577,2.55164457187227,4.18241605525754,5.25803331193214,7.96405516536424,5.64752975160196,7.30998503571104,11.1347295790278,9.39831566972887,5.77433879820635,4.36986313617895,12.5561440239385,6.36521887961784,8.7126781336369,11.9077228829991,14.1860397694409,10.6281779263792,-10.6396531800085,-10.413067524073,-8.02436856845097,8.67834017347729,91.3395977536418,8.18496535865682,26.0166948222883,24.4753066575536,23.9134282271193,30.7005044862515,40.9047420451676,20.464346159982,26.6027006795222,35.0817779613245,20.224139226338,16.4025189186313,11.2649853470563,13.1256784627552,12.251757394056,13.1260970515232,35.9520371498275,25.4039082642439,23.4046035283855,30.6810140666562,17.605368991505,20.0318979216321,14.9911560431484,18.3900935594053,18.3758526225265,17.6912136215249,14.2266420434586,15.5517420707058,15.8387439654113,14.1513076452724,17.3435048951294,17.1451530693796,20.4892573957948,13.4560612887403,19.309161705023,15.3718225311484,21.459916316983,13.6894400536271,11.0101160588308,10.916520971887,12.7322506781373,12.2606727577858,11.4104385267134,8.31023947205088,10.0068605716356,8.7426729055657,12.5922872906282,6.52587566365501,9.75098221786866,11.1753891303472,26.5568969503841,29.866231241946,12.8698577848138,9.05591153230096,11.5300115568984,10.5852767644821,12.4980134031677,14.9050202643484,8.89341539044678,6.11174201983785,6.25486425355794,7.25275153937656,7.45979319257602,7.0701583247623,7.27067578729534,16.3393042809062,11.9494880932298,10.0514404497648,6.81135544317147,8.1156464491696,9.00430386080102,6.13024574151954,7.63933495766241,7.61301432166611,6.0728587267372,3.69189484049004,4.99326473154285,4.80202050511409,3.86045735333981,1.49364016927806,1.36351689896997,12.654185896964,8.91983007106199,-10.5482799113223,-17.6298819739761,-12.0454498401052,-15.0231570811172,-8.73360737231131,-18.5101204484728,-7.24163163185368,21.1191389055516,15.762876534882,17.8841206185655,15.747897006688,17.5274969586073,17.9734493469867,18.9515881927902,15.4895485311528,13.2324485776699,13.3416848695221,18.9930361684929,19.6508859115767,17.1282590764406,14.8820857976587,10.4821582469125,15.174667065469,44.0614724247572,32.3946816124423,31.7608481427798,25.6203767724716,16.0845161576146,12.4780963264468,21.1620914680043,17.1367817317771,20.6237532308421,24.0689750573075,10.6666559721738,10.1693860948264,7.21973503462278,8.43203900585537,6.23891584027637,-6.13729767744848,16.8938585765361,14.3641144385344,12.4962077913996,9.66969752065041,20.1531190498667,12.7292749510391,12.1780623924858,15.6430619368262,8.67119559701085,10.6522025529872,10.0772743678457,6.30136448411104,8.69740544192384,7.87962911709939,4.64726419955556,5.97513838743001,2.93414674938819,4.46436520536126,4.30214795804095,4.710708384153,6.39003937899035,23.2960081765632,25.308971505655,16.2920543144288,15.6116071483802,20.4455982201881,16.6317075190438,18.9486651822427,17.7279493593766,21.8975900771672,8.60425735590781,-5.93220881406056,10.6866305746878,11.4813441124874,10.9408843571639,11.5075595259512,22.3311968620423,19.6491753207983,13.4026999121773,15.0719276487094,19.6260548747693,20.1482290621396,27.431042689796,15.0590200350595,13.5466066028598,14.0610204242337,-4.36771160541296,-9.90511900687232,8.66548164134957,16.399678438207,14.2552161701663,16.7890294295849,18.1266649082799,15.5178821404655,17.6537175240909,12.7771322474309,-2.51326602077892,-1.26053886113077,-0.156384356020503,-0.753650581864198,-0.0902213703357635,2.21585062554345,-2.34525870849902,0.924187842207869,0.342259991173674,0.293552795287884,-2.25166288428582,-1.1429447900465,-2.89042206591557,-9.1070848168968,6.75984841735461,10.126623613807,8.70136961745712,11.4866871611222,19.5120885102053,-1.54507576698665,-1.88536587886312,-5.87698427186591,-5.20645148991751,7.11164541160086,5.23269690983731,8.13738031471609,6.22671584273982,7.98859193564761,6.46508176843632,4.66984543769433,9.83109969355571,14.3836583414013,13.586323550576,20.0121927274883,23.1729800407772,20.7751532621773,18.0664585643032,23.6866232432208,18.7143412274207,16.4742292783125,17.6880795129413,15.5142836558513,14.1108391657395,15.6294380820979,15.7641068636321,-3.90638950618907,-3.78722112075982,-4.84190572000706,-3.94158730235163,-8.48488087113835,-6.68730324820819,-5.9954575801248,-7.87734882651903,-8.21344348138081,-7.18774525627962,-6.02444259160315,7.3088608292632,9.54121095844315,8.48726530297362,10.333263959984,9.16561157538083,2.38080428477222,13.6688747581046,11.7957396376769,8.66402278782282,10.2658923433606,9.70033480734918,10.1157974606012,13.5461116090423,-3.60404920934672,-4.19209567053089,6.7565605115344,3.61053699733341,5.51857327248953,5.20567098924942,4.64540945158098,1.85912306196121,3.21607439714883,2.93864779491727,3.92083200487431,1.33756513708376,2.82789576829121,0.342129802965425,2.20562622643059,1.39924038147678,-0.642858795742433,0.0953818336027036,-1.99198853300463,11.9555685663331,8.1666564186853,6.36192405628657,8.53794285913865,6.06758208862812,7.5238794720573,7.29323929952476,-4.13149654893897,-0.188882890480258,3.4603691094184,0.667455089465698,-0.424452845851395,10.7828011396041,10.2873982081859,11.9015277899347,-2.70852421414596,-6.67613794109743,0.859630536415038,1.72791837933033,4.97658722311212,3.71773968950406,5.24314741253945,3.99506770118185,1.5735567193344,6.6857362737023,3.95937695030739,-3.90242352369637,-0.951144281301734,0.879989479209585,-1.05074677812938,0.309752551797017,-1.34660594948031,-2.35977332050223,-2.2388431202394,-3.39159884444412,2.1020627965577,-4.75558252826632,-4.9546074458304,-3.73002092750001,-2.5128228473747,-4.93798764033385,-3.35709945944862,-7.33374287757513,-6.53274678850053,-4.75087244326294,-6.10283272881118,-5.83051031804976,-9.62828891448151,-4.27831544852109,-7.80826435137707,-8.10697289845389,-9.62685303955846,-10.0123341809582,-8.14478715105865,-7.70882030271903,-10.2600321286011,-8.84890432959255,-7.77793036056453,-6.07979790199741,3.20539470450543,2.83147291633639,0.954727328457944,0.707462402463962,-2.01455306747132,1.80830729353815,3.32082847485299,3.29303357772975,2.29106506709761,3.08632268682222,1.54677141343844,0.1110711693493,1.58517891041417,-1.07488526589768,0.391318705896712,1.8769990087415,-1.0145615169124,3.94333803222342,3.27790921824686,2.69992695810559,3.57814637383058,2.27036559815813,-13.789269970833,-6.31353599334193,-4.9517425947436,0.966328791284828,-0.325379847734479,1.7904977488848,-0.856207334462037,-1.24148406800753,-1.59569281225831,-3.93011225815507,-2.71379370710022,-3.21517670721703,-2.41447209889191,-2.22805276047499,-0.174617393702411,-1.1155287046114,0.4325603816701,1.39753709480357,-2.2472941721325,-2.98786161624052,4.00626021435828,4.61572873219881,5.2616866360272,4.87551685079282,3.89892311218403,-2.19906541475498,-0.265793485510657,-12.7340298723163,-11.5186782287761,-11.9178438637934,-12.703317877716,-12.3179455476415,-16.7520225406289,-11.2800710329003,-10.9643059887947,-15.9085708390889,-14.47814595525,-11.1442020560067,-9.13042593649647,-14.7642701257288,-16.0771579800044,-7.99473950051672,-16.7902077690038,-15.0401930708397,-13.3889074385241,-10.6455226030817,2.66122298915456,2.81762663557902,2.61629589440165,2.33944902431989,3.90496782860011,-4.74702994423597,-3.16499854474352,-5.25669883835306,-3.96526034691696,-3.19657184107948,-4.78253744282769,-3.16004666937913,-1.77850449644836,-0.319708501249353,-1.33467442199548,-0.634285949882713,0.788491167603997,-2.08491118436032,-4.64531400689448,-3.83716879950075,-6.63783371299778,-5.65019163830874,-6.89942006004725,-5.2361810586238,-7.14689298683994,-1.67888403508758,-1.00396957186154,-1.50738297949391,-5.88394750357968,2.68598957784187,2.92181729582031,4.25553406999154,5.60441571036111,0.951075867174441,1.07866212822529,-0.206617257276019,0.658497281343503,-0.351971108433899,-1.28895735191661,-1.58005361721165,-2.47314088524638,-1.59263881828263,-0.697593391164985,-3.21874706336625,-9.90310420892676,-12.7651674332152,-16.0553721058619,-11.4228957807466,-9.70416871225417,-8.63825576780635,-6.56345954613063,-10.5048159620913,-10.3170832255908,-8.00343630824281,-12.5305986097611,0.564955760469128,2.64567744651121,1.45034113432384,4.52414900621654,4.73359567732964,5.28688741977292,-5.11777810139502,-6.21545018971795,-7.79887174214551,-11.2813046653938,-4.62226025030432,-6.22480704783991,-4.55692741119207,-5.76193973444227,-8.08776690439576,-7.33763950573382,-9.24747524076428,-7.41416555668233,-4.70067628313436,-5.91744791761982,-8.06980384996927,-6.22077684812786,-7.30835235043662,4.86755219241252,2.71285317931453,0.518390821703577,0.29754174039648,-15.4532025835266,-9.7239502757689,-11.8182159094743,-9.69248166223731,-11.4005022624031,-13.5576027545852,-7.0426066024261,-7.85840295393978,-6.38712564472535,0.589661268329413,-0.480662755976403,-1.57509554134033,-0.613545745169652,-1.79992897934779,3.69050055274911,2.60476152729819,3.41713906812119,4.21240335864354,6.83364953453158,-3.92629522748442,-8.74898705057283,-3.1931625327244,-20.7407491299102,-5.78009506378027,-6.80568631154461,0,1.20760715465359,2.5522176580705,1.49781422668706,-4.382672025124,-2.04829245695404,4.19467667472437,5.77805354291998,5.48132154074273,-8.52140100012835,-10.938189011296,-9.09120534789536,-8.2131044311961,-10.9826836757927,-10.7582966424975,-11.7090820262947,-15.8524328657297,-13.1838870010018,-13.0426925325965,-13.6166896677443,-10.5442180749548,-18.353711060968,-6.92951659019691,-10.0310208480375,-5.23868492844488,-8.31187056669951,-9.19396768341517,-8.57837187137143,-10.0963426270403,-8.27525302332826,-12.079498858646,-6.36471275918691,-10.8424364184229,-12.1509377437954,-7.52941809048671,-7.81215692965205,-6.34978262300463,-4.74373156623673,-5.41259350304722,-4.06284874145127,-3.14542003006611,1.47811351836564,0.445607057547543,-4.89485374029305,-3.50475302176956,-5.4584475343821,3.53538909292195,5.75830428758686,5.32646402589306,6.7165175882776,7.18614901547358,8.63921295086432,6.79004829960437,-16.5258682043885,-12.9900201499053,-20.4593369242185,-8.37477017183772,-10.6836536510694,-13.1561709647887,-18.3288259806099,-21.6688312922803,-5.28483944925079,-7.43943265063753,-6.62078359727693,-8.85443089275978,-9.39237009858832,-11.6086003641022,-10.4311841357131,-9.87908454010045,-11.3898936828985,-2.84210343022113,-3.3400503710757,4.38681639037672,4.97759552039472,5.53262360095948,3.76976679598408,4.98089002348193,4.94774774579721,-16.8754581999203,-17.5674305308811,-19.5352110222296,-11.4825417864976,-13.6966662322618,6.1133562261822,7.53820818947199,-22.9871095117139,-21.731313028506,-29.5968972394165,-23.8841391875985,-22.9596949176118,-28.9475836569537,-20.3098412313967,-26.2792410147261,-25.475155700665,-27.8910969903714,-20.2091588110078,-26.6585330571922,-34.0372364442042,-24.501194150197,-22.9291098672473,-19.2120531812015,-26.3652853488876,-17.8575518618418,-13.1146102216575,-16.5584545791354,-25.5965247394893,-33.632146195253,-25.8564723857593,-18.0171754740173,-20.0731327417838,-14.468672485522,-23.9208822988329,-15.8962814392093,-13.5998839170263,-27.1624527114628,-25.3517717267272,-30.2846775380796,-21.1262815580071,-14.0805677839808,-14.4562894068201,-17.4206525204189,-30.223360392281,-29.6035939394341,-39.9124927902744,-26.0703756909421,-13.0709273670611,-15.2203106550518,-12.0234027586852,-15.2478785152243,-17.536277300998,-16.2005034960533,-17.2530153159845,-15.5998449834891,-22.0992282861072,-19.2271735200461,-21.8616745923652,-19.4371091968237,-21.0275110418391,-25.0936887369142,-25.9425944845592,-21.3467827548545,-22.7154377250378,-23.336607421965,-25.3086053845991,-19.7727537201859,-17.8124300650994,-22.512927766197,-24.0875947669697,-13.4840493468449,-15.2551272618399,-13.4928690108773,-12.3230344336011,-15.4167773402764,-18.4911868290985,-17.2225287473389,-21.2549184730098,-18.8203075309961,-19.6681331456517,-22.8768596359532,-21.979903472251,-27.4727859597492,-23.6960217418809,-20.6544755123238,-28.4411811527438,-23.565344421239,-18.0941612467568,-25.7446522635293,-31.7683546371247,-29.6763148562809,-32.8584974726612,-35.116394507276,-44.2389893222418,-22.8960203242456,-28.7605774611692,-20.3532079655069,-17.9718820927615,-18.3749642905123,-15.3007066443282,-17.082837053471,-13.5488041325658,-15.1676455619496,-16.5269584132348,-33.5818425877748,-16.2679717328936,-20.7105860832495,-11.0827208703104,-10.7542269211373,-19.6112097366679,-16.5917654161211,-15.8514980870151,-30.5503180467599,-35.7081616394706,-33.4241567805021,-33.6956853094605,-41.6116868245481,-34.4105108144379,-36.5435426631476,-14.6876175052896,-29.06259549375,-14.4321941534756,-18.2799284075433,-20.7206885943716,-10.3730514241474,-14.8102650810597,-28.7388700938942,-43.3607815005788,-30.5612008912168,-31.3631685504596,-13.7391586993778,-12.898776473871,-22.1725104982723,-17.4437089890473,-19.4581143156259,-19.3946686596296,-22.2301393828501,-24.8478852352601,-18.3930386951436,-8.81040532845922,-10.358025388778,-13.0695873195884,-27.3359682960654,-37.1785887607247,-28.560549612999,-27.1092043314549,-32.7107551753411,-37.0846827945177,-38.0978430078981,-24.0581432643332,-29.8817300879058,-41.8168045616803,-23.3180685811003,-44.8130412815145,-39.1381626814176,-37.2382303646531,-28.3725665548072,-32.7751264848168,-26.9665469572898,-31.750357745929,-31.6388681528952,-35.3413906554076,-26.2940429641033,-26.5025982376953,-21.0540064356315,-25.1501496568226,-9.91442678859622,-8.22350961354382,-11.9277291217449,-15.0944692918645,-13.6263128342948,-18.6588817240979,-16.5346472835265,-16.8236805032554,-18.4148740095974,-21.4753090665173,-17.3524137076147,-20.2917347110514,-27.0762936305933,-22.3540541224408,-24.0718898502837,-21.4748066406712,-23.8740069736103,-28.3662718040473,-18.9906185380608,-20.3592638553087,-29.9879589364688,-28.6755444878692,-32.075017985554,-60.4637453748891,-31.8277504696125,-28.5954194574473,-23.8216330353328,-13.6090088377951,-13.0882774664756,-14.0849823185562,-24.8596710541927,-29.4521873377916,-25.8998972910677,-31.182436071938,-43.0989444966455,-26.3049322999968,-33.5609329099017,-30.8727401081319,-33.8981438525047,-37.2210271006653,-42.089028798138,-37.0701489626188,-57.0879318082367,-31.3991752800263,-21.1246291836101,-23.5997580001908,-12.3160408106633,-11.2761082287177,-9.39419334093873,-17.6673583621705,-11.5313382082717,-42.3612615003292,-22.9039807443024,-21.0670149416959,-26.6559013087674,-29.602613165368,-31.6706314254699,-36.9374929958526,-30.7351591588626,-47.0063776154974,-29.7342993116896,-29.9503359267453,-12.8657076754862,-15.449496412561,-18.3640951267304,-15.8967390039228,-33.8971031776007,-33.673838697278,-37.1992963106853,-36.1954075769624,-42.0668597283791,-36.4076857104106,-43.1625673155968,-39.4641514243407,-26.0169777489954,-43.3049261973558,-38.5065433918619,-46.4578694803418,-24.1968238144795,-39.5934842226617,-34.3726246262823,-15.0312399375135,-16.3111079090447,-19.5738794891573,-44.5974013782924,-37.5105547684268,-52.1292121024661,-13.7720971334123,-18.902267171324,-18.888712632746,-21.8511111570325,-24.1677573206381,-23.3529914032006,-19.3137047534258,-27.1576593152411,-17.3145292621138,-16.4416801754485,-16.2840184643451,-21.0087785030968,-21.3788103478009,-21.4455000587978,-34.1665911790931,-34.4218843707188,-17.900131145744,-15.1543630337019,-14.9747124557719,-20.734281343557,-15.6214764804913,-26.115400395313,-30.9084577260232,-55.1504914106502,-24.0511174983795,-94.7476174951018,63.3233684324605,24.3352768816706,-131.709269077144,77.0900561866418,-167.564162224529,159.976886903657,-199.517635966036,166.402948998541,-217.407895153546,213.202989670193,-233.328862528789,224.935459910124,-216.9874029474,-226.321271087422,-213.349628222694,-186.656820751709,159.957002906123,-155.796866054495,112.495099126645,127.680361102199,-117.647031141605,29.2461351617625,94.2673183405643,-76.5836728035303,-27.5304406278651,9.53903648190823,3.75188005035485,11.2843111601302,6.55365880104405,12.9795396712437,6.73558423989537,3.47884471946022,8.78802865600424,7.62013165565705,8.73120024465767,6.25380670293129,4.43053641593122,0.972238092775487,2.35428551043061,0.859837435267605,2.91786808856059,5.52840005328396,3.82260765190282,7.10374383179026,0.605686962478814,-1.63326199499598,-0.508456822644184,2.53021266046539,3.06663913072176,28.7084819563451,6.88469166031273,41.7728315413303,2.43893375423937,2.40624146364455,34.6451582113506,-4.63907131008784,34.7209781148514,40.9526514828994,42.9502204468767,6.27580795150925,48.1050376154637,37.5008135421352,44.958803983768,51.9117794976807,40.3354547644684,33.600574591009,35.818710366707,54.7683729045754,34.0514566393983,29.9726968964562,30.3386397286925,26.4598828883716,31.5104976342575,30.4429091862094,27.3261137329434,24.1474851925206,25.8031769177422,25.0327582591421,22.3555741585256,21.6616579226531,28.1241185117683,22.503893050951,24.9933965472168,19.7940243067077,24.3380403536113,27.5614527811473,21.9847815178921,27.9838007166966,23.3558047048016,30.6740121606029,25.9291572005249,21.4206145347539,35.2587367325527,33.7688352441216,29.1416019773927,30.3504342662238,29.2256463146256,25.9066775624541,23.3015991358696,27.0017513202256,22.3146920401081,19.7425838885794,-0.416500498656867,16.0977226945028,43.2150963383737,28.3988099984062,12.6799616237688,6.26175330174404,-16.6917785028596,-19.9120649977435,-22.9877235258771,-27.8479393271256,-18.356825366075,23.2279811956567,7.0440367175461,17.6311220677036,19.474270789763,30.3051232055192,5.37827944597908,-7.63708183054267,-8.51608495956888,-7.6395105305527,-11.7405207207108,-10.4353370074611,-11.4575883497643,-14.0128518364537,-11.0532657365686,11.6038101067578,9.46581204214631,8.72315818156894,7.80121931664452,9.27856661353586,13.0489495182746,-6.86548709762873,-0.216519142481079,-15.243639646637,1.39382149236767,-3.09152354455421,6.26359762259971,-4.76815808971209,-6.67234211972445,7.51632394655513,-1.85140694579778,-1.23997829654607,-5.221231729902,-7.45510056712357,-6.25585753928616,-8.76011984926649,-3.6088824797152,-26.3598168459378,-10.4555962492954,-31.1617490972158,-32.4078156595534,-34.6255202244483,-48.2985089246974,-18.2705713410667,-14.3756132309236,-21.7357795774696,-12.4409869881706,-16.3301725823855,-13.3048438877566,-12.6709895276345,-10.765826045767,-12.1505623644442,-9.58897903343862,-9.99678915551821,-19.085899348144,-34.9378488013012,-25.9605873094653,-48.5740428704675,-45.7632880540958,-47.0527039313956,-34.1062037241819,-40.2603514732772,-15.7022225887445,-34.7981011699161,-44.7796584418326,-35.9898848330434,-46.7485400563237,-43.3116203631972,-34.9577736812937,-25.7271568455646,-33.721990836268,-55.0784001163572,-33.1510692152297,-31.0997248172344,-26.909163119481,8.25642331657097,2.32968514386202,-0.504818793904013,-3.23496700477806,-1.21297660137643,-6.90035468689882,-0.834413980139241,-1.39622549819359,-6.81618072616616,-3.56253321280511,0.130980802483863,-13.7718090311632,-12.4756836117516,-10.4391065107039,-7.91487991407258,-6.22770444018876,-8.28230883809575,-3.71536075636831,1.98199841935018,-3.27758493923642,-3.01402742242169,-3.86173990269175,3.94265795411307,35.8889438333005,20.2610078289425,-5.75523544293914,-53.582416736278,-0.571539989479084,-6.44131565245061,-24.4479456135512,-31.1116330152989,-31.2426005250957,-28.4174462411655,-29.5385921481429,-27.9958886599342,-20.9111599357705,-25.7951729835525,-27.8102630107042,-27.405588732696,-20.3221466022405,-24.3918223252051,-23.2879736993277,-27.407198977013,-24.7318727730153,-23.4391626454503,-16.5261953126582,-27.8222305549894,-13.7710401454173,-22.3308300412259,-18.9683234344185,-20.8395424428133,-12.4876479299332,-18.570437702972,-14.5766379089321,-21.1930304329206,-10.941918611809,-16.0457659626912,-5.05497574182234,-19.8608905314316,-3.37020227633053,-14.5091900409373,-7.20084234529271,-8.87275786866391,-1.36374982274762,-7.98699542054157,-0.117973833960477,-8.19759336957007,-3.21620204904894,2.54423355204926,-3.30923831491644,4.48454558750622,-3.4169185358444,3.98806924076567,3.26315230162493,6.68301596120289,5.93447801665178,11.5270363897999,4.00225204800457,11.252556792972,4.66188182161989,11.8418575837596,16.4739269961037,7.45373989233132,14.2296186794309,10.2787829176093,15.2663641781042,23.788816177322,16.8593988618932,18.3024804092915,14.2542024421695,20.0603509310989,26.9418564077959,22.8218930875688,22.169337131821,17.7258063222305,25.323019095227,25.9318552148502,27.5542621203454,25.8043012476334,18.0321460575239,27.129582199838,31.2074227828674,24.4117659602942,21.74312190721,24.6225208301944,29.252616590893,28.8090414559642,25.4719892869275,24.2000547553633,24.1492590191441,25.685906055562,28.53204126997,28.3156519263333,21.9141302018307,25.539018618764,27.9311245214854,27.9982879804478,24.6189641453297,18.0240127849141,25.6509295279654,26.8316769600759,23.3779710071097,19.0305945454467,13.4519685366386,24.790101129519,22.8405249355874,20.6357330163866,21.1032157717333,12.7321680308434,21.0861686392686,19.8612236384083,13.603335730461,22.0696635045194,12.149965202511,15.1667253425269,15.3404586980699,9.28175202079954,14.2457520716683,5.63594150366671,13.4009858463288,10.0150981982885,3.22760685501015,9.33676170253685,1.03362509385663,8.76143908495448,2.50584274298717,3.02934832817328,-0.261651917510843,2.43861304218169,-5.60396211125773,1.85892526735151,-9.78155830170937,-2.29793872492135,-14.7268459041431,2.76945840374167,-9.56427455996304,-5.22566678429585,-11.4165870431537,-4.70072669314355,-13.8820672806484,-13.0786572194774,-17.626890115664,-8.15978581092677,-15.4308358978967,-9.54416754249928,-17.6870008566407,-19.8292896437247,-20.9564784158848,-15.4706069896065,-21.5317659016802,-17.0810217153238,-31.6310104551874,-19.0368100440943,-25.0258001602301,-25.1048587085511,-27.3708689005028,-20.6334201842312,-34.0617686712705,-22.5922547626786,-25.8199301834027,-30.077637774195,-28.6501543720665,-24.0290366808696,-32.287129405166,-33.2225429765109,-35.8953165613992,-82.3111225419761,-4.20305009063722,-8.6547716312941,-112.619084078491,-57.6847387002636,-114.599610558623,42.3611824917287,6.45537490141613,26.008934829076,-3.59154666043294,-50.4481943635547,-13.9752885958643,-165.372175702372,-112.701243770002,-172.088925528574,102.669083756141,16.1126635750277,23.5808301777198,79.3416525234273,-28.9400848259638,-20.9923480037927,-156.086048910254,-223.008796907129,168.827609416163,122.932175961688,136.353652946439,-262.787410825484,-26.7865789583965,-296.508067078495,-194.076137858316,-287.582358204373,200.599257315608,38.014394912374,142.67102234434,210.791459508996,156.670380634249,118.084290179841,-37.559878701588,-206.439433771162,-232.524336173148,245.439299907173,204.787711975824,280.651894103944,227.539404965677,-279.75986585695,-34.2105691347269,-333.306606216334,-253.551881296962,-255.168462798358,249.712136861238,48.8300920678281,231.189286556867,280.112805365855,255.229221278262,-43.1103762271083,-269.673986595117,-253.94293050871,39.8099619611304,287.779554878603,331.740330533876,266.758614938487,-296.723687475988,-22.4409659275966,-265.132393252833,-219.03547095109,298.311527846416,48.9545747089032,299.603909757236,-324.342368354777,-42.9384106921623,-292.294409566394,-258.313322117092,-172.308918526626,271.203875440415,225.590615983875,325.165432814228,261.22483533901,323.279235840054,-33.6214247398981,-245.374738417237,-174.132352259923,195.430766397304,198.91586301578,291.779649249049,230.306626996089,341.040752412455,-233.236896201187,-38.4378458837876,-215.034829905242,-211.936255103899,-186.6981197731,125.036311733738,28.3473509393536,214.183511042324,186.399822599915,316.708436394803,-33.7397289987452,-159.076643089832,-103.741142611796,83.3774703047569,23.9906971737594,173.565744937248,129.004068570079,-151.012673741796,-23.3689367544482,-98.4025863105703,-130.906658382265,-53.4919472566177,27.3780528075835,22.4195347856763,123.445557714684,65.5665692922441,-15.5690868924261,-83.1252090563633,61.1787100641766,32.698200955765,-35.4271300940909,-6.70842115441214,-13.6372072073161,-4.58023196911831,-6.87037934409699,-18.2567451517507,10.0148599341147,-3.94571884029941,-18.4055636603142,6.31033335287308,-23.7474275737118,17.6861994624249,42.5585135352439,179.917024720138,9.1033716664489,-23.0343578711532,16.7958233897558,-42.6565428623774,24.8101487586061,65.3308812830787,283.066260289964,13.0267472946727,-23.1884631150598,23.289556920376,-15.0247063175859,-30.4123666608939,65.0565440008998,312.813002854618,38.4242721596239,-32.2350440876614,59.1601143211092,293.832906262087,13.1541094436933,-21.2617962475687,14.6069924390848,56.7091386453879,254.019073982712,10.0333179817082,-18.9898990251108,9.66634645580894,21.6271795761097,-24.5804599897576,7.84903862421456,16.1143620213298,-4.54933872494821,1.544537259959,0.95485277525321,3.02584498560188,25.8090159442871,22.938968064059,45.768899690755,39.2998818197735,72.1967596910346,43.0495502572843,53.5131299009255,44.9051334654105,47.3251121816498,39.1806746684691,-0.190768681838994,0.624977129502411,25.010796859632,33.6444766444623,43.0768228309792,49.0669666981747,65.9271822415049,48.3826995560409,42.5200555178786,40.6163490887146,6.48386689285934,-7.63857005320147,23.8601235171118,39.6082593451557,62.9071966984877,59.892387624428,53.9510976557732,58.1904644497402,43.1130305562312,51.4245408095636,37.6140426164619,27.8456470141195,45.9042440639171,52.824204851852,43.0993675694785,50.3753694473064,50.5288539355498,43.5620398746454,26.3327221514731,27.6658757620551,44.5668143946519,42.6939942179343,45.283075557374,53.3073173837544,45.5715496274318,47.5431104871963,37.0760738080091,20.1554959820204,37.4541642747548,36.3680450790967,20.1955790474566,21.7402228647529,24.8042104240822,40.1225250678596,48.247757315519,36.3921736604294,37.7353723349416,45.9845561758723,33.7390719530298,-1.92024870598086,-7.50062262341397,8.86328058699763,72.7039206945704,60.5786335302219,53.9935024772655,45.4479724229441,47.8425916171043,50.3891505648656,54.8491748458867,51.1130687083511,40.0764723322069,320.810431699323,2.26019586370908,248.504283486939,354.416949024904,60.4609031456285,54.3683623497039,44.11003822049,40.1461149755763,36.577501655463,55.090897094686,35.4145339961678,45.6435504111937,29.3089157407416,26.6239149318693,33.868022061987,31.9315685691677,40.2910366144163,38.2741924934346,38.7252125073028,33.5547683288085,39.0478178998274,35.2650261269385,26.3221971203991,29.9800934423872,27.5684455794308,30.6798684281486,27.528139580946,30.4948669677298,34.4727658073985,26.5645705704632,31.7900613069707,30.8004316541434,29.0897814872982,28.561791976463,24.2208853636536,-1.3324004197657,-8.08723084210872,9.84539553106296,28.9953855127158,19.8462196666793,38.2091778709154,36.4316394455707,44.6563274944449,51.1316111344734,30.7564106043696,29.5654546674776,27.5217524822656,22.4878476108593,25.105415318634,25.2044934799654,23.1111559879873,32.7883856825894,3.81674333330171,-3.74107879964229,-5.38085452585846,-6.69887974467304,-3.19993064126774,-10.1274333508454,-6.07083252959219,-3.62270662626767,1.09199134425337,-1.11541546229441,0.640211120989076,-0.925157797446886,1.09923835837662,-3.10096824098915,5.04165974404971,3.78231103965349,-2.28580618752779,15.4831802140195,33.8977873688342,24.1503672679041,22.8498989013686,41.9278409485335,35.284049147196,27.6664778709603,30.4379640399771,29.0975760038599,28.7901101005506,31.9601339865207,34.3189280712077,20.3276736881196,35.428127752979,29.1271085810352,40.6952989260295,32.6328582086712,28.276481442375,36.0817364531701,21.8589591475432,49.0414630557727,24.7923993723136,24.883663980546,24.1090208391381,27.1647656368771,21.6938780887122,19.1833782746896,20.8723432542036,17.4122547892609,22.8471375539101,19.4007458306038,18.4777047776386,18.4912893472596,13.983035574205,15.8269793155143,16.5863068066218,17.3763816013354,15.3748530085133,11.438335017741,17.6732916611989,20.3521440545831,21.556732729924,21.6138747770629,25.0892558937741,19.2219419915225,19.5914643878125,17.4472866601504,13.9662752231969,13.1463920739434,11.6854290256839,25.6722736354044,23.1733301072632,14.6594059340142,14.8829564051271,11.1598241379537,13.1534624134232,16.5530866497108,18.6461829839442,13.8365271960851,17.4753628389623,16.8653967120751,16.2011430758671,13.5544724899214,13.8855134976851,10.4957664554156,12.6841547441687,12.1092685766956,10.2075725120436,-0.445125705657015,2.59003423720634,1.76154678942353,4.66888464463607,2.99776590872007,3.22378017737165,5.31400350209778,6.64785513060324,10.0693326881162,7.14791985755639,9.24763987698335,14.0860029397378,11.8962922337088,7.30365929512072,5.52944036496735,15.9029042018806,8.05534474405584,11.0195594575522,15.0401997718267,17.9790797504673,13.4469597227703,-13.5918353935414,-13.2241734199357,-10.1065177084889,11.180378919512,115.12660206611,10.4254254556969,32.9331763017122,30.9395184695672,30.2309084085142,38.7226392208511,51.4677400023743,25.8805097968032,33.6225930310677,44.1073054649913,25.5927968626179,20.7357370976406,14.2475589642774,16.6166695756742,15.507814533889,16.6086307407208,45.7800940668044,32.1527933986868,29.587353277719,38.793405837235,22.2727768181263,25.3625968431106,18.9760712064576,23.2641797925097,23.2285053766004,22.3674984748487,17.9991354589823,19.6843389650119,20.0472370882494,17.8846625175874,21.9500426496494,21.703428182121,25.9412669035561,17.0485729540894,24.4075688840487,19.4333359504602,27.103840286006,17.3174646962459,13.9326582923291,13.8167823853115,16.0908003278075,15.5166286931254,14.4381467078563,10.5316899823518,12.6462701050168,11.0633363291053,15.9287197017672,8.26083435900622,12.3303013655144,14.1501666280854,33.4503965957164,37.7626895471331,16.2747579016972,11.4539445998545,14.5993520237466,13.3868148529516,15.8240826870185,18.8341670596958,11.2466222743811,7.72144584734452,7.91333693690911,9.18595909668654,9.44227885176429,8.94812353638844,9.19343747277693,20.6796346821999,15.127200504776,12.710922658372,8.61148643469757,10.2752685149337,11.3882935934704,7.75958494442337,9.66600006197721,9.62840270081558,7.68399735946684,4.67121733316034,6.31445647543689,6.07941032926015,4.88875896114333,1.89823085652527,1.72347479118206,15.9146872555075,11.2845786228148,-13.3526585965243,-22.0762447366031,-15.2704175909005,-18.938548635789,-11.0532735788035,-23.3168466147968,-9.15957222642495,26.7011811018897,19.9354440738106,22.6384616803841,19.9459260948335,22.1732161012891,22.7323703410187,23.958700124037,19.5951415888657,16.7284439755533,16.8847071697329,24.0513517698199,24.8601644543606,21.6560247563202,18.8131813644282,13.2822773020113,19.1994784267375,55.4562042898604,41.0425831323691,40.1913459758864,32.4263340195718,20.3492987739268,15.7967729794527,26.8084643407937,21.6823750305021,26.1136056351853,30.6665483001383,13.4952102103258,12.8590478379957,9.1316022946122,10.674259820576,7.89313010308871,-7.77337194259858,21.369702219222,18.1775992300316,15.7995551402557,12.2319076334949,25.5032346974603,16.1089472890417,15.4213320241651,19.7211788797146,10.9784281248306,13.4694530883405,12.7474374641271,7.96588591745094,11.0013063260831,9.96954487192007,5.88149733737228,7.55974964091168,3.70946231765801,5.65025166069225,5.43950076138876,5.96247926365959,8.08737851500936,29.4621264073515,32.0633562061074,20.6289451620616,19.7731246241094,25.8649486746359,21.0607660176202,23.9482299612004,22.4133780704781,27.6112513201874,10.8871129483725,-7.51530797260436,13.5196347057766,14.5316540901436,13.8435526373358,14.545042522029,28.2521974647555,24.8776478324891,16.9683348112502,19.0746051786542,24.5786774960673,25.4866661500046,34.7109538524857,19.0471922356703,17.1231133321465,17.8230317718856,-5.51927589815843,-12.517837525895,10.9597418662726,20.7223380357055,18.0379954647501,21.238505206174,22.9379254067364,19.6399378226737,22.3157677495969,16.176618638787,-3.18536947200437,-1.59262349985838,-0.19975801211281,-0.951593154869968,-0.112886618716495,2.80273202350882,-2.96432361758946,1.16893053319809,0.435267065271339,0.36989910111499,-2.84807833013231,-1.44620009040165,-3.6562195134883,-11.4961828236002,8.54649957113992,12.8195236817446,11.0071032886026,14.5438643635862,24.6951012027207,-1.95386164757382,-2.38772409980549,-7.43117542292787,-6.59369282209267,8.99952350931212,6.61765131118203,10.2917259486517,7.86908263732388,10.1067452322027,8.19439840364861,5.89962003153213,12.4362346049227,18.1947314603578,17.1813315969729,25.3632639777792,29.2693867048675,26.3024027505575,22.870502066272,30.0027977718239,23.6851916384298,20.8361116983378,22.3538696503867,19.6207228196683,17.8547559920848,19.7989381531447,19.9396384532409,-4.94335682796741,-4.7872537379157,-6.12577601221995,-4.99394114990059,-10.7302062851928,-8.45842037643148,-7.59011069071033,-9.97340581719661,-10.3918083107691,-9.08600102822381,-7.61327807518496,9.24836224257687,12.0765093366399,10.7348395920907,13.0754865485126,11.6014354572806,3.01371024217136,17.2691892125714,14.9331666769706,10.9655800776347,12.9852240445876,12.2716978574616,12.7955860641657,17.1306118357392,-4.55984133132389,-5.29426946180016,8.55042444930695,4.57054466620544,6.97596487349928,6.58574108178041,5.87851889800092,2.35019207986061,4.07163304378834,3.72195808524373,4.96006196566919,1.69175798013804,3.57648202809631,0.429718093976457,2.78687686485907,1.77192678374199,-0.80983460839913,0.122429442595523,-2.51980002018879,15.1201257399239,10.3322709689366,8.04637144023993,10.7947768445162,7.68134096169028,9.51897855656451,9.23028638513896,-5.23156521469466,-0.245129660591012,4.37660175381881,0.844094420448098,-0.53849609448976,13.6303136046878,13.0244849409781,15.0577172175467,-3.42133179477188,-8.4474041853472,1.0855971639984,2.1919930133028,6.29509682307164,4.70454244849965,6.63542458380908,5.05531849972467,1.99597850266478,8.45614905598099,5.0168281798898,-4.93812410563574,-1.20361776701326,1.11623566668045,-1.33139583839357,0.39136096023486,-1.70833953855454,-2.98624528404701,-2.83378298895815,-4.28840131346761,2.65816078192851,-6.01776566455012,-6.27186457230736,-4.71587172785728,-3.17849414257636,-6.24921234849952,-4.24900917648375,-9.27180834643031,-8.26125987027172,-6.00836812633,-7.71821153614027,-7.37473135148742,-12.1720292852468,-5.41131885778761,-9.8807498954348,-10.268596857744,-12.1652777177588,-12.6659988706817,-10.3067919888947,-9.75696390771038,-12.9725605650106,-11.195129362826,-9.83585599426081,-7.68235064428784,4.05155417883386,3.5828591218338,1.20234002366196,0.892424443095188,-2.55108182571021,2.28554600015448,4.20561681630378,4.15742559612216,2.90062429177372,3.90241797255179,1.95584569057607,0.140274377986313,2.00389686741603,-1.35797189349348,0.49485068842574,2.3770335303466,-1.28435865275159,4.9856502164851,4.14065928197784,3.41968059560649,4.53349486417072,2.87036157498921,-17.4357993282966,-7.98953721612439,-6.26468221908692,1.22289163230302,-0.408771444993429,2.2652567493998,-1.08205598277565,-1.5727780828379,-2.02009103451312,-4.97698230798306,-3.42874816143092,-4.06981305356013,-3.0633369716054,-2.82168888253454,-0.222624785504244,-1.40981176183398,0.544724174287089,1.76829790231276,-2.84661118532455,-3.77569354063054,5.07147256162501,5.84094526535328,6.6641940725754,6.15853631527638,4.93518454068883,-2.78306532858394,-0.336517699267174,-16.1217043946645,-14.57816989526,-15.0984383975459,-16.0686116458648,-15.593907211534,-21.1755279240704,-14.2713843863976,-13.8628078739361,-20.1313708480755,-18.3195348016067,-14.0997094795536,-11.5614939755051,-18.6636513570349,-20.3336278364086,-10.1177420540514,-21.2375271100712,-19.0197286825752,-16.9409387997549,-13.4574813302182,3.36095027234119,3.56427089536202,3.31181203588285,2.96497404777378,4.93427489288599,-6.00392735233772,-3.99844828600761,-6.65619664596483,-5.01310574689886,-4.03921026063033,-6.05153445515898,-3.99820620008366,-2.24943911948081,-0.405153232163719,-1.69435791453101,-0.79982322327975,0.998981030518591,-2.63725246692174,-5.8745510894222,-4.8616687239009,-8.39864954860225,-7.13357038686172,-8.73772902957424,-6.63085814803217,-9.0388843539827,-2.12519920532311,-1.26499267117058,-1.91108933258508,-7.45247622645256,3.39633639106927,3.69645323435073,5.3866147663648,7.0892342182992,1.20352329969527,1.36661226372174,-0.261034234606841,0.834454383682084,-0.447651181233122,-1.63148965929363,-1.9962164730343,-3.12921057299695,-2.01688109468148,-0.891469390782131,-4.07141928708386,-12.5305829604953,-16.1418917072154,-20.3276970258271,-14.4601811302317,-12.2635186150497,-10.9507872988431,-8.31020524022161,-13.2887467334661,-13.0399033104217,-10.1343543691274,-15.8654198777246,0.715768062633277,3.34356940934619,1.83900630284824,5.72976601460136,5.9933893427414,6.69461084241294,-6.47411569391621,-7.85812385611952,-9.85971768002237,-14.262142846635,-5.84693185122605,-7.87314674584982,-5.76079068385329,-7.28933692458834,-10.2380825176315,-9.26961272056033,-11.6898594270045,-9.37838551026055,-5.94650763905364,-7.48781121095916,-10.209583321338,-7.8716821278893,-9.24546572312709,6.15889146280008,3.42957252428512,0.656536252216026,0.381756062291012,-19.5516882149684,-12.3021736486756,-14.9502672177079,-12.2632288153592,-14.4168936313702,-17.1400345342621,-8.90497079497915,-9.93533050506595,-8.07448935155835,0.744859876130047,-0.608989880740193,-1.98887276041028,-0.779980773653844,-2.27826571761906,4.67181250920101,3.29680796906539,4.32359360354547,5.32693752942388,8.64149295236793,-4.97420840856817,-11.0668003547588,-4.04190036572011,-26.2363384921846,-7.3140388595536,-8.60825249902693,0,1.53907199731084,3.23167127321774,1.89911359564392,-5.53701712918024,-2.59807589542269,5.31549358358177,7.30098258669114,6.94666250395149,-10.7720411340749,-13.8310996979324,-11.5139819235166,-10.3904350950479,-13.9001000583438,-13.5695901051702,-14.8427488275449,-20.0383809047832,-16.6673709165017,-16.5260709606888,-17.2445499356576,-13.3285684871308,-23.2097634510298,-8.76845041260632,-12.6912842468246,-6.62537504407089,-10.5168519308576,-11.6336212196738,-10.8674101705368,-12.7686900099172,-10.4610123393784,-15.2832929587416,-8.05200058364715,-13.7057698879345,-15.3813578573372,-9.5213716085683,-9.88497204321859,-8.03804958777421,-6.00129787724352,-6.85257813096854,-5.14003478388527,-3.97929031750974,1.87081031218383,0.56773741761621,-6.19796194312983,-4.43444677880858,-6.91230509960034,4.4719342511825,7.28029325943992,6.73880881827439,8.49158012625824,9.09959238661163,10.9313958795118,8.59191299955088,-20.7819445353321,-16.4943353839757,-25.8453454999054,-10.6140803601647,-13.5067950592683,-16.6511053132456,-23.1926404070727,-27.4405427052179,-6.68409160433027,-9.41458589623806,-8.37122276721179,-11.1970269504744,-11.8882590893398,-14.6868658463211,-13.1789976089443,-12.5035567406306,-14.4233791430578,-3.60151072093739,-4.22557831524297,5.55908693652249,6.28753079550338,6.99313592137804,4.77481996891489,6.30198998657459,6.26210293120766,-21.4966729481911,-22.2327670474378,-24.6976214020647,-14.5196534459197,-17.3224569167207,7.73506042082884,9.53595795087062,-29.0786695229865,-27.5093046306247,-37.3986470226913,-30.2317270332058,-29.0395364071302,-36.6415618868047,-25.699657249488,-33.2686244927212,-32.194087787989,-35.2874029178834,-25.5592403368779,-33.8013402490623,-43.0648530255668,-30.9600868466944,-29.0001858465135,-24.3035637137068,-33.3721221507171,-22.5946044729372,-16.5989187023928,-20.9461063208906,-32.4001106426854,-42.4975623128742,-32.6761860036497,-22.7872962560994,-25.4048048636738,-18.3142768828552,-30.2362298915284,-20.1020314856125,-17.2130788639153,-34.4098623419208,-32.0710809333266,-38.2459658106163,-26.7165402980424,-17.819256977767,-18.2880113480326,-22.0487705642631,-38.23020949866,-37.4689195016917,-49.9639865008696,-32.8288125327487,-16.5288229395529,-19.2506599359178,-15.2149747291581,-19.2882721571032,-22.1946206844573,-20.4889939489524,-21.8203838808012,-19.7293206582646,-27.9398487958286,-24.3293975374936,-27.6440161023687,-24.6051560667469,-26.6002707501588,-31.7089998687738,-32.8159253534828,-26.9921095588551,-28.7345624053925,-29.5269985080403,-32.0254402508235,-25.0048460814034,-22.5517211532936,-28.4988332023398,-30.4800699582311,-17.0478879468435,-19.2743405933561,-17.0805083333888,-15.5794263971495,-19.5077495037958,-23.3907058630983,-21.7931866556611,-26.8949396270015,-23.811323656841,-24.8784823638148,-28.9289481843262,-27.7900230360655,-34.7111350704158,-29.9824583650262,-26.1355113059978,-35.9500070583633,-29.8025715335833,-22.8788260808605,-32.6106767305025,-40.1895088006812,-37.535088880006,-41.6129690261396,-44.3983080662198,-55.659301980541,-29.0496554035444,-36.0567985187647,-25.7655430314168,-22.7627666304077,-23.2589426268972,-19.3322932847953,-21.6175234642056,-17.1455649358215,-19.2074033302464,-20.9076566018112,-42.5125202096641,-20.5908174141909,-26.2132546915309,-14.0310173479348,-13.6195149372547,-24.8214678021291,-20.9884340589448,-20.0680924189567,-38.6352394981982,-45.1232867170577,-42.4174221516149,-42.8920111103592,-52.4052920398563,-43.564835605034,-46.1843050901184,-18.6123671155767,-36.7656541394239,-18.2504308598365,-23.1168026205235,-26.192381924357,-13.1226600186998,-18.7489446806693,-36.3317166310914,-54.5725576869838,-38.6971663910786,-39.6708940347111,-17.3743711989346,-16.3165347341069,-28.0207069687675,-22.0676962564224,-24.6201214363802,-24.5536427285061,-28.1168338194815,-31.4480145064858,-23.2694211253443,-11.1568355189513,-13.107150346387,-16.5292818884863,-34.6070990224957,-47.2263365924312,-36.1383856593251,-34.2854145317515,-41.3807854746075,-46.9406008010387,-48.1212619194764,-30.4452941788066,-37.8018134196905,-53.1765877207283,-29.5056949669406,-56.5417670841929,-49.5457674694906,-47.1551592041298,-35.8987833165749,-41.4373588214943,-34.1580626375046,-40.1195390003715,-39.9551386658463,-44.7755984834235,-33.3049786335653,-33.54681437083,-26.6703010871908,-31.8430378130464,-12.5328035293284,-10.4128837619085,-15.0890947199239,-19.0929517510253,-17.2587246948238,-23.6236855630073,-20.9331543498358,-21.2706176596925,-23.2964448804714,-27.1554309053315,-21.9676492591581,-25.6843902262709,-34.2882148651153,-28.2956191084967,-30.4531473615962,-27.1456263356213,-30.2277704960826,-35.8449004274937,-24.0259196448617,-25.7498518216062,-37.9348452966632,-36.2135709126224,-40.7379558175754,-75.7437315903845,-40.7423025811384,-36.1860866753526,-30.1311257565179,-17.2101422855464,-16.5516091678715,-17.8272929096647,-31.4906307620066,-37.3029364870198,-32.7481051169167,-39.4409069824991,-54.4180121487946,-33.269148711146,-42.4328683554322,-39.1149140448765,-42.8495424120834,-47.026732644292,-53.1902038417834,-47.1658873006833,-71.6350283354014,-40.3197601808084,-26.7475285495904,-29.8318535765926,-15.5742244503048,-14.2707995529497,-11.8849268728783,-22.3350561969429,-14.5884921935776,-53.3876610704084,-28.9803296930489,-26.6433226996138,-33.7579643969705,-37.689700570574,-40.0072881835348,-46.5385298440924,-38.8091182506171,-59.1105353848619,-37.6207409466399,-37.8838868102848,-16.2722245681492,-19.5440286980485,-23.2283959318272,-20.115136786828,-42.8859614675055,-42.6588549170432,-47.2778804252195,-45.8868574514119,-52.9771326575373,-46.0180153169948,-54.4656869550208,-49.8946533729368,-33.5526553129112,-54.8784156051254,-48.7753766544581,-58.2398100816686,-31.3500287332714,-50.4310315519856,-43.489148580126,-19.0338965364575,-20.6299315135524,-24.7670863495959,-56.0981429044038,-47.1167723665845,-65.4752424746911,-17.4319848841341,-23.891207586439,-23.9020235590229,-27.6817769263609,-30.7170466825116,-29.4915460835271,-24.4297756370701,-34.3934273939962,-21.9052518819007,-20.8055278358594,-20.5823544014953,-26.6743950287806,-27.0915705290411,-26.992047745194,-42.9360436186896,-43.2069209333029,-22.7062262122015,-19.2153883027443,-19.196422706317,-26.2715941115374,-20.4794435817852,-33.0978667780419,-39.1919720274534,-69.6017722418593,-30.35162199361,-119.567981088341,79.9165417932712,30.7293178581906,-166.24671939934,97.2339351721616,-211.470317623795,201.88565513898,-251.794827405345,209.894374183909,-274.398707128724,268.937515880024,-294.409560019248,283.902411872972,-273.912932776007,-285.628717251762,-269.253398957644,-235.554176313192,201.861936928951,-196.600682596946,141.9711269443,161.103801475369,-148.458967239924,36.9995621451612,118.87983436091,-96.6301214010078,-34.7486855882822,12.0967123054644,4.75566789360792,14.1573542103832,8.21658563915166,16.4960355615143,8.51109933610164,4.43536370537255,11.1453533728255,9.66955226473858,11.0295313548871,7.92181109546877,5.60265156935046,1.22523474246028,2.98763731563123,1.08334010569346,3.68349396076275,7.0033254404717,4.85409103869764,8.98540150044029,0.777601450492966,-2.07043934808469,-0.645801526144137,3.1976456349059,4.34544738710962,36.4475570796212,9.65926148614425,53.0863644337727,4.35176564016894,4.19285286701915,44.0361079636554,-5.82027705025411,44.6415629457652,51.8897533879421,54.3651823493576,9.00791960142578,60.9057472367933,47.6293556199711,56.4682950356058,65.3090718201218,51.0511283339245,42.5085955224255,45.3411777277174,68.8252547617532,43.128617002488,37.9291828643489,38.4233822550552,33.4680004358417,39.8410260797631,38.4930273623461,34.6061594186448,30.5321778914956,32.6521940718126,31.6987875999391,28.2804590491168,27.4276280923709,35.6001528304773,28.4531817022851,31.6227290268298,25.0485466749686,30.7971245012865,34.8464755425781,27.831835950595,35.3843959742363,29.5247474253919,38.8484497312578,32.8057355394078,27.1006700625322,44.5634761928073,42.6807720491232,36.8605181179868,38.3415603072511,36.9482974877013,32.7777486261803,29.4827422095262,34.1723629468733,28.2061315467182,24.9603698080667,-0.527658073194428,20.4908304838793,54.224178845392,36.0575373471948,16.0369540800412,7.91882590662682,-21.277462353575,-25.2201145138983,-29.0726040298172,-34.880317576073,-23.4049233979865,29.4278077685549,8.91203826274371,22.0985704265802,24.7343460551112,37.890801073671,6.80681742003765,-9.66131162518874,-10.7759779567637,-9.67450620785474,-14.8267039766148,-13.2043771542559,-14.5000036574687,-17.7116546918485,-14.0101665365994,14.6575610005305,11.9824400780516,11.0298126781148,9.87325045837809,11.7442326836838,16.4999705227815,-8.69265446778948,-0.271122488954142,-19.2980088139264,1.76696019737014,-3.91906335795658,7.91596175257784,-6.03953538542485,-8.43499370674141,9.48843167307839,-2.34515674050204,-1.57606568980644,-6.61530549058629,-9.43677406766536,-7.89521887734852,-11.0828913198283,-4.55972511000694,-32.9045076722971,-13.2187139641427,-39.5954230413566,-40.7066654102918,-43.6904583350175,-60.4881308928728,-23.1289647617917,-18.1749270742169,-27.8852125429181,-16.1500991950013,-20.6319158390355,-16.8589972307104,-16.0428160142468,-13.6192200322992,-15.3648249922297,-12.1448726442387,-12.6477854611382,-24.1508382826084,-44.1349659500579,-32.8532218794657,-61.7810911315756,-57.6393505858085,-59.5137281431434,-43.1669617637742,-50.9708668468949,-19.854089519684,-44.0542397396468,-56.4695830615566,-45.6995487085173,-58.7509891957575,-55.2766538508239,-44.5542063243313,-32.5384928287273,-43.1127070184671,-69.1313565003087,-42.5279713837514,-39.1856921160887,-34.0336958067283,10.4291067847639,2.90325471700433,-0.647047941990297,-4.10185645247881,-1.5266779805494,-8.69131256808152,-1.05083284082706,-1.75876926165531,-8.64959004526278,-4.50920557432236,0.175017577380959,-17.2139464709994,-15.6900070154627,-13.2261870218395,-10.0271170467492,-7.8661992772693,-10.5559457002475,-4.72273385892617,2.4967775565102,-4.14035545717715,-3.81155891243518,-4.88026806401742,4.98912552537897,45.3705600415019,25.6116723609369,-7.28245338498904,-67.4212236765949,-0.724355654029924,-8.14661122968267,-31.3416142866448,-34.8756925295307,-35.0190949178049,-31.9038388933364,-33.1696659688615,-31.4492552302559,-23.4632762735811,-28.9390416068233,-31.1953396646834,-30.6918316861455,-22.781389640726,-27.4120219155644,-26.1069988404341,-30.7289725949872,-27.7308103563721,-26.3595110025481,-18.5295164268708,-31.2940475292634,-15.4244414573924,-25.0697168585772,-21.2090333327936,-23.3924489382291,-13.9788817341444,-20.8940840939829,-16.3032726435062,-23.7810238252504,-12.2461077891763,-18.0851276172931,-5.62140705934244,-22.3751343838855,-3.72853375379719,-16.3024242415692,-8.03018586637548,-9.97484668942234,-1.49941944858362,-9.02296483019406,-0.0739717571044893,-9.22456384383075,-3.61530403267372,2.88880289797188,-3.78946635349871,5.094359375957,-3.85903332448776,4.4937792120613,3.63561514200637,7.49980734716968,6.63765328567238,12.9509532884552,4.43659967425364,12.6888755639121,5.20261464415165,13.2803364766508,18.4874395903028,8.31374498976066,16.0247359806191,11.5080560362583,17.1291699002193,26.7213778054224,18.8804697125371,20.5882538259999,15.9724071200527,22.5035020388674,30.2444619908131,25.5719065411031,24.9226313224268,19.8669337467485,28.405429403035,29.0677311831151,30.9050433406788,29.0140972381778,20.2092648549659,30.4393194284483,35.0208038728784,27.398781686412,24.4194724355459,27.605846987101,32.8074315495121,32.2853163106491,28.5857428725072,27.1661247325598,27.0839748929215,28.8324305960502,31.9975887084193,31.8131416305664,24.5961016286166,28.6504702464072,31.3375789218078,31.3892449740788,27.6690591165329,20.2190886263121,28.7840279966562,30.1005269450129,26.1983268769997,21.4070301000201,15.0851978769104,27.8190556038223,25.627320504038,23.1168684866672,23.7436762250898,14.2541556673778,23.6649483776872,22.2825419429767,15.2115394322765,24.8375632770011,13.606309533273,17.0184452641753,17.2103294034477,10.3697911844397,16.0594329383526,6.27242233764732,15.0478466994425,11.2352165920269,3.58932820979308,10.5428803934539,1.10008478571532,9.85327466334156,2.79094102593961,3.41346585045407,-0.316736477981475,2.75823231288424,-6.32657670595978,2.16334215122582,-11.0545824589136,-2.50341170507385,-16.5684584517677,3.1246266118717,-10.7633657366765,-5.80088083222797,-12.8736535981041,-5.24164311910688,-15.5630476645845,-14.6529439772235,-19.7951361171755,-9.10875581701146,-17.3742182334811,-10.6822144267018,-19.8258636491116,-22.2224494654385,-23.5193224303218,-17.3282352992612,-24.2120526839252,-19.1128384393042,-35.511683412243,-21.3264496021927,-28.1407288289254,-28.1536748675022,-30.7667842415026,-23.1020021039156,-38.2316521200652,-25.3376931614017,-29.0182272289288,-33.7580643722528,-32.1832309783469,-26.9418035909269,-36.1496401527093,-37.1911920172411,-40.2663210350129,-92.6503468927781,-4.70544705827333,-9.96845794424637,-126.670457597819,-64.9494342964186,-128.993170439432,47.6740136801852,7.35466677494053,29.1934154556925,-4.1602756152716,-56.7288410542745,-16.2655131897336,-185.957715743773,-126.87161871482,-193.637364719641,115.591687372295,18.4499196623045,26.6022945727297,89.2175383311077,-32.515796472579,-24.1428599708091,-175.726223353236,-250.897404144688,189.950076468438,138.380115963148,153.38824186421,-295.541818877272,-30.9409176058027,-333.462479867493,-218.478114634812,-323.626489676891,225.773517231767,43.4442700669551,160.613961093573,237.127165722068,176.226044756545,132.926451173852,-42.9869308522443,-232.373519771322,-261.688808469664,276.192267600477,230.519694118489,315.67259595259,256.055301343444,-314.647143822751,-39.4413775730399,-374.902774749555,-285.338761864174,-287.158149887818,281.008461979938,55.6844814919415,260.252925967645,315.140723089303,287.191212246295,-49.6996986929718,-303.433478696151,-285.820811712848,45.924491610482,323.868262675196,373.187411061185,300.188505755047,-333.73578957157,-26.7689131897845,-298.406324134938,-246.554005976064,335.680419174993,56.2462544293772,337.069610461283,-364.802942121025,-49.314464055562,-328.763688324773,-290.729093873714,-194.063344608781,305.17455587233,253.914365348267,365.746976348315,293.938082528568,363.553448177552,-38.7997335095769,-276.082169111999,-195.996569659467,219.944908411985,223.87489080393,328.191156409158,259.187977647168,383.670585583908,-262.405046307066,-44.1958243706632,-241.872291886912,-238.468085501214,-210.089899668643,140.723981403726,32.5773187141608,241.005365490032,209.758064369149,356.266516896327,-38.6907733861603,-178.995688374238,-116.767703424529,93.8219188151657,27.5114371289964,195.258651061334,145.233014505865,-169.855175719011,-26.9035318465698,-110.706027345933,-147.260338002071,-60.1983327904653,30.7908397589366,25.2343734874081,138.818515178715,73.8643904404626,-17.8333002390092,-93.4831880636546,68.7890255486767,36.8688021478871,-39.8929423420797,-7.63942381006473,-15.3542597345538,-5.37839425686812,-7.76360828875479,-20.7780297494629,11.4038540531489,-4.32905589018009,-21.1129239564032,7.39218580400764,-27.2219838647524,20.4888424366079,47.5190318277743,202.372012025945,10.8163674744454,-26.5918557903889,19.4360587274876,-48.4705855514593,28.5751037240293,72.9568389458857,318.398157506499,15.5699719255182,-26.9316266784823,26.9967569197223,-17.8212777742894,-34.8150274309797,72.8832372801203,351.86739231095,44.2308862672933,-36.7053570020096,66.2194805415087,330.512102255264,15.701069979877,-24.4527512673084,16.9674197405914,63.3216008328945,285.728436202121,12.1238016324907,-21.8636679194397,11.297244266429,24.7263979906289,-27.9146672936586,9.06617882429915,18.4183752251385,-5.39914427822721,1.8989066697541,0.956113632117143,3.3753029943233,29.2044403412208,26.323989484313,51.8245574455815,44.9355199355282,80.6813826209539,49.1965792048917,60.6221049529471,51.1641949105498,53.6470072762112,44.6209469094879,-0.224979329858379,0.829855918375246,28.1945679365908,37.9229289955732,48.4863783154558,55.3492261499994,74.1107199729997,54.5029626948414,47.9127878720144,45.7725327210945,7.30135650716774,-8.63586695059734,26.8914046242969,44.649780253789,70.6787658476317,68.1062874953831,60.6669620251708,65.4027567352797,48.6106695394949,57.8741010466778,42.4162312678021,31.4701551886257,51.8456097537547,59.8099184907851,48.5598578005239,56.8416043574718,56.9828930245539,49.1733647647576,29.6012790308146,31.1998645768692,50.118095610303,48.1418590345426,51.0552038860313,59.8607815938906,51.4199272011649,53.3602464852814,41.8192768255807,22.7112858653141,42.226094524799,40.9962323380901,22.7703098470964,24.5095544682183,27.963230201571,45.2440017638867,54.4493404237232,41.0025592455776,42.6185035046735,51.7910790340707,37.988440225922,-2.16964647026558,-8.35844348860528,9.98314398843208,81.2976004010732,67.9752309966819,61.0661452273902,51.2176005208459,53.8494461269143,56.8244581283915,61.6859544455686,57.6267636859225,45.210278294209,360.939722539078,2.77507185440192,279.494198467938,398.58779019143,68.5278509292363,61.6170305556708,49.7520135021661,45.2038520153405,41.0537465581744,61.839920946927,39.8724189473199,51.2851664117591,32.996837037927,30.0273872959453,38.1809099627151,35.9702329267563,45.4437580077425,43.1217632208067,43.6242589457548,37.8172270129489,44.0374540911401,39.7245785866348,29.6669682255037,33.791246833137,31.0770240444938,34.5737746785829,31.0389594489656,34.3631821622679,38.8193311654461,29.9706280308699,35.8045555187647,34.7059873124036,32.8044920989456,32.207889548315,27.2743199742692,-1.47122419710304,-9.12287899993386,11.0365912330673,32.6646186724155,22.3673603712868,43.0171722982208,41.0494687325634,50.3726780928575,57.6287241452093,34.6869298635835,33.3133857952167,31.0121453729272,25.3441051805951,28.2922014005694,28.4205329640885,26.025504609905,36.9845500908438,4.28804641054792,-4.23669907536317,-6.05470528343408,-7.56748547115832,-3.60486232663285,-11.366998135057,-6.84357168049087,-4.07907873793323,1.22841283976445,-1.26014077952402,0.715323609682987,-1.0402889686714,1.24037060470747,-3.49662517866411,5.68174551328949,4.25856331806684,-2.63886237218727,17.3079496135932,38.2854684085431,27.2139179925085,25.7486958144647,47.2805476031772,39.7409337859376,31.1602437400366,34.3386888397959,32.8244564721246,32.4370729545915,36.0138365002876,38.7029510746453,22.9216245380594,39.9619076106447,32.8493055941822,45.6764868425949,36.891304133862,31.8465663090832,40.6413506484334,24.6279761543575,54.8443037144908,27.9610116426738,28.0525767899065,27.1555738938214,30.6408909576091,24.4514012234536,21.6099945684516,23.5356310382671,19.6152795246796,25.7532096475757,21.8724871486749,20.8244491144099,20.8389614165389,15.765308139274,17.8334733715819,18.6901980989037,19.5853583453051,17.3299013270734,12.8904605828716,19.921874240744,22.9283958684103,24.3015552530645,24.3637295106143,28.2540053761745,21.6731041474645,22.0702132589674,19.649950246099,15.7449767006971,14.8218647936017,13.1626846937132,28.9263192761548,26.1256412737536,16.5227923215977,16.7795810038882,12.574603454575,14.8279241577878,18.6689502580054,21.0270644736323,15.5925744631963,19.6711015246102,19.0017867262988,18.2559156764335,15.2695628098058,15.6569655801799,11.819840584257,14.2920394173327,13.6479372216882,11.5079224336642,-0.496734104983203,2.91416989046724,1.99017657380838,5.25725376977998,3.3817712204622,3.62900072673262,6.01139785259614,7.48796647112711,11.3421105539198,8.05884231539566,10.4217007607981,15.8739128574859,13.4132614921951,8.22977091992706,6.23267500345395,17.9399131146209,9.08083141836548,12.4160319425652,16.9261994137197,20.2921068095714,15.1556589395418,-15.4649130174974,-14.9729177990455,-11.3446107914174,12.8570360070112,129.416518050158,11.8226782283054,37.1355063017165,34.843531720256,34.0474003310053,43.5185123276933,57.7101725397476,29.1581856925326,37.8591764696722,49.4308490572703,28.8490449140716,23.3538752030676,16.0529459806837,18.7375906237619,17.4848488800702,18.7203325700384,51.9042156017349,36.2499094726493,33.3233486168241,43.6978118298468,25.1019448220846,28.6032616503992,21.3964698820601,26.2178041594979,26.1605242124469,25.1951744810291,20.2863349225233,22.193894646473,22.6029129353135,20.1388485592021,24.7463687811082,24.4727634905947,29.2553273752324,19.2384341654294,27.4873341580433,21.888875259682,30.5016708382929,19.5162870763719,15.7071360513777,15.5782890578457,18.1184035586819,17.4927566085903,16.2755879949438,11.8874358906104,14.2411411264745,12.4723659994808,17.9506987885985,9.3164931537152,13.8918260929362,15.9596282455765,37.5442898887148,42.5457848371633,18.3347280112287,12.9059282701037,16.4656691811414,15.082241445722,17.84615384657,21.2041141158142,12.6706888073238,8.69203425361888,8.91844538343917,10.3627042076407,10.6462084604573,10.0880583789688,10.3566839267707,23.3148944178494,17.0582582417056,14.3205704742559,9.70036520783164,11.5885067049014,12.8323740400516,8.7496211968523,10.8954696460782,10.8488860566482,8.66123241435512,5.26545622663569,7.11418491153392,6.85607388207124,5.51437424160489,2.14773798011633,1.9408771314618,17.8405773212151,12.7176351604764,-15.0561113774367,-24.643923300997,-17.2408698387557,-21.2736140781762,-12.4621939155124,-26.1669410207752,-10.3206160544024,30.075644332512,22.4611467717458,25.5261000363735,22.501486696693,24.9881915096383,25.6136058194811,26.9846303863608,22.0827800392036,18.8411656425065,19.034840719427,27.12842389791,28.0170394969221,24.3934992147761,21.1890070693716,14.9906572838333,21.6396474327228,62.1993479731887,46.3136624445066,45.3048744541239,36.5574718796099,22.9349395753355,17.8143153532776,30.2497447419661,24.4377631672148,29.4508799535259,34.8035595822149,15.2097845313784,14.4857291557456,10.2892367007312,12.0371121219148,8.89641421729825,-8.7692582084597,24.0809067619121,20.4911786351673,17.7967135352418,13.7842626564697,28.7491782542023,18.1596574974238,17.3947716183807,22.1552599175533,12.3809819648901,15.1730830767387,14.3648259484604,8.97165220859318,12.3965278071548,11.2364711934312,6.63055752303562,8.52032169864568,4.17802481707082,6.3701468788667,6.12717443178504,6.72254602483145,9.11762593971478,33.1937965011974,36.1784952319008,23.2660818238545,22.3060071490759,29.1509919435956,23.754614319544,26.9659494933621,25.247008912224,31.0270829463786,12.2715931868235,-8.47998158970466,15.2365094800719,16.3835507846226,15.6038836450243,16.3794426108103,31.8413117907452,28.0557183232563,19.1355603440396,21.5040720740408,27.4388530983916,28.7205402074683,39.1265330823776,21.4614004277281,19.2829688747068,20.1218240398979,-6.21393490487377,-14.0944421636066,12.3487128511465,23.3297407631057,20.3323631794681,23.934281295831,25.856694231434,22.1420992939639,25.1323803044204,18.2431510203359,-3.59567552462728,-1.79277825365074,-0.226959811710593,-1.07065793909573,-0.126004345627779,3.15816480782248,-3.33815212730297,1.31713841402701,0.492768081940304,0.415470757284866,-3.20929402365099,-1.63016185041276,-4.12018226575857,-12.931393533562,9.62686405407721,14.455662997627,12.4039718900262,16.4032790107043,27.8409937189333,-2.20126415445307,-2.69345764862594,-8.37123398000374,-7.43792210111018,10.1449922970523,7.45594850966475,11.5963021612368,8.86056612267212,11.3908244497467,9.25002426103083,6.64103375202434,14.0146135120361,20.5035994307458,19.3571554438356,28.6291833277706,32.9408829586418,29.6625149745969,25.7893025989797,33.8484154571176,26.7030432617466,23.4771387924713,25.17041523328,22.1070605075572,20.125800954882,22.3391070074376,22.4687426063851,-5.57250521788678,-5.39138725368042,-6.90402824547771,-5.63536451881287,-12.088984045369,-9.53109811613042,-8.55928801926277,-11.2475895798019,-11.7122866053965,-10.2328467287011,-8.57209893603748,10.4250340099985,13.6162328510911,12.096115074195,14.7391446501324,13.0810843233839,3.39818091410779,19.4404905607995,16.8403537941544,12.3634858248602,14.6326823286563,13.8303554968566,14.4195902280389,19.3007269754583,-5.13957987238899,-5.95768766463398,9.6392641558662,5.15403927375227,7.85712984967473,7.42268595493972,6.62689602429402,2.64704718539771,4.59178441788204,4.19888069349655,5.58995149034134,1.90625493890736,4.02985601073102,0.481374735398578,3.1377085101704,1.99875603682168,-0.909380683935193,0.139686259167574,-2.83975000569485,17.0362475063588,11.645482630593,9.06696038650584,12.1603537418556,8.66324934427709,10.7294885643246,10.4069174279385,-5.90082002214736,-0.282287047558764,4.93179896518125,0.951027129395474,-0.608375227032478,15.3512469177563,14.6889237681261,16.971555570549,-3.85098937309977,-9.52200995509005,1.22163629123381,2.47619669440816,7.09471152101034,5.30433117710224,7.48149630879639,5.69945448427381,2.25492859454164,9.52948928234353,5.66179682650425,-5.5664303732772,-1.35687881444665,1.26086846692194,-1.50255378055144,0.440603935472636,-1.92993738560977,-3.36664088912137,-3.19535783616752,-4.83102928051959,2.99472652517462,-6.78426914863342,-7.07238344105194,-5.31265151156262,-3.58246963971107,-7.04546641097738,-4.79137556072905,-10.4441410544787,-9.30756964782058,-6.771149054772,-8.69685459014627,-8.31088835745534,-13.7099742281152,-6.0989349904644,-11.1384536243829,-11.5850977531417,-13.6973006574193,-14.2745533834838,-11.618983700784,-11.0005259862206,-14.6134836967934,-12.618100337289,-11.0820159839527,-8.64933819863675,4.56265437429523,4.03862125271337,1.34966922682701,1.00348123308858,-2.877515495287,2.57376539383965,4.74409899864233,4.67732770045125,3.27135039493197,4.39633744741733,2.20353231339477,0.15787689296161,2.25753637249747,-1.52883255418103,0.557573264937909,2.68167628546173,-1.44848903050948,5.61710406040692,4.6612794526665,3.85855022071249,5.11696468421756,3.23427718888659,-19.6418348134542,-9.00749144190105,-7.06087415973362,1.3788224375197,-0.458039992078875,2.5534781024052,-1.21853009087003,-1.77495215762548,-2.27817764559897,-5.6142728785009,-3.8605256298409,-4.58922309460872,-3.46168544193615,-3.18393600646941,-0.252630637663902,-1.58796324397449,0.611709819982417,1.99394380024684,-3.21167435456582,-4.25131774368051,5.71867966533619,6.5845815034134,7.51818843756602,6.93155198936652,5.56483342843744,-3.13823136082611,-0.37985015313224,-18.1809169288144,-16.4356241992606,-17.0368026912935,-18.1072713106231,-17.5850002972973,-23.8478435365025,-16.0848245208787,-15.6159101146989,-22.6934196147747,-20.6496237915273,-15.8915484516208,-13.0409963316305,-21.0200067750521,-22.9102724668931,-11.4071874050252,-23.9307297417385,-21.4279146177104,-19.0950559199575,-15.1575508085168,3.78314379056508,4.0179187174034,3.73519893067946,3.34948029470178,5.55745267197113,-6.76745900604959,-4.50096588372003,-7.50741770219283,-5.64649735782208,-4.54747944985693,-6.82119495395874,-4.50640136039253,-2.53455221535514,-0.457267631463125,-1.9152467955626,-0.898846878115513,1.12726935833319,-2.97185114150299,-6.61838927561619,-5.48614125994126,-9.46636713157146,-8.02538233741601,-9.85628355727193,-7.47931322644046,-10.1841013332126,-2.39637551808736,-1.42068614782707,-2.15784359525311,-8.40772658161234,3.82599572505622,4.16584565795511,6.07349909557454,7.98858390009505,1.35743450467916,1.54371902947428,-0.293985145215441,0.942595894541452,-0.507249146339019,-1.84008304051839,-2.24923305911707,-3.53068106420617,-2.27777140618501,-1.02121567968123,-4.59023716449019,-14.1243168896195,-18.1851569667579,-22.9248002489691,-16.3053857099119,-13.8098211841143,-12.3647041789502,-9.3734439436557,-14.9763873148464,-14.6852898813002,-11.4315420201629,-17.893159418424,0.808907795917091,3.76843190298587,2.07820154519416,6.46608708300548,6.76033273137665,7.55238659807679,-7.29811643806265,-8.85121419118981,-11.1053512948574,-16.0633849833222,-6.58898860929737,-8.87116681921009,-6.48880155205957,-8.21535218384275,-11.5443220045687,-10.4344012622724,-13.1657712412671,-10.5686357606046,-6.70201748069503,-8.44075119003006,-11.5073565073011,-8.8737824501918,-10.4199736399472,6.94203485019185,3.86492567225527,0.740716458829201,0.438569145652486,-22.036253116717,-13.8650034349327,-16.8478587238353,-13.8220449491162,-16.2421754646147,-19.3052050071858,-10.0333895454182,-11.192715801072,-9.096528324324,0.839497047407103,-0.687822333636042,-2.2397505973459,-0.887309202012307,-2.57041091798729,5.27131527151941,3.72165083028494,4.87645489374634,6.00425399011992,9.73786010685328,-5.61499215289679,-12.4707141872671,-4.55778407395399,-29.5651014595493,-8.24641199877942,-9.70132300172652,0,1.75694265234399,3.6484925347178,2.1512363360447,-6.23618070768706,-2.93883902440662,6.00063029979242,8.22288367856275,7.84274028497475,-12.1315051165372,-15.5808206061452,-12.9887964305609,-11.7097161800122,-15.6709728631846,-15.2526491535921,-16.7558589553416,-22.565657916254,-18.7720977926803,-18.6514151546201,-19.4520627168727,-15.0106015682085,-26.1477015732997,-9.88453164264535,-14.3045847528457,-7.46592184411062,-11.8547790886501,-13.114018508477,-12.2629104167679,-14.3865341961883,-11.7832367582243,-17.2260736558154,-9.07617415248616,-15.4364323825429,-17.3440444426464,-10.7280877546649,-11.1431609029837,-9.06558392536515,-6.76542240654993,-7.72910138510099,-5.79485697277351,-4.48684384684532,2.11484388536125,0.648275291249267,-6.99308265355023,-5.00217368174202,-7.79843142688845,5.04277519227821,8.20229115226651,7.59728437167816,9.56640620906975,10.2643860822385,12.3231348855052,9.68579617084279,-23.2874872171723,-18.6641643281222,-29.0883700326315,-11.9807320860923,-15.2133867488522,-18.7724276553845,-26.1425228381139,-30.9518092248706,-7.53214493039042,-10.6150872565427,-9.43243887113606,-12.6164796569971,-13.4051885229959,-16.5533841522569,-14.837247263535,-14.0978842035848,-16.2689099887536,-4.06869488246009,-4.76760454239877,6.27600264889902,7.0791904641726,7.87815852647962,5.38774449425117,7.10418032162062,7.06048482646628,-24.4170775907414,-25.0639674051505,-27.8177510532059,-16.3578649344343,-19.5177321330427,8.71954073731757,10.7472382564132,-32.7689827522476,-31.0189423465799,-42.1041062662014,-34.0864891887642,-32.7203926444663,-41.312283299958,-28.9688328004071,-37.5151104030375,-36.2483150444733,-39.771005565353,-28.7979202379935,-38.1690279557604,-48.5363354918758,-34.8561541265106,-32.6759597914166,-27.3882398933324,-37.6263817309223,-25.4663780365903,-18.7149821802151,-23.6044720492719,-36.5323057178933,-47.8387261146625,-36.790746549231,-25.6748660526668,-28.6407491142399,-20.64973951529,-34.0501688997599,-22.6468220184996,-19.4065042930817,-38.8213333370414,-36.1404641805008,-43.0408574187105,-30.0980315947974,-20.0886222281269,-20.6101567467655,-24.8586467898246,-43.0807594956164,-42.2441461009751,-55.7445199875576,-36.8347977808381,-18.6221252369465,-21.6916507227479,-17.1521367329552,-21.736422011761,-25.0223281051791,-23.0851656873412,-24.5851708538211,-22.2291288590644,-31.4706003025408,-27.4241576292417,-31.1417934989471,-27.7449858304607,-29.9770548720158,-35.6991875207346,-36.9791188860296,-30.4066225812644,-32.3810929003063,-33.2801979641656,-36.0991796648009,-28.1713979446615,-25.4328115459481,-32.1353629090232,-34.3567814825952,-19.2029045372302,-21.6982421927789,-19.2603570866192,-17.5481168679222,-21.9891900784571,-26.3587356996883,-24.5656382707135,-30.3156544766635,-26.8368993403963,-28.0344222754164,-32.5903063413433,-31.3025151692084,-39.0753241771505,-33.7942638610504,-29.4597916323697,-40.4841467093552,-33.57739235308,-25.7726699712579,-36.7923161437127,-45.2894977586986,-42.2931420041399,-46.9404806514874,-50.0049177887944,-62.4144067980514,-32.8287770649837,-40.2802732971524,-29.0554807181374,-25.6790106005387,-26.2269652871069,-21.7631373078376,-24.3677183667782,-19.3273345686186,-21.6642440529212,-23.5637031600416,-47.9371092243067,-23.2156882182369,-29.5542379596608,-15.8233177581471,-15.3631831777636,-27.9846408427786,-23.652208324684,-22.6308326208876,-43.5273703071105,-50.7991965572829,-47.9403203174104,-48.6265150180838,-58.8132773240744,-49.1316141235202,-52.0099577195469,-21.0096751888908,-41.4329666808305,-20.5611855589666,-26.0437101331448,-29.4982496027757,-14.7891301730609,-21.1421309778306,-40.9204824190435,-61.2056561906465,-43.644627311737,-44.7027611358249,-19.5752991484572,-18.3874086635791,-31.5502217887073,-24.8699446634681,-27.7503837812967,-27.6889091369506,-31.6811721716881,-35.4537524817057,-26.2255027337182,-12.5844847675289,-14.7749775674303,-18.6238310055931,-39.0252206317628,-53.4458572669008,-40.7334761533597,-38.6290360622834,-46.6344454001476,-52.924442144126,-54.1553543895029,-34.3204864204773,-42.6002821711785,-60.2061160180594,-33.258369333906,-63.5492264269107,-55.8740923562667,-53.1904219661791,-40.462015302638,-46.6728895889847,-38.5374630869456,-45.1657031915847,-44.9591766233285,-50.5292765207621,-37.5742143211855,-37.8243428644594,-30.0913912683761,-35.9116363374642,-14.115005619733,-11.7444935317945,-17.004646355039,-21.5149531510383,-19.4701136329884,-26.6415475039295,-23.6061366018926,-23.9591081486664,-26.2548635064671,-30.5911290363172,-24.7719133712745,-28.9591786964809,-38.6765075640482,-31.9036460777364,-34.31961541944,-30.5709608895804,-34.0904424920029,-40.3564691280219,-27.0776933220008,-29.0131426638083,-42.7475745887345,-40.7477759464188,-46.0763055553629,-84.5963513744225,-46.4644097310268,-40.790409918466,-33.9520173884004,-19.389140158107,-18.6474279588579,-20.0992907987765,-35.5292874108372,-42.0812493579256,-36.8873282218922,-44.4377173538569,-61.2175480190104,-37.484685855951,-47.7956235563538,-44.1409798850281,-48.2555665619851,-52.9311767267463,-59.884139841458,-53.4373248480672,-80.1026166855502,-46.1298636452025,-30.1666651979021,-33.5963091588036,-17.545460532607,-16.0885242737359,-13.3946388172372,-25.1559127991593,-16.4417818493755,-59.9531208978879,-32.6649951361587,-30.0180373604844,-38.0796277222895,-42.7245965022865,-45.0320340969391,-52.2369322488541,-43.6637521112719,-66.234646676923,-42.4024044065121,-42.6891725204535,-18.3345267106088,-22.0247175090655,-26.1745146460314,-22.6737136200614,-48.3346144263891,-48.1405687646895,-53.5113975854575,-51.8190245361752,-59.4348892265047,-51.8211166967374,-61.2290318492345,-56.1968737053741,-38.5840996324602,-61.9719904717465,-55.0245755519336,-65.0686483940111,-36.201208534838,-57.2401041072539,-49.010822317701,-21.468484121104,-23.2443925737576,-27.9165058119232,-62.9021083969977,-52.7515572306902,-73.3018683981872,-19.6543485282593,-26.9045610958883,-26.9427722612225,-31.2342927862831,-34.7693077580013,-33.1836732330125,-27.5276281733694,-38.7923789448745,-24.6873400418002,-23.4527577669181,-23.1777544367919,-30.1560755748961,-30.5782252126456,-30.2748381343474,-48.0892442064524,-48.3277201955394,-25.650357419546,-21.7008305866889,-21.9067305967567,-29.6704299462235,-23.9157914638616,-37.3592324939778,-44.2849069348381,-78.3168098493626,-34.146894779439,-134.520122563914,89.9149280005915,34.591438916568,-187.079636367323,109.348675507055,-237.933342490441,227.133094250262,-283.308706011455,236.056347473584,-308.765323243236,302.472457123524,-331.196147237979,319.458978774718,-308.239173466621,-321.385519469605,-302.961784947158,-265.02494230555,227.119480459772,-221.187160750953,159.736402468551,181.218052308113,-167.025146383878,41.7031077105924,133.664742839054,-108.706076834284,-39.1048198822432,13.6661057524033,5.3683768189129,15.8348447891508,9.18713295345719,18.6654159835236,9.58188814197666,5.03158977846964,12.5882857911848,10.9259848357112,12.4138283500214,8.93769535061539,6.3116299246037,1.37621676050305,3.37608723634972,1.21651127528567,4.14350691946761,7.90204923270065,5.48826933262373,10.1249271491943,0.887463938392033,-2.33748011350523,-0.730322754222576,3.60049642068591,5.47058321835862,41.2433133059631,12.0340608424926,60.119301914974,6.46159122182777,6.13489742227704,49.8786542406414,-6.51778831351807,51.1564891820991,58.5627536974876,61.3451514099659,11.4654382808823,68.7156112790301,53.8693716329631,63.2301413831863,73.2186501307659,57.5542399186283,47.9051245188844,51.1293019824683,77.0838486951498,48.6545571050456,42.755792535292,43.3442344101093,37.7111779705963,44.877061064138,43.3620055601778,39.0357980770944,34.3930037822708,36.8067716017248,35.7531508097207,31.8703531159068,30.9336836300323,40.1415550159058,32.0508240272925,35.6424191939125,28.2360402031404,34.7153847678666,39.2502784487251,31.3848433725627,39.8600801385436,33.2520689583269,43.8234835504318,36.9740552082123,30.5434652464754,50.1810221468958,48.0609527052046,41.5349039196701,43.156992925002,41.6165283222057,36.9437574015709,33.2302463667684,38.5249167560481,31.7640796396281,28.1140079552988,-0.595360707828318,23.2354250438006,60.6476995463316,40.7706177642988,18.0704007908495,8.92212798383891,-24.1824695833827,-28.4490828190215,-32.7571701636134,-38.9402130065342,-26.5901793096896,33.2181444354486,10.0444196506999,24.6922222387984,27.9702635765823,42.2413643555324,7.6740232147316,-10.8880095866195,-12.1465681709081,-10.9128734241276,-16.683763051858,-14.883929207263,-16.3463874902354,-19.9441805999544,-15.8155889230141,16.4986535810467,13.5128152859714,12.4265542159282,11.131910200006,13.2426284474587,18.5874299208202,-9.80435929135032,-0.303030952343837,-21.7617263005725,1.99491143554243,-4.42535595391066,8.91535479931564,-6.81386378645175,-9.50045121836076,10.6762291930144,-2.65270538760883,-1.79557595730308,-7.46504570752409,-10.6404636368965,-8.87968525282862,-12.491476150486,-5.13491762931244,-36.6282999508356,-14.8901096363224,-44.827332274396,-45.576305668391,-49.1136612837763,-67.5251741187949,-26.0804452154662,-20.47265154984,-31.914064735769,-18.6787050722935,-23.2252821118421,-19.0265308428173,-18.0924438587341,-15.3481586668917,-17.3092997556785,-13.7005789816189,-14.2548011568943,-27.223230872498,-49.6759633110493,-37.0356849707181,-70.0191641622022,-64.7065756234805,-67.0465751742276,-48.6652518391455,-57.4825723088331,-22.3647750032047,-49.6795349034048,-63.4452631235145,-51.6797664499676,-65.7992036129703,-62.8553046251891,-50.6101607955717,-36.6623169373861,-49.1523524379322,-77.3260619761381,-48.6051137805515,-43.9976175653733,-38.3494818678979,11.7383918324329,3.2327524234509,-0.738016883197184,-4.63261159617064,-1.71137257554394,-9.75208970560045,-1.17952786735867,-1.97457954021046,-9.77628598623581,-5.08377126560792,0.205338520455934,-19.1880974169653,-17.5876179757428,-14.9256921357093,-11.3143048645524,-8.85238824132045,-11.9746927930963,-5.34574002061062,2.8037677267192,-4.66010012141952,-4.29418217889507,-5.49484707294261,5.62392055696062,51.1006728052304,28.8443447980184,-8.20858917294503,-75.6280437207937,-0.817664037702565,-9.17887398761892,-35.8038498894965,-36.8881076272849,-37.0295273531618,-33.7933337439276,-35.1439380282959,-33.3336098281165,-24.8270204227637,-30.6160730555382,-32.9990095086298,-32.4364815512138,-24.0791945387059,-29.0555588184765,-27.6116304020558,-32.5027278265316,-29.3273213963658,-27.9652696195782,-19.607177648272,-33.2167223789414,-16.2882439327629,-26.546597033252,-22.3769252148108,-24.765900349619,-14.7480275347744,-22.1745993042457,-17.2011220678914,-25.1794155445378,-12.9189953294559,-19.2307737628316,-5.8997085090566,-23.7875184736612,-3.88256712188637,-17.2817771256844,-8.44924835491521,-10.5780648981295,-1.54764647356193,-9.61510632244769,-0.0142753686389716,-9.79405801983343,-3.83296654062045,3.10003019016263,-4.09544277907358,5.46144441232568,-4.11778837451813,4.7785123148591,3.8203600968686,7.94272698010325,6.99924403666386,13.7293693246952,4.63166196493886,13.4974937853844,5.47243150463449,14.0445867844547,19.5771248383511,8.74419201208908,17.0183188438088,12.1476607587542,18.1194434560127,28.3333263200569,19.9441702197223,21.8442699354629,16.8725821968772,23.8039787668959,32.0395014409692,27.0330129700384,26.4273149702718,20.9899181934428,30.0525849519826,30.743614209357,32.6985764870005,30.7732982079241,21.3628889186986,32.2076350653209,37.0833171762577,29.0065684064216,25.8624867117655,29.1865837761017,34.7017584940382,34.1330298104434,30.2610674381517,28.7586207997204,28.645759072276,30.511837475244,33.8550875130371,33.7204807777973,26.0316747751227,30.3099015288307,33.1585601147935,33.1994040765521,29.3343927907938,21.3864526322723,30.4626859886953,31.8484942113874,27.6951844828131,22.7111214529654,15.9492043080339,29.4465645235917,27.1160280267583,24.4281715677186,25.201418983901,15.0445291892572,25.0504177612483,23.5783375871245,16.0434999838381,26.3790380820579,14.3655383090927,18.0153294336673,18.213003895726,10.9231745575362,17.081642131465,6.57800416929271,15.9398588227563,11.8895682444276,3.76049497439269,11.2316307213001,1.09745346322613,10.4567574877842,2.92893235188215,3.6293658770519,-0.361951726055112,2.94957652873724,-6.74307156148174,2.37428389971292,-11.7831435372724,-2.57691029657133,-17.5923013207166,3.33447214373028,-11.426384257543,-6.06962452566559,-13.6937825791213,-5.5047114256945,-16.4649910887893,-15.4783180192896,-20.9705411417399,-9.58640747011433,-18.4514613737156,-11.2715425452481,-20.9692425072984,-23.4890057189249,-24.8945511423801,-18.3007223168456,-25.686839987114,-20.1661894032919,-37.6196050126831,-22.5371384575332,-29.8611888109605,-29.7893779790091,-32.6308699348479,-24.3915762023131,-40.4893862398937,-26.8063158694102,-30.775423811468,-35.7501687569344,-34.109875877264,-28.4834081259398,-38.1905906468316,-39.2966801016092,-42.6121868101223,-98.3573745366529,-4.97263581536804,-10.8230704611723,-134.363209789856,-68.9439284737708,-136.914572386223,50.5997364815246,7.91635587679284,30.9262847022768,-4.54409620668778,-60.1877102570855,-17.8501520643565,-197.270983025476,-134.651884995403,-205.537369901753,122.750109187646,19.9186408138753,28.2730709176305,94.6263176735394,-34.4856072869316,-26.1960613225409,-186.503930183467,-266.320085053939,201.618819788051,146.946550070657,162.714075599434,-313.67882330922,-33.7256520836864,-353.873032740303,-231.851128990232,-343.570289035382,239.697208143456,46.8094530351147,170.446385540334,251.638612406073,187.001762248455,141.128463310032,-46.39128656147,-246.635612639899,-277.769804491466,293.212056608774,244.78952062666,334.965280895814,271.687413555111,-333.86578585941,-42.9227225321232,-397.89002696356,-302.764053771115,-304.806267244239,298.281812181003,59.8717929616147,276.196504826202,334.437590034081,304.840472668738,-54.0495905948197,-321.927321002794,-303.456782773975,49.9854359761868,343.872723453393,396.020563301188,318.503984886479,-354.086346357794,-30.1143185043256,-316.653146274371,-261.749726622673,356.403025796159,60.9766979986861,357.751607692783,-387.140227401643,-53.4451673208245,-348.868843940846,-308.526962926752,-206.084010585478,324.012493660642,269.615363912917,388.094031439217,311.954497756118,385.836114955894,-42.2775781468414,-292.930879715496,-208.063307009721,233.514221579314,237.705803915871,348.239374168278,275.100345872291,407.207747369424,-278.460537421034,-47.9506704550058,-256.66575818849,-253.009003660972,-223.043230604093,149.362668300636,35.2902533475343,255.69548277837,222.625806555956,378.09996519471,-41.8487372679213,-189.933510927048,-123.977137882284,99.5837583474676,29.7372361238806,207.150081177984,154.156102802208,-180.222335725436,-29.2216874530134,-117.474960711308,-156.210555831323,-63.9010411666027,32.6624920850748,26.7894804420408,147.23554146899,78.4280096049317,-19.268717476524,-99.152133273168,72.9840049941582,39.1793410482781,-42.3501989860234,-8.20567392684075,-16.3019734720538,-5.94111153498005,-8.28619795800756,-22.2822750444107,12.24653923972,-4.48223811196308,-22.8488718681236,8.15180639698194,-29.4257123010005,22.4046784546059,50.0513396654507,214.769889447887,12.1437602247041,-28.9687426068403,21.1945046937154,-51.8930035515211,31.0410596776772,76.8517348587809,337.903996189376,17.5786349569197,-29.4848007761385,29.5100420823098,-19.9285249559486,-37.5786680993818,76.9746948601017,373.359368382011,48.0195266191184,-39.3825019985027,69.8813876909285,350.761043339012,17.7073763683706,-26.5007897687641,18.5892960626908,66.6941777173972,303.231181246257,13.8269089894777,-23.7198091916897,12.4338884440639,26.6626877812194,-29.8741717897788,9.88020287346348,19.8578036788911,-6.03180801857688,2.18816491713745,0.897159042896159,3.5525684517758,31.1468786945233,28.4648288250522,55.2982326280151,48.439518088126,84.9947506740874,53.0228927096424,64.7053446170335,54.9893899892061,57.2942848934774,47.9304947435686,-0.248768291951056,1.00285515229663,29.9810397665561,40.2610649917077,51.4972199130529,58.8035041389475,78.5233475397052,57.930132594531,50.9346105856192,48.5892746904223,7.75153249858787,-9.20737633622675,28.5536830506167,47.4179462329425,74.7967652708617,72.9949750134904,64.3109515657243,69.236671683646,51.6348581972237,61.3275206649442,45.0593852973544,33.4954531221332,55.153286986094,63.7775872020213,51.5451841026023,60.4267010388364,60.5327391580971,52.2881354274537,31.3512780458059,33.1500229336686,53.0980692013514,51.1441163824404,54.2330229089388,63.3437847000833,54.6672410141784,56.4398227972578,44.4356666782691,24.106712159697,44.8416010755343,43.5365468699467,24.1898768196911,26.0222658064177,29.7279473212301,48.0430772682858,57.940946315115,43.5342965465183,45.3355564690665,54.9632098166926,40.3044995430082,-2.30853665336764,-8.78886054567273,10.594982411792,85.6818112256283,71.8791518165909,65.0475127905352,54.3813987395226,57.1106978911788,60.3683611603358,65.3487102528348,61.1999157138879,48.0390156652995,383.16323726884,3.2444320038051,296.599478015262,422.974221646801,73.3048938991756,65.9119364872765,52.8543487492279,47.9624635912721,43.4148777289056,65.403570737986,42.3042101734627,54.2849095055218,35.007818830683,31.90165541249,40.5507900802491,38.1789011015667,48.2803088479388,45.7725438531717,46.3036412053638,40.1552735692143,46.7813105119287,42.1635951106088,31.5022940457579,35.8823133521809,33.004089638429,36.7086577250574,32.9690147518414,36.4833076614314,41.1908468324439,31.8492590813746,37.9959727159217,36.8480581030918,34.8489170982618,34.2148375119606,28.9407556493831,-1.5359591917137,-9.69482762852505,11.6650065619453,34.672363684955,23.750250884013,45.6363824614075,43.5775303442177,53.5327331304085,61.1907171403713,36.8516084517926,35.3665138962656,32.9248068975837,26.9109766305858,30.0393239571835,30.1896069207652,27.6177904240871,39.298245247742,4.54078102320768,-4.51672677309739,-6.41985383470254,-8.05322821016295,-3.82635401197251,-12.0190778230196,-7.26786448439457,-4.3281437046605,1.3024038482616,-1.34058687750588,0.754289793323201,-1.1026180582523,1.31832453660378,-3.71423931037469,6.03260997167939,4.51840971037398,-2.85569928419758,18.2369796174768,40.7276884523839,28.8925681467339,27.3363008165555,50.2322603430345,42.1757634174882,33.0696088375634,36.4894397624885,34.8794969937898,34.4340002734514,38.2346231028822,41.1154098289909,24.349330080495,42.4694774721926,34.9015429886893,48.3195890529019,39.2802162882407,33.7933443666458,43.1278351970353,26.1436964661846,57.8402931071274,29.7064904441783,29.7936666647591,28.8200616621635,32.5564176401048,25.9650381737886,22.9376823907574,25.0005389879319,20.8204663050942,27.3488620418263,23.2305849176384,22.1116741727223,22.1259336325273,16.7456111407696,18.9335327377652,19.8440527442703,20.7980953410874,18.4036859684205,13.6869008558508,21.1574950264616,24.3386950662475,25.8100411336278,25.8746516891884,29.9820002726468,23.0211328877236,23.4266216560893,20.8548444615154,16.7227724658995,15.7430691677322,13.9717194334345,30.7091719743561,27.7479475706153,17.5460711673932,17.8237915984057,13.3498534997454,15.7478210612346,19.8354739681657,22.3377028572615,16.5559847834442,20.8693186268697,20.1724326829219,19.3840996694252,16.2102070633024,16.6329397733934,12.5460639568146,15.1746158471144,14.494045108854,12.2253960440753,-0.523161637169828,3.09012088932407,2.11736461849211,5.57857700209849,3.59341147030498,3.84986435195381,6.40176307836996,7.94716264630501,12.0380066202654,8.55964808300459,11.0653529343844,16.8538921459202,14.2472223092671,8.73723098306671,6.61865359126927,19.0626153507041,9.64397669398433,13.1806854852506,17.9519016798176,21.5662875888058,16.0928978764556,-16.5858151075582,-15.9923201889231,-12.0047429188466,13.9592531822947,137.295362643002,12.6222174530373,39.4497581919134,36.9730876127592,36.1306541133153,46.0940778775923,60.9967566102754,30.9524440853835,40.1681137023954,52.2353496842503,30.635185405389,24.7837372541551,17.0412658679484,19.9038646174481,18.571368954187,19.879047777394,55.4103479902091,38.5023098100056,35.3648179118452,46.3770159581783,26.6550567310808,30.3879441512817,22.7280841242115,27.8384544729807,27.7635469317288,26.7427297983193,21.5423820975149,23.5745580745809,24.0092652359274,21.3706653737094,26.2840302486022,25.9975486934334,31.079814822638,20.4488637754352,29.1698906424074,23.2332270765089,32.3497577900249,20.7238746525,16.6856188590476,16.5487178934271,19.2260319451757,18.5790427001864,17.2876055829857,12.6389025946256,15.1161569170384,13.2494015312048,19.0613617464661,9.90189120002365,14.7493918159487,16.9581683012137,39.7140191922608,45.1886296430839,19.4621804987138,13.7015399653351,17.4933372218137,16.0103687294879,18.9597680047736,22.4959886042151,13.4507803215416,9.22141522288075,9.46958420091763,11.0116553406859,11.3084108244936,10.714582742651,10.9939634175239,24.764832151179,18.1220436743168,15.2029659490035,10.2974625152141,12.3127994297999,13.6255894338345,9.29550984800752,11.5717957775158,11.5186314903501,9.19837583417974,5.59274339951696,7.55272842873158,7.28460365642152,5.85927361549556,2.28755283410128,2.05960802963042,18.8575854082824,13.503462389021,-15.9928748229413,-25.9453915607681,-18.3339037105335,-22.5223035776023,-13.2386168786116,-27.6664225708147,-10.9558887843948,31.9205063559789,23.8446224181437,27.114039683234,23.9108340905408,26.5316884729687,27.1924958923361,28.6382771615322,23.446664611467,19.9958845927927,20.216114757609,28.8244051706448,29.7488402787971,25.8905404979904,22.4889185618964,15.9366544545545,22.9789741034945,65.760599720111,49.2263029280147,48.1110663393399,38.8271765292363,24.3554523677464,18.9273972796281,32.15326905749,25.9482620916879,31.2856913040802,37.2288630982275,16.1504930746965,15.3753623975107,10.9235893875736,12.7886770127405,9.44858810154614,-9.31815626861862,25.5673545333184,21.7614580756738,18.8887445342766,14.6357955925492,30.5318939219068,19.2861711939798,18.4836431960736,23.4602109639712,13.1534246343599,16.10433731958,15.2511811986606,9.52127750952184,13.1609141664321,11.9313945789212,7.04202215479212,9.0473202940888,4.43410850914821,6.76586751860213,6.50323326439246,7.14044524291875,9.68375482527528,35.2363847806014,38.4494264582765,24.718660983998,23.7020442663661,30.9588170551351,25.2385011922378,28.6116974182711,26.7988776734313,32.8679875235756,13.0318475069576,-9.01285676832056,16.1782320409955,17.4017365626236,16.5705854161611,17.3814683405784,33.8113713459139,29.8049297625163,20.3289313006753,22.8397034508189,28.8851407364102,30.4937429293646,41.5508834289637,22.7826341471624,20.4618601101958,21.3989877314626,-6.59265543118459,-14.954163680678,13.1097407994933,24.7517294383434,21.5922869368112,25.4122559207256,27.4598755010195,23.5174034198992,26.6715528119814,19.3816261346137,-3.82289052732051,-1.90176084614632,-0.242474709354673,-1.13539816291862,-0.13278255603883,3.35302890026857,-3.54224170646358,1.39840828637051,0.525113221137387,0.440040322516417,-3.40733993151636,-1.73128056900741,-4.37474929968493,-13.7098053615869,10.2182780708991,15.3560277985996,13.1699138441993,17.4294090491981,29.5694957250761,-2.3368007667957,-2.86212890676452,-8.88574168360133,-7.90353325479624,10.7743949697556,7.91521041818438,12.3119274238946,9.40223359007835,12.0959383433581,9.83432304445397,7.04536368523781,14.8804012084422,21.7698820981003,20.5495051937385,30.4368982209634,34.9392487387996,31.51387163202,27.3956873865436,35.9688880901462,28.3633322964508,24.9246551404063,26.708556814265,23.4709336484708,21.3740571227369,23.7426130060047,23.8558373590103,-5.91816949637259,-5.72152599043019,-7.33115802901636,-5.98968470454133,-12.8329964466861,-10.1193256964522,-9.09312298284952,-11.949249850411,-12.4364269003709,-10.8595831167451,-9.09528734834546,11.0720214728446,14.4637519914966,12.842922919951,15.6536683045686,13.8961101785453,3.60979366453586,20.6258501938309,17.8918984755824,13.1338930722466,15.5369248438954,14.6864202208224,15.3121585093082,20.4916932722124,-5.45854447465594,-6.31852077786865,10.2384608255413,5.47585278943929,8.34027908608178,7.88323955899484,7.03871882024564,2.80960603948516,4.87861590975654,4.46223317622598,5.93585740865473,2.02388332549786,4.27881439306816,0.508865742980005,3.32965155680833,2.12411127739886,-0.962950473146594,0.149749492809853,-3.01574753205004,18.0874359974597,12.3672860224969,9.62809262901663,12.9100008546452,9.20724416021338,11.3966963058338,11.0561525263396,-6.27009482292544,-0.304764351867352,5.23716082649964,1.00967453001685,-0.647249126269038,16.2932231056237,15.6075000352097,18.0231581895478,-4.08549962727416,-10.1131237256623,1.29570794079761,2.63408193357267,7.53553672562031,5.63674334285876,7.94940714661216,6.05585885916593,2.39985158370142,10.1211518619559,6.0191017729996,-5.9116580809691,-1.44126099840126,1.34126509333334,-1.59730053017623,0.467525306626583,-2.05329816687556,-3.57636144066946,-3.3950523779939,-5.12861570374228,3.17928004824523,-7.2075107008106,-7.51373519812559,-5.64096271285929,-3.80599029455298,-7.48439987418039,-5.09185666449793,-11.0870831128283,-9.88146416347468,-7.19309507985975,-9.23514817678705,-8.82649478895632,-14.552240004598,-6.47961265159751,-11.8304355341196,-12.3125488762278,-14.5339991224379,-15.1584117484498,-12.3413047556872,-11.6844164182549,-15.5128156729804,-13.4011451761733,-11.766641774881,-9.17745123943432,4.84200424207494,4.28890855747599,1.42861719343205,1.06408430079962,-3.05758746441374,2.73127935309046,5.04120542273443,4.96026713410952,3.47608032725539,4.667488249717,2.33970761706195,0.167504671113512,2.39770290473228,-1.622449534843,0.592106840463984,2.85072015482185,-1.53937630318943,5.96560982742049,4.94672266930714,4.10263220064505,5.44264875660348,3.43621514315305,-20.850227283738,-9.56963318565448,-7.4988089960716,1.46511991475655,-0.484410616444259,2.71274600596198,-1.29337062013746,-1.88752576993376,-2.4207886058259,-5.9667358244161,-4.09750953785997,-4.87585716675482,-3.68567053031724,-3.38630928096674,-0.269947147714443,-1.68651191162463,0.648136009200913,2.11984459822893,-3.41332989987105,-4.511421610586,6.07501109324959,6.99398201381191,7.9899848045572,7.35272569960203,5.91208481040194,-3.33531367443482,-0.404466676504398,-19.3153497309992,-17.4575907782413,-18.1083809005847,-19.2256320443628,-18.6824833618676,-25.3081094420772,-17.0802774227779,-16.576092293938,-24.1012311276188,-21.9302224762877,-16.8751240302685,-13.8588297055696,-22.3086946059019,-24.3214032238969,-12.1186000437052,-25.4063645572335,-22.7468664281101,-20.2779687049047,-16.0889202563036,4.0151324230742,4.26991963415028,3.97066998088662,3.56950958629558,5.90271316697593,-7.19217368273673,-4.77518558517682,-7.97673519119063,-5.99288558023192,-4.82456597310401,-7.24382097700856,-4.78543150230598,-2.69074482446521,-0.486071266895193,-2.03839209345138,-0.952276675865684,1.19812241747166,-3.15534109289608,-7.02558646562382,-5.8311986016422,-10.0524925237479,-8.50971942542812,-10.4725883572336,-7.94692942604279,-10.81125544606,-2.54579078462392,-1.50446976145235,-2.29481526375299,-8.93582532564228,4.06114103591275,4.42315222702186,6.45117041450609,8.48160240578246,1.44386087385159,1.64579329383638,-0.312289463022996,1.00436882554657,-0.542291646504459,-1.95640661180056,-2.39183428546471,-3.75955957144544,-2.42871214134205,-1.10818906913339,-4.88044048030431,-15.0001663701041,-19.3048287969915,-24.3547383752638,-17.3207422435669,-14.6579142421556,-13.1519188944505,-9.96262352616699,-15.9042010095267,-15.5870026380589,-12.149593316427,-19.0107790015489,0.863274759150048,4.00852876016014,2.21527118823033,6.87898133827668,7.18560775897949,8.0293397534998,-7.75551509287758,-9.39444935693209,-11.7862503008133,-17.0471512480425,-6.99637788256008,-9.41801671605136,-6.887940876911,-8.72424943067793,-12.2629653041703,-11.0699918825394,-13.9729190233587,-11.2223687870209,-7.11800988547038,-8.96518215710672,-12.221402197001,-9.42601601201781,-11.0660315645499,7.37205539012972,4.10813054935758,0.787447463290896,0.476852468194839,-23.3993435978393,-14.7228864623683,-17.8883001315964,-14.678088725609,-17.2418225252771,-20.4886201648117,-10.6559896328192,-11.8847683561233,-9.66091103957246,0.893529193248133,-0.733181295213649,-2.38030103265195,-0.955493935776155,-2.73619333379521,5.60938204448394,3.96679362192708,5.18801647989135,6.38203583934969,10.3444926805028,-5.97492864613375,-13.2403008379933,-4.84262971295738,-31.3891397661496,-8.76337153667667,-10.3040202327451,0,1.89983894277717,3.88740224563854,2.30422625011172,-6.62498059842321,-3.13875969144679,6.38387535802295,8.73358050581493,8.3440019332975,-12.8735560903653,-16.5379126502169,-13.8028186278367,-12.4324471504565,-16.6440795816409,-16.161227930748,-17.8128052459588,-23.9428588888889,-19.9212177375893,-19.8296201412093,-20.6689579269567,-15.9296189491683,-27.7554301546297,-10.4992142974301,-15.1914607286446,-7.92934496253485,-12.5916168594087,-13.9287987204255,-13.0361966744439,-15.2735333058811,-12.5096465234954,-18.2934376360238,-9.64211407920368,-16.3840835844148,-18.4248837138284,-11.3924624798001,-11.8368455385881,-9.63614123295786,-7.18970044749235,-8.21518813167622,-6.15902356000988,-4.77061808004265,2.26099406533986,0.701359827487605,-7.43820540791624,-5.32333336656715,-8.29139063155296,5.36430504065136,8.71101561452535,8.07444142316896,10.1586071595661,10.9091666832667,13.0915268714224,10.2891291929221,-24.5933747695015,-19.914460447839,-30.8499067685394,-12.7370438975861,-16.1469332407124,-19.9376922650746,-27.7618920204636,-32.8869602876718,-7.99911941185896,-11.2801198583602,-10.0196877866624,-13.3988399910025,-14.2431468105904,-17.5791759141347,-15.7446627501471,-14.9772018459433,-17.2868220183062,-4.33650702191868,-5.07731018551344,6.67759765846598,7.51622963029615,8.36868478033893,5.72870557900159,7.54762665218414,7.50074395163202,-26.1731609253654,-26.6192217882473,-29.5228083763675,-17.3664256091809,-20.7214877606317,9.26295763744809,11.4137614739821,-34.7919807547082,-32.9486702829645,-44.6684189100132,-36.206538283035,-34.7361763148576,-43.8749069419263,-30.7638658153373,-39.8503770379022,-38.4592423662217,-42.2313239912756,-30.5720376890879,-40.5939930258963,-51.5355594371166,-36.98042617572,-34.6901180180445,-29.0792201742533,-39.9637596880326,-27.041271056617,-19.8800821606331,-25.0627924050314,-38.8058476970523,-50.7328534263775,-39.0333146899087,-27.2562895801719,-30.4183345786117,-21.9342827208392,-36.1322090580185,-24.0401687736736,-20.6118853259782,-41.2536136753687,-38.3669268712614,-45.6574858330425,-31.9466691370018,-21.3372471587445,-21.8845089009268,-26.4037669500437,-45.7418583354265,-44.8695772917937,-58.6345092851698,-38.9504536846229,-19.7711884311182,-23.0309917288397,-18.2186358835085,-23.0798100585777,-26.5764431539091,-24.5079048853365,-26.0995557623473,-23.5987704294847,-33.4013060465259,-29.1239946186669,-33.0559926198001,-29.4731182916923,-31.829585907081,-37.8738508969375,-39.2607805126738,-32.2749690098646,-34.3806739926584,-35.339508414729,-38.3346815077609,-29.9065201003215,-27.0202238345346,-34.1365573727305,-36.4834953098995,-20.382755318939,-23.0203826056876,-20.4606829116205,-18.6253425669573,-23.3522839180095,-27.985861455459,-26.0882008870322,-32.1938980476298,-28.4971153887202,-29.7647484668505,-34.5938536389359,-33.2226844517903,-41.4533477627243,-35.8860666546032,-31.2847601650151,-42.9581168024704,-35.6441947003477,-27.3563262300807,-39.100398728744,-48.0785732438389,-44.8991196193459,-49.878460724275,-53.058313954694,-65.9837519402648,-34.9466968518464,-42.4167137624012,-30.8700125805387,-27.2865467142517,-27.8631028510379,-23.0876000395446,-25.8761302022474,-20.5246512465907,-23.0165651640845,-25.0236787209336,-50.9180089675089,-24.6591168118866,-31.3913157658345,-16.8112623338803,-16.3249224474957,-29.7237731627343,-25.1132481639648,-24.0421305800581,-46.2043709827903,-53.8839296187133,-51.0317723188993,-51.9397812478759,-62.2140326080125,-52.2153149554859,-55.2159905211121,-22.3429133017662,-43.9919252354809,-21.8276068350972,-27.646393232054,-31.3054661935272,-15.7038197623269,-22.4592734121781,-43.4292430034143,-64.7001907597252,-46.3698778386922,-47.4614778453619,-20.7835614177892,-19.5240861090707,-33.4763663436529,-26.4072832299776,-29.469229448469,-29.4149619911372,-33.6342427174812,-37.6539355523816,-27.8489391313318,-13.372111618109,-15.6913787577334,-19.7719568538677,-41.4557311980051,-57.0104234569179,-43.2549168991424,-41.0075336660745,-49.5161280245628,-56.211221413587,-57.4329381253266,-36.448760859972,-45.230315172734,-64.1756888000309,-35.3183401281643,-67.281398446997,-59.3681149518311,-56.5237193341097,-42.9662367472172,-49.5335100999866,-40.9542489564751,-47.9122691543934,-47.6786220257711,-53.7160499496667,-39.9309376949101,-40.1753014567832,-31.9804519291826,-38.1514948220232,-14.9803369806165,-12.4784969088968,-18.0551655104042,-22.8432099644374,-20.6904902794989,-28.3031217774235,-25.0771864270007,-25.4292834875165,-27.8779077653338,-32.4708031330631,-26.3147476517602,-30.7602893408475,-41.096960726694,-33.8869328180192,-36.4387288495337,-32.4413431706701,-36.2172084562634,-42.8164042303406,-28.7513960972763,-30.8001831820974,-45.3824159054379,-43.2077265994745,-49.0789957800466,-89.1201479934351,-49.9491377383709,-43.3171508063154,-36.0456808658735,-20.5818674373047,-19.7951426383183,-21.3480089179673,-37.7584148657125,-44.7146542880625,-39.1466847090714,-47.1666733180693,-64.8964303219423,-39.7929880775481,-50.7247109153563,-46.9235080035119,-51.2054567719318,-56.130498269604,-63.5268978213218,-57.0129870598227,-84.4279153999946,-49.7587715702365,-32.0503538231468,-35.6522100540018,-18.6245995329731,-17.087889113825,-14.223180946112,-26.6977542557202,-17.459648551207,-63.451972917234,-34.6874863094915,-31.8652304109173,-40.4624225626855,-45.6004741895204,-47.7721946445462,-55.2441995910144,-46.2969279959648,-69.9510299543707,-45.0276096369029,-45.3240047835214,-19.4641316420037,-23.3846255133966,-27.7896871745432,-24.0787832709354,-51.3254975925371,-51.182859108488,-57.0457459794002,-55.1299380663157,-62.8282474598919,-54.9895166260083,-64.8500861101604,-59.6329632524982,-41.8563999213422,-65.9875582507882,-58.4607511288728,-68.540774322258,-39.4214925765498,-61.2619555128519,-52.0263771225094,-22.8100017086346,-24.6760311478557,-29.6457768630734,-66.5139804818099,-55.6895649434009,-77.3821763131003,-20.8761571732775,-28.5522867986834,-28.6115367362209,-33.1959548863129,-37.0676137653555,-35.1869163589062,-29.2236613066076,-41.2055253392688,-26.2128508622196,-24.9069630013678,-24.5942019210751,-32.0980526012721,-32.5115091110616,-32.0048546988723,-50.7818422474901,-50.950174761395,-27.2896151661118,-23.085059524749,-23.5424764679772,-31.607436626942,-26.3221656805928,-39.7153099312332,-47.1877320795303,-83.1356257049869,-36.2404497508334,-142.765223961988,95.4302937355706,36.7281428640109,-198.599408093078,116.018606942226,-252.544935068847,241.055068579432,-300.719144916964,250.467520729514,-327.757248860873,320.957239325997,-351.485527671555,339.102930464979,-327.177824053922,-341.146013883202,-321.599457271565,-281.300801124683,241.067974773953,-234.757050873151,169.541602400156,192.279821546772,-177.271932780378,44.3005785401802,141.785610549285,-115.371027492442,-41.5162342584265,14.5521277184763,5.70731933268681,16.7035985389106,9.69227919351221,19.8839787720516,10.1651513045577,5.36861462666918,13.3910152563615,11.6242974487674,13.1664776985097,9.49845226148167,6.69927184989798,1.45742231198515,3.59225574963272,1.28791108729936,4.39308230937916,8.3990499720144,5.84308499354741,10.7493575473788,0.951637742952211,-2.48539784260126,-0.777567105196542,3.82038890578953,6.47643121383768,44.0195211772619,14.0916453719304,64.1977964253355,8.63314647769408,8.1154538832647,53.2735371565885,-6.89465925059262,55.2871789791379,62.2610353575003,65.2934203959694,13.7047735540433,73.1024678435984,57.3766789076409,66.7763412669789,77.3733871983554,61.1211809540493,50.8599533547317,54.3235953461871,81.3930890583319,51.7036382180498,45.4059852158421,46.0581195733077,40.0346786716489,47.6290141188967,46.026933646136,41.4775561110157,36.5044800705324,39.087765731028,37.986640404241,33.8390333505136,32.8650531588719,42.6411391693561,34.0196462197642,37.8494697562455,29.9857879465679,36.8679388258071,41.65741783893,33.3405070597929,42.3078300718268,35.288985393239,46.5664538725581,39.2603750254318,32.4318764848156,53.2474039117489,50.9967818503783,44.0959509699272,45.7792000956758,44.1696620783301,39.2315355816544,35.286056751418,40.9188009586219,33.7063019420481,29.8369716231631,-0.632692299820322,24.8375237240927,63.9646534906594,43.4177863496408,19.1875174476255,9.4727932019372,-25.9287161199979,-30.2263762539173,-34.7779305634217,-40.9868949198088,-28.486150397946,35.3458361145627,10.6657893076068,26.0189501402879,29.780337967034,44.4220797275611,8.15097754673298,-11.5612209894299,-12.898989935079,-11.5962568936076,-17.6929289907286,-15.8063370951937,-17.3610935948159,-21.1609927443658,-16.8150813807482,17.5044791188999,14.3592602713188,13.1951075435585,11.8263784460892,14.0697154492392,19.7300355133534,-10.4190408815428,-0.31995516866086,-23.1179524193043,2.12119738899367,-4.70838201441128,9.46571013179273,-7.24161533046833,-10.0836049721539,11.3271701377176,-2.8371813091844,-1.93846988787952,-7.93430259070161,-11.3028813681963,-9.41327984814129,-13.2660769686791,-5.45281271711529,-38.4679546692163,-15.8067727698933,-47.8474653071453,-48.1137947480136,-52.018170566693,-71.0811261147115,-27.7039995179519,-21.7316166640165,-34.4695246610968,-20.3616702877603,-24.638364790697,-20.2253671838722,-19.2206448448771,-16.296389220904,-18.373296171525,-14.5583623927327,-15.1366733836995,-28.9109808706547,-52.6924140864695,-39.3337229150596,-74.831092546391,-68.4864107600355,-71.1442707523693,-51.6817431794999,-61.0734822192388,-23.7379577929507,-52.7764137359387,-67.1682159983124,-55.0445507507254,-69.461576584625,-67.3887109112133,-54.2112547892797,-38.9220279389943,-52.8743695563643,-81.5292937207159,-52.3676649345302,-46.5613529019165,-40.7201906862063,12.4568435469108,3.40521752325569,-0.792488931933759,-4.928609447641,-1.80715755512643,-10.3100824859844,-1.24828569926152,-2.0901085380206,-10.4109585103326,-5.39903493312376,0.223680508386897,-20.1814294490504,-18.5880710297652,-15.8664176996215,-12.0254668471486,-9.38802975086207,-12.7844122122646,-5.6980981404409,2.96910888267489,-4.94295321882949,-4.55850067750384,-5.830048569663,5.97249671701492,54.2328549742619,30.6110467080612,-8.71675363542374,-80.0337900409768,-0.869371497972967,-9.74414538195634,-38.5664288690622,-37.8508071615088,-37.9913633751152,-34.7215064373483,-36.1155133751374,-34.2665839405615,-25.4642186156507,-31.4028018578498,-33.8678097170051,-33.2720845545103,-24.6736958212256,-29.8588458636653,-28.3293614509831,-33.3523740878504,-30.086137819198,-28.7752219792348,-20.1239668763429,-34.1976081290549,-16.6680357181654,-27.2569692119338,-22.9191381245855,-25.4369375074342,-15.080195974729,-22.817681201458,-17.6064584715341,-25.8648855810695,-13.2178591321938,-19.8313339620164,-6.00447130691278,-24.5293705178836,-3.91029384382501,-17.7665355661452,-8.63444687420207,-10.8795735417781,-1.54533058238832,-9.9351625450725,0.0534429106161145,-10.0839997483412,-3.94216105310886,3.22671794220581,-4.28949785176374,5.67879412669498,-4.26462577132219,4.92673489563153,3.89873576401712,8.16137840443217,7.1645019308675,14.1166243612577,4.6831814566436,13.9223157578623,5.57856285459192,14.4090148362064,20.1110209379941,8.91588440865362,17.5197113070178,12.4322435877102,18.5892423116933,29.1467097972694,20.4389601828768,22.4703319335192,17.2761469518044,24.4258268678992,32.9242613678117,27.7275769072589,27.169329374094,21.4937510722346,30.8512304545944,31.5475611060004,33.5564742098708,31.6462950739596,21.8969494482556,33.0586256853794,38.0903995350172,29.7840370340297,26.5509164541528,29.9186779769255,35.6138872952372,35.0054847012737,31.0676762579731,29.5131394220748,29.3729752540919,31.314378535705,34.7428218068663,34.6691683282102,26.7046700358316,31.0884262921627,34.0402529158504,34.0608004789221,30.161144085383,21.9240264712453,31.2597341689203,32.6965878547091,28.3984124080414,23.3592443511858,16.338534811073,30.2263077178605,27.8338048626351,25.0400332775881,25.9408639827429,15.387587850381,25.7121893342895,24.2074454335405,16.4140631453232,27.1748644809064,14.7013018405659,18.4969383788952,18.7028226088426,11.1588163099339,17.6204397043393,6.68308954001049,16.3749780469204,12.2094190333478,3.81932948727706,11.6035440864636,1.05479849984634,10.7636361084047,2.98557883184631,3.74151418946869,-0.396605341216355,3.05977294830158,-6.96962769899914,2.52239636715847,-12.1764873423323,-2.58099940099177,-18.1191814582095,3.46044888748066,-11.7585653568389,-6.15642043020341,-14.1237003861518,-5.60147593867804,-16.9019829458948,-15.8652428901249,-21.5435630431697,-9.77770906035112,-18.9986200940654,-11.5273029565161,-21.518173001361,-24.0960678413685,-25.5491107832159,-18.7358978727238,-26.4322578712219,-20.6416084049314,-38.6620448466563,-23.1038937977936,-30.7369542347968,-30.5727960575006,-33.5665097756198,-24.9803438736757,-41.6001280317469,-27.5094701050891,-31.6604147938505,-36.7220779403429,-35.065685358556,-29.1972023831417,-39.1633090108649,-40.3125940257992,-43.7476564465552,-101.212699244957,-5.10014655333258,-11.3691739102287,-138.137116944819,-70.9113827784523,-140.840280392129,52.0552653584017,8.25926253893982,31.7790838963403,-4.80009472346552,-61.9315979020974,-18.9526224912103,-202.91579631822,-138.46847539663,-211.53647111353,126.365191575704,20.8178407656757,29.0934152809482,97.2905774043243,-35.4795803015972,-27.5026970169686,-191.771043019246,-274.127427772265,207.500402065278,151.309802927468,167.279095861007,-322.938955844143,-35.5805808688573,-364.221788909423,-238.371615133881,-353.628077308109,246.717587038562,48.8270664733969,175.239694061067,258.91930398475,192.406349993342,145.259510227707,-48.4671686809111,-253.694583692246,-285.818375931779,301.822638035397,252.060268932183,344.638617946508,279.342682367374,-343.536684281855,-45.2233182155604,-409.545188397284,-311.297343830846,-313.639091801065,306.95221144591,62.3221428586349,283.996754042139,344.106999110456,313.73748200199,-56.9092837586432,-330.983261420379,-312.359632934381,52.668701612423,354.052310809336,407.448064452971,327.458789119636,-364.245067093909,-32.6884185030619,-325.582453319158,-269.369443878014,366.954010804725,63.9635091947868,368.194252613752,-398.438571925525,-56.0890764608002,-358.990716477413,-317.270846890062,-212.075003741569,333.603806381164,277.617152249065,399.279307531792,320.967522729195,397.213981214399,-44.6180911387209,-301.227185599388,-214.108075386568,240.374336940062,244.75339767016,358.271735456959,283.053617163183,419.084480626032,-286.468906331262,-50.3730500608073,-264.112432291775,-260.134278973907,-229.589812058713,153.658089152356,36.9911625060291,262.880016601146,229.064103081023,389.114189952729,-43.8305659854943,-195.344018863762,-127.612306002234,102.470674062263,31.1098949534162,212.996860176644,158.549995795191,-185.424563091956,-30.7332663990817,-120.857926408145,-160.591316376369,-65.7557806570909,33.5909872386421,27.5732098328982,151.380892994529,80.6615851846974,-20.1636379235405,-101.934599995959,75.0962492645885,40.3290154603857,-43.5673361395117,-8.53673297296823,-16.7784517966408,-6.33242908066114,-8.57766380910895,-23.125813646808,12.7365050186643,-4.50360563802972,-23.9492849931169,8.68196179121955,-30.7860266424431,23.7130794499565,51.1310912344654,221.053645429828,13.1790615111612,-30.5397988490553,22.3520259272396,-53.7733811729761,32.6291305300731,78.5109648511706,347.787342580243,19.171667209075,-31.2132593856768,31.205875167167,-21.5325363487321,-39.2546507660228,78.7618431097734,384.13644593205,50.4353591398172,-40.8885647266599,71.4609106719805,361.019021615402,19.3005545998197,-27.7847865631394,19.6964680919263,68.1273021042349,312.09441290002,15.2123719344791,-24.8891208369533,13.2198772289781,27.8520273922483,-30.9506142690721,10.4191848269981,20.7292002869414,-6.49789950167669,2.41773822131603,0.815532364982922,3.62551757656756,32.1712541684836,29.771845713773,57.1331936720929,50.5393987106038,86.774433452947,55.323244637125,66.8598516327403,57.2353932940335,59.2312652411035,49.8606418555275,-0.264103525326443,1.14031320714416,30.9014846816521,41.3494326221846,53.0345050384609,60.4299538186741,80.5570953670599,59.6991874927246,52.4899990288393,49.9012408353298,7.97302045726226,-9.50846801096153,29.3405903748488,48.7303519349172,76.5978762172167,75.7163931952703,66.0214718324168,70.9249465993826,53.0775768396087,62.8551894613388,46.3184385748082,34.4800727007285,56.7532685648655,65.7752426707896,52.9459534387212,62.1631565830207,62.2073127146974,53.7904720311015,32.133022566907,34.0875560326681,54.4347867614037,52.5829593078123,55.7498279021572,64.881562035041,56.2457552449442,57.790461505113,45.6879013623662,24.7564421015885,46.068051447701,44.7381212469468,24.8718203550936,26.7225676914294,30.620839655418,49.3376582790171,59.732753214665,44.7447489548574,46.6573220741066,56.4560655993637,41.3892302377075,-2.3756330039374,-8.96448476972657,10.8831552163458,87.4771917051273,73.5955228917098,67.0243115193648,55.8801684029721,58.6245633606922,62.0540890255477,66.9828671754875,62.8844043907499,49.3819048728183,394.491754215941,3.67115892473539,305.296331314066,435.350825237806,75.9780690340668,68.3228544838756,54.324521941376,49.2563770178439,44.4456833063254,66.9645322039344,43.4497242334945,55.6128734799015,35.9545696863763,32.7933422322467,41.6768272584266,39.2205808731881,49.6320170005989,47.0198065136301,47.5660578821023,41.2625481411936,48.078815499815,43.3148377111555,32.3727827208913,36.8725796371233,33.9190122447338,37.7201815952217,33.8844111078409,37.4873745829283,42.3043241738973,32.743691746598,39.0249699676149,37.8678859044299,35.8220338160466,35.1713616750557,29.7248326861202,-1.55907551649972,-9.96856637027169,11.9460329352167,35.6205626003639,24.4054098793165,46.863612900512,44.7696438702368,55.0608523490222,62.8683790502266,37.8837349379027,36.3377177950134,33.8303104225955,27.6539833494959,30.8665743480466,31.0308586450151,28.3708322234865,40.4003648586029,4.65546726439034,-4.65590065054734,-6.58872151118398,-8.2927138955437,-3.93081948039851,-12.2990357533411,-7.46891845017712,-4.44549910041929,1.33689575859412,-1.37928982999927,0.771394879516358,-1.13169159771247,1.35562807676908,-3.81771312724474,6.19851821106713,4.64089003335654,-2.97308786519316,18.6251205300078,41.9133625357891,29.6863293594924,28.0849832563222,51.6467815101981,43.322362759744,33.9703005255933,37.514289091127,35.8587963683382,35.3779709561371,39.2840994987544,42.2615071536129,25.0305466283752,43.6806933540984,35.8827532616779,49.5083916431562,40.4576018682286,34.7038916181814,44.2939376859685,26.8591577125386,59.1284228232302,30.5385499558072,30.6209197372598,29.6031237701463,33.4687534108931,26.6837744965696,23.5651274990376,25.6968084159246,21.389301133878,28.1063826349122,23.8749179095607,22.7219276512494,22.7345076815372,17.2130573919056,19.4563076812819,20.3925369801313,21.3744781360628,18.9149300453776,14.06473779449,21.7464261328041,25.0060133099756,26.5279270575954,26.5945554536334,30.7957662375392,23.6624693255878,24.0679015917539,21.4266440484806,17.1884972173679,16.1814809190481,14.3567230209682,31.5537299781199,28.5181138069176,18.0332304338297,18.3247522817708,13.7171624626585,16.1849304431182,20.3947036636525,22.9624067334502,17.0141292816835,21.437866312242,20.7282118043751,19.9239414576649,16.6603949609315,17.1016133506783,12.8961541397137,15.5968444227255,14.9002999832396,12.5738890776044,-0.53437918541889,3.17189764681487,2.17888800893191,5.73058730071216,3.69400957959854,3.95385377390502,6.59025631159253,8.16371950104416,12.3664149012561,8.79783780412888,11.3697672780246,17.3167857780989,14.6431400360053,8.97737569240418,6.80158154080706,19.596766185352,9.91094728872206,13.5418409214705,18.4326945391624,22.1645613963313,16.5364884488106,-17.2245756588876,-16.5487008458626,-12.3044284316604,14.6672733632244,141.267117782247,13.0277559046518,40.5521646899489,37.9716347248587,37.1086372643421,47.2810437860068,62.4473179679612,31.800197599296,41.2493697134608,53.4889658611915,31.4785554307431,25.4566467105875,17.5073989234316,20.4573644220361,19.0867535027537,20.4276926463413,57.2016711143551,39.5735510458398,36.3274845646041,47.6366215533684,27.3944231930332,31.2390210621791,23.3626721416856,28.6089888394066,28.5224674432189,27.4765284040141,22.1408734906276,24.2335500763874,24.6813510999578,21.9544569479048,27.0171676392797,26.7267476238495,31.9483977844886,21.0299451340946,29.9639916733232,23.8727057506188,33.2163919732281,21.3010021870581,17.1595247751948,17.0153462044149,19.7503064821333,19.0965016540259,17.7758443518785,13.0036401160371,15.5390698405823,13.6261173493838,19.5927157503389,10.1912224676526,15.1617375158472,17.439098868732,40.6739172141591,46.4997759175496,19.9951593773384,14.0784412527988,17.9821804233616,16.4488425432513,19.4908973906911,23.1027156009865,13.821067716782,9.47145166617521,9.73035152527138,11.3213461497222,11.6238762993458,11.01238540664,11.297113783448,25.4578444077894,18.6317972555008,15.6232784317051,10.583414441945,12.6610014429731,14.0062460411235,9.55867158002035,11.8963973660939,11.838556176759,9.45518570428827,5.75071041320062,7.76189172283527,7.49133079903054,6.02409417486267,2.35554347261816,2.11556102523571,19.3142837179733,13.8754662622056,-16.4367914075132,-26.4845065953885,-18.8610780643923,-23.09114871926,-13.6109216088333,-28.3129835472226,-11.25510609906,32.7910723237253,24.4998678337133,27.8685575916595,24.5828802535971,27.2625419965677,27.9415631057443,29.4180924651035,24.0922671892695,20.5408248926873,20.7770527386464,29.6340741369984,30.5711880238601,26.5976615199629,23.1058186484434,16.3911021201547,23.6147848258291,67.3560492944387,50.6214124473188,49.4377572784505,39.9033701855728,25.0344421902232,19.4642374328625,33.0690241824999,26.661678878842,32.1493650360749,38.5695439726525,16.5966967267639,15.7948781557877,11.224218622004,13.1507044431274,9.71485936282319,-9.57898901892069,26.2723982348898,22.3633967506958,19.4040971867609,15.0403916795247,31.3780593526266,19.8211387091279,19.0045079321061,24.0585924498609,13.5217820794902,16.5429440434854,15.6703143370605,9.78068217930549,13.5222919799626,12.2602708654534,7.23706577006712,9.2971282286582,4.55492881977216,6.95402567890528,6.68075356198564,7.33919043650966,9.95262277727047,36.2004606858973,39.5309748157502,25.4107732832877,24.3664255233946,31.8254081163833,25.9453832914357,29.383113290364,27.534203444247,33.7276982044014,13.3932379695668,-9.26795304907847,16.6247659181209,17.8862638343698,17.0304495504744,17.8546574567275,34.7486416291782,30.6365402047483,20.8982739398186,23.476107966357,29.4728748792992,31.3352240893955,42.7013181099944,23.4059649308066,21.0156594326909,22.0183794681703,-6.77066860867596,-15.3581400556058,13.4704655123909,25.4216245046985,22.1909182723522,26.1121451708672,28.2216410431071,24.1714046730625,27.3983793974853,19.9260391768325,-3.93210124278786,-1.95289945461266,-0.250135181985234,-1.16586717812213,-0.135761093415147,3.44553731409449,-3.63835049103132,1.43707932548467,0.54101430145547,0.451540179142934,-3.50139812312082,-1.77956704848118,-4.49590947019149,-14.0733933404519,10.4991638267591,15.7848426349046,13.5331168425251,17.9239723019826,30.3901151485243,-2.40105437523225,-2.94293492350765,-9.12935170834023,-8.12618232312657,11.0739025707316,8.13301131158323,12.6531261170988,9.6588354455666,12.4320344554794,10.1147609647696,7.2363622765922,15.2917605089624,22.3709912851841,21.1162127010662,31.3049878503664,35.8786760216879,32.3993044088257,28.1613626108874,36.9777954960945,29.1568460411539,25.6116394108076,27.4357431889819,24.1217792570665,21.9702538356112,24.4170423985769,24.5155108576593,-6.08263542117968,-5.87751220683707,-7.53416298653324,-6.15913463856346,-13.185096756322,-10.3989229105205,-9.34841819509727,-12.2837503938276,-12.7786556720164,-11.1556724165238,-9.34185086844125,11.3815113565253,14.8692671407938,13.1988392296897,16.0903896391801,14.2873070605359,3.71084910053907,21.1883436962666,18.3974526825616,13.5051072268183,15.9683806838906,15.0952829556457,15.7408310920892,21.0621717119145,-5.61191399007707,-6.48792799802074,10.5257370219131,5.63101516618416,8.5720990609985,8.10510946765271,7.23626404073479,2.88709856466677,5.01651150429295,4.58880244328197,6.10097072527779,2.07984065846865,4.39818880971376,0.521624276371842,3.42142905594459,2.18483310213988,-0.987941195017731,0.154920639800767,-3.10059165002445,18.589165922238,12.7128259476511,9.89846471980878,13.2706993892423,9.47486697707188,11.7203211947011,11.3712576779075,-6.44754698283395,-0.316642102170396,5.38452186811248,1.03766214946491,-0.666058385086028,16.7417371860069,16.0507833207623,18.5256195340463,-4.19696219198523,-10.3965758006641,1.33065403875503,2.71005977250009,7.75022167775419,5.80142459782906,8.17880112231947,6.23129683142226,2.47245100663707,10.4095619485962,6.19257260249664,-6.07611545607025,-1.48178893188307,1.38026823612899,-1.64312843560059,0.480366607703067,-2.1134610927956,-3.677798983064,-3.49219654939708,-5.27097948556649,3.26736550350037,-7.4139869141007,-7.72623697275307,-5.80046367932918,-3.91671291386876,-7.69646050231446,-5.24008005230946,-11.3951597683554,-10.1555582670371,-7.40201172207161,-9.49532130859897,-9.07667660588362,-14.9536121277315,-6.66838004068379,-12.1621920264115,-12.6630739213429,-14.9302108429889,-15.5816662649603,-12.6884832883368,-12.0102604626628,-15.9418666527171,-13.7782804206416,-12.0961344799339,-9.42784600050037,4.97428724323006,4.40780894237039,1.4649820683125,1.09345009611999,-3.14395948288808,2.80586740623562,5.18363763117709,5.09411484595842,3.57517971085218,4.79780618022807,2.40555297326263,0.172137746775979,2.46718771975862,-1.66759835896252,0.608885692645311,2.93405769969371,-1.58402541150363,6.13717739179289,5.08501673658959,4.22396609165726,5.60637445979704,3.53775510136994,-21.4246189235088,-9.84382584058397,-7.70935548170974,1.50755130738524,-0.496922586991246,2.7908342523961,-1.32940811251267,-1.94362279452013,-2.4901322018834,-6.13807882385013,-4.21254683325598,-5.01460068363172,-3.79986385339033,-3.48874249811384,-0.279235945856745,-1.73578365314332,0.665887413221816,2.18386958467388,-3.5101075444793,-4.63536553696509,6.2452488315077,7.19091577991347,8.21731931794136,7.55134029919121,6.07979946917716,-3.4332833013255,-0.417601997525514,-19.858043528646,-17.9462486736628,-18.6240713102903,-19.7577323051648,-19.2097606028293,-25.9978268596798,-17.55363653457,-17.0328466255717,-24.7715411505309,-22.5417285089225,-17.3425533901135,-14.2555061093975,-22.9194914717323,-24.9887361869805,-12.4637497531363,-26.1044871037694,-23.3721420786756,-20.8404898349891,-16.533606372446,4.12895068518321,4.39635690966485,4.08874730148573,3.6891962670327,6.07616683618759,-7.40682720117009,-4.9051990566312,-8.20150526297029,-6.15673674471942,-4.9547744768353,-7.44455928917111,-4.9182074427308,-2.76471517287907,-0.499848406028682,-2.09792352056966,-0.977103518799963,1.23197350584253,-3.24241343505531,-7.21804042688124,-5.99653356072721,-10.3307380081268,-8.73670745088851,-10.7655969825815,-8.17002097657876,-11.1079528034749,-2.61755839388537,-1.54345752624408,-2.36126290489446,-9.19114502993467,4.17242972116618,4.5447953912002,6.63062776292245,8.71543885271374,1.48872966854537,1.70249382567269,-0.321579395878453,1.03767519039377,-0.562463229169249,-2.01538359178038,-2.46718420017873,-3.88356917860668,-2.51340036428746,-1.16629899391558,-5.02978914301711,-15.4181982326059,-19.8378696122791,-25.0357532477149,-17.8045236200924,-15.0672705997282,-13.5400001322147,-10.2522618965041,-16.3496864363821,-16.0197684200547,-12.5002440010123,-19.5459830000217,0.894149866111078,4.13633483578597,2.29002062640482,7.09079588863123,7.39533066843476,8.26692864565213,-7.98428021565499,-9.65153175473283,-12.1074440775869,-17.5095370006181,-7.19090100344977,-9.67713847227176,-7.07917259777551,-8.96784747749397,-12.6051805088366,-11.3712735980698,-14.3554377506541,-11.5351744657505,-7.31916869580425,-9.21705882314755,-12.5649871120144,-9.69300975483485,-11.3770101598794,7.57637824944647,4.23330509945129,0.810551265549623,0.502564108975044,-24.0452397637544,-15.1311950366005,-18.3812617392427,-15.085614674806,-17.715734270315,-21.046832720404,-10.9619290592655,-12.2217329807076,-9.93975292476442,0.923109226879159,-0.758398014130688,-2.45350196511917,-0.998669466524812,-2.82558648984758,5.78657476455724,4.10372467086833,5.3519201269664,6.57483107003756,10.6454755274549,-6.16028012426901,-13.6050254388186,-4.98084990931128,-32.2513494497142,-9.01991166214793,-10.597800478342,0,1.99368557574406,4.01857227116198,2.39602256887742,-6.82330662510039,-3.25346740459673,6.57784748617741,8.99038709344801,8.59716699183964,-13.221956380272,-16.9895266773864,-14.1934043420759,-12.7730643457958,-17.1059467196825,-16.5825513793943,-18.3140289518881,-24.5852411360942,-20.4614027873011,-20.3986425541429,-21.2491628688618,-16.3634340976986,-28.5147150719585,-10.7955843393438,-15.6161875621868,-8.15568013266748,-12.9473174875896,-14.320415170445,-13.4131435722096,-15.695685817825,-12.8612032784534,-18.8028802809886,-9.91991670351611,-16.8360929261012,-18.9422049700488,-11.7153146054372,-12.1731840865892,-9.91985643460334,-7.40216155635939,-8.45509318638139,-6.34231254118698,-4.91613231262628,2.34820193813244,0.736292946380501,-7.66595807016586,-5.49363516394636,-8.53718378722043,5.53325423538453,8.96106236645196,8.31409894550105,10.448359059967,11.224262040023,13.4664608534299,10.5820794454117,-25.1496298960744,-20.5822955824829,-31.6714307612489,-13.099957809468,-16.5890947828526,-20.4897834249621,-28.5299333903648,-33.8098761724364,-8.22575144353816,-11.6089713206577,-10.3116641997894,-13.7811021165671,-14.6511083321901,-18.0700651913675,-16.1795073179429,-15.4023825994783,-17.7748958086427,-4.48227923274698,-5.24604755860847,6.88167583185467,7.73398920050291,8.61489346992765,5.89823492301465,7.7653866577194,7.71359835435596,-27.195462220741,-27.3571843042486,-30.326121046104,-17.8493692466685,-21.2946365001391,9.52801134062795,11.7352078400925,-35.7498361604416,-33.8641591669207,-45.8715176220004,-37.215846534812,-35.6883165411071,-45.0793628363658,-31.615926003336,-40.9579758289228,-39.4989460046371,-43.3979968440984,-31.4124181935045,-41.7622244621794,-52.9529622665673,-37.9794620522497,-35.644650090035,-29.8795079573178,-41.0700921083983,-27.7850960819245,-20.4385463047123,-25.756039122076,-39.8908608032969,-52.0543837640947,-40.0842486561864,-28.0043116660838,-31.2608027253947,-22.5459634611239,-37.1116174417182,-24.700046584443,-21.1840635003997,-42.4201703652329,-39.4124194646714,-46.9041197209343,-32.8167192400468,-21.9350037524303,-22.4906882996277,-27.1396313287886,-47.0066920821307,-46.1187173811565,-59.7764326756632,-39.8816798106889,-20.3225077896388,-23.6699391779114,-18.7315064172416,-23.7192077717712,-27.3150551025986,-25.1832375047216,-26.8164907156876,-24.2481411590778,-34.3135095006776,-29.9328650078958,-33.961226298414,-30.2973530986031,-32.7097575322602,-38.8941021071068,-40.3407702857851,-33.15815279484,-35.3290371090307,-36.3150470433648,-39.3923366840328,-30.7312448909746,-27.7797655383758,-35.0903872556583,-37.4879610631188,-20.9435658851158,-23.6445983108107,-21.0346730295732,-19.1361446350891,-24.0010348676162,-28.7567908406769,-26.8115934374667,-33.0858336478837,-29.2848532014676,-30.5859172809219,-35.5399475235114,-34.1279087980263,-42.5709986590896,-36.8774883297189,-32.1504509102031,-44.1193706876101,-36.6215703011262,-28.1058518415732,-40.2036431265014,-49.3862114960527,-46.130486370383,-51.2813436392857,-54.4763328247317,-67.5625478743345,-35.989716601325,-43.281098068683,-31.742105937116,-28.0512137322627,-28.6470609185796,-23.7090937966782,-26.5884924218393,-21.0907678332434,-23.6584395703426,-25.7201901517208,-52.3296562809036,-25.3461954923029,-32.2656883636587,-17.2852736574406,-16.785141415032,-30.5516198654518,-25.8071768667742,-24.7160908500876,-47.4674967129387,-55.3176222925522,-52.5543350869737,-53.7074133439952,-63.7312405537672,-53.752740902162,-56.7999605895372,-22.9917351027419,-45.2030303367435,-22.4302342727978,-28.4052872068939,-32.1607962069161,-16.1392094766073,-23.0868934679163,-44.6147093007121,-66.2305110950226,-47.6690899763543,-48.7691244425757,-21.3630579037834,-20.0662822994686,-34.3844336504325,-27.1371564627504,-30.2869500905365,-30.2379343860905,-34.5595332391261,-38.6963154115572,-28.6235790135493,-13.7500387778591,-16.1277411730703,-20.3176464773524,-42.6102556990455,-58.8871824872445,-44.4491400563618,-42.1320233056576,-50.8829382996652,-57.764063350949,-58.9607503926058,-37.4587827426019,-46.4736852097702,-66.1387732754666,-36.295228057433,-68.9256389685719,-61.0497844778487,-58.1230442873318,-44.1540930679832,-50.8803933773202,-42.1094307577639,-49.1949682097531,-48.9520423545381,-55.2522030273645,-41.059871224388,-41.289997801071,-32.8852545468104,-39.2174015587607,-15.3907720521578,-12.8294859958209,-18.5532601597458,-23.4743259855165,-21.2750448375918,-29.0947997078772,-25.7772280484702,-26.1236235481531,-28.6484843900226,-33.3583679102132,-27.0481624686641,-31.6178895317767,-42.2540707688933,-34.8281644637063,-37.4401418829821,-33.3215436926831,-37.2297087623952,-43.9717544147229,-29.5438354540203,-31.6447124301489,-46.6247090328471,-44.3519510728955,-50.5636120439077,-91.0380892054278,-51.9688555499044,-44.5123329248207,-37.0364967956355,-21.1456223806347,-20.3388344451968,-21.9408261806386,-38.8239847206966,-45.9661649760238,-40.2049955929622,-48.4444263791271,-66.5969060049822,-40.8840032423944,-52.1005281045016,-48.2651934663525,-52.590953238453,-57.6028625444716,-65.2322654383911,-58.8296348490642,-86.212275616767,-51.9576313772877,-32.949287341867,-36.6207552977117,-19.1355125198511,-17.5640197027838,-14.6171019077915,-27.4256135941811,-17.9454289786003,-65.0251514691489,-35.6466932307296,-32.7368620461614,-41.6007585056548,-47.0584691830285,-49.06330489497,-56.5631262243043,-47.5222905211854,-71.5578091408571,-46.2753673456872,-46.5749521372623,-19.9984994770122,-24.0282616751422,-28.5561849604062,-24.74670488213,-52.7521984549497,-52.6579374518245,-58.8330870956299,-56.755366105366,-64.307687592552,-56.4811651494128,-66.4713954498556,-61.2350906076317,-43.9268637428336,-68.0823702084567,-60.0757514204115,-69.9816260516367,-41.5156685877637,-63.4872133781545,-53.429379784858,-23.4498417902167,-25.3521413970878,-30.4668563728982,-68.1640036176761,-56.9867556032597,-79.1779974125391,-21.4566895434375,-29.3325578619731,-29.4011059550406,-34.1341847722296,-38.2239827013932,-36.1199647141992,-30.0230376764928,-42.3319117999626,-26.9348134394107,-25.5992674720944,-25.2604552827676,-33.0333604759469,-33.4473929428796,-32.758123240738,-51.9672339762977,-52.0380833285623,-28.086189692495,-23.7603521053804,-24.4711279229674,-32.6415462203652,-27.9878502975361,-40.8392348374692,-48.7225353454198,-85.5727234623186,-37.2949983570965,-146.910028873555,98.2058576999449,37.8051868343576,-204.429564632815,119.369319165994,-259.919588782659,248.055840672981,-309.512479743342,257.715429529366,-337.347202879279,330.271802775423,-361.700453548318,349.018682024833,-336.686917486223,-351.137340710741,-331.032339939507,-289.516716369939,248.104188034065,-241.593625372904,174.478990441229,197.798252688289,-182.430336854958,45.5807537763341,145.846943001608,-118.730252963715,-42.7381129155415,15.0102830054769,5.86937451367072,17.0764604224996,9.91423909150119,20.4837391622873,10.4383597810817,5.53131426372755,13.7805755561493,11.9583051049504,13.5179380457856,9.76652026569968,6.881650450212,1.49492890674703,3.69627761129545,1.32065725139032,4.50978376177041,8.63830144121595,6.0167550364143,11.0449650194658,0.984383842649544,-2.5563272448924,-0.800483783335806,3.9241420785193,7.35533364108658,45.5145764028771,15.8393989674845,66.3811113549387,10.6704055048454,9.96291176947526,55.1038477741186,-7.08039401438453,57.8268330052598,64.0466767388501,67.3248175245694,15.6961364467636,75.3607943396466,59.1070345204309,68.3573260523194,79.1997685986579,62.7974633342591,52.2515164758442,55.8619100546587,83.2739601132461,53.1635712054555,46.6637239358515,47.3526581232958,41.1314334160901,48.9239386316951,47.2888451743322,42.6424896074051,37.5006858148637,40.1696505604221,39.0506256579731,34.7725271160532,33.786264965808,43.834565508018,34.9526330536835,38.899141866454,30.8143993804721,37.8922183298492,42.7920371502814,34.2726002964818,43.4619696695684,36.2508790270996,47.874355239597,40.3428465310467,33.3263098657912,54.6919369922409,52.3779232540073,45.3072075840501,47.0096826063219,45.3776888515723,40.3221174445135,36.2588675181078,42.0623110751101,34.6196193767786,30.6474445683422,-0.650482175073074,25.7152968767098,65.387949131911,44.7287432227691,19.7242239208475,9.7364839758434,-26.9271056278507,-31.0709957293383,-35.7351392817765,-41.8101705724264,-29.5549241417931,36.431670935242,10.9606278683961,26.5725525242208,30.6648074432528,45.3053159985256,8.37862873152731,-11.8817178551108,-13.2560592291475,-11.9244293706756,-18.1649946583106,-16.2446996507095,-17.8435026052223,-21.7320611092879,-17.2931497324337,17.9846421969523,14.7731389631853,13.5684321833224,12.1631925309893,14.470833907083,20.2712852381397,-10.7181249180924,-0.328001996814764,-23.7647047985205,2.1818164886851,-4.85080306139604,9.7356814927079,-7.44726334679849,-10.3609418970901,11.6447598348594,-2.94716109141562,-2.03123647757411,-8.15811877332793,-11.6191145829046,-9.66112312310696,-13.6378118613969,-5.61133833117996,-39.1839507703402,-16.246111762023,-49.473807467222,-49.2107904439583,-53.3247287249301,-72.5350864262077,-28.4759107385988,-22.3324100013668,-36.0359863379786,-21.4557341272106,-25.302625717458,-20.8013357768562,-19.7571053523136,-16.7462386717809,-18.8757695744164,-14.9673449469262,-15.5553670888755,-29.714056910034,-54.1081131296511,-40.4262106655718,-77.4761634537717,-70.2227953524325,-73.0310636571869,-53.1048219033987,-62.794918489819,-24.3862352188895,-54.2509169440576,-68.8374444398545,-56.7131837147046,-71.0224656224616,-69.9670173626398,-56.2251678879183,-39.9924856805665,-55.0803985639505,-83.279476426489,-54.6121793734157,-47.7160345762833,-41.8518703953877,12.8112673890144,3.48661437821876,-0.823014104652683,-5.07305378619922,-1.84790927381084,-10.5547341958386,-1.27954197150405,-2.14303944949217,-10.7331065811819,-5.5477065238086,0.232749841189704,-20.5895865142739,-19.0348402039481,-16.3189736480924,-12.3657579718199,-9.63808712370117,-13.1907612241941,-5.87451834887068,3.04635708514682,-5.07556464026102,-4.68379121747164,-5.98774049734621,6.13793065975733,55.7111560320243,31.4459612322861,-8.95721754450058,-82.1535513468914,-0.894213191943665,-10.0111929232799,-40.216891615618,-38.2692872895498,-38.4253153633173,-35.1630876090893,-36.5699238159623,-34.7063785447288,-25.7306386441695,-31.7315403567128,-34.2733613418198,-33.6496669103246,-24.9098158755376,-30.2282537250819,-28.6547497831551,-33.7316936003752,-30.4204952468302,-29.1717167431906,-20.35034984121,-34.6814417441743,-16.804730809346,-27.5686015178513,-23.1547216428968,-25.7526945091471,-15.1939648226982,-23.1280791961798,-17.7725138685848,-26.1819481248625,-13.3341590684876,-20.1420818868633,-6.02405354104081,-24.9130211428407,-3.88126006285406,-17.9907378402572,-8.71058758864611,-11.0239848940165,-1.52303139362594,-10.1094543832441,0.118056920819224,-10.2252107670845,-3.99604620917503,3.30270085481873,-4.4146975038482,5.81139107734108,-4.34814616747131,5.00006487520289,3.92926360046861,8.26368934818246,7.23807086561683,14.298165658441,4.6699043185563,14.1447980326305,5.60440706310323,14.5745294960765,20.3569875565752,8.96280665173629,17.7633185015832,12.5372057635698,18.8010370613285,29.5400117384929,20.6530057497567,22.7689370535594,17.4270196201889,24.7111832252688,33.3386778695057,28.0408518627875,27.5164747277261,21.6837441092879,31.2245129952893,31.9129776545796,33.9433773631515,32.0592708926204,22.115189984347,33.4472317725252,38.5533087978882,30.1426292826361,26.8526322936068,30.2154205293639,36.0381097396863,35.3836384381087,31.435751005273,29.8406802399783,29.6676384714236,31.679529198589,35.1307501788766,35.1278213104032,26.9902848127752,31.4132079136949,34.4550854430118,34.439953942476,30.5585673547356,22.1421784591002,31.6008027118464,33.0975144922293,28.6965298150788,23.6659296761676,16.4850060511477,30.5672473104758,28.1687853982376,25.3000803796979,26.3091428864653,15.507862447088,25.9994270468191,24.5027347318539,16.5602810639474,27.5778212542507,14.8277994298058,18.7135177135984,18.9328155330338,11.2417361357136,17.9030378273961,6.69356700509922,16.5726540156396,12.3613484140085,3.82656121976341,11.805809410334,0.999737542403499,10.9128017231499,3.00813336591734,3.79698418268429,-0.419962598108936,3.12096151940808,-7.08941066939081,2.62590119905224,-12.389479688007,-2.5598888728533,-18.3825596360155,3.54123990276749,-11.9110979858871,-6.16060548821568,-14.3465764526672,-5.61909983170231,-17.0997630096428,-16.041005838247,-21.8016303311295,-9.82955801466213,-19.267323410145,-11.6124747273293,-21.7630910005795,-24.378497188665,-25.8310939213539,-18.9030499070674,-26.8017343201111,-20.8341898576963,-39.1507581501576,-23.3494453407653,-31.1696746164809,-30.9218169503137,-34.0221431703984,-25.2224152344171,-42.1167303260102,-27.8262471021981,-32.0901040011435,-37.1687104353932,-35.5248919799018,-29.4941003803357,-39.6020704882295,-40.7926744154151,-44.2708890625964,-102.567068705269,-5.15933671993035,-11.6925108083853,-139.866981088784,-71.8225157838023,-142.673183477455,52.7413740278997,8.45667001980601,32.1775504888692,-4.9537140806516,-62.7807815742779,-19.6677557573661,-205.596575372102,-140.206787734653,-214.434742273245,128.101752169448,21.3286423665915,29.4639818290818,98.5241787245231,-35.9578691412904,-28.2356099024396,-194.151921324224,-277.913099962063,210.329104053041,153.453063187148,169.360204277328,-327.518937015524,-36.7047748188384,-369.297215464174,-241.311130152189,-358.44216538962,250.088092909411,49.9420810417962,177.397636548192,262.423294276749,194.989103085055,147.255591264976,-49.6135147872086,-257.001841801587,-289.659261325154,305.98833690185,255.635574378173,349.259943668345,282.827863147079,-348.228750884804,-46.6003022383285,-415.255415197609,-315.180715629704,-317.836657909735,311.091027861673,63.6143416553222,287.534434635143,348.751442507164,318.045575202826,-58.6772146536926,-335.112363226785,-316.663608168623,54.3168358006633,359.039035521482,412.88169396493,331.524043307443,-369.085913570189,-34.4723881544206,-329.6382404155,-273.014906344442,372.104682471371,65.6311404975339,373.291912628096,-403.946033681653,-57.6459815606854,-363.892228196373,-321.271201652891,-214.88877773716,338.286121667189,281.557978822743,404.60045650831,325.298625347821,402.872829403826,-46.0719064615012,-305.053002831554,-216.996550861988,243.687141351885,248.22569336199,363.043199407514,286.855250518552,424.844290857778,-290.254942662222,-51.8220427176934,-267.721750977655,-263.385539479798,-232.731296005536,155.677411973857,37.9778206932534,266.147126875787,232.151269542527,394.455835310271,-44.993083191275,-197.878620046597,-129.354574937685,103.845621937987,31.9004495509188,215.68735139866,160.568203916689,-187.946081265132,-31.6584872543071,-122.480556914621,-162.591360763163,-66.6346272402469,34.0306806856958,27.9521348234689,153.299541235507,81.6728561120865,-20.6910707986899,-103.212873988092,76.1152083054365,40.8623191507842,-44.1390011230735,-8.714245935064,-17.0099182541077,-6.58027103056724,-8.73101224052123,-23.5552898198966,12.9967979915822,-4.47552647457574,-24.6175232393263,9.02335280367438,-31.55924962728,24.5536162220832,51.5287037395304,224.135727823352,13.9105799770637,-31.5060518536541,23.0568856322464,-54.704191349812,33.5739872218398,79.1189955393185,352.632344376427,20.3094982350966,-32.3119526113631,32.2712181997533,-22.6574940298485,-40.1770794588718,79.3949290235457,389.340194669523,51.8327683652991,-41.6497887298827,72.0097554410661,366.046658062622,20.4404102153319,-28.5372740287606,20.3928258731168,68.6548206122293,316.434911233144,16.2173556314836,-25.5640439785444,13.7225803245026,28.5468295687264,-31.483862087342,10.7526094342684,21.2114649351186,-6.8065200356849,2.57486485733712,0.746879584290591,3.64828432818885,32.6537768082488,30.490286710236,57.9978765866187,51.6798709751428,87.360217025556,56.5752530359119,67.8709082414888,58.4381742011611,60.1451094082791,50.8832425545903,-0.271227751413586,1.23409257588671,31.3161032910304,41.7415483866993,53.7212568353895,61.0282534064745,81.3068405436593,60.5034748042146,53.1906217858395,50.3753849070967,8.06671947351107,-9.65241578982145,29.639021101731,49.2278002786168,77.1707713121117,77.0349564925195,66.6726293307461,71.4881949028094,53.6432340503647,63.3452876622339,46.8014468514243,34.869117756991,57.3814153602171,66.6237668783952,53.460063904291,62.85764117783,62.8216035126207,54.3810133418225,32.3901501651309,34.45984452058,54.8759886374078,53.1503513246165,56.3357297427378,65.3867965752038,56.873741491024,58.228830956214,46.1756192174559,24.9913940374652,46.5145868049432,45.1892116731193,25.1403479445572,26.9707434667968,31.015909570793,49.7948524401541,60.5446149456913,45.2187930026234,47.196490601849,57.0222782511496,41.7915743036956,-2.40167963445985,-9.02273748628302,10.9924402934086,88.0200019868524,74.1792290761426,67.8521588541383,56.454891301464,59.1743930840417,62.6891873023754,67.5293648689634,63.5136835202317,49.885975254994,400.101006058915,4.01192606455792,309.623221465738,441.448268187718,77.3013237819918,69.526264176918,54.8884123012984,49.7333440401958,44.7954440436452,67.5018183871901,43.8878302940041,56.0716774698986,36.3169744698684,33.1342355383134,42.1111697769833,39.6153226485044,50.1651584141489,47.490316291496,48.0396829845212,41.6838707370704,48.5603512197997,43.7531291887013,32.7082271750354,37.2500813212552,34.2714218791374,38.1099339408154,34.2311118815221,37.8735596771383,42.7211837367617,33.0834433583543,39.4114377614155,38.2738914021,36.1982417543025,35.5439134645066,30.0217868320184,-1.56439339953189,-10.0725583755722,12.0510385912417,35.9806245491564,24.6563642887829,47.3225860737712,45.2183723547746,55.6879559690564,63.4914486070773,38.2861495059517,36.709419701035,34.1782851470647,27.9403767018025,31.1836240408818,31.3550221187435,28.6644373256851,40.8164816938515,4.69547312892116,-4.71438911777203,-6.64951399993744,-8.3929332749728,-3.97044223721875,-12.3842703863263,-7.54540617539177,-4.49015398100694,1.34971221161673,-1.39427960446199,0.777315036779915,-1.14269410794186,1.37022767203187,-3.85764087136366,6.26164887926275,4.68810062380438,-3.02467413511872,18.7621654943949,42.3879227307932,29.9882680186861,28.3662500231841,52.2012561509609,43.7599448662307,34.3138007695116,37.910313620782,36.2333230814037,35.7383168606835,39.6818766318502,42.6983920947412,25.2988217996631,44.1651005511684,36.2603828334749,49.9574275706047,40.9416538328566,35.040139818132,44.7493983842982,27.130164258684,59.589712023473,30.8597022454317,30.9413372319552,29.8978031058454,33.8186853274264,26.9624051297214,23.8058238518497,25.9641803475661,21.6055722360221,28.3987472967415,24.1209304538355,22.957087032522,22.9652597743063,17.3971842181638,19.6622378393475,20.6082872337643,21.5993220984614,19.1163236013991,14.2112452318313,21.9792465366002,25.263540106567,26.8083728154332,26.8789085588499,31.1046846262607,23.9110751142424,24.3145174623956,21.6530382912349,17.3711809192282,16.3521903205904,14.5106877384244,31.8803675294893,28.8135096186817,18.2251525493233,18.528743346543,13.8592309954335,16.3543185972163,20.619520280281,23.206298496844,17.1945977974019,21.6664792563456,20.94648099163,20.1437680477412,16.8452180112614,17.2929073168255,13.0450058026303,15.768924971426,15.0677106507514,12.7236994172106,-0.537925965398045,3.20259061951723,2.20342110625432,5.78976976375746,3.73210469954076,3.99381070090088,6.66168120900836,8.24604782993585,12.4918107789287,8.89017014101076,11.4851735854696,17.488886143867,14.7947738036205,9.06932043676286,6.87146601818272,19.8009285586219,10.0127902115308,13.6788561806047,18.6142696040273,22.3786627817027,16.7050053475978,-17.5567635280852,-16.8207441749329,-12.4164581759691,15.0789595406756,143.170009392432,13.2007460618522,40.9709243679803,38.3447311874877,37.4727500845784,47.7441293042048,62.9684102295881,32.1234731900478,41.6512483333344,53.9673711597048,31.7955030421002,25.7125029809205,17.6821817191157,20.6693513945081,19.2833877261965,20.6361930950922,57.990717754784,39.9873489078278,36.6943598153629,48.1124758575249,27.6863408301044,31.5712373054325,23.6111307862522,28.9114745623615,28.8191238078449,27.7644959736357,22.3780593670781,24.4945899542857,24.9493652456084,22.1849561146727,27.3062953177551,27.0177792637418,32.2835255939492,21.2614880056153,30.2692219154638,24.1284653675013,33.5451650829466,21.5342925347406,17.361140983413,17.2073680667222,19.9560800877265,19.2998799278413,17.9807190188915,13.1570149347073,15.7210318638381,13.7872489411066,19.8082954905663,10.3223164439119,15.3339815161822,17.6369951824529,41.0030495603506,47.0757473625021,20.199590671463,14.2239823757209,18.1692269862244,16.6158299924562,19.6985915939202,23.3310802236014,13.9666473617619,9.56905299823055,9.82955996922432,11.4415984730124,11.7473156028581,11.1275313873859,11.4178061585832,25.7346620579287,18.8372988532174,15.7914329822318,10.7012523071111,12.8032263806819,14.1636383216804,9.66797524024759,12.0296525476995,11.967960061542,9.55873651211127,5.8171044353869,7.84607187942335,7.57732847266533,6.08903719225396,2.38233093862449,2.1368596172225,19.4882257726254,14.0173851400669,-16.6019175663283,-26.6684288499158,-19.0716017807669,-23.3050696899346,-13.7576302475002,-28.5124880409084,-11.3682676181216,33.1237374851073,24.753284904007,28.158194165725,24.841766631009,27.5420981428642,28.234465711441,29.7152031665827,24.3388955305581,20.7494515301252,20.9930809581793,29.9506535853399,30.8921778515879,26.8690711954646,23.3475705665618,16.566485615462,23.8601502641507,67.9704150209779,51.1673097220567,49.9343505017701,40.3119340729614,25.3088734199102,19.6870786511914,33.431206860881,26.9323280491737,32.4613896160706,39.253747026409,16.769082580449,15.953711596398,11.3406921345718,13.3003392046591,9.82702155760647,-9.67714559407867,26.5463796065326,22.5925187819124,19.6006586026712,15.1988036657605,31.7036990195685,20.0275630678772,19.206117825216,24.287557111217,13.6650829997381,16.7090971060517,15.8295597099076,9.88022516639565,13.6598677900777,12.3852430359574,7.31112195818399,9.39309285980782,4.60114365458165,7.02687838592496,6.74854060430734,7.41616429559084,10.0561253826163,36.5651579449488,39.9408708995923,25.6778686088382,24.6198488343215,32.1669331015281,26.2183122540212,29.6693111523177,27.8148723964061,34.0758783388522,13.5340707315442,-9.36779340090987,16.7970764340002,18.074778318025,17.2106930323357,18.037550066769,35.1180021380885,30.9545835362292,21.1214322912499,23.7263240086081,29.6557636448633,31.6631861772741,43.1441295273079,23.6440216549233,21.2216387305519,22.2651622986729,-6.83818621754373,-15.5108291409267,13.6105446071294,25.6791875319943,22.4234385926258,26.3803390722938,28.5168692824723,24.4253161004671,27.6783230146527,20.1426553283814,-3.97533023744625,-1.97231412851357,-0.253150412953903,-1.17776793463375,-0.136820080904993,3.4816970430084,-3.67488630089675,1.4524426859404,0.547646412947673,0.456114594392694,-3.53829497634778,-1.79884669500092,-4.54381321953236,-14.2101678873304,10.6105347932225,15.9515206474282,13.6736906008976,18.1283160118191,30.7056104352862,-2.42596564592357,-2.9751394733297,-9.22394678265892,-8.21391152777116,11.190969665362,8.21792784683191,12.7899767026492,9.76008135143079,12.5656668380761,10.2252752212102,7.31116486155882,15.4529194308636,22.6050658823152,21.3400979557075,31.6478181028874,36.2400531902596,32.750802724456,28.4605967520208,37.3597766957835,29.474132861676,25.8800629554709,27.7195523527801,24.3843332209134,22.208978733883,24.6884802385277,24.7758753409508,-6.14699608463556,-5.93785949118227,-7.61354763358942,-6.22511928502414,-13.3207491235778,-10.5089772902639,-9.44998687204699,-12.4140340095307,-12.9073308558832,-11.2700777405323,-9.43649644854997,11.506401328922,15.0319812881741,13.3410511782586,16.2648712297026,14.4466880229004,3.75090247336492,21.4136790064357,18.6043520547138,13.659311165573,16.1415586850978,15.2598358012783,15.9182115985895,21.2972088331016,-5.6754437277395,-6.55279497060602,10.6426741373511,5.69546530549466,8.66858621129276,8.19787300034824,7.31692614640145,2.91844341000044,5.07287448091094,4.64003767922107,6.16719623251939,2.10198876733239,4.44737050882011,0.526764442359834,3.45930578992224,2.21047194583663,-0.997799572197351,0.157241766828334,-3.13625281497595,18.7914419771673,12.8533072830959,10.0119920316616,13.4222460055213,9.59445830192833,11.8590401524895,11.5066452417738,-6.51962941939397,-0.321746653396318,5.44678411478502,1.04895835404079,-0.673629057616651,16.9223403142065,16.2351559005239,18.7277063144141,-4.24204284487652,-10.5122973911297,1.34436576525376,2.73975095829202,7.84392725313352,5.87677829921187,8.28044802563377,6.31016180874005,2.50607403464338,10.5359618330067,6.26569922517538,-6.14097661849978,-1.49839164607682,1.39639772269918,-1.66215764533156,0.485622173175838,-2.13887103440639,-3.72067652117947,-3.53409802313905,-5.32932163703979,3.30299401671089,-7.5042767405618,-7.81397291956621,-5.86980612735454,-3.9676683594059,-7.78567512402738,-5.30692493233269,-11.5222702470681,-10.2666699443402,-7.49778113339911,-9.60604789111047,-9.18448900137834,-15.1155441363717,-6.75509538063241,-12.2973493872587,-12.8066589747429,-15.0864909019315,-15.7542475891296,-12.831792037857,-12.1380254670871,-16.115359831313,-13.9356973804988,-12.2342337805726,-9.52736962980292,5.02624297195346,4.45390557276315,1.4785992252416,1.10641134363245,-3.17869734840761,2.8351490524514,5.24063335939294,5.14768596432488,3.61691328671335,4.85226661991378,2.43368753600136,0.174112325907207,2.49925815087642,-1.6868908055788,0.616160619590459,2.97141283584845,-1.6039222578304,6.21482733253471,5.14501616492661,4.27962661245892,5.68351551911103,3.58611836534666,-21.6524106590755,-9.96363112304513,-7.79668464549695,1.52654045633265,-0.502349511995631,2.82550712758248,-1.3446499386092,-1.96952306120845,-2.51995261972614,-6.21153197486618,-4.26278878946926,-5.07323167253936,-3.85500436451294,-3.53785129639542,-0.284164054175331,-1.75904265876647,0.673918894638033,2.21497826579298,-3.54873225109586,-4.68575419082196,6.31271575258256,7.27261037227603,8.31053632465152,7.62875368474616,6.15013448020418,-3.47847088543546,-0.424533242541631,-20.0742492729599,-18.1420020721139,-18.8329345712066,-19.9680763208683,-19.4250856811251,-26.2640242276844,-17.7392561100304,-17.2151648223498,-25.0347366897335,-22.7864544487882,-17.5249470124729,-14.4235337373424,-23.1596014671889,-25.2441651904874,-12.6113882518908,-26.3715538710432,-23.6156971323296,-21.0602995818847,-16.7144189274397,4.18046740441998,4.45612078533413,4.14453618860593,3.75381859119183,6.15858651565647,-7.51014196948004,-4.95720606691054,-8.2912637406894,-6.22032789013479,-5.00404457663518,-7.52232137850222,-4.97042155633142,-2.79330276659741,-0.505215705601965,-2.12131301812035,-0.986502036429782,1.24506950589652,-3.2762139295266,-7.29153275222991,-6.06175413732134,-10.4382338257034,-8.82348736569479,-10.8766663187115,-8.25683854744202,-11.2220061828687,-2.6469031889093,-1.55864337884999,-2.3888739071097,-9.29748037700683,4.21551802051374,4.59089236567865,6.6996182417768,8.80638104709551,1.51140315207693,1.73398030517281,-0.326093468310698,1.05541785701211,-0.574143777340312,-2.04394836253898,-2.50604821443756,-3.95017371983149,-2.560797700594,-1.20355280890985,-5.10417620472802,-15.5848592601264,-20.0512712383526,-25.2991581763761,-17.9933570091577,-15.2426330465983,-13.7120609891977,-10.3811824780523,-16.5333624064297,-16.2005984575423,-12.6528922728929,-19.7602839234242,0.911576343583225,4.20329200179558,2.33045605211656,7.19494502739972,7.48968691772406,8.37687615562115,-8.09153638008964,-9.75133930257024,-12.229835068538,-17.6820464686267,-7.26923202445753,-9.77749951387928,-7.15823122291632,-9.06672498304301,-12.7384589022098,-11.4914607823893,-14.5058489811446,-11.6623503843417,-7.40457970400793,-9.32061874208284,-12.707807134655,-9.80594450450854,-11.5067415502719,7.65573836635946,4.29554728790434,0.821032254373075,0.519176121364594,-24.2926944019628,-15.2923706888236,-18.5708876530687,-15.2460632325169,-17.9005528207894,-21.2596967130116,-11.0997366192803,-12.369477440925,-10.0670472978037,0.939203179255275,-0.772384950946356,-2.49046829516513,-1.02529706773183,-2.87344342684868,5.87738457155934,4.18007947263372,5.43647333181625,6.66920715242242,10.7841188653987,-6.25224558164252,-13.7458305572772,-5.03987524982127,-32.5785537051892,-9.13776440540019,-10.72622060408,0,2.05318578592295,4.09027017107424,2.45022872874707,-6.92072083164303,-3.31909877102588,6.67066065870111,9.11305958043905,8.71740303778417,-13.3515112596892,-17.1608702039174,-14.3505197421112,-12.900524504505,-17.2823905223893,-16.7379793100876,-18.4993039563954,-24.8170736072151,-20.6658526051738,-20.6224802186422,-21.4726938566615,-16.5303309251711,-28.8041981021966,-10.9196083040677,-15.7890428405665,-8.25555753255258,-13.0971363974902,-14.4819557572544,-13.5750567126165,-15.86356767748,-13.0123693083922,-19.0064771943144,-10.0439625590675,-17.0197072475284,-19.1495573362529,-11.8552167641705,-12.3170962006927,-10.0508534491335,-7.50212660145892,-8.56329168688153,-6.42950008627006,-4.98804028768207,2.39998820416584,0.758421775222687,-7.7780130418899,-5.58212844498754,-8.6509662090388,5.62035302020289,9.07351610463445,8.42746596778279,10.5773871169464,11.3620077829305,13.6306140757247,10.7079451926833,-25.3242106384107,-20.8964849827496,-31.9842239645683,-13.2426938729448,-16.7618554772956,-20.6987249695115,-28.8247407325627,-34.1680070800303,-8.32357898859093,-11.7588489151243,-10.4470821390437,-13.9504077880561,-14.8275513118704,-18.2692102050164,-16.3607821669707,-15.5815679588135,-17.9711079166607,-4.5610007518919,-5.33725739034854,6.9800187902248,7.83615438341565,8.73179793812809,5.97595411438578,7.86271439609581,7.80345698315323,-27.7541263521786,-27.6399362509615,-30.6301055348984,-18.0477307323629,-21.5230103466838,9.643900546611,11.8703064189288,-36.1166123337842,-34.2111445763205,-46.3223383008789,-37.6093315948182,-36.0488913813409,-45.5181212429034,-31.9446360403043,-41.3782473016967,-39.8947650764233,-43.8425987128478,-31.7379407293532,-42.2112672477635,-53.4959819094304,-38.3592413886027,-36.0141838777047,-30.1852514776443,-41.4842615388257,-28.0628300797928,-20.6646418293348,-26.0284539747009,-40.3219328459421,-52.4985739034897,-40.474098178241,-28.2912149051103,-31.5799023039715,-22.7846091083045,-37.4810655738828,-24.9561108533077,-21.4032377885712,-42.8920997164154,-39.8000880938982,-47.4131199701875,-33.1439080458459,-22.1762105681287,-22.7292423933396,-27.427315124176,-47.4937394657621,-46.6018704004954,-60.1156146416184,-40.1966977162771,-20.551202865258,-23.9266628231254,-18.9434434051147,-23.9719602204151,-27.6006349059007,-25.4476915046296,-27.093002546324,-24.5006445846061,-34.6644919050402,-30.2502281060992,-34.3097681346251,-30.6208366662448,-33.0539877173059,-39.2762579295341,-40.7548189869228,-33.497263669813,-35.6962558480299,-36.6874780820501,-39.7914551131284,-31.0580496952857,-28.082532276606,-35.4633410620715,-37.8624841936097,-21.1668717402258,-23.8880744713031,-21.2634531789569,-19.3369975549381,-24.2554924268259,-29.0538075288487,-27.0922748249512,-33.4309468895817,-29.5892995147562,-30.906097073262,-35.8999844088448,-34.4710785814178,-42.9966220948592,-37.2571447884659,-32.4831292209699,-44.552117470881,-36.9965341113703,-28.3962330755622,-40.6333963642738,-49.8709874347848,-46.5982807965083,-51.823007804259,-54.9870455292263,-68.1107938541382,-36.4180320401448,-43.5355569603673,-32.0939757510927,-28.3411659917248,-28.9555352232044,-23.9416267572766,-26.8565224669351,-21.3032516331369,-23.9024137251954,-25.9909514024781,-52.8661511578864,-25.6139189075212,-32.6061474855468,-17.4770570790052,-16.9673093547012,-30.8745899164869,-26.0785605753673,-24.9819063874404,-47.9471768570036,-55.849530736123,-53.1883831629581,-54.5601232924392,-64.2635506488769,-54.4392478550977,-57.5042086826529,-23.2505351152735,-45.6639003889369,-22.6700400329843,-28.6990833413495,-32.4946345271647,-16.3111437290525,-23.3315127415018,-45.0698335356765,-66.749782308455,-48.1746824855741,-49.2718494069504,-21.6027757985334,-20.2836789082925,-34.733762626497,-27.4211339486726,-30.607940481628,-30.5594913924976,-34.9170641155871,-39.0910389516375,-28.9336391321361,-13.9022116495575,-16.299165291611,-20.5329738096389,-43.0508163597945,-59.7522400743221,-44.9045646398449,-42.5616539695423,-51.4106830523902,-58.337064530558,-59.5242556162548,-37.8471144492037,-46.9461529828879,-66.9323938570973,-36.670071188043,-69.4559165532989,-61.7156297758092,-58.7464368326688,-44.6125765080747,-51.388943203804,-42.5603945071441,-49.6670335646018,-49.434758741072,-55.8541780711062,-41.5066470485067,-41.7128664837939,-33.2427321807044,-39.6280033619733,-15.5531201090106,-12.9682716946016,-18.7455983360311,-23.7219856078705,-21.5071111306806,-29.4022667741342,-26.0474922097603,-26.3899699399531,-28.9483873206228,-33.6967048674682,-27.3294186358249,-31.9521746952059,-42.7052584903704,-35.187431662878,-37.8196309558282,-33.6537657244253,-37.6199759203787,-44.4040734145164,-29.8462098120798,-31.9665049652684,-47.0926099605842,-44.7730856111487,-51.1746615295437,-91.7252218609001,-53.014200910557,-44.9644611008175,-37.4158308420218,-21.3615317355168,-20.5498163369013,-22.1678041812414,-39.2401125494026,-46.4368441830068,-40.5941328096553,-48.9170031778496,-67.2218128664035,-41.3004851880308,-52.6144105770839,-48.8003282470674,-53.1129462414394,-58.1274575013445,-65.8825933228325,-59.6182072754639,-86.7806857432118,-53.1784710371552,-33.3008377462005,-36.9889864027549,-19.3334944313874,-17.7509368598651,-14.7716368799532,-27.7049185098567,-18.1400118790871,-65.5888379012273,-36.0146662587492,-33.0653470317477,-42.0482203134128,-47.6796156411071,-49.5503253317096,-57.0097840802378,-47.9745913081096,-72.1166084535607,-46.7605542030061,-47.0632658306442,-20.2032290208389,-24.2741293604201,-28.8552135702871,-25.0071558892476,-53.3279264093204,-53.2477476676845,-59.620387479244,-57.4307191097715,-64.8033245350749,-57.0395142625572,-67.0151871536252,-61.8235321964266,-45.1069133164726,-69.0664107910075,-60.6665852397109,-70.4789271057969,-42.7344290930158,-64.5616524794118,-53.9343692417602,-23.698641096898,-25.6079605436839,-30.7835208011768,-68.8167558353692,-57.4865282968286,-79.8604252941868,-21.6799127659708,-29.6292838095138,-29.6988477832137,-34.5017695511675,-38.7148623185624,-36.4650548557995,-30.3223582168979,-42.7297639933944,-27.2099432377177,-25.8729599776286,-25.5138648146861,-33.391786672707,-33.8281728014171,-32.9968333683159,-52.4121970515587,-52.3833908316576,-28.4078888313348,-24.0366665135269,-24.9422606086272,-33.1582881246851,-29.0376890152879,-41.274423099913,-49.4570537074689,-86.7563495654258,-37.8056807222384,-148.90552131553,99.5489088698006,38.3218150568168,-207.270811254802,120.986142786875,-263.502080369347,251.435386380241,-313.77861869087,261.220776590027,-341.991740625128,334.792836629815,-366.632026855234,353.830025031637,-341.23900294556,-355.998912622905,-335.622324764503,-293.500087460278,251.50930223257,-244.897136406983,176.863190343352,200.420245073494,-184.914060413866,46.1641382696512,147.798995420204,-120.35187809287,-43.3328465110122,15.2272651286707,5.93159051278921,17.204163660556,9.99526569235924,20.7348859972876,10.5402144665071,5.59197986823262,13.9363065591614,12.0843778423058,13.648324671471,9.87082199610497,6.94984853035698,1.50878415390151,3.73601588895588,1.33254201189284,4.55400837321074,8.73312114512445,6.08706776050473,11.1585059146887,0.998033887088749,-2.58374484738571,-0.809545332878772,3.96428257424832,8.0252217534917,46.214536643993,17.146452306169,67.3660981526897,12.2850197692055,11.421340584247,55.9491986580762,-7.16815896241439,59.2244711241362,64.7575404963794,68.2064659251909,17.2565011946091,76.4063304340408,59.8141680519038,68.9599807047112,79.8509653824586,63.4198801531794,52.7708704043334,56.47885192499,83.9545695755216,53.7428881420315,47.1493319144812,47.8504785700764,41.5459682549309,49.40963919,47.77842494938,43.0955773054703,37.8789884418895,40.5850277998252,39.4614192127615,35.1334265787339,34.1452912483604,44.3070493539082,35.317752652029,39.3101465111842,31.1287893635385,38.2930289410597,43.222090642246,34.6364093969435,43.8983178627939,36.6217744761743,48.3789656232777,40.7558897320003,33.6681474245612,55.2425723451145,52.9034884756268,45.7688002252624,47.4724165989802,45.8474637973828,40.757357906769,36.6276200842708,42.5194759976618,34.9630982322628,30.9508599426529,-0.657384308370849,26.1538978407832,65.8828135526664,45.2804196830051,19.947483178209,9.8445824436667,-27.4365489530553,-31.3972326192489,-36.0993195765945,-42.0639765478355,-30.0938812511524,36.9243973852715,11.0746042892397,26.752978834966,31.0242422117238,45.5948100861664,8.46898180741212,-12.0087009722976,-13.3938094895906,-12.0573923808008,-18.3418948117888,-16.4148685427292,-18.0299228887315,-21.950809108051,-17.4745472683145,18.1826548070149,14.9547996867661,13.7305695471406,12.3070952886985,14.6417220162598,20.4821579115433,-10.8466366881955,-0.331579140529765,-24.0180323444199,2.20551455644148,-4.91807243081008,9.85703300556402,-7.53041845819625,-10.4720269681033,11.7862945519265,-3.01230553804052,-2.08929965488739,-8.24347531074345,-11.7443585944332,-9.75233313834238,-13.7905084328154,-5.685623081846,-39.3933124656003,-16.4278583268325,-50.2647035073596,-49.5844767346145,-53.7855399931566,-73.0149088522646,-28.7728137217224,-22.5764124310553,-36.8998240736757,-22.0959019829157,-25.5555435841128,-21.0313831442713,-19.9624240998089,-16.9207336146041,-19.0674179585769,-15.1252090539896,-15.7179186304646,-30.0284677718654,-54.6415751247317,-40.8499913471875,-78.7881356491201,-70.8856573543589,-73.7004415985043,-53.6374814841435,-63.4768434621853,-24.6338255723401,-54.8175156026392,-69.4172883885938,-57.4030863788865,-71.5309253081114,-71.2843071000305,-57.2173886074439,-40.4043981300265,-56.2609208189256,-83.8454130226363,-55.820148279203,-48.1347089814021,-42.2916269679011,12.968720787477,3.52070526450854,-0.837693400507255,-5.13084163105533,-1.86179825226376,-10.6428416065099,-1.29079612127182,-2.16250764347985,-10.8746252595538,-5.60305518362995,0.235973223294793,-20.7274137362427,-19.2031742257779,-16.4961613501173,-12.4969126693995,-9.73167440255146,-13.3603031779081,-5.95044526298484,3.07668748353233,-5.12560005448314,-4.73263249159011,-6.04767248641178,6.20163427801706,56.2771752671627,31.7694736609807,-9.04822138412999,-83.0879374758548,-0.903801225745032,-10.112431600529,-41.1126309309382,-38.4251737329146,-38.6052882815173,-35.3686276987077,-36.7719704184761,-34.9028355174761,-25.8297194475858,-31.8482058170439,-34.4548600826055,-33.8037311952204,-24.9849889313298,-30.3875736875852,-28.7961135408591,-33.8843005474854,-30.5492514179666,-29.3588183514997,-20.4413097625635,-34.9097223756194,-16.8411478918416,-27.6899249747341,-23.2454928981381,-25.8946322194057,-15.2164514008923,-23.2705290545534,-17.8348255176352,-26.3165937828815,-13.3679377983301,-20.2972748865729,-6.01501273265706,-25.1038458011302,-3.84364182939634,-18.0854338195138,-8.73737781295983,-11.0903109441161,-1.49994276734502,-10.2015170868266,0.165909730453789,-10.2897711985283,-4.02099210854194,3.34612005319116,-4.48988760061124,5.88850270681506,-4.39348539441403,5.03438980269349,3.93946140989984,8.30739843893483,7.26929977515677,14.3762576836757,4.64195568744007,14.2584910484884,5.60132570433094,14.6457877954853,20.460265364464,8.96472294545726,17.8770568567063,12.5627439504581,18.89245128362,29.717028498439,20.7400381114884,22.9054885465971,17.4675081502376,24.8366438149203,33.5199967547176,28.176042898922,27.6701965469987,21.7364887120031,31.3892067709709,32.0669838653923,34.1100621263193,32.2476358110192,22.1914435612249,33.6136959718574,38.7485038708128,30.3031544872653,26.9753355639837,30.3121872095944,36.2262553857744,35.528168677858,31.596841488808,29.9722967919293,29.7623774695926,31.8362183536053,35.277748172954,35.3437261698975,27.101631034198,31.5272647239289,34.6427521197256,34.589578703177,30.7454656789699,22.2207875544508,31.7267155270207,33.28048838103,28.8043160964716,23.8046254579611,16.528924707797,30.698004137968,28.3184719857878,25.3959789739642,26.489067160187,15.5387559791081,26.1087024757112,24.6342015473802,16.6092069124797,27.7756743995804,14.8676908593115,18.8026919262352,19.0335718851394,11.2614563474398,18.0470948611545,6.67523760031918,16.6539851259708,12.4294911256755,3.81683593100686,11.9125896393479,0.954498551193106,10.9804744782639,3.01642664314955,3.82255317779419,-0.433719547509721,3.15232625152776,-7.1492705092078,2.69064502463675,-12.5014380813713,-2.53756861014852,-18.5101128947789,3.59010031845809,-11.9738291563821,-6.14159344792871,-14.4581121087776,-5.60986636586535,-17.180581502793,-16.1173987021313,-21.9057779629923,-9.83062273731949,-19.3943655277464,-11.6259680896066,-21.8603525750464,-24.5033429584239,-25.9368050386182,-18.9555625065156,-26.9799036868714,-20.8989225578769,-39.360094847987,-23.4490786410234,-31.375399436988,-31.066578942996,-34.2372250933659,-25.3066839759338,-42.3348640837323,-27.9618192344317,-32.2901771518773,-37.3614987856025,-35.7396019316271,-29.6027176513423,-39.7826024513074,-41.0106667107522,-44.4987620280752,-103.192148706082,-5.18849314781674,-11.843026349968,-140.646017828993,-72.2421823223822,-143.511326587613,53.058228995618,8.55312608718498,32.3638139359786,-5.02052488182577,-63.1846209807114,-20.0301708596063,-206.841343479531,-140.97557850372,-215.793434140853,128.90399364465,21.5528951814924,29.6248533247256,99.0872169449225,-36.1804192663286,-28.5208752563235,-195.203896876349,-279.684336232155,211.644645901105,154.469214209203,170.292591022451,-329.722963155268,-37.2037291923749,-371.7384482402,-242.605043220297,-360.678808308361,251.648950847327,50.4124034038414,178.342070564411,264.083576857505,196.195042873011,148.196208427396,-50.0771616765883,-258.537523357514,-291.44893776511,307.93440134967,257.333588422768,351.417394780048,284.385149788126,-350.467935799018,-47.1974507564442,-417.996211996195,-316.906431310763,-319.778833964215,313.003188956316,64.1149243868738,289.102346041576,350.949035273405,320.084352503389,-59.5435398277617,-336.958080790859,-318.688625286392,55.1070673670516,361.404141367333,415.404552696643,333.332256455316,-371.352476021285,-35.4298914238958,-331.44124648037,-274.722723678708,374.52899489833,66.2598243846701,375.746252477326,-406.569080730148,-58.3318213890245,-366.2236503896,-323.061922091138,-216.178965920603,340.490935820777,283.434296525963,407.07277627065,327.362372007866,405.628809483841,-46.7262246626524,-306.780586579062,-218.347551497991,245.233197821676,249.879909596849,365.259895612707,288.646912049447,427.577298311252,-292.001472370966,-52.4925349442588,-269.441045782344,-264.840607230632,-234.189948650745,156.605087644541,38.4268785130347,267.60303152674,233.610867591144,396.991580893244,-45.5281508372676,-199.054040475038,-130.160293784903,104.480640828391,32.2598712209258,216.901251379148,161.475130198486,-189.15547568247,-32.1074273656378,-123.250632069705,-163.488803900035,-67.0370946723505,34.2365387996598,28.1315316578929,154.171609606443,82.1205231472357,-20.943861320152,-103.791445950876,76.5959989019098,41.0999425723826,-44.4040889940564,-8.78700836209594,-17.1222709608588,-6.70232093758052,-8.8017580435493,-23.7236994642725,13.1037667601696,-4.45147783983619,-24.9654295475137,9.19875140755827,-31.9082923079829,25.0038260189013,51.6892049059426,225.61097909695,14.3200391872035,-31.9940122723865,23.3935351677129,-55.0643277464276,34.0300591448603,79.3635734402917,354.949235516581,20.9495072251883,-32.8897414692332,32.8071487837327,-23.2804736129725,-40.5734223598837,79.6234596741131,391.812480599203,52.4442263289653,-41.9437037750639,72.194749155361,368.449549860526,21.078313678325,-28.9031938190899,20.7420081884697,68.8725130646003,318.507254877229,16.7864974472029,-25.8689178346132,13.9844980098461,28.8807018712262,-31.6865916732919,10.920479664002,21.4208749280275,-6.96637944489875,2.65215783126264,0.711259189163951,3.6558727313889,32.8182586859871,30.7709898613779,58.2940184815041,52.1274555380389,87.5783339242249,57.0719530552568,68.2152639502927,58.9191622558043,60.4580941223259,51.2797533679915,-0.272490947343035,1.27883512878275,31.4463643188293,41.8517868656533,53.9370211053071,61.2007295947055,81.5379305573435,60.7608309938944,53.4107378920966,50.5137769795274,8.09686027883882,-9.71112125588912,29.7306323401736,49.3789491926524,77.2940165545045,77.4454130028926,66.8713107117872,71.6536170188775,53.8335720774359,63.4644114284391,46.9497656469164,34.9960473428812,57.586268567328,66.9222986556057,53.6003540416336,63.0948481818907,62.9986197163394,54.5768465216733,32.4503952617175,34.5848305500945,54.9779025829845,53.3377301326261,56.5208013634114,65.5158078310624,57.0765584490232,58.3378410303,46.3305527177354,25.0598911121097,46.638225937949,45.3223722926336,25.2283160467944,27.0378171939287,31.1549520498038,49.9165072748772,60.8451961561377,45.3707555174605,47.3880977313358,57.1979211910246,41.9089538022044,-2.41001119260403,-9.04476374876055,11.026874973595,88.1879356989775,74.3592266813256,68.1425531070712,56.6413998673938,59.3305734243353,62.8699293054536,67.6736005259227,63.697432888965,50.0310342378479,402.824555121834,4.23330456379549,311.741725222211,444.390643536687,77.793096406002,69.9851021456384,55.0652829766887,49.8655750738848,44.9078465461553,67.6800031597056,44.0280089139186,56.2178820477147,36.4340686770234,33.2408702168737,42.2537729288938,39.7381493342993,50.3561936323938,47.6381771285941,48.1819736038255,41.8144302795124,48.6944498133298,43.8909428039254,32.8186092590348,37.3695201356125,34.3866706865731,38.2387818927095,34.3367722006392,38.0004293192182,42.8467007519103,33.1851588857937,39.5306914188893,38.4236947714654,36.3211853892259,35.66904552887,30.1153094079606,-1.5655268272766,-10.1023744538822,12.0897773456789,36.092310283165,24.7372147992242,47.4637611248572,45.3554077829046,55.9261164146819,63.6700017088886,38.4216444372257,36.8297683322715,34.2923078429566,28.034571658736,31.2864080629504,31.4606507036425,28.7655008385945,40.9380049375687,4.70596762483489,-4.73461762234827,-6.66681747869233,-8.42782602778139,-3.98295244859706,-12.404729668058,-7.56912158786144,-4.50408579478799,1.35354797105628,-1.39908841104699,0.778972785230124,-1.1462191389552,1.37519076917495,-3.87065935972766,6.28167277747088,4.70406367568102,-3.04211548405662,18.8156759008106,42.5436577255151,30.0831082144411,28.4514474811556,52.3814330653227,43.9029928464007,34.4237808650568,38.0399574743869,36.3491946278882,35.8533769427613,39.8041656669289,42.8335225794522,25.3923797955951,44.3289366974607,36.3778193617741,50.1232294109632,41.1095010052149,35.1381872557701,44.9156936664698,27.2145339375378,59.7617198148342,30.9633844022486,31.0484348914142,29.9880520100953,33.9280995357559,27.0559916888708,23.8844696650723,26.0501603966052,21.6737582538083,28.4952476703262,24.1984363449913,23.034732016517,23.0362607299739,17.4614597145289,19.735144945119,20.6840233476725,21.6763394637805,19.1870716245854,14.2606396219823,22.0618943534332,25.3492966917484,26.9043747910629,26.9799899171805,31.2020584357358,23.9940235939282,24.395881291102,21.7340729236344,17.4346346791127,16.4097965716193,14.5669572845358,31.9899715172049,28.9083902994431,18.2925921623892,18.6054552091595,13.9069954304285,16.4112215677596,20.7020906164775,23.2895911977338,17.2584044324083,21.7517489141518,21.0232029107767,20.226573371014,16.9164925582225,17.3655413781073,13.1055559508075,15.8343080116876,15.1325001567637,12.7854871408647,-0.538658094908327,3.21276308281409,2.21197716773654,5.80989949871579,3.74369316206299,4.00705834794173,6.68233151225766,8.27209534544713,12.5322721186493,8.92101741684029,11.5208743834959,17.5381893267526,14.8432224855163,9.09900278530941,6.89368214333427,19.8649774208396,10.0449129647303,13.7216043279316,18.669865120959,22.4347915402854,16.7574971793747,-17.6831409875717,-16.9240242947425,-12.453469337731,15.2542098977731,144.050465508425,13.260209632525,41.0985154396243,38.4581068907397,37.5803738011721,47.91296614037,63.1550469681317,32.2264142540137,41.7714854143783,54.1517039243856,31.8919613270699,25.7947688956651,17.7338442796797,20.7377408418835,19.3448757350679,20.7010782153962,58.2943355433932,40.1231597922568,36.8111973874071,48.2658015326895,27.7898568942859,31.6838790820257,23.6964752021577,29.0168531548591,28.9218594599471,27.8653187142341,22.4629030717374,24.5873878804231,25.0462258218919,22.2668422562804,27.4080275022942,27.1232253022048,32.3917647377813,21.3434015949166,30.3698965904308,24.2221670139625,33.6490683727008,21.621614924514,17.4435402924967,17.2813745768623,20.0278883437974,19.370644657464,18.0625528098639,13.2178444264456,15.7964602078252,13.8534197167258,19.8892723825142,10.3798622753455,15.4022267064867,17.7129863044845,41.1014802741619,47.2794575489313,20.2663579013451,14.2725424507335,18.227623360996,16.6686429962683,19.7696987778939,23.4009762886974,14.017963884943,9.60245225611222,9.8608583925584,11.481621780539,11.7896802643168,11.1655289001601,11.4614659661238,25.8350257249534,18.9132161764845,15.8529871200501,10.7469254688728,12.85721534105,14.2250976242456,9.71073616348501,12.0809438977827,12.0164306345933,9.59724871101358,5.84370529880913,7.87727117993376,7.61112151529521,6.11174750058424,2.39101509517157,2.14364702529963,19.552719749476,14.0624559352932,-16.6472046985772,-26.7371185118008,-19.1459616684042,-23.3784364818347,-13.8066542302411,-28.5597630523861,-11.4040536549883,33.231399641246,24.8384845686126,28.2509787066621,24.9242994454595,27.6316372508696,28.3368538894441,29.8099688809238,24.4174705642669,20.8172515734967,21.063799744102,30.0581043916879,31.0029051762328,26.9580188307185,23.429716948906,16.6195772848618,23.9407775042986,68.2111073716792,51.3397270124055,50.0796144181554,40.4372636837167,25.4117968046992,19.7740920425897,33.5540790641476,27.0181550889336,32.5452622934419,39.5178755957989,16.8265942289282,16.0030681181857,11.3798715633591,13.3583803699144,9.87216663739244,-9.7059095593376,26.6398797650547,22.664312587872,19.6635306593834,15.2537142699424,31.8100641013863,20.0959502056798,19.27164703642,24.3661943484837,13.7132070058351,16.7612117979093,15.8791220925108,9.91295790478994,13.7033765859231,12.4242745389886,7.33393555642507,9.42433765606346,4.61615412381736,7.05110137095226,6.7703761829284,7.44175451137589,10.0899285798825,36.6775267017327,40.0625140473284,25.7644656111083,24.6961035401837,32.2800052863038,26.3044166321665,29.7571505851856,27.9029352918654,34.2056476205762,13.5820402760985,-9.40150155616176,16.8542086028247,18.1383172416501,17.2733814870703,18.0990272351939,35.2495144476185,31.0544957958588,21.1979060079109,23.8135172565229,29.7141913615433,31.7759855364637,43.2882414007536,23.7218084314115,21.2807686380263,22.3465426569919,-6.85975494657773,-15.5569157806827,13.6581085383125,25.7643515978036,22.5020302462274,26.4668386783235,28.6155613399751,24.5108613354615,27.7712781940727,20.2213655395973,-3.99042514519484,-1.97859397944339,-0.254100646852815,-1.18194722725652,-0.137137780735713,3.49419918633833,-3.68655380055813,1.45802178692714,0.550233245074576,0.457803104143966,-3.55121902689656,-1.80584709102098,-4.56080392471349,-14.2516501506809,10.650664518065,16.0073926081245,13.7207728677937,18.2074452103314,30.8078847893628,-2.43434881894139,-2.98672614021898,-9.2560763120111,-8.2444296329161,11.2311438048608,8.24704233053397,12.840481942483,9.79602761209856,12.6137942660943,10.2631945336188,7.33722358462192,15.508947068765,22.6846883197303,21.4195144564337,31.7657397780337,36.3601993692223,32.8764520577484,28.5626140390694,37.4728122088902,29.59030473393,25.9724781513905,27.8177075435975,24.482481722572,22.2964344137422,24.7876074573167,24.8679853892765,-6.16929174992096,-5.9582473830843,-7.64092936887508,-6.24711873550431,-13.3655223762707,-10.5477607446859,-9.4863512069148,-12.457924040531,-12.9459334482754,-11.3084143064977,-9.46756627627314,11.5528989428781,15.0916701009371,13.3929498438876,16.3283220741669,14.5068722857342,3.76514504722122,21.4963164733778,18.6832411426903,13.7197898597382,16.2053452683839,15.3208850773926,15.9873679196949,21.3890755682051,-5.70025707893868,-6.57412038570198,10.6869628489519,5.72069744056075,8.70657136160063,8.23469371738145,7.34768443606592,2.9301878619721,5.09432566171124,4.65911085736412,6.19156954842633,2.10989718916362,4.46640614096285,0.528694020009782,3.47399969088358,2.22082220452741,-1.00140045730557,0.158250411976418,-3.15050408816288,18.8666004196179,12.9065130323182,10.0572960349531,13.4828566682929,9.64621253037279,11.9159353738125,11.5625701440151,-6.54670634100447,-0.323616847760854,5.4718309494662,1.05316858555333,-0.676349279410862,16.9892266835983,16.3074312120443,18.8024589886116,-4.25888539534653,-10.5563405697259,1.34919187469849,2.74964870847919,7.88341208882395,5.91021372308023,8.32399318628237,6.34450851176322,2.52113643082627,10.5894794772271,6.29482434159861,-6.1638729450934,-1.50474613280336,1.40262901626755,-1.66958829860597,0.487648095091993,-2.14900383473354,-3.73791827631119,-3.55145182854028,-5.35175908751408,3.31632979595933,-7.54240017744365,-7.84797150153069,-5.89883514905745,-3.99042785045269,-7.82136067567121,-5.33611528866062,-11.5713979559429,-10.3083978202875,-7.54023276499243,-9.65120503740653,-9.22915623984069,-15.175911762522,-6.79366663647486,-12.3485442894333,-12.8612377503491,-15.1419412327286,-15.8199007037298,-12.8876332805148,-12.1821277447582,-16.1802688091155,-13.9978953084059,-12.2893270199638,-9.56335713468726,5.04456864594214,4.46938420706767,1.48296328656891,1.11193298684944,-3.19147102219567,2.84545989386028,5.26126900082132,5.16740348133405,3.63357592593346,4.87393053966542,2.44522116764621,0.1749160725061,2.51362067521713,-1.69477595105447,0.619185641026643,2.98763391485339,-1.61250963422926,6.24892283370779,5.16989692421514,4.30434266568254,5.71865158769137,3.60833485822297,-21.7342079070951,-10.0141858790167,-7.8308920123344,1.53478690888199,-0.504625176484488,2.84038055637183,-1.35080527947903,-1.98113616752023,-2.53228878579106,-6.24176986434863,-4.28392205319343,-5.09682135382274,-3.88059173780301,-3.56063343916157,-0.286696260823698,-1.76964988709504,0.677418599558857,2.22954813926712,-3.56258175729736,-4.70484138757145,6.33668067172572,7.3048949566897,8.34605299012266,7.65554094743646,6.17812718985277,-3.49868993879197,-0.428005685146411,-20.1518679906493,-18.2135407714268,-18.9101843444708,-20.0428618250588,-19.5067894477039,-26.3530351682773,-17.8039915495046,-17.2817781489736,-25.1265390176122,-22.8761233909803,-17.5873589834021,-14.4912633155333,-23.2439826726252,-25.3268422161339,-12.6717800342877,-26.4577586223112,-23.6988737689937,-21.1359314941852,-16.7825505650273,4.2030689630216,4.48345177397059,4.17008295183953,3.78648193076146,6.19627329992713,-7.55818061597032,-4.97636009315459,-8.32362996993493,-6.2420224699244,-5.01962355402268,-7.54830283057072,-4.98872285691254,-2.80288336810702,-0.507036317685718,-2.12911446639538,-0.989579919713133,1.24936170598643,-3.28757045232335,-7.31489035212827,-6.08440559954006,-10.473814722271,-8.85194124552657,-10.9102626511589,-8.28586122093996,-11.2595207388438,-2.65810363629182,-1.56405076614532,-2.39961684398405,-9.33916233961708,4.23003988352892,4.60520228554866,6.72192420488044,8.8374234806429,1.52237088695644,1.75023919513196,-0.328204381260575,1.064313867284,-0.580371447635635,-2.05732801721002,-2.5248992497088,-3.98372669668732,-2.58530536103137,-1.22440143477738,-5.13969616670633,-15.6451450850083,-20.1300269004961,-25.3854414436504,-18.0576024641527,-15.3150687685897,-13.7856317089014,-10.4365408303178,-16.6043516071254,-16.2721940725352,-12.7169904278882,-19.8383823948666,0.92062122677791,4.23630801404978,2.35090499530205,7.24404064172763,7.53077537006402,8.42622453950966,-8.14017579410479,-9.78528063348733,-12.2690235209503,-17.7329682005088,-7.29828878945414,-9.81124571465398,-7.18905772260044,-9.10379237010498,-12.7834615882295,-11.5352786209417,-14.5589650141745,-11.7103954554689,-7.43923723535336,-9.36054854286775,-12.7638797804834,-9.85154315575046,-11.5580411929567,7.68242045193023,4.32509740516333,0.825639332700618,0.528552137286247,-24.3725405664925,-15.3495441905572,-18.6331238091748,-15.3024009380191,-17.9640779094304,-21.3279182225119,-11.1599398347948,-12.4321414336198,-10.1231666447686,0.947361003773364,-0.779548445254633,-2.50811370857478,-1.0398597114483,-2.89751612478762,5.92171521694505,4.21950515695311,5.47793089063197,6.71351640356737,10.8458093468838,-6.29600638218466,-13.7922220866132,-5.06406557955301,-32.6805172695033,-9.19028953217916,-10.78030520877,0,2.08624959841326,4.12682911533911,2.4790811054668,-6.96663489513871,-3.35350941251731,6.71350985052179,9.16957378658303,8.772382341577,-13.3895550736352,-17.2126853017832,-14.4091041422807,-12.9390074147493,-17.3370210146594,-16.7814376475345,-18.5489489652536,-24.8791753037861,-20.7316666011481,-20.6931020464162,-21.5436537546426,-16.5856149565499,-28.8966579084329,-10.968884714459,-15.8545014970144,-8.29816661112139,-13.1573347720712,-14.5445381495026,-13.6414565090432,-15.9242455843856,-13.0747953324814,-19.0806026506245,-10.0976310128919,-17.0891956334116,-19.2253336720858,-11.9132397137257,-12.3759540487372,-10.1096212141494,-7.5475816037071,-8.61056731706259,-6.46956831682904,-5.02216490148352,2.42774459500059,0.770694278588426,-7.83111123935973,-5.62557410263471,-8.7019717560289,5.66304648201572,9.12238339044682,8.47919200433876,10.6330751059985,11.4201488687595,13.7001302610431,10.7597528962144,-25.3741928835632,-21.0062087073655,-32.0913375635114,-13.2909037601508,-16.8215982726646,-20.7624812054396,-28.9201438070499,-34.2868157614339,-8.36421148531729,-11.8251645901772,-10.5078545082474,-14.0231542125656,-14.901009241976,-18.3440953491039,-16.4320757321135,-15.6533579842772,-18.0431149610493,-4.60085069546466,-5.38338380833553,7.02567018957331,7.88246137123337,8.78533553409617,6.01043138671197,7.90485657208649,7.83963511392867,-27.9890075660828,-27.7307178558467,-30.7248465115211,-18.1242002300484,-21.6058950794559,9.69284348185219,11.924318381454,-36.2345527509602,-34.3163554937424,-46.4588443464979,-37.742924736817,-36.1606984286165,-45.6396961219024,-32.0530189305396,-41.5070647304069,-40.0213602228666,-43.9814856020632,-31.8479202350505,-42.3429859912002,-53.6657211243318,-38.4801509178838,-36.137940245011,-30.2832256989669,-41.6037285640342,-28.1426078225648,-20.7489540154048,-26.1239070504464,-40.4781834117543,-52.6006788797638,-40.5868358744253,-28.3848499844373,-31.676902675077,-22.8658752391594,-37.594216270249,-25.0431610320056,-21.4731321684042,-43.0615284890377,-39.9171550503869,-47.602380938338,-33.2436919408605,-22.2658157366996,-22.813022688706,-27.5258644024684,-47.6475194933272,-46.7586426692694,-60.2229989515152,-40.2911421576027,-20.6411736735798,-24.0215925552437,-19.0258113283487,-24.0617087873614,-27.6953338775197,-25.5395161706532,-27.1850979330881,-24.586629332447,-34.7803214397577,-30.3605790839588,-34.4251367481347,-30.7325469346497,-33.1729406070316,-39.3928784170163,-40.8892935689968,-33.6078304934868,-35.818941241294,-36.8058731105303,-39.9123391139683,-31.1759173611087,-28.1912533625003,-35.5911803228126,-37.9702596024115,-21.248037145966,-23.9722668435201,-21.3458335879777,-19.4078548478353,-24.3438387243616,-29.1519491817133,-27.1864729856461,-33.5458564314063,-29.690310107295,-31.0160452581141,-36.013989686026,-34.5789305157028,-43.1334901170829,-37.3789556282532,-32.5913840817734,-44.6796875178557,-37.1191462558854,-28.4942044881454,-40.7769492833839,-50.0197731962687,-46.7435571024715,-51.9926171218973,-55.1282865519762,-68.3000095721325,-36.5673684061809,-43.6095259470442,-32.2229476877965,-28.4274994434893,-29.0596162078942,-24.0101329494904,-26.9370752027712,-21.3653546646577,-23.9771903025506,-26.0792238951985,-53.0346587519088,-25.7049144443727,-32.7216864193096,-17.5484254796175,-17.0314234626127,-30.9847010215038,-26.1724805483746,-25.0748554647474,-48.1007480228213,-56.0186458730343,-53.4155857976044,-54.8566808080877,-64.4360606505974,-54.6849948944794,-57.7571911700179,-23.335622962711,-45.8081240714589,-22.756493212841,-28.7979403858411,-32.6091425272506,-16.3720310264059,-23.4143793411309,-45.2183485402115,-66.9145461733441,-48.3452925265262,-49.4359606939912,-21.6967483839234,-20.3638817628243,-34.8494570958121,-27.517753792417,-30.7197981214884,-30.6688121853174,-35.0359705977257,-39.2116450083832,-29.0471524106206,-13.9582240763515,-16.3588919082546,-20.6093140068164,-43.1881735960654,-60.0250862429176,-45.0488381603886,-42.6995439246443,-51.5848462250664,-58.4954800453587,-59.6877431674061,-37.9734618971634,-47.0947638449479,-67.1802968335687,-36.7913392516891,-69.5943275916566,-61.9363996883304,-58.9483351973963,-44.7653150960844,-51.545747345032,-42.7092989049545,-49.8000083185789,-49.5858961701362,-56.0402196510731,-41.6617381923752,-41.8422314110578,-33.3674914066317,-39.7612030275241,-15.6114165715287,-13.0169849854101,-18.8094623898973,-23.808500160861,-21.5892764616674,-29.505032906449,-26.1360822320697,-26.477166872557,-29.0505646133362,-33.8044432016672,-27.4188396296539,-32.065682494444,-42.854645786976,-35.3002484096736,-37.9380403370712,-33.7567176521511,-37.7452760984733,-44.5305548687992,-29.9422063275933,-32.0688859783637,-47.2335019712806,-44.8957150826963,-51.3752762689399,-91.9904589619719,-53.4053314794966,-45.1036157243672,-37.5381167767397,-21.4317917866517,-20.6212936419373,-22.2403239184563,-39.3803095718443,-46.5706179792323,-40.7058209887498,-49.056655053146,-67.4141179788351,-41.4341323670777,-52.7699493000424,-48.984395086816,-53.2779533916227,-58.2768331557957,-66.0966990993864,-59.8992570305056,-86.9773997021231,-53.6822264475628,-33.4207408935166,-37.1056318916299,-19.4003706257561,-17.8159041920463,-14.825415754272,-27.7963804621756,-18.2115141245343,-65.7719747286673,-36.1331409618854,-33.1646903738908,-42.2029066159806,-47.8802830362474,-49.6960737022632,-57.1340032913498,-48.1085545038379,-72.3175933681316,-46.9236282065276,-47.2317164820255,-20.2694820102094,-24.3525298584279,-28.9584816668033,-25.0961559324963,-53.5467283138321,-53.4478669269872,-59.9155330156759,-57.6796745407858,-64.9505942069015,-57.205259520682,-67.1476733672662,-62.001405672961,-45.6072704969808,-69.421957849601,-60.8402689778245,-70.6797013896526,-43.2345202683921,-64.9237167350015,-54.0833104442059,-23.781577211158,-25.6867868868233,-30.8877736445014,-69.0649276518022,-57.6839881364967,-80.1303342722845,-21.7522182703814,-29.7177714617171,-29.7886632788808,-34.6258089299616,-38.8870256253846,-36.5674079901948,-30.4114395792626,-42.8279128131433,-27.2967430950999,-25.9714235610744,-25.5957174315098,-33.4966909300904,-33.9631528342799,-33.0539144696877,-52.5883036233372,-52.4985020701033,-28.5164783200984,-24.1336179159365,-25.1154021104384,-33.3654824291961,-29.5372665259367,-41.4117099617065,-49.7436307874421,-87.3159193449301,-38.0492309782546,-149.845958956259,100.189316533635,38.5607458566691,-208.622250812922,121.748324774479,-265.206139784173,253.03566590689,-315.797850313372,262.880696102161,-344.184406825245,336.938582821386,-368.956530220937,356.114388391561,-343.356626927579,-358.310435348354,-337.804796099383,-295.384202800565,253.116783728408,-246.45682932939,177.98791982308,201.639523810376,-186.079089175244,46.4222279253904,148.723854475941,-121.112825032979,-43.6136762189771,15.3137944017316,5.95129296397368,17.2505752797069,10.0244672148757,20.8317761576136,10.5707899301926,5.61048739337346,13.9877796672957,12.1231029985502,13.6871145605045,9.90537911523355,6.97023300883522,1.51290890097349,3.74763839052419,1.33584734232397,4.5682200519971,8.76454982868644,6.11105020397118,11.1956543738518,1.00284643921243,-2.59241877545556,-0.812644150260815,3.97793842244592,8.40721005835795,46.4365160884437,17.8816794672993,67.6476184728817,13.2431291897519,12.282264335593,56.201890325591,-7.20816410956197,59.7671043587454,64.9994741446795,68.461283310585,18.1967714357442,76.7946785777359,60.0578442575193,69.1816412820454,80.0753038812714,63.6183962762099,52.9201559446969,56.6959973602036,84.199307142142,53.9435122399898,47.3104883726649,48.0079818703678,41.6736244337813,49.5548006618228,47.9440797749777,43.2468950033503,37.998144733486,40.7193055693294,39.5941424446399,35.2541896397212,34.265835958593,44.4766275427014,35.4452573228964,39.452370185118,31.2261597477132,38.4315202152537,43.3561231349473,34.7596889579271,44.0333450354467,36.7458372159711,48.5411812432783,40.887903607271,33.7766134681989,55.4175260404449,53.0751012830212,45.9140961268925,47.6103715733665,46.0091001273207,40.9184441227391,36.7421710781925,42.6879127441321,35.0683262185204,31.0412489424376,-0.659737542533285,26.3278955724971,66.0479796542887,45.4842745489136,20.0356962897552,9.88606554832131,-27.6233976517519,-31.5039711877537,-36.2095490477323,-42.154426301388,-30.2870791958733,37.0920750441079,11.1125173844208,26.8167197804841,31.137923449079,45.6962717971256,8.50128404522353,-12.0541923528829,-13.4389774564562,-12.108154943707,-18.3953939154686,-16.4717998814952,-18.0917592919523,-22.0252769475071,-17.5279207221343,18.2593122934493,15.0318362172195,13.7983146895775,12.3657792321033,14.7112400057202,20.5546617142321,-10.8995054779865,-0.333104250307827,-24.1051214116547,2.21341029546897,-4.94881516680376,9.90989391451716,-7.5612433310069,-10.5130901068122,11.846846271928,-3.04718987713102,-2.12122337279403,-8.26959215545593,-11.7892032829295,-9.77977216410032,-13.8493222104639,-5.71920792869198,-39.4644939337817,-16.4988478245436,-50.5454325587067,-49.7075492399294,-53.9324491753098,-73.1912751113811,-28.8684859345063,-22.668826497298,-37.2608855812179,-22.3633218577395,-25.63622665776,-21.1141521640869,-20.0272043155991,-16.9796151222476,-19.1290622517168,-15.1764219187133,-15.7727627870969,-30.1369912437532,-54.8025481093407,-40.992048934441,-79.2603081790992,-71.1058780968188,-73.9018638746273,-53.7955967319127,-63.7169594834369,-24.7137245172008,-54.9959743306,-69.5907513920337,-57.6412490700234,-71.693461647607,-71.7398653078707,-57.558842432303,-40.5398170557992,-56.7111682249336,-84.0417621794171,-56.274225443471,-48.2691554275275,-42.4303219246871,13.0269859910328,3.5322792760019,-0.841994108538018,-5.14947868698712,-1.86608127536135,-10.6756558290042,-1.29434659155993,-2.16848196004543,-10.9234475287941,-5.61927436829096,0.236822076782358,-20.7791355267146,-19.2681434576314,-16.552148825908,-12.5381064374756,-9.76107489878083,-13.4186451568095,-5.97911980055698,3.08746301140656,-5.14122111378846,-4.7495151153718,-6.06688277635934,6.22253450677968,56.4618188297685,31.8793846884624,-9.07613208667269,-83.4515266501784,-0.906715089135577,-10.1436024945859,-41.4739099593576,-38.4367666368744,-38.6354892365827,-35.4203763722852,-36.8208162533545,-34.9512777586034,-25.8432079785463,-31.8576913470693,-34.4996895701278,-33.8238958220479,-24.9838009328067,-30.4240573489456,-28.8254512592307,-33.9079293872227,-30.5632157905078,-29.4099351134065,-20.4554201810493,-34.9735748530198,-16.8354132885508,-27.7094100402223,-23.2525678971992,-25.9312874698374,-15.2037668155039,-23.3089354842156,-17.8415990042297,-26.3436698058615,-13.3609085563265,-20.3450369036179,-5.99979239550888,-25.1636000973231,-3.81926283627358,-18.1067974105519,-8.7362794210437,-11.1087709590056,-1.48438339779002,-10.2325133753256,0.18885948559954,-10.307784859807,-4.02719807176679,3.36369939138242,-4.51988512341823,5.91836244689374,-4.41096958987163,5.04461287241847,3.93869284422347,8.3152937809686,7.27550649886592,14.3942064669317,4.62297212351284,14.2941650677538,5.58976959283343,14.6627262032398,20.4799922877844,8.9532674139959,17.9094281758692,12.5534271416548,18.9136590005384,29.7564152204103,20.7541463308985,22.9418489853454,17.4591383882655,24.8667979187286,33.5565804539489,28.2040600240721,27.7083044652276,21.7285508619566,31.4291772588948,32.0906270910535,34.1480990913792,32.2969166100903,22.1909061425999,33.6522719159666,38.7810376569337,30.3401524658533,26.9996895171431,30.3138934718273,36.2726595155404,35.5437449444465,31.6327824290528,29.9977767895225,29.7635141167639,31.8725738034404,35.2922850705676,35.3996793641091,27.1191545359393,31.5351628553268,34.6896123066188,34.6067450592117,30.7944841173785,22.2283259975694,31.7407320385945,33.327239941023,28.8107300959146,23.8390046384118,16.5266703389571,30.7164606692198,28.3554114244987,25.4011659179466,26.5405782419682,15.53291960759,26.1243006292238,24.6662234129959,16.6056409263127,27.8351946322876,14.8681939051851,18.8175804528305,19.0579150199727,11.2521742362046,18.0922174225844,6.65737633283349,16.6706965573104,12.4458502911316,3.80449174453157,11.9483924437603,0.931257311093149,10.9987741898466,3.01644333872694,3.82899671495217,-0.439280119972837,3.16241820630623,-7.16875400689715,2.71814874659366,-12.5398259949136,-2.52484363463636,-18.5493883340036,3.61040501711917,-11.9875033416099,-6.12450680078225,-14.4925826579653,-5.59589026027194,-17.1933383842098,-16.1345682975014,-21.925335218504,-9.81794377065365,-19.4301431338148,-11.6130343305824,-21.8725947828387,-24.5326725264521,-25.9508442563572,-18.9560214482277,-27.0292065840953,-20.8968047599065,-39.4037657528765,-23.4658197096759,-31.4331150263802,-31.0956180015026,-34.295417500739,-25.3073048121911,-42.377340638763,-27.9897707028164,-32.34332082069,-37.405797845716,-35.7950589066358,-29.6096724892845,-39.8122082090022,-41.0531113274845,-44.5531741327569,-103.384891811688,-5.1999310265349,-11.8792464693302,-140.896722956568,-72.3692071532599,-143.768847715308,53.1549468323372,8.57972797654564,32.4309621472295,-5.0330085876162,-63.3130572818708,-20.115470994917,-207.239441492315,-141.207670905959,-216.21467702993,129.148088282931,21.6000649343896,29.666128139416,99.2729794685241,-36.2542987613896,-28.5740738497468,-195.524956059294,-280.23264426038,212.051305620567,154.785202592767,170.59106768339,-330.449446789486,-37.3048112182373,-372.543620725813,-243.002590868217,-361.389946979958,252.125996492657,50.5113745618135,178.629225001831,264.625184915589,196.591456409952,148.494013497347,-50.1713274053626,-259.017693843452,-292.001081214006,308.532513582158,257.862472257379,352.126435728073,284.877551907133,-351.191501993374,-47.3204676333959,-418.891733777023,-317.442797266562,-320.376173281137,313.590670548525,64.2114131174391,289.589054969707,351.661685206916,320.746178501099,-59.7431400320217,-337.540277596427,-319.312151026329,55.2838280151196,362.146412083377,416.231770934848,333.897395959714,-372.079926090228,-35.6667930339151,-332.001268471157,-275.246597643808,375.290752220284,66.3560511815992,376.546305078533,-407.422880514111,-58.4760714773709,-366.980301180777,-323.620506241199,-216.565658357956,341.184239161932,284.018949431043,407.884351479712,328.024568159546,406.526646215342,-46.8175102095526,-307.327121305348,-218.762760614962,245.70880691314,250.395606845649,365.98714476258,289.219712565445,428.477446363186,-292.554885598773,-52.6421288591152,-269.997847571829,-265.300019775419,-234.651082952373,156.887213095127,38.5321042960372,268.061873079956,234.077437077711,397.82996004328,-45.6479463926308,-199.429100766357,-130.405098973466,104.673993398156,32.3392734079097,217.289505601818,161.75678703205,-189.548433655676,-32.2145775701183,-123.498269959165,-163.776570484049,-67.1574007406703,34.3012840984168,28.1868825206228,154.452275997204,82.2546600356895,-21.0066205553808,-103.980743633423,76.7558468931399,41.1692650472936,-44.4860454533054,-8.80316561652654,-17.1614463284442,-6.72837236897481,-8.82333913784788,-23.7560522289782,13.128000689158,-4.44991312813364,-25.0615762326268,9.24044171267553,-31.9902200146283,25.1237907296262,51.7468518122851,226.10099682605,14.4286465809717,-32.1185177222512,23.4703006149426,-55.1409184688924,34.1463378773772,79.4524262334572,355.716194218162,21.1171196862424,-33.0379810524856,32.9393366521845,-23.4349415867099,-40.6657590641661,79.6947490842439,392.63005585856,52.5798382873569,-42.0026812654259,72.2510289614699,369.242029475994,21.2417325774895,-28.9947780800469,20.8254107469776,68.9529612494246,319.189984945925,16.932270901541,-25.9362912527258,14.0480580467293,28.9643955714335,-31.7247252432174,10.9620295798787,21.46928922826,-7.00320856420812,2.67040859352765,0.706514988699311,3.65885916737547,32.8382302290449,30.814017088623,58.3309269537605,52.2006737419042,87.6553935322862,57.1676122067318,68.2645378140626,59.0117039898799,60.5026452194005,51.3459678716177,-0.27219795530112,1.28656301584881,31.4626546502209,41.8766207049734,53.9650891760098,61.2374629238078,81.581880236392,60.7983017254902,53.4447759546869,50.5463147750003,8.10265296857285,-9.72638894451509,29.752531007256,49.414644867773,77.3164217082934,77.4895342636629,66.9140968988021,71.6941892178782,53.8799224563104,63.4912919778807,46.9834915118235,35.0250702667365,57.6338400023063,66.9853946995286,53.6302427561026,63.1528421170099,63.0406547430572,54.6222251177389,32.4607646300099,34.6143519515511,54.9960839201634,53.3817679514555,56.5639905728273,65.5404257679216,57.1224581951949,58.3584153533533,46.3656715813244,25.0749758432941,46.6634756953,45.3525828969959,25.2491799953264,27.0538025759069,31.1869588011576,49.9440623722785,60.918844122401,45.4058823986426,47.4325368643323,57.237151096577,41.9354472348898,-2.41203668545274,-9.05280415359048,11.0351175910933,88.2463131223426,74.405789038282,68.2071239358914,56.6875927172893,59.3659935004173,62.9082471183234,67.7018457466981,63.7357067039311,50.0624321862824,403.72352521839,4.3607069377153,312.417944705625,445.383787107045,77.8945698007295,70.0818206528526,55.1037646922764,49.8940137475172,44.9367543277564,67.7257832007706,44.0605505781159,56.2535245486564,36.4616630903779,33.2660714670603,42.2889280811278,39.7670914667354,50.4059314964714,47.6737877535416,48.2151214144211,41.8451608640507,48.723219340596,43.9232470748838,32.8459701800005,37.3982636870739,34.4151040471288,38.2707804091014,34.3616857421293,38.0316553649935,42.8754780075171,33.2080502585314,39.5588242001371,38.4635576498748,36.3506353107068,35.6996757535245,30.1377589954198,-1.56636996941239,-10.1086715631755,12.1003971886645,36.1186493113365,24.7568929531045,47.4972287713891,45.3875804843013,55.988811678363,63.7086432180305,38.454986429276,36.8594127989984,34.320448789277,28.0578238723662,31.3116146905345,31.4864962345318,28.7910980404331,40.9647628783807,4.70778727093753,-4.7389897150985,-6.67096043366853,-8.43536376575909,-3.98594716383063,-12.4097988212893,-7.57473536522894,-4.50727020750954,1.3544342188927,-1.40027928124163,0.779325408366452,-1.14704555548235,1.37645292683791,-3.87381042781527,6.28646728178827,4.70808920612625,-3.04516123254531,18.8338720592984,42.5775831713643,30.1057382882567,28.4713760058296,52.4238431406642,43.9379114432572,34.4502923435322,38.0710765054657,36.3760272272179,35.8811307475881,39.8330571289142,42.8648871167034,25.4162896894798,44.3681595498122,36.4048977156967,50.1686396336035,41.148092158279,35.1609687369242,44.9601556263384,27.2346316022427,59.8165516645546,30.9883919337062,31.0750905222217,30.0092200152857,33.953257694935,27.079450356059,23.9038399177896,26.0710060635507,21.6900561697485,28.5191585825765,24.2169731666474,23.0540285618025,23.0527732555212,17.477904838163,19.7540315480088,20.7035210196434,21.6959002780717,19.2053026085119,14.2730893384616,22.0833498477839,25.3706727928366,26.9286495256844,27.0062734063878,31.2252799402909,24.0147432099697,24.4160654800313,21.7551057033092,17.4509014896473,16.4242203513574,14.581752534672,32.0174469311631,28.9314108844153,18.3099927317449,18.625900965267,13.9190463935809,16.4255630646233,20.7238870837451,23.3107475308044,17.2749642335404,21.774391232883,21.0430503654889,20.248587742469,16.9358245423875,17.3851081597937,13.1223812396767,15.8519226148824,15.1501078785494,12.8027970091636,-0.53854653312601,3.2149592108935,2.21408217143991,5.81498550572971,3.74640258248135,4.01032001167487,6.68648071832029,8.27844372961712,12.5421282714072,8.92870925821313,11.5293000744074,17.5493329639174,14.8548708280347,9.1062471209865,6.89905971474642,19.8800128267148,10.0525755969932,13.73177025179,18.6827012884454,22.4459629324194,16.7698710281867,-17.7077186982958,-16.9473098773817,-12.4627244005478,15.2900045690385,144.334231054206,13.2727929309976,41.1286686382276,38.4847493631032,37.6051986050577,47.9554694524803,63.2113610097865,32.2512232992509,41.8001456069111,54.2052436962138,31.9147685510488,25.8145560693652,17.7456677702962,20.7543952709463,19.3591744017201,20.7164568585755,58.3675114867382,40.1567135613559,36.8391299052458,48.3039165049977,27.8167627271055,31.7121398021872,23.7181578116061,29.0438525398976,28.9480081121794,27.8912294175453,22.4850622222128,24.6114967754895,25.0716076907896,22.2880332272267,27.4342815994458,27.1509071949895,32.4176598230224,21.3643615421318,30.3947412972184,24.2468590698164,33.6734317523661,21.6449614939761,17.466586927587,17.3014368076116,20.0461447562801,19.3887100548531,18.0851189458444,13.2345012688383,15.8176209624842,13.8719403059789,19.9109285309853,10.3964475777784,15.4209791666436,17.7335484080558,41.1254927639216,47.3222069311969,20.2828071169676,14.284712481708,18.2411720746575,16.6812766921094,19.787495627598,23.4171012880332,14.0312007712567,9.61080377878342,9.86837372374529,11.4915985523323,11.8004291410385,11.1749007798845,11.4728750208004,25.8612825710964,18.9333307527334,15.8692292939086,10.7593332145683,12.8717320244088,14.2418776173283,9.72241011099534,12.0948624422243,12.0293730531353,9.60751778836445,5.85106450462235,7.88556910270195,7.62037500479743,6.11759740799954,2.39305900757614,2.14529585763872,19.570546575473,14.0733704175214,-16.6562203516026,-26.7604862171172,-19.1642837603825,-23.3974583953843,-13.8187278612441,-28.57105844998,-11.4127968741013,33.2575890512204,24.8599953664932,28.2731848652288,24.9437342607077,27.6532918949938,28.363286052974,29.8327263826207,24.4363387617597,20.8338205105239,21.0812333371867,30.0849680953266,31.0310988206285,26.9799831645987,23.4492689316408,16.6309283050857,23.9606294831875,68.2774657013085,51.3770837079826,50.1127499355369,40.4667207130491,25.4392986069013,19.79774152653,33.5839417430321,27.0389033013416,32.5629903230994,39.5676847784676,16.8409894989063,16.014729588154,11.3896788318409,13.3741578786775,9.88467750960407,-9.7124267961828,26.6635683099304,22.6815320688092,19.6787209577472,15.267778847905,31.8362179341811,20.1130313772234,19.2877332838302,24.3854067189199,13.7252440435585,16.7736084773868,15.8907861303664,9.92104488929274,13.7138538552367,12.4335929615116,7.33932840846558,9.43199835165465,4.61982101743649,7.05713869817128,6.77570132657568,7.4481231475605,10.0982646538907,36.7039382471122,40.0896923313787,25.7855024360633,24.7125963276421,32.3072935562641,26.3236164961222,29.7776657477627,27.9233518386856,34.2394291611485,13.5941193657237,-9.40985534931799,16.86842114435,18.1542296218036,17.2894731426188,18.1144404876887,35.2837036949798,31.078169047584,21.2171983983141,23.8358070350569,29.734007958928,31.8047483411134,43.3231662063194,23.7409378745179,21.2938893578317,22.3651866296113,-6.86503528565731,-15.5668649501316,13.6701258941221,25.785243221085,22.5218706498075,26.4878610695048,28.6402944676994,24.5323255554842,27.79437800729,20.2419980903799,-3.99431714760557,-1.98012722539962,-0.254328153026978,-1.18302085697818,-0.137206507207445,3.4974043509383,-3.68938051565807,1.4594909907212,0.550951296375085,0.458239172559485,-3.55455626958905,-1.80769017316333,-4.56520162735282,-14.260718986805,10.6611555667098,16.0213345171606,13.7325701196781,18.2288892493739,30.8327350899908,-2.43647762269038,-2.98976295120565,-9.2641738666545,-8.25222324490981,11.2413475497069,8.25444425743911,12.8538630817379,9.80531396133938,12.6263860111648,10.2727434365628,7.34383483741222,15.5233409587678,22.7047379284946,21.4400879616242,31.7951243179506,36.3894042236188,32.9092363924704,28.5883215212693,37.4979795696675,29.6210559187925,25.9959557549849,27.842724663417,24.5086967745537,22.319603441166,24.8134746488989,24.8917789951638,-6.1750189083336,-5.96339541861385,-7.64791677911528,-6.25258077510286,-13.3766115860612,-10.5577904458193,-9.49583079050489,-12.4689412393317,-12.9549696720637,-11.3179137639627,-9.47513483934704,11.5653070434911,15.1074367576759,13.4066494225753,16.3449655237857,14.5230145147153,3.76884618069247,21.5179142268552,18.7044906988906,13.7363371501436,16.2222473461347,15.3371531465474,16.0062214171562,21.4141906382923,-5.70704067991213,-6.57924002057678,10.6988865303757,5.72760179299932,8.71695502801966,8.24481327964712,7.35599722454822,2.93332412461158,5.10011431404354,4.66419676250882,6.19803021072656,2.1119562821428,4.47157598401877,0.529194955635446,3.47797596532659,2.22370772871208,-1.00234957966235,0.158551375244497,-3.1544331967759,18.8865199771595,12.920842335903,10.06978600222,13.4995617197868,9.66104425469034,11.9318027115551,11.5782532217731,-6.55396180812843,-0.324119631383993,5.47876141132255,1.05428715909212,-0.677058046089998,17.0068579220151,16.3271674637074,18.8223172605423,-4.26334079636162,-10.5682276430752,1.35043043314227,2.75213728224595,7.89457019296714,5.91990005906816,8.33640690424687,6.35437071227041,2.52551688937487,10.6046360105034,6.30282721370749,-6.16979453333633,-1.50645841858141,1.40433076307936,-1.67163488682032,0.488197782001714,-2.15178281698587,-3.74267249115909,-3.55632270403767,-5.35783289488229,3.31988101470218,-7.55319579625796,-7.85722170012018,-5.9070120165848,-3.99703817343841,-7.83122363842541,-5.34450724270005,-11.5846865264133,-10.3195250047859,-7.55248641343493,-9.66379393827338,-9.24170431085889,-15.1919614469315,-6.80483494841366,-12.3623259001858,-12.8758934566893,-15.156236207384,-15.837604748735,-12.9028435910926,-12.1933597073875,-16.1975743304303,-14.0149481302048,-12.3045416024267,-9.57275136365674,5.04927542033257,4.47328233091808,1.48399998576102,1.11349144029373,-3.19485946160115,2.84812321163264,5.26667600560012,5.17258707725277,3.6381580711896,4.87991307333788,2.44844233384192,0.175138589270197,2.51780255142926,-1.69696381030185,0.620031841897087,2.99228769251582,-1.61496841160718,6.25874740314775,5.17683312057961,4.31149195166577,5.72894173044848,3.61485741369128,-21.7555603900399,-10.0285110055706,-7.84022286276013,1.53715150813714,-0.505255112257564,2.8446138524051,-1.3525150639858,-1.98451929648524,-2.53576068473016,-6.25024834398415,-4.28987813468037,-5.10335659304064,-3.8881314723253,-3.56736359918673,-0.287491581116496,-1.77275614874563,0.678417763778375,2.2338734857788,-3.5662076979585,-4.70995350569726,6.34288813893261,7.3137630914298,8.35556433830453,7.66234112143654,6.18584363109742,-3.50456739603689,-0.429063772793552,-20.1720836368836,-18.2324261747744,-18.9305955902725,-20.0623053014937,-19.528719859501,-26.3752500548349,-17.8206751947591,-17.2993474686991,-25.150167766829,-22.8998232416988,-17.6032095833575,-14.5100114757755,-23.2656874380507,-25.3471384458265,-12.6886192446342,-26.478883524627,-23.7198894748795,-21.1552209755812,-16.8007694517701,4.20955923572501,4.49146669155017,4.17758442496036,3.7964751757525,6.20730613696984,-7.57237795946475,-4.98140790695736,-8.33207765390926,-6.24752091137863,-5.02338696284606,-7.55481146784778,-4.99343799340106,-2.80527578657766,-0.507505795878555,-2.13106820398995,-0.990325147406824,1.25044778885202,-3.29041125801408,-7.3204562708927,-6.09013989260979,-10.4826469772119,-8.85883880186641,-10.9180093500234,-8.29307344598073,-11.2687758834173,-2.661124981224,-1.5654444099597,-2.4025484861212,-9.35052265227744,4.23369205512206,4.60860251747548,6.72735535974263,8.8452947964846,1.52566753096698,1.75526452557763,-0.328829640927512,1.06702569492091,-0.582329633821245,-2.06130130088436,-2.5305460749311,-3.99399096463231,-2.59287825497985,-1.23107924696075,-5.15031127370246,-15.6609516795447,-20.1509172016729,-25.4064288491108,-18.0737679767861,-15.335360716391,-13.8065144776502,-10.452316565197,-16.6236045693049,-16.2917985103971,-12.7351046319227,-19.8589095914613,0.923421971269192,4.2462755391092,2.35716628923443,7.2586171437769,7.5425734607524,8.44058717069571,-8.15438494963602,-9.79384726692408,-12.2785443513851,-17.7446872725879,-7.30602381841899,-9.81968693521984,-7.1974581351954,-9.11366173931162,-12.7947528342109,-11.5467669177623,-14.5727163155727,-11.7232898729412,-7.44887395020051,-9.37139039895348,-12.7792133238458,-9.86420535716563,-11.5721329884658,7.6891050239458,4.33389551587288,0.826969741104673,0.531571157512518,-24.392077219952,-15.3643957449858,-18.6485443082718,-15.3169150967556,-17.9802178742549,-21.3444807222024,-11.1772408132844,-12.4499299212309,-10.1393329999478,0.949857214805317,-0.78174698137421,-2.51335821159884,-1.04447367412974,-2.90487631709072,5.9350885640277,4.23168812200976,5.49047049589278,6.72665188007853,10.8636481853708,-6.30905822194027,-13.8035917024979,-5.07082882286813,-32.7047684223617,-9.2055422830059,-10.7955881635545,0,2.09680027237569,4.13806637526129,2.48811206730008,-6.98026385583349,-3.36421864395547,6.72612577065575,9.18616935672722,8.78845070512877,-13.3982564945119,-17.2236995936729,-14.424685763795,-12.9484160232584,-17.3494098997466,-16.7897432727416,-18.5578139718404,-24.8930047596895,-20.7479951272928,-20.7087791106326,-21.5602538926431,-16.5992899947957,-28.9190778460926,-10.9824602434577,-15.8720910886203,-8.31028472214155,-13.1740170208468,-14.5615540489254,-13.6599474959072,-15.9401641384344,-13.0922795555268,-19.1001155297667,-10.1130105675794,-17.1078585238219,-19.245335018852,-11.9294643301951,-12.3923466505276,-10.1267184587722,-7.56087395155225,-8.6241665060104,-6.48133586840379,-5.03233571872027,2.43645705280607,0.774604576724899,-7.84693388252384,-5.63870302201318,-8.71680740766856,5.67594892063132,9.13638041286053,8.49432223804351,10.6490110406499,11.4366217860472,13.7198448166576,10.7742435196545,-25.3878603004838,-21.0294103725759,-32.1189730567915,-13.302679886435,-16.8365978321065,-20.7774262277241,-28.9434666391783,-34.3157945764011,-8.37563503144875,-11.8443526460814,-10.5255063822948,-14.0439052159937,-14.9216954045072,-18.3641490922733,-16.4514734631376,-15.6731811196569,-18.062128766072,-4.61305882805989,-5.39750730076022,7.03912534196135,7.89594114024844,8.8010085199334,6.02040863184836,7.91692579629153,7.84966009500938,-28.0374768542605,-27.7528057910974,-30.7474611092218,-18.1449120549307,-21.6276865729056,9.70670407254156,11.9392459216121,-36.2632080261394,-34.3404797497262,-46.4896669290329,-37.7761987778384,-36.1872138752619,-45.6659164758682,-32.0798342373258,-41.5366128596114,-40.0517284682099,-44.0147932039888,-31.8756070388936,-42.3713813848033,-53.7042023633241,-38.5091876979973,-36.1686413441002,-30.3070589669139,-41.6304385466282,-28.1604315968359,-20.7714139861896,-26.1485081404171,-40.518873956287,-52.6196272332986,-40.6121035163052,-28.4078672779668,-31.6993925048586,-22.886342263007,-37.6204220352713,-25.0651053320665,-21.4899156814167,-43.1022369332383,-39.9447913764086,-47.6515722788783,-33.2669989452931,-22.2896794670762,-22.8346691808063,-27.5509171366907,-47.6839975110711,-46.795772397166,-60.2625906261269,-40.3161782386293,-20.6658205296134,-24.046768372462,-19.0482410520355,-24.0850054269105,-27.7189172264845,-25.5630308486502,-27.2081560319495,-24.6084257879191,-34.8088914992148,-30.3888065517657,-34.4538029943522,-30.7609608762909,-33.2033228778256,-39.4204488243849,-40.9222596189467,-33.6347720718699,-35.8494219192326,-36.8345355195666,-39.940598147973,-31.2068900665331,-28.2194474091595,-35.6234976226177,-37.9945962881917,-21.2693809485935,-23.9936263104629,-21.3673541522931,-19.4261938458808,-24.3664909923023,-29.1763959967054,-27.2100288478056,-33.5745167636108,-29.7153808456424,-31.0439986461784,-36.0414936117015,-34.6048490829274,-43.1661671410572,-37.4084927526423,-32.6179796407427,-44.7087292879047,-37.1493513568307,-28.5188421254859,-40.8125658706761,-50.056470129977,-46.7773907400277,-52.0311970658732,-55.1565057752573,-68.3592998321262,-36.6032202559647,-43.632518992844,-32.2560506649668,-28.4466618535531,-29.0852046284656,-24.0255382365805,-26.9551668507533,-21.3790151690905,-23.9940533951981,-26.1005481374701,-53.0744660161061,-25.7279329907336,-32.7508792486352,-17.5674208291343,-17.0479496377381,-31.0125682160886,-26.1965146626926,-25.0986680251169,-48.1390131150712,-56.0573943274714,-53.4703943842021,-54.8997725482917,-64.4840548878745,-54.7413014744071,-57.8046197782126,-23.3556401803682,-45.8424584370985,-22.7790378334021,-28.8227743916557,-32.6377348884619,-16.3878094380378,-23.4352775306917,-45.254928456958,-66.9620782157265,-48.3878262610332,-49.4766198759851,-21.722413966898,-20.3851895030664,-34.8778832529119,-27.542239646777,-30.7484439287682,-30.6962680971668,-35.0653678435429,-39.2398296316665,-29.0770499240587,-13.9730425704148,-16.3742193149867,-20.6291122907647,-43.2203456041574,-60.0675799271471,-45.0835954623216,-42.7331162456287,-51.6272896884501,-58.530520067117,-59.7250558871924,-38.0044250981614,-47.130166058665,-67.2267113510449,-36.8210150683268,-69.6285099869598,-61.989275157424,-58.9959298682821,-44.8034723079129,-51.5824819006553,-42.744694662068,-49.8284691060742,-49.6195377590603,-56.0793645219219,-41.6997867626745,-41.8722305447539,-33.3992227502002,-39.7935820516558,-15.6266433335382,-13.0294659823833,-18.8253525432062,-23.8307388647445,-21.6104649213475,-29.5305979954834,-26.157874123951,-26.498671923028,-29.0764067453796,-33.8304061637304,-27.4402193418204,-32.094246694721,-42.8907224772423,-35.3270012931671,-37.9663791143536,-33.781195634525,-37.7748432410033,-44.5583982113141,-29.9653696965062,-32.0936308421195,-47.2650667679935,-44.9223181964093,-51.415680208418,-92.0801944259883,-53.4784140163387,-45.1360220940631,-37.5680009716743,-21.4490988524918,-20.6393247556281,-22.2579417272309,-39.4147630988712,-46.5990673046452,-40.7314335423125,-49.0887932140518,-67.4586765309535,-41.4667202892292,-52.8065540617425,-49.0302977777013,-53.3183625288514,-58.3074281972384,-66.1481296914255,-59.959929228864,-87.0444312343812,-53.7841742600823,-33.4509718741695,-37.1334902170551,-19.4172037027095,-17.8325642884129,-14.8391530053024,-27.8187287669167,-18.2304338044005,-65.8203392065889,-36.1618666814641,-33.1877526837676,-42.2413314895663,-47.9159431174656,-49.7280727115298,-57.1625523544538,-48.1389506936289,-72.3788798373531,-46.963983678836,-47.2745486888499,-20.2856663471938,-24.3714322916021,-28.9848657558801,-25.1186387555896,-53.6055765144201,-53.4958056546039,-59.9796378559984,-57.7420379738929,-64.9897264388183,-57.2432009976189,-67.1747036347517,-62.0434362422313,-45.7150830974785,-69.4931760521921,-60.8806241096073,-70.7522578692041,-43.3250421516892,-64.9900571988271,-54.1194972407839,-23.802086303679,-25.7053861449063,-30.9134672553279,-69.133606383026,-57.7425773906625,-80.2141369104925,-21.7699084567738,-29.7375809361902,-29.8096200137253,-34.6556716663455,-38.9237599599657,-36.5912897671558,-30.4318860126052,-42.8477724194664,-27.3175127207378,-25.9967975529883,-25.6154824677238,-33.5181549728594,-33.9948406225991,-33.0674567995174,-52.6432686166394,-52.5359069887785,-28.5406348046151,-24.1563361583197,-25.1440957416074,-33.4045003878821,-29.6498318551538,-41.4400463046071,-49.8131278119357,-87.4950849034016,-38.1310618051168,-150.152760823024,100.400678704523,38.6344108372534,-209.05987217714,121.989604186846,-265.759776938013,253.557787467089,-316.451102667892,263.408594657159,-344.889274271119,337.621480843157,-369.711579729305,356.854559066513,-344.033252706068,-359.057747237505,-338.514931049157,-295.992632759418,253.634751597247,-246.959648341541,178.350644987401,202.022400735923,-186.452525247354,46.4998042403804,149.022129321522,-121.355342143517,-43.7015117564104,15.3354787433257,5.95581317190495,17.2650382970277,10.0334053283375,20.8569185545114,10.5780710390998,5.61421706696295,13.9996416934895,12.1315750250772,13.6960281035772,9.91380155776158,6.97496678167687,1.51380015187555,3.75030628434318,1.33648900541974,4.57163591057062,8.77177471297887,6.11642029527962,11.204801848215,1.00406342827868,-2.59448783482498,-0.813444219064304,3.98137789208258,8.50736064315181,46.4727953178378,18.0732164552223,67.6927866148456,13.5036852122541,12.5144226530742,56.2413865770795,-7.21888253989334,59.8730121485038,65.0591074661777,68.5016496307393,18.4586253949897,76.87720253972,60.114103444914,69.2448997548137,80.1382482864482,63.6685004609713,52.952516280738,56.7508026380388,84.2685219640868,53.9909781167972,47.3503774033726,48.0453045216259,41.7036659267432,49.588153013526,47.9853552928864,43.2840790140182,38.0267802988716,40.7519510353363,39.6257519637064,35.2844845937076,34.2957803602781,44.5211550272472,35.4779217185839,39.4885750864163,31.249158413467,38.4669519786663,43.3874869113037,34.7905236302513,44.0653136096368,36.7768487024082,48.5796126908074,40.9200287357511,33.8023553630268,55.45860814951,53.117991073771,45.9485624071316,47.6407807378872,46.0499029510357,40.9613004028523,36.7696311999576,42.7321746331773,35.0931057495141,31.0620184926777,-0.66036515460532,26.3681488400293,66.0959064634857,45.5337261953146,20.0599074448003,9.89728079840713,-27.6589396402831,-31.5294557837597,-36.2329352243659,-42.187564735702,-30.3193060615599,37.1203821773957,11.1219516173989,26.8374117897621,31.1594031541383,45.7320936356688,8.5097051005098,-12.0660463454909,-13.4499562553437,-12.1218810406384,-18.4075181808746,-16.4857380644658,-18.1074825861262,-22.0442327195189,-17.5393774188144,18.2799370023367,15.0536763317088,13.8173617648274,12.3820830162799,14.7305977435332,20.5731420971223,-10.9142747978229,-0.333523132835852,-24.1272183029967,2.21536572440918,-4.95782929677456,9.92506373088459,-7.56943939405683,-10.5239762143773,11.8639679873506,-3.05814506049436,-2.1313497700834,-8.27565066614498,-11.8007590808055,-9.7864620284353,-13.8652671427632,-5.72897628760713,-39.4947118693644,-16.5182070283968,-50.5958835854872,-49.7403385765042,-53.9703316553919,-73.2516842069178,-28.891654292817,-22.6936104781535,-37.3410437038656,-22.4162557373284,-25.655344196323,-21.1352865938596,-20.0426593451752,-16.9943760204023,-19.1441941759715,-15.1888355626471,-15.7865656581693,-30.1646880921326,-54.839132654977,-41.0275807699039,-79.3455680516129,-71.1628436812296,-73.9526367865365,-53.8313681329886,-63.7776958183,-24.7332579874428,-55.0373490725171,-69.6317757867483,-57.697957421878,-71.7396284393882,-71.8033610303379,-57.6194305038666,-40.5734051067612,-56.7950382677753,-84.1077479406177,-56.3520917927013,-48.3022134321472,-42.4611756760923,13.0391754986841,3.5363509709693,-0.842558586194006,-5.15346160255018,-1.8666773878536,-10.6855543220723,-1.29531481627055,-2.16982769395523,-10.9339020913747,-5.62300827507565,0.236675349971212,-20.7980217312338,-19.2877197272442,-16.5640517694286,-12.5476486831815,-9.76820598812071,-13.4307295427264,-5.98587398924191,3.09039949758242,-5.14485980820793,-4.75384968730102,-6.07159711457147,6.22771782214087,56.5063036146184,31.9071337117849,-9.0827072327161,-83.544024014814,-0.90737831675958,-10.150806414807,-41.5502067007864],"Archive1206_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.15981973015966,-4.10018870754644,0.668541123169185,-5.2068677246264,1.698861288268,-4.88443108159395,-0.188917617981385,-4.11641287564478,-3.36027645031394,-6.43554377806672,-3.07230675245279,-6.26140785224079,-3.19603005526162,-11.2577890832291,-4.90308049023118,-9.78421906740541,-4.98170458538841,-8.98315484494668,-5.41431356341912,-9.88548831505764,-9.74838412754094,-10.325131188938,-8.0210831623194,-10.6729020340548,-8.8369467798568,-15.3983405112946,-9.4546472376893,-12.2984594051941,-10.4970533020302,-11.0084423052867,-9.73850685017154,-12.9297613380582,-12.9206173585313,-12.4588661950169,-9.1958310254319,-10.2031104330693,-11.5365182907073,-12.2912023707039,-13.5164898499998,-12.6127748848123,-10.6694079248007,-12.1025762256878,-13.7805887334773,-13.8156267526233,-13.5456683507844,-13.6689967462002,-10.6661825566821,-11.6938562583365,-9.86616194431324,-11.1003783759415,-13.0877145757046,-11.0389195548918,-10.1110657986699,-7.61906254459011,-11.5791198712282,-10.7713617129631,-10.7528613929306,-10.8598903420815,-6.49654142445089,-10.1048539219995,-9.2460337204443,-8.01289284506622,-9.60698405196865,-5.22149277545152,-8.4639103091309,-7.6511963667468,-4.45146804081541,-8.0738790665988,-3.54196564848248,-5.77562803040455,-5.01178517418038,-2.42368965234468,-4.37352615766541,-0.371378064226748,-4.5843744270705,-2.30360865707937,0.621942660962182,-2.31380173945449,1.37067363328413,-2.1325744132555,0.282381098126288,3.26058971745847,0.701907929783572,3.74642144618969,0.215480338388107,3.10573402839375,6.21978869461284,2.6311861968584,5.37282744376852,2.76814371643515,5.88825199914894,8.40432394050483,3.23093110834938,6.2693635665735,5.4606878669989,7.87439170545647,10.8959573338405,7.2796959520431,8.56690994339927,7.15653166201552,10.3474535591858,11.4446312361655,11.8132778856766,11.6538629327231,7.52580334478417,12.1934175723969,13.102347626806,11.2209689619935,11.1426686124628,10.3202669343318,13.614030957833,12.9359670467014,10.6977187799612,11.0701121203149,11.4216138424952,13.8666098248676,13.6395290666254,12.7234211925723,12.3284919218978,13.6397417884392,11.9266971691278,9.17747909145322,14.8717763231344,16.4041193980032,8.34433807472519,9.57196859264005,11.4197446727879,9.57639333395942,11.5772047286602,11.6010865359552,12.2300174624874,9.38678990525359,9.29982952295132,7.57603264055464,10.2678190529647,8.80492066511905,10.9365963549132,6.64479115109774,9.20879434024198,7.66381676864911,10.6389417991536,6.25272955030568,8.2274031669265,3.15335805171466,10.8972577318897,4.33819824833658,8.4594022719039,2.49987419559167,5.83254013434875,0.259945516453926,7.69143358419247,1.36326144450296,4.99137495946112,2.03080968499111,1.93380529336626,2.31526234063802,117.048373138853,118.204797834916,17.249732501696,113.622560881543,114.707111884185,92.4874611706244,102.553766243495,9.56225112103196,124.898718516329,16.4062559612568,137.275229595714,16.4785715985542,111.389867802939,116.431813450092,87.7702273905014,111.822857856716,22.821296597063,126.867149718903,124.268548512886,148.805842261481,18.1401080012349,101.812429333227,75.8537728188155,97.9596391014363,97.5505750304733,108.433293515899,115.481877853535,16.1875899742432,85.7616282717622,84.6747269156245,63.9347638549524,76.7039376309755,17.0368591745112,106.05852466877,94.9039034482387,144.582278337372,153.554281410896,11.9535587896793,58.3653764377773,25.3766309397307,50.1322515731871,59.7863090895563,94.1269644957369,66.3303153939618,48.61508514583,7.98584766713574,24.3323867375319,42.8027295122688,4.75150213760441,24.1744525018761,6.62125678936852,63.103772981915,38.2506870404454,110.525514271016,4.96431464732817,18.509179797889,-20.7675898709852,-2.61091308852061,11.2116369237758,21.9089591287649,9.28000634009987,-6.21558296643957,2.7217070639939,-6.62938871871278,-39.7268220492764,-35.2503085623376,-2.22811217394676,37.805814804371,-38.1268425225195,-2.16390388214512,-65.8550102171806,-31.5268528010534,-50.3136757833682,-67.4818091084721,-40.5496212497206,-47.6117706886668,-52.9023798629302,-16.6785251926496,-5.21778977145428,-56.948070076697,-79.4797232666055,-85.9407644154897,-64.7577817712398,-82.7182459474671,-80.9289984599295,-28.6763145079231,-82.7769334224212,-9.52554702613037,-114.60144889107,-76.6296758737958,-125.183840389438,-88.305544336208,-12.5667961258269,-73.6979209673929,-105.77591987614,-66.1551421760113,-14.2785478185517,-86.887567575904,-114.245366885175,-108.917438868826,-21.3000087767736,-98.3636865995943,-114.79385533234,-123.380995100597,-14.3559164813632,-137.338673875526,-108.641600472549,-114.612902135384,-111.184989642026,-119.137392877629,-117.51849042474,-122.434806097913,-17.8704240912436,-119.372233419341,-144.691154813081,-127.150373301092,-130.501840807854,-19.9848151902631,-135.900608043897,11.7286604847547,13.0361271295255,19.5605613359177,13.7175698001825,8.35838425339128,7.38885944456791,10.6644335585023,8.17643761546198,6.22761500709603,28.5746812206744,126.006196763534,4.40353448240232,3.83547053320274,9.1624893424724,7.34206126556513,2.59128245546257,15.8961711211992,72.5718033947717,2.10805695984411,0.454526560982884,4.56535780619652,-4.26523411518543,-5.25085766451812,-6.44166811638718,-24.6781488150302,-1.91022187256542,-8.63237845548187,-13.4219781141449,-62.3506075137123,-3.39183888078214,-9.26677111474161,-10.0393210557572,-22.3640203183554,-93.4281654594329,-4.12146500127633,-11.516123044815,-9.65266381492044,-7.09408763337902,-18.4974535155983,-8.44146036148311,-12.8370479786941,-11.2105146654805,-10.174050020882,-13.9639394594806,-33.3110701919458,22.8590059380987,18.7825468473756,14.7597470518407,12.012525434006,-4.55158477847932,-1.5906637507777,-7.95166879557366,-6.81771018512626,-13.5405171306576,-11.6599849624168,-22.4814890713621,-19.1960402809426,21.3724913544059,19.8731732589569,13.5325362043587,9.97368275456649,-1.96843836469476,-7.89650626317834,-12.7094765443188,-17.5256693378164,-24.7121324403158,-17.7235413312228,18.7079853469516,11.475853338394,-2.03909401034698,-0.200059189910324,-2.48749682215463,-6.83901944595265,-7.93202579242621,-12.4759166803754,-12.3474282449532,21.3766293525884,12.9478749281059,-2.79771895946711,-3.85569542293907,-4.99400323358597,-10.0397471131439,-14.390517599649,22.3101977264007,18.4089018429447,13.913525520499,10.3873368882758,-5.34973512500335,-9.09783932535637,-9.758300132133,-14.7867996399793,-13.9702595611559,22.5221429925492,14.0706546974725,-9.98289432523135,19.0620986772258,21.7471897939146,25.7855484236411,14.3703421371766,17.5936373962279,12.6392959993633,-11.1429217586821,-11.9737745267431,-10.4279355058713,-21.4689000513631,-36.9192966347906,-20.8461487340062,-0.562708198248534,2.26304302190727,0.383382864083199,1.21464487666491,-0.333895843171028,0.813410463337929,3.42802800819837,2.46239429872496,3.21549592639795,-21.2685453833799,-0.452018269374209,2.35560228483127,6.14187652156023,-7.53539165345361,-13.9784318452577,-3.36883189657758,-2.02378340462969,22.9831129655887,12.600843734249,-5.21181887918193,-18.5481869582991,-14.0944985944317,13.9799220008004,-7.19227368431831,7.68481979243493,-10.1750784599095,-8.45190688070922,-7.2622499325007,-8.56349997148054,-5.77542435881096,-6.05188340819753,-6.48827918565817,-7.05788470907613,-4.68438013856651,-6.11016162330693,-8.34680108544733,-8.20565737423278,-12.3416642374158,-9.59351139582917,-13.4073547776852,-10.8101906246725,-9.31243984833672,-11.4280469784121,-10.7944562523968,-25.9911409981225,-21.5009563314665,-27.5240391106632,16.8459728234961,13.7719603614068,6.79482749367862,9.47077376047361,-6.68162602807342,-6.43995158442883,-4.91110751830317,-3.26316717410849,-5.77530234693078,-5.16231585510494,-4.83046639274602,-3.52746365728626,-3.89489686577358,-15.3253545620783,-23.9796541039123,-22.8308508780393,-20.7279847338103,-23.2945258589636,-16.6075087302107,-26.4688192179399,-18.2189682040767,-18.5962052732,-17.6310031137984,-17.3948120379326,-14.0169080969254,-15.7919727398021,-16.1756173565352,-13.1032588086275,-17.2785992287436,-14.2536939396756,-26.8606221646862,-32.9383611766789,15.9260988307649,14.6355888685073,16.1919527749723,8.56719731771372,10.5585934077307,9.83858101924036,10.1405498904904,12.1350117926035,8.77036219975709,11.9363741484066,7.41104920303693,-1.93438069792481,-14.7824813740158,-17.0825491820633,-18.9860541031069,-16.9936786867407,-15.3837846136507,-21.1086239515456,-12.9058981195597,-25.4900430202439,-13.6405094716726,-12.0892064791865,-15.2347368539102,-11.7320546366577,-11.2655449144667,-9.08331138598285,-9.86997185840245,-11.1922308013671,-8.99144883629583,-11.632386278727,-10.0267284115706,-13.0301451412348,-8.15756618623788,-9.59718311992841,-8.70929140833962,-6.93063811039826,-7.33288036102755,-9.34407346968395,-7.90055778646755,-8.34948244099559,-6.56126943439703,-7.59245223829622,-8.33700301228572,-6.68925303324969,-5.37509348517835,-5.92156841577507,-10.3750694447407,-8.92491820209841,-6.62860755094169,-7.2439553826554,-6.01202017658528,-6.24200511156706,-3.98443284337871,-7.91031393273841,-7.1215553345012,-4.71359639842763,-3.85054491632425,-4.80865851982751,-4.1389125761904,-2.65828711775871,-3.15819853599662,-2.3171975404384,-3.01180272410108,-2.98932256845112,-3.86937334278073,-2.89506614359279,-1.43951919956393,-21.8619268407918,-24.431624324836,-19.8518815067847,-19.6412818238425,-17.9012622224862,-15.9886734206423,-23.1021716374165,-19.5048778290286,-17.1482229439964,-17.0762285650442,-18.8318224303919,-21.745030642092,-19.2390572801792,-14.2279620476885,-15.2868744225592,-18.53323024244,-15.4724711023143,-15.0826865439833,-20.5857316627717,-23.1994515305451,-16.9622222518035,-28.5836588292341,-17.8976761892961,-24.8039828706088,-21.0212674416043,-157.544973559629,-22.2357274619225,18.0817175727237,15.5193209152924,14.0995508882713,20.2511111813819,23.163798043237,12.1220154505587,13.9175834726011,17.249861115208,16.3134329147293,16.8996248578925,14.9603989572596,15.9997781353493,17.2631500467237,13.6227563178216,6.5797287351356,8.96138576831496,5.13225729810392,8.92410119982301,-2.82115425848314,-1.63199041690817,-2.65237834566872,-1.97728754099198,-0.363902898331936,-1.21492112258804,-0.65530704012949,-1.11272871573064,-0.271257630977963,-1.68622786702454,1.2623908890819,0.421406816335332,0.422803480822738,1.09759977901142,0.722227293814787,0.502749084910553,2.29056383204491,0.121794328966159,0.843081191587039,-0.737016945572143,0.871486322111713,2.03093557541557,0.093207945591714,0.114465892464218,-0.207468842874483,-0.827236952824204,-0.422457156398852,-0.545427401210231,-1.49086475040733,-1.51125902135071,-22.5663216119891,-25.8031209074989,-11.844786938065,-12.1318256163776,-13.2730444482002,-11.7253702243074,-13.1882959510779,-15.7889336890857,-10.5261292857279,-9.36874043925744,-10.7959569065358,-9.48295164540111,-11.114605224591,-12.51269591202,-8.3147018096146,-4.43471982745079,-5.41056751523183,-5.69832173276787,-4.98302046161564,-5.4297025709789,-4.68407615999413,-6.37033033205651,-6.23263201895082,-7.19501451124493,-7.37433369776328,-6.41553933933601,-6.68435676359268,-5.19403125623681,-7.72352341128378,-13.9684760567106,-12.4915508586555,-25.9002838717239,-16.5053564248301,-19.7321222825014,-35.6292593492093,-24.2287647646374,-24.6855297782604,-22.0732331712239,-25.5283801667545,-19.088562210298,10.7858597141812,9.38707477313824,10.1278652475484,11.3356138181494,8.5645746040023,11.4176251673611,12.9764112575056,10.5508456923248,10.7730982448394,9.41571912441082,9.41617953034088,8.19872543571677,6.64482536103239,18.884841327538,20.5191618118702,14.800335078942,10.9953404778192,6.91903449198903,5.01903513038218,6.22695146534932,-3.4009030915528,-2.03567823258929,-17.5205838114326,-16.4350011969055,-19.9209224284141,-23.8095059846432,-15.2912927478574,-13.3133530619576,-14.2085213526466,-3.68529623174931,-3.44058853697967,-14.1700223308523,13.1118282027131,12.0485459731842,12.1804914423866,8.61074819537525,6.63066474288662,7.04887439586749,20.8502405550703,24.3620838648156,17.0307941448006,18.4963113070745,15.4702406050881,13.6949263055424,13.40962860734,14.8341063287948,16.7569956674051,15.2132316302272,13.3760966138271,13.9041122331113,11.2596929755015,12.4006900899776,11.5222147231059,6.47044262876612,4.62628384841635,-14.2283836664826,-17.8189094451772,-18.6082815616282,-17.5836774034369,-21.2478055246689,-21.9331664080672,-23.9558588491651,-13.470601756338,-16.1834390641046,12.9873026843936,9.19715690580993,10.5955100260156,7.99206524034,7.53593292743722,7.5051550079128,8.23247645568639,7.39116295676592,36.4951398363905,5.40449018546798,5.54329548167229,-19.2747311428189,-17.142418568116,-21.8639144083704,-15.7582439563347,-17.7042283256075,11.6125110587839,8.74172111463561,6.06440705409001,7.25782757305599,5.86202369673159,5.13350327388848,4.6559848796604,-15.2053205109358,-14.9531911278175,-14.1960841412324,-12.9728064709511,-10.2967269446231,-11.2975638782727,-9.87124500557025,-11.6563522818466,-10.4088086197471,-8.16464495025179,-9.2445712312862,-8.5206031364148,-8.99736379035436,-9.86091702844598,-18.4224728929265,9.23966771069888,11.3309586422122,10.0979554580694,4.01060187132007,3.81634305216929,-12.3326401255308,-10.5918961879294,-8.50152062021753,-11.5117925810355,10.3740618690703,10.2955760621917,8.81254324252928,7.41662023551807,7.48121889201089,7.95247990742612,8.27622946002383,9.62975848939503,3.73391330836019,5.02440879524213,4.49149148483997,4.14504316492924,3.0364121524492,2.73569483540081,2.43390690404946,1.81926368533428,2.21910836634597,3.5868593215971,1.33355132182449,2.01072396767938,4.05000819144247,2.97563444028194,-8.85520006023768,-11.1116159530033,-10.0421652336215,-12.6492757387422,-11.0525158109895,-10.9088832560856,-9.50109421997255,-8.7309162663405,-12.8563833368684,-12.0601951971738,-13.3057576223178,5.33654494272722,7.59876458201932,6.37471295583356,6.68187123343503,5.39393703427687,9.43480056983697,4.09257347352068,3.00721512126113,2.85938974964282,3.22311743517338,4.20661649399761,2.23979217386336,2.8421780186367,-6.49870591676522,-14.1832099493951,6.26345947781333,5.7482795187548,5.28314583244821,6.27007386246075,7.24974516915216,7.32466030280671,7.42519264337659,8.39679985150032,9.48773988782323,8.44506298178847,6.39426736124086,5.73374110831122,5.23908707149645,6.33806926337442,7.3978886616102,6.51612117155751,5.81999048437933,5.62331710440236,4.58790952907349,4.45772260906676,3.82066107851066,2.84809664661572,3.00299355650804,1.84207306817871,-7.7507475143167,10.6095098161498,4.66105974038785,7.60734963162678,8.5004936354072,6.13528846316853,4.93090688702681,4.83159752354229,-7.53779623880985,-6.59857143933867,9.71281829942451,10.9777575839741,4.37520237280781,2.89618780367074,3.49171796863269,3.74772149117022,3.4363160996243,3.68559560241725,5.07797073760684,7.92710281185635,-7.72540597739972,-6.49356929111859,-6.10998387645431,-6.91845633556823,-6.7938624859228,-6.08875515413107,-4.88070224294115,-5.51547889473462,-7.7271685701254,-4.07590651652681,-5.84719312563895,-4.72906421957492,-3.05688524122342,-5.06658139337108,-3.76452719521859,-4.51709008682802,-5.45730287665719,-2.51133491386952,-4.47760605605928,-3.38039047413635,-5.99494667154215,-3.3442878597449,-5.90746358326314,-5.07535628816804,-7.69750164402465,-3.95713531213462,-6.82589179523186,-7.89852033059811,-5.05643647366384,-4.28673416835288,-3.2087654575557,-7.55543411215177,10.4752950984387,12.1644259455423,12.188837960665,4.29534308944178,7.85346484175187,-8.74054745276293,-8.9615798015902,-7.25097421039952,-6.20937130615935,-5.216934124874,-5.30736049352001,-5.64893837180665,-3.52886494475789,-4.99752074654469,-4.41309477684977,-4.46811195221089,-4.02439844735363,-3.92081816401633,-4.49037663033098,-3.51657023728874,-2.42456113144183,-2.60870597852807,-4.7406817776398,-2.49137845426701,-6.67318649385303,5.20133468902952,4.83451211301304,4.57408139594343,5.76025438900801,3.90363085937584,4.81727586218137,3.98555917438744,4.20640815867345,5.1127474569444,2.36212363692263,3.22210923287524,2.53920112019973,3.01843093337079,3.18318758177749,2.52440428552612,9.74050624581112,7.08301216711699,-10.5763108412313,-8.74697898904582,-7.89487502293879,-9.94095249812625,-5.58878909302558,-3.96529158416948,-2.34959093285991,-6.42981028300818,-4.5096453406403,-2.73355445715163,-5.42644381760856,-3.77266596246397,-6.45614530258761,-5.85338174915137,-3.18827221806813,-3.4810959374623,-6.12276683674836,-7.18090442230414,-3.10172676860719,-4.02581819048301,-8.29478150852041,-2.25749191358362,-4.95966621451579,-7.24644738823731,-8.21822569987435,-1.94227689797353,4.18064062978606,3.41560629308328,2.60845547395777,1.15488771451584,2.02273670653683,-0.765481672615868,8.76261832873359,9.81216486834541,9.68457431846127,11.9167474549132,11.2490270279344,10.6265101119749,11.0972143070888,11.4991948268799,14.2924045491229,13.3598135788641,14.373550429081,12.6397608059863,15.3457657943183,12.9992029000853,13.2765015771253,13.9593656856181,15.2425828443,12.1570675221717,11.5277481785646,8.6891167899405,9.63255118983983,6.7622821206433,6.41994242108668,-11.3418357205015,-12.5247787309461,-13.1299254709414,-12.5155500754073,-2.75496200023227,-1.56283128839107,-3.31594951241014,-1.94534183492936,-1.16348784329233,-2.87391165583625,-2.02401481553145,-0.830120561365531,-1.21058760558616,-0.384715776460815,-1.84170660407488,-6.75658944680936,-7.28590143670773,-10.8704826574288,-8.38172010008764,-2.42205085396102,-1.59387101348085,-1.16316319153847,-0.505508727848232,-1.11901226083084,-0.622052220154005,-1.33407598671419,1.26965858854508,2.05790213756279,1.54819089685801,0.450712197391811,2.44354623129835,1.52182846639081,-1.72822125844547,10.7352578899174,10.0281640462326,14.3601181199503,7.12017276226536,8.21892422361253,5.9582300546662,7.60682709504597,7.9370764949223,7.35042036334318,6.35087133667081,6.22570908084206,4.90525095369947,5.50585981800172,4.45790014870867,4.4864910363433,5.26109280314666,-11.6385291678045,-1.75682913800536,-3.81357566062459,-0.609210562629489,-9.44635292025443,-8.63203714548636,-10.8406274306918,-9.87452896524004,-9.73047033097231,-9.77650011657106,-1.87127966002026,-1.20505531189165,-0.357129983370783,2.15365104797659,1.53091572617898,2.14187288541704,0.688581377115139,1.25305710918033,1.14765282501753,0.0174708719592867,0.502419117788129,-0.386120843537885,0.796619272141421,-1.22133432752573,13.4684818170967,6.09848069135953,-10.7246261947951,-0.831581684343246,2.7787541450086,0,-0.120076631269231,-0.776343277037038,0.602394975805461,0.783499701747305,0.328153716383592,-1.46493462846156,0.963283602539382,0.0954931258671993,14.3722522128989,19.1606595380278,16.0007511313876,19.7914631916633,15.2894556816098,19.3045540629773,20.9431398112399,19.1890069624985,17.5635628574824,20.0086921720642,15.5985412935179,11.7744173596232,-10.4870171549005,3.64204541618658,3.20132239921091,3.23033216689243,3.2230213348692,4.06942122674481,1.517730195501,5.31737218089812,2.38975711098033,4.37359588408969,1.23052012971081,3.94978169149578,3.17274464865193,1.51943258390626,0.681384138777512,1.99469722053131,1.59801838533935,2.46752109155928,2.4672440111818,1.7745828028744,-0.874254110711438,0.660831148443963,0.0163062092603752,-0.313171274568769,0.762915503467339,-1.07990619524473,-2.41619515421577,-0.825351585734251,-1.41062933099672,-2.14495816958013,-2.17965533014982,-2.95298293316219,26.3265844247551,24.0699443409813,25.758248637421,11.2764592686586,12.7474211728213,12.8995857029114,-9.05346615504728,-13.7723458458964,3.93882214826372,-0.071266417935351,0.446041204999691,-0.00312849975816178,0.829880412105553,1.65864526795942,1.41262652340069,2.35147071299239,0.640866837050505,0.937223925812487,0.338901660746653,-1.99264595116749,-2.81705538985281,-1.74271754356173,-3.0804882569125,-3.57031148030747,-4.51417695587777,16.9051838511186,-7.60835792240892,-12.1592671731646,2.55441586702224,2.35005866343006,-4.21909310679763,-4.2136967682175,-9.04142800220383,-12.0872739351247,-13.3186486958246,-11.8600518249731,-10.032214415831,-15.9771672166308,-8.88451007166754,-9.98265949287962,-14.6297604354037,-13.7076233742087,-7.68722759339671,-16.8210972861613,-15.3495893413452,-7.10244257632637,-7.58084079228318,-5.98919677570329,-8.68052633243533,-14.5850885259026,1.28562794634602,4.21553215981128,-10.9082494236941,-12.874423697549,-9.16418167075641,-13.0077191296682,-14.7455021223429,-12.3723737836544,-16.2615304980629,-12.1866376270161,-10.7727868046809,-21.2147398073707,-18.2737267958746,-20.5916389750615,-16.7307077336783,-0.0954178541708235,3.40491290531784,1.71129697178976,-12.3990119659629,-10.1515564341404,-30.144395113096,-23.2120240067761,0.477618333257378,0.831185815426813,-0.359033509914757,1.74809275175845,-0.459152513064362,-0.141825427424874,0.791543187952846,-1.4216666606512,0.856345906668677,1.05637136544586,2.80356648457128,0.116001150134223,1.88304175898819,-0.797566558463818,1.9155491673262,-1.5763403626335,0.0505428423112692,1.61647203375943,0.675600314153816,-0.725927954175799,-1.51230400267322,-0.985394541315102,-2.35845294138369,3.94207643789295,5.70633728451263,4.84867850903648,5.70966482096997,4.74980375750342,6.11624534340821,5.25688650118517,5.05705056387209,4.43083731136563,5.5940177933102,7.30333425406126,6.28027950197789,7.00531572654565,5.94740304597366,3.96149878458448,5.07857458624844,4.67244587859433,3.34951767467406,5.49044654964053,6.74673287914753,5.92290126154319,5.06029878749067,-8.59122740460906,-13.309313131439,-18.7222627110199,-24.8375479290402,-18.7560624614303,-15.6857767806635,-19.836555601119,-15.4849308043345,-16.8480152395633,-16.5956297645589,-17.1959620191803,-20.5950578283673,1.22942752878898,-2.3947713139724,-3.04148458318923,4.94096945895475,6.28803542314071,3.02866789082379,2.5199240398729,3.11004976107733,-8.65147406490141,-12.1434670328929,-10.1295151943,-13.405334767295,-10.532445948633,-9.15745521067983,-13.3678941707379,-21.958322384958,1.31723448990833,-2.42652124728733,-3.33649891128996,-2.06762915367543,7.53574338161582,7.88591511688107,-6.92957508566286,-9.39697513979068,3.1871130467149,-0.780795659619815,-3.15879305960844,-1.99141859169729,-4.882792535739,-4.23063378652505,-4.14499710849664,-5.13849548249263,-5.67884965740879,-5.38050899261161,-2.5773210795168,7.0534106845317,9.39630982049746,6.8552507101398,-7.75496672078127,-8.61371859360948,2.29335264301819,3.23700476486313,2.32498445112136,3.6817144518107,2.92814043775553,2.73205605730347,4.49527960941628,3.27825280417717,3.66066872593716,0.620579235847819,1.64535423277971,0.0695633330972332,0.231934089554818,0.522169302821768,-0.744708286175845,-2.60850446704808,-1.99477740934981,-2.12498944333897,-2.23861182750263,-3.68791977497755,-6.51342543556336,-6.31157508525026,8.45187275369643,8.69006884131562,8.75737394620769,6.82142899047131,5.92444099411426,8.1452030242532,6.28524819289604,7.87721877999758,7.16345788503885,8.27690236689343,9.38137622073308,6.91430479088696,9.73131490369948,10.6445009014619,8.75498362321096,9.36814492205511,9.78142823289985,8.80961109941121,9.39907881809428,10.8536737806932,12.9664265067211,12.0683074807243,12.0718753219853,4.13843145144005,2.60726336014782,-5.56797950841858,-4.0162224630178,10.8614760999243,8.13181561345865,9.4065311659239,7.29863275422821,7.93798397016797,14.7866720427529,10.0607029873248,2.75871652259878,-4.74593017134952,-4.92888091977428,-6.83364264399159,-5.64922647299742,-8.56502305106477,-6.17982364781248,-6.31347812458061,-9.50338095362916,-5.56034459884983,-3.80812340052967,-2.93483107979171,9.82952879811605,10.67682463147,10.2376718534049,12.0523598073379,7.32459212866742,11.5604294532267,12.5479812392688,12.8424955111074,13.3888775029894,15.9936560001514,15.986243202741,17.0986223562932,11.6828688181009,15.5733068618253,-4.76972823209612,-3.49880958169957,11.8516508770065,12.742873277296,11.0973217566495,10.4035301137928,8.1340359382508,9.4835215127962,7.35868441517131,11.3702551777043,11.1716572456603,6.72293861662952,7.53125813010495,6.53592634895519,10.8484205043259,6.10415931560647,4.89341981453011,23.887832385189,12.9538144519625,16.844475456914,15.1794203036171,11.1940707412188,14.6013050671931,14.833551824878,4.68592862358622,16.0667378418035,16.9164446584308,14.1460060618987,18.7242243518593,13.0329016761538,14.1994393014114,18.3413995995672,16.8934750744141,16.6642309961159,18.0176315529773,14.0915251752711,15.926811163546,18.0069306496724,18.9644746370867,18.39992857136,22.2053639504882,26.8023448436304,26.6559219972004,20.0030239852833,20.4964046879762,17.5852557819776,21.7651968609051,12.8192581673216,18.5641842195049,20.2306723575569,136.00428935722,139.137408083237,128.264825182705,132.515417261299,129.840032516569,112.582777942331,126.53900014547,94.6500662709648,100.875575097385,74.3920795220725,90.7152748341098,48.5318587784742,44.5281269743217,21.9907715671646,36.380728266479,-4.80783679736432,-33.1246425882298,-60.2003218321759,-82.9016737531392,-103.604506160858,-103.827650678194,-121.325622459985,-95.5586812836701,-120.213271976883,-112.587001968164,-121.360832371111,-133.860930581213,-138.689624204372,27.5965727088513,21.1981303887384,27.5814372250595,28.0709907042083,26.2445916941871,20.5322376899305,28.7130112900899,21.374925213051,22.8359409112144,19.2804722768628,17.9038462157058,18.7055790906402,19.1246287673302,19.2213490814837,20.7934793441073,16.8042904997734,21.4548834106576,23.6339076599855,16.6445261718574,16.3920102517688,17.4677068420535,15.8908491789524,15.0212525178537,4.97922479075379,21.4326339780662,3.66292188811962,10.109554225397,-0.151960583620261,-0.436732763702739,-18.7048646779194,-133.088192991493,-0.0178363025963321,-2.07119209156087,2.93882760615346,0.857734114319789,4.77359291543892,5.7800521664597,5.33234630823754,9.44361055434238,4.66508641460619,4.15887483321626,3.15262512013081,10.6082462401139,-1.77435997039937,-0.122282699121193,-1.06328818852728,-1.17128773752443,-4.9342058252973,-3.19202846310672,-1.9618366147074,-2.01719049785254,-2.87238308975424,-3.98325602890315,-0.864650672583457,-2.55498475461603,-3.82184604174344,-1.43370221776487,0.471761669100107,-0.670943105927137,-0.439275641205405,-0.57151172585609,0.186468937117956,0.798494988934621,1.39799940019688,1.07744533650147,1.51869888473705,1.71331384577375,0.105940611467316,2.09336268711498,2.06973856547681,3.67754023857641,4.58610359065231,3.64658865410493,3.2179119047774,2.65921970519371,-3.89580835895134,-10.0200434298434,-19.490299125939,-27.4689323110739,24.7649983500833,16.2792609656466,-1.16023435025175,-5.53064121045848,-16.9629623680014,-23.3998843522877,-22.6469882040472,-32.1401935002102,-25.7365593078199,-20.2071911841171,12.7155723777709,-26.6146592666778,-23.507334157622,-35.833518679027,8.9500857179313,-9.61316463743873,-14.2825757336411,-15.520799872392,-14.8590835200376,-15.0264143582882,-17.2788547649645,-19.0511864378569,-19.9654816474132,1.6196309565923,1.23214543077013,1.94298311408012,1.02078843652261,0.532934141996117,6.41465015840193,-3.57360090768705,3.91518466819207,-5.24137105176477,13.3516172184268,-2.49481775907451,2.15714588417638,8.6249371989272,9.32388022570305,0.0497333573164629,-0.338991107478617,0.233425815325615,17.0137259829501,17.3732796387552,24.2537373680466,5.52337016149551,3.31388694387403,32.6542778072539,0.347843243666892,-17.4578307951719,-19.2860460820219,-18.0808474805341,-22.9125384015095,-6.43218751366952,-0.854740658007983,-14.0364704129628,-18.3466540765734,-14.3483778528972,-13.077785948519,-14.4830358228766,-12.3065484509923,-12.0865415812548,-12.8638977390663,-11.0736902650922,2.21171786588658,4.23501432890931,4.05945290876557,1.55342482724233,0.297696924989784,-3.10281796081697,-1.34548069750072,-1.38413490513556,8.99046410041526,-3.27266023632244,-3.43174871379466,-4.71869421310807,-5.64575189588717,-3.31736670970481,-1.97882474580866,11.8795954447312,4.39991247325783,10.9660678427565,6.56908380634792,18.2627875032914,16.3722814887268,31.5794935861045,20.9426564961926,26.0415024364827,21.8404706281284,26.9943998253472,34.2387783160627,24.8576870983369,20.9770410675067,27.3732716222259,19.6207381424978,28.1534345877365,36.1772009882009,26.7556879098676,20.5327473114392,21.8704914962865,21.2231804423935,24.8746607387734,22.271729525394,23.4596347740631,15.6238945486636,14.1275513441114,17.7158995593255,15.1559052243102,6.01393962352766,-2.68324805191661,15.4982821196187,-0.204886362532744,18.413113535593,19.1816982856742,-11.4718106934426,0.310003076681601,-6.87871798284635,1.17008133892611,-8.79415423459741,2.90697446490291,-8.24103653763568,-0.303457610855387,-6.92210328568701,-5.60974851629027,-10.8078045533096,-5.12389908712314,-10.548382756587,-5.34164643185897,-18.8974371618321,-8.19063802766279,-16.4641234079984,-8.31599918772485,-15.1136191955429,-9.07535165186871,-16.5596900961829,-16.3658639792546,-17.3278238430777,-13.4413619654883,-17.9361529221137,-14.8023873139892,-25.8401893325018,-15.8500650960447,-20.6678013862911,-17.5931585003223,-18.500218305899,-16.3332904463764,-21.6476594196466,-21.7009832120919,-20.9071189475873,-15.4315422684703,-17.1347558990033,-19.3523760596923,-20.6557892037394,-22.6589270447654,-21.1746290691238,-17.9150687363382,-20.3061116955208,-23.1426735557002,-23.1364877754438,-22.677556170679,-22.9540306398626,-17.8897891663047,-19.6484236499084,-16.5446018583096,-18.6140313799139,-21.9783387412717,-18.4862128758515,-16.9943163786609,-12.777180089994,-19.4301316552465,-18.0936120299616,-18.0197364333415,-18.2695808094896,-10.8819618003343,-16.9591558800789,-15.5271860532149,-13.4184395788081,-16.1680196329728,-8.7367491488925,-14.2067953630011,-12.8483688094625,-7.44253766717029,-13.5909020998698,-5.92089023846351,-9.69243115470619,-8.41654849315491,-4.04679228852875,-7.38854911373311,-0.58724456684082,-7.6991039161521,-3.86696831692841,1.05927734777227,-3.93022747400313,2.34175896186709,-3.59258080960084,0.471894904227834,5.48364548380135,1.13331317982444,6.32652564305748,0.353663987720001,5.21618139673603,10.4446574689346,4.37525548564671,9.05629563045311,4.63818129780296,9.8882172571855,14.1049743818414,5.39646129573076,10.5627447507635,9.15001256660012,13.2250831350554,18.2793958685636,12.1887341522051,14.4117978699387,11.9988019343261,17.3775214011774,19.1768190985294,19.8009344355219,19.5946242786881,12.6084150512165,20.4798159022057,21.9648889040531,18.8098225481087,18.7254298036725,17.3094130924848,22.8564310966248,21.6764378461258,17.9404294072847,18.5951241988677,19.1605906824924,23.2868893280789,22.8445591101361,21.3221932979355,20.7228651018946,22.8685139892759,20.0247937639599,15.3980002146589,24.9916755688199,27.5119269944918,14.0587074430307,16.0740069251244,19.1765616151883,16.0611407551546,19.4255702519333,19.4082169477831,20.543150758536,15.7380124688367,15.6337205111775,12.6974359061936,17.2432453063667,14.7319450715847,18.3688542816465,11.1402311080569,15.4898461628231,12.8239217301271,17.8466499577804,10.4805331223589,13.8559907749514,5.24959321799916,18.3417388151561,7.24537737372336,14.1954602430586,4.18358167037181,9.84086243572989,0.38924533106687,12.9655021599391,2.24967999177581,8.37529003831327,3.41003096128568,3.23380147492511,3.85415044223713,196.91641420066,198.91097430968,29.8179224086177,191.321817358289,193.032032574524,155.705809355726,172.607428546897,16.9965298701969,210.26955129168,28.2614086834063,230.726735823505,28.4991552849859,187.30550260263,195.929003174497,147.690985750701,188.087628285638,39.1163867585484,213.540327059344,209.126715672475,250.168984158696,31.0329013697564,171.350951869703,127.6085145239,164.793438324793,164.156207856852,182.612190360876,194.112947409064,27.7723902280338,144.185050046454,142.498192973734,107.540642632714,128.984147389297,29.1438712321958,178.493576692615,159.691444914072,243.086359902562,258.20301264627,20.4159592969526,98.2097880457083,42.7329198297659,84.3556274997737,100.606536399885,158.252553020911,111.761354836897,81.7926236116999,13.6791820236076,40.9459439984285,71.969724619725,8.00576555143878,40.6213488253083,11.3123897803915,106.171773541529,64.4071273718325,185.801625716986,8.46076487185487,31.0843558541295,-34.9141062692372,-4.3550982902352,18.8737344868564,36.8506961956421,15.7071658432285,-10.4039469239509,4.50763010046887,-11.2432307371219,-66.8391490654283,-59.331959380271,-3.82560659628672,63.4912340271514,-64.0565392385463,-3.80787553143299,-110.675100708061,-53.158040133393,-84.751845016293,-113.535882437571,-68.2401176091837,-80.0678095700293,-88.9115654143745,-28.0114140598465,-9.07444033479341,-95.8904322531565,-133.736665621214,-144.542590878147,-108.967923760677,-139.098995930011,-136.089994307155,-48.3255346095189,-139.193827554108,-16.5036203707281,-192.632865195553,-129.060047258961,-210.546409145025,-148.617595047068,-21.6586540036351,-124.152514167094,-177.893265138944,-111.345674515448,-24.6323623353868,-146.294955669693,-192.189487270366,-183.225183926183,-36.572848123183,-165.592871256572,-193.1790282008,-207.385254108275,-24.8938582714857,-230.900937980973,-182.949350661667,-192.844085412719,-187.099841589335,-200.188382813764,-197.774234327866,-206.108717318966,-30.8200013449583,-200.984079035051,-243.259659629162,-214.051393147403,-219.470240525415,-34.2954027474939,-228.502608707174,20.2087534487631,22.4154952066608,33.3502493890891,23.5256610472449,14.6404369558086,12.8849416486969,18.4291068241997,14.1434730318534,10.933918161,47.7004279890794,211.872277734204,7.95187645263245,6.76748026378914,15.7263441813167,12.5251650634376,4.55935207089583,26.5435108390576,122.028748327126,3.8656550687132,0.9139990549856,7.7915404730577,-7.19723599031907,-8.91468786032861,-10.7571080311636,-41.5479529740107,-3.34108649680761,-14.6407158568584,-22.4575677634892,-104.834107696059,-5.94535793970328,-15.8522846957112,-17.2225615491267,-37.323240900045,-157.085296350133,-7.32615662329053,-19.7206029037318,-16.7006770595105,-12.3035978118668,-31.4347220480377,-14.7268998265234,-22.1075017466509,-19.3315841959296,-17.7229568428389,-23.9584061973518,-55.6785793642759,38.8055913052571,32.0140171995402,25.0736079090742,20.3962506465076,-7.59124752153546,-2.85231601800706,-13.4605783698305,-11.7647579770485,-22.9524296184828,-20.0128312220821,-38.1920515583612,-32.9828492018408,35.9115145796001,33.546205000446,22.6973449361912,16.8617392770116,-3.2851049988643,-13.3441643406009,-21.4572839188665,-29.5683730006879,-41.7647452644924,-30.4817692228842,31.5750103429674,19.3730874799012,-3.43208882094983,-0.37917154925009,-4.18667535088795,-11.5099439665361,-13.3811265755765,-21.0254636301216,-20.8303925444726,36.1210854474606,21.8619504894594,-4.7732922442653,-6.50733762423639,-8.43493731405236,-16.9635511078699,-24.3559895601773,37.5384404080867,31.0771552340312,23.4212391910418,17.5330286036921,-9.03171618226011,-15.28941071284,-16.4879012748803,-24.8351284706716,-23.5974032417789,37.9652522763148,23.7580592886727,-16.8432508668772,32.1489200861523,36.7323303175137,43.4923655959733,24.2731757862872,29.7239734222382,21.3031820454174,-18.8465504448464,-20.1771865776095,-17.5798931033933,-36.193341664223,-61.761660091024,-35.1711444370863,-0.980923692000095,3.77921919170923,0.645589873123422,2.05095577252709,-0.575897527070969,1.38763840059417,5.78532849566193,4.15481236869235,5.41891510626481,-35.7612357429814,-0.771020193611987,3.97795333443441,10.308915694322,-12.7081179618956,-23.6072459855376,-5.678976410113,-3.41267962364149,38.6394517944781,21.1893529317138,-8.77625727504909,-31.1653314438469,-23.7476722420975,23.6025540376003,-12.1362607642816,12.965031389575,-17.1756298745385,-14.2570620249307,-12.2460203400776,-14.4426625279927,-9.75540481932913,-10.2077547125691,-10.9440025654103,-11.9114470026913,-7.90575884115963,-10.302547756021,-14.0836932677428,-13.8418737326391,-20.8046656465831,-16.209263963478,-22.5966653008762,-18.2287505052127,-15.7201536966717,-19.2833715001086,-18.1935617879985,-43.8028485434349,-36.2879311725077,-46.1379457440091,28.4013027598277,23.2323949062239,11.4490930283021,15.969633178275,-11.2861325936752,-10.8571521018067,-8.29587052447578,-5.50391525832251,-9.73948624511214,-8.70354077288718,-8.15073184779834,-5.94958042096724,-6.56859951951221,-25.8810704319327,-40.3404269437847,-38.6356522269664,-34.9299216252158,-39.4400452915272,-28.0060537338336,-44.507696474851,-30.7308175613321,-31.3895983409682,-29.7604220413317,-29.3570503257257,-23.6682303319854,-26.6334828464675,-27.2600660494748,-22.1261454475624,-29.1461880070016,-24.0209081678255,-45.291976944593,-55.032227433316,26.9327405348512,24.6889417373831,27.3081384437225,14.4558468103867,17.8038828281022,16.5863899266189,17.1302908890194,20.4966171746883,14.7840735448237,20.1303899674059,12.5128343196123,-3.26268261343452,-24.9629358762616,-28.8578889460854,-31.8812736497298,-28.7635987809426,-25.932185506623,-35.5095411301895,-21.7610357496566,-42.7096450421612,-23.0236065752491,-20.4042635605226,-25.6872024042211,-19.8202798260107,-19.0072946009238,-15.3135598387252,-16.6631806502267,-18.866285935579,-15.1657298446756,-19.6242234658704,-16.9186557929284,-21.9911323877636,-13.7643925393241,-16.1876999911071,-14.6880927855457,-11.6949963779606,-12.3742643384894,-15.7626576423721,-13.3323118489596,-14.077996467801,-11.0734593360366,-12.8134589250712,-14.0506469530518,-11.2903554923777,-9.06488033443931,-9.97973936764147,-17.5056813355232,-15.0646856885941,-11.1734958647513,-12.2194869803465,-10.1477581558676,-10.52718513314,-6.7171872129395,-13.3414746804143,-12.0188430217512,-7.95861640254769,-6.49918131285393,-8.11414196747888,-6.97242057074141,-4.48047479671513,-5.3342299122551,-3.90696311925147,-5.0857215467997,-5.03763262783454,-6.52673060390934,-4.88058287232944,-2.43025870865593,-36.8960631454275,-41.3831881730428,-33.5213924343758,-33.1572761786633,-30.1900307235689,-26.9736793481914,-39.0121235111914,-32.8852221317099,-28.9230043948136,-28.8096288490115,-31.7665324049675,-36.674113033591,-32.4645287691591,-23.9888356265066,-25.7937247262735,-31.3094316251933,-26.117154691102,-25.4386046275335,-34.6732559205587,-39.2347785622148,-28.6236786067837,-48.5974809461781,-30.4967495226879,-41.6753067008679,-36.2787251592498,-264.935703121538,-37.7806965653636,30.5188718002141,26.1705144559631,23.7639232474508,34.01322020571,38.9120187634876,20.4417480263916,23.4578219956588,28.9042499400604,27.5291748066337,28.4966862026686,25.2241912156485,26.9972620239514,29.1481481182048,22.9900475632919,11.2005858456794,15.123090597854,8.65506937764321,15.0471447782463,-4.75780487256745,-2.75379646546202,-4.47895489413745,-3.33882671826004,-0.61177260824636,-2.04781866294329,-1.10533847873874,-1.8784496164304,-0.458189411603242,-2.84191197143979,2.12997645163109,0.709671372644061,0.723728643185201,1.85125459217918,1.21832433499211,0.848644077292738,3.85971662610292,0.207942349833379,1.42309526746301,-1.24260141290809,1.46355624005298,3.43155173794179,0.158758329326086,0.189938796453326,-0.349023093114681,-1.39420847887457,-0.714652635089034,-0.920507508077142,-2.51495779145352,-2.55278038829822,-37.9127131686627,-43.5217475191183,-19.9862885506003,-20.4583222563953,-22.4217088465371,-19.765868037882,-22.2460643906045,-26.6034411390924,-17.7606317221535,-15.7816394444401,-18.2237137661636,-16.0073509194133,-18.7453629403897,-21.1199915195398,-14.0227387223872,-7.4793996919704,-9.13418535627595,-9.609215213188,-8.39746523374215,-9.16731108273931,-7.89711466793563,-10.749394663787,-10.5155410420198,-12.1356270597745,-12.4383209313313,-10.8210221666078,-11.2696706042073,-8.76945658734756,-13.0413465475261,-23.5963982263533,-21.0512705846915,-43.4375591203755,-27.8396343227472,-33.3386745268684,-59.5090639597812,-40.8537783238357,-41.551845427179,-37.2630375075809,-42.8988823617897,-32.1922620211901,18.1839815889644,15.8348463609248,17.1015086738586,19.1492412530014,14.4385074022667,19.2550720564012,21.8775585146835,17.7888341047583,18.1653020715647,15.8894978120086,15.8937934235883,13.8400279507561,11.1993804685103,31.8664392593898,34.7016536061875,24.9738444704964,18.4393492559274,11.6974173469485,8.46978106215555,10.5040686505777,-5.73951305151933,-3.43264728854632,-29.6003623744212,-27.7222861157858,-33.6471291812006,-40.4562898639617,-25.785393877348,-22.4608597560833,-23.9518151543092,-6.22230087386073,-5.80730145720278,-23.9217485604963,22.1121219890921,20.3283475188377,20.5363080814349,14.5245119324881,11.1907905692175,11.8962852359969,35.1629541545617,41.0291816125607,28.744644474526,31.1714074450299,26.1080360987348,23.09100420417,22.6164081846636,25.027435983659,28.25440324585,25.6716615315587,22.5736334073178,23.4535023390957,18.9993389014559,20.9277589681997,19.4383816711266,10.9107984031919,7.80975375644855,-24.0260182118655,-30.0959188067513,-31.3782670698796,-29.6888827445323,-35.7910982932532,-37.0283051169815,-40.3586469046437,-22.732991963087,-27.3183522609163,21.9066987300049,15.5261616754377,17.8715310304928,13.4699340828385,12.7149344022147,12.6665908395805,13.8938750782475,12.4767101287876,60.9714722803507,9.1140291467686,9.35704607683471,-32.5123143655206,-28.8929104929026,-36.901354440586,-26.577894702238,-29.8227960368766,19.5853830930078,14.7282832842956,10.2323829000802,12.2487890285722,9.89043825748027,8.66618506453252,7.84993528456711,-25.6672044029353,-25.2248439812985,-23.946438073706,-21.8694531331951,-17.3547672819511,-19.0735041124115,-16.6517175412547,-19.6469252493601,-17.5604406754649,-13.7703183084656,-15.5982928419004,-14.3754573017741,-15.1891548683303,-16.6394484535231,-31.0278098846293,15.5715252660834,19.1304660968196,17.0317634484622,6.76838698088175,6.43615548674996,-20.8098962653998,-17.8643477172212,-14.3423379060876,-19.4325889323624,17.5087264969436,17.3548314249362,14.8649966835695,12.4947163352128,12.6216982133669,13.4364155516595,13.9545136589739,16.2438147882157,6.29307710421767,8.46791286175934,7.59248226506054,6.98042573259443,5.13106696551665,4.61430627054879,4.11406959986197,3.07520603655912,3.73764705646445,6.04826155063963,2.2504669578397,3.39392323100431,6.83468990783696,5.02420786184929,-14.9394604689572,-18.7385375198041,-16.940980258444,-21.3519614465048,-18.6324841231125,-18.3955906391775,-16.0338811340384,-14.7368255784013,-21.6909672650395,-20.3480010029062,-22.4175076722601,9.00505975870254,12.8221026489465,10.7520976420831,11.2773178065077,9.10130489898659,15.9188457964594,6.90037015537346,5.07697888362899,4.82787423897175,5.43771731307122,7.09779693914901,3.77392822478825,4.79090866296794,-10.9630872874593,-23.9152934354619,10.5694080557746,9.69747034680617,8.90775422997196,10.5801320549664,12.2300479616398,12.3500779958356,12.5300949796804,14.171422521138,16.0010404530473,14.2454617415026,10.7887914772043,9.66943546993985,8.84103354506328,10.6921245581264,12.4668428030498,11.0002502769324,9.82752071223909,9.48804357773917,7.74050096585879,7.51515203187834,6.43800527237227,4.8061200057375,5.06967825603134,3.10775455851793,-13.0746220769595,17.8865119039382,7.85203151052426,12.8315272564347,14.3499886192864,10.3368750946569,8.32626406116878,8.15190599837744,-12.7061334775374,-11.1294923468237,16.3807095304746,18.5177183059332,7.38242419771886,4.88762020406867,5.8916921715439,6.3245069237435,5.80036021574355,6.21503577783155,8.57368301227994,13.3817367785256,-13.0195329730825,-10.9428416589923,-10.2940129425084,-11.6919482975144,-11.4692762860593,-10.2810138120544,-8.22522424258115,-9.3045150586879,-13.0309187382201,-6.87933547135366,-9.86717427271586,-7.9734023438411,-5.16005073957551,-8.54334367778688,-6.3530993768792,-7.60691823391151,-9.20881477277064,-4.23918409290288,-7.55238179497213,-5.70138255236486,-10.1055469158156,-5.63580637115931,-9.96735714420507,-8.57006773951747,-12.9715957285632,-6.67351555733279,-11.5205326268156,-13.3229026698917,-8.52566993167311,-7.23483242467192,-5.41095093671766,-12.7347587340132,17.6721303704648,20.5095669445888,20.5803219166861,7.25115695674099,13.2552804112127,-14.7435380644188,-15.1210578919913,-12.2166000093833,-10.4839874757724,-8.79459777469275,-8.95720274586834,-9.52780852607163,-5.9529817484625,-8.43792446005326,-7.44570591257998,-7.53692560306251,-6.78750340947675,-6.60836758316939,-7.56778677704791,-5.93960660112644,-4.09300499549339,-4.39881406060043,-7.99174150490123,-4.20092762786118,-11.2634388976238,8.7647173243547,8.16774346960801,7.71573949311584,9.7043363313439,6.58417967653772,8.12487032137716,6.72766435404575,7.09096275556974,8.62908605892756,3.99484039169388,5.44008396271842,4.27774712402304,5.09233574567179,5.37449315415688,4.25531920678017,16.4234516970983,11.93699960016,-17.8507096262042,-14.7590180758747,-13.3338239746249,-16.754076916126,-9.43312793724706,-6.69145906348289,-3.96229265627028,-10.8554032412347,-7.61054894205229,-4.61596017733198,-9.1525259031454,-6.36744113483482,-10.8802350975524,-9.87469956600363,-5.37769255286084,-5.87371035242977,-10.3302144036763,-12.1104422827662,-5.23458678180818,-6.78472506954989,-13.9891486781114,-3.80969323454175,-8.36546658975645,-12.2204855883937,-13.8634112528466,-3.27305491970783,7.04618682437167,5.75967620984253,4.40497334922903,1.95352035362318,3.40752832218139,-1.29118439409832,14.7739855577173,16.5513260785854,16.3420565101592,20.0891199100568,18.9694523605112,17.9314840107639,18.7212864457271,19.413928388797,24.1201387342457,22.501303356413,24.2733993993265,21.3321639022359,25.850186080721,21.9527938836721,22.3967894118299,23.5242366884744,25.723036040292,20.5257979816868,19.4478451200419,14.6640400774849,16.2458895518556,11.4103941161934,10.8448070527124,-19.1325776017802,-21.1371990061647,-22.1647650390152,-21.1178783442063,-4.64558365475924,-2.63153280943686,-5.59386403537576,-3.2898378162149,-1.96702123267281,-4.84798347689149,-3.40961260579139,-1.40000963869912,-2.04479512258648,-0.649270820039734,-3.10384575788387,-11.4034448577461,-12.2874524693262,-18.3533201953353,-14.1541940642624,-4.08216326841367,-2.69313177781493,-1.96685678841506,-0.85037949061759,-1.88952586438029,-1.05009650375238,-2.24984931341079,2.14481488699542,3.46170353688824,2.6180848878527,0.76391851533021,4.12519447820409,2.56970101271419,-2.91308501362769,18.1133202617731,16.8969454341691,24.2023946931084,12.0095938136694,13.8720162619191,10.0473252498974,12.8155770352969,13.3843092933738,12.3870243688188,10.7083640623161,10.5000091974748,8.27362938205894,9.28827501395518,7.52420023957805,7.56911178104847,8.87427222165696,-19.6147602653884,-2.96252779111763,-6.42917509636418,-1.03136876100305,-15.9371781186372,-14.5637001937298,-18.2873636853675,-16.6599361563376,-16.4045922122487,-16.479162561615,-3.1562085535769,-2.02955496493421,-0.598624185574649,3.6239843179322,2.58976141110844,3.60917044394295,1.16091507340624,2.11488877851988,1.93556392857868,0.0314907494111887,0.846086840972585,-0.653425265636171,1.3388820178113,-2.06501326103195,22.6991604208166,10.2870705095321,-18.0838443237366,-1.4029480928241,4.68504093276784,0,-0.203371505432888,-1.31106020330802,1.01538879064556,1.31881945944603,0.552855909031164,-2.47369596022358,1.62128649775075,0.164509142837311,24.2429939012352,32.2655492977688,27.0230532884568,33.3640827831522,25.822187630904,32.5052773967501,35.4009575681042,32.3392025007923,29.6166717359885,33.812392968635,26.32994935297,19.8430173357615,-17.6847341459093,6.14519487301566,5.40301402570172,5.44698572731752,5.43803959095338,6.86298281968701,2.56402633595911,8.96719510306982,4.02740427843973,7.37947553143566,2.07754551252149,6.65963530729225,5.35523775053845,2.56699912986134,1.14550455011916,3.3648727885387,2.69612415987784,4.16519057077753,4.16411242972587,2.98990562015771,-1.47538032496145,1.11759201399256,0.0278383215771183,-0.526823172895404,1.28654321071828,-1.81687729697851,-4.07313838367715,-1.39512724437649,-2.37663198593965,-3.62296668372866,-3.67761850458347,-4.97739678499223,44.12407799507,40.6815060420896,43.4062748054502,19.0570215520549,21.5076648720513,21.7719642025341,-15.2772122786592,-23.2562965143644,6.64421847891204,-0.119016213357451,0.750024310819393,-0.00402216756147313,1.40089516250334,2.80236514314596,2.38178644380582,3.96575151968409,1.07980440122144,1.58345036410238,0.571720327041587,-3.3688121530625,-4.74313053179652,-2.93604329912655,-5.20096190693481,-6.02434836790113,-7.61345419479242,29.003092047348,-12.8378498121187,-20.5006732380496,4.30382298599456,3.96296943048284,-7.11830444429428,-7.10817444835112,-15.2427457773929,-20.4066211432346,-22.4318395824285,-20.0154427053489,-16.9253588588712,-26.9677295029674,-14.9928632858171,-16.8595741895676,-24.6510099702704,-23.1262286198384,-12.964726624649,-28.4389690103597,-25.9275175947758,-11.9662005918296,-12.7901476395785,-10.1006520234743,-14.6460105913911,-24.605339262008,2.1674554581317,7.10937799521623,-18.4176095109714,-21.6914746093577,-15.4466431865546,-21.9380999986341,-24.8794677520731,-20.8812768898528,-27.4097660527599,-20.5451473765931,-18.1873958667168,-35.7800949970584,-30.8190811578318,-34.7455440840381,-28.2203128841177,-0.160447982799645,5.74237029549673,2.88887117386577,-20.9031237442068,-17.1363582212883,-50.2829018969116,-38.9574161770063,0.807482891660492,1.3996852741988,-0.605128464475865,2.95036333830635,-0.77604128760482,-0.236533898859419,1.33456017299016,-2.39584498319144,1.44574348596834,1.78395008888435,4.72833600780219,0.195222527475315,3.17399997090666,-1.34395660307648,3.23317498712007,-2.65327220717046,0.0813448834676726,2.72788796403034,1.14040652512957,-1.22408875292097,-2.55510181761498,-1.66107168784507,-3.97708262357231,6.64717764620087,9.61430746238357,8.18168905623838,9.6259462820531,8.01730535233951,10.3187575592124,8.86586877367738,8.53576031136854,7.48007828751784,9.43193063427766,12.3182550239705,10.5870901531093,11.8026763578836,10.0320604364883,6.68118228927423,8.55856465523044,7.87872477125409,5.64659397196085,9.27806290154028,11.3826131169803,9.99048748590036,8.55364783952513,-14.4883535084586,-22.326895595316,-31.6952161507923,-41.532030989794,-31.657927299486,-26.4901352766491,-33.4712341353415,-26.085507594895,-28.4381005846266,-28.0100392364897,-29.0327899239935,-34.7562343666989,2.08445163411588,-4.04194858851038,-5.12749070978225,8.33981055565548,10.6173367310603,5.11195328472956,4.24891155559817,5.25295250239218,-14.5889039635628,-20.4463822826164,-17.1404472098023,-22.7517340830884,-17.6963325943151,-15.5320724834939,-22.4926572780936,-37.0874896073215,2.22250522831996,-4.09436529892277,-5.62814716429722,-3.49048752185336,12.7141461447618,13.3113203597515,-11.6855578939036,-15.7329251787254,5.38560743648111,-1.3172728100112,-5.32614982147571,-3.36164636772901,-8.2261391850928,-7.13359016371903,-6.99729131679259,-8.6713768346901,-9.58438341378148,-9.0810347169466,-4.34381917188076,11.910594961313,15.85437478998,11.5624462917669,-13.0900142170767,-14.5905139853919,3.8664042661773,5.46090519106561,3.9220774567578,6.22366548047696,4.9169219199314,4.60870237125001,7.57540634836538,5.5697945758422,6.17788876569991,1.04403722800494,2.77186131391206,0.117035403793477,0.392298813586687,0.873577793893297,-1.26163364778466,-4.39952222974512,-3.35477995850133,-3.5954598812152,-3.77814763950422,-6.22718633568971,-10.9983121082629,-10.6525193548325,14.2472138890665,14.6759781998094,14.7740850458752,11.5045739434001,10.0059885236201,13.7543879494122,10.6143557368205,13.278694637045,12.0814292925755,13.9529800207777,15.8418989583429,11.6730179219006,16.4433318007352,17.9676226066925,14.7637015063525,15.7939312023156,16.5168762290029,14.8431121693011,15.8495217780366,18.3107370521357,21.8917444360761,20.3178308391002,20.4452415268526,6.89152446256299,4.37662021410735,-9.39345909683139,-6.77202514644757,18.3203623309663,13.7110911826519,15.8732935711422,12.3295794504028,13.4022663555161,24.9328190541794,16.97220678856,4.67571930173828,-8.00361546201166,-8.30425652289618,-11.5410385699752,-9.52502213784147,-14.4196419330547,-10.4361373872169,-10.725979990164,-15.8966093079794,-9.60748083922219,-6.43027107488126,-4.95195468033666,16.5777396016996,18.0192033110825,17.2677960749869,20.3162701325804,12.3539414499942,19.3895962755316,21.1667762025326,21.6555824607264,22.6156060224469,27.1723227600681,26.9007873807487,28.7545498914487,19.6547238513282,26.1421190617167,-8.04354004214089,-5.90450741348196,19.9841673883858,21.4922723099703,18.7138274153109,17.5547926214897,13.7315739881691,16.0221454011372,12.4963725382645,19.2137286465079,18.7741892640664,11.3192757117629,12.6931260056772,11.0059429757281,18.4620034401495,10.3174445951083,8.27209663695632,39.8819982708233,22.2305326095323,28.5956000379287,25.6080838396453,18.8997333378958,24.630650288112,25.0256805945491,7.81880732325178,26.905441987519,28.2809785908545,23.8737027754109,31.5581470017279,21.9951987129008,23.9926554317691,31.1135517621176,28.4409716549296,28.1044105514614,30.4254000785757,23.7707488715316,26.8897664081421,30.3402154678647,32.1021518648231,31.0914816575799,37.2765462495478,44.8336142023582,44.6330580400479,33.846833439488,34.6560845968101,29.9560529858281,36.78425749809,22.1919117652144,31.3912487900212,34.190241932711,228.745859228396,234.04529876563,215.72474232549,222.92404088051,218.470022210166,189.37122561188,212.69168455274,159.185293036729,169.679381550166,125.116557602097,152.492677776628,81.6202806366286,74.85920070657,36.9697684949083,61.1968881474253,-8.07716883675301,-55.7285353313265,-101.273325498224,-139.448863556861,-174.259614721873,-174.63748480825,-204.069539623447,-160.744417815437,-202.20461273199,-189.659888369536,-203.988108607452,-225.12453948064,-233.288534030695,46.6456700135888,35.7632394504882,46.1934652958904,47.0723037272454,44.2835993789587,34.58443751434,48.4063582831122,36.1269946983195,38.6201585713321,32.4940565523171,30.2300207870019,31.5557698262551,32.2000127018318,32.430658717291,35.1181864978191,28.3500726065325,36.2689953438192,40.0015183095401,28.0785352904997,27.6685328229705,29.4570608798182,26.7821133883495,25.327201675932,9.29996721701973,36.2919954802665,6.80831144959717,17.1399375543907,-0.488182684849762,-1.18409885621578,-31.7083625808094,-223.963102288088,0.074858044602375,-3.49026085427793,4.9222385809755,1.58783534897403,8.09346761175745,9.79295262105332,8.9115716324916,15.868528226969,7.86045854157308,7.01799728813211,5.32767812600358,17.716011536521,-2.99161979730372,-0.205411703020154,-1.79367074734549,-1.97674708782055,-8.31288204514503,-5.38122147798989,-3.31545293941375,-3.40038030984213,-4.84827964260659,-6.72302600333061,-1.45251365841204,-4.3085387881417,-6.45510910886429,-2.42194376633019,0.795241634275921,-1.13671459759205,-0.741735989420133,-0.956259144125248,0.312933268650113,1.34137831802052,2.35193155116346,1.81780018396643,2.56244743836376,2.88241965834076,0.179606860741396,3.52677803623834,3.49501787565597,6.19865921506541,7.72882519293157,6.14922123893612,5.43046174798218,4.48928475230187,-6.56863904119645,-16.8926209550215,-32.8627029963862,-46.5456558076506,41.3651399025699,27.5447961767707,-1.95811196508228,-9.33093664842032,-28.9860373063927,-39.4516898908006,-38.2807613753034,-53.6316812869451,-43.6901384920266,-34.0845809592056,21.453624834645,-44.5062785031569,-39.717173922044,-59.7457376453745,15.1099394253566,-16.2229465882008,-24.1083173429777,-26.2077336648781,-25.0288739749152,-25.3696101129326,-29.152672725885,-32.1277408556835,-33.6937034852269,2.72868294924134,2.08173620254174,3.27205642660116,1.72697040533478,0.898529235134981,10.8112151962679,-6.03568403040046,6.59698388446318,-8.85154337985919,22.5246793351841,-4.21392792875058,3.63465463290359,14.5530379277176,15.7241088403579,0.0835693000245946,-0.571207083630673,0.393643412352331,28.7174810602116,29.3100838574091,40.9414022817226,9.31489667889062,5.58025736344427,54.3698797335947,0.584346292218148,-29.594308865986,-32.2863563006922,-30.3641735244632,-38.2434651013448,-10.8627369846076,-1.44431321089034,-24.1764689868788,-31.3451523157486,-24.1823135739787,-22.0979394194035,-24.4372802322176,-20.7646683625167,-20.3798724133361,-21.7132861094236,-18.6835045915859,3.73147465284089,7.12887921547405,6.85119057536271,2.6487818880553,0.479646123813578,-5.1926373027195,-2.26166198600602,-2.3398724918443,15.1596406413674,-5.5252592114078,-5.77959674809287,-7.98300720735804,-9.43353378139329,-5.67509975902371,-3.40661706269589,20.0314142681392,7.62892015569476,18.3355511075386,11.1535396735655,30.6584529219955,27.6182211082851,53.02508599095,35.634852213492,44.2756900428033,36.994970466436,45.2287888207355,57.3441406006651,41.9021114029466,35.3487805983893,46.2355949001564,33.0852089341138,47.1804543961144,60.4313528692696,44.9382233726469,34.7192287626469,36.9115608252544,35.7731733074683,42.1429639132853,37.6578588856234,39.6209540871583,26.3691654056642,23.8295345907636,29.8749266045336,25.5699142632058,10.1271545563798,-4.52483035631641,26.173655459691,-0.32635408153592,31.0885798334745,32.3633150237649,-19.7143281962019,0.451506668699962,-8.66031890271564,1.53575149566366,-11.1455695673528,3.73068174781551,-10.4327243389727,-0.360403552633621,-8.7316545036914,-7.02212259467514,-13.6183646525722,-6.40808752628782,-13.3340979953275,-6.69030118543385,-23.8038560128881,-10.2596002153849,-20.7894039938448,-10.4180996292909,-19.0776874396238,-11.4069162358224,-20.8103668148437,-20.5974656249746,-21.8142392876171,-16.8957741049807,-22.6158326717015,-18.5935245000507,-32.5349195157368,-19.9299368602235,-26.0634836816497,-22.1277495818882,-23.3249092175042,-20.546339145664,-27.1878674038918,-27.3269579512155,-26.3174061490827,-19.4258274737852,-21.5866653562594,-24.3520788829068,-26.0274085014992,-28.4995387285824,-26.6688468521308,-22.56492337568,-25.5557116240274,-29.1414962623455,-29.0615049278625,-28.4755086691127,-28.9035738729728,-22.5057752063439,-24.7656310251647,-20.8137801897642,-23.4156443582435,-27.6720865999885,-23.2239233457715,-21.4286806880145,-16.0720772238801,-24.4590391841506,-22.7914905179391,-22.657786556557,-23.0629352442347,-13.6714005544711,-21.3521758944301,-19.5534867413585,-16.856398994491,-20.4199261361195,-10.9636833039392,-17.8893836040775,-16.1783149379206,-9.33305253100923,-17.1689060332085,-7.422491194017,-12.2037559366156,-10.5989598442148,-5.06521443738197,-9.36751747788398,-0.691821048592176,-9.70229004292839,-4.86855160154809,1.35634970372348,-5.00964280199417,3.00207992121762,-4.54243767593164,0.590139451092124,6.92498487131671,1.36554308211917,8.01670619052279,0.431788150247356,6.56763584477238,13.1636710680969,5.45490432661697,11.4526057566555,5.82624962317146,12.44973821051,17.7617658070181,6.76090404640511,13.3496922459702,11.4985457465544,16.6536965750221,23.011919998073,15.3074121314631,18.1881322307391,15.0878568657884,21.880182069947,24.1097662053738,24.8986714062979,24.7199359611436,15.8458892273957,25.7882108529204,27.6266924293387,23.6552833701555,23.6074979075641,21.7740170641473,28.771006807029,27.2490851132715,22.5731414551883,23.431864218085,24.1089827613454,29.3227896809893,28.6973328618066,26.8009340689849,26.1167607554301,28.7647508531852,25.2232320140835,19.3808052824726,31.5000790842161,34.6189504411063,17.761860609678,20.2456030317614,24.1587090941585,20.2074892777015,24.4501098790011,24.3544763079592,25.8747482339953,19.7905498444403,19.7159108832536,15.9636758399239,21.7240345621614,18.4884115600945,23.1342965697714,14.0054949976434,19.5474416465055,16.0982264586894,22.4594561081334,13.1729826073904,17.508701455619,6.55648357452584,23.1671010763672,9.07671560365096,17.8732412253782,5.24557778134475,12.4595438507684,0.430067857613136,16.4018168501309,2.78225816239485,10.5438703877846,4.29436668828984,4.05609537684133,4.81209201405992,248.549206983392,251.124939831308,38.6352087471656,241.645871440463,243.685861602348,196.647287381394,217.943659458195,22.6344922766524,265.531697228146,36.4989738413615,290.976074867283,36.9508798011099,236.306273707975,247.332042253233,186.456301964879,237.376671282948,50.2696026797351,269.62303881828,264.004305105655,315.571747143239,39.8286144424149,216.327489334435,161.078875808669,208.008996270946,207.25622464771,230.675697028795,244.849002786556,35.7442498054841,181.891291802204,179.887085872748,135.72967267933,162.748585415447,37.3798097248587,225.336664900829,201.589117143336,306.655040971349,325.768619129321,26.1489158353133,123.970482510793,53.9829655911883,106.501996817071,127.020723194372,199.632656603411,141.237885767466,103.240604162731,17.5789114843606,51.6935091902779,90.7863389099206,10.1206083771739,51.2196012022915,14.4917877735409,134.003639478904,81.350625287848,234.369855362406,10.8173451155528,39.171205211395,-44.0427727306861,-5.45418934908588,23.8368372061706,46.5044104520579,19.927173841308,-13.0760699602236,5.60275369590501,-14.2899931301729,-84.3701020142086,-74.9297425675483,-4.92722529888582,80.0233220849602,-80.7640520758721,-5.01920401610353,-139.570643408363,-67.2226460202163,-107.090311650531,-143.331596392327,-86.1606979670667,-101.026968099261,-112.123538713823,-35.3041828432475,-11.8380919143833,-121.114279252085,-168.828574921071,-182.410928336925,-137.570564677224,-175.501798667999,-171.705161689623,-61.0859353401225,-175.614620839321,-21.4401142089224,-242.962017883247,-163.03960588557,-265.71939081002,-187.644120645993,-27.9848693293089,-156.868543832017,-224.471962058422,-140.595558558079,-31.8547153505463,-184.769416804639,-242.585258667386,-231.25994659663,-47.0750681603295,-209.111782786989,-243.870830308423,-261.552230225643,-32.3612686998085,-291.270863047935,-231.082465595392,-243.444723849619,-236.20135644328,-252.431417761251,-249.677739373736,-260.264595945771,-39.8505228269065,-253.82701499326,-306.862356339473,-270.315474065592,-276.911531894763,-44.1278903787611,-288.26819621796,26.1145573737072,28.9120745765443,42.6318342976262,30.2479906147357,19.2084980596934,16.8336692247118,23.8783009140454,18.3359233791469,14.3884339157564,59.7479664016233,267.297689634383,10.75717220836,8.94326392965207,20.2443643187698,16.0163356903291,6.00474814223336,33.2564805918172,153.954536957163,5.30101832761215,1.33808917824177,9.9800553051355,-9.11690672536304,-11.3568609155018,-13.4787998601502,-52.4755096673821,-4.37837424871299,-18.6253384422793,-28.1895925217839,-132.254858640742,-7.8235814831631,-20.3367839951873,-22.1739614826309,-46.7382241374617,-198.169507017483,-9.76936818483352,-25.3271864345625,-21.664567094074,-15.9897200362425,-40.0556810094186,-19.2735427218793,-28.5452675486047,-25.0157155963096,-23.1581511151327,-30.835181340741,-69.8149908742428,49.3841886597361,40.9289716797005,31.9280284042672,25.9831773485041,-9.49860163422963,-3.81513770322761,-17.0876808189081,-15.2129647140665,-29.1725925996778,-25.7500551472993,-48.6534445483792,-42.4834078836976,45.2816609074735,42.4621394240335,28.572971174393,21.3746063391842,-4.11468355113372,-16.9119927260551,-27.172516053843,-37.4104106434263,-52.9312341482719,-39.3220981871704,39.9633211898953,24.5248606298288,-4.33160957201084,-0.529515358490672,-5.28554288107574,-14.5267536455385,-16.9285648980618,-26.5691490358463,-26.3535107090895,45.7698328459112,27.6824734091289,-6.10254684025357,-8.23568947157205,-10.6835511090966,-21.4919816982732,-30.9078778512812,47.369658739227,39.3424619502702,29.5678740122248,22.1930064129212,-11.4343385703051,-19.2725338021495,-20.8912242371961,-31.2870514359973,-29.8885251376981,47.9952859163277,30.0807770863909,-21.3112652229813,40.6635284135125,46.5198321747562,55.022121480544,30.7414275014666,37.6612471551261,26.9296193186626,-23.9004310845414,-25.5001928811233,-22.2266301505189,-45.7598610548414,-77.507827765986,-44.5008197932631,-1.2770940249312,4.73540867347538,0.81545380786937,2.5969909624108,-0.743413283688969,1.77368959431823,7.32100054876657,5.25668555322572,6.84889040387506,-45.1191494576077,-0.994440965164584,5.04121966588887,12.9748228226123,-16.0843347009103,-29.9174828451392,-7.17958668616572,-4.31575103467436,48.7164102064698,26.7205563197995,-11.0844053361557,-39.2743705527596,-30.009267414259,29.8817031390418,-15.3573406408032,16.4032905712806,-21.7409401965544,-18.0352344659043,-15.4863838404603,-18.2671673944746,-12.3560781990459,-12.9120759986641,-13.8435918862601,-15.0751211810048,-10.0056065418706,-13.0278824867483,-17.8207554360995,-17.510496551469,-26.3020639715684,-20.5360110813527,-28.5623341360962,-23.0526183409637,-19.899655105431,-24.4009541259138,-22.9977647681144,-55.3630057105395,-45.9278442564012,-58.0162639387239,35.9103592705357,29.390897473947,14.4684039611389,20.1946641148471,-14.2952979557988,-13.7274791062663,-10.5080122064411,-6.96201476565749,-12.3176573641418,-11.0049962895759,-10.3137372650629,-7.52551461437,-8.30780593385573,-32.7747561603992,-50.9014344213517,-49.0227246397318,-44.1449243699987,-50.0671054762771,-35.4186158779151,-56.1292205798257,-38.8729567089656,-39.7327592348161,-37.6702879612351,-37.1542388878926,-29.9684976280549,-33.6861173295982,-34.4548846837174,-28.0169053429294,-36.8703328287126,-30.3603543318838,-57.273446974672,-68.965883159437,34.1513878228021,31.2330729252151,34.5390986054757,18.2924103661888,22.5142774633514,20.9707929978692,21.698967049245,25.9598883691712,18.6904058914811,25.4599945864322,15.8424263767603,-4.12702194443865,-31.6116862543603,-36.5557433082878,-40.1545395759383,-36.5039651027871,-32.783230371994,-44.805343197933,-27.5173333526014,-53.6807535128607,-29.1419568932162,-25.8253496236298,-32.4813388181386,-25.1081830829214,-24.0495509139923,-19.3621100607543,-21.0956442424719,-23.850753821054,-19.1832987186483,-24.82748992467,-21.4084926569467,-27.8324592120731,-17.4168901206422,-20.4765357682254,-18.5773398388239,-14.7992299021602,-15.6594769059546,-19.9409515124318,-16.8719992435246,-17.8017488697341,-14.0147764846326,-16.2166808858111,-17.7596956926026,-14.2902727513194,-11.4648909952288,-12.61440595262,-22.1505641370393,-19.068578606429,-14.12586244795,-15.4580692342813,-12.8446097295722,-13.314852922841,-8.49306689926453,-16.8749886934155,-15.210990732224,-10.0767089936976,-8.2262039638564,-10.2678203389365,-8.80972038399135,-5.66375629078612,-6.75598824389153,-4.9404889662916,-6.4398020728024,-6.36755025269881,-8.25636368964354,-6.17085359626817,-3.07682479377529,-46.6961357230745,-52.5533696010699,-42.4455813733149,-41.9747851063327,-38.1830361705393,-34.1262416421312,-49.4010568492163,-41.5808369760982,-36.5843323668063,-36.4504061782385,-40.1853708111419,-46.3849516090437,-41.0813260971248,-30.3330792676616,-32.6379022477566,-39.661570311046,-33.0590229777844,-32.1762265506359,-43.8019450673449,-49.7494104603582,-36.2222883384398,-61.9502397058149,-38.9683796068985,-52.5239973887651,-46.9869048023843,-334.315485133713,-48.1193648634339,38.6278860871268,33.0963702932219,30.0382179612652,42.8526838860551,49.0270508942531,25.8519843524226,29.6521550937804,36.3359125017986,34.8373901244965,36.0366290003504,31.8952939208937,34.1613097109859,36.905494883142,29.0952233353091,14.2901811095311,19.1387264746008,10.9463159554402,19.0273532404759,-6.01760685586859,-3.48468506340561,-5.67158182911133,-4.22771565056487,-0.77152764293706,-2.58873932365693,-1.3982314174713,-2.37799974714728,-0.580339732120544,-3.5922647672508,2.69509771790839,0.896419613288869,0.927854481735435,2.34161706355891,1.5412414147143,1.07422630301704,4.8778610806129,0.265961039968746,1.80142698609301,-1.57123337025304,1.84397325805372,4.34756375740661,0.202584122232291,0.236654600794588,-0.440476897637436,-1.76240572332653,-0.906427256780349,-1.16514201799471,-3.18172720242951,-3.2334846265908,-47.7760037099685,-55.0535160838881,-25.2901297827464,-25.8731215028208,-28.4015658743268,-24.9891135209001,-28.1409931232901,-33.6187924143196,-22.4732636707258,-19.939033213297,-23.0679743368141,-20.262546207773,-23.7096835413658,-26.732500265837,-17.7360703406033,-9.46026933687254,-11.5636351915464,-12.1526657600809,-10.6140892483351,-11.6066444365415,-9.98552780159083,-13.602926292875,-13.3051270403871,-15.3508213999682,-15.7338405073257,-13.6882560415506,-14.2500820770028,-11.1030642083842,-16.5126505213245,-29.8893996996441,-26.6069483449394,-54.651881158083,-35.2148945464299,-42.2371298106177,-74.5705300105214,-51.6611251867759,-52.4550260594586,-47.1737647236099,-54.0666220267876,-40.7149534308802,22.9914958097594,20.0319051119269,21.6539783418104,24.2566182613099,18.2550734838252,24.3526940684615,27.6621321422631,22.4930082570025,22.9711747112852,20.1082886562908,20.1178079485119,17.5197112368008,14.1565370550889,40.3248843960972,44.00373290103,31.6018218927117,23.1970484709551,14.827859741192,10.7183499411464,13.2879710089014,-7.26388672880367,-4.34112086757705,-37.499167771405,-35.0678198175948,-42.614484753896,-51.5353599160162,-32.6090397390047,-28.4171376254233,-30.2813647647553,-7.87823497396342,-7.35070944301914,-30.2836103804566,27.9660819351979,25.7207044933253,25.9668663455129,18.3734660746391,14.1635042988443,15.055981822487,44.4725665109353,51.8225635983534,36.3817049646238,39.3982416344411,33.041358590032,29.1988138156498,28.6060386984389,31.665553233385,35.7283091319473,32.4859776324096,28.5680146412834,29.6686920734863,24.0415703309364,26.4854501945427,24.592531952759,13.7978561105758,9.88631529489511,-30.4225748250902,-38.11623430402,-39.6827201075307,-37.5895205422706,-45.2175730305441,-46.8784313460536,-50.9925836697111,-28.7697577837738,-34.5812138183586,27.7115363964583,19.6549508670271,22.6063472987675,17.0266058630783,16.0882341924317,16.0311141359379,17.5842661839166,15.7938474366127,76.4198644319281,11.5265718417843,11.8443160720473,-41.1267645570235,-36.5224014376478,-46.7060579538252,-33.6170323632994,-37.6778028998331,24.7724429025209,18.6111948408418,12.9473346578666,15.5019577619504,12.5141276120112,10.97081268138,9.92581227843536,-32.4909791659878,-31.9115280741366,-30.2925771896081,-27.6496066653547,-21.9381102572612,-24.1474447922882,-21.0655041241957,-24.8357865163542,-22.2173916694981,-17.4177599232428,-19.7373004424356,-18.1883006791953,-19.2287001260711,-21.0560337299201,-39.1948272960532,19.6821374445985,24.2202421066601,21.5433958614424,8.56599971836162,8.14020999467864,-26.3327529224805,-22.5960999989401,-18.145327876863,-24.5990367536167,22.159862243631,21.9403159545336,18.8045048179759,15.787962778109,15.9693346531451,17.0226228740401,17.6458824125124,20.5488043497039,7.95466070928042,10.7035984912063,9.62333175334062,8.81690879664605,6.50158018096587,5.83680665449073,5.21425643057485,3.89769070781924,4.72167573546744,7.64870159649186,2.8481136053111,4.29598106093078,8.64951756331563,6.36136034919493,-18.9013187498643,-23.6990349720137,-21.4325279033002,-27.0276469385692,-23.5573657401257,-23.2641679890523,-20.2915920719291,-18.6531492694609,-27.4443697108836,-25.7458049700948,-28.3271024256099,11.3954416587598,16.2253048755298,13.600707425762,14.2732718884954,11.5166026409362,20.1423974284972,8.7256765836524,6.42759898530262,6.112807313334,6.87993396959352,8.98123128609194,4.76937884856785,6.05681219593677,-13.8699337121504,-30.2423869744391,13.3753478576726,12.269162938263,11.2643069102359,13.3886877204166,15.4726413290432,15.6172369013098,15.8569751783845,17.9359901376933,20.2381699804579,18.0209904742693,13.6515973376975,12.2300146222262,11.1885651204521,13.527170728355,15.7571250696956,13.9257951491617,12.4442112298929,12.005653970622,9.79376729888913,9.5023128669461,8.1367305072861,6.08243878466516,6.41830639244652,3.93211679143817,-16.5404422672679,22.6152587438892,9.92159697851238,16.2315843342168,18.1659863292225,13.0623967894014,10.5431147659918,10.3145817270624,-16.0637581601355,-14.077993943059,20.7183890135561,23.4253227561833,9.34208011469055,6.18616664846535,7.4557368123549,8.00446280446752,7.34286487801894,7.86050538568588,10.8553932738951,16.939836472787,-16.4567101165944,-13.8309359194678,-13.0083240789173,-14.8156783345649,-14.5197278630521,-13.018062357118,-10.3968693200963,-11.7716387030688,-16.4805909310258,-8.70757565430492,-12.4870418082743,-10.0829954481823,-6.5323559609298,-10.8043635123057,-8.04093290177725,-9.60879272717057,-11.6533082587638,-5.36668335586838,-9.55372080513422,-7.21190945778649,-12.7760504889457,-7.12420607939525,-12.6120408801409,-10.8515900200286,-16.3947504055992,-8.44057231158029,-14.5814116139987,-16.8531451474206,-10.7811092156988,-9.15695147822821,-6.84329949835291,-16.0984478092576,22.3581274758139,25.9335789951514,26.0574972701312,9.18017405148031,16.7773835252078,-18.6506059855347,-19.1337721423481,-15.4378828831024,-13.2742660148277,-11.1194478412633,-11.3369053600153,-12.0524084339413,-7.53205376390169,-10.6837991357739,-9.42133436676582,-9.5351865371494,-8.58604146451893,-8.35456474297525,-9.56647339562875,-7.52332084856591,-5.18206849804982,-5.56370791631115,-10.1040861063991,-5.31278116517869,-14.2567941738181,11.0780889108297,10.3476465452058,9.76142849527889,12.2627428286146,8.32940320001707,10.2773560475506,8.51632462490045,8.96579280712699,10.9218548122879,5.06594457196322,6.88866830307502,5.40728823950197,6.44385133490104,6.8052098950802,5.3809186256969,20.7678979536733,15.0884381090714,-22.5934540949583,-18.6759382192102,-16.8868871867402,-21.1774328426858,-11.9400636594044,-8.46892333684018,-5.01353444778278,-13.7432581356631,-9.63170148334557,-5.84502406738763,-11.5771215467506,-8.05921336319678,-13.7518944257939,-12.4929124129941,-6.80253048573922,-7.43234411849213,-13.0705093578129,-15.3170495009171,-6.62501124815858,-8.57575270787244,-17.6932340235099,-4.82150221889094,-10.5816571582096,-15.4557015477584,-17.5382704069703,-4.13688447592129,8.90797540936209,7.28513479561048,5.5787269571972,2.47833769457231,4.30638898428032,-1.63363413835963,18.6815222711225,20.9377511679106,20.6798040334956,25.3986158184204,23.9900765594771,22.691083946755,23.6852561360369,24.5782815444185,30.5252417080098,28.4246798166172,30.7382736792957,26.9984269986628,32.659266006168,27.8000636752107,28.3341961856698,29.7320872019591,32.5530477917748,25.987353652665,24.6046160422124,18.5587386962612,20.5487016869041,14.4388984064411,13.7369926845326,-24.2040988016675,-26.7503699844094,-28.0583001826959,-26.7217145825229,-5.87669890772966,-3.32564416945944,-7.07795110626517,-4.17273511062683,-2.49486113645455,-6.1340421052331,-4.3101542673436,-1.77177339435819,-2.59154880661339,-0.82696303965561,-3.92427831736038,-14.4328745787989,-15.5410566827353,-23.2366195078578,-17.9234884971162,-5.16040725850821,-3.41224559350429,-2.49373227682309,-1.0731194492814,-2.3925945904572,-1.3293754341493,-2.84554356616034,2.71823009544829,4.37060084050774,3.3211666812836,0.97063157287359,5.22271615521778,3.25408297031905,-3.68326941796462,22.9193077802833,21.3530024505722,30.5919726660861,15.191540478257,17.5576598074327,12.7068085741448,16.1941013497136,16.9265134777885,15.6564438478391,13.5412163239226,13.2810265941432,10.466016456084,11.7511397297619,9.52372948463728,9.57677959162346,11.2261703628307,-24.7928242381303,-3.74766235155464,-8.12982433778981,-1.31571850981819,-20.1639672464989,-18.4267402372945,-23.1349543719382,-21.0791231841404,-20.741673767861,-20.8322446970049,-3.99270511534791,-2.56405097768426,-0.753096575094251,4.57779338291914,3.2861284758716,4.56327154953123,1.47383803182662,2.67767436689994,2.4490263246256,0.0420397127453846,1.06888047996461,-0.829064499728319,1.68841511952626,-2.61831401089143,28.691663977084,13.0139005734896,-22.8682789801195,-1.77522410918423,5.92458195029932,0,-0.259215777988172,-1.66125595003957,1.28637548940654,1.66558875882442,0.699207708090327,-3.13266203508621,2.04732556077529,0.212003787613202,30.6668639713084,40.7516397622387,34.2225287101062,42.1811630067149,32.7020612207596,41.0516116388229,44.8677514909661,40.8741122618203,37.4533755220883,42.8458168952618,33.3283953232052,25.080309334386,-22.3654248696919,7.77599011001049,6.83841209839398,6.88875886687785,6.8810215532281,8.6803924244761,3.2481337731339,11.3411485721162,5.09080970207941,9.33755231580235,2.6304890019169,8.42134681891365,6.77841346182749,3.2520439914579,1.44474684212671,4.25728710155639,3.41174640716456,5.272857633544,5.27116162871175,3.77931437619292,-1.86997584825061,1.42418118310463,0.0355914368734636,-0.665126234280056,1.6272969827776,-2.29393239258641,-5.1502697837242,-1.76841739835568,-3.00349017844536,-4.58881391460614,-4.6536326916908,-6.29252254303671,55.4739346623728,51.5747529411847,54.8552422329234,24.1488722695094,27.2134689207525,27.5562552455813,-19.3323302128133,-29.4482179502756,8.40568772641686,-0.149232564920679,0.94627834583833,-0.00364365835823759,1.77341750168808,3.55028115998253,3.01192247883134,5.01606111318217,1.36455301114537,2.00711299507678,0.723665459931952,-4.27085147140728,-5.99126457945084,-3.7107397859676,-6.58537966395462,-7.62367975821183,-9.63017738670098,37.3026354236164,-16.2444677309337,-25.9219565750815,5.43879997888005,5.01191862716674,-9.00698271982966,-8.99280445556192,-19.2721208770299,-25.8348609632762,-28.3363775480528,-25.3309177042781,-21.4139936053035,-34.1337487819942,-18.9734529449383,-21.3514138268871,-31.1523111954584,-29.2596417532751,-16.3978963920675,-36.0515280922432,-32.8388409175237,-15.1205912933195,-16.1828739366928,-12.775026606635,-18.5311700047642,-31.1290212608549,2.74057911761936,8.99179782661542,-23.3184943719068,-27.4087203704965,-19.5262576170594,-27.7476661370098,-31.479996357448,-26.428112717475,-34.6495351276714,-25.9764392999092,-23.0253289680926,-45.2521300576883,-38.9791707268584,-43.966671475421,-35.6966524496179,-0.202392217958159,7.26292521623342,3.65703934684705,-26.4291428933267,-21.69215818983,-62.9261221288191,-49.0401416038841,1.02362622514818,1.76787244087241,-0.764935376894482,3.7341993192578,-0.983479766314066,-0.296075465873189,1.68749446039456,-3.02817429610815,1.830358880746,2.25908804312188,5.98051164219482,0.246437980934541,4.01239290118813,-1.69847800334734,4.09231672251021,-3.34971667092832,0.0983320806390124,3.45216794253151,1.44351399549589,-1.54801041313422,-3.23703103578747,-2.09999507442932,-5.02958871417447,8.40611282971773,12.1493047985695,10.3532670943289,12.171013233418,10.1480902234012,13.0554123149741,11.2135922218493,10.8041681839023,9.46942162781327,11.9266226934236,15.5813457369367,13.3850129523832,14.9141155467163,12.690391878477,8.45036843882198,10.8171117997692,9.96332349092334,7.13901830493223,11.7562761387329,14.4012608723902,12.6375367499532,10.8412514155241,-18.3231360383475,-28.096989066368,-40.2331623799937,-52.0893732170338,-40.0715063252817,-33.5461938560988,-42.3556167525556,-32.9577377768391,-35.9953196558706,-35.4514377423807,-36.7566552404879,-43.9869182770479,2.6492171337279,-5.11587692802917,-6.48289987866025,10.556204742103,13.4433081079215,6.47031192775433,5.37288253737005,6.65304771915279,-18.4497243980035,-25.8204242584534,-21.7467143841661,-28.9503765998572,-22.3007242159524,-19.746542625272,-28.3887998242758,-46.9744543133618,2.81215593608895,-5.18094584837202,-7.11978911976365,-4.41877265646753,16.0867900770979,16.8496365763341,-14.7783406441509,-19.7618499946051,6.82390977491349,-1.66665307028889,-6.73537718328039,-4.25542690807389,-10.394237334275,-9.0209148419149,-8.85793732294679,-10.9736538065487,-12.1304001609349,-11.4933934484179,-5.49082166964864,15.0819702406705,20.0612384824793,14.6254491365479,-16.5691173087828,-18.5336529200598,4.88858628914817,6.9088495656312,4.96172055626627,7.88836482709295,6.19389980777834,5.83026523204712,9.57432538403312,7.09263587815713,7.8185434682592,1.31646700265059,3.50261309935118,0.147671840069504,0.497527946239424,1.09660248263384,-1.60230451933458,-5.56475442777243,-4.23206717840033,-4.56123306511045,-4.78172861286105,-7.88478439598813,-13.9260794777455,-13.4825493468092,18.0119859928626,18.5855874686182,18.6916377192642,14.5512382614875,12.6722186542169,17.4167280133522,13.4414444003182,16.7874768633375,15.2808168388776,17.6404826655187,20.0601085984599,14.7779080802715,20.834159958863,22.7432940833692,18.6709376296493,19.9695745700192,20.9141323390725,18.7566368176388,20.0437980414375,23.1661483171324,27.7157311494425,25.6558161217902,25.9613815629858,8.61344479357391,5.51588784089538,-11.8841595297804,-8.5636157449535,23.1741705395792,17.3379185133711,20.0869984692645,15.6180697457502,16.9681444704566,31.528189079688,21.4709696189991,5.94002600238792,-10.122365280134,-10.4933091851509,-14.6160426512742,-12.0443542293969,-18.2067871008883,-13.2145518889729,-13.660164115195,-19.9462474289046,-12.4354329108936,-8.14209579239935,-6.26588123284698,20.9676494100517,22.8053913836539,21.8425033413135,25.6841296951522,15.6265694629756,24.3966398523337,26.776797992074,27.3856209334478,28.6448044726185,34.6047481326835,33.9545549793616,36.2630022661355,24.8022732318779,32.9115114455587,-10.1726293564709,-7.47240236943175,25.2714965478183,27.1846917845127,23.6669799873289,22.2138050119574,17.3829436759613,20.2990796632331,15.907981903148,24.3479425838355,23.6597563752807,14.2942938503332,16.0419157717781,13.9001800285719,23.587717770879,13.0787670961018,10.4845759956552,49.9518325462783,28.6252632632954,36.4060080595673,32.3967467185791,23.9285258918006,31.1588796220619,31.6624007925193,9.79155863201868,33.8025695372098,35.4743493608347,30.2143532932754,39.8912354989282,27.8368236245239,30.3984523327621,39.5698386477465,35.9127435826264,35.5459520161183,38.524817717253,30.0709654831004,34.0438026201044,38.3406455675573,40.7413335824026,39.3946125304286,46.9374641633691,56.2653735035432,56.0544683643386,42.9403218919424,43.9388441508275,38.2606551360611,46.628852892355,28.8167800737014,39.8001602179114,43.3383255166851,288.664493275512,295.389751487059,272.221845098356,281.364391421774,275.79166379284,238.998027049837,268.243030809242,200.873937679764,214.140216907194,157.887928955132,192.339053316018,102.995538097897,94.4312358251729,46.6362855820703,77.2333003485921,-10.1808520985745,-70.3423569718719,-127.825874686101,-175.992829618388,-219.910297879088,-220.389163549465,-257.531233411198,-202.864103817261,-255.185580009563,-239.636868687772,-257.262714381679,-284.07162608244,-294.423833038176,59.1240090651984,45.2470219263644,58.0416469367432,59.2214201956525,56.0338205828127,43.6912790373929,61.1972014997233,45.7843302763882,48.9718655135425,41.0713690649021,38.2752759335913,39.9213886883267,40.6630971613602,41.0336315230648,44.4750128864602,35.86799069756,45.9718012282169,50.7605662249261,35.5221478892571,35.022088415604,37.2540926053023,33.8528858466355,32.0264462384184,12.9476254730346,46.0917956716493,9.43472528504186,21.7931089231777,-0.94395585781054,-2.11756177830402,-40.3088999791989,-282.750961853013,0.219126537656279,-4.41104447284717,6.18930055140136,2.19553438014459,10.2862161194119,12.4391099536625,11.1759613921989,19.9978952268175,9.93334489521944,8.88081062734361,6.75126196744252,22.2001759945717,-3.7827273080857,-0.258839276237948,-2.26913028986397,-2.50175360678236,-10.5037432556787,-6.80365748687364,-4.20129682295638,-4.29886778991659,-6.13667346674084,-8.50920550425729,-1.83041947482261,-5.44885676974513,-8.17560295201189,-3.06792267623935,1.00541302160266,-1.44371272541976,-0.939241012594726,-1.20054279519366,0.393964655451669,1.69033569155821,2.96792711011812,2.2998976554835,3.24228257305681,3.63734215848053,0.2282569772352,4.45634768605535,4.4256230178767,7.83592010861551,9.76883534339109,7.77661904807798,6.87236327974522,5.68321676006188,-8.30596719472741,-21.3581444921035,-41.5551441036883,-59.1441038449481,51.8431309094124,34.9448828070683,-2.47825333698663,-11.8060162713928,-37.1443180685696,-49.8800391422192,-48.5192527237264,-67.144713557846,-55.6211968243141,-43.1240215702323,27.1445601163499,-55.8387518862374,-50.316013283494,-74.7463007388554,19.1291117108714,-20.5307209122351,-30.5159391084772,-33.1846534865261,-31.6198147381757,-32.1195154125448,-36.8858536549947,-40.631523595224,-42.6408231133905,3.44814486581621,2.63739117852896,4.13329431949293,2.190559234706,1.13621967762483,13.6657268765049,-7.64434303486796,8.33818128099322,-11.2092358532243,28.4974051333545,-5.3376176521564,4.59375508172096,18.4150482820655,19.8872637484734,0.10537836569154,-0.722974060190109,0.500748743428945,36.3490476708548,37.0829326138639,51.8270484624389,11.7813950983822,7.04940522689723,67.9318746799347,0.736474703185899,-37.6193056032435,-40.5504029534583,-38.248412371758,-47.8907151899936,-13.7563170320738,-1.83003528921981,-31.2357417451782,-40.1851010149271,-30.5666211491238,-27.9984621793295,-30.9213907105928,-26.2741352777869,-25.7714692116253,-27.4839463719183,-23.6396870004486,4.72121152262139,9.0007888264842,8.67103459881714,3.38534920546803,0.581406704713202,-6.51964282292029,-2.85162133940102,-2.96623063457156,19.1704840072673,-6.99510794962132,-7.30004341013046,-10.1268178609177,-11.825583541184,-7.27575671760478,-4.39327418265703,25.331572862893,9.91164278836107,22.9975593414079,14.2086566025685,38.6073502650924,34.9396436236308,66.7910929427818,45.4783761291108,56.4397542188196,46.9827313737747,56.850975864615,72.0454158694387,52.9714390335228,44.6740952077944,58.5665132480035,41.8387173762102,59.3093197852659,75.7373010719635,56.6138325086399,44.0190990717913,46.7171088044675,45.2212714616583,53.5294400164732,47.7446942570049,50.1807746944546,33.3739766833655,30.1436834184162,37.7818390668389,32.3514696360419,12.7910181966042,-5.72242097638979,33.1456834436782,-0.390645022464883,39.3609782571366,40.9482324318657,-25.3944478161178,0.572970992196751,-9.7262875886433,1.79704203197313,-12.5968847643996,4.26711871669204,-11.7755443135726,-0.373142742408661,-9.81786956131855,-7.83289628453136,-15.2994955092496,-7.13954269590739,-15.0290504974814,-7.45924448066111,-26.7394613403627,-11.4505376219391,-23.4092223326226,-11.6405268539165,-21.4685901768544,-12.772744207626,-23.3157376690215,-23.0908218840694,-24.4778183344383,-18.9281362760292,-25.4244257362057,-20.8100248147308,-36.5238624659459,-22.3351208995303,-29.3105308482713,-24.8202501505379,-26.2148410800376,-23.0323068456698,-30.4407037135576,-30.6542226122545,-29.5267789376181,-21.7963144148869,-24.2404382632345,-27.3131756422411,-29.214440244509,-31.9586734794373,-29.9420761666195,-25.3311322754461,-28.6643314000503,-32.6933169847631,-32.5387454290313,-31.8710351219956,-32.4276741522118,-25.2316729951725,-27.822895175284,-23.3416088991602,-26.25653452056,-31.0399008476507,-26.0080699728385,-24.0863563052026,-18.0163181763848,-27.4457902930546,-25.5783466366999,-25.4017092330397,-25.9599746713417,-15.3059458688521,-23.96320080738,-21.9394885717338,-18.874594258247,-22.9985810735197,-12.2592785621907,-20.0800963461452,-18.1513895158631,-10.4304267230464,-19.3428212953587,-8.28980555260991,-13.6998940858006,-11.8933178419809,-5.64595111932299,-10.5913465997379,-0.719858521325861,-10.9024329438626,-5.46278888457566,1.55253683259235,-5.69419896251472,3.43199210429915,-5.12308870023256,0.655764908913684,7.80464676228782,1.45760281257584,9.05800731501833,0.464054078719286,7.36538790874463,14.7975756137226,6.05865043584683,12.9110779401362,6.51784775236975,13.9639022789866,19.9427187282459,7.54912220283788,15.0378273249272,12.8759730383641,18.6814269805447,25.8336116795755,17.1331444796208,20.4606643847584,16.9053418612593,24.5425608236564,27.0266779010759,27.9089630076079,27.8046116991432,17.7503995556553,28.9288839470331,30.9791934615256,26.519934413522,26.5293735407545,24.4070677628739,32.2664909012687,30.5362114590081,25.3207218866058,26.3179551552908,27.0340299226208,32.8965081773091,32.1316319303973,30.0246894912161,29.3179226457111,32.254195301779,28.3220561772534,21.7437697899946,35.3911712420003,38.8390961316039,19.9908382130822,22.7253952096305,27.1308624447768,22.6615434927134,27.4294165120188,27.242422002796,29.0363039895797,22.1774122738336,22.1627583541655,17.8884054354389,24.3978256801328,20.6818743164625,25.9623001441634,15.6860993732323,21.9901491979066,18.0147132835603,25.1982730804332,14.7505948808995,19.7256061392421,7.30098685539952,26.0956170617023,10.1335150912016,20.0661621365573,5.85243336217567,14.066277223361,0.414711081698325,18.5047406381986,3.06273675562667,11.8352777036224,4.81942877800512,4.5367002847577,5.35675854113279,279.67119515055,282.628108763164,44.5925666706085,271.995940694091,274.199716642089,221.359347906838,245.289223924129,26.860952254823,298.836510203611,41.9987187342653,327.192010728659,42.6914098827028,265.781792420412,278.284211677089,209.852508374796,267.09695276685,57.5592853915893,303.423490356533,297.054914999805,354.923774001117,45.5780983993229,243.411055094075,181.285593502829,234.088135728929,233.287033028922,259.672716510293,275.417279408545,41.020666846868,204.595861889035,202.389632842679,152.740698084823,183.092018994056,42.7141741208474,253.532953678262,226.844575621821,344.90553485161,366.46096450447,29.8458236694842,139.484479985648,60.784184173681,119.882188289959,142.974010145378,224.52956027488,159.047335211661,116.166457414818,20.1449408477286,58.1789063078558,102.087827402418,11.4058562755855,57.5860665987408,16.5402980367484,150.747569032912,91.576397267371,263.60227994486,12.331012337168,44.0143546845205,-49.5358087311033,-6.09640246237188,26.8372425921598,52.321093919012,22.5062164462049,-14.6678329877983,6.21079087210232,-16.1646628153298,-94.9394610956412,-84.3658523488605,-5.65836652291148,89.9528478618428,-90.812092337969,-5.89291910822508,-156.94804194639,-75.7434805531876,-120.59984278062,-161.334499940074,-96.9848932423659,-113.649270161641,-126.070584674029,-39.6827360061254,-13.7768884046693,-136.331686916137,-189.98931160634,-205.245513804135,-154.840219433426,-197.418669694799,-193.145080652143,-68.8137367986545,-197.53393755505,-24.8276316824064,-273.239333151011,-183.547321764599,-299.012270804658,-211.181836938236,-32.2147148545676,-176.616756117847,-252.523162351571,-158.253021957521,-36.7011860416693,-207.979368813527,-272.98762579189,-260.217191178361,-53.9747605794501,-235.345526758249,-274.405931159976,-294.110886436324,-37.4891911639603,-327.583140863129,-260.106592010269,-273.970346584449,-265.798310753394,-283.843611070645,-280.937750791782,-292.900460875411,-45.9143605848907,-285.68481985626,-345.128051697105,-304.262656264745,-311.466508476278,-50.5926456837975,-324.232647399839,30.0771954744009,33.2449187569151,48.539027584581,34.6406290773974,22.4372904938612,19.5803417388474,27.56704630431,21.1680458520376,16.8711260953267,66.7217832388293,300.665783617746,12.9758965702786,10.5217409989825,23.2264197634693,18.2352244978869,7.03412033068801,37.1464013963106,173.175458700321,6.47342155627931,1.70646337972275,11.4036110116988,-10.3043230624667,-12.901361179509,-15.058443986652,-59.0767381964569,-5.10902428784216,-21.1163678683577,-31.5391284431335,-148.76503159579,-9.19466875513018,-23.2483542478097,-25.4677013317544,-52.182541439043,-222.901581243868,-11.6283272010914,-28.9878058002666,-25.0419250661885,-18.5020059750175,-45.4659337058922,-22.4908060213525,-32.8363083136016,-28.8736800357743,-26.9789586146096,-35.3772913777649,-78.0182389381598,55.9672117971997,46.6395300367177,36.2018821640276,29.5135928445001,-10.5943435209856,-4.52329340110845,-19.3262533309195,-17.514904426625,-33.0289266081006,-29.5114399884561,-55.2167306282537,-48.7421238858573,50.9181558539636,47.8710325130714,32.0848619439497,24.1296692634833,-4.59689682547419,-19.0992748775612,-30.6665554515807,-42.1612773736064,-59.764360123598,-45.2248604510988,45.0550091497597,27.6545286138833,-4.86879455598589,-0.648226112217433,-5.9462411273034,-16.3307563630772,-19.0782197362264,-29.8995549145118,-29.7009239928753,51.6601119019758,31.2261119776653,-6.94269360304427,-9.28423770734775,-12.0540166832852,-24.2519139174835,-34.9304627831805,53.2541324108634,44.3674440004671,33.2536120283062,25.0239864218378,-12.8950351625691,-21.6461256101141,-23.5804970138502,-35.1215920462338,-33.719602783599,54.0520683888971,33.9225445805543,-24.0200006764392,45.8226286690821,52.4674223686294,62.0356084392332,34.6713933923597,42.5205572587815,30.3309659949136,-26.9936678555345,-28.7128184866785,-25.0352456367846,-51.541715908622,-86.691100730937,-50.1578817351529,-1.47410890869331,5.29010739673328,0.918062953513051,2.92914667923982,-0.852431582390282,2.01696662391516,8.25030175727831,5.92392098709922,7.71192410230403,-50.7599695460494,-1.14776353301193,5.69437615316739,14.5595409172005,-18.1622661174282,-33.821510648885,-8.08616917002647,-4.86215829461713,54.7139680841269,30.015175768139,-12.4740752108256,-44.0949108006879,-33.7871062299215,33.6978356915738,-17.3112646890585,18.4874185374554,-24.5127582755785,-20.3234324777602,-17.4468860375682,-20.5826811038464,-13.9389854565281,-14.5500158565021,-15.5999579571605,-16.9952251405154,-11.2801843437453,-14.6765369849325,-20.0870373554177,-19.7332711270307,-29.6241784930688,-23.1727147709257,-32.1643360636252,-25.9722417120752,-22.4383628880366,-27.5051835473366,-25.8996115890545,-62.3400312221133,-51.7815763902856,-65.0187231927266,40.4507025499596,33.1226995957959,16.2898594523937,22.7504451773438,-16.1285477341605,-15.4627563754253,-11.8550803848615,-7.84520024932217,-13.8781385506607,-12.3968519017344,-11.6256200429135,-8.47988177182768,-9.36091030225503,-36.9692154547493,-57.2281349455947,-55.3984082815069,-49.7027227207119,-56.604421956432,-39.904483129611,-63.0601092895315,-43.8045460332763,-44.8001329650743,-42.4733243603598,-41.8861947363122,-33.7990510677503,-37.956350622608,-38.7995306354177,-31.5993131858785,-41.54968648253,-34.1879380426358,-64.5193198554844,-77.01378522313,38.5690702387294,35.198196912988,38.9161784610799,20.6207675702099,25.3638028352385,23.6214896219299,24.4810085284037,29.2855085597979,21.0512758312682,28.6860061096722,17.8661996958791,-4.65058422388449,-35.6599545678894,-41.2459298732279,-45.0648490049768,-41.2598926180928,-36.9211644107586,-50.3768779293378,-30.9991360691122,-60.1272663984176,-32.8574057026982,-29.116401717213,-36.5902718338083,-28.3293422921707,-27.1071326430329,-21.810159765641,-23.7891573867929,-26.8627968345437,-21.6166006360033,-27.9809252880239,-24.1317618399251,-31.3778914100571,-19.6323925910684,-23.0747832670828,-20.9324083765828,-16.6824718227097,-17.6529894726077,-22.4729558470833,-19.0200733717412,-20.0543596847179,-15.8002189303541,-18.2825862809335,-19.9994869851633,-16.1116747139344,-12.9178208563778,-14.2061150716899,-24.9678034984463,-21.5002086499927,-15.9108719536571,-17.4203963052565,-14.4822043486331,-15.0029991657576,-9.5673661527549,-19.0147824655097,-17.1484869647456,-11.364723786194,-9.27490432529556,-11.5744931243092,-9.9181184556241,-6.3787561457629,-7.62167372194108,-5.56607537143613,-7.26356871112738,-7.17168168154772,-9.30474000001059,-6.95147253297716,-3.470144564605,-52.6448934480693,-59.4299190147693,-47.8735643590471,-47.3331776757955,-43.0207857638051,-38.4619562472029,-55.7202526999552,-46.8385398300632,-41.2240383248221,-41.082653119404,-45.2856304322454,-52.2621997112147,-46.308141869648,-34.1702151666169,-36.7884618893023,-44.7483327688854,-37.2746290217791,-36.2560462218701,-49.3022162051232,-56.1730629006618,-40.8319671819451,-70.3627907650717,-44.3614768673801,-58.9880056561097,-54.2937966865222,-376.16390465379,-54.5647561842694,43.5526334289477,37.2861481122297,33.8267169638825,48.1125005647393,55.0379768224039,29.126097274876,33.3925198240611,40.7159843739354,39.2702248386352,40.5980538556476,35.9296326279405,38.5056401925103,41.6211559128695,32.800073392347,16.2288467188626,21.575521137288,12.3332939408527,21.4344660116722,-6.7804754465781,-3.92808446584758,-6.39697493919982,-4.76830523067685,-0.867177927480202,-2.91562019322954,-1.57570624129928,-2.68157357967957,-0.654718056703181,-4.04562331177799,3.03784802779336,1.00896045892385,1.05771143545275,2.63862248634244,1.73688194713759,1.21124206639432,5.49235494487589,0.30256757422126,2.03141717072041,-1.77011161546356,2.07090657545633,4.90578911283368,0.22998287955532,0.263232973822152,-0.495452937063113,-1.98507087916873,-1.02382580807797,-1.31399377904165,-3.58609297488174,-3.6481223470978,-53.6456103942821,-62.0496943136595,-28.5071102405256,-29.1503650772735,-32.0432741597943,-28.1460832175283,-31.7120646354108,-37.8513488776342,-25.3317357944922,-22.4461220299675,-26.0099308579803,-22.8470251707993,-26.7158703810066,-30.1405711488005,-19.985002436823,-10.660068319571,-13.0401741452235,-13.692554173564,-11.9536358554441,-13.0899241925348,-11.2493648841028,-15.3351232960503,-14.9973539719928,-17.2991280591334,-17.7306597458095,-15.4263868843823,-16.0534717259958,-12.5223099582888,-18.6233370833934,-33.7217801030051,-29.9611567009967,-61.2883454110241,-39.6815577520007,-47.6600339806048,-83.2948254398114,-58.2007312911578,-58.9942058044088,-53.1992659226162,-60.7055138670953,-45.8724702237175,25.898421292683,22.5751630696404,24.4220863800267,27.3670567927783,20.5624460160396,27.4387033502989,31.1600882712508,25.3378850289413,25.8788212282137,22.668110265797,22.6829297238261,19.7550872042403,15.942770785835,45.457675942933,49.6949448777592,35.6223180365705,26.008097294632,16.739663981633,12.0823884150666,14.974523260859,-8.18933705915246,-4.89127188935353,-42.313625094893,-39.5165516618382,-48.0708236052636,-58.4734431079502,-36.738246008742,-32.0272649460345,-34.1073830611121,-8.88535758519654,-8.28848859318972,-34.1483925788602,31.5099243557396,28.9898750384103,29.2509727321539,20.7055585517456,15.9680231259662,16.9737708476371,50.1093771646801,58.3141462880116,41.0185304679751,44.3644196534521,37.2488543963468,32.8935153819898,32.2326418233533,35.6896729851234,40.2490483876549,36.6197773766755,32.2056378113834,33.4341653299924,27.0999295781631,29.8583695126422,27.7164594585359,15.5445911342797,11.14761715614,-34.3126415952851,-42.9968260444452,-44.7117336689743,-42.3920324268874,-50.8985775315382,-52.8675504149295,-57.4018686245463,-32.4334864420251,-38.9934106213711,31.2281231754813,22.1635105524008,25.4745471378087,19.1751550011786,18.1339925378928,18.073209409416,19.8244092416336,17.8090296607228,85.3721788884497,12.9869140583205,13.3549975618633,-46.3433623750698,-41.130586486552,-52.6631772452573,-37.879213653055,-42.4119041609831,27.9135806077523,20.9537552395555,14.593858672074,17.4763878494409,14.1050456031011,12.3710692269082,11.1813919646195,-36.6365061699231,-35.9639509842582,-34.1373311313864,-31.1439619650975,-24.7077428038775,-27.2312647517927,-23.740311552767,-27.9705636981216,-25.0409393018247,-19.6275677618264,-22.248204539616,-20.5001094703631,-21.6834700657748,-23.7357025627633,-44.1149749771935,22.1653591449017,27.3139423651965,24.2758889455708,9.65752015917573,9.17177284568344,-29.6827675292586,-25.4621396119413,-20.4505734766881,-27.7376246019749,24.9835088163073,24.7119996406658,21.1920732422233,17.7749140103672,17.9993012369966,19.207885256955,19.8794535727755,23.1573324980047,8.95844956335433,12.0542651391377,10.8631024495359,9.922943034953,7.3373631105108,6.57736794944101,5.88570293700887,4.39983033812164,5.31470546496416,8.61727561878132,3.21097151742016,4.84395433618083,9.75099625868556,7.17442422794287,-21.3031503511676,-26.7019569277477,-24.1550032716819,-30.4747423238675,-26.5348152684006,-26.211118435302,-22.8758259037378,-21.0313913873965,-30.9321221528624,-29.0189097296586,-31.892054933472,12.846028326073,18.2902105378755,15.3266426838637,16.0924243709271,12.9821245924724,22.7041673404267,9.83030316404979,7.24873338838547,6.89440925357627,7.75454325203119,10.1238505307582,5.37058339338047,6.82227099755241,-15.6327772233549,-34.0705018740777,15.0783563667809,13.8289968814266,12.691046176735,15.0937027008729,17.4387299061521,17.5947160496148,17.8764615830505,20.2218576434284,22.8042908205062,20.3089967459241,15.388760921243,13.7819957195895,12.6139100212735,15.2466276164342,17.7447136630066,15.7041121788696,14.0366755889064,13.5330978062651,11.039175477976,10.705043939047,9.1631341050346,6.85809570541945,7.23858626086528,4.43239772887801,-18.6414251696665,25.4746774033036,11.1711575672647,18.2921481704138,20.4848150407951,14.7075534471646,11.8918951862118,11.6263867640203,-18.0943333008127,-15.8646952920247,23.3452080086298,26.3986874502191,10.5323794073077,6.97597222886256,8.40596945341405,9.02578362037089,8.28191860593599,8.85797799741179,12.2432914731847,19.1015756350205,-18.5337785812417,-15.5757882868599,-14.6472730956323,-16.7209206864151,-16.3742449255817,-14.6835618198198,-11.7100633193784,-13.2677372199863,-18.5695663653394,-9.8189703844119,-14.0774896868758,-11.3610961939623,-7.36765403397758,-12.1737762032503,-9.06721830991843,-10.8157145806673,-13.1368526999113,-6.05314758752707,-10.7672990933174,-8.12782158220802,-14.3909655421808,-8.02562799168213,-14.2165613861877,-12.2393966852012,-18.4621042551328,-9.51087115502281,-16.4405533042048,-18.9919794385807,-12.1461924728253,-10.324576863266,-7.71095579029457,-18.1315327599986,25.1989510474238,29.2142013743691,29.3874560356594,10.3543567741981,18.9163188858934,-21.0179949599082,-21.5681836129411,-17.3824929398283,-14.9717567118014,-12.526118299236,-12.7828940640306,-13.5834051028571,-8.49161818867604,-12.0504449044986,-10.620831053595,-10.7481765051217,-9.67738597566173,-9.41218942065071,-10.775771508889,-8.48922425030631,-5.84560766694487,-6.27120335429636,-11.3814673371148,-5.98654669753678,-16.0754160154914,12.4772219262872,11.677401133452,11.0030997485554,13.8077177354647,9.38909212446899,11.582202042769,9.60361801184202,10.1012576789878,12.3148517969931,5.72241838087042,7.77227436030085,6.09391690355733,7.2660950123073,7.67669191290171,6.06439635819711,23.3965872448714,16.9928457304691,-25.473232763499,-21.0530092414285,-19.0498228038621,-23.8495755089748,-13.4632082921137,-9.55009650238744,-5.65580911760234,-15.4986102557193,-10.8586398702261,-6.59268797640344,-13.0459068240242,-9.08667486276351,-15.4859994208703,-14.079972998109,-7.66585313155526,-8.37776703070294,-14.7324164979665,-17.2585695719391,-7.46962752336403,-9.65762735791894,-19.9356808396788,-5.43613691606213,-11.9239153907499,-17.4143644212911,-19.7653422307065,-4.65879474314334,10.0356869458948,8.21144908477765,6.29463564505551,2.8019493646357,4.85088356507649,-1.8419491348595,21.0459127974875,23.5959047271014,23.3114928072871,28.6081678778763,27.0287749650238,25.5787656541837,26.6940760176725,27.7167004511991,34.4120681516001,31.9940316766247,34.6707773307282,30.4379625808359,36.7635904663128,31.3574666813784,31.932522689335,33.4802964421718,36.6969686758518,29.3071511210942,27.7301590549796,20.9235267669523,23.1551735294095,16.2769542077551,15.4989553044545,-27.2775402900643,-30.1565765565115,-31.6386110196616,-30.1205929023988,-6.6262796701239,-3.74899232784811,-7.98039015897179,-4.7161227692346,-2.82188893301361,-6.91625329225539,-4.85846419063024,-1.99945143468092,-2.92916113046338,-0.945163163928052,-4.42252898859353,-16.2722802707186,-17.5115042683093,-26.2048442764439,-20.2162751845924,-5.81264252672814,-3.85102237673883,-2.81600117863223,-1.20690748623749,-2.69869232006677,-1.49923268536108,-3.20627784370083,3.0718903252025,4.92198961628019,3.75553321430925,1.09824326390166,5.89074555419319,3.67116313782405,-4.15028635054841,25.8341977839579,24.0418995109426,34.4503190823151,17.1196485473066,19.7952856088351,14.3175166233674,18.2332745071311,19.0702959594814,17.6315154359605,15.2553682959476,14.9658347064844,11.7953532603939,13.2447171827068,10.7385673626752,10.7949047374995,12.6520706021494,-27.9202307642322,-4.22563651375877,-9.16084815644659,-1.50384642843224,-22.7263053925519,-20.7691564688744,-26.0724313263326,-23.7589813274915,-23.3644828303391,-23.4625120718266,-4.50043030060634,-2.88674565231808,-0.845006507634478,5.15917495802494,3.71695224085092,5.14398598034109,1.67551117808287,3.02225281978467,2.76219544455845,0.0493598537774239,1.20362933583277,-0.936898088974475,1.89824247760299,-2.95769092731379,32.3108952068646,14.6676761367045,-25.7626671744416,-2.00149356498063,6.67562697421207,0,-0.295704719322154,-1.87690980744006,1.45632209015466,1.87533487217831,0.789173003761631,-3.53455664601254,2.30468397439337,0.242636651285922,34.5577585701622,45.8601152675073,38.6038982995956,47.5089413375876,36.8883838878662,46.1952647216239,50.6429102001184,46.024576213491,42.194090681029,48.3589755429408,37.5785954251786,28.242815055169,-25.1980968458869,8.76574206751836,7.71010890626307,7.76266174166761,7.75676871308559,9.78141185118542,3.66517859553699,12.7785846596294,5.73392359989845,10.525356766006,2.96711523910393,9.48761551259854,7.6427982674382,3.66979094582619,1.62418697023363,4.79939544563686,3.84693866847079,5.9469023854765,5.9454955937039,4.25828661928413,-2.11662410243744,1.6262615020896,0.0404626967824403,-0.748946708484043,1.83413662430914,-2.58275452888769,-5.80304789254471,-1.99685678460761,-3.38246248868064,-5.17728659955327,-5.24636457621083,-7.08823952657076,62.1516287559213,58.2788410823702,61.7597751432264,27.2546018242039,30.6738277395828,31.0674346028973,-21.7922854682821,-33.2138416335909,9.47436957658585,-0.166976424273957,1.06436863444378,-0.00271847318398311,1.9999456869607,4.00609047455644,3.39348132060601,5.65256621042788,1.53641239086084,2.26809756618457,0.816705002195738,-4.82326830570677,-6.74553807543353,-4.17999343182283,-7.42863567525743,-8.59549881667875,-10.852495086777,42.7372179625586,-18.3104557562231,-29.2003854495556,6.12412540004134,5.64695499840034,-10.1536856616766,-10.1359089232611,-21.7081279763008,-29.1333406869902,-31.8933608297604,-28.5569331790728,-24.134908969071,-38.4831705832306,-21.3887847451141,-24.0843253711497,-35.0749565019556,-32.9781756027483,-18.4766437586575,-40.7030208091615,-37.0448363163998,-17.023258318329,-18.2401973152761,-14.3940444906638,-20.8864148020771,-35.0823170356182,3.08733796345248,10.1316158776801,-26.2977291523331,-30.8528574163836,-21.9904563685756,-31.2652047521982,-35.4821298599917,-29.7952447700419,-39.0234967808472,-29.2605094613755,-25.9652180119355,-50.9809640785225,-43.9167986917456,-49.5635935764911,-40.2234288552277,-0.22754090118433,8.18368185582775,4.1237459953525,-29.7709180875865,-24.4595914059528,-70.190961440673,-55.0047292179559,1.15571767096438,1.98964333338419,-0.86153076369145,4.21015736939527,-1.11003213153153,-0.330595139152595,1.90095173557662,-3.41003581955823,2.06415252239139,2.54814253561932,6.7387468472746,0.27721830230677,4.51899427028134,-1.91241537616017,4.61397986503848,-3.76832267726507,0.106342958999503,3.89161551596156,1.62754913671074,-1.74405701137448,-3.65261156633236,-2.3653312788343,-5.66640580337944,9.47075965444321,13.6790622602821,11.6707962367383,13.7103376296443,11.4421892979541,14.7145027099819,12.6350967028949,12.1817047198128,10.6781931899353,13.43569831432,17.5575654313008,15.0761599363447,16.7909623567574,14.3006905969325,9.52148639927605,12.1804266969412,11.2245981958166,8.04129333484802,13.2674406083802,16.2302079943,14.2409135460325,12.2376573671246,-20.6422821510421,-31.5136614383131,-45.4865831643301,-58.2115034278822,-45.1835736880748,-37.8383732621727,-47.7486191740726,-37.1008445713344,-40.5828091919604,-39.9681945177732,-41.4495835498105,-49.5924414010151,2.99747509362249,-5.76789661570754,-7.30241843224511,11.9025047178839,15.1616629729031,7.29512603369309,6.05287871093051,7.50537307685193,-20.7858690558861,-29.0517579750069,-24.572406828206,-32.8083716156224,-25.0406943879877,-22.3482148991305,-31.933465276245,-53.0012813197247,3.16972467892936,-5.84016008217757,-8.02363595470254,-4.9828911258283,18.1320591506142,18.9987306559549,-16.6501655188391,-22.1258243078759,7.70081604959931,-1.87853376635815,-7.58857097246831,-4.79846484120848,-11.7019323706191,-10.1628687341064,-9.98839473811466,-12.3707112843208,-13.6759809198884,-12.9576004814499,-6.18389424876518,17.0111796469789,22.6128568497599,16.4809343316356,-18.6818325063952,-20.9747641330716,5.50658249485759,7.78643228753344,5.59170666512911,8.90446666304697,6.95429003512,6.57040981626171,10.7809210896978,8.03960061011844,8.81420776815676,1.47745784813387,3.94400238335575,0.166117274943685,0.56194580956677,1.22741389897389,-1.81182585742465,-6.27020794219574,-4.75764101444351,-5.15318405899844,-5.39096279878429,-8.89258727023558,-15.7064354772668,-15.2005779379232,20.2880200104343,20.9645985915799,21.0662655057919,16.3962328328692,14.294935099415,19.6441858977011,15.1612036092636,18.9082174852937,17.218144743142,19.8694092164138,22.6255164078882,16.6647555059074,23.5113943620602,25.6433131000505,21.0351312804468,22.4942905107871,23.5881268057919,21.1175851304416,22.5817288518238,26.1090843395675,31.2542756618313,28.865227796218,29.3577469301291,9.60132434766706,6.20390871501689,-13.3935233818895,-9.64751941431771,26.1141011013409,19.5320286366362,22.6433096639189,17.620890850082,19.1352035499947,35.5161198370662,24.1949163430136,6.71770408008517,-11.4048005851308,-11.8134666727045,-16.4881241566112,-13.5680138937313,-20.4811153774677,-14.9025246586429,-15.4897011330026,-22.3029369054198,-14.3246238035379,-9.18309428363112,-7.06266002039747,23.625736523613,25.7108307719088,24.6137018988307,28.9283077675575,17.609217735699,27.3595852246389,30.1759183030068,30.8523830441009,32.3153877728537,39.2361092594123,38.1922237662326,40.7360472077137,27.8893292961953,36.9133136626369,-11.4613574234611,-8.42399960766815,28.4705154672945,30.6316447909469,26.6649708239296,25.0399180061305,19.6010988030486,22.9090667622588,18.0305772958546,27.4855340303254,26.5593440739137,16.084212032562,18.0583072495126,15.6416518183552,26.8935073632843,14.7734805666756,11.8340516402282,55.7632525457864,32.8727004763022,41.3071071490361,36.5068782207566,26.9853132358249,35.114195420034,35.6857754226722,10.9368037422284,37.8531915282913,39.6686921531537,34.062673743768,44.9265376961303,31.3818379399411,34.3031424497186,44.8145141219403,40.4047682442214,40.050173186841,43.4447199489242,33.8879491779055,38.3921438681423,43.167455986655,46.0418707448094,44.4595788036873,52.6643818805581,62.9430738556037,62.7262644859332,48.5139635423855,49.617793501369,43.5265325494699,52.6790352030581,33.3650032361513,44.9398194446842,48.9581394221824,324.777269256904,332.386694147562,306.257054477856,316.598547884784,310.367101514176,268.922495575737,301.634062785805,225.993159173945,240.934269283849,177.641321743072,216.3016024572,115.878738192724,106.210960785195,52.4550156925742,86.8974344210299,-11.4404324655984,-79.154966256171,-143.841123743731,-198.022008220825,-247.420702981333,-247.959780611831,-289.744193073732,-228.232633358435,-287.115567855084,-269.816344240401,-289.276438916164,-319.58123518616,-331.278596906748,66.7648866624147,50.9948638453727,65.006447825306,66.4138867880065,63.1609528577509,49.1783298566891,68.91770008982,51.6791744881558,55.3014831427774,46.2496741701476,43.1664860370668,44.9904833614203,45.7546312134077,46.2492221644316,50.1681193087828,40.4251575839127,51.896968288145,57.3606833735112,40.0330793813517,39.4879274124746,41.9730434035146,38.1231835306759,36.079058640644,16.0008795418178,52.1737695552129,11.6048823706806,24.6929537230146,-1.47956754522719,-3.162122967982,-45.6610119120286,-318.208908696703,0.375108536360836,-4.96698586157069,6.9442452036267,2.70004187229547,11.641977127352,14.0698844282075,12.4971404544501,22.4526403028447,11.1837899018199,10.0103903472855,7.62023578758652,24.8037209978123,-4.2611495692344,-0.290700990999306,-2.55724454923021,-2.82037290836204,-11.8247339244754,-7.66373161647507,-4.74157449273834,-4.84187533401549,-6.91895854085921,-9.59345983688889,-2.05584076893934,-6.13900106686767,-9.2230703567423,-3.46138441806373,1.13252617188717,-1.6325471530811,-1.05944330173392,-1.34392877856934,0.442080955221217,1.89843042209037,3.33750878866472,2.59213193078853,3.65450624262774,4.09020762886944,0.258234425924604,5.01697926294667,4.99163908854723,8.82518931674684,11.0008285681888,8.7616359577398,7.7472265628294,6.40869048453732,-9.35671126755623,-24.0575595880725,-46.8127572334634,-66.9645560079067,57.9272030585695,39.484334083579,-2.79413779524377,-13.3073498457537,-42.4133931504264,-56.1795984488812,-54.7734334178734,-74.9335330875906,-63.108020080176,-48.6229288642146,30.595247924276,-62.4481446146847,-56.773796371225,-83.3715722800648,21.5718308579598,-23.14518010735,-34.4071511547389,-37.4282925773629,-35.5915822741542,-36.2226038084178,-41.5749644598009,-45.7762514431266,-48.0705044799168,3.8825956060646,2.97632311542077,4.65291553034184,2.47449454876653,1.28014182009371,15.3900734923886,-8.62421248147903,9.39219229804031,-12.643622420106,32.1178422008355,-6.02309785108965,5.1739549250223,20.7581250152097,22.4083210436299,0.118469433271696,-0.817345935776634,0.571402101969942,40.9825549502199,41.7954537315664,58.4415129379208,13.2754809319688,7.93762365419257,75.6796231537532,0.827395725329382,-42.6051363909805,-45.3966803371323,-42.9321751072012,-53.4579202331696,-15.5167302888836,-2.06528047493553,-35.9764230233625,-45.9454718818384,-34.4225159189448,-31.5957627613513,-34.8535319326733,-29.6154091088419,-29.0332598140999,-30.9881419379493,-26.6449477749329,5.32134882894633,10.1262237864156,9.77571539934712,3.8530028161107,0.631491049398864,-7.29762098274299,-3.204121670709,-3.34931370711512,21.5971105336034,-7.88832822593431,-8.21374808697855,-11.4419982048863,-13.2141322511132,-8.30577694782266,-5.0417007499472,28.5388538631563,11.4669566529862,25.7065863816779,16.1394499902312,43.3265936009556,39.3795164422334,74.9880661062127,51.7263061462483,64.0908121828083,53.1353895712948,63.6921038395307,80.6683729636618,59.6549188074476,50.3012055524395,66.0934745733448,47.1322989227387,66.4392088748725,84.6144448440955,63.5560971260739,49.7055214269654,52.6700698339662,50.9270817008355,60.5469178081128,53.9170868559242,56.6156585573251,37.6259750887146,33.9692610871255,42.5670466699029,36.4626116511355,14.3952145919904,-6.44727099122083,37.3871616846162,-0.417637116743676,44.3893692270977,46.1535994739027,-29.1312218378774,0.667626267390024,-10.3177158908708,1.98469137511634,-13.4369444069017,4.6044332768295,-12.5403470855716,-0.352888676752226,-10.4142721225302,-8.2440517784363,-16.2164714059369,-7.49643875037973,-15.9828371778831,-7.83489058782011,-28.3485746761465,-12.0526333075553,-24.8752439415177,-12.2741899317864,-22.7896204245004,-13.4800899736326,-24.6511980861709,-24.4099878429695,-25.9042672129643,-19.995114531869,-26.9658133623551,-21.9630558556277,-38.688497134867,-23.6106487007299,-31.1070855126164,-26.2728782383408,-27.788813525003,-24.3440270713467,-32.1626005207206,-32.4252104407539,-31.2430885530053,-23.062776399401,-25.6714192295789,-28.8910974360094,-30.9155056841284,-33.8106006602351,-31.7114283431337,-26.8138064278966,-30.3192610735113,-34.5923392121332,-34.3765025227792,-33.6583435189423,-34.3139692211641,-26.6733470883107,-29.4776744202334,-24.6896091046905,-27.7706075298129,-32.8379746454627,-27.4758582680897,-25.5366733071875,-19.0398036143998,-29.0500371534166,-27.0695525207323,-26.8694757998179,-27.5713972400182,-16.1552795310564,-25.3660196637548,-23.2160448691694,-19.9342891038723,-24.4422808859797,-12.9222305932661,-21.2588757341197,-19.2099421868586,-10.993046273903,-20.5658542167746,-8.7253147628712,-14.5109229524398,-12.5894636363782,-5.93038072658559,-11.2994011296164,-0.697093515465908,-11.5601940025518,-5.78261284404681,1.68131384931834,-6.10727375878793,3.70307448161915,-5.45436806585888,0.685222646632052,8.30600970992807,1.45961958693288,9.65680317933038,0.46220134549787,7.78785014431569,15.6999232935907,6.3441376063593,13.72963441121,6.86988123228311,14.7704432862895,21.1275977840666,7.94743283878009,15.9748205555764,13.5950312067538,19.7592611486018,27.367025739262,18.0862166161859,21.7080236730923,17.8574998914072,25.9615417643485,28.5867492944913,29.5098579565292,29.5036984318065,18.7517744187262,30.6062214828013,32.7726410124264,28.0475941835596,28.1166388255804,25.7939324296816,34.1320273532766,32.2823313325912,26.7927115871064,27.8758573821299,28.5845176153778,34.807061728618,33.943689259476,31.7300945550992,31.0234987752703,34.1165894207458,29.9984511009326,23.0070700283798,37.5112059073387,41.1143437060856,21.201182793279,24.0539682626394,28.7396382125239,23.9662766758744,29.0216827703557,28.7546705973894,30.7295160083665,23.4338265091002,23.496063203028,18.9025485234587,25.8451287265554,21.82798508569,27.4845514488786,16.5583031790634,23.333800499599,19.0174434418396,26.6750191877357,15.5715455174243,20.9669668225153,7.67089166859541,27.7409707364189,10.666350031506,21.2599342006527,6.14762944249133,14.9831297282362,0.366229017164702,19.7046835443911,3.17314981173738,12.5367904342417,5.10204562086305,4.79141914339738,5.62896287146127,296.820122985923,300.013321417744,48.5177527477597,288.649643211683,290.951083725879,234.969671271738,260.344494707724,30.064982505816,317.092381687316,45.566018046802,347.135689284444,46.5238853889846,281.982208027876,295.255309726984,222.78830330083,283.516202205904,62.1412698210627,321.978928159551,315.181510125137,376.604950496411,49.2069618648217,258.246458078274,192.48042903627,248.516788203123,247.718872649878,275.583183593902,292.351227126267,44.4220509954798,217.135878669684,214.703158000074,162.154905446793,194.321174495954,46.0173518925261,268.964323653548,240.757215341043,365.96901073292,388.919794856045,32.1250596642747,148.003501610018,64.5449148229649,127.300343457497,151.819468507907,238.237820046301,168.832375191972,123.294129734875,21.7866895017617,61.7648415507227,108.268365757262,12.1241592309204,61.0841145905987,17.7977076119548,159.913516411574,97.2072999767699,279.731131316858,13.2629811368016,46.661103817376,-52.5616943055795,-6.43611360311968,28.5010409239054,55.5290129057566,23.9328650312099,-15.5409630775873,6.49579308255426,-17.2093096814493,-100.76634514291,-89.6108302381294,-6.13048872835001,95.4274466919055,-96.3610596739783,-6.5260452813608,-166.527294528884,-80.4419041984974,-128.058648561254,-171.328021594402,-102.985514906602,-120.608162342874,-133.736338256261,-42.0982524293129,-15.145465637706,-144.691433248625,-201.654066036883,-217.867496274572,-164.410547235312,-209.495630849535,-204.951319320832,-73.0926957178203,-209.59628599285,-27.1269069703463,-289.929852814779,-194.806717159972,-317.444799022501,-224.141886787853,-34.9633396414658,-187.449407964158,-267.980341676554,-168.010650756488,-39.8746198623858,-220.738115238434,-289.788615113029,-276.185369499101,-58.335738445581,-249.741069646541,-291.165216070058,-312.021506617364,-40.9688147792562,-347.562116708335,-276.016802178003,-290.813377686775,-282.089583287683,-301.145918068365,-298.091225996381,-310.793984261873,-49.8930757261504,-303.157757811574,-366.198006309921,-322.952087412792,-330.444546388981,-54.6984073718664,-344.044432153833,32.6702266868553,36.0625926742643,52.0734272604796,37.3865980717976,24.7043088815316,21.4601630267767,30.0092104295884,23.0248650726507,18.6534868958779,70.2822432282679,319.08515969301,14.7759363362105,11.6612927640981,25.1327264045384,19.5547841110947,7.755113604257,39.1339550572489,183.784310255485,7.45450714476694,2.01524995307099,12.3015314878134,-10.9965702584316,-13.8282628696975,-15.8698479011266,-62.7260596308292,-5.61644721589259,-22.5725346692685,-33.2725369937875,-157.884593407634,-10.2165505997418,-25.0580186276679,-27.612420560849,-54.9597316341759,-236.555459141175,-13.0770118847814,-31.284973964904,-27.2937607589872,-20.1771177394489,-48.6357572738715,-24.7553359897405,-35.6062999406601,-31.4521082101498,-29.6392126296661,-38.2852911367461,-82.1857090173437,59.7579116009064,50.1245034938723,38.667702342821,31.6303553088806,-11.1438247458738,-5.03144377121788,-20.6042028287521,-18.9968942701933,-35.2430527959647,-31.8760308877445,-59.0596472392597,-52.7114162038144,54.0391503853414,50.8299921204759,34.0141051393115,25.6509811851685,-4.84690986653521,-20.3388776225077,-32.6388527080808,-44.7575913288346,-63.6026776916904,-49.0832536173721,47.8527886718903,29.3760097989191,-5.15389660654062,-0.737311386061015,-6.30529113781716,-17.2919937174118,-20.2572294558714,-31.6829020131646,-31.5370621878302,54.9271931114177,33.1846251838402,-7.43117977980437,-9.85919751475993,-12.8136443924619,-25.7751467658748,-37.1783045771843,56.4063988069408,47.1399271056244,35.2332185851967,26.5836713443274,-13.700297457828,-22.910001318296,-25.0768764447866,-37.1547404736822,-35.8354877722717,57.3491871177445,36.0318250223601,-25.5055594361246,48.6575663793051,55.7241410015958,65.9553795243602,36.8214462382507,45.2627896642777,32.1948500899078,-28.715010023635,-30.4646875148541,-26.5693627987591,-54.6994494259595,-91.4143960809016,-53.2629842594799,-1.59447800215828,5.57423500492573,0.974676698575522,3.11221548143935,-0.917407751655538,2.15707749432522,8.75443389624312,6.28880145555355,8.18241510307359,-53.8841258122658,-1.25109212913479,6.06469285464889,15.421133013615,-19.3665072537149,-36.1017256179976,-8.58088299933268,-5.16114428728427,57.8890250279418,31.7619347935954,-13.2301487024062,-46.6468256593102,-35.8478472496531,35.7979774940767,-18.3842917386894,19.6305554341257,-26.0358861825703,-21.5761323917473,-18.5196016166434,-21.8510360711803,-14.8109131646704,-15.4476299764098,-16.562691831454,-18.0500531566773,-11.9806430831371,-15.578755916418,-21.3306343929225,-20.9520714323646,-31.4388161501346,-24.6283689941002,-34.1288653065355,-27.572231629405,-23.8346964569691,-29.2101257629485,-27.4842357935205,-66.1430861694648,-55.0032680598623,-68.6994326792248,42.9336479511761,35.1689919278456,17.2823960786161,24.1482015087086,-17.143286882662,-16.4100791075615,-12.5984548069658,-8.32929088928059,-14.7326492780362,-13.1583340989714,-12.3458030936937,-9.00282832309438,-9.93819008874566,-39.281872328405,-60.6334579339616,-58.96645146255,-52.724846581854,-60.2763951334117,-42.3597663891884,-66.7447989071925,-46.5068516437124,-47.5880379460841,-45.1129897548556,-44.4851525954083,-35.9079969378893,-40.296082384042,-41.1722847893957,-33.5727561498638,-44.1142482000711,-36.2775652832743,-68.4781914137879,-81.0779461146216,41.0274813434812,37.3720087056049,41.3117680009383,21.9021678507079,26.9223721790438,25.0708944145252,26.0154611778781,31.1195388121291,22.341619275624,30.4523098052358,18.9798670537224,-4.93770261360833,-37.8998046509597,-43.83839241605,-47.6677423825632,-43.9253644918579,-39.1772360695905,-53.3846950902546,-32.9036189077127,-63.4873635517342,-34.9009756849878,-30.9253208888563,-38.8367297424232,-30.1072262677532,-28.7857061418835,-23.1491446898104,-25.2713126212607,-28.5085646060991,-22.9502938365438,-29.710193189681,-25.6270248997809,-33.3256253306588,-20.8494632581446,-24.5000671358285,-22.2235240159359,-17.7170110541488,-18.7486843020172,-23.8617861757072,-20.2009541987413,-21.287230261975,-16.781741858543,-19.4187083908916,-21.2222926363271,-17.1130378584595,-13.7137095314579,-15.076530474349,-26.5151821039092,-22.8377069532887,-16.888164510956,-18.4966212495374,-15.3824730417209,-15.9286014403496,-10.1561884586785,-20.1874634210405,-18.2133107806188,-12.0748480482302,-9.8516448076729,-12.2925803985357,-10.5234432513146,-6.76970144365551,-8.09991221964287,-5.90933228578552,-7.7181488145332,-7.6130717713589,-9.88079080173409,-7.37957763279705,-3.68761142608177,-55.9153332707544,-63.2850372360951,-50.8665869450597,-50.2851996758401,-45.6679012488689,-40.8412307790737,-59.198575822808,-49.7130532393994,-43.7663976222847,-43.6247924678117,-48.0808268803228,-55.478071561217,-49.1774816274924,-36.2694077193465,-39.0664252395836,-47.553962210596,-39.5921520592142,-38.4909282173915,-52.2968646204972,-59.7193483228003,-43.3627855936689,-75.3608151686634,-47.5992674091872,-62.4397711592809,-59.2026735156394,-399.3338381347,-58.2500685068339,46.2635384332231,39.5763130092251,35.8933234855461,50.9188970107545,58.2260782002112,30.9184163878227,35.4322024180021,43.019762091546,41.7019235764424,43.0930572671488,38.1354937592531,40.8890451398749,44.2165999291843,34.8349831620245,17.3478590560264,22.9144644647873,13.0929105959432,22.7501241046303,-7.19873507266866,-4.17164466818806,-6.7967440771952,-5.06622376207585,-0.918881346784146,-3.09436129567891,-1.67309938739042,-2.84875546815389,-0.695798566432963,-4.29357075442974,3.22612026783009,1.07033080168593,1.13317739202922,2.80152249504328,1.84412588978959,1.28665791730927,5.82764144376258,0.323660594127614,2.15841679969039,-1.87920940594362,2.19307039207902,5.21413755023435,0.245595563624168,0.276709113179561,-0.525427037381878,-2.10729848384996,-1.08909953360809,-1.39659111424709,-3.80858814011993,-3.87733901391292,-56.7661333609793,-65.9225088842438,-30.2734460161324,-30.9451386672165,-34.0525186168809,-29.8715586566249,-33.6699569186804,-40.1592119312595,-26.9021035465443,-23.8137205938591,-27.6272984676355,-24.2685088636743,-28.3636125517533,-32.0145092098021,-21.2186678093235,-11.3182830847624,-13.8536944940723,-14.5370172075213,-12.6873967567928,-13.9079944140337,-11.9427508543356,-16.2891267353084,-15.9281680634335,-18.3691015034215,-18.826883656249,-16.3824698020638,-17.0419889508989,-13.3056253310735,-19.7861032009058,-35.8364489564967,-31.7918158750579,-64.8047681373253,-42.1288480820736,-50.6542931612207,-87.7364415154363,-61.7851179258799,-62.5173220355781,-56.5233050885283,-64.2135939311556,-48.6932576275403,27.4881616813226,23.9701539540216,25.9464105805111,29.0833240217351,21.8240446893514,29.129637974965,33.0731821330996,26.8938579569862,27.4703093248797,24.0741919974519,24.0937206957915,20.9851503563822,16.9184826914602,48.280670898752,52.8573497256988,37.830497079026,27.4907077066323,17.7986092100752,12.8310260238617,15.8989011857924,-8.69861084562161,-5.19339851543566,-44.9768455818267,-41.9528206161198,-51.0739040197991,-62.5290691165393,-38.9988719237932,-34.0069939813454,-36.1995015783222,-9.4411495953024,-8.80567605333969,-36.2731224226298,33.4514335982694,30.7832457323728,31.0472507569277,21.9848693112729,16.9597745415373,18.0276205565802,53.1997313938964,61.8300455684009,43.5682427285529,47.0730625548319,39.5600105046789,34.9154013064408,34.2190800169364,37.8969388329572,42.7217415551542,38.8897763940076,34.2040728742727,35.4988513511462,28.7790581639788,31.7117279481689,29.4300021748943,16.5003204898739,11.8410057639191,-36.4557309646515,-45.686305802489,-47.4737097429169,-45.0356282305761,-53.9901413360068,-56.1701580329375,-60.8936753876499,-34.447098129555,-41.4215348575729,33.1561113853744,23.5440052830688,27.047447783991,20.3491853416022,19.2575568132377,19.1951023198793,21.0559624389865,18.9181291222483,89.9199656642348,13.7869183118096,14.1858745506089,-49.1993782105252,-43.6464148486729,-55.9491081740239,-40.2138623760437,-44.9893110428424,29.6352144870377,22.2315940997676,15.4978896566294,18.5612330973339,14.978356901286,13.1416248193718,11.8685043370337,-38.9185272418737,-38.1874753925176,-36.2452608090798,-33.0548582232698,-26.2224205436089,-28.9292269724677,-25.2078698111264,-29.6829872698593,-26.5915788955629,-20.8408076991954,-23.6285245982318,-21.7693775977519,-23.0352968387007,-25.2084568491775,-46.7933622581357,23.5231307933404,29.017284014869,25.7736703504194,10.2587072198058,9.73672359685261,-31.5223301612813,-27.0341759736606,-21.7156517838214,-29.4649093057792,26.5360932192628,26.2278592286965,22.5031038286192,18.8596631312427,19.1144044184836,20.4148265041073,21.1029542468534,24.588341222218,9.50706398534122,12.7927721153231,11.5494697016426,10.5249750931057,7.79962033165036,6.98346695506243,6.25705651097095,4.6779898291018,5.63785002199853,9.14786659952861,3.4107171857069,5.14567352156092,10.3567861194054,7.62249700663347,-22.6214666694383,-28.347218671647,-25.6490954747431,-32.3706006293301,-28.1631771961414,-27.8259798328487,-24.2968961022415,-22.3393232255988,-32.844805209194,-30.8158309480543,-33.8363487440863,13.6438614100077,19.4255219570962,16.2739481277151,17.0934633584187,13.788285914407,24.1117206518144,10.4358898549782,7.70153949068972,7.32593793835369,8.23515341861153,10.7520540589639,5.6996820539781,7.24169409001393,-16.6024349455068,-36.1661333106937,16.015403230529,14.6871693896874,13.4745433307389,16.0330964857445,18.5194194111001,18.6792823299021,18.9879603883121,21.4799877165628,24.2120069289159,21.5647851209658,16.3448963225203,14.6361866164568,13.3991807056248,16.1928715551179,18.8320077318995,16.6848195858477,14.9169295401278,14.373103783491,11.7239395317669,11.3654781683382,9.72558643660786,7.28722079345753,7.69196097195683,4.70819810624783,-19.7956426867257,27.0388606797219,11.855504874418,19.423934284278,21.7618920323049,15.6066944962567,12.6366885687372,12.3474523724564,-19.2071118746286,-16.8460813038248,24.7856293212704,28.0289127156263,11.1898933808071,7.41399604837624,8.93132830587572,9.59131130837846,8.80361247660143,9.4077672069284,13.0098056129399,20.2915276782073,-19.6708854214443,-16.5308133981965,-15.5441081460084,-17.7750122314639,-17.3977925492371,-15.6039955902177,-12.4310683987802,-14.0904449479245,-19.7158071700597,-10.4333810696229,-14.9532057706296,-12.064936222007,-7.83138725301761,-12.9263115282125,-9.63570776170759,-11.475014548753,-13.9531251829942,-6.43452252084805,-11.4355639518857,-8.63232379135898,-15.2755979511406,-8.52349182704362,-15.0990598093044,-13.005129847212,-19.5920791242795,-10.0984031425481,-17.4649190484001,-20.1651753141222,-12.8947776088354,-10.9683534668991,-8.18781898299173,-19.2441763268632,26.7587405911187,31.0092893318184,31.2214301929294,11.0055606128472,20.0935258000098,-22.3169123959016,-22.9063084678505,-18.4455296028085,-15.9095698959843,-13.2979961399863,-13.5811808781964,-14.4270052570751,-9.02378163039959,-12.806316920591,-11.2829720457857,-11.4184264047398,-10.2802389118186,-9.9957326308319,-11.4408354387434,-9.02666938908947,-6.21508084201134,-6.66423911131379,-12.0808201383786,-6.35765535816949,-17.0780178140198,13.2466891821233,12.4158533670726,11.6888798994251,14.6541080806906,9.97580598615266,12.3002991314212,10.2039975107125,10.7266542627073,13.0832770417327,6.09085295449119,8.26574554244298,6.47912181898957,7.72395419589819,8.16089515983092,6.4447456087023,24.836491853043,18.0354899648354,-27.0574095569323,-22.3615805338914,-20.244381252833,-25.3102056245518,-14.3031219503667,-10.1501226583451,-6.01961883838554,-16.4656093352132,-11.5336305720394,-7.0051056339633,-13.8516528981942,-9.65250838549431,-16.4330612610224,-14.9510365376221,-8.13971609891287,-8.89711968180633,-15.6455758886117,-18.3225721706356,-7.93550999621194,-10.2490315953307,-21.1638900120575,-5.77535447282181,-12.6594760030161,-18.4877399555165,-20.9872692064813,-4.94448807111804,10.6582241495073,8.72551938191244,6.69386610805713,2.98764220723515,5.15271978132876,-1.95805292791513,22.341779028963,25.0549314352654,24.7573652875328,30.3626716959148,28.6929752488038,27.1655705034917,28.3449331466431,29.4440733238663,36.5474140794529,33.9383848928723,36.8372831980541,32.3286598566403,38.9991326883453,33.3186792999613,33.9063909178943,35.5269694232699,38.9719404997016,31.1349405848758,29.4446479624724,22.2255750036939,24.5855766535412,17.2887568936003,16.4734338663237,-28.9636962580899,-32.0273612775405,-33.6081719383006,-31.9871548616188,-7.04644130709123,-3.99052229780758,-8.48210469986766,-5.02548868767336,-3.01395839841228,-7.35191509470673,-5.16761722996415,-2.12937507686348,-3.12573973834934,-1.02419796605156,-4.70044610947554,-17.2843463844523,-18.5924679910856,-27.8388942971043,-21.4798801204918,-6.17088584705139,-4.09472312687733,-2.9955222594706,-1.27967070583505,-2.8677928875887,-1.59316689278752,-3.40413683459224,3.27755648593387,5.23246410016519,4.00646197029518,1.17058261899668,6.26113145001056,3.9031104958007,-4.40890751360527,27.4351130852482,25.5086461999778,36.555706064079,18.1783263824151,21.0254879649346,15.2021798876953,19.3478196287144,20.2443731984508,18.7119295715619,16.1943477556491,15.8909024847275,12.5271889456256,14.0660622495112,11.4083674561598,11.4658102522597,13.4363887006017,-29.6285809834219,-4.49335650067151,-9.73067179180251,-1.6279990165041,-24.1320738644997,-22.0555060542046,-27.6833532490428,-25.2307974729045,-24.799758595544,-24.8996720524254,-4.78114039470938,-3.06375852186852,-0.894794265090045,5.49040713090426,3.96719857023786,5.4703502395334,1.8040871384468,3.21876095667478,2.93847884655573,0.0539649061423029,1.27841848020608,-0.997603811815663,2.01301781968568,-3.1490827430449,34.2877017455481,15.5783136993722,-27.3461691036713,-2.12697038607213,7.08939063532789,0,-0.319383399693072,-2.00120358867043,1.55933270631169,1.99177586557508,0.841654281126923,-3.75873397127613,2.4469488871409,0.26076580518474,36.6890735875347,48.6375669855072,41.0212539729997,50.4171841890233,39.195815887183,48.991459372868,53.8298018423628,48.8292354594166,44.7862579765206,51.4164734088312,39.9158992848107,29.9697057491802,-26.7487983253228,9.31083122684477,8.19011577354196,8.24441741287628,8.23919659338118,10.3861978419251,3.89627681654098,13.5668457560862,6.0871316109149,11.1782336639025,3.15371439759665,10.0724127868181,8.11860505264874,3.90149707481162,1.72171922253094,5.09973312467945,4.08875877035645,6.32060315990398,6.3213529266856,4.52502829473692,-2.26558222178321,1.75923422751297,0.0432549704476929,-0.796002824396685,1.94871099228827,-2.74415658204301,-6.16341465073504,-2.12478815669817,-3.59085381064535,-5.50334900058192,-5.5736915270845,-7.52543043896961,65.6323031041389,62.1120307781401,65.5176829797359,28.9721242434166,32.5744037236146,32.9963519042697,-23.1430777232926,-35.2882877234401,10.0635555462944,-0.176423142691189,1.12923657920114,-0.00174605953997478,2.12517466270036,4.2580937030677,3.60309119617526,6.00260747460335,1.63027931073507,2.41807423194319,0.869709816786785,-5.13309943576411,-7.16194504693176,-4.4399424878394,-7.89706934483802,-9.13316106085101,-11.5247942876506,46.159422099478,-19.4444321315908,-30.9931829846935,6.49907538134407,5.99513215737444,-10.7867128600011,-10.7651824659373,-23.0400380265689,-30.947896178384,-33.8288630717742,-30.3298706134026,-25.6273558564748,-40.8691127468193,-22.7156517912121,-25.5898287716094,-37.2138430153985,-35.0190369206004,-19.6156927491775,-43.2831277139895,-39.3625493556394,-18.0605640433384,-19.3697634664847,-15.280709231044,-22.1778391383135,-37.2493178398829,3.27741708074537,10.7564287121438,-27.9387226873952,-32.718898116979,-23.3354990724276,-33.1921885599066,-37.6779163503693,-31.6462380945811,-41.41264925718,-31.0570410158374,-27.5828673141259,-54.1137743125343,-46.6151244877551,-52.6478431176924,-42.7010286151294,-0.241180932526652,8.68846167712795,4.38059390514958,-31.5999995089992,-25.9823467450078,-73.8235461126608,-58.1426301160371,1.22908019657682,2.11048594705733,-0.914447597581744,4.47202663324716,-1.18000629429434,-0.348469553570902,2.0177329062348,-3.61863354108544,2.19290146692012,2.70749200871723,7.15425405442983,0.293939873752606,4.79592438135395,-2.02906285707324,4.90076622326423,-3.99556846749494,0.109174298904947,4.13293580128208,1.7286640986333,-1.85147425877072,-3.88226676554659,-2.51049743916577,-6.01474519564631,10.0543459673846,14.5141221800972,12.3949769291875,14.5530798482983,12.1541719971913,15.6249411705086,13.413998262716,12.9392820688887,11.3434067994106,14.2617299134846,18.6404520171899,16.0004193483013,17.8142533758475,15.1832601821052,10.108190163142,12.9239698564005,11.9149540610345,8.53480391656057,14.1027706605065,17.2311406437616,15.119647436899,13.0106776077655,-21.9073565228874,-33.3215234656519,-48.4383320974075,-61.3162417484146,-48.0019122789258,-40.2022587018506,-50.7170991938849,-39.3579480178384,-43.1019049623276,-42.4488540952913,-44.029539631847,-52.6799528255056,3.19247119270708,-6.12638474541382,-7.75071238830957,12.6439100526283,16.1085061642858,7.74874616242337,6.42517639255157,7.97569480208891,-22.0641468682715,-30.8019855743184,-26.1515842580426,-35.0296429000752,-26.4987166438965,-23.8153439192398,-33.8721002468974,-56.3433774330487,3.36597429462698,-6.20250976974995,-8.51939650768251,-5.29351361157901,19.2554486725475,20.1809935053107,-17.6753793549805,-23.3570958898943,8.18543934895308,-1.99491090528493,-8.0569327558062,-5.09750345372227,-12.4150286403629,-10.7881245818571,-10.6106038613091,-13.1384255347369,-14.5256146985913,-13.7618783149806,-6.56303712806976,18.0752553120106,24.0144094448088,17.4987461095915,-19.8433024133668,-22.3744006595941,5.84441846080248,8.26777727621379,5.93721210530288,9.46657344001598,7.36146358855443,6.97620588295984,11.4391803983703,8.57742421868627,9.36119624721053,1.56024384184187,4.18581394644537,0.176387090292954,0.597763267118567,1.29606985438671,-1.92883239520781,-6.65625532247164,-5.04162279055318,-5.48312452438151,-5.72599573160096,-9.4473582060156,-16.6874012626784,-16.1447990115728,21.5336083563225,22.2766895822102,22.3691487295604,17.4077096772716,15.190179806507,20.8715067412894,16.1088374356954,20.0675355787058,18.2798843503565,21.0878066303092,24.038580219782,17.7034215877706,24.9918523329012,27.2374049802034,22.3286663018946,23.8746450157566,25.0609393006284,22.4049070191464,23.9707622035138,27.7231987369005,33.1996776336807,30.6055811487055,31.2662203436095,10.0989632699799,6.59061467830239,-14.2207809912614,-10.2407174922246,27.7253452081448,20.7331389981239,24.0469958042748,18.726343748391,20.3272418695307,37.6942107714876,25.6840060984685,7.15135298219138,-12.1070073086036,-12.5325891071705,-17.5224451733501,-14.4009531196366,-21.709246894815,-15.8294500800961,-16.5381130159805,-23.5063236354883,-15.5380010298426,-9.756634305164,-7.49993163957336,25.0823354568964,27.308396322832,26.1335192524283,30.7017051718654,18.6972974162932,28.9275272309478,32.0397336688034,32.7492684844811,34.3404539971122,41.8836793434593,40.4930282564629,43.1083082817201,29.5580515704712,39.0122104823498,-12.1673841255773,-8.94710943461855,30.2214712554644,32.5199943770298,28.3072000844589,26.5920887397488,20.8220604588955,24.357686939477,19.242311748998,29.2330739634035,28.0880636459396,17.0566976204161,19.1473389084716,16.5863357511751,28.9513389922915,15.734780520006,12.5779541988795,58.69701899473,35.6237436458759,44.1997941803769,38.7506036468449,28.6683854096178,37.2824348000918,37.8939799658836,11.5289502077713,39.9704289005769,41.8366687000851,36.1771253535596,47.6815349601648,33.3285808722339,36.4603904566916,47.797980059413,42.8405366672193,42.5147766178612,46.1403490093471,35.9802163101617,40.7865687801803,45.7992147888869,48.9927435778003,47.2665547385729,55.6877755205989,66.4000698391361,66.1534753903053,51.6193208609048,52.7792310421585,46.660342280441,56.1284509873353,36.4454107135009,47.7869917923756,52.1604170005163,344.721403684369,352.8454063975,325.030471002269,336.054175481096,329.458080792084,285.467715903242,320.001019294207,239.861321335407,255.718512292413,188.555689611838,229.494946318403,122.997040015717,112.707946390456,55.6636535800961,92.2307050836864,-12.1276749674366,-84.0239248853347,-152.697759425144,-210.188941888125,-262.606711334276,-263.175891070137,-307.514762818432,-242.19899645244,-304.737525186083,-286.401173908954,-306.871210159874,-339.174311976672,-351.635485080126,71.0652757456644,54.1461519345279,68.6494547591748,70.2294984618773,67.0795358115425,52.1634565185241,73.1123208745912,54.9473410515938,58.808414279166,49.073645831638,45.8604872934374,47.768634927902,48.5203032939935,49.1096844244227,53.304848779611,42.9255107648325,55.1817995790544,61.0425673301512,42.5071288399052,41.9443356035151,44.5567771100638,40.4547744638466,38.2973260346003,18.5783967500674,55.7018551830694,13.4095120434362,26.3818068976157,-2.05997152370458,-4.25574945249968,-48.7704404574248,-337.764851345383,0.519698112772656,-5.27104863140039,7.35714411918451,3.12541617088812,12.4155341537882,14.9867227077025,13.1827717565059,23.7541040310363,11.8644326481033,10.6296028988644,8.10233057598066,26.1407758675177,-4.52293580603492,-0.307822399040833,-2.71522096126938,-2.99537528486109,-12.5442179699981,-8.1343080980764,-5.04024401415825,-5.13862489229312,-7.34897558343419,-10.189244367781,-2.17698804712484,-6.5169790793122,-9.80124530423517,-3.6786330075659,1.20214317114938,-1.73798876420058,-1.1258042540463,-1.41933481060879,0.467766793773721,2.01017002714571,3.53770632460564,2.75246252024439,3.88070632904957,4.33536221652449,0.274970398893013,5.32249486526399,5.30347737241501,9.36575666202034,11.6738206437662,9.3014600251811,8.22759121238832,6.80810756691027,-9.93135319415828,-25.5326409774171,-49.688465745587,-71.4936344419183,61.0466762614386,42.0233071772025,-2.96818770310562,-14.1331425418124,-45.6587049915137,-59.6160017942253,-58.2431725069769,-78.8553731416496,-67.5356562626004,-51.6915749354939,32.4893396399574,-65.8528362113479,-60.3435441048162,-87.709815417254,22.9172025413433,-24.5826748197629,-36.5468673973094,-39.768725114443,-37.7538423979737,-38.4821111123392,-44.1490981436992,-48.5888451147566,-51.0534840953267,4.12042321123621,3.16445221728811,4.93763251203208,2.63268923953525,1.35921478258312,16.3323832865381,-9.1667294997521,9.97403558205198,-13.4343508769203,34.1042957997315,-6.40496446972404,5.49351755461578,22.0463067729979,23.7912408112831,0.125610282716488,-0.87397434979877,0.618247154778945,43.5286025606257,44.3830680520656,62.0804577484339,14.0959757514308,8.42820340600387,79.5286814463144,0.876539409286628,-45.4882207536346,-47.9187184164426,-45.4161772507969,-56.2698482854707,-16.4868856941558,-2.19550777539521,-39.0739702564546,-49.5643196220751,-36.5283256011238,-33.5846366678504,-37.0115638952486,-31.449944062328,-30.8181244381867,-32.9147564367789,-28.2947437867585,5.65087112664215,10.7372845276316,10.3829395958366,4.13175035027473,0.651647909229886,-7.70421622661312,-3.39370863616905,-3.56236045796797,22.9251525668896,-8.37987238629411,-8.70603890987598,-12.1779700795254,-13.9235065653029,-8.93412319977628,-5.44644802512964,30.2951296860426,12.4988459335044,27.0878425546415,17.2985663225618,45.8329364073501,41.822030614724,79.4032267167641,55.478696901195,68.602417728461,56.5941103181115,67.2766352359376,85.1495246437879,63.2928388531523,53.369175926797,70.2993730566617,50.0233626330296,70.1468778018344,89.1477445207598,67.2525603441101,52.8639130531315,55.9431942498983,54.0397520539209,64.4913622084577,57.3576687857326,60.1825246638108,39.9624334361332,36.0677422670898,45.1871101032351,38.7182964259069,15.2681832333124,-6.84432089395796,39.7239462775331,-0.422484876631229,47.1569851948787,49.0104183030446,-31.4888104813091,0.733075860735152,-10.6290843292768,2.12263187412151,-13.9028822341296,4.81746610204426,-12.9518647111349,-0.313771720270023,-10.7141244987214,-8.42764358244315,-16.6696883469693,-7.62739404120451,-16.4847885206181,-7.98223555293749,-29.1584986124685,-12.3071670065718,-25.6399732091836,-12.5513760572629,-23.4571704204147,-13.7884185524866,-25.2924561257217,-25.0390908765625,-26.5805149329086,-20.4760713168761,-27.741112808208,-22.4871972932793,-39.7572545575488,-24.2103313949793,-32.0229287065237,-26.9729734927106,-28.5582644213735,-24.9437267169338,-32.9814087425974,-33.2750396503613,-32.055073252935,-23.65526702497,-26.3564829661716,-29.6286143260464,-31.72927371176,-34.6940296410402,-32.5735565424159,-27.511138803282,-31.0938963554873,-35.5132738770297,-35.24914373435,-34.500552445837,-35.2297573756763,-27.3371821497119,-30.2768699758608,-25.3236593504249,-28.4839630285788,-33.7062517360559,-28.1570372191246,-26.2525985316252,-19.4981689958706,-29.818879310513,-27.7902709105331,-27.5721156086576,-28.402758156569,-16.5253176629723,-26.0362831938484,-23.835561437826,-20.4213622563098,-25.1954286751881,-13.2005943832974,-21.8239490986143,-19.7277791775841,-11.2381434376136,-21.2084366627631,-8.89898451215406,-14.9097383258776,-12.9323402828553,-6.04114915933219,-11.68932685391,-0.643708475974649,-11.8894309193705,-5.94016395248692,1.76676556025884,-6.35083888051238,3.87505381690615,-5.63368318462899,0.692774580153226,8.57442035918501,1.41570432698079,9.98422743202477,0.438945801588486,7.98713000026678,16.1581141596632,6.44320533138684,14.1561192797084,7.0159826343242,15.1584236732976,21.7107640521248,8.10750655410817,16.4503726502383,13.9179247095981,20.2723773672787,28.1232841556772,18.5177513804731,22.3276962786625,18.2848625066996,26.6441467674695,29.3360031513475,30.2665063368005,30.3565394668567,19.2059001626944,31.4148405974121,33.6287135904331,28.7732322646958,28.8879264108025,26.4252149815023,35.0355483913817,33.1051120588674,27.4929139220327,28.6219194498195,29.3032777369837,35.7330813343281,34.7985613277206,32.5349087826184,31.8333650357187,34.9990177182457,30.8153481547778,23.600888855274,38.5598082222117,42.2180900442996,21.7691950716725,24.673840455899,29.5220767001501,24.571066443437,29.7740575094804,29.461222907983,31.5497130999043,24.008187861204,24.1492667717023,19.3613837366777,26.5426293713832,22.358551313193,28.2321662403432,16.9403212496342,24.0059900214026,19.476268110378,27.3959911178187,15.9430733705097,21.6141324540589,7.8181776094177,28.6050068477,10.8851278166769,21.8529484764389,6.26090750842099,15.4764532353797,0.30170751236654,20.3528912980065,3.18313832969798,12.885923542446,5.24264515042638,4.91468276061381,5.74473083048686,305.384361792343,308.725318851835,51.0660594796587,296.814380011051,299.217492619197,241.724424822574,267.827007386487,32.4979341277956,326.024529425931,47.8323652505728,357.19318118482,49.0803815127247,290.056479777746,303.590313268097,229.316725321195,291.786268103378,64.9488516750193,331.108189711812,324.090021385304,387.501438769969,51.4198524477423,265.50058383127,198.158063252503,255.804116949262,255.071810887624,283.370268057359,301.00067531539,46.57618904772,223.490198034003,220.715337384356,166.903356866417,199.971990612801,47.9957695573181,276.501206952851,247.719453982794,376.523042588782,400.248680232203,33.4810474481584,152.219026098418,66.4329672833268,131.061263197265,156.327957557938,245.105533370042,173.624301769704,126.882248668861,22.815644122387,63.5814616126228,111.298145567246,12.4912034948624,62.8317966398978,18.5379530672781,164.400475441302,100.015443778237,287.869708543634,13.820015953847,47.9659341647755,-54.0816919255178,-6.59389674991583,29.3467768169508,57.1377079285029,24.6259433689044,-15.9812055382185,6.58862299536586,-17.7192691441441,-103.683908996777,-92.2857978723069,-6.42647607656345,98.1978540026797,-99.1716555334525,-6.98878712887013,-171.354106462448,-82.7529183453546,-131.771065029479,-176.418872235634,-106.040832840799,-124.098366887287,-137.571683262428,-43.3281231821185,-16.1243592169562,-148.804796091579,-207.489785713426,-224.237476802969,-169.28398145444,-215.547213918659,-210.863772484623,-75.2474116602865,-215.616183184149,-28.6862963635845,-298.338257467279,-200.322849938245,-326.759059643788,-230.585338763832,-36.72014931158,-192.740654043836,-275.734589593548,-172.927303130545,-41.935397546719,-227.048089583403,-298.243573652828,-284.179233916298,-61.0254749811853,-256.812441630305,-299.417192137466,-321.015259818435,-43.336601958734,-357.565092118677,-283.793924465666,-299.236550086113,-290.211181584034,-309.821648380385,-306.548226483962,-319.559456499356,-52.4892617132369,-311.719959097081,-376.768707227624,-332.219670948537,-339.870678214722,-57.249870437051,-354.000058259971,34.3428571817148,37.8698768409495,54.0641735281906,39.0435195148513,26.3128839545796,22.7441120739926,31.6121009441667,24.214475042097,19.9324410992162,71.7977584429814,328.41357820052,16.2362148177064,12.4765913831259,26.3292386995575,20.2884926072175,8.25227044981291,39.9793190212533,189.154934738569,8.27034874777631,2.26347729356888,12.8585785473704,-11.3794665998506,-14.3581855466144,-16.2160099023236,-64.5668536336323,-5.96344652918626,-23.3662238093666,-34.0188170041867,-162.511351103152,-10.9879141464483,-26.1475909769418,-28.9921548518321,-56.1422259030833,-243.474562534608,-14.2120688218709,-32.6840984364035,-28.7813730083238,-21.2966914711878,-50.3705144626774,-26.3436868699353,-37.3499703040416,-33.15731424468,-31.466753740793,-40.106476510487,-83.8715451809583,61.7660182304371,52.1636123429253,39.9755638881364,32.8423431227995,-11.3654889516668,-5.3864547361616,-21.2773998168051,-19.9227040624213,-36.415971800522,-33.3109353541047,-61.1421875324471,-55.1684516001497,55.6235730838847,52.2092529408726,34.9845426803331,26.3712103719002,-4.95624730036009,-20.9857181741241,-33.660637041342,-45.9676483275014,-65.5549477830093,-51.5913137224295,49.1812098722651,30.1942992881374,-5.2785418436307,-0.800730448627001,-6.47376898572594,-17.7173481877897,-20.8172744188562,-32.4722154025082,-32.4076038781772,56.5000559739382,34.1228070061675,-7.68354201180245,-10.1298449882731,-13.1816402043932,-26.4971939862859,-38.2720198365193,57.8157475911321,48.4721961959081,36.1220329982156,27.3307373402095,-14.0853042374297,-23.4703590954746,-25.8064019783525,-38.0492854480373,-36.8497395173228,58.8783616827044,37.0231314732786,-26.207494463093,50.0128425018297,57.2376458760337,67.9407596602407,37.8176817940006,46.6744967714022,33.0832918891712,-29.5526583181289,-31.2863450557877,-27.2899050548193,-56.1827091880824,-93.4116344968201,-54.736174431622,-1.65899414962747,5.69366144392815,1.00235209799608,3.19950662975401,-0.951172562328733,2.22756895742301,8.98312367534282,6.46019735842788,8.4028107012493,-55.4771640350378,-1.32021757607119,6.2594421828132,15.8521537213124,-20.0221454105624,-37.3585522003289,-8.8133744047925,-5.30195835318567,59.2814543050603,32.531346642508,-13.5851246714956,-47.7700049055524,-36.8185359468699,36.7962803323901,-18.893745973481,20.1716896179328,-26.7603765417473,-22.1664913768939,-19.0253002457802,-22.4506920068369,-15.2241055409431,-15.8723572520497,-17.0186670154836,-18.5503898888402,-12.3134209587392,-16.0052777455314,-21.9191188293777,-21.529638784916,-32.2921047629874,-25.3223305000054,-35.0503102305605,-28.3330790178191,-24.4987972568299,-30.0205293522114,-28.2303253819234,-67.9238013710008,-56.5369879057654,-70.3315563335894,44.1052304755544,36.1380462413874,17.7475663074248,24.8064491026132,-17.6349753103168,-16.8525401070068,-12.9537854862356,-8.55849033184811,-15.1368395286574,-13.5182461662523,-12.6873913915504,-9.25032358136643,-10.2123178932523,-40.3833072088493,-62.1853530649129,-60.7258485237321,-54.1284955481501,-62.0957506560624,-43.5188251340808,-68.3681941741007,-47.7845279624403,-48.9152365195373,-46.3643594049779,-45.7168174119505,-36.9110184721885,-41.4042027558499,-42.2921395030189,-34.5132785242942,-45.3267407099734,-37.2628945349489,-70.3359638229238,-82.7517256101223,42.2210811215953,38.4006708533091,42.440482187932,22.5146431461647,27.6572491108102,25.7549850304499,26.7470172428758,31.9937011739936,22.9501743323952,31.2865805252472,19.5089698297482,-5.07410405394628,-38.9821726181315,-45.0818843737353,-48.8363361103225,-45.2376651377167,-40.2322688791899,-54.7779787353238,-33.8017790112638,-64.9499130218363,-35.8733574431856,-31.7851820339265,-39.8944385623064,-30.9556598944702,-29.5829166908,-23.7816618953274,-25.9761508269401,-29.2841324021981,-23.5820601460384,-30.5286604264402,-26.3367904371416,-34.249120615855,-21.4289442112754,-25.1778720295183,-22.8369454263593,-18.2090474822799,-19.2708150864384,-24.5206661461004,-20.7640619524097,-21.8704665601051,-17.2489716137095,-19.9606529620808,-21.7980703294993,-17.589241998607,-14.0904725769814,-15.4894340115138,-27.2514126448856,-23.4746295449442,-17.3530538224076,-19.0071227597257,-15.8100799915176,-16.3684872964267,-10.4372499109706,-20.7431403818827,-18.7196013521677,-12.4153170469111,-10.1262489626099,-12.6347745178974,-10.8109184735363,-6.95480378078764,-8.33034307168199,-6.07370175787214,-7.93682666032703,-7.82612209432105,-10.1567108101491,-7.58450045771449,-3.79350844231855,-57.4727638114869,-65.1704533226379,-52.2991100372716,-51.6981763089863,-46.9144186033119,-41.9708031998611,-60.8423670749237,-51.0688540006377,-44.9696303922106,-44.8311880669745,-49.4018275538199,-56.9915554160077,-50.5372652089214,-37.2608088004856,-40.1458568252098,-48.8897627694961,-40.6923614559641,-39.5472000829364,-53.7031993065276,-61.3884056771995,-44.5618976764515,-78.1921624475609,-49.4321762840884,-64.0071038202677,-62.4376773237535,-411.062582927973,-60.1160665213997,47.5546955208872,40.6529006992492,36.8626257753064,52.1998381602181,59.6480421793416,31.7652421942778,36.3877785420692,44.0461397994382,42.850297634874,44.2693104112174,39.1742325358926,42.0170591100405,45.4501107175448,35.7997570727258,17.9247125440995,23.5508731864832,13.452164420631,23.369200771018,-7.39752096496553,-4.28741319803018,-6.98767049589824,-5.20860075770901,-0.9430136648674,-3.17899796084743,-1.71945834570266,-2.92866715507463,-0.715559603651014,-4.41121256813151,3.31577099533553,1.0993752308229,1.17144688849345,2.87902657960212,1.89489901284952,1.32274170254241,5.98549339905939,0.334336206591438,2.21999977507025,-1.93143024130917,2.24989466106672,5.36182199183504,0.253418989370895,0.282552856137163,-0.539799047433081,-2.16627588089997,-1.12077882791314,-1.43753536744038,-3.9157360543237,-3.98797455894577,-58.1541966502855,-67.8466741792374,-31.1117770009924,-31.7947133619895,-35.010732675039,-30.6851431144645,-34.598516351791,-41.2433726062353,-27.6501674021826,-24.4596861913783,-28.3949554045899,-24.9447490447624,-29.1453568770538,-32.9056853891237,-21.8063783320948,-11.631851607817,-14.243577937917,-14.9394331909452,-13.038428444691,-14.3013182389305,-12.2749905998672,-16.7484784137483,-16.3748030575993,-18.8806785768785,-19.3502852548267,-16.8430837306628,-17.5133301703589,-13.6835814366612,-20.3412812120901,-36.845858149483,-32.6533212033275,-66.3947280961198,-43.2860305151949,-52.0800837527627,-89.5893315082348,-63.4889732997387,-64.1392993673701,-58.1187270736196,-65.7393011842763,-50.0211863507841,28.2386366845424,24.6320130017905,26.6719533081497,29.9022880420981,22.4193090640755,29.9318083753226,33.9762054553129,27.6281288787643,28.2227239066257,24.7417435307743,24.7655067299714,21.5715001649099,17.3787091242325,49.6294895767009,54.3832210195865,38.8796841765463,28.1545931491679,18.3073115928053,13.1849409827777,16.3358933333538,-8.94250816882127,-5.33838460754153,-46.2579400891452,-43.1022269169166,-52.4892208829136,-64.7561472143399,-40.0682416697762,-34.9436253693157,-37.1884242758591,-9.70907464901231,-9.0555938409219,-37.279446158989,34.3714978659318,31.6321189951648,31.8952222307015,22.5926821731885,17.4309488298254,18.5282476847399,54.6654172301388,63.4658777373274,44.7817376054216,48.3452141716635,40.6560340959493,35.8712928666659,35.1579999943601,38.9414623388504,43.8874985703168,39.967010787322,35.1531556663506,36.4775253229088,29.5755785965952,32.5924748921721,30.2420462249106,16.9511333623858,12.1696717970687,-37.4770941699506,-46.9660932335757,-48.7945065924164,-46.2940111765459,-55.4343677365935,-57.7490606468452,-62.5494567157681,-35.4052646904253,-42.5787458619086,34.069769542076,24.2016454329824,27.794416791333,20.9038194914215,19.7924507291538,19.7272273253921,21.6423921865072,19.4473046192997,91.7804039131779,14.166167595408,14.5810383436256,-50.5471454244726,-44.8287086657012,-57.5285208255628,-41.3175359541363,-46.1979290596955,30.4516308914285,22.8337454913747,15.9273083661243,19.0763161859822,15.3930003275227,13.5086180406977,12.193571201663,-40.008738831693,-39.2438473778197,-37.2440305626473,-33.9576861111686,-26.9402934804411,-29.7390974081893,-25.9051572730626,-30.4899884805542,-27.3305212006322,-21.4205978129243,-24.2882139811085,-22.3731747236376,-23.6815792859919,-25.9106242621042,-48.0504867317736,24.1671113739793,29.8290539491469,26.4836010605602,10.547847788384,10.0038972132342,-32.3957858343709,-27.7821713777569,-22.3166027377741,-30.2888178571805,27.275538352021,26.9452170048297,23.1289380332827,19.3731204888018,19.6462295838826,20.9925714624729,21.6839667061257,25.2683098635632,9.76643117736248,13.1428221645886,11.879087374644,10.8080121800985,8.0216927384234,7.17619461413857,6.43443755165171,4.81202368652235,5.79013457352014,9.3996303711321,3.50647419365505,5.29006954120708,10.6463015134217,7.83682844047714,-23.2479499500973,-29.1271004271661,-26.3592097236801,-33.2726055369346,-28.9326668097459,-28.5928619033969,-24.975170371501,-22.9618316142555,-33.7486394984281,-31.6695284916478,-34.7520113250829,14.0256124605954,19.9679973735092,16.7256992237798,17.572071301152,14.1746622984757,24.7828260102435,10.724679929498,7.91925079925209,7.53433162051528,8.46477026735374,11.0524464444026,5.85704818877793,7.44218314202587,-17.0685259749519,-37.1577915188323,16.4645099272455,15.0997958340187,13.8510508583225,16.4862829653344,19.0371279334669,19.1973846164167,19.521073792909,22.0823522438392,24.8829658446506,22.1628812537481,16.8045839761037,15.0493213496189,13.777592016135,16.6488321649511,19.3493387594366,17.1571348929143,15.3438571750142,14.7751745595758,12.0519102989976,11.6832083399505,9.99556962219666,7.49802325485993,7.9124672126939,4.84204723444378,-20.3474167830837,27.7782081971046,12.1841613466642,19.9651916882491,22.37296922773,16.0340646698368,12.9963009560864,12.6921132191758,-19.7385182141791,-17.3158403145117,25.4706244068138,28.8010483021463,11.5109922322506,7.63109632724759,9.18877108968646,9.8698778575404,9.06328940252582,9.67577198079402,13.3808010638655,20.8596347812009,-20.2131894629967,-16.9863532808924,-15.9724675366253,-18.2822785773744,-17.8929221239397,-16.0502183767822,-12.7794993438767,-14.4853438092073,-20.2633546909071,-10.7335007267635,-15.3741235338764,-12.4072807585203,-8.06188379918893,-13.2886159274622,-9.91605001791402,-11.7895169547438,-14.3444644826961,-6.6243041642426,-11.7590015123667,-8.87703859002023,-15.6972654931333,-8.76973069596477,-15.5219476051362,-13.3734994766183,-20.127669722462,-10.3793864439356,-17.9578738005232,-20.7224967996595,-13.2521419818234,-11.2791214874061,-8.41739579129184,-19.773002299407,27.501572354104,31.8581455622244,32.0958775276456,11.3270618609515,20.6565355223142,-22.9346957942471,-23.5451021268295,-18.9510318024162,-16.3639188949419,-13.6685821650473,-13.968895384624,-14.8366803619191,-9.28858636432323,-13.1744584918601,-11.6059029844572,-11.7472803061507,-10.5760624000034,-10.282903324133,-11.7641011547226,-9.29412709251616,-6.40039785340577,-6.86193610079807,-12.4130465014827,-6.53818398836206,-17.5613707059673,13.6217554427851,12.7790524208763,12.0246230747126,15.0610769007374,10.2663453556195,12.6473675228376,10.4954247903935,11.0316803626026,13.4550545292635,6.27824167102467,8.51550934784972,6.67987343706907,7.95523086936784,8.40167817587354,6.63760700422582,25.5202327260562,18.5329590872088,-27.8133337870272,-22.9911034933809,-20.8197596451822,-26.0016046533994,-14.7086461314564,-10.4483565945823,-6.21317397027085,-16.9281955862162,-11.8563729994972,-7.20307366445771,-14.2350330750371,-9.92409976904418,-16.88001216644,-15.3651817898406,-8.36571263126131,-9.14432664693099,-16.0814736128483,-18.8272239231434,-8.16097025834104,-10.5292132302818,-21.7447462785789,-5.94009710540784,-13.0075539578526,-18.9969671860075,-21.5677470142666,-5.08075697437239,10.9652902666858,8.98298177084519,6.89490132638878,3.08881544518361,5.30443596944785,-2.01695919381796,22.9593502563674,25.7501708853688,25.4452957663604,31.1900726622734,29.4808711074358,27.9214209091303,29.1283841628086,30.2667051405669,37.5616440811334,34.8536070654818,37.8687005873475,33.2281489206678,40.0487352579341,34.2559200487249,34.8424717120905,36.4926316275174,40.048629407993,32.0058497979663,30.2574069536085,22.8506389777113,25.2679357733673,17.7749512694068,16.9447851103062,-29.7642645831313,-32.9142664322428,-34.5448171284227,-32.8744859267962,-7.26395950554796,-4.12271585852625,-8.73406169786823,-5.18992474285873,-3.12465210972652,-7.57255983084955,-5.33072312678984,-2.19986282151244,-3.23692845163033,-1.07684389278855,-4.84282724063829,-17.7679863437536,-19.1078113094647,-28.6169444528438,-22.0830620923096,-6.34408736170074,-4.21453673116956,-3.08419047222638,-1.31421234538061,-2.94965011861538,-1.63901820013198,-3.49838229151527,3.3938450273294,5.39731715271477,4.14519818052681,1.20802705110447,6.44381981978475,4.01867648572335,-4.53779899689673,28.1964808789457,26.1986826301532,37.5441365158746,18.684022635526,21.6108171874038,15.6268698992736,19.8779545271305,20.8004566994214,19.2256311390136,16.6402244463564,16.3333339772522,12.881061184606,14.4602122177044,11.7313930755577,11.7899251223126,13.8139834716809,-30.4350036276853,-4.63171272743255,-10.0122891705679,-1.70960272156498,-24.7982102651396,-22.6680729505572,-28.4467517953781,-25.9315591476733,-25.4794611064187,-25.5773129503352,-4.91939669342392,-3.14957040491722,-0.919015230208056,5.67053854540829,4.10768543373271,5.64076037424105,1.88581987849601,3.32553718542608,3.03065962776666,0.0566742329047748,1.31673558639634,-1.02883668511081,2.069323134551,-3.2482050678785,35.2203858863435,16.0186501056873,-28.093174484941,-2.18931056337415,7.2909725545927,0,-0.33475571548086,-2.06986494565533,1.62097203345931,2.05103984803487,0.871614361066988,-3.87170775382979,2.51837263353266,0.270507137860696,37.694384746706,49.9379767459052,42.1803907729444,51.7812981392742,40.2950831045757,50.3004442056993,55.3377536003086,50.1358848937951,46.0068573734291,52.8942834675016,41.0271228499327,30.7841553182925,-27.4814990422318,9.57360598467842,8.42047814999429,8.4795902593145,8.47217002147639,10.6762111483979,4.00895264939592,13.9421267422623,6.25800795784394,11.4900299186952,3.24554188250376,10.3518297745078,8.34619700341898,4.01492185843699,1.76826063048007,5.24868202803091,4.20988058099935,6.50503453434077,6.51098044656757,4.66106380183923,-2.35545430567074,1.84665372986169,0.044687754714168,-0.820787667983291,2.00563276084179,-2.82812777873734,-6.34066980216588,-2.18957549812635,-3.69253370403214,-5.66282622306463,-5.73341276389749,-7.73687063689598,67.1186581205203,64.1397797430201,67.274871330163,29.7956565451322,33.4790557829213,33.9103337681521,-23.7839601543886,-36.2770919015069,10.3499137101056,-0.180891653908747,1.16136607634305,-0.000998746156656686,2.18623944815022,4.3794728396889,3.70394344526721,6.171300219475,1.674746388813,2.50010862754026,0.898319328553649,-5.29059522733693,-7.36950582287033,-4.57031729414169,-8.12957766550382,-9.39745995044974,-11.8488941970531,48.2717807543287,-19.9819554987337,-31.8385159662988,6.6780346326572,6.1608975688226,-11.0954629960329,-11.0687934122682,-23.6685907836674,-31.8093394812065,-34.7351169009534,-31.1732154151325,-26.3337008170887,-41.9903822555643,-23.3459232030802,-26.3053380908105,-38.2194188041145,-35.9870129428581,-20.1554560773794,-44.5244467988997,-40.4659310051394,-18.5483167003489,-19.9064796542687,-15.6998277559503,-22.7874791107476,-38.2723502919459,3.36809583491185,11.0531779634581,-28.7229646757479,-33.5709721814463,-23.9669861279711,-34.1040180170032,-38.7170488606188,-32.5271168806116,-42.5376234155487,-31.9068984353067,-28.3519660524279,-55.600082235294,-47.8800905701483,-54.1351211116175,-43.8684864540623,-0.247612473414952,8.92827004419063,4.50302007384442,-32.4663843475865,-26.7079214666995,-75.2646781493751,-59.5121530905659,1.26479933552767,2.16763302506752,-0.939757280007858,4.59706846775837,-1.21348269773053,-0.356339732733667,2.07291491543016,-3.71716958766221,2.25428230026801,2.7836562109406,7.35109665605162,0.301801438469383,4.92688720049521,-2.08378226517971,5.03702840807,-4.10194409327043,0.109614554190677,4.24733986107822,1.77656631926109,-1.90250368224249,-3.99252156915317,-2.57928916688008,-6.17869034941166,10.3321374779306,14.9087273677341,12.7405130853375,14.952966933456,12.4936813084411,16.0568616211977,13.7830405218417,13.2997565184163,11.6601571879017,14.6529410759298,19.1526790398529,16.4359798155974,18.2955544672107,15.6008871679656,10.3857054094507,13.2728098280999,12.2412981392428,8.76821888560739,14.5027162839759,17.701058209734,15.5352907622385,13.3814967971794,-22.496161256948,-34.1221074500167,-49.8971827666933,-62.5778490786819,-49.356125006449,-41.3252788585853,-52.1364609536448,-40.4169797580155,-44.2934668802085,-43.622801458331,-45.2521021727538,-54.1569499191215,3.28699323602794,-6.29699547186436,-7.96275266886917,12.9992789826039,16.5610559446376,7.96479220728914,6.60160416005325,8.20085241361445,-22.6671050785625,-31.611605140532,-26.9273196547814,-36.2060218507577,-27.1511790438756,-24.5637888587532,-34.8238106027513,-57.9624641554582,3.45897369527331,-6.37548091685889,-8.75464992759072,-5.44182019647032,19.7906036534518,20.7440650535066,-18.1609482319524,-23.8868513876635,8.41745275146433,-2.05023084841776,-8.28154264058066,-5.2406451651872,-12.7508930304331,-11.0842719759343,-10.9074639430397,-13.5036999922613,-14.9297415838137,-14.1429189024203,-6.74314542941123,18.5856598704775,24.6814444867007,17.9828986722104,-20.394701584473,-23.1120375094495,6.00365747633735,8.49580037747324,6.10099198569077,9.73492178488165,7.54769121818686,7.16836147809581,11.7485910292536,8.84512219844864,9.62084633860278,1.59287282180745,4.30115265971835,0.181727063393618,0.615093394988376,1.32662812644252,-1.98551908237717,-6.8378810724531,-5.17357256389352,-5.64344613068124,-5.88575411074093,-9.71095457079724,-17.1559859121446,-16.5931960233068,22.1249036364103,22.9045250744152,22.9872403112467,17.8880743610251,15.6188962624249,21.4568680218943,16.5604822547639,20.6148455109851,18.7833109326908,21.6624843194288,24.7112668525317,18.1985035326415,25.7017903227515,27.993923417535,22.9386379456137,24.5252970088284,25.7624418697974,23.0094832601686,24.6267129405507,28.4874888347651,34.1219917998605,31.4147766285945,32.208853129885,10.3052365500562,6.79274975966029,-14.6113724946225,-10.5210019903756,28.4880453224085,21.3018997855241,24.7126050735538,19.2548446145619,20.8924237142218,38.7155574013488,26.3821463949535,7.35994544831337,-12.4389436148625,-12.8694308401291,-18.0199437036514,-14.7931148224402,-22.2720244184344,-16.2679262034898,-17.0747769759113,-24.0023553453318,-16.2939807397574,-10.0303092470953,-7.70714592783134,25.7727496539602,28.0696050787051,26.8556422942418,31.5390508455746,19.216147270782,29.6277141229614,32.9225258912799,33.6439128465788,35.3087081278703,43.2265719969691,41.5703741261105,44.1560905735064,30.3309979580763,39.9257915076091,-12.5020699997856,-9.19623914324204,31.049083953151,33.4130016040544,29.0856556213666,27.3300099195747,21.4066478463254,25.0597526620039,19.8593367406672,30.0886301190284,28.7574020740205,17.5112754325446,19.6417559034477,17.0242949620685,30.1897553655158,16.2380181070378,12.9284783901117,59.8979288624445,37.3662391826754,45.8012451786634,39.7943011930459,29.4704208422733,38.3078652022031,38.9420783130627,11.7888019495432,40.9096487251338,42.7773857259994,37.1810843216876,48.9873598490331,34.2503291150998,37.4926941241879,49.3043831440394,43.9738867465022,43.6753157959539,47.3962760011141,36.9700253203713,41.9297029642626,47.0360328160969,50.410854959202,48.6252758845151,57.0063615096421,67.8971015187444,67.5828890430279,53.1292373628367,54.3210887532551,48.4138284676547,57.9650139441684,38.5090404464638,49.1487601338429,53.8554045273451,354.785997036707,363.196530884932,334.47257561463,345.860081615152,339.05918687214,293.845288332442,329.212482278791,246.863553404782,263.160625239294,194.069972089694,236.124726441447,126.59351205859,115.985669077909,57.2790376416392,94.9179599117126,-12.4667172252758,-86.4832072386172,-157.181238316845,-216.330217231914,-270.26090538137,-270.839921252156,-316.456277919791,-249.176094519018,-313.605913788655,-294.54252781752,-315.68001059174,-349.046001753572,-361.91025491587,73.2784364563342,55.6353686671425,70.2382206560854,71.9549020376327,68.9560268518431,53.5595762620481,75.042803556987,56.5270690219122,60.4793345448442,50.3974057535236,47.1449655981285,49.08029005365,49.8125017004153,50.4611321333157,54.7968153984119,44.1111826309596,56.766086556024,62.8359095925846,43.6797002066494,43.1144004379202,45.7778838301182,41.5528765860346,39.3476267015494,20.7154624612286,57.6065529026429,14.8843370184253,27.2923915630132,-2.62598661945584,-5.29764548802396,-50.4454611181155,-347.566045288895,0.638394212208252,-5.41544568299073,7.56031025299259,3.48025702023289,12.8211031069651,15.4389145404913,13.4835671768973,24.3341011750162,12.1810391870284,10.9216516324696,8.33603150235317,26.7110778180627,-4.64697916920411,-0.315730834447415,-2.78999318278471,-3.07831816537734,-12.8813927796988,-8.35704721226625,-5.18319584931016,-5.27849639913291,-7.5532382700744,-10.4721041464647,-2.23293458905515,-6.69600873490571,-10.0783323417126,-3.78268590778739,1.23520535835043,-1.78897875452234,-1.15764927563717,-1.45311413389731,0.47949946064848,2.06159271082722,3.6312515893521,2.82847769354005,3.98786211134745,4.44955146104855,0.283012955352487,5.46590516819029,5.45201627570458,9.62054683883515,11.9918021291255,9.55821992108123,8.45510637469588,6.99899059511027,-10.2022112283662,-26.2266392213885,-51.044805610429,-73.9517405989538,62.3692645857959,43.2734215271536,-3.05204177604301,-14.5295181671117,-47.5689320309398,-61.2298812264199,-59.9125928114892,-80.4341307323189,-70.0138411675664,-53.248284262634,33.3884705131565,-67.2909638711057,-62.0628043956418,-89.4757460548242,23.5603745733772,-25.26857077827,-37.5643983843983,-40.89189918781,-38.7675297571034,-39.5594003487375,-45.3711139117665,-49.9142259390281,-52.4669131876804,4.23424998386272,3.25680213918025,5.07530618151616,2.71031922650593,1.39729709587522,16.7778843086261,-9.43111677047498,10.261813344953,-13.812045057502,35.0466439568505,-6.59625704110825,5.6502764457868,22.6619768973618,24.4506237708328,0.129049054352321,-0.907799487506674,0.649398755222846,44.7352237954247,45.6153290608656,63.80316709253,14.4890745799355,8.67269233962143,81.0404359489727,0.899690071204083,-47.04362073238,-49.0058650970057,-46.5165211971603,-57.4188790434793,-16.9492129410515,-2.2584220861416,-41.0340240864492,-51.7617751674388,-37.5209949968034,-34.5398173575552,-38.0340332780212,-32.3214475996655,-31.6610004328577,-33.8302871698001,-29.0784072213007,5.80759647800389,11.0230968913953,10.6717537507065,4.28832967499556,0.657108600062486,-7.8820134923514,-3.48089788278655,-3.66578942859035,23.5526012560619,-8.61363984270261,-8.92951532269839,-12.5400411026978,-14.2174909321123,-9.30025704600379,-5.68590501620146,31.1262621196132,13.1669690194075,27.6561527723067,17.9658823351438,46.9564043534787,42.9906151083483,81.5192088030014,57.6234839268751,71.1039073940392,58.3013365436132,68.8540563332907,87.0836517975605,64.9818674998033,54.8110912984465,72.4132143679677,51.3781039442083,71.7190072844333,91.0502673853172,68.9283716628158,54.3894442494139,57.4998977388034,55.5011633414004,66.434089969155,59.0443504560508,61.9170928858058,41.0713382569825,37.0646167223172,46.4260249649494,39.7876881936682,15.6778144289109,-7.03252334344677,40.8355970147755,-0.41812591811305,48.4713213358192,50.3643138821927,-32.9263098285006,0.7731319828016,-10.7909052196172,2.22177277714804,-14.1623044218604,4.95564741970162,-13.1728296290628,-0.272152347927524,-10.8583605014743,-8.50487625039262,-16.8790705511172,-7.651409436768,-16.7479106230885,-8.02581310146723,-29.548232304979,-12.3955612739721,-26.0317136515604,-12.6496284360517,-23.781745294287,-13.8966516301133,-25.5808074702876,-25.3301330759239,-26.8690547197212,-20.663706878897,-28.1225753461574,-22.7023981825284,-40.2571088169592,-24.4717888651785,-32.4742460880944,-27.2838894796699,-28.910204507919,-25.1801782371946,-33.3459789850782,-33.6698809259508,-32.400526399965,-23.905097947382,-26.6600824441693,-29.9299067211851,-32.1014369197999,-35.0783740002681,-32.9759734457293,-27.8091242669161,-31.4159582215545,-35.9452567016767,-35.6417354274276,-34.8753240220063,-35.6585599586237,-27.6042689257113,-30.6368156277581,-25.6000202411986,-28.7871632352892,-34.1086444180966,-28.4411344482419,-26.5913003921139,-19.6706611990754,-30.155430887036,-28.1280027900728,-27.8852106267316,-28.8256614080226,-16.6564513133627,-26.3272277334652,-24.1287057230446,-20.6246846233091,-25.5847156284426,-13.2899277938389,-22.0717337487978,-19.973800873449,-11.330557746593,-21.5417089004368,-8.9474137220419,-15.0951741701448,-13.0962573094476,-6.07189736928681,-11.9056732743908,-0.582048918242498,-12.0460308952877,-6.01616025023294,1.82339448760485,-6.49780229414784,3.98784555068951,-5.73042534334142,0.690479165395814,8.71447652874116,1.36144182192681,10.1651414377025,0.40842871964343,8.07601559971075,16.3814325902644,6.45838988945538,14.3756658482544,7.05910185786543,15.3394816883996,21.979863493826,8.14976238792709,16.6831512029687,14.0395145899615,20.5064580790668,28.47615520252,18.6945519754706,22.622057920534,18.4455734251253,26.9593851762708,29.6768468470857,30.6012916979408,30.7677255729659,19.3829042448091,31.7859266401297,34.0081688975543,29.0972358414773,29.2386330097088,26.6722781022219,35.4594680641855,33.4586464768619,27.8020743307746,28.951314406549,29.597640778604,36.1675084472406,35.1772623495917,32.8867394806115,32.196705397956,35.3821561867361,31.1961570424098,23.8550286237331,39.0550127166104,42.7211366212308,21.992821948242,24.9145480991401,29.8833959024154,24.8212918972445,30.0935029993184,29.7690745762357,31.9325056075167,24.2353122858233,24.4518033279967,19.5398050744142,26.8450443828815,22.5850868788311,28.5865957467524,17.0766574900183,24.3287746295607,19.6692762636824,27.7273474298995,16.0931579801698,21.9461146861767,7.85837052279133,29.050025620124,10.955621237907,22.1321902339805,6.29115138333793,15.7401844387884,0.238144289199667,20.6998522132682,3.15368714253232,13.0522548062788,5.3131979490394,4.97284175666852,5.78721568754647,309.441819585123,312.88564643835,52.5941669351696,300.535049232615,303.065405357613,244.883726204622,271.346755798972,34.1773336942065,330.082456804227,49.1439977527594,362.096042431296,50.6832421268989,293.88784896199,307.409558767951,232.469541934974,295.752942854054,66.5464256974071,335.305758203359,328.181069084501,392.749651466119,52.6175923750612,268.796099281528,200.912491831034,259.315723191701,258.690996894087,286.903388917243,305.288076233223,47.8273266117733,226.611036289831,223.443303725956,169.175274685894,202.682448511664,49.087727768503,279.919832602368,251.059683632031,381.561604052293,405.742583506718,34.2131757613294,154.193868004779,67.3351635804344,132.883454230884,158.549507176725,248.383757372523,175.796833714727,128.629669154754,23.4032506075529,64.475743053346,112.688207361645,12.6693663713153,63.6636891346748,18.9303421442167,166.446350048882,101.356383585858,291.819765218592,14.1346036899019,48.5731196436589,-54.8151809430979,-6.65776840833249,29.7612384025873,57.9050458107672,24.9292719591715,-16.1914865399579,6.594294204839,-17.9427562660924,-105.08059031588,-93.5916635308113,-6.58984375911264,99.5518626843983,-100.539216273772,-7.2914846797759,-173.690133246123,-83.8045752615258,-133.512229959723,-178.903114360613,-107.54058142651,-125.763812102228,-139.413122867666,-43.9388565576421,-16.7620617876951,-150.693381082247,-210.277380522059,-227.309320005023,-171.679461921944,-218.430961014899,-213.698345052604,-76.2860356827486,-218.462136515837,-29.6588627936291,-302.411993581859,-202.829858255168,-331.230917651574,-233.614144975354,-37.7572522751284,-195.132549233038,-279.464732632097,-175.304362919293,-43.1814025142693,-230.002027982727,-302.290374901591,-287.978285698498,-62.5752490290046,-260.052018118572,-303.216800735173,-325.369389454714,-44.8396655741921,-362.362783903885,-287.321798635236,-303.220350251212,-294.07109233335,-313.926280855682,-310.461631458069,-323.556552161735,-54.0840495151448,-315.624752499473,-381.861175241877,-336.523381186015,-344.305864901225,-58.702075512075,-358.804545877477,35.3469094449055,38.9517813078671,55.0809003029575,39.9529191404938,27.3848814291885,23.5724468063678,32.5995110047817,24.9105803346378,20.7829465612832,72.3558296730843,332.982296606824,17.2941393932501,13.0069933883512,27.0304665129932,20.6550104133548,8.56285036491525,40.2894638584088,191.783309663016,8.87033944816216,2.43865340214823,13.18576545478,-11.5812473018962,-14.6345707561604,-16.3352156593038,-65.4625674343067,-6.17576328219437,-23.7550968126579,-34.277424512266,-164.784808693433,-11.521366382207,-26.7640596972193,-29.8213029690553,-56.5775257705335,-246.867713117812,-15.0161811086185,-33.4692203537132,-29.7021193770887,-22.0025259505808,-51.2280860028457,-27.3726730651667,-38.3467189450005,-34.204553454633,-32.5994507360191,-41.1598335339141,-84.3672543260563,62.7123113045671,53.2441814761339,40.5921636369204,33.4732454101991,-11.4355462703006,-5.60322517696495,-21.5958059842301,-20.4459969584291,-36.9700619923551,-34.0982690370155,-62.1193837273182,-56.5800929734559,56.3278815303389,52.7074523362118,35.4120200039547,26.6381076740072,-4.99421179809496,-21.280982826282,-34.1217430546788,-46.4052997445297,-66.4191101753682,-53.1057899234209,49.6873192313234,30.5056572630118,-5.3177338455851,-0.838846095078194,-6.53769760571893,-17.8612083401609,-21.0356733921014,-32.7267846518731,-32.739587949449,57.1147617060619,34.4871468243471,-7.79293606123875,-10.2294343516138,-13.3288767478863,-26.7639534821347,-38.7061921570579,58.2796308986023,49.000738709069,36.4156912884897,27.6250781424493,-14.2342202468851,-23.6564833504247,-26.0976686326385,-38.3420884329662,-37.2452297391254,59.4281789450479,37.3850210555754,-26.4707576553854,50.5427955266892,57.777672686399,68.8191879011197,38.17085813178,47.3157194816304,33.4297864080483,-29.8944734524066,-31.5959218372238,-27.5581073341247,-56.737560224303,-94.10561849511,-55.3002735467523,-1.68710725916498,5.73175075248878,1.0137160263638,3.23323364571578,-0.965064074471163,2.25594279620236,9.06119012417449,6.52395987310209,8.48432519055196,-56.2646267362529,-1.36496305567673,6.35906281053762,16.0621704037159,-20.3377441174124,-37.9741093588892,-8.90196463120137,-5.35404325725318,59.7556714339593,32.7973958275156,-13.7204000721729,-48.1558686579446,-37.1903675636306,37.177543688338,-19.0900816716756,20.3775919153904,-27.0456855444455,-22.3897106650322,-19.2150094515504,-22.6784668736494,-15.377797419043,-16.0344895959739,-17.1940145393463,-18.7415109874282,-12.4416499098048,-16.1692526222466,-22.141459391766,-21.7520130516707,-32.612126500191,-25.5865058611078,-35.395978429927,-28.6354463460628,-24.75526949617,-30.3352757787566,-28.512981797384,-68.5834480122275,-57.1155033941716,-70.9349297961564,44.5493358417263,36.5090994633362,17.9215113280321,25.0538243814241,-17.8371564628672,-17.0141680338125,-13.0926801459468,-8.64634189769462,-15.2920107234491,-13.6565070170388,-12.8186243097382,-9.34517563538443,-10.3196974863844,-40.7990333717531,-62.7293390722352,-61.466096438044,-54.6352441801228,-62.8580590651511,-43.9590086952578,-68.8969372837444,-48.269892492127,-49.4264848593872,-46.838126186323,-46.1847765381048,-37.2950627113816,-41.8315101548734,-42.7238256910825,-34.8776047416732,-45.7883042080456,-37.6422034970817,-71.0333286647489,-83.3284116402731,42.6990951058228,38.7924005373114,42.8640253177623,22.7540281361853,27.9379328186213,26.0159468315237,27.0299757522005,32.3281596589019,23.181849634718,31.6028179783479,19.710676989041,-5.12758671063957,-39.4153905871341,-45.5622531336241,-49.276018257903,-45.776823179743,-40.6217921816429,-55.3152032296858,-34.1416874037776,-65.4814535062353,-36.2480580169391,-32.1183705634392,-40.2927714822513,-31.2817464354765,-29.8920831000953,-24.0241747315346,-26.2469678321715,-29.578403701748,-23.8253180628679,-30.8403957540902,-26.6106739948996,-34.6003728645062,-21.6568541922438,-25.4451169685065,-23.0780644184315,-18.4011071313681,-19.4766981330312,-24.7760448590565,-20.9867508273785,-22.0955321444194,-17.4314788136155,-20.1750088368683,-22.0166452646119,-17.7737457598298,-14.2355924261153,-15.6528219013961,-27.5398400934396,-23.7229275225874,-17.5388666686652,-19.204908902072,-15.9741253367995,-16.541555011182,-10.5511884975302,-20.9580694516223,-18.9160868905289,-12.5522558897614,-10.2333769440619,-12.7699268655622,-10.9266188745632,-7.02722722665757,-8.42475134094856,-6.14122192532043,-8.02619239995335,-7.91692874952138,-10.2693203953138,-7.66870014739749,-3.83918454760084,-58.0774983365347,-65.930440210198,-52.8640047625611,-52.2559154783737,-47.380909275147,-42.4085279024172,-61.4511106316641,-51.5841418835255,-45.4306252355882,-45.2976460413028,-49.9019839467307,-57.5496720395244,-51.0570802070965,-37.6396816456721,-40.5578589634824,-49.4003951943878,-41.1128312444873,-39.9484916657157,-54.2360447030463,-61.986746594458,-45.0178276952169,-79.6576406874209,-50.3589746484574,-64.5913875113825,-64.3721708825808,-416.714551080233,-60.9094287551589,48.0455631145523,41.0563648178442,37.2230725076009,52.6943351677272,60.1660074214511,32.0881003192132,36.742735356018,44.4361651092557,43.2820634812004,44.7172693693695,39.5629458141157,42.4478293261794,45.9219344243418,36.167052462347,18.1805611400912,23.7964955095441,13.5895756360312,23.6033904242457,-7.47581094873633,-4.33237591071479,-7.06265460509622,-5.26478924040713,-0.952282406342267,-3.21211637816549,-1.7377952000157,-2.96038871154219,-0.723592592255357,-4.45775061534584,3.3510836226615,1.11089637663319,1.18722074072157,2.90964248802217,1.9143991286759,1.33725766692743,6.04562390347304,0.338971858184214,2.24617666767262,-1.95284753543216,2.27176316245562,5.42018106109026,0.2568467876129,0.28465005201393,-0.545909658000844,-2.19139644290367,-1.13384855225331,-1.4562270829471,-3.96048159835048,-4.03360776433635,-58.6347571813092,-68.6939790376807,-31.4347382150435,-32.1223682991216,-35.3785522936861,-30.994381304481,-34.9593237164314,-41.6514601845953,-27.9453957308456,-24.7117410080342,-28.6879661601819,-25.2066070329199,-29.4501237277311,-33.2504600352943,-22.0406535761488,-11.7568073412235,-14.4007480691951,-15.100506549895,-13.1830273502436,-14.4620466033235,-12.4120580586465,-16.9391463033889,-16.5579890745277,-19.0878026830277,-19.5610715840658,-17.0361232318285,-17.7031155269519,-13.840769607663,-20.559858562696,-37.2359974417201,-32.9798231044812,-67.0054407829363,-43.7267023179451,-52.613236036198,-90.227105086601,-64.1600444815088,-64.7566495327686,-58.7474431747866,-66.2192001062441,-50.522803069886,28.5255506223731,24.8885677268577,26.9510454725701,30.2180422234283,22.6460688759849,30.2455408431517,34.3206196421538,27.9075971610302,28.5113492327715,24.9988222656502,25.0275144091292,21.8013525041394,17.5550959156043,50.162544097252,54.9755304006259,39.2849786900039,28.4102561520648,18.5069383512974,13.3172258769769,16.5012930714239,-9.04124703243745,-5.39833562533298,-46.7642058446919,-43.5379438229124,-53.0014564540377,-65.8815974364222,-40.4800916482052,-35.2993888966431,-37.5705060341601,-9.81986461900678,-9.16101496589046,-37.6563833129714,34.7287004186503,31.9548206480195,32.2186737778748,22.8305049530797,17.61251766313,18.7214281914847,55.2268540820992,64.1035952018766,45.2527181179834,48.8254728399312,41.0736621987303,36.2387281737929,35.5154555330855,39.3381845620787,44.3273411654364,40.3813806002598,35.5190467600703,36.8551908103972,29.881383416786,32.9332316183173,30.553983259205,17.1214533616692,12.293586645067,-37.8713727974312,-47.4545418978854,-49.3138291658939,-46.7793625665591,-55.9671453929415,-58.3576935001974,-63.2313879488661,-35.7790242192084,-43.0298489526745,34.4220994070635,24.4577411374916,28.0866486714127,21.1182505260163,20.0033219156452,19.9301691747411,21.8717781771262,19.6556788449746,92.3648087266957,14.3138530547389,14.733511691229,-51.0618579584689,-45.26863997533,-58.1519966199191,-41.7383810687481,-46.6534941201615,30.7689121879461,23.0653093887296,16.0939758218387,19.2742455157704,15.5535538941031,13.6514385036982,12.3190856940007,-40.4421596720992,-39.6563673280396,-37.6289103915753,-34.3048838261095,-27.2224916832843,-30.0561118831096,-26.177895670101,-30.7969580730888,-27.6236539669363,-21.655080658283,-24.5531533261932,-22.6103404685104,-23.9387348229109,-26.1884393556142,-48.5260353479993,24.4221029550125,30.144802468966,26.7582402162964,10.6671224394978,10.1061963123174,-32.7332857929455,-28.0782158533261,-22.5508607550502,-30.6127752889591,27.5648642247816,27.2241643420427,23.3802672723238,19.5755466879265,19.8579529215599,21.2195002065754,21.9128100726213,25.5346730776281,9.86701461423866,13.2807043718834,12.0091463529138,10.9169200156059,8.11025754820816,7.25116031064825,6.50197256898547,4.86603567760276,5.84921395785135,9.49823244000464,3.5453382521482,5.34796034783784,10.7622081189706,7.921946850447,-23.4926761664547,-29.429976083027,-26.6369814310293,-33.6221988612817,-29.2287262896384,-28.8943661994015,-25.2446082655473,-23.2038076816278,-34.0882593857964,-32.0013378996373,-35.1030771878527,14.1796598753661,20.1853395912733,16.9063712355607,17.7634875619749,14.3319132170157,25.0489683538684,10.8409036362877,8.00831787819926,7.62119026615234,8.55705355126918,11.1734812998755,5.9219049799432,7.52456045132536,-17.2615454979283,-37.5403744508324,16.647135272822,15.2707390217064,14.0079062472861,16.676035004563,19.2482247390374,19.4076930756389,19.738360413554,22.325118141205,25.1513861932743,22.400209512447,16.994442937565,15.2250028766734,13.9351158302307,16.8398533650882,19.5575362950034,17.3522137444226,15.5246725646554,14.9376684094384,12.1853822209416,11.8163539214318,10.108547234931,7.59210756003129,8.00717916347329,4.89967472897965,-20.5702238545788,28.0627046283253,12.3222673023583,20.1844251027373,22.6173979203786,16.2058540681054,13.1459277669279,12.8307613392054,-19.9545040369351,-17.5072267749769,25.7411673163801,29.0973579691312,11.6517799398366,7.73039896149899,9.30275196561136,9.99516990929828,9.18306680468697,9.79327373935924,13.5368302436556,21.0842607438213,-20.4334952510451,-17.1717686274021,-16.1480603478742,-18.4868722897286,-18.1016315326703,-16.2390508852776,-12.9287009448191,-14.6479256219109,-20.4850732306156,-10.8648878108253,-15.5474196971775,-12.5563434209647,-8.16826160499642,-13.4405031661214,-10.0424202942078,-11.9186856131183,-14.5039023617835,-6.71183711522629,-11.8968822113494,-8.98237692024668,-15.8674066970796,-8.88249059171776,-15.6940629989252,-13.5241373153136,-20.3391126163044,-10.4936948121625,-18.1617068635894,-20.9404098558888,-13.3967602490664,-11.4091780394435,-8.51362412102005,-19.9837289519478,27.7954015350288,32.1854079941823,32.4364703215848,11.4720243866796,20.8819951012402,-23.1780266783558,-23.7998058180396,-19.1543430578514,-16.5558359124096,-13.8229850397542,-14.1351738206455,-15.0136648808925,-9.41128170466405,-13.3331460826478,-11.7470563005974,-11.8938242680038,-10.7080925844528,-10.4128280968727,-11.9047981211313,-9.417119640065,-6.48749493102716,-6.95606694323666,-12.5447245253809,-6.61685460098574,-17.7624819779953,13.7874374701558,12.9398844161878,12.1731582202337,15.2329426685448,10.3994906805392,12.7950373311037,10.6202624170418,11.1658680022406,13.6120628288154,6.36837855171013,8.63525635432768,6.78166858745325,8.06630373349582,8.51271238454448,6.73088097369481,25.7895199325515,18.7354833598005,-28.1122101233787,-23.2524260384821,-21.0555977794039,-26.2719844449224,-14.8784757627544,-10.5858098633356,-6.31441894887266,-17.1125344066274,-11.9857148788533,-7.28304955356503,-14.3866098756401,-10.0349162282607,-17.0522400970469,-15.5275545357603,-8.45621808803228,-9.24136118338853,-16.2558121546738,-19.0237280394345,-8.25630775664813,-10.6393608416311,-21.9670273035717,-6.0108109139488,-13.1407950909731,-19.1954723579892,-21.794366266576,-5.13608667600985,11.1050658374554,9.10434464068658,6.99051660629304,3.14353349795655,5.37654465662224,-2.04553225763829,23.2076949226047,26.0267911844682,25.71421858024,31.5047176791208,29.784995411851,28.2189485157294,29.4320559612706,30.5859343225736,37.9530016419137,35.2067765145126,38.2643694831172,33.5780037487411,40.4460842256489,34.6245975172835,35.2035477641681,36.8644763398883,40.4547064460545,32.3442957690826,30.5705270132068,23.1062956035243,25.5416319332606,17.9749496106069,17.1411627067179,-30.0756506365143,-33.2520743075424,-34.905613925733,-33.2204040547719,-7.37343129070558,-4.19471457929511,-8.85341331002852,-5.27553625168159,-3.18834484989134,-7.67932328086113,-5.41476475458936,-2.23780637542577,-3.299672162002,-1.11033676030206,-4.91330882556552,-17.960878818831,-19.314430558492,-28.9177338557699,-22.3189191513805,-6.41840447089504,-4.26751582498744,-3.12378037863943,-1.32833403739257,-2.98409899214118,-1.6590108339578,-3.53596541560873,3.4593181143549,5.48359252764183,4.22147185144172,1.22656530985797,6.52608740863494,4.07218255969957,-4.59788838181428,28.4936503396191,26.4606638838834,37.9124234873451,18.8878711346401,21.8386358112532,15.8027979795411,20.0918863069171,21.0158253626452,19.4312982458268,16.8159217531001,16.5130892857777,13.0313972932817,14.6221101380468,11.8659135499841,11.9268471122247,13.9716518837382,-30.7458543619281,-4.70100921637379,-10.1409493161164,-1.76114553393425,-25.0534291836795,-22.9100951308045,-28.7403978874259,-26.2075607998545,-25.7440699654573,-25.8356474262453,-4.98182165382065,-3.18693380539136,-0.930015257227731,5.7675654540839,4.18637197617431,5.72724656634583,1.9361618278501,3.38318630721031,3.07775400215198,0.0583080214000534,1.33584856802314,-1.04430605314462,2.09501865289452,-3.29774611161682,35.578705339532,16.2057535061157,-28.3760041796463,-2.21804051702664,7.37914578014147,0,-0.344410733522295,-2.10756514773016,1.65712199841501,2.08008303547982,0.888527779180585,-3.9253592345749,2.55247282145433,0.27554002777018,38.0704873423826,50.4267349102101,42.6460275637075,52.2883070734492,40.7166599580192,50.7894344569579,55.8924540059317,50.6063654085259,46.4695204293123,53.4768789471946,41.4540851913631,31.0970045246322,-27.7610011713698,9.68350364699399,8.5145141067459,8.5832249867858,8.57035487694682,10.7955388567384,4.05740800883705,14.0914649486682,6.33144611682048,11.6147414516974,3.28658086070293,10.4654480025806,8.43730283050397,4.06435230744944,1.78780732109208,5.31721674635314,4.26683170964794,6.5882628809628,6.60144514498586,4.72776222869508,-2.40940558294746,1.90211663612348,0.0453820607855435,-0.833536441955403,2.0319179977856,-2.8708538424395,-6.42047683299161,-2.22057678243761,-3.73760666170317,-5.73259398473892,-5.80326187749203,-7.82744401413022,67.590897925177,65.083548741643,67.9457264166385,30.1194853873383,33.8343154847422,34.2561546402436,-24.0300691366194,-36.6605442137225,10.47371640842,-0.182809161757971,1.1763190244007,-0.000524294532528715,2.21277061858668,4.42896517266994,3.74611078595292,6.24210832440949,1.69233208656713,2.54470752836104,0.9135870404508,-5.36639806238061,-7.46700725577521,-4.63212891296406,-8.23588524188846,-9.51575850634632,-11.9852682669712,49.4904753969124,-20.187673919823,-32.158610645436,6.75129466868187,6.22696067567041,-11.230403728682,-11.1964273830191,-23.9083684032987,-32.136146011327,-35.0738483993558,-31.5017608254706,-26.6017960778894,-42.3989132200588,-23.5893470088444,-26.577348644809,-38.6020705438497,-36.3561187622473,-20.3646515870883,-45.0006468298458,-40.8927329015913,-18.7336656676967,-20.1149609135475,-15.8597164539121,-23.0149492984019,-38.6543750275698,3.40469343044978,11.1696562091995,-29.0350308794655,-33.8573457545797,-24.2016920236112,-34.4539354449214,-39.1101129440561,-32.8705868040431,-42.9627604280824,-32.2362851861317,-28.6471123204558,-56.1937530609752,-48.3479266777978,-54.7496599910814,-44.3078322491329,-0.25017537645939,9.02251158562306,4.55088638863379,-32.7981265641187,-26.9895007200915,-75.6991656417003,-59.9668772171478,1.27989377740342,2.19034968834304,-0.950181733278504,4.64666856088496,-1.22646665907561,-0.359137573795674,2.09410114925446,-3.75530659679409,2.27814682167453,2.81369011890402,7.42707227751981,0.304858290521824,4.97780636625794,-2.10419541439892,5.08944917874447,-4.14239362155667,0.109441043793266,4.29097122008598,1.79468053890935,-1.92265819477215,-4.03659319399946,-2.60623329247701,-6.23962129007635,10.4429055146228,15.0627625712963,12.8779070404956,15.1103598286087,12.6271412524601,16.2235613816409,13.9257743376241,13.4395551431476,11.7830504410762,14.8051240185765,19.3480107606449,16.6009777418537,18.4790323827656,15.7605150769051,10.4919827777798,13.4027766411796,12.3664413684414,8.85858156209939,14.6586965031656,17.8757330951398,15.6934291203558,13.5253473652309,-22.70878148773,-34.3998392115171,-50.4986040746765,-62.9526330111684,-49.9026106975893,-41.7502415059527,-52.6935347048965,-40.8132990263318,-44.7427751578687,-44.0635819000266,-45.7158327008385,-54.7331705008492,3.32387311207571,-6.36348956661256,-8.04480976702981,13.1429833397686,16.73992966354,8.04918614772818,6.6704196650794,8.28990622858944,-22.8958152303629,-31.910309570283,-27.2489955988989,-36.766845816687,-27.3805777111975,-24.9072999916095,-35.2456126972741,-58.6036936878193,3.49439793864343,-6.44443806084972,-8.84595843231539,-5.50021687475707,20.0020823097417,20.9634591175649,-18.3479068617712,-24.0617972873668,8.50822726269482,-2.07159752716526,-8.37444944960662,-5.29814682518073,-12.8799548307884,-11.1992320539825,-11.0243502436599,-13.6461808897979,-15.0865770774956,-14.287157260848,-6.81495937243401,18.7910672226112,24.9432258127133,18.1740918243718,-20.6052077853655,-23.4525805789349,6.06399366172004,8.58310876703446,6.16418102438896,9.83558929014192,7.61482048952775,7.24203099271232,11.8654597840029,8.95396956431164,9.72059839093948,1.59999234645631,4.3464127288673,0.184310140682837,0.622036274118392,1.33729060970918,-2.00789067268687,-6.90538887032403,-5.22311852703568,-5.70679973726845,-5.94869201058735,-9.81127014722101,-17.340526226145,-16.7654913409697,22.3590460796988,23.1529585187614,23.2260436359413,18.076420449903,15.7891034848043,21.6845146922784,16.7351453287414,20.8247293124786,18.9789506807376,21.8812413036098,24.9696158475129,18.3916822357515,25.9795224769409,28.282661116422,23.1692048795526,24.7713664350741,26.0330425543458,23.2356093810543,24.8762739419209,28.7793198161593,34.4717606645413,31.7126791947722,32.5967050257125,10.3772405185377,6.8868759126392,-14.7586942581736,-10.6281006351308,28.7805391084706,21.5225695319872,24.9670686985399,19.4613964536618,21.1045091742577,39.0917039234753,26.6406900771356,7.44051906323537,-12.5657363359524,-12.9950026020775,-18.2178194892202,-14.9413950399208,-22.4716227538319,-16.4366332316399,-17.310195613429,-24.1601402620137,-16.7224940542675,-10.1372401115879,-7.78635308877016,26.0405049643396,28.3684109811548,27.1389708756842,31.8605663633358,19.4238654001022,29.8780201157999,33.2608075422755,33.980853288478,35.6897406819235,43.7984540005726,41.9734973955394,44.5140747522966,30.6145561598552,40.2455705053259,-12.6318458656185,-9.29381102095556,31.3659479999263,33.7538666813609,29.3888541728727,27.6177121234997,21.6437504777603,25.340171196745,20.1320646786489,30.4429738312711,28.9829008753252,17.6797254133371,19.811326333641,17.1842498735046,30.8661369206785,16.4761994392303,13.0569953945753,60.3033164915071,38.3586654335936,46.5771808087566,40.1701932634224,29.7820623929733,38.6964781822891,39.3464381867453,11.8863438089047,41.2733774826663,43.1288712409463,37.5669960082376,49.4844576074151,34.5980591036717,37.8971503560904,49.9457495425448,44.3921843925528,44.1091736480067,47.8388219626644,37.3470786365179,42.3827594242276,47.5064020476676,50.9534718029692,49.1783998577046,57.4240612345953,68.446262159544,68.0400804974359,53.7393304694424,54.9516620074123,49.2940115105787,58.8764342693923,39.7803054405673,49.6774444818011,54.6692845983433,359.662791681028,368.228139359772,339.01627985283,350.608696519277,343.666040939994,297.931027690358,333.649473506164,250.267795864632,266.755867822497,196.744727309901,239.328836794175,128.336943284891,117.578176114144,58.057626640458,96.2204588021346,-12.6264993249647,-87.6788745155299,-159.365718413267,-219.308324213676,-273.962805749315,-274.543511220735,-320.772505840983,-252.494481945952,-317.876008895228,-298.243497118239,-319.917883941347,-353.816820957156,-366.895218462568,74.3179761972942,56.1994567695326,70.7961536996545,72.6114731703606,69.7179378126766,54.0793448811828,75.7275462625606,57.1561483314731,61.1070745877297,50.8907053285417,47.6435272975817,49.5736601452742,50.2946638436632,50.9661534512893,55.3643875070484,44.5673710110375,57.3924505698918,63.5579650070561,44.1307528770117,43.5717641440387,46.2427366533456,41.9708445324478,39.7556692101526,22.2876896894765,58.5003673480731,15.9581646894677,27.7069201479446,-3.08532966965114,-6.13120613952893,-51.2178450479799,-352.263644642594,0.716201809267234,-5.47171772001277,7.64409110656373,3.74651518400509,13.0114787914821,15.6232957225779,13.5965972487996,24.5444817510669,12.2970911454523,11.0308505021944,8.43050575249233,26.9114553037215,-4.69566177392847,-0.318679597520469,-2.81850508047212,-3.10984886030957,-13.0073630228471,-8.44337900746725,-5.23893637382694,-5.33154586037853,-7.63178646610971,-10.5808230720558,-2.25386037792311,-6.76531393082741,-10.188600140456,-3.82381416827307,1.24819071463069,-1.80884171891666,-1.17032986612595,-1.46516282700476,0.48379923148269,2.08044854786043,3.66700704157259,2.85765343471093,4.02878290599844,4.49234054458777,0.286082876876957,5.52027439225055,5.50912367633036,9.71685847575734,12.1153791458156,9.66051975974964,8.54134467643851,7.07511918058509,-10.3043939852396,-26.4864539784992,-51.5601888097059,-75.1696162701174,62.8206874546792,43.7956821365521,-3.08693751684715,-14.6923514325905,-48.569955049363,-61.8445908518186,-60.560545474364,-80.9225453553321,-71.2528150962703,-53.9519884572577,33.7362840041518,-67.7690350935937,-62.7511010651935,-90.0587521579817,23.8159203425965,-25.54091926086,-37.9578779648774,-41.3468658913571,-39.1482252586889,-39.9789052735505,-45.8424713906928,-50.424733757597,-52.9983134295393,4.28133818944062,3.29751514487302,5.13486188552076,2.7440168457342,1.41330150972227,16.9511119664337,-9.54493306481825,10.3937364957006,-13.9601722299881,35.4105099380406,-6.68605533576988,5.72071527304827,22.9091425993865,24.7152803732765,0.130512802994774,-0.927801960805065,0.669277595003562,45.1918827157288,46.102694665248,64.44954148117,14.6502249584077,8.78720906649828,81.4903002214272,0.909077730744855,-47.8009248848468,-49.3741586346958,-46.8955464482885,-57.7977160351624,-17.1275135196449,-2.28430907755914,-42.1417009147739,-52.9736838226644,-37.9000724676151,-34.921306194086,-38.4239736192294,-32.6600098217265,-31.9823874665643,-34.1826310540252,-29.3827890238319,5.8689518325429,11.1303423459802,10.7838248322612,4.36901243876228,0.657436035720272,-7.94143840556394,-3.51253130741642,-3.70760570815505,23.7924280351937,-8.70320357875732,-9.00836738914211,-12.6881612555976,-14.3086253187402,-9.49114593623739,-5.81032056514815,31.4455174024468,13.5532657924961,27.8357862236581,18.3138455105946,47.3613930793378,43.4464037282631,82.4295223660312,58.7349258399407,72.3388832915353,58.9967727514776,69.4273124507471,87.7683959760793,65.5962717208437,55.3596398779006,73.331631025628,51.8776841910641,72.2053805121351,91.7130825184479,69.5716590232584,54.9889540404007,58.0966396065684,56.0516244647039,67.2316077201084,59.7502335461209,62.6303545757299,41.4957156920826,37.4544168627272,46.899731209675,40.1987054888594,15.8335105691193,-7.10576471640738,41.2591538177921,-0.414351863669647,48.9672157524419,50.8801680290378,-33.7198172467239,0.794836061962202,-10.8700673661128,2.28448634205429,-14.3010798982743,5.03947393803594,-13.2871461512442,-0.239720110337179,-10.9244911706659,-8.53307527953211,-16.9672936492247,-7.6401222307898,-16.8819806625357,-8.02913901757213,-29.721804368213,-12.4188298239993,-26.2257075282101,-12.6744891650898,-23.9323194368872,-13.9209270842268,-25.6977434220275,-25.4591295304287,-26.9750770091547,-20.7242401966781,-28.3050635978209,-22.7769217689986,-40.4702777122395,-24.5788316473883,-32.6880419234111,-27.4111154830154,-29.0603976045312,-25.2540340729745,-33.4918555486727,-33.8465627052882,-32.5276960485689,-24.0004343099643,-26.785975908824,-30.0287871641234,-32.2625839264186,-35.2224544598852,-33.1580626443256,-27.9265845682289,-31.5274589873983,-36.1382083985375,-35.8024151553387,-35.0267374355445,-35.84946512271,-27.6913152438096,-30.7878437950108,-25.7141797173964,-28.9005359498174,-34.2841915817218,-28.5409809027507,-26.7458668053412,-19.7227239880357,-30.2840646502085,-28.280113829304,-28.0098734651614,-29.0341106058402,-16.6905628954002,-26.4382458639741,-24.2619853828256,-20.6994172585395,-25.7798893856289,-13.3053328373,-22.1679879883054,-20.0841531206759,-11.3584334120699,-21.7094807634156,-8.95103502170931,-15.1750427684215,-13.1699535737566,-6.07235002514775,-12.0220160687568,-0.533259918810566,-12.1152709494201,-6.05078321868359,1.85808330846741,-6.58250565832539,4.0569664600374,-5.78059574099885,0.686828206086755,8.7836149901065,1.31903954059677,10.2621961493009,0.382501496494059,8.11410533220855,16.4836049368423,6.44898573391626,14.4857286297051,7.06084493989185,15.4217579905569,22.0927755613866,8.14903962728769,16.7928716077496,14.0714185906606,20.6088897314926,28.6277598950064,18.7621864233335,22.7567863895006,18.4890788969563,27.097395249713,29.8210463724406,30.7418813015081,30.9592794483093,19.4392995211439,31.9452637782533,34.1601477817951,29.2345774868457,29.387830197774,26.7476082746159,35.6489592001088,33.5903302736364,27.9285903644046,29.0856949971824,29.6982163166677,36.3624439528369,35.3288413879607,33.0230269810007,32.3498552899959,35.5298596315891,31.369398599077,23.9542155483632,39.2774943364913,42.9383018667189,22.0644019677784,24.9815130626527,30.0417475229223,24.9129140217665,30.2116261709988,29.8879058799608,32.1032023800634,24.3053992281104,24.5844543890584,19.5984506523826,26.9587176192196,22.6685695851361,28.7460682486487,17.1085369887398,24.4765250295701,19.7448476090884,27.8665984249376,16.1413616578484,22.1103610252845,7.85931154067361,29.2698739978668,10.9705164505746,22.2537849948347,6.28875778806439,15.8758769504545,0.190294623565258,20.877808079364,3.12230463509907,13.1263237351552,5.34696629573284,4.99883706326532,5.79960381296982,311.316092364201,314.827522853061,53.3061619722991,302.190678055078,304.843140912154,246.329030047327,272.966516387373,35.081014366455,331.885133322093,49.7144063042956,364.432865659935,51.4831954530233,295.669864053086,309.120887902403,233.942797388707,297.587882257485,67.2492709618301,337.198940479944,330.022114349256,395.221592290112,53.0825577978323,270.265783729505,202.197953312939,260.950139935715,260.413761900815,288.470008102818,307.358834789089,48.3755195323121,228.119772484484,224.658038761929,170.228768671715,203.939523907558,49.5467353795914,281.43689440665,252.640399110529,383.9133441813,408.350093171622,34.5077583822281,155.10833540806,67.7544658621276,133.734347103266,159.608746963665,249.913637450048,176.759147774029,129.472065078408,23.6529827449269,64.9109023251301,113.31686870082,12.7519102821936,64.0487438405426,19.0825027027984,167.362332571461,101.989421270204,293.697686384749,14.2822135614526,48.8527049610196,-55.1625912662499,-6.6814013998363,29.9589537676568,58.2629803096182,25.0546170913927,-16.286755768045,6.5819808162903,-18.0350731931557,-105.738163708825,-94.2051578294007,-6.65014853820735,100.200754432075,-101.186237982015,-7.43010115568761,-174.796699898277,-84.2683906516812,-134.310642751019,-180.071203015999,-108.25079560059,-126.54069638915,-140.285382848571,-44.2355467954519,-17.0531248116879,-151.537304042923,-211.583959084285,-228.743087375461,-172.816139918994,-219.774078691784,-215.036142482371,-76.772594727087,-219.771516427568,-30.116449959853,-304.346261190532,-203.942508217702,-333.31175429433,-235.005285490594,-38.2313812277891,-196.18714270292,-281.230699443672,-176.425739729625,-43.7622760998235,-231.373605298837,-304.164335774838,-289.726699157137,-63.2805702069682,-261.499469560418,-304.932602365924,-327.445783127577,-45.5813422988367,-364.625940176635,-288.885831820091,-305.047296147016,-295.8733995862,-315.782332917956,-312.237394640105,-325.348418736507,-54.8627073555807,-317.369609214995,-384.279266829368,-338.464569510327,-346.344986003032,-59.3148728303358,-361.071696754208,35.8336245270466,39.4771786154968,55.4787820890977,40.3318706387837,27.9570608556539,24.0151497604843,33.1004786915809,25.2277976568268,21.2432507434273,72.5858308717263,335.163699792958,17.8930982101502,13.2796593584645,27.3614927234964,20.7972602466739,8.71492616733539,40.4176104541791,193.036657521472,9.21230340365556,2.5331701264608,13.3469228613959,-11.6776735317421,-14.7506322002889,-16.3776289379736,-65.8915496406692,-6.27133734958111,-23.9034062371704,-34.3633244268639,-165.875552048887,-11.8150779380739,-27.059468270078,-30.2298994313655,-56.753532244069,-248.49166482076,-15.4667758146444,-33.8192856947019,-30.1771757962864,-22.3551705698184,-51.5543518438026,-27.9039708445338,-38.7840006767449,-34.7324978771468,-33.1333706400198,-41.6458742746057,-84.5240362581949,63.0360316657414,53.6602751059888,40.8039805860974,33.7157293270826,-11.4603434923915,-5.69225123300161,-21.7049549874018,-20.6594961758521,-37.159401435596,-34.4082503613086,-62.4432497734555,-57.201074182964,56.5467240258272,52.8484815825402,35.544585088485,26.7159074464781,-5.0055400961177,-21.3752179133371,-34.2662128459016,-46.5331985906392,-66.7046036974948,-53.7966230387239,49.8435857377915,30.6007379471682,-5.32581017908464,-0.852211420714506,-6.55726446813071,-17.904981715319,-21.1088813081162,-32.7904757644885,-32.8409285625122,57.3142897373226,34.6054418396603,-7.83150875947993,-10.2566523244124,-13.378871614355,-26.8412318292948,-38.8509589736461,58.388078757197,49.1779460077633,36.4834788471182,27.7222412704522,-14.2812079208978,-23.7050913651563,-26.192026467188,-38.4162814875002,-37.3707912753187,59.5875079654913,37.485638110152,-26.5484605379387,50.7150450795222,57.9247540101723,69.1256059236202,38.2652925861366,47.5521541651239,33.5403406652618,-30.0158375232124,-31.6911878102973,-27.6367022410248,-56.9089108554819,-94.3731309624945,-55.4793821572255,-1.69741890423952,5.74291293673918,1.01746438035273,3.24422846355538,-0.969554513438441,2.2647227817743,9.0820390652738,6.54245761206911,8.50754529417963,-56.6446857222113,-1.39036676398489,6.40766221925422,16.161888030568,-20.4537888550237,-38.2066694352007,-8.92973401526043,-5.36840446050385,59.9071981497306,32.8846745254505,-13.7635625928898,-48.2793202735745,-37.3105575653681,37.2967025181245,-19.1545154911311,20.4418948083307,-27.1477130896637,-22.4601330366739,-19.2717702019826,-22.7489560766981,-15.4206658658804,-16.0855773856833,-17.2515087504942,-18.8021558893069,-12.4835561368289,-16.223347080979,-22.2090978532567,-21.8252535312759,-32.7086562567226,-25.6659501683327,-35.5025309957737,-28.7467511729695,-24.8389669122698,-30.4407639574351,-28.6018615629719,-68.7744800848243,-57.2809324210743,-71.1601891467717,44.6866193934469,36.6286686319965,17.9749809865952,25.1291767739789,-17.9138362429582,-17.0594491382056,-13.1395145494507,-8.67483946093677,-15.3428068793884,-13.7018274978414,-12.8613802887996,-9.37586741308563,-10.3568681276669,-40.9205216257394,-62.874038495319,-61.7249372103256,-54.7786995778594,-63.1212355979945,-44.098159506774,-69.0392085965445,-48.4202462865786,-49.5884914782319,-46.9822583451,-46.3302017348889,-37.4153782892586,-41.9730953356779,-42.8677530302934,-34.9971884310349,-45.9349872986715,-37.7697701910941,-71.2456201754939,-83.547987806694,42.8562528463487,38.9156302898687,42.9920867395076,22.8315508462016,28.029743427957,26.0995044824893,27.1227965349883,32.4317421119267,23.2555623574622,31.700118518835,19.7730574673621,-5.14616785488809,-39.5620191148812,-45.7122315826205,-49.4370231761451,-45.9637824219878,-40.7353240656182,-55.5100992918172,-34.2474447708472,-65.6816674343925,-36.3689479605198,-32.2297726684621,-40.414828244929,-31.3839135927712,-29.996016861395,-24.1033602623772,-26.3340927701576,-29.6708796296493,-23.9054508564088,-30.9384321675144,-26.7012442871957,-34.7089342642179,-21.7362865989238,-25.5398796925302,-23.1626011818409,-18.4669212001934,-19.5491244802341,-24.8620333420196,-21.0657975631543,-22.1704941502403,-17.4938987337909,-20.2512901384557,-22.0855765601453,-17.8352987482364,-14.2835792903398,-15.7112358524993,-27.639872784385,-23.8068897174859,-17.6067202972969,-19.271422891401,-16.0267598821368,-16.6023280109969,-10.5938599002307,-21.0303150994482,-18.9823125677865,-12.6026016812163,-10.269958912864,-12.8179057459388,-10.9698175352088,-7.05253540288314,-8.46046754853583,-6.16727549178743,-8.06015157365935,-7.95398376845026,-10.3121783967036,-7.70119793235587,-3.85810249750333,-58.2782276730745,-66.1875307797461,-53.058437675643,-52.4478251866909,-47.5208639279782,-42.5547874653454,-61.6251335649984,-51.746912726352,-45.579895482392,-45.4530896525946,-50.0564996659356,-57.7073400168349,-51.2227645345341,-37.7620656390958,-40.6882958833717,-49.5603896937342,-41.2458207595924,-40.0741014499485,-54.3998529682482,-62.143778355331,-45.1599531705314,-80.2089159712308,-50.7152308194568,-64.7829469469033,-65.2227406063979,-419.347155274437,-61.1808819223152,48.1950842899132,41.1793811202374,37.3294382072271,52.8748593909445,60.3527497228125,32.1907903083901,36.8485909240868,44.5864057558301,43.4136267146083,44.861466107232,39.6775119976283,42.5864053374016,46.070105535179,36.2817133732052,18.2792137558826,23.8769842611919,13.6335452534658,23.6789684485976,-7.50345862729807,-4.34746418770543,-7.08854872612936,-5.28446366516764,-0.955414402071177,-3.22363078840804,-1.74434759702223,-2.97169833327836,-0.726636910091744,-4.47433089504296,3.36349743807732,1.11507814031205,1.1926700315834,2.92035101737592,1.92080250096398,1.34262266761534,6.06466475839859,0.340902938549495,2.25685413286542,-1.96108523922212,2.27915451206332,5.44068141593114,0.258296217031622,0.285279565452837,-0.548406408676077,-2.20164291570301,-1.13886437458125,-1.46447797997066,-3.97820148017651,-4.05116430924411,-58.7796264679389,-68.9985846632204,-31.5405984367262,-32.2314367614756,-35.4938400894742,-31.0920257600029,-35.0821980452995,-41.7763110401865,-28.0498278647981,-24.7978650411866,-28.7807338650805,-25.293633416399,-29.5545645743573,-33.3643580924335,-22.1255169877885,-11.8021160970757,-14.4587866521351,-15.1595056400477,-13.2391077017455,-14.5230986950657,-12.4654101496393,-17.0137655139504,-16.6283746802079,-19.1654487866572,-19.6393768208659,-17.1132191926788,-17.7735084658651,-13.9025122542141,-20.6363069063855,-37.3610589629775,-33.082500959313,-67.231128056636,-43.8662625117407,-52.7600937325428,-90.4659559408696,-64.3959009764493,-64.9692748430618,-58.9569644636341,-66.3367204709073,-50.680819188798,28.6184579828609,24.9750846969687,27.040728662746,30.3187674648868,22.7183304885107,30.3553455661645,34.430620489689,27.9962207521766,28.6053639845456,25.0830247633506,25.116323683499,21.8809138566954,17.6128372094625,50.3452911165489,55.1563316808865,39.4182684317724,28.5103654365757,18.5702436616027,13.3556883704911,16.5519553318655,-9.07830114531511,-5.42170294009956,-46.9356527191074,-43.6760578406892,-53.1399667044852,-66.314371396211,-40.6169803359556,-35.4101340520074,-37.6986618790528,-9.86285118224429,-9.20348268206939,-37.7658406069464,34.8504864422026,32.0557441776503,32.3220662634242,22.9127649575496,17.6719394159074,18.785411012,55.4074844819272,64.325575025544,45.4104146533137,48.9753174087435,41.2038601274536,36.3596747268339,35.6285972394446,39.4618469000153,44.4618912928687,40.5165741875437,35.6390158570762,36.9804365471461,29.9805006140003,33.0462999397935,30.6556681598593,17.173787731288,12.3301664041066,-37.9992619904982,-47.6019005392765,-49.4859579938537,-46.9321716495828,-56.1295500817628,-58.5496791178154,-63.4857780723638,-35.9064647961217,-43.1819121665907,34.5388362125043,24.5440881959832,28.1880524716707,21.190322366312,20.0783648010672,19.993709481394,21.9501969667103,19.7284358272297,92.5526811972475,14.3646141942234,14.7831680527605,-51.2301081698331,-45.3948093632174,-58.3565534100888,-41.8730178915228,-46.7904839172664,30.8768385475678,23.1418511169238,16.1501830128107,19.3382592009954,15.6071778924624,13.6997687264458,12.3609515732356,-40.5996815012182,-39.7983499037364,-37.7563107184964,-34.4196037153909,-27.3216730635681,-30.1649453680813,-26.2722085473998,-30.8950171262589,-27.7289983714696,-21.742715111114,-24.6506528648595,-22.6934633824761,-24.030994913476,-26.2868923858399,-48.670791920595,24.5138556586871,30.2506885495971,26.8501948255408,10.7132635675425,10.1392022497882,-32.8450703603347,-28.1838774817343,-22.6309355831087,-30.7253968970283,27.6643082307637,27.3194139898984,23.4731539724138,19.6473089244419,19.9344287914481,21.2969478125199,21.9932045862797,25.6272265534703,9.90105184419336,13.3294535333997,12.0536922181063,10.9531832312229,8.14205587417945,7.27656457749365,6.52218268382362,4.88589389018813,5.86943949739943,9.53243628962491,3.55997914359141,5.36912787336489,10.8043587521859,7.95227033218506,-23.5771241924211,-29.5328391981078,-26.7328677074972,-33.7384052998882,-29.3263532848136,-29.0004281195393,-25.3410623544556,-23.2851035667022,-34.190004452076,-32.1131162774407,-35.218038821948,14.2369981017218,20.2649378829548,16.9723806172755,17.8331378878766,14.3912620846438,25.144098088941,10.8836452691765,8.04225166259491,7.65543124990689,8.59112512634789,11.2184264962366,5.94703687751956,7.55666453194384,-17.3369856374948,-37.6667782199586,16.7161836123467,15.3374912785075,14.0697058275657,16.7514875518637,19.3285758555226,19.4870235747385,19.8207613538157,22.4148550152752,25.249673942035,22.4854758020889,17.0680972548289,15.2963041490627,13.9969958720327,16.9160191464733,19.6349793269314,17.4278868896796,15.5975677612986,14.9981384389545,12.2360187459047,11.869343457624,10.1534632729541,7.63277806532589,8.04611411174533,4.92351813832695,-20.6532661157367,28.1566801808997,12.3774195865173,20.2665640443675,22.7061479890693,16.2693582524596,13.2046227649471,12.8820366565324,-20.0357188636616,-17.5799180262059,25.8371816152869,29.1936613572347,11.711468150969,7.77442761144284,9.35151898062822,10.0497842864644,9.23646024210279,9.84305699918458,13.5987652811608,21.1638128847476,-20.5168821875465,-17.2420259672437,-16.2151866073708,-18.5619358153923,-18.1853683469047,-16.3150133196803,-12.9899695259688,-14.7108842463191,-20.5682582921994,-10.9204308543674,-15.6142382570988,-12.6188849886199,-8.21588767456979,-13.5009855728224,-10.0975929001096,-11.9683280490802,-14.5642691065841,-6.75092359040292,-11.9531926611379,-9.02596806612466,-15.9308473466611,-8.93245881391725,-15.7591244022135,-13.5812296311965,-20.4142334322502,-10.5370064626746,-18.2413336801823,-21.0153354935716,-13.450956105262,-11.4607439894761,-8.5519999257168,-20.0601512383639,27.9001176584409,32.2945014701617,32.5508361538783,11.5352385733346,20.9642337240697,-23.263870333397,-23.8917806746858,-19.2294706746684,-16.6330175399652,-13.8840791080605,-14.2035717759146,-15.0874418696384,-9.46641545316635,-13.3986677642929,-11.8065982552149,-11.9569726392295,-10.7651504274822,-10.4698824177685,-11.9634444452345,-9.47188936319733,-6.52704241833679,-6.99934206138516,-12.5919877060212,-6.64993626764361,-17.841542567376,13.858356222647,13.0084764189705,12.2366125297091,15.3022012699549,10.4587223038664,12.8553206892392,10.6716061787555,11.222814286325,13.6751583422732,6.4100062429345,8.69073160591475,6.8306890105167,8.11793043349246,8.56229323540243,6.77423924365234,25.8844437725172,18.8123916423836,-28.21779856443,-23.3558154451438,-21.145432370864,-26.3656432828958,-14.9458323842382,-10.647260334243,-6.36446167195694,-17.1787913667194,-12.0330318286866,-7.31254358836255,-14.440515086227,-10.0769214453705,-17.109624428581,-15.5841580097065,-8.48944519649204,-9.27517885515548,-16.3196242110236,-19.0908192574955,-8.2946931571603,-10.678105002853,-22.0389119003013,-6.03992109653352,-13.183889819497,-19.2633175552056,-21.8723290850428,-5.15689144862452,11.1667263517567,9.15972069195383,7.03462537451508,3.17128423743889,5.40950189701376,-2.05893876283283,23.2997455433535,26.1266149551834,25.8067968729379,31.6050683018866,29.8862597491788,28.3232511716237,29.5343239239503,30.6918216857736,38.0815810990135,35.3257085746032,38.3899327627183,33.6960377448687,40.5709105006655,34.7520711012456,35.3228034350278,36.987164639953,40.576971131689,32.4572470777914,30.6737507041852,23.2039605051651,25.6422963616801,18.0518894597027,17.2181463915413,-30.1814703602181,-33.3581919078125,-35.0228718735207,-33.3385534916922,-7.42616143655449,-4.2312726057275,-8.90811702276135,-5.31770520097139,-3.22184747815323,-7.72924644532311,-5.45564382603034,-2.25696658209381,-3.33234494382968,-1.12890918096813,-4.94678098005084,-18.030583927096,-19.3907220589934,-29.0161439764419,-22.3992485457117,-6.44912314760869,-4.2901095393008,-3.14086030119835,-1.33374460300422,-2.99783179444352,-1.66743239010651,-3.54963087508338,3.49330618228013,5.52607589909741,4.260521384719,1.23536569443749,6.56195049607775,4.09621794266045,-4.62496788422132,28.5951889171766,26.5439890512384,38.0210243299549,18.9635856144841,21.9157899580736,15.8715842039822,20.1716728676605,21.0880859559642,19.5066074219428,16.8781131904399,16.5809618404999,13.0924861254733,14.6844279818349,11.918799582451,11.9820355476371,14.0341080930606,-30.8494127519257,-4.73419252186578,-10.1979098838283,-1.78966117304102,-25.1357695268839,-22.9961128692615,-28.8367150754703,-26.3046127844647,-25.8347005594007,-25.9184850292815,-5.00915517693501,-3.20261545836418,-0.934825772240978,5.81640841662729,4.2271044534139,5.76889052323177,1.96357552909694,3.41238560061492,3.10068748334485,0.0592447469693148,1.34497089346866,-1.05169273519556,2.1063123584357,-3.3214731266667,35.6961510047053,16.2819580365042,-28.4639111086794,-2.23088407414114,7.41632555178567,0,-0.349748618698816,-2.12683484717997,1.67621025087482,2.09374576756953,0.897228443937009,-3.9499111396242,2.56816683181256,0.278104378115427,38.1818430517866,50.5730695684805,42.8191712210092,52.4396136420718,40.8476730179631,50.9281869102567,56.0397747900437,50.731801303293,46.6186585785927,53.6618981695067,41.5893744069207,31.2004077726851,-27.8503462314788,9.72713271311957,8.55029629008525,8.62737382044308,8.60982807750149,10.8416335075112,4.07733973688447,14.1454952644626,6.36174910690784,11.6601984423408,3.30436712240895,10.5084499574573,8.4705170912156,4.08497689321309,1.79559750402425,5.34783903255751,4.29271863510361,6.62464887287262,6.64318416433902,4.75914080402118,-2.43854359060541,1.93295677690814,0.0457185855633335,-0.839702138845486,2.04366086458783,-2.8915272611379,-6.45518833727455,-2.23496210933037,-3.75693836268308,-5.76208805600325,-5.83276860211766,-7.86463672283346,67.7305498438858,65.4098900711948,68.1746109498086,30.2290538131759,33.9576516182587,34.3614922638417,-24.1097687482893,-36.787677116291,10.5252184921924,-0.183585519603167,1.18303973545713,-0.000267218395256287,2.22389961718479,4.44765854141064,3.76277410317472,6.27030190026945,1.69861692007541,2.56740296200861,0.921246044017121,-5.40153113702393,-7.51126080572106,-4.66038528660493,-8.28287285904307,-9.56706370681433,-12.0399397028152,50.0141390428829,-20.2536252796694,-32.2583598133257,6.77943459862804,6.25095231640742,-11.2873666538433,-11.2474540100932,-23.985200393625,-32.2353499381361,-35.1762045497867,-31.6133169101851,-26.6851536212487,-42.5121644200954,-23.6697899643524,-26.6607515036622,-38.7243888767895,-36.4716794052129,-20.4353961757771,-45.1401012260846,-41.027116028292,-18.7926314499723,-20.1850484070016,-15.9108555744428,-23.0803570661111,-38.7643301101538,3.41832490279352,11.2103939394945,-29.1481663586365,-33.922963488344,-24.2696419394207,-34.5681848284211,-39.2296001003192,-32.9874743256775,-43.093326319055,-32.3482018567281,-28.7414196815609,-56.404961495589,-48.4886715555006,-54.9791576346261,-44.4418588280049,-0.251116009348333,9.05555505632747,4.56725347599624,-32.9020390055971,-27.0814318207013,-75.8399545526308,-60.0998542429661,1.28596340792419,2.19864607321914,-0.954236290325449,4.66434734361145,-1.23074171464794,-0.359988658559817,2.1010811603401,-3.76822273389728,2.28609545390604,2.82419588281904,7.45232037020532,0.305910129177444,4.99528371939779,-2.11032264300276,5.10647100744335,-4.1555338487886,0.109324071888465,4.30474106984709,1.80021300014165,-1.92985252296051,-4.05243077940403,-2.61572135837237,-6.2571200369334,10.4832042541577,15.1160554570239,12.9272543084746,15.1659900573087,12.6736211507521,16.2787884888867,13.973470595093,13.4862181807597,11.8240077852337,14.8572533210459,19.41002915098,16.6527262226036,18.538154073067,15.8116465308801,10.5264087247369,13.4411566153339,12.4073080169142,8.88905632145953,14.7107849104205,17.929687421388,15.7425358271186,13.570536644484,-22.7677185382264,-34.4958177988933,-50.7083859787893,-63.063087856685,-50.1029131730249,-41.8762726965277,-52.8811481470741,-40.9301632150036,-44.8781837627854,-44.1921165466447,-45.8577685516568,-54.9216098376564,3.33577698087957,-6.38612746296429,-8.07254338545337,13.1964725909221,16.8027466532879,8.07803159370625,6.69416814205796,8.32114469410815,-22.9688549497439,-32.0053545869198,-27.3637133811398,-36.9609880654301,-27.4544822533708,-25.0327007090986,-35.3968952124013,-58.8130594199197,3.5054652998398,-6.46928934689693,-8.87678073370704,-5.52036640639557,20.0770055779683,21.0377944181817,-18.4091255861273,-24.1162914654281,8.53905932380863,-2.0786287212906,-8.41088483264941,-5.31933136546105,-12.9226532078861,-11.2382903263915,-11.0651946729977,-13.6945994581045,-15.1389717495818,-14.331168002512,-6.84118518785297,18.8666287979352,25.034275908427,18.2419305076876,-20.6710647645328,-23.5602216745005,6.08290116374065,8.61119741824565,6.18508111894028,9.86405515991347,7.63387418225718,7.26590214188914,11.9020484331813,8.9880166798667,9.75293582728253,1.6002678677435,4.36142226348159,0.185293457068495,0.624506834482777,1.34025160549259,-2.01534001980155,-6.92463952546745,-5.23853949206179,-5.72647105139624,-5.97048583379857,-9.84213867123006,-17.4046856758755,-16.8212119351644,22.4432262102156,23.2402445597397,23.3053740768984,18.1421095823945,15.8493765865629,21.7607322412728,16.7925374170075,20.8934344489951,19.0454937330532,21.9507680790545,25.0518536729738,18.4573384896586,26.071750324883,28.373277845721,23.2408749067849,24.8477901887563,26.1200929092941,23.3016113809077,24.9553126591099,28.8723097723984,34.5778346840033,31.7995609926997,32.7239364478302,10.4048673220079,6.91966829949316,-14.8037955505817,-10.6625467621505,28.8757705151319,21.5973589154488,25.048178222293,19.5311733936819,21.1648170536603,39.1997631782443,26.7170509998476,7.46639763376921,-12.6064797551089,-13.0329840590865,-18.2856662366771,-14.9886402194658,-22.5282508593301,-16.492346209596,-17.3948473041522,-24.2148643381964,-16.9015626433355,-10.1736011561115,-7.8114704846349,26.1309009025934,28.4722042428953,27.2377782505672,31.9660321390695,19.5002096165815,29.9597713099973,33.3698080426666,34.0826712326761,35.82152368241,43.9830147367512,42.093424827848,44.6143305553313,30.6980698968832,40.3603297172863,-12.6753669601265,-9.32754474934795,31.4684819326119,33.8625465813214,29.4933051803493,27.7159385160227,21.7342816560726,25.4352521608975,20.2338547017199,30.5737376031959,29.0504216593683,17.7292059059225,19.8538726278315,17.2322980007126,31.1466742297948,16.5633416368552,13.0948540737155,60.4658193569383,38.7609026741437,46.8403624257132,40.2809760197116,29.8859345925995,38.8163750654029,39.479828662715,11.9228007488051,41.4172034818887,43.2686260879542,37.6922117858461,49.6326698466198,34.702894787252,38.0334575469062,50.1705279971773,44.5157716546598,44.2380357657348,47.9477702243272,37.4659473135139,42.5458683757445,47.6584614386851,51.1121493920122,49.3743257612143,57.5233293355594,68.6641536468037,68.1911558714038,53.9458147588817,55.172164666158,49.6159721295498,59.2402050353925,40.3810992022738,49.8442954599687,54.9882945988897,361.972074184439,370.613157444008,341.149720625888,352.864824919732,345.814489585278,299.873308678303,335.744404334835,251.88713374816,268.455827078804,198.007924241285,240.848406810095,129.159603424561,118.332273150207,58.4219850980859,96.8409359357109,-12.7014938713803,-88.2487959335665,-160.408666378083,-220.719433313276,-275.712957746959,-276.295072832311,-322.81284861255,-254.035199431984,-319.88242771669,-299.880660572962,-321.921851049028,-356.067490779876,-369.262950341338,74.7259062052173,56.3768557003607,71.0020818050918,72.8529105517055,70.0057456961146,54.2350980414583,75.9307615849004,57.3630167468929,61.3000188006235,51.0383679762968,47.8086845569303,49.7224473277327,50.4377577522469,51.1101735398368,55.5340575007075,44.7162582111538,57.5985261408683,63.8053437515402,44.2786129659438,43.7282339554289,46.3886738202137,42.1050206194167,39.8952814336298,23.1671694093463,58.7840218441054,16.5534230824153,27.8258580139391,-3.36065392008326,-6.62601353574085,-51.4485783710712,-354.473878135464,0.749238622000222,-5.49017213336855,7.66725877527485,3.90280109813489,13.0816440954824,15.6865787997294,13.638298053553,24.616985183628,12.3338916224202,11.0622073206925,8.46407120138271,26.9828838156194,-4.71247090573503,-0.319597159074665,-2.82748800634929,-3.11965310417221,-13.0449845920201,-8.47248765088535,-5.25755430988796,-5.34824896255444,-7.65720946917783,-10.6157493729647,-2.26059038799347,-6.78847553377156,-10.228490998444,-3.83823184811962,1.25269259035989,-1.815291534697,-1.17484461462469,-1.468684845755,0.48514858697552,2.08605888772403,3.67897692313197,2.86698610706715,4.04191719704505,4.50561271993588,0.287005747719039,5.53794746394044,5.52732368847295,9.74569731091013,12.1580405332703,9.69836077010516,8.56804201800875,7.10296106948508,-10.3358535413637,-26.5638144171956,-51.7239252037743,-75.6514262078991,62.9702457242891,43.9874879639763,-3.10069185002491,-14.7549671144879,-48.9427925182054,-62.0436212392534,-60.76104181584,-81.0956498525734,-71.6903399092779,-54.1907386229129,33.8521397753933,-67.9385109319901,-62.9666291896141,-90.2643879237995,23.9072233775281,-25.6385828213034,-38.0872426077884,-41.520703001643,-39.2635107159705,-40.1195452739896,-45.9984872904712,-50.5996113338089,-53.1542518685008,4.2996279696471,3.31487963186791,5.15964693026802,2.75806897764053,1.41966995480345,17.0105923074351,-9.59185923028996,10.4521141749325,-14.0111127127588,35.5308953339023,-6.72681635316227,5.75138698892823,22.9998647522691,24.8131302005526,0.131072538824929,-0.938459798212533,0.680309684674154,45.3303227596559,46.2775547260499,64.6444748527958,14.7121499475534,8.83894943753988,81.6454121334578,0.912659396142324,-48.0702033586423,-49.4951040134551,-47.0141070145934,-57.937020356414,-17.185137852366,-2.29423608217683,-42.6086446028575,-53.4677184520571,-38.0213325664089,-35.0586841037038,-38.5467861790452,-32.7744717169906,-32.0856293011425,-34.2967967523714,-29.4854860601019,5.89013579242366,11.162598459959,10.8213891232217,4.40119358136908,0.657468432174461,-7.95835614622196,-3.52158340279185,-3.72272661058499,23.8698762261489,-8.73114507664408,-9.03256625178512,-12.7387432594407,-14.3364441387288,-9.5567162023016,-5.85468314066777,31.5501118712233,13.7049966053994,27.8973107179296,18.4417405910066,47.4911645747764,43.590990093765,82.7615560794035,59.1640611326027,72.7501102300139,59.225286598714,69.6265999692421,88.0232896606903,65.7821875626165,55.5367021716891,73.6447211382801,52.0216050869592,72.3353073084243,91.9694698113402,69.8195448797094,55.1786724751973,58.2838722240943,56.2257068769901,67.5074826902344,60.0114433663966,62.8896790329964,41.6305179867328,37.5895325651929,47.0520127487104,40.3328887101549,15.8840151601757,-7.13083157444936,41.3900512317621,-0.414332731853864,49.1125289138653,51.0405255579427,-34.0437489150226,0.802148507114031,-10.8941539655576,2.31128700220248,-14.3504039904264,5.07484715891813,-13.3255069685846,-0.221601887871806,-10.942761886152,-8.53253997450073,-16.986603126651,-7.62457266409577,-16.9232561765622,-8.01631443723811,-29.7636856394102,-12.4135896940246,-26.2857095377081,-12.6675659293099,-23.973685458362,-13.9107431731473,-25.7142597540612,-25.4902412179179,-26.9880225913378,-20.7266911685776,-28.3548818858683,-22.7767075460366,-40.513799349905,-24.5977989770323,-32.7477155170697,-27.434315270865,-29.094140405335,-25.2526735978445,-33.5099095223125,-33.8901883434883,-32.5405467197111,-24.0140437196387,-26.811817215694,-30.0307528370295,-32.3002277286882,-35.2359735408862,-33.2018401589119,-27.9469545428457,-31.5341013390597,-36.1858233153058,-35.8243159868148,-35.0462308979593,-35.897204085015,-27.691156664865,-30.8209411463202,-25.7358285490057,-28.9121865794366,-34.3259623110132,-28.5437994754185,-26.7853537616366,-19.7225340680297,-30.3012968811333,-28.3182331887134,-28.022980514116,-29.0945568608268,-16.6849558334642,-26.4540265613577,-24.2958000388535,-20.7018583787824,-25.8384898912017,-13.2950959918222,-22.1835141726339,-20.1111416423365,-11.3519450832366,-21.7618060626122,-8.94172043759147,-15.1908827351623,-13.1887714022802,-6.06056471464752,-12.0617683939331,-0.508638969362398,-12.1332399617884,-6.05919208552755,1.87361072307343,-6.61461415983522,4.08529677732333,-5.79838132376203,0.684999147030914,8.80495047788806,1.29724044673438,10.295955925277,0.36699379775945,8.12293596070628,16.5090564674627,6.43589620400881,14.5199221137817,7.04867212581665,15.4431709435893,22.1148302180104,8.13625009663447,16.8236617737725,14.0632877303967,20.6337192737757,28.6576263127323,18.7701334073943,22.792309489216,18.4808403955352,27.1308750490275,29.8451179288515,30.7721975483825,31.0114928450913,19.4345341971052,31.9825708195328,34.1816117254642,29.2621826289378,29.4211455320347,26.7440018981373,35.6959243096415,33.6022439986281,27.9514651420925,29.1122390152857,29.7021696773932,36.4113648197604,35.3466604808164,33.0379184477751,32.3835654772942,35.5446811593355,31.4117235589277,23.9687127724868,39.3345589338386,42.9890930252091,22.0719105819312,24.9755648929906,30.077948232696,24.9241463501556,30.2257034287271,29.8988143771364,32.146451267464,24.3020218365887,24.6159730434733,19.6010060202092,26.9742010305975,22.6718080505406,28.7869286430654,17.0973447580611,24.5155105843706,19.7552774498225,27.8935167186937,16.1373497022634,22.1597941737689,7.84688319291535,29.3382710229724,10.9629031577008,22.2809987635341,6.27472836481205,15.9198485953912,0.164582381540907,20.9368684662155,3.10288858975677,13.1443488725793,5.35537173863951,5.00363197605589,5.79890734750148,311.896429327047,315.425583721734,53.4686998206715,302.702522639783,305.410018861374,246.770585826479,273.459306960313,35.3083251140141,332.446217705583,49.8395797920513,365.177737507375,51.6759746244325,296.235893512017,309.660662405298,234.395473580319,298.149804060342,67.3977850143409,337.79285875527,330.602304762512,396.020377632054,53.1750534792488,270.728498212693,202.591933092045,261.453906230752,260.951645927738,288.956752885113,308.034944515604,48.4926648519803,228.614381298284,225.042911349392,170.560978801864,204.325674070727,49.6411796264282,281.914579430203,253.14620321022,384.686129550556,409.210910824778,34.5695948556144,155.400163064779,67.8818311999787,133.994700835669,159.939955408599,250.416271590048,177.054842953632,129.743369296633,23.7059863554335,65.0495456373735,113.522877279601,12.7754743643102,64.1679369186438,19.1112477519865,167.655131112259,102.187348604671,294.323556050646,14.3195069324402,48.9475665898752,-55.2724023331387,-6.69034170945111,30.0225501524964,58.3813319341442,25.0851063188424,-16.31909859043,6.58170276179244,-18.0554808299079,-105.942510141641,-94.3974340865304,-6.65924294840673,100.421081023864,-101.398991054202,-7.45656102976267,-175.15923256712,-84.4030385119247,-134.551637816243,-180.43806452078,-108.470934597644,-126.797844642058,-140.572318971474,-44.3296482629071,-17.0900830202087,-151.792875771437,-211.988747510174,-229.185756208513,-173.169122852131,-220.217111346765,-215.471984291971,-76.9206044232793,-220.188634781932,-30.2144045619882,-304.976959764559,-204.282623726011,-333.97466874082,-235.42898963953,-38.3386957119327,-196.508778712426,-281.806255224418,-176.783431553871,-43.887771517398,-231.802836322698,-304.739734248952,-290.257423388677,-63.4367761003147,-261.947139907642,-305.478357698221,-328.121302976393,-45.7543739322762,-365.358351639606,-289.369383266069,-305.601705470863,-296.428390129112,-316.335710620597,-312.796665690497,-325.914088502987,-55.0478762744986,-317.913384842838,-385.062001602144,-339.078447580049,-346.987612329779,-59.443456027661,-361.785842787416,35.9525264211932,39.6062030510448,55.5535720560427,40.4117175066392,28.099679224456,24.128827980327,33.2300693450942,25.2979219018044,21.3583136660813,72.6714726309453,335.882531756051,18.0477356356007,13.342949384345,27.4430935626536,20.8268857080312,8.75042015110424,40.4661483800452,193.447886745808,9.29913495896018,2.55253035634424,13.3914214533674,-11.7076777655214,-14.7797014102432,-16.3919642000539,-66.0354805443751,-6.29166403852996,-23.9361367248403,-34.3889299082625,-166.23935687582,-11.8931874394733,-27.1371491173251,-30.3344992532692,-56.8165276161727,-249.030752440254,-15.5854723202443,-33.9004301454122,-30.3003252124322,-22.4402546006348,-51.6166744315303,-28.0374760011582,-38.8792718336872,-34.8679609644164,-33.2594814144854,-41.7590399550058,-84.5791689744778,63.0756873276146,53.7293392658591,40.8305694411423,33.7586043132873,-11.4690372824385,-5.70532444017121,-21.7207492740508,-20.6958373947206,-37.1862953471016,-34.4563321698481,-62.4997402816663,-57.3389465434192,56.5745375396503,52.8805641445146,35.5620510202965,26.7329863244434,-5.00826702827736,-21.3883684697108,-34.2878853807162,-46.5631822698321,-66.7562060352681,-53.9420283294089,49.880785173262,30.6231323312011,-5.32727427974408,-0.853452704991545,-6.56169885407008,-17.9164459070365,-21.1267348009459,-32.8060873315256,-32.8640028047708,57.3610662524675,34.6336652591812,-7.83959254783311,-10.2624898946281,-13.3905952750051,-26.8591099379026,-38.8840124022787,58.4066232643368,49.2198191619824,36.4955593816488,27.7450464350004,-14.2921707591538,-23.7145014597263,-26.2133186697503,-38.4305721066625,-37.3991344342445,59.623221657715,37.5065336556667,-26.5661007602372,50.7558820471262,57.9590155328359,69.1939731437105,38.2863793175077,47.6086297836972,33.5658402149466,-30.0438718835173,-31.7124677784498,-27.6544750606497,-56.949979300327,-94.4631581405319,-55.5219796723102,-1.69904797448864,5.74632136279336,1.01818035429579,3.24698485719962,-0.970710314953079,2.26668347329652,9.08604959875282,6.54615256582271,8.51253469091573,-56.7705407999615,-1.4004069603328,6.42384470557809,16.1939799740886,-20.479683493807,-38.2576411700965,-8.93586389824348,-5.3713955468676,59.9441290772994,32.9055411210069,-13.773556745479,-48.3107484665465,-37.3388488349076,37.3248625771133,-19.1704234191144,20.4570844160842,-27.174265926332,-22.4771758882685,-19.2848622537472,-22.7654996315326,-15.4298958768843,-16.0975869349651,-17.2657033855401,-18.8167909068867,-12.4938880041519,-16.2367386685708,-22.225028543182,-21.8433409459302,-32.7308301022782,-25.6838996766555,-35.5276566977565,-28.7763717032149,-24.8590243201436,-30.4665424640597,-28.623169904468,-68.8161764537563,-57.3168158709823,-71.2253192668048,44.7189536353402,36.6578053690632,17.9876986050246,25.1467969451072,-17.9338710718037,-17.0694582505524,-13.1510617922928,-8.68187590981007,-15.3553352967693,-13.7129807846647,-12.8719317496193,-9.38332371860264,-10.3663266904134,-40.9473980548945,-62.9015375991145,-61.7819225492992,-54.8127077688219,-63.177166576459,-44.1317630694024,-69.0749571861585,-48.455527026522,-49.6264819772752,-47.0158576579474,-46.3647164133183,-37.4432496576328,-42.0081831096876,-42.9032897266362,-35.0263309108488,-45.9702345975821,-37.8019282200074,-71.2909670735219,-83.6227324824369,42.8907837366204,38.9450438563663,43.0220025817285,22.8497582745891,28.052205976297,26.1196428972066,27.1450949433264,32.455776671097,23.2732772365894,31.7230965271697,19.7875074535987,-5.15090610370974,-39.5970088622198,-45.7465957177062,-49.4803469636403,-46.0068598319274,-40.7617079733745,-55.5634328742268,-34.2726176989544,-65.743947947531,-36.3980649725804,-32.2574872750853,-40.4435705849379,-31.4074431094035,-30.0220793821545,-24.1228590529137,-26.3552420570028,-29.6929063425856,-23.925281387108,-30.9618279228472,-26.7237678305389,-34.7343320474771,-21.7565707313417,-25.5644723710693,-23.1843441384815,-18.4836507937478,-19.5678231983336,-24.8836853216403,-21.0863165954953,-22.1891658521028,-17.5096736671512,-20.2711226617837,-22.1020101450663,-17.8506794869329,-14.2955091557285,-15.7263843882271,-27.6654859937021,-23.8279406715517,-17.6245412555183,-19.2881119245673,-16.0395148295303,-16.6179944654046,-10.6051879294212,-21.0485317491054,-18.9990434182249,-12.6159118168555,-10.2792312512404,-12.8304003985952,-10.9812927629979,-7.05905511409281,-8.46998996075994,-6.17434163842171,-8.06931816411834,-7.96429874407909,-10.3237337545954,-7.71001485999117,-3.86341923941117,-58.3290101857333,-66.2415044174044,-53.1064214684451,-52.4963560988077,-47.5534165982431,-42.59115052026,-61.6608578285454,-51.7865249484175,-45.6163923521276,-45.4916997215721,-50.092943139428,-57.7431696786192,-51.2625513500126,-37.7920337384385,-40.7196682256511,-49.5978358021373,-41.2777140041363,-40.1040861933933,-54.4375457245463,-62.1750389140571,-45.1935587719396,-80.3160451553748,-50.7891130962155,-64.8295178519223,-65.4015525181553,-420.183963178303,-61.2379490045822,48.2299009557262,41.20833352331,37.3539284903564,52.9216284263406,60.406588177967,32.2154758720018,36.8736804105011,44.6299407457811,43.4447799756907,44.8962130531475,39.7036421886535,42.6200939356158,46.1046764488956,36.3089794200798,18.302937371428,23.8968820253259,13.6441085669953,23.6977570636492,-7.51061654969495,-4.35121768796999,-7.09516203897898,-5.28952666480759,-0.95620032539761,-3.22657896116987,-1.74605730635357,-2.97464292466784,-0.727467740036711,-4.47862746448746,3.36670461111024,1.11617760603059,1.19404581661802,2.92306136546491,1.92240293760052,1.34404963425972,6.06914311540314,0.341470982267171,2.25983541979087,-1.96331602682406,2.28096472996666,5.44598185722232,0.258706372360569,0.285408879287342,-0.54909708605687,-2.20449115440508,-1.14022858480459,-1.46685707465024,-3.98307264366352,-4.05591598806499,-58.8149305359834,-69.0656483048797,-31.5667581197352,-32.2587557396973,-35.5207150734263,-31.1153309544443,-35.1128747982139,-41.8050358445238,-28.0768452070106,-24.8193402652024,-28.8030833294159,-25.3152815900195,-29.5810630636788,-33.3924783035604,-22.1477319578295,-11.8139635563569,-14.4741465016984,-15.1750752464087,-13.2543538682544,-14.5395194706557,-12.479946807969,-17.0341423451041,-16.6474518608145,-19.1861985479365,-19.6602580148627,-17.1345311291021,-17.7922123513613,-13.9194145857106,-20.655992260347,-37.390380574359,-33.1070352691779,-67.2922113346425,-43.8999522374132,-52.7895723757291,-90.5468634742779,-64.4558251580734,-65.0228077620381,-59.0074743455775,-66.365146483436,-50.7191852289697,28.6410892601178,24.9970014681512,27.0622711801323,30.3424899298233,22.7356979893277,30.3837738687432,34.4570874246224,28.0173925749095,28.6283918156502,25.1037870580354,25.1385282303964,21.901196553621,17.6270807450063,50.3890945679088,55.1950845897276,39.4511088311944,28.5382197037061,18.5839342926387,13.3644416019733,16.5638582842126,-9.08821088169775,-5.42804374112005,-46.977256512686,-43.7093889531886,-53.1697511613814,-66.3945904188834,-40.6510661148475,-35.4363016049732,-37.7306247396792,-9.87454352665919,-9.21526210239944,-37.7903361193011,34.8813147273179,32.0798492914362,32.3470438727536,22.9338046784965,17.6865886491133,18.8013980906989,55.4518573832614,64.3787499214122,45.4497095007683,49.0106754056546,41.2345746291866,36.389582604072,35.6558930161475,39.4913000127455,44.4933705755183,40.5497813498959,35.6685539549165,37.0116228842277,30.0048144926832,33.0743850106105,30.6806948507859,17.186064789061,12.3382743269675,-38.0303449846632,-47.6339273357881,-49.5277605326231,-46.9661400754476,-56.1674409208572,-58.5936679945752,-63.5486840165822,-35.9386067914038,-43.2195903660209,34.5678356787898,24.5657276891743,28.2140235188014,21.208386674876,20.0978997183172,20.0087118306583,21.9699236613387,19.7470717749791,92.6160160390192,14.3775372100493,14.795182491372,-51.2716263758755,-45.4227688578576,-58.4034386791042,-41.9058722899818,-46.8197414964457,30.9041442264123,23.1606160788059,16.1643404078058,19.3538680360246,15.6206091827115,13.7119425550561,12.371413642074,-40.6409974642464,-39.8344845313968,-37.788018042922,-34.4481506047877,-27.3471922811162,-30.1925690999391,-26.2963602035618,-30.9188745789556,-27.7565650033759,-21.7660722805177,-24.6764557195113,-22.7149698214029,-24.0550301947189,-26.3123815606971,-48.7025722013296,24.5378285280624,30.2771206914624,26.8732402881294,10.7257537596714,10.1471800623012,-32.872885397131,-28.2113363917277,-22.6512686874629,-30.754159779925,27.6896020375923,27.3435234960418,23.4978008737349,19.6657955669383,19.9544978866788,21.3163421785015,22.0138039716183,25.6509743826299,9.90956043450092,13.342048728216,12.0647307154591,10.9620088574169,8.15039214329628,7.28293132173613,6.52673547195097,4.89116366054676,5.87455120973002,9.54116491151874,3.56391505919266,5.37470943652871,10.8153301811974,7.96015803912384,-23.598718973056,-29.5588812616805,-26.7573529504738,-33.7671650634903,-29.3504689373246,-29.0278478808991,-25.3661883198609,-23.3054639183129,-34.2137938659831,-32.1409742180822,-35.2459612409905,14.252297418066,20.285942998178,16.9898145027557,17.8514229704981,14.4071686271493,25.1688828690087,10.8948261493095,8.05139245618445,7.66483647364788,8.6001753455174,11.2304119859507,5.95385171866968,7.56542510931378,-17.3576156203512,-37.6974950546193,16.7347488365012,15.3557156458682,14.0866222574033,16.7722630039359,19.3502726233176,19.5083119259315,19.8429413674699,22.4386133094211,25.2756226433902,22.5077956490456,17.088129360583,15.3161096117263,14.0139233643902,16.9370347530842,19.6556099601973,17.4484642422215,15.6177684519061,15.0141886840984,12.2496740740204,11.8839226399564,10.1657896319206,7.64442880655321,8.05699319457309,4.93020475924515,-20.6753715904896,28.1799870092667,12.3925823145931,20.2885226880415,22.7294396154852,16.2860780468723,13.2206626784149,12.8956539356362,-20.057339916773,-17.5994982969616,25.8620931759193,29.2172895157712,11.7284085087773,7.78717731114311,9.36540657779817,10.0654668918436,9.25192564728544,9.85715883579943,13.6157285073483,21.1844576501879,-20.5392512384682,-17.2608429580817,-16.2332095832626,-18.5816817928304,-18.2084841439731,-16.3359778026895,-13.007082787246,-14.7280332454276,-20.5905000360105,-10.9361766992652,-15.6323461520494,-12.6365221394602,-8.22973694805715,-13.5176343100485,-10.1134580168916,-11.9816857609066,-14.5804876185433,-6.76226816354023,-11.9688970269916,-9.03820469035287,-15.947733122561,-8.94689317991119,-15.7766071916619,-13.5965134587289,-20.4336378444734,-10.5486484686739,-18.2630681821559,-21.0343203631764,-13.4654289660502,-11.4749260344178,-8.56259511101199,-20.0801534526498,27.9273072281548,32.321815588498,32.5793249407143,11.5533873642095,20.98589962484,-23.286106241834,-23.915815279884,-19.249279532164,-16.6543735643723,-13.9008892158654,-14.2227162711793,-15.1082384930971,-9.48247870859049,-13.4169995862796,-11.8234676227826,-11.9749989284842,-10.7814855739972,-10.4863207475437,-11.9798764619146,-9.48775370009832,-6.53859449222637,-7.0120638618064,-12.6043316580307,-6.65928403052558,-17.8631772753971,13.8785412596543,13.02793388208,12.2546635595898,15.3213580311878,10.4758881152102,12.8721474216425,10.6859843576329,11.2389568860589,13.6926209147893,6.42223501252688,8.70709473296776,6.84535891607963,8.13319911373686,8.57668043013733,6.78703655324942,25.9089280957581,18.8330659783689,-28.2450168976712,-23.3842634545479,-21.169511046865,-26.3894622882044,-14.9643395853704,-10.6651028357523,-6.37963079527708,-17.1960684676633,-12.045526604628,-7.3203176257294,-14.4545359807559,-10.0881798539143,-17.1238916742316,-15.5987303915459,-8.49824278525561,-9.28385979569411,-16.3364735473907,-19.1078187629836,-8.30531411496311,-10.6880748796757,-22.0565444886966,-6.04807369136643,-13.1944666360965,-19.2804786164626,-21.8922225468562,-5.16244240590084,11.1844999861361,9.1759436724593,7.04764233010588,3.17979953737206,5.41914428622074,-2.06292329635158,23.3241459829141,26.1527148778979,25.8304182559011,31.6294938012593,29.9115464961323,28.3501236452409,29.5600887223675,30.7179009940256,38.1130905144194,35.3552069568179,38.4199028215328,33.7257214951911,40.6002855846388,34.7842201575711,35.352384236171,37.0170324892994,40.6050109264369,32.4852731361096,30.6992619978951,23.230356793604,25.6688352402928,18.0726912493208,17.2391232510784,-30.2082395556137,-33.3837605734352,-35.051542035909,-33.3685060565611,-7.44196914038553,-4.2424796786179,-8.92417734234849,-5.33047046377363,-3.23228278448563,-7.74404109904703,-5.46792764590356,-2.2628369110485,-3.34248592169794,-1.13482589740692,-4.95675385473797,-18.0488509155972,-19.4109577371897,-29.0400583250761,-22.4194728146793,-6.45773342156305,-4.29651652241445,-3.14575322524246,-1.33519446937018,-3.00161313756992,-1.66981719211336,-3.553213375409,3.5038432569111,5.53888446797334,4.27254387856996,1.23799205176185,6.57225356112646,4.1032181182245,-4.63284584388565,28.6209252247224,26.5640733229071,38.0459796354448,18.9837284355471,21.9352388241354,15.8903700519831,20.1928316309228,21.1061065267326,19.526400854945,16.8942495939154,16.5991862254354,13.1094921675639,14.7013259968149,11.9332794234842,11.9973409659525,14.0512803204531,-30.8751005363121,-4.74412312877734,-10.2143777759824,-1.79873741475298,-25.1559213619462,-23.0185096871714,-28.8605607245612,-26.3296641415842,-25.8576651788517,-25.9386088988953,-5.01701937878565,-3.20703069657836,-0.936197426798319,5.83130662402977,4.23970033440333,5.78134875711486,1.97223966812134,3.42134749376836,3.10759479607678,0.0595539728072335,1.34769385519579,-1.05390702294465,2.10954454909196,-3.32857571752761,35.724809474353,16.3031855797026,-28.4847494229868,-2.23462081215591,7.42683898853753,0,-0.351449790946288,-2.13276397995164,1.68215699519466,2.09779474119789,0.899902760999786,-3.95710392879628,2.5727659667277,0.278910786939076,38.2075377680326,50.6037875527519,42.8650636448567,52.476007089061,40.8775103254418,50.9551965402819,56.0658596850016,50.7596583421642,46.6558071698324,53.7031883650745,41.6209432817267,31.2260104220195,-27.8720459819059,9.73915070444898,8.55995097013607,8.63992164656357,8.62077450810373,10.8541380336032,4.08290529839599,14.1596733698642,6.37022414579675,11.6721707683112,3.30947956325506,10.5200054517161,8.47926894602645,4.09077044620957,1.79772506292134,5.3567255762002,4.30029327944632,6.63511015147998,6.65548095124411,4.76844098169018,-2.44772475046642,1.94279912440947,0.0458220838785718,-0.84154623069178,2.04706569369706,-2.89772687787122,-6.46512651171669,-2.23922118836152,-3.76244291622202,-5.77045517713989,-5.84112022845376,-7.87502151574114,67.7708848852428,65.4791733761291,68.2323763685512,30.2558713154014,33.9887361040032,34.3861188695573,-24.129247524626,-36.8186750292391,10.5397153334434,-0.183798851748272,1.18498636521512,-0.000188412432650914,2.22705644938289,4.45268218616722,3.76733999507764,6.27804329519945,1.70023792827845,2.57437616670371,0.923584876455768,-5.41187774115199,-7.524160173702,-4.66865159583782,-8.2964371862025,-9.58177251824537,-12.0550409786088,50.1141876749096,-20.2696424539568,-32.2821482491103,6.78703943192442,6.2572630607353,-11.3034921678659,-11.2615499203256,-24.0038380514802,-32.2581279151696,-35.1994603743844,-31.6411082403403,-26.7050052170662,-42.5364801777628,-23.6897459259028,-26.6798720410099,-38.7536784277781,-36.4996840357311,-20.4532151096092,-45.1703612952285,-41.0570307332087,-18.806756014924,-20.2024786338479,-15.9232659602842,-23.0949503504793,-38.7889513815749,3.42194623600982,11.2208763324937,-29.1774938752591,-33.9350814720874,-24.2848933816499,-34.5962580248776,-39.2572962231983,-33.0169285124509,-43.1235998451815,-32.3763693137277,-28.7641076106014,-56.4569088804879,-48.521904571816,-55.0370017919115,-44.4732883384295,-0.251364283297672,9.06407453854599,4.5714116938914,-32.9265807855124,-27.1032464351874,-75.891148103465,-60.1347786233467,1.28765389904149,2.20083171040871,-0.955341747261053,4.66895742544265,-1.23180560641128,-0.360181078864138,2.1028129821316,-3.77149262063795,2.28806904844394,2.82689934698175,7.45862254160817,0.306170257968324,4.99973201953095,-2.11175304072334,5.11063596755045,-4.15872184480124,0.109283622719546,4.30805795128787,1.80151676623843,-1.93171865313766,-4.0565397901081,-2.6181829855454,-6.26103654082193,10.4938108801929,15.1295883946603,12.9401157534684,15.1804169006654,12.6855713179095,16.2925873487543,13.9853375442512,13.4978724097546,11.8342259777395,14.8704778068138,19.4250145828264,16.6651334364588,18.5522788002391,15.8240290555966,10.534829910729,13.44995151591,12.4173619406331,8.89671706744423,14.7237277446382,17.943143081677,15.7539266387424,13.5807920346348,-22.7796571969133,-34.5263803837355,-50.7582083153192,-63.0972661975376,-50.1542853350763,-41.9040996610011,-52.9274597097689,-40.9564819261898,-44.9086378290808,-44.2203685768105,-45.8898188421969,-54.9667521156055,3.3386304889739,-6.39185963966951,-8.07955016380394,13.2107115702411,16.8189034355062,8.08534412980899,6.70022850025479,8.32917471348856,-22.9870201877359,-32.0274386852334,-27.3914690401888,-36.9896350883358,-27.4740742383031,-25.0587970164907,-35.4253195131882,-58.8626593196685,3.50810348271651,-6.47577531084993,-8.88454848837056,-5.52542092863944,20.0964210457642,21.056546717052,-18.4242399799662,-24.1331440656728,8.5467582892915,-2.08036259875638,-8.42083795003375,-5.324960068286,-12.9331422163915,-11.2481770959703,-11.0756759704914,-13.7067664855337,-15.1519962037308,-14.3414332651122,-6.84807458961017,18.8866014936442,25.0576315018127,18.2595337035122,-20.686567220519,-23.5770448006169,6.08741051443855,8.61804846607501,6.19015561370711,9.870258642801,7.63828274285832,7.27173353047961,11.9107283830682,8.99443381578222,9.76086619193599,1.60030045604835,4.3651384127586,0.185419274587241,0.625121825834554,1.34090878075408,-2.01712865639417,-6.928856991253,-5.24197182049148,-5.73050988594553,-5.9758573937914,-9.84931687533479,-17.420958136614,-16.8347168611648,22.4652544278405,23.2626101425775,23.3251224959885,18.1589682473389,15.8649238030672,21.7797213216075,16.8066914375352,20.9103633465969,19.062285001522,21.9674951479979,25.0715486159324,18.4738860097703,26.0941127353865,28.3947313042287,23.2579675602975,24.8660063984595,26.1406777643027,23.3160954977202,24.9743710103468,28.8947753989935,34.6016232185492,31.8184280388336,32.7495031945522,10.4139887794794,6.92717559664974,-14.8142160076099,-10.6709433986656,28.8992134219642,21.6162283612083,25.067842726672,19.5483688987059,21.1776748111279,39.2243982548752,26.7345804151673,7.47195763258761,-12.6164247581785,-13.0419274737401,-18.3025026493496,-15.0005224252565,-22.5396208016419,-16.5052222793894,-17.4132613272278,-24.2335227869068,-16.9364942809622,-10.1827379413032,-7.81747863721898,26.1536428532933,28.498795006943,27.2630749740652,31.9918617460073,19.52041226032,29.9822058269303,33.3962459826604,34.106349494939,35.8541750437587,44.0158464940993,42.1200175529363,44.6369444430772,30.7169280004809,40.3934848454205,-12.6860891212564,-9.33612865168422,31.4935282597257,33.888757275868,29.519915762935,27.74074693363,21.7583874129671,25.4580618252319,20.2558284860756,30.6070254745322,29.0682967225811,17.7406190161331,19.8622188311237,17.2436073630757,31.2100651036391,16.5809662091752,13.1036338026203,60.5259982345999,38.835823973886,46.8891339172823,40.3076353922016,29.9116032684809,38.8447298584239,39.5126780131026,11.9340007048627,41.4601883314063,43.3145851940075,37.7228947432576,49.6658088574246,34.7273411979325,38.0663055284539,50.2181044024542,44.5446479051254,44.2675483885626,47.9696900423134,37.4943818462514,42.5879164156663,47.6951641845627,51.1446446559397,49.4201705018504,57.5461915237962,68.7361739681324,68.2367705629774,53.9923631471472,55.2233386559811,49.6719733615365,59.3087226469655,40.5233683324705,49.8788657798855,55.0660879912327,362.72306449278,371.38554580318,341.836793005808,353.596888295643,346.500898689982,300.500212854278,336.414503143387,252.411667979159,269.006828290848,198.413398006676,241.334840619642,129.423000951087,118.569865211234,58.5372407650393,97.0449249246411,-12.7273150590142,-88.4353481900664,-160.752034449344,-221.17852925893,-276.281922135788,-276.86430359118,-323.477400111126,-254.515050977406,-320.53002909542,-300.39465081007,-322.561616110247,-356.797335344331,-370.032247982949,74.8274228179323,56.4190128597898,71.0657695645702,72.920683160389,70.0830784026079,54.2720692203899,75.9792331700698,57.410370042654,61.3429478665359,51.072574867231,47.8490111987394,49.757136102882,50.469070448258,51.1418252837436,55.5708956220007,44.7527048170501,57.6458129185261,63.8636423831166,44.3150848782063,43.7671522804273,46.4234209141091,42.1375955469964,39.9308476117426,23.3982478465263,58.8298421720321,16.7088395892153,27.8446392907416,-3.4349039492448,-6.75860804168791,-51.4851150765026,-355.186831184348,0.75397041490097,-5.49432239127624,7.6710786425076,3.94676391593687,13.0957183683287,15.7011976643562,13.6502948695777,24.635781993029,12.3434393203017,11.0689180310538,8.47268634819688,27.0050408879447,-4.7164400544433,-0.319816608556298,-2.82964442627632,-3.12198016114264,-13.0536604761574,-8.47970061882387,-5.26214918493627,-5.35227997054115,-7.66340532402052,-10.6240072034908,-2.26219530932847,-6.79418816983772,-10.2390380809784,-3.84194135370109,1.25381533164573,-1.81689470302439,-1.17600666151312,-1.46944918756169,0.485472597620851,2.08733833725419,3.68197943854614,2.86917945672343,4.04516425949687,4.50867642535971,0.287220403279489,5.54238399108511,5.53168557106491,9.75205361714104,12.1689044336066,9.70843525506241,8.57440209608694,7.11023625864281,-10.3432986573521,-26.5815799347383,-51.7631726285431,-75.7642064273666,63.0180090655057,44.034157480699,-3.10446498319365,-14.7719372895533,-49.0104072214988,-62.092015810997,-60.8033539756668,-81.1595807418782,-71.7622248738267,-54.2316545133724,33.8810463269472,-67.992381885085,-63.0088186918459,-90.3370454830259,23.930969835634,-25.6640210788302,-38.1187613456778,-41.5678241581935,-39.2896937731257,-40.1540720498167,-46.0379500314404,-50.644317510725,-53.1880042321454,4.30456351622682,3.31981635295041,5.16658868184937,2.76204135872425,1.42141540540928,17.0257493950644,-9.60498645111661,10.4689477428554,-14.0240502555889,35.5607128850266,-6.73871680709239,5.7601901951193,23.0237691444524,24.8390512553358,0.131209609510371,-0.941793945805286,0.683817796593895,45.3620400650409,46.322884154167,64.688052065293,14.7289073162032,8.85398753291429,81.7077533450152,0.913616047514773,-48.1184895272517,-49.5274532391697,-47.0459838425408,-57.9851004561464,-17.199132571669,-2.29692423974544,-42.7085722308771,-53.5705364190746,-38.0501263649045,-35.0937974021077,-38.5760352856458,-32.803207762214,-32.1109000938384,-34.3245169560777,-29.5113314667305,5.89553400572249,11.1700224547887,10.8307586981213,4.40753519581216,0.657987425577152,-7.96302537640509,-3.52358349193289,-3.72665352389184,23.8888323755113,-8.73751819161792,-9.03857385204878,-12.7507027673176,-14.3444642272413,-9.56523189988041,-5.8613654064309,31.5760463868208,13.7308057944603,27.9179208110904,18.4648772115536,47.5236962919762,43.6231676436202,82.8391815904258,59.2477916436576,72.8105336418403,59.2746340361648,69.6793736664065,88.103922219858,65.8237901803829,55.5800014403279,73.7113622281247,52.0541983771819,72.3705991264429,92.0587096899916,69.8900535755406,55.2191013749626,58.3277198091019,56.2686927765998,67.5685014620478,60.073484830846,62.9546227068789,41.6626932213222,37.6243043402344,47.0891637883446,40.3659087526587,15.8963585720812,-7.13718546924389,41.4209172579992,-0.41619117686113,49.1449819028273,51.0778680424742,-34.1104386569096],"Archive1206_field3":[30.6869821737424,31.9880627794705,28.1706916215352,31.3077628556018,27.9967347751499,23.1198217108228,25.4422604524986,28.7887010919662,27.8611126776701,24.1255835051675,24.9442711730127,26.5484680474666,27.8104689822811,33.9353151053855,25.3335793378984,26.3596592863126,29.4669524118254,23.2847008629844,24.7429068501405,27.7125152571575,28.9310690567155,24.7667656669629,24.82038053073,26.6142696928634,27.7936433382103,33.9346632978679,25.3332636353855,26.3497474157684,29.4913872131387,23.3234968014753,24.8097451512588,27.6808559629042,28.372757810461,25.9988554607475,20.7683687699304,21.338610776545,25.3503567657396,25.9023985415668,28.2362247362263,26.6002580052792,22.7400730436741,25.4277752988514,29.0554437642265,28.7911861667702,28.7863312090199,29.1386402107508,24.9306866269334,24.80106471956,23.4009035236889,23.5295530975618,29.7124294902085,28.0610516333447,22.4452930052795,21.2155897563648,26.1753655707949,27.0928820190698,32.4961630354949,28.317704122672,22.5807602751364,25.3162659690695,27.6615601813746,31.394590882843,30.3323259166935,24.4532631520345,24.8207627231499,29.679125725573,27.1671227452028,32.1396711067281,26.5965026159001,21.4717488044698,28.7636872316293,31.2438995390397,25.8977578817493,21.5002385116123,26.0890113407687,29.271373650949,28.4249895068087,25.6792228157057,24.1003409640692,24.2294841147903,25.3740170179491,28.9925469749815,28.085575378839,23.0759743481901,25.1890967858446,28.3383304468166,30.5500090522967,24.9665096072224,21.1204401809691,25.9520343331019,29.2128018118581,28.9704605437263,20.0014702061042,18.7541765359491,26.96064837029,27.9087100220569,30.5167781349889,25.8049298502074,21.9496704338079,25.564273841988,29.1773970850936,27.2746862701137,32.9354526877339,27.2881027627051,21.6167505737208,29.628832814612,28.7309388780855,27.3231150143273,24.0000618310481,25.1939336436503,30.077829032839,27.0290660216855,24.1629650154654,23.185124366212,25.2947621456849,29.0634094532641,28.4091729655363,26.3978583365386,25.9038296435136,28.919859347179,25.0325038120051,21.4895756607157,31.2770807383345,37.2095106772315,17.8002274797895,22.1130793179898,24.4266532564089,22.9444496531014,24.5498060109721,27.5807888567736,28.6236658199861,26.1365405767534,21.0924836512173,21.9560666439945,23.4284305718319,25.1864250376801,30.087620263108,24.8410696599077,24.6511052953591,26.5943461550247,27.8165923901972,33.8728687516722,25.6104756029099,25.6588436836523,33.8731990703276,28.562676660531,26.9123439523551,34.0733062498832,25.5491833556509,25.614146468208,33.9682496518919,28.505614102504,25.8689303230272,32.0739868637043,32.9769770989109,35.7628354331467,259.981188592945,249.482549909332,41.2692693780518,264.520589154402,248.513803472956,226.009055725607,220.450817909031,25.9156282121864,264.681656346948,38.0033987759254,293.155523102965,41.4433900926449,286.202582403436,269.646921709154,252.092719162922,256.929364510372,54.1799395128161,268.575421358789,273.47457217018,314.59666747175,46.2574764641102,264.635077815844,273.338506334582,266.156930841116,239.594154991003,265.863559948942,356.892397687802,46.3440595237279,345.492392044508,262.490151771695,315.950733832387,256.616499578694,54.48118552865,264.528432345394,289.629312451847,341.828442976955,344.163764609346,46.8312561212219,239.057570621808,237.097663116138,265.871082181321,239.611949042405,341.885780311558,265.730181766173,296.081247221591,40.0043800144005,335.04634771579,267.153666437785,253.627515025258,253.178310445694,51.8199025423163,265.124029012837,289.639082655737,344.165426236362,46.2786943983526,270.288508425019,256.122821062624,41.9062885655372,287.04929902814,332.559299448857,265.352158566568,294.766710488535,25.6856443243045,263.439952364682,233.193527760063,305.732772167785,50.8474990337948,308.030888826612,331.946560146513,44.7468854017007,321.603618549086,264.896728205858,201.610260774886,304.917525775133,240.093108054256,337.995653965128,282.261602829147,323.080282745276,37.3691460938521,271.508583232683,240.909509756463,265.620636336882,240.440075394989,337.991007676039,285.261932404358,344.145475462726,289.80250989275,45.7989042751107,322.142389232464,265.291384586135,322.676814919354,223.888648840108,41.2391171555528,263.376650374849,289.735121022892,344.173219590686,48.028723405073,242.025748799634,262.109716501268,244.11890329873,54.356922822635,269.621743997474,273.771328529691,299.773571178964,41.8553465590181,305.159142878738,263.473929787481,247.545296585006,236.094621055831,251.482595782846,276.327539029052,266.29793159245,44.4642491848462,264.997589862324,310.613819396761,270.350682151108,277.000848631057,45.9182161239481,286.511641148309,27.5876566822173,30.7590814098832,46.9596729956233,32.6305071094463,20.902012717334,26.0694436022527,25.843602429903,31.007493909896,24.2707149406378,71.7661492513809,320.033807224347,16.0032973515108,25.9648265248339,27.3060003282694,45.9735655290179,26.5761945964045,71.7259335604022,320.049941914473,15.9765193868184,24.5632114073656,26.5811844118847,18.9872793558164,33.2311921263565,65.2558022494807,314.902046808754,40.1285791653458,37.6379006443481,64.2776336194399,320.05810076647,17.1019216594371,30.2810121424591,27.6843312027774,71.8841479785664,319.997614131417,15.9231069189137,32.5840078026265,24.9238336003688,27.7969614767553,47.339275199801,22.1707616823948,33.8305169969104,26.6330625031938,24.678622542839,31.8111191001241,68.2929081857102,55.8695247665345,47.8266613671268,55.9454289689525,48.0092928105819,71.2072044248872,44.2001895193264,56.3011445983915,48.2952908904471,55.766473008321,47.7668412398256,48.9513198381105,43.7562347723843,51.3618898786112,53.6920618490475,51.2999103573216,53.1141977946122,65.2457029087945,51.0086171652254,50.241214720681,54.7121069077996,53.1499019830186,41.5217402646716,46.1679236151223,46.2116465258043,62.1043339558691,60.494268031318,53.6035762006379,59.124552868266,45.9639451232617,57.1381028812425,45.5669502563427,53.2811599323662,53.3082840150346,53.1644121530275,43.4744586607698,51.185643418942,54.4801544631648,53.1351317066926,53.4629302592766,47.7589779610004,52.7851048053525,47.7669801091288,46.3489046481787,55.8327915953414,49.8377183216565,56.0172614248485,47.2921748549843,51.5349624787737,47.6334749523076,41.8002531118648,45.0414590208394,50.9060552472127,60.057801039331,50.0993904164043,61.0308716775227,44.8886848617676,44.4547969429362,52.0845436117389,40.006455287681,45.369983498824,76.2864417278342,45.0001661254756,71.1300853504717,59.7928448325481,53.8778486642869,45.1393089284648,47.3354506153337,50.0347143862038,54.6127626909787,50.9566204581138,40.3549578056433,321.985268026632,2.97166827613143,246.900740470707,352.237534520465,62.9773028311452,62.4410481520508,44.3518898335703,39.9773256486307,59.9862898653725,60.2856766825232,36.7475293939057,59.3323201480134,41.5405147713895,39.7207286409599,36.8926562469301,35.5770694477094,45.4508033417282,41.9311674724955,41.3258013407157,37.8807899586258,40.6353397711686,37.2160650534272,29.4942530894019,33.2806249552917,29.093689685396,33.0487765048772,32.5301260567265,34.8665888864891,42.9452466988019,33.341729431572,42.3277234706021,38.1552956046245,34.9792774205393,37.2778308362965,33.0822468119853,54.8294547278818,46.2680778930204,57.8649724107613,45.7362894935492,35.1663832028189,40.4487029435593,41.2827549496382,46.5950555685137,52.4806981790284,32.266927795498,30.1115514971547,29.893861904633,24.8255084933851,26.9133508136655,26.10120130484,24.3352969210592,46.0201552745031,50.3988951310373,48.9941343953604,44.0094001358517,50.371287776661,35.2471902125942,56.195312800527,39.0049836408497,39.5907093529642,37.3867884487398,36.8713270132463,29.7514750607008,33.4099546098302,34.1505478604657,27.9830082588122,36.895108876704,30.3075616990069,56.7911785660295,69.067752170398,47.8799449296922,39.143574522591,41.0454720377358,45.4104915892738,41.4717343528522,34.3970218895411,37.1198776355625,38.7167411101827,34.01897868662,40.5041471738273,37.5119168580547,20.5885978679424,47.1728381978222,46.4181510669706,56.3305403204903,48.8040901669367,42.8711594545286,56.9147087814367,34.8271050949549,71.3416766173006,37.9719713607561,35.5825427354888,40.0780841297835,36.7292356918963,32.1261857020905,27.0115207131605,29.4502128951821,29.2587724056978,29.5867777642517,31.2486546372264,28.0489020918236,33.1418135552085,22.1627872013565,25.6671057074425,24.6974344227485,22.6425522442745,21.7744224955583,22.7982274510537,24.2454495240521,26.8012615822186,25.5124600136094,26.8131026418689,30.4477103386283,23.7679654434413,22.4994234725993,21.3384882212981,25.980396004807,22.9845869681611,18.1753790535944,29.7124751216882,26.2862018243926,19.6430872363202,17.0080806502399,20.0592883863052,19.9516168926157,19.2456225913359,20.2289428420368,17.0921434192803,19.3878991559712,17.639404999271,17.4194130779789,14.3101990778978,15.2003392075386,12.1782719566504,15.0158810620208,13.4879443704912,10.5925081751614,46.3361913916033,52.4506517749875,42.1846463422457,41.9272358579815,37.9563953152684,33.9970220933647,49.3055056682664,41.7249256707779,37.617840214411,36.8415550278871,40.8810976490151,48.0368555055375,42.4217369416357,30.920660666457,32.8307434311655,42.4309064533333,33.7597758361599,33.7146001609796,45.8411085672642,52.533398703248,38.321267794029,64.0589142174398,41.6438277719004,52.7523654916611,50.5178824873647,351.265896986036,49.3159487313481,50.3700421190894,44.8807770983907,42.2056211238858,56.999783272765,69.9740917981445,36.2572010612073,44.3894502681491,56.209801412083,42.8667719537194,41.1997176395233,34.6124752796751,37.6788628067414,39.727795551303,33.229872417139,48.0689002128024,37.1253583747484,31.2569457600061,42.8100831772074,22.8861925215389,25.4140233289155,19.6574903257517,23.4533900870582,23.0313494702217,22.3193538128841,17.9106473522246,19.6798576941995,19.9078027252109,18.0756315351938,21.9467334710723,21.5648211640923,25.7651403520872,17.0998337211199,24.2294777763124,19.295426320945,27.2545187376452,17.1845276136984,13.9550678308282,13.8085976088957,16.0459455809183,15.9917043546172,14.338795545045,10.4781826322445,12.5537053970018,11.1284431005981,15.8306743188132,8.29947591972941,12.6360922954892,14.4201979015507,57.4498273425179,66.3372430277241,29.8244575818513,28.0500597815216,31.7087297053406,28.0898244804397,32.0238029694139,38.1556390413141,24.9302864864815,21.1765010921183,24.1954295842593,22.0802386715342,25.3087115827303,27.9726183613484,19.8129912976575,22.569532197372,18.9066885439274,17.4405344140239,13.5546052930163,15.3973124011044,15.0275586907087,15.5514686111211,16.3245424175541,17.9778065552051,17.3725277884804,14.3580543049046,15.4572608587986,12.576362299494,17.0983874292707,29.7436779400699,26.4076782891654,56.0504043590352,36.6603813311301,43.9831090593651,76.0450317804714,53.4262521622823,55.1069222444072,48.1078329548916,57.939673941836,41.3582178073524,34.9155308936233,28.0224363853451,31.0902740662265,31.1856901438511,28.4706323326455,33.0321521855601,36.2610117203681,29.5688272575604,28.1621162400987,26.0482237896064,31.1271130950324,30.1715622485074,25.6366498881363,44.147016645743,45.7123832670353,36.679057713405,59.1824190389279,43.3565585344684,41.2482876375794,34.759501057659,21.4415141499933,16.2729219557437,45.8045422482678,40.8738799719381,49.585963766603,60.3856080308152,34.9851501763686,30.9246157219111,31.344039220577,13.1785698863132,10.7116605510939,31.0189209052664,34.897551040151,31.2349521576046,30.1206853883306,21.8911989574648,28.9396463769961,21.8751364081195,46.6745617199349,54.84226142311,37.7105717040608,41.2367084644816,35.1275396959062,29.9967340401245,30.382037011962,32.919582940767,35.8812412826901,33.085113513494,28.5787620527861,29.9492148120639,24.4481998581342,26.9348574755278,25.6739455424168,32.2427669630088,33.3163684911894,36.4888409887632,42.6282407755877,46.9846988414861,42.7673759083791,50.6455427482334,51.5663709094259,57.4134460762339,30.5207454924233,35.1246693263607,30.5746982562082,24.2588247092545,26.2911892911402,22.1865721014697,32.2522823561158,29.3683516432531,24.252861767599,24.5774896788578,78.4484205417993,27.7381127342204,36.3810081401553,44.9295596796235,39.9486050812781,49.6418822823018,33.7705110738712,39.3012440344038,26.8593514945256,27.5840278225029,22.0257894008859,26.0767126635115,25.9206034601137,22.3230807491864,24.200190130339,36.0323797799114,31.8087647067706,30.0792333067458,27.4003910252727,21.7623682536894,23.970859526675,21.0773887169062,24.7783655305278,22.0727571867525,17.2857457390877,19.5908676278539,18.262867391318,19.1441791342208,21.2060210107795,40.4262503117758,21.2665526739186,27.200972895717,23.9883319407376,16.7666624438647,25.7945259596708,26.1929386874794,22.5360941005264,19.4466715842133,25.2795248200733,23.7338788772506,22.7117999114439,21.2666588367168,17.4759843496066,18.7507782832089,18.7706520865328,18.4449633795437,23.822023633344,19.6899792755811,20.0687923075339,26.9646726389893,30.2589626118019,26.9031259427818,23.4266183112569,30.2347678562159,23.8269016489534,21.1826907890123,23.4082239538659,19.6661113140435,18.2243259979216,21.464959477053,20.7598814113337,19.3795464552236,23.9704067017046,22.1099172753568,27.2762128306802,25.6537636250349,24.5453489408722,21.5019192258143,20.9918679105617,29.0967668021954,27.0784774537696,29.0485093234226,14.5664122903486,20.0753336710777,17.1874098664698,19.2120899768267,16.2290507326109,20.2084648540304,19.1724808418088,16.1473881196336,12.4695594091476,14.578845305101,15.089869187639,13.5506910852433,18.0255996227035,14.4931178523801,30.4312749771076,15.7588027790355,12.9983319943292,13.1453010749166,14.8167430342486,16.4270321793546,15.6645264332522,16.2531992339661,18.1852563397577,20.668297309001,17.954981379829,14.0101459696628,12.1495996239492,11.4492191182075,13.5449954600918,15.639146627082,13.8330598829817,12.619327003167,19.1550485958848,14.1290297503425,12.3564150744371,13.4099793215749,9.74377121039681,11.4055061639807,9.96798923335204,17.2155030986959,22.4138901209476,10.7545216829878,16.1269672854634,18.0440083467229,18.7122436938203,16.6490502863002,18.1116635636485,16.2862034427581,16.2922246149777,20.57506321988,23.329828518355,11.193856136356,7.73135392417611,9.92176202677971,9.41422810378864,7.57449887778791,11.4676375650078,11.8851581980948,17.5150304336811,16.3592029719291,13.7565588892392,12.9628894940016,14.7322118035217,14.5265268467113,13.274263441073,10.6936613162695,12.4343914623537,16.5596548815397,10.5206549485956,13.8752090134816,11.0529443286937,7.22849393904698,12.3895077564286,9.04507164355297,13.2374253333614,14.1761837175896,8.01301515531429,12.1943030204279,10.2434196032819,17.4964636489307,8.89175567130641,15.9032632716704,14.8438299274557,20.2288373872967,15.1030829759652,17.7314812316045,19.3162787669644,16.72832516875,14.3614513786882,11.8912554458251,17.6801835815256,22.5408695316095,25.9479044139362,25.8947673798207,9.17575870082678,16.8462903125241,18.6369189731274,19.4413913120162,15.8431053204538,13.5033076083379,11.691023354968,11.4310044592413,11.9709711474572,7.75312858596352,10.706231166102,9.37457784909883,9.76763262864271,8.62791862911049,9.66581320616957,10.3459671710013,8.22880831192295,6.85880735937814,6.22957859832002,19.9795706565601,9.53287518813318,15.4657716389071,11.0642241921766,10.3061671972097,9.9583837811551,12.2079437106293,8.42956166550857,10.3996372444431,9.80335288999879,9.53117107395204,11.5789941888481,5.90939224437157,7.41858499757953,5.39489705329372,6.56800171359986,6.79535873699915,5.63844110295027,20.7837272248207,15.4203411874989,22.9823214735946,19.4288890557463,18.0390194243088,21.853122791132,12.833648848009,8.86996132825944,5.0204828060905,21.034071852318,17.3432777584794,16.089304483318,19.6430373448237,17.4320565352041,25.0156757540259,18.8141833528245,15.3119669169634,21.2920856899186,22.3314527526112,20.6459763805177,13.2426976763113,20.3557045488589,26.7193007153771,11.1350823317361,23.5237331975991,24.2976725834606,24.187087091284,13.9600523883328,9.45849494272446,8.06936693460727,6.46274400445767,3.87332570508494,6.51190821858747,6.19388287864559,18.9447687084836,21.7967460356863,21.1103450698607,25.4813773900127,24.527932635897,22.8613788514995,23.5964657089125,24.3983871419317,30.3303018992575,28.1535232749001,30.5301584112031,26.9164622506654,32.8516484844718,28.0253210807945,29.3078857512894,30.2866117032345,33.4304031210752,26.6227146600761,25.9938784792522,18.5468060247194,20.4220263380254,14.4606136300954,15.535024424868,24.2399230959225,26.7866458869035,28.3526634487751,27.4252258570319,5.98111908878434,3.5969761238219,7.05010995655488,4.26030296052012,2.55273776266353,6.32111670414544,4.73909032183126,3.59763785651946,3.2985899221224,1.26225354513098,5.63370071448383,18.9693797173877,22.2227547597837,30.6441688901702,22.8623782032172,13.1992047505465,11.4227583974242,8.63113313749168,13.2317166708453,13.1490160550584,10.1636767530003,16.0058391736461,2.82435745225091,5.48902096015502,3.81035870965242,5.79722665743475,7.90874989457476,7.41069449626933,7.40979433896422,24.0337865974568,23.2935502664519,33.4275446797117,16.1495764673064,19.0912484174022,13.8429084093359,17.6032681249895,19.6166710452489,18.0313020393025,17.733387742324,16.131242805186,11.9522391322577,13.8311362983621,13.8638816082516,12.3110482723788,14.4367384494749,25.3109181260963,5.06254579654802,8.10664672382359,1.41799675074799,27.8537076774151,21.9802681759706,27.3143632326356,24.1937976873127,25.0386899500676,26.7276378544733,9.69668080976766,10.1872654424325,8.05763552736969,4.63523766530139,3.35952836141559,4.96317992207168,1.70657010489796,3.51709243514965,5.2662501357462,3.30624432380388,4.44496010889019,5.36932686679638,8.75237090067597,5.61125992682576,30.4685411532104,13.5323674214143,34.4978753219571,7.48688192291628,10.3794750391373,0,1.61100469965423,3.64111118714432,2.32236362283207,5.75302201756262,2.70853844653839,6.15092353795533,7.53879236688554,6.92993860834786,32.2154819481471,42.5894568457533,35.8671775600232,43.0298580643899,35.2733005061507,42.7706346025848,46.9300697357843,45.0582584559638,40.6220382151719,45.6496857226524,37.2394552568969,28.1363497965963,31.9461931846757,11.6376707314598,14.3090660851606,9.49383978394963,12.4803846922382,14.4078551230085,11.2816168142517,16.9369748048991,11.5453656603135,17.7715815656643,8.41986343129403,15.950918982442,16.6878529445629,9.99228984552091,9.92242291358645,9.05097788622132,6.86960040396439,8.60181756941384,7.33097834708613,5.46618487478017,2.6732775657023,1.58387202153441,6.18033004329058,4.47860913553511,7.07009654775029,5.0134406022251,8.85981188182192,6.93505207297703,8.94493420057526,10.134899862424,11.8059978368151,10.5758906692709,58.1439088468729,54.1490502383522,60.0333227052469,26.2143743168342,30.1346028586357,31.9373748285361,29.9484512585744,39.9618144316368,10.6661748951019,9.3648511934203,8.37514999164736,11.1216771740833,11.9457208207602,14.9960217844602,13.4023016680835,13.3813852972846,14.3896288332509,4.13235587538352,4.29010716478826,6.99313724389806,8.6281253386822,7.87246071637735,8.09702833295938,9.83334672680059,11.4053037893028,44.0750664189178,27.3132619896491,35.4748878230698,15.3793846008016,17.8843332458926,11.7972167091243,13.0134185189953,34.5825622491914,37.44499245195,46.4474687042833,39.138177918486,35.7692217527345,49.6540782776573,31.6885389291099,39.2285487467051,44.3636891518481,45.4593718513656,30.1070522560693,49.1328727271142,53.7258175223608,34.1178513531093,32.9299977195436,27.2219707779635,37.8590883463074,38.133304413621,16.7022629011805,22.6072287035883,39.628101267369,49.9937499480465,37.6896277393786,35.5947203870048,40.118729062072,31.9068529007077,45.5519246502945,32.556093307578,28.5268882037149,56.4021200606775,50.0177429946991,57.8016672782782,44.1882233590032,17.6890693851236,19.5174105294801,22.1792434508889,46.0778729710759,42.9612512486045,78.3349647561401,58.0430814145069,16.4308435655051,19.1756428348291,15.1256326255063,19.4876533003973,22.0428447026545,20.3177600242941,21.696485942933,19.789528102351,27.7465475367654,24.2415546138503,28.0334291297959,24.4240957237101,26.6799834531045,31.4386944905208,32.7884809277984,26.9557978366791,28.4943163928897,29.4818157415108,31.7914823629881,24.8419355905991,22.6221450761915,28.3627642159589,30.6304768651557,18.8451004065467,22.5666243437214,19.8267664729036,19.5969389496804,21.8180253162273,26.5629497567099,24.3102909798039,28.7521930871851,25.4173789034952,27.3571213330391,32.5667946389951,30.5618472891244,37.4060579135245,32.288050870526,27.2431953144111,37.1779406813766,31.1486098384492,23.75472392224,34.4317758501302,42.309863680134,39.2595526649091,42.6994159997352,47.5515447499756,61.3434192017473,49.4711730421926,61.8987924857354,47.3071442601938,40.2407624974661,47.9584555327053,37.8239262548613,41.644728051282,39.0575884730096,41.1524388255174,48.3323042899614,42.2614228740863,21.0546107525975,26.793855108942,17.4358315649301,19.0034704879161,25.4540546572961,21.4860146176106,20.9900130857298,42.4328152920845,51.4423134984426,47.5006772790037,51.9413614048648,56.095495512188,47.6117443847151,53.7908444132228,50.2220876824143,36.5596384205287,18.8135690787212,23.9788279477489,26.3229635211357,20.5955006509848,25.0188042797175,38.8666676463427,57.0680308728049,39.0108866480043,39.3690218086227,18.4882387832967,16.7290265874964,29.6012197623714,23.6426727009247,25.9588352167021,26.6940983285889,30.3639988491247,33.2119912660676,23.7198099995325,18.633522656013,23.7750551244572,21.8879407683385,38.073634709167,50.7895988475828,36.1656727726317,34.6688200455516,41.3300891183053,47.2098489709654,47.9974305633291,30.7495204775927,38.6594796466352,53.5706550573531,30.2756547839699,55.749558565655,49.3231762455154,46.8307810552182,35.6089685141267,41.0660173349666,33.9632417432557,40.0887907019867,39.7545026398367,44.72725854689,33.4217664007873,34.1888592030069,29.8858790715834,34.3202761347429,21.7505105200164,21.1568125391143,23.8231951614785,23.8065373024887,21.2675668262818,29.1355328019855,24.692642689357,26.8510366003599,27.6298929222249,32.0893806613657,29.5257785247656,29.4084097500127,39.8472252023095,36.0180535568451,35.4114934497353,33.3840555589542,36.4858939635137,40.0546886739956,31.0198731658411,34.339841527469,46.5846111186857,43.8934259956593,48.1825204804487,74.578961639806,41.7789682330431,37.771697185222,31.0544579297787,28.6165685822386,23.7612131765869,26.6422031412246,34.9139505456849,40.6766242613759,45.026526976142,44.4924393631803,54.123598085901,34.4705587664115,43.2989114436114,41.4994607963155,44.0863106218303,49.8658865718798,54.2693245087067,49.1513480384843,72.7631749316249,43.2547955912373,27.758263631125,30.1978914334825,25.8945928301107,26.6966678334139,24.6621892395742,33.7257216343451,21.2084417009679,57.847163249428,39.1294395362082,37.8646201025164,43.9686392086122,51.2352995650064,51.9262772708751,58.0909493717215,45.5401276041437,66.4695738634846,38.6555398062165,38.2927265248153,29.7926040095753,33.1931055168643,32.8807049024005,29.7297219249823,45.9187782193578,46.9672491502321,49.8730157900052,51.713472874397,57.0687151783519,47.7196312296877,56.0222380019098,51.2859036453327,42.2583033862526,56.323690135444,49.5052730100531,74.9981895032276,44.0952930412225,62.6609406159313,53.7255370519218,30.3525645444156,37.0466831311164,39.8705157116242,56.0845335116105,56.9634377695945,73.1031275938325,34.6073778038798,46.0691208861348,36.3892059721316,40.8445606655124,50.0836178118769,45.959910493152,42.7453180593836,51.2024890613388,36.8875010610648,39.6047345229094,43.0941029826276,48.4675997064003,47.5364428815972,53.250383843396,69.4575763387671,69.308364580337,48.3550185827236,47.726724289328,43.3190605971316,53.5255572621603,37.3461541834185,51.4491688820456,58.4180853683269,294.965060883723,295.047891818519,295.267484188017,290.561756840657,275.665344306639,289.279875554813,283.169824040112,289.728932146955,292.295185186646,295.248542103621,282.612508737277,291.182426966311,283.008247161077,296.012101289724,292.302627223155,272.25109695472,292.258087775682,296.147515642721,292.092711425745,296.511940281808,293.336744796187,292.070875484709,257.152158598658,293.221621875796,240.711283973284,281.216501711283,298.002140527649,294.520551556575,60.2164740508208,45.1116224557561,58.6694044972594,58.8749331579007,57.9991374808779,44.0532135727295,60.721777724217,46.8498120144419,49.6186585219116,42.1091813606424,38.8014368161397,39.964840127515,40.2450754673182,40.7921361215666,44.1618579408201,35.757664566116,46.2327190923175,50.7787626230374,36.3347965631074,34.7658469014106,36.9828289751523,33.5396572183002,31.9037702802409,16.4482098820482,58.9152380005486,16.2627560030329,57.5489587234757,7.51530493734448,7.75356530901369,59.8998532551989,280.911333097634,45.8703957257959,51.766568753359,54.5280277169234,11.8584377063926,61.5699198858688,49.0989944148633,56.5624196883029,67.1724713227446,51.5715543643637,43.0446962893527,45.5249272874023,70.9992327641287,43.0019261400402,37.6257647281385,38.2175369720316,33.2665417993503,40.8166469948934,38.7452209888212,34.614081898328,30.5528854697861,32.9552666862623,32.5809637593891,28.1026455213996,27.7597393953738,36.2597615195886,28.3675935320496,31.3855970335873,24.8847249176422,30.5689553354869,34.5455224470388,27.6281306352725,35.1018498066834,29.4007184322075,38.640485894338,32.6901798310115,27.1134617620828,44.1399408644213,42.5030673352069,36.8048557184904,38.7368515881074,37.8749619479452,33.4233842649256,30.0201996374659,34.3831878794058,29.1236649071785,32.5434545498272,41.1833205811546,62.8407509337082,73.4703508132551,50.0559597609018,16.103771720097,14.1086058701186,43.5524049446459,55.3914485698325,56.1880216647787,73.8455890337919,60.8381948631376,51.9809767602167,28.3377289358905,58.8120625768227,55.7408807299404,81.754697254157,20.1576545027796,22.5163368551964,32.1121891324009,34.3340893330773,34.5646904998857,34.4697104748161,39.3125691082733,43.9253589006232,44.5255600713181,14.9214912947188,12.1984453778206,11.692623016656,10.048951653174,11.7234294223704,21.2334005735918,11.5088058773601,8.28859284250451,22.1548004056967,28.3172324295688,6.59854324768703,9.08817228477036,19.2356474837254,21.4251080547338,9.41000689165952,2.47878673715473,1.70204283305609,36.6526196423417,37.9629019205416,52.0096464191484,16.0517052427329,8.34179619855642,73.4677893312619,13.1319397302995,54.7903509275998,56.3810119911955,57.2521741252732,75.3487662236702,26.7081921340064,18.1146209866544,43.234699798284,44.482053910548,36.5254296096216,32.4802862569192,34.5536936471998,29.354790051884,29.7363367454718,29.8180313094826,26.5934262315621,24.4138865960115,44.5821114332925,33.710725217046,62.2100573938556,56.8526695706668,59.2643878087628,42.9014638863531,50.6983880463486,27.351526537498,44.2702650457535,56.1493588730043,46.6885529747332,58.7908737575521,56.3960807705889,45.1938897029946,40.8793253960731,45.1057552053853,71.328741523218,45.7498379362275,54.2043875146324,48.3817551582306,66.7967904189871,46.1330184227738,56.898039103532,47.0339889437637,55.8857216878565,71.2236075236785,52.4492536732541,44.2748464221153,58.9478938708142,41.685535693932,58.1863157637732,75.9753945502399,57.9153489005638,45.7088138473757,47.4088142378553,45.4597956010702,54.4303335533064,47.7660944614615,49.9468808475737,33.3620166351116,30.1332543547653,37.760472838196,32.4639321309078,46.7027733843558,26.0039121391498,33.6859132806369,66.5653050849092,39.065810415136,41.4040440581426,41.3010865470532]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1207.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1207.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1207.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1207_field1":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-14.6801848306724,-14.3556827804192,-13.1230912051655,-13.7293893361054,-12.999278633164,-9.69261942523292,-11.8869727004064,-12.6839184772668,-12.7971027177113,-9.3249253133689,-11.2311317753215,-10.8612165643043,-12.6357631035758,-11.3910229793747,-10.7667207975507,-7.79967284779347,-12.8033614244601,-6.4417458800477,-10.2825061436574,-8.89483360148071,-9.54599059441782,-5.74809760665583,-8.51509974958507,-6.87467963967837,-9.77939229143395,-5.03018242516855,-7.28452343980909,-2.5302826646968,-9.02402141274525,-1.66697577924766,-6.69954805257641,-3.38468954722554,-4.06388277283448,-0.619945205791264,-3.59108905191688,-0.169199743421196,-3.78192884038578,-1.46614981243065,1.16108335084107,-1.39325897041619,1.95523300469372,-1.59932664554215,1.84025823402923,1.54196727424636,3.09070909664695,2.69671376016794,5.34531002150066,1.94125343061271,5.09645697184706,2.16611003930617,5.42278587241063,7.65779567409151,3.55636688834737,6.47524758426016,4.74653496856979,6.95684126646292,11.0313895007951,7.9175829364262,8.36087238620213,6.554278298665,9.18120165595198,12.4976827158838,10.6671932535579,10.167679237476,8.16328084153328,11.6138172353053,12.0972072918449,12.7824486186818,11.8411257119223,8.33552373833473,12.3950855436498,14.4692049953376,11.315559369134,10.0182982044009,11.3909907597103,13.4229875933345,13.4186534452132,11.8066055067897,11.1908825399799,11.1791189981428,11.7320737557965,13.2914591044643,13.0716431263946,10.1103164088092,11.7694686211334,12.7568181043643,13.0066147808244,11.3422500115618,8.34924141085955,11.8112734609494,12.2469796304731,10.8543124926956,8.71692747879886,6.24073888085724,11.4605533696768,10.4326796097462,9.61209069382472,9.68134446344099,5.95438149259296,9.74598330123169,9.09754222031429,6.35606224789329,10.1079072926398,5.70895152412606,7.02450570900904,7.01988011905393,4.33140343879161,6.48961570808324,2.710961798948,6.20176576689907,4.5981110345198,1.51544442896048,4.21592560425505,0.592124534248384,4.05219291132858,1.13301947452909,1.37365145801418,-0.0977235444200531,1.1465869870247,-2.56071974696886,0.694306825914107,-4.36610145200544,-1.14303181846848,-6.81567622525414,1.35597639071999,-4.42191765549599,-2.5473139435026,-5.17855586707711,-2.14926927288737,-6.48119305910434,-5.96487359810152,-8.15514816412105,-3.86957004927122,-7.03915832960214,-4.39885104889077,-8.25327967526994,-9.07508821717609,-9.68648095997658,-7.22402984628511,-9.90006649536952,-7.86019396646582,-14.5823515680511,-8.92551944230751,-11.5589257150957,-11.7589597263155,-12.5689980571522,-9.47373982355598,-15.704189629085,-10.5222898301411,-11.9704403191763,-14.0174469061103,-13.1971388788365,-11.030659575816,-14.9269603701491,-15.350630762912,-16.5937698561457,-37.8867710107274,-2.01882159287666,-3.5870817987203,-51.9511079583077,-26.3961893620344,-52.8011937701033,19.5964168980387,2.79502909220895,12.2766347188713,-1.3513647785353,-23.2805842667082,-5.38175700724585,-76.4391445208187,-51.5726218886386,-79.4555625509978,47.2563729503393,6.76107618373127,10.5859582093517,36.6209069302052,-13.5100271513227,-8.77247793511267,-71.2659424398068,-103.026837068892,78.246720817233,56.6098849069957,62.8333113751506,-121.225272498574,-10.6721041530476,-136.606774491997,-88.6958986024682,-132.249990410874,92.6220246548864,16.2624347693307,65.1603229623072,97.0063086205427,72.2065976829758,53.9518874021632,-15.736861758287,-94.7682642408144,-107.130364167195,113.550007022628,94.4777002248737,129.414105804083,104.453154067318,-129.125888934094,-13.8197094464327,-153.456313501814,-116.376152925277,-117.713874580306,115.476383301812,21.1278374419073,105.631392851114,128.752643373415,116.973107793628,-17.4126790076463,-123.879499811631,-116.906424409112,15.9279372897116,132.756231824954,152.778337546892,122.300193893207,-136.733336849328,-7.2582535957313,-121.52117999335,-100.843828465215,137.575879116003,20.3390578229084,137.423069743881,-149.525214748688,-17.7185092880521,-134.627703153122,-118.508953683142,-79.1324235097229,125.103613265191,104.345739482179,150.011337878679,119.834726624378,148.729420758047,-13.3790942416467,-112.811541846324,-80.2103343515723,90.241702769271,92.1164282333643,134.603418267606,105.437336502267,156.452632626604,-107.329686133277,-15.7817287257468,-99.0630245707366,-97.4211769002276,-85.9887596689088,57.6660001912072,11.7754794237968,98.3741130491863,85.4956278638827,145.438811038167,-14.0708724799851,-73.318790366282,-47.8722009609642,38.6673150274639,9.95837439205091,79.9023194423073,58.9792978212769,-69.4896004902295,-9.51114811650955,-45.1912017915992,-60.2772801571552,-24.7207208743366,12.8317129385622,10.3064930434819,56.9371170677694,29.7026618171812,-6.57234883862015,-38.3772727617374,28.2785074757666,14.6753143384527,-16.1429720863869,-2.93079649385216,-6.16857600408368,-1.63388757820733,-3.3324095456635,-7.84523993921915,4.49621363260437,-2.04638676960405,-7.99652188334089,2.37263393608252,-10.2594407697731,7.10195387851175,21.6859538558224,82.8068845417033,3.20798540594258,-9.67268860596956,6.72867234404035,-18.9325411589132,10.4374192146871,33.3403965823497,130.306318946397,4.41056744377873,-9.44324942182597,9.42696848523605,-5.16834783274837,-13.2188244306058,31.9470908478233,143.78185535379,15.8455352038151,-14.3308804720374,29.5845871873289,135.335790154993,4.43523851868399,-8.92049246369552,5.75924477642949,29.1066846581098,116.947881538047,3.16100340371904,-7.87617931526249,3.67728644856372,9.31816315882975,-11.1054027993668,3.25675382536898,7.009690290697,-1.6391617026616,0.378727265803341,0.720732175422596,1.56741496354507,11.9017539108699,9.50238129215847,20.7750349578444,16.7533214897467,36.8626557523042,18.7210002438668,24.079199057437,19.9853256782219,21.0292917820924,17.0782502218369,-0.14241936457692,-0.217440138114147,11.7353237548071,15.7237701008033,20.7003779984111,22.9223959736041,30.9716290483528,23.3878483796743,20.6040799182672,19.1782268756676,3.13248797468758,-3.36811800516851,11.2082302886532,18.5139310873887,30.2440331047964,26.1932592215753,25.4439832345406,27.7695191968601,20.0670793234225,24.1211491363016,17.4543310681132,12.2350665519546,20.5034695346994,22.7731510848196,20.1334013676934,22.8631488338948,23.173038906567,19.8264107960582,12.6293677335996,12.7894820234789,21.2210209100569,19.7559483230581,20.9778317265206,25.5057019489102,20.5636586623403,22.8018781049225,17.2074612452314,9.36628262616444,17.3368641554812,16.8805660153084,9.25468453766566,10.0278980399363,11.5480001306659,18.457055186269,22.3930029391727,16.8656039973115,17.1752942409989,21.3314803002193,15.8581703216789,-0.868382358687826,-3.89594763765385,4.25903733636855,36.7133746764935,29.0826861618473,23.7030529154498,21.1716103856758,22.7150197497461,23.3906958478997,25.7167034371956,23.525273849012,18.5156563614661,147.121483047498,2.48984242868461,114.487555714496,163.273635695733,27.3775502617127,24.5306174069675,20.7464756056963,18.7480314013741,17.6288627454272,26.4128595211578,16.6193760699701,21.4534949074042,13.7293382379678,12.3014537479384,15.7481778855518,14.9182949125345,18.8531857535937,17.9356528708757,18.027277753673,15.6041499320208,18.1144786664926,16.4952038047081,12.302620972342,13.9897142605445,12.8706133418186,14.313214757218,12.8263481641216,14.2174465814563,16.0860377135914,12.3376202330489,14.914823085627,14.3643061829633,13.4811718440981,13.2347889695378,11.3697118818972,-0.908981932948179,-3.62476844754175,4.74341286427644,13.497427624371,9.25619419369159,18.0063752065336,16.9371945589941,20.5823354432493,23.5036109880691,14.277592626865,13.8277419916971,12.867269080564,10.5160785945817,11.7476480666357,11.7402460410932,10.8703097461237,15.0336778969907,1.79886054672382,-1.68350293891629,-2.60078297553939,-2.96561869771505,-1.49559809265702,-5.18218275962595,-2.82842729935424,-1.67605982460667,0.525935477045739,-0.520349971402775,0.320600859448178,-0.437731903935122,0.503449990552719,-1.44427565875623,2.34853097093422,1.77939388270427,-0.38719158633643,7.80002374239742,15.3614893038383,11.2636491905896,10.6211713664662,19.1969731090274,16.4815020101861,12.9639208953797,14.0938461044227,13.4091569437706,13.4577070456374,14.8899918972231,15.9534112035495,9.49359578061776,16.2545513030292,13.4414247008737,19.7975892256989,14.3146540429677,13.4244507016152,16.7458923917928,10.22506251451,24.6850459215454,11.4368590981165,11.5848307953658,11.2820356614804,12.5839844961315,10.1209501940676,8.99324711569371,9.71247638755983,8.15190688048897,10.6490633807084,9.0314951958545,8.6388339955568,8.64109196912408,6.53778212923824,7.41418890973065,7.77266362718441,8.12971913469829,7.20303741896873,5.36175685198992,8.26275864965433,9.54671566608927,10.0635015031083,10.0958536128981,11.7754367853983,8.97713680017941,9.20699087016998,8.21204026121323,6.51884708064746,6.14543488105079,5.50264401158245,12.0166264936234,10.8097346157075,6.87179218822158,6.97790136455517,5.23818925343371,6.15964733703191,7.73012948036735,8.71228280154307,6.50562707528556,8.24804182078884,7.92421719589898,7.62508275599314,6.39413957451979,6.5138136681198,4.97310803680215,5.97783273734329,5.6968831593408,4.81032017961211,-0.161426204792996,1.2895720379967,0.771467025990601,2.22201353328567,1.3885737635405,1.5206970364078,2.27240719782794,3.10647162332481,4.71222475820807,3.32308814526911,4.30847844549088,6.45917581134986,5.48339784544652,3.4240538472036,2.5729278778567,7.38594652657557,3.74745229039304,5.15089005015149,7.14366320564044,8.20866831557193,6.24894585573709,-5.80416149701284,-6.00350336951454,-4.85282619360346,4.57879370931258,53.4945718958524,4.48708485992918,15.1453424644983,14.5801074700823,14.1475447820489,18.2656716223616,25.1369569837472,12.0981399422852,15.9200340508392,21.7533066152771,11.9052104199493,9.69398822389183,6.65122322137352,7.71954564547365,7.21533071787829,7.74320520576845,19.6166106725571,14.9694178923989,13.8911788921881,18.2018129120877,10.434147837848,11.8109236914895,8.88589144442396,10.9059453388376,10.9260073175616,10.5188291411976,8.4490597861075,9.20848370678305,9.37709815091058,8.44365922461364,10.261689177338,10.1340101303287,12.093509215672,7.94915180752886,11.4721941488817,9.15912143315691,12.7736923098391,8.13811245789229,6.54214662685713,6.48569196510952,7.59780336463537,7.28198301386614,6.78147064630745,4.91952835337118,5.99610574985078,5.21015447749826,7.49643046298912,3.88503574674354,5.8205461516393,6.63320254347472,16.2509855195184,17.6536495706019,7.63041617212387,5.35712793961331,6.79328150798788,6.27340574795643,7.32670829836977,8.82861287571967,5.2783320035236,3.64466478073522,3.70753210754146,4.27489899112925,4.40495341534151,4.17905050992752,4.32462661474734,9.66806161217267,7.07743686258651,5.98317880756795,4.06774978701189,4.80954612327854,5.35755947210469,3.64314826364527,4.53654730876896,4.52750843360293,3.6005405977307,2.19493218288155,2.97609543524496,2.85184395054711,2.28752504430692,0.860080843965079,0.809532152563936,7.80211930490197,5.27255084686334,-6.16406084027683,-11.1957363382531,-6.70344804537803,-9.19449580125412,-5.12626279353131,-11.4322721623042,-4.29175027588716,12.5147817478612,9.34268844320441,10.527063617724,9.25251833201847,10.3775415775503,10.6176911428851,11.2294981068064,9.16055896313197,7.85526642311358,7.87638713231754,11.1611347948912,11.6073778843357,10.1654039617301,8.83718407871471,6.06925995758875,8.94960808491959,26.9043487009483,19.0480626730932,18.6277455050863,15.0562137810345,9.54264312455461,7.39315815674091,12.2299021870346,10.1586606886527,12.0553693191284,13.7674990446311,6.29409014999519,6.01302847836817,4.264333540891,5.00990859700507,3.71908003591785,-3.6149465849517,9.96674210159689,8.47277340963611,7.40757709847837,5.73185102868365,11.8969635248646,7.54223885989606,7.03408921561488,9.53362241555713,5.07352915875352,6.3051649344202,5.94785490574424,3.7370123223446,5.14326971686034,4.65281896269021,2.74415580516581,3.52496138317879,1.74078641307374,2.63631934426954,2.55555981775465,2.78048718134456,3.77578938620867,13.7864852862898,14.8477162992821,9.54451444022414,9.13932464675342,11.8269069809224,9.77981837918681,11.1696796841932,10.4971991682276,13.2219755946786,5.08247808560614,-3.46828323163639,6.31299310103234,6.78858032042527,6.46141234389554,6.85232392748973,13.1878918426822,11.576523223812,7.90817707977584,8.90633896836718,12.4224772078343,11.894755245974,16.1333596289753,8.9044757897436,7.99834577590242,7.98697584624482,-2.59446399593522,-5.87790510246872,5.13580776040724,9.75812309064669,8.43756084569828,9.94212795862424,10.7380406064191,9.17264050062487,10.5019373417557,7.51233641692628,-1.46944049980468,-0.752671439976614,-0.087662147302755,-0.449355301161677,-0.0592053437672246,1.31584619838654,-1.3924011400518,0.545266782039587,0.193714634538267,0.177997338303788,-1.33805535125974,-0.676411252512676,-1.71612929062176,-5.43497847765715,4.01579559032028,5.97215469536202,5.158126565045,6.80130146324255,11.5125751937607,-0.917727184840053,-1.10788878806289,-3.50002422320708,-3.0635997690083,4.2090083706471,3.09945607371872,4.83829255135626,3.71335850594444,4.74605101899396,3.80494557341055,2.7950632775312,5.82407793203592,8.54653590400411,8.07852466020258,11.7454637021812,13.7825794106557,12.2798603281619,10.6731587648484,13.9318991706185,11.0624892996557,9.7852447010289,10.5260555987094,9.21928374848137,8.37585696582275,9.21320341304798,9.35890072410908,-2.31352749187132,-2.25755964646602,-2.86975499376197,-2.31372871775222,-5.03170661395303,-3.96398615144254,-3.55110199843702,-4.65745619524526,-4.85466310073687,-4.26617082728271,-3.57939829342234,4.34573338783341,5.6445978031479,5.04939243338056,6.12591271146346,5.43977732766555,1.40920003691974,8.16535738846083,6.98986590549212,5.15229014361294,6.12181349598412,5.77288601965748,6.02021398390845,8.05618030224479,-2.14638524940509,-2.49606227752791,4.00962207710001,2.14452500129809,3.30200507239255,3.10011219297302,2.75569538360119,1.11219297422707,1.9041192729701,1.7313002534502,2.32558271989235,0.797641428004605,1.68825732307632,0.21665867390891,1.32502545705683,0.824477356356854,-0.389464856367794,0.0513956679899045,-1.19027106277432,7.10767591795208,4.85765674600912,3.79294589844191,5.09461773842773,3.61558176173131,4.48518805078751,4.34311373902259,-2.43836165635012,-0.0963760125184801,2.06516070337254,0.396731538973783,-0.251734608644036,6.41946303456657,6.10356549219183,7.05942943213012,-1.62522911602253,-3.96969055831545,0.516969702806633,1.00561204399731,2.97247268477659,2.22359203148496,3.12561093485793,2.38324487831844,0.927947867669783,3.99271908568966,2.3403237149024,-2.31729963142224,-0.563158672728538,0.513546472591243,-0.617472680877993,0.185527683420283,-0.788732395037186,-1.4046828467766,-1.32822662754879,-2.02726704858946,1.25227077218798,-2.83242724934307,-2.9409375181048,-2.23386603008785,-1.50843662323203,-2.93364582105711,-2.00493292293253,-4.37560124871657,-3.89917635641928,-2.84874687823909,-3.64556815176571,-3.48659136278246,-5.740980646243,-2.5580080855097,-4.63859724598441,-4.79414670109543,-5.74377716789299,-5.95165648124202,-4.82904691419821,-4.56140406944938,-6.11567662430272,-5.27059427174692,-4.6442591641158,-3.63246468459405,1.91467252978642,1.67275556567621,0.581302956404199,0.429134419705874,-1.19020759601815,1.08061905050985,1.95918412163637,1.97502435044483,1.36436659079348,1.84461604975479,0.924793977181607,0.0674872667359377,0.952416410576115,-0.650994055422093,0.236989742413023,1.11218771251987,-0.604984418752758,2.36133350738279,1.97523278282323,1.60574147825614,2.13825857441784,1.36833050960966,-8.20212685811622,-3.76208808636185,-2.942924899938,0.573616575121812,-0.19987168624649,1.06881714970412,-0.513975224293031,-0.734369900292699,-0.946951758000979,-2.33212848788168,-1.63380042076303,-1.91156918467838,-1.43565711588021,-1.32421906337026,-0.0985131963167102,-0.676741922882193,0.268267620871027,0.837752697441969,-1.31930118290085,-1.78753759166267,2.3657335934067,2.73796062580591,3.10813926452392,2.91127850956129,2.31146359311857,-1.311029058211,-0.152322818854051,-7.53681199389253,-6.83333346793411,-7.04852102476278,-7.55167669064815,-7.29213877335528,-9.95301983642783,-6.68883400919559,-6.54049549062837,-9.41460886844811,-8.57072040719655,-6.61240056389303,-5.42058932125182,-8.78519967527166,-9.52506465706924,-4.76556198019302,-9.95758639093782,-8.92135546280255,-7.92193717144409,-6.36225181358541,1.6028691163555,1.69019305468713,1.56676260931289,1.48106414804332,2.34254954945481,-2.84956181261401,-1.89312232921363,-3.10417423931328,-2.36200031909393,-1.90600409781253,-2.82844690648511,-1.87025492153311,-1.05402988275813,-0.185572618117203,-0.771003275614006,-0.381734907261494,0.46164588192888,-1.24126324710061,-2.73943290075394,-2.24486454764336,-3.91486834805886,-3.37593713402401,-4.05890259996344,-3.08256178683857,-4.2376887821903,-0.993828116972886,-0.612848477381396,-0.885600504439293,-3.47842684059627,1.5981739538508,1.73040576166202,2.51248896334903,3.31208907945086,0.568396985460005,0.669899993228835,-0.123584804116046,0.393084660070422,-0.24703507022763,-0.774265236349671,-0.942389210612325,-1.45594308438767,-1.00157343659986,-0.202447177761124,-1.93048802288071,-5.87213910022123,-7.57935669866705,-9.44419328449884,-6.74330807952885,-5.79704113106811,-5.10811991727469,-3.91396830530128,-6.26557843779473,-6.16795643304787,-4.75817795457409,-7.42079345832063,0.373405847717022,1.57886371403186,0.887472638561957,2.71311139278817,2.82093490759497,3.16415890301542,-3.06301617656062,-3.69093266120316,-4.63433372782994,-6.68172257139326,-2.74947770969755,-3.70234222117792,-2.72594103739108,-3.42018057707168,-4.78161228952685,-4.38500484813764,-5.50742315525571,-4.41352894104598,-2.80506122477424,-3.51843635741238,-4.80538849100443,-3.70198802890226,-4.35336891848878,2.87484529285915,1.59338623470322,0.30819219133985,0.104638960466041,-9.13662337655179,-5.76836530380767,-6.98767347637067,-5.74402902336755,-6.75667450829974,-8.05301427224198,-4.21918635051215,-4.70122016800902,-3.83343448215837,0.348891191487984,-0.300295493769973,-0.935543057363164,-0.242291534596459,-1.19247369887918,2.17729511800094,1.78923670723518,2.09767915528687,2.45708304814718,4.09276483726429,-2.36563991091355,-5.17170343377932,-1.89439995480989,-12.2526763760798,-3.45536199078054,-4.06827213034185,0,0.354172132631976,1.59999479976055,0.721907791203571,-2.65278038528522,-1.29194548964644,2.50453562510481,3.48388998939383,3.27089312649105,-5.0702850087193,-6.50919400205551,-5.31235661620554,-4.85520701535534,-6.45515896609322,-6.46215592010686,-6.72037927329838,-9.42204069301214,-7.81000084424688,-7.51778935603134,-7.97073228515392,-6.2602000561217,-10.8612595373684,-4.12735228948479,-5.9684460339654,-3.13284470366168,-4.94767645678484,-5.46708720212354,-5.08195585130367,-6.00604154469081,-4.95421906324668,-7.17110483917392,-3.8046555372016,-6.47248406806248,-7.20194034072173,-4.50907448031819,-4.65958170802464,-3.77855422283229,-2.8581628690498,-3.21935768675979,-2.43728997214245,-1.86682932239009,1.04284644148281,0.152749862489637,-2.92892813438156,-2.07195282082874,-3.24804876833263,2.13099059167948,3.45098743157722,3.20436912295937,4.02055469188131,4.27471073816151,5.14602244203681,4.04626070049979,-10.2590556370864,-7.44822113347243,-12.0339755098602,-4.91558620234126,-6.3376961897846,-7.74962064634696,-10.820869555137,-12.6626836115877,-3.16133790377658,-4.44061817951712,-3.97202106786037,-5.28809126015069,-5.59112279046966,-6.90476487209683,-6.24894527591929,-5.87263662232703,-6.74892530191188,-1.65469699332586,-2.00749661551722,2.61912549120821,2.99305749718199,3.32400812400554,2.24122330393921,2.97716282991162,2.93935897949954,-9.79283173995123,-10.3740766869505,-11.5831910888647,-6.84086416111621,-8.14640455869579,3.64433411006519,4.4939146080817,-13.5576858031289,-12.7561978101343,-17.5212057253442,-14.0089316340495,-13.5822715026546,-16.8943266444362,-11.981081867849,-15.4426146413677,-15.1776860323842,-16.4346223145977,-11.9669771429188,-15.197933570107,-19.8537919533706,-14.5409004027172,-13.5572177428745,-11.3686444125039,-15.4708098393813,-10.5046239619274,-7.78219114541406,-9.81297514795926,-15.0462766291754,-20.1531368501987,-15.3016164631631,-10.6375638684964,-11.7988811859544,-8.52276121402303,-14.1637777487607,-9.40444755573689,-8.02884724726742,-15.3894031152739,-15.0488682805226,-17.9888306160026,-12.4752156891214,-8.35135847866701,-8.58433891369461,-10.3132896485795,-17.7112012730308,-17.4428472434257,-25.3397754275703,-15.7574322913495,-7.7902836498051,-9.03690526721959,-7.14836676466337,-9.05527939056222,-10.3794863966661,-9.61862867021962,-10.2419933146597,-9.27701037722472,-13.1046952533138,-11.3686053792471,-12.9537702609011,-11.4910694531126,-12.4481794081692,-14.9271866851162,-15.3244552113189,-12.65610604684,-13.4264537367051,-13.7842894834005,-14.9369398969251,-11.7277588114357,-10.5196570208347,-13.2602733851256,-14.2263599616766,-8.02583144084741,-9.09482500291939,-7.98322010511154,-7.33720417449269,-9.13751573970239,-10.9554238997047,-10.1858504082714,-12.560057723546,-11.1437389095101,-11.6388564737255,-13.5333420211152,-13.0281415283495,-16.3278664156232,-13.9777759210374,-12.2024048696564,-16.8439571600532,-13.9280586398832,-10.7479966646785,-15.1296964249682,-19.0221716368919,-17.4334174308279,-19.2590047641754,-20.8046554926243,-27.1637727049027,-13.0924013448834,-18.3579432780128,-11.8675484366924,-10.5287025963835,-10.7261935286334,-9.06573924782477,-10.1105220947762,-7.97229403891119,-8.89702519589084,-9.6742597174012,-19.8111748999371,-9.6288050619832,-12.2204655607477,-6.56563213278226,-6.35792948435981,-11.5817835700548,-9.83486127351955,-9.37177305138452,-18.1552651203107,-21.0916649116918,-18.8391976188262,-19.1005167624534,-25.3230582921985,-20.714495446381,-21.7580312932106,-8.36997559259681,-17.1363460508682,-8.58897509703839,-10.8587061060378,-12.3049924723856,-6.15579789158212,-8.74380419174059,-16.9661210904858,-26.4022341459032,-17.9480002628456,-18.445341435263,-8.17871110663994,-7.65726326898935,-13.1667927219506,-10.34128478473,-11.5025536502316,-11.440967136061,-13.1514330981119,-14.6331581917045,-10.8968301943982,-5.21229482303109,-6.12819504131849,-7.76466461090083,-16.0464466525674,-21.4372561695338,-16.8585781287201,-16.016310067213,-19.15083546591,-21.8628346108448,-22.8857542357248,-14.1937742745252,-17.6035756792424,-23.1128574537117,-13.7800243655406,-27.0632419733682,-22.7372567239862,-21.4704819695076,-16.7166507633864,-19.4088574417696,-15.8236273374982,-18.896468030024,-18.8269878725183,-20.5427026630688,-15.401974670355,-15.6200635022585,-12.3697552129752,-14.8002341296114,-5.89935755722012,-4.86083043225955,-7.06806203214616,-8.93818398806278,-8.03886579435469,-10.9885765514919,-9.75673766353856,-9.98754628977463,-10.8940068540877,-12.7079018808085,-10.2231086746408,-11.9661515392602,-15.7491572066566,-13.1628906216279,-14.2461798140848,-12.7397012193938,-13.9985862477943,-16.7368289252535,-11.2042834421961,-12.037224957747,-17.7926023566946,-17.2583557963593,-17.9413659009425,-38.3759415220762,-17.9948030365171,-16.8462629977581,-14.0908802018718,-8.06042565073304,-7.76031366226499,-8.31995261054256,-14.56459285943,-17.2190023067359,-15.455258656049,-18.707067084134,-25.5231025362924,-15.5426290756469,-19.8985544769145,-17.9162346329403,-20.2241679660737,-22.0741941432822,-24.717039677212,-20.495098087893,-35.7390132275542,-17.4853794725974,-12.4453423077599,-13.9831018860419,-7.30085143830448,-6.66201551644449,-5.56167758045782,-10.4627887425004,-6.83475810183242,-25.5310193050495,-13.49869854776,-12.3867630980381,-15.5174672974551,-16.227959080141,-18.636645994675,-22.6808951749247,-18.3719906202277,-28.9723270147128,-17.4850963791177,-17.6558424482838,-7.61145424046607,-9.11787284991439,-10.857938376957,-9.38900968659459,-20.0542752375644,-19.4235451066712,-20.5871253838408,-20.4467272830923,-25.9584774478453,-21.5282756696706,-25.9794361564336,-23.2505414590025,-14.1010067803246,-25.3687987521435,-22.4486988517303,-29.3830138609683,-12.761393478626,-22.4188463265732,-20.1747003033861,-8.84333612448136,-9.62067601475864,-11.452344976618,-27.1455957417858,-23.239503241789,-32.6091466563065,-8.12636490591119,-11.1349403724442,-11.1621980973977,-12.7628384615648,-13.425755882742,-14.0425896525068,-11.4453325585013,-15.8240222862339,-10.2079037611867,-9.64406006898628,-9.72768622757591,-11.9564860709852,-12.4247405799553,-13.2174548241923,-20.9466295321646,-21.7035651110585,-10.1472516505323,-8.72454462848306,-8.28618219142702,-12.1678027674264,-7.52828221238057,-14.9046324227277,-18.1826144201404,-32.0144604802954,-13.9617311303984,-55.0189050531476,36.724451309492,14.1311682192795,-76.3902828753304,44.8951430795275,-97.2908812694697,92.9264990235737,-115.932435331209,96.9569726493505,-126.103494356555,124.22502387444,-135.644087036193,130.4820103447,-126.090906525066,-131.267544118558,-123.603301269511,-108.350259701239,92.921476763183,-90.4901802429611,65.3533164482358,74.3810717528937,-68.2731855536374,16.8878684816072,54.9851584582748,-44.5236246903244,-15.9659066689688,5.44730868506727,2.13005808490851,7.16371304720289,4.2876324769933,7.10614270123001,4.02562330687718,1.74107974717442,4.98873466543972,4.31023320477579,5.23271175410216,3.63408056844795,2.62141682458635,0.569258801218141,1.36508591699082,0.549689558645237,1.74070593365381,3.25606176796089,1.92298898109923,4.19095034218036,0.318044879434901,-0.944069834973353,-0.291392545402608,1.50954996001034,1.15077288973109,16.6272796647808,2.24433495123978,23.7988228718771,-1.02684069272271,-0.848287303936853,19.8941529760878,-2.78124466755922,19.2716644607059,23.7953874709817,25.6571767521667,1.67160544910351,28.4227084711778,21.0660647817566,28.1272147446754,31.7995584110968,23.3956930694777,19.9781108861337,21.0586982724241,33.7657642107596,19.830187802371,17.6508645773628,17.7739234343512,15.6365594186484,18.5774646409281,17.9652154737042,16.0574469998441,14.3109226459804,15.2175852108624,14.7153728476256,13.2325751786185,12.7593372541427,16.5599909922994,13.3422470727923,14.7502331431956,11.7023953152497,14.360709831914,16.3098246438273,12.9692741641775,16.5640535259217,13.854891873422,17.993270985703,15.2968615298105,12.6750396531521,20.7554692494452,19.9880814436034,17.1960873476461,17.9491734096061,17.3112913660456,15.288315921605,13.758935367126,15.9134942363577,13.2577877106278,11.6959881652695,-0.241447740895674,9.04879824902238,27.2559100512674,15.8061514800022,7.54357260733376,3.73710816994579,-9.56301675196736,-11.4093958352226,-13.5925009051052,-17.6614194752667,-10.2057987342467,13.6219086205521,4.16186837295807,11.2944569092068,10.888699413554,19.4821024227024,3.18802415045836,-4.52037854895157,-5.01841281632241,-4.47476872179536,-6.98651918736654,-6.1651061817812,-6.72345317309441,-8.34899633131011,-6.42327641021622,6.94602365435045,5.63105107919002,5.22175621922716,4.64907769248025,5.52617943623541,7.75380313222141,-4.08028172451577,-0.140457482785426,-9.00265996469523,0.814283348034286,-1.83892896145188,3.75800353706528,-2.8121429140376,-3.96797640303952,4.53177091681176,-1.255167587959,-0.450197338154024,-3.05928131185614,-4.36209209853242,-4.00385589049019,-5.20308048788786,-2.16951921216185,-17.125291704321,-6.23922001645488,-18.2116609202084,-20.2842677351256,-20.4099687145304,-30.9104447953406,-10.7810928719824,-8.55815618201291,-12.1787719274048,-6.33922156675094,-9.69337977341485,-7.79404165648034,-7.44874081924047,-6.36162230081201,-7.2018711057902,-5.63234333108947,-5.91583436044813,-11.2993146860872,-20.7120247426912,-15.3066934748106,-27.5901592733607,-28.1580821433118,-27.3778218977672,-20.1716197219378,-23.2671578617786,-9.31375524026417,-20.3416238699431,-27.1399318773191,-20.200191771992,-29.1302554800253,-24.3873534417326,-19.9881218218118,-15.126585641483,-18.9777999864678,-34.5264599296349,-18.3921715367278,-18.7755001784284,-15.6845837198258,4.81326607786053,1.64453371450114,-0.305744923969854,-1.88005239567965,-0.495948483331086,-4.17385848646611,-0.592739110747343,-0.8987639194519,-3.96481537520153,-2.11692863698658,-0.0440823041401389,-8.91220992125035,-7.80610810521221,-6.07184754806975,-4.60261800125098,-3.65390518660102,-4.14816503356179,-1.95298294099745,1.37598614724289,-1.95716263623916,-1.78645100760576,-2.28276182331322,2.31732056700485,21.2090533513969,12.0299091675284,-3.40351973823527,-33.2450577906317,-0.314772486325536,-3.81046979094581,-13.6110475517681,-24.6411725454715,-24.1000055411092,-22.0488186719416,-23.0794302038836,-21.8594436413296,-16.2859763023526,-19.970281458282,-21.3193111921773,-21.4640790601478,-15.6537787031561,-18.8952413881669,-18.2303051482027,-21.213118729637,-19.127169579411,-18.1228162330455,-13.0941131786189,-21.5466532463239,-10.8100720162709,-17.2816370221455,-14.9010280296499,-16.0550413832423,-9.64200553248733,-14.3395158361097,-11.518883333179,-16.427481061025,-8.43709560183211,-12.281982470511,-4.22300264369817,-15.2060108045495,-2.77352332566945,-11.2677029686099,-5.6572642144792,-6.84209017855716,-1.02412511366354,-6.06947790462909,-0.250280808802124,-6.36972805581489,-2.46753505024215,1.96691903339026,-2.3822481878188,3.31872619121869,-2.70080098875082,3.10333131038737,2.57863945009634,5.19067666137391,4.5226857264354,8.99032173002192,3.2335489620439,8.59862214963515,3.62146967581711,9.11704351344732,12.8653452250246,5.94478212274596,10.9147290970216,7.96061343890972,11.6967842690976,18.5328727492494,13.2883654573794,14.0743613153647,11.0006509725913,15.4339241358802,20.9939115039627,17.9025927777174,17.1068899542594,13.7064080223482,19.5236427590668,20.3029268937701,21.4676254377469,19.9251368724556,13.984041968692,20.8414268599806,24.3002414667851,19.0164501714884,16.8458589044207,19.129514504702,22.559499066149,22.5201850128186,19.8356888818718,18.8111216515879,18.7780291441342,19.7341806551844,22.3188849930234,21.9829813607258,16.9904209186691,19.7723105781822,21.442067430479,21.832151813513,19.0808317641257,14.0259923295262,19.8451519784253,20.5811684524718,18.2151140404352,14.6757832183396,10.4801795116484,19.2581094891726,17.5356429754151,16.1267814236619,16.3020507990377,9.98801104330959,16.3784574395015,15.292842962692,10.6470292130801,17.0158533087948,9.58178315464432,11.7999833218935,11.7999034966162,7.25171879283219,10.9441417186473,4.52790670006731,10.4270959758498,7.72773200310775,2.52868452933574,7.12131163514553,0.961134362886991,6.82076825718531,1.89398378547617,2.31421502118948,-0.175241970618161,1.9349443726866,-4.32170297450273,1.20960909082633,-7.38214971115472,-1.87260935051588,-11.4731431698516,2.28874040567083,-7.45121469240388,-4.24628816853742,-8.73690998525434,-3.59244557404826,-10.8811421256704,-10.0175392357636,-13.7126178657698,-6.4743637688434,-11.8610841012996,-7.37390636050482,-13.8536045943161,-15.2441968838718,-16.2796508926225,-12.123075297201,-16.6591445065781,-13.1759893859895,-24.5043833564985,-14.9816480859063,-19.4515937816858,-19.7465077536131,-21.1377465641508,-15.886552818495,-26.3859524267023,-17.6752543720378,-20.1361854116813,-23.5535251735917,-22.1816035446178,-18.5218587154293,-25.0359843049827,-25.7419024409704,-27.880490214936,-63.851520919356,-3.38567814002586,-6.17908899388209,-87.5111455524338,-44.5126065118641,-89.0025556411738,33.0273065641762,4.74315677824795,20.6355830133718,-2.33253319987632,-39.1889365382585,-9.36294238602079,-128.6785005885,-86.957141856282,-133.844128456738,79.6563016664589,11.5698616076319,17.8926835770293,61.6570541710374,-22.7134089223619,-15.0615409358782,-120.167177572898,-173.481596213915,131.795485900045,95.3913324707153,105.861428072136,-204.014771033412,-18.3856668311693,-229.930875151209,-149.561345818288,-222.736645464558,156.07122374357,27.7894888259851,109.880552625169,163.357292521987,121.587767888246,90.9282557744335,-26.9084888933863,-159.756411992858,-180.516895951542,191.272577019684,159.211408823905,217.918819738318,176.043261784517,-217.414304445721,-23.7532765616754,-258.330919821892,-196.154434120537,-198.324691121954,194.575581711404,36.024792758178,178.096340655505,216.849771356462,197.031903202135,-29.9690705835396,-208.764519209446,-196.962401802087,27.3856562465345,223.632413041576,257.310981797164,206.118482163613,-230.244020007988,-12.9541852262591,-204.846611596298,-169.951326563879,231.68243410609,34.852148412981,231.405437331158,-251.736341135297,-30.3633051088639,-226.670719102053,-199.755221005924,-133.458369160852,210.67709980566,175.844578556879,252.635457498884,201.87325835447,250.264743431384,-23.002637414457,-190.081148169427,-135.172788692229,152.030119529389,155.229680368798,226.685203035762,177.646343252122,263.445856716413,-180.797962992099,-27.07654156651,-166.807786624678,-164.170005286321,-144.812660388755,97.1818451406483,20.2323078046987,165.792588599324,144.045080462571,244.881115793556,-24.1016811133547,-123.557309936464,-80.6631457528537,65.1540181649611,17.0722860705692,134.615048748143,99.4401297056835,-117.016396600758,-16.3430123295095,-76.1229745454945,-101.555691207672,-41.6481133295919,21.6199659299612,17.3619404230566,95.8777372950659,50.1165806149538,-11.2462827053799,-64.633125418995,47.5868426129062,24.7863493005175,-27.2283139222083,-4.98885002665739,-10.3992616303291,-2.87857681291871,-5.63804498106706,-13.3478520176472,7.6577645893768,-3.37921308363123,-13.70434906492,4.16515662065935,-17.5754388273818,12.2553860409739,36.3927471766235,139.43335994375,5.6776277791054,-16.6572853406404,11.6355058360583,-32.2073365144833,17.9476603566894,55.9673127451772,219.42163588554,7.86701796410071,-16.3888277676479,16.3195147016443,-9.17844496690703,-22.6207891053818,53.7368376413891,242.159543532536,27.2255332722071,-24.4257477946078,49.7566109382004,227.899734378328,7.89690184516058,-15.340264364253,9.97953276097955,48.8692288640635,196.934335258407,5.72894538262061,-13.5569322658301,6.43208615137869,15.917769951634,-18.8917809964354,5.6097891667373,11.9685726821685,-2.91909601348421,0.721548998324833,1.14324908123389,2.62926708042496,20.1841164618329,16.3078094509937,35.2452172981712,28.635587296108,61.9868825908196,31.9797084122067,40.8682238725345,34.0519041038245,35.7020812533551,29.0621423339813,-0.252720488668345,-0.304973181985741,19.8164132390754,26.5773270349015,34.9184554805435,38.7785454372482,52.1790533245053,39.4967363754375,34.8132064152641,32.4213685580758,5.29503374186568,-5.69123916065611,18.9413461923192,31.2889410098658,51.0285971932594,44.5413960242383,42.8689660505403,46.8436307903119,33.9152180483689,40.7268882473946,29.5001530201635,20.6854829005284,34.660165225784,38.5468887019175,34.002847268099,38.6258051459092,39.1494600155912,33.5200710220219,21.304225154916,21.6114381962779,35.8019169743755,33.3811376317966,35.4404516665907,42.9625965069256,34.7247552408236,38.3878260808115,29.0915971329594,15.8190096902125,29.2940891686642,28.516287042988,15.6260721343889,16.9445117819091,19.5010984679528,31.1947665074937,37.8619600463909,28.464724196677,29.0587370510688,35.9965097642971,26.7637038490845,-1.46967204598866,-6.52981898197146,7.19948991174576,61.7437576967832,48.9599501473019,40.1037530557798,35.7585342894089,38.3455694906753,39.5373502855073,43.3617246492644,39.7431279334274,31.3038737262597,247.792265538275,4.01529822359418,192.852828581454,274.875913768861,46.4160184587885,41.5763297687064,35.1019913836397,31.6305179236285,29.6966436337154,44.4880693094803,28.0398042190839,36.1433315670781,23.1627812541054,20.7896770617532,26.6055561716768,25.1835499178468,31.8878771327786,30.2926787497077,30.4302391582673,26.3532768257472,30.6205286338335,27.8463821453066,20.780517308874,23.6318367198865,21.7436560545978,24.1719419821462,21.6758240575952,24.0078794134472,27.1441660600691,20.8643193194796,25.1802044229466,24.2541038695329,22.7815449435736,22.3638816683471,19.1871156119411,-1.53145690492677,-6.11833955483147,7.97451881080696,22.7856168567854,15.6340382462006,30.3887609469048,28.5972372234087,34.784366314011,39.6856758340922,24.13121796237,23.3491491076813,21.7285607472606,17.7606342514249,19.8404103779391,19.8392283462404,18.3431623900252,25.4035854412485,3.02789498815255,-2.85849606225911,-4.39240704945248,-5.01116623194505,-2.5249673524548,-8.75666594090758,-4.77888059676033,-2.82638791715192,0.887437322643756,-0.881773935024409,0.537555199186938,-0.737544562101048,0.851036991630878,-2.44075533088438,3.96636863649201,3.00229442471368,-0.655831553389225,13.111741826674,25.9858856216547,19.0220248488312,17.9353011712732,32.4211066794441,27.8188406346491,21.8812420972555,23.8304423895362,22.6655420180604,22.7226935112628,25.1452206909782,26.9658690462565,16.0427052640903,27.4623328306227,22.7137365766571,33.3559889229447,24.2042606953936,22.6780621600538,28.2699075249705,17.2656288856469,41.48055033515,19.3256664921734,19.5732679241825,19.0456393483079,21.2725484161792,17.0953201651927,15.1817290558578,16.412699934563,13.761713363195,17.9879560721514,15.2592788839496,14.5907356486008,14.5949851095549,11.0466141562773,12.5190978336136,13.1254499385137,13.7317784774596,12.167327939521,9.05542851490796,13.9579070668559,16.1180351746685,17.0012761884623,17.0545233818551,19.8724815633528,15.169577066293,15.5435704832834,13.8588723249742,11.0132558925219,10.3838904439714,9.28770799494893,20.2912342069907,18.2635938394738,11.6069086407641,11.7896421987802,8.84496806241965,10.4064125807995,13.0651625399655,14.7242515860083,10.9867236643395,13.910386486635,13.3782049824846,12.8757363797458,10.7933936794127,11.0071086875591,8.39090826299711,10.0932243055359,9.62131771758388,8.12597548069656,-0.264096770580125,2.18114218945312,1.3037920613437,3.75257809004399,2.3477786200868,2.56568892996238,3.84217698051424,5.24398175204282,7.95457667652756,5.61471271744804,7.27684643894762,10.9012052794719,9.26308140349806,5.7825531304136,4.34600766665168,12.4900100665683,6.3309368444535,8.69778366755365,12.0552670281407,13.8830531307872,10.5539571807996,-9.87999565008427,-10.1623896289102,-8.16766384615847,7.84267705576537,89.995133776097,7.61329884624189,25.5855033938777,24.6188785885633,23.8812307627253,30.7687702891435,42.3131441031536,20.4273622037725,26.8811170149922,36.5951884066624,20.1141004736608,16.3621052606183,11.230432139152,13.0466156254328,12.193565154592,13.0799450640976,33.258009254142,25.2940827488503,23.4470615205175,30.7349751962371,17.6226087782629,19.9621512088363,15.0162892638288,18.418909627506,18.4391721818657,17.7556720439928,14.2706184827622,15.5595501378425,15.8439833368132,14.2473275126865,17.337600653369,17.1247854463917,20.4404449545039,13.4444357721631,19.3601475578072,15.4593115951529,21.540109017519,13.7438377328534,11.0511219882971,10.9584101240798,12.8190603273383,12.3032508120815,11.4549515447748,8.32258425780329,10.1163014055002,8.80124702562014,12.6594322638579,6.56477055449351,9.82580924021226,11.2121694327808,27.3759702975226,29.8048672344328,12.8830632274882,9.04553341568894,11.4832549730354,10.5924048368856,12.3812669699512,14.8947488895293,8.91169703309045,6.14765974946492,6.26240186570706,7.22745495848039,7.44298375323636,7.06113306603022,7.30041691147522,16.3348778990436,11.9607009948333,10.1012408905744,6.86579144232962,8.12882906014973,9.04549719717252,6.15640903987567,7.66266964835837,7.6443721176933,6.08146911963031,3.70723552988669,5.02449996781057,4.81957988873723,3.86741763028874,1.45834168549805,1.36611957569341,13.1250866529839,8.90599078318518,-10.4140111107646,-18.7827612025679,-11.320604465572,-15.5022243686548,-8.66059599590372,-19.2721348840064,-7.24926597033235,21.1258955919877,15.7752490306746,17.7884303100245,15.6434681710479,17.5273752251594,17.9277729853962,18.9551508103923,15.47134669835,13.2588558433193,13.3065298590573,18.8663666752486,19.6033799903935,17.1592678663314,14.9190150622882,10.2606097632021,15.117004513896,45.2818789228674,32.2229052126164,31.4661018212632,25.4368211519891,16.1174738160833,12.4938881991827,20.6694396523213,17.1654366557267,20.3766125839946,23.407372689872,10.6310278758824,10.1506862366512,7.20031079706376,8.46638167331809,6.28102628185327,-6.11270706443061,16.8304459399293,14.3140137503248,12.5043727519288,9.67947267171359,20.0984474390318,12.7425638912226,11.8823183240846,16.0714807006216,8.57332404049032,10.6459308090846,10.0445347016137,6.3072843482858,8.68547351831358,7.85933591659167,4.63684337907956,5.95381400039301,2.93839248860479,4.45438328349324,4.31405238443458,4.69817230851945,6.37947338596314,23.2784500371957,25.1097867552876,16.1307758537309,15.4524701745088,19.9565524242704,16.5344024387605,18.8457569221825,17.7231663701463,22.2831415203331,8.58539735670769,-5.86427462609051,10.6620596304158,11.4704330938736,10.9136532326891,11.5637179526876,22.2740567645422,19.5661932822,13.3651145415762,15.0468886445073,20.8425563150818,20.0850656459867,27.2511395378796,15.0392866718185,13.4972319699146,13.4967669127529,-4.37770321166724,-9.91929357569154,8.6720188119623,16.4631263316665,14.2527470896111,16.7908782218502,18.1417700723133,15.4972777440363,17.7245663549335,12.6966776700934,-2.48572678977161,-1.27001032196586,-0.14941922433053,-0.757460308446264,-0.099349373139959,2.2219866112895,-2.34956890171772,0.920490535892776,0.328445896395134,0.299593466312776,-2.25954669337042,-1.14247959264047,-2.89807805903842,-9.16292192969122,6.77779146993983,10.0924321570807,8.71127009332777,11.4954541647377,19.4504805602137,-1.54947154529917,-1.87268484505082,-5.90885248977464,-5.17891867872096,7.11068358860353,5.23262898151598,8.16968192383749,6.2651184128387,8.01621064088289,6.43749533571246,4.71499188928603,9.83553788548839,14.4335179531946,13.6391793885448,19.8702720680453,23.2431755781913,20.7560326744731,18.0366463878639,23.5574885899362,18.6902845614962,16.5228655925203,17.7603874292573,15.5653336431953,14.1483069628023,15.5792085095785,15.8040245779615,-3.9081844753669,-3.81049867444539,-4.84698550499929,-3.91290585107616,-8.49535163625974,-6.69362310530911,-6.00187327115876,-7.8717746963323,-8.20007372084041,-7.19997070764774,-6.03938056116895,7.34095333666263,9.53723319121478,8.52622969225439,10.3480570474504,9.19179815321607,2.38129746526108,13.7735123057872,11.8124773905432,8.70490863311918,10.3380739307752,9.74988465248653,10.1655648107077,13.6007311695377,-3.62539140667857,-4.20896932839205,6.77364145692772,3.62387118194684,5.57270947515356,5.23585780570501,4.65504911973765,1.87725663886939,3.21793274860677,2.92668667477898,3.92750049978046,1.34705621344059,2.85065142178662,0.363965126748265,2.23542411167984,1.39337178592747,-0.655217122994077,0.0879591395388437,-2.01026013675116,12.0005654163861,8.20439920885112,6.40398287961824,8.59890535409213,6.11000775329319,7.57505060865724,7.33756011569283,-4.12115431469245,-0.167043106182201,3.48675820293698,0.669769749305002,-0.426504837908089,10.8331676662297,10.3162722187753,11.9228227046012,-2.74128947084049,-6.70564151364749,0.871951897735249,1.70229713011303,5.01954032228246,3.75602475750848,5.28016453334198,4.02565889571437,1.57095580662664,6.74149048251146,3.95803587104157,-3.9146896565028,-0.951142761139505,0.869215099435049,-1.04410187264245,0.312937756561077,-1.33537282249145,-2.37305070182463,-2.2437946127384,-3.42225106242651,2.11409181579678,-4.7843586537517,-4.96956670242815,-3.77048760383073,-2.54696949307744,-4.95578703060074,-3.38749570641605,-7.38477966750775,-6.58318385147003,-4.80945341566791,-6.15514726118163,-5.88734743817203,-9.68952735677206,-4.3188925088638,-7.83587067213467,-8.10580676947015,-9.69095927544824,-10.0507977306513,-8.15755333068615,-7.70680656368283,-10.3233731031324,-8.901977005672,-7.84026779156946,-6.12820630136563,3.23169741640561,2.82556162464171,0.978154457267328,0.722789385575402,-2.0118181269426,1.82373181870573,3.31189760063765,3.32914785415884,2.30623968285854,3.11376528399018,1.56110400200955,0.113857007342854,1.60748690992578,-1.09843341207978,0.40026482640563,1.87974513594564,-1.0223668786385,3.9851356202897,3.33154503504951,2.71467612006068,3.61549204385212,2.30914148944832,-13.8460010095969,-6.35484757622881,-4.97031754727124,0.968835670710449,-0.335378474112107,1.80507823849198,-0.867208942245851,-1.24167036546458,-1.60009834932114,-3.94217874103145,-2.75591756893034,-3.2300090622199,-2.4304918484782,-2.23837313184529,-0.167219400784339,-1.14196598932597,0.451507423484824,1.41421142096491,-2.23030363769461,-3.0159040167775,3.99765367062755,4.62535732876752,5.25477249505692,4.91004264404452,3.90530458880667,-2.21484077366159,-0.257120859897145,-12.7383567651696,-11.5452778304777,-11.9203386518609,-12.7529444638213,-12.3229823931776,-16.7968440704665,-11.2972398191589,-11.0404587586427,-15.9040208802497,-14.4771483803466,-11.1689060868385,-9.16282271793476,-14.8264711287387,-16.0832104308698,-8.05144959743187,-16.8151135597524,-15.0617814978305,-13.3811828462484,-10.7378854483409,2.70244004628534,2.85418922494092,2.64717464908956,2.50451884503257,3.95107510956134,-4.81021130912577,-3.1933739336764,-5.24696624914023,-3.98711425072641,-3.21597506705137,-4.7777351041253,-3.15892066661422,-1.7797095791718,-0.313676820387291,-1.30598537471592,-0.642883333839691,0.780587433256144,-2.09669773697177,-4.6244360052961,-3.79596779270987,-6.61214034963256,-5.69170180362713,-6.86239852154853,-5.21083719738015,-7.15546084141653,-1.6792837041485,-1.03180276298809,-1.49847468173883,-5.88084666077287,2.69828015912022,2.92279693978074,4.24579184188981,5.59294455937445,0.959625555749016,1.13275510632315,-0.208342274736686,0.664952712965641,-0.419706539708778,-1.30790560524758,-1.5891576706601,-2.45896875124631,-1.69300670128058,-0.340269733788601,-3.258967595095,-9.91902396577844,-12.7952076224017,-15.9613659787245,-11.3950962492891,-9.77924407913954,-8.64392364922612,-6.61517959121283,-10.5816606269346,-10.4074358611428,-8.04257764498019,-12.5423837692616,0.630885145448341,2.66330819945842,1.50312426669584,4.58593582238532,4.76758158776877,5.34797041883144,-5.17238713684137,-6.22999539181888,-7.82227121509916,-11.2782526632787,-4.6431446626137,-6.25197406574054,-4.60097191386547,-5.7758860287563,-8.07996752402915,-7.39600861656532,-9.29449159633281,-7.45313520012565,-4.73714510830392,-5.94337979880487,-8.1161014984679,-6.25337075968825,-7.35222606066411,4.85558541637243,2.68869280236255,0.520999477029877,0.177586048040654,-15.4326376084958,-9.74297148662516,-11.8006303916682,-9.70249488900046,-11.4067484843076,-13.5930186524235,-7.12177638746568,-7.93417449382395,-6.46932528494564,0.588496586093466,-0.508076228939621,-1.57695547119152,-0.406754863442804,-2.0163556449996,3.67882113566654,3.0241117275612,3.54449414589175,4.14734646939482,6.90917605117222,-3.99944141008363,-8.73345428713602,-3.20076109710626,-20.6926046296076,-5.8365955206209,-6.86922264559193,0,0.594073025541109,2.70541900718034,1.21423101661017,-4.4728366414733,-2.18575927457235,4.23598982418956,5.87625185270701,5.53211338959606,-8.55916646873222,-10.9932788055672,-8.97940593664464,-8.20200698094961,-10.9056202541902,-10.8888275536441,-11.3624937612676,-15.9070961037295,-13.1841112137481,-12.7069980520044,-13.4732529314859,-10.5651944518439,-18.3373143119684,-6.97201532428788,-10.0808987713309,-5.28909058448467,-8.35698857204885,-9.23485579706095,-8.59355170655434,-10.1403274347372,-8.36106511234037,-12.1124342552693,-6.42514377454896,-10.9232480773811,-12.1701529800455,-7.61206155175636,-7.87069464733558,-6.38448551383307,-4.82667065254669,-5.44059621029276,-4.11604053052744,-3.15195712668678,1.76215074513119,0.258102709234248,-4.94963477359271,-3.49852966029058,-5.49077756481972,3.59712822593483,5.82455167564279,5.41098303082767,6.7855830398678,7.22559876952751,8.69203332825698,6.83462736927034,-17.2675174824533,-12.6135935344343,-20.2981731275993,-8.31581043041568,-10.6976405016564,-13.0934815559571,-18.2791296758963,-21.4023109666725,-5.33782440670351,-7.50165671268982,-6.70390192216727,-8.92658038640648,-9.44709549453898,-11.6622092628575,-10.5402770873986,-9.92216670157888,-11.4087827324866,-2.79810093408835,-3.38898001868516,4.42951347438456,5.04705276684095,5.60881755501537,3.78930438801141,5.02839372823507,4.96584372895642,-16.63877129657,-17.5270844296205,-19.5536106994849,-11.5478761767164,-13.7547287650697,6.1555188504873,7.58926416550216,-22.8956706445658,-21.5552026647806,-29.5615665453637,-23.669052865384,-22.9366728417964,-28.5416630852299,-20.2390786574374,-26.0984452030018,-25.6188767899988,-27.7610400643629,-20.2065449987871,-25.6964627959461,-33.5276912476677,-24.5325218502089,-22.8920774616394,-19.1994127890544,-26.1391074000193,-17.7430000132778,-13.1489291690816,-16.5713804110321,-25.4256613500133,-34.0283518954645,-25.8175691965792,-17.9614675133915,-19.9345250480277,-14.4014453525653,-23.9066995718971,-15.8772271881799,-13.5663300625857,-25.9918540653193,-25.427356009186,-30.3431209797861,-21.0646787688338,-14.1091389311778,-14.4979581513725,-17.4261433700803,-29.9020720601495,-29.4771151292567,-42.5095277300262,-26.5224985835403,-13.1516197056182,-15.2585943662064,-12.0760357807501,-15.2923204588256,-17.5374031745001,-16.2400177806189,-17.2933247917664,-15.6643480550483,-22.1196264804232,-19.2037280243342,-21.8681344566913,-19.4194678593564,-21.0230117077964,-25.1866632720742,-25.8789095390599,-21.3651546817854,-22.6733615468123,-23.2835857659439,-25.2336242700067,-19.7999658768654,-17.7791336206521,-22.4073022789806,-24.0333074133828,-13.5465699885475,-15.3419657975355,-13.4907149639426,-12.3842478274925,-15.4360256701809,-18.5014597553038,-17.2065042126513,-21.2172272255523,-18.8228238941375,-19.6542903902317,-22.8477783386533,-21.9920859043515,-27.5471826987132,-23.6105067801391,-20.6126195685739,-28.4272066793188,-23.5152606971814,-18.143986475194,-25.5844113413971,-32.1539877465429,-29.4325823377534,-32.5588226476434,-35.1285820028852,-45.716613364112,-22.1535244066934,-30.8506070333599,-20.0497044097202,-17.8012227501685,-18.1187690784203,-15.2932065229259,-17.086288305942,-13.4684215375969,-15.040745826428,-16.3344757602613,-33.488688608241,-16.2699006963436,-20.6479558050727,-11.096574704318,-10.7487946814751,-19.5690192814515,-16.6084244390227,-15.838708091878,-30.6646169469172,-35.5873592744716,-31.8641722284924,-32.4246292273503,-42.6416154758412,-35.0495186917417,-36.730046711621,-14.1411265036643,-28.9407567685362,-14.5006042088664,-18.3337412617413,-20.7664163558144,-10.3965685496822,-14.7769090424742,-28.6336991367131,-44.4293455477819,-30.3383055529975,-31.143898390477,-13.8077741442898,-12.9300284463052,-22.2160072040025,-17.4657922194611,-19.4293956372892,-19.3357751112387,-22.2072348753949,-24.7234540323794,-18.4040436300351,-8.8113022113904,-10.3522947921992,-13.1105771723928,-27.118061986703,-36.3303603332924,-28.4799620230537,-27.0428380128406,-32.3342013962441,-36.95309061545,-38.6243555294549,-23.9790390977198,-29.7296878320432,-39.158407769829,-23.2790210850739,-45.6477058468055,-38.4057378576588,-36.2659864067765,-28.2353670385839,-32.7659725942541,-26.7556451247793,-31.8894367789899,-31.7495909680089,-34.7294552839797,-26.0388211542922,-26.3959618411378,-20.9171185423435,-25.0161261173292,-9.9561917942599,-8.21645451139749,-11.9371574386813,-15.092702069357,-13.5919160533045,-18.5720753771537,-16.4896137202015,-16.8592867064173,-18.398925629876,-21.4534179264719,-17.2771444804299,-20.2196390598722,-26.612598281739,-22.2434635646046,-24.064435542957,-21.5018814256068,-23.6581984306538,-28.2328251316698,-18.9228197245778,-20.325984675758,-30.0615854778499,-29.1246440908496,-30.3644567035673,-64.4010832495524,-30.7085739803175,-28.4603899515023,-23.7950111062358,-13.6088149149944,-13.10148857884,-14.0581307360837,-24.626582831074,-29.1100193441325,-26.1055934713261,-31.6194708053016,-43.0389583682415,-26.2439084276834,-33.5969700165967,-30.2886296809854,-34.1484116054429,-37.2462311610639,-41.7013667635269,-34.7370714050173,-60.0570203686512,-29.922194036056,-21.0353774053241,-23.5980939760001,-12.3253488168645,-11.25565546148,-9.39342195582666,-17.6594916680286,-11.5429663253245,-43.0049366836013,-22.8023894624694,-20.9106788935672,-26.2266514635129,-27.5183791269605,-31.4242166770567,-38.2318878665235,-30.9870548863441,-48.7486694361521,-29.5319247711219,-29.8138618558377,-12.8521198591932,-15.3983197227919,-18.3357140209557,-15.8605397795873,-33.8824451721005,-32.8212363763314,-34.8483653995099,-34.5459899540876,-43.7482896460584,-36.3329361291666,-43.8176818421072,-39.2473500847327,-24.2031231596454,-42.9157527755767,-37.9552383968159,-49.3521521672166,-22.0061018771875,-38.081689012615,-34.0793757612539,-14.9485149865463,-16.2443868145095,-19.3397409253528,-45.643066052354,-39.0541217277217,-54.8390139125968,-13.7326931860752,-18.7877856719084,-18.859317473065,-21.5802229409325,-22.7323257544367,-23.6966076577723,-19.3333204647319,-26.7481923017886,-17.2409286046729,-16.2892318130829,-16.425117306403,-20.2464615436269,-21.0125639085688,-22.2557772341861,-35.2068787875883,-36.4949445633741,-17.1597363122796,-14.7566096442084,-14.1607515004526,-20.5767585636335,-13.1309404913607,-25.1878835373019,-30.7871350701493,-53.9193169588998,-23.5181236114284,-92.6727278372394,61.858061827925,23.8169088320094,-128.681817553799,75.5797895507027,-163.872447466052,156.523763991473,-195.275079276681,163.238531648407,-212.412337196124,209.1582247029,-228.44014034917,219.792115647575,-212.457467882895,-221.089739818254,-208.164046550281,-182.485994288229,156.507138973505,-152.402351928923,110.080575307476,125.279544723241,-114.979670007282,28.5221466269944,92.5645256475471,-74.9779924521962,-26.8909164709495,9.21358575155356,3.59939157614056,12.0396752203295,7.21138129165851,12.0279321625166,6.79489558913836,2.94699675685273,8.43585823922964,7.29145900807343,8.83103264857447,6.14265482979727,4.42626296542567,0.956744366356989,2.31194475411038,0.928308661882937,2.93458489764283,5.50819373695353,3.23584503236297,7.07689612762537,0.543969326515655,-1.59664866158374,-0.49359968311399,2.54772316620136,2.23023095371594,28.1665199701196,4.33996327570461,40.3330434142873,-1.05301498756668,-0.815976099435295,33.7358147534544,-4.65912688657283,33.0193349786572,40.2348401138712,43.3746095992765,3.42482797047548,48.0590267149869,35.6617490465062,47.2855925847975,53.5125673972809,39.510463823921,33.7590490736113,35.5875051900333,56.7745508426104,33.5200037965166,29.8195187844238,30.0466171114748,26.4052460588937,31.3581696207334,30.3252888765308,27.1464285749895,24.1586812835777,25.7080870155655,24.8745892342856,22.348339790505,21.5664025574915,27.9841378248474,22.521808526688,24.9141130503664,19.7697986458807,24.2587569213626,27.5309579304371,21.9178613816822,27.9642345315344,23.3836628433004,30.4205164244496,25.8370404625836,21.409032534903,35.0178683211236,33.7316454644139,29.0381423665329,30.271549684748,29.2209498696616,25.8230829379924,23.2407302905295,26.8858224068217,22.3754134481656,19.7428622306835,-0.408132909235829,15.3583486365257,45.8104260186993,26.7351817446973,12.7362818141016,6.3095689010947,-16.2476098828367,-19.2760057983808,-22.9596817989534,-29.639958694191,-17.3420228199021,23.0380743280484,7.02936927938986,18.9724847156242,18.4352280604047,32.6563399611069,5.3865865558403,-7.63375145591786,-8.47698792774556,-7.56327159302444,-11.78120461054,-10.4151867730964,-11.3575913110429,-14.0955888584087,-10.8652430734542,11.7137850670234,9.51565185038942,8.81452776418426,7.85437511336853,9.33738748953738,13.089467860516,-6.89641357574809,-0.235381025992707,-15.214172967927,1.37770414618472,-3.11113917300197,6.34021814398049,-4.75449125855297,-6.69690825234857,7.6374317583515,-2.12164274795009,-0.754500455248136,-5.17407844765927,-7.36923275166486,-6.77274490416648,-8.78749205382826,-3.659088243712,-28.6744653837496,-10.530417509919,-30.8957501658938,-34.107375438528,-34.384789382854,-51.8948236902345,-18.2198380699495,-14.444727303628,-20.8052893865561,-10.9488787460852,-16.3520535728965,-13.182659656112,-12.5895362129847,-10.7435619832039,-12.1589159132524,-9.5221847812721,-9.99224396031003,-19.0879292796417,-34.9360729638764,-25.8598519595648,-46.8003570710398,-47.4358113626753,-46.2222477403958,-34.0949944822709,-39.2950862713316,-15.7226445716831,-34.3721268260921,-45.7560083862971,-34.180870008072,-49.0054182965951,-41.5045109932165,-33.9620637058461,-25.5372181683331,-32.323288829626,-58.0371091788994,-31.4410512440031,-31.6177902957277,-26.4701518864023,8.11466702198936,2.75843781123963,-0.523825808207297,-3.18192409805756,-0.812342917692959,-7.03044345427013,-1.00584216229755,-1.51779603635187,-6.71562244940299,-3.57900730548004,-0.0758263914098177,-14.9380015199639,-13.143576114187,-10.2671329117403,-7.7814851074807,-6.15961231916137,-7.01444149399193,-3.29743170610509,2.33234637811798,-3.30194878979148,-3.01621497619779,-3.85142710085591,3.91411801779265,35.79832483882,20.3022843850144,-5.75033207291141,-55.9745571349289,-0.530870373883873,-6.43507222773657,-23.244873667993,-31.0124737765073,-30.3376720830032,-27.7864116305125,-29.1032984849279,-27.5746500064503,-20.5219615468581,-25.1601877768997,-26.8651174178095,-26.9945310655558,-19.7045970562373,-23.8431893712609,-22.9479905939356,-26.7077252902867,-24.085504320244,-22.8798186166291,-16.4890134632213,-27.2050277102041,-13.6020825374372,-21.7850941037858,-18.713697621388,-20.2476960880224,-12.1240733047394,-18.1137974267916,-14.4715663263004,-20.6983290816497,-10.6074811568026,-15.535787492742,-5.28385047846764,-19.2253535274362,-3.45577546877921,-14.2163354518343,-7.08556729139551,-8.64086655589851,-1.26367814285602,-7.69617155878765,-0.269376904750577,-8.04907613022196,-3.11432689375751,2.50432921049996,-3.06047918261869,4.22863690807182,-3.42488987813843,3.9276040639319,3.23048486378864,6.53869998768541,5.68304711149149,11.3435132299263,4.03469108748442,10.8834789050925,4.5378144446943,11.4902544671478,16.2137039298423,7.44937229399023,13.7996301678998,10.0091158443402,14.7440350187988,23.3640790958256,16.7190733581594,17.7722117814412,13.8427902555023,19.4518181497663,26.4585768607068,22.5282846384338,21.5897463071992,17.2543081935577,24.6050190525277,25.5570334959686,27.0400584896462,25.1504946261447,17.5928451564758,26.27209316723,30.6152995941525,23.9658064089229,21.2440910104607,24.0895613389199,28.425574987738,28.3455467079891,24.9935810841874,23.7139194102345,23.6545548257837,24.8870403983894,28.1109691872259,27.7283968586672,21.4124012012391,24.909722795246,27.021692270134,27.4856567916674,24.0756527062398,17.6690475913273,25.0059857712436,25.9317498443188,22.9237951790708,18.5315498402271,13.1964099777392,24.2706821911774,22.0996487072782,20.290955787203,20.5912038292742,12.5615696882855,20.6434965579751,19.2734872165416,13.3722360985695,21.4927875613106,12.0580625233395,14.8670467160271,14.8703082844167,9.10122350850301,13.8477603849145,5.66717833044844,13.1498240780748,9.73729550062157,3.16050877020296,9.02546212878395,1.16474859051481,8.61382879896327,2.36994275335959,2.9255644287936,-0.237541023230127,2.45323272268828,-5.47556111586377,1.58411852158842,-9.36425790307275,-2.29750725178057,-14.4913340209855,2.90164021430305,-9.41932125772709,-5.303964023159,-11.0582107158497,-4.49883480133433,-13.7009786332665,-12.6098868875787,-17.29484942005,-8.12087834235599,-14.9915807589087,-9.26743318787696,-17.439455274095,-19.1937992137324,-20.5202200765415,-15.2544480371234,-21.028246551582,-16.5569236107784,-30.8898608590018,-18.8529504311154,-24.557581818002,-24.872798858598,-26.6677382636579,-19.9722274916903,-33.2551179882587,-22.2622973509716,-25.4106816028009,-29.688397402965,-27.9670330432186,-23.3212902555294,-31.481374624047,-32.3590695810373,-35.1286116522583,-80.7189256809493,-4.2597490878571,-7.98212680004668,-110.572929143536,-56.2963480049232,-112.524185087791,41.7518719060588,6.04386042643067,26.0250744388952,-3.01948696843967,-49.4901756844955,-12.2152601012293,-162.506861373117,-109.965872661834,-169.130628005753,100.718786897943,14.8492195834702,22.6747130703525,77.8725502480756,-28.6547785460015,-19.4038155856095,-151.966835052741,-219.148266579881,166.530523713771,120.578405932327,133.778595951018,-257.619295196632,-23.7715626839404,-290.363436094825,-189.140061063279,-281.431513966144,197.277700751195,35.614570044717,138.963370010521,206.368891236159,153.594552343799,114.953893414647,-34.5106863435017,-201.988869111018,-228.159547878586,241.70372099314,201.260856665239,275.285017766566,222.536750017525,-274.619361953249,-30.641683964728,-326.270150513321,-247.976844827063,-250.644577077166,245.933440168975,46.0677483662645,225.205689954373,273.978263389985,248.975033545224,-38.7004460158295,-263.877551740363,-248.927968353167,35.3350561262071,282.610674457422,325.101279700978,260.547973893486,-290.843906723229,-17.3613197397283,-258.988511675711,-214.840537835307,292.715953123555,44.8233080268402,292.319558717626,-317.965618529552,-39.0427794357935,-286.313436690691,-252.541008480932,-168.813705526045,266.174651618165,222.289187360019,319.177520875736,255.093582171557,315.967290425705,-29.6834327237972,-240.234350449315,-170.869792601264,192.136553018255,196.222049131534,286.39008628526,224.512544177942,332.806764954208,-228.462008467884,-34.8612856187309,-210.717278810936,-207.504099765862,-182.966653700415,122.84335636517,26.0691334152814,209.571621792104,182.046055902173,309.332556274977,-30.9706098849313,-156.17439219241,-101.956340129251,82.3510573587848,21.9482150454798,170.114307410524,125.748564859952,-147.816101610778,-21.0705391627753,-96.1868610035488,-128.337228466054,-52.6340774422897,27.3226708374957,21.938098798397,121.109171431372,63.4144990214886,-14.4375345820069,-81.6515350465483,60.0816962388924,31.3935281523823,-34.444272978818,-6.37003931623928,-13.1503257976309,-3.79783850017901,-7.15909846184718,-17.0282588435089,9.78190821380775,-4.18475010220349,-17.6209499416447,5.47775177687067,-22.5828755275723,15.8774076566034,45.8063778998186,176.136773497691,7.55144253726304,-21.52868264103,15.0844739030004,-41.0775290203801,23.1518084112732,70.4637113764331,277.187525464463,10.5412894121832,-21.3331963767096,21.1892286939023,-12.219987259675,-29.0324665260214,67.7832112567467,305.950206913125,35.1008056488206,-31.2132352711176,62.7544298836819,287.906880036948,10.5605129716935,-19.778554580108,12.974474445408,61.5380864114002,248.78625612168,7.79139545482253,-17.4959264700195,8.43157429466158,20.3932052167806,-24.0969611668042,7.25408985669364,15.3312364555209,-3.89475438153905,1.02183160812902,1.35627397250387,3.30873863832356,25.6633526028079,20.9862177380631,44.8288310463404,36.7105087301199,78.1582328279842,40.9764508554672,52.0030044027773,43.5223331895551,45.4423082233683,37.1002014528139,-0.335085004797295,-0.310377679830511,25.0961833827435,33.6815111196424,44.1787076277251,49.1852315912678,65.9257816827183,50.0236227476292,44.1134371941809,41.0951639479126,6.71188653786069,-7.21453273495191,24.0013930217108,39.6488471638263,64.5470835902061,56.8039457190028,54.1694643940772,59.2446384495511,42.9786944712796,51.5515896765488,37.3844758913014,26.2224196223616,43.9333060468178,48.923731931727,43.0597373985249,48.9324771569682,49.5937537352493,42.4942708293344,26.948433545021,27.3829204677044,45.2918397935271,42.2931186362274,44.8956760353933,54.2689434084588,43.9718214219565,48.4651345256868,36.8780187641916,20.0329408284602,37.1130663418631,36.1205225198769,19.7840343105918,21.466771058305,24.6978046264903,39.5285735002564,48.0097701668891,36.0252628635866,36.8613926233896,45.5509355865053,33.8708599889631,-1.86478463077323,-8.20933270811352,9.12557113167706,77.8633171959972,61.8060254430617,50.8753264118987,45.2867806347173,48.5390776337137,50.109959619325,54.822506444975,50.3427503247183,39.6814125631047,313.085743452977,5.00529106861711,243.675723871345,347.194802474258,59.0392573697422,52.8681034002039,44.5276656885619,40.017644809315,37.5102901475544,56.1857890636966,35.4760623661723,45.6557833356609,29.3042928181726,26.3441183992178,33.7033657870955,31.8782308201218,40.4383140387169,38.3637859819008,38.5175382317425,33.373053948774,38.8093008910124,35.2501159068936,26.3196159140317,29.93279902296,27.5439402170553,30.6094105549317,27.4661048644572,30.398909641865,34.3470706761347,26.4547695256238,31.876730764756,30.7090916573358,28.8659505885809,28.3356429850242,24.2806059106017,-1.93616021888748,-7.7436908241758,10.0542994192055,28.8436642165078,19.8004432231255,38.4581222393151,36.2056088712542,44.0789143557019,50.2469778123527,30.5807855992233,29.5640915202228,27.5135726052889,22.4921841712085,25.1256579132228,25.1374539202803,23.2115518931469,32.1866193733004,3.8220436372195,-3.63847425088746,-5.56265673865509,-6.34915357764524,-3.19650618469173,-11.0938464197563,-6.05437680172929,-3.57400636089625,1.12298092374995,-1.12029320939972,0.676107816869949,-0.931911827657127,1.07863298669159,-3.09276267927173,5.02290105470003,3.79866520783312,-0.830058988299,16.5241540980368,32.9594061384324,24.0881650464892,22.709703657845,41.0578742061686,35.2099541236446,27.6944828140469,30.2110798004969,28.7256085357115,28.7689637706672,31.8410186054113,34.1757931498582,20.3271770875262,34.7917883825529,28.7799318375109,42.1424907949956,30.6866359245783,28.7261782410871,35.7857711609259,21.8611271485992,52.2771077152676,24.4856595889203,24.7966709127012,24.1090993965255,26.962452872913,21.6520110671604,19.2179841264434,20.7959796939065,17.4207026236086,22.7832409813006,19.3313803821104,18.4784819617333,18.4842777869892,13.9954124906806,15.8511267484587,16.6201196634836,17.3917452659454,15.4113484996581,11.4677830694255,17.6799233015812,20.4056060349887,21.5364646720889,21.6023243088408,25.1487800480538,19.2203382934231,19.6772097719124,17.5389217844625,13.9515148213155,13.1559730995597,11.7554966347488,25.6926129663179,23.1373044753788,14.7005056553399,14.9362394802754,11.1991521581986,13.1826947494053,16.5574208760667,18.6587188242414,13.9129801086414,17.5933790754488,16.936462750743,16.3035639402797,13.6625235593576,13.9466531044685,10.6173224597782,12.7792032599106,12.1846118119323,10.2934313476133,-0.323813795122542,2.76646568451575,1.6519680463196,4.75235170664458,2.97628793370042,3.24612630382282,4.87037314343707,6.63785328672355,10.0690904240421,7.11327466740862,9.21579767261857,13.7953515227362,11.7331017733806,7.32273771649874,5.50446544647574,15.8361148061438,8.01960834883574,11.0130192121628,15.2559489123677,17.6034326611239,13.3655146338236,-12.6115192440662,-12.9035771917676,-10.3097990322396,10.0961129333245,113.59925178296,9.68517840935378,32.4094566418751,31.1708410620187,30.2280131021565,38.8663095786357,53.4134901439567,25.8631577729724,34.0351344293586,46.1728392388375,25.480781715924,20.7089913520453,14.2188378826495,16.5329484146908,15.4508167968011,16.5672891335771,42.2742623135127,32.0469969985625,29.6773077626446,38.9154100204395,22.3179999678427,25.2974717924462,19.027210961205,23.3257663515626,23.3354479528658,22.4747817895676,18.0737110953211,19.7134051532778,20.0733029024142,18.027667551602,21.9642999389575,21.698166742751,25.9043813825034,17.0486416236686,24.499876485688,19.5668981085238,27.2390760256902,17.4047926041157,13.9982487910966,13.8835962109391,16.219217163062,15.5864290036835,14.5090890285153,10.5562508820435,12.7998779059002,11.1485862024799,16.0308057746231,8.31818375530225,12.4386257573206,14.2103875885867,34.5823164528375,37.7334947594613,16.310446759174,11.4527907353045,14.5543035603168,13.4110285906236,15.6881792604316,18.8438889027593,11.2824673314502,7.77632488455644,7.93153619722257,9.16181509764362,9.42999727377859,8.9459545258686,9.24134455157768,20.6944645578471,15.1562017814412,12.7880306970262,8.69021332393459,10.3015759718528,11.4522111213752,7.8008414263028,9.70529136225404,9.67855384119303,7.70230187213792,4.69527960714327,6.36104905907589,6.10733310091926,4.90243990116456,1.85368310579646,1.728741601749,16.5594169851686,11.2800335968344,-13.1921832459537,-23.6335240989562,-14.3346359448552,-19.599594364723,-10.971764317608,-24.3596284135193,-9.18146161160935,26.741759994102,19.9736267455732,22.5381170603527,19.8308466501678,22.1976259069078,22.6985801032315,23.9926448207092,19.5930619117065,16.7817089987825,16.8562474907087,23.9117061160382,24.8254302392329,21.7198543891111,18.8867030934965,13.0063883398227,19.146602185483,57.1521559255477,40.8702306082998,39.8548306593669,32.2228109022875,20.4126052721949,15.8316297767664,26.1929409660222,21.7483956039483,25.8236340844281,29.8407224810655,13.4643378628517,12.8491228965863,9.11650706284075,10.728145872782,7.9543886454812,-7.74991394079672,21.3113425321452,18.1323658914167,15.8281178075384,12.256938817248,25.4593957051679,16.1424966580423,15.0505376426652,20.317003375623,10.8627043980285,13.4786464841458,12.7194069094586,7.98263629381351,10.9980761545215,9.95445527161356,5.8748646929292,7.54048304430414,3.71923333974219,5.64335755566683,5.46088474317645,5.95238276362192,8.08198887525918,29.473185547031,31.8383087011744,20.4409727705008,19.5889514980382,25.2522331535309,20.9598426288362,23.8438017491257,22.4391242784198,28.1638937804163,10.874499999628,-7.43449072178211,13.5025415623231,14.5323304502493,13.8223085190127,14.6335872715319,28.2093460795404,24.7958501217226,16.9362939855823,19.0613765028071,26.2271858105984,25.4311235842086,34.5149800155113,19.0463041110017,17.0795937582008,17.101175426246,-5.53905161695001,-12.5524735836036,10.9801446347643,20.8285660432662,18.0527348351152,21.2635320592167,22.9822641374316,19.632400114654,22.4322610483645,16.0899132479415,-3.15266710077603,-1.60699067279365,-0.190849716557717,-0.957539783036924,-0.125061000257791,2.81353198242319,-2.97306364539451,1.16522806108452,0.417456292751338,0.378199498814981,-2.86114044105125,-1.44694902021691,-3.66980709494269,-11.5848688494213,8.5782954008084,12.7882357229876,11.0316554565906,14.5684689392255,24.6401927770358,-1.96166790974931,-2.37343906496872,-7.48023990019817,-6.5642994420739,9.00748102924985,6.62425509704198,10.3442956539024,7.92680362217263,10.1525828135607,8.16578786342506,5.96456544700785,12.4549192208797,18.2779121712119,17.2674464021367,25.2031305945976,29.395012016687,26.3052949754613,22.8544183551413,29.866041503429,23.6777467720149,20.9207071204157,22.4719315423272,19.7064115503735,17.9204508836187,19.7521327119277,20.0118072830721,-4.95038271881109,-4.82296331209054,-6.13857462135581,-4.961528625703,-10.7554048037335,-8.47554700000594,-7.60608908424656,-9.97570220252858,-10.385741570794,-9.11193101722411,-7.64140068619035,9.29843214160065,12.0829234237025,10.7958182697846,13.107312756822,11.6461272030215,3.01727072966075,17.4232837514419,14.968236918297,11.0280062631042,13.0911659174521,12.3475150858048,12.8717524885891,17.218207612218,-4.59176959448039,-5.32238419289462,8.58040608438712,4.59176638831496,7.05282704219153,6.63103747571,5.89641494881509,2.3761080896265,4.07770633723529,3.70958612772729,4.97363980965938,1.70584101095234,3.60940972178382,0.458716463517774,2.82819973480379,1.76567237392393,-0.826787038141157,0.11275509020073,-2.54591434998258,15.1936382021592,10.3906261032636,8.10809529944126,10.8838168251942,7.74258100621161,9.59355542507076,9.29555560715103,-5.22267090654482,-0.216604535286366,4.41458310392601,0.847894759304527,-0.541734320768606,13.7092983967714,13.0742342707256,15.0995276107202,-3.46750133142259,-8.49369531087999,1.10288524285279,2.16043077241626,6.35639733331762,4.75781354199349,6.68885492624029,5.09921113252563,1.99398142094316,8.53593594440421,5.01900614018545,-4.95876851139048,-1.20460728932992,1.10302969650854,-1.32376664238396,0.395834031528652,-1.69502190201618,-3.00614496783699,-2.84234560046693,-4.33216869899563,2.67632304452957,-6.06006678494337,-6.29669737222516,-4.77263733619294,-3.22514352329115,-6.27761480259093,-4.29187889930154,-9.34642655196523,-8.33461736340655,-6.0893121475629,-7.79310744906547,-7.45481992324579,-12.2636249388119,-5.46852741481353,-9.92562413405016,-10.2758989865279,-12.2614314557397,-12.7275137361663,-10.3330989942397,-9.76358417213979,-13.0675138553058,-11.2744218731189,-9.92534904492605,-7.75309030334524,4.09033753777231,3.57884492828966,1.23447044433988,0.913145062727697,-2.54976756847219,2.3080309124255,4.19783789596419,4.20855097349025,2.92304560937987,3.94153480508946,1.97616057918955,0.144062511770639,2.03470891988022,-1.38994184822753,0.506957160803279,2.38231210110706,-1.29554266393522,5.04396621884987,4.21424663974776,3.44137677493186,4.58441643278803,2.92272638133213,-17.5271810619906,-8.04951014174546,-6.29460099215366,1.22708332269823,-0.422193639836545,2.28607791403068,-1.09731658375654,-1.57422310528027,-2.02736641675488,-4.9965651075844,-3.48642332126507,-4.09246619631785,-3.08527754878845,-2.83730542173423,-0.212822759775272,-1.44528283582621,0.570013464290219,1.79071618701089,-2.82699738350112,-3.81587035918607,5.06522753721201,5.85917797745754,6.6611611467042,6.21011727173318,4.9475241487293,-2.80591954249551,-0.325551494775318,-16.1431433046483,-14.6263975164229,-15.1150185364057,-16.1492634732124,-15.6146898022521,-21.2566206923356,-14.3074669490055,-13.9750994797969,-20.1453164848753,-18.3365442988419,-14.1458637561051,-11.6136049690432,-18.7637207896818,-20.363441221956,-10.2002020422962,-21.2920148465144,-19.0679139587711,-16.9482153892363,-13.5902967344654,3.41739306021051,3.61467190078787,3.35407151865182,3.17769589063127,4.99830582015271,-6.09008678243746,-4.03955936896335,-6.64999497877984,-5.04686682904197,-4.06908859326359,-6.0514807361266,-4.00076832011793,-2.25330360527233,-0.397558243925504,-1.65844593509621,-0.812011302929465,0.989640152592427,-2.65566796642219,-5.85381974797755,-4.81265363918872,-8.37398414444216,-7.19628378321164,-8.69921468875476,-6.60456957746284,-9.05982091933177,-2.12764188807151,-1.30290446287177,-1.90098285523854,-7.45488204353257,3.41609336626858,3.70179865397252,5.37975529279025,7.08189168910244,1.21524359433592,1.43718777640319,-0.263443821859629,0.843568678925429,-0.535006285675598,-1.65696993046726,-2.01017399006594,-3.11437086079468,-2.14776287524015,-0.433458650776209,-4.12648354066667,-12.5634156937602,-16.1975949798041,-20.2265709661086,-14.4382153334338,-12.3719382021563,-10.9669189905677,-8.38376527574533,-13.400703552059,-13.1693073981987,-10.1932592961266,-15.8948908727343,0.800947368879768,3.37034719737173,1.90872981923652,5.81342958606125,6.04199797461517,6.77822561030556,-6.55028930151015,-7.88540366108086,-9.9006802556536,-14.275001370804,-5.87966933838576,-7.91641349215459,-5.82351829332069,-7.31428787679825,-10.2375991453075,-9.35500186051437,-11.7624588355106,-9.43785966067069,-5.99905790199441,-7.52817382909112,-10.2788937661175,-7.92085524001185,-9.31101292101394,6.14948936544492,3.40212280961789,0.660425208660731,0.22802423017706,-19.5460135841829,-12.3395334953824,-14.9433370743825,-12.2890472991712,-14.4401927745214,-17.2051391183886,-9.01526185631531,-10.0419774117048,-8.18791371871347,0.744460966054448,-0.644672913430517,-1.99393372789324,-0.515097248819674,-2.55808328513144,4.66170956423948,3.83814403792069,4.49175858531169,5.24927987354954,8.7472095547407,-5.0713692407965,-11.0589218644284,-4.05515602600798,-26.2040335449804,-7.39320966010593,-8.69790193873122,0,0.753751629296547,3.43215244514389,1.53545402672025,-5.6574408132071,-2.77609194679575,5.37241776775857,7.4341947737174,7.01630065528387,-10.8345305345558,-13.9222586274891,-11.3802137754147,-10.3895064553039,-13.814936386779,-13.7598887107334,-14.403359473864,-20.1376999488664,-16.6887113497547,-16.1045764453397,-17.07608384206,-13.3707818437972,-23.2149480999604,-8.83121398031068,-12.7676476770563,-6.69631814610735,-10.5846866801436,-11.6971386695047,-10.8957452170188,-12.8380725304706,-10.5819512537567,-15.3407592935969,-8.13685998699815,-13.8240539155093,-15.4204646517878,-9.63672983299605,-9.96923185474675,-8.08950020545942,-6.11300676551929,-6.89447580400981,-5.21306416488635,-3.99121021691298,2.2384592708471,0.330414599919755,-6.27307022259666,-4.4302933978977,-6.96004017291689,4.55475718233012,7.3725070600683,6.85277565142392,8.58842652918834,9.15805318247701,11.0093935099047,8.65689027301742,-21.7941871239511,-16.0205923521993,-25.6742472828207,-10.5475943564307,-13.5403858286797,-16.587605756795,-23.1531439258898,-27.1229242581352,-6.75864503306998,-9.50318300012625,-8.48584284554864,-11.3003083965904,-11.9694212270734,-14.770159327128,-13.3330745218208,-12.5704749258714,-14.4605329863666,-3.54850007101771,-4.29213978222726,5.61774494516482,6.3833604285022,7.09820365355175,4.80394660728362,6.36881974880864,6.29080324433747,-21.2090387644824,-22.2037282378723,-24.7518088966799,-14.6180870427748,-17.4148612298861,7.79656859998649,9.61083990479181,-28.9927900947945,-27.310575665017,-37.4012088103138,-29.9855863762055,-29.0441268123862,-36.1544767321551,-25.6358107912459,-33.0714632805075,-32.4269094965777,-35.16212842367,-25.5844386589769,-32.5749311761047,-42.455011469892,-31.0379576176682,-28.9852000332324,-24.3129419098105,-33.1144962829095,-22.4716487979364,-16.6587406317273,-20.9841343413896,-32.2157853704303,-43.0823307603249,-32.6650908849732,-22.7412111510022,-25.2538839063507,-18.2466497515228,-30.2585832895843,-20.1001168917628,-17.1879242746218,-32.9128007966003,-32.2143181925686,-38.3836895449166,-26.6700969705663,-17.8734185113809,-18.3602603647109,-22.0780691803294,-37.8557388201204,-37.3514046300538,-53.4781889850586,-33.4755646284157,-16.6495209389133,-19.3193307819941,-15.2972516603791,-19.3650972543372,-22.218222218591,-20.5607973951413,-21.8951739345096,-19.8332440832353,-27.9972038741752,-24.3236174186258,-27.6827386591521,-24.6073826517516,-26.6229171225371,-31.8681824254237,-32.7700271896686,-27.0454548430451,-28.7106387813661,-29.4901887578874,-31.9635291432664,-25.066730105021,-22.5304474121722,-28.3908746945864,-30.4431477584061,-17.1459819926777,-19.4078753806837,-17.0940739098257,-15.6747724060069,-19.552630775331,-23.4290086835767,-21.7946875458506,-26.8749779999898,-23.8398421005344,-24.8872371513003,-28.9241514861102,-27.8376729598044,-34.8518657875973,-29.9043247802017,-26.1085414577036,-35.9757306714354,-29.7704820298033,-22.9679305691751,-32.4378820825973,-40.7521532744499,-37.2604883893039,-41.2709457300662,-44.4751573413094,-57.7048404135975,-28.1079557604255,-38.8751544368667,-25.3994291167167,-22.5661871170774,-22.9501833950453,-19.3461222582487,-21.6505485209087,-17.0610071674358,-19.0645286104952,-20.6813738438899,-42.4449352071633,-20.6134901503772,-26.1590572326288,-14.062179969933,-13.6251642711944,-24.7923215123497,-21.0310728802543,-20.0709121535343,-38.8368926909512,-45.0255584803305,-40.40834884271,-41.2696175407393,-53.8480523807808,-44.4620145041812,-46.496765144863,-17.9149392771627,-36.6495322296672,-18.3576160993623,-23.2114874581253,-26.280629647965,-13.1664033932571,-18.7246937527016,-36.2378139731373,-56.0680968344661,-38.4511597079265,-39.4305978828475,-17.4806607453423,-16.3721256836426,-28.1093370084666,-22.1193248660651,-24.6086820512793,-24.5024429801165,-28.1183483546878,-31.3208208293166,-23.3077228451411,-11.1684949664917,-13.1130513047241,-16.5997295435066,-34.3623525385045,-46.1708635382188,-36.0759698979814,-34.2386545970461,-40.9363123631708,-46.8316886537536,-48.8819720108854,-30.3755300859264,-37.648319750651,-49.7365433768221,-29.4875645944498,-57.7289383515011,-48.6439593620829,-45.9326109934375,-35.7604463336639,-41.4787696372422,-33.920229345742,-40.355039887875,-40.1518835152136,-44.0238877486861,-33.0069803433753,-33.4457768490575,-26.5199643905081,-31.704087971142,-12.6001955347262,-10.4136716908616,-15.117142306433,-19.1100794756206,-17.2305857189586,-23.5355979912976,-20.8958749949216,-21.3404687836948,-23.3006280242675,-27.1579661516905,-21.8930528575797,-25.6180839910214,-33.7185030173638,-28.18402383165,-30.4800813581244,-27.2132498038713,-29.9796275778064,-35.7135843853255,-23.963722980371,-25.7364733514363,-38.0836623832572,-36.8562967179603,-38.5311798620339,-81.0648145052111,-39.2957626227585,-36.0523407824592,-30.1304195212035,-17.2289562859509,-16.5860442095433,-17.8109671396966,-31.220696361187,-36.8986916253688,-33.0636936250859,-40.0722001209227,-54.4230599291132,-33.2281743008429,-42.5358266433209,-38.3935014340146,-43.236057737546,-47.1246760917275,-52.7571663450406,-44.1423692072879,-75.67918647534,-38.399243565427,-26.6587537935428,-29.8633359983315,-15.6029104234154,-14.2591917560718,-11.8963057389964,-22.3510086282637,-14.6179792152653,-54.3209543531129,-28.8823713904942,-26.4699360706445,-33.235923076654,-34.9858778436305,-39.7357497899679,-48.3200667475236,-39.1930808598725,-61.506897720483,-37.4008371074666,-37.7504503592063,-16.2726029953304,-19.4993931655604,-23.217918510861,-20.0898968891482,-42.9243379065502,-41.5869283148714,-44.2301759178782,-43.7678215890433,-55.279957316349,-45.9808783333846,-55.4157352206346,-49.6776369551679,-31.1760486871319,-54.4437381739439,-48.1138923730861,-62.1612472875138,-28.4710300118605,-48.5165192239579,-43.1631705179552,-18.9462380880723,-20.5670043224346,-24.4891605379794,-57.5610235345052,-49.2201894197113,-69.1634245223918,-17.4007486343634,-23.771808505469,-23.892251080002,-27.3589864186023,-28.8605747217994,-29.9856810894407,-24.4876294600479,-33.8991812052056,-21.8349010173727,-20.6302212605063,-20.7967905511857,-25.702767830616,-26.6454814592137,-28.1030362577427,-44.3780986318308,-46.0162020165569,-21.7560678755111,-18.7145778949906,-18.1400295225803,-26.0983403256385,-17.1818225034258,-31.9156065196423,-39.0925650906147,-68.1264401494275,-29.7190143823502,-117.098559532361,78.1626735319463,30.11114070874,-162.613829269084,95.4522117803876,-207.062314158252,197.778532913004,-246.748590283224,206.178029681314,-268.409297377741,264.191902379618,-288.610223342719,277.73858801716,-268.531779115539,-279.349358911874,-263.001489386105,-230.566849905327,197.751272648111,-192.551827135852,139.095940755399,158.285690695166,-145.264337829081,36.1224313075948,116.90066731703,-94.7214675408261,-33.9771518016669,11.6859810869995,4.56025255875578,15.1765235793188,9.09840861035321,15.2624394951261,8.60057020598085,3.73869625334516,10.6951357170342,9.24729585201301,11.1760313423427,7.78491600818413,5.60410719269549,1.20597147603223,2.93563526075445,1.17560397738133,3.7100231569073,6.98654398468884,4.08169643762072,8.96075085040902,0.696991327980386,-2.02458688149054,-0.626871811958294,3.22440798440013,3.22516994219879,35.7878046078418,6.25924168089859,51.2671672952852,-0.350718244680535,-0.145250954204246,42.9054866494009,-5.85727803442752,42.4361121324515,51.0104615114632,54.9965742482881,5.18051577292238,60.9379406641488,45.2617640804685,59.6250179839388,67.5300019563761,50.0313860659083,42.7738052723046,45.0950407555944,71.5927267985016,42.4834915940557,37.7740641010463,38.0846304159894,33.4354721518616,39.6911452343228,38.3852460629429,34.4101273943933,30.5816161857702,32.5650220929604,31.526881814169,28.3018552220541,27.3319998439411,35.458286839873,28.5078365690751,31.5544055613618,25.0429869701776,30.7274111841052,34.8477404586978,27.7734978693795,35.4010551719135,29.5944787696987,38.5620076521997,32.7224854236099,27.1149465652197,44.3036672265102,42.6867299721088,36.768908223667,38.2852339023146,36.9870128253535,32.7057949833503,29.4358473487867,34.059823496152,28.3177204458442,24.9898276731164,-0.517311085149939,19.547538859631,57.7472987559009,33.9053557339403,16.1250558193669,7.98827266648256,-20.7084463005803,-24.4174448558045,-29.0812892072055,-37.3042171593718,-22.1013425988245,29.217765814092,8.9024834127038,23.902531283375,23.3984395286585,41.0588109321174,6.82437617695784,-9.66660173006403,-10.7368785647644,-9.58508053938253,-14.8980267973628,-13.1933340500753,-14.3859571227103,-17.8445567226717,-13.7801969235389,14.8146863792537,12.0576377443601,11.1582637526644,9.95021213536041,11.8303812748744,16.5696432516554,-8.7401245646429,-0.296033103643772,-19.2785404728952,1.74764750910106,-3.94675311758868,8.02229335262221,-6.02715303118209,-8.47566640915208,9.65418208908924,-2.69581606685188,-0.954861617984034,-6.56103174071631,-9.33490108437202,-8.59177087360856,-11.1287870410533,-4.62880100108727,-36.0158810765468,-13.3280154761269,-39.3052681256871,-43.0128775476604,-43.437203180548,-65.3410936226008,-23.0872433229749,-18.28257122945,-26.6788454858213,-14.1852519852934,-20.6857258931425,-16.7174927494317,-15.9544977925532,-13.6049962696629,-15.3929836164788,-12.0703843969093,-12.6553764770458,-24.178486854334,-44.1906264308773,-32.7589598585403,-59.538840669848,-59.9320703887842,-58.5126170545717,-43.2098433033055,-49.7618482823899,-19.9025535229012,-43.5494918956374,-57.8434407311994,-43.3658248814019,-61.8236346813677,-52.9742427551787,-43.2800865193226,-32.3283673446207,-41.310609193317,-73.1574920674923,-40.3039392518277,-39.9289746227308,-33.4991065208551,10.2591856301457,3.47292516155318,-0.672681221783556,-4.03815792892333,-0.996116323257041,-8.87951883503892,-1.27997468967842,-1.92217749336456,-8.5281614910869,-4.53691968443294,-0.0986157578903974,-18.7814373028041,-16.5970590251888,-13.0172495090218,-9.86402352282811,-7.78630751321965,-8.89139351147448,-4.17411985490713,2.96512622260192,-4.17741134200537,-3.81869101741636,-4.87277189779411,4.95726136588249,45.3100082344922,25.6932984690592,-7.28471430881166,-70.6810328024074,-0.671302217468042,-8.14899571151589,-29.7720215186662,-34.7822116503412,-34.0262164076833,-31.2082681429623,-32.7102337970798,-31.0039602401407,-23.0408179617299,-28.2433513622177,-30.1541106724469,-30.2509989542494,-22.096679367138,-26.8112802376084,-25.7401549515537,-29.9633061863723,-27.0228500219465,-25.742014593881,-18.5069924299189,-30.6228043514776,-15.2458349083127,-24.4733920796088,-20.9361077022888,-22.7496672055734,-13.5756636311858,-20.3928909190199,-16.1969933817171,-23.2443516475511,-11.8746209290191,-17.5174959090944,-5.88882018171493,-21.6719896618496,-3.82928282734332,-15.987959649479,-7.9023901876683,-9.72581998139372,-1.38219446219577,-8.69899370922655,-0.246812562836972,-9.06748454677047,-3.50206040242893,2.84861237494483,-3.5101679885527,4.80629405319691,-3.87623796927079,4.43292113145991,3.60272635812312,7.34143636949461,6.35639684285636,12.7581977316061,4.47901267507223,12.2789920230972,5.06271564497586,12.8977892714455,18.2134313434181,8.31373563087294,15.5477695085974,11.2087620490098,16.5533423676316,26.2653888814689,18.7366011622331,20.0008828568149,15.5157013585682,21.8369903471443,29.7268213581633,25.2573087999741,24.2834452198234,19.3464837408268,27.6213857038726,28.670285098811,30.3494328799727,28.2944417535133,19.7208963777466,29.4995811658843,34.3813189961165,26.9110268822847,23.8710464429364,27.026107980754,31.9045040978058,31.7923550897695,28.0633003313566,26.6362984717329,26.5491944017462,27.9543604689295,31.5540628033526,31.1691719652421,24.0430081298163,27.9607297917488,30.3346455958479,30.8365248013536,27.0716014570561,19.8299731343158,28.0759434604507,29.1062852619302,25.706444319341,20.8525636612761,14.8022881839828,27.2575712641592,24.8102409354712,22.7477681964005,23.1806708548623,14.0718053798272,23.1859555811271,21.6376853411274,14.9611305041095,24.204303892721,13.516130669098,16.6929553200546,16.6935084047563,10.1721667274632,15.6206819331494,6.31384000826684,14.7796158767873,10.9301883085673,3.51436986912849,10.1978926790981,1.25056128314803,9.69821722468181,2.6367788512168,3.29758188864372,-0.288964044533218,2.77780372822917,-6.18956523525158,1.85287261232522,-10.5882099032793,-2.51243966106379,-16.3184674225089,3.28374478303353,-10.6138195166724,-5.89721010672071,-12.4756123387549,-5.01365274019193,-15.3748445296492,-14.1341176450032,-19.4402955025541,-9.07191517325059,-16.8872279799876,-10.3743850394966,-19.5632844177506,-21.5228551204746,-23.0481313291823,-17.0984959456109,-23.6578639900394,-18.5295713713934,-34.7092071327453,-21.1339399941654,-27.6383740162149,-27.9217183870446,-29.9898993366866,-22.3650541821492,-37.3567045185,-24.9809819806274,-28.5842814025756,-33.3533864793098,-31.4291683337236,-26.1602819786133,-35.2686949805184,-36.2440407777029,-39.4382377217051,-90.9390148577494,-4.77789403232538,-9.19046208608734,-124.508478869823,-63.4382504949699,-126.767494509445,47.0355658802254,6.87456554270466,29.263196249896,-3.4848978153208,-55.7118750365356,-14.2091820486673,-182.932407858075,-123.90745858038,-190.483872931778,113.497819675444,16.9868043833151,25.5911550721468,87.6596246692053,-32.2346204174755,-22.2962596245178,-171.233163183513,-246.765588115682,187.549757755404,135.845013412416,150.652790321396,-290.037556292837,-27.426905755436,-326.891270808952,-213.111709320871,-316.968626604721,222.249951468804,40.6784529851182,156.577992864249,232.374735248937,172.947085931081,129.519413781339,-39.4536694222228,-227.56440218765,-256.995555955362,272.241294131191,226.753519503274,309.972324004748,250.669389299076,-309.187669444508,-35.274258646981,-367.352564461982,-279.33881541351,-282.311444721214,277.036217252975,52.4996465426845,253.738469942712,308.526980143291,280.423189785914,-44.5774728935268,-297.214293854805,-280.398109874402,40.6812920753234,318.341923996051,366.111961708853,293.473857162294,-327.460601230334,-20.7969537363403,-291.765612039171,-242.033930730678,329.67623874285,51.4364482387056,329.149442885906,-358.019180591555,-44.7823789355249,-322.371152379366,-284.50286504621,-190.269974018873,299.780436432921,250.445797898159,359.426255882994,287.279790779769,355.65874941378,-34.1897065847297,-270.573888240552,-192.490283802633,216.430684429149,221.068958510993,322.501762983818,252.87203507284,374.770789649441,-257.303368257365,-40.0430220658278,-237.269787758694,-233.716151641374,-206.072558255296,138.376426313531,29.9360000596917,236.054982886528,205.043597371752,348.315963341885,-35.4862723113209,-175.906695176994,-114.858641792968,92.7643711545144,25.1460525235949,191.578291616469,141.694708877149,-166.423781288743,-24.2310553945522,-108.321583671501,-144.523263334784,-59.2837970141387,30.7704139560271,24.7014893778315,136.342786694987,71.4854097427328,-16.5277054667574,-91.9297508563353,67.6275360847913,35.4208470311151,-38.8233944306193,-7.2506899560687,-14.8201822462744,-4.45955197018463,-8.10872204121833,-19.3510511599764,11.1353137735932,-4.61807973373608,-20.2035051418813,6.41432962669147,-25.8626846482738,18.3636225428385,51.3725201939085,198.337949935679,8.9860536850125,-24.8245946992112,17.4226257499703,-46.6588022197099,26.6272202315902,79.0449433072258,312.130782245065,12.6351090657081,-24.7561460884488,24.527259134812,-14.5109531159058,-33.2068300769411,76.1668426065274,344.523793671859,40.3622870257339,-35.5250761564407,70.5049392333913,324.209312317773,12.6314241062095,-22.718114454771,15.0461776249164,69.0433960438807,280.152299288863,9.47241010492191,-20.1161021523002,9.84561958224806,23.284307509814,-27.3778776323015,8.37053710097152,17.509227190754,-4.62989932255983,1.28203208392026,1.43034205143306,3.7111714466977,29.0613054947677,24.0627968295082,50.7808728297607,41.9448131265466,87.7703176592553,46.7991326592378,58.9306994999544,49.58492039403,51.5116566525713,42.2217638706727,-0.393960816441757,-0.269164969511318,28.3203834176408,38.0111118119055,49.8109850798535,55.551210189909,74.2055758161083,56.4533925810413,49.8054195931135,46.3873430260113,7.57912253073936,-8.15238878603308,27.0865388973737,44.7461397395212,72.6968535433357,64.5507683995373,60.9861080181206,66.7210950880332,48.5065595142219,58.0974186703883,42.193285378348,29.6061177607806,49.5990739507684,55.3090732828552,48.5661144958856,55.2160426481639,55.9539360002104,47.9816414396857,30.3614361652039,30.9027767216362,51.0319296791623,47.7263661803152,50.6560893851428,61.0634666207326,49.6016041014549,54.5062872348282,41.634800543846,22.5942489454099,41.873695781493,40.7489381502358,22.3115864846953,24.2178454965303,27.8711149451758,44.6019580098605,54.2423028832761,40.6149098647181,41.6414964731153,51.3456983630186,38.1817070506688,-2.10684004185309,-9.19773213417283,10.3019745142556,87.4523552521373,69.497729155481,57.4825151196686,51.0837331508873,54.7253740076529,56.5627787881883,61.7306081984616,56.7931191983546,44.7957360228808,352.609928652553,5.70426992745971,274.414039865309,390.942539945121,66.9605080698167,59.9468815299628,50.2970868180965,45.0987516886055,42.1977230632251,63.1976466755653,39.9825348093556,51.3613975666063,33.0253857720302,29.7306707553243,38.0259943479445,35.9428608336663,45.6672687361076,43.2728571153621,43.4264330591701,37.6425293533908,43.8052035516393,39.7460439828403,29.6905809318624,33.768067172533,31.076116005606,34.5242014847979,30.9960046096731,34.2840245774556,38.7131272584951,29.871521566099,35.9431996300078,34.633131713183,32.5747009824975,31.9756300591398,27.3694831905461,-2.18223028062817,-8.72963437408764,11.2938563492306,32.5223584619611,22.3354891798658,43.3524494323281,40.8277203596236,49.7498201384074,56.6660161112108,34.5147621732968,33.3417927985967,31.0306612324296,25.3703961172476,28.3403411939214,28.3668065170542,26.1639556264502,36.3206569141688,4.2978368600459,-4.12335018128335,-6.27456410587978,-7.16510642984632,-3.60437866342699,-12.5145524791956,-6.83156021516554,-4.02576214829157,1.26589964913188,-1.26737132243686,0.757949956352093,-1.04902875680659,1.21753787148407,-3.49027384974244,5.66541901443404,4.28134649795117,-0.931847743360923,18.5444558556897,37.230575506373,27.1689692891994,25.6114581738121,46.3134086925457,39.6951994416941,31.2223678837831,34.1084262147585,32.4227557964586,32.4431389106501,35.9123285079652,38.574549444558,22.9390059478692,39.2608302480286,32.478651663204,47.4252576951009,34.6514530586945,32.4077970134968,40.3478551215701,24.6542517347458,58.6991407541233,27.6303048646484,27.978528840785,27.1833854860208,30.4350685930109,24.4251794111346,21.6689993583541,23.467687944232,19.642630160369,25.701803076478,21.8118316963962,20.843697819811,20.8504757018303,15.7923766054749,17.8766581079887,18.7451397376454,19.6190410335719,17.3862180825463,12.9351898968181,19.9461112368619,23.0105455637113,24.2983838449123,24.3713061928987,28.349062622506,21.6892392647355,22.1879600618582,19.7718878306067,15.7411846378254,14.8452287522038,13.2537567971897,28.9761242254165,26.1059913850993,16.5833189248395,16.8538958484802,12.6300821411368,14.8735082936786,18.6881017994742,21.0581112407126,15.6928510889696,19.8229569538655,19.0982603304316,18.3882844071446,15.4054154619222,15.7389853049849,11.9683459027545,14.4122533620812,13.7445826525074,11.6143464090879,-0.35395334820408,3.12548444375365,1.86404512374546,5.36097015933184,3.3600824238323,3.65848811974736,5.49749223934589,7.48396677720103,11.3528561245248,8.02634510003764,10.3953478810762,15.5493841784341,13.2365763116092,8.25952015257724,6.20939892147315,17.8809473459457,9.04775670252002,12.4203301571458,17.1979855031693,19.8753095297721,15.0754115471598,-14.3437389459767,-14.6028930191002,-11.5944276835179,11.6152824287703,127.846592370244,10.9728161520485,36.5655280774021,35.1522107161422,34.080029330081,43.7318529222953,60.0637339116907,29.1664534150856,38.3826329776029,51.9058754116114,28.748643434269,23.3465799333622,16.0346687561623,18.6589404968734,17.4365333873695,18.6898669599201,47.8544089091269,36.1622154721108,33.458833456375,43.8866550258917,25.1749201134984,28.5518038374624,21.4725013748228,26.3109064273368,26.3060803342269,25.340167747347,20.3881248835691,22.2448768049902,22.6506871358565,20.3200206794039,24.7829378106725,24.4862745275029,29.2374515295572,19.2527843987304,27.6173193508883,22.0607170404605,30.6855439608711,19.6321355668314,15.7938431700741,15.6665632209694,18.2803349919354,17.5864600505038,16.3692263330599,11.9237760969219,14.4282237249292,12.5789197496389,18.081723620937,9.38850729689842,14.0265233579943,16.0405152332297,38.9128974209668,42.5543129524168,18.3928032794557,12.9158229840305,16.4283889850256,15.123881382207,17.704184610892,21.2362001318753,12.7230492590061,8.76256973878614,8.94713837741948,10.3430465853495,10.640966968951,10.0943980832336,10.4202614819401,23.3509724560836,17.1050761480225,14.420649399729,9.79825355154517,11.6272856457155,12.9153915203975,8.80385292404834,10.9489185831081,10.9151695862969,8.68883442395261,5.29688688498894,7.17332840490393,6.89294274333242,5.53446395625202,2.09770807396372,1.9486245515507,18.6143114287591,12.724865707811,-14.8836032398052,-26.4948108911047,-16.1665814024905,-22.0721198113434,-12.3807528404236,-27.4201557291262,-10.3569820477494,30.1515696994163,22.5254164202022,25.4326184149401,22.3880636954187,25.038900690856,25.5981489488543,27.0506165816627,22.1002336751797,18.919832163205,19.0179243355554,26.9907088587922,28.001894266167,24.4885719828157,21.2975124995397,14.6835044311373,21.5990791599453,64.2575140265977,46.1640682200891,44.959792302227,36.3551772978247,23.0267636741532,17.867645429628,29.5625041546067,24.5410570754596,29.1453845067269,33.8889028638322,15.1884832192931,14.4873490979608,10.2811336095846,12.1077155933473,8.9728387880297,-8.75021686570259,24.03572986333,20.4574305386158,17.8459981197081,13.8243083207926,28.7237332431631,18.2132918518666,16.9791198476284,22.8793559185531,12.2580739683296,15.1998437439847,14.3458211599869,8.99918799146006,12.4040977552846,11.2294822914145,6.62941679724762,8.50589236651363,4.19317186457388,6.36783003456649,6.15717267365577,6.71664470640941,9.11915295586117,33.2375732351597,35.9507289495996,23.0692946859576,22.1149174033018,28.4641256521038,23.6626796813966,26.8714054832866,25.3068563907169,31.7138951137948,12.2679795805737,-8.39382110739409,15.2304511955333,16.3979944944231,15.592392919287,16.4956052341974,31.8208776092722,27.9855667836511,19.1142032117376,21.5066208340058,29.4036599968685,28.6808604210275,38.9354132384241,21.483448328876,19.2516120691675,19.2989229606676,-6.24288689791863,-14.1493048394982,12.3831344630205,23.4737387436907,20.3657842055118,23.9838632102902,25.9305779970661,22.1511320792717,25.2888157131053,18.1597853963438,-3.56083283125128,-1.81130351326119,-0.216909742981434,-1.07838032881481,-0.140318868241327,3.1731778976274,-3.35105493339494,1.3138592619067,0.472375442902518,0.425407609580192,-3.22690591002277,-1.63222589565523,-4.13912227271112,-13.0484341166608,9.67119076375735,14.4317485229611,12.4429709460635,16.4438909172579,27.8009641630742,-2.21207484631666,-2.6790380863391,-8.43472544751384,-7.41000121279051,10.1626390450718,7.46962408463922,11.666547437806,8.93407408631755,11.4527883740557,9.22390234119261,6.72146954075753,14.0479729098006,20.6161929455783,19.4722070133567,28.4673740803851,33.1168072534593,29.6915359291371,25.7916666772963,33.7197279487062,26.7163810901857,23.5941376443186,25.3282289591533,22.2234144183965,20.2170408996349,22.302470750393,22.5704506807269,-5.58491654245944,-5.43753598663955,-6.9244758991435,-5.60260442333042,-12.1286288998883,-9.55896698767776,-8.58480383363983,-11.2590355056299,-11.7156536508596,-10.2717990646376,-8.61240760743056,10.4903622326329,13.6342808998549,12.1757836730673,14.7873327142496,13.1424350068862,3.4050255671023,19.6342754983527,16.8930319758928,12.4438883911025,14.7657810107504,13.9281078677797,14.5177045223477,19.4167945853219,-5.1801824158873,-5.99558672202116,9.68090897165605,5.18209021627182,7.95146227208082,7.48038473506566,6.65243345785669,2.67904603237688,4.6021388615724,4.18756708368791,5.6100480670178,1.92408660581184,4.07082905890613,0.515354578782536,3.18756776905368,1.992789058791,-0.929673672613622,0.128537932472203,-2.87202717582851,17.1346007526017,11.7211798017727,9.14438933402666,12.2717024635361,8.73936344863201,10.8226489964856,10.4890208244624,-5.89474685431469,-0.249359382826392,4.9788502008045,0.956127689166389,-0.612674656296881,15.4544500302254,14.7575421856771,17.0325940628138,-3.90738859599924,-9.58259985231283,1.24269072946649,2.44149256558588,7.17030613572364,5.36880107069163,7.54781336172422,5.7536917574461,2.25393846122187,9.62798695232425,5.66802121209403,-5.59452503735172,-1.35890498940917,1.24646911380444,-1.49473276941296,0.446023305882505,-1.91588672529316,-3.39194895806665,-3.20715274059559,-4.88497721814846,3.01794062591134,-6.83741776621534,-7.10593248616724,-5.38178248240946,-3.63829076893413,-7.08297577346135,-4.84373732676464,-10.5375065112633,-9.39915929466701,-6.86861789777377,-8.78936519681,-8.40867887677341,-13.8263465008681,-6.16868412572425,-11.1983625932737,-11.601740787414,-13.8196586154495,-14.3558801102613,-11.6582423757481,-11.0166857753614,-14.734282140562,-12.7188493523039,-11.1926996034181,-8.73786317932542,4.61157436604835,4.03735260240224,1.38820018973527,1.02805201573746,-2.87806583961126,2.60186877898017,4.73872945359454,4.739887709251,3.29971204855388,4.44446089422792,2.22840942353895,0.162403628851837,2.29453383925709,-1.56688037470356,0.571971908054754,2.68933657973322,-1.4623308013065,5.68779108893493,4.74943831778862,3.88588527357566,5.17839534697073,3.29624788274961,-19.7631399214372,-9.08224409419149,-7.10062281224175,1.38442221202885,-0.473792666679701,2.57909856085226,-1.23695035266109,-1.7777282951349,-2.28793901929811,-5.64041309137734,-3.92952070713082,-4.61840997548317,-3.48836546744611,-3.20385024894415,-0.241239268111484,-1.62983511430756,0.641329374232579,2.02060227651705,-3.19127970116186,-4.30095073826264,5.71601858919769,6.61091415035672,7.52022479407725,6.99697942596529,5.58270237895257,-3.16663523630155,-0.36734498063444,-18.2202971846963,-16.5037580287193,-17.0683878992158,-18.2149669783052,-17.6221315626289,-23.9619988525166,-16.138992076343,-15.7572939351246,-22.7277031877285,-20.68600725177,-15.9576339961888,-13.1102733442977,-21.1526967003215,-22.964727805668,-11.5101538899286,-24.0137840249104,-21.5017553117076,-19.1193255776813,-15.3220048713425,3.8506654692713,4.07847716075874,3.78587163890988,3.59430800878751,5.63428450324594,-6.87031141619285,-4.5521305034995,-7.50631165153508,-5.69029772963506,-4.58614761843983,-6.82681363156541,-4.51304981768211,-2.54111981380852,-0.448754335343751,-1.87520074415753,-0.913824690530559,1.11740705838431,-2.99590340507863,-6.60028654500312,-5.43388710492503,-9.44585726294321,-8.10553293569364,-9.82087866081764,-7.45519847047621,-10.2172279144032,-2.40096968502869,-1.46596714327171,-2.14759263924537,-8.41649360762757,3.85225078340473,4.17579913124843,6.07099096177125,7.98707899042956,1.37147311220484,1.62591802180054,-0.296860560145132,0.953482016076666,-0.607974566701869,-1.87031271992558,-2.26626497051628,-3.51450077676628,-2.43029335459645,-0.498485323996198,-4.65586544185058,-14.1732052554689,-18.2645554365633,-22.8276828176904,-16.2931185096086,-13.9443174368141,-12.391532740571,-9.46404715524644,-15.1163166648032,-14.8450960743281,-11.5067311576275,-17.940166728783,0.908046053534814,3.80187239769593,2.15891987781375,6.56587742444161,6.82041150776305,7.65276337016492,-7.39020877949229,-8.89021435567734,-11.1621493812404,-16.0935922832277,-6.63183867622255,-8.92828527142751,-6.5659759907874,-8.2503220114592,-11.5527095878115,-10.5413067868424,-13.2597817265762,-10.6451602405372,-6.76724181428453,-8.49330152128433,-11.5954858630038,-8.93661851886669,-10.5032992873669,6.93680056193307,3.83511103868533,0.745666070760959,0.263666885646761,-22.0490809692839,-13.9197151198883,-16.8544540411703,-13.8635515014876,-16.2828043912219,-19.3976690600135,-10.1670166748299,-11.3227338351798,-9.23279501785838,0.839274363006105,-0.729011559983921,-2.24702651014797,-0.585669496912451,-2.8931168234671,5.26337505257483,4.34691464126247,5.07173400773829,5.91865951176005,9.86613621651717,-5.72988129328863,-12.4729911166417,-4.57610546851139,-29.555754420394,-8.34256057238118,-9.81094893220817,0,0.862133461128395,3.88185485645828,1.73671318992931,-6.37778633853364,-3.14589893100547,6.0695166083476,8.38103879865507,7.92680160006461,-12.2159410450057,-15.7045025195476,-12.8452018210816,-11.7212588150446,-15.586552448206,-15.4909514143395,-16.2586490712383,-22.7065573794542,-18.815882274336,-18.1789676899977,-19.2746032956015,-15.0728118435546,-26.1779902046329,-9.96366430238221,-14.4030848286697,-7.5524692461111,-11.9412777385424,-13.1966794105919,-12.3035819645176,-14.4775658216284,-11.9308984724769,-17.3056941473101,-9.179501036726,-15.5846432292847,-17.4021063418326,-10.8680413797369,-11.2475794989861,-9.13052889503636,-6.89781931156468,-7.78221334437878,-5.88240451200432,-4.50300151297752,2.54072124500277,0.381566298519803,-7.0833970639456,-4.99894869066542,-7.85830292175198,5.1400419646767,8.31374321451001,7.73256786469462,9.68405404359649,10.3384058186061,12.4214245320831,9.76706141591874,-24.5014224538033,-18.1313286223433,-28.9274470537238,-11.9136547837769,-15.2661364452734,-18.7158534292242,-26.1201082057445,-30.6120951780161,-7.62314481686024,-10.72411700883,-9.57021033584393,-12.7439180473203,-13.5079290960884,-16.6617867261164,-15.0255892831387,-14.1849730491983,-16.323409727093,-4.00988512413741,-4.84592799327269,6.34692044870722,7.19412432471401,8.00411217503021,5.42461808584073,7.18573763320802,7.09826690133121,-24.1025296160298,-25.0520858054403,-27.9080334459394,-16.4834391379497,-19.6396329967638,8.7964779572669,10.841207375337,-32.7002729875985,-30.8177203025814,-42.1511722158501,-33.8336723896511,-32.7573485979801,-40.7874710757035,-28.9211752347372,-37.3229273480799,-36.5598593437228,-39.6666906359061,-28.8531972361935,-36.7753056229823,-47.8826517971229,-34.9797588245579,-32.6890838698548,-27.4227279245415,-37.3627392108466,-25.3486253096349,-18.7978824153912,-23.6677203430011,-36.355207375821,-48.5795717719129,-36.8139169338155,-25.645868302711,-28.4938656293199,-20.5900685204478,-34.1140575502257,-22.6655016872565,-19.3946104020364,-37.1160495267296,-36.3475754838817,-43.2582715475917,-30.0752874308823,-20.1665570274226,-20.7099432478734,-24.9128239283449,-42.687504175515,-42.1528561527669,-59.9289812238835,-37.6349537657702,-18.7755613778537,-21.787959194076,-17.2596662342909,-21.8423300549047,-25.0699670089584,-23.1865001228628,-24.6918208368025,-22.3672002504663,-31.5647958420277,-27.4402394724131,-31.2140899428263,-27.7707924261396,-30.0292372633066,-35.9176383144476,-36.9601203123821,-30.4948930935197,-32.3816545930596,-33.2672912982927,-36.0606247221982,-28.2669367448129,-25.4286743376311,-32.0380261056312,-34.3452583610851,-19.3312022598128,-21.870748255456,-19.2910829675783,-17.6722974750301,-22.0591613049005,-26.4257830822788,-24.587887002572,-30.3193647799335,-26.8929492108249,-28.0690456030114,-32.6149368690809,-31.3864806705283,-39.2778493517879,-33.7346061738132,-29.4539362543533,-40.5540452874771,-33.570593086099,-25.8975417708929,-36.6262441700682,-45.9971313373716,-42.015007253938,-46.5905247277253,-50.1502366011914,-64.8941046046416,-31.7643399044665,-43.6306978046458,-28.6595735277818,-25.4758634455376,-25.8925208737677,-21.8004432253625,-24.4329032993048,-19.2482659080655,-21.5201623311485,-23.3244471319148,-47.9097301307374,-23.2604214439616,-29.5167918595125,-15.8713728485089,-15.381529525858,-27.9747871986794,-23.7205611170462,-22.6520332963663,-43.8098219209733,-50.7406917197445,-45.6375468655712,-46.783089376571,-60.5767313552093,-50.2250757447359,-52.4340957258412,-20.2159922001918,-41.3378782850472,-20.7012755903236,-26.1754345168313,-29.6261002053553,-14.8515748592748,-21.1318582186245,-40.8512882538439,-63.0314321489401,-43.4017324473467,-44.4661633565536,-19.7132358916846,-18.4651463492861,-31.6815425426639,-24.9505007158844,-27.7610419359757,-27.6533890688719,-31.7115692031444,-35.3390396089304,-26.291690128337,-12.6076492026131,-14.7939889921163,-18.7206567948625,-38.7787287993142,-52.2724793572291,-40.7007345144397,-38.6113309384302,-46.1627139601583,-52.8576019452546,-55.1041164568913,-34.2705760257454,-42.4639314797638,-56.2517637742251,-33.2675779832939,-65.015268306915,-54.8786902364807,-51.8170904127034,-40.3394118091737,-46.769938425037,-38.2973253827908,-45.487861332054,-45.2341389297551,-49.7021438639309,-37.2621721881157,-37.7427290725824,-29.9438635901583,-35.7841868036049,-14.2045900060529,-11.754632073198,-17.0514251104125,-21.552368379559,-19.4531709924889,-26.5629646729756,-23.582847107574,-24.0611545023703,-26.2825460490086,-30.6223799496979,-24.7074159070758,-28.9080517149716,-38.0496540694085,-31.8049145041582,-34.3846671648649,-30.6785735795519,-33.8344546809445,-40.2428594452297,-27.0298088923494,-29.0251320850374,-42.9693453039744,-41.5445009793339,-43.5461996374467,-90.9270761841966,-44.796832405203,-40.6748079990002,-33.982272231787,-19.4282519798281,-18.7028615943006,-20.0976174921629,-35.2490435573659,-41.653010529917,-37.2966235102602,-45.2265194018633,-61.3021191092829,-37.4727540175652,-47.9664057857636,-43.3439355155611,-48.7582985585668,-53.1044118148915,-59.4511391594717,-49.9566104151983,-84.9438524110106,-43.9101039557342,-30.0895234768485,-33.66327234376,-17.5936166207192,-16.0889350221167,-13.4191955653307,-25.1982429117805,-16.4889191625659,-61.121012217939,-32.5836055345952,-29.845294429588,-37.511170565466,-39.6116864878157,-44.7621645323247,-54.3858642907403,-44.1587814745539,-69.123247923459,-42.1885877677392,-42.5755475127659,-18.3515063424704,-21.9933896867983,-26.1866414256702,-22.6647704567849,-48.4329570513275,-46.935461218345,-50.0011429620405,-49.3948247123094,-62.2044305630196,-51.8329006167468,-62.4195446377784,-56.0063021750314,-35.8206676388807,-61.5356109121153,-54.3130470816364,-69.7437646056863,-32.8504358051923,-55.0860597628942,-48.6854063945598,-21.3859234194423,-23.1935686297288,-27.6201770536435,-64.6832957559792,-55.2653853912677,-77.7123454212898,-19.6369170604053,-26.7934103964079,-26.9577556561434,-30.8896072482391,-32.6361971976641,-33.7979511284837,-27.6244926229411,-38.2572945647468,-24.629690457125,-23.2714792603795,-23.4546152361107,-29.0537690151814,-30.0930317192155,-31.611363095217,-49.8348555654068,-51.6781211389876,-24.5640912309843,-21.1381352604923,-20.6902728945732,-29.4977234179209,-20.0543516835014,-36.0158568852659,-44.2262797525208,-76.7242288905103,-33.4744930319272,-131.88103167041,88.0311086738397,33.9279168646681,-183.161554404832,107.453589812329,-233.201586794572,222.742538972306,-277.909617736152,232.124053831702,-302.312650096121,297.458943684503,-325.005997200563,312.819835568524,-302.491722145916,-314.609193876875,-296.188265712992,-259.660920334361,222.712408841308,-216.841751125808,156.655959905605,178.243135580365,-163.582796771149,40.7523706962544,131.595603238703,-106.661628797118,-38.2655481983143,13.2037663867819,5.14527734457443,17.0460805137681,10.2302908171226,17.244712170189,9.69667640911472,4.22170154410189,12.075532041754,10.4428682607767,12.5984995726514,8.78680090583194,6.31975863753196,1.35453074375885,3.31916240511503,1.32609194023702,4.17835856762114,7.89201903878376,4.58517721536719,10.1058612729972,0.794277255547531,-2.28620996799805,-0.708886993142275,3.63502856522563,4.1542617545549,40.5254628843067,8.03560026055822,58.0733127274275,0.893123749203284,0.999124190569978,48.6260270695636,-6.56724303103363,48.6144109521655,57.5983281596353,62.1406417196994,6.93601665441574,68.8393630349362,51.1578781929245,66.9962773947086,75.9125285960004,56.4250050087828,48.2672645103044,50.8959374501103,80.4282663160068,47.9533021525868,42.6178063888844,42.9913608784977,37.709151637398,44.7483462940913,43.2787813021937,38.8447884898622,34.4818152029242,36.7399907397946,35.586331848841,31.9233005885774,30.8495664985639,40.0151130981166,32.1424683026289,35.5955331393349,28.2535363533958,34.6656440850816,39.2892183687722,31.344117515605,39.9178626391613,33.3630493593868,43.5333356248906,36.9116932531321,30.5869345715492,49.9297953130406,48.1177181596505,41.4687072456667,43.1335199907216,41.7020504380659,36.8949883849994,33.2057624506136,38.4304396921169,31.9225535436487,28.1746256069276,-0.584016308992396,22.1664903685237,64.8560409184971,38.2952507304846,18.1854546679255,9.00873424557963,-23.5286953494319,-27.5457017285208,-32.8106151535737,-41.825476474376,-25.1022631071347,33.0087097694776,10.0421115232098,26.8299320242674,26.4431794828712,46.0009899431344,7.70049739705714,-10.9028917628166,-12.1123234081855,-10.8186469522503,-16.7826548196532,-14.8851180974976,-16.2294207108283,-20.1211642296705,-15.5642730361618,16.6922484916504,13.6090031019057,12.5832580866965,11.2277392954329,13.3507200278398,18.6832374180173,-9.86576042863503,-0.3320424121192,-21.7566588390956,1.97418544540082,-4.45958425099105,9.0436379196727,-6.80456665184786,-9.55520758043305,10.8741341049288,-3.06071968729109,-1.08700902210788,-7.40902849051451,-10.5319377558468,-9.70884503122172,-12.5537116538286,-5.21764316843872,-40.3151495895869,-15.0267835351183,-44.5482916879935,-48.3287574372748,-48.8753255092723,-73.2938821427721,-26.0548217175528,-20.6128188299894,-30.5219383825815,-16.3850026274164,-23.3102671548252,-18.8797455970664,-18.0070255524835,-15.3452574415831,-17.3575481518161,-13.6262598787718,-14.2759575174139,-27.2780867209921,-49.7931661982357,-36.960843312086,-67.4992588231529,-67.4607478804377,-65.9675596412901,-48.769303683874,-56.1282099083689,-22.4406606872763,-49.1430169681371,-65.1282091008303,-49.0017404861151,-69.4759583432323,-60.2506393226722,-49.1517414851532,-36.4531215253309,-47.0828184926468,-82.1424685323303,-46.0330922565199,-44.9202767469559,-37.7646981815102,11.5559512706736,3.90096047858365,-0.769050817980284,-4.56465291208662,-1.08687175823276,-9.98826612666355,-1.45055587711961,-2.16838765742335,-9.64452482248388,-5.12183062618915,-0.115263002877235,-21.0443428707066,-18.6713551864124,-14.6985082062321,-11.1355970438598,-8.76739252326417,-10.0356770465403,-4.70613723507606,3.35807821596122,-4.70772077745008,-4.30634820628236,-5.49159679320522,5.5919301256527,51.0835185332591,28.9638702802566,-8.21928774265319,-79.5233061794517,-0.75608246016481,-9.19152584986361,-33.9820191529036,-36.7929243747171,-35.9885303665609,-33.0553363045148,-34.6709983918368,-32.8756720847413,-24.3838459417596,-29.8886871214427,-31.9074343219107,-31.9746372415457,-23.3569247518584,-28.4244248192923,-27.2240371183174,-31.7004360910319,-28.5853856645204,-27.3113779681319,-19.5903346147144,-32.5171172417047,-16.1020061934841,-25.9245588317585,-22.0881689654104,-24.1008707106784,-14.3213779779964,-21.6482644977557,-17.0896924952503,-24.621632411132,-12.5248917038058,-18.6292760267799,-6.18544556718696,-23.0487243997189,-3.98942844570926,-16.95802486182,-8.30997334861323,-10.3241507163435,-1.41773018669141,-9.27350972312746,-0.197445387162556,-9.63492670610798,-3.7128951843287,3.06184902318552,-3.80066607049916,5.15615896711515,-4.14326295077341,4.72048050161271,3.78743418065328,7.77474351762174,6.6998775012583,13.5344046283031,4.67895174400036,13.0652623085054,5.32107070374203,13.6486173355894,19.2978452827762,8.74297325991134,16.5151939426301,11.8300418409355,17.5170421328991,27.8598763433223,19.794921435535,21.2235752844794,16.3897453590353,23.1097155032416,31.5029046986504,26.7014258561332,25.7529529092445,20.4416663732996,29.2363171333709,30.3310089335583,32.1181329539397,30.0152718163822,20.8430136493625,31.228526804593,36.4158737453866,28.4906674600575,25.2842671050992,28.5819646048136,33.761135259672,33.6229251566437,29.7098817509206,28.2028548039836,28.0906106427665,29.5945542403032,33.3985336158265,33.0404604045434,25.4464050561502,29.5882018406488,32.1063537295986,32.6221861369284,28.7035745175133,20.9753574793483,29.721017575391,30.80331957814,27.1812803118298,22.1232805589913,15.6468051392833,28.865364723175,26.2582842659551,24.0435098910279,24.6085857646723,14.8534776963558,24.5538689744953,22.9036853698172,15.77809911622,25.7143850058167,14.2755273978716,17.6753458986978,17.6713765036596,10.7126213951607,16.6203662837827,6.62318153084547,15.6647316137929,11.5692420926732,3.67842500678448,10.8690055439097,1.25688128529988,10.3006114826446,2.7624588994807,3.50630466050524,-0.331853020335474,2.97175693286477,-6.60448295872479,2.04634884179013,-11.2908425068539,-2.59342557302626,-17.3351019645271,3.51051523375119,-11.2790804097219,-6.1748094635051,-13.2734255451369,-5.26097184573401,-16.2734528538251,-14.9311760264246,-20.6068654758569,-9.54808629073497,-17.9375037822587,-10.946013632677,-20.6964032026775,-22.7542389111124,-24.4070743554346,-18.0616389529688,-25.1017984690082,-19.5459397375863,-36.787169724525,-22.3349985275219,-29.3410948051268,-29.5571063928823,-31.8086910474798,-23.6083371945857,-39.5804943325711,-26.4292546552842,-30.328321549281,-35.3375776422837,-33.3106369811235,-27.661225218022,-37.2673058784426,-38.2949600182382,-41.7495363922882,-96.5954510143304,-5.05531543019003,-9.98316198286567,-132.175922131162,-67.3770503387405,-134.625901557888,49.954173501524,7.38609251025503,31.0391345693946,-3.79626712638595,-59.150708186203,-15.6080844072171,-194.197486342482,-131.59424936654,-202.299377126203,120.594582712572,18.3325081433688,27.2071426330027,93.0433142188874,-34.2110252530691,-24.1836900007135,-181.847228578989,-262.055605469264,199.183978511408,144.322812315473,159.933674211199,-308.044179275549,-29.8974411902175,-347.129953713045,-226.303888506578,-336.670257782079,236.098762584409,43.8243777861029,166.270153536782,246.748296242154,183.649068055337,137.595300177873,-42.5563389699356,-241.673522453083,-272.927111577097,289.17153802786,240.914597602108,329.155770085171,266.159158872308,-328.291779929798,-38.368600596223,-390.12318510929,-296.605154571663,-299.815081900422,294.250349367205,56.4240192827393,269.456376595403,327.617553021321,297.846889860291,-48.4918119751931,-315.561311348976,-297.83178465528,44.2533860802125,338.183527267416,388.79527471707,311.588750571229,-347.666828133194,-23.5708384357639,-309.817114569939,-257.082072237581,350.204390889352,55.7372185764917,349.525734324682,-380.213149242682,-48.5081406847196,-342.320041345361,-302.125031699318,-202.148436719508,318.443128859639,266.088041172748,381.686896001065,305.050924658712,377.66607449152,-37.2258920193415,-287.295301177863,-204.448752744033,229.901928908369,234.869697388696,342.47247734036,268.536649168844,398.016420572909,-273.247558870084,-43.4412019120705,-251.96228941139,-248.145623642433,-218.89477342171,146.949277766072,32.4262716550901,250.627425174541,217.752364098916,369.903434731251,-38.3799840748168,-186.782645436564,-122.011062720227,98.5239102761284,27.1749718731995,203.398537311422,150.500316946234,-176.69441893464,-26.315501199622,-115.024135155499,-153.423015012008,-62.9608174988669,32.6702355185454,26.2205231152692,144.724118321335,75.9386618958192,-17.8598284436689,-97.5831077242914,71.8012253052901,37.6594691886123,-41.2463668241711,-7.78646985919533,-15.748957593022,-4.93408857980967,-8.66944576571217,-20.7250241129162,11.9533085799501,-4.80278758409794,-21.8650342664894,7.08073012267148,-27.9370674529187,20.0745874731413,54.3069860655779,210.64330709351,10.1343628451772,-27.0312941392971,18.9769054177662,-49.9341018519928,28.8984885258642,83.5747851017102,331.498193585115,14.3527682797093,-27.1080712470227,26.7954238249641,-16.2857582234293,-35.8178495105203,80.6425398411786,365.841198319009,43.8074021028452,-38.0952629221332,74.6331600363377,344.33166740477,14.3212870742015,-24.6025304162619,16.4766722140447,73.009748760955,297.533977572256,10.9087998831187,-21.806661553787,10.8427473089398,25.0779145042756,-29.3137875346827,9.12041996336164,18.8675062383743,-5.19264309314076,1.50896272370096,1.41795645080613,3.92417532996348,31.008495893589,26.0135978861619,54.1981122774101,45.2010610407629,92.8455527801815,50.41560109712,62.9145141401124,53.2859058496438,55.0134753386611,45.330559551962,-0.434229928233075,-0.204763814088908,30.1330996600875,40.3937577251515,52.9604120041231,59.0754426205576,78.701153610913,60.0718540906636,53.0147224554432,49.306433671076,8.06570898643741,-8.68763416854368,28.7911006515487,47.5620338527501,77.0848688300887,69.1564076763322,64.7057143013251,70.7495976253169,51.5631569939149,61.6341848621219,44.8516654556408,31.4841333558238,52.7437998687053,58.9070421069929,51.5936633853257,58.6971369167801,59.4589110810949,51.0321090976953,32.2168347680389,32.8518078772614,54.1528324917581,50.7325304401409,53.8388608405971,64.7222440161419,52.7176247705769,57.7465488755787,44.2724341334219,23.999936320263,44.4933470006817,43.2989596526738,23.7050108718968,25.7257801494453,29.6500507154082,47.3839724799826,57.7713928927717,43.1415344325797,44.3047316416112,54.5252898840193,40.5458759860748,-2.2412090269696,-9.71469457639523,10.9540069060589,92.5123998256333,73.6164838942309,61.1803653797161,54.2776856413394,58.1164902990434,60.1338772637075,65.4589105353441,60.3421728165843,47.6239141236004,374.541777663994,6.23959340005642,291.431766766601,415.203551283843,71.6659103108321,64.1502780553129,53.496396153256,47.8820045491325,44.7092882453456,66.9495505911278,42.4534300464211,54.4162826315837,35.0651026734607,31.6013406011579,40.4108811929759,38.1758833250396,48.5668264299183,45.9744975818302,46.1221412255336,39.9938468103475,46.5648521835495,42.2169362973489,31.5486297403375,35.8819350079664,33.0246028670229,36.6799362784529,32.9452416240934,36.4224390537847,41.1057694846907,31.7644311956711,38.1763093911546,36.7946583758518,34.6231452508031,33.9866755512809,29.0639254058257,-2.31931192530703,-9.27060146316991,11.9552868317765,34.5442583845422,23.7322728386334,46.0369069205263,43.3681383785745,52.8931938416834,60.1954885408558,36.6897605502799,35.420606834997,32.9667099052632,26.9559569716893,30.110809586413,30.1501904563434,27.7845065298627,38.603886382447,4.553276629804,-4.3993451357891,-6.66635664117298,-7.61774104264635,-3.82854889961266,-13.2902561682669,-7.26068843679994,-4.27222889971242,1.34445879428082,-1.34994443009349,0.801255074395132,-1.11269497759093,1.29438778862491,-3.70989097645666,6.01911605618658,4.54602155291404,-0.980500392785426,19.6048625462198,39.6097093755868,28.8651439644096,27.2070660390852,49.2140199516535,42.1572704612433,33.1597663208039,36.2659868799374,34.46677590237,34.4642276247865,38.1535479164121,41.0061815784307,24.3822393881124,41.7368801271728,34.5241751748494,50.2769976686534,36.8592943035403,34.4353479372849,42.8512053270595,26.1908766581722,62.1120968832135,29.3671009954218,29.7343719668786,28.8718296062897,32.3559776880344,25.9540221559611,23.0161257670829,24.9430594473022,20.8636630941883,27.3107145182085,23.180433312959,22.1468098761384,22.1537773993892,16.7849675473605,18.9920501775027,19.9156913265491,20.8468606639731,18.475692268489,13.7435870971228,21.1966040090914,24.4434060723382,25.8224426340176,25.8991976622557,30.1051403815639,23.0527483225944,23.5683883900112,20.9989030169287,16.7290273029516,15.7780929643435,14.0778166108575,30.7836006091793,27.7439760743737,17.6216696549162,17.9141136224021,13.4175618822061,15.8063766117357,19.8672644158107,22.3843093498578,16.6735447344292,21.0450001429933,20.2876887004957,19.5379056675055,16.3653093558691,16.7304918948843,12.712427505467,15.3124794192249,14.6057069683586,12.3458843106172,-0.365353550188989,3.32607207534906,1.98098380733005,5.69725497604853,3.57237316875917,3.88460218603098,5.84302557407959,7.94855446348054,12.0581702805778,8.53048519917613,11.0451020140145,16.5095215809674,14.0651438426854,8.77552838935852,6.5977845130888,19.0135616456372,9.61460769179658,13.1946774549587,18.2650679049771,21.1284250556963,16.016690613739,-15.3822772555609,-15.5846897195925,-12.2869796587378,12.6312620691269,135.727739541652,11.708839206078,38.8603996177101,37.3405811127127,36.1943297731559,46.3594453105851,63.6336054128242,30.9835701947414,40.7726555503342,54.9898429117064,30.5495464500861,24.7940868155009,17.0331211799674,19.8333693504618,18.5331745350127,19.859716517061,51.0254493598013,38.4348123550508,35.5359045141226,46.6194461863663,26.75000893054,30.3510389282975,22.8237143709108,27.9562052919447,27.9377419891881,26.9156623682264,21.6643885672033,23.6433958795354,24.0747383078056,21.578570789856,26.3391764738354,26.0274937353664,31.0801751648184,20.4759483035261,29.3283257627308,23.4323056572933,32.5696376283028,20.8607043631964,16.7875205891179,16.6525799511042,19.4112593866791,18.6905105525063,17.3976292774659,12.684526082777,15.3254311231322,13.37072519615,19.2129081732082,9.98358164949507,14.9019930347407,17.054474954663,41.2459117376887,45.2213957185956,19.5380630365872,13.7208400413896,17.4648466533275,16.0661030057665,18.8181076914625,22.5466165404199,13.5158951147932,9.30295517671704,9.50661398281794,10.9970164982874,11.3099315282418,10.7284345706287,11.0689638406211,24.8187324635954,18.1832159550863,15.3195472021946,10.4084747494172,12.361257876734,13.7222318984457,9.35927532065889,11.6357392580053,11.5966025897361,9.23318098261532,5.62941465844,7.6207487439666,7.32804093840297,5.88441904948652,2.23469730413421,2.0692118261507,19.7189394500623,13.52121596676,-15.8156731392309,-27.9922899328147,-17.1748864713019,-23.4156117298768,-13.1608427441907,-29.0651709993802,-11.0040386025704,32.0252594203246,23.9298469736021,27.0305846956271,23.8037624658596,26.6041408949011,27.1941806867233,28.7304599171527,23.4811297511157,20.0941924118273,20.2103790108161,28.6942887577609,29.7520653065087,26.0099357016082,22.6251071200234,15.6131924263356,22.9512545544559,68.0690326063168,49.1059871136091,47.7720088457617,38.6341629802417,24.4693893773696,18.9951666819172,31.4279151223605,26.0819852532982,30.9784097850449,36.2757065648094,16.1388145981484,15.3871397148182,10.9220814875468,12.8714870810473,9.53530220385703,-9.30412365509147,25.5358672036646,21.7395994357085,18.9546150902229,14.6876026565033,30.524176743513,19.3558184308136,18.0428011423962,24.2740677216907,13.0288221827315,16.1462168671541,15.2410372490543,9.55732804979883,13.1779455105135,11.9320429714885,7.04612265617653,9.03783746729968,4.45347251287128,6.76785093899546,6.53970754832657,7.13862160504569,9.69157083239403,35.3078622269222,38.2289468776089,24.5217838473417,23.5127705890559,30.2298589965869,25.1596630711577,28.5279853870161,26.8883552621255,33.6536567088514,13.0364893790333,-8.92545642092109,16.1823894376992,17.4280494346698,16.5683582183826,17.5177170844905,33.8120894799952,29.7483439862882,20.3182287897467,22.8564695680293,31.0628354713746,30.4698655248783,41.3717889884536,22.8249046121401,20.4425505445945,20.5152987282412,-6.62862465206656,-15.0252004084784,13.1554210961187,24.923768706117,21.6411489367066,25.4819945663973,27.5575909356201,23.5410980768129,26.8575317925002,19.3046878640961,-3.78750787769806,-1.92343316121643,-0.231911573838273,-1.14435893366785,-0.148458875223163,3.37120291543612,-3.55832309927455,1.39560551649407,0.503198405460987,0.45100271466081,-3.42830295184227,-1.73438255568567,-4.39768059304507,-13.8478769738844,10.2720296003211,15.3397876296842,13.2203371206589,17.4829224354307,29.5446657694753,-2.34973277514215,-2.84818450427173,-8.95961782610093,-7.87815349227678,10.8000916253237,7.93461297688884,12.3952497678111,9.48681328091479,12.1699789242723,9.81172686349626,7.13635189839699,14.9255764924975,21.9042895947228,20.6858075633765,30.2805075715866,35.1530583578431,31.5655569324414,27.4147229740851,35.8532031436324,28.3949004639221,25.0660056866656,26.8954864668741,23.610105534534,21.4845768021204,23.7170208073151,23.9799706007626,-5.93495031433221,-5.77524561109269,-7.35769619779838,-5.9580875123951,-12.884053904321,-10.1556875937935,-9.12633755344597,-11.9685479961909,-12.4481470679328,-10.9085308630405,-9.14487627495889,11.1484043855353,14.4915716358969,12.9361164855689,15.7145782219809,13.970088331021,3.61941317152751,20.8471537386181,17.9583462779276,13.2271489481471,15.6890123966798,14.7998560922089,15.4257618310256,20.6285997276692,-5.5052659323915,-6.36349048961808,10.2888467132699,5.50894737892277,8.44627621978169,7.94969240134324,7.07007484338062,2.84578353744188,4.89238611099325,4.45234625063029,5.96092692659664,2.0443799903942,4.32532675041442,0.545999119309062,3.38500541316532,2.11858247369006,-0.98536824995545,0.137745220244115,-3.05229515168497,18.2040179893111,12.4554241302701,9.71626454234863,13.036598902349,9.29350588421407,11.5025262841561,11.149774590367,-6.26678259389417,-0.269271971253169,5.29032975559757,1.01573388298439,-0.652393470201092,16.4138050371504,15.6903938121938,18.0988835416334,-4.14874282171237,-10.1840846320933,1.31926913466396,2.59802119965306,7.62084252960009,5.70842199625366,8.0243919977571,6.11694238692927,2.39979075119287,10.2322415629683,6.02882325622403,-5.94532600172414,-1.44410794327844,1.32647347025101,-1.58967017993267,0.473522831172254,-2.03929291673665,-3.60544572312599,-3.40920622220261,-5.18943010015669,3.20606552732911,-7.26807666891007,-7.55374389980513,-5.71829315902484,-3.86775454426448,-7.52848617030094,-5.15039501602566,-11.1932734068192,-9.98565636716597,-7.30116006015704,-9.33960818900037,-8.93595458678847,-14.6860419403668,-6.55737769334813,-11.9013845500434,-12.3370605861859,-14.674815791928,-15.254093602316,-12.3906496263407,-11.7085946838047,-15.6517730367541,-13.5170243815607,-11.891639402568,-9.27824981571579,4.89813197346871,4.29015500903562,1.47134080739094,1.09109205568857,-3.05979347697326,2.7632604335981,5.03832794027673,5.03036977413283,3.50871718300516,4.72160474876073,2.36756768412235,0.172532621201937,2.43849050300816,-1.66439342679814,0.608006681683164,2.86018932838808,-1.55503574638867,6.04432007136157,5.04419737736856,4.13390285886745,5.51181190809733,3.50399570829776,-20.9934115544419,-9.65441416445782,-7.54574543181136,1.47161219415493,-0.501484489329374,2.74150442816413,-1.31383780633827,-1.89134221312089,-2.43229925759592,-5.99762837136308,-4.17371882908309,-4.90971095051395,-3.7159701854963,-3.40905232126069,-0.257628748476378,-1.73244300057844,0.680292124175278,2.14939183615607,-3.39294171761071,-4.56747627989257,6.07567142124274,7.02665574347314,7.9965627715418,7.4277914229205,5.93407423473685,-3.36739692665327,-0.390851761904633,-19.3695179650188,-17.5409469500316,-18.1524759110409,-19.3533040966596,-18.7329481833555,-25.4472578463152,-17.1484923826516,-16.7377039203327,-24.1524150634095,-21.9825280656074,-16.9565579646803,-13.9407712324775,-22.4651073448657,-24.3958528360507,-12.2356621322112,-25.5118604405234,-22.8406592829597,-20.3165764689649,-16.2748602133217,4.08969362359209,4.33691079019529,4.02685019451782,3.83526017467513,5.98682230143848,-7.30555252018762,-4.83324863566771,-7.98042611570493,-6.04395519236535,-4.86957694753456,-7.25433730259125,-4.79550160575432,-2.69949200352186,-0.477091200133517,-1.99631395705767,-0.96918229141608,1.1882525280836,-3.18351075813247,-7.01046472167266,-5.77816795963216,-10.0364124710602,-8.60220916187219,-10.4416167662766,-7.92583294185184,-10.8540668624714,-2.55215237745849,-1.55460167870525,-2.28488052359352,-8.95003458961978,4.09223225076301,4.43695222767911,6.45277778746005,8.48541332310192,1.45937648995509,1.73605777959489,-0.315379612246902,1.01594458455515,-0.651839604146981,-1.98977882293285,-2.4094615894037,-3.73940410160448,-2.59641370641244,-0.546165392687532,-4.95221568928862,-15.0613968677791,-19.4022817961584,-24.265246447591,-17.3177444266795,-14.8099480866779,-13.1873423895308,-10.0648378084421,-16.0634319295873,-15.7673652182977,-12.2362074797901,-19.0717379858843,0.972463792996766,4.04507623665724,2.30176555574988,6.9894595707693,7.25348381258999,8.14091616911083,-7.85743874829724,-9.44227853325396,-11.8549531614357,-17.0917354375338,-7.0465966094255,-9.48527357810208,-6.97483084637802,-8.7667932796757,-12.2791185331035,-11.1917229823262,-14.0822085255213,-11.3110167427917,-7.1919422628803,-9.02645692532935,-12.3227362205706,-9.49845941271642,-11.1619779272086,7.37073851215454,4.07476520273428,0.7931439873925,0.28976708177254,-23.4284101816439,-14.7911225257771,-17.9067722181311,-14.7320760826055,-17.2962492651365,-20.6020138204224,-10.8048414508083,-12.0300369273851,-9.81145972495426,0.892399871520745,-0.777879323175745,-2.38776642885147,-0.632265430763647,-3.08671325891373,5.6019855819393,4.64850520238855,5.39849428012382,6.28897914519497,10.4870934209785,-6.1024780075914,-13.2517310993464,-4.86466063970952,-31.4010048209537,-8.87031463294428,-10.4269606481173,0,0.939456686478883,4.14264535960131,1.86070314889295,-6.77975697079458,-3.36671535885069,6.46100360602354,8.9071310769613,8.4382396689496,-12.9745910694911,-16.6869703808371,-13.6560368359642,-12.4551089598206,-16.563665603062,-16.4333408566863,-17.2821090587164,-24.1162053775658,-19.9832619527825,-19.3296472347094,-20.4907554545694,-16.0071555755573,-27.8071533306858,-10.5897098231553,-15.3057985627267,-8.02613455684286,-12.6912276643671,-14.0252867503973,-13.0863827065541,-15.3802516229151,-12.6749188950863,-18.3897188185192,-9.75745365135244,-16.5529966317775,-18.4976847758676,-11.5485304810236,-11.9548477385885,-9.71021515396944,-7.33544369323882,-8.27576621030667,-6.25579696326907,-4.78870902956819,2.72591511526179,0.419122590486129,-7.53864270176771,-5.31818095734907,-8.35898400073073,5.46962208433237,8.83461320382136,8.2237270822111,10.2894636086109,10.9941744943716,13.2038162042206,10.3816452142344,-25.9459621698608,-19.3459199116168,-30.7063873971519,-12.672415451337,-16.2147284827856,-19.8897753036674,-27.755896037904,-32.5406950278841,-8.10107729150826,-11.40275205712,-10.1722050982174,-13.542409730873,-14.3611191048701,-17.7056943992146,-15.9556999170592,-15.0788225210191,-17.3548423372176,-4.27245960859356,-5.16131951273279,6.75717133953722,7.64283481596316,8.50732670685109,5.77078138344454,7.63891564801021,7.54504801352412,-25.8453247328251,-26.6234293535506,-29.6421183787168,-17.5110544872619,-20.864906732451,9.35052270280842,11.5209105206916,-34.7414247226356,-32.75338079645,-44.7530906947492,-35.9580726163459,-34.8008341884323,-43.3364969431141,-30.7328438888866,-39.6708354657444,-38.830669434812,-42.1495288178332,-30.6522650787827,-39.101337912414,-50.8705629010857,-37.1400727380667,-34.7279839287912,-29.1350348930932,-39.7051718672115,-26.9331367945349,-19.9804421227668,-25.1461622368154,-38.6430759396631,-51.5899361007239,-39.0862571947015,-27.2437169977863,-30.2813082718831,-21.8842859772377,-36.2320930723968,-24.0765915619627,-20.6126233840832,-39.4255930976779,-38.6240307402429,-45.9414522403232,-31.9459846056269,-21.4332142187665,-22.0050267423912,-26.4782911205095,-45.3452821733024,-44.8067657107633,-63.2708543214941,-39.8589089643445,-19.9477452943429,-23.148049071993,-18.3445498654428,-23.2075198038507,-26.6440296538057,-24.6315865711568,-26.2305721233072,-23.7619579290756,-33.52470413787,-29.1592278693863,-33.1554955753663,-29.519331173982,-31.9061967166296,-38.136919303261,-39.2669144787891,-32.3908861500671,-34.4031378527235,-35.3487313092192,-38.3189883316801,-30.0283960755416,-27.0318938587941,-34.0528522665305,-36.4956022969889,-20.5329088282216,-23.220765312048,-20.5057072373187,-18.770348151238,-23.4420739986232,-28.0762223074584,-26.1282963057809,-32.2188961035491,-28.5757733502988,-29.8212597344098,-34.6439306417399,-33.3358784634621,-41.7034373812052,-35.8455684898485,-31.2982472186552,-43.0650477431195,-35.6603512359613,-27.5082840255095,-38.9475509447702,-48.8920405317915,-44.628582884449,-49.5360967665465,-53.2610227058395,-68.7683779454506,-33.8130309356206,-46.1289802664923,-30.4631439680404,-27.0857763674508,-27.5175530205249,-23.1443504013487,-25.9688749681406,-20.4538155257527,-22.877524367095,-24.7816060941735,-50.9298947614594,-24.7220771756187,-31.3704495599729,-16.8726411323862,-16.3541809792152,-29.7318395405743,-25.2019946533287,-24.0791684447708,-46.5499689387992,-53.8636362656045,-48.5501242575716,-49.9655305240038,-64.2051995767189,-53.4378249189934,-55.7190715276611,-21.4913564257411,-43.9195181429465,-21.9914846966986,-27.8061445211289,-31.4635493448882,-15.780548845208,-22.4621506668448,-43.3847998193216,-66.7601377570096,-46.1400332419638,-47.2367835375511,-20.9441387916018,-19.6185783194419,-33.6406414752767,-26.5107584240846,-29.499422079524,-29.3952618632518,-33.6893823415907,-37.5552452602755,-27.937610401764,-13.4048091337383,-15.7213541334451,-19.8885317456853,-41.2178783122887,-55.7734991626408,-43.250590754132,-41.0166404426608,-49.0377193061903,-56.1868019262189,-58.5161028064927,-36.4189216391403,-45.1149067659927,-59.9106957857954,-35.3520325518003,-68.9475771137379,-58.3248274038196,-55.0656987729891,-42.8628959384594,-49.677413784303,-40.7223759454013,-48.3005229459888,-48.0129728049461,-52.8526341007155,-39.6192379345161,-40.1149360647044,-31.8417691033061,-38.0398977563216,-15.086216894303,-12.4967860747901,-18.1169088167825,-22.8972256409496,-20.6845826251402,-28.2364921865672,-25.0676004367291,-25.5562264194601,-27.9256978907377,-32.5265437388482,-26.2620781005456,-30.7250246701875,-40.4430400007352,-33.8042005951235,-36.5360112948335,-32.5806970396126,-35.96479324937,-42.7221125068036,-28.7183507359004,-30.834584179832,-45.6630839788712,-44.1140654183079,-46.3558996819805,-96.1347616839187,-48.1364545780307,-43.222871966556,-36.1026252833234,-20.6376248442006,-19.867167614457,-21.3597520785667,-37.4807125711572,-44.2826874012077,-39.6258452472393,-48.0700691006743,-65.0531456610215,-39.8078406771462,-50.9506510000423,-46.0892898712128,-51.794253176091,-56.3659789647652,-63.1127293738141,-53.2531232149596,-89.8129917326905,-47.3488980524632,-31.9869827255395,-35.7482942364469,-18.6882259206357,-17.0991600978375,-14.258755780578,-26.7621189686892,-17.5207371559505,-64.7915581194914,-34.6245479626707,-31.6995759997971,-39.8752598798126,-42.2416659549757,-47.5117892527468,-57.6481273632478,-46.8735624569485,-73.1800192646548,-44.827883109756,-45.2324439078844,-19.4954111632717,-23.3666005146475,-27.8216363139611,-24.0850262035567,-51.4753351585564,-49.9008685982156,-53.2521431716937,-52.5200861523395,-65.9217048580002,-55.0436212747241,-66.2190847974171,-59.4745853146939,-38.8452553530288,-65.5607596129303,-57.733127916927,-73.7267924059729,-35.7742718412012,-58.9796056485151,-51.7143987338087,-22.735626357641,-24.6379505668546,-29.3444416067472,-68.5142911978919,-58.4779926732691,-82.2812723277302,-20.8721856990895,-28.4521123335474,-28.6483577299623,-32.845920912954,-34.7677423092223,-35.8864658022372,-29.3524431406143,-40.6548403274377,-26.1692501278011,-24.7271579211574,-24.9181689606532,-30.9219334701694,-32.0124876860703,-33.4969521268361,-52.7349610479745,-54.6690326152569,-26.1203464684819,-22.488473147788,-22.2285867584167,-31.4373473397254,-22.0990834742246,-38.2775353480096,-47.1687484987321,-81.4863228524404,-35.5583474160402,-140.066294026395,93.4968394884384,36.0448052039093,-194.556382517731,114.07918221239,-247.681091227374,236.558006833987,-295.180805228831,246.46457410152,-321.107282123275,315.864165151818,-345.145395757269,332.258519790286,-321.292956624738,-334.147073865047,-314.582985457589,-275.773369149382,236.537656078866,-230.285742282327,166.376564685927,189.265174352373,-173.717703403105,43.3215977958395,139.704891319258,-113.266881741736,-40.6402703817728,14.0597085172414,5.46741871667443,18.0441932136925,10.8433677607099,18.3477823325763,10.2986249338459,4.48580819278868,12.8410958231651,11.1042251714873,13.3788748043952,9.34084139780258,6.71311723804478,1.43400118203309,3.53351899240903,1.4090682851278,4.43386149758316,8.39629359957125,4.85212510249634,10.7360043276759,0.850912130612727,-2.43124362364504,-0.754765954699506,3.86058775955491,5.04527767978377,43.2764230819887,9.72120771331309,62.0266221731754,2.50845590375684,2.46804983677098,51.960281291585,-6.9489820009775,52.5321565269602,61.2575636654813,66.1988472235581,8.7181602387409,73.3042456022835,54.4578313045282,70.9565612132295,80.3961319582925,59.9350782837361,51.2978487489859,54.111422999736,85.1382487891437,50.9801846482337,45.2893886178168,45.7067609246281,40.060369983996,47.5243075222324,45.9686225607213,41.2992127474251,36.6251079954175,39.0423094208362,37.8315627170628,33.9183604211346,32.7949126324279,42.5338694740408,34.1408485132682,37.823701639361,30.0235387892842,36.8381747624932,41.7287072747756,33.3175686000173,42.4003780517932,35.432578583311,46.2850486738575,39.2194551684928,32.5000799179059,53.0131291766361,51.0972456802135,44.0553669556873,45.7850506607667,44.2937141898649,39.2061616035998,35.2827613454376,40.8444594108195,33.9006977521273,29.9232885253214,-0.621030670511554,23.6976561842192,68.6415081464814,40.7434588791571,19.3220220494682,9.57121397607392,-25.2167557585275,-29.2675098969317,-34.8722130679163,-44.1834710403706,-26.8872564122725,35.1406931898039,10.6700864632004,28.3792853691085,28.1403709305945,48.5772759310626,8.18446628823155,-11.5840802378344,-12.870559662117,-11.5013500379077,-17.8124856006918,-15.8185217159575,-17.2459211424348,-21.3713589212505,-16.5552143764316,17.7225416849106,14.4703040704761,13.3706498755168,11.9351564505955,14.1930646467863,19.8454558587226,-10.4904733154522,-0.351444109466867,-23.1261267283168,2.10005615322112,-4.74744057800745,9.60790690689475,-7.23548550733463,-10.1486774648045,11.5450335815144,-3.28514804548736,-1.17730794074649,-7.87903686223966,-11.1925958590633,-10.3346200647389,-13.3403063992715,-5.54391611947493,-42.5414295657141,-15.9621091102845,-47.5917255660332,-51.1699845892824,-51.8021542829122,-77.4675746691083,-27.6941643926096,-21.8951771463113,-32.9606613359638,-17.8519168928337,-24.7476936993561,-20.0801548484251,-19.141574830865,-16.3037922532293,-18.4376596111651,-14.487442476077,-15.1692168209112,-28.988220863465,-52.8603303600168,-39.2795485194363,-72.1608860066833,-71.5549619322971,-70.0415849736663,-51.8391229222415,-59.6378859746838,-23.835501904664,-52.2329221256747,-69.0684537258213,-52.1564634339849,-73.5510828157763,-64.6166831912782,-52.6342529934716,-38.7209253553089,-50.6338198775013,-86.8846585324588,-49.5716487178622,-47.6127243121679,-40.1108532180931,12.2697034839725,4.13708982303319,-0.828255724247617,-4.86057613753229,-1.11694108085519,-10.5824512736844,-1.54788782933417,-2.3043284656861,-10.2742393927646,-5.44536924050153,-0.127856298865543,-22.2292924872181,-19.792494685838,-15.6321153143207,-11.8393123222339,-9.30050269748926,-10.6672329303005,-4.998582585078,3.58287246441738,-4.99816993454325,-4.57473252782293,-5.83072436813616,5.9415491535121,54.2553843821457,30.759717990377,-8.73486692040212,-84.3468186529981,-0.802177903169358,-9.76601180924174,-36.5792388997331,-37.7455031598811,-36.9207901212359,-33.9486124961248,-35.6275780678962,-33.7950351645731,-25.0033817206734,-30.6580932260427,-32.7464084464579,-32.7912126576794,-23.9324457692036,-29.2050757182843,-27.9210112974604,-32.5274180444549,-29.3236343807404,-28.093148451755,-20.1033269448269,-33.4783651942114,-16.4721434500978,-26.6216422503182,-22.6148907746234,-24.760343036782,-14.6395049700979,-22.2734691654078,-17.485178017299,-25.2940638215547,-12.810049671274,-19.2072265978418,-6.29520362087053,-23.7697136227217,-4.016960283764,-17.4375019380679,-8.48553489559663,-10.6248330143593,-1.40764280397416,-9.58372543667991,-0.133463573559301,-9.92397035402968,-3.81732102249071,3.18982722964335,-3.98718942244712,5.36437245303513,-4.29548146486514,4.87155846646027,3.86605978074665,7.98483037795201,6.85341102457926,13.9205670690568,4.73174712332851,13.4764509888396,5.4191725229528,14.0064709071592,19.8269194462551,8.90968205634013,17.000375752069,12.1036037288928,17.9718091205097,28.6584040316984,20.2793201843591,21.8268528005595,16.7789241968915,23.7158297008391,32.3713355634142,27.3770274545774,26.4696535559368,20.9291409870829,30.016296279864,31.1187190272564,32.9547615065474,30.860378395496,21.3562217874774,32.057828657619,37.4003824648984,29.2439658400802,25.9506216060153,29.2993233179412,34.6497640435837,34.4795215011457,30.4927174206563,28.9373912009234,28.8063765272268,30.3739345044629,34.2724309740173,33.9603925554505,26.0951409971136,30.3493406320445,32.9579861364359,33.4634322024447,29.5053347344711,21.4956969251807,30.4995017865685,31.6200245782863,27.8688729044412,22.7495420849612,16.0204189553578,29.6341520312859,26.9503916361259,24.6414255481927,25.3265530663128,15.1875570924287,25.2056011846094,23.514231343128,16.1340124078625,26.4881212650381,14.6069761898708,18.1474843494349,18.145689902669,10.9369535691058,17.1442901893883,6.72724091678283,16.0958898256143,11.8783048667907,3.73109267152707,11.2307425887298,1.21711333512946,10.6075334205466,2.81041576413974,3.61353596159582,-0.364026773969997,3.08186518328901,-6.83105768597796,2.18698653217835,-11.6700532582832,-2.60158794644054,-17.855132324473,3.6447235720899,-11.6144169073139,-6.26341382315688,-13.689107741213,-5.35044229649592,-16.7056811189158,-15.2999390865676,-21.1752838377222,-9.73483611936992,-18.4675628001539,-11.1943960028058,-21.234635929422,-23.3395296221323,-25.0526577367845,-18.4870953110218,-25.8242334892191,-19.9985124825578,-37.8112183855881,-22.8868986483338,-30.2018386155474,-30.3331917200612,-32.7102984367675,-24.1690989500808,-40.6709563277512,-27.1108254405665,-31.1996585278056,-36.2978044545232,-34.2309089440664,-28.3519722567418,-38.2120157205948,-39.2669653157335,-42.8554503747902,-99.417791112894,-5.18733101048412,-10.5028073458845,-135.938098332027,-69.3128642405105,-138.507043533435,51.4015208266047,7.68978957523449,31.9150665288528,-4.00446721702411,-60.8802488317237,-16.6178842483856,-199.801729255078,-135.363747559185,-208.227349608365,124.168410387788,19.1692885365773,27.9995193304409,95.6923420144885,-35.1996940573304,-25.399987756224,-187.033172914522,-269.750927303958,205.019292178585,148.618652879253,164.475802331504,-317.205858300511,-31.5881197012303,-357.356886378677,-232.73539278557,-346.5691902177,243.060294034006,45.7388170686353,170.994486595978,253.937581184622,189.004368927759,141.654732638959,-44.4733963242255,-248.641120217388,-280.86617362767,297.695922036802,248.095500804712,338.756216684885,273.745571254203,-337.875929441047,-40.4561792148905,-401.629903929468,-305.057166894703,-308.538494309043,302.860972136132,58.7348073506289,277.148443739659,337.155888866396,306.607361958929,-51.1381657792031,-324.546959857663,-306.588957277172,46.683361869283,348.233250417442,400.131027964443,320.443007268918,-357.730680462639,-25.8386139519427,-318.650363782671,-264.600649824089,360.606909274235,58.4934682430603,359.775041862487,-391.411709104769,-50.9337689517805,-352.338888018475,-310.780037854336,-208.045346595543,327.897487940066,274.026434941057,392.815234345017,313.912813713766,388.854237271848,-39.3129991275365,-295.526733158023,-210.416619810035,236.681708694068,241.873419612041,352.454096948806,276.342436466905,409.711379166658,-281.196560816387,-45.6833052913624,-259.343759858208,-255.214991453578,-225.351900419645,151.195312667769,34.0181269283253,257.756240073636,224.097432954814,380.759219806233,-40.2323772924198,-192.153814908689,-125.600844059985,101.397140001294,28.4500203232153,209.208747377459,154.839350549281,-181.834049215179,-27.7061491661917,-118.370834349816,-157.777756348449,-64.793681366332,33.611650884596,26.9722063761246,148.850667641318,78.1183208732281,-18.7068398439584,-100.35785692902,73.8963449770412,38.7735189248384,-42.4514740200553,-8.10243166374779,-16.2204265983831,-5.2796362615266,-8.98550981906014,-21.4905209782488,12.4283254876411,-4.83616098515983,-22.938899649979,7.56468930296263,-29.2263850542747,21.2757508383459,55.6284855440109,216.864832075426,11.0800216173364,-28.5177348375068,20.0154038098858,-51.7319028002362,30.377769360544,85.6166735542591,341.288331508844,15.7982002573278,-28.7431788543621,28.3587062334802,-17.7116224834357,-37.4097930138864,82.6706086578965,376.511379609,46.0455238955273,-39.5365390240409,76.4970767795333,354.504016564537,15.7444066716283,-25.8013302737838,17.4801958700024,74.8027116193127,306.315374562086,12.1577489681855,-22.8877527138119,11.5588848473086,26.1804547033064,-30.3923475035187,9.62741462131992,19.6960621753002,-5.63221259134796,1.70260592231677,1.35919518114129,4.01905696759695,32.0361991458121,27.2239180692503,56.0051717282166,47.1734519888868,95.0987008920607,52.6003703287789,65.0206711119343,55.4668807993029,56.8774718476091,47.1501605493771,-0.460708107004285,-0.133197299534288,31.0689126788941,41.5125467020036,54.5750098661354,60.749423488636,80.7897798568271,61.9466192904227,54.6754623343272,50.6847032490833,8.31290958760011,-8.96727676161937,29.6059560543094,48.9067385886579,79.0569992756431,71.7340230992824,66.4583199751844,72.5611312554517,53.029494321072,63.2185945786532,46.1239080997281,32.3876342709323,54.2584064196951,60.7077780178824,53.0240773508995,60.3795171984641,61.1152646776276,52.5081860323077,33.0658276802199,33.7916087403145,55.5798087945409,52.1792956419527,55.3637847636049,66.3681493186959,54.2227187722075,59.1938695214805,45.5429346124784,24.6585044910657,45.7275959707688,44.5095502216266,24.3730482153025,26.4254818427053,30.5525307401382,48.6737145812658,59.5969780410425,44.3518434286542,45.6045557240698,56.0280281574872,41.6606500166168,-2.30540096349746,-9.94157793378136,11.267778776966,94.7260168119646,75.4704236887978,63.0071644863444,55.7983916657112,59.7087361630607,61.8425980386184,67.1358079917975,62.0189624283276,48.9725986471758,385.659968201632,6.67591556864585,300.036969959983,427.48576047436,74.319045312089,66.5254263639466,55.0271443989048,49.1935485580515,45.8352475726616,68.6284094516441,43.6234107861318,55.7814101075708,36.0308600100182,32.4941901160271,41.5488055655352,39.2338946532555,49.9604133204484,47.2552310346981,47.3978155723597,41.1123574485514,47.8768019740839,43.3889960005048,32.4339412078425,36.887676998961,33.9538612468296,37.7059189193344,33.8741665866282,37.4396481739005,42.2339194520419,32.6704784843953,39.2317855886088,37.8279510466186,35.60221380263,34.9492062802497,29.8652842327376,-2.3879857941285,-9.52585605917234,12.2549179824009,35.5037562497839,24.3971241539231,47.3044293732269,44.5709912709207,54.4185096950096,61.8606089834604,37.7312326284465,36.4085153997934,33.8875580947124,27.7109519986874,30.9531446931275,31.0018445091118,28.5536824290957,39.6929711298664,4.66803682469811,-4.53886673016957,-6.85171594809845,-7.8382012590432,-3.93476028537016,-13.647110178725,-7.46569872236919,-4.38775451863812,1.38183379060729,-1.39040070300822,0.820681882822273,-1.1424142967347,1.33123337687585,-3.81487084214299,6.18708283861352,4.67136505717571,-0.991839994995595,20.0752641589059,40.7666815583778,29.6712430743015,27.9626555647125,50.6041913970065,43.3221891264955,34.0780621661265,37.2987251441402,35.4439403194476,35.4240397860207,39.2185512139074,42.1675498577496,25.0735223739221,42.9342396396421,35.5053682374847,51.5937867068017,37.9374353946323,35.3955239605366,44.0362263688683,26.920165557965,63.6523770806797,30.1977043358211,30.5720965010256,29.6704519426825,33.2749852236351,26.6833048750975,23.655421668689,25.6473362189627,21.4425510881829,28.0775624486571,23.8328946411863,22.7672869827437,22.7731923054432,17.2603181243167,19.5242159785023,20.4742091235306,21.4325829116124,18.9966566207101,14.1287071692927,21.7949485477614,25.124598111589,26.5506658675944,26.6301443535112,30.9362242985819,23.7042415637734,24.2239105384197,21.5833414052635,17.2013981158206,16.2241221010667,14.4711792637165,31.6439124884402,28.5249854833795,18.1179154674931,18.4245261568099,13.7920835166989,16.2515396224296,20.4345155481543,23.0189496612978,17.1414357416266,21.6264902694504,20.854223159902,20.0897198168073,16.8257467601151,17.2081791738128,13.0715979588627,15.7444211909875,15.0199259819478,12.701764183597,-0.366337522529677,3.4242195893968,2.03674794827069,5.85928704017128,3.67358327429258,3.99172027517241,6.00509590272899,8.16842272295547,12.3925561133286,8.77147960531557,11.3540087531703,16.9596094233306,14.4593947858943,9.0211660409553,6.78247286747887,19.5556050661115,9.88443407927527,13.5623808752076,18.7725624736596,21.7170494105634,16.4636480774742,-15.9783300651864,-16.1118536281733,-12.6063653125169,13.3035905745072,139.689072293079,12.0862658237855,39.9568474561584,38.3760029479749,37.1932472211725,47.5772317181073,65.2599844658491,31.8464070327159,41.9034059491931,56.4148310172909,31.4044566602217,25.4783740313036,17.506263818931,20.393701955208,19.0564612186809,20.4163553438941,52.640778037272,39.5209174151164,36.5204996804966,47.9131978598362,27.502681819761,31.2124402297906,23.4705281265248,28.7417450503792,28.7133340656855,27.6657520329282,22.2743867176962,24.3136084470737,24.7577935763945,22.1771161614322,27.0837641674401,26.7672329356271,31.961629005362,21.0657733608135,30.1392755481175,24.0869085796806,33.4573324627391,21.4499478543984,17.269520325622,17.1277131344882,19.9482495389478,19.2183405714561,17.8946776188849,13.0546957916089,15.7598335187336,13.7553468095732,19.7555283717874,10.2770819504307,15.3235411575995,17.5442775202091,42.3045320696286,46.5348657103505,20.0820697360012,14.1035663279885,17.9604429338539,16.5134803316831,19.351276155916,23.1648950719412,13.8939123906803,9.55899093870199,9.77259304458444,11.3104938303451,11.6302274859087,11.031276024752,11.3786159511876,25.5231138961148,18.7019591121293,15.7491417454214,10.7014104687837,12.7151371718363,14.1102978571371,9.62793588124273,11.9662586124514,11.9230202406694,9.49415379419025,5.79017084692576,7.83487900649867,7.53848653129389,6.05238186295772,2.30159050415687,2.12620643661702,20.2290310819694,13.9003388099713,-16.2574979059149,-28.6488641743534,-17.654670444731,-24.0423502357081,-13.5373980634347,-29.8017509503836,-11.3107780896904,32.9139607584821,24.5981875164965,27.7930398037281,24.4818571513754,27.3488269437688,27.9547888599543,29.5267719117887,24.1379461495188,20.6510725626249,20.7790863781625,29.5111879238332,30.5868337581569,26.7320100615238,23.2597956200952,16.0602773161964,23.5963192940049,69.8147470770177,50.525660576453,49.1075163591355,39.7194743074599,25.1618178759661,19.5405149542877,32.3261479121842,26.815159655423,31.8444986826422,37.6087114098149,16.5918108185795,15.8131391865354,11.2270936948865,13.2404355971935,9.80664723242022,-9.5689030529549,26.2505966588569,22.3501155785537,19.4801853425897,15.0991507875569,31.3825539106785,19.9007351499809,18.5499950261743,24.9280580236782,13.3974907225395,16.5949665722204,15.6662716007678,9.82188686628493,13.5455753969957,12.2661162220016,7.24499429932669,9.29113620497924,4.57687345123414,6.95897944443285,6.72101900568105,7.34022028244645,9.96475508188944,36.2897883029637,39.3191208826104,25.2164888114613,24.181246655157,31.0735090473877,25.8784474183937,29.3046665022547,27.6449559892913,34.5802156705944,13.4033604884709,-9.18098028296519,16.6358059343466,17.9202391293315,17.0344802421091,18.0025532029697,34.7636726421996,30.5901725896381,20.8950489986562,23.5023815511987,31.7781482918068,31.3221354568946,42.5326906519203,23.4615905584338,21.0047182718843,21.1010076831926,-6.81078080905619,-15.4394858456371,13.5231499092683,25.6101522036158,22.2493986351996,26.1946674662352,28.3343720276183,24.2047837880686,27.60168488035,19.8543292051229,-3.89677488511267,-1.97663921213075,-0.239527609876621,-1.17546983590457,-0.152175897925144,3.46554356601833,-3.65629641096623,1.43456452994391,0.51830371376929,0.462985120395185,-3.52425808389065,-1.78321238395423,-4.52112431063329,-14.2243588956893,10.5584517701773,15.7740384464897,13.5904773176751,17.9853773623719,30.3760055034225,-2.41502841464697,-2.92948608634203,-9.20917696706179,-8.10291981432314,11.1047098643205,8.1558546765071,12.7441257207978,9.74947556108078,12.5132429369554,10.0950790042679,7.33305064672642,15.3441355320085,22.5179614793706,21.2647092736713,31.154756383023,36.1149832804488,32.4659525063519,28.191498429649,36.873251791184,29.2001650987363,25.7672390194906,27.6394597137275,24.2742637954455,22.0920922366046,24.3996820915886,24.6528622916836,-6.10214055457031,-5.93568413228718,-7.56446253057484,-6.12894066619949,-13.2431841576971,-10.4403840144712,-9.38653726892486,-12.3081479271943,-12.7958684706545,-11.2105144854746,-9.39699788903655,11.4641330753355,14.9032105364132,13.2996712504495,16.1588451165983,14.3688046615215,3.7223228009636,21.424680217767,18.4721382928645,13.6054709317403,16.1309693093308,15.2173953139908,15.8626128402605,21.2109873031058,-5.6619664996213,-6.53679389196261,10.581088549961,5.66699862394653,8.68406826428944,8.17635879758601,7.27099291819435,2.92559059734364,5.03228519453815,4.57996058997546,6.12888328073691,2.10186431406704,4.44769486729953,0.560497788235679,3.47945931541401,2.17950693035842,-1.01141188072204,0.142510776353148,-3.13952670654937,18.716149916194,12.8078181014583,9.99211564172885,13.4052374698396,9.56630235508269,11.832589359765,11.4704938375725,-6.44600385752134,-0.279960065850571,5.44075306796041,1.04427182425459,-0.671791451897184,16.8719616559856,16.141998625573,18.6097979644293,-4.26385001146505,-10.4733715050458,1.35555511135009,2.67363354143549,7.84065816979288,5.87642598261803,8.258034919618,6.29557969481387,2.47287243297598,10.5270325455576,6.20450310531168,-6.11305692192569,-1.48509022384113,1.36551075187088,-1.63574717444251,0.486588350465223,-2.09981061720889,-3.7088815644274,-3.50751897827725,-5.33535475264975,3.29612038979994,-7.47822207828237,-7.76988005095479,-5.88201374174224,-3.98141831245432,-7.74407497808437,-5.30144081514666,-11.5080040013891,-10.2665886106958,-7.51514757110412,-9.60606482250401,-9.19184565214637,-15.0970577609804,-6.74974445565854,-12.2393500180422,-12.6925379703277,-15.0813194785582,-15.6852369504032,-12.7438164635408,-12.0395720614079,-16.0907599452089,-13.9024447314749,-12.2284860998982,-9.5353377575841,5.03462645437034,4.41070846272411,1.50998518157549,1.12170215399793,-3.14720350319986,2.83996269783571,5.18257725382625,5.16804140780977,3.61031950918724,4.8548843001579,2.43482571785844,0.17747159987183,2.50949398504408,-1.71155440082863,0.625609966459755,2.94449697330823,-1.60062902244839,6.21980158308604,5.1870863992537,4.25729004014576,5.68071693388145,3.60800238301665,-21.5803365871448,-9.93355171069227,-7.76031405179613,1.51428154241535,-0.514462132219429,2.82103937906199,-1.35089868424962,-1.9479308616724,-2.50243537184499,-6.17136965474195,-4.29228136760504,-5.05099356098767,-3.83266864014923,-3.51266583113469,-0.266445257968542,-1.78382658634584,0.699111699440784,2.21507775018808,-3.48975722261501,-4.69485179694648,6.24807578079578,7.22754215783196,8.22683252171908,7.63164041989112,6.10391325647927,-3.46711539722677,-0.403132877818016,-19.9216350526404,-18.0386871328944,-18.6761380052419,-19.8970065210508,-19.2684614552588,-26.1518350991574,-17.6302320426518,-17.205403514112,-24.8332677612345,-22.6037995141598,-17.4332988790936,-14.3446340595884,-23.0892965929318,-25.0757228841112,-12.5880681694342,-26.2238891322359,-23.4778524555421,-20.8882265734742,-16.7308835118429,4.20695577944055,4.4663659877552,4.14775648791282,3.96817916447425,6.1623974801213,-7.52512752778631,-4.96701661354183,-8.20853237154283,-6.21201540393824,-5.00347325014955,-7.45826159705874,-4.93045940094036,-2.77483088026371,-0.490697205744707,-2.0551254694852,-0.995131803440532,1.22233052939,-3.2730081612607,-7.20497271257085,-5.94366316976021,-10.3176821824817,-8.83620878271353,-10.7382507089459,-8.15131196123677,-11.1567996193798,-2.62501274749638,-1.5962988062019,-2.35165110356349,-9.2087662368749,4.20645033627423,4.56115855054111,6.6351353259918,8.72275534374712,1.50501195527511,1.79799553937969,-0.324641503152931,1.04905912723664,-0.677500546565417,-2.05047259515551,-2.48334163594714,-3.85734406253893,-2.69120744046498,-0.58178002987501,-5.10379673797615,-15.4865983632978,-19.9459451934402,-24.9527157121033,-17.80779650796,-15.2282465721251,-13.5803272976452,-10.3605384807268,-16.5192088020972,-16.2109012096386,-12.5927246322949,-19.6153933650556,1.00974752648992,4.17264055126962,2.37876511893342,7.20693223311064,7.46715452968892,8.38462477484114,-8.09015551208472,-9.70445923294712,-12.1831878440731,-17.563232803083,-7.24532760978423,-9.75026635520511,-7.17109980390371,-9.01482894397813,-12.626433199768,-11.5010579950285,-14.4732119249413,-11.6304766106892,-7.39779422996684,-9.28302179121011,-12.6734093097151,-9.7705159636551,-11.4800121081356,7.57763989882855,4.19491659007865,0.816620230749432,0.309097757199447,-24.0849883686561,-15.2077279868874,-18.4074280455587,-15.1472838795163,-17.7784601787452,-21.172964319418,-11.1183202478495,-12.3742962886107,-10.0965614703841,0.920243705060587,-0.805418076906468,-2.4590739003378,-0.663460941239999,-3.19287685191594,5.7771904679899,4.82060632409742,5.56853357689128,6.47312749247085,10.7944281640912,-6.29625371165466,-13.6226301422876,-5.0048098475692,-32.2775351320044,-9.13159318942358,-10.7275598422695,0,0.996152748733532,4.28705968351713,1.93827324909431,-6.98472517147641,-3.49574918485254,6.65946230798047,9.17115483762981,8.69765092730519,-13.3332132042681,-17.1552991508741,-14.0462405589935,-12.8034249561622,-17.0292939467661,-16.8743147615022,-17.7657410023424,-24.778805250227,-20.5345532340059,-19.8862941986492,-21.0732442151907,-16.4500132814428,-28.5803568634279,-10.8920121653266,-15.7392890044139,-8.25743704744355,-13.0538682708157,-14.4246524001464,-13.4687823650976,-15.8112694701602,-13.0351769327272,-18.9088257542559,-10.040921275874,-17.0162306835392,-19.0237918210989,-11.8794077226415,-12.297843672024,-9.99824319497134,-7.55488929404759,-8.51880947867363,-6.44355276164804,-4.93348843333414,2.8370743303983,0.446566211952373,-7.77178928565997,-5.48430334864115,-8.60756822769268,5.64131865283854,9.08998276218193,8.47120944182041,10.584889551996,11.3151300166438,13.5859712268389,10.6805311525623,-26.587499030476,-19.9919899531339,-31.5449793630742,-13.038152699428,-16.6661186934025,-20.4485681295607,-28.5353218017629,-33.4632640607603,-8.33335240258385,-11.7381824896738,-10.4712891440801,-13.9327036490522,-14.7774678642556,-18.2067095374523,-16.4021375159501,-15.5120092233347,-17.8509755841852,-4.41300457287849,-5.33115015012552,6.96653750756021,7.86545940904713,8.75870652928285,5.94261247047036,7.8614782761847,7.76128361247603,-26.8663358480596,-27.3723670022033,-30.4636659436245,-18.0042711697449,-21.4503394530676,9.6211985398339,11.8493004309588,-35.7120282086363,-33.6757214121164,-45.9796149316124,-36.9739693657525,-35.7708306944867,-44.538265993737,-31.5967818387021,-40.7900071455019,-39.9078490931896,-43.3310456921545,-31.5085012567199,-40.2165486638781,-52.2927048098494,-38.1611026706013,-35.6985617902801,-29.9491600921767,-40.818545331788,-27.6853568391537,-20.5491927386124,-25.8517498253623,-39.7403686908212,-52.9876037768759,-40.1567518928594,-28.0027732307355,-31.1327539671315,-22.5031902190856,-37.2366300325953,-24.747816073367,-21.1936153994858,-40.5289905365147,-39.6997060860352,-47.235803957225,-32.8303940559212,-22.0411337629054,-22.6234133628232,-27.2269512287732,-46.6097916768439,-46.0769989956992,-64.68850803804,-40.8559307590925,-20.5118826386471,-23.7988520729995,-18.8678676131007,-23.8596319256209,-27.3954847649839,-25.3200841990031,-26.9621702724404,-24.4259698170547,-34.4547647588882,-29.9805747854649,-34.0776506334738,-30.3568613325869,-32.8016319130701,-39.1841869777765,-40.3641162499093,-33.290825646967,-35.365782454968,-36.3391874947428,-39.3927477512457,-30.868874652313,-27.8020150597036,-35.0171371151984,-37.5164388433412,-21.1061622434939,-23.8608512527251,-21.0886932358899,-19.2930458310568,-24.1029620727627,-28.8619127207771,-26.8631795618729,-33.1249646665653,-29.3777795039387,-30.6564101141461,-35.6067059680301,-34.2591520198442,-42.8499280461857,-36.8507186584289,-32.1769186926501,-44.2500030219231,-36.652917566281,-28.2739505592911,-40.0621144023525,-50.2639268401235,-45.8686917549812,-50.9496329204664,-54.7176171438902,-70.5374071938737,-34.8228164920141,-47.2202108244286,-31.3334700192226,-27.8545249382769,-28.2963232320728,-23.7783451321517,-26.7001042606765,-21.0265856170216,-23.524887316402,-25.4783841405103,-52.3702417654151,-25.4207462190107,-32.2560363268463,-17.354672067336,-16.8215699160139,-30.5716810341579,-25.9084334164192,-24.7633721983545,-47.852705470463,-55.3255966711596,-49.9762976693955,-51.6602877520599,-65.8661327522825,-55.046036218074,-57.3410203056167,-22.1078941608756,-45.146855082245,-22.6076012528076,-28.5817759930375,-32.3368213991922,-16.2244306126901,-23.0987508628353,-44.587395450229,-68.4405369114765,-47.4513177994596,-48.5546314901361,-21.5361358768809,-20.1706184102302,-34.5685841016221,-27.2548440744694,-30.329838958961,-30.2294174621112,-34.6306075889227,-38.6099279709201,-28.726093609186,-13.7887424977498,-16.1644742524172,-20.4457334184616,-42.3821396574813,-57.6180554607819,-44.4641219598725,-42.1590626269607,-50.4052647100115,-57.7708247360387,-60.1247105100677,-37.4430241163832,-46.3739948234829,-61.7137356442585,-36.3452807889858,-70.7166541279503,-59.9831274755938,-56.621154966061,-44.0653044419686,-51.0548386253611,-41.8867792095052,-49.6245687308046,-49.322662809989,-54.3735927977468,-40.7529737663165,-41.2453129711198,-32.754653173186,-39.1182492583296,-15.5061093579477,-12.8531836789273,-18.6242178116681,-23.5385108083548,-21.2768324297683,-29.0373168421567,-25.7771652861899,-26.2657721592239,-28.7092290838562,-33.4298804060268,-27.0043025804156,-31.5937957307019,-41.5900627048519,-34.7578596017187,-37.5581733644741,-33.4806949597601,-36.9835961469189,-43.8906703529912,-29.521351732211,-31.6939129171449,-46.9442664967561,-45.3249022220256,-47.7421891942309,-98.4806944156857,-50.073983582756,-44.4341958983568,-37.1108780440695,-21.2117795086554,-20.4209508866332,-21.9616928248061,-38.5522751271343,-45.5387425254059,-40.7277713674048,-49.4183561374317,-66.8065389858896,-40.9168701314833,-52.3616391587022,-47.4151038057045,-53.2319496532833,-57.8792215928585,-64.8380315590234,-54.9231264218327,-91.9289366888451,-49.4477486027853,-32.8961729107358,-36.7352410340104,-19.2085414317238,-17.5824946660111,-14.6598169034722,-27.5040681062525,-18.0149302107638,-66.4756945775209,-35.5972284923065,-32.5777308194447,-41.0094310123343,-43.5770424791125,-48.8080382979287,-59.1274903424413,-48.1494739925372,-75.0004852254886,-46.0882222452027,-46.4989390774889,-20.0390800708192,-24.0196125859611,-28.6008500166985,-24.7632687228265,-52.9354365708321,-51.3326831738173,-54.8897820131076,-54.0425120297437,-67.6051825674455,-56.5608130825584,-67.9585289935635,-61.1014067118818,-40.7834414444557,-67.6621159736449,-59.3464564360934,-75.4838512216034,-37.7157151452446,-61.1495785539748,-53.1307884499555,-23.3822404348272,-25.3230309754997,-30.1662084494421,-70.2976396403252,-59.9393814510708,-84.3719079087224,-21.4621969912116,-29.2401619011726,-29.4520889668117,-33.7857749310977,-35.8392933089874,-36.8701763239212,-30.1725330232835,-41.7771746959581,-26.9016419619812,-25.4218569892387,-25.6149682421376,-31.8222143836525,-32.9483436938365,-34.3456296103663,-54.0442301216322,-55.986658743823,-26.8702615375095,-23.147536097811,-23.1088040599444,-32.4711430246476,-23.5683656933632,-39.3510376138399,-48.7371511329733,-83.8808361147169,-36.6114303931695,-144.177110436326,96.2459748973525,37.106854522658,-200.307316357146,117.392710796199,-254.971937605283,243.490112948319,-303.880933114867,253.65525167338,-330.575199976077,325.11866140709,-355.254037616793,342.040827449912,-330.708770556413,-343.992530388745,-323.860504525779,-283.877421088082,243.487999074319,-237.034089483535,171.253529219789,194.758141012952,-178.797302038325,44.5905255559846,143.757233312808,-116.579123723788,-41.8334289174205,14.4998658241204,5.61985370417772,18.4959507196627,11.1311635131425,18.8826969850357,10.583273560416,4.60507554111627,13.2107779315869,11.4178965433393,13.7474237680808,9.60631341996202,6.89924506809413,1.47004165764111,3.63757667556251,1.44862226267037,4.55382313418523,8.64176559051691,4.96934007238056,11.0354833778143,0.879875471035453,-2.50082476528732,-0.777078240653448,3.96773208546724,5.87832401467583,44.7652477995175,11.2825277136756,64.1498978643993,4.24646147065484,4.0416466676652,53.7665062165499,-7.13184042783275,54.9603417741197,63.0275963235745,68.300883747227,10.4604042265765,75.6215683365861,56.078316933067,72.7956797612521,82.4247874415671,61.5824693939432,52.7385699564653,55.6677718537559,87.2676134982123,52.4350736314093,46.5631111134723,47.0070961766813,41.1756448735157,48.8365636001933,47.2472873736121,42.4754025784836,37.6412602929313,40.1393854874482,38.9060229815376,34.8687161233935,33.726655611278,43.7415540609363,35.0921868138849,38.8876347291968,30.8656239232401,37.8761412982482,42.8843901593152,34.2622819242343,43.5770788126811,36.4145638208082,47.6028497093637,40.3170860145836,33.4106656315624,54.4715701052542,52.5069264192391,45.2844943768388,47.0338431253061,45.5256221276327,40.3134283220036,36.2699209415869,42.0021961504566,34.8360098785886,30.7502919822669,-0.638938986073406,24.5410147103142,70.3581663141897,41.9450046813465,19.8696351020319,9.84125005569675,-26.1785415405702,-30.0854768839822,-35.8597169033989,-45.1983596174559,-27.8944266185868,36.2254834664183,10.9692895647515,29.0681557109994,28.9670806092386,49.6999191974598,8.4164295460633,-11.9094969154157,-13.2319951483779,-11.8299222438876,-18.2968457834917,-16.2641764116889,-17.7307335498562,-21.962918088002,-17.0316425829952,18.2154559461367,14.8920933606112,13.7537743407348,12.2787041945784,14.6023177850307,20.3982529065741,-10.7950761234383,-0.360732677435322,-23.7816660267344,2.16068203891489,-4.89277683891159,9.88419651897391,-7.44325932818925,-10.4318547218931,11.8716562182395,-3.42043547264331,-1.24084373319149,-8.10410675731251,-11.5088208910947,-10.642202038759,-13.7186452467856,-5.70601478322596,-43.4981476261068,-16.4110280409296,-49.2428760993378,-52.455655321472,-53.1262172337362,-79.300849658604,-28.4772025240015,-22.509112995474,-34.4679112526033,-18.8176134791949,-25.4266636269256,-20.6594375926793,-19.6837497767741,-16.7604554863659,-18.9501337245981,-14.8999799891525,-15.5951438448846,-29.8054078099292,-54.3085983690347,-40.386868503517,-74.7362267897656,-73.4835657489316,-71.9282130585991,-53.2984094937864,-61.3168720373763,-24.4972085576569,-53.7094883745603,-70.8702034138171,-53.7122743903355,-75.3660177264419,-67.1192230971637,-54.5847253197756,-39.797823861701,-52.7427560312522,-88.9648455850971,-51.6915064223905,-48.8474576949444,-41.2302073159093,12.622128535401,4.25609324877347,-0.86357330638551,-5.00770595865232,-1.11258864380626,-10.8516158645619,-1.59719596821253,-2.36946256044901,-10.5943334748506,-5.59968749053056,-0.137650903812546,-22.7525149304225,-20.3136738330247,-16.0834169389784,-12.1758344005344,-9.54775399801261,-10.9671401397599,-5.13823183779046,3.69921407146878,-5.13521159858795,-4.70257163475192,-5.99106305063085,6.10786734496673,55.759106608819,31.6121316953255,-8.98048445109049,-86.711247378047,-0.823509300299414,-10.0399004820643,-38.135567258777,-38.1499440669065,-37.3342290893861,-34.3642512148103,-36.067417785275,-34.2218218776235,-25.2555909332685,-30.9742873057284,-33.1325065139468,-33.1520719841758,-24.1573705842849,-29.5579558896789,-28.2294898931884,-32.8906765143969,-29.6437006771878,-28.4690236000052,-20.3226047975844,-33.9468690531602,-16.6000189759614,-26.9233410516934,-22.8377272174981,-25.0682530880653,-14.7439714333408,-22.5714382809902,-17.6414243179728,-25.6005995358166,-12.9180103345117,-19.5031748129766,-6.31433896913306,-24.1399679200908,-3.98578287796714,-17.6559168719577,-8.55513306682787,-10.7691817675415,-1.38103073804715,-9.75250938533775,-0.0692049855657688,-10.0637651914444,-3.86720720731424,3.26564925086309,-4.10952866119307,5.49244265704542,-4.38151064865133,4.94679856110022,3.89824414885269,8.07918496023303,6.91903190103961,14.0997285263561,4.7178026344795,13.6906018275634,5.43936720174548,14.1684369317447,20.066833972296,8.95046505697274,17.2338629260307,12.2008031218919,18.1747470588977,29.0386447495937,20.4814157811908,22.1099166876562,16.9205587397161,23.9911582358584,32.7713916510737,27.672460304053,26.7987903712712,21.1081334366953,30.3768211159996,31.4697917615337,33.3242230211723,31.2535805539305,21.5597846896312,32.431968825993,37.8444503539067,29.583010447129,26.2366038887869,29.5842040195795,35.0571630790375,34.8426115197246,30.8425948207596,29.249944817688,29.0917334589165,30.7230645476908,34.6462455995396,34.3969134246026,26.3633014085972,30.6615870080502,33.3525389218073,33.8252377986594,29.8846693052892,21.7012152363289,30.8270178518142,32.0002522754258,28.1538838543741,23.0420620087223,16.1548660384024,29.9651867251748,27.2674276616911,24.888837555791,25.6797852635433,15.2997627426809,25.4842350791106,23.795600742187,16.267950838108,26.8754578232444,14.7281283855333,18.3564303012182,18.3634027600553,11.0110047624093,17.417613506741,6.73465424847279,16.2894400193486,12.0211796070731,3.7338464832066,11.4276365864653,1.16189208084684,10.7555849415288,2.82675023937509,3.66497852342781,-0.384194898834314,3.14052936681272,-6.95014774246822,2.28747651128146,-11.8750869212294,-2.58265980358091,-18.1115262496549,3.72879417871165,-11.7680551241314,-6.26599541330943,-13.9028485157733,-5.36499183281407,-16.896853199822,-15.4634848162143,-21.4280279789625,-9.78170102059745,-18.7248780372911,-11.2762824055848,-21.4690119017267,-23.606807143242,-25.3272950109031,-18.645608870987,-26.1777779274239,-20.1775702542503,-38.2847980495254,-23.1179975428283,-30.6222030841521,-30.6712917731676,-33.1413769432627,-24.3945320249187,-41.1714051951279,-27.4091939340999,-31.6171065509411,-36.730697032132,-34.6638612219291,-28.633938892334,-38.6301597577742,-39.7145948513634,-43.3546918344918,-100.742707182457,-5.24712656224634,-10.8256391967724,-137.641256146858,-70.1987581441242,-140.296321292314,52.0746180406933,7.85276492276304,32.3187904276136,-4.12863193648582,-61.714185852117,-17.3119317192275,-202.4244984459,-137.062055003506,-211.053981254279,125.869806196106,19.6630452885873,28.3548746482163,96.9017292501972,-35.6610676343481,-26.1035736019805,-189.352323698975,-273.431494337756,207.790333172269,150.70772741019,166.520487724277,-321.685490383998,-32.6610371996135,-362.312355886334,-235.60285855168,-351.256065052304,246.369077825694,46.8397808829148,173.098788113237,257.354338652268,191.535283034917,143.600336273142,-45.5679931866786,-251.86761113041,-284.610072063565,301.771035776609,251.593509494514,343.293538062974,277.161935898735,-342.472583307126,-41.7547165976703,-407.204859753059,-308.859622245299,-312.634836659957,306.923758202415,59.983841865249,280.601525622033,341.684489463782,310.805398527753,-52.8531237261834,-328.600878107035,-310.773546371319,48.2564873600852,353.105532093087,405.465757861797,324.416092580457,-362.469997683256,-27.5105204679518,-322.6175726184,-268.160176220582,365.628053594007,60.0834739585522,364.72178728197,-396.811752695617,-52.4142417942017,-357.138815118386,-314.695706938714,-210.779423623198,332.458047676248,277.902939292764,398.053458669759,318.123803431431,394.351761706538,-40.6522307119071,-299.28076212959,-213.236153377289,239.91875200047,245.295329753847,357.151247694285,280.034788541632,415.317071400255,-284.921597578085,-47.0827457372795,-262.886411110767,-258.402457627034,-228.417532843513,153.165916592985,34.9832132220555,260.961656542613,227.112709836958,385.959895361818,-41.3641586639769,-194.640933967762,-127.30111084411,102.746103888374,29.2154046021986,211.85042264819,156.816064726645,-184.299549038708,-28.5936051603841,-119.964606100589,-159.739886139026,-65.6503410768494,34.0533789382848,27.322771745819,150.737562095126,79.0970372266061,-19.2256793047394,-101.61597861307,74.893212229526,39.2880211972503,-43.0200528438867,-8.27630762371757,-16.4531057980471,-5.51848332146872,-9.15403380648656,-21.8829182422286,12.6839857059289,-4.80196613434814,-23.6196419835016,7.90139543977158,-29.9808094266072,22.0825069800891,56.163558084094,219.881870928538,11.7904673049138,-29.4720537912223,20.6744811560939,-52.6372107832093,31.2889917423328,86.4432433941287,346.033593700199,16.8994178642524,-29.8329845187873,29.3882800514207,-18.7760370809245,-38.3150835580225,83.4504258821151,381.606598249417,47.3970651335933,-40.2780259698508,77.2089936568357,359.435813298536,16.8313486285779,-26.5386938989519,18.1480552659705,75.5388758516575,310.567147140764,13.1280850892994,-23.5446611072896,12.0507161281334,26.8386680730218,-30.9567053382233,9.95610890836426,20.1686894950328,-5.95355021628774,1.84457050567337,1.29178797994547,4.05399721073118,32.5260877897726,27.9181122535427,56.8687932965736,48.2803394698223,95.970256148682,53.8188505015283,66.0254264269302,56.6605092534598,57.7731936624302,48.1318326585923,-0.47666036867041,-0.0726038363667616,31.5016348472654,41.9165372743323,55.3168184288282,61.3687070075856,81.566944662271,62.8153759772821,55.4383317916879,51.189962566517,8.42590760759558,-9.09897924477169,29.9179422564618,49.4179292841313,79.7263780817593,73.012507134307,67.1188084882085,73.1861323959529,53.6031309337496,63.7341787137143,46.6113514627916,32.7368607909885,54.8478711034883,61.4775711868071,53.5511198842059,61.0483183002793,61.7214571616867,53.0928238349428,33.3555549369364,34.1634008472049,56.0622641014089,52.7495229400044,55.9523390469344,66.9168758664946,54.8131438451223,59.6707919835827,46.0395372178305,24.8962143895313,46.1774983130951,44.9626821203617,24.6342805616365,26.6698576601434,30.9573813397298,49.1231539846429,60.445160704736,44.8258532257586,46.1417916732461,56.5963332995468,42.0740284709559,-2.32917532732545,-10.0270377116122,11.3909954864461,95.517248705775,76.130323378623,63.7769599839984,56.3804388169069,60.287596240525,62.4890412888059,67.6916379920492,62.6415340858539,49.4813572313437,391.092828409711,7.0046418303596,304.255047793748,433.466029119869,75.6612502124086,67.735630668809,55.6115677142363,49.6783306916736,46.237805612023,69.2288336283156,44.070648591266,56.2582933679561,36.4013239542787,32.8356381249599,41.9872093407453,39.6339538639577,50.5083096654759,47.7384451549642,47.8773429475619,41.5387335093773,48.3643849028217,43.8343692917928,32.7744251293361,37.2700317505385,34.3112023585894,38.100451157107,34.2253938387064,37.8304434245085,42.65533555267,33.0152283856342,39.6277712772316,38.2382330046838,35.9814099029196,35.3245500361698,30.1680495856275,-2.42073928169625,-9.61906324542917,12.3676633199691,35.8684048818799,24.6513473497864,47.7791801463204,45.0234384522422,55.0489554665164,62.4735926775472,38.1372577376631,36.7858730484391,34.2407848227743,28.0012104629066,31.2755776319617,31.3298830781595,28.851180658903,40.1035986431254,4.70516332720577,-4.59987800973018,-6.92056975962553,-7.92838083216507,-3.97478507155973,-13.7748509225003,-7.54466667737457,-4.43070671236782,1.39618137624351,-1.40669225648588,0.827409655307245,-1.15344011753699,1.34564742820546,-3.8554314262107,6.25088642012313,4.71950279541753,-0.978323257945473,20.2621173475306,41.2305341296682,29.9774153663131,28.2461621287444,51.1470493287414,43.7656028330146,34.4274848033938,37.6971914296414,35.8193996807959,35.7896179197997,39.6228830682476,42.6108635733724,25.3449241570347,43.4119280293402,35.883331878383,52.1138006231601,38.3766338698793,35.7515482411165,44.5070185718939,27.196072482973,64.2519624541912,30.5205701784218,30.8946506174627,29.9700669919419,33.6283053015765,26.9659695943433,23.8995039550728,25.9177251386432,21.6620418178289,28.3729280733296,24.0824842321688,23.0055572394462,23.0077770525698,17.447189322727,19.7329550527581,20.6927054462483,21.6599797216075,19.2013173954526,14.2774275729225,22.0307814398779,25.3866036488935,26.8344765740783,26.9179562468753,31.2510035269161,23.9561547564998,24.4748180759969,21.8134065321373,17.3861483887696,16.3975599956848,14.6273491381621,31.9759886884566,28.8242742382125,18.3125121423662,18.6313637957152,13.9361186444236,16.4234901190634,20.661806922707,23.2658106369705,17.3240975704268,21.8583942315552,21.0751641745044,20.3128937952669,17.01292411556,17.4021233547374,13.222786489773,15.9192242378157,15.1888105863598,12.8536259135012,-0.362833586846299,3.4652734205776,2.05841089083815,5.92452358653888,3.71159818888951,4.03285119490881,6.06197783334198,8.25118765290305,12.519674649132,8.86516379132557,11.4711826043096,17.1212767512311,14.61007362492,9.11533141527339,6.8526302726452,19.7630042830968,9.98720463097897,13.7019058099137,18.967796288503,21.926300771154,16.6329913689633,-16.2927235335015,-16.3634059726999,-12.7283236805987,13.7133558773351,141.563589392352,12.2545715514935,40.3746147482588,38.7635134685618,37.5665976753754,48.0557578955195,65.8839791577609,32.1745106220134,42.3243171004845,56.9906042831497,31.7260349826874,25.7372436646355,17.6836076090019,20.6082234495894,19.2569174935417,20.6280142619288,53.3649433771777,39.940153578911,36.8948971260969,48.401146006841,27.7984146689504,31.5477113744137,23.7232074453188,29.0489758865487,29.015076695557,27.9586616181859,22.5140713976457,24.5783249659484,25.0290877079303,22.4115219030035,27.3756299613259,27.0614142242025,32.3020015263835,21.3008958211267,30.449641590622,24.3465100199741,33.7927642959189,21.6869017941293,17.473089559269,17.3213591376601,20.1570902701991,19.424457686106,18.1014483769954,13.2093328237498,15.9454220525211,13.9187760177979,19.9738783122301,10.408571886366,15.4977220720255,17.7445317405093,42.6827937333652,47.1025187117424,20.2902392733449,14.2504792845646,18.1505037586588,16.6835432993114,19.5596077927793,23.3970508525324,14.0421090168411,9.65802640408128,9.8735702750842,11.4321787758281,11.7557589605711,11.1483322475933,11.5011546455045,25.8038737410903,18.9106353653375,15.9198376682453,10.8209978361098,12.8587683040821,14.2695547240858,9.73903668565502,12.1010222939712,12.0540005531961,9.59857511766021,5.85722964622415,7.92047736472414,7.62551868218991,6.11828563260708,2.32819695902502,2.14770533119817,20.4328351575234,14.0449004014491,-16.4198896210733,-28.8959764900396,-17.8409890460806,-24.2867916317017,-13.6874232104556,-30.0491843490865,-11.4263715848568,33.2525318081191,24.8560874762006,28.0854215772865,24.7433469462511,27.6328553932717,28.2518335483968,29.8293200333083,24.3885083480454,20.8636829852769,20.9979433514744,29.8311108850372,30.9121044395842,27.0086469175426,23.5091956152832,16.2325546575882,23.8453694627213,70.5065080945274,51.0837410949306,49.6092924371646,40.1324260599632,25.4409376092917,19.7659205059873,32.6824046440242,27.0923591352842,32.1554682778927,38.3044008589573,16.7665884452621,15.9738314304577,11.3448499699933,13.3920205546202,9.91935728592547,-9.66887349346396,26.5281951688684,22.5824912488762,19.6799391701301,15.2592019794819,31.7123476809107,20.1102306692918,18.7431981371181,25.186593377966,13.5410955997039,16.7651066576103,15.827653443321,9.9229493596879,13.685393903599,12.3927589048231,7.32080498650436,9.38838369346239,4.62392965636777,7.03292709575188,6.78986027218048,7.41825370551344,10.0699274570322,36.6606209256409,39.733249606787,25.4855341336909,24.4365530600558,31.4027262371577,26.1591061093567,29.5877461528738,27.9382083637683,34.9692529712433,13.5459965190235,-9.28126023213606,16.8105226594426,18.1111518333688,17.2168155211532,18.1890640447725,35.1380325435384,30.9119942423626,21.1208143194207,23.7561318400831,32.0281104429227,31.653444776495,42.9795101686802,23.7036198552094,21.2139878537904,21.3310583639717,-6.879448396059,-15.596315485794,13.6655404695697,25.8729745732324,22.4845553832774,26.4672225679458,28.6347322860378,24.4619258087291,27.886912379679,20.0724046626469,-3.93997581970747,-1.99714541199828,-0.242809543481977,-1.18745956579291,-0.153530198129161,3.50215800375553,-3.69330782506755,1.44990298268863,0.524548836165945,0.46762205918804,-3.56156160477742,-1.80245240818061,-4.56961224799913,-14.3667830767352,10.6715308564027,15.9424977408182,13.732940278767,18.1922906157427,30.6949137632498,-2.43989764210062,-2.96183312990106,-9.30550099202399,-8.19140955700868,11.2234421629369,8.24158109472427,12.8835740468279,9.85218582346545,12.6491575352401,10.2067588770177,7.40934827130419,15.5072066936976,22.7549599432736,21.4919394741209,31.5004211524441,36.4839362429456,32.8232077948465,28.4943574447009,37.2603460564591,29.5211894056661,26.0394625798457,27.9283294760528,24.541127934103,22.3341298813607,24.6747909033979,24.9169598369802,-6.16731467430596,-5.99756611397419,-7.64502171770276,-6.19571773336813,-13.3811215400035,-10.5517967520505,-9.48995579695598,-12.4400541848584,-12.9262795548854,-11.3266362616169,-9.49349810850991,11.590636119964,15.067796102492,13.4438552902001,16.3353885818215,14.530657748537,3.76314861183591,21.6542708803463,18.6815366884569,13.7616053654098,16.3069342922624,15.3839028522885,16.0415049302801,21.4498771838768,-5.72633531343924,-6.60254768338825,10.6992140838617,5.73230062085865,8.78186960208709,8.27053224172071,7.35258608120179,2.95767803531736,5.08909162640821,4.63142348163499,6.195732089713,2.12449153537069,4.49769886928458,0.566459654508773,3.51778213172674,2.20494717329519,-1.02149927273273,0.144704488763239,-3.17605018046111,18.9214539981262,12.9498325381144,10.1066628359043,13.5587540078193,9.687475920574,11.972657625073,11.6065897435848,-6.51840325004463,-0.284752878949927,5.50352560076315,1.05572905257691,-0.679692070305597,17.0550894634202,16.3289148335551,18.8138396883467,-4.30998947421039,-10.5906626732198,1.36965862170347,2.70327535448013,7.93609424058788,5.95249556903085,8.36068855931006,6.37507105820852,2.50671470982683,10.6551838073203,6.2783391233803,-6.17885080596641,-1.50174321493048,1.38180172860284,-1.65487059850293,0.491771295663049,-2.12558547564214,-3.75224148378696,-3.54950382650317,-5.39443888471305,3.33227218232339,-7.56923087145582,-7.85849589677428,-5.95266100260515,-4.03331496510897,-7.83404744591169,-5.36876387609849,-11.6363938961082,-10.3794620594296,-7.61242995812238,-9.7186219554616,-9.30074900254704,-15.2617096816615,-6.83729117476241,-12.3760077880614,-12.8376439549476,-15.2405202013146,-15.8595223199988,-12.8890023037232,-12.1689511535244,-16.2668071609407,-14.0622204000262,-12.3681945009066,-9.63670500761628,5.08815014323759,4.45727813029121,1.52442493601833,1.1351251515605,-3.18215290843659,2.86978884430395,5.24029143877841,5.22236792501962,3.65305417100758,4.90977572514436,2.46313363587106,0.179619302029781,2.54165493536651,-1.73150980919793,0.633243315338814,2.98217495091243,-1.62087514284169,6.29868713813103,5.24832865165791,4.31373757404157,5.76126851947332,3.65691356718419,-21.8116866390495,-10.0543363635303,-7.84875356835082,1.53299225388957,-0.519767058443792,2.85591269772615,-1.36639264573988,-1.97395732017117,-2.53217572420724,-6.24504251940731,-4.34344178808843,-5.11029914095482,-3.88963726103016,-3.56209975370987,-0.27116702864284,-1.80803596082867,0.70728948832528,2.24704452715407,-3.52791077285291,-4.74616493832312,6.31613077878208,7.31094865586474,8.32094465338597,7.71031304292478,6.17437655132106,-3.51287815992338,-0.409472694485838,-20.1411146847797,-18.2372176358648,-18.8875719658211,-20.1106221563079,-19.4864224235112,-26.4227732728228,-17.8180480457464,-17.390141351622,-25.0994626334824,-22.85126265956,-17.6186071221906,-14.5149448204799,-23.332787651798,-25.3352631400757,-12.7372630829399,-26.4957035993332,-23.7247806403568,-21.1109664690837,-16.9142999598057,4.259624439588,4.52715945446105,4.20475264095796,4.04074796831809,6.24433713117417,-7.6301809574141,-5.02011424320502,-8.29957247421222,-6.27689524525595,-5.05392375853397,-7.53709151854501,-4.98343692773559,-2.80387975940166,-0.496057042332588,-2.0784359014516,-1.00499122860211,1.23567622453458,-3.30763560709628,-7.27897607242325,-6.00887165784139,-10.4260181119447,-8.92532638718326,-10.8506673017401,-8.23895940180528,-11.2729124606072,-2.6547047333719,-1.61260116056995,-2.37930572388867,-9.31618645659847,4.25064839270655,4.60834765547149,6.70532777586725,8.81479948388692,1.52805971079613,1.83237039562174,-0.328977824233296,1.06645696097785,-0.692359306060592,-2.07983535890927,-2.52056943755085,-3.91873558665634,-2.74445682974204,-0.607341974516006,-5.17871592974151,-15.6549703374276,-20.1624186635284,-25.2186528855491,-17.9985424209085,-15.4060965658973,-13.7539382586913,-10.4914425106483,-16.7053073530718,-16.3946151371381,-12.7466625278262,-19.831894501781,1.0304073722411,4.23842663123983,2.42012286850282,7.31378510683378,7.56272201530682,8.49736200394875,-8.19790191458084,-9.80556341604453,-12.3076144082845,-17.7386641491057,-7.32483707511604,-9.85226456424448,-7.25129952363157,-9.11509524708464,-12.7612651152903,-11.6234743643682,-14.625633884144,-11.7592628982509,-7.4847034376002,-9.38742529039334,-12.8179284973297,-9.8845758085743,-11.6120269661113,7.6576870713575,4.25304853187059,0.827240549916937,0.322848589744671,-24.3360142111294,-15.3716967673837,-18.5994515267833,-15.3101622924341,-17.9655034293649,-21.3902256481107,-11.2585136357112,-12.5235551071847,-10.2249492713121,0.934719840475182,-0.821048055566435,-2.49363938913266,-0.683722267337539,-3.24959343976288,5.86567066520361,4.91536487005499,5.65449625696873,6.56044509230378,10.9343199703297,-6.39372660062468,-13.7657909815816,-5.06415869461074,-32.6094820309512,-9.25034661701569,-10.8580300008154,0,1.03617706916855,4.36525187070933,1.98660227547139,-7.08502044065224,-3.57006175854955,6.75435535937218,9.29639831805186,8.82173147709225,-13.4665032710312,-17.3347637104298,-14.2034246752207,-12.9341300448454,-17.2073355377224,-17.037169980804,-17.942286823687,-25.0167242684818,-20.7417634628711,-20.1073000419258,-21.2988885481818,-16.6193045834379,-28.8748038821969,-11.0171861582073,-15.9142602505448,-8.35848555377403,-13.2052644240903,-14.5883755498576,-13.63232650436,-15.9814590233648,-13.1882093360496,-19.1149323351926,-10.1662416100976,-17.2028783381333,-19.2335166848786,-12.021248911196,-12.4426762575915,-10.130518715366,-7.65774764344429,-8.62707030268266,-6.53247347162793,-5.00391527874845,2.90175915686982,0.465349338043054,-7.8866079989071,-5.56946631812721,-8.72111114097681,5.72896308115849,9.20310668316346,8.58859869884318,10.7142935151527,11.4545598947561,13.7521739092603,10.8080696523652,-26.8084768514888,-20.2959080415187,-31.8724867474312,-13.182311711362,-16.8422275728991,-20.6601677740448,-28.8344083675673,-33.8213475687839,-8.4328154151063,-11.8898613318881,-10.6092126758076,-14.1042857141824,-14.9569423374633,-18.4084275982527,-16.5861990590312,-15.6934278727088,-18.049146021196,-4.48823747363487,-5.42214023449788,7.06812491976085,7.96851664349276,8.87653138283437,6.0207059486802,7.96011740685695,7.85162580198385,-27.4365744372004,-27.6588220868326,-30.7737472655523,-18.2051146466266,-21.6820909688081,9.73897007023988,11.9860687112604,-36.0828664856208,-34.0260905321453,-46.4368301891369,-37.3712966776077,-36.1371291464826,-44.9769142253677,-31.9300641187653,-41.2151874468955,-40.3181044029928,-43.7774015706456,-31.8393028440236,-40.6420072102496,-52.8442166118527,-38.5476232522585,-36.0731734035326,-30.2596336455775,-41.2365676803161,-27.9672485157965,-20.7784017260402,-26.1279843488444,-40.1757222952963,-53.4686547482581,-40.5540495480462,-28.2929472192528,-31.4562203736766,-22.7442578906385,-37.6188989663381,-25.0073863297456,-21.4161278377575,-40.9754936708019,-40.0943374791962,-47.7739485270589,-33.160827581943,-22.2841273453048,-22.865447409772,-27.5186588840938,-47.0937207199747,-46.5684418729427,-65.1821217583551,-41.2037232519801,-20.7445683888519,-24.0585115620075,-19.0829642820353,-24.1159147747284,-27.6855227287645,-25.5883508326397,-27.2431908765622,-24.6827806582427,-34.8113305773712,-30.3019879870299,-34.4316277456493,-30.6847264927398,-33.150512786338,-39.5760088900878,-40.7848218871891,-33.6347098934065,-35.7375545597227,-36.7166232278531,-39.7979498652033,-31.1999940817549,-28.1082861254963,-35.3941844032802,-37.8973137967871,-21.3331068211037,-24.1091967983716,-21.3202384734802,-19.4973198148862,-24.361163436955,-29.1640883506227,-27.1473973957052,-33.4748456360066,-29.6868496923948,-30.9812443093334,-35.9730770808184,-34.6075825699111,-43.284891904907,-37.2356359957468,-32.5139518882432,-44.6905569959957,-37.0329187823034,-28.5693428812124,-40.4959297415642,-50.7706670922708,-46.3415253608069,-51.4973922695794,-55.2449668353946,-71.1821654413857,-35.2403041178594,-47.6134984486235,-31.6868249857237,-28.1450467239458,-28.5991557540035,-24.0161734858053,-26.9761748563917,-21.2416673926514,-23.7708625651206,-25.7481381517713,-52.918726838456,-25.6921793263464,-32.5994052536279,-17.5487498997661,-17.0062637628535,-30.8983680446348,-26.1837187395071,-25.032468667401,-48.3451846367973,-55.8729949135052,-50.5715790044491,-52.4807248613974,-66.4774508609,-55.7826101583593,-58.0628835177622,-22.350905512649,-45.6135844028024,-22.8511768617472,-28.8807438453548,-32.6762701629905,-16.3988702671786,-23.3465273752428,-45.0489625918793,-69.0490115584351,-47.9610424924073,-49.061837772235,-21.7793269117482,-20.3909612349682,-34.924339064254,-27.543550670199,-30.6547394483184,-30.5549935869312,-34.9935088270557,-39.0089385296615,-29.0405356172599,-13.9428356892517,-16.3375123786968,-20.6642419598081,-42.8286834591604,-58.4758755714933,-44.9247554599837,-42.594706586951,-50.9338471804314,-58.3586580122016,-60.7209448439939,-37.8360585384492,-46.8521387660575,-62.4485891799747,-36.7258018144444,-71.3077995464498,-60.6366067423891,-57.2237076712553,-44.529240978112,-51.5741042387022,-42.3413554631975,-50.1137916216756,-49.8199399222065,-54.9683984766764,-41.2026133620137,-41.6738855679048,-33.1153094634495,-39.5330364456881,-15.6714063393008,-12.9939768201745,-18.8193411450991,-23.7889587730247,-21.5115178556435,-29.3480832052499,-26.0506399924898,-26.5372512183773,-29.0133381588272,-33.7737506676021,-27.2885753476933,-31.9316790693764,-42.0404827905386,-35.1220411984487,-37.9434182716345,-33.8198715996973,-37.3774723667582,-44.3275867278357,-29.827612993798,-32.0209954848234,-47.4297794525844,-45.7760993255808,-48.3160534286754,-99.4253063002281,-51.0985815701186,-44.8924862104653,-37.496604694988,-21.4308427498928,-20.6349532940841,-22.1919579668398,-38.9717256547044,-46.0145894341799,-41.1364770636919,-49.9184797138232,-67.4626312277893,-41.3393113937761,-52.8865318278552,-47.9436792938754,-53.773024996373,-58.4204551904334,-65.5008276753468,-55.6566202122177,-92.6796094158709,-50.6468234308844,-33.2512912168278,-37.1100267342085,-19.4092817933957,-17.7718994214939,-14.8170380251798,-27.7884746408346,-18.211987687494,-67.1020732492817,-35.969672811701,-32.9081706112084,-41.4581374559841,-44.157985110107,-49.2915945292739,-59.6657872914974,-48.6253734274478,-75.6887400339568,-46.5804967195823,-46.9921211539367,-20.246996179979,-24.2690980114259,-28.903546172612,-25.0273918712106,-53.5226374029571,-51.8958559099239,-55.617614089656,-54.6661210161425,-68.2215846494925,-57.1248611144328,-68.5691429023355,-61.6985552673753,-41.9267197897375,-68.6598500020751,-59.9339735823423,-76.1678269060287,-38.8989659788088,-62.2163762241625,-53.6426880500449,-23.6336645436609,-25.582026347791,-30.4854865699411,-71.0268753821957,-60.5324504858392,-85.2162742922489,-21.6888585989467,-29.5396531368378,-29.7534167729003,-34.1552745738905,-36.3029833696902,-37.2349435472632,-30.4798540551114,-42.1721711393039,-27.1808150887135,-25.6945058220297,-25.8835254929175,-32.1681453720821,-33.332890997771,-34.6338975515054,-54.5544246868066,-56.4688202907123,-27.1679771795124,-23.4169352627623,-23.5735148203611,-32.9916698617125,-24.5491519091057,-39.7590782665445,-49.5108117056041,-85.0235732458381,-37.122011712501,-146.139057265185,97.5673925460189,37.6078918672706,-203.082717708474,118.965325458462,-258.47859832142,246.800946649922,-308.056819954186,257.088554117015,-335.113992892044,329.564037284617,-360.074014593623,346.732400879946,-335.162189404241,-348.72673810107,-328.322113663099,-287.754692440725,246.807559708578,-240.250333388492,173.575218653976,197.342735946813,-181.205019468765,45.165920907135,145.686303805752,-118.151057652966,-42.4011151893742,14.7075071968649,5.6764563992961,18.6676985510593,11.2487536417524,19.101170749122,10.6892708009022,4.6416534710616,13.3578144318517,11.5338146608396,13.8852608573667,9.71023001900295,6.96879020228908,1.48243127769958,3.67819402382255,1.46372246257792,4.59887687534036,8.74125607423599,5.00365584015537,11.1499851625334,0.892188186448737,-2.52763542305365,-0.785931330660016,4.00915962699026,6.54838353592761,45.4741754831147,12.5322391478238,65.116934836273,5.74990772311063,5.40129295736307,54.6114131788517,-7.21173573442868,56.3357358377529,63.7290661189166,69.2386778571589,11.9253445220562,76.7242493614313,56.7406282988639,73.5560720613158,83.1878186476733,62.1853439811278,53.2782998698833,56.2930063867637,88.087794542007,53.0155379538907,47.0529295790524,47.5079723891033,41.5961466705541,49.328158229957,47.7416771709739,42.9325263235386,38.0264542370458,40.5597418413751,39.3211322824898,35.2352773638563,34.0894562140837,44.2185042995106,35.463839203611,39.3028780223756,31.1847326962961,38.2812808784945,43.3220237299397,34.6306931880155,44.0217179552413,36.7921462551201,48.1113432180544,40.7353947039167,33.7585459385318,55.0285056780349,53.0422769536988,45.7521086385826,47.5015386801659,46.0021131325168,40.7554343341327,36.6431966371586,42.4634025368306,35.1872684878241,31.0599245655385,-0.646165227578309,24.9708012486529,71.0233878727147,42.4459713877262,20.0963911446187,9.95097526558801,-26.6726431167261,-30.4021038415319,-36.2406493203928,-45.5631280701724,-28.4052300003083,36.7177965799646,11.0846718163885,29.3269030296187,29.3022569868953,50.1221038881125,8.50820410304684,-12.0378354992661,-13.3713417469645,-11.962411236922,-18.477975826285,-16.436883654076,-17.9179945897112,-22.1882340125212,-17.2136430098797,18.4168208035281,15.0761709242668,13.919096696007,12.4241804596997,14.7754618318072,20.6124368545293,-10.9252712797685,-0.364801627509833,-24.0376299693225,2.18437537656866,-4.96163718932523,10.0067844553283,-7.52687971288779,-10.5445884572451,12.0149040823488,-3.49902244223372,-1.28439512494145,-8.18971593346137,-11.6337604555106,-10.7693791804564,-13.8727907381198,-5.78099754080484,-43.8518040618628,-16.5945205306961,-50.0641870498009,-52.9411595315953,-53.595434303443,-79.9980469067796,-28.7783122870487,-22.7570164874893,-35.3212691229549,-19.3973158145949,-25.6843410954607,-20.8910880519081,-19.8916128907163,-16.9371493902938,-19.1449243826181,-15.0595646912699,-15.7599775588627,-30.1243810502647,-54.8549900497879,-40.8160651701011,-76.0336810715478,-74.2533520583851,-72.59799757062,-53.8431839007398,-61.9776758766265,-24.7494266857729,-54.2760768790149,-71.5154008876056,-54.3577746588716,-76.0179762113153,-68.4229478532423,-55.567878326481,-40.2096692963706,-53.8892110906987,-89.714464513894,-52.8602924530894,-49.3068481302289,-41.6617509133737,12.7793969594949,4.30957313475161,-0.884078553453018,-5.07006281219382,-1.09378845573764,-10.95555321719,-1.61920100351918,-2.39496126969438,-10.7387014362713,-5.65788874217366,-0.145377618544801,-22.9544240963444,-20.5236208230673,-16.2620116367951,-12.3032918879785,-9.63634470180462,-11.0772137658221,-5.19271236222774,3.75492370863091,-5.18679835155563,-4.75227751418193,-6.05204242334661,6.17145902316512,56.3305523239427,31.9411284883584,-9.07385014409015,-87.7993323105415,-0.83097800690915,-10.1454734020547,-38.9980116640536,-38.2911357766853,-37.4969899952189,-34.5515669433875,-36.25762734096,-34.407165521428,-25.3440195406757,-31.0806543110366,-33.3002933693841,-33.2914388012209,-24.2245787394514,-29.7065102063033,-28.3569675212536,-33.0300465861995,-29.7610189869376,-28.6432096811906,-20.4066498728332,-34.16390998862,-16.6297797438606,-27.0358328894446,-22.9171454155233,-25.2047346795376,-14.7593777798511,-22.7067255434848,-17.6941177413854,-25.7254949673902,-12.9461705285173,-19.6502240261697,-6.30267234674088,-24.3229711852256,-3.94553617780845,-17.744027328789,-8.57660886015037,-10.8361485743865,-1.3554288195751,-9.84234832747709,-0.0190826924786541,-10.1269062594654,-3.88838525533656,3.30811249827914,-4.18545560191401,5.56852213164236,-4.42783507687933,4.98282162231703,3.91067279543213,8.11548472965647,6.94411403981938,14.1745991095645,4.68726001848019,13.7997903873989,5.43208632076213,14.2383160665619,20.1632916449349,8.94532373557555,17.3423970474771,12.220334037876,18.2617405234918,29.2045273868037,20.5559109271481,22.2369093323926,16.9541238150593,24.1104291258623,32.9393673322098,27.7909439549041,26.9409322200545,21.1524750508227,30.5326707630605,31.6109108303401,33.4763773556961,31.4288255512265,21.6253589979068,32.588973624646,38.0237606440224,29.7277772603451,26.3490843374875,29.6704369936758,35.2327309452704,34.972330313182,30.9897932494738,29.3709547763971,29.1777974925387,30.8683515763047,34.7795160999248,34.596326629385,26.4630015241785,30.7652509806992,33.5256451483663,33.9591920881111,30.0583579045103,21.7711207462815,30.9423803889638,32.1683066102413,28.2504243211279,23.1718585397955,16.1895409325449,30.0869133912258,27.4034178436512,24.9726777033148,25.8495403501906,15.3235084173741,25.5853570010779,23.9154935561494,16.3061241110538,27.0631273705925,14.7628353040807,18.4386105924757,18.4537410734902,11.0230424429364,17.557041154463,6.71192593292161,16.3662542117214,12.0812336768466,3.72058319490727,11.5329055523993,1.11410553045416,10.8214318823232,2.8298538427089,3.68725467416702,-0.394845174120752,3.16816871161477,-7.00904748569975,2.35221488872867,-11.9833405705346,-2.56088442658803,-18.2330367113305,3.77819122931729,-11.8311597507386,-6.24295928058007,-14.0093600037162,-5.35435201329958,-16.9702436952157,-15.5305447792817,-21.5264814488317,-9.77715411733959,-18.8451356432638,-11.2882764198583,-21.5563274222903,-23.7200243499107,-25.4262283919911,-18.6903984456246,-26.3458805275565,-20.2331211416215,-38.4801518753005,-23.2061495236099,-30.819388557014,-30.8044074716494,-33.3402387692779,-24.4674185145206,-41.3749262307258,-27.5313957302229,-31.8082172531348,-36.9104479357465,-34.8603188488199,-28.7311936316992,-38.793251515084,-39.9063227350146,-43.5658037815271,-101.346431036271,-5.27556273610104,-10.9909597261675,-138.39195249416,-70.6024295005964,-141.104675619789,52.379805064357,7.91734263853376,32.5008503407225,-4.17767526886538,-62.1052830682911,-17.7007690227504,-203.610762231845,-137.805899949358,-212.354473991374,126.649153436825,19.9005066177765,28.5111682097069,97.4398993394102,-35.861244065069,-26.4029819404285,-190.366958947158,-275.121390079812,209.061743646929,151.688982892067,167.418024894438,-323.800849010589,-33.1895844829292,-364.646877494393,-236.849902755122,-353.403223290349,247.883635116053,47.3542604000451,174.009764273874,258.940612213817,192.697829596839,144.511584696142,-46.0517241465003,-253.345726598277,-286.331612789573,303.649703660601,253.241505898402,345.377091386568,278.666745501031,-344.625763629788,-42.3694502144139,-409.835587840804,-310.527050437306,-314.506047487705,308.774195833562,60.5082104798406,282.114259795229,343.790999484706,312.766093501674,-53.7649677200828,-330.387138283738,-312.717678351268,49.0971137952498,355.389018139715,407.903386269032,326.156271150365,-364.649134713266,-28.4818171015536,-324.35700568746,-269.809039643822,367.956891698073,60.7613320871374,367.061930074368,-399.342204962268,-53.1234962028536,-359.384746203826,-316.426712554019,-212.017859992045,334.571705381587,279.736771876256,400.444544727901,320.099633535069,396.974434807446,-41.2836693555229,-300.952392814785,-214.53702792253,241.410965711077,246.914864401706,359.294760835887,281.754633180208,417.931567029029,-286.622188532702,-47.7913187437936,-264.549640103515,-259.804765554281,-229.821755894963,154.058482103115,35.4648937045154,262.366764145329,228.524933037575,388.383517844806,-41.9352629518258,-195.775766089665,-128.077218213306,103.357199427586,29.594484371046,213.0206253011,157.699467451561,-185.465087988675,-29.0593148236228,-120.715486509213,-160.60086408943,-66.0361329682641,34.2584728929933,27.4806111663765,151.578649623991,79.5293620021634,-19.4923249436195,-102.172096536343,75.3515520974017,39.5176198922958,-43.2900606371234,-8.35359683004129,-16.5702567262425,-5.65711229361646,-9.23243208259512,-22.040484381458,12.7929910053548,-4.7597756823202,-23.996268071702,8.10018056497267,-30.3470324424843,22.5371130295972,56.3982814348809,221.300933222803,12.2177948529928,-29.9911192910172,21.0135631919977,-53.0141464888054,31.7589575763502,86.809018952768,348.262984127878,17.5675287718075,-30.4467709049113,29.9511334527616,-19.4087820573366,-38.7456273688466,83.76773519685,383.987604506442,48.0583191437808,-40.5934812757246,77.4891131343287,361.752507014826,17.4891467697329,-26.9310485824677,18.5173980555564,75.8756641140968,312.56076794003,13.723454802435,-23.8842117536414,12.3395145884853,27.1677277618096,-31.2123317691576,10.1362083927063,20.3910133383609,-6.15284979096576,1.92124876370229,1.24032411968321,4.06676399239501,32.7005978491706,28.2227752096868,57.1781519709075,48.7565289960684,96.3589521349557,54.3465169356516,66.3856886047348,57.1735634987289,58.0983081032041,48.5348118157155,-0.486215275628685,-0.0345128339610599,31.6505425923027,42.0263819233352,55.5727052773433,61.5437632868738,81.8134903075597,63.1087551699238,55.6903443797426,51.3350708517687,8.46977969950535,-9.15227899491138,30.0139254035725,49.5698413943667,79.8983479924354,73.4575846961591,67.3190730169195,73.3812805335911,53.7900629120129,63.8627651150486,46.7562087536443,32.8401928682169,55.0284428078422,61.7337435353534,53.6905621879457,61.2712718745398,61.893907647729,53.2846854620755,33.4288337066138,34.2857596038955,56.1767235108075,52.9359551443913,56.1344637522781,67.0508877476629,54.9973910519434,59.7848926824378,46.1950959560261,24.9647295370969,46.2975695399568,45.0917142005928,24.7180795262186,26.7302715699047,31.1060394226754,49.2349828765655,60.7823896286479,44.9769262726808,46.3366717230488,56.7701574548477,42.1902089837217,-2.33539723386291,-10.0625901587628,11.4323836988836,95.8282892992371,76.3522557796755,64.0368307591132,56.5651471041897,60.4408542581488,62.6688261173018,67.8293184987356,62.8181625339095,49.6282405396634,393.682258357983,7.20791254053346,306.271263901665,436.296325005189,76.1817458428086,68.2165392298307,55.7852037891016,49.8109474181797,46.3797309181254,69.4387619681471,44.2113820632084,56.4087396671441,36.5209532709437,32.9416934051166,42.1296556612833,39.7551538734887,50.7009538245484,47.8863243210067,48.0208202720907,41.6700634165582,48.4964455745099,43.9705414911781,32.8848347107934,37.3877472233143,34.4263982789822,38.2292238595687,34.3291667996175,37.9573633795857,42.778733480508,33.1163646229109,39.7452929375837,38.3901249001592,36.105137101542,35.4511431769553,30.2607635485537,-2.44037207665019,-9.6425301798561,12.4081229278684,35.9799563118895,24.731787835751,47.9218799203285,45.1590483259662,55.2950226955056,62.6450296465262,38.2732544710419,36.9058675356349,34.3547709648079,28.0950675987462,31.3785647304758,31.4355415218228,28.9506552339347,40.2203488149767,4.71098643742627,-4.62241748311823,-6.94077889801941,-7.95467337664671,-3.98678729760264,-13.8202152520246,-7.56993089979836,-4.44302278134305,1.40079811287357,-1.4125369436297,0.829051896950761,-1.15665151430613,1.35057728480779,-3.86857642388029,6.27086671959231,4.73551288851795,-0.952277999039078,20.3441189796197,41.376487586675,30.0712820666081,28.3300918364687,51.3198680535957,43.9086564751993,34.5368241855319,37.8254552998974,35.9367978883312,35.9037820542063,39.7454660348349,42.7461828121628,25.4387269931423,43.5731448635252,35.9987914853404,52.3203788349174,38.5196632418855,35.847521151196,44.6861405865499,27.2797019489819,64.4967312309312,30.6289698025513,30.9989277247268,30.0582062074223,33.7379070997589,27.0606837950761,23.9770735728111,26.003662748142,21.7294113277,28.4692710225034,24.160721651466,23.0825994292145,23.0779610299892,17.512143859235,19.8062120842566,20.7682535943069,21.7365903856613,19.2727825297515,14.326675628886,22.1140732502066,25.4722043251397,26.9307962733307,27.0197719159173,31.3476145135655,24.0390249063444,24.5555076645303,21.8945651344954,17.4498294262418,16.4556075631747,14.683558013066,32.0861934568085,28.9189926775906,18.3800881461777,18.7088313642174,13.9834094416101,16.4803634962036,20.7451216121505,23.3489722178464,17.3872828910085,21.9437012508234,21.1514237944099,20.3959513849144,17.0843024203792,17.4755362161487,13.2837985119139,15.9851433164838,15.2533363360633,12.9162627162781,-0.357828332701407,3.47968386213301,2.06550495450569,5.94853388595428,3.72256683851611,4.04628765181651,6.07476706365656,8.27566736576132,12.5594189015957,8.89677189598828,11.506969867395,17.1606978969565,14.6578140318563,9.14551371919945,6.8741044847713,19.8275911144335,10.0189810784709,13.7446813792947,19.0286628442378,21.9802323431952,16.6845251495369,-16.4129419655467,-16.453413733639,-12.7677438857964,13.9124444772554,142.411694796475,12.3113754522007,40.5033159787076,38.8768122525478,37.6758100450003,48.2295370955192,66.1372041932523,32.27604889688,42.4443746919913,57.2325078930095,31.8223287120821,25.8181439264064,17.7344430010374,20.6765909398145,19.3195815688788,20.6929204397752,53.6403060674587,40.0759508549158,37.0108631018108,48.5542030923547,27.9021340328433,31.6597845034195,23.8092618346666,29.1547498929133,29.1178208993675,28.0596952181244,22.5981397227297,24.6719133774213,25.1265868708692,22.4928756101041,27.4767185169521,27.167445461322,32.4107979093051,21.3841591634633,30.5496136719194,24.4400139501286,33.8952788646268,21.7751540477648,17.5561620607391,17.3952504948385,20.2277671459245,19.4947796855205,18.183559880448,13.2703215235124,16.0222921687925,13.9858798380575,20.0549765522179,10.4660790579393,15.5659832081132,17.8212449711285,42.8034886164174,47.2992525696031,20.3569744795772,14.2981805408683,18.2093679467103,16.7360474592729,19.6308623170081,23.4661403182322,14.0939956800846,9.69068375995803,9.90461686031073,11.4724187063892,11.7991669124255,11.186629973477,11.5448839720752,25.9057144549109,18.9878219581856,15.9815321196424,10.8668903758131,12.9130249134211,14.3313825700269,9.78263708887864,12.1526232154072,12.1024680770118,9.63705377528257,5.88393564087575,7.95193596726351,7.65969469974494,6.14113273188306,2.3371293937671,2.15421174452938,20.5150951466314,14.0898986256437,-16.4610725348498,-28.993867160523,-17.9035329685879,-24.3741247046803,-13.7390099248631,-30.120174696326,-11.4610677336624,33.3591303910005,24.941743063077,28.1775550463831,24.8257716033446,27.7214387606482,28.3558889756092,29.9228966049735,24.4667415433587,20.9312478551708,21.0688921901424,29.9400531591938,31.0237733775368,27.0978801734861,23.5934871248092,16.2830071679771,23.9266211666626,70.7874792781621,51.2549127068692,49.7552955026362,40.2582636002237,25.5459639559218,19.8539472806274,32.8027161955077,27.1768998960728,32.2353946082612,38.5844997319437,16.8243042734965,16.0221140916014,11.3838167071241,13.4506504927543,9.96404812121335,-9.69764083208997,26.6229565126211,22.6541114138336,19.7420326113059,15.3135155277529,31.8185228972141,20.1782782873031,18.8033919828661,25.279834101059,13.5899496210794,16.8166946727932,15.8768305740367,9.95534515535909,13.7288077040756,12.4311632014842,7.34396667988756,9.4197051007119,4.63885958126853,7.05732055573627,6.81126521873617,7.44399747803052,10.1040056395077,36.7717555630402,39.8538340122615,25.5736501866671,24.5117765779936,31.5094395330506,26.2490190415388,29.6697770594674,28.0328881167271,35.1200760492184,13.5941237978383,-9.31557484058032,16.8678748950176,18.174505654569,17.2800250669338,18.2503277428628,35.271392274651,31.0112834727375,21.1976787207777,23.8444265042757,32.1180503698968,31.7666268689476,43.1240545714867,23.7805747318086,21.2724404794461,21.4028992757692,-6.90049294645616,-15.6421549825974,13.7132863920806,25.9575528128066,22.5625328018438,26.5533771337406,28.7337039525708,24.5476437326475,27.9791989227808,20.1515321025507,-3.95512726260796,-2.00405869203314,-0.244221898173127,-1.191498000969,-0.153916945225236,3.51453525625224,-3.70469447041968,1.45537085671111,0.526974414230016,0.469177136977398,-3.57429187746541,-1.80918605030993,-4.5864844687931,-14.409608538944,10.7120129317591,15.9983110642487,13.7795037758908,18.2726792525169,30.7962789427824,-2.44764513811939,-2.97351177994008,-9.33743430332923,-8.22214941036259,11.2637529380793,8.27036664866916,12.9349277670741,9.88774073406126,12.6978028996186,10.2448721257436,7.43504268591373,15.5629624071941,22.8331932785768,21.5711741528873,31.6193609602912,36.6042837227698,32.9512716238884,28.5965679716641,37.3729683978297,29.6386525269036,26.1312025314568,28.026303666852,24.6407069600954,22.4223171273987,24.7760781922567,25.009004170067,-6.18965029332474,-6.01815482332653,-7.67249367212059,-6.21819784413656,-13.4258474897199,-10.5904484349574,-9.52706786295672,-12.4839359847515,-12.9639553039221,-11.3646319191073,-9.52448025607842,11.6372893087136,15.1280109379276,13.4958015653826,16.3989908394711,14.5918506349818,3.77780436726959,21.7368359171867,18.7613940738652,13.8226329775755,16.3709308679714,15.4448540430471,16.110412396399,21.5435565447648,-5.75134101246232,-6.62318377054514,10.743588383075,5.75799096498169,8.81974422773749,8.30783187242074,7.38361624409114,2.96963190458685,5.11060295583207,4.65059148671749,6.21997802835524,2.13247898046113,4.51689291267247,0.568871474008721,3.53215046034765,2.21510270368646,-1.0249912622883,0.145740131747109,-3.19074921629199,18.9970982568919,13.0030328762101,10.1518843574549,13.6196196837392,9.74011285353226,12.0296217846501,11.662421233169,-6.54549503937526,-0.28674006609371,5.52853396044706,1.05997945106721,-0.682658514854896,17.1220573122509,16.4021946623523,18.8885741270516,-4.32692009951213,-10.6350445275917,1.37445589303658,2.71325284934691,7.97644594776655,5.98606066617136,8.40467147351741,6.40954517245709,2.52227718868656,10.7094104911624,6.30799583117565,-6.20174254706658,-1.50803731442572,1.38842523584208,-1.66249524742888,0.493593748360468,-2.13631023833678,-3.76950831595719,-3.56682817431581,-5.41680059172802,3.34562610264199,-7.6074840989876,-7.89269575005332,-5.98216349557341,-4.05640408281225,-7.86992731663693,-5.39803781475465,-11.6852091581924,-10.4212344500989,-7.65537887747319,-9.76437384940157,-9.3454836445831,-15.3223788956627,-6.87618540514524,-12.427415544861,-12.8928531272225,-15.2957707053708,-15.9251250894171,-12.9457031523447,-12.2131914628253,-16.3317638354987,-14.1251202194749,-12.4234822991267,-9.67260696924096,5.10692290222899,4.47266472259582,1.52889004964089,1.14082273977287,-3.19490202657786,2.87999585690809,5.2613769466306,5.24160723007659,3.67033492844258,4.93123797617197,2.47448282194254,0.180547275171812,2.5558394876423,-1.73955271947682,0.63650976498599,2.99867039738764,-1.62981333691686,6.33328546033344,5.2733678398743,4.33901089501953,5.79886996597636,3.67913126174697,-21.8935750310591,-10.1051548862017,-7.88327882601155,1.54086015211338,-0.521620953530028,2.87060672875274,-1.37257044738061,-1.9857750455221,-2.54430738885586,-6.27522256425349,-4.36466701816198,-5.134171382988,-3.91664797362563,-3.58515544416511,-0.273641294572662,-1.8191653043242,0.710575527755204,2.26209638463278,-3.5411486805799,-4.76533066290388,6.34007154816977,7.34450022958299,8.35683735806585,7.73658221080258,6.20208326681336,-3.53350442795978,-0.412562227032866,-20.2197870249736,-18.309403072074,-18.9656197724177,-20.1855039925158,-19.5692966597004,-26.5116327631029,-17.8824905073223,-17.4561912553806,-25.1912036466554,-22.9414210006567,-17.6811132787515,-14.5838169378332,-23.4165406795471,-25.4175108044502,-12.7980908357195,-26.5817340781576,-23.8075064816906,-21.1869457746187,-16.9820153839392,4.28263663495836,4.55499428165826,4.2309378274036,4.07738675912352,6.28138239023064,-7.67894357119706,-5.03934807744808,-8.33265978634223,-6.29858077196981,-5.06934133284061,-7.56311777845427,-5.00195072226974,-2.81349478211725,-0.497972085075009,-2.08648685287972,-1.00821596856316,1.24022071443725,-3.31902881162072,-7.30193553069199,-6.0314476417491,-10.4613771482656,-8.95371894841069,-10.883900253998,-8.26796647941382,-11.310462323558,-2.66608656674077,-1.6184361277461,-2.39014480242804,-9.35841061348165,4.26544281918949,4.62284410713505,6.72789540855462,8.84588974955387,1.53905552132435,1.84997636200254,-0.330819674040463,1.07509962155709,-0.700256930937678,-2.09354370866871,-2.53847443118812,-3.94897210309217,-2.77161990664012,-0.623567499211544,-5.21454080047643,-15.7149417652941,-20.2418113685763,-25.305234924068,-18.0626087279939,-15.4793622781122,-13.8285273963458,-10.547786248609,-16.7764029179791,-16.466715928241,-12.8112729108772,-19.9101251820803,1.04064107710516,4.27068210660491,2.44115083619566,7.36458564101567,7.60456563631103,8.54827577658178,-8.24655964541667,-9.83900955192084,-12.3460920452468,-17.788154574258,-7.35412889299628,-9.88564197474154,-7.28210349727866,-9.15259364659712,-12.8061412155071,-11.6672593686731,-14.6782307374707,-11.8073614091725,-7.52001497730468,-9.42724222240331,-12.8742396017886,-9.93040526209234,-11.6643762179419,7.68416172920537,4.28043997860344,0.832046164654176,0.331471602999527,-24.415446352612,-15.4295707073045,-18.6613330296286,-15.3668105114654,-18.0285508467873,-21.4582654029637,-11.3196680405781,-12.5866010205144,-10.2811629899396,0.941687675852923,-0.829109129642533,-2.50953383795516,-0.695363284301799,-3.27749323665457,5.90872686395012,4.96214943714793,5.69579680693301,6.60106944115238,10.9960281926781,-6.44089030513481,-13.8124647995402,-5.08837477232023,-32.7099613744906,-9.30307295974366,-10.9129459472397,0,1.06097719640871,4.40398376076191,2.01364140731452,-7.13203768748823,-3.60881597201693,6.79857805403246,9.35396117789621,8.87931580359603,-13.5042432094846,-17.3891778142902,-14.2628497528811,-12.9731856619047,-17.2615095392052,-17.0795996424539,-17.9855349614733,-25.0732862548917,-20.8056405112097,-20.176823444299,-21.3713101096247,-16.6735888598356,-28.9671932345723,-11.0665323838279,-15.9798405011967,-8.4013665428447,-13.2658172569577,-14.651602460072,-13.6996858122157,-16.0421309998349,-13.2507792350675,-19.1890546655634,-10.220309091653,-17.2727538660047,-19.3094943331095,-12.0794895764836,-12.5013635897417,-10.1901235470082,-7.70449793202339,-8.6742227642763,-6.57337077111929,-5.03738572669104,2.93525722617981,0.476316269176179,-7.94132553629734,-5.61136728527141,-8.77187160766942,5.77178068868103,9.25164934960577,8.64254988455126,10.7694724632694,11.5135479115275,13.8226375055103,10.8606435962708,-26.8853187972969,-20.4042907681055,-31.9929063962535,-13.2310611768187,-16.9028044289956,-20.7235357802302,-28.930212321455,-33.9404028536939,-8.47406365981406,-11.957016172259,-10.6710968696621,-14.1780267982536,-15.0321623974861,-18.4835351464298,-16.6573199018447,-15.76600803718,-18.1211376619989,-4.5263694212104,-5.46806952594833,7.11595060584234,8.01477071378907,8.93009363915599,6.05547482399891,8.0027362805825,7.88782133559781,-27.693401330074,-27.7490238961271,-30.8670471778992,-18.2817858124422,-21.7651530150999,9.78886977155047,12.0404117805806,-36.19975433077,-34.1312517873219,-46.5691511583764,-37.508257888433,-36.2473084486019,-45.0971963268119,-32.0393168620966,-41.3433126569108,-40.4436345108524,-43.9097971465758,-31.9497807501855,-40.7613295887685,-53.0157179793539,-38.6663973920079,-36.1965320485086,-30.3574458210769,-41.3556297879374,-28.0470815734258,-20.863621905879,-26.2238751900099,-40.3330520069564,-53.581077481501,-40.6657167992581,-28.3855213266982,-31.5541830403545,-22.8257821739292,-37.7361225203678,-25.0943292966065,-21.4859665182499,-41.1328221946222,-40.207602916576,-47.9756388905882,-33.2565672304239,-22.3729576095862,-22.9492237795647,-27.6172985263847,-47.2435971304452,-46.7262058740289,-65.3684336199302,-41.3085483560179,-20.83611247288,-24.1534855507761,-19.1665298180718,-24.2056465967456,-27.7804974811072,-25.6800181762673,-27.3349318488539,-24.7683963531849,-34.9266619894975,-30.4129480011304,-34.5467731477739,-30.7969536524517,-33.2695523433112,-39.6919382688477,-40.9203316668305,-33.7439162217723,-35.8602067626489,-36.8341211883532,-39.9177417957526,-31.3181037118749,-28.2179837579376,-35.5234282188383,-38.0033804347137,-21.4147837319276,-24.1933143289248,-21.4031003204213,-19.5682787239794,-24.449688808558,-29.26275015985,-27.2412521049368,-33.5898424846836,-29.7875995869835,-31.0919103909559,-36.0877429702589,-34.7131429845923,-43.419619217921,-37.3578361996247,-32.6218688003547,-44.8151357960921,-37.1553703601664,-28.6671384584515,-40.6395802581035,-50.9170819655604,-46.4887252511133,-51.6671281563353,-55.3876364370405,-71.4106190026668,-35.3818289643099,-47.7792443292827,-31.8182166533291,-28.2287514874812,-28.6968479921939,-24.0851297466749,-27.0583415466473,-21.3028689699419,-23.8447267006532,-25.8347275991211,-53.0867743441727,-25.7833080623643,-32.7138862079623,-17.6205698116705,-17.0710194294277,-31.0083064450594,-26.2779668436396,-25.1257585198238,-48.4949569072102,-56.0486181828829,-50.7819498289818,-52.7667851174884,-66.6939063125128,-56.0830357134434,-58.335781739524,-22.4299832535147,-45.7575991982365,-22.9376565323904,-28.9793859493954,-32.7909379918894,-16.4599414189631,-23.4298029721258,-45.1987053386645,-69.267007002808,-48.1314890603775,-49.2294007221062,-21.8742421306288,-20.4720096167992,-35.0396914737342,-27.6406564089348,-30.7668155172918,-30.6649564114509,-35.112544533648,-39.127827866111,-29.1552959878314,-13.9994142885822,-16.3966828313852,-20.7404888979233,-42.969010534607,-58.759769884022,-45.0652571088086,-42.7319367461555,-51.109678204913,-58.5200090563311,-60.8873359048808,-37.9618400598428,-47.0002143540139,-62.6605717890091,-36.8467943750411,-71.4691484960107,-60.8534314932221,-57.4171228909886,-44.6833423347623,-51.7279843686001,-42.4891129623163,-50.247191077873,-49.9723179429252,-55.1469271258465,-41.3593940549758,-41.8020994890727,-33.2411128406106,-39.6652502529566,-15.7302166476352,-13.0433219686955,-18.882798384472,-23.8753222728421,-21.594150797541,-29.4510410561706,-26.1388491324981,-26.6243859700101,-29.1158075868201,-33.8813894423201,-27.3771416733245,-32.0451297023726,-42.1943904410393,-35.2347190204329,-38.0576133592253,-33.9221086252095,-37.5032323681452,-44.4534050779205,-29.923558738282,-32.12323566405,-47.5758884904763,-45.9047773949885,-48.4930770021305,-99.8368650405977,-51.5233036759555,-45.0303454959396,-37.6191168545579,-21.5004112869824,-20.7063006323838,-22.264333269792,-39.1134722222217,-46.1505277228626,-41.255581238812,-50.0598128542644,-67.6677693410743,-41.4722332245676,-53.0376556817203,-48.1252069072625,-53.9403508483752,-58.5718151718865,-65.7190264133922,-55.912480633692,-92.9732507664628,-51.1936467569665,-33.3716559108331,-37.226510752677,-19.4758597605052,-17.837434090416,-14.8717722065163,-27.8805928425918,-18.2840888013054,-67.3212810717187,-36.0873279103024,-33.0054958451567,-41.6140891147965,-44.3375125406962,-49.4317981234454,-59.8392895915633,-48.7628450010349,-75.970170347654,-46.7488001475969,-47.1610697588061,-20.3130815945269,-24.3477434011573,-29.0065262016139,-25.117132708674,-53.7453131738454,-52.0794381194979,-55.8734017551761,-54.8810036645779,-68.444008080888,-57.2875415986009,-68.7343083200108,-61.8767532958312,-42.4650757778453,-69.0393159596168,-60.1007051111864,-76.4755426519183,-39.4619191612433,-62.5995428430678,-53.7956059700032,-23.7169560629102,-25.660479411242,-30.5944165203451,-71.3219045242393,-60.7778962632507,-85.5710246760971,-21.7612238176768,-29.6268348017207,-29.8393317199685,-34.2805740557053,-36.4597053234026,-37.3366665296718,-30.5679167666392,-42.2653135257794,-27.267924580507,-25.7911849486073,-25.9721981369117,-32.2687539070089,-33.4658673003851,-34.7175794417656,-54.7605895466766,-56.6690647879394,-27.2616909466221,-23.509284175806,-23.7711582930331,-33.2077239261166,-25.0724476749323,-39.8720443565083,-49.8431709714182,-85.5476935731479,-37.3674972764996,-147.053431603671,98.192976259204,37.8335229753503,-204.386838891379,119.685172823978,-260.122288386728,248.344940227114,-310.003114739341,258.681963212275,-337.225613262991,331.642567609221,-362.303124813207,348.92242991912,-337.197632486103,-350.936949866018,-330.405600949333,-289.549939464732,248.342505006836,-241.733891557104,174.645014317535,198.529867419516,-182.305196971487,45.4217147498568,146.587313193558,-118.867005189226,-42.6581078655182,14.791007410845,5.69267352749308,18.7404404541155,11.2982956419963,19.1806929789515,10.7189859478982,4.64648163571372,13.4040289961614,11.5674009615034,13.9254219517023,9.74581416682376,6.98897085214568,1.48499796879873,3.69076458248851,1.46824771978185,4.6126369603929,8.77465820313321,5.00164346168082,11.1865298474779,0.896934539123153,-2.53603280923383,-0.789006861516913,4.02312904891245,6.95305708825082,45.7080438982331,13.285369480234,65.4020260435971,6.71744204779149,6.2764598596558,54.8726136516116,-7.24146488209807,56.9347842678982,63.9627154977879,69.5346230767239,12.8667511582916,77.1648303138416,56.9618317628579,73.8738305583527,83.4742191924358,62.3735140338343,53.4282700649999,56.5117117738197,88.4061160002209,53.220102990411,47.2115539183592,47.6655716448513,41.7212963083231,49.4707023443798,47.9071992199612,43.083640010871,38.1449541821178,40.6931251502417,39.4537825315875,35.3564551775836,34.2102717989449,44.3895895671309,35.5932942457491,39.4451376829938,31.281090534363,38.4202977673742,43.4554655747359,34.7550231305002,44.1562122612569,36.916531700581,48.2731127363891,40.8670002643226,33.8670123709402,55.2071777008903,53.2133279689352,45.8955111286043,47.6365074150257,46.161981943344,40.9210347453272,36.7559837965706,42.6331512563767,35.2916576524519,31.1495720064058,-0.648936169018009,25.1506257080746,71.279381274033,42.6192892363356,20.1861656329341,9.99263102971413,-26.8650600356532,-30.5071003840504,-36.3542484424379,-45.7110980845893,-28.5859486241985,36.8869257012177,11.1225366254065,29.437443399156,29.4007556236764,50.2921469668036,8.54081123772876,-12.0833768704123,-13.4165854263919,-12.0132087333986,-18.5308107889996,-16.4939302628496,-17.9799941020904,-22.2613712377218,-17.2682798257379,18.4935291969333,15.1545407934371,13.9883134300868,12.4831514583718,14.8461883872226,20.6846792054257,-10.9789134071864,-0.366504560900366,-24.1245671217881,2.19224875786073,-4.9935202419047,10.0597832699891,-7.5577762198628,-10.5858346229337,12.0750022554654,-3.5393429863966,-1.31079109845221,-8.21501318562327,-11.6786239022042,-10.8192653554858,-13.9315866376116,-5.81452204470807,-44.0044901799097,-16.6650140423452,-50.3806067013352,-53.1320832119459,-53.7413979177591,-80.2940429039752,-28.8739689437217,-22.8504535694927,-35.7077582400952,-19.657498064491,-25.7641064520465,-20.9748896687088,-19.9566941703276,-16.9960521105847,-19.2060947094033,-15.1112911647148,-15.8147522986895,-30.233398292129,-55.0163224827479,-40.9590202937176,-76.5155121502541,-74.5266814560871,-72.8015057666984,-53.9960133787979,-62.2107530331254,-24.8292285769215,-54.4497121035333,-71.7184145639905,-54.579262287756,-76.2618688564565,-68.905032163354,-55.9354337756396,-40.3421108210773,-54.3591914087476,-90.0112663825531,-53.3488686875793,-49.4593433229421,-41.7954645311887,12.8350495553504,4.32848567917871,-0.895643946173552,-5.09352361269225,-1.06743382956928,-11.0002333995603,-1.62956313670989,-2.40373443818779,-10.7962817905295,-5.67496335734391,-0.154480027086598,-23.0400666601785,-20.6130101616834,-16.3183890202093,-12.3400268227549,-9.65917864680134,-11.0979281604285,-5.20671257579615,3.78392100894675,-5.20233295703278,-4.76932554278942,-6.07155488736301,6.19165622863732,56.5090293729081,32.0511404014755,-9.10228749303434,-88.2678873406842,-0.832473295944715,-10.1797307098037,-39.3753159765782,-38.2885348528669,-37.5105236446482,-34.5908751843579,-36.2956476678921,-34.4451304409187,-25.3488131135551,-31.0807302900446,-33.3350088264286,-33.2993977487617,-24.2168266674439,-29.7364061249998,-28.3746745063726,-33.041148906459,-29.7631989140213,-28.6871055751779,-20.4142178847606,-34.2189566048882,-16.6181042765727,-27.0468899630491,-22.9142062826779,-25.2375747375276,-14.7402584016416,-22.7421113751588,-17.6912868221477,-25.7424724048245,-12.9341734062191,-19.6952000726219,-6.28326334301943,-24.3786404886168,-3.91739457783838,-17.758104078767,-8.57110303462445,-10.8557226566056,-1.33866241982711,-9.87400451072535,0.0085318014069559,-10.1432726566966,-3.89121106622019,3.32407970002107,-4.21909321953561,5.60043955674692,-4.44549746975026,4.99452815374504,3.91224906148591,8.11679026725007,6.94526957154754,14.1886619772358,4.66353817202326,13.8339571658672,5.4175262182301,14.2550646863878,20.1757786933164,8.92622387136589,17.3734078824936,12.2060487755572,18.2812376990424,29.2338082126163,20.5567053481169,22.2680263983783,16.9401672511154,24.1369952931962,32.9630766942819,27.8029971261041,26.9719355852741,21.1370732223596,30.5667599706044,31.6227486210514,33.5011048645244,31.4690902912634,21.6174121720723,32.6213449388866,38.0429160114006,29.751600655483,26.3666165045691,29.6617082645697,35.2692104057987,34.9731573612651,31.0151400487011,29.3878431451632,29.1695044663275,30.8968893470445,34.7800826121873,34.6402725275927,26.4729429877717,30.7637910714044,33.562298587805,33.9619386799125,30.0979857523281,21.772555252696,30.9476672926348,32.2039969657248,28.2470634523778,23.2014379420495,16.1799800920424,30.0968469780709,27.4296325727533,24.9664040724313,25.8947309863844,15.310775234182,25.5928426177431,23.9377868392549,16.2930765418823,27.116355218852,14.7579169899891,18.4472999714621,18.4694525926458,11.0070887787791,17.6012116997852,6.68807241308678,16.3777262899982,12.0904642571511,3.70529446720372,11.5702745783792,1.0860491945963,10.8374716862971,2.82544608956136,3.69110782169771,-0.397735490746436,3.17417398016376,-7.02718228377865,2.38231893544841,-12.0211718666882,-2.5464618231815,-18.2673516826423,3.79781386771447,-11.8448561095901,-6.21973001926708,-14.0423600210647,-5.3401596955733,-16.975781363544,-15.5400794221642,-21.5397809010185,-9.75778586988375,-18.8776294556776,-11.2743666367752,-21.5597249407434,-23.7402652979233,-25.4332718450525,-18.6829657601686,-26.3898912442746,-20.2237396049571,-38.5084344773314,-23.2124782012386,-30.8713628328926,-30.8204202979013,-33.3882038831653,-24.4589440542598,-41.4015729928911,-27.5485830138928,-31.8547790348259,-36.9411125223828,-34.903490033323,-28.7286659141288,-38.8067415512825,-39.9284490404169,-43.6093081634415,-101.523610175593,-5.28677736364784,-11.0451508092006,-138.61285941002,-70.7226508676448,-141.345559258997,52.4671535562296,7.91383425320684,32.5571150248516,-4.17704620001423,-62.2249251821062,-17.8337295933422,-203.954140668381,-138.024591890874,-212.732754448571,126.880772320195,19.9703051054469,28.5569525429887,97.5992523934246,-35.9092296994259,-26.4818516560889,-190.667860773556,-275.611901395426,209.440469568004,151.986210037242,167.681474042046,-324.450365551867,-33.3457367939104,-365.359950297196,-237.216862313288,-354.05006724691,248.329788520101,47.5126729773733,174.276562504235,259.417931905158,193.056492548572,144.793818595838,-46.1879391815991,-253.789792466696,-286.839843846884,304.204211354393,253.745150756639,346.018935607091,279.116175500303,-345.276291643763,-42.5446130982727,-410.644603217848,-311.020082173914,-315.057193276828,309.316285684159,60.6487340457672,282.565046944507,344.431697961826,313.368664813405,-54.0488608411744,-330.916489656984,-313.294517025421,49.3691938837838,356.076383146973,408.652273294643,326.668513225533,-365.30573914732,-28.8012473499888,-324.871411166456,-270.299045497701,368.649018985778,60.9540088591303,367.779706343412,-400.117867978089,-53.3297504182649,-360.072074729277,-316.943692545353,-212.376902985294,335.19770246301,280.299101926836,401.177063499944,320.703190861067,397.768943123262,-41.4320070812641,-301.455562095887,-214.919797406525,241.851205614193,247.41163232692,359.950710651196,282.283790993189,418.733241414578,-287.142809422509,-48.0091421282432,-265.062832029666,-260.220015852013,-230.244780615869,154.316455356489,35.6208444507795,262.781452787185,228.964100332957,389.125116393071,-42.1155087766484,-196.118668945787,-128.302641991386,103.532251166191,29.7049795761179,213.36822583441,157.969106625963,-185.82761520349,-29.2040959629347,-120.952795282183,-160.85216532554,-66.144356392047,34.3225752508876,27.523332515354,151.829051431485,79.6617955782107,-19.5737370712179,-102.337113023826,75.4882197372411,39.5847097885022,-43.3834484586215,-8.37745594852904,-16.61571398725,-5.71331465770548,-9.25532525230026,-22.0700549701801,12.8152998824111,-4.73257501593894,-24.1194388456674,8.17891152225113,-30.4546941016849,22.6695572718785,56.4797110442366,221.741151968986,12.3632639519525,-30.1566344704002,21.1159139465368,-53.1121220298884,31.9022726832602,86.9420165524838,348.950836571542,17.7965786524748,-30.6473599740905,30.1370877604809,-19.6120960732451,-38.8817753026893,83.868443418271,384.727179241773,48.2690370988042,-40.6907243949672,77.5828641040843,362.4651220715,17.712720413738,-27.0580596262333,18.6393197279815,76.0052378624191,313.171046479257,13.9287093907525,-24.0034281969349,12.447305306591,27.2636936168781,-31.2996966081863,10.1952870499808,20.4502897412315,-6.24030642561264,1.94782645289691,1.21030642841101,4.06850903312762,32.7274981574511,28.3016251107712,57.2222016394331,48.8735200637789,96.5138342969315,54.4897054704696,66.4462980074778,57.3056064175872,58.1511586231931,48.6216132972218,-0.494064801936749,-0.0156244335532177,31.6737878553261,42.052656527087,55.614199971723,61.582132467352,81.8594201884092,63.1642083067748,55.7408828735417,51.3738192906007,8.48127697259243,-9.16432956382453,30.0410307835392,49.6095189927098,79.9429786513322,73.553377680734,67.3640784516038,73.4362592612027,53.8375373515505,63.8900597018183,46.7911416406267,32.8580906066003,55.0640273543586,61.7754545886229,53.720605085208,61.3226846048408,61.9353116607244,53.3286383003552,33.448333697939,34.3136513242557,56.2023167933572,52.9804714568418,56.1778744749511,67.0722545380252,55.0316744093372,59.8015254110603,46.2325745805477,24.9817336517543,46.3227689155183,45.1198826513239,24.735005827538,26.7396200642323,31.1422502073913,49.2553175508885,60.8814664330537,45.0094334753392,46.3816450709353,56.8061603186581,42.2161590889491,-2.33530906207951,-10.0744393435046,11.445539419351,95.9463737621741,76.4139739029005,64.080523037709,56.6118307191484,60.4797346025227,62.7064419973819,67.8517877341938,62.8529911886624,49.660521559495,394.487539636825,7.31165910385206,306.865162401941,437.180747846476,76.3343871976352,68.3566810685439,55.8326203543865,49.8379359301169,46.4239902337189,69.4980495960242,44.242846139668,56.4396225510465,36.548169446406,32.9660373378598,42.1650827151562,39.7830736420309,50.7612071270174,47.9246028836671,48.0533813079139,41.7008367031666,48.525809642198,44.0016935967333,32.9124147137564,37.4164670542546,34.4552578820872,38.2618411869587,34.3542344479882,37.9887493852788,42.8046803832352,33.1405574669039,39.7733178702975,38.4311751786496,36.135099302764,35.4833031484694,30.282543857542,-2.45742461737031,-9.6445262540498,12.4143833116572,36.0063066606122,24.7517246649027,47.9561217804603,45.1898727681908,55.3631590124444,62.6748801786903,38.3071115879992,36.9355747135525,34.3831668028568,28.1181495806191,31.4042894301962,31.4612231553763,28.9749983370381,40.2451722663473,4.70810886813071,-4.62954166321209,-6.94838643490753,-7.95713708266018,-3.98971484544686,-13.8457362032684,-7.57697355230641,-4.44395574168881,1.40252343885698,-1.41497771545127,0.829125763110812,-1.15697392130852,1.35184154570009,-3.87197881108977,6.27591023671677,4.73946789047517,-0.919593519296654,20.3758089017852,41.4084152432102,30.0940085072608,28.3494217406217,51.3574496773834,43.9427845788116,34.5625632224103,37.8574778478034,35.9625683408617,35.9310953091195,39.7750876541984,42.7791453851327,25.4631265534058,43.6097864617013,36.0275005031303,52.3790106921856,38.5453643292887,35.8732161727368,44.7315866646833,27.3006242299582,64.581761107268,30.6550879827646,31.0252812036481,30.0777100759633,33.7631830658584,27.084665823363,23.9957975479284,26.0246656527775,21.7451811938146,28.4929219023337,24.1799981224812,23.1018562409581,23.094199995723,17.5294110866144,19.8252706714426,20.7875738346698,21.7559342379523,19.2918096970828,14.3391318350814,22.1356494103914,25.4939282512447,26.9554170103928,27.0467541989097,31.3700184814569,24.0601500484076,24.5753288241306,21.9151893755084,17.4663434218326,16.4708123164324,14.6979479487124,32.1142188219981,28.9422565014685,18.3978563839819,18.7300959277456,13.9950796137989,16.4948721617511,20.7674193290728,23.3704506192278,17.4037485765388,21.9656058790061,21.1708377265821,20.4176784734138,17.1036464802521,17.4957133494026,13.3007310472335,16.0029303974744,15.2707258900996,12.9341523858961,-0.351870724281688,3.4785828333816,2.06639281679065,5.95662586807802,3.7250680740148,4.04946693175847,6.07572895165275,8.27996828074352,12.5689240017707,8.90523905005718,11.515934669867,17.1633266139858,14.6688052792848,9.15343781352355,6.8789822727574,19.843828834815,10.0263437151127,13.7551384320985,19.0465267597583,21.9919576505966,16.6957869877221,-16.4448751872888,-16.4653629840054,-12.7730935549634,13.9805171627207,142.661093992274,12.3198453048199,40.5344352265856,38.9061719465667,37.7001825132716,48.2624705471997,66.2273983880888,32.3009339331625,42.4770338413747,57.3067919555336,31.8461835929584,25.836389461686,17.7459130150405,20.6946122339902,19.3347765003453,20.7085051171585,53.6911053891287,40.1106485613649,37.0381989568257,48.5955601798802,27.9292657223191,31.6882785640673,23.8318784880329,29.1820576794654,29.1432298174961,28.0854132288302,22.6199816096413,24.6968516375783,25.1526805460954,22.5134078710357,27.5030014426656,27.1954220896922,32.4373356711942,21.4065210246424,30.573685033188,24.4647352105521,33.917943418432,21.7990293119523,17.5790437648978,17.4154218050988,20.2450051822782,19.5128537217127,18.2060315395304,13.2871417870572,16.0441833705646,14.004838109925,20.076692028105,10.4825877184851,15.584505699869,17.8429071587404,42.8344210091744,47.3343570804995,20.3730687538004,14.3096346612676,18.2238188870074,16.7488343339768,19.6492288357387,23.4810236489063,14.1073467739977,9.69817162702462,9.91198689242381,11.483037453263,11.8112269125775,11.1963992790289,11.5560267134526,25.9330510428118,19.0089670775905,15.9976751184098,10.8794777693641,12.927928074705,14.3480686465573,9.79502906718612,12.1666558807117,12.115197489589,9.64752140658478,5.89103336807983,7.96054822466783,7.66922618525486,6.14741932721514,2.33975414140568,2.1555761130578,20.5440070105028,14.1014654109463,-16.4673988640051,-29.0225399060156,-17.9134619745657,-24.3969669394793,-13.7533922662092,-30.1438110547904,-11.4692887367836,33.3851890065797,24.9635652220878,28.199498932741,24.8455420705616,27.7432784269375,28.3833091650621,29.9450984135576,24.4858755755019,20.9473131286349,21.0866443465845,29.9680846365809,31.0527135715756,27.1200087756723,23.6154014584474,16.2936673711067,23.9470197496852,70.866817667132,51.2968896237815,49.7858454845186,40.2879370303165,25.574914703383,19.8779315880815,32.8301419411561,27.199839399116,32.2491566041148,38.6522539258914,16.8394414733818,16.0326010560147,11.3936134427364,13.4668638066639,9.97606583349012,-9.70490883830656,26.6473141252577,22.6718540566824,19.7565401588896,15.3270931458657,31.8450888607082,20.1954622454965,18.8159021698214,25.3062289353314,13.6019766566078,16.8292184815147,15.8880524687726,9.96302464445469,13.7393127961703,12.4404703513903,7.35039035081109,9.42727518244508,4.6423997951552,7.06380513598552,6.81611352216595,7.45060017155076,10.1128851176823,36.7974539955826,39.8811055257752,25.5948993377528,24.5279534136105,31.5324416850241,26.2719245958768,29.6866013742065,28.0581641153018,35.1661980698118,13.6062690547778,-9.32488833048691,16.8822818634152,18.1903868683681,17.2965619923216,18.2654799412446,35.3068164051084,31.0352679641446,21.2176717432582,23.8672057441529,32.1451288012306,31.7957163295186,43.1599058788481,23.8005544314345,21.2850728481864,21.4146152283884,-6.90526210578208,-15.6515856482972,13.7255265447504,25.9775178917134,22.5821264572069,26.5740950209539,28.7590225242876,24.5693352107252,28.0019914990053,20.1723708843768,-3.95909645987388,-2.00629023007589,-0.245081744617692,-1.19241533962311,-0.153977814341132,3.51767503212962,-3.70730732629704,1.45672214408465,0.527614780845129,0.469393919761942,-3.57747410465108,-1.81074540893861,-4.5906063410047,-14.4186628567134,10.7226990729517,16.0124294734322,13.7912304474679,18.295196291924,30.8213875261012,-2.44896487962747,-2.97668156082369,-9.34530605415256,-8.23036721782945,11.2740616590559,8.27754612765923,12.9486610482347,9.8966609086153,12.7109727122615,10.2549218486221,7.44110811073463,15.5773445014572,22.8529480256676,21.5915840930381,31.6495358718772,36.6324665057628,32.9852278401873,28.6228637264903,37.3990208823423,29.6701652844953,26.1546128892952,28.0504864248299,24.6674051069519,22.4460111618221,24.8034231206153,25.0326632988809,-6.19552282096811,-6.02351860463024,-7.67968813227951,-6.22436968021353,-13.4370949591512,-10.6004368463025,-9.53729157767528,-12.4952505000996,-12.9726137858251,-11.3731835573485,-9.53168117418332,11.6498153644438,15.1440935848728,13.5097161101863,16.4154985768385,14.6089449938122,3.78201115398241,21.7574209272341,18.7832665615485,13.8393377734414,16.3882218817657,15.4613180846919,16.12894454245,21.5695186869141,-5.75835103418994,-6.6270687061978,10.7553923507987,5.76549024367715,8.82983401719035,8.31809361435991,7.39199944810671,2.97294128652817,5.11646892559356,4.65586359182208,6.22624608530359,2.13463158825466,4.52215394976737,0.569838449382683,3.53560100611235,2.21778407067426,-1.02574427320892,0.146128807867917,-3.19507001856251,19.0168117772817,13.0173624774414,10.1641480687954,13.6359371904068,9.75550539460186,12.0452628637974,11.6781099813386,-6.55281694676149,-0.287561185867048,5.53556745507815,1.06112660121069,-0.683655253606058,17.1394682596465,16.4227033017937,18.9083927328461,-4.33128462024837,-10.6472461879084,1.37554923132781,2.71608284149679,7.98805432746589,5.99565229794684,8.4173875172413,6.41934628368209,2.52738962329702,10.7249613847264,6.31669795287082,-6.2076135495746,-1.5096569824722,1.39076077227558,-1.66492795503211,0.493883158012238,-2.13987026312117,-3.77409642224468,-3.57173413411679,-5.42275725306945,3.34908126039145,-7.61822617720075,-7.90214306408725,-5.9905045616142,-4.06302931688824,-7.87996296529622,-5.40649355664182,-11.6983829380837,-10.4322613419199,-7.66763046707578,-9.77704073930303,-9.35806634610227,-15.3384669975481,-6.88751482550294,-12.4415240309393,-12.908142880489,-15.3096187266401,-15.9426870864272,-12.9614177473543,-12.2248137030112,-16.3488480608917,-14.1425277654157,-12.4387855967685,-9.68158776532068,5.11184383504516,4.47655857290339,1.52982144968872,1.14243282569943,-3.19832720844996,2.88249127909374,5.26743569515882,5.24602023246716,3.67547954491985,4.93702780783517,2.47737838564356,0.18089213505769,2.55983270117283,-1.74171360948816,0.637617304111423,3.00351062287659,-1.63273247987729,6.34317895796626,5.28019487427789,4.34655795721433,5.81072535924224,3.68544471717541,-21.9148339803461,-10.119583303775,-7.89269558335551,1.54277223563108,-0.521635905330608,2.87439457418162,-1.37426390031816,-1.98938998157099,-2.5475798205958,-6.28374268964421,-4.37044066812767,-5.14093870869956,-3.92504211271389,-3.59209558684869,-0.274503416060695,-1.82258662795505,0.711242436573196,2.26666745996237,-3.54433496744032,-4.77041219801338,6.34616731939801,7.35420141042209,8.36668015665591,7.74261498235871,6.20949604526069,-3.53968393699182,-0.413425619547888,-20.2410724391967,-18.32879115662,-18.9870795666421,-20.2054107799749,-19.5922388358974,-26.533427950063,-17.8990238364364,-17.4734052251076,-25.2146415242608,-22.9654056750067,-17.6974319920167,-14.6032354270162,-23.4377158454724,-25.4376200403612,-12.8156288038759,-26.6029060608943,-23.8279665931192,-21.2064946577195,-16.9997127962422,4.2891295875303,4.5632663485167,4.23863446929819,4.0883191444593,6.29191465925426,-7.69323852639666,-5.04420904533564,-8.34220523280286,-6.30405347542345,-5.0730279787592,-7.56975035063015,-5.00674504834723,-2.81592166775804,-0.498603010120239,-2.08896419360124,-1.00909352931122,1.24167653795597,-3.3218467905622,-7.30706623604302,-6.03725005527379,-10.4696232341394,-8.95995796426022,-10.8922611115958,-8.27548284501991,-11.3198137472224,-2.66927198184106,-1.62006128315513,-2.39326252347452,-9.37014232252146,4.2692567246627,4.62649791134016,6.73366442370228,8.85378151827035,1.54202569787338,1.85552997120926,-0.33106350772077,1.07763678398938,-0.702793764767918,-2.09748677633726,-2.54375998436334,-3.95780439780753,-2.77963163427941,-0.63072574251572,-5.22538262501755,-15.7301284560726,-20.2632574129048,-25.3264621084731,-18.0786310778679,-15.4993465710801,-13.8499965797166,-10.5641078489603,-16.7956645875967,-16.486243639181,-12.8296691562713,-19.9309304606355,1.04349501418778,4.2803757795824,2.44793528311203,7.38031726902595,7.61698641811767,8.56325307344303,-8.26079888216436,-9.84673934291785,-12.3552970802951,-17.799083927199,-7.36217558695214,-9.89378934456058,-7.29040857912381,-9.16272981313252,-12.8178640041121,-11.6783577705532,-14.6915767015699,-11.8202405907655,-7.53001205252726,-9.43813755575939,-12.8896040087933,-9.94315739374763,-11.6792954064931,7.69085264796101,4.28855091333577,0.833667700817315,0.335137070216566,-24.4351147319268,-15.4451034040265,-18.6764304196956,-15.3816488990393,-18.0441240749636,-21.4747739468373,-11.3371574837367,-12.6047103998396,-10.2974481200801,0.943365107343968,-0.831285581988528,-2.51385298473009,-0.699587475970428,-3.28555456092091,5.92186304907933,4.97525097934713,5.7079116648166,6.61326439223848,11.0133623705287,-6.45548699285148,-13.824140969742,-5.09498494671259,-32.734175771793,-9.31825553756211,-10.9286141981699,0,1.07128737520907,4.41501808285193,2.02297349988072,-7.14561150895717,-3.62056917288462,6.8121029730863,9.37089426441014,8.89660340130971,-13.5134746678719,-17.4029685582265,-14.2785344462643,-12.984127917225,-17.2732528915287,-17.0848948738137,-17.9900282996144,-25.0871064349018,-20.8196685380318,-20.1934063127798,-21.3891360000254,-16.6865238893406,-28.9894495605548,-11.080231684602,-15.9975137279086,-8.41340737530759,-13.2826535835876,-14.6690506931055,-13.7190080411969,-16.0580430829444,-13.2681886820885,-19.2086328068624,-10.2357104265346,-17.2915133552288,-19.3296525656393,-12.0956417843561,-12.5179026457159,-10.2076637774015,-7.71825634815895,-8.68793252693577,-6.585360619428,-5.04770863348112,2.94510708336075,0.480014881775529,-7.95780301344397,-5.62431799884674,-8.78683779010341,5.78480708405409,9.26514096763815,8.65854901045581,10.7849484442002,11.5305893633631,13.8426644451789,10.8757709626187,-26.9115824154095,-20.4275517452843,-32.0291619985643,-13.2436263344513,-16.917514565876,-20.7385275593748,-28.9540455989419,-33.9690440234237,-8.48582714592939,-11.9767107514296,-10.6889742297116,-14.1990696091869,-15.0537526714318,-18.5036832733321,-16.6760550614691,-15.7862178169352,-18.1405362059537,-4.53826128896703,-5.48222699038108,7.13050517537039,8.02786321427525,8.94560834781848,6.06589597005869,8.01495333613824,7.8979926520947,-27.7650463365233,-27.7713412528248,-30.8894896396715,-18.302484938483,-21.7870573314216,9.80309142355628,12.0555190560326,-36.2276053811753,-34.1556076464674,-46.5989832044229,-37.5434289829802,-36.273875123398,-45.1251978282721,-32.0666410933016,-41.3734315884434,-40.4739395877867,-43.9409621524674,-31.9785127748041,-40.7800641977955,-53.0519075223953,-38.6946541605693,-36.2266760990307,-30.3820795476074,-41.3818228641106,-28.0652020371987,-20.886842376576,-26.2487480486203,-40.3754068444165,-53.6079368018966,-40.6905431569579,-28.4077988708109,-31.5781111044566,-22.8466762246179,-37.7646039373768,-25.1163638928815,-21.5030442736254,-41.1631484702206,-40.238161093738,-48.0279295211974,-33.2776829078838,-22.3964790387909,-22.9711056194519,-27.6428105938895,-47.2753480896641,-46.7654803588535,-65.4347025194462,-41.3260612473338,-20.8617145836426,-24.178370120753,-19.1899228460125,-24.2288461935172,-27.8047712900074,-25.7030311207262,-27.3579584164958,-24.7900299743049,-34.9547244093717,-30.4419332678547,-34.575227798993,-30.8262153633406,-33.2998815993716,-39.7192323070674,-40.9538755310508,-33.7700945460154,-35.8902711773542,-36.8625880959066,-39.9461190099021,-31.3497791339533,-28.2471536039506,-35.5558403084541,-38.0275814349653,-21.4363301072654,-24.2142540713996,-21.4250233721402,-19.5868339777128,-24.472475182951,-29.2882171751426,-27.2648970159904,-33.6188269014014,-29.8126974718214,-31.1202303933688,-36.1153989636734,-34.7383551599675,-43.451485873877,-37.3878663816453,-32.6486620652932,-44.8435281072467,-37.1855574884595,-28.6917091377068,-40.6761546906595,-50.9612707120907,-46.520988172621,-51.7064388814996,-55.4161787952094,-71.4745106186125,-35.4115361844146,-47.8597603201001,-31.8545161904217,-28.2474633584494,-28.7197681973935,-24.0999082215417,-27.0793126091572,-21.3161302166207,-23.8617695386618,-25.8558629724324,-53.1295434412669,-25.8069313126703,-32.742859462534,-17.6398321760511,-17.0882043562305,-31.0363625487307,-26.3022726225179,-25.1498706488719,-48.5354965306452,-56.0910462859136,-50.8252967078233,-52.8148064275243,-66.761108150861,-56.1843457717401,-58.4019467506785,-22.4452997369185,-45.7918486408157,-22.9599220572415,-29.0044370041858,-32.8187701533581,-16.475906659579,-23.4509535871443,-45.2358841043628,-69.3309944543331,-48.1753044657511,-49.2694515858615,-21.9001611240543,-20.4938045082715,-35.0675757176399,-27.6659114706816,-30.7958274918599,-30.6932036795606,-35.1418113160542,-39.1555739938178,-29.1861868712565,-14.0145957919756,-16.4117481508407,-20.7604072364754,-43.0020545957476,-58.8128400577501,-45.1005137861628,-42.7654046225418,-51.1505495530195,-58.5566381430889,-60.928181446086,-37.9932272135798,-47.0352988006161,-62.6885987764331,-36.877092906276,-71.5150852850482,-60.9022210015835,-57.4592818975354,-44.7229795737911,-51.7645281642847,-42.5252504691756,-50.2760780578881,-50.0033308468341,-55.1825028833799,-41.3988722550573,-41.8333072906843,-33.2736632825468,-39.6981379519932,-15.7457316539613,-13.0563562963186,-18.8983928262687,-23.8973538876314,-21.6158240979948,-29.4769146516518,-26.1604491961296,-26.6460270527101,-29.1423617765662,-33.9066559355505,-27.3982728673416,-32.0737117999555,-42.229914301441,-35.2623645973498,-38.0865168849415,-33.9465245124826,-37.5334591093409,-44.4778038241906,-29.9468885105131,-32.1479239781528,-47.6115299256203,-45.9309812470391,-48.5211672918116,-99.9868258675297,-51.6446973717276,-45.0629057900731,-37.6487436298962,-21.5174099511135,-20.7242687796538,-22.2822760197039,-39.1491523863748,-46.1800717124581,-41.2880530563676,-50.1024806798256,-67.7142336366294,-41.5056726734313,-53.0770656000927,-48.1679192578087,-53.9863294993091,-58.6027483223236,-65.7671444928671,-55.9608993065248,-93.0789783261012,-51.3589969153692,-33.4024644770801,-37.2534488298103,-19.4923366205683,-17.8543206571407,-14.8865146448845,-27.9031464991298,-18.3034132785888,-67.3800331781156,-36.1170204865236,-33.0268002688045,-41.6521900290611,-44.3645020111852,-49.455319171316,-59.8925190931793,-48.7905286874338,-76.0656053943047,-46.7894213114591,-47.2032326825623,-20.3294160695794,-24.3667329291294,-29.0329880888442,-25.1404107962386,-53.8111884637955,-52.1185635824904,-55.9152478396058,-54.9237801783699,-68.5203014986964,-57.3249479246797,-68.7742922562839,-61.9184212456623,-42.6393610628244,-69.1380355122086,-60.1382333775549,-76.5929017955699,-39.6511532858883,-62.7058405468538,-53.8349699462465,-23.7383600431658,-25.6785603408706,-30.621414235914,-71.4022032185862,-60.8391584153708,-85.6885781026125,-21.7801861408296,-29.6440669633648,-29.8597111942256,-34.3111691338079,-36.4789653232611,-37.3603220927289,-30.587574190639,-42.2841421666074,-27.2901500866622,-25.8153447506245,-25.998450346299,-32.2923066163981,-33.5037719441649,-34.7454991485223,-54.8135414475906,-56.7548799239174,-27.2752109832328,-23.5292135723282,-23.8307591294497,-33.26148443321,-25.2505413607898,-39.8816111932426,-49.948244079153,-85.6967210749072,-37.4520164697419,-147.341180286618,98.3955148451953,37.896582759916,-204.791697380391,119.888793832852,-260.630555192394,248.822658806361,-310.600146188415,259.153903378614,-337.872576075351,332.272001704512,-362.977850144712,349.590438278692,-337.809522047567,-351.607573556089,-331.039988101248,-290.086803235699,248.801562376126,-242.172844220856,174.961018699424,198.887362691557,-182.626350354501,45.5014767569681,146.866245348408,-119.069976931988,-42.7258642513126,14.8111412821861,5.69561411387597,18.7695802371589,11.3175500555442,19.190772008413,10.7265631467961,4.63996226931379,13.4132253769094,11.5734772516368,13.9355012998985,9.7543940077874,6.99354027792875,1.48429794406203,3.69477541367784,1.46928512463759,4.61514324609014,8.78235057103075,4.98564905295407,11.1955390876035,0.898664977497891,-2.53794290721236,-0.789994935821504,4.02683885420362,7.08199958478721,45.7596387011743,13.527810091759,65.4673215084226,7.04141949445296,6.5734317976045,54.931857000366,-7.24143870934013,57.1186226615621,64.0188296820849,69.5936073343928,13.1874249468312,77.2740911898441,57.0045691582037,73.9701831854389,83.560907089453,62.4186244953779,53.4663589248849,56.5685949248533,88.5047618366282,53.2682194127905,47.252660567783,47.703202668008,41.7507584945531,49.5024438724697,47.9476163278187,43.121814074753,38.1730263859047,40.7266422535342,39.4862160331334,35.3874184994412,34.2405107411679,44.4359225360472,35.6266482400516,39.4812138541421,31.3038897091122,38.4559864063483,43.4863369645033,34.7874928243098,44.1878822062661,36.9479676855412,48.3124576150665,40.8993564176328,33.8923557952135,55.2470540328842,53.2571076597675,45.9292371924825,47.6635611620506,46.2026024658601,40.9676516674364,36.782968968129,42.6786629567957,35.3161985438609,31.1698690063558,-0.650130918422137,25.1998543942137,71.3630355063944,42.6504622225642,20.2108869548065,10.0038809385542,-26.9117554144039,-30.5300053533405,-36.378675875193,-45.7581841543748,-28.6146586901992,36.9177891262177,11.1318776035758,29.4782971297019,29.4088916209503,50.3514476540003,8.54945578242458,-12.0950941085996,-13.4278816608058,-12.0269858428226,-18.5419798991084,-16.5075615369777,-17.9952041154277,-22.2812159430587,-17.2835876115332,18.5130922103298,15.1773581321907,14.0083603067739,12.4995618949881,14.8668531211348,20.7033320663727,-10.9940860306253,-0.367012596551317,-24.1464860365937,2.19432268685221,-5.00325331986828,10.0748883819831,-7.56621424135625,-10.5962622624874,12.0913693685179,-3.55081487962544,-1.32131386681265,-8.22111382395191,-11.6904976423011,-10.8456769337974,-13.9471410225076,-5.82400780217238,-44.0687298800076,-16.6836297572726,-50.463797305939,-53.1943392287569,-53.7609401824517,-80.4075887832651,-28.8971209688293,-22.8754618161044,-35.8135845879193,-19.7289770487854,-25.7818327050202,-20.9972170875218,-19.9731648984044,-17.0107477626111,-19.2213941258141,-15.1246841746679,-15.8285152261388,-30.2617449957291,-55.0531871927695,-40.9951781021707,-76.626680219863,-74.5966144378788,-72.8494416810888,-54.0341364930498,-62.2695188978721,-24.8487414449926,-54.4895325870384,-71.7760509526309,-54.6208144728161,-76.346628404452,-69.0126276235942,-56.0220244299992,-40.3730802873235,-54.4901759762673,-90.1210058280966,-53.4892092856305,-49.4966961103878,-41.8206963960171,12.8360744383956,4.33252538238614,-0.901614651188556,-5.10355971494303,-1.02900580230166,-11.0185906078469,-1.63372792818914,-2.4070814341312,-10.816184648954,-5.68003656850045,-0.170737690228008,-23.0719987635898,-20.6466744791078,-16.3285699875319,-12.3480306360837,-9.65960383349686,-11.0876574942159,-5.20290152428331,3.80245520812207,-5.2055940305982,-4.77384867350014,-6.07636370580237,6.19620519132548,56.555483347844,32.0788309638116,-9.10942694696496,-88.4066398677233,-0.831758795511771,-10.1889855678875,-39.4784366963373],"Archive1207_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.178270807032821,-4.0399219138034,0.567755346722819,-4.9534184803124,1.5155798219565,-4.7141587103522,-0.130344998570503,-4.00727368781628,-3.29791915224018,-6.28427125573757,-3.06877110304845,-6.06457228187961,-3.0637088406841,-10.9854598812124,-4.89862457813176,-9.4902038270056,-5.04897149120677,-8.72803369917161,-5.20923022065442,-9.7269512307096,-9.40175419548429,-10.0882643030895,-7.90093843403453,-10.4205440322602,-8.54959200791213,-15.0052482122994,-9.32219361048781,-12.0154885672231,-10.4162195729891,-10.7462315044622,-9.43937310707005,-12.7105168908392,-12.4480554074272,-12.1331836126796,-9.02064416708171,-9.99285893383018,-11.2590185265093,-11.8942158403657,-13.2698362301455,-12.3547167559036,-10.4160447362766,-11.7912892656076,-13.3123778120351,-13.5398667249337,-13.2891520528934,-13.2295652662379,-10.3849739479718,-11.4047055311272,-9.68427333482776,-10.8378209601469,-12.6752713240301,-10.8246647081737,-9.87221686957908,-7.50718292625921,-11.3114844482055,-10.3822275657321,-10.5360173765684,-10.5752113522248,-6.40808535712678,-9.86136766646701,-8.92694367306768,-7.8493395854822,-9.33901914850449,-5.15734437054772,-8.28324274516576,-7.42328145114886,-4.35762398869392,-7.81566479640058,-3.54272019172733,-5.65436542078523,-4.82636768880611,-2.37261619542774,-4.19875962134595,-0.434942637782344,-4.50292514588791,-2.23248038017846,0.613732053113206,-2.19636569861975,1.27057500468227,-2.09391207035619,0.291100976829656,3.1986144962836,0.772622171250257,3.58659747996812,0.173712568621632,3.01496642026294,6.08935106388598,2.6530811919576,5.17543555947215,2.65784831159888,5.69439086619399,8.20855401249252,3.20905197763074,6.07307202507674,5.31301526216606,7.60927488817296,10.6776640800824,7.19696941237535,8.31641509417082,6.9532304422875,10.0208084628912,11.2489539939283,11.5915402059455,11.3217616526493,7.33023885862953,11.8186309653975,12.8439498604609,11.0221154527538,10.8602841756647,10.0545837141105,13.2174226605188,12.7011962069201,10.4711789791663,10.7898882915154,11.121968343484,13.39923319331,13.3679055304793,12.3855864686895,11.8452619788043,13.3388927021803,11.6850481148644,8.99507869320523,14.4760808638551,16.1100598331415,7.97224399470766,9.29752727507089,11.195538408781,9.43101348212048,11.2483411985948,11.4170055032469,11.8253885542857,9.16079020833056,9.05408827818196,7.45037312275695,9.98678391488576,8.64988306694493,10.6083241257638,6.43858484490216,8.95207428170841,7.56144258953933,10.3673930340503,6.05171037958901,7.98056887255064,3.2408365247469,10.5425868795091,4.28179028738765,8.26783310450471,2.39061473934055,5.62148645160294,0.402688246328579,7.37748881089791,1.40195181904251,4.88814461059538,1.94042532137276,1.90083808797537,2.26100144229106,114.748415964016,115.77353470406,15.6283997558511,110.685484130152,112.133244684246,90.7002138498718,100.755091110663,7.58160390941087,121.755657593982,15.0308084170883,134.363327611155,14.8783593882707,108.933894759137,113.860443634084,85.9523695621479,110.014445662159,21.1960686718142,123.700967163916,121.227638081435,145.509838301944,17.0822951324086,99.4562215819449,74.2220992523509,96.205707633809,95.8175876548668,105.414788317891,112.752025032357,14.7188732140582,83.678608598215,82.7732982304803,62.4545836368032,75.5146424392421,15.868772771219,103.557660480533,92.447546621481,141.392677259653,149.634787820976,11.1028388039501,57.2653315559982,24.7626558842588,49.1250739857448,58.8067672324873,92.0746496727999,64.2571687993409,47.3220199362175,7.22467379296383,23.7008337727569,42.0206725718647,4.64663659426768,23.8866212660575,6.12971089907195,61.7035291380957,37.1646262394414,107.787268239563,4.69225917199172,18.2249963112867,-20.4226452285127,-2.66757454032419,11.0169907039322,21.3421460166169,8.73882696575241,-6.19554150129522,2.78020565461673,-6.18188274818353,-38.9512710486699,-34.3355270983813,-2.03159674820199,37.1093254699745,-37.3290977994159,-1.81513701948107,-64.4217953004206,-30.4694102501672,-49.3047388440174,-65.8817882012681,-39.6837435992136,-46.546892038089,-51.8979164746515,-16.3229259804321,-4.4562070086626,-55.4562005765964,-77.9224688245474,-84.3782856844568,-63.4962888999624,-80.9148269716061,-79.0937837809343,-27.7421336653588,-80.853272980533,-8.46305081987589,-112.110923101947,-74.5337891136106,-122.284584781362,-86.512146809867,-11.5364862775503,-71.5960384693131,-103.29478928311,-64.2575199808338,-12.8262448986287,-84.7331608899778,-112.008975149544,-107.238511739571,-19.6453581556762,-95.9601112632256,-112.050418431605,-120.868173847518,-12.734035999789,-134.246371627065,-105.815846947477,-112.203012573544,-109.003488146409,-117.824891319373,-114.555900011978,-119.290841122704,-16.1920060029777,-116.327259166558,-141.496547551614,-123.790627984333,-127.643999492771,-18.2820088851856,-132.878503934301,10.9375040553893,12.2733056425004,18.7139875612715,12.9147105564827,7.31317036261072,6.41614217456924,9.87637704975539,7.53091693632333,5.32941845197447,30.6477570721794,123.069305347405,3.41118203375517,3.24999189090986,8.82837620776089,7.15774862431844,2.25994147440862,17.104196506943,70.8906439650904,1.53334611308651,0.166385735556896,4.60996268120456,-4.03466272737365,-5.15244990830399,-6.90678109742671,-23.9250018726211,-1.57216014409331,-8.65452032945574,-13.9966060888594,-60.8428980524049,-2.92142964055471,-8.83100035434569,-9.51218170886754,-23.8188520045367,-91.2100619273313,-3.41150786057984,-10.9953692752574,-8.91424888492933,-6.52979822400359,-17.8186097705431,-7.47691224911155,-11.8024479702536,-10.2847841105098,-9.18060994641888,-13.3154931195329,-35.042140963087,22.0145471960741,17.8128823421482,14.052148308788,11.549659427103,-4.9849724894688,-1.19025096784434,-8.06273941377407,-6.30120884109562,-13.3731189735116,-10.7912438735096,-22.0939433222813,-18.0277268184464,22.1974922928659,19.7687908479003,14.3266599369767,9.92528122592647,-2.05507483805926,-7.75794112644582,-12.7259278072495,-17.5204092610206,-24.3248601830343,-16.1298593601014,18.5872018941535,11.3545674893917,-1.97140474113107,-0.214733513802645,-2.59694372317848,-7.00760938617764,-8.00845748880615,-12.7201645347809,-12.3598552775906,20.8284073665007,12.8063072623479,-2.51631772079246,-3.87621932600601,-4.70069783338004,-9.59432571984543,-13.630633459305,22.493980559763,18.2325898038107,13.9315981227828,10.2686815176257,-5.28947494061429,-9.23674620208869,-9.39525920505035,-15.1041206428853,-13.7877364569324,22.3331422412933,13.8342561300399,-9.96615756427692,18.8365067900555,21.4433845120341,25.6694767346694,14.2111983869444,17.2634391216027,12.5768251503602,-10.8198629155027,-11.8171712755664,-10.3963227118142,-21.4124883976933,-38.4896118768714,-20.7962017484475,-0.458513361487232,2.51553094967961,0.319957057438355,1.1957470370779,-0.300887794102424,0.678080420354387,3.36581326122523,2.44341550802222,3.19518029582448,-20.682843530528,-0.581405344657576,2.24160469662547,6.03068974388205,-7.63800342998036,-13.8926553214873,-3.41150495291867,-1.98119077347292,22.9768656990966,12.4749985197528,-5.22136077279921,-18.917091628338,-14.0354623995522,13.832511015657,-7.14563314847458,7.63285495440111,-10.1241405772503,-8.41863390597164,-7.19585494023027,-8.50845269381443,-5.71487259843041,-6.02423093151079,-6.48251499022631,-7.02123361615538,-4.67118183073054,-6.09641832123203,-8.32527605602484,-8.15804312069124,-12.2585530852366,-9.51621509164621,-13.434730464546,-10.771431324538,-9.24159439601223,-11.3391229959272,-10.7973504847082,-25.6799242102658,-21.1556745869676,-28.4136431850037,16.748429311332,13.7123792621553,6.82025968535021,9.42367820982306,-6.47801445196449,-6.43760953839999,-4.86276980075092,-3.25770296783793,-5.76226980598809,-5.16555314570142,-4.81186425476726,-3.53020222036193,-3.88677400583798,-15.0613721355531,-24.2906761075649,-22.1072587297766,-21.0799207075899,-21.9689353551443,-16.5889368543592,-27.0581412306576,-18.0607090423944,-18.3274194214461,-17.5440991580672,-17.2826188427162,-13.9249611521563,-15.74680306866,-16.1422424451785,-13.0369234691631,-17.1805396419891,-14.2420645467496,-26.5769074059888,-35.1967748815516,15.4458700688485,14.5438001712355,16.0817985484128,8.47005657358477,10.5020478390201,9.80975556652371,10.0355291110016,11.952356419957,8.76491827248802,11.8530831063886,7.35686645678936,-1.9368254437961,-14.5273751565031,-16.612217743015,-19.4576196287265,-16.1968163041044,-15.5531446854334,-21.3275831106304,-12.8761610702896,-26.3265716114988,-13.4583665808216,-12.0239636330805,-15.2376961763344,-11.5936955704125,-11.2130876624366,-9.07840520273172,-9.81462521423708,-11.1898590683088,-8.96209096458309,-11.5877708162597,-9.99251165946262,-12.9634411734457,-8.15964386119994,-9.57869115823251,-8.71312944074702,-6.91955026086339,-7.32703082195103,-9.34764505446257,-7.88621077937482,-8.35376475523285,-6.54108933923481,-7.56962405347177,-8.33512621486033,-6.67278201285171,-5.3790051338058,-5.94395937006526,-10.3510506654269,-8.9052593004771,-6.65420766615278,-7.22081979015255,-5.99296389971262,-6.25223734964071,-4.00802530846123,-7.92155917677775,-7.11876468101022,-4.70705585342125,-3.85384098502741,-4.81475774559424,-4.15034498315004,-2.66899695333137,-3.15133547391976,-2.32701994250597,-3.01639238563963,-3.01438050704166,-3.88516408773194,-2.91284486550235,-1.44579729842588,-21.8708507304211,-23.1600257899099,-19.4935653889197,-19.4450655227667,-17.8657736535817,-15.9116863333449,-22.6520552436478,-19.4751451148086,-17.0849106557457,-16.9622904390942,-18.7271067265003,-21.7316860288695,-19.0236118912771,-14.1989185199106,-15.2306151293795,-18.3733833413519,-15.3725177833504,-15.0253741665452,-20.6446701780632,-22.5154112076661,-16.8226498762119,-27.2747206836773,-17.3151179941776,-25.5778255751854,-18.6083845480477,-153.970138495296,-20.3372979034182,17.7085371220962,15.5135935774492,14.0808241325626,20.7338160238422,23.1879881629706,12.0831381774452,14.0683803094443,17.9280424634367,16.202086335684,16.8298000223192,14.9302975816595,15.9227585872769,17.0925044245913,13.54309967222,5.92489303946159,8.91840919096224,5.12137527213779,8.88146693893647,-2.82825263490928,-1.63824107035132,-2.64643163255659,-1.9643943233611,-0.368469559760247,-1.2193651129071,-0.655654400043346,-1.11348845662814,-0.266265617104898,-1.69351345010896,1.2621829587535,0.424908462384146,0.393119305142798,1.10315158132841,0.719202965317384,0.498153438105649,2.28804774617822,0.113713878022672,0.848709137639854,-0.739592986693445,0.891475719086584,2.02451397008279,0.0850380675255942,0.12138372882959,-0.210322959531892,-0.835632553153528,-0.417636349002618,-0.548928104632188,-1.49846813019808,-1.5131141386693,-23.1605418214766,-25.7443693273737,-11.8066159895539,-12.118365917944,-13.172297238047,-11.7316202053311,-13.1200736230236,-15.7652976985562,-10.5064771142671,-9.41459387273111,-10.767036651364,-9.46634991068442,-11.1074778975133,-12.4636190526167,-8.32604151672638,-4.43820297698243,-5.4070557961911,-5.71862562945026,-5.01861197262696,-5.43255343600833,-4.7071088924798,-6.39131174820115,-6.24912675133896,-7.21055236163327,-7.39439348570631,-6.44044968410881,-6.72026791391231,-5.20459823419694,-7.72577370722758,-13.8747754895376,-12.5114447157574,-26.499585092163,-16.44882261376,-19.4882661775081,-37.647833027034,-23.865644687496,-24.8290087961921,-21.6160267993363,-26.2149290162713,-19.0930819424019,10.7828693140414,9.36450256482421,10.0452439982047,11.2375591363548,8.5844267072714,11.3808251099642,12.9452802613317,10.5542547923424,10.7663648902353,9.37940418305106,9.36278137903219,8.14829378592015,6.65677992128414,18.7425571411022,19.9409415650844,14.7073089344909,11.2870713122576,6.7570078386178,4.97460485989924,6.18588339497938,-3.39857937559603,-2.0448197773174,-17.0777583659371,-16.43372989199,-19.6436338753028,-22.5963444479982,-15.2515049148828,-13.2489148372753,-14.1909382083302,-3.6913285061114,-3.45533174074195,-14.1025551456504,13.0695140723593,12.0013401815388,12.1702987165986,8.61331633509557,6.60136582479064,7.04303746099888,20.674940416503,24.280912825608,16.8622805123884,18.533940263394,15.3657066957849,13.6735490155457,13.3723674470318,14.784148042625,16.7238549552281,15.1206695979952,13.3274983440869,13.8712453565841,11.2385992287422,12.3639262012713,11.5048178861884,6.46286307098606,4.60045577236245,-14.0760364743093,-17.6559588398224,-18.2638126403124,-17.3905838673168,-21.2941031566132,-21.4319618939065,-23.5077376215178,-13.4101527459802,-16.0586430586279,12.9415800838648,9.16833304392507,10.5796334725836,8.02029895651737,7.49740677681453,7.48018460719337,8.2174797146639,7.36067373984415,38.3668793133219,5.38652582353708,5.49053010754505,-19.2439922326038,-17.0472706635456,-21.4398515630456,-15.7090042097823,-17.7381220751122,11.6006391717293,8.76433802000335,6.06248788818438,7.23043630465028,5.86055598861805,5.11227430852537,4.66048104056067,-15.1171652034838,-14.8957734334887,-14.1552102588099,-12.9773222024653,-10.3346314656355,-11.2565331666389,-9.87739635501067,-11.6750689023496,-10.3992540086686,-8.19736269434676,-9.25058489262146,-8.53278746105268,-8.98553427384114,-9.85875977204861,-18.3725300869262,9.27153152883293,11.2770923989014,10.0954609163018,4.01755986616122,3.81517078081616,-12.3071524884449,-10.5934235319899,-8.51073987755799,-11.4667139532428,10.3492004590119,10.3148165008321,8.82571111443382,7.4624154157574,7.49172470327014,7.92833539808865,8.30192367329542,9.62132966619565,3.75628694666877,5.04766349653303,4.45529603624222,4.1533577029027,3.01443437542226,2.7422566838156,2.41256660514063,1.80012145358149,2.23282966405319,3.58334898884139,1.33243635759111,2.01473572241448,4.05304008485145,2.9650135388715,-8.86207789837562,-11.1158847171796,-10.0433514343948,-12.5956145097516,-11.0590904783546,-10.9153762341976,-9.50165238084302,-8.72774905190831,-12.8213566441574,-12.0184811050898,-13.3356972822422,5.35248876769661,7.59713153274278,6.39420149230363,6.67461321685635,5.41000710065571,9.43545656034537,4.1036885541099,3.01097597220287,2.86215586760856,3.23461356378036,4.21992541963403,2.25955476037956,2.84840082201647,-6.52535993532541,-14.1461489403561,6.2755274451344,5.77298869766824,5.31656712075041,6.28853070911254,7.26728751450912,7.36025168752664,7.4378369748012,8.40149294856417,9.51116752809758,8.45939502134938,6.42097998527287,5.77290649378997,5.26605695285188,6.36152847604045,7.44153047992118,6.52544086653634,5.83638338683568,5.62356613314285,4.6002411620183,4.48873953223532,3.85431869743655,2.86706167628801,3.01287763654788,1.8540770114369,-7.76806871115241,10.6276696915136,4.70880920054401,7.63921339534044,8.49759374758095,6.16741419050256,4.93241338790899,4.83446946195899,-7.57800667691964,-6.62785842286645,9.72847965202703,10.9787435303951,4.3971240984787,2.92020903342117,3.51568257448783,3.76809978405403,3.46009124221064,3.71041791376914,5.0947050836778,7.92851338001714,-7.76916326724817,-6.53623028814704,-6.16769862425868,-6.90750179898047,-6.80255239105764,-6.09761243388511,-4.92806739175115,-5.54356384727518,-7.75615362960323,-4.09436261326089,-5.87184237521925,-4.76647122824629,-3.08509911756481,-5.09602577122708,-3.78990553883853,-4.56411019945698,-5.47034858571363,-2.52393404462411,-4.50451908248814,-3.40651233929269,-6.02286700293779,-3.38375741667863,-5.92495553244105,-5.08021500774354,-7.72849120127596,-3.97620096199885,-6.82066807424962,-7.91122786552425,-5.07468408448203,-4.2968474954367,-3.23110896108757,-7.58652704769951,10.4617782319771,12.1709782452941,12.1392078203783,4.32466033340716,7.86436832727502,-8.7527106999819,-8.97078037204214,-7.29248076897625,-6.22417578203673,-5.25870586737606,-5.3300674049248,-5.68200677521646,-3.55411375215846,-5.01787189700453,-4.44425072464335,-4.50373535398289,-4.05596510745397,-3.95980900581986,-4.53342896335176,-3.53030498390802,-2.45464323971188,-2.64703021980016,-4.75615400354799,-2.51336962805053,-6.67696975961372,5.24616992481247,4.84422038266309,4.60456446538571,5.81213265309518,3.93363677067092,4.85061407519994,4.00410084155618,4.24340026132775,5.13663376851577,2.37976350661276,3.24001039704269,2.59534415747409,3.05630632068336,3.19565262975408,2.57155279684591,9.76114825700751,7.1182797788394,-10.5585538870753,-8.74893339675934,-7.87988988271433,-9.96037081277378,-5.60804903619902,-3.98644066621641,-2.35017803488427,-6.42025453388529,-4.51515961328553,-2.73924701386927,-5.44100630351873,-3.77321047200684,-6.46983714903408,-5.85803335818159,-3.19649361750162,-3.48004472452087,-6.1172287967038,-7.19922238348276,-3.11432817292057,-4.03716570964655,-8.28695383517749,-2.26559709008961,-4.95787713930942,-7.24437788393824,-8.20553493164435,-1.95956854396817,4.2229862084113,3.45266148695753,2.63131647342527,1.23137976045941,2.04350258029393,-0.773671607410578,8.78767894955198,9.80842686442475,9.67736971695423,11.9293210935355,11.2494637877531,10.6146326167554,11.0840273733974,11.4540301591108,14.2067155952888,13.409713082979,14.2725854886423,12.6118172159279,15.3357936894876,12.9239919743299,13.2375796377009,13.9534748142327,15.1952699847503,12.10568710481,11.4995438670657,8.69863969504846,9.64346697580344,6.78771602344164,6.4111291777579,-11.3287393458342,-12.4910603038463,-13.0717079332421,-12.4873171463075,-2.81146903266811,-1.64533332746937,-3.34771531558239,-1.90087696369088,-1.33101627583001,-2.91849234001903,-2.02470567569615,-0.825904208265663,-1.27122124873056,-0.170193820343669,-1.86787073666498,-6.75635906646628,-7.29131373986166,-10.7988103957893,-8.34357211507238,-2.43623716025769,-1.59859215259713,-1.16425878775126,-0.515702762977386,-1.11763137289898,-0.621282792434302,-1.33909821291224,1.56436388144596,2.07398679118124,1.57345797564245,0.446001711730272,2.45999274423266,1.53604690516595,-1.75007187629292,10.7174855361539,10.0658014960418,14.3637105439849,7.14809040889407,8.22001190324466,5.99143157014741,7.6452589365726,7.95388935008884,7.38114238123916,6.36692356116487,6.25115113307865,4.93440593143051,5.53213338223302,4.46986260888182,4.50884164987296,5.28393922992072,-11.6564289897503,-1.73329222764413,-3.84802491368288,-0.313056394271951,-9.42672535151694,-8.62772887460527,-10.8084324453089,-9.86461674605116,-9.74331064032893,-9.7921423133446,-1.88482669203829,-1.22413820998354,-0.368059718629442,2.10301604492223,1.57997393748439,2.13885453072232,0.454599390154002,1.36869881128976,1.14384968005628,-0.00125968035714862,0.530075133510299,-0.372267064591761,0.815738333422707,-1.23507868947044,13.4830491407493,6.1275836529226,-10.7110307976945,-0.838458439543271,2.80275004799663,0,-0.0225725159786543,-0.812916434691917,0.483858718989148,0.796845087128528,0.344062240750237,-1.4825429689612,0.983052331797494,0.0863279974340628,14.3387209502132,19.2734874234976,15.8110594824563,19.758058297532,15.1078822103778,19.3965823575626,20.5072593145697,19.2438220956081,17.6041999874832,19.4256860816355,15.4569880621728,11.7903035614621,-10.4605728841897,3.65939338467774,3.20372067657853,3.25845158451323,3.23590575024496,4.09264961302285,1.51963426177345,5.33212821409877,2.41250484014027,4.37975261664225,1.23681912799,3.96945319622926,3.17498311194338,1.52061304079236,0.695443881895359,2.01092443292762,1.62024746169552,2.47607962031399,2.4886976168646,1.78976005417963,-1.04598352221318,0.2162326022673,0.0154957941271739,-0.312871844623794,0.770402801665531,-1.11336945770356,-2.43930203656317,-0.829140115236299,-1.42868598131878,-2.14922766929994,-2.19220711194613,-2.98078093498175,27.4011739633887,23.9062570400191,25.3363947643282,11.1919306076329,12.6843395635972,12.8217210422536,-9.01266515815438,-13.6207164506297,3.96751891026665,-0.0773326084214591,0.455215055911986,-0.00571821684750451,0.831152298691008,1.65341597998683,1.41706822819319,2.36925825303971,0.64751119788768,0.927043116631766,0.343953170361277,-2.0092015766952,-2.85159079845076,-1.76626866125987,-3.09742769662104,-3.59578582445278,-4.54119149373824,15.6512743669107,-7.58924976282675,-12.1397683530402,2.57671083717278,2.35690036004826,-4.24004035854225,-4.23923163225354,-9.02359816286712,-11.9697052211518,-13.307426003479,-11.7353603184247,-9.99205148543867,-15.6929567504839,-8.83402121455581,-9.89081406522538,-14.6968849149452,-13.6695276515005,-7.67153290780406,-16.3212056785217,-14.8631878387475,-7.10074342496939,-7.54243127580016,-5.98395174272828,-8.61629483171219,-14.4681343689746,1.29226533250564,4.21779852961277,-10.8068312320662,-12.9296026644456,-9.13352102944696,-12.9650261151441,-14.6236060838869,-12.3241153663688,-16.1479819679153,-12.1703934784837,-10.7141048418233,-20.7504539053905,-18.3581743612378,-20.1004324105943,-16.7341564403399,-0.0981048791615173,3.41403491165502,1.70905655815497,-12.3501864253783,-10.0423659595569,-32.1124722594419,-23.9229438390322,0.473696200095495,0.837888848258209,-0.362089957206556,1.74579816439943,-0.459392627825167,-0.148655657837244,0.794687098487532,-1.42935021568048,0.850714367517534,1.04905948938463,2.79581759435022,0.119259892076979,1.88555066355895,-0.799550723469404,1.90466503689347,-1.58218127688046,0.0579570685847242,1.61170950004887,0.670464211203753,-0.726903194118016,-1.50440015625115,-0.980885237495169,-2.35869588093056,3.95259756362897,5.72769210875085,4.84952253492644,5.7241081420432,4.74188506069462,6.1041019311609,5.25918718434394,5.03346637070471,4.41182913623628,5.59531378312022,7.26663245772323,6.28118965115709,7.01568478445836,5.92196053324668,3.95777591261269,5.08275114688344,4.66311452209252,3.35524456563997,5.44408171764936,6.83236458716183,5.84705264095481,4.95826398817887,-8.55090334159776,-13.8148577340223,-17.8652254491709,-26.0608467135112,-18.3123906238803,-15.5668429069496,-19.6592256186144,-15.4462319952291,-16.7950573819937,-16.4700360254601,-17.072020229706,-20.2316912854295,1.16112153790536,-2.3886527267643,-3.04476140264673,4.94515395636808,6.28662342740603,3.01887279547983,2.52475381042271,3.09843218165936,-8.69686791366846,-12.2111817093982,-9.73631143185686,-12.9118179916229,-10.5279668569594,-8.91920792275178,-13.6379085952194,-21.2933876776347,1.31593629531117,-2.4305752026592,-3.33554207433659,-2.05840371776037,7.53731457928497,7.86379694690484,-6.86414130677864,-9.99730724741616,3.14044849449402,-0.775092304303771,-3.1713157568513,-1.9888414895836,-4.89046203452515,-4.23816864507257,-4.12384128606523,-5.12395267589617,-5.64303243777771,-5.35175403873429,-2.58661731826479,7.0484027166184,9.38234050135882,6.86133679557469,-7.68486266589555,-8.42972019444646,2.28978081171125,3.22541214956842,2.31622360765692,3.52884505601744,3.10752487770088,2.72610094391167,4.49132986509294,2.96794230628329,3.64698830594155,0.795880870028698,1.56838047698716,0.0630442758953291,0.218340873726573,0.550935310800292,-0.726799920640629,-2.5984916695904,-2.0285619481533,-1.99464160206099,-2.22069026348564,-3.65998722589394,-6.48290130384016,-6.29415060093553,8.47671852968319,8.6617253596573,8.74846928856505,6.81509672665314,5.91168915881892,8.09237656293568,6.25268194945664,7.88473939350206,7.15724741251906,8.27085236375465,9.32394959000674,6.87460465339591,9.52258817700479,10.5713725879054,8.7631784347941,9.34693836029126,9.67326132264252,8.76805199022188,9.3761410827677,10.809895152221,12.809077880597,12.2005916866058,11.4560763309013,4.46900845789876,2.58608281027677,-5.53845507481474,-4.01129336789491,10.8322083100581,8.13261835098941,9.38842036420515,7.21935386878807,7.84005236510969,14.782978933959,10.1589080012328,2.62269954237424,-4.72838896062456,-4.84726228253267,-6.7381501325108,-5.73876258690653,-8.54500591739126,-6.03412659780192,-5.86059364477515,-9.84233128365174,-5.00291297963227,-3.78908184028229,-2.91890436710389,9.82235877143412,10.6421818127129,10.235899268729,12.0164756310497,7.33067154193436,11.8597176568788,12.4673988465624,12.7662324701993,13.1191804512043,14.7461960363894,16.2219403471115,17.2918004220407,11.8794821542303,15.7515112067804,-4.74267063923735,-3.4736878501942,11.8350013924628,12.6926788737034,11.0783862102525,10.3681508063295,8.03028555660279,9.32299193247219,6.73846698595436,11.0200384690201,11.4132195442708,6.87776893601142,7.40985518766691,6.40709226947754,10.6974751601179,6.03264846557621,4.93238821304178,25.5785550439129,12.1931573932927,16.3340160448388,14.8813046338662,11.1306708692735,14.5179169695336,14.6153724548747,5.040171865925,16.9066104086065,18.0540383767085,14.0900237285455,18.5476345765764,12.989061563922,14.0078016252671,16.9880575633476,17.1772577785557,16.6941169113249,17.8251178326886,14.0161122138237,15.7491749526665,18.0004125633338,18.3185430513979,17.8966991778183,22.8594746094915,28.2144517165099,27.60093168302,19.4515525766051,19.8596532882296,16.9112894635013,21.5471386039415,11.7026182862557,18.0457134781318,20.06174954838,132.85728690568,135.825331619746,125.264984787639,129.269792730521,126.940012228693,109.855759276324,124.041073267632,92.3680795884658,98.5441858695225,72.747682724486,88.8969199840533,47.2836260911115,43.6059334673256,21.5036853357601,35.4870980832238,-4.784727234365,-32.3628539521538,-58.7023088451774,-80.9386124559904,-101.202689371871,-101.420259215809,-118.499703693614,-93.4636505710006,-117.432074226381,-109.654825491978,-118.925095998704,-130.900011687381,-135.36024684769,27.2072635171651,20.9875566747352,28.7263499963136,28.8570035882945,25.8841487379521,20.7108365911018,28.3033211904644,20.8070760253704,22.0884631153377,19.3286108056437,17.6386416321652,18.6446554290431,19.1068429363219,19.1124126457353,20.6364230165323,16.687905362425,20.9127598366663,22.9711219106493,16.5632598741357,16.2979190930183,17.359583634537,15.9036840832934,14.9941836757561,2.86870214003523,21.030373590923,2.05698284151019,9.78666581999415,0.231343434739942,0.396506060939847,-18.0471211265354,-129.633280073763,-0.362408756656008,-1.94664742311552,3.17896940777677,0.496156607463911,4.47920131608308,5.36898305558324,5.61605726010904,9.48093427737013,4.68483242143908,4.18858291196898,3.08246916621255,11.3935195330681,-1.77359416321251,-0.135810911801739,-1.06755489269901,-1.16171638467422,-4.91467647662527,-3.17494994060098,-1.95600724757264,-2.01433780803,-2.85471977458549,-3.96202477421355,-0.87989842711027,-2.55338245860217,-3.78714316918905,-1.41987068611122,0.475707941724569,-0.654690533441187,-0.431047705052007,-0.589277552208921,0.188067379243766,0.810821731353998,1.40503539903955,1.06420708738764,1.50785456183419,1.73656947991385,0.142175719604491,2.09933935946465,2.05777094225961,3.65035389530958,4.58221792722191,3.63295630428108,3.20780496141244,2.63853006943076,-3.891706793513,-10.0069968205652,-19.4013800028092,-26.8817943682808,26.7048568658989,15.6154143652276,-1.16161899163067,-5.55244227846574,-16.1770063900905,-23.0991409061072,-21.9992237016736,-34.1885585968692,-25.0308870609265,-20.4897936791639,12.6799897799894,-28.0853469945343,-23.0503057667745,-38.1986792788565,8.9360769080348,-9.59360474280498,-14.177557255486,-15.4057972191015,-14.8591921399894,-14.9202142044995,-17.157181778633,-19.1069686702692,-19.7036167446262,1.62517109996049,1.22952060777129,1.96881292793805,1.01496499825566,0.540602838462479,6.43505042465709,-3.58009830433191,3.96881840988864,-5.22203915559462,13.3112374453319,-2.52031247820376,2.18079902345388,8.64457644661558,9.3356559445034,0.0534260621878182,-0.392519637927434,0.147082768674976,16.9198837205241,17.2388053784376,23.8314008005106,5.5427644533947,3.35932262710643,34.9978766640832,0.35760821715339,-16.9881246459732,-20.2717515786882,-18.6944303672685,-24.3106242080566,-6.39993205888524,-0.844105719717544,-13.0852241651231,-17.5114266891904,-14.3100235783518,-12.9448337206975,-14.4169703310663,-12.2543252701495,-12.0746362892719,-12.8119832780482,-11.057320211674,2.21046403671567,4.2320528579315,4.02601418782907,1.37001252111442,0.426548987020322,-3.3705253589361,-1.36538993242325,-1.40853528712897,8.98146891024872,-3.3099206874287,-3.41888081374491,-4.51011301827631,-6.09355174467876,-2.97891930693865,-1.78511501449572,11.8574553342936,3.78696868421631,11.575063074298,6.63491521241073,18.61528597655,16.1234539424989,32.4864866030121,20.3758998284551,25.0084885318164,20.7610153397071,28.2430835805132,35.4320058991639,24.6067707446721,21.104876826892,27.2625189655673,19.7396260830236,29.3426900547557,38.029363602193,27.1549670521634,19.9445764652747,21.841186549935,21.3121937247527,23.531845558402,21.4366955979393,22.8501059342723,15.5446708898079,14.0853739887256,17.6103273658746,15.0938459380671,6.14114864345707,-2.6740737307988,15.3955582020979,-0.404734248783403,18.1624324689852,18.9538715187257,-10.6314106349669,0.342052434656012,-6.79177975105807,0.994623309826274,-8.36817087164822,2.5901963771992,-7.95945398095899,-0.20039283802859,-6.74779652631696,-5.51330789720232,-10.567254807399,-5.13092113645906,-10.2247185492971,-5.12168327784959,-18.4667587740082,-8.20082764884004,-15.9847009204635,-8.45506860065827,-14.6984559079613,-8.73546842715865,-16.3220672284077,-15.7967854189027,-16.9534368804325,-13.2623000718537,-17.5320618779756,-14.3332218953194,-25.2145841817825,-15.6515182804274,-20.2175434508651,-17.4930833141595,-18.0806030170571,-15.845911559751,-21.315686399796,-20.923451419909,-20.3837799801886,-15.1572436432327,-16.8023242250381,-18.9106733745091,-20.0066559751533,-22.281293729034,-20.7673826146895,-17.5094575000367,-19.8071191964388,-22.3761422747667,-22.7082521890316,-22.2827598050104,-22.2383876604706,-17.4379428358813,-19.1844615516199,-16.2624185097959,-18.1963559630394,-21.3075081606246,-18.1555236372722,-16.6107437327259,-12.6090510405179,-19.0060680907582,-17.4519563899901,-17.681957408743,-17.8103978891124,-10.7513431626072,-16.5714986966793,-15.0031715406417,-13.1640721109784,-15.7335634338054,-8.64457797612232,-13.9233475282713,-12.4784318027054,-7.29591154026038,-13.1675522626108,-5.93599153222995,-9.50199948482788,-8.11049422340224,-3.96694616467488,-7.09764038892585,-0.701142431820765,-7.57467855556556,-3.75107421656995,1.04692406599871,-3.73190306865468,2.16991151267945,-3.53286226353814,0.488772999615732,5.38788435324178,1.25972058426899,6.05881708330821,0.280751993426792,5.06965074353217,10.2404064662107,4.42299198322119,8.72815588929418,4.45457091900944,9.57177894131645,13.7948715485894,5.36877271067837,10.239057020196,8.91225461868943,12.7911631664247,17.940218919378,12.0698431402764,14.0026238982591,11.6697514787539,16.8457037608078,18.8803120764099,19.4590340102899,19.0545125073991,12.2935577160774,19.8716922663968,21.5646956212963,18.5019283906941,18.2706316041193,16.884236025245,22.2155374112382,21.3175957481035,17.5815159379373,18.1432810748918,18.6794808478113,22.5225776042786,22.4228300815606,20.7792584382764,19.9235055280068,22.3952762482085,19.6433676236549,15.1114966535953,24.3529053063604,27.0593918655522,13.4360720073647,15.6290469937309,18.8252421471249,15.8424359002242,18.8933545200023,19.1329401772287,19.8827274178461,15.3787773927017,15.2349217960597,12.5045338831103,16.7889337255358,14.4941947064765,17.8376385077237,10.804116222869,15.0725576889295,12.6735795950119,17.4138152600057,10.1529126307494,13.4515922041323,5.41647828526572,17.7609187184306,7.16240422543238,13.8944265564559,4.00122716603686,9.49061444559284,0.641953932386938,12.4431315395471,2.32298505538267,8.21519917983039,3.25804319027685,3.1853464068094,3.76591326400234,193.31475417504,195.075793511397,26.9547348104254,186.60114879792,188.951530823464,152.902135199476,169.822633292195,13.4536087554199,205.233333523247,25.8372683734664,226.176109114923,25.6748768399456,183.438205907775,191.872243279585,144.826063066895,185.338611210611,36.2741909253761,208.470404354334,204.271793573836,244.989703782176,29.1935990638835,167.607658470816,125.027906101762,162.081013903522,161.473819846157,177.723458268697,189.79753819519,25.1951169427832,140.881135550571,139.490090208558,105.185136838797,127.190110253242,27.1054519897353,174.51846544366,155.748100255476,238.080615458972,251.953468552294,18.932076621969,96.5018238681894,41.7468017841381,82.773322847691,99.1079120583978,155.037775563138,108.367701520232,79.7141898327616,12.342361891335,39.9360760936136,70.7668278054493,7.83910174000473,40.21078371307,10.453823905599,103.960581547184,62.6472237061259,181.451503786631,7.99113314662048,30.6596683160137,-34.3857415421298,-4.46745758116432,18.5717176133702,35.9449302599458,14.7856760284002,-10.3946289763819,4.62806029641588,-10.4787085448853,-65.6223551063359,-57.8569048535569,-3.47902926386766,62.4252941625707,-62.8132257778763,-3.18605058191565,-108.426090418392,-51.4169210026954,-83.1554467927394,-110.981303759534,-66.8707078185285,-78.3919675392442,-87.3584937669131,-27.4568519356553,-7.71844133470501,-93.4909160010713,-131.294759849967,-142.118909236523,-106.99446045315,-136.272210286101,-133.185484126819,-46.7968707589704,-136.143916280427,-14.6250169123991,-188.727883050768,-125.672014426841,-205.936096842598,-145.785512428659,-19.8444908806918,-120.742180490697,-173.954338067055,-108.279432312395,-22.0729922424669,-142.836887032356,-188.684695122383,-180.684216502024,-33.6747288293315,-161.754915824648,-188.80787459258,-203.474817301496,-22.0246958030237,-226.025326555683,-178.40672513164,-189.028882668647,-183.675350392245,-198.342670728905,-193.031448688185,-201.059561523227,-27.8638200106418,-196.097766366241,-238.235285353549,-208.648281985755,-214.969519727389,-31.304839672979,-223.742901699223,18.8086268160393,21.0701863707997,31.8878457260201,22.1159029502376,12.7732666314296,11.1504067660239,17.0297838434691,13.0004388428925,9.32896169940219,51.4611073631768,207.244132980117,6.16580745567874,5.72014229750576,15.1395199543558,12.2136018108758,3.96814026783139,28.7325206990769,119.380931216385,2.82937781162319,0.396323005075624,7.87714771355796,-6.800047221087,-8.750107059529,-11.6016685006035,-40.3252619431773,-2.73988122648468,-14.6979323658372,-23.5170108790284,-102.448520630772,-5.10377325823615,-15.0906224694661,-16.2934206838386,-39.9699262496937,-153.583087624514,-6.05170337518206,-18.8095606187714,-15.3886114047256,-11.2996830764847,-30.2689620891897,-13.0075026328386,-20.2821718336092,-17.6878748485172,-15.9547526859039,-22.8197081235847,-58.8515106430007,37.3694627599412,30.3344148769832,23.8596486162325,19.6031882382085,-8.37372075867894,-2.14040588975261,-13.6764744865506,-10.860166517715,-22.6893800706466,-18.4932405353564,-37.5553968756904,-30.9405780104313,37.4254318272555,33.4168039484619,24.1361656176124,16.8030640827849,-3.44473045532288,-13.1199902588993,-21.5191243075997,-29.6083982729962,-41.1469455970709,-27.676372255405,31.4096539814425,19.1878775238313,-3.31873753115417,-0.404168764203566,-4.38757560094047,-11.8297196728796,-13.537402947271,-21.496100311417,-20.8842005458666,35.2093092434052,21.6476158134937,-4.2812440350622,-6.55394073193851,-7.92784337842342,-16.2023060186382,-23.0485556493754,37.9299611325119,30.8127576787598,23.4939916571278,17.3500422838886,-8.93864983103459,-15.5632885259295,-15.8697476767283,-25.4421173835072,-23.3100326731497,37.6917007120577,23.3763789286199,-16.8389945510848,31.7980640525508,36.2550669428764,43.3643819396241,24.0312735929468,29.1919119190779,21.2250002368177,-18.3021223915186,-19.9331853458206,-17.5501035587963,-36.1499797186771,-64.6671453280488,-35.1355962642423,-0.798800490852312,4.23396591666695,0.534113923227908,2.02052071351761,-0.518227616422862,1.14928854224195,5.68474243230009,4.12839388948507,5.39111684859987,-34.8263285472162,-0.971391729948669,3.78235674535485,10.140154696975,-12.9111661643418,-23.495869773275,-5.76327185064285,-3.34216470376092,38.6983940513047,21.0044940830804,-8.80575367065711,-31.8756307454738,-23.6789288837032,23.37588680748,-12.0708734112914,12.891264165069,-17.1113685617403,-14.2198092049531,-12.1468661093516,-14.3660025891966,-9.66256727326629,-10.1733671262743,-10.9481442905105,-11.8629075232067,-7.89260041274288,-10.2923749855159,-14.0648846519177,-13.7768760343218,-20.6898588276203,-16.0944552812079,-22.679625626414,-18.1861095165537,-15.6164978471954,-19.1532796762282,-18.223815878319,-43.3263594121483,-35.7329312401566,-47.7976144792452,28.2728709974717,23.1595100462516,11.5113613871578,15.9103145473373,-10.9421460185018,-10.8715247313528,-8.22138057029092,-5.50151794166344,-9.72929778551753,-8.72006799388839,-8.12805289319758,-5.96189276148062,-6.56227585312816,-25.4534994402926,-40.9570338423968,-37.4121882559326,-35.6078025958938,-37.1516634904156,-28.0126390389407,-45.6289281457785,-30.4953019511079,-30.9593781558552,-29.6490790136355,-29.2005113612138,-23.53642359163,-26.5900939546545,-27.2389268769316,-22.0368154396792,-29.0143832938907,-24.0321753424224,-44.867219655245,-59.1304450685204,26.1224454576407,24.5624187178558,27.1540557162995,14.3062944324543,17.7306455806087,16.5585552035037,16.9685879387746,20.2027068955281,14.7951060472838,20.0127714681586,12.4346121611237,-3.27074157511572,-24.5493656395368,-28.0679367436858,-32.7720526566926,-27.3949296139523,-26.2720644863254,-35.9601124595017,-21.7388006005083,-44.274864126305,-22.7341745080752,-20.3174280874586,-25.7307892724345,-19.6030581668035,-18.9401217424428,-15.3244937773488,-16.5867289371088,-18.8869248247041,-15.1337967976528,-19.5715904554224,-16.8797763992485,-21.9030449905,-13.7840863819331,-16.175104052945,-14.712886680144,-11.689226761186,-12.3781815175652,-15.78763367785,-13.3230158214996,-14.1034131964304,-11.051295749429,-12.789125296844,-14.066164565168,-11.2747603843403,-9.08255607813246,-10.0309193069443,-17.4849092448279,-15.0476939417321,-11.2309010907269,-12.1945208795201,-10.1266786977808,-10.5570934248354,-6.76604697565236,-13.3764927939516,-12.0274424009737,-7.95579442501389,-6.51228887853753,-8.13354427038105,-7.0005293597655,-4.50425677002949,-5.32769894562008,-3.92820174441354,-5.09891716524209,-5.08660047345902,-6.56114592191734,-4.91678451707468,-2.44336684201978,-36.9691882386209,-39.194749104604,-32.9370190884714,-32.8589468720601,-30.170973109916,-26.874748233878,-38.2765803549445,-32.8822359831176,-28.8519013145293,-28.6487276177629,-31.6289609040056,-36.7085117827526,-32.1326483973559,-23.9695279811799,-25.7292705555756,-31.0731944646334,-25.9763507421718,-25.3725751420597,-34.8319935979801,-38.0853511885707,-28.4177936064328,-46.3615043780355,-29.4967816642258,-43.1157506188011,-32.0434904247803,-259.280182439665,-34.4734743864775,29.9065783995211,26.2009525123305,23.7672157919092,34.9272610667965,39.0297374177501,20.4018754235042,23.7612817978548,30.1555731611494,27.3738698337633,28.4159924127692,25.2061308397843,26.8998703026966,28.8886680277332,22.8805183600341,10.0546507735595,15.0684763685806,8.64738711166361,14.9944492773739,-4.77600410665414,-2.76821763056214,-4.47338883989164,-3.31999434747579,-0.620530095789305,-2.0581120419901,-1.10713302185615,-1.88184715802584,-0.449888151967939,-2.85792698574893,2.13205875118278,0.716686786725972,0.671938680481226,1.86309813870324,1.21444069776162,0.841442669962948,3.86016965144764,0.193844856452232,1.43441908998556,-1.24844006010885,1.50045278455747,3.42371661772994,0.144510888254938,0.202395363441455,-0.354370512867777,-1.41027947640856,-0.706886770794375,-0.927538434747527,-2.53075392921766,-2.55849624549965,-39.0329477502774,-43.4933278911795,-19.9449248476696,-20.460961981468,-22.2729436093511,-19.8026007710609,-22.1554275124359,-26.6004829871262,-17.7475700926646,-15.8811772663366,-18.1945710935927,-15.9966698746659,-18.7557450870962,-21.0600149857053,-14.0585457753663,-7.49436249742076,-9.1378856132365,-9.65539650493421,-8.46856419005346,-9.18166684692238,-7.94577935711222,-10.797457371919,-10.5555598845029,-12.1762681057036,-12.4870559062721,-10.875688472408,-11.344647711546,-8.79616322742001,-13.0590718430894,-23.4610185841728,-21.1132342791683,-44.5741939273632,-27.7787843554799,-32.9562469959972,-63.2017543931211,-40.2813492420123,-41.8769501702224,-36.5103482799864,-44.1909381166421,-32.2487947340251,18.2041137786613,15.8152864576312,16.9779457846937,19.0010201153842,14.4924752680031,19.2162353243352,21.8537927091203,17.8183094556481,18.1768937011054,15.8449425347972,15.8204986170875,13.7687777210432,11.2345521120921,31.6622954071095,33.7283023729897,24.8442997680907,18.9893762158627,11.427335969301,8.40419385872506,10.4461200312534,-5.74196170705016,-3.4524192459008,-28.8608862375262,-27.7616318237672,-33.2109663037661,-38.3722852884443,-25.7510102539468,-22.3768768732693,-23.952880659577,-6.23888490626469,-5.83834354978911,-23.8343417755747,22.0679798152474,20.2718906473913,20.5455644971959,14.5460555216133,11.1534551792991,11.8998658236083,34.9075646386,40.9551658909818,28.4875510877543,31.2852347860933,25.9592719397852,23.0836060060574,22.5806206859571,24.9731542771605,28.2354254895266,25.5431775209397,22.5168919394231,23.4261465607572,18.985222024688,20.8890058831082,19.4316526579161,10.912309001307,7.77485595112555,-23.790011630882,-29.8526413801637,-30.8157757701478,-29.3915213108204,-35.9300706763629,-36.1999634577002,-39.636503903232,-22.6559799760605,-27.1350402115342,21.8548731199629,15.4939063697653,17.8657328999994,13.5357866293042,12.6638435530142,12.6389004096938,13.8841043187712,12.4378539649448,64.4116945536351,9.09383140490274,9.27656239491554,-32.5075283327543,-28.7674911377626,-36.2091662747265,-26.5275378294802,-29.9273316822989,19.5889922198456,14.7872877219884,10.2409720124915,12.2155391813814,9.90015475791069,8.63869767864331,7.86746985778377,-25.5470740996765,-25.1572337314212,-23.9056870134672,-21.9054048791129,-17.4420384639765,-19.0238355270249,-16.6816448853674,-19.7043267010723,-17.5640889568244,-13.8427056912072,-15.6262712773123,-14.4127606825768,-15.1850513557751,-16.6545919766077,-30.9862485617274,15.6456092026766,19.0591906868611,17.0482120962957,6.78778211208511,6.44214532072074,-20.7907263571301,-17.8881968783347,-14.3746263535417,-19.3765937433624,17.4858569871297,17.4095401547707,14.9053016565405,12.5892426380898,12.6540883373717,13.4083977025514,14.0152419611015,16.2485348682018,6.33981710379639,8.51869722835522,7.53784891753442,7.00453308172285,5.09859560545055,4.63141285658311,4.08160620624113,3.04502073635134,3.76630850561763,6.04931318722323,2.25102515466477,3.40457745391,6.84791990774224,5.01115973693207,-14.968241316001,-18.7688591901731,-16.9629116710319,-21.2839626489526,-18.6673938564755,-18.4296328660115,-16.0533246628981,-14.7479947674064,-21.6571845121992,-20.3000262440199,-22.4999487785313,9.04215033561038,12.8336390045549,10.7979279252903,11.2769493821693,9.13906345840162,15.9378892661902,6.92770617887391,5.08881193664326,4.83720567244344,5.46336266563641,7.1285171068628,3.81262158366435,4.80706681033355,-11.0209309402452,-23.8813959520162,10.6015387749611,9.75021393222396,8.97533778159605,10.6232871539596,12.2738040234539,12.4256337257365,12.565429144143,14.1950295133816,16.0607439134009,14.2862672749532,10.8464344846313,9.74756411697736,8.89663296070333,10.7439895889234,12.5566499307945,11.0274625354897,9.86559442420388,9.49894678907764,7.76998206505087,7.57700490328391,6.50368053938473,4.84360444675398,5.09159684161332,3.13175010705962,-13.1191557975798,17.9399562588921,7.94333483042757,12.9011591210793,14.3603422665045,10.4051651000691,8.33755335446008,8.16572670346948,-12.7905076240373,-11.1928212369157,16.4270085569498,18.541672170767,7.42767183627727,4.93361928873025,5.93897621315298,6.36584182559881,5.84695545769583,6.26450928364145,8.61110305484291,13.3984890404392,-13.1103445313431,-11.0289825620341,-10.4058216868181,-11.6840850811651,-11.4960050695946,-10.3064508718397,-8.31596194139846,-9.36293781504498,-13.095802682457,-6.91790339825007,-9.92026609019203,-8.04648664724975,-5.21305053670853,-8.60337139911466,-6.40306782541802,-7.69729561494562,-9.24095112928547,-4.2647381858522,-7.60691437284002,-5.75233974514915,-10.16571197104,-5.71042403673486,-10.0083439256586,-8.58723817338813,-13.0411247821397,-6.71396077006873,-11.5236170326133,-13.3602911380113,-8.56688510444405,-7.25985082324234,-5.45529263594156,-12.8034474162914,17.6691059611308,20.5468186016399,20.5177468448556,7.30825119359484,13.2884436726798,-14.781429271936,-15.1540518430538,-12.3026849656104,-10.5200962236736,-8.87650868335847,-9.00546008336133,-9.59495259270163,-6.00300573238816,-8.48116166583249,-7.50673902068758,-7.60590269999448,-6.84893045948903,-6.68254151934405,-7.65048288102752,-5.96832439017502,-4.14753841783905,-4.46900693452227,-8.02807522053857,-4.24328654505163,-11.2815922151963,8.85170239281273,8.19216255387141,7.77622770151349,9.80485559053647,6.64253212653511,8.19084537949134,6.76619075858288,7.16204260936513,8.67903329398296,4.02699058139909,5.47627245236018,4.377384278057,5.16229482235974,5.40160984356512,4.33930936399019,16.4789153780895,12.0115931152833,-17.8405078349177,-14.7786371435832,-13.3215360601491,-16.8082306942772,-9.47606858106862,-6.73474469411118,-3.96811056682,-10.8507900806429,-7.62832370219078,-4.63072087684492,-9.1885493585829,-6.37513030418946,-10.9178331348617,-9.89386097987956,-5.39774956194082,-5.87864099650821,-10.3325272956147,-12.1566001748753,-5.26187391809996,-6.812633772816,-13.9929557683417,-3.82745612863354,-8.37232390561798,-12.23176325038,-13.8578086747884,-3.30683366373072,7.12680796797273,5.8295944621757,4.44797804946854,2.08438435408782,3.44718184673288,-1.3064021255403,14.834569829643,16.5639426606953,16.3482142700796,20.1364529058017,18.9933677499074,17.93157992741,18.7204593050907,19.35744891419,24.0005920617306,22.6187783700126,24.1269499230761,21.3095761461119,25.868409923213,21.8474968878845,22.3572127182916,23.544931258561,25.6744734111027,20.4606311342807,19.4220430383298,14.6967401392805,16.2835992567801,11.4667277662309,10.8401145442409,-19.1325933601281,-21.1042060098374,-22.0902665224033,-21.0948202427346,-4.74612427212476,-2.77561968421074,-5.65407630088349,-3.21803459742308,-2.25433312236836,-4.92855305784783,-3.41591634753495,-1.39535489701495,-2.1499623515073,-0.283608727108419,-3.15207922199978,-11.4157262013377,-12.3114069888872,-18.2506295602807,-14.1033824808596,-4.11104599937311,-2.70396448287908,-1.97024517020163,-0.869250918854681,-1.88886067015608,-1.04968832553624,-2.26107053955577,2.648176580437,3.49517630739185,2.66477970534243,0.756037547472875,4.15733590746772,2.59614064056199,-2.95405927017675,18.1039732673055,16.9840124976429,24.2425788745402,12.0714504352137,13.8893371058368,10.1158344861736,12.8972387397382,13.4291063016296,12.4549115461122,10.7482975853035,10.5558203963863,8.33262792153733,9.34381211657936,7.55257365820944,7.61565242936752,8.92339441472621,-19.6706713528767,-2.92636517035211,-6.49551033144247,-0.525518306766392,-15.922896246044,-14.5730760929374,-18.253709490263,-16.6625774132835,-16.4475612083408,-16.5276685703248,-3.18273764616609,-2.0648999007564,-0.618460493739583,3.547304560784,2.67577851184608,3.60966769998832,0.761561481352054,2.31374729275493,1.93180314010906,-0.000933499759912597,0.894986878783695,-0.63023045850854,1.37380306585998,-2.08951846724275,22.7552873677846,10.3483547793159,-18.0850391605459,-1.41619181316751,4.73137091021425,0,-0.0362842724377448,-1.37511451853048,0.812649262561109,1.34297060400337,0.58023637841747,-2.5060785576217,1.65719481418733,0.148443053864805,24.2165922509471,32.5148150673061,26.7249769325119,33.3560937184815,25.5364090929769,32.7184234934387,34.682403559517,32.4874630050799,29.7329865661506,32.8316048468063,26.116621746747,19.8969031697397,-17.6618732403753,6.18147041014958,5.41258139498732,5.50112734566769,5.46595747893617,6.91077941024664,2.56959428829015,9.00277045697412,4.07125368395088,7.3983038783349,2.09029712751439,6.70120041164365,5.36482962541596,2.57116755708462,1.17139503134341,3.3964095261191,2.73675175621412,4.18392441991962,4.20496450488177,3.01989178794223,-1.76980734778055,0.361370667872934,0.0264058821801559,-0.527124543324174,1.30094525528569,-1.87660786114019,-4.11741289265395,-1.40236669035312,-2.41049309866165,-3.63350898447425,-3.70314361085726,-5.03083945153216,46.1073561166308,40.4591238307498,42.7386215711634,18.9308362066036,21.4242254376002,21.6633490874719,-15.2250412668263,-23.0216350624516,6.70063159141004,-0.129874827232151,0.766868800530169,-0.00860960056098563,1.40446406275437,2.79587828372635,2.39192076507132,4.00100200651302,1.09266617433218,1.56809865612393,0.581125575940664,-3.39941055318361,-4.80839578977501,-2.98023167981669,-5.23543765538372,-6.07422496599744,-7.66821530853032,26.8046400915996,-12.8203687665165,-20.4951627127711,4.34765331630112,3.97935235318005,-7.16183798204087,-7.15996936799814,-15.2326296463624,-20.2276270617859,-22.4469293256683,-19.8238330830759,-16.8779962888012,-26.5071339078049,-14.9236438299954,-16.7214163549983,-24.8080045501025,-23.094287008459,-12.9539332960559,-27.5978452124242,-25.1086392692909,-11.9798989294767,-12.7395738340353,-10.1041263814306,-14.5534361027035,-24.4340231762015,2.18145728130433,7.12177819126478,-18.265018112419,-21.8252495733594,-15.4146849071114,-21.8936031321768,-24.7000543939584,-20.8239309930763,-27.2517864047505,-20.5442303481226,-18.1069899691393,-35.0194098196775,-31.0169069683498,-33.937669513995,-28.2699772671851,-0.165406926149818,5.76487674690189,2.88829921764569,-20.8490590462568,-16.968771847057,-53.8679335515876,-40.2870579635438,0.801395885270131,1.4131103273013,-0.611156456185054,2.94957968053142,-0.777387000440465,-0.248877985328904,1.34168169273886,-2.41217070905549,1.43757249944667,1.77313556312876,4.72072327767653,0.201265468528537,3.18245101582634,-1.34931179526212,3.2182715580567,-2.66703477761936,0.0946396449051366,2.72304577217463,1.13287189440609,-1.22731771921113,-2.5441124819711,-1.65525815560622,-3.98283308563596,6.67304807316254,9.66344668150184,8.19239245933116,9.66221356384613,8.01264507108593,10.3101266700037,8.8807537755643,8.50498463802363,7.45566230821814,9.44630094224208,12.2700480172896,10.6028438321088,11.8380630695658,10.0006885507656,6.68308774634873,8.57832141386044,7.87277198170638,5.66354050336747,9.20867731408789,11.5516683020287,9.87075220127021,8.38558269821512,-14.439715141793,-23.2651306938533,-30.2254280888413,-43.7721588517586,-30.9211661925916,-26.3183561517267,-33.2082967081268,-26.0549872755236,-28.3869748896346,-27.8284380450105,-28.8567529583958,-34.1666114327693,1.96636138637703,-4.03572985455069,-5.13989433455234,8.35619084109556,10.6264803984076,5.10098875270829,4.26241729380152,5.23838071368419,-14.691454276565,-20.599451881115,-16.4695685736033,-21.9126489847808,-17.7193503423887,-15.1300602164895,-23.0071762185619,-35.9679928516506,2.22335819064224,-4.10601817371616,-5.63324665051126,-3.47848083578362,12.7313421944983,13.288541242221,-11.5865716271153,-16.8251597784112,5.31059918783473,-1.30902689458541,-5.35412291678553,-3.3605689540933,-8.25052974414458,-7.15550007070368,-6.96859233538471,-8.65655923058029,-9.53365500819073,-9.04264027637485,-4.36543272013715,11.9146992402491,15.8488346025109,11.5867032529022,-12.9847794081122,-14.2873134273648,3.86561366248908,5.44799464040198,3.912541970049,5.96201778283755,5.2427232534509,4.60427737843058,7.57963385465599,5.02858741479128,6.16184183846995,1.35639883248742,2.63972607833287,0.105618972620913,0.368682954873374,0.926032399077706,-1.23159975265372,-4.38834282131958,-3.41976793267612,-3.36962059866401,-3.75156644901752,-6.1861405931331,-10.9588022213782,-10.6363222203778,14.3077753106161,14.6424180425393,14.7761974036814,11.5072325691074,9.99493073404506,13.6787752228255,10.5697109038608,13.3088142024383,12.0857767162888,13.9613553103378,15.7609957040163,11.6179432886082,16.0974823200052,17.8634696729284,14.7990241785305,15.7781426569993,16.348486811139,14.7916439430928,15.8301212080269,18.2585706542833,21.6462904307763,20.5842803017104,19.3851205349978,7.4880040606972,4.34432050863106,-9.35476165704466,-6.77240976624012,18.292297947615,13.7291254255025,15.8612103264571,12.206200262432,13.2486321844977,24.9643020808667,17.1724789240919,4.44382314361741,-7.98374042853839,-8.17206488979359,-11.3891476176261,-9.69823221282503,-14.4077916743041,-10.195613694421,-9.93851931450249,-16.5285712906877,-8.62549158975275,-6.4046786405785,-4.93034165863816,16.5856302901102,17.9805485855331,17.2857156821892,20.2809673822591,12.3788591052517,19.9550490260206,21.0548778508005,21.5522562044789,22.1727845624476,25.0028127485353,27.3625884597736,29.1479944376278,20.0337508234372,26.5071300365202,-8.00747401247545,-5.868580655126,19.9811260951479,21.4329923857603,18.7056383126472,17.5151863982523,13.5683716038575,15.7624035351533,11.4147834305152,18.6242040722941,19.2346699424038,11.6119663452068,12.5001634726692,10.7952832872152,18.2164520713606,10.208413202723,8.35466295697622,42.9539680331296,20.9002819402546,27.7402599735452,25.1213559889664,18.8122263905188,24.5182232471762,24.6762150400959,8.45952222800328,28.4404967195116,30.3491502765378,23.8076120972159,31.2949956359224,21.9486498878795,23.6882371344898,28.761342103189,28.9888337824274,28.2002335758688,30.13425253635,23.6710119155071,26.6144372433695,30.3751817259756,31.0061677669098,30.2481733230272,38.4996651386723,47.4193107114865,46.3911119216845,32.9211549329404,33.579054205459,28.7951123719539,36.4590634053843,20.2216659520316,30.5222821868661,33.9472082613811,223.764529051235,228.782029760638,210.971976980721,217.750197983303,213.890380604346,185.025708623267,208.822105069858,155.553956520139,165.988268520921,122.525245971795,149.668512910396,79.6193131118929,73.4167117747928,36.2028131090071,59.7737791073698,-8.05717700316894,-54.5231685089192,-98.8828508299774,-136.332645720765,-170.457152640484,-170.825045815197,-199.593695724336,-157.438623181058,-197.802422918618,-184.936151315697,-200.20458254165,-220.466143875499,-227.994738951485,46.0363031790326,35.445958314715,48.3045701886073,48.5485553468714,43.7225713406365,34.9539180957429,47.7701575535909,35.177485433009,37.3547250839883,32.6288490466949,29.8045910022908,31.4945063149427,32.2166331098431,32.2858889012462,34.8934357266887,28.1841276734328,35.3640079158247,38.8862769818502,27.9741713454348,27.5401942990116,29.307958360011,26.8415012106759,25.3133618415905,5.50700140657724,35.6416103784873,3.9244693396327,16.5966956721222,0.210475429159208,0.331521342498412,-30.5961503724931,-218.418378360296,-0.538440681009236,-3.27477091125394,5.35486522674441,0.937734888422508,7.58574256416322,9.07922819079437,9.42825146630348,15.9655498574949,7.90893494443283,7.08125220908719,5.21125743369273,19.1405592500382,-2.99502975713,-0.229760262929664,-1.80385468340792,-1.96250969239144,-8.29092607084688,-5.3587062638194,-3.30972520251159,-3.39985948026306,-4.82362108970185,-6.69463322105722,-1.48131982792142,-4.31116971404137,-6.40263147744509,-2.40060517086553,0.803303384612799,-1.10931601793023,-0.728146421013187,-0.989229398187386,0.316104934839653,1.36522011718114,2.36755485293599,1.79700020719212,2.54678785997593,2.92736136984919,0.244230933013087,3.5426786919993,3.47877952194577,6.15951604445816,7.73308895456926,6.13349905725559,5.41967853591265,4.45878987160774,-6.57002817314537,-16.8926833995229,-32.7538643105787,-45.5863928821617,44.8809972769566,26.4115618609269,-1.96254031737933,-9.37850371453873,-27.6229476855898,-38.9874104859629,-37.1993888046896,-57.36474520038,-42.5156933084437,-34.638109281496,21.4183063196012,-47.1904837803677,-38.9762430032242,-64.0544791436544,15.1020787139001,-16.2073088717304,-23.9548400999189,-26.0397741199368,-25.0643242459584,-25.2163694797702,-28.9799384392312,-32.2759565330816,-33.2812472596928,2.74121477379615,2.07895886960061,3.32060430742633,1.71810378645409,0.912892029305758,10.8597907945181,-6.05257139399792,6.69665014978585,-8.82768476128835,22.4822005495921,-4.26091426155886,3.67953672420018,14.6036940101668,15.763114128798,0.0901463216974054,-0.662807576055894,0.246874784316155,28.5918986319278,29.1139506086491,40.2586505415864,9.35890969011979,5.66518348506113,58.6267427318572,0.602198348956634,-28.8092133740807,-34.0886824546303,-31.5060661900625,-40.7958542389551,-10.8193393189274,-1.42704378293475,-22.5098128762735,-29.9032273178039,-24.148952920497,-21.8922342530015,-24.3542516367688,-20.699413399521,-20.3855559357666,-21.6497649101109,-18.6779985858001,3.73377191163137,7.13469594060331,6.80140813389304,2.32957855599579,0.709193162469729,-5.67727157985287,-2.30058050054282,-2.38691249926139,15.1629772127367,-5.59977919788648,-5.76659133060564,-7.62549100649238,-10.2439008744105,-5.08204644740983,-3.06740268989128,20.0220336045454,6.54563171066333,19.4495120237659,11.2851984878139,31.3368883904872,27.2208068558412,54.7269383654236,34.6717190251869,42.5159666318454,35.1373858233654,47.5179593808187,59.5701664152135,41.5275072979982,35.6293720716915,46.1133985477099,33.3460943050081,49.3717510596326,63.8336538784401,45.7248015164746,33.7301952021918,36.9171876312078,35.9873573879764,39.8312970801138,36.2352220840612,38.6022553089011,26.2649560509136,23.7861952786366,29.731088945598,25.4948736090634,10.3682766118205,-4.51428987512706,26.0278951679191,-0.681433729692986,30.6899920574451,32.0080713210721,-18.2387963211676,0.494688627467297,-8.56755313236365,1.31024645728552,-10.6097957607314,3.32339045914926,-10.083406408293,-0.223604193366077,-8.52355035500297,-6.90653849683416,-13.3297125221579,-6.42921460334333,-12.9336527685825,-6.41326379450439,-23.2907004784503,-10.2882389467007,-20.2011287313299,-10.6196097821547,-18.5683883935861,-10.9817713715781,-20.5391235815294,-19.8959690454717,-21.3671303019168,-16.6925628748107,-22.1259292201849,-18.0140171239279,-31.7839972179167,-19.7017383626047,-25.5224247733621,-22.038266192508,-22.817191239093,-19.9467636501356,-26.8040568690885,-26.3671092179515,-25.6814381465755,-19.0993322796586,-21.1881807896137,-23.8198282670783,-25.230115095616,-28.061322468299,-26.1807728857859,-22.0730678372327,-24.9506283364233,-28.199227853855,-28.555224121913,-28.0127698016843,-28.0286361320026,-21.9561032015403,-24.2032445878655,-20.4808521473705,-22.9116129423654,-26.8526170736074,-22.8358162840525,-20.9627676491669,-15.8795786362758,-23.9507181922374,-21.9962529249488,-22.2578111170974,-22.5040375188307,-13.5242115980151,-20.8855766604103,-18.9064385465072,-16.5555043158967,-19.8887926859891,-10.8624192362692,-17.5532577389728,-15.7265458823804,-9.15760823688499,-16.6465921234837,-7.45519757778401,-11.9770316971626,-10.2191637090862,-4.96923585031461,-9.00487876164246,-0.841709497549834,-9.55914296104009,-4.7260216010108,1.34333355496439,-4.76017464011199,2.78287696727723,-4.4735542057223,0.614359785244366,6.81395411026934,1.53055328174352,7.68073920813809,0.335841333719357,6.39050363796138,12.9223320038053,5.52409118194307,11.0427113430298,5.59497828432127,12.0622666756468,17.390755152494,6.73326805538889,12.947934381374,11.2081304685111,16.1206369331781,22.6132089954123,15.1759168257411,17.6842921782854,14.6844437687784,21.2301312370727,23.76848725407,24.4983015661403,24.0573406346139,15.4601411978105,25.0477642650305,27.1569248480311,23.291087444078,23.0536843067214,21.2591522170456,27.992724481808,26.8328416097122,22.1404138661403,22.8803592163574,23.5246514893304,28.3845639982397,28.198844823913,26.139472677563,25.1249979186821,28.2005366505975,24.7663204399161,19.0390772297749,30.7229128937704,34.0895291639636,16.980590878599,19.7014806270446,23.7411012321292,19.9567779749938,23.7999633585412,24.0391041747595,25.0661464681559,19.3577059101172,19.2268750446758,15.7375485138891,21.1700539387131,18.2084745287006,22.4893333996158,13.5909465878498,19.0357829736287,15.9280239788825,21.9386436777324,12.769325409027,17.009658707325,6.78676578303756,22.4518090473058,8.98146841268376,17.5165358418308,5.01537767746464,12.0232011279419,0.761024511139737,15.7498604802061,2.88128455730161,10.3569636695451,4.10146270782986,4.00196419345624,4.70820188492882,244.296931332835,246.560214201978,34.8643186935442,235.943297411197,238.818207139085,193.33269933943,214.694752794659,17.9186804001282,259.466587014328,33.3092658185496,285.626790023274,33.2356549273276,231.72460688115,242.522897474297,183.052645853241,234.227647160273,46.5584989793405,263.519558368444,258.177565917167,309.448764315887,37.4375126012755,211.856027364469,157.998521395553,204.842255724803,204.124545230317,224.725164593997,239.712436149057,32.3678353633122,177.947381430861,176.310049430035,132.902607016176,160.709205041366,34.7224681370982,220.588551803019,196.82551336463,300.744620142818,318.274226879813,24.2148265771616,121.975417041209,52.790302035829,104.62587085547,125.291579044142,195.845157169747,137.064707648515,100.726627553152,15.8238733110289,50.4796774452157,89.3961657228775,9.92075700138131,50.7816726609895,13.3707742706994,131.378916040263,79.206314213079,229.171774665553,10.2122207051328,38.6946859490849,-43.4311833383005,-5.61512370875329,23.4819839633484,45.416071712556,18.7517255266159,-13.0893368763895,5.77740982170377,-13.3137006526771,-82.9292740136398,-73.1365476695842,-4.47105550843401,78.7948994638117,-79.3043653236288,-4.1932870745632,-136.912769640824,-65.0697730414824,-105.186846682014,-140.25395330917,-84.5289266027684,-99.0419604216351,-110.314906019426,-34.6512249381648,-10.0351566479637,-118.213805483047,-165.94078845766,-179.570315079521,-135.243781743465,-172.168386343446,-168.241965570789,-59.2068811443083,-171.975651314158,-18.9641638726097,-238.353649576744,-158.923722712955,-260.189565539875,-184.270389652694,-25.5999845944811,-152.71176719046,-219.764171217746,-136.870657933055,-28.4927048175382,-180.591288772219,-238.435411821745,-228.360283988924,-43.2886027345699,-204.5055730421,-238.635221073694,-256.969429196766,-28.5784280526535,-285.48498071594,-225.596055718366,-238.883470203117,-232.148940454911,-250.49248157683,-243.970710071814,-254.169502173124,-35.9689705885541,-247.934376375043,-300.913635786719,-263.780188236359,-271.578596850663,-40.2052736017899,-282.626633268962,24.2631357048704,27.1382546192573,40.7421178386999,28.3964415519562,16.7222012399534,14.5284727064089,22.0239036530214,16.8259438575038,12.252681465159,64.807450938243,261.812966421493,8.36523267121064,7.54775572372112,19.4731264734439,15.6235406918323,5.21933554160483,36.1992708205567,150.81826960452,3.91102511366353,0.647965317208241,10.0999359743348,-8.60161033906279,-11.1479981993304,-14.616763620268,-50.9841093639903,-3.58153280904152,-18.7197817159464,-29.6324354185148,-129.416345082135,-6.70147075018058,-19.3400313524976,-20.9479082262493,-50.3060287665668,-194.011092622558,-8.06654485812314,-24.1335729351509,-19.9253200952079,-14.6557517501575,-38.5536356468028,-16.9908453816506,-26.141521100578,-22.8347875309379,-20.812161406407,-29.3373760572975,-74.1203010119522,47.5567244016094,38.7515646985671,30.3716497231509,24.9631157413328,-10.5482048236974,-2.87287214681782,-17.3930059404279,-14.0315790757239,-28.8617526133294,-23.7665949556139,-47.8657823887983,-39.8202056676704,47.3292597545231,42.3518775661601,30.5010586491804,21.3271999338289,-4.33189659547,-16.6383460045646,-27.287244766925,-37.5165082739339,-52.1908908272575,-35.6331271988628,39.7977931273417,24.3123349902542,-4.18824794051891,-0.563162914221399,-5.55949652988868,-14.9731103368261,-17.1584021787409,-27.234313848762,-26.4594674518059,44.6303014159971,27.4395998646047,-5.45983567814023,-8.30884272842496,-10.0259948310849,-20.5157066102114,-29.2222579914717,47.9596333970639,39.0462379933664,29.7084413268826,21.9813126191343,-11.3264032540372,-19.6653506457135,-20.1011053259666,-32.1388512800173,-29.5485138348378,47.6991964078057,29.6163000981135,-21.3336147062691,40.2521963084557,45.9573329874543,54.9403627864915,30.4671087811688,37.0187996609366,26.8612575644935,-23.2112996681926,-25.2136959129168,-22.2156167018591,-45.7638777560168,-81.4804586796054,-44.5115408338684,-1.03995876723931,5.34488665553672,0.668629342998458,2.56004608063334,-0.668411152090865,1.45991764550295,7.19882715712075,5.23009083728917,6.82080290663181,-43.9960608008018,-1.23502690982822,4.79383621930229,12.78115047034,-16.375406193394,-29.8151116177083,-7.30034276244572,-4.2277868558469,48.8685775657502,26.516215944363,-11.1367354262145,-40.2741409286965,-29.9567580115879,29.6198312927423,-15.2896916751196,16.3257182269693,-21.6844335086145,-18.0096733279561,-15.3751817408826,-18.1883299178893,-12.2492605010271,-12.8825395010212,-13.8645759997804,-15.0288059697207,-9.99933872124073,-13.0296548253401,-17.8168466560037,-17.4455969683153,-26.1852776261503,-20.4084972602213,-28.709130617666,-23.0245505522057,-19.7865540093513,-24.2589019577477,-23.064711652383,-54.8150911117089,-45.2563616531284,-60.2987640667159,35.7887226547728,29.3300362276386,14.569370219055,20.1423771590172,-13.8584862848101,-13.7666286471566,-10.4218093188749,-6.96665245120247,-12.3180985245294,-11.0383406595351,-10.294875319728,-7.54980972573656,-8.30810190782413,-32.253811524408,-51.7871069405462,-47.4706225501354,-45.1005932117245,-47.1085077438864,-35.470171346102,-57.6938983474712,-38.6101535474525,-39.2140739955291,-37.5699367161755,-36.9933722618654,-29.8283420785403,-33.6683108283266,-34.4675133188649,-27.9296490475979,-36.7413908957384,-30.4093622003133,-56.7973625919543,-74.4786593993556,33.1249694940222,31.1051368548634,34.3798250304409,18.1194517594742,22.4467246783757,20.9589825411171,21.5120496091844,25.603811604341,18.7271516849924,25.3370800263057,15.75851323932,-4.14165091674818,-31.107502160831,-35.5582533157822,-41.3901910295739,-34.7425859616765,-33.2762644325055,-45.4686719204526,-27.5208115284536,-55.8385078069536,-28.7953008732235,-25.7421688113328,-32.580824161093,-24.8518209393168,-23.9885964097275,-19.3975254689607,-21.0182007330481,-23.9046621370887,-19.1627479647259,-24.7864975278629,-21.3806603029938,-27.7487798853415,-17.4601747053816,-20.4815751136211,-18.6293996433599,-14.8066023742461,-15.6800682238723,-19.9940314714589,-16.8771707129717,-17.8544326160444,-14.0002458994921,-16.2019565912719,-17.8003939837344,-14.2843878779905,-11.4997635363719,-12.6941953940862,-22.1466111072227,-19.0654404713303,-14.2144339531241,-15.4423233594685,-12.8305418579901,-13.3669117154219,-8.56505078588865,-16.9374116303149,-15.2369593127089,-10.0824761772924,-8.25136702778484,-10.3026583290013,-8.85513823038035,-5.70024444237031,-6.75355054317914,-4.97258149206773,-6.46274270218397,-6.4369077184141,-8.30866179428703,-6.22360357894516,-3.09628088479892,-46.8560581640281,-49.7319483090632,-41.7280721795144,-41.6345206668701,-38.2054551910104,-34.0360824442974,-48.4962526538717,-41.6310879558617,-36.5350322168231,-36.2820588332738,-40.055755074425,-46.4940659428878,-40.6967162058916,-30.3420828400875,-32.5910623290384,-39.4009286337492,-32.9124247564479,-32.1272829596237,-44.070813034512,-48.2977964317858,-35.995221503685,-59.1013754511225,-37.6799865949436,-54.5010192647653,-41.4618589324137,-327.569423046133,-43.8135039854168,37.8719769142669,33.1807667513982,30.0821537337659,44.1221286253462,49.2621836533375,25.8306620407031,30.0930293354243,38.0416186744916,34.6776672209097,35.9768193604082,31.9095249071145,34.0751809095472,36.6093295141557,28.9847771996028,12.791301595284,19.0900262321861,10.9486802927584,18.9820705046139,-6.04768150618614,-3.50737681153479,-5.66963737350479,-4.20720266225591,-0.783750399601394,-2.60493168419402,-1.40184724673979,-2.38470131872924,-0.569949647164044,-3.61669071866768,2.70049291566112,0.906508100675945,0.860418522156433,2.35940519057805,1.53773382623483,1.06574067587101,4.8837143668862,0.247591792042085,1.81786265901555,-1.58026663340582,1.89414016686207,4.34113768626606,0.184035892977764,0.253247536028974,-0.447818919640184,-1.78487440350152,-0.897018453959539,-1.17526102603943,-3.20507725350977,-3.24367624492046,-49.3296022938349,-55.1010814417258,-25.2639474640576,-25.9051051984079,-28.2374618774934,-25.0651306502081,-28.0539840532817,-33.6566969865627,-22.479487913305,-20.089756037978,-23.0534499443418,-20.2687335783668,-23.7481142108862,-26.6825014002429,-17.8001566654195,-9.48941866251529,-11.5793196395252,-12.2245386859413,-10.7163430793046,-11.6356562545962,-10.0581238829615,-13.6780457729409,-13.3695753520367,-15.4184775587092,-15.8123224380087,-13.7716781013423,-14.3610896713471,-11.1469533375632,-16.5509748387555,-29.7440825488083,-26.7173080510847,-56.2306068116278,-35.1771630673123,-41.7864038426741,-79.5739557432015,-50.9833079103143,-52.9598754264909,-46.2408045321539,-55.8554276675334,-40.8425968753876,23.045503380657,20.0280742937592,21.5156141149553,24.0887645502622,18.3464924334689,24.3298395650776,27.6645097039236,22.5571262987547,23.0117143812757,20.0708384732736,20.0441579416278,17.4453271378754,14.2179182706278,40.1073873151774,42.7731759002988,31.4689311461682,23.9588622689745,14.4895114129797,10.6460233027107,13.2273425151505,-7.27424250784246,-4.3709852227208,-36.5709628142653,-35.1652112464521,-42.0988641742123,-48.8610549461601,-32.6026093222513,-28.3388998159801,-30.317424401412,-7.90651885601995,-7.39701753145861,-30.2030395584218,27.9409594076196,25.675566647715,26.0084918455208,18.4201490061216,14.1299620737816,15.0757532513795,44.1952375631987,51.799297853905,36.086936812264,39.5998495724476,32.884446484724,29.2218327071146,28.5913040367457,31.6309503725565,35.7461551037438,32.3546740631937,28.5248770749621,29.6658770003357,24.0480162507431,26.4628230325893,24.609624462169,13.8159721301829,9.85198907818265,-30.1476118264941,-37.8448381706687,-38.9905884821488,-37.2454695980662,-45.462403746111,-45.8479966763038,-50.1160569325703,-28.700621776762,-34.3800828123441,27.6745234206441,19.632786040379,22.6227331175905,17.13042855376,16.039359812552,16.0124929863021,17.5895296964626,15.7589798812161,81.0992221459462,11.5123650537639,11.7520842362023,-41.1752167422762,-36.4029612716576,-45.8559415078189,-33.590428689225,-37.8637418465921,24.8037592494433,18.7093376705248,12.9716197346362,15.4745980253444,12.5402659285015,10.945468355174,9.95919021424292,-32.371664808801,-31.8589322872376,-30.2730026475096,-27.7270019483786,-22.0746782357856,-24.1068504759491,-21.1254511125803,-24.9374550188649,-22.2443555415251,-17.5287038054113,-19.7929193974255,-18.254450597892,-19.2415596136055,-21.0964893371523,-39.1900026078191,19.7986522418628,24.1523252810203,21.5875329786236,8.59921565799165,8.15677626692429,-26.3355193826619,-22.6502930155358,-18.2051148242623,-24.551004690652,22.1525530456158,22.0345311498929,18.8759340769194,15.9268213725865,16.0268945296628,17.0018403527093,17.7422543248377,20.5761813457198,8.02386994584278,10.7808047724627,9.56165699416832,8.85872889794356,6.4658061372385,5.86526806857927,5.17723318123699,3.86191259753825,4.76410721611607,7.6578826268721,2.85155373420553,4.31388757614934,8.67550086159496,6.35040747778264,-18.9571611175233,-23.763457439596,-21.4828020352455,-26.967248139385,-23.6283291913763,-23.3332818449722,-20.3372040073875,-18.6860273379945,-27.4303222643043,-25.7104207321951,-28.4673483147867,11.4539106740333,16.2561029760272,13.6732818639002,14.2862621120351,11.5764328059564,20.1867621579117,8.76997239101417,6.44883385383026,6.12990895559732,6.91943256030132,9.02944442963996,4.82429007844587,6.08359965010678,-13.9576517602174,-30.2317589293554,13.4293546064019,12.348327789438,11.3623710451859,13.4568693352594,15.5440197790453,15.7302533323229,15.9175244909227,17.9836514522405,20.3365284529486,18.0913853710635,13.738741058696,12.3423019816394,11.2703238518464,13.6066623943723,15.888841688089,13.9732891966701,12.5042498051302,12.0312756399232,9.84083961839362,9.5912138129829,8.22977240038898,6.13608294801903,6.45202470303913,3.96667584386718,-16.6140396676533,22.7085220592209,10.0490098578308,16.3375777392392,18.1964357597869,13.1645227665484,10.5674344261021,10.342217495755,-16.1890197911915,-14.1738114221108,20.7994007044513,23.4808354685826,9.40864256151696,6.25055044229089,7.52326805907922,8.06458088103526,7.40905930576348,7.93158175232382,10.9132151236646,16.9773985967076,-16.590590359739,-13.9557241293312,-13.1658253023267,-14.8179904827233,-14.5673785697696,-13.0621963841882,-10.5237465509,-11.8579982843229,-16.5807107026812,-8.76480353885803,-12.5672618530747,-10.1866070005946,-6.60567892524132,-10.8918875910402,-8.11220697972829,-9.7353779504236,-11.705421070069,-5.40386626115896,-9.63299023186092,-7.28411396029003,-12.8668023938816,-7.22739477594862,-12.6768654522368,-10.8835721864753,-16.5020445890125,-8.50108743680809,-14.5988186953403,-16.9184195628313,-10.8449702429865,-9.19760720572657,-6.90687637825266,-16.2035537481056,22.3766294017849,26.0103057870562,26.0024054415415,9.26112655063451,16.836120912257,-18.718148389639,-19.1952667100665,-15.5646585191971,-13.3326271083191,-11.2358707011037,-11.4091775924436,-12.1501663889156,-7.60347410749934,-10.7486475631782,-9.50810627297212,-9.63244799142086,-8.6727938563887,-8.45772944419516,-9.68227228724545,-7.56603228199088,-5.25571518059677,-5.65871849742616,-10.1615349248754,-5.37223769169026,-14.2931282528029,11.2007569396319,10.3877479465087,9.84810910223982,12.4044053448992,8.41184552031615,10.3717476692064,8.57328952135031,9.06536683154866,10.9959812440931,5.10979112554174,6.94112419016729,5.53904048399962,6.53921713939332,6.84621281960809,5.49247313704878,20.8612981494328,15.1996597910824,-22.6030172785348,-18.7192804060043,-16.8862189806444,-21.269937751545,-12.0062855067877,-8.53212843150552,-5.02532858877631,-13.7505501829391,-9.66378416670173,-5.86960388772649,-11.6356259974532,-8.07661252362282,-13.8157689370145,-12.5299378135163,-6.83488097566422,-7.44616831746357,-13.0866403726142,-15.3926726439795,-6.66632003037393,-8.62086820024353,-17.7172816486173,-4.84855176733647,-10.601491162601,-15.4865993186267,-17.5490168805385,-4.18476559616138,9.02016969642023,7.38186566516934,5.63822844540297,2.64699653346524,4.36143811005129,-1.65446033360077,18.7787491612494,20.9750730821964,20.7083278105571,25.4879140862692,24.0464217779294,22.7140532972792,23.708429239627,24.5293082859777,30.4023438370028,28.6107619466737,30.580120085163,26.9977365133193,32.7216702278914,27.691549126649,28.3135352111948,29.7926724004319,32.5272990427719,25.9294861279387,24.5966555030023,18.6189872700317,20.6181425352927,14.5253328648975,13.7427754012744,-24.229066080071,-26.7358058843839,-27.9909482460723,-26.7204660402949,-6.01018802913926,-3.51418137621461,-7.16154124339224,-4.08431657888051,-2.86642734900686,-6.24236314620107,-4.32258343369169,-1.76782903393888,-2.72910149398352,-0.358692274236371,-3.98969797622368,-14.4628240508504,-15.5880468791626,-23.1274158273114,-17.8746363302077,-5.20247228230328,-3.42928558369758,-2.49986986051649,-1.09884702570809,-2.39368049071493,-1.32983166774723,-2.86280614603904,3.36800288445091,4.41924830110708,3.3840604588799,0.960882058925624,5.26836239064243,3.29039476719637,-3.73962113372807,22.9308047055476,21.4896307166193,30.6814397131286,15.2864416645837,17.5972112569828,12.8075140417377,16.3161309815896,17.0017057606118,15.7602497018661,13.606182106227,13.3661725984051,10.5516920260417,11.8340246076744,9.56892677598446,9.64564211610813,11.3002291571372,-24.8924474813408,-3.704624466139,-8.22275995060599,-0.667506560330458,-20.1672429524732,-18.4574804715787,-23.115750694619,-21.1043450837884,-20.8200677909104,-20.918564825237,-4.03038073069048,-2.61227354696329,-0.779647010606839,4.48737417268991,3.39886864459255,4.56914230340406,0.962671488521403,2.93496388028175,2.44691568584776,4.1103430452e-05,1.13309882624376,-0.799753731142954,1.73550275244512,-2.65118037831722,28.7982789494868,13.1051790445039,-22.8972195167474,-1.79380113684763,5.98970210493473,0,-0.0441119751785792,-1.74550497835525,1.02645263449008,1.69796869823043,0.734854456571776,-3.17686798511738,2.09552668037866,0.191046437887941,30.6677188976826,41.1344316700793,33.8702036637995,42.2260869646409,32.363659675643,41.3874025153585,43.9765289654899,41.1259046084692,37.6553950634572,41.6064946317786,33.0872810549703,25.1790273326675,-22.3611093877187,7.82978254880101,6.85675616769905,6.96475099936032,6.92332183481092,8.7505614112855,3.25788703653985,11.3981584402907,5.15238499906529,9.37092466218448,2.64903811986017,8.48336528714963,6.79715328440152,3.25985885471125,1.47984501888969,4.3018581523412,3.46678779276923,5.30132409093637,5.32813236315188,3.82168460989201,-2.25127147611663,0.458214684157023,0.0337161703530642,-0.66616716100924,1.64741211441928,-2.37302197380612,-5.21210428145871,-1.77864710819143,-3.05010891823686,-4.60600603313365,-4.6908332212436,-6.36742485363276,58.1803477448426,51.3577686793614,54.0606747833573,24.0080836916468,27.133796554524,27.4446472547453,-19.285172869501,-29.1753716613454,8.48606308978136,-0.163650332653032,0.969050465076732,-0.00967644151627745,1.77954343122566,3.54479075717245,3.02769443555278,5.06656274152501,1.38266873817324,1.98922943944514,0.736455150173731,-4.31297481847498,-6.08138178965556,-3.77147279637998,-6.63556876988807,-7.6945775927388,-9.70974299899366,34.4219478361327,-16.2390987407512,-25.9459934749713,5.50118940507444,5.03809480438679,-9.07131143855536,-9.06816591076138,-19.2819005868692,-25.6302134907441,-28.3936598813048,-25.1094660946564,-21.3772008939625,-33.5710733438947,-18.9038717950138,-21.1958594520522,-31.4013862132988,-29.2563235866364,-16.4019859471744,-34.9885914166709,-31.8037344935695,-15.1566228579921,-16.134906092568,-12.793324474616,-18.4318354760417,-30.9414511040911,2.76141460835755,9.01715242966519,-23.1467231899975,-27.6244504219215,-19.5081350259525,-27.722499915789,-31.2826599806561,-26.3829890968581,-34.4871327899903,-26.0052614183676,-22.944725997699,-44.3138839456494,-39.293632835767,-42.9680473339056,-35.8101355876089,-0.209139980067648,7.29944012329619,3.65997898620404,-26.3927977509403,-21.4989367315886,-67.7660496567738,-50.8738020753874,1.01652141016031,1.78723448593302,-0.773544187407714,3.73669026193142,-0.986293519609959,-0.312598935965048,1.69857007776723,-3.05259716628977,1.82150492127312,2.24714655016827,5.97700830831826,0.254703946793187,4.02785547010043,-1.70754611931557,4.07737072321088,-3.37144632226743,0.115980696936617,3.4496971810872,1.43528668801813,-1.55389480134348,-3.22584273498058,-2.09458574215625,-5.04289052279929,8.44799501339797,12.2261761392229,10.3773416233335,12.2302457505861,10.1520695257494,13.0578573685819,11.244868370612,10.7754398311945,9.447246992811,11.9585529322453,15.5356962371186,13.4210461119495,14.9792162760014,12.6637237603208,8.46203446770035,10.8566282354238,9.96684192635161,7.16866179756644,11.6786908096462,14.6439926221324,12.4949464991237,10.6331008237779,-18.2836263018828,-29.3843297372057,-38.3433927764764,-55.126117711291,-39.1507708816527,-33.3620867351675,-42.0635701465009,-32.9579464038516,-35.9747750200727,-35.2561147970956,-36.571952672027,-43.2662037597744,2.49626762462296,-5.11266132985276,-6.50632182635601,10.5875069403089,13.4680553925076,6.46274720458734,5.39602725096764,6.64034744983038,-18.6095935003082,-26.0581371202682,-20.8882391253705,-27.882685363484,-22.3639608694993,-19.2361234040752,-29.1070978311547,-45.5585030145757,2.81677898880986,-5.20118555348566,-7.13381943722145,-4.40767574215139,16.1249972379749,16.8373200164118,-14.6657714317545,-21.2368624432745,6.73319951752491,-1.65771230011699,-6.77847517420299,-4.2578035351556,-10.437966913348,-9.05901332623348,-8.82960229760738,-10.9658805271467,-12.077184277856,-11.4563653886166,-5.52478415893258,15.1015068953886,20.074659255099,14.671938391589,-16.4506205062857,-18.158593391316,4.89346351666874,6.90013646126497,4.95576323806578,7.55205538914881,6.63352694941836,5.83105568292156,9.59191875330843,6.38667338198474,7.80625238343791,1.73220905455326,3.33192913017442,0.132744439898288,0.466734095288979,1.16746782691226,-1.56456166298048,-5.5570617377496,-4.3235268733086,-4.26791679720522,-4.75219415315112,-7.83977713994946,-13.889840575043,-13.4771143679487,18.10958329982,18.5593682331109,18.7137007890892,14.5696396842672,12.6702041517454,17.3364338760553,13.3967152485813,16.8452357562576,15.3030810522833,17.6720427936196,19.9759289984129,14.7218238649875,20.4033137212334,22.6333463736647,18.7401907232892,19.9721176595674,20.7170777435303,18.712342710981,20.04105262102,23.1247713212445,27.4277566755096,26.0424627558545,24.5946395488759,9.41144714241227,5.47571813864236,-11.8477874961838,-8.57391125082983,23.1627675172404,17.3795132769607,20.0926519873087,15.4737811348616,16.7868004882956,31.6108686685671,21.7646232713127,5.64445495447763,-10.1081798327809,-10.3313487978088,-14.4342483491408,-12.2895914887876,-18.2162838865197,-12.9164935138431,-12.6356909119884,-20.8147194538618,-11.1458765181437,-8.11717329453827,-6.24454935704632,21.0002297110646,22.7789284310211,21.888814244727,25.667717485162,15.6746167040963,25.1813091542098,26.6623603809367,27.2833842602756,28.0977726859434,31.783229485201,34.6134745858855,36.8373480681079,25.3365719681025,33.4461097936452,-10.1377597203396,-7.43427963872713,25.2958668887553,27.1383812090906,23.6836154463273,22.1865065649919,17.189676406372,19.9828512114877,14.4973700850792,23.603007069937,24.3037714113986,14.7016520031524,15.8108300416664,13.639582768879,23.2857620444897,12.9545377974464,10.6096401285627,54.092453889402,26.8862021792907,35.3360320633082,31.7971235685424,23.8399811336621,31.0484379600152,31.2404135241965,10.6516502833163,35.8808726480962,38.2632481024365,30.1630717402283,39.5967725157054,27.809320143278,30.0350410972316,36.5109232129561,36.6857347392962,35.7195903350101,38.1948670410759,29.9759158306861,33.7231393178542,38.4369340993967,39.345810274201,38.3338215105356,48.6237385822644,59.7704857048187,58.465157417621,41.7737952740489,42.5708594415473,36.7610062648159,46.2684417108227,26.226708652534,38.7073546908737,43.0790314178587,282.728992854031,289.092188034322,266.55238384338,275.156011129213,270.349457057672,233.780671886346,263.733543934788,196.520471773269,209.740262990545,154.81141989167,189.039629770331,100.577898316218,92.729984070239,45.7246382726287,75.5295012598958,-10.1777376839306,-68.9084837309976,-124.956119502842,-172.269783553954,-215.380156745387,-215.844455694943,-252.196368689166,-198.937552722058,-249.941298665597,-233.916172970828,-252.839279869552,-278.555274530026,-288.087851865159,58.4120193452696,44.8884959116535,60.9195919955434,61.2598576958724,55.378692079803,44.2373410652289,60.4563370923939,44.5919411710603,47.3626349872648,41.3032519684248,37.7613157821145,39.8912455971911,40.7363687138315,40.8948294704385,44.2371933228533,35.6922558760874,44.8371901200086,49.3520674959378,35.42726174162,34.8944610336427,37.1029430182918,33.9707364699982,32.044912612219,7.88590846330219,45.3057491841724,5.58843779218443,21.1096027837007,0.000519377437123314,-0.0733482677533573,-38.9023588701002,-276.054220218616,-0.592326283137616,-4.13096803684251,6.76659374058691,1.32663051803642,9.63191818700133,11.5112947958085,11.8723065035133,20.1596211963832,10.0120740089232,8.97626904386138,6.60584353030115,24.1183076615845,-3.79240392516356,-0.291451468718819,-2.28549362988649,-2.48588281704771,-10.4882218399254,-6.78222579455313,-4.19888793925125,-4.30304872812101,-6.11132178548993,-8.48178409581773,-1.87035358518048,-5.45817152843801,-8.11610174872725,-3.04321815114467,1.01715759803182,-1.40910772432338,-0.92225621508344,-1.24560128387278,0.398522353843117,1.72395187123955,2.99184017290098,2.27516786383763,3.22543341172631,3.70065549080124,0.314463411688177,4.48311117139842,4.40965272274274,7.79385062603714,9.78644569956565,7.76489049150636,6.86589868760403,5.64976300154815,-8.31711010477011,-21.3831954596906,-41.4639082512996,-57.9743676228219,56.5762750305484,33.4952913000173,-2.48627761053345,-11.8784200107284,-35.3747870512752,-49.3418030807751,-47.1639512397307,-72.1874300880629,-54.1637307360977,-43.9122546324429,27.1278611727831,-59.4678674359157,-49.414069602034,-80.5643204461235,19.1371210539958,-20.5306577029596,-30.3486210540377,-33.0020557527932,-31.7043520453554,-31.9550808714643,-36.7040073372135,-40.8815527890822,-42.1518812002803,3.46747119778728,2.63578987541625,4.20022140542177,2.18049349908837,1.15600819736299,13.7430807090452,-7.67250147340457,8.47443913823055,-11.1890795366145,28.4726395844754,-5.4019161585809,4.65603831541416,18.4990044079854,19.958233930248,0.114088224957901,-0.841490064998341,0.313349868142791,36.2275138217097,36.8693406682934,50.9960785930666,11.8497982607362,7.16582487155539,73.6662042437233,0.760593588719953,-36.6364414833917,-42.9918323462602,-39.8178749769413,-51.3432210547874,-13.7139905308679,-1.80891562122246,-29.0580095228645,-38.3225198349975,-30.5596445449862,-27.7596171991335,-30.8485810799955,-26.2174702463357,-25.8076958465172,-27.4309497659183,-23.6578073682601,4.72909335306308,9.02024485368174,8.61545334230797,2.97080366670832,0.885805184748395,-7.1721321487807,-2.90685404571353,-3.0329925579475,19.1956003118823,-7.10359049969634,-7.29298687157139,-9.66720102385658,-12.9149578240803,-6.50079669460849,-3.95020188584627,25.3516307507965,8.48331682125646,24.5068047983925,14.3985605850184,39.5618395282171,34.4613268445191,69.1396361917672,44.2470130140155,54.2011203703372,44.5878251766078,59.9569179166666,75.1076303875111,52.5509468539202,45.1043780725586,58.4842013078998,42.238582111412,62.2960035737043,80.3623812801153,57.7374964837268,42.7705825520539,46.7878724207537,45.5659512307872,50.5499933405421,45.926608872569,48.9003233461776,33.275606797756,30.1201531413237,37.6383214269371,32.2901313207873,13.1271802675307,-5.71461669265119,32.9926762662497,-0.860237619252882,38.8836110415623,40.5311539272448,-23.4597070882726,0.625856682859574,-9.63796339094072,1.54247812856165,-11.9975058787147,3.80487666868992,-11.3887072774522,-0.210903048559032,-9.59646460352054,-7.70416139229084,-14.9872574382397,-7.17179337527734,-14.58491333038,-7.14478651012369,-26.1889320558203,-11.4921164077742,-22.761842732313,-11.8863830949946,-20.9073078617283,-12.2953944298394,-23.0315714868453,-22.317079508023,-23.9960021034257,-18.7161390560246,-24.8873892072733,-20.1648785038352,-35.7118297265124,-22.0923385633351,-28.7234488759738,-24.7478429053874,-25.6602984861955,-22.368980441355,-30.033062122334,-29.5954448589258,-28.829963068863,-21.4425023291904,-23.8074968256219,-26.7332811764818,-28.3391397862541,-31.4951117380485,-29.410700273928,-24.7917798517934,-28.0023779509952,-31.6571295745652,-31.9923289329483,-31.3751439434453,-31.4705497208619,-24.627966166931,-27.2083856436539,-22.9833966004889,-25.7057452656728,-30.1434905411815,-25.592341239469,-23.575383451403,-17.8138759997633,-26.8953491693999,-24.6971210077496,-24.9696564234811,-25.3467458011493,-15.1529147395161,-23.4565221847024,-21.2244556198268,-18.5496230026044,-22.4140654685793,-12.1558554195811,-19.7199845096692,-17.6564477836146,-10.2374985179715,-18.7649942239065,-8.33660281143591,-13.4552357107523,-11.4713366531206,-5.53933270854417,-10.1880701710093,-0.89212508266718,-10.7538403072555,-5.30501228718714,1.54163592025818,-5.41604111572538,3.18496568041211,-5.05219023901562,0.686481278904898,7.68901506875032,1.64517578982178,8.68209663683411,0.351275001392432,7.17452230065372,14.5401895253022,6.14066539558734,12.4531643088301,6.25593127087102,13.5400958900524,19.5423467790842,7.52084052123714,14.5909917791888,12.5550685755587,18.0964752857049,25.4086562389213,16.9967323177425,19.9033628760164,16.45897772432,23.8318334367786,26.6674312214433,27.4818250046768,27.073655580884,17.3216217822521,28.1222714553709,30.4779441498275,26.1252564161497,25.9209659454279,23.8442902964306,31.4193591683381,30.0959896498193,24.8461472862712,25.7102044446643,26.393786608307,31.8663919304558,31.5939198808299,29.2958888127329,28.2206017276103,31.643888762605,27.8251767641367,21.3729414606672,34.541860106223,38.2751247957408,19.1176609631362,22.1273561737624,26.6800280501771,22.3976558961923,26.7147356451954,26.9084261408227,28.1513858905609,21.705377394362,21.6224287552756,17.645479733275,23.7902153561558,20.377685179747,25.2614117539192,15.2254518669778,21.4259112763132,17.8346955068113,24.6334386934627,14.3024313270874,19.1725239261405,7.5741567355255,25.306497659025,10.0299080412254,19.6852275488776,5.59098043049326,13.5801218795917,0.794934912354124,17.778596451985,3.17676973118422,11.6387057516339,4.59932130556434,4.48155226340346,5.24869258107966,275.14590397215,277.7299508531,40.1962228330166,265.824889201442,268.984759106446,217.829850559937,241.870792217403,21.3177708282569,292.291566576294,38.278504716594,321.532338602971,38.3669292246289,260.902759511859,273.170193411211,206.208786696995,263.833977621249,53.2632101379458,296.836798687177,290.785513167075,348.414325099063,42.8167076665865,238.619964338643,177.969644403621,230.744123845255,229.98208368631,253.189135025669,269.915519115875,37.1000499051343,200.363416155574,198.574014052808,149.685642935122,180.992839141397,39.6411208296738,248.448431102698,221.680259949573,338.630311429627,358.391205730599,27.608768482965,137.387695071479,59.488483610463,117.874720530187,141.168328541001,220.517438150577,154.459367396416,113.437360461279,18.0996121475628,56.8703343873182,100.643065447802,11.18981192088,57.1631461066532,15.2406068408105,147.95196367701,89.2355933636224,258.022128436175,11.6398768226294,43.532082329474,-48.8942570388622,-6.29511805297051,26.4594854811715,51.1477203866224,21.1724458132965,-14.702254965153,6.42478839630071,-15.057876242557,-93.3999292017857,-82.4058657679132,-5.12661460550035,88.6735196615059,-89.2667552196913,-4.92273809710335,-154.119386310919,-73.3648085549628,-118.557704790921,-157.994427731784,-95.2332053445468,-111.534475858906,-124.171077594175,-38.9879588657627,-11.6513850886466,-133.190991491242,-186.91009467739,-202.233145523323,-152.365185049845,-193.883251095226,-189.429170555123,-66.74774404521,-193.632373969923,-21.94022900983,-268.344702074361,-179.070673333277,-293.03891382748,-207.560483327524,-29.435313396534,-172.083536032323,-247.464917617391,-154.197018502372,-32.7931414793199,-203.448690864169,-268.547615572201,-257.220895894704,-49.5938301200276,-230.389855175927,-268.78280150536,-289.270666903692,-33.0767191157924,-321.408170869625,-254.173073806009,-269.052342401367,-261.477700270563,-281.999371362996,-274.782330924872,-286.308584113418,-41.4039336619615,-279.318613409333,-338.791485369013,-297.172128526205,-305.786379743972,-46.0303459260553,-318.218052748711,27.9054733937306,31.1684115059725,46.3702954358747,32.4806902632561,19.5072730092511,16.8701002845713,25.3897501539299,19.4007936243805,14.3602272442073,72.7176113951599,294.824386805012,10.1477521504102,8.87777269083338,22.3255653922166,17.796187069726,6.11174187934465,40.6323546917633,169.836847264504,4.82764172719705,0.895982050565271,11.5495641932139,-9.70601469195506,-12.6617730730578,-16.4095806159193,-57.4476354825085,-4.17476278308049,-21.2425090132528,-33.2639710879994,-145.730760788746,-7.87164670178048,-22.0886417649147,-24.0302072650199,-56.4155972693299,-218.464694391413,-9.61922547006752,-27.5968508977871,-23.0005408203585,-16.9296466408913,-43.7405416180159,-19.8120222416775,-30.0314574528636,-26.3081603539342,-24.2234870765565,-33.6245329124308,-83.1563302367049,53.897975321972,44.1301508933816,34.4293123415415,28.3433180368557,-11.8359540742103,-3.42021157287667,-19.7000911225839,-16.1470170916079,-32.6983208495846,-27.2169920395797,-54.3410842408012,-45.6639778908686,53.3425552268873,47.7985515322349,34.3541607901501,24.1029044384485,-4.85627044466838,-18.7980317321844,-30.8265223599147,-42.3337846808565,-58.9687496196247,-40.9226243353234,44.9098919495875,27.4352587899205,-4.70612445511489,-0.690479234732497,-6.27556392180549,-16.8760111981911,-19.3691427764063,-30.7203807481264,-29.8570576299457,50.3882512284257,30.9801605514545,-6.19845955399451,-9.38096708888469,-11.2948437571231,-23.1362760458084,-32.9972639564041,54.0118706873333,44.0704942088976,33.4588643417819,24.8044262327089,-12.7827433632402,-22.1349952241945,-22.6800249069206,-36.164880464924,-33.3588746547887,53.7642758951998,33.415387052727,-24.0721484384025,45.3883633122183,51.8746723786705,62.0209930219386,34.3946162175198,41.8264966217659,30.2823919558896,-26.2154647788366,-28.4099645617248,-25.0480166746847,-51.602150513925,-91.4601403283036,-50.2231209842852,-1.20080191684153,6.01147625594359,0.746059252702862,2.88899390853793,-0.76625822945053,1.65065403253434,8.11783248183593,5.90087585508831,7.68664689958406,-49.5467508416721,-1.41192413671753,5.41853654128376,14.3589079806901,-18.5225464916581,-33.7413319049768,-8.23579102588704,-4.76384077680045,54.9585018319855,29.8110683578539,-12.5470395709158,-45.320420568616,-33.7599320931758,33.4261542678336,-17.2492356525212,18.4148694202382,-24.4726724413381,-20.3152924012797,-17.3346764372889,-20.5107292615545,-13.8287684600332,-14.530001263427,-15.6385311775032,-16.957318680297,-11.2829953287385,-14.6922853601985,-20.1014309308207,-19.6764808468803,-29.5191296284741,-23.045902282975,-32.3696819608221,-25.9651528622431,-22.3281039285869,-27.3662507133495,-26.0021105556241,-61.7743971620847,-51.0528826068311,-67.7691031410107,40.3521342307223,33.0837439695235,16.4249724552374,22.713052658375,-15.6332234183712,-15.5270258515468,-11.7655865067712,-7.85762067924943,-13.8911839012249,-12.4460511189743,-11.613616915387,-8.51551640700173,-9.36897939561956,-36.4007521145992,-58.3283468891168,-53.6437513498769,-50.8759244747316,-53.204332347407,-40.003592357669,-64.9658078607256,-43.5410499839773,-44.2389860069339,-42.3990216051628,-41.7402287221346,-33.6664601667341,-37.9711892130376,-38.850519019397,-31.5255002034824,-41.4398703680783,-34.2758361934655,-64.041529209267,-83.5444367278888,37.409666024441,35.0843151840619,38.7701150669025,20.4412028805361,25.3114323782859,23.6301311256669,24.2872002790774,28.8986979074916,21.1140960066224,28.5718376337579,17.7859500619393,-4.67122703063391,-35.1093197091898,-40.1204980032954,-46.5621139395178,-39.243682584947,-37.538667406001,-51.2152494798728,-31.0328440003191,-62.7328170667818,-32.4842450824401,-29.0482546397988,-36.745178705763,-28.0579995441298,-27.0610513547014,-21.8702678247731,-23.7202147853822,-26.9496567380572,-21.6120616778743,-27.9588792126721,-24.1205474113122,-31.3099661026475,-19.6985649540233,-23.1001440437174,-21.0105353914105,-16.7046593876479,-17.6909931731924,-22.5530761208382,-19.0419232484159,-20.1330268071981,-15.7966798691104,-18.2811722885229,-20.0651090572387,-16.1181519316725,-12.968886214643,-14.3100665965574,-24.9843993368842,-21.5140495842633,-16.0255372318332,-17.4175176578876,-14.4783411750236,-15.0749511691943,-9.65795525158753,-19.1021729674501,-17.1920130121564,-11.3800721508524,-9.31140161224279,-11.6234195430991,-9.97843891508812,-6.42583101642851,-7.62456177432329,-5.60707012853173,-7.29539787934441,-7.25659139953476,-9.37187397312054,-7.01734436689154,-3.4947948894409,-52.8906868775866,-56.1955916582421,-47.0846194371238,-46.9848385822727,-43.0902895162369,-38.3933482181331,-54.7234456290651,-46.9469945991704,-41.2067735242616,-40.9259420681307,-45.181702793214,-52.4480594087002,-45.9078126676365,-34.2116774582201,-36.7685765057014,-44.4914078429672,-37.1394495997471,-36.2334578509012,-49.6706209251211,-54.5366301153069,-40.6074180299797,-67.1416379898764,-42.8803853499409,-61.3663295369885,-47.9327859997081,-368.914466760529,-49.5931091410396,42.7169429433087,37.4253866751984,33.9141917285633,49.6512162021494,55.3837125745312,29.1295248706454,33.9449851304979,42.7571094387057,39.1250629154303,40.5707888493854,35.9806927653307,38.4439029060769,41.3178000605939,32.7021638928481,14.4899076658582,21.5400501759865,12.3473423413175,21.4032341083901,-6.82102901239075,-3.95794467624585,-6.3996415747306,-4.74832534517031,-0.881977447167013,-2.9368637891257,-1.58101753359485,-2.69139965517761,-0.643070804668487,-4.07700887981311,3.04653933697233,1.02142014792884,0.979947360335993,2.66131066936604,1.73430402658793,1.20226476660765,5.50390905845447,0.281343451983002,2.05196504791548,-1.78177463836838,2.13059535094196,4.90195342556365,0.208584086349681,0.282634353858854,-0.504238462415529,-2.01236971580201,-1.01361423609525,-1.32647105879318,-3.61558447903513,-3.6624340089199,-55.5304339245517,-62.1846730775977,-28.5023330246525,-29.2133536374985,-31.8812715149548,-28.2594848248248,-31.6401575121718,-37.9331090354241,-25.3602470166716,-22.638986273517,-26.0147693463527,-22.8726891389809,-26.7829627621063,-30.1087945827866,-20.0748242455639,-10.7024532152725,-13.0683375503619,-13.7861583065009,-12.0801938601992,-13.1328681411506,-11.3414692359211,-15.4332295087474,-15.083020792669,-17.390533876953,-17.834891535809,-15.5337467417438,-16.193613701002,-12.581324474047,-18.6816515820738,-33.5828165521209,-30.1155219658105,-63.2000704083305,-39.6762063885683,-47.1836318568895,-89.2592718861259,-57.4818239013133,-59.6516977510159,-52.1635190010805,-62.8724094254947,-46.0703539869887,25.9862945145922,22.5905207468265,24.2831876154826,27.1966239348043,20.6872760821929,27.4377409485071,31.1933220410217,25.4354523399787,25.9488616985178,22.6437477101766,22.617991036641,19.6862663283315,16.0277742085072,45.2511064222955,48.306876329887,35.5018934805173,26.9299866893913,16.3610176173464,12.0110341722016,14.9180188221503,-8.20792841399353,-4.92938821776473,-41.272920609282,-39.6721583773148,-47.524591860566,-55.4259085693009,-36.7660499737612,-31.9655771830614,-34.1805428455722,-8.92415867272648,-8.3473353460767,-34.0861221669356,31.5106002652961,28.963869845268,29.3260617096775,20.7764252873918,15.943154318406,17.0104652893154,49.8399247208606,58.3539914211235,40.7147617931763,44.6468715895128,37.1016100612276,32.9498771788575,32.2447980201924,35.6829880931385,40.308678728472,36.5013317326373,32.1841847352807,33.4609347394147,27.130132094244,29.857906512187,27.7599084883634,15.5803619256449,11.1182627319591,-34.0248599325895,-42.7262281102187,-43.9475172341544,-42.0348127347672,-51.2395173944031,-51.7201267234786,-56.4479254154774,-32.3823018059304,-38.7957270714123,31.2132509054382,22.1562293837285,25.5153440636457,19.3114004770816,18.093803086251,18.0677937307045,19.8470325323597,17.7833012721494,90.9677260244117,12.9814950551545,13.2599933299643,-46.4508687731372,-41.0323976436878,-51.7279887845983,-37.8843484031699,-42.6722616508659,27.9740646288338,21.0864000790976,14.6339177402609,17.4594874319373,14.1476056077593,12.3514074696073,11.2294944174835,-36.5332064290115,-35.9356864042143,-34.1455035272825,-31.2611348390014,-24.8860544677411,-27.2065941667853,-23.8286516503456,-28.1123341963421,-25.0923436597044,-19.7707491238768,-22.3299781604934,-20.5925073531193,-21.7150768291099,-23.8014427167537,-44.1540166203578,22.3179139161946,27.2585210480574,24.3475375425121,9.70312713708083,9.19887162554197,-29.7114711423269,-25.5457926660333,-20.535813647666,-27.7051238223768,24.9957247925475,24.8415114390773,21.2918101893149,17.9492445250794,18.0797743721686,19.1986016114702,20.0063361926004,23.2083487966588,9.04580556882515,12.1533476916759,10.8008372374557,9.98065181797338,7.30219265807956,6.61585101974114,5.84786921921483,4.3618065602066,5.36825085884766,8.63499092205299,3.21738879851817,4.86835396281875,9.78906263751196,7.16736717068039,-21.3843854159206,-26.798991764148,-24.2328894669116,-30.4310464857482,-26.6398694551828,-26.3134490658873,-22.9471300292377,-21.0862104193685,-30.9434322763637,-29.0028729067729,-32.0837897888228,12.9227937763257,18.3401962941156,15.4221102323207,16.1197434752507,13.0609188512594,22.7732323261867,9.88937880305026,7.2786370724429,6.91868044174996,7.80567207297719,10.186975652881,5.43793385757419,6.85836171416377,-15.7452637191667,-34.0887705422922,15.1518217213208,13.9298210819357,12.8132357906263,15.1832879660791,17.5342249759984,17.7383288693812,17.9595979679518,20.2923829307285,22.9366278732714,20.4059438119822,15.5003213523548,13.9209151907112,12.7167505768083,15.349199287763,17.9099397123734,15.7699708470391,14.1155667234705,13.5730598776832,11.1013514431948,10.8150572963348,9.27721626880199,6.92437656884857,7.28226468033055,4.47522065735835,-18.7405138472707,25.6037991710774,11.3255780891257,18.4283831092908,20.5355881079514,14.8372059182761,11.9289003450439,11.6670837250635,-18.2526806093868,-15.9873850185929,23.4575841763958,26.4849951239119,10.6160748662554,7.05429646142957,8.48922508726554,9.10075406912333,8.3631231253286,8.94588141431896,12.3183854584564,19.1594363646524,-18.7022870425977,-15.731019211931,-14.8395277065954,-16.7353313114449,-16.4411377355214,-14.7446254722862,-11.8641602589566,-13.3766768135645,-18.6993132586443,-9.89136372517526,-14.1802097945688,-11.4881438160917,-7.45635044982624,-12.2831243484622,-9.1549767498345,-10.9695828634829,-13.2063459212816,-6.09954261178072,-10.8662092525179,-8.21637093657516,-14.5068587507634,-8.14975443729109,-14.3018238674982,-12.2851933607916,-18.6010264242495,-9.58783664217393,-16.4729023676982,-19.0823769573895,-12.2290928635733,-10.3788532913559,-7.78957688584146,-18.266925372945,25.2407934788351,29.3285046421195,29.3483217400873,10.4538532412686,18.998399421272,-21.1124965756469,-21.6560804187033,-17.5418279792649,-15.0495210657747,-12.6691479755339,-12.8748036869042,-13.7055378793544,-8.57927228619203,-12.1331150756878,-10.7275211565793,-10.8670840708082,-9.78331692930612,-9.53696801232347,-10.9164799495342,-8.54342102839274,-5.93348672444556,-6.38391500083086,-11.4569159510406,-6.05893491672008,-16.1289782189594,12.6270041760984,11.7313089900624,11.1101576729326,13.9807306686734,9.4898398192374,11.6987000744087,9.67550900780628,10.222296574764,12.4086829415479,5.77537682332856,7.8374299499861,6.24786909472329,7.37992602580485,7.72882246280724,6.19542071130659,23.5235673996163,17.1337628467743,-25.5053145866483,-21.1193583310176,-19.0632919822102,-23.9761833015903,-13.5490925847969,-9.62896623837147,-5.67169119161783,-15.5193237806068,-10.9038377374463,-6.62603832108009,-13.1239884972262,-9.11351061417945,-15.57326296919,-14.1337142594364,-7.70884230744362,-8.40049832757324,-14.7630538964215,-17.3599984589044,-7.52250401433255,-9.71755993276174,-19.9809197759244,-5.47082447647303,-11.9567669658067,-17.4647512507321,-19.7941943448348,-4.717518963407,10.1714014045136,8.32806410560373,6.36647435827714,2.99622144341032,4.91696052330221,-1.86685000339031,21.1747362042426,23.6579798614976,23.3631543839139,28.7363865453636,27.1167593868981,25.6262726345842,26.742995137702,27.6829269172722,34.3003263511629,32.2387915564738,34.5183280921077,30.4636505295265,36.8706874672755,31.258804974242,31.9369240404277,33.5807363147264,36.7019555931528,29.265366754826,27.7444957558443,21.0092754927521,23.2537694551472,16.3885816197629,15.5167210950836,-27.3291168820695,-30.1659334502761,-31.5882186317154,-30.1456725608026,-6.78317798972684,-3.96847434529018,-8.08133689915958,-4.61684974543327,-3.25174709146952,-7.04472199932782,-4.87458459135004,-1.99549591482588,-3.09012739600717,-0.410465868498011,-4.49998897255444,-16.3196847031388,-17.580087964984,-26.101439641009,-20.1758975171581,-5.86515049336287,-3.87344511439399,-2.82477772815777,-1.23759121393745,-2.70178409324245,-1.500599816608,-3.22855797014619,3.82406807358134,4.98143851217753,3.82867045048168,1.08762207378066,5.94684599954249,3.71486054675291,-4.21780906859706,25.8691175258717,24.2206243015886,34.5876130992467,17.2421700085674,19.8566141717111,14.4440649306714,18.3880653247699,19.1723805484533,17.7650826217496,15.3420741267593,15.0754041103841,11.9021904552708,13.3499080278609,10.7982822864749,10.8818559634585,12.746658866289,-28.0595271503956,-4.1777281462066,-9.27357607795772,-0.764163192482232,-22.750173175641,-20.8216415226411,-26.0727941130789,-23.8080006263494,-23.4754056342615,-23.5832479605071,-4.54667533317275,-2.94432921394262,-0.876121179031319,5.05857448897796,3.84791309982344,5.1538710351008,1.09348179898591,3.31942077002642,2.76174379753178,0.000919863228479076,1.27789777734877,-0.903594596545567,1.95389686394561,-2.996986552567,32.4645360595385,14.7833984534661,-25.821253642999,-2.0240807180619,6.75497265188237,0,-0.0485638992021232,-1.97566988436603,1.16022744738269,1.91351173695361,0.830850245012624,-3.58768712266909,2.3614478984663,0.218473132342711,34.5911353731747,46.3559634902732,38.2303373932727,47.6120012366173,36.5287965063336,46.6368331944739,49.6544333154348,46.370412949492,42.4746519887201,46.9615908570837,37.3340269004218,28.3827595917575,-25.216445708291,8.83373316345424,7.73662982642019,7.8551985274365,7.810962974657,9.86956824508656,3.67876184695724,12.8540260271813,5.80891869299848,10.5719588677134,2.99028651748204,9.56634347577429,7.67015793893067,3.68108383032367,1.66578803243632,4.85393969346004,3.91252262621331,5.98326565414731,6.01463227417684,4.30939342688734,-2.55890104170206,0.525312445978868,0.0383027069382876,-0.750379167438602,1.85840088081613,-2.67488071452524,-5.87793946157367,-2.00952325513481,-3.43844995948468,-5.20035348008935,-5.29287582063306,-7.17933623620356,65.3954747292048,58.0960861171007,60.9120433121391,27.1140609813243,30.6083390657155,30.9660801916162,-21.7569265947084,-32.9291273489903,9.57333720713459,-0.183838362288013,1.09128872078686,-0.00970633356050295,2.00835168301605,4.0025492264605,3.413992344226,5.7149942152189,1.5585267973447,2.2485258924173,0.831764787947065,-4.87443458392013,-6.85365806570991,-4.25265284062785,-7.49117278604666,-8.68265739514832,-10.9516549065136,39.3863121573325,-18.3202455493273,-29.2567940040338,6.20084976533246,5.68155464480467,-10.2348271832018,-10.2300427242463,-21.7404224392824,-28.9232589266514,-31.9935203801107,-28.326912087683,-24.1152895116694,-37.8663399183971,-21.3273194038866,-23.9275563365922,-35.4043709403788,-33.0099735280399,-18.4979540033003,-39.5045509293583,-35.8779388030336,-17.08141035141,-18.2011657443617,-14.4277435708115,-20.7912036793903,-34.8981755364009,3.11368847899572,10.1692719038438,-26.1246555499613,-31.1406945541959,-21.9910116263329,-31.2662736946904,-35.2875137253543,-29.7705189345677,-38.8754371458545,-29.3212102340886,-25.8944476296665,-49.945154491204,-44.3333726832069,-48.4598521941602,-40.4005775787817,-0.235577472638376,8.23238991537305,4.13055390354443,-29.7601630960582,-24.259491994606,-75.9436026167681,-57.2208539240664,1.14825846464986,2.0136776203703,-0.872150725367831,4.21622847605382,-1.11431425457675,-0.350040563739743,1.91539927830481,-3.44106737558057,2.0555538559709,2.53635295634688,6.74051648478217,0.28711812610039,4.5409084133635,-1.9248239693165,4.60084030570255,-3.79673389979277,0.126927900208785,3.89233870685571,1.61953474574711,-1.75239775265513,-3.64264710596768,-2.36094757335662,-5.68707133885623,9.5265552968579,13.7794127275381,11.7078784107127,13.7895401366855,11.4560235981716,14.7298421365182,12.68204381312,12.1589682722651,10.6614859854004,13.4846451031624,17.5204324642267,15.1319478412701,16.8835518090159,14.2829119881628,9.54336628968788,12.2388196044777,11.2389361149046,8.08238902452796,13.1899115786362,16.5324453751334,14.0880753438247,12.0070871558515,-20.6188317067804,-33.0647427944442,-43.3236971371848,-61.8319911965143,-44.1541440040281,-37.6629021273969,-47.4570535078449,-37.1370669595162,-40.6025224333876,-39.7807962464538,-41.2781793372015,-48.8022301667015,2.82132154134509,-5.76865854295864,-7.33603078217778,11.9477599259311,15.2021412495736,7.29254087381608,6.0846714675918,7.49651848350685,-20.9953548260974,-29.361670973833,-23.5942236473117,-31.5997394310398,-25.1437274650775,-21.7680818231279,-32.806397301869,-51.4025100595729,3.17839346759132,-5.86822888777934,-8.0465720073345,-4.9743374541564,18.1906215344902,19.0004885359041,-16.5349458117133,-23.8813841508914,7.6024561258611,-1.86976883869413,-7.64435706630473,-4.80471311650496,-11.7632376063079,-10.2155597476209,-9.96405605701178,-12.372258714999,-13.6263638156337,-12.9268927191238,-6.22828648185899,17.0468674916259,22.6472756941218,16.5481703479074,-18.5619800744941,-20.5596444975531,5.51759794337758,7.78390756447909,5.59100822308346,8.51893593282225,7.47734249657494,6.57736149145475,10.8122256009415,7.22216237755098,8.80797814114328,1.96784832412236,3.74717048915469,0.148723694654481,0.526172073658918,1.31165095066829,-1.76958726048076,-6.26764008156446,-4.86972177078499,-4.81419950933999,-5.36148771016452,-8.84843692122717,-15.6787893518301,-15.2088273552274,20.4176521300446,20.9505069157394,21.109397846067,16.4310798466629,14.3041258600524,19.5682821947261,15.1220057966512,18.9917548674347,17.259026300586,19.9247365705674,22.5479796829769,16.6144581223686,23.0316540476329,25.5401239909683,21.136611126334,22.5182813502849,23.3811455022778,21.0870304879494,22.5991569099487,26.0857649396512,30.9507900457088,29.3486870283602,27.7912755045064,10.5420668854921,6.15471447619984,-13.364429333007,-9.66834683458589,26.1239690725058,19.5964840058788,22.6695075414458,17.4694947988759,18.9430951963857,35.6498306428445,24.5652605811526,6.38298164858574,-11.3991025253735,-11.6346707353496,-16.2929134885751,-13.8703782284619,-20.5145230024995,-14.5728557906155,-14.3062271457971,-23.3487387462531,-12.8252514571881,-9.16212428472704,-7.04439178755402,23.6837548205033,25.7022213593941,24.6881524135114,28.936114646704,17.678870197731,28.3110009902787,30.0724066864973,30.7639382919349,31.7108677512516,35.979556398761,39.0079163804321,41.4567470113527,28.5449693782507,37.5851218819547,-11.4321339440947,-8.38799520191626,28.5244552234144,30.6064875328582,26.7091950933747,25.0308358514865,19.3951924767999,22.5639951928279,16.3978001529922,26.6461714398935,27.3459091999856,16.5801805773646,17.809817081142,15.3515237539502,26.5583580364347,14.6461961200273,11.996533426555,60.6801586618789,30.8544282817689,40.1166351553987,35.8438691259825,26.9065743363966,35.0196366415889,35.228186905014,11.9546259373527,40.3293266642446,42.9811536087007,34.0356435419971,44.6297591585058,31.3808173600568,33.914595859032,41.2822389782139,41.3535082156753,40.2966418785621,43.1101352983062,33.8101404970166,38.0569767658249,43.3250181725975,44.4585551888519,43.2690770661556,54.7014770530899,67.1216071114417,65.6230573117189,47.2028156976201,48.0679062583594,41.8003736854295,52.3220536087899,30.3540196204922,43.7146466358851,48.7094775766586,318.41752567081,325.611469098615,300.175301257531,309.904684546095,304.553201007602,263.288055074385,296.901791894372,221.298616451648,236.216995876673,174.352245227838,212.831586971367,113.251597906254,104.401345686362,51.4767872549034,85.0667732136792,-11.458684983308,-77.6237555174439,-140.748318331891,-194.024871470221,-242.569629741935,-243.089178479623,-284.028912086114,-224.038719712803,-281.499607962901,-263.60971842164,-284.618324127241,-313.704696616159,-324.462741111309,66.0223753389371,50.631412286643,68.4523738910085,68.8754166382858,62.4759184729803,49.8698251777498,68.1460072413463,50.3426726442631,53.4763582851125,46.5699250260212,42.6094771666626,45.0017853430472,45.8859947859598,46.1348622607424,49.9452217852381,40.2591331280281,50.6268320197415,55.7737303562629,39.9612280048368,39.3771757105489,41.8377251879441,38.296369488176,36.1337643718937,10.0489051316843,51.3249153771759,7.0831233084998,23.9271208235962,-0.35672650025389,-0.737337063045396,-44.0774998412693,-310.949667491539,-0.572752742939644,-4.64242397883678,7.62201830516047,1.67511400181525,10.8930473032307,12.9981521542951,13.322424749139,22.672407902251,11.2892155892164,10.1332505366511,7.4577397129128,27.0800837188654,-4.27716690768748,-0.329286248230478,-2.57908115574441,-2.80448546649889,-11.8185769525317,-7.6461200765984,-4.74371807095149,-4.85111204343739,-6.89594798366444,-9.57069583627435,-2.10413117734547,-6.15506464480344,-9.16250851720454,-3.43576159114743,1.1471611015226,-1.59365305654585,-1.04032518243974,-1.3977918281994,0.44773116021827,1.93957730074104,3.36822821382912,2.56558523001338,3.63828366910677,4.16763117342191,0.360209805097106,5.05344880585986,4.97808655431178,8.78460865227398,11.0320950448374,8.75601742026404,7.74679878200793,6.37602087724869,-9.37811416800977,-24.1094000964083,-46.7535749262453,-65.6951639096968,63.5476189372829,37.8344881638184,-2.80553455050417,-13.4004628144306,-40.3701310448793,-55.6200816587591,-53.2575772924638,-80.931205546731,-61.4995725168908,-49.5938905855537,30.6028362510565,-66.7657779344735,-55.7929084020195,-90.2885806044968,21.5979124288368,-23.1638004259804,-34.244033847997,-37.2511085955287,-35.7240726605639,-36.0651792161056,-41.4045590103486,-46.118713821598,-47.5500200726117,3.90747397872025,2.97635272700691,4.73335803686393,2.46431499561924,1.30398977957554,15.492079502757,-8.66241495943691,9.55497603068538,-12.6305157040206,32.1172017168192,-6.10055768221966,5.24913218251551,20.8715540169995,22.508636476493,0.128647458401807,-0.954920516722661,0.358311831249754,40.8812104940564,41.5870507018163,57.5347090613635,13.3644543633231,8.07671434156756,82.4861019428936,0.855986283531253,-41.5071226959438,-48.3069806437955,-44.825334688778,-57.5676607973337,-15.4810629283854,-2.04211313757335,-33.4558773695582,-43.8048116909201,-34.4476535708438,-31.3471470522423,-34.8019533424966,-29.5760102455302,-29.1013802133199,-30.95441187057,-26.6891011863979,5.33490513928558,10.1594521416954,9.71994714383877,3.37543166968156,0.988230213675087,-8.07288084726876,-3.27198676075343,-3.43220606244767,21.6450401708277,-8.02532713097658,-8.21427940383457,-10.9158367174401,-14.5055182037925,-7.40854842423156,-4.52894095594601,28.5919001402616,9.79762607819501,27.5054253020078,16.3750904395324,44.4959976657185,38.8620340042353,77.819755192214,50.3180006652036,61.5608514139157,50.3893160549208,67.3974984596394,84.3601740669493,59.2296975938566,50.8594886727269,66.0664333142548,47.650844879253,70.0162558202659,90.1421134394959,64.9458109404807,48.2998111650038,52.8115110078329,51.3868464337737,57.1342624936577,51.8476862399003,55.1770612970163,37.5468559686671,33.9720483554373,42.4413142688529,36.4252197149648,14.8049722133527,-6.4436022323411,37.2446820648743,-0.966322942930181,43.8761239071286,45.7132891908347,-26.8815252684907,0.729074871719475,-10.2359473461658,1.71648708695523,-12.8042271374827,4.11407613238868,-12.1344016946098,-0.172117949642308,-10.1904576317839,-8.10343718965302,-15.8927260345348,-7.53403888720127,-15.5137978930477,-7.49489683213851,-27.7822155288585,-12.097487716615,-24.1964655001695,-12.5436788283296,-22.1993643614291,-12.9720015742583,-24.3588381443077,-23.5969637232438,-25.4066318166023,-19.7767380000926,-26.3997359521463,-21.2772064339175,-37.847028424538,-23.3544728467175,-30.4945163160611,-26.2098299575024,-27.2073173982428,-23.6455216875859,-31.738397284802,-31.3145648492106,-30.513957300667,-22.6912733340959,-25.2179439539797,-28.2856616850801,-30.0018055155943,-33.3326806663332,-31.1524522528943,-26.2454821335409,-29.6270027111585,-33.5076052915621,-33.8026366059998,-33.1397057074057,-33.316467179901,-26.0392163687041,-28.8342378951662,-24.3149611966309,-27.1929056287745,-31.9030550293884,-27.0428012166809,-24.9990155207738,-18.8304639750901,-28.4787617934135,-26.1417031992067,-26.4157513119396,-26.9257163741305,-15.9976493402184,-24.8394699660723,-22.4643674876509,-19.5926560777547,-23.8263240399753,-12.8162913892648,-20.888302142217,-18.6921997943506,-10.7860815549054,-19.9568416595311,-8.77922600834847,-14.2569943496614,-12.1435056971791,-5.81447413404917,-10.8740920904386,-0.880770334970066,-11.4113502969787,-5.61541445726458,1.67417836091574,-5.81495678155184,3.44186806207806,-5.38452046237842,0.721449334720349,8.1900217978884,1.65760763294006,9.25867194385441,0.337848457372107,7.59245669961137,15.435712220188,6.43015529843225,13.2442104946816,6.58877199205259,14.3297073288093,20.7132838557066,7.91513907506041,15.5025656586222,13.2561150074444,19.1491132875298,26.9288800666325,17.9434890222694,21.1200710349351,17.3861210895434,25.2216139650249,28.2163998712672,29.0664154767344,28.7331577205617,18.2949353396329,29.7691802782046,32.2539479683175,27.6306143727975,27.4758818207673,25.2053809431563,33.2515366161304,31.8290310795044,26.2900915926055,27.2341036657305,27.9139596708731,33.7303795339438,33.3798656795592,30.9599213527143,29.8732359557904,33.4793596003521,29.4765594728263,22.6168483759034,36.623913749192,40.5313960763155,20.2817480611808,23.4286295964466,28.2685643096018,23.6931667688323,28.2722909492151,28.4054991696425,29.8076295752326,22.9401540804273,22.9249806406391,18.6482508881785,25.2096762053012,21.5040383471775,26.7583953208255,16.0704083025685,22.7392300814606,18.8269901132774,26.087914889152,15.0964566897587,20.382044308613,7.96600900784359,26.9125344060338,10.5528527229988,20.8694118083422,5.86544164987316,14.4687007763606,0.771793297345679,18.9385737759111,3.29268161829411,12.3380825239173,4.86289139302581,4.7361881441414,5.52131526934299,292.190794512619,294.964874573153,43.72761162077,282.290658355929,285.60875411674,231.360472423918,256.878271568931,23.9909490609263,310.362791969371,41.5044961993504,341.376798773066,41.8216362426172,277.002990518012,290.057504451285,219.040505978917,280.236230121649,57.4844554636705,315.203412885281,308.748008672412,369.965127500011,46.214242256128,253.346033881808,189.051790616876,245.10269074237,244.34572731842,268.867868381596,286.696406018159,40.160518847266,212.78374893931,210.8146229137,158.992120735765,192.219784691155,42.686570166124,263.768011452245,235.413227444817,359.577771150703,380.607757063581,29.6983294641974,145.886018795118,63.2002659556162,125.233997373369,149.989894244942,234.159778486886,164.048791962956,120.466357271752,19.5515413748212,60.4180208820808,106.824084294894,11.900046193977,60.6802952783002,16.383266870282,157.067156860518,94.7748759845736,273.994655768296,12.5239143752061,46.1872397478595,-51.9088744727045,-6.66033169522872,28.1124916804093,54.3207350503067,22.5087109225665,-15.5867600098123,6.72984045716798,-16.0306680689329,-99.183504462424,-87.5643349826477,-5.55100220681292,94.1365108984313,-94.7841981373732,-5.4620299853151,-163.634118280104,-77.9517318926234,-125.959669381291,-167.854591257686,-101.178337348146,-118.447561205749,-131.812969758473,-41.3845904383533,-12.7998283730993,-141.453136238686,-198.496749927117,-214.780511329356,-161.87278391152,-205.897388697262,-201.129017158646,-70.9357234051249,-205.591912742647,-23.981876854618,-284.93558180266,-190.176221524743,-311.260965363985,-220.41135018282,-31.9302722936714,-182.751907170593,-262.77618933128,-163.801255247911,-35.6292911286182,-216.050389480186,-285.212186902705,-273.176742116538,-53.5957259799704,-244.656363700803,-285.403262344132,-307.098360343511,-36.1616346228913,-341.242190166915,-269.908295072776,-285.724152507777,-277.663966850747,-299.409266661447,-291.761002968619,-304.004885865389,-44.9949707509761,-296.60653462734,-359.721382046694,-315.616300896005,-324.646501152068,-49.7283520609832,-337.892897533198,30.2858876026559,33.7859669264452,49.7392936529822,35.022929290036,21.4789170089842,18.4847341984507,27.6188927277417,21.0903703459341,15.9039391415712,76.9010328247954,313.119973567658,11.6636815157297,9.85506982899326,24.146240794904,19.0951011732089,6.74451329546601,42.9817837610739,180.376476314193,5.64122116935768,1.13005347990984,12.4669804998661,-10.3389455515677,-13.5658999360694,-17.3643908724621,-61.0321655772439,-4.59332339956922,-22.7207265712269,-35.1870124535142,-154.776959335677,-8.76250202064798,-23.7917601252534,-26.0344005226626,-59.6343835291065,-232.017474420054,-10.8704849988042,-29.7632261578469,-25.0557507193537,-18.440704201437,-46.7675816861964,-21.8222141242597,-32.5445593860407,-28.6312819142655,-26.6133311914566,-36.3605234126899,-87.8898541718712,57.5494343994283,47.4078514770289,36.768761049874,30.364704263901,-12.5128507804439,-3.82397374565574,-21.0235473294831,-17.5121372592944,-34.9052376151409,-29.3906043795333,-58.1318797759512,-49.3787244324456,56.697866664297,50.7967044500112,36.4957125266305,25.646113544038,-5.13439891753616,-20.0207500016191,-32.8277258216211,-44.9841891740201,-62.7866356852605,-44.3846083176248,47.73202255445,29.1588599731901,-4.97875091950224,-0.789216641457026,-6.67418131178148,-17.9087078202538,-20.5937593725786,-32.6189729583988,-31.7335683900221,53.5868579932939,32.9481046855007,-6.62420664828678,-9.97461335579811,-11.9889845822105,-24.5744771958525,-35.0943459543267,57.2899846119106,46.85499836029,35.4899347662497,26.3660811953638,-13.5887409593006,-23.4695904642805,-24.1096236599334,-38.3351760149955,-35.4706613200524,57.0791928251389,35.5052816103613,-25.5836752422467,48.2183230256592,55.1310480841121,66.0016130435609,36.5570748199195,44.5488569148122,32.1657410746448,-27.8861452322728,-30.1578693279802,-26.6031209925467,-54.8089028445073,-96.7296404063501,-53.3754629189706,-1.29947406433964,6.37084079764394,0.785234068191955,3.07082839777386,-0.82505313072126,1.75651356339981,8.61874671850288,6.27032434052927,8.1602391381015,-52.6286855564347,-1.52904345417785,5.77638776315469,15.2202598012432,-19.7759522242571,-36.0433805486326,-8.75070456092482,-5.05695414442632,58.2081757102583,31.5643963916305,-13.3185713277394,-48.0328792582837,-35.8440238636199,35.5284014089218,-18.3298359094064,19.5655114027814,-26.0121729058737,-21.5844319505129,-18.4105703565724,-21.7879111326633,-14.7022755771743,-15.4371796604417,-16.6157031310195,-18.0213250366968,-11.9916751802499,-15.6063714796045,-21.3610231642828,-20.9048961837985,-31.3482333520948,-24.5074706139647,-34.3794376260966,-27.5845682675489,-23.7317352195829,-29.0794756911563,-27.6147634098907,-65.5840393208963,-54.2507141026277,-71.7714273492224,42.8599151526397,35.1514435844479,17.4434597666324,24.1259372215823,-16.6129056679421,-16.4950099420975,-12.509695077573,-8.34818423049639,-14.7565072905846,-13.2197222142425,-12.3404503608834,-9.04730788375404,-9.95280607056376,-38.6930677430657,-61.8867965589754,-57.098062442948,-54.0516765394231,-56.6079314004912,-42.4980399222718,-68.8889370073368,-46.25285864148,-47.0103958227368,-45.0658719825599,-44.3587348695183,-35.78793989496,-40.3397371612614,-41.2554002101555,-33.5143488309059,-44.0258940623224,-36.3969136005293,-68.0207826205514,-88.2872728429658,39.7929843000099,37.2753429258628,41.1833236111698,21.7240472236266,26.8859671905145,25.0975051011869,25.8234058911424,30.7201764981021,22.4253456472758,30.350528943025,18.9063094126577,-4.96290104853732,-37.3287210250515,-42.6383067471556,-49.3451270707494,-41.756766444859,-39.8852761620985,-54.3525557607305,-32.963217829396,-66.4028273424335,-34.517858387991,-30.873978587147,-39.0367711412491,-29.8335399047769,-28.754844784644,-23.2289011847821,-25.2130338378065,-28.6215447852821,-22.9602439955002,-29.7061656342102,-25.6312632920744,-33.2749359781929,-20.9337122869646,-24.5425690043387,-22.3219058789819,-17.7517057716848,-18.8009280293093,-23.9631530003322,-20.2370285352231,-21.3860858441013,-16.7884003941289,-19.4293742882655,-21.3076440774828,-17.13046620538,-13.7772790500509,-15.1979020563188,-26.5496098753757,-22.866381694687,-17.021489391873,-18.5053463885637,-15.3881424180327,-16.0154102200699,-10.2597101604547,-20.2937871804138,-18.2709526919897,-12.0982511404732,-9.89695433106006,-12.3521502891329,-10.5945602794828,-6.82432353326678,-8.10764529714105,-5.95653264029985,-7.7568015201075,-7.70821184239143,-9.95848564706716,-7.45440419275741,-3.71593548705301,-56.2308914932293,-59.8033542048388,-50.0438996613707,-49.9436013987652,-45.7775444005616,-40.7947912990486,-58.1573504012189,-49.8707088806257,-43.7787930252258,-43.4846631874982,-48.0045726718345,-55.7266632983449,-48.7789064965392,-36.3382653984418,-39.0719126420747,-47.3115769642853,-39.4730187481312,-38.4929309157294,-52.7418694124083,-57.9787081127752,-43.1494611577266,-71.9345381183071,-45.9936443489918,-65.0930389193937,-52.3658943558392,-391.858003604182,-52.8741388275141,45.3872576369468,39.7604827973192,36.0172319600725,52.642674278347,58.6571492307177,30.9440151335762,36.0654790606021,45.288204031972,41.5759924953326,43.0966603830724,38.2178813242458,40.8521770158792,43.919185835355,34.7524278230272,15.4581071355752,22.8925505434122,13.1169557528744,22.7322095829756,-7.24712891098986,-4.20691168844807,-6.80352674018492,-5.04753036071495,-0.935344017110815,-3.11931933454675,-1.6796738757122,-2.86100890760469,-0.683411792868667,-4.32986862176393,3.23744318727327,1.08435037557201,1.04927108729362,2.82770701388109,1.84257323559822,1.2775820731688,5.84386565754606,0.300674930294467,2.18188031244949,-1.89265594387074,2.25876679985554,5.21294697581754,0.222469652023473,0.297743746036746,-0.535115497308036,-2.13779002019726,-1.07856370214102,-1.4105457307183,-3.84241450678732,-3.89481059307367,-58.8826397716174,-66.130179340068,-30.2882987902586,-31.0334503390039,-33.899254021236,-30.0139626593174,-33.6146197224722,-40.2770462956701,-26.9496148698155,-24.0363564419501,-27.6496175970709,-24.3108320045078,-28.4538065968332,-32.0006541772566,-21.3279094455616,-11.3707408427078,-13.8920854405851,-14.6463264123346,-12.8303379607789,-13.9617056352801,-12.0485537532454,-16.4038538264401,-16.0294619765198,-18.4779739593818,-18.9499533480667,-16.5068744116809,-17.2024641041004,-13.3758654684724,-19.8602039433511,-35.7093013974022,-31.9795083461362,-66.9417882956721,-42.1531260782091,-50.1744124752401,-94.3506973811037,-61.0597986046893,-63.2874752818127,-55.432988514308,-66.6439558995036,-48.9480536560011,27.6031980859008,24.0021225806971,25.8127460553442,28.9176872731792,21.9739687260253,29.1484599733191,33.1328449906496,27.0177301987129,27.5640973825037,24.0626352432503,24.0393470221341,20.9243106999342,17.0212714844216,48.0922624274666,51.3801899838469,37.7262727563398,28.521995606764,17.3979950992719,12.7635760011303,15.8482099594038,-8.7239679178546,-5.23724078681917,-43.874590594143,-42.1556593305729,-50.5231394894506,-59.2633228206831,-39.056510229567,-33.9628708048523,-36.30295827356,-9.48786734147799,-8.87338717711299,-36.2301548141015,33.4754075392605,30.7756691210356,31.1494863550439,22.0745945285661,16.9437572397614,18.0781498341375,52.9478727416015,61.9258132593261,43.2681898186823,47.4183332657512,39.4275902613971,34.999463426707,34.2549401083426,37.9159579881455,42.8167590504616,38.7877231925407,34.2031971739692,35.5512176105387,28.8294994457316,31.731465267232,29.495548999534,16.5506928151863,11.8173692801611,-36.1678262037547,-45.4286668920132,-46.6717857148338,-44.6811252523273,-54.4036084139741,-54.959288013072,-59.9079916974075,-34.4142210196931,-41.2348418158618,33.1617022737705,23.5506006227011,27.1085936814145,20.5090784616721,19.226831282817,19.2019534984356,21.0934232561702,18.9018052404124,96.139141611617,13.789488433724,14.092070092888,-49.3578305504678,-43.5706537467085,-54.9730334783784,-40.2475804220312,-45.3066258317354,29.7195650378299,22.3899172785408,15.550607973717,18.5545594542813,15.0340702028174,13.1278908479148,11.9278769381562,-38.8341806220185,-38.182192085935,-36.2782386738656,-33.2030804242323,-26.430867993003,-28.9200085472507,-25.3181796810132,-29.8550098486501,-26.6628374137604,-21.0071180783119,-23.7305631920397,-21.8816246455449,-23.0825896879517,-25.2944526656547,-46.8696906969022,23.7018015272858,28.9755010262156,25.8670731040723,10.313588816466,9.77217015795378,-31.5734155685277,-27.1408916525947,-21.8204146470774,-29.4478482799831,26.5654559413388,26.3836865390366,22.6243059976854,19.0585304006166,19.2122215817566,20.4166507217571,21.2520514051581,24.6585263129823,9.60705780345785,12.9073947184541,11.4894641956072,10.5945899435188,7.76657749665092,7.02941366290727,6.22012004905309,4.63948050064956,5.69912181848824,9.17252136494646,3.41950664485718,5.17501117525199,10.4042914768212,7.61928691637435,-22.7223042178047,-28.4695664256871,-25.7486974417252,-32.343985350536,-28.2945048372042,-27.95396207527,-24.3885936254747,-22.4118627052288,-32.8786850565066,-30.8178546211613,-34.0666162466635,13.7339747378823,19.4907600786537,16.3860658323623,17.13255058495,13.880964102618,24.2001816558853,10.5059089049809,7.73812758683596,7.35565536840093,8.29463925037892,10.8260021790391,5.77529263023967,7.28458942006801,-16.7325156221498,-36.2095764729863,16.1034025825033,14.8032299903081,13.6132638602921,16.1382060412069,18.6326666780677,18.8444029253378,19.0879619918367,21.5682799169344,24.3695634720333,21.6815977922496,16.4738279913047,14.7929922542315,13.5167039825834,16.3118677823371,19.020399946248,16.7644814141873,15.0095510155703,14.4242567525996,11.7970453701067,11.4897152285355,9.85380170279468,7.36205529279121,7.74282619843968,4.75654952074795,-19.9135039175643,27.1948910950022,12.027435773541,19.5817881954862,21.8290099869476,15.7555604518376,12.6837463947093,12.3982298986794,-19.3884975871125,-16.9878727757091,24.9216691634156,28.1395144221298,11.2853997515013,7.50148179066457,9.02512123147516,9.67622860743369,8.89455749756221,9.50691586179857,13.097394371611,20.3654548902718,-19.8634704701474,-16.7067699969447,-15.7593991357743,-17.7999969956044,-17.4793993513678,-15.6778346826482,-12.6029990491998,-14.2150891316665,-19.8668886342307,-10.5162948173001,-15.0720359218352,-12.2075812818178,-7.93039489208514,-13.0505606354077,-9.73434689101275,-11.6468136260198,-14.035369529254,-6.48709033190392,-11.5479622128657,-8.73178507355389,-15.4092535739126,-8.66075536304093,-15.1992439571874,-13.061572116805,-19.7536599167093,-10.1870084271873,-17.5093340247273,-20.2744171489961,-12.991314767595,-11.0326087857108,-8.2766858091711,-19.401125286317,26.8198197206491,31.1528305031484,31.1985955491954,11.117675547511,20.1933799051996,-22.4317266325387,-23.0144036656529,-18.627273962964,-16.001636266137,-13.458824217429,-13.6867784813696,-14.5659404750119,-9.12155771363093,-12.9016153354897,-11.4030040914911,-11.5517655628068,-10.398526063527,-10.134486699718,-11.5977588926853,-9.08893360334094,-6.31286842075506,-6.78779486565992,-12.1693018554389,-6.43849982691193,-17.144852682944,13.414235877155,12.4798589443826,11.8095598326641,14.8479628186278,10.0883563848031,12.4316623426254,10.2861960167748,10.8616696779875,13.1909826993541,6.15050854844829,8.33914741559268,6.64688790400613,7.84950839632851,8.22014292746347,6.58834536670288,24.9883442913996,18.1970292007197,-27.1086239323872,-22.446006289794,-20.2702319157502,-25.4620996493612,-14.4032158832687,-10.2392885703435,-6.03617561124967,-16.4977150759341,-11.5887957332342,-7.04510739828184,-13.9441734694899,-9.68672450329337,-16.5378237673189,-15.0176162718297,-8.19048000524556,-8.92695258934813,-15.688029779152,-18.4431431208836,-7.99652189333646,-10.3196787130798,-21.2264398378137,-5.8152812467016,-12.7027359427562,-18.553512084062,-21.0311748172698,-5.01049471583829,10.8090534711572,8.85493664299539,6.77371664190815,3.19875235667745,5.22512632176662,-1.98547636903636,22.4936950074201,25.1365957039403,24.8277156069142,30.5206855244358,28.8058309468522,27.2333847746389,28.4150593565056,29.4256950865416,36.4502401821328,34.2259542132435,36.6963461836381,32.3773096870378,39.1418849600786,33.2332693693683,33.9331816789679,35.6590448778134,39.0049030632159,31.1096579765509,29.4786003701057,22.3308565938189,24.7062514796034,17.4184104664164,16.5014483640097,-29.0370879590057,-32.0581376630537,-33.5752771523428,-32.0351442047489,-7.21882491575998,-4.23069146098565,-8.59400534659336,-4.91753821314705,-3.48303282023505,-7.49372260254872,-5.18331814856599,-2.12361204443423,-3.30337352365862,-0.448636754401238,-4.78491051276114,-17.3456035640813,-18.6775855766922,-27.7450839743044,-21.4489158610512,-6.23052399430901,-4.12113080931245,-3.00642125650205,-1.31351273375492,-2.8726164107677,-1.59517486711904,-3.42994414500978,4.10002753098323,5.29714493129904,4.08412960034877,1.15973003817329,6.32422746166392,3.9517510743535,-4.48334761806952,27.4896782116808,25.7178854409936,36.7307379301959,18.3205759076975,21.1041253663696,15.3466037386021,19.525431981793,20.3664401869591,18.8665199761804,16.296983062882,16.0178984588271,12.6485683258297,14.1868766232246,11.4787142113291,11.5653747011916,13.5454669167798,-29.79783912678,-4.44016114862681,-9.85576395894058,-0.832868367971578,-24.1736312671299,-22.1254988641386,-27.7012891035575,-25.2992344729005,-24.935466922867,-25.0465421239274,-4.83305632191876,-3.12736576021335,-0.928518689967445,5.37768994129174,4.10982298870777,5.48076683989079,1.18094517582381,3.54209938737741,2.93856805630405,0.00122496038374724,1.3583186519033,-0.961529732248363,2.07393440125431,-3.1931958750742,34.4774851607239,15.7111595515611,-27.429306471499,-2.15212869807872,7.17806164223443,0,-0.0514859182135475,-2.10999425123355,1.24291035140243,2.03357452314897,0.887752211234017,-3.81799850689115,2.50889819928158,0.234719478392991,36.7506002955621,49.2165525816959,40.6438285405877,50.5693450477627,38.831625524118,49.5117172422262,52.792956919688,49.2478940825908,45.1279562938481,49.9298929666607,39.6781367649439,30.1410713564585,-26.7868879052588,9.38869123256115,8.22283987012946,8.34779762703063,8.30177760575291,10.4869006487466,3.91277526460631,13.6556780534449,6.17094315273488,11.2348327645963,3.18004567042342,10.1629519875467,8.15262132521081,3.91554393572959,1.76726970649958,5.16085280117434,4.16130747075199,6.36215546895725,6.39845490362811,4.58062944114743,-2.74927072856437,0.574030927379148,0.0409395301220133,-0.797251595267292,1.9753968890271,-2.84377691969018,-6.24654375804299,-2.13927553784748,-3.65281617611638,-5.53077140676653,-5.62661486991561,-7.62714902630821,69.2433794910825,61.964898875607,64.6572047711159,28.8379076682257,32.5241997851477,32.9084699294142,-23.1198259975649,-35.0045583677104,10.1750788582366,-0.194785854284677,1.15864151590614,-0.00928049890918579,2.135245989307,4.25654113937389,3.62697910506599,6.07316923016922,1.65504670716996,2.39641544909673,0.885920556019946,-5.19089235610159,-7.28103644965057,-4.51987164696126,-7.96772946784947,-9.23118809224219,-11.6372185987038,42.5017721826172,-19.4675752608141,-31.0766184083212,6.58546021704548,6.03587036264463,-10.8795445506739,-10.8722933765724,-23.091293279285,-30.7413745932879,-33.9630542865643,-30.1010930329755,-25.624084211353,-40.2262800776346,-22.6639450971249,-25.438882134042,-37.6039823434212,-35.0817943493944,-19.6516568704343,-42.0083484709797,-38.1224897112298,-18.1362390271938,-19.3402287677628,-15.3269302785663,-22.0902138691209,-37.0753418125586,3.30757406226588,10.8036165068329,-27.7719370419024,-33.0619628469136,-23.3529100138553,-33.2169549935694,-37.4933981203948,-31.6412288861781,-41.2829776393278,-31.144030121675,-27.5240026797956,-53.0311841476345,-47.1090410825942,-51.4929262947422,-42.9306020168225,-0.250033457233525,8.746170489364,4.39067072155137,-31.6126723021762,-25.7837642115529,-80.1888653325757,-60.6258560052376,1.22156443625742,2.13772602890177,-0.926437021299972,4.48104354392378,-1.18553140830703,-0.369730370741699,2.03467082346967,-3.65431579960046,2.18484925238791,2.69634737956558,7.16062819068258,0.304912649883492,4.82276333257831,-2.04403562881157,4.88980709217626,-4.02864668960147,0.131460607275342,4.13659975650903,1.72120709049533,-1.86171283850535,-3.87391843170851,-2.50704104590727,-6.04121533952828,10.1204040446191,14.6314662676001,12.4423010345339,14.6469232121494,12.1763558039644,15.6512761631666,13.4731461331506,12.9228767738528,11.3323935084261,14.3240432762345,18.612305848466,16.071796644571,17.9279861447005,15.1742092584085,10.1384130244978,12.9973107566457,11.938437008389,8.58451643279747,14.0287634727578,17.5766933146917,14.9630383396798,12.7688291838368,-21.8999691956364,-35.0568930259761,-46.109275882742,-65.3312072758924,-46.9124421954147,-40.0424757196623,-50.4366846155157,-39.4245550464855,-43.1586377518609,-42.276547159038,-43.8782434472415,-51.8561357105948,3.00181739392356,-6.130694887973,-7.79205456618276,12.6998685790159,16.1617398757486,7.75072704859345,6.46348967648178,7.97071940698169,-22.3111057672664,-31.1657480556134,-25.1029421981102,-33.7409581079641,-26.6333452214386,-23.1890426971786,-34.8470417107345,-54.6392199962465,3.37812991957563,-6.23661522167983,-8.54941086491076,-5.28773497982336,19.3299795349322,20.1954347962063,-17.5619801141257,-25.3041329097782,8.08398434967869,-1.98652436721372,-8.12182946232139,-5.10704350357344,-12.4895938858173,-10.851821629076,-10.5909236314741,-13.1482423767562,-14.4812591305372,-13.7382982606181,-6.61486466889772,18.1242093415985,24.0663704694112,17.5818969680479,-19.7269164782086,-21.9377707872194,5.86046076394041,8.27112015980952,5.94169725117201,9.04984360106363,7.94123291029353,6.98848932351367,11.4814909016303,7.68979331307817,9.36077489227251,2.10185917561311,3.97169951072974,0.157267951495499,0.558634316211943,1.38915553380848,-1.88430665039498,-6.65845411311994,-5.16824329404932,-5.11474551150067,-5.6976861120762,-9.40582399233026,-16.6688928055977,-16.1652879034118,21.6867339804467,22.274285364112,22.4295149344011,17.4559019388368,15.2092675911293,20.802686287946,16.0763436657845,20.1708767756195,18.335922037123,21.162344775252,23.970381193874,17.6604798211944,24.4867875921261,27.1446042680382,22.4554350397587,23.9169182925027,24.8534256944257,22.3877339865686,24.0056956404077,27.7172738609484,32.8940431558311,31.158151731902,29.5801399505313,11.1329394344637,6.52863225902552,-14.1994912504307,-10.2701876203115,27.7539856450159,20.8154334167973,24.0908014494962,18.5747289869851,20.1332429035724,37.8685347096121,26.1101575965002,6.79510174434178,-12.1091164744594,-12.3439578979032,-17.3227956892145,-14.7446057315714,-21.7623931491063,-15.4850305245179,-15.2557845966958,-24.6734519273455,-13.906797033203,-9.74018238466539,-7.4853264676184,25.1609798915592,27.3162795448351,26.2303062770973,30.7305802427313,18.7835006271595,29.994505998685,31.9500345918072,32.6767597161724,33.7077826917151,38.3607120051875,41.4210661441381,43.9350317492476,30.2996976643248,39.782662972498,-12.1443337484364,-8.91453485144528,30.2997574178165,32.514956425373,28.3745776190566,26.6000068967074,20.611964489379,23.9998407569894,17.4707739720336,28.3415925542628,28.9763811507538,17.615324066229,18.8929275226554,16.2785629448518,28.5976445408423,15.6079842868077,12.770772061434,64.1356633405773,33.428398654148,42.9496575736171,38.0540654482102,28.6018547446857,37.2059411155022,37.4214749489915,12.6518552064162,42.7161946938034,45.4999820993676,36.1734313267986,47.392663062209,33.3519297277366,36.0656495325633,43.9723220212262,43.9125231139093,42.8188690995609,45.8168127583865,35.9210342097198,40.4519193213261,46.0056600293541,47.3014329477439,46.0057201281818,57.9691233282683,71.0326224112736,69.381137205036,50.2295936344581,51.1231872737912,44.7880987453273,55.7866901372913,33.1783039867277,46.4928265077405,51.9254733971209,338.191578128701,345.865120767118,318.778915885618,329.149891943769,323.505582666124,279.641146807831,315.220304357757,235.012759489743,250.870663987506,185.179618057374,225.984366366204,120.265835977642,110.855280339741,54.6529806573728,90.3507744290004,-12.1653142386129,-82.4600138602654,-149.512937680716,-206.081290185496,-257.63146891274,-258.175988666472,-301.650417421448,-237.906105762987,-298.977078110727,-279.991088619343,-302.149799805039,-333.167299492114,-344.617084853112,70.3256407691156,53.7929821638961,72.4821585238426,72.9811970373474,66.3978552812979,52.9607599435534,72.3481288750154,53.5334340612212,56.857803856338,49.4621835747049,45.2863037066512,47.8177538771806,48.698306061798,49.022373363769,53.1059074530278,42.7746121965804,53.8387140025817,59.3558405736641,42.4590448024504,41.8536216556955,44.4408101610167,40.6710735575024,38.3824854238698,12.0640244876862,54.8291395975935,8.45898817094556,25.571244573208,-0.819712554702999,-1.58370377444371,-47.0877317693152,-330.253502777131,-0.513712230359706,-4.91662199224599,8.09809305162964,1.9984501278557,11.6093130148628,13.8246049065596,14.0928726948842,24.0183480692793,11.9901934729285,10.7731845951446,7.93040320616246,28.6578580266123,-4.54409379059718,-0.350401716019888,-2.7412941794051,-2.98007871715981,-12.546427160455,-8.12071028327179,-5.04681498975722,-5.15201019194654,-7.32905792449748,-10.1717651856282,-2.23089017680319,-6.5383677416636,-9.74213722194145,-3.65327737242584,1.21870773550007,-1.69685967331794,-1.10527700761341,-1.47887462558842,0.474184234313806,2.05647372601429,3.57312211903237,2.72504374434222,3.86566877462192,4.42238985551022,0.387993635985559,5.36638479527575,5.29283894178461,9.32792323506168,11.7160334749473,9.30140759184224,8.23278104274584,6.77772143218166,-9.96115828432445,-25.6067144604772,-49.6604836107273,-70.1908003236874,67.2707312639211,40.2580805282078,-2.98225921056786,-14.2411066181935,-43.4413992743331,-59.0610537738302,-56.6423434843938,-85.4976298128644,-65.85874280293,-52.7851724685217,32.5185649549803,-70.6334593810387,-59.3353040910568,-95.3661326512225,22.9586526194329,-24.6174909778536,-36.3942726171397,-39.6040665609173,-37.9240773061624,-38.3375314883506,-43.9958464127199,-49.0030763761591,-50.5247452740366,4.149048686223,3.16593781795412,5.0267619935957,2.62288240166831,1.38580271574857,16.4522981392651,-9.21242903672842,10.1535494294692,-13.4283186275649,34.125398940786,-6.49160530992162,5.57693562360455,22.1818188811675,23.9139080916655,0.136695918142738,-1.02483181150736,0.390227826714935,43.4500369065847,44.187339189033,61.1400959435692,14.1996950137658,8.5812011139127,87.0592931862425,0.907966876891126,-44.3258817251252,-51.1477852903508,-47.5364455539763,-60.8216296081225,-16.4588738941983,-2.1713303904294,-36.3461836231114,-47.2503305405767,-36.5811798666425,-33.3375985627181,-36.9813089113924,-31.4277613276653,-30.9122038999873,-32.9000370792007,-28.3606761094442,5.66896962235472,10.7814823209289,10.3290653645172,3.61500443360273,1.04206063911605,-8.56293651767056,-3.47013460852419,-3.65770021626279,22.9916923581349,-8.53904112959851,-8.71302363890373,-11.6112346336698,-15.3503491019074,-7.9603172015046,-4.8909476788318,30.3764001510527,10.669906862987,29.0816084899646,17.5659931518507,47.1547108558594,41.2878557380907,82.5556984518289,53.9567183291243,65.9110567845918,53.6354666276349,71.3879282002549,89.274991428752,62.8790244510563,54.0234920680464,70.3179505727318,50.6307356759702,74.1278940368625,95.2902399067182,68.8308584799768,51.3714087184425,56.1444372863434,54.5869870914579,60.8225590283669,55.1410700951657,58.6543051049047,39.9041169444511,36.0938566839944,45.0821932547124,38.7040600778404,15.7301542100958,-6.84440402818401,39.5971231131536,-1.02109810133722,46.6314021754194,48.5660787278345,-29.038356964445,0.800460568553825,-10.5513378758011,1.84949040257273,-13.2520037629417,4.31477817254908,-12.5352536033847,-0.121150919911905,-10.4909321149379,-8.27734644205292,-16.3392793646006,-7.66546429922904,-15.999471184889,-7.62635766052261,-28.5825882043146,-12.3466972921379,-24.9414131634389,-12.828485849824,-22.8472999758339,-13.2647524051431,-24.9902532508164,-24.2017520309237,-26.074371395181,-20.2487705489151,-27.1523306219192,-21.7762965391354,-38.8979552836397,-23.9367271747001,-31.390916900885,-26.9082435860308,-27.9560541613001,-24.227361676932,-32.54086202477,-32.1341057311092,-31.3080170444324,-23.2688559785776,-25.8869793939772,-29.0086631799579,-30.7930268587783,-34.2023891969647,-31.9914168002959,-26.920780602916,-30.3845812700311,-34.4001487062949,-34.6510560913375,-33.9608296453332,-34.2092685526745,-26.6847186622025,-29.6133625750384,-24.9342450711559,-27.888753906146,-32.7479435636582,-27.7090209262177,-25.6958126476707,-19.2805474022129,-29.2359690798129,-26.8335979617021,-27.0988343000846,-27.7323380367824,-16.3607501447471,-25.4987944882858,-23.0610975159635,-20.064354156963,-24.5566840276584,-13.0895623116246,-21.4474763641169,-19.1954263427362,-11.0183371795652,-20.5787841320516,-8.95352261594353,-14.6502348304963,-12.4711797087306,-5.91723613406228,-11.2510172793569,-0.831968279022305,-11.7402398071137,-5.76582279727706,1.76295540098519,-6.05147100314278,3.60718334015076,-5.56467752241289,0.73310196487679,8.4575381780249,1.61704904617976,9.57297378272145,0.307950152419276,7.79035443249891,15.8886716353381,6.52747098054415,13.6537110721114,6.72417110426588,14.7089189529481,21.2873529829264,8.0691395049226,15.9629835590819,13.5686748059377,19.6480064175009,27.6739443600883,18.3652085621101,21.7194924647661,17.7989297508271,25.8879533763561,28.9527402188412,29.8064663184761,29.5579046042956,18.7297718632806,30.5611268980176,33.0946175480221,28.3351666048347,28.2235964409417,25.8216252048869,34.1347306593336,32.639386442717,26.9679638095467,27.9561831276834,28.6152996029401,34.6296497946091,34.2124328217265,31.7380744576279,30.6553664532573,34.3412667920403,30.2728038073991,23.1932748904682,37.6461580323762,41.6162373152067,20.8280273446155,24.0353637797496,29.0330121848849,24.2866654844524,29.0064398988401,29.0962795811028,30.6070037233767,23.5017942474539,23.5570479756363,19.0963190765046,25.8925585953356,22.0175144937798,27.4928264754644,16.4361460298307,23.3903840468905,19.2727323365412,26.7951208669807,15.451465027125,21.0072307351368,8.12014462557985,27.7519663437666,10.7600095927889,21.4567593792092,5.96612919531509,14.9443954294173,0.717458682688414,19.5632601283874,3.30232674694198,12.6869129714266,4.99023231005623,4.85848446022876,5.6379000300247,300.677260289349,303.564688445506,46.0723634030415,290.362532120523,293.801103024899,238.056585005728,264.314642661341,26.1394830264098,319.203381930211,43.5843913676793,351.356698749369,44.190804737036,285.015429653651,298.355050452065,225.491898056891,288.467934736831,60.1095289217256,324.236914256841,317.57452017905,380.773292840591,48.3072718249355,260.546168153775,194.648049430652,252.320639602197,251.630799319792,276.539760739451,295.237688632041,42.1334594294567,219.058828196003,216.791382505265,163.669240782922,197.847193208669,44.529565722682,271.251619264621,242.269345408681,370.056428133354,391.78099867398,30.9508170472696,150.086516002475,65.0574938561026,128.950075564954,154.466642403758,240.984838237427,168.742425981064,123.996041262562,20.4693785720235,62.2144646869518,109.85250043444,12.2610931666918,62.4290304803806,17.0570544315896,161.529042054759,97.5330269360895,282.028456647044,13.0613037263496,47.4925885472086,-53.415021549841,-6.83110551547316,28.9489583218056,55.9094612545918,23.152794627228,-16.0252047698894,6.82077142213151,-16.5048753068667,-102.065744094128,-90.1846341976646,-5.82172110990992,96.888239372314,-97.5650222665668,-5.87419167444339,-168.410857328535,-80.2048767247175,-129.634207860139,-172.854741866599,-104.191656958993,-121.90856090339,-135.624983442184,-42.5975953825761,-13.6443846621197,-145.517036544973,-204.271267867923,-221.080914086105,-166.693404976514,-211.908453873499,-206.966901050965,-73.0418567782627,-211.546496090306,-25.4108200462266,-293.269449750112,-195.615655900463,-320.432848753715,-226.775139261674,-33.5477585501951,-187.961555245947,-270.433937444796,-168.628472189495,-37.5201045436358,-222.266626266607,-293.555488512766,-281.131100222048,-56.11291134614,-251.663468737447,-293.586483074619,-316.019800764485,-38.3290480006901,-351.146294752072,-277.60214302462,-294.024506319664,-285.706306601074,-308.108991384201,-300.126464631855,-312.673856513034,-47.3984685149986,-305.0769613971,-370.19498651782,-324.748247777612,-333.997665802843,-52.0564144932511,-347.755211127506,31.8418871476815,35.487174378005,51.6574953032095,36.5657232024612,22.9253423452876,19.6247445235513,29.1071530465212,22.1920165843246,17.0660330299226,78.7944427766984,322.364880248104,12.9782315884043,10.5857852435711,25.3004245673495,19.829871844001,7.19741221680118,44.0476044980247,185.700492320241,6.37054764006368,1.3435721198584,13.0431806850128,-10.6766535737991,-14.0800829816027,-17.7986881746146,-62.8353609588771,-4.89203607899378,-23.5295726799395,-36.0470218991615,-159.355307759309,-9.46616791434727,-24.8237891228424,-27.3397889714212,-61.0818978405762,-238.868600744534,-11.9063503425066,-31.0908776934096,-26.4413097965968,-19.464558626888,-48.4213284432653,-23.2791819803957,-34.1537803183283,-30.1965997164813,-28.2903633401683,-38.0873450289479,-89.9247052520486,59.4863877671646,49.3353134398876,38.0111406842584,31.5220357632921,-12.8112766898048,-4.12019590970429,-21.7233560867652,-18.3775972212083,-36.0772265634628,-30.7294744750696,-60.1894212704508,-51.7097196478335,58.4140534711945,52.205009924669,37.5860892319615,26.3844444821001,-5.2602194702967,-20.6575088445381,-33.8649721546286,-46.2292488480681,-64.7355790141209,-46.6747990284793,49.0783876884172,29.9802166278086,-5.09494406877769,-0.864293845878095,-6.8691191945119,-18.3800926474866,-21.1835557748389,-33.4841971616606,-32.6311187785425,55.1319705089119,33.900621642641,-6.84331938673263,-10.2584139792246,-12.3167769988225,-25.2478770306623,-36.1053990378742,58.7777047799792,48.1997132302262,36.4104203037736,27.1172725044223,-13.9760215198903,-24.0751281819224,-24.8018432677974,-39.3156083555417,-36.4864762418352,58.6215671201104,36.4885446574152,-26.3040257303612,49.574817422398,56.6538078311025,68.0325115097277,37.5683194943388,45.9566889891265,33.0682411349712,-28.6984972614273,-30.9782894887943,-27.3374338283439,-56.3248663865384,-99.0613061647837,-54.8796975562615,-1.35279170630664,6.53614214613401,0.800995770330296,3.15792612107719,-0.856430628365753,1.80658458605101,8.84750413622043,6.44528394487405,8.38241601063082,-54.1935460629523,-1.60592360718806,5.96865807299202,15.6496280691305,-20.4667025735774,-37.3220348672863,-8.99462446247788,-5.19447510003419,59.6492686784608,32.3382412051869,-13.6826793918098,-49.2576500976826,-36.8300490668692,36.5318148185972,-18.8451145633535,20.1126379509622,-26.7469214113676,-22.1861007631028,-18.9194285258945,-22.3941167200622,-15.1181755946514,-15.868768952434,-17.0809591119714,-18.5282593893646,-12.3300758865473,-16.0404134628559,-21.9599839780987,-21.4896194429713,-32.2121622359205,-25.2071569335995,-35.3293247784086,-28.3586444615229,-24.4026332315821,-29.8969347439779,-28.378400130367,-67.375429638204,-55.7758482922822,-73.6007063614852,44.0497141661283,36.1352369138215,17.9250113539267,24.7952317884043,-17.0846140354279,-16.9510845569521,-12.86675966051,-8.58146543784692,-15.1676554630989,-13.5869219894119,-12.6865708796483,-9.30033445506454,-10.2308842887908,-39.788030082736,-63.5309703111489,-58.8030930547978,-55.547663863509,-58.285802946131,-43.6817809744397,-70.6567065381288,-47.5399696229022,-48.3335835602835,-46.3367629284441,-45.605402265852,-36.8014544205042,-41.4668026016939,-42.3956439106028,-34.4663302479753,-45.2538164829371,-37.4019846994216,-69.9041335014426,-90.3809046042031,40.9493209374871,38.3166615034494,42.3256005104126,22.3405319476101,27.6323038892602,25.7933268890088,26.5585154782004,31.5908928408543,23.0469287244091,31.1943208207926,19.4410084369751,-5.10198722039989,-38.4035242343788,-43.8400459356083,-50.6223270147236,-42.9904503995504,-40.9961478764534,-55.8301194183444,-33.8780495939184,-68.0565956634144,-35.4875529551626,-31.7461823171195,-40.1244338167613,-30.6842847261468,-29.5627293571225,-23.8733834036416,-25.9261512975607,-29.4132625549356,-23.601492139694,-30.5370582193322,-26.35134380758,-34.211175331243,-21.5243939846343,-25.231044509141,-22.9474805027672,-18.2517183635875,-19.3320106037513,-24.6351637614314,-20.8092938329904,-21.9815559122966,-17.2626090874663,-19.9792592745522,-21.8955813851239,-17.6138694220575,-14.1615853642926,-15.6207427204961,-27.2973165977279,-23.512961499032,-17.4968339551185,-19.0233746778542,-15.822391479463,-16.463857905326,-10.5477980193727,-20.8607571797198,-18.7860240326425,-12.4438018720488,-10.1769727682538,-12.7004754797141,-10.888063121726,-7.01365892734819,-8.34134835986113,-6.12413272237629,-7.97961069210613,-7.92628218977768,-10.2402650338269,-7.663952110235,-3.82382630869526,-57.8335862844383,-61.5622473226604,-51.4636210984168,-51.3655615228702,-47.050167174304,-41.9399058816796,-59.7825136406377,-51.2592012615226,-45.0017952728016,-44.7038732488966,-49.3458041576573,-57.2802819129874,-50.1451931521325,-37.3470525963485,-40.1686749832279,-48.6611455181454,-40.5861153233091,-39.5657253959463,-54.1967222149361,-59.59474316373,-44.3589995261157,-74.6680118029604,-47.7582773901735,-66.8291345645253,-55.3866457631302,-403.430235351917,-54.535491726856,46.6592436993571,40.8662214137554,37.0109071479941,54.0364517446125,60.1313831771735,31.805392980585,37.070402689838,46.4522664483054,42.7394509037027,44.2941106102955,39.2772206061874,41.9976425215692,45.1609295643106,35.728911657097,15.9523634328113,23.5386222099304,13.4827032714202,23.3593948407729,-7.45060316321199,-4.32610027273435,-6.99719731698907,-5.1909721650588,-0.960309220154616,-3.20616611177151,-1.72670348210974,-2.94239035105308,-0.702696549926571,-4.45019207202874,3.32871440488347,1.1141536313971,1.08447899290151,2.90722237357962,1.89419565496589,1.31366012644611,6.0046956111292,0.310357925195816,2.24515090310013,-1.94569210490149,2.31857707988641,5.36259670510558,0.229365231814168,0.304266884944006,-0.549906208040688,-2.19840905951283,-1.11010779851249,-1.45204598065814,-3.95196030195087,-4.0072974113471,-60.4137078996339,-68.1003703404474,-31.1398901379025,-31.8987851614352,-34.8658155636534,-30.8451378311097,-34.5551392522905,-41.384104839274,-27.7099068895847,-24.698948598036,-28.4291030724534,-24.9978777497327,-29.2499291742201,-32.9043972377676,-21.9269872154729,-11.6901575532492,-14.2884025128252,-15.0576660843422,-13.189792413166,-14.3612492203183,-12.3882905648595,-16.8724729844179,-16.4850508391712,-18.9993471166014,-19.4839617631026,-16.9768911404103,-17.6848799151126,-13.7601851374851,-20.4249847572159,-36.7290019152081,-32.861079682958,-68.6630005225225,-43.3301858101602,-51.6048043224477,-96.6002584278655,-62.7713580959762,-64.9792948857139,-57.0008779104323,-68.331665879458,-50.3130599151202,28.3707774964806,24.6746505243979,26.5436833119071,29.7423076188216,22.5842702965166,29.9637687939983,34.0528883794808,27.7683572559222,28.3313904004937,24.7390195585019,24.7190954419078,21.5170226185274,17.4921296459969,49.4556675999486,52.8608205793219,38.7879828971544,29.2501747934535,17.8952961221212,13.1213777188639,16.2896552689899,-8.97216330305444,-5.38521557660941,-45.1262463198048,-43.3349863304326,-51.9437195146383,-61.3737960898082,-40.1453247870409,-34.9122647687102,-37.3106436688184,-9.76035539142713,-9.12800946445042,-37.250499303239,34.4111440429733,31.6373002542067,32.0145183915297,22.6937456033204,17.4211287993548,18.5874780405078,54.4282052801661,63.5995266245654,44.4878654494057,48.7302942020576,40.5356903560959,35.9728540433162,35.2094182010452,38.9779109002893,44.0053195638116,39.8774658324104,35.166377162349,36.5464286443771,29.6390682932019,32.6258755767981,30.3218104953236,17.0109816830352,12.1503077534399,-37.1929176545392,-46.7224845137503,-47.9731582234555,-45.9462560521337,-55.8905296426324,-56.5048962720513,-61.5554180226533,-35.3851802644204,-42.4017217474359,34.0889794513616,24.2176628978299,27.8684739449175,21.0775242311488,19.76843712391,19.7424904630726,21.6894677267875,19.4376991924606,98.3785134650493,14.1738593914456,14.4890874363395,-50.7401615729745,-44.7685323059591,-56.5358123900441,-41.3703336254705,-46.5503951081047,30.5509658676351,23.0073261488393,15.9879137364149,19.0768085966559,15.4569304778794,13.4990401937927,12.2596878850886,-39.9384656058566,-39.2541185582364,-37.2934492361427,-34.1249656168928,-27.1658624670792,-29.740427362717,-26.028632868531,-30.6800153176777,-27.4139261351792,-21.5999660292911,-24.4023796834195,-22.4970241933401,-23.7386683010026,-26.009273717415,-48.150518354195,24.3607945063717,29.7971222369949,26.5900905088811,10.6080536907329,10.0444276550983,-32.4615429545239,-27.9028064916602,-22.4331240975711,-30.2824247449277,27.3160356236956,27.1163414784116,23.2629212591528,19.5853268670671,19.7542319516172,21.0022499127328,21.845790026146,25.3502433729502,9.87331568122632,13.2661507487691,11.8217523613245,10.8847002612889,7.99070843508143,7.22655461195942,6.39874016643333,4.77362222699761,5.85561941711485,9.42858374918497,3.51664622723887,5.3224270202768,10.6996629603498,7.83624712107081,-23.3606016342583,-29.2646003004735,-26.472005358644,-33.2582244033599,-29.0797166573461,-28.736109977113,-25.0794668266161,-23.0455603938223,-33.7976310300247,-31.6837001075418,-35.0052977808846,14.1233246947755,20.0424962902032,16.8472365501029,17.6183672351474,14.2753086886792,24.882942587956,10.8011283491094,7.95989921940605,7.56714272583602,8.52892068854457,11.1324602377699,5.93682702771618,7.48886512550431,-17.2081888519682,-37.2175625583162,16.5609064679728,15.224043687493,13.9984816003344,16.6000338679209,19.1604894442774,19.3742789155381,19.6306677815261,22.1812786524922,25.0552214673888,22.2911254490727,16.9430964073959,15.2150941963716,13.9029648879558,16.7766806152266,19.5502288022657,17.2446064581845,15.4440536435237,14.8329065574179,12.1309832194333,11.8146802558102,10.1312411473677,7.57721820043858,7.96726669963891,4.89304403524271,-20.4759261085836,27.9500462716644,12.3645486042687,20.13521955544,22.4500952865327,16.1933662270113,13.0494415954588,12.7488221278842,-19.9323684523407,-17.468232866113,25.6207293293714,28.9266260714261,11.6125993931165,7.72301019615038,9.28780776512981,9.95945335118301,9.15860689067388,9.78044776224726,13.4753157074138,20.9434291671276,-20.4189592989514,-17.1731528085746,-16.1995332081887,-18.3141363565023,-17.9831589796043,-16.1313662864091,-12.9602542605583,-14.6183003423423,-20.4265230789968,-10.8217454924523,-15.5020150884835,-12.5578043618984,-8.16620851116844,-13.4205579792073,-10.0197322242951,-11.9704203554894,-14.4338506976871,-6.67976987820404,-11.8785225247497,-8.98195444488094,-15.8407613556609,-8.91296349626935,-15.6306039379204,-13.4362468548311,-20.3020605597261,-10.4744522722099,-18.0094307929236,-20.8427318559963,-13.3562427913483,-11.3489061394616,-8.51166335015214,-19.9419812217164,27.574541575568,32.0195383658568,32.084864747051,11.4458372795972,20.7669352657773,-23.0612739822575,-23.6651725657998,-19.1446898194082,-16.4640414380041,-13.8384262471265,-14.0815326342537,-14.9846022480118,-9.39012037977399,-13.276559029568,-11.7325581350095,-11.888016091511,-10.6998933407815,-10.4284822477398,-11.9289028482783,-9.36057748201815,-6.50431179407316,-6.99024335748902,-12.5089148430574,-6.62311138363505,-17.635837337686,13.7979057345852,12.848348149917,12.1520279189271,15.2656817952432,10.3841474132972,12.786185358387,10.5827510843375,11.1734260605684,13.5703103270721,6.34231897114652,8.59251330648477,6.85506159497648,8.0864613695425,8.46339222130388,6.78808567678529,25.6863185242303,18.7054551591302,-27.8768531019637,-23.0864561188807,-20.8535997766159,-26.168027421006,-14.8166345325554,-10.5421549036766,-6.22746211211341,-16.9676177483744,-11.9173988369856,-7.24709420014439,-14.335912773946,-9.96266786608154,-16.9952123135779,-15.4393805531835,-8.42083007061797,-9.17851300324827,-16.131186768174,-18.9590613161022,-8.22630904274565,-10.6057921334091,-21.8182548016399,-5.98246810688646,-13.0572971286799,-19.0720065662923,-21.6210446368039,-5.15060350704453,11.1233196318457,9.11865087762413,6.9786150237772,3.31064423954915,5.37878244270246,-2.04549320654949,23.1244931957175,25.8434396965992,25.5270324986621,31.3660166522013,29.608962301302,28.0021820033116,29.211815959091,30.259451634679,37.4755425704072,35.1661162876479,37.7376826060342,33.2918985756754,40.2135823509482,34.1809637386874,34.8841601748392,36.6442343137609,40.1005609387521,31.9923369321683,30.3042690607911,22.9674702290398,25.4014673437461,17.9145704840071,16.9792842101375,-29.8512804873195,-32.9594601953196,-34.5244148196754,-32.9375087017633,-7.445750681591,-4.37551892785329,-8.8507033149934,-5.0741738912847,-3.61836579677598,-7.72182334335965,-5.34247148318607,-2.19095150552325,-3.42561692940899,-0.477566448929619,-4.92998005713475,-17.8376860710083,-19.2025896823539,-28.5311320356862,-22.0589602811081,-6.40745885631107,-4.24321849104544,-3.09639580029871,-1.34964526410485,-2.95558211146356,-1.64118074188652,-3.52606444690876,4.26059722945328,5.46216570596116,4.22367398446483,1.19722173716458,6.51035824221651,4.0699821951367,-4.61522629296626,28.2634347621584,26.4255506129039,37.742749271523,18.8371770533576,21.7002106888473,15.7807374748495,20.0679659297651,20.9341559862314,19.3917278538334,16.7519246619432,16.4699986022051,13.0101652098339,14.5893678036066,11.8077154963107,11.8961770210797,13.9309317002513,-30.6221161982586,-4.57234864761226,-10.1424433120933,-0.882772349303693,-24.8512910352152,-22.7488634041891,-28.4762185185857,-26.0120071108859,-25.6300522958723,-25.7399931096485,-4.97408132985723,-3.21625450240375,-0.95371952030059,5.54343848066337,4.25780245743584,5.64790553388687,1.24130267130375,3.66466540302395,3.02975530129372,0.00100138378043671,1.39908616193465,-0.990688130582489,2.13271365757089,-3.29567192936677,35.4321574913476,16.1606942925018,-28.1920665139512,-2.21562111075355,7.38423546902074,0,-0.0539689633051669,-2.18475915361553,1.29496273411515,2.09464578248621,0.920740314845181,-3.93439450192843,2.58271284945401,0.243537084006007,37.7742732525513,50.5673641962301,41.8057614358517,51.9658672925358,39.9327312792819,50.8690857175399,54.2814946115436,50.6004552254065,46.3876223842377,51.3637797709116,40.7974654644046,30.9743607656138,-27.5325638139248,9.6566028195108,8.45666328453201,8.58824539494207,8.53918516297429,10.7838020787887,4.02711107483943,14.038471155108,6.34618015909935,11.5524515757605,3.27345178663628,10.4489685521573,8.38415994094483,4.0306123268788,1.81552230130178,5.31302906527385,4.28621823806056,6.54857529555207,6.5920593946039,4.71716377336457,-2.86489548722399,0.609742993171052,0.0423118305931777,-0.821388631729441,2.03304952982641,-2.93092876909376,-6.4273468476716,-2.20524150054794,-3.7573049049542,-5.69260164761802,-5.7897079802916,-7.84387930564713,70.9527294194849,64.0211236340785,66.4193904962934,29.6679217443525,33.4396730388581,33.8329714741674,-23.769289435897,-35.9981392603324,10.4679510651508,-0.200022201768942,1.191840727064,-0.0087690123090139,2.19717932983836,4.37932248323874,3.72965142348001,6.24621283905568,1.70088365028682,2.47588297891273,0.914863893436678,-5.35267298593644,-7.4931260152108,-4.65332455650155,-8.20379165063291,-9.50087613128678,-11.9679157136759,44.4366097540097,-20.0139129722939,-31.9392682383089,6.76953288663392,6.20511848544794,-11.1945063030519,-11.1828566624765,-23.7319565424298,-31.6080797422702,-34.8897217784097,-30.9479269361958,-26.3415902692362,-41.335662710442,-23.3014547448825,-26.1612121957616,-38.6474822382568,-36.0703887340297,-20.200784839936,-43.2121694486412,-39.1908892012426,-18.6347291872539,-19.883486180977,-15.7539261543078,-22.7064555814798,-38.1072726426786,3.40026059986982,11.1061137445037,-28.5628903316417,-33.949899792731,-23.9958479106705,-34.1446093001044,-38.5415672255021,-32.5358791399444,-42.4216869594539,-32.0104569106709,-28.3021499269557,-54.5021590488934,-48.4214376370893,-52.9592903842743,-44.1335000000989,-0.256870992736427,8.99122568308932,4.515233809645,-32.4948835916822,-26.5119872337762,-82.0026809991229,-62.1630099784498,1.25724658222094,2.19662627160356,-0.952482705431354,4.60786118934114,-1.21991003768072,-0.378516728632899,2.0913719695277,-3.75545401974564,2.24665200960779,2.77311706625756,7.36038051436112,0.313356268718458,4.95669010657862,-2.10038691274083,5.02772818175989,-4.1374394526187,0.132601833248301,4.25308084425405,1.76964483714289,-1.91391030698906,-3.98549743747277,-2.57624293119772,-6.20877404887128,10.404180976443,15.0358822858799,12.7940677359832,15.0551746891227,12.521169589232,16.0902661175728,13.849582009055,13.2878162812369,11.6532189003995,14.7234932552015,19.1307991726151,16.5169980486279,18.4221858769838,15.5979031815921,10.4212137614917,13.355754681531,12.2706325233699,8.82303084837591,14.4324540542775,18.0734236982187,15.3773426757779,13.1345832950602,-22.5007482539412,-35.9734538530993,-47.476299706787,-66.8348081803067,-48.2355184689578,-41.1790283472462,-51.8657476357684,-40.503027952468,-44.3761363195718,-43.4635974866159,-45.1178359025444,-53.3170593233708,3.08788164436937,-6.3035974827655,-8.00861147949478,13.0615027107917,16.6224187566666,7.96973511492375,6.64383189066256,8.19857803444697,-22.9374671736427,-32.0097921181202,-25.8430776990137,-34.8767018675868,-27.3053689337042,-23.9049796558112,-35.8519188935066,-56.2030693485454,3.47362451232852,-6.41334473352333,-8.78898689984028,-5.43818051476684,19.8748099332158,20.7669332339918,-18.0496728117904,-25.9540011325644,8.31486629252247,-2.04202290794318,-8.35155336017881,-5.2523097341651,-12.8333265093129,-11.1545349150761,-10.8912055650071,-13.5188236019236,-14.8895175392339,-14.1247429287281,-6.79903305110353,18.6429567113136,24.7443963598604,18.0754759673693,-20.2821259159009,-22.6642003040982,6.02275931346825,8.50334640175883,6.10964717134625,9.29882687924505,8.16222460114275,7.18417023899984,11.7977096944222,7.9179753490457,9.62446990519613,2.16770323686642,4.07579679244046,0.161384093861423,0.57372195140206,1.42480777823575,-1.94007572066621,-6.84337980805506,-5.30915752114842,-5.25709969279694,-5.85848662515885,-9.67178317591451,-17.1442260929098,-16.6219944626985,22.2916209159338,22.9102050363466,23.058378225962,17.9444979523016,15.6445317428981,21.3937296779119,16.5330763130645,20.7301609092498,18.8488606570566,21.7491744789217,24.6505508443319,18.1611409731986,25.1857916437162,27.9094871177513,23.0810909697563,24.5793067151147,25.5574283056913,23.0016676421807,24.6731573769136,28.4936909003612,33.8179463853418,32.0089288986871,30.4609981015831,11.3946684929316,6.71377855553452,-14.5957619528509,-10.5559646485589,28.5289442847471,21.3948938429822,24.7679723746242,19.1051046376975,20.7000168841734,38.9148608827285,26.841795357096,6.99373436082398,-12.4461609553725,-12.6736517369597,-17.8196442833784,-15.1630271753732,-22.3369292855233,-15.9185060981096,-15.7386003629743,-25.2423310215608,-14.5939353238791,-10.017252224021,-7.6954776144597,25.8643439817834,28.088514853472,26.9661575968602,31.5811995417254,19.3121142725921,30.765553889052,32.8428563555937,33.5833139676009,34.6645085587582,39.5641855607152,42.5683948985011,45.0504247422015,31.1262704879797,40.758156851335,-12.4834894973502,-9.16650309535303,31.1426570546574,33.42178654414,29.1677530670727,27.3495592197458,21.1940486851593,24.6970288350166,18.011859157521,29.1730658447181,29.7114885032091,18.109223676602,19.3861805332417,16.7045662214809,29.8327411126648,16.1108775108115,13.1438983498941,65.6571551771953,35.0769811474376,44.5290473836142,39.0798923154241,29.4131775650555,38.2447600462695,38.4645698786998,12.975736867606,43.8229217103316,46.6531019003151,37.1935538778725,48.7053265455647,34.2901699393785,37.1000163559802,45.3200535602662,45.1194155653038,44.0170394816684,47.0866774983899,36.9240710778753,41.5993928451472,47.2726345696642,48.6652655748367,47.3308875442973,59.4390254318853,72.8051610452359,71.0122315348848,51.7038672307141,52.60806693099,46.4568583040312,57.6387255989463,35.1212286569964,47.8256992638808,53.6304275584475,348.14456150265,356.082395707002,328.105570794894,338.821556606934,333.014854552115,287.888582297023,324.389228371122,241.909713466389,258.222331747608,190.629994546674,232.582466145269,123.790775065172,114.097493153543,56.2398979382774,93.0107550419708,-12.5178307608571,-84.903196086093,-153.944735453958,-212.153872844217,-265.207797663105,-265.757230632666,-310.495866653702,-244.818458277042,-307.753227231753,-288.028248518341,-310.903772258405,-342.948692305252,-354.762621638712,72.5503344207754,55.2936186064422,74.3064688728988,74.8823987494647,68.2905821433871,54.4209018171557,74.2976427743121,55.0790163595557,58.4641300599275,50.8291300706167,46.5663196097882,49.1556983420355,50.0196959309562,50.3941395509966,54.6181711668696,43.9720692793565,55.3886893009656,61.1007231535956,43.6482847375268,43.0385451791601,45.6760960756397,41.7958206418334,39.4521297625529,13.904402820066,56.731705876978,9.70363728499204,26.4605597581708,-1.31780547640812,-2.4879658492278,-48.713269605261,-339.90317555936,-0.440324312517608,-5.04106417797725,8.33755194838295,2.29554773931612,11.9830991239004,14.2254580849557,14.4439685502041,24.6265286849966,12.3197611247024,11.0786183503812,8.15914812670334,29.3750516728224,-4.67150113693491,-0.360722623581657,-2.8188644411942,-3.06355604643586,-12.8887862290546,-8.34614609836889,-5.1932699003612,-5.29447273757017,-7.53571126980362,-10.4586535610895,-2.29000369211845,-6.72055120580252,-10.0208121288729,-3.75790694609834,1.25272972755708,-1.74694605116013,-1.13603013151978,-1.51562165465726,0.48637131472969,2.11085984265941,3.66909056748191,2.80034777535181,3.97376876198935,4.54199815195858,0.403478185244486,5.51449649112354,5.44374419028194,9.58481430888149,12.0406443817243,9.56161378403197,8.46426028774556,6.97085263182296,-10.2373645174099,-26.3152081506968,-51.0383392601098,-72.6547179505178,68.974366384826,41.4528641173696,-3.06784356813082,-14.6457966075058,-45.259353389214,-60.6877817646933,-58.2727144804779,-87.4740283015317,-68.3199570238581,-54.4098155177358,33.4319855664622,-72.3544808733805,-61.0581895150666,-97.5834064172142,23.6116758133395,-25.3138691865756,-37.4210656328985,-40.7381773174353,-38.9611725884991,-39.4255571376497,-45.2317718536981,-50.3736726271867,-51.9380601684908,4.26461745064921,3.25910678486123,5.16873530568064,2.70087277081122,1.42544867165545,16.9080004380175,-9.48101239818819,10.4492750022866,-13.811073189093,35.0820711009851,-6.68821509116321,5.73754720343481,22.8105879870225,24.5866290567472,0.140590139169185,-1.0671170870571,0.413581171383987,44.6735310583526,45.4300408180536,62.8485464557783,14.6009192015833,8.83172317093676,89.0256326854655,0.932576239012996,-45.8469869923788,-52.4332997741394,-48.7822452369575,-62.2384753103031,-16.927030681721,-2.23367042444101,-38.2122583662345,-49.3566165134756,-37.5917382798318,-34.297179126958,-38.0187263664393,-32.3111998850557,-31.7713626077509,-33.8290188116368,-29.1582467277193,5.82846933540604,11.0741112097193,10.6195547339206,3.74843345012596,1.06649008535126,-8.79183716146728,-3.56194854402944,-3.77027315931926,23.6308656518525,-8.78870628491741,-8.94029181874439,-11.9512015596828,-15.7265711843594,-8.28278636413668,-5.1093792900132,31.2266704004735,11.2408683626234,29.766810190612,18.2558273846422,48.3732957376949,42.4493786952596,84.8572927218966,56.0426436530783,68.3374410309313,55.2295217534999,73.2150080713963,91.4735523757024,64.580612943243,55.5256505043901,72.4620150198772,52.0410223256091,75.9483149763498,97.5730699444432,70.621766360735,52.8561998629662,57.7407396569248,56.1032667739538,62.637904959842,56.7529428151335,60.3415976497218,41.028193069706,37.1055683629313,46.3365402302467,39.7893123228147,16.1726382355607,-7.03492810355349,40.7215580094611,-1.04535318734699,47.944119202731,49.9224956337276,-30.3689528631949,0.843492593858386,-10.7132496437961,1.94718971330986,-13.5008221573769,4.44811878098383,-12.7494516536967,-0.0727257122357813,-10.6358206658582,-8.3482219056971,-16.5426656253238,-7.68766668221355,-16.2525795621262,-7.66152904045854,-28.9631469601354,-12.4273236256549,-25.3194851373347,-12.9259553083525,-23.157803698297,-13.3646067848855,-25.2678092347697,-24.4762000432037,-26.355649571399,-20.4274127793559,-27.5174268333171,-21.976622040047,-39.3830945136548,-24.1819610677163,-31.8267917507778,-27.2116147066991,-28.2920085785593,-24.4527747837375,-32.8897775719583,-32.5096857465215,-31.6401660532829,-23.5067614850622,-26.1781394282548,-29.2986786411809,-31.150082427431,-34.5731575638864,-32.3752278753228,-27.2025926286501,-30.6941660559664,-34.8135432313839,-35.0245894748261,-34.3189227786455,-34.6223695278584,-26.9390112008663,-29.9588746180092,-25.1986367231782,-28.1780198642753,-33.1329890616927,-27.9795212846955,-26.0210069957027,-19.4450865833541,-29.5629102059008,-27.1520325422743,-27.3949872271836,-28.1368173167242,-16.4848643831181,-25.7808151710547,-23.3380502520544,-20.2543231130642,-24.9302331488336,-13.1732072941088,-21.6899643581326,-19.4300960038205,-11.1010151719381,-20.8984842502153,-9.00018222217482,-14.830915827164,-12.6235860668225,-5.94192242571536,-11.4601074354872,-0.771354699146573,-11.8947576261569,-5.83551473594218,1.82158879946811,-6.19563139752254,3.71763276915694,-5.66131264858759,0.734174751834105,8.59545207809814,1.562207735869,9.74645093060841,0.273853919497896,7.87948618213327,16.106822790537,6.53833798803813,13.8628839834421,6.76102313616804,14.8857048379014,21.5484519432233,8.10519552827168,16.1870045392126,13.6825737296335,19.8737695802255,28.0159428312977,18.5316929273809,22.0005514044148,17.9496596506024,26.192808689251,29.2809367550642,30.1258667062624,29.9493704310952,18.8928283873037,30.9205250469447,33.4602235877867,28.6413820334347,28.5577600748543,26.0578419542403,34.5438944466794,32.9804884984661,27.2603574125457,28.2688829833453,28.8971099708795,35.0466561696582,34.5734951069206,32.0713903148823,31.0019029430814,34.7072328796561,30.6367438291528,23.4342290452396,38.1215063408382,42.1001930030954,21.039151793022,24.2665474530392,29.379200104729,24.5259823030411,29.313043767477,29.3895026269986,30.9763317357821,23.7190213218703,23.8455318968903,19.2651045645177,26.1841919929049,22.2317569631466,27.8381098973266,16.5620628434322,23.698787188413,19.453975578082,27.115456235749,15.5911525929876,21.3244347012882,8.16107993570676,28.1800993265137,10.8208215326025,21.7297979486749,5.98936848144947,15.1973049741507,0.657546697444694,19.8954226968515,3.27096689605059,12.8516165992737,5.0522443238349,4.91541685970504,5.68093088838658,304.652655751155,307.622043477011,47.5404372770812,294.001805031058,297.569130112331,241.151913464293,267.76962530798,27.7151608245676,323.173569460301,44.8287249852917,356.168621229047,45.7492864294671,288.777846385229,302.116971546728,228.575221635068,292.368092471252,61.6591071741457,328.344792997757,321.58531469112,385.920781617404,49.4760777403568,263.778818733615,197.335706327186,255.756636109264,255.183971281427,279.983290250025,299.426004308648,43.3217833725353,222.108762905468,219.470302897866,165.883850828755,200.510356543865,45.5767315722059,274.606253907758,245.528132545324,375.006068788231,397.135070049271,31.6423219194739,152.032570185996,65.9364606078591,130.732667427613,156.653007744573,244.208803500128,170.848075679332,125.701204549148,21.0046857576958,63.0959988494105,111.222577813928,12.4338798518774,63.2471849313124,17.4186753830823,163.537504829393,98.842449843184,285.877955066516,13.3750052048604,48.0876573129095,-54.131375664863,-6.89565742215207,29.3565211351687,56.659440565769,23.4293471938077,-16.2232933100463,6.80515810213378,-16.7114422470883,-103.426716345919,-91.4540564033508,-5.97762688529424,98.210529428661,-98.8944843064332,-6.16065319721825,-170.690339786541,-81.2190296142161,-131.339949814346,-175.271406928835,-105.657312493752,-123.542921470122,-137.430946748593,-43.1905711728878,-14.2128537725811,-147.363294091397,-206.996882368583,-224.081137920007,-169.04226745048,-214.743028632265,-209.727547233972,-74.0520724416229,-214.324729877136,-26.3489820651251,-297.25675737874,-198.061278881119,-324.786419017286,-229.729752443129,-34.5338055081872,-190.291158772579,-274.072117950975,-170.940840893488,-38.7198305111945,-225.140900127322,-297.497600292113,-284.859757722066,-57.6275124756081,-254.839590591797,-297.31304218691,-320.281356814939,-39.7787814489386,-355.838501291298,-281.056541455677,-297.901529615703,-289.484406298173,-312.164059049556,-303.953604503329,-316.582459883738,-48.945593886242,-308.896410859584,-375.18305227862,-328.944875014279,-338.345089371851,-53.4235963790379,-352.460863441266,32.8119208122322,36.5479462030882,52.6816267083181,37.4432204189167,23.9422449515426,20.4041966438006,30.0638634580693,22.8698485956732,17.8958362988688,79.5719384225186,326.841959973075,13.9985495386825,11.0965441153557,26.0016120599024,20.2205645383046,7.50229160677015,44.4868269256219,188.276888381179,6.94803570910549,1.51663763125457,13.3927513175467,-10.8396504539331,-14.3484332445944,-17.9697911679818,-63.7022047337121,-5.08887108860987,-23.9345025177624,-36.3683370086065,-161.579933077005,-9.98125421365561,-25.4256110812614,-28.1524630567555,-61.6674135131197,-242.190503771675,-12.6866903522195,-31.8598244445303,-27.3375222538556,-20.1394995304476,-49.2534319955083,-24.2784048106396,-35.1205410804601,-31.1983304639548,-29.3749491550115,-39.1212937836171,-90.6208575143265,60.4141618589052,50.3777958512347,38.6069917574168,32.1295064842171,-12.9245572427536,-4.315141523047,-22.0596291065764,-18.8892248586096,-36.6399261517053,-31.4953398805465,-61.1773963434902,-53.098578960543,59.201650983833,52.7139277921619,38.0855394918685,26.6621903506401,-5.30634648038542,-20.9514956741944,-34.3386455523177,-46.6788609858931,-65.6164146418974,-48.1118209909888,49.5901045890089,30.2902367193271,-5.12784692626389,-0.916542536128573,-6.94998102636069,-18.5494859932138,-21.4172015113077,-33.7811597251181,-32.9760291379853,55.7404014556435,34.278975182662,-6.94047226949837,-10.3658512944834,-12.439769130443,-25.4872223936578,-36.4991867091942,59.272012003635,48.7337424730442,36.7126197826176,27.4129998134034,-14.1264150551701,-24.2825086581231,-25.0744823060464,-39.6503444483839,-36.8815442897305,59.169578337979,36.8445997959027,-26.5767254596505,50.1067646920452,57.1970384792084,68.9533858072231,37.9298473015212,46.6082728987458,33.4225935942037,-29.0309540275698,-31.2831792038344,-27.6101324188534,-56.8928998659673,-99.9425615286032,-55.455737483236,-1.37695994485709,6.59980583805838,0.803885327583915,3.19172802347983,-0.870420077082365,1.82390913448665,8.92565652987978,6.51059124035395,8.46375006199665,-54.9587201082661,-1.65533400271142,6.0722063164295,15.8544815772757,-20.8091152629051,-37.9616640056525,-9.08627651805661,-5.24451940440562,60.1475019820521,32.6033612797103,-13.8210529185532,-49.6997663857716,-37.2073415619001,36.9158990404978,-19.0435084150173,20.320695159757,-27.0314442675618,-22.4129154853385,-19.1101710936827,-22.6242312980031,-15.2730202731405,-16.0336933758528,-17.2597835305538,-18.7213787245626,-12.4605133919252,-16.2066706088666,-22.1856838942363,-21.7145915959154,-32.5358151099203,-25.4731970604708,-35.6860691938722,-28.6662479033314,-24.6626336450417,-30.213962010039,-28.6675708195963,-68.0374863525009,-56.3501574970891,-74.3120883192229,44.5016714818131,36.5111462030349,18.1060025724261,25.0476689662954,-17.2758252531795,-17.1186982059136,-13.0063752598143,-8.67059029178495,-15.3250881607725,-13.7273762927711,-12.8192139903638,-9.39732245216012,-10.3389938960609,-40.2021028808243,-64.1111974905328,-59.5202933071956,-56.092160169518,-58.9897040498412,-44.1289990997914,-71.251788523168,-48.0289309615941,-48.845764494753,-46.8166117466992,-46.0780180515488,-37.189576121751,-41.9008751733303,-42.8347950427621,-34.8346410276283,-45.7203933788101,-37.7882133626138,-70.6252792953938,-91.2085961752743,41.4103498980121,38.7120209120883,42.7540841020321,22.5834342801055,27.9173173271387,26.0583166256434,26.8418371189177,31.9254774145692,23.2830530603003,31.5136497931661,19.6446743282947,-5.15623170835874,-38.8336912458303,-44.2958129059379,-51.1203892304712,-43.4996052745201,-41.4080476744874,-56.4159199119348,-34.2231299075141,-68.6939139079484,-35.8623189852259,-32.0830723848331,-40.5358544205784,-31.0120531401582,-29.8757546210044,-24.1193085809302,-26.2002807100268,-29.7129482074011,-23.8477431947178,-30.8536054962353,-26.6282738682821,-34.5672468647096,-21.7561140585135,-25.5012502674729,-23.1921741092363,-18.4462333354111,-19.5407947766334,-24.8948879299659,-21.0351477511336,-22.210371176827,-17.4477206181269,-20.1960698036293,-22.1182371091421,-17.800624137276,-14.3089397626854,-15.7871666931762,-27.5893133293095,-23.764255071409,-17.6855816119504,-19.2233088404583,-15.9890902653419,-16.6390756794292,-10.6635574719198,-21.0790352002903,-18.9851728605546,-12.5823334884488,-10.2858410474399,-12.8368706956778,-11.0054145104183,-7.08719850283218,-8.43701869983372,-6.19218934812249,-8.07038297961688,-8.018069951128,-10.3544765141794,-7.74899608174357,-3.8701086899032,-58.4550936505243,-62.2764148042415,-52.0265621782333,-51.9272474132511,-47.5247914064066,-42.3831348644923,-60.3819435853614,-51.7874319767255,-45.4689155864308,-45.1749466932807,-49.8538642131258,-57.8549657254187,-50.6683240422303,-37.7314097064019,-40.5865074968865,-49.1768174356815,-41.0117720181387,-39.9724234952408,-54.7496984051746,-60.166741234065,-44.819399778524,-76.0980610563191,-48.6720184178769,-67.5085775796394,-57.2852396596254,-408.943672182416,-55.2575246686641,47.1405717508901,41.2800680612018,37.3827746290445,54.594987605921,60.6761814959815,32.1326727514624,37.4451927391771,46.9186080162361,43.1770400352943,44.749635671629,39.6739671030534,42.4337395495119,45.6365325728561,36.1007340936498,16.1735535576427,23.7877924716257,13.6223673678093,23.5937308329802,-7.53048531039205,-4.37256491978107,-7.07309423378306,-5.24738277102088,-0.969741229237136,-3.24008358737995,-1.74506387500873,-2.97455954597693,-0.710317334421556,-4.49733320045888,3.36450522818422,1.12574635506067,1.09914440540986,2.93850792356054,1.91422285652395,1.3280467408249,6.06593543072737,0.314448850473611,2.27203603923279,-1.96701991943869,2.34111119941889,5.42173706080705,0.232351289904373,0.306385160698901,-0.556083025339588,-2.22398655087788,-1.12301289909305,-1.47066966002895,-3.99743493555696,-4.05341738790487,-60.9680339982451,-68.98256416046,-31.4676488699089,-32.2311967402437,-35.2371215408966,-31.1598698468794,-34.9201318203395,-41.8007735632259,-28.0093433621154,-24.9557304398883,-28.7262824439814,-25.2631832995683,-29.5594831868405,-33.2537404875854,-22.1646015453332,-11.8166804280258,-14.4477683530872,-15.2212934901747,-13.3360919640565,-14.523346417649,-12.5275176101839,-17.0657253088502,-16.6709041638224,-19.2088273985744,-19.6973016033157,-17.1728588812999,-17.8773921235731,-13.9190535025905,-20.6459933686314,-37.1236600496472,-33.1943339914975,-69.3372214133791,-43.7773669926527,-52.1407352710839,-97.4607139217244,-63.4520571036367,-65.6313773026087,-57.6145918751487,-68.8947355340614,-50.8288640024698,28.6636662575662,24.9345092904608,26.8247082962452,30.060321974666,22.8159260391788,30.2822594118538,34.4027738824919,28.0535807076543,28.6251557731954,24.9990900295533,24.9842107975121,21.7492706550009,17.6720723581423,49.9934590734601,53.4316522490101,39.1982088679902,29.5369423614434,18.0875016521511,13.2560459710287,16.4566478122836,-9.07249444461984,-5.44577330618001,-45.6218256548336,-43.7792477784526,-52.4579279311594,-62.4470546135263,-40.563501141228,-35.2729719675416,-37.698420517901,-9.87238986883682,-9.23439613118321,-37.6322668865008,34.7744901700133,31.9645563007856,32.3437574175931,22.9347620602511,17.6046792124652,18.7832759946132,54.9946427010738,64.2550044556133,44.9621887076641,49.2264451043882,40.9582351491563,36.345952909517,35.5721404390382,39.3805320482858,44.4525530502336,40.2964964645365,35.5371422386674,36.9293096804523,29.9490567088127,32.9715886276907,30.6385978695602,17.1849673688735,12.275817175181,-37.5898935925615,-47.2186385427476,-48.4821236836388,-46.4346968844105,-56.4371206780725,-57.0942531192532,-62.2340233659701,-35.7632547626919,-42.8561684714757,34.4457440990526,24.4769275006563,28.1650924442629,21.2963980859111,19.9814828631029,19.9485361343504,21.9221089122797,19.6486762685252,99.1679462175168,14.3228827096124,14.6420350202273,-51.2681693137737,-45.2138497893496,-57.1551627197554,-41.7977017861817,-47.0196176419842,30.8731231469219,23.2440644034713,16.1570647599135,19.2773618570015,15.6202207272629,13.6430920368041,12.3872164238046,-40.3768117998336,-39.6723480905557,-37.6838528734462,-34.4787811056002,-27.4527939225375,-30.0607204994603,-26.3050216377802,-30.9925029678583,-27.7104811272509,-21.8382473456777,-24.671004192691,-22.7370251756077,-23.9984546355974,-26.2915181276069,-48.6347756593243,24.6205385135825,30.1161094766024,26.868005703872,10.7288560304907,10.148177710519,-32.8042285563755,-28.2031838284178,-22.6709232888103,-30.6098161791164,27.6088014601168,27.3995603870894,23.5185199629509,19.7910916859314,19.96878349817,21.2320567807378,22.0781839777766,25.6197698753009,9.97542494194362,13.4064368553217,11.9533187379189,10.9960476371257,8.08029851081268,7.30292253629491,6.46691115747998,4.82751500701388,5.91571954694289,9.52853159086018,3.55583000673743,5.38142577068728,10.8178271942959,7.92212409590241,-23.6088022288453,-29.5716851334871,-26.7536303205908,-33.6124625333941,-29.3804205688882,-29.0419010194532,-25.3531211326403,-23.2912990138674,-34.1425401964968,-32.0197381807396,-35.3644635223671,14.2793922353217,20.262661765755,17.0302990355407,17.8117398902245,14.4349460406904,25.1523474516268,10.9195425877949,8.05039576842915,7.65476026006102,8.62230199685635,11.2548809627834,6.00247070905429,7.57226495241288,-17.4035357957661,-37.6057826731044,16.7458975573402,15.3968672865497,14.1574308502222,16.7922985288847,19.374486220926,19.5876245007142,19.8503096805653,22.42719602438,25.3281186753417,22.5311773621807,17.1355107393793,15.392466959951,14.0623102199253,16.9698299406424,19.7615093439558,17.4415352093513,15.6268641665533,14.9971677596326,12.2655802638299,11.9493023527155,10.2464292386526,7.67267045025759,8.06311207176371,4.95100539993267,-20.7015007367144,28.2389401431696,12.5039627337209,20.3580217761993,22.6973217818743,16.367856418258,13.2010551664351,12.8890445627433,-20.1515527424092,-17.6624945029915,25.8958752573783,29.2276814784584,11.755127922303,7.82360302372495,9.40317934819627,10.0856426196687,9.27938135200948,9.89918361647232,13.6331955523152,21.1710140931899,-20.6430880450734,-17.3608453334722,-16.3775615906574,-18.5206963529608,-18.1947623781357,-16.32239457906,-13.1113638465185,-14.7825513880922,-20.6518694259229,-10.954339771074,-15.6779708180609,-12.7089912871903,-8.27454228808805,-13.5740980877438,-10.1470362449532,-12.1015647536649,-14.594923248792,-6.76808849198092,-12.0184334938671,-9.0884603024169,-16.0136369310492,-9.02722316317547,-15.8050228722996,-13.5887136888711,-20.5171822548521,-10.590546250011,-18.2151348214813,-21.0635965424875,-13.502806204368,-11.4803767910706,-8.60929839475214,-20.1560160214228,27.8717865626341,32.3526510351215,32.43041083349,11.5933058873064,20.9954342074901,-23.3074328154335,-23.9233289635183,-19.3507034240293,-16.6583216012097,-13.9945398389523,-14.2492730890334,-15.1646361498121,-9.51264566260827,-13.4371834559435,-11.8751786478036,-12.0370040580372,-10.8327206757083,-10.5605901758461,-12.0713463236359,-9.48511955967489,-6.5949264663049,-7.08577515678319,-12.6426260629416,-6.70260396843098,-17.8389606591567,13.9656853060002,13.0105515454117,12.3022750803705,15.4404977442317,10.5182917298918,12.9352851950347,10.7082715227887,11.3090770370583,13.7294624947701,6.43550631442638,8.71334577934593,6.96079435022556,8.19980026726181,8.5739581882733,6.88462353454933,25.959115811044,18.9103834713743,-28.1799078709156,-23.3517964264182,-21.0920517257756,-26.4422541428372,-14.988621074167,-10.6807467872537,-6.3266416371583,-17.1543651866527,-12.0483901233463,-7.32842646688103,-14.4898136481344,-10.0746712731532,-17.1709977705411,-15.6037877120258,-8.51225434724774,-9.27685143121993,-16.3076651037712,-19.1589813596598,-8.32271251468153,-10.7172305010114,-22.0442669401143,-6.05319301021654,-13.1926705636496,-19.2731149046889,-21.8504409536487,-5.20688498244076,11.2651690344035,9.24245455235592,7.07567150015877,3.37191823482476,5.4506182842548,-2.07445470510851,23.3768378601182,26.1228605328227,25.7987995343353,31.6861230064385,29.9180126770529,28.3043724885586,29.5195533138277,30.583267580056,37.870686587683,35.5272700907116,38.1371370746708,33.6469623859685,40.6188342605415,34.5536840528612,35.2509019360057,37.0229978617563,40.5130292407398,32.3348700486613,30.6217034452742,23.2267036337089,25.6788149698172,18.1171529377256,17.1778505421679,-30.1669580009451,-33.3025155768048,-34.8897331183789,-33.2886937379811,-7.56101278572102,-4.45383323449036,-8.97112760739444,-5.15434223682069,-3.69585332481289,-7.83238825369428,-5.42268355270427,-2.22631360659868,-3.49469871547121,-0.49851395629352,-5.00111256946106,-18.033117375202,-19.4117618351595,-28.8352581833211,-22.2970789957229,-6.48294498019099,-4.29707298844993,-3.13661112257855,-1.3641780123929,-2.99045371173496,-1.66086037667669,-3.56395631847477,4.35002014250151,5.54697065414865,4.29973448901257,1.21605605778384,6.59354902442057,4.12461824505785,-4.67593974432686,28.5643655520472,26.6927455608633,38.1193830343992,19.0436103012285,21.9313615655663,15.9587527216832,20.2852693390252,21.1526554184819,19.6002728616414,16.9298631847621,16.6522833879832,13.1627556068537,14.7529518071597,11.9438821496795,12.0347439453453,14.0907414762841,-30.9386709880931,-4.63695202476544,-10.2715369490613,-0.917639263531704,-25.1103967876775,-22.9941706830016,-28.7734937535457,-26.2915466457654,-25.8995061008419,-26.0037484258852,-5.03729418203186,-3.25465805131164,-0.964658561866738,5.62891365858874,4.34152756057217,5.73049658779962,1.28203188320124,3.73040347064291,3.07551237916504,0.000669002905258073,1.41911223992714,-1.00490278647802,2.15914840491868,-3.34755337784407,35.7981757682788,16.3504514717978,-28.4803713584727,-2.24458762839456,7.47353525760529,0,-0.0563296310488026,-2.22522222608576,1.32746252520037,2.124428024383,0.939396055595433,-3.98957752596472,2.61756459649013,0.248303321322186,38.155985545037,51.0759048696082,42.2745274959782,52.4854079276632,40.3559952234331,51.3784003932596,54.8303293851077,51.086708277963,46.8665628732945,51.9307831815224,41.2289961137944,31.2930748624359,-27.8167496909424,9.76744336361978,8.55127273356756,8.69314447650645,8.63834711735562,10.9051319970663,4.07606824441166,14.1895974514895,6.42057782963834,11.678682817108,3.31495890091309,10.5645638880256,8.47632511667774,4.08065583464674,1.83514105377092,5.38269231632,4.34488526556713,6.63150286152017,6.68425816221223,4.78273965464663,-2.93286520103358,0.634991208058917,0.0430165519426065,-0.833465007593254,2.05903003707581,-2.97469505192524,-6.50748924836319,-2.23706243303996,-3.80300824617633,-5.76298000497553,-5.86062950893338,-7.93568576457226,71.543220819118,64.9975885604396,67.1012049964912,29.9945275076959,33.7988423674773,34.1828292927164,-24.0185193526934,-36.3847572874827,10.5936347939875,-0.202228843111426,1.20696968863241,-0.00832595010846307,2.2239136246092,4.429284846019,3.77227043371078,6.31829313645561,1.71874111850899,2.51859550992514,0.930259336104289,-5.4312863093638,-7.59143641530765,-4.71586379232617,-8.31057563161846,-9.62065318914376,-12.1052190679507,45.5808336381962,-20.2225791989174,-32.2650479885602,6.84415904604958,6.27209545860084,-11.3315249087162,-11.3123898401617,-23.9758602324333,-31.9374685922548,-35.2338682937696,-31.277887664298,-26.6133361637519,-41.7369544920042,-23.5473853395655,-26.4369467683041,-39.0449734136264,-36.4465722600927,-20.4129191400662,-43.6754910478686,-39.6038033920031,-18.8234047657697,-20.093682030191,-15.9164090429888,-22.9372827918579,-38.4925837334889,3.43727072281407,11.2243860243824,-28.8772242969455,-34.2510817646512,-24.2352525968371,-34.500017897467,-38.9379141008219,-32.8845876443343,-42.8516691913455,-32.3453056274498,-28.6005586285591,-55.0987350303049,-48.9046735896795,-53.5657618634623,-44.588968159336,-0.259528858788051,9.08700936461755,4.56386775067392,-32.8339642507736,-26.7925487258948,-82.6464751571825,-62.7130943828702,1.2721687018989,2.21985661327483,-0.963114742026784,4.65784259857988,-1.23340991446144,-0.381586229369377,2.11315426340769,-3.79431927328415,2.27055507458611,2.80336993817549,7.4371280910424,0.316612628511369,5.00859077699396,-2.1215104161838,5.08081374338954,-4.17818159396171,0.132414934929973,4.29762781378585,1.78803709283482,-1.93448114217474,-4.03018861724464,-2.60290888540873,-6.27096982629627,10.5168403011813,15.1930485872823,12.9333865244069,15.2147688409148,12.6562006274658,16.2592214608571,13.994568575255,13.4290043910941,11.7775101855828,14.878547150091,19.3281787901923,16.6851049134981,18.6100185116856,15.7597558153087,10.5293104228054,13.4896675597058,12.3977522849152,8.9149479876392,14.590223019914,18.2586294200798,15.5342649521412,13.2758679974831,-22.7188379903172,-36.3135165629608,-48.0333885078728,-67.3517288563192,-48.7656907211565,-41.609142799334,-52.423454462152,-40.9070803668261,-44.8356469025865,-43.9101051336047,-45.5892284116026,-53.8820183045831,3.11982395826389,-6.37068671337686,-8.09184425183432,13.2068645224277,16.8042175839356,8.05487744982817,6.71396991485261,8.28847487785906,-23.1748641912606,-32.3260492235627,-26.1535530094265,-35.4247175425615,-27.542575875894,-24.2348876680219,-36.2999029651611,-56.8207942396798,3.51042775940327,-6.48375153111351,-8.88153130798363,-5.4976410530618,20.0891722503672,20.9891675603397,-18.2367315254275,-26.2002342306578,8.40455463140892,-2.06319293407107,-8.44603765792077,-5.31054892631435,-12.9649041608566,-11.2715829226312,-11.0091802133985,-13.6627771737627,-15.0477495934435,-14.2712187521928,-6.87176453022601,18.851093808315,25.0092433349843,18.269262353546,-20.4944531868945,-23.0022828618486,6.08374175277049,8.5925605243807,6.17577026573956,9.38695126236448,8.24764203592803,7.25913352548429,11.9168391976226,8.00836354317801,9.72570286096268,2.1957568754648,4.11344885751724,0.163251106112018,0.579070774556901,1.43773116190486,-1.96216629818185,-6.91220117141467,-5.36322457589616,-5.30963691265722,-5.92165688777542,-9.77286399318893,-17.3316304584439,-16.7974211649232,22.5299234688412,23.1615117277869,23.3004535452537,18.1353283688892,15.8169633318479,21.6231758581472,16.70951198296,20.9439266504187,19.0476395896374,21.9724761591214,24.9117319931204,18.3561815250619,25.461035317612,28.2011218183134,23.3164280628646,24.8291904665788,25.8294559772887,23.2321952177625,24.9270005729326,28.7901921482039,34.1665142396608,32.3246048897203,30.8242134656872,11.4959696764802,6.78739453348834,-14.7451700905398,-10.6650636993978,28.8252524036712,21.6186163445385,25.0265903902046,19.3124576137162,20.9137737011758,39.2994842678217,27.1113178528314,7.07103561840326,-12.5743435737815,-12.7912456600183,-18.0174860236611,-15.3245765342696,-22.5388668999665,-16.0869286354414,-15.9511560182837,-25.4378199013786,-15.005486299457,-10.1255141502969,-7.7762088712025,26.1364744172247,28.3910642331306,27.2539539899328,31.9064892799678,19.522652875311,31.0536059278741,33.1833760014556,33.9250987525629,35.0413114296826,40.0816876183508,43.0081930747793,45.445451236512,31.4378340775559,41.1137634110534,-12.6153305553093,-9.2653056472684,31.4644026548577,33.7678567728759,29.4756942842303,27.6415512535233,21.4257848486288,24.9750122386115,18.2517334626454,29.5200668026627,29.9773060502882,18.2985372771746,19.5548429192894,16.8533266815867,30.5224994698292,16.3495483587073,13.2874031441682,66.2507218753182,36.0426119259922,45.305764267915,39.4436800214086,29.7281003483968,38.6387884286192,38.8680967839171,13.1099742549356,44.2897001966475,47.1243659531203,37.5849482463628,49.2038055110683,34.6428225236996,37.5073413975302,45.8972811864564,45.5683936852057,44.4675760420691,47.536879287618,37.305227948639,42.0527964322717,47.7524786656844,49.1835484278943,47.8672789088812,59.9362263388441,73.5099688982233,71.5821519993789,52.3039742519445,53.2091522390924,47.3077270303144,58.574301692507,36.372314284044,48.3451234504772,54.46264716916,352.913943427267,360.993867177556,332.533740017141,343.450041400389,337.525496044511,291.861255652907,328.755154958901,245.217390234519,261.727600734481,193.239352723386,235.738746718058,125.471507994859,115.650362888357,56.987410599706,94.2908205804829,-12.6861736887355,-86.0857060906615,-156.089343780656,-215.069529200342,-268.835082279214,-269.382064987441,-314.717802186801,-248.067914032518,-311.932857671231,-291.640638916309,-315.059204044174,-347.62143970418,-359.631465752612,73.6134884702449,55.8604882337366,74.9915768736042,75.6327275503422,69.0719710473478,54.9641487128896,74.9942757505104,55.7012785766565,59.0622084641508,51.3396737396567,47.0660956928577,49.6600758411491,50.5129394931824,50.9083002597224,55.1937812603484,44.4320630463527,56.0018312259652,61.8056753870672,44.1045525468146,43.5006141309171,46.145538241406,42.2229214639153,39.8663230124978,15.3689270385079,57.6410014343668,10.6900525731782,26.8687740196562,-1.74261964785391,-3.2617598427884,-49.4692558634187,-344.474090559222,-0.376466201885214,-5.08310702673571,8.44094900219723,2.53717729107059,12.1604287736018,14.3846034474552,14.585446394913,24.8514596905432,12.4417873908869,11.1939107691901,8.25059896409595,29.6591155078314,-4.72184378701046,-0.364962500250769,-2.8487885552908,-3.09511410619527,-13.0158836801932,-8.43318157664932,-5.25115169354426,-5.34835464780279,-7.6150451164782,-10.5691071886417,-2.31217011124485,-6.79065609848201,-10.1312591660165,-3.79934102660471,1.26582005139104,-1.7665866890839,-1.14762765163995,-1.5285647380922,0.490867322957423,2.13089919209424,3.70518521572237,2.82846589317752,4.0149168697141,4.58677404693606,0.41159269437958,5.57089085579985,5.50204740994604,9.68166890253518,12.1659870116463,9.66459317754968,8.55217275427073,7.04822770295159,-10.3414105002091,-26.5807795174543,-51.5616068901141,-73.909132693413,69.6537550578947,41.9587457518365,-3.10359050446003,-14.8109681592534,-46.2408455864549,-61.3150431338556,-58.9034169866926,-88.1946335822319,-69.5780017017844,-55.1537872103209,33.7847161318365,-72.9973147854754,-61.7638048495266,-98.4214497002084,23.8703604293419,-25.5896867122966,-37.8179217492857,-41.1975945982794,-39.3504702679074,-39.849033685499,-45.7098089309002,-50.8994044006666,-52.4666496330469,4.31169986147104,3.30000589473865,5.22944917790886,2.73468041183302,1.44214548595629,17.083921176921,-9.59608384850634,10.5835583297771,-13.9611015975215,35.4504843545468,-6.78064688703962,5.80892298049886,23.0619740751109,24.8558247593735,0.142182501795509,-1.09154753285435,0.429927123240741,45.1356521506265,45.9203305879935,63.4805802111814,14.7641593769989,8.94756885049653,89.7488558407032,0.942417532274566,-46.5937371629951,-52.9197297146716,-49.2478719130552,-62.7661946211256,-17.1077085268777,-2.25898955654483,-39.3197763282575,-50.5470096575107,-37.9770051597195,-34.680118019904,-38.4139107251365,-32.653761337945,-32.0979331412002,-34.1865720342774,-29.4672278934727,5.8906229539655,11.1838366378037,10.7316831308009,3.81616656059225,1.07446525328618,-8.87792730585498,-3.59473905454359,-3.81866640030895,23.8746455596482,-8.88869777442509,-9.01982046452824,-12.0901079188115,-15.8635508402692,-8.45267883187273,-5.23143942976677,31.5548361594252,11.5774544417143,30.0089045014789,18.6227772185093,48.8282795496749,42.9005273014606,85.8829960518313,57.1517903470465,69.5566182638051,55.877073925483,73.9355096284785,92.3020841940746,65.2020079651401,56.0991843791767,73.4157566872026,52.5633408225658,76.5729624980639,98.4574577511157,71.3229975752436,53.4427583701317,58.3521561840823,56.6759183207949,63.3876339739668,57.4298716402551,61.0312261802901,41.4582473003887,37.4991724120511,46.8166977648262,40.2056167243519,16.3452358551126,-7.10857143472966,41.1501478120602,-1.05869072849419,48.4418645535331,50.4406713440281,-31.1348870619873,0.866512781034995,-10.7889580579982,2.01061805348254,-13.6346891608172,4.53185991441414,-12.8601154749709,-0.0363160886521006,-10.702970134949,-8.37166601228212,-16.6250285148969,-7.67294026121934,-16.3818933318192,-7.66006128002866,-29.1272123868365,-12.4431256651078,-25.5052602668461,-12.9455319046727,-23.2992312360863,-13.3837688465883,-25.3740737069392,-24.5927467764551,-26.4545745223712,-20.4794459578617,-27.6891407094111,-22.0410203653352,-39.5825166392919,-24.2765305870035,-32.0300585324797,-27.329147575288,-28.4314679659154,-24.5181994137256,-33.0204323588686,-32.672661442786,-31.7566212022416,-23.5924737355607,-26.294385663561,-29.3884374759119,-31.3009767769543,-34.7041419253135,-32.5423661168189,-27.3087223810965,-30.7953407045184,-34.9935408476688,-35.1689444946503,-34.4557217806379,-34.8016952899931,-27.0163138511017,-30.0998382463211,-25.3027088940831,-28.2793621307543,-33.2951267812394,-28.0663456218899,-26.1660885762398,-19.490300301027,-29.6830637109618,-27.2905084053811,-27.5048544258081,-28.3322956673292,-16.5130195331619,-25.8834343885951,-23.4584884904867,-20.3163679554532,-25.1154985803624,-13.1830006201217,-21.7809438265648,-19.5309566703852,-11.1214919916008,-21.0583271242912,-9.00112596327774,-14.9060472631438,-12.6875951346185,-5.93728125682215,-11.5734891344805,-0.721194744215939,-11.9609465320651,-5.86408266671853,1.85759578064806,-6.28094040229789,3.78769070309656,-5.711005957957,0.733920076922481,8.6620027136299,1.51624082075341,9.84038186031458,0.245854522529401,7.9193050652179,16.2042365978487,6.52254368169487,13.9674591761916,6.75894885387969,14.9664347572492,21.6545555050317,8.09814442252556,16.2928366405254,13.7080842250882,19.9716554275825,28.1570073326338,18.5886712002219,22.1273927062565,17.9853142959748,26.3240445599743,29.4124001927628,30.2522888587699,30.1278839352742,18.9386887140609,31.0718497227793,33.5990596206868,28.7636970694954,28.6965830455279,26.1241033559861,34.7222789463601,33.0997334658983,27.373944860107,28.3921436764267,28.9873487001534,35.2292443041699,34.709975136652,32.1927374638444,31.1440139363595,34.8393835579675,30.7958913921414,23.5239924109236,38.3300376724227,42.3002118626665,21.1050815702906,24.3259235473538,29.5253516592868,24.6077757139585,29.4198029403207,29.4936932097049,31.1377666372788,23.7806141123623,23.9694307575833,19.315638106531,26.2891016085524,22.3055859962542,27.990932555801,16.5864016202137,23.8378809586693,19.5186237575004,27.2446023246282,15.6321111878866,21.480405458527,8.16004928604984,28.3896540916957,10.8279163439736,21.8441634817055,5.98300723971549,15.3277660087447,0.609860520896333,20.065335323112,3.23709236290258,12.9221667974079,5.08029230400585,4.93991881987915,5.69349819270398,306.463820095971,309.489412531394,48.2864728624515,295.601902811815,299.282115732053,242.551278550733,269.336986333739,28.6273424038382,324.911304902506,45.4101767705334,358.423305135618,46.5980887932011,290.50079111042,303.778986150286,229.997670052283,294.142770594401,62.4055828629021,330.17252747772,323.366993687081,388.30252845997,49.9796404190553,265.197653764863,198.575266306243,257.334084179635,256.862782674994,281.492487677818,301.415895372269,43.8941005032847,223.55925076418,220.641162075483,166.898227054435,201.720733313067,46.0469697912579,276.068203786219,247.054692018885,377.277790427323,399.631147317601,31.9377950020117,152.919505532446,66.3402595876478,131.557065042664,157.688323001335,245.68812197249,171.772132413421,126.516279799838,21.2453369726625,63.525713250738,111.827050330622,12.5119218364388,63.6151267622484,17.5638149228731,164.417676632401,99.4610765397365,287.670660937946,13.5321898840329,48.3499503884281,-54.4641703878738,-6.9080358803865,29.5530026801705,57.0032232721579,23.5437836478276,-16.3005096311114,6.76075341655913,-16.7991969710028,-104.055822478828,-92.0482083164945,-6.04715819526812,98.8222852820667,-99.5030773050845,-6.30731845103725,-171.743662831373,-81.6638951578345,-132.117943506504,-176.397512452672,-106.345559354662,-124.293200827305,-138.26601679808,-43.4707272643997,-14.4790894812386,-148.180063913923,-208.255837953259,-225.461579021741,-170.148145200458,-216.041306333009,-211.00119494398,-74.5273262963087,-215.575702291944,-26.835992417154,-299.110009243422,-199.134630480761,-326.781386836708,-231.071712784224,-35.0106275680992,-191.306234672443,-275.76072857304,-172.022388732987,-39.3362149239887,-226.455200475293,-299.297400842248,-286.545609908785,-58.3846567815532,-256.241846625357,-298.970611222062,-322.267104746791,-40.5638238912045,-358.007952749555,-282.570011183308,-299.656778562379,-291.223958820016,-313.948846265506,-305.663903254229,-318.306709583134,-49.7659470133531,-310.579016009093,-377.508891799807,-330.811338483258,-340.307586334944,-54.0456324286232,-354.644697930531,33.3153756094798,37.1088273979296,53.1334591201521,37.8498302417592,24.5203877022423,20.8510558902848,30.58413786266,23.2183100110625,18.3914258065423,79.9279914530381,328.94139259189,14.6246389626738,11.3909144507994,26.3599209228456,20.4062058634824,7.67353615109494,44.691389766319,189.483172969757,7.30678303442134,1.63127499790319,13.575606899937,-10.9010796946359,-14.4620415184814,-18.0435312973074,-64.109677816436,-5.19286212881368,-24.1029727093082,-36.4869827180715,-162.629014314141,-10.2849731647014,-25.7298085907059,-28.5810232792337,-61.9241094427257,-243.75291477413,-13.1564670539335,-32.2331627894474,-27.8306349075168,-20.5043495292968,-49.5932835644351,-24.8425761957349,-35.6029903336655,-31.7373306008056,-29.9350505179049,-39.6415152666896,-90.8883213237028,60.7470968959612,50.804990800575,38.8213356137718,32.3696915882754,-12.9718686836393,-4.41053487773302,-22.1816263686241,-19.1280758131855,-36.8441920283369,-31.8338456813994,-61.5486068547729,-53.7761661454184,59.4729416784014,52.8522439804268,38.2600099839486,26.7448709988466,-5.31985897421597,-21.0479253872652,-34.4902332316601,-46.8009221067932,-65.9292415540623,-48.8274015211344,49.7426080111515,30.3796325308846,-5.12998359225178,-0.945905625495229,-6.98335003776933,-18.6083577271502,-21.4969968591405,-33.870115413266,-33.0805769380499,55.9326277580801,34.4030094437686,-6.97749033184566,-10.3972350203187,-12.4735104497088,-25.5478222371428,-36.6210119289815,59.382494205892,48.9118066761614,36.7745673511919,27.509332702737,-14.1738669078819,-24.3389934548519,-25.1605294436372,-39.7426308360042,-37.0032459804491,59.3199328544799,36.9367467727452,-26.6578012607469,50.2808066622115,57.3431665402126,69.2979327700938,38.0292156056087,46.8624786940078,33.537027426096,-29.1481797344094,-31.3716390374156,-27.6867345083674,-57.0656888567166,-100.316661554494,-55.6337445508329,-1.38910730637613,6.62656705057132,0.800565597145039,3.20276511926105,-0.876056125477781,1.82654285527008,8.94656963064621,6.52947111711607,8.48526065672169,-55.3226417918945,-1.68417968633123,6.12930122072766,15.9461842919677,-20.9422089148258,-38.2121285408063,-9.11221573417553,-5.25714155808138,60.3087175955639,32.6855799582382,-13.8639675051885,-49.8528970837387,-37.3278934513641,37.0358283214511,-19.1079737279204,20.3845523684282,-27.1271518092746,-22.4819747227074,-19.1664985467937,-22.6942492858282,-15.3150233894267,-16.0849347923985,-17.3178143506983,-18.7810926217596,-12.502829964192,-16.2603780160676,-22.2519160163085,-21.7880099530278,-32.6312684968542,-25.5507979377249,-35.7924832588341,-28.7806507124682,-24.7477051700198,-30.3195170926176,-28.7566754345213,-68.224107257183,-56.5125039888247,-74.5946774700215,44.6400436200867,36.6299282590603,18.1611144321724,25.1242275695642,-17.3466482965694,-17.1662733915263,-13.053383699798,-8.69881595934021,-15.3756758628428,-13.772247609467,-12.8616840197812,-9.42828258117001,-10.3755100413089,-40.3209485934963,-64.2579684711935,-59.7547581082993,-56.2376440996117,-59.215234662928,-44.2637899203279,-71.417691588188,-48.1787225417327,-49.0120739204293,-46.9569314664008,-46.2203516742771,-37.3089987194586,-42.0433421256515,-42.9803437262753,-34.9538593780007,-45.8663707532764,-37.9170264209811,-70.8573010244401,-91.5743920325616,41.5524071798481,38.8328206502936,42.8810037426346,22.6632568545716,28.0102681412533,26.1415382106079,26.9326992661148,32.0301248833033,23.3563723067746,31.6093094827347,19.7063491740122,-5.17472443721755,-38.9803518308015,-44.4276206882735,-51.3135583121657,-43.6711072456572,-41.5194924068395,-56.6399971802755,-34.3267956674409,-68.9487951549564,-35.9860632499422,-32.1930898287172,-40.6603387788623,-31.1141350462196,-29.9805103225865,-24.1974027563754,-26.2876654527626,-29.8046220725366,-23.9276189803368,-30.9518780395962,-26.7180886106521,-34.6749700385389,-21.8362854499768,-25.5961916806678,-23.2768061119296,-18.5121364794392,-19.613776284312,-24.9811773710984,-21.1151881536324,-22.2848702033023,-17.5108924187588,-20.2728546351894,-22.18656755245,-17.8619805917662,-14.3565121278547,-15.8458518649362,-27.6896740154494,-23.8480653586154,-17.7536100920868,-19.2894261460158,-16.042070628035,-16.6993748444629,-10.7060968515459,-21.1509606789614,-19.0511878889967,-12.6331554742111,-10.3225236921591,-12.8843570019181,-11.0489112502226,-7.11238087009498,-8.47355406878768,-6.21801303971711,-8.10502139807816,-8.05496127362727,-10.3976443546759,-7.78122284695855,-3.88939460285772,-58.6569349372734,-62.5042785250557,-52.2236763208521,-52.1191293732552,-47.6613998949468,-42.5298744680954,-60.549214433846,-51.9511798376735,-45.6165425166361,-45.3313912660569,-50.0082555564719,-58.0155012068664,-50.8349025602998,-37.8528478795673,-40.7155972410493,-49.3368860484959,-41.1448153270425,-40.0964679766404,-54.9136647790008,-60.3087634665525,-44.9617355706164,-76.6336723114341,-49.0554213487985,-67.7545783849625,-58.2304187789732,-411.469487726544,-55.4892219531566,47.2852120122336,41.4002485625782,37.4924363565316,54.8116374179437,60.8750099428894,32.2335760220093,37.5526542550717,47.1110882023697,43.3079730627077,44.8944560436037,39.7876299114736,42.570688305031,45.7850669928075,36.2150925588306,16.2579717393601,23.8682960356542,13.6660702118363,23.6646773982787,-7.55849473303737,-4.38823894189644,-7.09913314272875,-5.26698942753269,-0.972720803977736,-3.25181099862573,-1.75140624094125,-2.98591151980908,-0.71299313131905,-4.51365515812573,3.37695883640705,1.12967805577881,1.10442676912543,2.94925081823168,1.92104351042965,1.33330368210703,6.0850526972788,0.316075823656499,2.28319959605113,-1.97487350023701,2.34806454823376,5.44263515145499,0.233620517799469,0.306709261580173,-0.558519716223008,-2.23432150439192,-1.1279259131441,-1.47872723977555,-4.01552110536825,-4.07115914248115,-61.1489159810253,-69.3278409080766,-31.5739647004319,-32.3396019556394,-35.352065578458,-31.2560109757963,-35.0435376320351,-41.9258408655742,-28.1150107189038,-25.0409377542529,-28.8184990673103,-25.3498545822341,-29.664575830479,-33.3680385632662,-22.2498608130807,-11.8619365091259,-14.5066405328883,-15.2805944157117,-13.3918027068725,-14.5844463782492,-12.5815091992222,-17.1410955845062,-16.7422426350134,-19.2865091228949,-19.7756966064484,-17.2511958494651,-17.9476450586201,-13.9813805097848,-20.722185692971,-37.249207887673,-33.2961735871912,-69.5907625670596,-43.9153034772445,-52.285365004661,-97.8194590243507,-63.6968411563539,-65.8578774521574,-57.815568537518,-69.0491440316044,-50.9858010624201,28.7562937408031,25.0209022588113,26.9138601406524,30.1603757801315,22.8873694426194,30.3939547435345,34.5112035391324,28.1419143572392,28.7191446085837,25.0831942542686,25.0737028955249,21.8298275965569,17.7297476581203,50.1744775403912,53.598632802308,39.3321893082945,29.6501861490948,18.1435727061948,13.2954177737608,16.5068060234179,-9.11043875350427,-5.46888291378793,-45.7886775116527,-43.9131903008219,-52.5955847325296,-62.8576798902617,-40.7000859520353,-35.3835263817753,-37.8259532319108,-9.91578173029318,-9.27719196831592,-37.738973933637,34.8985528606709,32.0648158272362,32.4465798912509,23.0168021206238,17.66378197278,18.8468437686733,55.1762653620706,64.4817107784957,45.1232134915583,49.3755991525213,41.0884918301033,36.46656987885,35.684533703798,39.5026144174891,44.5844333513924,40.4320642942645,35.6569720342256,37.0541073028177,30.0474780095461,33.0851961928338,30.7401836425039,17.2373555227212,12.3117137259073,-37.7197975232757,-47.3668728966741,-48.6493126532103,-46.5853627822279,-56.6018340759745,-57.2721882916196,-62.4770587495254,-35.8912993569458,-43.0088262217784,34.5624188284567,24.5634107543437,28.2674242067073,21.3684401453946,20.0572844325731,20.0117842481038,22.0008192088847,19.7224490455441,99.4634506074288,14.3734024847772,14.6913804589439,-51.4389096128279,-45.3371665942726,-57.3568597113142,-41.9315746101658,-47.1555685948997,30.9813780081364,23.3205943824362,16.213243794038,19.3414082594744,15.6738870669078,13.6912869362895,12.4287893579583,-40.5364509711159,-39.8163147735098,-37.8113034816329,-34.5939486951405,-27.5515595505088,-30.1695861016976,-26.3990587636096,-31.0893815685676,-27.8162251907315,-21.9266213337763,-24.769406959588,-22.8195755669345,-24.090771135558,-26.3912616686143,-48.7786046054952,24.7131910183756,30.2218761696432,26.9585489743845,10.7753971716175,10.1805995744877,-32.9163464482427,-28.309511565851,-22.7509189586147,-30.7227535728353,27.7082956683515,27.4941521869102,23.6128775913886,19.8620510021312,20.0454542379974,21.3096704215597,22.1583229932789,25.7119443838197,10.0085248480574,13.4549923243079,11.9987473415323,11.0324691156527,8.11295785082807,7.32830454913724,6.48699488771779,4.8473780569013,5.93552795716405,9.5627986584364,3.5704858986736,5.4030953449153,10.8607227909399,7.95260569441599,-23.6932021575074,-29.6737909416068,-26.849412567684,-33.7292893795066,-29.4771848383704,-29.1478272209445,-25.4506915028647,-23.3728641872423,-34.2426682455947,-32.1320396167628,-35.4796906728088,14.3370129848101,20.3429015068124,17.0963281984884,17.8816366267785,14.4949185257554,25.2476649301932,10.9629591749274,8.08502693737862,7.68927114492217,8.65634567207549,11.2998338798876,6.02727353473129,7.6046858491078,-17.4795076613949,-37.7324995914646,16.8155770899471,15.4639467527939,14.2195129006303,16.8687620504872,19.4556140626645,19.6672104421857,19.9329814123671,22.51761132186,25.4273106164038,22.616080458338,17.209819921521,15.463569668709,14.1244672393417,17.0465036227153,19.8388718991859,17.5175785263317,15.7005463843278,15.0578931574579,12.3159656363294,12.0022312634932,10.2919174923754,7.71408745776973,8.10269777045006,4.97473004390092,-20.7847159299898,28.3315720630996,12.5584652495165,20.4408173250492,22.7864134364397,16.4312600765718,13.2608172869029,12.9406065962991,-20.2327527865441,-17.735702868982,25.9928145872764,29.3232977817254,11.8155774574285,7.86839480869959,9.45260245512877,10.1405364542384,9.33336443471663,9.94918004038872,13.6956248931677,21.2508649627934,-20.7271127881563,-17.4305920386001,-16.4440801961413,-18.5960809095134,-18.2800245899855,-16.3994094992097,-13.172737619582,-14.845480746634,-20.7358997647514,-11.0103499636538,-15.7456661796578,-12.7720498240872,-8.323300864355,-13.6345984149731,-10.202575422524,-12.1507778434162,-14.6553234093194,-6.8076285334293,-12.0754617627331,-9.13233312101561,-16.0773511125585,-9.0776316715706,-15.8706924917607,-13.6462366094271,-20.5922188935986,-10.6342348611272,-18.295422951815,-21.1378987327167,-13.5571360773894,-11.5323629137668,-8.64812934419819,-20.2324224211162,27.9767595189551,32.4618324315608,32.5463371955354,11.6580870124339,21.0781403495773,-23.3926673024157,-24.0156664519199,-19.4251424945639,-16.7365972658222,-14.055532891542,-14.3180437513634,-15.2399283511865,-9.56735380656763,-13.5035398117587,-11.935239404529,-12.1011922954511,-10.8897822532343,-10.6185339301837,-12.1300057068009,-9.54097867129678,-6.63648352632931,-7.12971536182127,-12.6898237683535,-6.73572444983999,-17.9187360940925,14.037206714344,13.0797972770528,12.3662354955953,15.5104726503351,10.5776933063044,12.9957122812578,10.7594819715265,11.3660938633703,13.7934567400487,6.47943327215863,8.76950517021613,7.01166163776394,8.25268083415137,8.62297781631722,6.92938401907204,26.0532688828014,18.9870118040424,-28.2864198783918,-23.4577603910225,-21.1830935491205,-26.5352316351682,-15.0568171307928,-10.742814307058,-6.37594828117838,-17.2213047198649,-12.0959097363861,-7.35830698352137,-14.5437333201847,-10.116955012355,-17.2286148885027,-15.6601691298364,-8.5453105715552,-9.31071662600968,-16.371964824458,-19.2259574798119,-8.361241478709,-10.7554003299862,-22.1159866056955,-6.08186108591866,-13.235549072294,-19.3405894341049,-21.9284038586977,-5.22761080962244,11.3273973006593,9.2993121869257,7.12053529926974,3.40327818738705,5.48315268974613,-2.08809488638893,23.4698090836126,26.2223950548198,25.8905833909162,31.7851475984117,30.019192327276,28.4100581829923,29.6215735759713,30.690086928517,37.9989471467948,35.645645017867,38.2620274558807,33.7655140316833,40.7436510321231,34.6821883363887,35.3713640245257,37.1461308565417,40.6333142860225,32.4477396872239,30.7248842424781,23.3257504762631,25.780008434609,18.194447064782,17.2560348217449,-30.2728967495182,-33.4081157420236,-35.0069901006059,-33.4077791494385,-7.61697220234964,-4.49258055389523,-9.02598177379104,-5.1936221267359,-3.73583128362319,-7.8843482236305,-5.46143142504973,-2.24408391906055,-3.53031892586431,-0.5117548796046,-5.0347829739697,-18.1032635016696,-19.4882992833278,-28.9343469317021,-22.3774918620366,-6.51424647945941,-4.32020190326201,-3.1543407069513,-1.36954376456112,-3.00457225191295,-1.66888853314953,-3.57733052002375,4.39474567972947,5.58827128188853,4.33846442555561,1.2254491956983,6.62983470240911,4.14915518887543,-4.70316103626604,28.6657720325253,26.7745457476605,38.2260893981133,19.1191588308243,22.0084121527347,16.027673265481,20.3651455259049,21.2239734294202,19.6751653299601,16.9917153206871,16.7205096785209,13.2246647647287,14.8151582935287,11.9974367899567,12.0903860634257,14.1538046665904,-31.0420480515289,-4.66777654309265,-10.3282329068218,-0.93903083162441,-25.1923580770691,-23.0806697136689,-28.8693106283832,-26.3887636960683,-25.9904972394133,-26.0863138573877,-5.06491934669252,-3.27086159513036,-0.968981918598665,5.67106332626875,4.38519216322902,5.76985611629168,1.30623248006362,3.7628612251995,3.0975796902724,0.000440317949591165,1.42864395724373,-1.01183842817088,2.17056466339838,-3.37283045500796,35.9157137216039,16.4277638047342,-28.5673370569935,-2.25746488046459,7.51086709833227,0,-0.058454471388621,-2.24520614780947,1.34555222288001,2.13829953930187,0.948826660094681,-4.01489197994909,2.63335264868999,0.250997454004803,38.264191698301,51.2223618774311,42.452577004097,52.6368069647754,40.4863783146713,51.5171628359963,54.9710601445623,51.2033951174259,47.0199204013135,52.1047622822772,41.3659121328883,31.3958198365386,-27.9061254293046,9.81106975503486,8.58687551224817,8.73759235526349,8.67802414698011,10.9517143239066,4.09630393092237,14.2433787888936,6.4509611014506,11.7241570082452,3.33314728697951,10.6081470256201,8.50960144094177,4.10185986001239,1.84241965043579,5.41398320004458,4.37171195475973,6.6674339738913,6.72713897454054,4.81330301030551,-2.96825966549741,0.651211854681228,0.0434235315433978,-0.839078033689601,2.07028958642226,-2.99565667116361,-6.54184868531466,-2.25212870132918,-3.82252665369739,-5.79283875050438,-5.89070693468895,-7.97292675580215,71.7500588566944,65.3658263562123,67.3412746660718,30.1045543282755,33.9235617299212,34.2872492938371,-24.098336362514,-36.5143417869527,10.6459467434678,-0.203073135260748,1.21344592215513,-0.0079843283748098,2.23510286479313,4.4483393546473,3.78905630450774,6.34678583816322,1.72483962639983,2.54014053677305,0.938117767507801,-5.46845792853774,-7.63567790228909,-4.7443556721857,-8.35768207252404,-9.67258815937374,-12.1594734303724,46.1073905794765,-20.2880672378624,-32.3631234461267,6.87239414795268,6.29607379970798,-11.3895940956214,-11.364037867211,-24.0523019768901,-32.0362782853672,-35.3320869676181,-31.3906365576438,-26.6956244025263,-41.8426280084384,-23.6279372528038,-26.5210933794964,-39.1669161001701,-36.5606888540881,-20.483692655246,-43.8101579099732,-39.7304964050646,-18.8813644027162,-20.1630992735562,-15.9673039095935,-23.0029042881393,-38.600294998414,3.45073258530975,11.2653168662487,-28.9911150488383,-34.3160644633165,-24.3030340977481,-34.6140720439652,-39.0563923970183,-33.0028457422909,-42.9795180806409,-32.4575603727785,-28.6943541169818,-55.3138501210392,-49.0457270266283,-53.7857360365066,-44.7271042965664,-0.260430085865887,9.12009676004006,4.58039975499159,-32.9413103599274,-26.8812846183955,-82.8971415157775,-62.8998490510667,1.27811435460596,2.22818641373632,-0.96719484069751,4.6753951494688,-1.2380148286807,-0.382391114292357,2.1202907709753,-3.80710698081125,2.27834235106063,2.81398302427801,7.46208737990791,0.317680868886225,5.02617166291954,-2.12782344878796,5.09795732201083,-4.19050126121367,0.131906861229853,4.31162809751122,1.79363115275633,-1.94182556054261,-4.04644841616057,-2.61177284896428,-6.28804814878575,10.557635255779,15.246487172508,12.9830016628168,15.2702252350797,12.7027174725134,16.314364542896,14.0419775509204,13.4755136306876,11.8185188105718,14.9312137441704,19.3898176516655,16.7361653669145,18.6684369068627,15.8109101543805,10.5636998470997,13.5283617310019,12.4386174996914,8.94531343378781,14.6430487866523,18.313412551867,15.5818515885141,13.3188385806696,-22.7780562167915,-36.4422794648411,-48.2149490804833,-67.54739091597,-48.9560805022343,-41.7338541279047,-52.6062856088134,-41.0237455898189,-44.9716476061301,-44.0376119822821,-45.7319008483973,-54.061661964885,3.12831766134583,-6.39315158942631,-8.11910140628991,13.2604644194953,16.8678007874555,8.08341226172665,6.73794411921406,8.3198042389693,-23.2478433274848,-32.4285093876112,-26.2657390617219,-35.6200215353845,-27.6160485082603,-24.3685177374778,-36.4704647476114,-57.0245650812922,3.52227253501199,-6.50924574634898,-8.91216269302128,-5.51850864656709,20.164394894664,21.0636856447166,-18.2970927375523,-26.3006385446218,8.43427855744203,-2.06981249725942,-8.48305471527341,-5.33212938042317,-13.0074190465193,-11.3106870692287,-11.0502126670479,-13.7107922732903,-15.1002174022778,-14.3151531369915,-6.89765963213957,18.9275282135029,25.1000440727785,18.3370615410909,-20.5605073090544,-23.1143138674566,6.10181539025382,8.62130843117171,6.19916086624391,9.40604224043071,8.2760906574802,7.28307817696183,11.9530417962812,8.03299246985334,9.75808547186841,2.21140213158934,4.12232366905719,0.164159251310668,0.580217480244844,1.4414005028321,-1.96956119226638,-6.93094962345515,-5.38072420401243,-5.32222160742933,-5.94321175075072,-9.80326954299826,-17.3968847415267,-16.8532718128687,22.6147186698356,23.2496377984733,23.3793492283993,18.2012249203356,15.8775818235891,21.6990880669558,16.7667579409824,21.0123160895086,19.1144398097231,22.0424365781088,24.993594528351,18.421938206705,25.555507317002,28.290837849472,23.3859611099067,24.9045164289398,25.9161502031051,23.2997217426675,25.0062116062994,28.8835539256276,34.2683751961505,32.413297332647,30.9346909143799,11.5322612252649,6.79772424973055,-14.7897786148726,-10.6995828572244,28.9197940200084,21.6930168454369,25.1075489132422,19.3822540387845,20.9742188227393,39.4075637891788,27.1849471998547,7.09681569682576,-12.6143633030398,-12.8197752281515,-18.0852563060586,-15.3787079504953,-22.5925527045876,-16.144074700784,-16.0238144686028,-25.5083711182247,-15.2088475391327,-10.1622510592581,-7.80204971784292,26.2273654503566,28.4956536017967,27.3534187076708,32.010914753387,19.599510091042,31.1550350495353,33.2898854490778,34.0265170000058,35.1701414866047,40.2367045249199,43.1511003767646,45.5619400465318,31.5332135776678,41.2452576731652,-12.659893991794,-9.29975774695864,31.5660877675597,33.8767402100136,29.5805011531209,27.7408423496351,21.510582708909,25.0693135013876,18.3371769141798,29.6471838187426,30.06993352101,18.3601819957894,19.5951082818356,16.8897398655337,30.832173582298,16.4380983624869,13.3361254575523,66.5229844212361,36.4750513494,45.5819586083595,39.5443873574503,29.8319794904775,38.7591727488314,39.0039200816315,13.1674308258784,44.5007852133315,47.3323887443723,37.7097207354413,49.3485586804832,34.7441925813326,37.6463844037288,46.0893315328457,45.6957367549545,44.59902089281,47.6456131005466,37.4227987229392,42.215949842078,47.9018039219423,49.3258052217586,48.0444483365048,60.0773470694326,73.8179661855616,71.7916292898009,52.5070974431947,53.4111592178698,47.6458728058775,58.9672449840501,37.0173837539422,48.5032318821889,54.8111958485149,355.134559353918,363.28364288493,334.570154021723,345.609519965046,339.59641337839,293.715561982413,330.779444347643,246.754451661496,263.35187689637,194.446367822595,237.214254720491,126.242175488838,116.369204857853,57.3220962614184,94.8959850329642,-12.767748569384,-86.6481341659856,-157.105846296047,-216.432251940536,-270.525522203833,-271.069667824733,-316.680292606152,-249.552427277559,-313.866078539038,-293.217173660375,-316.979690573036,-349.787391748804,-361.906165637675,74.0589394654306,56.0328226576254,75.267103461516,75.9237107635099,69.3760028017118,55.1168926969685,75.2058812536912,55.9016139031213,59.2384377765125,51.487014583671,47.2361663382003,49.8098319603296,50.6557216374566,51.0511500699983,55.3626816891895,44.5806929494426,56.1978848099341,62.0476521328583,44.2514385858578,43.6563724018186,46.2904018046171,42.3562003622993,40.0064260097755,16.2590423127557,57.9443407928345,11.290218126014,26.9893182452844,-2.00288827197477,-3.74533889833058,-49.6987602294521,-346.58861589358,-0.33420030691489,-5.08999773813814,8.47293991612453,2.69117251910698,12.2283878149359,14.4340590912639,14.6412826444157,24.9293041635663,12.4819557615422,11.2264892168786,8.2818324478942,29.7793435172853,-4.73935387210903,-0.366633980825444,-2.85835902171188,-3.10453248051025,-13.0518007058887,-8.46218870319642,-5.2712112377255,-5.36486162232625,-7.64031024041209,-10.6042514664486,-2.31923338116323,-6.81339945420169,-10.171096569728,-3.81406410144134,1.26997433007495,-1.77309872300239,-1.15100434176604,-1.53185648806002,0.492293975652897,2.13672789305954,3.71643193727304,2.83646792737013,4.02785537308122,4.60015538590358,0.416571227302734,5.58921851369047,5.52061835303833,9.71012422062968,12.2079957620403,9.70225063559286,8.57912169447644,7.07727795943293,-10.3725444661548,-26.6579938750051,-51.7262050765513,-74.4434213396753,69.9350640038587,42.1434866676227,-3.11807934275768,-14.8743116593216,-46.6545521563701,-61.5221618549636,-59.0910095182896,-88.4951820469435,-70.0444222384316,-55.4190374929555,33.9009216293733,-73.2644343759057,-61.9850553786773,-98.7674255552532,23.9623316307649,-25.6884007107759,-37.9472702256971,-41.3758135540962,-39.4651108742408,-39.9904452443282,-45.8690871536167,-51.0727271602212,-52.6159625611894,4.32939240798958,3.31760616600821,5.2543782701645,2.74902219900427,1.44898661196171,17.1427755651601,-9.64368209987982,10.6427393950481,-14.0125625244394,35.5703946299571,-6.82288459435127,5.83995765682696,23.1538372253688,24.9554024222475,0.142690606176466,-1.10380445769677,0.439667782685323,45.2708159754624,46.0959201940566,63.6552612980237,14.826365836966,8.99932815483604,90.0481392682142,0.946045452372327,-46.8683424516848,-53.1102551162978,-49.420194878717,-62.9828046744551,-17.1655541866208,-2.26848454888979,-39.8539783563852,-51.0796344458919,-38.0976157808192,-34.8177989192201,-38.5357411804284,-32.7685366356242,-32.2004875213055,-34.3010392891406,-29.5701332927435,5.91174486608004,11.2157837468065,10.7684935120867,3.84139722789554,1.07474625939696,-8.90787526851805,-3.60309188912792,-3.83894174181561,23.9518560221909,-8.92366775096759,-9.04284771544741,-12.136750115821,-15.9161915117473,-8.51325960696022,-5.28755408420179,31.6638613048705,11.7148236570877,30.1025219727725,18.7686087997204,48.9807993012399,43.0433776554702,86.2934052792785,57.6259843148746,69.9941299228904,56.0752839266083,74.2224730140029,92.6349066208911,65.3898331210399,56.2812712384137,73.7747166144428,52.7076705660089,76.7797595812924,98.8389563568946,71.5992319160252,53.6263477966054,58.5370268963063,56.8550161891974,63.6278207343216,57.6757814478727,61.2755788311588,41.5927237115985,37.633587982124,46.9713485672376,40.3393243708056,16.4039142863515,-7.13319452258483,41.280285414321,-1.07189318432907,48.5886526720824,50.6033423683264,-31.494802561335,0.874070020359554,-10.8063827813265,2.04018282110852,-13.6836502717635,4.57085031374628,-12.8976683051842,-0.0159529309659097,-10.7223645634606,-8.36755465067462,-16.6387199657959,-7.65203583754567,-16.4227860823398,-7.64434486141266,-29.1575037036343,-12.4297736108409,-25.5614779325509,-12.9296288492531,-23.3351337539366,-13.3701740725461,-25.3809725567273,-24.6142665239139,-26.4598021552354,-20.4727936118108,-27.7326930016777,-22.0329140217253,-39.6101351593677,-24.2851489982354,-32.0833381434976,-27.3405178314037,-28.458272745983,-24.5094037174999,-33.0246214065293,-32.7061237061485,-31.7606757079033,-23.5984175922018,-26.3123698397891,-29.3820773768975,-31.3319412741837,-34.7046315607939,-32.5739746441585,-27.3209164138615,-30.7922175189418,-35.0317776205657,-35.1766596177157,-34.4620838978023,-34.840344528752,-27.0077536800539,-30.1256740340567,-25.3156567582732,-28.280799667727,-33.32634580647,-28.0572620431238,-26.1993624960483,-19.4832887986634,-29.692145879782,-27.3188820146513,-27.5046525802266,-28.3841429257941,-16.5016751779801,-25.8908715813875,-23.4819716685423,-20.3067352075417,-25.168733065686,-13.1662129427425,-21.7907787957016,-19.5501843287997,-11.1093192725962,-21.1068966527187,-8.98811518630343,-14.9173198606835,-12.6984187084863,-5.92150048144498,-11.6134869953424,-0.69268936408638,-11.9750623965705,-5.86669885515741,1.87389708733794,-6.31632053063845,3.81978830735265,-5.7281618879325,0.735397154906672,8.68020592677179,1.48844638107974,9.87471054573755,0.229060888505056,7.93074815001369,16.2251580335048,6.50121980502516,14.0000897777129,6.74435096267571,14.9876286020381,21.6707597786115,8.07926553678941,16.3239067773423,13.6943755086338,19.9944039887346,28.1764117144029,18.5855446043359,22.1593458571224,17.9705201390296,26.3533433833944,29.4238941183365,30.2685839136717,30.1715391744718,18.9262687733748,31.1038066495782,33.6078049716392,28.7784576444773,28.723802852332,26.1113601384068,34.7608497559552,33.0993121150452,27.3866800921558,28.4110961749146,28.9820071317516,35.2689016548285,34.7152851371816,32.1962450908837,31.1703904705586,34.8400868377145,30.8264250314747,23.531700059129,38.3756570050826,42.3352140312452,21.1098693874504,24.3134247529085,29.5519823547923,24.6101133189846,29.4234379379577,29.4907991899798,31.1743592260908,23.7690503859858,23.99649692882,19.3110000453995,26.2963495137458,22.3011968139086,28.0270533320822,16.5686053818497,23.8725902119259,19.5186550834244,27.2610817452908,15.6219507451901,21.5265690372252,8.14319577726486,28.4525694636812,10.8130617086749,21.8628477880931,5.96656161071965,15.371095173106,0.581346763633767,20.1213353628314,3.21426110425755,12.9349645773484,5.08498608913878,4.94332957988348,5.69248841285871,306.998932552363,310.039838089443,48.519400863954,296.076883780292,299.800373953594,242.96317416075,269.793474914628,28.9227955248421,325.42247535607,45.5782386721613,359.102496289003,46.8749143933814,291.021683057554,304.274507708842,230.418182579906,294.657006301239,62.6298732932901,330.720963280139,323.90027191497,389.023328251003,50.131100137512,265.617635357105,198.939509990302,257.797507418891,257.38086927435,281.943169521958,302.028293965995,44.0655949204497,224.009426276401,220.984735317043,167.205017791336,202.065826791684,46.1626533929967,276.495027597636,247.528200395384,377.975404205355,400.393998021965,32.0115178774871,153.185839587044,66.4559831303397,131.800996194302,158.009436219416,246.142139275018,172.048318593117,126.773069042999,21.3072747552813,63.6654733915418,112.00560731589,12.5307077023079,63.7168763706386,17.5934025277259,164.675841165033,99.6586251111644,288.216990039937,13.5799944705595,48.4244376014868,-54.5643944064944,-6.89423690781646,29.6221522914271,57.1086560799927,23.5753095546236,-16.3104127261128,6.72491729216464,-16.8236389783897,-104.239651326558,-92.2341954212299,-6.07800988799047,99.0002958263338,-99.6776945776574,-6.35215069561717,-172.057449980572,-81.7930198931125,-132.354245959265,-176.742363602238,-106.551924561581,-124.526636745217,-138.514916058279,-43.5514879514836,-14.5304278695848,-148.420518404374,-208.629676930156,-225.870100673565,-170.482244656043,-216.442550405578,-211.379075798768,-74.6767833181323,-215.94440278748,-26.9864420273963,-299.667393271603,-199.452407247409,-327.381863340365,-231.469315925049,-35.1360982616146,-191.602774750182,-276.270229563818,-172.35745928009,-39.5263085810624,-226.849143078627,-299.826722412791,-287.029974870242,-58.6185763849361,-256.657647805336,-299.466211964576,-322.860587024758,-40.8192494917547,-358.660202708731,-283.017466057194,-300.166222545181,-291.737713003876,-314.432360060689,-306.174225796792,-318.820779613201,-50.0241953127476,-311.077873882064,-378.212504140795,-331.36975313583,-340.888449339633,-54.2195569565817,-355.298523838556,33.4672910453758,37.2943396977269,53.2629411747051,37.9707292906286,24.700815034975,20.9922536958149,30.7474004825824,23.3385291620139,18.5624602793919,80.0660696812073,329.584281403328,14.8419700810278,11.4923932225663,26.4776888443053,20.4831457165931,7.73633928188425,44.7750604728215,189.850081025598,7.43306775610968,1.68465989993286,13.6347615364118,-10.9013582919943,-14.485764654975,-18.0725485451983,-64.2367641769436,-5.2315316525485,-24.1532088825172,-36.517322310823,-162.956503052351,-10.3864145979238,-25.8167439363834,-28.716281740614,-62.0122123886925,-244.237284595472,-13.315164343972,-32.3415001686403,-27.9813571018232,-20.6250239063529,-49.670687113361,-25.0289516148843,-35.7602013016644,-31.9014559885611,-30.1259434005926,-39.8055604214791,-90.9851591095526,60.7873414336785,50.8995697982096,38.8453838517183,32.4170319400296,-12.9877679279468,-4.44291309290621,-22.2070506338834,-19.2041613022364,-36.8838942946634,-31.9223190862056,-61.6470662378777,-53.998764609661,59.5149621075239,52.8844790538626,38.2898377180812,26.7669951075185,-5.31483205497695,-21.0642515838161,-34.5160485119669,-46.8256418719395,-65.989836683235,-49.0417087611932,49.7798421520641,30.3997550780671,-5.12264506294684,-0.958274110618251,-7.0025801352411,-18.631001809781,-21.5218727029425,-33.9039824365639,-33.1080769099767,55.9767343009316,34.434841537652,-6.99241814429444,-10.4074986308862,-12.4731843129702,-25.5540783400975,-36.6419992052297,59.3960079318075,48.955479224276,36.7776401983931,27.5319413703421,-14.1863678212603,-24.3552324135692,-25.1780489539194,-39.7691561414329,-37.0305278848077,59.3496783720406,36.9526042415791,-26.6796348901412,50.3214384500546,57.3798334030921,69.3885648902763,38.0577872489453,46.9318627447875,33.5638725399265,-29.1716159016871,-31.3841341399538,-27.7033742188351,-57.1079778039002,-100.447162132123,-55.6797652311148,-1.39923636072072,6.64173259306056,0.794848684163188,3.20567854562727,-0.87908586938977,1.8244362742931,8.9510677850474,6.53343063521658,8.48769738683627,-55.4377296475859,-1.69678317622356,6.15753750281842,15.9666857614225,-20.9845602352267,-38.2859824312544,-9.11733642780831,-5.25824456391577,60.3441545125232,32.6975704913948,-13.8728949601547,-49.9005281476019,-37.353341219191,37.0642755565873,-19.1240612832366,20.4000725056933,-27.1521791823926,-22.4990632166741,-19.1786483520274,-22.7096344962585,-15.324374515098,-16.0976097921218,-17.3326318811553,-18.7957952999806,-12.5138135968458,-16.2733890177156,-22.2675761342094,-21.8063690053528,-32.6521351394512,-25.5684082899234,-35.8186762451782,-28.8126995484069,-24.7687340222518,-30.3448351645113,-28.7784695080411,-68.2638689467349,-56.5456911938194,-74.6788163559258,44.6733680578461,36.659210941868,18.1751083648269,25.1428006325869,-17.3615306321305,-17.1749024783557,-13.0653798619777,-8.70561812002013,-15.388035269255,-13.7827918889145,-12.8721779063642,-9.43570588548708,-10.3846288130768,-40.3478265800025,-64.2891327428718,-59.8029517427607,-56.2785079214195,-59.2528584749061,-44.2970280802313,-71.467969519239,-48.212925490922,-49.0496577650409,-46.991032902366,-46.2545117589952,-37.3370019835039,-42.0786403531765,-43.0153827004674,-34.9837280411463,-45.9015995536099,-37.9501859934969,-70.9087480935939,-91.7243919532791,41.5793998282656,38.8612833581618,42.910426008081,22.6838573319679,28.0336744675861,26.1614629765498,26.9548610757698,32.0530356975767,23.3736692754317,31.6308331138316,19.7207896922522,-5.17930561493905,-39.0151807963175,-44.4526389509677,-51.3619372024116,-43.707329636488,-41.5496342580661,-56.7015337836236,-34.3516026128192,-69.0304579460299,-36.0132181259575,-32.2223469974353,-40.6921995641522,-31.1378811211473,-30.0067406147753,-24.2162442477723,-26.3093500641477,-29.8260048931247,-23.9468604271003,-30.9750435712214,-26.7406986983337,-34.7008980670639,-21.8572696955454,-25.6208650887246,-23.29862993824,-18.5292241951661,-19.6331787026831,-25.0035240187417,-21.1362920947361,-22.3034111299585,-17.5275758073008,-20.2932080345434,-22.2023124313895,-17.8775168108925,-14.3682976852287,-15.860855161527,-27.7155350902768,-23.8694140970823,-17.7712004190756,-19.305724126791,-16.0554263975907,-16.7145843677471,-10.7169660041306,-21.1690471157794,-19.0679486008192,-12.6467562317609,-10.332011465107,-12.8968614238364,-11.0604393350328,-7.11874474683515,-8.48408339633465,-6.22478993956609,-8.1148877156825,-8.06483418911698,-10.4093063302744,-7.78970276806226,-3.89506461748558,-58.7136001301885,-62.5390045985597,-52.2701640339009,-52.1678392583339,-47.694715227181,-42.5661210978727,-60.5808052680658,-51.992379309132,-45.6539503076022,-45.3706888198599,-50.044011649116,-58.0559971794801,-50.8734010057203,-37.8823047888025,-40.7471918076991,-49.3772451593571,-41.177149462991,-40.1255098205172,-54.9505113182698,-60.3326729271327,-44.9956742981055,-76.7707120616729,-49.1661559496843,-67.8256606476403,-58.5484998465549,-412.224215932407,-55.5245210194289,47.3163096103205,41.4296044457731,37.5182744968892,54.870717727851,60.9181387323132,32.2578742791608,37.5828264972977,47.1641758268411,43.3402127129514,44.9301507367726,39.813493394501,42.6048888583567,45.8205788688137,36.2425696109297,16.2757334322389,23.8887622681031,13.6767008788433,23.6806754396213,-7.56597372390154,-4.39266811325724,-7.10604438839502,-5.27212707202319,-0.973295948612663,-3.25494276715006,-1.75292230449848,-2.98888335922293,-0.713427442493281,-4.51765114534293,3.38030955630671,1.13038910675843,1.10602745446918,2.95185178152797,1.92323643250554,1.33471456228952,6.08976188773133,0.316389291164773,2.28655984448891,-1.97664387531415,2.34919886912502,5.44870222881732,0.233933123397091,0.306384398221522,-0.559097290242941,-2.23713154005364,-1.12924159093522,-1.48087340535863,-4.02079663711909,-4.07622678456434,-61.1971621612581,-69.4384931145577,-31.6007893016182,-32.3666916292065,-35.3796867853416,-31.2782515102853,-35.0742700090254,-41.9541985747874,-28.1427941606205,-25.0612298089307,-28.8410685477801,-25.3715276011705,-29.6915540597077,-33.3969464961041,-22.2720066129959,-11.8732346365599,-14.5226641214722,-15.2962704617888,-13.4064633055944,-14.6009871140618,-12.5962612378875,-17.1618230892821,-16.7620827593247,-19.3070520458525,-19.7969466834987,-17.2727589234468,-17.9661138875936,-13.9986810652918,-20.7425640539109,-37.2795060383497,-33.3199651266206,-69.6535364714018,-43.9498295274942,-52.316215243054,-97.9474560265617,-63.7573997491013,-65.9142637388669,-57.8605416798124,-69.0963572989974,-51.0265860592048,28.7794722220826,25.0427034839748,26.9355689376567,30.1840541196657,22.9043843512999,30.4234488679341,34.5370404087934,28.1630703700307,28.7420693482101,25.1039112775319,25.0958490775079,21.8514419866795,17.7436575126698,50.217653184887,53.6327691640981,39.3658178559146,29.6788014769545,18.1552597483565,13.3039103810052,16.5178482226207,-9.12113442842363,-5.47450773397381,-45.8268327602368,-43.9474797334298,-52.6277228970321,-62.9311837565145,-40.7345409822283,-35.4100780187042,-37.8575670665051,-9.92782636671377,-9.28947734744258,-37.7632400313736,34.9306737234366,32.0890570692873,32.4713187648683,23.0378984553235,17.6784566643371,18.8628526437427,55.2222509309188,64.5309442441639,45.1629407540357,49.4105981908179,41.1199172879624,36.4964458697301,35.7113378414258,39.532440848033,44.615896437241,40.4652209285375,35.6868113425348,37.0856910087178,30.0716430999586,33.1140166997579,30.7655606499541,17.2499030660899,12.3192603193074,-37.7510005956145,-47.400436858511,-48.6878199525053,-46.6175633628346,-56.6437597107913,-57.306597636365,-62.5274635652073,-35.9240648924772,-43.0471137114079,34.591245148871,24.5856163392535,28.2938545675782,21.3864475194531,20.077397468355,20.026911369473,22.0209112111638,19.7417462736975,99.5696987545974,14.3859589190199,14.7034626363696,-51.4867942931814,-45.3625671849316,-57.3980772970862,-41.964872444586,-47.1827277844434,31.0092203100267,23.3391949892021,16.2276354295457,19.3574264498325,15.6874806814936,13.7034627511548,12.4392406060499,-40.5792181410213,-39.8529798022217,-37.843766180147,-34.6224872233189,-27.5770610961993,-30.1973051998245,-26.4235857032913,-31.1126502621793,-27.8439999848366,-21.9504521940436,-24.7957836051016,-22.84106501547,-24.1151416293098,-26.4177772413057,-48.8067689574066,24.737479681793,30.2486574554135,26.9810242253152,10.7879890982021,10.1881480241012,-32.9446845575438,-28.3368902957391,-22.7715424712869,-30.7520605996335,27.7336366711648,27.5176153143227,23.6382149962327,19.8795745063973,20.0657729747001,21.329612465613,22.1788562215068,25.7357634504543,10.016336485163,13.4672456901309,12.0107165787752,11.0410190070078,8.12213675640727,7.33455894201209,6.49167218408548,4.85275870715166,5.94012656885073,9.57152736724999,3.57432254118528,5.40919270777861,10.8717654569787,7.96091553516754,-23.7149182902755,-29.6994891839552,-26.8741145309436,-33.7587193717307,-29.500614722276,-29.1753268139816,-25.4766901717095,-23.3939412345428,-34.2664807946678,-32.1597380597336,-35.5066597996611,14.3525885512911,20.3641184643161,17.1140054592785,17.9000308333432,14.5112199582394,25.272649298217,10.974724078199,8.09471520775069,7.69882962088653,8.66551639840101,11.3121087203577,6.0335471199506,7.61337498120492,-17.5007756796859,-37.7628344216137,16.8345227174232,15.4825364720596,14.2366717323344,16.890040681828,19.4774565647288,19.6885570266729,19.9552935315588,22.5418102728816,25.4539474975939,22.6384471105923,17.2304525989698,15.4830550369126,14.1416448665136,17.0677320598307,19.8593509658955,17.5383611248376,15.7213496135915,15.0738453187021,12.329367213673,12.0164985095154,10.3042829322128,7.72621564960735,8.11425440422762,4.98129830545094,-20.8065776061085,28.3541142455,12.572952534986,20.4629457383473,22.8103573428349,16.4474354770567,13.2778875012379,12.9545652739979,-20.2539217403947,-17.7556073207287,26.0178968057654,29.3468050824212,11.8326849607528,7.88182585751895,9.46698135167654,10.1562695466194,9.34946111633948,9.96310316469401,13.7129821263059,21.271894619617,-20.7493880168371,-17.4487833102072,-16.4617048571615,-18.6164994997522,-18.3041575807795,-16.4210765531436,-13.1897558045375,-14.8626781934152,-20.7584943269411,-11.0263853835334,-15.7645783747414,-12.7894916765294,-8.33787574369888,-13.6509214473417,-10.2188701579249,-12.1636344077724,-14.6716488836813,-6.8192347815517,-12.091363529775,-9.14487727826059,-16.0942711241713,-9.09217760940793,-15.888993796448,-13.6617486178803,-20.6114280562242,-10.6461751261554,-18.3173241959549,-21.1562245733451,-13.5716087264935,-11.5467901172289,-8.65917782815537,-20.2520057614665,28.0038155152128,32.4894129772569,32.5758831075504,11.6772798722973,21.1003960961041,-23.4145798363756,-24.0400018927849,-19.4438904263757,-16.7586894818706,-14.0723819040352,-14.3374333786255,-15.2610860387281,-9.58329180718155,-13.5223737052664,-11.9526407644531,-12.1194489712885,-10.9060008005988,-10.6350778915601,-12.1460579744389,-9.55760309919253,-6.64869864677562,-7.14289546666954,-12.7019429393378,-6.74488703317666,-17.9407811245729,14.0575335818646,13.0995112300204,12.3841683829226,15.529928117848,10.5945855585517,13.0126336165673,10.7737705919263,11.3818619286299,13.8116567700986,6.49303920886373,8.78630172737824,7.02659012141634,8.26861366165353,8.63713080936219,6.94236071225287,26.0773976002875,19.0071565387717,-28.3141544728444,-23.4873222808548,-21.2082514406032,-26.5583925359561,-15.0762401359699,-10.7609046054814,-6.39143418858594,-17.2392817469868,-12.1084637270891,-7.36645076366042,-14.5580031936339,-10.1283377956841,-17.2429109349315,-15.6746336510364,-8.55419617032518,-9.31936463393397,-16.3891652519923,-19.2430464768713,-8.37156297009272,-10.7647968262401,-22.1337149018019,-6.08960824453573,-13.2460292371839,-19.3573699903757,-21.9481035729346,-5.23299890057831,11.3448202967959,9.31655066085457,7.133754808536,3.41326902519276,5.49246361706362,-2.09225471197501,23.4945468845225,26.2484031813605,25.9139633460846,31.8092423995894,30.0442851897018,28.4374858153612,29.6472947024223,30.7169911765901,38.029947726586,35.6745328991129,38.2918568202422,33.7961343727891,40.7718606225436,34.7155497486614,35.400856150163,37.1753751436542,40.662074174383,32.4765027923249,30.7510429868801,23.3531176313394,25.8064246683236,18.2152433853684,17.2779152671647,-30.2994649454771,-33.4337917188617,-35.0359534780208,-33.4386216259115,-7.63395654098253,-4.50365263552959,-9.04168082891514,-5.20579648337943,-3.74772711707854,-7.89995320662384,-5.47292575867499,-2.2496855675459,-3.54118926805224,-0.517359502965414,-5.04480040294745,-18.1217979504693,-19.5087076985197,-28.9588519050217,-22.3980470846462,-6.52306989273734,-4.32695820834297,-3.15993731995105,-1.37083509983865,-3.00881309473102,-1.67079089653123,-3.58053379754217,4.40777338338115,5.60035236799148,4.35033259944185,1.22885734361379,6.64035819436511,4.15610733076158,-4.71108316718678,28.6911619019065,26.7937124724612,38.2504366646921,19.1391242798466,22.0283352455793,16.0466526598823,20.3855411953354,21.2414709716465,19.6940269662277,17.0078035017555,16.7390332610142,13.2419242416284,14.8321388733897,12.0126120931657,12.1059712938121,14.1711680590912,-31.0675780524585,-4.67697473079369,-10.3443787964056,-0.947737082616934,-25.2126528382068,-23.1035603596475,-28.8927342342966,-26.4140209897534,-26.0136680088447,-26.106234337186,-5.07278465430236,-3.27577247565129,-0.969676533245808,5.68387598933939,4.39874236259361,5.78169306433757,1.31522121786308,3.77228189482578,3.10418898278034,0.000250851375701546,1.43158642462567,-1.01413120455235,2.17367918141688,-3.38069994698255,35.943674452157,16.4494808425793,-28.5881787875218,-2.26112332528569,7.52110952657229,0,-0.0601887834061903,-2.25093330217206,1.35162891044669,2.14216560784938,0.951510670780152,-4.02235676760436,2.63766709795669,0.252143072465579,38.2897429535275,51.2511700072055,42.5011514502635,52.6747422121462,40.5159970713418,51.5414573688833,54.9925558137733,51.2336270727593,47.0610830811048,52.1377412698045,41.3977635527077,31.4214107706808,-27.927872107155,9.82312620286831,8.59640031497921,8.750073748753,8.68906352220331,10.9644044008166,4.10214395725044,14.2572651226162,6.45939537093306,11.7361902497222,3.33869880644535,10.6202576233627,8.51837220008143,4.10840865658349,1.84387412234122,5.42326924737154,4.37982701179703,6.67755282645605,6.74014594803063,4.82236679547743,-2.97862169959437,0.65935318541828,0.0436474969052303,-0.840425195901774,2.07319330878592,-3.00189807022743,-6.55128616498177,-2.25684863031269,-3.82821330475395,-5.80147986646787,-5.89937394580348,-7.98299522414207,71.8209361284148,65.4725209264504,67.4004264760014,30.1321155722238,33.9547862512364,34.3116030821068,-24.1180466911304,-36.5469786833262,10.6610073503546,-0.203285875449258,1.21486875112862,-0.0077463998099634,2.23815640991364,4.45390711380622,3.79379572916075,6.35451818192456,1.72620751011229,2.54647195040595,0.940759515150579,-5.48004710044244,-7.64831775141959,-4.75278470089121,-8.37146288347182,-9.68759793762626,-12.1740902473603,46.2501566418165,-20.3041187920865,-32.3867935805528,6.87985922660671,6.30233957863846,-11.4061598786977,-11.3786417643932,-24.0703071166053,-32.0588816854006,-35.3522266528363,-31.418321859075,-26.7159362327753,-41.861174728718,-23.6477752747883,-26.5420260292387,-39.1971155515782,-36.5902375245476,-20.5019036504214,-43.8377152719299,-39.755351778188,-18.8951380711242,-20.180028358214,-15.9798386101277,-23.0174160473019,-38.6228885080374,3.45403244857353,11.2758925995728,-29.0221523121249,-34.3244832066293,-24.3185409287922,-34.6424119039507,-39.0833057318701,-33.0338224238785,-43.0051832987278,-32.4861455844628,-28.7172188684002,-55.363818326333,-49.0870330259386,-53.8309755000019,-44.7650633994898,-0.260603032775479,9.12872350276896,4.58482408342864,-32.9678242182689,-26.9014156848021,-82.9905904522141,-62.9618515580494,1.2797047349699,2.23029417583164,-0.968278089277253,4.67993033992872,-1.23947369814767,-0.382420123018255,2.12220133731278,-3.81021648292894,2.28020460827993,2.81689966369525,7.46811958352795,0.31791086686912,5.03064859196907,-2.12957392456011,5.10221670622871,-4.19269767532271,0.131275293893503,4.31532080414359,1.79511449396763,-1.94388109884863,-4.05108216121301,-2.613286602396,-6.29163862449081,10.5686960646437,15.2600182482907,12.9959625903901,15.2845992227006,12.714768770115,16.3283823784554,14.0535613582291,13.4871905755903,11.8291511108793,14.9446537824837,19.4041645516405,16.748685765022,18.6823030608558,15.8232684974426,10.572146702652,13.5381865283113,12.4486945405261,8.95285533103018,14.6571925600925,18.3301465260939,15.5908536515945,13.3277312390204,-22.7905475357841,-36.4911372953898,-48.2472199755517,-67.6201654564066,-49.0006888300761,-41.7629712552579,-52.6533046219039,-41.0481018100031,-45.0050478107146,-44.0660383129958,-45.7663966855179,-54.1019946347496,3.12862083597354,-6.39883362289971,-8.12555820460093,13.2745839022561,16.8846725055082,8.09046311959315,6.74415763902856,8.3279931228691,-23.268849865685,-32.4537633609584,-26.2926189711889,-35.652426097986,-27.6249394916453,-24.4099894655673,-36.5115364894115,-57.0663287337361,3.52583816871727,-6.51648776618447,-8.91995133798467,-5.52445987979005,20.184195490988,21.0823941297167,-18.311282100006,-26.3455587884208,8.44133391657702,-2.07067752125324,-8.49330122670353,-5.33817822150568,-13.0175754138349,-11.3205985993325,-11.0611153002399,-13.7224062637343,-15.1135663122693,-14.3258092294503,-6.90387201344742,18.9480870466726,25.1236986690426,18.3549061319512,-20.5749928021329,-23.135873231184,6.10591611469624,8.62911779437309,6.20621717203231,9.40441852581306,8.28866011544765,7.28912816067043,11.9608940642291,8.0377872056165,9.76635317140224,2.22553584681976,4.11949435402612,0.164579832597716,0.579420607597143,1.44232195195955,-1.97153328360927,-6.93440963052995,-5.38560808459118,-5.32159113872817,-5.94818404256277,-9.81064292302576,-17.4139387249877,-16.8673610336849,22.6370269714402,23.2727975297846,23.3988988408784,18.2182769433656,15.8934029603481,21.7178592884018,16.7810452225691,21.0290095896934,19.1316435514532,22.0591751772986,25.0136067936329,18.4388114453203,25.5774776600703,28.3122684064111,23.4036166318526,24.9222838829004,25.9365018701665,23.3144383047378,25.0253354111617,28.9068154605359,34.287699867983,32.4302821166757,30.9508762244549,11.5323034882722,6.78197796231502,-14.8003521902442,-10.7078615472393,28.9433307999114,21.7114582863894,25.1274295550844,19.3992599322258,20.9866112669354,39.4332967866783,27.2045410592912,7.10464328672554,-12.6238757208714,-12.8210967612201,-18.1008874710156,-15.3983482283863,-22.6018580265974,-16.1593057601197,-16.0365626382489,-25.5258558084513,-15.2866720726091,-10.1718110136448,-7.80897889559098,26.2507703784643,28.5225343083894,27.3790061236207,32.0350034916238,19.6198911835582,31.182993198765,33.3150022251754,34.0497081985799,35.1987760227902,40.2571586612404,43.1960018949494,45.5854271725785,31.5613827453431,41.2711901010344,-12.6699841796009,-9.30919769542724,31.5904522557499,33.9029239636339,29.607808966538,27.7668451941857,21.5311574971944,25.0935195093326,18.356174461266,29.6808716204057,30.097496313443,18.3835254381772,19.5993107881723,16.8884993713145,30.9237477247372,16.4554053998257,13.3561980813186,66.6350426845945,36.5963012831678,45.6535273557903,39.5619999179718,29.8581084031961,38.7881058637652,39.0346846421122,13.1890809345699,44.5820851363336,47.4143502138696,37.7419017949688,49.377495626642,34.7694228533941,37.681638250472,46.1195501092352,45.7298463985652,44.631706848955,47.6678251815932,37.4510920576128,42.2595212356311,47.9350083208466,49.3494756531806,48.0839484625915,60.1196394411457,73.9287861238163,71.8529602699256,52.5511793010469,53.4534262209783,47.7283318472848,59.0657155642434,37.215453859332,48.5381424584056,54.9110573433505,355.813722131375,363.981782503192,335.180079430862,346.267392590372,340.224108221307,294.276005797197,331.38700931876,247.21137977495,263.842006122168,194.806164408747,237.664926652265,126.464779092876,116.578750931219,57.4096399040744,95.089809403812,-12.7989133573589,-86.8320166388746,-157.431618087014,-216.856092778089,-271.048666937816,-271.590134234147,-317.282732802784,-249.989312387035,-314.458526548344,-293.688315829088,-317.546172371036,-350.446861578858,-362.602934165014,74.1941495370587,56.0757429593418,75.3561148114269,76.0039792486478,69.4542200838361,55.1570568797548,75.2499578098886,55.9436669052282,59.2719593346985,51.5217285589867,47.2752830826758,49.8461229472718,50.6855498073304,51.0818998285924,55.4022260973857,44.6165057356663,56.2397673630679,62.1042995012374,44.2889308886284,43.6955548479532,46.324222675301,42.3891429865368,40.0431957043728,16.5620139376843,58.0148548015635,11.5000919995756,27.0165589626504,-2.06976849302514,-3.88723602778477,-49.7468648114071,-347.233252187931,-0.308439605499099,-5.08496802110438,8.47961349358014,2.74676123449265,12.2422995848473,14.440176199642,14.6520996721631,24.9434851741024,12.493831305055,11.2351517056458,8.28896339486535,29.8293854239189,-4.74267284730427,-0.367446232352669,-2.86105404804637,-3.10668832758868,-13.0587004217401,-8.46917626942622,-5.27750182299328,-5.36869980546372,-7.64674219673868,-10.6128369246372,-2.32103511904559,-6.81843307353898,-10.1817790837591,-3.81815773249261,1.27057204064442,-1.7750136449292,-1.15089275295475,-1.53200830531908,0.492691154256783,2.13804970810641,3.71843015106966,2.83725901786385,4.03099926484732,4.60287060223701,0.420888413698463,5.59448055823562,5.5256361070185,9.71643988303326,12.2185680527469,9.71163524497114,8.58617562524679,7.08609486135977,-10.3799435349317,-26.6759167466479,-51.7664099991399,-74.6036862299162,70.0512418767197,42.1875268296988,-3.12258521943533,-14.8920937724634,-46.7778464839226,-61.5680971056801,-59.1307996543043,-88.6058555124283,-70.1516807359662,-55.4768563769768,33.930004396139,-73.3539996765357,-62.0242432850044,-98.8997103668162,23.9867690834238,-25.7147668119616,-37.9796381156139,-41.4266058091244,-39.4905279794032,-40.0260513467518,-45.9093166209104,-51.1229848626554,-52.6467032728783,4.33350435493372,3.32278552586933,5.26109890300652,2.7534450668706,1.45124106040429,17.1574855754434,-9.65722713960144,10.6599939220768,-14.0261852870952,35.6001485372649,-6.8353497939277,5.84907845050655,23.1787647573023,24.9820330790639,0.142689306191979,-1.10697223382161,0.44299857868443,45.3031994550569,46.1418515193288,63.6904162434599,14.8429525949518,9.01395233704567,90.1507504850084,0.946920780203805,-46.9235935164899,-53.1631737934236,-49.48335979223,-63.058931833267,-17.1799513322404,-2.27077634172338,-40.0318207846209,-51.241959528039,-38.1257016113723,-34.8531939838901,-38.5644631453719,-32.7975912388131,-32.2262195119842,-34.3291498117391,-29.5963602423852,5.917066669632,11.2225951696349,10.7770500005336,3.84623925875453,1.07275809371698,-8.91868719750209,-3.60499067714662,-3.84722788810518,23.9708042879808,-8.93697484894937,-9.04654455147782,-12.1457975075097,-15.9318003870994,-8.52657130828542,-5.31317572122521,31.6946754281375,11.7457403961481,30.135913172068,18.8032821041395,49.019220056841,43.0728496407048,86.4053679922958,57.7633175196215,70.091243386791,56.1074418514697,74.3048999496262,92.7413978567036,65.4299917720648,56.3290680132922,73.8668949901625,52.7430992792528,76.8512655707753,98.9769488289549,71.6757484576646,53.6615442476344,58.5859903770042,56.9040076271675,63.6719854789934,57.7296101974911,61.3314011125676,41.6251710999607,37.6682212586277,47.0089618903254,40.3722575420027,16.4244126223469,-7.13909978553246,41.3113651124148,-1.08554874677346,48.619762926614,50.6391778989894,-31.6195709438654],"Archive1207_field3":[30.5880748287786,31.114799810596,27.524885763218,30.7309029850877,27.5443871292149,22.6233671423797,24.823025004779,27.8509020073508,27.4382501596074,23.466739960579,24.4274030978607,26.0552853274862,27.0792830325065,33.1420720374687,24.8310940741709,25.8904899908112,28.9795417106921,22.7798650763843,24.0798376777963,27.3473611493396,28.0452750518699,24.2174088496083,24.3560109570401,26.1479427579458,27.0531920183376,33.1447355141861,24.8342853548167,25.8762957769496,29.0204316202131,22.8409728468006,24.1684257646566,27.2871285808327,27.4139406555648,25.3745413374725,20.3610487001672,20.9479997906404,24.8166585647367,25.1217021661625,27.8143397214778,26.0895451691495,22.2123278903921,24.8465271953354,28.1390380802998,28.2907837473099,28.3106780035381,28.2589295701423,24.3734966189466,24.2632179505565,22.939912250003,23.0191890336445,28.8494884579325,27.6102916384204,22.0078755561306,20.7943559827085,25.6202555028443,26.1587515579815,31.9245624112997,27.7878870857784,22.0734131997478,24.7160674050805,26.7959690883084,30.8396391244891,29.7611787853127,23.894360991983,24.2673803874985,28.8572294976761,26.7629391123363,31.4388637733188,25.9850151902416,20.9835807763117,27.8542139747775,30.6567588557195,25.352028663274,21.0105507230367,25.559704947069,28.4577685598195,27.9774321288719,25.1647062399856,23.5990817541512,23.7504073422368,24.5979094619453,28.5759870548928,27.5083975062389,22.4909942297673,24.574708432375,27.4333771685219,29.9983247461357,24.4527785686837,20.6030553324151,25.2863974677007,28.2539592222853,28.4017784113403,19.5212230102855,18.289304822248,26.3877332134893,27.0171682093846,30.0071728497498,25.3172914777991,21.4442280181436,24.9860047401579,28.3273157438695,26.8735268088821,32.2672582464173,26.6612301569461,21.1338128833688,28.7821938722931,28.2431236136787,26.8080752647484,23.4745726475009,24.6423952924813,29.2789448570823,26.6247076777165,23.6459333725695,22.6437617301152,24.7124929398774,28.1431889151319,27.9100211514089,25.7415442400109,24.9423353326492,28.3560992963942,24.5617725382026,21.0013761338295,30.5215242432987,36.6499040521409,17.066728084442,21.5808643318804,24.0426805347262,22.5574747492512,23.8883044279753,27.2254669676254,27.7175794017223,25.6129718519656,20.6284320227849,21.4931811976698,22.8255928452812,24.8151332663524,29.2134824685172,24.2653276080041,24.1232333643911,26.0902550308717,27.0996475487399,33.0599158164911,25.1377135129721,25.2828388984974,33.2383472324899,27.8635877371332,26.1933914700179,33.2689251049945,25.0487565242305,25.2283478299998,33.3362399048926,27.8328018668559,25.1632134687476,31.2652197000466,32.1144517179789,35.0109363724079,255.696616233636,245.125019742104,37.3283315169929,258.807741656898,243.734891862858,222.315351589419,217.36844894287,21.0561596584138,258.967804812317,34.6519061315291,288.071062665013,37.2403587509611,281.142752795492,264.491842846029,247.805846210673,253.527642562981,50.1795666191882,262.731563541245,267.807794930598,308.849970690028,43.3383051025735,258.914540365653,268.607412424968,262.484182416597,235.9081593878,259.736036651036,349.99401293843,41.7009043673884,338.567658730574,256.758314194806,309.445151851139,253.009816288397,50.8468504398378,258.863941141395,283.434408191228,335.584394676421,336.428789685013,43.1298960824297,234.46703232342,232.772097644675,261.920647249955,235.911777501448,335.73948545422,259.585499259522,290.709068190924,35.8697168559849,328.257686161646,261.763817503356,249.309133741373,249.645485893356,48.7893172413344,258.945656328194,283.443406498805,336.420012814635,41.7594924672441,264.828465492068,251.26084569341,37.3361262647702,282.112896389432,326.241237383825,259.380295127355,289.229715190334,20.5811195925794,257.564609785816,228.956161183292,300.113268698358,46.5630939546652,300.946101429656,325.796438702825,40.6524225327273,315.424050074463,259.075224352502,197.795787682096,299.268036657206,236.653544629946,332.128404527409,276.178789461499,316.03083277735,32.8405458126681,265.950341822787,236.768657443054,261.491077227246,237.134308608547,332.093661446541,278.811348968029,336.07611894957,284.148316195235,41.358313158694,316.206292724743,259.584853301424,316.280343659228,220.053978571864,37.8488548389731,257.519895453711,283.630396687375,336.289099815655,43.6155077691406,237.213881773101,257.791717392588,241.280572500799,49.9832286977376,264.210020307302,267.956407997336,294.536519851218,37.3143692622992,299.313485854745,257.76002149945,243.0904846734,232.286243270128,249.785891608171,270.512713941886,260.172311090955,40.3467055797811,259.260033033635,304.917433424748,263.989895628827,271.913549393202,41.8574674979981,281.179347742608,25.5452418577993,29.0465678578553,44.7215971853422,30.7333863148193,18.3891688704037,23.8764664729069,23.7543824772178,29.0982403197726,21.4107241473872,78.1971684299037,313.765438137212,13.0468576307842,23.9882339572028,25.5533882114484,44.3433790959979,24.6965396188906,78.0550022139866,313.779427364802,13.0218730415777,22.6187407317799,24.6317747472205,16.1680470498169,31.8187672369447,68.4356280415628,308.281616218308,36.6425185617986,36.791511131404,68.4516963923993,313.885876418845,14.1543180881553,28.4608087622524,25.6830572761007,78.3032145024598,313.704144146408,13.0020792650451,30.6716572220384,22.7519061562938,25.9152120267175,45.8038635929458,19.74783378105,31.2795632102433,24.2641144982415,22.1972884683829,30.2691358410646,72.9601430936624,54.2031868596952,44.9133557480342,54.3056871096481,45.2331914807058,77.7310106868054,41.9983301889871,54.9982034191222,46.5920528930758,54.0239911834273,44.8770812279036,48.1932340687833,41.0467261071086,53.3259456378311,53.710256974171,53.4211090153661,53.2920123072117,65.3706061587052,52.570520733995,51.750711455364,55.2413876425986,52.5054212583161,37.6843478220438,46.1608552661049,46.1960522507367,63.9389338116746,57.3622724749995,53.9237926964888,60.4226076350544,45.9887471665647,57.6891697041416,45.4994652617316,51.4720736771592,51.5036666594035,49.114321555252,43.5109931946277,49.6369902825168,53.2629972073957,51.2932252177643,54.4090900001345,47.4058062076652,53.5917852248998,47.3639413487525,45.9926652578554,57.0153135892369,48.0318185642773,57.409445251069,46.9795126115066,51.2682531800807,47.1185421649418,41.6458433672211,44.5239878598599,50.3383368611559,60.0479944644103,49.5147453097236,60.5476833975911,44.596809806556,43.3660915145248,51.6208401378932,40.1662610142743,45.4350589533125,80.6679774149231,45.1270894660005,76.7107825784192,61.2420705187081,50.6937606068108,45.0305830888614,48.1290966410501,49.8087489255513,54.6531504942097,50.2303092261572,40.0010370598467,314.485533566758,5.48477297418424,242.365205613171,345.490905348099,61.7595888934709,61.1452958448227,44.867830303986,39.8848501864334,60.8079673776162,61.3296900888109,36.8683858270788,60.1320357442298,41.5514031062638,39.3761138504424,36.7538375062581,35.5340996186815,45.6245721591669,42.0629519847105,41.1362457375769,37.723761048547,40.4215330939801,37.2365522721319,29.5354641689105,33.2546713250128,29.1004757995571,33.0213495264419,32.5126194126735,34.7890066589583,42.8232635347258,33.2124972919201,42.5530648072289,38.1097755112499,34.765706034935,37.0510298947529,33.2135222495011,54.3618577193696,45.5801170984445,60.3644574568842,45.602090145185,35.1303236730598,40.7820117093549,41.1051300159561,45.9482268841837,51.6833383034393,32.1051984947393,30.1451136019326,29.9202410755168,24.8703146016942,26.9547668809684,26.0705808477986,24.4562575794474,45.2576474269284,51.3934923896185,47.4412928209045,45.0873064772352,47.3292981462188,35.3421720030531,58.0840454964978,38.7817692262965,39.10127781669,37.3314977663899,36.751047045579,29.6422012828125,33.4312194529514,34.2027026197431,27.923990491302,36.8051567862497,30.3942045632069,56.3550672316133,75.0806267119235,46.4981078545695,39.0485881696999,40.8802770668101,44.5686446940559,41.4230444307727,34.4529573685944,36.8635298605361,38.232766058216,34.0612731265588,40.3817369582712,37.3895975311591,20.6113451931537,46.3936166475951,45.4350762590703,58.4158732595249,46.1433781670351,43.6296392503688,57.3726514537565,34.8729437646121,75.4454828309016,37.5394687863486,35.5018773199745,40.2160220195736,36.4422445470909,32.088030063916,27.0907896439609,29.3716390886208,29.3411173432301,29.5554652856662,31.2080263457473,28.0582417729748,33.1055402410824,22.2282956514476,25.7130501091008,24.7858590965059,22.6821585286237,21.8379083102455,22.8840816433758,24.2794513788682,26.9072510190094,25.5139777394586,26.8234655962528,30.5563022203233,23.7878211014009,22.6161640508085,21.4831485595249,25.9963509441397,23.01126434793,18.3072892423767,29.7555006727501,26.2753342624971,19.7286869139751,17.107734348608,20.1542018757262,20.010914832246,19.2708551814904,20.2710674751655,17.1913178962957,19.5340607633739,17.7358589858357,17.5312161098486,14.4367834998677,15.2807145965553,12.3300532563365,15.1393844347514,13.5915452702052,10.6900690812769,46.569891614122,49.5985997045538,41.4920192110227,41.6422111217306,38.0255853131874,33.9470367399072,48.3875874608347,41.8325077619404,37.6141889116277,36.7086184549848,40.7975136285214,48.1256399206822,42.0486283190556,30.9688895148563,32.8176594705989,42.213129632459,33.6452730771998,33.7044252941687,46.2460444017368,51.0472104352925,38.1193806174621,61.0829301372095,40.29243281065,54.9156248115308,44.8718062764023,344.722731755242,44.8537970135453,49.4884833842756,45.1728660574982,42.2948347915843,58.1738823071728,71.7619071772394,36.2726927849936,45.0796448512575,59.1173804151471,42.7224889620781,41.1863856786075,34.6557348594048,37.6089726437555,39.4747014384653,33.149376285347,44.1764316972409,37.0523691462546,31.3807011807977,42.9595279141407,22.962103230801,25.3778753647033,19.7268960916095,23.5359192012456,23.1643511274741,22.4528385349093,18.0030351397125,19.7297469810189,19.9535464225685,18.2403802425662,21.9834880739782,21.5814478101415,25.7533581129245,17.1194096995389,24.3482641165443,19.4492929807263,27.4211952803695,17.2896858374965,14.0349439365836,13.8887541622198,16.1957116914233,16.0731851594208,14.422849409984,10.5123147899527,12.7205929367371,11.2266572159063,15.9477066440548,8.36370605318082,12.7587853336963,14.4951224969319,59.5644194678641,66.460519997555,29.8556534791771,28.1099583616429,31.5742322241452,28.2012646964202,31.9143052241747,38.24163909966,24.9790491432523,21.3607955034986,24.2130107706176,22.0983643320962,25.3676681380879,27.9543696115513,19.9126247075675,22.6188736496609,18.958897692887,17.564310404807,13.6969790202923,15.4507428551325,15.1383193388058,15.6530679224168,16.4162464216367,18.0797397144854,17.4684886167499,14.4589054702195,15.5935699566341,12.6396060876877,17.1559028788288,29.625938330379,26.5496870022672,57.9007378830701,36.6667342610698,43.546011227386,81.6957632977416,52.5700103614492,55.9241218713124,47.2018469510754,60.1977393140641,41.5498739665636,35.0254469856653,28.0781842262575,30.9525928375808,31.0131171277346,28.5815699553005,33.0303756450797,36.3296469195922,29.6508932256842,28.2591970769085,26.0277092865646,31.0048409878956,30.1328394119734,25.7535940418794,44.0338160907704,44.4587180224328,36.5787848429415,61.2249546833015,43.1343161911989,40.9481788846316,34.5834235534042,21.5283915885716,16.3299622903283,44.7075411525546,41.0507988606512,49.0466637645977,57.6701988950529,35.0090640509159,30.8825956232412,31.4102860993076,13.2512199951891,10.7971651136337,30.96860332555,34.8827681804936,31.2063483726413,30.2065456892478,21.9666167082437,28.9157296775892,21.9362022376818,46.3396471613169,55.1286724361833,37.4310456269482,41.4946032485922,35.0086513337135,30.057526944774,30.4011148213808,32.919839593617,35.9414071060593,32.9880333731105,28.5682018692892,29.9785506123123,24.4849555948667,26.9396166862082,25.7165094502607,32.2986293720474,33.1249693363324,36.1895688954549,42.3520212073302,46.0866060781819,42.4649103889019,50.8837979417319,50.6794751552622,56.9910343923612,30.4841976467224,34.9456782833347,30.5671445706681,24.2664096215056,26.3223447054059,22.3489786880485,32.2268316649305,29.3205183540655,24.2595068498385,24.5704105175741,83.8142218798913,27.7096912636965,36.2023175632359,45.0402758889282,39.8664058978309,48.6169741828576,33.7871897772515,39.5461922737642,26.9263215721655,27.7626873056879,22.0744933219715,26.1089713749719,26.0018728801552,22.3260759040732,24.3482780081356,35.9271070556998,31.7883378402166,30.0942553059574,27.5098777310151,21.9235354383738,23.9540067934993,21.1602275594546,24.9086735906828,22.1219750709373,17.4146157049395,19.6670023450222,18.3487547113013,19.1756141210501,21.2707074739314,40.4979354292502,21.4096415005683,27.1536843971329,24.0644490323802,16.8212830592182,25.7737801175746,26.2248586690894,22.6125964305385,19.5412023429156,25.2508128970775,23.7545545835579,22.8285273717157,21.3781922048742,17.6447375812474,18.8435159620848,18.7576180239366,18.5766393933767,23.8801573133836,19.8147405921061,20.2045046981714,26.8182464082717,30.428861363123,26.9275189668296,23.4419610467215,30.124844624665,23.8380633042325,21.2974420587764,23.5492667202942,19.7723520764369,18.3110230716982,21.4543075668439,20.8473221040001,19.4552801446353,24.0668078962727,22.185225594595,27.2395621703226,25.7575305522382,24.6432251853128,21.573595575579,21.0437696771648,29.11356563365,27.0822390335012,29.2278298797588,14.6576287969131,20.1241061495722,17.2997687024511,19.2618960413812,16.3196494297037,20.2732824171521,19.3517115330299,16.2036069388074,12.5437432038674,14.7059555917342,15.1944793153442,13.6537508051999,18.1361818657234,14.6006223496522,30.4594351229138,15.8358015340114,13.0919971348953,13.2821463843944,14.9125209485217,16.5165695110611,15.7962582556062,16.3289774766858,18.2475685146389,20.790004238301,18.044371685736,14.1166571891875,12.2738630076871,11.5491863437785,13.6357676213876,15.787584100128,13.893082575574,12.6951463856565,19.2481471262752,14.2169321048132,12.475514467735,13.5505508525289,9.83392980001795,11.4963661165738,10.0498605454887,17.2998606993034,22.5313629602244,10.8960315934765,16.2500057011369,18.0922838203518,18.8597301939415,16.7200670778784,18.1791516435472,16.4353268342063,16.4151821271433,20.6792091720336,23.4075414992844,11.2938133244516,7.82122908164731,10.0163514047766,9.49602594344183,7.64364220537374,11.5850494328729,11.9495364953931,17.5743545735294,16.5100724755781,13.8932712619282,13.1318237659512,14.7478990292943,14.5866795146877,13.3339928007495,10.8281563334881,12.5422621152559,16.6788581885654,10.6007605222436,13.9718598666026,11.1813541809039,7.32155592900416,12.4907297967595,9.13533575616524,13.3932389617078,14.2749053828933,8.10487836193071,12.3150843415784,10.3603416785094,17.6440470750775,9.01607783178314,15.997642888586,14.886076716241,20.3949509071275,15.2024989277357,17.7778836375124,19.3957624338464,16.8594014714013,14.4627743747329,12.0122159824368,17.8242659416653,22.5891482963365,26.053303231871,25.8683313910193,9.26676814942222,16.9210910222683,18.725551860938,19.5197506432833,15.9946578932881,13.5780241452695,11.8249107632838,11.5156797638843,12.0806609145112,7.83513667261618,10.7843716831476,9.46998156969945,9.87226008812442,8.72199342701487,9.79300617769105,10.4911962349331,8.28352528682076,6.95649728811793,6.34274015170496,20.1089173854404,9.62368668691868,15.5256070385094,11.1966638756986,10.3554675892684,10.0561597893973,12.362742536638,8.51729262554203,10.502825097533,9.87034634601166,9.65295535892535,11.6673115813989,5.96441970808525,7.47857816841454,5.53162304861797,6.67473656096739,6.84239559538964,5.75726789457712,20.8954633612784,15.5531782087046,23.014452647557,19.4961244384504,18.0544920305685,21.9799077558812,12.9116051498784,8.94413050750211,5.0302053699171,21.0771595602991,17.4186587534159,16.1293879854934,19.7640086550665,17.4754451226093,25.1471339502867,18.8845255401532,15.4425045654263,21.3313358674105,22.3775346319227,20.7554158275119,13.3211004422866,20.4870977226466,26.7875100843076,11.2312056284628,23.6072463141829,24.3806062160066,24.2250427157893,14.1153835184472,9.59196023778555,8.18608644968878,6.54077195949073,4.15538043367361,6.59913988015088,6.28749146985867,19.0687794367576,21.8523578459731,21.1673578819889,25.6034904788169,24.6093918068438,22.9088533483693,23.6446214935764,24.3743939530751,30.2363369953603,28.375859069361,30.4022754419325,26.9474013695931,32.9492315723542,27.9383981673228,29.3131369267984,30.3959826209534,33.4348606571506,26.5878593281886,26.0215010281331,18.6261249237973,20.5148711674304,14.5591825552848,15.5556629596935,24.2930340168535,26.8022452870342,28.3150601018012,27.4527737910143,6.12253517805528,3.80814728939802,7.13895522104897,4.17112319232291,2.95146179989137,6.43966025796306,4.75232702527917,3.57617582055002,3.49997755614233,0.597287902063314,5.72185594462093,19.0325553727753,22.3192653025583,30.5262111819692,22.8324532275988,13.3278422688871,11.4532429619909,8.71127679815676,13.3585360061173,13.2897667426268,10.2305619407852,16.0528056312939,3.50742145684362,5.54470387165505,3.89891186319261,5.88408162928331,7.98206618723029,7.50887839584472,7.50916924472537,24.0786609227187,23.4619305454549,33.5567350492265,16.2663601484331,19.1650625082953,13.9742180133433,17.7429008263765,19.7009725474453,18.183084268716,17.8479838082844,16.2515409226485,12.0643088296432,13.935829515584,13.9586503613472,12.4069753769264,14.5502500750585,25.434161785437,5.00655533471256,8.20531143341259,0.742991255271904,27.8828922886453,22.0502520154334,27.3232782309617,24.2544481993292,25.1445327612979,26.8677606477546,9.82180820069574,10.3114653994177,8.17938717585966,4.53444903535222,3.48260490165273,4.96815793711426,1.12615694012331,3.9087079737395,5.25671234440887,3.87029549511432,4.62609749250384,5.28312748708482,8.87256024735608,5.72168498675639,30.6030769219189,13.6365764210975,34.5339281902214,7.57380539933391,10.4998124827569,0,0.793763786234315,3.86858240306861,1.87355741498067,5.88309557290796,2.90172022693905,6.22883789915009,7.68680274189212,7.00617653259734,32.2752982791953,43.055189424665,35.5236012367514,43.1342610781396,34.9595469968471,43.222317288457,45.9694255736312,45.4020752772864,40.8789304276664,44.3494246202389,36.9853126667746,28.2769000082483,31.9842572917433,11.7307948166312,14.3985922673215,9.60610553014054,12.5718479647217,14.5151426045104,11.3213282140879,17.0436849202673,11.6921094786137,17.8558911072135,8.51319423119364,16.1011309430804,16.7473338566434,10.1131921117807,10.0192643802656,9.12486273693229,7.00128478633745,8.65805977892696,7.42941779518183,5.50469731250369,3.22815490131949,0.599044714417654,6.26145833778426,4.4711346379251,7.12553345918528,5.12561347890639,8.97757528595903,7.05556954701942,9.05864969235551,10.2038532197051,11.9032870782742,10.6823573666083,61.2826093098094,53.8804461110481,59.3225480169464,26.0833060930697,30.1101773609108,31.8422935493531,29.9202375261563,39.5828531121082,10.7858058725098,9.46202207033768,8.49912825407218,11.2350983968884,12.0386884306016,15.0905910650425,13.5693561084309,13.4752327480133,14.4417239799123,4.07413864129109,4.35813645068699,7.07343252585127,8.76626262088833,7.999699778889,8.16081037667029,9.93930962183328,11.4974518390722,41.360788632361,27.3158837694621,35.5744859691991,15.5087858129089,17.9991239373679,11.897536356186,13.1323961392885,34.5553615498792,37.1973590910664,46.5430320974728,38.8464124233028,35.7933868192332,48.9498901885598,31.629886012241,39.0217916916127,44.7808002324855,45.4161096325949,30.1651666416238,47.5161515548355,52.6580011194359,34.2456133069159,32.9302923743787,27.2687355611484,37.623710506349,37.9491912943068,16.7812850982742,22.6760851834456,39.4229325088655,50.7124072302789,37.7166507297016,35.5873767823571,39.9132769267431,31.8670140119126,45.5042932266171,32.6159318020362,28.4771728347952,54.773651661356,50.4349691661646,57.2183212643734,44.3172888691308,17.760114524284,19.6186563373844,22.2320126190667,45.7942203660672,42.8150162342223,84.7615890339186,60.128385510545,16.5685133994697,19.2651125743325,15.2236298088951,19.5837496698107,22.0899293057897,20.4109212550419,21.7955215956328,19.9177170266118,27.8345646793579,24.2599047503848,28.1018876598687,24.4523822571588,26.7338384068503,31.6396043064356,32.7785480569051,27.0410170425652,28.5006488010536,29.477021324362,31.7647962817299,24.931292620038,22.6222379979158,28.2832818514566,30.6307262865011,18.9717596933898,22.7467804888943,19.870844103812,19.7296090072801,21.8828319724421,26.6272146600755,24.351581189637,28.7541365234229,25.4633494461531,27.4094375857829,32.5778501826468,30.6561972090511,37.6116938786003,32.241113306757,27.2500903777215,37.2608203497624,31.1536491154797,23.8754088705704,34.2794027468677,43.008069505108,38.9923934967808,42.3606913601102,47.6797155411171,63.9927911499448,47.3606484566374,66.3344004498506,46.3558710706773,40.0221551539377,47.5966717159422,37.8768542752981,41.7044858401652,38.8882965467221,40.9721301601468,47.6136645680874,42.2424773755753,21.0974255870603,26.7738958031851,17.4968499953638,19.0444739334547,25.4503887189515,21.5556701382037,21.0096099405918,42.7523013239308,51.5545732155661,45.2862146666223,49.9906791874887,57.6195416799308,48.3083413460658,54.5315720211555,48.6469227773458,36.4849998353226,18.9425008454417,24.1007468621131,26.4381902617765,20.6742940313195,25.0186136285222,38.780501957543,59.1910190141147,38.7941798069435,39.1682840634126,18.6224933276429,16.7998108469361,29.7349105464007,23.7312456136327,25.9659259735604,26.6720504991978,30.3779939423115,33.1151355616196,23.7906021464339,18.6749458534763,23.8140719339271,21.9952117577943,37.8420078797673,49.6983953035619,36.1463456784756,34.6609826638488,40.9244732381609,47.1124347746154,48.9125111052301,30.7143563348352,38.5587290233,49.9996757658747,30.2892990175993,57.0991155942013,48.4358828630732,45.6161318435582,35.5090269863331,41.1650350452416,33.7581550580504,40.3840545771844,40.0179804924496,43.9744696491177,33.1536802165128,34.1182808197374,29.7667352060119,34.2278808758196,21.8938150907557,21.1550045724566,23.8833890804005,23.8557510222928,21.2650901976685,29.0464627396719,24.6619642700936,26.9732627292394,27.6761992014418,32.1465662208637,29.4442210110658,29.3536403819506,39.1622552872599,35.9021250947125,35.5157419361068,33.4808800629125,36.205064617131,39.961070245654,31.004392892034,34.3424199958554,46.6015238749065,44.7374246482012,45.545648425046,80.382656000935,40.3052881615186,37.6761247150445,31.0924481604386,28.6500389797112,23.8405054828037,26.6646346313091,34.641896937937,40.2740262612285,45.3863884675041,45.2839310970495,54.1962802352957,34.4670107218068,43.4181383770408,40.7855563012491,44.6042332328372,50.0355492401005,53.847681175602,45.8915033057084,77.2432659016029,40.9980822727526,27.6939287745374,30.259208153308,25.9664681799603,26.6963241497572,24.7357406917424,33.7624832109893,21.2856995291911,59.1870950264424,39.0232449539871,37.7103734752117,43.2499885417336,47.2521382512057,52.2341962404566,60.0448709542486,46.2449190543244,69.073699649187,38.4774311645683,38.1964877075743,29.8470626249607,33.1668838165423,32.923434172817,29.7258366981421,45.9446322387157,45.8692075526677,46.4533501982442,49.4596319601769,59.6703701620773,47.873624750477,57.0202537836718,51.0673024561866,40.1041472218576,55.937563091223,48.9340904466831,81.1181588214055,40.7157280757324,60.5341010824066,53.1545215597263,30.2599398790207,36.9610077984908,39.3991099396434,57.840404685754,60.1212369339466,78.0408088222592,34.587908811598,45.8005573312173,36.4052800973934,40.3978492512966,46.4444471662095,46.9753913946753,42.9898124696181,50.6815734864145,36.8107012403705,39.2764331851766,43.3466673082142,46.7635343637213,46.434181372959,55.4604346007357,73.4281651991878,73.2496220632719,46.8850450216312,46.2667823181032,41.4687066279998,53.1979517468163,33.2220269157179,49.8595616568063,58.2544933608219,289.161834274967,289.01883531495,289.398776800966,284.40800074136,270.494863055358,283.191295922145,278.667953300899,283.82327387936,286.592713640094,289.650420520135,277.977123097966,285.01829745003,278.297262124744,290.458939119229,286.206058641001,267.173477984259,286.102349639257,289.551735168394,286.165853567215,290.712949548887,287.555944129035,286.326970680692,252.624240552353,287.393068838321,235.190029523825,276.711755528157,292.495012040317,288.442786650627,59.5241134034606,44.7817188852639,61.9617359432921,61.2167598877714,57.0950106725311,44.6897733318597,60.0196733694908,45.6025982583157,47.948837115572,42.4402798896881,38.3013331186878,39.9882418686828,40.3703193951787,40.6990784329657,43.9814802734323,35.622368147401,45.126591425677,49.3133065948911,36.277399477634,34.6745276727142,36.8686759618476,33.7005553869457,31.9621764383103,11.1104489830003,57.9612119301581,10.9500745374416,55.6321065137388,3.02351246142771,3.14858412058556,58.1554493706903,274.493259615108,43.6317875083905,50.8994866812689,55.3255010981891,7.72265973065917,61.614380991224,46.5294223143597,60.062482099554,69.5777114196419,50.611408024269,43.399032983926,45.3126617652995,74.5338077913974,42.3977354535192,37.5128530489746,37.9164299098323,33.2711300521695,40.7141849001622,38.677919460379,34.4555128192741,30.6384362735804,32.9012677309862,32.441653006945,28.1584490540498,27.6958367478893,36.1476389681463,28.4522336072155,31.351174278208,24.9035810263224,30.5311001910768,34.5897140746282,27.5988110425808,35.1631903383807,29.5074481747527,38.392797899062,32.6414874535597,27.1670665604047,43.9290322567735,42.567575130465,36.7538200453068,38.715577128201,37.9629868877959,33.3899043125139,30.0053819647158,34.3041033402136,29.270052056475,32.6220706604709,41.1412810283059,61.5241027346811,79.7673845999297,47.4621916793317,16.2085236640475,14.2216161115935,41.6969893107002,54.6107643764115,55.0805943758523,79.8713538770141,59.0545688140199,52.6057301900064,28.3497414627778,63.1588100905789,54.3960204627852,88.8715069366409,20.191360406183,22.5414893086864,31.9736410276883,34.1697996522961,34.7158725796514,34.3497694791817,39.1449352057957,44.2812249697006,44.0268943325647,15.0941422826799,12.2832184787277,11.8485904002911,10.1306297972978,11.8220993202171,21.3596146988881,11.57360982308,8.43329076239192,22.1496680377319,28.3213888298265,6.67380498501148,9.21923820488488,19.3322623842436,21.5299157404312,9.58398095389589,2.86944461536263,1.04433699789468,36.5644599860951,37.7686898298746,51.3402971543555,16.1486500777638,8.48368249685161,80.4783427673339,13.2546319447866,53.971471853612,60.0161795120403,58.2579290606923,81.7507774666312,26.6790631297219,18.2386817936279,40.7790340490961,41.973346342932,36.5938193693293,32.2332054296523,34.4868620923004,29.3291895848542,29.8161657501432,29.7717358143702,26.6424536130886,24.4689154327953,44.7018768780298,33.6422281630544,59.9848177142527,59.3511778713082,58.4189897643566,43.0117181574976,49.50728397445,27.4350878142418,43.8319528756954,57.667319683014,44.2652068413289,62.2932334133521,54.0370423602179,43.8674830916086,40.7715318107188,42.9850495975989,75.984758825231,43.6639088708802,55.5536059214059,47.6963598554604,69.304178553045,44.9399753210292,54.6855861839642,44.5985250292921,59.2326312105748,74.5764732901996,52.0914952684219,44.7953998879586,58.933368573853,42.1627476958557,61.431350211283,81.2392428986565,59.4008943419333,44.4676610292112,47.5136983548039,45.8656895437591,51.140805268983,45.8884076195153,48.7017180009858,33.3059913928974,30.1426088492114,37.6592303584498,32.4342485595101,46.7997261878812,26.111323903012,33.5736253590883,70.0887756409778,38.6199436056107,41.0341536499949,38.7909461732095]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1208.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1208.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1208.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1208_field1":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.000356498601923394,0.000356498601923394,0.000356498601923394,-0.000356498601923394,0,8.31653302011665e-20,-1.58134644175171e-19,-1.02386046970194e-17,2.48898630636103e-19,33.6789714471535,-35.3492185257615,-25.1808851164354,25.8558954655758,-2.01142215550091e-21,4.85023731761441e-21,5.11801540498432e-13,9.03850710674451e-20,-4.75178273446265e-18,-2.01231130198554e-18,-1.17871818395965e-15,5.43424112832654e-17,1.11748048934936e-17,4.58161777280516e-18,5.80230416248803e-22,-2.69177587696855e-13,1.22447624248086e-19,-1.98695497061963e-17,5.34548567853979e-16,0.859378566762459,1.52324569077905e-13,3.10170836311558e-13,8.6068150678273,-2.64874653210278e-15,-1.0019021678204e-14,9.49436943139525,23.4301461613179,6.56432865977688,10.0956345664843,-2.14656736418717,22.7785411885281,5.18508009986346e-14,3.98017912147532,4.70560018906049,-5.93271068037551,-12.6645366151519,-8.82171116130407,-14.489774282652,-1.10350236734403,-0.611463376805088,-13.7508050525826,6.21296585651232e-13,3.56059439351046e-18,-18.7442241533572,-0.904928951109591,-5.28930561480166e-18,-4.36944220744039e-17,4.91232049281074e-15,-4.29893324122181e-18,7.19963243196934e-10,-20.6135477721476,-5.9881270882507,-4.97066496851987e-17,-5.01370206571907,7.9138098010189e-16,0.00645006058995165,-11.3611396193821,-1.06991771397566e-13,1.21216123980039e-16,-3.48996819553995e-14,-25.719111486893,-10.1092443627578,2.45334372863256,-1.40408315665954e-16,-4.74382357347459e-21,-22.8573870284758,-12.2108819579995,-23.7913142276784,-17.9051057237321,-1.23034559238085,-5.75283573102871,-7.9831811334407,-14.5770494706589,-13.1988864927099,-8.15779606445619,-3.6233207775927,-0.402739830913168,2.02415646721869,0.439534018804554,12.7318452162674,0.353522128006707,8.23461297429892,-2.79519593267609,7.1295126492623,9.97423070931594,-3.85226437736373,7.09071803715188,19.6624661747987,6.42945646588676,-6.27969936870981,-7.14996824146894,-0.10336585695453,-0.801546644990788,0.746055719191803,4.11358861801637,6.21001262078842,3.78990783873513,2.91596696996856,4.28975622514452,1.36802505405044,-2.08172593572411,7.20026403662316,-3.2764648066569e-20,21.2260353466937,3.91245792103758,-3.9565356589847,3.59478915682711,10.5932145760881,20.364765166431,7.91270599683708,35.348488812891,32.9675866058907,0.051091647386687,30.8711902036376,19.2306236920284,18.9387075971036,38.1183706930904,28.8554937926912,1.21296129765115e-12,27.3656101437398,19.2930452334323,1.23559839549266e-15,3.41061294615891e-13,-9.84646570696644e-16,2.24108641527255e-17,1.74239502914638e-17,1.17355567013071e-16,-1.80200092018334e-14,-9.11805475795204e-19,-4.03922771152442,-1.56540964540448,-7.02347207741871,9.51197468711193,8.63479179411154,14.8447121918019,13.2601554276464,17.4348819253498,25.5301941656763,18.4925484157248,13.1928988314631,24.9166150360102,5.65445328007879,16.1001356553425,15.2607447938124,8.99133659976711,22.6695895922382,16.7441673607144,36.4175071244919,-1.49910007510054e-15,1.67800246254541e-18,2.69556463470688e-17,2.23091000134565e-26,1.01134022916189e-19,-9.12787111520444,-8.0046809052111,19.5450330062636,30.495937368916,8.90671306819382,14.389406924168,35.6923310896566,29.4868748508594,30.2864853625615,2.66099072020987e-14,1.78219085251961e-13,-1.75703231986266e-15,0.0384000591305278,2.45702858144463e-16,-6.21260439163991e-16,-5.23870779855827e-18,-9.63797011568692e-21,7.59839365739252e-23,3.63406595928374e-17,-6.40978882622492,-4.33923939416626,-9.88641015946734,-13.6100080290536,-13.8295549974753,-32.489352764992,-11.9880573029801,-17.0337454939054,-8.53361763603101,-22.6905073946636,-14.3391836677303,-18.0630530784034,-7.41857892659684,-10.3169331327696,-7.53850983523225,-1.58160425087939,-4.35255327946195,-0.980209568776431,-0.999226155685705,-2.9962866557272,3.09872545628896,-0.565646742502923,4.60218727264022,-0.690011972151686,5.14968153716957,32.9303852336314,26.1776052974329,51.2702118063236,36.906352438677,35.160708186543,26.4776896324386,28.4687307882698,51.1843727977143,37.4605478745011,50.5641870919543,55.5962613598224,2.20194972685662e-12,-5.86130200846597e-19,9.60857740669464e-24,2.13446313764783e-21,-2.91813481556449e-19,3.84467597226048e-21,-6.25507782462966e-20,-7.08535610541133e-18,2.63173882228342,12.5280816387061,27.3922556144633,31.4676173661752,31.3342685102605,25.2841593184477,15.880203614102,37.3451949641531,17.9014998208636,24.4127690221969,46.0000258105526,36.2404756695955,11.9121164952117,3.33146304817318e-22,1.49443998980048e-17,7.63522468349019e-19,2.7657066026812e-27,1.83961035033188e-18,-9.24591354561217e-23,-4.37216359472333e-22,2.23293847275243e-23,-3.26695858815786e-22,3.41729136101682e-16,10.3392382208938,13.5025094210207,54.0048903232881,26.2903799179529,-2.28600543105964e-23,41.2426767925383,0.491044207997917,47.5744808349395,41.0937519921078,0.00570090424948928,15.4344014993306,38.4959136502352,27.6255219491245,65.2172773163089,50.6379642222823,5.67571329412017e-13,49.505576997568,19.5975772293922,3.3947042327687e-13,41.8371286005803,-1.1214751073299e-14,-4.88183306820382e-21,0.00031193627668297,0.000356498601923394,-2.47348954713193e-25,3.99216981354423e-26,7.86633961657215e-25,-5.63360689203386e-26,2.33129717848208e-27,-1.60245483573161e-22,1.17993511768131e-20,10.2156107473058,10.9441740641393,8.86938577244481,3.09346884765461,42.1238770582473,36.0170072099905,-8.57956067399444e-15,1.74032018134291e-16,2.77404572143462e-16,2.81031554349133e-21,-1.09111667403402e-18,1.74429052313966e-18,-1.4645715941109e-17,3.65527746642661e-20,1.07325889241344e-21,2.41271454047774e-16,3.58228910310818e-22,-1.75864561388035e-19,2.66264414686947e-23,-8.73194747549452e-23,3.79032293732038e-25,5.91938855531909e-24,-1.46124350619718e-21,2.09400250814875e-25,-1.8704556039795e-24,4.54461794458374e-21,16.0065032009676,8.81942149190289,6.54731943945109,4.05431902454426,-3.78544457526306e-21,44.6077316276912,20.1029528580292,18.9048907698774,55.5839102000485,42.9630929929378,1.34764681927434e-14,16.5311609940092,31.0919313092212,5.87238666019995,1.23024526139351e-12,-5.66584981749695e-26,-2.72800235743275e-26,4.33605079809947,-5.22998870514827,3.56960449116762,-5.48493800190423,-13.8437733013807,-10.1764432987124,-16.3969170432607,-14.2764955089625,-8.65927214405294,-6.89656252683695,-11.5318271262133,-7.15936166951442e-20,-2.18108360826645,-21.7296849237931,-7.01917090863327,0.173450296785187,-1.10694632334088,7.46959189596943,0.51225717120862,11.984004212394,10.8925106859643,9.48942858349441,42.4069516029823,1.00169863523108e-16,-3.40550716402712e-18,1.85868756267898e-24,7.90476174208754e-20,3.56660641037084e-16,14.1228199683819,30.9158376864033,21.2504285536693,-4.49262912580526e-15,-7.32743696026867e-15,1.28303475338631e-15,-8.01678115703889e-14,-3.77254342387848e-21,-3.73875865591572e-18,15.9400572441078,-2.9703614426536e-18,1.24098555250196e-12,-6.06465666751676e-15,1.73757569257561e-12,1.11957028377881e-16,-9.57090688385601e-15,-1.32767574734984e-16,-0.00734264765703989,-2.20872391230899e-13,2.00415085133135e-19,-17.3405725844639,-7.31592158265392e-20,-2.30465115552151,-7.05848646794503,4.46818022923136e-15,-16.2888948931027,-19.7401668310463,-32.771378587187,-40.1539204497445,-42.0800958929717,-26.0103412359816,-20.4313707869203,-18.3209285124474,-21.355945560955,-20.2729543729796,-1.84870860442893e-13,-19.9801359372115,-4.88961765851421e-13,-8.57947304378278,9.18046654420348e-23,1.43826675028785e-14,2.89686435447235e-17,2.54213903139687e-20,-1.6492116566676e-26,3.39491981158426e-20,-3.33584639720862e-15,-3.7068058076049e-18,-4.19082631497387e-22,-7.03763012504424e-20,2.51243524780321e-20,3.80727370364515e-24,-7.18202421043767e-22,6.28891541845307e-18,4.87653936247531e-18,-6.55135093769851e-23,-1.9500082400831e-22,2.49019653338227e-23,1.25468335111724e-19,-5.83679079718095e-18,-1.14967037912669e-17,-26.2153529181416,-23.6307314572849,-26.5422600616379,0.00545097187848579,3.86116512611601e-14,1.72874893624068e-16,-7.09473638106883e-15,-3.08386465642269e-19,2.86243840275586e-25,0.000356498601923394,1.42850721713674e-16,2.97890725640441e-16,-41.8829840996533,-34.6036210429348,-26.6571578460557,-0.0348013081375595,-17.1562723292491,-2.59068566077614e-14,-29.8405672573131,-3.45172949613035e-12,-7.0402135445957e-17,-37.1668855034914,3.75032738159797e-15,-42.6381392795741,-46.8366184972911,1.62324824462742e-18,-3.73272505689962e-15,-1.62877966348577e-17,-1.45781208797565e-17,3.16130225040379e-15,-1.23777766495711e-12,-4.82361895740785e-19,-6.55604627622775,-1.26151273302853e-17,-6.57645026163285e-14,2.71880954089487e-20,-1.35938054867736e-23,-1.04688502294627e-16,1.46253986618759e-16,-5.90730692959165e-20,-9.96241358357121e-22,-1.91939257466239e-20,1.25574344085478e-12,13.6558755568092,2.50679365739319e-19,2.8029319399566e-17,-4.59967613072859e-15,2.75359464141099e-13,12.7372835203295,7.76581100090721e-24,3.00375100442747e-24,-2.16931392027597e-18,-1.46803366867683e-14,3.21071824309255e-17,7.79979125074237e-18,-48.3964137436095,-39.9527737202033,1.35261837404683e-14,-7.83915516617683e-17,-1.82322948991389e-20,-3.51712854611523e-18,1.42940292529752e-14,-4.78488380359387e-17,-3.05303795924699e-14,-8.95157159688707e-25,1.43968323138806e-14,1.56807979877876e-18,-3.18114681242148e-23,4.18954475121723e-22,4.3071485293428e-27,0.00031193627668297,-3.6817027195917e-27,-1.59959601975685e-26,-5.56568814904525e-27,-2.64374197548769e-22,1.64172956820245e-22,-3.58299797317918e-23,-2.75534310771954e-23,-1.12317804878638e-22,0.000356498601923394,0.000340922940339626,1.15705815789661e-28,1.27088765511777e-23,-1.13991809470309e-23,1.30672990929655e-22,1.24948760676491e-19,-1.14704658638609e-22,2.37927271727523e-16,-67.152182164865,-14.2357354951767,-23.9364554089297,2.34014898907867e-18,4.50075542800662e-18,1.734858329057e-19,-4.81410127020558e-19,-3.39018129087286e-17,1.08425786192852e-18,5.51711606354374e-21,-3.93197331789027e-18,-1.11124893612378e-12,5.45291347037488e-18,-8.04412305096747e-18,1.81362898955773e-18,-7.79675944915492e-23,1.22243248061286e-20,-7.90079765989831e-20,-3.73698405185754e-16,6.16769692404081e-20,-8.72449590553131e-19,3.42486939019282e-18,-2.91293105683881e-17,-7.43035759614398e-15,9.84084350521516e-14,-28.3495229393474,-30.5940895806759,-48.467503197581,-26.1583181926648,-44.1957168296559,-53.1749916167625,-28.25059286762,-29.7271171319361,-44.4810460593732,-0.00246458838084684,-69.2294656960663,-11.4129440209408,-3.07901016582648e-18,-2.72803870139348e-14,1.97408610522544e-15,-2.10401939272924e-16,-1.56834866029365e-20,-3.12557347842613e-17,-4.7741694825294e-22,-1.2570258766659e-21,3.21191103393583e-19,-2.57840959620355e-21,-9.67843237486336e-18,2.96927933191084e-15,-8.8018505885087e-22,-1.0487504921287e-16,-1.12156903327508e-20,1.49075002866297e-22,5.63324974900945e-22,3.88125099679604e-24,4.58019964970772e-16,5.55413794021753e-13,5.76263387751656e-13,0.0138526871442386,-4.75627303095535e-12,-60.5853395386795,5.11552111541437e-22,1.11174988945684e-20,-1.11596021818057e-21,1.29186794893274e-22,2.26252136675915e-22,-0.00031193627668297,1.95892719972006e-23,-1.10757138208296e-23,-1.02686553755711e-16,1.18769793741632e-15,2.04976778008476e-18,6.86590372980442e-25,-9.89957597378845e-05,-44.2695358649116,-35.2917698830669,-9.91776311122946e-21,6.51081327299908e-23,1.96140989009172e-18,1.82613013165557e-22,-0.000356498601923394,-2.34761886396423e-24,-1.97456488079275e-24,2.41264671530825e-25,-6.54578356582324e-23,4.05662353411604e-22,1.26081870461639e-23,1.50837387594839e-21,-6.55728423665113e-25,-2.15915212018875e-28,-3.13620395759813e-13,4.71440223179102e-15,-9.3930508459668e-20,-1.09358388141058e-15,-3.09361635057671,-1.21304576234594,5.25386245397654e-20,-8.86660264449674e-19,-3.73580958867506e-18,-1.14085023596233e-17,-1.2658589996832e-20,6.95388812460117e-19,8.49634624005998e-16,8.84570131169148e-19,-8.59370026868634e-17,-3.99437301873146e-17,-7.50169283102672e-08,-1.42923956756876e-12,-17.4361677440686,9.46069886403529e-20,-4.09749948194498e-19,7.09361563338561e-19,-6.0614567816013e-18,6.75506836620725e-18,-2.72893454913673e-21,6.95008101282857e-24,-1.25264449112077e-19,-3.78076661335252e-21,-9.22223565548359e-23,8.15548139240583e-19,3.21019303916698e-21,1.21517905323149e-21,-1.51260773565836e-24,3.38651999350084e-15,-9.00178064371317e-22,1.03664750745617e-21,-1.55428096258545e-16,-3.47642355245604e-25,5.53299630162817e-18,-1.4597519326223e-18,6.22838905440126e-14,1.00732941307899e-17,2.20020840260019e-19,-4.04955937823289e-13,2.92300067281112e-18,-2.50817787513208e-16,-0.0219517644389746,-4.21005271430206e-12,-2.88557780942211e-20,-4.37645920685456e-18,-5.02547827828598e-13,5.2869445828045e-15,-35.2365978629039,-23.2117240666475,-33.4464582777709,-30.0105875386187,-33.1377739094034,-24.8940334934072,5.12680406300484e-19,-4.00849232388523e-20,-32.4919354282641,-3.30591780097819e-13,7.75030801701621e-14,-60.5059708645897,-0.166696026866129,-52.0564210966517,-23.0393929694805,-8.69785363095666e-16,-1.53458996513174e-13,-23.3897281771927,-18.3565355252256,-34.0366370095791,-17.8130826945181,-19.1296940357597,-15.0206629618997,-32.1216406701716,-14.2890006126106,-17.3795005244335,-24.59369203612,-18.3452807777798,-2.39539533995999e-18,-0.00031193627668297,-3.83356650570821e-24,4.61803601454345e-24,-2.16337344130101e-24,1.55486318120111e-22,5.62094512045008e-23,5.47895620417129e-23,-0.000356498601923394,-1.30933589543815e-23,-3.22200433866887e-27,-30.1515146805035,4.92823811816249e-20,-3.6748712383478e-16,2.28680477487934e-17,4.40493139513631e-16,3.27173460986892e-20,-59.5918845080781,-48.878753708094,-45.1887556295645,-24.6877881711906,-62.5630933681479,7.85348074707049e-24,2.96686528538925e-20,-1.93715686908788e-23,-7.56089986658901e-24,3.0519955517489e-25,-3.43433000670594e-28,2.9137668926721e-25,1.58906132964028e-18,3.82068265103858e-19,1.16949402236278e-19,-6.57600418585831e-18,-3.81623220684017e-22,-1.85264459702157e-20,-3.16946593870278e-25,-1.95736842734501e-22,0.0138683919960553,2.22456926851242e-15,9.07097666084086,-9.82342862946867,0.273592868644527,16.5133839675098,27.6520426170349,-8.99201762753973,19.3253503115914,26.5707802181596,19.3083158217982,21.6255790492577,19.9210563659159,1.37736020669986e-21,-4.20813305925504e-18,2.65069236852364e-19,-2.89853280179791e-18,1.23312029435751e-16,-5.77767316345082e-17,-3.82366144210992e-20,-9.61887934075029e-19,7.2414091260987e-17,6.96197563130729e-18,1.23628857630573e-21,-3.21857849521267e-15,-4.42336963700055e-19,1.45840279437922e-19,2.76798784539552e-17,6.40414116070078e-14,7.25801766470251e-13,4.50733785704382e-27,-6.63870599199783e-19,-1.83940283085572e-18,-4.76946129970322e-18,2.76481231375369e-16,-3.52941053678554e-14,-2.63655177983423e-20,4.25814446076237e-17,-2.07049534873844e-19,-1.21104711241364e-15,-7.06531646765592e-15,0.812672743242771,6.57728165398519,-7.08785825760682e-13,-18.6938388781738,-5.58352145491667e-20,7.45263518488401e-21,-1.17383887481036e-15,-36.2015305329764,-7.38003261618079e-18,1.29486061335983e-17,1.09910401494286e-21,-23.1050173203512,-1.0132491103165e-12,-33.8226446388109,-1.12302805985877,-0.000356498601923394,4.72099701857187e-12,3.40605924852769e-18,-0.000356498601923394,0.000356498601923394,0.000356498601923394,-0.000356498601923394,0,1.33646874082615e-19,-2.54124232845028e-19,-1.64532759890715e-17,3.99976097581328e-19,41.8410292338559,-44.2226076363506,-33.2778924671372,29.689718167129,-3.23242485262849e-21,7.79450792495687e-21,7.66315566626105e-13,1.45252110478919e-19,-7.6318637671454e-18,-3.23382022363734e-18,-1.89343719421021e-15,8.73270069849326e-17,1.79577068804139e-17,7.3619096029354e-18,9.32449778519013e-22,-4.16846629254547e-13,1.96776702961963e-19,-3.14573145453912e-17,8.58965951731679e-16,1.07038388944725,2.31758682130223e-13,4.68623773107736e-13,10.5804236311829,-4.25639351348647e-15,-1.60930409065966e-14,10.6867150666673,29.2431925231712,7.56218606144535,12.2680928337532,-2.55457945291789,26.0888457875757,8.02072544014653e-14,4.60552314521673,5.30431964436925,-6.74913648044424,-15.4893445517159,-10.1256030801678,-16.5425040528591,-1.2689842010354,-0.841064420338219,-15.5050523877556,9.12428921855099e-13,5.72189550022123e-18,-21.3415311225942,-1.07538666255662,-8.49965625292871e-18,-7.02166906709265e-17,7.87944106159948e-15,-6.90715849479966e-18,1.04652592373072e-09,-23.3399042715297,-6.87818363397596,-7.98749661456473e-17,-6.14550148586711,1.2610995164949e-15,0.00934914490554415,-13.7677577568797,-1.68082283461491e-13,1.94685919081335e-16,-5.38905190022895e-14,-30.3622031145232,-11.7339508159298,2.85897452416774,-2.25573109329912e-16,-7.62341990184773e-21,-25.6544071235238,-14.1067884061921,-27.9213947574571,-21.6052082727977,-1.41282930594937,-6.73019778155186,-9.44613103734379,-16.8274839848503,-15.5220822586075,-9.61807992922086,-4.14785967032432,-0.470003891729735,2.39429817488819,0.530505597177212,14.7179983189946,0.420658933934976,9.73131724849197,-3.33727125755228,8.48885952971239,11.4589368506604,-4.71773541378586,8.41567419820722,23.0286436484961,7.65992364113896,-7.50945982913344,-8.55459024176957,-0.125928870274421,-1.0070832871709,0.918669406249384,5.1109924727686,7.49329382619407,4.73018962701251,3.71514442761271,5.30856916338789,1.74390413934936,-2.58754417194432,8.85395319007524,-5.26512047930507e-20,23.8996465621647,4.40688648702524,-4.94615170644069,4.30544881939596,12.6023921577546,22.9624054136653,9.09243993584355,41.4618728373378,37.1643444989905,0.0747797321988675,34.6525447827588,21.9261552417815,21.925760530488,43.4062709679013,35.9457998188643,1.79591111219482e-12,31.8018175552088,23.7588698170301,1.97888483581137e-15,5.124332649676e-13,-1.56067005715939e-15,3.6014557405342e-17,2.79874749819843e-17,1.88562856338913e-16,-2.89440522030876e-14,-1.46521697772645e-18,-5.02055115888744,-1.9843089778605,-8.57316153788921,11.3209320591294,10.3797563341515,17.5873853956685,15.7398045532542,20.678943045451,29.3832735737618,21.9212108019284,15.7813870864722,28.9746262074168,6.91728394919231,19.1527720945371,18.214786149156,10.8325155541756,26.7552189089317,19.2579481512411,43.4737363149721,-2.40843456541699e-15,2.6966074216605e-18,4.33182662882955e-17,3.58515790362549e-26,1.62519263176611e-19,-10.9048491892309,-9.72110503577138,23.0450811933318,34.5102558523042,10.8518770631081,17.169438019067,41.7081504167189,33.6693714070659,35.8733533955919,4.11733906327885e-14,2.77113208380814e-13,-2.82323504443704e-15,0.0535736600088979,3.94852905976783e-16,-9.98234100570776e-16,-8.41864296546619e-18,-1.54884983474224e-20,1.22108946260091e-22,5.83999107640034e-17,-7.78536795621947,-5.36657491530298,-11.9637076870127,-16.2510002423304,-16.5258696064573,-37.2846018803082,-14.4139493455497,-19.9806078871355,-10.3291236920933,-26.5102100274816,-16.6201448891828,-21.2614881479093,-8.76553857493978,-12.2168321825642,-9.04976152299434,-1.89609729602409,-5.19104191056536,-1.13066813128924,-1.21752078614186,-3.52606382755492,3.78196001847677,-0.71074712034823,5.40053468777264,-0.819516721823961,6.14701996918621,37.1623298198528,30.620155435042,57.7722199798354,41.9438620334587,39.7230467042887,30.8788440647079,32.9095608211635,57.6942911496365,42.1733838549477,57.1165535309655,72.8451455524776,3.21021170627668e-12,-9.41926975519581e-19,1.54413404586464e-23,3.43012089687337e-21,-4.68948278272535e-19,6.17854732864369e-21,-1.00520720702775e-19,-1.13862642016335e-17,3.18717705654398,14.8655356269335,31.6922914582424,35.7202312573551,35.5650773580824,29.0438371089448,18.6861149104695,42.230724686765,20.7785719097679,28.1003696313308,52.0276384389142,41.0479201997059,14.6752875751648,5.3537582366556e-22,2.40160847983363e-17,1.22695985958844e-18,4.44459679306319e-27,2.95631399921598e-18,-1.48585077751254e-22,-7.02622589743109e-22,3.58841128990181e-23,-5.25011140292271e-22,5.49146912858604e-16,12.304864816474,15.6025266915124,60.8178305958745,30.5621096618068,-3.67369154803834e-23,47.3721166634344,0.640357074800332,56.4521252919766,48.8462823778544,0.00811728039270213,20.5079408048773,48.377999002918,33.8384407407088,80.0501856403015,61.8565175946395,8.93280586676849e-13,66.3884317962065,24.5572439048993,5.06387328726959e-13,48.9164741169312,-1.8012842464604e-14,-7.84527839629415e-21,0.00031193627668297,0.000356498601923394,-3.9749913176744e-25,6.41557472385901e-26,1.26414980690882e-24,-9.05342796590158e-26,3.74649516574793e-27,-2.57520061552615e-22,1.89618972201796e-20,12.0086086298486,13.0180825483296,10.4680363941909,3.58166639770023,47.5118553207665,41.1346522880036,-1.37814718323991e-14,2.79667963418571e-16,4.45792250635299e-16,4.51627381383587e-21,-1.75343925527839e-18,2.80314744690053e-18,-2.3535653459406e-17,5.87416461778099e-20,1.724761028591e-21,3.87723687192516e-16,5.75686554394806e-22,-2.82620310098543e-19,4.27896753423436e-23,-1.40325587068051e-22,6.09119533243859e-25,9.51267287579604e-24,-2.34827025954763e-21,3.36514057000193e-25,-3.00589225878642e-24,7.30336637208626e-21,18.8522854066377,10.6481227892603,7.90399368973442,4.58055784397153,-6.08333502421569e-21,50.2391234297667,25.2243618800198,26.0529884738748,71.0836305901974,47.9743739310197,2.07721657393765e-14,20.755269574381,40.3087202428847,8.04331685834494,1.86651376462524e-12,-9.10524720076108e-26,-4.38400809319969e-26,4.95136398016953,-6.04012215229028,4.00121844809161,-6.21329954400716,-15.6007517170111,-11.5434885301417,-18.8500702326762,-15.9164285548469,-9.7098512420157,-7.71081719866958,-13.3226552058344,-1.15054009668548e-19,-2.47224966826581,-24.5471459540473,-8.881577216368,0.238705304141526,-1.29464630897828,8.68277908207481,0.636653552676623,14.2713423963553,12.3982249433424,10.6378088232818,57.3968195396148,1.60975292583848e-16,-5.47265997800466e-18,2.9869811683926e-24,1.27027152380987e-19,5.72953397214309e-16,16.0525818437055,34.5521874376335,24.0290920364929,-7.21754923605082e-15,-1.17720492784056e-14,2.05319122572786e-15,-1.25318241711244e-13,-6.06255583524167e-21,-5.93374970842032e-18,18.2718496877388,-4.77330083740394e-18,1.88825009283384e-12,-9.74416857938831e-15,2.61106138921077e-12,1.79915034718076e-16,-1.53722007759085e-14,-2.13323689276526e-16,-0.0107760196456164,-3.31088194641196e-13,3.22072706625682e-19,-21.5099455786423,-1.17567553451571e-19,-3.00904747991295,-8.31353284056154,7.17552579260751e-15,-18.5117966648335,-21.9943360026594,-36.5545659734767,-44.8066680331249,-51.0424120620668,-29.0425091705267,-22.9535161454743,-20.5918977190502,-25.5192670904421,-22.8358816823772,-2.69240940504463e-13,-23.4648142443671,-7.26014948872349e-13,-11.0816166459435,1.47533068643531e-22,2.3099928945867e-14,4.65523190612789e-17,4.08407257679157e-20,-2.65034612600426e-26,5.45576058333433e-20,-5.34192477247274e-15,-5.95688699514484e-18,-6.73473043555999e-22,-1.1309704793404e-19,4.03756830647519e-20,6.11843012585771e-24,-1.15417663082558e-21,1.01063032832035e-17,7.8367836516431e-18,-1.05282611251776e-22,-3.13373228085314e-22,4.00183707604672e-23,2.0163179042921e-19,-9.37988194474024e-18,-1.84751434630242e-17,-29.8889123615279,-26.8655703392017,-29.8801810136273,0.00788548845948696,6.15193281356356e-14,2.77799161724221e-16,-1.1399489890678e-14,-4.9557961643992e-19,4.60004872134382e-25,0.000356498601923394,2.29562277504857e-16,4.78714415459013e-16,-46.7199774687044,-38.7159129399158,-31.2526417252344,-0.0496353745564039,-22.4655805469687,-4.1030673184767e-14,-33.7148567929413,-5.06205676206457e-12,-1.13128641336091e-16,-41.8999136865142,6.00670732073326e-15,-47.6853393574249,-56.0902162712451,2.60853078094042e-18,-5.85319368274658e-15,-2.61680135911445e-17,-2.34251246786179e-17,5.07798648811771e-15,-1.84613096635963e-12,-7.75175995316668e-19,-8.75442769414986,-2.02675335405046e-17,-1.01744543847584e-13,4.36917456711899e-20,-2.18457613761395e-23,-1.6823788229269e-16,2.34975323075929e-16,-9.49323115908189e-20,-1.60099022735502e-21,-3.0845282206622e-20,1.92778602302131e-12,19.1101089215428,4.02841085418006e-19,4.50320793123912e-17,-7.38898106167394e-15,4.21100783555856e-13,16.5907279731075,1.24799478547925e-23,4.82714398526126e-24,-3.48612718085256e-18,-2.35821110199467e-14,5.15967954969981e-17,1.25341647785193e-17,-54.8801961294229,-48.1907062421367,2.16578726723634e-14,-1.25978315774794e-16,-2.92998004951138e-20,-5.65030753666669e-18,2.29548181765603e-14,-7.68902325318315e-17,-4.77964229962338e-14,-1.4385517183454e-24,2.30978565925023e-14,2.51989436402496e-18,-5.11221946522677e-23,6.73274595906639e-22,6.92175024387548e-27,0.00031193627668297,-5.91664982763465e-27,-2.57061303172373e-26,-8.94427094259551e-27,-4.24858608721417e-22,2.63830730580646e-22,-5.75800253043579e-23,-4.42793313377425e-23,-1.8049869984227e-22,0.000356498601923394,0.000340922940339626,1.85943802532757e-28,2.04236288977246e-23,-1.83189077115217e-23,2.09996316265274e-22,2.00797378675369e-19,-1.84334472397004e-22,3.8227584661226e-16,-74.8749940146015,-16.3791746060054,-27.8547494291092,3.76065095105577e-18,7.23273139977112e-18,2.78796412742684e-19,-7.7364212596196e-19,-5.44805191446263e-17,1.7423982258525e-18,8.86604205755255e-21,-6.31847685971593e-18,-1.70573511112754e-12,8.76267057199763e-18,-1.2926633213944e-17,2.91453453790019e-18,-1.25296798868999e-22,1.96444398212881e-20,-1.26966523307651e-19,-6.00384511567928e-16,9.91154108815059e-20,-1.40203893841727e-18,5.50365179362234e-18,-4.67952659861073e-17,-1.18781435921967e-14,1.52031733812004e-13,-31.7582939773638,-34.2735074687057,-53.9757979208332,-29.7642139642686,-49.4853991095175,-59.5761105762682,-32.616419945403,-33.3319954619847,-50.0052798038315,-0.00359325611030814,-81.8205020366677,-14.8908861304431,-4.9467772543907e-18,-4.28490915777563e-14,3.16122455751302e-15,-3.38095681254852e-16,-2.52033611017794e-20,-5.02259480399825e-17,-7.67225510714017e-22,-2.0200818196502e-21,5.1616034689213e-19,-4.14359224045167e-21,-1.5542121881889e-17,4.76565969658429e-15,-1.41448142422616e-21,-1.68530020772495e-16,-1.80239719363134e-20,2.39568687730869e-22,9.05282833526423e-22,6.23731309596274e-24,7.20566586283276e-16,8.64101676623511e-13,8.83881115125503e-13,0.0203921145297801,-7.01471137712274e-12,-75.4854937942997,8.22082943156142e-22,1.78659787845517e-20,-1.79338810875939e-21,2.07607969107626e-22,3.63595285068761e-22,-0.00031193627668297,3.14806802994465e-23,-1.7799097978966e-23,-1.650203424299e-16,1.90842078814742e-15,3.29392417588557e-18,1.10337633418978e-24,-0.000138753466705719,-53.3326152424621,-40.0552479023551,-1.59381464361809e-20,1.04631028055285e-22,3.15191056583537e-18,2.93465977652087e-22,-0.000356498601923394,-3.77271658933844e-24,-3.17320396324709e-24,3.87722606218058e-25,-1.0519324569291e-22,6.51912948187081e-22,2.02618125308686e-23,2.42400682606824e-21,-1.05378151420948e-24,-3.46984386595373e-28,-4.74223412634681e-13,7.5709086674333e-15,-1.50950100503351e-19,-1.71013674243549e-15,-3.99551008052359,-1.6319175252589,8.44291427949138e-20,-1.42461371096011e-18,-6.00211150442649e-18,-1.83324077850234e-17,-2.03421247367327e-20,1.11748668686247e-18,1.36446873182317e-15,1.42149984536538e-18,-1.38079050992826e-16,-6.28834842422698e-17,-1.07791746026624e-07,-2.07388196187341e-12,-19.7468148463075,1.52034831087618e-19,-6.58465476474018e-19,1.13994858222734e-18,-9.7409785518189e-18,1.08552906522588e-17,-4.38544528153855e-21,1.11690424794852e-23,-2.01304269800049e-19,-6.07582261832603e-21,-1.48204780899242e-22,1.31060327823094e-18,5.1588893136969e-21,1.95283590429537e-21,-2.43081648941523e-24,5.44102471524188e-15,-1.44661721470319e-21,1.66592944818321e-21,-2.4975931186833e-16,-5.5867469917421e-25,8.88994075060772e-18,-2.34585219533355e-18,1.00025293210322e-13,1.61864168691151e-17,3.53578744914824e-19,-6.304087460526e-13,4.69731566068552e-18,-4.03068538810081e-16,-0.0317985553608455,-6.41277966270221e-12,-4.63722971841372e-20,-7.03289147822331e-18,-7.96618017814958e-13,8.46904487826737e-15,-48.2638444510766,-26.8656628853066,-40.5640637096547,-38.0843183676348,-42.6567324808369,-32.6091448773471,8.23872939248474e-19,-6.44178819213627e-20,-36.7418884178863,-5.22495399566696e-13,1.24268889355101e-13,-72.0671317766253,-0.234031467677894,-58.1401801434087,-26.0684183110568,-1.39761641408102e-15,-2.41374022429796e-13,-26.9396189682214,-21.2086299019117,-39.2525155028154,-20.9817534126996,-22.0332376345587,-17.8923134927516,-36.1808793120652,-16.8432172808138,-20.5461980225623,-28.377624062503,-21.7590881740128,-3.84889688599554e-18,-0.00031193627668297,-6.16067625624175e-24,7.42135170496623e-24,-3.47662273110204e-24,2.49872158444039e-22,9.03306303382066e-23,8.80488342030669e-23,-0.000356498601923394,-2.10415227027252e-23,-5.17788776604726e-27,-33.8455521223568,7.91966257583998e-20,-5.83437192281472e-16,3.67331495174366e-17,7.07781396913528e-16,5.2576380635606e-20,-66.5756938069671,-54.6225076073536,-50.7457696115116,-27.9903228375317,-74.0822502579338,1.26208226192526e-23,4.76782827170959e-20,-3.11308343079376e-23,-1.21506515489305e-23,4.90467748764899e-25,-5.5191175660235e-28,4.68253836558895e-25,2.55348997358567e-18,6.13976172092176e-19,1.87940359609823e-19,-1.05675723760525e-17,-6.13281750236785e-22,-2.97726155645975e-20,-5.0934475162107e-25,-3.14556126537586e-22,0.0187686568191145,3.57171177717006e-15,10.4013750487886,-11.672024996009,0.385996552190153,19.6911101973444,31.1965258123449,-10.2000828924233,21.7769682029394,30.1460062054215,22.9719877683613,25.2715081632407,22.4492844419946,2.21342910306236e-21,-6.76239421398977e-18,4.25969327585324e-19,-4.65738212906745e-18,1.9811951846326e-16,-9.28428714274232e-17,-6.14472488743772e-20,-1.54574641081021e-18,1.16370120191747e-16,1.11879547900558e-17,1.98675788025148e-21,-5.17018158409273e-15,-7.10843986398076e-19,2.34371160523183e-19,4.44756414259521e-17,9.81059301356505e-14,1.06916214068664e-12,7.24344935974533e-27,-1.06685207911186e-18,-2.95592727164384e-18,-7.66433191773961e-18,4.44310618085245e-16,-5.66678887124709e-14,-4.23700556377442e-20,6.84300067066072e-17,-3.3267120659865e-19,-1.9456080087973e-15,-1.05727958123599e-14,1.0348028865726,8.03636561961741,-1.03324085005879e-12,-21.6159054714393,-8.97286183817568e-20,1.19766647521527e-20,-1.88570552178574e-15,-41.0344240326741,-1.18592707162306e-17,2.08076915625621e-17,1.76629800576064e-21,-27.2681649058663,-1.54705198551782e-12,-41.8621972724245,-1.51161115869767,-0.000356498601923394,7.14509931115839e-12,5.47346729819245e-18,-0.000356498601923394,0.000356498601923394,0.000356498601923394,-0.000356498601923394,0,1.61395847194951e-19,-3.06889504609329e-19,-1.98692854790938e-17,4.83016788122705e-19,44.1082109713424,-46.4569156784921,-35.2023049922723,30.6292352093163,-3.90365654508616e-21,9.41309466367504e-21,8.82347695304096e-13,1.75414836804284e-19,-9.2105897480131e-18,-3.90529630748551e-18,-2.28551630842674e-15,1.05456896899193e-16,2.16859697377336e-17,8.88944733832907e-18,1.12607775151182e-21,-4.87194795945376e-13,2.3763719193495e-19,-3.76513134900758e-17,1.03721567435217e-15,1.13907011663037,2.70081653460165e-13,5.41875807248169e-13,11.1702916053835,-5.13986572998232e-15,-1.94231817638767e-14,10.9573826113329,31.01502730129,7.8098593556827,12.9241272386714,-2.67049365540407,26.8958711562715,9.38066006279232e-14,4.77433027571389,5.43548758306992,-6.94247120476867,-16.2312342619165,-10.4128234186845,-17.0030060067396,-1.30627789134761,-0.930925608288559,-15.8936582198367,1.04049212179287e-12,6.90995081595e-18,-21.9384904051953,-1.12415234885016,-1.02641511804588e-17,-8.47940066339498e-17,9.49776372754094e-15,-8.33957437017944e-18,1.18658402318382e-09,-23.9482052216173,-7.09890833050717,-9.6454299776445e-17,-6.47575095773526,1.5153543097483e-15,0.0105532842492303,-14.4063916228465,-2.00258562894537e-13,2.34956485507262e-16,-6.35530812274018e-14,-31.4560142282323,-12.1499412613845,2.96754646888639,-2.72309758042168e-16,-9.20637711177893e-21,-26.2522176001438,-14.5023181620513,-28.7127014506449,-22.561003061925,-1.45760635539988,-6.99141588549495,-9.8649148411949,-17.378852395069,-16.1302748887221,-10.0109278371806,-4.27557208866078,-0.488027215965135,2.50190406886044,0.561807265681892,15.2337574721403,0.441665294694757,10.1594192220937,-3.50414441416452,8.9151337350282,11.825424817316,-5.02804475215457,8.81416496166855,23.9689758869798,8.04661535739844,-7.89895546896473,-8.99281232725691,-0.133905980271946,-1.08901619382896,0.983559247344632,5.50057774429742,7.93880450193807,5.10441745383614,4.04461006142109,5.69038600398598,1.8950438235653,-2.7661551752121,9.46450672290953,-6.35808079507035e-20,24.5061533017551,4.51949469843721,-5.32380313332832,4.53977176947677,13.2306944628778,23.5543533985784,9.37414848294394,43.0565644767732,38.1194293710731,0.0847719518719341,35.4872970188534,22.5662132863397,22.6100599236733,44.6753354891341,37.9714467273964,2.05748577367e-12,32.8366800234677,25.1005823048738,2.38416771953254e-15,5.92365091111116e-13,-1.8702134122521e-15,4.34924083403076e-17,3.37808964841924e-17,2.27674636684806e-16,-3.49328826887632e-14,-1.76935620128144e-18,-5.3669934218508,-2.14968246497092,-9.11360905217545,11.8988570770897,10.9765145121298,18.4084714058578,16.4684464310869,21.6450230021472,30.3582260661399,22.945249487698,16.6318448977411,30.0625215161749,7.38460984101566,20.0513710783301,19.1380889669756,11.4528033857304,27.9103409699244,19.8916134457509,45.2882560034017,-2.90757465466767e-15,3.25657452742834e-18,5.23130454258915e-17,4.32964618376177e-26,1.96257947250988e-19,-11.4025614085536,-10.2742486939428,24.0369467257285,35.4314091676801,11.5546650568687,18.0289132428025,43.2903543252022,34.6747559624101,37.3263332060821,4.83521815572655e-14,3.25123823285118e-13,-3.40894089297172e-15,0.0596867056321809,4.76845188185222e-16,-1.20529537243518e-15,-1.01666219559315e-17,-1.87047089380933e-20,1.47465748842582e-22,7.05257546206875e-17,-8.22254622577781,-5.73218067330747,-12.6104527077596,-16.9647944486317,-17.3214272101521,-38.3410355439883,-15.1145507583745,-20.6968593899931,-10.9191888797707,-27.4347204207588,-17.1508421061316,-22.062675434731,-9.10688338127908,-12.7069817420829,-9.49369822201732,-1.98925034403679,-5.42651356938791,-1.16522430918842,-1.28989716134405,-3.66035753184075,4.01959721132633,-0.766546709572322,5.60416484614851,-0.854638211420357,6.43985968950456,38.1163191223989,31.7965845868847,59.2555353043093,43.1207883957379,40.796512735137,32.0756732983748,34.0619238408587,59.1687936380098,43.2672855363198,58.6502364570625,78.2174943870361,3.64492877678233e-12,-1.13751734139021e-18,1.86478548100937e-23,4.14235802298972e-21,-5.66319933827829e-19,7.46158802686223e-21,-1.21393693945462e-19,-1.37504751633911e-17,3.36719894088147,15.5104904739105,32.7661194065691,36.680199420956,36.5331997309775,29.9617233610014,19.436608011367,43.3337966544115,21.5068931613178,28.9870065169995,53.4299780236084,42.1284906222241,15.5218104978691,6.46547656335299e-22,2.90030772780271e-17,1.48167430029163e-18,5.36755504850996e-27,3.57020714100618e-18,-1.79439703407929e-22,-8.4852725283984e-22,4.33356819089363e-23,-6.34032119031004e-22,6.63145537102687e-16,12.891484121429,16.1128875778358,62.3405120316709,31.5096655357173,-4.43655782522239e-23,48.8411587337405,0.696666139509794,58.787046966133,50.6896953903569,0.00913766977487418,21.6217569100989,51.1943881209729,34.9921964251463,84.1610577239453,63.8518877014137,1.05276202729101e-12,70.6309816114197,26.048140601916,5.83495723712549e-13,50.6454712004981,-2.17386532941353e-14,-9.47440329777746e-21,0.00031193627668297,0.000356498601923394,-4.80043065667612e-25,7.74782727923706e-26,1.52666005250529e-24,-1.09334537164272e-25,4.52449653835542e-27,-3.1099559936514e-22,2.28993534372121e-20,12.4762480725209,13.647800430554,10.8877753842056,3.69897214426732,48.721664902779,42.2058944160628,-1.66340703898063e-14,3.37733011644947e-16,5.38353695154861e-16,5.45410517667213e-21,-2.11751700424014e-18,3.38525719133643e-18,-2.84222174552467e-17,7.09398144875568e-20,2.08291373516051e-21,4.68225011946117e-16,6.95231741031845e-22,-3.41307965337107e-19,5.16752825469287e-23,-1.69465232522533e-22,7.35608446790362e-25,1.14880489045351e-23,-2.83590498038302e-21,4.0639389739962e-25,-3.63008972067728e-24,8.81996557174721e-21,19.641510487874,11.2674579795272,8.36018520410649,4.69263257840276,-7.34656816362667e-21,51.4539357661328,26.1196965597233,27.6409363406622,74.2546835689381,48.9917998654787,2.43924042559288e-14,21.4666036139008,42.321555117019,8.56361704497579,2.16808886555557e-12,-1.09960369780776e-25,-5.29438770498939e-26,5.0896972585676,-6.23095404142459,4.09177348766784,-6.36663137603474,-15.9572300219298,-11.8306606595327,-19.4004624557556,-16.2435196718931,-9.91726216692826,-7.87551268967748,-13.7343688460202,-1.38946468024711e-19,-2.54076951207451,-25.1295989385617,-9.36588256589316,0.264830306627175,-1.33517757002724,9.01599525366807,0.673509114760016,14.9195947385716,12.7442186048221,10.8867791196505,60.6139550012295,1.94401080591751e-16,-6.60893004469054e-18,3.60725215437275e-24,1.5339778754113e-19,6.9164233659817e-16,16.4849892456028,35.301479675465,24.6345634436459,-8.71291945303643e-15,-1.42114124781664e-14,2.47307443651044e-15,-1.47711493561187e-13,-7.32141085956814e-21,-7.11036570946949e-18,18.8129110633151,-5.7642633594077e-18,2.19038362473386e-12,-1.17645594324214e-14,3.01158386505696e-12,2.17268874198834e-16,-1.85512693775295e-14,-2.57564302606374e-16,-0.0122964671201345,-3.82417368848862e-13,3.88951244652744e-19,-22.6672346494469,-1.41978664360192e-19,-3.2028962837522,-8.57766794185278,8.65838422450093e-15,-19.0051806869576,-22.4309042034965,-37.2798020963143,-45.7604076876323,-53.3383948611007,-29.6327439722069,-23.461420197761,-21.0603676102956,-26.6362653571746,-23.3573216540317,-3.04908547729246e-13,-24.2074381397477,-8.31176702623788e-13,-11.8069734803885,1.78168910682343e-22,2.78774438287084e-14,5.62174660502607e-17,4.93034722620405e-20,-3.20071268645032e-26,6.58869458823902e-20,-6.43430621571051e-15,-7.19375620776794e-18,-8.13313099985342e-22,-1.365821848174e-19,4.87599043816412e-20,7.38897030403544e-24,-1.39384910384161e-21,1.220462300018e-17,9.4641600734077e-18,-1.27145328226431e-22,-3.78447209845729e-22,4.83284818937174e-23,2.43501590549836e-19,-1.13276076270582e-17,-2.23109483200884e-17,-30.6861681661097,-27.5520292503117,-30.6188788645166,0.00890328627604952,7.33906708785886e-14,3.35459967979145e-16,-1.37639917742553e-14,-5.98478297051779e-19,5.55528821549128e-25,0.000356498601923394,2.7722547013701e-16,5.78110244432267e-16,-47.6888999996642,-39.5258954690824,-32.2013987851111,-0.0558090135633355,-23.9739913007655,-4.87026104115575e-14,-34.5127109032326,-5.7778058458436e-12,-1.36605726443621e-16,-42.9244723552006,7.23737964186535e-15,-48.7328306602722,-58.3714232555748,3.15008557480503e-18,-6.9091409911843e-15,-3.15920253290712e-17,-2.82859293804845e-17,6.1290979524996e-15,-2.11635755496865e-12,-9.3615143004392e-19,-9.40961007176681,-2.44684409031413e-17,-1.18679499404612e-13,5.27640575948439e-20,-2.63822131194791e-23,-2.03173235507711e-16,2.83680987191139e-16,-1.14645347737415e-19,-1.9334407351161e-21,-3.72504585580626e-20,2.2403814494617e-12,20.4118159271042,4.8647984997581e-19,5.43653325641085e-17,-8.91921071469901e-15,4.87268855722026e-13,17.5566154449129,1.50715082445932e-23,5.82954206161035e-24,-4.20999133451627e-18,-2.84642019186468e-14,6.23102596986332e-17,1.51364640549796e-17,-56.2461858474987,-50.3567445967361,2.60630522397658e-14,-1.52139204206379e-16,-3.53838909460098e-20,-6.82119473860044e-18,2.76988985805178e-14,-9.2850128262084e-17,-5.64660480211756e-14,-1.73727908275577e-24,2.78405661490018e-14,3.04307382110575e-18,-6.17381029393758e-23,8.13084634086279e-22,8.35910766032324e-27,0.00031193627668297,-7.14530322833027e-27,-3.10442331080511e-26,-1.08016213924963e-26,-5.13083268890972e-22,3.18615610620134e-22,-6.95368712514125e-23,-5.34742217791041e-23,-2.17980451419927e-22,0.000356498601923394,0.000340922940339626,2.24556711093229e-28,2.4664746023519e-23,-2.2122970368366e-23,2.53603677907942e-22,2.42494743114477e-19,-2.2261279008639e-22,4.61540590484306e-16,-76.4222502435873,-16.8609647937476,-28.8011154516621,4.54150682824627e-18,8.73447012329643e-18,3.3668833052345e-19,-9.34292393658363e-19,-6.57925493076273e-17,2.10416064132264e-18,1.07069066196023e-20,-7.63005517512626e-18,-1.96562567759781e-12,1.05817961215668e-17,-1.56101218925392e-17,3.51971422343014e-18,-1.51315632497308e-22,2.37230722432804e-20,-1.53329045807373e-19,-7.24823743981778e-16,1.19695050427721e-19,-1.69315640927077e-18,6.64619792408859e-18,-5.64890634977004e-17,-1.4286596046727e-14,1.78764796871753e-13,-32.4257464566249,-35.0028659359957,-55.0268865747686,-30.5483304082182,-50.6090684959878,-60.8665896276684,-33.784195450355,-34.1195768730767,-51.1944503262798,-0.00407503400383081,-85.1208885514301,-15.8731657237408,-5.9721547379708e-18,-5.07813855140133e-14,3.80739640052925e-15,-4.08263067775643e-16,-3.04362602043722e-20,-6.06510621242358e-17,-9.26544529419038e-22,-2.43956063858276e-21,6.23337512252136e-19,-5.00403197586721e-21,-1.87534359518644e-17,5.74665573046924e-15,-1.7081980618268e-21,-2.03514751423162e-16,-2.17667140111219e-20,2.89316504478932e-22,1.09327028238925e-21,7.53253817429259e-24,8.59259922133537e-16,1.01314511383295e-12,1.02901933623381e-12,0.0232337823544987,-8.02281287944098e-12,-79.4562850931269,9.92794790853125e-22,2.15756386795855e-20,-2.16579802372313e-21,2.50719353309181e-22,4.39098314824957e-22,-0.00031193627668297,3.80178752580725e-23,-2.14952324947598e-23,-1.99287024466482e-16,2.30435039736478e-15,3.97775049631753e-18,1.33250105522338e-24,-0.000155057590858885,-55.4996555950245,-41.0762616295102,-1.92477531424074e-20,1.26358262447515e-22,3.80622316422349e-18,3.54406522141217e-22,-0.000356498601923394,-4.55615579087873e-24,-3.83214874410594e-24,4.68237393213108e-25,-1.27037532473571e-22,7.8728572158186e-22,2.44693181378854e-23,2.92736292985513e-21,-1.27260888242331e-24,-4.19038953570813e-28,-5.50428193731584e-13,9.13579107405355e-15,-1.82296511601045e-19,-2.02448717470551e-15,-4.32169028188603,-1.78911848453258,1.01958238189702e-19,-1.72004916582004e-18,-7.24645608347004e-18,-2.2137257841896e-17,-2.45653815820139e-20,1.34950265931418e-18,1.64649749436785e-15,1.7166356260286e-18,-1.66717539045916e-16,-7.48907019387935e-17,-1.21603592891406e-07,-2.34093127343653e-12,-20.2351140344675,1.83603177461724e-19,-7.9517497169526e-19,1.37663875033803e-18,-1.17637393905106e-17,1.31089902804227e-17,-5.29604552940766e-21,1.34883843841929e-23,-2.43106190401312e-19,-7.33750407985239e-21,-1.78980696765348e-22,1.58274289236435e-18,6.23016032850543e-21,2.35835532805797e-21,-2.93559421870089e-24,6.56905632186833e-15,-1.74701578776905e-21,2.01187098730461e-21,-3.01593470680101e-16,-6.74688327152471e-25,1.07333760229943e-17,-2.83294977978116e-18,1.20696214253709e-13,1.95448121416248e-17,4.26998264181823e-19,-7.35711286962649e-13,5.67267567622879e-18,-4.86757915729744e-16,-0.0358063250619946,-7.36277298247313e-12,-5.60018687910492e-20,-8.49297717007208e-18,-9.46271122202953e-13,1.02065851631579e-14,-51.4205787240375,-27.599943558816,-41.7804994350551,-39.8667286414383,-45.3883846951253,-34.695039790613,9.94922614586341e-19,-7.77946845186849e-20,-37.6796502592875,-6.18877985108089e-13,1.49684333472992e-13,-75.0759701031407,-0.260819616516953,-59.3502315931209,-26.7372366870934,-1.68759255407723e-15,-2.85435307993684e-13,-27.7840698411391,-21.8993798203307,-40.4995372411005,-21.8364612183149,-22.7225436320636,-18.7616402830074,-37.043225228207,-17.5214406680094,-21.4197210325549,-29.2893361591287,-22.6790021532172,-4.64727410272199e-18,-0.00031193627668297,-7.43998070650724e-24,8.96244870879502e-24,-4.19857165831313e-24,3.01759900522397e-22,1.09088443878641e-22,1.06332828555584e-22,-0.000356498601923394,-2.54109666643767e-23,-6.25312285178067e-27,-34.6297516148686,9.56394181932798e-20,-6.99940046128264e-16,4.43377425982247e-17,8.54612268050651e-16,6.34920995582169e-20,-68.0262478568762,-55.7815897518122,-51.9676514621494,-28.7209335581836,-77.1406351978012,1.52416209526018e-23,5.75785870737155e-20,-3.75953990500158e-23,-1.46738332947044e-23,5.92317836009132e-25,-6.66522461385838e-28,5.6549098923692e-25,3.08348360963373e-18,7.41442915218468e-19,2.26965524752519e-19,-1.27616005855502e-17,-7.40633440306044e-22,-3.59550477351749e-20,-6.15113968225945e-25,-3.79875944224623e-22,0.020628667621598,4.30893018077189e-15,10.7245446120577,-12.2095886379777,0.431177938402127,20.6974525915132,31.9718138618512,-10.4536104479077,22.2958184888443,30.8893654462656,23.6578102792817,26.0745044327783,22.9985847720402,2.67301032047362e-21,-8.16634330263584e-18,5.14416189603532e-19,-5.62359718966406e-18,2.39195373926076e-16,-1.12112813738375e-16,-7.42067227421467e-20,-1.86667339050192e-18,1.40531890360073e-16,1.35109253348347e-17,2.39931935563954e-21,-6.24063887918018e-15,-8.58445924765621e-19,2.83040840933317e-19,5.37015547492667e-17,1.14672152705737e-13,1.21891443702023e-12,8.74759776073855e-27,-1.28837492045129e-18,-3.56966473430749e-18,-9.25535807243104e-18,5.36563878581357e-16,-6.83600459198077e-14,-5.11681201857249e-20,8.26399052572841e-17,-4.0165969824688e-19,-2.34880249537065e-15,-1.21438896307508e-14,1.10087650025806,8.47677862389199,-1.17462011704532e-12,-22.284352268604,-1.08360636333524e-19,1.44637247859966e-20,-2.27632818512554e-15,-42.0850551756631,-1.43209189394092e-17,2.51268743703446e-17,2.13308014034816e-21,-28.1282665139899,-1.80155490294172e-12,-43.946066900847,-1.65298503885335,-0.000356498601923394,8.19123747075095e-12,6.60983502845671e-18,-0.000356498601923394,0.000356498601923394,0.000356498601923394,-0.000356498601923394,0,1.74549685995573e-19,-3.31902494293294e-19,-2.1488550251519e-17,5.22377830394366e-19,44.8133005240512,-47.1453952288989,-35.8364394724962,30.9893136615593,-4.22188199765259e-21,1.01804584034285e-20,9.29473681880464e-13,1.89714905577078e-19,-9.95602286575332e-18,-4.22361545391543e-18,-2.47084850519074e-15,1.14050201459338e-16,2.34531421351159e-17,9.61307077046451e-18,1.21787495853937e-21,-5.16954498666129e-13,2.57007984931369e-19,-4.05311526249275e-17,1.12164730196263e-15,1.16188430860315,2.86574555007261e-13,5.71827717324467e-13,11.3552716358132,-5.55845857016017e-15,-2.09955260478106e-14,11.0441352230832,31.5856440741899,7.88055147072699,13.1295389927084,-2.70474558796633,27.1228790554289,9.96514379712063e-14,4.82470087333952,5.48035640623223,-6.99763365147117,-16.4538722021627,-10.494415789442,-17.1334813113682,-1.31663496921303,-0.964080872720117,-16.0263042421771,1.09095871690053e-12,7.47313768164907e-18,-22.1651063563624,-1.14402735856686,-1.11004999406136e-17,-9.17023689519496e-17,1.0257513234737e-14,-9.01772575117832e-18,1.24125140899627e-09,-24.1647236727126,-7.18557055615496,-1.04310738827853e-16,-6.57817904356829,1.63421272812247e-15,0.0110234562172194,-14.5945421778932,-2.15030273039268e-13,2.5396846206236e-16,-6.78924318633329e-14,-31.7617185816213,-12.3139900743874,3.01183919120257,-2.94407777070284e-16,-9.956800424448e-21,-26.4499779326881,-14.6104186196547,-28.9350937097384,-22.8352565995178,-1.47503498757862,-7.09517201241903,-10.0368719104557,-17.5912796029871,-16.3714652421555,-10.1688555662674,-4.32502038172558,-0.495290821791621,2.54696812996332,0.57536534812929,15.4387089826156,0.45061592648034,10.3377868549598,-3.57353780721317,9.09753007105858,11.9652378259919,-5.16088316699971,8.98288702346377,24.3590621027948,8.21232219957449,-8.06153442659026,-9.17559150136589,-0.137320508764081,-1.12493585760721,1.01210655262444,5.67344275433344,8.13378546286348,5.27103786463712,4.18856040322726,5.85617514032621,1.95997043965932,-2.83901612186353,9.7287830799987,-6.87605504903316e-20,24.7027867512993,4.55551305684898,-5.48687324758811,4.64105653762584,13.4997386659392,23.7461745298698,9.45382734095131,43.5349639671434,38.4340598797303,0.0887652540394438,35.7510277802758,22.8104729793208,22.8012038705523,45.0359366239602,38.6022459131032,2.16187984685118e-12,33.1254379905296,25.5267966010939,2.57442260737108e-15,6.25332645169973e-13,-2.01420420520154e-15,4.70371240992825e-17,3.65184271991645e-17,2.46194339836274e-16,-3.77604683085438e-14,-1.91348159378132e-18,-5.50801355359805,-2.22017902879072,-9.34478465101299,12.1478880564968,11.2377186185288,18.7560081440358,16.7741116341958,22.0510077170217,30.7429534996718,23.378612983454,16.9994960973027,30.5061793806451,7.59147546518575,20.4218823112677,19.5280667011484,11.7180467141401,28.3844529928595,20.1434907074611,45.8145407252055,-3.14367671884391e-15,3.52205195950897e-18,5.65771568876769e-17,4.6826060654134e-26,2.12248083005592e-19,-11.5971860641382,-10.499279022545,24.4491344318239,35.7558986469068,11.8628934660605,18.3871115907669,43.9146824815325,35.0580915044577,37.7449716983254,5.14729406611553e-14,3.45724922604764e-13,-3.68631550795479e-15,0.0618864582286353,5.15715970575827e-16,-1.30333475637711e-15,-1.09952164074929e-17,-2.02294592492124e-20,1.59487295392471e-22,7.62738033783624e-17,-8.39717139593217,-5.88552530858066,-12.8675347803297,-17.2361216189566,-17.6517390462343,-38.7321668590571,-15.3907001350077,-20.9671153868952,-11.1675834991265,-27.7860927151589,-17.3510380605027,-22.3715344197423,-9.23753125499771,-12.8958396920713,-9.6689681248284,-2.02696768690865,-5.51932488084581,-1.17824393199945,-1.31982755683998,-3.71225976045788,4.12161862257391,-0.790614948992077,5.68576500469946,-0.868690286491366,6.56156638603247,38.4395546756429,32.2651869743278,59.6941702927083,43.5527939313314,41.1152964662063,32.5688460082468,34.5250198636654,59.6567116688657,43.5895234638254,59.098534036953,79.9961890198449,3.81289561227759e-12,-1.23024188616755e-18,2.01680519719397e-23,4.48000102141186e-21,-6.12479036014602e-19,8.0698828193886e-21,-1.31289022070892e-19,-1.48712087500089e-17,3.44275386667906,15.7664255715237,33.1817457326912,37.0296555957948,36.8800208890091,30.3191129669592,19.739448675127,43.7172822480133,21.795285724863,29.3304365876528,53.8341203400143,42.5128534712028,15.7944520166019,6.99252533247435e-22,3.13673294352685e-17,1.60239299061754e-18,5.805127164766e-27,3.86124856836958e-18,-1.94067667881931e-22,-9.1769996697365e-22,4.68684223190286e-23,-6.85717696827586e-22,7.17172850464387e-16,13.1361406003328,16.3163812423872,62.8412511390582,31.7714805441192,-4.79822827489399e-23,49.2458332552902,0.716324168672164,59.4501172187739,51.2141196538009,0.00952460098197499,21.9750058661738,52.0763390054558,35.3096412930258,85.4028505308936,64.3936436637177,1.12050355123702e-12,72.0326651888306,26.526920562997,6.15118537571593e-13,51.1263708604651,-2.34967452834622e-14,-1.02467629376039e-20,0.00031193627668297,0.000356498601923394,-5.19176886866133e-25,8.37944598158347e-26,1.65111507285504e-24,-1.18247703460088e-25,4.89334786947367e-27,-3.36347891691529e-22,2.47660244776442e-20,12.6647146860495,13.9108546888859,11.0579480270016,3.74542181354928,49.0745093021762,42.5066126187724,-1.7981370190965e-14,3.65256662768799e-16,5.82230949310245e-16,5.89872476968077e-21,-2.29010403977181e-18,3.66124253965718e-18,-3.07384885468044e-17,7.67229455858164e-20,2.25270911504426e-21,5.0638369212025e-16,7.51907474815071e-22,-3.69131280025563e-19,5.58879183007058e-23,-1.83280212950487e-22,7.9557653901284e-25,1.24245659156545e-23,-3.06709044674975e-21,4.39523709752994e-25,-3.9260196594873e-24,9.53898034422308e-21,19.9635059319049,11.5311495906086,8.55490593779029,4.73313734987571,-7.94545352638201e-21,51.8023632989088,26.3692393337222,28.1551622021994,75.1711371178073,49.304217107786,2.5984886413416e-14,21.6604267246239,42.9442597872643,8.73358675672889,2.29081559597032e-12,-1.18924578486179e-25,-5.72599724636792e-26,5.14237158254621,-6.3039555241848,4.12154490331444,-6.42245802524234,-16.0861144403928,-11.9364943641367,-19.6062820986096,-16.3440124282945,-9.99041647609176,-7.92788769972268,-13.8889282850051,-1.50274141399177e-19,-2.56152093471207,-25.3415798820379,-9.52177903430538,0.274454506733545,-1.34668610418628,9.11555521224361,0.685510871080357,15.1189117146749,12.8437643939357,10.9655664695703,61.6469155470535,2.10247030431979e-16,-7.14753665570178e-18,3.90132074289856e-24,1.65895967944716e-19,7.47768587391874e-16,16.6507863072922,35.5396916368294,24.8614397417742,-9.41998050310689e-15,-1.53648676452931e-14,2.67045005610896e-15,-1.57346012289194e-13,-7.91818957174673e-21,-7.65844525251406e-18,19.0224852906875,-6.23394465361263e-18,2.31247748875572e-12,-1.27205960943819e-14,3.17282915386961e-12,2.34973937872773e-16,-2.00509846410977e-14,-2.78507364385846e-16,-0.0128921839637012,-4.0341437405626e-13,4.20656845640659e-19,-23.0395209426678,-1.53550530612872e-19,-3.26937020164363,-8.65400905373715,9.35756912780364e-15,-19.1420348485568,-22.5730818840418,-37.5226037555791,-46.0509370425502,-54.0363976869283,-29.8333406272454,-23.6413970590026,-21.193209799952,-26.9711987110788,-23.5019620113624,-3.19183662526532e-13,-24.4133705885755,-8.73062148208557e-13,-12.0469222908493,1.92692997733587e-22,3.01321960303718e-14,6.07987851949278e-17,5.33058265791752e-20,-3.46163997548562e-26,7.12581828361497e-20,-6.94694790765555e-15,-7.78008528780071e-18,-8.79604486895765e-22,-1.47716239747246e-19,5.27347855488137e-20,7.9913294587265e-24,-1.50747652965367e-21,1.31992499330702e-17,1.02356988027262e-17,-1.37510348288589e-22,-4.09298366186588e-22,5.2268269131379e-23,2.63351610724444e-19,-1.2250974043024e-17,-2.41290973886312e-17,-30.981306310632,-27.801951606946,-30.8261007735968,0.0092836244970519,7.86136276056657e-14,3.6278191645001e-16,-1.48836392973124e-14,-6.47255723462445e-19,6.00816497271229e-25,0.000356498601923394,2.9981806235308e-16,6.25225366491659e-16,-47.9934253335401,-39.8014222770919,-32.4709073742034,-0.058125548140314,-24.4857287191576,-5.20193488016764e-14,-34.8054845882248,-6.05233435862015e-12,-1.47728228734396e-16,-43.2087403140331,7.8153917432906e-15,-49.0431265053141,-59.0488531305641,3.40676602662082e-18,-7.35919671214149e-15,-3.41583891078522e-17,-3.05884946372854e-17,6.62562885150745e-15,-2.22304203012457e-12,-1.01247182368219e-18,-9.62758618371453,-2.64559786137872e-17,-1.25906488375573e-13,5.70649640583963e-20,-2.85329313249411e-23,-2.19735746785159e-16,3.06723763256051e-16,-1.23991045253183e-19,-2.09105092311566e-21,-4.02870904180493e-20,2.3700410101559e-12,20.8508601044941,5.26125077056442e-19,5.87802601459742e-17,-9.64243830319626e-15,5.14322454628546e-13,17.8767641943905,1.63001591215212e-23,6.30477660556829e-24,-4.55314304461584e-18,-3.07702383343996e-14,6.73888854867208e-17,1.63699443039823e-17,-56.751382366292,-51.0036759189843,2.81124150624711e-14,-1.64542568707029e-16,-3.82682133225628e-20,-7.37511300533917e-18,2.99362011785698e-14,-1.00412772690132e-16,-6.01943417163463e-14,-1.87890499277399e-24,3.00612221539308e-14,3.29106024999012e-18,-6.67710640508677e-23,8.79367916336569e-22,9.04055418145207e-27,0.00031193627668297,-7.72780783395057e-27,-3.3575015638115e-26,-1.16821854800851e-26,-5.54910077058714e-22,3.44588156604436e-22,-7.52055281832117e-23,-5.78334648849761e-23,-2.35750326526038e-22,0.000356498601923394,0.000340922940339626,2.4286302087374e-28,2.66754411307007e-23,-2.39264615656598e-23,2.74277785606601e-22,2.62263490900161e-19,-2.40760345052212e-22,4.99057379320615e-16,-76.8994837724109,-17.0416785587414,-29.1716048532011,4.911672556293e-18,9.4463435507412e-18,3.64133471820937e-19,-1.01045482114356e-18,-7.11549381071364e-17,2.27564074086426e-18,1.15795281563272e-20,-8.25159387779145e-18,-2.07135785306746e-12,1.14439637743405e-17,-1.68819344027303e-17,3.80660343887748e-18,-1.63651063022035e-22,2.56563813627668e-20,-1.65825868057955e-19,-7.83696876960404e-16,1.29450530087635e-19,-1.83116039781209e-18,7.18770531078409e-18,-6.10725748052057e-17,-1.54073482364376e-14,1.90527063039572e-13,-32.6644908830765,-35.2556347545433,-55.3744471388064,-30.8417577986124,-50.9388691763595,-61.3096009021532,-34.1296928776971,-34.3598854501044,-51.6075300411652,-0.00426063123841482,-86.1075564419092,-16.2056720032206,-6.45731977434446e-18,-5.42368592928651e-14,4.1108571176885e-15,-4.41508280883742e-16,-3.29167735893083e-20,-6.55911124300472e-17,-1.00207660780807e-21,-2.63843049205808e-21,6.74146060010602e-19,-5.41195950205779e-21,-2.0267575667444e-17,6.2072417431454e-15,-1.8474424241863e-21,-2.20094669664234e-16,-2.35410988451807e-20,3.12901525750239e-22,1.18239372596233e-21,8.14659912769275e-24,9.23240101484047e-16,1.07632164240476e-12,1.09022847625494e-12,0.0243401273783614,-8.42160593548987e-12,-80.7038897324948,1.07372866794125e-21,2.33341956977007e-20,-2.34235601086929e-21,2.71158285414831e-22,4.74893866901931e-22,-0.00031193627668297,4.11171277205131e-23,-2.32475609326217e-23,-2.1553228784276e-16,2.49185355313951e-15,4.30185145545615e-18,1.44112824263226e-24,-0.000161006219056912,-56.124731959768,-41.353841187383,-2.08168006973011e-20,1.36658961673961e-22,4.11632183959237e-18,3.83298214570081e-22,-0.000356498601923394,-4.92758307042183e-24,-4.14455335546874e-24,5.06409505214926e-25,-1.37393876224611e-22,8.51464434799346e-22,2.64640721983049e-23,3.16599837601265e-21,-1.3763545963064e-24,-4.53199933663664e-28,-5.81863584083891e-13,9.87406559362314e-15,-1.97158012454281e-19,-2.16473149416041e-15,-4.4347621016141,-1.8454311799543,1.10267053379399e-19,-1.85990917100774e-18,-7.83536132929245e-18,-2.39401097643209e-17,-2.65671442149147e-20,1.45948143251677e-18,1.77953224414874e-15,1.85653441249617e-18,-1.80277191596865e-16,-8.03852174878497e-17,-1.2691850757682e-07,-2.44542495450248e-12,-20.371058351997,1.98568189165773e-19,-8.59974127641346e-19,1.48883894046954e-18,-1.27226921336695e-17,1.41772105058542e-17,-5.72772429229409e-21,1.45879768236511e-23,-2.62924081721595e-19,-7.93565906641162e-21,-1.93571468191555e-22,1.71175410475805e-18,6.73804038561871e-21,2.5506097392969e-21,-3.17490751045307e-24,7.1028158079322e-15,-1.88943248816221e-21,2.17587996058726e-21,-3.26150760761085e-16,-7.29690122402233e-25,1.16059729886726e-17,-3.06385828449841e-18,1.304401979536e-13,2.11352843585064e-17,4.61804192994094e-19,-7.79326288890618e-13,6.13505141387743e-18,-5.26427035518848e-16,-0.0373312665570444,-7.73755244721185e-12,-6.05672227208813e-20,-9.18501079188984e-18,-1.01096736215504e-12,1.10239964210545e-14,-52.5016145962673,-27.8096116965313,-42.1118659131627,-40.4060733145184,-46.2927942233792,-35.3823119193104,1.07599792225439e-18,-8.41365545892624e-20,-38.0267000615541,-6.60278914812707e-13,1.61524428397211e-13,-75.9780179589839,-0.270478735862105,-59.7313697887022,-26.9851835117095,-1.82492740338547e-15,-3.04593647028245e-13,-28.1115264758978,-22.1658825418733,-40.9947218320585,-22.1818277855706,-22.9932560184767,-19.1268421925064,-37.3603871702818,-17.7978916349264,-21.7830868164916,-29.6498381132032,-23.0555313993437,-5.02530142341147e-18,-0.00031193627668297,-8.0464912774757e-24,9.69307545600588e-24,-4.54084543598376e-24,3.26359623335065e-22,1.17981440213009e-22,1.15001191414799e-22,-0.000356498601923394,-2.74825071380913e-23,-6.76288986831728e-27,-34.8907812442868,1.03433138724133e-19,-7.54447234357151e-16,4.79312742482679e-17,9.24152232700135e-16,6.86661075975127e-20,-68.4653390134178,-56.184042931563,-52.3308238450376,-29.0031187924759,-78.037493913337,1.64841262450451e-23,6.2272059337851e-20,-4.06602285391998e-23,-1.58700662199811e-23,6.4060478286231e-25,-7.2085955266566e-28,6.11590950267577e-25,3.334623276341e-18,8.01859356666613e-19,2.45466260116096e-19,-1.38015748483182e-17,-8.0101002779847e-22,-3.88860788858267e-20,-6.65258724662344e-25,-4.10843771656553e-22,0.0213017941391485,4.65621829641238e-15,10.8482485373862,-12.4307311730348,0.448619252704909,21.1227746942201,32.252090736993,-10.5458338836918,22.4799111002609,31.090375706809,23.8472393963479,26.3083109583294,23.1960773429388,2.89086720172416e-21,-8.83178999667679e-18,5.56344072430714e-19,-6.08120553489596e-18,2.58636475577752e-16,-1.21243507072845e-16,-8.0255702183818e-20,-2.01879299554077e-18,1.51984816475838e-16,1.46120729253749e-17,2.59491126733554e-21,-6.74644839551197e-15,-9.28418543992636e-19,3.06115380192431e-19,5.8070482295683e-17,1.21585543469568e-13,1.27842165946287e-12,9.46070513704836e-27,-1.393389083711e-18,-3.86059220840336e-18,-1.00093673535629e-17,5.80292890468176e-16,-7.3861679444382e-14,-5.53390481745312e-20,8.93766341377227e-17,-4.34318260139131e-19,-2.53952532286252e-15,-1.27804097469824e-14,1.12290758577041,8.61450465935176,-1.23092079923587e-12,-22.5343990879578,-1.17193598260173e-19,1.56428410434972e-20,-2.4610407830009e-15,-42.4733575214542,-1.54874501235384e-17,2.71736748768131e-17,2.30696872279174e-21,-28.3716382844513,-1.90995068385636e-12,-44.5385200063827,-1.70232508236694,-0.000356498601923394,8.6021781464111e-12,7.1484775262394e-18,-0.000356498601923394,0.000356498601923394,0.000356498601923394,-0.000356498601923394,0,1.79432936169847e-19,-3.41188632157526e-19,-2.20896925500935e-17,5.36989136084675e-19,45.0058801774231,-47.3284266490914,-36.0100363120321,31.1185057370932,-4.34003913671855e-21,1.04653824383789e-20,9.45198403990863e-13,1.9502460352177e-19,-1.02314353547885e-17,-4.34179742696652e-18,-2.53941455958593e-15,1.17240040167369e-16,2.41091244465101e-17,9.88150237128745e-18,1.25195917690488e-21,-5.27133416801445e-13,2.64199927773183e-19,-4.15842690854822e-17,1.15295852532764e-15,1.16853399683174,2.92270057902036e-13,5.81834628568845e-13,11.4067950714378,-5.71374954420983e-15,-2.15762819839551e-14,11.0728294651753,31.7491083366043,7.90025175923998,13.1872048731415,-2.71433766226435,27.186875781726,1.01671606689202e-13,4.83950543216465,5.49594465841581,-7.01384320132743,-16.5158906855776,-10.5182992322645,-17.1722870033194,-1.3196008768772,-0.974593699629516,-16.0720499080595,1.10733184342061e-12,7.68222182770531e-18,-22.2473302496836,-1.15122194367908,-1.14109714796557e-17,-9.42660418885223e-17,1.05365754218984e-14,-9.26909761382325e-18,1.25894314100283e-09,-24.2410827752401,-7.21683295222923,-1.07226066651761e-16,-6.60692464289791,1.6777151142833e-15,0.0111783528334861,-14.6471095461644,-2.20367957909763e-13,2.60991105454673e-16,-6.94365713835174e-14,-31.8474816859678,-12.3731278194191,3.02797645255389,-3.02584352496215e-16,-1.02354125726172e-20,-26.5182962240832,-14.6419182493206,-28.9977842309351,-22.910444022756,-1.48131224300155,-7.13242731458261,-10.0993276580637,-17.6675873585886,-16.4587822537898,-10.2260770212272,-4.34287037873332,-0.4979141407908,2.56344007610996,0.580309379604308,15.5129055565809,0.453890149142965,10.4028631765374,-3.59866391985871,9.16433733051484,12.015437189073,-5.20897449456035,9.04446025485251,24.5011468031431,8.27296706973214,-8.12037536468054,-9.24221987272623,-0.138553568939932,-1.13790719772944,1.02249560469149,5.73642684288435,8.20525233779087,5.33167683565965,4.24014304929409,5.91646412897182,1.98315752788329,-2.86473942344115,9.82447673291443,-7.06829169877824e-20,24.7681663840937,4.56740759808261,-5.54593150112682,4.67815541815009,13.5985105457988,23.8099756297227,9.47625161388854,43.6752677862919,38.5401029098729,0.0901062209337235,35.8382391058942,22.8988282813469,22.8543385267362,45.1411083639028,38.7791014625068,2.19602983223524e-12,33.2039494752111,25.6470364764995,2.64424907357302e-15,6.36369086840233e-13,-2.06670337702724e-15,4.835304524536e-17,3.753078934206e-17,2.5306015944372e-16,-3.88048770050739e-14,-1.96696490060983e-18,-5.55765436841367,-2.24524496201834,-9.42919895800905,12.2393597438028,11.3336136638161,18.8832802169989,16.8858032346673,22.1990468510942,30.8823625336671,23.5373070900474,17.1341617136535,30.6678413478607,7.66717528556049,20.5560066888305,19.6699258848637,11.8142859185584,28.5560766431084,20.2352545482426,45.9574664002221,-3.23108778415184e-15,3.62062472772798e-18,5.81603161198137e-17,4.81366191087381e-26,2.18182764740216e-19,-11.6671244034649,-10.5799168851511,24.599152423652,35.8690161099384,11.9754285803559,18.5169763172888,44.1380355822234,35.1962231550682,37.8591380738713,5.25568473472689e-14,3.52772610640009e-13,-3.78916092713e-15,0.0625535677877399,5.30148146067802e-16,-1.33967629984749e-15,-1.1302822167436e-17,-2.07955869676771e-20,1.63950943553308e-22,7.84077048131971e-17,-8.45927329650243,-5.94069276724373,-12.9588398966796,-17.3321977055908,-17.7742925939447,-38.8748886066397,-15.4898429996599,-21.0646559870555,-11.2585596170636,-27.9137207356822,-17.424013877095,-22.4839369332712,-9.28475431349295,-12.9642115463205,-9.73180988617765,-2.04071555725157,-5.55285665529211,-1.18299673413441,-1.33065912984392,-3.73113261404599,4.15904393965974,-0.799340965093264,5.71614364332518,-0.873853796666588,6.60666297627789,38.5504325144425,32.4345067881073,59.8315878896462,43.7062462654542,41.2144943916643,32.7486691009254,34.6933516296167,59.8219855568932,43.6895485234283,59.2358420985292,80.5016639603606,3.86684999507233e-12,-1.26466898980418e-18,2.07325082642418e-23,4.60535779881829e-21,-6.29616119327836e-19,8.29574993509484e-21,-1.34962983387175e-19,-1.52872787458406e-17,3.47050270078657,15.8579450206012,33.3306246238711,37.1534503135012,37.0015733803546,30.4485061050945,19.8500277874582,43.8491836434748,21.9000727842941,29.4548203300157,53.956627765463,42.6482311423141,15.871959259911,7.18821549797279e-22,3.22451574754138e-17,1.64719703612086e-18,5.96760002435278e-27,3.96931228742975e-18,-1.99499050200583e-22,-9.43384038855619e-22,4.81801349649697e-23,-7.04908366919195e-22,7.3722467241094e-16,13.2260627404156,16.3918780215264,63.0097901047089,31.8442225560373,-4.93251742456177e-23,49.3589238574479,0.722255958485552,59.6307226151821,51.3567174401641,0.00964576100559743,22.0667073472746,52.3210614750707,35.3903433234012,85.7425881587596,64.5304512256303,1.14329678608613e-12,72.4157652104202,26.6605492385544,6.25665679333598e-13,51.2538948359845,-2.4145570663663e-14,-1.05335425715451e-20,0.00031193627668297,0.000356498601923394,-5.33707466094927e-25,8.61396984079198e-26,1.69732572791613e-24,-1.21557214332046e-25,5.03030541579247e-27,-3.45761182522975e-22,2.54590994734701e-20,12.7341620386945,14.0069191286015,11.1212933220801,3.76271930636971,49.1834538093438,42.5978156549993,-1.84792113410483e-14,3.7547417659511e-16,5.98520020446933e-16,6.06381289284333e-21,-2.35417631861976e-18,3.76372170393607e-18,-3.15983258718687e-17,7.88702622051951e-20,2.31575328858886e-21,5.2054900822136e-16,7.72951348067798e-22,-3.7946207004826e-19,5.74520899811625e-23,-1.88409769192873e-22,8.17843022365609e-25,1.2772298239112e-23,-3.15293054597913e-21,4.51824973171252e-25,-4.03589985440288e-24,9.80595423645076e-21,20.0807038733175,11.6269120412997,8.62603260660856,4.74785659134871,-8.16781832798e-21,51.910786733109,26.431842538818,28.2935965794106,75.4051727382955,49.4087939565074,2.65442997459596e-14,21.7101385885351,43.10941249662,8.77989442080933,2.33077835064571e-12,-1.22253045730183e-25,-5.88625651983239e-26,5.16187836653643,-6.33071269081008,4.13177851079085,-6.44288391691297,-16.1334657849474,-11.975328691948,-19.6814498928502,-16.3777409073563,-10.017182774837,-7.94579948670223,-13.9452473112375,-1.54480325315083e-19,-2.56790567006316,-25.4192671185641,-9.56425736446453,0.277469285121015,-1.34984544528494,9.14426116138688,0.688892078783429,15.1762344852855,12.8730825941107,10.9918725102935,61.9151988465838,2.16130173410451e-16,-7.34747816466468e-18,4.01050987712633e-24,1.70534689973061e-19,7.68542971301117e-16,16.7119736585754,35.6200415974349,24.9447460105569,-9.68162322657717e-15,-1.57916546660458e-14,2.74304662402566e-15,-1.60656885519681e-13,-8.13975839970938e-21,-7.85919222039289e-18,19.0995997796323,-6.40827890039949e-18,2.35138158492199e-12,-1.3074672564308e-14,3.224426153209e-12,2.41545825768085e-16,-2.06042491508462e-14,-2.86269061035759e-16,-0.0130801178322355,-4.10308393946889e-13,4.32428646506099e-19,-23.1434995581772,-1.57846595041415e-19,-3.28792309854254,-8.67478580236982,9.61539727772002e-15,-19.1820002662183,-22.6229666531423,-37.6091956774192,-46.1470211739574,-54.2365685060252,-29.9052379114054,-23.7069661989188,-21.2346891611498,-27.0681018747864,-23.5465730394994,-3.23972050942572e-13,-24.4687231373419,-8.86765486665479e-13,-12.1140568651968,1.98085742545125e-22,3.09646383673954e-14,6.24994394630959e-17,5.47873171046421e-20,-3.55852364774038e-26,7.32525680072378e-20,-7.13530669187474e-15,-7.99776098332026e-18,-9.04215845932942e-22,-1.51850289359849e-19,5.42106551271134e-20,8.21498848361019e-24,-1.5496667361722e-21,1.35684776587342e-17,1.0522177594106e-17,-1.41358920606207e-22,-4.20753458125954e-22,5.3731127110543e-23,2.70721873547964e-19,-1.25938031552751e-17,-2.48039940779848e-17,-31.0892254772932,-27.8931413064409,-30.8889898926332,0.00940063159184925,8.04053830470631e-14,3.72919513346125e-16,-1.52987447496003e-14,-6.65363944692664e-19,6.1763206194965e-25,0.000356498601923394,3.08204660880711e-16,6.42715471242482e-16,-48.0968765536147,-39.9003238264119,-32.545043151445,-0.0588488848311678,-24.6294971698526,-5.3148633848391e-14,-34.9138214782308,-6.13729309660227e-12,-1.51854408088057e-16,-43.2948650916554,8.02770193052075e-15,-49.1440661030047,-59.239646884944,3.50204002152178e-18,-7.51185518394084e-15,-3.51089245203848e-17,-3.14425500294557e-17,6.80915334073518e-15,-2.25790280233302e-12,-1.04081118655541e-18,-9.68851169916371,-2.71920518663706e-17,-1.28404332504046e-13,5.86618123220215e-20,-2.93315038092456e-23,-2.25885395969613e-16,3.15256869604356e-16,-1.27461065404528e-19,-2.14957077092101e-21,-4.14145882808336e-20,2.41184867737652e-12,20.9722356863295,5.40841995696422e-19,6.04148484256974e-17,-9.90991521010754e-15,5.23070506879967e-13,17.9639632312105,1.67563634842509e-23,6.48123381081313e-24,-4.68054314627038e-18,-3.16223728575091e-14,6.92743119876386e-17,1.68278203690934e-17,-56.9366492468705,-51.1809427931101,2.88580812201248e-14,-1.69148378839672e-16,-3.9339116081611e-20,-7.58023794923524e-18,3.07614241077279e-14,-1.0321893170711e-16,-6.14618312765354e-14,-1.93149148078227e-24,3.08730665358113e-14,3.38311483170522e-18,-6.86398245691134e-23,9.03979154591133e-22,9.2935785518853e-27,0.00031193627668297,-7.94409610366634e-27,-3.45147093454298e-26,-1.20091432766465e-26,-5.70440486041195e-22,3.54231530098031e-22,-7.73103080882881e-23,-5.94520626633384e-23,-2.42348322670247e-22,0.000356498601923394,0.000340922940339626,2.49660262623074e-28,2.74220199376023e-23,-2.45961053797898e-23,2.81954185115951e-22,2.69603809924458e-19,-2.47498590990579e-22,5.12958416836594e-16,-77.0593636521959,-17.1078020191511,-29.3091520882005,5.04910084033005e-18,9.71062169100978e-18,3.74323402266675e-19,-1.03873363835878e-18,-7.31457491172138e-17,2.33929850811286e-18,1.19034778425609e-20,-8.48224158086551e-18,-2.10674867790263e-12,1.17639616120815e-17,-1.73539733342017e-17,3.91311504353301e-18,-1.68231262902296e-22,2.6374062144577e-20,-1.70465279573607e-19,-8.0549995277742e-16,1.33072202943651e-19,-1.8823954575496e-18,7.38869057101728e-18,-6.27687801582315e-17,-1.58146175392508e-14,1.94654997742324e-13,-32.7523437331482,-35.3464500068345,-55.4982875535915,-30.9497663689539,-51.0436288339811,-61.4679465584486,-34.2308803656914,-34.4379113155907,-51.7531701714451,-0.00431987397235574,-86.3842647422182,-16.298807187397,-6.6370202529399e-18,-5.54204087891528e-14,4.22256986783592e-15,-4.53842858159311e-16,-3.38376233347821e-20,-6.74242417011223e-17,-1.03012181054032e-21,-2.71227004475198e-21,6.93009774765624e-19,-5.56342324367467e-21,-2.08259639987795e-17,6.37620261008441e-15,-1.89914192283654e-21,-2.26247993489472e-16,-2.419991969535e-20,3.21658641839556e-22,1.21548533572998e-21,8.37460248976837e-24,9.46506702721853e-16,1.09770711604675e-12,1.11110822231238e-12,0.0246957681828729,-8.54898587145595e-12,-81.0544433245408,1.10377974849048e-21,2.39870728045105e-20,-2.4079127319879e-21,2.78747343323143e-22,4.88184844678281e-22,-0.00031193627668297,4.22678902509945e-23,-2.38982101802188e-23,-2.21564079762552e-16,2.56137416311933e-15,4.42214464281191e-18,1.48146199747542e-24,-0.000162828481939656,-56.2937187755764,-41.4354731801948,-2.13993876132779e-20,1.40483610573977e-22,4.23141202193009e-18,3.94025827394695e-22,-0.000356498601923394,-5.06549630371754e-24,-4.26055108177952e-24,5.20583110208159e-25,-1.41239255246578e-22,8.75293801586395e-22,2.72047291186489e-23,3.25460300463638e-21,-1.41487602285669e-24,-4.6588412483572e-28,-5.92180774644216e-13,1.01465438910076e-14,-2.02676295168995e-19,-2.21451425624331e-15,-4.46923666826899,-1.86313309254739,1.13351379714634e-19,-1.91174511186633e-18,-8.05355083676079e-18,-2.46090546077682e-17,-2.73101954257773e-20,1.50030836943234e-18,1.82862462383504e-15,1.90846878308512e-18,-1.85303721254036e-16,-8.23719325095811e-17,-1.28585854163216e-07,-2.47991256323758e-12,-20.4121211379704,2.04124126579857e-19,-8.84027366959965e-19,1.53049350276847e-18,-1.30787350724024e-17,1.45737294865021e-17,-5.88799437089388e-21,1.49962607397367e-23,-2.70282435864905e-19,-8.15775535490721e-21,-1.98989096824224e-22,1.75965208554645e-18,6.9266160860371e-21,2.62199427934316e-21,-3.26376562704919e-24,7.30049928204138e-15,-1.94231195210099e-21,2.23677693963521e-21,-3.3526089233333e-16,-7.50112597124279e-25,1.19293469395412e-17,-3.14958439207826e-18,1.34031399411244e-13,2.17249750635629e-17,4.74726833818745e-19,-7.93600872134369e-13,6.3067148743258e-18,-5.41152486392156e-16,-0.0377926961019626,-7.85436195509473e-12,-6.22623645202903e-20,-9.44187812001686e-18,-1.03297865646533e-12,1.13247279368904e-14,-52.8042830611205,-27.8709367049693,-42.1986343720971,-40.546620442794,-46.5466922695547,-35.5750957301857,1.1060925004936e-18,-8.64913094466033e-20,-38.1516558458977,-6.74333045496297e-13,1.65822984755362e-13,-76.2361717116311,-0.273486301477621,-59.859718773655,-27.0743996640198,-1.87585175646668e-15,-3.11240076941513e-13,-28.231164326328,-22.2623829926909,-41.1792808795927,-22.3082063733819,-23.093475286946,-19.2618725538302,-37.476394882375,-17.9002910073082,-21.9190143919718,-29.7839824940525,-23.1963007056617,-5.16543798602148e-18,-0.00031193627668297,-8.27169009942357e-24,9.96435978565053e-24,-4.66793340025673e-24,3.35493581774535e-22,1.21283443571413e-22,1.18219788144897e-22,-0.000356498601923394,-2.82516807032468e-23,-6.95216940572989e-27,-34.9805248648057,1.06326110074171e-19,-7.74453899864854e-16,4.9260279014795e-17,9.49939888179932e-16,7.05867337633988e-20,-68.6095324838402,-56.3288455488002,-52.4460131298624,-29.1084952522818,-78.2968781141128,1.69454714131669e-23,6.40146657761489e-20,-4.17982149756687e-23,-1.63142335650702e-23,6.58534014718891e-25,-7.41035373142692e-28,6.28708140874743e-25,3.42781428523006e-18,8.24285522311959e-19,2.5233525402673e-19,-1.41876247636988e-17,-8.2342798254112e-22,-3.99743668166027e-20,-6.83877688011574e-25,-4.22342236259643e-22,0.0215123746830083,4.78417308578442e-15,10.8928259894477,-12.5110311709404,0.4543429413316,21.2771936334094,32.3523490573723,-10.5795448290448,22.54597664382,31.1499480308502,23.898105320283,26.3735345168985,23.2664367724491,2.97174456815501e-21,-9.07879901941812e-18,5.71910010437658e-19,-6.25090181368168e-18,2.65840046456501e-16,-1.24631418704864e-16,-8.25016118522575e-20,-2.07526156602927e-18,1.56236286026474e-16,1.50208530460844e-17,2.6675344079808e-21,-6.93347831146137e-15,-9.54397576908796e-19,3.14683265660421e-19,5.96903396896982e-17,1.23863504542256e-13,1.29802512066944e-12,9.72548344090549e-27,-1.43237706854266e-18,-3.96859472941359e-18,-1.02891959983288e-17,5.96525708711434e-16,-7.58848073914945e-14,-5.68876388208076e-20,9.18779465852702e-17,-4.46422139624116e-19,-2.61014120030828e-15,-1.29938603135874e-14,1.1291038712419,8.65365040281688,-1.24943496003194e-12,-22.6252932863558,-1.20473125525058e-19,1.60806574879749e-20,-2.5294071443294e-15,-42.6155851459469,-1.5920345226426e-17,2.79332323005498e-17,2.37153366088199e-21,-28.4370960367635,-1.94727861719336e-12,-44.6981075090831,-1.71724638178219,-0.000356498601923394,8.73009128585961e-12,7.34843238789581e-18,-0.000356498601923394,0.000356498601923394,0.000356498601923394,-0.000356498601923394,0,1.80559245545303e-19,-3.43330522778892e-19,-2.22283480697049e-17,5.40358910634022e-19,45.0419640036166,-47.3617408012715,-36.0412386264014,31.1484856271114,-4.36729668165634e-21,1.05311116430467e-20,9.48564159968476e-13,1.96249514665049e-19,-1.0294610640153e-17,-4.36905808988764e-18,-2.55516698717627e-15,1.17975677902697e-16,2.42604068212026e-17,9.9433618726087e-18,1.2598220064847e-21,-5.29346495466422e-13,2.65858903095519e-19,-4.18240496890591e-17,1.16017085968055e-15,1.16984190730878,2.93511357695429e-13,5.83973868980587e-13,11.4166276045477,-5.74953480400855e-15,-2.17094307941268e-14,11.0793645822442,31.7808794484446,7.90420803618574,13.1983125479893,-2.7162375264148,27.1999591954773,1.02112840442874e-13,4.84259028704306,5.49957588952103,-7.01727955249825,-16.5279455017589,-10.5233380857969,-17.1806205980648,-1.32021798370645,-0.976785790136834,-16.0826424675281,1.11075020911877e-12,7.73044801616916e-18,-22.2666201221495,-1.15288811421644,-1.1482579835036e-17,-9.48570437249694e-17,1.06002114602912e-14,-9.32697457998849e-18,1.26264892645614e-09,-24.2589404360797,-7.22407523137977,-1.07898105557625e-16,-6.61247534713027,1.68760006696983e-15,0.0112114531739948,-14.657440842469,-2.21569262342555e-13,2.6260150351222e-16,-6.97802527875421e-14,-31.8649413454187,-12.3868676895877,3.0317219316181,-3.04462880122629e-16,-1.0299679896889e-20,-26.5342760297896,-14.6486601812919,-29.0107163990401,-22.9251313731666,-1.48276921366218,-7.1410544280615,-10.1138031456268,-17.6854015496903,-16.4791993402692,-10.2393850002614,-4.34701545850454,-0.49852175016129,2.56726044007118,0.581445656163777,15.5300938095387,0.45464682908721,10.4179011854226,-3.60445408290213,9.17977936775137,12.0270961642817,-5.22001316741615,9.05867364621409,24.5339911934452,8.28697118581587,-8.13394110480485,-9.25771301557461,-0.138835494952609,-1.14085941968795,1.02487255913366,5.75083121063244,8.22171424681795,5.3455212751187,4.25180510905278,5.93032937535167,1.98841226078069,-2.87059017297081,9.84636522992866,-7.11261519101018e-20,24.7830466788447,4.57012016360799,-5.5594880966273,4.68671586103418,13.6213781303891,23.8245467603838,9.48080455689357,43.7042481264504,38.5644378800973,0.090396676060635,35.8581824321299,22.9194625951277,22.8650727855459,45.1633097946851,38.8132517149467,2.20320275505519e-12,33.2194884755577,25.6702212962653,2.66014713153007e-15,6.3872656887136e-13,-2.07859403197931e-15,4.86565494381495e-17,3.77632612040752e-17,2.54641202711638e-16,-3.90443390602546e-14,-1.97929461981933e-18,-5.56890965398193,-2.25090801537339,-9.44876952437597,12.2605265923655,11.3557262588287,18.9127853852015,16.9117006537955,22.2332841661581,30.9146744601433,23.5740577887522,17.1652234181399,30.7053045034959,7.68455433952752,20.5869719389588,19.7026077000174,11.8363730194941,28.5957060067423,20.2565671695674,45.9851360299999,-3.25118371870289e-15,3.64336467426739e-18,5.85255062036631e-17,4.8438955199594e-26,2.19551151224717e-19,-11.683478056863,-10.5985394815158,24.6338263383359,35.8951623626791,12.001264015439,18.5469415347387,44.1895521986224,35.2283234234606,37.8813763618564,5.27940084706052e-14,3.54288767564406e-13,-3.81284717997054e-15,0.0626862421812432,5.33477339683479e-16,-1.34804338422895e-15,-1.13737693275061e-17,-2.09261832856827e-20,1.64980671080039e-22,7.88998744753859e-17,-8.47358110223149,-5.95337587676416,-12.9798693253661,-17.3545295994113,-17.8033839118805,-38.9091835449985,-15.5129763847786,-21.0877547525661,-11.27983073967,-27.9440408730605,-17.4414254596733,-22.5105959153566,-9.29590991655976,-12.980354056163,-9.74645030506847,-2.04394560348384,-5.56072279914598,-1.18413259018398,-1.33317620685769,-3.73560410722249,4.16776521538491,-0.80135011686633,5.72343756320869,-0.875078113161403,6.61735276989705,38.5760228342289,32.4738758716628,59.8622414866105,43.7419197630379,41.2364227783962,32.7902734251307,34.7323219277811,59.8600154515705,43.7116874497438,59.2659368645224,80.5980817602986,3.87805667610596e-12,-1.27261052528386e-18,2.08627239665251e-23,4.63427359395616e-21,-6.33568984828184e-19,8.34785688940058e-21,-1.35810478925563e-19,-1.53832452021005e-17,3.47701556913673,15.8790508784122,33.3651595530174,37.1824125556101,37.0297208556579,30.4787388580036,19.875932734895,43.879436824414,21.9246032392222,29.4840318925197,53.9833052321613,42.6797952153334,15.8869740490487,7.23335829915923e-22,3.24476580159394e-17,1.65752766635396e-18,6.00508131911946e-27,3.99424141953252e-18,-2.0075201477428e-22,-9.49309134278581e-22,4.84827341399085e-23,-7.09335388525625e-22,7.41848134885207e-16,13.2471375837325,16.4098862027966,63.04840605115,31.8590036796259,-4.96349669091199e-23,49.3820833102711,0.723446127898742,59.6659750947998,51.3847587978371,0.00967033865047595,22.0827117875503,52.3676525628829,35.4051873359127,85.8074316236845,64.5561559451882,1.14811084198963e-12,72.4851391640437,26.6859288030842,6.27909697000719e-13,51.2784607362769,-2.42941765009684e-14,-1.05997001457117e-20,0.00031193627668297,0.000356498601923394,-5.37059559788301e-25,8.66807288275918e-26,1.70798614918748e-24,-1.22320695238145e-25,5.06190076553691e-27,-3.47932718537703e-22,2.56189789116253e-20,12.7506025588372,14.0292527550673,11.1364303117739,3.76686380226907,49.2074788108346,42.6180105944509,-1.85934073322838e-14,3.77830710467765e-16,6.02277020321083e-16,6.10189714549067e-21,-2.3689545279588e-18,3.78736410423519e-18,-3.17966279232302e-17,7.93656353907045e-20,2.33029665294803e-21,5.2381596959559e-16,7.77805984034308e-22,-3.81845266556461e-19,5.78129324069755e-23,-1.89593115388871e-22,8.2297973924339e-25,1.28525171832546e-23,-3.17273316470566e-21,4.54662781724887e-25,-4.06124836929107e-24,9.8675431686783e-21,20.1079699613801,11.6489627739505,8.64252025322732,4.75140331210213,-8.21911507885038e-21,51.9352897854029,26.4432320690351,28.3173917644574,75.4480128674373,49.4332143683524,2.66678918948759e-14,21.7191638148291,43.1390530457945,8.78843116801372,2.33907565927057e-12,-1.23020900699412e-25,-5.92322723831326e-26,5.16659061413734,-6.33710421029242,4.134192339977,-6.4478303940886,-16.144968544555,-11.9847037540202,-19.6994598860956,-16.3857591503125,-10.0237363802813,-7.95007381367037,-13.9586960481001,-1.55450704719636e-19,-2.56928370356871,-25.4380611037647,-9.57206588688875,0.278087995088471,-1.35047006505142,9.1500864684482,0.689531550153032,15.1876546441595,12.8793007593669,10.9979745454357,61.961855344511,2.17487221480025e-16,-7.3935906235715e-18,4.03569898541517e-24,1.71604288518838e-19,7.73318048741948e-16,16.7266427102263,35.6387271830001,24.9648343860756,-9.74174150705987e-15,-1.58896958887979e-14,2.75961990031942e-15,-1.61374491950711e-13,-8.19086796570078e-21,-7.90496389879178e-18,19.1180728721886,-6.44848029023742e-18,2.359290204975e-12,-1.31561032417849e-14,3.23495015513605e-12,2.43061334234708e-16,-2.07309082801989e-14,-2.88055715156667e-16,-0.0131181510858177,-4.11746556387432e-13,4.35144130013546e-19,-23.1630446545962,-1.5883749706762e-19,-3.29132650238413,-8.67884094968083,9.67440173578349e-15,-19.1905106572756,-22.6349969411195,-37.6301466447203,-46.1695667897354,-54.2764516191646,-29.92270175796,-23.7228970838699,-21.2440648059244,-27.0876802758593,-23.5565553083596,-3.25000967831407e-13,-24.4795692098449,-8.89637849423972e-13,-12.1266156986742,1.99329776330012e-22,3.11554162263589e-14,6.28916574217177e-17,5.51278434344499e-20,-3.58087399509751e-26,7.37126630039871e-20,-7.1783065726296e-15,-8.04796872067522e-18,-9.09892701350483e-22,-1.52803962067952e-19,5.45511208031765e-20,8.26658496466907e-24,-1.55939964446754e-21,1.3653633852872e-17,1.05882668775991e-17,-1.42246754350286e-22,-4.23396036267581e-22,5.40685962034512e-23,2.72422097774644e-19,-1.26728853350797e-17,-2.49596349036975e-17,-31.1151604976715,-27.9151292449873,-30.902966267955,0.00942409534401907,8.07862218305295e-14,3.75256183489783e-16,-1.53943398560578e-14,-6.69540538559511e-19,6.21511291705457e-25,0.000356498601923394,3.10138790738837e-16,6.4674920792249e-16,-48.1214741814476,-39.9243292457566,-32.5598249757114,-0.0589953946402893,-24.6560778929528,-5.33889335566023e-14,-34.9401973934518,-6.1541474519425e-12,-1.52805300838937e-16,-43.3138888114683,8.07610440901998e-15,-49.167353577852,-59.2776595013687,3.52401017641186e-18,-7.54461148539044e-15,-3.53275716093881e-17,-3.16393316364329e-17,6.85126510352352e-15,-2.2652598078636e-12,-1.04734920330388e-18,-9.69996454527094,-2.73613441988199e-17,-1.28950838972146e-13,5.90301692113233e-20,-2.95157284591953e-23,-2.27304040664284e-16,3.17219256298281e-16,-1.28261550809718e-19,-2.16307044099916e-21,-4.16746885907795e-20,2.42014445282694e-12,20.9931724296802,5.44236127066631e-19,6.07906675170892e-17,-9.97133451116747e-15,5.24856548879358e-13,17.9796385734265,1.68616064535502e-23,6.52194121195688e-24,-4.70992968377866e-18,-3.18178346931096e-14,6.97091840777907e-17,1.69334164079042e-17,-56.9812727376394,-51.2150358160383,2.90267183522406e-14,-1.70211030224266e-16,-3.95861483002303e-20,-7.62741209917083e-18,3.09503353202723e-14,-1.03865765698651e-16,-6.17327012455748e-14,-1.94362280795246e-24,3.10570395441583e-14,3.40434466367563e-18,-6.90709328400803e-23,9.09656766178746e-22,9.35194932874983e-27,0.00031193627668297,-7.99399249801006e-27,-3.47314899276302e-26,-1.20845699597541e-26,-5.74023211503652e-22,3.56456087208403e-22,-7.7795859527835e-23,-5.98254582067262e-23,-2.4387041841157e-22,0.000356498601923394,0.000340922940339626,2.51228339003082e-28,2.75942494424533e-23,-2.47505867690459e-23,2.83725073267846e-22,2.7129719005306e-19,-2.49053045676052e-22,5.16157421732526e-16,-77.0972200187041,-17.1236448996539,-29.3422177272275,5.08080029499722e-18,9.77157701293255e-18,3.76673983542934e-19,-1.0452571527015e-18,-7.36049418660862e-17,2.35398031749763e-18,1.19781947095397e-20,-8.53541379032769e-18,-2.11427870657763e-12,1.18377477110538e-17,-1.74628180353514e-17,3.93768325350338e-18,-1.69287878738211e-22,2.65395811352739e-20,-1.71535364074656e-19,-8.10514544240751e-16,1.33907537756473e-19,-1.89421324318363e-18,7.43503504474104e-18,-6.31585658630712e-17,-1.59063801319828e-14,1.95565875553887e-13,-32.7738314602263,-35.368417760478,-55.5284260623793,-30.9757960168018,-51.0675703379833,-61.5061477982902,-34.2518864503275,-34.4557776892651,-51.7876188047644,-0.00433208685343478,-86.4388122232018,-16.3160047911012,-6.67835753028189e-18,-5.56739140048751e-14,4.24813745255373e-15,-4.56685807480643e-16,-3.40500092806611e-20,-6.78468256000493e-17,-1.03659156897483e-21,-2.72930376756643e-21,6.97361025303531e-19,-5.59836433720358e-21,-2.09537718257231e-17,6.41464212466643e-15,-1.91106791255948e-21,-2.27666744526764e-16,-2.4351900105916e-20,3.23678810990298e-22,1.22311922420166e-21,8.42720101240761e-24,9.51782402048262e-16,1.10227300515809e-12,1.11562402857331e-12,0.0247695315909794,-8.57491717924817e-12,-81.1219774078064,1.11071227756776e-21,2.41376641457583e-20,-2.4230361423027e-21,2.80498076597543e-22,4.91250949907111e-22,-0.00031193627668297,4.25333610435069e-23,-2.40483102818931e-23,-2.22955540835223e-16,2.57738425608037e-15,4.44988250389364e-18,1.49076667434023e-24,-0.000163195299096506,-56.3263393422607,-41.4531980351308,-2.153378480592e-20,1.41365914474725e-22,4.25794871403106e-18,3.96500602119568e-22,-0.000356498601923394,-5.09731194617147e-24,-4.287310958739e-24,5.23852878931964e-25,-1.4212635984361e-22,8.80790920336024e-22,2.73755916959283e-23,3.27504291628557e-21,-1.42376265481644e-24,-4.68810283359338e-28,-5.94322897124229e-13,1.02089680090862e-14,-2.03949358542804e-19,-2.22560938756405e-15,-4.47626477079288,-1.86682679490756,1.14062699672856e-19,-1.92367787297009e-18,-8.1037591734815e-18,-2.47632525305654e-17,-2.74815553921199e-20,1.50972453092852e-18,1.83987076372297e-15,1.9204468562151e-18,-1.8646107723446e-16,-8.28203568219943e-17,-1.28920563295605e-07,-2.48725282714147e-12,-20.4210968082494,2.05405672080655e-19,-8.89574300258089e-19,1.54010143301224e-18,-1.31608642453858e-17,1.46651724951763e-17,-5.92496392744725e-21,1.50904486888916e-23,-2.71979917288233e-19,-8.20899089879128e-21,-2.00238903475804e-22,1.77070053244519e-18,6.97011839586158e-21,2.63846202900172e-21,-3.28426449989663e-24,7.34596399596561e-15,-1.95451070438533e-21,2.25082531658843e-21,-3.37360323643778e-16,-7.54823915709194e-25,1.20037803385142e-17,-3.16935762730012e-18,1.34852617909292e-13,2.18607721131483e-17,4.77707723539915e-19,-7.96534868311937e-13,6.34631112405281e-18,-5.44548440766277e-16,-0.0378827227112057,-7.87733845384807e-12,-6.26534220132157e-20,-9.50111179631318e-18,-1.03766113767157e-12,1.13933778350613e-14,-52.8598011456198,-27.8839134401128,-42.2153902349212,-40.572101816804,-46.5941598793391,-35.6109641641374,1.11303258952605e-18,-8.70345301205478e-20,-38.1810582736949,-6.77319452725478e-13,1.66788974452363e-13,-76.2878762811247,-0.274105743223301,-59.8897083205688,-27.0953227661236,-1.88758045687486e-15,-3.12688493161798e-13,-28.2594969194805,-22.2850969845762,-41.2235973512722,-22.3379324483861,-23.1174410125331,-19.2936806917167,-37.5043065109406,-17.9245970910942,-21.9514398155718,-29.8161909443304,-23.2300131578186,-5.19770504975261e-18,-0.00031193627668297,-8.32364136705787e-24,1.002694279618e-23,-4.6972516357034e-24,3.37600706590416e-22,1.22045188180966e-22,1.18962291668438e-22,-0.000356498601923394,-2.84291233139163e-23,-6.9958348814922e-27,-35.0013872099977,1.06993247692919e-19,-7.79019275308852e-16,4.95654937755091e-17,9.55880145975685e-16,7.10296708561307e-20,-68.6429105225168,-56.3636442145826,-52.4717924834592,-29.1339755791835,-78.3498446727824,1.70518993802367e-23,6.44166451821178e-20,-4.20607399072114e-23,-1.64166996443024e-23,6.62670163874959e-25,-7.45689825688004e-28,6.32656957691785e-25,3.44929726849111e-18,8.29457322026654e-19,2.53919771250493e-19,-1.42766567749374e-17,-8.2859959721217e-22,-4.02254216269695e-20,-6.88172935727865e-25,-4.24994832571634e-22,0.0215559492860607,4.8134333507385e-15,10.9032042601476,-12.5296493569787,0.45556434909678,21.3127248744598,32.375903271374,-10.5876815127289,22.5617715085522,31.1629479106869,23.9080167559713,26.3864316230024,23.2829622891783,2.9903985077964e-21,-9.13576206308122e-18,5.75500386224597e-19,-6.28999188340838e-18,2.67497869478614e-16,-1.25412355342148e-16,-8.30196992569929e-20,-2.08828470054832e-18,1.57216762657595e-16,1.5115132350024e-17,2.68428769278781e-21,-6.97641877104511e-15,-9.60390212610428e-19,3.16659864647317e-19,6.00633923218272e-17,1.24338237931225e-13,1.30218304513833e-12,9.78656528810342e-27,-1.44137014152229e-18,-3.99350466674434e-18,-1.03537126316277e-17,6.00269368172908e-16,-7.63462647256688e-14,-5.7244861345474e-20,9.24549609303181e-17,-4.49208432041786e-19,-2.62637781194972e-15,-1.30398629824163e-14,1.13026613863384,8.66127282495496,-1.25332959526763e-12,-22.6470086631236,-1.21229635066923e-19,1.61816597972929e-20,-2.54512098307274e-15,-42.6498676420006,-1.60201454286505e-17,2.81083399703675e-17,2.38642810698398e-21,-28.4498448149221,-1.95542710482219e-12,-44.7288881569422,-1.72026492790856,-0.000356498601923394,8.75543774678183e-12,7.39454863518696e-18,-0.000356498601923394,0.000356498601923394,0.000356498601923394,-0.000356498601923394,0,1.80634291718009e-19,-3.43473241554709e-19,-2.22375870742027e-17,5.4058341939544e-19,45.0440613289252,-47.3636026117935,-36.0427928955992,31.1505093428346,-4.36911321590641e-21,1.05354920806844e-20,9.48776344158549e-13,1.96331148580949e-19,-1.02987945084417e-17,-4.37087464098769e-18,-2.55621203860951e-15,1.18024687053609e-16,2.42704853756574e-17,9.9474796746011e-18,1.26034601032269e-21,-5.29487470778624e-13,2.65969452832411e-19,-4.18398397698003e-17,1.16065068379025e-15,1.16992033772227,2.93590300203807e-13,5.84108414413049e-13,11.4172066804049,-5.75191659587228e-15,-2.17182430948482e-14,11.0798094238089,31.7827667376769,7.90445964143258,13.198973258079,-2.71635512152531,27.2008075972043,1.02140972959374e-13,4.84279043495859,5.49982446987495,-7.01750592026202,-16.5286720572637,-10.5236685557677,-17.1811748654161,-1.32025817141335,-0.976922040576193,-16.0833656160474,1.11096096596398e-12,7.73366143849292e-18,-22.2679322142299,-1.15300037187204,-1.14873511706717e-17,-9.48963978467251e-17,1.06044009032544e-14,-9.33082351324917e-18,1.26287870593196e-09,-24.2601649070915,-7.22456346289703,-1.07942854062684e-16,-6.61280526849322,1.68824843656925e-15,0.0112135459960805,-14.6580700042994,-2.21647472812637e-13,2.62708117805406e-16,-6.98024457818989e-14,-31.8660687152615,-12.3877988258798,3.03197461892563,-3.04587494708517e-16,-1.03039624808711e-20,-26.5353824168953,-14.6491107037553,-29.0115757862532,-22.9260261876929,-1.48286774640554,-7.14163836734334,-10.1147778175891,-17.6866180123419,-16.4805947367251,-10.2402868423095,-4.34729521424227,-0.498562800175902,2.5675174490901,0.581521397415082,15.5312490301435,0.454697541277536,10.4189092592519,-3.60484199031958,9.18081351551537,12.027881536705,-5.22074999474528,9.05962539088362,24.5361970570228,8.28790843758171,-8.13485143511808,-9.25876116174978,-0.138854238249605,-1.14105463440033,1.02503027401485,5.75178618042061,8.22281253915427,5.34643772826522,4.25257217790924,5.93125607138474,1.98875946309204,-2.87098032052974,9.84781969377909,-7.11556731155715e-20,24.7840563877097,4.57030523543704,-5.56039349726918,4.68728832201273,13.6229111422653,23.8255408033504,9.48109620262029,43.7060990287212,38.5660954549458,0.0904152097112443,35.8595425917628,22.9208578313828,22.8657599264234,45.1647718903911,38.8152843977805,2.20364683739202e-12,33.2204749659275,25.6715995511218,2.661191464767e-15,6.38874624705576e-13,-2.07937167326452e-15,4.86767710898469e-17,3.77786758675051e-17,2.54746357636763e-16,-3.90601885252834e-14,-1.9801156901925e-18,-5.56965790268818,-2.25128129736293,-9.45008859561176,12.261945190751,11.3572026332868,18.9147673459427,16.9134416402482,22.2355823888523,30.9168456321,23.5765241165025,17.1672986443067,30.7078234104123,7.68571006831797,20.5890507733137,19.7047924641217,11.8378455264518,28.5983693573531,20.2579992996795,45.9868349705891,-3.25251782200679e-15,3.64488016439631e-18,5.85498417382074e-17,4.84591042409374e-26,2.19642293428881e-19,-11.6845976919997,-10.5997977486347,24.6361555166617,35.8969324410924,12.0029832345112,18.5489519779744,44.1930255440751,35.2304856390785,37.8827474753409,5.28091346916576e-14,3.54383779811641e-13,-3.81442278350435e-15,0.0626941544733633,5.33699196915061e-16,-1.34859975270465e-15,-1.13784964193115e-17,-2.09348864408779e-20,1.65049296602217e-22,7.89326667430003e-17,-8.47454730613602,-5.95422681352432,-12.9812897226232,-17.3560556150743,-17.805389354899,-38.9115940409479,-15.5145569203126,-21.0893569660629,-11.2812784006196,-27.9461471928647,-17.4426391542541,-22.5124438684258,-9.29668094544939,-12.9814681605201,-9.74744913402149,-2.04416694131739,-5.56126236877491,-1.18421190337809,-1.33334694280531,-3.73591376677473,4.16835612983384,-0.801484820536303,5.72394673210988,-0.875162668399528,6.6180891141752,38.5777575755927,32.4765432059051,59.8643279548432,43.7443370505801,41.2379040462955,32.7930688494163,34.7349378001892,59.8626060365551,43.7131834192312,59.2679623619524,80.6036928441539,3.8787463942366e-12,-1.27313974436059e-18,2.08714021188584e-23,4.63620044749783e-21,-6.33832382688328e-19,8.35132961207816e-21,-1.35866955426804e-19,-1.53896394872798e-17,3.47746025529451,15.8804728090359,33.3675002283849,37.184404252134,37.0316301943507,30.4807939396165,19.8776988730057,43.8814837861353,21.9262762359702,29.4860361716776,53.985095872702,42.6819446028204,15.8878680784062,7.23636671257287e-22,3.24611530441746e-17,1.65821574117215e-18,6.00757924280934e-27,3.99590278363742e-18,-2.00835516893241e-22,-9.49704007332954e-22,4.85029004834348e-23,-7.09630415963203e-22,7.42156089207112e-16,13.2485732037706,16.4111354269914,63.051028896847,31.8599529958596,-4.96556127184411e-23,49.3835880914006,0.7235182584456,59.6681512527028,51.3865254096632,0.00967181777219158,22.0835802419215,52.3703840781326,35.4060863059293,85.8112899571687,64.5577676610091,1.14840714674735e-12,72.488974207521,26.687415393582,6.28050008321145e-13,51.2799852201142,-2.43040005284356e-14,-1.060410916129e-20,0.00031193627668297,0.000356498601923394,-5.37282958246456e-25,8.67167856275514e-26,1.70869660553078e-24,-1.22371577143185e-25,5.06400643985515e-27,-3.4807743646841e-22,2.56296334229717e-20,12.751734762415,14.0307619380278,11.1374798303684,3.76715183104819,49.209114705475,42.619398635752,-1.86009695102563e-14,3.77987718142099e-16,6.02527344179928e-16,6.10443522726028e-21,-2.36993920456375e-18,3.78893983289325e-18,-3.18098394664936e-17,7.93986495503248e-20,2.33126585480192e-21,5.24033628366344e-16,7.78129516892716e-22,-3.82004090565837e-19,5.78369805566379e-23,-1.89671978627303e-22,8.23322073584098e-25,1.28578633138475e-23,-3.17405289751297e-21,4.54851906026986e-25,-4.06293770688865e-24,9.87164773848883e-21,20.1098143924204,11.6504387829264,8.64363145590603,4.75165417601311,-8.22253364226855e-21,51.9370117727731,26.443901543037,28.318575059051,75.4504786406745,49.4349816629563,2.66758449467443e-14,21.719689851331,43.1406482092924,8.78891356785387,2.33958188416473e-12,-1.23072074177917e-25,-5.92569114039332e-26,5.16692218308685,-6.3375500044149,4.13436596005844,-6.44818024199445,-16.1457855508296,-11.9853661278085,-19.7007208863366,-16.386341211762,-10.0242052567611,-7.95038293867597,-13.9596345398936,-1.55515378502828e-19,-2.56937567966912,-25.43939167916,-9.57249935068358,0.27812558127902,-1.35050988345858,9.15045985411642,0.689567564529883,15.1883627977755,12.8797240288735,10.9984062086652,61.9643396445486,2.17577649792127e-16,-7.39666281806822e-18,4.03737770051393e-24,1.71675532322236e-19,7.73634995164517e-16,16.7276709115741,35.6400695044406,24.9662479742632,-9.74573014591079e-15,-1.58961983311141e-14,2.76071202005241e-15,-1.61419420161176e-13,-8.19427379489666e-21,-7.90798164899029e-18,19.1193676185755,-6.45115829940599e-18,2.35976397958261e-12,-1.31615110076939e-14,3.23558298624987e-12,2.43162290605501e-16,-2.07392768046256e-14,-2.88174493984693e-16,-0.013120398054471,-4.11832971545655e-13,4.35325088221515e-19,-23.1641472103543,-1.58903522593121e-19,-3.29150502263063,-8.67909467607919,9.67829928852103e-15,-19.1910914107339,-22.6358652419445,-37.6316554164585,-46.1711844273593,-54.2789095915482,-29.9239551764127,-23.7240293108554,-21.2447269805056,-27.0889074905061,-23.5572570274744,-3.25065726209069e-13,-24.4802607791229,-8.89814378495994e-13,-12.1273265983696,1.99412681999747e-22,3.11680395006286e-14,6.29177884358683e-17,5.51504446682879e-20,-3.58236352354893e-26,7.37433262299073e-20,-7.18114331756748e-15,-8.05131416206191e-18,-9.10270972318981e-22,-1.52867517532696e-19,5.4573810488825e-20,8.27002358892283e-24,-1.56004828554216e-21,1.36593073952441e-17,1.05926714253331e-17,-1.42305923374187e-22,-4.23572147683994e-22,5.40910865694522e-23,2.7253540536082e-19,-1.26781552803311e-17,-2.49700035099876e-17,-31.1169832735324,-27.9166802138852,-30.9039507050863,0.0094254839948526,8.08094692610405e-14,3.75411754958097e-16,-1.54006985380462e-14,-6.69818822860332e-19,6.21769821386275e-25,0.000356498601923394,3.1026764428982e-16,6.47017950161554e-16,-48.123245973754,-39.9260508047293,-32.5607701019707,-0.0590040917375221,-24.657495081714,-5.34035374962785e-14,-34.9420683896646,-6.15511746441441e-12,-1.52868598163747e-16,-43.3152191799299,8.07929110495679e-15,-49.1689996230502,-59.2800352050091,3.52547371764422e-18,-7.54666950299857e-15,-3.5342095749503e-17,-3.16524277788519e-17,6.85405473970864e-15,-2.26571843424318e-12,-1.04778495135955e-18,-9.70062087274977,-2.73725882470303e-17,-1.28985735752263e-13,5.9054716573692e-20,-2.95280060146983e-23,-2.27398580948432e-16,3.17349582841795e-16,-1.2831489707157e-19,-2.16397008975085e-21,-4.16920224646817e-20,2.42061579890345e-12,20.9941914786495,5.44462256079904e-19,6.08156190352574e-17,-9.97540664478015e-15,5.24961702471327e-13,17.9804486646161,1.68686203232141e-23,6.52465413941648e-24,-4.71188785739432e-18,-3.1830777401662e-14,6.97381596788643e-17,1.69404513873554e-17,-56.9844230262933,-51.2170876041509,2.90377482224573e-14,-1.70281860564141e-16,-3.96026103314863e-20,-7.6305450536365e-18,3.09628184579644e-14,-1.03908833369944e-16,-6.17495312533799e-14,-1.94443129560363e-24,3.10690619221887e-14,3.405759032545e-18,-6.90996637871419e-23,9.10035146738932e-22,9.35583941641931e-27,0.00031193627668297,-7.99731783909719e-27,-3.47459371798764e-26,-1.20895967313209e-26,-5.74261978864169e-22,3.56604334524859e-22,-7.78282184592974e-23,-5.98503427687216e-23,-2.43971856816417e-22,0.000356498601923394,0.000340922940339626,2.51332842913748e-28,2.76057275453865e-23,-2.47608820740566e-23,2.83843093289286e-22,2.71410046142352e-19,-2.49156641009196e-22,5.16370029076844e-16,-77.0999396478339,-17.1247535568635,-29.3445281568587,5.08291258622326e-18,9.7756384964385e-18,3.76830625139636e-19,-1.04569189329752e-18,-7.36355389328402e-17,2.35495851960499e-18,1.19831729890469e-20,-8.53895464991188e-18,-2.1147460655221e-12,1.18426625321285e-17,-1.74700681146363e-17,3.93932035315328e-18,-1.69358296235156e-22,2.65506087752713e-20,-1.71606664930394e-19,-8.1084760458792e-16,1.33963196345486e-19,-1.89500070307483e-18,7.43812205653676e-18,-6.3184430410189e-17,-1.59123464452046e-14,1.95624381075037e-13,-32.7753627724705,-35.3699852248096,-55.5306055680763,-30.9776267951018,-51.0692786826388,-61.5088894852258,-34.2532556263283,-34.4570413354657,-51.7900481923451,-0.00433283057021154,-86.4422033576335,-16.316949204118,-6.68110369284045e-18,-5.56896267478825e-14,4.24982898769701e-15,-4.56875084322715e-16,-3.40641601319806e-20,-6.78749656238261e-17,-1.03702273850727e-21,-2.73043893213207e-21,6.97650977934369e-19,-5.60069293643856e-21,-2.09622158363729e-17,6.41716502618084e-15,-1.91186266273516e-21,-2.27761238533806e-16,-2.43620284194308e-20,3.23813441818588e-22,1.22362797380501e-21,8.4307064049346e-24,9.52128709149801e-16,1.10255792605722e-12,1.11590979547594e-12,0.02477405948137,-8.57645678882515e-12,-81.125987316016,1.11117428989056e-21,2.41476985543163e-20,-2.4240440322431e-21,2.80614752958069e-22,4.91455287286569e-22,-0.00031193627668297,4.25510531011439e-23,-2.4058313641551e-23,-2.23048272320958e-16,2.57844914989322e-15,4.45173011092521e-18,1.49138677858888e-24,-0.000163217454125027,-56.3283431590613,-41.4544334191481,-2.15427416112479e-20,1.41424714152703e-22,4.25971621238038e-18,3.96665531883324e-22,-0.000356498601923394,-5.09943229006441e-24,-4.28909436204501e-24,5.24070792653473e-25,-1.42185480829376e-22,8.81157262867401e-22,2.73869786420933e-23,3.27640508614903e-21,-1.4243549018573e-24,-4.69005296458014e-28,-5.94450340043186e-13,1.02130963021482e-14,-2.040342040104e-19,-2.226328227461e-15,-4.47669854227447,-1.86705806277546,1.14110089288761e-19,-1.92447123177913e-18,-8.10709589649263e-18,-2.47735199321976e-17,-2.74929714451129e-20,1.51035189727242e-18,1.84061454243581e-15,1.9212449253936e-18,-1.86538041103877e-16,-8.28496658139835e-17,-1.2893984585472e-07,-2.48771277350406e-12,-20.4217217547166,2.05491067943817e-19,-8.89943820513172e-19,1.5407416476535e-18,-1.31663370569377e-17,1.46712644204726e-17,-5.92742749957391e-21,1.5096725791432e-23,-2.72093042275517e-19,-8.21240543466532e-21,-2.00322196228256e-22,1.77143675618085e-18,6.9730175372838e-21,2.63955950483444e-21,-3.28563063505405e-24,7.34898347900291e-15,-1.95532367400042e-21,2.25176155660434e-21,-3.37500070699381e-16,-7.55137899636614e-25,1.20087284640455e-17,-3.170675169092e-18,1.34906815369898e-13,2.18698038429117e-17,4.77906363786105e-19,-7.96701949349952e-13,6.34894960829948e-18,-5.44774674382934e-16,-0.0378876491702984,-7.87861176582937e-12,-6.26794839189336e-20,-9.50505764004545e-18,-1.03793690428449e-12,1.13979017843266e-14,-52.8625489657023,-27.8847874646154,-42.216457335501,-40.5735000738244,-46.5967087468861,-35.6128877567072,1.11349492067569e-18,-8.70707325029901e-20,-38.1830882208915,-6.77500370075439e-13,1.66851524626072e-13,-76.2910655163837,-0.274143652801725,-59.8918957571051,-27.0967609780319,-1.88836063555019e-15,-3.12779435710605e-13,-28.2614530237294,-22.2866560317962,-41.2266890622094,-22.3399689919794,-23.1191061291028,-19.2958568621602,-37.5062845689711,-17.9262740366169,-21.9536834590052,-29.8184390733374,-23.2323542534519,-5.19985085917367e-18,-0.00031193627668297,-8.3271036037496e-24,1.00311135932972e-23,-4.69920553456276e-24,3.37741134109857e-22,1.22095954075684e-22,1.19011775260237e-22,-0.000356498601923394,-2.84409488908904e-23,-6.99874495236929e-27,-35.0028563883342,1.07037689313739e-19,-7.79320345090815e-16,4.95857347535072e-17,9.56275382141648e-16,7.10591799447019e-20,-68.6453104881109,-56.3661405052238,-52.4735908068345,-29.1357652974739,-78.3532302553156,1.70589921511368e-23,6.44434329587868e-20,-4.20782357523811e-23,-1.64235284453261e-23,6.62945816113094e-25,-7.46000022146367e-28,6.32920125224579e-25,3.45072783325766e-18,8.29801868011226e-19,2.54025362726644e-19,-1.42825882293895e-17,-8.2894425440112e-22,-4.02421526633733e-20,-6.88459189969518e-25,-4.25171612466863e-22,0.0215586547134877,4.81536478006775e-15,10.9039058127312,-12.530906669666,0.455641622656802,21.3151006372778,32.3775187258753,-10.5882560445825,22.5628946103889,31.1638931267236,23.9086574208769,26.3872386188469,23.2841111265756,2.99164139662616e-21,-9.13955682747458e-18,5.75739622306488e-19,-6.29259273805678e-18,2.6760805970265e-16,-1.25464353286208e-16,-8.30542249661688e-20,-2.08915234819105e-18,1.57282081974424e-16,1.51214137358312e-17,2.68540418142332e-21,-6.97926541725097e-15,-9.60789551735877e-19,3.16791597812347e-19,6.0088206228849e-17,1.2436675955337e-13,1.30244242718906e-12,9.79063602076699e-27,-1.44196939436718e-18,-3.99516438382838e-18,-1.03580094955855e-17,6.00518770050905e-16,-7.63766355705152e-14,-5.72686663308898e-20,9.24934141722993e-17,-4.49393677955588e-19,-2.62745586923262e-15,-1.30427890069267e-14,1.13033128247876,8.66173141073999,-1.25356962654749e-12,-22.64852735792,-1.21280048348979e-19,1.6188391149703e-20,-2.5461639664439e-15,-42.6522915532028,-1.60267916692236e-17,2.81200011994684e-17,2.38742072559658e-21,-28.4506488067759,-1.9559468786687e-12,-44.7307582890021,-1.72044907093952,-0.000356498601923394,8.75686043277877e-12,7.39762116196272e-18],"Archive1208_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.000356498601923394,-0.000356498601923394,0.000356498601923394,0.000356498601923394,0,8.18353567505787e-19,-3.47992734182139e-20,2.60181843116598e-18,4.36099495754356e-20,38.57377316353,-36.8171503690637,32.1879518693864,0.448165129220658,-1.54542825394559e-21,3.49177989439539e-20,1.05943286087455e-12,8.96381180760812e-20,-6.59288156838401e-18,-4.40504434396958e-18,-2.89151118413291e-15,1.30334762413326e-16,1.74522047304193e-17,3.06583713743157e-17,-5.57957156266477e-22,4.78465510181447e-13,1.09554533343419e-19,2.19447194373234e-17,-6.37610944688862e-16,7.98010167532672,2.39435537159175e-13,9.53093944581476e-13,35.5523984208695,-6.43116621858276e-15,-2.77675155487509e-14,39.1576767369021,56.9057203410253,23.801756085558,17.2868026228129,28.220917508551,48.0621209675882,2.52823365987108e-13,75.9147902370602,51.3463625551588,28.6458125305676,77.4645359620239,44.0409173493308,47.6276011926094,20.7941201939702,1.82135296652785,49.0740968302847,1.86011310149672e-12,-5.90635551941655e-18,23.5059500141445,12.9898688298639,2.37740615390331e-18,2.61316769936727e-16,-3.94256618078616e-14,-2.09628154153148e-18,2.93312362268215e-08,32.6085859759192,25.3322193221818,8.49828732759899e-17,50.0940569663935,2.57422207464002e-16,0.657706195989892,37.1967633920343,1.16833012800503e-13,-1.88247808218159e-16,9.84087062298314e-14,42.7071553988007,29.1024984229039,26.7792844174014,3.45211747532714e-16,-2.67171134074376e-21,47.9506181538157,22.0204248526327,21.7714601553776,42.1310967979405,27.0979212305354,27.2024317873945,16.0701017797856,24.228253052019,16.8337975676363,15.6468106669024,26.4398839092607,29.8723487666144,21.0859393229492,9.65181126477051,28.0171086379185,19.7764631573854,20.0269419847982,13.6169131853484,14.8902224400557,27.6828699398347,7.93023166074553,16.0573797865148,21.8171732401337,14.7521601283522,12.0207542933315,7.38028138329954,9.24942207041154,2.5004032756316,5.21730509817572,1.42046565851605,10.5891641099145,5.8481924210097,0.890033204260303,-4.63736480700755,-1.69476614798995,-3.75896414700786,-1.74764618418786,2.14364280126003e-19,39.5183764443666,45.8334870052015,0.505234293600127,8.00584150449571,9.66870679092827,36.2135792255767,24.302509948948,52.8197097328477,39.0932360146159,0.0610834209229208,38.566590468659,28.026460324821,16.1197282546935,25.751430342073,38.0992466096272,1.00647436324253e-12,34.4994381095212,10.8398286620529,-1.26215071087506e-15,5.06429827190264e-13,1.02359262673947e-14,1.44426807440725e-17,-4.4098213295199e-16,2.46442008054337e-16,-1.63882904124963e-14,-1.56434136616923e-18,-2.46559199159492,2.85578575952761,4.80230315342444,12.3099458357785,5.65427477511902,15.6559140869923,11.0813115484373,5.21482976310262,19.4223008906574,10.5707865129637,4.70274727965427,14.4821566090993,5.79150661153144,-4.02034759049865,2.32782281480204,-0.164737568256918,2.93171648221575,21.0681401178623,11.8260539679279,-5.48440448177756e-16,4.59076173521897e-18,3.80203765128074e-17,-5.50461093191585e-26,1.43148859281686e-18,-5.54174780336079,0.3392254326249,12.7432457974071,20.4534591866283,3.06482384238085,-3.96289753607215,-6.20389123584168,8.24227655255141,22.6649643719156,7.57936581527821e-15,1.0265575183416e-13,-1.81016559196258e-15,0.0177713532329168,2.86109671064897e-16,-1.3414456614294e-15,-5.62587008822132e-18,1.6753664329857e-21,8.2266005111029e-23,1.46099415753803e-16,-5.93335135318733,-0.208770308272488,-4.25096143611955,-6.53835035045706,0.920347545084619,-8.4435122865156,-0.0445436821067047,-7.12982717691389,0.988422107269458,-3.63526449907968,-11.7619308884374,-12.0479470715877,-12.59212034375,-13.69500045779,-11.3704079111591,-11.0093958295442,-13.1262273669908,-18.0624137682126,-8.97739909841975,-22.9101034854191,-6.67716062287619,-4.66679192314,-26.1549509893225,-15.2161247417225,-13.3145428863353,19.1061367861422,-9.94438300350141,-15.3648224717987,12.8867335643902,14.9856766521019,7.77669980896513,1.58700104152717,5.48572241490832,23.0889804482287,23.0513302287535,32.2470218233327,1.25895493989777e-12,-4.48922156360013e-19,2.45597309858528e-23,1.60623006248472e-21,-1.31647323839525e-18,3.17795208973733e-20,-3.09369598433746e-19,-2.01557629467072e-17,-10.6255318568669,-2.89393948444773,-7.68129308129966,-21.5984040855449,-7.04601212161774,-16.4790962734862,-11.9525409088305,-15.5319898645004,-10.7963387690546,-28.3129864863176,-0.914405095650493,-12.2886179196421,-0.397697511395733,3.82069156616425e-20,1.13518552405343e-17,4.59542308233783e-19,1.96357334384563e-27,1.82176856707068e-18,-2.75207736513968e-22,-4.03995110418101e-22,-2.98077304733397e-23,-7.00826701477735e-22,8.76335405815957e-16,-15.456870977965,-28.4274866839218,-0.336035014713793,1.63713108985483,1.22088076276263e-23,5.50207309702794,-0.0237338207814823,-2.18128830614233,-8.58193369686205,0.000429368550669377,-5.54435850651484,0.303889123935526,-12.3985991163159,11.1307154545675,-18.5249751632398,-1.62290541327553e-13,-11.0557711856251,14.1927825552494,2.09001130932259e-13,11.4715255991934,-6.5439836898137e-15,-3.8990873692008e-21,0.000356498601923394,0.00031193627668297,-4.22304568395353e-26,3.75324748614266e-26,2.78356088443619e-24,-1.44630643311108e-25,3.17512278994114e-27,-1.18803539378793e-22,1.50090481314834e-20,-15.4045197085437,-7.1186405435017,-18.4738221622024,-20.7661266623841,-13.7810587632391,-24.6156720842612,-5.32682761093274e-15,8.21825370347204e-17,1.71136054341923e-16,3.23252507360687e-21,-7.25314878269087e-19,8.63627418583498e-19,-7.07943476262072e-18,2.24462724435982e-20,1.03925971352178e-21,1.12796493925945e-16,5.59883542410429e-22,-2.41111144277463e-19,1.58356572544808e-23,-7.6846202733142e-23,4.64819947322918e-25,9.66590987378216e-24,-2.09967858162112e-21,6.63401071071926e-26,-1.61734010866398e-24,3.60426363238915e-21,-14.1966789658074,-6.41846746851674,-7.24792170731735,-30.7849623167017,1.31373948633944e-20,-29.9106216044435,-12.3173071364364,-13.9484336260059,-45.4894685293658,-47.3378220335381,-6.01862979340496e-15,-16.7007944864577,-49.1804756098692,-4.17418519840609,-4.28387679057173e-13,-6.43609639335275e-26,-1.72830470699409e-26,-26.6453595704122,-25.9961272011914,-40.8276922550527,-30.5709479485734,-24.6582163397068,-43.9027851469291,-23.058948959221,-52.0206150856354,-28.6387613085847,-50.9614976387287,-19.7554743526822,-1.74917253215472e-19,-39.1545428139986,-27.2484017421427,-44.02941726651,-0.814855484427103,-32.92825573874,-45.1930250756759,-23.8566822970378,-49.3815538002419,-23.9046046692685,-34.6154186539078,-23.3050444708261,-3.83128660904161e-17,1.30437594731231e-18,1.16869394034716e-24,1.07844022238261e-19,2.01274892110745e-15,-26.9349758973007,-42.1114563201875,-35.40335953314,1.62860582595205e-15,2.8160621440795e-15,6.67860560227755e-15,-5.30065101550619e-13,-9.24266718681033e-21,2.75078261097727e-16,-24.515940671637,1.71630188377801e-18,-5.65891290028192e-13,2.45328119315002e-15,-5.30721055895617e-13,-4.57555707044442e-17,2.61618512196072e-15,7.08447847342428e-17,-0.0689984763841436,-1.60392845974354e-12,2.50901461265598e-18,-35.7722972104175,-9.65104440999755e-19,-15.4608973109919,-36.9570936881018,1.19701776323308e-14,-32.1321292528202,-49.4719105534873,-53.0672845902819,-52.3724584952489,-62.3763120210727,-25.5482298931157,-21.6262696641095,-34.5328144109506,-57.7617290672885,-34.3839539762597,-6.37371516741221e-13,-23.1296116008107,-1.32436289241017e-12,-9.29048499619264,7.91562527796612e-23,1.34282149035984e-14,-1.13781721944445e-17,1.97643386898524e-20,5.24832851490021e-27,-1.27612048153693e-20,1.51274456106286e-15,1.45350365817236e-18,-6.17761046357229e-23,2.54041807386463e-20,-1.50000332804353e-20,-9.87713027414125e-25,4.51312828619878e-22,-5.8784780465639e-18,-1.76240969156545e-18,3.73645405090525e-23,5.96814978420203e-23,-1.36059497520844e-23,-5.27207618597779e-20,2.38890146779751e-18,3.80577310907594e-18,-26.0693498624843,-18.1972508631294,-20.1911687044165,-0.00696362182521971,-6.63735601152773e-14,-1.09464564681101e-16,5.70262849922675e-15,7.65434953878951e-19,-9.5643272237727e-25,-0.00031193627668297,-4.42946183320883e-17,-9.46999607936682e-17,-28.7994349706735,-25.4348025456897,-22.0954037102937,-0.0123788564642779,-16.6601482660519,-6.65932401225457e-14,-10.1120790413094,-3.09426631158942e-12,-7.6341510818835e-17,-11.0278999006375,4.61511635759037e-15,-19.8255092698234,-35.0827795493587,1.15940969225664e-18,-1.03979131484943e-15,1.21098571287518e-17,-2.62483296973658e-17,3.11744256352558e-15,-1.5158922106844e-12,-1.36008619621117e-19,-1.65556224323592,-1.06408764714058e-17,-3.09140439279695e-14,-6.29210780172769e-19,-1.56751159996828e-23,-1.34354561356099e-16,4.02468442695644e-16,-7.31199470904373e-20,4.84928548894622e-21,-2.06040644866598e-20,-6.5226739945323e-13,-16.0944052338894,1.84933597827522e-19,3.29835228663481e-16,1.11073130969505e-14,-9.16665784009439e-13,-20.7938385775208,-1.45403942870036e-23,-1.91086100038766e-24,7.29424640361509e-19,5.33744432436292e-15,-1.4626186993317e-17,-6.95635584401304e-19,-12.4704292864058,-27.8312061897402,5.83360206198626e-15,-1.82320481627669e-17,-1.54656936120655e-20,1.00192988003438e-18,3.40798153162879e-15,-2.27749335550462e-17,-1.27710237472448e-14,-1.90114002868706e-24,2.55580686753448e-14,1.48946345294602e-18,2.29656585623652e-23,-1.61233886170011e-23,5.01823402388024e-27,-0.000356498601923394,1.09885068385534e-27,2.31294648418e-26,4.84845603463283e-26,-1.49965888337249e-23,1.49280382970138e-21,6.984318964614e-23,-3.780151499631e-22,3.3207298643226e-22,-0.000334217439303182,-0.000356498601923394,-3.72278401096324e-28,-7.96614364048285e-24,3.32762705007532e-23,-5.00740570665679e-22,-1.72071048509044e-19,-2.47641728453741e-22,1.39033919532853e-17,-9.20802569109843,-6.92480353692094,-0.915362664575347,3.21851870568354e-19,1.35555740904452e-18,6.85299376390451e-20,-2.1666386812524e-19,-1.07983776452067e-17,7.6778549134158e-19,4.78069125899958e-21,3.51846194859981e-19,-9.80504557178662e-13,1.10148391668745e-17,-3.45223108283715e-17,2.44309793096562e-18,-9.30684371495019e-23,2.6020453024686e-20,3.37291411414134e-20,-5.88169741666462e-17,1.30527044471261e-20,-5.54752178692796e-19,-6.98463126883624e-19,2.90198770017559e-17,-9.56660479301629e-16,-2.86214444800887e-14,-8.96018409708945,-6.9950734817067,-23.9954256711029,-0.954213400734797,-4.9194807016865,-1.48619507199735,2.36357077647586,3.1103783276734,3.66734932934876,-0.000141025786518379,-1.8997395762441,-1.00778014834276,2.24141523567631e-18,-9.84121517503961e-15,-3.37469142944257e-17,-3.9498884771583e-16,-1.06691793697858e-19,-6.55211350656317e-17,-1.33105959460458e-21,3.76915756082433e-21,5.75196399878705e-19,-4.5988810897766e-21,1.11303125506398e-16,7.45505369830882e-15,-5.20357973968066e-21,-2.61781699187906e-16,-9.7133840534271e-21,1.09012700731469e-22,7.18085119163851e-22,6.10231134638979e-24,4.15362437059494e-17,-2.43655212178021e-13,6.4729391273562e-14,-2.70627455823759e-05,-7.69934736945161e-13,-26.9120920265695,-1.10855256356609e-23,1.95090798415237e-20,-2.49137618338855e-21,1.30174884549589e-22,3.31359524446953e-22,-0.000356498601923394,4.55720034761074e-23,-1.60845298218253e-23,-3.92068900492476e-16,7.4147210064833e-15,6.26858516601409e-18,6.13338688283974e-25,-3.98635961093469e-05,-11.1404274581253,-13.2271626591745,-9.34910497642397e-21,1.72692468147074e-22,5.19502356166876e-18,1.94179587715921e-22,-0.00031193627668297,-2.53540099294273e-24,-1.81435400816001e-24,3.19796154814343e-25,-1.24263810794539e-22,7.26398394231336e-22,2.15116201610488e-23,3.83869762620075e-21,-1.48765127182884e-24,-1.36750282225527e-26,-1.2697978769883e-12,-1.07216368364519e-15,-1.8946523732957e-19,5.81070226781124e-16,0.219336233873,0.362749270605163,-8.58256890214016e-21,-8.16877947707217e-19,6.73706991655734e-20,8.27917241384844e-19,1.81155132330996e-20,5.80075126568207e-20,-7.66529550213793e-16,-2.856339330477e-19,5.4776496392545e-17,-3.43796548269767e-17,1.29540004685571e-08,1.10012893174254e-12,5.14542759525182,-5.8652810640391e-20,7.12493004077626e-19,-6.97201674166951e-19,4.85623772321571e-18,-3.81189721768693e-18,-1.97928047939684e-21,-5.11536717022763e-24,9.49322747835512e-20,3.5506090069353e-22,9.2822656589412e-23,-9.33893764840795e-19,-2.66133388094711e-21,-1.11823829195917e-21,-2.68202158257399e-25,-3.75591393457265e-15,1.90827922561172e-21,-9.59380904488417e-22,1.17273222784676e-16,4.11624076025717e-25,-5.74863665478324e-19,4.6307262169118e-18,-5.92691304594818e-14,-2.12570235001711e-16,-2.4734459337854e-19,6.72351168430398e-13,-3.83985882649159e-18,2.84027193451234e-16,0.0142103670755095,2.99651503427776e-12,4.02368079623347e-20,3.73697440789868e-18,3.23326740471326e-13,-2.8083215000066e-15,18.8121567824877,15.8426115856249,29.8128074116609,19.0580610161967,21.2306930254468,27.6603845358352,-4.90691460606936e-19,4.3739412356067e-20,18.8672935851829,1.26965750241015e-13,-3.16596661672273e-14,20.0018488030078,0.269142497764774,37.9221247579316,32.5966175136735,4.08209079503607e-16,1.54666600080663e-13,19.4580626498588,21.5014077496067,10.6207739652784,13.1943220613971,15.3247295491722,9.39847307750972,19.9930991089122,7.74566280933156,5.91021052490532,8.71747595925995,3.83046274954577,8.36519715561116e-19,0.000356498601923394,2.34998273242683e-24,-1.27804174135261e-23,3.38975148745142e-24,-1.68591029035743e-22,-7.70678588538446e-23,-9.13052540078108e-23,0.00031193627668297,1.5501590008694e-23,1.39990637165911e-26,25.5852896367824,2.41912299018016e-19,2.30340550928142e-16,-7.97506028644581e-17,-3.70146342183842e-16,-1.34022616174637e-22,26.5031540627258,16.4203156803427,21.295523033625,9.31066750335873,22.2742208532846,-1.35172676400954e-24,-4.93155287137361e-20,1.72651537740442e-23,8.83986751995577e-24,-4.15287693958555e-25,2.81763142808328e-28,-4.53617664209736e-25,-2.88667368953492e-18,-7.51409415142164e-19,-1.26482493417071e-19,8.63965993109634e-18,1.6962939264261e-23,2.63363981076791e-20,-2.05505842217872e-24,3.95839806735231e-22,0.911721612243315,-3.47633218792486e-15,37.1591790485986,13.1437781066859,0.292451458095163,-2.3431118732432,-21.6650609914481,-22.5229327462853,-50.4154397318267,-33.5993113648353,-29.140521674608,-45.3359606883752,-26.3588525673496,1.09583969236357e-21,-2.48935920688822e-17,7.11924047440511e-19,-1.5360633005787e-17,9.29957321635037e-16,-3.42714847423708e-16,-2.36612426790105e-19,4.88120142617635e-18,-2.78088897879394e-16,-2.33014699711227e-17,-5.35494416199617e-21,1.12699023337099e-14,1.90745150818625e-18,-4.20314781643626e-19,-1.06273880773591e-16,-9.56428146816713e-14,-1.65563562391469e-12,-1.49513497237984e-25,1.38377774547083e-18,1.40692323178338e-18,1.31132618673985e-17,-5.14117762030777e-16,5.49028667906939e-14,1.65212379302268e-19,-1.39851745897574e-16,-3.27544713218236e-18,6.61035312290809e-15,-8.5773446393828e-13,-2.24244150785108,-39.1619447311417,-1.55025602361928e-12,-18.273326720217,1.15686545126543e-20,-1.54502001719615e-20,-1.7920016726e-16,2.09564430069152,-1.7035416116407e-17,3.2458810186504e-17,6.91855339924717e-22,-4.31652064512873,2.20360343165981e-13,39.4400127446846,2.20674782818033,0.000334217439303182,-5.17975172612231e-12,9.83527104618594e-18,-0.000356498601923394,-0.000356498601923394,0.000356498601923394,0.000356498601923394,0,1.31509603733854e-18,-5.59228416207896e-20,4.18108111292638e-18,7.00804877966696e-20,47.9220801955873,-46.0590209051743,42.5381076198826,0.514617503640961,-2.4835565633729e-21,5.61141739605775e-20,1.5862787210307e-12,1.4405172973968e-19,-1.05888624911047e-17,-7.0789849818428e-18,-4.64478693721372e-15,2.09444970123234e-16,2.80453734944685e-17,4.92629830385751e-17,-8.96655901197507e-22,7.40948519675077e-13,1.76057150951146e-19,3.47427069137336e-17,-1.02457685769876e-15,9.93947556965515,3.64296218811372e-13,1.43998863899399e-12,43.7048354627139,-1.03345389395178e-14,-4.46015367521104e-14,44.0752739804063,71.0240953746034,27.4199110734725,21.0067131470361,33.5850517494169,55.0467763395974,3.91088809503573e-13,87.8421078123385,57.8794433495237,32.5878858380101,94.7428969978294,50.5503796499131,54.374883306498,23.9124181165919,2.50526071574087,55.334683265868,2.73174041339403e-12,-9.49154700991837e-18,26.7630689693369,15.4367165188683,3.82037578339727e-18,4.1993458044892e-16,-6.32393955126185e-14,-3.36812600815492e-18,4.26353697587891e-08,36.9214112738155,29.0975214430562,1.3656128845676e-16,61.4023524901914,4.10213322698388e-16,0.95332291004569,45.0761142700713,1.83542709113806e-13,-3.02345895534775e-16,1.51958297495286e-13,50.4171120889113,33.7797042846309,31.2069161085171,5.54600252120601e-16,-4.2934938645073e-21,53.8182548342075,25.4393970131732,25.5509017966455,50.8375172493077,31.117059695986,31.8239133929869,19.0150122686596,27.9686599839275,19.7967904878883,18.4476633691976,30.2675183587092,34.8615138055312,24.9417606071289,11.6494734873654,32.3877451250436,23.5321787512895,23.6669927997201,16.25765566514,17.7292632579708,31.8035814220069,9.71188139766986,19.0578268734073,25.5522325377726,17.5754234785766,14.3747918780071,8.83014874624351,11.2684140231198,3.14156932202604,6.42442441424506,1.76487975892998,12.7773843460086,7.29913768453688,1.13396411319213,-5.73873444592557,-2.16042074080311,-4.67231810115991,-2.14902917850078,3.44473030514408e-19,44.4960735391434,51.6255966486928,0.631604433481562,9.58852921550078,11.5025362473701,40.8328247766047,27.9258590031498,61.9546736450517,44.0697861264715,0.0894040825075638,43.2905402907353,31.9548928729955,18.6621658165843,29.3237497541224,47.4609064644072,1.49018645243397e-12,40.0921021220934,13.3489594257697,-2.0214099592314e-15,7.60893991551724e-13,1.62239976334979e-14,2.32095804606075e-17,-7.0833400044434e-16,3.95974474354909e-16,-2.63231571030714e-14,-2.51380320640427e-18,-3.06460333875896,3.61998620496079,5.86190423118387,14.651012543929,6.79692062200017,18.5484629955622,13.1535168586693,6.1851389716686,22.3535620919547,12.5306925948518,5.62544109055732,16.8407736692758,7.08494592513979,-4.78261815862967,2.77842237306382,-0.198471300757035,3.46008541272675,24.2310735011409,14.1174614201576,-8.81117247876535e-16,7.37751132229431e-18,6.10995103941234e-17,-8.8461208103588e-26,2.30035812520889e-18,-6.62059348534608,0.411964711698232,15.0252564922105,23.1458407412218,3.73415998729866,-4.72852870031947,-7.24953571072396,9.41138292515648,26.8459105399301,1.1727518893288e-14,1.59619631698204e-13,-2.90861065996916e-15,0.0247936190088161,4.59788037881162e-16,-2.15541940044259e-15,-9.04081568662133e-18,2.6923625947326e-21,1.32204458601085e-22,2.34783653854669e-16,-7.20668414364937,-0.258197669605752,-5.14415841444699,-7.80710289831533,1.09978546131586,-9.68972808881077,-0.0535574998787087,-8.36329750118258,1.19638992997279,-4.24722214007057,-13.6329236079397,-14.1812839035206,-14.8784177812957,-16.216982331846,-13.6498435717685,-13.1985518195535,-15.6549023101407,-20.8349278281081,-10.9386348081697,-26.9608673893287,-8.1494004128097,-5.86392296004249,-30.692084373567,-18.0719598651538,-15.8931693954562,21.5615016888626,-11.6320247712904,-17.3133652567121,14.64570023778,16.9301690508794,9.06935250290421,1.83455692801409,6.1834276532532,25.9937585142834,26.0384397078552,42.2517439284535,1.83542423173489e-12,-7.21429962784984e-19,3.94683990848733e-23,2.58124078384721e-21,-2.11559060001104e-18,5.10709550980956e-20,-4.97164957334955e-19,-3.2390586821942e-17,-12.8680897439512,-3.43388251680411,-8.88710234509467,-24.517267378329,-7.99737725133953,-18.9294878995857,-14.0644640536068,-17.5638978035849,-12.5314919822284,-32.5897232267674,-1.03422415237626,-13.9187524007401,-0.489948645986277,6.13996272697339e-20,1.82427611637659e-17,7.38472002277386e-19,3.15553782116296e-27,2.92764166998249e-18,-4.42268497601089e-22,-6.49234834369188e-22,-4.79020796417356e-23,-1.12625188156293e-21,1.40824071433386e-15,-18.3954275746534,-32.8487546965159,-0.378427221623906,1.90313643450735,1.96199854925308e-23,6.31978496338308,-0.0309506146329086,-2.58832799843892,-10.2009560184588,0.000611360016773426,-7.36687950339737,0.381898917072738,-15.1870166376551,13.6622667353316,-22.6290781970452,-2.55423384615577e-13,-14.8261136588185,17.7846281108528,3.11766555012603e-13,13.4126457485153,-1.05107769691117e-14,-6.26597130124919e-21,0.000356498601923394,0.00031193627668297,-6.7865942458993e-26,6.03161709774735e-26,4.47328506789329e-24,-2.32427135221428e-25,5.10255933604991e-27,-1.90921416886781e-22,2.411997268131e-20,-18.1082514679289,-8.46761479524031,-21.8036116248937,-24.0433447821654,-15.5437655755336,-28.1133050871794,-8.55655988291257e-15,1.32066633527953e-16,2.75017553749893e-16,5.19477906184224e-21,-1.16559082109199e-18,1.38788519536191e-18,-1.1376645834966e-17,3.60719810193113e-20,1.67012327140963e-21,1.81264181044377e-16,8.99752694758662e-22,-3.87473779970699e-19,2.54484863682792e-23,-1.23494656177692e-22,7.46983605454827e-25,1.55334690089896e-23,-3.37425812119552e-21,1.0661104032872e-25,-2.59912617124652e-24,5.79218278189839e-21,-16.7206941034837,-7.74933251420017,-8.74976820179837,-34.7807609027478,2.11122294120195e-20,-33.6866134146544,-15.4552525089729,-19.2224533275786,-58.1743271577721,-52.8593780641054,-9.2769094843318e-15,-20.9682484973913,-63.759372586234,-5.71731667530395,-6.49944791212096e-13,-1.03430642457962e-25,-2.77745427980774e-26,-30.4265055366582,-30.0229680471596,-45.7643181053059,-34.6305567871129,-27.7877066118778,-49.8004343864396,-26.5088129815027,-57.9961940148347,-32.1133355593787,-56.978355656683,-22.823388726511,-2.81099520762355e-19,-44.3815198629388,-30.7814170764395,-55.711803336092,-1.12141823823143,-38.5117542326617,-52.533131427769,-29.6500320408419,-58.8068102995529,-27.2090314543517,-38.8044656997182,-31.5428339291578,-6.15696638860628e-17,2.09613596427928e-18,1.87813533674267e-24,1.73302111982699e-19,3.23335742551991e-15,-30.6154086802534,-47.0646452089105,-40.0326319290148,2.61640620798433e-15,4.52420437199376e-15,1.06875159745299e-14,-8.28597228957554e-13,-1.48531586228863e-20,4.36574195287721e-16,-28.10225685176,2.75805668005061e-18,-8.61044899979131e-13,3.94172116069432e-15,-7.97516484266722e-13,-7.35292389509497e-17,4.20195530577789e-15,1.13829531613247e-16,-0.101261693569112,-2.40429224816502e-12,4.03205740089221e-18,-44.3734001556839,-1.55093198678637e-18,-20.1863843815902,-43.5283135362011,1.92231096187583e-14,-36.517114699305,-55.1212070657684,-59.1934681791863,-58.4410024125094,-75.6613632532957,-28.5265269774741,-24.295919009962,-38.8133266181411,-69.0223238988242,-38.7308080671603,-9.28250705422405e-13,-27.1635809417384,-1.96642626228116e-12,-11.9999902858023,1.2720666012644e-22,2.15669874924714e-14,-1.82846083736093e-17,3.17523914485877e-20,8.43426439003581e-27,-2.05077239203064e-20,2.42246395155579e-15,2.33580000899936e-18,-9.92752695557931e-23,4.08253601805428e-20,-2.41055601421424e-20,-1.58729148809206e-24,7.25275639182385e-22,-9.44672936893176e-18,-2.83225919688809e-18,6.00461863579814e-23,9.59102800248863e-23,-2.186525980693e-23,-8.47240189894394e-20,3.83902978951717e-18,6.11585768012113e-18,-29.7224498863257,-20.6882941362694,-22.7303844647592,-0.0100737191024099,-1.05751934737105e-13,-1.75902721728026e-16,9.16271619347104e-15,1.23006034023902e-18,-1.53702420893568e-24,-0.00031193627668297,-7.11818137391268e-17,-1.52184114755058e-16,-32.1254318875628,-28.4574726957347,-25.9044771359374,-0.0176553471713113,-21.8159222243945,-1.05468815192512e-13,-11.4249603171702,-4.53782711645556e-12,-1.22672577213356e-16,-12.4322511214135,7.39179553955688e-15,-22.1723122406093,-42.0141495149517,1.86315055628863e-18,-1.63047099978655e-15,1.94557258440845e-17,-4.21776167750183e-17,5.00753485784029e-15,-2.26093557109452e-12,-2.18571611931599e-19,-2.21070738992904,-1.70956911601546e-17,-4.78272498506588e-14,-1.01115274782474e-18,-2.51905063674449e-23,-2.15912219426923e-16,6.4661589428527e-16,-1.17506093443724e-19,7.79294958227824e-21,-3.31114224408337e-20,-1.00134464973391e-12,-22.5226010421363,2.97187808256094e-19,5.29915334919781e-16,1.78429358474093e-14,-1.40183552836746e-12,-27.0846541812262,-2.33669558103756e-23,-3.07082749904889e-24,1.17219874974313e-18,8.57393173641302e-15,-2.35045345638346e-17,-1.11787748676705e-18,-14.1411222881452,-33.5697714318114,9.3406546224664e-15,-2.92996205838655e-17,-2.48537959625409e-20,1.60961189735951e-18,5.47288626762336e-15,-3.65979615979229e-17,-1.99935035615742e-14,-3.05520458109732e-24,4.1004617694635e-14,2.39355839123936e-18,3.69066546302861e-23,-2.59108533274485e-23,8.06449147086116e-27,-0.000356498601923394,1.76589888005675e-27,3.71699497903007e-26,7.79165186149664e-26,-2.41000442801841e-23,2.39897929983032e-21,1.12240438238191e-22,-6.07483620787827e-22,5.33653078143114e-22,-0.000334217439303182,-0.000356498601923394,-5.98266051090326e-28,-1.28018838489791e-23,5.34762042219977e-23,-8.04708566753258e-22,-2.76524675390712e-19,-3.97969079022545e-22,2.23384687729742e-17,-10.2669912768378,-7.96745389670534,-1.06520356597979,5.172202918706e-19,2.17838600506472e-18,1.10129458176742e-19,-3.48186060382552e-19,-1.73530902791078e-17,1.23382834003103e-18,7.68260251883101e-21,5.65398557077375e-19,-1.50504625510292e-12,1.77005205652424e-17,-5.5476183910744e-17,3.9261024940984e-18,-1.49564409760483e-22,4.18147612790711e-20,5.4203030747321e-20,-9.44954535981828e-17,2.09758063718891e-20,-8.91494665274589e-19,-1.12240713530851e-18,4.66194646108452e-17,-1.52931408685116e-15,-4.42174273598182e-14,-10.03756434475,-7.83634049927245,-26.7224874730593,-1.08575068235874,-5.50828187430083,-1.66510081628875,2.72883536913586,3.48756039285379,4.12280837792562,-0.000205609087933807,-2.24525271579629,-1.31488767542873,3.60108648829749e-18,-1.54575200878301e-14,-5.40409934123125e-17,-6.34709090695808e-16,-1.71453699757056e-19,-1.05288234240591e-16,-2.13905870120103e-21,6.0571598448025e-21,9.24351796035543e-19,-7.39055890360325e-21,1.78736253502008e-16,1.19652767471487e-14,-8.36229473250459e-21,-4.20672748505209e-16,-1.56097178498567e-20,1.7518718200971e-22,1.15398776967792e-21,9.80663876360975e-24,6.53456871386297e-17,-3.7907390782743e-13,9.92828761228317e-14,-3.98382351135125e-05,-1.13552563608957e-12,-33.5307612556382,-1.78148449305321e-23,3.13513686720558e-20,-4.00373091168061e-21,2.09195865819618e-22,5.32506620806488e-22,-0.000356498601923394,7.32358850416501e-23,-2.58484578850219e-23,-6.30066370415946e-16,1.19141469066356e-14,1.00734553579907e-17,9.85658145129304e-25,-5.58732229559501e-05,-13.4211511291603,-15.0124882122224,-1.50242955483337e-20,2.77522787430669e-22,8.34820387951736e-18,3.1205389780995e-22,-0.00031193627668297,-4.0744899155172e-24,-2.91573874600419e-24,5.13926045684184e-25,-1.99696697090583e-22,1.1673464761006e-21,3.45699515197975e-23,6.16891435041065e-21,-2.39071443796994e-24,-2.19763176253744e-26,-1.9200533215411e-12,-1.7217990587818e-15,-3.04478247651242e-19,9.08672449955984e-16,0.283280159577732,0.488008705319255,-1.37921184982208e-20,-1.31249315114731e-18,1.0824064742185e-19,1.33038640856448e-18,2.9111301491704e-20,9.3217811345967e-20,-1.23100633346813e-15,-4.59012324010711e-19,8.80119902035026e-17,-5.41239506783332e-17,1.8613589758838e-08,1.59632968401299e-12,5.82730147586949,-9.42559348593659e-20,1.14497157957341e-18,-1.12040756233337e-18,7.80414827801203e-18,-6.1256600216707e-18,-3.18073815363511e-21,-8.22058809343061e-24,1.52559424411486e-19,5.70595139011776e-22,1.49169485537269e-22,-1.50078722619551e-18,-4.27685399322909e-21,-1.79704865738811e-21,-4.31010772601318e-25,-6.03451938436816e-15,3.06667057051468e-21,-1.54175926659378e-21,1.88447778286879e-16,6.61495796978085e-25,-9.23641305213892e-19,7.44167486212325e-18,-9.51837160580267e-14,-3.41571524967837e-16,-3.97488668732002e-19,1.04667203863094e-12,-6.17072351993468e-18,4.56436630678311e-16,0.0205846388979213,4.56431117964837e-12,6.46620309623229e-20,6.00525087186598e-18,5.12524167527965e-13,-4.49859090513537e-15,25.7671586874484,18.3365208400792,36.1571503077209,24.1852400349257,27.3292948176058,36.2328381590334,-7.88536895395648e-19,7.02907745057612e-20,21.3351401360743,2.00667482972006e-13,-5.07632928048359e-14,23.8236962875693,0.377860318272426,42.3540289247579,36.8821462439391,6.55931605770647e-16,2.43273449229191e-13,22.4112392275732,24.8421276827998,12.2483338940525,15.541387006819,17.6507479529504,11.1952732767211,22.5196437928351,9.13023137295915,6.98710274377662,10.0587278714585,4.54325980202983,1.34411137676791e-18,0.000356498601923394,3.77650493363895e-24,-2.053859525204e-23,5.44745851505573e-24,-2.70931904676789e-22,-1.23850849277217e-22,-1.46730889469094e-22,0.00031193627668297,2.4911641026012e-23,2.24970462901983e-26,28.7198922887696,3.88752275201087e-19,3.65697831531379e-16,-1.28104106275553e-16,-5.94748638815532e-16,-2.15372727987241e-22,29.6091638041707,18.3498708563869,23.9143054630599,10.5561740664983,26.3753646873483,-2.17227294083893e-24,-7.9251313901436e-20,2.77457468735564e-23,1.42060008555764e-23,-6.67383739235465e-25,4.52805615038434e-28,-7.2898148486512e-25,-4.63864558639131e-18,-1.20750012110427e-18,-2.03260254799127e-19,1.38838463367592e-17,2.72600316681463e-23,4.2323468703965e-20,-3.30255393765116e-24,6.36128766544541e-22,1.23386979973106,-5.581510449108e-15,42.6091447746853,15.6172058035842,0.412603058942977,-2.79400480189376,-24.4421232748053,-25.548857943625,-56.8111527229949,-38.1202599466751,-34.669813444683,-52.9793027976265,-29.7041164875908,1.76102333693816e-21,-4.00035551636838e-17,1.14407017344288e-18,-2.46815691055629e-17,1.49411778880594e-15,-5.50717038078769e-16,-3.80242416748046e-19,7.84405263614134e-18,-4.46891453123159e-16,-3.74456628958082e-17,-8.60557778827327e-21,1.81034707051383e-14,3.06531116594533e-18,-6.75462660511398e-19,-1.70759384731158e-16,-1.4651655951491e-13,-2.43887933267279e-12,-2.40273411976277e-25,2.22375590448465e-18,2.26093092832909e-18,2.10724828571801e-17,-8.26197060394195e-16,8.8151534452103e-14,2.65500482737393e-19,-2.24747093432061e-16,-5.26273555879813e-18,1.0619864285276e-14,-1.28354496078958e-12,-2.85537439835276,-47.8495102979231,-2.25990389964991e-12,-21.1296623238857,1.85911237977294e-20,-2.4829052170506e-20,-2.87874896766988e-16,2.37541218810901,-2.73748941224408e-17,5.21595068905565e-17,1.11183535913787e-21,-5.09428732032465,3.36451227001654e-13,48.8147988300825,2.97031281830013,0.000334217439303182,-7.83941195995156e-12,1.58050786883486e-17,-0.000356498601923394,-0.000356498601923394,0.000356498601923394,0.000356498601923394,0,1.58814817440302e-18,-6.75344219211712e-20,5.04915217487149e-18,8.46301874794831e-20,50.5187673954779,-48.386112099521,44.9980250314219,0.53090233033271,-2.99928142979681e-21,6.77666937477349e-20,1.82646605989445e-12,1.73965187702577e-19,-1.27792727018461e-17,-8.54887779730712e-18,-5.60659541633092e-15,2.52927672468511e-16,3.38679723939487e-17,5.94846605119682e-17,-1.08285109221001e-21,8.65992999618791e-13,2.1261524531278e-19,4.15836052252737e-17,-1.23719359800144e-15,10.5772888661641,4.24535228719402e-13,1.66507772537538e-12,46.1414186899846,-1.24796126960746e-14,-5.38309546537827e-14,45.1915895286659,75.3274204021098,28.317955587067,22.1300439487715,35.1089755735687,56.7495785767183,4.57398922789725e-13,91.0618015776437,59.3107159323059,33.521393397542,99.2807765809585,51.9842791460958,55.8885441116977,24.6151710075487,2.7729283266847,56.7215460829494,3.11515155957657e-12,-1.14623070280255e-17,27.5116779777704,16.1367271302812,4.61347064399714e-18,5.07114978791706e-16,-7.62278481628034e-14,-4.06661253745536e-18,4.83413238326345e-08,37.8836829821803,30.0312769128293,1.64906779811933e-16,64.7020172169808,4.92917900876607e-16,1.07610778875076,47.1670235980386,2.1867860431181e-13,-3.64885808678943e-16,1.7920439815184e-13,52.2334097177745,34.9772578156731,32.3920248046359,6.69508262370969e-16,-5.18501199628041e-21,55.072351895129,26.152673359291,26.2750274996879,53.0865228346985,32.1032581807528,33.0590899192031,19.8580218708622,28.8850795511765,20.5724764992145,19.2011532564378,31.1994539288273,36.1983545800652,26.0627072275294,12.336832790068,33.5227008191499,24.7073004388029,24.7081556832289,17.070585184674,18.6195510027112,32.8207464556938,10.350680996736,19.9602344288609,26.5956108794262,18.4626739248366,15.1203739687781,9.28248674132927,11.98222474789,3.39715682834289,6.87821102837731,1.89940767376488,13.5370584314331,7.87660722566728,1.23452607317733,-6.15149076269103,-2.3476588470561,-4.99483527117883,-2.29722257064209,4.15980482942799e-19,45.6252604673518,52.9447742855122,0.679829059350247,10.1103824640147,12.0760043594966,41.8854544079253,28.7910781546446,64.3375520179925,45.2023336424502,0.10135043756683,44.3333749666871,32.8877051248846,19.2446089535534,30.1810851025099,50.1354620158267,1.70723228180909e-12,41.396738616147,14.1028027566691,-2.43540214444318e-15,8.79581926946012e-13,1.94418659058154e-14,2.80286812757065e-17,-8.54959497441152e-16,4.78107652459264e-16,-3.17696966764517e-14,-3.03560043301857e-18,-3.27607576124096,3.92167800229947,6.23143553614366,15.3989356516167,7.18769260504785,19.4144179475655,13.762431867212,6.47409662181428,23.0952650550493,13.1160577962797,5.92859570498274,17.4730854906436,7.56359891919142,-5.00700634619862,2.91925988744011,-0.209836097064666,3.60947013676,25.0283749688677,14.706700208191,-1.06372588008127e-15,8.90949689413952e-18,7.37864586148303e-17,-1.06830924152418e-25,2.77790801392584e-18,-6.9227664195742,0.435406045458927,15.6719469466731,23.7636532554839,3.97599121986731,-4.96523145425546,-7.5245477556503,9.69241160617893,27.9332514856901,1.37722717033887e-14,1.87274165790632e-13,-3.51202845828923e-15,0.0276227056185794,5.55264277228463e-16,-2.60251280488717e-15,-1.09179775928464e-17,3.25143584359575e-21,1.59657667067339e-22,2.83532870925362e-16,-7.61136709773599,-0.275787763138598,-5.42224602135904,-8.1500150104141,1.15272928254999,-9.96427989917443,-0.0561607045371166,-8.66309941100954,1.26473532592396,-4.39533869618167,-14.0682359753017,-14.7156709744194,-15.4578083792347,-16.8676212722762,-14.319437624831,-13.8469812719466,-16.3650267666917,-21.4716977631764,-11.5888896096377,-27.9876992702997,-8.66146310729771,-6.32428992185554,-31.8493464528247,-18.8464579729872,-16.6503088392953,22.1150041753245,-12.0789282190843,-17.7578899783249,15.0566521594254,17.387685854863,9.42087039596913,1.89879587586445,6.34145853082739,26.667989831404,26.7376189813471,45.3678212666279,2.08397177880003e-12,-8.71234304351182e-19,4.76643188907495e-23,3.11721475472895e-21,-2.55486838126046e-18,6.16763790598042e-20,-6.00400497023717e-19,-3.91160745733338e-17,-13.5949203286448,-3.58286464760267,-9.18822348334927,-25.1761599810145,-8.21507507225385,-19.5277255441616,-14.6293371313239,-18.0226690762412,-12.9707402599213,-33.6180104374228,-1.06210036417139,-14.2851581063014,-0.518210631153585,7.41493794757267e-20,2.20309103769464e-17,8.91777329721545e-19,3.81081203792934e-27,3.53558086159004e-18,-5.34108331989214e-22,-7.84053143888573e-22,-5.78492574686885e-23,-1.36012326639865e-21,1.70058052409967e-15,-19.2724069725698,-33.9232421749225,-0.387901813195506,1.9621417887622,2.36942048697902e-23,6.51576586186093,-0.0336722214219106,-2.69538407670211,-10.5859305579525,0.000688211528563137,-7.76698544841549,0.404131667008835,-15.7048332507079,14.3638744889218,-23.3590479388619,-3.01025281659571e-13,-15.7735758003651,18.8643520167937,3.59239738687328e-13,13.8867278609476,-1.26848462052835e-14,-7.56714244689864e-21,0.000356498601923394,0.00031193627668297,-8.19588584447454e-26,7.28413735312711e-26,5.40219646381963e-24,-2.80692720476314e-25,6.16216250958437e-27,-2.30567358979195e-22,2.91285082347887e-20,-18.8134233063369,-8.87721493693204,-22.6778754865654,-24.8308057560442,-15.9395614544123,-28.8454410137823,-1.03276646440879e-14,1.5948649010058e-16,3.32120435208799e-16,6.2735061116229e-21,-1.40760985943403e-18,1.67609746805981e-18,-1.37387093326488e-17,4.35626137197918e-20,2.01693025512768e-21,2.18899247424017e-16,1.08659239598319e-21,-4.67934832486617e-19,3.07330614909139e-23,-1.49139234416983e-22,9.02101180141444e-25,1.87591073468317e-23,-4.07494638749102e-21,1.28749677119704e-25,-3.13885541619331e-24,6.99497329298262e-21,-17.4206830373189,-8.20006307226294,-9.25477493169583,-35.6317586794972,2.54962831808728e-20,-34.5011760652891,-16.003834218222,-20.3940753004881,-60.7694938914945,-53.980403680805,-1.08937185090202e-14,-21.6868818474353,-66.9432267974615,-6.08715426663322,-7.54957231904322e-13,-1.24908983145345e-25,-3.35421821255166e-26,-31.2765739779887,-30.9715150409792,-46.800050018214,-35.4851698117536,-28.4226577174568,-51.0393403506123,-27.2828283739118,-59.1880468114197,-32.7993045268101,-58.1953574374177,-23.5287061207382,-3.39473484547713e-19,-45.6115796129859,-31.511796415745,-58.7497237110495,-1.24415138974899,-39.7174348524825,-54.5491782223149,-31.3664578615439,-61.4780132919698,-27.9683459902009,-39.7126564264159,-33.3108338010545,-7.43543248097347e-17,2.53134965588207e-18,2.26814544777141e-24,2.09279355287905e-19,3.90315668903723e-15,-31.4400940457819,-48.0852802524943,-41.0413514407335,3.15848715416113e-15,5.46169430193174e-15,1.28731421677671e-14,-9.76660161989804e-13,-1.79373320091085e-20,5.23143432121515e-16,-28.9344137493298,3.33064384700125e-18,-9.98818247769501e-13,4.75901176002975e-15,-9.19851132592709e-13,-8.8795330488102e-17,5.07094630926181e-15,1.37436325170485e-16,-0.115549259044664,-2.77703382472877e-12,4.86931587907263e-18,-46.7608004792625,-1.87295937980145e-18,-21.4868312812595,-44.9112822121442,2.31956617367862e-14,-37.4903838666861,-56.2153144847767,-60.3678561172277,-59.684957919506,-79.0647523480308,-29.1062754039724,-24.8335270888716,-39.6963377494004,-72.0434849646023,-39.6151965808861,-1.05122041985402e-12,-28.0232648958221,-2.25125901219295e-12,-12.7854600638303,1.53621640725363e-22,2.60274602482447e-14,-2.20808408950068e-17,3.83319130990749e-20,1.01857099980987e-26,-2.47663231454052e-20,2.91783870509561e-15,2.82079814986233e-18,-1.19888803281536e-22,4.93029393010138e-20,-2.91112055172357e-20,-1.91690506030194e-24,8.75883961529704e-22,-1.14081051499966e-17,-3.4204025018746e-18,7.25152233826478e-23,1.15826671259419e-22,-2.64057429775362e-23,-1.02317364428433e-19,4.63620154074791e-18,7.38563058561835e-18,-30.5152654766569,-21.216913617866,-23.2923250415698,-0.011373956793426,-1.26158813372494e-13,-2.12413604965832e-16,1.10632626131721e-14,1.48546145417671e-18,-1.85620044309679e-24,-0.00031193627668297,-8.59610385186956e-17,-1.83782215322253e-16,-32.7916791004071,-29.0528365644249,-26.6908764355938,-0.019851316093715,-23.280712845695,-1.25189430691487e-13,-11.6953293003443,-5.17945279424153e-12,-1.48130272997414e-16,-12.7362510473568,8.90624891447007e-15,-22.6593655896894,-43.7228783750918,2.24995761366437e-18,-1.92461665035427e-15,2.34884387200787e-17,-5.09296367000465e-17,6.04406327509469e-15,-2.59187899687238e-12,-2.63960866065239e-19,-2.37615698578519,-2.06391620378777e-17,-5.57878963876278e-14,-1.22111215754397e-18,-3.04215218746919e-23,-2.60747363250213e-16,7.80646379471317e-16,-1.41906656631164e-19,9.41117935115389e-21,-3.99871740893323e-20,-1.16371524172877e-12,-24.0567538656695,3.58890603784979e-19,6.39744463360982e-16,2.15381394624723e-14,-1.62210762955631e-12,-28.6614824068611,-2.82192899557574e-23,-3.70851131110115e-24,1.41559568046008e-18,1.03489515410866e-14,-2.83849731104568e-17,-1.3499672850415e-18,-14.4931003970081,-35.0786393888628,1.12405300862998e-14,-3.53840336073934e-17,-3.00146755633911e-20,1.94316435595903e-18,6.60396961124279e-15,-4.41945006095695e-17,-2.36200548377512e-14,-3.68964351061696e-24,4.94241431784014e-14,2.89050802432619e-18,4.45705990951921e-23,-3.12914178326329e-23,9.73914834478962e-27,-0.000356498601923394,2.1326060078189e-27,4.48886149593232e-26,9.40965160494152e-26,-2.91045756067098e-23,2.89713125077692e-21,1.35547854689471e-22,-7.33631536063697e-22,6.44469677493088e-22,-0.000334217439303182,-0.000356498601923394,-7.22501395376758e-28,-1.54602894196162e-23,6.45809510068039e-23,-9.71812533677295e-22,-3.3394748759193e-19,-4.80610088266701e-22,2.69703413369226e-17,-10.4791537806896,-8.20181498027991,-1.10139389196032,6.24615131212433e-19,2.63068631013271e-18,1.32997778020917e-19,-4.20488462141067e-19,-2.09561888497629e-17,1.48999981331564e-18,9.27774842829379e-21,6.82762995294264e-19,-1.73435930684874e-12,2.13751388150493e-17,-6.69926947447916e-17,4.74132614022087e-18,-1.80622597434877e-22,5.0496456589409e-20,6.54574037930962e-20,-1.14081138248254e-16,2.53310779738074e-20,-1.07660341305809e-18,-1.35541641302853e-18,5.62768442733645e-17,-1.83940296880777e-15,-5.19925624866174e-14,-10.2485201729321,-8.00310199285262,-27.2428633539136,-1.11435398984366,-5.63335892380593,-1.70116859078939,2.82653668357987,3.56996583235425,4.22085246870893,-0.000233176817656633,-2.33581928042243,-1.40162444312261,4.34752660711372e-18,-1.83190414958106e-14,-6.50872723704684e-17,-7.66434754655242e-16,-2.07052122839268e-19,-1.27142313586469e-16,-2.58324718094882e-21,7.31495556033617e-21,1.11628712367361e-18,-8.92524913820417e-21,2.15666747938198e-16,1.44282912678249e-14,-1.00987226907583e-20,-5.07999165075212e-16,-1.88511314505315e-20,2.11565808573041e-22,1.39362030086777e-21,1.18430612207365e-23,7.79233052314025e-17,-4.44457970499063e-13,1.15585679498078e-13,-4.53897452695739e-05,-1.29871483064376e-12,-35.294592269313,-2.15142345357349e-23,3.78611108149106e-20,-4.83513437703988e-21,2.52636988930123e-22,6.43085236336447e-22,-0.000356498601923394,8.84438555788438e-23,-3.12161106437053e-23,-7.60900446136991e-16,1.43859097160742e-14,1.21647281207095e-17,1.1903377639858e-24,-6.24385649653386e-05,-13.9664867730717,-15.3951585824271,-1.81441382165009e-20,3.35151989434735e-22,1.00812273451858e-17,3.7685437176826e-22,-0.00031193627668297,-4.92059511597609e-24,-3.52121852331461e-24,6.20648340014887e-25,-2.41165442461669e-22,1.40975143280812e-21,4.17486412165979e-23,7.44991762920685e-21,-2.88716815399875e-24,-2.65399063958906e-26,-2.22859406239047e-12,-2.07768937171255e-15,-3.6770642894662e-19,1.07570095144805e-15,0.30640621298039,0.535018088711911,-1.66556245442174e-20,-1.58467711801957e-18,1.30680860795462e-19,1.60650511930058e-18,3.51551393351461e-20,1.12571975832686e-19,-1.48544909555971e-15,-5.54313748785837e-19,1.06266246094228e-16,-6.44585888781963e-17,2.0998633705426e-08,1.80188561775493e-12,5.97139897219874,-1.13827134288929e-19,1.3826886540119e-18,-1.35304038316027e-18,9.42471703628716e-18,-7.39742677166785e-18,-3.84119125820349e-21,-9.92765962453589e-24,1.84239214177286e-19,6.89082684510028e-22,1.80145730087749e-22,-1.81241749861821e-18,-5.16496564651657e-21,-2.17021781840899e-21,-5.20513472635943e-25,-7.2855941272008e-15,3.70348275143063e-21,-1.86191602606628e-21,2.27557559597443e-16,7.98861114242736e-25,-1.1151693489692e-18,8.98687956717472e-18,-1.14854091581091e-13,-4.12441576317171e-16,-4.80025946190277e-19,1.22150658186576e-12,-7.45202488928705e-18,5.51206858435474e-16,0.0231790489630329,5.2404711848394e-12,7.80896093919085e-20,7.25198998352777e-18,6.08807243016034e-13,-5.42153830183333e-15,27.4524797361673,18.8376866936728,37.2414314507,25.3171500220371,29.0794084423893,38.5505282761274,-9.52250222443858e-19,8.48871223975512e-20,21.8796761183571,2.37683791362404e-13,-6.11453895485731e-14,24.8183473677799,0.421111674795931,43.2355286720091,37.8284045424395,7.92023678836313e-16,2.87681463019146e-13,23.1137432441006,25.6512180271365,12.6374538887331,16.1744773174113,18.2029485249323,11.7392136110792,23.0563837291485,9.49787707534532,7.28415989338498,10.3818931885011,4.73533624244043,1.62292058671554e-18,0.000356498601923394,4.56072071890424e-24,-2.48035821256024e-23,6.57866748857721e-24,-3.27192853788557e-22,-1.49569380509295e-22,-1.77200648423599e-22,0.00031193627668297,3.00847466511976e-23,2.71687608173472e-26,29.385330538275,4.69464968557733e-19,4.38721700394431e-16,-1.54624554780552e-16,-7.18130605515586e-16,-2.60087638635019e-22,30.2542895252048,18.7392526075076,24.4901259903594,10.8317140803387,27.4642357443483,-2.62335996382313e-24,-9.57076978895464e-20,3.35073713519496e-23,1.71559926230873e-23,-8.05972040377967e-25,5.46835811077303e-28,-8.80361096539412e-25,-5.60142698208937e-18,-1.45818754963636e-18,-2.45466543150124e-19,1.67663958415263e-17,3.29207432463721e-23,5.11121481506227e-20,-3.98835376511376e-24,7.68225430861789e-22,1.35614872349617,-6.73356091669599e-15,43.9330061529662,16.3364676310751,0.460898770530476,-2.93679641970899,-25.0495526467008,-26.1838860672374,-58.164715007617,-39.0602533674169,-35.7048713921942,-54.6627077703094,-30.4309316799639,2.12667012813647e-21,-4.83087430952701e-17,1.38162111952451e-18,-2.98019786249179e-17,1.80389123674007e-15,-6.6502075779657e-16,-4.59199461510669e-19,9.47263032744591e-18,-5.39678919207746e-16,-4.52205577330664e-17,-1.0392574535178e-20,2.18516934643429e-14,3.70180226448554e-18,-8.15729712748896e-19,-2.06181274830148e-16,-1.71257428204205e-13,-2.78048119702026e-12,-2.90167716536999e-25,2.68550007319532e-18,2.73036670387129e-18,2.54468851834234e-17,-9.97742302689177e-16,1.06339641020032e-13,3.2063117231248e-19,-2.71417166268993e-16,-6.3541080038532e-18,1.28206522696077e-14,-1.47427687213189e-12,-3.03769405301566,-50.4717835469068,-2.56912856568427e-12,-21.7830726158688,2.24515437907029e-20,-2.99850237710631e-20,-3.47507993019101e-16,2.43623141686864,-3.30571456780934e-17,6.29865822894176e-17,1.34271448882293e-21,-5.25497304052551,3.91800251885332e-13,51.2447638899091,3.24811220207885,0.000334217439303182,-8.98720678307796e-12,1.90864322467517e-17,-0.000356498601923394,-0.000356498601923394,0.000356498601923394,0.000356498601923394,0,1.71758301080476e-18,-7.3038806311824e-20,5.46063724090399e-18,9.15267021943967e-20,51.3263325703479,-49.1031818450623,45.8086196564235,0.537143638288721,-3.24378236868515e-21,7.32910941073384e-20,1.92401719022422e-12,1.88147079004022e-19,-1.38135271147782e-17,-9.2456934212987e-18,-6.06123345196622e-15,2.73537841979645e-16,3.66278464827588e-17,6.43268618953416e-17,-1.17112448697174e-21,9.18891130800384e-13,2.29946395673974e-19,4.47642138839207e-17,-1.33790386659022e-15,10.78913912474,4.50460046791413e-13,1.75711405110426e-12,46.9055205894579,-1.34959576352619e-14,-5.81886749736323e-14,45.5493837720379,76.7132998702518,28.5742798155851,22.4817714627835,35.5592856730677,57.2285592550503,4.85898221205865e-13,92.022530538869,59.8003135965681,33.7877426587987,100.642574904324,52.391615409,56.3174138548085,24.8103371697295,2.87168720827784,57.1949353659471,3.26624457524043e-12,-1.2396527971233e-17,27.7958627579438,16.4220244112397,4.98938779343111e-18,5.48430799914555e-16,-8.23255014354752e-14,-4.39729834776768e-18,5.05684680963444e-08,38.2261936749516,30.3978934650007,1.78338841086124e-16,65.7254203429386,5.31580437888325e-16,1.12405075179966,47.7830350117364,2.34809035445731e-13,-3.94411277724478e-16,1.91440322894802e-13,52.7410385809615,35.4495216318771,32.8754986019204,7.23839059870571e-16,-5.6076488089197e-21,55.4872169092265,26.3476157075487,26.4785389224443,53.7318472755471,32.487117565352,33.5497034352389,20.2041705500145,29.2381510118265,20.8800895381786,19.5040616959907,31.5602851133666,36.7371167036426,26.5321462622335,12.6345573057958,33.9737076164329,25.2080098024316,25.1419536342101,17.4086379836689,19.0004917695425,33.208788947177,10.6241407855704,20.3423162166875,27.0284446080829,18.8428824048402,15.4315865902963,9.47115355639392,12.2877648568363,3.509207256764,7.07784759377601,1.95909979009362,13.8695352748193,8.13371855003052,1.27846367099364,-6.330714165117,-2.42809263058507,-5.12639998941562,-2.36136765819565,4.49869196732413e-19,45.9913502506638,53.3667205391288,0.700652481931627,10.335950575313,12.3215681111336,42.2265597277457,29.0357980065156,65.0524035736404,45.5754250937407,0.106124692648571,44.6628470797697,33.243686017856,19.40730160116,30.4246945442542,50.9683354336257,1.7938549618029e-12,41.7607717058883,14.3422719482064,-2.62974550293962e-15,9.2853427940722e-13,2.09387269965633e-14,3.03130732423202e-17,-9.2424356411468e-16,5.16998290111841e-16,-3.43412433268523e-14,-3.28286952646891e-18,-3.36215610439607,4.05028528643319,6.38950198747358,15.7212197165739,7.35873550048589,19.7809461257267,14.0178716592753,6.59552796752441,23.3879495495916,13.3637788184539,6.05964883444937,17.7309504801227,7.77547857770775,-5.09952630842013,2.97874578273143,-0.214695835150738,3.67078408452248,25.3452963975595,14.8776034910894,-1.15010298328022e-15,9.63580312071753e-18,7.9800898824582e-17,-1.15539956887469e-25,3.00423834540367e-18,-7.04092768017405,0.444942466895054,15.940690890557,23.9812865828207,4.08205344171699,-5.06388064515362,-7.63306585629263,9.7995629257392,28.2465406111142,1.46611652530767e-14,1.99140579178842e-13,-3.79779097867671e-15,0.028640739999301,6.00527514489107e-16,-2.81420261796312e-15,-1.1807808619801e-17,3.51648288765908e-21,1.72673110258459e-22,3.06641602980027e-16,-7.77301243703279,-0.283165509298663,-5.53278624362231,-8.28036262632995,1.17471131216021,-10.0659292637621,-0.0571867848882386,-8.7762206591887,1.2935060939112,-4.45163233499616,-14.2324497153597,-14.9216780479661,-15.6795669889089,-17.1183168693362,-14.5837989287318,-14.1095280860969,-16.6449227951156,-21.7116115752935,-11.8577948059354,-28.3845522971853,-8.88129973351126,-6.52286167501601,-32.313092932745,-19.1563339400574,-16.9649824785833,22.3025447294543,-12.2569415080823,-17.8893415266846,15.2074972001209,17.5235531386051,9.56571899008323,1.92461135306248,6.39375150097049,26.8666026555618,26.9419900223769,46.3995022329074,2.18000606818757e-12,-9.42252829806478e-19,5.15499756076721e-23,3.37129847483984e-21,-2.76310832416208e-18,6.67044535218217e-20,-6.4934175362136e-19,-4.23042333845796e-17,-13.8999700791018,-3.64198468735005,-9.30477276166287,-25.4160159442585,-8.29306336429661,-19.7606562755948,-14.8572759859135,-18.182162000531,-13.1446689164957,-34.0163073672205,-1.07013405082651,-14.4154899550515,-0.527313031516004,8.0193843298441e-20,2.38268104080148e-17,9.64434452332858e-19,4.12147584538366e-27,3.82379957268306e-18,-5.77648961834356e-22,-8.47969869964732e-22,-6.25651497900075e-23,-1.47099896936118e-21,1.83912899005746e-15,-19.6381615424468,-34.3516672371771,-0.391017565719239,1.97844529945253,2.56257684980493e-23,6.56975238677229,-0.0346223601944645,-2.72578582492621,-10.6954502304022,0.00071735358819631,-7.89387983137011,0.411093841853542,-15.8473055509823,14.5758128426288,-23.5572394716448,-3.20395196984471e-13,-16.0866050355816,19.2110897691135,3.78708898315441e-13,14.0185880756536,-1.37107205406256e-14,-8.18402091735315e-21,0.000356498601923394,0.00031193627668297,-8.86402658879525e-26,7.87795510575365e-26,5.84258950989084e-24,-3.03575342569198e-25,6.66452157317496e-27,-2.49363158976677e-22,3.15029570558855e-20,-19.0976194972763,-9.04831863991844,-23.0323238351367,-25.1426174351779,-16.054996446202,-29.0509656045544,-1.11641682896381e-14,1.72483888522238e-16,3.59189131638311e-16,6.78492340992093e-21,-1.52233631137676e-18,1.81274243102624e-18,-1.4858346648514e-17,4.71139100960825e-20,2.18134678044386e-21,2.3673876081971e-16,1.17517209931236e-21,-5.06080728334977e-19,3.32384603446518e-23,-1.61297218528778e-22,9.75642052327955e-25,2.02883681716867e-23,-4.4071395983102e-21,1.39245535130434e-25,-3.39473925453388e-24,7.56521238176541e-21,-17.7062710817509,-8.39196863307553,-9.47033194637692,-35.9393165840165,2.75747163297395e-20,-34.7348056113152,-16.1567319050807,-20.7734821632802,-61.5195128217906,-54.3246328967737,-1.16049256607337e-14,-21.8826938620957,-67.9282061975049,-6.20797142259225,-7.97692303398193e-13,-1.35091835352253e-25,-3.62766108547134e-26,-31.6002616762863,-31.3343754482765,-47.1405634277596,-35.7963262161608,-28.6522237327398,-51.4959236831327,-27.5722720923167,-59.5542217593524,-33.0412473557194,-58.5823776290509,-23.7934859339814,-3.67149213243201e-19,-45.984106582165,-31.777614439788,-59.7276213498796,-1.28936510448602,-40.0597784223344,-55.1515425505274,-31.9253999391439,-62.2993232485008,-28.1868082716578,-40.0000559339951,-33.8785046792259,-8.04150673619501e-17,2.73764653755877e-18,2.45304805558851e-24,2.26330521273157e-19,4.2198948926202e-15,-31.756301422952,-48.4097564225305,-41.419328907489,3.414801154984e-15,5.90498729082417e-15,1.39005452956439e-14,-1.04036306279143e-12,-1.93994296978792e-20,5.63468251538619e-16,-29.2567406548035,3.60202997477804e-18,-1.05449323453833e-12,5.14574870019523e-15,-9.69101516505478e-13,-9.60311896788738e-17,5.48088998621292e-15,1.48611544017438e-16,-0.121147179097802,-2.92950962323779e-12,5.26624117104291e-18,-47.5287991058128,-2.02561355173238e-18,-21.9327757427093,-45.3109919285228,2.50687660121294e-14,-37.7603478905288,-56.571633737539,-60.7610292245755,-60.0638931868886,-80.0994182900038,-29.3033081692183,-25.024029633958,-39.9467297902969,-72.9493839606731,-39.8605139282283,-1.10043613480339e-12,-28.2616585470145,-2.36470659386213e-12,-13.0452942998101,1.66144667746773e-22,2.81325841490954e-14,-2.38802706137387e-17,4.14436188438696e-20,1.10160655960737e-26,-2.67853238488951e-20,3.15031221823844e-15,3.05070807958458e-18,-1.29660679628674e-22,5.33220698714776e-20,-3.14843353260734e-20,-2.0731738317593e-24,9.47286554238186e-22,-1.23378191309415e-17,-3.69924108655463e-18,7.84267401930367e-23,1.25268904285585e-22,-2.85583661328145e-23,-1.10658179548085e-19,5.01412006876523e-18,7.98749551655689e-18,-30.8087598870256,-21.4093706236172,-23.4499624287318,-0.0118598392371038,-1.35137093787372e-13,-2.29713891507766e-16,1.19632162592457e-14,1.6065301497734e-18,-2.00752113156759e-24,-0.00031193627668297,-9.2966465144045e-17,-1.98760191565792e-16,-33.0010757739826,-29.2553578540053,-26.9142648820957,-0.0206753095168818,-23.7776518718473,-1.33715063861923e-13,-11.7945415779906,-5.42555096897032e-12,-1.60191109271557e-16,-12.8205970600102,9.61754497818497e-15,-22.803644239185,-44.2303044815639,2.43329235906331e-18,-2.04998458469612e-15,2.53965113340829e-17,-5.50754722647754e-17,6.53370533904949e-15,-2.72253425869229e-12,-2.85480458469487e-19,-2.4312012923174,-2.23156527071769e-17,-5.91851007399307e-14,-1.32064751192158e-18,-3.29015306835605e-23,-2.8200326899786e-16,8.44056549769129e-16,-1.53474650575292e-19,1.01783597047549e-20,-4.32469011244032e-20,-1.23106395462405e-12,-24.5741981611376,3.88138062821295e-19,6.91697157172018e-16,2.3284591829439e-14,-1.71216848339068e-12,-29.1841308512338,-3.05197667751802e-23,-4.01083568976893e-24,1.53097930953714e-18,1.1187375157769e-14,-3.06985031315185e-17,-1.45997699251677e-18,-14.6232756925729,-35.5292934322136,1.21243837598621e-14,-3.82687671553646e-17,-3.2461325664268e-20,2.10095991425768e-18,7.13738715222337e-15,-4.77941433891886e-17,-2.51796203575154e-14,-3.99042944939948e-24,5.33663769587847e-14,3.12606154841184e-18,4.8204045561506e-23,-3.38423181857591e-23,1.05330977743221e-26,-0.000356498601923394,2.30646186555251e-27,4.85480167600512e-26,1.01767402649635e-25,-3.14771953636096e-23,3.13329631025693e-21,1.46597737611265e-22,-7.93437515644791e-22,6.97007166997898e-22,-0.000334217439303182,-0.000356498601923394,-7.81401146340456e-28,-1.67206278906465e-23,6.98456679374099e-23,-1.05103597850227e-21,-3.61171680459283e-19,-5.19789768780851e-22,2.91626525261048e-17,-10.544592884117,-8.2897210332846,-1.11556191140998,6.75525792263567e-19,2.84509149484235e-18,1.43839088749926e-19,-4.54766191707911e-19,-2.266421253255e-17,1.61142843016485e-18,1.0033892418195e-20,7.38380368508865e-19,-1.82765152654708e-12,2.31167101936852e-17,-7.24508293996249e-17,5.12778800905472e-18,-1.95347166635573e-22,5.46116596720832e-20,7.07923977981756e-20,-1.23347272364593e-16,2.7395631312096e-20,-1.164354056924e-18,-1.46585068057315e-18,6.08431361554769e-17,-1.98370010567011e-15,-5.54135400471674e-14,-10.3239780216493,-8.06089539294586,-27.4149346002202,-1.12505774938946,-5.67006945140627,-1.71355037314535,2.8554425414654,3.59510956178565,4.25490984256948,-0.000243796844995175,-2.36289463079971,-1.43098524845419,4.7007103401247e-18,-1.95655802993847e-14,-7.027491985281e-17,-8.28846196598282e-16,-2.23926586345414e-19,-1.37498099670279e-16,-2.79383396050923e-21,7.91126135304958e-21,1.20727623714829e-18,-9.65283337810128e-21,2.33079535078714e-16,1.55846976120475e-14,-1.09219236023764e-20,-5.49384787319209e-16,-2.03878430429923e-20,2.28812609285165e-22,1.50722829172548e-21,1.28085208435236e-23,8.3725446022411e-17,-4.72172965408303e-13,1.22461060544589e-13,-4.75511117680281e-05,-1.36327054994461e-12,-35.8487799840819,-2.32681019306918e-23,4.0947041346376e-20,-5.22929929169977e-21,2.7323224891291e-22,6.95509921856796e-22,-0.000356498601923394,9.56538807401597e-23,-3.37609018393225e-23,-8.22926702907671e-16,1.55564797272752e-14,1.31558913561191e-17,1.2873756183736e-24,-6.48339575813323e-05,-14.1237872227187,-15.4991938851339,-1.9623220761545e-20,3.62473509780473e-22,1.09025599657265e-17,4.07576042841973e-22,-0.00031193627668297,-5.32173224594846e-24,-3.80827546649604e-24,6.71245448003671e-25,-2.60825712732776e-22,1.52467290341772e-21,4.51520164604249e-23,8.0572268217744e-21,-3.12253608626303e-24,-2.87034981248465e-26,-2.35587083542991e-12,-2.24559000672952e-15,-3.97683247260565e-19,1.15021905645643e-15,0.314422962404312,0.551857840206969,-1.8012930326114e-20,-1.71352980104238e-18,1.41301037550082e-19,1.73733843494436e-18,3.80198310168354e-20,1.2174611692357e-19,-1.60547135457681e-15,-5.99488053455741e-19,1.14909208215536e-16,-6.91877302761622e-17,2.19164186491181e-08,1.88231756515789e-12,6.01151625330668,-1.23104884382482e-19,1.49536455668171e-18,-1.46331723553633e-18,1.01929981036776e-17,-8.00022536443554e-18,-4.1542853736419e-21,-1.0736976674949e-23,1.9925829994171e-19,7.45256860279561e-22,1.94831476755523e-22,-1.96014975506259e-18,-5.58601147988604e-21,-2.34713515735895e-21,-5.62946378295836e-25,-7.87757489071763e-15,4.00539060888352e-21,-2.0137005777103e-21,2.46086465374328e-16,8.63985696468754e-25,-1.205829863242e-18,9.71938352391292e-18,-1.24126432086149e-13,-4.46004286639787e-16,-5.19154322843413e-19,1.29392087381315e-12,-8.05943410881975e-18,5.96128348542258e-16,0.0241662123627485,5.50722136039256e-12,8.44555881139147e-20,7.84290419337301e-18,6.50431190481573e-13,-5.85573116577303e-15,28.0296244535717,18.9807907068934,37.536798000798,25.6596579344562,29.658845103287,39.3141735634838,-1.02984819702976e-18,9.18071723243708e-20,22.0811996786418,2.53584066012509e-13,-6.59820160654296e-14,25.1165431419793,0.436707004544553,43.5131806868492,38.1792049223125,8.56477893402945e-16,3.06990563358623e-13,23.3861564874687,25.963378438582,12.791971023025,16.4302936629455,18.4198152505389,11.9677215220142,23.2537911469883,9.64773332009648,7.40772893828326,10.5096766507521,4.81395489477248,1.75493524897282e-18,0.000356498601923394,4.93251272164841e-24,-2.68255920825266e-23,7.11497020211931e-24,-3.53865892504272e-22,-1.61762422277153e-22,-1.91646229720453e-22,0.00031193627668297,3.25373007453624e-23,2.93836122560827e-26,29.6068291509721,5.07721984682304e-19,4.7288674986656e-16,-1.67156727122136e-16,-7.76565031030183e-16,-2.81282331243745e-22,30.4495728371099,18.8744526229894,24.6612735631842,10.938136448865,27.7835426716207,-2.83721770567161e-24,-1.03509233987224e-19,3.62389391080965e-23,1.85545749041705e-23,-8.71676509689741e-25,5.91415655123073e-28,-9.52129901022289e-25,-6.05764491072435e-18,-1.5770078942708e-18,-2.65475359733102e-19,1.81327307332725e-17,3.56044488782821e-23,5.52787758661422e-20,-4.31348868069799e-24,8.30851856497419e-22,1.40040071709423,-7.27626771030917e-15,44.4397582351472,16.6323570318513,0.479542303982994,-2.99714608945361,-25.2691463916743,-26.4148845291883,-58.644970723881,-39.3144350766506,-35.990761852171,-55.1528608167053,-30.6922470170547,2.29999894696512e-21,-5.22452532559003e-17,1.49423119980917e-18,-3.22270516988306e-17,1.95050624992536e-15,-7.19181387594581e-16,-4.96631219708056e-19,1.02445772526135e-17,-5.83661126890896e-16,-4.890605720528e-17,-1.12397746029809e-20,2.36227933014292e-14,4.00353915068168e-18,-8.82231024784234e-19,-2.2295529665068e-16,-1.81582249832196e-13,-2.91622387760835e-12,-3.13822295164084e-25,2.90439252340052e-18,2.95289143592202e-18,2.75199748957868e-17,-1.07905654458267e-15,1.14897881819245e-13,3.46767163351974e-19,-2.93542843409577e-16,-6.87075438490569e-18,1.38616895879727e-14,-1.55155086872938e-12,-3.09848533834755,-51.291821318202,-2.69226939120247e-12,-22.0274947089006,2.42816699159074e-20,-3.24294721778961e-20,-3.75706521066353e-16,2.45870957140857,-3.57498633350365e-17,6.81173823495659e-17,1.45217250433367e-21,-5.30044018980623,4.15374051493836e-13,51.9356134163871,3.3450652861181,0.000334217439303182,-9.43807990706237e-12,2.06418059429014e-17,-0.000356498601923394,-0.000356498601923394,0.000356498601923394,0.000356498601923394,0,1.76563458700213e-18,-7.50823234185416e-20,5.61339859447396e-18,9.40867737494598e-20,51.5469011787669,-49.2938139325745,46.0305231633822,0.539382948982988,-3.33456558921323e-21,7.53423174836808e-20,1.95656747781353e-12,1.93412896972561e-19,-1.41956493674422e-17,-9.50439933396451e-18,-6.2294327008058e-15,2.81188346628416e-16,3.76523241096256e-17,6.61230998433172e-17,-1.20390031709064e-21,9.36984246577148e-13,2.36381064755599e-19,4.59273175074766e-17,-1.37525197658381e-15,10.8508874510605,4.5941267868302e-13,1.78786332019866e-12,47.11834980641,-1.38730046853494e-14,-5.97982282818164e-14,45.6677275824585,77.1103119733204,28.645711562273,22.5805130214793,35.6853926576499,57.3635906591848,4.95748519471439e-13,92.3049009909167,59.9704088056936,33.8660097025504,101.021920251477,52.5108495022653,56.4449673959611,24.8662259854476,2.90300154238902,57.3581932427403,3.31526442800613e-12,-1.27433591919787e-17,27.8989745597747,16.5252996095615,5.12893672504608e-18,5.63762979610594e-16,-8.45652191881117e-14,-4.51987438376428e-18,5.12892276290694e-08,38.3469861938976,30.5301461480548,1.83323142715508e-16,66.0126300078681,5.45730993129155e-16,1.13984540408791,47.9551423905058,2.4063768746872e-13,-4.05317394692203e-16,1.95794424820828e-13,52.8834501190381,35.6197674059193,33.0516436346776,7.43942213150565e-16,-5.76456257782435e-21,55.6305361915017,26.4044203863859,26.5359070935042,53.9087648908526,32.6253718688971,33.725866090181,20.3298936426033,29.3649807667961,20.9914532429029,19.6138135535716,31.6905390648202,36.9316956701478,26.703736977973,12.7431242349581,34.1369811591157,25.3911738499597,25.3002221188233,17.5310408859414,19.1400209355392,33.3481142224524,10.7231410957956,20.4817526963094,27.1860996293154,18.9820299113636,15.5442213547401,9.53992814561493,12.3981020062654,3.54967100461156,7.15050014896765,1.98084886204205,13.9913988704738,8.22729031637462,1.2942081112551,-6.3958885059237,-2.4568177566901,-5.1728484515852,-2.38459439634282,4.62446371665809e-19,46.1130732619734,53.5060621785963,0.708193992379064,10.4185723215446,12.4117198151978,42.3400138317001,29.1046702881817,65.2620534695967,45.7011717932073,0.10772790666567,44.7717979643053,33.3724538834427,19.4525272964298,30.4957448721104,51.2018460170667,1.82219146756012e-12,41.859750025481,14.4098289166359,-2.701072500673e-15,9.44921900448064e-13,2.1484483888325e-14,3.11611185862058e-17,-9.49865401277096e-16,5.31416237330392e-16,-3.52910804127474e-14,-3.37462829683426e-18,-3.39245744024709,4.09601321162571,6.44722031940583,15.8395980295198,7.42152994284829,19.915173089122,14.1112106422851,6.63980695293827,23.4940060953256,13.4544921957533,6.10765180703689,17.824912437779,7.85301321960436,-5.13301836275464,3.00038450671268,-0.216459111648168,3.69297909966052,25.4607571077692,14.9240165182186,-1.1820820116516e-15,9.90548335216844e-18,8.20339118753751e-17,-1.187736661773e-25,3.08824003899945e-18,-7.08338891055769,0.448359769115145,16.0385017329989,24.0571538495135,4.12077707621122,-5.09964588603315,-7.67188815513307,9.83817397797009,28.3319772936226,1.49698970807109e-14,2.03200109127208e-13,-3.90374647931115e-15,0.0289494749306615,6.17333118680867e-16,-2.89267245564278e-15,-1.21381477244757e-17,3.61489275663707e-21,1.775057962046e-22,3.15220471839276e-16,-7.83049832397442,-0.28581973652733,-5.57204564337037,-8.32651830187211,1.18286716799196,-10.1030205791226,-0.0575551671986166,-8.81704829877767,1.30404357168885,-4.47207972314956,-14.2923092255784,-14.9966498441421,-15.7597222910841,-17.2090756794586,-14.6785837703005,-14.2052256958715,-16.7460463580316,-21.7991919065357,-11.9551094660519,-28.5288572581083,-8.96194413298107,-6.59485449032335,-32.4857394934579,-19.2701995222535,-17.0815800740882,22.3668758066532,-12.3212629408174,-17.9305232754441,15.2610787440559,17.5658318102287,9.61853440675643,1.93399507620327,6.41146485023306,26.9282535596875,27.004586370751,46.6926885198857,2.21085424601837e-12,-9.68620844250137e-19,5.29927380589121e-23,3.46563218379689e-21,-2.84041973364765e-18,6.8571437573379e-20,-6.67512781527745e-19,-4.34878306633128e-17,-14.0120047986202,-3.66312533401235,-9.3465211453253,-25.5009848284789,-8.32039638875041,-19.8449889976603,-14.9405054832121,-18.2370202263184,-13.20786566557,-34.160562826871,-1.07256929759239,-14.4613945532777,-0.529900685673985,8.24381178231461e-20,2.44936138197157e-17,9.91400724240125e-19,4.23682697332822e-27,3.9308152168324e-18,-5.93815654575794e-22,-8.71702375007464e-22,-6.4316168794149e-23,-1.51216672112945e-21,1.89055018792001e-15,-19.7725926182792,-34.5106142607814,-0.392066266928763,1.98297502514008,2.63429629423387e-23,6.58483949575865,-0.034909063578908,-2.73406657612512,-10.7252300555231,0.000726478860515433,-7.92682091346022,0.413025696168634,-15.8835253959625,14.6337962945697,-23.6072880216901,-3.26912662244917e-13,-16.1721603696829,19.3078651364527,3.85202437679146e-13,14.0535544942061,-1.40893203577611e-14,-8.41306988990547e-21,0.000356498601923394,0.00031193627668297,-9.11211051528144e-26,8.09844324281347e-26,6.00610923843298e-24,-3.12071794232044e-25,6.85105164346587e-27,-2.56342028165631e-22,3.23845645116853e-20,-19.2023418813793,-9.11080377688183,-23.1642641685619,-25.2587336608587,-16.0906382427331,-29.1132979360489,-1.1473265000401e-14,1.77308869680508e-16,3.69238163424947e-16,6.97481365150381e-21,-1.56492806919603e-18,1.86348157965468e-18,-1.52739741448915e-17,4.84325310298953e-20,2.24239381224608e-21,2.4336116875381e-16,1.20806201401117e-21,-5.20244290248777e-19,3.41687268486456e-23,-1.65811525560969e-22,1.0029481837322e-24,2.08561885246387e-23,-4.53048428181556e-21,1.4314269919564e-25,-3.48975014172452e-24,7.77694509555721e-21,-17.8102176795055,-8.46166120588549,-9.54906959338874,-36.0510816649914,2.83464339296756e-20,-34.8075062888678,-16.1950895986164,-20.8756220140518,-61.7110458743346,-54.4398583125606,-1.18547612780424e-14,-21.9329158412429,-68.1894408153739,-6.2408876416974,-8.11607863377452e-13,-1.38872792616312e-25,-3.72919210354888e-26,-31.7201323368675,-31.4673743410752,-47.2576112905522,-35.9101723290702,-28.7365648782197,-51.6634611124861,-27.6779803987134,-59.6771214041284,-33.1297713826963,-58.7147350877576,-23.8899675293196,-3.77425745859542e-19,-46.0987245604548,-31.8750320065188,-59.994076768576,-1.30352828984168,-40.1537591235383,-55.3252212062721,-32.082868496904,-62.5355287296334,-28.2511497265348,-40.0960147796461,-34.0259416910835,-8.26652458207933e-17,2.8142280517354e-18,2.52170331647583e-24,2.32659092049913e-19,4.33713131847985e-15,-31.8729976518725,-48.5192036867673,-41.5581177219184,3.50964825939199e-15,6.06900900527125e-15,1.42784336138792e-14,-1.06225437204338e-12,-1.99422695556972e-20,5.78238160999711e-16,-29.3753433804362,3.70276188971294e-18,-1.07223356126697e-12,5.2889800803423e-15,-9.84861183314498e-13,-9.87170459007866e-17,5.6321235523188e-15,1.52753185750619e-16,-0.122913183840985,-2.9795725335137e-12,5.41361341285317e-18,-47.7432991702953,-2.08228653287311e-18,-22.0572390191094,-45.4197756244666,2.57594831709682e-14,-37.8391852809331,-56.6966526827201,-60.9012490858572,-60.1892150017405,-80.3961361848789,-29.3739280941068,-25.093433489248,-40.0249135505334,-73.2114793229161,-39.9361764838715,-1.11694486084148e-12,-28.3257363369808,-2.40182236491405e-12,-13.117992559076,1.70794425680348e-22,2.89097845254629e-14,-2.45482458703833e-17,4.25954315555073e-20,1.13243809888659e-26,-2.7534995683916e-20,3.23572943846609e-15,3.13606254274091e-18,-1.33288589202677e-22,5.48143640340733e-20,-3.2365476155929e-20,-2.13119722323884e-24,9.73798552647027e-22,-1.26829497194576e-17,-3.80277618815574e-18,8.06217094082593e-23,1.28774823034063e-22,-2.93576432939592e-23,-1.13755103332215e-19,5.15443432670575e-18,8.21090769785509e-18,-30.9160780116888,-21.479592818848,-23.4978032986949,-0.0120093159134103,-1.38217127497846e-13,-2.36133028537339e-16,1.22968709653907e-14,1.65147591434615e-18,-2.06370734080867e-24,-0.00031193627668297,-9.5566950296864e-17,-2.04320325170554e-16,-33.0722105498163,-29.3280537541048,-26.9757140409666,-0.0209326010254663,-23.9172628350328,-1.3661787648104e-13,-11.8312537217439,-5.50171132890233e-12,-1.64665387839567e-16,-12.8461514053291,9.87881182725442e-15,-22.8505782509294,-44.3732177711878,2.50134208187915e-18,-2.09250926859207e-15,2.61032274295525e-17,-5.66132237828486e-17,6.71468362231702e-15,-2.76522784942779e-12,-2.93471134473047e-19,-2.44658647704269,-2.29365314624663e-17,-6.03592670460811e-14,-1.35760317676901e-18,-3.38223704247065e-23,-2.89895572360324e-16,8.67538344028256e-16,-1.57769800512364e-19,1.04632098029738e-20,-4.44572339651179e-20,-1.25277999747802e-12,-24.7172477804338,3.98995169887126e-19,7.10932187153569e-16,2.39304959467789e-14,-1.74129056278104e-12,-29.3264848070718,-3.13739455993579e-23,-4.12309039771335e-24,1.57381717291081e-18,1.1497192341871e-14,-3.15573950826857e-17,-1.50081332696439e-18,-14.6710138895725,-35.6527779982404,1.24459762887162e-14,-3.93399712632923e-17,-3.33697277086281e-20,2.1593941761094e-18,7.33413674971436e-15,-4.91298097873688e-17,-2.57098181306395e-14,-4.10211294121825e-24,5.48076088918529e-14,3.21350093462654e-18,4.95531601584582e-23,-3.47894773218649e-23,1.08278950156823e-26,-0.000356498601923394,2.37101583179816e-27,4.99067731145901e-26,1.04615640745907e-25,-3.23581556089334e-23,3.22098227974483e-21,1.50700573928061e-22,-8.15643624212663e-22,7.16514459598955e-22,-0.000334217439303182,-0.000356498601923394,-8.03270974343805e-28,-1.71885963999612e-23,7.18004793226919e-23,-1.08045203949256e-21,-3.71280275246964e-19,-5.34337311057934e-22,2.99749661870765e-17,-10.5665158952998,-8.32188600099375,-1.1208219050633,6.94426960733074e-19,2.92468795299699e-18,1.47864289461111e-19,-4.6749338122878e-19,-2.32983240228389e-17,1.65650581610858e-18,1.03146012913627e-20,7.59019500598232e-19,-1.85887843161323e-12,2.37631031239261e-17,-7.44766406175909e-17,5.27126734383379e-18,-2.00814464266955e-22,5.61393006147102e-20,7.27729999166021e-20,-1.26778892433845e-16,2.81620863758895e-20,-1.19693216954232e-18,-1.50683933658496e-18,6.25329691708847e-17,-2.03613613467581e-15,-5.66141226379752e-14,-10.3517448984246,-8.08165951345878,-27.4762458556389,-1.12899772842233,-5.68173038035944,-1.71797599742667,2.86390833865023,3.60327348699675,4.2669175015934,-0.0002471867632527,-2.370487838459,-1.4392092255063,4.8315262091506e-18,-1.9992537778299e-14,-7.21846443551203e-17,-8.52001973973601e-16,-2.30190953036199e-19,-1.4134087320902e-16,-2.87202522773591e-21,8.13266722343809e-21,1.24105781048823e-18,-9.92298585431542e-21,2.39501067421634e-16,1.60089124450564e-14,-1.12275666725726e-20,-5.64744280151053e-16,-2.09584169221064e-20,2.352163447013e-22,1.5494110345508e-21,1.31669999793892e-23,8.5835413476088e-17,-4.81554587135836e-13,1.24806399986537e-13,-4.82458951346768e-05,-1.38389052631094e-12,-36.0044963768796,-2.39193200887088e-23,4.20927155420064e-20,-5.37565437765635e-21,2.80879351992376e-22,7.14975338361193e-22,-0.000356498601923394,9.83309865584242e-23,-3.47057968949208e-23,-8.45956768086588e-16,1.59904923755773e-14,1.35237711214063e-17,1.3234062026384e-24,-6.55677460966699e-05,-14.1663127501748,-15.5297891103293,-2.01724036946594e-20,3.72617988367793e-22,1.12073897781903e-17,4.18983134808475e-22,-0.00031193627668297,-5.47067692943401e-24,-3.91486144992795e-24,6.90032551593822e-25,-2.68125701288979e-22,1.56734290625158e-21,4.6415697771763e-23,8.2827189116281e-21,-3.20992965825415e-24,-2.95068536209055e-26,-2.39764345878957e-12,-2.30755784924137e-15,-4.08814058339308e-19,1.17667087359184e-15,0.316867196193378,0.557151421109509,-1.85167776102927e-20,-1.76128612743231e-18,1.45235815091554e-19,1.78588389270625e-18,3.90832001635271e-20,1.25151793025102e-19,-1.64976187506248e-15,-6.16258027942754e-19,1.18113132893201e-16,-7.08977001854919e-17,2.22043377754797e-08,1.90886372090185e-12,6.02363391558126,-1.26549358725883e-19,1.53718949117026e-18,-1.50425775455011e-18,1.04782478732392e-17,-8.22398173774679e-18,-4.27052833670758e-21,-1.10374799549283e-23,2.04834864581071e-19,7.6611445777194e-22,2.00284370184896e-22,-2.01499829612898e-18,-5.74234566120276e-21,-2.41282500439946e-21,-5.78701909679123e-25,-8.09682123105117e-15,4.1174892996757e-21,-2.07005859566667e-21,2.52960219317067e-16,8.88166818707676e-25,-1.23942756050809e-18,9.99132982175457e-18,-1.27543806720911e-13,-4.5844814960305e-16,-5.3368178913421e-19,1.31762106394836e-12,-8.28494327818809e-18,6.12803515504368e-16,0.0244649165161664,5.59036080549466e-12,8.68193121080844e-20,8.06223826826454e-18,6.64592708348742e-13,-6.01547386184712e-15,28.1912134536246,19.0226466365253,37.6141398626519,25.7489116267699,29.8215123812053,39.5283804875046,-1.05865201393219e-18,9.43766070489671e-20,22.1537585286242,2.58981638951858e-13,-6.77379573648113e-14,25.2018826920203,0.441562931450365,43.6066805110284,38.3054298101277,8.80377793513484e-16,3.13689295532799e-13,23.4856839711285,26.0764115072784,12.8495607292747,16.5239035011663,18.5001005484656,12.0522104169962,23.3259964776279,9.70324112164677,7.45395354560719,10.5572254455165,4.8433472813302,1.80387372503089e-18,0.000356498601923394,5.07055997924844e-24,-2.75763716259707e-23,7.31410208000369e-24,-3.6376967999566e-22,-1.66289745054857e-22,-1.97009930050208e-22,0.00031193627668297,3.34479466150822e-23,3.02059998216999e-26,29.6829817604963,5.21922705781832e-19,4.85426907211913e-16,-1.71791531653969e-16,-7.98234395415479e-16,-2.89149941980541e-22,30.5137020686821,18.9230975761847,24.7155573343135,10.9778777644147,27.8758907423904,-2.91662359349141e-24,-1.06405811673707e-19,3.72531838051541e-23,1.90738755901415e-23,-8.96072971696052e-25,6.07968527372521e-28,-9.78778086368148e-25,-6.22693481064418e-18,-1.62111318526341e-18,-2.7290427737159e-19,1.86399293132992e-17,3.66009144603475e-23,5.68258391424326e-20,-4.43421267074261e-24,8.54105271351018e-22,1.41424448737484,-7.47622253266029e-15,44.6223693898905,16.7397986791873,0.485660522973319,-3.01905685290343,-25.3476976457715,-26.4993226816085,-58.8173206878379,-39.3897655354386,-36.0675297884638,-55.2895957767501,-30.785344179932,2.36434567915446e-21,-5.3706457491335e-17,1.53603826018217e-18,-3.31263488395282e-17,2.00483195935747e-15,-7.39277498696836e-16,-5.1052915876585e-19,1.05311329490083e-17,-5.99987872985699e-16,-5.02742288582616e-17,-1.15543393983511e-20,2.42776814420685e-14,4.11556629194215e-18,-9.0692385260591e-19,-2.2917456281719e-16,-1.8498427679038e-13,-2.96094158184249e-12,-3.22605291127113e-25,2.98565942363052e-18,3.03550045084334e-18,2.82893419303917e-17,-1.10924152366846e-15,1.1804502276596e-13,3.56470987384311e-19,-3.01757992426908e-16,-7.06223328569882e-18,1.42471377519752e-14,-1.57746391992282e-12,-3.11558300509138,-51.5248998942292,-2.7327635549586e-12,-22.116344270252,2.49611643568016e-20,-3.33371178009473e-20,-3.86143441880552e-16,2.46694288382053,-3.67491201941833e-17,7.00213965722895e-17,1.49281433311633e-21,-5.31266912412478,4.23492090894086e-13,52.1217056988685,3.3743856087843,0.000334217439303182,-9.57842278426515e-12,2.12191917479908e-17,-0.000356498601923394,-0.000356498601923394,0.000356498601923394,0.000356498601923394,0,1.77671756224302e-18,-7.55536700848815e-20,5.64863352122263e-18,9.4677197641315e-20,51.5882293211255,-49.3285115072701,46.0704081232828,0.539902596090237,-3.35550827395241e-21,7.58155147734298e-20,1.96353461683562e-12,1.94627685304275e-19,-1.42833021911786e-17,-9.56407421075671e-18,-6.26807494894837e-15,2.82952699133064e-16,3.78885887245698e-17,6.65370391238468e-17,-1.21146131684126e-21,9.40918013208948e-13,2.37865358700727e-19,4.61921407243996e-17,-1.38385486806406e-15,10.8630325742841,4.61363849689811e-13,1.79443678502431e-12,47.1589653107348,-1.39598914263612e-14,-6.01672475109877e-14,45.6946803994382,77.1874757260712,28.6600567213518,22.5995327454428,35.7103701684245,57.3911963170355,4.97899965556012e-13,92.3637390742941,60.0100319146189,33.8826019614236,101.09565534104,52.5360051356677,56.4723597568974,24.8778545908403,2.90953107579994,57.395996141338,3.32549874599162e-12,-1.28233573560305e-17,27.923164772944,16.5492167764307,5.16112282982994e-18,5.67297496914978e-16,-8.5075953968576e-14,-4.54809683083293e-18,5.14402009871734e-08,38.3752352403624,30.5607839419977,1.84472119714265e-16,66.0680894847924,5.48946393050589e-16,1.14322061254346,47.9889674113266,2.41949489435735e-13,-4.07818331817877e-16,1.96763523690226e-13,52.912442271032,35.6593217519777,33.0925271227797,7.4856081285121e-16,-5.80075779808006e-21,55.6640589017156,26.41657841124,26.5477413360318,53.9433245405639,32.6574611261281,33.7666596182606,20.3590327231984,29.3945894150208,21.017493098682,19.6393385148065,31.7207862978622,36.9767637702858,26.7435342782225,12.7680759484259,34.1748048321366,25.4335034577941,25.3367952197633,17.5592479059107,19.1722721398909,33.3804729981557,10.7458651937282,20.513939820653,27.222543264962,19.0141618596892,15.5701892266503,9.55592035003753,12.4233294146254,3.55888038188434,7.16712262931364,1.98582284257798,14.0194693216781,8.24865361842909,1.2977676921839,-6.41087728435952,-2.46332753763663,-5.18341312647237,-2.38990716655374,4.65346257385828e-19,46.1407772151595,53.5378392198494,0.709925117166414,10.4376370137834,12.4325916637601,42.365924898697,29.1186538663306,65.3053575317089,45.7300284015409,0.108075164851378,44.7967126530633,33.4025260634078,19.4616637876154,30.5107433777623,51.2469361790593,1.82814331692396e-12,41.8793398236958,14.4228553451121,-2.7173121989643e-15,9.48422441953286e-13,2.16080935884779e-14,3.13567118543223e-17,-9.55749023294371e-16,5.34736365106889e-16,-3.5508859086394e-14,-3.39578181071928e-18,-3.39932779862798,4.10634435221519,6.46060170564075,15.8669911595367,7.4360098158057,19.9462905922796,14.1328527241767,6.65004744497994,23.5185876537073,13.4754997811589,6.1187240776683,17.8466869559548,7.87081350921093,-5.14075066212201,3.00536968115677,-0.216863787333215,3.69810411782957,25.4875734482104,14.9330018266832,-1.18943403806717e-15,9.96769641726471e-18,8.25490048658353e-17,-1.19519658866308e-25,3.10760869048432e-18,-7.09331760276336,0.449148964635019,16.0611089200748,24.0746899988977,4.12966711867859,-5.10789842118111,-7.6808425572475,9.84714675961751,28.348619370075,1.50374482712234e-14,2.04073428776181e-13,-3.92814901272489e-15,0.0290108759692353,6.21209811436849e-16,-2.91073893522971e-15,-1.22143381746841e-17,3.63759428868498e-21,1.78620657763459e-22,3.17199128828532e-16,-7.84374263525911,-0.28642994869677,-5.58108788306386,-8.33724671183892,1.18480317555333,-10.1119333369572,-0.0576411232569451,-8.82671676577158,1.30650733895934,-4.47693733682481,-14.3065913378443,-15.014431223832,-15.7786575477841,-17.230503721769,-14.7006660569085,-14.2277097385762,-16.7697687081323,-21.8201224326209,-11.9777237709172,-28.5630470347147,-8.98073681393159,-6.61143072521055,-32.5271919824097,-19.2971981154089,-17.1092186211636,22.3817232536774,-12.3362185198677,-17.9397096442708,15.273534996931,17.5751778026736,9.63075391474944,1.93616749141333,6.41554073187944,26.9418989884344,27.0183060492224,46.7486129080137,2.21726161593926e-12,-9.74703334500932e-19,5.33255722010384e-23,3.48739195027488e-21,-2.85825250003812e-18,6.90021459231087e-20,-6.71704405704715e-19,-4.37608271245258e-17,-14.0383002233593,-3.66800070735632,-9.35620537564384,-25.5208636200954,-8.32672579938004,-19.8646933682714,-14.9600033405132,-18.2496026241388,-13.2226599065114,-34.1944412686679,-1.0730996018924,-14.4720974711107,-0.530401968907453,8.29558384680161e-20,2.46474344373293e-17,9.9761843473278e-19,4.26343763088145e-27,3.95550256938018e-18,-5.97545145907921e-22,-8.77177260673971e-22,-6.47201116147012e-23,-1.52166355087517e-21,1.90240666556743e-15,-19.8040989175897,-34.5485277565102,-0.392306547208065,1.98389546208491,2.65084130756481e-23,6.5879291352348,-0.0349665884760398,-2.73568290110026,-10.7310861543375,0.000728329947167397,-7.93257004176874,0.413393489098218,-15.8901875310978,14.6448632109892,-23.6166916242776,-3.28289186565428e-13,-16.187653221277,19.3262452982708,3.8658400790766e-13,14.0602903377857,-1.41760342018029e-14,-8.46590950121662e-21,0.000356498601923394,0.00031193627668297,-9.16934158310797e-26,8.14930834017659e-26,6.04383190629241e-24,-3.14031865936034e-25,6.89408310078315e-27,-2.57951971601699e-22,3.25879348620162e-20,-19.2271331858663,-9.12533068936611,-23.1957926264338,-25.2865552200974,-16.0984981545089,-29.1271000824738,-1.15441663416568e-14,1.7842168750759e-16,3.71555926717949e-16,7.01861951589409e-21,-1.5747518170709e-18,1.87518732756111e-18,-1.53698292360016e-17,4.87367290445556e-20,2.25647646535466e-21,2.44888501484733e-16,1.21564942726513e-21,-5.23511663917441e-19,3.4383332205684e-23,-1.66852938853208e-22,1.00924751101388e-24,2.09871799398846e-23,-4.55893890571895e-21,1.44041745508457e-25,-3.51166842181441e-24,7.82579029031114e-21,-17.8344008439367,-8.47770896029958,-9.56732151662784,-36.0780123687868,2.85244594318312e-20,-34.8239362102867,-16.202068092911,-20.8931786116161,-61.7461059249747,-54.4667653397175,-1.19099578903194e-14,-21.9420336793418,-68.2363255293289,-6.24695569645692,-8.14497096033549e-13,-1.3974503398473e-25,-3.75261461511576e-26,-31.7490894541979,-31.4991439610188,-47.2852196923827,-35.9377421021858,-28.7570533338404,-51.7039066123343,-27.7033078132453,-59.7063382333022,-33.1514460845542,-58.7463198233192,-23.9130069118266,-3.79796573146338e-19,-46.1234628472805,-31.8985991249965,-60.0430575807725,-1.30643493929455,-40.1723396445411,-55.3604658691348,-32.1126497594419,-62.5825868898151,-28.2647960553293,-40.1182737069601,-34.051582104222,-8.31842881668563e-17,2.83189002669902e-18,2.53754156643834e-24,2.34118336656144e-19,4.3640785923346e-15,-31.9009743982686,-48.5446559235247,-41.5915850931353,3.53144150764344e-15,6.10668796142584e-15,1.4364702809325e-14,-1.06699914576598e-12,-2.00674871225861e-20,5.81605801133842e-16,-29.4037551504943,3.72599061875532e-18,-1.07583990397992e-12,5.32192050229061e-15,-9.88075609850756e-13,-9.93364170631197e-17,5.66674553054867e-15,1.53706544481792e-16,-0.123270580337681,-2.99001616413346e-12,5.44760879696353e-18,-47.7836192343935,-2.09535835076074e-18,-22.0800709679605,-45.4410077200118,2.59175550946338e-14,-37.8559732206453,-56.7268024446668,-60.9351753651943,-60.2186210799853,-80.4552558578919,-29.3910816701613,-25.1102960687358,-40.0425855479304,-73.2644333021775,-39.9531069157539,-1.12049221447237e-12,-28.3382920796032,-2.40960221789348e-12,-13.1315921884933,1.71867062373361e-22,2.90879021165494e-14,-2.47022994581553e-17,4.28601801641401e-20,1.13955070719724e-26,-2.77079413443116e-20,3.2552290880281e-15,3.15574987833434e-18,-1.34125402728026e-22,5.51586173325798e-20,-3.25687449357416e-20,-2.14458279004529e-24,9.79914636699045e-22,-1.27625483122927e-17,-3.82666123963982e-18,8.11280706185106e-23,1.29583604342855e-22,-2.9542029845761e-23,-1.14469523560101e-19,5.18680134858067e-18,8.262429741036e-18,-30.9418685902877,-21.496525008798,-23.5084353756674,-0.0120392908794078,-1.38871790664611e-13,-2.37612610532831e-16,1.23737086869339e-14,1.66184248775327e-18,-2.07666909492886e-24,-0.00031193627668297,-9.61666780605224e-17,-2.05602656819608e-16,-33.0891242869445,-29.3456985289189,-26.987966298939,-0.0209847146957501,-23.9430748983627,-1.37235563775665e-13,-11.8401917334513,-5.5168202370573e-12,-1.65696501296126e-16,-12.8517959912284,9.93837544598429e-15,-22.8614062574104,-44.4016909676932,2.51703432772278e-18,-2.10163389396219e-15,2.62657899337884e-17,-5.69675347767631e-17,6.7562111294463e-15,-2.77423789032085e-12,-2.95314618879405e-19,-2.44947860116657,-2.30793297672306e-17,-6.06161643735094e-14,-1.36612801538729e-18,-3.403480120877e-23,-2.91716224881804e-16,8.72938529930396e-16,-1.58760631887335e-19,1.05289205403031e-20,-4.47364433165486e-20,-1.25708904955303e-12,-24.7419231980123,4.01499121195368e-19,7.15354641162468e-16,2.40788114776292e-14,-1.74723625850917e-12,-29.3520750779618,-3.15709983307942e-23,-4.14898674703061e-24,1.58369829908305e-18,1.15682579234932e-14,-3.17554978132017e-17,-1.51023106133795e-18,-14.6825121400233,-35.6765272867727,1.25187064793238e-14,-3.95871192124454e-17,-3.35792748131813e-20,2.17283274958374e-18,7.37917694881252e-15,-4.94376877167643e-17,-2.58231245111429e-14,-4.12787752505107e-24,5.513420815197e-14,3.23366639996621e-18,4.98643902254195e-23,-3.50079791961243e-23,1.08959024726963e-26,-0.000356498601923394,2.38590804098027e-27,5.02202284365877e-26,1.05272707665742e-25,-3.25613852023005e-23,3.24120989480442e-21,1.51647056776477e-22,-8.20766368161822e-22,7.21014608787262e-22,-0.000334217439303182,-0.000356498601923394,-8.08316191505642e-28,-1.72965528325575e-23,7.22514384328338e-23,-1.08723810551474e-21,-3.73612284725693e-19,-5.37693302433372e-22,3.01619015417573e-17,-10.5717068270632,-8.32959258102806,-1.12208638014654,6.98786738178117e-19,2.94304674622067e-18,1.48792810168419e-19,-4.70429359871382e-19,-2.34445857206311e-17,1.66690230999447e-18,1.03793449488734e-20,7.63777528707539e-19,-1.86552251215317e-12,2.39121504208153e-17,-7.49437605983894e-17,5.30436261485764e-18,-2.02075726527993e-22,5.64916210242564e-20,7.32298276031571e-20,-1.27568146796353e-16,2.83388683831841e-20,-1.20444657770846e-18,-1.51629076446235e-18,6.29212905211252e-17,-2.0479505924336e-15,-5.68790454436062e-14,-10.3585363351221,-8.08668224997655,-27.4911669120116,-1.12994724813571,-5.6843953392142,-1.71904368907402,2.8656658015115,3.60514286374203,4.26975770396032,-0.000247885594413803,-2.37198468676437,-1.4407277998181,4.86161834858686e-18,-2.00839880709449e-14,-7.26217210803471e-17,-8.57339060126075e-16,-2.31635774464988e-19,-1.42226732297257e-16,-2.89006320077089e-21,8.18374237338279e-21,1.24885012982065e-18,-9.98530719167114e-21,2.40970872659923e-16,1.6105423622791e-14,-1.12980721167106e-20,-5.68285666401208e-16,-2.10900400369239e-20,2.36693615141163e-22,1.55914215239061e-21,1.32496982026604e-23,8.63138483691063e-17,-4.83557603071305e-13,1.25313642675544e-13,-4.83900000528122e-05,-1.3880882278545e-12,-36.0344951105273,-2.40695505873663e-23,4.23569744843913e-20,-5.40941732337437e-21,2.82643475810606e-22,7.1946582930398e-22,-0.000356498601923394,9.89485713201707e-23,-3.49237773881598e-23,-8.51269524166977e-16,1.60904423450553e-14,1.36085988497975e-17,1.33171817223156e-24,-6.57154559685408e-05,-14.1745217148655,-15.5364322891816,-2.0299094910053e-20,3.74958206584584e-22,1.127767531178e-17,4.21614659952469e-22,-0.00031193627668297,-5.50503745222032e-24,-3.93945010259344e-24,6.94366627769875e-25,-2.69809762436008e-22,1.57718630975956e-21,4.67072171510929e-23,8.33473694348255e-21,-3.23009076285184e-24,-2.96921823896383e-26,-2.40631656364546e-12,-2.32175453189522e-15,-4.1138192748225e-19,1.18256621512192e-15,0.317365486014796,0.558255986063757,-1.86329769323416e-20,-1.77227975124939e-18,1.46141260261743e-19,1.79707406603885e-18,3.93284307728351e-20,1.25937264544605e-19,-1.65990799941566e-15,-6.20125832221795e-19,1.18850834973847e-16,-7.12836599595165e-17,2.22621356933024e-08,1.91451374408238e-12,6.0262826433417,-1.27343869223105e-19,1.5468347667497e-18,-1.51370098547414e-18,1.05440470371017e-17,-8.27558319186172e-18,-4.29734214271887e-21,-1.11068037429602e-23,2.06121309171389e-19,7.7092611112678e-22,2.01542312162921e-22,-2.02765000259907e-18,-5.77841021234432e-21,-2.42797904133059e-21,-5.82336587599856e-25,-8.14724513313563e-15,4.14334932280216e-21,-2.08305987574599e-21,2.54544277037119e-16,8.93745230342842e-25,-1.24716099357673e-18,1.00540558484779e-17,-1.28325275345807e-13,-4.61313787235398e-16,-5.37032866946283e-19,1.32249239826873e-12,-8.33695969078235e-18,6.16649109549085e-16,0.0245231948002407,5.60671438313884e-12,8.73646068907686e-20,8.11281676607356e-18,6.67605299990566e-13,-6.05193934431759e-15,28.2208535146183,19.0315035992368,37.6290753546924,25.7650934352745,29.8519239065762,39.568234803442,-1.06529444142157e-18,9.496935242898e-20,22.1708318186592,2.60128586508346e-13,-6.81325598923608e-14,25.2189750048393,0.442563063857756,43.6285273325259,38.3350322548354,8.85882326241371e-16,3.15149109668062e-13,23.5092540343811,26.1030168980655,12.8633892173393,16.545921891467,18.5192994056133,12.0721128626026,23.3433691878806,9.7164167617301,7.46498039183706,10.5686420474065,4.85038638276163,1.81514202572601e-18,0.000356498601923394,5.10240619391213e-24,-2.77495701447874e-23,7.36004030329769e-24,-3.6605439768215e-22,-1.67334160625437e-22,-1.98247291151342e-22,0.00031193627668297,3.36580258323599e-23,3.03957189260709e-26,29.700684657014,5.25197482512242e-19,4.8828847984061e-16,-1.72855945260127e-16,-8.03225993462057e-16,-2.90964379734436e-22,30.5285467628659,18.9347878308261,24.7277060383587,10.9874873272485,27.8947483269842,-2.93494178082268e-24,-1.0707398582489e-19,3.74871624459618e-23,1.91936743682875e-23,-9.01701065891368e-25,6.11787185377601e-28,-9.84925637380014e-25,-6.26596059359897e-18,-1.63128450634342e-18,-2.74617955983806e-19,1.87569009998042e-17,3.68307898474005e-23,5.71827278540235e-20,-4.46206274127632e-24,8.59469632995031e-22,1.41710912426708,-7.52194751966199e-15,44.6648838878955,16.7647098701032,0.486966121630277,-3.02409844055984,-25.3661521046344,-26.5197031998619,-58.8585258943743,-39.4062041573666,-36.0824883384051,-55.3166333276978,-30.8072101719288,2.37918691485922e-21,-5.40434275329149e-17,1.54568130624977e-18,-3.33335047547105e-17,2.01733442699541e-15,-7.43909788771457e-16,-5.13735141303263e-19,1.0597220213996e-17,-6.03753157628467e-16,-5.05897781342124e-17,-1.1626905712067e-20,2.44280381248069e-14,4.1414078176231e-18,-9.1262045285089e-19,-2.3060685779692e-16,-1.85693268619339e-13,-2.97042627613542e-12,-3.24631445119107e-25,3.00440466444645e-18,3.05455357446857e-18,2.84667253819157e-17,-1.11620287078979e-15,1.18762857381223e-13,3.58709425623677e-19,-3.03653101066516e-16,-7.10631140214782e-18,1.4335763318536e-14,-1.5830486767654e-12,-3.11879009757058,-51.5702847340754,-2.74128189930818e-12,-22.1375711662961,2.51179076879775e-20,-3.35465076151648e-20,-3.88542342267591e-16,2.46892743851782,-3.69794901751598e-17,7.04603462598598e-17,1.50218997175543e-21,-5.31505087365384,4.25264215351823e-13,52.157598490719,3.38031704571514,0.000334217439303182,-9.60623224362224e-12,2.13523561349396e-17,-0.000356498601923394,-0.000356498601923394,0.000356498601923394,0.000356498601923394,0,1.77745602264489e-18,-7.55850769263581e-20,5.65098132279317e-18,9.47165342006992e-20,51.5906314654674,-49.3304506323995,46.0723948978502,0.539937673537847,-3.35690396473102e-21,7.58470503933807e-20,1.96397383963143e-12,1.94708644587772e-19,-1.42891071173855e-17,-9.56805072678626e-18,-6.27063856249765e-15,2.83070242611341e-16,3.79043288647697e-17,6.65645938237343e-17,-1.21196520578457e-21,9.41168598056122e-13,2.37964268131684e-19,4.62095799163734e-17,-1.38442720353042e-15,10.8637608711003,4.6148793762922e-13,1.79485021666242e-12,47.161357314679,-1.39656744256736e-14,-6.01916706238584e-14,45.6965150617943,77.1920594598865,28.6609690228263,22.6006640824417,35.7119161911435,57.3929864222969,4.98037139088115e-13,92.3675565374182,60.0127443628643,33.8836949674495,101.100099426658,52.5376549517185,56.4741816227075,24.8786118778499,2.90993692208826,57.3985769255413,3.32612973540643e-12,-1.28286878184704e-17,27.9248101849175,16.5508281871604,5.16326742186693e-18,5.67532856292507e-16,-8.5109577906931e-14,-4.54997367964546e-18,5.14495621818582e-08,38.3771722319323,30.5628493603987,1.84548625706095e-16,66.0713858712417,5.49157296190455e-16,1.14343401550823,47.9910273088831,2.42034893805929e-13,-4.07983903083136e-16,1.96826102594664e-13,52.9143142936753,35.6620023076649,33.0952853116132,7.48867193700226e-16,-5.80316974026458e-21,55.6663798995431,26.417390858374,26.5485277623003,53.9454300582863,32.6596312745277,33.7694207901809,20.36099473275,29.396611275824,21.0192727807391,19.6410682653012,31.7228277150269,36.9798085656083,26.7462115794421,12.7697391649945,34.1773469570711,25.4363403601664,25.3392468997828,17.5611376130205,19.1744319916226,33.3826527514901,10.747382018858,20.5160951066957,27.2249908576184,19.0163123506683,15.5719318032258,9.55700225885759,12.4250066093009,3.55948934894738,7.1682255585353,1.98615260374638,14.0213421033454,8.25006779380584,1.29800182266591,-6.41187907265355,-2.46375766625309,-5.18411761434992,-2.39026019363516,4.65539401287331e-19,46.1426570789388,53.540007291032,0.710040733324881,10.4389119235658,12.433990884198,42.3676925524573,29.1195496058132,65.3081232544872,45.7319939674629,0.108097323048252,44.7984118657983,33.404559462541,19.4622486492889,30.5117311181888,51.2496200244692,1.82851180146511e-12,41.8805834781687,14.4236297198319,-2.71837897433581e-15,9.4864228481356e-13,2.16161775843955e-14,3.13697436971639e-17,-9.56139152458214e-16,5.34957186253803e-16,-3.55232733762462e-14,-3.39719048217759e-18,-3.39978453841826,4.10702533268132,6.46150362137208,15.8688270421859,7.43697658223806,19.9483808589475,14.1343076402513,6.6507348508459,23.520239390265,13.4769095935619,6.11946381381994,17.8481510073275,7.87199725069742,-5.14126976561708,3.0057029377439,-0.216890766327134,3.69844855233518,25.4893754080941,14.9335535328455,-1.18992211503152e-15,9.97184256975808e-18,8.25833296293412e-17,-1.1956937518529e-25,3.10889875115652e-18,-7.09399735990285,0.449202287960813,16.0626275305525,24.075877180854,4.13025870656992,-5.10845210491437,-7.68144627958098,9.84775114984805,28.3496454461582,1.50417567102528e-14,2.04128156661579e-13,-3.92977226306083e-15,0.0290145377380277,6.21468153973158e-16,-2.91194026406194e-15,-1.22194146182299e-17,3.63910715642581e-21,1.78694956987911e-22,3.17330962735604e-16,-7.84463702154855,-0.286470889127477,-5.58169862587813,-8.33797982125546,1.18493663643181,-10.1125597899467,-0.0576469960076841,-8.82738740543432,1.30667501697674,-4.47727479202026,-14.3075868890633,-15.0156637973439,-15.7799662739785,-17.231982616658,-14.7021726003604,-14.2292504500533,-16.7713959170772,-21.8215839442966,-11.9792577226993,-28.5654147428823,-8.98201012153678,-6.61254207961571,-32.5300856690129,-19.2990627251589,-17.1111224451962,22.3827297467855,-12.3372317902949,-17.9403349238018,15.2743790505545,17.5758091267543,9.63157495222698,1.93631331429061,6.41581837971102,26.9428210360874,27.0192294381429,46.7518674567749,2.21765595920564e-12,-9.75108667938398e-19,5.33477537454794e-23,3.48884194958854e-21,-2.8594407804153e-18,6.90308509332836e-20,-6.71983732565222e-19,-4.37790169930899e-17,-14.0400956245198,-3.66832916795345,-9.35686174413568,-25.5222306592913,-8.32715514476492,-19.8660327795337,-14.9613326583564,-18.2504539622758,-13.2236688856378,-34.1967657542132,-1.07313519689058,-14.4728262971292,-0.530431816940818,8.29903404858707e-20,2.46576853412156e-17,9.98032567261023e-19,4.26521108594268e-27,3.95714782045426e-18,-5.977936927826e-22,-8.77542129873732e-22,-6.474703187873e-23,-1.52229644260105e-21,1.90319638832487e-15,-19.8062451292571,-34.5511578086771,-0.392322867359576,1.98395457705871,2.65194393274188e-23,6.58812988398375,-0.0349700747883598,-2.73578267786509,-10.7314550898769,0.000728441348502959,-7.93288200866818,0.413415051848587,-15.8905909974603,14.6455217176596,-23.6172812410999,-3.28373911527801e-13,-16.1885096775743,19.3273219035795,3.86670393120158e-13,14.0607083434173,-1.41817666763887e-14,-8.469430952424e-21,0.000356498601923394,0.00031193627668297,-9.17315571644686e-26,8.15269822838595e-26,6.04634590719208e-24,-3.14162494196044e-25,6.89695093529937e-27,-2.58059263251961e-22,3.26014876473533e-20,-19.2288404800027,-9.12631233777073,-23.1979786425082,-25.2884887265926,-16.0990333464652,-29.1280487334627,-1.15488615026275e-14,1.78495830697729e-16,3.71710356175184e-16,7.02153890798091e-21,-1.57540637639426e-18,1.87596749718039e-18,-1.53762154214925e-17,4.87570023296383e-20,2.25741496439542e-21,2.44990258844758e-16,1.21615508361401e-21,-5.23729412384426e-19,3.43976344644408e-23,-1.66922343077475e-22,1.00966732703707e-24,2.09959097632442e-23,-4.56083524585475e-21,1.4410166199093e-25,-3.51312915333235e-24,7.82904555882327e-21,-17.8360367287408,-8.47878314817052,-9.5685516246271,-36.0799172105122,2.85363235647215e-20,-34.825090846731,-16.2024782872222,-20.8940516717305,-61.7481238958887,-54.4687125895921,-1.19135097463576e-14,-21.9425651137349,-68.2388487209158,-6.24729859388329,-8.14673370240243e-13,-1.39803164265457e-25,-3.75417560114312e-26,-31.7511269704295,-31.5013598206251,-47.2872054886444,-35.9396920206927,-28.7585085669644,-51.7067641975691,-27.7050811551558,-59.708459145581,-33.1529967970583,-58.7486040733614,-23.9146146666388,-3.7995458388854e-19,-46.125113990844,-31.9002676283846,-60.0457765854158,-1.30661151618185,-40.1735241199457,-55.3627249521077,-32.1143270098445,-62.585504923326,-28.2657249587305,-40.1198483226783,-34.0529473691295,-8.32188750944062e-17,2.83306673736618e-18,2.53859709841848e-24,2.34215533998311e-19,4.36586722134681e-15,-31.9029353790488,-48.5464843427085,-41.5939401407387,3.53288741387971e-15,6.10918696370318e-15,1.43703876412813e-14,-1.06729620858928e-12,-2.00758313461551e-20,5.81827831372601e-16,-29.4057464812104,3.72753799683355e-18,-1.076055945918e-12,5.32410805735412e-15,-9.88268900306169e-13,-9.93776767895415e-17,5.66903304722433e-15,1.5376992487056e-16,-0.123291694984714,-2.99064369268447e-12,5.44987422916776e-18,-47.7858937240089,-2.09622934872265e-18,-22.0812685822687,-45.4423361904024,2.59279965710753e-14,-37.8571188382767,-56.7289785408019,-60.9376185464904,-60.2207309526546,-80.4588993679431,-29.3923128198218,-25.1114945123628,-40.0438336698204,-73.2677525670508,-39.9542970667946,-1.1207154792167e-12,-28.3390926611831,-2.41008035047714e-12,-13.1323620030169,1.71938545691979e-22,2.90996876938525e-14,-2.47125630791689e-17,4.28777519190625e-20,1.14002472365315e-26,-2.77194673810955e-20,3.25651549932075e-15,3.15706168465658e-18,-1.3418116286976e-22,5.51815593526149e-20,-3.25822913959001e-20,-2.14547486511952e-24,9.8032223771732e-22,-1.27678515787642e-17,-3.82825306881136e-18,8.1161816687244e-23,1.29637504592621e-22,-2.95543181445202e-23,-1.14517134475336e-19,5.18895824958736e-18,8.26586207814006e-18,-30.9436812144315,-21.4977193590519,-23.5091842544799,-0.0120410648821853,-1.38911753076892e-13,-2.37711118550385e-16,1.23788196874246e-14,1.6625332072066e-18,-2.07753292573201e-24,-0.00031193627668297,-9.62066324884252e-17,-2.05688090427682e-16,-33.0903426007396,-29.3469639315335,-26.9887496887654,-0.0209878082610228,-23.9444511049435,-1.3727310301388e-13,-11.8408257583151,-5.51768979445368e-12,-1.65765138609131e-16,-12.8521907289102,9.9422969629742e-15,-22.8621716211173,-44.4034704788911,2.51807966622564e-18,-2.10220717723437e-15,2.62765885252525e-17,-5.69911147612353e-17,6.7589620624136e-15,-2.77479956482517e-12,-2.95437484080984e-19,-2.44964433992853,-2.30888141366636e-17,-6.06325683688343e-14,-1.36669611200438e-18,-3.40489585473378e-23,-2.91837555478085e-16,8.73297168503079e-16,-1.58826663259847e-19,1.05332996534569e-20,-4.47550506749598e-20,-1.25733387956334e-12,-24.7431242185544,4.01665943270549e-19,7.15648258341794e-16,2.40886448793129e-14,-1.74758631257441e-12,-29.3533975660263,-3.15841308201606e-23,-4.15071259823192e-24,1.58435672849339e-18,1.1572963604826e-14,-3.17686974317125e-17,-1.51085848608361e-18,-14.6833238830607,-35.6779565677137,1.25234634658378e-14,-3.96035926989451e-17,-3.35932388661459e-20,2.17372523919588e-18,7.38215317769512e-15,-4.94581869261984e-17,-2.5830164594896e-14,-4.12959459586897e-24,5.51555509554871e-14,3.23500985885239e-18,4.98851319628902e-23,-3.50225411048263e-23,1.09004347915067e-26,-0.000356498601923394,2.38690053103337e-27,5.02411185368857e-26,1.05316497544522e-25,-3.25749292469379e-23,3.24255788881046e-21,1.51710133870123e-22,-8.2110776816417e-22,7.21314516304798e-22,-0.000334217439303182,-0.000356498601923394,-8.08652428266997e-28,-1.73037475060062e-23,7.22814922898623e-23,-1.08769035974468e-21,-3.7376770255865e-19,-5.37916959673311e-22,3.01743253518516e-17,-10.5720797474076,-8.33013187408876,-1.12217473412324,6.99077251681941e-19,2.94427000177104e-18,1.48854686338213e-19,-4.7062501960905e-19,-2.34543314732413e-17,1.66759499520525e-18,1.03836587274946e-20,7.64094376730276e-19,-1.86593488381895e-12,2.39220783178864e-17,-7.49748751759535e-17,5.30656791417215e-18,-2.02159782557056e-22,5.65150942379575e-20,7.32602665123686e-20,-1.27620567683259e-16,2.8350647417097e-20,-1.20494728868936e-18,-1.51692032537867e-18,6.29470578998038e-17,-2.0487187568177e-15,-5.68960613886775e-14,-10.3590203234999,-8.08704063711373,-27.4922459477263,-1.1300140319853,-5.68458549720162,-1.71912031685502,2.86578035289096,3.60527508032189,4.26995800079917,-0.00024792815050317,-2.37207774356069,-1.44081119291005,4.86361746202491e-18,-2.00896563367524e-14,-7.26506377984958e-17,-8.57694390699585e-16,-2.31732040030666e-19,-1.42285721993431e-16,-2.8912653205221e-21,8.18714613315001e-21,1.24936938364689e-18,-9.98946050811985e-21,2.41067979788509e-16,1.61117579430631e-14,-1.13027706126357e-20,-5.68521535675283e-16,-2.10988116948481e-20,2.36792065383735e-22,1.55979066885237e-21,1.32552095691267e-23,8.6345253760283e-17,-4.8368259539753e-13,1.25345741743516e-13,-4.83988457839248e-05,-1.38833745637586e-12,-36.0362763173271,-2.40795625672464e-23,4.23745829482712e-20,-5.41166743314718e-21,2.827610445743e-22,7.19765093381123e-22,-0.000356498601923394,9.89897296905404e-23,-3.49383046086477e-23,-8.51623583489483e-16,1.60970904078962e-14,1.36142491884081e-17,1.33227211813793e-24,-6.57243773517502e-05,-14.1750259753072,-15.5368953043661,-2.03075381560073e-20,3.75114166540592e-22,1.128235673794e-17,4.21790036246705e-22,-0.00031193627668297,-5.50732739889526e-24,-3.94108880536178e-24,6.94655472256628e-25,-2.69921996501117e-22,1.5778423002016e-21,4.67266451354493e-23,8.33820356293595e-21,-3.23143439389142e-24,-2.97045335788076e-26,-2.40683255925708e-12,-2.32269340085017e-15,-4.11553067476251e-19,1.18294816704078e-15,0.317396240249437,0.558325144419522,-1.86407183729924e-20,-1.77301067079289e-18,1.46201433928748e-19,1.79781917337788e-18,3.93447681104941e-20,1.2598959780117e-19,-1.66057902710934e-15,-6.20383534387249e-19,1.18899891968898e-16,-7.13088862722116e-17,2.22654654254768e-08,1.91486777871171e-12,6.02646706556368,-1.27396811478889e-19,1.54747730641998e-18,-1.51433022554405e-18,1.05484316718303e-17,-8.27902087625338e-18,-4.29912895736468e-21,-1.11114237875611e-23,2.06207041495714e-19,7.71246778416479e-22,2.01626147090222e-22,-2.02849306105654e-18,-5.78081367631004e-21,-2.42898896616215e-21,-5.82578818542521e-25,-8.15059397455301e-15,4.1450727296357e-21,-2.08392633303916e-21,2.5464971863989e-16,8.94117001336971e-25,-1.24767509071778e-18,1.00582354458335e-17,-1.28376849458072e-13,-4.6150437800872e-16,-5.37256175751323e-19,1.32276980408166e-12,-8.34042578886346e-18,6.16905297516616e-16,0.0245263839193789,5.60762066597048e-12,8.74009478929788e-20,8.11618604620347e-18,6.6778272135257e-13,-6.05434237763633e-15,28.2223205240725,19.0321001439256,37.6300265245833,25.7659813908194,29.8535569138084,39.5703721553575,-1.06573694311329e-18,9.50088553344608e-20,22.1720105606829,2.6019806889857e-13,-6.81581113622375e-14,25.2200292908963,0.442624271547093,43.6301208389461,38.3370670672777,8.86248480964615e-16,3.15240767864364e-13,23.5108813298646,26.1048430438506,12.8643539531626,16.5474303789379,18.5206333245486,12.0734744988618,23.3446003675284,9.71732578643522,7.46574338298376,10.5694389188377,4.85087519946196,1.81589138507251e-18,0.000356498601923394,5.10452855084242e-24,-2.77611128282871e-23,7.3631018327768e-24,-3.66206660725572e-22,-1.67403764913058e-22,-1.98329754156157e-22,0.00031193627668297,3.36720264601978e-23,3.04083626916733e-26,29.7019313391017,5.25415632983197e-19,4.88477190070023e-16,-1.729265341541e-16,-8.03558110373778e-16,-2.91085260115116e-22,30.5296141340089,18.9356264340484,24.7285535110612,10.9881622954478,27.895953689587,-2.93616257559704e-24,-1.07118512732668e-19,3.7502755837601e-23,1.92016582984327e-23,-9.0207614829358e-25,6.12041680224706e-28,-9.85335338793747e-25,-6.26855934394029e-18,-1.63196212110602e-18,-2.74732154713614e-19,1.87646938399415e-17,3.68461096671763e-23,5.72065119751762e-20,-4.46391879274231e-24,8.59827136051607e-22,1.41728698170406,-7.52496576235777e-15,44.6677577921114,16.7663921583953,0.487048721609628,-3.02443554154883,-25.3674177948687,-26.5211422698056,-58.8614558114027,-39.4073994029583,-36.0834552435324,-55.3183251173975,-30.8087302738261,2.38017576796112e-21,-5.4065875805219e-17,1.54632384750328e-18,-3.33472878568823e-17,2.01816542625869e-15,-7.44218225523774e-16,-5.13948790235274e-19,1.06016231831581e-17,-6.04004000751825e-16,-5.06108016957007e-17,-1.16317417466428e-20,2.44380057004824e-14,4.14312985326476e-18,-9.13000110629306e-19,-2.30702128092299e-16,-1.85735864310982e-13,-2.97101795582432e-12,-3.24766475928014e-25,3.00565375237362e-18,3.05582305958872e-18,2.84785392742498e-17,-1.11666663440486e-15,1.18810101713712e-13,3.58858593120021e-19,-3.0377939441039e-16,-7.10924192405158e-18,1.43416477628765e-14,-1.5834038982302e-12,-3.11896985167585,-51.5730152102983,-2.7418068956102e-12,-22.1390556985199,2.51283529571086e-20,-3.35604625102568e-20,-3.88701565819111e-16,2.46906775456583,-3.69948317704699e-17,7.04895779484311e-17,1.50281479750286e-21,-5.31520107684941,4.2537725521736e-13,52.1597792200223,3.38067888639229,0.000334217439303182,-9.60779317666656e-12,2.13612283040451e-17],"Archive1208_field3":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.000326294258121082,0.000237714116194459,-0.000448322733637158,-0.000400574835597987,-0.057380653316447,-0.0635214592945163,-0.042585082951311,-0.0915544109163587,-5.76693418071733e-07,-9.51291919241196e-05,0.000489742006992536,9.60940055557592e-06,0.00287777118678197,0.000266403568786158,0.00196476243691926,-0.000394822836212177,-0.000492877265193372,0.000433572682354728,1.13592049757053e-05,-0.000819154755252879,-3.89399305676758e-06,-0.00488868593086963,0.00142437601373341,0.0346986263391518,-0.0138408132859259,0.00073296827847035,-0.0236915410100882,-0.000190205622234549,-0.00249705227737355,-0.0626457811350096,-0.0586550005277661,-0.00189042890213441,0.00694166769193054,0.00725903642488443,-0.0331337847115492,0.00593159064955153,-0.0742438562227667,-0.0732097451429926,-0.0425903036850163,-0.0879777837982062,-0.038264936505351,-0.0459278930693866,-0.0219542243606358,0.0361460693973651,-0.0842382280259577,0.00924985929094336,-0.000106466083700635,-0.0859966252305342,-0.062622094832135,-0.000349379284637569,-0.000210187971305533,-0.0031350408963458,0.000515836076341118,0.0210261901950112,-0.0755091615757239,-0.0799800161476847,-0.00159626521866525,-0.0491555637971468,-0.00957060904410133,0.0462315097287987,-0.00424851526513374,-0.0116106397290683,0.00311677850030638,-0.0150220893095164,-0.0313898213445975,-0.0671926176567528,-0.0722618833946609,0.00314062454766384,8.38211174471597e-05,-0.0692656310687112,-0.0285525170728739,-0.0184213549374711,-0.0256842642933297,-0.0969282389826255,-0.0615105880199407,-0.0572373091414295,-0.0802131825324464,-0.069360171946987,-0.0531185898232122,-0.0785918041718472,-0.0592359372408908,-0.0643231281222758,-0.0484543103421233,-0.0730488540516068,-0.046927830445572,-0.0569409993047922,-0.0489232378930606,-0.0432454849244661,-0.0917234008021535,-0.0424877688691977,-0.0620290440021377,-0.0613702851476724,-0.0486843118041477,-0.0474447511551187,-0.0506294957910426,-0.0442578360042019,-0.0361472002099184,-0.0403967753315312,-0.039559694135896,-0.0419372573839695,-0.0374924130198591,-0.0384194277037728,-0.0394166543044367,-0.040506341323598,-0.0447449104895306,-0.0408178743368955,-0.000512186447686713,-0.0670666662157482,-0.067311547551158,-0.0358593824941816,-0.0516319808901652,-0.0492942619446939,-0.065411589329944,-0.015704173654036,-0.064765690219297,-0.0757378058898969,0.0403573155611308,-0.0657315827864103,-0.0916361845611546,-0.0102377626719693,-0.0414940403362232,-0.0375727573238368,0.0103798176453118,-0.0261602809946041,0.00560703030922032,-0.0068339199654383,0.00527500843838932,-0.0140614367520768,9.9850298106749e-05,0.0011096271085593,0.00117214059002757,-0.00182826692415084,-0.000542682992557097,-0.0439396981423256,-0.0401444694546973,-0.0418890568474783,-0.0526987087327363,-0.0456960330712413,-0.0601302764654969,-0.0575919149071254,-0.0588321701705256,-0.0770481829259459,-0.0519687415162253,-0.0506046023557644,-0.0715179307916949,-0.0468141585989425,-0.0571888692989854,-0.0475273173098391,-0.0492007483223327,-0.0607416049516794,-0.0941249871514721,-0.0250312437292434,-0.000588703574942869,-1.73724632813255e-05,8.15937553140829e-05,-3.40075651122866e-06,-0.000651967694004852,-0.0520466605380379,-0.0425957397293773,-0.0710930403595232,-0.0775261648593246,-0.0417155150994708,-0.0492848720195187,-0.0642216820133344,-0.0777802364948952,-0.0112531933440712,-0.00484501074049818,0.00917893924446548,0.000200596123523559,0.019301034279871,0.000592388721167135,-0.00118088574696101,-0.000127092938771504,8.16938725102878e-05,2.97612096385683e-05,0.000212471243462554,-0.0398452155957269,-0.040911202072291,-0.0437390266107245,-0.0487231146538059,-0.0487611499180042,-0.0549101654486132,-0.048280706085229,-0.0549718042849432,-0.0442349386932404,-0.0597037956915136,-0.0636566456789281,-0.0483993800683597,-0.0561224707334148,-0.051153901206868,-0.0458090929886864,-0.0501511910396887,-0.0529363549906275,-0.0720158135933743,-0.0439158655613889,-0.0513486062551876,-0.0454890369097462,-0.0355713984422807,-0.0643500471182496,-0.0549280537879073,-0.0535673393240933,-0.0829728424699806,-0.0679522229912046,-0.0627436068263737,-0.0865221856321503,-0.0457533329767632,-0.0694134985429515,-0.0764425474115619,-0.0762264576409831,-0.0461554232359725,-0.0575454442230673,-0.082571145501996,0.00856517794110103,-3.02316073601054e-05,6.23603465734809e-06,0.00021048599991166,7.15617560998218e-05,4.784917932437e-06,-3.23041240561509e-05,-0.000100553970956379,-0.0419181853980098,-0.0555097659904167,-0.0736230600685792,-0.0766571916575392,-0.0844232403846184,-0.0623974888334391,-0.051614359075578,-0.0987910899333529,-0.0744433557267354,-0.0702766489863772,-0.0520712576205354,-0.0854418546917147,0.0236371627464333,0.000113085759356531,-9.99008633191946e-05,0.000273093893884047,-2.82983849075289e-07,-2.34354050548018e-05,-1.49557775853599e-05,1.05373263608902e-06,-1.70492451255264e-05,-5.06386875066307e-05,0.000650261917700203,-0.0470251140154452,-0.0762312688655917,-0.0684070953137841,-0.0143103429759383,8.90681022005305e-06,-0.033996438899034,0.0353308581855047,-0.0289450572671685,-0.0211483087247197,0.0257532867067455,0.00734034301315959,-0.0270913041673139,0.0106745792357645,-0.0670783476575021,-0.0240309315441076,0.00853441750132039,-0.0540197777102318,0.00786244576007381,-0.0103647199926911,-0.0209618799312794,-0.00335496384970966,2.52880513419482e-06,0,0,4.47723241256453e-07,6.42330685941699e-07,1.20652488764598e-05,-9.37802191650737e-07,9.25952313988438e-08,-4.02356999620512e-05,6.48782181823013e-05,-0.0682074836240251,-0.0545999287868174,-0.0480229573068479,-0.0801124290639622,-0.0482457576037602,-0.0398930367032485,0.000315699635176766,-0.000576182177742981,0.000530718892121899,5.72783541106485e-05,-0.000145527987395262,9.3999995842747e-06,7.13654943971311e-05,5.25425587635879e-05,-2.97064259644283e-05,0.000762915211225523,-4.6782187213886e-06,9.64856665409057e-06,5.87743089271595e-07,-2.79262138343836e-06,-1.52020672362832e-07,-3.50131043281424e-06,9.60691640333626e-06,1.71511242554276e-06,2.98714128175651e-07,9.92231511627036e-06,-0.0524036060297366,-0.0457278260754068,-0.0445951771902338,-0.0786575095157372,-1.02623808990198e-05,-0.0573220558224815,0.00857332669522794,-0.00973146632578583,-0.0650471113016172,-0.0491695484739634,-0.00987095725439693,0.0130011878646564,-0.0540559403245713,0.0323939434888245,0.00538931801600868,1.46013941475918e-07,3.66873181988964e-07,-0.0704414185086994,-0.0607154731840261,-0.0626071833863484,-0.0741351036841184,-0.0793233117918282,-0.0691514078778871,-0.0667850640590687,-0.0615001959703422,-0.0874772659754218,-0.0713147816389528,-0.0607056773103539,0.000125473470872151,-0.0367042097810488,-0.0813582989181157,-0.0424744151981485,0.0386191337039082,-0.00631791611113438,-0.0326749997443769,-0.000809546010000077,-0.0467581105366823,-0.00844031013250218,-0.0519501672694613,-0.0432587635995635,9.68721462263862e-05,-0.00015418929998776,-1.23844633420088e-06,-0.000180099119226081,0.00288033924896052,-0.0817256510902594,-0.0671785349848388,-0.0869470093676141,0.000802592808268715,-0.00071901853859627,-0.00444447858170574,-0.0064419275863983,7.99011785003444e-05,-0.00715241170365197,-0.0714390918503764,-0.000206499296045537,0.00194650269572865,-0.00109541722218166,0.00602692187439539,0.000242302526561582,-0.00205496049301389,0.000468089020511469,0.0252686915835781,0.00613179564390627,3.05877018622317e-05,-0.0249131544504382,-0.000168670531597006,0.0118338972249195,-0.0128780363973891,-0.00142895074885579,-0.0155726510008828,-0.0761812357643777,-0.0928579787630011,-0.0713062559468226,-0.0838087387949001,-0.0823514737679217,-0.0840305384307714,-0.0311381578244902,-0.0676858124154692,-0.0453415161071163,0.0155897730479524,0.00636977077665955,0.00798223886192078,0.0273253425519611,2.12893932730717e-05,0.000683120334909614,-0.000657486047630401,0.00252533928070519,-5.35390619119556e-07,-2.51639912110848e-05,-0.00312027655444384,8.9385553747988e-05,0.000128403520112576,-1.89804838258081e-05,7.39444229330322e-06,-4.83617011817086e-06,-2.31606496107783e-05,-0.000190789728540256,0.000111489755860848,1.70457513406272e-06,6.92399958313363e-06,3.51635025254215e-06,6.41649485443794e-06,-5.3991453041438e-05,-0.000158537176822122,-0.0705416539488931,-0.063853621758879,-0.0217015088543878,0.030089707074153,-0.00245276025548223,-0.000147498197731629,0.00162154577094676,-0.000114754023429122,4.97900851014869e-07,0,0.000521226978671364,0.000426990359403294,-0.0677332849229235,-0.0840227294703686,-0.0109180556564647,0.0308937598678163,0.00997790636796219,-0.0079810554173851,-0.0839519047562242,0.0128133865016253,9.49141537535567e-05,-0.0265410106565804,-0.00465670959510904,-0.0473828758374098,-0.0625222290582328,-0.000309318163997072,-0.00965915826193509,0.00226755387650255,0.000490191494900003,0.00146722895647376,0.00561495044604001,-1.14349675808707e-05,0.0432888235504835,0.0013902182684057,0.00989437250712998,-4.29593097365761e-05,2.94877340013801e-06,-0.000476143433508589,0.000678148993282558,5.30756996764005e-05,-9.59282658485637e-06,3.36067313363302e-05,-0.00370783433081427,0.00764911177854422,0.000270192304483825,-0.00140261771947148,-0.001241732263096,0.00871634296852941,-0.000169391851900849,1.23950902976907e-06,-2.42157237200312e-07,6.05919003271842e-05,-0.00225639214139249,0.000209594962450666,-0.000451006669776308,-0.0691766501610946,-0.0338390976591497,-0.00335318796837097,0.00053094878397946,0.000156952998913012,-0.00110546579389393,-0.00155011035670089,0.000535088258656297,-0.0114684463377277,4.22646560833271e-06,-0.00563310523661274,-0.000296318986343702,2.8255675021111e-07,-1.82966692900583e-05,-2.25340439140256e-07,0,7.60735597070664e-08,-1.46407750056111e-07,-1.11931488193169e-08,-1.64330697637751e-05,8.25227055627442e-05,-3.19756619338101e-08,4.78008000476472e-06,-7.33503098752505e-06,0,0,-9.2628275234197e-09,-3.3938066294798e-06,-1.95995427889734e-06,6.35130140293143e-06,-1.21380979796296e-05,1.16182352425484e-05,0.000825951423439761,-0.0814126351832511,-0.0737732369141667,-0.061874021302181,0.000225039219170642,-8.20915155838615e-05,6.7326930086186e-05,0.000142595971405019,-0.000183202950634273,-0.000396396173499122,-0.000197074738307395,-0.000240525884250656,0.020736454527395,-0.000302630020935152,0.000787261853959306,-7.26428429714343e-05,1.13346453609106e-05,-0.000427813845142175,0.000212151790472122,0.00191832523798368,0.000204571221647547,-0.000334657583097815,-0.000451721642511996,0.00162067605200704,-0.0068710249698528,-0.0065610930356933,-0.107740707626805,-0.0789448334837273,-0.0893355230638535,-0.0864265723921522,-0.0438490321864199,-0.0773056136799034,-0.00351562729855458,-0.0336568512448967,-0.0765144494941613,0.0255792710183551,-0.0658608395791999,0.0177139236383639,0.00264387264412263,-0.00909939918801808,-0.00224936558311262,0.000991721377609011,-0.000235070620959638,0.000855777929911623,-3.23639426498325e-05,1.57065265093763e-05,0.000145131889045286,6.87724714568516e-05,-0.00136088839308014,-0.00442422284953619,3.37850744670397e-06,0.00101603522159813,9.01401816233757e-05,-3.17834446002541e-05,-1.82429079979176e-05,-1.63560172686121e-06,-0.00804093457518014,0.00363876990453005,-0.00116488888516152,0.0318385439004239,0.0102658330182926,-0.0771939353310621,7.57544104188207e-07,-7.5835589661384e-05,-3.82700215508452e-05,-8.79083027137882e-06,6.27295077944461e-06,0,-5.2671546063085e-06,7.44087431620682e-07,1.01391538318033e-05,0.00063184361448994,-9.00761194311087e-05,-2.75305382683039e-06,0.0211353603812,-0.0381983432017307,-0.0196947443090578,-0.000131533470259327,-1.75656307364778e-05,-0.000376613638902266,-6.31741221599377e-06,0,1.05026234978321e-06,2.18528400424461e-06,-6.06730676822814e-07,1.34969060199743e-05,-1.68817940544893e-05,-1.56430210876846e-05,-2.2909072480753e-05,9.23838829913633e-07,9.89801164529281e-07,-0.00449350215657904,0.00435058585083803,7.72675478108379e-05,-0.00775226371389496,0.0332314748908048,0.0444518829010305,0.000489772762932732,0.00166983242944447,0.000506560077938307,-0.00115042275687963,-0.000536580670577293,-0.000185634631300882,-0.00170852433319625,0.000273642842821102,0.00141211233254021,-0.0090729063101406,0.0158524381304598,0.0230261848596446,-0.00451271866232072,-6.34962172236511e-05,0.000202859288377772,-0.000153227538539335,0.000291180826150623,-0.000246745548504853,-9.53337603638054e-06,-1.93458331525328e-06,5.90161720790148e-05,3.37541026814283e-05,4.13358604213358e-06,-7.49279153296901e-05,-1.93837472543374e-05,-9.54199755222598e-06,2.10704956709509e-06,-6.05471013139649e-05,-8.84546764297951e-08,-7.75412289495839e-06,0.00069737264545605,-9.10774929532438e-07,0.00211970489619974,-8.70842033749903e-05,-0.00250531057110077,-0.000306030421229767,-1.91944965095164e-06,0.00360671140422064,-4.68285654816547e-05,0.000298650072753747,0.0245458682986874,0.0129224703617326,2.70479861551169e-06,-0.00022284431681908,0.000589638883470013,-0.00420277887399487,-0.0202945147770376,-0.0138828802218882,-0.00899412706406228,-0.0332687865705805,-0.0206127115028839,-0.0165992439975125,-0.000174502956986093,-2.34181272871737e-06,-0.0865904422540178,-0.000649369088093277,-0.00701331946973791,-0.0746817791546749,0.035233375904627,-0.0769245156839482,-0.0916667230529867,0.0012168532297471,-0.00396215476488572,-0.076792885170954,-0.0595453215346533,-0.0662104552475556,-0.0531467271908144,-0.0665677249266409,-0.0510388724174928,-0.0841704825025708,-0.0655705215339764,-0.0580427276957214,-0.0736254139772748,-0.0623173947015309,0.000109659262143931,0,1.0158585305864e-07,1.13449872306398e-05,7.43876998236246e-08,2.32937545221752e-06,-1.00448141517979e-06,8.69106489036923e-07,0,1.01083998575567e-06,-3.44397980468897e-07,-0.0635599318789596,0.000110108280052941,-0.00417167796191734,0.00217295534500764,0.000769363588530241,-0.00012236839612095,-0.0705101997858025,-0.0814189049261845,-0.0614779197327295,-0.090578210141298,-0.0669014483684426,-1.57294887779194e-05,0.000100163635452684,2.94878378772272e-06,-1.93829237472387e-07,2.43173020045094e-07,2.37030358681529e-08,3.06044769799216e-08,0.00107550325335457,0.00039295192772768,0.000163627472484216,-0.000551043952451615,3.06586386408641e-05,-9.62461167513759e-05,5.69946313274899e-06,-2.27510223686703e-05,0.0392334742169048,0.00413369119443422,-0.0844572350952249,-0.0490653677780543,0.0435073620600626,-0.0461416873483314,-0.0942469133760194,-0.0658863738920176,-0.0759431028997569,-0.0249168894806669,-0.00510279714818315,-0.0367398265399539,-0.0919276757916868,-0.000252532058774421,-0.0007895777438327,9.53507586719829e-05,0.000691917130214574,0.00171687393901921,0.000404032124279585,3.70455393913588e-05,-0.00044513914616308,-6.45579515986662e-05,7.48000547421064e-05,-3.97694562997387e-05,-0.00127119192713017,2.48472735661864e-05,6.01585248459406e-05,0.00148492788411908,-0.00896110573160137,0.00958929166124807,-1.87025254654928e-06,-3.93973684928474e-05,0.000133156145893148,-0.000318971446243772,0.000326035971242952,-0.00184545132295052,-4.75824575975203e-05,0.000372912752060924,0.00168199887656025,0.000831318015747066,0.00462922728825617,0.0385758499036577,-0.031060995284792,0.0160801646043019,-0.0804784170855767,-1.20196806266129e-05,2.83317586804109e-05,0.00237086196425974,-0.0842527909762274,0.000615845466327591,-0.000536118389520339,-1.09742462308515e-05,0.00951443038720998,-0.0121893661201108,-0.0254449317296258,0.0449687756953803,0,0.0103305734407952,-0.000335866476074961,0,0,0,0,0,0.000999090360083885,0.000769814280489757,-0.00139601971908571,-0.00125505902490388,-0.0859936727720066,-0.100892771236559,-0.0747592023246814,-0.22506053364077,-3.10587704713126e-06,-0.000290214067196921,0.00523208330222868,4.24495424160931e-05,0.00882805971525832,0.000759146601041172,0.00551168112858987,-0.00101388850314251,-0.00140285906844549,0.00138171174372514,3.29976340167107e-05,-0.000695681092269987,2.91039040268607e-06,-0.0147867536106398,0.00433490780975133,0.112143932952324,-0.0409656734954506,0.00559560789330586,-0.0152382182900006,-0.00141859596227901,-0.00905135646416017,-0.138067323907728,-0.0859698633969302,0.0123313614442083,0.052118023067861,0.0519502050340128,-0.0385948619526377,0.0189368633836454,-0.111204281405288,-0.149652758033002,-0.104371457838466,-0.140465631821585,-0.0777626245451869,-0.0852061103592121,-0.0642857492048791,0.112412959780351,-0.181941436834486,0.0342143635864894,-0.000415350022672068,-0.203872900945049,-0.167455330498348,-0.00113935867127289,-0.000343432874139761,-0.0119623426420939,0.00160926811479664,0.0743987450757394,-0.170598110529995,-0.19662478223922,-0.004886630091633,-0.0627329751147771,-0.0304153904323217,0.138956658103947,0.0320838056589316,-0.034818051965851,0.00965622598333372,-0.0458419782194236,-0.0426560348999228,-0.160057293545582,-0.177142691409386,0.0104229998164571,0.000262188322002691,-0.139522870476183,-0.0787047038584843,-0.0461975960665482,-0.0225539131831216,-0.240029267236574,-0.148693043775694,-0.149745140058489,-0.196607814957152,-0.177227023789883,-0.134973806711717,-0.190140302340836,-0.1379699752521,-0.165591138462986,-0.131055270502892,-0.172613828987998,-0.119081797374276,-0.14194249799065,-0.129288415917562,-0.111413070637498,-0.22046372227343,-0.115934965798054,-0.160229451913796,-0.145273995025512,-0.127950731451961,-0.124585963507285,-0.136463561209545,-0.120506579530263,-0.103216276869225,-0.111925802372416,-0.110703611397104,-0.110607359482646,-0.104292166409825,-0.111006485286348,-0.109877234004854,-0.117057268570464,-0.126726763625993,-0.112300145904131,-0.00159969082319169,-0.143774560109274,-0.140446261328406,-0.101547155948694,-0.141259060321599,-0.130234755937742,-0.138282804033117,-0.0377624970600292,-0.110765867157232,-0.156228821912668,0.123094028466843,-0.137576099570681,-0.214777351464895,-0.0271551029675194,-0.0701576032178597,-0.0322538270554411,0.0372529001746483,-0.0347322458637976,0.0516207946705766,-0.0217215078835722,0.0185182019336601,-0.0428174851647262,0.000412810618610579,0.00346095369960644,0.00400239212556638,-0.00694797143357703,-0.00173593022048025,-0.12486931080335,-0.115754743282043,-0.11408435220507,-0.13818791934225,-0.12247403414978,-0.154475456808339,-0.150404655234785,-0.152199123699462,-0.178090651501974,-0.131401868845885,-0.134373268803893,-0.17179111805864,-0.128675970151745,-0.151032367768476,-0.124133854559359,-0.133630787119437,-0.152616697351955,-0.232500191137767,-0.035820478308442,-0.00176665000092575,8.2108604824328e-06,0.000277020026885413,-1.06887458693161e-05,-0.00202209582114369,-0.141013884442306,-0.117630579892092,-0.177658349527216,-0.173433958787186,-0.112126301837033,-0.129015586348712,-0.146548262801497,-0.183866579144952,-0.00104979804079308,-0.0167301837047801,0.0309151147033528,0.000597161463586352,0.0691670332091299,0.00215254289525354,-0.00402374389941971,-0.000458986067164971,0.000251013014754096,9.48089574872917e-05,0.000818963503619035,-0.107495503830473,-0.114285577550905,-0.118209508322419,-0.128109706897371,-0.128816696867235,-0.125927902888715,-0.128928530138926,-0.139312554693736,-0.120494762953058,-0.149566617270635,-0.161475730125623,-0.12063942723719,-0.146479122232222,-0.131980488431768,-0.121438021810681,-0.135303535776077,-0.14056295486093,-0.184322580563023,-0.119220376398805,-0.126303056549143,-0.125622783957373,-0.0997599928956927,-0.158853008601383,-0.143932546691483,-0.141883807367577,-0.190291168077882,-0.167843881201928,-0.122186836307999,-0.198067678639215,-0.092342134839433,-0.166692932519003,-0.182745593859246,-0.154739332271469,-0.0852959037147096,-0.0989878551417516,-0.143255132269354,0.0341607548929656,-0.000105809199950006,2.00273883671127e-05,0.000664687427581544,0.000195635905768563,2.00192623480961e-05,-0.000117482853108529,-0.000416791902802116,-0.111772301422015,-0.146899161609206,-0.178734035852933,-0.173058505207434,-0.199481015743583,-0.146699494523558,-0.129887808982777,-0.227451722075763,-0.18852826286878,-0.159898796535058,-0.104950854417655,-0.194366099128807,0.0839259967502214,0.000382936324708373,-0.00038352023331785,0.000972245334431093,-8.68512278646523e-07,-6.04052642400913e-05,-4.80187119511352e-05,1.73283018908813e-06,-5.337444558123e-05,-0.000161555706219728,0.00243768859043571,-0.120104856707134,-0.18088672171147,-0.132451017194221,-0.0352167910988951,2.93459915950613e-05,-0.0609869195667343,0.109204405337905,-0.0156608406679052,-0.0306074996038982,0.08727553701422,0.0473589240407036,-0.0237105335844842,0.0351368438675807,-0.0949324517218296,-0.0419082648169416,0.0314543329432225,-0.0999665028075717,0.0593961230873995,-0.0313687060424825,-0.00936096111359827,-0.0120816971541773,5.21160764541524e-06,0,0,1.27249942621298e-06,2.093044287192e-06,3.81169403376465e-05,-3.01959796509228e-06,3.10643889921548e-07,-0.000127898532033542,0.00021109881359954,-0.175721131629009,-0.146484063731482,-0.11836170497032,-0.201289793599069,-0.107078709051276,-0.0928372554503516,-0.00020441871019347,-0.00157946771597231,0.00208090252514569,0.000194593391854908,-0.000531451313626695,9.1498684640339e-05,0.000108375920980077,0.000193030375193353,-0.00010482702594866,0.00267550556247564,-1.69249975292368e-05,3.26185366612639e-05,2.90626057188795e-06,-1.01995739771117e-05,-3.96942223276635e-07,-1.11500778127459e-05,2.91300898609936e-05,5.79394215510929e-06,6.56695568770259e-07,3.56226212236218e-05,-0.132121799654164,-0.122005061516266,-0.119361850853893,-0.18678056372709,-4.12515454988112e-05,-0.113526094755345,0.0204618151845479,0.0102250696048134,-0.109973631195286,-0.0645452851760024,-0.0330594115943965,0.0130823604985482,-0.0913652025671223,0.114059913971542,0.0211796612690813,4.13743288864149e-07,1.1031253578666e-06,-0.168680986661498,-0.144980964093051,-0.133751079264351,-0.175525956132472,-0.194002385095111,-0.151429175148446,-0.162287987628124,-0.118440784489537,-0.209913233408937,-0.148204608727581,-0.149748149020245,0.000407814680497157,-0.0674979992920449,-0.192211322181001,-0.0551094428144575,0.114284904270968,-0.000858005953950421,-0.034561417515188,0.0340986204628487,-0.0576281975458235,-0.00574912256451086,-0.115031839551674,-0.0720519416815543,0.000473346132564484,-0.000574802840075339,-3.63493081788999e-06,-0.000584827847115072,0.0085030877390849,-0.192353811758089,-0.13379175336391,-0.192441663046206,0.00223185913170067,-0.00310090242821493,-0.0155064961640503,-0.0178185535239412,0.000235447276124241,-0.022296991289344,-0.170216178328726,-0.000709477634812891,0.00943520067165011,-0.00435372447115401,0.0235440288744693,0.000985003510083184,-0.00770000539855677,0.00126559625701441,0.0835750214410326,0.0219333989002589,4.47432427792415e-05,-0.00981210766746369,-0.000542766040963772,0.0572042137714395,-0.0110499992198794,-0.00543957110174248,-0.0179682703944912,-0.150786569440121,-0.186252005819756,-0.126425085174459,-0.135076537601232,-0.188452448025446,-0.202321320993953,-0.0617839354421401,-0.107887547666981,-0.103884436103851,0.0504459425236333,0.0312037960782911,0.0307966966317672,0.102146411396228,6.87678737978983e-05,0.00176711526384224,-0.00213688387320734,0.00851621536529828,-1.90307553483558e-06,-7.54684910897856e-05,-0.0103051694228101,0.000257497765464957,0.000427663671429878,-7.66151097345377e-05,2.81148377107751e-05,-1.56951884515981e-05,-7.89045992356769e-05,-0.000624506561125853,0.000432327199434196,5.27201570088617e-06,2.14494978203614e-05,1.22624844741457e-05,3.66473302705691e-05,-0.000239590344084127,-0.000610989677138792,-0.161736346453683,-0.149891148159321,-0.0402030036808075,0.0991669829457771,-0.00829567985093442,-0.000493465164421162,0.00522404516465903,-0.000414437883844758,1.77803615959948e-06,0,0.00194281695687319,0.00167179089728147,-0.135301001793635,-0.185899969982228,-0.0143479451839564,0.102277654381722,0.0588604631330241,-0.0254231040877622,-0.201149264783988,0.0453548058826209,0.000505483744324898,-0.0486309387228042,-0.0160044725860478,-0.0900332265477787,-0.0944638632742194,-0.00105468641675233,-0.031144787715764,0.00747636961322753,0.00172036232707245,0.00414318724454266,0.0222788095791003,-4.87658862875739e-05,0.13650912402838,0.00462932532883056,0.027519257201977,-5.59475042612737e-05,1.04939392198619e-05,-0.00140725719280938,0.00170365704425281,0.000190369103545151,-3.53365604312587e-05,0.000119966500007255,-0.0114189656007057,0.0498083354924488,0.00099895436682183,-0.00470298150975626,-0.00461974648699311,0.031268152448914,0.0340861952711426,4.58571021451053e-06,-6.76798733177754e-07,0.000144636689275413,-0.00851552966775346,0.000838093041320646,-0.00141432344982876,-0.144470931050194,-0.0259078012603023,-0.011565891919481,0.00150427605342526,0.000521603429215448,-0.00257002753392413,-0.00499240277501132,0.00170784719899953,-0.038352145942015,1.36948505991871e-05,-0.0187533165437422,-0.00101575598040156,8.15746024594846e-07,-5.89196954591268e-05,-8.27919376936908e-07,0,2.53688615771861e-07,-5.47198363408139e-07,2.99416181295866e-08,-5.66250606544863e-05,0.000279560970497608,-1.54142995852609e-06,1.46758892631754e-05,-2.55873452247762e-05,0,0,-4.6130753745575e-08,-9.03160347397482e-06,-7.12589712091148e-06,2.18787948749932e-05,-1.63499891437679e-05,3.64046604666e-05,0.00286963070557249,-0.152100209373455,-0.191654277031744,-0.148227464978737,0.000709643420803415,-0.000230071155154841,0.000196484647305661,0.000458721208154317,-0.00055865606348453,-0.00131275163417286,-0.000652596378531115,-0.000772269359144225,0.0652964813970626,-0.0010321315504326,0.00253925320355292,-0.00029499004445844,3.87582688392312e-05,-0.00141313166436858,0.00067239087395388,0.0061453958336228,0.000681593872330013,-0.00110418741653829,-0.00142740696084044,0.00517495919487083,-0.0230130746235632,-0.0198159573192919,-0.265868402603974,-0.187103649749559,-0.185919321475336,-0.214023215785449,-0.0809426985493835,-0.152157617089483,0.0203736966548959,-0.0720693604406957,-0.162992566633557,0.0812989424212196,-0.0801611743690512,0.0715646531596391,0.00849860937047721,-0.0293616232342739,-0.00714411232853057,0.00341046573227354,-0.000703638286863934,0.00280806411760537,-9.72990527242405e-05,2.84690679374787e-05,0.000447606436402895,0.000221576081659518,-0.00427133052167767,-0.0144643998613347,1.59223686846333e-05,0.00341051413290017,0.000303302424241889,-0.000105961585857399,-6.31041324230845e-05,-5.90140048673605e-06,-0.025704846190757,0.014904954972124,-0.00248999568871023,0.102147776543921,0.0367728322245782,-0.12081828130171,-1.33424442305645e-06,-0.000244072568717312,-0.000122332720768358,-3.03800013033215e-05,1.74521965619644e-05,0,-1.78209510063965e-05,3.29169400321768e-06,0.000289888434860587,0.00146451108301984,-0.000333641644430807,-9.36235177140413e-06,0.0747830002386897,-0.0479401825871457,-0.0362915808411395,-0.000421109504829464,-5.59020236126247e-05,-0.00122744370563693,-2.2701508229175e-05,0,3.90724873081203e-06,7.5174260523344e-06,-2.17368907909052e-06,4.38401170298946e-05,-5.62240717465996e-05,-4.99205470191104e-05,-7.67242386794265e-05,3.30162838212388e-06,3.17755433268005e-06,-0.0106339102873119,0.0130334947563402,0.000262215574118892,-0.0243301302224028,0.103775619194525,0.129736599247571,0.00153546645938378,0.00524988459691427,0.00172042987892926,-0.00355164241636327,-0.00167486875385094,-0.000622847666353609,-0.00595359902967164,0.000817649748211943,0.00461968936083384,-0.0282721668518374,0.0591825228348982,0.0776157703228526,-0.0175788378611915,-0.00022240458005553,0.000702327232969427,-0.000537866194832942,0.00101710507736185,-0.000884866780688737,-2.86813315261778e-05,-7.11828667884907e-06,0.000214707030459839,0.000118114470589422,1.54685771416133e-05,-0.00029428887098755,-6.93772714286421e-05,-3.60047117946736e-05,7.19326654841178e-06,-0.000884229383349485,4.91727024090311e-06,-3.02923678015407e-05,0.00256489683402711,-2.59878048906346e-06,0.00716471054146115,-0.00023311630379194,-0.0102645749171237,-0.00122342976412438,-3.30523821715665e-05,0.0150496191302694,-0.000222312690896722,0.00129239486733513,0.0839585337028806,0.048735343793293,2.26384545136497e-05,-0.000715125014979333,0.0046078634174465,-0.0148318705494343,-0.0186787038827249,-0.0316367887070657,-0.0187061444786662,-0.0534807072948151,-0.0055714287193082,-0.00504642700388435,-0.000624086740603386,9.73348930601161e-06,-0.197877830984788,-0.000819217318468205,-0.0246563757060953,-0.108731853181501,0.110154441826504,-0.152453228510253,-0.212146280711139,0.00431342801812888,-0.0114377626373793,-0.185283442554324,-0.139599400197628,-0.150436084756227,-0.131838824773493,-0.162788723974233,-0.132964013961374,-0.192078114787538,-0.170347779949039,-0.147571705428368,-0.178193639577088,-0.160685244034231,0.000426884089187683,0,3.97176771551717e-07,3.5415350928083e-05,7.42396790565808e-07,4.96033049769373e-06,-4.7805926040479e-06,1.26760278996747e-06,0,4.3786524644565e-06,-1.07354291313171e-06,-0.147682282311705,0.000373230754651898,-0.0133888282669878,0.00674814772740939,0.0023060618123771,-0.000393052873546472,-0.123647618910245,-0.16369203037813,-0.122917304536456,-0.221755637922158,-0.0829285279393797,-5.12107954305795e-05,0.000304664405926325,1.06936165841731e-05,2.25238049570885e-07,5.11230711017727e-07,1.09942020228193e-07,-1.9354273064843e-07,0.0036163826582104,0.001211308479016,0.000524656565697848,-0.00169241871896704,9.81409156005951e-05,-0.000293473966802394,1.76211761223424e-05,-6.94488447170818e-05,0.116816456290939,0.0124519495375895,-0.191266939450567,-0.128378855667743,0.13249671092629,-0.120310910839256,-0.219534147492201,-0.161883280389903,-0.148012144103248,-0.0520447585861133,-0.00509769676062827,-0.0520639344256362,-0.214062777534347,-0.000842976665345758,-0.00237719554168785,0.000282085147078107,0.00221043845044054,0.00523705659698734,0.00160910497577768,0.000160529931957095,-0.00145087013967293,-9.70808877235677e-05,0.00040075833089202,-0.000124453936196956,-0.00500975974909934,5.61530794632681e-05,0.000223749625195919,0.00479377171576347,-0.0288429770750332,0.0354521951047134,-4.90550970222435e-06,-0.000175744000196721,0.000373457836769492,-0.00115100019576158,0.00144222426073236,-0.00819200720429561,-0.000160200498828876,0.00132610274452331,0.00572773043278322,0.00275700904949538,0.0149331754137379,0.117777507945484,-0.0175682581333068,0.0536824316880871,-0.201383984266044,-5.82181689551748e-05,0.000101919390693337,0.00733342673525376,-0.194099857304652,0.00200571869705794,-0.00178433625774541,-3.94784737659549e-05,0.0322291661490557,-0.0349349849556826,-0.00581242343248327,0.137365868017011,0,0.0438267130715798,-0.000963520039510748,0,0,0,0,0,0.00176754600624306,0.00139186929229195,-0.00247233270730689,-0.00221550682071158,-0.0914664554890199,-0.110848996253998,-0.0799734016112683,-0.359714230598323,-7.00857881926107e-06,-0.000510875729761632,0.012037796553781,8.55982797131143e-05,0.0156184340604187,0.00129381486815007,0.00930700428609107,-0.0016361873025024,-0.00239014264477565,0.00248644751433074,5.65247254406248e-05,0.000279512460974841,1.63429619179876e-05,-0.0259188640769791,0.00758008122823832,0.200875199800532,-0.0710409803494411,0.0125079061089166,0.00862435463452099,-0.00313112330506075,-0.0171051951071733,-0.215112008939246,-0.089359763098157,0.0266354521524198,0.109496265104786,0.105946095541741,-0.0389338305018648,0.0343783547123844,-0.134580761813932,-0.221208909199842,-0.175249569320876,-0.164379087921138,-0.123032419323195,-0.123479038691251,-0.118317158728168,0.200056118195741,-0.275850757022092,0.0649593475145219,-0.000800356318692249,-0.321030039295583,-0.278240150855898,-0.0020434250631847,-0.000390192982429836,-0.0227696522929289,0.00286422603987353,0.138192785396266,-0.263979072169896,-0.314160351241151,-0.00863180448501422,-0.0551469337863646,-0.054512590657673,0.244139425627167,0.083723856661888,-0.06099799998123,0.0171397897462292,-0.0808353270750405,-0.0476543682395024,-0.253506466120694,-0.284065013461671,0.0189725805725609,0.000466894741440699,-0.207079058161397,-0.139939982997255,-0.081642601702013,-0.00736033390183453,-0.385013148242865,-0.23758104338516,-0.247312344770881,-0.315084952563489,-0.288870713422075,-0.219605504289613,-0.301930224353827,-0.216672508477217,-0.271891958797673,-0.220088242165487,-0.271857261678652,-0.195341719381558,-0.229450633854663,-0.214621395582172,-0.184143792979493,-0.349906939274503,-0.196085436448629,-0.262605837091928,-0.229503443163823,-0.213006840067034,-0.206358818942792,-0.228002412015197,-0.203480513207179,-0.178919052547452,-0.190683262737887,-0.189740820916323,-0.184298011524864,-0.178986283960313,-0.19417781352549,-0.188170272278895,-0.204603287828946,-0.217834897628263,-0.190479637601772,-0.00284870042617124,-0.220401782695521,-0.211253810256462,-0.175143492180784,-0.238143746068901,-0.216874211262178,-0.208057582003379,-0.0698036648645471,-0.149927428561645,-0.232090256633127,0.217039625048011,-0.210156450906312,-0.336604210683973,-0.0544339633988695,-0.0958571506264464,-0.000484775746288831,0.0701306742930915,-0.0420708129467398,0.112620839220608,-0.0389862692028066,0.0346989910478367,-0.0754758289234934,0.000816656925898123,0.00611277117942857,0.00739662943325245,-0.0133604749284899,-0.0031283421728271,-0.21553024337321,-0.201968302853375,-0.192794551396501,-0.229121636793452,-0.204915906193757,-0.25389639442268,-0.248774729997362,-0.25020514078506,-0.277019915554812,-0.21470785269375,-0.224058253103718,-0.272698334602316,-0.218027177939511,-0.250301146737872,-0.205746847679105,-0.224750019814833,-0.247957734151018,-0.373268944684533,-0.0453186752075318,-0.00330965591674708,6.40474752717426e-05,0.000512813563701392,-1.9115821790845e-05,-0.00358631323298688,-0.235763909678409,-0.199513946395827,-0.287277153875324,-0.267728174312194,-0.188555891876983,-0.213324169221797,-0.227812475675071,-0.290200871698908,0.00896433943461833,-0.0310408034394709,0.0579033640293163,0.00105439424089712,0.130126922259723,0.00408003235256707,-0.00746199097276541,-0.000868288500315221,0.000444353330726258,0.000170394379044467,0.00159044395038861,-0.180152754808519,-0.194808459463685,-0.19853987612058,-0.211606663494924,-0.214104054514056,-0.19625328969203,-0.21465558026268,-0.225955288263806,-0.203107041384009,-0.241714511873625,-0.261793142863393,-0.195230771661565,-0.240275616285409,-0.216158635627987,-0.20186263410787,-0.226182927674592,-0.23300293080042,-0.299356682171804,-0.200452067154308,-0.202540108102894,-0.213101600288083,-0.171312754077211,-0.255832191857369,-0.237475887352895,-0.235259744382016,-0.298261006713052,-0.270524655726035,-0.178349272962122,-0.308669261651685,-0.138243364767783,-0.264449410114844,-0.28904223166906,-0.228222917990879,-0.122899082085228,-0.135403337548616,-0.164955676056607,0.0666759789356413,-0.000201716073466853,3.61569469724652e-05,0.00118975626929536,0.000324201106254802,4.098770010472e-05,-0.000224416607520902,-0.000822269903239998,-0.18668904100971,-0.243156485968141,-0.285037087832404,-0.267752018696071,-0.314442538471433,-0.230614685574527,-0.210585178760141,-0.356330685827771,-0.305511995744914,-0.248549810952463,-0.15819643902023,-0.302771879720636,0.154294726288529,0.000703828519658016,-0.000721471715866494,0.00183347760525899,-1.5755987585418e-06,-0.000101947167626758,-8.66704505112042e-05,1.87930229287372e-06,-9.53397790371356e-05,-0.0002905557636314,0.00465066933822357,-0.196888650129877,-0.285407242019059,-0.190735143140903,-0.0656481808096162,5.35542046767831e-05,-0.0893145570875976,0.193112043463047,0.0136032196785745,-0.0390936865095951,0.160564441299648,0.106431978702886,-0.00011185180673825,0.0610815227802028,-0.0964183333823319,-0.0519114652100762,0.0606826079542505,-0.10921550771632,0.12880152190707,-0.0549367222036754,0.0116316800936662,-0.0229752807579496,7.74034760463481e-06,0,0,2.18252121882064e-06,3.7977796934621e-06,6.83004650322765e-05,-5.45895525579672e-06,5.70836866193425e-07,-0.000229661108789372,0.000383410356205292,-0.287038570316728,-0.244584940042491,-0.190348932138573,-0.324769358659425,-0.168657506350054,-0.152470643741853,-0.00129042028814779,-0.00264176005923917,0.00406844718815105,0.000360265563468789,-0.00101277457713705,0.000216067049185361,9.68321551676789e-05,0.000368419851213523,-0.000196181317030312,0.00507808646143385,-3.22861828464755e-05,6.08276255038347e-05,6.03664385365098e-06,-1.93412836897881e-05,-6.55647581270888e-07,-2.05144800015576e-05,5.2914357915371e-05,1.08243015837714e-05,1.01722322463403e-06,6.76975907733831e-05,-0.215036649669851,-0.203716356000439,-0.199219405030192,-0.295866345393298,-8.0692490251684e-05,-0.166948787665266,0.0314244060739467,0.0627441562838747,-0.116732764801168,-0.0674368918775974,-0.0609326287169499,0.00187002451797254,-0.0934585281538005,0.21607123395497,0.042284457879912,7.18754052373614e-07,1.93640531623851e-06,-0.266628474689616,-0.229506373781666,-0.204787208305491,-0.277047493530885,-0.310513538771682,-0.231718290635587,-0.258927107124401,-0.172612408736985,-0.333481334855942,-0.222558632438411,-0.240227405407137,0.000735343116079851,-0.0984362409302647,-0.303386146727566,-0.0412983607175649,0.199316183810929,0.00245111217444617,-0.0291006532729585,0.0838755250199803,-0.052873399449948,-0.00682789267049986,-0.18168247518069,-0.0588266109333906,0.00102909632477534,-0.00111287765329412,-6.30161559315571e-06,-0.00105228276226496,0.0147682235716773,-0.30251711189054,-0.196401587724743,-0.294297601230138,0.00363949302423429,-0.00644481388663216,-0.0290070734566373,-0.0300549668694428,0.000409335970920106,-0.0396374676253445,-0.269344659248468,-0.00133344074327269,0.0205334827090093,-0.00874924228312514,0.0468089938261289,0.00199952734752385,-0.0149948766060244,0.00206865475111303,0.15299331269121,0.0416205306209868,3.42158207293837e-05,0.0271900116179297,-0.000976171623750995,0.118993751317642,-0.00849129598373358,-0.010385165836423,-0.0234064838529893,-0.219514325697242,-0.272477345325786,-0.173768311686214,-0.161147804031571,-0.294233244588987,-0.321944930692715,-0.0985054935895999,-0.132087745707442,-0.174417051439903,0.0907910410694226,0.0546698412673437,0.0587163736773916,0.19476208936269,0.000123915827999149,0.0027394575379317,-0.00387324167851882,0.0157732833708303,-3.62287842840414e-06,-0.000130039593109536,-0.0189620826685325,0.000430905900234725,0.000787402873416961,-0.000154949429422285,5.63108719862896e-05,-2.84621979730744e-05,-0.000147334952461045,-0.00112886290198659,0.000855879541871162,9.15835104105531e-06,3.78292272414237e-05,2.32069682560318e-05,8.41042288078625e-05,-0.000503956253256988,-0.00120730874833394,-0.252104289186752,-0.2356681677334,-0.0632372330348324,0.181290785535692,-0.0154168696328937,-0.000877221149229768,0.00932178664693905,-0.00079246919357236,3.37333830988901e-06,0,0.0037686422145645,0.00332750078274884,-0.199386975160553,-0.285697370531477,-0.0215100246304928,0.185675455360836,0.128924333469896,-0.0454909317347869,-0.319080474895982,0.085316026338374,0.00102046161479609,-0.0749906910173444,-0.0293739172287378,-0.134192579019178,-0.108051111904903,-0.00193704944340639,-0.0559740040691695,0.0135599089604015,0.00317633148806424,0.00713250549106859,0.0423047507205654,-8.97909728574591e-05,0.245337472650012,0.00842492344535052,0.046881465364315,-5.71320890354558e-05,1.955913669346e-05,-0.00242832927894143,0.00277948451684676,0.000353609573900503,-6.52850337155012e-05,0.00022374949725789,-0.0193953155427164,0.120442448321634,0.00194568665101942,-0.00868902489559778,-0.00890459487565502,0.0594324091909631,0.0898313055559775,8.91106525422033e-06,-1.07514540091659e-06,0.00021366191751399,-0.0165886178985398,0.00166758520834266,-0.00251673408290678,-0.215693959410999,0.000795866943465112,-0.0214187452485581,0.00259682383392951,0.000948809551559232,-0.00397478304250068,-0.00912473785019122,0.003081745661855,-0.0700845432558031,2.46622719836119e-05,-0.0341140358224978,-0.00186403506229293,1.28012021802929e-06,-0.000105437765516516,-1.59198398259263e-06,0,4.60747660861436e-07,-1.06767969253701e-06,1.08628526536956e-07,-0.000106462403770079,0.000519075357537433,-4.33408281040951e-06,2.55786925808083e-05,-4.81679571175907e-05,0,0,-9.30182258679415e-08,-1.48284618099689e-05,-1.36175920667619e-05,4.09196995602642e-05,-9.9229780602022e-06,6.46407748556067e-05,0.00535593759641002,-0.214439766491902,-0.313661957309559,-0.234668649832521,0.00125884499728715,-0.000402051961795885,0.000334985168448073,0.000828282646573533,-0.000959421327349906,-0.0023867503919982,-0.00118547317247331,-0.00139499036226783,0.116394504861427,-0.00189133324692257,0.00456460092763875,-0.00056489331756009,7.10751934969281e-05,-0.00257623442414595,0.00120291996042956,0.0110407175663031,0.00124839353249319,-0.00201549136529382,-0.00254689143168642,0.0092963660048609,-0.042253212725971,-0.0346315991041604,-0.426864174976222,-0.295970291097718,-0.277402245451004,-0.343610532208243,-0.119008107470821,-0.220242073934628,0.04942304582975,-0.115513314925586,-0.246229920922699,0.144696663180137,-0.0724344856561995,0.140690278300963,0.0152559184697309,-0.052719513924022,-0.0126920379961505,0.0062672201056436,-0.00123386231520003,0.00508172629648898,-0.000170690011549996,3.96479312637307e-05,0.000790042781673098,0.000398413400322011,-0.00759601592788399,-0.0261373474595503,3.22731181329978e-05,0.00622565600499607,0.000553621927401332,-0.000192915281301645,-0.000115971352611048,-1.11075281460664e-05,-0.0463331315198973,0.029990101229109,-0.00320768007304389,0.184161611725951,0.0693436602880475,-0.132895288990556,-8.98984060200358e-06,-0.000438975228726037,-0.000218913974339883,-5.60443704913392e-05,2.95045651269186e-05,0,-3.25419276428079e-05,6.51663125073468e-06,0.000720585887770263,0.00215677917765827,-0.000630820099680536,-1.71048184745627e-05,0.139282995132919,-0.0423811714751639,-0.0609886398999165,-0.000750248413565769,-0.000100079302056318,-0.00221534600258441,-4.24230240132952e-05,0,7.37979860073627e-06,1.38472815169586e-05,-4.05511135729736e-06,7.90581294309259e-05,-0.000102258544459706,-8.94660577274065e-05,-0.000139677444185541,6.13243803150586e-06,5.69396308456312e-06,-0.0162281403370068,0.0227197553014862,0.000479778445673402,-0.0431050020123904,0.183924832711092,0.224594162329095,0.0027201684583493,0.00930574000349458,0.00312700716013765,-0.0062608299087296,-0.00296319093882736,-0.00112666427318411,-0.0108994865872273,0.00142615277863325,0.00831890075597937,-0.0500779743751465,0.111798944796835,0.14104646354526,-0.041310732310507,-0.000408907948795377,0.00128023938177539,-0.000985637887920943,0.00186337439387709,-0.00166665475001026,-4.50642264301922e-05,-1.36151326475133e-05,0.000407999156749485,0.000221621889776922,2.9827771963657e-05,-0.000585569973676359,-0.00013016066546176,-6.99155691263138e-05,1.31939553434412e-05,-0.002289563072237,1.51344758963478e-05,-5.99981561696113e-05,0.00493286666599717,-4.38644819146725e-06,0.013097549243599,-0.000366255304041862,-0.0206794919297742,-0.00247110580463484,-8.58830112083767e-05,0.0306732036149855,-0.000473530454645779,0.00266019499154868,0.156461939419724,0.094825521139853,5.49951580615931e-05,-0.00128397754772694,0.0109903676420637,-0.0280462508937474,0.0187196290647536,-0.0551266625461622,-0.0319630517480066,-0.057021078345033,0.0352401721529131,0.0307820590497802,-0.0011888598745127,3.43658899446449e-05,-0.307489715934179,-0.000228267117258991,-0.0456095091568064,-0.123347582903801,0.196105172546756,-0.22206740286705,-0.331573053771509,0.00797184220150723,-0.0193579897003097,-0.294616831054155,-0.219272849345747,-0.233210291693105,-0.212434909682146,-0.260600013570291,-0.21984175467351,-0.298533130791712,-0.278782641445467,-0.239810542439103,-0.282903852665714,-0.263193192939098,0.000915463050247737,0,7.03635346580866e-07,6.30836724343171e-05,1.85938416376081e-06,6.54575605368649e-06,-1.02117109575971e-05,7.20147530492978e-07,0,9.04958537517584e-06,-1.89955073958461e-06,-0.234617286698047,0.000676735407477171,-0.0241160076325468,0.0119947826350281,0.00398280368043128,-0.000710016997144543,-0.173005796181094,-0.239203714149995,-0.187593402081748,-0.354100166704553,-0.0763993132896101,-9.32874591619425e-05,0.000534449012943365,2.05156899045356e-05,1.23517236142898e-06,6.56408187482552e-07,2.30583740974853e-07,-6.67712762376555e-07,0.00667953050822373,0.00214616898058846,0.000945943743335289,-0.0029849003830934,0.000177289134619934,-0.000517130360430426,3.11703133834453e-05,-0.000122144825704361,0.20327523808917,0.0218446104350682,-0.295684687977484,-0.212481258831282,0.233501380714205,-0.199639352151762,-0.34408028336294,-0.25894528703857,-0.212385758474131,-0.0876711609669399,-0.00863324911901648,-0.0592957638325415,-0.335366360076374,-0.001553139719572,-0.00416924588861767,0.000489181598933557,0.00397107836751098,0.00927209690712168,0.00315944528239673,0.000326129403042864,-0.0026206184299329,-0.000110007541787602,0.000821219498985128,-0.000225203454614467,-0.00958288418235812,9.12015943227345e-05,0.000428548692052473,0.00862692046686858,-0.0518831711466319,0.0665479773043346,-7.13019104648196e-06,-0.000363050476735893,0.000629999946231408,-0.00218200541895974,0.00295642482474759,-0.0167714131943841,-0.000295629096880802,0.00250765365599932,0.0106018510288708,0.00496296417719587,0.0270167372703765,0.20654843900495,0.0164016443983456,0.09780167467348,-0.324700654227562,-0.000129196751116966,0.000194989286669159,0.0129635405376366,-0.302595865492253,0.00361884808700218,-0.00324696689398262,-7.38245964313507e-05,0.0517406012765355,-0.0598222709921621,0.0391087265643583,0.243341269667259,0,0.0880795024326624,-0.00164362230174077,0,0,0,0,0,0.00256732635365921,0.0020427360710248,-0.00359154282421147,-0.00321022543056775,-0.0863772187366317,-0.110423530916883,-0.0767011927944648,-0.493769836599641,-1.15056121187332e-05,-0.000739538436202057,0.0197153426063265,0.000132666446459567,0.0226805856668648,0.00184030833483309,0.0131630204176767,-0.00225081631029477,-0.0034001384198877,0.0036512440121451,8.0567653960753e-05,0.00165543426641994,3.27584305743649e-05,-0.0374727123405192,0.0109251907491979,0.293881565249237,-0.102043519436886,0.0202712196512127,0.0400711782112947,-0.00504550777059308,-0.0257388554346992,-0.292351576786662,-0.0800550530466809,0.0408244797186604,0.172105715211422,0.163960915166977,-0.0371620815141395,0.0507001589214003,-0.151396690597091,-0.290587432596702,-0.249263539504537,-0.175816173189064,-0.170260678889795,-0.160955396330566,-0.176071850424908,0.291571910763947,-0.367876178001773,0.0979705039815013,-0.00121314916917348,-0.437547435681814,-0.39036316829221,-0.002984930235518,-0.000395816420896747,-0.0342983322652777,0.00417001366291881,0.205620944413558,-0.356229853475823,-0.431153139313942,-0.0125146666332128,-0.0372100535490991,-0.0796620571836697,0.353193739107841,0.141393667187802,-0.0880626280407589,0.0249204011392331,-0.11706340682947,-0.0500557276718631,-0.346785775152274,-0.391139263605574,0.027950047572499,0.000680224582037453,-0.273372769398695,-0.204368570563499,-0.119714728395455,0.0129858212290377,-0.529678123107757,-0.326793024626253,-0.346153257968813,-0.433765834756334,-0.401171867951255,-0.30471238138448,-0.413017122530313,-0.295201710322438,-0.37948588169737,-0.311191556937566,-0.370356530505788,-0.27285856790094,-0.317339469500343,-0.301260677756408,-0.258395643127021,-0.478742766603491,-0.278541823379438,-0.365775857837181,-0.313414232111224,-0.299965994523551,-0.289371642672772,-0.321040024293366,-0.288700378111109,-0.258172488821113,-0.272118354488385,-0.271864344487396,-0.259644255070684,-0.256844324698587,-0.281841359924601,-0.269468719461049,-0.296721894492087,-0.312159699680672,-0.270978681200027,-0.00414939255106303,-0.296427838768297,-0.280504335248031,-0.251821629410912,-0.337379099976361,-0.305277356257781,-0.275990294116117,-0.105735786230392,-0.18546826580715,-0.305641491505073,0.314532096665841,-0.282507891995224,-0.457226410663389,-0.0854590884998271,-0.119940717067949,0.0432117355029202,0.105173740976701,-0.0488727588501376,0.179962193579576,-0.0570391956851416,0.0519402513416244,-0.109388084304994,0.00125500679124868,0.00886049074642772,0.0109885247643763,-0.0202502458858005,-0.00458798940262111,-0.309773157307713,-0.292487818850314,-0.273776581248562,-0.321634777335941,-0.289177116939844,-0.354754431536591,-0.348782082856849,-0.349371243314859,-0.374406297663887,-0.299088598801125,-0.315523927023101,-0.373212107768835,-0.310021351125912,-0.350828635026322,-0.288837631660524,-0.318028980197603,-0.344155355658822,-0.51382594529243,-0.0538914427323505,-0.00501469436173456,0.000133145179038273,0.000762592886298359,-2.7919127679948e-05,-0.00521440819155008,-0.331894022079054,-0.283485764733715,-0.397449206912052,-0.360903785976593,-0.267088270018738,-0.298770415602436,-0.308435622415371,-0.395975265335487,0.0192366218290656,-0.0462090458689831,0.0869258786887766,0.0015344791047161,0.19504718625348,0.00614171087499547,-0.0111133964560638,-0.00130581084647387,0.000645382347855555,0.000249563623489218,0.00242777890724353,-0.254221604815376,-0.277701519396933,-0.280557725054833,-0.295970174208077,-0.300976743292223,-0.266328861725315,-0.301666471515605,-0.312928648412842,-0.287842598560745,-0.334278730067464,-0.362477481779609,-0.270370346405862,-0.334618781838288,-0.301012902969871,-0.283510513865697,-0.318506726199666,-0.326406676065293,-0.414630699736985,-0.283424228061475,-0.278833177431326,-0.303040839218856,-0.245627368612194,-0.353372726902991,-0.332155588847168,-0.329785993603763,-0.405767716559918,-0.373775791962425,-0.232529368565742,-0.418346815597123,-0.183186737254388,-0.36181053153991,-0.394595062976428,-0.299409367462196,-0.159392852915826,-0.169373620560592,-0.165324756313674,0.101768283254312,-0.000305587299101106,5.30746673370922e-05,0.0017386793105301,0.000452393389757035,6.43838743966219e-05,-0.000339859670628416,-0.00126347603957149,-0.263115909583836,-0.340538464023848,-0.391263465018745,-0.361657763648366,-0.428630091893034,-0.313911300029392,-0.291693724420109,-0.484826380440733,-0.422781223401898,-0.336736104539914,-0.210894645320862,-0.410785347387418,0.228401454439281,0.00104237056573255,-0.00107669404129138,0.00275436652388079,-2.33005971411591e-06,-0.000145474769380859,-0.000127213197578881,1.79311218593504e-06,-0.000139151321033028,-0.000425751496293807,0.00702952873999591,-0.274613729164587,-0.389580069280825,-0.246664958603474,-0.0994555703914714,7.87282878191182e-05,-0.117562097498776,0.280142330209736,0.0494541764149426,-0.0463797345572658,0.237914576420542,0.170282710733076,0.032654457225151,0.0865988033784901,-0.0856197839142166,-0.0598973739243113,0.0918996022478493,-0.105314183541139,0.205717130570062,-0.0792622141384471,0.0361385454833673,-0.0346854492617296,1.02304773176333e-05,0,0,3.11339670106032e-06,5.58988484315625e-06,9.98598324745149e-05,-8.01885984414823e-06,8.45540731613568e-07,-0.00033618141506879,0.000564630005060276,-0.399011088844157,-0.344395207290818,-0.262670165418243,-0.448390039290743,-0.228938533313175,-0.212704042220358,-0.00261117996605341,-0.00371414110573249,0.00622313754270456,0.00053614968150185,-0.00152974284914968,0.000358050764518327,6.3230732977945e-05,0.000556836207773565,-0.000293353799551212,0.0076704167306623,-4.88499055158856e-05,9.11218171254191e-05,9.48289764803406e-06,-2.91106692646355e-05,-9.18457727018834e-07,-3.05520028389274e-05,7.84271287419274e-05,1.62174229305343e-05,1.38067461262093e-06,0.000102166269366812,-0.298695605435056,-0.287047343874616,-0.280508921047589,-0.404968957128437,-0.000122856029860922,-0.218128893306691,0.0416314565621563,0.124282456335847,-0.112439894465318,-0.0660735601678041,-0.0900090869943226,-0.0129463391714564,-0.0850737857974281,0.323519426123187,0.0649500549597422,1.03766082867964e-06,2.80039098226299e-06,-0.36403658367813,-0.313813014845547,-0.275716319791991,-0.378362726779189,-0.427251959306936,-0.311480159190826,-0.355668067007634,-0.225638793193683,-0.457119106834796,-0.295646544942798,-0.330860708243893,0.00107727700870166,-0.129390107557058,-0.414406261296865,-0.0175163131229394,0.28757353323142,0.00470842168203635,-0.0200194623840164,0.14004057914621,-0.04068754544035,-0.00977211407637604,-0.249268116359664,-0.0340613049701409,0.00163935930092004,-0.0016880554171592,-9.04795312135808e-06,-0.00154036316693612,0.0212377459147998,-0.412082804377295,-0.257026280126623,-0.394650602145486,0.00501151874472905,-0.0101134726227948,-0.0433503134592731,-0.0424740783869582,0.000590812160867646,-0.0577551937106702,-0.368284972053775,-0.00199227043223353,0.0327519240981988,-0.0134761188216982,0.0720386265069256,0.00309736519478401,-0.0228327580608407,0.00287115358973974,0.226179017188051,0.0626312008640848,1.36311059506036e-05,0.0731951627182162,-0.00142926882953236,0.18649862274855,-0.00617975266520942,-0.0156767472898614,-0.0300487949970992,-0.286283810064838,-0.356494320004017,-0.218206038288262,-0.17674489969694,-0.399748265183018,-0.441670083023255,-0.137126699431591,-0.148735860126492,-0.249131418246999,0.132876306743576,0.0773001050398644,0.088392960048011,0.293604095701421,0.000181390242941008,0.00364703632855671,-0.00567204769398564,0.0233660928955866,-5.43810763673209e-06,-0.000185271403617517,-0.0280361600295164,0.000603217158354222,0.00116306029231198,-0.00023922835396624,8.7017815324988e-05,-4.17175802471758e-05,-0.000219274338179786,-0.00164825640438114,0.0013121323675773,1.30565333912943e-05,5.4619677052157e-05,3.47815018807858e-05,0.000136431425409307,-0.000792081312358522,-0.00185033546002301,-0.342120992798193,-0.321175806860205,-0.0875834757407207,0.26682508672696,-0.022837866824019,-0.00125942862410989,0.0135065292700968,-0.0011929720265025,5.05970365726255e-06,0,0.00572371146837962,0.00512197612165079,-0.262127528035805,-0.384718464486914,-0.0302917843101016,0.27294788176067,0.207028961578955,-0.0663610452022897,-0.436940023013763,0.127791585233302,0.00157127921742356,-0.102369787023015,-0.0433962594054359,-0.178856339064037,-0.114320167164674,-0.00286413575054403,-0.0818199886233104,0.0199207392724583,0.00470603754563569,0.0102175394878003,0.0633784872418757,-0.000131646802809997,0.359338408936621,0.0123939015369388,0.0667191644102387,-5.23206167195464e-05,2.91351324090623e-05,-0.00347059194313901,0.00385467362696628,0.000525235856813955,-9.65482626364724e-05,0.000333383171090201,-0.027234459461138,0.199400396442513,0.00295433581760479,-0.0128612525373452,-0.0134621122319067,0.0891953138633913,0.15247485432504,1.35346953619645e-05,-1.44222713721339e-06,0.000277775863704098,-0.0252321756102751,0.00256037256472641,-0.00366257954523934,-0.285808870206291,0.0351183068646943,-0.031809587629859,0.00372602347669404,0.00139552533982975,-0.00534012197270974,-0.0134909124342037,0.0045202455426125,-0.103347982265635,3.60988107916565e-05,-0.0501944808758929,-0.00275293217069905,1.68025180346148e-06,-0.000153283577973065,-2.40030005140706e-06,0,6.73584620241573e-07,-1.62484332304233e-06,1.98743550689937e-07,-0.000158991361118901,0.00076987288070142,-7.56317782008858e-06,3.67394151018168e-05,-7.19831661674742e-05,0,0,-1.42216974367679e-07,-2.05950887255815e-05,-2.04940847560624e-05,6.0953347125461e-05,1.69508231002073e-07,9.38526026742251e-05,0.00800147967227363,-0.273812628640454,-0.436511652025939,-0.320872693766207,0.00182863473612434,-0.000581934434511446,0.000475763769819109,0.00121469231044377,-0.00136625724571858,-0.00351016929060106,-0.0017423209560901,-0.00204766410120769,0.169473844798663,-0.00279296206773588,0.0066782633596849,-0.000850959991405424,0.000104939332817735,-0.00379896801514856,0.00175640889190458,0.0161493792673853,0.0018462210319189,-0.00297614361620425,-0.00371241631786771,0.0136058970421235,-0.0625694291266225,-0.0499122851315378,-0.588074250043631,-0.404776519458579,-0.367222770664499,-0.473303720842496,-0.157348220715142,-0.2862016850185,0.0806204252334198,-0.160754286032668,-0.32819933651206,0.210574110430587,-0.0553183050056107,0.215283625570014,0.0223050903121403,-0.0770704738944597,-0.0184502341982798,0.00926799218745727,-0.00178144336866261,0.00745730183929047,-0.000246454504638584,4.97323533082032e-05,0.0011438752314501,0.000582717780617487,-0.0110476609621806,-0.0383429980563847,5.00607936704659e-05,0.00918304641330309,0.000815544747554949,-0.000283841460062869,-0.000171361154397333,-1.66469108673463e-05,-0.0678941598958503,0.0462914361230487,-0.00364841769201952,0.270136959297594,0.104021743028927,-0.131725772780792,-1.87253675475869e-05,-0.000642035532977903,-0.000319277032536088,-8.30507073542607e-05,4.17166088919321e-05,0,-4.79653734718685e-05,9.98650940367986e-06,0.00121214468020902,0.00278230832550484,-0.000947319403628556,-2.51951608730251e-05,0.20732037801353,-0.0311074347686812,-0.0884496798612848,-0.00109175925012778,-0.000146075657801219,-0.0032472808778578,-6.32664730024005e-05,0,1.10621988976909e-05,2.05042597326034e-05,-6.0424173336603e-06,0.000115803601976133,-0.000150419844808375,-0.00013063501401614,-0.000205657661005815,9.11518024040615e-06,8.31138906120084e-06,-0.0214640536270235,0.0327112302587276,0.000707954389271673,-0.0625987170731511,0.267560188107974,0.322522194582598,0.00394955272015405,0.0135162104032631,0.00460138054620884,-0.00906697361190826,-0.0042997152497059,-0.00165376110339094,-0.0160735850192694,0.00205469976106439,0.0121790577786585,-0.0727172980619363,0.167674461841693,0.207386056293042,-0.068847284638539,-0.00060473232648075,0.00188313974987948,-0.00145394226031224,0.00274924672703828,-0.00249723578175571,-5.98457510007643e-05,-2.05540516132744e-05,0.000613788474902725,0.000331593025258436,4.51735829756236e-05,-0.000900081108485657,-0.000194488008725755,-0.000106281619996939,1.95241108012333e-05,-0.00388764060843688,2.69455980762857e-05,-9.21013691202687e-05,0.0074654188514733,-6.19394967043172e-06,0.0192963001056694,-0.000496263006219781,-0.0319873974427767,-0.00382165718743875,-0.000146594550354618,0.0476622694188903,-0.000750107253180652,0.00415494413602359,0.233089325034233,0.144311481540647,9.1581487855122e-05,-0.00187306253684296,0.0181648137778267,-0.0421085752841345,0.0671219713022721,-0.0804860869781661,-0.0472980566136295,-0.0559169881537952,0.0870263161249031,0.0759267829979026,-0.00179022423474673,6.33970589273635e-05,-0.416212241526289,0.00078554802964085,-0.0677031915136846,-0.129602937570045,0.285414376379037,-0.288302392204444,-0.450166346304116,0.011828418459248,-0.0273111346451008,-0.403842850086679,-0.298601239807473,-0.315418575771569,-0.293206000903396,-0.358683923315382,-0.308103326203309,-0.404002103414299,-0.387679664782647,-0.332398507396775,-0.387101820177557,-0.366544928678758,0.00146260102425401,0,1.09913908810524e-06,9.18495162424634e-05,3.12939247768872e-06,7.72025065331436e-06,-1.62108739525973e-05,-1.54745785117259e-07,0,1.41542212801872e-05,-2.75581242425387e-06,-0.321373466788017,0.000990591749305035,-0.0353156010416498,0.0174458555989655,0.00568976130177629,-0.00104154088546263,-0.221145104606124,-0.312457885134239,-0.253256390243509,-0.486206216996068,-0.0598938910410034,-0.000137434515966645,0.000771634491137585,3.10220421320526e-05,2.45833999596077e-06,7.5487876442899e-07,3.63165118134028e-07,-1.22510494781235e-06,0.00989850372692382,0.00311683808042872,0.0013849328423159,-0.0043214360348768,0.000260161767101113,-0.000748912614966322,4.52120763157293e-05,-0.000176632737733067,0.292704274453981,0.0315518634220609,-0.398699348169751,-0.297859069882921,0.338438484153959,-0.280600226219252,-0.467788879215017,-0.355961988580904,-0.274154571040785,-0.124787065231128,-0.0135252623465187,-0.0638581710159031,-0.455875095780786,-0.00230284869254355,-0.00602738786056668,0.000701606126621623,0.00582029892687128,0.013463809264305,0.00483424407481318,0.000506184981369318,-0.00384935972456215,-0.000101537961442094,0.00127579992978604,-0.000330132053974606,-0.0144677177205316,0.000123731834750008,0.000646251866140378,0.0126481795945847,-0.0757974583368664,0.0995996659920853,-9.37149400373006e-06,-0.000564964929991641,0.000888385433401207,-0.00327297489084614,0.00458900749595174,-0.0260229693312055,-0.000437513281521482,0.00375574827906091,0.0157140417281245,0.00722968808572274,0.039733761285428,0.298249998357924,0.060530826426635,0.144130239245568,-0.44823597229154,-0.000208089323033956,0.000293701772878274,0.0188006629153941,-0.410353819913961,0.00530411157844744,-0.00478116502095298,-0.00011012412717638,0.0694738362121079,-0.0852919126185501,0.0940648124923291,0.353790235763621,0,0.135594930190745,-0.00233809350558183,0,0,0,0,0,0.00337826222501109,0.00270374957875211,-0.00472629117833493,-0.00421670831180193,-0.0760327636287299,-0.104834667094183,-0.0687395932110504,-0.627149651764133,-1.62469029459055e-05,-0.000970896223188122,0.0277415410670499,0.000181254243310624,0.0298354171891239,0.00239043198974871,0.0170349334228186,-0.00286068329976643,-0.00441725061608317,0.00483885650998666,0.000104753891996779,0.00319653752446195,5.04110822252718e-05,-0.0491778149408752,0.0143045881531812,0.388625088199445,-0.133357924766067,0.0283747363062871,0.0751848160044751,-0.00704024963534538,-0.0345962452800217,-0.369168560691519,-0.0642707242990053,0.0551339797239788,0.237012471794659,0.223655001715678,-0.0343112539678165,0.0673381923669455,-0.165193521205944,-0.358759870292858,-0.324039327860501,-0.181421703019762,-0.217763057012653,-0.197735292459778,-0.234862537511859,0.384542932267669,-0.458823035625659,0.131876416251407,-0.00163652356267205,-0.553533936421544,-0.502795515017886,-0.00394018180859061,-0.000383578681663796,-0.046103317933223,0.00549343311271532,0.274410368791282,-0.447704054959044,-0.547519257382231,-0.016442863745033,-0.0143597505410951,-0.105182856662932,0.463581237846786,0.201589967656076,-0.115415476036373,0.0328032146180167,-0.153687920829646,-0.0511901198318768,-0.439643378915192,-0.497876551637155,0.037083359692269,0.000896693573872169,-0.338765270213974,-0.269455092206073,-0.158493852824563,0.0356327456769329,-0.673794474267903,-0.415818546274862,-0.445251448289336,-0.552214823062677,-0.513462083176836,-0.389762761465649,-0.523452483330148,-0.373316206173113,-0.4872505650958,-0.402985388856303,-0.468132228100925,-0.350552835379128,-0.405019102472494,-0.38820827057243,-0.332984287372125,-0.606838141482702,-0.361772775452731,-0.468927039309794,-0.396772509178701,-0.387436517739784,-0.372672265112652,-0.414531744697762,-0.37465652966793,-0.338870035364286,-0.354552861487874,-0.35519064753602,-0.335434527092226,-0.335858348559499,-0.371314028870822,-0.35189324236609,-0.390672650193685,-0.407700127101725,-0.352292544101968,-0.00546819971757265,-0.371751751576425,-0.34862634029974,-0.329708990679163,-0.437464734094489,-0.394163878551025,-0.342775346544593,-0.142868827132473,-0.218997580011023,-0.377893677071814,0.413214523613644,-0.354273339121255,-0.576907985869766,-0.117564784575035,-0.143117080602777,0.0924412752966195,0.141048868467368,-0.0551320437923508,0.250123632107935,-0.0753717215836847,0.0695762250908649,-0.143723845129012,0.00170695778134416,0.0116418782055818,0.0146542506958637,-0.0273250772037722,-0.00607169776217244,-0.405363164055617,-0.384703150352712,-0.355540871076885,-0.414517315924074,-0.374017785037257,-0.455830929242321,-0.449165536654689,-0.448705365324121,-0.470673979214428,-0.383547837635142,-0.407468313931122,-0.473131054032608,-0.402973520318894,-0.45157267274412,-0.372256027980826,-0.412049534562063,-0.440371649347466,-0.653743299360388,-0.0617002188493506,-0.00679042191839354,0.000207663279674791,0.00101699981500525,-3.68545647976384e-05,-0.00686472563386729,-0.428457172975312,-0.368148590077286,-0.50743893018547,-0.453206272634023,-0.346279137814004,-0.384431251204676,-0.388378715818759,-0.501065001875336,0.0299649996465768,-0.0616968533519923,0.116758835748527,0.00202457080854089,0.261394469649043,0.0082546025300144,-0.0148430779724624,-0.00175403483564118,0.000849014748725487,0.000330016167727657,0.0032907761095301,-0.328718665800163,-0.361462201074674,-0.363074696451004,-0.380516093994258,-0.388328846311472,-0.336130694829825,-0.38903415983648,-0.399899874327011,-0.373344555515064,-0.426845242765016,-0.46315903248559,-0.345527996132712,-0.429046027440466,-0.385976616016824,-0.365472341168135,-0.41125556243807,-0.420013859672412,-0.529853252242732,-0.366940329925674,-0.354933146295918,-0.393867517116939,-0.320966748412116,-0.450857843069462,-0.4271252002929,-0.424568441189864,-0.512558732978865,-0.476915388995958,-0.28560766697459,-0.527153236350663,-0.227388376373044,-0.458615679820569,-0.49938435554824,-0.369302838217507,-0.195051835001913,-0.202021610188682,-0.154038911790644,0.137841012161104,-0.000412614395549736,7.02720479516645e-05,0.00229606880894149,0.000580006974339362,8.87527393256271e-05,-0.000458575420218902,-0.00171867331167149,-0.339976228935704,-0.438179081957798,-0.497167451172686,-0.454917799650248,-0.542053316430164,-0.396660018549021,-0.372713744609416,-0.612679987898605,-0.539886382928465,-0.424392933101911,-0.262984982803648,-0.518263581930529,0.304055590162896,0.00138732414121813,-0.00143777738015459,0.00369804245620319,-3.10330491296817e-06,-0.000189955840577129,-0.00016842750090229,1.61116317755119e-06,-0.000183605672646681,-0.000563170295668593,0.00947259190676866,-0.352436779490918,-0.49329131345888,-0.301358665874935,-0.134132439674905,0.000104237963627581,-0.145432959091287,0.368190049311792,0.0880605867856709,-0.0528723516260935,0.316736875036054,0.236310796901567,0.0698264358861497,0.112119015364901,-0.069055696480476,-0.0668054632837848,0.123915873859067,-0.0940778623409822,0.286061809200771,-0.103842638840331,0.0621540340886317,-0.0467122185860609,1.2715628316644e-05,0,0,4.04963917752445e-06,7.41353934952021e-06,0.000131905441485984,-1.06215805581426e-05,1.12545246044931e-06,-0.00044439990836401,0.000749080561404258,-0.511000174692535,-0.444718749453582,-0.334899784275832,-0.571768036651707,-0.288223633544186,-0.272713968955384,-0.00402458117946581,-0.00478857395397141,0.00844271795920864,0.000715887792913477,-0.00206041347045249,0.000507018417329097,2.04548141993475e-05,0.000750257351921918,-0.000392715417357895,0.0103379818907666,-6.59103569937011e-05,0.000122365318101723,1.30568319794097e-05,-3.91151815506668e-05,-1.1833787974741e-06,-4.08619841727151e-05,0.000104666213085823,2.17535538536535e-05,1.74601738178781e-06,0.00013755690471329,-0.382379060793932,-0.37083668018637,-0.362209973915904,-0.513787106586655,-0.000166071186067811,-0.268113341273108,0.0517280083647795,0.19009819513664,-0.103083568895685,-0.0628451870884297,-0.119507714244359,-0.0288076954935614,-0.0714163316500086,0.433083442532284,0.0882457774596821,1.36231912815885e-06,3.67492547754858e-06,-0.460982918300735,-0.397833983734115,-0.346215839234373,-0.479398369798312,-0.5438729797042,-0.390829095195204,-0.452287371310263,-0.277918362556337,-0.580519264154078,-0.36792872665756,-0.421404521949656,0.00142426549814641,-0.160005735416839,-0.525170470135537,0.0114182566886909,0.376992737921814,0.0068258034087316,-0.00915484813327122,0.199277828138463,-0.0250151400137354,-0.0130906424308791,-0.316767366679375,-0.00314503661946881,0.0022725907631294,-0.00227791531074014,-1.18195589004866e-05,-0.00203574357764507,0.0277747901688417,-0.52107283478025,-0.316479484004828,-0.494007497277589,0.00635862656038542,-0.0139129970663007,-0.0580224329690384,-0.0549275160987334,0.00077499551562838,-0.076155434469855,-0.466907703203971,-0.00266437065977422,0.0454292742249492,-0.0183359706490085,0.098051482211556,0.0042285054672196,-0.0308881814105156,0.00367042029207692,0.30080371082137,0.0841629221123709,-1.15406856647251e-05,0.123624221778962,-0.00188958292236452,0.256862518932025,-0.00361877415773777,-0.0211046856788394,-0.0368581165858006,-0.352073416322116,-0.439448241662451,-0.261259656590285,-0.187400338140885,-0.504886431611194,-0.561155481546936,-0.176084872471794,-0.161895325747554,-0.324911587782823,0.175563107516553,0.0998773383664539,0.11874154994001,0.395114206504919,0.000239730111764901,0.00452604350127112,-0.00749112908364705,0.03107955800051,-7.28926549889306e-06,-0.000240517050054934,-0.0372621449153178,0.000774057005176086,0.0015443512070071,-0.000325941809910797,0.000118766362236526,-5.51370997926706e-05,-0.00029251445477339,-0.0021722113202766,0.00178147611085993,1.69386770071247e-05,7.15141028996253e-05,4.65975207788667e-05,0.000190807995241608,-0.00108993796344413,-0.00251203870660817,-0.431790437725892,-0.406435276960618,-0.112090963451513,0.353523322700361,-0.0303755915411522,-0.00163852516795294,0.0177090186035224,-0.00160241882537401,6.78084616602478e-06,0,0.00773022645726175,0.00697227310283358,-0.324084971444731,-0.483199069622386,-0.0393294129864636,0.36159431387223,0.289210017377043,-0.0875331850928249,-0.554573389275475,0.171243690796497,0.00213495524969133,-0.129768487082801,-0.0576497787067792,-0.22335890275843,-0.117215310140199,-0.00380768210379264,-0.108031553744195,0.0263839379660464,0.00626108914270157,0.013334003549517,0.084842437771843,-0.000173918803948108,0.475429091241038,0.0164260127433901,0.0866735406697063,-4.4857936253181e-05,3.88983453942808e-05,-0.00451947143595774,0.00492646328217997,0.000699836456329196,-0.000128088631638187,0.000445169011873572,-0.0349451591204373,0.282391441840538,0.00398918774123589,-0.0171043504029534,-0.018125755857879,0.119577520560656,0.21860657146288,1.82821359173527e-05,-1.79276082383757e-06,0.000339335267130306,-0.0341020614847444,0.00347838229022876,-0.00482313210327736,-0.355258966648105,0.0729116015632382,-0.0423960114087005,0.00486650900215927,0.00184932116275124,-0.00667995390165077,-0.0179422417905665,0.00598057128279853,-0.137186234416796,4.77017357010897e-05,-0.0665333681696236,-0.0036566084200527,2.05218465040405e-06,-0.000201469053680285,-3.22734840389533e-06,0,8.88386768199105e-07,-2.19721473076507e-06,2.93825890655185e-07,-0.000212554810776019,0.00102482452516663,-1.10051451282016e-05,4.79562976130081e-05,-9.6278120406422e-05,0,0,-1.92053568967155e-07,-2.63368481064056e-05,-2.75189828764422e-05,8.1364819574825e-05,1.17572121822867e-05,0.000123408864644737,0.0107059802300112,-0.331859119308023,-0.559600839868695,-0.406751116906787,0.0024059944775636,-0.000764198129859154,0.000617073134809891,0.00160699834070085,-0.00177496872866286,-0.00465133942713681,-0.00230793960670654,-0.00271199460272003,0.223233164589969,-0.00370990205720479,0.00882264954950564,-0.00114258213264749,0.000139361265088784,-0.00504288732369741,0.0023179138970944,0.0213312484810804,0.00245521553503988,-0.00395464684551615,-0.00489385154218497,0.0179814585179239,-0.0832756817950938,-0.065344817885711,-0.748953789008622,-0.513267620904116,-0.456139055759498,-0.602811526042099,-0.195433325800745,-0.351104771138636,0.112809190420058,-0.206234383708831,-0.409353674014432,0.277326659160357,-0.0339051943710429,0.292393307872143,0.0294607837225508,-0.101789538556025,-0.0242795251235937,0.0123211822080913,-0.00233482783344854,0.00986883793080163,-0.000323017152967945,5.92820745549824e-05,0.0015016531935289,0.000769660499798675,-0.014540347865128,-0.0507382655673403,6.84045051637235e-05,0.0121925968017611,0.00108170805041955,-0.000376228960282248,-0.000227647865351797,-2.2307640799173e-05,-0.0897755992836883,0.0630679728243949,-0.00396870753896796,0.3575129581705,0.139522540489686,-0.123981368475831,-2.94433974376962e-05,-0.000847927186566731,-0.000420983540137244,-0.000110546730669911,5.39682675568892e-05,0,-6.36419754978924e-05,1.35487069570058e-05,0.00172967043139452,0.00337456482224251,-0.00127125622048961,-3.34110822211787e-05,0.276674181259849,-0.0172619993335162,-0.116653335732721,-0.00143740426782538,-0.000192699185407369,-0.00429470865948954,-8.45234275553775e-05,0,1.48225529585259e-05,2.72805079204776e-05,-8.06864392521883e-06,0.000153088606655568,-0.000199343418618499,-0.00017237443797466,-0.000272720079853085,1.21534789836874e-05,1.09643697646162e-05,-0.0265128736243767,0.0428034676270294,0.000939943059871367,-0.0823503136099911,0.352554966858181,0.421522179183391,0.00519451290702842,0.0177812714765967,0.00610187066679804,-0.0119061051621087,-0.00565308432742406,-0.00218974200494834,-0.0213256627032617,0.00269004166647665,0.0160952195828936,-0.0956429770142888,0.224822399429487,0.274746965428795,-0.0974454407355087,-0.000803857695397354,0.00249440023764883,-0.00192922507047279,0.00364873319854475,-0.00334642692049734,-7.37013585568516e-05,-2.7665478663807e-05,0.000824402770308083,0.000444035033857173,6.09077627686219e-05,-0.00122410486770039,-0.000260139597252104,-0.000143626760399333,2.59731612710115e-05,-0.00557064831843947,3.94852374125066e-05,-0.000125180524558586,0.0100630292194226,-7.99968086631928e-06,0.0255912177011668,-0.000623710546024481,-0.0436663548861199,-0.00521550777117782,-0.000210677440084515,0.0652243863305475,-0.00103746162439876,0.00570265802011836,0.311283747262735,0.195187379988086,0.000130013085676709,-0.00246974693906272,0.0256753859139727,-0.0564991399786761,0.121696317050192,-0.106220580418983,-0.0631081873833902,-0.0524829968684239,0.144556359665143,0.125875593927723,-0.00240644109379895,9.4441938466863e-05,-0.524239261886178,0.00198264726930556,-0.0902220123146421,-0.131931571832789,0.375832966211126,-0.35277214875088,-0.568047628819331,0.0157579056653924,-0.0352589513412287,-0.512739854240441,-0.377551485290239,-0.397086101673578,-0.373755836342989,-0.456669429835339,-0.396665738139134,-0.508677714207173,-0.496547692887656,-0.424867520605765,-0.490762536405397,-0.469967368326778,0.00203418763821756,0,1.5035834026294e-06,0.000120977291462442,4.46562890811685e-06,8.68518317392921e-06,-2.24449816709566e-05,-1.1854418497408e-06,0,1.94402832151284e-05,-3.62140962795083e-06,-0.407476581760284,0.00130728115307135,-0.0466717872145252,0.0229638567127635,0.00740330928588247,-0.00137789424656213,-0.268389022911368,-0.384611607200162,-0.31875958285605,-0.617911522841155,-0.0391002809747865,-0.000182325785542027,0.00101094756257369,4.17996238435549e-05,3.77724481932354e-06,8.3007442932744e-07,5.00701981634809e-07,-1.82024389549571e-06,0.0131795074528415,0.00409947415864942,0.00183033949733819,-0.00567171800406074,0.000344337870550192,-0.000983464595322596,5.93975113456016e-05,-0.000231660614420814,0.3832001231856,0.0413594384694601,-0.500676728518019,-0.38351812393992,0.444745651985551,-0.361954870468535,-0.590747786200796,-0.452800518057122,-0.3345922802612,-0.162088393706006,-0.0186542162305039,-0.0670621289460785,-0.575676576358356,-0.00306770331632582,-0.00790833226567215,0.000915551679536304,0.00770267039396986,0.0177106539955774,0.00655942513107199,0.000692171273326291,-0.00509991237928057,-8.52168974037359e-05,0.00174371544124885,-0.000436658320535447,-0.0194711327016732,0.000155365627690772,0.000868940066901728,0.0167384909034865,-0.10004087910369,0.133391085941458,-1.16011381473107e-05,-0.000772664294311184,0.00114715545492529,-0.00438712193989603,0.00626837400763636,-0.0355407518173444,-0.000581788351316195,0.00502921915037407,0.0209177136431106,0.00952057248531588,0.0526820968132546,0.390996572265785,0.109397482418527,0.191272642076287,-0.571648890337762,-0.000290678727356515,0.000394686950252241,0.0247088663027673,-0.517544922404665,0.00701492234134707,-0.00634137183614021,-0.00014717385900209,0.0867475878135681,-0.1109291809932,0.153098218532871,0.465841857010587,0,0.184402016764435,-0.00303685787417941,0,0,0,0,0,0.00419274309798233,0.00336798227514906,-0.00586641238100494,-0.0052270072503616,-0.0634787263623792,-0.0971408801766227,-0.0587634817986576,-0.760116747402148,-2.10680270572024e-05,-0.00120310710249544,0.0358872376726461,0.000230334886247903,0.0370190787682719,0.00294168730682087,0.0209114686602441,-0.0034687484765452,-0.00543658721707181,0.00603419781349719,0.000128986908713636,0.00479346915959219,6.85049662328883e-05,-0.0609338025683762,0.0176959712845684,0.484031510609192,-0.164772923893551,0.0365950988457703,0.111852765500285,-0.0090625416901034,-0.0435295257830247,-0.445629895194804,-0.0456063925115735,0.0695979872309506,0.302853469492284,0.284058516782946,-0.0308907714112969,0.084073286298782,-0.177577620873601,-0.426291573707216,-0.398893250965541,-0.184508604342272,-0.265098578504613,-0.234059166747145,-0.293855252910902,0.478043882392243,-0.5491950616706,0.16609623349805,-0.00206350039460379,-0.669169005965648,-0.615222556426411,-0.00490038771579634,-0.000364705920971767,-0.0580049275460225,0.00682253392468229,0.343671661842464,-0.538727990700375,-0.663494035440516,-0.0203851637713787,0.0105893805461183,-0.13082529027865,0.574399697685946,0.262832852078423,-0.142856927521495,0.0407188225790149,-0.190434621107955,-0.0516538999240313,-0.532123767440802,-0.604258637694159,0.0462691256954762,0.00111421209175289,-0.403590716362976,-0.33457829603319,-0.197333418202629,0.0592884238089311,-0.817540102763032,-0.50455073198026,-0.54428153651084,-0.67039029745618,-0.625587355508859,-0.474651283124206,-0.633492814224495,-0.4510335369723,-0.594850616638419,-0.494902135957073,-0.565420324984794,-0.428077127365547,-0.492400505938771,-0.475127933825812,-0.407486501333096,-0.734448764470183,-0.445149852993094,-0.571886511689953,-0.479661553872948,-0.474894496912354,-0.455930581098476,-0.508087754869588,-0.460743203509712,-0.420004591607658,-0.43724025729876,-0.438844946587425,-0.411214486487171,-0.415133081483462,-0.461323959148282,-0.434602783088179,-0.485171304484066,-0.503594328680402,-0.433786775642695,-0.00679288972846698,-0.446607903725662,-0.416136995515552,-0.407941847301184,-0.537758620377576,-0.483055816358418,-0.408983912614485,-0.180243329141154,-0.25143036232203,-0.449485224039382,0.512265905531274,-0.425590609176719,-0.696038930644269,-0.14985785928573,-0.165801891407922,0.14397590807509,0.177205779586126,-0.0609914946137958,0.321422299193538,-0.0937943829621538,0.0873379088401384,-0.178190816534877,0.00216348834829456,0.0144349397643497,0.0183444307381138,-0.0344620333231349,-0.00756311471548767,-0.501334120060528,-0.477416710084536,-0.437459845639594,-0.507347410489252,-0.458938967694254,-0.55674292807721,-0.549486964530531,-0.547907216267314,-0.56630864046564,-0.467796983385307,-0.499413989990665,-0.57258749831118,-0.496149110964944,-0.552233344019404,-0.455608717016118,-0.506224597278623,-0.536371165931096,-0.793211424603665,-0.0690018076510963,-0.00859099605764117,0.0002840403661671,0.00127255146899192,-4.58318896285401e-05,-0.00852221818117996,-0.525100370314507,-0.452961971322587,-0.617115804271906,-0.54500062125001,-0.425548748714721,-0.470015132796028,-0.467790165677022,-0.60570753932384,0.0410988179510975,-0.0772905735372568,0.146866694261231,0.00251894369299423,0.328192843773142,0.0103844000420122,-0.0185973289030445,-0.00220575168435108,0.00105345079105403,0.000410883813101902,0.00416236677616425,-0.403276583770712,-0.445461032023706,-0.445656254138023,-0.465024229936475,-0.475706107851528,-0.405671754419399,-0.476425875745599,-0.486770991083045,-0.459020806705733,-0.519278466246553,-0.563741976922264,-0.420538520843296,-0.523421662682779,-0.470864936348002,-0.447425885184046,-0.504055692119989,-0.513587809231508,-0.644978302774099,-0.450543738051647,-0.430811026978581,-0.484911093913856,-0.396567268509584,-0.548102592326794,-0.522072285070325,-0.519304214639026,-0.618888245363902,-0.57978964656945,-0.33811033814258,-0.635413138897485,-0.2711666185935,-0.554982102882499,-0.603675475341755,-0.438520040321759,-0.230226542330499,-0.233980327520555,-0.137566996799328,0.174238866268215,-0.000520681254421811,8.7557303141878e-05,0.0028561890912961,0.000707386628540075,0.000113441244251651,-0.000578371056204627,-0.00217862305773646,-0.416854661854082,-0.535806900372289,-0.602768677778938,-0.547764024678419,-0.655035058750574,-0.479027799394974,-0.453543346829679,-0.740084529848302,-0.656793273831426,-0.511598669444094,-0.31467673968451,-0.625343128563079,0.380314342853935,0.0017343693731738,-0.00180082273380596,0.00464932213241773,-3.88285437239695e-06,-0.000234846184186082,-0.000209853149050607,1.39918450889431e-06,-0.000228261346615288,-0.000701309177525035,0.0119374890072447,-0.430098913132787,-0.596602939663789,-0.355407759287724,-0.168902234481585,0.000129851239410542,-0.172981730265425,0.456549119929736,0.127794944482299,-0.0588612189042194,0.396036002731947,0.303148351222273,0.108846832164042,0.137780633679003,-0.0500806385960814,-0.0731835528254512,0.156200009928068,-0.0797219212549151,0.367776538051101,-0.128505560708473,0.0888166997254237,-0.0588450581065656,1.52042969971288e-05,0,0,4.9871030934491e-06,9.24731140481547e-06,0.000164106040922447,-1.32377286764626e-05,1.40697920759921e-06,-0.00055316605790251,0.000934569998148133,-0.622849759890126,-0.545104130615192,-0.406914628045473,-0.694895538511556,-0.346972617649587,-0.332418738770124,-0.00546880194864941,-0.00586363096282966,0.0106839979134271,0.000896906402808826,-0.00259565798931187,0.000658339940573133,-2.54310714460023e-05,0.000945350426815231,-0.00049280962788938,0.0130310306299284,-8.31515540994766e-05,0.000154005048542092,1.66748119493173e-05,-4.91958100785603e-05,-1.44958153242918e-06,-5.12663532895665e-05,0.000131165870618666,2.73380973836209e-05,2.1123376806248e-06,0.000173250626284815,-0.465888664188483,-0.454653050206534,-0.443942000768324,-0.622340077425486,-0.000209642064511091,-0.31751109356177,0.061914997149621,0.257590976228428,-0.0917924277393267,-0.0587865642989943,-0.14913299581383,-0.0448137813596956,-0.0555982515761479,0.543357442954757,0.111742457459339,1.68919432503211e-06,4.55288885405879e-06,-0.557616725666011,-0.481600357873534,-0.416355276800054,-0.580197874552103,-0.66032742914857,-0.469817411520505,-0.548727559818436,-0.329734630829263,-0.703703443727409,-0.439731889293768,-0.511801336646937,0.00177290976472817,-0.190308875823093,-0.635687017214979,0.0424906859223953,0.466798588499958,0.00907519352389071,0.00258529827841893,0.259796525892678,-0.00779338920128516,-0.0163545042559125,-0.384016107341187,0.0301944735337643,0.00291325580479313,-0.00287254913401122,-1.45990058899976e-05,-0.00253355047292972,0.0343328470420415,-0.629678875988027,-0.375322432228402,-0.592778893031561,0.00769639890015558,-0.017753965822529,-0.0728027666429394,-0.067384061210096,0.000960070340237877,-0.094650168709684,-0.565240911391151,-0.00334062859182661,0.058251865366715,-0.0232378906198572,0.124315222072856,0.00537010685477359,-0.0390152959695236,0.00446903772108591,0.375897644584675,0.105863754232254,-3.82707887155925e-05,0.175920508316142,-0.00235229363486865,0.328373702838219,-0.000768966256348829,-0.0265794158706699,-0.0435234679307127,-0.417340176801149,-0.521811537066772,-0.303620147565667,-0.195829238549486,-0.609745916193392,-0.680418513511575,-0.214935417819827,-0.173439505129659,-0.400785651539791,0.218445062363575,0.122599867100988,0.149328555207499,0.497632041214346,0.000298368401368047,0.00539841830994916,-0.00931607908718448,0.0388298396151236,-9.15146871157406e-06,-0.000295737459010269,-0.0465358526918127,0.000944304657086822,0.00192734800682404,-0.000413438855463926,0.000150846564282983,-6.86054729296271e-05,-0.000366155303752304,-0.00269762274621657,0.00225504483384636,2.0813387783921e-05,8.84336193656105e-05,5.8489117213855e-05,0.000245826260119977,-0.0013908742273085,-0.00317978515120789,-0.521148424844565,-0.491480109739878,-0.136475026016491,0.440568947703925,-0.0379557070809394,-0.00201612929888863,0.0219152418507277,-0.00201488335381711,8.51302188986368e-06,0,0.00975358273399415,0.00884073136811684,-0.385585800640288,-0.58131921752005,-0.0482351343671108,0.450684508773296,0.373073517983711,-0.108812028202346,-0.67197896348109,0.215015001590788,0.00270304461866766,-0.156972414636258,-0.0719785233311813,-0.267581089677459,-0.118618106799543,-0.00475667827488908,-0.134365698792539,0.0328816749799313,0.00782412421908348,0.0164587553537046,0.106448521594981,-0.000216473228682727,0.592274099226226,0.0204793417972313,0.106642336332386,-3.60341130862628e-05,4.87228285780178e-05,-0.00557077112684099,0.00599514419510754,0.000875418371278426,-0.000159672035525373,0.000557662885587213,-0.0426006987497874,0.366991133175638,0.00503341353510265,-0.0213710226334276,-0.0228236260001951,0.150163558059663,0.286147131174289,2.30717186462992e-05,-2.13795248732204e-06,0.000400094742721182,-0.0430452643094936,0.00440445768489232,-0.00598838058725915,-0.424230520048195,0.112171510314345,-0.0530455218151045,0.00600948812175861,0.00230548435864881,-0.0080072828351867,-0.0224191075013183,0.00744719721083725,-0.171219865216133,5.9360011880256e-05,-0.0829588084309486,-0.00456527320148083,2.41769978967905e-06,-0.000249731104290792,-4.06135582860645e-06,0,1.10396230733597e-06,-2.77476881027954e-06,3.90965277293947e-07,-0.00026645446815749,0.0012811095944287,-1.45279687197149e-05,5.91804996219861e-05,-0.000120731185437436,0,0,-2.42117073013346e-07,-3.20681568006851e-05,-3.45919010410292e-05,0.000101897331839043,2.38024908521674e-05,0.000153080349764764,0.0134294955282104,-0.389258036755401,-0.682709786884329,-0.4923404447308,0.0029860424311335,-0.000946877764595864,0.000758521973046832,0.00200112647087581,-0.00218458121279924,-0.00579833770907345,-0.00287652519807426,-0.00338048581514402,0.277210132184513,-0.00463205080032839,0.010976986847869,-0.0014359790596627,0.000173969411100796,-0.00629349676139656,0.00288198399564533,0.0265359698881462,0.0030677596585165,-0.00493887456513612,-0.00608038778753881,0.0223780324290466,-0.104106802221757,-0.0808255834402059,-0.909568703603003,-0.621517691508161,-0.544552088143241,-0.732120561617236,-0.233205378407305,-0.415424725071836,0.145475656471843,-0.251581273685616,-0.490015147429418,0.344365981422173,-0.0106364884516568,0.370487842035627,0.0366519968945173,-0.126635556436146,-0.030130649608725,0.015392323848219,-0.00288989886589224,0.0122922426018781,-0.000399818437408263,6.85239956768016e-05,0.00186072738461452,0.000957471195483498,-0.0180456297172286,-0.0631960625793587,8.69350653906347e-05,0.0152195797210901,0.00134930645548127,-0.000469113298551675,-0.000284232922652437,-2.80063120973701e-05,-0.111753528720499,0.0799892459279857,-0.00425089828244414,0.445333121797155,0.175301734704426,-0.113380323409296,-4.0482651106537e-05,-0.00105473413802763,-0.000523136794483029,-0.000138203383365614,6.62303824387779e-05,0,-7.94055780278321e-05,1.71422851597811e-05,0.00225617179717981,0.00395545379807176,-0.00159772202279842,-4.16699038710172e-05,0.346471658487647,-0.0023203274221772,-0.144886759027821,-0.00178440073040563,-0.000239523209803048,-0.00534721902487947,-0.000105916805476906,0,1.86088156431264e-05,3.40957752800148e-05,-1.01078591743978e-05,0.000190551383987877,-0.000248523502468498,-0.000214299719621238,-0.000340145990512075,1.52112736097193e-05,1.36294870159912e-05,-0.0314930221286673,0.0529276750268033,0.00117322230588234,-0.102189497639825,0.438057904936508,0.520890293277893,0.00644465808237265,0.0220643968544084,0.00761175525897908,-0.0147560847236676,-0.00701199266033739,-0.00272883267630607,-0.0266041466287033,0.00332759717980777,0.0200304291121888,-0.118664076198337,0.28242203651585,0.342454679572045,-0.126258773630102,-0.00100411717583426,0.00310843786849533,-0.00240686999517592,0.00455286788440341,-0.00420179846325536,-8.72364768390083e-05,-3.48338369943263e-05,0.00103661072535055,0.000557278909209304,7.67702685359021e-05,-0.00155125189033708,-0.000326229341303316,-0.000181294937426389,3.24612924779704e-05,-0.00728248664727186,5.22646236354607e-05,-0.000158580549917717,0.0126819443981214,-9.80372884278508e-06,0.0319183173308213,-0.000750201088265925,-0.0554706249612957,-0.00662361801926236,-0.000275861005344983,0.0829785933128744,-0.0013284329133298,0.00726804468464436,0.389978304448141,0.246538794018097,0.000169064411017201,-0.00306932421859847,0.0332964612587756,-0.0709953961165974,0.178927748687328,-0.131915150241995,-0.0788394385142686,-0.0480861994734215,0.204543697788529,0.177881770120739,-0.00302776544665569,0.000126186945794669,-0.631820994797249,0.00324230551307548,-0.112888167346623,-0.132429857340123,0.466602532059852,-0.416411910196788,-0.685464324816859,0.0197129192291828,-0.0432111017292561,-0.621323372291044,-0.456187747665566,-0.478307539443521,-0.454042661662758,-0.554460471748787,-0.485147020326179,-0.61286256428967,-0.605286693206089,-0.517124201223222,-0.59404633776514,-0.573232733751356,0.00261295288671803,0,1.89970561738822e-06,0.00015021671406328,5.82379457454823e-06,9.57603655297829e-06,-2.87550474364654e-05,-2.26993387689361e-06,0,2.47863971665096e-05,-4.48970908767275e-06,-0.493152460881153,0.00162472949116221,-0.0580755554991471,0.0285023840300161,0.00911931606448776,-0.0017156919692952,-0.315027763561703,-0.456170909636288,-0.383922069018493,-0.749317329836888,-0.0164120434828628,-0.000227454713342857,0.00125086884059605,5.2666752327418e-05,5.1283719369033e-06,8.97218278424247e-07,6.3986183524689e-07,-2.42804028970947e-06,0.0164826313295858,0.00508586136496514,0.00227793449546987,-0.00702624561074133,0.000428921720286709,-0.00121891239815362,7.36227638896196e-05,-0.000286847339167697,0.47406475046121,0.0511976776565378,-0.602020353962969,-0.469119424259255,0.55149731797162,-0.443258891879073,-0.713251353817836,-0.549482082285997,-0.394310868801839,-0.199202298228773,-0.0236620227220217,-0.0696009393038055,-0.6950524675623,-0.0038373929064652,-0.00979647444123402,0.00112990844360224,0.00959631213594683,0.0219741308762542,0.00830141915169096,0.000880078375915868,-0.006357884756523,-6.61122030213602e-05,0.00221643115374365,-0.000543687310539667,-0.0245162371537548,0.000186615870212115,0.00109329035075481,0.0208521976384915,-0.124398124556436,0.167441384580872,-1.38285059696409e-05,-0.00098223526665563,0.00140615883012799,-0.00550897982407908,0.00796293603094051,-0.0451452528047571,-0.00072682125037082,0.00631082879657113,0.026152052605862,0.0118207849775104,0.0657070603246516,0.484092382024087,0.160289203014964,0.238687686227456,-0.694883238872473,-0.000374627593717381,0.00049644288845947,0.0306401486236125,-0.624341285930106,0.00873415038212674,-0.00791023536126229,-0.000184481149712456,0.104003728487748,-0.136611836873613,0.213723416711721,0.578441779039712,0,0.233633864933339,-0.00373695506836197,0,0,0,0,0,0.00500799196123848,0.00403292630597866,-0.00700783381347643,-0.00623818693052714,-0.0503044996677244,-0.0888751524496729,-0.0482423330375135,-0.892939565064391,-2.59058440885025e-05,-0.00143550635617594,0.0440606795429143,0.000279523160734132,0.0442088889705689,0.00349319104733955,0.0247889942833922,-0.00407637227854818,-0.00645640902494161,0.0072313142062532,0.000153231917330673,0.0064029242122988,8.67061905643116e-05,-0.0727016212824628,0.0210903650428023,0.579612016497551,-0.196210646675396,0.0448427497742431,0.14896232232139,-0.0110912672745806,-0.052480266961639,-0.52195445494351,-0.0261015678102679,0.0841309813426524,0.368955273443115,0.344673491889317,-0.0272744374813067,0.100828012833621,-0.189503869309098,-0.493603340047222,-0.473721165289976,-0.186852818189411,-0.312325321213719,-0.270213905354049,-0.352861246000183,0.571680545180799,-0.639368484779417,0.200390978883898,-0.00249132240856466,-0.784669495264463,-0.727610847875573,-0.00586185973600933,-0.000344152850209039,-0.0699300061188645,0.00815290805766825,0.413047166470518,-0.629590738394672,-0.779330207218587,-0.024330559643037,0.0361433557315265,-0.156495500529744,0.685315115792187,0.324380715843254,-0.170317467331597,0.0486417741053748,-0.227208255389267,-0.0518833920463156,-0.624441940919161,-0.710482880287179,0.0554671969256103,0.00133197172267694,-0.468204924271869,-0.399671634528365,-0.236138153472817,0.0832526091207707,-0.961148890985179,-0.593138152509671,-0.643242273778475,-0.788438032804168,-0.737618821604723,-0.559455702583937,-0.743393150322929,-0.528575940855326,-0.702338248472574,-0.586802664548016,-0.662523878773885,-0.505484150369815,-0.579640669829492,-0.561994394465055,-0.481899333550407,-0.861882587517603,-0.528514025441018,-0.674743301839222,-0.562354147645056,-0.562283244902882,-0.539129323069938,-0.601623370102109,-0.54681376119253,-0.501206779646749,-0.519946831879945,-0.522534635771149,-0.486934553371469,-0.494412453821821,-0.551414061104545,-0.517333282328823,-0.579753254316207,-0.599538978967201,-0.515282530944543,-0.00811890674084932,-0.52129231670572,-0.483448797460377,-0.48621897682591,-0.638064763896941,-0.571891546207868,-0.475011420918443,-0.21762881232856,-0.283481008936937,-0.520859851217732,0.611396254387499,-0.496733861506844,-0.81497781243433,-0.182149742620069,-0.188316947233649,0.196163298097762,0.213428325583605,-0.0666952410711081,0.393034109623496,-0.112237136306712,0.105126597285689,-0.212685649984966,0.00262106750083168,0.0172308708987458,0.0220401858209721,-0.0416132413773035,-0.00905622624797978,-0.597355713276557,-0.570203237164663,-0.519368112987451,-0.600103151613224,-0.543833906541391,-0.657537224202597,-0.64972878425011,-0.647015071338124,-0.661728035619516,-0.551919409799599,-0.591302280450456,-0.671858280223051,-0.589332023968179,-0.652823017631722,-0.538885121448298,-0.600395609997397,-0.632246065028053,-0.932514565915729,-0.0761104711792356,-0.010397130482615,0.000360845805104834,0.00152825488907152,-5.48183426077172e-05,-0.0101813138081806,-0.621732793613654,-0.537775681329712,-0.72664052212042,-0.636618794314407,-0.504782452433662,-0.555529497685286,-0.54698260650675,-0.710188198876873,0.0524030733617874,-0.0929085400710116,0.17703659533974,0.00301454244561378,0.395089248907831,0.012517999561022,-0.0223567541726428,-0.00265824270860068,0.00125805713944306,0.00049184367912534,0.00503588903907889,-0.477814730202224,-0.529487517146963,-0.52821267665292,-0.549485637368384,-0.56303275645453,-0.475090553513978,-0.563784713323141,-0.57358064330223,-0.54469706154762,-0.611629910796014,-0.664266262710717,-0.495459277932989,-0.617754447458965,-0.555693066315043,-0.529333228004917,-0.596830131108633,-0.607115579624108,-0.760052080918138,-0.5341279039461,-0.506582508349472,-0.575965869298068,-0.472187686370439,-0.645211115205858,-0.616966732998556,-0.613977882858499,-0.72505528862978,-0.682526401105327,-0.390417914751719,-0.743476027206088,-0.314802243407714,-0.651169956502846,-0.707784101732792,-0.507508613029544,-0.26523454419855,-0.265706288760557,-0.119607232584195,0.210710722551632,-0.000628973413553021,0.000104861396484202,0.00341691526222792,0.000834712749953343,0.000138198387941755,-0.000698404806644624,-0.00263966589158572,-0.493686686957286,-0.633397300357259,-0.708236087401053,-0.640452496224289,-0.76786830759655,-0.561247756546125,-0.53427544954236,-0.867319506796026,-0.773609710906561,-0.598610335973983,-0.366222383060223,-0.732263480447715,0.456737358884925,0.00208189013224755,-0.00216436357596932,0.00560233397216646,-4.66378685647528e-06,-0.000279847786471767,-0.000251324139873272,1.18103825222466e-06,-0.000272960281589627,-0.000839608027547294,0.0144074345208452,-0.507655935667625,-0.699740580188508,-0.409236402249282,-0.203645014647655,0.000155487031914797,-0.200401270404381,0.544976256014577,0.167859285888297,-0.0646619489864595,0.475442328771064,0.370188404767803,0.148388313652355,0.16351425510955,-0.0304142761737457,-0.0793874562682989,0.188543972574699,-0.0645274990214259,0.449862090634725,-0.153187820017377,0.115676865621202,-0.0710019526157533,1.7694355121643e-05,0,0,5.92473629785446e-06,1.10833023016558e-05,0.000196340595533503,-1.58567477825921e-05,1.68884490557072e-06,-0.000662053642243784,0.00112028834445603,-0.73461718076225,-0.645460299405061,-0.478814452975695,-0.817912457125941,-0.405552968935807,-0.391993783235354,-0.00691997801582066,-0.00693886353428879,0.0129301970902434,0.00107821634449101,-0.00313194128375499,0.000810193198052227,-7.20152179703732e-05,0.00114082399149362,-0.00059307332908435,0.0157298544418192,-0.000100437467001924,0.000185755499706652,2.03031389006198e-05,-5.92932593298392e-05,-1.7162281664749e-06,-6.16923811048784e-05,0.000157726892636108,3.29336208195784e-05,2.478879176569e-06,0.000209011366308613,-0.549296620961146,-0.538428470970233,-0.525639615288398,-0.73077765669503,-0.000253294396837027,-0.36671809199818,0.0721565806416588,0.325494772804097,-0.0799771689572895,-0.0544697494983748,-0.178784797020817,-0.0608063365837192,-0.0392013349396164,0.653797978841586,0.135281559051466,2.01663722761307e-06,5.4316275923635e-06,-0.65412832598264,-0.565251864128328,-0.48634806890143,-0.680892659803744,-0.77670034211175,-0.548640490803381,-0.645074948261566,-0.381375250583875,-0.826794193803486,-0.511357140728231,-0.602121214210297,0.00212192998433469,-0.220485225718742,-0.746088228117606,0.0741445456217255,0.556692675220799,0.0114033353602367,0.0146109191522024,0.320668167509393,0.00989482162720552,-0.0195577281885994,-0.451148374881869,0.0641512771665966,0.00355549306669041,-0.00346821007451453,-1.73801619854504e-05,-0.0030319178100335,0.0408954538104848,-0.73813743700402,-0.433965176005449,-0.691338532218794,0.00903215769477521,-0.0216034685934254,-0.0876069695351015,-0.0798397149847694,0.0011453452060696,-0.113166639727111,-0.663443734033714,-0.0040177461232907,0.0711045766624096,-0.0281486399742605,0.150631451576779,0.00651387066001844,-0.0471580374096376,0.00526773720931324,0.451094556162662,0.127601026963929,-6.53422783551957e-05,0.22873414374278,-0.00281555410272122,0.400183593488732,0.00220351994179038,-0.0320649951478412,-0.0500984862676007,-0.482418706948215,-0.603953528648938,-0.345742159536909,-0.203579451970032,-0.714491747657236,-0.799586688998536,-0.253698711464498,-0.184475786246875,-0.476608443280743,0.261370885914673,0.145399798816628,0.17997414363194,0.60040741983728,0.000357078552003319,0.00627031586415549,-0.0111422521702128,0.0465878430413431,-1.1015988564018e-05,-0.00035095149428785,-0.05581954696818,0.00111442479859753,0.00231069987374148,-0.000501103066685855,0.000182993030209861,-8.20840130416236e-05,-0.000439879092732966,-0.00322339842444263,0.00272951258734057,2.46868600198826e-05,0.000105357790158629,7.03963961809499e-05,0.000300975794491068,-0.00169244928528134,-0.00384882070506587,-0.610363992332926,-0.576426747302221,-0.160783550978714,0.527687299980743,-0.0455460633477599,-0.00239346256628347,0.0261225422850522,-0.00242801463265438,1.0247519369893e-05,0,0.0117805881553457,0.0107130701877194,-0.446916279323176,-0.679294070411645,-0.0570520207475381,0.539875258442281,0.457384163080147,-0.130117301075506,-0.789277943641486,0.258856625103908,0.00327223751432516,-0.18407793242695,-0.0863245740212766,-0.311671188438167,-0.119563548635147,-0.00570693231583335,-0.160728799268393,0.0393875693753523,0.00938894151165575,0.0195847898994972,0.128091791368487,-0.000259140451683713,0.709305536073925,0.0245376776905847,0.126607913877735,-2.67624780557762e-05,5.85612479809696e-05,-0.00662274225065827,0.0070625988438882,0.00105123079660542,-0.000191257343939995,0.000670318822319789,-0.0502449292639386,0.451979390733815,0.00607977056131294,-0.0256429219104186,-0.0275288002487805,0.180794217908329,0.354054708806832,2.78704624651402e-05,-2.48219220174669e-06,0.00046071187265282,-0.0520041428038927,0.00533222210968563,-0.00715469754958655,-0.492999930162635,0.151859545211525,-0.0637090774542773,0.00715265860247587,0.00276220323922398,-0.00933069124104848,-0.0269008597006398,0.00891502621293571,-0.205299571317883,7.10311111177301e-05,-0.099404364796794,-0.00547512631487041,2.78268254197729e-06,-0.000298008846270668,-4.89700940029936e-06,0,1.31974906697541e-06,-3.35345345010719e-06,4.88651502399284e-07,-0.000320426484316557,0.00153768572438846,-1.80691981243569e-05,7.04053248717009e-05,-0.000145218658410682,0,0,-2.92250609328803e-07,-3.77968138758513e-05,-4.16751298750415e-05,0.000122455601725404,3.59385868493308e-05,0.000182778748685121,0.016157193307086,-0.446430599814854,-0.805797234391651,-0.577801230757848,0.00356676674309399,-0.00112953879550946,0.000900001039314823,0.00239563835843895,-0.00259451134607051,-0.0069466750826965,-0.00344581506169987,-0.00405000178787569,0.331235335814411,-0.00555543145428625,0.0131335497333092,-0.00172978507820858,0.000208621430625365,-0.00754556824271285,0.00344663129352179,0.0317457030138757,0.00368107995791684,-0.00592436473670921,-0.00726808552808139,0.0267792703003523,-0.124965416227128,-0.096317490996554,-1.07008307803062,-0.729671778088971,-0.63277943312846,-0.861338251993238,-0.270837683836864,-0.479528740299004,0.178297210103419,-0.296842751319789,-0.570493417154601,0.411471218812345,0.0131840322332485,0.448836549838002,0.0438514095955386,-0.151512109661006,-0.0359864189985775,0.0184677384093954,-0.00344529721587224,0.0147183656363104,-0.000476668572758361,7.76578504938113e-05,0.00222010652557325,0.00114548046504658,-0.0215535748302698,-0.0756681133063412,0.000105507311945253,0.0182505638408459,0.00161724655027812,-0.000562116163345692,-0.000340888538668113,-3.37130292302716e-05,-0.133751324641247,0.0969387130863825,-0.00452574633391352,0.533250783839601,0.211144523882617,-0.10195126524366,-5.15855809634458e-05,-0.00126174627582636,-0.000625395685014492,-0.000165896741927386,7.84945596897329e-05,0,-9.5190015486817e-05,2.0743245898053e-05,0.00278472055578145,0.00453391647889237,-0.00192477017405006,-4.99391550364467e-05,0.416373583528506,0.0129486246637008,-0.173063640468902,-0.00213171508000608,-0.000286391521055947,-0.00640088393399689,-0.000127341522057646,0,2.2401073746017e-05,4.09199404255032e-05,-1.21500898430734e-05,0.000228054863204709,-0.000297763664129187,-0.000256267068990937,-0.000407656607214244,1.82738293283576e-05,1.62975018387222e-05,-0.0364572262078934,0.0630590394759029,0.00140680518833467,-0.122049748508096,0.523693780010222,0.620346753724397,0.00769602543480842,0.0263517385629349,0.00912402610959474,-0.0176085904970399,-0.00837218413782,-0.00326869150394077,-0.0318890659923463,0.00396565758305312,0.023970217392254,-0.141707548564469,0.340132161543284,0.410245823547127,-0.155090289698727,-0.00120465276942225,0.00372314798524187,-0.00288509323351255,0.0054581425227468,-0.00505856058235102,-0.000100706871053079,-4.20147268152851e-05,0.00124917179883918,0.000670697731109496,9.26608824503488e-05,-0.00187906252139934,-0.000392418035332893,-0.000219033298795601,3.89584093271482e-05,-0.00900048108570533,6.5092038747942e-05,-0.000192049195166388,0.0153054661110132,-1.16073911902841e-05,0.0382529777848619,-0.000876506122737696,-0.067302408036514,-0.00803473346580287,-0.000341270829791519,0.10077432178285,-0.00162018109828365,0.00883723656349158,0.468779909212588,0.297997373710282,0.000208247131157436,-0.00366967474983674,0.0409404150340359,-0.0855142708806017,0.236883327314511,-0.157560247283778,-0.0944827589767017,-0.0434161834272152,0.265209485934058,0.230454581708945,-0.00365025440663713,0.00015808596489184,-0.739236265844676,0.00451561479575866,-0.135589820332487,-0.132350114280774,0.557451402849902,-0.479793998784439,-0.80270768647057,0.0236741879734033,-0.0511669230583651,-0.729767252931024,-0.534688947949044,-0.559335726086201,-0.534206012052287,-0.652149376078246,-0.57354247848491,-0.716867600331053,-0.713953846135448,-0.609272015416214,-0.697183247873522,-0.676396407592244,0.00319296366911339,0,2.29138347812661e-06,0.000179480408005274,7.1865047996594e-06,1.04508295929313e-05,-3.50806709467211e-05,-3.36579974716851e-06,0,3.01452734636512e-05,-5.3585876876066e-06,-0.578682062357077,0.00194233244766684,-0.0694894064015656,0.0340453524868007,0.0108361536139221,-0.00205378855021449,-0.36143163413448,-0.52751639912545,-0.448924191205936,-0.880604310054186,0.00686103819804758,-0.000272635360968394,0.00149092014433624,6.35533469119876e-05,6.48629649062454e-06,9.62672337031569e-07,7.79364380950083e-07,-3.03846441310498e-06,0.0197910978640198,0.00607307449384576,0.00272604995051075,-0.00838173230649015,0.000513592819108305,-0.00145456360698485,8.78560386168549e-05,-0.000342068239901684,0.565018220796161,0.061042588296671,-0.703134231687606,-0.554652867164512,0.658348691137829,-0.524486402942567,-0.835591998818067,-0.646094804051274,-0.453773631327125,-0.236206849521007,-0.028588206052149,-0.0719259170626323,-0.814277688346487,-0.00460811114131587,-0.011686180604775,0.001344344552276,0.0114925732499921,0.0262409694857345,0.0100471440977487,0.00106839314993707,-0.0076175966078776,-4.63202851971232e-05,0.00269034367965273,-0.000650819571403135,-0.0295714880707279,0.000217750486881992,0.00131801417389472,0.0249713730496154,-0.148782525235805,0.201554489985459,-1.60575518406088e-05,-0.00119220180315189,0.00166524137506764,-0.00663256709671277,0.00966075603955326,-0.0547684983640414,-0.000872016339847915,0.00759418170973303,0.0313933636912556,0.0141235355815295,0.078749238728561,0.577269286918235,0.211763767919836,0.286165522481361,-0.818026820169624,-0.000458879600648504,0.000598368649087104,0.0365768050951015,-0.730977861923891,0.0104552997981637,-0.0094810816600049,-0.000221849861740123,0.121292757652094,-0.162302809997167,0.274796597404953,0.691174334595562,0,0.282959331932533,-0.00443735100681049],"Archive1208_field4":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.000504165157807111,0.000504165157807111,0.000504165157807111,0.000504165157807111,0,0.000326294258121082,0.000237714116194459,0.000448322733637158,0.000400574835597987,51.2075422799125,51.0399240463393,40.8673835017896,25.8599413092913,5.76693418071733e-07,9.51291919241196e-05,0.000489742006992536,9.60940055557592e-06,0.00287777118678197,0.000266403568786158,0.00196476243691926,0.000394822836212177,0.000492877265193372,0.000433572682354728,1.13592049757053e-05,0.000819154755252879,3.89399305676758e-06,0.00488868593086963,0.00142437601373341,8.02631660627917,0.0138408132859259,0.00073296827847035,36.5793775285629,0.000190205622234549,0.00249705227737355,40.2923146868659,61.5405248359224,24.6903626357267,20.0188768517825,28.3024378661458,53.1867512490492,0.00593159064955153,76.0190944087475,51.5615843477669,29.2537424184912,78.4930096223776,44.9157706489539,49.7829696130696,20.8233915130072,1.92159325253461,50.9642886282282,0.00924985929094336,0.000106466083700635,30.064647355296,13.0215018392806,0.000349379284637569,0.000210187971305533,0.0031350408963458,0.000515836076341118,0.0210261901950317,38.5777647452131,26.0304705799789,0.00159626521866525,50.3443558705991,0.00957060904410133,0.659360596348396,38.8931191644995,0.0116106397290683,0.00311677850030638,0.0150220893095164,49.8535335082021,30.8083876710376,26.8915263817191,0.00314062454766384,8.38211174471597e-05,53.1199277186088,25.1794671136796,32.2493945574742,45.7779727386097,27.1260111401677,27.8041579201473,17.9438743957806,28.2755203555542,21.3914037881821,17.645825065996,26.6871147047447,29.8751222441334,21.1829691969679,9.66193555477515,30.7743983722671,19.779678337417,21.6538795225328,13.9009294107469,16.5091049152368,29.425073993632,8.81648003665295,17.5533921363668,29.3701445447074,16.0924363929609,13.5622788994488,10.2758533707199,9.2501055071306,2.62598556450112,5.27053161673909,4.35211431084909,12.2758466930232,6.9689426529636,3.04901599324414,6.31733444556127,2.1783860100014,4.2971381682431,7.40943557101758,0.000512186447686713,44.8581224671238,46.0002216177737,3.98882463986071,8.77602832371219,14.342333003673,41.5469765360491,25.5582306240508,63.556601484126,51.1385236873984,0.0892762771604695,49.4005729279267,33.9898185213379,24.8700701499923,46.001609436126,47.7932372407783,0.0103798176453118,44.0350829767827,22.1296974954634,0.0068339199654383,0.00527500843838932,0.0140614367520768,9.9850298106749e-05,0.0011096271085593,0.00117214059002757,0.00182826692415084,0.000542682992557097,4.73248719719733,3.25693586683463,8.50840938676285,15.5568379204117,10.3214602013301,21.5749100022889,17.2809289225879,18.1981597540322,32.0783809199726,21.3006707678579,14.0061048253715,28.8197099173054,8.09423142079911,16.5946025392484,15.4373362198559,8.99298020849275,22.8584545268305,26.9117544605085,38.2895678243817,0.000588703574942869,1.73724632813255e-05,8.15937553140829e-05,3.40075651122866e-06,0.000651967694004852,10.6785630431585,8.01197882457473,23.3324598550914,36.7199155638211,9.41936425923537,14.9252141528794,36.2275432441155,30.6172657336375,37.8281896504606,0.00484501074049818,0.00917893924446548,0.000200596123523559,0.0465071549466304,0.000592388721167135,0.00118088574696101,0.000127092938771504,8.16938725102878e-05,2.97612096385683e-05,0.000212471243462554,8.73450849895824,4.34445132185361,10.7616770103476,15.0991628177898,13.8602311914946,33.5686454589234,11.9882372793389,18.4658046947071,8.59078372151922,22.9799442633957,18.5461386452766,21.7124217362548,14.6150592805281,17.1462755001346,13.6424852968601,11.1225349484706,13.8291491856214,18.089134534583,9.03294393239337,23.1052637317835,7.36129354730678,4.7010816218798,26.5568396063026,15.2318608767434,14.2758236773284,38.0717955843789,28.00289967009,53.5230448032936,39.0916134020588,38.2210413027701,27.5961940568674,28.5130329579973,51.4775580188267,44.0044974465062,55.570713087591,64.2714673214969,0.00856517794110103,3.02316073601054e-05,6.23603465734809e-06,0.00021048599991166,7.15617560998218e-05,4.784917932437e-06,3.23041240561509e-05,0.000100553970956379,10.9466768292608,12.8581023724285,28.4489604626231,38.1668426526419,32.1168148665866,30.1803449264267,19.8757833819114,40.4464591248851,20.9052665246292,37.3846684339039,46.0091428160352,38.2673425709707,11.918776842509,0.000113085759356531,9.99008633191946e-05,0.000273093893884047,2.82983849075289e-07,2.34354050548018e-05,1.49557775853599e-05,1.05373263608902e-06,1.70492451255264e-05,5.06386875066307e-05,0.000650261917700203,18.5961533328588,31.4713452371464,54.0059790939131,26.3413074698578,8.90681022005305e-06,41.6080803827415,0.492885359893468,47.624469374523,41.980310694624,0.0263802282555323,16.4000217918129,38.4971226237075,30.2802714148224,66.1603399824064,53.9201140842771,0.00853441750132039,50.7250938738157,24.1971108139099,0.0103647199926911,43.3813516215764,0.00335496384970966,2.52880513419482e-06,0.000473704015060215,0.000473704015060215,4.47723241256453e-07,6.42330685941699e-07,1.20652488764598e-05,9.37802191650737e-07,9.25952313988438e-08,4.02356999620512e-05,6.48782181823013e-05,18.4841170373974,13.055763872175,20.4926917574425,20.9954276944024,44.3208858971401,43.6251958388586,0.000315699635176766,0.000576182177742981,0.000530718892121899,5.72783541106485e-05,0.000145527987395262,9.3999995842747e-06,7.13654943971311e-05,5.25425587635879e-05,2.97064259644283e-05,0.000762915211225523,4.6782187213886e-06,9.64856665409057e-06,5.87743089271595e-07,2.79262138343836e-06,1.52020672362832e-07,3.50131043281424e-06,9.60691640333626e-06,1.71511242554276e-06,2.98714128175651e-07,9.92231511627036e-06,21.3952467739615,10.9078417264977,9.76738192390596,31.0508871789089,1.02623808990198e-05,53.7075254647839,23.5763619374869,23.4936968215206,71.8252535765653,63.9272959856996,0.00987095725439693,23.4988508084892,58.1844506358439,7.20484535053054,0.00538931801600868,1.46013941475918e-07,3.66873181988964e-07,26.9959531254908,26.5170718158168,40.9834899777467,31.0591838169118,28.2786842774482,45.0668317478225,28.2944955048206,53.9441053330145,29.9193799338643,51.4260819241249,22.8749970261771,0.000125473470872151,39.2152610074001,34.8519902381676,44.5854252996312,0.834005937295316,32.9468571501849,45.806171922991,23.8621813396557,50.8149229952163,26.269316410533,35.892605955077,48.3888056616972,9.68721462263862e-05,0.00015418929998776,1.23844633420088e-06,0.000180099119226081,0.00288033924896052,30.4130506449048,52.2414422294662,41.2914778099527,0.000802592808268715,0.00071901853859627,0.00444447858170574,0.0064419275863983,7.99011785003444e-05,0.00715241170365197,29.2424669873201,0.000206499296045537,0.00194650269572865,0.00109541722218166,0.00602692187439539,0.000242302526561582,0.00205496049301389,0.000468089020511469,0.0738458596828194,0.00613179564390627,3.05877018622317e-05,39.7536580195178,0.000168670531597006,15.631727436557,37.6251135670461,0.00142895074885579,36.025020050875,53.2649033033054,62.370734891413,65.9940665583136,75.2432441858843,36.4589726082474,29.7513615310088,39.0918490517428,61.5832634488829,39.9155486734623,0.0155897730479524,30.5644369398127,0.00798223886192078,12.6459960401631,2.12893932730717e-05,0.000683120334909614,0.000657486047630401,0.00252533928070519,5.35390619119556e-07,2.51639912110848e-05,0.00312027655444384,8.9385553747988e-05,0.000128403520112576,1.89804838258081e-05,7.39444229330322e-06,4.83617011817086e-06,2.31606496107783e-05,0.000190789728540256,0.000111489755860848,1.70457513406272e-06,6.92399958313363e-06,3.51635025254215e-06,6.41649485443794e-06,5.3991453041438e-05,0.000158537176822122,36.9710793323682,29.8254167693763,33.3492928528525,0.0313623276424607,0.00245276025548223,0.000147498197731629,0.00162154577094676,0.000114754023429122,4.97900851014869e-07,0.000473704015060215,0.000521226978671364,0.000426990359403294,50.8290900914009,42.9458592839907,34.6238508654703,0.0481538319785545,23.9143956653896,0.0079810554173851,31.5074696651164,0.0128133865016253,9.49141537535567e-05,38.7684492683596,0.00465670959510904,47.0219521518316,58.5190068456294,0.000309318163997072,0.00965915826193509,0.00226755387650255,0.000490191494900003,0.00146722895647376,0.00561495044604001,1.14349675808707e-05,6.76198957700413,0.0013902182684057,0.00989437250712998,4.29593097365761e-05,2.94877340013801e-06,0.000476143433508589,0.000678148993282558,5.30756996764005e-05,9.59282658485637e-06,3.36067313363302e-05,0.00370783433081427,21.1071759258461,0.000270192304483825,0.00140261771947148,0.001241732263096,0.00871634296852941,24.3848747032652,1.23950902976907e-06,2.42157237200312e-07,6.05919003271842e-05,0.00225639214139249,0.000209594962450666,0.000451006669776308,49.9772873937633,48.6908750280598,0.00335318796837097,0.00053094878397946,0.000156952998913012,0.00110546579389393,0.00155011035670089,0.000535088258656297,0.0114684463377277,4.22646560833271e-06,0.00563310523661274,0.000296318986343702,2.8255675021111e-07,1.82966692900583e-05,2.25340439140256e-07,0.000473704015060215,7.60735597070664e-08,1.46407750056111e-07,1.11931488193169e-08,1.64330697637751e-05,8.25227055627442e-05,3.19756619338101e-08,4.78008000476472e-06,7.33503098752505e-06,0.000488664046055887,0.000493274471692131,9.2628275234197e-09,3.3938066294798e-06,1.95995427889734e-06,6.35130140293143e-06,1.21380979796296e-05,1.16182352425484e-05,0.000825951423439761,67.7806014627216,15.8308089371349,23.9540312838129,0.000225039219170642,8.20915155838615e-05,6.7326930086186e-05,0.000142595971405019,0.000183202950634273,0.000396396173499122,0.000197074738307395,0.000240525884250656,0.020736454527395,0.000302630020935152,0.000787261853959306,7.26428429714343e-05,1.13346453609106e-05,0.000427813845142175,0.000212151790472122,0.00191832523798368,0.000204571221647547,0.000334657583097815,0.000451721642511996,0.00162067605200704,0.0068710249698528,0.0065610930356933,29.7320022535046,31.3836836998404,54.0822272117248,26.1758591728191,44.4686923486515,53.1958126678472,28.3492941102079,29.8894141645624,44.6320374182104,0.0256981164677478,69.2555576735222,11.4573655713525,0.00264387264412263,0.00909939918801808,0.00224936558311262,0.000991721377609011,0.000235070620959638,0.000855777929911623,3.23639426498325e-05,1.57065265093763e-05,0.000145131889045286,6.87724714568516e-05,0.00136088839308014,0.00442422284953619,3.37850744670397e-06,0.00101603522159813,9.01401816233757e-05,3.17834446002541e-05,1.82429079979176e-05,1.63560172686121e-06,0.00804093457518014,0.00363876990453005,0.00116488888516152,0.0347216150431914,0.0102658330182926,66.2936650304331,7.57544104188207e-07,7.5835589661384e-05,3.82700215508452e-05,8.79083027137882e-06,6.27295077944461e-06,0.000473704015060215,5.2671546063085e-06,7.44087431620682e-07,1.01391538318033e-05,0.00063184361448994,9.00761194311087e-05,2.75305382683039e-06,0.0211356298157859,45.649779722994,37.6890865022563,0.000131533470259327,1.75656307364778e-05,0.000376613638902266,6.31741221599377e-06,0.000473704015060215,1.05026234978321e-06,2.18528400424461e-06,6.06730676822814e-07,1.34969060199743e-05,1.68817940544893e-05,1.56430210876846e-05,2.2909072480753e-05,9.23838829913633e-07,9.89801164529281e-07,0.00449350215657904,0.00435058585083803,7.72675478108379e-05,0.00775226371389496,3.10156006534914,1.26690292633787,0.000489772762932732,0.00166983242944447,0.000506560077938307,0.00115042275687963,0.000536580670577293,0.000185634631300882,0.00170852433319625,0.000273642842821102,0.00141211233254021,0.0090729063101406,0.0158524381306426,0.0230261848596446,18.1795322025048,6.34962172236511e-05,0.000202859288377772,0.000153227538539335,0.000291180826150623,0.000246745548504853,9.53337603638054e-06,1.93458331525328e-06,5.90161720790148e-05,3.37541026814283e-05,4.13358604213358e-06,7.49279153296901e-05,1.93837472543374e-05,9.54199755222598e-06,2.10704956709509e-06,6.05471013139649e-05,8.84546764297951e-08,7.75412289495839e-06,0.00069737264545605,9.10774929532438e-07,0.00211970489619974,8.70842033749903e-05,0.00250531057110077,0.000306030421229767,1.91944965095164e-06,0.00360671140422064,4.68285654816547e-05,0.000298650072753747,0.0358652219418961,0.0129224703617326,2.70479861551169e-06,0.00022284431681908,0.000589638883470013,0.00420277887399487,39.9439042111338,28.1028943123929,44.8047892304581,35.5506140723664,39.3554927665169,37.2130360462037,0.000174502956986093,2.34181272871737e-06,37.5727046272778,0.000649369088093277,0.00701331946973791,63.7263841997418,0.318538286950958,64.4046926933835,39.9169325540301,0.0012168532297471,0.00396215476488572,30.4253427825556,28.2714781599589,35.655264441142,22.1675184519202,24.5111599260226,17.7187532566532,37.8355771198555,16.2534651799653,18.3570421333537,26.0930928747317,18.7410153179842,0.000109659262143931,0.000473704015060215,1.0158585305864e-07,1.13449872306398e-05,7.43876998236246e-08,2.32937545221752e-06,1.00448141517979e-06,8.69106489036923e-07,0.000473704015060215,1.01083998575567e-06,3.44397980468897e-07,39.5439619056007,0.000110108280052941,0.00417167796191734,0.00217295534500764,0.000769363588530241,0.00012236839612095,65.2197427638669,51.5632229417121,49.9552471333969,26.38529170875,66.4099845069722,1.57294887779194e-05,0.000100163635452684,2.94878378772272e-06,1.93829237472387e-07,2.43173020045094e-07,2.37030358681529e-08,3.06044769799216e-08,0.00107550325335457,0.00039295192772768,0.000163627472484216,0.000551043952451615,3.06586386408641e-05,9.62461167513759e-05,5.69946313274899e-06,2.27510223686703e-05,0.912670748970971,0.00413369119443422,38.2504161829893,16.4091761026072,0.402832227693557,16.6788534487313,35.128609581624,24.2516643041656,53.992513327072,42.8359744425672,34.9568461017458,50.2296361779423,33.0400672835097,0.000252532058774421,0.0007895777438327,9.53507586719829e-05,0.000691917130214574,0.00171687393901921,0.000404032124279585,3.70455393913588e-05,0.00044513914616308,6.45579515986662e-05,7.48000547421064e-05,3.97694562997387e-05,0.00127119192713017,2.48472735661864e-05,6.01585248459406e-05,0.00148492788411908,0.00896110573160137,0.00958929166124807,1.87025254654928e-06,3.93973684928474e-05,0.000133156145893148,0.000318971446243772,0.000326035971242952,0.00184545132295052,4.75824575975203e-05,0.000372912752060924,0.00168199887656025,0.000831318015747066,0.00462922728825617,2.38547039385085,39.7104459036445,0.0160801646043019,26.1415485042974,1.20196806266129e-05,2.83317586804109e-05,0.00237086196425974,36.2622343009616,0.000615845466327591,0.000536118389520339,1.09742462308515e-05,23.5047711407267,0.0121893661201108,51.9565832509098,2.47647939446229,0.000488664046055887,0.0103305734407952,0.000335866476074961,0.000504165157807111,0.000504165157807111,0.000504165157807111,0.000504165157807111,0,0.000999090360083885,0.000769814280489757,0.00139601971908571,0.00125505902490388,63.6176460782105,63.8520368684758,54.0084652241979,29.6950306998057,3.10587704713126e-06,0.000290214067196921,0.00523208330222868,4.24495424160931e-05,0.00882805971525832,0.000759146601041172,0.00551168112858987,0.00101388850314251,0.00140285906844549,0.00138171174372514,3.29976340167107e-05,0.000695681092269987,2.91039040268607e-06,0.0147867536106398,0.00433490780975133,9.99757333217705,0.0409656734954506,0.00559560789330586,44.9673018897229,0.00141859596227901,0.00905135646416017,45.3525602138396,76.8088134496649,28.4435991633888,24.3267510224398,33.6821061695388,60.9161468698812,0.0189368633836454,87.9628280283656,58.1221830740067,33.2796039643511,96.0008127922717,51.5545804707325,56.8356370160076,23.9461519610718,2.64506281334109,57.4662242048963,0.0342143635864894,0.000415350022672068,34.2310440313158,15.4750352066035,0.00113935867127289,0.000343432874139761,0.0119623426420939,0.00160926811479664,0.0743987450757517,43.6803256119928,29.9000639721189,0.004886630091633,61.709156656599,0.0304153904323217,0.963442229798895,47.1318179228345,0.034818051965851,0.00965622598333372,0.0458419782194236,58.8536353073514,35.7600285464789,31.3381034503842,0.0104229998164571,0.000262188322002691,59.6202367060933,29.0890115672797,37.8477872806517,55.2380185493978,31.1500418108939,32.5281283729083,21.2325812552058,32.6412134147896,25.1570936453773,20.8048543190433,30.5509993416594,34.8649549574577,25.0569652264343,11.6622829757038,35.5754874082798,23.5362395296234,25.5899439476826,16.5971522457087,19.6570578840764,33.8056745128164,10.7977362735524,20.833866919619,34.3984900902271,19.1725405731494,16.2185742321478,12.2951682944522,11.2697619545633,3.30065571549122,6.49074032122402,5.4082621894426,14.8129415403989,8.69844708561807,3.88593555888477,7.81831520277086,2.77890658868866,5.3424714274209,9.11171909273224,0.00159969082319169,50.5085570702765,51.8135368701594,4.98734926472981,10.5117427753476,17.062988873921,46.8466729208416,29.368818346282,74.548512759959,57.6485815846096,0.169520612790745,55.4516786559979,38.7545815552435,28.7926404694951,52.3831230557186,59.5368726702237,0.0372529001746483,51.1735621069323,27.2521793154212,0.0217215078835722,0.0185182019336601,0.0428174851647262,0.000412810618610579,0.00346095369960644,0.00400239212556638,0.00694797143357703,0.00173593022048025,5.88330858511766,4.1297919323274,10.3862425934374,18.5157977724655,12.4077585158307,25.5614058146314,20.5129002017329,21.5846657177987,36.9200517387172,25.2502476498824,16.7545761513614,33.5137305268682,9.90261750756854,19.7414519763022,18.425891418232,10.8351576488737,26.978458476802,30.9526662236464,45.708530377163,0.00176665000092575,8.2108604824328e-06,0.000277020026885413,1.06887458693161e-05,0.00202209582114369,12.7580515304525,9.73054135151329,27.5111915836651,41.5537938333861,11.4769228851255,17.8091333472982,42.3337578723888,34.9604706265491,44.8062540017019,0.0167301837047801,0.0309151147033528,0.000597161463586352,0.0909337070247122,0.00215254289525354,0.00402374389941971,0.000458986067164971,0.000251013014754096,9.48089574872917e-05,0.000818963503619035,10.6094206177057,5.37399791136777,13.0233114414526,18.0294835377531,16.5629251055465,38.523346501114,14.4146254445875,21.660767406088,10.3988780211618,26.8486964633536,21.4967880542366,25.5572738234606,17.2691470060563,20.3041602480297,16.3777642048589,13.3347389226869,16.4937151788665,20.866398894857,11.006829781065,27.190760360149,8.9850837365886,5.90768194866475,31.1640025090862,18.0911043776514,17.0410920703174,42.9647916723332,32.7555505329174,60.3108360705917,44.4277315259518,43.1805464373984,32.183597563483,32.9611618198761,58.0249080401081,49.5406607027686,62.7718952101235,84.2119090009851,0.0341607548929656,0.000105809199950006,2.00273883671127e-05,0.000664687427581544,0.000195635905768563,2.00192623480961e-05,0.000117482853108529,0.000416791902802116,13.2573875365966,15.2576956968778,32.9152528749506,43.3250651473905,36.453704380519,34.6683069516406,23.3879650761966,45.738127944965,24.2656729726573,43.0319230460348,52.0380225970356,43.3439868873991,14.6837038468644,0.000382936324708373,0.00038352023331785,0.000972245334431093,8.68512278646523e-07,6.04052642400913e-05,4.80187119511352e-05,1.73283018908813e-06,5.337444558123e-05,0.000161555706219728,0.00243768859043571,22.1317843605666,36.3663614385234,60.819152154749,30.6213277878512,2.93459915950613e-05,47.7918490807983,0.650338931587367,56.5114336844364,49.9000976216144,0.0876543402414526,21.7910255045882,48.3795121564759,37.0902518286499,81.2077506495806,65.8658159084559,0.0314543329432225,68.0238746021237,30.3208633311369,0.0313687060424825,50.7219931946208,0.0120816971541773,5.21160764541524e-06,0.000473704015060215,0.000473704015060215,1.27249942621298e-06,2.093044287192e-06,3.81169403376465e-05,3.01959796509228e-06,3.10643889921548e-07,0.000127898532033542,0.00021109881359954,21.7289284219614,15.5303712491564,24.1865928839203,24.3094895067647,49.9899640941912,49.8239516752313,0.00020441871019347,0.00157946771597231,0.00208090252514569,0.000194593391854908,0.000531451313626695,9.1498684640339e-05,0.000108375920980077,0.000193030375193353,0.00010482702594866,0.00267550556247564,1.69249975292368e-05,3.26185366612639e-05,2.90626057188795e-06,1.01995739771117e-05,3.96942223276635e-07,1.11500778127459e-05,2.91300898609936e-05,5.79394215510929e-06,6.56695568770259e-07,3.56226212236218e-05,25.1993597641992,13.1700250032352,11.7917686156065,35.0815867103395,4.12515454988112e-05,60.4877701235043,29.5826584514677,32.376859404563,91.8539436951006,71.3838817205338,0.0330594115943965,29.5033698295929,75.4324788656026,9.86892424296689,0.0211796612690813,4.13743288864149e-07,1.1031253578666e-06,30.8272071020336,30.6248707010382,45.9390950070218,35.1839645857354,31.8681303155526,51.1210164542791,32.5279672106333,60.1407120540431,33.5498374877866,57.497927613235,26.4276869817075,0.000407814680497157,44.4503754736288,39.3712453056211,56.4153390653675,1.15222399150842,38.5335091041351,53.2458612916248,29.6568860550969,60.5137626694189,29.9006255366344,40.2363364028761,65.4931328997769,0.000473346132564484,0.000574802840075339,3.63493081788999e-06,0.000584827847115072,0.0085030877390849,34.5691427793154,58.3862345557517,46.6909618347694,0.00223185913170067,0.00310090242821493,0.0155064961640503,0.0178185535239412,0.000235447276124241,0.022296991289344,33.5205355673351,0.000709477634812891,0.00943520067165011,0.00435372447115401,0.0235440288744693,0.000985003510083184,0.00770000539855677,0.00126559625701441,0.131737759935246,0.0219333989002589,4.47432427792415e-05,49.3120319643194,0.000542766040963772,20.4095015485374,44.3151106249257,0.00543957110174248,40.9412579750681,59.3474601071918,69.5710978668533,73.6410500095683,91.2687677364606,40.7095270746523,33.4244897926074,43.9375055287963,73.5888974570924,44.9618035417042,0.0504459425236333,35.8951056660642,0.0307966966317672,16.3343940272164,6.87678737978983e-05,0.00176711526384224,0.00213688387320734,0.00851621536529828,1.90307553483558e-06,7.54684910897856e-05,0.0103051694228101,0.000257497765464957,0.000427663671429878,7.66151097345377e-05,2.81148377107751e-05,1.56951884515981e-05,7.89045992356769e-05,0.000624506561125853,0.000432327199434196,5.27201570088617e-06,2.14494978203614e-05,1.22624844741457e-05,3.66473302705691e-05,0.000239590344084127,0.000610989677138792,42.1520731168231,33.9085070635039,37.5432711894476,0.0999887556246551,0.00829567985093442,0.000493465164421162,0.00522404516465903,0.000414437883844758,1.77803615959948e-06,0.000473704015060215,0.00194281695687319,0.00167179089728147,56.6993648553471,48.0498098414392,40.592730338765,0.11504825195074,31.3151758156854,0.0254231040877622,35.5986200272451,0.0453548058826209,0.000505483744324898,43.7054458832241,0.0160044725860478,52.5881272314363,70.0807394669979,0.00105468641675233,0.031144787715764,0.00747636961322753,0.00172036232707245,0.00414318724454266,0.0222788095791003,4.87658862875739e-05,9.03027497681704,0.00462932532883056,0.027519257201977,5.59475042612737e-05,1.04939392198619e-05,0.00140725719280938,0.00170365704425281,0.000190369103545151,3.53365604312587e-05,0.000119966500007255,0.0114189656007057,29.5375405470184,0.00099895436682183,0.00470298150975626,0.00461974648699311,0.031268152448914,31.7621143607124,4.58571021451053e-06,6.76798733177754e-07,0.000144636689275413,0.00851552966775346,0.000838093041320646,0.00141432344982876,56.6729930268564,58.7305235232425,0.011565891919481,0.00150427605342526,0.000521603429215448,0.00257002753392413,0.00499240277501132,0.00170784719899953,0.038352145942015,1.36948505991871e-05,0.0187533165437422,0.00101575598040156,8.15746024594846e-07,5.89196954591268e-05,8.27919376936908e-07,0.000473704015060215,2.53688615771861e-07,5.47198363408139e-07,2.99416181295866e-08,5.66250606544863e-05,0.000279560970497608,1.54142995852609e-06,1.46758892631754e-05,2.55873452247762e-05,0.000488664046055887,0.000493274471692131,4.6130753745575e-08,9.03160347397482e-06,7.12589712091148e-06,2.18787948749932e-05,1.63499891437679e-05,3.64046604666e-05,0.00286963070557249,75.5757829799928,18.2152247785209,27.8755035071442,0.000709643420803415,0.000230071155154841,0.000196484647305661,0.000458721208154317,0.00055865606348453,0.00131275163417286,0.000652596378531115,0.000772269359144225,0.0652964813970626,0.0010321315504326,0.00253925320355292,0.00029499004445844,3.87582688392312e-05,0.00141313166436858,0.00067239087395388,0.0061453958336228,0.000681593872330013,0.00110418741653829,0.00142740696084044,0.00517495919487083,0.0230130746235632,0.0198159573192919,33.3078462278059,35.1584492605079,60.2288358175096,29.7847795592296,49.7910880173896,59.5995693278448,32.7303804990752,33.5140297929731,50.1752142372841,0.0813785709101609,81.8513417061932,14.948997988106,0.00849860937047721,0.0293616232342739,0.00714411232853057,0.00341046573227354,0.000703638286863934,0.00280806411760537,9.72990527242405e-05,2.84690679374787e-05,0.000447606436402895,0.000221576081659518,0.00427133052167767,0.0144643998613347,1.59223686846333e-05,0.00341051413290017,0.000303302424241889,0.000105961585857399,6.31041324230845e-05,5.90140048673605e-06,0.025704846190757,0.014904954972124,0.00248999568871023,0.104163372520994,0.0367728322245782,82.597737988452,1.33424442305645e-06,0.000244072568717312,0.000122332720768358,3.03800013033215e-05,1.74521965619644e-05,0.000473704015060215,1.78209510063965e-05,3.29169400321768e-06,0.000289888434860587,0.00146451108301984,0.000333641644430807,9.36235177140413e-06,0.0747831498336452,54.9954311238067,42.7761499426968,0.000421109504829464,5.59020236126247e-05,0.00122744370563693,2.2701508229175e-05,0.000473704015060215,3.90724873081203e-06,7.5174260523344e-06,2.17368907909052e-06,4.38401170298946e-05,5.62240717465996e-05,4.99205470191104e-05,7.67242386794265e-05,3.30162838212388e-06,3.17755433268005e-06,0.0106339102873119,0.0130334947563402,0.000262215574118892,0.0243301302224028,4.00688380559198,1.70825609640324,0.00153546645938378,0.00524988459691427,0.00172042987892926,0.00355164241636327,0.00167486875385094,0.000622847666353609,0.00595359902967164,0.000817649748211943,0.00461968936083384,0.0282721668518374,0.0591825228349993,0.0776157703228526,20.5886970952647,0.00022240458005553,0.000702327232969427,0.000537866194832942,0.00101710507736185,0.000884866780688737,2.86813315261778e-05,7.11828667884907e-06,0.000214707030459839,0.000118114470589422,1.54685771416133e-05,0.00029428887098755,6.93772714286421e-05,3.60047117946736e-05,7.19326654841178e-06,0.000884229383349485,4.91727024090311e-06,3.02923678015407e-05,0.00256489683402711,2.59878048906346e-06,0.00716471054146115,0.00023311630379194,0.0102645749171237,0.00122342976412438,3.30523821715665e-05,0.0150496191302694,0.000222312690896722,0.00129239486733513,0.0921081476479269,0.048735343793293,2.26384545136497e-05,0.000715125014979333,0.0046078634174465,0.0148318705494343,54.7114750021954,32.5268018666453,54.3395172313472,45.1147869468581,50.6605093954859,48.7460246190081,0.000624086740603386,9.73348930601161e-06,42.4875714153484,0.000819217318468205,0.0246563757060953,75.9029104180315,0.457911726255746,71.9316867260467,45.165253800283,0.00431342801812888,0.0114377626373793,35.0434165546477,32.6643043415488,41.1193906508177,26.1110334503017,28.2318785086677,21.1065559789459,42.617218097297,19.159439231319,21.7022495456733,30.108126922776,22.2289214209969,0.000426884089187683,0.000473704015060215,3.97176771551717e-07,3.5415350928083e-05,7.42396790565808e-07,4.96033049769373e-06,4.7805926040479e-06,1.26760278996747e-06,0.000473704015060215,4.3786524644565e-06,1.07354291313171e-06,44.388911020684,0.000373230754651898,0.0133888282669878,0.00674814772740939,0.0023060618123771,0.000393052873546472,72.8631654253019,57.6225901261153,56.0985048634,29.9155504551465,78.63743728537,5.12107954305795e-05,0.000304664405926325,1.06936165841731e-05,2.25238049570885e-07,5.11230711017727e-07,1.09942020228193e-07,1.9354273064843e-07,0.0036163826582104,0.001211308479016,0.000524656565697848,0.00169241871896704,9.81409156005951e-05,0.000293473966802394,1.76211761223424e-05,6.94488447170818e-05,1.23952935811441,0.0124519495375895,43.8607387577749,19.4974297216209,0.580336110334409,19.8887093184106,39.6319165343161,27.5102170008219,60.8421344581376,48.5997800118096,41.5897609070475,58.6980268869457,37.2337310934409,0.000842976665345758,0.00237719554168785,0.000282085147078107,0.00221043845044054,0.00523705659698734,0.00160910497577768,0.000160529931957095,0.00145087013967293,9.70808877235677e-05,0.00040075833089202,0.000124453936196956,0.00500975974909934,5.61530794632681e-05,0.000223749625195919,0.00479377171576347,0.0288429770750332,0.0354521951047134,4.90550970222435e-06,0.000175744000196721,0.000373457836769492,0.00115100019576158,0.00144222426073236,0.00819200720429561,0.000160200498828876,0.00132610274452331,0.00572773043278322,0.00275700904949538,0.0149331754137379,3.039383409543,48.5196776243094,0.0536824316880871,30.2283071768955,5.82181689551748e-05,0.000101919390693337,0.00733342673525376,41.1035790839597,0.00200571869705794,0.00178433625774541,3.94784737659549e-05,27.7399642998092,0.0349349849556826,64.3065173919493,3.33565524527842,0.000488664046055887,0.0438267130715798,0.000963520039510748,0.000504165157807111,0.000504165157807111,0.000504165157807111,0.000504165157807111,0,0.00176754600624306,0.00139186929229195,0.00247233270730689,0.00221550682071158,67.064808210889,67.078112271932,57.131698112715,30.6359478573728,7.00857881926107e-06,0.000510875729761632,0.012037796553781,8.55982797131143e-05,0.0156184340604187,0.00129381486815007,0.00930700428609107,0.0016361873025024,0.00239014264477565,0.00248644751433074,5.65247254406248e-05,0.000279512460974841,1.63429619179876e-05,0.0259188640769791,0.00758008122823832,10.6403416925761,0.0710409803494411,0.0125079061089166,47.4742667942671,0.00313112330506075,0.0171051951071733,46.5015082658074,81.4626305007591,29.3751803608754,25.6277954472873,35.2105513555832,62.8005101072677,0.0343783547123844,91.1869730176916,59.5596716163706,34.2332066005124,100.598969103406,53.0170473231405,58.4178639053449,24.6500913712371,2.93185546088572,58.9068608507471,0.0649593475145219,0.000800356318692249,35.189385426539,16.1782291540863,0.0020434250631847,0.000390192982429836,0.0227696522929289,0.00286422603987353,0.138192785396275,44.8191884641118,30.8605053300537,0.00863180448501422,65.0252983353201,0.054512590657673,1.10350505389149,49.3181431561745,0.06099799998123,0.0171397897462292,0.0808353270750405,60.9738648341277,37.0282851680648,32.5289147670349,0.0189725805725609,0.000466894741440699,61.0097185202698,29.9048347112967,38.9204696813596,57.6816939766307,32.1386377625389,33.7911196488379,22.1747320354394,33.7115945896175,26.1437564933876,21.6552808597803,31.4925007581604,36.2022926324229,26.1839293696526,12.3515792321553,36.8227204766426,24.7120197797173,26.716276009023,17.4278503828204,20.6446409024835,34.8878847866287,11.5089652282144,21.821306657766,35.8035053444616,20.1410952800158,17.0605331223425,12.9262221378136,11.9847004568223,3.57192424529733,6.95079390074377,5.82237980651717,15.6942834705213,9.3876543939531,4.23327653214019,8.38192934408315,3.02399663703255,5.7137943507086,9.74117043991163,0.00284870042617124,51.7905833072832,53.1377416216137,5.36989037087599,11.0853991236846,17.9144687804053,48.0545746307356,30.2787997390709,77.415830567425,59.1303283280825,0.254095245646484,56.7876795737866,39.8866949352862,29.6912907530753,53.9146797043714,62.8919336508817,0.0701306742930915,52.8388048026307,28.7913348264835,0.0389862692028066,0.0346989910478367,0.0754758289234934,0.000816656925898123,0.00611277117942857,0.00739662943325245,0.0133604749284899,0.0031283421728271,6.29156133796602,4.47677163246915,11.0420029222989,19.4618220027849,13.1220724867784,26.755483683203,21.4633675740671,22.5938830315761,38.145640614354,26.430314898428,17.6583327026206,34.7726657139701,10.572985716662,20.6685811156892,19.3605490460271,11.4569301800803,28.143860622941,31.9724126202964,47.6163335067451,0.00330965591674708,6.40474752717426e-05,0.000512813563701392,1.9115821790845e-05,0.00358631323298688,13.3416148271837,10.2854057024608,28.6961192003028,42.6634228588115,12.2210614956822,18.7013567238316,43.9400215640899,36.0050796463808,46.621044277597,0.0310408034394709,0.0579033640293163,0.00105439424089712,0.145803060981933,0.00408003235256707,0.00746199097276541,0.000868288500315221,0.000444353330726258,0.000170394379044467,0.00159044395038861,11.2060532992939,5.74211672622695,13.7282077305523,18.8221086155174,17.3610617746037,39.6151536138405,15.1161792682659,22.4379218245913,10.9940662953707,27.7856314077007,22.1841200874833,26.5207604457311,17.942600067469,21.1194402609143,17.1818901272592,13.9909673001427,17.2428373813316,21.5053753035626,11.6621772453705,28.2267700986321,9.55110031318,6.37287885757679,32.3396503259583,18.8673204085018,17.8538490083161,44.0683123428081,34.0146509889792,61.8594611126358,45.6749432712622,44.3475611726677,33.4315950868671,34.1160318168797,59.5080861948684,50.8257295423653,64.4574963780386,90.4225792877076,0.0666759789356413,0.000201716073466853,3.61569469724652e-05,0.00118975626929536,0.000324201106254802,4.098770010472e-05,0.000224416607520902,0.000822269903239998,14.0069532821276,15.9207838657831,34.0312103500148,44.4898612280849,37.4467757642265,35.7643693474732,24.3278355388839,46.9335861049978,25.1173225866577,44.3900771523971,53.440767536593,44.4855834517207,15.5312250081106,0.000703828519658016,0.000721471715866494,0.00183347760525899,1.5755987585418e-06,0.000101947167626758,8.66704505112042e-05,1.87930229287372e-06,9.53397790371356e-05,0.0002905557636314,0.00465066933822357,23.1873844689297,37.5565302317482,62.3420106195045,31.5707670520629,5.35542046767831e-05,49.2739481705205,0.723719413699425,58.8488077310564,51.7832856514656,0.160825714529396,22.9747200766712,51.195983216436,38.3549127106423,85.3780640682474,67.9905241812726,0.0606826079542505,72.3709415784381,32.1618717686447,0.0549367222036754,52.5148083791656,0.0229752807579496,7.74034760463481e-06,0.000473704015060215,0.000473704015060215,2.18252121882064e-06,3.7977796934621e-06,6.83004650322765e-05,5.45895525579672e-06,5.70836866193425e-07,0.000229661108789372,0.000383410356205292,22.5761833269344,16.2827277635418,25.1568265509989,25.1069071084988,51.2630343972352,51.1216220207911,0.00129042028814779,0.00264176005923917,0.00406844718815105,0.000360265563468789,0.00101277457713705,0.000216067049185361,9.68321551676789e-05,0.000368419851213523,0.000196181317030312,0.00507808646143385,3.22861828464755e-05,6.08276255038347e-05,6.03664385365098e-06,1.93412836897881e-05,6.55647581270888e-07,2.05144800015576e-05,5.2914357915371e-05,1.08243015837714e-05,1.01722322463403e-06,6.76975907733831e-05,26.2548161770882,13.9369345289129,12.4733012492542,35.9406533608412,8.0692490251684e-05,61.9505167662958,30.6326989596028,34.3503072181265,95.9515661481869,72.8977707706907,0.0609326287169499,30.5145197975971,79.1992321684733,10.5088377443433,0.042284457879912,7.18754052373614e-07,1.93640531623851e-06,31.6891178281754,31.5929138475,46.9790296811503,36.0528504692899,32.5971943632307,52.393057635844,33.4783170249688,61.3767595407711,34.2674433848035,58.7262535816729,27.2450107087684,0.000735343116079851,45.6823969839452,40.3061049881323,59.4916086344734,1.28754600424666,39.7398708655759,55.2892562980554,31.3738000314175,63.2624945847632,30.7350537968489,41.1782715587286,69.1640560550255,0.00102909632477534,0.00111287765329412,6.30161559315571e-06,0.00105228276226496,0.0147682235716773,35.5010690069783,59.6525541600848,47.867952277269,0.00363949302423429,0.00644481388663216,0.0290070734566373,0.0300549668694428,0.000409335970920106,0.0396374676253445,34.5137431791899,0.00133344074327269,0.0205334827090093,0.00874924228312514,0.0468089938261289,0.00199952734752385,0.0149948766060244,0.00206865475111303,0.192119202834172,0.0416205306209868,3.42158207293837e-05,51.9651491618298,0.000976171623750995,21.7245626567403,45.7230765517989,0.010385165836423,42.0324436986344,60.5256576382939,70.9516450861739,75.2086385265527,95.3742386539933,41.5374693068376,34.1649813977415,44.9371563177681,76.8099720426668,45.9886800886912,0.0907910410694226,37.0311547956943,0.0587163736773916,17.4043254417358,0.000123915827999149,0.0027394575379317,0.00387324167851882,0.0157732833708303,3.62287842840414e-06,0.000130039593109536,0.0189620826685325,0.000430905900234725,0.000787402873416961,0.000154949429422285,5.63108719862896e-05,2.84621979730744e-05,0.000147334952461045,0.00112886290198659,0.000855879541871162,9.15835104105531e-06,3.78292272414237e-05,2.32069682560318e-05,8.41042288078625e-05,0.000503956253256988,0.00120730874833394,43.2768517847849,34.7753832295678,38.4714458749567,0.181865291685358,0.0154168696328937,0.000877221149229768,0.00932178664693905,0.00079246919357236,3.37333830988901e-06,0.000473704015060215,0.0037686422145645,0.00332750078274884,57.8754279169313,49.0555333072584,41.8250335480924,0.194895088365559,33.4179662902554,0.0454909317347869,36.441868142057,0.085316026338374,0.00102046161479609,44.7741894546112,0.0293739172287378,53.7434055558283,72.9309592788091,0.00193704944340639,0.0559740040691695,0.0135599089604015,0.00317633148806424,0.00713250549106859,0.0423047507205654,8.97909728574591e-05,9.70809323190076,0.00842492344535052,0.046881465364315,5.71320890354558e-05,1.955913669346e-05,0.00242832927894143,0.00277948451684676,0.000353609573900503,6.52850337155012e-05,0.00022374949725789,0.0193953155427164,31.5497090696372,0.00194568665101942,0.00868902489559778,0.00890459487565502,0.0594324091909631,33.611358040145,8.91106525422033e-06,1.07514540091659e-06,0.00021366191751399,0.0165886178985398,0.00166758520834266,0.00251673408290678,58.0838179305841,61.3702914152132,0.0214187452485581,0.00259682383392951,0.000948809551559232,0.00397478304250068,0.00912473785019122,0.003081745661855,0.0700845432558031,2.46622719836119e-05,0.0341140358224978,0.00186403506229293,1.28012021802929e-06,0.000105437765516516,1.59198398259263e-06,0.000473704015060215,4.60747660861436e-07,1.06767969253701e-06,1.08628526536956e-07,0.000106462403770079,0.000519075357537433,4.33408281040951e-06,2.55786925808083e-05,4.81679571175907e-05,0.000488664046055887,0.000493274471692131,9.30182258679415e-08,1.48284618099689e-05,1.36175920667619e-05,4.09196995602642e-05,9.9229780602022e-06,6.46407748556067e-05,0.00535593759641002,77.1376625304803,18.7526074605694,28.8231224738131,0.00125884499728715,0.000402051961795885,0.000334985168448073,0.000828282646573533,0.000959421327349906,0.0023867503919982,0.00118547317247331,0.00139499036226783,0.116394504861427,0.00189133324692257,0.00456460092763875,0.00056489331756009,7.10751934969281e-05,0.00257623442414595,0.00120291996042956,0.0110407175663031,0.00124839353249319,0.00201549136529382,0.00254689143168642,0.0092963660048609,0.042253212725971,0.0346315991041604,34.0094606253642,35.9073511088538,61.4020260401743,30.5705797089652,50.9217704889141,60.8907563924805,33.902265624717,34.306027536978,51.3687450590969,0.14475422138586,85.1529621695599,15.9355494077646,0.0152559184697309,0.052719513924022,0.0126920379961505,0.0062672201056436,0.00123386231520003,0.00508172629648898,0.000170690011549996,3.96479312637307e-05,0.000790042781673098,0.000398413400322011,0.00759601592788399,0.0261373474595503,3.22731181329978e-05,0.00622565600499607,0.000553621927401332,0.000192915281301645,0.000115971352611048,1.11075281460664e-05,0.0463331315198973,0.029990101229109,0.00320768007304389,0.185621415618524,0.0693436602880475,86.942665851785,8.98984060200358e-06,0.000438975228726037,0.000218913974339883,5.60443704913392e-05,2.95045651269186e-05,0.000473704015060215,3.25419276428079e-05,6.51663125073468e-06,0.000720585887770263,0.00215677917765827,0.000630820099680536,1.71048184745627e-05,0.139283095437413,57.2300298804082,43.866546443141,0.000750248413565769,0.000100079302056318,0.00221534600258441,4.24230240132952e-05,0.000473704015060215,7.37979860073627e-06,1.38472815169586e-05,4.05511135729736e-06,7.90581294309259e-05,0.000102258544459706,8.94660577274065e-05,0.000139677444185541,6.13243803150586e-06,5.69396308456312e-06,0.0162281403370068,0.0227197553014862,0.000479778445673402,0.0431050020123904,4.33644093744962,1.88085933676535,0.0027201684583493,0.00930574000349458,0.00312700716013765,0.0062608299087296,0.00296319093882736,0.00112666427318411,0.0108994865872273,0.00142615277863325,0.00831890075597937,0.0500779743751465,0.111798944796903,0.14104646354526,21.0978470998745,0.000408907948795377,0.00128023938177539,0.000985637887920943,0.00186337439387709,0.00166665475001026,4.50642264301922e-05,1.36151326475133e-05,0.000407999156749485,0.000221621889776922,2.9827771963657e-05,0.000585569973676359,0.00013016066546176,6.99155691263138e-05,1.31939553434412e-05,0.002289563072237,1.51344758963478e-05,5.99981561696113e-05,0.00493286666599717,4.38644819146725e-06,0.013097549243599,0.000366255304041862,0.0206794919297742,0.00247110580463484,8.58830112083767e-05,0.0306732036149855,0.000473530454645779,0.00266019499154868,0.162171821572853,0.094825521139853,5.49951580615931e-05,0.00128397754772694,0.0109903676420637,0.0280462508937474,58.2899211734252,33.4158400069148,55.96905726539,47.2262362380466,53.9047187402153,51.8641491203305,0.0011888598745127,3.43658899446449e-05,43.5725925397128,0.000228267117258991,0.0456095091568064,79.0719094724648,0.532746800749734,73.4289469054039,46.3247013652338,0.00797184220150723,0.0193579897003097,36.1425851699715,33.728562130237,42.4260785905708,27.1751703512834,29.1157901572229,22.1327045955213,43.6335477356998,19.9320915054621,22.6256700135297,31.0761798393841,23.1695882279208,0.000915463050247737,0.000473704015060215,7.03635346580866e-07,6.30836724343171e-05,1.85938416376081e-06,6.54575605368649e-06,1.02117109575971e-05,7.20147530492978e-07,0.000473704015060215,9.04958537517584e-06,1.89955073958461e-06,45.4177541609269,0.000676735407477171,0.0241160076325468,0.0119947826350281,0.00398280368043128,0.000710016997144543,74.4508049866862,58.8455823485869,57.4494409093737,30.6976129576856,81.8838670349445,9.32874591619425e-05,0.000534449012943365,2.05156899045356e-05,1.23517236142898e-06,6.56408187482552e-07,2.30583740974853e-07,6.67712762376555e-07,0.00667953050822373,0.00214616898058846,0.000945943743335289,0.0029849003830934,0.000177289134619934,0.000517130360430426,3.11703133834453e-05,0.000122144825704361,1.37145387257039,0.0218446104350682,45.2240236622891,20.3960627978822,0.672952439654284,20.9057210557225,40.6176730089021,28.194696551663,62.2919152195147,49.7982326697667,42.8314125715766,60.5631481858797,38.1456285178632,0.001553139719572,0.00416924588861767,0.000489181598933557,0.00397107836751098,0.00927209690712168,0.00315944528239673,0.000326129403042864,0.0026206184299329,0.000110007541787602,0.000821219498985128,0.000225203454614467,0.00958288418235812,9.12015943227345e-05,0.000428548692052473,0.00862692046686858,0.0518831711466319,0.0665479773043346,7.13019104648196e-06,0.000363050476735893,0.000629999946231408,0.00218200541895974,0.00295642482474759,0.0167714131943841,0.000295629096880802,0.00250765365599932,0.0106018510288708,0.00496296417719587,0.0270167372703765,3.23761895321277,51.1786769979278,0.09780167467348,31.1640825171271,0.000129196751116966,0.000194989286669159,0.0129635405376366,42.1565968374222,0.00361884808700218,0.00324696689398262,7.38245964313507e-05,28.6149750275711,0.0598222709921621,67.5076599481773,3.6526438903197,0.000488664046055887,0.0880795024326624,0.00164362230174077,0.000504165157807111,0.000504165157807111,0.000504165157807111,0.000504165157807111,0,0.00256732635365921,0.0020427360710248,0.00359154282421147,0.00321022543056775,68.1368606556304,68.0721892695874,58.1608623729543,30.9979014314549,1.15056121187332e-05,0.000739538436202057,0.0197153426063265,0.000132666446459567,0.0226805856668648,0.00184030833483309,0.0131630204176767,0.00225081631029477,0.0034001384198877,0.0036512440121451,8.0567653960753e-05,0.00165543426641994,3.27584305743649e-05,0.0374727123405192,0.0109251907491979,10.8554992779681,0.102043519436886,0.0202712196512127,48.2604564979496,0.00504550777059308,0.0257388554346992,46.8700837878767,82.9613747317153,29.6410901469612,26.0354462731693,35.6623797503218,63.3305608982309,0.0507001589214003,92.1490465835226,60.0516132476323,34.5056598692089,101.978864011835,53.432603498473,58.8662313366533,24.8458720799719,3.04319791181545,59.3989763553214,0.0979705039815013,0.00121314916917348,35.5540908195636,16.4664527984524,0.002984930235518,0.000395816420896747,0.0342983322652777,0.00417001366291881,0.205620944413564,45.2250224185901,31.2386018310127,0.0125146666332128,66.0538015815388,0.0796620571836697,1.17828580003042,49.9623767297378,0.0880626280407589,0.0249204011392331,0.11706340682947,61.566439099825,37.5289647586352,33.0154899034085,0.027950047572499,0.000680224582037453,61.4695640593155,30.1281090051608,39.2220219146711,58.382878690932,32.5248996129685,34.2933063462717,22.5625159820214,34.1249285048371,26.5360877328422,21.9978838937746,31.8579343473935,36.741641236409,26.6568160414931,12.6514791144109,37.3189457007624,25.2135135336343,27.1861798335524,17.7741837197094,21.0677599470531,35.3018381137196,11.8145955513683,22.2404109744896,36.3867964094245,20.5569071805593,17.4128095938736,13.1908034549048,12.291922958079,3.69413985775304,7.15502163752393,6.00832213650758,16.0807303887148,9.6957303298245,4.38838719368495,8.62817144621939,3.13451141802209,5.86834159450405,10.014924207427,0.00414939255106303,52.2065114772382,53.5615369737901,5.53715685786254,11.3351270278658,18.2799666036402,48.4462518868731,30.5362669186032,78.2760672032383,59.6187030053086,0.343616298431041,57.2100140475947,40.3195906921775,29.9423705915327,54.3499035094281,63.9367380593064,0.105173740976701,53.3034622147783,29.28054807788,0.0570391956851416,0.0519402513416244,0.109388084304994,0.00125500679124868,0.00886049074642772,0.0109885247643763,0.0202502458858005,0.00458798940262111,6.46051595353931,4.62812650492131,11.3236782645118,19.8703644289671,13.4358078030427,27.2616859683097,21.8630555026899,23.0189050732697,38.6298531461479,26.9302726189063,18.0499796927192,35.2867237443496,10.871277757884,21.0518770288231,19.7560558487798,11.7243275085885,28.6228976591795,32.379133473022,48.1696806278305,0.00501469436173456,0.000133145179038273,0.000762592886298359,2.7919127679948e-05,0.00521440819155008,13.5712763160129,10.5125257655288,29.1894461476363,43.054809786573,12.5484157498911,19.0740143546375,44.5741871979007,36.4040933121704,47.1439319006203,0.0462090458689831,0.0869258786887766,0.0015344791047161,0.206624370695211,0.00614171087499547,0.0111133964560638,0.00130581084647387,0.000645382347855555,0.000249563623489218,0.00242777890724353,11.4453850273061,5.8988735363182,14.0094213862564,19.1242226516794,17.6933440881952,40.0196778173375,15.3937624911562,22.7319137127771,11.2459296008153,28.1424185366284,22.444432196027,26.8926593736113,18.2014497877477,21.4343197365897,17.5001861134132,14.257939098999,17.5391830857045,21.7475114571041,11.9343861062275,28.6276340199745,9.79576739090153,6.57519043322501,32.8114122044907,19.1788967402206,18.1926782728252,44.4428567096092,34.5168743365262,62.3175463019884,46.1333810204154,44.6942510339558,33.9464816581464,34.5808737702007,59.9991079214322,51.2043582142847,64.9502597308594,92.4788159387618,0.101768283254312,0.000305587299101106,5.30746673370922e-05,0.0017386793105301,0.000452393389757035,6.43838743966219e-05,0.000339859670628416,0.00126347603957149,14.3223933882691,16.1851844045957,34.4638960814678,44.9143635862736,37.8033671052416,36.1915831078128,24.7076823872342,47.3500458160833,25.4557566125143,44.9165567305381,53.8451685504029,44.8922911590596,15.8049024281182,0.00104237056573255,0.00107669404129138,0.00275436652388079,2.33005971411591e-06,0.000145474769380859,0.000127213197578881,1.79311218593504e-06,0.000139151321033028,0.000425751496293807,0.00702952873999591,23.6281821420776,38.031738212328,62.8429517373324,31.8331762973592,7.87282878191182e-05,49.6822660541779,0.769934248897036,59.5125935530026,52.3190296032393,0.23810623320989,23.3504436320182,52.0779718179534,38.7029115289935,86.637800812191,68.5674008805181,0.0918996022478493,73.8071460419263,32.7534090471557,0.0792622141384471,53.0134691846435,0.0346854492617296,1.02304773176333e-05,0.000473704015060215,0.000473704015060215,3.11339670106032e-06,5.58988484315625e-06,9.98598324745149e-05,8.01885984414823e-06,8.45540731613568e-07,0.00033618141506879,0.000564630005060276,22.9188411223344,16.5982696822168,25.5506389632486,25.4240132489043,51.6345115885584,51.4860754174267,0.00261117996605341,0.00371414110573249,0.00622313754270456,0.00053614968150185,0.00152974284914968,0.000358050764518327,6.3230732977945e-05,0.000556836207773565,0.000293353799551212,0.0076704167306623,4.88499055158856e-05,9.11218171254191e-05,9.48289764803406e-06,2.91106692646355e-05,9.18457727018834e-07,3.05520028389274e-05,7.84271287419274e-05,1.62174229305343e-05,1.38067461262093e-06,0.000102166269366812,26.6860042677498,14.2644643992385,12.7652766532416,36.2519111986553,0.000122856029860922,62.3701783260404,30.9253698776579,34.9895150859401,97.135796471458,73.3626330613635,0.0900090869943226,30.7900396908269,80.364531252511,10.720033192118,0.0649500549597422,1.03766082867964e-06,2.80039098226299e-06,32.0180112770454,31.9637516351372,47.3211989721907,36.3698789661557,32.8617642079229,52.8621516169525,33.8343462451529,61.7566432417061,34.5216078140262,59.1171191697606,27.5525274812466,0.00107727700870166,46.0555771808237,40.6470685652844,60.4818430184957,1.34925393679167,40.0824080224601,55.8997888485187,31.9330659002932,64.107634678981,30.9751277615499,41.4766230220728,70.342707055802,0.00163935930092004,0.0016880554171592,9.04795312135808e-06,0.00154036316693612,0.0212377459147998,35.8591853916699,60.0553100153377,48.3094995034972,0.00501151874472905,0.0101134726227948,0.0433503134592731,0.0424740783869582,0.000590812160867646,0.0577551937106702,34.8991039168271,0.00199227043223353,0.0327519240981988,0.0134761188216982,0.0720386265069256,0.00309736519478401,0.0228327580608407,0.00287115358973974,0.256904253033814,0.0626312008640848,1.36311059506036e-05,52.8186674125747,0.00142926882953236,22.1758926546748,46.1300108436815,0.0156767472898614,42.3351186828052,60.9095700846576,71.4141131235845,75.6862449929843,96.6223593384908,41.819515555742,34.4283718244832,45.2207050619014,77.7758336664436,46.2738031230367,0.132876306743576,37.3462177821182,0.088392960048011,17.7593424263241,0.000181390242941008,0.00364703632855671,0.00567204769398564,0.0233660928955866,5.43810763673209e-06,0.000185271403617517,0.0280361600295164,0.000603217158354222,0.00116306029231198,0.00023922835396624,8.7017815324988e-05,4.17175802471758e-05,0.000219274338179786,0.00164825640438114,0.0013121323675773,1.30565333912943e-05,5.4619677052157e-05,3.47815018807858e-05,0.000136431425409307,0.000792081312358522,0.00185033546002301,43.6936845924364,35.0914920964225,38.7318589494243,0.26724982390524,0.022837866824019,0.00125942862410989,0.0135065292700968,0.0011929720265025,5.05970365726255e-06,0.000473704015060215,0.00572371146837962,0.00512197612165079,58.2452451993052,49.3981496287281,42.1750921450079,0.279833153732483,34.1316641908636,0.0663610452022897,36.7521956492373,0.127791585233302,0.00157127921742356,45.0707602340363,0.0433962594054359,54.085732292293,73.7773675300726,0.00286413575054403,0.0818199886233104,0.0199207392724583,0.00470603754563569,0.0102175394878003,0.0633784872418757,0.000131646802809997,9.93631116364387,0.0123939015369388,0.0667191644102387,5.23206167195464e-05,2.91351324090623e-05,0.00347059194313901,0.00385467362696628,0.000525235856813955,9.65482626364724e-05,0.000333383171090201,0.027234459461138,32.228703710794,0.00295433581760479,0.0128612525373452,0.0134621122319067,0.0891953138633913,34.2244859740067,1.35346953619645e-05,1.44222713721339e-06,0.000277775863704098,0.0252321756102751,0.00256037256472641,0.00366257954523934,58.6058126739691,62.1587233004073,0.031809587629859,0.00372602347669404,0.00139552533982975,0.00534012197270974,0.0134909124342037,0.0045202455426125,0.103347982265635,3.60988107916565e-05,0.0501944808758929,0.00275293217069905,1.68025180346148e-06,0.000153283577973065,2.40030005140706e-06,0.000473704015060215,6.73584620241573e-07,1.62484332304233e-06,1.98743550689937e-07,0.000158991361118901,0.00076987288070142,7.56317782008858e-06,3.67394151018168e-05,7.19831661674742e-05,0.000488664046055887,0.000493274471692131,1.42216974367679e-07,2.05950887255815e-05,2.04940847560624e-05,6.0953347125461e-05,1.69508231002073e-07,9.38526026742251e-05,0.00800147967227363,77.61954661624,18.9559707040157,29.1946907395009,0.00182863473612434,0.000581934434511446,0.000475763769819109,0.00121469231044377,0.00136625724571858,0.00351016929060106,0.0017423209560901,0.00204766410120769,0.169473844798663,0.00279296206773588,0.0066782633596849,0.000850959991405424,0.000104939332817735,0.00379896801514856,0.00175640889190458,0.0161493792673853,0.0018462210319189,0.00297614361620425,0.00371241631786771,0.0136058970421235,0.0625694291266225,0.0499122851315378,34.2622141456977,36.167688072539,61.7903138657355,30.865900204917,51.2537104901937,61.3342101038818,34.2490290035572,34.5478274692638,51.7836762843529,0.210617350660112,86.1399884348013,16.2701527619349,0.0223050903121403,0.0770704738944597,0.0184502341982798,0.00926799218745727,0.00178144336866261,0.00745730183929047,0.000246454504638584,4.97323533082032e-05,0.0011438752314501,0.000582717780617487,0.0110476609621806,0.0383429980563847,5.00607936704659e-05,0.00918304641330309,0.000815544747554949,0.000283841460062869,0.000171361154397333,1.66469108673463e-05,0.0678941598958503,0.0462914361230487,0.00364841769201952,0.271231305052447,0.104021743028927,88.3078150334443,1.87253675475869e-05,0.000642035532977903,0.000319277032536088,8.30507073542607e-05,4.17166088919321e-05,0.000473704015060215,4.79653734718685e-05,9.98650940367986e-06,0.00121214468020902,0.00278230832550484,0.000947319403628556,2.51951608730251e-05,0.207320450670255,57.8745874347362,44.1630276972281,0.00109175925012778,0.000146075657801219,0.0032472808778578,6.32664730024005e-05,0.000473704015060215,1.10621988976909e-05,2.05042597326034e-05,6.0424173336603e-06,0.000115803601976133,0.000150419844808375,0.00013063501401614,0.000205657661005815,9.11518024040615e-06,8.31138906120084e-06,0.0214640536270235,0.0327112302587276,0.000707954389271673,0.0625987170731511,4.45393816206065,1.95299356930426,0.00394955272015405,0.0135162104032631,0.00460138054620884,0.00906697361190826,0.0042997152497059,0.00165376110339094,0.0160735850192694,0.00205469976106439,0.0121790577786585,0.0727172980619363,0.167674461841743,0.207386056293042,21.2396583304167,0.00060473232648075,0.00188313974987948,0.00145394226031224,0.00274924672703828,0.00249723578175571,5.98457510007643e-05,2.05540516132744e-05,0.000613788474902725,0.000331593025258436,4.51735829756236e-05,0.000900081108485657,0.000194488008725755,0.000106281619996939,1.95241108012333e-05,0.00388764060843688,2.69455980762857e-05,9.21013691202687e-05,0.0074654188514733,6.19394967043172e-06,0.0192963001056694,0.000496263006219781,0.0319873974427767,0.00382165718743875,0.000146594550354618,0.0476622694188903,0.000750107253180652,0.00415494413602359,0.237293621337845,0.144311481540647,9.1581487855122e-05,0.00187306253684296,0.0181648137778267,0.0421085752841345,59.5154088247933,33.6697400729637,56.4129656368735,47.8651431912733,54.9788819770701,52.8915683697456,0.00179022423474673,6.33970589273635e-05,43.97479425136,0.00078554802964085,0.0677031915136846,80.0219766645389,0.587650508904462,73.9007208935774,46.7552613873553,0.011828418459248,0.0273111346451008,36.5695682926261,34.1396035639778,42.9453283794607,27.6056878834472,29.4636737416101,22.5645159120497,44.0079600745214,20.2483085808857,23.0106020791636,31.4597528798576,23.5555947710892,0.00146260102425401,0.000473704015060215,1.09913908810524e-06,9.18495162424634e-05,3.12939247768872e-06,7.72025065331436e-06,1.62108739525973e-05,1.54745785117259e-07,0.000473704015060215,1.41542212801872e-05,2.75581242425387e-06,45.7606187580181,0.000990591749305035,0.0353156010416498,0.0174458555989655,0.00568976130177629,0.00104154088546263,74.9314889571933,59.2704755496628,57.8511683275089,31.0009697453145,82.8358574950369,0.000137434515966645,0.000771634491137585,3.10220421320526e-05,2.45833999596077e-06,7.5487876442899e-07,3.63165118134028e-07,1.22510494781235e-06,0.00989850372692382,0.00311683808042872,0.0013849328423159,0.0043214360348768,0.000260161767101113,0.000748912614966322,4.52120763157293e-05,0.000176632737733067,1.43082204594255,0.0315518634220609,45.7464268495088,20.766489784187,0.738756159204957,21.3361953485448,40.9749428639823,28.4444624827063,62.806481791367,50.1223686471256,43.1743667985893,61.106213756156,38.4744051696509,0.00230284869254355,0.00602738786056668,0.000701606126621623,0.00582029892687128,0.013463809264305,0.00483424407481318,0.000506184981369318,0.00384935972456215,0.000101537961442094,0.00127579992978604,0.000330132053974606,0.0144677177205316,0.000123731834750008,0.000646251866140378,0.0126481795945847,0.0757974583368664,0.0995996659920853,9.37149400373006e-06,0.000564964929991641,0.000888385433401207,0.00327297489084614,0.00458900749595174,0.0260229693312055,0.000437513281521482,0.00375574827906091,0.0157140417281245,0.00722968808572274,0.039733761285428,3.30915183992152,52.0102325378892,0.144130239245568,31.5152436273758,0.000208089323033956,0.000293701772878274,0.0188006629153941,42.5464421798031,0.00530411157844744,0.00478116502095298,0.00011012412717638,28.8625943352876,0.0852919126185501,68.4178087451236,3.76995225239918,0.000488664046055887,0.135594930190745,0.00233809350558183,0.000504165157807111,0.000504165157807111,0.000504165157807111,0.000504165157807111,0,0.00337826222501109,0.00270374957875211,0.00472629117833493,0.00421670831180193,68.4296576979549,68.3364547763866,58.4425915152657,31.1294980679237,1.62469029459055e-05,0.000970896223188122,0.0277415410670499,0.000181254243310624,0.0298354171891239,0.00239043198974871,0.0170349334228186,0.00286068329976643,0.00441725061608317,0.00483885650998666,0.000104753891996779,0.00319653752446195,5.04110822252718e-05,0.0491778149408752,0.0143045881531812,10.9205430101489,0.133357924766067,0.0283747363062871,48.4794751935038,0.00704024963534538,0.0345962452800217,46.9923949202071,83.3907082564852,29.7152117361468,26.1502985755649,35.7891729386868,63.4799883849049,0.0673381923669455,92.4318281149428,60.222786789179,34.5862055032356,102.363254785436,53.5543775515878,58.9996685117922,24.9023232178271,3.08627997777707,59.5691500602175,0.131876416251407,0.00163652356267205,35.6875732509821,16.5729792879646,0.00394018180859061,0.000383578681663796,0.046103317933223,0.00549343311271532,0.274410368791286,45.3687324397744,31.3763012322864,0.016442863745033,66.3424372479264,0.105182856662932,1.23056087410415,50.1425382112442,0.115415476036373,0.0328032146180167,0.153687920829646,61.7326818359547,37.7101499385523,33.1937896211267,0.037083359692269,0.000896693573872169,61.6286569177887,30.1935720312701,39.3071364497636,58.5751196931737,32.6659329353784,34.4743160627452,22.7046084202458,34.2746360989942,26.6795102248431,22.1229800969166,31.9910111101177,36.9369385379163,26.8309188572765,12.7626945222106,37.4993715847106,25.397649754195,27.3584510161837,17.9007955748894,21.223486015638,35.4518787311512,11.92686252903,22.394739279183,36.599831094532,20.7101315965895,17.5414423068815,13.2891193751382,12.4045353788221,3.74297073625914,7.2319331698785,6.07918707839415,16.2233758694509,9.80958126833752,4.44878206049158,8.71984899087365,3.18142929979551,5.92716732182618,10.1158659316579,0.00546819971757265,52.3451601493307,53.7017824876603,5.60067879498256,11.4290490737068,18.4153643189139,48.5768381607402,30.6088482098764,78.5284190545872,59.7836051037993,0.436429462170893,57.3499676091157,40.4772755714276,30.012254650252,54.4768813546189,64.229715017149,0.141048868467368,53.4298041591992,29.4189770601384,0.0753717215836847,0.0695762250908649,0.143723845129012,0.00170695778134416,0.0116418782055818,0.0146542506958637,0.0273250772037722,0.00607169776217244,6.52384923625681,4.68683749272069,11.4281604883588,20.0216537099258,13.5524829709082,27.4481360525527,22.010414951794,23.1751171296767,38.8060584453349,27.1141161434507,18.1947503047579,35.4748904064034,10.9826126738982,21.1920080781032,19.9009262612201,11.8234508977453,28.7972487412801,32.5291109536436,48.3199626850085,0.00679042191839354,0.000207663279674791,0.00101699981500525,3.68545647976384e-05,0.00686472563386729,13.6557594389039,10.5958105477421,29.3702116449531,43.1918784490758,12.6693173705736,19.2102209119227,44.8015054540514,36.5488010437862,47.2865326595639,0.0616968533519923,0.116758835748527,0.00202457080854089,0.27032959457825,0.0082546025300144,0.0148430779724624,0.00175403483564118,0.000849014748725487,0.000330016167727657,0.0032907761095301,11.5318716897098,5.9585382770757,14.1106713998584,19.2322847533747,17.8178408132172,40.1676607838299,15.4948345047278,22.8390015645487,11.3399770919068,28.2729110496449,22.5406494777352,27.0286203155698,18.2964365341364,21.549293369092,17.6154056210634,14.3569526081928,17.6476824909641,21.8376966166273,12.0345312027867,28.773999106406,9.88783195426248,6.65086997171051,32.9878893138466,19.294731043011,18.3196242284296,44.5721403665517,34.6992535846638,62.461221138136,46.2970234203388,44.8022845468786,34.1350532496676,34.7508038609983,60.1657146727373,51.3219790652519,65.1012556477079,93.0631440989838,0.137841012161104,0.000412614395549736,7.02720479516645e-05,0.00229606880894149,0.000580006974339362,8.87527393256271e-05,0.000458575420218902,0.00171867331167149,14.4393992710557,16.2814283279128,34.6198667070213,45.0653530733373,37.9293982352152,36.3468355090172,24.8471572376434,47.4943700842731,25.5803123652467,45.1077665450615,53.9679279370633,45.0363425372684,15.8837128936172,0.00138732414121813,0.00143777738015459,0.00369804245620319,3.10330491296817e-06,0.000189955840577129,0.00016842750090229,1.61116317755119e-06,0.000183605672646681,0.000563170295668593,0.00947259190676866,23.7909303337507,38.2088929183899,63.0117305114106,31.9061857899081,0.000104237963627581,49.7964318630947,0.811440832531898,59.6934330920782,52.4647098672843,0.316884547563488,23.4484520968243,52.3227382677453,38.7914339800168,86.9824360824807,68.7130820593314,0.123915873859067,74.1996676048999,32.9189971473541,0.103842638840331,53.1457241262525,0.0467122185860609,1.2715628316644e-05,0.000473704015060215,0.000473704015060215,4.04963917752445e-06,7.41353934952021e-06,0.000131905441485984,1.06215805581426e-05,1.12545246044931e-06,0.00044439990836401,0.000749080561404258,23.0466903857287,16.7152117456568,25.6978298206711,25.5438564319576,51.7494332388027,51.5968253693899,0.00402458117946581,0.00478857395397141,0.00844271795920864,0.000715887792913477,0.00206041347045249,0.000507018417329097,2.04548141993475e-05,0.000750257351921918,0.000392715417357895,0.0103379818907666,6.59103569937011e-05,0.000122365318101723,1.30568319794097e-05,3.91151815506668e-05,1.1833787974741e-06,4.08619841727151e-05,0.000104666213085823,2.17535538536535e-05,1.74601738178781e-06,0.00013755690471329,26.8437094229798,14.3847945352959,12.8733975583317,36.366008972924,0.000166071186067811,62.500913257837,30.9988048622996,35.1618449344711,97.4382054679713,73.5182361244189,0.119507714244359,30.8607152333798,80.673579223991,10.7806672272659,0.0882457774596821,1.36231912815885e-06,3.67492547754858e-06,32.1406952163495,32.1003402314298,47.4391534911669,36.4867243345755,32.960198377016,53.0346533766669,33.9651973747038,61.8842989370311,34.6159313789224,59.2510862133035,27.6654667933625,0.00142426549814641,46.1704683479211,40.7729396816592,60.7516616778841,1.38502661745142,40.176442115609,56.0758209705558,32.0908824269236,64.3506882045903,31.0458352715916,41.5765799947127,70.6488256524359,0.0022725907631294,0.00227791531074014,1.18195589004866e-05,0.00203574357764507,0.0277747901688417,35.9923541850257,60.1913668981259,48.4722760506187,0.00635862656038542,0.0139129970663007,0.0580224329690384,0.0549275160987334,0.00077499551562838,0.076155434469855,35.0417395867268,0.00266437065977422,0.0454292742249492,0.0183359706490085,0.098051482211556,0.0042285054672196,0.0308881814105156,0.00367042029207692,0.325210105452366,0.0841629221123709,1.15406856647251e-05,53.0571340199589,0.00188958292236452,22.3024260967654,46.2407605861907,0.0211046856788394,42.4235127666103,61.0445165539433,71.5793745046513,75.8442972303361,96.9803031324047,41.9214243141182,34.5255781430298,45.3093448902171,78.0552948482682,46.3621058796436,0.175563107516553,37.4309461072889,0.11874154994001,17.8602412567518,0.000239730111764901,0.00452604350127112,0.00749112908364705,0.03107955800051,7.28926549889306e-06,0.000240517050054934,0.0372621449153178,0.000774057005176086,0.0015443512070071,0.000325941809910797,0.000118766362236526,5.51370997926706e-05,0.00029251445477339,0.0021722113202766,0.00178147611085993,1.69386770071247e-05,7.15141028996253e-05,4.65975207788667e-05,0.000190807995241608,0.00108993796344413,0.00251203870660817,43.846667642877,35.2074626924313,38.8109394479887,0.353852137532243,0.0303755915411522,0.00163852516795294,0.0177090186035224,0.00160241882537401,6.78084616602478e-06,0.000473704015060215,0.00773022645726175,0.00697227310283358,58.3711030899173,49.5217533998653,42.2713913723235,0.366949332818976,34.3326555161987,0.0875331850928249,36.8681576226171,0.171243690796497,0.00213495524969133,45.1606663933729,0.0576497787067792,54.1972144001681,74.0157547948478,0.00380768210379264,0.108031553744195,0.0263839379660464,0.00626108914270157,0.013334003549517,0.084842437771843,0.000173918803948108,10.0039530764233,0.0164260127433901,0.0866735406697063,4.4857936253181e-05,3.88983453942808e-05,0.00451947143595774,0.00492646328217997,0.000699836456329196,0.000128088631638187,0.000445169011873572,0.0349451591204373,32.4169207737061,0.00398918774123589,0.0171043504029534,0.018125755857879,0.119577520560656,34.3917791767856,1.82821359173527e-05,1.79276082383757e-06,0.000339335267130306,0.0341020614847444,0.00347838229022876,0.00482313210327736,58.7975074721929,62.3747929879136,0.0423960114087005,0.00486650900215927,0.00184932116275124,0.00667995390165077,0.0179422417905665,0.00598057128279853,0.137186234416796,4.77017357010897e-05,0.0665333681696236,0.0036566084200527,2.05218465040405e-06,0.000201469053680285,3.22734840389533e-06,0.000473704015060215,8.88386768199105e-07,2.19721473076507e-06,2.93825890655185e-07,0.000212554810776019,0.00102482452516663,1.10051451282016e-05,4.79562976130081e-05,9.6278120406422e-05,0.000488664046055887,0.000493274471692131,1.92053568967155e-07,2.63368481064056e-05,2.75189828764422e-05,8.1364819574825e-05,1.17572121822867e-05,0.000123408864644737,0.0107059802300112,77.7811475559603,19.0327042124861,29.3333953769973,0.0024059944775636,0.000764198129859154,0.000617073134809891,0.00160699834070085,0.00177496872866286,0.00465133942713681,0.00230793960670654,0.00271199460272003,0.223233164589969,0.00370990205720479,0.00882264954950564,0.00114258213264749,0.000139361265088784,0.00504288732369741,0.0023179138970944,0.0213312484810804,0.00245521553503988,0.00395464684551615,0.00489385154218497,0.0179814585179239,0.0832756817950938,0.065344817885711,34.3574675177671,36.2622143867111,61.9290890498062,30.9762175854242,51.3592474520525,61.4929521994215,34.3506603647719,34.6265194355946,51.9303839595895,0.277360412268006,86.4167897876803,16.3648383057461,0.0294607837225508,0.101789538556025,0.0242795251235937,0.0123211822080913,0.00233482783344854,0.00986883793080163,0.000323017152967945,5.92820745549824e-05,0.0015016531935289,0.000769660499798675,0.014540347865128,0.0507382655673403,6.84045051637235e-05,0.0121925968017611,0.00108170805041955,0.000376228960282248,0.000227647865351797,2.2307640799173e-05,0.0897755992836883,0.0630679728243949,0.00396870753896796,0.358364895816583,0.139522540489686,88.6913857901863,2.94433974376962e-05,0.000847927186566731,0.000420983540137244,0.000110546730669911,5.39682675568892e-05,0.000473704015060215,6.36419754978924e-05,1.35487069570058e-05,0.00172967043139452,0.00337456482224251,0.00127125622048961,3.34110822211787e-05,0.276674236943109,58.0488370985678,44.250270004585,0.00143740426782538,0.000192699185407369,0.00429470865948954,8.45234275553775e-05,0.000473704015060215,1.48225529585259e-05,2.72805079204776e-05,8.06864392521883e-06,0.000153088606655568,0.000199343418618499,0.00017237443797466,0.000272720079853085,1.21534789836874e-05,1.09643697646162e-05,0.0265128736243767,0.0428034676270294,0.000939943059871367,0.0823503136099911,4.49430486523555,1.98981495977215,0.00519451290702842,0.0177812714765967,0.00610187066679804,0.0119061051621087,0.00565308432742406,0.00218974200494834,0.0213256627032617,0.00269004166647665,0.0160952195828936,0.0956429770142888,0.224822399429525,0.274746965428795,21.2825832669354,0.000803857695397354,0.00249440023764883,0.00192922507047279,0.00364873319854475,0.00334642692049734,7.37013585568516e-05,2.7665478663807e-05,0.000824402770308083,0.000444035033857173,6.09077627686219e-05,0.00122410486770039,0.000260139597252104,0.000143626760399333,2.59731612710115e-05,0.00557064831843947,3.94852374125066e-05,0.000125180524558586,0.0100630292194226,7.99968086631928e-06,0.0255912177011668,0.000623710546024481,0.0436663548861199,0.00521550777117782,0.000210677440084515,0.0652243863305475,0.00103746162439876,0.00570265802011836,0.314522481436111,0.195187379988086,0.000130013085676709,0.00246974693906272,0.0256753859139727,0.0564991399786761,59.858597006448,33.7440584500771,56.5292158367723,48.0316315958574,55.2805396001172,53.1798471682832,0.00240644109379895,9.4441938466863e-05,44.1204339000889,0.00198264726930556,0.0902220123146421,80.2938738286259,0.641110753316462,74.0597931744404,46.9111047430596,0.0157579056653924,0.0352589513412287,36.7265420774946,34.2889993836831,43.1393331203422,27.763918166182,29.5934260960145,22.7251590516626,44.1456797214738,20.3671270930008,23.155671611629,31.6035040807285,23.7012077464913,0.00203418763821756,0.000473704015060215,1.5035834026294e-06,0.000120977291462442,4.46562890811685e-06,8.68518317392921e-06,2.24449816709566e-05,1.1854418497408e-06,0.000473704015060215,1.94402832151284e-05,3.62140962795083e-06,45.8789991518552,0.00130728115307135,0.0466717872145252,0.0229638567127635,0.00740330928588247,0.00137789424656213,75.0894532824353,59.4236517628023,57.9788295435075,31.1159141069743,83.1111781647324,0.000182325785542027,0.00101094756257369,4.17996238435549e-05,3.77724481932354e-06,8.3007442932744e-07,5.00701981634809e-07,1.82024389549571e-06,0.0131795074528415,0.00409947415864942,0.00183033949733819,0.00567171800406074,0.000344337870550192,0.000983464595322596,5.93975113456016e-05,0.000231660614420814,1.46539843958703,0.0413594384694601,45.9353914230706,20.902005811198,0.80005771471352,21.4933637321597,41.1038836172253,28.5367464803353,62.9913504198287,50.2185141547305,43.266459190935,61.2577115259753,38.5926923119366,0.00306770331632582,0.00790833226567215,0.000915551679536304,0.00770267039396986,0.0177106539955774,0.00655942513107199,0.000692171273326291,0.00509991237928057,8.52168974037359e-05,0.00174371544124885,0.000436658320535447,0.0194711327016732,0.000155365627690772,0.000868940066901728,0.0167384909034865,0.10004087910369,0.133391085941458,1.16011381473107e-05,0.000772664294311184,0.00114715545492529,0.00438712193989603,0.00626837400763636,0.0355407518173444,0.000581788351316195,0.00502921915037407,0.0209177136431106,0.00952057248531588,0.0526820968132546,3.33685650473485,52.2466548423311,0.191272642076287,31.6443259152056,0.000290678727356515,0.000394686950252241,0.0247088663027673,42.6900662598478,0.00701492234134707,0.00634137183614021,0.00014717385900209,28.9292310539104,0.1109291809932,68.6630647358355,3.81476368970054,0.000488664046055887,0.184402016764435,0.00303685787417941,0.000504165157807111,0.000504165157807111,0.000504165157807111,0.000504165157807111,0,0.00419274309798233,0.00336798227514906,0.00586641238100494,0.0052270072503616,68.484508871283,68.3845448592026,58.4932204577406,31.1624361875851,2.10680270572024e-05,0.00120310710249544,0.0358872376726461,0.000230334886247903,0.0370190787682719,0.00294168730682087,0.0209114686602441,0.0034687484765452,0.00543658721707181,0.00603419781349719,0.000128986908713636,0.00479346915959219,6.85049662328883e-05,0.0609338025683762,0.0176959712845684,10.9365576531793,0.164772923893551,0.0365950988457703,48.5213345455497,0.0090625416901034,0.0435295257830247,47.0207903204166,83.4741444246207,29.7301227685025,26.1730024003884,35.8146502580545,63.5105357336552,0.084073286298782,92.4907698653432,60.2630151076429,34.6039310457619,102.437974183251,53.5802459619141,59.0284331855474,24.9145936245639,3.10612419493353,59.6091719201885,0.16609623349805,0.00206350039460379,35.7204883751558,16.6007296740575,0.00490038771579634,0.000364705920971767,0.0580049275460225,0.00682253392468229,0.343671661842467,45.4031397447619,31.4100143653766,0.0203851637713787,66.3981730962676,0.13082529027865,1.27945850981117,50.1781889506186,0.142856927521495,0.0407188225790149,0.190434621107955,61.7665257413565,37.753210124098,33.2366035831551,0.0462691256954762,0.00111421209175289,61.6661831420193,30.2081247796075,39.32484172261,58.6126899748062,32.7013263273094,34.5171918261198,22.7392935220895,34.3112916982495,26.7149843082276,22.1534177120215,32.0235247887673,36.9828746058277,26.8730589831849,12.790886232002,37.5422535177579,25.4411684461189,27.3994218073247,17.9316765197926,21.2605365288696,35.4886803743547,11.9549284657583,22.4323059308721,36.6498794117939,20.7469941785358,17.5726965245779,13.3146166742287,12.4326454682234,3.7607969428066,7.25321925690155,6.09984728189436,16.2576505858534,9.8380495879474,4.4693251686947,8.74397127364585,3.20267967040051,5.94656765106744,10.1415351635053,0.00679288972846698,52.3771914417378,53.7341548425143,5.61945888136072,11.4542025618268,18.448431385095,48.6070765290459,30.6237513327627,78.5806225724241,59.8218472096964,0.531289147517846,57.3823652285582,40.515614067407,30.0264944382204,54.5037384345474,64.2863726266345,0.177205779586126,53.4548149244642,29.4462617321738,0.0937943829621538,0.0873379088401384,0.178190816534877,0.00216348834829456,0.0144349397643497,0.0183444307381138,0.0344620333231349,0.00756311471548767,6.54366259190333,4.70707738917788,11.4546929701433,20.0583977967795,13.5815089670581,27.492870386817,22.0464301203402,23.2129760726896,38.847931317871,27.15776369654,18.2300053117571,35.5196820987953,11.0112780654309,21.2262971959744,19.9357110834859,11.8491780095395,28.8388292085166,32.566456640802,48.3490645256221,0.00859099605764117,0.0002840403661671,0.00127255146899192,4.58318896285401e-05,0.00852221818117996,13.6782507842844,10.6177186100003,29.4136949689372,43.2244190853189,12.6990385548237,19.2431957013168,44.8545504218146,36.5837115689016,47.3143169069452,0.0772905735372568,0.146866694261231,0.00251894369299423,0.335382973013255,0.0103844000420122,0.0185973289030445,0.00220575168435108,0.00105345079105403,0.000410883813101902,0.00416236677616425,11.5537226566719,5.97688564192084,14.135917344089,19.2589103504155,17.8491045596034,40.203735268278,15.5203975602711,22.865722716881,11.3645168416148,28.3051592180408,22.5654533034452,27.0617243738673,18.3208609356658,21.5778025692498,17.643782643998,14.382611382358,17.6751394057016,21.8617453552261,12.0601084236762,28.8095121807744,9.91256976674966,6.671614785231,33.0314452038085,19.324082805668,18.3516864722395,44.603072721186,34.7429281657773,62.4934833124444,46.3361647713274,44.8263646718007,34.1798399264218,34.791483945491,60.2044260214349,51.3481308819307,65.1344369822344,93.1745808519775,0.174238866268215,0.000520681254421811,8.7557303141878e-05,0.0028561890912961,0.000707386628540075,0.000113441244251651,0.000578371056204627,0.00217862305773646,14.4684926042175,16.3059981302237,34.6574058623614,45.1015113804164,37.9600271353196,36.3839117278835,24.880918463708,47.5289458864599,25.6116836542451,45.1534016826426,53.9948868689877,45.0710281540655,15.9003745139272,0.0017343693731738,0.00180082273380596,0.00464932213241773,3.88285437239695e-06,0.000234846184186082,0.000209853149050607,1.39918450889431e-06,0.000228261346615288,0.000701309177525035,0.0119374890072447,23.8301064448964,38.2523341823568,63.0506282656488,31.9211604523976,0.000129851239410542,49.8198844341538,0.856174083460807,59.7287943666744,52.4933625462,0.396154718984926,23.4662252244035,52.3693973304688,38.8077870222917,87.0482041652339,68.740459334573,0.156200009928068,74.2707336171377,32.9511428177256,0.128505560708473,53.1712345941946,0.0588450581065656,1.52042969971288e-05,0.000473704015060215,0.000473704015060215,4.9871030934491e-06,9.24731140481547e-06,0.000164106040922447,1.32377286764626e-05,1.40697920759921e-06,0.00055316605790251,0.000934569998148133,23.0791780179421,16.7448120792401,25.7338387181554,25.5750272260524,51.7750712577671,51.6216358561123,0.00546880194864941,0.00586363096282966,0.0106839979134271,0.000896906402808826,0.00259565798931187,0.000658339940573133,2.54310714460023e-05,0.000945350426815231,0.00049280962788938,0.0130310306299284,8.31515540994766e-05,0.000154005048542092,1.66748119493173e-05,4.91958100785603e-05,1.44958153242918e-06,5.12663532895665e-05,0.000131165870618666,2.73380973836209e-05,2.1123376806248e-06,0.000173250626284815,26.881468741075,14.4144577532591,12.9005380442066,36.3948638833636,0.000209642064511091,62.5306458591819,31.0121809328374,35.19184482163,97.4935519323867,73.5545693021138,0.14913299581383,30.8735635629539,80.7290351149943,10.7961203762845,0.111742457459339,1.68919432503211e-06,4.55288885405879e-06,32.1715600516589,32.1338901932803,47.4674298796274,36.5161944042336,32.9858175291093,53.0768104867727,33.9976923560146,61.9148500207204,34.6408554607878,59.2834473572596,27.6936641767843,0.00177290976472817,46.195359737122,40.8046526371681,60.8012747765151,1.41492265012877,40.1950335771984,56.1115431111236,32.1211024494195,64.3991078831721,31.0608330791271,41.6002259332725,70.702069794603,0.00291325580479313,0.00287254913401122,1.45990058899976e-05,0.00253355047292972,0.0343328470420415,36.0256747251377,60.2232792272709,48.512413806156,0.00769639890015558,0.017753965822529,0.0728027666429394,0.067384061210096,0.000960070340237877,0.094650168709684,35.0770726341928,0.00334062859182661,0.058251865366715,0.0232378906198572,0.124315222072856,0.00537010685477359,0.0390152959695236,0.00446903772108591,0.395811522152913,0.105863754232254,3.82707887155925e-05,53.102088968642,0.00235229363486865,22.3264460535972,46.262376327112,0.0265794158706699,42.442340911659,61.0773884096555,71.6198004784315,75.8815089960702,97.051634425274,41.9472949344798,34.5509158209299,45.3295173598338,78.1117769038596,46.3823531028337,0.218445062363575,37.4476052293855,0.149328555207499,17.8813075404645,0.000298368401368047,0.00539841830994916,0.00931607908718448,0.0388298396151236,9.15146871157406e-06,0.000295737459010269,0.0465358526918127,0.000944304657086822,0.00192734800682404,0.000413438855463926,0.000150846564282983,6.86054729296271e-05,0.000366155303752304,0.00269762274621657,0.00225504483384636,2.0813387783921e-05,8.84336193656105e-05,5.8489117213855e-05,0.000245826260119977,0.0013908742273085,0.00317978515120789,43.8842117433503,35.2362963564064,38.828578179004,0.44083415904269,0.0379557070809394,0.00201612929888863,0.0219152418507277,0.00201488335381711,8.51302188986368e-06,0.000473704015060215,0.00975358273399415,0.00884073136811684,58.401327894854,49.5525985182051,42.290600067034,0.455013561652675,34.3705134745145,0.108812028202346,36.8979550911108,0.215015001590788,0.00270304461866766,45.1805961061975,0.0719785233311813,54.2230961266086,74.063250988638,0.00475667827488908,0.134365698792539,0.0328816749799313,0.00782412421908348,0.0164587553537046,0.106448521594981,0.000216473228682727,10.0219781583129,0.0204793417972313,0.106642336332386,3.60341130862628e-05,4.87228285780178e-05,0.00557077112684099,0.00599514419510754,0.000875418371278426,0.000159672035525373,0.000557662885587213,0.0426006987497874,32.4501268825016,0.00503341353510265,0.0213710226334276,0.0228236260001951,0.150163558059663,34.4222834047079,2.30717186462992e-05,2.13795248732204e-06,0.000400094742721182,0.0430452643094936,0.00440445768489232,0.00598838058725915,58.8440445336427,62.4164006918826,0.0530455218151045,0.00600948812175861,0.00230548435864881,0.0080072828351867,0.0224191075013183,0.00744719721083725,0.171219865216133,5.9360011880256e-05,0.0829588084309486,0.00456527320148083,2.41769978967905e-06,0.000249731104290792,4.06135582860645e-06,0.000473704015060215,1.10396230733597e-06,2.77476881027954e-06,3.90965277293947e-07,0.00026645446815749,0.0012811095944287,1.45279687197149e-05,5.91804996219861e-05,0.000120731185437436,0.000488664046055887,0.000493274471692131,2.42117073013346e-07,3.20681568006851e-05,3.45919010410292e-05,0.000101897331839043,2.38024908521674e-05,0.000153080349764764,0.0134294955282104,77.8196237569229,19.0543281138031,29.3677921899153,0.0029860424311335,0.000946877764595864,0.000758521973046832,0.00200112647087581,0.00218458121279924,0.00579833770907345,0.00287652519807426,0.00338048581514402,0.277210132184513,0.00463205080032839,0.010976986847869,0.0014359790596627,0.000173969411100796,0.00629349676139656,0.00288198399564533,0.0265359698881462,0.0030677596585165,0.00493887456513612,0.00608038778753881,0.0223780324290466,0.104106802221757,0.0808255834402059,34.3838714925463,36.2864394634227,61.9634319266284,31.005043463521,51.3834941916747,61.5315683685396,34.3718624613027,34.644782642951,51.9656464134031,0.344393318147478,86.4713518053643,16.3836799949677,0.0366519968945173,0.126635556436146,0.030130649608725,0.015392323848219,0.00288989886589224,0.0122922426018781,0.000399818437408263,6.85239956768016e-05,0.00186072738461452,0.000957471195483498,0.0180456297172286,0.0631960625793587,8.69350653906347e-05,0.0152195797210901,0.00134930645548127,0.000469113298551675,0.000284232922652437,2.80063120973701e-05,0.111753528720499,0.0799892459279857,0.00425089828244414,0.446021436039153,0.175301734704426,88.7652686106509,4.0482651106537e-05,0.00105473413802763,0.000523136794483029,0.000138203383365614,6.62303824387779e-05,0.000473704015060215,7.94055780278321e-05,1.71422851597811e-05,0.00225617179717981,0.00395545379807176,0.00159772202279842,4.16699038710172e-05,0.346471703153962,58.0824721833414,44.2692822145225,0.00178440073040563,0.000239523209803048,0.00534721902487947,0.000105916805476906,0.000473704015060215,1.86088156431264e-05,3.40957752800148e-05,1.01078591743978e-05,0.000190551383987877,0.000248523502468498,0.000214299719621238,0.000340145990512075,1.52112736097193e-05,1.36294870159912e-05,0.0314930221286673,0.0529276750268033,0.00117322230588234,0.102189497639825,4.50883154243227,2.01693299982721,0.00644465808237265,0.0220643968544084,0.00761175525897908,0.0147560847236676,0.00701199266033739,0.00272883267630607,0.0266041466287033,0.00332759717980777,0.0200304291121888,0.118664076198337,0.28242203651588,0.342454679572045,21.2920928663026,0.00100411717583426,0.00310843786849533,0.00240686999517592,0.00455286788440341,0.00420179846325536,8.72364768390083e-05,3.48338369943263e-05,0.00103661072535055,0.000557278909209304,7.67702685359021e-05,0.00155125189033708,0.000326229341303316,0.000181294937426389,3.24612924779704e-05,0.00728248664727186,5.22646236354607e-05,0.000158580549917717,0.0126819443981214,9.80372884278508e-06,0.0319183173308213,0.000750201088265925,0.0554706249612957,0.00662361801926236,0.000275861005344983,0.0829785933128744,0.0013284329133298,0.00726804468464436,0.392580648661484,0.246538794018097,0.000169064411017201,0.00306932421859847,0.0332964612587756,0.0709953961165974,59.9216752551801,33.7598601832166,56.5516816760816,48.0618122613382,55.3371026880675,53.2336135922026,0.00302776544665569,0.000126186945794669,44.1558398425398,0.00324230551307548,0.112888167346623,80.3483310682058,0.699080787093901,74.0972263907815,46.9489198504107,0.0197129192291828,0.0432111017292561,36.7650681235347,34.3249347567301,43.1865782256347,27.8021026551194,29.6257988222669,22.7643886637148,44.1798765551804,20.3977034870758,23.1917886258622,31.63944260265,23.7379096624271,0.00261295288671803,0.000473704015060215,1.89970561738822e-06,0.00015021671406328,5.82379457454823e-06,9.57603655297829e-06,2.87550474364654e-05,2.26993387689361e-06,0.000473704015060215,2.47863971665096e-05,4.48970908767275e-06,45.90719959951,0.00162472949116221,0.0580755554991471,0.0285023840300161,0.00911931606448776,0.0017156919692952,75.1261643832995,59.4608667212752,58.0077223178239,31.1460252243477,83.1673939343424,0.000227454713342857,0.00125086884059605,5.2666752327418e-05,5.1283719369033e-06,8.97218278424247e-07,6.3986183524689e-07,2.42804028970947e-06,0.0164826313295858,0.00508586136496514,0.00227793449546987,0.00702624561074133,0.000428921720286709,0.00121891239815362,7.36227638896196e-05,0.000286847339167697,1.49445652886274,0.0511976776565378,45.9803669446458,20.9348437556097,0.86534627260623,21.5307661590999,41.135744951642,28.5603849445783,63.0358238236331,50.2396051948247,43.2844058499855,61.2876703815465,38.6220614347468,0.0038373929064652,0.00979647444123402,0.00112990844360224,0.00959631213594683,0.0219741308762542,0.00830141915169096,0.000880078375915868,0.006357884756523,6.61122030213602e-05,0.00221643115374365,0.000543687310539667,0.0245162371537548,0.000186615870212115,0.00109329035075481,0.0208521976384915,0.124398124556436,0.167441384580872,1.38285059696409e-05,0.00098223526665563,0.00140615883012799,0.00550897982407908,0.00796293603094051,0.0451452528047571,0.00072682125037082,0.00631082879657113,0.026152052605862,0.0118207849775104,0.0657070603246516,3.35241683732502,52.2928064568207,0.238687686227456,31.6771514067488,0.000374627593717381,0.00049644288845947,0.0306401486236125,42.7258307656873,0.00873415038212674,0.00791023536126229,0.000184481149712456,28.9422572125641,0.136611836873613,68.7105100677774,3.83672381641984,0.000488664046055887,0.233633864933339,0.00373695506836197,0.000504165157807111,0.000504165157807111,0.000504165157807111,0.000504165157807111,0,0.00500799196123848,0.00403292630597866,0.00700783381347643,0.00623818693052714,68.4876868243652,68.387221838266,58.4957333372376,31.1679820661555,2.59058440885025e-05,0.00143550635617594,0.0440606795429143,0.000279523160734132,0.0442088889705689,0.00349319104733955,0.0247889942833922,0.00407637227854818,0.00645640902494161,0.0072313142062532,0.000153231917330673,0.0064029242122988,8.67061905643116e-05,0.0727016212824628,0.0210903650428023,10.9419360238824,0.196210646675396,0.0448427497742431,48.523895370419,0.0110912672745806,0.052480266961639,47.0234633147512,83.4790931099043,29.7311066994228,26.1751607450395,35.8167327237634,63.5125150525865,0.100828012833621,92.4946162303869,60.2662525748801,34.6059906046702,102.442481510516,53.5821829977443,59.0304919110895,24.9161177085597,3.12232737066987,59.6127509403489,0.200390978883898,0.00249132240856466,35.7249427596184,16.6068883624955,0.00586185973600933,0.000344152850209039,0.0699300061188645,0.00815290805766825,0.413047166470521,45.4066001186672,31.4147964155067,0.024330559643037,66.4014949440725,0.156495500529744,1.33312561274935,50.1807028773185,0.170317467331597,0.0486417741053748,0.227208255389267,61.7687112090093,37.7574614623381,33.2414735815077,0.0554671969256103,0.00133197172267694,61.6692110131323,30.209844779317,39.3262204791494,58.6150068832988,32.7074031211907,34.521422217837,22.7440673018052,34.31616012534,26.7201031553637,22.1573470410641,32.0279472850353,36.9869463316453,26.8783418149062,12.7964347708558,37.5466333956894,25.4454254238075,27.4037786975956,17.9361165734957,21.264486967141,35.4938625762573,11.9600074348636,22.4375187838028,36.6543494745963,20.7515234172196,17.5770170501923,13.3200188102565,12.4378082888458,3.77136292869304,7.25978577016344,6.10744536416222,16.2619121167342,9.8433967033288,4.48031654314242,8.74983574426835,3.21890973404804,5.95626144721529,10.1468424941534,0.00811890674084932,52.3800152635828,53.7368941548411,5.62659244844333,11.4607452028464,18.4530457442395,48.6097048195282,30.6249361917492,78.584059559265,59.8249971656052,0.627427542650457,57.3851134451899,40.520297450138,30.0275752938581,54.5055760359647,64.2898773958434,0.213428325583605,53.4564091357514,29.4487112386825,0.112237136306712,0.105126597285689,0.212685649984966,0.00262106750083168,0.0172308708987458,0.0220401858209721,0.0416132413773035,0.00905622624797978,6.55259169404205,4.71816238538007,11.4597097149406,20.0632772833445,13.586405987464,27.4979758863444,22.0514241735184,23.2179246861177,38.852167105679,27.1621832083501,18.234955949997,35.5243340054974,11.0175220536973,21.2312939888572,19.9399973264338,11.8550454744449,28.8434565661019,32.5724481385144,48.3508614663108,0.010397130482615,0.000360845805104834,0.00152825488907152,5.48183426077172e-05,0.0101813138081806,13.6836096638587,10.622932631383,29.4189763294849,43.2278024446905,12.7037572723757,19.24755868707,44.8589713842971,36.5878352509748,47.3160406129403,0.0929085400710116,0.17703659533974,0.00301454244561378,0.401083426493586,0.012517999561022,0.0223567541726428,0.00265824270860068,0.00125805713944306,0.00049184367912534,0.00503588903907889,11.5578799509333,5.98458348993678,14.1403059035012,19.2628271154286,17.8536542701137,40.2069860515161,15.524904277088,22.8694717998038,11.3697553553775,28.309136751874,22.5697574847713,27.0652132468964,18.3253167166829,21.5816712811439,17.6478564550314,14.3877167424062,17.6798175745319,21.8669056529678,12.0650620501725,28.8131323695189,9.91884243907064,6.67765317184102,33.0361368384461,19.328744907919,18.3566495771505,44.6066774782701,34.7476472461186,62.4959663083256,46.3403327132834,44.8282600269521,34.1844500165671,34.796065461037,60.2075733771221,51.3500570534194,65.1367847057306,93.1810426894904,0.210710722551632,0.000628973413553021,0.000104861396484202,0.00341691526222792,0.000834712749953343,0.000138198387941755,0.000698404806644624,0.00263966589158572,14.4727586008229,16.3109548360323,34.6618310472143,45.1051477861686,37.9640984272502,36.387539854064,24.8847310143364,47.5333139201221,25.6168983360177,45.1575403614983,53.9970028276522,45.0749077193719,15.9032801334902,0.00208189013224755,0.00216436357596932,0.00560233397216646,4.66378685647528e-06,0.000279847786471767,0.000251324139873272,1.18103825222466e-06,0.000272960281589627,0.000839608027547294,0.0144074345208452,23.8342139078449,38.2569929398891,63.0535775084667,31.9223143264113,0.000155487031914797,49.821505284551,0.906477079718248,59.73107196021,52.4951740943075,0.475541252335767,23.4681096963489,52.3722260323909,38.8088722673451,87.0521091962965,68.7421823988899,0.188543972574699,74.2746483737062,32.9539965444978,0.153187820017377,53.1728669946526,0.0710019526157533,1.7694355121643e-05,0.000473704015060215,0.000473704015060215,5.92473629785446e-06,1.10833023016558e-05,0.000196340595533503,1.58567477825921e-05,1.68884490557072e-06,0.000662053642243784,0.00112028834445603,23.0845122984794,16.7501784004309,25.737500526479,25.5806191438106,51.7772181369162,51.6237350665196,0.00691997801582066,0.00693886353428879,0.0129301970902434,0.00107821634449101,0.00313194128375499,0.000810193198052227,7.20152179703732e-05,0.00114082399149362,0.00059307332908435,0.0157298544418192,0.000100437467001924,0.000185755499706652,2.03031389006198e-05,5.92932593298392e-05,1.7162281664749e-06,6.16923811048784e-05,0.000157726892636108,3.29336208195784e-05,2.478879176569e-06,0.000209011366308613,26.8855085104297,14.4191675462479,12.9052641175546,36.3988005202007,0.000253294396837027,62.532988306391,31.012988215228,35.1938778125283,97.4967277815848,73.5571956380749,0.178784797020817,30.8743386717687,80.7320106241546,10.8028326480363,0.135281559051466,2.01663722761307e-06,5.4316275923635e-06,32.1754414515988,32.1375126647483,47.4700886797265,36.5199138250581,32.9900207558434,53.0804999165304,34.0015594781178,61.9173458647055,34.6451941298406,59.2863268854256,27.6973417695238,0.00212192998433469,46.1971475936165,40.8086555942781,60.8040584745636,1.44723675596819,40.1962193147221,56.1138346857839,32.1233300078764,64.4021109040069,31.0618557238178,41.6025324159681,70.7049271797662,0.00355549306669041,0.00346821007451453,1.73801619854504e-05,0.0030319178100335,0.0408954538104848,36.0299473605166,60.2259414379899,48.5164646621112,0.00903215769477521,0.0216034685934254,0.0876069695351015,0.0798397149847694,0.0011453452060696,0.113166639727111,35.0811673386118,0.0040177461232907,0.0711045766624096,0.0281486399742605,0.150631451576779,0.00651387066001844,0.0471580374096376,0.00526773720931324,0.467823989868947,0.127601026963929,6.53422783551957e-05,53.1048178068031,0.00281555410272122,22.3288283262868,46.2637288563449,0.0320649951478412,42.4436325746145,61.0802106196684,71.6233174557378,75.8843478296949,97.0560454507679,41.9507049375298,34.5551162964325,45.3311306111889,78.1153410449669,46.3844517954925,0.261370885914673,37.4487447289556,0.17997414363194,17.8855100925749,0.000357078552003319,0.00627031586415549,0.0111422521702128,0.0465878430413431,1.1015988564018e-05,0.00035095149428785,0.05581954696818,0.00111442479859753,0.00231069987374148,0.000501103066685855,0.000182993030209861,8.20840130416236e-05,0.000439879092732966,0.00322339842444263,0.00272951258734057,2.46868600198826e-05,0.000105357790158629,7.03963961809499e-05,0.000300975794491068,0.00169244928528134,0.00384882070506587,43.8879322747016,35.239540853988,38.8299081230404,0.527908811778133,0.0455460633477599,0.00239346256628347,0.0261225422850522,0.00242801463265438,1.0247519369893e-05,0.000473704015060215,0.0117805881553457,0.0107130701877194,58.4039151996292,49.5559811253359,42.2918386255468,0.543495414530326,34.3735072795084,0.130117301075506,36.9022527450438,0.258856625103908,0.00327223751432516,45.1820860941907,0.0863245740212766,54.2251468794196,74.066220775189,0.00570693231583335,0.160728799268393,0.0393875693753523,0.00938894151165575,0.0195847898994972,0.128091791368487,0.000259140451683713,10.0302500991988,0.0245376776905847,0.126607913877735,2.67624780557762e-05,5.85612479809696e-05,0.00662274225065827,0.0070625988438882,0.00105123079660542,0.000191257343939995,0.000670318822319789,0.0502449292639386,32.4527742620976,0.00607977056131294,0.0256429219104186,0.0275288002487805,0.180794217908329,34.4244656833904,2.78704624651402e-05,2.48219220174669e-06,0.00046071187265282,0.0520041428038927,0.00533222210968563,0.00715469754958655,58.8478335780133,62.4189851633332,0.0637090774542773,0.00715265860247587,0.00276220323922398,0.00933069124104848,0.0269008597006398,0.00891502621293571,0.205299571317883,7.10311111177301e-05,0.099404364796794,0.00547512631487041,2.78268254197729e-06,0.000298008846270668,4.89700940029936e-06,0.000473704015060215,1.31974906697541e-06,3.35345345010719e-06,4.88651502399284e-07,0.000320426484316557,0.00153768572438846,1.80691981243569e-05,7.04053248717009e-05,0.000145218658410682,0.000488664046055887,0.000493274471692131,2.92250609328803e-07,3.77968138758513e-05,4.16751298750415e-05,0.000122455601725404,3.59385868493308e-05,0.000182778748685121,0.016157193307086,77.8226757710477,19.0603670113136,29.3716608850239,0.00356676674309399,0.00112953879550946,0.000900001039314823,0.00239563835843895,0.00259451134607051,0.0069466750826965,0.00344581506169987,0.00405000178787569,0.331235335814411,0.00555543145428625,0.0131335497333092,0.00172978507820858,0.000208621430625365,0.00754556824271285,0.00344663129352179,0.0317457030138757,0.00368107995791684,0.00592436473670921,0.00726808552808139,0.0267792703003523,0.124965416227128,0.096317490996554,34.390097189796,36.2900606498986,61.9667019601538,31.0101950518445,51.385397638736,61.534777225422,34.373390986761,34.646411381524,51.9689050859553,0.411494105425625,86.474744567201,16.3865866632394,0.0438514095955386,0.151512109661006,0.0359864189985775,0.0184677384093954,0.00344529721587224,0.0147183656363104,0.000476668572758361,7.76578504938113e-05,0.00222010652557325,0.00114548046504658,0.0215535748302698,0.0756681133063412,0.000105507311945253,0.0182505638408459,0.00161724655027812,0.000562116163345692,0.000340888538668113,3.37130292302716e-05,0.133751324641247,0.0969387130863825,0.00452574633391352,0.533825959308073,0.211144523882617,88.7696424622608,5.15855809634458e-05,0.00126174627582636,0.000625395685014492,0.000165896741927386,7.84945596897329e-05,0.000473704015060215,9.5190015486817e-05,2.0743245898053e-05,0.00278472055578145,0.00453391647889237,0.00192477017405006,4.99391550364467e-05,0.416373620706212,58.0845398717463,44.2707026917923,0.00213171508000608,0.000286391521055947,0.00640088393399689,0.000127341522057646,0.000473704015060215,2.2401073746017e-05,4.09199404255032e-05,1.21500898430734e-05,0.000228054863204709,0.000297763664129187,0.000256267068990937,0.000407656607214244,1.82738293283576e-05,1.62975018387222e-05,0.0364572262078934,0.0630590394759029,0.00140680518833467,0.122049748508096,4.51838747640663,2.0451070562497,0.00769602543480842,0.0263517385629349,0.00912402610959474,0.0176085904970399,0.00837218413782,0.00326869150394077,0.0318890659923463,0.00396565758305312,0.023970217392254,0.141707548564469,0.340132161543309,0.410245823547127,21.2929349249311,0.00120465276942225,0.00372314798524187,0.00288509323351255,0.0054581425227468,0.00505856058235102,0.000100706871053079,4.20147268152851e-05,0.00124917179883918,0.000670697731109496,9.26608824503488e-05,0.00187906252139934,0.000392418035332893,0.000219033298795601,3.89584093271482e-05,0.00900048108570533,6.5092038747942e-05,0.000192049195166388,0.0153054661110132,1.16073911902841e-05,0.0382529777848619,0.000876506122737696,0.067302408036514,0.00803473346580287,0.000341270829791519,0.10077432178285,0.00162018109828365,0.00883723656349158,0.470947577495813,0.297997373710282,0.000208247131157436,0.00366967474983674,0.0409404150340359,0.0855142708806017,59.924991219236,33.7610283176729,56.553135131421,48.0634641930611,55.3403872639103,53.2366906954174,0.00365025440663713,0.00015808596489184,44.1598544907494,0.00451561479575866,0.135589820332487,80.3516899113613,0.762773265573323,74.1003159512984,46.9532693904424,0.0236741879734033,0.0511669230583651,36.7696046778163,34.3284686476797,43.1907901076007,27.8060612595835,29.6299211230779,22.7690102879828,44.1837713153218,20.4031235689543,23.1963952817573,31.6439316822434,23.7430155300215,0.00319296366911339,0.000473704015060215,2.29138347812661e-06,0.000179480408005274,7.1865047996594e-06,1.04508295929313e-05,3.50806709467211e-05,3.36579974716851e-06,0.000473704015060215,3.01452734636512e-05,5.3585876876066e-06,45.9101247389326,0.00194233244766684,0.0694894064015656,0.0340453524868007,0.0108361536139221,0.00205378855021449,75.1289998869064,59.464090150744,58.0101768989026,31.1513722659447,83.1709863520202,0.000272635360968394,0.00149092014433624,6.35533469119876e-05,6.48629649062454e-06,9.62672337031569e-07,7.79364380950083e-07,3.03846441310498e-06,0.0197910978640198,0.00607307449384576,0.00272604995051075,0.00838173230649015,0.000513592819108305,0.00145456360698485,8.78560386168549e-05,0.000342068239901684,1.52591374393592,0.061042588296671,45.9847599308229,20.9390345473719,0.937149264867549,21.5349903995599,41.1400998833536,28.5639561660623,63.0393615445597,50.2412893564038,43.2855687182967,61.2895474698549,38.6262959678226,0.00460811114131587,0.011686180604775,0.001344344552276,0.0114925732499921,0.0262409694857345,0.0100471440977487,0.00106839314993707,0.0076175966078776,4.63202851971232e-05,0.00269034367965273,0.000650819571403135,0.0295714880707279,0.000217750486881992,0.00131801417389472,0.0249713730496154,0.148782525235805,0.201554489985459,1.60575518406088e-05,0.00119220180315189,0.00166524137506764,0.00663256709671277,0.00966075603955326,0.0547684983640414,0.000872016339847915,0.00759418170973303,0.0313933636912556,0.0141235355815295,0.078749238728561,3.36732261202161,52.2957582678257,0.286165522481361,31.6822149885884,0.000458879600648504,0.000598368649087104,0.0365768050951015,42.7299496717545,0.0104552997981637,0.0094810816600049,0.000221849861740123,28.9431423993128,0.162302809997167,68.7135999534338,3.85573037171933,0.000488664046055887,0.282959331932533,0.00443735100681049],"Archive1208_field5":[8927.1,8927.1,8927.1,8927.1,35310256.9344611,8927.1,8927.1,8927.1,8927.1,9297252.28975317,9289041.55442571,9156819.67604773,21059875.9106857,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,6993308.38189846,8927.1,8927.1,9534082.2605019,8927.1,8927.1,18097304.2584363,11695743.222902,12960801.3416832,8084892.29863028,11924800.4202444,16249080.1155499,8927.1,16260105.9208611,19696649.2214848,15424054.838401,12175179.0868648,16048296.959628,16798166.9612036,14240673.0883589,5902318.50863079,20637165.9986531,8927.1,8927.1,21487299.5924254,25998477.4079393,8927.1,8927.1,8927.1,8927.1,89791.6368632493,20698140.5575968,22632611.8370204,8927.1,9849876.25558384,8927.1,5505439.12761599,12042003.5124458,8927.1,8927.1,8927.1,14381139.5153052,24235430.4997451,23273160.9550022,8927.1,8927.1,18521377.9995002,14838601.6526424,16185696.4932875,12669165.0976819,22159059.382543,25561566.02627,27956943.5525981,22863724.7196445,25577607.0971352,25638449.370527,21244529.9939049,24834048.8596965,26011472.2190798,30561890.896759,23126098.2087632,29159232.6656052,24318085.5507807,28652558.6303081,28239588.9353925,19856156.0106295,32160036.1122653,25490786.1585761,24818236.967409,27873111.4005175,30536531.2036373,29031461.5161854,31435582.8217483,33725763.470227,32609749.0181638,32997553.7536253,31088634.1638437,33786187.9115103,34500422.9473491,32992635.5260411,34364766.29968,32468050.6115278,32149186.9666389,8927.1,17966250.1770501,17631213.482679,33676155.2584798,29067059.2534253,28203432.7208536,18367755.5527405,14213611.7950727,15008378.6162162,19289251.2721451,3567571.38248027,17721345.7470027,20841324.2045138,13744922.7011632,15698626.116772,10017602.1726714,8927.1,13930277.3211989,8218617.72483559,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,33421982.3588412,34614121.3022459,31784933.3776267,29151819.5715611,30444524.3533448,26680051.2877499,25493690.1590632,26240538.6500326,21429536.4201339,27181931.6460699,29074262.2511115,23185344.4900825,31597094.4932959,26835310.9359565,28033717.8829572,30222430.3449805,24877183.2812718,21242381.4319959,10995809.9414915,8927.1,8927.1,8927.1,8927.1,8927.1,28989515.605394,31442196.8722985,23544232.4926191,18689940.6401438,31697774.7050362,29682617.5506193,24542592.6239824,20730292.8437984,12150750.8287004,8927.1,8927.1,8927.1,1999490.39001493,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,31882364.926063,32635044.7034222,32072259.447403,29874771.6799386,27424665.7088067,25551335.3888062,29217106.5952037,27851142.2387744,30251672.8105672,26497208.388071,24982406.0416587,27562709.3190655,27801025.1763719,28598336.121264,30626315.1886239,28998085.6587869,29356248.7260306,24614084.1520197,31429433.4785808,27950232.6441589,30114043.6949009,33143494.3428796,25197061.7885004,26919518.2416878,27537424.4653592,18486080.8597369,25984200.9428425,17225204.1111346,20441694.0489598,16547402.171737,23859134.6384675,22269111.8580039,18607728.9155864,15750231.3231901,15755453.84866,9286135.19982951,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,29616239.435494,25609204.7158157,23240399.6986896,22011295.1620406,20343492.5389387,23714989.6454891,26579255.6742962,18820888.1945675,24180902.08332,22512865.0008607,16752454.7309169,20082682.5677641,7653583.25863759,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,28563979.9287847,23322454.9582412,19128640.5448635,13450779.7907761,8927.1,14334106.8602212,3789819.29558164,11989868.2357135,13220878.455147,1503278.33602399,7199209.11863306,9549347.37679369,12340962.5022106,11211447.1114652,14625781.6766583,8927.1,9342086.15133636,8102306.86391208,8927.1,13081760.7493869,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,24743350.9186905,28843392.6877152,25675746.0222118,21497870.5126569,16529704.7191743,16170165.0219437,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,27397076.2333092,31182831.8901829,30941220.8581548,20578431.0737056,8927.1,17003914.9909531,11465685.1785852,7170049.82607498,12628631.770218,17006790.1534951,8927.1,12569229.4868196,10438188.9707034,6157931.71358903,8927.1,8927.1,8927.1,22172351.5526504,24959048.4509443,17655706.6611199,22388631.9240787,21320110.2357422,23784116.7516007,25725560.8246328,17698842.6945487,20292834.9629402,18671284.2679906,25929988.4971659,8927.1,16894239.4950161,22015606.7272055,9438638.40222456,4970550.20559683,14151520.2796353,13559295.0857807,8317739.43943742,10941299.1152215,13149624.413998,17038352.8405355,9040449.56686832,8927.1,8927.1,8927.1,8927.1,8927.1,20511970.1465342,17999997.2268456,20771858.2541986,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,22813785.0707311,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,2483480.05490662,8927.1,8927.1,9024041.39053205,8927.1,7116478.85755334,13420394.6840722,8927.1,14162762.1748162,18523181.4380259,19753295.8073095,17639433.0079778,11778092.9228462,19162415.6019742,20358237.1533507,14869629.8912454,11666501.7838708,14949056.1826418,8927.1,12861288.8429648,8927.1,7274659.62074096,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,23333483.0543215,23178600.0705801,15003160.6386611,1673332.27090262,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,17724935.5312403,19716674.3277229,13323860.0246471,2205203.69114102,8202046.86543983,8927.1,21411953.5465737,8927.1,8927.1,14857939.7256326,8927.1,16661080.878547,11108782.6024458,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,5878074.77496284,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,7490439.00802018,8927.1,8927.1,8927.1,8927.1,7980519.00325711,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,23626412.4795617,10995853.7053021,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,19164252.912594,24554185.338215,23574926.0691591,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,20596195.2879107,20096851.5362052,19183363.6121711,21929855.930547,15186668.6846508,19566343.7436329,12839297.0619001,14697607.9958224,19910494.0780814,1453297.58992044,11664108.2322346,6601301.71706708,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,2124572.03144031,8927.1,10273780.543868,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,596268.951960479,10662644.1984607,14687327.4366912,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,5696050.16213297,4994013.42387703,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,90227.2226059884,8927.1,13144857.1212201,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,2031132.90994889,8927.1,8927.1,8927.1,8927.1,8927.1,8904408.75171317,14778276.7403408,14352320.4883291,10517387.0203885,8794065.83895025,10011260.2048228,8927.1,8927.1,20663777.6060397,8927.1,8927.1,10210329.7037711,3957343.05095809,18498340.9821948,20876668.2624552,8927.1,8927.1,23823738.2271695,23887411.3359882,24158068.4049844,27151547.1633592,23181422.5734098,28744585.558281,19696426.5465548,25739157.4399202,25878112.7590506,22716867.1870104,24951781.6202678,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,18848057.7838228,8927.1,8927.1,8927.1,8927.1,8927.1,16794686.8402285,18548636.0766561,15139852.9893162,20763036.7884756,11388828.7313369,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,5257397.59629042,8927.1,21042813.3565483,28062041.1808738,4553058.70319606,29301912.1463764,18994903.2482457,23393353.4313398,19691288.1690213,14617508.1889865,13232183.4094434,13860638.6568738,18618326.6247918,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,8927.1,5089141.72284353,8810246.2782046,8927.1,24968586.5015155,8927.1,8927.1,8927.1,20800008.9902713,8927.1,8927.1,8927.1,12107102.9930699,8927.1,12042032.9671455,6145373.77398101,8927.1,8927.1,8927.1,7651.8,7651.8,7651.8,7651.8,30265934.5152524,7651.8,7651.8,7651.8,7651.8,7969073.39121701,7962035.61807918,7848702.57946948,18051322.2091592,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,5994264.32734154,7651.8,7651.8,8172070.50900163,7651.8,7651.8,15511975.0786597,10024922.7624874,11109258.2928713,6929907.68454024,10221257.5030666,13927782.9561857,7651.8,13937233.6464524,16882842.1898441,13220618.4329151,10435867.7887413,13755683.1082526,14398428.8238888,12206291.2185934,5059130.15025496,17688999.427417,7651.8,7651.8,18417685.364936,22284409.2068052,7651.8,7651.8,7651.8,7651.8,76964.2601684994,17741263.335083,19399381.5745889,7651.8,8442751.07621472,7651.8,4718947.82367084,10321717.2963821,7651.8,7651.8,7651.8,12326691.0131188,20773226.1426387,19948423.6757161,7651.8,7651.8,15875466.8567145,12718801.4165506,13873454.1371035,10859284.3694417,18993479.4707511,21909913.7368028,23963094.4736555,19597478.3311239,21923663.2261159,21975813.746166,18209597.1376328,21286327.5940255,22295547.6163541,26195906.4829363,19822369.8932256,24993627.9990902,20844073.3292406,24559335.9688355,24205361.9446221,17019562.2948253,27565745.2390846,21849245.2787795,21272774.5434934,23891238.3433007,26174169.6031177,24884109.8710161,26944785.2757843,28907797.2601945,27951213.4441404,28283617.5031074,26647400.711866,28959589.6384374,29571791.0977278,28279401.8794638,29455513.9711543,27829757.6670239,27556445.9714048,7651.8,15399643.0089001,15112468.6994391,28865275.9358399,24914622.2172217,24174370.9035888,15743790.4737776,12183095.824348,12864324.5281853,16533643.947553,3057918.32784023,15189724.9260023,17863992.1752976,11781362.3152827,13455965.2429474,8586516.14800408,7651.8,11940237.7038848,7044529.4784305,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,28647413.4504353,29669246.8304965,27244228.6093943,24987273.9184809,26095306.5885812,22868615.3894999,21851734.4220542,22491890.2714565,18368174.0744005,23298798.5537742,24920796.2152384,19873152.4200707,27083223.8513964,23001695.0879627,24028901.0425348,25904940.2956976,21323299.9553758,18207755.5131394,9424979.94984986,7651.8,7651.8,7651.8,7651.8,7651.8,24848156.2331948,26950454.4619701,20180770.7079592,16019949.1201233,27169521.1757453,25442243.6148166,21036507.9634135,17768822.4375415,10414929.2817432,7651.8,7651.8,7651.8,1713848.90572708,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,27327741.3651968,27972895.4600762,27490508.097774,25606947.1542331,23506856.3218343,21901144.6189768,25043234.2244603,23872407.6332352,25930005.2662004,22711892.9040608,21413490.8928503,23625179.4163419,23829450.1511759,24512859.532512,26251127.3045348,24855501.9932459,25162498.9080262,21097786.4160169,26939514.4102121,23957342.2664219,25812037.4527722,28408709.436754,21597481.5330003,23073872.7785895,23603506.6845936,15845212.1654888,22272172.2367221,14764460.6666868,17521452.0419655,14183487.5757745,20450686.8329722,19087810.1640033,15949481.9276455,13500198.27702,13504674.7274228,7959544.45699672,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,25385348.0875662,21950746.8992706,19920342.5988768,18866824.4246062,17437279.3190903,20327133.9818478,22782219.1493967,16132189.8810579,20726487.4999886,19296741.4293092,14359246.9122144,17213727.9152264,6560214.22168936,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,24483411.3675297,19990675.6784924,16395977.609883,11529239.8206652,7651.8,12286377.308761,3248416.53906997,10277029.9163259,11332181.5329832,1288524.28802056,6170750.67311405,8185154.89439459,10577967.8590376,9609811.80982732,12536384.2942786,7651.8,8007502.41543116,6944834.45478179,7651.8,11212937.7851888,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,21208586.5017348,24722908.0180416,22007782.3047529,18426746.153706,14168318.3307208,13860141.4473803,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,23483208.1999793,26728141.6201568,26521046.449847,17638655.2060334,7651.8,14574784.2779598,9827730.15307304,6145756.99377855,10824541.5173297,14577248.7029958,7651.8,10773625.2744168,8947019.11774575,5278227.18307631,7651.8,7651.8,7651.8,19004872.7594146,21393470.1008094,15133462.8523885,19190255.9349246,18274380.2020647,20386385.7870864,22050480.7068281,15170436.5953275,17393858.539663,16003957.9439919,22225704.4261422,7651.8,14480776.7100138,18870520.0518904,8090261.48762105,4260471.60479728,12129874.5254017,11622252.9306692,7129490.94808922,9378256.38447555,11271106.6405697,14604302.4347447,7748956.77160142,7651.8,7651.8,7651.8,7651.8,7651.8,17581688.6970293,15428569.0515819,17804449.9321702,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,19554672.9177695,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,2128697.18991996,7651.8,7651.8,7734892.62045604,7651.8,6099839.02076,11503195.4434904,7651.8,12139510.4355567,15877012.661165,16931396.4062652,15119514.0068381,10095508.2195824,16424927.658835,17449917.5600149,12745397.0496389,9999858.67188923,12813476.7279787,7651.8,11023961.8653984,7651.8,6235422.53206368,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,20000128.3322756,19867371.4890686,12859851.9759952,1434284.80363082,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,15192801.8839202,16900006.5666197,11420451.4496975,1890174.59240658,7030325.88466271,7651.8,18353103.0399203,7651.8,7651.8,12735376.9076851,7651.8,14280926.467326,9521813.65923926,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,5038349.80711101,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,6420376.29258873,7651.8,7651.8,7651.8,7651.8,6840444.85993467,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,20251210.6967672,9425017.46168752,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,16426502.4965091,21046444.5756129,20207079.4878506,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,17653881.675352,17225872.7453188,16442883.0961466,18797019.3690402,13017144.5868435,16771151.7802567,11005111.767343,12597949.7107049,17066137.7812126,1245683.64850323,9997807.05620109,5658258.61462892,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,1821061.74123455,7651.8,8806097.60902975,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,511087.673108982,9139409.31296632,12589137.8028782,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,4882328.71039969,4280582.93475174,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,77337.6193765615,7651.8,11267020.3896172,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,1740971.06567048,7651.8,7651.8,7651.8,7651.8,7651.8,7632350.35861128,12667094.3488635,12301988.9899964,9014903.16033304,7537770.71910021,8581080.17556239,7651.8,7651.8,17711809.3766054,7651.8,7651.8,8751711.17466092,3392008.32939265,15855720.8418813,17894287.0821044,7651.8,7651.8,20420347.0518596,20474924.0022756,20706915.7757009,23272754.7114507,19869790.7772084,24638216.1928123,16882651.3256184,22062134.948503,22181239.5077576,19471600.446009,21387241.3888009,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,16155478.1004196,7651.8,7651.8,7651.8,7651.8,7651.8,14395445.863053,15898830.922848,12977016.8479853,17796888.6758362,9761853.19828877,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,4506340.79682035,7651.8,18036697.1627557,24053178.1550347,3902621.74559663,25115924.696894,16281345.6413535,20051445.7982913,16878247.0020183,12529292.733417,11341871.4938086,11880547.4201775,15958565.6783929,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,7651.8,4362121.47672303,7551639.66703251,7651.8,21401645.5727276,7651.8,7651.8,7651.8,17828579.1345182,7651.8,7651.8,7651.8,10377516.8512028,7651.8,10321742.5432675,5267463.23484087,7651.8,7651.8,7651.8,6376.5,6376.5,6376.5,6376.5,25221612.0960437,6376.5,6376.5,6376.5,6376.5,6640894.49268084,6635029.68173265,6540585.48289123,15042768.5076326,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,4995220.27278461,6376.5,6376.5,6810058.75750135,6376.5,6376.5,12926645.8988831,8354102.30207288,9257715.24405942,5774923.0704502,8517714.58588887,11606485.7968214,6376.5,11614361.3720436,14069035.1582034,11017182.0274293,8696556.49061775,11463069.2568771,11998690.686574,10171909.3488278,4215941.79187913,14740832.8561808,6376.5,6376.5,15348071.1374467,18570341.005671,6376.5,6376.5,6376.5,6376.5,64136.8834737495,14784386.1125692,16166151.3121574,6376.5,7035625.8968456,6376.5,3932456.5197257,8601431.08031844,6376.5,6376.5,6376.5,10272242.5109323,17311021.7855322,16623686.3964301,6376.5,6376.5,13229555.7139287,10599001.1804588,11561211.7809196,9049403.64120139,15827899.5589593,18258261.4473357,19969245.3947129,16331231.9426032,18269719.3550966,18313178.121805,15174664.2813607,17738606.3283546,18579623.0136284,21829922.0691136,16518641.577688,20828023.3325752,17370061.1077005,20466113.3073629,20171134.9538518,14182968.5790211,22971454.3659038,18207704.3989829,17727312.1195779,19909365.2860839,21811808.0025981,20736758.2258467,22453987.7298202,24089831.0501621,23292677.870117,23569681.2525895,22206167.2598883,24132991.3653645,24643159.2481065,23566168.2328865,24546261.6426286,23191464.7225199,22963704.9761706,6376.5,12833035.84075,12593723.9161993,24054396.6131999,20762185.1810181,20145309.086324,13119825.3948146,10152579.8536234,10720270.4401544,13778036.6229608,2548265.27320019,12658104.1050019,14886660.1460813,9817801.92940225,11213304.3691228,7155430.12333673,6376.5,9950198.08657066,5870441.23202542,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,23872844.5420294,24724372.358747,22703523.8411619,20822728.2654008,21746088.8238177,19057179.4912499,18209778.6850451,18743241.8928804,15306811.7286671,19415665.4614785,20767330.1793653,16560960.3500589,22569353.209497,19168079.2399689,20024084.2021123,21587450.2464146,17769416.6294798,15173129.5942828,7854149.95820821,6376.5,6376.5,6376.5,6376.5,6376.5,20706796.8609957,22458712.0516418,16817308.9232994,13349957.6001027,22641267.6464544,21201869.6790138,17530423.3028445,14807352.0312846,8679107.73478602,6376.5,6376.5,6376.5,1428207.42143923,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,22773117.8043307,23310746.2167302,22908756.748145,21339122.6285276,19589046.9348619,18250953.8491473,20869361.8537169,19893673.027696,21608337.7218337,18926577.4200507,17844575.7440419,19687649.5136182,19857875.1259799,20427382.94376,21875939.4204457,20712918.327705,20968749.0900218,17581488.680014,22449595.3418434,19964451.8886849,21510031.2106435,23673924.5306283,17997901.2775003,19228227.3154913,19669588.903828,13204343.4712407,18560143.5306018,12303717.222239,14601210.0349713,11819572.9798121,17042239.0274768,15906508.4700028,13291234.9397046,11250165.23085,11253895.6061857,6632953.71416394,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,21154456.7396385,18292289.0827255,16600285.499064,15722353.6871719,14531066.0992419,16939278.3182065,18985182.6244973,13443491.5675482,17272072.9166571,16080617.8577576,11966039.093512,14344773.2626886,5466845.18474113,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,20402842.8062748,16658896.3987437,13663314.6749025,9607699.85055432,6376.5,10238647.7573008,2707013.78255831,8564191.59693822,9443484.61081929,1073770.24001714,5142292.22759504,6820962.41199549,8814973.21586468,8008176.50818944,10446986.9118988,6376.5,6672918.67952597,5787362.04565149,6376.5,9344114.82099065,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,17673822.084779,20602423.348368,18339818.5872941,15355621.794755,11806931.9422673,11550117.8728169,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,19569340.1666494,22273451.3501307,22100872.0415392,14698879.3383611,6376.5,12145653.5649665,8189775.12756087,5121464.16148213,9020451.26444142,12147707.2524965,6376.5,8978021.062014,7455849.26478813,4398522.6525636,6376.5,6376.5,6376.5,15837393.9661789,17827891.7506745,12611219.0436571,15991879.9457705,15228650.1683873,16988654.822572,18375400.5890235,12642030.4961062,14494882.1163858,13336631.6199933,18521420.3551185,6376.5,12067313.9250115,15725433.3765754,6741884.57301754,3550393.00399773,10108228.7711681,9685210.77555767,5941242.45674101,7815213.65372963,9392588.86714143,12170252.0289539,6457463.97633451,6376.5,6376.5,6376.5,6376.5,6376.5,14651407.2475244,12857140.8763183,14837041.6101418,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,16295560.7648079,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,1773914.3249333,6376.5,6376.5,6445743.85038004,6376.5,5083199.18396667,9585996.20290871,6376.5,10116258.6962973,13230843.8843042,14109497.005221,12599595.0056984,8412923.51631868,13687439.7156958,14541597.9666791,10621164.2080324,8333215.5599077,10677897.2733155,6376.5,9186634.88783201,6376.5,5196185.4433864,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,16666773.6102297,16556142.9075572,10716543.3133294,1195237.33635902,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,12660668.2366002,14083338.8055164,9517042.87474791,1575145.49367215,5858604.90388559,6376.5,15294252.5332669,6376.5,6376.5,10612814.0897376,6376.5,11900772.056105,7934844.71603271,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,4198624.83925917,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,5350313.57715727,6376.5,6376.5,6376.5,6376.5,5700370.71661222,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,16876008.9139727,7854181.21807293,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,13688752.0804243,17538703.8130107,16839232.9065422,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,14711568.0627933,14354893.9544323,13702402.5801222,15664182.8075335,10847620.4890363,13975959.8168806,9170926.47278582,10498291.4255874,14221781.4843439,1038069.70708603,8331505.88016758,4715215.51219077,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,1517551.45102879,6376.5,7338414.67419146,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,425906.394257485,7616174.42747193,10490948.1690652,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,4068607.25866641,3567152.44562645,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,64448.0161471346,6376.5,9389183.65801435,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,1450809.22139207,6376.5,6376.5,6376.5,6376.5,6376.5,6360291.9655094,10555911.9573863,10251657.4916637,7512419.30027753,6281475.59925018,7150900.14630199,6376.5,6376.5,14759841.1471712,6376.5,6376.5,7293092.64555077,2826673.60782721,13213100.7015677,14911905.9017537,6376.5,6376.5,17016955.8765496,17062436.668563,17255763.1464174,19393962.2595423,16558158.981007,20531846.8273436,14068876.104682,18385112.4570859,18484366.2564647,16226333.7050075,17822701.1573341,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,13462898.4170163,6376.5,6376.5,6376.5,6376.5,6376.5,11996204.8858775,13249025.76904,10814180.7066544,14830740.5631969,8134877.66524064,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,3755283.99735029,6376.5,15030580.9689631,20044315.1291956,3252184.78799719,20929937.2474117,13567788.0344612,16709538.1652427,14065205.8350152,10441077.2778475,9451559.57817387,9900456.18348128,13298804.7319941,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,6376.5,3635101.23060252,6293033.05586043,6376.5,17834704.6439396,6376.5,6376.5,6376.5,14857149.2787652,6376.5,6376.5,6376.5,8647930.70933568,6376.5,8601452.11938962,4389552.69570073,6376.5,6376.5,6376.5,5101.2,5101.2,5101.2,5101.2,20177289.6768349,5101.2,5101.2,5101.2,5101.2,5312715.59414467,5308023.74538612,5232468.38631299,12034214.8061061,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,3996176.21822769,5101.2,5101.2,5448047.00600109,5101.2,5101.2,10341316.7191064,6683281.8416583,7406172.19524754,4619938.45636016,6814171.6687111,9285188.63745711,5101.2,9291489.09763491,11255228.1265628,8813745.62194341,6957245.1924942,9170455.40550171,9598952.54925919,8137527.47906225,3372753.43350331,11792666.2849446,5101.2,5101.2,12278456.9099574,14856272.8045368,5101.2,5101.2,5101.2,5101.2,51309.5067789996,11827508.8900553,12932921.0497259,5101.2,5628500.71747648,5101.2,3145965.21578056,6881144.86425475,5101.2,5101.2,5101.2,8217794.00874584,13848817.4284258,13298949.1171441,5101.2,5101.2,10583644.571143,8479200.94436708,9248969.42473569,7239522.91296111,12662319.6471674,14606609.1578685,15975396.3157704,13064985.5540826,14615775.4840773,14650542.497444,12139731.4250885,14190885.0626837,14863698.4109027,17463937.6552909,13214913.2621504,16662418.6660601,13896048.8861604,16372890.6458904,16136907.9630814,11346374.8632169,18377163.4927231,14566163.5191863,14181849.6956623,15927492.2288672,17449446.4020784,16589406.5806774,17963190.1838562,19271864.8401297,18634142.2960936,18855745.0020716,17764933.8079107,19306393.0922916,19714527.3984852,18852934.5863092,19637009.3141028,18553171.7780159,18370963.9809365,5101.2,10266428.6726,10074979.1329594,19243517.2905599,16609748.1448144,16116247.2690592,10495860.3158517,8122063.88289869,8576216.35212355,11022429.2983687,2038612.21856015,10126483.2840015,11909328.116865,7854241.5435218,8970643.49529826,5724344.09866938,5101.2,7960158.46925653,4696352.98562034,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,19098275.6336235,19779497.8869976,18162819.0729296,16658182.6123206,17396871.0590542,15245743.5929999,14567822.9480361,14994593.5143043,12245449.3829336,15532532.3691828,16613864.1434923,13248768.2800471,18055482.5675976,15334463.3919751,16019267.3616899,17269960.1971317,14215533.3035839,12138503.6754262,6283319.96656657,5101.2,5101.2,5101.2,5101.2,5101.2,16565437.4887966,17966969.6413134,13453847.1386395,10679966.0800822,18113014.1171636,16961495.743211,14024338.6422756,11845881.6250277,6943286.18782881,5101.2,5101.2,5101.2,1142565.93715139,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,18218494.2434646,18648596.9733841,18327005.398516,17071298.1028221,15671237.5478895,14600763.0793178,16695489.4829736,15914938.4221568,17286670.1774669,15141261.9360405,14275660.5952335,15750119.6108946,15886300.1007839,16341906.355008,17500751.5363565,16570334.662164,16774999.2720175,14065190.9440112,17959676.2734747,15971561.5109479,17208024.9685148,18939139.6245026,14398321.0220002,15382581.852393,15735671.1230624,10563474.7769925,14848114.8244814,9842973.77779123,11680968.027977,9455658.3838497,13633791.2219814,12725206.7760022,10632987.9517637,9000132.18468003,9003116.48494855,5306362.97133115,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,16923565.3917108,14633831.2661804,13280228.3992512,12577882.9497375,11624852.8793935,13551422.6545652,15188146.0995978,10754793.2540386,13817658.3333257,12864494.2862061,9572831.27480963,11475818.6101509,4373476.14779291,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,16322274.2450198,13327117.118995,10930651.739922,7686159.88044346,5101.2,8190918.20584066,2165611.02604665,6851353.27755058,7554787.68865543,859016.192013709,4113833.78207603,5456769.92959639,7051978.57269174,6406541.20655155,8357589.52951904,5101.2,5338334.94362078,4629889.63652119,5101.2,7475291.85679252,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,14139057.6678232,16481938.6786944,14671854.8698353,12284497.435804,9445545.55381388,9240094.29825354,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,15655472.1333196,17818761.0801045,17680697.6332313,11759103.4706889,5101.2,9716522.85197322,6551820.1020487,4097171.3291857,7216361.01155314,9718165.80199719,5101.2,7182416.8496112,5964679.4118305,3518818.12205088,5101.2,5101.2,5101.2,12669915.1729431,14262313.4005396,10088975.2349256,12793503.9566164,12182920.1347098,13590923.8580576,14700320.4712188,10113624.396885,11595905.6931087,10669305.2959946,14817136.2840948,5101.2,9653851.14000919,12580346.7012603,5393507.65841403,2840314.40319819,8086583.01693448,7748168.62044613,4752993.96539281,6252170.9229837,7514071.09371315,9736201.62316312,5165971.18106761,5101.2,5101.2,5101.2,5101.2,5101.2,11721125.7980195,10285712.7010546,11869633.2881135,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,13036448.6118463,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,1419131.45994664,5101.2,5101.2,5156595.08030403,5101.2,4066559.34717334,7668796.96232697,5101.2,8093006.95703783,10584675.1074433,11287597.6041768,10079676.0045587,6730338.81305495,10949951.7725567,11633278.3733433,8496931.36642594,6666572.44792616,8542317.81865243,5101.2,7349307.91026561,5101.2,4156948.35470912,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,13333418.8881837,13244914.3260457,8573234.6506635,956189.869087213,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,10128534.5892802,11266671.0444131,7613634.29979833,1260116.39493772,4686883.92310848,5101.2,12235402.0266135,5101.2,5101.2,8490251.27179008,5101.2,9520617.644884,6347875.77282617,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,3358899.87140734,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,4280250.86172582,5101.2,5101.2,5101.2,5101.2,4560296.57328978,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,13500807.1311781,6283344.97445835,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,10951001.6643394,14030963.0504086,13471386.3252338,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,11769254.4502347,11483915.1635458,10961922.0640978,12531346.2460268,8678096.39122903,11180767.8535045,7336741.17822865,8398633.14046993,11377425.1874751,830455.765668821,6665204.70413406,3772172.40975262,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,1214041.16082303,5101.2,5870731.73935317,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,340725.115405988,6092939.54197754,8392758.53525213,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,3254885.80693313,2853721.95650116,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,51558.4129177077,5101.2,7511346.92641148,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,1160647.37711365,5101.2,5101.2,5101.2,5101.2,5101.2,5088233.57240752,8444729.565909,8201325.99333094,6009935.44022203,5025180.47940014,5720720.11704159,5101.2,5101.2,11807872.9177369,5101.2,5101.2,5834474.11644061,2261338.88626176,10570480.5612542,11929524.721403,5101.2,5101.2,13613564.7012397,13649949.3348504,13804610.517134,15515169.8076338,13246527.1848056,16425477.4618749,11255100.8837456,14708089.9656687,14787493.0051718,12981066.964006,14258160.9258673,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,10770318.733613,5101.2,5101.2,5101.2,5101.2,5101.2,9596963.90870202,10599220.615232,8651344.56532353,11864592.4505575,6507902.13219252,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,3004227.19788024,5101.2,12024464.7751704,16035452.1033565,2601747.83039775,16743949.7979293,10854230.427569,13367630.5321942,11252164.6680122,8352861.82227801,7561247.6625391,7920364.94678502,10639043.7855953,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,5101.2,2908080.98448202,5034426.44468834,5101.2,14267763.7151517,5101.2,5101.2,5101.2,11885719.4230122,5101.2,5101.2,5101.2,6918344.56746854,5101.2,6881161.6955117,3511642.15656058,5101.2,5101.2,5101.2,3825.9,3825.9,3825.9,3825.9,15132967.2576262,3825.9,3825.9,3825.9,3825.9,3984536.6956085,3981017.80903959,3924351.28973474,9025661.10457959,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,2997132.16367077,3825.9,3825.9,4086035.25450081,3825.9,3825.9,7755987.53932984,5012461.38124373,5554629.14643565,3464953.84227012,5110628.75153332,6963891.47809283,3825.9,6968616.82322618,8441421.09492207,6610309.21645756,5217933.89437065,6877841.55412628,7199214.41194439,6103145.60929669,2529565.07512748,8844499.71370849,3825.9,3825.9,9208842.68246803,11142204.6034026,3825.9,3825.9,3825.9,3825.9,38482.1300842497,8870631.6675415,9699690.78729444,3825.9,4221375.53810736,3825.9,2359473.91183542,5160858.64819106,3825.9,3825.9,3825.9,6163345.50655938,10386613.0713193,9974211.83785807,3825.9,3825.9,7937733.42835724,6359400.70827531,6936727.06855177,5429642.18472083,9496739.73537556,10954956.8684014,11981547.2368278,9798739.16556193,10961831.613058,10987906.873083,9104798.5688164,10643163.7970128,11147773.808177,13097953.2414682,9911184.94661282,12496813.9995451,10422036.6646203,12279667.9844178,12102680.9723111,8509781.14741265,13782872.6195423,10924622.6393898,10636387.2717467,11945619.1716504,13087084.8015588,12442054.935508,13472392.6378921,14453898.6300973,13975606.7220702,14141808.7515537,13323700.355933,14479794.8192187,14785895.5488639,14139700.9397319,14727756.9855771,13914878.8335119,13778222.9857024,3825.9,7699821.50445003,7556234.34971956,14432637.9679199,12457311.1086108,12087185.4517944,7871895.23688879,6091547.91217402,6432162.26409266,8266821.97377649,1528959.16392012,7594862.46300116,8931996.08764878,5890681.15764135,6727982.6214737,4293258.07400204,3825.9,5970118.85194239,3522264.73921525,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,14323706.7252176,14834623.4152482,13622114.3046972,12493636.9592405,13047653.2942906,11434307.6947499,10925867.2110271,11245945.1357282,9184087.03720023,11649399.2768871,12460398.1076192,9936576.21003534,13541611.9256982,11500847.5439813,12014450.5212674,12952470.1478488,10661649.9776879,9103877.75656968,4712489.97492493,3825.9,3825.9,3825.9,3825.9,3825.9,12424078.1165974,13475227.2309851,10090385.3539796,8009974.56006163,13584760.5878727,12721121.8074083,10518253.9817067,8884411.21877076,5207464.64087161,3825.9,3825.9,3825.9,856924.452863541,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,13663870.6825984,13986447.7300381,13745254.048887,12803473.5771165,11753428.1609172,10950572.3094884,12521617.1122302,11936203.8166176,12965002.6331002,11355946.4520304,10706745.4464252,11812589.7081709,11914725.075588,12256429.766256,13125563.6522674,12427750.996623,12581249.4540131,10548893.2080084,13469757.205106,11978671.1332109,12906018.7263861,14204354.718377,10798740.7665002,11536936.3892948,11801753.3422968,7922606.08274439,11136086.1183611,7382230.33334342,8760726.02098277,7091743.78788728,10225343.4164861,9543905.08200167,7974740.96382275,6750099.13851002,6752337.36371141,3979772.22849836,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,12692674.0437831,10975373.4496353,9960171.29943842,9433412.21230312,8718639.65954516,10163566.9909239,11391109.5746984,8066094.94052893,10363243.7499943,9648370.71465458,7179623.45610722,8606863.95761318,3280107.11084468,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,12241705.6837649,9995337.83924622,8197988.80494148,5764619.9103326,3825.9,6143188.6543805,1624208.26953499,5138514.95816294,5666090.76649158,644262.144010282,3085375.33655702,4092577.4471973,5288983.92951881,4804905.90491366,6268192.14713928,3825.9,4003751.20771558,3472417.22739089,3825.9,5606468.89259439,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,10604293.2508674,12361454.0090208,11003891.1523765,9213373.07685298,7084159.16536041,6930070.72369016,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,11741604.0999897,13364070.8100784,13260523.2249235,8819327.60301668,3825.9,7287392.13897991,4913865.07653652,3072878.49688928,5412270.75866485,7288624.35149789,3825.9,5386812.6372084,4473509.55887288,2639113.59153816,3825.9,3825.9,3825.9,9502436.37970732,10696735.0504047,7566731.42619423,9595127.96746228,9137190.10103236,10193192.8935432,11025240.3534141,7585218.29766373,8696929.2698315,8001978.97199596,11112852.2130711,3825.9,7240388.35500689,9435260.02594521,4045130.74381053,2130235.80239864,6064937.26270086,5811126.4653346,3564745.47404461,4689128.19223778,5635553.32028486,7302151.21737234,3874478.38580071,3825.9,3825.9,3825.9,3825.9,3825.9,8790844.34851466,7714284.52579097,8902224.9660851,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,9777336.45888476,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,1064348.59495998,3825.9,3825.9,3867446.31022802,3825.9,3049919.51038,5751597.72174522,3825.9,6069755.21777837,7938506.33058251,8465698.20313262,7559757.00341905,5047754.10979121,8212463.82941751,8724958.78000746,6372698.52481946,4999929.33594462,6406738.36398933,3825.9,5511980.93269921,3825.9,3117711.26603184,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,10000064.1661378,9933685.74453431,6429925.98799762,717142.40181541,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,7596400.94196012,8450003.28330983,5710225.72484875,945087.296203293,3515162.94233136,3825.9,9176551.51996015,3825.9,3825.9,6367688.45384256,3825.9,7140463.233663,4760906.82961963,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,2519174.9035555,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3210188.14629437,3825.9,3825.9,3825.9,3825.9,3420222.42996733,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,10125605.3483836,4712508.73084376,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,8213251.24825457,10523222.2878064,10103539.7439253,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,8826940.83767601,8612936.37265938,8221441.54807332,9398509.68452012,6508572.29342177,8385575.89012837,5502555.88367149,6298974.85535245,8533068.89060632,622841.824251616,4998903.52810055,2829129.30731446,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,910530.870617276,3825.9,4403048.80451487,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,255543.836554491,4569704.65648316,6294568.9014391,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,2441164.35519985,2140291.46737587,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,38668.8096882808,3825.9,5633510.19480861,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,870485.532835241,3825.9,3825.9,3825.9,3825.9,3825.9,3816175.17930564,6333547.17443176,6150994.4949982,4507451.58016652,3768885.35955011,4290540.08778119,3825.9,3825.9,8855904.68830271,3825.9,3825.9,4375855.58733046,1696004.16469632,7927860.42094064,8947143.54105222,3825.9,3825.9,10210173.5259298,10237462.0011378,10353457.8878505,11636377.3557254,9934895.3886042,12319108.0964062,8441325.66280921,11031067.4742515,11090619.7538788,9735800.22300448,10693620.6944005,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,8077739.05020978,3825.9,3825.9,3825.9,3825.9,3825.9,7197722.93152651,7949415.46142402,6488508.42399265,8898444.33791812,4880926.59914439,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,2253170.39841018,3825.9,9018348.58137784,12026589.0775174,1951310.87279831,12557962.348447,8140672.82067673,10025722.8991456,8439123.50100913,6264646.36670851,5670935.74690432,5940273.71008877,7979282.83919647,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,3825.9,2181060.73836151,3775819.83351626,3825.9,10700822.7863638,3825.9,3825.9,3825.9,8914289.56725911,3825.9,3825.9,3825.9,5188758.42560141,3825.9,5160871.27163377,2633731.61742043,3825.9,3825.9,3825.9,2550.6,2550.6,2550.6,2550.6,10088644.8384175,2550.6,2550.6,2550.6,2550.6,2656357.79707233,2654011.87269306,2616234.19315649,6017107.40305306,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,1998088.10911385,2550.6,2550.6,2724023.50300054,2550.6,2550.6,5170658.35955322,3341640.92082915,3703086.09762377,2309969.22818008,3407085.83435555,4642594.31872855,2550.6,4645744.54881746,5627614.06328138,4406872.8109717,3478622.5962471,4585227.70275086,4799476.27462959,4068763.73953112,1686376.71675165,5896333.14247232,2550.6,2550.6,6139228.45497868,7428136.40226838,2550.6,2550.6,2550.6,2550.6,25654.7533894998,5913754.44502767,6466460.52486296,2550.6,2814250.35873824,2550.6,1572982.60789028,3440572.43212738,2550.6,2550.6,2550.6,4108897.00437292,6924408.7142129,6649474.55857204,2550.6,2550.6,5291822.2855715,4239600.47218354,4624484.71236785,3619761.45648056,6331159.82358371,7303304.57893427,7987698.15788518,6532492.77704128,7307887.74203864,7325271.24872199,6069865.71254427,7095442.53134185,7431849.20545136,8731968.82764543,6607456.63107521,8331209.33303007,6948024.44308021,8186445.32294518,8068453.98154071,5673187.43160843,9188581.74636153,7283081.75959317,7090924.84783114,7963746.11443358,8724723.20103922,8294703.29033869,8981595.0919281,9635932.42006484,9317071.1480468,9427872.50103579,8882466.90395533,9653196.54614579,9857263.6992426,9426467.29315461,9818504.65705142,9276585.88900795,9185481.99046826,2550.6,5133214.33630002,5037489.56647971,9621758.64527995,8304874.07240722,8058123.6345296,5247930.15792586,4061031.94144935,4288108.17606178,5511214.64918433,1019306.10928008,5063241.64200077,5954664.05843252,3927120.7717609,4485321.74764913,2862172.04933469,2550.6,3980079.23462826,2348176.49281017,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,9549137.81681176,9889748.94349882,9081409.53646477,8329091.30616031,8698435.52952708,7622871.79649996,7283911.47401805,7497296.75715216,6122724.69146682,7766266.18459141,8306932.07174614,6624384.14002356,9027741.28379882,7667231.69598756,8009633.68084493,8634980.09856586,7107766.65179193,6069251.83771312,3141659.98328329,2550.6,2550.6,2550.6,2550.6,2550.6,8282718.74439828,8983484.82065671,6726923.56931975,5339983.04004109,9056507.05858177,8480747.87160551,7012169.32113782,5922940.81251384,3471643.09391441,2550.6,2550.6,2550.6,571282.968575694,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,9109247.12173228,9324298.48669207,9163502.69925801,8535649.05141102,7835618.77394477,7300381.53965892,8347744.74148678,7957469.21107841,8643335.08873347,7570630.96802027,7137830.29761677,7875059.80544729,7943150.05039196,8170953.17750399,8750375.76817827,8285167.33108198,8387499.63600874,7032595.47200562,8979838.13673736,7985780.75547397,8604012.48425741,9469569.81225132,7199160.51100011,7691290.9261965,7867835.56153121,5281737.38849626,7424057.41224071,4921486.88889561,5840484.01398851,4727829.19192485,6816895.61099071,6362603.38800111,5316493.97588183,4500066.09234002,4501558.24247427,2653181.48566558,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,8461782.69585542,7316915.63309021,6640114.19962561,6288941.47486874,5812426.43969677,6775711.32728261,7594073.0497989,5377396.62701929,6908829.16666286,6432247.14310305,4786415.63740482,5737909.30507545,2186738.07389645,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,8161137.12250991,6663558.55949748,5465325.86996099,3843079.94022173,2550.6,4095459.10292033,1082805.51302332,3425676.63877529,3777393.84432772,429508.096006854,2056916.89103802,2728384.9647982,3525989.28634587,3203270.60327577,4178794.76475952,2550.6,2669167.47181039,2314944.8182606,2550.6,3737645.92839626,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,7069528.83391159,8240969.3393472,7335927.43491765,6142248.71790199,4722772.77690694,4620047.14912677,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,7827736.06665978,8909380.54005226,8840348.81661566,5879551.73534445,2550.6,4858261.42598661,3275910.05102435,2048585.66459285,3608180.50577657,4859082.90099859,2550.6,3591208.4248056,2982339.70591525,1759409.06102544,2550.6,2550.6,2550.6,6334957.58647155,7131156.70026981,5044487.61746282,6396751.97830819,6091460.0673549,6795461.92902879,7350160.23560938,5056812.19844249,5797952.84655433,5334652.64799731,7408568.1420474,2550.6,4826925.57000459,6290173.35063014,2696753.82920702,1420157.20159909,4043291.50846724,3874084.31022307,2376496.98269641,3126085.46149185,3757035.54685657,4868100.81158156,2582985.59053381,2550.6,2550.6,2550.6,2550.6,2550.6,5860562.89900977,5142856.35052731,5934816.64405673,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,6518224.30592317,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,709565.729973319,2550.6,2550.6,2578297.54015201,2550.6,2033279.67358667,3834398.48116348,2550.6,4046503.47851891,5292337.55372167,5643798.80208841,5039838.00227937,3365169.40652747,5474975.88627834,5816639.18667164,4248465.68321297,3333286.22396308,4271158.90932622,2550.6,3674653.9551328,2550.6,2078474.17735456,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,6666709.44409186,6622457.16302287,4286617.32533175,478094.934543607,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,5064267.29464008,5633335.52220655,3806817.14989916,630058.197468862,2343441.96155424,2550.6,6117701.01330677,2550.6,2550.6,4245125.63589504,2550.6,4760308.822442,3173937.88641309,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,1679449.93570367,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2140125.43086291,2550.6,2550.6,2550.6,2550.6,2280148.28664489,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,6750403.56558907,3141672.48722917,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,5475500.83216971,7015481.52520429,6735693.16261688,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,5884627.22511734,5741957.58177292,5480961.03204888,6265673.12301341,4339048.19561452,5590383.92675225,3668370.58911433,4199316.57023496,5688712.59373754,415227.882834411,3332602.35206703,1886086.20487631,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,607020.580411517,2550.6,2935365.86967658,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,170362.557702994,3046469.77098877,4196379.26762606,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,1627442.90346656,1426860.97825058,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,25779.2064588538,2550.6,3755673.46320574,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,580323.688556827,2550.6,2550.6,2550.6,2550.6,2550.6,2544116.78620376,4222364.7829545,4100662.99666547,3004967.72011101,2512590.23970007,2860360.0585208,2550.6,2550.6,5903936.45886847,2550.6,2550.6,2917237.05822031,1130669.44313088,5285240.2806271,5964762.36070148,2550.6,2550.6,6806782.35061985,6824974.66742519,6902305.25856698,7757584.90381691,6623263.5924028,8212738.73093743,5627550.44187281,7354044.98283435,7393746.50258588,6490533.48200298,7129080.46293365,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,5385159.36680652,2550.6,2550.6,2550.6,2550.6,2550.6,4798481.95435101,5299610.30761602,4325672.28266176,5932296.22527874,3253951.06609626,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,1502113.59894012,2550.6,6012232.38758522,8017726.05167824,1300873.91519887,8371974.89896467,5427115.21378449,6683815.26609709,5626082.33400609,4176430.91113901,3780623.83126955,3960182.47339251,5319521.89279764,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,2550.6,1454040.49224101,2517213.22234417,2550.6,7133881.85757586,2550.6,2550.6,2550.6,5942859.71150608,2550.6,2550.6,2550.6,3459172.28373427,2550.6,3440580.84775585,1755821.07828029,2550.6,2550.6,2550.6,1275.3,1275.3,1275.3,1275.3,5044322.41920874,1275.3,1275.3,1275.3,1275.3,1328178.89853617,1327005.93634653,1308117.09657825,3008553.70152653,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,999044.054556923,1275.3,1275.3,1362011.75150027,1275.3,1275.3,2585329.17977661,1670820.46041457,1851543.04881188,1154984.61409004,1703542.91717777,2321297.15936428,1275.3,2322872.27440873,2813807.03164069,2203436.40548585,1739311.29812355,2292613.85137543,2399738.1373148,2034381.86976556,843188.358375827,2948166.57123616,1275.3,1275.3,3069614.22748934,3714068.2011342,1275.3,1275.3,1275.3,1275.3,12827.3766947499,2956877.22251383,3233230.26243148,1275.3,1407125.17936912,1275.3,786491.303945141,1720286.21606369,1275.3,1275.3,1275.3,2054448.50218646,3462204.35710645,3324737.27928602,1275.3,1275.3,2645911.14278575,2119800.23609177,2312242.35618392,1809880.72824028,3165579.91179185,3651652.28946714,3993849.07894259,3266246.38852064,3653943.87101932,3662635.624361,3034932.85627213,3547721.26567092,3715924.60272568,4365984.41382272,3303728.31553761,4165604.66651503,3474012.2215401,4093222.66147259,4034226.99077036,2836593.71580422,4594290.87318076,3641540.87979659,3545462.42391557,3981873.05721679,4362361.60051961,4147351.64516935,4490797.54596405,4817966.21003242,4658535.57402341,4713936.25051789,4441233.45197767,4826598.27307289,4928631.8496213,4713233.64657731,4909252.32852571,4638292.94450398,4592740.99523413,1275.3,2566607.16815001,2518744.78323985,4810879.32263998,4152437.03620361,4029061.8172648,2623965.07896293,2030515.97072467,2144054.08803089,2755607.32459216,509653.054640038,2531620.82100039,2977332.02921626,1963560.38588045,2242660.87382457,1431086.02466735,1275.3,1990039.61731413,1174088.24640508,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,4774568.90840588,4944874.47174941,4540704.76823239,4164545.65308015,4349217.76476354,3811435.89824999,3641955.73700903,3748648.37857608,3061362.34573341,3883133.0922957,4153466.03587307,3312192.07001178,4513870.64189941,3833615.84799378,4004816.84042247,4317490.04928293,3553883.32589597,3034625.91885656,1570829.99164164,1275.3,1275.3,1275.3,1275.3,1275.3,4141359.37219914,4491742.41032835,3363461.78465988,2669991.52002054,4528253.52929089,4240373.93580276,3506084.66056891,2961470.40625692,1735821.5469572,1275.3,1275.3,1275.3,285641.484287847,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,4554623.56086614,4662149.24334603,4581751.349629,4267824.52570552,3917809.38697239,3650190.76982946,4173872.37074339,3978734.6055392,4321667.54436674,3785315.48401014,3568915.14880838,3937529.90272365,3971575.02519598,4085476.58875199,4375187.88408914,4142583.66554099,4193749.81800437,3516297.73600281,4489919.06836868,3992890.37773698,4302006.2421287,4734784.90612566,3599580.25550006,3845645.46309825,3933917.7807656,2640868.69424813,3712028.70612036,2460743.44444781,2920242.00699426,2363914.59596243,3408447.80549536,3181301.69400055,2658246.98794092,2250033.04617001,2250779.12123714,1326590.74283279,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,4230891.34792771,3658457.81654511,3320057.09981281,3144470.73743437,2906213.21984839,3387855.66364131,3797036.52489945,2688698.31350965,3454414.58333143,3216123.57155153,2393207.81870241,2868954.65253773,1093369.03694823,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,4080568.56125496,3331779.27974874,2732662.93498049,1921539.97011087,1275.3,2047729.55146017,541402.756511663,1712838.31938765,1888696.92216386,214754.048003427,1028458.44551901,1364192.4823991,1762994.64317294,1601635.30163789,2089397.38237976,1275.3,1334583.73590519,1157472.4091303,1275.3,1868822.96419813,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,3534764.4169558,4120484.6696736,3667963.71745882,3071124.358951,2361386.38845347,2310023.57456338,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,3913868.03332989,4454690.27002613,4420174.40830783,2939775.86767223,1275.3,2429130.7129933,1637955.02551217,1024292.83229643,1804090.25288828,2429541.4504993,1275.3,1795604.2124028,1491169.85295763,879704.530512719,1275.3,1275.3,1275.3,3167478.79323577,3565578.35013491,2522243.80873141,3198375.98915409,3045730.03367745,3397730.96451439,3675080.11780469,2528406.09922124,2898976.42327717,2667326.32399866,3704284.0710237,1275.3,2413462.7850023,3145086.67531507,1348376.91460351,710078.600799547,2021645.75423362,1937042.15511153,1188248.4913482,1563042.73074593,1878517.77342829,2434050.40579078,1291492.7952669,1275.3,1275.3,1275.3,1275.3,1275.3,2930281.44950489,2571428.17526366,2967408.32202837,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,3259112.15296159,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,354782.86498666,1275.3,1275.3,1289148.77007601,1275.3,1016639.83679333,1917199.24058174,1275.3,2023251.73925946,2646168.77686084,2821899.40104421,2519919.00113969,1682584.70326374,2737487.94313917,2908319.59333582,2124232.84160649,1666643.11198154,2135579.45466311,1275.3,1837326.9775664,1275.3,1039237.08867728,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,3333354.72204593,3311228.58151144,2143308.66266587,239047.467271803,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,2532133.64732004,2816667.76110328,1903408.57494958,315029.098734431,1171720.98077712,1275.3,3058850.50665338,1275.3,1275.3,2122562.81794752,1275.3,2380154.411221,1586968.94320654,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,839724.967851835,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1070062.71543145,1275.3,1275.3,1275.3,1275.3,1140074.14332244,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,3375201.78279454,1570836.24361459,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,2737750.41608486,3507740.76260215,3367846.58130844,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,2942313.61255867,2870978.79088646,2740480.51602444,3132836.56150671,2169524.09780726,2795191.96337612,1834185.29455716,2099658.28511748,2844356.29686877,207613.941417205,1666301.17603351,943043.102438155,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,303510.290205759,1275.3,1467682.93483829,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,85181.2788514971,1523234.88549439,2098189.63381303,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,813721.451733282,713430.489125291,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,12889.6032294269,1275.3,1877836.73160287,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,290161.844278414,1275.3,1275.3,1275.3,1275.3,1275.3,1272058.39310188,2111182.39147725,2050331.49833273,1502483.86005551,1256295.11985004,1430180.0292604,1275.3,1275.3,2951968.22943424,1275.3,1275.3,1458618.52911015,565334.721565441,2642620.14031355,2982381.18035074,1275.3,1275.3,3403391.17530992,3412487.33371259,3451152.62928349,3878792.45190845,3311631.7962014,4106369.36546872,2813775.2209364,3677022.49141717,3696873.25129294,3245266.74100149,3564540.23146682,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,2692579.68340326,1275.3,1275.3,1275.3,1275.3,1275.3,2399240.97717551,2649805.15380801,2162836.14133088,2966148.11263937,1626975.53304813,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,751056.799470059,1275.3,3006116.19379261,4008863.02583912,650436.957599438,4185987.44948234,2713557.60689225,3341907.63304854,2813041.16700305,2088215.4555695,1890311.91563478,1980091.23669626,2659760.94639882,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,1275.3,727020.246120504,1258606.61117209,1275.3,3566940.92878793,1275.3,1275.3,1275.3,2971429.85575304,1275.3,1275.3,1275.3,1729586.14186713,1275.3,1720290.42387793,877910.539140145,1275.3,1275.3,1275.3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive1208_field6":[1,1,1,1,3955.37348278833,1,1,1,1,1041.45888853663,1040.54504436438,1025.72763361771,2359.09017761501,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,783.372059552694,1,1,1067.98820762141,1,1,2027.22857795664,1310.13379970141,1451.8478743242,905.651225753155,1335.79591972307,1820.19376575745,1,1821.42937624443,2206.38582415431,1727.77653292408,1363.8433442097,1797.70429133676,1881.70294586305,1595.21567483701,661.164944734768,2311.7395677331,1,1,2406.97073778299,2912.29917627157,1,1,1,1,10.0570115897717,2318.56946064778,2535.2651290161,1,1103.36586197679,1,616.709611487331,1348.92387372355,1,1,1,1610.95079276469,2714.8089917535,2607.01793125565,1,1,2074.73428334792,1662.19446136543,1813.09560593174,1419.17764212037,2482.21936084429,2863.35931302292,3131.6824216336,2561.15374914169,2865.15617238101,2871.97201200208,2379.77555614122,2781.86468733882,2913.75914599433,3423.4838420001,2590.54478101183,3266.36147365228,2724.06720283899,3209.60519900973,3163.34612459408,2224.25328824133,3602.50202441216,2855.43438875187,2780.09358377529,3122.2958991856,3420.64051866986,3252.04856707939,3521.3505989773,3777.89061091972,3652.88138918162,3696.3219641642,3482.4909041388,3784.66259992582,3864.67136480335,3695.76917341831,3849.47144887037,3636.99613629043,3601.2893784427,1,2012.5454744427,1975.01561474803,3772.33076897386,3256.03996075629,3159.29818042182,2057.52319519165,1592.18437149903,1681.21150687196,2160.7464075739,399.624702321011,1985.11210632356,2334.61075253758,1539.68149683555,1758.53145259361,1122.15047671953,1,1560.4468204151,920.630287459382,1,1,1,1,1,1,1,1,3743.84724845401,3877.39699379499,3560.48356836954,3265.53487545827,3410.33855248543,2988.65254475738,2855.75769975723,2939.41812380357,2400.49851637804,3044.87089572695,3256.84638871102,2597.18083705626,3539.4485607668,3006.0420690001,3140.28492884507,3385.45905195035,2786.69744000151,2379.53469951404,1231.72962599972,1,1,1,1,1,3247.34373090999,3522.08737693768,2637.38517679368,2093.61396617965,3550.72566248953,3324.99036073783,2749.21766317757,2322.17050293481,1361.10525646798,1,1,1,223.970546983416,1,1,1,1,1,1,3571.39194441892,3655.70464317967,3592.66116544087,3346.50829530334,3072.05969147975,2862.21499379534,3272.83984114439,3119.82729648586,3388.73460545261,2968.16799207813,2798.48348890438,3087.52067689234,3114.21744245754,3203.52647274868,3430.69406294209,3248.30930763151,3288.42723989272,2757.22576732951,3520.66025791298,3130.93025870386,3373.31932190834,3712.66501179399,2822.52935599692,3015.47564207839,3084.69254099905,2070.78006532194,2910.70395409013,1929.5380529837,2289.84381966891,1853.61059974612,2672.65816935192,2494.5466135947,2084.40682162922,1764.3109350136,1764.89770222065,1040.21490634107,1,1,1,1,1,1,1,1,3317.55449984353,2868.69655516777,2603.34828448064,2465.66805855983,2278.84426182194,2656.51132563573,2977.36054270501,2108.28402264726,2708.70142321711,2521.8515953415,1876.58163073683,2249.62852701214,857.338434156309,1,1,1,1,1,1,1,1,1,1,3199.68401364844,2612.54045311723,2142.75719122971,1506.73311520288,1,1605.6797258623,424.526170839966,1343.08359513974,1480.98104579507,168.386245563417,806.443108782359,1069.69922078774,1382.41456721015,1255.88367974661,1638.35571671795,1,1046.48429723752,907.60315902706,1,1465.39742586178,1,1,1,1,1,1,1,1,1,1,1,2771.70685643555,3230.98314725226,2876.15161596416,2408.15437327683,1851.62985989936,1811.35320502491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3068.96968997142,3493.04117920654,3465.97666738575,2305.16130909039,1,1904.74998033631,1284.36745861941,803.174686445533,1414.63678573053,1905.07203815268,1,1407.9838692372,1169.26710794133,689.797230771921,1,1,1,2483.70923066493,2795.86723192234,1977.76033825988,2507.93504680888,2388.24241910818,2664.2549131738,2881.73000804532,1982.59451129587,2273.16918711089,2091.52548702253,2904.62819870739,1,1892.46379654202,2466.15151483938,1057.29800057668,556.786079740416,1585.22856040285,1518.88840256954,931.735543780858,1225.62215952079,1472.9990245453,1908.60717091019,1012.69514650808,1,1,1,1,1,2297.71494160183,2016.32730069537,2326.82842785067,1,1,1,1,1,1,2555.55942663117,1,1,1,1,1,1,1,278.184542319119,1,1,1010.85792224979,1,797.174571546574,1503.33016152947,1,1586.4893323368,2074.93601256949,2212.73104959636,1975.94200310636,1319.36277031474,2146.54202991446,2280.4965663466,1665.67235298683,1306.86206697884,1674.56941068886,1,1440.70132184456,1,814.897030299112,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2613.77693642201,2596.42711469234,1680.63271027822,187.436086379376,1,1,1,1,1,1,1,1,1985.51929608971,2208.63177302463,1492.5187428438,247.029497109602,918.783079823781,1,2398.53155252108,1,1,1664.36656045498,1,1866.34791115562,1244.3913895916,1,1,1,1,1,1,1,658.461025066314,1,1,1,1,1,1,1,1,1,1,839.060954165096,1,1,1,1,893.960210650317,1,1,1,1,1,1,2646.59075411411,1231.74088664426,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2146.74896293925,2750.51508994325,2640.82029795676,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2307.15498014425,2251.21530902581,2148.8909322153,2456.54467664971,1701.19012289312,2191.79115778398,1438.24052862037,1646.40139282094,2230.34081747321,162.788604910759,1306.59435107627,739.471596920491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,237.984179183187,1,1150.85631435754,1,1,1,1,1,1,1,1,1,1,1,1,66.8093129153289,1194.41562102329,1645.25348100046,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,638.05132193716,559.394271529896,1,1,1,1,1,1,1,1,1,1,10.0595746417907,1,1472.4650704242,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,227.50860599111,1,1,1,1,1,997.457773118053,1655.43849459136,1607.72036032171,1178.13576811544,985.091882661064,1121.44363460925,1,1,2314.72039587805,1,1,1143.74009261397,443.29137610002,2072.15236895612,2338.5681417156,1,1,2668.69375284079,2675.82514969268,2706.14440386167,3041.46570799594,2596.74250084113,3219.91582866025,2206.36148541572,2883.25520773871,2898.8194141392,2544.70634732149,2795.05496679069,1,1,1,1,1,1,1,1,1,1,1,2111.32541967977,1,1,1,1,1,1881.31144304388,2077.78857447858,1695.94364348168,2325.83947030247,1275.75264501851,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,588.921825647712,1,2357.18065080615,3143.45688875043,510.018656189845,3282.34555390812,2127.77695432778,2620.48245743466,2205.78365902734,1637.42689703261,1482.24670767283,1552.64602807951,2085.59351686682,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,570.06825456258,986.906244344458,1,2796.93451120401,1,1,1,2329.98547257138,1,1,1,1356.2207299754,1,1348.92750889761,688.392483136751,1,1,1,1,1,1,1,3955.37348278833,1,1,1,1,1041.45888853663,1040.54504436438,1025.72763361771,2359.09017761501,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,783.372059552694,1,1,1067.98820762141,1,1,2027.22857795664,1310.13379970141,1451.8478743242,905.651225753155,1335.79591972307,1820.19376575745,1,1821.42937624443,2206.38582415431,1727.77653292408,1363.8433442097,1797.70429133676,1881.70294586305,1595.21567483701,661.164944734768,2311.7395677331,1,1,2406.97073778299,2912.29917627157,1,1,1,1,10.0570115897717,2318.56946064777,2535.2651290161,1,1103.36586197679,1,616.709611487331,1348.92387372355,1,1,1,1610.95079276469,2714.8089917535,2607.01793125565,1,1,2074.73428334792,1662.19446136543,1813.09560593174,1419.17764212037,2482.21936084429,2863.35931302292,3131.6824216336,2561.15374914169,2865.15617238101,2871.97201200208,2379.77555614122,2781.86468733882,2913.75914599433,3423.4838420001,2590.54478101183,3266.36147365228,2724.06720283899,3209.60519900973,3163.34612459408,2224.25328824133,3602.50202441216,2855.43438875187,2780.09358377529,3122.2958991856,3420.64051866986,3252.04856707939,3521.3505989773,3777.89061091972,3652.88138918162,3696.3219641642,3482.4909041388,3784.66259992582,3864.67136480335,3695.76917341831,3849.47144887037,3636.99613629043,3601.2893784427,1,2012.5454744427,1975.01561474803,3772.33076897386,3256.03996075629,3159.29818042182,2057.52319519165,1592.18437149903,1681.21150687196,2160.7464075739,399.624702321011,1985.11210632356,2334.61075253758,1539.68149683555,1758.53145259361,1122.15047671953,1,1560.4468204151,920.630287459382,1,1,1,1,1,1,1,1,3743.84724845401,3877.39699379499,3560.48356836954,3265.53487545827,3410.33855248543,2988.65254475738,2855.75769975723,2939.41812380357,2400.49851637804,3044.87089572695,3256.84638871102,2597.18083705626,3539.4485607668,3006.0420690001,3140.28492884507,3385.45905195035,2786.69744000151,2379.53469951404,1231.72962599972,1,1,1,1,1,3247.34373090998,3522.08737693768,2637.38517679368,2093.61396617965,3550.72566248953,3324.99036073782,2749.21766317757,2322.17050293481,1361.10525646798,1,1,1,223.970546983416,1,1,1,1,1,1,3571.39194441892,3655.70464317967,3592.66116544087,3346.50829530334,3072.05969147975,2862.21499379534,3272.83984114439,3119.82729648586,3388.73460545261,2968.16799207813,2798.48348890438,3087.52067689234,3114.21744245754,3203.52647274868,3430.69406294208,3248.30930763151,3288.42723989272,2757.22576732951,3520.66025791298,3130.93025870386,3373.31932190834,3712.66501179399,2822.52935599692,3015.47564207839,3084.69254099905,2070.78006532194,2910.70395409012,1929.5380529837,2289.84381966891,1853.61059974612,2672.65816935192,2494.5466135947,2084.40682162922,1764.3109350136,1764.89770222065,1040.21490634107,1,1,1,1,1,1,1,1,3317.55449984353,2868.69655516778,2603.34828448064,2465.66805855983,2278.84426182194,2656.51132563573,2977.36054270501,2108.28402264726,2708.70142321711,2521.8515953415,1876.58163073683,2249.62852701214,857.33843415631,1,1,1,1,1,1,1,1,1,1,3199.68401364844,2612.54045311723,2142.75719122971,1506.73311520288,1,1605.6797258623,424.526170839966,1343.08359513974,1480.98104579507,168.386245563417,806.443108782359,1069.69922078774,1382.41456721015,1255.88367974661,1638.35571671795,1,1046.48429723752,907.60315902706,1,1465.39742586178,1,1,1,1,1,1,1,1,1,1,1,2771.70685643555,3230.98314725226,2876.15161596416,2408.15437327683,1851.62985989936,1811.35320502491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3068.96968997142,3493.04117920654,3465.97666738575,2305.16130909039,1,1904.74998033631,1284.36745861941,803.174686445534,1414.63678573053,1905.07203815268,1,1407.9838692372,1169.26710794133,689.797230771921,1,1,1,2483.70923066493,2795.86723192234,1977.76033825988,2507.93504680888,2388.24241910818,2664.2549131738,2881.73000804532,1982.59451129587,2273.16918711089,2091.52548702253,2904.62819870738,1,1892.46379654202,2466.15151483938,1057.29800057669,556.786079740416,1585.22856040285,1518.88840256954,931.735543780858,1225.62215952079,1472.9990245453,1908.60717091019,1012.69514650808,1,1,1,1,1,2297.71494160183,2016.32730069537,2326.82842785067,1,1,1,1,1,1,2555.55942663117,1,1,1,1,1,1,1,278.184542319119,1,1,1010.85792224979,1,797.174571546574,1503.33016152947,1,1586.4893323368,2074.93601256949,2212.73104959635,1975.94200310636,1319.36277031474,2146.54202991446,2280.4965663466,1665.67235298683,1306.86206697884,1674.56941068886,1,1440.70132184456,1,814.897030299111,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2613.77693642201,2596.42711469234,1680.63271027822,187.436086379376,1,1,1,1,1,1,1,1,1985.51929608971,2208.63177302463,1492.5187428438,247.029497109602,918.783079823781,1,2398.53155252108,1,1,1664.36656045498,1,1866.34791115562,1244.3913895916,1,1,1,1,1,1,1,658.461025066314,1,1,1,1,1,1,1,1,1,1,839.060954165096,1,1,1,1,893.960210650317,1,1,1,1,1,1,2646.59075411411,1231.74088664426,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2146.74896293925,2750.51508994325,2640.82029795677,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2307.15498014425,2251.21530902581,2148.8909322153,2456.54467664971,1701.19012289312,2191.79115778398,1438.24052862037,1646.40139282094,2230.34081747321,162.788604910759,1306.59435107627,739.471596920492,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,237.984179183187,1,1150.85631435754,1,1,1,1,1,1,1,1,1,1,1,1,66.8093129153289,1194.41562102329,1645.25348100046,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,638.05132193716,559.394271529897,1,1,1,1,1,1,1,1,1,1,10.0595746417907,1,1472.4650704242,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,227.50860599111,1,1,1,1,1,997.457773118053,1655.43849459136,1607.72036032171,1178.13576811544,985.091882661064,1121.44363460925,1,1,2314.72039587805,1,1,1143.74009261396,443.29137610002,2072.15236895612,2338.5681417156,1,1,2668.69375284079,2675.82514969268,2706.14440386167,3041.46570799594,2596.74250084113,3219.91582866025,2206.36148541572,2883.25520773871,2898.8194141392,2544.70634732149,2795.05496679069,1,1,1,1,1,1,1,1,1,1,1,2111.32541967977,1,1,1,1,1,1881.31144304388,2077.78857447858,1695.94364348168,2325.83947030247,1275.75264501851,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,588.921825647713,1,2357.18065080616,3143.45688875043,510.018656189845,3282.34555390812,2127.77695432778,2620.48245743466,2205.78365902734,1637.42689703261,1482.24670767283,1552.64602807951,2085.59351686682,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,570.06825456258,986.906244344458,1,2796.93451120401,1,1,1,2329.98547257138,1,1,1,1356.2207299754,1,1348.92750889761,688.392483136751,1,1,1,1,1,1,1,3955.37348278833,1,1,1,1,1041.45888853663,1040.54504436438,1025.72763361771,2359.09017761501,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,783.372059552694,1,1,1067.98820762141,1,1,2027.22857795664,1310.13379970141,1451.8478743242,905.651225753155,1335.79591972307,1820.19376575745,1,1821.42937624443,2206.38582415431,1727.77653292408,1363.8433442097,1797.70429133676,1881.70294586305,1595.21567483701,661.164944734768,2311.7395677331,1,1,2406.97073778299,2912.29917627157,1,1,1,1,10.0570115897717,2318.56946064777,2535.2651290161,1,1103.36586197679,1,616.709611487331,1348.92387372355,1,1,1,1610.95079276469,2714.8089917535,2607.01793125565,1,1,2074.73428334792,1662.19446136543,1813.09560593174,1419.17764212037,2482.21936084429,2863.35931302292,3131.6824216336,2561.15374914169,2865.15617238101,2871.97201200208,2379.77555614122,2781.86468733882,2913.75914599433,3423.4838420001,2590.54478101183,3266.36147365228,2724.06720283899,3209.60519900973,3163.34612459408,2224.25328824133,3602.50202441216,2855.43438875187,2780.09358377529,3122.2958991856,3420.64051866986,3252.04856707939,3521.3505989773,3777.89061091972,3652.88138918162,3696.3219641642,3482.4909041388,3784.66259992582,3864.67136480335,3695.76917341831,3849.47144887037,3636.99613629043,3601.2893784427,1,2012.5454744427,1975.01561474803,3772.33076897386,3256.03996075629,3159.29818042182,2057.52319519165,1592.18437149903,1681.21150687196,2160.7464075739,399.624702321011,1985.11210632356,2334.61075253758,1539.68149683555,1758.53145259361,1122.15047671953,1,1560.4468204151,920.630287459382,1,1,1,1,1,1,1,1,3743.84724845401,3877.39699379499,3560.48356836954,3265.53487545827,3410.33855248543,2988.65254475738,2855.75769975723,2939.41812380357,2400.49851637804,3044.87089572695,3256.84638871102,2597.18083705626,3539.4485607668,3006.0420690001,3140.28492884507,3385.45905195035,2786.69744000151,2379.53469951404,1231.72962599972,1,1,1,1,1,3247.34373090998,3522.08737693768,2637.38517679368,2093.61396617965,3550.72566248953,3324.99036073782,2749.21766317757,2322.17050293481,1361.10525646798,1,1,1,223.970546983416,1,1,1,1,1,1,3571.39194441892,3655.70464317967,3592.66116544087,3346.50829530334,3072.05969147975,2862.21499379534,3272.83984114439,3119.82729648586,3388.73460545261,2968.16799207813,2798.48348890438,3087.52067689234,3114.21744245754,3203.52647274868,3430.69406294208,3248.30930763151,3288.42723989272,2757.22576732951,3520.66025791298,3130.93025870386,3373.31932190834,3712.66501179399,2822.52935599692,3015.47564207839,3084.69254099905,2070.78006532194,2910.70395409012,1929.5380529837,2289.84381966891,1853.61059974612,2672.65816935192,2494.5466135947,2084.40682162922,1764.3109350136,1764.89770222065,1040.21490634107,1,1,1,1,1,1,1,1,3317.55449984353,2868.69655516778,2603.34828448064,2465.66805855983,2278.84426182194,2656.51132563573,2977.36054270501,2108.28402264726,2708.70142321711,2521.8515953415,1876.58163073683,2249.62852701214,857.33843415631,1,1,1,1,1,1,1,1,1,1,3199.68401364844,2612.54045311723,2142.75719122971,1506.73311520288,1,1605.6797258623,424.526170839966,1343.08359513974,1480.98104579507,168.386245563417,806.443108782359,1069.69922078774,1382.41456721015,1255.88367974661,1638.35571671795,1,1046.48429723752,907.60315902706,1,1465.39742586178,1,1,1,1,1,1,1,1,1,1,1,2771.70685643555,3230.98314725226,2876.15161596416,2408.15437327683,1851.62985989936,1811.35320502491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3068.96968997142,3493.04117920654,3465.97666738575,2305.16130909039,1,1904.74998033631,1284.36745861941,803.174686445534,1414.63678573053,1905.07203815268,1,1407.9838692372,1169.26710794133,689.797230771921,1,1,1,2483.70923066493,2795.86723192234,1977.76033825988,2507.93504680888,2388.24241910818,2664.2549131738,2881.73000804532,1982.59451129587,2273.16918711089,2091.52548702253,2904.62819870738,1,1892.46379654202,2466.15151483938,1057.29800057669,556.786079740416,1585.22856040285,1518.88840256954,931.735543780858,1225.62215952079,1472.9990245453,1908.60717091019,1012.69514650808,1,1,1,1,1,2297.71494160183,2016.32730069537,2326.82842785067,1,1,1,1,1,1,2555.55942663117,1,1,1,1,1,1,1,278.184542319119,1,1,1010.85792224979,1,797.174571546574,1503.33016152947,1,1586.4893323368,2074.93601256949,2212.73104959635,1975.94200310636,1319.36277031474,2146.54202991446,2280.4965663466,1665.67235298683,1306.86206697884,1674.56941068886,1,1440.70132184456,1,814.897030299111,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2613.77693642201,2596.42711469234,1680.63271027822,187.436086379376,1,1,1,1,1,1,1,1,1985.51929608971,2208.63177302463,1492.5187428438,247.029497109602,918.783079823781,1,2398.53155252108,1,1,1664.36656045498,1,1866.34791115562,1244.3913895916,1,1,1,1,1,1,1,658.461025066314,1,1,1,1,1,1,1,1,1,1,839.060954165096,1,1,1,1,893.960210650317,1,1,1,1,1,1,2646.59075411411,1231.74088664426,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2146.74896293925,2750.51508994325,2640.82029795677,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2307.15498014425,2251.21530902581,2148.8909322153,2456.54467664971,1701.19012289312,2191.79115778398,1438.24052862037,1646.40139282094,2230.34081747321,162.788604910759,1306.59435107627,739.471596920492,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,237.984179183187,1,1150.85631435754,1,1,1,1,1,1,1,1,1,1,1,1,66.8093129153289,1194.41562102329,1645.25348100046,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,638.05132193716,559.394271529897,1,1,1,1,1,1,1,1,1,1,10.0595746417907,1,1472.4650704242,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,227.50860599111,1,1,1,1,1,997.457773118053,1655.43849459136,1607.72036032171,1178.13576811544,985.091882661064,1121.44363460925,1,1,2314.72039587805,1,1,1143.74009261396,443.29137610002,2072.15236895612,2338.5681417156,1,1,2668.69375284079,2675.82514969268,2706.14440386167,3041.46570799594,2596.74250084113,3219.91582866025,2206.36148541572,2883.25520773871,2898.8194141392,2544.70634732149,2795.05496679069,1,1,1,1,1,1,1,1,1,1,1,2111.32541967977,1,1,1,1,1,1881.31144304388,2077.78857447858,1695.94364348168,2325.83947030247,1275.75264501851,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,588.921825647713,1,2357.18065080616,3143.45688875043,510.018656189845,3282.34555390812,2127.77695432778,2620.48245743466,2205.78365902734,1637.42689703261,1482.24670767283,1552.64602807951,2085.59351686682,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,570.06825456258,986.906244344458,1,2796.93451120401,1,1,1,2329.98547257138,1,1,1,1356.2207299754,1,1348.92750889761,688.392483136751,1,1,1,1,1,1,1,3955.37348278833,1,1,1,1,1041.45888853663,1040.54504436438,1025.72763361771,2359.09017761501,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,783.372059552694,1,1,1067.98820762141,1,1,2027.22857795664,1310.13379970141,1451.8478743242,905.651225753155,1335.79591972307,1820.19376575745,1,1821.42937624443,2206.38582415431,1727.77653292408,1363.8433442097,1797.70429133676,1881.70294586305,1595.21567483701,661.164944734768,2311.7395677331,1,1,2406.97073778299,2912.29917627157,1,1,1,1,10.0570115897717,2318.56946064777,2535.2651290161,1,1103.36586197679,1,616.709611487331,1348.92387372355,1,1,1,1610.95079276469,2714.8089917535,2607.01793125565,1,1,2074.73428334792,1662.19446136543,1813.09560593174,1419.17764212037,2482.21936084429,2863.35931302292,3131.6824216336,2561.15374914169,2865.15617238101,2871.97201200208,2379.77555614122,2781.86468733882,2913.75914599433,3423.4838420001,2590.54478101183,3266.36147365228,2724.06720283899,3209.60519900973,3163.34612459408,2224.25328824133,3602.50202441216,2855.43438875187,2780.09358377529,3122.2958991856,3420.64051866986,3252.04856707939,3521.3505989773,3777.89061091972,3652.88138918162,3696.3219641642,3482.4909041388,3784.66259992582,3864.67136480335,3695.76917341831,3849.47144887037,3636.99613629043,3601.2893784427,1,2012.5454744427,1975.01561474803,3772.33076897386,3256.03996075629,3159.29818042182,2057.52319519165,1592.18437149903,1681.21150687196,2160.7464075739,399.624702321011,1985.11210632356,2334.61075253758,1539.68149683555,1758.53145259361,1122.15047671953,1,1560.4468204151,920.630287459382,1,1,1,1,1,1,1,1,3743.84724845401,3877.39699379499,3560.48356836954,3265.53487545827,3410.33855248543,2988.65254475738,2855.75769975723,2939.41812380357,2400.49851637804,3044.87089572695,3256.84638871102,2597.18083705626,3539.4485607668,3006.0420690001,3140.28492884507,3385.45905195035,2786.69744000151,2379.53469951404,1231.72962599972,1,1,1,1,1,3247.34373090998,3522.08737693768,2637.38517679368,2093.61396617965,3550.72566248953,3324.99036073782,2749.21766317757,2322.17050293481,1361.10525646798,1,1,1,223.970546983416,1,1,1,1,1,1,3571.39194441892,3655.70464317967,3592.66116544087,3346.50829530334,3072.05969147975,2862.21499379534,3272.83984114439,3119.82729648586,3388.73460545261,2968.16799207813,2798.48348890438,3087.52067689234,3114.21744245754,3203.52647274868,3430.69406294208,3248.30930763151,3288.42723989272,2757.22576732951,3520.66025791298,3130.93025870386,3373.31932190834,3712.66501179399,2822.52935599692,3015.47564207839,3084.69254099905,2070.78006532194,2910.70395409012,1929.5380529837,2289.84381966891,1853.61059974612,2672.65816935192,2494.5466135947,2084.40682162922,1764.3109350136,1764.89770222065,1040.21490634107,1,1,1,1,1,1,1,1,3317.55449984353,2868.69655516778,2603.34828448064,2465.66805855983,2278.84426182194,2656.51132563573,2977.36054270501,2108.28402264726,2708.70142321711,2521.8515953415,1876.58163073683,2249.62852701214,857.33843415631,1,1,1,1,1,1,1,1,1,1,3199.68401364844,2612.54045311723,2142.75719122971,1506.73311520288,1,1605.6797258623,424.526170839966,1343.08359513974,1480.98104579507,168.386245563417,806.443108782359,1069.69922078774,1382.41456721015,1255.88367974661,1638.35571671795,1,1046.48429723752,907.60315902706,1,1465.39742586178,1,1,1,1,1,1,1,1,1,1,1,2771.70685643555,3230.98314725226,2876.15161596416,2408.15437327683,1851.62985989936,1811.35320502491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3068.96968997142,3493.04117920654,3465.97666738575,2305.16130909039,1,1904.74998033631,1284.36745861941,803.174686445534,1414.63678573053,1905.07203815268,1,1407.9838692372,1169.26710794133,689.797230771921,1,1,1,2483.70923066493,2795.86723192234,1977.76033825988,2507.93504680888,2388.24241910818,2664.2549131738,2881.73000804532,1982.59451129587,2273.16918711089,2091.52548702253,2904.62819870738,1,1892.46379654202,2466.15151483938,1057.29800057669,556.786079740416,1585.22856040285,1518.88840256954,931.735543780858,1225.62215952079,1472.9990245453,1908.60717091019,1012.69514650808,1,1,1,1,1,2297.71494160183,2016.32730069537,2326.82842785067,1,1,1,1,1,1,2555.55942663117,1,1,1,1,1,1,1,278.184542319119,1,1,1010.85792224979,1,797.174571546574,1503.33016152947,1,1586.4893323368,2074.93601256949,2212.73104959635,1975.94200310636,1319.36277031474,2146.54202991446,2280.4965663466,1665.67235298683,1306.86206697884,1674.56941068886,1,1440.70132184456,1,814.897030299111,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2613.77693642201,2596.42711469234,1680.63271027822,187.436086379376,1,1,1,1,1,1,1,1,1985.51929608971,2208.63177302463,1492.5187428438,247.029497109602,918.783079823781,1,2398.53155252108,1,1,1664.36656045498,1,1866.34791115562,1244.3913895916,1,1,1,1,1,1,1,658.461025066314,1,1,1,1,1,1,1,1,1,1,839.060954165096,1,1,1,1,893.960210650317,1,1,1,1,1,1,2646.59075411411,1231.74088664426,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2146.74896293925,2750.51508994325,2640.82029795677,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2307.15498014425,2251.21530902581,2148.8909322153,2456.54467664971,1701.19012289312,2191.79115778398,1438.24052862037,1646.40139282094,2230.34081747321,162.788604910759,1306.59435107627,739.471596920492,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,237.984179183187,1,1150.85631435754,1,1,1,1,1,1,1,1,1,1,1,1,66.8093129153289,1194.41562102329,1645.25348100046,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,638.05132193716,559.394271529897,1,1,1,1,1,1,1,1,1,1,10.0595746417907,1,1472.4650704242,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,227.50860599111,1,1,1,1,1,997.457773118053,1655.43849459136,1607.72036032171,1178.13576811544,985.091882661064,1121.44363460925,1,1,2314.72039587805,1,1,1143.74009261396,443.29137610002,2072.15236895612,2338.5681417156,1,1,2668.69375284079,2675.82514969268,2706.14440386167,3041.46570799594,2596.74250084113,3219.91582866025,2206.36148541572,2883.25520773871,2898.8194141392,2544.70634732149,2795.05496679069,1,1,1,1,1,1,1,1,1,1,1,2111.32541967977,1,1,1,1,1,1881.31144304388,2077.78857447858,1695.94364348168,2325.83947030247,1275.75264501851,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,588.921825647713,1,2357.18065080616,3143.45688875043,510.018656189845,3282.34555390812,2127.77695432778,2620.48245743466,2205.78365902734,1637.42689703261,1482.24670767283,1552.64602807951,2085.59351686682,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,570.06825456258,986.906244344458,1,2796.93451120401,1,1,1,2329.98547257138,1,1,1,1356.2207299754,1,1348.92750889761,688.392483136751,1,1,1,1,1,1,1,3955.37348278833,1,1,1,1,1041.45888853663,1040.54504436438,1025.72763361771,2359.09017761501,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,783.372059552694,1,1,1067.98820762141,1,1,2027.22857795664,1310.13379970141,1451.8478743242,905.651225753155,1335.79591972307,1820.19376575745,1,1821.42937624443,2206.38582415431,1727.77653292408,1363.8433442097,1797.70429133676,1881.70294586305,1595.21567483701,661.164944734768,2311.7395677331,1,1,2406.97073778299,2912.29917627157,1,1,1,1,10.0570115897717,2318.56946064777,2535.2651290161,1,1103.36586197679,1,616.709611487331,1348.92387372355,1,1,1,1610.95079276469,2714.8089917535,2607.01793125565,1,1,2074.73428334792,1662.19446136543,1813.09560593174,1419.17764212037,2482.21936084429,2863.35931302292,3131.6824216336,2561.15374914169,2865.15617238101,2871.97201200208,2379.77555614122,2781.86468733882,2913.75914599433,3423.4838420001,2590.54478101183,3266.36147365228,2724.06720283899,3209.60519900973,3163.34612459408,2224.25328824133,3602.50202441216,2855.43438875187,2780.09358377529,3122.2958991856,3420.64051866986,3252.04856707939,3521.3505989773,3777.89061091972,3652.88138918162,3696.3219641642,3482.4909041388,3784.66259992582,3864.67136480335,3695.76917341831,3849.47144887037,3636.99613629043,3601.2893784427,1,2012.5454744427,1975.01561474803,3772.33076897386,3256.03996075629,3159.29818042182,2057.52319519165,1592.18437149903,1681.21150687196,2160.7464075739,399.624702321011,1985.11210632356,2334.61075253758,1539.68149683555,1758.53145259361,1122.15047671953,1,1560.4468204151,920.630287459382,1,1,1,1,1,1,1,1,3743.84724845401,3877.39699379499,3560.48356836954,3265.53487545827,3410.33855248543,2988.65254475738,2855.75769975723,2939.41812380357,2400.49851637804,3044.87089572695,3256.84638871102,2597.18083705626,3539.4485607668,3006.0420690001,3140.28492884507,3385.45905195035,2786.69744000151,2379.53469951404,1231.72962599972,1,1,1,1,1,3247.34373090998,3522.08737693768,2637.38517679368,2093.61396617965,3550.72566248953,3324.99036073782,2749.21766317757,2322.17050293481,1361.10525646798,1,1,1,223.970546983416,1,1,1,1,1,1,3571.39194441892,3655.70464317967,3592.66116544087,3346.50829530334,3072.05969147975,2862.21499379534,3272.83984114439,3119.82729648586,3388.73460545261,2968.16799207813,2798.48348890438,3087.52067689234,3114.21744245754,3203.52647274868,3430.69406294208,3248.30930763151,3288.42723989272,2757.22576732951,3520.66025791298,3130.93025870386,3373.31932190834,3712.66501179399,2822.52935599692,3015.47564207839,3084.69254099905,2070.78006532194,2910.70395409012,1929.5380529837,2289.84381966891,1853.61059974612,2672.65816935192,2494.5466135947,2084.40682162922,1764.3109350136,1764.89770222065,1040.21490634107,1,1,1,1,1,1,1,1,3317.55449984353,2868.69655516778,2603.34828448064,2465.66805855983,2278.84426182194,2656.51132563573,2977.36054270501,2108.28402264726,2708.70142321711,2521.8515953415,1876.58163073683,2249.62852701214,857.33843415631,1,1,1,1,1,1,1,1,1,1,3199.68401364844,2612.54045311723,2142.75719122971,1506.73311520288,1,1605.6797258623,424.526170839966,1343.08359513974,1480.98104579507,168.386245563417,806.443108782359,1069.69922078774,1382.41456721015,1255.88367974661,1638.35571671795,1,1046.48429723752,907.60315902706,1,1465.39742586178,1,1,1,1,1,1,1,1,1,1,1,2771.70685643555,3230.98314725226,2876.15161596416,2408.15437327683,1851.62985989936,1811.35320502491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3068.96968997142,3493.04117920654,3465.97666738575,2305.16130909039,1,1904.74998033631,1284.36745861941,803.174686445534,1414.63678573053,1905.07203815268,1,1407.9838692372,1169.26710794133,689.797230771921,1,1,1,2483.70923066493,2795.86723192234,1977.76033825988,2507.93504680888,2388.24241910818,2664.2549131738,2881.73000804532,1982.59451129587,2273.16918711089,2091.52548702253,2904.62819870738,1,1892.46379654202,2466.15151483938,1057.29800057669,556.786079740416,1585.22856040285,1518.88840256954,931.735543780858,1225.62215952079,1472.9990245453,1908.60717091019,1012.69514650808,1,1,1,1,1,2297.71494160183,2016.32730069537,2326.82842785067,1,1,1,1,1,1,2555.55942663117,1,1,1,1,1,1,1,278.184542319119,1,1,1010.85792224979,1,797.174571546574,1503.33016152947,1,1586.4893323368,2074.93601256949,2212.73104959635,1975.94200310636,1319.36277031474,2146.54202991446,2280.4965663466,1665.67235298683,1306.86206697884,1674.56941068886,1,1440.70132184456,1,814.897030299111,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2613.77693642201,2596.42711469234,1680.63271027822,187.436086379376,1,1,1,1,1,1,1,1,1985.51929608971,2208.63177302463,1492.5187428438,247.029497109602,918.783079823781,1,2398.53155252108,1,1,1664.36656045498,1,1866.34791115562,1244.3913895916,1,1,1,1,1,1,1,658.461025066314,1,1,1,1,1,1,1,1,1,1,839.060954165096,1,1,1,1,893.960210650317,1,1,1,1,1,1,2646.59075411411,1231.74088664426,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2146.74896293925,2750.51508994325,2640.82029795677,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2307.15498014425,2251.21530902581,2148.8909322153,2456.54467664971,1701.19012289312,2191.79115778398,1438.24052862037,1646.40139282094,2230.34081747321,162.788604910759,1306.59435107627,739.471596920492,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,237.984179183187,1,1150.85631435754,1,1,1,1,1,1,1,1,1,1,1,1,66.8093129153289,1194.41562102329,1645.25348100046,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,638.05132193716,559.394271529897,1,1,1,1,1,1,1,1,1,1,10.0595746417907,1,1472.4650704242,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,227.50860599111,1,1,1,1,1,997.457773118053,1655.43849459136,1607.72036032171,1178.13576811544,985.091882661064,1121.44363460925,1,1,2314.72039587805,1,1,1143.74009261396,443.29137610002,2072.15236895612,2338.5681417156,1,1,2668.69375284079,2675.82514969268,2706.14440386167,3041.46570799594,2596.74250084113,3219.91582866025,2206.36148541572,2883.25520773871,2898.8194141392,2544.70634732149,2795.05496679069,1,1,1,1,1,1,1,1,1,1,1,2111.32541967977,1,1,1,1,1,1881.31144304388,2077.78857447858,1695.94364348168,2325.83947030247,1275.75264501851,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,588.921825647713,1,2357.18065080616,3143.45688875043,510.018656189845,3282.34555390812,2127.77695432778,2620.48245743466,2205.78365902734,1637.42689703261,1482.24670767283,1552.64602807951,2085.59351686682,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,570.06825456258,986.906244344458,1,2796.93451120401,1,1,1,2329.98547257138,1,1,1,1356.2207299754,1,1348.92750889761,688.392483136751,1,1,1,1,1,1,1,3955.37348278833,1,1,1,1,1041.45888853663,1040.54504436438,1025.72763361771,2359.09017761501,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,783.372059552694,1,1,1067.98820762141,1,1,2027.22857795664,1310.13379970141,1451.8478743242,905.651225753155,1335.79591972307,1820.19376575745,1,1821.42937624443,2206.38582415431,1727.77653292408,1363.8433442097,1797.70429133676,1881.70294586305,1595.21567483701,661.164944734768,2311.7395677331,1,1,2406.97073778299,2912.29917627157,1,1,1,1,10.0570115897717,2318.56946064777,2535.2651290161,1,1103.36586197679,1,616.709611487331,1348.92387372355,1,1,1,1610.95079276469,2714.8089917535,2607.01793125565,1,1,2074.73428334792,1662.19446136543,1813.09560593174,1419.17764212037,2482.21936084429,2863.35931302292,3131.6824216336,2561.15374914169,2865.15617238101,2871.97201200208,2379.77555614122,2781.86468733882,2913.75914599433,3423.4838420001,2590.54478101183,3266.36147365228,2724.06720283899,3209.60519900973,3163.34612459408,2224.25328824133,3602.50202441216,2855.43438875187,2780.09358377529,3122.2958991856,3420.64051866986,3252.04856707939,3521.3505989773,3777.89061091972,3652.88138918162,3696.3219641642,3482.4909041388,3784.66259992582,3864.67136480335,3695.76917341831,3849.47144887037,3636.99613629043,3601.2893784427,1,2012.5454744427,1975.01561474803,3772.33076897386,3256.03996075629,3159.29818042182,2057.52319519165,1592.18437149903,1681.21150687196,2160.7464075739,399.624702321011,1985.11210632356,2334.61075253758,1539.68149683555,1758.53145259361,1122.15047671953,1,1560.4468204151,920.630287459382,1,1,1,1,1,1,1,1,3743.84724845401,3877.39699379499,3560.48356836954,3265.53487545827,3410.33855248543,2988.65254475738,2855.75769975723,2939.41812380357,2400.49851637804,3044.87089572695,3256.84638871102,2597.18083705626,3539.4485607668,3006.0420690001,3140.28492884507,3385.45905195035,2786.69744000151,2379.53469951404,1231.72962599972,1,1,1,1,1,3247.34373090998,3522.08737693768,2637.38517679368,2093.61396617965,3550.72566248953,3324.99036073782,2749.21766317757,2322.17050293481,1361.10525646798,1,1,1,223.970546983416,1,1,1,1,1,1,3571.39194441892,3655.70464317967,3592.66116544087,3346.50829530334,3072.05969147975,2862.21499379534,3272.83984114439,3119.82729648586,3388.73460545261,2968.16799207813,2798.48348890438,3087.52067689234,3114.21744245754,3203.52647274868,3430.69406294208,3248.30930763151,3288.42723989272,2757.22576732951,3520.66025791298,3130.93025870386,3373.31932190834,3712.66501179399,2822.52935599692,3015.47564207839,3084.69254099905,2070.78006532194,2910.70395409012,1929.5380529837,2289.84381966891,1853.61059974612,2672.65816935192,2494.5466135947,2084.40682162922,1764.3109350136,1764.89770222065,1040.21490634107,1,1,1,1,1,1,1,1,3317.55449984353,2868.69655516778,2603.34828448064,2465.66805855983,2278.84426182194,2656.51132563573,2977.36054270501,2108.28402264726,2708.70142321711,2521.8515953415,1876.58163073683,2249.62852701214,857.33843415631,1,1,1,1,1,1,1,1,1,1,3199.68401364844,2612.54045311723,2142.75719122971,1506.73311520288,1,1605.6797258623,424.526170839966,1343.08359513974,1480.98104579507,168.386245563417,806.443108782359,1069.69922078774,1382.41456721015,1255.88367974661,1638.35571671795,1,1046.48429723752,907.60315902706,1,1465.39742586178,1,1,1,1,1,1,1,1,1,1,1,2771.70685643555,3230.98314725226,2876.15161596416,2408.15437327683,1851.62985989936,1811.35320502491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3068.96968997142,3493.04117920654,3465.97666738575,2305.16130909039,1,1904.74998033631,1284.36745861941,803.174686445534,1414.63678573053,1905.07203815268,1,1407.9838692372,1169.26710794133,689.797230771921,1,1,1,2483.70923066493,2795.86723192234,1977.76033825988,2507.93504680888,2388.24241910818,2664.2549131738,2881.73000804532,1982.59451129587,2273.16918711089,2091.52548702253,2904.62819870738,1,1892.46379654202,2466.15151483938,1057.29800057669,556.786079740416,1585.22856040285,1518.88840256954,931.735543780858,1225.62215952079,1472.9990245453,1908.60717091019,1012.69514650808,1,1,1,1,1,2297.71494160183,2016.32730069537,2326.82842785067,1,1,1,1,1,1,2555.55942663117,1,1,1,1,1,1,1,278.184542319119,1,1,1010.85792224979,1,797.174571546574,1503.33016152947,1,1586.4893323368,2074.93601256949,2212.73104959635,1975.94200310636,1319.36277031474,2146.54202991446,2280.4965663466,1665.67235298683,1306.86206697884,1674.56941068886,1,1440.70132184456,1,814.897030299111,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2613.77693642201,2596.42711469234,1680.63271027822,187.436086379376,1,1,1,1,1,1,1,1,1985.51929608971,2208.63177302463,1492.5187428438,247.029497109602,918.783079823781,1,2398.53155252108,1,1,1664.36656045498,1,1866.34791115562,1244.3913895916,1,1,1,1,1,1,1,658.461025066314,1,1,1,1,1,1,1,1,1,1,839.060954165096,1,1,1,1,893.960210650317,1,1,1,1,1,1,2646.59075411411,1231.74088664426,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2146.74896293925,2750.51508994325,2640.82029795677,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2307.15498014425,2251.21530902581,2148.8909322153,2456.54467664971,1701.19012289312,2191.79115778398,1438.24052862037,1646.40139282094,2230.34081747321,162.788604910759,1306.59435107627,739.471596920492,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,237.984179183187,1,1150.85631435754,1,1,1,1,1,1,1,1,1,1,1,1,66.8093129153289,1194.41562102329,1645.25348100046,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,638.05132193716,559.394271529897,1,1,1,1,1,1,1,1,1,1,10.0595746417907,1,1472.4650704242,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,227.50860599111,1,1,1,1,1,997.457773118053,1655.43849459136,1607.72036032171,1178.13576811544,985.091882661064,1121.44363460925,1,1,2314.72039587805,1,1,1143.74009261396,443.29137610002,2072.15236895612,2338.5681417156,1,1,2668.69375284079,2675.82514969268,2706.14440386167,3041.46570799594,2596.74250084113,3219.91582866025,2206.36148541572,2883.25520773871,2898.8194141392,2544.70634732149,2795.05496679069,1,1,1,1,1,1,1,1,1,1,1,2111.32541967977,1,1,1,1,1,1881.31144304388,2077.78857447858,1695.94364348168,2325.83947030247,1275.75264501851,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,588.921825647713,1,2357.18065080616,3143.45688875043,510.018656189845,3282.34555390812,2127.77695432778,2620.48245743466,2205.78365902734,1637.42689703261,1482.24670767283,1552.64602807951,2085.59351686682,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,570.06825456258,986.906244344458,1,2796.93451120401,1,1,1,2329.98547257138,1,1,1,1356.2207299754,1,1348.92750889761,688.392483136751,1,1,1,1,1,1,1,3955.37348278833,1,1,1,1,1041.45888853663,1040.54504436438,1025.72763361771,2359.09017761501,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,783.372059552694,1,1,1067.98820762141,1,1,2027.22857795664,1310.13379970141,1451.8478743242,905.651225753155,1335.79591972307,1820.19376575745,1,1821.42937624443,2206.38582415431,1727.77653292408,1363.8433442097,1797.70429133676,1881.70294586305,1595.21567483701,661.164944734768,2311.7395677331,1,1,2406.97073778299,2912.29917627157,1,1,1,1,10.0570115897717,2318.56946064777,2535.2651290161,1,1103.36586197679,1,616.709611487331,1348.92387372355,1,1,1,1610.95079276469,2714.8089917535,2607.01793125565,1,1,2074.73428334792,1662.19446136543,1813.09560593174,1419.17764212037,2482.21936084429,2863.35931302292,3131.6824216336,2561.15374914169,2865.15617238101,2871.97201200208,2379.77555614122,2781.86468733882,2913.75914599433,3423.4838420001,2590.54478101183,3266.36147365228,2724.06720283899,3209.60519900973,3163.34612459408,2224.25328824133,3602.50202441216,2855.43438875187,2780.09358377529,3122.2958991856,3420.64051866986,3252.04856707939,3521.3505989773,3777.89061091972,3652.88138918162,3696.3219641642,3482.4909041388,3784.66259992582,3864.67136480335,3695.76917341831,3849.47144887037,3636.99613629043,3601.2893784427,1,2012.5454744427,1975.01561474803,3772.33076897386,3256.03996075629,3159.29818042182,2057.52319519165,1592.18437149903,1681.21150687196,2160.7464075739,399.624702321011,1985.11210632356,2334.61075253758,1539.68149683555,1758.53145259361,1122.15047671953,1,1560.4468204151,920.630287459382,1,1,1,1,1,1,1,1,3743.84724845401,3877.39699379499,3560.48356836954,3265.53487545827,3410.33855248543,2988.65254475738,2855.75769975723,2939.41812380357,2400.49851637804,3044.87089572695,3256.84638871102,2597.18083705626,3539.4485607668,3006.0420690001,3140.28492884507,3385.45905195035,2786.69744000151,2379.53469951404,1231.72962599972,1,1,1,1,1,3247.34373090998,3522.08737693768,2637.38517679368,2093.61396617965,3550.72566248953,3324.99036073782,2749.21766317757,2322.17050293481,1361.10525646798,1,1,1,223.970546983416,1,1,1,1,1,1,3571.39194441892,3655.70464317967,3592.66116544087,3346.50829530334,3072.05969147975,2862.21499379534,3272.83984114439,3119.82729648586,3388.73460545261,2968.16799207813,2798.48348890438,3087.52067689234,3114.21744245754,3203.52647274868,3430.69406294208,3248.30930763151,3288.42723989272,2757.22576732951,3520.66025791298,3130.93025870386,3373.31932190834,3712.66501179399,2822.52935599692,3015.47564207839,3084.69254099905,2070.78006532194,2910.70395409012,1929.5380529837,2289.84381966891,1853.61059974612,2672.65816935192,2494.5466135947,2084.40682162922,1764.3109350136,1764.89770222065,1040.21490634107,1,1,1,1,1,1,1,1,3317.55449984353,2868.69655516778,2603.34828448064,2465.66805855983,2278.84426182194,2656.51132563573,2977.36054270501,2108.28402264726,2708.70142321711,2521.8515953415,1876.58163073683,2249.62852701214,857.33843415631,1,1,1,1,1,1,1,1,1,1,3199.68401364844,2612.54045311723,2142.75719122971,1506.73311520288,1,1605.6797258623,424.526170839966,1343.08359513974,1480.98104579507,168.386245563417,806.443108782359,1069.69922078774,1382.41456721015,1255.88367974661,1638.35571671795,1,1046.48429723752,907.60315902706,1,1465.39742586178,1,1,1,1,1,1,1,1,1,1,1,2771.70685643555,3230.98314725226,2876.15161596416,2408.15437327683,1851.62985989936,1811.35320502491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3068.96968997142,3493.04117920654,3465.97666738575,2305.16130909039,1,1904.74998033631,1284.36745861941,803.174686445534,1414.63678573053,1905.07203815268,1,1407.9838692372,1169.26710794133,689.797230771921,1,1,1,2483.70923066493,2795.86723192234,1977.76033825988,2507.93504680888,2388.24241910818,2664.2549131738,2881.73000804532,1982.59451129587,2273.16918711089,2091.52548702253,2904.62819870738,1,1892.46379654202,2466.15151483938,1057.29800057669,556.786079740416,1585.22856040285,1518.88840256954,931.735543780858,1225.62215952079,1472.9990245453,1908.60717091019,1012.69514650808,1,1,1,1,1,2297.71494160183,2016.32730069537,2326.82842785067,1,1,1,1,1,1,2555.55942663117,1,1,1,1,1,1,1,278.184542319119,1,1,1010.85792224979,1,797.174571546574,1503.33016152947,1,1586.4893323368,2074.93601256949,2212.73104959635,1975.94200310636,1319.36277031474,2146.54202991446,2280.4965663466,1665.67235298683,1306.86206697884,1674.56941068886,1,1440.70132184456,1,814.897030299111,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2613.77693642201,2596.42711469234,1680.63271027822,187.436086379376,1,1,1,1,1,1,1,1,1985.51929608971,2208.63177302463,1492.5187428438,247.029497109602,918.783079823781,1,2398.53155252108,1,1,1664.36656045498,1,1866.34791115562,1244.3913895916,1,1,1,1,1,1,1,658.461025066314,1,1,1,1,1,1,1,1,1,1,839.060954165096,1,1,1,1,893.960210650317,1,1,1,1,1,1,2646.59075411411,1231.74088664426,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2146.74896293925,2750.51508994325,2640.82029795677,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2307.15498014425,2251.21530902581,2148.8909322153,2456.54467664971,1701.19012289312,2191.79115778398,1438.24052862037,1646.40139282094,2230.34081747321,162.788604910759,1306.59435107627,739.471596920492,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,237.984179183187,1,1150.85631435754,1,1,1,1,1,1,1,1,1,1,1,1,66.8093129153289,1194.41562102329,1645.25348100046,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,638.05132193716,559.394271529897,1,1,1,1,1,1,1,1,1,1,10.0595746417907,1,1472.4650704242,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,227.50860599111,1,1,1,1,1,997.457773118053,1655.43849459136,1607.72036032171,1178.13576811544,985.091882661064,1121.44363460925,1,1,2314.72039587805,1,1,1143.74009261396,443.29137610002,2072.15236895612,2338.5681417156,1,1,2668.69375284079,2675.82514969268,2706.14440386167,3041.46570799594,2596.74250084113,3219.91582866025,2206.36148541572,2883.25520773871,2898.8194141392,2544.70634732149,2795.05496679069,1,1,1,1,1,1,1,1,1,1,1,2111.32541967977,1,1,1,1,1,1881.31144304388,2077.78857447858,1695.94364348168,2325.83947030247,1275.75264501851,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,588.921825647713,1,2357.18065080616,3143.45688875043,510.018656189845,3282.34555390812,2127.77695432778,2620.48245743466,2205.78365902734,1637.42689703261,1482.24670767283,1552.64602807951,2085.59351686682,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,570.06825456258,986.906244344458,1,2796.93451120401,1,1,1,2329.98547257138,1,1,1,1356.2207299754,1,1348.92750889761,688.392483136751,1,1,1,1,1,1,1,3955.37348278833,1,1,1,1,1041.45888853663,1040.54504436438,1025.72763361771,2359.09017761501,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,783.372059552694,1,1,1067.98820762141,1,1,2027.22857795664,1310.13379970141,1451.8478743242,905.651225753155,1335.79591972307,1820.19376575745,1,1821.42937624443,2206.38582415431,1727.77653292408,1363.8433442097,1797.70429133676,1881.70294586305,1595.21567483701,661.164944734768,2311.7395677331,1,1,2406.97073778299,2912.29917627157,1,1,1,1,10.0570115897717,2318.56946064778,2535.2651290161,1,1103.36586197679,1,616.709611487331,1348.92387372355,1,1,1,1610.95079276469,2714.8089917535,2607.01793125565,1,1,2074.73428334792,1662.19446136543,1813.09560593174,1419.17764212037,2482.21936084429,2863.35931302292,3131.6824216336,2561.15374914169,2865.15617238101,2871.97201200208,2379.77555614122,2781.86468733882,2913.75914599433,3423.4838420001,2590.54478101183,3266.36147365228,2724.06720283899,3209.60519900973,3163.34612459408,2224.25328824133,3602.50202441216,2855.43438875187,2780.09358377529,3122.2958991856,3420.64051866986,3252.04856707939,3521.3505989773,3777.89061091972,3652.88138918162,3696.3219641642,3482.4909041388,3784.66259992582,3864.67136480335,3695.76917341831,3849.47144887037,3636.99613629043,3601.2893784427,1,2012.5454744427,1975.01561474803,3772.33076897386,3256.03996075629,3159.29818042182,2057.52319519165,1592.18437149903,1681.21150687196,2160.7464075739,399.624702321011,1985.11210632356,2334.61075253758,1539.68149683555,1758.53145259361,1122.15047671953,1,1560.4468204151,920.630287459382,1,1,1,1,1,1,1,1,3743.84724845401,3877.39699379499,3560.48356836954,3265.53487545827,3410.33855248543,2988.65254475738,2855.75769975723,2939.41812380357,2400.49851637804,3044.87089572695,3256.84638871102,2597.18083705626,3539.4485607668,3006.0420690001,3140.28492884507,3385.45905195035,2786.69744000151,2379.53469951404,1231.72962599972,1,1,1,1,1,3247.34373090999,3522.08737693768,2637.38517679368,2093.61396617965,3550.72566248953,3324.99036073783,2749.21766317757,2322.17050293481,1361.10525646798,1,1,1,223.970546983416,1,1,1,1,1,1,3571.39194441892,3655.70464317967,3592.66116544087,3346.50829530334,3072.05969147975,2862.21499379534,3272.83984114439,3119.82729648586,3388.73460545261,2968.16799207813,2798.48348890438,3087.52067689234,3114.21744245754,3203.52647274868,3430.69406294209,3248.30930763151,3288.42723989272,2757.22576732951,3520.66025791298,3130.93025870386,3373.31932190834,3712.66501179399,2822.52935599692,3015.47564207839,3084.69254099905,2070.78006532194,2910.70395409013,1929.5380529837,2289.84381966891,1853.61059974612,2672.65816935192,2494.5466135947,2084.40682162922,1764.3109350136,1764.89770222065,1040.21490634107,1,1,1,1,1,1,1,1,3317.55449984353,2868.69655516777,2603.34828448064,2465.66805855983,2278.84426182194,2656.51132563573,2977.36054270501,2108.28402264726,2708.70142321711,2521.8515953415,1876.58163073683,2249.62852701214,857.338434156309,1,1,1,1,1,1,1,1,1,1,3199.68401364844,2612.54045311723,2142.75719122971,1506.73311520288,1,1605.6797258623,424.526170839966,1343.08359513974,1480.98104579507,168.386245563417,806.443108782359,1069.69922078774,1382.41456721015,1255.88367974661,1638.35571671795,1,1046.48429723752,907.60315902706,1,1465.39742586178,1,1,1,1,1,1,1,1,1,1,1,2771.70685643555,3230.98314725226,2876.15161596416,2408.15437327683,1851.62985989936,1811.35320502491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3068.96968997142,3493.04117920654,3465.97666738575,2305.16130909039,1,1904.74998033631,1284.36745861941,803.174686445533,1414.63678573053,1905.07203815268,1,1407.9838692372,1169.26710794133,689.797230771921,1,1,1,2483.70923066493,2795.86723192234,1977.76033825988,2507.93504680888,2388.24241910818,2664.2549131738,2881.73000804532,1982.59451129587,2273.16918711089,2091.52548702253,2904.62819870739,1,1892.46379654202,2466.15151483938,1057.29800057668,556.786079740416,1585.22856040285,1518.88840256954,931.735543780858,1225.62215952079,1472.9990245453,1908.60717091019,1012.69514650808,1,1,1,1,1,2297.71494160183,2016.32730069537,2326.82842785067,1,1,1,1,1,1,2555.55942663117,1,1,1,1,1,1,1,278.184542319119,1,1,1010.85792224979,1,797.174571546574,1503.33016152947,1,1586.4893323368,2074.93601256949,2212.73104959636,1975.94200310636,1319.36277031474,2146.54202991446,2280.4965663466,1665.67235298683,1306.86206697884,1674.56941068886,1,1440.70132184456,1,814.897030299112,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2613.77693642201,2596.42711469234,1680.63271027822,187.436086379376,1,1,1,1,1,1,1,1,1985.51929608971,2208.63177302463,1492.5187428438,247.029497109602,918.783079823781,1,2398.53155252108,1,1,1664.36656045498,1,1866.34791115562,1244.3913895916,1,1,1,1,1,1,1,658.461025066314,1,1,1,1,1,1,1,1,1,1,839.060954165096,1,1,1,1,893.960210650317,1,1,1,1,1,1,2646.59075411411,1231.74088664426,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2146.74896293925,2750.51508994325,2640.82029795676,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2307.15498014425,2251.21530902581,2148.8909322153,2456.54467664971,1701.19012289312,2191.79115778398,1438.24052862037,1646.40139282094,2230.34081747321,162.788604910759,1306.59435107627,739.471596920491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,237.984179183187,1,1150.85631435754,1,1,1,1,1,1,1,1,1,1,1,1,66.8093129153289,1194.41562102329,1645.25348100046,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,638.05132193716,559.394271529896,1,1,1,1,1,1,1,1,1,1,10.0595746417907,1,1472.4650704242,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,227.50860599111,1,1,1,1,1,997.457773118053,1655.43849459136,1607.72036032171,1178.13576811544,985.091882661064,1121.44363460925,1,1,2314.72039587805,1,1,1143.74009261397,443.29137610002,2072.15236895612,2338.5681417156,1,1,2668.69375284079,2675.82514969268,2706.14440386167,3041.46570799594,2596.74250084113,3219.91582866025,2206.36148541572,2883.25520773871,2898.8194141392,2544.70634732149,2795.05496679069,1,1,1,1,1,1,1,1,1,1,1,2111.32541967977,1,1,1,1,1,1881.31144304388,2077.78857447858,1695.94364348168,2325.83947030247,1275.75264501851,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,588.921825647712,1,2357.18065080615,3143.45688875043,510.018656189845,3282.34555390812,2127.77695432778,2620.48245743466,2205.78365902734,1637.42689703261,1482.24670767283,1552.64602807951,2085.59351686682,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,570.06825456258,986.906244344458,1,2796.93451120401,1,1,1,2329.98547257138,1,1,1,1356.2207299754,1,1348.92750889761,688.392483136751,1,1,1],"Archive1208_field7":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive1208_field8":[1,1,1,1,3955.37348278833,1,1,1,1,1041.45888853663,1040.54504436438,1025.72763361771,2359.09017761501,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,783.372059552694,1,1,1067.98820762141,1,1,2027.22857795664,1310.13379970141,1451.8478743242,905.651225753155,1335.79591972307,1820.19376575745,1,1821.42937624443,2206.38582415431,1727.77653292408,1363.8433442097,1797.70429133676,1881.70294586305,1595.21567483701,661.164944734768,2311.7395677331,1,1,2406.97073778299,2912.29917627157,1,1,1,1,10.0570115897717,2318.56946064778,2535.2651290161,1,1103.36586197679,1,616.709611487331,1348.92387372355,1,1,1,1610.95079276469,2714.8089917535,2607.01793125565,1,1,2074.73428334792,1662.19446136543,1813.09560593174,1419.17764212037,2482.21936084429,2863.35931302292,3131.6824216336,2561.15374914169,2865.15617238101,2871.97201200208,2379.77555614122,2781.86468733882,2913.75914599433,3423.4838420001,2590.54478101183,3266.36147365228,2724.06720283899,3209.60519900973,3163.34612459408,2224.25328824133,3602.50202441216,2855.43438875187,2780.09358377529,3122.2958991856,3420.64051866986,3252.04856707939,3521.3505989773,3777.89061091972,3652.88138918162,3696.3219641642,3482.4909041388,3784.66259992582,3864.67136480335,3695.76917341831,3849.47144887037,3636.99613629043,3601.2893784427,1,2012.5454744427,1975.01561474803,3772.33076897386,3256.03996075629,3159.29818042182,2057.52319519165,1592.18437149903,1681.21150687196,2160.7464075739,399.624702321011,1985.11210632356,2334.61075253758,1539.68149683555,1758.53145259361,1122.15047671953,1,1560.4468204151,920.630287459382,1,1,1,1,1,1,1,1,3743.84724845401,3877.39699379499,3560.48356836954,3265.53487545827,3410.33855248543,2988.65254475738,2855.75769975723,2939.41812380357,2400.49851637804,3044.87089572695,3256.84638871102,2597.18083705626,3539.4485607668,3006.0420690001,3140.28492884507,3385.45905195035,2786.69744000151,2379.53469951404,1231.72962599972,1,1,1,1,1,3247.34373090999,3522.08737693768,2637.38517679368,2093.61396617965,3550.72566248953,3324.99036073783,2749.21766317757,2322.17050293481,1361.10525646798,1,1,1,223.970546983416,1,1,1,1,1,1,3571.39194441892,3655.70464317967,3592.66116544087,3346.50829530334,3072.05969147975,2862.21499379534,3272.83984114439,3119.82729648586,3388.73460545261,2968.16799207813,2798.48348890438,3087.52067689234,3114.21744245754,3203.52647274868,3430.69406294209,3248.30930763151,3288.42723989272,2757.22576732951,3520.66025791298,3130.93025870386,3373.31932190834,3712.66501179399,2822.52935599692,3015.47564207839,3084.69254099905,2070.78006532194,2910.70395409013,1929.5380529837,2289.84381966891,1853.61059974612,2672.65816935192,2494.5466135947,2084.40682162922,1764.3109350136,1764.89770222065,1040.21490634107,1,1,1,1,1,1,1,1,3317.55449984353,2868.69655516777,2603.34828448064,2465.66805855983,2278.84426182194,2656.51132563573,2977.36054270501,2108.28402264726,2708.70142321711,2521.8515953415,1876.58163073683,2249.62852701214,857.338434156309,1,1,1,1,1,1,1,1,1,1,3199.68401364844,2612.54045311723,2142.75719122971,1506.73311520288,1,1605.6797258623,424.526170839966,1343.08359513974,1480.98104579507,168.386245563417,806.443108782359,1069.69922078774,1382.41456721015,1255.88367974661,1638.35571671795,1,1046.48429723752,907.60315902706,1,1465.39742586178,1,1,1,1,1,1,1,1,1,1,1,2771.70685643555,3230.98314725226,2876.15161596416,2408.15437327683,1851.62985989936,1811.35320502491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3068.96968997142,3493.04117920654,3465.97666738575,2305.16130909039,1,1904.74998033631,1284.36745861941,803.174686445533,1414.63678573053,1905.07203815268,1,1407.9838692372,1169.26710794133,689.797230771921,1,1,1,2483.70923066493,2795.86723192234,1977.76033825988,2507.93504680888,2388.24241910818,2664.2549131738,2881.73000804532,1982.59451129587,2273.16918711089,2091.52548702253,2904.62819870739,1,1892.46379654202,2466.15151483938,1057.29800057668,556.786079740416,1585.22856040285,1518.88840256954,931.735543780858,1225.62215952079,1472.9990245453,1908.60717091019,1012.69514650808,1,1,1,1,1,2297.71494160183,2016.32730069537,2326.82842785067,1,1,1,1,1,1,2555.55942663117,1,1,1,1,1,1,1,278.184542319119,1,1,1010.85792224979,1,797.174571546574,1503.33016152947,1,1586.4893323368,2074.93601256949,2212.73104959636,1975.94200310636,1319.36277031474,2146.54202991446,2280.4965663466,1665.67235298683,1306.86206697884,1674.56941068886,1,1440.70132184456,1,814.897030299112,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2613.77693642201,2596.42711469234,1680.63271027822,187.436086379376,1,1,1,1,1,1,1,1,1985.51929608971,2208.63177302463,1492.5187428438,247.029497109602,918.783079823781,1,2398.53155252108,1,1,1664.36656045498,1,1866.34791115562,1244.3913895916,1,1,1,1,1,1,1,658.461025066314,1,1,1,1,1,1,1,1,1,1,839.060954165096,1,1,1,1,893.960210650317,1,1,1,1,1,1,2646.59075411411,1231.74088664426,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2146.74896293925,2750.51508994325,2640.82029795676,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2307.15498014425,2251.21530902581,2148.8909322153,2456.54467664971,1701.19012289312,2191.79115778398,1438.24052862037,1646.40139282094,2230.34081747321,162.788604910759,1306.59435107627,739.471596920491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,237.984179183187,1,1150.85631435754,1,1,1,1,1,1,1,1,1,1,1,1,66.8093129153289,1194.41562102329,1645.25348100046,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,638.05132193716,559.394271529896,1,1,1,1,1,1,1,1,1,1,10.0595746417907,1,1472.4650704242,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,227.50860599111,1,1,1,1,1,997.457773118053,1655.43849459136,1607.72036032171,1178.13576811544,985.091882661064,1121.44363460925,1,1,2314.72039587805,1,1,1143.74009261397,443.29137610002,2072.15236895612,2338.5681417156,1,1,2668.69375284079,2675.82514969268,2706.14440386167,3041.46570799594,2596.74250084113,3219.91582866025,2206.36148541572,2883.25520773871,2898.8194141392,2544.70634732149,2795.05496679069,1,1,1,1,1,1,1,1,1,1,1,2111.32541967977,1,1,1,1,1,1881.31144304388,2077.78857447858,1695.94364348168,2325.83947030247,1275.75264501851,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,588.921825647712,1,2357.18065080615,3143.45688875043,510.018656189845,3282.34555390812,2127.77695432778,2620.48245743466,2205.78365902734,1637.42689703261,1482.24670767283,1552.64602807951,2085.59351686682,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,570.06825456258,986.906244344458,1,2796.93451120401,1,1,1,2329.98547257138,1,1,1,1356.2207299754,1,1348.92750889761,688.392483136751,1,1,1,1,1,1,1,3955.37348278833,1,1,1,1,1041.45888853663,1040.54504436438,1025.72763361771,2359.09017761501,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,783.372059552694,1,1,1067.98820762141,1,1,2027.22857795664,1310.13379970141,1451.8478743242,905.651225753155,1335.79591972307,1820.19376575745,1,1821.42937624443,2206.38582415431,1727.77653292408,1363.8433442097,1797.70429133676,1881.70294586305,1595.21567483701,661.164944734768,2311.7395677331,1,1,2406.97073778299,2912.29917627157,1,1,1,1,10.0570115897717,2318.56946064777,2535.2651290161,1,1103.36586197679,1,616.709611487331,1348.92387372355,1,1,1,1610.95079276469,2714.8089917535,2607.01793125565,1,1,2074.73428334792,1662.19446136543,1813.09560593174,1419.17764212037,2482.21936084429,2863.35931302292,3131.6824216336,2561.15374914169,2865.15617238101,2871.97201200208,2379.77555614122,2781.86468733882,2913.75914599433,3423.4838420001,2590.54478101183,3266.36147365228,2724.06720283899,3209.60519900973,3163.34612459408,2224.25328824133,3602.50202441216,2855.43438875187,2780.09358377529,3122.2958991856,3420.64051866986,3252.04856707939,3521.3505989773,3777.89061091972,3652.88138918162,3696.3219641642,3482.4909041388,3784.66259992582,3864.67136480335,3695.76917341831,3849.47144887037,3636.99613629043,3601.2893784427,1,2012.5454744427,1975.01561474803,3772.33076897386,3256.03996075629,3159.29818042182,2057.52319519165,1592.18437149903,1681.21150687196,2160.7464075739,399.624702321011,1985.11210632356,2334.61075253758,1539.68149683555,1758.53145259361,1122.15047671953,1,1560.4468204151,920.630287459382,1,1,1,1,1,1,1,1,3743.84724845401,3877.39699379499,3560.48356836954,3265.53487545827,3410.33855248543,2988.65254475738,2855.75769975723,2939.41812380357,2400.49851637804,3044.87089572695,3256.84638871102,2597.18083705626,3539.4485607668,3006.0420690001,3140.28492884507,3385.45905195035,2786.69744000151,2379.53469951404,1231.72962599972,1,1,1,1,1,3247.34373090998,3522.08737693768,2637.38517679368,2093.61396617965,3550.72566248953,3324.99036073782,2749.21766317757,2322.17050293481,1361.10525646798,1,1,1,223.970546983416,1,1,1,1,1,1,3571.39194441892,3655.70464317967,3592.66116544087,3346.50829530334,3072.05969147975,2862.21499379534,3272.83984114439,3119.82729648586,3388.73460545261,2968.16799207813,2798.48348890438,3087.52067689234,3114.21744245754,3203.52647274868,3430.69406294208,3248.30930763151,3288.42723989272,2757.22576732951,3520.66025791298,3130.93025870386,3373.31932190834,3712.66501179399,2822.52935599692,3015.47564207839,3084.69254099905,2070.78006532194,2910.70395409012,1929.5380529837,2289.84381966891,1853.61059974612,2672.65816935192,2494.5466135947,2084.40682162922,1764.3109350136,1764.89770222065,1040.21490634107,1,1,1,1,1,1,1,1,3317.55449984353,2868.69655516778,2603.34828448064,2465.66805855983,2278.84426182194,2656.51132563573,2977.36054270501,2108.28402264726,2708.70142321711,2521.8515953415,1876.58163073683,2249.62852701214,857.33843415631,1,1,1,1,1,1,1,1,1,1,3199.68401364844,2612.54045311723,2142.75719122971,1506.73311520288,1,1605.6797258623,424.526170839966,1343.08359513974,1480.98104579507,168.386245563417,806.443108782359,1069.69922078774,1382.41456721015,1255.88367974661,1638.35571671795,1,1046.48429723752,907.60315902706,1,1465.39742586178,1,1,1,1,1,1,1,1,1,1,1,2771.70685643555,3230.98314725226,2876.15161596416,2408.15437327683,1851.62985989936,1811.35320502491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3068.96968997142,3493.04117920654,3465.97666738575,2305.16130909039,1,1904.74998033631,1284.36745861941,803.174686445534,1414.63678573053,1905.07203815268,1,1407.9838692372,1169.26710794133,689.797230771921,1,1,1,2483.70923066493,2795.86723192234,1977.76033825988,2507.93504680888,2388.24241910818,2664.2549131738,2881.73000804532,1982.59451129587,2273.16918711089,2091.52548702253,2904.62819870738,1,1892.46379654202,2466.15151483938,1057.29800057669,556.786079740416,1585.22856040285,1518.88840256954,931.735543780858,1225.62215952079,1472.9990245453,1908.60717091019,1012.69514650808,1,1,1,1,1,2297.71494160183,2016.32730069537,2326.82842785067,1,1,1,1,1,1,2555.55942663117,1,1,1,1,1,1,1,278.184542319119,1,1,1010.85792224979,1,797.174571546574,1503.33016152947,1,1586.4893323368,2074.93601256949,2212.73104959635,1975.94200310636,1319.36277031474,2146.54202991446,2280.4965663466,1665.67235298683,1306.86206697884,1674.56941068886,1,1440.70132184456,1,814.897030299111,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2613.77693642201,2596.42711469234,1680.63271027822,187.436086379376,1,1,1,1,1,1,1,1,1985.51929608971,2208.63177302463,1492.5187428438,247.029497109602,918.783079823781,1,2398.53155252108,1,1,1664.36656045498,1,1866.34791115562,1244.3913895916,1,1,1,1,1,1,1,658.461025066314,1,1,1,1,1,1,1,1,1,1,839.060954165096,1,1,1,1,893.960210650317,1,1,1,1,1,1,2646.59075411411,1231.74088664426,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2146.74896293925,2750.51508994325,2640.82029795677,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2307.15498014425,2251.21530902581,2148.8909322153,2456.54467664971,1701.19012289312,2191.79115778398,1438.24052862037,1646.40139282094,2230.34081747321,162.788604910759,1306.59435107627,739.471596920492,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,237.984179183187,1,1150.85631435754,1,1,1,1,1,1,1,1,1,1,1,1,66.8093129153289,1194.41562102329,1645.25348100046,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,638.05132193716,559.394271529897,1,1,1,1,1,1,1,1,1,1,10.0595746417907,1,1472.4650704242,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,227.50860599111,1,1,1,1,1,997.457773118053,1655.43849459136,1607.72036032171,1178.13576811544,985.091882661064,1121.44363460925,1,1,2314.72039587805,1,1,1143.74009261396,443.29137610002,2072.15236895612,2338.5681417156,1,1,2668.69375284079,2675.82514969268,2706.14440386167,3041.46570799594,2596.74250084113,3219.91582866025,2206.36148541572,2883.25520773871,2898.8194141392,2544.70634732149,2795.05496679069,1,1,1,1,1,1,1,1,1,1,1,2111.32541967977,1,1,1,1,1,1881.31144304388,2077.78857447858,1695.94364348168,2325.83947030247,1275.75264501851,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,588.921825647713,1,2357.18065080616,3143.45688875043,510.018656189845,3282.34555390812,2127.77695432778,2620.48245743466,2205.78365902734,1637.42689703261,1482.24670767283,1552.64602807951,2085.59351686682,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,570.06825456258,986.906244344458,1,2796.93451120401,1,1,1,2329.98547257138,1,1,1,1356.2207299754,1,1348.92750889761,688.392483136751,1,1,1,1,1,1,1,3955.37348278833,1,1,1,1,1041.45888853663,1040.54504436438,1025.72763361771,2359.09017761501,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,783.372059552694,1,1,1067.98820762141,1,1,2027.22857795664,1310.13379970141,1451.8478743242,905.651225753155,1335.79591972307,1820.19376575745,1,1821.42937624443,2206.38582415431,1727.77653292408,1363.8433442097,1797.70429133676,1881.70294586305,1595.21567483701,661.164944734768,2311.7395677331,1,1,2406.97073778299,2912.29917627157,1,1,1,1,10.0570115897717,2318.56946064777,2535.2651290161,1,1103.36586197679,1,616.709611487331,1348.92387372355,1,1,1,1610.95079276469,2714.8089917535,2607.01793125565,1,1,2074.73428334792,1662.19446136543,1813.09560593174,1419.17764212037,2482.21936084429,2863.35931302292,3131.6824216336,2561.15374914169,2865.15617238101,2871.97201200208,2379.77555614122,2781.86468733882,2913.75914599433,3423.4838420001,2590.54478101183,3266.36147365228,2724.06720283899,3209.60519900973,3163.34612459408,2224.25328824133,3602.50202441216,2855.43438875187,2780.09358377529,3122.2958991856,3420.64051866986,3252.04856707939,3521.3505989773,3777.89061091972,3652.88138918162,3696.3219641642,3482.4909041388,3784.66259992582,3864.67136480335,3695.76917341831,3849.47144887037,3636.99613629043,3601.2893784427,1,2012.5454744427,1975.01561474803,3772.33076897386,3256.03996075629,3159.29818042182,2057.52319519165,1592.18437149903,1681.21150687196,2160.7464075739,399.624702321011,1985.11210632356,2334.61075253758,1539.68149683555,1758.53145259361,1122.15047671953,1,1560.4468204151,920.630287459382,1,1,1,1,1,1,1,1,3743.84724845401,3877.39699379499,3560.48356836954,3265.53487545827,3410.33855248543,2988.65254475738,2855.75769975723,2939.41812380357,2400.49851637804,3044.87089572695,3256.84638871102,2597.18083705626,3539.4485607668,3006.0420690001,3140.28492884507,3385.45905195035,2786.69744000151,2379.53469951404,1231.72962599972,1,1,1,1,1,3247.34373090998,3522.08737693768,2637.38517679368,2093.61396617965,3550.72566248953,3324.99036073782,2749.21766317757,2322.17050293481,1361.10525646798,1,1,1,223.970546983416,1,1,1,1,1,1,3571.39194441892,3655.70464317967,3592.66116544087,3346.50829530334,3072.05969147975,2862.21499379534,3272.83984114439,3119.82729648586,3388.73460545261,2968.16799207813,2798.48348890438,3087.52067689234,3114.21744245754,3203.52647274868,3430.69406294208,3248.30930763151,3288.42723989272,2757.22576732951,3520.66025791298,3130.93025870386,3373.31932190834,3712.66501179399,2822.52935599692,3015.47564207839,3084.69254099905,2070.78006532194,2910.70395409012,1929.5380529837,2289.84381966891,1853.61059974612,2672.65816935192,2494.5466135947,2084.40682162922,1764.3109350136,1764.89770222065,1040.21490634107,1,1,1,1,1,1,1,1,3317.55449984353,2868.69655516778,2603.34828448064,2465.66805855983,2278.84426182194,2656.51132563573,2977.36054270501,2108.28402264726,2708.70142321711,2521.8515953415,1876.58163073683,2249.62852701214,857.33843415631,1,1,1,1,1,1,1,1,1,1,3199.68401364844,2612.54045311723,2142.75719122971,1506.73311520288,1,1605.6797258623,424.526170839966,1343.08359513974,1480.98104579507,168.386245563417,806.443108782359,1069.69922078774,1382.41456721015,1255.88367974661,1638.35571671795,1,1046.48429723752,907.60315902706,1,1465.39742586178,1,1,1,1,1,1,1,1,1,1,1,2771.70685643555,3230.98314725226,2876.15161596416,2408.15437327683,1851.62985989936,1811.35320502491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3068.96968997142,3493.04117920654,3465.97666738575,2305.16130909039,1,1904.74998033631,1284.36745861941,803.174686445534,1414.63678573053,1905.07203815268,1,1407.9838692372,1169.26710794133,689.797230771921,1,1,1,2483.70923066493,2795.86723192234,1977.76033825988,2507.93504680888,2388.24241910818,2664.2549131738,2881.73000804532,1982.59451129587,2273.16918711089,2091.52548702253,2904.62819870738,1,1892.46379654202,2466.15151483938,1057.29800057669,556.786079740416,1585.22856040285,1518.88840256954,931.735543780858,1225.62215952079,1472.9990245453,1908.60717091019,1012.69514650808,1,1,1,1,1,2297.71494160183,2016.32730069537,2326.82842785067,1,1,1,1,1,1,2555.55942663117,1,1,1,1,1,1,1,278.184542319119,1,1,1010.85792224979,1,797.174571546574,1503.33016152947,1,1586.4893323368,2074.93601256949,2212.73104959635,1975.94200310636,1319.36277031474,2146.54202991446,2280.4965663466,1665.67235298683,1306.86206697884,1674.56941068886,1,1440.70132184456,1,814.897030299111,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2613.77693642201,2596.42711469234,1680.63271027822,187.436086379376,1,1,1,1,1,1,1,1,1985.51929608971,2208.63177302463,1492.5187428438,247.029497109602,918.783079823781,1,2398.53155252108,1,1,1664.36656045498,1,1866.34791115562,1244.3913895916,1,1,1,1,1,1,1,658.461025066314,1,1,1,1,1,1,1,1,1,1,839.060954165096,1,1,1,1,893.960210650317,1,1,1,1,1,1,2646.59075411411,1231.74088664426,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2146.74896293925,2750.51508994325,2640.82029795677,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2307.15498014425,2251.21530902581,2148.8909322153,2456.54467664971,1701.19012289312,2191.79115778398,1438.24052862037,1646.40139282094,2230.34081747321,162.788604910759,1306.59435107627,739.471596920492,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,237.984179183187,1,1150.85631435754,1,1,1,1,1,1,1,1,1,1,1,1,66.8093129153289,1194.41562102329,1645.25348100046,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,638.05132193716,559.394271529897,1,1,1,1,1,1,1,1,1,1,10.0595746417907,1,1472.4650704242,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,227.50860599111,1,1,1,1,1,997.457773118053,1655.43849459136,1607.72036032171,1178.13576811544,985.091882661064,1121.44363460925,1,1,2314.72039587805,1,1,1143.74009261396,443.29137610002,2072.15236895612,2338.5681417156,1,1,2668.69375284079,2675.82514969268,2706.14440386167,3041.46570799594,2596.74250084113,3219.91582866025,2206.36148541572,2883.25520773871,2898.8194141392,2544.70634732149,2795.05496679069,1,1,1,1,1,1,1,1,1,1,1,2111.32541967977,1,1,1,1,1,1881.31144304388,2077.78857447858,1695.94364348168,2325.83947030247,1275.75264501851,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,588.921825647713,1,2357.18065080616,3143.45688875043,510.018656189845,3282.34555390812,2127.77695432778,2620.48245743466,2205.78365902734,1637.42689703261,1482.24670767283,1552.64602807951,2085.59351686682,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,570.06825456258,986.906244344458,1,2796.93451120401,1,1,1,2329.98547257138,1,1,1,1356.2207299754,1,1348.92750889761,688.392483136751,1,1,1,1,1,1,1,3955.37348278833,1,1,1,1,1041.45888853663,1040.54504436438,1025.72763361771,2359.09017761501,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,783.372059552694,1,1,1067.98820762141,1,1,2027.22857795664,1310.13379970141,1451.8478743242,905.651225753155,1335.79591972307,1820.19376575745,1,1821.42937624443,2206.38582415431,1727.77653292408,1363.8433442097,1797.70429133676,1881.70294586305,1595.21567483701,661.164944734768,2311.7395677331,1,1,2406.97073778299,2912.29917627157,1,1,1,1,10.0570115897717,2318.56946064777,2535.2651290161,1,1103.36586197679,1,616.709611487331,1348.92387372355,1,1,1,1610.95079276469,2714.8089917535,2607.01793125565,1,1,2074.73428334792,1662.19446136543,1813.09560593174,1419.17764212037,2482.21936084429,2863.35931302292,3131.6824216336,2561.15374914169,2865.15617238101,2871.97201200208,2379.77555614122,2781.86468733882,2913.75914599433,3423.4838420001,2590.54478101183,3266.36147365228,2724.06720283899,3209.60519900973,3163.34612459408,2224.25328824133,3602.50202441216,2855.43438875187,2780.09358377529,3122.2958991856,3420.64051866986,3252.04856707939,3521.3505989773,3777.89061091972,3652.88138918162,3696.3219641642,3482.4909041388,3784.66259992582,3864.67136480335,3695.76917341831,3849.47144887037,3636.99613629043,3601.2893784427,1,2012.5454744427,1975.01561474803,3772.33076897386,3256.03996075629,3159.29818042182,2057.52319519165,1592.18437149903,1681.21150687196,2160.7464075739,399.624702321011,1985.11210632356,2334.61075253758,1539.68149683555,1758.53145259361,1122.15047671953,1,1560.4468204151,920.630287459382,1,1,1,1,1,1,1,1,3743.84724845401,3877.39699379499,3560.48356836954,3265.53487545827,3410.33855248543,2988.65254475738,2855.75769975723,2939.41812380357,2400.49851637804,3044.87089572695,3256.84638871102,2597.18083705626,3539.4485607668,3006.0420690001,3140.28492884507,3385.45905195035,2786.69744000151,2379.53469951404,1231.72962599972,1,1,1,1,1,3247.34373090998,3522.08737693768,2637.38517679368,2093.61396617965,3550.72566248953,3324.99036073782,2749.21766317757,2322.17050293481,1361.10525646798,1,1,1,223.970546983416,1,1,1,1,1,1,3571.39194441892,3655.70464317967,3592.66116544087,3346.50829530334,3072.05969147975,2862.21499379534,3272.83984114439,3119.82729648586,3388.73460545261,2968.16799207813,2798.48348890438,3087.52067689234,3114.21744245754,3203.52647274868,3430.69406294208,3248.30930763151,3288.42723989272,2757.22576732951,3520.66025791298,3130.93025870386,3373.31932190834,3712.66501179399,2822.52935599692,3015.47564207839,3084.69254099905,2070.78006532194,2910.70395409012,1929.5380529837,2289.84381966891,1853.61059974612,2672.65816935192,2494.5466135947,2084.40682162922,1764.3109350136,1764.89770222065,1040.21490634107,1,1,1,1,1,1,1,1,3317.55449984353,2868.69655516778,2603.34828448064,2465.66805855983,2278.84426182194,2656.51132563573,2977.36054270501,2108.28402264726,2708.70142321711,2521.8515953415,1876.58163073683,2249.62852701214,857.33843415631,1,1,1,1,1,1,1,1,1,1,3199.68401364844,2612.54045311723,2142.75719122971,1506.73311520288,1,1605.6797258623,424.526170839966,1343.08359513974,1480.98104579507,168.386245563417,806.443108782359,1069.69922078774,1382.41456721015,1255.88367974661,1638.35571671795,1,1046.48429723752,907.60315902706,1,1465.39742586178,1,1,1,1,1,1,1,1,1,1,1,2771.70685643555,3230.98314725226,2876.15161596416,2408.15437327683,1851.62985989936,1811.35320502491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3068.96968997142,3493.04117920654,3465.97666738575,2305.16130909039,1,1904.74998033631,1284.36745861941,803.174686445534,1414.63678573053,1905.07203815268,1,1407.9838692372,1169.26710794133,689.797230771921,1,1,1,2483.70923066493,2795.86723192234,1977.76033825988,2507.93504680888,2388.24241910818,2664.2549131738,2881.73000804532,1982.59451129587,2273.16918711089,2091.52548702253,2904.62819870738,1,1892.46379654202,2466.15151483938,1057.29800057669,556.786079740416,1585.22856040285,1518.88840256954,931.735543780858,1225.62215952079,1472.9990245453,1908.60717091019,1012.69514650808,1,1,1,1,1,2297.71494160183,2016.32730069537,2326.82842785067,1,1,1,1,1,1,2555.55942663117,1,1,1,1,1,1,1,278.184542319119,1,1,1010.85792224979,1,797.174571546574,1503.33016152947,1,1586.4893323368,2074.93601256949,2212.73104959635,1975.94200310636,1319.36277031474,2146.54202991446,2280.4965663466,1665.67235298683,1306.86206697884,1674.56941068886,1,1440.70132184456,1,814.897030299111,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2613.77693642201,2596.42711469234,1680.63271027822,187.436086379376,1,1,1,1,1,1,1,1,1985.51929608971,2208.63177302463,1492.5187428438,247.029497109602,918.783079823781,1,2398.53155252108,1,1,1664.36656045498,1,1866.34791115562,1244.3913895916,1,1,1,1,1,1,1,658.461025066314,1,1,1,1,1,1,1,1,1,1,839.060954165096,1,1,1,1,893.960210650317,1,1,1,1,1,1,2646.59075411411,1231.74088664426,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2146.74896293925,2750.51508994325,2640.82029795677,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2307.15498014425,2251.21530902581,2148.8909322153,2456.54467664971,1701.19012289312,2191.79115778398,1438.24052862037,1646.40139282094,2230.34081747321,162.788604910759,1306.59435107627,739.471596920492,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,237.984179183187,1,1150.85631435754,1,1,1,1,1,1,1,1,1,1,1,1,66.8093129153289,1194.41562102329,1645.25348100046,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,638.05132193716,559.394271529897,1,1,1,1,1,1,1,1,1,1,10.0595746417907,1,1472.4650704242,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,227.50860599111,1,1,1,1,1,997.457773118053,1655.43849459136,1607.72036032171,1178.13576811544,985.091882661064,1121.44363460925,1,1,2314.72039587805,1,1,1143.74009261396,443.29137610002,2072.15236895612,2338.5681417156,1,1,2668.69375284079,2675.82514969268,2706.14440386167,3041.46570799594,2596.74250084113,3219.91582866025,2206.36148541572,2883.25520773871,2898.8194141392,2544.70634732149,2795.05496679069,1,1,1,1,1,1,1,1,1,1,1,2111.32541967977,1,1,1,1,1,1881.31144304388,2077.78857447858,1695.94364348168,2325.83947030247,1275.75264501851,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,588.921825647713,1,2357.18065080616,3143.45688875043,510.018656189845,3282.34555390812,2127.77695432778,2620.48245743466,2205.78365902734,1637.42689703261,1482.24670767283,1552.64602807951,2085.59351686682,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,570.06825456258,986.906244344458,1,2796.93451120401,1,1,1,2329.98547257138,1,1,1,1356.2207299754,1,1348.92750889761,688.392483136751,1,1,1,1,1,1,1,3955.37348278833,1,1,1,1,1041.45888853663,1040.54504436438,1025.72763361771,2359.09017761501,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,783.372059552694,1,1,1067.98820762141,1,1,2027.22857795664,1310.13379970141,1451.8478743242,905.651225753155,1335.79591972307,1820.19376575745,1,1821.42937624443,2206.38582415431,1727.77653292408,1363.8433442097,1797.70429133676,1881.70294586305,1595.21567483701,661.164944734768,2311.7395677331,1,1,2406.97073778299,2912.29917627157,1,1,1,1,10.0570115897717,2318.56946064777,2535.2651290161,1,1103.36586197679,1,616.709611487331,1348.92387372355,1,1,1,1610.95079276469,2714.8089917535,2607.01793125565,1,1,2074.73428334792,1662.19446136543,1813.09560593174,1419.17764212037,2482.21936084429,2863.35931302292,3131.6824216336,2561.15374914169,2865.15617238101,2871.97201200208,2379.77555614122,2781.86468733882,2913.75914599433,3423.4838420001,2590.54478101183,3266.36147365228,2724.06720283899,3209.60519900973,3163.34612459408,2224.25328824133,3602.50202441216,2855.43438875187,2780.09358377529,3122.2958991856,3420.64051866986,3252.04856707939,3521.3505989773,3777.89061091972,3652.88138918162,3696.3219641642,3482.4909041388,3784.66259992582,3864.67136480335,3695.76917341831,3849.47144887037,3636.99613629043,3601.2893784427,1,2012.5454744427,1975.01561474803,3772.33076897386,3256.03996075629,3159.29818042182,2057.52319519165,1592.18437149903,1681.21150687196,2160.7464075739,399.624702321011,1985.11210632356,2334.61075253758,1539.68149683555,1758.53145259361,1122.15047671953,1,1560.4468204151,920.630287459382,1,1,1,1,1,1,1,1,3743.84724845401,3877.39699379499,3560.48356836954,3265.53487545827,3410.33855248543,2988.65254475738,2855.75769975723,2939.41812380357,2400.49851637804,3044.87089572695,3256.84638871102,2597.18083705626,3539.4485607668,3006.0420690001,3140.28492884507,3385.45905195035,2786.69744000151,2379.53469951404,1231.72962599972,1,1,1,1,1,3247.34373090998,3522.08737693768,2637.38517679368,2093.61396617965,3550.72566248953,3324.99036073782,2749.21766317757,2322.17050293481,1361.10525646798,1,1,1,223.970546983416,1,1,1,1,1,1,3571.39194441892,3655.70464317967,3592.66116544087,3346.50829530334,3072.05969147975,2862.21499379534,3272.83984114439,3119.82729648586,3388.73460545261,2968.16799207813,2798.48348890438,3087.52067689234,3114.21744245754,3203.52647274868,3430.69406294208,3248.30930763151,3288.42723989272,2757.22576732951,3520.66025791298,3130.93025870386,3373.31932190834,3712.66501179399,2822.52935599692,3015.47564207839,3084.69254099905,2070.78006532194,2910.70395409012,1929.5380529837,2289.84381966891,1853.61059974612,2672.65816935192,2494.5466135947,2084.40682162922,1764.3109350136,1764.89770222065,1040.21490634107,1,1,1,1,1,1,1,1,3317.55449984353,2868.69655516778,2603.34828448064,2465.66805855983,2278.84426182194,2656.51132563573,2977.36054270501,2108.28402264726,2708.70142321711,2521.8515953415,1876.58163073683,2249.62852701214,857.33843415631,1,1,1,1,1,1,1,1,1,1,3199.68401364844,2612.54045311723,2142.75719122971,1506.73311520288,1,1605.6797258623,424.526170839966,1343.08359513974,1480.98104579507,168.386245563417,806.443108782359,1069.69922078774,1382.41456721015,1255.88367974661,1638.35571671795,1,1046.48429723752,907.60315902706,1,1465.39742586178,1,1,1,1,1,1,1,1,1,1,1,2771.70685643555,3230.98314725226,2876.15161596416,2408.15437327683,1851.62985989936,1811.35320502491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3068.96968997142,3493.04117920654,3465.97666738575,2305.16130909039,1,1904.74998033631,1284.36745861941,803.174686445534,1414.63678573053,1905.07203815268,1,1407.9838692372,1169.26710794133,689.797230771921,1,1,1,2483.70923066493,2795.86723192234,1977.76033825988,2507.93504680888,2388.24241910818,2664.2549131738,2881.73000804532,1982.59451129587,2273.16918711089,2091.52548702253,2904.62819870738,1,1892.46379654202,2466.15151483938,1057.29800057669,556.786079740416,1585.22856040285,1518.88840256954,931.735543780858,1225.62215952079,1472.9990245453,1908.60717091019,1012.69514650808,1,1,1,1,1,2297.71494160183,2016.32730069537,2326.82842785067,1,1,1,1,1,1,2555.55942663117,1,1,1,1,1,1,1,278.184542319119,1,1,1010.85792224979,1,797.174571546574,1503.33016152947,1,1586.4893323368,2074.93601256949,2212.73104959635,1975.94200310636,1319.36277031474,2146.54202991446,2280.4965663466,1665.67235298683,1306.86206697884,1674.56941068886,1,1440.70132184456,1,814.897030299111,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2613.77693642201,2596.42711469234,1680.63271027822,187.436086379376,1,1,1,1,1,1,1,1,1985.51929608971,2208.63177302463,1492.5187428438,247.029497109602,918.783079823781,1,2398.53155252108,1,1,1664.36656045498,1,1866.34791115562,1244.3913895916,1,1,1,1,1,1,1,658.461025066314,1,1,1,1,1,1,1,1,1,1,839.060954165096,1,1,1,1,893.960210650317,1,1,1,1,1,1,2646.59075411411,1231.74088664426,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2146.74896293925,2750.51508994325,2640.82029795677,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2307.15498014425,2251.21530902581,2148.8909322153,2456.54467664971,1701.19012289312,2191.79115778398,1438.24052862037,1646.40139282094,2230.34081747321,162.788604910759,1306.59435107627,739.471596920492,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,237.984179183187,1,1150.85631435754,1,1,1,1,1,1,1,1,1,1,1,1,66.8093129153289,1194.41562102329,1645.25348100046,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,638.05132193716,559.394271529897,1,1,1,1,1,1,1,1,1,1,10.0595746417907,1,1472.4650704242,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,227.50860599111,1,1,1,1,1,997.457773118053,1655.43849459136,1607.72036032171,1178.13576811544,985.091882661064,1121.44363460925,1,1,2314.72039587805,1,1,1143.74009261396,443.29137610002,2072.15236895612,2338.5681417156,1,1,2668.69375284079,2675.82514969268,2706.14440386167,3041.46570799594,2596.74250084113,3219.91582866025,2206.36148541572,2883.25520773871,2898.8194141392,2544.70634732149,2795.05496679069,1,1,1,1,1,1,1,1,1,1,1,2111.32541967977,1,1,1,1,1,1881.31144304388,2077.78857447858,1695.94364348168,2325.83947030247,1275.75264501851,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,588.921825647713,1,2357.18065080616,3143.45688875043,510.018656189845,3282.34555390812,2127.77695432778,2620.48245743466,2205.78365902734,1637.42689703261,1482.24670767283,1552.64602807951,2085.59351686682,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,570.06825456258,986.906244344458,1,2796.93451120401,1,1,1,2329.98547257138,1,1,1,1356.2207299754,1,1348.92750889761,688.392483136751,1,1,1,1,1,1,1,3955.37348278833,1,1,1,1,1041.45888853663,1040.54504436438,1025.72763361771,2359.09017761501,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,783.372059552694,1,1,1067.98820762141,1,1,2027.22857795664,1310.13379970141,1451.8478743242,905.651225753155,1335.79591972307,1820.19376575745,1,1821.42937624443,2206.38582415431,1727.77653292408,1363.8433442097,1797.70429133676,1881.70294586305,1595.21567483701,661.164944734768,2311.7395677331,1,1,2406.97073778299,2912.29917627157,1,1,1,1,10.0570115897717,2318.56946064777,2535.2651290161,1,1103.36586197679,1,616.709611487331,1348.92387372355,1,1,1,1610.95079276469,2714.8089917535,2607.01793125565,1,1,2074.73428334792,1662.19446136543,1813.09560593174,1419.17764212037,2482.21936084429,2863.35931302292,3131.6824216336,2561.15374914169,2865.15617238101,2871.97201200208,2379.77555614122,2781.86468733882,2913.75914599433,3423.4838420001,2590.54478101183,3266.36147365228,2724.06720283899,3209.60519900973,3163.34612459408,2224.25328824133,3602.50202441216,2855.43438875187,2780.09358377529,3122.2958991856,3420.64051866986,3252.04856707939,3521.3505989773,3777.89061091972,3652.88138918162,3696.3219641642,3482.4909041388,3784.66259992582,3864.67136480335,3695.76917341831,3849.47144887037,3636.99613629043,3601.2893784427,1,2012.5454744427,1975.01561474803,3772.33076897386,3256.03996075629,3159.29818042182,2057.52319519165,1592.18437149903,1681.21150687196,2160.7464075739,399.624702321011,1985.11210632356,2334.61075253758,1539.68149683555,1758.53145259361,1122.15047671953,1,1560.4468204151,920.630287459382,1,1,1,1,1,1,1,1,3743.84724845401,3877.39699379499,3560.48356836954,3265.53487545827,3410.33855248543,2988.65254475738,2855.75769975723,2939.41812380357,2400.49851637804,3044.87089572695,3256.84638871102,2597.18083705626,3539.4485607668,3006.0420690001,3140.28492884507,3385.45905195035,2786.69744000151,2379.53469951404,1231.72962599972,1,1,1,1,1,3247.34373090998,3522.08737693768,2637.38517679368,2093.61396617965,3550.72566248953,3324.99036073782,2749.21766317757,2322.17050293481,1361.10525646798,1,1,1,223.970546983416,1,1,1,1,1,1,3571.39194441892,3655.70464317967,3592.66116544087,3346.50829530334,3072.05969147975,2862.21499379534,3272.83984114439,3119.82729648586,3388.73460545261,2968.16799207813,2798.48348890438,3087.52067689234,3114.21744245754,3203.52647274868,3430.69406294208,3248.30930763151,3288.42723989272,2757.22576732951,3520.66025791298,3130.93025870386,3373.31932190834,3712.66501179399,2822.52935599692,3015.47564207839,3084.69254099905,2070.78006532194,2910.70395409012,1929.5380529837,2289.84381966891,1853.61059974612,2672.65816935192,2494.5466135947,2084.40682162922,1764.3109350136,1764.89770222065,1040.21490634107,1,1,1,1,1,1,1,1,3317.55449984353,2868.69655516778,2603.34828448064,2465.66805855983,2278.84426182194,2656.51132563573,2977.36054270501,2108.28402264726,2708.70142321711,2521.8515953415,1876.58163073683,2249.62852701214,857.33843415631,1,1,1,1,1,1,1,1,1,1,3199.68401364844,2612.54045311723,2142.75719122971,1506.73311520288,1,1605.6797258623,424.526170839966,1343.08359513974,1480.98104579507,168.386245563417,806.443108782359,1069.69922078774,1382.41456721015,1255.88367974661,1638.35571671795,1,1046.48429723752,907.60315902706,1,1465.39742586178,1,1,1,1,1,1,1,1,1,1,1,2771.70685643555,3230.98314725226,2876.15161596416,2408.15437327683,1851.62985989936,1811.35320502491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3068.96968997142,3493.04117920654,3465.97666738575,2305.16130909039,1,1904.74998033631,1284.36745861941,803.174686445534,1414.63678573053,1905.07203815268,1,1407.9838692372,1169.26710794133,689.797230771921,1,1,1,2483.70923066493,2795.86723192234,1977.76033825988,2507.93504680888,2388.24241910818,2664.2549131738,2881.73000804532,1982.59451129587,2273.16918711089,2091.52548702253,2904.62819870738,1,1892.46379654202,2466.15151483938,1057.29800057669,556.786079740416,1585.22856040285,1518.88840256954,931.735543780858,1225.62215952079,1472.9990245453,1908.60717091019,1012.69514650808,1,1,1,1,1,2297.71494160183,2016.32730069537,2326.82842785067,1,1,1,1,1,1,2555.55942663117,1,1,1,1,1,1,1,278.184542319119,1,1,1010.85792224979,1,797.174571546574,1503.33016152947,1,1586.4893323368,2074.93601256949,2212.73104959635,1975.94200310636,1319.36277031474,2146.54202991446,2280.4965663466,1665.67235298683,1306.86206697884,1674.56941068886,1,1440.70132184456,1,814.897030299111,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2613.77693642201,2596.42711469234,1680.63271027822,187.436086379376,1,1,1,1,1,1,1,1,1985.51929608971,2208.63177302463,1492.5187428438,247.029497109602,918.783079823781,1,2398.53155252108,1,1,1664.36656045498,1,1866.34791115562,1244.3913895916,1,1,1,1,1,1,1,658.461025066314,1,1,1,1,1,1,1,1,1,1,839.060954165096,1,1,1,1,893.960210650317,1,1,1,1,1,1,2646.59075411411,1231.74088664426,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2146.74896293925,2750.51508994325,2640.82029795677,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2307.15498014425,2251.21530902581,2148.8909322153,2456.54467664971,1701.19012289312,2191.79115778398,1438.24052862037,1646.40139282094,2230.34081747321,162.788604910759,1306.59435107627,739.471596920492,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,237.984179183187,1,1150.85631435754,1,1,1,1,1,1,1,1,1,1,1,1,66.8093129153289,1194.41562102329,1645.25348100046,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,638.05132193716,559.394271529897,1,1,1,1,1,1,1,1,1,1,10.0595746417907,1,1472.4650704242,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,227.50860599111,1,1,1,1,1,997.457773118053,1655.43849459136,1607.72036032171,1178.13576811544,985.091882661064,1121.44363460925,1,1,2314.72039587805,1,1,1143.74009261396,443.29137610002,2072.15236895612,2338.5681417156,1,1,2668.69375284079,2675.82514969268,2706.14440386167,3041.46570799594,2596.74250084113,3219.91582866025,2206.36148541572,2883.25520773871,2898.8194141392,2544.70634732149,2795.05496679069,1,1,1,1,1,1,1,1,1,1,1,2111.32541967977,1,1,1,1,1,1881.31144304388,2077.78857447858,1695.94364348168,2325.83947030247,1275.75264501851,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,588.921825647713,1,2357.18065080616,3143.45688875043,510.018656189845,3282.34555390812,2127.77695432778,2620.48245743466,2205.78365902734,1637.42689703261,1482.24670767283,1552.64602807951,2085.59351686682,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,570.06825456258,986.906244344458,1,2796.93451120401,1,1,1,2329.98547257138,1,1,1,1356.2207299754,1,1348.92750889761,688.392483136751,1,1,1,1,1,1,1,3955.37348278833,1,1,1,1,1041.45888853663,1040.54504436438,1025.72763361771,2359.09017761501,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,783.372059552694,1,1,1067.98820762141,1,1,2027.22857795664,1310.13379970141,1451.8478743242,905.651225753155,1335.79591972307,1820.19376575745,1,1821.42937624443,2206.38582415431,1727.77653292408,1363.8433442097,1797.70429133676,1881.70294586305,1595.21567483701,661.164944734768,2311.7395677331,1,1,2406.97073778299,2912.29917627157,1,1,1,1,10.0570115897717,2318.56946064777,2535.2651290161,1,1103.36586197679,1,616.709611487331,1348.92387372355,1,1,1,1610.95079276469,2714.8089917535,2607.01793125565,1,1,2074.73428334792,1662.19446136543,1813.09560593174,1419.17764212037,2482.21936084429,2863.35931302292,3131.6824216336,2561.15374914169,2865.15617238101,2871.97201200208,2379.77555614122,2781.86468733882,2913.75914599433,3423.4838420001,2590.54478101183,3266.36147365228,2724.06720283899,3209.60519900973,3163.34612459408,2224.25328824133,3602.50202441216,2855.43438875187,2780.09358377529,3122.2958991856,3420.64051866986,3252.04856707939,3521.3505989773,3777.89061091972,3652.88138918162,3696.3219641642,3482.4909041388,3784.66259992582,3864.67136480335,3695.76917341831,3849.47144887037,3636.99613629043,3601.2893784427,1,2012.5454744427,1975.01561474803,3772.33076897386,3256.03996075629,3159.29818042182,2057.52319519165,1592.18437149903,1681.21150687196,2160.7464075739,399.624702321011,1985.11210632356,2334.61075253758,1539.68149683555,1758.53145259361,1122.15047671953,1,1560.4468204151,920.630287459382,1,1,1,1,1,1,1,1,3743.84724845401,3877.39699379499,3560.48356836954,3265.53487545827,3410.33855248543,2988.65254475738,2855.75769975723,2939.41812380357,2400.49851637804,3044.87089572695,3256.84638871102,2597.18083705626,3539.4485607668,3006.0420690001,3140.28492884507,3385.45905195035,2786.69744000151,2379.53469951404,1231.72962599972,1,1,1,1,1,3247.34373090998,3522.08737693768,2637.38517679368,2093.61396617965,3550.72566248953,3324.99036073782,2749.21766317757,2322.17050293481,1361.10525646798,1,1,1,223.970546983416,1,1,1,1,1,1,3571.39194441892,3655.70464317967,3592.66116544087,3346.50829530334,3072.05969147975,2862.21499379534,3272.83984114439,3119.82729648586,3388.73460545261,2968.16799207813,2798.48348890438,3087.52067689234,3114.21744245754,3203.52647274868,3430.69406294208,3248.30930763151,3288.42723989272,2757.22576732951,3520.66025791298,3130.93025870386,3373.31932190834,3712.66501179399,2822.52935599692,3015.47564207839,3084.69254099905,2070.78006532194,2910.70395409012,1929.5380529837,2289.84381966891,1853.61059974612,2672.65816935192,2494.5466135947,2084.40682162922,1764.3109350136,1764.89770222065,1040.21490634107,1,1,1,1,1,1,1,1,3317.55449984353,2868.69655516778,2603.34828448064,2465.66805855983,2278.84426182194,2656.51132563573,2977.36054270501,2108.28402264726,2708.70142321711,2521.8515953415,1876.58163073683,2249.62852701214,857.33843415631,1,1,1,1,1,1,1,1,1,1,3199.68401364844,2612.54045311723,2142.75719122971,1506.73311520288,1,1605.6797258623,424.526170839966,1343.08359513974,1480.98104579507,168.386245563417,806.443108782359,1069.69922078774,1382.41456721015,1255.88367974661,1638.35571671795,1,1046.48429723752,907.60315902706,1,1465.39742586178,1,1,1,1,1,1,1,1,1,1,1,2771.70685643555,3230.98314725226,2876.15161596416,2408.15437327683,1851.62985989936,1811.35320502491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3068.96968997142,3493.04117920654,3465.97666738575,2305.16130909039,1,1904.74998033631,1284.36745861941,803.174686445534,1414.63678573053,1905.07203815268,1,1407.9838692372,1169.26710794133,689.797230771921,1,1,1,2483.70923066493,2795.86723192234,1977.76033825988,2507.93504680888,2388.24241910818,2664.2549131738,2881.73000804532,1982.59451129587,2273.16918711089,2091.52548702253,2904.62819870738,1,1892.46379654202,2466.15151483938,1057.29800057669,556.786079740416,1585.22856040285,1518.88840256954,931.735543780858,1225.62215952079,1472.9990245453,1908.60717091019,1012.69514650808,1,1,1,1,1,2297.71494160183,2016.32730069537,2326.82842785067,1,1,1,1,1,1,2555.55942663117,1,1,1,1,1,1,1,278.184542319119,1,1,1010.85792224979,1,797.174571546574,1503.33016152947,1,1586.4893323368,2074.93601256949,2212.73104959635,1975.94200310636,1319.36277031474,2146.54202991446,2280.4965663466,1665.67235298683,1306.86206697884,1674.56941068886,1,1440.70132184456,1,814.897030299111,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2613.77693642201,2596.42711469234,1680.63271027822,187.436086379376,1,1,1,1,1,1,1,1,1985.51929608971,2208.63177302463,1492.5187428438,247.029497109602,918.783079823781,1,2398.53155252108,1,1,1664.36656045498,1,1866.34791115562,1244.3913895916,1,1,1,1,1,1,1,658.461025066314,1,1,1,1,1,1,1,1,1,1,839.060954165096,1,1,1,1,893.960210650317,1,1,1,1,1,1,2646.59075411411,1231.74088664426,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2146.74896293925,2750.51508994325,2640.82029795677,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2307.15498014425,2251.21530902581,2148.8909322153,2456.54467664971,1701.19012289312,2191.79115778398,1438.24052862037,1646.40139282094,2230.34081747321,162.788604910759,1306.59435107627,739.471596920492,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,237.984179183187,1,1150.85631435754,1,1,1,1,1,1,1,1,1,1,1,1,66.8093129153289,1194.41562102329,1645.25348100046,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,638.05132193716,559.394271529897,1,1,1,1,1,1,1,1,1,1,10.0595746417907,1,1472.4650704242,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,227.50860599111,1,1,1,1,1,997.457773118053,1655.43849459136,1607.72036032171,1178.13576811544,985.091882661064,1121.44363460925,1,1,2314.72039587805,1,1,1143.74009261396,443.29137610002,2072.15236895612,2338.5681417156,1,1,2668.69375284079,2675.82514969268,2706.14440386167,3041.46570799594,2596.74250084113,3219.91582866025,2206.36148541572,2883.25520773871,2898.8194141392,2544.70634732149,2795.05496679069,1,1,1,1,1,1,1,1,1,1,1,2111.32541967977,1,1,1,1,1,1881.31144304388,2077.78857447858,1695.94364348168,2325.83947030247,1275.75264501851,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,588.921825647713,1,2357.18065080616,3143.45688875043,510.018656189845,3282.34555390812,2127.77695432778,2620.48245743466,2205.78365902734,1637.42689703261,1482.24670767283,1552.64602807951,2085.59351686682,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,570.06825456258,986.906244344458,1,2796.93451120401,1,1,1,2329.98547257138,1,1,1,1356.2207299754,1,1348.92750889761,688.392483136751,1,1,1,1,1,1,1,3955.37348278833,1,1,1,1,1041.45888853663,1040.54504436438,1025.72763361771,2359.09017761501,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,783.372059552694,1,1,1067.98820762141,1,1,2027.22857795664,1310.13379970141,1451.8478743242,905.651225753155,1335.79591972307,1820.19376575745,1,1821.42937624443,2206.38582415431,1727.77653292408,1363.8433442097,1797.70429133676,1881.70294586305,1595.21567483701,661.164944734768,2311.7395677331,1,1,2406.97073778299,2912.29917627157,1,1,1,1,10.0570115897717,2318.56946064778,2535.2651290161,1,1103.36586197679,1,616.709611487331,1348.92387372355,1,1,1,1610.95079276469,2714.8089917535,2607.01793125565,1,1,2074.73428334792,1662.19446136543,1813.09560593174,1419.17764212037,2482.21936084429,2863.35931302292,3131.6824216336,2561.15374914169,2865.15617238101,2871.97201200208,2379.77555614122,2781.86468733882,2913.75914599433,3423.4838420001,2590.54478101183,3266.36147365228,2724.06720283899,3209.60519900973,3163.34612459408,2224.25328824133,3602.50202441216,2855.43438875187,2780.09358377529,3122.2958991856,3420.64051866986,3252.04856707939,3521.3505989773,3777.89061091972,3652.88138918162,3696.3219641642,3482.4909041388,3784.66259992582,3864.67136480335,3695.76917341831,3849.47144887037,3636.99613629043,3601.2893784427,1,2012.5454744427,1975.01561474803,3772.33076897386,3256.03996075629,3159.29818042182,2057.52319519165,1592.18437149903,1681.21150687196,2160.7464075739,399.624702321011,1985.11210632356,2334.61075253758,1539.68149683555,1758.53145259361,1122.15047671953,1,1560.4468204151,920.630287459382,1,1,1,1,1,1,1,1,3743.84724845401,3877.39699379499,3560.48356836954,3265.53487545827,3410.33855248543,2988.65254475738,2855.75769975723,2939.41812380357,2400.49851637804,3044.87089572695,3256.84638871102,2597.18083705626,3539.4485607668,3006.0420690001,3140.28492884507,3385.45905195035,2786.69744000151,2379.53469951404,1231.72962599972,1,1,1,1,1,3247.34373090999,3522.08737693768,2637.38517679368,2093.61396617965,3550.72566248953,3324.99036073783,2749.21766317757,2322.17050293481,1361.10525646798,1,1,1,223.970546983416,1,1,1,1,1,1,3571.39194441892,3655.70464317967,3592.66116544087,3346.50829530334,3072.05969147975,2862.21499379534,3272.83984114439,3119.82729648586,3388.73460545261,2968.16799207813,2798.48348890438,3087.52067689234,3114.21744245754,3203.52647274868,3430.69406294209,3248.30930763151,3288.42723989272,2757.22576732951,3520.66025791298,3130.93025870386,3373.31932190834,3712.66501179399,2822.52935599692,3015.47564207839,3084.69254099905,2070.78006532194,2910.70395409013,1929.5380529837,2289.84381966891,1853.61059974612,2672.65816935192,2494.5466135947,2084.40682162922,1764.3109350136,1764.89770222065,1040.21490634107,1,1,1,1,1,1,1,1,3317.55449984353,2868.69655516777,2603.34828448064,2465.66805855983,2278.84426182194,2656.51132563573,2977.36054270501,2108.28402264726,2708.70142321711,2521.8515953415,1876.58163073683,2249.62852701214,857.338434156309,1,1,1,1,1,1,1,1,1,1,3199.68401364844,2612.54045311723,2142.75719122971,1506.73311520288,1,1605.6797258623,424.526170839966,1343.08359513974,1480.98104579507,168.386245563417,806.443108782359,1069.69922078774,1382.41456721015,1255.88367974661,1638.35571671795,1,1046.48429723752,907.60315902706,1,1465.39742586178,1,1,1,1,1,1,1,1,1,1,1,2771.70685643555,3230.98314725226,2876.15161596416,2408.15437327683,1851.62985989936,1811.35320502491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3068.96968997142,3493.04117920654,3465.97666738575,2305.16130909039,1,1904.74998033631,1284.36745861941,803.174686445533,1414.63678573053,1905.07203815268,1,1407.9838692372,1169.26710794133,689.797230771921,1,1,1,2483.70923066493,2795.86723192234,1977.76033825988,2507.93504680888,2388.24241910818,2664.2549131738,2881.73000804532,1982.59451129587,2273.16918711089,2091.52548702253,2904.62819870739,1,1892.46379654202,2466.15151483938,1057.29800057668,556.786079740416,1585.22856040285,1518.88840256954,931.735543780858,1225.62215952079,1472.9990245453,1908.60717091019,1012.69514650808,1,1,1,1,1,2297.71494160183,2016.32730069537,2326.82842785067,1,1,1,1,1,1,2555.55942663117,1,1,1,1,1,1,1,278.184542319119,1,1,1010.85792224979,1,797.174571546574,1503.33016152947,1,1586.4893323368,2074.93601256949,2212.73104959636,1975.94200310636,1319.36277031474,2146.54202991446,2280.4965663466,1665.67235298683,1306.86206697884,1674.56941068886,1,1440.70132184456,1,814.897030299112,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2613.77693642201,2596.42711469234,1680.63271027822,187.436086379376,1,1,1,1,1,1,1,1,1985.51929608971,2208.63177302463,1492.5187428438,247.029497109602,918.783079823781,1,2398.53155252108,1,1,1664.36656045498,1,1866.34791115562,1244.3913895916,1,1,1,1,1,1,1,658.461025066314,1,1,1,1,1,1,1,1,1,1,839.060954165096,1,1,1,1,893.960210650317,1,1,1,1,1,1,2646.59075411411,1231.74088664426,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2146.74896293925,2750.51508994325,2640.82029795676,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2307.15498014425,2251.21530902581,2148.8909322153,2456.54467664971,1701.19012289312,2191.79115778398,1438.24052862037,1646.40139282094,2230.34081747321,162.788604910759,1306.59435107627,739.471596920491,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,237.984179183187,1,1150.85631435754,1,1,1,1,1,1,1,1,1,1,1,1,66.8093129153289,1194.41562102329,1645.25348100046,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,638.05132193716,559.394271529896,1,1,1,1,1,1,1,1,1,1,10.0595746417907,1,1472.4650704242,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,227.50860599111,1,1,1,1,1,997.457773118053,1655.43849459136,1607.72036032171,1178.13576811544,985.091882661064,1121.44363460925,1,1,2314.72039587805,1,1,1143.74009261397,443.29137610002,2072.15236895612,2338.5681417156,1,1,2668.69375284079,2675.82514969268,2706.14440386167,3041.46570799594,2596.74250084113,3219.91582866025,2206.36148541572,2883.25520773871,2898.8194141392,2544.70634732149,2795.05496679069,1,1,1,1,1,1,1,1,1,1,1,2111.32541967977,1,1,1,1,1,1881.31144304388,2077.78857447858,1695.94364348168,2325.83947030247,1275.75264501851,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,588.921825647712,1,2357.18065080615,3143.45688875043,510.018656189845,3282.34555390812,2127.77695432778,2620.48245743466,2205.78365902734,1637.42689703261,1482.24670767283,1552.64602807951,2085.59351686682,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,570.06825456258,986.906244344458,1,2796.93451120401,1,1,1,2329.98547257138,1,1,1,1356.2207299754,1,1348.92750889761,688.392483136751,1,1,1],"Archive1208_field9":[255.883047790959,255.883029899896,255.883022485076,255.883024142818,259.041953087691,250.688267747287,250.691863191905,250.715863674057,250.71470073692,272.24808869628,272.248890052415,272.261711985046,271.107019851184,252.172518784797,252.177328113393,248.147347195782,251.457274125337,249.585669263553,251.081822610995,249.25733675958,249.571742121478,250.814085290148,249.934983932731,252.171932362747,248.30173183599,251.084399340968,249.217339889383,249.61828447071,270.714545901725,249.923712871817,248.260367175305,272.225114187092,248.796358724522,249.144661798322,271.394414351943,272.015415877564,271.892698240097,272.365695955189,271.993197792125,271.573707399262,248.588893584959,271.572638330367,271.239266153162,271.653741936305,271.968910269212,271.593186700063,271.520442753293,271.768539119709,257.046552097414,271.148027294052,250.27532082048,250.794197753718,271.065557466684,265.599786218931,250.733598270953,249.950256329682,249.028343357345,250.045390294824,251.329154605375,271.142111761212,270.954451455036,249.801997191867,272.19448269484,249.626116587479,250.24590370965,271.981827691555,249.768779069401,249.565962674279,250.082129921072,271.75491376231,270.798963986401,270.890302419785,249.437738287084,251.546098049406,271.353277099532,271.710535088821,271.579857877079,271.920988159661,271.000390538103,270.670317063701,266.259433710204,270.932031370906,268.946225460756,267.610299814066,271.089107555827,270.505703914081,267.144079652753,260.026848074341,270.906579369581,265.784606862507,267.129189283778,263.726754684891,264.603545701674,271.223791966207,259.797955724418,265.719080912298,269.917754103525,263.653946475259,263.20038150362,262.012860897255,259.475464764774,253.654533904813,256.319548591832,255.126687038339,261.466974306253,256.930067258626,251.627056951995,256.790736360992,250.273313364752,256.352539000299,258.858706614968,250.540763679038,271.407125292523,271.43962684546,254.176057626053,260.478428375734,263.852021793205,271.368177469579,271.771164371185,271.694065244164,271.278784239102,249.113331927917,271.43088337438,271.128223296932,271.816630133871,271.627104653571,272.178208196936,249.881173709968,271.798651203614,272.352723195256,248.955542803222,248.88025006841,250.06069183685,250.135915250831,249.216089144603,249.622722633954,248.862611885945,250.660182726317,257.262788171954,252.063313205561,258.147684347482,264.340466190997,260.226736745658,267.103148021128,266.223846014142,265.777211109363,271.071159433361,266.729349161452,262.390661408999,270.900831417544,258.471426548539,266.097664919944,264.15766015546,260.525074878421,268.109421966658,271.089315760778,272.083315767763,248.88969887305,251.550931848614,250.199937286518,253.826252444478,250.442560529036,262.375622762535,259.543243953491,268.270263249919,271.336922942661,259.051873356153,262.889413914846,270.769167580224,271.138991849233,271.97127810429,248.356880023543,249.352464685706,249.366785313416,252.934789539032,249.874425478177,249.265719165334,250.621778529761,251.324503844798,252.940510453005,250.31435852686,260.616971014841,255.754104080644,262.292870071537,266.881785418775,261.847622251376,270.671311104779,263.926487250857,268.437519339378,258.909258250496,270.57955188579,270.019364067937,268.480088981293,266.675376764319,266.746924054752,263.748384837336,261.924202004785,264.724542014623,270.762232012003,259.580358535358,269.612186914139,257.485330855685,254.566038376737,269.024650046667,265.006159108634,263.082677146736,271.356700844716,270.629319572018,271.479015869996,271.166989870276,271.54476712108,270.062810950743,270.989713943512,271.344900282881,271.622097129798,271.621592378985,272.249168372042,249.815277438093,250.861708759523,252.875030792266,251.648711592725,251.142609750508,251.845616700708,251.028265362143,250.497711978495,260.26299328539,266.830217323161,270.895490904203,271.014726103364,271.176516978379,270.849452091764,268.612626628017,271.324221330162,270.31207211521,270.966068288232,271.524876638926,271.201817358431,272.407537671396,251.083820085018,249.932884586908,250.102251245896,253.826237888687,250.411261744193,252.010116097719,252.599671359979,252.370650703854,252.53965196128,249.784668731119,265.963835008764,270.88753124853,271.294366337788,271.845165326979,252.173052454427,271.759473488709,258.767137307982,271.986885009914,271.867468708352,254.115104585282,272.451618715042,272.223634130064,271.952827830943,272.062396131844,271.731181541955,249.930156665502,272.243742596053,272.364007528076,249.176824586529,271.880964002054,248.864183531664,251.733163117064,254.812826218112,254.812818585846,253.151965711236,254.308109895652,253.369571517945,253.865655069197,254.683202578969,252.289156002386,251.504810018208,267.981716931777,263.095996741222,267.428258288076,269.591178837213,271.546485184223,271.581362366702,248.532558052482,249.817613656027,249.842030994371,251.548737291473,250.68838996849,251.304982263966,250.491416894406,251.845979315566,251.161475575186,249.474843830055,251.901909320827,251.049474086021,252.577740628339,252.939926547806,253.661244302169,252.433261833788,251.493113382884,253.369582755501,253.065446628501,251.89985022185,267.94883125672,261.166556564266,259.952346820936,271.153725542857,252.17151044674,271.500483004216,272.037736816717,272.454445577008,271.924920273657,271.500204013874,249.535660067716,271.930683512547,272.13741149715,271.480503473176,248.619435854183,254.30808783798,253.869892144824,270.999101922301,270.728766940711,271.437251697519,270.978119717997,271.081776271493,270.842746416062,270.654408551172,271.433069144809,271.181430685488,271.338734264846,270.634576065722,252.188152962669,271.511121827827,271.01430808628,272.234374091672,255.385554219584,271.777187435375,271.834638103899,272.34310940988,272.08860301476,271.874380355686,271.497141700198,272.273003241132,250.095728381228,251.068087465348,253.159883372781,251.063655442389,248.998685488275,271.160171359334,271.403853017145,271.13496136165,248.867404669252,248.642081282784,248.708439298375,248.687136099547,251.079244106526,249.214546310726,270.936875797765,250.252837734306,248.502425254587,248.840833311182,249.285746205836,249.763775860734,248.676589627352,248.829381069257,250.998116426012,248.714116026272,250.796792167421,272.274595446903,249.524318054499,272.459642862188,271.848113648494,248.443032607875,271.776098225563,271.353102111552,271.233770921067,271.43883468646,272.007432572829,271.291090976736,271.175087165133,271.707527171952,272.018256172675,271.699822103049,251.250195641451,271.902352500719,249.287576459031,272.444301123586,252.173412935805,248.385830225949,249.896848612004,249.330663841142,253.826261350418,251.316770306762,248.584736887422,250.532543514743,250.786219646453,251.170994536602,251.561404793304,252.940398026059,251.76717758892,249.725038068514,251.559480876708,252.717345197781,252.120714698396,252.601080716565,251.840789909723,250.948106256106,250.485154932239,270.88646254111,270.901487484055,271.694575582856,250.908017245278,248.335965831298,249.169976746967,248.969241323891,249.968077650443,253.826326052062,254.812814711096,250.003320692378,249.670971100693,271.430539539373,271.237325900088,271.857480204818,251.707136829281,272.354338651937,248.949106776798,271.07286759429,249.571035962805,249.557443878417,271.70866428233,249.028735894735,271.533742028031,272.072362927859,250.103048877935,249.588635136169,249.263772764229,249.516128926284,248.58299365982,248.316739400148,251.089003232361,272.579787031163,249.727497490631,249.354052213619,250.092395748367,253.826231884328,249.471642292138,249.10803695562,251.120821276212,250.3993945185,251.656852593736,248.400698120649,272.423362683946,249.183056095297,249.241278700947,248.679518644997,249.60642914397,272.375822213012,252.762241987357,253.664843558373,250.786847106885,249.152347366764,250.007361391033,249.893726906447,270.858046438435,272.083316835732,249.157386635373,249.690105810939,251.548153104902,248.927940520588,248.447057948666,250.023056118524,249.052845654674,253.826543896275,248.855080650669,250.595092367139,252.391486094076,251.161611625373,253.194649987656,254.812826574081,254.234607987373,253.634319187604,253.228993157511,251.616930178074,250.676311040197,251.960631398225,251.52645365492,252.306811025589,255.338416249913,255.50039217001,254.308099916492,252.940201766212,253.369212788664,252.371859566743,251.209490708126,252.06744375667,249.267569929103,271.290914118304,270.427071180365,269.213023467649,250.791454337392,250.331616525055,250.907982521641,251.297775630567,249.994345687468,250.781147162286,251.034992621106,249.832940034338,252.08139875479,250.788229230649,250.130601873379,250.299580699116,252.940267650661,249.898960528897,250.782675193852,248.890197319638,250.707229115602,250.046516356085,250.119051770335,249.163312862475,249.421574473859,248.97179536384,271.152005514967,271.200442562157,271.289061185957,271.022625441745,271.676775007046,271.251908267868,271.90448816705,271.724213250278,271.2185216914,250.378141891205,272.018488558886,272.50962486365,249.295236877832,248.97840616232,249.001452265084,249.951173350753,250.437187663743,250.37905011434,251.725928081851,250.919629118667,250.763608182529,251.741973115701,248.98868542033,249.108183524223,251.552605266205,250.086957329893,251.554552866765,252.539960364692,252.126045714479,252.642538268923,248.867126432774,248.49849242558,247.985421779816,249.644004429044,250.077203936509,272.153365327881,252.175917979404,251.387015327007,251.593100911256,253.070546369448,252.440070147262,254.812787254529,252.817140655262,253.487432262243,249.300760413792,248.725259648401,250.231935967499,253.369368580884,253.321810891288,272.115641208334,271.725213975276,251.086788773367,252.938583135285,251.068948703418,253.198555872085,254.812822259366,254.308106832319,253.957073835289,254.684646843981,253.370554605765,252.423322156405,253.03031526494,252.103223792071,254.308243445003,254.032108291506,248.11784814714,248.828651657648,251.621074367366,249.23703031464,267.726269682236,259.01964181862,250.785756300095,249.692460546156,249.09853035068,249.961565096784,250.719135216972,249.996816952527,249.219784583549,250.906184886912,249.441742663181,248.585478353092,253.396998397426,251.24269521826,271.874842902663,251.538579307551,250.192663342799,251.279062848883,250.479328058481,250.160346621009,251.029316905018,253.826149518262,251.365583502594,250.894812843449,252.940316929272,250.778557634198,252.539235496428,252.079870238081,252.65105631467,248.769831014432,251.693595390442,252.081653535955,249.722433229119,253.82630385344,248.858608162334,249.823060287513,248.650457273504,249.053367967475,250.613381228182,248.703052836419,250.43685920404,249.757971676834,252.006284447005,250.732413721147,251.542368936629,249.885189014808,248.190748473411,248.913337207057,272.286201829219,271.716388801827,271.757707137389,272.12972519863,272.296901226994,272.178827096106,250.002380421246,251.386039045294,271.145445217,247.69050384994,248.763027507287,272.159513309978,252.631966514729,271.355510913477,271.12479318372,249.697990193903,248.306050653903,270.838903125489,270.832725263548,270.80646998969,268.175726081319,270.90121279349,264.757483269327,271.239288020995,266.422948857136,265.917918647826,270.946280609589,264.854869676413,249.372129436109,254.81282188947,251.592433999728,252.940025169852,253.186407809873,252.590866668422,252.290026848687,252.723197673489,254.812818174878,253.051006498807,253.865687840783,271.321583786749,250.243046906772,248.920278937097,249.481371165491,249.069112743382,250.79516078718,271.520778838255,271.35063371161,271.681314334692,271.135816286293,272.045188296119,252.173596897711,251.207158273125,253.369719702366,253.314181091119,253.967019073589,254.566748924267,254.308068513795,249.396844471143,250.524910329247,250.713483259214,250.141405251399,251.448743252477,251.847402388837,252.540733990957,251.951215833744,256.197963149539,248.725673699143,271.108676688556,265.104195420615,253.292226019163,264.341560392131,271.307340496874,270.880653704263,271.239784581113,271.731982185055,271.866371223728,271.805406842399,271.343871483363,249.672943292039,249.874228529367,250.78771975399,249.69375759247,248.933551294021,249.270217299942,250.720058809902,250.129612684755,249.726551352434,250.165795576718,251.546504169824,248.775132461889,250.603407195142,251.073840865071,249.361311380551,248.939063770612,249.243196063158,251.471741430487,250.577428412624,250.274852998605,250.159189462028,249.768759777077,248.409381492,250.978035215599,249.835572096929,249.363074681391,248.821148169125,248.759601957333,271.243527660059,272.295332795083,251.622300582643,270.727840681697,250.275755538803,250.86425510691,249.244716860335,271.132233620819,250.618473551468,251.24665230633,251.758051040258,271.975516411018,249.320199774683,271.981825161768,260.119397966238,255.33841891545,250.370453321966,250.157003802145,255.880189941637,255.880172648876,255.880165372925,255.880167032521,249.485725782603,250.685637183901,250.689015767001,250.712961860936,250.711531939544,269.376063679525,269.106466966646,272.388609874629,257.786996609255,252.169677416515,252.174324656629,248.145874085898,251.454352246484,249.579946054288,251.078800304234,249.252561282498,249.568874481646,250.810578467644,249.932799687214,252.169116993306,248.298440099427,251.081264619473,249.206205841799,249.612556284972,265.701456653465,249.874906266012,248.258555816857,270.402075088511,248.791826883928,249.142727395,262.474166014597,271.22465646171,267.215815133138,266.646738608417,267.239237443389,266.673840120412,248.571266076625,267.124453581932,261.766446225404,265.010877584405,270.933051463745,265.980314453532,265.888232912859,266.408337401117,254.357634250433,259.834086045546,250.224958677646,250.791431781113,259.096398934543,253.630837676759,250.731805857055,249.94517915588,249.037310455842,250.043087157876,251.071498898981,260.753899872213,256.657914935016,249.796295085087,271.654024197285,249.604534309809,248.125102744978,270.150202575307,249.727287095901,249.560693745604,250.030771669403,271.615717812202,256.217512891104,256.195184892612,249.430450356919,251.543279725865,260.714416690434,264.27770855114,264.884304943426,271.100993731513,257.256007440773,256.552542987027,252.429546735555,257.225111238102,255.256089174518,254.536724859927,257.552671133208,255.661328076761,253.360109610043,248.51557075639,255.349551009968,251.673342783661,253.610315301794,251.386295577108,251.676285044242,257.777534852282,248.1760853342,253.092021959956,254.621224611653,251.114215543585,250.752659243734,250.700185906986,248.191885747891,244.506209276668,246.048671285675,245.125005201007,249.01067042039,245.721792037776,242.832725997634,246.177634952996,242.302271668432,247.180727020597,247.785435837965,250.537540089103,262.778678595984,262.95406978589,244.547613878267,249.510895746266,251.440399335536,262.502972049096,266.734382557277,268.031282044411,261.492267002977,248.418706714292,263.342774734138,257.811509053489,266.842572849326,265.840110035854,270.167186266229,249.833387980275,268.164444713339,268.797083105792,248.942314685406,248.858237574106,250.012965306609,250.132612986089,249.216586163781,249.617415955571,248.86472654529,250.657143079826,247.47901318679,243.414092332449,247.206094305161,251.129851139464,248.577104133873,253.018142110267,253.592955588589,252.860803071841,256.698363256286,252.671201701597,249.876251985232,255.624051781286,247.296252682708,252.934214535792,251.654164282764,249.356163578125,254.357828353904,257.266861957518,268.193470864511,248.889192934715,251.547987975509,250.19684247842,253.823394428905,250.438397089394,251.337437207095,249.000773743698,254.928124215243,260.945576115724,247.553511070158,250.283178520895,256.475318534226,257.695302783344,268.800191929297,248.3523878912,249.316259585783,249.364393069769,251.504492060761,249.869601285866,249.264035801773,250.619201492382,251.321636263648,252.937650492194,250.310380324291,249.640150452613,246.231804302556,250.633954020287,254.281154024033,250.18119260509,258.473387204977,252.369260412475,255.147792821577,248.35593821137,258.029606036372,256.66254548934,254.887786021823,254.395799212867,254.197742997391,251.606020798871,250.794760788007,252.637276831623,257.256299053687,248.79527390456,255.35350639463,247.339302826831,245.134399044202,254.957778665573,253.369886137159,251.307176123113,260.778992542638,256.013670323574,263.927124918863,258.511753196756,264.457910138007,255.382994471532,255.78997006863,262.017347568264,265.310999182514,265.760922623145,270.944796489736,249.77777402511,250.85894596528,252.87216989439,251.645824988368,251.140092524747,251.842623253731,251.025549482921,250.494976280708,249.225024346213,254.697427925631,257.54585546042,258.79381423467,259.293980876709,256.008889518689,254.654104158953,261.310045638902,256.036805770204,258.275113901815,265.652951362254,259.956395477249,267.145420730742,251.08089696562,249.92976811795,250.098942007706,253.823380925961,250.408358049139,252.007264827274,252.596822300648,252.367790483208,252.536802813487,249.781267394346,252.539340559288,256.579841801963,262.082942295688,267.302185406219,252.170200526537,267.044381694566,255.233984185945,269.509845227699,267.228810335025,253.354891544419,270.028415028309,269.972594884773,270.404427606219,270.203176209662,268.221120904823,249.886397551975,272.373206991051,268.243837003885,249.153398931586,268.733857709277,248.862720661495,251.730315266162,254.809968973152,254.809961472882,253.149108972274,254.305252510687,253.366714741666,253.862798405432,254.68034531698,252.28628446843,251.501899031033,254.82488617845,251.053941364978,254.730873368675,256.531719311046,265.222240755066,264.114878977839,248.534623808456,249.813696565208,249.837170944187,251.545834782826,250.685752578012,251.301865846722,250.489010873456,251.843020439601,251.158622742295,249.470029655968,251.899061378518,251.046617826342,252.574878574521,252.937073496077,253.658386702099,252.430408431871,251.49024515457,253.366722991007,253.062590257946,251.896970009053,253.8627569673,249.236281739818,248.50426143337,259.048245629828,252.16870935768,264.636491098351,271.528282216308,271.974336073357,272.099931252332,264.03678186166,249.509028353057,268.807199910702,272.282066247219,266.198817420435,248.606328488818,254.305230862064,253.867035206118,258.124282403802,256.984574934308,261.594040761187,259.883916048023,259.737900230731,259.545581338421,257.430507152547,263.965749063772,260.616795396497,262.24597283817,256.625285365812,252.184880880672,263.670095843245,259.713374343296,270.06077930033,252.612017028676,266.621696855192,266.359595007508,271.940041095841,269.880080970371,265.617840087556,261.757668493367,272.398288153156,250.092572147219,251.065523308081,253.157024979509,251.061244071774,248.995340409815,258.555940182971,262.65823504926,259.297450607125,248.867039010388,248.641874577241,248.700820155179,248.663170393697,251.076406693314,249.199189377489,257.877985939172,250.249876368408,248.488108325649,248.837358321523,249.2555919686,249.760438976531,248.677733595498,248.826510905156,250.028249920536,248.697782708568,250.79384259483,269.694516298673,249.521437191643,270.021173497887,267.862427785088,248.446692065704,266.344600216978,262.255170241157,262.986690357125,263.780652653221,272.139176483735,260.991973505235,260.411632881454,266.170646227863,269.669312318686,266.246279394321,251.16427978462,267.211629213307,249.258644361192,269.650878171717,252.170564479656,248.389677000367,249.892825779007,249.325903988013,253.823403958822,251.313869148145,248.58049392697,250.529839478613,250.783399687268,251.168138428621,251.558537103469,252.937536353852,251.764305739438,249.721667890981,251.556315286997,252.714491111318,252.117865959274,252.598223884514,251.837942545272,250.945321295833,250.482700571401,258.767811278577,259.522089381128,264.82153047688,250.248345594446,248.328360704692,249.166222889589,248.968418010631,249.965578150688,253.823466704052,254.809957932398,249.998722284942,249.666291842443,263.12431666084,261.331753484756,267.832642699164,250.862960825838,272.468004037201,248.924313480944,259.636399634349,249.528045407324,249.553420128594,265.264243441874,249.018879879194,264.801951345939,271.515391071236,250.100007861896,249.554241850451,249.259413478354,249.513171817397,248.58427886987,248.304929979649,251.085905726775,270.254813018687,249.722667609599,249.310130404462,250.089627895415,253.823374365832,249.467170629703,249.105415376339,251.117895941819,250.39651441688,251.653974349936,248.378322837506,272.527167477589,249.179229837554,249.239680295017,248.681902558418,249.562326374763,272.486418531787,252.759376804546,253.661985701218,250.784075090864,249.152218412975,250.003999751418,249.890630917151,259.551717203643,267.379430925765,249.15449636411,249.684942614221,251.545213435591,248.927473001441,248.450069695993,250.018947877783,249.032926444095,253.823678254607,248.858284100125,250.592359091974,252.388628362978,251.158712768998,253.191794475764,254.809969227696,254.231750594763,253.631462898242,253.226136647447,251.614061987701,250.673484115328,251.957799730024,251.52359332595,252.303972906025,255.335559065531,255.497535150528,254.305242572584,252.937340165154,253.366363157741,252.368982718648,251.206514175969,252.064574014717,249.266313419632,263.801654730816,256.275289020386,255.76731199642,250.788675458937,250.329283030769,250.905210567673,251.294674475783,249.990671509754,250.778343145529,251.032136954788,249.830176084155,251.96282865745,250.786239425605,250.124809056232,250.29681371396,252.9374026819,249.895505690896,250.780039479937,248.885571815475,250.704642351248,250.042921658498,250.115683283645,249.160420041682,249.399232236355,248.953233605787,260.618793495414,261.430731760547,261.679693170842,258.156955615969,265.158337235425,261.300598567028,266.593419694232,263.974675081229,260.257718857252,249.754862164165,269.255666549462,270.019070982998,249.289309197,248.956125305364,248.998000038879,249.944733487669,250.434314236284,250.372436016035,251.723072690566,250.916717402851,250.760897001363,251.73896848825,248.991828796505,249.108359994028,251.549591741457,250.080260225395,251.551601386292,252.537118011933,252.123199137678,252.63967805379,248.855499407713,248.486932473642,247.985387805159,249.291614348337,250.025773291224,270.930150219098,252.172979482224,251.384523093674,251.590189124267,253.067690389242,252.437215149409,254.809930988964,252.814299481337,253.484571802184,249.29693340821,248.722237168841,250.229495319108,253.36651450555,252.85711853382,268.227629578842,267.001142053625,251.083853287718,252.935770185153,251.066997793553,253.195700847484,254.809965082385,254.305248899058,253.954216336916,254.681790600648,253.367665191892,252.420507671434,253.027482498485,252.100407749579,254.305382158869,254.029248480197,248.112343426017,248.823332503531,251.61790147242,249.213713152907,264.248510576697,255.861684987135,250.783002323068,249.688107556572,249.097154060336,249.957391584351,250.716404148457,249.993531226172,249.222026261067,250.903589243284,249.434420191111,248.576889297267,253.232123099205,251.140869452115,266.313963967869,251.535989314838,250.189365092463,251.276769600938,250.474993000949,250.157799520821,251.026583007435,253.82329652668,251.362594218296,250.891912235971,252.937449976679,250.775774684482,252.536431566707,252.077026584854,252.648194969388,248.769143037288,251.690744069627,252.078810366959,249.71838224762,253.823445527436,248.852374743037,249.8200777659,248.655352884517,249.050590170358,250.610622247841,248.684292241272,250.434261501661,249.753624165586,251.141299828415,250.667517376081,251.539459736999,249.882455460649,248.181312699877,248.904352649831,272.409601190163,264.570356976905,267.398488635971,272.275478184705,272.418771915256,272.317565314595,249.999779403303,251.383103269996,259.040343565005,247.68916555277,248.762433809421,269.999728007161,250.173730241961,263.540760644705,259.273122796702,249.690398633348,248.295207114721,257.646710267777,257.545695138984,257.15658443379,253.982753320302,257.420898310568,251.776442240777,259.344728583898,253.706179911569,253.019671025687,256.910837467874,252.696168099811,249.370229841833,254.809964642962,251.589580032142,252.937167121381,253.183548831414,252.58801949134,252.287174553051,252.720346995897,254.809961052383,253.048146053111,253.86283032,259.68630982901,250.239747095967,248.912883331851,249.477355847611,249.066037447074,250.792565009722,264.297813912385,260.628444683639,264.071118193533,258.485740499686,271.391313203513,252.170747860458,251.204288924316,253.366855568079,253.311320785142,253.964162967743,254.56389168959,254.305212071948,249.391782491898,250.522070898985,250.710556004899,250.137796311802,251.445838246788,251.844366100288,252.537868306075,251.948351936043,253.131456855145,248.727237349104,258.416560082456,252.455712811416,250.637304879623,251.231276267096,260.025102967732,258.903252750407,261.188188144412,265.316090855172,266.756732417204,267.2170481382,259.739070041855,249.669887214591,249.870089309354,250.784991431563,249.690948452324,248.931168668762,249.266877462506,250.717187999075,250.126577374342,249.722303792902,250.162231415328,251.543627231919,248.77622938138,250.600734341548,251.070770502467,249.356863534709,248.917168448278,249.202594545435,251.468877301469,250.574864897251,250.272127108228,250.156941900824,249.763466749083,248.416076000514,250.975284813542,249.831108617045,249.356802940123,248.821406560374,248.741077258549,266.844844999066,269.876466902336,251.534683086098,257.271655202419,250.2731081338,250.861285582188,249.239237011239,259.303793693317,250.614268152963,251.245022568218,251.755208584682,267.897364809451,249.277288218243,272.148706990294,256.250211912212,255.335561758992,250.313569109773,250.1540464733,255.877331554543,255.877315163882,255.877308331677,255.877309913393,243.861821233445,250.683398299326,250.686410848316,250.709345570551,250.707691117138,263.106242134749,261.223036492869,269.835807931845,247.776029500326,252.166870490694,252.171085591313,248.14527106763,251.451328967607,249.570096171706,251.075745752774,249.247071391467,249.565891248273,250.805850378096,249.931428911584,252.166364310888,248.294598740488,251.077821664448,249.17874487831,249.605485178482,260.567135138277,249.74658728438,248.255940297439,264.461295829594,248.783797097009,249.140303530436,250.66149979328,264.028347409681,258.841400959693,260.452161620128,259.46848338006,255.671611254079,248.536576906937,255.851103971954,249.439505826151,254.532758013029,261.94850960715,254.226671846813,254.445565910111,256.920930738703,252.021962181693,247.371886655281,250.081310818574,250.788475678673,248.307553050376,245.407578697651,250.730188050106,249.938184971921,249.045320191328,250.041732084852,250.62656120033,248.974140376553,246.585262953105,249.785068257881,265.561896687008,249.542111242785,247.357883095343,262.608825243566,249.621866386413,249.553413283331,249.893574665188,261.141022617273,245.962681821063,246.195793597389,249.42198632453,251.540526735731,247.587652809397,252.997589030378,251.806368412788,262.372305150134,246.954093113255,246.417068142431,243.821377762634,246.579503706832,245.82179083105,245.620921149889,247.024058681363,245.876135620602,244.498077877466,242.517045559032,245.698465943095,243.367541280887,245.421718177478,243.977986310726,243.816474379804,247.750143810623,242.122182047544,245.083322576901,245.407490877781,243.78725327072,243.45203822119,243.514547190859,242.510543184849,241.040073549828,241.472898812222,241.049897816391,242.293380288239,240.81729186693,240.149292431224,241.240134525361,240.004011321036,242.371893171589,242.272022135542,250.533405301847,250.633670728385,251.109900394664,240.46518990746,243.168092000234,243.833422890485,250.825183640997,257.572963648284,257.181492438168,249.013562946369,248.184233453291,250.908252546505,247.072038455989,257.482407935488,255.044831686196,263.406565070895,249.701600675418,258.485680597841,263.110969342221,248.91298067035,248.801508567789,249.889356603255,250.128736545803,249.222055598431,249.607393225482,248.873511736766,250.653713003642,242.094600827674,240.397157075088,241.695368919798,243.241400235279,242.402399418202,244.296730555109,245.026436197868,244.721279130046,246.660360403506,244.133899592231,242.98025536019,245.941525675487,241.742282885947,244.614133595338,244.101011435664,243.154371254251,245.604476888455,247.136739276656,260.270832058746,248.894083011014,251.544896725251,250.19328661387,253.820534859998,250.432090108486,243.587051997404,242.721027500416,245.997429474233,249.499933138951,241.906569015747,243.195301145148,246.055405502223,247.123035263244,260.435878994816,248.340348159814,249.217735352627,249.363047489695,250.775120646558,249.861391252975,249.264122056159,250.617028552883,251.318738817966,252.934788082333,250.304689475145,242.900764601755,241.477699430617,243.17322945829,245.08327742425,242.788090919261,246.120574673977,244.517233595037,245.024354897466,242.441469338468,246.658761744288,245.884057416565,244.575719996765,244.895717691676,244.64748605108,243.570622099435,243.436673885012,243.958095525856,246.192857534336,242.564369666165,244.785362290702,242.187117691414,241.023027199422,244.430077830749,244.625464741826,243.430531608413,249.629356093452,245.839035710843,251.189707865278,247.051854181704,253.314596060998,245.890030507481,245.998267752265,249.497316025945,254.336623113661,254.025706787617,264.493380860107,249.664965543065,250.856366114079,252.869302465036,251.642894547776,251.13811146434,251.839422390103,251.023046038648,250.492323997584,242.820119145116,246.190803618058,247.354634856552,247.980846802497,248.467745627918,244.863282165522,245.167939045878,250.744719892998,246.109327980211,246.306022909037,254.502077803215,248.063777235892,261.473773719753,251.0778766921,249.925963142363,250.09489649237,253.82052439765,250.405375592464,252.004424478989,252.593985892053,252.364925457728,252.533963375058,249.776985573347,243.565937788556,245.755786708371,249.682157764663,257.940878124898,252.167362975398,256.761526415852,252.595341904243,261.682382988388,257.532289016063,252.743152305025,265.294363744708,263.588289906726,263.231579502771,262.451156859657,256.353872203146,249.763143388052,267.218148445285,262.45803390319,249.095872250746,259.971710977492,248.861843428403,251.727482374703,254.807111568749,254.807104437272,253.146252802032,254.302394764577,253.363859064235,253.859942571062,254.677487860378,252.283385081529,251.498910917363,245.388314339018,243.408653201221,244.925083779047,245.939753552368,254.280157330789,250.299599162507,248.546265834456,249.807871271022,249.828315681589,251.542866398161,250.683476050446,251.2982476846,250.48751177161,251.839884863706,251.155751459874,249.461446125783,251.896223618654,251.043779622204,252.572009001758,252.934225801375,253.655528374166,252.427562498253,251.487353841131,253.363858735853,253.059734797635,251.894049188977,244.238557879352,242.588944291343,242.405728643293,247.36200521401,252.165985859106,251.421859858395,265.206546069944,267.979855998494,265.758003717646,250.003017273785,249.430616653726,259.962346030296,266.834950392808,260.275270572831,248.566939952934,254.302374111527,253.864178561834,246.613886782514,245.969171501334,248.349284334043,247.665340197245,247.42274941506,246.16261948846,245.719083640192,250.334025745232,247.986425265108,248.104388400755,245.554487286438,252.181045521219,251.982600145452,247.132752760897,263.087466689257,250.34420542736,256.324199057273,255.700829063718,268.294190118612,261.153796973783,255.479612337854,248.924428196219,269.519245552221,250.088691978308,251.063411310996,253.154164721991,251.059480190576,248.991330400008,247.155175430942,250.158775124173,246.379461558129,248.873661380384,248.643281352131,248.679607664522,248.610429110379,251.073644545546,249.161164068696,245.917570550081,250.246353400223,248.458801212922,248.830740842396,249.180317420126,249.756637084972,248.683480438544,248.824613373804,249.536664548185,248.657146429496,250.790652683774,263.913536613315,249.518485693213,266.716188787207,257.819618078341,248.459535179094,255.431619722314,248.554907222626,248.089971841714,249.308266309336,261.501391290245,248.122620990491,248.052744595208,254.351576546977,259.276868692005,253.693491458816,250.955334769897,258.255716703006,249.18821097796,266.1185137395,252.167723604356,248.402981641093,249.885987815251,249.319000352078,253.82054598984,251.310849826519,248.57063475416,250.527563332017,250.780799058859,251.165295796025,251.555694358364,252.934659948007,251.761372203839,249.717900908275,251.552691909833,252.711639789802,252.115045417822,252.595373144764,251.835108630656,250.942589987498,250.480721113001,246.429740479148,247.316292366945,253.216208855923,249.708615224016,248.31938172372,249.161806249438,248.966369052739,249.963609848975,253.820604378281,254.807101353813,249.991086507737,249.658858480089,249.850165253783,248.159371555642,257.795930427329,250.397246411614,269.33775298329,248.869483750013,247.025329013732,249.416506835708,249.547870759571,253.296394229482,248.989605862961,251.685218725726,262.229518118804,250.096437920929,249.462183015953,249.251975402336,249.511054926985,248.592389757046,248.285052685169,251.082496185771,266.298187776977,249.71512152651,249.220659663011,250.086911184252,253.820519900518,249.460344166765,249.103753527092,251.114945495053,250.39350109083,251.65109524425,248.342157662024,270.176214543672,249.173560718694,249.240005057378,248.689924872412,249.447310395695,270.100398613281,252.756500426459,253.659127985292,250.781577802728,249.154212684519,249.999731609528,249.88662527362,246.112731056642,258.774863818102,249.143322810374,249.676739702698,251.54224570661,248.929792324523,248.459672706037,250.014191387063,248.979051145686,253.820802842658,248.861552080677,250.589533385081,252.385764386642,251.155756865009,253.188942100545,254.807111706881,254.228892612817,253.628607709831,253.223280884543,251.61116612212,250.670692403285,251.955007491164,251.520733535056,252.301161023894,255.332701982205,255.494678363548,254.302384989784,252.934472533468,253.363523649377,252.366078795137,251.203400726682,252.061684723969,249.267839596958,249.217466112747,245.667092070543,245.251097272966,250.786008655319,250.327523509321,250.902607893147,251.291383810147,249.985839856988,250.775176225031,251.02919585249,249.827532480581,251.686609197091,250.785179889968,250.114630333818,250.293883553929,252.93453591368,249.890666631467,250.777875637935,248.87978106764,250.702638730881,250.037895383195,250.111256197478,249.158386148709,249.338261470733,248.905720187979,247.713287653871,248.799499337942,247.502924015371,246.603645620341,252.755304666454,247.642445202284,258.147962780246,252.133600233142,247.556665258492,249.132739997,258.868786934804,267.122690964053,249.279458594872,248.89728064957,248.991799964682,249.933638843295,250.431210271469,250.360636722254,251.720200729102,250.913765213399,250.758423074267,251.735791318738,249.003468161737,249.109242917357,251.546332962352,250.067618643308,251.548538472957,252.534288675226,252.12034375881,252.636809307129,248.817163725534,248.460999417634,247.988314118902,249.046495601265,249.896615853137,261.911490779351,252.16987981382,251.3825293221,251.587183419267,253.064827253664,252.434363402877,254.807075944888,252.811477230564,253.481708095127,249.291595466652,248.718710295257,250.227621102534,253.363663365337,252.221260168819,259.96705335622,255.079974615955,251.080718091147,252.933012635387,251.066148933161,253.192841692675,254.807107392739,254.302391130497,253.951360339915,254.678934998715,253.364738748399,252.417737320059,253.02467486016,252.097635260826,254.302515764793,254.026385337035,248.111268982416,248.815364180405,251.614320055132,249.154283453333,259.790159517914,252.452653097363,250.780543363219,249.681837099404,249.098298026266,249.950834778654,250.713705414624,249.989442598044,249.230948697311,250.901441234513,249.419953179643,248.557221258495,252.939976337074,250.878906587413,256.249148984781,251.53379808014,250.185506777539,251.275288942595,250.468307377913,250.155362603818,251.02407577962,253.820447413042,251.359459936895,250.888987611989,252.934572569842,250.772936071788,252.533694254328,252.074187482537,252.645329122266,248.770187245301,251.687913720609,252.075972480822,249.713275670083,253.820584039682,248.842376779217,249.816847442425,248.666498562084,249.047684344849,250.60794434594,248.638822746971,250.431945182606,249.747270676533,250.671283259739,250.490238542011,251.536484402689,249.880231157254,248.168276457006,248.876516968497,269.896109037364,252.794715296516,254.812274007238,265.283510965069,268.722690101139,268.246394120851,249.997603226082,251.380024810137,247.357836175226,247.695130272655,248.751813327471,259.697962523197,248.92657541775,250.160845286722,247.796606949898,249.675881557131,248.282273514801,246.087169614179,246.15071519712,245.343823832352,244.542824527456,246.029622164057,243.3716999476,246.929237886686,244.581702446999,244.026708031015,246.078323323964,243.958031236392,249.370199674451,254.807107496635,251.586746094615,252.934320345928,253.180688073862,252.585191242169,252.284323520992,252.717506698708,254.807104233175,253.045282770962,253.859971628605,247.194192926346,250.2357557135,248.88775990465,249.473737734134,249.0626116058,250.790119462698,250.480604124489,246.852321688013,250.767345694909,246.811296735185,261.669762996573,252.167893153245,251.201532874473,253.363983559318,253.308456280624,253.961308506297,254.561034344616,254.302356389557,249.381644984125,250.519529741338,250.707511244565,250.132495228761,251.442897269442,251.841027961133,252.535000540097,251.945449777089,250.897808516324,248.737396514614,247.325052117295,243.986702875766,249.346722440961,243.482415836519,249.165845602952,247.070430658627,247.917706233529,252.122038830623,255.100791401732,255.755554821884,248.996824933533,249.666380258087,249.863897252829,250.782459543429,249.688446920589,248.92967753243,249.263088176365,250.714360791908,250.122978727837,249.716231340061,250.157683456129,251.540732785799,248.780742240346,250.598262119102,251.067386880963,249.35046815662,248.866366598939,249.100758164946,251.465997178138,250.572704570579,250.269464852298,250.15546513602,249.754535958903,248.432444769309,250.972666889013,249.824328833296,249.344288889175,248.825646378824,248.700724993718,262.077131720384,264.069620025526,251.299053835411,245.909306232153,250.270755451092,250.858143103306,249.22992469244,247.167793152698,250.60831714492,251.245015099348,251.752391126583,259.78241400382,249.171535760608,266.473757498689,253.084340377509,255.332704537819,250.162564157801,250.150525239428,255.874471976476,255.874457463468,255.874451435197,255.87445282218,241.163949516265,250.681444414354,250.683957651515,250.704627157007,250.702873914255,258.122398973565,255.290722752654,265.099492277916,244.957297836285,252.164106859298,252.167671816313,248.14069153596,251.448187430881,249.554330807548,251.072689601762,249.241609718078,249.562736401986,250.800097920214,249.930054943911,252.163674142716,248.282932043596,251.07423322321,249.136065754978,249.599766214507,256.350969900814,249.544342077618,248.246437952018,258.878820993573,248.773076569692,249.139426597513,245.961425604123,258.383412298039,252.218389114768,255.647191867956,253.663599733423,249.088605639193,248.483352335422,249.796862982973,245.300665520002,248.198929824119,255.814449972339,247.576654853775,247.939663019959,250.119924566246,250.36272939228,244.245168877209,249.821381459737,250.78537013315,245.177346642055,243.179470403831,250.727497184383,249.930384624147,249.041387350381,250.040700173946,250.05992287765,245.453506380849,244.541982156932,249.768685461937,259.755839064852,249.440161623121,247.190533466496,256.565669071258,249.453479277921,249.54339887667,249.675443330052,252.863800588098,243.598763911568,244.009674008751,249.413722823784,251.5377742449,243.705021491177,246.467177690372,243.994238916045,255.483842794038,244.3640845114,243.564095735169,242.156521927612,243.845886838491,243.467797267407,243.617814808377,244.588360133068,243.697356236488,242.895604036711,241.42631361552,244.045922639935,241.991810489715,243.903667468862,242.2946773708,242.402698562752,245.116809303736,240.725307013923,243.421956734814,243.700073122376,242.525521549167,241.687663623024,241.692666963151,241.217535996271,240.129860463063,240.658267180055,240.353283510085,241.208669727312,240.061317248387,239.64093528799,240.144499856951,239.437663282839,240.673807565722,240.901581967718,250.528500953585,245.863745599485,246.202441134724,239.608062741481,241.878664040833,242.312848182749,246.119991726742,250.958070141714,250.885267807507,244.962809436751,248.043177598389,245.802153846604,244.660438844235,250.649131580286,248.601861307566,257.533703632566,249.472255994809,251.382846769404,258.10321287594,248.870753520109,248.702053689829,249.697003607455,250.1242461754,249.23136201215,249.591532382615,248.889568655214,250.65015278582,240.204203218752,239.560642786761,240.632516802718,241.838380458897,241.403998630683,242.714698700027,243.204392564927,242.994646171397,244.668385612621,242.692863400256,241.885328195741,244.064649603891,240.761955493948,242.819923998744,242.585933389959,241.713874984979,243.65353456594,244.67061858118,253.994971417654,248.90494507492,251.541591292827,250.189053473321,253.817675495478,250.424104551268,241.372366357263,240.932087090252,244.034702944385,245.59900108429,241.024477060778,241.718230443585,243.719859891361,244.717445060903,253.818299025303,248.320955047806,249.04625850118,249.363123034591,250.173801291155,249.849153984345,249.267052671996,250.615348929807,251.315760316014,252.931902393395,250.297003011251,240.757033199754,240.128943560473,240.806124365737,241.942365061545,241.482281612983,242.495450046738,241.966279348062,241.982003400775,241.067006578174,242.7754605446,242.742992278541,241.840907552972,241.953400062193,241.77270582468,241.137999061601,241.468921611593,241.431739053985,242.853477988307,240.754033429738,241.892144899665,241.117613084856,240.015016440552,242.259258373491,242.201152186409,241.710114475414,245.745265018054,243.287379737987,245.437863513004,244.370519686496,247.498083860482,244.030566405954,244.351392032978,245.207408598113,248.46203202103,247.850155790075,259.335032530365,249.449273177807,250.854012705235,252.866424175124,251.639765925881,251.136630915562,251.836014792303,251.020790841509,250.489890740306,241.401333801524,243.546590282645,244.655996360452,245.406371817059,245.43812887224,242.692068126251,242.922659124106,247.036445478407,243.408673037558,243.351235540848,248.548936080166,244.269130787392,256.807914342526,251.074669877158,249.921438203398,250.08986811792,253.817668481949,250.402281856816,252.001606050633,252.591163456205,252.362063773366,252.531170802682,249.770803600437,241.62934500394,243.671110194692,245.384843460628,250.857657331247,252.164541758995,249.964795213945,250.897086449937,255.490844625892,250.546427092376,251.968341039208,260.370191177084,257.910259244378,256.259041371645,256.44262922101,248.095185821416,249.539211496962,262.286010742373,257.742700089331,249.005693258011,253.140054658439,248.863337059873,251.724667344736,254.804253953469,254.804247598143,253.143397318737,254.299536160065,253.36099749499,253.857088228779,254.67463012183,252.280482806496,251.495813779913,243.206666010571,241.638794432665,242.317190083539,243.271857820465,249.0480544116,243.958109437749,248.570336744278,249.79986995557,249.814150804966,251.53979384952,250.681721460011,251.293984110893,250.487161067335,251.836506682182,251.152868235899,249.448142916585,251.893392291714,251.040988091873,252.569131431406,252.931385659518,253.652669137091,252.424725429996,251.484438714447,253.360988985034,253.056880261947,251.891075827824,242.360773334897,241.179205581149,241.110333801834,244.182886596165,252.163355583833,244.929251314052,258.541407797574,263.854166108282,258.228309924786,244.829562476776,249.29458759642,252.005521818961,260.261958208519,255.744252894585,248.493232720134,254.299517609195,253.861322074614,243.298933720165,243.029425511166,244.024296387093,243.610868905365,243.546493963177,242.822815198041,242.42380805504,244.957237009995,243.941379613468,243.412686121547,242.402140865286,252.176496612189,246.709379087026,243.419392353653,257.778567332599,249.001640584503,249.20586079731,249.136524466775,263.498402144654,254.92097281282,248.475686103512,243.844692272092,264.811210234946,250.083931132181,251.061931000782,253.151303045719,251.058540476161,248.986108472803,244.61656094901,246.482005819294,242.790772311714,248.888776796785,248.647201135482,248.646044815918,248.530400270906,251.070964558224,249.10216412281,242.691204656041,250.242217741224,248.408940168792,248.819954014504,249.041388988141,249.75214743684,248.696217054407,248.823753218779,249.170264426873,248.580743349727,250.787230013304,259.292648439083,249.515511074247,262.980095346181,250.443508588433,248.483952198103,248.569006592492,244.199347053963,243.633269440409,244.176642563266,254.475603440013,244.118754157195,244.014126101563,247.519356538587,252.470847543629,246.644241640791,250.602575516216,251.511371215526,249.050210338417,261.789407720174,252.164873346079,248.426897470096,249.875941496776,249.309579448966,253.817687338242,251.307695309607,248.553826020805,250.525805523861,250.778450541956,251.162464050083,251.552873448985,252.931766924915,251.758369745607,249.713626467046,251.548447786692,252.708792606989,252.112257379311,252.59252882552,251.832302559451,250.939914282867,250.479421446954,243.118038606935,243.379433054993,246.484024362293,249.196905565083,248.308439171975,249.156667351699,248.963910712092,249.962259014206,253.81773861567,254.804245157587,249.979453852398,249.647620841224,245.070210730263,243.99727006464,250.585431252001,249.918023288665,265.154245765118,248.785319848607,243.261244348458,249.214641091559,249.540149378955,246.524273038976,248.943002284128,245.820923283104,255.375247548777,250.092514359593,249.31397645175,249.239966112684,249.509329374176,248.608419191384,248.242968116814,251.07868491491,261.239888037942,249.703711815346,249.083444809153,250.083991337436,253.817665437696,249.450964996934,249.104360769388,251.111900727293,250.390362077627,251.648175770626,248.28874342812,266.682317871008,249.16568293921,249.242678399632,248.704353899371,249.249334364939,266.296007329666,252.753610764545,253.656270160445,250.779386695689,249.159657732534,249.994223536663,249.88184889519,242.885981518683,252.892579809596,249.123570418472,249.664648656324,251.539165521458,248.935279037421,248.479253612429,250.008888866165,248.895892703786,253.81791295917,248.871697110403,250.586857647661,252.382893828439,251.152731199272,253.186093330175,254.804253994398,254.226033971272,253.62575384887,253.220425952583,251.608239576645,250.667944584467,251.952261793938,251.517875190369,252.298379877164,255.329845020546,255.49182188591,254.299527124241,252.931597716797,253.360695869778,252.363143597182,251.200127806412,252.058771165701,249.272011440058,244.347582689953,242.752311148297,242.817792399115,250.783374050008,250.326499203873,250.900293592288,251.287814697761,249.979442674929,250.77177923274,251.026295541494,249.825621959402,251.221624245402,250.785568246257,250.099238385502,250.290932674755,252.931657233633,249.88449508171,250.776179287015,248.872076736506,250.701202242567,250.031389602024,250.105832586862,249.156996741852,249.237182927959,248.829305669465,243.64206724616,244.389753223535,243.517840185993,243.402276020903,246.385356748044,243.936748112169,251.896249911947,245.948792240018,244.373362166818,248.58855800557,252.657352360644,263.38547052161,249.26445080747,248.804271172616,248.980104125933,249.91585482698,250.427912018863,250.342372692023,251.717312389606,250.91082050172,250.756210890657,251.732369748297,249.024832864728,249.114636585182,251.542799159794,250.04756457201,251.545287264864,252.53149648667,252.117495890972,252.633933307445,248.755564596317,248.412942578467,247.994800696654,248.796515342115,249.658289101999,255.653525147442,252.166645318265,251.381140998996,251.584085481451,253.061964316005,252.431518175373,254.804222554632,252.808683255977,253.478838052217,249.284203988865,248.715512376284,250.226480575829,253.360817707034,251.275386425311,253.797753258173,247.582506784033,251.0773169639,252.93032694644,251.06681063359,253.189985358995,254.804249758533,254.299532126924,253.948504368435,254.676080974981,253.361759352838,252.415036566799,253.021905877228,252.094935926777,254.299641869165,254.023517613801,248.113026778496,248.804471542511,251.610185945207,249.059247248707,255.653589907169,250.17815134603,250.778353982685,249.673826085115,249.101737642552,249.942035050141,250.711023083307,249.984504374166,249.245246865621,250.899621042784,249.397752677584,248.529322416352,252.373876399,250.447330074394,248.94383100391,251.532011649001,250.18132421234,251.274501821279,250.459328833762,250.153038392104,251.021719396972,253.817602760682,251.356169883747,250.886009804185,252.93168480751,250.770045322844,252.53101889754,252.071353593053,252.642457334088,248.772078045922,251.685106283237,252.073144727228,249.70659212884,253.817719525369,248.825415728558,249.813503125324,248.683989412775,249.044529320651,250.605354773165,248.560875284496,250.429917230883,249.738463189201,250.21395361736,250.172988536393,251.533439155269,249.878684695971,248.151205085512,248.829482640582,266.131757998374,245.867285034878,245.771042627228,258.116304867869,264.172380789436,263.19232296506,249.995968968921,251.3767878449,244.627917210781,247.716087291775,248.73520389209,252.653456122121,248.337963204951,246.26286635732,245.314049205396,249.653362761965,248.2713397658,242.855623966576,242.936464587966,242.710503116532,242.544705397404,242.94554658706,241.443919981901,244.079141156812,242.56645778464,242.244243226112,243.324615983836,242.235343555339,249.372354272595,254.804250478306,251.583933452934,252.93148064159,253.177825623508,252.582383230026,252.281473511758,252.714676424131,254.804247678135,253.042415885402,253.85711192663,244.063526611783,250.231444680862,248.844556758948,249.469666584692,249.058589543562,250.78788743256,245.181343586087,243.423958387372,244.928914154527,243.517443416483,255.088570613885,252.165040198587,251.198859455334,253.361101103463,253.305587261474,253.958455665177,254.558176870915,254.299501587673,249.365247224616,250.517175826912,250.704257870329,250.125661595932,251.439904801398,251.837409803607,252.532128255002,251.942516377973,249.55098740427,248.755141790425,244.67335635335,242.083243127785,248.637928164937,241.986901647271,245.902882529698,243.22127264667,244.482328557769,244.665721835824,246.966890669078,248.773582398706,246.154773434633,249.662565048753,249.855855403782,250.780101415542,249.685961154371,248.928571969159,249.258120643604,250.71151696552,250.11898454921,249.708071802771,250.151928333775,251.537832508045,248.789825573604,250.596017342828,251.063607814712,249.341385611899,248.790089025121,248.925206345109,251.463108806422,250.570983549884,250.266922155212,250.155059740594,249.74126578188,248.460042599015,250.970203205569,249.814859824973,249.323567887389,248.834514330883,248.630522262844,257.39277548842,259.390440385907,250.887288230377,242.666717026605,250.268762165371,250.854796374733,249.216001755554,243.792522304983,250.599974271525,251.247254145189,251.749613048692,252.771070340584,249.003415781955,259.408216429703,251.127256431685,255.329847308077,249.886971563932,250.146309778223,255.87161123343,255.871599569216,255.871594664047,255.871595776131,239.784815467192,250.67967094335,250.681589504539,250.698652195349,250.697089567358,254.183629689072,251.371824592727,260.516236664322,244.345638705465,252.161380172121,252.164165158835,248.129353700513,251.444948375224,249.532813169961,251.069641416698,249.236383897317,249.559360916374,250.793739814728,249.928035895752,252.161037910475,248.257973813889,251.070671903514,249.082324274754,249.597533976463,253.127602732408,249.287381047302,248.227687786312,254.623627281238,248.761066609498,249.140376287734,244.887187943285,254.119919495052,248.372037292103,252.217014587981,250.080540868645,246.005379340152,248.41616534307,246.950348895526,244.604394237627,245.586963078481,251.819107833374,245.045626064319,245.348191793692,246.859711511066,249.208040139231,244.203440561781,249.46178283887,250.782161022162,244.295828725293,242.718185651126,250.722876881495,249.922885270526,249.019244317209,250.039456139071,249.486929738159,244.719788961239,244.067097664014,249.748824233513,255.059019000921,249.308257431659,247.207189392938,252.488299475142,249.236343443219,249.530905196646,249.403213465824,248.113570959748,243.193233989461,243.651543161303,249.407130999795,251.535013923311,243.764012779239,244.388783663965,241.107797596485,251.172696371001,243.819923558315,242.891749501191,241.966133119182,243.38258687113,242.953158787695,243.201041393211,244.315769043893,243.220505050182,242.749479682259,241.202577243238,243.944467080875,241.837425986571,243.603840559692,241.959442307144,242.205819688799,244.739213921278,240.401391385233,243.103438043555,243.339570513108,242.320564924685,241.222079310392,241.364920140811,240.851918767194,239.776387214351,240.44991951949,240.178990956395,241.068219984248,239.875186339814,239.417373884785,239.873829129789,239.221740511113,240.048089734628,240.501274172982,250.523031182695,244.735716867087,244.920494495857,239.421741697343,241.634655643899,242.092637185848,244.945523272653,247.473155454066,247.786492575716,244.426772259376,247.923252122441,244.598316864437,244.44451880429,247.149108111697,245.861024450763,253.273532015658,249.160124862814,247.40453846974,254.183407808876,248.820343185937,248.565734718115,249.455221838302,250.119266385897,249.242787714318,249.570551306121,248.911547369424,250.646636832155,239.531760097754,239.218297295232,240.438245988994,241.6812953096,241.244737171326,242.509934663367,242.932643362894,242.70403148573,244.455067670079,242.52715796776,241.751392045467,243.789822392793,240.565798702713,242.500303679683,242.322805518971,241.327068087018,243.261478312849,244.292090821757,249.972747858691,248.920728910254,251.538090751842,250.184214066772,253.814817312133,250.415108208744,240.955485762003,240.460557422712,243.639755846494,244.847979735663,240.87590916031,241.465334761591,243.226595437332,244.522867334806,249.647486910805,248.296202046407,248.811918034509,249.364370852612,249.554150706023,249.8334891759,249.272662775741,250.614091377312,251.312688980418,252.928986626875,250.287732206485,240.186508773816,239.767933344044,240.139012497732,241.034602406217,241.534565942339,241.919001904543,241.300055443108,241.39998960246,240.827361080678,241.948654123531,242.281415666309,241.470246549495,241.379862562565,241.205279764938,240.546776446462,241.125555922422,240.928289777091,242.326294293661,240.321828335885,241.409800901467,240.923673783097,239.762461544186,242.169839592664,241.838688185015,241.562110977526,244.944952354323,242.764474535976,243.969927321631,244.280860636797,245.515368062137,243.6193071012,244.204207826858,244.565573254997,246.178318964465,245.556336476307,255.211621730509,249.143548084595,250.851849920723,252.863535218708,251.636391827203,251.13549282375,251.832459793191,251.018726397498,250.487689955463,241.192565115466,242.880394519845,243.928411878479,244.800471017478,244.873818715657,242.690937708603,242.577592649976,245.880815974995,242.89218784473,242.922994137753,246.280213494132,243.72093171556,253.291301283005,251.07129519085,249.916327880753,250.083985664381,253.814813151769,250.399101077445,251.998810361695,252.588351888118,252.359209197123,252.528435320857,249.762640688037,241.416425233493,243.571720046246,244.515340238359,247.183754568636,252.161734111219,246.712779201819,249.723940399749,251.437897985986,246.781316104424,251.034948319025,256.057454106642,253.757216125541,251.321057391169,252.110278876399,243.970913785807,249.227426570854,257.832687749329,254.073897919711,248.890084087816,248.949793307889,248.866996850909,251.721865628,254.801396146393,254.801390954957,253.140542422688,254.29667662181,253.358127273682,253.854235426636,254.671772131788,252.277592982247,251.492614722298,242.883175545293,241.312491213333,242.037167912202,243.09177921817,247.172152739006,242.812922111909,248.604971651264,249.790092136759,249.795357551145,251.536626432687,250.680427063119,251.28916807714,250.487780639583,251.832916151384,251.149977016074,249.430771504052,251.890565524479,251.038239716072,252.566247605533,252.928551829174,253.649809172774,252.421896313184,251.481502242413,253.358114483359,253.054026317126,251.888057689779,242.11602869789,240.878635578063,240.847896272502,243.72317248648,252.160797794822,243.026454054727,253.400798509533,260.039060940163,252.72289932787,244.155204884976,249.11273704323,247.088553738483,255.291359553727,252.527650436805,248.3885787219,254.296661273058,253.858465610373,242.86764544373,242.633722649448,243.629587747678,242.914311223228,243.051063134032,242.507464361515,241.947857520737,243.827529255177,243.363727467911,242.996352754647,241.924752361485,252.171351671179,245.137026134462,242.926129630128,253.806730459522,248.236071889655,245.736452635809,245.889726785683,258.998259757192,251.142726724364,245.333735527698,242.984662116347,259.920171886641,250.078380398566,251.06098613799,253.148440612024,251.058284449744,248.979962322201,244.358205794915,246.080717996298,242.293873646343,248.910890015307,248.653727231289,248.60416187141,248.428220313516,251.068327286096,249.027116127542,242.360225509722,250.237565009457,248.336776463207,248.805885501072,248.844785100238,249.746890706409,248.715180277834,248.82343365078,248.818414394596,248.470521520572,250.783670464983,255.423911120406,249.512543123573,259.414169854167,246.556183287214,248.518372280919,245.65574187312,243.668208177685,243.132452758175,243.361494096816,250.536859896802,243.63785653157,243.402271702305,245.057026593826,248.83670126821,244.486973916123,250.13112738224,247.729182986863,248.850020750869,257.557037278679,252.162012633855,248.459567840451,249.86331661417,249.297917919175,253.814828273587,251.304429941086,248.529588879162,250.524484345251,250.77630268736,251.159642485705,251.55007209679,252.928860270327,251.755311278507,249.708906529357,251.543643213417,252.705948446517,252.109495989162,252.589689679429,251.829514129869,250.93731230865,250.478753172059,242.713920252908,242.726655282338,244.05869877767,248.724924035352,248.295722486625,249.151234367375,248.961524151952,249.961450128655,253.814869802913,254.801389241425,249.964341816808,249.632925355815,244.178952326607,243.466700102967,246.981186170792,249.377414352584,260.991184622175,248.678263331076,242.901287148982,248.933528387938,249.530396013965,244.21430140287,248.883679508151,244.417948632989,251.294505059369,250.088377450743,249.121641321574,249.223870503027,249.50776246885,248.630936898102,248.179348523718,251.074510156231,256.605989194339,249.689366823535,248.907105282992,250.080797100928,253.814809933464,249.439491266581,249.107348472531,251.1087640546,250.387120573111,251.645210560423,248.221812477067,262.731767486428,249.155874358279,249.247508174616,248.724488026498,248.97956121612,262.142428554735,252.750709453487,253.65341234928,250.777416026566,249.167927261837,249.987688712784,249.876560991373,242.555971245626,249.140598061576,249.09347062689,249.648937190062,251.536035817745,248.944003501982,248.507965784697,250.003722789025,248.791289186181,253.815010768547,248.888702990609,250.584300664953,252.380017567745,251.149645006024,253.183247688205,254.801396122806,254.223174747004,253.622901148659,253.21757184359,251.605286268416,250.665237482061,251.94955677968,251.515018230055,252.295625796877,255.326988178543,255.48896567646,254.296668986948,252.928717867892,253.35787837061,252.360180538643,251.196707446793,252.055839015779,249.278243866679,243.55250332174,242.414523894549,242.70789276586,250.780734867892,250.326100912306,250.898264418975,251.284059012668,249.971643163034,250.768047029353,251.023408902912,249.824579173001,250.603453858341,250.787229044783,250.079522117168,250.288055155037,252.928768682895,249.877258657634,250.774849050477,248.862704582099,250.700217573853,250.023704196225,250.099636066483,249.156013937311,249.103627351117,248.73052135938,243.114142797241,243.579897000139,243.327863054207,243.060554935746,244.35289737411,243.632320767399,248.433499122678,244.198865697035,244.086131091764,248.194496567197,249.224047727638,259.404883905143,249.245240029355,248.684739910344,248.962259592601,249.892291103964,250.424426014522,250.318721462168,251.714406300579,250.907908805615,250.754219520094,251.728742539161,249.054243059971,249.124422539168,251.539034701793,250.021262957614,251.541891354048,252.52873204042,252.114654667019,252.631052416758,248.678230738618,248.345818484389,248.003363142359,248.537026488464,249.321923340829,251.802160742047,252.163347470293,251.380251095052,251.580915134903,253.059103918587,252.428680305063,254.80137057262,252.80591381904,253.475961833928,249.274905732332,248.713178202193,250.22595930163,253.357976313814,250.223476310211,249.965902926395,244.684444378851,251.073606795497,252.927701178199,251.068758096485,253.187133631069,254.801392470723,254.296671837423,253.94564833722,254.673228504058,253.358734952119,252.412396461845,253.019169464683,252.092302157107,254.296761479614,254.020646148265,248.113907547141,248.791199394674,251.605580027489,248.936034152831,252.560308509864,248.846378617697,250.776442442567,249.66477014339,249.106978085537,249.93140923239,250.708278730687,249.978843810784,249.261436886366,250.897961288526,249.369682850731,248.495839703822,251.526853254441,249.892758925966,245.851940897533,251.53049380234,250.177253743169,251.274019809473,250.44889231998,250.150765419144,251.019392788323,253.814761906351,251.352758502391,250.882970856185,252.928788877932,250.767173325013,252.52838128783,252.068526797548,252.639580960904,248.774822488676,251.682306386711,252.070332372606,249.698191326501,253.814853062979,248.801705115445,249.810070617095,248.708032939298,249.041416104883,250.60285480254,248.451704285628,250.428178878093,249.727259192513,249.670855944952,249.728109081094,251.530325561466,249.877672922252,248.127659298737,248.76846024829,262.375038417581,243.548596202467,241.383286155155,252.819723035694,259.976132581342,258.849433208707,249.994872112875,251.373413019867,244.119504045637,247.752217213867,248.714118726907,248.770650343493,247.996911263996,245.865573365216,245.168802132813,249.624832457649,248.262950721695,242.372201429139,242.41585933427,242.482579590559,242.211300325047,242.693671992036,241.2331997164,244.020228341462,242.318158365157,242.186205714918,243.027190113705,242.258972748481,249.375990692768,254.801393473435,251.581137778379,252.928640036158,253.174961373177,252.57959167599,252.278625914135,252.711854946588,254.801391221383,253.039544685552,253.854251552644,244.205750047989,250.227247432316,248.787411670452,249.46388339478,249.054277399602,250.78596674134,244.022831694743,243.406859419595,243.639345423375,243.135731288003,251.173862712682,252.162199947388,251.19619541093,253.358207213884,253.302714151647,253.955604168972,254.555319292513,254.296647936963,249.343287005035,250.514828806436,250.700782498096,250.117840261022,251.436846487534,251.833576185231,252.529246818113,251.939570441949,248.706164096664,248.777025261628,244.368029638548,241.780561518802,248.193825254509,241.680298137081,245.191742255826,242.608412071659,244.161101957151,242.128999905583,243.095078345208,245.730756218556,245.56534719947,249.658599716007,249.846384376655,250.777927837468,249.683314048712,248.927584646375,249.251726492159,250.708606838194,250.114633995649,249.698495785097,250.145422787091,251.53496754938,248.801081009281,250.593865084967,251.059488705015,249.330266403636,248.695046038927,248.69753966103,251.460214353646,250.569652091626,250.264521844862,250.155643824167,249.724095943832,248.498283631338,250.967875996326,249.803048143481,249.295405925405,248.847533593419,248.534494694244,253.642954109915,255.452958975511,250.328608328912,242.130891206102,250.267082600872,250.851271167234,249.198222532978,243.378584191113,250.589610535727,251.251424628932,251.746872242953,248.497942192961,248.786236246417,254.081909322734,249.784203129118,255.326990094995,249.495674283806,250.141498097165,255.868749561487,255.86874150314,255.8687379954,255.868738779319,238.9924491802,250.678024314953,250.679294094241,250.691595950629,250.690467436376,251.109236004897,248.930976550945,256.673566614721,244.241030595368,252.158685267575,252.160605122164,248.110544697693,251.44162547039,249.506129914551,251.066596216924,249.231287082495,249.555755407364,250.786960585334,249.925302769003,252.158448118097,248.22006398299,251.067189023897,249.020095891153,249.598619401554,250.692734706141,248.98831094952,248.199423566534,251.4622606438,248.748581076307,249.143002578058,244.953902819857,250.954824850461,246.513916052914,249.852876023344,248.075325010675,244.939482786589,248.338130371347,245.866896910151,244.759787415695,244.939109105562,249.253568286596,244.533495317112,244.703492114043,245.699725702483,248.389747535805,244.627189632227,249.01909218841,250.77892446354,244.088371590689,242.670271377018,250.716456500465,249.915840427886,248.981034414586,250.037784634513,248.920651777367,244.641508714519,243.866218586689,249.726705157412,251.585873441099,249.15432521042,247.288734184732,249.874624646316,248.980802118155,249.515915328503,249.09589010783,245.934011668703,243.232630707735,243.656654121425,249.401566628959,251.532250271605,244.540297532765,244.379911294262,240.824393500419,248.747503534356,243.728904177503,242.862003428914,242.028346046207,243.453443868435,242.840026561592,243.090986517078,244.312857359774,243.204393055972,242.826547686244,241.143964800215,243.961655988754,241.854981727903,243.529353965058,241.891266578376,242.200588271666,244.745839152087,240.331132597259,243.054035093887,243.294273457437,242.300068322554,241.107976447567,241.395349602963,240.716998063929,239.594973111479,240.355156687732,240.096828561665,241.062073489272,239.789994240148,239.270602889753,239.812089491481,239.118098593426,239.820706767081,240.353757237223,250.517162288932,244.768802480096,244.948652756832,239.395392484664,241.586899384605,242.085184517104,244.937624069504,245.973715480747,246.453165138324,244.776488619336,247.805203576899,244.728016444103,244.47622294193,245.748081324326,245.135354986403,250.397475253886,248.778064058297,245.630824167725,251.211626380878,248.763925232167,248.398115817058,249.175758438285,250.113856754996,249.255467102518,249.545227859891,248.938640852194,250.643226534365,239.304700972077,239.045566763437,240.430311529138,241.710305849038,241.209997870889,242.56373634908,242.96817087233,242.723833738576,244.399637848616,242.556057135929,241.741092336672,243.765746110625,240.506835230725,242.469662710947,242.273429582862,241.205167260151,243.232338535384,244.250823040181,247.756206177651,248.94078273696,251.534422482293,250.178837638917,253.811960503963,250.405438529246,241.011596466935,240.380342190933,243.592948037392,244.886443717382,240.844041103459,241.448816180642,243.207225289743,244.556830140858,247.390677585442,248.266944084399,248.524202760727,249.36668149048,248.897027405669,249.81491705505,249.280645519329,250.613202492007,251.309533350838,252.926041069865,250.277205328381,240.106994669287,239.695115342843,240.011401353748,240.897193931144,241.818444872319,242.152257085855,241.233256313215,241.505943322555,240.871822435485,242.022454125441,242.467169273794,241.644648484552,241.456464455582,241.286477868834,240.532985786613,241.20524173044,240.980836264036,242.517329913985,240.303380400948,241.548552710537,240.943809932269,239.7288152081,242.476646297198,241.977091085353,241.764597786667,244.964901632282,242.710409690094,244.266190554478,244.527200701659,245.205172879326,243.518777043609,244.167320910469,244.846250995332,245.589934861229,245.106110310112,251.908218314186,248.76362962454,250.849851503275,252.860636723731,251.632778351314,251.134602827732,251.828795819006,251.016807793848,250.485706687855,241.283400461659,242.795710726972,243.711610621382,244.528070276358,244.743280650167,243.089574926391,242.594537897859,245.367848675172,242.936424361278,243.173117359485,245.626479947621,243.994323969698,250.678882646374,251.067782821927,249.910688172784,250.077407372664,253.811958327269,250.39584501175,251.996035374087,252.585549558427,252.356361902827,252.525754924577,249.75265003305,241.567489894792,243.700958252331,244.671299987221,245.752739019356,252.158937876631,245.603256979897,248.853921309329,248.960606348441,245.314305892013,249.985218643044,252.527903263792,250.784715213932,248.20609930031,249.362927744333,242.676061926251,248.843088043878,253.824758194303,251.220063705798,248.753256621413,246.774612645946,248.872387234935,251.719075090802,254.798538190583,254.798534492935,253.137688091456,254.293816193583,253.355248291253,253.851384082662,254.668913922737,252.274720305443,251.489324831299,242.944126102657,241.332445908717,242.337137444317,243.449788168145,246.518208623348,243.558039062424,248.648258076863,249.778873666457,249.772722242399,251.533379062488,250.679513384421,251.283898317669,250.489192466043,251.829150921663,251.147075494665,249.409983713064,251.887742199081,251.035531233792,252.56335855401,252.925723159028,253.646948574452,252.419073967687,251.478547465102,253.355235990661,253.051172850359,251.885001872698,242.176248042894,240.812741735671,240.81226353454,243.90362991884,252.158291170022,243.245305801902,250.008050538617,256.34595352177,249.32835431308,244.607523316585,248.894311071324,244.918441961219,252.117219624714,250.234033275544,248.258591302251,254.293805082143,253.855609153196,243.176575242898,242.801499990858,244.155366929497,243.141625258165,243.375977350429,242.84643123919,242.178907481387,244.082950522283,243.64055684611,243.748665955783,242.113710167721,252.165729003834,244.815876316583,243.223638783382,250.788351562548,247.797104103367,244.446079699207,244.639985298747,255.273145554645,248.91145911368,244.336089255821,243.462334280563,255.412236845667,250.072183320023,251.060473201601,253.145577606026,251.05857787539,248.973158581796,244.419521731116,246.261289074762,242.751737045517,248.93854482176,248.662709703956,248.55642660908,248.307626617537,251.065702475803,248.938909425041,242.738268286987,250.232463668879,248.2441514429,248.789308061461,248.599510854344,249.740921685119,248.739305954338,248.823436662186,248.45024185476,248.330367770503,250.78003118753,252.268764036332,249.509586913061,256.266153555812,244.907680048192,248.561382569408,244.776788271934,244.097074521498,243.571494090094,243.884836800484,248.407043673365,243.9904707726,243.660964945389,244.562938583559,247.151251328369,244.287228809432,249.563844387103,245.944605009909,248.598055158016,253.855903880294,252.1591430403,248.498746887669,249.848623173741,249.284506435827,253.811968972408,251.301075095377,248.497954869439,250.523516873465,250.774319484796,251.156827900396,251.547290502253,252.925942371412,251.752206106582,249.703815071919,251.538367077826,252.703106238408,252.106756208366,252.586855044259,251.826738014561,250.934783779989,250.478626824867,242.976736841959,242.963581328497,243.798078770423,248.310514214334,248.281890634696,249.145789830726,248.959311770477,249.961090916869,253.811998467893,254.798533507422,249.946364759273,249.615304051736,244.383796867486,243.839106410425,245.465511312481,248.788383473536,257.213311510277,248.552806079458,243.32295785282,248.589564029172,249.518926564048,243.94692042543,248.813805842996,244.474093549255,249.017804418141,250.084040338669,248.893370431359,249.204484881472,249.506357204618,248.658754474069,248.097691285134,251.070034400398,252.868076541184,249.672909810132,248.698183936639,250.077340239962,253.811954014746,249.426396806888,249.112388341895,251.105557211102,250.383792660825,251.642212528835,248.144334301482,258.434229486391,249.144436410927,249.254189592148,248.749252629198,248.650776518896,258.205122844521,252.747798446243,253.65055471841,250.775615877571,249.178453669479,249.980331049338,249.87087163166,242.833908099545,247.029387643881,249.052093300027,249.630031435642,251.532908876297,248.955988405754,248.544234508831,249.999107682767,248.670269893975,253.81209863379,248.910999559151,250.58178941702,252.377136222344,251.146506684419,253.180404687968,254.798538135134,254.220315014398,253.620049408866,253.214718497831,251.602309424663,250.662569522664,251.946886084408,251.512162925317,252.292894079245,255.324131454942,255.486109692421,254.293810597693,252.925835367699,253.355069238522,252.357194213888,251.193168381622,252.052892915164,249.286210125752,243.986805865565,242.645229943122,243.045373145982,250.778069863938,250.326200024807,250.896465583799,251.280197266622,249.962729221192,250.763901674997,251.020500486593,249.824307780701,249.86121369089,250.789912997298,250.056320157546,250.285251768735,252.925873888344,249.869119496658,250.773811427792,248.852054905502,250.699610097686,250.015063551704,250.092816313116,249.155267785049,248.943098196541,248.614373310235,243.436629919497,243.738487890299,243.921538179872,243.370124178541,244.164717696004,244.051863303402,246.801798186019,244.15618466286,244.347791725576,247.922815852642,247.414188900336,255.566400507254,249.222458628497,248.544397956133,248.939020807674,249.864043518681,250.420772065931,250.290734270865,251.711484301917,250.905034491107,250.752403005039,251.724950193266,249.090067671701,249.13759660608,251.535078437378,249.989826151295,251.538394055613,252.525985018036,252.11181603985,252.628167226486,248.58913932623,248.262923960431,248.012825732847,248.257051209672,248.903792084896,249.465697013577,252.160029000499,251.379760901419,251.577686423482,253.056244605347,252.425847991181,254.798519813195,252.80316429363,253.473080672332,249.263881983967,248.711924660813,250.22595415711,253.355137993977,249.227912716695,247.887218937941,244.070212183662,251.069561474167,252.925122996813,251.071731861276,253.184284632156,254.798535571291,254.293810975026,253.942793062404,254.670377237994,253.355674489481,252.409805165364,253.016459003858,252.089720847572,254.293875900824,254.017771739167,248.111765994246,248.775973832121,251.600593655126,248.789517400857,250.341972861355,248.095211888956,250.774818175497,249.654971886739,249.113758195884,249.919183612957,250.705451028033,249.972576149494,249.277126282855,250.896373470979,249.337240690676,248.457726262218,250.434298067634,249.250826155996,244.93097942864,251.529141493627,250.17357567899,251.27357737769,250.437595614387,250.148462526579,251.017027160702,253.811923797894,251.349263469493,250.87987910124,252.925887147592,250.764349820006,252.525762344251,252.065706203224,252.636701671788,248.77846693033,251.679504158892,252.067535289892,249.688260984148,253.811985572417,248.772313192506,249.806536921061,248.737731590239,249.03852554622,250.600431342435,248.31548492858,250.426699425735,249.713993723556,249.027159798405,249.176627096249,251.527151870201,249.877015877148,248.097273295452,248.69663621677,259.018467354995,243.362218719482,240.128875733458,249.372371437668,256.412557101511,255.286214004043,249.994241803553,251.369927549654,243.995191002313,247.802050392683,248.687838776621,246.984644040919,247.775998912496,246.13522095482,245.149363872797,249.592025335152,248.256544355625,242.666415648104,242.709608790187,242.747096094501,242.231294155025,243.096954701605,241.401380935803,244.386815121224,242.421645578632,242.437611534141,243.251908179666,242.575124702673,249.380608293796,254.798536406033,251.578355686039,252.925793384784,253.172095423652,252.576812276517,252.275781176795,252.709040890062,254.798534780512,253.036669384016,253.851390713093,244.644368384275,250.223404820473,248.719034198929,249.455574738582,249.049975098914,250.784416512644,244.148651745905,243.961048273679,243.846139690818,243.458013446798,248.907802440662,252.159377903012,251.193488163539,253.35530248751,253.299837736184,253.95275370769,254.552461646441,254.293795473571,249.316730778423,250.512353658901,250.697108720255,250.109399311916,251.433714181411,251.829576736856,252.52635303433,251.936625494744,248.142409098286,248.800589251521,244.434125252244,241.828908808176,247.891458110077,241.617448445416,245.048222162402,242.831962647704,244.408139726752,241.810725594248,241.797042872036,244.765048959697,245.388051193593,249.654566910319,249.83574373453,250.775949768613,249.680471010519,248.926596076672,249.243932351411,250.70561133229,250.109890106007,249.688063485079,250.138578041755,251.532160622691,248.812251439948,250.591703023632,251.055103284365,249.317799486182,248.585087798293,248.436946276241,251.457313500763,250.56864134175,250.262227913286,250.157025539186,249.703735381364,248.545284467453,250.965660695438,249.789323458533,249.261000065237,248.864193538948,248.417491497322,250.83321273369,252.322396322824,249.648149977152,242.317435868827,250.265668639843,250.847597852621,249.177271898774,243.678160510259,250.577633350763,251.257172288513,251.744161167826,246.304440557686,248.529230167581,250.577278366266,248.804691094719,255.324132899731,249.00882363901,250.136219959683,255.865887279974,255.865883273297,255.865881404866,255.865881824054,238.491263938784,250.676472823138,250.677090903522,250.683659865135,250.683101658171,248.760487179478,247.451731399144,253.2928601482,244.282988904826,252.156018274037,252.157006539456,248.084482302586,251.438228931188,249.474958572571,251.063544853084,249.226122253641,249.551932327211,250.779851284116,249.921980658581,252.155897477485,248.171565051893,251.06379261391,248.950872009275,249.602348547976,248.834064386786,248.65586930997,248.162210681445,249.04811607761,248.736077879327,249.146812845299,245.224280571208,248.596733006069,245.943364432075,248.249388871193,247.057985172566,245.006860939237,248.2511149655,245.720877678212,244.992871553584,245.173860880007,247.656604227455,244.929777028448,244.97124742529,245.589771063526,247.804499685712,244.867734053459,248.507995208396,250.775695504943,244.151667607706,242.709880285755,250.708550445092,249.909226172325,248.929666030176,250.035623577735,248.355619805278,244.710271407203,243.806943754358,249.703095774963,249.018732117302,248.983593600718,247.399305327053,248.127700296086,248.694286438883,249.498378234771,248.765107622078,245.418207547834,243.39339210877,243.775673187735,249.396318418138,251.529485300122,245.084077274077,245.065506071738,242.227940162391,247.415648676867,243.796492075297,243.036084678023,242.09242638937,243.667217324861,242.867684171161,243.061233624805,244.319278057842,243.351667825645,242.897302644594,241.128048660428,243.95240960785,241.926869880717,243.555860395484,241.884066651492,242.237455973615,244.748095980728,240.332250085493,243.062524867915,243.399649585191,242.310708244676,241.131936540703,241.49774499573,240.661463651641,239.484706886625,240.292400095466,240.039846568814,241.084527017036,239.740325924836,239.160790805844,239.818651274759,239.063320380241,239.760662368574,240.289582479343,250.511011991505,245.065926559087,245.294672395296,239.414603776332,241.580780742567,242.125896400775,245.19309236656,245.611563574985,246.047447307638,245.118270059852,247.686903868336,245.143590076407,244.479177342477,245.540578113003,245.34606707866,248.401256031707,248.336744787486,245.329653617535,248.942285017237,248.702022217691,248.203747475392,248.86548865959,250.108058389618,249.269069132518,249.516307701879,248.970115308953,250.639909947305,239.26044868862,238.948771001704,240.482400496991,241.773337112982,241.198135602224,242.637440111831,243.035648667503,242.793416452746,244.355859663596,242.60988822758,241.748362558552,243.814474432333,240.484100484614,242.485456895655,242.268725938826,241.169286836935,243.292522910166,244.251624614439,246.787488860033,248.964760219373,251.530616271806,250.172981922795,253.809104841807,250.395237551109,241.187424046884,240.438654481886,243.651171129517,245.02675627423,240.84098472998,241.488243337535,243.377256842676,244.540955714112,246.463848240963,248.233323120582,248.190402682583,249.369985110162,248.22089702568,249.793874392423,249.290678095183,250.612634075603,251.306309449371,252.923069519542,250.265674763947,240.185790681865,239.714980861958,240.078285911664,241.032660616783,242.129361931133,242.596904593461,241.361478905691,241.798547862431,240.998251836165,242.33335455399,242.787234120145,241.961396470137,241.697775211468,241.534784801403,240.713334717421,241.391576184047,241.178810507396,242.859105710083,240.420462262201,241.864226956824,241.029935746436,239.767436697603,242.856133698421,242.226817351094,242.04459308797,245.074759965737,242.788556936936,245.030815217531,244.661923504434,245.440200929036,243.583618222721,244.131873366719,245.159510955735,245.648983584006,245.386218622925,249.250120743696,248.323439182038,250.847998097913,252.857730178805,251.62895626646,251.133907136751,251.825047198288,251.015000576518,250.483909791142,241.451616980603,242.864866494325,243.711241352268,244.359109120952,244.646864670293,243.485313771763,242.670659329134,245.085463670541,243.127715895304,243.640063361934,245.576425328376,244.395948715306,248.71827004121,251.064165332736,249.904529736892,250.070279525488,253.809103951659,250.392524079251,251.993277865908,252.582755488328,252.353520231916,252.523121905669,249.741074386427,241.814683340684,243.799082514437,245.004358968675,245.576682855371,252.156151749708,245.601313782081,248.175088171599,247.50560673274,245.328282844041,248.879295430846,249.647785889603,248.622404850674,246.537000483159,247.752434854455,243.441236941066,248.397548931561,250.259903512855,248.984539648611,248.598088314722,246.027238738677,248.878887659493,251.716293882655,254.795680138339,254.795678192873,253.13483433296,254.290954981763,253.352361809713,253.848534054624,254.666055527891,252.271863382805,251.485957487095,243.073652619715,241.451223944477,242.767251687285,243.880393360026,246.153609576792,244.635105766178,248.69850801543,249.766502933066,249.746935586325,251.530067144606,250.67890325709,251.278260892219,250.491242970851,251.8252460502,251.144158557517,249.386309464564,251.884921499307,251.032860221684,252.560465045554,252.922898511805,253.644087392994,252.416257546073,251.475576180895,253.352354118078,253.048319768853,251.881914388813,242.296813078169,240.814477150564,240.842275956794,244.238692905326,252.155819953199,244.328629072556,247.886158187917,252.278486241485,247.815137523099,244.958892178595,248.64493728399,244.736451044449,249.933916977135,248.578778442663,248.108220487492,254.290949031837,253.852752738559,243.638877613318,243.102065069884,244.899311189004,243.589496358809,243.851727104979,243.319227675551,242.573812369473,244.928551807507,244.120920390554,244.816294941432,242.45384128404,252.159716862809,244.874010407485,243.696740265792,248.5352907757,247.549126783535,244.451051900382,244.675847060957,251.888205152632,247.572053414469,244.478908278081,244.356577656561,251.279936300127,250.065475849782,251.060320216116,253.142714004851,251.059323373336,248.96574582426,244.509850533378,246.219012779016,243.599976154055,248.970703781408,248.673804823032,248.503735840986,248.172135201048,251.063079753452,248.839215798219,243.318801436558,250.226923505417,248.133610004606,248.770559009186,248.313483245661,249.734347718485,248.767638202444,248.823723167786,248.059795321985,248.16482736392,250.776320541096,249.595224043606,249.506643313493,253.109795654075,244.623545756072,248.611659424359,244.959986850174,244.752598718135,244.233355138637,244.946171578371,247.270503013652,244.500384490892,244.11131370273,244.961124614715,246.575239485705,244.674905033968,248.917309225252,245.450044362933,248.30428080677,250.570160528719,252.156265144445,248.541590685818,249.832184964279,249.269835226906,253.809109541824,251.297645503371,248.458941694216,250.522840763373,250.772486836953,251.154014974604,251.544534294816,252.923014520803,251.749057433296,249.698460283634,251.532696578463,252.700264725501,252.104034955944,252.584025109869,251.823975076242,250.93231164796,250.478954733129,243.385212217726,243.406207969668,244.658954916667,247.963152133116,248.267981193212,249.140586496988,248.95672419665,249.961097100985,253.809125093856,254.79567782646,249.925985954125,249.595229777864,244.903176618477,244.381605520332,245.12168283275,248.183398915989,253.314156634919,248.412307002486,243.862738720567,248.20173056001,249.506117626677,244.498498779716,248.733836319059,244.866710468521,247.707690555427,250.079423141792,248.634688319922,249.182666686613,249.505254825912,248.691087886116,248.001396763345,251.065327256466,249.907855665853,249.654825236892,248.461464624547,250.07363865602,253.809099447375,249.412212508456,249.119023008036,251.102306364539,250.38039199229,251.63920623682,248.06072945613,253.475496461708,249.1316272757,249.262544995757,248.777470895431,248.27329555173,254.091764044871,252.74487956135,253.647697579272,250.773969691248,249.190901658561,249.972278519974,249.864798066007,243.264599841668,246.193298317435,248.999579075439,249.608427928572,251.529804455791,248.971186059519,248.586194672998,249.995178883375,248.536735053426,253.809178149923,248.93707854416,250.579269557698,252.374249719435,251.143325509383,253.177563975818,254.795680084054,254.217454811242,253.617198432571,253.211865851636,251.599310026085,250.659938637363,251.944244000272,251.509308699038,252.290180552806,255.321274866983,255.483253900443,254.290951979784,252.922952737618,253.352266714713,252.35418866526,251.189550386142,252.049933795105,249.29581875964,244.909277425524,242.952042861582,243.447121583508,250.775341301731,250.326673539885,250.894828250416,251.276278918191,249.953014325311,250.759338773097,251.017558044383,249.824723589477,249.014284299615,250.793410586805,250.030251874145,250.28246062138,252.922975752139,249.860138210096,250.773025531388,248.840610474575,250.699353063256,250.005591741092,250.085458577721,249.154752009131,248.758645792453,248.484320828108,243.968025187613,244.17053643918,244.587440991498,243.775639221801,244.845449262891,244.568713727138,246.230894340466,244.705372437213,244.709941471013,247.747440132619,246.672748650714,251.75164685141,249.196458406932,248.388210823033,248.910983445025,249.832001733759,250.416988603983,250.259192285415,251.708551451508,250.902197175551,250.750709036037,251.721020631828,249.131130727379,249.153222982462,251.530960403779,249.954120545939,251.534821671152,252.523249696126,252.108976954864,252.625276706289,248.490075368966,248.166299122862,248.022264240044,247.957085116016,248.420011336487,247.996249234729,252.156708695073,251.379599773926,251.574409892732,253.053382477989,252.423017101809,254.795670238482,252.80043118756,253.470196333862,249.251383447559,248.711578626495,250.226375691854,253.352302211984,248.370563278531,246.940920115935,244.527337250638,251.065177829715,252.922583475753,251.075531279608,253.181434054171,254.795678917023,254.290950730386,253.939939907026,254.66752668119,253.352584544794,252.407253381997,253.013770156609,252.087180508777,254.290986204591,254.014894844207,248.10695634007,248.759113505947,251.595299438771,248.622780904656,248.710948909743,247.690104263877,250.773489400878,249.644658627961,249.121938327033,249.905509443412,250.702519775636,249.965770158804,249.291031297311,250.89481430996,249.301429639941,248.415388664688,249.138787987318,248.544569551907,244.87334863144,251.527890201612,250.1704251794,251.27302985995,250.425794934124,250.146047846615,251.014595028247,253.809087284258,251.345717463702,250.876753032214,252.922981588824,250.761573271189,252.523149183182,252.062889420208,252.633821185638,248.782948091459,251.676694212788,252.064749701509,249.677124474426,253.809117679149,248.738324388886,249.802858272035,248.771330813964,249.036006854057,250.598060616943,248.156293289969,250.425431568111,249.699083736785,248.295166263998,248.538488937845,251.523928438137,249.876603498641,248.060787496334,248.615219193062,255.720210565768,244.030830314293,240.549612208778,247.515813269142,252.957776466025,251.80487441633,249.993996491669,251.366355995606,244.082907789786,247.864416207639,248.655236814434,246.475341409095,247.628834077724,246.255478431603,244.972917284823,249.55615230911,248.252438555842,243.129560272878,243.219624834166,243.129744349366,242.381245942018,243.549267764383,241.648460791899,244.762448630127,242.61384460671,242.718197702607,243.584167039346,242.914614777861,249.385990518106,254.795679244912,251.575586090275,252.922938550747,253.169227992793,252.574041346578,252.27293882546,252.706233158636,254.7956783444,253.03379070548,253.848529475821,244.830198743757,250.220018102628,248.640650836079,249.444450623959,249.045818077391,250.783239880584,244.67985738461,244.498310567392,244.487725156066,243.925690551336,247.576872021221,252.15657487018,251.190712942012,253.35238839786,253.296958895185,253.949904007907,254.549603973148,254.290944099331,249.286318995928,250.509675214687,250.693261897059,250.100550569052,251.430508160254,251.825449832609,252.523446060989,251.933688486164,247.750919645082,248.82428774294,244.522600782665,241.971972075147,247.673030871215,241.641673574264,245.033444267432,243.228807591634,244.72399930049,242.5352539542,241.867544330084,244.847586534193,245.255750086003,249.650493228943,249.82412734773,250.774151911216,249.67749262954,248.925481836059,249.234962679918,250.702539580757,250.104718018617,249.677146022304,250.131644224881,251.529416510784,248.821966332788,250.589475220059,251.050516619699,249.30448958136,248.463392702164,248.156359569739,251.454405559487,250.567875709961,250.259951035833,250.159006459767,249.680931025322,248.598215788991,250.963537942215,249.774057435092,249.221359062152,248.883934474275,248.282931342378,248.77471710637,249.728424483234,248.864512810791,242.686349637859,250.264468913622,250.843803173211,249.153647308304,244.130331109803,250.564354904592,251.264209216611,251.741468959619,245.511590960949,248.238777349828,248.333621635655,248.067514294371,255.321275706861,248.44819145549,250.130594385999,255.863024868723,255.863024868723,255.863024868723,255.863024868723,238.15,250.675,250.675,250.675,250.675,247.006512434362,247.006512434362,247.006512434362,244.4125,252.153375709092,252.153375709092,248.051881923402,251.434768651542,249.439882431297,251.060474490215,249.220640542952,249.547922045405,250.77247228718,249.918252321195,252.153375709092,248.115357762556,251.060474490215,248.875503941626,249.608063808271,247.384240333991,248.29666378106,248.117050843759,247.112769602641,248.723796940315,249.151031035034,245.387071694215,246.777969179794,246.379231071452,247.167978857453,246.638208541701,245.950425175522,248.156535092345,246.100458846474,245.076486406105,245.818093004667,246.683321605144,245.851147380757,245.805692634948,246.017158657609,247.386290632247,244.761648525155,247.941597500924,250.77247228718,244.321587098384,242.768707785016,250.699439047629,249.903049520473,248.867136114096,250.032972226224,247.788257137484,244.76044328634,243.904703367862,249.678413063796,247.036132923633,248.799450732487,247.526399666871,246.796015312431,248.382607109053,249.47821017859,248.416914649439,246.293541007371,243.565548235773,243.914336971442,249.390978436713,251.526705863763,245.285681440546,245.932076783864,245.725413072048,246.643278301369,244.02626723157,243.247777838394,242.119526079822,243.949468571105,242.974990605145,243.06544898488,244.373186034163,243.532783713617,242.937497088752,241.118408700328,243.947034812189,242.03656776001,243.602212035524,241.893425693493,242.293607996581,244.774435732445,240.352665850375,243.089693732567,243.52764490683,242.325886594608,241.225339150556,241.592712711751,240.641877638059,239.409419931111,240.24185877012,239.990846543616,241.118759741586,239.709098845693,239.073545872993,239.851067922848,239.033717968464,239.777709389385,240.258963205313,250.504682930732,245.344024856749,245.421764082882,239.448188564851,241.576730771874,242.189813306911,245.34398279527,246.026311008148,246.151932994524,245.12155096718,247.570442930773,245.428998900545,244.511632787187,246.137816447081,245.901117740608,246.932818515666,247.845589434041,246.249089681797,247.148536973528,248.634567112034,247.986326549166,248.528869511583,250.101925047778,249.283467422184,249.484464767896,249.005122345451,250.636646238753,239.298443678885,238.892266264597,240.564989123493,241.847764612312,241.180217003733,242.685147571471,243.088138205199,242.843332540788,244.396282041265,242.664742178153,241.758935498138,243.892060586541,240.475198086861,242.500209252071,242.28793269373,241.158976758484,243.35598312582,244.328607759786,246.703285628668,248.992369816734,251.526705863763,250.166694292973,253.80625,250.384568047458,241.386566016937,240.549593129897,243.727091151764,245.143916331177,240.851947440075,241.544587495369,243.607726268136,244.540507315318,246.535081889704,248.195386613407,247.816399292532,249.374190273265,247.549889723698,249.770749165107,249.302489387437,250.612336396469,251.30303128144,252.920076709876,250.253365972147,240.31434770826,239.765926655919,240.220915381399,241.263328734215,242.425113882287,243.132533892983,241.552138741463,242.132677404981,241.144540401978,242.693536980131,243.10814950513,242.333304839118,241.967236041846,241.812275087436,240.960448056745,241.59776434348,241.400803074709,243.184304275769,240.583388963897,242.253482556889,241.138964420867,239.830805357752,243.238357664917,242.492529414524,242.326987285089,245.134170905214,242.930923035426,245.555877482539,244.681387529461,245.71682252254,243.745092096851,244.126378190409,245.267419088075,245.824438304236,245.871302026534,247.082493284916,247.834618422544,250.846270947027,252.854816998807,251.624960964982,251.133366588838,251.821232574192,251.013273878691,250.482253312166,241.633615330362,242.962652175655,243.800663502949,244.24062460228,244.605471695476,243.720509216315,242.740070122358,245.031167365786,243.377287454807,244.20624840813,245.722970227434,244.834113768991,247.214032627688,251.060474490215,249.897859578932,250.062729894056,253.80625,250.389151794519,251.99053470617,252.579968700562,252.35068232409,252.520527242334,249.728204186522,242.087359834306,243.877437538515,245.18822867265,246.173749677914,252.153375709092,246.195276001411,247.621852542939,246.703340479623,246.408072953519,247.776547297301,247.242245761728,246.988086096916,246.529084819943,246.870336370586,246.17634880358,247.899641730238,247.091058392958,247.211621166564,248.42664002355,246.481569383414,248.885749709615,251.713519473173,254.792822038063,254.792822038063,253.13198112472,254.288093112769,253.349469386426,253.845685202961,254.663196979834,252.26901862655,251.482526625813,243.202182498777,241.607090227021,243.202172543645,244.263760520011,245.625288122947,245.718246093991,248.754288033539,249.753214840126,249.718587791285,251.526705863763,250.678524951499,251.27232869021,250.493803514388,251.821232574192,251.141221211235,249.360206273062,251.882102564571,251.030225057318,252.557567918586,252.920076709876,253.641225671326,252.413446469956,251.472589333529,253.349469386426,253.045466924508,251.878800845367,242.399357962833,240.839459045912,240.894695651343,244.663334471719,252.153375709092,245.620931994869,246.611563076285,247.240716560608,246.625028303109,245.693870753869,248.366945483959,246.40942422992,246.898780208639,247.415169517014,247.942365463973,254.288093112769,253.849896400704,244.109698966361,243.448896771468,245.49499684345,244.079619744959,244.304511297583,243.891449028551,242.988895977556,245.524221186307,244.683169621072,245.308711698377,242.824273170459,252.153375709092,245.701615556101,244.194482391643,247.085368880294,247.422847466445,246.241608226528,246.426658200314,247.250471088682,246.808849321164,246.312071803251,245.46554596261,247.131534251653,250.058398622386,251.060474490215,253.139849789906,251.060474490215,248.95751634761,244.630185929879,245.377698994258,244.615009992854,249.006713202706,248.686467017149,248.445466016695,248.025914568408,251.060474490215,248.728743753225,243.965560546166,250.220882408739,248.008511092507,248.749535800219,247.993801512224,249.727338660345,248.799234979871,248.82432784368,247.656161647524,247.981595345063,250.77247228718,247.150146418191,249.503752088741,247.320572725706,246.414509792216,248.667904864394,246.226174426917,245.309484978781,245.034420460198,245.563822868393,246.714321710055,244.995111482089,244.577780713975,245.970616298804,246.662030354001,245.899908836094,248.202998023611,246.430162879904,247.977405437424,247.281685200827,252.153375709092,248.583441993392,249.814137392077,249.25465279585,253.80625,251.294148840771,248.41218850559,250.522416800282,250.770820472936,251.151195196132,251.54181604215,252.920076709876,251.745861141632,249.692999546829,251.526705863763,252.697422400601,252.101331367668,252.581201182603,251.821232574192,250.92985972055,250.479642538965,243.859742575436,243.878723002315,245.993542503331,247.706273582548,248.255621182463,249.135910514211,248.952597735908,249.961396769279,253.80625,254.792822038063,249.903575767029,249.573142493309,245.444900218867,244.948073452766,246.338570144532,247.637313544572,247.210065364024,248.260751714376,244.351960019213,247.797015089614,249.492473159184,246.015536891125,248.641906368159,245.674743635688,246.864307278223,250.07430907995,248.349892042371,249.15946632726,249.504889711181,248.727926762506,247.891397598459,251.060474490215,247.501376374641,249.635244453474,248.200267175439,250.069641040561,253.80625,249.397702068424,249.126861574264,251.099050018789,250.376922392279,251.636237585937,247.977429930211,247.309664193219,249.117687682363,249.273270378601,248.80773801285,247.855564809,247.142547452331,252.741954133134,253.644841409762,250.77247228718,249.205010849023,249.963614797105,249.858336883037,243.919392276239,246.810341054567,248.936748016188,249.584691112524,251.526705863763,248.989627447741,248.631535747672,249.991892050768,248.394631167518,253.80625,248.965810465551,250.57671676997,252.371357224926,251.140113604371,253.174725407651,254.792822038063,254.214594122334,253.614348044442,253.209014008731,251.596285739013,250.657345472797,251.941625720276,251.50644931789,252.287483307139,255.318418456141,255.480398280977,254.288093112769,252.920076709876,253.349469386426,252.351165347653,251.185951331545,252.046948044062,249.307090917322,245.214400766754,243.209652303363,243.831613074687,250.77247228718,250.327386352334,250.893264247884,251.27232869021,249.942878597843,250.7544328059,251.014606817064,249.825827642732,248.07498973947,250.797565690867,250.001730394674,250.279514254992,252.920076709876,249.850345246677,250.77247228718,248.828734535753,250.699439047629,249.995351162899,250.077606792549,249.154547259681,248.552013696703,248.342626020648,244.491311115827,244.675962668365,245.09278228537,244.132875773988,246.021072911569,245.108064172428,246.479082412321,245.946339941646,244.994488430186,247.675704737685,246.754211559517,247.377640683549,249.167263129922,248.222068571161,248.878156292354,249.796824332992,250.413120484,250.224654885092,251.70561474998,250.899410467452,250.749069843112,251.716969269988,249.176645421674,249.170760508021,251.526705863763,249.914774865034,251.531180033301,252.520527242334,252.106135103849,252.622377083342,248.382039223049,248.057174272334,248.031478286491,247.651730877723,247.887388360012,246.980652591087,252.153375709092,251.379716728148,251.57109374683,253.050509403741,252.420179912586,254.792822038063,252.797712618927,253.467311504929,249.237825561049,248.71114768616,250.227132164115,253.349469386426,247.668343351455,246.804430151735,246.095076900364,251.060474490215,252.920076709876,251.080020515769,253.178573419903,254.792822038063,254.288093112769,253.937091248715,254.664676066081,253.349469386426,252.40473466046,253.011100923872,252.084673204681,254.288093112769,254.012015429594,248.103047648682,248.740789011971,251.589751581765,248.437412880167,247.430297126481,247.492164538235,250.77247228718,249.634152767192,249.13152314249,249.890519729897,250.699439047629,249.958421847249,249.30275514505,250.893264247884,249.26285939697,248.369190665574,247.690492448101,247.787742765149,246.212475955715,251.526705863763,250.167823735469,251.27232869021,250.413656118178,250.143356499617,251.01210929885,253.80625,251.342178376989,250.873636069571,252.920076709876,250.758725047969,252.520527242334,252.060065380519,252.630941482743,248.786964898687,251.673885605219,252.061960095185,249.665723065003,253.80625,248.701215505057,249.799034590857,248.802674733971,249.033760435482,250.595678370416,247.983191161194,250.424206469678,249.683502848095,247.562198580517,247.846926623341,251.520686830924,249.876308825975,248.024936290546,248.521684293208,247.146682228889,245.972366192058,246.173397191439,246.706391341735,247.142589709381,247.015140072435,249.993911908162,251.362744056505,244.589277796897,247.938646945842,248.614790626479,246.844509854143,247.545160444972,245.325247703478,244.56975920283,249.517963659985,248.252216954204,243.611630396763,243.72914650236,243.6686108457,242.58800414006,243.846002366606,241.910103716324,244.885499096374,242.837992057175,242.958306674032,243.921833935049,243.235483487512,249.392456348363,254.792822038063,251.572828715016,252.920076709876,253.166360081352,252.571272909872,252.27009549934,252.703428928619,254.792822038063,253.030911593807,253.845667776588,245.103612857758,250.217108456747,248.551606156447,249.430804715054,249.041796821648,250.78236856314,245.669555307453,245.18955878629,245.941554284045,244.402626036542,246.710324135843,252.153783614504,251.18786528669,253.349469386426,253.294079624411,253.94705451983,254.546746351607,254.288093112769,249.253194428006,250.506772669037,250.689310760351,250.091373582794,251.42724057358,251.821232574192,252.520527242334,251.930761667567,247.473288050005,248.84725829683,244.659557263532,242.157604797242,247.508297134569,241.710914072918,244.962716036146,243.638276295982,245.100863405236,246.004620542472,246.312328805996,246.338531106409,245.047195639551,249.646349307826,249.811709845228,250.77247228718,249.674560297291,248.924053096453,249.225326264075,250.699439047629,250.099116842544,249.665840523395,250.124648541734,251.526705863763,248.830204960683,250.587205446097,251.04579975323,249.290607897546,248.335475633697,247.863077683312,251.451487664264,250.567231501939,250.257353136761,250.161313675548,249.656927108818,248.650122277994,250.961517948207,249.757518943237,249.177466175633,248.906295986561,248.129072965384,247.460038816995,247.100673447167,247.99063922027,243.072282223822,250.263421322161,250.839907527972,249.127752469326,244.612690388907,250.549977368444,251.27232869021,251.738779941713,246.519122432154,247.920188934689,246.773356287223,247.49773977964,255.318418456141,247.856037157198,250.124728638953],"Archive1208_field10":[1.15127224541348e-35,4.49954109108892e-44,4.72774213003541e-37,1.66186455280451e-37,1.07357603054126e-20,9.12406579274115e-20,1.52848589434575e-19,-2.75387564249954e-15,7.27578152408726e-19,0.0129842110369998,0.0119143562997429,0.0162578451936184,-0.000637717778123575,-1.62103855071387e-23,-4.62421539928363e-23,-4.12223784179226e-07,-4.66089299766639e-23,-1.77038245092023e-14,4.24111162302613e-19,2.80299245187353e-11,-3.80383528220657e-15,-1.78513162439591e-15,-1.26387133975351e-14,3.05814447119561e-27,-9.50764671100437e-07,6.52223075196778e-19,1.51156252595467e-10,5.5727091624365e-11,-1.53796395743875e-06,1.81641208619276e-10,-5.17777471904128e-07,0.0102874632949244,4.20716712016569e-11,1.29390558408411e-10,0.00493580257493784,0.0220585650674099,0.00203202491481708,-0.00249373680054026,0.00278909998517779,0.0102763501341008,-1.02513279390214e-06,0.0169689904937725,0.00844855541250854,0.00209331515368484,0.0249380969795523,0.00648728260315582,0.00890665317111066,0.00129609669316066,-8.30442613629485e-07,0.00670253438516578,-9.92832365498896e-07,1.01818917673646e-18,0.00135394004122458,-3.65825495331248e-08,-2.41686955665685e-15,-9.31316094197529e-15,1.7019127803279e-10,-9.42037763024809e-15,-1.8878342955064e-06,0.00448495595144566,-0.00089998780036986,2.71872274399731e-18,0.0174780762042311,1.98202092181544e-10,-1.35603978985451e-06,0.00993361921454819,1.21451050926693e-10,-1.73431421769322e-14,2.14134800228182e-10,0.0142459582946368,0.000680404353527369,-9.61071447023456e-08,-1.3318569828245e-14,-1.12999717374048e-22,0.00658886486991098,0.00038290518106357,0.00162389790143378,0.0125286434021521,-0.000448435629637842,0.000838133169180776,-8.97658561710963e-08,0.000123443792671607,-9.00217796552907e-08,-7.26734932023181e-08,-0.000605034272833167,1.88245597773468e-08,7.3679312188637e-12,2.62399532915838e-12,-0.000884210474736067,3.88197525628082e-12,-6.766445770891e-08,-4.95950710484848e-08,-1.83454799116272e-12,-0.000498588118496487,-5.97128126365721e-16,4.62779313003138e-08,1.39083416726419e-08,1.0611896097109e-12,5.67264587644306e-12,2.80535001509387e-12,2.45101313063495e-12,-1.179402247739e-16,-2.10598605613282e-16,-3.82553865181209e-17,-1.10264936593031e-16,1.46365929947338e-20,-3.79012755540948e-17,-6.00488907769408e-17,-3.65512264615845e-17,-3.80728551123951e-17,6.13421813792906e-13,1.67675832086915e-18,0.0064888173045337,0.00649478829775478,1.16932182255957e-19,-2.05121716783629e-16,-1.49753365276905e-12,0.0060074533331022,0.00226737393336927,0.0153549024462171,0.00784097778227291,-1.55447385304646e-06,0.00740476084239945,0.00165752530044087,0.00179415322070971,0.00772458422231879,0.0140483643751483,-1.12872828259595e-06,0.00819374514515379,0.00289036955756987,1.39968051226672e-10,-8.95432030911237e-07,1.90357399675175e-10,-5.08801657796246e-15,5.81009790863044e-11,-1.24842820534379e-14,1.26043883122805e-10,2.25397177182165e-18,-8.39419477062174e-17,4.02349812374647e-20,-1.30206109746679e-15,2.19729438971077e-16,2.34172312671117e-16,-3.080783033973e-12,-2.71837773939284e-12,3.58491733936648e-08,-4.89530824371299e-05,3.62410106880081e-08,-3.3742078979833e-12,-0.000747883340613567,3.21544378331088e-21,-8.82896359965083e-08,3.89751039974459e-12,5.47199742048652e-13,-2.9839764495836e-08,-0.000813333001981125,0.00627989978520765,7.13433100487934e-11,-8.46586249864218e-23,-4.74915855512934e-15,-4.10875891385103e-32,-3.61426815664268e-15,9.02622747075137e-12,4.41696488716419e-12,2.88688037574971e-08,0.00373122102138411,7.67870197042918e-17,-1.08106707087533e-08,0.00199300720721323,0.000308736745753442,0.00708321728200766,-1.25738975114962e-07,-9.02065605258804e-07,6.56664633246387e-11,-1.28117608232101e-06,-5.40367799523452e-15,5.11315894162931e-11,5.28386457365749e-19,2.97715890139204e-19,5.0294172460004e-28,-1.04564923328091e-14,-6.00218022230867e-16,-2.56526687246692e-16,2.43176968234758e-12,-5.02571783067303e-08,-4.39993246478492e-08,0.0028436317935765,-4.86158695865798e-08,-1.65146494449888e-07,5.09231225974997e-12,0.000747577266982383,-2.2470376708574e-07,-7.0050431940513e-09,-4.35843459115632e-08,2.80036447989629e-08,6.33244112816802e-13,-1.27233343489393e-12,2.60076716247281e-12,-0.00122847904890875,-1.77758775155113e-17,-1.29036451642138e-08,-1.55341243516456e-15,9.91808702577152e-20,-9.61141519224846e-09,4.82356758450463e-08,9.90457066603823e-12,0.00336845043785049,0.000193324951671448,0.00876916297299819,0.00281697506674409,0.00529533280893318,-4.01921813088445e-08,-0.00128655003872094,0.00797871829714555,0.00694297595986007,0.0102646716573856,0.0239937651270514,-1.425355213742e-06,9.65952054070842e-19,1.32725772296716e-27,2.38668227480909e-19,6.56242751543796e-19,-3.77584063690131e-23,4.22284994202021e-19,9.63724364697576e-19,-1.96327652252177e-12,-9.9406451811109e-08,0.000735067480987844,0.00297742170493461,0.00153861895246448,9.62676683000094e-05,-1.85662273926097e-07,0.00420102983786106,-3.616466922953e-07,0.00276135453519454,0.00828961001984565,0.0037370815446578,-0.00452615047714096,-3.60841279079085e-20,-6.30124681616305e-15,-5.84274999531403e-15,-5.52664164440639e-32,-3.19873697550857e-15,-1.32950424779367e-23,3.24399843740119e-27,-1.51779700348345e-23,-1.07748321282165e-23,-7.75999782023874e-15,2.13759983796344e-11,0.000216080177528464,0.00849541639089113,0.00308606740238958,-9.6962822976165e-24,0.00707038248137617,-2.30330833538962e-06,0.010440652731379,0.00591233357650774,-9.46060176945512e-07,0.00277672968984728,0.00952316374426571,0.00675569099813292,0.0188172137456373,0.0104321318798491,-6.89027514588216e-07,0.0201339599164148,0.00269735163042099,9.11558227898267e-08,0.0093520898725496,1.40725437299931e-10,1.69559599857668e-19,4.23453713403368e-36,-1.37036918787518e-32,6.48027676231233e-28,-2.90166304522758e-32,1.10465219623772e-27,-8.29183738675866e-32,4.88307774040096e-36,-9.35705455697629e-24,-1.14554848896838e-22,-1.73509002819104e-07,1.0531595066589e-11,-1.10526669739217e-08,-3.12630828004291e-07,0.00715803355500288,0.00581702922816645,6.43291170833077e-11,-3.39712643171676e-15,-1.05706052891294e-14,-3.37478521543214e-23,8.49156667065185e-19,-6.97636556736675e-23,7.42050238175441e-19,-5.31110666403318e-23,3.3838470807678e-19,-6.59053038565923e-15,-1.56011737075405e-23,3.34721918394631e-19,-6.46789834938361e-24,6.23632112703047e-27,3.08043774791014e-28,-1.62393710459046e-23,1.83410566404894e-19,6.02251315559714e-28,8.06088781201675e-28,-8.18255136313362e-23,-1.0133108751353e-08,4.54220813166957e-13,-1.57036867752638e-15,0.000906288363677302,-1.51824425096197e-24,0.0095125195223978,0.0048089240519068,0.00935558830461726,0.0238362860850069,0.0118123923491309,1.88962276269181e-10,0.00161027278038374,0.0217589956062755,-2.00375367330694e-06,-7.82489753839368e-07,-1.22144221359146e-32,-1.24658402092622e-32,5.36813447696419e-05,0.000189871509720807,0.00397330155691544,0.0025572841359612,0.00108810509547278,0.0061735621139002,0.00118236594155657,0.00881755746768409,0.00160362796645321,0.007270242083672,-0.000548184329065656,-3.49536987010009e-22,0.004140414325489,0.00312624739359036,0.012471108616416,-1.20898311959112e-06,0.00392663909985768,0.00730688028033778,0.00853056113773207,0.0153484316038662,0.000669941025204742,0.00181693820331532,0.0187850568764443,-4.59998739681063e-15,4.99382874806685e-19,-1.64370977081021e-31,8.08063828641477e-19,1.78134972263831e-11,0.000472389648607068,0.00801245632238213,0.00408033585739688,3.81239823622063e-11,5.60017604372559e-11,7.08862499193942e-11,-3.57128464426591e-07,2.83647494783228e-19,1.73632983594086e-10,0.000888790151731787,9.52858804362446e-19,-7.29848667301286e-07,5.07492211583008e-11,-1.06000939935445e-06,-5.18237182761452e-15,6.3778079201191e-11,2.31780020863003e-11,-7.25473141168643e-07,-5.38406260030637e-07,3.97763749276513e-19,0.0107938696646218,-1.15014726549513e-15,0.00235051484567122,0.00615597467988983,8.29655798411953e-11,0.00419723247316589,0.0079372333720315,0.0111828819511021,0.0118336582149364,0.0303056609759185,0.00285115858764614,0.00147575364545031,0.00463373175395438,0.0198549318978578,0.00373848106396823,-3.37186844793262e-06,0.00227061619725654,-2.08094928307029e-06,0.000594508482924047,8.06728440519593e-21,5.13969280200998e-11,-1.87562009499083e-15,-1.54970327069919e-14,-2.27496010749236e-31,-1.93789239766603e-23,7.19002212370117e-11,2.26220539652906e-19,6.62887561518299e-20,2.08054458643843e-19,-6.54681920339463e-23,2.99723136815659e-28,-3.05183883130042e-24,-2.23280082374725e-15,-8.27109348582347e-23,3.80426237862458e-27,1.61819186634166e-27,1.03624009242332e-28,-2.94538586797272e-23,5.8323514648069e-19,7.17512080718003e-19,0.00327589022471727,0.00234197058926938,0.00292152037782618,-1.27726513372476e-06,-4.84987413964554e-07,-3.21211131694546e-15,4.52822710972641e-11,-6.80424730693213e-16,-8.90567746873554e-32,3.12857205448288e-35,-4.55551597392853e-15,-5.11326602073828e-15,0.00723001363130861,0.00512206619042776,0.00548172733266045,-1.54544486199616e-06,0.0121594678924777,-4.95951947740741e-07,0.00169397358583096,-8.86332989813901e-07,-6.08415959991998e-15,0.00441912226063205,1.24143930559435e-10,0.0062202096470475,0.0195583564738737,-9.31608209175712e-16,-3.4949443931247e-08,2.28664654977928e-11,-6.64013155706366e-15,2.9104785056677e-11,-8.25085068476173e-07,-2.3728698016271e-23,0.00102966725596114,1.88461644796405e-12,-9.88854092955903e-07,-5.78089628038053e-15,2.46674885152695e-28,-8.30896380733245e-15,1.09902953840575e-10,5.34473259444271e-21,2.87915406912626e-19,6.18443544304161e-20,-7.01046415491883e-07,0.0118444734195787,1.78047434328922e-11,8.42819023105815e-11,7.97524400044842e-11,-1.47324051834842e-06,0.0114471912863309,2.80551042188825e-28,-3.88787399844809e-31,3.68631841724614e-19,6.54333352573694e-11,-3.59971402851167e-15,-2.46971699929417e-15,0.00684572677460555,0.00810609138184246,9.40760019654346e-11,-5.58653034399535e-15,1.04627787501323e-20,3.69713883737176e-11,8.17399379401614e-11,-6.34604700038252e-15,-2.89646295619558e-08,1.33894841300898e-27,3.53968856704218e-10,-1.24779001623723e-16,3.20130295105233e-27,3.36900176870845e-20,-1.27791014728936e-31,7.15156102738165e-36,2.80183003007644e-35,-9.07338298684165e-32,1.6158662369743e-27,-6.55305569360987e-24,1.43414275622475e-19,-4.15775395360336e-24,-2.08687655437328e-23,-3.3495497430443e-24,-2.02305099318264e-39,-2.01642763810152e-39,-7.8710064654594e-32,2.15052598854935e-27,1.23715666443424e-27,-2.24432231412834e-23,1.22418291903769e-19,-2.54954469010388e-23,-2.93130263702799e-15,0.0125245551003137,-4.86422119618488e-07,-8.60171577376114e-08,3.81725874661238e-19,6.31262449143251e-19,1.96718406370153e-19,3.77361177898756e-21,-4.10235049292266e-15,-1.14463032687684e-16,-1.27199993164384e-16,-3.11683921780489e-15,-1.95661638486823e-06,3.2111606305733e-18,-1.86679481261223e-14,4.70097143234813e-19,1.63109568353163e-28,-7.05676172781755e-16,-4.17244340985417e-20,1.61424757052566e-11,1.80338794560478e-20,2.5928480641558e-16,6.2376349229925e-16,-6.05089861973486e-12,5.78531207222668e-11,1.84313195301796e-07,0.00183909244376058,0.0024896045138338,0.00783737535648061,-0.000253773910347849,0.00614371060459441,0.00745554078980303,0.00205736849163012,0.00152162109975823,0.00475647664395799,-9.98713788805632e-07,0.0182120106234343,0.0005434889768496,1.02428041576359e-12,-2.42542664486677e-08,5.81248048303574e-11,-2.51014076567407e-14,-5.82360101772526e-15,-2.99668747165577e-14,-7.25060228879741e-23,4.77767887499551e-19,7.64379254843206e-19,3.17041768914351e-19,1.63588406391589e-10,2.4460783487822e-10,6.32627489140751e-19,-1.83155877855658e-14,1.35102522459864e-20,-6.25542689391347e-25,-7.1679520336038e-25,-3.02734349714691e-24,9.77322038446574e-11,-8.22311878104272e-07,-4.04694139078414e-07,-4.28583227896787e-07,-1.22317875027263e-06,0.0243924306032054,-6.15893076142228e-23,1.82816530085409e-18,-2.894172168061e-23,-3.97270275658049e-24,-3.09462919434721e-24,-4.89640435849121e-32,-1.94858951353004e-23,1.37456402893441e-27,-3.80789787001852e-15,3.637109772979e-11,8.28307349731392e-19,1.10054940331412e-28,-1.06276535767646e-06,0.00752892129240027,0.00530502584912242,3.25561752532868e-19,1.41589062967363e-26,3.65298822076152e-18,-3.78099516435835e-24,-1.57824451390592e-32,1.53864651089872e-28,3.34712869447222e-28,-1.345141532736e-31,8.43404322431753e-28,-1.14851717375329e-23,-1.4952107514128e-23,-7.6695417844191e-23,1.06080659209101e-27,9.48285793925588e-28,-5.61640933374474e-07,-1.35781025980405e-14,-2.00146214703392e-22,1.07920219777283e-10,-1.12670316109495e-06,-1.1039038866632e-06,-1.01033239381532e-22,-8.99036889006888e-15,-3.73787097482568e-15,1.9390538703075e-18,3.73627445546002e-19,4.40509544066336e-19,1.44156453222614e-10,3.64112165899759e-19,-1.44181084367184e-14,1.50769914860904e-10,-1.2713460768727e-06,-2.20054595267789e-06,-0.000996554757821537,4.27526559261008e-19,-8.82294346967561e-15,8.87786476161018e-19,-8.31010948261891e-15,1.48565820344007e-18,6.75800538359566e-19,-3.85457529402437e-31,-2.00017200778342e-22,3.83355190066151e-19,-9.37178771815658e-31,9.68024968293706e-19,9.91133937316092e-27,1.15741002285763e-26,5.20604883304342e-27,7.43080727696162e-11,-7.59039407236084e-23,-2.52820331343014e-23,-8.89610612977452e-15,1.71505690761554e-28,2.2280784552315e-11,-7.13471205731082e-15,1.95851915785881e-10,7.2871622058548e-11,5.25285671588366e-19,-1.40789763952621e-06,8.79252758924117e-19,-1.21349929884171e-14,-1.72725112736811e-06,-1.55097151850752e-06,-9.63998931265019e-23,-2.42049886938908e-15,-6.03667508083227e-07,1.20454046839152e-10,0.0180282431611371,0.000696386343599332,0.00638421082071522,0.0115049742226557,0.0171664466337182,0.0157659023154571,-1.21965001712604e-15,7.4011266790767e-20,0.00257323452273148,-6.28523150634642e-07,1.88526488970958e-10,0.018717927175603,-2.4322903861629e-06,0.0122472682768642,0.00358393894971212,-1.56107306306802e-14,-1.00239872496503e-06,0.00149544378742483,0.000915045928912012,0.00218229982216315,-6.19781426608208e-08,-0.000253458575711488,1.12436438694422e-11,0.0027018134115137,-7.4390898885201e-08,-4.7562004040808e-08,-0.00103122059746311,-8.39659635500402e-09,-5.23779352616325e-15,-5.17285027017829e-33,-3.21574456263344e-23,3.57019921802612e-28,-5.15570921734501e-31,-3.92418683664795e-24,5.81048761082526e-27,5.93280071361846e-27,2.12247838573839e-35,1.16421780055323e-27,-3.90782832797846e-31,0.00259240044017041,-6.43773243348973e-15,1.65334410012451e-10,-2.05490543757968e-14,3.46629893651978e-11,1.4568445220117e-18,0.0106728339761324,0.0065513852339075,0.00590237311889795,-0.000308358483183293,0.0227238705543261,-7.4969883668964e-24,9.2383039890463e-20,5.19775921463683e-28,2.02574287166994e-28,-1.61859750908917e-32,2.0497791086773e-35,-6.86656728917271e-32,3.74945272741441e-11,-2.2123128810286e-22,2.1662278129545e-19,-1.79809340653968e-15,-5.50483665068058e-23,-6.61088573957878e-23,7.85343891682161e-29,-2.6124725834507e-24,-1.86514628965756e-06,-1.35730045598638e-14,0.0029882984516074,1.28653217537116e-11,-1.64704693931838e-06,3.44011873688061e-12,0.00205236340914685,0.000613643007400937,0.00772486279199983,0.00535740447837092,0.00310301521565353,0.00759674418430627,0.000718202417722876,-5.23922205803016e-16,-1.25444227062167e-15,7.07086214423517e-19,-1.03864541311162e-14,1.54867555928969e-11,-4.72072484767234e-15,2.23699624110123e-20,1.33222543523889e-18,-6.36229179224313e-15,-5.33706364163328e-15,-4.55802268644948e-23,9.20780201019181e-11,5.54427626533969e-19,2.97839788637661e-20,-1.11866184233949e-14,-5.51862759646538e-07,-1.2427546232076e-06,-2.52296132740879e-23,6.09465626666277e-19,-3.25551965166702e-15,-7.30365385010725e-16,-1.10990208206712e-14,1.70057496525526e-10,4.43723479794955e-19,-6.68622203884659e-15,1.95581363093553e-11,4.15474183039314e-11,-8.06831131826121e-07,-1.46900734135938e-06,0.0107597297477184,-1.54406525765513e-06,0.000177107196091047,-8.51658085281801e-16,6.25176360700073e-20,-9.37766859231079e-12,0.00249201322893996,-1.34751448489935e-14,1.57041336225567e-18,-1.80918126748193e-23,0.00158493174708047,8.27476469252436e-11,0.0182257130570487,-1.11090768763343e-06,-1.35696808678591e-39,-1.7835594742213e-06,-1.7857824024213e-15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive121.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive121.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive121.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive121_field1":[101942.647730868,102127.146530103,104012.515996116,103822.264158041,102966.510940361,102036.837049719,103064.425698975,103916.251133831,102875.51754936,103485.448435385,102451.830491208,103390.439082788,103013.927265957,102521.588054824,102594.54922599,102082.553363975,102601.992388654,102867.277260596,102673.555436041,103348.428871214,103085.312064204,103537.835974846,103964.232406932,103437.540585108,102407.301355952,101989.723628389,103869.015626326,52633.5982969187,52562.1887244507,52283.1535732814,52266.1081547406,52364.3245476117,52640.3182979716,52369.4055746979,52213.0735763019,52399.063264122,52255.873765563,52491.033697239,52259.8292790702,52351.2894737176,52475.6161026332,52479.3720707155,52615.3846400995,52423.1899128958,52390.8013468052,52427.5639228747,52331.6898986675,52350.9584086471,52303.2100850742,52235.5255360939,52251.9286486241,52511.5825387573,52629.5505877779,52221.1147007889,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05],"Archive121_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive121_field3":[271.856472876669,271.944623282419,272.845420925044,272.75452181464,272.345657401033,271.901474940143,272.392439416615,272.799427202022,272.302182297831,272.593596959095,272.099751787486,272.548203097366,272.368312119425,272.133080771536,272.167940385088,271.923317421871,272.171496602319,272.298245227232,272.205688215977,272.528131328817,272.40241856866,272.618626839391,272.822351842777,272.570707398523,272.078476519805,271.878964944285,272.776858875454,248.297443046784,248.263324760846,248.130006485084,248.121862472404,248.168788603732,248.300653749628,248.171216232536,248.096523447827,248.185386174927,248.116972654354,248.229328092326,248.118862531806,248.162560665895,248.221961826389,248.223756364413,248.288740869613,248.196913479644,248.181438770571,248.199003307632,248.153196320434,248.162402488603,248.139589147193,248.107250614474,248.115087744206,248.239145981251,248.295509119817,248.100365361103,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive121_field4":[102786.407031746,102916.364726611,104220.617624724,104091.676445861,103503.311478275,102853.590217662,103572.2378412,104155.08371869,103441.096919926,103860.69900453,103144.722190911,103795.470076806,103536.13120704,103193.507702916,103245.556789247,102885.790890732,103249.16376882,103434.452436031,103299.651348486,103768.131752553,103585.7707556,103897.94843311,104187.407522816,103827.468818965,103114.019936786,102819.677655166,104122.994486016,52447.2688757716,52363.9313186414,52421.6817721662,52325.4245358565,52240.5033576543,52491.1256824983,52283.2232605173,52249.5038273733,52280.8605066476,52193.9993531906,52326.8017674036,52170.8492496811,52230.3068733182,52318.8064471983,52350.0373616235,52456.1145437516,52240.2815027296,52261.1965192816,52271.9487999203,52300.9670059248,52253.0715430169,52306.3821978282,52310.6076862443,52170.7509637303,52353.4856389659,52454.5828467304,52250.5140315587,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05],"Archive121_field5":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive121_field6":[272.259606799687,272.321698388252,272.944848363461,272.88324244905,272.602131618861,272.291705789614,272.635063469279,272.913537371567,272.572406555149,272.772885334224,272.430803722365,272.741720055808,272.617812330167,272.454112614867,272.478980787982,272.30709072658,272.480704141816,272.569231933125,272.504826253457,272.728658266867,272.64152926689,272.79068248118,272.928981138469,272.7570085136,272.416134704628,272.275502940834,272.898205678937,248.208418000846,248.168600725581,248.196192915512,248.150202836052,248.109628933423,248.229372041327,248.130039780467,248.113929205625,248.12891089663,248.087410106637,248.150860853991,248.07634937873,248.104757225666,248.147040825226,248.161962427914,248.212644311396,248.109522934892,248.119515776054,248.124653033885,248.138517441913,248.115633799817,248.141104729015,248.143123595912,248.076302419365,248.163609956505,248.211912492466,248.114411864099,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive121_field7":[102804.311200844,102932.024131489,104221.535374792,104093.346680943,103510.32901375,102870.332849935,103578.516329397,104156.351597105,103448.935104614,103864.015503959,103156.635556798,103799.365492573,103542.793263841,103204.686029985,103256.007762369,102901.943915297,103259.534714144,103442.370203168,103309.321154968,103772.390227404,103591.918358688,103901.049013819,104188.5684661,103831.120075826,103126.466048094,102837.05971844,104124.495406814,52467.366432601,52359.1295099485,52610.3552172821,52450.8942634862,52248.7258411586,52541.5268280175,52322.2915990515,52343.9619016645,52302.1385788489,52224.9146543507,52332.9122087705,52182.2637191102,52238.189093684,52327.4353404359,52380.828597822,52493.4790774392,52217.3840374509,52271.1094719804,52270.6456750001,52373.9001722573,52278.5828128103,52398.6140855762,52439.9146957776,52186.4005740356,52368.9164943088,52482.7478801549,52342.1152180202,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05],"Archive121_field8":[0,0,0,0,0,2.72657138411016e-06,0,0,0,0,0,0,0,0,0,6.93020266187963e-07,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive121_field9":[272.26816110886,272.329180187047,272.945286848921,272.884040459122,272.605484478619,272.2992700311,272.638063224748,272.914143142429,272.576151507221,272.774469901557,272.436495727089,272.743581219576,272.620995348228,272.459453430476,272.483974086177,272.31469777665,272.485659204082,272.573014908346,272.509446323444,272.730692894125,272.644466487668,272.792163886201,272.929535817535,272.758753022373,272.422081246103,272.283807796675,272.898922793509,248.218020273579,248.166306502603,248.286337896456,248.210150149778,248.11355749697,248.253452856196,248.148705971835,248.159059675903,248.139077199641,248.102180914644,248.153780319527,248.081803019164,248.10852321724,248.15116356447,248.176673959781,248.230496453626,248.098582913259,248.124252017191,248.124030422838,248.17336367523,248.127822653039,248.185171565015,248.20490429803,248.083779538479,248.170982558198,248.225369269066,248.158177361691,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive122.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive122.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive122.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive122_field1":[0,0,0,0,168.476439087692,0,0,0,0,355.29826017215,369.893377782703,-114.822972139437,143.023607129381,92.4967728137443,0,0,223.46522314498,153.301454843763,8.48785370062645,0,0,132.100034882847,0,0,0,0,0,0,0,0,168.476471741562,0,0,0,0,355.297949107121,369.89437178003,-114.822752702012,143.023473182927,92.4966590484143,0,0,223.465161904281,153.30163430408,8.48655772248582,0,0,132.100004823214,0,0,0,0,0,0,0,0,168.476480080515,0,0,0,0,355.297866894268,369.89452632906,-114.822717851173,143.023439532565,92.4965926820371,0,0,223.465122431891,153.301671089782,8.48620308786627,0,0,132.099987083244,0,0,0,0],"Archive122_field2":[0,0,0,0,1688.01156866515,0,0,0,0,1470.49629493114,1154.4228964665,1361.48235898425,1442.20848262885,1370.68199545912,0,0,1524.17045971933,1448.19039150332,952.260912306767,0,0,1458.90771377874,0,0,0,0,0,0,0,0,1688.01181937931,0,0,0,0,1470.49532300933,1154.42427058102,1361.48133313483,1442.20854427684,1370.68327176451,0,0,1524.17123943587,1448.19041690654,952.261498710491,0,0,1458.90647191332,0,0,0,0,0,0,0,0,1688.01188835366,0,0,0,0,1470.49498687888,1154.42385910706,1361.48094805947,1442.20852987073,1370.68315129114,0,0,1524.17117182038,1448.19037355812,952.261078263667,0,0,1458.90607628616,0,0,0,0],"Archive122_field3":[0,0,0,0,-2.69171750820422,0,0,0,0,-7.37599517955833,-7.99349821979348,-7.42911328943808,-3.84646522146978,-5.75855732279494,0,0,-4.36175572355069,-4.0146629025982,-7.34168652203978,0,0,-3.98663557631367,0,0,0,0,0,0,0,0,-2.84614474513308,0,0,0,0,-6.5557891024437,-10.1369647722582,-6.77297441836487,-3.61737958385964,-7.73437524467626,0,0,-5.40070416978307,-4.02265125862265,-8.44555647438932,0,0,-3.35318712849087,0,0,0,0,0,0,0,0,-3.00057096117026,0,0,0,0,-5.73558270683773,-12.2804321028856,-6.116835247726,-3.38829310316349,-9.7101932275218,0,0,-6.43965242979765,-4.0306387003822,-9.54942697303856,0,0,-2.71973783861188,0,0,0,0],"Archive122_field4":[0,0,0,0,1696.4004868598,0,0,0,0,1512.82867912809,1212.26120569265,1366.33587396384,1449.28805102975,1373.81146691938,0,0,1540.47113609742,1456.28735612789,952.327038957074,0,0,1464.88157535085,0,0,0,0,0,0,0,0,1696.40099163925,0,0,0,0,1512.82388466166,1212.27884615539,1366.33142326272,1449.28750926152,1373.82243539353,0,0,1540.47519074924,1456.28742232548,952.336763446886,0,0,1464.87874888292,0,0,0,0,0,0,0,0,1696.4013272188,0,0,0,0,1512.82020662223,1212.29831976147,1366.3279416513,1449.28693791732,1373.83485497483,0,0,1540.47911088571,1456.2874051758,952.346768973488,0,0,1464.8770402276,0,0,0,0],"Archive122_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4272990.75,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2136495.375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive122_field6":[-897.730635622167,-840.445083892174,-211.86078228159,-274.562000169809,-556.413569663051,-863.761800848196,-524.903603206117,-244.644323440716,-586.60138615063,-385.193748493845,-727.126185367417,-416.363114449408,-540.866816873521,-703.362699852345,-680.462092621303,-849.94050596776,-677.025164849844,-589.530401310309,-652.999201608005,-367.649621517386,-228.924011680947,-401.020131629368,-743.659420411247,-879.872933575668,-260.399718386965,-430.022575535453,-897.730635622167,-840.445083892174,-211.86078228159,-274.562000169809,-556.413569663051,-863.761800848196,-524.903603206117,-244.644323440716,-586.60138615063,-385.193748493845,-727.126185367418,-416.363114449408,-540.866816873521,-703.362699852345,-680.462092621303,-849.94050596776,-677.025164849845,-589.53040131031,-652.999201608005,-367.649621517386,-228.924011680947,-401.020131629368,-743.659420411247,-879.872933575668,-260.399718386965,-430.022575535453,-897.730635622167,-840.445083892174,-211.86078228159,-274.562000169809,-556.413569663051,-863.761800848196,-524.903603206117,-244.644323440716,-586.60138615063,-385.193748493845,-727.126185367417,-416.363114449408,-540.866816873521,-703.362699852345,-680.462092621303,-849.94050596776,-677.025164849844,-589.530401310309,-652.999201608005,-367.649621517386,-228.924011680947,-401.020131629368,-743.659420411247,-879.872933575668,-260.399718386965,-430.022575535453],"Archive122_field7":[103.772570748037,97.150685815235,24.4899050401838,31.7378102704469,64.3182534179754,99.8459660740554,60.6758799780244,28.2794964936924,67.8077938189387,44.5262130210987,84.0516637393089,48.1292149745226,62.5211369559359,81.3047395685372,78.6575592343055,98.2483027618131,78.2602698735916,68.1463713619333,75.483004766029,42.4982114294907,26.4623175988881,46.3556531654449,85.9628119559348,101.708321656511,30.1007308059087,49.7081712178387,103.772570748037,97.150685815235,24.4899050401838,31.7378102704469,64.3182534179754,99.8459660740554,60.6758799780244,28.2794964936924,67.8077938189387,44.5262130210987,84.0516637393089,48.1292149745226,62.5211369559359,81.3047395685372,78.6575592343055,98.2483027618131,78.2602698735916,68.1463713619333,75.483004766029,42.4982114294907,26.4623175988881,46.3556531654449,85.9628119559348,101.708321656511,30.1007308059087,49.7081712178387,103.772570748037,97.150685815235,24.4899050401838,31.7378102704469,64.3182534179754,99.8459660740554,60.6758799780244,28.2794964936924,67.8077938189387,44.5262130210987,84.0516637393089,48.1292149745226,62.5211369559359,81.3047395685372,78.6575592343055,98.2483027618131,78.2602698735916,68.1463713619333,75.483004766029,42.4982114294907,26.4623175988881,46.3556531654449,85.9628119559348,101.708321656511,30.1007308059087,49.7081712178387],"Archive122_field8":[1001.5032063702,937.59576970741,236.350687321774,306.299810440256,620.731823081026,963.607766922252,585.579483184141,272.923819934409,654.409179969569,429.719961514943,811.177849106726,464.49232942393,603.387953829457,784.667439420882,759.119651855608,948.188808729573,755.285434723436,657.676772672243,728.482206374034,410.147832946877,255.386329279835,447.375784794813,829.622232367182,981.581255232179,290.500449192873,479.730746753292,1001.5032063702,937.59576970741,236.350687321774,306.299810440256,620.731823081026,963.607766922252,585.579483184141,272.923819934409,654.409179969569,429.719961514944,811.177849106727,464.49232942393,603.387953829457,784.667439420882,759.119651855608,948.188808729573,755.285434723436,657.676772672243,728.482206374034,410.147832946877,255.386329279835,447.375784794813,829.622232367182,981.581255232179,290.500449192873,479.730746753292,1001.5032063702,937.59576970741,236.350687321774,306.299810440256,620.731823081026,963.607766922252,585.579483184141,272.923819934409,654.409179969569,429.719961514943,811.177849106726,464.49232942393,603.387953829457,784.667439420882,759.119651855608,948.188808729573,755.285434723436,657.676772672243,728.482206374034,410.147832946877,255.386329279835,447.375784794813,829.622232367182,981.581255232179,290.500449192873,479.730746753292],"Archive122_field9":[271.856873088832,271.944460920381,272.845784995342,272.754688012005,272.345932486375,271.901105987272,272.392223146539,272.800222847083,272.302276876027,272.594587495254,272.099070764561,272.549264923809,272.368643155998,272.13271001219,272.168125298862,271.923457357734,272.172027340645,272.29829003166,272.205646349967,272.618312935827,272.82293064974,272.571766580473,272.078390232348,271.880073598765,272.777333630132,272.527645544512,248.296272281474,248.269073684024,248.142871881045,248.130132615222,248.150202876294,248.286193311653,248.176310583676,248.131545533741,248.194108960126,248.093589365083,248.219736096454,248.104547048864,248.148019679958,248.208771196168,248.221305072971,248.279636002636,248.196320682979,248.164502503682,248.194995476439,248.138255639975,248.147184802239,248.094997684773,248.242868392995,248.290433137539,248.135825397297,248.151547590759,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive122_field10":[101943.485374925,102126.806706358,104013.277995252,103822.612009127,102967.086693984,102036.06483136,103063.973045707,103917.916418944,102875.715501524,103487.521627567,102450.405110226,103392.661485532,103014.620125504,102520.812055514,102594.936250519,102082.846249737,102603.103223969,102867.371036265,102673.467810482,103537.178974686,103965.443849906,103439.75745293,102407.120756304,101992.044042214,103870.009287867,103347.412124663,52631.1478851259,52574.2212206631,52310.0808470262,52283.4175636604,52325.4246200838,52610.0526012891,52380.0680516334,52286.3748021189,52417.3200535436,52206.9325411184,52470.9576498778,52229.8669732719,52320.8551901518,52448.0081135788,52474.2415177292,52596.3281535168,52421.9491894743,52355.3537402065,52419.1755321863,52300.4190544675,52319.1077910866,52209.8801542296,52519.3735465388,52618.9265568692,52295.3325565419,52328.2391074595,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05],"Archive122_field11":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive122_field12":[0,0,0,0,173.819558688117,0,0,0,0,363.155164583153,367.745164138611,-114.248441100583,145.937610707409,99.483822646862,0,0,230.083725600253,156.411869304087,21.0374735163662,0,0,137.004086018648,0,0,0,0,0,0,0,0,173.819589163118,0,0,0,0,363.154840542735,367.746117143749,-114.248218129431,145.937479157304,99.4836789811022,0,0,230.083646266018,156.41204631455,21.0361665756252,0,0,137.004050415384,0,0,0,0,0,0,0,0,173.819595940783,0,0,0,0,363.154753641295,367.746259243024,-114.248182418132,145.937448727409,99.4836023664882,0,0,230.083602429034,156.412083340695,21.0357792672038,0,0,137.004030852251,0,0,0,0],"Archive122_field13":[0,0,0,0,1646.25505526657,0,0,0,0,1420.77296020823,1130.35652252925,1317.82328027231,1387.95082318257,1306.27234151575,0,0,1479.49073263228,1406.318160933,872.81067613205,0,0,1412.18230124409,0,0,0,0,0,0,0,0,1646.25531623727,0,0,0,0,1420.7719606669,1130.35772722792,1317.82222733332,1387.95089838477,1306.27360761768,0,0,1479.49145328197,1406.31817992373,872.811404232264,0,0,1412.18100159305,0,0,0,0,0,0,0,0,1646.25538560024,0,0,0,0,1420.77161576618,1130.35728214646,1317.82183024309,1387.95087472846,1306.27346569284,0,0,1479.49136656746,1406.31813344021,872.811091004213,0,0,1412.18058294423,0,0,0,0],"Archive122_field14":[0,0,0,0,-2.72694602541092,0,0,0,0,-7.40952415710357,-8.02089048825269,-7.46133065220203,-3.8902503940387,-5.81415278187504,0,0,-4.40767124125948,-4.04753678494098,-7.39765568418182,0,0,-4.02203522918832,0,0,0,0,0,0,0,0,-2.89046050892768,0,0,0,0,-6.58304840877052,-10.1234901154467,-6.81333408267213,-3.73120181115477,-7.720920387627,0,0,-5.42288996188767,-4.05686050490256,-8.42508979886109,0,0,-3.40707822931812,0,0,0,0,0,0,0,0,-3.05397396685126,0,0,0,0,-5.75657235560698,-12.2260903760925,-6.16533718945027,-3.57215222075807,-9.62768801023566,0,0,-6.43810852816893,-4.06618341063305,-9.45252460545874,0,0,-2.79212033964609,0,0,0,0],"Archive122_field15":[0,0,0,0,1655.40822222432,0,0,0,0,1466.46935838105,1188.69958713545,1322.78742652653,1395.60754076506,1310.06803851939,0,0,1497.28112801059,1414.99534458004,873.095514231782,0,0,1418.81822243028,0,0,0,0,0,0,0,0,1655.40876238416,0,0,0,0,1466.46436675196,1188.71707450945,1322.78286189413,1395.60716751414,1310.07913995825,0,0,1497.28516066546,1414.99540972169,873.105520427063,0,0,1418.8153154208,0,0,0,0,0,0,0,0,1655.40912565679,0,0,0,0,1466.46053386526,1188.73646102686,1322.77928424728,1395.60672464418,1310.09161767009,0,0,1497.28908935309,1414.99539437599,873.115716735623,0,0,1418.81355337848,0,0,0,0],"Archive122_field16":[9009292.49876889,8434395.89726082,2126156.4224886,2755402.64576414,5583960.7121176,8668393.84144619,5267738.3474434,2455159.91165136,5886914.46889485,3865661.93819728,7297169.35965882,4178466.16226191,5427939.25342042,7058687.81151919,6828865.79057313,8529688.43990523,6794374.05512204,5916308.98130178,6553258.37763335,3689595.57118853,2297396.67934567,4024489.66358363,7463090.78926173,8830079.20837998,2613275.22583577,4315547.45972086,4504646.24938445,4217197.94863041,1063078.2112443,1377701.32288207,2791980.3560588,4334196.92072309,2633869.1737217,1227579.95582568,2943457.23444742,1932830.96909864,3648584.67982941,2089233.08113096,2713969.62671021,3529343.9057596,3414432.89528656,4264844.21995262,3397187.02756102,2958154.49065089,3276629.18881667,1844797.78559426,1148698.33967283,2012244.83179182,3731545.39463086,4415039.60418999,1306637.61291789,2157773.72986043,-2.55675161042745e-10,-5.11350322085491e-10,6.39187902606864e-11,2.23715765912402e-10,-2.55675161042746e-10,-3.83512741564118e-10,-4.47431531824805e-10,3.19593951303432e-11,5.11350322085491e-10,1.91756370782059e-10,1.27837580521373e-10,6.39187902606864e-11,-2.55675161042745e-10,-2.55675161042745e-10,-1.27837580521373e-10,0,2.55675161042745e-10,3.83512741564118e-10,-1.27837580521373e-10,-6.39187902606864e-11,1.27837580521373e-10,-1.91756370782059e-10,-3.83512741564118e-10,-3.83512741564118e-10,1.91756370782059e-10,-2.55675161042745e-10],"Archive122_field17":[-899.135011918768,-847.033488838162,-217.533479495992,-280.188245105681,-561.51384098584,-862.728632389063,-529.868169497617,-251.693752574174,-590.570438345259,-391.635007044213,-730.428902049702,-422.576136222377,-545.999228204941,-706.427291054191,-684.297600373497,-850.855852057705,-681.161446162001,-594.432223554519,-656.688273841638,-372.323883391789,-235.944764792884,-407.552858149567,-747.766389806706,-879.154519909684,-267.534978157843,-434.282362710408,-899.135011918768,-847.033488838162,-217.533479495992,-280.188245105681,-561.51384098584,-862.728632389064,-529.868169497617,-251.693752574174,-590.570438345259,-391.635007044213,-730.428902049703,-422.576136222377,-545.999228204941,-706.427291054191,-684.297600373497,-850.855852057705,-681.161446162001,-594.432223554519,-656.688273841638,-372.323883391789,-235.944764792884,-407.552858149567,-747.766389806706,-879.154519909684,-267.534978157843,-434.282362710408,-899.135011918768,-847.033488838162,-217.533479495992,-280.188245105681,-561.51384098584,-862.728632389063,-529.868169497617,-251.693752574174,-590.570438345259,-391.635007044213,-730.428902049702,-422.576136222377,-545.999228204941,-706.427291054191,-684.297600373497,-850.855852057705,-681.161446162001,-594.432223554519,-656.688273841638,-372.323883391789,-235.944764792884,-407.552858149567,-747.766389806706,-879.154519909684,-267.534978157843,-434.282362710408],"Archive122_field18":[103.934908684176,97.9122680663525,25.145636670202,32.3881722804822,64.9078158609586,99.7265376589321,61.2497556889285,29.0943705265676,68.2665937454716,45.2707859833005,84.4334390591804,48.8474050595114,63.1144146016617,81.6589889331998,79.1009221805788,98.3541115791895,78.7384005378104,68.712994216771,75.9094405967434,43.0385295959975,27.2738768462876,47.1107993062749,86.4375543288014,101.625277110607,30.9255263737528,50.2005784594365,103.934908684176,97.9122680663525,25.145636670202,32.3881722804822,64.9078158609586,99.7265376589321,61.2497556889285,29.0943705265676,68.2665937454716,45.2707859833005,84.4334390591805,48.8474050595114,63.1144146016617,81.6589889331998,79.1009221805788,98.3541115791895,78.7384005378104,68.712994216771,75.9094405967434,43.0385295959975,27.2738768462876,47.1107993062749,86.4375543288014,101.625277110607,30.9255263737528,50.2005784594365,103.934908684176,97.9122680663525,25.145636670202,32.3881722804822,64.9078158609586,99.7265376589321,61.2497556889285,29.0943705265676,68.2665937454716,45.2707859833005,84.4334390591804,48.8474050595114,63.1144146016617,81.6589889331998,79.1009221805788,98.3541115791895,78.7384005378104,68.712994216771,75.9094405967434,43.0385295959975,27.2738768462876,47.1107993062749,86.4375543288014,101.625277110607,30.9255263737528,50.2005784594365],"Archive122_field19":[1003.06992060294,944.945756904515,242.679116166194,312.576417386163,626.421656846798,962.455170047996,591.117925186546,280.788123100742,658.83703209073,436.905793027513,814.862341108883,471.423541281888,609.113642806603,788.08627998739,763.398522554076,949.209963636895,759.899846699811,663.14521777129,732.597714438382,415.362412987787,263.218641639171,454.663657455842,834.203944135507,980.779797020291,298.460504531595,484.482941169845,1003.06992060294,944.945756904515,242.679116166194,312.576417386163,626.421656846798,962.455170047995,591.117925186546,280.788123100742,658.837032090731,436.905793027513,814.862341108883,471.423541281888,609.113642806603,788.08627998739,763.398522554076,949.209963636895,759.899846699811,663.14521777129,732.597714438382,415.362412987787,263.218641639171,454.663657455842,834.203944135507,980.779797020291,298.460504531595,484.482941169845,1003.06992060294,944.945756904515,242.679116166194,312.576417386163,626.421656846798,962.455170047996,591.117925186546,280.788123100742,658.83703209073,436.905793027513,814.862341108883,471.423541281888,609.113642806603,788.08627998739,763.398522554076,949.209963636895,759.899846699811,663.14521777129,732.597714438382,415.362412987787,263.218641639171,454.663657455842,834.203944135507,980.779797020291,298.460504531595,484.482941169845],"Archive122_field20":[272.26841454,272.3301255222,272.9472353442,272.885524362,272.605801899775,272.252833559263,272.6386804332,272.9163798531,272.576969451,272.765919978157,272.424469461009,272.737813151158,272.62325268765,272.42017992232,272.4844029777,272.31469777665,272.488259914087,272.568724169995,272.346168619228,272.7929578887,272.93180759865,272.7621023976,272.4226919955,272.279858226788,272.90095210755,272.7312469065,248.095673223999,225.992640083029,248.134145855385,247.919302462294,248.069524166861,248.694550673281,248.226214600629,248.105755120864,247.921241213847,248.02421465066,247.868538722581,247.961609168224,247.45179642921,248.371217631442,241.338858226189,244.25060526651,247.735668162739,248.065499349583,250.299410677773,247.78466761867,247.974776577615,248.020995632789,247.756446532415,248.111597113478,247.823434443047,247.832100735438,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive122_field21":[102809.575289045,106322.159092004,104256.291533484,104136.099342954,103510.993376229,102772.230639538,103581.746339961,104200.826230273,103484.139920377,103846.120514283,103131.464581891,103787.292925374,103614.578011219,103122.486577417,104175.27982175,103484.718748417,103286.301878621,103433.389687799,102967.580920045,103950.125412956,104241.55907058,103842.298299082,103186.214458169,102828.793268666,104182.305829061,103812.607100715,52211.2940578303,5949.64569377883,52291.8172753209,51842.1500535803,52156.56408124,53464.7445591771,52484.5171591171,52232.395467969,51846.2078605812,52061.7312638309,51735.901546361,51930.6979890935,50863.6599263356,52788.0085026088,38069.2802674127,44163.5668228063,51457.8034646127,52148.1401386765,56823.7165485791,51560.3593258765,51958.2573769476,52054.993859427,51501.2925923437,52244.6227585094,51641.4982892974,51659.6368392711,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05],"Archive122_field22":[1.41726252251698e-05,0.010144180760597,9.18501738718889e-05,0.000118703153558397,0,0,5.80297387366268e-06,0.000119141310582596,0.000100278022257752,0,0,0,0.000200778850203289,0,0.00274962392043215,0.00174552784996534,6.38439474138274e-05,0,0,0.000141959736248723,0.000144418462890989,1.24789847474156e-05,0.000175060214333417,0,0.000160368466941968,0.000116938100030555,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive122_field23":[0,0,0,0,176.98901494758,0,0,0,0,358.545348512525,356.885569173776,-104.877520417975,145.655934839641,102.378397892843,0,0,229.098682810101,156.879994825001,31.9431305347672,0,0,140.011212617998,0,0,0,0,0,0,0,0,176.989038094858,0,0,0,0,358.545004253167,356.88647803991,-104.877300627878,145.655795641089,102.378230740212,0,0,229.098591343235,156.880165818527,31.9418571566753,0,0,140.011178038793,0,0,0,0,0,0,0,0,176.989042011712,0,0,0,0,358.544910626151,356.886610591516,-104.877264920667,145.655766319623,102.378148605675,0,0,229.098545642042,156.880202552852,31.9414500153967,0,0,140.011159371566,0,0,0,0],"Archive122_field24":[0,0,0,0,1570.53231275025,0,0,0,0,1343.91723841468,1085.43748489775,1256.85300887797,1303.6976405304,1216.15279042436,0,0,1410.13004393311,1343.78201930948,772.04546915159,0,0,1344.43920870467,0,0,0,0,0,0,0,0,1570.53257830281,0,0,0,0,1343.91620284733,1085.43858488492,1256.85196840073,1303.69772178022,1216.15404171425,0,0,1410.13070164117,1343.78203610596,772.046374318016,0,0,1344.43794723355,0,0,0,0,0,0,0,0,1570.53264765038,0,0,0,0,1343.91584547975,1085.43814752091,1256.85157393775,1303.69768097441,1216.15390599537,0,0,1410.13060692533,1343.78198920526,772.0462150778,0,0,1344.43753754616,0,0,0,0],"Archive122_field25":[0,0,0,0,-2.78274756627165,0,0,0,0,-7.46076257570105,-8.06062536402398,-7.50336444220802,-3.95197133057462,-5.88298546458606,0,0,-4.46723384612771,-4.09289850510627,-7.46468960607296,0,0,-4.0699945135459,0,0,0,0,0,0,0,0,-2.95066028137803,0,0,0,0,-6.64781020978367,-10.0850457954282,-6.87709455211091,-3.86920913961233,-7.68120225334486,0,0,-5.44016551159214,-4.1079266564649,-8.39483584726113,0,0,-3.47882140940889,0,0,0,0,0,0,0,0,-3.11857200980965,0,0,0,0,-5.83485756098389,-12.1094667800774,-6.25082434010608,-3.78644568605792,-9.47941905465493,0,0,-6.41309700845496,-4.12295403971493,-9.32498294450211,0,0,-2.88764740299721,0,0,0,0],"Archive122_field26":[0,0,0,0,1580.47606767353,0,0,0,0,1390.94355515468,1142.63153150388,1261.24346606536,1311.81508123513,1220.46858031251,0,0,1428.62622944084,1352.91470537279,772.742060209469,0,0,1351.71612789688,0,0,0,0,0,0,0,0,1580.47663871134,0,0,0,0,1390.93834289341,1142.64893467477,1261.23884062031,1311.81489980795,1220.4798057221,0,0,1428.63023755879,1352.91478743111,772.752456874201,0,0,1351.71321889511,0,0,0,0,0,0,0,0,1580.47703046242,0,0,0,0,1390.93432563519,1142.66822135685,1261.2351852101,1311.81461449823,1220.49230549207,0,0,1428.63417291346,1352.9147908185,772.762945379731,0,0,1351.71141728525,0,0,0,0],"Archive122_field27":[9023386.29966234,8500514.69158893,2183085.51283437,2811865.55822992,5635145.14801272,8658025.34506266,5317560.89785537,2525905.37414596,5926746.40817083,3930304.02574311,7330314.20227706,4240817.74995737,5479446.23455035,7089442.91492217,6867357.52723628,8538874.51458587,6835884.24394676,5965501.85567044,6590280.54161336,3736504.73388314,2367854.35989841,4090049.68983154,7504306.81453587,8822869.47464122,2684882.05285019,4358297.10768745,4511693.14983117,4250257.34579446,1091542.75641718,1405932.77911496,2817572.57400636,4329012.67253133,2658780.44892769,1262952.68707298,2963373.20408542,1965152.01287156,3665157.10113853,2120408.87497868,2739723.11727518,3544721.45746108,3433678.76361814,4269437.25729293,3417942.12197338,2982750.92783522,3295140.27080668,1868252.36694157,1183927.1799492,2045024.84491577,3752153.40726794,4411434.73732061,1342441.0264251,2179148.55384373,3.83512741564118e-10,1.27837580521373e-10,3.19593951303432e-11,-1.27837580521373e-10,3.83512741564118e-10,1.27837580521373e-10,-1.91756370782059e-10,-3.19593951303432e-11,0,-1.91756370782059e-10,-3.83512741564118e-10,-2.55675161042746e-10,1.91756370782059e-10,2.55675161042745e-10,-1.27837580521373e-10,-1.27837580521373e-10,3.83512741564118e-10,0,0,1.91756370782059e-10,6.39187902606864e-11,-1.27837580521373e-10,-5.11350322085491e-10,3.83512741564118e-10,6.39187902606864e-11,1.27837580521373e-10],"Archive122_field28":[-900.656863515864,-853.354265934163,-223.161320317303,-285.773796822175,-566.5641626443,-862.003119736846,-534.773094117374,-258.655800652639,-594.55336219896,-398.002582526164,-733.75581854595,-428.707110362758,-550.971510770433,-709.528742492815,-688.295176627056,-852.14438534626,-685.270657521228,-599.304371137345,-660.399954535803,-377.042855825671,-242.861072281125,-413.980580163388,-751.860756275478,-878.637945179897,-274.597162518647,-438.544849734967,-900.656863515864,-853.354265934163,-223.161320317303,-285.773796822175,-566.5641626443,-862.003119736846,-534.773094117374,-258.655800652639,-594.55336219896,-398.002582526164,-733.75581854595,-428.707110362759,-550.971510770433,-709.528742492815,-688.295176627056,-852.14438534626,-685.270657521228,-599.304371137345,-660.399954535803,-377.042855825671,-242.861072281125,-413.980580163388,-751.860756275478,-878.637945179897,-274.597162518647,-438.544849734967,-900.656863515864,-853.354265934163,-223.161320317303,-285.773796822175,-566.5641626443,-862.003119736846,-534.773094117374,-258.655800652639,-594.55336219896,-398.002582526164,-733.75581854595,-428.707110362758,-550.971510770433,-709.528742492815,-688.295176627056,-852.14438534626,-685.270657521228,-599.304371137345,-660.399954535803,-377.042855825671,-242.861072281125,-413.980580163388,-751.860756275478,-878.637945179897,-274.597162518647,-438.544849734967],"Archive122_field29":[104.110826098889,98.6429140556394,25.7961831555443,33.0338303851152,65.4916044059933,99.6426725104752,61.816737160787,29.8991438049942,68.7269971571317,46.0068416006253,84.818011740317,49.5561109034377,63.6891822700828,82.017499132212,79.5630193265736,98.5030587205055,79.2134020689751,69.2761868490279,76.3384898372902,43.5840160496414,28.073362771864,47.853807521613,86.91083987481,101.565564001166,31.7418748385787,50.6932977883386,104.110826098889,98.6429140556394,25.7961831555443,33.0338303851152,65.4916044059933,99.6426725104752,61.816737160787,29.8991438049942,68.7269971571317,46.0068416006253,84.818011740317,49.5561109034377,63.6891822700829,82.017499132212,79.5630193265736,98.5030587205056,79.2134020689751,69.2761868490279,76.3384898372902,43.5840160496414,28.073362771864,47.853807521613,86.91083987481,101.565564001166,31.7418748385787,50.6932977883386,104.110826098889,98.6429140556394,25.7961831555443,33.0338303851152,65.4916044059933,99.6426725104752,61.816737160787,29.8991438049942,68.7269971571317,46.0068416006253,84.818011740317,49.5561109034377,63.6891822700828,82.017499132212,79.5630193265736,98.5030587205055,79.2134020689751,69.2761868490279,76.3384898372902,43.5840160496414,28.073362771864,47.853807521613,86.91083987481,101.565564001166,31.7418748385787,50.6932977883386],"Archive122_field30":[1004.76768961475,951.997179989803,248.957503472847,318.807627207291,632.055767050294,961.645792247321,596.589831278161,288.554944457633,663.280359356092,444.009424126789,818.573830286267,478.263221266196,614.660693040516,791.546241625027,767.85819595363,950.647444066766,764.484059590203,668.580557986373,736.738444373093,420.626871875312,270.934435052989,461.834387685001,838.771596150288,980.203509181063,306.339037357226,489.238147523306,1004.76768961475,951.997179989803,248.957503472847,318.807627207291,632.055767050294,961.645792247322,596.589831278161,288.554944457633,663.280359356092,444.009424126789,818.573830286267,478.263221266196,614.660693040516,791.546241625026,767.85819595363,950.647444066766,764.484059590203,668.580557986373,736.738444373093,420.626871875312,270.934435052989,461.834387685001,838.771596150288,980.203509181063,306.339037357226,489.238147523306,1004.76768961475,951.997179989803,248.957503472847,318.807627207291,632.055767050294,961.645792247321,596.589831278161,288.554944457633,663.280359356092,444.009424126789,818.573830286267,478.263221266196,614.660693040516,791.546241625027,767.85819595363,950.647444066766,764.484059590203,668.580557986373,736.738444373093,420.626871875312,270.934435052989,461.834387685001,838.771596150288,980.203509181063,306.339037357226,489.238147523306],"Archive122_field31":[272.267089335121,272.323429202068,272.941636670596,272.879970540715,272.602771850212,272.264457208731,272.633761641951,272.909394328658,272.573082382048,272.760975181317,272.426473748161,272.733242698783,272.618061953165,272.423182504965,272.480771152524,272.314090532889,272.484151342598,272.567909019584,272.355365682954,272.788419634024,272.924855125424,272.755600012969,272.418617102652,272.284652237579,272.893899027868,272.727076348947,247.98372647842,205.648680521935,248.123150034031,247.719847953182,248.045969546294,249.152269385601,248.300828809175,248.081083797738,247.709040047796,247.997740405755,247.606236502174,247.871602897649,246.85894927263,248.574105888297,234.811600047586,240.578089186277,247.37208375722,248.02763572318,252.327944145124,247.472200566364,247.801681508739,247.990727785439,247.354441300394,248.02363231007,247.512146381503,247.547647934058,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive122_field32":[102827.377493389,105719.906410581,104247.390294885,104128.235332395,103508.633435783,102796.558937874,103584.588707384,104189.36669839,103486.098014221,103835.771054496,103135.659554902,103777.726968553,103606.335162732,103128.770982892,104130.79205076,103484.844224343,103287.112219526,103431.683577989,102986.830374423,103944.768663196,104230.192741142,103832.478129167,103192.823186864,102849.132334811,104171.910767518,103810.698200125,51976.9895193322,-36630.2616675893,52268.8030212262,51424.6917660106,52107.264260393,54422.749824063,52640.6846976034,52180.7583886655,51402.070820037,52006.3206692449,51186.9029990506,51742.314864779,49622.8308276144,53212.6536242059,24407.7288995985,36476.9906668774,50696.8213038611,52068.8915686155,61069.4370957439,50906.3657853993,51595.9693977914,51991.6432549232,50659.8956417252,52060.5124249773,50989.9723764856,51064.2771259827,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05],"Archive122_field33":[7.57769909634187e-05,0.0083829912893757,0.000100283662656208,0.000129961049935108,1.19220158337054e-05,0,4.51364993457323e-05,0.000128605893738789,0.000130498768245161,0,0,0,0.000208627229815675,0,0.00263918571415585,0.00174970879941696,9.2016345713053e-05,0,0,0.000154360386779379,0.0001539549809259,2.38242575558583e-05,0.000220382009021226,3.08538968828636e-05,0.000173443419731593,0.000137357490353015,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive123.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive123.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive123.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive123_field1":[4948.3438143797],"Archive123_field2":[11401.039718512],"Archive123_field3":[22445.7225698808]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive124.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive124.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive124.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive124_field1":[0,0,0,0,47.2493339552493,0,0,0,0,76.2824402518199,76.2619348237486,-52.5369120244787,22.4162777393407,0,0,-32.6922913422811,51.4730222675742,-3.18818976408543,68.714231180525,0,17.3054386710182,78.3601750958987,57.8696471748987,17.9363693016912,93.7166582647286,0,41.5638072794628,-99.4669164334654,0,-3.180224086743,0,74.4093977631241,0,0,18.3626518654943,-45.650202391392,0,0,-31.1749345724164,-43.0090129846227,-60.6855358892805,-17.1476362574879,36.3929160573896,23.1084174121293,0,0,0,0,47.249839174596,0,0,0,0,76.28096977185,76.2629127332977,-52.5356961289923,22.4147094813356,0,0,-32.6924025162715,51.4722640975405,-3.18799006458577,68.7138133617662,0,17.306921841598,78.3623683400763,57.8684392750261,17.9353527561477,93.7170638691611,0,41.5619220419605,-99.4665141359008,0,-3.17938880658569,0,74.4111204357868,0,0,18.3595140242807,-45.6531608890985,0,0,-31.1728024967439,-43.0067057603035,-60.6857243273404,-17.1474791690747,36.3929975659842,23.1083072593507,0,0,0,0,47.2504434757058,0,0,0,0,76.2795585352226,76.2648909482268,-52.5339930314277,22.4121541438023,0,0,-32.6924239034301,51.4719701989337,-3.1877517793867,68.713482590025,0,17.3079605162665,78.3648285114043,57.8676128140241,17.9345204713011,93.717814756498,0,41.5595253163737,-99.4662267585363,0,-3.17923336129246,0,74.412279895497,0,0,18.3567481666755,-45.6550213572106,0,0,-31.1714882639924,-43.0039890578821,-60.6853037680223,-17.1488253292644,36.3943010046065,23.1075819739964],"Archive124_field2":[0,0,0,0,685.013695842509,0,0,0,0,537.428410581064,321.050982231802,558.015674094695,617.395077682039,0,0,-8.29728979287966,92.1638359470061,559.600890201213,713.954396866424,0,658.581624917903,515.832173287567,683.901137387204,665.182060322944,682.407887426567,0,447.743946647348,73.4159813957497,0,152.065937645512,0,650.00322645912,0,0,457.303048773613,312.78994410971,0,0,277.348487527259,223.006207780174,59.106588687702,45.7800315526076,33.3453412688152,130.386794613282,0,0,0,0,685.014332830093,0,0,0,0,537.427203022226,321.053813072724,558.015319007528,617.395366731006,0,0,-8.30015261911976,92.162881978875,559.598705853913,713.953524548568,0,658.581260552155,515.832533619451,683.901143942531,665.184318216212,682.412699239515,0,447.747427743601,73.4130560511422,0,152.065130339965,0,650.004478095361,0,0,457.304089123726,312.789662216506,0,0,277.347863066681,223.007335145615,59.1077759957199,45.7801772097447,33.3455265501283,130.389172600114,0,0,0,0,685.014746081612,0,0,0,0,537.426033626451,321.05530297811,558.014006736996,617.39531006594,0,0,-8.30142379912724,92.1625057376604,559.596316241621,713.952172804404,0,658.580860956282,515.831981350419,683.900933609883,665.185431386648,682.413656526653,0,447.748345914373,73.41206666818,0,152.064900082105,0,650.00527234776,0,0,457.303988013013,312.789607230207,0,0,277.346975242535,223.007875068446,59.1124665403267,45.7814902752281,33.3469973082318,130.392948509064],"Archive124_field3":[0,0,0,0,686.646608187845,0,0,0,0,542.817807361673,329.98427240384,560.485423260774,617.804973970869,0,0,33.7553031834868,105.564604705696,559.613521553662,717.258105857913,0,658.81230268615,521.750931799158,686.348899200548,665.426650739424,688.813243290517,0,449.668980756961,123.633384093986,0,152.100074928337,0,654.250626031168,0,0,457.672115963137,316.10476434956,0,0,279.095857900744,227.11573777535,84.7160853985347,48.8872965186447,49.3616148900533,132.41956073878,0,0,0,0,686.646519113593,0,0,0,0,542.81530738663,329.987858260495,560.484024790636,617.804658758543,0,0,33.7377160440524,105.562410001581,559.609635741415,717.256195759162,0,658.812366942675,521.751993571922,686.349294255289,665.429478897601,688.819393030387,0,449.672909811152,123.626063388084,0,152.09845984295,0,654.252274649764,0,0,457.672957512029,316.104490571557,0,0,279.094596024998,227.117007445064,84.7150295415042,48.8862803748168,49.359692027614,132.422077051314,0,0,0,0,686.646272135784,0,0,0,0,542.813147029455,329.991854689582,560.481908729236,617.804015599012,0,0,33.7302319172367,105.561875217902,559.606094070035,717.253938414443,0,658.812405649563,521.752261887902,686.349535395222,665.431225356915,688.82291006313,0,449.675584666306,123.623926227622,0,152.098234792814,0,654.253414099643,0,0,457.672678560867,316.104378069632,0,0,279.093307708886,227.118382419888,84.7299692435871,48.8906170233235,49.3652414117792,132.433411274286],"Archive124_field4":[8883830.21141903,8421038.77145825,2345261.6373401,2828773.39158517,5588329.00981087,8478514.27769166,5145369.25245664,2930653.4354252,5914113.33371876,3783148.34793064,7301111.590802,4326465.30422753,5446475.12402777,4101600.25243877,3000669.24929018,3055461.01915603,2688336.97064931,3640026.18109623,4349753.42902607,3052674.98147849,4682398.23524777,5373024.21943146,4994241.51579841,5893392.68969339,6623557.88714599,6474935.40263234,6550738.22957299,3199431.19021123,4540555.70502402,3330822.47005294,7021728.14676633,6017134.13218599,8259395.66295616,6159653.12729044,5680578.29706114,4657481.21091068,7970674.60536977,5014742.95192904,4586169.55814729,6501649.60729699,7951137.73139333,7668185.65455898,8278478.79218926,7540558.31118264,4385945.29894993,4238004.22137724,1310745.82808951,1479418.25035432,2822180.34053512,4138016.5748663,2536584.25442526,1738686.07399945,2990493.19042322,1882817.8456397,3669061.40678975,2268714.93486766,2758996.92172092,2279921.39154263,1887396.60913935,1509438.12408485,1220977.91017191,1838083.8492868,2247694.55658892,1782032.8882424,2324522.33943498,2658159.77266088,2483095.66425561,2915347.28546062,3194032.35720341,3079038.17240963,3227474.14723166,1554962.99877666,2404054.72409581,1637117.71194026,3310964.83086508,2968960.91804848,3840215.04593025,3157314.53559251,2835665.06677721,2304545.7582113,3708924.47955577,2484676.36677992,2292257.10324121,3252987.17632261,3991346.50677063,3860994.53197816,4213502.42138391,3770626.17371986,-111935.308439261,54964.8092510583,276221.041957587,130069.610169145,55999.3699371159,-202478.630686355,-72205.6253719099,546721.751350665,66869.8845362528,-17521.1039088308,37014.4286503698,210963.188725901,71517.3378578134,458245.096046534,774126.859743614,-36578.0773007805,-246375.415787563,36131.5946047678,145638.391318024,511383.936308508,-33339.5052665727,-56705.0581179312,-28039.3143624814,-62690.3690786817,-235495.764844836,-316860.279915511,-95794.250584049,-89498.5577400944,267552.506348545,-56589.082880142,-399805.04274012,-79221.6198054323,-578972.838059697,154980.731642442,-9248.39624521541,-48384.9646097338,-552828.200798502,-45388.5076253557,-1653.96071659801,4331.43313642521,31559.7778363765,53810.9845204348,148530.787073161,692.155330720595],"Archive124_field5":[-896.383136835766,-833.63631371835,-206.168082832731,-268.914906441712,-551.275641257957,-865.009725541968,-519.902198406532,-237.541494900014,-582.64902130283,-378.72186803507,-723.829373698769,-410.09527802161,-535.588927277152,-363.035140853364,-221.854789162791,-308.131685263501,-292.444970920817,-359.11348951774,-418.919060903262,-253.228200358167,-469.900848640674,-541.042497841769,-500.444675783902,-593.491872619862,-683.460972059396,-676.769255970237,-662.289435855889,-327.74006723414,-425.781963423435,-337.544250408332,-739.516079024351,-607.469992027234,-880.696430655011,-598.335727034623,-566.962325990357,-468.920414409602,-849.323019478338,-504.215492881297,-457.155383717952,-647.422987662633,-789.145710225284,-758.731181371938,-810.10625016075,-751.308721694335,-896.383136835766,-833.63631371835,-206.168082832731,-268.914906441712,-551.275641257957,-865.009725541968,-519.902198406532,-237.541494900014,-582.64902130283,-378.72186803507,-723.829373698769,-410.095278021611,-535.588927277152,-363.035140853363,-221.854789162791,-308.131685263501,-292.444970920817,-359.11348951774,-418.919060903262,-253.228200358167,-469.900848640674,-541.042497841769,-500.444675783902,-593.491872619862,-683.460972059396,-676.769255970237,-662.289435855889,-327.740067234141,-425.781963423435,-337.544250408331,-739.516079024351,-607.469992027234,-880.696430655011,-598.335727034623,-566.962325990357,-468.920414409602,-849.323019478339,-504.215492881297,-457.155383717952,-647.422987662633,-789.145710225284,-758.731181371938,-810.10625016075,-751.308721694335,-896.383136835766,-833.63631371835,-206.168082832731,-268.914906441712,-551.275641257957,-865.009725541968,-519.902198406532,-237.541494900014,-582.64902130283,-378.72186803507,-723.829373698769,-410.09527802161,-535.588927277152,-363.035140853364,-221.854789162791,-308.131685263501,-292.444970920817,-359.11348951774,-418.919060903262,-253.228200358167,-469.900848640674,-541.042497841769,-500.444675783902,-593.491872619862,-683.460972059396,-676.769255970237,-662.289435855889,-327.74006723414,-425.781963423435,-337.544250408332,-739.516079024351,-607.469992027234,-880.696430655011,-598.335727034623,-566.962325990357,-468.920414409602,-849.323019478338,-504.215492881297,-457.155383717952,-647.422987662633,-789.145710225284,-758.731181371938,-810.10625016075,-751.308721694335],"Archive124_field6":[103.61691330926,96.363736373114,23.8319670450046,31.0851440379733,63.7244176723839,99.9903248718048,60.0978517242014,27.4585555718652,67.3510286347873,43.778195219315,83.6706635067131,47.4047854603681,61.911130469698,41.9649094116214,25.6452613427002,35.6183783124421,33.8050868465563,41.5115776107671,48.4247507754672,29.2718497687721,54.3179534153835,62.5415361668158,57.8486442551431,68.6043752645979,79.00429418089,78.2307940379987,76.5569936173197,37.8849987224052,49.2180862844975,39.0183082057822,85.4839709668277,70.220171443662,101.803619028821,69.1643228633259,65.5377286852767,54.2046405218622,98.1770306049095,58.2845575195392,52.8446723888566,74.8385221865797,91.2208609537826,87.7051230764522,93.6437889929639,86.8471188808528,103.61691330926,96.363736373114,23.8319670450046,31.0851440379733,63.7244176723839,99.9903248718048,60.0978517242014,27.4585555718652,67.3510286347873,43.778195219315,83.6706635067131,47.4047854603681,61.911130469698,41.9649094116214,25.6452613427002,35.6183783124421,33.8050868465563,41.5115776107671,48.4247507754672,29.2718497687721,54.3179534153835,62.5415361668158,57.8486442551431,68.6043752645979,79.00429418089,78.2307940379987,76.5569936173197,37.8849987224052,49.2180862844975,39.0183082057822,85.4839709668278,70.220171443662,101.803619028821,69.1643228633259,65.5377286852767,54.2046405218622,98.1770306049095,58.2845575195391,52.8446723888566,74.8385221865797,91.2208609537825,87.7051230764522,93.6437889929639,86.8471188808528,103.61691330926,96.363736373114,23.8319670450046,31.0851440379733,63.7244176723839,99.9903248718048,60.0978517242014,27.4585555718652,67.3510286347873,43.778195219315,83.6706635067131,47.4047854603681,61.911130469698,41.9649094116214,25.6452613427002,35.6183783124421,33.8050868465563,41.5115776107671,48.4247507754672,29.2718497687721,54.3179534153835,62.5415361668158,57.8486442551431,68.6043752645979,79.00429418089,78.2307940379987,76.5569936173197,37.8849987224052,49.2180862844975,39.0183082057822,85.4839709668277,70.220171443662,101.803619028821,69.1643228633259,65.5377286852767,54.2046405218622,98.1770306049095,58.2845575195392,52.8446723888566,74.8385221865797,91.2208609537826,87.7051230764522,93.6437889929639,86.8471188808528],"Archive124_field7":[1000,930,230,300,615,965,580,265,650,422.5,807.5,457.5,597.5,405,247.5,343.75,326.25,400.625,467.34375,282.5,524.21875,603.583984375,558.293269230769,662.096196018893,762.465230622135,755,738.84639298261,365.625,475,376.5625,825,677.690110514023,982.5,667.5,632.5,523.125,947.5,562.5,510,722.26146697998,880.366544076463,846.436263335288,903.75,838.155811802372,1000,930,230,300,615,965,580,265,650,422.5,807.5,457.5,597.5,405,247.5,343.75,326.25,400.625,467.34375,282.5,524.21875,603.583984375,558.293269230769,662.096196018893,762.465230622136,755,738.84639298261,365.625,475,376.5625,825,677.690110514023,982.5,667.5,632.5,523.125,947.5,562.5,510,722.26146697998,880.366544076463,846.436263335288,903.75,838.155811802372,1000,930,230,300,615,965,580,265,650,422.5,807.5,457.5,597.5,405,247.5,343.75,326.25,400.625,467.34375,282.5,524.21875,603.583984375,558.293269230769,662.096196018893,762.465230622135,755,738.84639298261,365.625,475,376.5625,825,677.690110514023,982.5,667.5,632.5,523.125,947.5,562.5,510,722.26146697998,880.366544076463,846.436263335288,903.75,838.155811802372],"Archive124_field8":[0,0,0,0,47.7444010057005,0,0,0,0,77.152054675159,76.2576089935473,-52.8919401112596,22.7507001147171,0,0,-33.1687369391298,51.4894426919158,-2.61213724694348,69.4948364633662,0,17.4222457000291,78.5112792721562,58.6507120467107,18.5174133602328,94.2030156681089,0,41.4970117069104,-98.1856969412641,0,-3.1279095362327,0,74.833663162221,0,0,18.3189967003198,-45.5019059540891,0,0,-31.1984119431271,-43.0731001804413,-61.0052613835669,-16.9778300928937,36.5131362837311,23.5706643628482,0,0,0,0,47.7499942601555,0,0,0,0,77.1368094892859,76.2726352837116,-52.8769955046397,22.7308058118693,0,0,-33.1697124278362,51.4822204977777,-2.61011244298094,69.4914741587098,0,17.4346299100268,78.5346644172907,58.6406975399934,18.5079007022052,94.2089771424466,0,41.475079300955,-98.1817146386109,0,-3.11966277063881,0,74.8480722922012,0,0,18.2899137381938,-45.5298127644277,0,0,-31.1765522737325,-43.0477679379802,-61.0043593407067,-16.9839064841812,36.519747786887,23.5656202133346,0,0,0,0,47.7556785450602,0,0,0,0,77.1216283913553,76.2886726590322,-52.8615639412994,22.7099279437199,0,0,-33.1705971891908,51.4754653645094,-2.60804950284149,69.4882039205002,0,17.4465678118013,78.5583148980843,58.6310685997328,18.4985689554049,94.2152864254547,0,41.4526278285676,-98.1778481159311,0,-3.11209871185481,0,74.8619100301356,0,0,18.2612079065427,-45.5566193377622,0,0,-31.1555153444676,-43.0220210971985,-61.0028442228948,-16.9914876726447,36.5275860878336,23.5599501141814],"Archive124_field9":[0,0,0,0,689.700743711417,0,0,0,0,539.233018151692,322.751726321162,561.537635810419,620.468469086097,0,0,-7.77036901781265,92.770463751571,560.568729065434,718.568332557558,0,663.154584091887,519.273513280845,688.42661797711,669.236015442704,686.567262515328,0,448.471698180466,74.0208784894779,0,152.736643104008,0,654.359703610688,0,0,458.186330472235,313.74052035068,0,0,279.192289395502,224.507106759428,59.5496433397759,45.8358534654316,33.4711990772173,130.886958173203,0,0,0,0,689.707923454682,0,0,0,0,539.223965727668,322.769703484501,561.534350529871,620.473018329366,0,0,-7.79486379250174,92.7630002837093,560.550158005041,718.562407805166,0,663.154032571271,519.275069143471,688.428419584653,669.252132888622,686.592312103416,0,448.489977373378,73.996200975408,0,152.730855960133,0,654.370162518697,0,0,458.192804242054,313.741675035449,0,0,279.187237839203,224.513238713445,59.5754719685384,45.841372859431,33.4778029073436,130.913656062884,0,0,0,0,689.71488261445,0,0,0,0,539.214955761592,322.786333353806,561.53010622932,620.477218047772,0,0,-7.81775897887474,92.7561163051316,560.531396939346,718.556001388003,0,663.153443217618,519.275705158537,688.429996642028,669.267083705913,686.613474685643,0,448.505693271159,73.9734659168964,0,152.725649652619,0,654.380175792495,0,0,458.198133007848,313.743055775972,0,0,279.18192185359,224.518777115689,59.6048238858728,45.8480600235283,33.4856995969486,130.941763870611],"Archive124_field10":[0,0,0,0,691.871429562485,0,0,0,0,545.016320837275,331.712925060339,564.24587786206,621.193923547341,0,0,35.5270686264398,106.166027691473,560.950282360296,722.436626398495,0,663.853003526344,525.333187236229,691.421974931741,669.878474602075,693.186725310287,0,450.456634417855,123.365368329002,0,152.826023519907,0,658.909611983106,0,0,458.61480811647,317.143848275092,0,0,281.013007030888,228.669509554891,85.3246296808296,48.8847158290815,49.5354623718275,133.098280901628,0,0,0,0,691.871250855046,0,0,0,0,544.992228618731,331.749562885392,564.230117383833,621.192015866519,0,0,35.3677743690561,106.145502610071,560.911513647349,722.419196031244,0,663.857221529942,525.342927384129,691.428406424789,669.901087118845,693.233657076282,0,450.487156986944,123.29277793631,0,152.81088438814,0,658.923990482761,0,0,458.619343272621,317.144217729826,0,0,281.00071306545,228.681322882821,85.3944221997434,48.9002907668365,49.5528339205131,133.167491049526,0,0,0,0,691.870914425657,0,0,0,0,544.968484018228,331.78661307412,564.213642194523,621.18977648859,0,0,35.2176130609036,106.126640616354,560.873114580812,722.401421269478,0,663.861408774304,525.351867217551,691.434673932725,669.92259435058,693.277931382241,0,450.51642903285,123.225391753751,0,152.797142398,0,658.937869755738,0,0,458.622756509682,317.14475192532,0,0,280.988395554052,228.693241733052,85.4802361774117,48.9211983971807,49.5776991392461,133.245518697148],"Archive124_field11":[8882849.38179022,8420423.06226582,2345022.87536839,2829075.91791055,5587730.58710841,8479475.59922291,5145432.65366834,2928171.74141869,5913144.36337905,3782748.43316899,7300177.27342108,4325630.26406609,5446192.28506159,4101556.09258263,2999695.59746028,3057105.2120738,2688867.65123648,3638892.39668351,4348918.27146374,3052028.30927947,4682584.59804901,5373373.50846156,4995128.8064017,5893051.66558568,6626525.56837434,6474698.96497783,6551210.50530415,3200953.79515934,4540654.41322687,3330870.88222603,7023593.10763679,6017492.08747421,8261058.5999596,6159503.20129359,5680412.45453077,4657811.23983176,7971614.64237862,5014730.73582631,4586388.82129105,6501398.02940862,7950151.40215767,7668227.18670826,8278078.1942803,7539781.86008709,4384927.80273869,4237379.69138656,1310478.82775898,1479791.63239553,2821711.41448806,4138832.56683914,2536520.50485738,1736088.67411897,2989458.10841238,1882440.65019039,3668120.73689196,2267913.45258445,2758719.62428862,2279786.10956942,1886303.57869525,1511281.68039428,1221632.44538871,1836957.81753085,2246847.87468979,1781304.55104614,2324757.14502771,2658500.43819135,2484008.87239846,2914997.61826299,3196967.7903734,3078751.78221646,3227931.50916987,1556614.04683422,2404052.67959531,1637206.67056626,3312741.08808774,2969337.54028982,3841801.07008897,3157121.9779999,2835519.02450052,2304932.11201842,3709824.85112099,2484621.0839578,2292505.71149144,3252750.13852879,3990395.21325316,3861039.98169853,4213144.00037208,3769860.06296156,-112989.673191086,54331.7005555686,275926.317704685,130513.498753787,55661.4729058517,-201808.127107125,-72396.240847414,544008.265358414,65768.7271807593,-17875.006064902,36067.208967285,210195.276315999,71245.5868175514,458018.447924184,772914.075510927,-34535.3557898238,-245597.219517394,35013.9710798868,144780.004131313,510574.188008185,-33057.0753049887,-56372.921302813,-27100.7406197037,-63049.0987131797,-232592.430584196,-317196.575953206,-95351.5604907671,-87719.2986557928,267449.710480136,-56459.3214685116,-398117.17089451,-78825.8448880128,-577463.445273794,154745.203185225,-9374.60178681462,-47942.5621737037,-551967.417135438,-45486.9441329076,-1376.12423166633,4108.61034269229,30643.4054142546,53860.0286435438,148214.417813814,-63.5028166065642],"Archive124_field12":[-896.383086966537,-833.636263799163,-206.168032724536,-268.914856872057,-551.275863920772,-865.009675915074,-519.902148523707,-237.541445319599,-582.648971247109,-378.722001132952,-723.829395182523,-410.095391561806,-535.589076733676,-363.035091090377,-221.854739616957,-308.131737543906,-292.444959293563,-359.113650154222,-418.919289008035,-253.22815047522,-469.901052300648,-541.042579751178,-500.4448924033,-593.492055305342,-683.461086007209,-676.769205977827,-662.289466627501,-327.740118778313,-425.781913161022,-337.544243754688,-739.516029016089,-607.470139799177,-880.696380370314,-598.335676944186,-566.962354979914,-468.920453291897,-849.32296955363,-504.21544324294,-457.155403901779,-647.422994412134,-789.145694553106,-758.731138436248,-810.106204763179,-751.308723670423,-896.383086966537,-833.636263799163,-206.168032724536,-268.914856872057,-551.275863920772,-865.009675915074,-519.902148523707,-237.541445319599,-582.648971247109,-378.722001132952,-723.829395182523,-410.095391561806,-535.589076733676,-363.035091090377,-221.854739616957,-308.131737543906,-292.444959293563,-359.113650154222,-418.919289008035,-253.22815047522,-469.901052300648,-541.042579751178,-500.4448924033,-593.492055305342,-683.461086007209,-676.769205977827,-662.289466627501,-327.740118778313,-425.781913161022,-337.544243754688,-739.516029016089,-607.470139799177,-880.696380370314,-598.335676944186,-566.962354979914,-468.920453291897,-849.32296955363,-504.21544324294,-457.155403901779,-647.422994412134,-789.145694553106,-758.731138436248,-810.106204763179,-751.308723670423,-896.383086966537,-833.636263799163,-206.168032724536,-268.914856872057,-551.275863920772,-865.009675915074,-519.902148523707,-237.541445319599,-582.648971247109,-378.722001132952,-723.829395182523,-410.095391561806,-535.589076733676,-363.035091090377,-221.854739616957,-308.131737543906,-292.444959293563,-359.113650154222,-418.919289008035,-253.22815047522,-469.901052300648,-541.042579751178,-500.4448924033,-593.492055305342,-683.461086007209,-676.769205977827,-662.289466627501,-327.740118778313,-425.781913161022,-337.544243754688,-739.516029016089,-607.470139799177,-880.696380370314,-598.335676944186,-566.962354979914,-468.920453291897,-849.32296955363,-504.21544324294,-457.155403901779,-647.422994412134,-789.145694553106,-758.731138436248,-810.106204763179,-751.308723670423],"Archive124_field13":[103.617013324375,96.3638363824598,23.8320670324934,31.0852440877191,63.724253962687,99.9904249148967,60.0979517377504,27.4586556203513,67.3511286283464,43.7781254342908,83.6706791462255,47.4047354968289,61.9110387995282,41.9650094390218,25.6453613952013,35.6183896709492,33.8051562732705,41.5114842276794,48.4245844556617,29.2719497822792,54.3178018668923,62.541503889608,57.8484784731818,68.6042444249406,79.0042157251093,78.2308940388735,76.5569992905463,37.8850131784619,49.2181862541659,39.018373509298,85.4840709658724,70.2200766212887,101.803718995894,69.1644228528679,65.5377543494544,54.2046566004726,98.1771306135942,58.2846575613417,52.8447083685654,74.8385582598994,91.220903575135,87.7052071401246,93.6438735036239,86.8471455738026,103.617013324375,96.3638363824598,23.8320670324934,31.0852440877191,63.724253962687,99.9904249148967,60.0979517377504,27.4586556203513,67.3511286283464,43.7781254342908,83.6706791462254,47.4047354968289,61.9110387995282,41.9650094390218,25.6453613952013,35.6183896709492,33.8051562732705,41.5114842276794,48.4245844556617,29.2719497822792,54.3178018668923,62.541503889608,57.8484784731818,68.6042444249406,79.0042157251093,78.2308940388735,76.5569992905463,37.8850131784619,49.2181862541659,39.018373509298,85.4840709658724,70.2200766212887,101.803718995894,69.1644228528679,65.5377543494544,54.2046566004726,98.1771306135942,58.2846575613417,52.8447083685654,74.8385582598994,91.220903575135,87.7052071401246,93.6438735036239,86.8471455738026,103.617013324375,96.3638363824598,23.8320670324934,31.0852440877191,63.724253962687,99.9904249148967,60.0979517377504,27.4586556203513,67.3511286283464,43.7781254342908,83.6706791462255,47.4047354968289,61.9110387995282,41.9650094390218,25.6453613952013,35.6183896709492,33.8051562732705,41.5114842276794,48.4245844556617,29.2719497822792,54.3178018668923,62.541503889608,57.8484784731818,68.6042444249406,79.0042157251093,78.2308940388735,76.5569992905463,37.8850131784619,49.2181862541659,39.018373509298,85.4840709658724,70.2200766212887,101.803718995894,69.1644228528679,65.5377543494544,54.2046566004726,98.1771306135942,58.2846575613417,52.8447083685654,74.8385582598994,91.220903575135,87.7052071401246,93.6438735036239,86.8471455738026],"Archive124_field14":[1000,930,230,300,615,965,580,265,650,422.5,807.5,457.5,597.5,405,247.5,343.75,326.25,400.625,467.34375,282.5,524.21875,603.583984375,558.293269230769,662.096196018893,762.465230622135,755,738.84639298261,365.625,475,376.5625,825,677.690110514023,982.5,667.5,632.5,523.125,947.5,562.5,510,722.26146697998,880.366544076463,846.436263335288,903.75,838.155811802372,1000,930,230,300,615,965,580,265,650,422.5,807.5,457.5,597.5,405,247.5,343.75,326.25,400.625,467.34375,282.5,524.21875,603.583984375,558.293269230769,662.096196018893,762.465230622136,755,738.84639298261,365.625,475,376.5625,825,677.690110514023,982.5,667.5,632.5,523.125,947.5,562.5,510,722.26146697998,880.366544076463,846.436263335288,903.75,838.155811802372,1000,930,230,300,615,965,580,265,650,422.5,807.5,457.5,597.5,405,247.5,343.75,326.25,400.625,467.34375,282.5,524.21875,603.583984375,558.293269230769,662.096196018893,762.465230622135,755,738.84639298261,365.625,475,376.5625,825,677.690110514023,982.5,667.5,632.5,523.125,947.5,562.5,510,722.26146697998,880.366544076463,846.436263335288,903.75,838.155811802372],"Archive124_field15":[0,0,0,0,47.7447485196268,0,0,0,0,77.2578616093994,76.3384364840443,-52.9145139676616,22.7126828654074,0,0,-33.1148155663795,51.50476715985,-2.72663671443962,69.5013808395298,0,17.4409014908839,78.6010997919392,58.6570955156778,18.4544721495892,94.2125908823256,0,41.5064038889933,-98.1457455880978,0,-3.09336348921111,0,74.8409989188422,0,0,18.3061007402169,-45.5469377220406,0,0,-31.2243975264494,-43.1073882390528,-61.0359236798009,-17.0105819233313,36.5419521997341,23.5108787092688,0,0,0,0,47.7439247611537,0,0,0,0,77.2575046230825,76.3421562436679,-52.9159127504651,22.7140875709328,0,0,-33.1148229955027,51.5022009736585,-2.72802076664614,69.5015553431868,0,17.439757535366,78.6025732817772,58.6585924724815,18.4554548020106,94.211554140057,0,41.5022155918062,-98.1460320992969,0,-3.08934241783433,0,74.8403010567142,0,0,18.2989137937938,-45.5541677394011,0,0,-31.2165954650672,-43.0991903514149,-61.0362585881302,-17.013581227914,36.5453014270991,23.5104802684929,0,0,0,0,47.7431919765044,0,0,0,0,77.2572111407537,76.3468867177509,-52.9168244043267,22.7145082203149,0,0,-33.1147404490009,51.5001014559328,-2.729365892642,69.5018224355765,0,17.438166853698,78.6043124076598,58.6604749404275,18.4566184326658,94.2108656048251,0,41.4975081954386,-98.146433916582,0,-3.08600411195687,0,74.8390320272113,0,0,18.2921041558339,-45.560297097654,0,0,-31.2096165058186,-43.0905781558831,-61.0359804690144,-17.0180859961102,36.5498776772989,23.5094564353833],"Archive124_field16":[0,0,0,0,689.831826287093,0,0,0,0,539.21902976535,322.878777676898,561.662690393411,620.615183105311,0,0,-7.79905151402374,92.7649574009797,560.620823087816,718.651217910771,0,663.308026670326,519.379858366251,688.574959595755,669.361827060974,686.756675777423,0,448.628066556562,74.0218419664398,0,152.785537261635,0,654.497403605316,0,0,458.357934027744,313.759058605116,0,0,279.243776376394,224.546645678539,59.5765960205769,45.8412725811808,33.4879206838524,130.948571754722,0,0,0,0,689.830879721792,0,0,0,0,539.217668108986,322.883944059898,561.663992077577,620.615184992725,0,0,-7.80416855887176,92.7627233153108,560.619865925379,718.651166011365,0,663.308269792704,519.38129306786,688.574215107699,669.361363250621,686.757978438206,0,448.631705371027,74.0139319128672,0,152.782706309133,0,654.496676076798,0,0,458.358934317481,313.758045642582,0,0,279.243980757428,224.547351967723,59.5859234102689,45.8444272309457,33.4914613472804,130.956143272754,0,0,0,0,689.829712646117,0,0,0,0,539.216350075133,322.88776221202,561.664333243597,620.614837041074,0,0,-7.80768741703708,92.7610679737002,560.618719325762,718.650631970268,0,663.308477490752,519.38180721487,688.573246061826,669.359733453803,686.755395768555,0,448.632779712497,74.0079647673773,0,152.780456111638,0,654.495501088811,0,0,458.358788966992,313.75725850866,0,0,279.243920950301,224.547465140669,59.5987747282937,45.8487501025932,33.4962951739714,130.965124210908],"Archive124_field17":[0,0,0,0,691.489118005145,0,0,0,0,544.737870285909,331.790435484115,564.166127491081,621.042480551245,0,0,34.1059058547275,106.122175606449,560.638067653475,722.008991238528,0,663.543923431699,525.303003257062,691.074229556985,669.623862420717,693.194449987183,0,450.550025055325,122.991658628678,0,152.843369923102,0,658.772117219355,0,0,458.729952315797,317.058768976943,0,0,280.997791238781,228.65444751076,85.2965565036809,48.897205014859,49.5659940734374,133.051003207204,0,0,0,0,691.487245228781,0,0,0,0,544.733922470792,331.802532888042,564.164647765667,621.041433467588,0,0,34.0699867008592,106.113636938271,560.633951157137,722.007926814179,0,663.544674061733,525.30580577449,691.074197681587,669.624407038756,693.199773905601,0,450.55796375535,122.966978819035,0,152.834339307796,0,658.771751786986,0,0,458.730415155929,317.057393767875,0,0,280.995198931199,228.657356526796,85.3214661112327,48.906497744095,49.575662033554,133.073583380641,0,0,0,0,691.485216777075,0,0,0,0,544.730322907824,331.815044318583,564.162450375588,621.040054572388,0,0,34.0441620463073,106.106763268067,560.630205038392,722.006515182912,0,663.545398220247,525.307806800642,691.074004507892,669.623849718208,693.20244543937,0,450.564651917116,122.947546363219,0,152.826705771643,0,658.770886384554,0,0,458.729753277797,317.056180724502,0,0,280.992581907651,228.660369308288,85.3624658291431,48.9211295898961,49.5928313802385,133.105021415308],"Archive124_field18":[8882983.99111194,8420545.92622352,2344876.77756529,2829202.96665773,5588073.27495681,8479342.89596413,5145238.11912696,2927956.36971441,5913174.68558175,3782617.11269683,7300313.75454741,4325756.17070972,5446217.64613443,4101620.38427357,2999739.46274525,3057675.42978875,2688826.81427657,3638728.50634691,4348805.67642644,3051969.05360471,4682619.36254849,5373378.89614562,4995172.11007638,5893107.78717342,6626196.85614121,6474683.0601602,6551198.14546337,3200967.23109246,4540691.77884192,3330742.63830708,7023319.63970479,6017439.06088321,8260799.68405845,6159563.76414497,5680436.72251245,4657866.82362006,7971474.24177702,5014684.03122618,4586352.72160115,6501468.43220134,7950311.91747173,7668231.75356904,8278161.04629457,7539890.35288907,4385072.1247358,4237460.68672925,1310332.94385101,1479866.48945059,2821932.50869761,4138754.50727326,2536422.75837812,1735956.07785358,2989559.99277714,1882329.9850567,3668251.78321033,2268068.5098038,2758753.37334169,2279874.86042543,1886390.71310187,1511889.5515566,1221625.82910484,1836823.77440344,2246750.19742121,1781322.36159494,2324737.2494899,2658486.22617367,2484013.08296959,2915043.00441427,3196588.45192334,3078803.7219615,3227892.80019593,1556643.91530056,2404147.55587062,1637109.35360493,3312519.62949697,2969241.93056466,3841580.57487749,3157225.47773931,2835524.16590142,2304978.33273871,3709722.10452313,2484611.88156792,2292464.02827642,3252793.04353332,3990524.83262486,3861021.77037439,4213183.21948672,3769948.15398001,-112835.605378732,54370.7546417968,275780.536695937,130536.238414765,55760.6289464792,-201831.551736742,-72397.2263468143,543958.604244545,65942.2175949996,-17965.0806023121,36192.8492462769,210379.533908804,71287.7395754266,458131.687149211,773044.578691411,-33889.5194579978,-245569.429316603,34909.6817606297,144697.270432077,510669.07365017,-33131.4749501518,-56406.8019361654,-27135.5822321538,-63014.386141949,-233022.491283498,-317076.765445799,-95416.6994490664,-87672.7926429272,267602.085649446,-56525.6765139626,-398286.689727984,-78964.1442407597,-577645.584384186,154891.722775407,-9388.5983281569,-47905.6332729353,-552032.513771438,-45458.6042554185,-1423.34183270072,4124.06475915545,30742.1517320933,53819.0818353046,148210.023456684,4.16234109808039],"Archive124_field19":[-896.383037097375,-833.636213880136,-206.167982616388,-268.914807302583,-551.275849492257,-865.009626288183,-519.902098640991,-237.541395739206,-582.648921191305,-378.721992493843,-723.829372015578,-410.095389573826,-535.589068771784,-363.035041327319,-221.854690071041,-308.131713089027,-292.444930237899,-359.113640083105,-418.919270619891,-253.228100592346,-469.901035997368,-541.042563942405,-500.444873045113,-593.49204260497,-683.461066945618,-676.769155985392,-662.289441701887,-327.740109470953,-425.781862898496,-337.544223707428,-739.515979007839,-607.470129480331,-880.696330085456,-598.335626853627,-566.962332928923,-468.920431049247,-849.322919628867,-504.215393604716,-457.15538356143,-647.422963949112,-789.145652186138,-758.731092060138,-810.106156358902,-751.308687659566,-896.383037097375,-833.636213880136,-206.167982616388,-268.914807302583,-551.275849492257,-865.009626288183,-519.902098640991,-237.541395739206,-582.648921191305,-378.721992493843,-723.829372015578,-410.095389573826,-535.589068771784,-363.035041327319,-221.854690071041,-308.131713089027,-292.444930237899,-359.113640083105,-418.919270619891,-253.228100592346,-469.901035997368,-541.042563942405,-500.444873045113,-593.49204260497,-683.461066945618,-676.769155985392,-662.289441701886,-327.740109470953,-425.781862898496,-337.544223707428,-739.515979007839,-607.470129480331,-880.696330085456,-598.335626853627,-566.962332928923,-468.920431049247,-849.322919628867,-504.215393604716,-457.15538356143,-647.422963949112,-789.145652186138,-758.731092060138,-810.106156358902,-751.308687659566,-896.383037097375,-833.636213880136,-206.167982616388,-268.914807302583,-551.275849492257,-865.009626288183,-519.902098640991,-237.541395739206,-582.648921191305,-378.721992493843,-723.829372015578,-410.095389573826,-535.589068771784,-363.035041327319,-221.854690071041,-308.131713089027,-292.444930237899,-359.113640083105,-418.919270619891,-253.228100592346,-469.901035997368,-541.042563942405,-500.444873045113,-593.49204260497,-683.461066945618,-676.769155985392,-662.289441701887,-327.740109470953,-425.781862898496,-337.544223707428,-739.515979007839,-607.470129480331,-880.696330085456,-598.335626853627,-566.962332928923,-468.920431049247,-849.322919628867,-504.215393604716,-457.15538356143,-647.422963949112,-789.145652186138,-758.731092060138,-810.106156358902,-751.308687659566],"Archive124_field20":[103.617113339497,96.3639363918192,23.8321670199911,31.0853441374847,63.7243273464249,99.9905249580108,60.0980517513092,27.458755668852,67.3512286218952,43.7781973892345,83.6707394347332,47.4048010655931,61.9111045518483,41.9651094664118,25.6454614476906,35.6184777620312,33.805243129297,41.5115615554506,48.4246646284559,29.2720497958097,54.3178702839347,62.5415693289266,57.8485486697105,68.604308971491,79.0042702802268,78.2309940397492,76.5570606549199,37.8850884909161,49.2182862238214,39.0184522076947,85.4841709649195,70.2201398917386,101.803818962957,69.1645228423962,65.537831057489,54.204733809376,98.1772306222832,58.2847576031605,52.8447848735625,74.8386315452186,91.220972887136,87.7052946395989,93.6439610149113,86.8472102484066,103.617113339497,96.3639363918192,23.8321670199911,31.0853441374847,63.7243273464249,99.9905249580108,60.0980517513092,27.458755668852,67.3512286218952,43.7781973892345,83.6707394347332,47.4048010655931,61.9111045518483,41.9651094664118,25.6454614476906,35.6184777620312,33.805243129297,41.5115615554506,48.4246646284559,29.2720497958097,54.3178702839347,62.5415693289266,57.8485486697105,68.6043089714911,79.0042702802268,78.2309940397492,76.5570606549199,37.8850884909161,49.2182862238214,39.0184522076947,85.4841709649195,70.2201398917386,101.803818962957,69.1645228423962,65.537831057489,54.204733809376,98.1772306222832,58.2847576031605,52.8447848735625,74.8386315452186,91.220972887136,87.7052946395989,93.6439610149113,86.8472102484067,103.617113339497,96.3639363918192,23.8321670199911,31.0853441374847,63.7243273464249,99.9905249580108,60.0980517513092,27.458755668852,67.3512286218952,43.7781973892345,83.6707394347332,47.4048010655931,61.9111045518483,41.9651094664118,25.6454614476906,35.6184777620312,33.805243129297,41.5115615554506,48.4246646284559,29.2720497958097,54.3178702839347,62.5415693289266,57.8485486697105,68.604308971491,79.0042702802268,78.2309940397492,76.5570606549199,37.8850884909161,49.2182862238214,39.0184522076947,85.4841709649195,70.2201398917386,101.803818962957,69.1645228423962,65.537831057489,54.204733809376,98.1772306222832,58.2847576031605,52.8447848735625,74.8386315452186,91.220972887136,87.7052946395989,93.6439610149113,86.8472102484066],"Archive124_field21":[1000,930,230,300,615,965,580,265,650,422.5,807.5,457.5,597.5,405,247.5,343.75,326.25,400.625,467.34375,282.5,524.21875,603.583984375,558.293269230769,662.096196018893,762.465230622135,755,738.84639298261,365.625,475,376.5625,825,677.690110514023,982.5,667.5,632.5,523.125,947.5,562.5,510,722.26146697998,880.366544076463,846.436263335288,903.75,838.155811802372,1000,930,230,300,615,965,580,265,650,422.5,807.5,457.5,597.5,405,247.5,343.75,326.25,400.625,467.34375,282.5,524.21875,603.583984375,558.293269230769,662.096196018893,762.465230622136,755,738.84639298261,365.625,475,376.5625,825,677.690110514023,982.5,667.5,632.5,523.125,947.5,562.5,510,722.26146697998,880.366544076463,846.436263335288,903.75,838.155811802372,1000,930,230,300,615,965,580,265,650,422.5,807.5,457.5,597.5,405,247.5,343.75,326.25,400.625,467.34375,282.5,524.21875,603.583984375,558.293269230769,662.096196018893,762.465230622135,755,738.84639298261,365.625,475,376.5625,825,677.690110514023,982.5,667.5,632.5,523.125,947.5,562.5,510,722.26146697998,880.366544076463,846.436263335288,903.75,838.155811802372]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive125.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive125.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive125.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive125_field1":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive125_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive125_field3":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive125_field4":[0],"Archive125_field5":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive125_field6":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive125_field7":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive125_field8":[0],"Archive125_field9":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive125_field10":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive125_field11":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive125_field12":[0],"Archive125_field13":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive125_field14":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive125_field15":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive125_field16":[0],"Archive125_field17":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive125_field18":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive125_field19":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive125_field20":[0],"Archive125_field21":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive125_field22":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive125_field23":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive125_field24":[0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive126.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive126.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive126.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive126_field1":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field3":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field4":[0],"Archive126_field5":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field6":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field7":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field8":[0],"Archive126_field9":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field10":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field11":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field12":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field13":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field14":[0],"Archive126_field15":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field16":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field17":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field18":[0],"Archive126_field19":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field20":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field21":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field22":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field23":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field24":[0],"Archive126_field25":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field26":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field27":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field28":[0],"Archive126_field29":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive126_field30":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1301.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1301.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1301.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1301_field1":[0.000102959767968986,0.000102959766549359,0.000102954253127923,0.000102954117157749,0.000102935959557652,0.000102947307508265,0.000102947324763576,0.00010294479350345,0.00010295553174707,0.000102927243998783,0.000102942583614457,0.000102942317135517,0.000102932143548924,0.000102948740103368,0.000102943226579234,0.00010292667449767,0.000102921179771191,0.000102943228875868,0.000102954252919697,0.00010294531440448,0.000102930825845097,0.000102932879188819,0.000102948738478706,0.000102941647034623,0.000102951909578041,0.000102932883100376,0.000102932908662681,0.000102946672050454,0.000102944474871307,0.000102947048168245,0.000102935365374417,0.000102936141726836,0.000102953945443009,0.000102932574662359,0.000102952094516926,0.000102937402040255,0.000102940099119416,0.000102930305691702,0.000102938279973117,0.000102935953739384,0.000102943482751212,0.000102929435060163,0.000102942472529758,0.000102948834528134,0.000102936839971815,0.000102939034645905,0.000102947361796392,0.000102945140655162,0.000102952507417428,0.000102927562797654,0.00010294381284293,0.000102934918049152,0.000102949085822413,0.000102939916058392,0.000102944439958319,0.000102937195409842,0.000102932577853269,0.000102948515742482,0.000102931586358102,0.000102936877621424,0.000102946081153876,0.000102933166983119,0.000102933363061588,0.000102948914698645,0.000102954388941118,0.000102944671653799,0.000102937434445108,0.000102937459051292,0.000102932291347548,0.000102940261491005,0.00010294808011298,0.000102946836946611,0.000102951171543765,0.000102942855100019,0.000102936507186639,0.000102942532073214,0.000102942558765292,0.000102930637023702,0.000102944580112723,0.000102938831132274,0.000102938965878996,0.000102940595655381,0.000102954251295552,0.000102954251501591,0.000102949936151866,0.000102934147081201,0.000102944137414508,0.00010294735857021,0.000102935086591478,0.000102950168663027,0.000102942402798798,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1302.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1302.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1302.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1302_field1":[10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9.92140711228369,9.92140711228368,9.9214071122837,9.9214071122837,9.92140711228369,9.92140711228373,9.92140711228372,9.92140711228368,9.92140711228372,9.92140711228372,9.92140711228369,9.92140711228372,9.9214071122837,9.92140711228369,9.92140711228372,9.92140711228372,9.92140711228373,9.92140711228369,9.9214071122837,9.92140711228373,9.92140711228371,9.92140711228374,9.92140711228369,9.92140711228374,9.92140711228373,9.92140711228371,9.9214071122837,9.92140711228373,9.92140711228371,9.92140711228371,9.92140711228366,9.92140711228368,9.92140711228372,9.92140711228373,9.92140711228374,9.92140711228367,9.9214071122837,9.92140711228372,9.92140711228369,9.92140711228376,9.9214071122837,9.9214071122837,9.92140711228373,9.92140711228369,9.92140711228373,9.92140711228367,9.9214071122837,9.92140711228372,9.92140711228367,9.92140711228372,9.92140711228367,9.92140711228376,9.92140711228369,9.92140711228372,9.92140711228367,9.9214071122837,9.9214071122837,9.92140711228373,9.92140711228372,9.92140711228369,9.92140711228372,9.9214071122837,9.92140711228367,9.92140711228369,9.92140711228369,9.92140711228371,9.92140711228371,9.92140711228371,9.9214071122837,9.9214071122837,9.92140711228364,9.92140711228371,9.92140711228372,9.92140711228373,9.92140711228371,9.92140711228366,9.92140711228373,9.92140711228369,9.9214071122837,9.92140711228373,9.92140711228373,9.92140711228372,9.9214071122837,9.92140711228369,9.92140711228373,9.92140711228372,9.9214071122837,9.92140711228372,9.92140711228369,9.92140711228377,9.92140711228366,9.83563244311886,9.83563244311883,9.83563244311886,9.83563244311887,9.83563244311887,9.83563244311892,9.8356324431189,9.83563244311885,9.83563244311892,9.83563244311891,9.83563244311886,9.83563244311892,9.83563244311887,9.83563244311886,9.83563244311892,9.83563244311891,9.83563244311893,9.83563244311884,9.83563244311888,9.83563244311893,9.83563244311888,9.83563244311896,9.83563244311886,9.83563244311895,9.83563244311893,9.8356324431189,9.83563244311887,9.83563244311893,9.83563244311888,9.83563244311889,9.83563244311879,9.83563244311884,9.83563244311891,9.83563244311893,9.83563244311896,9.83563244311882,9.83563244311888,9.83563244311892,9.83563244311885,9.83563244311899,9.83563244311888,9.83563244311888,9.83563244311892,9.83563244311885,9.83563244311895,9.83563244311882,9.83563244311888,9.83563244311892,9.83563244311882,9.83563244311891,9.83563244311881,9.83563244311899,9.83563244311885,9.8356324431189,9.83563244311881,9.83563244311888,9.83563244311888,9.83563244311893,9.83563244311892,9.83563244311885,9.83563244311891,9.83563244311888,9.8356324431188,9.83563244311885,9.83563244311887,9.83563244311888,9.8356324431189,9.83563244311889,9.83563244311887,9.83563244311888,9.83563244311876,9.83563244311891,9.83563244311892,9.83563244311892,9.8356324431189,9.83563244311881,9.83563244311894,9.83563244311884,9.83563244311888,9.83563244311894,9.83563244311895,9.83563244311892,9.83563244311889,9.83563244311886,9.83563244311893,9.83563244311891,9.83563244311887,9.83563244311892,9.83563244311886,9.83563244311901,9.8356324431188,9.74201972466406,9.74201972466401,9.74201972466406,9.74201972466408,9.74201972466407,9.74201972466415,9.74201972466412,9.74201972466405,9.74201972466415,9.74201972466413,9.74201972466407,9.74201972466415,9.74201972466407,9.74201972466407,9.74201972466415,9.74201972466415,9.74201972466415,9.74201972466403,9.74201972466408,9.74201972466416,9.74201972466409,9.74201972466422,9.74201972466406,9.74201972466418,9.74201972466417,9.74201972466413,9.74201972466407,9.74201972466416,9.74201972466409,9.74201972466411,9.74201972466397,9.74201972466403,9.74201972466415,9.74201972466416,9.74201972466421,9.742019724664,9.7420197246641,9.74201972466415,9.74201972466405,9.74201972466425,9.7420197246641,9.74201972466409,9.74201972466416,9.74201972466405,9.74201972466419,9.74201972466401,9.74201972466409,9.74201972466414,9.742019724664,9.74201972466412,9.74201972466399,9.74201972466424,9.74201972466405,9.74201972466411,9.74201972466399,9.74201972466409,9.7420197246641,9.74201972466416,9.74201972466415,9.74201972466405,9.74201972466415,9.7420197246641,9.74201972466397,9.74201972466405,9.74201972466408,9.7420197246641,9.74201972466412,9.74201972466411,9.74201972466408,9.74201972466409,9.74201972466392,9.74201972466412,9.74201972466414,9.74201972466415,9.74201972466413,9.74201972466399,9.74201972466417,9.74201972466403,9.74201972466408,9.74201972466419,9.7420197246642,9.74201972466415,9.74201972466411,9.74201972466406,9.74201972466417,9.74201972466413,9.74201972466407,9.74201972466415,9.74201972466407,9.74201972466429,9.74201972466396,9.63985271962837,9.63985271962832,9.63985271962837,9.63985271962841,9.63985271962841,9.63985271962849,9.63985271962846,9.63985271962835,9.63985271962849,9.63985271962847,9.63985271962838,9.63985271962849,9.63985271962838,9.63985271962839,9.63985271962849,9.6398527196285,9.63985271962849,9.63985271962833,9.6398527196284,9.63985271962851,9.63985271962841,9.63985271962859,9.63985271962837,9.63985271962853,9.63985271962851,9.63985271962846,9.63985271962841,9.63985271962851,9.63985271962841,9.63985271962845,9.63985271962826,9.63985271962834,9.63985271962849,9.63985271962848,9.63985271962858,9.63985271962829,9.63985271962844,9.63985271962848,9.63985271962835,9.63985271962862,9.63985271962844,9.63985271962842,9.6398527196285,9.63985271962835,9.63985271962854,9.63985271962831,9.63985271962842,9.63985271962847,9.6398527196283,9.63985271962846,9.63985271962827,9.63985271962861,9.63985271962837,9.63985271962844,9.63985271962829,9.63985271962843,9.63985271962843,9.6398527196285,9.6398527196285,9.63985271962837,9.6398527196285,9.63985271962842,9.63985271962826,9.63985271962837,9.6398527196284,9.63985271962842,9.63985271962844,9.63985271962846,9.6398527196284,9.63985271962842,9.63985271962821,9.63985271962846,9.63985271962847,9.63985271962849,9.63985271962846,9.63985271962828,9.63985271962853,9.63985271962835,9.6398527196284,9.63985271962854,9.63985271962855,9.63985271962849,9.63985271962845,9.63985271962838,9.63985271962853,9.63985271962847,9.63985271962838,9.63985271962849,9.63985271962838,9.63985271962867,9.63985271962826,9.52834974129108,9.52834974129101,9.52834974129107,9.52834974129111,9.52834974129111,9.52834974129123,9.52834974129118,9.52834974129105,9.52834974129121,9.52834974129119,9.52834974129109,9.52834974129122,9.52834974129107,9.5283497412911,9.52834974129122,9.52834974129123,9.52834974129121,9.52834974129101,9.52834974129109,9.52834974129124,9.52834974129112,9.52834974129134,9.52834974129107,9.52834974129125,9.52834974129123,9.52834974129118,9.52834974129111,9.52834974129123,9.52834974129111,9.52834974129117,9.52834974129093,9.52834974129102,9.52834974129121,9.52834974129121,9.52834974129132,9.52834974129097,9.52834974129116,9.5283497412912,9.52834974129106,9.52834974129137,9.52834974129115,9.52834974129113,9.52834974129123,9.52834974129105,9.52834974129126,9.528349741291,9.52834974129114,9.52834974129119,9.52834974129098,9.52834974129117,9.52834974129094,9.52834974129135,9.52834974129106,9.52834974129115,9.52834974129096,9.52834974129114,9.52834974129115,9.52834974129123,9.52834974129122,9.52834974129106,9.52834974129123,9.52834974129112,9.52834974129094,9.52834974129109,9.52834974129109,9.52834974129114,9.52834974129114,9.52834974129117,9.5283497412911,9.52834974129113,9.52834974129088,9.52834974129117,9.52834974129119,9.52834974129122,9.52834974129119,9.52834974129095,9.52834974129126,9.52834974129104,9.52834974129111,9.52834974129128,9.52834974129127,9.52834974129122,9.52834974129116,9.52834974129108,9.52834974129126,9.52834974129119,9.52834974129108,9.52834974129121,9.52834974129108,9.52834974129142,9.52834974129094,9.40665767276321,9.40665767276314,9.4066576727632,9.40665767276326,9.40665767276326,9.4066576727634,9.40665767276335,9.40665767276319,9.40665767276338,9.40665767276334,9.40665767276323,9.40665767276338,9.4066576727632,9.40665767276325,9.40665767276339,9.4066576727634,9.40665767276336,9.40665767276314,9.40665767276323,9.4066576727634,9.40665767276327,9.40665767276353,9.4066576727632,9.40665767276341,9.40665767276339,9.40665767276333,9.40665767276326,9.4066576727634,9.40665767276325,9.40665767276332,9.40665767276306,9.40665767276316,9.40665767276337,9.40665767276338,9.40665767276349,9.4066576727631,9.4066576727633,9.40665767276335,9.4066576727632,9.40665767276354,9.40665767276331,9.40665767276328,9.40665767276339,9.40665767276319,9.40665767276342,9.40665767276313,9.40665767276329,9.40665767276334,9.40665767276312,9.40665767276331,9.40665767276306,9.40665767276353,9.40665767276321,9.40665767276331,9.40665767276308,9.40665767276329,9.40665767276331,9.40665767276338,9.40665767276338,9.40665767276321,9.4066576727634,9.40665767276326,9.40665767276306,9.40665767276324,9.40665767276324,9.4066576727633,9.40665767276327,9.40665767276333,9.40665767276325,9.40665767276327,9.406657672763,9.40665767276333,9.40665767276334,9.40665767276339,9.40665767276332,9.40665767276308,9.40665767276342,9.40665767276316,9.40665767276326,9.40665767276346,9.40665767276344,9.4066576727634,9.40665767276331,9.40665767276322,9.40665767276344,9.40665767276334,9.40665767276323,9.40665767276337,9.40665767276323,9.40665767276361,9.40665767276307,9.27384543973216,9.27384543973209,9.27384543973216,9.27384543973222,9.27384543973222,9.27384543973239,9.27384543973233,9.27384543973214,9.27384543973235,9.27384543973229,9.27384543973219,9.27384543973234,9.27384543973214,9.27384543973222,9.27384543973235,9.27384543973238,9.27384543973232,9.2738454397321,9.27384543973218,9.27384543973237,9.27384543973223,9.27384543973252,9.27384543973215,9.2738454397324,9.27384543973235,9.27384543973228,9.27384543973223,9.27384543973237,9.27384543973219,9.27384543973228,9.27384543973199,9.2738454397321,9.27384543973235,9.27384543973235,9.27384543973248,9.27384543973204,9.27384543973226,9.27384543973231,9.27384543973216,9.27384543973253,9.27384543973228,9.27384543973223,9.27384543973236,9.27384543973214,9.27384543973239,9.27384543973207,9.27384543973225,9.2738454397323,9.27384543973207,9.27384543973228,9.27384543973199,9.27384543973252,9.27384543973217,9.27384543973226,9.27384543973201,9.27384543973225,9.27384543973228,9.27384543973235,9.27384543973236,9.27384543973216,9.27384543973238,9.27384543973221,9.27384543973199,9.27384543973221,9.2738454397322,9.27384543973227,9.27384543973221,9.27384543973228,9.2738454397322,9.27384543973222,9.27384543973193,9.27384543973229,9.2738454397323,9.27384543973236,9.27384543973227,9.27384543973203,9.27384543973239,9.27384543973211,9.27384543973222,9.27384543973246,9.27384543973241,9.27384543973238,9.27384543973226,9.27384543973217,9.27384543973242,9.27384543973229,9.27384543973219,9.27384543973235,9.27384543973219,9.2738454397326,9.27384543973201,9.12889688674857,9.12889688674849,9.12889688674856,9.12889688674865,9.12889688674862,9.12889688674883,9.12889688674876,9.12889688674855,9.12889688674878,9.1288968867487,9.1288968867486,9.12889688674876,9.12889688674853,9.12889688674864,9.12889688674877,9.12889688674881,9.12889688674874,9.12889688674851,9.12889688674858,9.12889688674879,9.12889688674865,9.12889688674897,9.12889688674855,9.12889688674882,9.12889688674877,9.1288968867487,9.12889688674865,9.1288968867488,9.1288968867486,9.12889688674868,9.12889688674838,9.12889688674851,9.12889688674878,9.12889688674879,9.12889688674892,9.12889688674844,9.12889688674868,9.12889688674873,9.12889688674858,9.12889688674896,9.12889688674871,9.12889688674864,9.12889688674879,9.12889688674854,9.12889688674881,9.12889688674847,9.12889688674867,9.12889688674872,9.12889688674847,9.12889688674869,9.12889688674838,9.12889688674895,9.12889688674859,9.12889688674868,9.12889688674839,9.12889688674866,9.12889688674871,9.12889688674878,9.12889688674879,9.12889688674857,9.12889688674881,9.12889688674863,9.12889688674839,9.12889688674862,9.12889688674861,9.12889688674869,9.12889688674861,9.1288968867487,9.12889688674862,9.12889688674862,9.12889688674831,9.12889688674871,9.12889688674872,9.12889688674878,9.12889688674867,9.12889688674842,9.12889688674882,9.12889688674851,9.12889688674862,9.12889688674892,9.12889688674884,9.12889688674881,9.12889688674868,9.12889688674859,9.12889688674886,9.12889688674871,9.1288968867486,9.12889688674877,9.12889688674862,9.12889688674903,9.1288968867484,8.97070300255173,8.97070300255164,8.97070300255172,8.97070300255182,8.97070300255178,8.97070300255202,8.97070300255195,8.97070300255172,8.97070300255196,8.97070300255186,8.97070300255177,8.97070300255192,8.97070300255167,8.9707030025518,8.97070300255194,8.97070300255199,8.9707030025519,8.97070300255167,8.97070300255174,8.97070300255196,8.97070300255182,8.97070300255217,8.9707030025517,8.970703002552,8.97070300255194,8.97070300255185,8.97070300255182,8.97070300255199,8.97070300255175,8.97070300255184,8.97070300255153,8.97070300255167,8.97070300255196,8.97070300255197,8.97070300255212,8.97070300255159,8.97070300255184,8.9707030025519,8.97070300255174,8.97070300255215,8.97070300255188,8.97070300255179,8.97070300255197,8.9707030025517,8.97070300255198,8.97070300255163,8.97070300255185,8.97070300255188,8.97070300255162,8.97070300255185,8.97070300255152,8.97070300255213,8.97070300255176,8.97070300255184,8.97070300255154,8.97070300255183,8.9707030025519,8.97070300255195,8.97070300255197,8.97070300255172,8.970703002552,8.97070300255179,8.97070300255154,8.9707030025518,8.97070300255177,8.97070300255186,8.97070300255175,8.97070300255186,8.97070300255178,8.97070300255178,8.97070300255145,8.97070300255188,8.97070300255188,8.97070300255195,8.97070300255182,8.97070300255157,8.97070300255199,8.97070300255167,8.97070300255178,8.97070300255212,8.97070300255201,8.97070300255199,8.97070300255186,8.97070300255176,8.97070300255205,8.97070300255188,8.97070300255177,8.97070300255194,8.97070300255178,8.97070300255223,8.97070300255155,8.79805343494884,8.79805343494873,8.79805343494882,8.79805343494894,8.79805343494888,8.79805343494915,8.79805343494907,8.79805343494882,8.79805343494908,8.79805343494895,8.79805343494887,8.79805343494903,8.79805343494874,8.79805343494892,8.79805343494904,8.79805343494912,8.79805343494901,8.79805343494878,8.79805343494884,8.79805343494906,8.79805343494893,8.79805343494931,8.7980534349488,8.79805343494911,8.79805343494904,8.79805343494895,8.79805343494893,8.79805343494912,8.79805343494884,8.79805343494894,8.79805343494863,8.79805343494876,8.79805343494909,8.79805343494909,8.79805343494924,8.7980534349487,8.79805343494894,8.79805343494901,8.79805343494885,8.79805343494928,8.79805343494898,8.79805343494889,8.79805343494908,8.79805343494879,8.7980534349491,8.79805343494872,8.79805343494895,8.79805343494898,8.79805343494871,8.79805343494897,8.79805343494861,8.79805343494924,8.79805343494888,8.79805343494895,8.79805343494863,8.79805343494892,8.79805343494901,8.79805343494906,8.79805343494909,8.79805343494882,8.79805343494912,8.79805343494889,8.79805343494864,8.79805343494892,8.79805343494888,8.79805343494897,8.79805343494886,8.79805343494895,8.79805343494889,8.79805343494889,8.79805343494854,8.79805343494898,8.79805343494899,8.79805343494907,8.79805343494892,8.79805343494867,8.7980534349491,8.79805343494877,8.79805343494889,8.79805343494925,8.79805343494912,8.79805343494911,8.79805343494897,8.79805343494888,8.79805343494918,8.79805343494898,8.79805343494887,8.79805343494906,8.7980534349489,8.79805343494935,8.79805343494865,8.60962723032781,8.6096272303277,8.6096272303278,8.60962723032792,8.60962723032785,8.60962723032815,8.60962723032806,8.6096272303278,8.60962723032807,8.60962723032792,8.60962723032784,8.60962723032801,8.60962723032771,8.60962723032791,8.60962723032802,8.60962723032813,8.60962723032799,8.60962723032775,8.60962723032781,8.60962723032805,8.60962723032793,8.60962723032832,8.60962723032777,8.6096272303281,8.60962723032802,8.60962723032793,8.60962723032793,8.60962723032812,8.60962723032782,8.60962723032793,8.60962723032759,8.60962723032774,8.60962723032809,8.60962723032809,8.60962723032824,8.60962723032767,8.60962723032792,8.609627230328,8.60962723032782,8.60962723032829,8.60962723032797,8.60962723032787,8.60962723032807,8.60962723032776,8.60962723032809,8.60962723032769,8.60962723032792,8.60962723032796,8.60962723032768,8.60962723032795,8.60962723032759,8.60962723032823,8.60962723032786,8.60962723032793,8.60962723032759,8.60962723032789,8.609627230328,8.60962723032805,8.60962723032809,8.60962723032779,8.60962723032811,8.60962723032786,8.60962723032762,8.60962723032791,8.60962723032786,8.60962723032795,8.60962723032783,8.60962723032792,8.60962723032787,8.60962723032787,8.6096272303275,8.60962723032796,8.60962723032798,8.60962723032806,8.60962723032788,8.60962723032764,8.60962723032809,8.60962723032774,8.60962723032787,8.60962723032826,8.60962723032811,8.60962723032811,8.60962723032796,8.60962723032787,8.60962723032818,8.60962723032797,8.60962723032785,8.60962723032805,8.60962723032788,8.60962723032835,8.60962723032763,8.40398272695121,8.40398272695109,8.4039827269512,8.40398272695133,8.40398272695124,8.40398272695158,8.40398272695147,8.4039827269512,8.40398272695149,8.40398272695131,8.40398272695124,8.40398272695141,8.40398272695109,8.40398272695132,8.40398272695142,8.40398272695155,8.40398272695138,8.40398272695115,8.40398272695119,8.40398272695144,8.40398272695133,8.40398272695174,8.40398272695117,8.4039827269515,8.40398272695141,8.40398272695132,8.40398272695133,8.40398272695153,8.40398272695121,8.40398272695132,8.40398272695098,8.40398272695114,8.4039827269515,8.40398272695152,8.40398272695164,8.40398272695107,8.40398272695132,8.4039827269514,8.40398272695123,8.40398272695169,8.40398272695136,8.40398272695126,8.40398272695147,8.40398272695115,8.40398272695149,8.40398272695109,8.40398272695131,8.40398272695136,8.40398272695108,8.40398272695136,8.40398272695097,8.40398272695163,8.40398272695128,8.40398272695133,8.40398272695098,8.40398272695128,8.40398272695141,8.40398272695146,8.40398272695149,8.40398272695119,8.40398272695152,8.40398272695126,8.40398272695102,8.40398272695131,8.40398272695126,8.40398272695136,8.40398272695123,8.4039827269513,8.40398272695127,8.40398272695127,8.40398272695089,8.40398272695136,8.40398272695138,8.40398272695147,8.40398272695126,8.40398272695103,8.40398272695151,8.40398272695114,8.40398272695126,8.40398272695167,8.40398272695151,8.40398272695152,8.40398272695137,8.40398272695128,8.4039827269516,8.40398272695137,8.40398272695125,8.40398272695146,8.40398272695129,8.40398272695176,8.40398272695103,8.17954652470393,8.17954652470381,8.17954652470392,8.17954652470406,8.17954652470397,8.17954652470433,8.17954652470421,8.17954652470393,8.17954652470423,8.17954652470403,8.17954652470396,8.17954652470414,8.17954652470382,8.17954652470407,8.17954652470414,8.1795465247043,8.17954652470409,8.17954652470388,8.17954652470391,8.17954652470416,8.17954652470405,8.17954652470449,8.17954652470388,8.17954652470424,8.17954652470413,8.17954652470404,8.17954652470407,8.17954652470427,8.17954652470393,8.17954652470405,8.17954652470371,8.17954652470387,8.17954652470425,8.17954652470425,8.17954652470437,8.1795465247038,8.17954652470405,8.17954652470413,8.17954652470395,8.17954652470443,8.17954652470409,8.17954652470399,8.17954652470419,8.17954652470386,8.17954652470421,8.17954652470381,8.17954652470404,8.17954652470408,8.1795465247038,8.1795465247041,8.17954652470369,8.17954652470435,8.17954652470402,8.17954652470405,8.1795465247037,8.179546524704,8.17954652470415,8.17954652470419,8.17954652470423,8.17954652470391,8.17954652470427,8.17954652470399,8.17954652470376,8.17954652470405,8.179546524704,8.17954652470408,8.17954652470395,8.17954652470401,8.179546524704,8.179546524704,8.17954652470361,8.17954652470408,8.1795465247041,8.17954652470421,8.17954652470397,8.17954652470374,8.17954652470425,8.17954652470387,8.17954652470399,8.17954652470442,8.17954652470423,8.17954652470427,8.1795465247041,8.17954652470402,8.17954652470434,8.1795465247041,8.17954652470398,8.17954652470419,8.17954652470403,8.17954652470449,8.17954652470376,7.93460144690172,7.93460144690161,7.93460144690172,7.93460144690185,7.93460144690175,7.93460144690213,7.93460144690201,7.93460144690172,7.93460144690204,7.93460144690181,7.93460144690175,7.93460144690194,7.93460144690161,7.93460144690187,7.93460144690193,7.93460144690211,7.93460144690188,7.93460144690168,7.9346014469017,7.93460144690195,7.93460144690185,7.93460144690229,7.93460144690166,7.93460144690203,7.93460144690191,7.93460144690183,7.93460144690186,7.93460144690207,7.93460144690173,7.93460144690186,7.93460144690149,7.93460144690166,7.93460144690205,7.93460144690206,7.93460144690216,7.93460144690159,7.93460144690185,7.93460144690193,7.93460144690174,7.93460144690222,7.93460144690187,7.93460144690177,7.93460144690198,7.93460144690166,7.934601446902,7.93460144690161,7.93460144690182,7.93460144690188,7.93460144690159,7.93460144690189,7.93460144690147,7.93460144690213,7.93460144690183,7.93460144690184,7.9346014469015,7.93460144690178,7.93460144690195,7.93460144690199,7.93460144690204,7.93460144690171,7.93460144690207,7.93460144690178,7.93460144690155,7.93460144690185,7.93460144690179,7.93460144690188,7.93460144690174,7.93460144690179,7.9346014469018,7.93460144690179,7.93460144690139,7.93460144690187,7.93460144690189,7.93460144690201,7.93460144690175,7.93460144690153,7.93460144690205,7.93460144690166,7.93460144690177,7.93460144690223,7.93460144690202,7.93460144690208,7.93460144690189,7.93460144690182,7.93460144690215,7.93460144690189,7.93460144690177,7.93460144690198,7.93460144690182,7.93460144690228,7.93460144690156,7.66727340205525,7.66727340205513,7.66727340205525,7.66727340205538,7.66727340205527,7.66727340205567,7.66727340205555,7.66727340205525,7.66727340205557,7.66727340205534,7.66727340205528,7.66727340205547,7.66727340205515,7.66727340205541,7.66727340205545,7.66727340205564,7.66727340205539,7.66727340205522,7.66727340205524,7.66727340205547,7.66727340205538,7.66727340205583,7.66727340205519,7.66727340205556,7.66727340205544,7.66727340205536,7.66727340205539,7.6672734020556,7.66727340205525,7.66727340205539,7.66727340205502,7.66727340205519,7.66727340205559,7.66727340205559,7.66727340205569,7.66727340205512,7.66727340205538,7.66727340205545,7.66727340205528,7.66727340205575,7.66727340205539,7.66727340205529,7.66727340205551,7.66727340205519,7.66727340205552,7.66727340205514,7.66727340205536,7.66727340205541,7.66727340205512,7.66727340205542,7.66727340205499,7.66727340205565,7.66727340205537,7.66727340205536,7.66727340205502,7.66727340205531,7.66727340205548,7.66727340205552,7.66727340205558,7.66727340205523,7.66727340205561,7.66727340205531,7.66727340205508,7.66727340205539,7.66727340205532,7.66727340205542,7.66727340205527,7.66727340205531,7.66727340205533,7.66727340205532,7.66727340205492,7.6672734020554,7.66727340205543,7.66727340205554,7.66727340205527,7.66727340205505,7.66727340205558,7.66727340205518,7.6672734020553,7.66727340205576,7.66727340205555,7.66727340205561,7.66727340205541,7.66727340205535,7.66727340205568,7.66727340205543,7.66727340205529,7.66727340205551,7.66727340205535,7.66727340205581,7.66727340205509,7.37551704506839,7.37551704506827,7.37551704506839,7.37551704506851,7.3755170450684,7.37551704506881,7.37551704506868,7.37551704506839,7.37551704506871,7.37551704506849,7.37551704506842,7.37551704506861,7.37551704506829,7.37551704506856,7.37551704506858,7.37551704506877,7.37551704506851,7.37551704506836,7.37551704506838,7.3755170450686,7.37551704506852,7.37551704506896,7.37551704506832,7.3755170450687,7.37551704506857,7.37551704506849,7.37551704506852,7.37551704506874,7.37551704506839,7.37551704506853,7.37551704506816,7.37551704506833,7.37551704506873,7.37551704506873,7.37551704506882,7.37551704506826,7.37551704506853,7.37551704506858,7.37551704506841,7.37551704506888,7.37551704506852,7.37551704506842,7.37551704506864,7.37551704506833,7.37551704506866,7.37551704506828,7.37551704506849,7.37551704506855,7.37551704506826,7.37551704506855,7.37551704506812,7.37551704506877,7.37551704506852,7.3755170450685,7.37551704506816,7.37551704506844,7.37551704506861,7.37551704506864,7.37551704506872,7.37551704506837,7.37551704506874,7.37551704506844,7.37551704506821,7.37551704506853,7.37551704506845,7.37551704506856,7.3755170450684,7.37551704506844,7.37551704506846,7.37551704506846,7.37551704506806,7.37551704506854,7.37551704506857,7.37551704506868,7.37551704506841,7.37551704506819,7.37551704506872,7.37551704506831,7.37551704506844,7.37551704506889,7.37551704506868,7.37551704506876,7.37551704506855,7.37551704506849,7.37551704506882,7.37551704506857,7.37551704506842,7.37551704506864,7.3755170450685,7.37551704506894,7.37551704506823,7.05710012816341,7.0571001281633,7.05710012816342,7.05710012816354,7.05710012816343,7.05710012816383,7.05710012816371,7.05710012816342,7.05710012816374,7.05710012816351,7.05710012816346,7.05710012816363,7.05710012816333,7.05710012816359,7.05710012816361,7.05710012816381,7.05710012816354,7.0571001281634,7.05710012816342,7.05710012816362,7.05710012816354,7.05710012816399,7.05710012816335,7.05710012816372,7.05710012816359,7.05710012816352,7.05710012816354,7.05710012816376,7.05710012816342,7.05710012816356,7.05710012816319,7.05710012816336,7.05710012816377,7.05710012816375,7.05710012816383,7.0571001281633,7.05710012816356,7.0571001281636,7.05710012816345,7.0571001281639,7.05710012816354,7.05710012816345,7.05710012816367,7.05710012816336,7.05710012816369,7.05710012816331,7.05710012816351,7.05710012816358,7.05710012816329,7.05710012816357,7.05710012816315,7.05710012816379,7.05710012816356,7.05710012816352,7.05710012816318,7.05710012816347,7.05710012816363,7.05710012816366,7.05710012816375,7.0571001281634,7.05710012816377,7.05710012816347,7.05710012816324,7.05710012816356,7.05710012816347,7.05710012816359,7.05710012816342,7.05710012816346,7.05710012816349,7.05710012816348,7.05710012816309,7.05710012816357,7.0571001281636,7.05710012816371,7.05710012816343,7.05710012816322,7.05710012816375,7.05710012816334,7.05710012816348,7.05710012816392,7.0571001281637,7.05710012816379,7.05710012816358,7.05710012816352,7.05710012816384,7.0571001281636,7.05710012816345,7.05710012816367,7.05710012816352,7.05710012816396,7.05710012816327,6.70958642180111,6.70958642180101,6.70958642180112,6.70958642180124,6.70958642180112,6.70958642180152,6.70958642180141,6.70958642180112,6.70958642180144,6.7095864218012,6.70958642180116,6.70958642180133,6.70958642180104,6.70958642180129,6.7095864218013,6.7095864218015,6.70958642180123,6.7095864218011,6.70958642180112,6.70958642180132,6.70958642180125,6.70958642180168,6.70958642180105,6.70958642180142,6.70958642180129,6.70958642180122,6.70958642180124,6.70958642180146,6.70958642180111,6.70958642180126,6.7095864218009,6.70958642180107,6.70958642180146,6.70958642180144,6.70958642180153,6.709586421801,6.70958642180126,6.70958642180131,6.70958642180114,6.70958642180159,6.70958642180124,6.70958642180114,6.70958642180136,6.70958642180106,6.70958642180138,6.70958642180101,6.70958642180121,6.70958642180128,6.709586421801,6.70958642180127,6.70958642180085,6.70958642180148,6.70958642180126,6.70958642180122,6.70958642180088,6.70958642180116,6.70958642180133,6.70958642180134,6.70958642180145,6.70958642180111,6.70958642180146,6.70958642180116,6.70958642180095,6.70958642180127,6.70958642180117,6.70958642180129,6.70958642180113,6.70958642180115,6.70958642180118,6.70958642180119,6.7095864218008,6.70958642180126,6.7095864218013,6.7095864218014,6.70958642180112,6.70958642180093,6.70958642180145,6.70958642180105,6.70958642180118,6.70958642180161,6.70958642180139,6.70958642180149,6.70958642180128,6.70958642180122,6.70958642180154,6.7095864218013,6.70958642180116,6.70958642180136,6.70958642180123,6.70958642180165,6.70958642180099,6.33031707492246,6.33031707492237,6.33031707492248,6.33031707492259,6.33031707492247,6.33031707492287,6.33031707492275,6.33031707492247,6.33031707492278,6.33031707492255,6.33031707492252,6.33031707492268,6.3303170749224,6.33031707492265,6.33031707492264,6.33031707492284,6.33031707492259,6.33031707492246,6.33031707492247,6.33031707492266,6.33031707492259,6.33031707492301,6.33031707492241,6.33031707492277,6.33031707492263,6.33031707492257,6.33031707492259,6.3303170749228,6.33031707492247,6.33031707492262,6.33031707492226,6.33031707492242,6.33031707492281,6.33031707492278,6.33031707492286,6.33031707492235,6.33031707492261,6.33031707492266,6.3303170749225,6.33031707492293,6.33031707492258,6.33031707492249,6.3303170749227,6.33031707492241,6.33031707492272,6.33031707492237,6.33031707492256,6.33031707492262,6.33031707492236,6.33031707492261,6.33031707492221,6.33031707492282,6.33031707492261,6.33031707492257,6.33031707492223,6.33031707492251,6.33031707492268,6.33031707492268,6.3303170749228,6.33031707492247,6.3303170749228,6.33031707492252,6.33031707492231,6.33031707492262,6.33031707492252,6.33031707492264,6.33031707492248,6.33031707492251,6.33031707492253,6.33031707492255,6.33031707492216,6.3303170749226,6.33031707492265,6.33031707492274,6.33031707492247,6.3303170749223,6.33031707492279,6.3303170749224,6.33031707492252,6.33031707492295,6.33031707492273,6.33031707492284,6.33031707492263,6.33031707492257,6.33031707492288,6.33031707492264,6.33031707492251,6.3303170749227,6.33031707492258,6.33031707492299,6.33031707492235,5.91639027189792,5.91639027189783,5.91639027189793,5.91639027189804,5.91639027189792,5.91639027189831,5.91639027189819,5.91639027189792,5.91639027189822,5.916390271898,5.91639027189797,5.91639027189812,5.91639027189787,5.91639027189809,5.91639027189807,5.91639027189828,5.91639027189803,5.91639027189792,5.91639027189793,5.91639027189811,5.91639027189804,5.91639027189844,5.91639027189786,5.91639027189821,5.91639027189807,5.91639027189802,5.91639027189804,5.91639027189823,5.91639027189791,5.91639027189806,5.91639027189772,5.91639027189788,5.91639027189825,5.91639027189822,5.91639027189829,5.91639027189781,5.91639027189806,5.91639027189811,5.91639027189795,5.91639027189837,5.91639027189803,5.91639027189794,5.91639027189814,5.91639027189786,5.91639027189816,5.91639027189782,5.91639027189802,5.91639027189807,5.91639027189782,5.91639027189806,5.91639027189767,5.91639027189826,5.91639027189805,5.91639027189801,5.91639027189769,5.91639027189795,5.91639027189812,5.91639027189812,5.91639027189824,5.91639027189792,5.91639027189823,5.91639027189797,5.91639027189777,5.91639027189806,5.91639027189797,5.91639027189809,5.91639027189793,5.91639027189796,5.91639027189798,5.916390271898,5.91639027189762,5.91639027189805,5.9163902718981,5.91639027189817,5.91639027189793,5.91639027189776,5.91639027189823,5.91639027189786,5.91639027189797,5.91639027189837,5.91639027189817,5.91639027189828,5.91639027189807,5.91639027189802,5.91639027189831,5.91639027189809,5.91639027189796,5.91639027189814,5.91639027189803,5.91639027189841,5.91639027189781,5.46463903053819,5.46463903053811,5.4646390305382,5.46463903053831,5.46463903053819,5.46463903053856,5.46463903053845,5.4646390305382,5.46463903053848,5.46463903053827,5.46463903053824,5.46463903053839,5.46463903053815,5.46463903053836,5.46463903053834,5.46463903053853,5.4646390305383,5.4646390305382,5.4646390305382,5.46463903053838,5.46463903053832,5.46463903053868,5.46463903053814,5.46463903053847,5.46463903053833,5.46463903053828,5.46463903053832,5.4646390305385,5.46463903053818,5.46463903053834,5.46463903053801,5.46463903053816,5.46463903053851,5.46463903053848,5.46463903053854,5.46463903053809,5.46463903053832,5.46463903053838,5.46463903053822,5.46463903053861,5.4646390305383,5.46463903053822,5.46463903053839,5.46463903053813,5.46463903053841,5.4646390305381,5.46463903053829,5.46463903053833,5.4646390305381,5.46463903053833,5.46463903053796,5.46463903053851,5.46463903053832,5.46463903053828,5.46463903053797,5.46463903053822,5.46463903053839,5.46463903053838,5.46463903053849,5.46463903053819,5.46463903053849,5.46463903053824,5.46463903053806,5.46463903053833,5.46463903053825,5.46463903053836,5.46463903053821,5.46463903053822,5.46463903053825,5.46463903053827,5.46463903053791,5.46463903053831,5.46463903053837,5.46463903053843,5.4646390305382,5.46463903053805,5.46463903053849,5.46463903053813,5.46463903053824,5.46463903053861,5.46463903053843,5.46463903053854,5.46463903053834,5.46463903053829,5.46463903053857,5.46463903053835,5.46463903053824,5.46463903053841,5.4646390305383,5.46463903053865,5.46463903053809,4.97160697129764,4.97160697129757,4.97160697129764,4.97160697129775,4.97160697129764,4.97160697129798,4.97160697129788,4.97160697129765,4.97160697129791,4.97160697129771,4.97160697129768,4.97160697129782,4.9716069712976,4.97160697129779,4.97160697129777,4.97160697129795,4.97160697129774,4.97160697129765,4.97160697129765,4.97160697129781,4.97160697129775,4.97160697129809,4.97160697129759,4.97160697129789,4.97160697129776,4.97160697129772,4.97160697129775,4.97160697129791,4.97160697129762,4.97160697129777,4.97160697129747,4.9716069712976,4.97160697129793,4.97160697129791,4.97160697129796,4.97160697129754,4.97160697129776,4.97160697129781,4.97160697129766,4.97160697129803,4.97160697129774,4.97160697129766,4.97160697129782,4.97160697129758,4.97160697129784,4.97160697129755,4.97160697129772,4.97160697129776,4.97160697129755,4.97160697129776,4.97160697129742,4.97160697129793,4.97160697129775,4.97160697129771,4.97160697129743,4.97160697129766,4.97160697129782,4.97160697129781,4.97160697129792,4.97160697129763,4.97160697129791,4.97160697129768,4.97160697129752,4.97160697129777,4.97160697129768,4.97160697129779,4.97160697129765,4.97160697129766,4.97160697129769,4.97160697129771,4.97160697129737,4.97160697129775,4.9716069712978,4.97160697129785,4.97160697129764,4.9716069712975,4.97160697129792,4.97160697129758,4.97160697129768,4.97160697129802,4.97160697129786,4.97160697129796,4.97160697129777,4.97160697129772,4.97160697129798,4.97160697129778,4.97160697129768,4.97160697129784,4.97160697129773,4.97160697129806,4.97160697129755,4.43352187227868,4.43352187227862,4.43352187227868,4.43352187227878,4.43352187227868,4.43352187227899,4.43352187227889,4.43352187227869,4.43352187227893,4.43352187227874,4.43352187227872,4.43352187227885,4.43352187227865,4.43352187227881,4.4335218722788,4.43352187227896,4.43352187227877,4.43352187227869,4.43352187227869,4.43352187227884,4.43352187227879,4.43352187227908,4.43352187227864,4.43352187227891,4.43352187227879,4.43352187227876,4.43352187227878,4.43352187227893,4.43352187227867,4.43352187227881,4.43352187227852,4.43352187227865,4.43352187227894,4.43352187227892,4.43352187227897,4.43352187227859,4.43352187227879,4.43352187227884,4.4335218722787,4.43352187227903,4.43352187227877,4.4335218722787,4.43352187227885,4.43352187227862,4.43352187227887,4.4335218722786,4.43352187227876,4.43352187227879,4.4335218722786,4.43352187227879,4.43352187227849,4.43352187227894,4.43352187227878,4.43352187227874,4.43352187227849,4.4335218722787,4.43352187227885,4.43352187227884,4.43352187227893,4.43352187227867,4.43352187227892,4.43352187227872,4.43352187227858,4.43352187227879,4.43352187227872,4.43352187227882,4.43352187227869,4.4335218722787,4.43352187227873,4.43352187227874,4.43352187227844,4.43352187227878,4.43352187227883,4.43352187227887,4.43352187227868,4.43352187227855,4.43352187227894,4.43352187227862,4.43352187227871,4.43352187227903,4.43352187227888,4.43352187227897,4.4335218722788,4.43352187227876,4.43352187227899,4.43352187227881,4.43352187227871,4.43352187227886,4.43352187227876,4.43352187227906,4.43352187227859,3.84626680770493,3.84626680770488,3.84626680770494,3.84626680770502,3.84626680770493,3.84626680770521,3.84626680770512,3.84626680770494,3.84626680770515,3.84626680770499,3.84626680770497,3.84626680770508,3.84626680770491,3.84626680770505,3.84626680770504,3.84626680770518,3.84626680770501,3.84626680770495,3.84626680770494,3.84626680770507,3.84626680770503,3.84626680770528,3.84626680770489,3.84626680770514,3.84626680770503,3.846266807705,3.84626680770503,3.84626680770515,3.84626680770492,3.84626680770505,3.8462668077048,3.8462668077049,3.84626680770516,3.84626680770514,3.84626680770519,3.84626680770486,3.84626680770502,3.84626680770508,3.84626680770495,3.84626680770524,3.84626680770501,3.84626680770495,3.84626680770508,3.84626680770488,3.8462668077051,3.84626680770487,3.846266807705,3.84626680770503,3.84626680770486,3.84626680770504,3.84626680770476,3.84626680770516,3.84626680770503,3.84626680770499,3.84626680770476,3.84626680770494,3.84626680770508,3.84626680770507,3.84626680770516,3.84626680770492,3.84626680770514,3.84626680770496,3.84626680770484,3.84626680770503,3.84626680770497,3.84626680770506,3.84626680770494,3.84626680770495,3.84626680770498,3.84626680770499,3.84626680770472,3.84626680770501,3.84626680770507,3.84626680770509,3.84626680770493,3.84626680770482,3.84626680770516,3.84626680770488,3.84626680770496,3.84626680770523,3.84626680770511,3.84626680770519,3.84626680770504,3.846266807705,3.8462668077052,3.84626680770505,3.84626680770496,3.84626680770509,3.846266807705,3.84626680770527,3.84626680770486,3.2053486490414,3.20534864904135,3.2053486490414,3.20534864904147,3.20534864904139,3.20534864904163,3.20534864904155,3.2053486490414,3.20534864904158,3.20534864904145,3.20534864904143,3.20534864904153,3.20534864904138,3.2053486490415,3.20534864904149,3.2053486490416,3.20534864904147,3.20534864904141,3.20534864904141,3.20534864904151,3.20534864904148,3.2053486490417,3.20534864904137,3.20534864904157,3.20534864904147,3.20534864904146,3.20534864904148,3.20534864904158,3.20534864904139,3.2053486490415,3.20534864904129,3.20534864904137,3.20534864904159,3.20534864904158,3.20534864904161,3.20534864904133,3.20534864904147,3.20534864904152,3.20534864904141,3.20534864904166,3.20534864904147,3.20534864904141,3.20534864904152,3.20534864904136,3.20534864904154,3.20534864904134,3.20534864904146,3.20534864904148,3.20534864904134,3.20534864904149,3.20534864904126,3.20534864904159,3.20534864904148,3.20534864904145,3.20534864904126,3.2053486490414,3.20534864904152,3.20534864904152,3.20534864904159,3.20534864904139,3.20534864904157,3.20534864904142,3.20534864904132,3.20534864904148,3.20534864904143,3.20534864904151,3.20534864904141,3.20534864904141,3.20534864904144,3.20534864904145,3.20534864904122,3.20534864904147,3.20534864904151,3.20534864904154,3.2053486490414,3.20534864904131,3.20534864904159,3.20534864904136,3.20534864904142,3.20534864904165,3.20534864904155,3.20534864904162,3.20534864904149,3.20534864904145,3.20534864904163,3.2053486490415,3.20534864904142,3.20534864904153,3.20534864904146,3.20534864904168,3.20534864904134,2.50586368776173,2.50586368776169,2.50586368776173,2.50586368776178,2.50586368776172,2.50586368776191,2.50586368776185,2.50586368776173,2.50586368776187,2.50586368776177,2.50586368776175,2.50586368776183,2.50586368776171,2.5058636877618,2.5058636877618,2.50586368776189,2.50586368776178,2.50586368776174,2.50586368776173,2.50586368776182,2.50586368776179,2.50586368776196,2.5058636877617,2.50586368776186,2.50586368776179,2.50586368776177,2.50586368776179,2.50586368776187,2.50586368776172,2.50586368776181,2.50586368776164,2.50586368776171,2.50586368776188,2.50586368776187,2.50586368776189,2.50586368776168,2.50586368776179,2.50586368776182,2.50586368776174,2.50586368776193,2.50586368776178,2.50586368776174,2.50586368776182,2.5058636877617,2.50586368776184,2.50586368776168,2.50586368776177,2.50586368776179,2.50586368776168,2.5058636877618,2.50586368776161,2.50586368776188,2.50586368776179,2.50586368776177,2.50586368776162,2.50586368776173,2.50586368776183,2.50586368776182,2.50586368776188,2.50586368776171,2.50586368776187,2.50586368776175,2.50586368776167,2.50586368776179,2.50586368776175,2.50586368776181,2.50586368776173,2.50586368776174,2.50586368776176,2.50586368776177,2.50586368776158,2.50586368776178,2.50586368776182,2.50586368776183,2.50586368776173,2.50586368776166,2.50586368776188,2.5058636877617,2.50586368776174,2.50586368776192,2.50586368776185,2.5058636877619,2.5058636877618,2.50586368776177,2.50586368776191,2.50586368776181,2.50586368776175,2.50586368776183,2.50586368776177,2.50586368776195,2.50586368776168,1.74246011673999,1.74246011673996,1.74246011673999,1.74246011674003,1.74246011673999,1.74246011674012,1.74246011674007,1.74246011673999,1.74246011674009,1.74246011674002,1.74246011674001,1.74246011674006,1.74246011673998,1.74246011674004,1.74246011674004,1.7424601167401,1.74246011674003,1.74246011673999,1.74246011673999,1.74246011674005,1.74246011674003,1.74246011674015,1.74246011673997,1.74246011674009,1.74246011674003,1.74246011674002,1.74246011674003,1.74246011674009,1.74246011673999,1.74246011674004,1.74246011673993,1.74246011673998,1.7424601167401,1.74246011674009,1.74246011674011,1.74246011673995,1.74246011674003,1.74246011674006,1.74246011674,1.74246011674013,1.74246011674003,1.74246011674,1.74246011674006,1.74246011673997,1.74246011674007,1.74246011673995,1.74246011674002,1.74246011674004,1.74246011673996,1.74246011674004,1.74246011673991,1.7424601167401,1.74246011674003,1.74246011674002,1.74246011673991,1.74246011673999,1.74246011674006,1.74246011674006,1.74246011674009,1.74246011673998,1.74246011674009,1.74246011674,1.74246011673995,1.74246011674003,1.74246011674001,1.74246011674005,1.74246011673999,1.74246011674,1.74246011674001,1.74246011674002,1.74246011673989,1.74246011674003,1.74246011674006,1.74246011674006,1.74246011673999,1.74246011673994,1.74246011674009,1.74246011673997,1.74246011674,1.74246011674013,1.74246011674007,1.74246011674011,1.74246011674004,1.74246011674002,1.74246011674012,1.74246011674004,1.74246011674,1.74246011674006,1.74246011674002,1.74246011674015,1.74246011673995,0.909297083209478,0.909297083209465,0.909297083209478,0.909297083209496,0.909297083209475,0.909297083209544,0.909297083209522,0.909297083209478,0.909297083209529,0.909297083209493,0.909297083209485,0.909297083209515,0.909297083209472,0.909297083209505,0.909297083209506,0.909297083209536,0.909297083209498,0.909297083209479,0.90929708320948,0.909297083209511,0.909297083209499,0.909297083209564,0.909297083209469,0.909297083209527,0.9092970832095,0.909297083209495,0.909297083209499,0.90929708320953,0.909297083209476,0.909297083209507,0.909297083209443,0.909297083209471,0.909297083209534,0.90929708320953,0.909297083209538,0.90929708320946,0.909297083209498,0.909297083209511,0.909297083209482,0.909297083209553,0.909297083209497,0.90929708320948,0.909297083209513,0.909297083209465,0.909297083209519,0.909297083209459,0.909297083209494,0.909297083209502,0.909297083209461,0.909297083209504,0.909297083209436,0.909297083209534,0.909297083209502,0.909297083209491,0.909297083209438,0.909297083209478,0.909297083209513,0.909297083209513,0.909297083209533,0.909297083209471,0.909297083209528,0.909297083209484,0.909297083209457,0.909297083209499,0.909297083209486,0.909297083209509,0.909297083209481,0.909297083209481,0.909297083209489,0.909297083209493,0.909297083209425,0.909297083209497,0.909297083209513,0.909297083209516,0.909297083209479,0.909297083209452,0.909297083209532,0.909297083209465,0.909297083209485,0.909297083209549,0.909297083209522,0.909297083209541,0.909297083209503,0.909297083209493,0.909297083209543,0.909297083209506,0.909297083209485,0.909297083209515,0.909297083209495,0.909297083209559,0.909297083209458,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1303.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1303.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1303.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1303_field1":[10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9.9,9.90000000000001,9.9,9.89999999999999,9.90000000000001,9.9,9.9,9.90000000000001,9.9,9.89999999999999,9.9,9.9,9.89999999999999,9.89999999999999,9.9,9.9,9.9,9.9,9.9,9.90000000000001,9.9,9.9,9.9,9.9,9.9,9.89999999999999,9.9,9.9,9.9,9.90000000000001,9.89999999999999,9.9,9.9,9.9,9.90000000000001,9.89999999999999,9.90000000000001,9.9,9.89999999999999,9.9,9.90000000000001,9.9,9.9,9.90000000000001,9.89999999999999,9.89999999999999,9.90000000000001,9.9,9.9,9.89999999999999,9.9,9.89999999999999,9.9,9.9,9.9,9.9,9.9,9.89999999999999,9.9,9.9,9.9,9.9,9.9,9.9,9.9,9.9,9.90000000000001,9.90000000000001,9.9,9.9,9.9,9.90000000000001,9.9,9.9,9.9,9.89999999999999,9.9,9.9,9.89999999999999,9.9,9.89999999999999,9.9,9.9,9.9,9.9,9.90000000000001,9.9,9.9,9.9,9.9,9.9,9.59999999999999,9.60000000000002,9.60000000000001,9.6,9.6,9.59999999999999,9.6,9.60000000000002,9.59999999999999,9.6,9.6,9.59999999999999,9.60000000000001,9.59999999999999,9.6,9.6,9.6,9.6,9.60000000000001,9.60000000000001,9.6,9.6,9.6,9.60000000000001,9.59999999999999,9.6,9.6,9.6,9.60000000000001,9.60000000000002,9.59999999999999,9.59999999999999,9.59999999999999,9.59999999999999,9.60000000000001,9.59999999999999,9.60000000000001,9.6,9.59999999999999,9.60000000000001,9.60000000000001,9.59999999999999,9.6,9.60000000000002,9.59999999999999,9.59999999999999,9.6,9.6,9.60000000000001,9.59999999999998,9.6,9.59999999999999,9.59999999999999,9.6,9.6,9.6,9.60000000000002,9.59999999999999,9.6,9.60000000000001,9.6,9.60000000000001,9.59999999999999,9.6,9.6,9.60000000000001,9.60000000000001,9.6,9.60000000000001,9.6,9.6,9.60000000000002,9.59999999999998,9.6,9.60000000000001,9.59999999999999,9.6,9.6,9.59999999999999,9.6,9.59999999999999,9.60000000000001,9.60000000000001,9.6,9.6,9.60000000000001,9.59999999999999,9.6,9.59999999999999,9.6,9.60000000000001,9.09999999999999,9.10000000000004,9.10000000000001,9.10000000000001,9.1,9.09999999999999,9.09999999999999,9.10000000000002,9.09999999999998,9.10000000000001,9.1,9.09999999999999,9.10000000000001,9.1,9.1,9.1,9.10000000000001,9.10000000000001,9.10000000000003,9.1,9.1,9.1,9.1,9.10000000000001,9.09999999999999,9.1,9.1,9.09999999999999,9.10000000000001,9.10000000000003,9.09999999999999,9.1,9.09999999999999,9.09999999999999,9.10000000000001,9.09999999999999,9.10000000000001,9.10000000000001,9.09999999999999,9.10000000000002,9.1,9.09999999999999,9.09999999999999,9.10000000000001,9.09999999999999,9.09999999999999,9.09999999999999,9.1,9.10000000000001,9.09999999999999,9.1,9.09999999999999,9.09999999999998,9.09999999999999,9.10000000000001,9.1,9.10000000000004,9.09999999999999,9.1,9.10000000000001,9.1,9.10000000000001,9.09999999999999,9.1,9.09999999999999,9.10000000000001,9.10000000000001,9.1,9.10000000000002,9.09999999999999,9.09999999999999,9.10000000000002,9.09999999999997,9.1,9.10000000000002,9.09999999999998,9.1,9.1,9.09999999999999,9.09999999999999,9.09999999999999,9.10000000000001,9.10000000000002,9.10000000000001,9.1,9.10000000000001,9.09999999999999,9.10000000000001,9.09999999999998,9.1,9.10000000000002,8.39999999999999,8.40000000000005,8.40000000000001,8.4,8.39999999999999,8.4,8.39999999999999,8.40000000000001,8.39999999999998,8.40000000000001,8.4,8.4,8.4,8.40000000000001,8.4,8.4,8.40000000000001,8.40000000000001,8.40000000000004,8.40000000000001,8.4,8.4,8.4,8.40000000000002,8.39999999999998,8.4,8.4,8.39999999999999,8.40000000000001,8.40000000000003,8.39999999999998,8.4,8.39999999999999,8.39999999999999,8.40000000000001,8.39999999999999,8.4,8.40000000000001,8.39999999999998,8.40000000000002,8.4,8.39999999999998,8.39999999999999,8.40000000000001,8.39999999999999,8.39999999999999,8.39999999999998,8.4,8.40000000000001,8.39999999999998,8.40000000000001,8.4,8.39999999999998,8.39999999999997,8.40000000000001,8.4,8.40000000000004,8.39999999999997,8.4,8.40000000000002,8.4,8.40000000000001,8.39999999999999,8.40000000000001,8.39999999999999,8.40000000000001,8.40000000000001,8.4,8.40000000000002,8.39999999999999,8.39999999999999,8.40000000000003,8.39999999999997,8.4,8.40000000000002,8.39999999999998,8.40000000000001,8.40000000000001,8.4,8.39999999999998,8.39999999999999,8.40000000000001,8.40000000000002,8.40000000000002,8.4,8.40000000000001,8.39999999999999,8.40000000000001,8.39999999999998,8.39999999999999,8.40000000000002,7.49999999999999,7.50000000000005,7.5,7.5,7.5,7.49999999999999,7.5,7.50000000000001,7.49999999999999,7.5,7.5,7.5,7.5,7.5,7.5,7.5,7.50000000000002,7.50000000000001,7.50000000000004,7.50000000000001,7.50000000000001,7.5,7.5,7.50000000000002,7.49999999999998,7.49999999999999,7.5,7.49999999999999,7.50000000000001,7.50000000000004,7.49999999999999,7.5,7.49999999999999,7.49999999999999,7.50000000000001,7.49999999999999,7.5,7.5,7.49999999999999,7.50000000000001,7.5,7.49999999999998,7.49999999999999,7.50000000000001,7.5,7.49999999999998,7.49999999999998,7.5,7.50000000000002,7.49999999999998,7.50000000000001,7.5,7.49999999999998,7.49999999999996,7.50000000000002,7.5,7.50000000000004,7.49999999999997,7.50000000000001,7.50000000000002,7.5,7.50000000000001,7.5,7.50000000000002,7.5,7.50000000000001,7.50000000000001,7.5,7.50000000000002,7.49999999999999,7.49999999999998,7.50000000000003,7.49999999999997,7.5,7.50000000000002,7.49999999999998,7.5,7.50000000000001,7.50000000000001,7.49999999999999,7.5,7.5,7.50000000000002,7.50000000000002,7.49999999999999,7.5,7.5,7.50000000000001,7.49999999999998,7.5,7.50000000000001,6.39999999999999,6.40000000000004,6.4,6.40000000000001,6.4,6.39999999999999,6.4,6.40000000000001,6.4,6.4,6.4,6.40000000000001,6.39999999999999,6.39999999999999,6.4,6.4,6.40000000000002,6.40000000000001,6.40000000000003,6.40000000000002,6.40000000000001,6.4,6.4,6.40000000000002,6.39999999999998,6.39999999999999,6.40000000000001,6.4,6.40000000000001,6.40000000000003,6.39999999999999,6.39999999999999,6.4,6.39999999999999,6.40000000000001,6.39999999999999,6.4,6.4,6.4,6.40000000000001,6.4,6.39999999999998,6.4,6.40000000000001,6.4,6.39999999999998,6.39999999999998,6.4,6.40000000000001,6.39999999999998,6.40000000000001,6.4,6.39999999999998,6.39999999999996,6.40000000000001,6.4,6.40000000000003,6.39999999999997,6.4,6.40000000000002,6.4,6.4,6.4,6.40000000000001,6.4,6.40000000000001,6.40000000000001,6.4,6.40000000000002,6.39999999999999,6.39999999999998,6.40000000000003,6.39999999999998,6.39999999999999,6.40000000000002,6.39999999999999,6.4,6.40000000000002,6.40000000000002,6.39999999999999,6.4,6.4,6.40000000000001,6.40000000000002,6.39999999999999,6.4,6.4,6.40000000000001,6.4,6.4,6.40000000000001,5.09999999999999,5.10000000000003,5.1,5.10000000000001,5.1,5.09999999999999,5.1,5.10000000000001,5.1,5.1,5.1,5.10000000000001,5.1,5.09999999999999,5.1,5.1,5.10000000000002,5.10000000000001,5.10000000000003,5.10000000000002,5.10000000000001,5.09999999999999,5.10000000000001,5.10000000000002,5.09999999999999,5.09999999999999,5.10000000000001,5.1,5.10000000000001,5.10000000000002,5.09999999999999,5.09999999999999,5.1,5.09999999999999,5.10000000000001,5.09999999999999,5.1,5.1,5.1,5.10000000000001,5.1,5.09999999999998,5.1,5.10000000000001,5.1,5.09999999999999,5.09999999999998,5.1,5.10000000000001,5.09999999999998,5.10000000000001,5.1,5.09999999999999,5.09999999999996,5.10000000000001,5.10000000000001,5.10000000000002,5.09999999999998,5.1,5.10000000000002,5.1,5.1,5.1,5.10000000000001,5.10000000000001,5.10000000000001,5.10000000000001,5.09999999999999,5.10000000000002,5.09999999999999,5.09999999999998,5.10000000000003,5.09999999999999,5.1,5.10000000000001,5.09999999999999,5.1,5.10000000000001,5.10000000000002,5.09999999999999,5.1,5.1,5.10000000000001,5.10000000000001,5.1,5.09999999999999,5.1,5.10000000000001,5.1,5.1,5.10000000000001,3.59999999999999,3.60000000000002,3.6,3.6,3.6,3.59999999999999,3.6,3.6,3.6,3.59999999999999,3.6,3.60000000000001,3.59999999999999,3.59999999999999,3.59999999999999,3.6,3.60000000000002,3.6,3.60000000000002,3.60000000000001,3.6,3.59999999999999,3.6,3.60000000000001,3.59999999999999,3.59999999999999,3.60000000000001,3.59999999999999,3.60000000000001,3.60000000000001,3.59999999999999,3.6,3.59999999999999,3.59999999999999,3.6,3.59999999999999,3.6,3.6,3.6,3.6,3.6,3.59999999999999,3.59999999999999,3.60000000000001,3.6,3.59999999999999,3.59999999999998,3.6,3.60000000000001,3.59999999999999,3.6,3.6,3.59999999999999,3.59999999999997,3.6,3.6,3.60000000000001,3.59999999999998,3.6,3.60000000000002,3.6,3.6,3.59999999999999,3.6,3.6,3.6,3.60000000000001,3.59999999999999,3.60000000000001,3.59999999999999,3.59999999999999,3.60000000000002,3.59999999999999,3.59999999999999,3.6,3.59999999999999,3.59999999999999,3.60000000000001,3.60000000000001,3.6,3.6,3.6,3.6,3.6,3.59999999999999,3.59999999999999,3.6,3.6,3.6,3.6,3.6,1.89999999999999,1.90000000000001,1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.90000000000001,1.9,1.89999999999999,1.9,1.9,1.90000000000001,1.9,1.90000000000001,1.90000000000001,1.9,1.9,1.9,1.90000000000001,1.89999999999999,1.9,1.90000000000001,1.9,1.9,1.90000000000001,1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.89999999999999,1.9,1.9,1.9,1.89999999999999,1.89999999999999,1.9,1.90000000000001,1.89999999999999,1.9,1.9,1.9,1.89999999999998,1.9,1.9,1.90000000000001,1.89999999999999,1.9,1.90000000000001,1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.90000000000001,1.9,1.89999999999999,1.90000000000001,1.9,1.9,1.9,1.9,1.9,1.90000000000001,1.90000000000001,1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.9,1.9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1304.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1304.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1304.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1304_field1":[41.6666666666663,41.6666666666652,41.6666666666664,41.6666666666672,41.6666666666663,41.6666666666672,41.6666666666663,41.6666666666671,41.6666666666663,41.666666666666,41.6666666666667,41.6666666666668,41.6666666666659,41.6666666666661,41.666666666666,41.6666666666663,41.6666666666663,41.6666666666662,41.6666666666659,41.6666666666671,41.666666666666,41.666666666667,41.6666666666669,41.6666666666668,41.6666666666667,41.6666666666663,41.666666666667,41.6666666666673,41.6666666666661,41.666666666667,41.6666666666663,41.6666666666671,41.6666666666658,41.6666666666663,41.6666666666669,41.6666666666675,41.6666666666659,41.6666666666672,41.6666666666673,41.6666666666665,41.6666666666675,41.666666666667,41.6666666666657,41.6666666666669,41.6666666666663,41.6666666666663,41.6666666666666,41.6666666666667,41.666666666666,41.6666666666667,41.666666666667,41.6666666666659,41.6666666666661,41.6666666666669,41.6666666666667,41.6666666666662,41.6666666666666,41.6666666666662,41.6666666666661,41.6666666666664,41.6666666666667,41.6666666666665,41.6666666666672,41.6666666666675,41.6666666666671,41.6666666666664,41.6666666666661,41.6666666666668,41.6666666666666,41.6666666666666,41.666666666666,41.6666666666671,41.666666666666,41.6666666666675,41.6666666666667,41.6666666666668,41.6666666666666,41.6666666666674,41.6666666666667,41.6666666666665,41.6666666666658,41.6666666666677,41.666666666666,41.6666666666662,41.6666666666671,41.6666666666662,41.6666666666668,41.6666666666659,41.666666666668,41.6666666666658,41.6666666666669,37.4999999999996,37.4999999999985,37.4999999999997,37.5000000000005,37.4999999999996,37.5000000000005,37.4999999999997,37.5000000000004,37.4999999999997,37.4999999999993,37.5000000000001,37.5000000000002,37.4999999999992,37.4999999999995,37.4999999999993,37.4999999999997,37.4999999999996,37.4999999999996,37.4999999999992,37.5000000000004,37.4999999999994,37.5000000000004,37.5000000000002,37.5000000000001,37.5,37.4999999999996,37.5000000000003,37.5000000000006,37.4999999999994,37.5000000000004,37.4999999999997,37.5000000000005,37.4999999999991,37.4999999999996,37.5000000000002,37.5000000000009,37.4999999999992,37.5000000000005,37.5000000000006,37.4999999999999,37.5000000000008,37.5000000000004,37.499999999999,37.5000000000002,37.4999999999997,37.4999999999997,37.4999999999999,37.5,37.4999999999993,37.5,37.5000000000003,37.4999999999992,37.4999999999994,37.5000000000002,37.5,37.4999999999995,37.4999999999999,37.4999999999995,37.4999999999995,37.4999999999998,37.5000000000001,37.4999999999999,37.5000000000006,37.5000000000008,37.5000000000004,37.4999999999997,37.4999999999995,37.5000000000001,37.5,37.4999999999999,37.4999999999994,37.5000000000004,37.4999999999994,37.5000000000008,37.5,37.5000000000001,37.4999999999999,37.5000000000007,37.5,37.4999999999998,37.4999999999991,37.500000000001,37.4999999999994,37.4999999999996,37.5000000000004,37.4999999999996,37.5000000000001,37.4999999999992,37.5000000000013,37.4999999999991,37.5000000000002,33.333333333333,33.3333333333319,33.3333333333331,33.3333333333339,33.333333333333,33.3333333333338,33.333333333333,33.3333333333337,33.333333333333,33.3333333333327,33.3333333333334,33.3333333333335,33.3333333333326,33.3333333333328,33.3333333333327,33.333333333333,33.3333333333329,33.333333333333,33.3333333333326,33.3333333333337,33.3333333333327,33.3333333333337,33.3333333333335,33.3333333333335,33.3333333333334,33.333333333333,33.3333333333337,33.3333333333339,33.3333333333328,33.3333333333337,33.333333333333,33.3333333333338,33.3333333333325,33.333333333333,33.3333333333335,33.3333333333342,33.3333333333326,33.3333333333338,33.3333333333339,33.3333333333332,33.3333333333341,33.3333333333337,33.3333333333324,33.3333333333335,33.333333333333,33.333333333333,33.3333333333333,33.3333333333333,33.3333333333327,33.3333333333333,33.3333333333336,33.3333333333326,33.3333333333327,33.3333333333336,33.3333333333334,33.3333333333329,33.3333333333332,33.3333333333328,33.3333333333328,33.3333333333331,33.3333333333334,33.3333333333333,33.3333333333339,33.3333333333341,33.3333333333337,33.333333333333,33.3333333333328,33.3333333333334,33.3333333333333,33.3333333333333,33.3333333333327,33.3333333333337,33.3333333333328,33.3333333333341,33.3333333333334,33.3333333333334,33.3333333333332,33.333333333334,33.3333333333334,33.3333333333331,33.3333333333325,33.3333333333343,33.3333333333328,33.3333333333329,33.3333333333337,33.3333333333329,33.3333333333334,33.3333333333325,33.3333333333346,33.3333333333325,33.3333333333335,29.1666666666663,29.1666666666653,29.1666666666664,29.1666666666672,29.1666666666664,29.1666666666671,29.1666666666664,29.166666666667,29.1666666666663,29.1666666666661,29.1666666666667,29.1666666666668,29.166666666666,29.1666666666662,29.1666666666661,29.1666666666664,29.1666666666663,29.1666666666663,29.166666666666,29.166666666667,29.1666666666661,29.166666666667,29.1666666666669,29.1666666666668,29.1666666666667,29.1666666666663,29.166666666667,29.1666666666672,29.1666666666661,29.166666666667,29.1666666666663,29.1666666666671,29.1666666666659,29.1666666666663,29.1666666666668,29.1666666666674,29.166666666666,29.1666666666671,29.1666666666672,29.1666666666666,29.1666666666674,29.166666666667,29.1666666666658,29.1666666666668,29.1666666666664,29.1666666666663,29.1666666666666,29.1666666666667,29.166666666666,29.1666666666667,29.1666666666669,29.166666666666,29.1666666666661,29.1666666666669,29.1666666666667,29.1666666666663,29.1666666666666,29.1666666666661,29.1666666666662,29.1666666666664,29.1666666666667,29.1666666666667,29.1666666666672,29.1666666666674,29.166666666667,29.1666666666664,29.1666666666662,29.1666666666668,29.1666666666666,29.1666666666666,29.1666666666661,29.166666666667,29.1666666666662,29.1666666666674,29.1666666666667,29.1666666666668,29.1666666666666,29.1666666666673,29.1666666666667,29.1666666666665,29.1666666666658,29.1666666666676,29.1666666666662,29.1666666666663,29.166666666667,29.1666666666663,29.1666666666667,29.1666666666659,29.1666666666678,29.1666666666659,29.1666666666668,24.9999999999997,24.9999999999988,24.9999999999998,25.0000000000005,24.9999999999998,25.0000000000004,24.9999999999997,25.0000000000003,24.9999999999997,24.9999999999995,25.0000000000001,25.0000000000001,24.9999999999994,24.9999999999996,24.9999999999995,24.9999999999997,24.9999999999996,24.9999999999997,24.9999999999994,25.0000000000004,24.9999999999995,25.0000000000002,25.0000000000002,25.0000000000001,25,24.9999999999997,25.0000000000003,25.0000000000004,24.9999999999995,25.0000000000003,24.9999999999997,25.0000000000004,24.9999999999993,24.9999999999997,25.0000000000001,25.0000000000007,24.9999999999994,25.0000000000004,25.0000000000005,24.9999999999999,25.0000000000007,25.0000000000003,24.9999999999992,25.0000000000001,24.9999999999998,24.9999999999997,25,25,24.9999999999994,25,25.0000000000002,24.9999999999994,24.9999999999994,25.0000000000002,25,24.9999999999996,24.9999999999999,24.9999999999995,24.9999999999996,24.9999999999998,25,25,25.0000000000005,25.0000000000006,25.0000000000003,24.9999999999997,24.9999999999996,25.0000000000001,25,25,24.9999999999995,25.0000000000003,24.9999999999996,25.0000000000007,25,25.0000000000001,24.9999999999999,25.0000000000005,25.0000000000001,24.9999999999999,24.9999999999992,25.0000000000008,24.9999999999996,24.9999999999997,25.0000000000003,24.9999999999996,25.0000000000001,24.9999999999993,25.000000000001,24.9999999999993,25.0000000000001,20.8333333333331,20.8333333333323,20.8333333333331,20.8333333333337,20.8333333333331,20.8333333333337,20.8333333333331,20.8333333333336,20.833333333333,20.8333333333329,20.8333333333334,20.8333333333335,20.8333333333328,20.8333333333329,20.8333333333329,20.8333333333331,20.833333333333,20.8333333333331,20.8333333333328,20.8333333333336,20.8333333333329,20.8333333333335,20.8333333333335,20.8333333333334,20.8333333333333,20.8333333333331,20.8333333333336,20.8333333333337,20.833333333333,20.8333333333336,20.8333333333331,20.8333333333336,20.8333333333327,20.8333333333331,20.8333333333334,20.8333333333339,20.8333333333328,20.8333333333337,20.8333333333338,20.8333333333333,20.8333333333339,20.8333333333336,20.8333333333326,20.8333333333334,20.8333333333331,20.833333333333,20.8333333333333,20.8333333333333,20.8333333333328,20.8333333333333,20.8333333333335,20.8333333333328,20.8333333333328,20.8333333333335,20.8333333333333,20.833333333333,20.8333333333332,20.8333333333329,20.8333333333329,20.8333333333332,20.8333333333333,20.8333333333334,20.8333333333337,20.8333333333339,20.8333333333336,20.8333333333331,20.833333333333,20.8333333333334,20.8333333333333,20.8333333333333,20.833333333333,20.8333333333336,20.833333333333,20.8333333333339,20.8333333333334,20.8333333333334,20.8333333333332,20.8333333333338,20.8333333333334,20.8333333333332,20.8333333333326,20.8333333333341,20.833333333333,20.8333333333331,20.8333333333336,20.833333333333,20.8333333333334,20.8333333333327,20.8333333333342,20.8333333333328,20.8333333333335,16.6666666666665,16.6666666666658,16.6666666666665,16.666666666667,16.6666666666665,16.666666666667,16.6666666666665,16.6666666666669,16.6666666666664,16.6666666666663,16.6666666666667,16.6666666666668,16.6666666666663,16.6666666666663,16.6666666666663,16.6666666666665,16.6666666666664,16.6666666666665,16.6666666666663,16.6666666666669,16.6666666666663,16.6666666666668,16.6666666666668,16.6666666666668,16.6666666666666,16.6666666666665,16.6666666666669,16.6666666666669,16.6666666666664,16.6666666666669,16.6666666666664,16.6666666666669,16.6666666666662,16.6666666666665,16.6666666666667,16.6666666666671,16.6666666666662,16.6666666666669,16.666666666667,16.6666666666666,16.6666666666672,16.6666666666669,16.6666666666661,16.6666666666667,16.6666666666665,16.6666666666664,16.6666666666666,16.6666666666666,16.6666666666662,16.6666666666667,16.6666666666668,16.6666666666663,16.6666666666662,16.6666666666668,16.6666666666667,16.6666666666664,16.6666666666666,16.6666666666663,16.6666666666663,16.6666666666665,16.6666666666666,16.6666666666667,16.666666666667,16.6666666666671,16.6666666666669,16.6666666666665,16.6666666666664,16.6666666666667,16.6666666666666,16.6666666666667,16.6666666666664,16.6666666666669,16.6666666666664,16.6666666666672,16.6666666666667,16.6666666666667,16.6666666666666,16.6666666666671,16.6666666666667,16.6666666666666,16.6666666666661,16.6666666666673,16.6666666666664,16.6666666666664,16.6666666666669,16.6666666666664,16.6666666666667,16.6666666666662,16.6666666666674,16.6666666666662,16.6666666666668,12.4999999999998,12.4999999999993,12.4999999999999,12.5000000000002,12.4999999999999,12.5000000000002,12.4999999999999,12.5000000000002,12.4999999999998,12.4999999999997,12.5,12.5000000000001,12.4999999999997,12.4999999999997,12.4999999999997,12.4999999999998,12.4999999999998,12.4999999999999,12.4999999999997,12.5000000000002,12.4999999999997,12.5000000000001,12.5000000000001,12.5000000000001,12.5,12.4999999999998,12.5000000000002,12.5000000000002,12.4999999999998,12.5000000000001,12.4999999999998,12.5000000000002,12.4999999999996,12.4999999999999,12.5,12.5000000000003,12.4999999999997,12.5000000000002,12.5000000000003,12.5,12.5000000000004,12.5000000000002,12.4999999999995,12.5,12.4999999999999,12.4999999999998,12.5,12.5,12.4999999999997,12.5,12.5000000000001,12.4999999999997,12.4999999999997,12.5000000000001,12.5,12.4999999999998,12.4999999999999,12.4999999999997,12.4999999999998,12.4999999999999,12.5,12.5000000000001,12.5000000000003,12.5000000000003,12.5000000000002,12.4999999999998,12.4999999999998,12.5,12.5,12.5,12.4999999999998,12.5000000000002,12.4999999999998,12.5000000000004,12.5,12.5,12.4999999999999,12.5000000000003,12.5,12.4999999999999,12.4999999999995,12.5000000000005,12.4999999999998,12.4999999999998,12.5000000000002,12.4999999999998,12.5,12.4999999999996,12.5000000000005,12.4999999999996,12.5000000000001,8.33333333333323,8.33333333333287,8.33333333333325,8.33333333333349,8.33333333333325,8.33333333333349,8.33333333333325,8.33333333333344,8.33333333333319,8.33333333333313,8.33333333333335,8.33333333333338,8.33333333333314,8.33333333333316,8.33333333333314,8.33333333333323,8.33333333333317,8.33333333333325,8.33333333333312,8.33333333333347,8.33333333333314,8.3333333333334,8.33333333333339,8.33333333333338,8.33333333333332,8.33333333333322,8.33333333333347,8.33333333333348,8.33333333333317,8.33333333333343,8.33333333333321,8.33333333333346,8.33333333333308,8.33333333333324,8.33333333333334,8.33333333333357,8.3333333333331,8.33333333333348,8.33333333333351,8.33333333333332,8.33333333333358,8.33333333333344,8.33333333333301,8.33333333333336,8.33333333333325,8.3333333333332,8.33333333333331,8.33333333333332,8.33333333333311,8.33333333333333,8.33333333333339,8.33333333333312,8.33333333333311,8.33333333333342,8.33333333333333,8.3333333333332,8.33333333333328,8.33333333333312,8.33333333333316,8.33333333333328,8.33333333333332,8.33333333333338,8.3333333333335,8.33333333333355,8.33333333333345,8.33333333333323,8.33333333333317,8.33333333333337,8.33333333333331,8.33333333333334,8.33333333333317,8.33333333333345,8.33333333333319,8.3333333333336,8.33333333333334,8.33333333333336,8.33333333333329,8.33333333333353,8.33333333333336,8.33333333333329,8.33333333333303,8.33333333333365,8.3333333333332,8.33333333333321,8.33333333333345,8.33333333333321,8.33333333333337,8.33333333333308,8.3333333333337,8.33333333333309,8.33333333333339,4.16666666666661,4.16666666666643,4.16666666666663,4.16666666666675,4.16666666666662,4.16666666666675,4.16666666666662,4.16666666666672,4.1666666666666,4.16666666666657,4.16666666666667,4.16666666666669,4.16666666666657,4.16666666666658,4.16666666666657,4.16666666666661,4.16666666666659,4.16666666666662,4.16666666666656,4.16666666666674,4.16666666666657,4.16666666666671,4.1666666666667,4.16666666666669,4.16666666666666,4.1666666666666,4.16666666666673,4.16666666666674,4.16666666666659,4.16666666666671,4.1666666666666,4.16666666666673,4.16666666666654,4.16666666666662,4.16666666666667,4.16666666666679,4.16666666666655,4.16666666666674,4.16666666666675,4.16666666666666,4.16666666666679,4.16666666666672,4.16666666666651,4.16666666666668,4.16666666666662,4.1666666666666,4.16666666666665,4.16666666666666,4.16666666666656,4.16666666666666,4.1666666666667,4.16666666666656,4.16666666666655,4.16666666666671,4.16666666666666,4.1666666666666,4.16666666666664,4.16666666666656,4.16666666666658,4.16666666666664,4.16666666666666,4.16666666666668,4.16666666666675,4.16666666666678,4.16666666666673,4.16666666666662,4.16666666666659,4.16666666666668,4.16666666666666,4.16666666666667,4.16666666666659,4.16666666666673,4.1666666666666,4.1666666666668,4.16666666666667,4.16666666666668,4.16666666666664,4.16666666666676,4.16666666666667,4.16666666666665,4.16666666666652,4.16666666666682,4.1666666666666,4.16666666666661,4.16666666666673,4.1666666666666,4.16666666666668,4.16666666666654,4.16666666666685,4.16666666666655,4.16666666666669,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1401.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1401.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1401.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1401_field1":[0,0.601205,0.602451,0.0735871,0.0690627,0.408216,0.450649,0.45113,0.411079,0.45833,0.57658,0.601195,0.710623,0,0.0647241,0.0644531,0.174178,0.409922,0.0753302,0.632013,0.00547864,0.0645676,0.064266,0.631978,0,0.628061,0.625801,0.571809,0.443746,0.405596,0,0.411987,0,0.413832,0,0.413482,0,0,0.411684,0,0.446939,0.451669,0.569904,0.621085,0.632345,0.629539,0.627546,0.639019,0.0697452,0,0.0682352,0.0720522,0.452322,0.440254,0.00402634,0,0.406694,0.422618,0.420026,0.422013,0.417149,0.415586,0.41733,0.417715,0.411351,0.423719,0.432064,0.454813,0.458238,0.183271,0.00229522,0.00934943,0.406712,0.409186,0.443705,0.447623,0.00705718,0.494628,0.480946,0.44539,0.455555,0.454977,0.402852,0.406047,0.398625,0.400135,0.0144928,0.395124,0.397046,0.402374,0.0112641,0.400718,0.404633,0.410091,0.449669,0.446249,0.453079,0.452199,0.455339,0,0.65942,0.462553,0.627755,0.504547,0.306166,0.298655,0.522073,0.53274,0.00789024,0.227913,0.0129858,0.0128143,0.0126812,0.621936,0.013595,0.075077,0.634272,0.625666,0.629658,0.633278,0.624992,0.0625248,0.0289837,0.0668337,0.639949,0.00563153,0.214558,0.301483,0.313499,0.316601,0.319251,0.323955,0.452463,0.401838,0.115314,0.401388,0.398091,0.399337,0.40219,0.402215,0.407036,0.40547,0.457687,0.643956,0.489084,0.644827,0.0740055,0.630435,0.060633,0.639465,0.239037,0.0723827,0.0589927,0.0640827,0.0698663,0.0682754,0.0835163,0.0958199,0.632165,0.628093,0.0397818,0.631733,0.0441631,0.0433508,0.624354,0.622978,0.627799,0.641097,0.642333,0.64441,0.234379,0.22989,0.629235,0.629185,0.621931,0.286137,0.21927,0.454461,0.45509,0.456033,0.451875,0.387681,0.383725,0.44423,0.401823,0.404677,0.40339,0.403367,0.40391,0.398843,0.409653,0.414637,0.408969,0.406124,0.439629,0.629155,0.629376,0.45034,0.446271,0.453513,0.63081,0.461862,0.175295,0.628629,0.637749,0.204828,0.0582529,0.625868,0.624742,0.639356,0.636623,0.625748,0.627961,0.637793,0.625337,0.632256,0.627998,0.630979,0.637929,0.0588553,0.622173,0.125621,0.00222767,0.00967536,0.00558231,0.102385,0.099145,0.638034,0.0769462,0.074919,0.0699509,0.0715587,0.0603281,0.0624813,0.0616014,0.0605036,0.0661722,0.0693878,0.0645103,0.45481,0.440814,0.418912,0.436822,0.425401,0.426424,0.420999,0.416861,0.415205,0.417979,0.417542,0.434338,0.433643,0.431055,0.433137,0.425085,0.429545,0.429342,0.4251,0.428204,0.435068,0.43309,0.422671,0.420643,0.425514,0.427644,0.43124,0.425866,0.615663,0.432733,0.415332,0.6167,0.621844,0.453995,0.446187,0.62316,0.433954,0.618572,0.436594,0.438769,0.457806,0.623526,0.457504,0.456041,0.445603,0.454743,0.624554,0.0291346,0.031114,0.0588518,0.0171352,0.177133,0.170594,0.489639,0.0614556,0.0199546,0.348067,0.403573,0.0768483,0.424423,0.473206,0.0933785,0.601305,0.177156,0.599808,0.643495,0.176513,0.087054,0.176601,0.600216,0.598051,0.167605,0.600456,0.352415,0.181547,0.170703,0.168835,0.192049,0.575058,0.587111,0.603064,0.190041,0.0745542,0.412931,0.485652,0.601055,0.00113075,0.00858708,0.460972,0.0323645,0.456201,0.597606,0.606555,0.635029,0.59955,0.600103,0.49833,0.197022,0.0710281,0.627161,0.261905,0.39199,0.400545,0.370742,0.12517,0.455767,0.00166983,0.101388,0.327307,0.468856,0.397635,0.44875,0.449978,0.460532,0.460618,0.53978,0.54197,0.0236836,0.0272068,0.193238,0.601466,0.575091,0.574791,0.571807,0.174343,0.175429,0.599581,0.605835,0.636302,0.635624,0.0653562,0.0253622,0.062797,0.0828431,0.079287,0.175467,0.230344,0.24012,0.233471,0.602553,0.604487,0.5195,0.407275,0.447051,0.27782,0.5732,0.57493,0.573718,0.569464,0.578479,0.0997214,0.0740613,0.0174168,0.0217167,0.64648,0.00663724,0.00440059,0.607326,0.049972,0.238374,0.0450896,0.0650602,0.0587664,0.0733842,0.0190891,0.16741,0.62643,0.630387,0.625249,0.0274253,0.627264,0.180281,0.190716,0.231248,0.230139,0.230726,0.630911,0.630664,0.63098,0.604939,0.0263676,0.573755,0.529907,0.46304,0.412692,0.409957,0.15579,0.410472,0.406592,0.409935,0.448302,0.450146,0.352194,0.458619,0.453484,0.458918,0.476896,0.476009,0.491672,0.198596,0.19674,0.493396,0.175668,0.183154,0.1802,0.173832,0.542506,0.191727,0.574343,0.569956,0.171814,0.173053,0.157965,0.587942,0.594254,0.58876,0.589162,0.60827,0.599692,0.619612,0.61625,0.626009,0.625588,0.617279,0.634207,0.638653,0.641051,0.642939,0.637846,0.639704,0.631383,0.629784,0.634455,0.63614,0.630177,0.628435,0.628613,0.0640752,0.643142,0.642108,0.647055,0.642654,0.144739,0.037465,0.122737,0.0655739,0.0671699,0.0676703,0.0809909,0.27836,0.0772651,0.0762679,0.0747682,0.0764784,0.0761957,0.0862797,0.342137,0.0659478,0.0698446,0.0688998,0.0728498,0.0734155,0.0707086,0.071818,0.0721339,0.0655596,0.377222,0.451054,0.382204,0.443454,0.438889,0.439737,0.409559,0.400319,0.419684,0.422665,0.414053,0.412704,0.414452,0.416667,0.407291,0.407997,0.410678,0.412549,0.416312,0.433863,0.427492,0.426905,0.452798,0.446988,0.447957,0.460012,0.466403,0.196295,0.473775,0.516378,0.156864,0.183536,0.0289856,0.584235,0.60449,0.106954,0.557111,0.621951,0.619825,0.630435,0.630332,0.632114,0.625656,0.632069,0.632572,0.642265,0.00278907,0,0.00866858,0.0124098,0.159443,0,0.0044891,0.659194,0.692029,0.39886,0.0828249,0.0753406,0.00570073,0.0028403,0.00961764,0.0126741,0.0164752,0.18402,0.461462,0.462273,0.458939,0.457477,0.46222,0.460966,0.462321,0.350875,0.348032,0.349862,0.468643,0.0417335,0.476428,0.173358,0.0419643,0.476468,0.473264,0.472934,0.476413,0.474893,0.466248,0.466896,0.469549,0.476484,0.478713,0.476424,0.476452,0.0417381,0.473633,0.471277,0.47663,0.469028,0.46656,0.46907,0.476147,0.0416836,0.0402973,0.332954,0.335249,0.335453,0.337277,0.340653,0.334149,0.360646,0.491246,0.491162,0.491939,0.484311,0.491156,0.487929,0.490889,0.479574,0.478261,0.481906,0.483594,0.485181,0.490472,0.491244,0.489307,0.488308,0.485131,0.480152,0.462132,0.188406,0.320127,0.322403,0.324286,0.324677,0.325258,0.324233,0.46206,0.463472,0.504289,0.50725,0.505537,0.50561,0.502039,0.499987,0.505402,0.503824,0.501708,0.505367,0.503346,0.494504,0.492811,0.496299,0.49741,0.496298,0.494423,0.499767,0.498188,0.504754,0.564463,0.503557,0.561291,0.462508,0.454078,0.454177,0.305283,0.307951,0.45658,0.454847,0.520146,0.451376,0.291734,0.289988,0.292141,0.294518,0.295351,0.295703,0.297463,0.296439,0.303058,0.519935,0.519927,0.519906,0.516371,0.519927,0.518152,0.51983,0.521886,0.519926,0.519927,0.518737,0.515093,0.520362,0.518104,0.507034,0.511375,0.559876,0.510626,0.509688,0.520052,0.511164,0.460379,0.458849,0.280436,0.28083,0.281132,0.531821,0.534059,0.53622,0.534324,0.534111,0.534205,0.534039,0.530669,0.223104,0.532425,0.523546,0.521704,0.525016,0.526439,0.525612,0.528563,0.527197,0.527296,0.269111,0.0516745,0.53399,0.526968,0.522638,0.542574,0.543471,0.543713,0.248995,0.551068,0.248796,0.548913,0.549281,0.54529,0.548873,0.54738,0.538605,0.27202,0.536199,0.541969,0.540305,0.543521,0.542154,0.541112,0.548249,0.549657,0.548756,0.548913,0.544321,0.54347,0.547866,0.546807,0.547727,0.544523,0.0553812,0.540794,0.539524,0.537936,0.541626,0.229171,0.382053,0.0452733,0.382499,0.382389,0.382303,0.380217,0.223571,0.226017,0.221703,0.223246,0.377205,0.380135,0.230808,0.0434317,0.565697,0.558103,0.556311,0.565484,0.555774,0.563725,0.559609,0.552163,0.550575,0.551414,0.392369,0.55693,0.396122,0.396458,0.203005,0.204071,0.204798,0.215155,0.528885,0.529731,0.39751,0.536234,0.396619,0.395953,0.255398,0.39513,0.391365,0.190347,0.19521,0.196687,0.193261,0.194701,0.393064,0.0553411,0.57618,0.576804,0.577544,0.578006,0.405097,0.260227,0.566198,0.267987,0.571992,0.405763,0.250299,0.173725,0.171874,0.176996,0.0561358,0.180773,0.0561069,0.260807,0.405422,0.573643,0.396677,0.163358,0.0525353,0.164275,0.162883,0.0559676,0.593865,0.0543425,0.593138,0.595122,0.59254,0.14836,0.150729,0.150493,0.153491,0.593128,0.592595,0.59324,0.593235,0.590535,0.591927,0.592224,0.588769,0.0561458,0.274382,0.587169,0.590696,0.58536,0.515247,0.583932,0.585696,0.587679,0.51282,0.402395,0.132446,0.13044,0.0561834,0.133991,0.403069,0.399534,0.523812,0.402858,0.404871,0.12147,0.121512,0.115387,0.117782,0.607161,0.610456,0.509373,0.608298,0.606821,0.608466,0.607646,0.607453,0.606336,0.606571,0.604205,0.606751,0.289584,0.606475,0.603287,0.605041,0.595454,0.600191,0.601653,0.600236,0.606125,0.396217,0.596046,0.595108,0.397805,0.596527,0.394744,0.602057,0.393307,0.403193,0.403829,0.106942,0.106813,0.108601,0.106943,0.103152,0.619584,0.499816,0.507268,0.622305,0.622028,0.624104,0.621598,0.507913,0.388704,0.0887627,0.0869503,0.089089,0.0904447,0.0911499,0.0922927,0.0936964,0.611051,0.62168,0.623317,0.621794,0.621327,0.621648,0.617939,0.621686,0.620214,0.622018,0.62156,0.619405,0.621147,0.622288,0.621227,0.621276,0.620948,0.61823,0.616568,0.619563,0.620619,0.617236,0.621054,0.619348,0.61115,0.61207,0.614011,0.498997,0.615799,0.61413,0.614024,0.616963,0.615241,0.618264,0.610333,0.608342,0.611575,0.614281,0.611637,0.610438,0.613512,0.618757,0.485828,0.6105,0.615547,0.385866,0.0785894,0.0748429,0.0779005,0.0777659,0.634954,0.630656,0.63773,0.318852,0.0674867,0.63587,0.625606,0.491765,0.636442,0.637719,0.63601,0.636397,0.635883,0.636491,0.636641,0.0596374,0.636175,0.634525,0.0577388,0.628403,0.0633684,0.635867,0.0710993,0.63768,0.635887,0.635868,0.0708231,0.635709,0.635373,0.632231,0.463846,0.630435,0.635431,0.634051,0.635807,0.635611,0.376832,0.628602,0.627268,0.623627,0.378995,0.390541,0.637078,0.63612,0.635791,0.635852,0.633779,0.635558,0.631311,0.635867,0.633512,0.627214,0.62825,0.0707149,0.626608,0.329424,0.630095,0.628063,0.331431,0.629463,0.0553111,0.0614875,0.478324,0.0637052,0.471044,0.0635755,0.0636979,0.0574809,0.624642,0.623138,0.625685,0.626069,0.624992,0.627541,0.0672781,0.624583,0.623255,0.0485258,0.0484654,0.050309,0.0489167,0.0489073,0.0458028,0.64648,0.651643,0.640325,0.641304,0.642547,0.644573,0.642861,0.643969,0.454113,0.639493,0.637983,0.641078,0.641136,0.639492,0.642719,0.638389,0.637099,0.639493,0.650315,0.636856,0.644074,0.455094,0.455789,0.452928,0.0304691,0.031508,0.0339859,0.0344202,0.316319,0.0362368,0.372637,0.464019,0.456502,0.373514,0.374871,0.374241,0.0161905,0.0156908,0.0181266,0.0204761,0.369358,0.365941,0.366092,0.36409,0.373082,0.00545121,0.00613298,0.374976,0.371535,0.466686,0.440789,0.369984,0.00916681,0.0108556,0.00903644,0.00767428,0.0101256,0.0266597,0.469351,0.0188426,0.365755,0.362258,0.0233014,0.0235505,0.0138911,0.0217146,0.0199275,0.019654,0.0236604,0.46925,0.46754,0.439812,0.464892,0.373723,0.0380566,0.0398995,0.438736,0.374779,0.448869,0.0381298,0.443455,0.0382431,0.443316,0.0362644,0.0333767,0.0327457,0.0449749,0.0525664,0.0523003,0.0543469,0.0508945,0.05247,0.0513354,0.362319,0.0524244,0.0454282,0.0594617,0.0576785,0.0628806,0.0676111,0.0688406,0.067469,0.0810071,0.0815917,0.0745317,0.0777598,0.0816417,0.0832937,0.08177,0.0959428,0.0987156,0.095827,0.0958247,0.0938589,0.0920711,0.0919677,0.102837,0.376716,0.110731,0.112124,0.107823,0.110718,0.108803,0.105397,0.12393,0.432689,0.117701,0.425987,0.115818,0.431361,0.117498,0.427741,0.122155,0.125063,0.126963,0.125514,0.12403,0.426771,0.144601,0.139405,0.139074,0.43267,0.134381,0.137999,0.135941,0.136188,0.139274,0.155083,0.147966,0.153699,0.153534,0.152349,0.15012,0.484019,0.161684,0.158505,0.161167,0.168409,0.170248,0.167842,0.166896,0.168813,0.391142,0.483408,0.483362,0.48157,0.479745,0.390585,0.183241,0.183153,0.182199,0.18002,0.0815907,0.179685,0.0870747,0.18265,0.359287,0.419366,0.353577,0.411364,0.354466,0.412904,0.420325,0.655181,0.196244,0.196554,0.414997,0.197313,0.351448,0.42291,0.351437,0.391282,0.347948,0.349684,0.358114,0.412046,0.40504,0.216873,0.212854,0.208937,0.210778,0.210933,0.63792,0.408739,0.637252,0.637684,0.639316,0.639035,0.639313,0.0833369,0.63778,0.63949,0.639394,0.639483,0.641246,0.0742467,0.362216,0.225737,0.22789,0.398171,0.625012,0.622583,0.398727,0.6239,0.398383,0.624808,0.407725,0.625054,0.623623,0.405579,0.625153,0.0761213,0.625037,0.625104,0.626811,0.624743,0.626411,0.23592,0.24305,0.235253,0.241144,0.60662,0.611771,0.608864,0.610204,0.610832,0.419504,0.610115,0.611808,0.418902,0.420524,0.0797323,0.415869,0.612595,0.611408,0.498264,0.498007,0.498491,0.494757,0.253275,0.0778986,0.0785057,0.257981,0.0848702,0.25439,0.261659,0.251467,0.251974,0.593898,0.594925,0.598135,0.384157,0.596838,0.596346,0.598221,0.249361,0.339987,0.271608,0.269407,0.269204,0.0851477,0.579742,0.439129,0.583343,0.341087,0.266498,0.437615,0.434748,0.345446,0.431245,0.340678,0.276268,0.277436,0.433154,0.0850622,0.335458,0.344719,0.566606,0.570458,0.345923,0.344113,0.346017,0.34239,0.284417,0.286232,0.282248,0.28442,0.282599,0.284383,0.346015,0.345826,0.369062,0.346588,0.381171,0.345906,0.37173,0.338486,0.550722,0.552785,0.452831,0.298313,0.30039,0.298992,0.291372,0.296686,0.296433,0.536264,0.53772,0.538044,0.538044,0.539935,0.315716,0.312799,0.313406,0.440898,0.379808,0.305649,0.304219,0.306212,0.312998,0.35118,0.314477,0.313112,0.512519,0.521739,0.523551,0.523552,0.523552,0.525704,0.526473,0.327817,0.320936,0.329378,0.328748,0.327894,0.325492,0.327868,0.506769,0.50856,0.509078,0.509509,0.343868,0.342911,0.344198,0.342045,0.342394,0.331787,0.338717,0.494631,0.495164,0.354077,0.512863,0.363708,0.512321,0.513118,0.509316,0.357509,0.357468,0.349638,0.347899,0.34971,0.355091,0.35457,0.478262,0.480224,0.480073,0.480075,0.481884,0.369666,0.372437,0.463778,0.465517,0.465435,0.466037,0.370434,0.36311,0.363888,0.37167,0.372218,0.36936,0.365279,0.45146,0.453842,0.452774,0.386778,0.47826,0.385565,0.383014,0.387407,0.384177,0.477502,0.382196,0.386041,0.400402,0.399492,0.400937,0.400088,0.393498,0.396664,0.396599,0.340709,0.402114,0.3479,0.405943,0.406367,0.407532,0.407455,0.390972,0.393079,0.392892,0.393056,0.394661,0.34079,0.392563,0.448506,0.376685,0.378639,0.478261,0.378623,0.378632,0.380406,0.452818,0.45825,0.458755,0.452389,0.451238,0.496142,0.456549,0.458783,0.460548,0.362619,0.366225,0.459948,0.459321,0.458882,0.456999,0.465111,0.330593,0.492492,0.348979,0.349755,0.349043,0.474697,0.472592,0.471869,0.464146,0.47282,0.471583,0.465363,0.463801,0.465041,0.469712,0.329091,0.327975,0.331672,0.335533,0.331322,0.324571,0.324744,0.479239,0.327605,0.480152,0.487727,0.485676,0.483167,0.483794,0.31875,0.320489,0.320652,0.320844,0.322476,0.323329,0.319274,0.321271,0.500657,0.502333,0.494698,0.501762,0.519457,0.503645,0.520955,0.500399,0.501877,0.501636,0.501457,0.49452,0.494676,0.499625,0.4975,0.497983,0.501099,0.496604,0.502053,0.305991,0.324025,0.327123,0.290096,0.292395,0.292421,0.518355,0.517025,0.509019,0.517299,0.514956,0.51672,0.515654,0.507662,0.50897,0.512935,0.512425,0.311363,0.276351,0.277913,0.530933,0.493019,0.5323,0.530639,0.530713,0.52355,0.521795,0.523544,0.529122,0.527517,0.530271,0.52689,0.522509,0.528771,0.529455,0.521728,0.247212,0.243226,0.243813,0.247893,0.529773,0.545577,0.547433,0.545006,0.545925,0.536268,0.543839,0.545283,0.546811,0.0933804,0.544784,0.545348,0.543519,0.545291,0.545056,0.536783,0.54292,0.541393,0.541666,0.527024,0.525066,0.523084,0.297458,0.221311,0.552259,0.569422,0.568401,0.562691,0.559783,0.556337,0.557638,0.558072,0.535193,0.535581,0.553114,0.550572,0.315949,0.319381,0.20761,0.18675,0.191187,0.190802,0.192785,0.312263,0.316627,0.316738,0.544926,0.100421,0.316125,0.0998959,0.0981235,0.309747,0.571714,0.311659,0.568092,0.0979684,0.10052,0.309315,0.174241,0.175735,0.177005,0.278999,0.573809,0.572105,0.548075,0.569428,0.315203,0.317054,0.0996104,0.312023,0.161169,0.550719,0.590177,0.317922,0.549115,0.317412,0.144752,0.146397,0.146915,0.146996,0.14903,0.289466,0.282607,0.588901,0.587198,0.0978478,0.590086,0.581576,0.294207,0.588101,0.315017,0.130001,0.132247,0.118726,0.114538,0.606117,0.549631,0.605083,0.603932,0.603781,0.572245,0.603275,0.0915268,0.601985,0.0930275,0.60328,0.596689,0.594307,0.596107,0.54575,0.563253,0.541751,0.101476,0.103896,0.103269,0.103441,0.105132,0.27575,0.541066,0.541701,0.539661,0.538183,0.0869999,0.0886481,0.0877032,0.0993559,0.0882106,0.61861,0.0989936,0.619467,0.618087,0.618624,0.619822,0.617818,0.0996374,0.619763,0.618526,0.617666,0.617829,0.618212,0.617584,0.61049,0.616113,0.61451,0.614062,0.617287,0.584506,0.61878,0.617169,0.615321,0.610329,0.609096,0.610861,0.615363,0.579739,0.614167,0.613209,0.573259,0.607968,0.595383,0.0736239,0.631108,0.632232,0.634055,0.632207,0.634058,0.632351,0.630645,0.63224,0.632219,0.632246,0.62542,0.628623,0.632794,0.634058,0.630567,0.302025,0.256888,0.629883,0.630766,0.634252,0.629183,0.0580894,0.0596805,0.624747,0.623211,0.624718,0.627455,0.59376,0.0452901,0.0459718,0.0471328,0.294269,0.294955,0.293392,0.64463,0.646186,0.646346,0.644928,0.646434,0.639493,0.637923,0.639493,0.642857,0.642801,0.63851,0.637404,0.637549,0.298173,0.637681,0.301586,0.300264,0.302969,0.302845,0.0288999,0.0305088,0.0310108,0.0307178,0.032436,0.0144928,0.0165277,0.0163088,0.553357,0.584199,0.553119,0,0.0108118,0.609108,0.608509,0,0.00736582,0.00411153,0.0107508,0.0116433,0.552303,0.0253397,0.0214667,0.0264506,0.039956,0.0399515,0.0368547,0.0434727,0.0535176,0.0543104,0.0541441,0.0551874,0.0576728,0.0615107,0.225265,0.0692104,0.0688383,0.0651008,0.225251,0.0607011,0.0869129,0.0854116,0.0837785,0.0726335,0.0797062,0.0833062,0.0963305,0.0974709,0.093694,0.0961813,0.288059,0.287884,0.286487,0.287955,0.28386,0.101322,0.202433,0.105205,0.111485,0.112326,0.112724,0.287828,0.288091,0.288044,0.115703,0.119559,0.623691,0.623188,0.126599,0.126862,0.280797,0.280773,0.283165,0.278133,0.140358,0.137436,0.158359,0.155775,0.154013,0.16039,0.167228,0.168865,0.167378,0.279266,0.275297,0.276981,0.286476,0.186242,0.184671,0.180633,0.188884,0.103285,0.207467,0.101843,0.640352,0.641273,0.640958,0.105451,0.636094,0.637713,0.63776,0.637219,0.27496,0.235461,0.626897,0.626743,0.585657,0.234328,0.583764,0.609674,0.613501,0.613796,0.204974,0.579001,0.256013,0.257603,0.258944,0.59892,0.602956,0.273737,0.27473,0.274569,0.273387,0.273528,0.272125,0.271313,0.27135,0.271692,0.114052,0.268864,0.274246,0.275362,0.28238,0.278522,0.285869,0.113496,0.286395,0.285777,0.300683,0.289107,0.298709,0.292282,0.540012,0.110518,0.315022,0.113545,0.315289,0.182759,0.309421,0.308456,0.314155,0.299236,0.525296,0.112351,0.319929,0.11381,0.325049,0.327874,0.512116,0.511024,0.343818,0.652174,0.338528,0.344177,0.157941,0.496626,0.358927,0.347932,0.355714,0.351543,0.481873,0.600843,0.666667,0.600736,0.598226,0.596478,0.37816,0.365297,0.467531,0.664771,0.373347,0.366181,0.637702,0.375587,0.6371,0.59451,0.376634,0.387094,0.388187,0.26361,0.258078,0.401214,0.391706,0.393957,0.402036,0.404059,0.40166,0.393807,0.262788,0.252152,0.264799,0.415995,0.405564,0.263803,0.409161,0.409796,0.390164,0.394419,0.391114,0.394657,0.394866,0.159793,0.397987,0.39543,0.396269,0.390179,0.445863,0.439885,0.449213,0.448519,0.443388,0.375503,0.379658,0.380948,0.681308,0.380472,0.384875,0.252236,0.460383,0.453238,0.457027,0.460524,0.463775,0.366129,0.371825,0.460847,0.457147,0.460204,0.459163,0.455925,0.350072,0.352139,0.476011,0.474335,0.468345,0.468847,0.474246,0.478262,0.474422,0.470775,0.611772,0.615591,0.615217,0.612823,0.613873,0.614252,0.33151,0.332549,0.337056,0.338617,0.612994,0.611606,0.137653,0.611772,0.480388,0.610011,0.489311,0.47828,0.487114,0.750451,0.484122,0.487975,0.489674,0.485381,0.481844,0.485445,0.31794,0.322705,0.322775,0.326091,0.49737,0.503193,0.506723,0.503569,0.500268,0.50363,0.50353,0.492939,0.499804,0.496186,0.496279,0.502969,0.507188,0.307499,0.305474,0.23699,0.237294,0.241132,0.236708,0.297605,0.289464,0.293932,0.294017,0.519379,0.518064,0.513992,0.518103,0.123214,0.521739,0.518358,0.51467,0.51545,0.507273,0.511232,0.522601,0.276451,0.278803,0.276843,0.282512,0.629041,0.628623,0.626827,0.627879,0.628045,0.527763,0.536136,0.531581,0.52176,0.52889,0.525298,0.525105,0.625376,0.247161,0.546641,0.108276,0.115754,0.548321,0.5471,0.540321,0.540528,0.547086,0.547276,0.542942,0.546176,0.111493,0.539783,0.53879,0.227571,0.537228,0.218755,0.222,0.225221,0.216434,0.643114,0.643115,0.643092,0.123629,0.641299,0.639502,0.640582,0.639131,0.70677,0.561602,0.555069,0.550978,0.0941858,0.558075,0.216801,0.640303,0.637027,0.186524,0.187161,0.192798,0.192488,0.215036,0.212971,0.735904,0.566141,0.575898,0.568451,0.175433,0.217511,0.173607,0.177979,0.179667,0.168346,0.592931,0.0797949,0.583819,0.595257,0.148758,0.144623,0.148562,0.147976,0.148783,0.151626,0.199653,0.590735,0.590912,0.590286,0.590678,0.582535,0.73913,0.59172,0.124903,0.202164,0.196511,0.191961,0.188963,0.13064,0.117791,0.134058,0.13406,0.19085,0.20108,0.0729178,0.185357,0.602276,0.186594,0.12082,0.119336,0.119942,0.123453,0.120148,0.0773352,0.606677,0.608697,0.605099,0.605222,0.605078,0.599309,0.119674,0.123205,0.601836,0.121377,0.184891,0.186819,0.594104,0.596912,0.598375,0.596688,0.171936,0.0579407,0.602677,0.0501433,0.172084,0.171458,0.121377,0.165008,0.128199,0.164393,0.16595,0.162111,0.128888,0.767594,0.105072,0.105241,0.108708,0.616881,0.623412,0.620694,0.622298,0.0869147,0.0905872,0.0917061,0.0902089,0.0940769,0.6202,0.619507,0.61999,0.616507,0.619581,0.622612,0.619195,0.126506,0.619297,0.620044,0.612872,0.0420692,0.615709,0.61254,0.619348,0.0361488,0.61592,0.0446883,0.612316,0.612254,0.612087,0.613979,0.129709,0.0894408,0.147629,0.0767309,0.126694,0.0726557,0.130361,0.0759584,0.155363,0.626648,0.63768,0.637679,0.635277,0.635448,0.634598,0.63768,0.634054,0.630576,0.634028,0.634122,0.623347,0.153067,0.629409,0.626241,0.627675,0.632047,0.633949,0.157627,0.63378,0.633808,0.623574,0.626901,0.629749,0.157916,0.626837,0.632987,0.633526,0.0579425,0.06166,0.0615452,0.021863,0.065501,0.028425,0.0614551,0.0612637,0.623201,0.626089,0.144737,0.0384153,0.0470716,0.050507,0.648914,0.638679,0.64169,0.641144,0.644463,0.637681,0.640333,0.641304,0.640896,0.637572,0.645343,0.0291466,0.0325437,0.140488,0.660459,0.132324,0.0144945,0.0176615,0.0184698,0.137742,0.130983,0.142116,0.143114,0.140918,0.133958,0.137947,0.134072,0.131269,0,0.00344982,0,0,0.00719694,0.00385786,0.00356167,0.141405,0.142466,0.140051,0.927536,0.850416,0.903701,0.141536,0.886392,0.881546,0.148722,0.736983,1,1,1,1,1,1,1,0.442982,0.408248,0.408277,0.626921,0.410564,0.623832,0.417847,0.0154176,0.643975,0.353478,0.626313,0.0244565,0.0647273,0.0848454,0.629981,0.453466,0.295779,0.450465,0.441267,0.238492,0.450972,0.602826,0.0332761,0.486364,0.550888,0.146921,0.114851,0.61533,0.640947,0.0260075,0.638992,0.369321,0.527955,0.634827,0.0448979,0.0846226,0.642323,0.0338427,0.647945,0.651267,0.0161809,0.609438,0.635869,0.63587,0.632251,0.630807,0.814842,0.687587,0.635835,0.462509,0.415601,0.00184443,0.145739,0.47509,0.0761111,0.598242,0.177972,0,0.0133299,0.296351,0.046249,0.564739,0.16013,0.332308,0.508639,0.360829,0.334968,0.359456,0.497249,0.293763,0.549596,0.220109,0.1792,0.152388,0.592035,0.132613,0.125879,0.609607,0.63375,0.633378,0.645774,0.645011,0.64368,0.279324,0.110565,0.141439,0.153739,0.170126,0.623691,0.388779,0.176709,0.119648,0.616178,0.633882,0.75152,0.605819,0.890747,0.58782,0.292879,0.630299,0.247613,0.366133,0.0307278,0.163516,0.419951,0.498558,0.608231,0.579565,0.228203,0.44048,0.00573672,0.44446,0.346692,0.375809,0.507114,0.517048,0.558738,0.581334,0.607683,0.604594,0.602151,0.0911078,0.633968,0.646857,0.631876,0.219814,0.13439,0.292697,0.310817,0.588197,0.334838,0.012554,0.429338,0.595318,0.633917,0.285773,0.253545,0.14311,0.313613,0.301071,0.379239,0.047095,0.439219,0.195318,0.576757,0.58015,0.632464,0.113287,0.582284,0.102203,0.237159,0.109914,0.197177,0.0797215,0.0576572,0.951851,0.940773],"Archive1401_field2":[0,0.176931,0.17346,0.621096,0.620442,0.446223,0.407678,0.410215,0.450476,0.409421,0.225452,0.179242,0,0.26087,0.637632,0.632422,0.603288,0.451402,0.626006,0.0711681,0.642181,0.62976,0.629192,0.0705817,0.444421,0.070499,0.0776447,0.233163,0.401794,0.445285,0.523307,0.445346,0.587182,0.444711,0.623188,0.455275,0.667609,0.681159,0.447383,0.710145,0.404515,0.412471,0.237639,0.0736876,0.00947093,0.0640894,0.0659748,0.00249842,0.627564,0.885973,0.631952,0.625346,0.407398,0.409589,0.631239,1,0.440382,0.441662,0.445637,0.445969,0.437257,0.450166,0.44894,0.446824,0.466328,0.434809,0.434216,0.414372,0.427891,0.588123,0.643165,0.636659,0.448012,0.453389,0.398165,0.4076,0.639551,0.349351,0.380213,0.40753,0.410032,0.398989,0.444905,0.449634,0.452213,0.451761,0.637681,0.456532,0.455278,0.454773,0.64019,0.458461,0.456514,0.459355,0.40472,0.401211,0.400132,0.396495,0.396949,0.650906,0,0.390942,0.198465,0.338216,0.526665,0.531072,0.31017,0.292007,0.643479,0.57466,0.642823,0.639211,0.641304,0.117192,0.649126,0.622902,0.0597373,0.0678186,0.0625781,0.0628752,0.0795789,0.635777,0.637757,0.62863,0.0067019,0.636392,0.572659,0.540051,0.51741,0.528669,0.515875,0.524369,0.403333,0.451739,0,0.457618,0.458419,0.458494,0.456986,0.455898,0.459979,0.451403,0.40044,0,0.360795,0.00694673,0.626986,0.0597826,0.635699,0.0522112,0.570412,0.622543,0.632589,0.626393,0.631922,0.628437,0.631414,0.6283,0.0673431,0.0718889,0.590778,0.0700092,0.624728,0.637666,0.0703616,0.0747959,0.0750418,0.00333271,0.0015345,0.001631,0.571716,0.574981,0.0695957,0.0684595,0.0640948,0.536629,0.573958,0.403556,0.406916,0.405895,0.400641,0.463771,0.480938,0.41497,0.447903,0.447809,0.451571,0.454393,0.453722,0.455126,0.44309,0.451027,0.455099,0.454741,0.412793,0.0802365,0.0733397,0.397314,0.419919,0.399084,0.0573319,0.405724,0.592087,0.0421652,0.036299,0.58064,0.636974,0.0651333,0.0731555,0.0060497,0.00722162,0.0711195,0.0636877,0.0217312,0.06292,0.0662132,0.0732979,0.0866006,0.00740587,0.627141,0,0.610841,0.640086,0.63173,0.640376,0.628126,0.617801,0.0582398,0.625374,0.635219,0.62887,0.628664,0.628671,0.631302,0.631864,0.632129,0.625259,0.624621,0.618396,0.421873,0.406368,0.452002,0.425388,0.421068,0.406965,0.431193,0.434651,0.443084,0.443216,0.441102,0.410717,0.417278,0.421672,0.424914,0.431377,0.430979,0.425502,0.426277,0.428241,0.428104,0.431038,0.437243,0.438945,0.436536,0.438534,0.436942,0.449203,0.123592,0.444995,0.461696,0.11594,0.109593,0.408081,0.411139,0.0942458,0.43752,0.0901225,0.440132,0.434525,0.398122,0.0804031,0.405783,0.412311,0.439433,0.43748,0.0643315,0.648628,0.633087,0.635839,0.636174,0.600306,0.601634,0.401934,0.557974,0.608096,0.510806,0.455659,0.650041,0.439264,0.434325,0.687995,0.171631,0.597447,0.179208,0.00408651,0.59964,0.826048,0.602499,0.175732,0.17742,0.60611,0.172768,0.478108,0.602097,0.603916,0.603822,0.58545,0.172992,0.191749,0.267301,0.571111,0.605194,0.459194,0.348837,0.186902,0.646955,0.639604,0.380142,0.62491,0.400072,0.182372,0.181575,0.0618606,0.177647,0.174166,0.374863,0.603686,0.624896,0.154884,0.531334,0.446499,0.456228,0.506179,0.582641,0.463966,0.644881,0.623072,0.492466,0.403875,0.448091,0.406127,0.400326,0.405857,0.408616,0.274766,0.312767,0.641208,0.63799,0.598737,0.166638,0.232504,0.230247,0.237241,0.599367,0.599517,0.181874,0.176142,0.0112529,0.0662298,0.630638,0.639493,0.624985,0.622837,0.625016,0.601462,0.57184,0.566776,0.571077,0.176759,0.174338,0.349626,0.45631,0.409284,0.530642,0.22633,0.224023,0.227062,0.236429,0.229232,0.646579,0.625398,0.641983,0.642953,0,0.640693,0.643712,0.168246,0.605356,0.568744,0.672017,0.626402,0.629221,0.631242,0.642694,0.607854,0.069136,0.0706551,0.0740823,0.638927,0.0768727,0.597549,0.588026,0.575273,0.570756,0.573526,0.0683395,0.069411,0.0655994,0.168483,0.653721,0.228671,0.27774,0.410505,0.452441,0.457157,0.510639,0.472555,0.466197,0.445821,0.394956,0.402672,0.516674,0.402898,0.411403,0.411414,0.344048,0.401459,0.314733,0.583359,0.5819,0.33018,0.605107,0.597395,0.582914,0.589662,0.330998,0.581553,0.229085,0.233638,0.602542,0.600337,0.61889,0.186606,0.181708,0.19119,0.192895,0.0831574,0.155487,0.063184,0.0713737,0.0757827,0.0806919,0.176964,0.00632699,0.00536163,0.00466832,0.00293964,0.0101154,0.00910163,0.0637709,0.06516,0.0637352,0.0648296,0.0716369,0.078897,0.0775981,0.635013,0.00688957,0.0059588,0.00167325,0.0666336,0.609123,0.656022,0.642475,0.622176,0.630574,0.645371,0.62385,0.518696,0.630679,0.626687,0.629865,0.62845,0.630263,0.621306,0.48689,0.635825,0.630326,0.630233,0.623619,0.624234,0.630337,0.630618,0.63197,0.627775,0.447735,0.405996,0.51251,0.409337,0.402376,0.395508,0.43226,0.438822,0.449042,0.449229,0.440596,0.442972,0.44728,0.452898,0.45357,0.449456,0.440305,0.435982,0.480768,0.403564,0.433997,0.453604,0.409121,0.413622,0.398597,0.415598,0.412559,0.533364,0.414747,0.290414,0.60864,0.58996,0.635869,0.255337,0.069146,0.59731,0.299115,0.0667698,0.0808224,0.0036232,0.0584368,0.0752305,0.0826602,0.0724253,0.0737522,0.134899,0.645026,0.646739,0.638344,0.635528,1,0.753623,0.635243,0.0907789,0.0507246,0.445039,0.63809,0.618329,0.643889,0.646886,0.64013,0.637443,0.630438,0.324823,0.403065,0.401053,0.401567,0.404157,0.397793,0.399931,0.398975,0.496396,0.498306,0.498183,0.36557,0.635894,0.374999,0.594809,0.634364,0.373598,0.373036,0.380669,0.376819,0.37871,0.386137,0.38048,0.384276,0.382914,0.381558,0.378656,0.38045,0.632464,0.386749,0.388627,0.384376,0.393752,0.395096,0.3991,0.393613,0.637242,0.639032,0.512936,0.512331,0.510114,0.506967,0.50588,0.497754,0.498882,0.350532,0.360394,0.35767,0.361841,0.354834,0.365661,0.362283,0.37333,0.375,0.37132,0.371582,0.368223,0.364125,0.364976,0.373657,0.372451,0.375334,0.381952,0.394756,0.594203,0.525079,0.523371,0.519929,0.521181,0.515983,0.518234,0.392983,0.396304,0.315895,0.338766,0.345857,0.343756,0.343974,0.346126,0.340926,0.342104,0.351501,0.347428,0.349585,0.358643,0.360148,0.357166,0.356873,0.353277,0.353719,0.353439,0.354787,0.349159,0.254468,0.352073,0.248682,0.396191,0.397725,0.395449,0.53455,0.526872,0.396571,0.400279,0.302477,0.402121,0.539665,0.54162,0.541214,0.537962,0.53476,0.53619,0.534476,0.521591,0.510008,0.308872,0.317019,0.315538,0.315764,0.318841,0.321079,0.324467,0.323928,0.32066,0.322477,0.329123,0.330608,0.325136,0.327461,0.34552,0.343187,0.171239,0.338878,0.338013,0.338954,0.34819,0.393002,0.394437,0.54865,0.545253,0.546618,0.29066,0.296042,0.295471,0.294187,0.301204,0.297836,0.299591,0.307628,0.549389,0.306356,0.31504,0.317011,0.313992,0.31348,0.309757,0.310376,0.309756,0.311069,0.550385,0.615005,0.309323,0.319419,0.324043,0.289718,0.282756,0.275744,0.565756,0.256696,0.546836,0.273551,0.271475,0.278985,0.275268,0.276895,0.285107,0.414798,0.288289,0.284729,0.280168,0.280829,0.280222,0.283589,0.280878,0.280752,0.276979,0.278985,0.286391,0.288037,0.282965,0.283622,0.284919,0.29241,0.626302,0.299493,0.295934,0.29565,0.295501,0.577712,0.474829,0.634425,0.472354,0.477999,0.476352,0.480027,0.577527,0.577113,0.574842,0.576049,0.482432,0.492845,0.184245,0.635876,0.241348,0.253198,0.252553,0.247623,0.264597,0.252751,0.258725,0.272175,0.273401,0.267907,0.457143,0.275106,0.460919,0.459146,0.585028,0.58562,0.58204,0.577086,0.311751,0.3032,0.462351,0.297147,0.46379,0.462691,0,0.464835,0.470241,0.59531,0.591417,0.591464,0.588947,0.590601,0.46741,0.62938,0.220502,0.217612,0.220221,0.221675,0.455217,0.489931,0.24325,0.548311,0.234647,0.482575,0.624592,0.602163,0.605741,0.596344,0.635818,0.59259,0.634023,0.840619,0.462126,0.250366,0.48535,0.606819,0.634054,0.602726,0.60527,0.630593,0.109255,0.632237,0.149585,0.179536,0.179149,0.610231,0.606877,0.608736,0.606371,0.185386,0.184478,0.181109,0.187479,0.190569,0.19066,0.192152,0.198678,0.632241,0.550888,0.200383,0.196069,0.208563,0.325323,0.207449,0.205769,0.211613,0.314054,0.464572,0.612219,0.614019,0.637694,0.610691,0.459672,0.46051,0.269874,0.46192,0.452938,0.617261,0.618244,0.615755,0.614523,0.128871,0.133621,0.411285,0.13673,0.15048,0.151325,0.14662,0.14864,0.15819,0.156212,0.155462,0.152365,0.536725,0.154496,0.162939,0.161205,0.17027,0.167637,0.164411,0.165588,0.161705,0.457575,0.184807,0.185281,0.453605,0.179234,0.459279,0.181622,0.460667,0.452596,0.449829,0.621393,0.623013,0.621262,0.619951,0.614209,0.0310482,0.347852,0.340532,0.0517724,0.0784604,0.0780117,0.0848171,0.325288,0.471241,0.626544,0.627953,0.627767,0.625014,0.622427,0.623283,0.622083,0.0927242,0.0927326,0.0920784,0.0892975,0.099728,0.0979542,0.100554,0.0947692,0.0964412,0.0960594,0.101273,0.103528,0.107258,0.10704,0.103202,0.105133,0.113324,0.111912,0.113762,0.11053,0.111534,0.119167,0.115617,0.117634,0.125462,0.125628,0.126179,0.286831,0.121334,0.121377,0.123577,0.126767,0.129349,0.127387,0.141581,0.143516,0.140159,0.138759,0.136648,0.136338,0.137437,0.142148,0.368998,0.1504,0.161544,0.474751,0.631679,0.627754,0.623692,0.620374,0.0153365,0.0199113,0.0201704,0.521728,0.62654,0.0289852,0.0339211,0.356326,0.0345909,0.0344997,0.0310848,0.0326417,0.0417456,0.0394489,0.0366844,0.634057,0.0434709,0.0452392,0.635873,0.0535321,0.628545,0.0489139,0.627221,0.0489096,0.0453049,0.0471083,0.635536,0.0558689,0.0543043,0.0543472,0.421883,0.0561594,0.0507221,0.0525072,0.0521499,0.0577442,0.476521,0.0669283,0.0628474,0.0629649,0.474828,0.463382,0.06255,0.0596469,0.0703375,0.0688463,0.0668886,0.067678,0.0769958,0.0724651,0.0740501,0.0815679,0.08175,0.63306,0.078559,0.509844,0.078022,0.0803398,0.553146,0.0857824,0.641998,0.639098,0.384164,0.636698,0.384171,0.631745,0.633908,0.629196,0.0976784,0.0995469,0.0967313,0.0926086,0.0923594,0.0927974,0.633612,0.116319,0.109702,0.635531,0.636756,0.635489,0.632247,0.634063,0.62808,0.0036627,0,0.0109561,0.009058,0.00960581,0.00561336,0.00817356,0.0130878,0.418025,0.0253627,0.0272217,0.0236167,0.0198048,0.0199276,0.0196769,0.0407789,0.0419034,0.0344205,0.0344107,0.056213,0.0440461,0.402417,0.404558,0.406433,0.64036,0.642162,0.636239,0.637311,0.610792,0.635867,0.488608,0.397411,0.398448,0.486006,0.481793,0.480256,0.640597,0.641823,0.639498,0.637973,0.484145,0.483696,0.487177,0.489033,0.479736,0.646063,0.647985,0.478261,0.481702,0.329165,0.457266,0.476548,0.642594,0.643111,0.644621,0.645708,0.645501,0.620359,0.373291,0.633308,0.329014,0.391324,0.638155,0.639493,0.646535,0.639496,0.639493,0.641201,0.644811,0.387605,0.392809,0.441755,0.395116,0.475971,0.636176,0.636008,0.428305,0.476716,0.411399,0.63749,0.412044,0.638655,0.405641,0.638831,0.638657,0.640712,0.632964,0.628628,0.635811,0.635848,0.632397,0.632451,0.637472,1,0.639134,0.641911,0.630513,0.632254,0.626587,0.635515,0.635869,0.637349,0.621614,0.624969,0.631649,0.626471,0.628418,0.62819,0.629948,0.621925,0.6217,0.62333,0.624579,0.624781,0.624912,0.626099,0.618908,0.4782,0.621019,0.621482,0.618675,0.61804,0.623473,0.625183,0.600667,0.440073,0.616295,0.443175,0.618424,0.428016,0.61766,0.42359,0.612746,0.614214,0.613988,0.615382,0.616897,0.398966,0.60608,0.609196,0.610932,0.387958,0.61484,0.610463,0.610743,0.611916,0.613864,0.606812,0.604007,0.60359,0.608857,0.610403,0.610294,0.373263,0.601945,0.603851,0.603301,0.599748,0.599671,0.601089,0.602681,0.6031,0.464317,0.376144,0.375029,0.378408,0.379896,0.53752,0.594224,0.59603,0.595647,0.596145,0.626799,0.599432,0.62343,0.598826,0.495,0.455497,0.499522,0.454814,0.497251,0.449461,0.442114,0,0.585154,0.587755,0.43076,0.588957,0.498173,0.41463,0.501245,0,0.504885,0.502956,0.494511,0.391192,0.507119,0.564884,0.579133,0.581974,0.582024,0.585826,0.0719424,0.409315,0.0456163,0.0308053,0.0307216,0.0273556,0.028807,0.624986,0.0163032,0.0162977,0.012588,0.0144942,0.0125721,0.633543,0.48347,0.573874,0.573765,0.463595,0.108557,0.103588,0.456508,0.105246,0.450504,0.099025,0.443931,0.101504,0.0880414,0.427723,0.0887598,0.6321,0.0854412,0.0869342,0.0851449,0.0571197,0.0587214,0.56658,0.563965,0.569137,0.570263,0.207088,0.158527,0.14661,0.146305,0.142741,0.363651,0.144774,0.143495,0.422674,0.435795,0.628666,0.468233,0.128639,0.114017,0.345231,0.348106,0.346383,0.351535,0.553878,0.628623,0.630148,0.555806,0.628347,0.563802,0.560742,0.560356,0.56164,0.190953,0.187495,0.186811,0.477673,0.174887,0.172845,0.170921,0.567746,0.527842,0.549324,0.551242,0.553245,0.624996,0.21917,0.19969,0.201773,0.519521,0.55344,0.406341,0.421794,0.508485,0.48082,0.511062,0.545592,0.54612,0.591555,0.626809,0.517687,0.507372,0.244539,0.241626,0.501791,0.50195,0.50003,0.503627,0.541944,0.541667,0.549084,0.543478,0.545287,0.545403,0.503651,0.505356,0.485792,0.496338,0.468272,0.498718,0.471451,0.499326,0.276751,0.273584,0.301861,0.534866,0.534465,0.536225,0.542674,0.537974,0.539249,0.292375,0.292022,0.288043,0.289855,0.288007,0.520558,0.522523,0.523551,0.748875,0.413454,0.529373,0.531,0.530765,0.52708,0.533956,0.526946,0.528691,0.302743,0.320677,0.320661,0.31702,0.318836,0.316071,0.301204,0.508756,0.516658,0.51341,0.519779,0.515007,0.516719,0.516099,0.347689,0.344522,0.335183,0.332771,0.499525,0.505171,0.505452,0.502342,0.507295,0.517148,0.511066,0.360145,0.360994,0.501145,0.329619,0.484345,0.333347,0.330801,0.336616,0.490159,0.492787,0.499975,0.501738,0.501583,0.494873,0.493852,0.37872,0.378416,0.375,0.376811,0.375,0.47868,0.477731,0.393096,0.393048,0.389206,0.390825,0.480991,0.486943,0.487955,0.483248,0.484491,0.486833,0.501,0.404061,0.404884,0.393643,0.450782,0.376816,0.460387,0.469662,0.469487,0.472672,0.457388,0.479735,0.483427,0.454149,0.462175,0.462193,0.463987,0.471401,0.465584,0.467256,0.506974,0.469846,0.499985,0.459238,0.457925,0.455239,0.451391,0.465924,0.465574,0.4623,0.463841,0.462296,0.472809,0.453419,0.402652,0.479867,0.480073,1,0.476449,0.478229,0.476693,0.377384,0.389554,0.393128,0.397989,0.39934,0.103799,0.393035,0.396652,0.39641,0.490984,0.48976,0.402385,0.399769,0.406784,0.407249,0.404868,0.51625,0.36202,0.507629,0.504758,0.491196,0.375031,0.377343,0.380025,0.386145,0.384066,0.393256,0.397422,0.399142,0.400132,0.391455,0.516566,0.518095,0.511114,0.509067,0.512957,0.527989,0.522191,0.370502,0.513835,0.371487,0.369132,0.370716,0.377892,0.379015,0.52353,0.523477,0.519927,0.521654,0.519928,0.516118,0.519911,0.518112,0.329521,0.334789,0.34254,0.345986,0.171134,0.346005,0.243552,0.342485,0.342364,0.347807,0.349816,0.355354,0.356934,0.349651,0.349749,0.351452,0.353515,0.369072,0.357621,0.521126,0.450686,0.506123,0.538276,0.537574,0.536489,0.317046,0.318677,0.327599,0.325468,0.327751,0.327802,0.335387,0.342256,0.342396,0.337078,0.335125,0.522032,0.548925,0.549096,0.302686,0,0.302747,0.304801,0.306172,0.311589,0.312892,0.313475,0.306388,0.30771,0.311856,0.316128,0.326705,0.325372,0.332804,0.31885,0.567484,0.566226,0.567807,0.564695,0.299108,0.273502,0.273419,0.276036,0.277307,0.285296,0.27779,0.280816,0.28106,0.61761,0.287354,0.282647,0.2848,0.284431,0.288768,0.299096,0.291185,0.291471,0.293477,0.317215,0.320071,0.322213,0.536211,0.577753,0.21684,0.203302,0.233999,0.249946,0.253622,0.258741,0.259552,0.264453,0.291703,0.303534,0.268554,0.283717,0.537688,0.528023,0.578097,0.595086,0.5921,0.593311,0.591866,0.533443,0.525088,0.523484,0.589091,0.621439,0.527385,0.620655,0.620678,0.528785,0.231813,0.52713,0.236911,0.61943,0.619516,0.529882,0.596037,0.596963,0.594339,0.554806,0.236904,0.244646,0.0643729,0.246606,0.523554,0.521759,0.623186,0.526046,0.609754,0.275183,0.173127,0.518605,0.348038,0.520164,0.610519,0.610519,0.607356,0.609109,0.606682,0.543396,0.54348,0.195818,0.196691,0.624273,0.199481,0.209909,0.498893,0.217276,0.510961,0.610792,0.610507,0.620092,0.612248,0.150055,0,0.157594,0.152465,0.158472,0.0926893,0.1612,0.627578,0.160862,0.627879,0.164833,0.181265,0.183091,0.183267,0.270443,0.44021,0.286404,0.62475,0.624899,0.621374,0.623087,0.621388,0.544457,0.290191,0.288149,0.291505,0.293545,0.625291,0.625125,0.62207,0.624668,0.624261,0.101324,0.626488,0.101115,0.0960708,0.103046,0.106775,0.114144,0.635869,0.113506,0.107139,0.106636,0.110334,0.115902,0.117406,0.123282,0.117728,0.118069,0.119907,0.121422,0.031664,0.122719,0.123326,0.126019,0.138573,0.13918,0.139423,0.132603,0.21669,0.132052,0.134908,0.302709,0.155232,0.316225,0.637959,0.0290099,0.0489286,0.0489176,0.056122,0.0560941,0.0506892,0.0519044,0.0525376,0.0579366,0.0597826,0.0666162,0.0597826,0.0645737,0.0706522,0.067172,0.544791,0.516606,0.0746026,0.0797673,0.0773901,0.0826629,0.638736,0.637238,0.0941166,0.0959909,0.0962607,0.0889909,0.189322,0.635869,0.636843,0.635364,0.54318,0.540843,0.541775,0.00267861,0.00554829,0.00716368,0.009058,0.00898024,0.0217392,0.0233199,0.0235509,0.0165127,0.0179019,0.0376221,0.0380689,0.05244,0.539531,0.067029,0.530601,0.532323,0.532499,0.534003,0.639002,0.638968,0.636049,0.637711,0.636378,0.639493,0.639393,0.637969,0.262274,0,0.26667,0.634058,0.639169,0.14428,0.159574,0.648551,0.641862,0.645304,0.641369,0.644134,0.276798,0.637751,0.641178,0.640353,0.634141,0.637411,0.640588,0.634478,0.630924,0.634031,0.637443,0.622093,0.634042,0.629774,0.578286,0.626597,0.63355,0.641327,0.572332,0.645234,0.616597,0.619965,0.623689,0.633268,0.626805,0.626803,0.607364,0.623237,0.626033,0.626066,0.548303,0.545014,0.544841,0.543531,0.54692,0.62023,0.612217,0.61616,0.616789,0.619584,0.622482,0.539883,0.538207,0.541663,0.619761,0.615887,0.0722591,0.101449,0.612895,0.615764,0.543478,0.542543,0.541606,0.542657,0.609815,0.612417,0.600888,0.605071,0.610783,0.604494,0.598066,0.598517,0.610974,0.545053,0.548611,0.547281,0.538499,0.590459,0.594353,0.606157,0.590419,0.61966,0.585996,0.621049,0.0287648,0.0144903,0,0.618173,0,0.0137425,0.0289798,0.0433223,0.553258,0.561122,0.0993736,0.0870732,0.201694,0.572704,0.203854,0.172438,0.116437,0.0154761,0.586087,0.223218,0.554472,0.557952,0.560422,0.172907,0.0410502,0.550229,0.546123,0.544281,0.547847,0.548925,0.540121,0.544266,0.547936,0.550725,0.621045,0.554732,0.552755,0.547133,0.540686,0.544197,0.540085,0.619978,0.543315,0.546519,0.533022,0.545956,0.537555,0.543252,0.289701,0.619573,0.519842,0.617193,0.521918,0.593452,0.526936,0.528617,0.52548,0.581655,0.318636,0.618488,0.518241,0.618321,0.51346,0.51261,0.370966,0.333195,0.503678,0.797101,0.513332,0.510692,0.627723,0.348261,0.492727,0.503314,0.495479,0.499891,0.376778,0.158682,0,0.170963,0.175534,0.177207,0.460065,0.46844,0.390715,0.126856,0.478291,0.485446,0.250965,0.490067,0.328398,0.193191,0.475321,0.468143,0.470409,0.55718,0.559324,0.449933,0.46067,0.458508,0.453134,0.457836,0.460383,0.47385,0.556003,0.563375,0.557729,0.44467,0.460101,0.554249,0.463476,0.449559,0.49658,0.478224,0.467429,0.460749,0.463788,0.601705,0.460797,0.454153,0.451164,0.433068,0.405274,0.416689,0.409152,0.416991,0.422316,0.482734,0.481894,0.474386,0.159383,0.478165,0.473793,0.583408,0.391061,0.402682,0.394649,0.394688,0.394897,0.488504,0.486214,0.398564,0.402047,0.401052,0.404349,0.408314,0.495704,0.496398,0.372047,0.377759,0.386972,0.381762,0.380783,0.380509,0.384364,0.387862,0.103218,0.111602,0.115856,0.119928,0.128267,0.129648,0.538568,0.511388,0.510502,0.502455,0.131117,0.133107,0.608946,0.14577,0.360759,0.14856,0.362694,0.373083,0.365074,0,0.367153,0.367395,0.368599,0.373247,0.384034,0.387633,0.525333,0.518021,0.521732,0.518115,0.343821,0.33741,0.337573,0.341132,0.344262,0.344182,0.347729,0.358278,0.351434,0.351707,0.355158,0.351041,0.349098,0.531827,0.524673,0.572106,0.570445,0.568327,0.564065,0.560026,0.54033,0.53986,0.536507,0.314785,0.318973,0.324061,0.323062,0.615917,0.322489,0.32563,0.32964,0.332083,0.344165,0.340675,0.329785,0.553797,0.547063,0.550452,0.54693,0.0577769,0.0561594,0.0743144,0.0835083,0.085265,0.289091,0.293798,0.298756,0.315103,0.308088,0.308357,0.312057,0.0901749,0.563425,0.25152,0.622945,0.61716,0.2707,0.275135,0.286083,0.282423,0.278958,0.282299,0.286764,0.285882,0.609046,0.293699,0.298422,0.575578,0.308774,0.581461,0.579179,0.575829,0.590301,0.0108698,0.014493,0.012633,0.560542,0.0163058,0.018167,0.0309237,0.0325255,0.451094,0.253595,0.262388,0.270647,0.623191,0.284783,0.585775,0.0594025,0.114518,0.596535,0.59757,0.590513,0.593185,0.581965,0.581952,0.044108,0.227839,0.224838,0.242589,0.612935,0.577725,0.598328,0.598226,0.594002,0.566713,0.0614626,0.630154,0.175667,0.177306,0.617305,0.612179,0.612317,0.606175,0.608684,0.605434,0.589026,0.184978,0.188346,0.192647,0.194008,0.212183,1,0.222841,0.612666,0.584554,0.586286,0.588531,0.592267,0.61231,0.618874,0.612319,0.608695,0.590258,0.574423,0.629136,0.595451,0.125354,0.594203,0.622678,0.617272,0.618281,0.618291,0.612512,0.588775,0.146814,0.148672,0.152444,0.155471,0.159396,0.16524,0.614161,0.614133,0.169283,0.61413,0.591877,0.59259,0.18505,0.185569,0.180782,0.194597,0.599756,0.630421,0.195689,0.630629,0.597838,0.596786,0.615942,0.601451,0.614299,0.599984,0.600236,0.604536,0.61238,0.188533,0.619565,0.62314,0.619573,0.0491888,0.0616546,0.0685427,0.0717549,0.626814,0.626001,0.619869,0.623921,0.620998,0.0906947,0.0984818,0.101813,0.104584,0.105271,0.105097,0.109062,0.618144,0.112445,0.115218,0.125792,0.644879,0.119544,0.12221,0.119481,0.637523,0.126682,0.6305,0.140885,0.13415,0.137719,0.144848,0.615373,0.662996,0.614036,0.632886,0.616855,0.626962,0.616341,0.624589,0.604046,0.0177925,0.0181153,0.0326468,0.0375002,0.0400738,0.0469928,0.0471022,0.0507185,0.0542771,0.0542779,0.0577761,0.0689753,0.605677,0.0612603,0.0613185,0.0646299,0.0621185,0.0653378,0.605142,0.0688756,0.0724396,0.0837584,0.0832617,0.0764455,0.606244,0.0805039,0.0763319,0.0829075,0.654549,0.633937,0.63703,0.638202,0.633204,0.629993,0.626752,0.623662,0.0975657,0.0905137,0.607414,0.641512,0.634355,0.634051,0,0.0114131,0.0107882,0.00759717,0.0109314,0.0253624,0.0265386,0.0181028,0.0216385,0.0398377,0.0816085,0.639713,0.637687,0.587723,0.0440956,0.628715,0.641342,0.640974,0.637798,0.617626,0.622431,0.612182,0.610508,0.614598,0.616003,0.613345,0.613783,0.617884,0.655797,0.650437,0.644928,0.641304,0.644883,0.642389,0.640226,0.610322,0.60934,0.611696,0.376812,0.768325,0,0.608737,0.578451,1,0.601195,0.63987,0,0.151258,0.332055,0.496182,0.656216,0.820868,1,0.433107,0.44803,0.458678,0.0732089,0.44869,0.065786,0.44502,0.642973,0.0163248,0.491962,0.0640038,0.635869,0.624953,0.629985,0.0956342,0.401522,0.544113,0.414777,0.425103,0.697531,0.390035,0.169093,0.644381,0.362147,0.264587,0.611331,0.614457,0.10089,0.0368379,0.642263,0.0450766,0.480131,0.321076,0.034056,0.638727,0.632907,0.0252983,0.634488,0.00512693,0.00316698,0.644004,0.12969,0.0181155,0.0235506,0.045108,0,0,0,0.00379811,0.407391,0.438927,0.648345,0.437441,0.388198,0.612631,0.179269,0.601112,0.605185,0.621773,0.256099,0.647995,0.370828,0.585771,0.528301,0.357762,0.48999,0.191968,0.480969,0.353104,0.530456,0.28875,0.579202,0.59539,0.60769,0.188453,0.613021,0.606884,0.141394,0.0312094,0.0470839,0.0152182,0.0120516,0.0275886,0.540954,0.624253,0.608034,0.593986,0.60065,0.103396,0.473841,0.595382,0.620838,0.0859857,0.0413107,0.321876,0.152328,0.262877,0.206697,0.534518,0.0460127,0.572371,0.491486,0.501197,0.597698,0.426933,0.359269,0,0.139361,0.589824,0.365722,0.638929,0.527761,0.50672,0.473715,0.463836,0.336531,0.267635,0.193166,0.142802,0.148499,0.158363,0.621469,0.0916743,0.0191917,0.0812313,0.577711,0.607439,0.548032,0.531792,0.20169,0.507456,0.644791,0.441624,0.181036,0.102605,0.55897,0.595321,0.646872,0.5248,0.53663,0.473546,0.633336,0.448734,0.593971,0.254064,0.203366,0.0391887,0.628534,0.214283,0.618125,0.572537,0.61574,0.589814,0.942986,0.130435,0.0756289,0.910434],"Archive1401_field3":[0,0,1,1,0.18921821090993,0.377581532541099,0.525465826631099,0.588898066811787,0.61629153518852,0.629318402898033,0.635743945811826,0.63840599023969,0.63983068487923,0.640953279093865,0.642007710995273,0.643116850279687,0.644242540865859,0.645313534875757,0.646328058058658,0.647358805208668,0.648650626703789,0.651512484983443,0.658449630831432,0.675108269207224,0.716013362018649,0.815135778015251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0.800249420100774,0.602408655734609,0.402950918898456,0.203279819219015,0.602344443884068,0.310509252604571,0.565217390391247,0.627527044506303,0.135638506790286,0.108031355550542,0.391304346957527,0.633333332821106,0.393478260602316,0.516376623014339,0.739130433824966,0.173913041897037,0.241708935416964,0.114331722040038,0.554060123492088,0.257971013624194,0.576065635612296,0.182833575581045,0.095717848973086,0.442028985351351,0.339130433824966,0.192282444184909,0.55495679909825,0.275362318684684,0.0579710136241941,0.6070990309651,0.0883682419903281,0.666666666154439,0.594202898483912,0.0869565206924049,0.486471210826627,0.098695377771459,0.608695652018018,0.368878896458893,0.0237634607346388,0.293189737240961,0.275362318684684,0.15515277116108,0.578129696965338,0.349304216913231,0.530871812702037,0.352796619294953,0.500744031323813,0.0842302128060071,0.265982180755569,0.731884058082368,0.0798713490645134,0.486559923492894,0.623188405552123,0.267192807716497,0.608695652018018,0.0195953556053297,0.52873602004604,0.58747323112327,0.594202898483912,0.552440358980038,0.569062590430549,0.208569965752373,0.652173912620334,0.632276798209433,0.10831035353086,0.621632966559039,0.480401783092322,0.0711876447509859,0.277349286738177,0.61077340008763,0.517183984599248,0.0710185666764328,0.56216469017059,0.227085647896943,0.643100736190659,0.494177848514335,0.634004516698424,0.453411985750694,0.581159419688545,0.121739128764476,0.101449275250965,0.456064228626028,0.550724636857141,0.0999999994877726,0.316488271175407,0.552793526465812,0.347826086355211,0.507246376254825,0.470857962892259,0.505824302840814,0.575012170267303,0.507246376254825,0.512992173585102,0.038521255076417,0.328741596153697,0.497086966267868,0.515709574861182,0.536231883323036,0.482293435868149,0.202898549989703,0.46733820244422,0.527843662517,0.300258258404451,0.557459673385564,0.599139145993757,0.125696429773882,0.583574879293865,0.441372312876743,0.539060100902859,0.355238572326711,0.537750881433255,0.492753621696265,0.537486537254869,0.583229806025727,0.582638235606848,0.148148147294436,0.205950610950543,0.317230273566423,0.565217390391247,0.543818269477988,0.625482563558484,0.349494685604698,0.478260869186615,0.576361147804522,0.014492753021878,0.507246376254825,0.599532806081262,0.0450401531486215,0.621420562240687,0.615780997803231,0.554717060276044,0.351607418806858,0.309442067760455,0.405797100491633,0.120190128470017,0.11594202878507,0.166818379719573,0.0946193281045364,0.405797100491633,0.545728409565732,0.157971012599739,0.331905489677475,0.652173912620334,0.171179782060142,0.552245653143381,0.137359096098094,0.608695652018018,0.666666666154439,0.557544472634368,0.0565733959959572,0.388244766498213,0.626086956054053,0.526086956054053,0.151181789581833,0.663329503511386,0.0661074777283776,0.557343485865131,0.195107081295091,0.524914472619923,0.29270079363389,0.23674218988674,0.636250667726855,0.598726687160066,0.623188405552123,0.391304346957527,0.299635727936063,0.603864733831831,0.322488839153656,0.654195017557773,0.46150300196512,0.202898549989703,0.209178742914627,0.297944780204394,0.61374011986306,0.188405796455597,0.215942027760616,0.186873021476784,0.0469964213641327,0.159420288362932,0.4724637671583,0.0353959896465726,0.0763531652524631,0.426563989349235,0.463768115652509,0.342029471967397,0.632271509973585,0.57439890189506,0.489295080620139,0.149070258065192,0.214170691058199,0.244584332215213,0.267388164081972,0.639345026378841,0.299908020859499,0.307779335563797,0.381642511609609,0.29275362272072,0.250793252792948,0.483361733270215,0.304347825752895,0.456014803802608,0.649111028294182,0.507246376254825,0.487010227737027,0.623188405552123,0.397592605415352,0.462003537278626,0.371114198510641,0.599328479589269,0.127375198786496,0.797101448985843,0.286744266968914,0.495523212799358,0.640092158215206,0.0826086944272823,0.624545359494672,0.268043531401123,0.524637680290861,0.101449275250965,0.536231883323036,0.227955894617323,0.247826086355211,0.279929917147318,0.416888923167148,0.318840579287001,0.526707892470721,0.00660239882450775,0.461758531734123,0.420289855050193,0.611594202519948,0.547487872836634,0.468648716824733,0.485509830653211,0.63312849922397,0.135101550058556,0.626265134360888,0.0906851592852596,0.0454050311775925,0.624908342282202,0.0841240813342147,0.382194288104954,0.507246376254825,0.25914876582953,0.358467970516969,0.569793780725257,0.452173912620334,0.0378113437330456,0.629334463532394,0.607246376254825,0.388227130508262,0.188405796455597,0.0289855065559834,0.304347825752895,0.189831372480682,0.359249299680115,0.146958585173784,0.579710143925352,0.373227089478846,0.196238702299296,0.466666666154439,0.385507245953667,0.122726872258565,0.315506977648946,0.49730952190916,0.0914712081118219,0.0840579701904747,0.321739129788931,0.0869565206924049,0.485429876051312,0.3307568432584,0.647173797522833,0.646677584384268,0.183360039846376,0.331884057057914,0.534782608584298,0.24974421001947,0.0903908856589262,0.291301464141627,0.128871221448175,0.188405796455597,0.512077294441012,0.0234499847269151,0.321522110301556,0.427282280733141,0.614605565988091,0.590982286018303,0.583524420795519,0.548646506665877,0.388405796455597,0.22801469217801,0.401896419051938,0.607085345272986,0.400184000795879,0.535063882903255,0.589202171786877,0.304347825752895,0.546538029049093,0.198578073595258,0.227162860033254,0.162268763512623,0.652173912620334,0.469568609650776,0.323930971393297,0.575089151901276,0.633139089013579,0.616473123586246,0.855072463122264,0.0855072449292124,0.234496553134636,0.405797100491633,0.246376810592019,0.0695656151692994,0.146135263607032,0.0768115934234221,0.120289854025738,0.434782608584298,0.645986234113561,0.366851438877034,0.0274537201760837,0.639220735420679,0.344927535853281,0.510144926756755,0.489731888696302,0.269839995931685,0.492753621696265,0.587115101178284,0.475569521845849,0.118840579287001,0.164072446351938,0.386881370783673,0.617815181955523,0.374515431583408,0.231884057057913,0.550724636857141,0.597030394847533,0.0800332559552353,0.304347825752895,0.604552368404858,0.053632375694469,0.616908211602744,0.0168109805945409,0.28985507221879,0.376811593423422,0.572606027054234,0.344927535853281,0.31272470584393,0.0579710136241941,0.630270917695268,0.501631115983828,0.310484854188268,0.5024101718817,0.478260869186615,0.405797100491633,0.603093696341937,0.585497484948018,0.571579289735834,0.310144926756755,0.560922159637252,0.0289855065559834,0.256312980601856,0.475909034373154,0.571239066236875,0.105072462610037,0.347826086355211,0.629807275049209,0.154506253082777,0.381479717541002,0.164862503870262,0.473171341720197,0.548474820329319,0.591160212309249,0.273869799658535,0.420289855050193,0.618474967748369,0.179596939617393,0.623188405552123,0.134743245956249,0.281610873371,0.540228360509713,0.173913041897037,0.239013461572131,0.617230272541968,0.567584200685457,0.549193627014005,0.536231883323036,0.258692174506087,0.376811593423422,0.533494363802946,0.610305957738595,0.637681159086229,0.616344604702987,0.143478260090089,0.497797163434138,0.628946612103793,0.255503642843574,0.215780996778776,0.459248774134786,0.315980934506265,0.0797101439253522,0.349257306101972,0.0465375506286859,0.195618114197271,0.599302003578564,0.36008239352152,0.623188405552123,0.180250502871583,0.141170176669182,0.644410515012602,0.527536231817246,0.283513868910739,0.420289854025738,0.033982841283067,0.529464237372823,0.544440744625815,0.214385398351015,0.641362245559098,0.579710143925352,0.202898549989703,0.434782608584298,0.556085264781569,0.22093715171417,0.379980163583514,0.30120642720834,0.359886606885015,0.40209612013036,0.378260869186615,0.192963925882209,0.45794063546503,0.0648928605158747,0.600605298625869,0.134782606535389,0.276574646240635,0.505797101516088,0.565217390391247,0.481234814441982,0.032179875562135,0.518518518347776,0.30756843719405,0.347826086355211,0.623188405552123,0.282486236218816,0.484311333237506,0.597101447961388,0.636237691981939,0.558638848558663,0.170951735340945,0.614089373931372,0.262429310951782,0.409148379097831,0.578260869186615,0.628840179442279,0.636233517328495,0.49418956725317,0.138486309897608,0.370104766283282,0.382540580474344,0.0800695616100631,0.584128273403392,0.0509483532057594,0.140562772276404,0.579710143925352,0.529144414867409,0.127583396693304,0.253623188383526,0.513423921878844,0.0666589315204499,0.268473878240654,0.333333332821106,0.339130433824966,0.601309190272642,0.540662282696611,0.220780382464435,0.456629948976105,0.595873816074686,0.449275362118404,0.540062127346231,0.109017712957242,0.114492753021878,0.331884057057914,0.285610593981678,0.628841805252099,0.469407571497753,0.508791803250827,0.0579710136241941,0.508669252841425,0.176925742278738,0.375338468351717,0.0943783281784303,0.326243756037433,0.221892175145347,0.579710143925352,0.615554450885909,0.0306631886220194,0.539927801852979,0.45160243585855,0.215126592447168,0.581480270746611,0.391304346957527,0.027703701497711,0.00496915351130921,0.666666666154439,0.079447313891209,0.349152344557599,0.465163481529023,0.0463692316751641,0.0548021883748492,0.218651257984947,0.120289854025738,0.392698173078427,0.188405796455597,0.020289855050193,0.102898549989703,0.211798256506956,0.219637832576072,0.585507245953667,0.631707103999059,0.135482855220775,0.347826086355211,0.643816773773932,0.141706922363217,0.514492753021878,0.505791537701889,0.104347825752895,0.884057970190475,0.0411346198908376,0.636253166372192,0.453211092206846,0.374802311719211,0.605636069509793,0.292768955736206,0.014492753021878,0.119448947691777,0.632323768439073,0.601581302892027,0.614096559457571,0.182613493998175,0.00827190164315691,0.211012470965285,0.424887110455788,0.617945711843619,0.282590928331568,0.487600888440014,0.336231883323036,0.581418841361458,0.276964364225943,0.0306536683632561,0.637681159086229,0.550724636857141,0.561618826828542,0.388405797480052,0.592381843963994,0.630539434478189,0.148412891010207,0.653574169244221,0.601560600708761,0.399754346487815,0.336851698986117,0.301726802114143,0.616713666605497,0.278755973865051,0.03558682304396,0.129001875295306,0.124637680290861,0.354831065707683,0.621014491907334,0.372779025717433,0.101449275250965,0.510092129428026,0.595912689013325,0.376811593423422,0.085595661528032,0.0953801353884676,0.215942027760616,0.394728178479456,0.636263983590774,0.521739129788931,0.0932479139820188,0.405797100491633,0.384373258458798,0.508395011404897,0.00850317437062336,0.639497730591798,0.599551342567011,0.391304346957527,0.599777471506761,0.318840579287001,0.460555869909521,0.195241649584138,0.460892386930895,0.282750544541283,0.524456803569996,0.623188405552123,0.454410094678784,0.607433809486622,0.38695652171686,0.566790383417895,0.297847703888871,0.396113853013249,0.152979064456168,0.405797100491633,0.633104049584925,0.615136875924782,0.528985506555983,0.323254432690567,0.43860415908378,0.608695652018018,0.0753320706312843,0.555811660555947,0.524685652437327,0.268273398576559,0.391304346957527,0.0476764073573765,0.340955054472159,0.404372151432906,0.671014724970809,0.492753621696265,0.572381914241595,0.179265088987784,0.146537841573859,0.379871174907192,0.0475792173273668,0.492753621696265,0.403451062043618,0.140579709588159,0.378260869186615,0.331923649163846,0.56685290896972,0.0372181290641596,0.608695652018018,0.334780023884755,0.253433940842221,0.551964951494676,0.248999578877352,0.541560519571938,0.226616001945563,0.637681159086229,0.474316067550626,0.592420488449205,0.412364927551118,0.603103092641666,0.530181652847847,0.194202897459458,0.61467766916815,0.605475039552408,0.125744105852902,0.488221022708547,0.537626475736151,0.565217390391247,0.282608695451737,0.591383568049766,0.636115513449642,0.0413731293672446,0.509543646554969,0.520272340970368,0.458978437920081,0.1681322143582,0.288248076511778,0.15458936915229,0.472774572412274,0.412725733372127,0.594202898483912,0.523349436533963,0.0219074384979042,0.0609040155177042,0.639127005999095,0.627818679136987,0.205759333964213,0.108856681975403,0.478260869186615,0.00177707518616419,0.581400968722441,0.320450885007578,0.617606612171611,0.504347825752895,0.463768115652509,0.272019657792542,0.099897986324409,0.862318839889317,0.558848078091487,0.262276369065304,0.605507513746161,0.262401271623002,0.313311861886933,0.0592839446936585,0.634385401834161,0.405797100491633,0.249637102242221,0.412050765158656,0.487675380648743,0.0607333997364467,0.605618232726695,0.279887909376889,0.583531572514709,0.540579709588159,0.54202850180867,0.537531558971416,0.28985507221879,0.612587224005337,0.00185331204147387,0.643241298564935,0.557150280854805,0.329468598477048,0.478260869186615,0.641130849897052,0.621578098807091,0.631755499245371,0.105072463634491,0.527854916153341,0.353407893053636,0.297101448985843,0.399288599611529,0.62707168047975,0.153301124370937,0.149324489849922,0.579710143925352,0.623188405552123,0.582627051633435,0.625330193317803,0.334782608584298,0.456671142304941,0.546072838451781,0.253370857986967,0.456009855685765,0.560456823567354,0.00685218242635223,0.136231882298581,0.372082218175831,0.521739129788931,0.523550724492921,0.0111047518077351,0.0392359772596843,0.481200893718005,0.518465272307829,0.526127851266533,0.635320470934101,0.608695652018018,0.188405796455597,0.494506370690192,0.10466988669212,0.63782082403807,0.30149814584432,0.292340858599489,0.204186794771056,0.42760473916084,0.553205266132211,0.076464244841099,0.219017460634017,0.429334604907161,0.394244116399665,0.466666666154439,0.558114354319977,0.645742002032457,0.637681159086229,0.573196469548341,0.275362318684684,0.051213057992247,0.143317230132704,0.544280465593823,0.0921149027926055,0.618864060816228,0.0112601493124479,0.59275362272072,0.544641447621064,0.608695652018018,0.341030069152853,0.588463241735905,0.610144926756755,0.531559882668368,0.459083447613831,0.40757721062524,0.0345543938545085,0.275362318684684,0.617391303523808,0.297685183349704,0.111486847849085,0.0419936826378048,0.402631524813018,0.602283006303276,0.357317894983401,0.552173912620334,0.166768242900044,0.200020399456863,0.360782596106439,0.45151430098481,0.556136233458422,0.533142911254561,0.28985507221879,0.598851989255149,0.276811593423422,0.397738752092923,0.243314567574593,0.265153692863093,0.537729283876465,0.508637550062162,0.456601432251373,0.524658722593131,0.643478742608315,0.409001190549695,0.157809982642354,0.460498000504913,0.317230273566423,0.44454290223731,0.208215998167373,0.587786578049684,0.165513919867122,0.456964309520055,0.326563644107956,0.214278043680152,0.28985507221879,0.0113983677340656,0.22077605926504,0.626985515632653,0.270103618893869,0.63346237007851,0.507246376254825,0.156682766793932,0.594202898483912,0.371291260161708,0.411957809200471,0.0744640059996993,0.48423289277985,0.114504808806353,0.249873834289493,0.534782608584298,0.13720174188465,0.449275362118404,0.637681159086229,0.275362318684684,0.630673043877513,0.629628297667604,0.254140721451622,0.616722014887931,0.206119161430857,0.096146064946564,0.291313066092611,0.480053121158903,0.618357487365936,0.401822036459876,0.600999987266026,0.642495171718761,0.565217390391247,0.593013904935693,0.592703636496052,0.466685119659347,0.476811593423422,0.212560385337621,0.498620832291079,0.516746087527597,0.359069863342745,0.458848338303015,0.595872333688543,0.537604156963159,0.360537560852745,0.642479765966981,0.627166351375325,0.525712725776912,0.537564042385262,0.355024391603679,0.339299615369457,0.396859605933409,0.637681159086229,0.619967793086514,0.497222831516734,0.299445805279022,0.578035645864937,0.375019341451134,0.194281069509947,0.478260869186615,0.330434782319176,0.236670275206371,0.130434780270266,0.587617957906442,0.302931952339534,0.475362318684685,0.397449715479696,0.55379659068193,0.309985965173678,0.420289855050193,0.584000731850044,0.250958867185711,0.603974963122956,0.35758192158079,0.501811593167308,0.353031226622901,0.533333332821106,0.127214168829112,0.257481693017745,0.608695652018018,0.133655391711421,0.347826086355211,0.519323671208065,0.555813661316236,0.19390242485693,0.540127739580467,0.626527700085684,0.0546550879298291,0.170196155850027,0.529916534181607,0.550724636857141,0.548683571441736,0.299658043635691,0.0274306135973247,0.512679120677225,0.281033104407632,0.584883247441503,0.624956382042688,0.3724637671583,0.38695652171686,0.329871174394964,0.146376810592019,0.620436567226831,0.550724636857141,0.612268976087001,0.212560385337621,0.590664094444983,0.652173912620334,0.225463541481144,0.359290350609729,0.54389068511677,0.568458173348064,0.55692620902036,0.0107890097059207,0.300022080587244,0.0710722716721448,0.505434781550835,0.639133101505351,0.328502414634919,0.0619431938155957,0.376811593423422,0.604347825752895,0.238397930179162,0.215922058062555,0.584057970190475,0.00429171021496105,0.0356398867309465,0.604293500962009,0.531186257844033,0.118840579287001,0.496439018050618,0.485178195159117,0.112520128360503,0.164254161076857,0.00891615567627937,0.400665026391544,0.635979413600619,0.505241734306553,0.26370436382825,0.514601821605677,0.2353981256349,0.524679763870947,0.467039764408991,0.602982713052056,0.0190743680755369,0.563695091487556,0.117391303523808,0.150661866460612,0.632037464046886,0.243046659317842,0.18114993938352,0.186737659235241,0.646142382543667,0.610305957738595,0.503979499408956,0.617147562156569,0.167680092731193,0.644539647544305,0.00705873403424279,0.592805795132002,0.485635508723218,0.463768115652509,0.389371980297726,0.111111110598884,0.114331722040038,0.217391302499353,0.235277181570676,0.381159419688545,0.517718511324114,0.603185379927219,0.0368332844104928,0.0892657750651853,0.601449275250965,0.351832835750499,0.446607981898457,0.462315507337745,0.197101447961388,0.0638200083876215,0.621739129788931,0.152490770353461,0.173913041897037,0.0797928809465774,0.0959370054732422,0.515461171199997,0.483701669921821,0.520289855050193,0.295325361886365,0.168617467878961,0.606373935152194,0.458349943075655,0.155392789659456,0.495760548250527,0.6022257372292,0.332045088039753,0.637681159086229,0.620289854025738,0.539130433824966,0.324955317634116,0.504830917673959,0.0419998990297317,0.462139808211606,0.597470109302057,0.566792327833169,0.634866329082163,0.271800371186622,0.346328411247887,0.146376810592019,0.499751067207894,0.543493433290621,0.173913041897037,0.607246376254825,0.211594201495493,0.206119161430857,0.641905838709237,0.628343341386265,0.48452289238062,0.527224373423703,0.0529395082061547,0.202898549989703,0.00556939798925948,0.042023727849148,0.610144926756755,0.681159419688545,0.252741464695653,0.223066731051604,0.639453025431794,0.22073092895628,0.186668219637748,0.126128948457659,0.0494250257494161,0.147342994434147,0.0259665569998013,0.637681159086229,0.29615305070407,0.628005705660214,0.503170288683074,0.492753621696265,0.54088988685132,0.56873724304022,0.376811593423422,0.476780200029519,0.633408636398063,0.639555498575378,0.19010853054012,0.38265558167608,0.531973440742095,0.331884057057914,0.0323257948107326,0.0592696402308248,0.565217390391247,0.403549591036094,0.308695652018018,0.55390994558475,0.132045085990843,0.113043477258686,0.302793114122742,0.307809983154582,0.518840579287001,0.0238582873473487,0.549140871687923,0.201112354594387,0.302777126480618,0.58470705145477,0.379710143925352,0.486903188598252,0.639071897500262,0.0522967007032565,0.489715252574268,0.131884056033459,0.133655392735876,0.19105623526597,0.165217389366792,0.156199676921777,0.262301675148589,0.61904100465499,0.613078636548555,0.156199674872867,0.644581798738411,0.560523944823559,0.0328615939085014,0.213018231618235,0.637756598915678,0.6002103743611,0.121631775118068,0.285417512930387,0.63316601988223,0.144927535853281,0.614492753021878,0.190611235648963,0.0434782600900887,0.369335674233116,0.5200534364861,0.392823650355287,0.0305972874915202,0.626471649088405,0.173913041897037,0.279710143925352,0.410382474270074,0.37193769730808,0.162299520720075,0.626086956054053,0.0883719494923688,0.304347825752895,0.294246954139552,0.465264558340669,0.312884091551308,0.614510332666813,0.539657545545751,0.353561600207874,0.140418677581864,0.561464375920095,0.461122709988731,0.631782300008258,0.640643434776592,0.633113155963936,0.503436151103523,0.059623332237474,0.586824397777044,0.429447037800632,0.565217390391247,0.642613974672383,0.611044013929594,0.222941908401383,0.624514387151705,0.0593328204092875,0.582237157441897,0.496166657513163,0.611594201495493,0.618763556674834,0.453894601300261,0.0329404800040093,0.0869565206924049,0.642187941812154,0.624508070363205,0.260869565150579,0.25781044159812,0.59855072372458,0.598141320839656,0.462231773521967,0.637681159086229,0.166028879504678,0.206763284333761,0.314448406421066,0.547826086355211,0.182110735617681,0.636199949016981,0.586851948440868,0.534168071936973,0.381642511609609,0.415935288896724,0.643989442562675,0.401111669234104,0.395987571539346,0.11594202878507,0.516915198384705,0.269565216656369,0.222980088808555,0.597101448985842,0.476799413679912,0.159420288362932,0.394516275119517,0.569978297334144,0.550724636857141,0.242960536473394,0.618840578262546,0.61965271892925,0.571713703332202,0.472146373635294,0.475343940989435,0.536231883323036,0.37808397554614,0.355401766957158,0.59565217322265,0.331884057057914,0.282162489026936,0.550724636857141,0.362318839889317,0.513328810467691,0.0193602340010556,0.636059391764979,0.603343852845341,0.517391303523808,0.542010072890678,0.513138588669839,0.0649976089736425,0.623188405552123,0.594202898483912,0.122863232319116,0.558401647311078,0.376811593423422,0.624742598808131,0.356261861330142,0.0782608681621597,0.159420288362932,0.0390915742042396,0.581405377976043,0.135265698456453,0.618203443166058,0.623188405552123,0.620308904787813,0.253157573661914,0.550724636857141,0.392826049628506,0.647036332075518,0.633874451912823,0.0739059536940474,0.581183264899238,0.137521923973711,0.0834201282201523,0.271084324383255,0.285060321386028,0.111111110598884,0.131884056033459,0.623188405552123,0.552645101400693,0.461915884923112,0.533378937452453,0.648548608737577,0.388405796455597,0.476811593423422,0.0971187930061657,0.18679549073502,0.642501513094177,0.360510733454033,0.640981936166978,0.19275362272072,0.0724637671582995,0.534805409875517,0.434782608584298,0.336401064867527,0.62644244085666,0.0162349736934854,0.579710143925352,0.60081181642675,0.471618357320892,0.0677417638876864,0.161727182391777,0.587434555904413,0.308695650993563,0.153941778469777,0.637379412061888,0.56685290896972,0.526247987035893,0.578076374091279,0.0231398730288631,0.248597347176259,0.222891409949298,0.371480664444604,0.463768115652509,0.308212560096954,0.396833250808374,0.169387210457946,0.0869565206924049,0.177031401476852,0.366673826069267,0.321739129788931,0.0195110962442226,0.24745154874162,0.739130433824966,0.20169746275218,0.58695652171686,0.322705313631059,0.0358912234063179,0.367506651503506,0.604089505368927,0.463768115652509,0.542496483020947,0.192668928990764,0.607085345272986,0.434782608584298,0.163742180553956,0.494595940825153,0.334736954779119,0.0537986324204119,0.63289789546551,0.00290468954751705,0.554314110432113,0.632276248077188,0.468266241735096,0.153140095438007,0.563525087305834,0.420289855050193,0.612560385337621,0.639193924413243,0.368688490259171,0.636066487139153,0.587832039257355,0.56360708467067,0.060290579134869,0.59275362272072,0.177974254384613,0.0495044968086337,0.334759830855541,0.595913547506475,0.52495974225454,0.310659943763781,0.0697670506497538,0.0724637671582995,0.511594202519948,0.588444376400154,0.601783251624353,0.236657443909587,0.0475776478625626,0.147074608781445,0.376811593423422,0.400253961840881,0.182035466872189,0.50135699338406,0.497208646915116,0.621578098807091,0.0649609959823648,0.614381139692274,0.277028906929334,0.012942850182711,0.1782053406613,0.141985222689794,0.0798802812862027,0.138648791507491,0.267123994060908,0.560386473229515,0.61352656917975,0.645615167352944,0.491261467376036,0.194662722986809,0.528486533536098,0.582608695451737,0.119914115751082,0.608695652018018,0.595883980715539,0.032795080154012,0.508765162302894,0.630434782319176,0.0162812882720319,0.563532907994029,0.470313332993829,0.186569880169416,0.555269180988212,0.627807340470895,0.247356851210219,0.547316097372506,0.560640607691035,0.586433654312448,0.186727196478031,0.634243834469695,0.504888300462522,0.314492753021878,0.527536231817246,0.392797177417946,0.211658757516797,0.0562723486742679,0.636287404677167,0.581159419688545,0.125531896180969,0.333333332821106,0.00169654484064928,0.594202898483912,0.292906158923084,0.584795846077423,0.637681159086229,0.64063651970647,0.643758938176333,0.126904891037294,0.511840916855113,0.445535483207121,0.392878711729198,0.109339773896467,0.188405796455597,0.546808295600869,0.582539622609075,0.499999999487773,0.20740740621221,0.546376810592019,0.184086634436703,0.608695652018018,0.51668204988044,0.572626698503854,0.600012010196235,0.591913539023989,0.449275362118404,0.635610948955278,0.344855622197367,0.205797100491633,0.579710143925352,0.247012398761709,0.0483025633714186,0.0478198525475523,0.305797100491633,0.205797100491633,0.252539335659276,0.114492753021878,0.62827925763864,0.334725748267701,0.584057970190475,0.449275362118404,0.627902153765692,0.618840579287001,0.449275362118404,0.521739129788931,0.128985504507074,0.342342005476674,0.273690988238613,0.623188405552123,0.610362508669833,0.182616114553638,0.129262110385357,0.16084452542555,0.365639664526693,0.594202898483912,0.577288624669694,0.865942028272843,0.36056385041267,0.608695652018018,0.590467232130903,0.496434248188915,0.618679548305161,0.235585620333986,0.325281803193765,0.495142321516892,0.199472034396112,0.57608250940785,0.366807203941799,0.304347825752895,0.482104249794133,0.069562034699658,0.553753103598722,0.550724636857141,0.620289855050193,0.333333332821106,0.28985507221879,0.453046631350226,0.302915177916098,0.295247634449273,0.331884057057914,0.599669740860974,0.514539442550893,0.300466854824188,0.611594202519948,0.552260614281763,0.538946937573093,0.563909946301868,0.487488645070688,0.610144926756755,0.0837429165223082,0.373909583337521,0.0565339350202437,0.488804889227082,0.618840579287001,0.533333332821106,0.346549231462692,0.624637680290861,0.504347825752895,0.242874413628946,0.627581567016972,0.4557160840423,0.626027352247413,0.478260869186615,0.485836539544013,0.618725613941183,0.0164467438742954,0.557990883950136,0.502800098855794,0.610144926756755,0.466727750298314,0.619565216144142,0.640060508707595,0.131884056033459,0.641959917630963,0.284057970190475,0.315780997803231,0.149758453015013,0.60699690408725,0.531245673150984,0.408680451157205,0.498188404783782,0.014492753021878,0.604842706075723,0.273913042921492,0.560640097512528,0.463768115652509,0.241097297976815,0.50322752599905,0.248125322440756,0.291097965409139,0.581320450670384,0.0258156927077246,0.163696131309211,0.605298156156482,0.0547318247190973,0.614492753021878,0.175523347617614,0.0979138017146977,0.566977316715733,0.520266250586385,0.542964465257679,0.26385143251517,0.342765241575209,0.00166515144674587,0.637681159086229,0.153623187359072,0.511594202519948,0.256620701222327,0.162238967243805,0.056564028380964,0.583114805848445,0.259574378663278,0.58453703497959,0.065870886031418,0.625142062432265,0.623188405552123,0.353204561307286,0.501438723366185,0.365777380965443,0.603150273909001,0.503623187871299,0.386309005819549,0.168115939868722,0.61741199853589,0.453597416173292,0.0229089352981271,0.557441230125205,0.389807903244913,0.0804481150866003,0.396722954927686,0.202898549989703,0.270425394010195,0.249707274324919,0.471118093487917,0.598115291491258,0.606171967979681,0.600401687203349,0.320289854025738,0.449275362118404,0.631769057905086,0.52938369678276,0.173913041897037,0.214492751997423,0.107890499157729,0.536231883323036,0.379728521620602,0.262318839889317,0.159420288362932,0.621739129788931,0.277704271606826,0.589778108000549,0.385824782900349,0.555332567082096,0.624440761631765,0.0632063619915455,0.00918347384704601,0.314009661100814,0.637681159086229,0.531884057057913,0.219268709206273,0.18985507221879,0.305636070534248,0.273719772346057,0.341078293315208,0.466666666154439,0.217391302499353,0.597248765590832,0.629912855364301,0.096892491958004,0.172463766133845,0.416476212317568,0.0103325915153442,0.0855390224936782,0.520289855050193,0.34271866780959,0.457251928287793,0.186086049616417,0.644722292474212,0.579710143925352,0.61301445957554,0.634790187501153,0.149964298773524,0.502898549989703,0.0783069266269979,0.510672925655425,0.285507245953667,0.151833568235704,0.260869565150579,0.420289855050193,0.469565216656369,0.463768115652509,0.615097080976793,0.344390059722951,0.379759438643008,0.643314065591725,0.626982568276099,0.126103703841664,0.0969444902119641,0.611594202519948,0.28695652171686,0.609938214309456,0.121463619052864,0.0202525290383515,0.606359859142788,0.238436368748952,0.0159616122636587,0.582679696318395,0.218966896616823,0.524798711272701,0.201354277554298,0.209829715322545,0.445830656304798,0.386806219850486,0.188405796455597,0.337397940351998,0.630053298901816,0.191811264624643,0.604422934683434,0.550724636857141,0.456189570674849,0.173913041897037,0.403755661150213,0.0240726688635281,0.188405796455597,0.586747375164877,0.323671497473187,0.550724636857141,0.51723188810724,0.0274944729893417,0.640772685120602,0.639664155328334,0.625840369775743,0.482790112060299,0.288333499653576,0.522986486528987,0.597342455058678,0.612446016224517,0.634877264113051,0.630640220344663,0.054922183793897,0.0626428278280821,0.219696183474452,0.613043477258686,0.172214246841347,0.122344149250858,0.157971012599739,0.507246376254825,0.575362318684684,0.531534649321376,0.0674761053337493,0.00213772426558447,0.117391303523808,0.0220667002462472,0.370839568805731,0.0129389797923518,0.304347825752895,0.342118035063258,0.393313928827004,0.281103941361517,0.481198530300705,0.529398286044037,0.642393205680319,0.610144926756755,0.0458871314263783,0.626566321008435,0.239573428583865,0.578076374091279,0.170752619226233,0.517310788545116,0.412382968200727,0.366820066996683,0.629021118654889,0.563665971358927,0.0289855065559834,0.632474327443609,0.507246376254825,0.0811594186640898,0.391304346957527,0.636081291535945,0.518920001172386,0.599999999487773,0.328985506555983,0.592781380324421,0.586257136646898,0.640950347102201,0.569792678411857,0.0775483669969704,0.585276245731186,0.508752596339912,0.175549899437977,0.495914590401495,0.371085053795097,0.360874139341409,0.257431352331705,0.562057011772,0.632188475860458,0.463768115652509,0.584306830758515,0.112077293416557,0.0564135298192627,0.339215025109439,0.615779475463349,0.517326152294247,0.0686842193069721,0.572387012953299,0.399059701570365,0.118840578262546,0.630184221156113,0.359383444869317,0.634724973779847,0.00785529069402748,0.59056152192928,0.0116143238373234,0.439711774037883,0.571676492059302,0.60158996670655,0.613975983172633,0.592517868003359,0.499916119174954,0.641240399974622,0.166947901544113,0.599539374885652,0.150724636857141,0.298065028663785,0.172484677305897,0.64639327870346,0.357845947153723,0.271684552469928,0.521739129788931,0.538896201447487,0.526570047975117,0.35180874364619,0.347826086355211,0.121578098807091,0.324637680290861,0.501527310024507,0.202898549989703,0.51012449605402,0.468596731888686,0.29661546195542,0.585321766357237,0.026015293389573,0.267509176784669,0.645101967728792,0.565217390391247,0.549067578091349,0.54525929735532,0.588425208850228,0.600971660065438,0.349376149009332,0.196090402217666,0.611180777625349,0.0497893556950515,0.286905935161659,0.592692074498806,0.576442604257206,0.103381641910767,0.560556361647841,0.613043477258686,0.246376810592019,0.59951870753385,0.434782608584298,0.0661416453459688,0.222729623944247,0.414528704215334,0.311594202519948,0.530434782319176,0.0109530198024148,0.631884057057914,0.556654904695838,0.225565363071454,0.322463767670527,0.235394130261051,0.402808764719226,0.069367995783098,0.555979099502768,0.434782608584298,0.328660243170951,0.228136102369182,0.597109279918586,0.585742520201711,0.217391302499353,0.318840579287001,0.366204747665864,0.200984667568453,0.132045085990843,0.626973212954563,0.391304346957527,0.474637680803088,0.552508874519271,0.0669513672748128,0.496316178744953,0.510720700082109,0.153885271590096,0.565217390391247,0.507246376254825,0.549224489740305,0.520128824068353,0.455043844976503,0.515388278165262,0.297468656625104,0.615425258935825,0.637681159086229,0.460743920887582,0.611916263459172,0.579710143925352,0.496064943490611,0.228402180949601,0.394318719249516,0.485673184074157,0.637681159086229,0.0393269836803218,0.623188405552123,0.621410517461049,0.51594202878507,0.235673523680934,0.614492753021878,0.583127538797564,0.17104079734631,0.40340233282503,0.542367429372265,0.286767673712939,0.434782608584298,0.632458944229837,0.180385760618733,0.515898969923983,0.605746205575528,0.280536367772647,0.44242682623903,0.0724637671582995,0.297297042000384,0.0531066603056217,0.100123471906524,0.475040256721005,0.549971670750502,0.639345766035231,0.527556678911258,0.631036544014734,0.411383400448955,0.122866343588444,0.228492473325219,0.598524853166682,0.316693504309928,0.177139758064542,0.628087447935797,0.444631373132236,0.617230272541968,0.320450885007578,0.449275362118404,0.0705739932326358,0.0707041420235337,0.607246376254825,0.324681335384661,0.579710143925352,0.530846486129655,0.485121739502178,0.320987653239619,0.499999999487773,0.636286045225604,0.633317175119479,0.578076374091279,0.489691814072143,0.590161529686452,0.404033725852178,0.010280059520416,0.491222716347522,0.588042997045483,0.164829514375729,0.1413043464453,0.579710143925352,0.588472738432207,0.620289855050193,0.0840890347343767,0.320289855050193,0.221380016367305,0.268738152756112,0.362318839889317,0.499833000032076,0.376811593423422,0.569079807418473,0.631005279702139,0.612318839377089,0.405797100491633,0.0751178683947007,0.581207200261957,0.441801643457079,0.0456042220775077,0.275362318684684,0.620709969634851,0.391304346957527,0.30278456504716,0.260869565150579,0.621760270438865,0.32777457533197,0.0579710136241941,0.468191090801909,0.492753621696265,0.520289855050193,0.534684025295716,0.547588625920553,0.169020562171024,0.458257874295356,0.626603990212645,0.607229833358181,0.594202898483912,0.615683643860448,0.608695652018018,0.536231883323036,0.138811223943542,0.473913042921492,0.492753621696265,0.108695652018018,0.273684157173787,0.544927535853281,0.313097154594117,0.629189311600467,0.130434780270266,0.326318245172797,0.644653041376409,0.478260869186615,0.255822932632475,0.252947652622077,0.146399954051152,0.613043477258686,0.34400508496352,0.29855072372458,0.0783562080267409,0.415884083570805,0.621739129788931,0.0987976695865371,0.550724636857141,0.197561195630172,0.275362318684684,0.0680318485182075,0.124658676492664,0.639165736538512,0.628527295569449,0.545084611415011,0.536231883323036,0.0637462742754689,0.523349435509508,0.586642800864431,0.0359932857435134,0.298687349118933,0.540425342685008,0.558545291245492,0.601939977846984,0.195769017418631,0.376811593423422,0.246376810592019,0.282967410360433,0.578298840605001,0.589957412183245,0.0227212643928093,0.571064587236442,0.636233960917437,0.249174429754889,0.244685645675925,0.208378175514171,0.648985555115142,0.597082172843704,0.454198847994394,0.597776344463021,0.369436952862364,0.247890697697076,0.262433172122047,0.610144926756755,0.537944714434393,0.108373590054338,0.344878937764912,0.293583751789838,0.175737105240801,0.130434780270266,0.15136875873559,0.6475627860963,0.369235922041569,0.554722712193358,0.127556121607829,0.637681159086229,0.112721416319461,0.248125322440756,0.549426875914845,0.617391303523808,0.014492753021878,0.112318840401544,0.130434780270266,0.611111110598884,0.0619105864427151,0.545644592769113,0.633339566628765,0.470195535030398,0.627536231817246,0.545608239989363,0.60699690408725,0.22536171886638,0.101449275250965,0.0508854885593853,0.563722391159946,0.119782844157687,0.630734687373726,0.573565520181847,0.582657751471417,0.110064411778063,0.405797100491633,0.617069242584584,0.0941049063057685,0.540647916766487,0.156843798800226,0.0551757783677203,0.481845373131191,0.510144926756755,0.629201711601766,0.403106999912399,0.295101820719523,0.255731532821182,0.460238960953652,0.117149757563276,0.544640037971214,0.481500778283459,0.00371266580532554,0.169565215631915,0.589582971892863,0.523188405552123,0.63338502886089,0.616143316744029,0.607220001665149,0.101449275250965,0.13703887303084,0.611813396924933,0.457790450386508,0.123188404527668,0.634897818774821,0.613043477258686,0.595839274531081,0.498056833025121,0.605797100491633,0.213043477258686,0.610144926756755,0.337889952201294,0.623188405552123,0.494622939307823,0.639283633874062,0.478260869186615,0.51471089121393,0.166666665129984,0.235299471658933,0.078794228032971,0.633593824024865,0.480053121158903,0.627411405069205,0.642918517433962,0.50588768073906,0.342619868361037,0.0413619464182872,0.631258140766302,0.599888674029977,0.531931143050949,0.553623188383526,0.118840578262546,0.337593790504703,0.420289855050193,0.364126948373511,0.628260691443701,0.173913041897037,0.334837377988582,0.165822344288065,0.353439698278382,0.215942027760616,0.176096926560716,0.149758453015013,0.563579432585816,0.586692332231153,0.600884078397308,0.318840579287001,0.499670702824063,0.558648374964156,0.0188286853663891,0.401504671621606,0.536231883323036,0.426184881642633,0.0170981363086944,0.470566476807526,0.615700482824538,0.00523068146335956,0.384863123050763,0.268429864587663,0.55982982135362,0.590358962621874,0.512204108631429,0.382767392725467,0.356046837480782,0.125925924047759,0.480270150890826,0.334822748773566,0.481162879272516,0.640197835853508,0.037903675798237,0.0206844914431539,0.468383941350862,0.177133653338192,0.144927535853281,0.260869565150579,0.231884057057913,0.572259387394655,0.639464488056921,0.240742990272812,0.105797100491633,0.640527168373137,0.0769471042109161,0.272055155152506,0.0815974724773294,0.255918767308741,0.425202545221152,0.0974718672665506,0.172476753147763,0.482990243409751,0.608695652018018,0.161637588694354,0.514640021477491,0.626458648756574,0.518679549329616,0.623188405552123,0.562121042247974,0.591359863189384,0.126086955029598,0.420289855050193,0.294826644980187,0.0746837761483004,0.256685943628369,0.465292540299979,0.61886070777556,0.308695652018018,0.349121502320395,0.0763854570932551,0.0631946289103428,0.373571684326578,0.621739129788931,0.40365088605662,0.521739129788931,0.611811784433026,0.146376810592019,0.420289855050193,0.586562993784028,0.103623187871299,0.394377031218612,0.276909216797826,0.555072463122264,0.546946180050211,0.619971286477494,0.491280297880322,0.0852140162468087,0.644470907649464,0.300434491271558,0.424594332533511,0.439865953465799,0.33938420665393,0.595714956937092,0.620289855050193,0.407922744898054,0.455236767237295,0.362318839889317,0.511785973293508,0.604347825752895,0.645093779261311,0.533100394330081,0.596086621979332,0.556521738885457,0.00855494826897508,0.0121837701296283,0.576034162310915,0.107729468175889,0.169329272414864,0.281159419688545,0.192245348675405,0.523188405552123,0.624637680290861,0.11594202878507,0.00344124059513327,0.5120247552749,0.10450885571028,0.565217390391247,0.59565217322265,0.352240941675604,0.0305826910590592,0.334852205947835,0.637681159086229,0.0449217271943779,0.522946859591591,0.401727653436109,0.199999998463318,0.325093933544209,0.607246376254825,0.513630231715394,0.563637666696345,0.0869565206924049,0.565217390391247,0.542028985351351,0.0289855065559834,0.540280988803395,0.323188405552123,0.197358556415288,0.296457185732627,0.0738840067981593,0.124949940270698,0.641558734971619,0.625735204364858,0.0769037851383014,0.565217390391247,0.614492753021878,0.149275361093949,0.305797101516088,0.54902456328182,0.302274876229721,0.402270351212724,0.629466473757724,0.568897307961152,0.193954151630359,0.549469255562377,0.215780996778776,0.420289855050193,0.577717962421214,0.326086956054053,0.301238401468134,0.607246376254825,0.219104976737038,0.510069620106434,0.565217390391247,0.637681159086229,0.0322194953283477,0.0338466092793705,0.635277509396223,0.263996779093516,0.613458427566531,0.632746597829039,0.491352416427203,0.58985507221879,0.451752917004519,0.083437487607298,0.242930977878097,0.489769316129172,0.266294411026216,0.615619966821391,0.609903380796223,0.291522404217648,0.511977675428593,0.507246376254825,0.495761329909564,0.0939768894053781,0.183574877244956,0.460242622355225,0.624905735044652,0.636136362129949,0.1609699053792,0.555321991634855,0.11594202878507,0.610144926756755,0.601730592597025,0.635642469381581,0.00476167784515925,0.178743959058769,0.598433009766446,0.623188405552123,0.0821747517512876,0.641814812823958,0.494482892234328,0.326402639761942,0.633305874358216,0.0855578325088675,0.343995522702109,0.398588883642656,0.284680798775219,0.399712752597139,0.201498836326877,0.0267342527180298,0.442561351500974,0.476787234960857,0.4422587388123,0.266791778725378,0.0563532590925258,0.541989706728598,0.507246376254825,0.588459808787759,0.354292996418004,0.614898094967844,0.372809213327998,0.388405796455597,0.283352970083573,0.594202898483912,0.0916452486455862,0.608695652018018,0.639109669149955,0.339684106586207,0.220834040335225,0.410750189014478,0.0530187713010412,0.554542443998663,0.642547350276771,0.488867713919718,0.501984881751225,0.589624180588521,0.400878360914885,0.597732865575452,0.159420288362932,0.250597210042735,0.497964290946689,0.0671534409906282,0.324796499474716,0.504344371291198,0.632080277038813,0.594202898483912,0.464666144563506,0.273934153862236,0.457409798826473,0.281397533725386,0.630829155427245,0.399358457186593,0.555492265248198,0.625408733147577,0.64348993989964,0.323347793308411,0.254424625546136,0.449275362118404,0.349332933406656,0.15016102893293,0.594202898483912,0.608695652018018,0.281528028782018,0.595699642361793,0.619323671208065,0.285169179956586,0.534800923787803,0.182722762350666,0.579710143925352,0.574706044723006,0.270370487328964,0.635339432568605,0.179341152710227,0.608695652018018,0.371235263460535,0.0239010665322664,0.617378661751169,0.608695652018018,0.565217390391247,0.405797100491633,0.589479876905195,0.31594202878507,0.579710143925352,0.604188363211405,0.340953647895673,0.19565217322265,0.586814161424352,0.457331843960408,0.317391303523808,0.355616790806518,0.30734043657532,0.623188405552123,0.0129485881542308,0.615458936864006,0.61594202878507,0.0477242227622534,0.0177276791704145,0.630723200161684,0.059550533452584,0.592774499061307,0.347826086355211,0.558977870372103,0.398866111365022,0.0033225042310753,0.395869454970462,0.551749602893134,0.446357913498169,0.014492753021878,0.293501931655688,0.607433809486622,0.594202898483912,0.28685056030457,0.217391302499353,0.267314625640693,0.528361789768899,0.623188405552123,0.351744431445137,0.0289855065559834,0.637681159086229,0.442961669520439,0.0492726432152769,0.624679338722191,0.621578099831546,0.192125008015079,0.28985507221879,0.441262964616775,0.362318839889317,0.461517930320947,0.614217135742509,0.489191059525303,0.620128824068353,0.249955106340307,0.623188405552123,0.41275081407535,0.536231883323036,0.127536229768336,0.159420288362932,0.140257648648934,0.557059575623888,0.501449275250965,0.628674408307927,0.364073832439328,0.585088952849702,0.193229509650943,0.579710143925352,0.576811593423422,0.350037204101716,0.54861577814316,0.618357487365936,0.185319004427007,0.318840579287001,0.627150252067624,0.620289855050193,0.278366355251862,0.575865248149135,0.258281046439224,0.373865802235776,0.559060707789902,0.278260869186615,0.54348107734088,0.0690427508382525,0.446074233759264,0.0898000149426982,0.408058167582432,0.0612470624141833,0.466788835466643,0.558957625095693,0.612029366346103,0.311276279353794,0.639150344104646,0.496212161747936,0.177526569671488,0.350492902100545,0.637681159086229,0.327441863135846,0.554445580769745,0.524637680290861,0.180833147215502,0.315924935756181,0.612638668029233,0.510283948350962,0.0510443395013403,0.613043477258686,0.639535310668438,0.613665903232681,0.330434782319176,0.456125231837971,0.228350502325548,0.12900908745733,0.2724637671583,0.586799163405596,0.28985507221879,0.342490466397713,0.511276230179962,0.585437824796362,0.380434782831403,0.160822591847575,0.265606770306459,0.153623187359072,0.133763970605809,0.0996815384828314,0.199805688066227,0.610979161840844,0.0273176623297088,0.190576245394141,0.197489898696067,0.0126567138011164,0.513043477258685,0.613271287328816,0.537581837165711,0.518781283841265,0.347826086355211,0.567355762624513,0.134782606535389,0.554578864392432,0.117608931537353,0.128985504507074,0.0275167343928635,0.269834974054094,0.345965500172196,0.222689777773516,0.219006546092226,0.625827735174287,0.473753738146046,0.339468796913949,0.267524261882086,0.257058886165786,0.638604435686585,0.160869563101669,0.487976896146291,0.279324420289439,0.152406010033941,0.536231883323036,0.0225033198227206,0.478260869186615,0.318840579287001,0.58653822758844,0.634720334023908,0.297875106006744,0.542722879343408,0.391304346957527,0.231884057057913,0.208695650993563,0.320312196361192,0.429479187242202,0.635502715302168,0.562059460219051,0.00750015830388308,0.314470937256209,0.620332134301152,0.533239665891267,0.584552722456449,0.284289224477754,0.120289854025738,0.0869565206924049,0.576155840909254,0.588133697154125,0.0434782600900887,0.104714351105238,0.173913041897037,0.00821974254978797,0.240887749838538,0.258477051284609,0.181964572548833,0.547698978146258,0.0925295713753715,0.231884057057913,0.635338056725765,0.358280853841715,0.630036532674019,0.258076960694117,0.209339773896467,0.324574098526104,0.207087638002902,0.605192606575035,0.618611438450042,0.206277529854586,0.637762420892494,0.392865523922132,0.478260869186615,0.532742183453163,0.288405796455597,0.107809983154582,0.0563082804030816,0.345390300541548,0.51384018656224,0.246376810592019,0.528860763813239,0.631675028318237,0.066828187850144,0.631664188561648,0.138285021938649,0.246376810592019,0.350546419621023,0.34445218983521,0.0113718364027998,0.557181740838272,0.0289855065559834,0.619967793086514,0.605777465790303,0.617391303523808,0.322061190728155,0.478260869186615,0.434782608584298,0.158132043581579,0.375380375725571,0.504528985223294,0.337934930890738,0.208051529115114,0.48398740881494,0.244172358973112,0.636508153180134,0.607224067726381,0.0683464555240669,0.185043423003558,0.518840579287001,0.137362691934558,0.517364077612165,0.335563407079841,0.396859892780762,0.333333332821106,0.518115941405404,0.574658376839625,0.559708202173662,0.530085373558184,0.358756281816174,0.191304346957527,0.211041383129583,0.327536231817246,0.555375816491782,0.0614212965699111,0.599599250172823,0.546627908569414,0.13687600417703,0.463768115652509,0.634277669139465,0.367641779144892,0.641314303121822,0.0869565206924049,0.0596795174383368,0.560244507352118,0.492753621696265,0.540225399835245,0.334472487666153,0.641511664345406,0.557971013624194,0.23823869199328,0.00358531275166694,0.560462876046508,0.36379216370526,0.623188405552123,0.537681159086228,0.634989210390476,0.621578098807091,0.637681159086229,0.00706931562821318,0.224969232804113,0.0431032461049997,0.370549569204962,0.260869565150579,0.615812835810532,0.575855506608128,0.4724637671583,0.244562720316055,0.505797100491633,0.59589983620299,0.556788732304041,0.478260869186615,0.476650563466037,0.573225501573855,0.465306722852687,0.121739129788931,0.29297167998084,0.626078374195917,0.505226543690289,0.351680118219629,0.103059580971542,0.628749919849215,0.198626709588456,0.2099145996011,0.604681802126283,0.225421769335327,0.36469388167811,0.591304346957527,0.202898549989703,0.597233298371763,0.365881402060279,0.573913042921492,0.0724637671582995,0.237972719956164,0.092773213370492,0.195873071296022,0.307246376254825,0.546207876965597,0.118695887335293,0.644390696933857,0.347826086355211,0.166451000996354,0.167889223916353,0.0159783651735432,0.360827875985604,0.55418846719357,0.633631259653374,0.0579710136241941,0.594202898483912,0.180324837314268,0.616331256056513,0.479710143925352,0.631449620594689,0.215780996778776,0.592028984839124,0.328985506555983,0.621862522300205,0.117391303523808,0.624861687584651,0.599612108105432,0.210950079617044,0.378277424376716,0.560585013600611,0.626953802608842,0.0883794823087561,0.485344890351729,0.523188405552123,0.569198253861813,0.346123613506671,0.64316622651477,0.558597633716276,0.0579710136241941,0.451727122256278,0.579710143925352,0.0528497137155847,0.0795784287430145,0.631916104054,0.0972329101033815,0.0855240429151096,0.338388006285194,0.408273645265283,0.566882533130127,0.0324909697123719,0.514040788136461,0.459031193246163,0.311435240936871,0.567988963814442,0.517567351989045,0.0996815384828314,0.12302579895875,0.106494899705513,0.265747447419676,0.202898549989703,0.317373798664076,0.275362318684684,0.525582348532586,0.597690161175737,0.594202898483912,0.63517613651713,0.561996778950092,0.114331722040038,0.0417865061124661,0.531667941139702,0.620536640072741,0.565217390391247,0.529968904312671,0.467198073414339,0.121739128764476,0.0404753729612337,0.526106452453981,0.505797100491633,0.101449275250965,0.0813371769444432,0.302919254221878,0.20450885571028,0.314009661100814,0.549105989000859,0.0644711252436704,0.0756102900259293,0.572463767158299,0.629990791790179,0.378421900168454,0.516214701781249,0.279397042868097,0.380404363694046,0.471221695580726,0.614331722040038,0.594202898483912,0.099958440428561,0.617592591482767,0.106119161430857,0.208538045788685,0.639329889034228,0.620289854025738,0.184890190171907,0.565217390391247,0.643184243601919,0.471983079632729,0.595673384559968,0.507246376254825,0.616747181645359,0.300830489164992,0.38242534877027,0.466666666154439,0.133413844726434,0.635597915840892,0.240938258535171,0.526086956054053,0.26893879633298,0.614492753021878,0.589935211222559,0.537898541230614,0.0911647926468074,0.636229517856827,0.627592539952688,0.130434780270266,0.416255972968653,0.0623850944567333,0.596231947044127,0.637681159086229,0.354745298349061,0.25162234613823,0.180364171257582,0.633285505122771,0.592243003698292,0.398099692117516,0.615652005621839,0.635649052528338,0.102898549989703,0.238967764739848,0.317230273566423,0.552173559183416,0.549275362118404,0.5887765845645,0.132045085990843,0.628733854348523,0.101449275250965,0.45993538630189,0.54243657904904,0.473842069715115,0.262422767758763,0.0738934491983554,0.408863896186337,0.628040453119241,0.249404584802133,0.611594202519948,0.123027373545829,0.494508613221821,0.0642344065143116,0.632994954365301,0.309019836652111,0.618156198382523,0.643717037973662,0.562853605312159,0.598290868707272,0.518794859916712,0.462207323882922,0.47973399425832,0.449275362118404,0.55732630780649,0.1988688835398,0.583680840706156,0.497822170376612,0.185185182965533,0.196304200819046,0.338136663463094,0.590519304145611,0.449275362118404,0.260869565150579,0.455270976857535,0.0098189923538072,0.10466988669212,0.0434782600900887,0.279968814672873,0.291522405242103,0.117391303523808,0.585553627121778,0.0906718874728977,0.631085610278962,0.584012790707883,0.0888142035704238,0.499999999487773,0.590183170270345,0.640652150838312,0.171014490370652,0.4570329336515,0.612423339916787,0.451582221315785,0.231884057057913,0.454178883418608,0.336750797356247,0.568038344586304,0.0524214864731035,0.634786763773101,0.603648284965799,0.0339563089273463,0.543478260090089,0.478260869186615,0.344658797788116,0.271014492419562,0.0901972872579445,0.327536231817246,0.473314234729218,0.306280192412697,0.136231881274126,0.545058490890133,0.602455045052297,0.602005903564399,0.621739129788931,0.21353712311344,0.427930583411763,0.0826978558047655,0.307246376254825,0.136072649234974,0.411914787219758,0.231884057057913,0.38985507221879,0.025608625799053,0.582399548899755,0.475301474263241,0.376811593423422,0.254630316611966,0.395136336651758,0.162247603398047,0.200075183203514,0.376811593423422,0.244803805271912,0.350448367000044,0.511879535728953,0.321256037867867,0.616183573721148,0.110668276679393,0.202898549989703,0.454458333183507,0.160748977596638,0.592596533841078,0.456047850666612,0.642978833236712,0.559504442205191,0.6270881506401,0.293873021978767,0.398217209380322,0.245960407607221,0.626368254959926,0.456755335076484,0.423101481583995,0.0724235224746387,0.0433787179117824,0.295340289217737,0.165370799429129,0.0322726450695402,0.246571112793471,0.497930148940468,0.00586093734564348,0.640640514055864,0.51581658736413,0.590741648749208,0.457061585604271,0.101449275250965,0.632659291739258,0.0485977672027403,0.182290343039008,0.614230919782287,0.595153764677377,0.286808753327289,0.277582505929826,0.528304558599651,0.118758774519673,0.418569168419176,0.63339356256965,0.591808000711545,0.607971014136422,0.43791142170123,0.230203217622082,0.634720525596962,0.645573384962579,0.325490397564592,0.540610739300596,0.354927728143453,0.64100462374371,0.627843828478683,0.559634379958393,0.154059320319499,0.034785801810013,0.136481439495908,0.157832112915658,0.00695184651478366,0.620855207620985,0.626300500590634,0.010920819138103,0.628640836923049,0.114250641562278,0.152130414268123,0.127569837009134,0.45804589307685,0.50617362964542,0.639950310150115,0.288204473665175,0.345461163106804,0.625180803216231,0.399412795295392,0.636292764624853,0.64061682353785,0.574945172970132,0.129657454676607,0.638543002203613,0.0701747498662907,0.0965802524672637,0.596952752440193,0.635488570654289,0.0888602599863524,0.508395011404897,0.610985773672337,0.203449599122116,0.11027331553425,0.276875351394411,0.177558160785174,0.164066552663284,0.0670724619338964,0.0209695726362705,0.0835773400343744,0.129737793449068,0.630635259934361,0.523436537732777,0.634406014889857,0.0643533283046944,0.515710663856669,0.0826523669368144,0.0995370924002836,0.27443455292325,0.641087843283161,0.629923699218709,0.638625214703963,0.414028530534383,0.110289048087121,0.120991111799135,0.133672497033768,0.475071921595439,0.0767385262313658,0.40705181691521,0.508516006691862,0.13861698116047,0.0793454513227059,0.617279734245762,0.646286723107367,0.340943994457781,0.452457353661263,0.425044827326243,0.388882464020404,0.0213904586354182,0.62671430863134,0.298101826056933,0.339950112430332,0.235086010103194,0.368748959730146,0.497158253981879,0.07049886791082,0.252404611653094,0.402826040101076,0.627218743019941,0.461369207139471,0.0204676553331946,0.562104856886067,0.6301203095169,0.456364420527932,0.629346307254719,0.0196842639424692,0.593373136169625,0.0892611967765365,0.0124566121608546,0.132077181136308,0.629708160068568,0.284173597334115,0.646359242216087,0.634095756694764,0.515079444986842,0.643252284818564,0.00706442488084028,0.114695726209037,0.340669036927325,0.631596815289554,0.543963919294964,0.302972186778646,0.22469333687303,0.422438780192694,0.0347569162815408,0.0334468506122444,0.544047725847035,0.418141137872023,0.541542162365785,0.270680581611284,0.118048442125366,0.636789994022613,0.0591257832098061,0.0975488683651657,0.412537732592353,0.397207288488007,0.0630362348752434,0.307319129963703,0.00958685908428101,0.603529107061708,0.632400217356533,0.0685372930192736,0.0657705499006161,0.173913041897037,0.526097233384938,0.52063748843096,0.460517289964964,0.452787237337592,0.42350318364194,0.544273618137719,0.596665783176819,0.385119013427868,0.291372673997071,0.516653052686391,0.0746740274361093,0.624282875726263,0.520970200627083,0.25960037932694,0.632461658010689,0.102811110720794,0.0676520195954032,0.0222053786480849,0.504465792751374,0.633735564522199,0.138043000631074,0.0307732693671931,0.454186401892627,0.399298278660791,0.516321962202268,0.40668880851631,0.0321254114453918,0.0764240739181862,0.0657271058445118,0.475322595448534,0.417466302837679,0.546081022821442,0.541290403615022,0.559617302296327,0.00803713552470984,0.632298251318092,0.331598047708718,0.546224065400869,0.35402780911329,0.205292296274837,0.0766806885848573,0.639614892368778,0.404566139126724,0.00460157399494348,0.6216014809642,0.513139667420778,0.18008678986699,0.0381513141916612,0.0724637671582995,0.591183371135204,0.640130119389044,0.591508825068836,0.0794335411204338,0.584093783082528,0.399000982892701,0.0284043025955598,0.18460259291772,0.638699133217986,0.0808493684333278,0.486660892736782,0.0750783008756845,0.58130498447577,0.6097900781406,0.48971174279201,0.553618755567464,0.175652664551188,0.636876245948371,0.0709685548403939,0.587909169437279,0.457638356748632,0.583045337566217,0.505842619068774,0.235345320110531,0.00321732345336799,0.0616236427907121,0.0305334629309675,0.636559218155741,0.628567454198904,0.631412113254342,0.342692799300601,0.585067832688864,0.155433390853399,0.222944877271489,0.00838991269319311,0.402539742880072,0.616586150663519,0.459877330446502,0.255600817506761,0.641008899818183,0.112620729825106,0.452230923531792,0.42229937545238,0.511382184421068,0.180705922218697,0.457544872171753,0.21664919254058,0.00264005442395811,0.295788478987095,0.634206252344145,0.146376810592019,0.636774389526597,0.342971502237927,0.402424430244066,0.638398042869194,0.574933987972265,0.0570869050054689,0.461250768891769,0.00982085993496782,0.643071510543182,0.271313183495135,0.176780339355376,0.630289758444102,0.633324744816241,0.130919568688534,0.00964428080212724,0.0547216979830728,0.643035203863899,0.52646854908808,0.38642588382254,0.328906046765769,0.28683592186946,0.281411151803482,0.17229472596412,0.543538308510127,0.404880127361864,0.455571990372215,0.322834789355132,0.0291540099113751,0.190088548548602,0.625683083176318,0.0316153118215644,0.06593186158308,0.397481029990577,0.414636075277474,0.401448225184761,0.633851411923628,0.172562705932709,0.112419714371133,0.570737064928503,0.525391286681771,0.145407334152057,0.46053658044947,0.453188236619521,0.63849835236417,0.180050317226025,0.269857825543599,0.28985507221879,0.497639106444678,0.626068921551173,0.624229470895817,0.0654342469903028,0.0750503312098331,0.126116280049194,0.513889158576624,0.637788165442448,0.381877000100796,0.0802588378361043,0.175823412487119,0.00350416363543288,0.496072501918369,0.455176606127225,0.40062928111351,0.546585845478425,0.450615669694371,0.0776896085848004,0.407080162555985,0.287020624929127,0.458905199644068,0.631098134239296,0.0592760686849021,0.204964635665496,0.00822659307925645,0.632642148512082,0.559221825850403,0.165614396348237,0.0935563650387864,0.409485436006901,0.205797100491633,0.628898832554835,0.0281982294080763,0.600877611013947,0.0128821778696796,0.184372434797112,0.605711789015412,0.00624208269290821,0.610884865895738,0.0649733785679316,0.315322171119342,0.353841255888195,0.405797100491633,0.262308004230548,0.505129695828194,0.377616746283711,0.585557858120238,0.0249995105667035,0.595146523830617,0.00189343891282887,0.131964571012151,0.638548172627155,0.604318228228314,0.0735906941104594,0.0774826779286216,0.630975687299832,0.643767019076056,0.361176848328837,0.630468610842217,0.616931604004401,0.640320421094373,0.483249675327213,0.631898510066698,0.638437812205812,0.399391502001687,0.214975640051976,0.400548828626563,0.629866520296658,0.135110257924637,0.375337982760126,0.00581995095668356,0.229811144415113,0.325563384849172,0.0602200484929793,0.630037337895518,0.636088664537378,0.453104852142842,0.642417635854723,0.480709858174166,0.293320292740427,0.0731741548731683,0.180038462234697,0.629950238745613,0.056394599942858,0.0619166051148592,0.337179428233932,0.0641009067316548,0.344404017920051,0.402473965708608,0.125555203552875,0.574640447855592,0.64544701743447,0.451350624860591,0.621020804598016,0.644364478061315,0.584919045991189,0.276081754384639,0.27986397606308,0.633886369395895,0.130397764668239,0.341039438816756,0.632179380750451,0.439032153775014,0.640864656577692,0.266985857595676,0.28985507221879,0.636845995846061,0.634028169311609,0.380546993418175,0.0698586123249108,0.017666093043672,0.378653315295142,0.396411418212961,0.47293777318945,0.417915537550967,0.064085701773023,0.626859948203769,0.510078958012237,0.134532933574666,0.482475254063006,0.125242652627865,0.154639030624776,0.533631989065215,0.0115063452734671,0.0472694242347678,0.0594569310633996,0.392304045839518,0.638883323025781,0.641282868749726,0.636608301835701,0.640038188910147,0.18509761768868,0.000915602921429656,0.618523103807609,0.620773110884031,0.583471662396073,0.343544249323704,0.0933820694157687,0.325675872038748,0.459644655240369,0.631355253962199,0.632222590206398,0.619081429642701,0.393848143093147,0.614989924025713,0.48675269618328,0.331165174563569,0.0219870693720757,0.464999591293744,0.48668882347335,0.0904416166622579,0.0878853611069595,0.628175006041466,0.0339665053262995,0.396477492476327,0.276086151344782,0.0578103248102687,0.281175382743753,0.640297274561876,0.283248525888891,0.589538760520088,0.0737816719559782,0.602941802472753,0.022820613973607,0.420289855050193,0.628562684337201,0.00175635046489197,0.383673463606903,0.640050850147429,0.643386072473029,0.410286684669821,0.633996811773625,0.00391797884732297,0.198386987157526,0.527616632056997,0.62565723822979,0.632831595822081,0.522062939472555,0.0606438634084946,0.410759495162181,0.548013692719875,0.509927778188072,0.641709894306688,0.454495513722762,0.0259891851581532,0.177058633535224,0.636754323529782,0.590327453464575,0.00181270982307635,0.455614043218656,0.29811472599219,0.40455686473712,0.0909183395476251,0.0555033447272175,0.597432984083363,0.0611976375907638,0.396790088477349,0.110674801432225,0.0624675302882376,0.494342109602263,0.633369824926713,0.169272984768518,0.447680543081537,0.282374678209773,0.645835290938462,0.0647188240799297,0.320300831059274,0.596787200539175,0.275362318684684,0.0519980915840697,0.620571427485507,0.539147802432205,0.616423273614071,0.643953965691807,0.0910406205254054,0.126801178303362,0.572884432899658,0.573201886865498,0.544258287171142,0.593397227249478,0.453602069247143,0.555702461866385,0.220782828862577,0.450761494693124,0.413037624548224,0.605559133976287,0.643605194141721,0.0893071087443336,0.366892289013502,0.47968619729363,0.641472296595082,0.111312800144137,0.583091786348346,0.251339885500576,0.00800950290449849,0.321019586521219,0.447886125555156,0.050466649420994,0.0688439502556286,0.64120991834552,0.0275056036911026,0.418149042565514,0.63213082261582,0.0363645973488359,0.000799825182929474,0.617688074771024,0.47319420960098,0.581763204682398,0.0181852304080364,0.372385712920116,0.631354594213287,0.396310355743682,0.374735521361917,0.193258816230352,0.0192173010382962,0.309503138586416,0.00936897905484679,0.516491840376045,0.123274944325234,0.0826833085461364,0.50759816584885,0.598729622223163,0.625503866072282,0.455736294487246,0.530173224657935,0.163591947326057,0.128222763052418,0.640302762566416,0.056353337975548,0.0152838554841316,0.201076526335512,0.404695664024628,0.0362663213967032,0.636896547569797,0.347269061577757,0.638589444839013,0.483239054803959,0.629361722226592,0.414928344045699,0.639302987874768,0.185873673982801,0.0129409108897121,0.641728658221409,0.118631255504332,0.551609350928673,0.117391303523808,0.376031904412463,0.332807345951728,0.628740794005562,0.128076573347744,0.633235994245146,0.336480673203693,0.644198926160297,0.539265160904513,0.641598722517117,0.530369200818585,0.398821993217638,0.400608712109373,0.603115316436733,0.295175014943979,0.363085016341028,0.430399720352515,0.00272388044067089,0.641840525615812,0.542493652452243,0.0891089853263544,0.241764984365334,0.456789451471334,0.357221611595919,0.0634616960896754,0.46155730216909,0.0260578584634307,0.447778201287406,0.0512691028427976,0.326999915369786,0.173913041897037,0.0645762742632779,0.643409547855528,0.05277700508272,0.595198499546571,0.643545263533988,0.644715602784153,0.57796982156855,0.595206504636636,0.233877015098815,0.450454423577017,0.486140266839546,0.142597754479011,0.413573422621538,0.642476233646717,0.588698361291269,0.246207599338337,0.0176889107261681,0.463060962141548,0.308252817074072,0.496871139245919,0.479465211117142,0.378872087624736,0.484686930137395,0.116729160460391,0.362760272354596,0.255870849458381,0.327169201408671,0.556303651916146,0.638698083151782,0.600530691678199,0.0305981961829571,0.106146553304183,0.618806803011156,0.254165687415903,0.629322384185458,0.527124248330597,0.407278341294526,0.632483107021528,0.621652782588874,0.622463767670527,0.560268942648795,0.47336456517071,0.00677309246433256,0.0891478541671744,0.62754236932615,0.41329596132347,0.598079476550295,0.20993085565039,0.0617137292509095,0.34186621586966,0.398356389765028,0.0725700154179428,0.175656694756501,0.644776408276312,0.40818494181911,0.605151370219096,0.615905373791145,0.623188405552123,0.188185713848272,0.553427905778799,0.322648437947639,0.11594202878507,0.197173492747521,0.640293609062483,0.462123805202659,0.609345473963158,0.0616005239184951,0.243461668019613,0.0711463899548598,0.149619829933736,0.403956665335183,0.30124892057036,0.0660042536594013,0.404782669949143,0.295853762371329,0.568904568272554,0.43102236248648,0.0298045090211597,0.285464342809715,0.330958131217359,0.626030360046802,0.08695651966795,0.360063748443559,0.426196918986921,0.00281522185803878,0.641044707587962,0.53058382308165,0.576801849833505,0.189593350644776,0.598289563551815,0.463493024942924,0.0634571485346715,0.647793652115198,0.576828665963215,0.568867842591245,0.40597311719877,0.135102143217905,0.444735791715547,0.444643517019827,0.154949521371116,0.112520335300379,0.452835087573934,0.618043197941075,0.320732822148812,0.642141434636099,0.635225944486657,0.285463162637747,0.589503059293612,0.599213018407312,0.461380800894816,0.398072613727369,0.324685138161001,0.638589093451006,0.589140140022282,0.595088605252177,0.394477193192092,0.160234017959083,0.178342601217649,0.00476343376074306,0.418229452025359,0.13622735215931,0.0627173712595528,0.516972111972954,0.101449275250965,0.477890040099518,0.627606310674554,0.641367305341519,0.122638767094015,0.593391618359267,0.527650368379103,0.642439807106219,0.461745065275342,0.0383277109715414,0.642833869804474,0.343571414792511,0.422152870215618,0.62402504605616,0.282788052906085,0.459475385592762,0.543129057244518,0.0240740037281755,0.634393159006157,0.458594704799908,0.175927834143795,0.305904373206109,0.353321702595168,0.298795513109114,0.396839064589552,0.333490622493895,0.107278356661348,0.278139097362886,0.460372142130856,0.548191028924837,0.346970044725547,0.5973965544695,0.541133004325566,0.403701856782382,0.288080741034896,0.546658710852879,0.45223265486046,0.356880034792125,0.502299617838394,0.416613711571893,0.0631088636006311,0.183338616446907,0.640417978903668,0.345430974471784,0.328216147123106,0.404258146001267,0.0297639662211425,0.164458111593926,0.626331150230329,0.0876165523544108,0.0060912634768442,0.642511978924751,0.142478126839249,0.632921904588977,0.631635979173366,0.62442318403574,0.541984365221098,0.294455844577826,0.640735790404245,0.0305653746990165,0.172284748798501,0.111357825958503,0.560704309317008,0.252218986584078,0.385312481723086,0.00487418347492273,0.0331936647958995,0.28112901591801,0.541059217966217,0.645595793887596,0.16504808693663,0.639140613832642,0.411748272331197,0.00712049739167141,0.0196556908727211,0.136272777511061,0.547918102888314,0.640443297280412,0.0311985564243035,0.406557243928832,0.0697791863417059,0.0668220103875008,0.455205622785916,0.404407609863586,0.416630060846573,0.630256036464363,0.630334759671553,0.457168629865319,0.0515607221066586,0.00579235829021071,0.178275363173592,0.596703536386326,0.630529175587491,0.416079795422107,0.309261215626505,0.462571486842419,0.127364347760905,0.1564184553981,0.117709339379994,0.377741867050288,0.0105352102411308,0.103217149296046,0.203976620690875,0.55296251438834,0.640567383347608,0.538325014606421,0.418905858573416,0.452004072351385,0.641478145207724,0.631369063613349,0.480730883060704,0.250686068181588,0.380198679799399,0.638804497373108,0.634180552870203,0.460283561619263,0.624988748668683,0.39572334619772,0.636953504185149,0.0754400512440503,0.62853385412929,0.0547373905822052,0.520369904926391,0.498971814614694,0.30713832802804,0.0133212489665684],"Archive1401_field4":[0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.193503777418966,0.381924543193478,0.532926358918157,0.597182203353326,0.622718673420509,0.633004102968537,0.636942291222006,0.639306483928824,0.640790736918731,0.642008009074038,0.64329640213844,0.64450352052783,0.646028209018568,0.647551167447259,0.649558471955831,0.652451991728767,0.659697763293081,0.676675661709548,0.717301893492965,0.814432793159922,0.204640743851266,0.403001996885161,0.602231023625986,0.801871648245012,1,1,1,1,0.149299794341717,0.512177393922748,0.153129060010546,0.053632375694469,0.5962280623114,0.595643184655945,0.463768115652509,0.0768115934234221,0.474393415939429,0.286701942641942,0.202898549989703,0.442028985351351,0.543096141510733,0.619967793086514,0.286314350400413,0.568115941917632,0.264514073463636,0.598832059510827,0.618148041673143,0.173913041897037,0.51594202878507,0.592028984839124,0.234689128105239,0.768115941917632,0.606737910636457,0.114340267017801,0.619186724134895,0.623188405552123,0.133415348626129,0.670390888322509,0.39300505876821,0.618827866826978,0.164510662029042,0.495570443240526,0.617244295279723,0.536231883323036,0.511399255936406,0.616367070997476,0.218971750483822,0.482608058240831,0.283098016058186,0.458797582712767,0.363724399091419,0.640241814675035,0.531119267718046,0.405797101516088,0.613566705271198,0.360774597163102,0.173913041897037,0.594202898483912,0.127214168829112,0.648662322199589,0.308695652018018,0.22630865627556,0.256550319126388,0.259153843027683,0.292326608432761,0.565217390391247,0.0701972602123369,0.108949406406795,0.612318840401544,0.130434780270266,0.349312647152052,0.628017549382539,0.557112869813212,0.182442655910219,0.343374216457246,0.639126359568095,0.250594265759545,0.584508553086322,0.13646412211141,0.352823090183384,0.0103448859977954,0.400300579658058,0.215942027760616,0.610950079617044,0.639466197872037,0.371462742631755,0.249690926074694,0.610144926756755,0.502401697591321,0.281072401470572,0.304347825752895,0.313792015671536,0.382649209567019,0.325288315653138,0.178611016579541,0.336368756635458,0.340358366901389,0.63074898978765,0.507246376254825,0.405797100491633,0.308670140019311,0.173913041897037,0.378421900168454,0.598813381650311,0.398832185518772,0.339854614799707,0.518071766913004,0.254134528622157,0.104849666221859,0.579710143925352,0.215942027760616,0.384714642665083,0.311005674731923,0.503425007083849,0.246376810592019,0.35781399645639,0.265576615478449,0.225211419048916,0.11594202878507,0.608695652018018,0.617047964657702,0.518518517323321,0.220854927944816,0.275362318684684,0.0362395759543773,0.495203064517307,0.260869565150579,0.220740298620183,0.661538461420255,0.34275928539481,0.207002497610638,0.623188405552123,0.0996815384828314,0.121739128764476,0.307727276867002,0.508987873661321,0.54101919251589,0.502011439718317,0.628734892121269,0.619967793086514,0.588932608011116,0.62476585598175,0.434782608584298,0.304347825752895,0.582846260380788,0.526555662580352,0.0970079633845091,0.620161092346684,0.26322998694445,0.605797100491633,0.217391302499353,0.833333332821106,0.206367664464161,0.63038263654372,0.479710143925352,0.127536229768336,0.299999999487773,0.591349882950401,0.0253691256748225,0.61505194144794,0.251066748426358,0.594202898483912,0.292943995113432,0.530061590839235,0.579710143925352,0.0755985057219849,0.181846792001135,0.122507934991743,0.437681734829845,0.534661643006524,0.143317228083794,0.48368311397143,0.0366694361778623,0.41071207314796,0.594202898483912,0.578260869186615,0.550724636857141,0.0918623296002507,0.574669136688736,0.583574879293865,0.586296628356256,0.652173912620334,0.594202898483912,0.369939140621516,0.649963665660437,0.648264932072037,0.478260869186615,0.630434782319176,0.524609867366599,0.0795663924231812,0.2227025455541,0.368857743515501,0.598230278350627,0.579710143925352,0.556078996142446,0.568745030945861,0.0707998998656868,0.539026817389789,0.560190730644568,0.479605058421944,0.533333332821106,0.579710143925352,0.362318839889317,0.526711502649553,0.456014803802608,0.0112540507328269,0.507246376254825,0.335064969849833,0.0615315555702258,0.460588195557323,0.400686730491637,0.521739129788931,0.0773972916671981,0.610144926756755,0.69565217322265,0.521739129788931,0.383357997083439,0.0125465603196496,0.627536231817246,0.0739240547864922,0.559709062715721,0.313794953807998,0.884057970190475,0.32552468094558,0.558674889904144,0.571897441355416,0.549185280780481,0.467169045486645,0.547710232807053,0.309905718602152,0.644339610444698,0.389767282586328,0.405797100491633,0.122705312606604,0.266390500791735,0.360455699740402,0.366496821787671,0.026338130865561,0.623188405552123,0.0966418006891774,0.604967013425163,0.63276079574857,0.144927535853281,0.62944477580436,0.465056360433862,0.347826086355211,0.558267571784805,0.483811818281013,0.257978663228432,0.388405796455597,0.664358708741478,0.0953032162462391,0.137922701973396,0.460673455810802,0.637681159086229,0.636142820293217,0.528342694955266,0.588963903057355,0.512035636009682,0.631557277479728,0.197800008345209,0.478260869186615,0.607036467508447,0.373913042921492,0.469565216656369,0.605148552968305,0.534621577602459,0.318840579287001,0.62053139998627,0.626086956054053,0.530112721379951,0.565217390391247,0.376811593423422,0.517740371141341,0.00816549049519514,0.0489745883261548,0.592522918565686,0.508695652018018,0.294600223046355,0.550724636857141,0.630418867413345,0.547920710125864,0.620052622044508,0.144927535853281,0.318840579287001,0.636284981841487,0.511111110598884,0.434782608584298,0.102909292423082,0.215723925424483,0.20450885571028,0.325561566441843,0.452173912620334,0.571050420050556,0.452901654600074,0.144927535853281,0.425902954745947,0.299613089533162,0.162219657294657,0.529950922056987,0.271827369669292,0.585733243763198,0.579710143925352,0.602464123771027,0.28985507221879,0.379126731240309,0.536231883323036,0.247826086355211,0.0869565206924049,0.0376408201527231,0.572463767158299,0.624637680290861,0.587941580114832,0.449275362118404,0.666666666154439,0.623188405552123,0.61352656917975,0.633333332821106,0.615619966821391,0.347826086355211,0.0162326328141919,0.492753621696265,0.645609988733763,0.106599183060787,0.495652172198195,0.330434782319176,0.36081722575316,0.546238777596726,0.345996418219056,0.211572136787299,0.387439612613469,0.620289855050193,0.565217390391247,0.466666666154439,0.0563552117034376,0.50427800403375,0.565217390391247,0.270433912352132,0.166051805779386,0.621203851114217,0.531544212607242,0.155392511007742,0.627527044506303,0.117391303523808,0.626546956763181,0.623188405552123,0.473429951000428,0.211594201495493,0.510144926756755,0.524667287035535,0.625005504651932,0.0479246317389651,0.349832292646014,0.534782608584298,0.294691276591915,0.434782608584298,0.451601731033625,0.166550141588366,0.242376828745358,0.198042446605901,0.530434782319176,0.270434203297304,0.64348539951582,0.562600375444256,0.405797100491633,0.219402133179272,0.624514387151705,0.505434781550835,0.0305157152754401,0.603053691380707,0.476795721544694,0.599036743537557,0.391304346957527,0.295042184130328,0.178618251279572,0.537724402349186,0.444718635170459,0.128855383376456,0.584055041274107,0.0996815384828314,0.614516488615904,0.573461589239036,0.291091024727645,0.521739129788931,0.574536296654992,0.149275361093949,0.272995508390475,0.279320437209048,0.305901121586469,0.54008832880304,0.428529967347654,0.31342864154226,0.146537841573859,0.0839331239777926,0.112318840401544,0.610144926756755,0.351727491060018,0.0592691167344052,0.554678050060457,0.577533962137563,0.404031889004663,0.53019077254477,0.630434782319176,0.505815156508065,0.64132606898558,0.582112514071271,0.172484238839228,0.491249519159319,0.0724637671582995,0.611369455569768,0.646806214933103,0.0404304106630668,0.327536231817246,0.534356998823916,0.818840579287001,0.640902604433617,0.315902782944872,0.291309925114093,0.574350290488778,0.0316338595763164,0.236703340510562,0.553886661775305,0.405797100491633,0.257031324232958,0.579710143925352,0.491316814572846,0.533091402690011,0.474726130184462,0.461764550406267,0.484011549068626,0.579710143925352,0.402517248925303,0.623188405552123,0.160828712965202,0.618840579287001,0.554105531428108,0.337600630789623,0.420289855050193,0.372082801090631,0.637681159086229,0.318840579287001,0.521739129788931,0.515065468349555,0.096146064946564,0.539349553444748,0.381964573573288,0.153133103533772,0.0449217271943779,0.244672759058581,0.604037612633815,0.142746409022013,0.544879709179401,0.438133886166042,0.208641974682586,0.0561114754584725,0.0431072363565743,0.373663491870895,0.608695652018018,0.457515008288915,0.469408128801182,0.623188405552123,0.209830677285633,0.643072997027145,0.614651902080189,0.209339773896467,0.313024372200504,0.615710767326607,0.572463767158299,0.333333332821106,0.625939615886602,0.549236786271666,0.521739129788931,0.50144927422651,0.172492057478514,0.301494157641655,0.574556561396044,0.413151688373789,0.195639767074622,0.441192687015229,0.275362318684684,0.618840579287001,0.614975844942942,0.512837576179614,0.5490042206822,0.0668103684827782,0.382526416361822,0.355261611291451,0.69565217322265,0.341344511221484,0.591190197077757,0.482122437965239,0.623188405552123,0.515903951847836,0.567091586456719,0.188405796455597,0.133333330772196,0.642010289050648,0.280841970844978,0.405797100491633,0.59259259173888,0.221380604404379,0.473214237692966,0.632979542466793,0.645717860754317,0.144927535853281,0.634083309568542,0.496798367096855,0.397697212498353,0.634790187501153,0.637681159086229,0.583038133599831,0.618840579287001,0.470168062225141,0.28985507221879,0.631884057057914,0.630666246619696,0.590014026630683,0.602197862837648,0.197101447961388,0.0367959184449128,0.612296459136807,0.488892039599728,0.0782288672665403,0.608695652018018,0.326086956054053,0.370173515398217,0.620289855050193,0.282608695451737,0.632275614964101,0.0197667223119798,0.402220051504877,0.483837900901062,0.146376810592019,0.544234044471974,0.635762693254056,0.636231883323036,0.0473389160794569,0.135882704039926,0.133440684418604,0.602903349560595,0.638106878463278,0.582650596678863,0.444663757173963,0.126132893633221,0.420325388266077,0.356412447994959,0.501247006888731,0.202898549989703,0.544759835670478,0.627940638435949,0.0642344065143116,0.724637680290861,0.243069940053923,0.468203730525639,0.188405796455597,0.052675890366245,0.720322650922763,0.0125161534757504,0.153623187359072,0.475898356480429,0.536231883323036,0.505369935608813,0.129002105797643,0.550724636857141,0.637681159086229,0.61508626990494,0.614492753021878,0.494504686486446,0.0909881172152126,0.476650563466037,0.626724357508798,0.341567161112621,0.221017042799869,0.471819645279851,0.630913096182899,0.620332134301152,0.571433821247363,0.465317706032952,0.0393531001073803,0.330112721379951,0.627932245077502,0.453891922350872,0.473852087858927,0.33796645746377,0.634451958615754,0.030586624965618,0.163522090775447,0.460725507336413,0.185004251948562,0.520128824068353,0.396849302991153,0.592413973940922,0.381396023678962,0.552747267207827,0.309342111702396,0.014492753021878,0.393070381081729,0.156199674872867,0.470068481117551,0.244803818589825,0.545190156898638,0.466732102182444,0.608695652018018,0.456120096245893,0.0171372059426617,0.144927535853281,0.311594202519948,0.514178028203713,0.416331778528478,0.507246376254825,0.632560424676687,0.255782541451773,0.260869565150579,0.556137243570888,0.565217390391247,0.637681159086229,0.509037517718074,0.469008168316454,0.0724637671582995,0.35935992338635,0.241058845064658,0.599554944550204,0.608695652018018,0.476811593423422,0.590101941246634,0.368479563964977,0.451580368076992,0.613043477258686,0.476811593423422,0.498677616798019,0.250311754923604,0.645889396496014,0.141706922363217,0.491306930632616,0.567028985095237,0.267220250812564,0.567669316490804,0.28985507221879,0.569163773785498,0.0374474543029884,0.397404762401623,0.186721843701528,0.445754663269738,0.155231481050357,0.362318839889317,0.588405796455597,0.0724637671582995,0.143317230132704,0.623188405552123,0.362318839889317,0.301338840044419,0.260869565150579,0.543478260090089,0.196275175964716,0.0547318247190973,0.637681159086229,0.336422082582882,0.32350852105162,0.398477328706977,0.611555557010281,0.536231883323036,0.607442367782297,0.388566827437437,0.441711240440338,0.167265429270701,0.320450885007578,0.639280750033707,0.620255404683068,0.0392059935156312,0.095511085303045,0.571828787514781,0.617391303523808,0.318840579287001,0.644058787910322,0.219696516422272,0.526570047975117,0.124843080411519,0.336231883323036,0.389792448319301,0.550724636857141,0.628702221232189,0.840579709588159,0.247932768983704,0.557129084884309,0.179482728270332,0.550724636857141,0.516800857956336,0.626943662554905,0.0307333770959949,0.391304346957527,0.563689902623827,0.449275362118404,0.372932681648929,0.652173912620334,0.126073515206644,0.56313513062255,0.176890494885752,0.285507245953667,0.291678119303359,0.295222758637017,0.556341787247306,0.14828233960856,0.646151901777975,0.035673212246665,0.293587048485491,0.519073290349053,0.38969404123695,0.0159580266717431,0.112721416319461,0.0969666696590992,0.616029530545724,0.315911634234629,0.488887446968712,0.91304347828314,0.465179306282829,0.0847752873178341,0.611594202519948,0.607236933854629,0.222892362692293,0.0834203474534865,0.212884486990873,0.0632254137780754,0.505797100491633,0.417869332589087,0.259296901998387,0.565217390391247,0.434782608584298,0.236644624906261,0.638067870296601,0.602898549989703,0.481232138565958,0.398338877734113,0.325483091152723,0.647821931166409,0.634878643029256,0.367449226712295,0.352649912240589,0.311276685037908,0.0677394557909476,0.157809982642354,0.592408103814729,0.354801386226715,0.623188405552123,0.011853651853142,0.528763933366876,0.538879968960658,0.585057623996453,0.427343318776547,0.265632579397068,0.625812942046498,0.587548310344618,0.454723365795541,0.485486855204671,0.383719701351337,0.266307242322999,0.0243900347262528,0.0610662471606082,0.228407651538409,0.547410150521817,0.635808919729487,0.605475039552408,0.279902547811999,0.627450930585573,0.122343277439795,0.652241262329967,0.207839790692404,0.226506570704753,0.0854084967034017,0.5575206540595,0.188405796455597,0.140257648648934,0.304347825752895,0.395236871526797,0.463768115652509,0.635965472819252,0.552436796950583,0.136231882298581,0.533375348787173,0.619592054811858,0.639165736538512,0.465204874626552,0.176997510462066,0.496263601674013,0.273913042921492,0.592888423561015,0.584294964498184,0.486528612055377,0.400900689932425,0.268291151354361,0.291304346957527,0.543443231930438,0.160979809808526,0.549275362118404,0.455709767253799,0.563164294802737,0.557543927624397,0.286757873778006,0.340115132639292,0.39610973675373,0.312455369497142,0.0289855065559834,0.442340898041,0.607011600916285,0.399742740439012,0.516908211602744,0.396853183626061,0.582527234901234,0.18032936130681,0.604736268291936,0.424490222311104,0.518782949604823,0.575806115591718,0.545595577727627,0.640292424792696,0.572768351922527,0.0883728038876996,0.552645804176708,0.036595792217735,0.341121860305892,0.60325565650431,0.188405796455597,0.487083611485626,0.459177602184171,0.628437478540873,0.370839568805731,0.626299039718042,0.565217390391247,0.291304346957527,0.611627304704513,0.408696634470203,0.202898549989703,0.54194076339895,0.0649791288329094,0.0619292776211438,0.557453480556098,0.164376079397626,0.579710143925352,0.623188405552123,0.542369204752491,0.376811593423422,0.11594202878507,0.440373354675596,0.175850929343934,0.0329147262339617,0.251623403375618,0.185112469210394,0.202898549989703,0.411530234535719,0.379871174907192,0.579710143925352,0.349114878195445,0.327774483131035,0.494534899708382,0.400877323142139,0.177268719512288,0.299998157517983,0.496050026403787,0.00172515888859067,0.103059580971542,0.306924315315601,0.293562931794266,0.496254678672417,0.504347825752895,0.449275362118404,0.0495841184627117,0.11594202878507,0.345159289050064,0.533233375738592,0.220839042748175,0.476650562441582,0.586420129459743,0.35886468655324,0.514059004992302,0.565217390391247,0.605336065083124,0.200063699064836,0.540005616368731,0.379710143925352,0.463768115652509,0.262977360480444,0.527426292446839,0.45415849471852,0.208378848580996,0.56063533482201,0.172443067023943,0.494508610148457,0.347826086355211,0.497901236776171,0.308808583820992,0.608695652018018,0.555647958820358,0.135265698456453,0.611174062323919,0.499999999487773,0.315619966821391,0.26334337155646,0.597396426412646,0.294399049826338,0.11594202878507,0.634277669139465,0.60294081182493,0.308695650993563,0.267192951140174,0.283758002644179,0.536231883323036,0.647895230909712,0.338148208044607,0.543143959988974,0.192148491593216,0.101449275250965,0.468115941917632,0.471240004637502,0.516232917612635,0.607246376254825,0.0710020565623437,0.275362318684684,0.161801659233683,0.578078008096738,0.184877068954405,0.0555269071883773,0.575246030767677,0.488862990158483,0.285797176915963,0.252539908329528,0.260869565150579,0.638941256971044,0.537603952072192,0.631099341047089,0.347826086355211,0.0480675114300731,0.521739129788931,0.632067426277387,0.487259547260832,0.163768114628054,0.566843878400367,0.585443954109628,0.213043477258686,0.636860074928831,0.641256775885128,0.152489936447227,0.321739129788931,0.615458936864006,0.340544877099381,0.363716406294812,0.618156198382523,0.607196667657417,0.639578444314728,0.4620047399886,0.0530187713010412,0.353441205251442,0.557334967523194,0.327536231817246,0.568764552957159,0.311115786210742,0.40436258404922,0.153781199272518,0.640986332102666,0.249631961527869,0.615297905882167,0.607227492478888,0.0664603429999765,0.568547542689878,0.595818005824292,0.598647255030132,0.0058296351282202,0.119162640226225,0.343234624241697,0.133333330772196,0.601930565155978,0.0601824018267751,0.640210382351848,0.196475320632081,0.372980893517827,0.391304346957527,0.4687746090058,0.621578098807091,0.621578098807091,0.578078008096738,0.614245466016462,0.473913042921492,0.3307568432584,0.0489885321808872,0.634252216559138,0.6338668268955,0.166666665129984,0.501451141807671,0.403129721296141,0.39462289832963,0.585507245953667,0.642140371251982,0.107729468175889,0.604301002020297,0.590533336103459,0.628766657392277,0.624732234398585,0.32030996817193,0.367305663709813,0.30740740621221,0.542955201112624,0.596121140984931,0.153884732726854,0.39288004966721,0.604570288168798,0.362318839889317,0.160847951202512,0.516407450909175,0.0579710136241941,0.10756843719405,0.28695652171686,0.518800765898825,0.346137152701744,0.643109826178392,0.398613560710674,0.186782104183717,0.228620562961903,0.035154097420307,0.546545485031368,0.501437174390477,0.605636069509793,0.353552901561887,0.284400321482122,0.601778383414986,0.160869564126124,0.585507245953667,0.58139312344733,0.0101672670432993,0.016535558986045,0.372286445295705,0.307809983154582,0.639491875832427,0.591153634284766,0.643661442858783,0.641396255410645,0.157971012599739,0.0361200405155495,0.56055286825686,0.578300455145818,0.0327873895715805,0.57637051849288,0.590059699900504,0.616326619373939,0.63472155107625,0.611916263459172,0.642615362808681,0.0674761053337493,0.540343957944162,0.0711826382402169,0.346559385858997,0.362318839889317,0.286882225179004,0.241048570807137,0.480053121158903,0.384287307722762,0.0724637671582995,0.0109913989538247,0.594202898483912,0.470858669766093,0.300701566646529,0.511531675943669,0.640548434006561,0.628945241383226,0.0579710136241941,0.461520605172516,0.531884057057913,0.273934155911146,0.613634768001395,0.61320450721607,0.536231883323036,0.52721482550466,0.336231883323036,0.637681159086229,0.281377130682931,0.586533030529072,0.531521162373499,0.218624806561158,0.460869565150579,0.351657428593987,0.0341877814235052,0.630827815440323,0.372884468755577,0.607246376254825,0.608695652018018,0.587438742851316,0.602898549989703,0.608695652018018,0.560414286153777,0.0818237909412233,0.137363002344373,0.606189084571031,0.014492753021878,0.25363227837126,0.643869452265901,0.586061035502759,0.00248801508218797,0.180527634295195,0.612667738984029,0.542360656701364,0.0647142109598166,0.611916263459172,0.123027373545829,0.596408337677278,0.628322929123717,0.483978261457736,0.330112720355497,0.461473497665928,0.640112317437411,0.0676722423338073,0.606273325491951,0.546376810592019,0.456479555933252,0.473389691974399,0.604123100316267,0.0840579701904747,0.626955264505889,0.534678132631516,0.53961196345241,0.391304346957527,0.526101759426391,0.137522079690846,0.28985507221879,0.499750685086242,0.611594201495493,0.259438198906778,0.407074063976364,0.0738754853828582,0.0384030944559752,0.0563495628594883,0.342009116049865,0.640792822829255,0.197483272522207,0.449275362118404,0.249874539114418,0.025966202538429,0.15016102893293,0.590573516246466,0.105072462610037,0.631253679265504,0.162255280662566,0.333333332821106,0.139881909349823,0.104106278767908,0.405797100491633,0.63533805570131,0.626570478246147,0.024478723830058,0.092925063188118,0.478260869186615,0.561268386441533,0.169565215631915,0.171741645337773,0.386655574791744,0.030586624965618,0.597038937776386,0.582383883960903,0.529302640891916,0.278260869186615,0.59026201538766,0.0495044968086337,0.208695650993563,0.302775680974848,0.478260869186615,0.449275362118404,0.0180493846238119,0.449275362118404,0.459835933251154,0.610305957738595,0.33476256922331,0.556521738885457,0.576956740233076,0.171014490370652,0.381207233044512,0.608695652018018,0.458221748944579,0.227123150115016,0.257761315915511,0.566882466540562,0.107809983154582,0.101449275250965,0.235397903328201,0.3797521557936,0.381318408931902,0.284682044512296,0.468599033838696,0.499670695652879,0.172463766133845,0.510225774683269,0.541821188006384,0.264001586860047,0.500557131832984,0.331884057057914,0.642936199524381,0.0127292052495565,0.158132043581579,0.323188405552123,0.282144524186984,0.328985506555983,0.63065456373678,0.0784637307081965,0.333333332821106,0.619593125367158,0.262682098255197,0.481845373131191,0.0959329281430067,0.492753621696265,0.631884057057914,0.605327549814552,0.633494025732851,0.206119161430857,0.609934857170968,0.102898549989703,0.11594202878507,0.121038932326286,0.563636712928896,0.272069397123595,0.466842242345998,0.00333127253999121,0.0785637451601808,0.623188405552123,0.211659359896238,0.614508935310421,0.623188405552123,0.556857972132841,0.545249504591571,0.623188405552123,0.617015157516129,0.0979138017146977,0.270146130696075,0.393014841287411,0.297667359884519,0.0289855065559834,0.4713527612587,0.371060912516956,0.614903682344503,0.594202898483912,0.00548810647380362,0.494561728131549,0.0274942179000883,0.58985507221879,0.635636514225636,0.297851102005552,0.427154021036955,0.510352820400477,0.0705666857963118,0.645985741350787,0.214170691058199,0.162257234297932,0.374999999743886,0.635325379097206,0.597320241804533,0.214447238542556,0.529911760222085,0.604435645094547,0.0562944318226487,0.246376810592019,0.31594202878507,0.214170691058199,0.642279557783417,0.561179402294736,0.579710143925352,0.491213390735177,0.400742443418822,0.524380556470138,0.469313342142211,0.606324408907745,0.623188405552123,0.592721237654538,0.491422140823139,0.518840579287001,0.644272807793946,0.562303045869156,0.0869565206924049,0.576240096172541,0.19565217322265,0.520289855050193,0.6360237427857,0.486025629319275,0.188405796455597,0.392812611854461,0.293501167412383,0.601008639811546,0.141706922363217,0.41250937465812,0.602681204725691,0.349510633293084,0.515284574651424,0.631272134819322,0.052165518237432,0.649510652757725,0.268465151934386,0.0411380087874253,0.38985507221879,0.610144926756755,0.244719407609403,0.459000782304444,0.143478258041179,0.0258102272411904,0.480955630010884,0.030600178503059,0.201491539135102,0.246376810592019,0.633116072586846,0.18985507221879,0.595751094581328,0.636199949016981,0.516936520363145,0.173913041897037,0.318840579287001,0.531884058082368,0.628990350178434,0.631062015035248,0.328985506555983,0.19030962590157,0.156521737861002,0.560444003539573,0.63912185196683,0.610305957738595,0.483637625103479,0.460538122253994,0.592291428653795,0.337681159086229,0.350434527639704,0.111111110598884,0.628044833688107,0.136072803927653,0.550724636857141,0.642489760548333,0.59849519622372,0.616420257619042,0.627004560247999,0.610157996751515,0.550724636857141,0.246376810592019,0.11594202878507,0.00477176360299044,0.360839381637834,0.591353927498082,0.305797100491633,0.214492751997423,0.614385398351015,0.149758453015013,0.188405796455597,0.632313902939031,0.334851045240509,0.0797101439253522,0.644787624007825,0.258990572587578,0.420289855050193,0.588658650348576,0.266699579839315,0.0456285692710696,0.559116056011167,0.273740708105025,0.250953594316685,0.202898549989703,0.592438119316882,0.0614083382407281,0.341929314091736,0.526086956054053,0.313043477258686,0.463768115652509,0.581182016088797,0.639773029265714,0.0353794242119225,0.21352656917975,0.620183302527464,0.144927535853281,0.642034721273961,0.178743959058769,0.540632494623431,0.202898549989703,0.0356004185840492,0.0483445168457409,0.0229077274658789,0.618801599805059,0.333333332821106,0.41654997613891,0.455397945740631,0.621739129788931,0.594202898483912,0.276908529388633,0.208216504248061,0.34597443136943,0.576811594447877,0.279710143925352,0.596365401750771,0.138486309897608,0.333333332821106,0.238967503503866,0.1652980559648,0.19978523994776,0.403400123075955,0.0707376416965738,0.501068977127847,0.586619304992835,0.202898549989703,0.560902587427667,0.630830027238308,0.633339566628765,0.528471257890082,0.588205658959416,0.559054866348444,0.616183573721148,0.0869565206924049,0.513657852042148,0.19855072372458,0.401110366127557,0.0757095689193435,0.137942330527997,0.434782608584298,0.314009661100814,0.611806062852783,0.499999999487773,0.549067393689479,0.0888142035704238,0.132045085990843,0.596094377102418,0.618464432254866,0.602254287760942,0.484894907786413,0.173913041897037,0.234305577338026,0.130434780270266,0.497570243615257,0.148148147294436,0.188405796455597,0.349476330447454,0.118840578262546,0.572786584145191,0.521739129788931,0.358445801314382,0.589282388649213,0.212936123612277,0.475603863620762,0.58621592385342,0.3694362715999,0.631088912096889,0.267032044117369,0.273712763026089,0.118840579287001,0.513459263521674,0.541528053573824,0.412626997439775,0.537664532184288,0.537537019315676,0.514958176170437,0.173913041897037,0.331884057057914,0.523913043433719,0.138003217976543,0.265085155810309,0.297444564520795,0.254841414750406,0.367583816514894,0.141867952320602,0.624655255837976,0.481162879272516,0.644427913329031,0.367807753121301,0.120289854025738,0.307246376254825,0.503170288683074,0.111272140556269,0.337762915704179,0.565217390391247,0.0632104229305037,0.397745069905878,0.0897227464613717,0.376811593423422,0.369235922041569,0.0969866106724242,0.637681159086229,0.257430091227805,0.34466926771651,0.153140095438007,0.38985507221879,0.114331722040038,0.0638527868444592,0.615808680621729,0.0202460637039003,0.542028985351351,0.523188405552123,0.610305957738595,0.159420288362932,0.307246376254825,0.449275362118404,0.347826086355211,0.641211829978239,0.16642621021385,0.552173912620334,0.263755610132362,0.397493664592033,0.570496904030905,0.350032583810419,0.566852008473922,0.540204011267241,0.217391302499353,0.639193529998133,0.601034549298728,0.159420288362932,0.636115513449642,0.124637680290861,0.594202898483912,0.623188405552123,0.241000108971261,0.325118149607552,0.295324214496952,0.555569870775165,0.50588768073906,0.648506016003439,0.0289855065559834,0.599999999487773,0.327430966009787,0.563978733321632,0.599223383841313,0.628369935209276,0.219015408650986,0.556640853273348,0.206276581209411,0.632092955691827,0.0799722998682152,0.106280192412697,0.494278167229405,0.346334607150717,0.486214719094536,0.163271010213784,0.347826086355211,0.475110407290152,0.599999999487773,0.123376814064921,0.398137028373906,0.643757730344085,0.264441558452734,0.463768115652509,0.625201982795449,0.462193058349372,0.586394493502001,0.549430444091028,0.556305782782199,0.385507245953667,0.18016259850018,0.156199674872867,0.159420288362932,0.517874395444872,0.415956399837468,0.0533417194181511,0.300035595195401,0.597761075988189,0.582608695451737,0.623188405552123,0.298034844126585,0.473754053678135,0.563768115652509,0.600437585125154,0.0921211632360901,0.552354696115809,0.205797100491633,0.473985081560896,0.260869565150579,0.0911585926461579,0.629947887621771,0.645783258877493,0.520128824068353,0.0434782600900887,0.308695652018018,0.584913817173721,0.59275362272072,0.52702198212689,0.547315494993064,0.507246376254825,0.386868733108853,0.579710143925352,0.159420288362932,0.0783068549151596,0.627745187820629,0.59565217322265,0.445461719385778,0.637638047977945,0.628008977768951,0.320289855050193,0.507246376254825,0.41034173067691,0.595751650860302,0.00728361006573179,0.212560385337621,0.127777774704413,0.0463692316751641,0.605778696160557,0.340796570285034,0.629917083289397,0.338244085747976,0.540579709588159,0.605750090308255,0.556926256145282,0.427536231817246,0.385507245953667,0.395907366970468,0.128998800906352,0.507246376254825,0.472147181930158,0.00872543804228813,0.0686696044343241,0.614692127299208,0.652173912620334,0.142028983302441,0.539130433824966,0.135265698456453,0.61932367018361,0.635761783538164,0.169827847946275,0.571064965260276,0.641131380564656,0.20966972416236,0.578134549807882,0.317391303523808,0.589554865974518,0.584119612662233,0.412416480167226,0.465217389366792,0.595877776617071,0.512599303352273,0.0851640423155986,0.594202898483912,0.153941224239712,0.278730903406377,0.401499747067224,0.599709201836688,0.454352440409691,0.63923539127152,0.590517022684698,0.207246376254825,0.521739129788931,0.268807923252515,0.321753663729647,0.640983485142685,0.0233681963508653,0.00713255112723685,0.103864733831831,0.370550389793283,0.540269442172972,0.309178743939082,0.183077525937071,0.136127130767449,0.0392450795408758,0.0545179205988701,0.632050610875758,0.637681159086229,0.581400859105774,0.122866343588444,0.594202898483912,0.621754223081986,0.601533338941199,0.333333332821106,0.231884057057913,0.302769580346318,0.637681159086229,0.639746897471833,0.621739129788931,0.637681159086229,0.48423289277985,0.644183852331884,0.533124380915542,0.502165013693427,0.465305178999254,0.530490260646204,0.38099838973116,0.307246376254825,0.0215911534350283,0.137439610052332,0.633775491624862,0.07390547732255,0.568793407751986,0.215780996778776,0.600802734634655,0.315485775531722,0.434782608584298,0.480847429140329,0.06952257065058,0.251396354475428,0.637681159086229,0.0631778452668133,0.337926429964534,0.628985506555983,0.46996647922319,0.0372395596348118,0.328016029091567,0.168115939868722,0.511594202519948,0.194847116661116,0.186858604323919,0.019610809506486,0.235226464909712,0.594202898483912,0.195768910875329,0.333333332821106,0.598552806441256,0.353155620026547,0.485737277041876,0.492753621696265,0.557988395549346,0.254052898012151,0.0508854885593853,0.394346955273624,0.200017094565571,0.624637680290861,0.637681159086229,0.502898549989703,0.125011914665822,0.326401778195428,0.626967953403451,0.244444884447795,0.463768115652509,0.616800857956336,0.0886741114209165,0.492753621696265,0.0503060681748261,0.644749726350186,0.186639727499932,0.641854693826153,0.439711774037883,0.228139327352996,0.164835084336656,0.131723025051619,0.183351380129672,0.349755805823725,0.0544117727358004,0.597786188449511,0.178034062057765,0.602898549989703,0.536231883323036,0.599328613792852,0.00187125434341957,0.492753621696265,0.552174128780304,0.318840579287001,0.292326978260956,0.318840579287001,0.495763091971877,0.503623187871299,0.614331722040038,0.51594202878507,0.355321056307593,0.58800552248769,0.343235223547775,0.394263812568284,0.537879407487697,0.207087975048542,0.640651372252639,0.553538475188928,0.00374201336292738,0.242884155169953,0.27371585790414,0.286361648455599,0.192243887802813,0.147875386195141,0.500330760097439,0.589926316905698,0.133655391711421,0.633305874358216,0.545927551291816,0.180348400799882,0.217391302499353,0.617720351244994,0.249436369537782,0.138969401818672,0.565217390391247,0.191882714202518,0.449275362118404,0.634991102558552,0.581613807409642,0.453128461728924,0.528985506555983,0.310144926756755,0.646340976186414,0.0782608681621597,0.271250311677577,0.57664646872007,0.523349435509508,0.571714429670679,0.458122662648673,0.633075104638073,0.275362318684684,0.420289855050193,0.51826166088531,0.577718916188664,0.199992168555029,0.198573698148666,0.576445871243669,0.521739129788931,0.490378579907472,0.585006084698258,0.612413267476869,0.0596699182965513,0.465280014290735,0.375467404188092,0.268637540022505,0.632422972547284,0.358756282840628,0.331884057057914,0.606383032311111,0.255232589510486,0.339510832344658,0.268530372826877,0.318840579287001,0.403645130669368,0.323213750564692,0.538952121314548,0.131884053984549,0.0531066603056217,0.394921442908162,0.144927535853281,0.219105278951214,0.354498282824176,0.576157631656302,0.463768115652509,0.367866371402393,0.0255982982698812,0.637681159086229,0.0925295713753715,0.0818859989120495,0.324637680290861,0.567206251637271,0.118196456384097,0.202898549989703,0.598943892073765,0.449275362118404,0.285409118547485,0.543696096067965,0.434782608584298,0.054586504776577,0.587730179762217,0.326243201807368,0.15183205818928,0.550724636857141,0.409033307208711,0.628552582188093,0.530456417780795,0.637681159086229,0.619210757845278,0.376811593423422,0.277733730830004,0.0188381923072396,0.311435443778928,0.0724637671582995,0.451816940309309,0.613043477258686,0.574708849680339,0.16789951661406,0.520128824068353,0.597429615675872,0.0655039980220646,0.43013861959813,0.120289854025738,0.521739129788931,0.405797100491633,0.626443675324734,0.633397219873403,0.135104667474613,0.514336572833673,0.224970337166423,0.300211798353318,0.375274227862502,0.523349435509508,0.344148896908526,0.0234394830404217,0.0417900230659079,0.217391302499353,0.358458232049326,0.190577027053178,0.459246387155025,0.642956361819949,0.357747783891622,0.202898549989703,0.601600168227777,0.607085345272986,0.227163901903819,0.185087348553433,0.089855071194335,0.627775053752377,0.520289855050193,0.581480151909851,0.550724636857141,0.491267504488367,0.351667976380948,0.376811593423422,0.244170795655037,0.0834279140768833,0.146537841573859,0.458251408960904,0.618574186198948,0.209506113603251,0.412816136388868,0.637681159086229,0.543816398823463,0.124785534734638,0.466817090955393,0.533106769512507,0.55376057085,0.0957631001675158,0.516754207356604,0.632994954365301,0.388405797480052,0.356224098900542,0.321900159746316,0.304347825752895,0.282559136424734,0.602276855476458,0.405797100491633,0.0869565206924049,0.149595584161203,0.180354264779346,0.134782606535389,0.1545893712012,0.291510839147038,0.611619879455883,0.381159419688545,0.36380495812167,0.61594202878507,0.550724636857141,0.281159419688545,0.523188405552123,0.0637848286086552,0.610356788114046,0.520263481484971,0.010837092493509,0.371434836482103,0.557321675221735,0.562080956354813,0.602418029450269,0.126086955029598,0.503526992586932,0.527536231817246,0.627812427913595,0.431564350315895,0.117391303523808,0.620536640072741,0.280506662680308,0.590115736555416,0.550724636857141,0.632752989402742,0.616134324079505,0.0419936826378048,0.0724637671582995,0.282963369910571,0.294798885327577,0.634388510030125,0.318840579287001,0.205797100491633,0.639110767365537,0.5375862331014,0.29799934881553,0.260869565150579,0.168037628492376,0.585283804158945,0.476650563466037,0.570121242590362,0.54508062833462,0.223069682505978,0.172660542393718,0.652173912620334,0.238438834611735,0.0477242227622534,0.569140472560321,0.565217390391247,0.583986824875685,0.00291862110879144,0.169341555628312,0.396227834882427,0.166970156800905,0.482091568067755,0.56370350328619,0.555375851323247,0.128985505531529,0.291510839147038,0.620289854025738,0.499263211571857,0.53755592562962,0.602462423176004,0.615281140678824,0.608695652018018,0.00437533851189105,0.485836539544013,0.252110254021464,0.613799601759575,0.0164395255655418,0.619967793086514,0.565217390391247,0.270482325014176,0.121739129788931,0.642918704909197,0.616344604702987,0.613652473654274,0.148148147294436,0.627320296203085,0.275362318684684,0.0478198525475523,0.389492753277992,0.0826086944272823,0.278404081825543,0.157809982642354,0.57384559179083,0.623188405552123,0.632188475860458,0.247871810847774,0.621014491907334,0.0562444671115321,0.219085815333841,0.211277591680435,0.620209339047046,0.446312475852959,0.118840579287001,0.62632304269478,0.292898278816508,0.604704932267503,0.629936117660195,0.376811593423422,0.325734662428251,0.0772003310054544,0.446585260514715,0.534299516663234,0.552137145960831,0.402267945792776,0.61352656917975,0.28825444452302,0.375346355629476,0.64490579384836,0.59855072372458,0.201341894968731,0.315780997803231,0.070700919088629,0.110507245697554,0.152405199690168,0.621420562240687,0.610161477849038,0.13489126021498,0.407908810263415,0.61594202878507,0.0521325051804376,0.15305957943486,0.178954754983033,0.35370124262171,0.162318838864862,0.584057970190475,0.138647340879447,0.507246376254825,0.10466988669212,0.351180341002699,0.0222775443198882,0.378421899143999,0.328985506555983,0.601449275250965,0.570211849473614,0.625106631661865,0.0534212048197363,0.378421900168454,0.0913163187367062,0.014492753021878,0.342797916562108,0.504070904342524,0.636229757579257,0.0593287184921361,0.170070053655719,0.297480872224533,0.2724637671583,0.61814278007312,0.51406689636788,0.434782608584298,0.490945512187617,0.0612495815486178,0.595928322194077,0.508776499944531,0.595610739146928,0.496012421740231,0.581159419688545,0.600107925804432,0.608695652018018,0.256616431294583,0.199313550208987,0.171071072035535,0.52495974225454,0.355401757737065,0.259202350964027,0.638963217184845,0.456926346297307,0.301217970765399,0.414394827433298,0.63939071399103,0.39557759393526,0.117391303523808,0.640832326832071,0.478260869186615,0.554315009903456,0.280073907347465,0.193938490789326,0.330434782319176,0.473892036475141,0.494482890185419,0.611594201495493,0.371234559660065,0.507246376254825,0.373909583337521,0.0021298349389153,0.63912519476295,0.640923059723268,0.392851676366154,0.594202898483912,0.608695652018018,0.558547299176964,0.573913042921492,0.224842060054505,0.014492753021878,0.566622723188831,0.618840579287001,0.0091762750029343,0.629985973779099,0.549471638444319,0.630713366419741,0.559369029765361,0.439695298755258,0.621862522300205,0.597434217526982,0.373840325068534,0.144927535853281,0.610464047510609,0.231589520146688,0.0999298827256355,0.320289854025738,0.0680552614089616,0.252081110330374,0.194637826685456,0.613043477258686,0.439838797217085,0.536231883323036,0.625870493870108,0.561062336816511,0.394373027649124,0.110809178148219,0.528728381710805,0.498621885430647,0.628128911720709,0.63245754380008,0.479726106980561,0.102898549989703,0.456523220247145,0.323671497473187,0.128985504507074,0.620128824068353,0.420289855050193,0.201106050099345,0.619246648595898,0.466867296413395,0.546808346823611,0.271014492419562,0.284143181270122,0.102898549989703,0.362318839889317,0.621473036866144,0.00180918467399589,0.530627916642118,0.449275362118404,0.425373199931694,0.505797100491633,0.18359887305051,0.104347825752895,0.45780804847163,0.408035447223145,0.489745416622372,0.345189603693029,0.149275361093949,0.00909704981287667,0.30119133493974,0.180261981887987,0.269565216656369,0.641340013864767,0.637010467971685,0.215780996778776,0.621739129788931,0.597084655097765,0.544927535853281,0.588447452838018,0.317391303523808,0.0855072449292124,0.618357487365936,0.641441135752426,0.331884057057914,0.621739129788931,0.236684386047241,0.170781031456572,0.502831519909978,0.637681159086229,0.510329707674989,0.0273118587930797,0.636237691981939,0.323671497473187,0.454809929155568,0.582608695451737,0.525952764764384,0.146376810592019,0.334732054811653,0.253157049141039,0.624886015313571,0.238883722563166,0.284057970190475,0.639429502924373,0.288328877313369,0.517391303523808,0.588656719251216,0.536231883323036,0.631803951861154,0.618327067204124,0.0123282428480017,0.0768696759146356,0.623188405552123,0.240951647135384,0.110144926756755,0.604347825752895,0.530595301073599,0.28734840027741,0.534669326417772,0.460241365349145,0.0841180093904194,0.247688459044032,0.590354490876528,0.272100359222014,0.576037837030401,0.449275362118404,0.228138217868412,0.514492753021878,0.536231883323036,0.147987116312596,0.579710143925352,0.339927275283194,0.24469074028981,0.0413809070283369,0.63889857408488,0.637681159086229,0.0579710136241941,0.553825446501212,0.128985504507074,0.0680265889670948,0.354362094872037,0.19275362272072,0.396544390401379,0.630984965787255,0.570934164916104,0.362318839889317,0.558115875635404,0.120289854025738,0.149758453015013,0.537932576693532,0.33735455264091,0.344422772614679,0.351787004714633,0.62175603636704,0.594202898483912,0.405797100491633,0.0869565206924049,0.0272919024129323,0.598878912952616,0.265037422361819,0.616747181645359,0.143478260090089,0.163004369207662,0.00714195972042341,0.638848240570024,0.594202898483912,0.17755165037471,0.111111110598884,0.625410304661291,0.00349439136078059,0.356018513353559,0.517333910490697,0.0497893556950515,0.629666884783345,0.50588768073906,0.462133864324665,0.539255915199645,0.455264460300342,0.58780289659072,0.636123382287215,0.420289855050193,0.382543290157377,0.434782608584298,0.555929468763927,0.634553461600611,0.280083930613551,0.449275362118404,0.195863724170126,0.498002681367102,0.127562824615802,0.484036566255648,0.466666666154439,0.546802912090722,0.195056408685685,0.626154363133157,0.146537841573859,0.0360034083817186,0.508650821874524,0.578040331721343,0.454228450641249,0.635979413600619,0.258565020196666,0.0177421618883891,0.36469388167811,0.342830565937637,0.202898549989703,0.458849376075761,0.173913041897037,0.603682518148499,0.562162602331641,0.355203381278742,0.64521033251212,0.517371397341947,0.350728091318838,0.0619307087845455,0.185185182965533,0.34292736872372,0.553912041619338,0.389902811814009,0.549144502355852,0.0579710136241941,0.45732947234747,0.25917389058431,0.0821743665562704,0.00364167825658031,0.518825792305941,0.560732829115105,0.420289855050193,0.502159707017392,0.613929146122121,0.177133653338192,0.15136875873559,0.546706061155262,0.18526625217429,0.117391303523808,0.547470156939207,0.296234774539466,0.597436994824034,0.215780996778776,0.228496907165737,0.550724636857141,0.0329422471885963,0.596226504115599,0.140096617667094,0.480263088299207,0.645292016393777,0.246376810592019,0.152979064456168,0.253372267636817,0.460237346412835,0.198860255581197,0.524637680290861,0.210950079617044,0.14784020539172,0.50543478257529,0.58695652171686,0.194264895417043,0.399360829823987,0.524798711272701,0.497941427163725,0.534782608584298,0.0869565206924049,0.640753026856811,0.118840579287001,0.123188404527668,0.636233960917437,0.643064234864958,0.0815896835472339,0.638851765719104,0.193199812754243,0.673913042921492,0.263735518524177,0.453559141516275,0.647107422069746,0.463768115652509,0.276387283696222,0.405797100491633,0.639464375366889,0.542479485266357,0.15458936915229,0.181964572548833,0.541464429806419,0.581320450670384,0.552117240803426,0.304347825752895,0.107890499157729,0.497797780155947,0.634584871385791,0.0220518938005454,0.405797100491633,0.63188677596104,0.0999583410564422,0.11594202878507,0.585365925482815,0.539633269039573,0.449275362118404,0.492753621696265,0.40354691516007,0.126570046950663,0.365881402060279,0.110950079617044,0.55950533860317,0.101449275250965,0.420289855050193,0.296425716529066,0.611594202519948,0.602044452775311,0.610144926756755,0.259185806018473,0.340688139936596,0.0893340078548845,0.487951707875311,0.204186794771056,0.592772159206469,0.217391302499353,0.231884057057913,0.503226692092816,0.285597798540814,0.114331722040038,0.597426156091901,0.523349435509508,0.0813372322650042,0.109178742914627,0.546150195036223,0.222930136390897,0.556355859158892,0.482399416745081,0.252533494217818,0.547826086355211,0.28985507221879,0.635602058736237,0.408891914001565,0.626467543073434,0.455256565851398,0.629439664799198,0.391304346957527,0.25420070840437,0.130434780270266,0.526124203182873,0.0275163215375658,0.355812928831031,0.60098769175912,0.50100959665236,0.0338579305297303,0.511594202519948,0.264044907981572,0.31594202878507,0.597607674121491,0.52677652582226,0.133548037040558,0.333333332821106,0.633944169137575,0.140579709588159,0.00390658588512483,0.130434780270266,0.512215889862008,0.405797100491633,0.573701511438658,0.616300271420088,0.553623188383526,0.192319595014974,0.537886186305328,0.509164516310361,0.336560897237212,0.208538527282456,0.479605058421944,0.600633364590475,0.555436721356061,0.601568310755834,0.612965613569101,0.623188405552123,0.586196603659724,0.136165434109201,0.637681159086229,0.590186574533756,0.586813988291485,0.638305821445124,0.327536231817246,0.134783906568572,0.298657474991546,0.326563459706086,0.501811593167308,0.2382758438478,0.615677673337681,0.269856356475369,0.623188405552123,0.613449474855745,0.639149931249348,0.554579765912685,0.499999999487773,0.574411669675644,0.576409426262984,0.0914717981978057,0.379725676709531,0.507246376254825,0.563753269253069,0.559524384242971,0.0127680279899091,0.605562325153092,0.364073832439328,0.542781420790387,0.60722208335737,0.299631391418755,0.640831284961506,0.381642511609609,0.457193520019943,0.204347825752895,0.0434782600900887,0.534803616055105,0.286828160599645,0.468379307741653,0.571014492419562,0.588405796455597,0.516006461871794,0.443484225490582,0.064465900524022,0.256257328117506,0.646479283735602,0.52809135520653,0.0953801353884676,0.299429347412129,0.201465975913653,0.543969293585019,0.616827696624052,0.628237661699054,0.228405327050393,0.204347825752895,0.637681159086229,0.618160616856218,0.603965670293165,0.642974778444483,0.569304963126131,0.559773700693411,0.594202898483912,0.280507534491371,0.623188405552123,0.521739129788931,0.0563866009995217,0.491230161060794,0.0678625020364882,0.562408095516645,0.579710143925352,0.520269281948236,0.58530306493426,0.168890371377478,0.131884053984549,0.584513268651919,0.00692190682228833,0.458326730978048,0.373227089478846,0.306280192412697,0.537681159086228,0.618840578262546,0.632558373718111,0.502983079806886,0.336155489726137,0.566852007449467,0.310144926756755,0.0606481323117839,0.628823984860279,0.0767569387580799,0.606884057314027,0.568486625532142,0.499079104744903,0.504528985223294,0.643782347993723,0.262641835131349,0.641318259566387,0.112721416319461,0.14996370663863,0.108856681975403,0.521739129788931,0.380032205889032,0.442121976141,0.60337469200918,0.479692086884465,0.344473973842779,0.508799598327651,0.581047014455355,0.369335183519251,0.569079505204297,0.0333992513673373,0.151205248573055,0.629963150974329,0.592478143742753,0.321739129788931,0.613075840811316,0.325190699449918,0.51200533673354,0.457780554152821,0.511871372872844,0.311996778437865,0.225436067651432,0.268043538572307,0.305797100491633,0.496316178744953,0.591304346957527,0.584085715500718,0.513043477258685,0.262450411647978,0.634230876140512,0.17573904248489,0.28692612101969,0.608695652018018,0.402403846897561,0.0546550879298291,0.484114146171244,0.0289855065559834,0.507246376254825,0.635972655272086,0.259433968932772,0.35459762318488,0.283664260929138,0.511906041448848,0.00733719007795415,0.268115941917632,0.568273905681701,0.643151854437917,0.254956386242953,0.492753621696265,0.0943783281784303,0.288405796455597,0.0661370332503105,0.114331722040038,0.0456042220775077,0.642495174792125,0.579710143925352,0.636233638214165,0.482786016289877,0.560190667128368,0.136231881274126,0.225625836640248,0.382608695451737,0.563678655134215,0.340624003941774,0.175585428556041,0.26636635439132,0.375019341451134,0.376811593423422,0.235670108148521,0.395946335183407,0.617391303523808,0.534782608584298,0.0931613690621791,0.331790135038821,0.499832469364472,0.623188405552123,0.083093181655829,0.587387121596734,0.581188268336643,0.156843798800226,0.578078950595184,0.488855119272,0.191304346957527,0.584759082491285,0.178937445794174,0.489191059525303,0.231884057057913,0.633428406327431,0.553040007225275,0.624797383579237,0.588453506341626,0.531239679065756,0.281832870684408,0.622101448729729,0.00604067077491495,0.420289855050193,0.599957946641332,0.598528109908596,0.642796295874562,0.489706699400867,0.275362318684684,0.0597223355525381,0.630829155427245,0.190089372210288,0.600614692876688,0.12612093619641,0.385024154032603,0.0752892637860861,0.579710143925352,0.192263286879531,0.513551241125494,0.0974718672665506,0.616908211602744,0.0894507045293699,0.166818468847143,0.579710143925352,0.474407171294472,0.252308169475112,0.0791113972003678,0.62817409325221,0.365113972700307,0.314170692082654,0.238373181399306,0.504830917673959,0.00730957794683947,0.251028886624639,0.635277509396223,0.408248861653962,0.220937788925076,0.634110918626293,0.632263218036167,0.0695482045594121,0.626226339280816,0.626331519034069,0.497020165666025,0.451751904843144,0.242965341166561,0.63417569592984,0.330434782319176,0.39684935318944,0.527554855381655,0.235537208696396,0.328943601231038,0.621420562240687,0.617767794772766,0.620289854025738,0.553682413141879,0.589591943043835,0.527474126291903,0.549105963389488,0.309623914640047,0.17566234769827,0.183574877244956,0.0629002272271553,0.246376810592019,0.618357487365936,0.633316744848449,0.305797101516088,0.0987976695865371,0.246376810592019,0.304347825752895,0.392851676366154,0.615780997803231,0.640684046215084,0.312487452349148,0.3389009416,0.624956382042688,0.627151264228999,0.529760597813652,0.583496847593688,0.521739129788931,0.275362318684684,0.635501757436899,0.630053699463656,0.231884057057913,0.0745913877380932,0.480650538141514,0.329871174394964,0.544589739287821,0.446898734473529,0.38695652171686,0.121578098807091,0.18679549073502,0.624679240374527,0.110668276679393,0.621739129788931,0.585425661444129,0.0204515365608516,0.105958130449018,0.59068079920549,0.248125674853218,0.0106183160660959,0.378282501574869,0.186935310379542,0.334837782648241,0.11594202878507,0.534661643006524,0.467957561200445,0.388405796455597,0.614656220157311,0.0690398547044395,0.565217390391247,0.314492753021878,0.552131003329652,0.139130432800511,0.196071353504501,0.28985507221879,0.624827973800551,0.0413686617197177,0.077332672129695,0.612017924210073,0.440837354856392,0.636060839319658,0.181926690258017,0.0238448966982261,0.490959255249202,0.565217390391247,0.592167083399526,0.123438551810979,0.179228226029527,0.458937637981901,0.195942195361426,0.0596208438366846,0.621739129788931,0.572626437267872,0.521739129788931,0.271717847252002,0.276811593423422,0.198067525260213,0.610356788114046,0.0794175760163158,0.61965271892925,0.393231075017928,0.288289844559776,0.384372145900849,0.553795536517907,0.634096352927477,0.446017592676,0.106320450414271,0.562189616181133,0.127536229768336,0.614492753021878,0.357560619066992,0.637681159086229,0.0579710136241941,0.525188590097417,0.112520128360503,0.0686044460335788,0.238399252750351,0.164786948277417,0.324954661983023,0.396744830111735,0.372950024644798,0.412074784526671,0.255818287754262,0.590967971310921,0.197321532617623,0.346361146677622,0.594202898483912,0.591375202351599,0.510216224715315,0.183045061987867,0.424539460683744,0.555330985323834,0.399712704447762,0.641625215943554,0.625840369775743,0.634720334023908,0.547738012948761,0.536231883323036,0.619323671208065,0.209989049807181,0.623188405552123,0.0710698201517294,0.18560518690907,0.624879441386908,0.347826086355211,0.19965298795109,0.0260145148038999,0.597101448985842,0.404157174708468,0.132045085990843,0.403450932962309,0.572463767158299,0.410700622816291,0.508799598327651,0.2095892583575,0.632608151978448,0.0484079418689087,0.159420288362932,0.639114796546395,0.282608695451737,0.365981556862576,0.508695652018018,0.555072463122264,0.629124223887105,0.514609108552904,0.386470144369146,0.53273695975797,0.615809850549148,0.284766193232281,0.169512247219228,0.159420288362932,0.105314008570569,0.581175251613534,0.420289855050193,0.629653971530175,0.533333332821106,0.614376757074498,0.428664921856173,0.575362318684684,0.466741878554916,0.637681159086229,0.206763284333761,0.383712248442427,0.475040256721005,0.562340665899534,0.461841630387904,0.600832315767959,0.587596805987504,0.478260869186615,0.566790396735808,0.497210314727584,0.334877707701994,0.52495974225454,0.114492753021878,0.617592591482767,0.583099603963177,0.40673724371636,0.603885834528027,0.181995324634011,0.403903588330283,0.0026719989745617,0.24867062950383,0.0651939303755704,0.544747393666531,0.452173773294477,0.562170176126221,0.0780342300683579,0.403282465462836,0.437594235118101,0.632535725070663,0.630789233446856,0.538812192053359,0.603849295297497,0.639723504045721,0.564326800046793,0.352738316545951,0.644965307502975,0.0426019844530169,0.328327571953021,0.200567979785211,0.402006453696644,0.620542902565136,0.0601823239682078,0.634009317293772,0.595148637280938,0.134683409598361,0.180307681793634,0.542590050578667,0.547315306493375,0.307529934083605,0.619095758692451,0.437365310441112,0.0663118062692804,0.18586346324148,0.138204505935502,0.430346638225342,0.572292651443083,0.0598231746906631,0.00760261198282486,0.516667819178354,0.28985507221879,0.495379682579431,0.0113495329966299,0.0792644866083418,0.261505982104229,0.602301918763949,0.636919825232513,0.61271047206848,0.604918576176202,0.63910166815771,0.102898549989703,0.0817456998226659,0.645043352521065,0.0625473752734693,0.617443633701134,0.603641478487888,0.614760669474267,0.394862533681898,0.344259453000743,0.0246402465502175,0.541493100199376,0.503875259080786,0.067822830023079,0.461344260639832,0.0652157010652271,0.00723807304840356,0.241740561362114,0.612785741838427,0.00311519350215345,0.625154829188394,0.625473861839132,0.172900133694429,0.0467216748713718,0.624016166081667,0.336395419096942,0.144158484781309,0.581923431467194,0.619222718355453,0.548437871316856,0.59498474499675,0.597752645749368,0.633888959217713,0.641858430012929,0.62390282449676,0.614349893819867,0.061298971540573,0.312339243443999,0.0716820415311326,0.636586277081246,0.332709159127166,0.628573536387248,0.626498499025124,0.545792803723172,0.0342179741563443,0.065728472467259,0.0532536880143487,0.447395125867236,0.62251580895159,0.618139320489149,0.61014358164756,0.385363167650405,0.631310702470421,0.451677815245164,0.339038369142486,0.613063221576683,0.62606992141909,0.114411554731812,0.00409107380927641,0.511519868077263,0.402789624829581,0.44217952796461,0.470080826822744,0.643240492318981,0.0905136952554003,0.539660380212274,0.510877923165334,0.57412565417972,0.487958965113348,0.354729889523918,0.63017282921837,0.557374241023673,0.453627047504882,0.0747865976065273,0.399143553198449,0.640147536145661,0.247883388211842,0.0703463685888298,0.409326008296875,0.0736544408124447,0.637035721807774,0.198257387474419,0.628634947332214,0.639176789381706,0.611587583517272,0.0571326909653216,0.542999138955957,0.000894728629751811,0.0579710136241941,0.330165500268494,0.0096262258101499,0.641439168799146,0.622361185934731,0.502531147704023,0.0554154854318271,0.290587058514903,0.525719568110741,0.571838670430555,0.44699349142331,0.634831386976718,0.63676571649198,0.278342154555341,0.447126644940234,0.287553795275794,0.553479933741949,0.616251071976732,0.00461585284640627,0.634201460968891,0.624067680792946,0.454737616986723,0.459317182106261,0.635260854834002,0.530236373078298,0.644273382513107,0.168124027939629,0.0672615476113386,0.634224575743288,0.629881621785352,0.600791563979156,0.313435612957399,0.326163051534596,0.398778261289725,0.40704970346489,0.431514629425029,0.284582709273866,0.176567566233284,0.471745633540438,0.541082604221145,0.324914189870389,0.631002961360852,0.0793088557471604,0.316316446537447,0.559969474012004,0.00693893121270363,0.620889317869106,0.631187579390768,0.640056017497607,0.339771605273496,0.0692969897941658,0.612392041797184,0.63513959933551,0.401984185121939,0.454429621812356,0.327007819038823,0.454430103306128,0.642433810972081,0.626993760445149,0.627094957118011,0.382521645475665,0.439020681929794,0.285280972565786,0.293958336528352,0.256935040845475,0.643864106660582,0.0593840892514066,0.518213349644293,0.276132263081271,0.497077957212066,0.582473350625926,0.624520532856249,0.00888206079498126,0.450484793540542,0.643412868113642,0.101508527669598,0.330434782319176,0.59691675514627,0.636108852444318,0.629830791409901,0.18957777380904,0.0200363598484885,0.19804677697648,0.636700846987498,0.211406815388619,0.460561697008611,0.642301303886158,0.595349730593478,0.0053287515000708,0.626331213746528,0.36459390205759,0.626762074862385,0.207834923507492,0.151665751265051,0.359631351669907,0.270000227838755,0.594996329532002,0.0305933812452419,0.63203430667709,0.197807925332159,0.404967703907721,0.20127573260225,0.341716454915438,0.570939645749461,0.638299992297124,0.630861183983145,0.638582273655182,0.0598656967374177,0.0682507499291103,0.0633781179910322,0.504982345416194,0.215381448124891,0.608099260514695,0.575844475278486,0.642144874755428,0.459181285099295,0.121739128764476,0.395896908311077,0.560904217335306,0.00281428653077622,0.619061617710685,0.401457908331843,0.439780099028517,0.339032413986542,0.594202898483912,0.397250944606262,0.582474843256618,0.642592770506249,0.541494127727574,0.0379815845638342,0.606441222370082,0.00702446499562307,0.502781004042161,0.455874643014627,0.0459187891296286,0.230300501901936,0.636641944932418,0.400214734440869,0.639270642762324,0.0222450434903102,0.54819689905103,0.598526111197217,0.0762753230764301,0.0550605056854529,0.60932699484688,0.638561798900889,0.633270587011492,0.0190822153995579,0.307367149235091,0.472527086662619,0.515607850594081,0.544797581708802,0.551523743385006,0.603013022572746,0.28827214402917,0.459722037436182,0.412093729769898,0.516743312279455,0.640517541571071,0.591767317561216,0.0882748393698361,0.63665496882671,0.636541032033545,0.45836025216464,0.438304936316148,0.451120722853691,0.067095705789603,0.600176429050208,0.6172524724782,0.23167356437228,0.313124092633952,0.610231302641548,0.397813782140439,0.408160013759658,0.0185879897033684,0.593444259970863,0.54319162479899,0.544505259668925,0.36259639338832,0.0795318744420371,0.0815829498056164,0.631373759714303,0.629264176710755,0.615506442883524,0.328242095539572,0.00909586964090902,0.472448120659635,0.624195193661559,0.599330365610617,0.646082340270358,0.360318664564117,0.401744717780263,0.454272742945955,0.283015616082601,0.409983260612919,0.628840657862686,0.452783210205644,0.540413569650067,0.399828367447321,0.0671185808415698,0.628045605102596,0.585811977214936,0.63693505887588,0.0655247565503463,0.256198295956662,0.60080524967127,0.624012345889595,0.451777247806804,0.587403166608329,0.0751759826440141,0.638468435209681,0.169090216904031,0.639895360441781,0.588378778508286,0.148297660330588,0.643138392076957,0.139106630616921,0.628927520363524,0.522408204313748,0.492906656808133,0.45278206691405,0.561650982416841,0.346972799484593,0.480351829650208,0.201286013006499,0.639910966986707,0.169554445538255,0.641013684022253,0.614721723799335,0.0322965998969009,0.151026694291296,0.627780829628725,0.626168202493496,0.0626391356928639,0.00668698088888729,0.491258320250789,0.069535387604996,0.131177601200694,0.0310156277204078,0.365526381335712,0.064848903207899,0.0282288524119452,0.458896604468018,0.578622326560898,0.457105883031251,0.0717340633475539,0.607557060623129,0.480616644053363,0.647587619905907,0.57103373885251,0.519530213595862,0.630412904061762,0.0592972400684815,0.0512778240267912,0.416946904237333,0.00803498929183464,0.369446267205706,0.53925609857706,0.625106469798001,0.595071883075938,0.0643973214685892,0.635685339742978,0.635171319530505,0.506497606315182,0.630300800018293,0.50237409263139,0.456744282233291,0.617300102456752,0.226896997612805,0.000858284673521566,0.414124288376537,0.10441501257421,0.000966024539401783,0.212969754415536,0.546219964508172,0.545494613606012,0.0511595292027663,0.616645577239474,0.504202717872525,0.0708943433322891,0.410576971117945,0.0214230721550277,0.558745680757561,0.538787330583471,0.0459285603798261,0.0426454694873146,0.475291001261483,0.634519324716664,0.641809627033593,0.47876797330451,0.458837255750631,0.38969284364925,0.451495977585666,0.639281319630594,0.0762675279996056,0.337285764596691,0.611713033133851,0.367376068343759,0.619127134670622,0.605476660239954,0.301980177454632,0.641073559309424,0.635447284100063,0.637681159086229,0.46529253210434,0.0588186403818602,0.00483834906931813,0.0627405341833276,0.022830216188757,0.593350414785883,0.642615488816626,0.117432580857941,0.112721416319461,0.206519164942689,0.504301999839304,0.625494921557135,0.511119147447049,0.400329642417216,0.0657197348919881,0.0724637671582995,0.112949648464983,0.462902560935265,0.115143834022008,0.362993239530356,0.51451216131869,0.63848095404774,0.393106555606338,0.366194350473764,0.625696756574974,0.625724959816528,0.0742928882355736,0.639905269993381,0.455456948192284,0.550000803172589,0.631910436769864,0.545793739050435,0.0173029668324655,0.549082869104187,0.187500558455941,0.629332775230829,0.171088398640126,0.641553186524243,0.441839297294467,0.0764672833741338,0.647364999723961,0.476184504131027,0.027505454120697,0.00574682946852113,0.449275362118404,0.0639644811059949,0.640371652031664,0.588961172885225,0.309363524857316,0.0739138338006231,0.0639713992494823,0.312269822286693,0.631662378349958,0.444125353912008,0.275205138628562,0.334819373194891,0.00876043956611347,0.404671884379044,0.641703462779246,0.599372313962665,0.0555216107568905,0.197709306187657,0.645037162764964,0.402577426426651,0.537067572108533,0.462183564726434,0.624008189676337,0.636833789466726,0.177505964811431,0.636847931041241,0.460212063892011,0.616161933137255,0.631187612173322,0.353812238205049,0.0747045848748689,0.600352261355475,0.399675713432651,0.547974393608025,0.0114328826418453,0.633337710316607,0.516956659096253,0.182502108097544,0.548234777244027,0.634994460721495,0.114331722040038,0.294017207849787,0.120289854025738,0.00487752114876874,0.621962705787237,0.612329252960467,0.233527448571778,0.22675646289881,0.287002612964253,0.183468015336867,0.404266177727158,0.267494915348939,0.577211014020453,0.407283234090808,0.452506714968483,0.160936406730615,0.0113420503785294,0.625673492230171,0.487394085840689,0.37447428025722,0.023917168913332,0.620512020374194,0.215217389879019,0.562862339814065,0.639886907664954,0.518360883433708,0.410693472121557,0.637681159086229,0.631869827380283,0.00966703701733336,0.640066707683789,0.442658808913696,0.057046936924613,0.635133571443272,0.643639535916633,0.117448204818599,0.38354325027535,0.210187292061921,0.640268439231691,0.482571961574789,0.0679423060435265,0.46295447108611,0.478621312350613,0.594202898483912,0.641961264789068,0.526682096698025,0.640605016695899,0.328777665159458,0.616730074274102,0.626624689322547,0.34570830156627,0.174743801005877,0.0962873639038647,0.400617938349599,0.302519031476713,0.599909194884737,0.6128698454824,0.0152298687633405,0.638573009510127,0.641956081047613,0.588684486075011,0.45159170162081,0.632964501420934,0.0364042898513417,0.498690388676422,0.030586624965618,0.36895235806606,0.0531271463289179,0.442515144490185,0.0288654394250973,0.591242347975487,0.643338286777342,0.0112703446869462,0.613986839320498,0.270367709007457,0.620716400137838,0.481148358649712,0.510670331735788,0.0810053119724666,0.617408781747714,0.0624161774408223,0.512302320042907,0.00891020052033496,0.28897961512113,0.00601133551077111,0.312651732901718,0.462943008460983,0.456095403811052,0.151197966748102,0.539968364117638,0.487449555972078,0.437833146180802,0.645568460408196,0.0168518911738432,0.28985507221879,0.623188405552123,0.566742429711616,0.406885058206399,0.497850848965208,0.631365021114578,0.397884874183577,0.643616605544106,0.4072445373584,0.636925555008394,0.516323941449005,0.598681608074048,0.632269320713607,0.00176439448424093,0.629497631527016,0.178514137983801,0.0161482996923367,0.00499065169598037,0.225591718196489,0.181945834245482,0.575681216107385,0.404597947424835,0.370594776347834,0.61174984999164,0.450594125409233,0.0118860983866137,0.20010818601596,0.563613754896087,0.638349743921635,0.395282066376211,0.527971603607732,0.356459401833321,0.381378443009573,0.481344318419084,0.367585875669109,0.617570353641706,0.486694418021193,0.558345352493548,0.517768423788034,0.264761409642884,0.00702554477101709,0.166742566988564,0.640946587352964,0.619566365582465,0.106185890320862,0.559206057441613,0.0607355060155834,0.310656095911428,0.447701881451255,0.0761244802979049,0.109542744010261,0.0923253667935034,0.257803202800269,0.37761782298574,0.645745853982629,0.627251012322727,0.0672828890544203,0.456029020162326,0.176652503783491,0.585462841983384,0.633018634638767,0.505662923544331,0.456460710062143,0.627168602102593,0.597581960305182,0.00274488074029319,0.453194630242134,0.135392393810109,0.129000453351997,0.113469096239162,0.588809880371028,0.268549778050324,0.515974295014492,0.619151702121973,0.592425906790817,0.0337068009038519,0.393851503304999,0.132449801994907,0.628310668448276,0.574973785993619,0.629119509345963,0.605063260956726,0.457353422052556,0.531430607737443,0.633520492523462,0.45791858202584,0.535205485099187,0.242573624469874,0.430978568066823,0.636931647441286,0.543839760491475,0.516320183748678,0.0858239571897536,0.627395987023968,0.489287387988798,0.437346417445081,0.644513076259301,0.0177012543824513,0.306419691402856,0.223548009687614,0.591192600448795,0.178730459817434,0.399277574428616,0.633376461345122,0.00176845747210874,0.222001919869335,0.231819909794088,0.444521390734726,0.613439212891682,0.424941697507111,0.407208449912452,0.603811989774752,0.620873485944116,0.405797100491633,0.120272365557284,0.514304593451605,0.0132557883516474,0.0306667772872995,0.541454619626938,0.185694697625651,0.162292220454935,0.395805548453523,0.461332900460188,0.523435696655359,0.0202990269943131,0.192498754749539,0.177095380730085,0.460617666049504,0.606936369051166,0.596772234278519,0.644201585645044,0.445120101603791,0.61077551353795,0.63431874977827,0.330317250714002,0.622304483384178,0.384566419417566,0.0933237758868595,0.0139521492309423,0.620527639212578,0.186619964741748,0.314529368062065,0.0302855161766387,0.402209105204986,0.636992319754318,0.00639884169809413,0.501583129494994,0.441794088102685,0.0891324535376695,0.544279444212354,0.401504370431886,0.285603147219497,0.640750821205555,0.0739852444492143,0.403274568964983,0.596763910583001,0.532112277934432,0.495142146335116,0.541609589933985,0.465123014538664,0.514924741038051,0.62099393212329,0.549237012676184,0.394225897494914,0.271351949890472,0.505131144407327,0.184647525506697,0.291386063621739,0.455467178398247,0.542774028324312,0.289393066651554,0.409926221016726,0.493682035937609,0.346446361855088,0.434782608584298,0.628740433397461,0.595239803516529,0.00606415537750736,0.50187410335231,0.515104840197698,0.452876665073332,0.638134325657165,0.598384343039602,0.0643462595663464,0.62965710123969,0.63996699749489,0.00874293880420079,0.607555131574678,0.0611995543457564,0.0687470593664302,0.083445199703281,0.286404612042387,0.541047760463364,0.0132560342208073,0.639347295546296,0.60173310558473,0.618707920581762,0.247566332758932,0.563236854889651,0.470659060888606,0.642294644929743,0.636051885584418,0.547852004038032,0.288747009577925,0.0023021502907408,0.599934023572071,0.00166943571685761,0.438214923616699,0.643493522418191,0.639560811398142,0.613561001106688,0.276762099961529,0.010280716195964,0.635904960321174,0.450730837882246,0.631942229701152,0.630611456726316,0.405162168997491,0.44295703181341,0.443857996811958,0.0687123621056903,0.0602929527967171,0.400958569581582,0.63848227866784,0.642112989623205,0.597616236514986,0.178169082131394,0.0664451380413446,0.455284479172234,0.525934502832531,0.397705411210382,0.616776389877104,0.601481503575557,0.617836089029756,0.478517012604062,0.639733340861028,0.620067982720275,0.586860943154302,0.271777410080449,0.0083068796045211,0.296455290491185,0.440457720580006,0.404384200046197,0.00149212204990175,0.0616197775226271,0.378949978974601,0.563912624226802,0.478505808141554,0.0102243506910506,0.0564253202699361,0.400917311712091,0.0765379697331581,0.462398050737007,0.0662914308871063,0.62771855609279,0.0782155585738044,0.639007957176313,0.327972588108827,0.351173953526815,0.529162328484619,0.644928835886464]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1402.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1402.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1402.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1402_field1":[0,0.41869,0.41274,0.364443,0.256506,0.830426,0.560199,0.57696,0,0.576168,0.577586,0.833678,0.413733,0,0.839834,0.581151,0.58703,0.211003,0.834458,0.599808,0,0.827999,0.577622,0.803682,0.809708,0.82393,0.809284,0.810736,0.822726,0.809037,0.81053,0.824736,0.808143,0.42983,0.80153,0.550579,0.425831,0.546959,0.423838,0.576323,0.748755,0.810561,0.804024,0.809274,0.809564,0.821532,0.405089,0.809464,0.81003,0.541751,0.819996,0.806138,0.80951,0.0883424,0.810271,0.412584,0.820692,0.545956,0.542806,0.5873,0.114566,0.240725,0.536602,0.751072,0.767087,0.790816,0.153085,0.774878,0.790673,0.778091,0.796172,0.777246,0.114258,0.758448,0.428266,0.779673,0.793937,0.780917,0.355956,0.79268,0.776723,0.792468,0.248923,0.750381,0.812595,0.615136,0.78538,0.772437,0.788615,0.777483,0.578151,0.198007,0.639441,0.542907,0.622669,0.775417,0.775678,0.131939,0.141268,0.63214,0.543005,0.541397,0.793342,0.65218,0.773125,0.793145,0.137931,0.649817,0.776689,0.362978,0.777224,0.790767,0.175713,0.176142,0.546463,0.776124,0.177876,0.174697,0.548946,0.776566,0.186499,0.657812,0.644512,0.780553,0.739322,0.744434,0.645078,0.206838,0.205831,0.205429,0.576575,0.631419,0.236443,0.635735,0.204919,0.207116,0.207743,0.207926,0.577655,0.629748,0.739523,0.625461,0.649233,0.739144,0.242929,0.190301,0.238595,0.245263,0.239142,0.683343,0.250006,0.289232,0.241358,0.360071,0.734518,0.239739,0.663471,0.667043,0.646439,0.685502,0.241295,0.246788,0.681679,0.676782,0.284591,0.667999,0.505721,0.50906,0.681188,0.509929,0.279584,0.271023,0.6744,0.634235,0.640503,0.275892,0.273944,0.79545,0.274366,0.280928,0.799621,0.30287,0.278201,0.762408,0.743406,0.741257,0.759382,0.741349,0.742746,0.509665,0.308529,0.804779,0.799124,0.805457,0.311365,0.31201,0.295794,0.79649,0.309218,0.309836,0.764993,0.735579,0.631403,0.312957,0.312019,0.3085,0.740353,0.759239,0.745674,0.738023,0.628945,0.649701,0.644571,0.340057,0.64655,0.321516,0.332204,0.347826,0.344337,0.343756,0.347194,0.655847,0.577303,0.346436,0.345442,0.79592,0.796651,0.805312,0.797336,0.804767,0.46542,0.288223,0.377717,0.212292,0.488347,0.810019,0.671674,0.379278,0.38077,0.379123,0.377539,0.37931,0.37931,0.382779,0.683312,0.65553,0.377937,0.757633,0.738987,0.37931,0.755032,0.741121,0.371231,0.766172,0.472741,0.411715,0.412734,0.414208,0.413589,0.413726,0.413049,0.412194,0.41443,0.775212,0.416306,0.413462,0.413858,0.411113,0.472398,0.476794,0.773593,0.724213,0.706897,0.703981,0.767759,0.776699,0.653549,0.438107,0.448788,0.444992,0.444681,0.443297,0.449437,0.446519,0.683303,0.461321,0.712046,0.680131,0.447922,0.449031,0.445853,0.442244,0.436572,0.443726,0.651968,0.714134,0.70254,0.578501,0.659595,0.234371,0.680759,0.679743,0.670038,0.704213,0.726052,0.483619,0.731123,0.223424,0.484352,0.736499,0.457572,0.704573,0.483252,0.479458,0.739603,0.471241,0.485799,0.473128,0.486118,0.641801,0.642647,0.646437,0.650914,0.70765,0.723513,0.707413,0.74158,0.707285,0.729327,0.732837,0.659179,0.64987,0.728449,0.526742,0.719425,0.701142,0.730502,0.518888,0.517392,0.733267,0.738481,0.653628,0.714964,0.689278,0.709846,0.517241,0.551724,0.692577,0.725379,0.693761,0.580144,0.702957,0.561416,0.555884,0.553854,0.552832,0.552305,0.187484,0.18658,0.723975,0.694122,0.598411,0.550124,0.553151,0.554952,0.553632,0.554849,0.697624,0.551944,0.707691,0.701936,0.690359,0.472468,0.683184,0.688685,0.694227,0.698273,0.588275,0.586489,0.586491,0.585365,0.582601,0.586718,0.588526,0.586327,0.588621,0.586293,0.587891,0.586263,0.586332,0.588092,0.589471,0.586556,0.468821,0.612667,0.689359,0.672174,0.67242,0.680669,0.686758,0.684907,0.456527,0.692353,0.624216,0.620821,0.677371,0.693761,0.700092,0.620843,0.621611,0.621647,0.620693,0.621402,0.630984,0.703149,0.57786,0.416767,0.617295,0.705004,0.663973,0.693215,0.657624,0.671637,0.687305,0.671304,0.672657,0.662826,0.655058,0.665181,0.437507,0.437696,0.656305,0.656493,0.683361,0.651878,0.659111,0.651182,0.694373,0.666185,0.435753,0.184314,0.660485,0.694124,0.668809,0.218255,0.666024,0.701709,0.691345,0.696222,0.691727,0.698186,0.438845,0.671915,0.697417,0.691451,0.700342,0.694669,0.685605,0.693249,0.678095,0.68988,0.681094,0.671389,0.439669,0.724138,0.676172,0.655342,0.674847,0.665592,0.72352,0.679339,0.440742,0.421665,0.702163,0.662576,0.725222,0.724686,0.721752,0.728038,0.726435,0.72868,0.438107,0.696773,0.591602,0.671276,0.724138,0.691448,0.672209,0.438559,0.655974,0.744423,0.756488,0.443415,0.440621,0.422687,0.737663,0.758732,0.759366,0.755559,0.744843,0.661605,0.761409,0.759798,0.435789,0.449859,0.67029,0.76209,0.756322,0.657116,0.665851,0.436931,0.637226,0.656879,0.225284,0.675142,0.438022,0.790333,0.792388,0.793642,0.795404,0.790149,0.644112,0.655859,0.660631,0.438943,0.791184,0.79378,0.422364,0.793378,0.776269,0.636946,0.660438,0.438167,0.439455,0.715717,0.718861,0.822558,0.821833,0.814058,0.820329,0.61625,0.812358,0.82615,0.821359,0.808888,0.770266,0.65914,0.657622,0.637488,0.638435,0.577844,0.641064,0.638943,0.655022,0.662995,0.39755,0.411566,0.670008,0.599235,0.594955,0.632852,0.639213,0.599208,0.655172,0.400267,0.405503,0.723619,0.828882,0.63374,0.594901,0.656929,0.590625,0.636688,0.656584,0.638237,0.394215,0.891131,0.636084,0.616519,0.603554,0.629502,0.650301,0.643231,0.638229,0.65473,0.641419,0.640559,0.183745,0.402839,0.642406,0.604127,0.630654,0.610258,0.604904,0.619435,0.596782,0.606481,0.612137,0.607829,0.179548,0.603277,0.608174,0.6064,0.619915,0.902289,0.627479,0.60222,0.616597,0.621159,0.632577,0.59968,0.603772,0.911975,0.621558,0.603584,0.603554,0.623758,0.60478,0.618706,0.603831,0.617466,0.606613,0.603349,0.60498,0.60415,0.6222,0.60526,0.213934,0.602583,0.602431,0.602124,0.61653,0.631612,0.605976,0.237401,0.628186,0.629824,0.602228,0.620557,0.602793,0.607354,0.407362,0.617986,0.886907,1,0.598856,0.805342,1,0.406928,0.595179,0.58201,0.599945,0.57062,0.566541,0.588262,1,0.792059,0.56984,0.588557,0.568856,1,0.58767,0.570403,0.564621,0.639415,0.586635,0.567083,0.568965,1,0.58642,0.565439,0.130301,0.585511,0.56769,0.595195,0.590523,0.587306,0.71643,0.720098,0.710083,0.698861,0.404859,0.603297,0.612972,0.703213,0.69212,0.586715,0.565689,0.405093,0.172789,0.568308,0.159276,0.403429,0.172942,0.811716,0.405905,0.806624,0.404167,0.178239,0.585607,0.816659,0.405022,0.387842,0.568965,0.56964,0.396411,0.166532,0.405,0.167305,0.405054,0.162809,0.405032,0.178106,0.164998,0.413701,0.178544,0.712358,0.584131,0.177001,0.405082,0.38758,0.566994,0.570877,0.591571,0.396087,0.203219,0.190823,0.207828,0.190151,0.203871,0.189287,0.190795,0.206112,0.190796,0.192329,0.189609,0.405187,0.405822,0.405591,0.413793,0.389399,0.409476,0.718922,0.405739,0.209062,0.195212,0.19072,0.207384,0.190778,0.189401,0.206278,0.191135,0.189267,0.206409,0.190969,0.189413,0.202315,0.19044,0.399417,0.209343,0.404902,0.715584,0.188196,0.404578,0.568838,0.571878,0.584537,0.228941,0.245164,0.231174,0.224381,0.238881,0.224703,0.227108,0.245145,0.220898,0.224541,0.718124,0.224875,0.223539,0.403199,0.226459,0.224138,0.226982,0.241434,0.569248,0.605149,0.579924,0.576456,0.226429,0.223991,0.241394,0.225977,0.600919,0.622419,0.226526,0.598713,0.599104,0.22227,0.218543,0.809266,0.223728,0.224856,0.241271,0.229129,0.190318,0.2438,0.598941,0.590637,0.590662,0.574071,0.592472,0.570335,0.261651,0.367887,0.255947,0.258038,0.594971,0.599353,0.599299,0.603557,0.37069,0.37056,0.599506,0.365433,0.274603,0.259826,0.276401,0.287331,0.599456,0.590595,0.271381,0.603493,0.267969,0.2636,0.276257,0.258591,0.26012,0.600839,0.600953,0.603364,0.592314,0.595816,0.596887,0.794414,0.6032,0.379605,0.602739,0.577239,0.797782,0.258713,0.259233,0.278763,0.259046,0.362829,0.605027,0.372234,0.372054,0.296553,0.293103,0.310205,0.296156,0.293503,0.609655,0.625191,0.556707,0.597654,0.814376,0.358024,0.361361,0.29693,0.601685,0.295649,0.292795,0.31084,0.291606,0.378768,0.309745,0.600205,0.606266,0.614411,0.294716,0.589427,0.292802,0.289658,0.293103,0.804742,0.314892,0.703122,0.329921,0.370332,0.710385,0.369535,0.290698,0.589776,0.295241,0.296029,0.311993,0.372248,0.307198,0.553806,0.606769,0.544092,0.369946,0.373596,0.319644,0.327587,0.342464,0.327587,0.712205,0.337271,0.378675,0.368244,0.720966,0.695644,0.55564,0.358841,0.808495,0.565347,0.328169,0.325216,0.340519,0.331011,0.332133,0.348198,0.812007,0.329803,0.34785,0.557157,0.322375,0.327587,0.32783,0.561577,0.798629,0.537005,0.340117,0.357646,0.309855,0.561146,0.331124,0.558488,0.345598,0.329468,0.328537,0.345026,0.590577,0.56788,0.533473,0.553124,0.538999,0.558491,0.357833,0.587831,0.371982,0.716167,0.358767,0.711138,0.577491,0.577664,0.535186,0.715204,0.720192,0.588974,0.373621,0.588511,0.604398,0.379586,0.36158,0.358939,0.377036,0.361879,0.365594,0.37953,0.363326,0.383311,0.377401,0.362069,0.363269,0.379677,0.361958,0.828574,0.614553,0.546528,0.362069,0.363304,0.534241,0.577061,0.621728,0.352935,0.370077,0.516522,0.357754,0.37938,0.36202,0.360656,0.380561,0.358728,0.577908,0.536501,0.715829,0.719934,0.69438,0.391422,0.32889,0.335214,0.394741,0.387957,0.39274,0.40944,0.565619,0.698291,0.41337,0.395508,0.70746,0.413042,0.700561,0.397435,0.396954,0.39649,0.413568,0.396436,0.394104,0.414508,0.395569,0.39602,0.399152,0.39403,0.715803,0.395449,0.395348,0.583701,0.396804,0.396505,0.410249,0.398181,0.415514,0.396916,0.398367,0.412923,0.336973,0.723982,0.391436,0.414189,0.706025,0.715755,0.415491,0.397675,0.396732,0.409121,0.395742,0.39782,0.338366,0.394764,0.715591,0.697666,0.171507,0.174092,0.425959,0.428902,0.443921,0.433062,0.430026,0.445725,0.429279,0.445195,0.43361,0.447644,0.430929,0.429785,0.452223,0.432873,0.722942,0.768256,0.440199,0.430179,0.577737,0.451535,0.457662,0.435421,0.430575,0.448276,0.431792,0.433523,0.448276,0.430244,0.431286,0.425945,0.444237,0.429829,0.429811,0.442226,0.426446,0.551898,0.45326,0.550285,0.56803,0.44831,0.335659,0.461364,0.460802,0.174532,0.471917,0.462847,0.479036,0.465724,0.468508,0.48573,0.461196,0.721646,0.49449,0.328883,0.556609,0.530206,0.175309,0.414883,0.419039,0.173812,0.538109,0.417634,0.465651,0.484134,0.465517,0.550407,0.48342,0.465858,0.467753,0.417072,0.422988,0.427449,0.457279,0.428009,0.426969,0.417367,0.42617,0.552044,0.513833,0.339297,0.523391,0.425917,0.501254,0.426752,0.500183,0.500422,0.516406,0.501265,0.497957,0.516158,0.506822,0.534281,0.533478,0.551731,0.322872,0.492249,0.532248,0.422385,0.502283,0.524376,0.521528,0.495021,0.540569,0.503557,0.344864,0.580802,0.536462,0.756693,0.552287,0.736189,0.535411,0.545998,0.559131,0.334845,0.567897,0.738951,0.557469,0.537712,0.344019,0.741568,0.741752,0.578159,0.199538,0.193009,0.344391,0.829113,0.831206,0.331497,0.384968,0.579236,0.57733,0.567429,0.303974,0.304129,0.57677,0.828961,0.581044,0.392974,0.302146,0.306877,0.203294,0.400867,0.826066,0.204741,0.844733,0.204917,0.301652,0.388529,0.299733,0.801308,0.799908,0.392152,0.392124,0.81594,0.56199,0.578648,0.803585,0.799281,0.392162,0.817329,0.321016,0.816478,0.195415,0.801724,0.302447,0.30372,0.819122,0.30611,0.268722,0.175053,0.804447,0.57755,0.273732,0.269576,0.264318,0.178681,0.782437,0.266053,0.190507,0.817312,0.270778,0.801602,0.798755,0.817244,0.253583,0.186375,0.801576,0.269294,0.817896,0.255901,0.813885,0.265941,0.802575,0.800175,0.267895,0.271647,0.801585,0.79848,0.199549,0.28054,0.200632,0.251449,0.767032,0.737137,0.279522,0.782776,0.268986,0.276327,0.767218,0.775862,0.764578,0.729481,0.784482,0.775961,0.791437,0.782504,0.721983,0.273103,0.771151,0.786391,0.784941,0.73372,0.34906,0.269651,0.266448,0.784277,0.249561,0.782309,0.25515,0.766957,0.266488,0.167394,0.265814,0.274667,0.270185,0.293921,0.174157,0.232857,0.175707,0.353606,0.559923,0.357859,0.243842,0.237007,0.19037,0.169181,0.236786,0.21626,0.222795,0.201686,0.203043,0.203851,0.231075,0.232266,0.242642,0.231704,0.355008,0.215992,0.185044,0.181147,0.229412,0.182696,0.233558,0.356844,0.239034,0.194411,0.77111,0.214473,0.2036,0.362582,0.182161,0.232217,0.21608,0.182583,0.221848,0.194523,0.182187,0.233181,0.23274,0.183936,0.18175,0.353328,0.241909,0.778457,0.756665,0.780854,0.76949,0.767834,0.785438,0.776963,0.783604,0.763333,0.579656,0.76677,0.355462,0.781481,0.202163,0.220873,0.215919,0.216282,0.221746,0.214163,0.198807,0.199198,0.21582,0.198276,0.198309,0.197801,0.181541,0.191386,0.198424,0.216362,0.221598,0.213853,0.215493,0.198149,0.185869,0.216418,0.202071,0.207868,0.2021,0.218298,0.201689,0.185958,0.186474,0.198361,0.182937,0.782212,0.195133,0.784007,0.197851,0.534561,0.181197,0.247331,0.262682,0.25085,0.248584,0.238329,0.547163,0.251001,0.251118,0.753219,0.200366,0.195549,0.200698,0.247524,0.549228,0.209483,0.198276,0.181033,0.265497,0.254255,0.253583,0.248895,0.321305,0.258283,0.25306,0.190736,0.193765,0.190146,0.199683,0.316542,0.608213,0.313431,0.247105,0.539469,0.201806,0.202239,0.319614,0.548877,0.323488,0.284439,0.167407,0.277672,0.295407,0.71916,0.154444,0.296643,0.611666,0.290924,0.609678,0.611632,0.285249,0.604658,0.613057,0.609733,0.178723,0.618643,0.284113,0.545865,0.284169,0.285625,0.305459,0.184108,0.748879,0.619352,0.737936,0.612562,0.285165,0.611409,0.290316,0.288085,0.613044,0.595329,0.586277,0.752936,0.7429,0.750652,0.758987,0.74851,0.731784,0.733479,0.722128,0.749833,0.74446,0.185505,0.595248,0.612067,0.333711,0.61407,0.319819,0.327584,0.318907,0.612145,0.20174,0.586533,0.555297,0.603554,0.594946,0.201118,0.333069,0.612126,0.61196,0.316102,0.3239,0.612665,0.614478,0.324687,0.318564,0.602958,0.321777,0.311981,0.311462,0.622097,0.310604,0.307445,0.340427,0.194643,0.618145,0.562593,0.725148,0.760153,0.320692,0.648739,0.319137,0.646894,0.623602,0.635875,0.759957,0.7435,0.742595,0.733982,0.645556,0.748049,0.359276,0.749725,0.347986,0.628594,0.514662,0.750649,0.489421,0.645771,0.74709,0.361254,0.644668,0.353449,0.646416,0.741865,0.348076,0.357725,0.620673,0.355104,0.358382,0.194827,0.65188,0.620769,0.64022,0.177865,0.628575,0.351906,0.649347,0.363834,0.353523,0.353449,0.623473,0.643368,0.352475,0.180758,0.372539,0.73334,0.717479,0.657503,0.282727,0.201515,0.67737,0.378499,0.729582,0.681132,0.387418,0.283854,0.193533,0.388995,0.67956,0.388473,0.380775,0.396461,0.387842,0.387872,0.386964,0.37912,0.3964,0.777238,0.380251,0.387182,0.386899,0.38792,0.506786,0.404203,0.285768,0.80168,0.800365,0.385427,0.189772,0.277842,0.388222,0.385517,0.390229,0.380512,0.388026,0.390307,0.800958,0.801509,0.736839,0.744462,0.28665,0.747803,0.732759,0.731318,0.767259,0.749983,0.74508,0.765723,0.421023,0.754937,0.422119,0.291743,0.767151,0.289195,0.422145,0.421488,0.430852,0.42159,0.421486,0.422773,0.413466,0.431901,0.422491,0.422452,0.423392,0.413769,0.423536,0.673299,0.755963,0.418949,0.422414,0.421995,0.423167,0.422855,0.422414,0.734516,0.423656,0.420172,0.414662,0.67791,0.75734,0.731499,0.761325,0.234023,0.732306,0.770268,0.748508,0.235206,0.220944,0.714275,0.238964,0.233284,0.225256,0.690297,0.691699,0.229564,0.682115,0.453906,0.667629,0.452012,0.6811,0.44645,0.454743,0.253045,0.511009,0.231193,0.690116,0.45701,0.463114,0.69612,0.450646,0.226682,0.45014,0.724429,0.747787,0.745273,0.655785,0.670886,0.75428,0.579635,0.729586,0.731672,0.253404,0.657706,0.771513,0.697834,0.791743,0.788374,0.78888,0.701644,0.492,0.500072,0.724187,0.67908,0.479704,0.6564,0.717017,0.209819,0.668773,0.655003,0.490604,0.67838,0.215237,0.655958,0.661333,0.702376,0.664623,0.697836,0.666032,0.671832,0.712831,0.713603,0.724605,0.657116,0.696615,0.708022,0.698636,0.715502,0.220583,0.203614,0.661981,0.207483,0.214795,0.662807,0.663361,0.576948,0.264083,0.526163,0.506943,0.22111,0.724729,0.789302,0.699259,0.6829,0.790032,0.68318,0.204645,0.20866,0.523358,0.531148,0.211228,0.526707,0.207044,0.204906,0.202605,0.629516,0.626904,0.531165,0.207631,0.544593,0.21197,0.21567,0.220217,0.228077,0.721904,0.627065,0.217484,0.629824,0.626899,0.702435,0.623042,0.636745,0.562023,0.623489,0.562475,0.630552,0.638842,0.560331,0.56005,0.790836,0.558397,0.792714,0.78059,0.788245,0.555968,0.566997,0.634159,0.550299,0.784984,0.562033,0.560586,0.561117,0.788893,0.630677,0.632785,0.774598,0.719628,0.62931,0.632091,0.704349,0.626406,0.686633,0.699974,0.75878,0.697421,0.774805,0.715335,0.777886,0.715991,0.636373,0.605564,0.681853,0.595492,0.599572,0.593589,0.206922,0.59479,0.718732,0.595184,0.708945,0.594413,0.595865,0.595801,0.770087,0.188403,0.25492,0.595406,0.603573,0.594994,0.595075,0.59496,0.586284,0.604079,0.594085,0.594857,0.594529,0.585935,0.594544,0.598062,0.819889,0.154141,0.185588,0.462697,0.186956,0.436227,0.443289,0.560702,0.471119,0.5638,0.463693,0.206222,0.789753,0.590727,0.184191,0.186562,0.790672,0.187167,0.190264,0.857605,0.220457,0.186117,0.81748,0.570409,0.1904,0.187169,0.218728,0.185866,0.17938,0.200451,0.26189,0.182427,0.475972,0.575981,0.186312,0.189655,0.185647,0.190452,0.454854,0.421499,0.288569,0.198483,0.522342,0.241422,0.227815,0.2112,0.207084,0.562335,0.605057,0.594878,0.211325,0.407392,0.210191,0.211318,0.676494,0.485743,0.214325,0.773552,0.656246,0.361217,0.593645,0.216832,0.203945,0.788769,0.206409,0.478481,0.245552,0.794384,0.293896,0.222021,0.791038,0.78766,0.787578,0.783603,0.789389,0.364252,0.783616,0.404503,0.405054,0.439481,0.219057,0.578299,0.505633,0.59408,0.839875,0.793418,0.723942,0.548688,0.591335,0.793802,0.367541,0.183108,0.318204,0.270732,0.440667,0.45235,0.42057,0.416461,0.646674,0.172485,0.478113,0.374578,0.783557,0.756952,0.564932,0.565409,0.560566,0.873152,0.557741,0.555165,0.558127,0.561999,0.572958,0.844466,0.793534,0.573301,0.577604,0.572544,0.56911,0.573415,0.826947,0.431355,0.585457,0.581678,0.58065,0.580468,0.590148,0.586502,0.58386,0.564869,0.568305,0.571408,0.563415,0.81388,0.558233,0.561004,0.574753,0.577185,0.58188,0.578387,0.586678,0.793121,0.804579,0.424775,0.580137,0.585257,0.58181,0.581183,0.581956,0.573932,0.570192,0.817243,0.809911,0.808293,0.813653,0.549114,0.79763,0.556962,0.447724,0.797166,0.795556,0.800222,0.55108,0.553423,0.54982,0.818466,0.815075,0.813915,0.550342,0.546359,0.819614,0.817042,0.820526,0.537292,0.816003,0.813783,0.44508,0.540789,0.809718,0.553886,0.444922,0.805148,0.817716,0.814835,0.813998,0.800605,0.801683,0.8081,0.803638,0.797524,0.821949,0.814421,0.817494,0.811645,0.817353,0.810461,0.440708,0.794694,0.797164,0.820063,0.553875,0.543529,0.537949,0.54621,0.818372,0.80479,0.820207,0.546856,0.535294,0.522294,0.523604,0.813661,0.552704,0.552863,0.546265,0.801005,0.800202,0.806649,0.786298,0.791931,0.540391,0.540767,0.543347,0.540454,0.421689,0.8149,0.810856,0.550891,0.549232,0.803797,0.800335,0.805652,0.794443,0.797262,0.817776,0.524647,0.809442,0.53402,0.816349,0.813654,0.812594,0.420073,0.549585,0.815635,0.813425,0.81206,0.797252,0.796777,0.800977,0.810824,0.814842,0.819799,0.813528,0.814794,0.80258,0.801831,0.809392,0.806187,0.797936,0.813864,0.792241,0.816032,0.802356,0.403087,0.795853,0.306162,0.761229,0.57156,0.567869,0.574035,0.556207,0.552037,0.555828,0.532861,0.809674,0.773894,0.557029,0.551988,0.54745,0.547179,0.545524,0.771557,0.770863,0.76143,0.768818,0.780172,0.8214,0.814329,0.774388,0.781412,0.534407,0.530371,0.538262,0.807004,0.514504,0.538655,0.530152,0.531816,0.529692,0.789606,0.247918,0.547523,0.389266,0.777972,0.553816,0.550016,0.272721,0.785145,0.534495,0.269089,0.526123,0.52545,0.270171,0.812195,0.786325,0.779392,0.787938,0.550676,0.387316,0.792465,0.771599,0.76485,0.769328,0.776398,0.771068,0.78446,0.795397,0.585194,0.581179,0.580056,0.585555,0.581927,0.580946,0.576968,0.786378,0.772775,0.572394,0.568043,0.573585,0.569617,0.574013,0.760041,0.768224,0.783134,0.794657,0.785516,0.783891,0.774911,0.783053,0.768744,0.771571,0.378689,0.178294,0.172395,0.183816,0.185518,0.193528,0.816355,0.768238,0.783476,0.267495,0.507175,0.819108,0.39762,0.502228,0.513064,0.515941,0.812324,0.487699,0.493003,0.404674,0.50691,0.187464,0.183364,0.492546,0.492573,0.80911,0.481984,0.476184,0.478199,0.813222,0.781686,0.771398,0.769032,0.774901,0.754595,0.763917,0.79733,0.779437,0.783044,0.785738,0.784499,0.779114,0.773098,0.768486,0.773521,0.76344,0.763859,0.794032,0.788942,0.785713,0.783091,0.786898,0.782128,0.566094,0.564341,0.210296,0.211133,0.223562,0.218577,0.220407,0.585491,0.580975,0.583296,0.583571,0.577314,0.216217,0.211431,0.221292,0.208365,0.215601,0.226264,0.215435,0.212477,0.213913,0.204101,0.213851,0.50944,0.498655,0.506566,0.52062,0.52281,0.51784,0.514528,0.217507,0.21024,0.214158,0.484104,0.809475,0.805465,0.502627,0.500009,0.503529,0.512039,0.510449,0.215621,0.211109,0.408437,0.221607,0.216495,0.21266,0.224698,0.216803,0.222915,0.215767,0.207342,0.26332,0.507888,0.507342,0.495967,0.495425,0.4099,0.817044,0.820367,0.506618,0.819169,0.820465,0.784116,0.785073,0.776645,0.390884,0.401316,0.398246,0.812897,0.258938,0.260968,0.256795,0.25464,0.395625,0.24378,0.795655,0.377424,0.792365,0.34216,0.783309,0.250069,0.23781,0.237109,0.491503,0.776847,0.23823,0.239058,0.246597,0.254059,0.809584,0.245547,0.246051,0.812569,0.252934,0.252361,0.242755,0.250757,0.242164,0.250725,0.800028,0.79648,0.767453,0.759393,0.767099,0.790679,0.789107,0.780018,0.291892,0.571122,0.783205,0.756227,0.764747,0.573379,0.279561,0.792214,0.274893,0.801233,0.730827,0.457558,0.806298,0.454265,0.444482,0.449113,0.383375,0.473232,0.466869,0.257456,0.748426,0.474779,0.80973,0.481292,0.478131,0.476104,0.468266,0.462944,0.469162,0.292445,0.284125,0.286882,0.47343,0.347784,0.468758,0.461171,0.464654,0.791959,0.488913,0.745966,0.744227,0.755719,0.715717,0.246862,0.452724,0.809414,0.452592,0.470304,0.46172,0.588272,0.327585,0.322647,0.80503,0.549105,0.312671,0.804957,0.311304,0.313711,0.304022,0.330814,0.319742,0.473107,0.356787,0.473128,0.308639,0.804993,0.814339,0.372415,0.455052,0.459671,0.450326,0.447849,0.482602,0.476773,0.455178,0.447035,0.46425,0.755708,0.756603,0.76076,0.378592,0.75125,0.750957,0.734841,0.376529,0.742829,0.476777,0.350955,0.352392,0.343334,0.354808,0.339537,0.806475,0.457103,0.444142,0.448832,0.363256,0.377853,0.355693,0.358915,0.351508,0.353752,0.350799,0.346278,0.35997,0.786966,0.449308,0.448243,0.445917,0.370592,0.370239,0.362107,0.449145,0.363508,0.45662,0.370141,0.450393,0.444511,0.447344,0.754108,0.750175,0.745804,0.374174,0.719839,0.725798,0.73706,0.741991,0.433224,0.414145,0.416835,0.421718,0.414204,0.283577,0.423871,0.385426,0.367476,0.434082,0.432143,0.427497,0.433439,0.394236,0.378514,0.379529,0.431782,0.436427,0.824884,0.387762,0.821545,0.440299,0.387834,0.38348,0.383544,0.383534,0.379082,0.389265,0.291234,0.389062,0.387728,0.391036,0.381258,0.390841,0.391101,0.386669,0.38267,0.380277,0.393237,0.38763,0.817668,0.426532,0.426692,0.430192,0.391976,0.382653,0.378395,0.395504,0.389599,0.409486,0.400236,0.403792,0.820701,0.412843,0.40746,0.410949,0.416897,0.409498,0.413397,0.434063,0.433604,0.432812,0.428418,0.431318,0.391393,0.383178,0.388354,0.379482,0.436786,0.440753,0.441878,0.439419,0.437911,0.823696,0.752896,0.750037,0.746799,0.756396,0.761362,0.729975,0.728651,0.734244,0.423982,0.428,0.428166,0.748132,0.742499,0.396423,0.419826,0.415717,0.419885,0.418428,0.424286,0.413619,0.431439,0.419198,0.419521,0.426656,0.425222,0.340447,0.421564,0.417715,0.417697,0.417202,0.413504,0.422501,0.418092,0.418088,0.418109,0.41373,0.333684,0.443972,0.342041,0.424233,0.820494,0.426498,0.416358,0.825556,0.427482,0.421468,0.418958,0.414485,0.419514,0.414487,0.417176,0.422676,0.427148,0.418817,0.433523,0.260036,0.431152,0.436538,0.42303,0.426088,0.422854,0.41957,0.411371,0.439408,0.754088,0.753374,0.4439,0.399808,0.437736,0.249746,0.265176,0.417961,0.413826,0.419335,0.46561,0.460851,0.459761,0.447203,0.441385,0.460719,0.272734,0.452637,0.472488,0.821906,0.457027,0.453684,0.457439,0.448394,0.458335,0.44429,0.444541,0.440002,0.446914,0.823493,0.830946,0.417492,0.270735,0.269395,0.263231,0.271566,0.439612,0.431772,0.756232,0.748022,0.748945,0.762905,0.763762,0.337527,0.274295,0.732136,0.340004,0.749081,0.746437,0.740273,0.755821,0.748135,0.729753,0.724403,0.730611,0.736638,0.727974,0.437323,0.436174,0.441612,0.739937,0.438423,0.43288,0.445903,0.445878,0.435088,0.487398,0.492317,0.493216,0.492923,0.491558,0.313764,0.422501,0.417946,0.417872,0.433258,0.41807,0.418034,0.421986,0.490105,0.488053,0.489122,0.41372,0.426212,0.441131,0.43987,0.826002,0.438984,0.441153,0.727006,0.721451,0.718939,0.428078,0.429865,0.435337,0.702949,0.70075,0.823322,0.698409,0.692873,0.71119,0.417899,0.418276,0.423399,0.709043,0.837807,0.490234,0.413651,0.427119,0.438423,0.440057,0.441644,0.436506,0.441914,0.523941,0.527386,0.822594,0.582427,0.279552,0.518547,0.445474,0.442217,0.521061,0.534635,0.526143,0.525579,0.529104,0.519615,0.426287,0.426331,0.430349,0.422265,0.426398,0.417915,0.438352,0.434372,0.43474,0.431241,0.442437,0.442624,0.441193,0.43809,0.440564,0.426357,0.426272,0.431329,0.421923,0.425913,0.566801,0.418634,0.418036,0.422076,0.434603,0.434614,0.434802,0.569919,0.710958,0.708872,0.417895,0.413364,0.439188,0.43262,0.437835,0.561538,0.56338,0.552927,0.55892,0.577434,0.564195,0.570234,0.583156,0.564662,0.564374,0.579774,0.588504,0.56744,0.592721,0.582432,0.559201,0.560654,0.556328,0.560108,0.565156,0.560455,0.565195,0.560608,0.561805,0.576652,0.566725,0.578134,0.259041,0.259672,0.409534,0.266788,0.388955,0.390139,0.714312,0.705046,0.713054,0.380246,0.27388,0.714162,0.406536,0.404963,0.410509,0.40366,0.401987,0.404924,0.407107,0.395227,0.393364,0.398925,0.378286,0.384283,0.398788,0.393454,0.600728,0.594573,0.593046,0.598024,0.260957,0.590134,0.400589,0.262993,0.266605,0.262842,0.598836,0.594828,0.59031,0.594969,0.600081,0.606642,0.6008,0.595493,0.55252,0.544553,0.280778,0.599063,0.593428,0.348126,0.594309,0.563056,0.553711,0.595791,0.590829,0.417069,0.411201,0.595034,0.590619,0.590593,0.590628,0.586268,0.594904,0.590438,0.590566,0.590149,0.589692,0.411438,0.59088,0.596551,0.595117,0.60157,0.591857,0.401376,0.529382,0.727056,0.719708,0.410168,0.324277,0.711829,0.700273,0.703154,0.625857,0.614996,0.634968,0.629387,0.626509,0.633578,0.627232,0.536045,0.408974,0.551376,0.620658,0.623966,0.623928,0.635297,0.623548,0.206587,0.629735,0.628039,0.623111,0.625536,0.619519,0.639567,0.632709,0.627266,0.62827,0.622013,0.62988,0.331869,0.629312,0.625499,0.621723,0.399628,0.577436,0.417761,0.40843,0.204315,0.574868,0.575064,0.628257,0.633816,0.619644,0.643634,0.638156,0.636207,0.55875,0.405575,0.402266,0.401713,0.414254,0.409935,0.570389,0.565719,0.573983,0.707032,0.581912,0.706955,0.414438,0.409581,0.414881,0.409381,0.405295,0.399325,0.40018,0.39061,0.58564,0.39621,0.392493,0.381695,0.38798,0.379026,0.375912,0.574422,0.397192,0.399976,0.410104,0.580093,0.39169,0.396128,0.687533,0.669839,0.664959,0.656694,0.675541,0.66248,0.378356,0.382661,0.401894,0.400208,0.563835,0.676894,0.668415,0.53832,0.400227,0.395008,0.399386,0.547937,0.718237,0.712809,0.708952,0.375499,0.378817,0.395697,0.318731,0.542854,0.714589,0.521455,0.321189,0.273067,0.268602,0.404787,0.400386,0.400129,0.400234,0.39606,0.40037,0.400856,0.404559,0.408723,0.409402,0.409478,0.40501,0.409494,0.525863,0.409427,0.392161,0.395626,0.388487,0.386748,0.695275,0.689861,0.254946,0.705671,0.4006,0.400683,0.405013,0.400194,0.409394,0.68918,0.680705,0.680955,0.400759,0.40078,0.405063,0.662327,0.664184,0.670466,0.675782,0.666594,0.40074,0.396446,0.71209,0.705355,0.70136,0.676829,0.669995,0.673992,0.409345,0.409318,0.409381,0.405045,0.409368,0.696814,0.697558,0.703193,0.695743,0.696125,0.679841,0.669078,0.413664,0.409342,0.405128,0.409379,0.413493,0.53031,0.6936,0.685349,0.689133,0.710269,0.705663,0.702916,0.6681,0.409384,0.70007,0.392206,0.392214,0.396497,0.383659,0.387909,0.379359,0.717833,0.392182,0.736123,0.731843,0.727159,0.739766,0.725269,0.400973,0.405206,0.725051,0.400866,0.409415,0.718865,0.723176,0.739762,0.738546,0.733727,0.54306,0.400988,0.731168,0.729682,0.722251,0.725113,0.739488,0.733815,0.740488,0.409519,0.543007,0.542119,0.544708,0.412484,0.735891,0.729594,0.270412,0.731749,0.734319,0.687196,0.678225,0.677745,0.671879,0.661884,0.663584,0.660345,0.650772,0.658908,0.678492,0.68092,0.695782,0.687878,0.549528,0.559627,0.565665,0.512126,0.255898,0.76627,0.776074,0.766935,0.775321,0.496452,0.409336,0.769955,0.76636,0.763594,0.762401,0.408281,0.762182,0.497974,0.752051,0.262115,0.778704,0.773263,0.753078,0.756995,0.774435,0.311319,0.505202,0.515532,0.407708,0.662636,0.655865,0.668243,0.683131,0.682981,0.69501,0.685906,0.683642,0.689368,0.680065,0.681348,0.38867,0.667005,0.675675,0.249078,0.366958,0.799748,0.805914,0.803862,0.800431,0.796379,0.796551,0.801495,0.797236,0.797261,0.806242,0.801583,0.806463,0.801041,0.797453,0.805722,0.80128,0.805433,0.802596,0.798375,0.256197,0.796807,0.790877,0.322671,0.402579,0.400735,0.389801,0.378429,0.391945,0.556743,0.794591,0.560695,0.583648,0.805871,0.801109,0.804997,0.80172,0.797138,0.797654,0.807524,0.803553,0.806034,0.795261,0.788954,0.792778,0.802321,0.798121,0.797608,0.79302,0.819439,0.58184,0.576859,0.583016,0.673026,0.505508,0.512815,0.586277,0.581845,0.243977,0.484825,0.689947,0.489707,0.374254,0.364702,0.371083,0.360709,0.356535,0.327954,0.668549,0.374265,0.372874,0.360798,0.357552,0.36507,0.830669,0.349068,0.353004,0.344907,0.340577,0.676498,0.667345,0.672369,0.694378,0.690056,0.686048,0.364251,0.357095,0.671594,0.66631,0.275949,0.682152,0.676952,0.366453,0.277804,0.375649,0.372714,0.578289,0.572775,0.262207,0.658726,0.649544,0.651341,0.640177,0.656384,0.647995,0.648094,0.640135,0.630329,0.658435,0.647932,0.651574,0.647232,0.572958,0.572714,0.577397,0.573173,0.568247,0.581868,0.559016,0.564056,0.268578,0.63958,0.643488,0.634991,0.639372,0.354767,0.262863,0.64838,0.647621,0.640914,0.634853,0.264847,0.447139,0.621451,0.459969,0.638195,0.353772,0.638457,0.626337,0.635938,0.225271,0.625876,0.642592,0.646484,0.650151,0.240482,0.245071,0.642172,0.452648,0.459623,0.613261,0.616815,0.651137,0.469176,0.370918,0.371104,0.369764,0.371898,0.644499,0.650141,0.638854,0.635331,0.629449,0.647244,0.645357,0.645422,0.648219,0.636964,0.650335,0.643501,0.637588,0.634406,0.641883,0.626698,0.365598,0.375463,0.367507,0.374727,0.36713,0.587686,0.610596,0.616279,0.352159,0.343889,0.367129,0.347828,0.353539,0.342355,0.647978,0.472743,0.372109,0.377723,0.369463,0.369251,0.36661,0.385587,0.376681,0.66027,0.65341,0.649974,0.474643,0.480458,0.624237,0.635177,0.650744,0.643574,0.646951,0.659171,0.654985,0.6614,0.654643,0.368488,0.372105,0.636366,0.625306,0.630831,0.644226,0.636248,0.641488,0.379609,0.372035,0.372628,0.584996,0.609913,0.452881,0.235424,0.237096,0.611754,0.600061,0.608895,0.604806,0.592334,0.587391,0.594264,0.457009,0.371322,0.61902,0.461055,0.581315,0.613797,0.597693,0.23468,0.606596,0.306057,0.368123,0.313872,0.595886,0.274831,0.369114,0.370145,0.37464,0.378161,0.37434,0.597398,0.349497,0.346984,0.356653,0.603544,0.607786,0.612158,0.6078,0.599255,0.599273,0.603563,0.590678,0.586493,0.590696,0.607854,0.607879,0.604123,0.612615,0.607814,0.599521,0.599894,0.590566,0.361089,0.36415,0.61515,0.604626,0.611995,0.609514,0.241457,0.612266,0.595498,0.600682,0.599504,0.220027,0.609705,0.609025,0.603885,0.611809,0.626187,0.614501,0.609667,0.351773,0.342649,0.370311,0.613137,0.608262,0.608923,0.612604,0.608442,0.608077,0.617456,0.616843,0.619078,0.618464,0.284038,0.600703,0.48014,0.585179,0.615532,0.607654,0.458729,0.620438,0.218461,0.465531,0.621048,0.595426,0.590645,0.591437,0.613527,0.615873,0.611803,0.611963,0.619838,0.371079,0.613263,0.473002,0.361574,0.591011,0.586514,0.59689,0.597716,0.594938,0.471737,0.476649,0.620399,0.380251,0.483586,0.471711,0.593366,0.598111,0.607686,0.610927,0.606383,0.607571,0.219348,0.289631,0.606011,0.6158,0.615356,0.597137,0.604296,0.167487,0.601431,0.595663,0.170277,0.166519,0.557491,0.562073,0.563187,0.17849,0.616073,0.60928,0.612593,0.27905,0.372283,0.284274,0.612813,0.619604,0.383254,0.370746,0.313317,0.354425,0.387959,0.372028,0.298381,0.307791,0.171403,0.453812,0.352572,0.345733,0.354386,0.362711,0.292905,0.353948,0.343122,0.37053,0.303136,0.360091,0.598316,0.300112,0.207896,0.233346,0.42843,0.214121,0.208338,0.42546,0.205988,0.18685,0.187465,0.198719,0.194726,0.194524,0.200579,0.19521,0.194249,0.204266,0.199952,0.203244,0.186347,0.182645,0.185316,0.177931,0.177402,0.181208,0.198314,0.19074,0.194601,0.196881,0.193966,0.193118,0.581928,0.577962,0.581895,0.190543,0.18708,0.187097,0.179828,0.179786,0.184143,0.198276,0.194535,0.1942,0.586311,0.581974,0.202799,0.198597,0.20179,0.582767,0.582437,0.181541,0.177223,0.180875,0.201887,0.199873,0.197306,0.209309,0.1974,0.202033,0.196613,0.190898,0.195506,0.188975,0.586505,0.582686,0.582066,0.577312,0.196576,0.419573,0.421944,0.573648,0.419682,0.578786,0.572891,0.569191,0.583339,0.209311,0.208808,0.20112,0.202272,0.204006,0.198614,0.186105,0.182775,0.181542,0.204778,0.202759,0.199606,0.198172,0.194451,0.194558,0.194652,0.195894,0.18624,0.182085,0.185514,0.177368,0.178254,0.181703,0.198084,0.193315,0.202185,0.198435,0.202657,0.179372,0.175601,0.178979,0.197714,0.19389,0.193097,0.202621,0.203156,0.199368,0.2351,0.194033,0.196078,0.184852,0.180239,0.185379,0.200773,0.196094,0.194326,0.204678,0.199208,0.196524,0.19027,0.208421,0.200519,0.43559,0.194527,0.326205,0.332128,0.336809,0.327644,0.324093,0.23654,0.330819,0.341052,0.332885,0.448133,0.242179,0.237206,0.225528,0.237009,0.349235,0.345179,0.320352,0.316319,0.324626,0.22051,0.218021,0.227737,0.20872,0.212033,0.329067,0.315837,0.434579,0.209048,0.311452,0.307722,0.340967,0.333501,0.339351,0.323795,0.212177,0.435438,0.258444,0.421881,0.233817,0.441973,0.247093,0.331613,0.215937,0.204016,0.236005,0.234151,0.235608,0.225764,0.233297,0.24233,0.240199,0.232495,0.45151,0.240075,0.233126,0.231515,0.23033,0.236693,0.228609,0.222881,0.215254,0.21721,0.224229,0.237038,0.235896,0.231954,0.23291,0.224742,0.2266,0.227714,0.22821,0.438352,0.439385,0.219776,0.219132,0.211568,0.210017,0.211143,0.242955,0.443161,0.209105,0.206418,0.212119,0.418438,0.232528,0.240719,0.235659,0.227155,0.4335,0.22899,0.556583,0.215772,0.232797,0.236328,0.23562,0.234846,0.227081,0.237706,0.231544,0.59119,0.209558,0.561532,0.583839,0.579563,0.280109,0.560402,0.434263,0.577391,0.582066,0.26487,0.25824,0.248409,0.241744,0.246442,0.251801,0.280037,0.264362,0.260739,0.258781,0.586485,0.582196,0.439426,0.256895,0.24451,0.252339,0.581338,0.426734,0.578229,0.226696,0.423408,0.246822,0.237875,0.228941,0.263629,0.338944,0.260221,0.253036,0.266024,0.273639,0.264219,0.267568,0.282043,0.277453,0.340882,0.426016,0.446082,0.324696,0.268945,0.337807,0.335796,0.320054,0.32677,0.315786,0.306953,0.564269,0.565693,0.434308,0.264975,0.203973,0.322657,0.194949,0.252522,0.246061,0.264149,0.261788,0.269739,0.282073,0.278002,0.275894,0.271749,0.265375,0.269486,0.443957,0.245624,0.254115,0.194789,0.332655,0.421302,0.342174,0.438344,0.565351,0.266129,0.260333,0.243946,0.255329,0.267448,0.269766,0.262631,0.257039,0.249804,0.251572,0.259005,0.273202,0.26866,0.263646,0.275322,0.265893,0.279173,0.560886,0.336312,0.328129,0.337117,0.332668,0.324365,0.333662,0.565612,0.344902,0.337195,0.337942,0.330287,0.296997,0.288676,0.34404,0.299407,0.565107,0.297099,0.316058,0.313471,0.32023,0.454206,0.306931,0.583247,0.57916,0.575382,0.561159,0.55859,0.325336,0.318043,0.284827,0.280471,0.313039,0.306093,0.341333,0.331615,0.33819,0.302986,0.292316,0.291734,0.431035,0.430696,0.307869,0.305458,0.278344,0.297653,0.284626,0.290464,0.285079,0.305931,0.263713,0.279725,0.271548,0.275735,0.204909,0.288211,0.30162,0.570688,0.566239,0.573313,0.297768,0.288652,0.292556,0.574558,0.566735,0.574708,0.57828,0.295956,0.557539,0.558823,0.414449,0.57662,0.580686,0.588188,0.32425,0.579504,0.57698,0.575762,0.433971,0.33622,0.336903,0.336206,0.335543,0.418183,0.288302,0.417515,0.337772,0.329783,0.338881,0.299224,0.319178,0.315057,0.323748,0.296265,0.299761,0.316726,0.312371,0.308618,0.325635,0.303582,0.2942,0.296155,0.314556,0.310477,0.3066,0.30127,0.32673,0.323441,0.564882,0.560765,0.564814,0.426504,0.577759,0.582773,0.581613,0.576955,0.58302,0.344784,0.567532,0.564464,0.196499,0.314262,0.307681,0.32785,0.322892,0.278054,0.574186,0.57347,0.570179,0.573363,0.568664,0.573411,0.557082,0.556757,0.557525,0.554435,0.321686,0.431622,0.31955,0.306648,0.320622,0.350204,0.333865,0.327035,0.441503,0.300251,0.304047,0.29157,0.334912,0.336292,0.335578,0.343593,0.334826,0.307924,0.317701,0.308046,0.300023,0.212155,0.34926,0.286593,0.284234,0.292263,0.283754,0.304558,0.316193,0.42996,0.420785,0.31441,0.325319,0.349416,0.322769,0.417764,0.276114,0.572485,0.568213,0.580496,0.584164,0.183695,0.367418,0.367746,0.436007,0.358222,0.362985,0.570034,0.574867,0.569941,0.560295,0.566814,0.413526,0.296629,0.303951,0.369387,0.353729,0.367242,0.365191,0.185236,0.357759,0.364748,0.287638,0.360348,0.193442,0.379811,0.371671,0.366458,0.37174,0.360698,0.357851,0.424714,0.354898,0.372978,0.367373,0.365804,0.378002,0.37069,0.354415,0.360242,0.283652,0.280398,0.285784,0.615891,0.599159,0.378213,0.280243,0.289104,0.373418,0.571518,0.31018,0.300384,0.348439,0.370273,0.350041,0.280846,0.28474,0.297603,0.409913,0.402244,0.390953,0.400875,0.296406,0.400969,0.400813,0.400718,0.396475,0.396434,0.392143,0.400075,0.395649,0.388222,0.38773,0.405409,0.390162,0.388765,0.406383,0.387323,0.382412,0.392105,0.40459,0.305287,0.400459,0.606407,0.400812,0.395588,0.40215,0.396184,0.371843,0.40229,0.390401,0.393826,0.587029,0.295215,0.302044,0.301475,0.297212,0.301814,0.285117,0.400771,0.405567,0.388914,0.384239,0.39231,0.402548,0.39625,0.39675,0.60469,0.622816,0.561814,0.569029,0.428558,0.574788,0.428862,0.42406,0.596021,0.347221,0.421297,0.41859,0.414756,0.42513,0.407291,0.594551,0.616273,0.353694,0.570258,0.585038,0.432112,0.373414,0.813103,0.616966,0.355582,0.434145,0.358216,0.364911,0.375115,0.380962,0.433109,0.372925,0.373931,0.808152,0.373101,0.801795,0.623134,0.381451,0.642161,0.19088,0.199268,0.645994,0.374925,0.805059,0.619321,0.359453,0.798855,0.644859,0.64955,0.815982,0.654473,0.54984,0.256501,0.243592,0.632598,0.249123,0.640576,0.236332,0.790814,0.637964,0.783268,0.777649,0.783945,0.792051,0.797267,0.639102,0.776647,0.802377,0.543889,0.666313,0.578888,0.672714,0.773988,0.767077,0.769008,0.775138,0.39459,0.384583,0.391219,0.399928,0.5906,0.407774,0.40559,0.804272,0.355666,0.670718,0.516097,0.523131,0.687317,0.689,0.654465,0.774962,0.779098,0.770907,0.578071,0.418241,0.208063,0.207319,0.207424,0.68488,0.57253,0.667227,0.734436,0.552352,0.723647,0.734157,0.210542,0.21031,0.685458,0.786756,0.392867,0.382859,0.38362,0.40807,0.782288,0.403101,0.409467,0.407319,0.668681,0.666443,0.246494,0.246067,0.414233,0.411106,0.663972,0.660944,0.396439,0.386872,0.392966,0.402289,0.367865,0.252427,0.253427,0.252999,0.246675,0.409564,0.386761,0.205221,0.379789,0.626648,0.627455,0.593077,0.589443,0.463808,0.585971,0.631849,0.752543,0.627909,0.741696,0.644333,0.631331,0.680528,0.359507,0.633559,0.621975,0.691096,0.412947,0.686474,0.621156,0.448615,0.629038,0.745892,0.724765,0.633207,0.631006,0.635284,0.429651,0.37861,0.370808,0.372192,0.39389,0.744326,0.409463,0.393203,0.705841,0.384124,0.385786,0.406687,0.601679,0.599832,0.604022,0.384138,0.413503,0.406956,0.445521,0.430099,0.594621,0.415145,0.40602,0.56518,0.454791,0.563924,0.44287,0.439452,0.563307,0.55775,0.581491,0.751656,0.413704,0.430382,0.756017,0.427649,0.428178,0.430867,0.74136,0.744039,0.43502,0.743087,0.429952,0.434076,0.490565,0.485531,0.437889,0.429916,0.570911,0.568077,0.573971,0.484193,0.523903,0.408966,0.524787,0.405558,0.529153,0.435442,0.604329,0.437215,0.422132,0.431705,0.443891,0.246535,0.4897,0.768529,0.496636,0.761713,0.436636,0.771404,0.764199,0.572347,0.749982,0.254317,0.254852,0.249881,0.521522,0.455791,0.75076,0.430223,0.434539,0.25743,0.430704,0.438073,0.746264,0.750983,0.7417,0.46302,0.745579,0.461375,0.557288,0.561867,0.452982,0.400004,0.449044,0.59016,0.411783,0.602379,0.592202,0.622241,0.630598,0.625933,0.423554,0.428512,0.647202,0.434496,0.623931,0.620641,0.435471,0.413163,0.625194,0.646937,0.642072,0.387712,0.613161,0.62182,0.383273,0.640192,0.634165,0.397447,0.392254,0.643966,0.63734,0.65582,0.407485,0.396312,0.677231,0.626974,0.452541,0.385947,0.643241,0.398222,0.773149,0.764893,0.392457,0.768966,0.766417,0.75206,0.659175,0.652971,0.677099,0.385985,0.386355,0.669014,0.686267,0.805416,0.386472,0.794626,0.377655,0.385137,0.384582,0.78719,0.783098,0.795465,0.378349,0.635958,0.637073,0.346868,0.635707,0.354512,0.624753,0.734153,0.639761,0.630243,0.756917,0.622185,0.63001,0.364955,0.471093,0.640893,0.446337,0.634407,0.650585,0.452659,0.77199,0.762167,0.476069,0.60935,0.367153,0.746063,0.646037,0.735655,0.636328,0.63609,0.773352,0.365417,0.787774,0.370348,0.571364,0.367526,0.59742,0.603065,0.613068,0.762749,0.77162,0.246435,0.351753,0.605893,0.607723,0.605186,0.246993,0.246201,0.612842,0.344963,0.792577,0.242463,0.583174,0.782362,0.507428,0.609069,0.498341,0.630151,0.22237,0.220486,0.222448,0.177185,0.381953,0.218747,0.634372,0.348069,0.183004,0.199492,0.216016,0.193356,0.192982,0.19474,0.215911,0.498971,0.506062,0.222257,0.215212,0.677752,0.201556,0.229546,0.232434,0.220792,0.212622,0.220415,0.218515,0.220842,0.216258,0.687824,0.487947,0.684944,0.212997,0.761457,0.771164,0.231464,0.763291,0.571325,0.22376,0.23115,0.227816,0.230446,0.7781,0.574138,0.778564,0.774052,0.576882,0.779832,0.781595,0.580471,0.775282,0.789682,0.783712,0.788945,0.232567,0.233878,0.553769,0.788966,0.258834,0.314605,0.784931,0.326316,0.772322,0.519995,0.249682,0.254834,0.501099,0.264142,0.773231,0.802949,0.665375,0.664187,0.657533,0.655139,0.176046,0.80813,0.676988,0.676243,0.312452,0.685232,0.798643,0.674242,0.682836,0.295171,0.805875,0.569788,0.535777,0.802529,0.577313,0.584813,0.57228,0.331546,0.314819,0.803656,0.816444,0.572292,0.574484,0.569364,0.307763,0.328566,0.719695,0.569822,0.328847,0.330215,0.564336,0.563019,0.332773,0.456363,0.703378,0.363215,0.720054,0.366722,0.284481,0.727733,0.295998,0.349199,0.662162,0.364149,0.592195,0.358542,0.328767,0.559341,0.367379,0.357383,0.368001,0.194718,0.59866,0.275996,0.404702,0.716561,0.725781,0.382043,0.409938,0.395764,0.567519,0.568676,0.433223,0.230678,0.552014,0.259681,0.755015,0.389284,0.400103,0.395688,0.564629,0.565301,0.616616,0.418354,0.297177,0.608196,0.289824,0.399926,0.402157,0.414702,0.421772,0.436477,0.434448,0.434916,0.438226,0.432879,0.700388,0.678584,0.591073,0.421191,0.434993,0.585549,0.579365,0.592398,0.437939,0.58782,0.441957,0.427225,0.297351,0.471357,0.469901,0.624769,0.470095,0.462146,0.58842,0.584947,0.588826,0.600921,0.452777,0.46401,0.711101,0.574177,0.599833,0.483409,0.491896,0.596271,0.651648,0.575609,0.628353,0.615123,0.599138,0.593072,0.517146,0.510219,0.5056,0.598258,0.676763,0.582907,0.685307,0.541178,0.529202,0.563543,0.560915,0.55644,0.556166,0.691516,0.691224,0.572506,0.709193,0.566127,0.566129,0.228815,0.794339,0.810824,0.812456,0.81552,0.59651,0.81393,0.602992,0.809837,0.81522,0.71173,0.228491,0.614018,0.693357,0.78647,0.655939,0.711208,0.269697,0.178968,0.212336,0.217124,0.783988,0.722689,0.761847,0.279273,0.188213,0.280268,0.188644,0.44693,0.182256,0.61638,0.189815,0.457793,0.633665,0.61068,0.708537,0.626582,0.191523,0.697935,0.34927,0.607246,0.424339,0.424087,0.18666,0.200818,0.362336,0.393806,0.350897,0.349749,0.365726,0.175121,0.186763,0.660899,0.623738,0.605404,0.819158,0.364942,0.512041,0.491612,0.476657,0.569646,0.423333,0.384698,0.373072,0.401853,0.207247,0.393046,0.360728,0.371448,0.378715,0.640724,0.624894,0.620531,0.412413,0.797176,0.273712,0.600439,0.585224,0.222686,0.240722,0.368363,0.40072,0.597828,0.621382,0.361237,0.237731,0.632295,0.792215,0.68685,0.253035,0.619696,0.615624,0.787162,0.628945,0.320708,0.498439,0.572517,0.611643,0.350641,0.601315,0.605522,0.685375,0.416735,0.44665,0.734653,0.203041,0.208249,0.19092,0.207157,0.218375,0.321277,0.258034,0.745336,0.750241,0.425624,0.425661,0.452523,0.555446,0.753672,0.434842,0.786678,0.205259,0.382525,0.757181,0.759963,0.848218,0.643022,0.364434,0.630603,0.616799,0.320843,0.258774,0.578871,0.259364,0.77191,0.338747,0.263361,0.328901,0.292789,0.351548,0.745335,0.41239,0.408207,0.427824,0.685087,0.47945,0.563748,0.563461,0.707445,0.219674,0.213984,0.189565,0.753923,0.747637,0.456939,0.711721,0.606443,0.673099,0.641988,0.582473,0.447972,0.37945,0.774724,0.353685,0.385913,0.392487,0.390734,0.431264,0.451928,0.328273,0.495044,0.402818,0.420882,0.798565,0.406195,0.613862,0.350022,0.414123,0.613188,0.743377,0.203302,0.19841,0.224968,0.291455,0.577348,0.405044,0.439217,0.57663,0.809243,0.81226,0.810212,0.764388,0.352176,0.395546,0.544263,0.264668,0.778394,0.353351,0.384915,0.430277,0.42753,0.761112,0.365359,0.33996,0.304527,0.218496,0.30996,0.769978,0.311957,0.426679,0.701301,0.261056,0.585662,0.712861,0.809785,0.772833,0.282419,0.209481,0.415466,0.503505,0.720404,0.660767,0.61324,0.692209,0.597604,0.762052,0.76159,0.359838,0.765451,0.781011,0.212313,0.784421,0.461357,0.457326,0.406576,0.366351,0.60921,0.195127,0.560181,0.29983,0.36162,0.422535,0.54832,0.218477,0.323514,0.61361,0.566704,0.520731,0.618478,0.618902,0.425903,0.414664,0.710383,0.370904,0.638402,0.61913,0.731737,0.378007,0.162155,0.354619,0.541502,0.466974,0.581903,0.514134,0.700954,0.823455,0.633476,0.478294,0.446741,0.185748,0.770844,0.419734,0.750016,0.450863,0.204408,0.27191,0.766103,0.212227,0.608867,0.0765425],"Archive1402_field2":[0,0.2572,0.257718,0.545795,0.43336,0.71808,0.293024,0.266073,0.330986,0.44561,0.275862,0.624058,0.561786,0.655172,0.348977,0.250907,0.438281,0.342443,0.287125,0.435449,1,0.215247,0.293087,0.751007,0.723884,0.702958,0.707461,0.689015,0.678521,0.675348,0.658963,0.639226,0.628497,0.562668,0.392939,0.73671,0.249524,0.683651,0.238419,0.756444,0.586196,0.383768,0.377138,0.3594,0.34377,0.327567,0.253038,0.330205,0.309359,0.639235,0.296298,0.299139,0.278811,0.416714,0.259616,0.243316,0.234628,0.617512,0.595424,0.747671,0.742158,0.420003,0.574131,0.815094,0.790493,0.766892,0,0.759606,0.742268,0.72052,0.704974,0.702944,0.239691,0.577386,0.255091,0.65883,0.641828,0.631709,0.199314,0.605081,0.586753,0.572288,0.423815,0.576461,0.503555,0.761059,0.433829,0.408748,0.391658,0.396407,0.328143,0.394337,0.770863,0.405493,0.769375,0.361275,0.334664,0.592838,0.719316,0.598302,0.388003,0.367946,0.327492,0.806425,0.307952,0.293436,1,0.810292,0.279709,0.501668,0.240285,0.224986,0.275559,0.31012,0.310748,0.225208,0.65437,0.687539,0.291498,0.209314,0.87163,0.825236,0.585041,0.163992,0.807186,0.792448,0.571482,0.24142,0.310552,0.383023,0.362777,0.564091,0.553362,0.573991,0.663158,0.688814,0.719912,0.757772,0.379312,0.574173,0.777981,0.578312,0.555715,0.714102,0.0802607,0.66786,0.190615,0.211653,0.242166,0.179612,0.351918,0.789655,0.490108,0.53162,0.805971,0.622201,0.189863,0.187645,0.532657,0.202518,0.790343,0.820488,0.189682,0.194137,0.8999,0.194064,0.657199,0.64638,0.206284,0.572074,0.181295,0.208372,0.210885,0.49283,0.487976,0.411774,0.444096,0.731899,0.586484,0.621277,0.725879,0.695778,0.794279,0.604934,0.603905,0.585976,0.567288,0.570286,0.552187,0.385986,0.205583,0.720843,0.697594,0.682036,0.413895,0.446498,0.479011,0.664353,0.552672,0.586194,0.421657,0.430333,0.432005,0.79409,0.823399,0.861272,0.414226,0.399613,0.392734,0.378261,0.43913,0.419066,0.402504,0.207782,0.411299,0.302038,0.368183,0.414157,0.446886,0.552344,0.582144,0.389435,0.405806,0.794394,0.825824,0.348222,0.353486,0.336183,0.319054,0.30506,0.693385,0.196686,0.205468,0.231488,0.64334,0.269409,0.428245,0.413457,0.44767,0.486214,0.52007,0.551724,0.586207,0.622387,0.444128,0.475246,0.791237,0.223342,0.222503,1,0.195004,0.191035,0.105469,0.786368,0.629303,0.27974,0.311601,0.34088,0.379295,0.413693,0.448959,0.484,0.506896,0.782418,0.651411,0.69187,0.722972,0.759957,0.613001,0.596079,0.747196,0.810126,0.810344,0.793298,0.387,0.381809,0.541721,0.21122,0.243544,0.280315,0.312219,0.346075,0.380067,0.414333,0.552921,0.494146,0.773966,0.556144,0.6196,0.653874,0.725594,0.756798,0.791689,0.821127,0.568624,0.741342,0.703344,0.420173,0.570706,0.221518,0.560381,0.582528,0.571236,0.587419,0.570067,0.288154,0.801604,0.588051,0.377767,0.796475,0.35946,0.569951,0.586488,0.623952,0.792239,0.73787,0.757965,0.355149,0.864752,0.210659,0.202557,0.206416,0.202342,0.446686,0.431622,0.432914,0.578217,0.414226,0.560219,0.557283,0.185468,0.186775,0.418104,0.416367,0.393946,0.390469,0.410326,0.586146,0.619561,0.414379,0.410606,0.17973,0.367826,0.82479,0.262353,1,0,0.798208,0.22541,0.225326,0.132326,0.206219,0.246594,0.276775,0.306442,0.347552,0.380497,0.321589,0.719792,0.190926,0.789111,0.796983,0.585778,0.61543,0.68833,0.725504,0.75442,0.597799,0.86458,0.190383,0.178557,0.58218,0.318613,0.829857,0.557833,0.553281,0.556897,0.223282,0.241686,0.274775,0.310252,0.346225,0.37895,0.412866,0.448274,0.495227,0.518874,0.550944,0.586312,0.620769,0.650405,0.69621,0.758261,0.282492,0.766941,0.810268,0.809892,0.794216,0.794933,0.759841,0.798501,0.259802,0.636323,0.182328,0.208119,0.798858,0.443689,0.448006,0.415017,0.480948,0.515847,0.551683,0.586407,0.623262,0.443509,0.508529,0.774795,0.822282,0.405783,0.813815,0.60583,0.805599,0.586551,0.57004,0.566091,0.556126,0.806667,0.205957,0.810363,0.740243,0.725625,0.416389,0.449003,0.82201,0.515821,0.552108,0.586297,0.202297,0.663038,0.7137,0.691963,0.846366,0.540102,0.541208,0.368914,0.518469,0.20154,0.177842,0.180969,0.206474,0.244261,0.701451,0.445689,0.414225,0.449594,0.174941,0.511257,0.586909,0.429527,0.413476,0.793419,0.810186,0.813887,0.627555,0,0.304432,0.835266,0.25445,0.822253,0.206117,0.826602,0.613966,0.472406,0.343107,0.791895,0.414761,0.442981,0.556343,0.627921,0.178628,0.791428,0.448904,0.189264,0.638343,0.206539,1,0.189323,0.189332,0.424654,0.589798,0.181869,0.208465,0.404601,0.396299,0.396987,0.347976,0.379479,0.412729,0.44032,0.479663,0.584845,0.58619,0.623331,0.382033,0.370241,0.581454,0.755759,0.790628,0.556899,0.553337,0.339256,0.827965,0.810537,0.376028,0.553054,0.32132,0.242927,0.277252,0.313344,0.335944,0.407939,0.809402,0.422736,0.428264,0.303913,0.660531,0.687981,0.294379,0.756027,0.812267,0.793738,0.778947,0.288108,0.269273,0.190703,0.194421,0.347188,0.370289,0.399333,0.447386,0.595198,0.555688,0.621807,0.721074,0.749328,0.837256,0.202363,0.603833,0.603814,0.585617,0.54806,0.568795,0.55079,0.534034,0.20586,0.798375,0.783152,0.177801,0.599166,0.599178,0.537522,0.521086,0.603398,0.5,0.767339,0.748232,0.214823,0.777785,0.500619,0.607816,0.468078,0.612192,0.447847,0.433124,0.431744,0.733476,0.255622,0.297489,0.590669,0.599131,0.820111,0.225787,0.222344,0.206748,0.190118,0.191331,0.181103,0.335058,0.713601,0.82155,0.825715,0.814479,0.80299,0.788797,0.774223,0.769053,0.759983,0.590563,0.594863,0.327271,0.723146,0.577458,0.715844,0.598469,0.422758,0.591094,0.678518,0.586423,0.582534,0.586762,0.650681,0.619955,0.726805,0.602684,0.603232,0.586312,0.568638,0.548587,0.535526,0.53413,0.498301,0.497443,0.482736,0.464788,0.448875,0.430905,0.434023,0.732424,0.399303,0.377168,0.325948,0.582948,0.553427,0.293241,0.768526,0.407054,0.411916,0.240912,0.220884,0.223739,0.211095,0.649617,0.198754,1,0,0.564876,0.228044,0.219268,0.543328,0.564196,0.797201,0.568782,0.776333,0.753936,0.736655,0.454385,0.27212,0.723326,0.708969,0.706311,0.655172,0.670641,0.669482,0.662304,0.198699,0.64215,0.643931,0.62069,1,0.603371,0.586321,0.323204,0.56993,0.563878,0.572826,0.577768,0.535849,0.415405,0.419,0.419468,0.41903,0.525177,0.563222,0.55994,0.422215,0.425246,0.424572,0.429808,0.500532,0.24315,0.414722,0.284712,0.474985,0.292854,0.293155,0.454232,0.292816,0.441765,0.362254,0.392025,0.291553,0.43125,0.42976,0.396551,0.379131,0.422349,0.628457,0.422239,0.658678,0.405107,0.698909,0.413693,0.705133,0.731847,0.405111,0.739543,0.443606,0.366737,0.774056,0.396487,0.396047,0.362259,0.342849,0.323233,0.387404,0.228684,0.258646,0.256778,0.277846,0.296216,0.311422,0.325259,0.327604,0.336044,0.353068,0.3705,0.387763,0.370023,0.378866,0.37069,0.361346,0.354933,0.442614,0.341448,0.608748,0.624934,0.642051,0.639225,0.654258,0.674451,0.672586,0.686042,0.702692,0.701742,0.723567,0.740319,0.742114,0.758214,0.333587,0.773959,0.309048,0.431998,0.823176,0.293793,0.293849,0.275383,0.261818,0.18561,0.19763,0.209712,0.225422,0.224457,0.23646,0.253623,0.262882,0.280434,0.293131,0.447349,0.320787,0.341284,0.198084,0.395764,0.413793,0.426572,0.4406,0.259929,0.490686,0.562455,0.575659,0.590644,0.603256,0.598787,0.641002,0.81354,0.461534,0.694153,0.61909,0.607785,0.723387,0.741407,0.324129,0.758331,0.774779,0.776011,0.79707,0.30701,0.807172,0.612336,0.594894,0.599166,0.245219,0.228412,0.241978,0.181939,0.800954,0.208116,0.224313,0.590598,0.581952,0.586289,0.581986,0.784482,0.775093,0.573156,0.765502,0.396198,0.41327,0.429999,0.459089,0.577639,0.564262,0.535417,0.456892,0.55609,0.570076,0.569266,0.586707,0.601803,0.547707,0.500042,0.473737,0.418431,0.405897,0.411255,0.389012,0.404028,0.744976,0.369011,0.58643,0.653653,0.793733,0.810289,0.807791,0.821318,0.594692,0.441448,0.577345,0.560116,0.175648,0.189656,0.189629,0.206695,0.223933,0.451487,0.42569,0.767013,0.266564,0.704835,0.472994,0.459093,0.395058,0.214031,0.41299,0.430377,0.430666,0.443417,0.439635,0.459208,0.426874,0.423544,0.426855,0.536993,0.39543,0.553678,0.568128,0.586207,0.706085,0.609406,0.554718,0.657415,0.429313,0.553543,0.420754,0.754996,0.366632,0.794008,0.809696,0.809959,0.405187,0.840849,0.704972,0.346392,0.710709,0.162458,0.412094,0.179518,0.189656,0.189118,0.206897,0.557098,0.219842,0.405877,0.396658,0.559467,0.570291,0.671559,0.378964,0.701708,0.742319,0.414094,0.428936,0.43207,0.444517,0.461002,0.463961,0.711801,0.50865,0.502885,0.695138,0.53546,0.551724,0.58644,0.650561,0.761068,0.673359,0.630059,0.335225,0.737481,0.624624,0.758296,0.586307,0.775161,0.794478,0.810148,0.809818,0.305472,0.595263,0.662094,0.640357,0.63053,0.604459,0.204499,0.29516,0.244557,0.569358,0.18134,0.57417,0.594981,0.603055,0.61971,0.598373,0.610465,0.256417,0.356929,0.262748,0.232091,0.396811,0.414585,0.432331,0.430449,0.448683,0.464183,0.465332,0.480454,0.500043,0.534298,0.551724,0.568336,0.569393,0.5855,0.705751,0.232864,0.604559,0.634176,0.680563,0.603657,0.614511,0.214799,0.71937,0.73386,0.348263,0.776577,0.779112,0.793043,0.808919,0.804161,0.822054,0.620557,0.586636,0.801104,0.797662,0.813801,0.184903,0.828521,0.817959,0.223574,0.239635,0.256276,0.269068,0.297992,0.810621,0.294417,0.310503,0.805305,0.328341,0.805762,0.357368,0.379032,0.39651,0.396616,0.413679,0.432134,0.43079,0.45115,0.465665,0.486171,0.501183,0.806009,0.51655,0.535419,0.237699,0.551915,0.569007,0.573578,0.595491,0.606029,0.621065,0.639484,0.635125,0.80171,0.805786,0.71639,0.706843,0.82457,0.821225,0.736385,0.759795,0.776028,0.772443,0.790672,0.805931,0.784259,0.836742,0.810316,0.827667,0.328639,0.34257,0.210143,0.225859,0.230123,0.263742,0.281332,0.295693,0.333829,0.328939,0.356166,0.360295,0.37854,0.39704,0.395341,0.414042,0.198226,0.23303,0.469329,0.505183,0.302667,0.685486,0.684021,0.581257,0.605196,0.603449,0.620591,0.638499,0.637931,0.655223,0.689692,0.711044,0.711912,0.724988,0.738842,0.741788,0.756413,0.534703,0.38883,0.651208,0.629706,0.323126,0.609722,0.296038,0.330669,0.705946,0.339241,0.367054,0.363267,0.379875,0.392625,0.398185,0.441867,0.410531,0.469347,0.577674,0.465895,0.467515,0.721633,0.729972,0.729982,0.739839,0.436195,0.693843,0.60415,0.605251,0.62069,0.675949,0.634597,0.655863,0.673437,0.423491,0.41832,0.409212,0.738129,0.412716,0.404985,0.387988,0.378386,0.39644,0.252285,0.483855,0.293651,0.369854,0.325272,0.340875,0.346801,0.364137,0.365922,0.382833,0.394245,0.395177,0.430127,0.395957,0.379839,0.360624,0.452484,0.549062,0.561145,0.273597,0.605681,0.606212,0.638797,0.675931,0.590739,0.707281,0.439363,0.308087,0.345038,0.396288,0.327098,0.418302,0.327796,0.19634,0.226071,0.422793,0.333596,0.422022,0.288704,0.30617,0.408013,0.441292,0.426207,0.645508,0.237116,0.244788,0.19842,0.663492,0.687513,0.181574,0.76761,0.665907,0.691064,0.322266,0.801818,0.78433,0.705445,0.350054,0.717165,0.759271,0.577413,0.545678,0.251656,0.664358,0.286305,0.267607,0.268119,0.275171,0.438637,0.417144,0.422177,0.741275,0.732697,0.409379,0.413671,0.711404,0.729432,0.73119,0.700562,0.717771,0.405082,0.692613,0.236195,0.671086,0.266305,0.672413,0.215004,0.197713,0.657899,0.181623,0.847943,0.301249,0.597176,0.344563,0.817506,0.800846,0.780156,0.30197,0.402955,0.765281,0.283731,0.35892,0.725674,0.353977,0.36806,0.344019,0.640534,0.284095,0.327943,0.603117,0.312884,0.597506,0.298958,0.593721,0.29511,0.282547,0.577379,0.562853,0.268686,0.217782,0.297451,0.548726,0.303532,0.465278,0.794583,0.573739,0.438226,0.771361,0.422468,0.406533,0.766337,0.767241,0.781957,0.573974,0.758621,0.750147,0.731293,0.735671,0.574232,0.357252,0.736122,0.718558,0.705857,0.570087,0.83074,0.235168,0.224962,0.689456,0.224326,0.671827,0.216247,0.666076,0.215841,0.28884,0.206817,0.198251,0.186077,0.156279,0.359197,0.809805,0.326192,0.793153,0.367225,0.788878,0.696284,0.666752,0.317521,0.7013,0.64011,0.637638,0.630249,0.310395,0.319031,0.341393,0.608227,0.620566,0.610377,0.597811,0.583917,0.452432,0.247548,0.275605,0.374521,0.305429,0.355401,0.537974,0.315739,0.333105,0.431141,0.295005,0.596227,0.510599,0.655304,0.26075,0.259219,0.687816,0.250603,0.338924,0.723481,0.231616,0.241346,0.748168,0.762086,0.442769,0.231584,0.416623,0.430811,0.384704,0.391716,0.401457,0.372448,0.369782,0.363401,0.3664,0.846949,0.370327,0.41401,0.347308,0.782939,0.218198,0.240914,0.234154,0.267674,0.279795,0.730391,0.718898,0.312704,0.706897,0.689879,0.671707,0.672481,0.343324,0.646492,0.59473,0.61651,0.627966,0.656328,0.657326,0.642403,0.692548,0.633021,0.731531,0.577915,0.79857,0.405763,0.356298,0.347549,0.329448,0.328208,0.311591,0.2991,0.293496,0.310318,0.349779,0.293169,0.191204,0.199751,0.202725,0.215696,0.21834,0.346533,0.240613,0.231173,0.626072,0.283217,0.618995,0.267001,0.36836,0.338587,0.268091,0.258621,0.262721,0.546515,0.566155,0.576551,0.592286,0.793833,0.618661,0.610854,0.627808,0.630083,0.634746,0.243202,0.55318,0.194,0.539406,0.765463,0.334813,0.652962,0.647922,0.448954,0.329986,0.445393,0.207072,0.40434,0.214155,0.242674,0.850994,0.327974,0.379344,0.218025,0.404955,0.229885,0.240798,0.422166,0.248583,0.248242,0.26564,0.680335,0.321044,0.562059,0.322428,0.57753,0.595298,0.341367,0.288782,0.800768,0.423155,0.801437,0.440056,0.782459,0.458589,0.801751,0.816925,0.474045,0.498297,0.578025,0.786492,0.783033,0.775806,0.766936,0.769097,0.775689,0.784147,0.785632,0.758351,0.742247,0.664657,0.568653,0.568972,0.176032,0.575943,0.183992,0.198287,0.198459,0.586289,0.659165,0.612193,0.357907,0.594871,0.603461,0.665694,0.396283,0.594856,0.604541,0.422241,0.439134,0.611735,0.619943,0.471564,0.206755,0.631242,0.203617,0.526093,0.179464,0.66316,0.564444,0.594049,0.591868,0.679723,0.703447,0.360692,0.788305,0.772211,0.801843,0.1843,0.817471,0.198347,0.23176,0.216119,0.785053,0.788234,0.623199,0.665801,0.214909,0.788619,0.174598,0.782151,0.182246,0.388198,0.626586,0.792319,0.629435,0.423326,0.796839,0.404925,0.475447,0.422414,0.49139,0.796546,0.449906,0.490533,0.54327,0.511132,0.576865,0.687872,0.548586,0.578422,0.560508,0.714962,0.570303,0.762857,0.575433,0.783641,0.7845,0.801502,0.607667,0.594588,0.81705,0.71404,0.835858,0.577883,0.578343,0.631182,0.818899,0.701011,0.181833,0.185339,0.807692,0.198458,0.330344,0.585473,0.714717,0.375446,0.21578,0.388323,0.38786,0.405093,0.413709,0.405079,0.422214,0.421779,0.439714,0.789541,0.456669,0.510442,0.526102,0.543092,0.612463,0.628734,0.554848,0.688484,0.657756,0.69573,0.731927,0.441462,0.759197,0.753404,0.770579,0.765503,0.782273,0.817707,0.34255,0.310547,0.450803,0.434516,0.414615,0.421783,0.422414,0.438628,0.758658,0.406845,0.401493,0.727037,0.280533,0.698003,0.311403,0.211723,0.38019,0.202762,0.329365,0.355567,0.371002,0.380199,0.370878,0.385155,0.387866,0.40489,0.413712,0.405058,0.423502,0.421871,0.435151,0.533396,0.0987918,0.58189,0.594828,0.620995,0.672764,0.696258,0.724138,0.792897,0.735469,0.748328,0.792654,0.59392,0.389764,0.396969,0.451127,0.199812,0.405119,0.193338,0.382845,0.212023,0.22284,0.82655,0.214152,0.216888,0.220354,0.564036,0.474797,0.220731,0.372051,0.283922,0.803501,0.314179,0.802306,0.350928,0.38029,0.56167,0.618376,0.225086,0.182001,0.612169,0.633573,0.171684,0.697767,0.230352,0.727843,0.172206,0.280115,0.250319,0.801142,0.784928,0.236305,0.391737,0.233454,0.198265,0.20535,0.73718,0.282595,0.19801,0.283758,0.293494,0.304692,0.183511,0.354502,0.404548,0.182374,0.615476,0.414483,0.594437,0.152756,0.276251,0.57638,0.561727,0.661875,0.549349,0.267588,0.520014,0.497866,0.83164,0.477526,0.824357,0.423046,0.405324,0.817922,0.198176,0.801676,0.338904,0.802023,0.800267,0.815754,0.793119,0.258878,0.732395,0.232785,0.630358,0.6025,0.216423,0.19846,0.387318,0.801795,0.387281,0.380174,0.594748,0.761099,0.321708,0.783919,0.784601,0.337529,0.175326,0.302792,0.30258,0.654496,0.644094,0.310365,0.688388,0.319299,0.28266,0.289923,0.747992,0.733245,0.725317,0.249112,0.762627,0.24986,0.252437,0.235947,0.215915,0.593985,0.596062,0.216097,0.579381,0.586662,0.58016,0.558348,0.543329,0.276076,0.46972,0.311851,0.42287,0.40908,0.372445,0.387796,0.35716,0.556584,0.344009,0.371663,0.362847,0.595394,0.616243,0.263053,0.62745,0.367655,0.680712,0.698197,0.714934,0.367142,0.233182,0.242428,0.387727,0.562968,0.215517,0.199304,0.558586,0.187541,0.578931,0.550365,0.406175,0.438888,0.404058,0.423848,0.406395,0.439699,0.171613,0.207755,0.461624,0.218771,0.232705,0.252492,0.335642,0.283572,0.451334,0.304353,0.462013,0.368578,0.423336,0.474711,0.423688,0.288684,0.81615,0.558686,0.577634,0.586292,0.577659,0.594889,0.594911,0.612597,0.62112,0.612196,0.627458,0.628822,0.642502,0.696483,0.632442,0.41526,0.713289,0.22129,0.725727,0.361529,0.256123,0.743545,0.645465,0.640384,0.649638,0.649723,0.352648,0.267734,0.703393,0.696371,0.876072,0.68694,0.679982,0.705139,0.330348,0.655727,0.269198,0.317769,0.648592,0.62242,0.379934,0.363179,0.333321,0.608271,0.265475,0.340489,0.684777,0.476976,0.308797,0.301724,0.276204,0.266494,0.335743,0.562547,0.191862,0.217983,0.75977,0.593206,0.630426,0.651883,0.644162,0.405346,0.408401,0.439591,0.64398,0.601825,0.634373,0.638846,0.43539,0.394109,0.633615,0.657725,0.758981,0.618616,0.396867,0.166789,0.353572,0.681038,0.710844,0.380307,0.40551,0.697484,0.270124,0.710601,0.73663,0.733843,0.750445,0.7461,0.757057,0.220321,0.766491,0.562056,0.571848,0.598084,0.731653,0.436336,0.808994,0.190001,0.615459,0.398154,0.404802,0.665291,0.341424,0.778371,0.541415,0.382067,0.542722,0.788384,0.683361,0.676202,0.265611,0.249887,0.699605,0.270398,0.374923,0.885552,0.774851,0.804251,0.293086,0.285068,0.28437,0.567234,0.300524,0.296778,0.309243,0.303181,0.285023,0.707401,0.267519,0.29279,0.284474,0.269947,0.26673,0.262986,0.695217,0.696835,0.268057,0.276178,0.268145,0.26252,0.246656,0.25135,0.246061,0.259242,0.25083,0.252857,0.25348,0.273716,0.279743,0.269143,0.254893,0.247784,0.23527,0.233611,0.229086,0.302403,0.285213,0.687632,0.222114,0.283691,0.291313,0.285462,0.299803,0.304852,0.305165,0.299372,0.29872,0.304565,0.319922,0.751464,0.327482,0.732634,0.670799,0.742239,0.737145,0.73723,0.686986,0.69574,0.696576,0.715283,0.723589,0.716886,0.710463,0.698904,0.70714,0.700716,0.699601,0.715098,0.681855,0.68996,0.657074,0.69095,0.319505,0.680715,0.647725,0.329145,0.650787,0.660058,0.654457,0.642428,0.633804,0.636252,0.651452,0.648692,0.626658,0.628803,0.625094,0.617703,0.320665,0.594877,0.23472,0.597767,0.614366,0.320439,0.656874,0.65177,0.647386,0.642146,0.328903,0.569865,0.336273,0.622423,0.637163,0.647991,0.64158,0.331839,0.604446,0.610662,0.611503,0.40381,0.387748,0.379603,0.398058,0.394401,0.61818,0.611914,0.600888,0.606467,0.216929,0.368814,0.368653,0.600319,0.596852,0.36444,0.360993,0.356862,0.363774,0.358081,0.351696,0.60216,0.337772,0.595357,0.338118,0.344422,0.339255,0.227392,0.580061,0.305035,0.310236,0.304269,0.293501,0.286206,0.288886,0.287588,0.281416,0.265098,0.266789,0.261812,0.259734,0.251752,0.252189,0.264463,0.263999,0.351144,0.370405,0.248207,0.209481,0.763984,0.220116,0.430672,0.796284,0.360009,0.35249,0.353188,0.376141,0.370487,0.365268,0.40794,0.350504,0.787376,0.400949,0.405247,0.400697,0.392027,0.383488,0.766698,0.775397,0.779121,0.772301,0.762931,0.358665,0.357229,0.740012,0.755127,0.387558,0.383237,0.383641,0.368644,0.405079,0.391879,0.39157,0.375048,0.369098,0.698381,0.200039,0.374272,0.626226,0.679169,0.317975,0.317546,0.189699,0.658812,0.337678,0.198661,0.326017,0.341072,0.20298,0.634713,0.647987,0.644374,0.637217,0.302083,0.59536,0.650989,0.636046,0.63678,0.626414,0.603896,0.597828,0.595703,0.658618,0.353762,0.363576,0.353152,0.372437,0.379301,0.370867,0.37118,0.617581,0.61668,0.368613,0.370694,0.388352,0.385226,0.37601,0.596106,0.588092,0.586496,0.581489,0.578685,0.569963,0.579581,0.561639,0.561074,0.547476,0.617209,0.258641,0.254738,0.368439,0.3774,0.417832,0.636379,0.441421,0.424805,0.195158,0.652303,0.642151,0.573405,0.639827,0.648157,0.641833,0.646396,0.639012,0.632868,0.462978,0.600483,0.751867,0.755216,0.60499,0.600271,0.654122,0.613896,0.617651,0.609246,0.666244,0.4202,0.418125,0.414499,0.412092,0.435398,0.431664,0.671894,0.400634,0.3943,0.406454,0.388122,0.390766,0.399734,0.396758,0.393938,0.40012,0.394292,0.678592,0.375676,0.382003,0.378198,0.348426,0.357154,0.391037,0.384154,0.243829,0.238219,0.243927,0.246208,0.240842,0.386369,0.386453,0.409532,0.416698,0.411029,0.341264,0.334954,0.355914,0.356916,0.348139,0.404838,0.411375,0.401076,0.417034,0.414536,0.432757,0.399273,0.398667,0.395057,0.400204,0.382216,0.387151,0.382052,0.622781,0.624078,0.619342,0.404185,0.668517,0.673839,0.389263,0.372214,0.369127,0.376076,0.370353,0.721925,0.713164,0.467469,0.750136,0.759053,0.751912,0.767842,0.76649,0.798568,0.787943,0.78274,0.211558,0.365393,0.358572,0.358552,0.351086,0.444705,0.664889,0.668328,0.342788,0.676379,0.685577,0.278922,0.268967,0.26758,0.450776,0.277836,0.250956,0.673041,0.188381,0.196254,0.200764,0.197766,0.217274,0.216848,0.250341,0.813431,0.233966,0.788745,0.226086,0.379149,0.378708,0.369428,0.341511,0.232836,0.564165,0.572337,0.568425,0.58344,0.682694,0.587806,0.581766,0.698184,0.778201,0.784838,0.78234,0.800949,0.799356,0.791836,0.70515,0.711509,0.224768,0.215586,0.2165,0.208627,0.211868,0.206374,0.56312,0.405787,0.21885,0.191528,0.198839,0.422118,0.201644,0.711042,0.211735,0.709951,0.820491,0.708171,0.712408,0.698819,0.71889,0.710226,0.604055,0.666761,0.66434,0.220357,0.807023,0.655352,0.716708,0.629118,0.633134,0.6267,0.630475,0.62575,0.62565,0.797919,0.798935,0.794416,0.637499,0.590019,0.61707,0.616507,0.612541,0.749305,0.59498,0.80431,0.800847,0.780663,0.782244,0.220199,0.616424,0.729929,0.607765,0.599988,0.599337,0.419534,0.193971,0.193826,0.739771,0.498063,0.454517,0.733757,0.450778,0.547697,0.550085,0.582199,0.581858,0.407106,0.591263,0.397468,0.631315,0.728098,0.733143,0.507882,0.399592,0.394654,0.404422,0.400171,0.355529,0.359842,0.37297,0.376487,0.361815,0.636021,0.647113,0.612861,0.499299,0.603479,0.595477,0.604002,0.493066,0.595938,0.349243,0.202505,0.207912,0.203578,0.216605,0.214411,0.743903,0.319772,0.337244,0.333648,0.44327,0.471483,0.236702,0.516956,0.518729,0.54296,0.550533,0.54406,0.555143,0.776597,0.302514,0.312585,0.304895,0.595513,0.600337,0.599095,0.289982,0.652718,0.247921,0.20102,0.267068,0.267478,0.251389,0.564022,0.568574,0.565574,0.190241,0.586243,0.578121,0.566236,0.561521,0.774422,0.770792,0.764923,0.766506,0.786447,0.218416,0.774875,0.185289,0.180217,0.761734,0.749163,0.749436,0.740182,0.232679,0.230403,0.220145,0.755903,0.748996,0.26946,0.264596,0.274129,0.730849,0.40935,0.413535,0.409359,0.417904,0.417411,0.444034,0.809583,0.47883,0.473863,0.494539,0.492484,0.51349,0.521876,0.518312,0.52288,0.516002,0.545732,0.550148,0.275957,0.737873,0.73014,0.732028,0.578264,0.582265,0.591964,0.615094,0.612539,0.625,0.624589,0.621685,0.285683,0.660346,0.662389,0.647415,0.753567,0.753508,0.748281,0.732697,0.725394,0.719176,0.718527,0.712865,0.785852,0.786938,0.797474,0.79802,0.719007,0.717926,0.706431,0.713099,0.707908,0.300051,0.426488,0.432443,0.429187,0.42179,0.426537,0.431065,0.42674,0.426582,0.703295,0.693016,0.699136,0.41492,0.418106,0.182837,0.716842,0.715163,0.709312,0.723696,0.717456,0.203574,0.705983,0.349696,0.335601,0.679493,0.662601,0.539335,0.375495,0.379306,0.375157,0.383827,0.383678,0.409318,0.413698,0.409359,0.418095,0.418009,0.548973,0.632743,0.548144,0.63251,0.307132,0.620742,0.551199,0.332631,0.583091,0.587737,0.600944,0.597243,0.644039,0.643102,0.635558,0.654103,0.646793,0.662657,0.631686,0.423363,0.612744,0.609148,0.729867,0.724558,0.752817,0.758805,0.765795,0.620319,0.411121,0.417464,0.608573,0.629223,0.591574,0.432684,0.427013,0.621941,0.616952,0.614331,0.373735,0.379812,0.375311,0.391252,0.391271,0.409405,0.426201,0.408997,0.566729,0.651879,0.620728,0.626505,0.648054,0.644881,0.663592,0.688226,0.699352,0.690954,0.427218,0.663507,0.645576,0.434899,0.440072,0.429824,0.431609,0.433479,0.412786,0.422468,0.230186,0.230473,0.223317,0.245212,0.257624,0.435743,0.437657,0.223294,0.439419,0.204846,0.19922,0.198636,0.20043,0.191295,0.189985,0.186874,0.187158,0.193672,0.194508,0.40481,0.400709,0.400604,0.186296,0.409174,0.409315,0.396281,0.409265,0.396664,0.350862,0.347074,0.380528,0.371753,0.389559,0.441919,0.392367,0.396775,0.392226,0.391798,0.405094,0.400856,0.401273,0.611345,0.648706,0.654362,0.409383,0.40117,0.384389,0.366067,0.681887,0.37479,0.354863,0.813382,0.817647,0.814352,0.354945,0.345878,0.347848,0.802051,0.797082,0.691692,0.819958,0.818205,0.797141,0.370484,0.362953,0.360803,0.787577,0.683928,0.180817,0.374992,0.362357,0.351124,0.342395,0.334116,0.330487,0.325166,0.361954,0.377636,0.711631,0.655397,0.553585,0.515778,0.319863,0.316581,0.591867,0.611787,0.619557,0.611922,0.628411,0.628773,0.330172,0.321738,0.32276,0.320212,0.313275,0.328403,0.3125,0.317727,0.308986,0.305408,0.30756,0.299178,0.291584,0.293963,0.283125,0.296554,0.287237,0.286967,0.287257,0.279081,0.302465,0.295641,0.30837,0.303137,0.290122,0.28335,0.274326,0.701909,0.582904,0.578137,0.272287,0.266541,0.258444,0.251006,0.248743,0.331863,0.341603,0.335802,0.354803,0.25921,0.375789,0.684714,0.255697,0.267213,0.448636,0.240635,0.234175,0.575722,0.224405,0.551398,0.616101,0.666934,0.663647,0.659381,0.694051,0.690326,0.684493,0.753539,0.763596,0.787301,0.781852,0.800508,0.568051,0.572807,0.802835,0.566626,0.806152,0.800955,0.565448,0.56399,0.560669,0.809389,0.565986,0.546167,0.794706,0.790989,0.777104,0.787937,0.781652,0.770098,0.763424,0.767955,0.763942,0.763384,0.784944,0.779727,0.771438,0.773169,0.236515,0.241325,0.237248,0.246633,0.577586,0.279187,0.754112,0.581958,0.585703,0.590533,0.374088,0.37931,0.373944,0.386956,0.415508,0.412517,0.442527,0.450118,0.666454,0.666527,0.590693,0.48952,0.485739,0.176192,0.513148,0.676487,0.633277,0.551305,0.557091,0.743149,0.742943,0.581972,0.586308,0.581986,0.590611,0.590628,0.616361,0.620877,0.616428,0.625331,0.657073,0.736576,0.679722,0.759136,0.744965,0.764416,0.763838,0.733198,0.635328,0.434957,0.435682,0.729564,0.19065,0.428151,0.431099,0.426448,0.192591,0.196345,0.203103,0.207101,0.203302,0.21121,0.2113,0.627054,0.700939,0.592147,0.358068,0.402814,0.39656,0.455212,0.453056,0.252794,0.476266,0.482916,0.476281,0.490894,0.489222,0.505054,0.513068,0.508918,0.528803,0.524092,0.519163,0.195623,0.547393,0.582478,0.590855,0.690212,0.311781,0.684494,0.683345,0.2463,0.663864,0.320162,0.785656,0.804371,0.809125,0.813437,0.816568,0.812611,0.31821,0.639908,0.64864,0.634055,0.628359,0.63123,0.661979,0.327498,0.650589,0.221136,0.316093,0.211813,0.591576,0.589134,0.577251,0.578007,0.578133,0.584551,0.577381,0.562891,0.32527,0.559762,0.573425,0.574286,0.569048,0.578078,0.573594,0.335067,0.543345,0.538067,0.537386,0.338778,0.529998,0.526723,0.410815,0.418982,0.438922,0.440317,0.454615,0.454619,0.543011,0.538695,0.532132,0.520429,0.367263,0.54502,0.549313,0.400274,0.50993,0.507952,0.499633,0.414251,0.201924,0.206355,0.201704,0.513837,0.510719,0.493924,0.438755,0.396172,0.182529,0.391185,0.431494,0.808641,0.805218,0.44787,0.453551,0.446501,0.461251,0.458081,0.440441,0.435347,0.436519,0.438168,0.431554,0.426726,0.426715,0.422116,0.395573,0.417969,0.422293,0.427103,0.439216,0.435728,0.185114,0.185753,0.805559,0.197709,0.422288,0.418006,0.417983,0.426897,0.413684,0.814225,0.818499,0.813943,0.4051,0.400799,0.400807,0.802397,0.797489,0.799255,0.82014,0.817737,0.409395,0.409387,0.43619,0.439814,0.436102,0.806293,0.806696,0.802782,0.400834,0.396516,0.409391,0.409396,0.405113,0.565975,0.56104,0.575028,0.578057,0.574239,0.790442,0.789508,0.400871,0.392136,0.392143,0.387824,0.392152,0.399851,0.805606,0.806014,0.802042,0.814134,0.817451,0.813671,0.777816,0.38357,0.886481,0.392229,0.396523,0.392237,0.405073,0.400819,0.409409,0.163474,0.400806,0.202388,0.206367,0.202117,0.212342,0.239418,0.387659,0.383493,0.306357,0.392165,0.379272,0.427403,0.422971,0.432218,0.436666,0.434467,0.379378,0.363065,0.544141,0.566264,0.566631,0.562907,0.581707,0.590269,0.613595,0.374934,0.3511,0.343474,0.335091,0.366089,0.788538,0.796786,0.772196,0.816006,0.811564,0.574579,0.577454,0.573505,0.56082,0.563463,0.558296,0.581236,0.581209,0.576092,0.567526,0.564161,0.545786,0.548604,0.35368,0.362581,0.400998,0.633774,0.789794,0.208537,0.216148,0.239405,0.247178,0.623858,0.344579,0.404986,0.410659,0.406802,0.417081,0.324123,0.554574,0.610391,0.559112,0.783691,0.770477,0.77906,0.802058,0.795551,0.797738,0.574375,0.626635,0.611232,0.285234,0.462563,0.457187,0.467963,0.452444,0.448633,0.434795,0.43698,0.432516,0.417478,0.424899,0.420152,0.283814,0.433408,0.441238,0.751591,0.297154,0.242612,0.273487,0.279098,0.27569,0.279841,0.273767,0.301535,0.310512,0.301935,0.319349,0.31905,0.31056,0.334755,0.340986,0.34931,0.348264,0.343133,0.371094,0.378223,0.764902,0.384624,0.385306,0.576149,0.220816,0.213806,0.208677,0.195865,0.191469,0.392433,0.628556,0.396568,0.564777,0.66616,0.665263,0.659038,0.680522,0.69071,0.681815,0.696544,0.694942,0.689655,0.724363,0.726986,0.719101,0.74638,0.755169,0.748372,0.760745,0.755754,0.581885,0.58119,0.576088,0.391855,0.410941,0.39065,0.581944,0.586338,0.813451,0.359771,0.211247,0.367368,0.810843,0.81347,0.807064,0.817667,0.813546,0.571929,0.220491,0.801811,0.79638,0.801217,0.797335,0.796932,0.317556,0.813773,0.809563,0.817775,0.813867,0.202406,0.202448,0.198545,0.194287,0.19831,0.194164,0.804978,0.80531,0.184723,0.183218,0.798049,0.184949,0.187208,0.788788,0.802392,0.77651,0.788423,0.396201,0.401113,0.439524,0.816254,0.819017,0.814079,0.802385,0.795229,0.796965,0.791679,0.781897,0.771771,0.784546,0.785067,0.776049,0.767003,0.59509,0.590772,0.590709,0.599254,0.59964,0.590662,0.609918,0.604152,0.402744,0.590328,0.581005,0.581755,0.577096,0.595213,0.384932,0.560986,0.565395,0.564905,0.569636,0.81761,0.703511,0.573963,0.673574,0.556463,0.601705,0.532496,0.536278,0.528079,0.389232,0.542829,0.52384,0.518597,0.504665,0.398198,0.390096,0.515208,0.636838,0.643518,0.513049,0.506069,0.487475,0.60842,0.590252,0.585564,0.572918,0.56876,0.463189,0.470526,0.468092,0.47267,0.463675,0.458043,0.447827,0.438697,0.432629,0.43955,0.427657,0.427487,0.422935,0.415956,0.415548,0.447943,0.577089,0.582834,0.581429,0.564709,0.56221,0.793583,0.402039,0.391964,0.579551,0.57535,0.556127,0.523198,0.528853,0.53042,0.359443,0.621495,0.537082,0.527125,0.526771,0.520267,0.515787,0.506184,0.505901,0.210143,0.215605,0.210057,0.604652,0.600234,0.22366,0.220625,0.194304,0.194378,0.190603,0.194261,0.198389,0.181586,0.183631,0.486586,0.478735,0.194795,0.197604,0.194987,0.187609,0.189709,0.184378,0.460496,0.46545,0.460166,0.780913,0.807533,0.599142,0.804997,0.771812,0.782678,0.77916,0.773038,0.795118,0.772936,0.768415,0.782072,0.603764,0.453274,0.744836,0.608243,0.42931,0.731656,0.735977,0.755184,0.732963,0.178243,0.436248,0.175461,0.710463,0.194419,0.444505,0.42529,0.420742,0.425644,0.416959,0.632113,0.432007,0.427242,0.427575,0.60771,0.60298,0.599111,0.599115,0.594884,0.590593,0.590594,0.607847,0.607837,0.603462,0.590577,0.586347,0.572853,0.581915,0.582029,0.559573,0.553973,0.570174,0.42193,0.426781,0.542417,0.542254,0.534519,0.558603,0.763261,0.525948,0.534329,0.528881,0.540906,0.600627,0.520298,0.502966,0.504788,0.497172,0.498407,0.492398,0.491395,0.435838,0.435751,0.416295,0.480619,0.484185,0.47733,0.466098,0.470093,0.461723,0.477652,0.483517,0.464031,0.471669,0.194221,0.46335,0.390464,0.469057,0.455704,0.455739,0.387812,0.435647,0.614765,0.386301,0.41913,0.429727,0.432392,0.424567,0.42152,0.41652,0.413489,0.407523,0.41073,0.400019,0.384381,0.371771,0.409549,0.405131,0.402502,0.398835,0.363788,0.355129,0.379613,0.386335,0.342058,0.40107,0.371481,0.364356,0.259418,0.254273,0.239397,0.223531,0.226937,0.220699,0.609057,0.186085,0.235661,0.219586,0.226797,0.226304,0.217564,0.228789,0.228559,0.230636,0.305402,0.336123,0.599886,0.595403,0.599805,0.370257,0.212393,0.214492,0.20906,0.190746,0.253808,0.189269,0.204351,0.201423,0.244829,0.234865,0.182519,0.255135,0.218322,0.214293,0.18533,0.185708,0.673148,0.301688,0.189971,0.185284,0.186477,0.186838,0.19428,0.193904,0.193153,0.18517,0.190354,0.170115,0.210207,0.193972,0.219855,0.594086,0.764178,0.223566,0.228159,0.744572,0.235555,0.262083,0.253391,0.250667,0.258592,0.250973,0.274062,0.279413,0.271572,0.262159,0.262661,0.25757,0.300139,0.299412,0.294131,0.293063,0.284345,0.284311,0.291077,0.295191,0.287902,0.304039,0.310345,0.304509,0.599198,0.598807,0.594937,0.330658,0.332688,0.326787,0.31922,0.309365,0.318227,0.318966,0.326423,0.318188,0.599143,0.603202,0.333345,0.336014,0.325793,0.616272,0.612131,0.359253,0.354855,0.348438,0.348309,0.35529,0.34595,0.372284,0.377037,0.36388,0.363159,0.362559,0.403442,0.391527,0.616424,0.620686,0.607791,0.607495,0.411094,0.736929,0.74205,0.629417,0.701655,0.6254,0.637212,0.636274,0.625091,0.603896,0.614402,0.622268,0.615222,0.627216,0.628873,0.648455,0.647982,0.641518,0.63616,0.64291,0.639704,0.651673,0.655511,0.650245,0.644059,0.636289,0.680218,0.680308,0.672598,0.672531,0.663274,0.663949,0.66367,0.673256,0.6833,0.680923,0.672456,0.695767,0.69638,0.687765,0.699324,0.705649,0.696528,0.726046,0.711736,0.713286,0.577919,0.728481,0.72218,0.740828,0.728226,0.731733,0.736287,0.740992,0.735254,0.750339,0.757438,0.749761,0.748581,0.767272,0.765449,0.67079,0.769841,0.824846,0.814166,0.810014,0.817777,0.814013,0.584881,0.821195,0.805858,0.80591,0.678877,0.202553,0.20727,0.209262,0.202447,0.805732,0.801719,0.810061,0.80589,0.80596,0.230458,0.226961,0.23879,0.261898,0.255987,0.801816,0.813932,0.694486,0.289553,0.817361,0.813873,0.797458,0.797878,0.793564,0.782314,0.325304,0.686463,0.321222,0.681829,0.344283,0.665601,0.438469,0.79027,0.389403,0.394657,0.400637,0.409643,0.415022,0.421058,0.432603,0.431625,0.407581,0.426855,0.664421,0.580441,0.588648,0.583459,0.576615,0.591421,0.593777,0.61048,0.611939,0.605925,0.597015,0.598459,0.603685,0.602642,0.612857,0.620355,0.61278,0.606102,0.600214,0.655773,0.64562,0.63996,0.628665,0.674807,0.663422,0.698357,0.729278,0.639901,0.743615,0.736564,0.737736,0.628545,0.738163,0.755256,0.76191,0.752599,0.648312,0.741457,0.646026,0.775885,0.767547,0.777329,0.784173,0.793666,0.786258,0.801832,0.403171,0.72674,0.391986,0.798631,0.786708,0.774938,0.172421,0.635399,0.600429,0.639228,0.629652,0.190498,0.193243,0.206642,0.208425,0.203797,0.193649,0.185396,0.203344,0.207437,0.203962,0.633853,0.641419,0.604322,0.211567,0.22484,0.212081,0.649973,0.60049,0.767861,0.354905,0.60656,0.396311,0.391612,0.386054,0.39295,0.822909,0.401381,0.410001,0.409241,0.418146,0.418252,0.414338,0.418653,0.422334,0.585596,0.61319,0.59047,0.59073,0.447101,0.57919,0.57125,0.571085,0.565525,0.577783,0.571074,0.771924,0.761763,0.574504,0.553196,0.762436,0.547833,0.667603,0.57156,0.576402,0.564051,0.561388,0.559804,0.558562,0.562321,0.559279,0.573426,0.5738,0.569856,0.576526,0.60083,0.593919,0.66133,0.5281,0.572891,0.50256,0.535832,0.718925,0.75515,0.788065,0.770385,0.77234,0.776372,0.794163,0.797611,0.812872,0.811722,0.808933,0.801504,0.80477,0.809076,0.805786,0.813586,0.813429,0.830066,0.72325,0.450626,0.448002,0.446216,0.435482,0.434768,0.431336,0.726374,0.443565,0.44258,0.42723,0.426767,0.181751,0.181741,0.422575,0.202779,0.734561,0.197505,0.430914,0.426454,0.426096,0.415501,0.209699,0.73339,0.739051,0.73306,0.734423,0.728065,0.423137,0.434887,0.409571,0.404384,0.438271,0.434747,0.418317,0.418512,0.413788,0.409289,0.423226,0.419385,0.400862,0.364179,0.422891,0.418041,0.392979,0.440981,0.441426,0.438874,0.447734,0.509317,0.520485,0.581718,0.581853,0.577574,0.618331,0.558056,0.558957,0.654028,0.652063,0.644662,0.582132,0.581881,0.577527,0.658041,0.666562,0.670083,0.656897,0.590472,0.684729,0.677207,0.357808,0.633173,0.723999,0.718219,0.221048,0.711706,0.719626,0.713435,0.335511,0.194005,0.18995,0.198281,0.202081,0.318343,0.776343,0.28571,0.185072,0.18539,0.181163,0.789277,0.189058,0.186411,0.186425,0.801629,0.797943,0.797833,0.801779,0.797808,0.182516,0.820321,0.820708,0.817549,0.194044,0.198174,0.194044,0.826984,0.178919,0.176007,0.710702,0.706317,0.701931,0.303978,0.698033,0.697526,0.681147,0.675253,0.668746,0.179026,0.676055,0.671579,0.39934,0.202529,0.201227,0.20275,0.211508,0.434678,0.680807,0.688896,0.679706,0.697772,0.697654,0.706182,0.710116,0.70177,0.719763,0.713623,0.409852,0.237314,0.442546,0.442052,0.418762,0.418065,0.439496,0.441996,0.244301,0.813964,0.809917,0.814224,0.535209,0.543996,0.553136,0.560054,0.560167,0.580918,0.55933,0.80587,0.80573,0.365337,0.614104,0.809327,0.804721,0.805768,0.813426,0.793317,0.7887,0.220384,0.222494,0.820152,0.79788,0.797407,0.821363,0.231847,0.785035,0.622695,0.607043,0.704558,0.711224,0.322727,0.207528,0.196145,0.222406,0.227897,0.213456,0.712904,0.725652,0.730891,0.591348,0.591077,0.199879,0.573052,0.5651,0.386003,0.409883,0.412983,0.417242,0.269125,0.418104,0.430874,0.573345,0.436069,0.232841,0.474608,0.471857,0.473059,0.491241,0.494159,0.19141,0.267613,0.496735,0.499701,0.506791,0.529029,0.234956,0.551724,0.568862,0.581119,0.569198,0.565493,0.56577,0.205488,0.221075,0.609965,0.573413,0.426348,0.632415,0.586851,0.558459,0.554231,0.790274,0.792349,0.821249,0.426176,0.430328,0.54365,0.226455,0.230066,0.248472,0.259302,0.426417,0.379817,0.396488,0.413693,0.400802,0.417979,0.417931,0.431412,0.43595,0.465393,0.457955,0.484697,0.506494,0.500854,0.514108,0.534403,0.530394,0.538507,0.55378,0.426421,0.557841,0.390969,0.564746,0.576519,0.590069,0.589769,0.622494,0.612408,0.619984,0.631875,0.407225,0.453506,0.448191,0.444377,0.434742,0.430647,0.435862,0.746335,0.75903,0.776557,0.773363,0.779293,0.774346,0.783772,0.79438,0.383606,0.38511,0.297368,0.288814,0.274672,0.280485,0.264754,0.257888,0.462592,0.43583,0.249697,0.241984,0.237391,0.231113,0.261129,0.544587,0.521551,0.431775,0.2995,0.338611,0.340121,0.437934,0.685384,0.779031,0.462993,0.679497,0.454329,0.485362,0.481537,0.505882,0.663602,0.518551,0.529411,0.622102,0.524197,0.610835,0.390357,0.562515,0.419258,0.37731,0.386183,0.443924,0.588395,0.247781,0.51194,0.544839,0.228972,0.50486,0.780124,0.616317,0.78955,0.365412,0.429906,0.427322,0.782783,0.418019,0.776793,0.424126,0.667825,0.807454,0.640527,0.636875,0.651446,0.634684,0.621042,0.40521,0.595544,0.628092,0.262822,0.428103,0.375684,0.433009,0.610879,0.61034,0.603755,0.568349,0.190121,0.198967,0.19767,0.203785,0.408708,0.218954,0.210118,0.323568,0.522288,0.437273,0.64518,0.598255,0.422785,0.433357,0.461682,0.774705,0.782391,0.581211,0.383577,0.593798,0.349938,0.408615,0.403296,0.566758,0.326007,0.56265,0.584538,0.409748,0.427049,0.213109,0.762567,0.779297,0.816014,0.263205,0.483637,0.51074,0.551724,0.610227,0.237126,0.60667,0.563809,0.567984,0.458375,0.449348,0.788169,0.795801,0.5717,0.553093,0.444288,0.436288,0.56451,0.57338,0.570004,0.580943,0.217472,0.39778,0.394201,0.403474,0.400995,0.595794,0.638098,0.361036,0.645107,0.807066,0.811445,0.392453,0.389898,0.39835,0.430555,0.809992,0.611457,0.800516,0.590826,0.392268,0.795846,0.438977,0.482231,0.78829,0.785226,0.437857,0.676734,0.428303,0.530115,0.277442,0.524057,0.570035,0.582866,0.507052,0.457581,0.396603,0.744578,0.225857,0.225184,0.22107,0.26413,0.60936,0.718179,0.445491,0.429124,0.478698,0.487407,0.584798,0.754249,0.514812,0.41624,0.793626,0.208024,0.205561,0.62848,0.594849,0.373954,0.76096,0.777032,0.689005,0.654979,0.418094,0.693748,0.696619,0.353244,0.336263,0.750761,0.581093,0.273514,0.292195,0.571805,0.236378,0.242007,0.309813,0.207704,0.194848,0.304268,0.202376,0.231776,0.322184,0.3758,0.384098,0.316692,0.327935,0.764477,0.769265,0.772363,0.620734,0.629723,0.247978,0.634214,0.239159,0.621652,0.372708,0.740974,0.3348,0.366236,0.351399,0.367984,0.412642,0.616285,0.574185,0.367611,0.572657,0.325623,0.570889,0.568979,0.74133,0.195742,0.42202,0.425808,0.428388,0.619979,0.391361,0.213303,0.318284,0.313367,0.418394,0.300332,0.299351,0.573312,0.571829,0.573641,0.668439,0.581432,0.654956,0.344407,0.685148,0.648231,0.786086,0.385848,0.38284,0.600311,0.41205,0.753787,0.759838,0.760667,0.77457,0.547938,0.671055,0.802292,0.708636,0.486013,0.484856,0.702803,0.213018,0.518144,0.80711,0.805903,0.787377,0.795352,0.804064,0.630159,0.573008,0.577374,0.580765,0.551168,0.576173,0.371677,0.444405,0.617309,0.607473,0.815749,0.561835,0.632263,0.49522,0.544838,0.472428,0.25189,0.579788,0.471107,0.780739,0.777401,0.796973,0.189988,0.452267,0.450428,0.450391,0.232387,0.44141,0.188729,0.315001,0.225553,0.381764,0.179895,0.193332,0.188867,0.629836,0.624274,0.752292,0.817414,0.518688,0.513835,0.538886,0.799146,0.486416,0.780173,0.597086,0.788095,0.491953,0.601837,0.49633,0.499901,0.606775,0.402626,0.455286,0.615053,0.524076,0.463839,0.61187,0.238869,0.229816,0.650845,0.510125,0.587628,0.811949,0.452648,0.189681,0.443453,0.411866,0.202209,0.521791,0.217355,0.514567,0.411249,0.479681,0.801731,0.775135,0.789644,0.222165,0.220837,0.804268,0.427804,0.554898,0.530172,0.525977,0.777554,0.383861,0.505036,0.432392,0.257197,0.221175,0.405283,0.246818,0.353183,0.3751,0.355094,0.445284,0.791753,0.771339,0.762843,0.390494,0.249162,0.753994,0.386174,0.191481,0.312308,0.371189,0.745855,0.753804,0.745058,0.759226,0.711706,0.377657,0.374406,0.365926,0.357366,0.430299,0.399873,0.41171,0.417632,0.407016,0.423126,0.420575,0.398825,0.346608,0.334983,0.446542,0.355466,0.456399,0.608559,0.791376,0.785037,0.727224,0.563835,0.392026,0.742185,0.773195,0.792451,0.778693,0.776859,0.38385,0.617653,0.645612,0.780133,0.651357,0.610811,0.635451,0.624456,0.610728,0.603818,0.654651,0.393659,0.383276,0.289389,0.64449,0.407998,0.567255,0.666619,0.543705,0.228954,0.371876,0.771373,0.797476,0.645974,0.810081,0.771118,0.239748,0.571012,0.567163,0.566196,0.572903,0.334039,0.241737,0.562518,0.558958,0.43446,0.56241,0.25639,0.56946,0.571288,0.557271,0.255722,0.649271,0.599087,0.621383,0.652381,0.72071,0.718518,0.191708,0.18969,0.603242,0.687414,0.675487,0.298498,0.692535,0.437795,0.437156,0.808041,0.281933,0.539696,0.55657,0.280825,0.28881,0.597922,0.672601,0.809352,0.200435,0.803756,0.226836,0.605158,0.42303,0.566534,0.439823,0.431951,0.49098,0.401204,0.501098,0.255837,0.409996,0.495677,0.587518,0.615681,0.368271,0.381912,0.57342,0.595705,0.574201,0.212055,0.21319,0.23305,0.242445,0.27158,0.311158,0.243476,0.421326,0.386655,0.427498,0.567746,0.586913,0.618733,0.625359,0.627058,0.656825,0.817759,0.674007,0.430625,0.753455,0.433886,0.779023,0.192869,0.224065,0.211867,0.240877,0.231717,0.296419,0.307979,0.330553,0.567711,0.446236,0.360265,0.610124,0.604779,0.728059,0.401733,0.787859,0.638331,0.39899,0.675828,0.704697,0.190738,0.385331,0.368589,0.815613,0.375904,0.383485,0.349092,0.360664,0.460573,0.408877,0.642637,0.638739,0.439671,0.396316,0.420147,0.365829,0.362797,0.417426,0.424052,0.391824,0.469044,0.460763,0.448276,0.412001,0.636181,0.640751,0.631556,0.368778,0.811936,0.396523,0.811812,0.362581,0.35561,0.318167,0.324613,0.329985,0.32387,0.571878,0.568023,0.311204,0.568241,0.680334,0.307588,0.366563,0.745745,0.693419,0.678811,0.676313,0.725043,0.326043,0.808879,0.31506,0.315963,0.80371,0.763027,0.487076,0.810846,0.761845,0.427769,0.808605,0.667072,0.340667,0.38118,0.781482,0.286867,0.439435,0.234965,0.196037,0.708129,0.79072,0.691231,0.623824,0.709244,0.547413,0.659455,0.403907,0.4815,0.548464,0.424182,0.415458,0.386733,0.425097,0.196396,0.565225,0.347684,0.335361,0.338868,0.254231,0.473976,0.648435,0.534413,0.58668,0.591348,0.317644,0.314854,0.406108,0.374689,0.51519,0.734843,0.192586,0.606483,0.358178,0.366998,0.748616,0.244025,0.61505,0.613686,0.243759,0.413374,0.60049,0.195434,0.193182,0.189456,0.51063,0.794705,0.789175,0.217297,0.635178,0.401528,0.387718,0.773785,0.42821,0.41361,0.190035,0.601223,0.393323,0.503265,0.488005,0.428306,0.777943,0.619585,0.441193,0.41447,0.798568,0.801353,0.625109,0.790519,0.564106,0.617802,0.426768,0.748543,0.572657,0.746409,0.361289,0.402075,0.263886,0.684104,0.830047,0.693172,0.726702,0.775402,0.488581,0.587149,0.489094,0.393294,0.656281,0.617391,0.441828,0.590989,0.329415,0.265568,0.586165,0.260238,0.358024,0.655929,0.430206,0.352141,0.325622,0.170643,0.793527,0.572712,0.156011,0.439309,0.170042,0.453156,0.319786,0.372284,0.379005,0.462811,0.793992,0.432675,0.570419,0.401471,0.236712,0.526415,0.636684,0.384811,0.776333,0.590959,0.435678,0.393731,0.182839,0.663887,0.245346,0.272323,0.528786,0.436018,0.384438,0.550013,0.428582,0.495362,0.798069,0.76327,0.693361,0.480169,0.628871,0.547833,0.578648,0.582403,0.790974,0.684276,0.573324,0.456515,0.384917,0.545858,0.689826,0.373141,0.274312,0.397044,0.478107,0.351469,0.552436,0.421903,0.719253,0.768096,0.780276,0.549083,0.682874,0.75381,0.632653,0.271166,0.735053,0.640555,0.641324,0.77382,0.453589,0.196861,0.357581,0.435922,0.728904,0.555135,0.66414,0.642657,0.392404,0.174359,0.808333,0.236242,0.83394,0.580898,0.775405,0.619706,0.404194,0.184742,0.454455,0.835337,0.686322,0.176851,0.664272,0.353017,0.824207,0.597535,0.460886,0.290902,0.533588,0.173381,0.4475,0.591582,0.343584,0.621163,0.680436,0.208509,0.595339,0.578779,0.724687,0.330966,0.592606,0.348493,0.782405,0.455844,0.542349,0.293351,0.67261,0.569156,0.453888,0.201696,0.423451,0.207121,0.555545,0.754957,0.276804,0.66457,0.768484,0.765217,0.627502,0.612005,0.842276,0.769283,0.75176,0.566948,0.553317,0.290241,0.586962,0.561457,0.314598,0.349726,0.325725,0.580733,0.192036,0.319726,0.590882,0.371626,0.665011,0.601631,0.204237,0.342562,0.218663,0.350378,0.799806,0.82293,0.799546,0.348931,0.418837,0.165493],"Archive1402_field3":[0,0,1,1,0.884969728055759,0.787285956925816,0.702949277727044,0.615593750655926,0.520274538506784,0.420215981243339,0.321971930907894,0.225079335022761,0.119712987887053,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0.906955058958626,0.788430091408432,0.6819423947799,0.592161123284649,0.509065641115057,0.423509636485615,0.331616940243846,0.208961470267783,0.091269653068618,0.551724136994895,0.620689654695512,0.582127163775384,0.673092151361603,0.719943976560555,0.256911103433847,0.438055059488914,0.384309080461328,0.423373987594036,0.344827585941951,0.32319600188471,0.827586206772911,0.572533872651434,0.404368312800646,0.403206868891797,0.322383713696509,0.224218526644836,0.330846756585731,0.460162130938994,0.591728102454662,0.258764244903591,0.36135691060811,0.371596514919397,0.620689654695512,0.740873876671189,0.296741758796146,0.60004164460119,0.561913757130423,0.793103447410374,0.334229544349229,0.667183436003684,0.241379309903252,0.810353393070729,0.176254432393475,0.274013446666313,0.66915329873483,0.404917226969187,0.344827585941951,0.22422233864127,0.560467520924721,0.620689654695512,0.448275861980651,0.344827585941951,0.808884011356983,0.68965517239613,0.329141512586867,0.569088733493433,0.344827585941951,0.310126844104498,0.198206597052707,0.21852328001384,0.471461743788292,0.606422909215487,0.639039006353392,0.206896551565171,0.267029928618139,0.39772655698259,0.249881240073481,0.284351469328954,0.773076150401566,0.810877694711907,0.219869610359771,0.769879382122196,0.602223359469532,0.581663716800198,0.505236090584878,0.413793102618114,0.429967972058773,0.597772081706461,0.774574335687397,0.555915561789568,0.103448275526472,0.413793102618114,0.640583512364499,0.757641055162662,0.283851524101432,0.793103447410374,0.29221921380816,0.356989867619229,0.701845953382408,0.662035152979228,0.430369713046001,0.758620689072293,0.620689654695512,0.839157864627575,0.429474460407602,0.420007353434346,0.400925382367266,0.322194324780437,0.266333339285416,0.586206896357431,0.192243406309042,0.528392163830243,0.192593942994805,0.562762013927812,0.595351682179935,0.499990195455021,0.821839079700261,0.602419082589838,0.419297631615119,0.344827585941951,0.632750420070021,0.249196705500778,0.252370220704349,0.558773613543039,0.593980519048852,0.418988747213957,0.646423038091905,0.344827585941951,0.608039481526278,0.598624985430972,0.408965045734276,0.560459137810822,0.21338385237696,0.305808568239034,0.595325969388081,0.59186785550962,0.31034482555496,0.453600989471749,0.769797317143341,0.598062836330443,0.775482384791116,0.399550919467165,0.212121553963164,0.202527051933601,0.463071790629133,0.607481758070627,0.620689654695512,0.315123982136253,0.245922591905969,0.206896551565171,0.185775000542193,0.839340791282561,0.839474338190141,0.230461593326611,0.465663312017604,0.215179707356896,0.417276514384222,0.413793102618114,0.595120666590632,0.349203859268878,0.304636860317212,0.187231266160711,0.248833471721815,0.396656784365565,0.172413792202635,0.219760269270987,0.418217446439171,0.427051292804118,0.578263400614507,0.655172413033594,0.574842697777639,0.631126611010289,0.490547470506791,0.801896592184805,0.442158750996142,0.413793102618114,0.640547126802194,0.525227485574063,0.56373862876905,0.427504570016176,0.796172527639356,0.655172413033594,0.655172413033594,0.325462593860424,0.185030574291042,0.627123880551312,0.612554845085884,0.568583534861527,0.839881033440941,0.185538743841964,0.472791966630884,0.775647194986834,0.495517637716157,0.448275861980651,0.425122805754769,0.241379309903252,0.709328423961372,0.556602544809321,0.800373684754943,0.189291139542396,0.586206896357431,0.368278324155396,0.646067234683845,0.675667321426484,0.402683616292368,0.448275861980651,0.505598641052468,0.288261633122584,0.392465966048153,0.351336818282806,0.761963912390139,0.517241378656813,0.671660079268422,0.677886571295454,0.605709035280821,0.185696485299334,0.571110604723087,0.827586206772911,0.257623683482058,0.480218182346056,0.772946738193693,0.40524120159004,0.626465622220622,0.379310344280033,0.206896551565171,0.57212547680561,0.558340668686052,0.788797305187953,0.325841251831354,0.771646632274284,0.793103447410374,0.19596751373817,0.691643714012246,0.572942759211122,0.439591436450921,0.3215700353231,0.539822975536643,0.805149920615507,0.564916399414573,0.610611980837408,0.806469717581263,0.413793102618114,0.734025518022501,0.679409474627496,0.379310344280033,0.538395690720897,0.211166468040241,0.172413792202635,0.758620689072293,0.679525156067242,0.352548101919282,0.238999845542945,0.231650880893367,0.413793102618114,0.565377426627444,0.184891899987023,0.167081392106676,0.80399475354142,0.764229337511798,0.286518802900351,0.172413792202635,0.702133109096562,0.475339254108574,0.357194236113871,0.62814951965413,0.40341889416186,0.540229884898504,0.177571507382739,0.614406848386309,0.389796539991905,0.202552413337447,0.366553266175607,0.577404410603833,0.413793102618114,0.349770896043415,0.565081860139111,0.407952639514536,0.292474994568597,0.275862068241334,0.468984155095168,0.75177760739045,0.627455208708956,0.506925775163738,0.577087822302326,0.655172413033594,0.202522436764578,0.581757161423338,0.580037421388586,0.775258829281906,0.448275861980651,0.394501472771635,0.456569474382856,0.543787931272563,0.233802413273419,0.224703676695659,0.597380072015692,0.395501187020448,0.627054455296187,0.373844809107338,0.675366600905887,0.350058548618163,0.586206896357431,0.604080127509386,0.271388742161345,0.612977210397811,0.229883855096888,0.633370652686218,0.767097649180421,0.586206896357431,0.745659997496437,0.356343056546844,0.686664594092094,0.817379899292607,0.258219469532575,0.2922224336697,0.329724271669727,0.459772680336398,0.644882113574894,0.338302108820809,0.695394830168593,0.482758619294277,0.188200599176996,0.339083356027569,0.773705394122475,0.422349679258046,0.370900548455213,0.241379309903252,0.21846726282357,0.620689654695512,0.602322962090674,0.33793016205349,0.629017217530885,0.379310344280033,0.613069680764405,0.811900466365647,0.391233101246164,0.801247471991226,0.765208040191986,0.333370774596344,0.758620689072293,0.614805477079754,0.202193784482958,0.532360731793904,0.211895392240859,0.32910069011068,0.733179076559077,0.431408861634702,0.20228325729471,0.413793102618114,0.472947083434972,0.567269711491903,0.391966503338857,0.453104585784585,0.385148168387961,0.281003539665605,0.425409389823125,0.386446271498172,0.229885056782407,0.537877218227719,0.362156045820709,0.190471657775782,0.367992675414302,0.804659290755782,0.530897955764921,0.222883236848641,0.420561004682035,0.418088661197656,0.449165205563572,0.379310344280033,0.598056586131506,0.626358624060041,0.39299128702189,0.79754261406841,0.570152612421804,0.586206896357431,0.448275861980651,0.235699508977774,0.413793101593659,0.489989615920922,0.684816722418011,0.645267260442737,0.39187595689844,0.634154775537695,0.664984384286203,0.390756306648959,0.509519354681968,0.68965517239613,0.448275861980651,0.782641375560911,0.814347279411133,0.357350496209553,0.482760187734627,0.379310344280033,0.655172413033594,0.641530152681777,0.806036293279414,0.770147286281127,0.733080692014732,0.827586206772911,0.637746145378562,0.813141255325769,0.63356790326868,0.546259267717841,0.373484243008759,0.172413792202635,0.562601237010771,0.770134741831696,0.812983954383977,0.545760785411821,0.593718208413309,0.594898715377691,0.801791722841367,0.193000653612428,0.391411785633687,0.367743362037226,0.433494227550453,0.73509913644297,0.599569672112884,0.339947652714278,0.655172413033594,0.662524014629912,0.571009818856614,0.724137930734212,0.801962714597548,0.379310344280033,0.617919924266562,0.68044606310357,0.56848522612684,0.517241378656813,0.434028095550861,0.419378302310946,0.409392475950897,0.754069630432939,0.38655212226934,0.724137930734212,0.206896551565171,0.301806505724608,0.384711406412266,0.620689654695512,0.398198193449712,0.448275861980651,0.310344826579415,0.211797373426889,0.28411414309788,0.683342392587422,0.728843755814101,0.638701100171265,0.491237518695404,0.404408787986644,0.649751459061868,0.699837072240037,0.662308833014508,0.405442198603826,0.811060143970941,0.420236321138438,0.237021623260362,0.670383530687898,0.595687747416727,0.226791939769678,0.391284516585324,0.827586206772911,0.267510600776887,0.574623352777793,0.550456902757713,0.40522494349184,0.422595588371712,0.603373005756524,0.596338134860935,0.433816374543883,0.644359198021106,0.850963538699749,0.367816091159187,0.40333290449654,0.54926124000853,0.695787415602978,0.797549667439935,0.188927242941155,0.206896551565171,0.6673924411809,0.292877119726387,0.703137227476702,0.363290594716827,0.39882980058792,0.379310344280033,0.283740645305943,0.193685583624696,0.388509576803548,0.328744020013832,0.534365311250431,0.496319628084376,0.583732024518523,0.310344826579415,0.611490896494585,0.758620689072293,0.672380524056387,0.305693704314245,0.616898748713451,0.407006737829192,0.76416956467011,0.540180727457796,0.275862068241334,0.58300718584378,0.772697671710232,0.611526329313895,0.206896551565171,0.643986594578239,0.620689654695512,0.41834687913614,0.199757089977858,0.840859492300879,0.620689654695512,0.252477313114775,0.565971903424684,0.793103447410374,0.81426777761827,0.267842561023163,0.419566504908322,0.708036566952278,0.655172413033594,0.304707991289634,0.767652501089175,0.181235829676721,0.439925478389417,0.620689654695512,0.564189207567078,0.404174796356051,0.198987138410087,0.444080641580821,0.55172413597044,0.206896551565171,0.724137930734212,0.211411422362003,0.193292393761959,0.782048178307757,0.36343911812961,0.724137930734212,0.781040454871059,0.448275861980651,0.381958724960646,0.396255508480832,0.578116530671824,0.522944636524603,0.631376084202319,0.427411263694438,0.642421627130752,0.564453093814154,0.344827585941951,0.477044125205878,0.275862068241334,0.758620689072293,0.823415112284399,0.71423129985503,0.310344826579415,0.488155825378518,0.724137930734212,0.194315937854644,0.413793102618114,0.559363704649139,0.633864892724776,0.763336424728238,0.563108531677265,0.696558017699568,0.620689654695512,0.589644974972722,0.403752067362659,0.280802893015373,0.181788294605714,0.413793102618114,0.435757563808707,0.310344826579415,0.448275861980651,0.582366394467993,0.542691409115392,0.606599553913436,0.216819880033676,0.787624328991048,0.201774230275093,0.224608025396809,0.336611594433535,0.33594925262588,0.562319863319695,0.284855502131261,0.430898500774893,0.683584678204343,0.713481196075195,0.413793102618114,0.202551088717348,0.636183691943235,0.344827585941951,0.791338488963748,0.438668823697296,0.172413792202635,0.729970701206448,0.568911188299685,0.440680624535941,0.197919435191825,0.706896551565171,0.161178688249717,0.797954691804903,0.553929338514739,0.556620199239459,0.211229769104374,0.275862068241334,0.370605050605354,0.787879445904754,0.54410798120695,0.372937216910475,0.408962594213861,0.405172413545821,0.602950060603162,0.732204018889185,0.491046427135399,0.25872019744359,0.372224029360548,0.896551723449074,0.206896551565171,0.760357045764436,0.781234194646808,0.300816069963217,0.742632140305482,0.257917101688606,0.360101283444186,0.260697673923054,0.659162627727876,0.593251638899792,0.808422276245823,0.361295467905044,0.297953789260195,0.1979506636485,0.417615214518844,0.590651680101316,0.559725098507223,0.366805070002382,0.189213566797984,0.241379309903252,0.291892453694616,0.241379309903252,0.819158298586643,0.815266175442623,0.355213236534235,0.576626446774813,0.752453552933832,0.245469916048897,0.308033553006159,0.793103447410374,0.775862068241334,0.601444817847987,0.646128399759651,0.488345904777149,0.349099805391487,0.667466779721404,0.6828779098884,0.172413792202635,0.520907827719029,0.762303013086601,0.475041953218209,0.620689654695512,0.750803293474767,0.735270872977815,0.773308565396172,0.663628826675591,0.626171318885099,0.482758619294277,0.482758619294277,0.206896551565171,0.701490030113133,0.810755953621823,0.598875166521291,0.172413792202635,0.793103447410374,0.633096070106231,0.751343092044204,0.699063025926299,0.390670988001554,0.424411957035225,0.586206896357431,0.775681510125922,0.610651993994277,0.56327198651924,0.546031961679488,0.597191551837317,0.189026717505443,0.175554860872733,0.575507757463965,0.502568202235334,0.286566149104914,0.741112523424544,0.639383772285081,0.613519152126759,0.776958046412988,0.28561368476191,0.200587239536072,0.482758619294277,0.461210231214026,0.280536692524829,0.226355983015481,0.21712623198249,0.465409395764963,0.534646780215806,0.327619474919159,0.472001742126422,0.229045685081785,0.719151981798142,0.385517517137823,0.68965517239613,0.620689654695512,0.616174819754599,0.521269157036458,0.285919274516329,0.225351382117114,0.241379309903252,0.827586206772911,0.380801724112408,0.440753344437809,0.403228594505441,0.422081605039613,0.671535042507141,0.379310344280033,0.588394977188106,0.437995412655171,0.421785472027758,0.274531272728491,0.503125120469486,0.666183414418421,0.599486698442592,0.317432879998752,0.300878341450243,0.71551115844912,0.525420315633919,0.68965517239613,0.193893197592248,0.765020298599284,0.775296851923034,0.184960460602269,0.357612669568148,0.709744446873427,0.369112868624845,0.216638920331969,0.572159785797968,0.363039547962173,0.172413792202635,0.241379309903252,0.813511910255544,0.190062115565,0.780278187738991,0.697878052338844,0.628392688351118,0.358844447423559,0.766647377718843,0.561884532507401,0.350022744946203,0.80669635055279,0.758620689072293,0.800316336797845,0.446512245569855,0.660236078137752,0.564844535956946,0.493187270353723,0.267026032616409,0.263915279613729,0.551724136994895,0.1768824713555,0.35358843887559,0.218272409465418,0.310344826579415,0.676463436546236,0.217729113407181,0.765183398979887,0.789168910811813,0.428735552894637,0.206896551565171,0.405979113332908,0.60402300698126,0.531754658167953,0.184067505816061,0.202413165338722,0.838879614499285,0.767241379169041,0.376408579038837,0.660688572666318,0.392499197314027,0.363756122359779,0.438836799458449,0.275862068241334,0.394941358310116,0.366663966715954,0.411627909132864,0.510099793374631,0.574220333270934,0.206896551565171,0.525868577115115,0.798553095337519,0.603042933580506,0.763234951452571,0.391324229576927,0.206896551565171,0.822123553391661,0.202141429718716,0.576515389724183,0.576500082320068,0.668106784315879,0.586206896357431,0.202364549834621,0.206896551565171,0.434933096901451,0.640443477584462,0.607020502404329,0.801981780726446,0.545977010946699,0.702173037223679,0.298249507367843,0.634642668054106,0.784429579912154,0.241379309903252,0.196860752298367,0.833153892385917,0.425905921567144,0.408816842975856,0.241379309903252,0.568559446855038,0.433179344966243,0.786663367819659,0.626399017289653,0.403182059669105,0.379310344280033,0.288278399350381,0.31582886033303,0.581221872504076,0.280773413303097,0.577677873454688,0.18247777729526,0.291287313347019,0.605739217769112,0.350250530429418,0.437663207564189,0.4438894936758,0.595926027415251,0.425779665704611,0.748615300747208,0.379310344280033,0.294147602509845,0.18973057841857,0.806446564902036,0.413793102618114,0.307679129538759,0.193587455194059,0.398913077496843,0.644099559163767,0.275862068241334,0.655172413033594,0.76433709684232,0.441035504910197,0.764869332886179,0.600999351079575,0.224762578750739,0.197217672362195,0.238235911622863,0.770659390763062,0.337371089390825,0.674352713324458,0.227191066348172,0.595384557959982,0.827586206772911,0.417978189110736,0.264440341400393,0.294390195463216,0.620689654695512,0.780875263578142,0.603309898314355,0.74381350064074,0.454346560038949,0.634762568198855,0.448275861980651,0.241379309903252,0.523911459626548,0.316286218973143,0.751120823250265,0.610435615815628,0.160108004892346,0.404879332384914,0.4244600265049,0.616268780702975,0.284596221833114,0.178308065820772,0.261783968947627,0.241379309903252,0.19194712577569,0.315959123862869,0.564124732477707,0.260857202029654,0.275862068241334,0.620689654695512,0.575655335304938,0.361303895070501,0.457943085960991,0.304065171493278,0.45666354289899,0.262616515730151,0.607921793179514,0.787919435499161,0.37301105756593,0.712891120335917,0.482758619294277,0.746600200139545,0.847437149004487,0.409617641903104,0.379310344280033,0.167096988407054,0.810786432177561,0.436830956849112,0.764120117308684,0.586206896357431,0.781194243981684,0.695140208066572,0.715825772626163,0.241379309903252,0.400185299804607,0.424330594832386,0.455904297908679,0.797488766673476,0.260732657006693,0.620689654695512,0.211591176280371,0.640804743385692,0.797884842425478,0.61477442892713,0.68965517239613,0.736512149578437,0.602473820236021,0.810344826579415,0.677806297063647,0.646514495272669,0.448275861980651,0.561163366503234,0.159616697867975,0.193738500814641,0.599699746118579,0.485040069962889,0.541460410870109,0.180629784735506,0.698518076397961,0.636989351908666,0.181582045211999,0.784190733390107,0.344827585941951,0.241379309903252,0.29685886422811,0.468457169382327,0.555841782601403,0.651616496501133,0.137931031815643,0.21592552686662,0.358510075610606,0.599864454893269,0.366867864985827,0.543742096138878,0.505268016695295,0.586206896357431,0.257053377672148,0.200882096077206,0.799444175371383,0.687500668072608,0.241379309903252,0.775323434477042,0.375521575310753,0.797763696543652,0.769950936194464,0.213093504461547,0.707777565305845,0.323749960468849,0.500889396342346,0.202419386852923,0.595754163848007,0.551724136994895,0.485466707251469,0.827586206772911,0.400221331929994,0.572899846847076,0.335484198281061,0.620689654695512,0.657730727743107,0.396825736432174,0.428614902848951,0.235659923018571,0.235451035653661,0.815195388687025,0.303693885499326,0.68965517239613,0.650614488497949,0.192619583050366,0.649047252907462,0.463965933782948,0.717574015043279,0.793103447410374,0.810768007357389,0.219015414797715,0.247250145019265,0.218338606663364,0.588663771598287,0.32527084972269,0.161120383451805,0.323053299424288,0.379310344280033,0.675673029688814,0.333773895524232,0.862068965110992,0.357398080087638,0.571639713106341,0.329317854046186,0.680445130849672,0.744545954088258,0.586206896357431,0.41671787711486,0.302832374305308,0.211458508355039,0.402075266327779,0.707008936309264,0.551724136994895,0.18011682585824,0.57980031951312,0.620002666553485,0.817194277296955,0.666438772079012,0.448275861980651,0.603037123897147,0.477552302952439,0.385593203860888,0.440498155812266,0.728336990790756,0.363126088784194,0.603448275526472,0.340377269117513,0.236579178633708,0.59100040247757,0.255734383878982,0.573639332152567,0.586206896357431,0.443203171429414,0.423425921307342,0.783545019508847,0.421532465491009,0.413793102618114,0.405572737712015,0.379310344280033,0.798913788468497,0.214656646330521,0.425128736323797,0.609049265141645,0.448275861980651,0.218293519381707,0.752672904080407,0.353967992220044,0.628167131057165,0.222329007808426,0.383719484166912,0.473963014803792,0.626902043052858,0.49314216053406,0.387931034376781,0.379310344280033,0.63670043823002,0.432029975282056,0.50994291245932,0.252241537908317,0.70788662876737,0.781092425464739,0.659597049848733,0.833242921608726,0.63507643042605,0.191797821728324,0.275862068241334,0.811653424204936,0.338303475443556,0.778170501001338,0.594625159301446,0.633327457572639,0.241379309903252,0.793103447410374,0.262431908969238,0.771961987132171,0.438512883231522,0.246301456816775,0.741836060017195,0.551724136994895,0.763978521259482,0.774018429614621,0.176653670637546,0.555906199296849,0.353856562267855,0.298850433108258,0.702375240020803,0.75425553005585,0.541530393428663,0.789509893431803,0.379310344280033,0.793103447410374,0.718204105988335,0.797325736980257,0.748142840618401,0.220712022642337,0.310344826579415,0.413793102618114,0.38413766970312,0.787843999767531,0.330274296347307,0.802068989493017,0.819344371342421,0.423998179728164,0.369118743873312,0.815768298661121,0.407903732040807,0.301744574356586,0.801840915113539,0.758620689072293,0.193666931375551,0.782450198971154,0.37178832462224,0.749515877477374,0.758620689072293,0.68965517239613,0.593013658042079,0.252005832364788,0.356364808796313,0.599011974268604,0.517241378656813,0.186015956416741,0.793103447410374,0.398569382120454,0.413793102618114,0.731239422952048,0.655172413033594,0.608465314617814,0.454022988028846,0.799145714798147,0.283723197815682,0.181446758780113,0.70204620971535,0.493125190439751,0.227519767803624,0.730220709163901,0.65331706079032,0.329766741469285,0.366491850108366,0.206896551565171,0.418986505706782,0.547964969648016,0.587491128349203,0.668127538746342,0.390233906395951,0.413793102618114,0.406905825954774,0.801896800149136,0.296490803217972,0.384245289707785,0.287810885289508,0.482758619294277,0.592348258236748,0.774498869222122,0.441747934363548,0.645979311872254,0.77073419850388,0.198174888126715,0.286617622838,0.177142422671562,0.392715653351243,0.219981511561183,0.371832868942835,0.286531268466759,0.174215395398639,0.206896551565171,0.357849135257163,0.323152555779696,0.275862068241334,0.43211928930331,0.286856322863005,0.639661599313525,0.650203122757564,0.636249908605823,0.425812139898364,0.437355387571599,0.604357831603249,0.176467500558558,0.438387317851547,0.413793102618114,0.551724136994895,0.741691946882468,0.418389591731494,0.393192674352967,0.187805468996806,0.744672419964031,0.388909373375503,0.429493182319676,0.418324246879969,0.344827585941951,0.319266957388508,0.68202837457138,0.551724136994895,0.581949266169173,0.564336258838266,0.735446139784014,0.409448317959391,0.236820418282245,0.471378876661303,0.712587624567177,0.581819555844944,0.176829008131129,0.391011655089456,0.277615508742272,0.137931031815643,0.362607598875284,0.612696296686955,0.232215984521635,0.80169169302256,0.407665296325148,0.354005247544502,0.379310344280033,0.806211943231721,0.664420172958095,0.703310983212023,0.61351852925822,0.655172413033594,0.604830194408847,0.471864642409482,0.709757579359932,0.197889302901821,0.451221735124683,0.793103447410374,0.568685977271466,0.788924879523856,0.353506238668697,0.672014156470088,0.333884016223144,0.68965517239613,0.344827585941951,0.582463403169497,0.5632600229357,0.782804627560828,0.45093000726861,0.344827585941951,0.401796083945591,0.702721381795333,0.448275861980651,0.696624165723682,0.536783790948599,0.161278419952168,0.551724136994895,0.613707887440648,0.566983829175107,0.221304407502808,0.38537595899345,0.328694231508946,0.172413792202635,0.617412118397106,0.179141331770589,0.62471947481364,0.582825009089732,0.568856726231851,0.803065887515495,0.291820382272657,0.711663702560276,0.482758619294277,0.425342768500878,0.183218518582376,0.542848261345968,0.758620689072293,0.353132926303086,0.823167284366831,0.567521551174597,0.258729479004377,0.827586206772911,0.811728328244508,0.206962756958755,0.620689654695512,0.358324538644706,0.655172413033594,0.81107659261774,0.818986915488715,0.182276609197517,0.602769171588839,0.203160611682721,0.448275861980651,0.293012052721355,0.781683363794986,0.213648430131048,0.620689654695512,0.50127729489587,0.551724136994895,0.227565044609425,0.753457241042943,0.433293217218754,0.413793102618114,0.484760418380388,0.405307479719918,0.820017899172397,0.722219631888177,0.39660398806129,0.430482222773584,0.64950620457484,0.362953566492492,0.812454950495116,0.673316898311784,0.566655803859845,0.595942395130119,0.594211243692982,0.197061255524923,0.392912741045386,0.408715193493958,0.607156441413943,0.583842665640491,0.237075664277259,0.206896551565171,0.724137930734212,0.788765546063674,0.398441864129567,0.297457592512907,0.487965747004343,0.738165901404029,0.379310344280033,0.384944400223852,0.693895371485404,0.590423120130248,0.787651948293347,0.758620689072293,0.793103447410374,0.241379309903252,0.362538737070317,0.821575120716891,0.55072437152334,0.793103447410374,0.458737701278867,0.303032885727503,0.196139396770056,0.288802040218191,0.620689654695512,0.399271594685755,0.436684429074344,0.67796884423864,0.82398574899322,0.822580019731615,0.769206085819012,0.565858203280585,0.372063718570456,0.744850404648902,0.413793101593659,0.59055818118207,0.360632136474021,0.297930125378007,0.551724136994895,0.440919679022319,0.581757172692341,0.629144416916319,0.772216198427804,0.448275861980651,0.310344826579415,0.758620689072293,0.383810466000634,0.482758619294277,0.202527051933601,0.379310344280033,0.586206896357431,0.68965517239613,0.334979794626105,0.447456365728245,0.310344826579415,0.586206896357431,0.228882021251025,0.223163518470864,0.181606327864906,0.707122783974859,0.581679082598238,0.586206896357431,0.190867215153638,0.344827585941951,0.562183512479238,0.373285779471775,0.782197812229579,0.494731980231341,0.482758619294277,0.520275867143903,0.551724136994895,0.33561774518864,0.413793102618114,0.642809935466209,0.379310344280033,0.620689654695512,0.802187622387137,0.482758619294277,0.575009124563084,0.551724136994895,0.413793102618114,0.561041959385427,0.41928341935322,0.21793711461866,0.413793102618114,0.423861613752192,0.217954697336959,0.199513337341615,0.356655583909392,0.713004037796524,0.28429989827266,0.560201171888226,0.298200558915921,0.757734959766022,0.724137930734212,0.42008656940431,0.608378251323829,0.204753887890609,0.608124042077106,0.453913382630715,0.74667821237508,0.226999220789409,0.269289308431828,0.18863767463587,0.354732738532808,0.399304312699758,0.453369754649112,0.546509109713611,0.267908269556154,0.628360749947243,0.291963432023268,0.224364957096395,0.590429701228095,0.40200789203123,0.461177317529151,0.608487316834263,0.770114942193138,0.56575303991861,0.569880069531389,0.432411174925427,0.788687043114274,0.224216541251369,0.402073284007677,0.838721579023378,0.29309973273715,0.570342450049093,0.189598559997602,0.787348225095634,0.275862068241334,0.572857725362161,0.198095313597559,0.290121003277713,0.310339749381263,0.574338631168323,0.793103447410374,0.195340707195309,0.787597702385483,0.648445627464397,0.413793102618114,0.305947549879502,0.379310344280033,0.783023704153508,0.776906531701709,0.419475201395783,0.770044901240659,0.511317719576245,0.747437619229255,0.504607521979704,0.355374800232588,0.339912815103226,0.556723443797532,0.600455783540808,0.586206896357431,0.426805729956185,0.392241378912927,0.212200857011788,0.440261289561411,0.577819214414637,0.172413792202635,0.386497158218638,0.258430354584409,0.430892833490756,0.459619578634966,0.42520163755417,0.620689654695512,0.832607721707418,0.254632733300918,0.545997843235729,0.354010384161035,0.413793102618114,0.241379309903252,0.337010388064208,0.330722022038626,0.353085526826871,0.5633856784677,0.344827585941951,0.230282619018371,0.576141671674458,0.758620688047838,0.631119602714777,0.28395213068831,0.635190566987908,0.367394539264398,0.815266905878919,0.561208412806698,0.638030559651582,0.582156472403702,0.721260482977387,0.697881840772817,0.654615460992433,0.736013104846713,0.806318597175478,0.634132766150062,0.155813903087577,0.724137930734212,0.698173103526396,0.292046659758358,0.64796414393742,0.697915839355361,0.758620689072293,0.137931031815643,0.375363761117089,0.402524340201658,0.684003938393671,0.665838809326141,0.827586206772911,0.586206896357431,0.212922755501161,0.823395576955188,0.387543948215939,0.45672787558914,0.368623914773226,0.241379309903252,0.413793102618114,0.328049093371303,0.270132873226081,0.392135280223689,0.620689654695512,0.18756158010807,0.28014452814138,0.599728127615273,0.592833262814985,0.614579078708383,0.224034040769594,0.439798827087319,0.637284868198712,0.429505204297141,0.603217051972837,0.690653081555528,0.5984027627375,0.275862068241334,0.456614416191927,0.192847805975795,0.1287589678343,0.68086524543433,0.220093412762595,0.816091953652065,0.593839138135164,0.403527087861232,0.181205808027839,0.59599386374093,0.678429963652445,0.862068965110992,0.601261259104369,0.2354568094811,0.448275861980651,0.260332903461841,0.603836087001335,0.448275861980651,0.650843454153131,0.68965517239613,0.363992967097082,0.409180978275073,0.440458466383124,0.724137930734212,0.537533423479212,0.563799137169308,0.36607761384554,0.583359361657276,0.206896551565171,0.19815755230203,0.499334929556898,0.545514712385381,0.397051442272078,0.862068965110992,0.838255405973881,0.786989355494258,0.626032868936689,0.763053456985441,0.264356407815922,0.402826132302011,0.645994751431043,0.797447584613643,0.793103447410374,0.255821586498825,0.591201383100079,0.362952445738905,0.206896551565171,0.565805764511047,0.571027170048121,0.277557301267569,0.642506181534851,0.506318115681706,0.401597236238045,0.348554860985423,0.442486670792556,0.322793375768506,0.200420994079133,0.670776839387395,0.426360455785282,0.392993334907101,0.808022513480878,0.201649770281883,0.259329387461142,0.206896551565171,0.68965517239613,0.444187262742023,0.645035694721188,0.18583833438888,0.20950698029204,0.607885967994003,0.18390804327457,0.256893958157761,0.620689654695512,0.453508139032413,0.246493637372268,0.743224126653023,0.413793102618114,0.23512944596366,0.615714790360737,0.793103447410374,0.246998477444983,0.682149660803517,0.655172413033594,0.630980665125866,0.391403964945491,0.604345302520641,0.567729035036386,0.332808388846748,0.241379309903252,0.566572324108865,0.564772126464892,0.606398505676909,0.413793102618114,0.28252639689718,0.68965517239613,0.788258041383939,0.644312211400189,0.598586464904795,0.391661888865439,0.316427999424215,0.328119073880947,0.827586206772911,0.232802514622735,0.690527773313716,0.694341682404598,0.623229470824105,0.538967058890468,0.74671678002618,0.429028598199625,0.560377855515459,0.189230030811606,0.436123634303104,0.620689654695512,0.363377562736513,0.555273183533245,0.379310344280033,0.698973099281055,0.740237465864269,0.803429196079661,0.464254398750378,0.200802183477955,0.724137930734212,0.394621805236323,0.373819629031997,0.586206896357431,0.206896551565171,0.404923190320771,0.517241378656813,0.492483327484209,0.8166641301165,0.275862068241334,0.793103447410374,0.424226092243778,0.576231361670635,0.715600873032213,0.276721234458239,0.576586199017788,0.793103447410374,0.233443309071887,0.340626804801288,0.590497516040222,0.594096683006824,0.551724136994895,0.62938400616812,0.304512003859982,0.700363343907859,0.418192675121308,0.767128477075257,0.241379309903252,0.733666659690129,0.477150470788731,0.19957147310448,0.62678232730998,0.674352969438166,0.397091294589538,0.637392400100261,0.225601102202759,0.648460644947794,0.765280748824851,0.441537096436636,0.413793102618114,0.241379309903252,0.750874618069152,0.551724136994895,0.777000539775007,0.527315170855555,0.259235105858403,0.283574275889969,0.201342756535246,0.366721933443772,0.19103915043272,0.558615633387692,0.291995400136332,0.413793102618114,0.210759335347227,0.434085366673847,0.572180494127963,0.416901188964864,0.793103447410374,0.422488778710821,0.787853414507446,0.572872768456929,0.427788230290439,0.427823416216135,0.633252853698333,0.187363654409874,0.764692158545081,0.191536777318955,0.461633247054772,0.325869633328048,0.758620689072293,0.29274356052535,0.797481477677339,0.21611631211463,0.532562791167351,0.481237449339812,0.655172413033594,0.586206896357431,0.743726230406879,0.225137759721966,0.804565321611767,0.725732475217183,0.73541508548466,0.758620689072293,0.376896534046993,0.68384104392849,0.385357475779352,0.53646721903837,0.391207164098702,0.253266005034806,0.655172413033594,0.387049546313518,0.419802621258239,0.382995840006504,0.724137930734212,0.435379825798217,0.730755048413533,0.627783555703036,0.46380784093757,0.730075517278235,0.103448275526472,0.630666721966739,0.605652574501608,0.701612644038734,0.472565206626957,0.565405451613856,0.413793102618114,0.360935536968462,0.379977358626181,0.579029680536156,0.716368108770222,0.40901643853543,0.669395139738354,0.36215840309128,0.674605101090488,0.199668617034022,0.643722708331163,0.68965517239613,0.275862068241334,0.439885188629744,0.29291943995554,0.67597464660739,0.429413652866533,0.427339061142261,0.874798733298479,0.602908704386008,0.410426442847053,0.556086965376592,0.315375493993401,0.666899524737987,0.232014752907692,0.310344826579415,0.275862068241334,0.177359924677163,0.812306820472988,0.371809938570308,0.827586206772911,0.793103447410374,0.665343576590851,0.812425941007609,0.75427087229143,0.289056013840303,0.862068965110992,0.793103447410374,0.466810225059102,0.373586118895175,0.586206896357431,0.219666655612799,0.259062294670439,0.258345178336227,0.375058076088371,0.300678119948765,0.752983795388587,0.638018344052153,0.706514569238308,0.206896551565171,0.298485207789098,0.598560839191602,0.56788911737305,0.413793102618114,0.758620689072293,0.363387198758672,0.383482866858582,0.396691013450447,0.562223798141092,0.427115496412959,0.464135321242861,0.43665693168217,0.454734501619576,0.620689654695512,0.552771186179268,0.287620733154584,0.707721622900778,0.704223728416696,0.36968559419707,0.409482758081968,0.267035883774083,0.586206896357431,0.57910653513773,0.655172413033594,0.408200307617151,0.549755301791947,0.407279668987989,0.589015978145428,0.572347875705313,0.724137930734212,0.522452804979359,0.452276948189621,0.58245102468175,0.18502650413199,0.754110764343395,0.344827585941951,0.242302483033671,0.713971544209841,0.433589509021109,0.649163794889267,0.262841594603696,0.379310344280033,0.633446732799939,0.426200430818089,0.212431165727257,0.418109071411294,0.733825839482086,0.325042246724518,0.707525004406949,0.460635418827306,0.18977355942109,0.607284343575392,0.633571972403277,0.188923405333351,0.292353451198296,0.810401437953488,0.612707413046348,0.509810475036325,0.416201862288827,0.741270519971168,0.606660751771797,0.496332034232404,0.606748701219213,0.235235542603988,0.802579347279462,0.198018217224645,0.206896551565171,0.564693631711131,0.450099067855719,0.596234179331208,0.426166226320124,0.397921108126567,0.664050746349665,0.511455052868887,0.723150522236852,0.223768984595099,0.234282050732786,0.612068964598765,0.327868491204333,0.418130644381168,0.566745449804464,0.409160724803024,0.806769546826156,0.567101221454424,0.198208276134178,0.424081179009826,0.261968303203553,0.304100341027696,0.582604641683963,0.464518408956489,0.197008963252426,0.815137330782728,0.299877357901891,0.339732183227066,0.604492479799774,0.258434065159815,0.586206896357431,0.427392859363363,0.764423097776643,0.48882217075566,0.776276958106344,0.708712685628527,0.758620689072293,0.235864084573336,0.763298745279479,0.335838275482728,0.539523265128511,0.310344826579415,0.697893507264455,0.802814148229374,0.582414110500751,0.775399204180948,0.733061861510446,0.214245176095744,0.189212086460751,0.230351329204022,0.184908513571051,0.35443224031891,0.441865819405639,0.266948298008133,0.212387450190622,0.536738239588904,0.241379309903252,0.190023290775738,0.341372776954782,0.413793102618114,0.39616391197421,0.234683150411288,0.627639142403043,0.426765117493239,0.510735875331551,0.459814136950126,0.448275861980651,0.650747405365806,0.741099596853461,0.404016909426094,0.636196357278336,0.344827585941951,0.275862068241334,0.758620689072293,0.608739941249359,0.362300196860265,0.6485369658084,0.402191275593072,0.422912176673219,0.823432974678868,0.229073000120998,0.785837715618161,0.658300410684478,0.22451761418443,0.528879004231541,0.323278734808116,0.215150144663779,0.822107084255765,0.448275861980651,0.632183907816358,0.62500462669414,0.420033379709379,0.336800979251788,0.342369253926323,0.308912254552275,0.39194823218691,0.336382065328194,0.789177040885368,0.413793102618114,0.595939473384935,0.633870043683676,0.433333526443069,0.22246831932335,0.275862068241334,0.254351242821991,0.590265318230042,0.742239802789166,0.400430326862662,0.402902318959034,0.36624054416664,0.573385693527186,0.38522683217677,0.344827585941951,0.558806722898788,0.50050516226376,0.434918137811979,0.5453873122068,0.623587771853048,0.748931075631577,0.404940482093897,0.807351002802468,0.644147324370358,0.453502642832233,0.608397916758804,0.264367815120488,0.68965517239613,0.648156847989333,0.45354895536187,0.528711207749984,0.361862586635968,0.243075599142421,0.594827585429724,0.241379309903252,0.713860946114977,0.448275861980651,0.305642781737859,0.241739946689215,0.310344826579415,0.180762741557101,0.66198406239225,0.204123121829818,0.183073581785964,0.655172413033594,0.78523173931542,0.603807245524421,0.374821600154807,0.602269528575493,0.319713974157082,0.482758619294277,0.250056054070644,0.418937140301743,0.191699407474789,0.352781561857817,0.323035295655053,0.319874348463374,0.403418644194881,0.810924006217089,0.291943926403247,0.589904820769937,0.523916834941056,0.586206896357431,0.182811947290611,0.631973001250972,0.603818343443627,0.476856041445263,0.361994630668307,0.586206896357431,0.232902349795124,0.579540632506405,0.789148054960322,0.425505027804063,0.597423204637527,0.627213700653253,0.573528908215024,0.558873814445803,0.524686520150571,0.693959365081004,0.206896551565171,0.478983536017112,0.241379309903252,0.36024262337968,0.774958804366141,0.787357701302839,0.272594280655118,0.428772614597131,0.379310344280033,0.319791505923301,0.42086938300251,0.664562375484558,0.373123789600212,0.193580005358513,0.591697794982882,0.206896551565171,0.321993195611977,0.570049263369338,0.712067664565582,0.743088895541699,0.379310344280033,0.402105634242395,0.47764328478616,0.557140069089029,0.222641493168326,0.360612672856648,0.570438272431901,0.224334516445486,0.627608695605405,0.701319705277048,0.202606734030514,0.713824459131644,0.517241378656813,0.370419449098799,0.460068868668814,0.559053498701242,0.429476289059479,0.517241378656813,0.179982098778693,0.801817159030416,0.797671542733602,0.540727622425861,0.733369739896962,0.751343092044204,0.738184828207069,0.185165395620433,0.745017393860051,0.440494496459602,0.21280496163555,0.257425242483081,0.732403766068075,0.428311121257312,0.676872669371658,0.292341061441545,0.390668843817589,0.68965517239613,0.57743955247797,0.385883317176144,0.576614314156225,0.441340501505267,0.214042379114816,0.576678166377058,0.422900655654167,0.436543447698041,0.590766432360529,0.823734689945108,0.701256755600923,0.535347656892005,0.517241378656813,0.172413792202635,0.368924128188681,0.664240450797827,0.498709842049247,0.258333229095054,0.39706354415702,0.269915480837147,0.220424138540797,0.418162131000461,0.416837282447924,0.241379309903252,0.229648061450243,0.592018288506212,0.750361036323347,0.35315594272982,0.579675683313679,0.620689654695512,0.53011315779771,0.783275864490565,0.736969354550326,0.492983347496934,0.769437403622491,0.431440552120507,0.655172413033594,0.60144307832368,0.197599598344043,0.560164099941183,0.711009885241287,0.670114370547342,0.738993327961297,0.671372931749907,0.748299312776233,0.188320548495576,0.403962470920722,0.819279743609279,0.26179775401186,0.474308720160563,0.664789915098613,0.599463527323179,0.482758619294277,0.435485200197888,0.802192151501954,0.193340812570733,0.714386314213636,0.749857020936773,0.775085516111074,0.448275861980651,0.545353966201985,0.339119809203893,0.241379309903252,0.445074385306867,0.784482758338081,0.36300220043678,0.712108205316689,0.301656068630196,0.439965814249558,0.390378273595477,0.241379309903252,0.397747309364143,0.699123991233412,0.495714883176344,0.619033020054021,0.584965924019894,0.290255552102118,0.551724136994895,0.249661024287027,0.297785516407141,0.362549876992172,0.611367172059945,0.551724136994895,0.594861884177534,0.735676572458517,0.399709349358184,0.372378913613389,0.781957607280424,0.806729709875518,0.614732828889725,0.400959825563207,0.591631949172944,0.74816539399155,0.724137930734212,0.206896551565171,0.775642416929493,0.254897364326657,0.592996394953687,0.804223341172769,0.758620689072293,0.642265235904851,0.595045290277382,0.811014055796912,0.715439715017974,0.680608060146317,0.839194081154833,0.318586662009905,0.422427140336882,0.423380762313847,0.394281157613063,0.310344826579415,0.566572365087059,0.57385037804381,0.248437524026667,0.568206369521289,0.396635856802236,0.259126122304356,0.77990658621295,0.647937658706622,0.235967302495583,0.410850760769891,0.735546026179144,0.36232219600335,0.68965517239613,0.379310344280033,0.473921303100811,0.77636002397757,0.422223714340687,0.810973280445648,0.470223357174754,0.581361920602025,0.723178780798967,0.628012286758062,0.576613802953264,0.827586206772911,0.793103447410374,0.460205907942919,0.443042953864711,0.758620689072293,0.39406648515171,0.441331691193703,0.467567490802675,0.580563042527589,0.386577885259481,0.586206896357431,0.435311940298706,0.724137930734212,0.605893439199676,0.586206895332976,0.373967129014402,0.77715007637362,0.638329556014696,0.435299627376068,0.137931031815643,0.371607004312432,0.415268906639208,0.81083628932092,0.212284685077411,0.35348757105273,0.712108926532892,0.356923544413339,0.21488780944132,0.763482047909388,0.801071356936424,0.607393378352181,0.605498273163567,0.364837303305825,0.773274959179829,0.214058288898373,0.751019485202636,0.216878166391401,0.448275861980651,0.19794222316513,0.780535321804262,0.604154144371072,0.335490774256634,0.266220077607986,0.448275861980651,0.59771321345839,0.444984431001343,0.418985815224225,0.586206896357431,0.767321463876703,0.577099343321379,0.819370214240039,0.808629525507455,0.596785291979821,0.223049820375675,0.614699530009832,0.758620689072293,0.310344826579415,0.589337833169231,0.322285017717895,0.298864680201621,0.818355629004869,0.57826246016497,0.608675769398618,0.227840727453903,0.577307449027251,0.551724136994895,0.592843459213938,0.559541532592421,0.206896551565171,0.682855109621636,0.36161368611419,0.572101707404574,0.751249835920753,0.189031191299699,0.620689654695512,0.488439736644216,0.424235794855501,0.624877387354968,0.605869802977769,0.390187443271454,0.632605459711147,0.436202855395342,0.797571049861211,0.258571968049344,0.568717034644184,0.770372029133488,0.620689654695512,0.595330099989968,0.817927508305691,0.650270743947728,0.248366802836179,0.25748503683832,0.310344826579415,0.442169384837308,0.454026995696153,0.57310748232818,0.211557203309198,0.263487849397108,0.427277578485457,0.192254473494603,0.595282312245371,0.685624899468967,0.427456189112231,0.527627029249097,0.68965517239613,0.517241378656813,0.562689543992923,0.220576292621509,0.424022289248204,0.801842444624605,0.629377930126505,0.389323342255618,0.176414764697118,0.209665993097859,0.579466905565436,0.560114810345801,0.827586206772911,0.718263476219274,0.420032132947847,0.361881458118448,0.767567167074948,0.655172413033594,0.849924696423043,0.190470150802722,0.581653119839405,0.421265014141114,0.628343557546235,0.604332876907972,0.620689654695512,0.327991502618409,0.400034658843684,0.409666037149416,0.202965102673476,0.393339247203748,0.241379309903252,0.425122392899471,0.577680145695508,0.664722524410787,0.419262526621355,0.217854786354913,0.292113370208175,0.814946755547958,0.206896551565171,0.741418372366036,0.389279559104964,0.81925851075841,0.693673741951281,0.781895994517855,0.540257199937717,0.60900008926075,0.185307312323998,0.586206896357431,0.241379309903252,0.193069951835154,0.337140857509469,0.298770907752934,0.188453954028388,0.620689654695512,0.758620689072293,0.408012742230681,0.793103447410374,0.250084429420609,0.423249803179176,0.45977813043611,0.681048070668288,0.571717379076143,0.623052263700452,0.218768320389808,0.590152148753546,0.620689654695512,0.620689654695512,0.807327151445045,0.567672556841441,0.657431140269554,0.537949512980831,0.698380748227593,0.540271550501018,0.334476652075049,0.610484019257579,0.574625703901635,0.274771576025311,0.771120416951478,0.413793102618114,0.294733970747082,0.392435210889611,0.817052819549155,0.599142409906855,0.225197302061317,0.172413792202635,0.419488568482444,0.261327509778857,0.228727602100677,0.448275861980651,0.284483877042759,0.482758619294277,0.18658534841294,0.199346383986386,0.655172413033594,0.304360054670237,0.402481429886521,0.574731446080591,0.417840782057346,0.682587430842768,0.189339652601015,0.787930497562448,0.413793102618114,0.543185458605351,0.564792815330245,0.62958224227613,0.611708807257664,0.758620689072293,0.402867732339416,0.235945197833651,0.180676438408602,0.379310344280033,0.507961571736225,0.327586206772911,0.551724136994895,0.600202265801097,0.284280893611052,0.607514161576996,0.323579053742419,0.329390690735905,0.775929132128068,0.579263558452263,0.682705247246386,0.396166986363164,0.789108218009684,0.744065495016114,0.392472709009864,0.74587245713535,0.393577088735604,0.683931587295543,0.769539111498314,0.592427761054065,0.182268913492811,0.636738328716474,0.76293103360844,0.798984639764749,0.581147975503605,0.756165943673035,0.310344826579415,0.233120809665994,0.718518852320052,0.633128958179736,0.754259851206336,0.304817049628885,0.25823287759743,0.405123383137512,0.39708603606288,0.408507497570019,0.812564868351971,0.675680927211122,0.257057129225747,0.396551723449074,0.444710445678523,0.545615038271635,0.25976772504837,0.38135943732351,0.819314319984349,0.206896551565171,0.271147384700503,0.819132787612391,0.167267701511521,0.721432964290896,0.310344826579415,0.540229773232927,0.505718609835691,0.601681494574697,0.430024972725683,0.37040573062413,0.224869695748081,0.827586206772911,0.287422228639407,0.581379915151168,0.435510156942075,0.445622516791916,0.6415191244255,0.586206896357431,0.582618288446794,0.566820652984847,0.797822041295303,0.598661295183619,0.665843166332546,0.458942598392202,0.407330689912039,0.823386332274774,0.462204335548174,0.734010027240971,0.620689654695512,0.323478210506475,0.435788047486719,0.228803592062372,0.636730596131394,0.610909851324661,0.810968807675847,0.849949302803678,0.655172413033594,0.73437976733258,0.409149992614193,0.55605099574295,0.845561111993679,0.275862068241334,0.407692617511091,0.511537889262231,0.418233208701232,0.331458566134291,0.310344826579415,0.161744593001664,0.805661299783421,0.535188269135718,0.607357367740346,0.574170777317296,0.724137930734212,0.615166690633787,0.448275861980651,0.545320563852154,0.443978254491443,0.623739716944974,0.793103447410374,0.663388404542011,0.261246509208574,0.422345990196193,0.302590987135275,0.396510448163851,0.595287739807076,0.697207373517759,0.361896485846393,0.388327330386571,0.576034631511229,0.363905605686741,0.655172413033594,0.172413792202635,0.749692756775481,0.528701391423774,0.752610444093692,0.557185937005268,0.527517588788194,0.586206896357431,0.425436273566854,0.19719631965011,0.382091305807318,0.304485113969525,0.253299686036352,0.432898777521121,0.758620688047838,0.746908242438834,0.217173658094531,0.408712385463261,0.206896551565171,0.528621120265332,0.782081441331731,0.212369970942261,0.669283741544265,0.588216697460242,0.275862068241334,0.586206896357431,0.185201508677752,0.573194267994905,0.536173675848333,0.818483695079092,0.344827585941951,0.197883310865502,0.769671412668816,0.398684437618297,0.408861017468256,0.57840327557959,0.362443990365084,0.68965517239613,0.65782535151376,0.806135877460368,0.82240923696422,0.510018571522104,0.758620689072293,0.422564000331391,0.427166280687942,0.730975229368522,0.499887446733087,0.413793102618114,0.301619250747952,0.371607310624428,0.228717736600635,0.451806216316117,0.181490866682949,0.287417992518673,0.482758619294277,0.76996494868767,0.270064728539497,0.640711386865667,0.365340744997692,0.801146474062602,0.469980913791788,0.586206896357431,0.193703438847981,0.284024030001856,0.429866674989338,0.448275861980651,0.793103447410374,0.379310344280033,0.341107785320941,0.331393338070617,0.422906416163693,0.241379309903252,0.320886094934201,0.724137930734212,0.355740224295985,0.747627418951716,0.663004647859377,0.36785393247181,0.724137930734212,0.180353673668908,0.230145919863271,0.202205827973975,0.336113645868482,0.647056126591802,0.807911069186322,0.413793102618114,0.439730005236091,0.614003880102191,0.263358016138299,0.210817351248877,0.569114511850397,0.609896625541054,0.62764250363935,0.257660984906984,0.538720775850788,0.454063864801139,0.331893214659666,0.357190063509336,0.489611513204511,0.556016827100904,0.591593877357984,0.398333810780508,0.183856412799895,0.295776270558849,0.401850181307504,0.206896551565171,0.493672756425732,0.793774945795326,0.299112640273862,0.594557800371719,0.468717831670044,0.783255193040944,0.581771775271531,0.419305979897553,0.467637099435215,0.741655018359101,0.551724136994895,0.811619105992484,0.761141999448782,0.374663706053667,0.488438435586578,0.206896551565171,0.577897277872914,0.300748137338784,0.16669279794832,0.206896551565171,0.705077750845885,0.706896551565171,0.394335475232765,0.59884658218254,0.397241118035504,0.789218108206259,0.356282954855154,0.425157301197906,0.551724136994895,0.685042451820376,0.547207772542916,0.591199172326549,0.595664182906658,0.741767121378116,0.379310344280033,0.686224135883361,0.789329061786951,0.196137170629704,0.62702044954246,0.213934497874169,0.769718440267927,0.605911095678724,0.408330578318174,0.322587859884452,0.651077806391826,0.571243594327237,0.793103447410374,0.581797384593447,0.478008162815131,0.445479964926355,0.607906078042375,0.172413792202635,0.672894337328984,0.673838318161516,0.416503022300548,0.793103447410374,0.21057086331823,0.576129378216462,0.517241378656813,0.187423588090971,0.791429636759152,0.606437864207139,0.667518757486268,0.172413792202635,0.70698794625419,0.440074789607967,0.633414323146841,0.214652276006203,0.383212475323316,0.819883173117305,0.193646974995404,0.267177405038082,0.471140390747358,0.182611995220754,0.197993436686689,0.713468730508786,0.551724136994895,0.749491103086147,0.41881429484935,0.568100395815541,0.573172282169733,0.216491184724952,0.576869891050151,0.592250087803463,0.234305833451735,0.402801451136173,0.797594468898694,0.534084840104063,0.332370456943634,0.500453506177714,0.176609479753868,0.418007489543415,0.193676171958145,0.707302620874068,0.645493535879528,0.625931449957128,0.804797189547491,0.188066493941533,0.42252664051254,0.403660005753543,0.597518569089024,0.310344826579415,0.408875583167072,0.340362585606391,0.429281780942606,0.275862068241334,0.45967139965824,0.360338398637565,0.401413533046296,0.797715982559804,0.216516861660887,0.634951899745457,0.827586206772911,0.814068184107606,0.800512538338557,0.673735097165904,0.598800719388575,0.68965517239613,0.431416464114018,0.20242894808988,0.352066823283273,0.611672024206884,0.314775314056105,0.827586206772911,0.228879582024067,0.198102034021264,0.543075025447714,0.686792430688434,0.774650992569189,0.724137930734212,0.533473904415475,0.184943506899237,0.555259355441909,0.595666450025203,0.815159780685939,0.327586206772911,0.576096519852147,0.329172855782484,0.286924538236973,0.3392646599461,0.688105671143258,0.275862068241334,0.422468188193131,0.807654465788654,0.4421301369482,0.210789641794553,0.720970386053408,0.187189113942151,0.604381850971265,0.563491259807247,0.513101394812671,0.391085816399274,0.543016575177216,0.448275861980651,0.328406407850242,0.747019359932299,0.407974253462604,0.336892243835043,0.62729200793178,0.43414179569496,0.768422562273613,0.620689654695512,0.339917026637045,0.413793102618114,0.435546902088026,0.137931031815643,0.806103090807892,0.540620880378988,0.613724177296948,0.32011375433776,0.409682920165065,0.448275861980651,0.180720254341811,0.301174349478608,0.3978109864032,0.399831727659173,0.682554944355558,0.45681453934574,0.620689654695512,0.784530250015231,0.531926249230212,0.301932949062374,0.180655626608669,0.535481590019056,0.368558155017494,0.418620082799923,0.61398161460085,0.507845747897258,0.258181131359358,0.596547075497496,0.729835227299328,0.590590951443269,0.547726018631576,0.772122950499992,0.206896551565171,0.724137930734212,0.374137530684599,0.787511585687764,0.590262539908535,0.427736024072148,0.448275861980651,0.461032940085077,0.385277066319508,0.636292800480773,0.617944014321961,0.49841530923584,0.344827585941951,0.40929613007167,0.228418244401383,0.638700669900235,0.429100484195259,0.172413792202635,0.567829864954417,0.58917822003288,0.241379309903252,0.626000581193716,0.238254377421229,0.780687117325782,0.241379309903252,0.517241378656813,0.635450498839329,0.440774035352072,0.519267462444741,0.62712938699604,0.413793102618114,0.659265937851058,0.592168770676636,0.64816398229279,0.655538002034219,0.689872353747368,0.407111714740388,0.222304829649911,0.577136756411881,0.583905548727052,0.377933898035375,0.679113904041344,0.202134466499215,0.672171352917488,0.685393921784492,0.647440560439081,0.752673263664053,0.465353217735284,0.425094690616331,0.67825749360794,0.581908474426631,0.59270588722332,0.31998619331977,0.390000258982182,0.603438196939824,0.42510923582605,0.741812353107903,0.626586587798397,0.437955738592852,0.214493809234811,0.413793102618114,0.361995117284353,0.509111452623374,0.615666595907571,0.35370118320333,0.413793102618114,0.344827585941951,0.568474112840811,0.233263073659747,0.66164997537774,0.551645691414965,0.610971045085202,0.76954116245689,0.206896551565171,0.594758298476002,0.645167331020504,0.393985031772391,0.655172413033594,0.458619759891759,0.344827585941951,0.558604582593408,0.573477885242065,0.284664553994932,0.620689654695512,0.370158893354385,0.371078171507528,0.591331936550636,0.377712201911688,0.471651669518698,0.651008565538571,0.299100930755121,0.581712003454298,0.590317078810481,0.55520198187344,0.103448275526472,0.793103447410374,0.369489129371465,0.237664225872293,0.403438024831412,0.231981571840105,0.50000980249607,0.344827585941951,0.280512214201048,0.396294622166357,0.603214168132482,0.387502074649094,0.364705227515386,0.608688292334497,0.73243471689749,0.394764222898301,0.409350383150718,0.25602482604424,0.327163025994937,0.735131509215693,0.402492506292176,0.783172640421589,0.190016667675243,0.247461527956148,0.413793102618114,0.206896551565171,0.620689654695512,0.401066607563819,0.659341599987207,0.71987734909158,0.597197235512731,0.758620689072293,0.401371592889886,0.409147298297982,0.599198215034975,0.559403289583887,0.260086806872941,0.641155551551986,0.369970953017446,0.275862068241334,0.431514208374093,0.187251749110643,0.672131507771212,0.672413792202635,0.625033791898781,0.574785717599826,0.833039575520009,0.651824312286288,0.229265787153752,0.896551723449074,0.466129611075045,0.750094194524078,0.678333445664806,0.352159741336629,0.517241378656813,0.57411203097935,0.823350951702661,0.227886644543974,0.517264357178718,0.206896551565171,0.641296354673148,0.551724136994895,0.632208385115683,0.197901936478822,0.270151204820863,0.402807768949129,0.575857833145054,0.73249472536379,0.581868376240012,0.634614522182024,0.230458836518655,0.413793102618114,0.602889607523465,0.223454094839705,0.317562041215191,0.247794267812552,0.782168203435995,0.572031794508949,0.371848167126857,0.57996021642346,0.388060773385745,0.725164039037343,0.655172413033594,0.68965517239613,0.512239474861174,0.596605772661609,0.570506815631415,0.764410420148084,0.3700170678273,0.802939006735514,0.361399026970751,0.517241378656813,0.419250816078159,0.408425493033999,0.572722219696941,0.379310344280033,0.558688366607473,0.615204885383327,0.717240667685159,0.804249714737991,0.793103447410374,0.293546533345754,0.802028125014182,0.247162699603627,0.557518853067904,0.780492517007974,0.896551723449074,0.434622572348102,0.724137930734212,0.718473610345715,0.780646240553489,0.339712465544895,0.80459770053122,0.188091611525129,0.782385378640504,0.804026517787973,0.575917900005279,0.201118628355785,0.635265421853648,0.597209611951569,0.398848825738625,0.663873913152026,0.398715205070298,0.52770843447904,0.6047573198143,0.827586206772911,0.794691159804064,0.57677580614274,0.806366978079422,0.351398226154408,0.59442726126353,0.738755653415579,0.754373860735794,0.385601423062013,0.614377182223254,0.178801271159948,0.601170198387625,0.280385118285553,0.418204214580547,0.443493390263518,0.655172413033594,0.448275861980651,0.194746684231559,0.38497115898409,0.204873788035357,0.564380309371632,0.798246784366897,0.507856709563971,0.310344826579415,0.406239419110342,0.633890472337502,0.638003104262057,0.746112552467838,0.510339392870981,0.781345643039183,0.671674916447769,0.780771535477388,0.746481056042464,0.375677543436808,0.634622838706358,0.194979148399997,0.21813400869084,0.649275307822298,0.784850635970804,0.438172315515738,0.551724136994895,0.81509378223223,0.220989545407695,0.561617974482121,0.387953050935597,0.406588790990961,0.802782325588895,0.395242679161246,0.383132280998987,0.503818173384125,0.615232711625502,0.174648130242385,0.492901128849854,0.577531810782414,0.559897768320421,0.59913170230494,0.70147305284764,0.499349926551199,0.818574275326519,0.805718602664507,0.429103688689977,0.20242894808988,0.407068430499238,0.57094054009853,0.3909507338339,0.655172413033594,0.350360856019297,0.275862068241334,0.202687007237866,0.295687273094139,0.802038653336501,0.57893943323655,0.369008303544492,0.195929746186295,0.266046055514408,0.281121692090409,0.580511826957121,0.432805886103591,0.394564746175487,0.355326775838925,0.788336486963869,0.68965517239613,0.742082897286939,0.368881315196754,0.587883737346049,0.452048759071202,0.391848157292091,0.620689654695512,0.398160317305625,0.812008765583866,0.349865311849737,0.79885057345857,0.335934127574725,0.431143272743694,0.671880925094598,0.409390966928928,0.582362216741184,0.820507198265295,0.784267411785449,0.733051700967412,0.209641999341214,0.252186645569454,0.434965894822931,0.579347193920377,0.535745600225167,0.654044609148097,0.571369581782603,0.301735491540037,0.543578438454846,0.480722487653347,0.745926888469539,0.206896551565171,0.253659188750814,0.768402593600007,0.747742309512331,0.401960045892708,0.33374193868017,0.586206896357431,0.709848605245211,0.581804175704535,0.646803187669072,0.81832408604056,0.541397764432614,0.655172413033594,0.29065797640072,0.793103447410374,0.252900386324991,0.422462977815851,0.310344826579415,0.574822501675061,0.419397280336728,0.603501436536667,0.367477165644502,0.336953701904932,0.251504822728694,0.646844717019093,0.804059591287803,0.236072353167527,0.601625747840503,0.409989467784753,0.331265406199978,0.637047553236641,0.404097250247465,0.716180041400883,0.206896551565171,0.825466317753742,0.615182770476847,0.672836972980608,0.576675291756797,0.245780174243991,0.679144129556738,0.401429615962719,0.103448275526472,0.1821208080576,0.641740945532677,0.543072663054869,0.295158253838456,0.453994017470623,0.149509373213639,0.432170134021128,0.781635321985591,0.425139315868858,0.732507048530976,0.80266753235149,0.517241378656813,0.576398374444245,0.567350414970285,0.34822678239851,0.8047042745675,0.630991694406599,0.421737538810575,0.498681765840093,0.275862068241334,0.453742600887774,0.799584437580392,0.413793102618114,0.775130303227464,0.764389573516687,0.166791321818523,0.619814526447854,0.543404294451144,0.241379309903252,0.249856268986926,0.822677920733279,0.753790927495613,0.562920131360106,0.200531889265899,0.317209341905275,0.781878239691144,0.202138091020415,0.301281029033736,0.833218979074824,0.43418054569902,0.715335444980613,0.32851198099415,0.575538166356774,0.665330462544533,0.409387797265675,0.198478361357449,0.68965517239613,0.660521102985853,0.195282429033222,0.226295559644974,0.706652122788739,0.569057316537069,0.36184119089678,0.321839079700261,0.533189772891989,0.529438139385952,0.54648025184542,0.448275861980651,0.655172413033594,0.39410661714534,0.429475622139383,0.546414860893427,0.438172287855458,0.198182913705877,0.206896551565171,0.735099998009484,0.316795182476561,0.432207757124871,0.415552516715184,0.409306117481837,0.770657614358382,0.172413792202635,0.523182184037922,0.18629332448942,0.298081093140022,0.217588065441314,0.221775061517744,0.655172413033594,0.314563648369688,0.571485369765652,0.298388196014229,0.517241378656813,0.578664647814505,0.586206896357431,0.823419918002021,0.626740509063695,0.590639453232884,0.736641981812792,0.569813761692321,0.598962406021508,0.467420278692078,0.655172413033594,0.233016263025828,0.59050986072096,0.217502844117119,0.42922521771791,0.192804827022184,0.783068949201209,0.802859490600284,0.214417022247256,0.275369181507611,0.785192663534724,0.739913192102605,0.333556846327667,0.407984359709531,0.629065120014423,0.751948616562363,0.330604859237191,0.230653670412166,0.607013736904612,0.559958524638748,0.653090489286082,0.577716302804385,0.912550920399419,0.275862068241334,0.218515261605862,0.793103447410374,0.193808995600612,0.561340157698225,0.154961737995,0.563199167245253,0.408417137580381,0.817896483715527,0.564922175290922,0.364202731395329,0.774919319827966,0.344827585941951,0.373871982771784,0.466336462848202,0.405374838649644,0.57509559879554,0.655172413033594,0.655172413033594,0.456205590075073,0.31953817258546,0.413793101593659,0.309500004779082,0.398230038628196,0.541330756890896,0.574246528581014,0.667777262272106,0.413793102618114,0.54340336527061,0.724137930734212,0.586206896357431,0.354308264892835,0.613258354611004,0.284650490278984,0.506591061182871,0.206896551565171,0.400481980899798,0.388135523757092,0.301945741429874,0.571841212102995,0.709691254105131,0.541101913145838,0.680429732269076,0.252946089304002,0.392732647008014,0.379310344280033,0.578872848794677,0.68965517239613,0.814560275864378,0.582074287563632,0.405507023032296,0.430748386383754,0.756940338301417,0.644782095025091,0.448275861980651,0.525707742828604,0.268309086485122,0.768052161408637,0.466526093535615,0.835711945859447,0.292080783324391,0.779851444931563,0.741206726144261,0.250905538164923,0.793103447410374,0.22769382780203,0.727898339720348,0.386823730856947,0.784909283961085,0.298165300253933,0.379310344280033,0.224986170115868,0.215048673437022,0.397337074621895,0.779741378528756,0.818389903165763,0.43189401885671,0.810709422883307,0.410888192300581,0.560925376425428,0.460403566258404,0.426471019048683,0.206896551565171,0.177795290320921,0.728318564946129,0.591861621701961,0.458247788537525,0.816143585151195,0.775860267249737,0.242557507746441,0.176621180052516,0.795989237302904,0.184091660412114,0.620689654695512,0.435810791408467,0.413793102618114,0.44355633071955,0.643190193635589,0.737778139102997,0.741565933815731,0.456002418143677,0.235830963948584,0.557870316885291,0.771452575941992,0.795347795398298,0.404394620800758,0.310344826579415,0.194328596018561,0.419485203148318,0.379310344280033,0.731561845523829,0.784096702778802,0.613059057167786,0.284116598716114,0.569253814145228,0.648175941778511,0.778697703898603,0.816781480393169,0.64614343670769,0.784825553218672,0.679551841066733,0.206896551565171,0.191432250143431,0.148972118365552,0.413793102618114,0.441933902624933,0.586206896357431,0.631510210951334,0.718001397110523,0.631063863151766,0.189122303239184,0.816095557684168,0.370992319119156,0.742868982993876,0.18917429432196,0.172413792202635,0.706453465629791,0.488908748458055,0.57721711157562,0.569032408966713,0.41814094015224,0.494401355874167,0.459768719794013,0.359315866706256,0.423308233985033,0.814135422151662,0.636520434344672,0.250559974182919,0.344827585941951,0.597704472809755,0.670073429234394,0.586206896357431,0.372065669132458,0.230026259440953,0.413793102618114,0.642649502765992,0.236109580831704,0.344827585941951,0.409617650098743,0.758620689072293,0.529776640776337,0.344827585941951,0.60024341405392,0.649260828177688,0.298092159301128,0.357968866366864,0.724137930734212,0.337071461963534,0.49955405122559,0.292367558965802,0.247331264426309,0.644143453979998,0.436121797455588,0.681574684504023,0.827586206772911,0.431991951616474,0.775438468461333,0.413793102618114,0.224676564498503,0.764268207377073,0.591453928632153,0.202172353912305,0.420642412985342,0.574700537253824,0.379310344280033,0.580973020131675,0.665117079871816,0.201754476737002,0.53683471045162,0.517090138389813,0.758620689072293,0.723765285288697,0.478469866168192,0.310344826579415,0.773739222645517,0.0797133668602569,0.793103447410374,0.268665084539601,0.424239715444147,0.586206896357431,0.727589251452674,0.560106791937823,0.249856268986926,0.655172413033594,0.202698065203333,0.329639523643665,0.665133718042759,0.423703560860552,0.517241378656813,0.464720715223552,0.188993134851561,0.344827585941951,0.598769283992024,0.247246981502741,0.180625776043745,0.620689654695512,0.66176308646031,0.688190618938013,0.345252099535663,0.6089345272248,0.821984129186705,0.253283218949366,0.465495727598198,0.234378932401891,0.252229161469479,0.18266696849155,0.594692519255627,0.732973966359137,0.586206896357431,0.366865569182546,0.211316837520634,0.585788783557516,0.33412753221032,0.198025704965019,0.322976946805582,0.482758619294277,0.793103447410374,0.496387549439806,0.707256438450195,0.423870620759084,0.64920810973198,0.808903255741022,0.523990859998382,0.573672437410497,0.25387549419317,0.672413792202635,0.20008683432833,0.601629690967155,0.625121688074546,0.594766627293794,0.670652691852909,0.423086379070847,0.905379294003713,0.186043221257667,0.397412879157265,0.24360621347428,0.603174262543371,0.592888284235157,0.255077539295962,0.359302101106664,0.715390726612313,0.595940974211265,0.344827585941951,0.793103447410374,0.360614800649336,0.696584626889401,0.251299903077353,0.767923593351546,0.392032529452846,0.562644611403946,0.832825642715046,0.735186493755492,0.189284524637539,0.763750789047918,0.620689654695512,0.604072255598448,0.373592931519815,0.651526806504956,0.436429398214844,0.397056506152317,0.413793102618114,0.608527373018234,0.605707654315706,0.676193652512686,0.80873773047583,0.57149811500823,0.293103447410374,0.777494032985991,0.422869345241105,0.49467066148731,0.304254648512467,0.558585339233824,0.473039488236457,0.676250038506696,0.401006264100788,0.551724136994895,0.298222015097944,0.372710407732716,0.275862068241334,0.793103447410374,0.70549935498787,0.551724136994895,0.176564317687009,0.563158382673895,0.698574631427019,0.586206896357431,0.384579447409678,0.372512021029845,0.620689654695512,0.345264209616244,0.742514962137225,0.448275861980651,0.409368598982104,0.442342912119201,0.707502005395947,0.347676594832611,0.567886815423041,0.815034380243192,0.330551819112666,0.182234514348427,0.251807100420638,0.635723870513704,0.310344826579415,0.310344826579415,0.396759306682981,0.701655049297637,0.354255710359901,0.349208012408771,0.665872466765225,0.642185537416661,0.667101710119379,0.797594509876887,0.176443729108613,0.815111149815015,0.160810988872136,0.426193002496095,0.441301957416629,0.436460557008591,0.213494982163883,0.385264019887209,0.724137930734212,0.636622436239032,0.262853278511067,0.250001818407329,0.200411328347783,0.750552948471674,0.724137930734212,0.56099012709315,0.408778751696254,0.322469111226936,0.391302830764375,0.724137930734212,0.384607106665715,0.517241378656813,0.698702418849526,0.692579230798948,0.454170643728385,0.640377832567671,0.219292733696562,0.820910747415303,0.241379309903252,0.435309016504613,0.442792368114733,0.793103447410374,0.32922315958815,0.510994072780939,0.200968695293152,0.194144799601422,0.229355052001174,0.418237357743306,0.778206586398377,0.342994636476966,0.586206896357431,0.577287436302088,0.605988178733725,0.20233826539697,0.712389022728791,0.409744071922958,0.379310344280033,0.43131402170408,0.694263536989934,0.632734638343318,0.19639077852144,0.40896885977962,0.502094948154031,0.413793102618114,0.25030724117561,0.581694768026187,0.677059153958279,0.241379309903252,0.355856544995547,0.567194112871954,0.247785704394603,0.386381850704906,0.166893284783599,0.604698299946914,0.732624402905465,0.594462838530972,0.432828612609607,0.581299700337741,0.386151218261711,0.231825256423862,0.487859647290651,0.265974480953044,0.797923462323773,0.265897328235113,0.758620689072293,0.682692992717673,0.487794616946759,0.724137930734212,0.486715228796671,0.614113411739574,0.423683896450032,0.389543068352661,0.489684820118998,0.310344826579415,0.715291432352077,0.57564820100148,0.440617779354209,0.413793102618114,0.60350639284915,0.827586206772911,0.758620689072293,0.247029289972996,0.578641484890731,0.806477527000455,0.556429220369485,0.395927743377097,0.559962472887675,0.620689654695512,0.420165110258539,0.561304253629692,0.229683403093073,0.275862068241334,0.575441072625519,0.310344826579415,0.357683472715023,0.448275861980651,0.34410951174247,0.215732587190096,0.775237420224806,0.581577739428336,0.807373600227175,0.390081256479101,0.42087677239522,0.758620689072293,0.620689654695512,0.591208224409454,0.398548226103697,0.224642568989324,0.499052205634352,0.459829509919351,0.586206896357431,0.281239845539667,0.452139139549936,0.655172413033594,0.471503654235512,0.196570801871429,0.434246959056935,0.206896551565171,0.592156709769887,0.434193835951568,0.639102662903352,0.293485429737238,0.374902899865902,0.44382049766725,0.43181360837241,0.768770076817619,0.527782645987144,0.197961344614589,0.551724136994895,0.68965517239613,0.807322874346117,0.266298947312216,0.532432507148415,0.517241378656813,0.766831915841281,0.565053195892883,0.803613721908642,0.219401662954503,0.551724136994895,0.517241378656813,0.812841200700813,0.180697980644831,0.268622865731477,0.56918677074759,0.817731083433825,0.19359913910143,0.453806772738515,0.23563158250007,0.413793102618114,0.551724136994895,0.255508609400605,0.788662446978188,0.684929357129083,0.384671028549477,0.402818613827991,0.402986536317492,0.24221266088282,0.689966284986554,0.868479683826193,0.756299634004291,0.724137930734212,0.379310344280033,0.256108490197089,0.600181178422813,0.408309616947835,0.248501103742515,0.361832350876026,0.472372968701993,0.640800005282089,0.607664257527948,0.595071186446651,0.568491294997271,0.648947704582426,0.724137930734212,0.103448275526472,0.594492530305397,0.643339868535604,0.806860739697573,0.637556008610461,0.344827585941951,0.396564641824518,0.385505644730763,0.517241378656813,0.585468026749294,0.356013404397306,0.780707264254528,0.2568718473491,0.582463028219028,0.559501394452063,0.299562914808805,0.248947616479311,0.189397381655311,0.606981793378463,0.505193747817719,0.400418876530993,0.212293928733369,0.749653495568459,0.206896551565171,0.614102448023951,0.713582348696499,0.698572801750687,0.409505648500757,0.252481909843611,0.198050052158581,0.197803610328402,0.429507806412417,0.647592314982407,0.186383049317061,0.363286950730986,0.291840980985985,0.603796553289328,0.739727673576891,0.624677742621561,0.701506810683298,0.218959544104486,0.507098869101236,0.317178802906702,0.352951671558387,0.440676270602901,0.752802332679557,0.436130516590672,0.403840042421445,0.266022430561504,0.614230236470914,0.375389520009411,0.578677666586524,0.604153351443031,0.234979512901026,0.413793102618114,0.620689654695512,0.80014935475788,0.297031073036633,0.599104319651708,0.419135374360844,0.787819869758394,0.185687437314249,0.793103447410374,0.310344826579415,0.551724136994895,0.315130787589709,0.394059126492645,0.659518606317713,0.644191537792042,0.793103447410374,0.250346503407086,0.193884470261526,0.379310344280033,0.703274602771992,0.651999175457283,0.528333745317844,0.636873910191352,0.55310814166731,0.598933390387272,0.432038189360908,0.669923484902758,0.482758619294277,0.366747145277213,0.661744853213192,0.401133967518,0.220387823665876,0.186175530623808,0.551724136994895,0.749685483146166,0.578296543777265,0.529040883461983,0.724137930734212,0.257137113536836,0.642726600163362,0.359746353896099,0.241379309903252,0.233050498257438,0.579917444409726,0.802832202196896,0.625264209206462,0.838285889651893,0.762006851390011,0.555380572011117,0.613726277429356,0.223753098374003,0.372830207480891,0.413793102618114,0.196275486374531,0.590382347852348,0.403891727192227,0.716049156026961,0.589545072186315,0.275862068241334,0.289531299415539,0.575628689234731,0.383970162117826,0.390691604130614,0.413793102618114,0.425808713096947,0.183127889161117,0.666684060373049,0.60952195372388,0.624623227282076,0.358480874550045,0.37062206884904,0.497429488643473,0.78859135083723,0.241379309903252,0.391527164859257,0.568109041189876,0.218883114651668,0.620689654695512,0.282943579492107,0.395664417506814,0.729976167697437,0.810581441838836,0.517241378656813,0.351523065195906,0.436162740817445,0.324436518339847,0.775625154865557,0.802991035723119,0.241379309903252,0.316500573853497,0.588952345157929,0.203284265429978,0.605183898708954,0.482758619294277,0.218390803661561,0.524343132110632,0.716226531161206,0.40949013723013,0.299890231201323,0.817879190917946,0.197990173798045,0.476224793890701,0.435209905621791,0.806186982389714,0.252112611292035,0.189418556112255,0.741818867616187,0.803920073857457,0.474243199102807,0.32107572049934,0.445414177510342,0.369333277008807,0.172413792202635,0.605565144452793,0.664254487877949,0.502544788320125,0.353801913749242,0.436800831730292,0.193896907143199,0.580711394856415,0.352109670082209,0.574153942451024,0.408553426953548,0.529810128155919,0.613553727477373,0.225735753472648,0.774186496552254,0.598866031457545,0.591023358461469,0.388340014161859,0.810787912514795,0.797360822509379,0.19264465555795,0.732213581150597,0.595587146976578,0.185439735404625,0.765484590749708,0.641409964665221,0.212140234897044,0.410872870554098,0.275862068241334,0.284708566623469,0.418385724414499,0.809496893509754,0.725854311581565,0.80888188253984,0.655172413033594,0.344827585941951,0.408361278156155,0.210981914550981,0.426104722149768,0.236173813125281,0.827586206772911,0.769832012355171,0.33244585374598,0.428526985159635,0.202068457800959,0.451372589172211,0.563330925454694,0.793103447410374,0.76776275804058,0.247640734815636,0.822248431362443,0.632976630966157,0.241379309903252,0.517241378656813,0.2409674104219,0.438937348675856,0.801793727699475,0.507032881916531,0.379310344280033,0.620689654695512,0.555837134649825,0.667562253789569,0.78861782377457,0.456285605119807,0.262939707667511,0.448275861980651,0.607695031126677,0.73942783408745,0.592989339533252,0.752668733524781,0.250314515829379,0.827586206772911,0.648926640766605,0.213274306397209,0.602238215089066,0.206896551565171,0.344827585941951,0.533716086562459,0.413793102618114,0.639106460557418,0.455346896131846,0.424070090310713,0.275862068241334,0.362686339498206,0.570812874586147,0.459717774679622,0.662969006051281,0.379310344280033,0.767934912552997,0.320824319283314,0.366538405433799,0.230095698013991,0.21888144479029,0.413793102618114,0.389001338685864,0.592526134329407,0.781100352696237,0.332237727551011,0.178117407605161,0.769346328563379,0.261815170768476,0.797793139375554,0.385297024748565,0.219158330344743,0.350489825662682,0.784074472108925,0.742227550309363,0.681291497527893,0.269760897774027,0.702342362191847,0.433125350049814,0.455906458483922,0.418093271244404,0.355774182924791,0.241379309903252,0.73405123593663,0.812890697236071,0.611659984813686,0.364012465545919,0.57709347626855,0.583119995736629,0.843944104289584,0.659151820753842,0.696076998250631,0.765775385327428,0.833232910636098,0.724137930734212,0.727955626210157,0.275862068241334,0.766956775371876,0.409108298326943,0.379310344280033,0.764436096059565,0.724137930734212,0.742942869749798,0.388058116974363,0.79921082402506,0.40836796477285,0.206896551565171,0.398955502220388,0.471352411919602,0.210087830815546,0.612310476752287,0.65716430154365,0.39476107065078,0.651293851622654,0.482758619294277,0.597627784169864,0.628962133618968,0.333831566184602,0.188341272192394,0.350196848996167,0.740937704305107,0.440031078169151,0.340559188733398,0.598595462691593,0.576895043465211,0.524317308677656,0.853965062279222,0.422560446497575,0.704587924158748,0.379310344280033,0.219062674948073,0.641391152601122,0.401592132404067,0.793103447410374,0.367395688702721,0.63160914050565,0.334666719180221,0.394177689723836,0.310344826579415,0.68965517239613,0.611864474193998,0.793103447410374,0.590510664918004,0.484364207400348,0.474577291239591,0.801949945792509,0.607316694834565,0.580428016307231,0.451989143995558,0.430182040091774,0.620689654695512,0.821411636165727,0.258661476717015,0.379310344280033,0.623264853445128,0.391192860660323,0.681082664459089,0.559746397947656,0.439538752836677,0.789155690222192,0.282916908834984,0.586206896357431,0.712447182054117,0.17816091620192,0.808163812438179,0.632379773335885,0.366877750974966,0.724137930734212,0.555674218671093,0.202269292950881,0.625324178743478,0.539400760819577,0.369552773627967,0.586206896357431,0.672044065428939,0.385763417031396,0.538503429562322,0.814381495178101,0.712642712576913,0.655172413033594,0.551724136994895,0.613905184123577,0.230566309001824,0.427002275713722,0.754780508861673,0.793103447410374,0.547709766680105,0.620689654695512,0.7852756126181,0.571737345700839,0.543297065788225,0.81716912385744,0.556997299014588,0.559325175927323,0.787705635873327,0.68653448218157,0.620689654695512,0.706741500326192,0.49070574160731,0.557318505558482,0.245352768614285,0.38463125101722,0.335418070746044,0.197653655752217,0.211672031378068,0.202004276730124,0.750420262106154,0.352859309784006,0.673466890792797,0.22507141397807,0.26602263750138,0.787178094905967,0.57047300349965,0.372876029296663,0.68965517239613,0.771117977724521,0.348031552040979,0.6485241416828,0.3917346815036,0.371710118764742,0.344827585941951,0.506251038477059,0.784797735172136,0.781406725134148,0.7164122361377,0.368453147372653,0.655172413033594,0.206896551565171,0.760509034907919,0.620689654695512,0.586206896357431,0.613015757559813,0.586206896357431,0.194281396311039,0.79747294601749,0.598678257082289,0.30801357306355,0.676522737114246,0.501318232110998,0.811908387450416,0.569457812811674,0.8145773227928,0.797885275769872,0.247657788915241,0.809488855637134,0.219124734372948,0.460712568471872,0.358467734892357,0.56838159637375,0.392848912387014,0.206896551565171,0.344827585941951,0.339420143505018,0.363698238612803,0.602287986178219,0.776271479321897,0.196733641016049,0.81085012458344,0.43049053110228,0.642432929940925,0.284265917105848,0.789112679510482,0.620689654695512,0.198159082837551,0.35080339592025,0.782419771638159,0.816262168871483,0.58281517329888,0.802346343223328,0.862068965110992,0.586206895332976,0.407917583694605,0.81263460401691,0.567977842332775,0.228575623201742,0.808844012542483,0.281858584500718,0.548364541864362,0.770961155203135,0.247000505865552,0.369173557329153,0.608530360328528,0.711703077481783,0.190679682549722,0.797640403404497,0.804341592969691,0.574577026930244,0.391509572920864,0.522667688478406,0.319428403274555,0.68965517239613,0.572969579438651,0.275862068241334,0.448275861980651,0.612539694423359,0.251037641615642,0.770748380032134,0.797677888206838,0.608716293758448,0.335746741467851,0.198086682565591,0.287907007837581,0.351112832502567,0.43088955933311,0.812636344565671,0.344827585941951,0.392404285671566,0.677312420706556,0.263284050499354,0.467424302750662,0.781116884323877,0.591147051138009,0.551724136994895,0.74485833392931,0.379310344280033,0.80804762799111,0.802465933982717,0.464652341059085,0.806555900868546,0.289210893995325,0.659820375880059,0.185589836477851,0.634573166989324,0.757825669094758,0.281746311422201,0.574188263736841,0.591708253642272,0.245539965197016,0.46373930286033,0.19478058036862,0.421997727800159,0.697023353769466,0.671504353938163,0.770925678332267,0.333970975022736,0.264764525010031,0.560034183701532,0.616379309134911,0.444120838115104,0.403028450862531,0.211948774533299,0.393024127970472,0.459770114077041,0.280520952800774,0.437795726943571,0.759391173356577,0.614434611112284,0.219312881649763,0.317382851771436,0.795504753147722,0.787603745644543,0.626032868936689,0.246647343502052,0.68965517239613,0.413793102618114,0.823405375865666,0.245732267662634,0.677940153356586,0.18062721642724,0.827586206772911,0.379310344280033,0.695676520416212,0.591519825664833,0.612104039883338,0.185793885342585,0.806353022955687,0.751052382496234,0.258581780277734,0.382486429840779,0.356417301861958,0.578058679707403,0.781609195313984,0.600901320996602,0.492212976927136,0.227804905341757,0.636018845891598,0.316298949873353,0.576913619904698,0.241379309903252,0.37086847892112,0.234211931921739,0.321714207876208,0.803534907524972,0.379310344280033,0.241379309903252,0.339886749898909,0.22412107025657,0.248630845824844,0.462224927090318,0.387984212802708,0.226859588620122,0.358639607679695,0.525780015043709,0.733942405026352,0.543129575618663,0.724137930734212,0.776422102867087,0.6072795440045,0.477466952546935,0.669294944982319,0.517241378656813,0.782145211596177,0.177625038221129,0.581584611471356,0.424033511126445,0.628048767594666,0.379310344280033,0.750143729988619,0.568449569976376,0.192634470428,0.561353564738625,0.285454550045966,0.777841513722987,0.379310344280033,0.19378805471937,0.741440363313482,0.213010643481287,0.600692689745401,0.379310344280033,0.614610006999793,0.590855318159662,0.18652350002576,0.695499219042714,0.529122990443486,0.275862068241334,0.745332847065602,0.180538773192595,0.384454107409766,0.275129977450827,0.432145638281615,0.517241378656813,0.77701500302834,0.241379309903252,0.267685043921401,0.784128282623485,0.64478676244131,0.219652061229248,0.379310344280033,0.645143444831617,0.663480143447854,0.401844286594395,0.39651109869267,0.396203444661762,0.373506814822095,0.206896551565171,0.742323170874569,0.749943944904901,0.180415738216057,0.614406848386309,0.252969427409553,0.442752129577801,0.629551459457308,0.22413612871816,0.172413792202635,0.452554192303265,0.257341140888018,0.669881066325941,0.524302676389276,0.241379309903252,0.671305767466599,0.533424034978658,0.65284124659639,0.444480002759472,0.235484086615484,0.535272646309131,0.396962875078398,0.702720082786605,0.62292100337606,0.417177053137847,0.269423026423364,0.827586206772911,0.469102042186169,0.399171751317728,0.799497395799959,0.642442411270405,0.403230189581616,0.61539289230983,0.223403737762388,0.21243682584021,0.258058253124411,0.3258428725189,0.802199100379086,0.572296190934532,0.231748031994093,0.732694181597507,0.605120021901205,0.655172413033594,0.772434954366121,0.224760480667241,0.193540842499156,0.386668477800366,0.761501242976171,0.310344826579415,0.813839810587317,0.226697355952763,0.446000557016582,0.729095272793523,0.486337366827147,0.775757007324842,0.458889411770636,0.423812339523632,0.620689654695512,0.806109577655894,0.468273412918927,0.370518084634578,0.586206896357431,0.698695932001524,0.400872092275761,0.18387113933812,0.352243909521256,0.448275861980651,0.827586206772911,0.393127456533841,0.427259290942232,0.556449633656488,0.263373615512041,0.264900862532576,0.801811404667619,0.429593706950167,0.21266233805815,0.578827017758812,0.448275861980651,0.310344826579415,0.275862068241334,0.592584651189469,0.764540025977921,0.417495002939827,0.531161266268381,0.74583373888939,0.379310344280033,0.613970440871986,0.421790794070615,0.172413792202635,0.27227414159316,0.566219129987265,0.466288010232419,0.573137101366312,0.745589770093178,0.226436290029843,0.42362399145367,0.362279441405348,0.636605173150641,0.608265358450138,0.231103611999288,0.68965517239613,0.366689190842853,0.227953853903295,0.734045298196418,0.279718171553424,0.119204104011137,0.614766774200617,0.774280759714805,0.664057051869162,0.707780785167386,0.793103447410374,0.328247542565919,0.316963893796284,0.579524047607113,0.313505421358631,0.368606436549319,0.161713737446548,0.379310344280033,0.562753306061731,0.385219769585151,0.560670988923564,0.423944956226223,0.482758619294277,0.40375583633199,0.785102822943686,0.797460778567438,0.411914154106671,0.586206896357431,0.440098663503396,0.793103447410374,0.361625542129973,0.372560724637062,0.783386040510038,0.218121759284401,0.586206896357431,0.797950157567812,0.25368933845655,0.588822166657841,0.385418743300642,0.429561726543644,0.355217903950455,0.427431221099041,0.640094257323159,0.787646599614664,0.430053095035304,0.517241378656813,0.432658704726639,0.245920504067019,0.386170443181107,0.715934646563544,0.629479446429274,0.235856345841527,0.782091958385047,0.583784407967501,0.275862068241334,0.316745607058281,0.659027630192253,0.620689654695512,0.589324575699237,0.365097032315188,0.201857372980432,0.719925585547393,0.684177290493788,0.607081120421254,0.563343067293375,0.544738520863222,0.776111196192085,0.808789654969042,0.264894847958251,0.68965517239613,0.548059958124589,0.79797870297728,0.275862067216879,0.3871146063666,0.213813261840319,0.705162156704033,0.59683275599669,0.716352537056759,0.18964284205776,0.396957201647532,0.202351809714317,0.747126435951448,0.180921437806377,0.444071716530315,0.820206192946254,0.70969291781978,0.558466642823505,0.613338916714619,0.53397696193678,0.18777160359339,0.59688328313351,0.269401219877788,0.454416553866506,0.782686342981352,0.206896551565171,0.547261432462615,0.581442682474333,0.732314566785763,0.425204333919291,0.827586206772911,0.586206896357431,0.375687030913017,0.566427468244385,0.803751369708917,0.291160028931834,0.758620689072293,0.692392031142853,0.413793102618114,0.609758806656821,0.794360464759507,0.758620689072293,0.258883851029802,0.471580907350016,0.546560950201527,0.316737924671488,0.189680876992346,0.224425389686996,0.551724136994895,0.183942980257741,0.401149021881771,0.65988393920463,0.705826229840355,0.776597824531233,0.379310344280033,0.216731747208845,0.823312564355612,0.248279382007457,0.493655451334692,0.206896551565171,0.758620689072293,0.719126414478874,0.360859635109883,0.604911446995019,0.269021192210746,0.637046432483053,0.677517313722072,0.68965517239613,0.68965517239613,0.301544193040155,0.807467885927733,0.775574608264095,0.577621401406472,0.316781978278218,0.448275861980651,0.817148090775263,0.379310344280033,0.379310344280033,0.413793102618114,0.202304784164117,0.203728585833431,0.257814548637545,0.202045315366281,0.563169042126433,0.436678787401578,0.434915975187827,0.359487763056055,0.678995916553769,0.217109983104384,0.31446574429466,0.333333332821106,0.626905890905211,0.694902255893594,0.586206896357431,0.436414565133317,0.609812555704091,0.700887358701683,0.603125013926183,0.440408263998486,0.437044298543636,0.442907286335628,0.241379309903252,0.636559486562907,0.249619402736071,0.510276816096415,0.188818856644276,0.629982931148245,0.172413792202635,0.744918669196701,0.698201165393182,0.44312996696041,0.375122610596123,0.551724136994895,0.413793102618114,0.433618447821232,0.233444064095099,0.79752371902347,0.561844145424519,0.172413792202635,0.197800896547549,0.360982524613834,0.337308899860186,0.569375454838737,0.800889978232691,0.600912068552256,0.424556874366996,0.216019755197707,0.806173704430623,0.384824142544367,0.778909040735019,0.344827585941951,0.160488257939451,0.218821646337231,0.166561265118943,0.401264219778836,0.224573719477815,0.554172714151603,0.573806996479451,0.532473083755442,0.547448361662634,0.817643547866162,0.571565396079389,0.54708255035531,0.620689654695512,0.615345602450283,0.322124118890729,0.197921560935603,0.576671981743231,0.571295061913594,0.391283705217097,0.211675691755187,0.40869523916272,0.337007051414817,0.261102077468393,0.453681497279258,0.448275861980651,0.400895679323837,0.787041456193702,0.400921475096533,0.338144550740854,0.445919467318728,0.389028953890343,0.188346573746155,0.732022789755857,0.807242684119607,0.258360070836134,0.204030444523348,0.724137930734212,0.576055042749322,0.353165148480949,0.628781782443432,0.418087650060735,0.235883340226378,0.638167648099519,0.379310344280033,0.283591176321349,0.565914021726618,0.782420156833176,0.737732683017601,0.793103447410374,0.30105493902327,0.225046062818771,0.317015987324543,0.535450148475776,0.758620689072293,0.344827585941951,0.637865748431409,0.675298520759957,0.233711310554027,0.370259738639239,0.388194605091768,0.561944563511707,0.56638043757191,0.612222227139606,0.739598502115904,0.4038988543245,0.793103447410374,0.329245022478742,0.230029862448601,0.705558555159307,0.600871877140246,0.813864674106114,0.741666769880491,0.695820572083649,0.819576626522072,0.819177872845137,0.421380092176963,0.570863148682623,0.206896551565171,0.598791250352553,0.633102338745354,0.568831699824735,0.323797204227929,0.310344826579415,0.702938625638316,0.617725538059814,0.177453714541582,0.373672394383394,0.482758619294277,0.805253313719531,0.42157568006923,0.607253410161709,0.229799437969736,0.643478319508469,0.39105866015056,0.771712025275186,0.555879159835986,0.581533721677525,0.571478773300982,0.386130287625017,0.404674029587465,0.625155967357714,0.797645534898756,0.310344826579415,0.218169386189589,0.616653555693714,0.172413792202635,0.581820124417376,0.340144248670101,0.573067318576451,0.577431208293355,0.719304858119511,0.422378597569073,0.193616680841536,0.559083735485639,0.3923730910219,0.606050269916701,0.620689654695512,0.189231991618156,0.780272832913578,0.385409958600448,0.415092526250605,0.513470248750849,0.631183997896671,0.283582725593432,0.442127808362365,0.408312995599874,0.393908056285147,0.478442134175861,0.689863511677704,0.357352832991027,0.26737295912334,0.626976006642893,0.454992085420519,0.629347107353944,0.382229255821769,0.366790469472101,0.777647351871848,0.823465289057666,0.427927451653339,0.281229189160493,0.554360716980287,0.279194231544802,0.214510328568993,0.504175455080509,0.401295197244077,0.564292112006147,0.206848218810603,0.792902529279611,0.339822434624492,0.375168691598967,0.624897862109261,0.221322174622977,0.714182532731614,0.595197845944388,0.544249435881385,0.212613755336603,0.742377726167792,0.365696309707776,0.808207209369361,0.749438928625955,0.700080290110857,0.823734689945108,0.237830680318019,0.263378436596485,0.766849489339487,0.391006030832423,0.617207966062434,0.800074505014414,0.632518241724482,0.212709915789505,0.616879667217731,0.427000741080382,0.80098066707233,0.390805686396366,0.896551723449074,0.821423108010947,0.640384879792468,0.720536895161995,0.727943145276926,0.686605743259756,0.789008051938385,0.712818010116758,0.32504331113309,0.545564874816281,0.391193228439608,0.512107130663569,0.209153986963587,0.823358969086184,0.83461601583717,0.528007832428448,0.212107286380704,0.78689200667375,0.464824615432718,0.379580205147695,0.303686582160822,0.388805786649516,0.227009991907524,0.30008198865697,0.305770284361923,0.765086726299568,0.349157578497341,0.459432484497719,0.170462949499919,0.588863361011132,0.658700189840701,0.68575016570813,0.683994308518241,0.61625541054295,0.167672025149383,0.583410899931016,0.773782960720158,0.332194168755966,0.421741607945172,0.178542149652301,0.806873568945447,0.479048936189198,0.542839908965714,0.650843453128676,0.355683035129386,0.735241350238436,0.282038051571733,0.417177053137847,0.37207274504199,0.832866699791389,0.839709659563107,0.296074736254359,0.607394693752187,0.593640421557837,0.279856795659155,0.552298909427877,0.201263620472759,0.74522272636669,0.275862068241334,0.43292317491297,0.180696262634076,0.617961183160507,0.31506816573913,0.64220036230255,0.787338150606806,0.760978556900265,0.506965929695373,0.507846926020316,0.606774908822752,0.633540561593641,0.589962551873142,0.175287354202277,0.936391134826831,0.791216254086435,0.503457985309379,0.772381308788789,0.173827085014272,0.802608405940801,0.203653939956477,0.742438966028801,0.449507582466591,0.368701575620753,0.587402380851472,0.410349464286444,0.750441379193628,0.527685727437666,0.67191717645332,0.232613141073485,0.433845664732015,0.702246539809039,0.678613157690143,0.477261342413036,0.694100986741577,0.567778749780523,0.267851132636751,0.254529245947049,0.284514349451768,0.567512695787021,0.719262121961696,0.196046693852215,0.832268895564851,0.59532438148309,0.780697779851684,0.736815976246089,0.747146283739383,0.253063747941576,0.50545398290777,0.370015311911716,0.29747889605116,0.493664103880212,0.589520079586208,0.238505445689434,0.448010282309736,0.685723706088703,0.502177631903605,0.545679682396054,0.679923555282805,0.768514328839736,0.495778226243126,0.793103447410374,0.369443998038251,0.727446488549417,0.581884722441327,0.362653965701027,0.76083707251664,0.399084975895551,0.598692144592006,0.138244428940345,0.497525764859771,0.743854564888267,0.549403343162875,0.588429288229374,0.797087401661172,0.348436519036476,0.386589016985697,0.478500909198542,0.398583877131887,0.575255202711798,0.828849409780325,0.178752723269866,0.614771936428521,0.617198770555853,0.69376661185526,0.419750327961287,0.314463205695584,0.749404160677832,0.651382363495773,0.728322489632594,0.233725763562811,0.405633179522709,0.813293043676105,0.442588117432397,0.164368791425944,0.554891038318063,0.572436187809739,0.206929653749736,0.325798641681484,0.211053239145366,0.594295768387891,0.615830349890357,0.676727804287083,0.554750849869801,0.767666471579733,0.174440646380596,0.830128183476746,0.245731869149703,0.246279581632726,0.707653853164663,0.518074386444012,0.397681014842988,0.804518807264528,0.549248474276856,0.460934069949141,0.411150299069612,0.595921488055886,0.290011596623819,0.230481915437134,0.669873751718433,0.340969963363344,0.212518006714543,0.415315192533019,0.714129166830451,0.686768195160449,0.402249025136464,0.456863759278193,0.544459038315768,0.816169061293983,0.421688035104133,0.798745707188496,0.58017137398028,0.400122168799976,0.17652178846907,0.801532894327802,0.420327826468579,0.216453122130086,0.396107535200294,0.749001597053373,0.77618433304707,0.177624502431252,0.811006698162301,0.264203194448914,0.784927667803064,0.632498930750879,0.733959582060538,0.192826315986762,0.37333415832681,0.544395912433412,0.940975577375829,0.591043548417318,0.708706631100463,0.375259587378483,0.634751381152078,0.630691588558901,0.420831639013096,0.521510696850261,0.677898166075254,0.797657756644914,0.298448788419784,0.754586818259756,0.749300075042341,0.357934697724818,0.412753815728011,0.809282624683606,0.460304737100662,0.660877369447497,0.602865628109188,0.22101682049317,0.728100000580866,0.458033904906394,0.747539843430314,0.271448974983254,0.780008488735192,0.469460788852964,0.413793102618114,0.645687222383625,0.215326925614222,0.675841674418973,0.236744960012608,0.770820385888983,0.750739478134308,0.544157288218064,0.243982943421214,0.758212729644228,0.367110857476584,0.593293234839377,0.746946093996005,0.227872676102326,0.346413299624262,0.613096334005796,0.474893923592655,0.580242386115941,0.798899854858313,0.602599009641073,0.849140930081849,0.823844274854143,0.755656163679116,0.711457864997404,0.202941844475401,0.778086057238361,0.239045849711677,0.226006205450749,0.890754523073095,0.385301395072882,0.471134063714309,0.400910833059727,0.389134176670699,0.241379309903252,0.173361580933781,0.83450999705541,0.618671604682386,0.593283952254135,0.324795907339822,0.589352340474122,0.378523234118263,0.761779394756797,0.615476192781214,0.214052793722649,0.641960109204017,0.588093882741494,0.752950665543741,0.799062908113993,0.696537679197768,0.486277517151346,0.176444895962668,0.345690496541271,0.844659802778307,0.740780325504747,0.372785890589269,0.270313296113455,0.403088710320265,0.825083112227808,0.573999952547252,0.624877387354968,0.880697521689066,0.728556817284372,0.710856632944994,0.370273695811884,0.851944879351133,0.42244239754271,0.566018779404479,0.320245402930533,0.745153947542565,0.305759588029012,0.795390667808606,0.313315522264052,0.234251011800255,0.45523290401812,0.208201765416378,0.636784104431778,0.80631441330194,0.206896551565171,0.584078081263302,0.724137930734212,0.58877063657974,0.360554392645652,0.40335388738043,0.583183516034096,0.467649085556761,0.243121764150562,0.208843096679862,0.62357763794584,0.644792953221866,0.804724096744064,0.27513928359853,0.636278256295508,0.427514989746283,0.63326741120151,0.196463195184677,0.226455070335842,0.551724136994895,0.592984698752858,0.429649815316917,0.23867330568719,0.587514530995409,0.208795148095857,0.791421566103978,0.142151326771967,0.348804573899884,0.231900789478701,0.804394330880041,0.149875552300248,0.237217846314626,0.447255508040316,0.771892830284213,0.61226238576906,0.795409714472862,0.776426451677854,0.714814561945214,0.456006062129518,0.259901062967164,0.315407394492447,0.211858215799423,0.775571781793211,0.566379067875798,0.490098926276061,0.641020620605928,0.241379309903252,0.385999027300625,0.6251735685162,0.830933883395916,0.178930761226388,0.809692232459497,0.644409817358861,0.787557992467245,0.384013957561938,0.600300927972701,0.823409652964594,0.37609318627612,0.823382039809024,0.662429680779977,0.697763365644741,0.090889570807004,0.422077796116544,0.367243482374813,0.578883166079301,0.442706109017791,0.670794012323761,0.323970191622125,0.332314931491683,0.44754787822957,0.290276879202832,0.352832989490436,0.448275861980651,0.382407994505398,0.380352904303328,0.39685837248979,0.537717138964419,0.765050682905177,0.631965971441908,0.709330049771192,0.584232045555703,0.230854555760375,0.402097392503263,0.339605992929643,0.834314439896787,0.711624543798738,0.571180155986156,0.602845996481223,0.412681353988761,0.484282789876948,0.623361261816101,0.369138980954084,0.526677486651277,0.3329712454071,0.482171240944575,0.619050886546309,0.469265686552288,0.496598535912669,0.360731103933166,0.392466577647688,0.272248170638688,0.313422699704229,0.225104586850018,0.317370422060946,0.236091249236922,0.417968697536708,0.173990002017459,0.545926488932154,0.655575903789677,0.223807893389657,0.780593120521487,0.19344025742583,0.785789017133218,0.302691200331497,0.461499376419466,0.801102908096372,0.602596096091528,0.20985075660036,0.39011733572941,0.272575687824353,0.253278452161028,0.646113660927968,0.839186939680192,0.457612085628893,0.734358083721584,0.590935539119817,0.218324635148351,0.48622171919441,0.340984220701255,0.54629376111207,0.272085577363228,0.287979929557051,0.323888580476761,0.191155978237424,0.190922282674277,0.395476255887632,0.216975437353342,0.555226207156876,0.563645279420209,0.617743697546184,0.672440519204774,0.60963138086687,0.764180323494766,0.693164799961415,0.697441798492746,0.419786383649135,0.335448666089632,0.408726553673601,0.733064607049399,0.536842271952743,0.736971916711863,0.635268859924068,0.137931031815643,0.167921466583313,0.330228982661133,0.575113394600445,0.218735616718173,0.701726030699654,0.862960533809811,0.730202694125662,0.372306936441275,0.342631838091306,0.52230949911504,0.292236295568046,0.327586205748456,0.330851367656934,0.627102965281441,0.156256929604576,0.34359841942191,0.411730683466169,0.414637970518915,0.785612355019536,0.371114664637591,0.54383712456919,0.670500537772198,0.598613518708026,0.640578452582078,0.682074559044162,0.547010717631328,0.148154064545551,0.11727060225538,0.594526586257412,0.280080982232542,0.62435097021456,0.399295322084143,0.270954061877871,0.734745718990216,0.408757581337129,0.195447845706202,0.400093174679292,0.570228948649232,0.586865362652452,0.272890811155449,0.827586206772911,0.435559903444313,0.263046110619834,0.604543696394697,0.432401099412144,0.42390316359131,0.659424003036156,0.602239290766641,0.181825503829704,0.319148985267756,0.609753353483745,0.783259983391743,0.713884114161026,0.389312089643732,0.765401058751532,0.790072451289811,0.663349378959601,0.49676560400684,0.700866645249414,0.272927903591588,0.610010726246993,0.78411920492921,0.229053345955027,0.526782822121664,0.193478746193907,0.586701597400663,0.572302835548579,0.168080196639598,0.660144745940477,0.606429104093862,0.445309387049926,0.194332366012346,0.471074739583838,0.266879865449741,0.761444361146022,0.779717515902331,0.367172060457219,0.854700905647782,0.724137930734212,0.304810276957983,0.824785167979808,0.642157002251742,0.252710104084304,0.410996704605405,0.392285610774798,0.281640030380003,0.761752555064627,0.717533183346999,0.576822848084218,0.227933848349316,0.693605718150368,0.3837524746859,0.832937601285929,0.549265985283317,0.587875088898349,0.289161471220815,0.694113987073408,0.776623913298011,0.435522012957858,0.375078716804347,0.676681287890935,0.521479357752464,0.226993424423964,0.71138379793743,0.699003477440219,0.315165509437365,0.195761679248662,0.787575812859066,0.185947183739345,0.670621777903868,0.22866386974106,0.668817840999754,0.860120228687413,0.58126786642826,0.575476472662274,0.585375615801081,0.667684972209563,0.732480915712641,0.650157928932605,0.247139848114122,0.185715580112967,0.350694188010594,0.183597696976362,0.870738445893618,0.813320281881206,0.672256015913799,0.584140591448304,0.389263223148196,0.4513112110098,0.797871648471683,0.359009832338439,0.451134939213409,0.558180501319636,0.279172924933185,0.604163153426874,0.169091794564474,0.288347311353634,0.367875716479379,0.47774032422131,0.582115379471439,0.679113987022186,0.548231328929059,0.673102373371927,0.348712440578931,0.665569996475773,0.206896551565171,0.650572595466462,0.243424612463847,0.451346207411351,0.366303002104445,0.556973967055766,0.488243559690419,0.645052285767209,0.595118321613519,0.189943102598137,0.668035603145171,0.441196564576772,0.789107926040057,0.417529057867386,0.551724136994895,0.399592486722015,0.620689654695512,0.358396905109656,0.31034482555496,0.610150143280765,0.586206895332976,0.620689654695512,0.388284409826886,0.833398760653472,0.211833297984519,0.437262705142855,0.62989378206422,0.437377043522314,0.560189811708582,0.288768012950912,0.419037435454351,0.407472540026039,0.765815476342864,0.673624478581943,0.495500488342252,0.590301349330974,0.329979495126735,0.539099325229506,0.780809643148267,0.442497892670797,0.657044380909805,0.205496601253279,0.749012584331457,0.685473334449784,0.36295814887896,0.356952505751469,0.487485798110707,0.231160432362147,0.533136424406559,0.760927819750205,0.450276405085136,0.362948918540915,0.476466867445472,0.661871236108124,0.190784237385527,0.190066764541033,0.703369492900902,0.367073023335145,0.79839993933998,0.200777967414612,0.468417145980911,0.776325981343469,0.540761155905911,0.280319585958793,0.653717360369598,0.19852418727104,0.355840356560275,0.272453217322429,0.845772427316543,0.429510354231587,0.267206796647242,0.456771133194464,0.691989016758268,0.70481336876267,0.369267558231268,0.619766574790484,0.363584032388017,0.76248896085889,0.172413792202635,0.373004700823691,0.379310344280033,0.568782618193685,0.354773430903231,0.158588458698791,0.587435333465631,0.605023712902352,0.643448721983888,0.408782217426954,0.40860599787776,0.463291328226487,0.20959524014927,0.405428425833051,0.613816682495006,0.586206896357431,0.266218315545673,0.660139417750891,0.451169863903122,0.384169649085188,0.433127974703096,0.351733596810823,0.525746844220671,0.567429421951463,0.200146614341202,0.83946964721146,0.297479273050539,0.781456395826728,0.581062397669128,0.190346271675403,0.827594260012353,0.199796480266188,0.564648659168415,0.286960933019371,0.400326382601938,0.502636413511482,0.705987151205528,0.444342062989568,0.825132063753095,0.773567042521729,0.769037623441813,0.815631229677826,0.406235950306278,0.533174767702049,0.451149425004748,0.538780836564285,0.77902054752132,0.650640464574695,0.200967521267913,0.74289282410675,0.415940376339425,0.719764328161035,0.778109259091419,0.633058609890806,0.393874054629238,0.165787633709412,0.848091694710862,0.333105048428388,0.817170240513208,0.206896551565171,0.556097603315578,0.391355124061327,0.167521314525531,0.36056986396254,0.180713960091317,0.3223010965365,0.832168714126729,0.374914213945078,0.281803607132103,0.557021999645067,0.331117663421778,0.616698533358703,0.276300444757846,0.790404541641851,0.15555299902852,0.254305111620859,0.817104861854673,0.167060052712504,0.407086030633269,0.798525526233507,0.361479628003649,0.374497968726324,0.796124581104261,0.156072260351919,0.630336110927478,0.729094583335421,0.404223746856883,0.433568013909802,0.663403308310922,0.18560187177323,0.249584265984208,0.745352562698864,0.238631324552588,0.738346442103709,0.57659449607748,0.540190841900362,0.201878651931769,0.556466274900796,0.356125145783765,0.427411220667336,0.196248879233607,0.557021999645067,0.640667001335572,0.411553065536128,0.251573502180701,0.288831270987942,0.8153081616995,0.505274062003264,0.754030580263613,0.755194609896461,0.204376962272801,0.444387008896458,0.383191842802979,0.411051359270747,0.76383925482057,0.45693900138786,0.595828838409697,0.779558630128911,0.6941755516866,0.632549538819631,0.66850924651931,0.517252866893311,0.728691771792892,0.945618722211215,0.227599063681065,0.774708816897784,0.210140201971065,0.640215079477257,0.833184576857076,0.667674764541606,0.354369077556179,0.789778177663477,0.191245686673788,0.81783609210312,0.237654495600289,0.249491277243468,0.672012186443445,0.445104882302792,0.665361999362113,0.167443893400434,0.848885579592442,0.266302881218775,0.613658709510843,0.341128001912616,0.586206896357431,0.655172413033594,0.328121528474727,0.405680825892539,0.540845761532752,0.44027979224015,0.793060397769381,0.601751258924372,0.342192008897841,0.592558845172225,0.574863699101716,0.208209997935416,0.823354070143173,0.597432279258438,0.187635356222871,0.448275861980651,0.204095929725185,0.428382384384407,0.659070709542437,0.176588266367641,0.215891440180961,0.204335390920132,0.603159186666048,0.204470933465726,0.562714492541472,0.404530440973612,0.749501028004569,0.306721545994954,0.348341298008656,0.766184749283069,0.481205210770672,0.517004610753622,0.388684484026101,0.447221308664625,0.562075519573014,0.226500325628091,0.719714681030917,0.116457870478237,0.608330866189982,0.587552360014573,0.606634667102839,0.558381507553516,0.4054236774849,0.288084320480083,0.439271186747841,0.604158021932615,0.383807595478192,0.588387077616888,0.719860200742129,0.547733116054659,0.754747653570722,0.607293048368108,0.458329609696129,0.622985678234124,0.263859830995891,0.773659381758104,0.374214544076672,0.286596310079653,0.565576362438105,0.29065736582564,0.271148796399263,0.261746598884227,0.319071351056054,0.210972612501097,0.375560140912943,0.736722375905814,0.559326279265179,0.287846251519254,0.545776906233073,0.542319874178916,0.606639914360493,0.74239114959947,0.699318222747481,0.271852314120021,0.220838073613903,0.266378537208194,0.296114346800479,0.220315632382702,0.382903750737108,0.566239324040934,0.787087476753711,0.941410358055877,0.41821094934662,0.725269097904925,0.681401664327273,0.333436277213913,0.7071624098878,0.323980757849273,0.548619424177911,0.659244686560002,0.512034225335377,0.630588298924815,0.410306369569438,0.845689755860427,0.505022983490511,0.271309281346676,0.780088908439585,0.298451901738021,0.394715832774263,0.305141341830735,0.301195742144432,0.784674974749493,0.379310344280033,0.463157724973893,0.651555035357881,0.2445825066367,0.720855972888745,0.327507499956999,0.377415959283166,0.17547797041524,0.808766006453676,0.362165187031185,0.547018484023417,0.427683166300583,0.578933582574999,0.729428463410054,0.532930614503967,0.398331139002304,0.324330963636125,0.309780578370933,0.273821492515338,0.520211781347368,0.470863505192905,0.43971197073321,0.750218453724141,0.27988928931755,0.169602557010579,0.675875448645908,0.239465972491974,0.307859313728157,0.626217254415357,0.786924704198655,0.304859143453519,0.518805564445262,0.600765349204433,0.366719677594229,0.422862392266153,0.249273135978052,0.891010079477923,0.452501868272668,0.444243613904569,0.778897279993535,0.175240377825909,0.46833843096936,0.628367339240729,0.103448275526472,0.453523910514567,0.641580682891962,0.409358146469442,0.623909520333549,0.384788706651692,0.698365111973477,0.684134165043136,0.453794822472888,0.684941142457483,0.714291949630056,0.245735614556573,0.217524460114096,0.554797226940093,0.226198542747832,0.262679630343504,0.214581456468051,0.624525202321378,0.503961138104984,0.684218126287887,0.555095389396972,0.570945237223939,0.443907306896436,0.715588571378578,0.488161876833217,0.612194601690578,0.780480916081444,0.779878269256911,0.676141488297043,0.390583536439187,0.505437610070629,0.416939835498985,0.379310344280033,0.763873624255763,0.327652253375996,0.40311349495604,0.438980613452364,0.123247531962812,0.49947787583757,0.546264484241851,0.180709117493321,0.713699817809928,0.182209137577758,0.464409907920668,0.391289330498585,0.222364592247051,0.83090949727307,0.174621400166882,0.221914205022076,0.676851108695242,0.335880662301444,0.348956555872184,0.374365235235882,0.822834174682232,0.748735473396942,0.62858336808028,0.727179319949056,0.692800275369361,0.546010226845751,0.4358327055218,0.579841238288061,0.78900636568573,0.645406742017164,0.210695179887763,0.195319046122319,0.81430284573166,0.644670853572591,0.625678188331126,0.419567935047269,0.76333211587121,0.812107603961702,0.819654059940627,0.717421415324715,0.714448213823557,0.746019322980213,0.399474559677275,0.423022516605465,0.546387000844243,0.593960018683188,0.295909051174213,0.231688056310348,0.436486683680198,0.23733111106542,0.376070275368234,0.340918986490852,0.609862955808512,0.564662123578286,0.737072317383319,0.657856754127756,0.406337733991759,0.460461304532794,0.548619424177911,0.467172064555038,0.580575057333871,0.532210671698871,0.25882364279481,0.650169872027049,0.214648072668023,0.39344007097505,0.625097059155905,0.758620689072293,0.52857876622917,0.307414969762242,0.549492784216528,0.588407092390961,0.793103447410374,0.720093542868359,0.410848416817233,0.685705546602333,0.408816571495325,0.704110367367147,0.630188367124822,0.610729907882148,0.395107324090886,0.7904800132294,0.289176438505926,0.331904115883544,0.46400687612035,0.223341691655425,0.426125342376647,0.671487152317061,0.393392850778432,0.206114630267131,0.735011878502566,0.453194922211762,0.750121867098028,0.643734312331057,0.784335467344462,0.477526143498278,0.745440824605004,0.234100847210829,0.691664457173706,0.804178932080212,0.228791336509205,0.754969080262789,0.428657752721252,0.758460585222077,0.755917829932569,0.397767980813764,0.73705983030336,0.749578585382158,0.228583735859565,0.609854828808322,0.460443613222282,0.797200323219598,0.848312205540307,0.78865430563563,0.813487551792979,0.778647598837174,0.71158575588985,0.202941844475401,0.569470234326525,0.826482518554183,0.38226060413966,0.499937357148097,0.151135326457336,0.38885134620485,0.237842571165266,0.185739486790951,0.83101306760778,0.395182305989025,0.297753939635823,0.594317816704808,0.410683083125095,0.56497047628739,0.765840398255587,0.596725928920066,0.208828205204409,0.637379629246313,0.589980869125557,0.616180838426744,0.708552440403544,0.48018336727301,0.180779740336146,0.297847217272825,0.750961548184009,0.193018263991008,0.758620689072293,0.513304746023663,0.622783520513013,0.599718340998253,0.677626508313815,0.214781528399122,0.708105521982634,0.182029911253629,0.583384968930283,0.843418655258993,0.231928614696421,0.719104403042332,0.285081967092196,0.211631603316992,0.206896551565171,0.698315118577625,0.728175754917949,0.212374016514396,0.725522951665821,0.588830412494792,0.728637473637832,0.36218583184498,0.578900540833269,0.378672845502079,0.451151428838402,0.304989646705789,0.625876758411412,0.523345664491268,0.13758294972366,0.626720036358312,0.408981237242912,0.618627844069738,0.625083117350082,0.555612765723479,0.479807329857543,0.43213925900137,0.595574325924343,0.237250059272396,0.787338379060233,0.0627233960784258,0.705505743488209,0.785157937589249,0.271885168386516,0.391443237421516,0.617121690574216,0.195832096176066,0.774470209073713,0.721724944162858,0.317274920332502,0.761370402678261,0.265660200748276,0.314805891983962,0.209063160847,0.431741962099208,0.262346705060775,0.381882225844899,0.829260045084413,0.467877838125339,0.178714481395403,0.25772847086911,0.56976428564616,0.702336999170796,0.604469081251388,0.174886857927672,0.216049980713101,0.608968672304385,0.467106779121893,0.686121301107222,0.331853382831303,0.374774762079841,0.356874431024189,0.458100829467271,0.388187212625693,0.379634458226743,0.396957439321054,0.53745449845442,0.702357751552349,0.584942821538954,0.170737899859192,0.334009908404211,0.827586206772911,0.739262496297492,0.660964469621856,0.383406208952336,0.637700554065127,0.638568718068831,0.548555724600848,0.325924266479839,0.413793102618114,0.17661533041542,0.42133378272069,0.595188025520358,0.229110958221472,0.320807660623274,0.175566212856738,0.549465954768905,0.654893936500786,0.201269077743654,0.238621696726067,0.197686965901113,0.740757654319292,0.296387091508496,0.434621065375042,0.413793102618114,0.415905201682733,0.865274324468593,0.253028043641735,0.618149575282028,0.799855670193076,0.250532078277815,0.642793383349472,0.822405661616852,0.686255141008883,0.604171811094668,0.581445751741012,0.277337899922708,0.78069326610369,0.281529588002273,0.199369701602841,0.340890643923442,0.382720315952525,0.206896551565171,0.591961017383226,0.559052988522735,0.739632748616517,0.692737871727662,0.196593274312646,0.715151326884657,0.288547514414925,0.339910588962874,0.529830477926722,0.638430231240047,0.538683783811223,0.753962190732325,0.639017474361712,0.137931031815643,0.359615184748187,0.560462282887159,0.226876337432187,0.231928523519941,0.733032120562188,0.465917783524765,0.687292264250379,0.380485596815576,0.32371630200531,0.489024973883317,0.552543992830947,0.217783766023613,0.209509052764167,0.552012977937249,0.647746626564997,0.608896614200339,0.626580935881083,0.675297764712291,0.650903476961799,0.121229706305293,0.631852558145162,0.440759027088768,0.617346767398852,0.55009430311629,0.366471591514043,0.419726788038134,0.399581176740659,0.552408750450619,0.389385981521929,0.610225720387162,0.673843009140196,0.335052629266915,0.204517320780565,0.59708775304918,0.357540078747589,0.366994035818609,0.492379031835477,0.555810951633203,0.785624311431893,0.215957575911617,0.568725337850606,0.511916219407615,0.284509159563584,0.398259187441561,0.7859872153364,0.63666696621726,0.529646305534659,0.439070666105552,0.193445368430992,0.775284841214572,0.586380957380292,0.60479192384965,0.439586933971929,0.370932221525286,0.270378755703921,0.820788035142038,0.776528458694488,0.785037854067085,0.409127797800235,0.313321888226384,0.404346274728278,0.81302550319864,0.255394913354325,0.400454308325848,0.428171300588335,0.285807312872081,0.437984300393597,0.479491706592489,0.704225296857045,0.604403699519489,0.254636876196262,0.825306822429697,0.77831669890165,0.746020163033176,0.284249180587241,0.779009648346351,0.771199649312719,0.620689654695512,0.431078623497001,0.283565761645852,0.287642320466826,0.582516956545894,0.70784883048185,0.727454920837148,0.628924216496688,0.493731663603086,0.452422667669526,0.319240271364563,0.816832390676096,0.706561604008602,0.578206459365977,0.584549829396,0.667592161723964,0.528867307006258,0.340449389713304,0.612082827521565,0.327754503188426,0.668275839852426,0.632066300401526,0.313590674440927,0.629863236918918,0.22416453889959,0.586385218087943,0.451134939213409,0.600602015248129,0.399116376460638,0.435310009201346,0.16666614265802,0.373593029867479,0.473404202352654,0.682623968024388,0.765818772014062,0.34266516053366,0.345039841714352,0.633843048274371,0.758620689072293,0.437378285161572,0.375151331187367,0.599689585575545,0.569799281023256,0.164551197657875,0.164734612977816,0.365922088283973,0.641231354038447,0.177939786601756,0.481747340999308,0.383864077770956,0.209633260741488,0.41811480016272,0.793103447410374,0.612712941004627,0.395617845790105,0.353525749410992,0.40239382260702,0.596493204540101,0.55771030728492,0.331757589133231,0.761395126871201,0.225167530379414,0.220969185392344,0.610578236319663,0.446493152805132,0.568230402207217,0.294115033041793,0.669731643441815,0.787763022759709,0.323426582080709,0.536693329537933,0.455200796579198,0.230582710523701,0.456198775401524,0.202252989776668,0.358635737289335,0.617396050847504,0.232987530141126,0.594988753688511,0.758346096247757,0.59084029350508,0.628212401716236,0.702580524378066,0.69089373726481,0.555937864171283,0.664015381144374,0.241370460662405,0.546166951019472,0.460582499588451,0.448103082550786,0.78488805213467,0.270459635388534,0.651593133808666,0.261223566542588,0.274969142139861,0.65970643191571,0.426231811918534,0.455000104852952,0.192920162196197,0.528395196216549,0.252655781342327,0.643834928138028,0.634569037411892,0.760554824965591,0.509898085389191,0.388014231378226,0.536169666132116,0.559476808560525,0.172413792202635,0.601998325671999,0.60877312948813,0.227358142637981,0.67977194518761,0.520792254871495,0.549604966118564,0.164792188363888,0.76351164133615,0.802501910787543,0.513176415640094,0.453988623715927,0.38773761218203,0.43280825361871,0.103448275526472,0.57040572652631,0.60123192076686,0.405236880439554,0.198750792582287,0.176792316256829,0.561015459812261,0.513988626994182,0.436203239565905,0.827270773032001,0.739586185095446,0.769769534952724,0.476403103327754,0.822504047185652,0.730080443881527,0.766160183880627,0.544114322582366,0.776933515842011,0.338302672270967,0.413142930309421,0.14450326607982,0.773437678463233,0.160008722925567,0.543963298475336,0.829354619681234,0.561132889996407,0.811045348794242,0.560471069636262,0.385877578180169,0.155822495190261,0.54445605202993,0.325532208639693,0.38969799870597,0.375571606611434,0.554373067807754,0.611117722430376,0.252873957439208,0.147958566805309,0.717087993181393,0.405209467052677,0.434098643608483,0.818744207796403,0.785938352938684,0.412358729599378,0.431419365370105,0.665609578337157,0.813078927493728,0.406609897833886,0.436441565664896,0.661703531827502,0.739679392045065,0.572627416646692,0.206896551565171,0.191710266696019,0.584026569625388,0.446082677315998,0.438718885731622,0.156129840860264,0.750305962655978,0.783330952500301,0.444100669672807,0.821543608486227,0.458434818134117,0.597194838288422,0.746841813714096,0.292091322915714,0.365586895882699,0.736257426055388,0.230521563888082,0.777957211554011,0.676652826486763,0.57785100632147,0.703291279872219,0.820399570064991,0.204582921745799,0.197732373837132,0.797956957898994,0.789210370498905,0.375549333938909,0.86593532731378,0.376591163525908,0.209763362407464,0.609282227195131,0.494582781702823,0.540970460223938,0.595503261541485,0.797784690696546,0.611571532358948,0.782059427846278,0.592998855694196,0.427336138372623,0.205328715644152,0.640856123893388,0.431837477145565,0.775873349537955,0.179660319564548,0.216463183301001,0.314687176109,0.707390720916345,0.806219081632997,0.417529057867386,0.767808917926447,0.350424207281716,0.440351506127372,0.611131575108628,0.46198642580955,0.597380162167717,0.790375023000292,0.224934563203654,0.686255141008883,0.864380482504499,0.736505793860653,0.610319273602515,0.781444790802379,0.19804472089563,0.423394783002692,0.810665050671124,0.543359034036621,0.694314135838593,0.514117725718876,0.460121503109226,0.231768038572528,0.439295417153552,0.375688006194018,0.398045332495165,0.674494964000299,0.370451251250181,0.559821787578819,0.565148852314007,0.706470733840457,0.250571734924402,0.321782623018867,0.425131060811813,0.231358574220313,0.78444727019821,0.558499272734392,0.450891999994304,0.59213441968163,0.37574496076046,0.728121865520367,0.268681611044967,0.455226313700179,0.773024109120503,0.219451621518891,0.465812669336621,0.395402160142923,0.241379309903252,0.422657301530854,0.770734639019458,0.309009438435556,0.685050151622901,0.419618206070381,0.730992612318129,0.393248881067381,0.707763702383045,0.318001664493235,0.424741821246913,0.577176586191334,0.250590331852986,0.755644710274082,0.206896551565171,0.23732988376853,0.548099589159805,0.565354511621738,0.399259494849722,0.381990685902527,0.175180808850733,0.204325514151087,0.461316214139868,0.682730306436057,0.348447204100385,0.66163497428562,0.2707590456314,0.670935735405363,0.452642985901463,0.387289852683702,0.806157684005944,0.426937234100827,0.542551390726633,0.105397638916408,0.275615624362245,0.484772329716731,0.589266116208645,0.20985075660036,0.627983772082239,0.443139794555623,0.200476441672516,0.331504351069689,0.732906555182213,0.457529967378387,0.286871635389395,0.305271792835809,0.630150394681981,0.767620680497606,0.767067206480603,0.582365792088551,0.301135313651651,0.534941021059585,0.814076307009977,0.613916742023003,0.876698359406272,0.44737525246793,0.421230619094549,0.167796125558946,0.613211943733703,0.636045023785946,0.0615912556756207,0.453446832581839,0.350715069473456,0.761161103482508,0.417765320714345,0.741350476621977,0.316872935525023,0.620689654695512,0.401316332771738,0.694010142184803,0.416912617782981,0.712072837038034,0.611289362666467,0.40201565227659,0.215067130015294,0.756038964545391,0.601401246759483,0.728597910216635,0.827586206772911,0.264384121368066,0.412935810129098,0.395188546967868,0.577181227996183,0.551724136994895,0.663252217614327,0.783266999882895,0.748337969554903,0.788728412649341,0.517241378656813,0.2331173347152,0.729902964252888,0.318687587202236,0.370502697322986,0.528463483302354,0.397323411467786,0.494435438462007,0.193417406960779,0.757646085235892,0.868307446332935,0.393130352667654,0.391394320727693,0.504155087893973,0.816323036855388,0.176545115305619,0.21588948142332,0.606189223896888,0.11194186458545,0.720253019752217,0.546259668279681,0.407783394453845,0.226716800105494,0.58662243675126,0.797841397344918,0.649234467930379,0.210728283096783,0.589181802551431,0.815384354503252,0.194763631787862,0.554075878582965,0.422360535405912,0.415885645864425,0.573280038426891,0.453109473458593,0.529711914695531,0.526938133572171,0.711479105019457,0.75021977834424,0.34669122295146,0.425144848949411,0.543158781801498,0.467846752067885,0.42742119271068,0.728599895610102,0.338482805237624,0.613761440817045,0.452139139549936,0.356067001825261,0.607063944411524,0.554518419508374,0.434318577669858,0.724137930734212,0.584622828974037,0.6440431291182,0.741595180976759,0.202535719845943,0.455713564907865,0.642317507688252,0.22736913298943,0.659401038856619,0.431384753139117,0.177079819261171,0.270551380441106,0.767585147281722,0.230489703342775,0.629809025842519,0.760814269176511,0.496613403825661,0.255977184796685,0.546627265211779,0.606353688851328,0.584013509875176,0.40540600359012,0.68175592183299,0.333032549808764,0.444476065779548,0.843527747405253,0.392054330876148,0.220418868745136,0.424234372912193,0.301941235877519,0.413793102618114,0.336844420234528,0.367361301851795,0.469382255169919,0.713300712744986,0.737824860390113,0.768505888356367,0.75437127808516,0.636596890433316,0.786320071980655,0.247974060660204,0.238184212509714,0.778500760652591,0.768120951501765,0.349629912618203,0.423983622224986,0.42540730710645,0.686619924788009,0.740074362410302,0.769384710788154,0.693785505875745,0.608980721942131,0.738853672229549,0.827586206772911,0.805443141102272,0.809095912668012,0.505211593820911,0.206896551565171,0.829545120130801,0.55271476023152,0.349994675908233,0.650343235396168,0.176997918195089,0.793103447410374,0.196868505372543,0.235936957118974,0.296176175723016,0.280063992673591,0.748199747035466,0.412318200117273,0.581293662200955,0.764332577972051,0.594547528163109,0.300092343846422,0.623524138865549,0.578499584578443,0.794932608441387,0.702817511514591,0.695348547348146,0.226358216327017,0.306467906345118,0.750916986447682,0.734253915105252,0.504683768055107,0.830370049067186,0.659247322482287,0.356522603525336,0.216739969483335,0.58000788430684,0.747866791019092,0.434143128510698,0.575171810039479,0.29243779251579,0.274741014488732,0.72661660125164,0.519124215998803,0.275862068241334,0.579619604656119,0.598658718679714,0.521624477926292,0.437261295493004,0.599957885174042,0.40896812217214,0.212085694970643,0.727836752569151,0.231648768467502,0.367448119276621,0.404404477080707,0.601574540465674,0.395574966208613,0.4513112110098,0.675251580239508,0.219582321466489,0.55790603142968,0.760076626865265,0.264900758038183,0.628336986692936,0.793757017835748,0.562852901511689,0.821213568068308,0.434411844037857,0.707021540177075,0.234544056080788,0.754309748303434,0.338018786616641,0.220687355818867,0.387073036038385,0.788816848712803,0.184340419559125,0.771446385161436,0.38785974256495,0.206896551565171,0.764124725306523,0.567351472207672,0.427856579867989,0.247654335477999,0.315615117052212,0.830967250914282,0.818244289204706,0.608030617943062,0.742702778515129,0.488673777448641,0.184209030153425,0.720158986067547,0.452535832023747,0.294754663710254,0.419679467444941,0.594746445533583,0.588900386857707,0.31034482555496,0.389068472235527,0.61188707469207,0.650402631238478,0.600956144696992,0.68965517239613,0.750949145109345,0.765244163493853,0.234595038075554,0.481554995506587,0.580511095496371,0.453657455373236,0.169011587946687,0.328007198290906,0.786459008545111,0.257618124790134,0.634002065178009,0.454677343186622,0.379310344280033,0.829791166521414,0.499117908020614,0.633476469650377,0.755646796064122,0.31523465706523,0.171845435930272,0.522782669191046,0.226711863257654,0.234749443907989,0.320999279777519,0.411799657961167,0.408660095239673,0.779548221667808,0.233056791483478,0.738822937560103,0.272888773514786,0.428958101364745,0.419826839370492,0.251444398333732,0.813253819349458,0.483991872364648,0.679418734674732,0.600210088538202,0.859544729915955,0.571922885740104,0.206896551565171,0.561626956902097,0.650104053877391,0.444037344021758,0.790046401452316,0.201878651931769,0.80101005663258,0.213053393981469,0.587300936260541,0.564093685349537,0.607087522239506,0.832149018982564,0.468687728064775,0.694359099161214,0.190019368138182,0.579821187658069,0.336432265663922,0.702991017282932,0.762757032003959,0.435800201618858,0.698294867154486,0.359634980288926,0.778700309087243,0.736038384294173,0.698485315356856,0.154725806046953,0.328772273453672,0.522617297594079,0.475594707043464,0.164726581251925,0.341564846869153,0.424513331963227,0.788063575269714,0.229145290776291,0.214689934965866,0.580362297529692,0.626530051209526,0.288866310416596,0.610372339338411,0.273625404689112,0.315710273539378,0.364610013658749,0.639704800573834,0.428698879460524,0.235938396478014,0.807454942965372,0.35785087273256,0.596960692989603,0.694614844065732,0.420529948333772,0.339747152561086,0.44255978613399,0.365627214327107,0.390995452311817,0.196239507520794,0.318141471844298,0.728753835315587,0.202295870382614,0.280699443566333,0.809615255947798,0.729618533588591,0.624428392364111,0.532928270551309,0.629367609768517,0.435736590144911,0.76788144830417,0.583927943309702,0.420281092888006,0.608154353646705,0.257073447766782,0.374399736825749,0.819452516892415,0.245806062217621,0.223235042833942,0.802975350295171,0.406188743427572,0.22422043315528,0.404701162273717,0.29454727409831,0.646466470879006,0.671099022236745,0.349389105289606,0.543150892474829,0.472958348340316,0.761521892912241,0.244336062757611,0.54738970035444,0.696515646247673,0.228151030725009,0.215650049937563,0.746749493942363,0.219905484719114,0.172413792202635,0.810521814469734,0.393619625124726,0.797872750785083,0.716217263942787,0.445534114535464,0.185722954138855,0.4373010494628,0.361437480907363,0.572109349837629,0.579061203011369,0.524048897413583,0.254559174370541,0.318637669616041,0.332052573731218,0.632756516600732,0.306214480806342,0.220078988438546,0.599951225193172,0.590373815168043,0.568429663794515,0.304597699506765,0.761890372924405,0.679183010691016,0.390390873365468,0.339555865330208,0.333768269218289,0.232419569308329,0.617335634648181,0.575115097244377,0.209995028525586,0.576168214274727,0.212455254758201,0.548184618910947,0.567333578055104,0.617711241792619,0.383085884464053,0.406572622020331,0.779012669463654,0.46050743880729,0.437577772128934,0.271686333996883,0.547916059100922,0.647221318909173,0.215231657461479,0.535577577339092,0.787357725889755,0.58287376391969,0.406437566090783,0.295056570549548,0.222869602379268,0.410492644142818,0.357239545702226,0.24205525237327,0.52876645250131,0.617732041299094,0.453417152076417,0.633910019960171,0.586627355158913,0.733413977905562,0.831079163384698,0.635522538503187,0.560359088527373,0.285392080839157,0.239099864092749,0.427271712457083,0.400273145782084,0.257559949073531,0.641484376966473,0.640473325076023,0.354992524911643,0.336942318162827,0.598068064123455,0.50641080220827,0.549976175278403,0.605310573573513,0.591261162088496,0.6303261849846,0.376975785872877,0.165683930195574,0.327656179086916,0.397344716030494,0.183257421230206,0.640955134379636,0.674445122223762,0.366061162125376,0.607717292530199,0.797537972263562,0.16875466696802,0.217215101390346,0.760927819750205,0.387163273093443,0.805700196284522,0.76287458204932,0.413793102618114,0.439936955356912,0.555248875268967,0.56474937742087,0.103448275526472,0.737891538057375,0.532894928644313,0.573062764874718,0.408119261970855,0.842645255376255,0.176265309030437,0.343371194315489,0.772658924779537,0.388481223991589,0.272347613444876,0.340332930712339,0.799925082130288,0.254363528084348,0.317044098365162,0.365379804387111,0.174440646380596,0.803193003920087,0.781523174915019,0.727109186795642,0.837880684982874,0.461343983012572,0.540158852273746,0.627289544117907,0.491263298076823,0.410965785534089,0.798609977167668,0.605047502792485,0.398142874937638,0.133899063415731,0.713862233854702,0.364382174903883,0.618770032253834,0.561622927721239,0.413793102618114,0.174621400166882,0.816039180910251,0.31240528492481,0.306992013339877,0.602931015987816,0.324061828082485,0.316029517227811,0.430695560370288,0.382010874833922,0.249520006030351,0.549716951325272,0.376379591064881,0.555632834793658,0.352682429461444,0.169840746857078,0.410817575604485,0.216813421870408,0.809459844100717,0.401821500669999,0.174992649280459,0.575894483016706,0.199010901664394,0.452240726540089,0.772984321343698,0.291554750354546,0.772890967897038,0.468672777170942,0.408877785744963,0.184676037109155,0.485552261523485,0.790680743884929,0.784871539971672,0.18832491164871,0.375194257893781,0.421895826302372,0.820718936688005,0.460370943518701,0.753215720693782,0.473052602282774,0.936148286784206,0.822937641547003,0.756515154714245,0.807491274231571,0.463479477552212,0.296483675061244,0.704274878422054,0.317630111116572,0.895764880670016,0.759881344260537,0.295017285780066,0.815105884117173,0.611833678057262,0.188582714682988,0.667446571325368,0.79052268689547,0.413793102618114,0.455318702110386,0.399877600697687,0.920983162029631,0.261823160491719,0.620689654695512,0.637711421481996,0.215589138926556,0.388448017312631,0.796008617939436,0.567599513211846,0.215618451652693,0.620689654695512,0.514389633447295,0.210646128990358,0.227568825872213,0.788647090400241,0.349478385503849,0.181061136565228,0.319460592669864,0.655355207533906,0.810278339460751,0.758908499413085,0.602023130796871,0.356157835113032,0.188861702418757,0.168935092928759,0.446877454497737,0.78986178752022,0.707460338768978,0.723696036239803,0.216175903627813,0.85180779397656,0.73066238749834,0.613509818318775,0.614713122476557,0.382730780758644,0.372221315579695,0.637339945963901,0.611052263864365,0.508753745778235,0.419317213044797,0.509477822258582,0.46896447429337,0.221750415183371,0.454066390082302,0.358303715575769,0.415900295568537,0.585024780998961,0.361118497430457,0.698575381327956,0.517821347124708,0.441963529858704,0.821107066768321,0.555843304941285,0.556258092360811,0.540926473206772,0.788628838712935,0.398573023032931,0.533445440962394,0.49518534861988,0.451168597676948,0.167726385796188,0.776648470504813,0.289919844400063,0.21654362964122,0.236718982911407,0.597239835418053,0.444514602697002,0.17844161887508,0.682046187792016,0.577009362380029,0.305108553129349,0.169487528148561,0.65992559968487,0.305262492834835,0.223806590283109,0.325927750650726,0.683248292313189,0.350342065468749,0.21248139884554,0.660251437789063,0.624541171523315,0.812313120870211,0.346174472566857,0.457094617101452,0.161315617907155,0.285314777526366,0.758162896063331,0.606676758878563,0.264905431601131,0.770067293774399,0.386498049494343,0.178599132903478,0.357090293902057,0.590186012108052,0.528938903081174,0.420178810293022,0.345041799447538,0.56148382314619,0.0608991923843503,0.388791487308956,0.759255795748211,0.286823249363176,0.60062986812613,0.307428414707471,0.21548094010491,0.319603281812373,0.788982385246998,0.454186777867551,0.690977878813611,0.308478643799646,0.611363634617407,0.347412068301264,0.348991764335885,0.816131848996628,0.391613592991246,0.176877527336476,0.387966431340172,0.572598924508876,0.745966850403666,0.779205030323197,0.617121690574216,0.780894778418257,0.558806499567634,0.690515332334224,0.7454781198832,0.611250182391377,0.572170139962966,0.353282866536903,0.785754562668274,0.398147760562736,0.203889323821188,0.634530215695994,0.824902611481866,0.832366448251872,0.229183822571471,0.823224788041063,0.807197929785771,0.717422378312258,0.264359818226062,0.383787643195864,0.771440026370287,0.180617249506169,0.602892966710863,0.755615565558537,0.781521023559869,0.90105039863945,0.601340947348011,0.422096186105252,0.633656031995691,0.22963059654425,0.34787889392849,0.31279630909003,0.537757881533129,0.563347753149781,0.189413452278276,0.569456634688616,0.171851285567369,0.402309870582363,0.46166273803605,0.423932859463555,0.825083112227808,0.187887045310705,0.590298146885166,0.426232588455298,0.64664274984658,0.627376397398651,0.162904998113313,0.344445852557613,0.659088529934258,0.793103447410374,0.407702518867052,0.227614497093125,0.21242562342661,0.79670989210411,0.401708031028237,0.192764153091949,0.453364936638032,0.688728682080962,0.41407570155717,0.430142633412166,0.518179355159569,0.754420233708266,0.418803102680299,0.685524474210594,0.807938382176625,0.375089411088349,0.736610666277456,0.85974355610995,0.768763108475845,0.553121278251634,0.620160569874719,0.264406948270655,0.728724380190228,0.45772079770241,0.66931089164625,0.659580092047881,0.443281646718533,0.26473664652066,0.697123194064128,0.630397078283501,0.767599707858264,0.542819187317807,0.209395971390788,0.611315514949444,0.238254377421229,0.645629944089456,0.786974434309615,0.426025410905504,0.626032868936689,0.321850163277099,0.212763367744874,0.23872583153539,0.702947766848791,0.389672644473308,0.608791559430577,0.761478892445079,0.754747653570722,0.63829385273931,0.783977696983123,0.289928531777047,0.418216593068295,0.37609318627612,0.567600223159045,0.245488121635735,0.3820672434122,0.803759954640418,0.825084534171116,0.766209380250619,0.417014711878276,0.422088807981544,0.593061562574526,0.818115346197146,0.623735991002746,0.604801252535359,0.383647278541371,0.80382164013928,0.793903882656157,0.731213559565333,0.827586206772911,0.827586206772911,0.209966797623752,0.432220451144707,0.376451637899924,0.56487181104242,0.656380500370991,0.172413792202635,0.819575721928455,0.544902481785885,0.0645879325592778,0.26858140092211,0.265417224648797,0.18419868930634,0.27940282386672,0.741038493244945,0.581614661804973,0.777990556534371,0.38306703756849,0.694642965350899,0.200151236681408,0.341674860000308,0.678004945002501,0.831761970726552,0.669434535148958,0.214354776371601,0.753496694847473,0.789993755742902,0.378103439163513,0.184834095123069,0.306467906345118,0.561673996794665,0.197157096347918,0.593800828646683,0.181103910627872,0.449871579464405,0.596336536711395,0.411799657961167,0.408845978471307,0.271519736127481,0.226562018298136,0.662428217858475,0.549586249328764,0.685765508968165,0.376397293644396,0.374663706053667,0.250054062530449,0.249443835764605,0.637011475010786,0.770193299669952,0.577649004317493,0.314549661487853,0.229348740334947,0.411109297313829,0.597073992571862,0.448275861980651,0.790353596527459,0.501938399162086,0.40937408186437,0.385173394563769,0.810756401308585,0.195810803906816,0.334641292211266,0.185028538699288,0.864396740602699,0.254259246777985,0.568473121168533,0.440766875437244,0.307927014825798,0.389471771418556,0.717653227939879,0.456096031801865,0.800350044435216,0.433214264533682,0.313570002991306,0.793103447410374,0.715055234045773,0.591204803754766,0.62690691023777,0.198736292448581,0.327743983061746,0.456104004109375,0.384311216449655,0.17464813126684,0.695967244306549,0.4373725574346,0.304914638171824,0.422276639726271,0.388835057373005,0.441772855251816,0.253264018616885,0.348468627499853,0.410536384266369,0.82658141430149,0.373618797979894,0.92471284454196,0.326286410238861,0.533356763127592,0.218557893269284,0.218232603248425,0.80600533015654,0.304175218431442,0.415885645864425,0.574644815106545,0.418439740844481,0.654791305591158,0.059403021176721,0.582656715747581,0.741802569564248,0.43116799181436,0.442193824231805,0.563932108333271,0.534469319027354,0.268978018610718,0.208281272331515,0.718240265146122,0.434111263867571,0.427299947456736,0.815141873215457,0.356084052851502,0.823581416135264,0.212876323110309,0.448013506269095,0.354407182153694,0.802301752802266,0.2146103583878,0.815500107654836,0.555164359794151,0.382352628868402,0.776832653141425,0.303778243208098,0.555543920309789,0.543969825277077,0.204819414070639,0.279943048609368,0.757945798717389,0.67542916026472,0.355253892024284,0.611860155092422,0.241895139302961,0.729888297133044,0.724137930734212,0.177381823423674,0.670722218529063,0.324387651844311,0.44525285353442,0.562682309292892,0.459015755736284,0.353959905173592,0.563154121966245,0.211700851341431,0.691117201597539,0.370704510827274,0.618178124789314,0.735717792423179,0.263477212482576,0.314838799522108,0.547892682066087,0.463640645811,0.340917317653929,0.442028599131879,0.694178795110601,0.511024974436523,0.788793102874228,0.758620689072293,0.377216477438078,0.676968997835153,0.816385209994749,0.197212542916846,0.721322820029522,0.348834855760294,0.774762120307202,0.179145082299733,0.244189907884402,0.354358650654888,0.451169863903122,0.818116998642792,0.275862068241334,0.63646734197295,0.793103447410374,0.719824544591666,0.293103447410374,0.796807992874466,0.371800800433197,0.416585701952303,0.451505181287886,0.547207772542916,0.213389247156111,0.0591901579026041,0.736244847798948,0.785689768973449,0.1935749045979,0.196788388906781,0.405673870868677,0.615237395432999,0.444524948666361,0.58761143725143,0.821246598541035,0.578274748500692,0.404139381976928,0.555563712777164,0.299577105557152,0.411891285201433,0.238418059692176,0.230189800337134,0.275432777614736,0.57552570386373,0.302084135033269,0.631245437526373,0.737896262843065,0.573556767239754,0.394014339376254,0.535658656792397,0.75816575531677,0.778505532563204,0.60403675311621,0.431269050185819,0.586849012353317,0.819308928278563,0.531920257193893,0.397420653744993,0.206896551565171,0.224986141431132,0.596715179315503,0.170341807715913,0.537392474885464,0.427106461745786,0.202467800539423,0.772226858904797,0.78482418557147,0.565546266004021,0.78033988758022,0.571363049858588,0.568875009677256,0.471690055841291,0.551724136994895,0.793103447410374,0.421602731823551,0.285401252783277,0.414010678384463,0.431722829380746,0.797820833463055,0.296698391574154,0.245520166582912,0.433177155706265,0.777008796880961,0.827586206772911,0.25168606620439,0.229708184655484,0.524166995542279,0.682606829919486,0.228363609200682,0.655172413033594,0.434625894655125,0.809546561128969,0.250783462078109,0.735227199443828,0.327532205709752,0.647208836951488,0.234322837353053,0.768365779815582,0.30551147326409,0.238776561514266,0.636595163202468,0.430917242151608,0.391077839993944,0.458728406400167,0.730704918765188,0.25540675297883,0.194272869773463,0.720245232871031,0.581393905106367,0.397286799500964,0.551724136994895,0.604572037937652,0.548228213561911,0.610984791220152,0.762976320658788,0.668664755689599,0.77162975028309,0.392181206533854,0.761950718436344,0.41733493699444,0.445659407410454,0.172623917108983,0.244355286652553,0.783654804186574,0.401930841758783,0.27718204551114,0.543281278939248,0.624072431190007,0.806400690839068,0.182709295891886,0.234357054144477,0.598020584739764,0.434806419987983,0.239099864092749,0.78058877580854,0.357490290242704,0.128984878565171,0.215071071093037,0.16965353798089,0.548669587633265,0.806566387188217,0.217019899717551,0.354856553119474,0.180823842092253,0.224898727773594,0.424828087515038,0.599562229448522,0.553578034512306,0.737921099726037,0.793103447410374,0.212003267334777,0.719722029445434,0.738280130166821,0.7606986799377,0.836706638230669,0.199401269154066,0.823422358253433,0.576021303353851,0.646528449371949,0.444175325794309,0.15240206076056,0.464789455118393,0.76868588916835,0.580454793507657,0.477141138005202,0.527714072053986,0.820870779334447,0.598811850090336,0.758620689072293,0.398765174903688,0.296355784168798,0.16740284451973,0.489742431360988,0.708299657197948,0.698865288727791,0.174378487583602,0.61126544471948,0.184634005776266,0.791813066640695,0.572451007573354,0.356094109924598,0.413793102618114,0.313321888226384,0.258193963680597,0.637490810255977,0.807822811378001,0.270483999997828,0.59491295325096,0.608340040183011,0.614654768504812,0.320223679365799,0.245499355807434,0.617401532705316,0.218504650302701,0.793103447410374,0.339504190803975,0.348425598347956,0.407774490916892,0.639972463985879,0.609137514754327,0.67653556636212,0.768030381498887,0.475582380802913,0.376564986656015,0.172413792202635,0.755143554140947,0.747106037006812,0.261466766997675,0.713497520762959,0.612442107929329,0.755631623888045,0.184813912338404,0.606555962335836,0.295098211565146,0.737063331889979,0.238539409440513,0.83557626706136,0.617346767398852,0.481613068777708,0.512601474172065,0.224661042983328,0.618140304990244,0.536954147542784,0.602293278511887,0.233404291685116,0.680339008597973,0.773827455866921,0.827586206772911,0.30304223080449,0.280983489035613,0.440374053353792,0.590779289268683,0.695613977448655,0.456249200092861,0.172413792202635,0.678190543435692,0.444514602697002,0.565672773882442,0.793103447410374,0.305546481959099,0.413793101593659,0.738364728622478,0.390128917191298,0.721305770027736,0.442203188773434,0.569110641460038,0.719070412655427,0.81391194245211,0.760664955909052,0.455941527621766,0.458262106318271,0.75821434930732,0.167855787759512,0.8329368534339,0.356412953051192,0.774750021495624,0.610606146567134,0.228456460664474,0.686174082044674,0.184826966966341,0.338256722398341,0.0925594864809508,0.336312527383037,0.504919670293964,0.655172413033594,0.280260690050442,0.478360817049035,0.433760674934611,0.44204089361433,0.297377900171446,0.555248875268967,0.212616869679295,0.756038964545391,0.564915320663634,0.702199515283294,0.626397554368151,0.315024339561373,0.399102591396405,0.417586597397539,0.690567056034288,0.616252316689354,0.368915548379454,0.358571755987193,0.797739655662086,0.717910746175713,0.173155601996142,0.28100673494023,0.178710193027472,0.640020153382812,0.570045655239416,0.772676461397369,0.746525078915549,0.325816359627821,0.542394036513189,0.774473732173884,0.623855052118986,0.324438273230976,0.73498427866491,0.572007443217568,0.712864555197642,0.802629437998523,0.761902042489408,0.348495008236258,0.514389633447295,0.766893827744661,0.68112088891782,0.319582845987364,0.754527570963397,0.366027689088162,0.163911712462,0.531326306966437,0.651870695503308,0.195990426694965,0.703421905034615,0.609323668442037,0.538675063651684,0.547563750108298,0.581975502457447,0.388215198682822,0.850266529340545,0.439925500927424,0.660934000286212,0.572316832674962,0.651635518578473,0.585927460934899,0.35532303350542,0.720253019752217,0.402945644178377,0.209548703264025,0.801447842038654,0.220568741364934,0.612876280083206,0.230585435573557,0.601539769444186,0.325597898732496,0.548991701844141,0.734075418192964,0.36642884716059,0.610630578790447,0.516437003357743,0.371424222105578,0.431188579258685,0.599188458127145,0.827251632117901,0.584013226101187,0.736113879444184,0.265958420574626,0.810000996999444,0.643601860565694,0.438287431456416,0.645571305319268,0.428345615675995,0.666222642842888,0.354353461791159,0.427992578295984,0.796996712821533,0.631849731674278,0.701933850582627,0.650845018495661,0.798157348435519,0.388945646247776,0.556223023222967,0.312737806572335,0.797536692719475,0.427246703465699,0.223474189521255,0.217128320845895,0.649399355984665,0.322690617826479,0.287569671252342,0.382596830215861,0.409100944790152,0.781343348260357,0.213493455726182,0.812954210362355,0.418521452386418,0.727556579539139,0.263059554540608,0.773037137112615,0.745350335534057,0.633792672756866,0.631274183728988,0.795161563852021,0.210195766352299,0.755284652305101,0.8116034236379,0.620298047615493,0.556514194800066,0.603073724594967,0.172413792202635,0.83867250866133,0.55029659606544,0.35823208057157,0.271445997917509,0.262608507566721,0.737059592629838,0.416602693560163,0.807166684937819,0.210469464827766,0.710324531104718,0.202173628334118,0.326059063222314,0.756038665404579,0.572466360053482,0.48762097390147,0.279792633028508,0.359771694810848,0.548459336718972,0.28765567116221,0.186719742544666,0.5672335912634,0.448275861980651,0.644120282860585,0.534039309233464,0.288889536856571,0.375458673784005,0.327021378722993,0.67733316079465,0.801152130077735,0.417955659300048,0.272811482495453,0.429360957983286,0.226022769860945,0.16965353798089,0.300393081782752,0.671101565958095,0.255367655684583,0.388083299098614,0.221303671944238,0.19822286846882,0.381777816481681,0.610955482591834,0.803679847394749,0.693403794004958,0.279726622281341,0.422148992654075,0.454364259545099,0.333716878466044,0.410556213614118,0.787622347695401,0.800612157350976,0.843219373182598,0.192852211131577,0.0991095699827276,0.313761814743059,0.78331234122935,0.872075736450102,0.254132779877757,0.559885793467877,0.582611464553151,0.366357662916517,0.335095461723484,0.836976943711729,0.795374490642338,0.67532424174745,0.45272540534169,0.608290029371427,0.602790528398743,0.81610250861021,0.793103447410374,0.486902522702611,0.447820485660639,0.176567023272223,0.558627439205188,0.616874355419422,0.634034785240921,0.426377016097658,0.445534114535464,0.797392443332255,0.799355748528015,0.253144378683664,0.461828822653581,0.483939054546821,0.358132541466628,0.744799206494167,0.398582008526271,0.641748319558565,0.654729328122669,0.712131548544515,0.220092921024275,0.684603506731432,0.409366791843778,0.640735967634931,0.686030975949048,0.76749073557322,0.590093707703141,0.262863027223258,0.44444682066743,0.68670284108883,0.309922415167021,0.210031738840073,0.738558746025487,0.382010874833922,0.801244215249311,0.551724136994895,0.567694701457112,0.334213207368006,0.398292946301674,0.697455703418195,0.555543920309789,0.20944841323369,0.328886585197306,0.742913014062599,0.59626324926155,0.206146828882533,0.411476913710569,0.827586206772911,0.764774477588734,0.507899237757455,0.218250909231837,0.421657739925811,0.265389024480608,0.698882721875685,0.656543711392715,0.626165232598936,0.32012307687674,0.55498821298125,0.6165000657239,0.635713443612413,0.673864890470975,0.640729367072442,0.54406122713728,0.588609075954751,0.684997089984824,0.446845019233269,0.638159575395435,0.450978679117727,0.68965517239613,0.323801944380442,0.432878008748291,0.702471332859687,0.223727244207382,0.671952259933532,0.720834686766225,0.318484933644985,0.227493147344788,0.636906862805511,0.689163722972538,0.62413275621285,0.175475879502926,0.478945846323805,0.272575687824353,0.641246983121379,0.797407755858645,0.810107399951767,0.711700091195945,0.362595053401399,0.678375962589286,0.375823218865156,0.295076537174244,0.754357441798185,0.551724136994895,0.444367164181887,0.47578202348741,0.237250059272396,0.783948953853873,0.143052773264286,0.185358068938701,0.401648721240134,0.267000331093558,0.609785136170485,0.709835711456682,0.220365042863754,0.197861546322574,0.393956999614795,0.569599841180816,0.255815452063284,0.366637599297462,0.795433571977013,0.407357288857323,0.765584998592348,0.301753336518773,0.253989736273875,0.336860773607028,0.739980116663482,0.714639507201165,0.526788505797077,0.379310344280033,0.533834224644894,0.624735718569472,0.533349297925224,0.29739008503723,0.276857985860536,0.595524374531139,0.624419587174821,0.433052587120843,0.516836823492159,0.397178171432743,0.581553199637265,0.222781216514093,0.394021505437811,0.500762890512834,0.555937541468011,0.498638384275733,0.251355666202824,0.364065402200506,0.456023531133331,0.771745314934985,0.783536019673139,0.209310589227183,0.270127452835559,0.79310344638592,0.615251104687574,0.258319786198735,0.405980405170452,0.360440544980057,0.592477725765181,0.434669132795808,0.422643958006654,0.801747766557846,0.674555141501646,0.551724136994895,0.441358237891792,0.700395077420767,0.403379729253594,0.663439049491136,0.827586206772911,0.221705444689566,0.241379309903252,0.637398582685179,0.288882143366041,0.221478887527696,0.832764187718522,0.514117724694421,0.375549333938909,0.52077934264278,0.302466383718389,0.581671826384656,0.354979733568597,0.595454960545017,0.4253830685051,0.436714429209674,0.808853287956541,0.20051970337566,0.826668524720397,0.397763949583996,0.206896551565171,0.76461608048027,0.667169925493347,0.188434045797618,0.63401914591344,0.773567758615658,0.829471778384849,0.393816931027749,0.402640063644052,0.153276926747781,0.581282294850128,0.388998244832268,0.44426103168564,0.41733493699444,0.591073184871183,0.45454574376768,0.232342709584481,0.398460857522172,0.371921333691032,0.569376133027837,0.180842088657284,0.781050917628269,0.316526202640055,0.80922044847088,0.356735991320327,0.415992888869711,0.760060966024232,0.698844821144682,0.175104541261778,0.803771191885482,0.657345509163426,0.148538802655916,0.238415172778457,0.388643641060818,0.253985093444572,0.559650528439926,0.450162310525926,0.802693980701914,0.539101771627648,0.355468053282675,0.486058304306174,0.591199123152717,0.815957173300867,0.171861145945137,0.554888935112291,0.348843447862979,0.766194629125478,0.434536634929978,0.613992747351521,0.785491870935533,0.370163470618579,0.598858343948478,0.349264384060413,0.211706706100802,0.71045496264515,0.435906088245945,0.200121278548726,0.764014390496551,0.297244067440968,0.59483300889361,0.834769005873025,0.206448713183821,0.405371901537638,0.831079163384698,0.827586206772911,0.467990076372391,0.644707292406547,0.703739007612447,0.586102072090006,0.82345026337863,0.460170455658967,0.469117384421748,0.410319200866222,0.595773528093261,0.164281822381804,0.350918473956099,0.185026940549749,0.79615713520549,0.243831560754992,0.184870146713099,0.795409714472862,0.766944002469018,0.221746795784446,0.693928168382429,0.207257894200513,0.779663151157706,0.37803627385575,0.579022856642513,0.555792232794494,0.202391968343772,0.475704070670255,0.773686164080804,0.483899344628583,0.592937459091598,0.343883438123282,0.451151428838402,0.407567052131116,0.590259980820362,0.507570728899511,0.616622249378471,0.698245234366735,0.51675907761488,0.77239897039011,0.589435498546283,0.772904017402701,0.719049311959231,0.189228894691196,0.752642559728252,0.180197715787401,0.597706451032037,0.245106390300306,0.616852705615435,0.500793821877608,0.411974498594156,0.453447810936205,0.80160619304665,0.305533219366831,0.445217305976169,0.211023347602248,0.213357461396006,0.61774353978014,0.701671410865776,0.591376985927464,0.23115314541492,0.244013326702652,0.684997089984824,0.778839032565094,0.827586206772911,0.494160677626879,0.391682214049327,0.495466936422016,0.22102464425473,0.590839642976261,0.67596618256156,0.752389477381845,0.711418724676053,0.172413792202635,0.18627126285459,0.544581627654453,0.348966698999486,0.826386053838195,0.332826419251809,0.226282692492272,0.239155570873204,0.384569331942656,0.386630639561108,0.586206896357431,0.81132572876413,0.690638022069482,0.618817426607774,0.440689072190494,0.586206896357431,0.171580149253439,0.506453797553157,0.797362336653622,0.40836336292174,0.68132265222382,0.818191926244825,0.753889547664569,0.520616119327597,0.70073788357036,0.668902573658994,0.410940355491769,0.655172413033594,0.754405073825647,0.461314247186588,0.439960111109503,0.437649421475501,0.753459999899808,0.777399433802254,0.473372663486165,0.317179083607326,0.515355813191604,0.378192968320281,0.707918084653018,0.615928981328317,0.585289610768938,0.720182230947709,0.749846132006353,0.168358935432843,0.399089856398376,0.38684951536064,0.597766182895532,0.768456395918929,0.220845106496331,0.302262951575465,0.413793102618114,0.383464694054299,0.217805710870592,0.452545200663195,0.671359019653275,0.271773556081367,0.311298154537844,0.349916778411639,0.244695181301511,0.19955113665159,0.626141912933571,0.346006322648382,0.766847199682935,0.785799126453511,0.71261524899175,0.769688410423406,0.582402657095718,0.536187769273471,0.609646135065375,0.199166761198236,0.703549795927061,0.948546517825263,0.570137016121426,0.39536904771381,0.420333789820162,0.779770388016263,0.650174226984544,0.289223749879025,0.371037419718725,0.807201237750427,0.234730718922551,0.660943411952763,0.375767186308063,0.396966410472027,0.215077777174374,0.613197716104982,0.93884875484635,0.551724136994895,0.723428807196607,0.267448699118056,0.362802495260539,0.361142545483208,0.578292443909023,0.812095286941245,0.550120787322634,0.799787550093408,0.708731674923312,0.0994060308201295,0.544612368470628,0.435478212391472,0.739106871363806,0.431198243965579,0.217037443506566,0.355075276275236,0.604645159425815,0.631559514889083,0.547579063659142,0.40036443802562,0.335301686530282,0.438421322580819,0.275862068241334,0.296509766901387,0.419467911375191,0.785350139658293,0.400369719090285,0.525157609558811,0.680023911902703,0.800106288725609,0.161318167775234,0.789883407615017,0.249868713039783,0.231891551969472,0.726094753179787,0.39098338116052,0.294947151602197,0.338369616296487,0.413372427656662,0.194299558870773,0.617207966062434,0.690059753172155,0.551240477525853,0.668014145938693,0.223723981318738,0.246040741257407,0.353084007560354,0.188492585195687,0.761395126871201,0.797486938021599,0.211061893739795,0.401168034739018,0.851739002858977,0.324464431660682,0.607335125801466,0.640735030258759,0.478339961197544,0.177358556005506,0.839051760816064,0.616614674559436,0.353539379782546,0.403176595227026,0.263051447005059,0.413808013558209,0.66067791321378,0.309753953814277,0.49463783795446,0.688659492450449,0.755317211528604,0.567593409509951,0.288068699592788,0.559346967106077,0.367548444138419,0.221383461608909,0.221935602810174,0.185498927380423,0.711090607159856,0.433222700919232,0.18785593978861,0.668872126861356,0.327305560444766,0.270552457143136,0.627832308484085,0.793103447410374,0.375510231522387,0.684590164231686,0.30378359803351,0.615504929763735,0.412179176474157,0.532134252490601,0.616874355419422,0.832400674263389,0.688880421257467,0.204119654050208,0.534815938197836,0.125161124463343,0.0582499009633902,0.46567260177403,0.56005548826424,0.785473886630939,0.258307598259586,0.751290450432608,0.563215520617753,0.36739526252951,0.835381737430936,0.801603989444304,0.238431698259368,0.355294464533492,0.67272001507014,0.401151558431938,0.455308130760964,0.608686793557077,0.791160777808317,0.631598942057787,0.314386254795255,0.39821029021238,0.90086823622777,0.719166618184342,0.771680698470847,0.167682715335565,0.492972242406544,0.694086623884818,0.348956555872184,0.624149175150459,0.489431706014491,0.351611848549556,0.352372767499064,0.559959693541713,0.302262951575465,0.179927667444505,0.389054079669578,0.197770910754587,0.810012514945131,0.313680406439752,0.350886764005652,0.837548323150304,0.429340243506562,0.649236588551883,0.246250605952228,0.649911298602737,0.2579111229702,0.421901149369684,0.588927103615298,0.71321144072638,0.719788822876093,0.306596944626977,0.721069662897913,0.538729090326213,0.439986055428149,0.658411194205667,0.416464238489479,0.203398698059282,0.410729198959404,0.416679803250991,0.59680897737556,0.78673116214269,0.604491557790424,0.23719778646454,0.3239112270753,0.321384225852214,0.661728478327141,0.728590597658037,0.761702175449303,0.193322380579377,0.214340703435559,0.807772900962991,0.427655388207785,0.779722903510298,0.411080533695482,0.653202110811325,0.549933497514514,0.181391897174895,0.280594074288936,0.473261964994727,0.653714191730799,0.606454717513597,0.689655171371675,0.668545609543608,0.233447008378289,0.382536880143487,0.708657598643245,0.187798739353007,0.565201796139778,0.463628340059545,0.659463202775887,0.580623507900744,0.572886484882689,0.24946669544975,0.490256421864272,0.693339262570571,0.504499449166003,0.581751283101506,0.628930702320236,0.824922891589741,0.202437123239448,0.785518989279418,0.238605136413691,0.551990897862232,0.57933152795707,0.446078087758346,0.632827846317392,0.209623721018083,0.348861296939534,0.540439039646125,0.738972921845478,0.227050799016888,0.605415787133776,0.571139044613707,0.366562841754931,0.717571844223488,0.370082732308733,0.203741895550622,0.255434087482685,0.645888793092117,0.329895448852233,0.846805139255529,0.591287516189076,0.654330034558037,0.658467749234725,0.799660486960467,0.359017896846885,0.593494260537898,0.761580356500652,0.378103439163513,0.547207772542916,0.233713321558864,0.158559941974059,0.498401389968024,0.266011549826722,0.253053903955085,0.572728286518462,0.269440579432473,0.70386946476425,0.360737217879609,0.571888324731857,0.253470428850009,0.590411368608858,0.816454992784611,0.410575195737719,0.306049081549094,0.416365121459929,0.832788870933269,0.182688806795225,0.715509506003474,0.34904882544563,0.819410752942237,0.609149072653753,0.650987799839105,0.302626192525612,0.447085392193017,0.393225465103263,0.653707363739337,0.554403509483117,0.392279289888478,0.560291165123034,0.213032678480291,0.177317056364675,0.164176983772011,0.549488701764018,0.383263024998142,0.59577623470293,0.340931846472371,0.732784188150227,0.290648859777161,0.56444609371428,0.272441629713813,0.557634412597524,0.307204998524119,0.617747565887633,0.392597970126754,0.164336474998236,0.72601813522728,0.41222293606235,0.428523046130802,0.605634028795766,0.5924046319373,0.523248077997237,0.698783490107193,0.661513497504884,0.34811290604818,0.206896551565171,0.614071950003572,0.200859242538791,0.395861972352361,0.280669353278977,0.255026953765216,0.729930331539298,0.839097586729655,0.198061668451933,0.631121957936438,0.389923928901482,0.320252060862493,0.232625236811699,0.263937538968341,0.277103735159248,0.82297091788889,0.375844628946711,0.220936280927562,0.210656786393986,0.674062540590821,0.786486904450214,0.659474897952261,0.405893821321329,0.636912178701639,0.350101192575042,0.831357349996788,0.408216582106628,0.382451773558233,0.221277816753162,0.779352464740493,0.760072231954031,0.236946435446801,0.400993972691702,0.579142365445516,0.354078180532975,0.582052086602945,0.442149760380527,0.565326068657754,0.762198036175406,0.362627453834403,0.521474560230481,0.685841773483755,0.164237772872893,0.237321191269272,0.591086646207689,0.684609870644854,0.547490595837581,0.809507296848583,0.446630145978769,0.346338306457119,0.665244002654444,0.354903045953161,0.628020563328658,0.624686600058048,0.389132783412126,0.792017418744059,0.432171008905555,0.700217960449139,0.610641711541118,0.210975338575407,0.369768914133095,0.215455365614458,0.364010438149805,0.738456514653244,0.807051800523933,0.748475537447702,0.742335803427115,0.203508915056949,0.561120340424702,0.208827942943972,0.413793102618114,0.938794186235214,0.196174835736095,0.640944847828657,0.630719813314006,0.819236308773268,0.382265056420365,0.692394178400183,0.464263019537798,0.406845299114329,0.260667149266849,0.551724136994895,0.60063888537757,0.751739771200102,0.394630518224678,0.169553295075477,0.168512106797204,0.662479301274269,0.581136360234708,0.767389754035873,0.79615713520549,0.761425013292045,0.203121467263551,0.73238740962221,0.82343556962296,0.210469464827766,0.301706085588509,0.578703434698939,0.582038913138247,0.56345105405287,0.280474734520982,0.31814188982187,0.470940149781238,0.747387845066737,0.417464363544681,0.792201597282851,0.493451152502979,0.404780468395707,0.394599411678127,0.764536667814978,0.470104656666615,0.197475522521395,0.334326091021603,0.370456374548801,0.772507645583253,0.389378374944793,0.737863235443703,0.656736411346808,0.38229370529977,0.290821766239425,0.78900918908325,0.637475503876317,0.615805952498509,0.40585506721945,0.25409474904099,0.570466856770652,0.624264530813568,0.403324541871738,0.817004792082128,0.49799919617176,0.382407994505398,0.724137930734212,0.64808360356659,0.598363391913812,0.144947529113803,0.710243055187392,0.193707335874166,0.577157724953403,0.595844501299639,0.82518590090348,0.18549336459068,0.61910947716712,0.310342287980339,0.230644906201069,0.753122240214723,0.715977403210455,0.816917916263377,0.443129091051527,0.813441735099481,0.459185658496978,0.169553295075477,0.40554154101344,0.234650204968313,0.747673137297549,0.223073955507087,0.793103447410374,0.665770922802175,0.45729977340186,0.643971081258702,0.436787524062011,0.58575667509414,0.804269620919851,0.548482903277951,0.609765187985976,0.379310344280033,0.631686894578568,0.435341012277958,0.806841906119922,0.386299498878698,0.807594165352727,0.720275082411501,0.30630388907744,0.603084612500933,0.457395691058967,0.749207230749733,0.193433610762873,0.77766611373766,0.650217677187377,0.215367352650843,0.816261394383629,0.788244755229209,0.548860989603084,0.788056885579654,0.304672425291196,0.788977041690589,0.535759418071955,0.317532373003226,0.821102693370639,0.707908676059832,0.611861926374828,0.236712390544557,0.586206895332976,0.746109859176082,0.394208076078639,0.589371959808629,0.855975486250572,0.406060015555527,0.238415172778457,0.646364209797573,0.246290716432306,0.238776561514266,0.719741242071373,0.40466598864148,0.617104402898908,0.555724095279094,0.719475932856534,0.364769948473917,0.327280124255717,0.651787288488622,0.790461658072157,0.3136855994013,0.202131120629731,0.216572060311746,0.452280733550229,0.643150188674359,0.313386412489588,0.36418524190242,0.635846169931671,0.810085857715538,0.227611036484699,0.617339192579816,0.451811378544021,0.464226609388577,0.555612765723479,0.480808229400598,0.570765583702145,0.437306585616718,0.524606598331227,0.745644923668024,0.800277279457336,0.149708963650939,0.788138043915982,0.617335634648181,0.713813889831131,0.734217764143104,0.4321063996126,0.214024825081252,0.723496478585058,0.383427145735759,0.818267853714775,0.658458632611165,0.390368310772226,0.602111375287279,0.608713757208282,0.77369594762446,0.658564067453671,0.220656022867799,0.29062027543841,0.532570973488103,0.603047983118378,0.21601415552759,0.413259414921756,0.506032071501046,0.784111774558306,0.616614674559436,0.472699160243104,0.807632598800243,0.741644822984603,0.415992888869711,0.424962359736639,0.306588600442362,0.224137930734212,0.169878502115494,0.303445440859949,0.437318145565054,0.563005224627448,0.202153409693533,0.6714644268355,0.204791779401518,0.558942103580518,0.783627405142065,0.625002681254412,0.543824310688138,0.793606951593987,0.441271044492043,0.723644226485532,0.26761258832888,0.43168515915208,0.179950823197095,0.417788622963977,0.206896551565171,0.702788728431602,0.737320367607586,0.547558439334443,0.730613781214332,0.639783943807505,0.221210977222036,0.325344141270355,0.244188893674117,0.233105620074184,0.247908209727992,0.735336474967503,0.426136507909872,0.303219561887178,0.348804573899884,0.539249049303354,0.0596853916623494,0.576252049511533,0.404057930646518,0.730589306988371,0.232979890781436,0.371162438039819,0.269919554069563,0.620689654695512,0.356747170171465,0.691633249206127,0.612618992349709,0.793551691475838,0.394602811843718,0.269193165394657,0.52721117332318,0.588830412494792,0.176339667035583,0.611097625699917,0.442553408902654,0.262516806565706,0.747799325546063,0.779790020668684,0.846560143955574,0.291098925323318,0.64471138612806,0.247723633700724,0.316343010651267,0.728170973787243,0.490535301007829,0.55515473811436,0.436314390866379,0.789917304776532,0.185318031194916,0.651382363495773,0.320016725147159,0.663559431129656,0.764919981933124,0.306145284004645,0.217766138229301,0.815621821084639,0.66794403429883,0.586052290756304,0.398349520795373,0.448275861980651,0.263372853317645,0.754981890046021,0.476901327471157,0.665533795315338,0.350596904755195,0.668970937578912,0.249010316188457,0.237825280416594,0.790363887176257,0.64969051834167,0.42971158584553,0.73955180234234,0.78511240466974,0.216190123060895,0.401317464794328,0.617104402898908,0.366085953932336,0.588192039856866,0.230958584026395,0.282709612448429,0.418159723531604,0.437469002685946,0.238519615948684,0.595384518006243,0.332974808461009,0.622783520513013,0.427622209189108,0.208157564288152,0.745352265606962,0.540498150689991,0.582234678261201,0.192082777937951,0.203932623429161,0.556903067610136,0.794499677926767,0.24870130987717,0.349872833397121,0.341839741907865,0.644820430124943,0.236033405443685,0.796381967185421,0.31034482555496,0.192369280049921,0.542304403886482,0.384526133755712,0.448275861980651,0.609481559469813,0.259217777204903,0.394569461741084,0.581410604744601,0.382878307376875,0.342989351314483,0.780864614370153,0.306183132488451,0.546652581539613,0.572174020597873,0.501644643909898,0.83010718010376,0.337165926943688,0.625321113574618,0.718362777650694,0.449797752126863,0.537137877370359,0.779099427470099,0.557051354373853,0.496744254368119,0.851185502206148,0.206896551565171,0.160955695166211,0.380737990728336,0.320247098403282,0.559670931482381,0.276055141096986,0.137931031815643,0.370210625250089,0.169602557010579,0.796892250186663,0.359399265525303,0.376577576181458,0.627417888843844,0.677422692000328,0.548555724600848,0.630095165297478,0.559251175456914,0.293292581237194,0.593885620724303,0.426855707985215,0.279907098440367,0.26547761318784,0.694010142184803,0.347837244717253,0.405583489365488,0.42753949060807,0.767644203005027,0.813399869728275,0.265698058452176,0.483561412835085,0.408984356707879,0.25954973130445,0.292735503188088,0.833136243078053,0.356258203001933,0.815182269518433,0.274771816772196,0.679798261383361,0.212326911056719,0.438244195364643,0.3356726580166,0.216682295749599,0.561333342000221,0.740515248841155,0.635713025634841,0.448275861980651,0.789633695725011,0.358618692409823,0.793103447410374,0.185308940182728,0.584126093363507,0.7636383141518,0.353484365533557,0.375453429599715,0.220859662975054,0.596778938310946,0.607982909081488,0.539232671343938,0.651008564514116,0.420869452665438,0.359569317856403,0.808159313032552,0.548168252220534,0.358565151326885,0.399191430070616,0.49342540692857,0.374823880591266,0.687122667801681,0.620748791350749,0.15038071610069,0.348219716733526,0.348600176720508,0.716339971093778,0.414396345675361,0.552596426478211,0.599412108910654,0.256255994277313,0.786922302876527,0.411004841850144,0.566766218577294,0.569424226059973,0.80581031186116,0.463189497416084,0.842372418467302,0.5386698737635,0.434181972764602,0.321044874164318,0.486646959126598,0.664316303482574,0.443247486272126,0.264690974275294,0.364473257134178,0.28452056481924,0.626106854040275,0.370526519995673,0.745813373751765,0.819750265469542,0.636661492555087,0.710284558926043,0.512726980133659,0.308158268088622,0.305658383160511,0.681633739202874,0.686824739944958,0.420772114089478,0.281924632128258,0.823600406454504,0.196625805875869,0.504366023144094,0.348132001886267,0.26633439140053,0.833823681980207,0.371994621140877,0.296321042856501,0.68817158559167,0.756754987786296,0.382949680120637,0.82987945301447,0.182638111647813,0.694793591969454,0.654059386909063,0.679988047787909,0.769847961068012,0.834179296888578,0.418846895051046,0.707972319291879,0.790515603814754,0.81219820777159,0.597070764514684,0.682622682333572,0.692215670218892,0.681254017847827,0.728137876724953,0.743759980046898,0.649581329896656,0.215529756402159,0.753394899892989,0.365056528444455,0.224805258563538,0.80202488773691,0.81928495193765,0.24021257878301,0.770577995777669,0.798831927356154,0.693096425796949,0.402741265439187,0.711899840423744,0.705525734699821,0.373494224272197,0.324224728694395,0.585066278590882,0.588561273867787,0.76814120190045,0.380714957910324,0.693709269020436,0.696734079482718,0.126744819969632,0.291439549384117,0.392846713906943,0.70831633532263,0.227303827067189,0.627713781108813,0.366298979070316,0.267726536391048,0.652721964197906,0.781737981579954,0.819995206473391,0.255415805061735,0.221698023538755,0.331517436431271,0.748502111806071,0.291178648398424,0.623823366755455,0.626865706664385,0.679047373895578,0.597491184386882,0.270756837931235,0.823286560618586,0.183823339300066,0.785113769243577,0.714709319700216,0.786729153186762,0.666615222130544,0.70382574820316,0.60661244667751,0.171778037046807,0.268418298492598,0.759686025799891,0.305719268560148,0.573146540693144,0.384136646272742,0.77482401069703,0.200284452690077,0.666733688038526,0.225208678632238,0.665290463730032,0.581825182150887,0.818577817891331,0.391040764973537,0.455514492844711,0.170752793383554,0.369741360395906,0.54579518148284,0.680077063692806,0.672166039070269,0.36545650736937,0.553233375123919,0.556720120466054,0.640571958562892,0.555697533214183,0.825429050135826,0.21498365333768,0.387286069372004,0.404744096151315,0.542757093061467,0.202821607285013,0.685038419566153,0.466297310233393,0.541045956398403,0.284219655798953,0.272236723380384,0.4515520296074,0.601309684059871,0.642945566114919,0.611014908143333,0.270618538577686,0.827590169364205,0.567348961268877,0.533457762080671,0.719973279042145,0.839403304540928,0.614702973202526,0.373718357573932,0.728867392036009,0.744027670094769,0.719413979974961,0.353274676020513,0.197618008821847,0.258297972481975,0.386987732757803,0.775505603035452,0.783448504594572,0.513575475629024,0.520621862421391,0.741465832285086,0.23015086080893,0.662337792303728,0.678613073684846,0.169647588971674,0.659400619854592,0.441419788162615,0.440155434692423,0.210320581831337,0.184166667921624,0.65915769805122,0.467393388801621,0.449970370717319,0.583546495748261,0.721968496005953,0.757329677238436,0.459747713347662,0.563068546180677,0.835353579265395,0.300971939741608,0.382333910029693,0.45971186459969,0.311014408209375,0.598859861166086,0.449251212644625,0.784281499063858,0.121225817474747,0.832076208928671,0.723716169850636,0.647331378140795,0.294135193288452,0.537779305957052,0.538504127216064,0.652671142018094,0.770661849454662,0.731990390347308,0.452870060413024,0.463343814120948,0.801167842141509,0.237210874899487,0.774835619819197,0.696314626695881,0.728963357842493,0.36250816324028,0.378935936772205,0.788000412506983,0.178656413246558,0.278486234907514,0.418867992673878,0.421524925503437,0.572439691445268,0.711982239374874,0.177758517514689,0.280637053242547,0.203140073412229,0.203691877567854,0.743887794105232,0.196663457664348,0.541445069658985,0.157818043052981,0.560001907227563,0.678644235551957,0.546555438634525,0.584469286757027,0.607152923436047,0.203411052984568,0.52434127272511,0.584870159006557,0.816548183342953,0.76925288189133,0.772836690231074,0.455182876815258,0.332782439405827,0.588257802685963,0.433727823741481,0.164785569361211,0.15682576737071,0.789288666508429,0.597086540094657,0.221650769535127,0.62426123719128,0.670552287083634,0.786452828009103,0.78917325142694,0.648176620992065,0.189654165357029,0.59858041857237,0.406987797708239,0.736626422392788,0.136425752180094,0.780375751695014,0.163684159530033,0.550393963326136,0.609390989466934,0.165025607324229,0.441582852687298,0.745789956763191,0.203388353114378,0.535870681038006,0.773399501129426,0.704323737746406,0.456717840029595,0.832180290466342,0.835587835205335,0.42148064344328,0.558846051719828,0.312767820025578,0.319106991839695,0.172334168499647,0.589709132481096,0.447825556712063,0.172784696074933,0.449430504533863,0.708330380598391,0.729593608602503,0.662507652037319,0.390863069184928,0.819348458917205,0.191066811737667,0.456413623044653,0.343534245522259,0.539364586294968,0.339199915425107,0.456199371634237,0.492479653789177,0.677084856505585,0.780821904848164,0.741205081894253,0.825896775234395,0.354097018208445,0.177177221353331,0.798813294571651,0.835357711916191,0.221620449769889,0.267527128306708,0.755174992610863,0.698764868591693,0.324441909021178,0.607214561809986,0.185918111760093,0.291411681139294,0.306303888052985,0.685116831339073,0.764827291308741,0.329784436877616,0.458090687364424,0.312789741310095,0.229866605326409,0.278314709410365,0.416003007410097,0.598212979406317,0.650743208174355,0.694268947135908,0.431550074537797,0.733065173572921,0.474179804813284,0.639334178426614,0.279058668510112,0.643469897465287,0.220872966545516,0.365495126243211,0.330722466652023,0.410182862319223,0.531300338060875,0.834601317983681,0.593577623501027,0.552612524761458,0.612744505482488,0.638933656540638,0.675347579853002,0.536883320833448,0.251683037915903,0.845086659300222,0.394694147114357,0.812414416915192,0.606771497388158,0.556409385899463,0.425881250645855,0.311925396474009,0.417063446219138,0.262429709464712,0.218165237147515,0.62379584784973,0.443381321051513,0.722129200186701,0.587645049614501,0.365225887219632,0.211581791249646,0.77799151235073,0.175514855911503,0.285597254555297,0.599867093888919,0.642404646791895,0.232881500090362,0.769983495417967,0.777544391087763,0.343913273321384,0.46366766990504,0.624033025534854,0.362802589510384,0.766426587213228,0.833993850074703,0.716152935350456,0.823313892049076,0.182112463872985,0.700844207639661,0.453299727014545,0.590626093317406,0.639681623307692,0.593044984846418,0.884199275294504,0.623798281954414,0.390059381295051,0.801533832728429,0.266802332659068,0.428828778284442,0.280358230444005,0.768950703571505,0.189476396832128,0.336241501929463,0.614395052813361,0.681266766163769,0.789472470096753,0.609122867099124,0.401244450873923,0.557326082426427,0.572787483616534,0.301170586656007,0.254548044693235,0.672319701148495,0.167912693152123,0.261654324188507,0.750794549752767,0.341542153145692,0.667682435659396,0.648167461341403,0.669133353623686,0.393271962034769,0.311541316063647,0.416157276990039,0.250263587106265,0.603148460623947,0.620748791350749,0.429273575059393,0.725430946401722,0.332382512728109,0.674581704591011,0.681560455850848,0.677161218344384,0.754213535603335,0.440390864657602,0.404998675226233,0.745717390529548,0.495912827314728,0.245005077864048,0.52112695143663,0.573527002729035,0.829332684054349,0.586154484223718,0.405010947170678,0.593016753944584,0.588791941142447,0.841815931528635,0.444240107195676,0.436673888458567,0.407065853995332,0.583841616598742,0.71893313775671,0.745632252186194,0.899936156487033,0.815989229517048,0.811874355060863,0.539626945079888,0.42986261405038,0.222755182043421,0.553221229187419,0.565037306598422,0.2958316372203,0.524420191603173,0.827753768654311,0.403015445408426,0.654560558409021,0.259615985871866,0.305998315714298,0.38392123620391,0.324150576604671,0.834216777593099,0.599711373680934,0.646604462896105,0.467844176588435,0.65487624211691,0.503268616882403,0.738459434349518,0.672325931882789,0.597755684282403,0.3616374606375,0.369428068790052,0.599690068093771,0.741520453143418,0.629905124828131,0.797042057241352,0.213252405601789,0.827219065723213,0.302859308247323,0.349393745045544,0.584838055665454,0.54347711577404,0.832787333226565,0.204132823417087,0.675669041486149,0.675513474946389,0.487000717722812,0.569760068990067,0.236414141009016,0.692483527252901,0.679091866993431,0.3647609148312,0.553011771201167,0.342004247840498,0.475543547818012,0.82821780776439,0.74601814997943,0.579664002479672,0.20680216341913,0.616476019720059,0.76370994710709,0.417978802759181,0.812295668257676,0.782948563464869,0.779946063579941,0.636728267545559,0.588432283735305,0.662220076296684,0.214650669661025,0.468958979117646,0.369449590537185,0.245005077864048,0.377022404714508,0.755558210430255,0.376048117434651,0.624355109012085,0.566676178217564,0.314481517825724,0.459198670097812,0.229071562810868,0.59002033215018,0.236640049690977,0.233857418302314,0.158816844512538,0.779839259041324,0.0506361167883837,0.669179265591483,0.392831802966848,0.63046405201821,0.233368947993376,0.542780070558917,0.777583728104442,0.193428609374378,0.221731196410704,0.194335580751612,0.540288131302491,0.376823996498086,0.630037848074024,0.415942287972143,0.640581103871186,0.197011226273152,0.763651550108242,0.794159617316126,0.449611384328093,0.753202284968647,0.833739346809443,0.415502028507648,0.695349306469177,0.698828004718598,0.1822057548279,0.664640964488165,0.452210341209742,0.548297934884483,0.240839494942538,0.636599152429587,0.215174279795191,0.541973017334913,0.410632820297622,0.533033518943036,0.197779273379389,0.840531925941382,0.599953767890068,0.463469501411048,0.449075852613036,0.472978997251931,0.583982028378157,0.663562542398984,0.659843508070189,0.201004216215577,0.777620069615189,0.743719389097504,0.627755183426435,0.392927887610093,0.437750958267367,0.666147306483376,0.779915731521245,0.786344259359263,0.358281169373804,0.609764255732078,0.326995580901388,0.343964024813812,0.135572376181905,0.586879628186002,0.568986004236141,0.549728626012549,0.289321484919006,0.784385419762121,0.273585674281778,0.551199528017267,0.253733549829324,0.45722083813252,0.698669400670258,0.780592104262293,0.500760726864227,0.297240821968057,0.210838547219372,0.593154138459968,0.532782985440253,0.650503346417568,0.647558337913415,0.640882435991319,0.743518002790881,0.753827850896705,0.507585900051134,0.300766090909733,0.593535587045863,0.184552324967973,0.674960002978295,0.59277279539292,0.574179175798017,0.585574858948193,0.336408183804162,0.38435161685045,0.310906168409536,0.234027486000236,0.199714813800263,0.253249235733644,0.340318897730037,0.210786297973978,0.735597297070173,0.20031185890577,0.152146553529563,0.122480937533528,0.550909220055593,0.57041134566107,0.493269854731178,0.512258846277612,0.27173709573386,0.262597583804836,0.436326716082475,0.256626990350547,0.623715081879604,0.813555364556197,0.401513960353578,0.374775533494331,0.181570647127527,0.220993704694317,0.448932870476444,0.784686108524619,0.450825803820813,0.538799067762493,0.566629313506772,0.198388248261426,0.72602319705861,0.661450902290131,0.154399696462229,0.444312808657356,0.5995591724753,0.878548368093137,0.205915896274071,0.59777245255911,0.420703469468936,0.774820075766016,0.711495796462051,0.685048091444232,0.607560263068937,0.81165069710617,0.447703301345653,0.774873653729329,0.39766207369758,0.708760640359261,0.350409985799724,0.29584434250914,0.857736912376934,0.450558927190079,0.697346227101373,0.248110966755181,0.555879159835986,0.78885272614551,0.418076818499786,0.569749583694851,0.528759170676357,0.645817721538076,0.58020594215971,0.38768727149599,0.787916066067215,0.826475033887173,0.725377265992926,0.403947259815361,0.196524141027149,0.250311880931549,0.188643863367516,0.296423411505691,0.607462098782381,0.331234546547043,0.168427580053385,0.274375420365832,0.678468024198402,0.594777486515024,0.702855549522541,0.357704581606858,0.168713029025787,0.428341732992178,0.271323297937702,0.800191553076908,0.218000770144165,0.579507717797074,0.40668018772889,0.235881501329952,0.557780534688179,0.339726369445889,0.788225707540499,0.397684467255775,0.563034509693305,0.289724111035209,0.431874073745566,0.77047156414061,0.406526291050507,0.892706913727063,0.900335188815682,0.811174283606163,0.666290144171836,0.788901389798989,0.505587672214571,0.481988592941303,0.682989894070653,0.329014669711715,0.764780346690473,0.784389670225223,0.1614792253929,0.796273811390878,0.791948819199529,0.753933326717404,0.446846038565828,0.327530375008965,0.21916276213635,0.355073702712612,0.245640871949159,0.193991798296563,0.453154892663616,0.514133176546668,0.373593715227762,0.72279086892753,0.813821832429452,0.124204308236208,0.0849697462608756,0.409960157107525,0.578249361485475,0.60776382429317,0.569257922209108,0.430016974806801,0.245721378732213,0.43214732863209,0.830312890634232,0.527532475141373,0.324723418964747,0.391068964117271,0.179419295051526,0.605246225516541,0.60610963604982,0.67993208182038,0.167975435888372,0.188535186125464,0.745573084797313,0.15792431794845,0.645577573958391,0.806430243287636,0.217770346689755,0.632256242523209,0.418038947477973,0.555804964719159,0.441283822517175,0.620646970784894,0.796666897783677,0.747467880600568,0.206001183163376,0.767454609197988,0.638280729472899,0.584931277981895,0.472442032324562,0.708882787133458,0.340844179774489,0.262672908895344,0.659305730750138,0.827469048069296,0.372398681493847,0.778349056307552,0.823435090178098,0.306606173940567,0.222884616789301,0.589112592431822,0.75141388699544,0.424865107214884,0.453267911545251,0.757384179260008,0.270880763159022,0.777595870967578,0.591876802073677,0.161750736657298,0.1896722295691,0.166088005915366,0.365867995019879,0.81382147796808,0.225353782414788,0.673954500559675,0.198880727262125,0.657092082600195,0.601740743919966,0.306602066901142,0.422811630529176,0.70308484505218,0.776865733812438,0.258371657420296,0.80297983330952,0.296315540509592,0.400523574790474,0.667146653977359,0.754707618900302,0.836317255242092,0.75559064057245,0.650082269869821,0.192377534082511,0.725086581031873,0.162253064766762,0.267376885858715,0.830477626044748,0.60053056259689,0.165791239790424,0.437750338472193,0.595656241332792,0.367232307621494,0.513440110314116,0.953477529346456,0.0456348256167349],"Archive1402_field4":[0,1,0,1,1,1,1,1,1,1,1,1,1,0.908761954649045,0.799854435057712,0.689288708389845,0.597923973741737,0.511486576011468,0.421259299048248,0.328047765998908,0.218677124290187,0.0986397816048029,0.875990557785067,0.773567258866015,0.688785922788214,0.605784676124151,0.515021934921147,0.417193002396065,0.322825738705213,0.234401544652535,0.134662916056252,0,0,0,0,0,0,0,0,0,0.362174441956146,0.385901450026689,0.615861785286909,0.833372952587319,0.211930366104404,0.448275861980651,0.344827585941951,0.417706930886681,0.400129679078357,0.8223784336563,0.434305559922294,0.291963432023268,0.642030837565689,0.781371887523096,0.575620662631114,0.567916245961484,0.600688436208934,0.437503689702138,0.275862068241334,0.700067461887437,0.586206896357431,0.212557185965178,0.586206896357431,0.1821208080576,0.241379309903252,0.175280204531998,0.576608599747167,0.735764537272756,0.267292848804307,0.74802264747957,0.781092425464739,0.404703521593198,0.342641527385117,0.375469703064738,0.77645632580524,0.56249653465347,0.457151736605122,0.443125788209146,0.592644756978978,0.258694594268403,0.213354938163753,0.22451761418443,0.793103447410374,0.665382384988836,0.189650414827886,0.575722298795099,0.324005265882244,0.241379309903252,0.465626231874923,0.272182970235295,0.585092839631339,0.366562051900255,0.418780869961512,0.432142454275994,0.677517313722072,0.191998626144602,0.559708747183633,0.764407670511313,0.803340657570717,0.262616515730151,0.671880925094598,0.609672156218134,0.241379309903252,0.561609773721183,0.694198350928909,0.344827585941951,0.597518569089024,0.609996688142416,0.812647874804817,0.247894951233543,0.262821932242086,0.827586206772911,0.405572737712015,0.407515317162048,0.353431191205449,0.439783083265445,0.764823078750468,0.819279743609279,0.608527373018234,0.187398486898652,0.534672646675885,0.228678881077728,0.216929574559377,0.413793102618114,0.620689654695512,0.701283676225025,0.566617807854542,0.392178064530881,0.191215634291261,0.423321832598487,0.551724136994895,0.715764679262195,0.337294210202335,0.730706473887625,0.287455860467121,0.62883762547638,0.379310344280033,0.68965517239613,0.73281647384429,0.2865559291435,0.420076980507073,0.399555168905813,0.440458466383124,0.432325450593909,0.648122935460995,0.259896192708887,0.597872812252373,0.554152663521611,0.195456459322438,0.379310344280033,0.586206896357431,0.685876817010228,0.591480709930398,0.608936078249417,0.532814862376838,0.577087822302326,0.275862068241334,0.569214347022785,0.655172413033594,0.249338115099201,0.332971644944485,0.551724136994895,0.0633575909895428,0.668098915478307,0.636880505631567,0.393138523719403,0.557465539413938,0.482758619294277,0.452835404130477,0.196381242895854,0.784852431840126,0.690945757032322,0.233348968050768,0.275862068241334,0.235634489902886,0.292813911887644,0.405149624548061,0.292268063912418,0.241379309903252,0.266948298008133,0.484702796893849,0.193298899050149,0.628967646210424,0.769496561791279,0.775757007324842,0.258345178336227,0.604289396995948,0.413793102618114,0.74536249888629,0.257026194787609,0.68965517239613,0.310344826579415,0.526054429613105,0.620689653671058,0.33020641801898,0.714526551835729,0.620689654695512,0.502616091400959,0.387296451197282,0.746606196273683,0.649659409746211,0.69542914735659,0.482758619294277,0.219292733696562,0.807012682740588,0.677038389283268,0.476643275494355,0.516350993203326,0.293485429737238,0.667467239701624,0.670253266133604,0.606550137285656,0.230034906864199,0.407737542928883,0.758620689072293,0.670656974074111,0.786587735392701,0.43510033403067,0.673152600343481,0.598812185087066,0.345955389827448,0.379310344280033,0.493790639418914,0.192850513609918,0.548138018509502,0.776469804557478,0.68965517239613,0.310344826579415,0.417711708944022,0.405241276375243,0.416742291922441,0.574971424625229,0.402985871446306,0.466270953059449,0.479528948599034,0.570941209067536,0.304680698788428,0.753186916097241,0.604153351443031,0.594023289013676,0.408265370743596,0.645405026055318,0.392461032273677,0.408850767797652,0.469102042186169,0.632605459711147,0.630316599160728,0.776269673208026,0.73948029232163,0.578897153985591,0.185439735404625,0.758620689072293,0.625109770591473,0.440687273247808,0.69230787217832,0.677277261416686,0.781878239691144,0.724137930734212,0.598253369562564,0.304849199070455,0.527319051490462,0.246755040340829,0.413793102618114,0.197008963252426,0.781374946545227,0.199314324696841,0.669992979820811,0.427735184019185,0.344827585941951,0.551724136994895,0.551724136994895,0.214617068566957,0.237694902147814,0.770877386555893,0.609049265141645,0.6415191244255,0.28019407385047,0.679969789953874,0.282719532244578,0.408184453154155,0.206896551565171,0.655172413033594,0.815108268023569,0.369399752858467,0.190716536287886,0.455735726939268,0.631063863151766,0.310344826579415,0.73032441062883,0.20027176276806,0.615136656691448,0.630991694406599,0.461032940085077,0.284664553994932,0.300605617231322,0.523771970880937,0.718526159756376,0.777811997130338,0.810973280445648,0.413793102618114,0.649495005234606,0.568646645377061,0.468744877277636,0.384198806094191,0.595325969388081,0.609896625541054,0.296863688385918,0.287429252301743,0.229067526458825,0.758620688047838,0.241379309903252,0.467567490802675,0.392930240782844,0.586206896357431,0.21447344717055,0.235830415865248,0.68965517239613,0.386661082260926,0.43891888287749,0.413793102618114,0.447513457571635,0.199247549706369,0.502094948154031,0.281330219871672,0.797576773490363,0.243886512512235,0.781607993628465,0.19421555255001,0.750143729988619,0.724137930734212,0.600529245147974,0.863127932802893,0.774637578357605,0.656484924076577,0.155573631548857,0.172413792202635,0.802618922994117,0.638351114642202,0.18842133231314,0.454801336028428,0.46191365468494,0.608530360328528,0.288931411447871,0.165285430583437,0.391804586203587,0.348972249495771,0.172125133613241,0.740873876671189,0.211831248050398,0.392208258288175,0.787046442215374,0.437783231667972,0.463292831101728,0.596717077630309,0.189815059061921,0.734293578923022,0.551724136994895,0.684620133633372,0.399353308276602,0.505676944233176,0.235941821230521,0.448275861980651,0.694357937429434,0.355897299857715,0.714984879610115,0.57048000052616,0.772306171173515,0.7184549007271,0.257534342824979,0.285108387782339,0.631227757484864,0.363764770807479,0.456702932162865,0.741826650399553,0.206896551565171,0.426555851080041,0.701344207163289,0.432805886103591,0.218390803661561,0.606768911664159,0.218635360494848,0.280179107589814,0.487899984175246,0.275862068241334,0.620689654695512,0.424209149809749,0.579438993269055,0.624985212250599,0.616457031449729,0.448275861980651,0.551724136994895,0.586206896357431,0.798021222975125,0.334641292211266,0.638814879198386,0.59442726126353,0.708712685628527,0.758620689072293,0.523449152869591,0.349148544854623,0.466604236901369,0.819078560144714,0.793103447410374,0.441281698822306,0.467948041966137,0.762549095333134,0.609916617777121,0.793103447410374,0.344827585941951,0.569987941551942,0.683707968270134,0.79747294601749,0.594383324444651,0.551724136994895,0.425084500364107,0.777031955706917,0.711205083840718,0.431825595518412,0.580513009177999,0.636605173150641,0.448275861980651,0.614009510505953,0.589883382003646,0.713208350970604,0.193287189531407,0.742082897286939,0.390187443271454,0.224344182176836,0.298746823844264,0.329471962786719,0.789947460628997,0.456002427363771,0.37062206884904,0.379310344280033,0.777011704283777,0.482758619294277,0.698504817903512,0.413793102618114,0.241379309903252,0.409498881976585,0.453572051696081,0.55172413597044,0.283460216162224,0.401597236238045,0.672131507771212,0.812069120315899,0.430780773498845,0.176654211549698,0.689138067550154,0.664581074858625,0.413793102618114,0.26742762813105,0.383710969922795,0.803615958293542,0.180646195477477,0.160503686229236,0.448275861980651,0.589226730018134,0.800657973020019,0.523918667690753,0.596587419553276,0.436574389307363,0.540229884898504,0.684754348485502,0.591410624926361,0.78665955479877,0.199162703332643,0.466287307456403,0.596622576794236,0.241379309903252,0.427456028272823,0.448275861980651,0.187932676577878,0.405442198603826,0.586206896357431,0.426945898939805,0.770879733581915,0.429225543494546,0.548251079393785,0.197534064992828,0.379310344280033,0.319509109826301,0.413793102618114,0.636283047670762,0.591024749671132,0.767188848198567,0.715335444980613,0.413793102618114,0.247067721371602,0.632455513330601,0.504136808546387,0.275862068241334,0.413793102618114,0.258055323183588,0.595570500609996,0.815601326865704,0.672255548762396,0.413793102618114,0.241379309903252,0.402720298946575,0.797593116618314,0.797481246150547,0.448275861980651,0.571243594327237,0.608232070839249,0.821742588348447,0.294661401440074,0.770460604522806,0.241379309903252,0.689890064522522,0.392047455759763,0.219787410152878,0.18965517034722,0.391025691145124,0.259126122304356,0.793103447410374,0.180958036455287,0.808317391535563,0.758620689072293,0.775295923766956,0.425336513179668,0.562356961902563,0.348027295431148,0.277723427887748,0.232215984521635,0.352976282036841,0.540221867514981,0.620689654695512,0.418346936505611,0.361014182317084,0.347238565606287,0.591581808255596,0.838684209984433,0.586206896357431,0.25202318662966,0.674176564462647,0.787689754774505,0.275862068241334,0.172413792202635,0.458897891183289,0.185687866560824,0.391226828509222,0.674352667223991,0.397779291819576,0.310344826579415,0.279987035626534,0.601944746684232,0.38980129551124,0.737173864419734,0.636731083771895,0.327619474919159,0.827586206772911,0.645143529861368,0.350271905679509,0.586072575986453,0.43008122451611,0.780270807566373,0.712956886238378,0.626370535396385,0.580459334915932,0.762697329849654,0.374536232114338,0.608593472892971,0.551724136994895,0.269904998615296,0.493826683837759,0.374521543480942,0.520002035489308,0.610723525528539,0.18247777729526,0.421358500766902,0.314515920043472,0.398552522667267,0.580524796555308,0.369543117116711,0.437643037072982,0.311146831290002,0.428023593666054,0.354133894484615,0.461451098985459,0.235067935646575,0.574822501675061,0.213799396868608,0.769342005363984,0.247431295269571,0.373169547899784,0.454053834363868,0.667629542031912,0.68965517239613,0.707080557995551,0.442485227335696,0.715988843297576,0.745628394089293,0.673237869817054,0.245959796007685,0.379310344280033,0.655172413033594,0.596459845217373,0.695979319555666,0.180629784735506,0.801981780726446,0.413793102618114,0.797862776692829,0.675934233913137,0.17997748565858,0.793103447410374,0.379310344280033,0.268474162014643,0.50582981748118,0.569015898852624,0.633765303421547,0.421671466596119,0.310344826579415,0.435430199266812,0.379310344280033,0.683705636610934,0.266782400865836,0.586206896357431,0.643159862601347,0.262975533877477,0.717479222237579,0.729724458120507,0.37192248005599,0.460183738740332,0.577501602682752,0.779558735647759,0.69727132715962,0.786964881268297,0.246890669965083,0.387931034376781,0.793103447410374,0.814288160171628,0.397356329250481,0.206896551565171,0.212509882787717,0.448275861980651,0.379310344280033,0.569403179659884,0.764241989528986,0.551724136994895,0.593586873303714,0.827586206772911,0.597209611951569,0.788267306553449,0.815453073908997,0.544679393428079,0.625368699501612,0.533709260619906,0.206896551565171,0.313598501275851,0.253006094696937,0.265922145653444,0.717909034311687,0.68965517239613,0.259062294670439,0.388046180026649,0.438581634395366,0.427224573192396,0.721246077093525,0.649153395648257,0.472372968701993,0.599866026406983,0.58385196666592,0.59497774592133,0.800167070655308,0.827586206772911,0.603448275526472,0.752795855051648,0.403043329020071,0.373723058797161,0.451070910786345,0.839880572436266,0.819820478530433,0.732628188266073,0.395892838152026,0.789421122371611,0.64742233948542,0.530897955764921,0.559541532592421,0.186363743465733,0.192642003244387,0.787530309648747,0.533919459287002,0.400895227539256,0.620689654695512,0.33698132530505,0.429551070164471,0.303844824576606,0.454852781076779,0.413793102618114,0.63938445252309,0.793103447410374,0.782486156311339,0.176725147875701,0.557571325644452,0.472139763852712,0.706896551565171,0.614882341925877,0.426444283850905,0.316062187092437,0.367524904215266,0.620689654695512,0.707525004406949,0.620933268005898,0.441884132560235,0.641252702652712,0.43649753265688,0.620689654695512,0.793103447410374,0.503761146081389,0.787259191775005,0.202473301861876,0.218733787041841,0.644782095025091,0.331893214659666,0.202221926257221,0.82029468945255,0.355057266359271,0.338085841283282,0.292939426044877,0.206896551565171,0.404918712428695,0.361231448698073,0.410195226464602,0.586206896357431,0.758620689072293,0.436800831730292,0.586206896357431,0.383338122659678,0.555424396139965,0.407023638260573,0.561163199517097,0.724137930734212,0.396511387588933,0.647649896515207,0.53074641225929,0.333575738299243,0.620689654695512,0.620689654695512,0.732828128042471,0.713712414506555,0.695615784586981,0.581917639199568,0.738254188921539,0.206896551565171,0.569298027566912,0.591826560759755,0.787776848802135,0.202331259150367,0.318523764580976,0.80459770053122,0.76463016570977,0.250781281013769,0.764168839356088,0.341283491618264,0.482758619294277,0.413793102618114,0.437676623824683,0.25104495417424,0.738185039244765,0.797554656534972,0.775085516111074,0.137931031815643,0.347917120436129,0.304478739811553,0.246657491751628,0.192465979366066,0.819883173117305,0.801842444624605,0.569957861509135,0.327931907007407,0.511238734108618,0.683715368931848,0.748409800229976,0.247392750156478,0.572942805311589,0.167350126074022,0.396944405182213,0.616754311850997,0.215732587190096,0.823761463047714,0.367986665962252,0.714324621543591,0.430996018630449,0.799589643859854,0.413793102618114,0.590174863990559,0.718298983823787,0.186394348029415,0.255966957664087,0.602216145258598,0.228882021251025,0.739854133305935,0.456995866826732,0.612208812928022,0.746966974434412,0.288285927044494,0.310344826579415,0.612068964598765,0.56796664504145,0.807496086095922,0.601717696759587,0.442049680363433,0.758620689072293,0.573806996479451,0.524188564414334,0.206896551565171,0.774161783628316,0.407039328810796,0.218883114651668,0.724137930734212,0.602735655524522,0.282561378956364,0.59049605721654,0.199292050999861,0.275862068241334,0.620689654695512,0.741571721985537,0.323260998421592,0.642315530490424,0.714933504224693,0.538789766737064,0.228879582024067,0.332339522505495,0.613909298334186,0.304420847868939,0.478151205394558,0.813917054481727,0.33594925262588,0.310344826579415,0.435757995104192,0.432233251707846,0.785156966406067,0.387984212802708,0.432659202611688,0.775386565481673,0.68965517239613,0.594203576673012,0.346592647858516,0.812636344565671,0.707302620874068,0.287085608148096,0.234939230312537,0.513036358322051,0.565026144138562,0.817879190917946,0.780687117325782,0.578143923569605,0.358629630514076,0.558971506458681,0.770665813070411,0.275862068241334,0.551724136994895,0.807365396392872,0.807269397803833,0.588870046603372,0.376588808304247,0.473039488236457,0.781116884323877,0.403686852616898,0.800343692815251,0.448457741642797,0.649333898443108,0.314094241116284,0.670776839387395,0.811664760822118,0.254688405249909,0.432558125800042,0.510039807446338,0.471672832706639,0.573639543190263,0.241379309903252,0.310344826579415,0.799178379540498,0.621685826379513,0.758620689072293,0.354506463096018,0.817179201419632,0.787848286086552,0.448275861980651,0.421853375967456,0.625155967357714,0.645994751431043,0.698206006966723,0.321261408060101,0.570506815631415,0.184794034841279,0.586206896357431,0.758620689072293,0.599026624997171,0.802194709565672,0.373239644172825,0.511978353617693,0.401943412844039,0.194746684231559,0.349603419191766,0.196295687599383,0.607065332547822,0.477378929338771,0.332521799656117,0.733051700967412,0.719897524705061,0.595979588987287,0.191905523689376,0.739880530433618,0.197653655752217,0.459915590761151,0.75447604395866,0.433331566660974,0.354095415961086,0.438375721022837,0.804659290755782,0.275862068241334,0.320403619734946,0.202259056598189,0.385038148085622,0.429691825136255,0.422180784560908,0.773076150401566,0.451994998754929,0.315528837466174,0.206896551565171,0.555463208635769,0.324562817229482,0.793103447410374,0.743770840292583,0.237203849188242,0.21388460897271,0.724137930734212,0.740937704305107,0.321789731710953,0.7812262018502,0.590317078810481,0.302452496208672,0.43506446889142,0.560036295102943,0.413793102618114,0.616384515414373,0.731161206850001,0.302716389626932,0.352022623179502,0.233256366553955,0.812452162953515,0.260060513215196,0.782463612158283,0.719356534694654,0.46795265508625,0.838721579023378,0.820994684073138,0.47808845446267,0.68965517239613,0.823584270266429,0.582017778635042,0.379310344280033,0.241379309903252,0.781772252667483,0.688526194485395,0.538231286209292,0.393010174895646,0.403529376493329,0.336611594433535,0.543117752385435,0.586206896357431,0.267559452930055,0.406757723592928,0.896551723449074,0.379310344280033,0.202503079690508,0.600508345244926,0.296694904329902,0.198348726842877,0.724137930734212,0.64614343670769,0.546924731039372,0.460068873791088,0.536066756570774,0.361787862900447,0.391283705217097,0.81106076069275,0.202807227012522,0.241379309903252,0.344827585941951,0.809437048956228,0.758620689072293,0.362607598875284,0.456767984020308,0.317900780279097,0.199674433888564,0.764817642993124,0.827586206772911,0.80323040881495,0.631394016259717,0.340886466196632,0.774269487638278,0.678859901734497,0.383906825197774,0.344827585941951,0.546487777490623,0.289169116727234,0.433807547841042,0.202573970940499,0.189404556936961,0.405307479719918,0.363874568803119,0.230462223366333,0.573117155230713,0.322735643640846,0.451069106721384,0.103448275526472,0.797661370921565,0.284512428598956,0.43495344769671,0.643871161056563,0.813501917723102,0.403660175813046,0.327163025994937,0.743573576392209,0.206896551565171,0.436316096583676,0.35232416633733,0.598040785964616,0.68965517239613,0.561858110792803,0.230565939173629,0.559070840672656,0.415964390585166,0.413793102618114,0.419488515210793,0.37286911422654,0.556434835406425,0.166788835466643,0.201709436580268,0.793103447410374,0.769106518029335,0.196823866802104,0.349389541707364,0.789178170859048,0.427391443566784,0.291287313347019,0.371607310624428,0.351234161761807,0.424365429370073,0.257347074530411,0.570371498465884,0.724137930734212,0.448275861980651,0.356408898258963,0.231108168774385,0.387088049423963,0.204085842942899,0.586206896357431,0.603448275526472,0.803845498667886,0.40899297134857,0.296791600572683,0.418506055854732,0.655172413033594,0.206896551565171,0.464454119293442,0.707011645992297,0.576648468455904,0.588501497952735,0.570438272431901,0.413793102618114,0.509589516520118,0.765141490581577,0.347108563312431,0.275862068241334,0.413793102618114,0.644925136580062,0.627934229446514,0.435079418760798,0.412347395031105,0.6004565662243,0.429225559885824,0.404017521025629,0.64153510899426,0.541595101069282,0.352886643263406,0.405172413545821,0.655172413033594,0.551724136994895,0.623588316863019,0.639741559037698,0.798443777811196,0.45681453934574,0.667183436003684,0.196143691284716,0.66082912786941,0.198183733269743,0.664013993008075,0.816143585151195,0.636622436239032,0.465556972581481,0.387544184865006,0.598866031457545,0.518356953624968,0.206896551565171,0.713481196075195,0.809836468528804,0.568465257453234,0.670911648423329,0.210972747729135,0.458942598392202,0.642809935466209,0.581952608965293,0.777705706868047,0.359077979073932,0.331116236356195,0.784074472108925,0.459770254427353,0.589731017909694,0.399325303779287,0.68640222813599,0.627717944493255,0.758620689072293,0.70204620971535,0.193085468228055,0.736597034881448,0.797571049861211,0.389835051297988,0.448275861980651,0.636873910191352,0.774949777894607,0.300997684291562,0.181420718162712,0.732996724623252,0.318586662009905,0.610484578609918,0.602383971449345,0.632507561782848,0.591629198511717,0.798221615560559,0.704223728416696,0.427277779278604,0.289091686382044,0.371600028799474,0.225139225716832,0.195975681716554,0.769345576613532,0.1839032908286,0.241379309903252,0.564562766826304,0.500726829702712,0.603309440383045,0.172413792202635,0.392912508494139,0.301178158401678,0.780494366148947,0.401393854293408,0.418159415170699,0.494763906341758,0.547537209556938,0.68965517239613,0.758620689072293,0.793103447410374,0.284357621180227,0.793103447410374,0.575840325211957,0.618087632645003,0.819229174469811,0.180685366532472,0.814489854839155,0.310344826579415,0.70698794625419,0.777989283137014,0.693414338718554,0.256189357588244,0.574165847640639,0.713214368618293,0.724137930734212,0.225372999138546,0.709896648079061,0.454094238862483,0.192936112957947,0.401844286594395,0.633252853698333,0.413793102618114,0.562828388356444,0.295573440795367,0.568076452257183,0.426471090760521,0.675206451979658,0.432169933227981,0.6694514273847,0.413793102618114,0.615180904944596,0.399543801554985,0.161744593001664,0.909332953076188,0.23518003046995,0.441304658904024,0.547959398662634,0.391324229576927,0.206896551565171,0.560719876932651,0.19378805471937,0.556693426246469,0.473697825450169,0.328511447253182,0.76954116245689,0.800301880715696,0.30148372561809,0.137347834266115,0.730000239312649,0.241379309903252,0.444310379674947,0.719541440596377,0.461958148807248,0.374360200040378,0.426514651604476,0.74125504865428,0.735559656550698,0.400859053014646,0.591579767541568,0.167040790912733,0.423510612988389,0.379310344280033,0.369130782242055,0.297732704736043,0.569502032380087,0.392684849018869,0.800298562506492,0.241379309903252,0.418269411910576,0.26877960732093,0.699289658897826,0.241379309903252,0.797709015242484,0.793103447410374,0.775323434477042,0.599604988144343,0.611526329313895,0.348348161856037,0.558246590949825,0.404615441015563,0.391311706641048,0.360338398637565,0.797934387110113,0.444162699388492,0.609505728408234,0.206896551565171,0.464135321242861,0.713449276111507,0.801895430453024,0.693185218370692,0.271088380199939,0.391875765325386,0.620689654695512,0.371167481430962,0.486267052345227,0.806137716356793,0.187375547306031,0.425157301197906,0.206896551565171,0.733252630367179,0.339622123995444,0.723900194721203,0.29304598573879,0.805718602664507,0.701652190044198,0.823382821468062,0.363279649441391,0.46690334288115,0.388674189279484,0.310344826579415,0.586206896357431,0.195258041885922,0.241379309903252,0.353515353243347,0.536589118918953,0.827586206772911,0.137931031815643,0.558829506774274,0.319310250849752,0.417822922736241,0.331869839673741,0.258729479004377,0.413793102618114,0.555812735209067,0.564198364144376,0.373542316279879,0.258885208432456,0.241379309903252,0.595082772006358,0.628305133318813,0.773172688878302,0.355273015522652,0.316918818808085,0.568856726231851,0.241379309903252,0.694116019591797,0.732721676940771,0.510718482137396,0.576971217828776,0.436673807526635,0.775130303227464,0.694219508994575,0.661687096498615,0.554594837692189,0.583662107525079,0.310344826579415,0.793103447410374,0.223888796636731,0.397811070408496,0.476186155552218,0.616780895429459,0.655172413033594,0.645799367405287,0.200703194505259,0.57995552134696,0.392715653351243,0.612680409441404,0.396825736432174,0.248947616479311,0.577307449027251,0.586206896357431,0.315541673885232,0.493363767530177,0.395667122067574,0.620689654695512,0.566753061503873,0.69855379094235,0.768356187844981,0.313240379526504,0.605893439199676,0.186016188967988,0.427066191450754,0.398819311194885,0.717362012311222,0.765512051261507,0.192088648064145,0.413793102618114,0.389929554182971,0.456927334896221,0.582132809545968,0.365363176460716,0.802344803467714,0.541330756890896,0.590661323294659,0.823346006659182,0.616473428873786,0.644469231641357,0.137931031815643,0.333333332821106,0.751116556395885,0.180549231851985,0.283504995082975,0.60582831460594,0.746700312939193,0.724137930734212,0.80720925718286,0.65958684935196,0.187405366112856,0.198144814230637,0.226857801970893,0.655172413033594,0.181660200871211,0.642655363672092,0.682983701241188,0.577801759753192,0.59683275599669,0.464518408956489,0.878616124511339,0.787901965470893,0.607308647741851,0.413793101593659,0.253794012129115,0.396962875078398,0.240121902236829,0.723178780798967,0.191601529011132,0.628215106276996,0.256911660737276,0.310344826579415,0.406421248574202,0.409292980897513,0.367834365384499,0.642649502765992,0.422560446497575,0.363126088784194,0.556366485828875,0.211583649610713,0.592089292446235,0.557388435869839,0.413793102618114,0.206896551565171,0.212619197240676,0.646672809400291,0.202410000797743,0.599143715062313,0.776039723051749,0.314833091259779,0.201176504931577,0.363244447124418,0.482758619294277,0.383704291501738,0.608716293758448,0.344827585941951,0.637567572656616,0.767907148802566,0.444673609356092,0.614420557640885,0.551724136994895,0.364692302993212,0.560813058270899,0.657297667122723,0.639017474361712,0.402595330823767,0.68965517239613,0.448275861980651,0.705390978935539,0.615199337960407,0.776125478116912,0.383950620641886,0.793103447410374,0.217831794515095,0.413793102618114,0.453500587775838,0.591989217551415,0.445441958676504,0.698541139949617,0.150075301528047,0.17931017626944,0.189617099556715,0.344827585941951,0.40463924012579,0.400482929544973,0.206896551565171,0.325655403431184,0.819057346758486,0.435063112513221,0.442515460022274,0.667164140396904,0.180921437806377,0.3621170519964,0.670454092063433,0.344827585941951,0.18566681503846,0.563669442211901,0.827586206772911,0.76956300383393,0.341074078708025,0.24705874612281,0.633591111268467,0.422521728251615,0.781609195313984,0.606660751771797,0.30759730120897,0.329126416220447,0.734105132505396,0.22424660080508,0.680483442387063,0.68965517239613,0.576562966431084,0.360692031225834,0.724137930734212,0.38162915784086,0.586206896357431,0.721260482977387,0.669540436118413,0.198103371959276,0.819324156799656,0.301373612090362,0.310344826579415,0.724137930734212,0.275862068241334,0.478405677926173,0.59185077067637,0.572501433289146,0.827586206772911,0.413793102618114,0.793103447410374,0.68965517239613,0.397914631523113,0.652206294613151,0.161230720310687,0.368471176753259,0.551724136994895,0.559555732560862,0.390628941301842,0.628166183436444,0.464254398750378,0.739727501468479,0.40086206798522,0.223581513458473,0.282229939133143,0.543336456076555,0.708036566952278,0.214083365503776,0.443165464320374,0.275862068241334,0.403517082010877,0.310344826579415,0.568685977271466,0.710456141792663,0.793103447410374,0.637681432615669,0.434834025972368,0.434028383422669,0.361841210361422,0.206896551565171,0.44305833400512,0.818359390803016,0.369217772799747,0.620689654695512,0.230281521827245,0.757677983686028,0.19250187933678,0.557283958892603,0.570950216074428,0.216498350786509,0.793103447410374,0.667491712903131,0.69164120717127,0.453640228140764,0.307218508010002,0.572857725362161,0.819359538396224,0.802501656722745,0.590972860009384,0.672009072100752,0.497547809078868,0.361427474032554,0.426193002496095,0.206896551565171,0.832886802668578,0.84815713995896,0.585173322851931,0.638157731376735,0.206896551565171,0.582260313194488,0.665165777332304,0.436685714765159,0.211355357022356,0.672413792202635,0.448275861980651,0.709285400956204,0.323572404006098,0.468270313943057,0.281175231124438,0.448275861980651,0.448275861980651,0.645272817085751,0.419802685798893,0.200608075922921,0.213869189903018,0.724137930734212,0.379310344280033,0.575557158724924,0.404218340808729,0.558004526615147,0.404478754153921,0.413793102618114,0.301458859025928,0.493735123187057,0.663171525404948,0.491806783659204,0.571528369208359,0.275862068241334,0.43665693168217,0.680188078740787,0.70951017044439,0.673516544069645,0.192380522417259,0.620689654695512,0.68965517239613,0.350642355718317,0.79823244302369,0.629570697694617,0.61632204108529,0.218121759284401,0.758620689072293,0.502187013860966,0.200504540419676,0.407926808910376,0.193153807561057,0.25823287759743,0.413793102618114,0.577828660912652,0.201147045708398,0.425276344898414,0.461654945008135,0.249196705500778,0.768824609572836,0.600397608848659,0.247323536963503,0.572974165922938,0.64888685094089,0.644143453979998,0.641155551551986,0.652092654911888,0.626899078280571,0.248392875211679,0.586206896357431,0.713468730508786,0.758620689072293,0.560205056620953,0.430131866391871,0.566721980568694,0.275862068241334,0.595384557959982,0.369008303544492,0.397631932187483,0.78903007874175,0.429292923937825,0.843944104289584,0.608124042077106,0.601733339160432,0.605693266872031,0.210958782360851,0.185080021652468,0.655172413033594,0.724137930734212,0.801455266262829,0.275862068241334,0.210214657299421,0.770638034977613,0.413793102618114,0.344827585941951,0.220579541167784,0.26094300217083,0.745569431591378,0.797804681908157,0.81085012458344,0.172413792202635,0.708179616702888,0.452719142849296,0.663591162593655,0.60031483494706,0.228575623201742,0.310344826579415,0.57470415050602,0.462950093590608,0.646329940758953,0.7801217032877,0.655172413033594,0.586206896357431,0.592888284235157,0.582269887749357,0.385917983703239,0.432488569414698,0.432127881405994,0.402817858804779,0.50136049497068,0.590746864248763,0.219761405391396,0.727271967546336,0.811413745825564,0.183218518582376,0.402148617293824,0.777034939943845,0.521886066321178,0.603202285480874,0.179834122424791,0.850213897973498,0.260698843850474,0.429835561271604,0.590529134814189,0.441294449187158,0.568558424449115,0.189122303239184,0.362443990365084,0.766660624944289,0.819585464493917,0.581520384300053,0.185717346273099,0.633446732799939,0.413793102618114,0.394296500873097,0.760666114567468,0.339499708814081,0.237524973775749,0.741119643385634,0.188346573746155,0.664456291137688,0.219664089353442,0.42422779898553,0.181567601423308,0.288555621950473,0.586206896357431,0.655172413033594,0.431912268495106,0.784855600478924,0.791941401122083,0.344827585941951,0.217313654969739,0.232509397605908,0.631539432500991,0.640501616420691,0.250379632227476,0.448275861980651,0.655172413033594,0.551724136994895,0.396203444661762,0.196666743090997,0.215284227361236,0.354448283281595,0.206896551565171,0.371374343448667,0.176614572318843,0.603042978656518,0.715914233276541,0.448275861980651,0.422487454090721,0.562212484061916,0.202501618817916,0.678085457932284,0.403064802617826,0.230654422362013,0.576678166377058,0.350435733423043,0.373018754295091,0.187997665943576,0.554230083622253,0.413793102618114,0.224676564498503,0.604911446995019,0.395273670968855,0.213556611317728,0.745661622281803,0.388340014161859,0.586206896357431,0.224868229753215,0.249813641421323,0.655172413033594,0.39485264564385,0.413793102618114,0.421505311291204,0.234594623171347,0.471260845122171,0.643834670999865,0.291172601041545,0.429926434513113,0.735098448009322,0.657609894320005,0.408440743068644,0.730452802479689,0.234851424288798,0.620689654695512,0.629385329763764,0.68965517239613,0.702989298247722,0.613505651860969,0.684718419830053,0.482758619294277,0.758620689072293,0.413793102618114,0.739497702931518,0.649064141045384,0.445616247128338,0.275862068241334,0.802037140216713,0.703137285870628,0.724996939185073,0.639850999498601,0.388596962800805,0.561944939486631,0.632183907816358,0.572633111591109,0.371597082467375,0.620689654695512,0.565682310532483,0.8391890080545,0.805253313719531,0.441095148670576,0.185745446044715,0.551724136994895,0.641945742249438,0.291476393902187,0.277688213277318,0.430873737652669,0.524980580690299,0.328048827013046,0.451527034958384,0.539837867012096,0.564620173177328,0.177930533725704,0.758620689072293,0.655172413033594,0.58858987767118,0.724137930734212,0.567101221454424,0.325381905748865,0.566865413465412,0.389503755922898,0.732585047448599,0.206896551565171,0.56783208904586,0.575634224364193,0.669462857227272,0.822301781896783,0.596546212906527,0.551724136994895,0.819646325306638,0.5744289993536,0.620689654695512,0.226851542551864,0.79885057345857,0.402826132302011,0.732528603060663,0.564242435166838,0.461956385720481,0.749033466818774,0.374698713724221,0.68965517239613,0.586206896357431,0.75269442172972,0.710964172017727,0.421872869294018,0.815859094044062,0.441332297670964,0.161278419952168,0.408524456395325,0.325524465810065,0.248476166462969,0.782380949922261,0.379310344280033,0.260086806872941,0.180581088299473,0.372760816032776,0.405313227935986,0.193702603917292,0.344827585941951,0.793103447410374,0.375687030913017,0.48848284365468,0.581816360570319,0.805873553506912,0.189213566797984,0.172413792202635,0.505829205881645,0.445472248732552,0.187625387252891,0.206896551565171,0.431416464114018,0.551724136994895,0.561066885395969,0.744368604565383,0.770678627975917,0.418228263657753,0.206896551565171,0.498681765840093,0.183405105614481,0.401002567867751,0.684685491802809,0.710815535914912,0.604830194408847,0.275862068241334,0.338368945278571,0.573075095213088,0.323951574204445,0.566511457149416,0.508208152892262,0.801840915113539,0.42784301813491,0.388135523757092,0.555726338835178,0.43845487757442,0.430815228988244,0.448275861980651,0.564219442302565,0.60178495734165,0.78410413827198,0.749697020556496,0.357045305992519,0.458737701278867,0.643592279864096,0.698198139153606,0.410037230942433,0.685833216212535,0.415496039544694,0.438055435463838,0.614070327267116,0.44465086031207,0.713189680281272,0.461593497182795,0.815760334549249,0.499990195455021,0.538967058890468,0.435006317761733,0.413793102618114,0.379310344280033,0.600151921017237,0.221593970685819,0.189026717505443,0.409170152860852,0.613110779843396,0.586206896357431,0.386715360951345,0.224869695748081,0.559901335472149,0.275862068241334,0.490740860943441,0.379310344280033,0.741819987345319,0.431143272743694,0.56575303991861,0.356669004267705,0.23883718772683,0.603560193119161,0.254566504344872,0.664050746349665,0.206896551565171,0.270277330577632,0.612012534553197,0.429022060128881,0.215466457386936,0.372570182404081,0.198018217224645,0.350210127979713,0.560185330743143,0.218104228813298,0.810096139144242,0.594827585429724,0.198037284377997,0.736641465487556,0.670341070108433,0.61474202951858,0.355395444021929,0.630666721966739,0.629377930126505,0.222896935858668,0.778207936629847,0.554562295884418,0.670932713263605,0.372063718570456,0.734025518022501,0.661704657703363,0.816764612744343,0.832681608463341,0.235372687396941,0.559626803090448,0.290255552102118,0.695676770383191,0.805236576176469,0.628837063050677,0.254491936326485,0.448275861980651,0.400430326862662,0.218772785988425,0.395663344902604,0.202200621694513,0.356606149865879,0.18390804327457,0.44003752608787,0.294902398292816,0.685058697625118,0.769907108992252,0.182238461572899,0.334934831303484,0.293546533345754,0.775635765144262,0.638005426701163,0.438671206579238,0.354288655802876,0.595120666590632,0.591697794982882,0.393136413342447,0.371596093868461,0.659418256868998,0.43500056852121,0.344827585941951,0.741767121378116,0.431452281103891,0.218370496917861,0.410140159968417,0.647335264922432,0.320474842908303,0.368623914773226,0.590631903000765,0.793103447410374,0.383718461760989,0.568752655963183,0.448275861980651,0.551724136994895,0.775343615212798,0.460225574402349,0.823588482824702,0.789325350187091,0.304163490472514,0.404674029587465,0.292091322915714,0.579857572195919,0.193206784169382,0.441184885791675,0.448275861980651,0.405509251221557,0.558171269957136,0.784850635970804,0.27697834291214,0.551724136994895,0.586206896357431,0.2153145420042,0.297934420917122,0.572604001707029,0.55564144123871,0.603443634746078,0.596198731145075,0.81418850940111,0.750527883135274,0.56159401760585,0.758620689072293,0.181425723649027,0.67011474754672,0.752613904702118,0.186982274462452,0.193924617621977,0.719430419401667,0.604308768412386,0.758620689072293,0.506475576438453,0.549326882976412,0.419120325119347,0.544814240368842,0.469980913791788,0.337745000038059,0.606251026183601,0.281473838194715,0.372973519491938,0.432029705850435,0.379310344280033,0.365441263481454,0.22669034970616,0.811245451458958,0.724137930734212,0.763268797391345,0.632183907816358,0.551724136994895,0.505651773377929,0.356650635792548,0.64931585164677,0.557063126384339,0.608526938649385,0.612068964598765,0.200902796211562,0.570579061210695,0.770629193932404,0.175249262922676,0.543700339359884,0.68965517239613,0.34487266297906,0.562213682674071,0.372202929688807,0.317030872653267,0.230785452184068,0.400482080271917,0.709275624583732,0.797592190511145,0.765389999761609,0.800181406876241,0.448275861980651,0.186160188388229,0.223465205052369,0.251117930189816,0.559678113935215,0.571890837719562,0.457367481670685,0.541349679596116,0.660028691599172,0.434254033942012,0.679310937439381,0.379310344280033,0.310344826579415,0.655172413033594,0.409082454404871,0.581248099572256,0.615663063587307,0.815093153216963,0.602908704386008,0.249856268986926,0.763878623595348,0.365340744997692,0.319372777426031,0.559039077450558,0.448671188856169,0.229265800471665,0.223740740375352,0.400451445999044,0.443971667246867,0.247339497969802,0.651380985604023,0.775237420224806,0.490010664369921,0.199793586181285,0.6386273209831,0.432083784772161,0.399207884864144,0.77990658621295,0.806958110031633,0.241379309903252,0.566155578956153,0.55902031865811,0.373764344326932,0.212387450190622,0.776597824531233,0.429717091265802,0.575469566812245,0.452509853898091,0.551724136994895,0.529776640776337,0.612156282982003,0.384425678788149,0.275914839958693,0.623293908008648,0.206896551565171,0.413793102618114,0.61428781083253,0.595430062194755,0.484785697827847,0.403909303763797,0.214275041003036,0.366750475779875,0.235313841686876,0.59986438932816,0.608255294205859,0.572059858424645,0.517241378656813,0.751052382496234,0.364715719981786,0.754052592724611,0.330026958119149,0.556065571686314,0.776721515158863,0.422468188193131,0.350282078516001,0.587020590097663,0.408415077401712,0.627648095113829,0.397747170038286,0.594472731691294,0.413793102618114,0.580284229973596,0.815322718178223,0.248326571470431,0.390999274552799,0.620689654695512,0.596447485169813,0.29258498413729,0.614301044740063,0.392183026990092,0.733666659690129,0.413793102618114,0.592485683730325,0.577093582811853,0.624541171523315,0.198407574601851,0.793103447410374,0.391469638647018,0.318377369985336,0.418471613683246,0.420426521422739,0.383212261212256,0.224425389686996,0.206896551565171,0.819935430558338,0.24553540022628,0.353299585639778,0.74784367317133,0.471378876661303,0.666903661486603,0.448275861980651,0.789277501999659,0.813952358219728,0.265297560128661,0.448275861980651,0.655172413033594,0.261328158258766,0.201952755872116,0.602664582946025,0.408129454271988,0.292697378101477,0.172413792202635,0.616395772124078,0.345249637770699,0.439835898009907,0.8184408790138,0.433333904466903,0.192041152289176,0.20167592666268,0.206896551565171,0.734732027151372,0.608067859949607,0.29221921380816,0.427857415823133,0.624784123035878,0.434524053600174,0.529904158767224,0.103448275526472,0.598997557115739,0.743963677523624,0.332340621745531,0.797526696089214,0.425177534180859,0.172413792202635,0.586206896357431,0.35718319453968,0.193292653973487,0.566993091271253,0.598980375983734,0.594827585429724,0.22507116606,0.809289905484105,0.57570943676467,0.721387951794442,0.543888026656479,0.706896551565171,0.257425103157223,0.806659162842351,0.592327378822796,0.355589704220732,0.251486544405563,0.586206896357431,0.669395139738354,0.192155283728759,0.428435536174509,0.45381609835086,0.680332688736108,0.275862068241334,0.581796829338928,0.433265504691066,0.462359612167217,0.473464703581729,0.68965517239613,0.658360294167288,0.206896551565171,0.771453965102745,0.56591385269157,0.632861348039342,0.817522220655831,0.344827585941951,0.383358682443722,0.388529087545843,0.383307499655809,0.6302406552995,0.620689654695512,0.771527866201036,0.43938945493604,0.65373946503153,0.548802176675575,0.172413792202635,0.735404939283994,0.819344371342421,0.743614120216681,0.287475232908014,0.19289992613988,0.206896551565171,0.329979358874242,0.384241163203717,0.793103447410374,0.759003801372837,0.380054040094888,0.758620689072293,0.379310344280033,0.202556658678275,0.379310344280033,0.740277794553226,0.429489244315298,0.551724136994895,0.586206896357431,0.785982824522986,0.636176491050214,0.212454868538729,0.72764646315728,0.292474994568597,0.620689654695512,0.401334004617607,0.581757172692341,0.781962466269697,0.581281140289531,0.32872973296673,0.567901963012202,0.608759606684334,0.315577733670899,0.787070546613141,0.263017216895723,0.232015168836354,0.394501472771635,0.379310344280033,0.607566354477374,0.626027488499906,0.227198709805681,0.379310344280033,0.197061255524923,0.421698279652464,0.448275861980651,0.750945840218054,0.459279614323079,0.6766141922461,0.275862068241334,0.812323357222903,0.763911707339726,0.309518568925111,0.739552931291566,0.446173160240215,0.438740539633427,0.407410685492131,0.566722006180065,0.55658549583199,0.230736379773111,0.751986938344303,0.532432760188759,0.801816635533997,0.725236649322544,0.620689654695512,0.241379309903252,0.793305734212795,0.637732297822584,0.336945346451314,0.391878469886145,0.346952425126873,0.590615170579977,0.437951684825077,0.672413792202635,0.488879140688925,0.264634904837827,0.573311272005841,0.781616656418533,0.565288071627997,0.586206896357431,0.663388404542011,0.369900513552037,0.235131695666473,0.30420425148141,0.474697156552875,0.586206896357431,0.574842697777639,0.236046190640001,0.187410821334842,0.56690450871075,0.344526820345341,0.610971045085202,0.724137930734212,0.202232094995894,0.722219631888177,0.732960497851447,0.389224410652392,0.750803293474767,0.655172413033594,0.196093543196184,0.591708253642272,0.394027445226933,0.191800533460267,0.604072255598448,0.103448275526472,0.649698979314136,0.281794577587205,0.482758619294277,0.48728934762747,0.562601237010771,0.206896551565171,0.752680712475144,0.748192897530452,0.802505917430395,0.65229223100682,0.80521941758247,0.542619949292969,0.216019755197707,0.325859662309158,0.785547253988262,0.418648297310479,0.432170134021128,0.551724136994895,0.620689654695512,0.362318659585266,0.235594062866265,0.638936819032707,0.179005314902407,0.758620689072293,0.26997043669221,0.462364049081098,0.53541566839946,0.621643941543665,0.64478676244131,0.563305406284803,0.648691961726818,0.333862178943923,0.636288477281377,0.58463039047516,0.358844447423559,0.198208276134178,0.573561727650055,0.29253780389441,0.748820068779234,0.71187900506135,0.267471395914882,0.655172413033594,0.427934155685766,0.724137930734212,0.480071830777518,0.19303438891008,0.310344826579415,0.701799440059624,0.309726450275375,0.581653119839405,0.648971749561813,0.798943857242301,0.637046432483053,0.206896551565171,0.193660872749668,0.423383644105293,0.354437618706783,0.274197595495915,0.434246959056935,0.827586206772911,0.563053427276251,0.27243851332221,0.176866725484716,0.422514104258748,0.344827585941951,0.543185458605351,0.722295623898782,0.258853969731232,0.435762781357172,0.521110979161329,0.353155281956452,0.811808576864943,0.776235818049159,0.62266260410907,0.758620689072293,0.331649061461584,0.586206896357431,0.396510553682698,0.394314892910714,0.426102301362997,0.570545803308995,0.621341457936299,0.597192230026417,0.793103447410374,0.29054311657375,0.23151471650369,0.560378988562505,0.619855753583699,0.356013404397306,0.594667031843837,0.317764619987239,0.233873950954409,0.235797437639718,0.661056890814618,0.137931031815643,0.551724136994895,0.350452489406292,0.341482064771915,0.210839870815016,0.351381552127545,0.474033042438359,0.643986782053473,0.567996172903102,0.562275794346142,0.727001668212006,0.422432771765099,0.413793102618114,0.367816091159187,0.193976775690892,0.395300628473331,0.29899825681839,0.581677512108979,0.379310344280033,0.379310344280033,0.655172413033594,0.783280994960369,0.597046431663489,0.681034482299382,0.185760994195716,0.586206896357431,0.319138271519112,0.379310344280033,0.579925478184526,0.434487118930078,0.586206896357431,0.379310344280033,0.384171224696721,0.201557197469806,0.684174126977263,0.649999463185667,0.758620689072293,0.292113370208175,0.262793388881528,0.803456774403767,0.741776771742643,0.816781480393169,0.440570643162886,0.806731444277551,0.689903947934419,0.591398022083005,0.365068837269273,0.172413792202635,0.344827585941951,0.209544609542512,0.7735827115584,0.594758420386127,0.823415228047795,0.551724136994895,0.534549821712589,0.241379309903252,0.428065409863429,0.418831861176372,0.762615917448528,0.784097453704195,0.76639117180965,0.212587766966399,0.581219129014033,0.578518875062949,0.764369465517224,0.743205492844065,0.323478210506475,0.559412678712432,0.616379309134911,0.635761277457477,0.776606809000118,0.577281036532746,0.838879614499285,0.387732414098207,0.566389740646248,0.418140278354418,0.797464284251877,0.595250108507695,0.603836087001335,0.418352639645667,0.449126742406866,0.715982483481972,0.597345994550126,0.542649508912721,0.811908387450416,0.396551723449074,0.335566303213654,0.616745976886475,0.211883448121961,0.460589292748449,0.732409817522773,0.264764525010031,0.41850778513449,0.3366306431467,0.660318501675798,0.422442870840843,0.402619926959854,0.701149536158097,0.402896058515549,0.434102216906941,0.334125890009222,0.517687015484727,0.188923405333351,0.707777565305845,0.809052900931847,0.603794163236203,0.296963302276063,0.685295138727217,0.565377426627444,0.429561726543644,0.662317635130433,0.712914389802995,0.305626231670032,0.228131507689256,0.482758619294277,0.741836060017195,0.495461232257505,0.301180240093898,0.680785895260783,0.425153679750072,0.470223357174754,0.182268913492811,0.603990900566793,0.59162666401046,0.202680271447338,0.522070241786605,0.395927743377097,0.322464489911184,0.408305480199219,0.210759006497226,0.422906578027556,0.759643401307653,0.604181801578199,0.206896551565171,0.336206895845204,0.626393142041185,0.409352996534997,0.54627354349594,0.827586206772911,0.286531268466759,0.251848884859913,0.379310344280033,0.773795736696381,0.684590812711595,0.217908040590499,0.235856345841527,0.321113320040622,0.74006679681136,0.305839902214557,0.210014474727227,0.367394539264398,0.819370214240039,0.184175322516053,0.206896551565171,0.420070959786019,0.391220219751094,0.664253257507694,0.59375909747906,0.544254668796672,0.566638082840143,0.777179995577019,0.486469131183316,0.793103447410374,0.363394825824904,0.417164271014896,0.633308680340004,0.793103447410374,0.739163845394891,0.564725688951766,0.241379309903252,0.351937880275713,0.70498954733367,0.569243636186462,0.568035356251556,0.206896551565171,0.369333277008807,0.799089944501491,0.184126238836093,0.275965114055169,0.668246994277692,0.413793102618114,0.758620689072293,0.419716307865192,0.29300321679842,0.556686148519336,0.395349766449397,0.193896907143199,0.620689654695512,0.730110363084926,0.260272496482611,0.344827585941951,0.683344070644438,0.217854786354913,0.319358067279084,0.61995581823397,0.60754094697306,0.703600215496123,0.662010398052643,0.827586206772911,0.161120383451805,0.185183649356648,0.366277914230039,0.257633129980073,0.631475200207415,0.506892892212507,0.292901628783812,0.241379309903252,0.192951444948978,0.396664275179305,0.373692482918215,0.525966955512731,0.18011682585824,0.762575846922189,0.607673703001508,0.329712247643352,0.581739434256907,0.275862068241334,0.697300418603514,0.564556356812414,0.807564473578301,0.789148054960322,0.586206896357431,0.344827585941951,0.32922315958815,0.674021711967906,0.54743571886554,0.644255698373779,0.699055754345894,0.724137930734212,0.187561433611029,0.603276615825739,0.806537694257254,0.409233565590562,0.764355282964516,0.472217351963946,0.806103090807892,0.57008526476108,0.408945566750081,0.425101035065112,0.193558254133499,0.229337233658263,0.637841595884265,0.758620688047838,0.315035549146156,0.196782540294139,0.498184863243424,0.793103447410374,0.655172413033594,0.374008040618159,0.786417672817053,0.581869353569922,0.237458508170637,0.198476492751834,0.655172413033594,0.523112421737157,0.46004220210951,0.373137960883917,0.3154263981296,0.461210231214026,0.448275861980651,0.379310344280033,0.694154942728723,0.620689654695512,0.231790983287423,0.724137930734212,0.198159082837551,0.327313653637947,0.388512194285646,0.368396207148578,0.0762878316699414,0.218128737870724,0.594557800371719,0.627580467776936,0.610841400326082,0.590642015394421,0.604522927621867,0.401709700889615,0.827586206772911,0.300816069963217,0.719937234623299,0.762242478050517,0.418439740844481,0.387937532493787,0.827586206772911,0.413793102618114,0.823188311302279,0.301533129952413,0.799912133021198,0.577639225896112,0.241379309903252,0.428816137536258,0.389729308094577,0.517241378656813,0.34216486596704,0.198399666834995,0.68965517239613,0.620689654695512,0.45288858153195,0.664205140913096,0.763612965041411,0.433992558237158,0.39616391197421,0.586206896357431,0.823654752758941,0.721807693477541,0.280633989098141,0.518071871407397,0.317382772888413,0.769716989639883,0.427600344249607,0.58074437205749,0.200706960401225,0.54885430093748,0.39882980058792,0.672380524056387,0.594861829881428,0.602369694646792,0.695806671256019,0.768244579637651,0.2922224336697,0.442636517800984,0.364660621727501,0.361372741508645,0.373071285265564,0.335958078304267,0.6047573198143,0.896551723449074,0.312612148991425,0.784308965722387,0.472226884516167,0.417099548007454,0.724137930734212,0.206896551565171,0.36900223877188,0.46744262922317,0.23362358341331,0.509513315520727,0.628392688351118,0.620689654695512,0.793103447410374,0.362392951000848,0.380618821019883,0.367379073069784,0.838255405973881,0.724137930734212,0.596295641498916,0.228650171755487,0.722699206855799,0.71092092670586,0.635188637939457,0.750437689107319,0.641277899119331,0.397856501906977,0.762857976660931,0.711650462506013,0.242175145346834,0.818211702320922,0.626089384012008,0.676451249631542,0.702294384923106,0.67956161231693,0.568559446855038,0.802782325588895,0.500697786408195,0.652061117069853,0.369062257482728,0.640871777563236,0.793103447410374,0.413793102618114,0.430948115122456,0.620689654695512,0.44126397677815,0.714670097422479,0.5984027627375,0.252774849629751,0.806211943231721,0.409470863136901,0.679312676963688,0.750850251410948,0.593559867649861,0.310344826579415,0.266646964863545,0.379310344280033,0.788044225366827,0.259082691566164,0.413793102618114,0.706514569238308,0.245846912354088,0.591421826315505,0.43336331246734,0.428294203410199,0.137931031815643,0.586206896357431,0.289985158517943,0.265159515864364,0.582361611288378,0.735067890570562,0.448275861980651,0.586206896357431,0.258880022642091,0.341292366470483,0.725808568648816,0.376044244995382,0.413793102618114,0.57603333660032,0.565812635529612,0.18155142015922,0.417891124792296,0.433465659602979,0.219729191409172,0.738184483990245,0.733268421313975,0.628604705425543,0.27793043332913,0.5910701678517,0.284316290574443,0.742312885348045,0.649020843486321,0.39893965800194,0.206896551565171,0.718714822333972,0.275862068241334,0.53530295992764,0.429862471651158,0.437512788909965,0.562160405900479,0.773790548857106,0.403167242978855,0.379310344280033,0.442201387781837,0.798014005690826,0.229815419465132,0.683043578577268,0.413793102618114,0.724137930734212,0.614848631215141,0.820620729374346,0.410300841611159,0.413793102618114,0.793103447410374,0.707780785167386,0.166913253457205,0.213653588261133,0.592415506525352,0.555454842937602,0.70788662876737,0.50000980249607,0.375135511555835,0.398781890933199,0.781175655248739,0.68141333696564,0.62793628040509,0.188091282675128,0.396205834714888,0.774288881592722,0.603116445385959,0.551724136994895,0.379310344280033,0.427839172331467,0.581822840247138,0.274069433122938,0.751062481571978,0.862068965110992,0.195340707195309,0.544495492516547,0.223641247370878,0.590371616687972,0.590200424138643,0.862068965110992,0.366553266175607,0.793103447410374,0.220592351975471,0.419751735562228,0.238209931448298,0.817188051684935,0.418290074140104,0.430323089082095,0.539592558228963,0.349355529806908,0.206896551565171,0.742514962137225,0.636655253625154,0.578331101712148,0.812185916362503,0.596228978174021,0.288278399350381,0.793103447410374,0.373030409517726,0.57620295661148,0.391785751601482,0.586206895332976,0.443507780780557,0.275862068241334,0.595112902247452,0.518706451513531,0.196219474306535,0.819243864127662,0.437071692465871,0.746859568540807,0.34067676848795,0.784033307464824,0.769729436766104,0.492909306048331,0.527782645987144,0.357608292072647,0.862068965110992,0.4413370214322,0.517033143869632,0.573230145427613,0.707060572930668,0.655172413033594,0.187514545337776,0.620689653671058,0.394546990324321,0.830181270726194,0.448275861980651,0.758620689072293,0.663183300488799,0.230014248732491,0.206896551565171,0.630538222548122,0.731735189428306,0.422900770393108,0.197621561631208,0.395040087071285,0.5222644364203,0.194892626018163,0.310344826579415,0.597182140170766,0.43152588511028,0.581478066119811,0.573902694903224,0.331555506197322,0.57826246016497,0.437355387571599,0.768257301317768,0.607506124728831,0.413793102618114,0.612366487795828,0.413793102618114,0.397953148975925,0.536144004563004,0.623449390543112,0.325305020413646,0.577404410603833,0.758620689072293,0.546929629982384,0.808344616422751,0.330843539797555,0.578887461618416,0.275862068241334,0.187511440215177,0.187458290473985,0.233046157642311,0.586206896357431,0.657435292384993,0.482758619294277,0.68965517239613,0.596968899897271,0.21061163354722,0.590906137266109,0.600303311879098,0.620689654695512,0.390103373434491,0.189508826974322,0.444506710296969,0.549649490974517,0.490644558091317,0.165111233308084,0.620689654695512,0.444513713470207,0.567178016637618,0.734078326620235,0.784037606077304,0.810768007357389,0.793103447410374,0.557872732549787,0.241379309903252,0.321309268540991,0.388263455627732,0.551724136994895,0.758620689072293,0.408607782478079,0.401066607563819,0.823417017770388,0.436140414873269,0.506251038477059,0.780874858918483,0.413793102618114,0.644376061572112,0.607698333969059,0.638531255804497,0.793103447410374,0.19815755230203,0.523422888921036,0.557059064420926,0.23502909549049,0.272985177787938,0.801962714597548,0.586206896357431,0.202552413337447,0.668811195361252,0.292513128875301,0.571025594436587,0.573529001440414,0.275862068241334,0.610025361608738,0.807921307587923,0.418341955606213,0.495919510858059,0.642389210306471,0.336783996864021,0.667761302290262,0.730168777499505,0.613066096196944,0.253299686036352,0.575443124608549,0.373695233579441,0.448275861980651,0.324918577610439,0.569294396898983,0.379310344280033,0.493107682506654,0.584347853003394,0.245717828996217,0.39528471151859,0.562644611403946,0.327586206772911,0.384282631086449,0.419042250392067,0.444483774802167,0.229498640615026,0.782045301638586,0.343319540278352,0.2530832648306,0.275862068241334,0.388798250759764,0.418218062136525,0.896551723449074,0.137931031815643,0.387944105395995,0.424191978922293,0.264440341400393,0.769539343025106,0.423086379070847,0.394106533140043,0.562448010325849,0.626114543598252,0.364980753618275,0.373432366664924,0.241379309903252,0.482758619294277,0.659703729403861,0.369244580733818,0.818004867963497,0.307450589032332,0.379310344280033,0.189212086460751,0.312852659228121,0.571433855054373,0.724137930734212,0.398568682417803,0.172413792202635,0.358480874550045,0.201118628355785,0.787091673945162,0.228922102021912,0.565577097996676,0.68965517239613,0.742942869749798,0.644454344263723,0.719714681030917,0.363406498463272,0.724137930734212,0.353426296360256,0.360101283444186,0.766790009491881,0.802216787591779,0.437814772583372,0.610222597848831,0.576129378216462,0.275862068241334,0.776593045449437,0.742207726083889,0.297081295910367,0.426913488262252,0.586206896357431,0.815819681217726,0.785195207256074,0.778401646696405,0.224275310127321,0.603753064157211,0.428756404648308,0.184200171692483,0.405138010303618,0.671677954980804,0.419522691024023,0.655172413033594,0.241379309903252,0.249680138565302,0.598657204535471,0.702921879899615,0.290792268086963,0.63616335241698,0.804602458099464,0.216295859093122,0.211669442580705,0.802378435295428,0.191893523225462,0.64353841095561,0.816785825106116,0.176468391834263,0.79967642337985,0.563863769000269,0.177533305462015,0.529006673841743,0.302468404967774,0.372093798613263,0.421445592745622,0.215150144663779,0.334963284512016,0.743088895541699,0.340405662907665,0.588833807538109,0.309087480380281,0.580774874175689,0.772500422152225,0.645493535879528,0.423870620759084,0.521063315375767,0.645892606113006,0.219982563676296,0.719231275626674,0.665314922589171,0.2618155149853,0.630999024380929,0.249870732240259,0.181827954325665,0.349611463211115,0.366129955291869,0.344827585941951,0.670394080523769,0.251807100420638,0.551583191474512,0.767733802849179,0.586206896357431,0.770657614358382,0.572418264972436,0.78766321729651,0.64782369937545,0.80569753577532,0.749685483146166,0.406525640521688,0.797447584613643,0.718059523653295,0.454015828114018,0.430484641511445,0.642601290897095,0.386446271498172,0.771074089055019,0.203065647793064,0.246913939432161,0.448275861980651,0.172413792202635,0.442696098045163,0.40799357160739,0.306571928464409,0.231433061306768,0.517241378656813,0.749653495568459,0.355054753371565,0.176740751347263,0.68965517239613,0.808252595791829,0.741270519971168,0.810877694711907,0.318698817276115,0.259086751480668,0.672194262800919,0.732973966359137,0.404879332384914,0.588952345157929,0.211705901903758,0.268935916590445,0.391678249409123,0.413793102618114,0.810708857384239,0.247450589851896,0.424012908315298,0.413793102618114,0.624613495985617,0.581359750806689,0.297953789260195,0.427804747575712,0.206896551565171,0.1878687618653,0.427270280269226,0.368224697018252,0.655172413033594,0.550722038839685,0.586206896357431,0.793103447410374,0.619162118778715,0.655172413033594,0.551724136994895,0.408272056335837,0.361766265343657,0.181022957182511,0.684430389231472,0.563321211573967,0.563108531677265,0.609837475567905,0.213332484162722,0.555206178040436,0.578107955984872,0.620689654695512,0.180741487192681,0.319434151490623,0.426886932344071,0.780312203737267,0.214451933619056,0.526324140910361,0.156055893661506,0.471343923286855,0.448275861980651,0.716838581456652,0.66147357859786,0.862068965110992,0.189231991618156,0.343813546741208,0.202495686199978,0.441986769616592,0.604742846316419,0.275862068241334,0.620689654695512,0.580825009970763,0.601558133821523,0.180771911452312,0.349787558801274,0.704663355792559,0.25748503683832,0.627271830269389,0.679750226745149,0.808436183220182,0.694484258857075,0.827586206772911,0.329600922185556,0.230719478317275,0.190468408205051,0.386455942351796,0.202552413337447,0.389028953890343,0.363387198758672,0.810401437953488,0.286797538620231,0.724137930734212,0.827586206772911,0.81107659261774,0.603513547641704,0.318880692840443,0.602733527731834,0.757219425409305,0.262939707667511,0.221775264359801,0.269974769111699,0.591544074510731,0.38438634586929,0.760033131586419,0.769832012355171,0.3215700353231,0.659930872553895,0.638501952298453,0.266419692632202,0.33966402112475,0.422595588371712,0.425812268979673,0.280098055796789,0.58169256852166,0.728543235062196,0.651503161062955,0.206896551565171,0.504404585672919,0.613602203655618,0.392499747446272,0.539991312930352,0.277899154674168,0.241379309903252,0.793103447410374,0.624312967038074,0.38546339006672,0.643348786414926,0.298942431201173,0.253075394968573,0.802938998539875,0.287456382939086,0.400359630259089,0.28820756751877,0.635266740327018,0.793103447410374,0.148893101139826,0.573342316060646,0.344827585941951,0.24673141026565,0.301882945421974,0.655172413033594,0.327586206772911,0.391330797356861,0.646211685888666,0.440813450227318,0.206684369553518,0.249856268986926,0.782145211596177,0.823367383958183,0.329790140017672,0.538433887519347,0.360984348143436,0.31430035937978,0.264901550966223,0.720184052428402,0.79310344638592,0.539873178945736,0.418130644381168,0.68206392622745,0.219652061229248,0.36016592654415,0.56779224082622,0.413793102618114,0.598605738998024,0.429716899692749,0.222328665640511,0.701392077888727,0.558689330619471,0.614241678606944,0.386830814962118,0.201420337475296,0.363286950730986,0.206896551565171,0.191183750183493,0.586206896357431,0.48850901335339,0.4113246838202,0.448275861980651,0.241379309903252,0.202000932909549,0.37447102453976,0.190896417238653,0.388161764143186,0.721653566296821,0.839503366117834,0.362140337854755,0.741118782843574,0.323432380495064,0.728230824487499,0.62111100272379,0.379310344280033,0.655172413033594,0.643891010893407,0.323020772983339,0.491873490011202,0.636988285451185,0.551724136994895,0.187829425873076,0.35559674324989,0.401133967518,0.449864691030108,0.530019084159303,0.758620689072293,0.603933523924959,0.551724136994895,0.575935489894762,0.455915272893305,0.620689654695512,0.379310344280033,0.348731271083216,0.823365479496648,0.266930439711484,0.635056296815217,0.551724136994895,0.3909507338339,0.541634708542037,0.751189388987785,0.787734739610678,0.360605135942442,0.275862068241334,0.785231724973052,0.409482758081968,0.793103447410374,0.586206896357431,0.441947920240413,0.344827585941951,0.457501301083249,0.570145290643112,0.409400519970246,0.523740575438124,0.727113248759055,0.655172413033594,0.22835337899472,0.297561047084221,0.409589182547842,0.726929503564657,0.599904594058082,0.482758619294277,0.603036853441072,0.363950649941294,0.814442521952505,0.234194051087083,0.413793102618114,0.647046673947057,0.211857168806584,0.742894896578877,0.413793102618114,0.594550876081503,0.413793102618114,0.266820922416468,0.801656495827862,0.602337574914412,0.251506707725587,0.436523349943127,0.806353022955687,0.742227550309363,0.245352768614285,0.474304213583753,0.577777079611809,0.268317379446996,0.190514707416775,0.315579032679628,0.768133797140917,0.596457597563469,0.618156429909315,0.77073389116743,0.68965517239613,0.283474080109479,0.571188097560022,0.626266848273824,0.349295691400111,0.275862068241334,0.22413612871816,0.24409727053167,0.685447783521794,0.628085016904478,0.370334784053578,0.251068923343969,0.720012963349012,0.409682920165065,0.75021977834424,0.417690670739571,0.408161313792841,0.440373195885097,0.594898585271927,0.224703330429926,0.379310344280033,0.607857766801359,0.727938030173944,0.595605378174787,0.195402297419871,0.317065481810892,0.67071661783449,0.235959634451158,0.797324488169816,0.744113955827536,0.455906458483922,0.551724136994895,0.273071844617903,0.574548929207538,0.436590502957432,0.758620689072293,0.21592552686662,0.394153587374979,0.797875118300203,0.223241230541134,0.629844125714008,0.321385912104869,0.188927264454707,0.268625737278374,0.385882808022092,0.509271897617049,0.807728729543955,0.40341889416186,0.328119073880947,0.700488200365089,0.591315287110689,0.779846160793534,0.333611522506561,0.275862068241334,0.810787912514795,0.357184064301834,0.237212733260554,0.646376233823948,0.633129619977558,0.68965517239613,0.298851968766052,0.184857937260399,0.232782091091184,0.711309674532441,0.581084518722337,0.502973909911675,0.586206896357431,0.344366356911479,0.45371857742194,0.456060723966044,0.218106536910037,0.333474535479652,0.535745600225167,0.202527051933601,0.775427769055057,0.811678436269684,0.405507467645693,0.187363654409874,0.379310344280033,0.432208051143408,0.611941062437316,0.815270464835009,0.55729305400261,0.427466310725982,0.586206896357431,0.219320597843566,0.374002628423276,0.422719437789842,0.579464657911532,0.206896551565171,0.609493758677965,0.807452696335924,0.612569041980961,0.31034482555496,0.235813384303649,0.783023704153508,0.637392400100261,0.224557357909677,0.371338647344465,0.349551781545907,0.758620689072293,0.409329922738792,0.563199167245253,0.564655493306607,0.202457384907135,0.709207183829702,0.383686269292316,0.606591351103588,0.438836632472311,0.45281884791592,0.628954542408655,0.201149424492521,0.574202307988147,0.377034749395246,0.321839079700261,0.575715419580895,0.42883906893324,0.616174819754599,0.422288683217288,0.666935723849512,0.232902349795124,0.586206896357431,0.263410639309707,0.431458457542079,0.430584102757819,0.227726266139863,0.355218220506998,0.671617269349859,0.241379309903252,0.580512453923479,0.418918167398235,0.575449255970725,0.258695716046445,0.193646974995404,0.446178624682295,0.81587776166003,0.180768850381271,0.213413440681448,0.698945059952275,0.586206896357431,0.618169930175105,0.196084328224961,0.81213256070589,0.364338590497466,0.603174262543371,0.784267411785449,0.571898894032369,0.581854249007864,0.265895859166883,0.741598028961195,0.838286260504542,0.307181548752991,0.814954085522289,0.362595811497975,0.662480456859321,0.647731786312286,0.197962858758832,0.395242679161246,0.806225599214645,0.647287993503071,0.620689654695512,0.368373073933994,0.677158987081758,0.827586206772911,0.715766673875755,0.542461436421109,0.19597377110829,0.796498129094483,0.42511718252219,0.3700170678273,0.559052490637687,0.266969470416167,0.236635514429431,0.80278785047381,0.594692519255627,0.253140430434738,0.580490720114196,0.789435133840363,0.182179310575295,0.763622900204382,0.493681882269384,0.735235473965514,0.466971402537982,0.553925030682166,0.784711781362735,0.598694464982203,0.632523690799739,0.230458836518655,0.331373116356668,0.605818586382846,0.678369032152341,0.425528300344505,0.57743955247797,0.189031191299699,0.4082723769902,0.539774177679582,0.351293922310038,0.486681435105094,0.397091294589538,0.356989867619229,0.82017605860734,0.430790104233464,0.321023121914848,0.673766356356224,0.413793102618114,0.370518084634578,0.624619866045769,0.339863872798033,0.438740019210372,0.369018985535036,0.595926027415251,0.19676958913614,0.396691128189388,0.284442233978251,0.546046434152915,0.403895732810624,0.758620689072293,0.771117977724521,0.83360508278348,0.354838451002574,0.340677058408667,0.421994673900301,0.577287436302088,0.758620689072293,0.443006757826551,0.241379309903252,0.80555129792127,0.185665892004656,0.567829864954417,0.741818867616187,0.366629161887457,0.330051961988259,0.423377005637975,0.456296150857859,0.793103447410374,0.305142650059557,0.822849289488838,0.301962747380103,0.20242894808988,0.798070361975646,0.42520163755417,0.586206896357431,0.499792413180501,0.409262819922774,0.586206896357431,0.434525726534916,0.161713737446548,0.586206896357431,0.190871411320634,0.363000556186773,0.75459075114186,0.317112192853458,0.26458491451534,0.724137930734212,0.340309373373454,0.615079230875782,0.614406848386309,0.241379309903252,0.275862068241334,0.811653424204936,0.418650168989459,0.803445814785963,0.614274487797427,0.772309740374153,0.862068965110992,0.767886678146093,0.570708143544112,0.582141158852858,0.236479568841382,0.442941540007425,0.574711774498887,0.413793102618114,0.166678951416797,0.457197412948308,0.266309774775347,0.765596447899562,0.655172413033594,0.614014195337905,0.212955068855505,0.729724291134369,0.638177597604857,0.435387132210086,0.586206896357431,0.373950492892368,0.229246983285292,0.368357722478321,0.212317238154185,0.71256726557628,0.26196847428751,0.788853060117786,0.607284343575392,0.698574631427019,0.611805393883777,0.625247938814804,0.429675309899892,0.409621767382717,0.613910129167056,0.379310344280033,0.607863968850918,0.81554122210065,0.245949097625864,0.763444930886333,0.586206896357431,0.224033475270526,0.582835777134482,0.625201782002302,0.435009809103804,0.80686526471457,0.793103447410374,0.613553727477373,0.774585453071245,0.767331193124253,0.699051271331544,0.607561268059128,0.421655735067703,0.732393872907752,0.764506154427776,0.576581943432411,0.804774590073875,0.793103447410374,0.361472828696922,0.802991035723119,0.297377110316769,0.211322577541063,0.394756963611354,0.563030723308242,0.605641280911529,0.206896551565171,0.616733045193118,0.539849257925385,0.250047653541013,0.472525894197194,0.624763357336413,0.494108127191764,0.801949945792509,0.268918745702988,0.661022974188461,0.351883841307726,0.512003974208612,0.620689654695512,0.241379309903252,0.413793102618114,0.383276583657858,0.302546999093655,0.701853369410945,0.810968807675847,0.30210649171109,0.751691871789928,0.663881180634612,0.345423750016302,0.426158030681459,0.782091958385047,0.676608079324111,0.17816091620192,0.42347741245616,0.396122596735249,0.210424027182557,0.267026032616409,0.241379309903252,0.280491224145974,0.339037831303699,0.199292099149238,0.306364017404955,0.172413792202635,0.172413792202635,0.418794430670137,0.220318399435206,0.230093486216006,0.600163728883642,0.574653245345366,0.68965517239613,0.434413431942848,0.598967718844272,0.200586483488406,0.612849904469075,0.711444377025072,0.393339247203748,0.627340074328091,0.782103449694909,0.398303814742997,0.211549753473652,0.568583534861527,0.804039137022606,0.289315239842343,0.35383901438102,0.776421558881571,0.679113904041344,0.250314515829379,0.698244938299288,0.545932302713331,0.241379309903252,0.43066867867547,0.60549852620391,0.424640425829813,0.261108791745369,0.763926387777484,0.754063414041012,0.764268339531746,0.609999739993363,0.68965517239613,0.333509762383541,0.698693178266932,0.581996366504576,0.351412738581572,0.67652178846907,0.694501959387681,0.638029999274788,0.787355720007192,0.793103447410374,0.258181131359358,0.453155110872495,0.616248654263326,0.569582641608624,0.199303261609099,0.655172413033594,0.517241378656813,0.603970189163434,0.576010214654738,0.63830351642175,0.56605107534309,0.172413792202635,0.225197493634371,0.197805909205047,0.721988875485946,0.275862068241334,0.807910749556414,0.810581441838836,0.355213236534235,0.521249026498989,0.507057121542336,0.528024427572288,0.384312345398881,0.511016669181191,0.183856412799895,0.608577164596484,0.590382347852348,0.546543841805816,0.608800469114259,0.172413792202635,0.172413792202635,0.600759382779486,0.52943631175853,0.385389990951298,0.234523792364191,0.45977813043611,0.344827585941951,0.219306221668894,0.387153054156483,0.612912396213889,0.193646223045556,0.820017899172397,0.690253095459429,0.539984984872849,0.356054138770377,0.38730683507147,0.22935301845833,0.398160317305625,0.397063721387707,0.768614923133156,0.574356981203292,0.560231374865613,0.396957117642236,0.321447427544228,0.284708566623469,0.256194228870975,0.298164356731031,0.440695762905009,0.76525989092445,0.785192663534724,0.44290923484872,0.42376863730491,0.426805729956185,0.423429563244274,0.787875315302867,0.287043112737167,0.334685076386375,0.436964291694541,0.2290878700829,0.36319142544008,0.428574067054851,0.517241378656813,0.431065290217349,0.448275861980651,0.413793102618114,0.525864535640799,0.636169174393797,0.827586206772911,0.586206896357431,0.212581660191139,0.581931300304766,0.225029080431004,0.614516539838646,0.517241378656813,0.592451268194664,0.331637380627578,0.325793107576476,0.647278432266115,0.103448275526472,0.631376084202319,0.796719021021127,0.57240691503734,0.558821657401343,0.467662549966632,0.586206896357431,0.60183968166992,0.633701733950248,0.774239139188304,0.556049863720359,0.514068140056048,0.724137930734212,0.413793102618114,0.426773394063835,0.598933390387272,0.616893322176201,0.819521193271057,0.724137930734212,0.517241378656813,0.545151695790842,0.405374838649644,0.398557037439716,0.716686275756626,0.538623991504893,0.802038653336501,0.304239223296046,0.637532431806934,0.8127540042277,0.363522744377631,0.514704011999726,0.172972941699413,0.780619630339201,0.718821419932713,0.655172413033594,0.677913936532954,0.807780917322059,0.334127903062969,0.541830694947234,0.315179908150043,0.398536691766732,0.784878192781357,0.478089748349124,0.357814461558885,0.647961430156568,0.594492530305397,0.448855102061159,0.186373815905651,0.55488801924967,0.827586206772911,0.177055368597671,0.707069561497373,0.413793102618114,0.480633961437861,0.466526093535615,0.420820641490464,0.736989077354771,0.440547011038798,0.465936366110981,0.459145971116746,0.434622572348102,0.801791722841367,0.387114178144479,0.354857082762622,0.769894566591731,0.577528949480065,0.809488351605356,0.574220333270934,0.490421793461239,0.813939664199892,0.199858332751187,0.187911004235885,0.361832350876026,0.344827585941951,0.185631376072421,0.417416997875475,0.440871771416508,0.782927418717116,0.265974480953044,0.219125140057062,0.183139767714906,0.209641999341214,0.72775021584495,0.392099054476339,0.423244611242083,0.229885056782407,0.631104909983561,0.178234084815005,0.401394258953067,0.183207808931552,0.379310344280033,0.686834875901076,0.379310344280033,0.737203886068616,0.331744049938157,0.577084403696549,0.638167648099519,0.448275861980651,0.765598016339911,0.397311193819448,0.41810105812559,0.662993218016804,0.432898777521121,0.482758619294277,0.407496758138292,0.555418335465173,0.612872138212316,0.80165270329607,0.620689654695512,0.275862068241334,0.426521200944224,0.565301629263257,0.764632658208378,0.575753976987446,0.275862068241334,0.567194112871954,0.385776823047341,0.402461215343756,0.594625159301446,0.76952609784857,0.413793102618114,0.706453465629791,0.271604692117874,0.359079479900263,0.438908115857195,0.75133538404604,0.771646632274284,0.387999279459938,0.57030970847263,0.776373484289621,0.780417850641923,0.541262296672223,0.198050052158581,0.374717721459193,0.726262877486891,0.596213655403083,0.715655906745844,0.194281396311039,0.563213787240175,0.601279411419555,0.720052566723947,0.337217767431604,0.421246761429353,0.68965517239613,0.317209341905275,0.452787100060645,0.403920635258705,0.702615573026813,0.334296175916024,0.56326628030582,0.275862068241334,0.665070744804173,0.586206896357431,0.711842522175836,0.454386201318713,0.620689654695512,0.599104319651708,0.440876986916062,0.701537073079066,0.727816750088536,0.624164302250523,0.517241378656813,0.827586206772911,0.306231828924484,0.444333254726914,0.745412231046159,0.62338966994862,0.241379309903252,0.357190063509336,0.599201518901812,0.176713291859919,0.494304837886528,0.420535440436132,0.197961344614589,0.741654820639319,0.184126464216156,0.603543224049307,0.231911191793076,0.698530894376832,0.413793102618114,0.361302292823142,0.629230744651734,0.509033740553105,0.627760688846708,0.598219263412263,0.172413792202635,0.192984068713136,0.714620209545475,0.377365027486687,0.793103447410374,0.160842133323515,0.561038360475598,0.448275861980651,0.805875385232154,0.224690895597163,0.699663025559544,0.15613775067603,0.758620689072293,0.230615358874775,0.404379161777328,0.176648164192818,0.724137930734212,0.758620689072293,0.577531810782414,0.650482721068415,0.502629106075158,0.579257460897097,0.578342157628706,0.353856562267855,0.224986170115868,0.803340076704826,0.18076566227783,0.581325702025858,0.439255828120984,0.613059057167786,0.731297442951517,0.532364603208718,0.421004699143586,0.788679281844459,0.72838782423957,0.586206896357431,0.525502023078038,0.590850031972723,0.727224830330559,0.362952445738905,0.180634775879453,0.573372179943484,0.588591794426173,0.310344826579415,0.167126977273381,0.607366413676521,0.862068965110992,0.629025740995096,0.634250198383117,0.408377447126785,0.421004130571153,0.724137930734212,0.188091611525129,0.399791224812894,0.386083747666407,0.379310344280033,0.366195718120966,0.566106588501582,0.310344826579415,0.322977754075991,0.531744514016197,0.176528797789038,0.543100013950002,0.544485202892204,0.551724136994895,0.448275861980651,0.210931565669302,0.421893505912175,0.655172413033594,0.546553518806168,0.810786432177561,0.607416933642157,0.809999324064701,0.409126558209887,0.649217084980772,0.36991761375211,0.666506272383506,0.379310344280033,0.818890267395312,0.535133323525203,0.25756354388554,0.422770660531494,0.344827585941951,0.344827585941951,0.566203261181901,0.746661613133421,0.582233916066805,0.511084421501574,0.172413792202635,0.827586206772911,0.590517240893577,0.283962755309383,0.611864162759729,0.599608490755417,0.681473844341444,0.715291432352077,0.616176647382022,0.419571981643859,0.677983717273906,0.281677120767233,0.774788265418995,0.652155793087702,0.408707408661682,0.426924586181459,0.800253582792593,0.529123895037103,0.574692152091015,0.602526377842321,0.74115062187533,0.402066321812632,0.174809359968462,0.482758619294277,0.229688561223157,0.310344826579415,0.285082918810735,0.433833043448472,0.200664240634688,0.528348328432393,0.596058229213635,0.682358200878239,0.58157237128501,0.366986967080261,0.502544710461558,0.275862068241334,0.180522991465892,0.225734237279495,0.590968976301112,0.281523911498044,0.578048456672624,0.470413036011544,0.310344826579415,0.554673309907944,0.379310344280033,0.292799502930417,0.61371354960251,0.355856544995547,0.301773498814342,0.781990955334148,0.766448522840113,0.405192815563821,0.608033495636688,0.715710645416482,0.362713891186485,0.586206896357431,0.267819809930231,0.461933149035958,0.793103447410374,0.54588021738071,0.612742532382479,0.325937655080052,0.215048943893098,0.258798662488161,0.482758619294277,0.261783968947627,0.252194469331014,0.607014495001188,0.617126763674549,0.210723219216544,0.50105309705348,0.36300244835485,0.590423763487883,0.669816663972863,0.298574816853343,0.535616024104521,0.195397539851626,0.793103447410374,0.134811581191431,0.563616338571176,0.641807430602431,0.553255448027752,0.505236090584878,0.597197235512731,0.206896551565171,0.637843145884427,0.206896551565171,0.529607350639633,0.827586206772911,0.286518802900351,0.563634949842128,0.763953996835234,0.787379655369911,0.795734557831413,0.611659984813686,0.655172413033594,0.357350496209553,0.204851057431522,0.22511294742591,0.426553078905263,0.636612800216873,0.257057129225747,0.785004554162738,0.363980864187685,0.340045756557999,0.427521205113755,0.568109545221654,0.241379309903252,0.591088006683707,0.227160248697885,0.658584626213261,0.535610391651849,0.666183414418421,0.780707264254528,0.185698124427067,0.421284785094936,0.440443325965147,0.420758770565278,0.750147796049852,0.206896551565171,0.68965517239613,0.44403646913733,0.817754855908225,0.396238960461914,0.398237143222464,0.295776270558849,0.470481730830373,0.787414275796539,0.245096866968178,0.339562305053288,0.738216030027919,0.241379309903252,0.598606143657683,0.53891944018092,0.287136924115137,0.420574816382094,0.607885967994003,0.172413792202635,0.806938355469088,0.391256804057636,0.219237016671558,0.812375339085586,0.758620689072293,0.482758619294277,0.581739933166411,0.26432145136811,0.742535727836691,0.665259242444541,0.459905730383383,0.517241378656813,0.615263343849465,0.425506952754694,0.153563737220656,0.389170475154343,0.724137930734212,0.620689654695512,0.548932714759309,0.216670648722603,0.799106575501251,0.328673899153875,0.494731980231341,0.404712259168469,0.68075931578014,0.425838042214362,0.422924591016886,0.655172413033594,0.241379309903252,0.827586206772911,0.226286601811914,0.570837759618496,0.433585977725299,0.633500972561074,0.425779665704611,0.18856061104551,0.706834704202446,0.577122432484406,0.475873123133437,0.7496904927303,0.773208059205867,0.206896551565171,0.699403690965291,0.572858069578985,0.435634869975629,0.705206399834907,0.422609847758533,0.465914750114004,0.564435944440249,0.661703163023762,0.36161368611419,0.220425871918375,0.398843925771158,0.229627969842058,0.763863603038586,0.803203429796922,0.437985211133943,0.420185576817194,0.788446178416206,0.206896551565171,0.283753794183725,0.590517240893577,0.722762941264327,0.646744885944524,0.355378822242263,0.606975871005073,0.68965517239613,0.196084102844898,0.695531199449237,0.609632352050052,0.763617805590497,0.711721599625164,0.213934576757191,0.599381846514886,0.707020552602616,0.551724136994895,0.78559156575761,0.402542562179773,0.259235544325072,0.340992315943346,0.226094932459383,0.212097311263995,0.713773146237967,0.413793102618114,0.402808447138228,0.565098095699305,0.571478773300982,0.41932858142008,0.297669502019574,0.379310344280033,0.179982098778693,0.564242045874002,0.48872952315838,0.582031385444134,0.339268050891597,0.770114942193138,0.773315113711464,0.634964426779155,0.249133892077146,0.185422140392868,0.19043927066069,0.629982931148245,0.572722420490088,0.511582159028931,0.448275861980651,0.787893514742976,0.637527588184483,0.43131402170408,0.551724136994895,0.544562891400012,0.579067063917468,0.397069409160939,0.627667981831048,0.784429579912154,0.399273381334984,0.602526446480794,0.375305873272294,0.545987349744874,0.278473845150763,0.793103447410374,0.40879209214709,0.779693336719361,0.361803725559082,0.408944761528582,0.379310344280033,0.655172413033594,0.655172413033594,0.754569694497222,0.60445832857346,0.427982958665102,0.793103447410374,0.767097649180421,0.40780300251935,0.383968273023114,0.294826592732991,0.450981441047957,0.570944961645589,0.413793102618114,0.639661599313525,0.197417533255571,0.241379309903252,0.355708500003171,0.379310344280033,0.482758619294277,0.775177821540439,0.696058298876563,0.796140026809778,0.391191956066705,0.793103447410374,0.788600450045057,0.719469549478469,0.477614856164544,0.427108632565577,0.639042190359013,0.620689654695512,0.413793102618114,0.224766100826455,0.561076000995073,0.256202723650451,0.527627029249097,0.598962406021508,0.602292099364374,0.211411039215895,0.577776307172865,0.287810885289508,0.241379309903252,0.576231361670635,0.572734123862101,0.638102058403289,0.423163537935506,0.813839810587317,0.292853175143575,0.213494982163883,0.413793101593659,0.7018084224796,0.809870507065086,0.775860267249737,0.68965517239613,0.70829878641134,0.817086093842132,0.197421468186585,0.408766754305704,0.599569672112884,0.172413792202635,0.596562840832922,0.500850598188909,0.678057098973596,0.206896551565171,0.328376094231732,0.551724136994895,0.417766678116998,0.223639367496259,0.582822944813243,0.427645734769894,0.862068965110992,0.379310344280033,0.53275242083031,0.257284124854285,0.797948839094442,0.638642605849209,0.425288224476658,0.793103447410374,0.361341045900566,0.403359333382323,0.818748099700313,0.301249174635158,0.427703807016559,0.404161824708955,0.551724136994895,0.49832825106413,0.379310344280033,0.354200631570258,0.241379309903252,0.668528121075153,0.454766865172206,0.594848558069066,0.436694592690742,0.749943944904901,0.807381475211477,0.282732453693387,0.214447702620595,0.353422673887967,0.396656784365565,0.655172413033594,0.301157138637413,0.403422462338044,0.325759014744087,0.387513259646961,0.777494032985991,0.565971903424684,0.452510089522703,0.418339928210098,0.37549187124287,0.797235654617879,0.390000258982182,0.257917101688606,0.626635329310443,0.626486874536133,0.249769749678457,0.202583251476831,0.586206896357431,0.324463583412081,0.358592170298651,0.699902187613679,0.680711503448628,0.632051416097257,0.850366595015271,0.517241378656813,0.224265820602203,0.793103447410374,0.642867690131876,0.372980923227017,0.323131777786773,0.768422562273613,0.813172245084469,0.31549953191122,0.391438221690653,0.577865848623091,0.310884727594335,0.638701803971736,0.254449102845461,0.806134365365034,0.736198650008253,0.615170165584581,0.574932290450607,0.827586206772911,0.603959922077097,0.421482532537992,0.178158540491162,0.477045830923175,0.751656235104107,0.560407007402188,0.417649206954659,0.338885386277815,0.758620689072293,0.379310344280033,0.812031721567765,0.180720254341811,0.223403737762388,0.798477713901995,0.5550235269638,0.334453190010463,0.547955903222743,0.742103506244815,0.665872466765225,0.193006701993762,0.662237326067162,0.557633563324468,0.27795460636537,0.576055042749322,0.357610788669075,0.570978475660997,0.754499543928075,0.731515704078149,0.25306071760418,0.533473904415475,0.707646547777249,0.75257490063326,0.793103447410374,0.199038206459059,0.269631166960701,0.678429963652445,0.672413792202635,0.642443583246734,0.807868852427107,0.221024512100056,0.236210810287121,0.586206896357431,0.517241378656813,0.304038204768708,0.787783529272101,0.770641790629031,0.761563421237807,0.655172413033594,0.241379309903252,0.798550434828317,0.462381272215751,0.434749902863754,0.767039555420205,0.615166690633787,0.275862068241334,0.396142368713526,0.568081979191007,0.544092780346137,0.428032271822945,0.379310344280033,0.403010283180522,0.508126517159982,0.366396534830701,0.555936481157259,0.444998270361683,0.838023318804822,0.724137930734212,0.385098227239305,0.218270936299368,0.677790695640995,0.797699500105995,0.540140469456222,0.321893904425105,0.392981504502689,0.442483533911857,0.509437115545792,0.409446750543496,0.601713880665334,0.565858203280585,0.586206896357431,0.299086477746336,0.4095083284746,0.30665690084608,0.735632183855057,0.354732738532808,0.605270324792033,0.605667251866001,0.55808841205024,0.254250089176232,0.604498811955097,0.207908142318864,0.249932817276505,0.369562578685174,0.435079498668275,0.63278426293543,0.793103447410374,0.586206896357431,0.681544049206697,0.702451506585303,0.206896551565171,0.634858612888361,0.482758619294277,0.577099343321379,0.466810225059102,0.286862473689823,0.351941438207348,0.379310344280033,0.224762578750739,0.430100664571021,0.440723496946249,0.219871371397629,0.609535596388891,0.413793102618114,0.379310344280033,0.662597016256859,0.655172413033594,0.203664454960883,0.698739380155447,0.258333229095054,0.413793102618114,0.288407585153736,0.187164464534414,0.569884374290597,0.562288506806165,0.206896551565171,0.206896551565171,0.423628299286243,0.332724052651528,0.403189103820537,0.360196893764843,0.310344826579415,0.389001338685864,0.441097540772611,0.474868480232422,0.225601102202759,0.807296372724042,0.604332876907972,0.206896551565171,0.419475201395783,0.833050285170833,0.803319798645861,0.236622923879533,0.741666769880491,0.249964803829756,0.562580114801023,0.384502293667293,0.311735877452172,0.557652611013178,0.241379309903252,0.293103447410374,0.670933847335106,0.720243516909185,0.807207151928178,0.280713303415769,0.678210267264592,0.68965517239613,0.663058296510073,0.507540793304835,0.816663628133632,0.758620689072293,0.811973414720943,0.793103447410374,0.591251222827706,0.198878591273798,0.801255505766026,0.253240605726131,0.437398761964775,0.781871261104822,0.364940683091935,0.402624645598815,0.220325127030094,0.68965517239613,0.172413792202635,0.520379597293567,0.423195251983772,0.620689654695512,0.354666475769753,0.576913619904698,0.671305767466599,0.419521346939282,0.548801208565758,0.344827585941951,0.517241378656813,0.482758619294277,0.709744446873427,0.746852448579718,0.623187587012712,0.663634040126236,0.711926331801271,0.551724136994895,0.698750824340387,0.517241378656813,0.155266695660787,0.336828743002218,0.241379309903252,0.39908793042329,0.358703644302398,0.595330099989968,0.74555043102759,0.562896064867169,0.647028513436232,0.426360666822978,0.724137930734212,0.770545784868808,0.33897505885826,0.581219129014033,0.763817967673594,0.384854005402749,0.275862068241334,0.366984319888972,0.291700963621681,0.239988046968345,0.596066965764451,0.730096238926143,0.241379309903252,0.409819654151629,0.197173518358891,0.33077752085475,0.691252447051231,0.600786056509974,0.505268016695295,0.633892154492337,0.258660353914518,0.822228486251299,0.766804107014839,0.4027146552249,0.330604859237191,0.482758619294277,0.29070095330542,0.19402492199468,0.817737221967184,0.754426233940223,0.421737538810575,0.363377562736513,0.228966133090636,0.269170708320263,0.422981618319621,0.73981253326853,0.620689654695512,0.423944956226223,0.206896551565171,0.413793102618114,0.338997631696051,0.781092165253211,0.189418556112255,0.634154780659969,0.413793102618114,0.59161614593269,0.751663748455852,0.216837471972068,0.293012052721355,0.178015867739931,0.800223022280469,0.177419744643774,0.404475181879918,0.379310344280033,0.574818012513982,0.514560671303943,0.813656894176879,0.750952690747522,0.562611789920006,0.39401182024182,0.655172413033594,0.253144920620271,0.803216672924549,0.788600450045057,0.623819817019459,0.241379309903252,0.561145271557519,0.800303630484551,0.439338181996102,0.467025864605816,0.606968122028716,0.775574608264095,0.185670961007169,0.707327852172151,0.306859943696167,0.356019014311972,0.777759699735567,0.360612521237333,0.805687801405497,0.807555098792124,0.833579700890537,0.452811217776324,0.793103447410374,0.572923441066335,0.611302472614965,0.275862067216879,0.496821890628731,0.379310344280033,0.758620689072293,0.769917072839958,0.590613418762212,0.567884332144525,0.457531953796309,0.333079270071424,0.387090139311822,0.287520553765372,0.631077133939673,0.591519825664833,0.219908800879408,0.422912176673219,0.227191066348172,0.656235040078159,0.8330544751911,0.223765458421563,0.490583125632799,0.637556008610461,0.321935805652231,0.430093386843888,0.648372387139474,0.43529780487092,0.597954579114872,0.750035195145789,0.341450368139381,0.320076781762835,0.492504372859844,0.438921043452733,0.220093412762595,0.672836972980608,0.599037509829772,0.517241378656813,0.776840552712642,0.635777484332935,0.633881674319396,0.417649205930204,0.260836805133928,0.120437801694905,0.15885060951938,0.28891147760573,0.315237688427081,0.512391085980824,0.385317286416252,0.496634861032139,0.67532108540211,0.607110241574338,0.210390579756713,0.212533534376448,0.624833159590916,0.319047884893648,0.251111970936053,0.827586206772911,0.358776170582302,0.17612395782594,0.282080474246368,0.604683735272553,0.537051049700986,0.759834957970153,0.744316301023882,0.316729497506031,0.498922178753579,0.76441774704905,0.768239681719094,0.582079951774403,0.610734256692915,0.500574781140848,0.709188745691617,0.341533320296121,0.365221195216497,0.610626998320806,0.763272240584039,0.759747724616665,0.800342337461507,0.632498930750879,0.811366241854957,0.819760898286254,0.59364312919196,0.807850505465502,0.395372474515226,0.698810772363852,0.7803189620658,0.585649867482157,0.191731017028662,0.607227507845711,0.236057844838181,0.547806081825687,0.227058188409599,0.658979251337218,0.811449437831947,0.145380231174994,0.576992807189927,0.789990683402857,0.727956412991468,0.787352887389579,0.795790580143957,0.621822526559068,0.569522498938742,0.598213405579527,0.650157970935253,0.33685818378521,0.254545633126558,0.470900467523281,0.328785977585973,0.359072016746804,0.630584476683833,0.180469205538248,0.213554794959309,0.228583648780904,0.778734129414646,0.160728180139072,0.833012556548242,0.647297737092988,0.447224511110433,0.372651680859413,0.33138249011839,0.568725337850606,0.171939461419302,0.208630138131445,0.418908577476543,0.601169257938088,0.621001302051359,0.55863221316471,0.790475866236236,0.456623180403023,0.320317092230839,0.649506009928422,0.394998916280455,0.371471034569173,0.31419451885316,0.584112336984009,0.415917955120949,0.827586206772911,0.208927666450783,0.577687241069681,0.452521923000479,0.576155877789628,0.0453260334165078,0.36164295069095,0.579755279356386,0.651015464217417,0.43822000696158,0.41918377882725,0.408200720472448,0.452026784515033,0.591616552641258,0.628021914584583,0.340742128706297,0.216668750407797,0.805780283041094,0.176577639697658,0.790033364240111,0.22991525668643,0.558755857691873,0.275862068241334,0.645002261637712,0.87789874591669,0.791525454019686,0.314361098282376,0.335786019066149,0.71764444426414,0.381754574674884,0.20967571005195,0.34957771664446,0.382883142803687,0.617482071246469,0.598865981259258,0.659082814500744,0.286721805796699,0.745647524758845,0.227594208789611,0.537713071878732,0.418517863721138,0.767137057908938,0.738131203118834,0.793103447410374,0.413985632512705,0.833265396098854,0.154634894900615,0.23092517655429,0.444950303337491,0.774628666625012,0.215506061786326,0.428161340838449,0.371043443513143,0.795315071237567,0.175048178830229,0.275862068241334,0.657343034080549,0.206896551565171,0.437335448607184,0.568238254653512,0.226962014638783,0.631434607209111,0.827586206772911,0.793103447410374,0.364296549944483,0.561988214507688,0.790229583196556,0.746304655164764,0.890441464018488,0.385656491607108,0.270149263478955,0.464032136103168,0.554546908572826,0.329977216739186,0.256054996239073,0.209703216664217,0.175172162451942,0.224427468305852,0.529605641848972,0.434484249432091,0.527467487824585,0.755708271549743,0.310658221655207,0.640877159024474,0.0422340822333788,0.72711708431795,0.270892106947389,0.231125547626173,0.222844818767947,0.48468174229812,0.399103210167124,0.36756151003536,0.333192459012561,0.644476741919738,0.694596803416123,0.230065827984424,0.196701427033824,0.193931759096619,0.461663619067207,0.819334264071038,0.589282331279742,0.438684784703595,0.810595093723941,0.607543261216528,0.613449156250292,0.359517808267398,0.763393167232529,0.694942352031304,0.588615823014282,0.535530593791539,0.728429803325264,0.185695608365997,0.271913146248006,0.365588132399682,0.57785100632147,0.809165195523915,0.602155667591985,0.370264560748138,0.296853079131668,0.676349645225657,0.563686039404651,0.602904935416677,0.41801804450156,0.59380164206382,0.736844664054778,0.578891202927466,0.25420613903944,0.685414205990186,0.720060206083637,0.386518403362966,0.590682659615467,0.62063760931663,0.53151035642392,0.214392626904317,0.796191535374328,0.753232180609584,0.115685271719178,0.0647264634396196,0.750667137280728,0.323065122657516,0.630977687035666,0.624541171523315,0.601371095004837,0.423157282614296,0.71614775775573,0.210029654074488,0.332098899578768,0.762109352193875,0.68125792306965,0.271495573335789,0.61652807124567,0.201206315542763,0.706092215195384,0.279668073663179,0.758620689072293,0.806413751613734,0.870600672085398,0.823734689945108,0.160810157014812,0.705451123654331,0.5652892169685,0.683973138159116,0.475420475961101,0.319565514260498,0.69327533249117,0.232729117556223,0.478228221859996,0.789130205883766,0.709789455272061,0.37416814139501,0.452507378815215,0.267290112485448,0.402210453387546,0.770827658493843,0.577294947604924,0.588957574999852,0.581783657923139,0.280472493013807,0.613458017784597,0.215047402088575,0.247915264123972,0.324465095507414,0.448666280693064,0.718190643627374,0.216681253879034,0.553725237402809,0.615337778688723,0.608287748934969,0.54482940639819,0.778590066478206,0.258812028550368,0.799918915936648,0.599894585134363,0.213005739416001,0.304996656025757,0.648752802050442,0.436682777653153,0.452731589975517,0.218370948702442,0.803751362537734,0.555632834793658,0.709849913474033,0.462364187382501,0.808194459004509,0.806412478216377,0.318118082516005,0.591453361084176,0.535332022686798,0.715023602978348,0.373837586700765,0.561588240705047,0.185603013015914,0.393432508449473,0.761394764214191,0.187507121113601,0.427691795283642,0.767196082898598,0.54070167913167,0.783293112212134,0.239007412166342,0.795562334680522,0.400607037125721,0.790225576553704,0.313890648133951,0.486670871951311,0.637131140555377,0.487566785363077,0.525682694907936,0.463699758903775,0.341135328813582,0.184288837233827,0.577121065861658,0.172413792202635,0.285457723807039,0.610389440562939,0.620689653671058,0.202887570907257,0.609160844664239,0.637701001751889,0.840555874622013,0.172413792202635,0.418825995147998,0.202967379012115,0.206896551565171,0.226115400042492,0.677698746721911,0.780896503600196,0.489465403407314,0.661410593065816,0.832132696343709,0.473898879833425,0.620689654695512,0.684152856221565,0.219586751209187,0.68337470901513,0.46281362391339,0.265662103160901,0.169663522317692,0.32525648891484,0.198722555533724,0.762640657008291,0.273230126987426,0.604219437999855,0.775951485732525,0.705338596511016,0.694093032874254,0.374220562748816,0.784664101185896,0.39918002481496,0.409538157525974,0.435817966690118,0.790080067087039,0.321870780430614,0.862068965110992,0.28222461811474,0.406136615067848,0.572429318840084,0.730542585701256,0.159261547037644,0.408298885783459,0.355265024774955,0.85439416850395,0.376537343791255,0.611086889413266,0.61534469683221,0.708474608472059,0.767620022797603,0.383678262153341,0.224952046549834,0.419992377953597,0.6032016974438,0.293262893560587,0.555701124952828,0.283514213127563,0.625465154997506,0.668618411401863,0.247282210455539,0.564000359563157,0.601071370254337,0.572728286518462,0.684483924167681,0.366627415191967,0.257215330663338,0.608216654842921,0.471536768713535,0.164548086388547,0.379310344280033,0.802447919968933,0.413793102618114,0.414323339950595,0.413793102618114,0.409248311593429,0.4729425850538,0.577185795015829,0.706372763175865,0.288447712025091,0.782990392980157,0.533560226004161,0.664651808342572,0.457678078960328,0.26970320047783,0.296635780992579,0.532696331928201,0.308602384625564,0.834843473494838,0.82676569835913,0.426817608509974,0.41958378848581,0.456780580716935,0.804587123035069,0.609785684253821,0.784923515687625,0.425659610867183,0.206896551565171,0.580731757945131,0.530802785959842,0.491093281601643,0.233716097831462,0.532284817641866,0.703278388132601,0.495422087838335,0.637696237012461,0.754302088454647,0.219481423934439,0.575998102525247,0.351779163537341,0.787355720007192,0.229683599788401,0.780970161902691,0.372582109107247,0.586206896357431,0.761818229790608,0.203425994658308,0.862478975497632,0.739781733033975,0.547172042631704,0.788056467602082,0.382386867173376,0.574163150251064,0.352068138683278,0.555276821372357,0.42269453943958,0.618721983273255,0.766279649656527,0.257978119242916,0.547184623961509,0.180650341446186,0.367299764898885,0.440724032736126,0.564887410416163,0.790059114936794,0.659932083459508,0.351059387718383,0.165080335750319,0.474278270289561,0.252999322026036,0.601438376075996,0.349959329143129,0.843055272934079,0.344206077879487,0.808957727028949,0.418849518679874,0.624168874392443,0.476579928329755,0.445395660489235,0.780886888067133,0.522330086559365,0.766029118202654,0.533127586434714,0.817641422122383,0.436223717393562,0.367117067721781,0.622726505503735,0.423089640935035,0.734559760973379,0.812421979440769,0.820511165978863,0.722752265420512,0.775316314515952,0.237462196208036,0.223302501135787,0.190313659180248,0.33465025311769,0.622069522619312,0.710295230672038,0.184877491029797,0.569067660457518,0.562351217784315,0.568313232453832,0.181198054953663,0.782070293214238,0.171318477877712,0.790502705928406,0.778981539354642,0.299783902009748,0.677763967614401,0.488246871752894,0.766359576598145,0.289826136492031,0.541853966463221,0.672709637342682,0.538505815517628,0.439687853017531,0.676501402842348,0.805046339011794,0.393176544311621,0.773935526631713,0.634336241320089,0.206896551565171,0.793103447410374,0.215742308242007,0.393625165376463,0.695941584786346,0.559427613214988,0.297138894858899,0.665988142058242,0.717838888864814,0.582057280588948,0.234922824692841,0.137931031815643,0.188832449111,0.39930350133153,0.404926257538541,0.606930904609087,0.383857441352548,0.644040965469592,0.623478251484668,0.443962746294181,0.778375365332119,0.754137091808149,0.451145844535107,0.56495451937891,0.448570443967889,0.221437429889513,0.446680905666837,0.233156770079543,0.125997802872209,0.589178152418861,0.693930589169199,0.72486862724169,0.19060609698352,0.443598452204464,0.732641973330306,0.175338610750938,0.431833570899287,0.809685964844828,0.76036769599688,0.580142540699004,0.610655561146006,0.340093609867705,0.539927847953446,0.513339246589075,0.196163220467198,0.287331854307402,0.193507551814902,0.635788612985787,0.540042082862968,0.607026153297188,0.553199126574396,0.696303427355647,0.839912169696681,0.617976498760261,0.336895494430229,0.370234714281033,0.742361344110557,0.251879410540573,0.201521934709998,0.374601681460256,0.325582640502213,0.298564903203924,0.372543391885742,0.827667803575907,0.833953766230451,0.733964681796697,0.64303412921078,0.78072486438856,0.393043119314167,0.766470002584597,0.70336131262906,0.599222306114829,0.605545265931213,0.567328857367233,0.390009235255429,0.583973164794942,0.245980483848583,0.847327228074267,0.746322707083377,0.346922549975033,0.791360736024902,0.392661762929207,0.356313613714942,0.326711767983354,0.684988722237748,0.838089035533452,0.561768390062981,0.58691231546636,0.376659192449096,0.752090871336023,0.584909661984918,0.604663503314055,0.422845840149416,0.200147058954599,0.15544516388834,0.831617872958647,0.594349969219742,0.586139736171942,0.616900216757227,0.591852219255503,0.25409474904099,0.449025915562199,0.654546422981235,0.658745023057559,0.296979298113826,0.211226439626167,0.828274533877405,0.45883428995389,0.209153795390533,0.182120737370216,0.752793830728898,0.181186063709842,0.741978025894592,0.370836028289829,0.390273151211695,0.797533080491734,0.293908299080942,0.192918019036686,0.376274994226429,0.646463151645347,0.572508777605844,0.347307571859385,0.358423892323323,0.421969041015924,0.208220580553841,0.348149582555657,0.413793102618114,0.819057280168922,0.392954077797899,0.302389777034884,0.557262841805129,0.382204285759669,0.226128562238187,0.404643505955714,0.548437916392868,0.788977939113023,0.522293515570735,0.590592321139381,0.635258280379007,0.591511770376481,0.681772696256426,0.707892960922693,0.220850460297289,0.401049106801906,0.625592790800699,0.809084718450051,0.754420233708266,0.417788622963977,0.652072080785476,0.408183026088572,0.502874712974648,0.505364142316733,0.463504211989701,0.167549490106804,0.198666508634264,0.425630003098054,0.292042140888089,0.532856506465801,0.750571145862873,0.366631762978278,0.91620519074258,0.684275458878163,0.329589189104353,0.522657672383504,0.459951603421896,0.562269577954216,0.545556543949579,0.607791256120234,0.208382820392384,0.623389518329305,0.829936659596802,0.168192950187431,0.398332894917888,0.183483316594254,0.349558120872414,0.542677947778886,0.736267105104651,0.438156405732181,0.803968888105796,0.184447902286842,0.21358712675384,0.634108640238744,0.814112755064026,0.384574829167291,0.195896965680548,0.69392665526264,0.780281928023586,0.700401366548987,0.540589601724026,0.405061875893792,0.767806146776123,0.169546371809716,0.180333028855112,0.286676823009436,0.223990384651339,0.285018354593793,0.308775213229261,0.386886208259395,0.16795627346072,0.831738628523181,0.721098726681526,0.168367970100015,0.0647849116612085,0.290675454624626,0.633657062597253,0.460116432057802,0.734771506567273,0.815739543238412,0.184059370620232,0.382453713875687,0.225733188237746,0.464002170799302,0.809084877240551,0.519031264138437,0.439385885735402,0.386315368708517,0.735385043346682,0.17278655853382,0.400401067408175,0.348575875627413,0.193226410675073,0.790443488341238,0.649774236790626,0.63014730390175,0.478776437350341,0.232266523951913,0.176663436765469,0.620689654695512,0.280659895511959,0.228351649714961,0.453620892580246,0.318269858572883,0.424331061983789,0.757122066344248,0.59985429332578,0.640562355323287,0.570710849129326,0.730887866933726,0.675339742773529,0.421395198787931,0.590394220259408,0.363266293623733,0.246248619534307,0.353262620236038,0.794800280635059,0.580945848516138,0.21299952199962,0.381886250927938,0.361996167350557,0.581923060614544,0.405275726742368,0.272918418164289,0.61137005385139,0.546992534582496,0.261997019696978,0.350354929548088,0.376145633241297,0.685344826835529,0.315615535029783,0.354005957491701,0.552773863079747,0.602275321867573,0.209742159265785,0.333291918210026,0.183017861687595,0.682990119450716,0.571652088520724,0.483657698271477,0.578068789027695,0.643743482226267,0.559297620141225,0.610273688435809,0.200705653196858,0.396956718104851,0.815541425967162,0.707316035085652,0.44479025993011,0.727231169657066,0.174916768935432,0.630302446317209,0.775866586087147,0.216845365396557,0.405377988848256,0.832358786354176,0.498250527724857,0.316877181890306,0.271840938573555,0.251327684243515,0.768295761401109,0.285320959086829,0.329733478445312,0.250612220354948,0.220850184718939,0.460428905124244,0.429578519407267,0.761721882886926,0.31501573721414,0.172413792202635,0.790891364627417,0.462023750796936,0.263210476202155,0.415997399544341,0.212437598279154,0.567998310940339,0.40010263244631,0.783839949810728,0.342519189037866,0.66541079619472,0.597740190427508,0.775992194494225,0.6906481897837,0.821356250039634,0.233905593290837,0.397513028837287,0.413793102618114,0.216211938826565,0.454773872443264,0.548499412367585,0.790419092998299,0.736719626269042,0.373976560145595,0.603484963302952,0.183756147356477,0.36350452752179,0.3857951710334,0.763401821826959,0.280485228011837,0.56734562564394,0.317950620006724,0.736385450126962,0.607144837414049,0.450392975751677,0.561541060462167,0.178524740066868,0.616877875446228,0.477924609303404,0.575583399111017,0.632657462062927,0.773806407417922,0.611422688291802,0.427456556891516,0.305886902153387,0.793103447410374,0.218475555785443,0.69834944601017,0.365867642607417,0.70390802626862,0.352534408031529,0.375171037600535,0.155574016743874,0.272243902759854,0.455356181790453,0.689655171371675,0.913265623118044,0.601348907362063,0.486749739606632,0.550102165807134,0.434008302059032,0.787886958232044,0.452799158918484,0.211933472251458,0.334698575627709,0.598988966037509,0.780451005073684,0.182764770121095,0.189479272476844,0.304775330754719,0.431500805431512,0.406678027153647,0.328148227816586,0.53323108813095,0.70197288948295,0.70388421998721,0.575666212966355,0.842175487514749,0.793103447410374,0.344850123948278,0.351082914323623,0.591333370787402,0.240108248302814,0.28361605315806,0.349759582988694,0.618537084542715,0.6235412236988,0.877498703475575,0.830757372901549,0.433618300299736,0.765707530561562,0.397416247564756,0.417765320714345,0.732828552166772,0.64482102943102,0.582636979625222,0.804026517787973,0.698118737757317,0.456110286066411,0.76667120039153,0.790874855537782,0.552758208385444,0.561636367544193,0.421774875066965,0.25703870543003,0.61893123636854,0.173140750474428,0.545895167250089,0.319468447165069,0.361981151916069,0.22481540373975,0.491010663417178,0.670962347668561,0.609404989666683,0.442840462171324,0.622394488912443,0.60530802063207,0.827586206772911,0.426330159582505,0.183172727500249,0.217597343928737,0.528186789320956,0.823391306002989,0.246346133292044,0.781143768067606,0.809611307698871,0.31562104762124,0.441346158544855,0.436457379149699,0.714323500790003,0.216587423036422,0.769477861392757,0.796810635967935,0.787676486035508,0.796346544610659,0.817847881529339,0.444635595935058,0.789091962984849,0.216873726404154,0.636092923196119,0.229290238841707,0.192475120576541,0.244055360084451,0.574247773293637,0.792401820833238,0.600740347384233,0.787614100833995,0.799329560389118,0.623794365463587,0.802359221645034,0.592314235067288,0.592656721586973,0.263972067194034,0.249234711750629,0.459408044078767,0.213303401938922,0.430373483039787,0.211724524443713,0.758620689072293,0.164475719923597,0.832970638929839,0.66059575603399,0.546527446430668,0.700216095941343,0.20472660563395,0.772240009831488,0.815512069189467,0.456660376309101,0.452521923000479,0.652339211481008,0.400907399087127,0.41753894283207,0.316119364990033,0.382878307376875,0.366268639840436,0.827586206772911,0.392164184192348,0.628874538632924,0.415947080371852,0.211305581835383,0.371264770833091,0.388360393641852,0.616769779070066,0.736839612467996,0.457531888231199,0.588746447152222,0.314612759709929,0.169601314346866,0.611846813617132,0.789579063597675,0.176193222241656,0.785861620247235,0.477720427259543,0.291535111555397,0.649397649242913,0.811452398506415,0.374708217591707,0.590378886219467,0.341306791818986,0.278518648658431,0.27929726096736,0.22107986646805,0.354327847346969,0.301057269658015,0.236536720103153,0.552613236757566,0.660266305702055,0.556782670604794,0.23116240853552,0.445891821380604,0.811706373152981,0.416442152267734,0.833157840634843,0.17814628391354,0.223441472531707,0.815971397856224,0.82322990007068,0.650430886727228,0.376502788929737,0.161773502092598,0.220078988438546,0.418710699927724,0.566177709229456,0.627779158742893,0.161371026571254,0.256215610267795,0.580838231584838,0.741484744745758,0.884468490755622,0.403792847836197,0.558474551614816,0.216710539969346,0.203345068873228,0.174441092018449,0.203094325357205,0.664936953051888,0.348355713112611,0.513415447588466,0.438124127209302,0.157419674571063,0.524324757488747,0.717550183150498,0.295661324677674,0.644492243970271,0.724137930734212,0.703236981717159,0.805619925126079,0.650922610704715,0.37833768588336,0.369762970246154,0.723715868660916,0.651849121508979,0.694472415134751,0.23860486288425,0.190806257017708,0.937046898610002,0.822972798787963,0.501325548767415,0.716013286789892,0.585436277869564,0.459514279020498,0.823407690109134,0.210041654538402,0.334590503838463,0.761563421237807,0.345920421086178,0.251764947177623,0.19937326260784,0.727936560081259,0.363229275972796,0.34416139115967,0.78589448066046,0.570088157821529,0.259060375866536,0.374598916456661,0.252766647844358,0.648023401478327,0.573607352770499,0.411994164029131,0.445916053835224,0.731025254522474,0.423883269702907,0.25928317123026,0.406068420182977,0.589954694304573,0.616627161639395,0.572423195673547,0.730155334603186,0.480424183821701,0.206896551565171,0.241361850119533,0.25871203663639,0.127156847507839,0.103448275526472,0.751680778992996,0.325767898816399,0.629137580729218,0.406767450791567,0.719790821587472,0.697139927509371,0.256828386901718,0.413793102618114,0.631418366526643,0.473415053378246,0.823178801288064,0.158834924091431,0.353080105411895,0.565678283400534,0.685599610801413,0.324829888506634,0.236447012691244,0.187995457218956,0.588918046410119,0.829894946869365,0.432546836307782,0.828493951613544,0.479700947394316,0.771205329914769,0.752642559728252,0.296995316489595,0.392656470595539,0.578978107430952,0.551724136994895,0.395528392442994,0.775925387745654,0.21439073883406,0.38298571327048,0.323119375736564,0.448469060844247,0.71982046931034,0.214035035822573,0.448377805481085,0.615793216476024,0.606546609063211,0.812313120870211,0.824053631419366,0.808203138185854,0.239001116891393,0.602607378412604,0.289361023753286,0.582292955398832,0.444289693882959,0.764548679547895,0.793103447410374,0.557512716583454,0.172413792202635,0.768111814389109,0.810268820226443,0.361603175207603,0.595422229213102,0.729006351138471,0.521791606463298,0.381692209962469,0.773071463520705,0.181449781946325,0.389156744386216,0.747850938605006,0.716941415208337,0.400264454307281,0.770931250342104,0.269353889040047,0.799339597997572,0.401280011750087,0.797838188752381,0.316728307089515,0.530938157421479,0.809091268814254,0.632984383015879,0.698448481083334,0.469512280001782,0.329069247542945,0.20062805586553,0.580258568404483,0.166739379909578,0.280659895511959,0.435082072098816,0.214129810188087,0.598713990066865,0.633706146277214,0.416932031202067,0.234776060269006,0.354586468920658,0.3846430322478,0.608253983928127,0.486590206377758,0.381796487171013,0.844612045767356,0.358199155617691,0.806341670971682,0.271710760073467,0.382596576151062,0.694746839948694,0.75478668939768,0.216134941825769,0.542353369754137,0.256127490760877,0.7724275629245,0.432307769527946,0.44092482793231,0.694852907904287,0.589830022249213,0.375324495812249,0.782305984415399,0.406239033915325,0.793103447410374,0.83888609110274,0.365471287179246,0.796635258520614,0.403420677737725,0.70863152319438,0.867016928286307,0.398896155551911,0.743568681547017,0.840496758455873,0.181889113254742,0.611456068103627,0.618176358629182,0.647894602918899,0.467206845821074,0.387889297062428,0.607021548372713,0.294350435346691,0.742770116955759,0.647226903212468,0.186324543726001,0.620821228503083,0.570134603530294,0.437211406591545,0.37344883784973,0.466009220216432,0.826774327342188,0.784148373207216,0.484293503625592,0.169727291557684,0.375616412168012,0.50035100332494,0.423151724946827,0.473358449175356,0.702289384559066,0.351042060089337,0.384753740983786,0.427831081187195,0.700771544082809,0.394896917459459,0.504626877004865,0.321950917385473,0.339881208622718,0.442039315953887,0.622875198976021,0.204226874517488,0.200118953036255,0.182681365155318,0.488138858357574,0.231688349304431,0.611351505072183,0.727372700141159,0.491051761471715,0.269694339967979,0.585260292920526,0.355476898425703,0.713111823762871,0.781251914642055,0.324119420884288,0.576900298918505,0.781637527636846,0.495317376260941,0.545658347099701,0.589883382003646,0.370480092727095,0.628421874044856,0.633052326909315,0.68094951606444,0.310931774658087,0.208619253298845,0.367041992598252,0.438918031555524,0.664691754909877,0.659688776461118,0.79780255206656,0.477997315887359,0.215863927421965,0.598901485790407,0.20183109673842,0.837033110472405,0.3254580739657,0.650222615059672,0.772973534858761,0.61225520638959,0.397408289599613,0.18776620266751,0.660465853112252,0.777736170056962,0.524438027361816,0.771462331825367,0.198620294452291,0.48268890104507,0.445431525628484,0.578737398450018,0.573796714026292,0.781450708053495,0.779815785707734,0.5764629837372,0.22255314725689,0.212475655751746,0.729385628904575,0.618180892866273,0.797724124926817,0.181914751261393,0.742533566236993,0.210491762087207,0.802688898381487,0.171357444041742,0.347298105896728,0.573256332542055,0.305524837277387,0.672089365797201,0.482758619294277,0.743574248434579,0.521371700867425,0.742885020834287,0.682893565607158,0.594967356924869,0.80200064913556,0.264812277923163,0.566444023434486,0.74160707694628,0.214884679731806,0.38362393838691,0.390942872167512,0.401853330481661,0.672808114087962,0.228842823560203,0.137931031815643,0.184206831673353,0.382696770907097,0.407057196327539,0.867891115059975,0.240299203610326,0.471221351363902,0.226072185464271,0.784204313563373,0.715343786091864,0.577414207465401,0.451539936942551,0.4425386762177,0.148968876990461,0.599268152517516,0.26491657049853,0.385639283839277,0.586158910893052,0.663057142973931,0.522632903114551,0.816726271497762,0.140961027043835,0.389992493614547,0.633865053564184,0.335709003625167,0.767681713418739,0.588863361011132,0.35791167822472,0.604984900406548,0.798126831974952,0.702048719629691,0.403535242521703,0.599649247666494,0.61749534920556,0.345602513286846,0.295491539729286,0.641939594495985,0.369814646821296,0.325920846849606,0.491136742049024,0.832278180199003,0.745833963244999,0.830919917003177,0.652585937085176,0.639313129977615,0.19292078404028,0.369305405690619,0.715683276081163,0.610945096668736,0.56236744514887,0.245713481209905,0.58645429195506,0.30738283671195,0.376426329767729,0.855223062080539,0.77077984616233,0.233057954239713,0.358745033302107,0.767074548748391,0.610232229773171,0.846946304009246,0.661069805092243,0.587752054946266,0.787547200860034,0.722692201633651,0.146947441154111,0.81463119067683,0.676562647825631,0.157225366222882,0.222559941441342,0.41798160054533,0.650861615688411,0.391465249882513,0.193755660433095,0.638199286338128,0.553385951280022,0.299467329075064,0.215527709541403,0.833211261856566,0.667555334621626,0.591127450243689,0.216683176780756,0.407569375594677,0.799948550341603,0.547471777626753,0.218458976008426,0.515696655461282,0.573868668660399,0.661687262460298,0.353488810643078,0.372811833883461,0.478531416439015,0.645952796932266,0.362713637121686,0.818468235031206,0.393407474871173,0.559242783122922,0.203094300770289,0.404675572416443,0.176591321291953,0.523217013453335,0.220846076655058,0.625613938621817,0.591356654596847,0.76112179412611,0.695430831560335,0.29504027249761,0.653180342170578,0.512683947908398,0.391118127704708,0.735102470018996,0.845333225089436,0.188170609286214,0.289761009849385,0.629057416114078,0.279912411263131,0.827586206772911,0.591581184362603,0.464888843628474,0.218307129264164,0.285118891517743,0.59929230301575,0.121268211464647,0.772320750190244,0.375453713373704,0.220934843617431,0.666834427804532,0.340196944577803,0.507493064978619,0.459855427602171,0.209869089219597,0.775100263138395,0.169727291557684,0.401155633713264,0.586206896357431,0.398564941108753,0.650751176384046,0.327800260463544,0.180735334316953,0.766284459471968,0.803517536868823,0.418856298521959,0.19999762275256,0.336418328980374,0.332579747943748,0.206896551565171,0.461923558089811,0.668804445228357,0.225970471441718,0.799424498667405,0.59856431721576,0.286195998206917,0.267861642518883,0.309634671415793,0.167257077914902,0.837800740625524,0.453621918059534,0.121136116209567,0.417109812020427,0.630672743712247,0.729009713399233,0.759553104834215,0.368450966308313,0.774089834116483,0.46259725188147,0.710258546993377,0.812933178304632,0.615303135724089,0.554647731319673,0.683560255201124,0.881681665248872,0.37035207275334,0.36066420088584,0.189440737608299,0.772599384489096,0.446255863454431,0.628609726278679,0.217846422705656,0.730614278074926,0.206896551565171,0.221042656219604,0.393254861834696,0.320540900780392,0.427271712457083,0.750857089646959,0.788141176698861,0.625503126415893,0.216492272695985,0.803121279788317,0.299666046676846,0.852034220008211,0.581120705540404,0.644862237102224,0.429492502081667,0.268425783159608,0.571067571473371,0.455579127749036,0.365601739208774,0.287798158487117,0.407850588446344,0.229375705010608,0.323894039796567,0.349103478062063,0.459239209824465,0.337670130829951,0.52381361087208,0.674899287638161,0.601044912683819,0.299239884735309,0.661151352721407,0.250786813069868,0.26379498300496,0.396950561131305,0.821018971848319,0.715861704354977,0.612389735749354,0.177341352335495,0.780720641585738,0.401176123834379,0.401170431963327,0.499246563156365,0.299567819898546,0.232179469878021,0.59151806565143,0.254333771769268,0.334544586748392,0.340578731233793,0.807535262273192,0.675262908661052,0.666643136475834,0.594983050548456,0.413793102618114,0.46655511531658,0.259868325488519,0.40860112249721,0.402443037417199,0.679336002775781,0.780725127673452,0.616900216757227,0.680054124100184,0.372606361026509,0.651411154774401,0.302740669206475,0.601680486511142,0.265479662097506,0.39986135181958,0.677588981508826,0.314141655959321,0.740377027346173,0.176429289417741,0.823432974678868,0.451045979653528,0.466998849731869,0.627922524025592,0.776970761946375,0.804738896018582,0.615830349890357,0.454662314434221,0.262975254201307,0.686006686124957,0.349911843612708,0.277083035024892,0.685190258114776,0.227852582445231,0.872454648485831,0.190418063421192,0.703464830716574,0.747517980539722,0.376656485839427,0.339629561537532,0.570388399921719,0.772163017952967,0.177397397186046,0.737934430956779,0.533565040941876,0.639956983448898,0.565127317248962,0.180857944144735,0.809541831221005,0.42612885318336,0.361708284273472,0.60125281452318,0.456641377794222,0.193494788132137,0.642407790843777,0.647122282811554,0.416989339205427,0.827586206772911,0.692593185922683,0.226425466664532,0.768579995370079,0.639481314727554,0.767732434177522,0.58752035194777,0.192871979012035,0.518843802221905,0.397785454939851,0.78864626366519,0.330179047659206,0.237986966025072,0.268666312860946,0.232895109972819,0.376141931885986,0.424692550091718,0.370350483823894,0.676480025543347,0.245580198611673,0.272243902759854,0.215995572941374,0.612261384876688,0.562911951088265,0.569468692522001,0.387507642561111,0.417183958987877,0.841769600558811,0.536851997102473,0.826798249386994,0.675203599897403,0.546090979497964,0.295914666211153,0.312133693752935,0.650751176384046,0.345858217213171,0.609877869821971,0.776761230199375,0.800283904606741,0.217038939210623,0.593814651615745,0.784864413863853,0.614097645379694,0.217116565226686,0.55704345992491,0.528402533362063,0.754841584809908,0.815494458810887,0.169601314346866,0.248389531391104,0.573933131456313,0.788979523944649,0.793103447410374,0.838688583382115,0.569338832627366,0.625336291897424,0.827586206772911,0.423906608832913,0.292236295568046,0.234078562244846,0.187917931599466,0.686911779676482,0.244219028013031,0.203099906587135,0.336313441196748,0.713022881618722,0.694475160673703,0.213821415476335,0.588814361336468,0.211097614430913,0.782380608778801,0.419476461475228,0.329975789673604,0.445641309391373,0.406803777959946,0.379310344280033,0.392196608187814,0.213384074683659,0.197658622309248,0.626725279518147,0.652113192157925,0.630126776900261,0.432931374649453,0.718644746550028,0.765335582769788,0.614292030561987,0.200557730114607,0.364435962880436,0.596343252012826,0.785910037007099,0.178882458181011,0.802198898561484,0.245358712501227,0.237951550621494,0.466596011553515,0.37305944154324,0.546474155314708,0.461929556272858,0.315568794278026,0.291180612278339,0.733901335656551,0.280479733860567,0.535796885458563,0.231694131327508,0.570723048337477,0.665360198370517,0.260121388370284,0.613005830592481,0.388684484026101,0.544890131982872,0.558801820882411,0.564749517771182,0.490321667343678,0.415117627442924,0.727069084511203,0.824943994334847,0.543693233741162,0.551653663722476,0.179256174181827,0.196602537433247,0.660453117089768,0.560296168560438,0.250260810833667,0.699612880544377,0.364000951698051,0.439554610373038,0.224066975968021,0.280152151109792,0.438090939994986,0.219519470138028,0.785543302665971,0.211272000205956,0.675831530267216,0.778363965198737,0.431634685286912,0.159418374681304,0.540281124031433,0.739705559694865,0.190359291471876,0.644116701366489,0.609502109009309,0.593196316289898,0.275862068241334,0.661121771588104,0.363135869254485,0.620472598327764,0.65281915935019,0.689779559653047,0.238588373259258,0.231974154787114,0.397383666827701,0.819912001276307,0.339709044890207,0.514082862496453,0.796703538435235,0.340318190856202,0.253294845487266,0.8107480315126,0.732228432672311,0.784741552020182,0.32968471234635,0.235503639360428,0.319565740665017,0.263156417769526,0.315803116807531,0.3140547227711,0.38477022036423,0.362626471382218,0.328110431579976,0.407900954743755,0.443556246714253,0.797279356836602,0.44297936697768,0.285602532546597,0.724137930734212,0.706763107103075,0.18304743667417,0.788649618754768,0.379310344280033,0.590552740302452,0.46859851546455,0.737296622793467,0.26716864390035,0.348060754125994,0.546624729686067,0.404663788112499,0.433547950986352,0.820026014903585,0.676361882338637,0.290740182754342,0.472906877680595,0.227392190394357,0.843303527024857,0.576007689373575,0.612863089202776,0.172413792202635,0.423737610665837,0.808738806153404,0.536443259088735,0.924279622057713,0.371199417785927,0.211794675012859,0.688028699753833,0.561942783009208,0.325579482107963,0.583475634207461,0.826739608567897,0.563986520202818,0.363235536416281,0.315433840793962,0.755631623888045,0.253709906436233,0.767298746590781,0.392409541124859,0.263082992018278,0.85771840457592,0.586206896357431,0.565100500094798,0.220136438841127,0.452786335817339,0.254464226872161,0.215482304678748,0.436712076036923,0.619923045923862,0.816196619128992,0.755337906540686,0.746920367886238,0.216396813994643,0.438363321021538,0.580342716100014,0.296978320783915,0.176195637906152,0.554618426789174,0.189650703724148,0.585690109092454,0.805291034146483,0.747576982991376,0.729472654293732,0.5049591783946,0.384074075644905,0.351322329418103,0.392787957324449,0.713698777988273,0.598921592765415,0.477671842489086,0.217491771809283,0.271710760073467,0.707763702383045,0.804682713891084,0.688694293181127,0.813868946082768,0.81694922052971,0.572931628509361,0.693825330532925,0.250725673605432,0.858012785770011,0.195916045127358,0.452581672279706,0.588894351794286,0.308781667294709,0.604458720939661,0.213971829008285,0.807506002818706,0.755138461575972,0.416932031202067,0.229697129763381,0.587660355994162,0.41486955672956,0.681034482299382,0.517734219290069,0.566566858642331,0.659773930171294,0.396172906687644,0.8236301873565,0.692593184898229,0.245672056354277,0.58193612138921,0.769436688553017,0.210672126580656,0.240512042297527,0.532255318464949,0.737730178225534,0.545356257907447,0.600949240895872,0.411104090009913,0.444359593460671,0.307774125186516,0.689803628194894,0.583052512847867,0.201368317707785,0.405067383362974,0.453003418820913,0.802994840548369,0.833447861749165,0.370931778960798,0.455609939252594,0.40823519337758,0.71443660265248,0.756397519639132,0.839119396348595,0.833353968414808,0.614890237399275,0.627058056254925,0.253290372717465,0.651533507464019,0.529013035706257,0.38352137918912,0.580566501087105,0.555905905278312,0.29429230880392,0.624030037200106,0.377222927405707,0.425719729974605,0.376379591064881,0.267029537276392,0.356794401637087,0.816782532508283,0.392107443736966,0.485397202088868,0.408491103219326,0.526135580778248,0.695609707520911,0.279251126692864,0.514177483193742,0.408553440271461,0.601136535826266,0.38638664617798,0.448275861980651,0.61475804379653,0.548885285573905,0.21395406701039,0.5123215972095,0.623358571597709,0.545977010946699,0.459542102189308,0.445157588455042,0.819161211111733,0.451564321016487,0.409053153972191,0.407129396830806,0.760431583049178,0.417519932023734,0.384166251992962,0.354931895625714,0.642179969504643,0.718339771468509,0.781554140086802,0.796644968303521,0.822135691132523,0.762065016862066,0.311189728287225,0.885057470328228,0.29542969441547,0.368694913590974,0.428221445603502,0.431178599019701,0.551489714068817,0.678210519280481,0.577054200719161,0.496804747401555,0.375481123687216,0.44267777259711,0.323561677963996,0.795667944704805,0.416754705241653,0.227492426128585,0.21186701176862,0.823760818665624,0.324249596311012,0.659526796834103,0.3932349587262,0.768829534127218,0.517241378656813,0.1991633938152,0.48321956864858,0.466779357210528,0.436604795126808,0.332300399599877,0.7319976803679,0.453145596760461,0.300200645113551,0.755597794340549,0.784245005933796,0.273733380179604,0.209522331747713,0.728483028876114,0.616801024942474,0.696717189295885,0.728566755520708,0.383411801451269,0.177441844183432,0.748709456342002,0.607382604160702,0.176631368255831,0.425809620763929,0.685944927889802,0.659115354259606,0.267323344775777,0.524970250087763,0.374914213945078,0.175357510918153,0.792032019274339,0.447382649031824,0.774385153711201,0.648984379040994,0.59923978536319,0.673785239107707,0.451538597980084,0.254466430474507,0.413793102618114,0.371489607935296,0.672521108968669,0.204017382724227,0.368938806577529,0.797727946143344,0.817268891415809,0.801118032123072,0.415947080371852,0.599796791700457,0.528316851033193,0.456475417135726,0.24258595173488,0.593555171548906,0.400769814803051,0.263015494787149,0.164167573129914,0.360038192393294,0.584220405699891,0.590479669012576,0.110407548826567,0.524584571527862,0.757254586748085,0.172230267266026,0.553894854340604,0.345219123359042,0.623350223315275,0.346372352164586,0.413793102618114,0.598824397613131,0.601030683006189,0.81386356871935,0.232601058653184,0.286770741955164,0.636412214009475,0.773953177988486,0.366732569333848,0.182599139337055,0.599630499118595,0.75009620450446,0.443849108641827,0.206790460047117,0.399745592521267,0.641509333710661,0.596666596593956,0.358117258649429,0.772413324026776,0.58841939916687,0.814757993598243,0.340571003770988,0.666869728469169,0.385969468705328,0.802163259826753,0.235339235873278,0.395808217158363,0.786242972534376,0.382543583151459,0.741563253841887,0.605708523053405,0.357841296128781,0.182403335284817,0.683711668600991,0.244817676390351,0.3015016709934,0.158909584310753,0.63511450633883,0.598044237352949,0.400464230170906,0.503111279060236,0.304485456137439,0.219343345863133,0.659605100014811,0.187686877080879,0.0631194011430437,0.195221706521904,0.543219417234156,0.203065133516737,0.262679630343504,0.367290818334828,0.20621311315914,0.346447401676744,0.413793102618114,0.606572949845878,0.561050781990449,0.430811011307697,0.398584297158368,0.228070483988217,0.209606894347451,0.778139917951208,0.695441251290442,0.761719166032709,0.554229622617578,0.286760407254808,0.404837453695794,0.675988311810408,0.210125743840007,0.610614491776204,0.220834428603607,0.754783263620719,0.389088335390285,0.74625703543076,0.413793102618114,0.697758132729454,0.417619347169641,0.226559237927719,0.621676128890064,0.573159624005817,0.761249656333821,0.480256160935626,0.164753822530391,0.402790337850145,0.443434031301582,0.176947189240667,0.252129625437902,0.627708938510817,0.465451373826201,0.297881187170633,0.554504047431521,0.336471959190883,0.215642586784104,0.327418447171728,0.769160916580969,0.651647673735067,0.408693535494333,0.796701003933978,0.38773761218203,0.354795404434945,0.773590746357656,0.498221388131586,0.594472212292694,0.39322348892989,0.473671654727004,0.679699562331382,0.616780895429459,0.651231204160704,0.251684398391921,0.870491175279479,0.184711694284074,0.171568431539059,0.372060340942871,0.590898701772931,0.555716441577036,0.6423391175385,0.823313801897051,0.204286239626153,0.559837457639945,0.160162830641645,0.707393874188321,0.736576822387592,0.395370032214904,0.203094300770289,0.196114106053593,0.215623140582464,0.404743025596014,0.305475221905369,0.318683732178699,0.651647673735067,0.66628919757557,0.753900626119134,0.551724136994895,0.645340291778874,0.620689654695512,0.811362912376749,0.683696638824136,0.367501068224666,0.483880229325854,0.238596346591223,0.684018145533296,0.225617307029308,0.201688563313045,0.309239444936849,0.734572084140565,0.208540113138538,0.521371700867425,0.305914275586525,0.769403037260662,0.445408117860005,0.410821845532229,0.657669353678515,0.662094548821537,0.325899160165246,0.472694075873768,0.607178786822761,0.331581530423445,0.61188863698569,0.544999322476796,0.508989785294039,0.615986203277471,0.426135448623575,0.540160712683723,0.607017999661172,0.400420036213864,0.799262408399268,0.703663112925052,0.680114878369602,0.808287936410204,0.736876701830771,0.525895112544201,0.832517186536004,0.790498481076675,0.596600566382148,0.803505497475625,0.754558800444527,0.306059162184651,0.771446385161436,0.746946093996005,0.452222958395465,0.665812133546744,0.680082940990183,0.754735469729393,0.425144317257353,0.466684283704203,0.727231170681521,0.371454652511938,0.206896551565171,0.603485188683015,0.368269145040092,0.807375217841356,0.22718954400829,0.734605381996003,0.608558562545626,0.624828649940741,0.37651670102637,0.263995845815163,0.641540832623412,0.633567646130517,0.810206868369325,0.644921763050297,0.736990769754155,0.595745812492208,0.598100117266271,0.586206896357431,0.385877154055868,0.364345296578803,0.571316662543748,0.374605428916035,0.312658893841001,0.821234027455779,0.448275861980651,0.538242569554823,0.629926378168097,0.765794027332025,0.209376860185877,0.271254516040212,0.210154996123309,0.359022019253133,0.422771851972464,0.680872227094017,0.641073363638551,0.684921625568458,0.252241924127789,0.88736266581096,0.592223525738552,0.495215797466427,0.525127850170366,0.704979595779422,0.233793868295656,0.768129734153049,0.281723625894379,0.383070579108848,0.536758952016718,0.623541397856121,0.57284917218876,0.417637817065826,0.410275412593293,0.782441703167224,0.400518618477991,0.452823311465628,0.823415035450286,0.641955214358825,0.735390633796706,0.488039097970388,0.827586206772911,0.276582142176649,0.610936782193311,0.728483240938264,0.200788761070733,0.781418809603359,0.801754311799774,0.624311941558786,0.55542338192968,0.399586395313578,0.791076114812005,0.614431532625511,0.808421855194887,0.468991555756882,0.500081949727686,0.401587964921806,0.389613905306546,0.438178038120436,0.369509664568593,0.642703135025411,0.28058150320368,0.408509323148531,0.495368746524089,0.706019415386039,0.712129281425969,0.43833612584354,0.845734422091147,0.730024634655588,0.666952432707839,0.385789483260167,0.301461280837153,0.706408769689881,0.705540857702066,0.137931031815643,0.625211924105149,0.592117588913178,0.207342091069875,0.261523580189351,0.639893995867943,0.596426080210531,0.453911044824786,0.780488056531631,0.746999407649971,0.784574945955141,0.651411154774401,0.297168449356378,0.585951853204474,0.288624768553884,0.818044384259772,0.341901321887878,0.811474580002459,0.512664746551462,0.61938864315803,0.83849083593906,0.813050338032702,0.793103447410374,0.653787741441082,0.580809023353093,0.81616766803541,0.745440824605004,0.165237219738995,0.635567688276589,0.276447297284796,0.455482938611398,0.483296635312305,0.43373276468714,0.782948845189948,0.3832002412837,0.449901448469517,0.643690389854545,0.561063062130532,0.356968925713533,0.30876696739231,0.392617393790388,0.545558204590863,0.943086489097296,0.222257563352825,0.210489958022246,0.557570841077315,0.236649151972168,0.509381046108325,0.55980045945365,0.77345963355476,0.608577310069071,0.172413792202635,0.367779151366818,0.469978605695049,0.781409849721389,0.450135429855562,0.529675602893974,0.812815396732479,0.295483018313984,0.539749208641936,0.633501839249862,0.244852940174614,0.293035206425037,0.235142460637859,0.241379309903252,0.564003585571426,0.581924827799131,0.245574529278627,0.215240183999054,0.196696606973835,0.76594186026225,0.734318920862227,0.505835114937122,0.244146624667707,0.428043208902742,0.238279670186601,0.61701551812423,0.264509604791654,0.719357688230796,0.410408369414889,0.24574072658619,0.694300138712209,0.455272704088383,0.410315178856547,0.44726689588024,0.745801351774299,0.313687849104114,0.747627064490344,0.79008699649953,0.632557487564681,0.504729459765115,0.253797713484427,0.3381076990516,0.190510043073921,0.179117264253197,0.410741793607121,0.152012797633198,0.732975123993098,0.613233061845631,0.608726384638554,0.71865970768841,0.682708786737834,0.6724490672559,0.383128879808941,0.364427660698469,0.686319436818659,0.720412103245419,0.668737173377292,0.341022676686777,0.164715670807954,0.787532955815581,0.346613401264524,0.729717489778732,0.42231186253234,0.350342065468749,0.519950450090645,0.793103447410374,0.21757272423019,0.249707967880841,0.744346007140676,0.721098726681526,0.750612780731742,0.50424094745353,0.320096831368373,0.33844089376595,0.336042802767868,0.441196439593282,0.445938296798559,0.575351182860649,0.633431545257039,0.510585837774524,0.168781862146018,0.211618049779551,0.813276772259992,0.271515355558615,0.230674403329077,0.194826140948409,0.54904051609248,0.294755378779727,0.84857804542275,0.412279922386892,0.584123104004304,0.172413792202635,0.456990211836053,0.531463066564373,0.790475866236236,0.691836777647805,0.710986412932152,0.582234678261201,0.589547590296294,0.408618662188406,0.545595123894136,0.762713511113742,0.555964596295696,0.853558531965649,0.597822467468514,0.429773067477879,0.220189146017832,0.384054297519898,0.430481828358473,0.238660565566887,0.220898901644069,0.442659083467591,0.623597437584398,0.168113426881017,0.551724136994895,0.538473390497708,0.267358835989012,0.761417420032823,0.560274337427946,0.259113562488103,0.230475000367011,0.303849102699989,0.430487141181237,0.237080700497218,0.23558894264101,0.302929100257279,0.19082232046949,0.78336988895514,0.785206201705342,0.390281237233692,0.590598545726946,0.75860831570682,0.735289567229608,0.36992911735543,0.402816276022062,0.301292602299985,0.405540412064214,0.739139749192763,0.214771692608271,0.270545605589213,0.595454376605763,0.246859601323362,0.742706056770595,0.196303351545989,0.745658495645652,0.254314266149247,0.812170550564463,0.58485139611629,0.254256369084359,0.337928371306442,0.602314837139393,0.778695369166038,0.310127700548738,0.310344826579415,0.564891892406058,0.685344826835529,0.522886865467659,0.66407338987484,0.820044736815658,0.597104715972305,0.4362045846751,0.236703921376452,0.422636298157867,0.671746835225957,0.767634099831464,0.553306077610055,0.26312758448825,0.284764995644582,0.443832657946118,0.314127812501162,0.626525280323369,0.793103447410374,0.215210732971514,0.393210318538556,0.288071597775511,0.457271701290525,0.196300756601897,0.422823412784211,0.448275861980651,0.456056936556527,0.839896430997082,0.572080084236413,0.323620413032938,0.247098116946498,0.746590119503988,0.370624228399828,0.747851993793484,0.720063385991439,0.710250873826678,0.435129510504314,0.50431091874308,0.617584856848777,0.377677294637707,0.386884784267177,0.79754261406841,0.681435802235674,0.710228203665678,0.560002895826477,0.395485924692346,0.482637585078029,0.590162333883496,0.729348932932456,0.444686700864403,0.618224363558203,0.206896551565171,0.612537958996871,0.571278331541715,0.651225422137627,0.773921204753147,0.424043676791753,0.52851594051208,0.610083962474097,0.202466917459357,0.599416054086216,0.51337734708877,0.711180594247934,0.406077493779433,0.390213647801628,0.539414219082719,0.245713481209905,0.497566738955273,0.642913746547805,0.82366000923669,0.567158764057941,0.786003051359209,0.298311552450351,0.67086660724214,0.827021373600719,0.657772004052784,0.714431234509154,0.667659976536091,0.413793101593659,0.603526918826184,0.457842764172557,0.324423806904279,0.608332155978617,0.368916578981016,0.814976360243723,0.804586516557808,0.434635052256878,0.214712619469233,0.320581254056265,0.381838428351878,0.695097498544583,0.662967224524326,0.400929719909029,0.753720378413536,0.799001111974009,0.551724136994895,0.659171968707044,0.763365614519795,0.59431571862131,0.707552708738998,0.300267644459631,0.306205915339483,0.577656687728741,0.270387700219068,0.213658716682027,0.369445385150095,0.627412736860488,0.753116878218126,0.641803234435435,0.814214686271003,0.349480739701056,0.306059162184651,0.423756126662489,0.54957992741799,0.704339149644914,0.259768361234822,0.524438039655274,0.247867311442147,0.662879513774886,0.168821107986217,0.743041360837446,0.592191022860064,0.570459454060029,0.760633860631505,0.615379037582669,0.274115967959274,0.414475663066353,0.442422183409726,0.358669931542752,0.677907919909719,0.452736637464479,0.411032739804157,0.52658119609261,0.390380732287076,0.403197042321039,0.412186566891322,0.704939648187663,0.441788316324156,0.822303459953799,0.415662102648674,0.169546371809716,0.383627224838014,0.590517240893577,0.417575801692508,0.520490977047468,0.537071382056057,0.350536200684063,0.762331648648094,0.406451735325578,0.593993525527412,0.258337033920304,0.745466456464926,0.809620301387851,0.188173956180153,0.31288561184228,0.754358446788377,0.453534177600904,0.564082667337808,0.246701248266456,0.201724944777531,0.505674752924288,0.376190814772799,0.332853560133701,0.271644847673965,0.341598265610261,0.671316504777704,0.735644060359936,0.937305027420917,0.179475876716409,0.675472486508519,0.327886501120298,0.196429387150732,0.709932090118464,0.626141912933571,0.390893004779604,0.754158854302167,0.639272762359374,0.214828698397455,0.19724282989953,0.637631169788196,0.585590145863211,0.219242704444791,0.197625612325618,0.192929704992966,0.418078495532347,0.57024245915957,0.204980842540954,0.505316195781637,0.226675417252514,0.68844934193273,0.477469087510807,0.103448275526472,0.604768473054067,0.266310562581113,0.388190842269166,0.21774562352127,0.260545454277234,0.667626507596696,0.25923316144313,0.581219129014033,0.763438994170575,0.628866803998935,0.374436461482604,0.74850901970501,0.577763181857544,0.666788689994056,0.292574807202979,0.244637130568397,0.211023347602248,0.38724989382294,0.362952907768034,0.724850437021675,0.250297754723856,0.645168975270511,0.70253982073864,0.218212582327624,0.595335265291236,0.466733773068277,0.476836495871503,0.421211918696027,0.780501708416735,0.169663522317692,0.18768690064334,0.773719393297769,0.28341891731454,0.286596310079653,0.242879979492053,0.39011608077224,0.625897281315082,0.839089743503453,0.803842552335786,0.277466389096776,0.702792687949531,0.75428231647637,0.436391958488517,0.222159490242749,0.582552024659283,0.547699071371648,0.796701003933978,0.624318089312239,0.443978738034124,0.424235666798647,0.790443488341238,0.390371386185634,0.354201313857177,0.645102579328327,0.210672126580656,0.800474847620795,0.736761610477009,0.586206896357431,0.439997522151095,0.316902342501006,0.29605169114289,0.624427918041524,0.64728999426336,0.255194173478702,0.625045286282008,0.457657362434694,0.196158218054248,0.196096012132332,0.210226580929222,0.303484816805911,0.318345526855761,0.760761072310397,0.582835777134482,0.231930665654997,0.691361167320387,0.246432532739297,0.640672701402263,0.465847485434122,0.453654527481324,0.827586206772911,0.577297610163034,0.788496951422186,0.290452472810124,0.803581913610531,0.651255607699282,0.152000141518191,0.587525581789692,0.581573938700905,0.703543918629684,0.613372857927692,0.739576866654285,0.617935279820054,0.78858895975965,0.685640499867164,0.357097981411124,0.754327941596813,0.79840000490509,0.753174367549992,0.612680942157918,0.801090811333704,0.758620689072293,0.655172413033594,0.564118436178303,0.528333226943699,0.303709965342386,0.645305465436825,0.348991433436974,0.658591405030891,0.797805105008004,0.368813076260326,0.282345529396409,0.5960470298734,0.637435540917735,0.707165255823327,0.591824377646506,0.592385836264478,0.360701484895033,0.223891783947024,0.211913063062274,0.520886615357256,0.825387258525367,0.31034482555496,0.392646930872134,0.452545200663195,0.444156694034261,0.627158706893361,0.203584157166615,0.359055150122433,0.676626375062975,0.270995295160446,0.38180083393287,0.624960199161396,0.18717365696763,0.590115092173326,0.732432134246856,0.719825957314881,0.35018333029019,0.721059235996622,0.574601834104026,0.478727887411348,0.586459449060689,0.422099975563679,0.535373606332926,0.592081953251811,0.408726638703353,0.513345896325396,0.786463766113356,0.532897557395415,0.936280413797386,0.235526586124233,0.515578357563893,0.7352036226403,0.620223592287138,0.788962112310307,0.358753015854166,0.72217638862522,0.778283837463971,0.448275861980651,0.781003239500339,0.340710008973917,0.392054330876148,0.293199853732437,0.303892756769334,0.784524486432341,0.444412046572577,0.761487985506177,0.285948999073309,0.789760559089259,0.663875918010134,0.365909655500119,0.273842624969634,0.797994069799775,0.675499113114084,0.379310344280033,0.557698332432377,0.54374377317144,0.796105010943585,0.388068730326433,0.131486054306371,0.800524835894373,0.634357909564262,0.630510766134142,0.836797326045853,0.261195365349944,0.643521487986223,0.422681993965695,0.646287516035407,0.290470644589952,0.227459226620811,0.825387258525367,0.459439516355693,0.596768204073206,0.803856794306875,0.790097560677768,0.534482756801399,0.609623496662475,0.43203728476729,0.697302109978443,0.601709070849893,0.333180157358926,0.630675900057588,0.368576020485327,0.271431990546577,0.670261076577251,0.477565793998135,0.47000118058175,0.470089769288981,0.65483083827871,0.559698604056331,0.710649075322458,0.569090549851852,0.322276736025025,0.429954923577565,0.649981374386681,0.740487263808481,0.22651901680652,0.640276291677986,0.363907075779426,0.285772588975516,0.57613620108565,0.645466434951375,0.770595563129145,0.203799873547442,0.23617351193556,0.561259940835889,0.222780781120789,0.781644044194039,0.469378267991709,0.356916737935428,0.581940997794216,0.383589468555143,0.498167674940236,0.784633567309597,0.715503498600333,0.579902814170255,0.284357804557642,0.405648250277758,0.625756168808561,0.549133989400355,0.238486685872531,0.617419079567696,0.22733811966827,0.430587774403941,0.369980242773872,0.577789419170273,0.520995269036847,0.575393995852577,0.192496298106849,0.364532552579914,0.191056091842294,0.339541793418622,0.189448113683097,0.77738019044267,0.628966286758861,0.428301478063969,0.570210200101333,0.565248180381254,0.24956976994832,0.5455921488773,0.324758170521593,0.61644923329954,0.824750324222027,0.381639308139346,0.178722701620984,0.394922500145549,0.747450269197533,0.633216189484313,0.750099044293257,0.238795060095186,0.307888463565976,0.726958277427553,0.566049028482334,0.617121690574216,0.169221703632941,0.701411985095043,0.710228206739042,0.824943994334847,0.512014000548063,0.220447584214106,0.250979626738447,0.334349682167498,0.512154377496014,0.19680919558444,0.472605525071365,0.789634933266449,0.710021527074297,0.409336216989287,0.176630144032305,0.776991108643814,0.326447925787836,0.445485979500679,0.269420457090643,0.632344435790875,0.200297266571128,0.272320837268905,0.206896551565171,0.199130865325342,0.611404989810106,0.488292651566018,0.582039312675632,0.425113343889931,0.753827077433306,0.185726249810053,0.546739124410543,0.369675172418053,0.241379309903252,0.773101806848405,0.459244444788661,0.405787636577885,0.556778038020039,0.748104494249546,0.698004155557607,0.800660739048068,0.667944794444316,0.542974530526413,0.567391293791487,0.689425440448733,0.431204737984766,0.205460808850323,0.173611575573321,0.593922753114181,0.241379309903252,0.366902517170555,0.201094536251477,0.219065061927834,0.620272703627378,0.191284271740619,0.560351402042761,0.251915024688388,0.559817224656993,0.802917604849597,0.225933815423338,0.634763290439512,0.617548251028683,0.408872965684974,0.366940688357633,0.644769345684694,0.345125667466899,0.567525533230533,0.264730338952253,0.723216148813457,0.263844848343958,0.779698952780756,0.192947767156128,0.553725237402809,0.582682202134917,0.698081313397811,0.841649444300355,0.390347610637869,0.210497649629133,0.319148273271647,0.278916353293617,0.232250623388449,0.211872946435467,0.639759544366747,0.790383332353442,0.584119140388555,0.748633874113331,0.54957992741799,0.231246968061893,0.357393723081233,0.315729073310019,0.519141084672083,0.22771278636317,0.538038832124359,0.815101274070424,0.435904624299989,0.397486645027517,0.374966206052309,0.76126619820601,0.176589727240233,0.680326326871595,0.209757874402923,0.694353221863837,0.201860209695865,0.580988399247628,0.566709746529078,0.184678941438607,0.227065828793743,0.534376770802193,0.196125219339621,0.755208238219105,0.244067175122041,0.537108399706994,0.413793102618114,0.384169649085188,0.344078251527695,0.553029905076167,0.663502133370845,0.713242963201593,0.354645967208451,0.329194418507809,0.389141582454687,0.677032631847107,0.439724759002891,0.283561626946145,0.735401820843482,0.556051562266472,0.675681433291809,0.666625173684792,0.229704813174629,0.549396175052408,0.695590885212264,0.65935774846874,0.43998598986304,0.619923350186947,0.801759276307895,0.519588630059351,0.730398820881172,0.305761492490546,0.399125777882641,0.19847924546197,0.707908676059832,0.271693117936787,0.452091160232286,0.533986866366106,0.264395103523876,0.641551366068005,0.199530906742002,0.793103447410374,0.818551996507265,0.30564198061418,0.673218149061518,0.662440709036254,0.389030776395491,0.269638629089704,0.802580379929934,0.592726511548019,0.17532393850882,0.421335274326927,0.795489282855288,0.361627862520169,0.438089460682207,0.589769208561414,0.583196776577455,0.262398871325328,0.399245165799973,0.658097693611027,0.819702971512175,0.452095567436978,0.313480013854317,0.519375586481183,0.796880709702969,0.26162930187921,0.626032868936689,0.301712007961899,0.830133907105899,0.196941627885161,0.8111302443418,0.354486172743595,0.435999982604757,0.210899152942839,0.713142744883097,0.452139144672211,0.319006651611074,0.617715841594819,0.442100015927199,0.21905698512593,0.703371984375056,0.641215956482306,0.674371214978743,0.890514808837804,0.171702050158477,0.537338598805795,0.506867071852895,0.403425352325128,0.582942819346621,0.531321233866104,0.251943122411094,0.821552731256516,0.535604048227523,0.70304459217288,0.694185376208448,0.540976815941722,0.667703504597492,0.417915474034767,0.405320732067638,0.167276044671681,0.164081276128144,0.606993793842377,0.547340712973234,0.747420726993513,0.540749400286702,0.563287535694696,0.794911234215751,0.233055968846247,0.807559785672985,0.482058748632724,0.427729634547354,0.235483916555982,0.646086628638289,0.439586195339995,0.827586206772911,0.408038143588266,0.33627379684362,0.206896551565171,0.57941273341832,0.787375350610703,0.34990769149727,0.425577486469948,0.812351393478319,0.674127520736426,0.2530541826068,0.374355048057023,0.392121483890453,0.682087802171789,0.644928931160764,0.201337900619337,0.714943503928318,0.418578976549747,0.63159417322054,0.163975995978318,0.731048495304816,0.588032639807121,0.561154991584974,0.226843881678622,0.411250255127671,0.466146892603624,0.314122802917029,0.200460736779925,0.57638659218921,0.581596804532778,0.423088435151697,0.412731636280875,0.220911821043968,0.831813286693593,0.606479126174449,0.504789855475342,0.633377706057744,0.413793102618114,0.0556109923921628,0.411015171428225,0.431284213141803,0.355371819069024,0.452005794459959,0.589346290043878,0.260303047774642,0.745773740667639,0.698324928757106,0.632577639615701,0.502530215450125,0.356361571519041,0.57194503138023,0.610794215985382,0.172413792202635,0.604943541116029,0.69392665526264,0.235003717695366,0.728437080027943,0.681082119449118,0.410356707182114,0.212989018264216,0.439800074873306,0.215594834895427,0.567867143841337,0.222600441214256,0.754158854302167,0.315553693813788,0.667269077354361,0.785406071818812,0.416067528599936,0.349833017960035,0.778177811511027,0.372395256741341,0.444712872612023,0.585878122165686,0.281229189160493,0.232945461927862,0.392278366854674,0.264820581129585,0.576983687493004,0.773203026059273,0.320193401603208,0.376630418586201,0.22240165702291,0.368334044253765,0.442106133971462,0.78570648090514,0.754315896056887,0.539000519634225,0.391662726869493,0.666984972466701,0.617349582600733,0.736919025133289,0.304235101914252,0.453027038651544,0.38391126928284,0.620291522862661,0.461837054148165,0.0774705483833985,0.819538570073935,0.63260169586409,0.668552236741923,0.554647731319673,0.206896551565171,0.732123995648813,0.741902877010315,0.306447855715126,0.411018286795373,0.308354421479958,0.758620689072293,0.70304238344826,0.637115170328985,0.806723352108825,0.527735943140216,0.774219163343514,0.349802700243707,0.235376306795866,0.815658893031682,0.737103062297314,0.20880988487863,0.683870314651979,0.590527727213248,0.57011879619222,0.287848256377362,0.777977199692258,0.555272896685892,0.827586206772911,0.575724128471431,0.59359717419706,0.597931484829571,0.634765139580486,0.302757179320564,0.609045511539137,0.407765460347538,0.161791966866508,0.310344826579415,0.45952807228037,0.289678068961648,0.699170464602458,0.607041803893672,0.20880988487863,0.23778667998294,0.247309957814692,0.780353277204887,0.27274661708879,0.772516266370673,0.794800787740202,0.195174542670301,0.754735469729393,0.634372621760119,0.38319919633977,0.752972093041029,0.379310344280033,0.800129377888636,0.561931364435639,0.297793691556709,0.65877038343695,0.296721838271918,0.335857938868793,0.314926968202858,0.369312885235355,0.815162005801836,0.147150409218995,0.302566682968817,0.728273874128493,0.604381859166903,0.591586921309668,0.269759625401124,0.221958940915725,0.305456900555135,0.518383715458572,0.345414025891027,0.382697045460993,0.818662097741535,0.354699606639053,0.67584659999781,0.772506456191192,0.347838106283767,0.547366755639545,0.5938047748467,0.790258861091229,0.488606182894303,0.673770395781631,0.79310344638592,0.336612993838836,0.575219215662423,0.433797713074645,0.396952701217451,0.786025455161953,0.784903140305451,0.359754361035074,0.527749693372985,0.216705981145339,0.398607560478717,0.513534737158133,0.581230379577009,0.749145151860216,0.761495076782531,0.45173573075024,0.112885128299599,0.7806210819917,0.350276992097755,0.395107324090886,0.306153786979759,0.299852929776398,0.76692592186567,0.794419002108666,0.391665579976203,0.747351620343841,0.397037872343359,0.279211723086621,0.803688163919084,0.711619618219901,0.784851533393237,0.802928255082041,0.801735127858571,0.837617759674432,0.379310344280033,0.186752162442312,0.789347506071765,0.544838037430158,0.796389935395112,0.399333288380255,0.381261302746144,0.425276837661189,0.397010302214893,0.645992703545832,0.724956112611067,0.795489282855288,0.0870835489938814,0.422986297004843,0.649390747490703,0.652253155226124,0.660122314477453,0.499976739240789,0.651000062563457,0.425957284659108,0.245256600990199,0.606043565884273,0.758620689072293,0.788766513149037,0.513457415405156,0.699945945152963,0.519897403819391,0.820364632057366,0.244659303868804,0.443365369265308,0.301508427273024,0.642395556804161,0.475460983929654,0.724137930734212,0.414170536365519,0.711576097329684,0.546075765319239,0.623402098634655,0.552425536143059,0.167681070061104,0.340796325440329,0.720002809977162,0.555939751217086,0.622912205357954,0.291890504157069,0.360836149482835,0.206896551565171,0.718714518070886,0.381868010509636,0.786269190382463,0.639083346807476,0.571800434702821,0.590908653327179,0.388553420397037,0.319501103711781,0.17532393850882,0.432470944693751,0.285271428744562,0.542224846773059,0.373896105609738,0.212782181857882,0.616012391416368,0.780501835449135,0.547939000742453,0.199995516473423,0.81615159433908,0.311785947682137,0.711937736032473,0.193326730414598,0.559067531683545,0.3740676444248,0.539091392875734,0.384191354209735,0.277415792297028,0.615237395432999,0.763691084844704,0.443922574346813,0.368470386898583,0.457374119113548,0.269199755712598,0.312339959537927,0.613528721559354,0.535864749444523,0.384555819383409,0.174569470551395,0.753842435035708,0.424139311699327,0.229038792549669,0.637000698770397,0.358160645336062,0.567320965991654,0.446949849647423,0.45890046256492,0.290515307747308,0.23666469602535,0.176697762149105,0.209703216664217,0.537926216877928,0.220706653474557,0.507957761788701,0.665582804210096,0.738024696696573,0.838679109223819,0.203752313231819,0.627708652687919,0.176761086775699,0.684824755168357,0.62893813064223,0.782287658967346,0.321182181845589,0.814614395764297,0.136547164420176,0.408896343744263,0.584412783975166,0.187227677495431,0.411116922331152,0.815771969282787,0.536784315469474,0.40186358527454,0.597008216424853,0.296737230705784,0.375940262829829,0.540864623795137,0.577235051828656,0.832063583547309,0.85506178113172,0.4344756665495,0.59915228872481,0.601352064731859,0.359556640227844,0.739358168085439,0.629162835589762,0.681727603852495,0.238159270107895,0.788907614386555,0.588916780183946,0.241379309903252,0.45248939655953,0.829653971530175,0.827455046845093,0.714274874016899,0.265551926116973,0.400979577052388,0.823500379709062,0.664330715513165,0.174640259355903,0.200584166171573,0.344881859510096,0.52851409854229,0.254497555461244,0.778085391342719,0.631923147180977,0.788938498626406,0.23457245601767,0.384817318650724,0.551724136994895,0.222736236800194,0.656087997002609,0.634714671862046,0.263314762630793,0.707234786597299,0.550328425877102,0.779296037768289,0.263547639654528,0.548842361940856,0.702893937894044,0.206896551565171,0.459849441712582,0.627463223019115,0.785208435016878,0.238304948609606,0.220980730998312,0.545310588735445,0.419260816806239,0.783786806216265,0.558438423190674,0.196204872751799,0.2456633279991,0.547341196515915,0.679488905732975,0.642189666994093,0.583949732439546,0.547116471079287,0.422877301157338,0.230808155127622,0.578877408643139,0.552489791999096,0.551724136994895,0.237144563987055,0.734320992309899,0.659325647176547,0.448275861980651,0.459428276037265,0.340013117427019,0.429311479888215,0.231738322211186,0.609488861783863,0.362713471160003,0.681878133147842,0.390325891170954,0.34158437502718,0.279677952481134,0.555675469530444,0.564094088984741,0.588843803143915,0.225105195376189,0.701018198999593,0.633000965866261,0.203899673888366,0.806740670517777,0.45061601698456,0.740795025407146,0.0555199306509643,0.7980182182491,0.337749098881846,0.493028411216129,0.584851650181088,0.635899503050278,0.100876491284814,0.54496125988193,0.203345068873228,0.668903408589683,0.401827669937003,0.541629110920829,0.817773721243976,0.593505935225176,0.259814232224426,0.20307205063577,0.582274526480841,0.75573470350889,0.544107583718475,0.246546690814706,0.437050167645375,0.341097491598779,0.192499014961067,0.174916768935432,0.639703403217442,0.832182612905449,0.238204202696871,0.600510674855216,0.613108227926407,0.801943484555877,0.598653325949473,0.278828322914269,0.252313487420151,0.170714643710027,0.550263156835235,0.453492190319572,0.810241365861373,0.361545077349567,0.378368043553427,0.576914086031648,0.589329082276047,0.749919850751683,0.55498536397236,0.280485228011837,0.396817459861578,0.579834611089746,0.777053970216824,0.413793102618114,0.343905443413095,0.810956097264733,0.828253404496474,0.454454029448753,0.183083374549712,0.786010671254257,0.746196822073494,0.391095621456481,0.278769593992056,0.411292596870375,0.376501413086896,0.358650341917435,0.33597953243738,0.367972950560947,0.544841420180017,0.411073714924114,0.642085451252838,0.477733691900721,0.245278004925026,0.543195332301031,0.436029221570147,0.228150088226563,0.764243766958121,0.567705106844851,0.70961447633767,0.402613390938019,0.819307038159396,0.471787168012734,0.352930510419356,0.933761461715923,0.656057816563228,0.801027001115519,0.395852180613067,0.192789234819626,0.244174561551003,0.758620689072293,0.301760294615999,0.748537989238778,0.221914234731267,0.693784640211412,0.819971507759738,0.421881175573805,0.413793102618114,0.736137303603941,0.216163186045516,0.618755617149878,0.854056047186308,0.221318701721093,0.755303813708298,0.63456573866733,0.776408733731516,0.165360589712263,0.184104054266684,0.220987508791487,0.177016733332553,0.827586206772911,0.140366846314042,0.337960597582125,0.549862986337266,0.806605257053492,0.449875337164733,0.397291080697711,0.366265342120328,0.271405182612506,0.796096695443705,0.444685505325613,0.676048884751321,0.392794457490365,0.633872293386489,0.479561403328144,0.578792386063181,0.444367164181887,0.61226238576906,0.221449589143926,0.165424489058018,0.470919941385202,0.222900991675352,0.405948255728882,0.738016810443268,0.741254712633095,0.203678643660321,0.581060800544043,0.218023433133982,0.345772605571684,0.78248323763952,0.827026177269431,0.605901994421987,0.272918418164289,0.0616005812879657,0.793103447410374,0.407621942421069,0.60864142864816,0.520714971023346,0.508297392128312,0.246136718332895,0.488662996085978,0.263082995091642,0.308012211563077,0.222545080699534,0.767628821840164,0.579515024208943,0.435568972942949,0.392138148697222,0.180699317558389,0.636310724342531,0.218711342260904,0.407970859443742,0.808848905338765,0.235469033276168,0.427446731345213,0.445238624881244,0.420284699993473,0.315079745152108,0.797379971619118,0.488781729376672,0.426711340785689,0.468181102367287,0.848068589156557,0.544997138339092,0.35027159219633,0.590139221158008,0.42956076970283,0.340904455623501,0.239871429176881,0.398426917333554,0.547412075472448,0.795406231326429,0.43941709370298,0.218589008011472,0.321030388372979,0.232111296506702,0.581722981512289,0.604656722447515,0.421804005440142,0.570500743687619,0.790685376469684,0.658217423696273,0.344677203143646,0.471283372883949,0.758620689072293,0.383070579108848,0.164566025617128,0.63051856633324,0.462866323918911,0.659451604922723,0.816720334782005,0.551724136994895,0.664690682305666,0.206896551565171,0.233533901612772,0.382543583151459,0.197133377145169,0.579616822236792,0.628747135380979,0.802477897566257,0.780320058232471,0.555701124952828,0.413793102618114,0.624647180060527,0.751995104273777,0.587399345391802,0.833488562315226,0.359584434711919,0.424333957093148,0.806256817426772,0.579904583403752,0.798543410141527,0.448943425434589,0.563911780076019,0.60261074579564,0.260773282787551,0.158511302907496,0.339652079054762,0.509332021846745,0.492571937704992,0.604071867330067,0.216888994878986,0.731021580827443,0.252176288331092,0.833420150245931,0.78305550425598,0.744186499523173,0.766977807429599,0.58839531730711,0.209726868252947,0.379310344280033,0.769769390504592,0.749701117351373,0.562711514451272,0.755796391056661,0.324479213519468,0.661896653856986,0.28910591708413,0.252510949040308,0.729081723353902,0.815365992174825,0.79602365181411,0.726827947308149,0.554678850159681,0.627054376413165,0.600186367286543,0.272588811090764,0.572605483068717,0.463122349524053,0.235252191019479,0.21024089256324,0.234034287355872,0.305938978265914,0.335178774488325,0.172108425779369,0.570618717857281,0.784537243968376,0.388979756495897,0.410988777373907,0.38391126928284,0.82319185796491,0.586206896357431,0.394623373676672,0.341399373851157,0.645909187938933,0.689628523252559,0.454243706822622,0.594494363055094,0.547908458670516,0.399510447354531,0.42234944056007,0.21014137087403,0.788364977052775,0.29200513757952,0.554727961499922,0.210382870734095,0.743485971161617,0.637439146998747,0.617145929175565,0.440420782836546,0.267962182516197,0.766942914497985,0.22315688922364,0.533234910371932,0.444730373373935,0.78954313596668,0.787358347733839,0.346395604215931,0.469992565941059,0.635694178739278,0.192071030514381,0.223100327023398,0.66602211605387,0.804017249545099,0.634853234500488,0.402417027533443,0.401449173829937,0.526588443086099,0.178135101989037,0.236839527438245,0.43674583592149,0.334880376406834,0.832208249887646,0.684043903401162,0.702720402416513,0.256111560488224,0.646827713117774,0.262924745504674,0.234865147885741,0.823455181786283,0.260023107295877,0.587698020076098,0.790097560677768,0.358568073072069,0.758620689072293,0.703470831972985,0.338250897348161,0.296877781811057,0.719482885831485,0.619177138311022,0.549326734430461,0.650888050720923,0.643331442394603,0.169881958626101,0.328550305849454,0.559765045074527,0.366262350712216,0.246574562132894,0.233679651826322,0.816470998866922,0.385168017200351,0.418176774557845,0.475170549960035,0.741210569898794,0.256395943003144,0.379310344280033,0.63707501169953,0.206896551565171,0.549831569380901,0.243669552443241,0.712797539460284,0.220774741816125,0.260423131296805,0.619012170349259,0.780288126999781,0.254879006096049,0.234772519753103,0.321722626846025,0.640245683016484,0.385779355499688,0.189493383317714,0.219276940700856,0.617769142955327,0.2325819740841,0.369827889948923,0.176567023272223,0.40722944713871,0.191795724669281,0.417745691135289,0.773942174319124,0.252875837313827,0.647440801185966,0.260299785910453,0.376239945577681,0.570055123250983,0.172413792202635,0.556607182516351,0.417519932023734,0.22233849016236,0.23694435375458,0.507239813597165,0.72080857546144,0.832248202601679,0.1725911079185,0.46582332059352,0.213382698840818,0.326738229651692,0.210237324387056,0.698486754715896,0.606612736598228,0.624880102160275,0.752519045306853,0.565939817499313,0.411665629559817,0.59815945573911,0.711257379186579,0.238506899390842,0.816381322188658,0.629906051959755,0.363359595847651,0.616801024942474,0.614171736002128,0.669576132222615,0.449710467550634,0.355155619145516,0.180774849588773,0.624387335287768,0.683964300187271,0.241379309903252,0.771815442966125,0.489849139600852,0.255093568940734,0.37432181064442,0.375616412168012,0.569270017947322,0.468686178064613,0.7865092006852,0.548437916392868,0.465114230862925,0.263828945731585,0.409216171371952,0.417275936591696,0.830977860168533,0.203634267350318,0.481274869601498,0.285610122732455,0.395593491425359,0.789078185091799,0.23602763673852,0.611394377482491,0.761431339300639,0.545776331513912,0.332403761970255,0.265056855245546,0.581077503255641,0.674431148659839,0.786224506736011,0.198986645647312,0.45982736880875,0.72857965443151,0.836620004183259,0.405791159678056,0.213548368554142,0.353580036297049,0.445923356149274,0.651498055180067,0.423999442880973,0.380469750548219,0.796678514077029,0.727422033788098,0.72058211357387,0.358740040109251,0.555954733869019,0.17680813998618,0.683880998691433,0.658429754253877,0.785640271413736,0.348901932964941,0.808723537678573,0.779921009512545,0.281549415301112,0.700738274912106,0.490076288897615,0.827586206772911,0.542679904487617,0.42985657079132,0.522461701345129,0.598408713795625,0.805390493343948,0.315520601873771,0.277888184811816,0.561445950075468,0.61080877143965,0.642508773405579,0.358927390360206,0.755631623888045,0.567592170944058,0.221731840792794,0.229791329409733,0.592149409504746,0.262258063081892,0.810082150213497,0.292114407980921,0.799475614865753,0.341105311262519,0.375940262829829,0.618002395953985,0.613736078388743,0.367232368064329,0.252180664802138,0.375014345184913,0.32145152536356,0.830640846286566,0.836698178282658,0.729822440054102,0.805147150489639,0.762752165843502,0.606685625535143,0.607088470884681,0.448659588954094,0.81590519041373,0.644932505483676,0.371357109045011,0.371670658813483,0.583020753723589,0.609310882221266,0.444485811418375,0.388401624875517,0.823391248633518,0.176454320947131,0.793103447410374,0.747211913389351,0.384738639495092,0.804177250949831,0.29721813541578,0.202606007692037,0.351008824725644,0.413793102618114,0.778798186526446,0.389050358849625,0.237503334216311,0.39922603922824,0.547465389126414,0.63786552817362,0.436164634009977,0.65882643443423,0.22291174230437,0.307191514649607,0.806565617822637,0.421784144334294,0.889815411474384,0.497924898609449,0.501885473776502,0.445485979500679,0.199528465466135,0.433202528379115,0.460060573658031,0.557463079697884,0.638609893981935,0.227614162096394,0.81951169350139,0.162910368305548,0.479472387423248,0.617574796702317,0.739682731767821,0.441233392703564,0.627417678830603,0.611315514949444,0.398956387349364,0.22624410742544,0.734444151245471,0.185378139033334,0.177885183159155,0.170560291149244,0.146623413261607,0.807013888523927,0.311810854228037,0.400475628255378,0.419497369573915,0.551724136994895,0.677625988915214,0.384965715031108,0.250059530045893,0.193438157293422,0.581180036842059,0.173433071489849,0.291420267095249,0.429865235630297,0.455548742418689,0.594715864532363,0.584766236259384,0.593053760326518,0.758340892017205,0.365929187755966,0.271636088585142,0.535751596359305,0.435474293851735,0.416031256752118,0.595528505133026,0.3215915714126,0.272876599918005,0.241379309903252,0.604457804052586,0.627914756609048,0.304149307919805,0.706349094171402,0.442050952736336,0.179844329068292,0.409585545733185,0.290726604629985,0.255556471930404,0.507063434233017,0.323233448782222,0.216646976644776,0.456689825287731,0.41108527487245,0.165685557029849,0.604584152116053,0.376141931885986,0.451528694575214,0.62722420746202,0.572573250646305,0.778338501349407,0.284625480263145,0.56951609712049,0.542004270378504,0.418905692611733,0.790093788635073,0.280900324816723,0.729045355207329,0.796105010943585,0.645589501686012,0.182336064458206,0.604069425029745,0.327476464097832,0.652836505419423,0.418256270203978,0.301428977727358,0.222478446059375,0.706890658900971,0.266183134742252,0.147787942828413,0.137931031815643,0.356384765176461,0.545418216935748,0.612039502302221,0.429317338745405,0.588996724541296,0.176919757413603,0.820698346170316,0.693856962624804,0.554393631689617,0.667430490457854,0.658429754253877,0.737425329151959,0.591720176247619,0.835399051742069,0.586206896357431,0.266938113902638,0.801092964737763,0.794419002108666,0.552093422228558,0.176577639697658,0.196289100354807,0.617039384848475,0.629589392970865,0.411344723181189,0.540606305460079,0.263315608830485,0.631213824899135,0.548492641745594,0.548828219341886,0.459287123577005,0.348153925219694,0.20498430110047,0.58139349020216,0.552863182223275,0.556208177847982,0.338635948941704,0.393865820061291,0.435793613349827,0.634572942633715,0.209739106390382,0.755499452823307,0.662303370621338,0.230185000766241,0.713058514206725,0.263958057774192,0.281488038163155,0.686768085543782,0.54338634190465,0.644857300254383,0.805836668010649,0.256945493358137,0.393599974032119,0.21558444692342,0.831944190507703,0.764209700761558,0.607610904944698,0.76475315048802,0.632503246779091,0.781391286599814,0.790235331412624,0.603410110486122,0.215769026024052,0.829199907536805,0.207763344848308,0.416350839535101,0.324182959621943,0.212758083606845,0.561518636170326,0.406811575085681,0.377865566898012,0.282956669975963,0.778912722625688,0.280603909055334,0.822541847520081,0.788931044693041,0.86539425842035,0.434781834096445,0.483720180796199,0.648162931202131,0.695327551146343,0.189801360051894,0.441707579038765,0.811107765753854,0.362915619661022,0.675911680539988,0.751633686853232,0.134330418318818,0.422328351132878,0.88879226384572,0.321965170625565,0.691511449722118,0.719770386786918,0.450725401100447,0.444795554312687,0.218796536949274,0.775333429058393,0.262919030071161,0.44720106236376,0.221721057381221,0.717571774560559,0.594853364811142,0.374996071984056,0.191126902160353,0.345761698201077,0.616201425871068,0.204892060211759,0.222211264141101,0.464096422692851,0.465143617349811,0.614325556870853,0.459441900262089,0.400257013691829,0.710505554322624,0.60229245894802,0.455100000468176,0.82717595256602,0.831569582206728,0.438368487347261,0.520466706688019,0.496494412372349,0.572278774177915,0.786116956394275,0.547321910129229,0.769961090590769,0.547999661786481,0.155183831607163,0.34956781119068,0.807374028449295,0.777244602821064,0.365059757526088,0.171866135040173,0.692373424994176,0.202499961249996,0.395983608948052,0.388658293838295,0.122544756971807,0.625822217460556,0.585587258949491,0.69407504856966,0.756477967003806,0.34565986021949,0.544635448413562,0.285467240992437,0.195464510512971,0.542982690309158,0.551424308774457,0.243681663548277,0.823749077388783,0.823260376577508,0.754140332158786,0.747086822331964,0.388840170427077,0.590363483541052,0.592758663038498,0.588618374931271,0.251968872083322,0.44760226961002,0.213027568499583,0.393612155824539,0.189556397534494,0.37682001034433,0.353451299204911,0.815690318183685,0.3791731083106,0.234197374418562,0.219324214169126,0.595654280526242,0.68368615352892,0.686210441995608,0.220718441876321,0.408884285910879,0.747577346672842,0.369362780283543,0.926479183953702,0.5486051033238,0.399346262076261,0.733577484994733,0.799729085480542,0.689591634682931,0.383098276269714,0.170998453554696,0.456291218107838,0.733709656059472,0.198844655182999,0.79419616371784,0.615304089491539,0.23560829766617,0.348978658485207,0.578207707151964,0.316774226228496,0.17917089958598,0.636409367049494,0.494495693821922,0.434551681098111,0.786624298185692,0.404328036358886,0.346229024786715,0.824471227894045,0.393657161149808,0.545358154173343,0.762973918312205,0.607501301595477,0.607083192893381,0.616090505072931,0.61878376507087,0.490288657360048,0.355218948894384,0.148539965412151,0.15870899912781,0.686181978542527,0.787708633428168,0.594734317012815,0.603202949327606,0.410235564373653,0.700333033362714,0.797731334015477,0.750897565857412,0.737033068469756,0.765274911481212,0.297976871252038,0.228506600557367,0.666790514548114,0.633545973788524,0.244749689469812,0.828079474603831,0.549125791712781,0.704383019874229,0.786084904275914,0.643815845617853,0.280625550663681,0.202217609204555,0.317273354965517,0.656339124689195,0.821659845180493,0.783205401462694,0.585857100352512,0.709237100984191,0.693993856426323,0.416657896308841,0.150446964521377,0.451285244153147,0.715879102671406,0.358647071857608,0.53394116031373,0.405136491037101,0.324863127968147,0.428500159809832,0.592151376458026,0.401800432756357,0.857940753277336,0.611635100805792,0.441461315463727,0.494286367990343,0.502630157165816,0.513499171159695,0.698106397174398,0.388001053815709,0.661560754581877,0.786040733881333,0.780271295206874,0.21565433318322,0.797647586881786,0.746340681143422,0.302237687494827,0.746602186557466,0.746844156642299,0.411008237917915,0.717029304212918,0.155457641748206,0.273123395185101,0.666995494642291,0.597128785538607,0.645413222718437,0.745637282259424,0.822627443794746,0.582770736546042,0.388251698984068,0.410419666078333,0.665061092390736,0.642497493133412,0.354663519193105,0.650170489773313,0.279795181872132,0.292324551327456,0.373773755993483,0.661958463314882,0.205772508453366,0.305062548960617,0.310005091745411,0.831682928913909,0.762404262006659,0.36369605037728,0.799309022118625,0.573872868925215,0.556976480043471,0.675223875907458,0.717338813531528,0.40076503059898,0.50315184234935,0.22657868617827,0.654754424192714,0.474091102391566,0.690182311777195,0.338682710182558,0.423157199633454,0.195951179830312,0.757600246004388,0.511257990786115,0.534658611644673,0.272264190038912,0.383408993420572,0.815576675409057,0.833950242105825,0.339107380517858,0.656585040974044,0.295061521739756,0.280109936399488,0.66417670819366,0.82191713086508,0.56394416924002,0.442134781826413,0.672287854945555,0.331204382498939,0.233547353729184,0.381067623413231,0.800562427240016,0.288872926345908,0.79333181171057,0.590806233455247,0.372461237779317,0.827162907158176,0.621304802942374,0.558664970107996,0.712770649569827,0.480411106655757,0.267536369913757,0.606752115727171,0.682116169326116,0.662469642714103,0.768044266959694,0.753568188476905,0.533921391408817,0.515965067749811,0.518031774245232,0.382779247716795,0.547097936642447,0.545042297332587,0.411840356478319,0.764985462012687,0.789040555841327,0.308541831149293,0.554439074457101,0.375459445198495,0.822751702994808,0.659426222005325,0.478473902520234,0.44881570357719,0.173494107484346,0.659143660971097,0.17219753798302,0.602930254817875,0.373575242258213,0.639260634863061,0.591445805729782,0.738965603140151,0.502827994760897,0.393980839703214,0.222433951937066,0.630543322284281,0.324612441821594,0.673364108263854,0.64834881955604,0.899506471445324,0.820017067315073,0.200527914381146,0.64995220713313,0.745633080970154,0.661628388065499,0.507118514047115,0.678952787005299,0.526607082017332,0.743054969695448,0.644588730199811,0.535623324369661,0.639037031204474,0.596886995757825,0.386452814691191,0.539177026030772,0.730505921487236,0.798190540772109,0.715779849389363,0.435617451170103,0.780612508329202,0.491176937558853,0.646532831989725,0.222508091733333,0.513311212382569,0.627305953835422,0.409700669869502,0.74127421927757,0.632579591202158,0.410120337791853,0.38672738497772,0.784761955062637,0.728176400324494,0.808948191403363,0.218730459612543,0.753977890502641,0.733802215553636,0.250520114694275,0.772300774345455,0.282970112872282,0.441377411588447,0.832135819906495,0.748774506150535,0.714926677257686,0.526217303589189,0.501417376800829,0.603928848313101,0.406776874751576,0.558382014658658,0.554275716938335,0.712471283378519,0.589735233541332,0.762310183245978,0.526950122767082,0.539162121237407,0.67389486601939,0.625159266102276,0.199924417259101,0.641998844865708,0.57285601247368,0.172456392107956,0.804171848999496,0.45980687356536,0.629902868978589,0.336088928846725,0.390704201851696,0.571954281182917,0.72974612431577,0.486108989209038,0.183124620125745,0.746879647855535,0.796882092716994,0.617346630121904,0.556325699208608,0.515796302133981,0.455618565162289,0.260940070181098,0.503711026677593,0.826491598297368,0.81760481220447,0.491259272993784,0.791465492678308,0.807983675373703,0.253147393654238,0.203678643660321,0.222880455453769,0.61377426391819,0.394673887495579,0.363959238970614,0.772442487182508,0.332293834893307,0.306455754261888,0.268068224860419,0.219332460006077,0.382596575126608,0.405300304438267,0.247186906446877,0.2430193063738,0.3424671364878,0.31590932613789,0.170556389000785,0.434116862513234,0.680207597678721,0.628665409496674,0.632780282928404,0.770735970810741,0.407518778794928,0.810805603825306,0.660883003949079,0.225876262575273,0.225984824053929,0.436033417737143,0.340518963514379,0.736923362675052,0.59764532590997,0.178049299798952,0.576781116916594,0.439287864872523,0.420803345619518,0.594965605107104,0.245368636395194,0.176577639697658,0.364960823873953,0.546461559642536,0.608822701833046,0.784260729266574,0.545057449019568,0.779325352543337,0.512537516432384,0.215320035131015,0.495663098008989,0.759252679356609,0.777054754949226,0.236252428764713,0.65029159775031,0.336358061327001,0.209128436035596,0.442793916065985,0.562378600437547,0.319044278812636,0.0982022226305699,0.411049269382888,0.754280754182749,0.830425800923655,0.183274429229344,0.367787997534301,0.79346529305304,0.933435463796775,0.470359389409758,0.532836198697645,0.728420770707001,0.22513635929221,0.401749477397417,0.64054095753519,0.591434602291728,0.523945070965164,0.27019365310687,0.573992804925882,0.363621281565746,0.755926434328711,0.624954935512464,0.706642110791655,0.847065863010535,0.823524183941562,0.31458734913225,0.219721216028297,0.323598717128484,0.60439804657772,0.22175508669741,0.398838222631103,0.460233871462041,0.607578956296275,0.204931964776415,0.493893867585709,0.679681509388314,0.461185135143981,0.270105783566931,0.613857025526331,0.227783702200077,0.273226960397537,0.296911545793444,0.659328705174223,0.804542162785812,0.465881812866667,0.789158033150395,0.69638645019977,0.21520649480187,0.784223942117974,0.353784956972846,0.250447136629789,0.605548818740574,0.369357075094578,0.771246004869459,0.295616977052406,0.39494982952713,0.39670688430472,0.297542430690995,0.40360805974678,0.21505724914843,0.192805667075148,0.289062061197182,0.325619021966699,0.827686980345926,0.784052849965219,0.566973332610888,0.557846710372573,0.16199280201643,0.615196821899337,0.830715967510562,0.380522607295329,0.386730544396425,0.593410649656701,0.285317246462514,0.364386049392061,0.520360323200338,0.548640340472237,0.388369506167592,0.226809177246698,0.298210084296959,0.194528057374552,0.459910188810816,0.498908287146043,0.49677768642714,0.284044573394623,0.450767402724146,0.457737863071019,0.788677827118596,0.611013589669963,0.205725797410799,0.573381375450065,0.822215275906227,0.265918106228037,0.412712669524097,0.603091173109683,0.603086917524307,0.218555839237343,0.487019543104823,0.449207703023411,0.831735742633916,0.701903652727514,0.762645944219684,0.547618047238903,0.358409800947094,0.830236504208517,0.226589517739219,0.210099975727592,0.315649636057811,0.590246988684169,0.663799561293609,0.420338766621741,0.211739107558261,0.675411902298603,0.911540432983581,0.723994563402603,0.409930760376091,0.70577453789839,0.409838967174142,0.44643180844973,0.451009016298697,0.816169567374671,0.176006634185097,0.79597328346779,0.811652977542629,0.203433144328588,0.63363689517941,0.838002707798037,0.374880478647426,0.789054000786556,0.359301493604948,0.785218412182497,0.498973240655822,0.621194161820406,0.364957784316463,0.506763733044978,0.401678272664247,0.580341694718545,0.213072222436846,0.797524306036089,0.741173049240534,0.7566028582925,0.734865752314092,0.71974085790081,0.175854087738184,0.385626898180346,0.361910666350192,0.82766885773993,0.609477525166681,0.311468264238414,0.228410186039666,0.790325323622977,0.640077249324021,0.475071657286092,0.595493576345494,0.732606416551961,0.377382028314641,0.337246559734686,0.772607602665767,0.728739153853375,0.855197457880897,0.626280590310954,0.303423797202691,0.407202524465697,0.600925345486892,0.293274843826215,0.395377177787365,0.736955349228303,0.814100360185001,0.703040200335011,0.573498499322216,0.803199068692698,0.429821912459863,0.19508076509934,0.189308713040602,0.786008076310165,0.237137209425808,0.648519346209727,0.754812423703086,0.789078846889621,0.797499438419472,0.585544443908655,0.595796679748033,0.294626972586501,0.288989074937058,0.412562704703363,0.721244909215015,0.281952972646759,0.215274470453406,0.263119704381674,0.312469724158263,0.357726970042779,0.43712185694568,0.327590201122305,0.754499652520288,0.623823142399847,0.682009091258058,0.21429008307335,0.311697610990794,0.42455150827258,0.411142102406493,0.387800209445693,0.553089169788257,0.446716724705619,0.785283824648041,0.67608588396207,0.819952200883955,0.203029972177958,0.483040740837381,0.421788148928236,0.52866742664824,0.672499429455492,0.255975733144186,0.80420720191133,0.403891867542539,0.736320984257684,0.759463819497697,0.442002337232234,0.256400519242883,0.65454148306003,0.197490608643266,0.458125352867065,0.513184468879536,0.404195447316575,0.748938176128024,0.592973427700785,0.230691797547687,0.605251654102701,0.402247539676956,0.596235760065015,0.27021261166801,0.426677977365142,0.406170866690735,0.720261490969231,0.226210103720622,0.582231393859006,0.844646337343982,0.383837174562586,0.5829535935381,0.339430181113472,0.347584825193123,0.593851630337398,0.816142121205239,0.287040117231235,0.258346667893554,0.417564187448066,0.573870975732683,0.649711082223534,0.580215494176574,0.414103182558066,0.381468784559023,0.521956932984252,0.410280177332722,0.75432029301703,0.92149475223524,0.873395709622089,0.712349999195291,0.567448975720861,0.389608266707145,0.388210183976414,0.417502510144843,0.19203407125737,0.779915552241649,0.289554719477477,0.62329346749307,0.58633317270906,0.344426924730117,0.766532962505271,0.291956991275732,0.314509633988617,0.547733955083167,0.646929276545466,0.713206876780099,0.252005182860424,0.323406657458662,0.823326192678256,0.612823334208525,0.198617373731562,0.799470627819626,0.693868242896971,0.677270667000926,0.211730606632056,0.452048477346123,0.786980924230983,0.39404979678248,0.314281155973935,0.221700583651383,0.240593757937284,0.696343071708775,0.376832696168528,0.168445106426668,0.413262369449495,0.215663711042762,0.586042509261558,0.665012907157664,0.531675983110141,0.232705606317805,0.72422896276622,0.807676461858374,0.641612451236334,0.445820615622979,0.553001403718257,0.324216277966477,0.515713044689701,0.81045842632694,0.404998364816418,0.628706374372082,0.288346375001917,0.737586664396885,0.459259920203369,0.684278399063534,0.815391735700324,0.823869075881195,0.789610201902325,0.713694823592617,0.402345522635007,0.58927562212504,0.572219853682648,0.208012493288156,0.557863752178721,0.191674832852255,0.582347781148132,0.780262798378489,0.227607040086395,0.603229508319152,0.816789094141488,0.216887418242998,0.38767361653752,0.32904387589455,0.759712228281155,0.82810662982809,0.744641774422156,0.78836092943173,0.239082146146411,0.551911367384634,0.283818495677615,0.670693588089844,0.71183504468001,0.642705619328381,0.173134075126736,0.400657162676246,0.612172243988302,0.0493198900477215,0.0673314574335995]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1501.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1501.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1501.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1501_field1":[0,0,0,0,130.614929891225,0,0,170.736224054792,0,-975.895698406651,984.477020705839,1256.5569134744,-871.109258827612],"Archive1501_field2":[0,0,0,0,7764.37144681409,0,0,13758.3923621435,0,6097.11584493823,2864.53151908722,6064.59254214365,2800.59512586271],"Archive1501_field3":[0,0,0,0,7765.46999376164,0,0,13759.451705969,0,6174.7221832861,3028.98263912852,6193.40116406363,2932.94466361388],"Archive1501_field4":[9756387.74481257,9575303.7878699,4210945.73532533,4751274.78225234,6184903.61697831,11226421.3718845,7374589.05068761,3075290.10208896,7556963.83789645,5370131.3011505,7849934.2752943,5469681.09611123,7778779.72816879],"Archive1501_field5":[-972.178138091068,-954.134098308796,-419.60679669383,-473.446193065473,-616.295847987239,-1118.65612733555,-734.845589713862,-306.440680423614,-753.017839601456,-535.109989357915,-782.209985957232,-545.029208295298,-775.119782045201],"Archive1501_field6":[112.378279866579,110.292491189457,48.5041662481418,54.7276951635116,71.240305219899,129.310304795604,84.9439831076003,35.4228049344636,87.0445921458608,61.8556803401734,90.4190387256997,63.0022858007651,89.5994513596416],"Archive1501_field7":[1084.55641795765,1064.42658949825,468.110962941972,528.173888228984,687.536153207138,1247.96643213115,819.789572821463,341.863485358078,840.062431747317,596.965669698089,872.629024682931,608.031494096063,864.719233404843],"Archive1501_field8":[11.0134117732928,10.2687733857659,-4.71226775274525,-2.13997492659263,4.45067838915566,24.9931241168708,5.62280531030319,-21.1209231125271,6.28388608785428,8.90192078843859,3.56069211804152,8.68700990403011,3.51943625579554],"Archive1501_field9":[0,0,0,0,-1.68865489546905e-12,0,0,5.66952563418984e-13,0,121.701197670416,-931.726524496613,-121.701197670416,931.726524496612],"Archive1501_field10":[0,0,0,0,3067.4153304141,0,0,2101.59440980844,0,1262.18747431101,1678.26195622177,1262.18747431101,1678.26195622177],"Archive1501_field11":[0,0,0,0,3067.4153304141,0,0,2101.59440980844,0,1268.04116724262,1919.55138252453,1268.04116724262,1919.55138252453],"Archive1501_field12":[8995.77,8995.77,8995.77,8995.77,8995.77,8329417.90992544,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77],"Archive1501_field13":[-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-829.984112677433,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767],"Archive1501_field14":[0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,95.9414568634765,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive1501_field15":[1,1,1,1,1,925.92556954091,1,1,1,1,1,1,1],"Archive1501_field16":[1.01341177329277,0.26877338576594,-14.7122677527452,-12.1399749265926,-5.54932161084434,14.9931241168708,-4.37719468969681,-31.1209231125271,-3.71611391214572,-1.09807921156141,-6.43930788195848,-1.31299009596989,-6.48056374420446],"Archive1501_field17":[0,0,0,0,133.473398039604,0,0,174.923551947599,0,-941.571128776972,971.774949138136,1229.2089008461,-856.735436232921],"Archive1501_field18":[0,0,0,0,7735.77191298987,0,0,13614.9237419755,0,6059.66919243073,2859.50320571611,6025.60778931115,2795.18846227123],"Archive1501_field19":[0,0,0,0,7736.92330566791,0,0,13616.0473981561,0,6132.38509164586,3020.11674199411,6149.70761520631,2923.53795037988],"Archive1501_field20":[9722536.00142142,9540380.63558033,4132186.82918054,4690220.25528077,6170739.48062426,11228212.9670863,7321341.42906602,3038154.5285867,7509246.37459743,5333100.50314936,7812182.85272535,5437048.79204115,7740714.06844737],"Archive1501_field21":[-968.860091966122,-950.711341978491,-411.891396859742,-467.465301624902,-614.90773429171,-1118.83305219413,-729.628522800499,-302.801338176714,-748.342118589736,-531.481772219018,-778.510247387326,-541.831908932704,-771.389633870228],"Archive1501_field22":[111.994732550064,109.896839966979,47.6123097787707,54.0363380286146,71.0798471482238,129.330756305974,84.3409197566554,35.0021176082134,86.5041053113545,61.4362790133216,89.9913699269974,62.6326961252635,89.1682673830362],"Archive1501_field23":[1080.85482451619,1060.60818194547,459.503706638513,521.501639653516,685.987581439934,1248.16380850011,813.969442557155,337.803455784928,834.846223901091,592.91805123234,868.501617314324,604.464605057968,860.557901253265],"Archive1501_field24":[11.0134117732928,10.2687733857659,-4.71226775274525,-2.13997492659263,4.45067838915566,24.9931241168708,5.62280531030319,-21.1209231125271,6.28388608785428,8.90192078843859,3.56069211804152,8.68700990403011,3.51943625579554],"Archive1501_field25":[0,0,0,0,-4.36369796304399e-12,0,0,1.09111595789874e-12,0,121.701104372446,-931.725811828748,-121.701104372448,931.725811828745],"Archive1501_field26":[0,0,0,0,3067.41298214882,0,0,2101.5928021478,0,1262.18650842763,1678.26067351606,1262.18650842763,1678.26067351606],"Archive1501_field27":[0,0,0,0,3067.41298214882,0,0,2101.5928021478,0,1268.04019686373,1919.54991513598,1268.04019686373,1919.54991513598],"Archive1501_field28":[8995.77,8995.77,8995.77,8995.77,8995.77,8329416.07201492,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77],"Archive1501_field29":[-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-829.983940847094,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767],"Archive1501_field30":[0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,95.9414370008637,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive1501_field31":[1,1,1,1,1,925.925377847958,1,1,1,1,1,1,1],"Archive1501_field32":[1.01341177329277,0.26877338576594,-14.7122677527452,-12.1399749265926,-5.54932161084434,14.9931241168708,-4.37719468969681,-31.1209231125271,-3.71611391214572,-1.09807921156141,-6.43930788195848,-1.31299009596989,-6.48056374420446],"Archive1501_field33":[0,0,0,0,133.47339815642,0,0,174.923552128331,0,-941.571127353225,971.774948588535,1229.20889971834,-856.735435616279],"Archive1501_field34":[0,0,0,0,7735.77191179425,0,0,13614.9237360073,0,6059.6691908728,2859.50320549858,6025.60778768594,2795.1884620383],"Archive1501_field35":[0,0,0,0,7736.92330447448,0,0,13616.0473921908,0,6132.3850898878,3020.11674161131,6149.70761338848,2923.53794997648],"Archive1501_field36":[9722535.99992976,9540380.63404339,4132186.82588662,4690220.25275232,6170739.48002218,11228212.9672086,7321341.42684491,3038154.52701659,7509246.37260127,5333100.50159903,7812182.85112882,5437048.79067973,7740714.06685033],"Archive1501_field37":[-968.860091819969,-950.711341827912,-411.891396536996,-467.465301377127,-614.90773423271,-1118.83305220613,-729.628522582821,-302.801338022837,-748.342118394084,-531.48177206709,-778.510247230842,-541.83190879928,-771.389633713697],"Archive1501_field38":[111.99473253317,109.896839949573,47.612309741463,54.0363379999732,71.0798471414038,129.330756307361,84.340919731493,35.0021175904261,86.5041052887381,61.4362789957596,89.9913699089087,62.6326961098404,89.1682673649421],"Archive1501_field39":[1080.85482435314,1060.60818177749,459.503706278459,521.5016393771,685.987581374114,1248.16380851349,813.969442314314,337.803455613263,834.846223682822,592.91805106285,868.501617139751,604.46460490912,860.557901078639],"Archive1501_field40":[11.0134117732928,10.2687733857659,-4.71226775274525,-2.13997492659263,4.45067838915566,24.9931241168708,5.62280531030319,-21.1209231125271,6.28388608785428,8.90192078843859,3.56069211804152,8.68700990403011,3.51943625579554]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1502.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1502.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1502.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1502_field1":[0,0,0,0,130.614929891222,0,0,170.736224054825,0,-975.895698406602,984.477020705817,1256.55691347438,-871.109258827602,0,0,0,0,130.614929891222,0,0,170.736224054825,0,-975.895698406602,984.477020705817,1256.55691347438,-871.109258827603,0,0,0,0,130.614929891222,0,0,170.736224054825,0,-975.895698406602,984.477020705817,1256.55691347438,-871.109258827602],"Archive1502_field2":[0,0,0,0,7764.37144681402,0,0,13758.3923621434,0,6097.11584493816,2864.53151908717,6064.5925421436,2800.59512586269,0,0,0,0,7764.37144681402,0,0,13758.3923621434,0,6097.11584493816,2864.53151908717,6064.5925421436,2800.59512586269,0,0,0,0,7764.37144681402,0,0,13758.3923621434,0,6097.11584493816,2864.53151908717,6064.5925421436,2800.59512586269],"Archive1502_field3":[0,0,0,0,2.77000840036866,0,0,6.93268476028912,0,0.988307247548113,-1.28254309618303,0.831007069711602,-1.34774193433839,0,0,0,0,-0.958142376762339,0,0,6.62230162093092,0,-1.44789751453641,-7.78657580891418,-2.04388124882498,-7.55392210930037,0,0,0,0,-4.68629315389334,0,0,6.31191848157273,0,-3.88410227662093,-14.2906085216453,-4.91876956736156,-13.7601022842624],"Archive1502_field4":[0,0,0,0,7765.47048780419,0,0,13759.4534524816,0,6174.72226237875,3028.98291065804,6193.40121981426,2932.94497326993,0,0,0,0,7765.47005287176,0,0,13759.4532995962,0,6174.72235304323,3028.99264754877,6193.40150131369,2932.95439131949,0,0,0,0,7765.47140779971,0,0,13759.4531537123,0,6174.72340489961,3029.01635017601,6193.40311729489,2932.9769416475],"Archive1502_field5":[9756387.74481246,9575303.78786991,4210945.73532527,4751274.78225234,6184903.61697833,11226421.3718844,7374589.0506875,3075290.10208894,7556963.83789642,5370131.30115047,7849934.27529428,5469681.0961112,7778779.72816882,4878193.87240623,4787651.89393496,2105472.86766264,2375637.39112617,3092451.80848916,5613210.68594219,3687294.52534375,1537645.05104447,3778481.91894821,2685065.65057524,3924967.13764714,2734840.5480556,3889389.86408441,-2.55675161042745e-10,2.55675161042745e-10,1.91756370782059e-10,1.91756370782059e-10,-2.55675161042746e-10,-7.67025483128236e-10,0,0,-1.27837580521373e-10,-5.11350322085491e-10,3.83512741564118e-10,-6.39187902606864e-11,5.11350322085491e-10],"Archive1502_field6":[-972.178138091058,-954.134098308797,-419.606796693825,-473.446193065473,-616.295847987241,-1118.65612733554,-734.845589713852,-306.440680423612,-753.017839601452,-535.109989357912,-782.20998595723,-545.029208295296,-775.119782045203,-972.178138091058,-954.134098308797,-419.606796693825,-473.446193065473,-616.295847987241,-1118.65612733554,-734.845589713852,-306.440680423612,-753.017839601452,-535.109989357912,-782.20998595723,-545.029208295296,-775.119782045203,-972.178138091058,-954.134098308797,-419.606796693825,-473.446193065473,-616.295847987241,-1118.65612733554,-734.845589713852,-306.440680423612,-753.017839601452,-535.109989357912,-782.20998595723,-545.029208295296,-775.119782045203],"Archive1502_field7":[112.378279866578,110.292491189458,48.5041662481411,54.7276951635116,71.2403052198992,129.310304795603,84.9439831075991,35.4228049344634,87.0445921458603,61.855680340173,90.4190387256995,63.0022858007649,89.5994513596418,112.378279866578,110.292491189458,48.5041662481411,54.7276951635116,71.2403052198992,129.310304795603,84.9439831075991,35.4228049344634,87.0445921458603,61.855680340173,90.4190387256995,63.0022858007649,89.5994513596418,112.378279866578,110.292491189458,48.5041662481411,54.7276951635116,71.2403052198992,129.310304795603,84.9439831075991,35.4228049344634,87.0445921458603,61.855680340173,90.4190387256995,63.0022858007649,89.5994513596418],"Archive1502_field8":[1084.55641795764,1064.42658949825,468.110962941966,528.173888228984,687.53615320714,1247.96643213115,819.789572821451,341.863485358075,840.062431747313,596.965669698085,872.62902468293,608.031494096061,864.719233404845,1084.55641795764,1064.42658949825,468.110962941966,528.173888228984,687.53615320714,1247.96643213115,819.789572821451,341.863485358076,840.062431747312,596.965669698085,872.62902468293,608.031494096061,864.719233404845,1084.55641795764,1064.42658949825,468.110962941966,528.173888228984,687.53615320714,1247.96643213115,819.789572821451,341.863485358075,840.062431747313,596.965669698085,872.62902468293,608.031494096061,864.719233404845],"Archive1502_field9":[11.0134117732925,10.2687733857661,-4.71226775274519,-2.13997492659246,4.45067838915577,24.9931241168704,5.62280531030285,-21.120923112527,6.28388608785428,8.90192078843847,3.56069211804163,8.68700990402988,3.51943625579565,11.0134117732925,10.2687733857661,-4.71226775274519,-2.13997492659246,4.45067838915554,24.9931241168699,5.62280531030251,-21.120923112527,6.28388608785417,8.90192078843859,3.56069211804152,8.68700990402994,3.51943625579577,11.0134117732925,10.2687733857661,-4.71226775274519,-2.13997492659246,4.45067838915577,24.9931241168704,5.62280531030285,-21.120923112527,6.28388608785428,8.90192078843847,3.56069211804163,8.68700990402988,3.51943625579565],"Archive1502_field10":[0,0,0,0,7.36654356146844e-13,0,0,6.69260394513703e-14,0,121.701197670413,-931.726524496586,-121.701197670412,931.726524496587,0,0,0,0,7.36654356146844e-13,0,0,6.69260394513703e-14,0,121.701197670413,-931.726524496586,-121.701197670412,931.726524496587,0,0,0,0,7.36654356146844e-13,0,0,6.69260394513703e-14,0,121.701197670413,-931.726524496586,-121.701197670412,931.726524496587],"Archive1502_field11":[0,0,0,0,3067.41533041401,0,0,2101.59440980838,0,1262.18747431097,1678.26195622172,1262.18747431097,1678.26195622172,0,0,0,0,3067.41533041401,0,0,2101.59440980838,0,1262.18747431097,1678.26195622172,1262.18747431097,1678.26195622172,0,0,0,0,3067.41533041401,0,0,2101.59440980838,0,1262.18747431097,1678.26195622172,1262.18747431097,1678.26195622172],"Archive1502_field12":[0,0,0,0,-0.859640005481626,0,0,-2.16290857064548,0,-3.24436285596823,-0.985387776322147,-3.24436285596823,-0.985387776322146,0,0,0,0,-1.24270062512645,0,0,-2.10742872372048,0,-3.16150184186766,-1.85084317854246,-3.16150184186766,-1.85084317854245,0,0,0,0,-1.62576124477127,0,0,-2.05194887679548,0,-3.07864082776711,-2.71629858076277,-3.0786408277671,-2.71629858076276],"Archive1502_field13":[0,0,0,0,3067.41545087063,0,0,2101.59552281387,0,1268.04531768871,1919.5516354453,1268.04531768871,1919.5516354453,0,0,0,0,3067.41558214138,0,0,2101.59546644773,0,1268.04510839158,1919.55227482143,1268.04510839158,1919.55227482143,0,0,0,0,3067.41576124896,0,0,2101.59541154619,0,1268.04490450901,1919.55330439913,1268.04490450901,1919.55330439913],"Archive1502_field14":[8995.77,8995.77,8995.77,8995.77,8995.77,8329417.90992536,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,4497.885,4497.885,4497.885,4497.885,4497.885,4164708.95496268,4497.885,4497.885,4497.885,4497.885,4497.885,4497.885,4497.885,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive1502_field15":[-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-829.984112677426,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-829.984112677426,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-829.984112677426,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767],"Archive1502_field16":[0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,95.9414568634756,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,95.9414568634756,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,95.9414568634756,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive1502_field17":[1,1,1,1,1,925.925569540901,1,1,1,1,1,1,1,1,1,1,1,1,925.925569540901,1,1,1,1,1,1,1,1,1,1,1,1,925.925569540901,1,1,1,1,1,1,1],"Archive1502_field18":[1.01341177329255,0.268773385766053,-14.7122677527452,-12.1399749265925,-5.54932161084423,14.9931241168704,-4.37719468969715,-31.120923112527,-3.71611391214572,-1.09807921156153,-6.43930788195837,-1.31299009597012,-6.48056374420435,1.01341177329255,0.268773385766053,-14.7122677527452,-12.1399749265925,-5.54932161084446,14.9931241168699,-4.37719468969749,-31.120923112527,-3.71611391214583,-1.09807921156141,-6.43930788195848,-1.31299009597007,-6.48056374420423,1.01341177329255,0.268773385766053,-14.7122677527452,-12.1399749265925,-5.54932161084423,14.9931241168704,-4.37719468969715,-31.120923112527,-3.71611391214572,-1.09807921156153,-6.43930788195837,-1.31299009597012,-6.48056374420435],"Archive1502_field19":[0,0,0,0,133.473398039604,0,0,174.92355194763,0,-941.571128776926,971.77494913812,1229.20890084609,-856.735436232911,0,0,0,0,133.473398039604,0,0,174.92355194763,0,-941.571128776926,971.77494913812,1229.20890084609,-856.735436232911,0,0,0,0,133.473398039604,0,0,174.92355194763,0,-941.571128776926,971.77494913812,1229.20890084609,-856.735436232911],"Archive1502_field20":[0,0,0,0,7735.7719129898,0,0,13614.9237419753,0,6059.66919243066,2859.50320571607,6025.6077893111,2795.18846227121,0,0,0,0,7735.7719129898,0,0,13614.9237419753,0,6059.66919243066,2859.50320571607,6025.6077893111,2795.18846227121,0,0,0,0,7735.7719129898,0,0,13614.9237419753,0,6059.66919243066,2859.50320571607,6025.6077893111,2795.18846227121],"Archive1502_field21":[0,0,0,0,2.75614210852599,0,0,6.93606880001018,0,0.981297643728268,-1.28566644172161,0.814933858315516,-1.34767074213064,0,0,0,0,-0.945348031402099,0,0,6.65687955892369,0,-1.37479142240909,-7.74888265634117,-1.98610407404424,-7.50881850118489,0,0,0,0,-4.6468381713302,0,0,6.37769031783722,0,-3.73088048854646,-14.2120988709607,-4.78714200640399,-13.6699662602392],"Archive1502_field22":[0,0,0,0,7736.92379658127,0,0,13616.0491647863,0,6132.38517015888,3020.11701564874,6149.70766920209,2923.53826099945,0,0,0,0,7736.92336342225,0,0,13616.0490254286,0,6132.38524574989,3020.1266828488,6149.70793592144,2923.54759319334,0,0,0,0,7736.92470112584,0,0,13616.0488917954,0,6132.38622656048,3020.15018153521,6149.70947844322,2923.56990942389],"Archive1502_field23":[9722536.00142135,9540380.63558034,4132186.82918049,4690220.25528077,6170739.48062427,11228212.9670862,7321341.42906592,3038154.52858667,7509246.37459739,5333100.50314933,7812182.85272533,5437048.79204114,7740714.0684474,4861268.00071068,4770190.31779017,2066093.41459024,2345110.12764039,3085369.74031213,5614106.48354312,3660670.71453296,1519077.26429333,3754623.1872987,2666550.25157466,3906091.42636266,2718524.39602057,3870357.0342237,5.11350322085491e-10,0,-2.55675161042745e-10,-1.91756370782059e-10,3.83512741564118e-10,7.67025483128236e-10,-1.27837580521373e-10,1.91756370782059e-10,2.55675161042745e-10,-1.91756370782059e-10,2.55675161042745e-10,5.11350322085491e-10,-2.55675161042745e-10],"Archive1502_field24":[-968.860091966116,-950.711341978492,-411.891396859737,-467.465301624902,-614.90773429171,-1118.83305219412,-729.62852280049,-302.801338176711,-748.342118589732,-531.481772219014,-778.510247387324,-541.831908932703,-771.38963387023,-968.860091966116,-950.711341978492,-411.891396859737,-467.465301624902,-614.90773429171,-1118.83305219412,-729.62852280049,-302.801338176711,-748.342118589732,-531.481772219014,-778.510247387324,-541.831908932703,-771.38963387023,-968.860091966116,-950.711341978492,-411.891396859737,-467.465301624902,-614.90773429171,-1118.83305219412,-729.62852280049,-302.801338176711,-748.342118589732,-531.481772219014,-778.510247387324,-541.831908932703,-771.38963387023],"Archive1502_field25":[111.994732550064,109.896839966979,47.6123097787701,54.0363380286146,71.0798471482239,129.330756305973,84.3409197566542,35.0021176082131,86.504105311354,61.4362790133211,89.9913699269971,62.6326961252633,89.1682673830365,111.994732550064,109.896839966979,47.6123097787701,54.0363380286146,71.0798471482239,129.330756305973,84.3409197566542,35.0021176082131,86.504105311354,61.4362790133211,89.9913699269971,62.6326961252633,89.1682673830365,111.994732550064,109.896839966979,47.6123097787701,54.0363380286146,71.0798471482239,129.330756305973,84.3409197566542,35.0021176082131,86.504105311354,61.4362790133211,89.9913699269971,62.6326961252633,89.1682673830365],"Archive1502_field26":[1080.85482451618,1060.60818194547,459.503706638507,521.501639653516,685.987581439935,1248.1638085001,813.969442557144,337.803455784924,834.846223901086,592.918051232335,868.501617314321,604.464605057966,860.557901253267,1080.85482451618,1060.60818194547,459.503706638507,521.501639653516,685.987581439935,1248.1638085001,813.969442557144,337.803455784924,834.846223901086,592.918051232335,868.501617314321,604.464605057966,860.557901253267,1080.85482451618,1060.60818194547,459.503706638507,521.501639653516,685.987581439935,1248.1638085001,813.969442557144,337.803455784924,834.846223901086,592.918051232335,868.501617314321,604.464605057966,860.557901253267],"Archive1502_field27":[11.0134117732925,10.2687733857661,-4.71226775274519,-2.13997492659246,4.45067838915577,24.9931241168704,5.62280531030285,-21.120923112527,6.28388608785428,8.90192078843847,3.56069211804163,8.68700990402988,3.51943625579565,11.0134117732925,10.2687733857661,-4.71226775274519,-2.13997492659246,4.45067838915554,24.9931241168699,5.62280531030251,-21.120923112527,6.28388608785417,8.90192078843859,3.56069211804152,8.68700990402994,3.51943625579577,11.0134117732925,10.2687733857661,-4.71226775274519,-2.13997492659246,4.45067838915577,24.9931241168704,5.62280531030285,-21.120923112527,6.28388608785428,8.90192078843847,3.56069211804163,8.68700990402988,3.51943625579565],"Archive1502_field28":[0,0,0,0,-1.97048876719189e-12,0,0,3.02985464311821e-13,0,121.701104372443,-931.72581182872,-121.701104372444,931.725811828719,0,0,0,0,-1.97048876719189e-12,0,0,3.02985464311821e-13,0,121.701104372443,-931.72581182872,-121.701104372444,931.725811828719,0,0,0,0,-1.97048876719189e-12,0,0,3.02985464311821e-13,0,121.701104372443,-931.72581182872,-121.701104372444,931.725811828719],"Archive1502_field29":[0,0,0,0,3067.41298214873,0,0,2101.59280214774,0,1262.18650842759,1678.26067351602,1262.18650842759,1678.26067351602,0,0,0,0,3067.41298214873,0,0,2101.59280214774,0,1262.18650842759,1678.26067351602,1262.18650842759,1678.26067351602,0,0,0,0,3067.41298214873,0,0,2101.59280214774,0,1262.18650842759,1678.26067351602,1262.18650842759,1678.26067351602],"Archive1502_field30":[0,0,0,0,-0.859641272757552,0,0,-2.16290838960606,0,-3.2443625844091,-0.985390219011555,-3.2443625844091,-0.985390219011556,0,0,0,0,-1.24270151482638,0,0,-2.10742859720085,0,-3.1615016518132,-1.85084476874015,-3.16150165181319,-1.85084476874015,0,0,0,0,-1.6257617568952,0,0,-2.05194880479563,0,-3.07864071921729,-2.71629931846875,-3.07864071921729,-2.71629931846875],"Archive1502_field31":[0,0,0,0,3067.41310260579,0,0,2101.59391515389,0,1268.0443473123,1919.55016805818,1268.04434731231,1919.55016805818,0,0,0,0,3067.41323387665,0,0,2101.59385878777,0,1268.04413801524,1919.55080743508,1268.04413801524,1919.55080743508,0,0,0,0,3067.41341298428,0,0,2101.59380388625,0,1268.04393413272,1919.55183701308,1268.04393413272,1919.55183701308],"Archive1502_field32":[8995.77,8995.77,8995.77,8995.77,8995.77,8329416.07201484,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,4497.885,4497.885,4497.885,4497.885,4497.885,4164708.03600742,4497.885,4497.885,4497.885,4497.885,4497.885,4497.885,4497.885,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive1502_field33":[-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-829.983940847086,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-829.983940847086,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-829.983940847086,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767],"Archive1502_field34":[0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,95.9414370008627,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,95.9414370008627,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,95.9414370008627,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive1502_field35":[1,1,1,1,1,925.925377847949,1,1,1,1,1,1,1,1,1,1,1,1,925.925377847949,1,1,1,1,1,1,1,1,1,1,1,1,925.925377847949,1,1,1,1,1,1,1],"Archive1502_field36":[1.01341177329255,0.268773385766053,-14.7122677527452,-12.1399749265925,-5.54932161084423,14.9931241168704,-4.37719468969715,-31.120923112527,-3.71611391214572,-1.09807921156153,-6.43930788195837,-1.31299009597012,-6.48056374420435,1.01341177329255,0.268773385766053,-14.7122677527452,-12.1399749265925,-5.54932161084446,14.9931241168699,-4.37719468969749,-31.120923112527,-3.71611391214583,-1.09807921156141,-6.43930788195848,-1.31299009597007,-6.48056374420423,1.01341177329255,0.268773385766053,-14.7122677527452,-12.1399749265925,-5.54932161084423,14.9931241168704,-4.37719468969715,-31.120923112527,-3.71611391214572,-1.09807921156153,-6.43930788195837,-1.31299009597012,-6.48056374420435],"Archive1502_field37":[0,0,0,0,133.473398156417,0,0,174.923552128374,0,-941.571127353168,971.774948588508,1229.20889971832,-856.735435616276,0,0,0,0,133.473398156417,0,0,174.923552128374,0,-941.571127353168,971.774948588508,1229.20889971832,-856.735435616276,0,0,0,0,133.473398156417,0,0,174.923552128374,0,-941.571127353168,971.774948588508,1229.20889971832,-856.735435616276],"Archive1502_field38":[0,0,0,0,7735.77191179419,0,0,13614.9237360072,0,6059.66919087273,2859.50320549852,6025.60778768589,2795.1884620383,0,0,0,0,7735.77191179419,0,0,13614.9237360072,0,6059.66919087273,2859.50320549852,6025.60778768589,2795.1884620383,0,0,0,0,7735.77191179419,0,0,13614.9237360072,0,6059.66919087273,2859.50320549852,6025.60778768589,2795.1884620383],"Archive1502_field39":[0,0,0,0,2.75614210796851,0,0,6.93606880015857,0,0.981297643453788,-1.28566644187035,0.814933857636398,-1.34767074213981,0,0,0,0,-0.945348030869629,0,0,6.65687956037221,0,-1.3747914193649,-7.74888265476823,-1.9861040716664,-7.50881849930825,0,0,0,0,-4.64683816970778,0,0,6.37769032058586,0,-3.73088048218359,-14.2120988676661,-4.78714200096921,-13.6699662564767],"Archive1502_field40":[0,0,0,0,7736.92379538784,0,0,13616.0491588211,0,6132.38516840082,3020.11701526592,6149.70766738426,2923.53826059606,0,0,0,0,7736.92336222883,0,0,13616.0490194633,0,6132.38524399183,3020.12668246597,6149.70793410362,2923.54759278994,0,0,0,0,7736.92469993241,0,0,13616.0488858301,0,6132.38622480242,3020.15018115238,6149.70947662539,2923.56990902049],"Archive1502_field41":[9722535.99992965,9540380.63404344,4132186.82588655,4690220.25275231,6170739.48002221,11228212.9672085,7321341.4268448,3038154.52701657,7509246.37260122,5333100.50159898,7812182.85112879,5437048.79067972,7740714.06685034,4861267.99996482,4770190.31702172,2066093.41294327,2345110.12637616,3085369.7400111,5614106.48360425,3660670.7134224,1519077.26350829,3754623.18630061,2666550.25079949,3906091.4255644,2718524.39533986,3870357.03342517,3.83512741564118e-10,2.55675161042745e-10,-6.39187902606864e-11,6.39187902606864e-11,3.83512741564118e-10,-7.67025483128236e-10,0,-1.91756370782059e-10,-3.83512741564118e-10,4.47431531824805e-10,-3.83512741564118e-10,-1.91756370782059e-10,0],"Archive1502_field42":[-968.860091819958,-950.711341827918,-411.89139653699,-467.465301377127,-614.907734232712,-1118.83305220612,-729.628522582809,-302.801338022836,-748.342118394079,-531.481772067085,-778.51024723084,-541.831908799278,-771.389633713698,-968.860091819958,-950.711341827918,-411.89139653699,-467.465301377127,-614.907734232712,-1118.83305220612,-729.62852258281,-302.801338022836,-748.342118394079,-531.481772067085,-778.51024723084,-541.831908799278,-771.389633713698,-968.860091819958,-950.711341827918,-411.89139653699,-467.465301377127,-614.907734232712,-1118.83305220612,-729.628522582809,-302.801338022836,-748.342118394079,-531.481772067085,-778.51024723084,-541.831908799278,-771.389633713698],"Archive1502_field43":[111.994732533169,109.896839949574,47.6123097414623,54.0363379999732,71.079847141404,129.33075630736,84.3409197314916,35.0021175904259,86.5041052887376,61.436278995759,89.9913699089084,62.6326961098402,89.1682673649423,111.994732533169,109.896839949574,47.6123097414623,54.0363379999732,71.079847141404,129.33075630736,84.3409197314916,35.0021175904259,86.5041052887376,61.436278995759,89.9913699089084,62.6326961098402,89.1682673649423,111.994732533169,109.896839949574,47.6123097414623,54.0363379999732,71.079847141404,129.33075630736,84.3409197314916,35.0021175904259,86.5041052887376,61.436278995759,89.9913699089084,62.6326961098402,89.1682673649423],"Archive1502_field44":[1080.85482435313,1060.60818177749,459.503706278452,521.5016393771,685.987581374116,1248.16380851348,813.969442314301,337.803455613262,834.846223682817,592.918051062844,868.501617139748,604.464604909118,860.557901078641,1080.85482435313,1060.60818177749,459.503706278452,521.5016393771,685.987581374116,1248.16380851348,813.969442314301,337.803455613262,834.846223682817,592.918051062844,868.501617139748,604.464604909118,860.557901078641,1080.85482435313,1060.60818177749,459.503706278452,521.5016393771,685.987581374116,1248.16380851348,813.969442314301,337.803455613262,834.846223682817,592.918051062844,868.501617139748,604.464604909118,860.557901078641],"Archive1502_field45":[11.0134117732925,10.2687733857661,-4.71226775274519,-2.13997492659246,4.45067838915577,24.9931241168704,5.62280531030285,-21.120923112527,6.28388608785428,8.90192078843847,3.56069211804163,8.68700990402988,3.51943625579565,11.0134117732925,10.2687733857661,-4.71226775274519,-2.13997492659246,4.45067838915554,24.9931241168699,5.62280531030251,-21.120923112527,6.28388608785417,8.90192078843859,3.56069211804152,8.68700990402994,3.51943625579577,11.0134117732925,10.2687733857661,-4.71226775274519,-2.13997492659246,4.45067838915577,24.9931241168704,5.62280531030285,-21.120923112527,6.28388608785428,8.90192078843847,3.56069211804163,8.68700990402988,3.51943625579565]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1601.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1601.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1601.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1601_field1":[0,0,11026.321912158,472.925762179726,9829.2084976273,0,2273.26044244515,13218.8900816277,6175.54473061156,9709.60440625647,6416.04484924345,10799.092055982,6661.10825247422,5391.32504736399,12756.8544484641,12306.0258492368,9076.35720110899,12517.3159638996,11322.3811241642,10626.8473664934,11431.6829492735,9237.40632145695,9552.33761447292,7603.04416685075,6666.69001852382,457.221888602825,3373.54300132094,11706.5834439913,5695.19700016865,8199.6202664873,5881.13673687749,9080.63466576291,0,889.050251020927,3259.38704440953,5045.59620522845,0,6367.44255461846,7995.47068982773,7168.30693804304,3213.35547405576,1065.07957133164,3389.03056208889,3118.67098457224],"Archive1601_field2":[0,0,11026.3219121581,472.925762179754,9829.20849762731,0,2273.26044244517,13218.8900816277,6175.54473061159,9709.60440625649,6416.04484924346,10799.092055982,6661.10825247423,5391.32504736402,12756.8544484642,12306.0258492368,9076.35720110901,12517.3159638996,11322.3811241642,10626.8473664934,11431.6829492735,9237.40632145697,9552.33761447293,7603.04416685076,6666.69001852383,457.22188860282,3373.54300132094,11706.5834439913,5695.19700016868,8199.62026648732,5881.13673687751,9080.63466576292,0,889.050251020938,3259.38704440953,5045.59620522846,0,6367.44255461848,7995.47068982774,7168.30693804306,3213.35547405576,1065.07957133164,3389.03056208889,3118.67098457225]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1602.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1602.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive1602.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive1602_field1":[0,0,4149.82750739859,850.861773686166,3034.30893876289,0,2259.12285992118,5385.9673887988,187.855271742096,3391.67069378976,344.465516260095,4110.20238873301,2594.72488369494,2733.73889338599,4970.57827477219,4657.37336315147,3532.7727268828,4758.31567661419,3722.88531743275,4681.17327808627,3168.09060148956,1608.40892893516,2981.29116322938,1239.45413980854,314.108010750863,30.2671365656715,564.291773772088,4808.53298284176,2633.16693274846,3587.20457758249,23.1074707331007,730.074672199572,0,89.5340324137668,2187.22173972625,2403.04944328223,0,2029.12412263922,2948.28171642315,551.211668392518,245.199767518908,288.204814099755,226.285716517355,230.566317594579,0,0,4149.82735031749,850.862164093051,3034.31559555313,0,2259.11971454829,5385.96834929946,187.860416300221,3391.67265202746,344.510816730061,4110.20245302262,2594.72347410314,2733.73864186952,4970.57869405847,4657.37392238608,3532.77297786035,4758.31724381893,3722.88662578972,4681.17528262229,3168.09452631421,1608.42990356458,2981.28595173766,1239.56514094191,314.163986057661,30.2676865116331,564.38292510154,4808.533868756,2633.16815423378,3587.20610054748,23.1111576910593,730.149675241707,0,89.5366779238045,2187.23477557311,2403.0483915493,0,2029.12260048299,2948.2825164467,551.28322575842,245.237987265068,288.266972064573,226.347548837819,230.625193312906,0,0,4149.82725657959,850.862422188152,3034.32113056186,0,2259.11716613868,5385.96975795096,187.86389249719,3391.67415470493,344.543238499115,4110.20278080225,2594.72303431372,2733.73842532624,4970.57942459696,4657.3741622439,3532.77326441841,4758.31843029104,3722.88779511095,4681.17856003101,3168.09794492469,1608.44635241545,2981.28258948654,1239.6477891885,314.210923473109,30.2682370856105,564.453995849536,4808.53406949351,2633.16899167101,3587.20707934573,23.1136665962053,730.208782083216,0,89.538645073962,2187.24512734052,2403.04780477267,0,2029.12147113328,2948.28327499387,551.336278378155,245.267654408875,288.313511030895,226.395368562321,230.668786837077,0,0,4149.82722618223,850.862547993976,3034.32554314395,0,2259.11521519088,5385.97094796377,187.865699573151,3391.67523177093,344.562841937797,4110.20322706027,2594.72354762171,2733.73824370726,4970.58007489125,4657.37434730147,3532.77365337205,4758.31928071585,3722.88875099184,4681.18136533456,3168.10089110265,1608.45829849736,2981.28108621676,1239.70204773467,314.249012754754,30.2687893517287,564.50507016041,4808.5341092368,2633.1694450097,3587.20775550882,23.1149983943165,730.251976292977,0,89.5399315754685,2187.25279066445,2403.04767879644,0,2029.12073505918,2948.28396268988,551.370844204579,245.288828807851,288.344444195732,226.429222080959,230.697195556721,0,0,4149.8272591243,850.862541522832,3034.32883796721,0,2259.11386199227,5385.97132580492,187.86583708556,3391.67591002595,344.569663642144,4110.20366288328,2594.72500035316,2733.73809698186,4970.58029645733,4657.37471306647,3532.77420417398,4758.31983507372,3722.88942677126,4681.18214539429,3168.10339365384,1608.46576259395,2981.28144895529,1239.72789492865,314.278366082859,30.2693439046755,564.536198763036,4808.53445448314,2633.16951422157,3587.20834400715,23.1151536418531,730.279246288699,0,89.5405360706414,2187.25776427487,2403.0480096234,0,2029.1203925371,2948.28455332773,551.386933554201,245.301546036149,288.359779660021,226.449137515714,230.710478307613]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2001.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2001.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2001.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive2001_field1":[-63.0896183609231,-59.356965092161,-22.1949799353416,-25.8117763779264,-184.702944594051,-126.535847000753,-85.7113784299202,-52.7195403778435,-94.1064657774326,-107.412503342807,-187.286570697065,-114.739636633066,-160.430862609395,-56.4632991178371,-44.6810846510104,-85.0548610094926,-60.7763172990161,-76.7956748578769,-50.4876874860116,-107.862766052236,-86.6066276667965,-124.81047388242,-72.2357618958114,-111.568905032478,-96.7859377158931,-140.454970773973,-148.19680387923,-140.397287102711,-193.032034496099,-95.2864024682754,-180.131531442917,-188.602435872909,-111.709166749208,-151.796394116471,-170.297383467144,-166.256554085109,-132.040399493061,-155.990786011628,-206.85791988404,-196.369127742957,-177.827231729211,-162.117792661931,-154.103750426682,-122.691077214654,-175.121739459794,-199.936045990334,-114.918795047902,-177.971713100433,-124.766397309095,-172.440165311372,-124.016721125386,-103.968749464212,-133.66571322706,-122.823619063794,-48.6807999898531,-147.971314592077,-85.7129055782835,-63.0334836831281,-179.871738188986,-119.326894906457,-129.924051000019,-93.9947066132873,-157.57963540608,-44.6906192214769,-40.6675198456163,-200.296767263097,-199.357519810039,-185.940846566091,-202.361974573484,-199.187816830726,-103.404907120463,-168.036393221982,-52.5834446479551,-77.4335715128416,-132.766092608816,-102.625165811654,-156.211950230123,-144.942374535617,-180.365343251454,-161.675020194485,-162.860788127972,-90.1519689820773,-39.4642028552994,-35.4675822793027,-79.7759697706901,-67.299960960554,-88.2822326695287,-94.5681598995662,-89.2872940202238,-85.3321962605236,-124.29105408458],"Archive2001_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2002.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2002.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2002.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive2002_field1":[1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693,1.44775429567693],"Archive2002_field2":[1.52923942182788,1.57864063048213,1.66210338420751,1.59875142437892,-1.87844790583882,1.21493471459762,1.50956145671087,1.48377391559329,1.46897562707433,1.46157733394996,1.4609114613669,1.46684844054804,1.48132721856973,1.51137146794839,1.53989599093239,1.55606218096602,1.56848787560369,1.57550579658966,1.57964104444948,1.58136890570063,1.57308115785026,1.56356208273151,1.55907890152443,1.55534504530065,1.5609881091327,1.58143273169951,1.60140731261019,1.61443014638625,1.62386784400616,1.63356075367972,1.64145052832477,1.64924523054385,1.6550779575618,1.66055980660075,1.66634007753172,1.66712633907548,1.66552854619897,1.66591479302908,1.66442604849286,1.66220194668304,1.65952735694614,1.65507329926642,1.64820679696993,1.64452573424199,1.63830583477055,1.63017473480451,1.62194985471455,1.61300130504856,1.58513166082863,1.55550139816414,1.53515554006712,1.525588411942,1.52490509746057,1.53697699764466,1.5561020723858,1.56381585073137,1.5671456629276,1.57444385126273,1.57459012027135,1.56860582600837,1.55856599655466,1.54620581517723,1.57950885871943,1.56886438429062,1.54985897106339,1.52512345545047,1.49132364241745,1.44485948029054,1.39014593421153,1.31025546147893,1.20385159089076,1.05163994596525,0.819633243033108,0.410082979657325,-0.631012077034345,-1.85751228842933,-1.84981397324887,-0.607853508957952,0.421147800874076,0.826065512903018,1.05715054654826,1.20564647086298,1.31357154544339,1.3901791686585,1.44907884167807,1.49426031448037,1.53140054813403,1.55824959976265,1.57684608489348,1.59116201743476,1.60315289337124,1.59095169108303,1.58115242691805,1.57559076944447,1.54738716543444,1.51532210447735,1.48886515182443,1.46045225243723,1.42823180298364,1.37928789165349,1.30103937312705,1.19439228578898,1.10307995235306,1.11760748227026,1.31477637956331,1.37504307854782,1.40596157048944,1.42278069356077,1.43875654524813,1.45281267201877,1.4651660043588,1.47651787953877,1.48762899160511,1.49941524518767,1.51371092451174,1.53805216198417,1.56630064509502,1.57797784791081,1.51360848857782,1.49648023478981,1.49037781767568,1.48667442264602,1.48293628768006,1.47635235071174,1.46327056856081,1.4432517783215,1.41762373603407,1.37314511447637,1.30270035730742,1.20199981286358,1.11821411502702,1.13336790337191,1.22535649887538,1.03149615059973,1.05042603765296,1.30011106519111,1.44965520946518,1.5326210456854,1.58615124841859,1.62237457340114,1.64575324707392,1.66247627446574,1.67474640560729,1.67918473313559,1.67870925819275,1.67404848194588,1.65145701713686,1.6283612166214,1.60476523956616,1.57133944384911,1.53362600303765,1.48206781512699,1.42024799813846,1.33880716982285,1.22885213558526,1.07572381641891,0.843480377718857,0.442519290618062,-0.519291664475908,-1.86652895215066,-1.83279810078179,-0.691187119604968,0.396688467848958,0.808696666483266,1.04078973208864,1.19089930723787,1.29389760172522,1.36942183798604,1.42149055700395,1.46040160328873,1.49097393055347,1.51249533647053,1.52712850924877,1.53424380273436,1.6375557877754,1.53946362417571,1.46123481252437,1.48375329422354,1.57973147947551,1.66271078267354,1.42394361008241,1.55567168286706,1.66851708018369,1.54932076107818,1.34645544596025,1.55669532581387,1.66760650349425,1.49965685897198,1.63329162013193,1.64160195907941,1.65749528145732,1.59165322435801,1.46623353030334,1.6029021850762,1.50749079831687,1.55645579426988,1.50648484186512,1.55139216025675,1.43335035690627,1.40253278124478,1.55855480872522,1.53138278775993,1.40197985419611,1.47572867639152,1.65475170197569,1.57243794437095,1.6722008531543,1.54912236758078,1.47129742778684,1.67449202365726,1.29629059554994,1.55125892656383,1.56701664607049,1.36155984153122,1.57034297988778,1.25439096757901,1.55871107150897,1.65830938830929,1.58194089802189,1.50270196787034,1.63724535596438,1.61132204411945,1.63152099119753,1.61160862855779,1.62250618843452,1.63619609009721,1.55125582862753,1.64952419841651,1.51698607553469,1.64914239622185,1.5111877597102,1.52076373879728,1.66772761287491,1.65380360859501,1.52096260702959,1.62191629487393,1.64952834658132,1.66523151033035,1.47985299460068,1.52993516134667,1.43184278327184,1.6250478408379,1.64887595896969,1.48705008172876,1.52223093351091,1.59444059548272,1.43818420037846,1.66147137938183,1.51937596422756,1.58623227378579,1.53728123486355,1.61951392974621,1.67107559061286,1.65764075541087,1.52317731305953,1.54532725575011,1.67378192429426,1.63725302667186,1.41592415685012,1.50132805507736,1.4928192451668,1.57393950355058,1.52387436893991,1.39500361226715,1.56844750893063,1.51234340712068,1.5558629777414,1.48211214740517,1.45363782575014,1.52132123316612,1.58182213791471,1.54790904153214,1.61794581981607,1.39428564409389,1.5493358394324,1.45182236661586,1.64573452887352,1.66295190302292,1.59875839079497,1.67085944210616,1.57002648174008,1.29999423315312,1.66086487753422,1.56086997215265,1.6652049730811,1.33051818716785,1.64215575637399,1.61531909747874,1.63900973757417,1.65209052943876,1.67643216453829,1.63202014046555,1.62162980511048,1.65145848453353,1.50455065712244,1.58558945203587,1.54673992040842,1.4884111643554,1.67359058397161,1.41228854750884,1.57613071836269,1.54713989393819,1.41758712203635,1.48527468450429,1.62916350041059,1.61211295946559,1.60111086639628,1.63403038032332,1.61478247976243,1.65648563851057,1.44034812853626,1.60046593787099,1.67712758255355,1.61358204191019,1.61023673880984,1.63292160173092,1.45608750908871,1.47036603517031,1.45234300075354,1.59323266559239,1.54284942254224,1.50740443745105,1.64121660998222,1.48598241745228,1.59348384089214,1.66751638048479,1.67857346598891,1.61535878084558,1.68003430895753,1.2703801343872,1.61651497599095,1.18538609304679,1.67412302140268,1.53126497183961,1.65992953842887,1.62442514117752,1.43057815546022,1.4319532048239,1.64271953981056,1.5845514566904,1.50851805478066,1.48304379414574,1.59072767547114,1.60122044043524,1.66968371996587,1.56035082420661,1.59623720056681,1.63727519755245,1.59796825044636,1.68040697272724,1.55700680998695,1.65687118196752,1.50343808840956,1.64442792433023,1.51936362054289,1.62797032505477,0.97118049950867,1.2142760169737,1.59947786453881,1.37867315104161,1.68087428788632,1.62068841386058,1.05758721720575,1.64954935522646,1.57648304971316,1.6710034712661,1.66299936862645,1.65371479845736,1.60306047968486,1.65415965202385,1.50595243991928,1.66819469999581,1.65296763462436,1.61484520909815,1.68001087617564,1.6722145972312,1.66452138549177,1.47510416029954,1.61676456660064,1.54795389974635,1.62836173611483,1.58317516598166,1.65020402196795,1.39432164815723,1.38035144225985,1.54128483822331,1.50688203881579,1.64643357818864,1.46915861221086,1.56218877548582,1.65188735061255,1.54407373203231,1.63122470301249,1.67501058100832,1.66826785355845,1.48939356960717,1.54694326155531,1.64421415995029,1.45914181516413,1.57218122901708,1.37135929833989,1.39724576035103,1.52173257772353,1.66031164828472,1.6789652209188,1.57738325122164,1.35916230005672,1.45926967495498,1.5426365906505,1.56443130368612,1.5918690573449,1.65179374122847,1.64333810498428,1.42218170108004,1.67521052304192,1.54852292974716,1.57047910409491,1.62321731464905,1.46637234309245,1.56842638665595,1.60333359367054,1.6315940709548,1.32286766496501,1.62405335108648,1.13483847639156,1.60506101224611,1.50537624196072,1.62693905490506,1.6748418043157,1.6314438534941,1.46081178051672,1.67817768102734,1.52633455766085,1.19250423997522,1.6114541908249,1.29963205240893,1.63937805190088,1.67934152769474,1.57867096768541,1.65000125010159,1.61208991519967,1.63385735392781,1.63679262576451,1.3556181459743,1.51987395592399,1.67169753805726,1.29323268481491,1.27080317886207,1.66166958863415,1.65691180025046,1.47721143818381,1.48959555420603,1.64395691366961,1.66216321552506,1.63027092971927,1.42481847280684,1.6677203564739,1.6300055279545,1.66228805909402,1.66533331401704,1.62257201284336,1.67400897951269,1.66935055812527,1.52992758855783,1.67418645165491,1.67062564484635,1.67302287104869,1.67710498553242,1.66487255570901,1.67444992770765,1.68090030589606,1.48980903021812,1.4472683855928,1.4641424520955,1.46263785980504,1.42257690100459,1.5273309124309,1.46774373016806,1.37754673634883,1.54366011647528,1.48125579114599,1.57132649659389,1.47178591849258,1.39222515455583,1.43692376461734,1.45653488965997,1.54927617524431,1.5454315286094,1.39216717358981,1.47601647954167,1.47410619305583,1.42664063605596,1.48974242610684,1.4914499349341,1.46214806720003,1.46343089280586,1.46326227514855,1.46239315894942,1.47422863359116,1.47045942493726,1.46378696029281,1.43606509559594,1.51549142128854,1.46153054898351,1.41569610529318,1.46823950421995,1.40464517080243,1.48206397709161,1.55068331637263,1.57880085570841,1.48307680182875,1.53908759601157,1.26817779086986,1.41027406713489,1.4934338430491,1.57578404737308,1.36152572305601,1.45090313007454,1.41213907512419,1.47165973949387,1.42348763868717,1.44472067629838,1.46474006692988,1.46454696204777,1.47546272448088,1.48108292218757,1.46498155774044,1.43221048498845,1.4101785803374,1.4285611627699,1.51779436247992,1.35972357992468,1.45817628972628,1.48551576374988,1.46570038729219,1.46505901327418,1.44727896215819,1.47988876546591,1.56002064877457,1.56327190112506,1.48277857579641,1.47993360383519,1.38664352960449,1.5321760826855,1.46741496769643,1.44357696806351,1.46305744735694,1.43828468106642,1.46903268978625,1.49497040130028,1.48395642483919,1.44760924810014,1.40737271248081,1.51301481031864,1.46546970119149,1.50513422298147,1.41957732793948,1.5048549820167,1.3486527874605,1.47824853384391,1.46991011154938,1.56169222129338,1.51173221251925,1.46483716705763,1.49453183090022,1.46925972844985,1.44118934151304,1.4701568239854,1.55238048607973,1.47557624275296,1.46394873772316,1.2868299831307,1.46139802359991,1.46313999559024,1.54063341327402,1.46103783259329,1.45719855224421,1.40178857210538,1.57123838679148,1.47285164110681,1.46473454986699,1.51853225127131,1.42357114412266,1.50117404502789,1.45379328015586,1.51906939828597,1.45421635094575,1.46958935415105,1.58042199828118,1.27528195548925,1.50125731553958,1.48043895001296,1.52269157746964,1.4728448538101,1.46010432249961,1.45315489566865,1.56778362312703,1.50865174452119,1.56561208415215,1.30674392679393,1.57518420207041,1.46842265574477,1.42718168375564,1.43511466030514,1.48217782237821,1.49364394715193,1.47780845610946,1.54421595986164,1.38730145984602,1.45922035335636,1.42757436844239,1.42539595517373,1.4442899822191,1.45433648904755,1.41252437528436,1.45841396442345,1.43771628121823,1.46433163916266,1.4037307483517,1.44696125332534,1.36246445771586,1.34023987496295,1.44342534568275,1.486825537037,1.50971078087252,1.51908154589957,1.1500791059614,1.55609598287928,1.59966655015877,1.59978953055855,0.565736419231996,1.57264155305883,-0.235712884487602,1.642347881482,1.42075007956924,1.48578806819031,1.44884048225639,1.02728396371681,1.1421308947817,1.58134603348844,1.55713847949857,1.34346251801884,1.19060881707129,1.34661526266569,1.48057521457984,1.41306178063369,1.52229284452051,1.54955717456914,1.43072184846357,1.63482460757864,1.56597385715429,1.55895630140941,1.48261019402014,1.4765142292842,1.2454231209031,1.50163382451192,1.44962774984726,1.5694463647213,0.237141464849515,-0.601000998841134,1.5714828670901,0.871315429510936,1.62387392097584,1.57516430400467,-1.166655902649,1.48703575633269,1.30606109163678,1.55398385383172,1.58941870842638,1.49390349014747,1.38048547796437,1.47090017087503,1.49334133361589,1.52192562032457,1.41307950199645,1.55391825739681,1.52923448456914,1.58984100569032,1.50651578260842,1.49556729509116,1.54651183923013,1.26297387660472,1.61974345018168,1.40689493760955,1.29158305467468,1.61642442313182,1.53756917881106,1.54151576520258,1.56629111407926,1.04733181251272,0.949091926046319,1.38666710317965,1.44660141120226,1.20944392900586,1.42387105469043,1.49354101018534,1.55673523610971,1.53747861667317,1.32706535390162,1.33604539838947,1.45192177585916,1.57242327643619,1.2911880315474,1.61810401082134,1.54446676741389,0.970731208375923,1.00712432410789,1.3854380829987,1.28387049749425,1.0582166497802,1.55567739919662,0.804576534746721,1.56447924721004,1.37391680146014,1.45249202698172,1.63161938007415,1.45925294431629,1.54025447003564,1.5311774710275,1.05439894392587,1.38112765298148,1.53452466541163,1.49606015271774,1.14845520628553,1.51630819934913,1.4509173054065,1.46715827899118,0.731442330650932,1.56597970735053,0.761015268591395,1.5389608460791,1.30160573906959,1.4257809218594,1.44989642902786,1.26241896605826,1.64819570353324,1.43911150647573,-1.59083811796375,1.57743688962151,0.791090442794905,1.56414407281564,1.51043675505188,1.4504066258794,1.38408377946293,1.60179067216788,1.58012776890933,1.61123206298224,1.55986154803588,0.926171273272701,1.20451776546717,0.425662683737589,1.15551788909105,0.318213334415275,1.57592079203245,1.38307494317275,1.56126727061398,1.55248055818253,1.29738390343682,1.17173132826831,1.44065346068504,1.5253714028719,1.44723624414677,1.57986310914768,1.51404453482696,1.47625808997873,1.38394342980184,1.25057142501736,1.43421280676668,1.43260676068282,1.29144753994891,1.18127930981855,1.51668806731738,1.42834100351933,0.772329630875734,1.54059909269763,1.45676823882709,0.454035166301824,1.56615198571736,-0.258121766112722,1.50266864416607,1.57430015493265,1.37141381795502,1.55907112930201,1.48218217822011,1.39776539958382,1.5414609460062,1.40145640582228,1.44889677960487,1.28309239745093,1.49442756922668,1.41995379988253,1.40301998384388,1.19309438037211,1.09027825270244,1.46501497743968,1.45732847239264,0.724123761886652,0.697057733344066,1.48346400917527,1.56119425850258,1.42099042454298,1.2784749649514,1.55129261282517,1.43475563180038,1.53912229319258,1.4038737271304,1.56760163875901,1.47735724086321,0.225308435395776,-0.698180696777628,1.51853443810213,1.56637264844433,1.04053569630363,1.50171962682604,-1.18569152805979,1.43917123265468,1.3080906411176,1.52055599878495,1.52523531641408,1.4886265123347,1.45460330944924,1.24494350576823,1.51556560804241,1.41047835971553,1.44677361962373,1.32657289587101,1.45185653535954,0.920788894417684,0.908932936002122,1.51004696126969,1.45726535047536,1.37477623893502,1.24852366680767,1.45387536314482,1.47116978389611,1.43903123529242,1.36711565594393,1.53197840494578,1.41699381751532,1.45540216604334,1.45729154162622,1.38983752766477,1.48566029754227,1.20520015683177,1.44962519319679,1.33043524132408,1.15180478778163,1.44554277001816,0.918142996704155,1.09996951371762,1.55322790228482,0.437570331919611,1.45979153670644,1.48262191857912,1.40560107622858,1.19001674965976,0.693901787963112,0.889428719729873,1.50722918134374,0.966413439246171,1.44093864538763,1.49234457264887,1.35002593090019,1.48869197668072,1.40297204345588,1.43877934966771,1.5223614229407,1.42915509918477,1.425830772809,1.42809109391369,1.57610867218175,1.41695454139135,1.47116521865474,1.44230358695352,1.55425260953701,1.2065964519291,1.54161868374515,1.35358155746702,-1.60074387211393,1.52044353425971,1.46229407614817,0.667803794490985,1.45856444198126,1.27439754347657,1.41064684962735,1.4270960116287,1.46032556902308,1.32808758324293,1.55874853189419,1.51019401178535,1.08383829687747,1.4685941289163,1.51302712683334,1.0941716433066,1.29191957741187,1.45698680659769,1.54421216949636,1.46042778128766,0.267401374735575,1.49221045008558,1.36143207568278,1.48943017770948,1.48129318027341,1.46193895665386,1.46236308498522,1.42915014751346,1.42817137254697,1.37124730402891,1.49658400973678,1.44554548368475,1.57772616347194,1.46654103264326,1.14649126389392,1.56512172922959,1.59483133504037,1.14018067240318,1.57796248452297,1.62212261628073,0.795660602265489,1.60940040095141,-0.194472162144198,1.60683486050212,1.657289539684,1.36385146220819,1.5090478173029,1.61893595538548,1.51287162898575,1.54480592568676,1.08555583227391,1.58054099101318,1.61771291130893,1.39526980188906,1.24058497021474,1.49011967090382,0.953193223953862,1.64338574335058,1.42548927951709,1.60234658941845,0.838735790039009,0.48153311828264,1.20925724234488,1.5807286684725,1.54393796106118,1.64372725702007,1.2938142460792,1.2244333742797,1.64064255940357,0.328072446227687,1.61822268386707,1.59382588656762,-0.668508458669898,1.59782488301512,-1.12162722224307,1.61602872138625,1.3886401322409,1.62480125993677,1.4963864087256,1.45690662699838,1.60140226248433,1.46327970810214,1.61000082348232,1.31578419174083,1.31770408561442,1.23698938487556,1.52756317303366,1.59210019705231,1.63613879469703,1.63976864718394,1.5556983327323,1.57437393216787,1.52517995584566,1.49167606907252,1.57172540815249,1.598708682402,1.09622128563569,0.846353464692329,1.15113547203368,1.51959518679775,1.54501735290192,1.638824603826,1.38311684519205,1.59321060880399,1.52610494554405,1.38816023878163,1.07024963554772,0.936826805154312,1.6215381539662,1.44476586395359,1.57177970538305,1.5226077763199,1.49764030718529,1.63563761357607,1.62021887050663,1.41868098906553,0.725189605064115,1.63792082230393,1.62491340619464,1.41872523711981,1.56612319360818,1.60252930362044,0.367188129937476,1.57252191228456,1.5461119627292,1.30566004990327,1.54104309375381,1.2125185983285,1.60891877193941,1.55261396555653,1.46362152221877,0.765883482098475,1.24011133862309,1.5616243141809,1.05755248998464,1.33945484013453,1.35629683202885,1.55389523773879,1.6544773647282,0.596644299785604,1.62882940482782,0.981889216869923,1.50464644122193,1.64932477417624,1.52978491283847,1.4402656565218,1.46191208338829,1.29233312815912,1.60476530505152,-1.56861177545269,1.65860565616758,1.61504397785481,0.734319807286901,1.65211130265015,1.63200988856882,1.62273336263545,1.64885845624218,1.65402457734503,1.53214321903603,1.38450872029466,1.59674347158145,1.65993838305573,1.6371154461509,1.59278189747709,1.64307889355723,1.57472570809117,1.29105397995231,1.60644324359102,1.32875389479591,0.969684354246574,1.49391157613213,1.63725191536156,1.32124288095934,1.65125262036651,1.47878178768123,1.44239070796309,1.55584142613535,1.37441708831707,1.49630559135385,1.39691613370608,1.44453649795765,1.57924113844018,1.14616663689441,1.37952076094676,1.49203753581112,1.5044271450929,1.52937728284781,1.56714838992921,1.58698914517819,1.57021510787274,1.37038424885385,1.58925048665495,1.56348723610828,1.5902218232089,0.634238547122456,1.53801650071425,0.27374707034661,1.58236647640252,1.54030544682213,1.59194099085956,1.52059698547437,1.26571170485583,1.38379804791332,1.58542821563896,1.49807566671157,1.39942885940213,1.49070434343189,1.57153972337168,1.55262417739366,1.57374663345129,1.52331440035613,1.56290357958701,1.57845394462599,1.53190468034291,1.58786866253753,1.55444391643663,1.57969188718306,1.44308866479342,1.59261442268225,1.5035471402985,1.56441073954983,0.776505550067503,0.584734047645959,1.51225397568661,1.10465965713241,1.58735952564138,1.54806803209776,0.906688139366883,1.59170925703698,1.46102998996304,1.58632770190523,1.59512534472507,1.59278449696097,1.511953552784,1.59451184968696,1.51243051750103,1.59215294233187,1.59136405343633,1.48159031376361,1.59085870332898,1.59014559691655,1.59004782083947,1.45836450401892,1.5414571573065,1.4389165684699,1.58177092271999,1.54258758758674,1.5841308258847,1.3420845193601,1.23509215143955,1.42883001385897,1.51809949806926,1.56094225252307,1.42165030634612,1.55254137780833,1.54892605048243,1.50069690249825,1.57831795453701,1.58671914616476,1.58077744373509,1.4929853260214,1.50229673059266,1.58317825701624,1.45661500108828,1.51589259688142,1.32309442989422,1.308938504688,1.52636551385883,1.54399618884341,1.57400750169332,1.50398450559769,0.962193400911266,1.33076979684944,1.45848925097102,1.55805211659304,1.525869022641,1.58288544050895,1.59016702860128,1.29852633394409,1.59049286309754,1.52899370932141,1.50075700981231,1.58199208147217,1.37354770111584,1.55256976739006,1.57197271360749,1.58555251318714,1.13010533393048,1.56147373701695,1.19945236629772,1.56805673632975,1.48162509659969,1.563237395922,1.55983368240348,1.58045270274832,1.45699470192729,1.59655328988354,1.53236144579663,0.891369609550937,1.53026573145036,1.10744681113166,1.57790876920726,1.58897034655667,1.45330818739226,1.52118994413504,1.48386754489174,1.50579059795515,1.50110710375512,1.29253322542583,1.40479109937233,1.57478142064412,0.321812889792992,0.817757258244421,1.57669456697243,1.58173721449792,1.39006902612275,1.47893220280305,1.58155845447476,1.59372026454631,1.54623555107319,1.41310647410763,1.57075124922976,1.57391293811625,1.59487627275188,1.5864205685315,1.58121581463632,1.59792429021569,1.59479589097959,1.48930581138265,1.58543667481563,1.56071945659481,1.55049593968697,1.57627063874025,1.57617905923563,1.54701879905591,1.58508682507282,1.42093315651553,1.45559102883774,1.11922907580369,1.1065419584097,1.45442563700964,1.51439370948938,0.768717574970144,1.50932189744704,1.55211049402497,-0.220506391432362,1.55059030066665,1.56663187853518,1.32551544096469,1.40661276628344,1.48459260728405,1.52040596422222,1.47002553709585,1.45753840107697,1.05032139306298,1.49452321650949,1.53403036916568,1.36295049710921,1.20313881282929,1.42810406427697,1.49163584613197,0.928548241083662,1.37150622888833,0.810306222441707,0.457303626133183,1.50810884447081,1.17664883022324,1.53949450341235,1.44776352620117,1.48669269899249,1.24229669597816,1.19978170622844,1.54827237293701,0.301372217742979,1.55895405884604,1.5403468740306,-0.695642930727541,1.53566372951588,-1.15182999874214,1.55525767246678,1.32381296955671,1.50673529725934,1.39782283180967,1.40192425513462,1.37470992953612,1.3854467105978,1.4872214114205,1.25334995471882,1.28859032392545,1.18444064401635,1.53335380000497,1.41643317819406,1.48339750394051,1.45051311031643,1.49737267625376,1.42993867410534,1.44712074169822,1.47351316306256,1.50998057225366,1.06115957086201,0.820440697735611,1.11679795812303,1.47938203494331,1.50032588315746,1.53864442301442,1.34710770662568,1.4661501128765,1.47676228305282,1.34360562545836,1.49353953358763,1.48608498966115,1.04813027896477,0.906641566651522,1.40473052876001,1.47536394933368,1.46242853011853,1.41432410826816,1.38884869493509,0.70120670207311,1.57002794499755,1.50788963880718,1.55634344108041,1.37649439994823,0.341222351974966,1.52069492121863,1.53476255013726,1.49670270493421,1.26740574679464,1.47075401444368,1.43026636199528,1.166836908659,1.50279034408702,1.41243068342331,0.743579218448021,1.19826146199014,1.50288354638193,1.02880301594285,1.29409080405641,1.30427082321843,1.50943973066101,1.52018351656318,0.570238305097539,1.56600757149983,0.952180861808261,1.45361549830177,1.44658591716108,1.47420415655301,1.37832219726565,1.42413602957505,1.54448797391302,1.26021339074377,1.54542821443202,-1.58306188606461,1.55344213972543,0.709630882616518,1.5346356532386,1.50459089646112,1.50888237828567,1.47000603948259,1.45448052768289,1.5192286373552,1.49146236067095,1.36880516383698,1.52138963308247,1.46452704150892,1.53973829334732,1.52768727537107,1.23413188297854,1.55988062230318,1.30411741237097,0.943953767341027,1.26622812856324,1.44351677206903,1.51838055982699,1.42179646468765,1.32589499234392,1.34386776039513,1.33311556112005,1.12610994877307,1.51020401505191,1.53305435335108,1.51992932283829,1.57483365305499],"Archive2002_field3":[1.5829050791475,1.64355734269884,1.74221003802695,1.66060537069601,-4.22035686079766,0.987928773897477,1.54887377318285,1.49804698136997,1.4730614661556,1.46068358347179,1.45906203690441,1.46779516829744,1.49034236201381,1.54569778498089,1.59613035151388,1.62015369177497,1.64030596235058,1.6495050542225,1.65358776848666,1.65339961357477,1.6306363305477,1.6066091950744,1.5932505081261,1.57812080640732,1.58309244782523,1.61999593908152,1.65455954425196,1.67546744085916,1.68799395377499,1.70149005389881,1.71160844152792,1.72356909965391,1.73213788499816,1.74206234022654,1.75137565719545,1.75212027643766,1.74750138532857,1.74986018079258,1.74830069387516,1.74613917000369,1.74421659778171,1.73830359825658,1.72658199546073,1.72561340931953,1.71849276060158,1.70680154707104,1.69634411029662,1.6853266230238,1.64392600349346,1.58607114135345,1.55267620502309,1.54040524128431,1.5426495835136,1.57050670482086,1.61418167034654,1.62985065161399,1.63515277561884,1.6537639728371,1.65701393990924,1.64822916554157,1.63319279451441,1.61438891862655,1.66478003525717,1.66230681127559,1.64611965717986,1.6231017484732,1.58406949971253,1.52018510863971,1.44754565557238,1.32335001024956,1.15760916575973,0.919098534223556,0.560029282289144,-0.0743068885115692,-2.07104283741291,-4.53917283336818,-4.5382539439972,-2.04695551617127,-0.0880076423428202,0.551865205992841,0.913247589437954,1.14449934054835,1.31472328472055,1.42777172412126,1.5112584156347,1.5696729030938,1.61610740912332,1.64246627861869,1.65463990227693,1.66370597956723,1.65831347667581,1.62146317015023,1.59626434796548,1.58698666934644,1.5296931548929,1.46925608785421,1.42390512441949,1.3759372206588,1.32441214362013,1.24713929032033,1.12218507397004,0.952894596058964,0.803719668046713,0.828182861155545,1.15078985980887,1.24814449775961,1.29677202815127,1.32379026616356,1.3524803255113,1.37752366701067,1.39947875928313,1.41960080909431,1.43970941163041,1.46166664852987,1.48881983322409,1.53917280581123,1.60228439353964,1.63292692532127,1.54079113162803,1.4963153128923,1.47815355869997,1.46512258326634,1.45285884614534,1.4367967820588,1.41069191579977,1.3738116542591,1.33168859071558,1.2579620858016,1.14421355003766,0.977865813646276,0.835078490310111,0.855254033083412,0.994895212155158,0.513183366270473,0.560629348544852,1.0993234986295,1.35545324404322,1.48883625458098,1.57513162688476,1.63447729144573,1.67240251452087,1.70232188179647,1.72912676340369,1.74213623485661,1.74906543374792,1.75222918294659,1.74403510209846,1.71784004369173,1.69963445409793,1.66065269100822,1.61915841985303,1.54860327527382,1.46305134540938,1.3421014588551,1.17248635278301,0.935419475700931,0.575448365998784,-0.0501753686144043,-1.83218162020497,-4.59794537581338,-4.45801656969243,-2.224485237098,-0.0979151759089056,0.544836748941151,0.908133650714476,1.1459717044485,1.30751467800548,1.42499255473266,1.49712217923084,1.54675153684062,1.58368041832891,1.60293844932576,1.61074730083777,1.60777775575198,1.6771560902498,1.51009526813665,1.3843111502463,1.41606007398111,1.59231681336574,1.71773222470862,1.31577390100368,1.56166698959555,1.72885277064166,1.55487673561941,1.19737797337347,1.5788531112243,1.74281333683432,1.44496922513483,1.65743326082289,1.69360704998227,1.69522627239379,1.59866266916474,1.37830423235412,1.62335923087511,1.45416792859368,1.53498294677099,1.46397995244013,1.54237569006037,1.33631253257001,1.2807002608163,1.57893334194056,1.51606602869717,1.28397176637295,1.40362842796365,1.70340424931394,1.57111511367058,1.73886389400582,1.5235507841204,1.40255663556409,1.74765111415549,1.10889013923644,1.56643241066803,1.60319448453219,1.22217960179471,1.57860796739463,1.03869970866464,1.58833657536121,1.73053255246449,1.57496842018544,1.4533267012848,1.65992448916208,1.64729749675775,1.65085761780667,1.62665287545118,1.65959844032554,1.67559722429209,1.51896804931769,1.706585781023,1.45729310446378,1.68387393365958,1.48062917935706,1.49431370141194,1.71966226069922,1.69683511667505,1.48302057880608,1.65181179314332,1.69872307974342,1.71175618205883,1.40654528520089,1.48661293706845,1.33101222498893,1.68359444349668,1.69267977267569,1.41206253795815,1.47726936060818,1.61585729571811,1.33633098792727,1.7089619751901,1.47672785962257,1.61368924276324,1.52032504872356,1.64065998322632,1.72350635466744,1.71041777175392,1.49212387083046,1.54682616981528,1.73383124032894,1.67149381327155,1.30682228473114,1.4438876762143,1.44560351659341,1.60129131135132,1.50502228263275,1.27310867490426,1.5901467752114,1.45576012512311,1.5367154460889,1.41676972506009,1.36701781175826,1.48097915306476,1.57437025352825,1.51936483351443,1.64020977825372,1.27122698186047,1.53391221541908,1.36100357951117,1.68902256778832,1.72795864669787,1.61274789745608,1.75310089380215,1.61485938023202,1.12340446021599,1.72020638405805,1.5805885913118,1.72094960415809,1.1613473481458,1.70321921966468,1.66211611184726,1.69809260586574,1.68486043068336,1.73569843145782,1.69805204469752,1.63802808057438,1.7179155882319,1.46562537507382,1.60895549662703,1.509409175753,1.43426434120814,1.72915052644959,1.2920334666468,1.55825477836346,1.55574861151294,1.31208676159153,1.4254912238598,1.67468578358145,1.64872225289262,1.65143303660035,1.69150607472158,1.62704523372661,1.72080370789948,1.35106303248155,1.59965004550325,1.7426523177823,1.62672763193139,1.63433781833395,1.6587410721445,1.37951611091858,1.40487576849981,1.36770512207088,1.59465673973485,1.51132835047533,1.44245101742697,1.66746038407371,1.41351803638224,1.60042232713695,1.71431414174458,1.73956018225851,1.65657526712019,1.74975858967714,1.06289779768854,1.67065726399467,0.916245950721815,1.75029475669779,1.48517740684885,1.70518387415062,1.63422564710646,1.32354067856539,1.32257659516103,1.69856321937587,1.57430931520093,1.44813397639225,1.40882814937413,1.59464359802507,1.60275578116528,1.71808215065105,1.54485085709862,1.59576007735889,1.69891257088539,1.62325150842673,1.74378168806324,1.53204002670741,1.69516570607069,1.43604923128299,1.69199296385341,1.47272836804138,1.6920115501063,0.397985135079784,0.984015098728592,1.63722089471136,1.23873878792084,1.74847540005947,1.69138006117319,0.595913531643069,1.6912375646856,1.55593264197417,1.73721028322019,1.71487561294305,1.69802104422712,1.60131815312251,1.70908437767326,1.44805810485874,1.72040309824705,1.7136388618135,1.62291276533215,1.74480226604019,1.72484203592602,1.71049430131842,1.39069888712753,1.62585442927661,1.51073507683797,1.66920258170467,1.58862035389814,1.7190854908456,1.2642204582215,1.24054555001462,1.5045317300949,1.44605781031239,1.67472050429246,1.37964729040569,1.53752161014651,1.68053634661877,1.51836149774311,1.68141367674394,1.72790223151595,1.71438821359692,1.41558989761794,1.50730582292729,1.67712283609417,1.3710820483999,1.56897058766749,1.22469177769622,1.26761846070715,1.46728678212329,1.69838699989312,1.74948720907214,1.58295961579863,1.20647035060881,1.36698632590088,1.50224214287114,1.54523482025781,1.58464494091453,1.68760099712453,1.69293561412771,1.30532522463107,1.72973630536645,1.51100529150507,1.57088660581444,1.65249333549131,1.37964141126676,1.5551452822842,1.61414319853953,1.66276998794972,1.15314018257143,1.6756534032788,0.727664720583092,1.62853606672319,1.43726215994372,1.64314134241213,1.75317572031768,1.65705005423914,1.37046849128102,1.75340002742566,1.48021020356214,0.944263156536908,1.67242946380832,1.10222813294694,1.71466495501038,1.73967322383083,1.56299788829053,1.68260348327243,1.61872249418281,1.65324049285631,1.66180892247966,1.20388515052455,1.47375153411507,1.72006658592428,1.10510560642726,1.07273641275029,1.70429625081389,1.72591276599899,1.40234672004807,1.42307365543017,1.71463001266634,1.73084172134481,1.64958585555951,1.31418169482521,1.74362392738339,1.65515742932717,1.72085431007366,1.73200767683799,1.65183980871169,1.7581436133649,1.73314604653914,1.49355021023087,1.73759534829891,1.74462738067242,1.74779180372395,1.74425974901325,1.74625837011298,1.75062452953061,1.7565880881794,1.47051202584099,1.38377220001972,1.44377158122611,1.4306601295963,1.33725952060153,1.53244179327855,1.44406761586671,1.2594974534262,1.55564793686717,1.47436032923928,1.61836470970063,1.44554581173239,1.28248271769328,1.36789928882998,1.39369232838049,1.5784526366992,1.57954037980864,1.28621809991186,1.44856836293078,1.4291725641943,1.33934284292834,1.45057012935794,1.4874780957799,1.42766476610152,1.41775926654616,1.44556992632994,1.41996633626585,1.44777377535815,1.45604031503359,1.43582535979649,1.36260559219112,1.51333778449277,1.41841952704448,1.31697826992083,1.45636804765933,1.30342003794509,1.46761136271733,1.5693308038844,1.64034179299327,1.48688111020883,1.54874613539922,1.08719615886341,1.30942247222957,1.49584680110517,1.62782508588722,1.22909185697628,1.3961942004572,1.3222961398834,1.41887928975273,1.34283041319113,1.38367547914774,1.42371638711741,1.41023473636247,1.46316430058841,1.45762905862089,1.40200652819901,1.35244472430152,1.31706303298444,1.35085687336551,1.52578368389521,1.23307948482897,1.40229086342356,1.44660693837602,1.43192796876544,1.44420234610617,1.38045691354097,1.45145940239422,1.61530043235301,1.61312987414716,1.43567990502603,1.46228539285699,1.27399960142766,1.55080056644462,1.43300824078293,1.36937384457244,1.4509060685575,1.35568310678527,1.43987074774801,1.48434187060608,1.45228175236018,1.38830332102907,1.30862710501402,1.53474433710036,1.45168405463318,1.47492718523762,1.32913947680261,1.47696377514623,1.21290225333087,1.45331901929031,1.46531761923926,1.60170192398675,1.49509973119326,1.43281601850615,1.46859101678745,1.42388481661665,1.37441757991514,1.43696575262338,1.58642527870391,1.44268795835341,1.455233684412,1.11094443369099,1.42211026640904,1.4378414545682,1.56472060951902,1.42106386229376,1.41098767406457,1.29761436340279,1.63215771782188,1.45253166740471,1.436603845115,1.50100092728234,1.33055286931904,1.48893488266744,1.39770130706752,1.53467013371839,1.40286667650653,1.44807787299072,1.64179311387892,1.08948798863481,1.520101929481,1.4582625885209,1.51154151724607,1.41685646976374,1.39665163317566,1.38199597403461,1.63315427141988,1.4954007570551,1.60758123081863,1.15076132496643,1.63529872963107,1.42589968411494,1.33433845846061,1.36368416505355,1.4823904539531,1.45431923198444,1.4490099425617,1.58960373437589,1.27841918426597,1.41059973258835,1.34838241319727,1.34681706412719,1.38198818862133,1.40096706045816,1.3228482165603,1.4131458016037,1.37017930938211,1.45703409533823,1.30630150784073,1.38353852384916,1.24287753529882,1.35999758792845,1.47941675470224,1.57015121670303,1.5825540509232,1.57694949607638,1.05752512290842,1.64328847373688,1.68158224898097,1.69270826188894,0.159225794392578,1.6495613560506,-1.21276951373953,1.7313518380546,1.47916680350154,1.51474362584608,1.50014205387659,0.871343189952182,1.05307064358237,1.64542755203153,1.62116376825078,1.35386042254247,1.11608145766428,1.3738350586202,1.53937178053737,1.45038303869196,1.61541541870632,1.63665768153419,1.47129898111295,1.71757093041053,1.63261631246668,1.6436556713665,1.55900290204753,1.52022288777172,1.20845239516178,1.54047129444477,1.52365348995668,1.63088590701234,-0.366323406183341,-1.91939162122033,1.65644987981317,0.627187363107159,1.70888553939436,1.64410481826055,-3.2733763765764,1.51608277903137,1.29385749527044,1.59602789367345,1.6433877040152,1.52178058613109,1.40257548959313,1.49789222198639,1.55560833168593,1.56412660120414,1.4745524466603,1.61474496070976,1.57386316685751,1.66742173504876,1.57768006280918,1.53124935085151,1.60668010676522,1.24111245870391,1.69415412334879,1.43685787560346,1.27309314492633,1.69247577998922,1.61038532157362,1.63217327656474,1.61534503188973,0.910113336141465,0.754394737023708,1.4314130798987,1.49572797275096,1.15583818114792,1.46937415754761,1.58168873668439,1.63297492833475,1.61529291969316,1.3412183787281,1.34400832728439,1.47904280193993,1.65850288182756,1.29047103559143,1.70431499200305,1.64220386876109,0.774675839460566,0.831879281808803,1.42566207671389,1.26245855152215,0.913474603275863,1.65010086005422,0.52788558834572,1.64280983284574,1.39470858644501,1.50937891995589,1.71114361392211,1.48804358983431,1.62447426877752,1.58920272359355,0.914838501025137,1.41196645767581,1.63126723376784,1.5457857771674,1.06098943784086,1.60242465957388,1.4874163302725,1.49937066755956,0.420371315667648,1.64304818860573,0.45026459605806,1.6224702508986,1.29700181549276,1.45462061999605,1.48203534413495,1.24278449630646,1.73455712534005,1.50411459699241,-3.91595964503906,1.65244063961607,0.501440528290168,1.61426161767801,1.5894844445886,1.50236458650223,1.40897047086475,1.66308613915454,1.66866829693955,1.70668480503621,1.60332337994533,0.723157664935235,1.14141623637597,-0.0546318939733602,1.05995427572521,-0.223443775847785,1.63240292027101,1.42953085965928,1.60590131537417,1.60348354154688,1.27839044488064,1.10370547732413,1.48240266133196,1.55701798789287,1.47960547424082,1.63676843997656,1.54519922017195,1.57127936372933,1.41151900184846,1.2133832388526,1.51689773019007,1.50777078619483,1.30627960167034,1.13096974286992,1.61647483841888,1.46656612597114,0.493866505769889,1.64362587788193,1.4911609573843,0.00247239816463074,1.65943531899751,-1.23297772331318,1.5594982858495,1.65709885049978,1.42436249687468,1.65821073800457,1.56560616636462,1.45843619868887,1.62607134820491,1.46705214966529,1.46711397752786,1.28883621343661,1.59468132636191,1.46904549272951,1.47013537606589,1.14965207035219,0.989214540273339,1.53293886745606,1.47378554330633,0.416358059173141,0.377245035424952,1.53850192283158,1.65852474598813,1.47391927592132,1.2835214512629,1.65152792482107,1.46901779219856,1.6447572508147,1.47402460221671,1.66081207978702,1.50135070576298,-0.365011261342078,-2.1062697951926,1.59126241704637,1.64937022952214,0.908166875678352,1.54293715053656,-3.29481594181036,1.47987082778114,1.32953710654082,1.59234474157675,1.58610643466988,1.5585304170627,1.51491372768656,1.22692851632774,1.60256989248244,1.48062306782949,1.47720535246476,1.35242330531004,1.47269399603736,0.722388528890393,0.704181971598576,1.60599459252539,1.54504438913252,1.42827829669976,1.23740976020366,1.54111596790664,1.5605872407414,1.46752991357385,1.41182521444549,1.62691624668427,1.48257086021416,1.50049752999992,1.46687358184707,1.44965403917843,1.58308648893874,1.16607350104508,1.4740347937234,1.36396118306593,1.07900436788802,1.51992729958788,0.71802481671602,1.00221195867988,1.64420326635231,-0.0221441451230203,1.54705907802537,1.55376784994069,1.46380620557746,1.14383158101965,0.371034755930699,0.672861048210418,1.58857379600568,0.790013845029402,1.46755744838133,1.59027710843718,1.39123098989235,1.58580127822891,1.46472058254452,1.48498469623933,1.62091620560125,1.46468836776173,1.48505830964063,1.47757117291418,1.66324556008316,1.48795323450619,1.50638283739849,1.47705020682707,1.65830695876736,1.17152627421121,1.64060605459811,1.39699396894735,-3.92327810383206,1.58130148939312,1.47104674085748,0.331846766209675,1.54842849732007,1.27077086348723,1.48442375975399,1.50125905505831,1.49615248415326,1.35725166852903,1.63808343555328,1.57287117794164,0.976947674360558,1.48417140837079,1.60998122379918,0.990976361415591,1.30303626728211,1.46460417068764,1.61625056081336,1.4868534880248,-0.296868877067302,1.57897865834432,1.41038171825331,1.54506173010067,1.52000852778385,1.54382982417514,1.50869278507575,1.51014312635733,1.50544092283031,1.42304395802618,1.53227984324437,1.51374176129759,1.66081097963992,1.54029996790515,1.04925108225818,1.6647833889672,1.69265170021413,1.0376650012758,1.6760138035572,1.71553048529014,0.502103616482818,1.7042422048189,-1.16130519962916,1.69195298460636,1.74783081989634,1.38886732653717,1.59018294559757,1.71697203501513,1.59657000645842,1.62969225264209,0.949380751097251,1.68173290663311,1.70985161167219,1.43499178962065,1.19633109972132,1.56347869274553,0.747907794662718,1.7436915596087,1.47545746346374,1.69825014032435,0.566300999159899,0.0188916268914381,1.14701510084643,1.67864280721124,1.63821855757311,1.73664655624923,1.27708473468338,1.17199235578694,1.7309978394041,-0.239523640968108,1.699371119919,1.6774430035858,-2.08513009926391,1.69128459939368,-3.20362829739924,1.69833021322727,1.4169314289296,1.71946903608843,1.5736233443378,1.51515114144468,1.69621154953067,1.52982519137829,1.70573735122826,1.30868118002015,1.31967103609275,1.18599819078916,1.61184840035773,1.68719724449207,1.73313634471519,1.73960441403934,1.64854797815706,1.66854212622995,1.60689105437113,1.57222360567167,1.66880679772463,1.69651449398234,0.967822742058185,0.581259234673374,1.05169702477069,1.60919681302618,1.63705840414105,1.73191050880691,1.41701007420738,1.69180759461404,1.61651387193623,1.42161792722694,0.930925745934278,0.719397927370805,1.7202691207444,1.50737389799557,1.6621575497846,1.6090074719747,1.57676308311893,1.73148876378492,1.71738438426122,1.46885941722028,0.393439995895106,1.72804661569309,1.71577765628309,1.46900611451222,1.66083650538993,1.69505507123913,-0.166031640333286,1.66321727248074,1.63804707028649,1.29643443150903,1.63221504300936,1.14865478158654,1.70620744919945,1.64639822503596,1.52903590841756,0.457151619359832,1.19129354267168,1.66218635084412,0.909665574053636,1.34588664333983,1.37144067660678,1.6434707997253,1.74624717095848,0.192007605318402,1.71434978897527,0.790991698861032,1.58885676459013,1.74062885627361,1.61671385801995,1.49345759516784,1.53045777999231,1.27598921480074,1.68229841459608,-3.87568980232805,1.7507249398094,1.70571357754881,0.404423299340276,1.74349796628,1.72715919977608,1.72194548042297,1.73987998762739,1.74536040746338,1.62393328778969,1.4118072568204,1.69747025794592,1.75332342335398,1.7253420057364,1.68348119090676,1.73325307110812,1.66324940286619,1.26800920347296,1.70680926151012,1.33363492540715,0.769827778340687,1.56846536683118,1.73313685438571,1.31874510885999,1.74299647765645,1.55256562488234,1.49440799170073,1.65452998068783,1.39669780121496,1.58249060384244,1.43981846081312,1.499284727975,1.67542397141433,1.05558863445543,1.40579786966088,1.57273732960207,1.48039635547317,1.5335013220975,1.57912894318736,1.61588815033726,1.61026971562762,1.24824083855143,1.62385924768199,1.61356218968282,1.62830959256465,-0.204973302818782,1.57442631731298,-1.02021517623332,1.62518179337564,1.54786554642216,1.63228084308401,1.48809366970158,1.08018865711163,1.27572251644677,1.64850254964043,1.45768076824565,1.28507769227577,1.4600005539434,1.60946912368419,1.55706432815696,1.58787808921055,1.52730420976454,1.57943772269978,1.64589969617091,1.55238841882584,1.615600959829,1.57847895388363,1.60226139552184,1.37072192676266,1.64959907001744,1.4843080971583,1.62984427783947,0.111357186714535,-0.309763483904502,1.5246195123576,0.805482700551322,1.61368509341729,1.60774002804339,0.446095545425695,1.63817857579983,1.38354033751431,1.63855808427378,1.64423594867389,1.63785353732452,1.47910358936688,1.65443597312506,1.5026134378282,1.63455355516,1.65645507920048,1.41332549350894,1.63191868453555,1.62620328694976,1.62484118984071,1.40040132429931,1.53308455056398,1.35056262742057,1.63578487030303,1.56769745646922,1.65461410833025,1.21050501481114,1.02841574548056,1.3309030579531,1.50730263068921,1.56521232311803,1.33760960420358,1.56465465415647,1.53690973751775,1.48124964783032,1.63780202182778,1.61257877886926,1.601503152937,1.46113947897654,1.46842895116385,1.61463029670181,1.39876616538134,1.51653021090254,1.16210235813242,1.14316033657188,1.51858688158178,1.52432080679021,1.60477977156884,1.50131962805472,0.49525258570923,1.17775275795983,1.38959256384508,1.57966330999982,1.50682882053038,1.61072495199816,1.64910146085816,1.13475595925341,1.6234789752362,1.51712235844172,1.48934055869558,1.62665113536298,1.25895027991337,1.58181868311132,1.60160414792417,1.62787535806618,0.845435140304185,1.61301249979325,0.960160785480926,1.61394644044433,1.43725730645,1.57308778440905,1.58573678644708,1.6119700801274,1.3995876740287,1.64429098350454,1.53455708668315,0.372414886782564,1.57100562084642,0.804348159719274,1.65703814418789,1.61721927539505,1.36646833775088,1.48173061232337,1.41891486899435,1.45565638894945,1.44624079425172,1.12944773299314,1.30075415628817,1.58550675194466,-0.916663724399623,0.236792628117316,1.59620251803418,1.6458856659793,1.27199264335405,1.43833838526734,1.65602621238296,1.66182136349544,1.54167046391789,1.3266472562053,1.62254452080688,1.59933686416107,1.6527606670773,1.64470620341652,1.62268154588461,1.65774194087896,1.65200571223484,1.45997713853393,1.63020280840612,1.59743345685827,1.57402105044248,1.61156382875493,1.64217869208586,1.56254519156954,1.62831307869325,1.49721293344335,1.50243461873652,1.02710080745638,1.00257423329897,1.48150668354549,1.608245168464,0.469324828532421,1.55249673398787,1.64970606876825,-1.22039521477751,1.63937301436332,1.63054397824164,1.35371454139974,1.4403931918432,1.51781808897796,1.62392228771392,1.56103817111366,1.50500998157302,0.906239413727846,1.57589572400178,1.60549015471003,1.41157644080786,1.1575167042476,1.49469620704574,1.51224899239866,0.726515816264987,1.41388535496052,0.531779296207174,-0.0201595446854116,1.52577764634186,1.11653210602137,1.5982936822048,1.47890925236171,1.57984247038975,1.21259341664228,1.15631769138806,1.58804165048687,-0.276697729128445,1.64331239673433,1.62752931027392,-2.1364001099892,1.62926432428899,-3.26608199454915,1.63854511607816,1.33004937873216,1.55095754208339,1.42786478715831,1.44539087802631,1.39540863752022,1.42743042691401,1.53939530384335,1.21901831554222,1.29889384444572,1.11133576221456,1.58231410447478,1.44323232589965,1.52763169740442,1.48071198831772,1.57146739447071,1.45853187274719,1.53253292329747,1.53656806617009,1.58216686999336,0.927615585784233,0.553521410287974,1.00680980587986,1.57770029216118,1.59998680147714,1.59893527625377,1.38685812161777,1.49699052426284,1.57090280632532,1.37635201952089,1.51835593212885,1.5103117570073,0.916570389896224,0.683734650206104,1.47302373821885,1.49914173819161,1.54418224749508,1.46610091271056,1.45020715392489,0.369146566953308,1.65933955111025,1.52817413841025,1.64436085458752,1.42949341239995,-0.194770290884466,1.61719292237208,1.62276214403355,1.58328846414028,1.25898591399136,1.54848548382537,1.47160677183565,1.0908550528244,1.60263492196666,1.47623371507219,0.440289161585996,1.1438103343267,1.60557876804528,0.88201501640219,1.29649494741024,1.30994511237826,1.60670487066727,1.54951283035032,0.15544618193252,1.65344771634681,0.75846002297968,1.53872616001266,1.51035488749601,1.50242180742402,1.42023456694646,1.50072195923171,1.61618341142891,1.24937275065046,1.6235180720859,-3.90670434195989,1.64477667093542,0.372682324874266,1.58578995014654,1.53619571336425,1.54564086175784,1.51019825622803,1.51573027118838,1.55355583059804,1.59186581271524,1.39754242922835,1.62044636688171,1.49109155987114,1.63476686999149,1.6209840902557,1.1890078219503,1.63993750871838,1.32033033788934,0.738055488837108,1.23740879200311,1.52737160286172,1.58042167738158,1.48537818288199,1.32487411185252,1.37840266768402,1.34253736551204,1.04596385580611,1.58061434083316,1.61610926178764,1.53736027815389,1.62845104405681],"Archive2002_field4":[1.5829050791475,1.64355734269884,1.74221003802695,1.66060537069601,-4.22035686079766,0.987928773897477,1.54887377318285,1.49804698136997,1.4730614661556,1.46068358347179,1.45906203690441,1.46779516829744,1.49034236201381,1.54569778498089,1.59613035151388,1.62015369177497,1.64030596235058,1.6495050542225,1.65358776848666,1.65339961357477,1.6306363305477,1.6066091950744,1.5932505081261,1.57812080640732,1.58309244782523,1.61999593908152,1.65455954425196,1.67546744085916,1.68799395377499,1.70149005389881,1.71160844152792,1.72356909965391,1.73213788499816,1.74206234022654,1.75137565719545,1.75212027643766,1.74750138532857,1.74986018079258,1.74830069387516,1.74613917000369,1.74421659778171,1.73830359825658,1.72658199546073,1.72561340931953,1.71849276060158,1.70680154707104,1.69634411029662,1.6853266230238,1.64392600349346,1.58607114135345,1.55267620502309,1.54040524128431,1.5426495835136,1.57050670482086,1.61418167034654,1.62985065161399,1.63515277561884,1.6537639728371,1.65701393990924,1.64822916554157,1.63319279451441,1.61438891862655,1.66478003525717,1.66230681127559,1.64611965717986,1.6231017484732,1.58406949971253,1.52018510863971,1.44754565557238,1.32335001024956,1.15760916575973,0.919098534223556,0.560029282289144,-0.0743068885115692,-2.07104283741291,-4.53917283336818,-4.5382539439972,-2.04695551617127,-0.0880076423428202,0.551865205992841,0.913247589437954,1.14449934054835,1.31472328472055,1.42777172412126,1.5112584156347,1.5696729030938,1.61610740912332,1.64246627861869,1.65463990227693,1.66370597956723,1.65831347667581,1.62146317015023,1.59626434796548,1.58698666934644,1.5296931548929,1.46925608785421,1.42390512441949,1.3759372206588,1.32441214362013,1.24713929032033,1.12218507397004,0.952894596058964,0.803719668046713,0.828182861155545,1.15078985980887,1.24814449775961,1.29677202815127,1.32379026616356,1.3524803255113,1.37752366701067,1.39947875928313,1.41960080909431,1.43970941163041,1.46166664852987,1.48881983322409,1.53917280581123,1.60228439353964,1.63292692532127,1.54079113162803,1.4963153128923,1.47815355869997,1.46512258326634,1.45285884614534,1.4367967820588,1.41069191579977,1.3738116542591,1.33168859071558,1.2579620858016,1.14421355003766,0.977865813646276,0.835078490310111,0.855254033083412,0.994895212155158,0.513183366270473,0.560629348544852,1.0993234986295,1.35545324404322,1.48883625458098,1.57513162688476,1.63447729144573,1.67240251452087,1.70232188179647,1.72912676340369,1.74213623485661,1.74906543374792,1.75222918294659,1.74403510209846,1.71784004369173,1.69963445409793,1.66065269100822,1.61915841985303,1.54860327527382,1.46305134540938,1.3421014588551,1.17248635278301,0.935419475700931,0.575448365998784,-0.0501753686144043,-1.83218162020497,-4.59794537581338,-4.45801656969243,-2.224485237098,-0.0979151759089056,0.544836748941151,0.908133650714476,1.1459717044485,1.30751467800548,1.42499255473266,1.49712217923084,1.54675153684062,1.58368041832891,1.60293844932576,1.61074730083777,1.60777775575198,1.6771560902498,1.51009526813665,1.3843111502463,1.41606007398111,1.59231681336574,1.71773222470862,1.31577390100368,1.56166698959555,1.72885277064166,1.55487673561941,1.19737797337347,1.5788531112243,1.74281333683432,1.44496922513483,1.65743326082289,1.69360704998227,1.69522627239379,1.59866266916474,1.37830423235412,1.62335923087511,1.45416792859368,1.53498294677099,1.46397995244013,1.54237569006037,1.33631253257001,1.2807002608163,1.57893334194056,1.51606602869717,1.28397176637295,1.40362842796365,1.70340424931394,1.57111511367058,1.73886389400582,1.5235507841204,1.40255663556409,1.74765111415549,1.10889013923644,1.56643241066803,1.60319448453219,1.22217960179471,1.57860796739463,1.03869970866464,1.58833657536121,1.73053255246449,1.57496842018544,1.4533267012848,1.65992448916208,1.64729749675775,1.65085761780667,1.62665287545118,1.65959844032554,1.67559722429209,1.51896804931769,1.706585781023,1.45729310446378,1.68387393365958,1.48062917935706,1.49431370141194,1.71966226069922,1.69683511667505,1.48302057880608,1.65181179314332,1.69872307974342,1.71175618205883,1.40654528520089,1.48661293706845,1.33101222498893,1.68359444349668,1.69267977267569,1.41206253795815,1.47726936060818,1.61585729571811,1.33633098792727,1.7089619751901,1.47672785962257,1.61368924276324,1.52032504872356,1.64065998322632,1.72350635466744,1.71041777175392,1.49212387083046,1.54682616981528,1.73383124032894,1.67149381327155,1.30682228473114,1.4438876762143,1.44560351659341,1.60129131135132,1.50502228263275,1.27310867490426,1.5901467752114,1.45576012512311,1.5367154460889,1.41676972506009,1.36701781175826,1.48097915306476,1.57437025352825,1.51936483351443,1.64020977825372,1.27122698186047,1.53391221541908,1.36100357951117,1.68902256778832,1.72795864669787,1.61274789745608,1.75310089380215,1.61485938023202,1.12340446021599,1.72020638405805,1.5805885913118,1.72094960415809,1.1613473481458,1.70321921966468,1.66211611184726,1.69809260586574,1.68486043068336,1.73569843145782,1.69805204469752,1.63802808057438,1.7179155882319,1.46562537507382,1.60895549662703,1.509409175753,1.43426434120814,1.72915052644959,1.2920334666468,1.55825477836346,1.55574861151294,1.31208676159153,1.4254912238598,1.67468578358145,1.64872225289262,1.65143303660035,1.69150607472158,1.62704523372661,1.72080370789948,1.35106303248155,1.59965004550325,1.7426523177823,1.62672763193139,1.63433781833395,1.6587410721445,1.37951611091858,1.40487576849981,1.36770512207088,1.59465673973485,1.51132835047533,1.44245101742697,1.66746038407371,1.41351803638224,1.60042232713695,1.71431414174458,1.73956018225851,1.65657526712019,1.74975858967714,1.06289779768854,1.67065726399467,0.916245950721815,1.75029475669779,1.48517740684885,1.70518387415062,1.63422564710646,1.32354067856539,1.32257659516103,1.69856321937587,1.57430931520093,1.44813397639225,1.40882814937413,1.59464359802507,1.60275578116528,1.71808215065105,1.54485085709862,1.59576007735889,1.69891257088539,1.62325150842673,1.74378168806324,1.53204002670741,1.69516570607069,1.43604923128299,1.69199296385341,1.47272836804138,1.6920115501063,0.397985135079784,0.984015098728592,1.63722089471136,1.23873878792084,1.74847540005947,1.69138006117319,0.595913531643069,1.6912375646856,1.55593264197417,1.73721028322019,1.71487561294305,1.69802104422712,1.60131815312251,1.70908437767326,1.44805810485874,1.72040309824705,1.7136388618135,1.62291276533215,1.74480226604019,1.72484203592602,1.71049430131842,1.39069888712753,1.62585442927661,1.51073507683797,1.66920258170467,1.58862035389814,1.7190854908456,1.2642204582215,1.24054555001462,1.5045317300949,1.44605781031239,1.67472050429246,1.37964729040569,1.53752161014651,1.68053634661877,1.51836149774311,1.68141367674394,1.72790223151595,1.71438821359692,1.41558989761794,1.50730582292729,1.67712283609417,1.3710820483999,1.56897058766749,1.22469177769622,1.26761846070715,1.46728678212329,1.69838699989312,1.74948720907214,1.58295961579863,1.20647035060881,1.36698632590088,1.50224214287114,1.54523482025781,1.58464494091453,1.68760099712453,1.69293561412771,1.30532522463107,1.72973630536645,1.51100529150507,1.57088660581444,1.65249333549131,1.37964141126676,1.5551452822842,1.61414319853953,1.66276998794972,1.15314018257143,1.6756534032788,0.727664720583092,1.62853606672319,1.43726215994372,1.64314134241213,1.75317572031768,1.65705005423914,1.37046849128102,1.75340002742566,1.48021020356214,0.944263156536908,1.67242946380832,1.10222813294694,1.71466495501038,1.73967322383083,1.56299788829053,1.68260348327243,1.61872249418281,1.65324049285631,1.66180892247966,1.20388515052455,1.47375153411507,1.72006658592428,1.10510560642726,1.07273641275029,1.70429625081389,1.72591276599899,1.40234672004807,1.42307365543017,1.71463001266634,1.73084172134481,1.64958585555951,1.31418169482521,1.74362392738339,1.65515742932717,1.72085431007366,1.73200767683799,1.65183980871169,1.7581436133649,1.73314604653914,1.49355021023087,1.73759534829891,1.74462738067242,1.74779180372395,1.74425974901325,1.74625837011298,1.75062452953061,1.7565880881794,1.47051202584099,1.38377220001972,1.44377158122611,1.4306601295963,1.33725952060153,1.53244179327855,1.44406761586671,1.2594974534262,1.55564793686717,1.47436032923928,1.61836470970063,1.44554581173239,1.28248271769328,1.36789928882998,1.39369232838049,1.5784526366992,1.57954037980864,1.28621809991186,1.44856836293078,1.4291725641943,1.33934284292834,1.45057012935794,1.4874780957799,1.42766476610152,1.41775926654616,1.44556992632994,1.41996633626585,1.44777377535815,1.45604031503359,1.43582535979649,1.36260559219112,1.51333778449277,1.41841952704448,1.31697826992083,1.45636804765933,1.30342003794509,1.46761136271733,1.5693308038844,1.64034179299327,1.48688111020883,1.54874613539922,1.08719615886341,1.30942247222957,1.49584680110517,1.62782508588722,1.22909185697628,1.3961942004572,1.3222961398834,1.41887928975273,1.34283041319113,1.38367547914774,1.42371638711741,1.41023473636247,1.46316430058841,1.45762905862089,1.40200652819901,1.35244472430152,1.31706303298444,1.35085687336551,1.52578368389521,1.23307948482897,1.40229086342356,1.44660693837602,1.43192796876544,1.44420234610617,1.38045691354097,1.45145940239422,1.61530043235301,1.61312987414716,1.43567990502603,1.46228539285699,1.27399960142766,1.55080056644462,1.43300824078293,1.36937384457244,1.4509060685575,1.35568310678527,1.43987074774801,1.48434187060608,1.45228175236018,1.38830332102907,1.30862710501402,1.53474433710036,1.45168405463318,1.47492718523762,1.32913947680261,1.47696377514623,1.21290225333087,1.45331901929031,1.46531761923926,1.60170192398675,1.49509973119326,1.43281601850615,1.46859101678745,1.42388481661665,1.37441757991514,1.43696575262338,1.58642527870391,1.44268795835341,1.455233684412,1.11094443369099,1.42211026640904,1.4378414545682,1.56472060951902,1.42106386229376,1.41098767406457,1.29761436340279,1.63215771782188,1.45253166740471,1.436603845115,1.50100092728234,1.33055286931904,1.48893488266744,1.39770130706752,1.53467013371839,1.40286667650653,1.44807787299072,1.64179311387892,1.08948798863481,1.520101929481,1.4582625885209,1.51154151724607,1.41685646976374,1.39665163317566,1.38199597403461,1.63315427141988,1.4954007570551,1.60758123081863,1.15076132496643,1.63529872963107,1.42589968411494,1.33433845846061,1.36368416505355,1.4823904539531,1.45431923198444,1.4490099425617,1.58960373437589,1.27841918426597,1.41059973258835,1.34838241319727,1.34681706412719,1.38198818862133,1.40096706045816,1.3228482165603,1.4131458016037,1.37017930938211,1.45703409533823,1.30630150784073,1.38353852384916,1.24287753529882,1.35999758792845,1.47941675470224,1.57015121670303,1.5825540509232,1.57694949607638,1.05752512290842,1.64328847373688,1.68158224898097,1.69270826188894,0.159225794392578,1.6495613560506,-1.21276951373953,1.7313518380546,1.47916680350154,1.51474362584608,1.50014205387659,0.871343189952182,1.05307064358237,1.64542755203153,1.62116376825078,1.35386042254247,1.11608145766428,1.3738350586202,1.53937178053737,1.45038303869196,1.61541541870632,1.63665768153419,1.47129898111295,1.71757093041053,1.63261631246668,1.6436556713665,1.55900290204753,1.52022288777172,1.20845239516178,1.54047129444477,1.52365348995668,1.63088590701234,-0.366323406183341,-1.91939162122033,1.65644987981317,0.627187363107159,1.70888553939436,1.64410481826055,-3.2733763765764,1.51608277903137,1.29385749527044,1.59602789367345,1.6433877040152,1.52178058613109,1.40257548959313,1.49789222198639,1.55560833168593,1.56412660120414,1.4745524466603,1.61474496070976,1.57386316685751,1.66742173504876,1.57768006280918,1.53124935085151,1.60668010676522,1.24111245870391,1.69415412334879,1.43685787560346,1.27309314492633,1.69247577998922,1.61038532157362,1.63217327656474,1.61534503188973,0.910113336141465,0.754394737023708,1.4314130798987,1.49572797275096,1.15583818114792,1.46937415754761,1.58168873668439,1.63297492833475,1.61529291969316,1.3412183787281,1.34400832728439,1.47904280193993,1.65850288182756,1.29047103559143,1.70431499200305,1.64220386876109,0.774675839460566,0.831879281808803,1.42566207671389,1.26245855152215,0.913474603275863,1.65010086005422,0.52788558834572,1.64280983284574,1.39470858644501,1.50937891995589,1.71114361392211,1.48804358983431,1.62447426877752,1.58920272359355,0.914838501025137,1.41196645767581,1.63126723376784,1.5457857771674,1.06098943784086,1.60242465957388,1.4874163302725,1.49937066755956,0.420371315667648,1.64304818860573,0.45026459605806,1.6224702508986,1.29700181549276,1.45462061999605,1.48203534413495,1.24278449630646,1.73455712534005,1.50411459699241,-3.91595964503906,1.65244063961607,0.501440528290168,1.61426161767801,1.5894844445886,1.50236458650223,1.40897047086475,1.66308613915454,1.66866829693955,1.70668480503621,1.60332337994533,0.723157664935235,1.14141623637597,-0.0546318939733602,1.05995427572521,-0.223443775847785,1.63240292027101,1.42953085965928,1.60590131537417,1.60348354154688,1.27839044488064,1.10370547732413,1.48240266133196,1.55701798789287,1.47960547424082,1.63676843997656,1.54519922017195,1.57127936372933,1.41151900184846,1.2133832388526,1.51689773019007,1.50777078619483,1.30627960167034,1.13096974286992,1.61647483841888,1.46656612597114,0.493866505769889,1.64362587788193,1.4911609573843,0.00247239816463074,1.65943531899751,-1.23297772331318,1.5594982858495,1.65709885049978,1.42436249687468,1.65821073800457,1.56560616636462,1.45843619868887,1.62607134820491,1.46705214966529,1.46711397752786,1.28883621343661,1.59468132636191,1.46904549272951,1.47013537606589,1.14965207035219,0.989214540273339,1.53293886745606,1.47378554330633,0.416358059173141,0.377245035424952,1.53850192283158,1.65852474598813,1.47391927592132,1.2835214512629,1.65152792482107,1.46901779219856,1.6447572508147,1.47402460221671,1.66081207978702,1.50135070576298,-0.365011261342078,-2.1062697951926,1.59126241704637,1.64937022952214,0.908166875678352,1.54293715053656,-3.29481594181036,1.47987082778114,1.32953710654082,1.59234474157675,1.58610643466988,1.5585304170627,1.51491372768656,1.22692851632774,1.60256989248244,1.48062306782949,1.47720535246476,1.35242330531004,1.47269399603736,0.722388528890393,0.704181971598576,1.60599459252539,1.54504438913252,1.42827829669976,1.23740976020366,1.54111596790664,1.5605872407414,1.46752991357385,1.41182521444549,1.62691624668427,1.48257086021416,1.50049752999992,1.46687358184707,1.44965403917843,1.58308648893874,1.16607350104508,1.4740347937234,1.36396118306593,1.07900436788802,1.51992729958788,0.71802481671602,1.00221195867988,1.64420326635231,-0.0221441451230203,1.54705907802537,1.55376784994069,1.46380620557746,1.14383158101965,0.371034755930699,0.672861048210418,1.58857379600568,0.790013845029402,1.46755744838133,1.59027710843718,1.39123098989235,1.58580127822891,1.46472058254452,1.48498469623933,1.62091620560125,1.46468836776173,1.48505830964063,1.47757117291418,1.66324556008316,1.48795323450619,1.50638283739849,1.47705020682707,1.65830695876736,1.17152627421121,1.64060605459811,1.39699396894735,-3.92327810383206,1.58130148939312,1.47104674085748,0.331846766209675,1.54842849732007,1.27077086348723,1.48442375975399,1.50125905505831,1.49615248415326,1.35725166852903,1.63808343555328,1.57287117794164,0.976947674360558,1.48417140837079,1.60998122379918,0.990976361415591,1.30303626728211,1.46460417068764,1.61625056081336,1.4868534880248,-0.296868877067302,1.57897865834432,1.41038171825331,1.54506173010067,1.52000852778385,1.54382982417514,1.50869278507575,1.51014312635733,1.50544092283031,1.42304395802618,1.53227984324437,1.51374176129759,1.66081097963992,1.54029996790515,1.04925108225818,1.6647833889672,1.69265170021413,1.0376650012758,1.6760138035572,1.71553048529014,0.502103616482818,1.7042422048189,-1.16130519962916,1.69195298460636,1.74783081989634,1.38886732653717,1.59018294559757,1.71697203501513,1.59657000645842,1.62969225264209,0.949380751097251,1.68173290663311,1.70985161167219,1.43499178962065,1.19633109972132,1.56347869274553,0.747907794662718,1.7436915596087,1.47545746346374,1.69825014032435,0.566300999159899,0.0188916268914381,1.14701510084643,1.67864280721124,1.63821855757311,1.73664655624923,1.27708473468338,1.17199235578694,1.7309978394041,-0.239523640968108,1.699371119919,1.6774430035858,-2.08513009926391,1.69128459939368,-3.20362829739924,1.69833021322727,1.4169314289296,1.71946903608843,1.5736233443378,1.51515114144468,1.69621154953067,1.52982519137829,1.70573735122826,1.30868118002015,1.31967103609275,1.18599819078916,1.61184840035773,1.68719724449207,1.73313634471519,1.73960441403934,1.64854797815706,1.66854212622995,1.60689105437113,1.57222360567167,1.66880679772463,1.69651449398234,0.967822742058185,0.581259234673374,1.05169702477069,1.60919681302618,1.63705840414105,1.73191050880691,1.41701007420738,1.69180759461404,1.61651387193623,1.42161792722694,0.930925745934278,0.719397927370805,1.7202691207444,1.50737389799557,1.6621575497846,1.6090074719747,1.57676308311893,1.73148876378492,1.71738438426122,1.46885941722028,0.393439995895106,1.72804661569309,1.71577765628309,1.46900611451222,1.66083650538993,1.69505507123913,-0.166031640333286,1.66321727248074,1.63804707028649,1.29643443150903,1.63221504300936,1.14865478158654,1.70620744919945,1.64639822503596,1.52903590841756,0.457151619359832,1.19129354267168,1.66218635084412,0.909665574053636,1.34588664333983,1.37144067660678,1.6434707997253,1.74624717095848,0.192007605318402,1.71434978897527,0.790991698861032,1.58885676459013,1.74062885627361,1.61671385801995,1.49345759516784,1.53045777999231,1.27598921480074,1.68229841459608,-3.87568980232805,1.7507249398094,1.70571357754881,0.404423299340276,1.74349796628,1.72715919977608,1.72194548042297,1.73987998762739,1.74536040746338,1.62393328778969,1.4118072568204,1.69747025794592,1.75332342335398,1.7253420057364,1.68348119090676,1.73325307110812,1.66324940286619,1.26800920347296,1.70680926151012,1.33363492540715,0.769827778340687,1.56846536683118,1.73313685438571,1.31874510885999,1.74299647765645,1.55256562488234,1.49440799170073,1.65452998068783,1.39669780121496,1.58249060384244,1.43981846081312,1.499284727975,1.67542397141433,1.05558863445543,1.40579786966088,1.57273732960207,1.48039635547317,1.5335013220975,1.57912894318736,1.61588815033726,1.61026971562762,1.24824083855143,1.62385924768199,1.61356218968282,1.62830959256465,-0.204973302818782,1.57442631731298,-1.02021517623332,1.62518179337564,1.54786554642216,1.63228084308401,1.48809366970158,1.08018865711163,1.27572251644677,1.64850254964043,1.45768076824565,1.28507769227577,1.4600005539434,1.60946912368419,1.55706432815696,1.58787808921055,1.52730420976454,1.57943772269978,1.64589969617091,1.55238841882584,1.615600959829,1.57847895388363,1.60226139552184,1.37072192676266,1.64959907001744,1.4843080971583,1.62984427783947,0.111357186714535,-0.309763483904502,1.5246195123576,0.805482700551322,1.61368509341729,1.60774002804339,0.446095545425695,1.63817857579983,1.38354033751431,1.63855808427378,1.64423594867389,1.63785353732452,1.47910358936688,1.65443597312506,1.5026134378282,1.63455355516,1.65645507920048,1.41332549350894,1.63191868453555,1.62620328694976,1.62484118984071,1.40040132429931,1.53308455056398,1.35056262742057,1.63578487030303,1.56769745646922,1.65461410833025,1.21050501481114,1.02841574548056,1.3309030579531,1.50730263068921,1.56521232311803,1.33760960420358,1.56465465415647,1.53690973751775,1.48124964783032,1.63780202182778,1.61257877886926,1.601503152937,1.46113947897654,1.46842895116385,1.61463029670181,1.39876616538134,1.51653021090254,1.16210235813242,1.14316033657188,1.51858688158178,1.52432080679021,1.60477977156884,1.50131962805472,0.49525258570923,1.17775275795983,1.38959256384508,1.57966330999982,1.50682882053038,1.61072495199816,1.64910146085816,1.13475595925341,1.6234789752362,1.51712235844172,1.48934055869558,1.62665113536298,1.25895027991337,1.58181868311132,1.60160414792417,1.62787535806618,0.845435140304185,1.61301249979325,0.960160785480926,1.61394644044433,1.43725730645,1.57308778440905,1.58573678644708,1.6119700801274,1.3995876740287,1.64429098350454,1.53455708668315,0.372414886782564,1.57100562084642,0.804348159719274,1.65703814418789,1.61721927539505,1.36646833775088,1.48173061232337,1.41891486899435,1.45565638894945,1.44624079425172,1.12944773299314,1.30075415628817,1.58550675194466,-0.916663724399623,0.236792628117316,1.59620251803418,1.6458856659793,1.27199264335405,1.43833838526734,1.65602621238296,1.66182136349544,1.54167046391789,1.3266472562053,1.62254452080688,1.59933686416107,1.6527606670773,1.64470620341652,1.62268154588461,1.65774194087896,1.65200571223484,1.45997713853393,1.63020280840612,1.59743345685827,1.57402105044248,1.61156382875493,1.64217869208586,1.56254519156954,1.62831307869325,1.49721293344335,1.50243461873652,1.02710080745638,1.00257423329897,1.48150668354549,1.608245168464,0.469324828532421,1.55249673398787,1.64970606876825,-1.22039521477751,1.63937301436332,1.63054397824164,1.35371454139974,1.4403931918432,1.51781808897796,1.62392228771392,1.56103817111366,1.50500998157302,0.906239413727846,1.57589572400178,1.60549015471003,1.41157644080786,1.1575167042476,1.49469620704574,1.51224899239866,0.726515816264987,1.41388535496052,0.531779296207174,-0.0201595446854116,1.52577764634186,1.11653210602137,1.5982936822048,1.47890925236171,1.57984247038975,1.21259341664228,1.15631769138806,1.58804165048687,-0.276697729128445,1.64331239673433,1.62752931027392,-2.1364001099892,1.62926432428899,-3.26608199454915,1.63854511607816,1.33004937873216,1.55095754208339,1.42786478715831,1.44539087802631,1.39540863752022,1.42743042691401,1.53939530384335,1.21901831554222,1.29889384444572,1.11133576221456,1.58231410447478,1.44323232589965,1.52763169740442,1.48071198831772,1.57146739447071,1.45853187274719,1.53253292329747,1.53656806617009,1.58216686999336,0.927615585784233,0.553521410287974,1.00680980587986,1.57770029216118,1.59998680147714,1.59893527625377,1.38685812161777,1.49699052426284,1.57090280632532,1.37635201952089,1.51835593212885,1.5103117570073,0.916570389896224,0.683734650206104,1.47302373821885,1.49914173819161,1.54418224749508,1.46610091271056,1.45020715392489,0.369146566953308,1.65933955111025,1.52817413841025,1.64436085458752,1.42949341239995,-0.194770290884466,1.61719292237208,1.62276214403355,1.58328846414028,1.25898591399136,1.54848548382537,1.47160677183565,1.0908550528244,1.60263492196666,1.47623371507219,0.440289161585996,1.1438103343267,1.60557876804528,0.88201501640219,1.29649494741024,1.30994511237826,1.60670487066727,1.54951283035032,0.15544618193252,1.65344771634681,0.75846002297968,1.53872616001266,1.51035488749601,1.50242180742402,1.42023456694646,1.50072195923171,1.61618341142891,1.24937275065046,1.6235180720859,-3.90670434195989,1.64477667093542,0.372682324874266,1.58578995014654,1.53619571336425,1.54564086175784,1.51019825622803,1.51573027118838,1.55355583059804,1.59186581271524,1.39754242922835,1.62044636688171,1.49109155987114,1.63476686999149,1.6209840902557,1.1890078219503,1.63993750871838,1.32033033788934,0.738055488837108,1.23740879200311,1.52737160286172,1.58042167738158,1.48537818288199,1.32487411185252,1.37840266768402,1.34253736551204,1.04596385580611,1.58061434083316,1.61610926178764,1.53736027815389,1.62845104405681]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive201.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive201.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive201.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive201_field1":[0,0,0,0,385.990591313327,0,0,282.091237885843,0,100.812802283923,680.058684338847,373.843329451242,37.2913341522577,0,934.228442915375,455.68595635788,282.739056710936,294.348035239586,261.760915020434,-574.298337387656,436.534670167033,528.48216462868,238.972331832553,137.479614372576,351.852564185543,0,-288.299265085187,137.460129446806,0,193.034813090109,0,548.695629615635,0,0,-79.3836821929089,-80.8703382118521,0,0,259.473468361195,564.492465579917,365.488402753381,-408.557500507937,520.951736451642,-146.15391248504],"Archive201_field2":[0,0,0,0,5965.34276065931,0,0,7916.94414451569,0,6208.22142682196,3109.76404218389,5849.21762099959,4618.54358869215,0,7268.97621225414,7471.15625159066,3531.6636518669,7414.77993432184,6960.53513478038,7235.53301657511,6473.69250200484,4515.54623024791,6074.37059116712,5129.87028135797,4414.54691631822,0,2821.14762921868,7163.16806559602,0,4530.66685591532,0,5069.88644814175,0,0,2331.67427348506,2966.15734905871,0,0,3337.04243932143,2529.97221952273,2276.6240399569,1044.65819816935,962.171930332715,2769.926621101],"Archive201_field3":[0,0,0,0,5977.81757740506,0,0,7921.96819318742,0,6209.03990207469,3183.25497128404,5861.15224275801,4618.69413625239,0,7328.76510456356,7485.04010854345,3542.96338170572,7420.6200711444,6965.45534327401,7258.28882135967,6488.39403310029,4546.36680832472,6079.06948917492,5131.71216534284,4428.54656781417,0,2835.84033614285,7164.48686391162,0,4534.77723800787,0,5099.49168947364,0,0,2333.02522203052,2967.25958267515,0,0,3347.11498497075,2592.18270483646,2305.77509567973,1121.70851036431,1094.15059988658,2773.7798132546],"Archive201_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive202.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive202.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive202.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive202_field1":[0,0,0,0,412.40931333429,0,0,193.531702943521,0,84.6887289445586,1003.20939396414,332.684474099998,139.569297101487,68.2265211406598,0,0,561.443181169373,483.259339461663,-163.448912575776,0,435.646749462171,0,588.643827810093,247.831710116134,0,0,-288.702876869874,0,0,0,0,412.40931333429,0,0,193.531702943521,0,84.6887289445585,1003.20939396414,332.684474099998,139.569297101487,68.2265211406598,0,0,561.443181169373,483.259339461663,-163.448912575776,0,435.646749462171,0,588.643827810093,247.831710116134,0,0,-288.702876869874,0,0,0,0,412.40931333429,0,0,193.531702943521,0,84.6887289445586,1003.20939396414,332.684474099998,139.569297101487,68.2265211406598,0,0,561.443181169373,483.259339461663,-163.448912575776,0,435.646749462171,0,588.643827810093,247.831710116134,0,0,-288.702876869874],"Archive202_field2":[0,0,0,0,5695.26678854553,0,0,7523.25053429429,0,5913.71371999233,2819.48126634841,5787.12774032147,4507.41120310109,3367.68581760425,0,0,4254.89417894782,4578.46845455305,2381.41950536351,0,3133.89410400217,0,6534.15296259196,6588.28506078503,0,0,6480.51464071987,0,0,0,0,5695.26678854553,0,0,7523.25053429428,0,5913.71371999233,2819.4812663484,5787.12774032147,4507.41120310109,3367.68581760425,0,0,4254.89417894782,4578.46845455305,2381.41950536351,0,3133.89410400218,0,6534.15296259196,6588.28506078503,0,0,6480.51464071987,0,0,0,0,5695.26678854553,0,0,7523.25053429429,0,5913.71371999233,2819.48126634841,5787.12774032147,4507.41120310109,3367.68581760425,0,0,4254.89417894782,4578.46845455305,2381.41950536351,0,3133.89410400217,0,6534.15296259196,6588.28506078503,0,0,6480.51464071987],"Archive202_field3":[0,0,0,0,3.59947706502733,0,0,4.73274514234068,0,3.71598217224222,1.83208348828239,3.65211442399209,2.83701542668592,2.11739727995133,0,0,2.70504023604137,2.90316706596386,1.48400947863316,0,1.9937548345417,0,4.13690975116444,4.14949104789405,0,0,4.04820267215555,0,0,0,0,3.16344213970493,0,0,4.40867109459654,0,3.40342508663479,-1.15287125444891,3.2241223485498,2.17941739243867,-0.689331783030284,0,0,0.753119241286265,2.07507522679539,-0.326417797268577,0,0.874473257705851,0,4.06486312327925,3.83095353151741,0,0,3.83101540259044,0,0,0,0,1.85533736373775,0,0,3.43644895136412,0,2.46575382981252,-10.1077354826428,1.94014612222293,0.206623289696918,-9.10951897197513,0,0,-5.10264374297904,-0.409200290710058,-5.75769962497378,0,-2.4833714728017,0,3.84872323962365,2.87534098238748,0,0,3.17945359389511],"Archive202_field4":[0,0,0,0,5710.18022400954,0,0,7525.74086191387,0,5914.32125872101,2992.64215300751,5796.68351560142,4509.57241777878,3368.37751857641,0,0,4291.77704884216,4603.90284507539,2387.02254070466,0,3164.02975973281,0,6560.61533764863,6592.94606507426,0,0,6486.94348269217,0,0,0,0,5710.17996579799,0,0,7525.74066508967,0,5914.32107059957,2992.64181427374,5796.68326175153,4509.57205202387,3368.37692360253,0,0,4291.77626244825,4603.90239736373,2387.02210171933,0,3164.02925241219,0,6560.61529261398,6592.94587228708,0,0,6486.94335079138,0,0,0,0,5710.17939093959,0,0,7525.74015834887,0,5914.3206053424,2992.65866174946,5796.68268980392,4509.57153011545,3368.38917104536,0,0,4291.77922972499,4603.90194790888,2387.02902342074,0,3164.03010613844,0,6560.61516225718,6592.94538626614,0,0,6486.94299871848],"Archive202_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive203.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive203.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive203.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive203_field1":[0,0,0,0,412.467673271386,0,0,193.605894238602,0,84.4673282320207,1003.48831721966,332.896232245122,139.545963115037,68.1966087833939,0,0,561.587042448101,483.388899480531,-163.539530995639,0,435.869781194196,0,589.032248774047,247.85751162281,0,0,-288.998492730262,0,0,0,0,412.467721015491,0,0,193.605985547199,0,84.4663983566571,1003.49032548926,332.896987411645,139.545076910044,68.1966266607295,0,0,561.58711569276,483.389762572959,-163.541316872452,0,435.872552818141,0,589.032012103992,247.857566015867,0,0,-288.99803114709,0,0,0,0,412.467771404331,0,0,193.606081917426,0,84.4654169315776,1003.49244508095,332.897784448176,139.544141581044,68.1966454986547,0,0,561.587193032859,483.39067351255,-163.543201720789,0,435.875478057205,0,589.031762311077,247.857623422511,0,0,-288.997543974122],"Archive203_field2":[0,0,0,0,5697.33779819481,0,0,7527.9014221425,0,5916.07853628369,2820.19497692142,5789.68987525538,4508.91630010866,3368.60174913007,0,0,4256.16341066922,4579.96000989935,2382.08113310515,0,3135.04492160692,0,6537.72417871305,6591.44554664172,0,0,6484.48357279726,0,0,0,0,5697.33905894165,0,0,7527.90213104393,0,5916.07901306948,2820.20030618107,5789.69062098486,4508.91808263759,3368.60735298807,0,0,4256.16792624109,4579.96202502696,2382.08447329476,0,3135.04712927414,0,6537.72503662882,6591.44636290519,0,0,6484.48503432994,0,0,0,0,5697.34057024478,0,0,7527.90335575364,0,5916.07905776879,2820.20592275249,5789.69075883261,4508.92004721075,3368.6132180561,0,0,4256.17264168242,4579.96424904192,2382.08799190584,0,3135.04961361204,0,6537.72776836413,6591.44732151005,0,0,6484.48943712713],"Archive203_field3":[0,0,0,0,3.60078107758525,0,0,4.73566782839999,0,3.71745191525859,1.83254731260369,3.65373534882761,2.83795967307978,2.11796922671017,0,0,2.70584593756487,2.90411253233492,1.48441802731802,0,1.99449045337965,0,4.13917415664279,4.15147588347694,0,0,4.05067288596888,0,0,0,0,3.16430625413609,0,0,4.41109196942317,0,3.40450491667435,-1.15326007691322,3.22523797020281,2.17986133785829,-0.689630841859504,0,0,0.753207376843754,2.07544247129953,-0.326623420724211,0,0.874589727614748,0,4.066766289025,3.83247115974019,0,0,3.8329289001082,0,0,0,0,1.85489519437635,0,0,3.43736197177329,0,2.46565980878202,-10.1107132546473,1.93974493270533,0.205586979873993,-9.11245115369989,0,0,-5.10470706597763,-0.410544983023562,-5.75976627832705,0,-2.48512431985529,0,3.84953437152019,2.87545801182989,0,0,3.17967813525233],"Archive203_field4":[0,0,0,0,5712.25004125848,0,0,7530.39212062219,0,5916.68266822414,2993.40806922123,5799.25358152751,4511.07607242688,3369.29265684733,0,0,4293.05419324835,4605.39976052979,2387.68882109681,0,3165.20032614743,0,6564.20700159492,6596.10528836243,0,0,6490.92164046284,0,0,0,0,5712.25104370037,0,0,7530.39263451434,0,5916.68294333795,2993.41342456119,5799.25411523825,4511.07746067627,3369.29766480848,0,0,4293.05789294727,4605.40140712087,2387.69183667391,0,3165.20238689052,0,6564.20778955349,6596.10591303101,0,0,6490.92294776327,0,0,0,0,5712.25197942462,0,0,7530.39335386802,0,5916.68250829011,2993.4362796935,5799.25372616276,4511.07887337991,3369.31578099851,0,0,4293.06554681135,4605.40326511026,2387.70240082776,0,3165.20610514125,0,6564.21035686438,6596.10638649722,0,0,6490.92697162658],"Archive203_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive204.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive204.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive204.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive204_field1":[0,0,0,0,-45.8888320478956,0,0,61.6684879867685,0,8.21348412116865,0.542379790928079,220.440542162431,205.842973285508,71.8445598802018,0,0,-273.852199255264,-254.614222636314,82.5758505122091,0,-139.205484757196,0,508.557488721691,8.33383739588326,0,0,-160.941539798718,0,0,0,0,-45.8882097498361,0,0,61.668460306503,0,8.21010099068886,0.542371786656953,220.444589120153,205.842296162253,71.8449287222484,0,0,-273.853075233858,-254.61382400781,82.5768235223198,0,-139.203739004075,0,508.554528380803,8.33398355657462,0,0,-160.938444167914,0,0,0,0,-45.8879480985918,0,0,61.6683396439685,0,8.2007102887294,0.542402917384378,220.455143439641,205.838845891442,71.8435002234294,0,0,-273.847676376403,-254.608661447501,82.5716755137685,0,-139.194997169791,0,508.545347583226,8.33368355031503,0,0,-160.928413957074],"Archive204_field2":[0,0,0,0,2874.59546735117,0,0,4453.88012577464,0,2824.28484874876,0.471948130263084,2985.39790308039,2514.35763913676,400.296708005858,0,0,630.027062266272,901.668349024946,564.269047999365,0,1118.79054151942,0,3600.55939311328,3350.83924094244,0,0,3709.50693072694,0,0,0,0,2874.60057205954,0,0,4453.88245104443,0,2824.28651642549,0.471942270469923,2985.40094347799,2514.36170453719,400.297515442447,0,0,630.028078074333,901.6712781774,564.269726760664,0,1118.79338280722,0,3600.56140491872,3350.84301275919,0,0,3709.50972393465,0,0,0,0,2874.6072918429,0,0,4453.88996322325,0,2824.29052682995,0.471976984167895,2985.40673770631,2514.36701564702,400.304400795055,0,0,630.035746513719,901.679912935126,564.272797051903,0,1118.79713700931,0,3600.56817385978,3350.85270672909,0,0,3709.5173375136],"Archive204_field3":[0,0,0,0,-0.946114988733364,0,0,-14.5755265500181,0,-4.85322183826026,0.00272255231665172,-3.76396899024607,0.260864406497789,2.42700578194676,0,0,1.8102079217791,1.55329274384753,1.04625154567924,0,0.300387261418586,0,-8.6339828047323,-8.08797227216668,0,0,-9.30810163472406,0,0,0,0,-2.15798714149638,0,0,-15.0807041568986,0,-4.83978780477243,0.000919392716975743,-4.24921288024446,-0.768575541931113,0.845698205071825,0,0,0.512480861700642,0.191197145987772,0.303227879059746,0,-0.486146210122474,0,-8.9528001734223,-8.11390542997716,0,0,-9.43010349186115,0,0,0,0,-5.79348815257521,0,0,-16.5962128586602,0,-4.79949679150761,-0.00458418156567543,-5.70493507037394,-3.85695845167097,-3.89820440504884,0,0,-3.38079896912494,-3.89517649380611,-1.92588200568366,0,-2.84571461385548,0,-9.90926773794832,-8.19173447547032,0,0,-9.79612973858209],"Archive204_field4":[0,0,0,0,2874.96187469611,0,0,4454.33088388763,0,2824.30096164616,0.718970296714074,2993.52782512677,2522.76945739928,406.700117508925,0,0,686.973364168898,936.929360581903,570.280127884727,0,1127.41763912595,0,3636.30763389599,3350.85936541373,0,0,3713.00828023585,0,0,0,0,2874.96762305031,0,0,4454.334890234,0,2824.30259642395,0.718955844889468,2993.53180474197,2522.77355758317,406.694614985194,0,0,686.972451131566,936.930803113173,570.280061258271,0,1127.42030791718,0,3636.3099828752,3350.86320026651,0,0,3713.01124447917,0,0,0,0,2874.97936524805,0,0,4454.34778872244,0,2824.30651076686,0.719016142441832,2993.54078076371,2522.78140075198,406.718942044535,0,0,686.985459484787,936.945787265572,570.285525076193,0,1127.42644066431,0,3636.31788197176,3350.87308279334,0,0,3713.01936379149],"Archive204_field5":[-53963461.2297586,8366066.1,2083576.36840727,2810135.52627606,5297627.81895318,8407406.04111729,4689185.48378057,2241864.64278264,5620894.86124724,3813334.64844494,6839241.83958692,4023084.51235253,5326768.74575705,6970402.27587388,6884249.83586203,7909999.15050906,6745127.86755948,5849502.79831435,6583515.52708947,4135995.25592116,5122187.73447493,3913723.02613115,2131305.08282441,3919586.12745648,42170197.7053908,39963345.1422642,2468146.89095466,-56195012.9758847,6274549.575,1566352.82718537,2135451.41003858,3914549.76690892,6237182.92339306,3384850.03350543,1645898.96079502,4159057.33317351,2863153.1853247,5023490.66835947,2994199.78737459,3983009.69760593,5213420.88619652,5186272.76895169,5779148.86811216,5056953.98704043,4382720.20011236,4954428.40627224,3067718.39632281,3837013.84656064,3002846.4298789,1574682.73775078,2930044.1685342,40303675.0690823,37742515.6478716,1832816.40150048,-62935974.0084811,0,14592.1371278717,111401.82984257,-234741.511833535,-273503.618576778,-528293.650180871,-142009.203415736,-226389.234455022,12617.6637133918,-424483.704358029,-92470.9278600472,-48225.2102338752,-57536.2021219897,92406.2474769734,-613461.272206177,-7404.07598397757,-17493.2438349497,67192.2259829078,-137036.277419156,-18578.9040272114,270362.288994278,-95160.4364729661,-38560.3884560946,34733826.8113687,31109944.8456009,-73164.8917945386],"Archive204_field6":[0,0,0,0,-45.8878843616,0,0,61.6680848613108,0,8.20676495740207,0.542425941535241,220.447847098826,205.841127103472,71.8448141373654,0,0,-273.854400249347,-254.613923649439,82.5784382271522,0,-139.202523116668,0,508.55014576788,8.33388032591063,0,0,-160.934745091993,0,0,0,0,-45.8878908195896,0,0,61.6681248516239,0,8.20683295544601,0.542439236919063,220.447770677213,205.840970024992,71.8447940737949,0,0,-273.853867008236,-254.613523511887,82.5778917431755,0,-139.202084049741,0,508.550319007188,8.33382026459204,0,0,-160.93484870661,0,0,0,0,-45.8895154115413,0,0,61.6682072017994,0,8.20779562340146,0.542534327283546,220.445954874699,205.839079900888,71.8421988382678,0,0,-273.844240554881,-254.608356466727,82.5681853236312,0,-139.197262277788,0,508.550538949585,8.33290159182174,0,0,-160.934416228188],"Archive204_field7":[0,0,0,0,2874.59807984243,0,0,4453.87177470929,0,2824.28202633223,0.471978134985299,2985.3967322988,2514.3600480232,400.293573777725,0,0,630.024276214187,901.669030488655,564.267280783671,0,1118.79226401521,0,3600.55308172299,3350.83844910038,0,0,3709.50241918373,0,0,0,0,2874.59858150297,0,0,4453.87250441974,0,2824.28181172337,0.471995946129087,2985.39690761392,2514.36059299153,400.295550107757,0,0,630.026137044857,901.670859926704,564.268193937207,0,1118.79294214102,0,3600.55398337915,3350.83849469028,0,0,3709.50327573336,0,0,0,0,2874.59149217573,0,0,4453.87522992262,0,2824.280175265,0.472101663703633,2985.39410659075,2514.35534282261,400.305942114832,0,0,630.036340519029,901.676195512632,564.27196741655,0,1118.79020687515,0,3600.55742187959,3350.83700999179,0,0,3709.50507935411],"Archive204_field8":[0,0,0,0,1.77804874251151,0,0,2.81336361016879,0,1.77558189491286,-0.0118457173937182,1.88883735204141,1.58206357615966,0.309919328613935,0,0,0.400103145384134,0.587054639742663,0.34867748349186,0,0.695619359954122,0,2.2696848705139,2.07876913461235,0,0,2.28323411536012,0,0,0,0,0.56617699476418,0,0,2.30818894493387,0,1.78901723984424,-0.0136488604080125,1.40359357464557,0.552622723789185,-1.2713884466397,0,0,-0.897623419539662,-0.775041654596109,-0.394347186574166,0,-0.0909160021205518,0,1.95086704366898,2.05283955419497,0,0,2.16123168091002,0,0,0,0,-3.06931693124602,0,0,0.792680260418923,0,1.82930643477022,-0.0191536193813849,-0.0521266456107336,-2.53575454971728,-6.01527589819208,0,0,-4.7908900297818,-4.86140225807478,-2.62345271696562,0,-2.45047559362503,0,0.99440152494719,1.97500313633695,0,0,1.79520367031764],"Archive204_field9":[0,0,0,0,2874.96486587616,0,0,4454.29956932146,0,2824.29450800468,0.719117224779914,2993.52542501603,2522.77219019626,406.689953866783,0,0,686.969417978462,936.928831497709,570.277900850999,0,1127.41915734505,0,3636.29081572622,3350.84945749759,0,0,3712.99251322512,0,0,0,0,2874.96487350005,0,0,4454.30000909066,0,2824.29430207287,0.719170904793892,2993.52532737945,2522.77228499153,406.693764766759,0,0,686.971381909634,936.930619995775,570.27875499935,0,1127.41956513717,0,3636.29154772716,3350.84948695233,0,0,3712.993300442,0,0,0,0,2874.95939366459,0,0,4454.30220796027,0,2824.29269422734,0.719437515207648,2993.52207164146,2522.76811198457,406.746029323572,0,0,686.993021134106,936.94664200729,570.286981215545,0,1127.41891489189,0,3636.29459584238,3350.8479531929,0,0,3712.99488860904],"Archive204_field10":[-53963637.6787869,8366066.1,2083567.96475477,2810126.13319037,5297628.34244172,8407416.17562542,4689182.94429818,2241863.30271831,5620887.7383512,3813337.66374565,6839250.65668963,4023086.3388752,5326769.50089258,6970397.90440467,6884265.60829375,7910002.99698972,6745122.67820615,5849500.91097587,6583511.89075887,4135988.48814221,5122190.71080605,3913711.54802319,2131306.56364587,3919587.17963646,42170270.0074726,39963404.900585,2468149.65755,-56195192.1769573,6274549.575,1566352.22432511,2135450.80687231,3914550.00330535,6237182.81577663,3384849.8259824,1645898.59498735,4159057.41925354,2863153.37286826,5023490.90677939,2994200.06584959,3983010.02852289,5213419.8303539,5186273.83150734,5779148.3103825,5056953.84613935,4382719.45787333,4954428.28009926,3067717.92309178,3837013.62479515,3002845.63198027,1574683.08095679,2930045.23807314,40303773.2472546,37742605.6582591,1832816.74488006,-62936155.1955748,0,14595.3392739802,111405.634180167,-234741.168877073,-273507.77593212,-528292.327155533,-142008.893942678,-226386.707667924,12616.3086383132,-424486.664601677,-92471.7484901478,-48225.8622178938,-57534.8020210232,92398.4895495404,-613462.092203905,-7402.49670673619,-17492.899507074,67194.3286293259,-137033.549327099,-18579.6340685917,270366.6629191,-95160.4539729086,-38561.7238922934,34733934.7114221,31110046.3196329,-73165.2796169099]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive205.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive205.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive205.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive205_field1":[0,0,0,0,386.019274045482,0,0,281.527301740172,0,101.646674454315,679.83157611437,373.276237269543,37.5371380669876,0,931.972875674992,455.660235797413,282.208262419047,293.974334015881,262.085719585682,-572.409539087833,436.282072984123,528.164174425958,239.343996201184,137.637456255533,351.799793520009,0,-288.090441362691,137.091888686551,0,192.86474928433,0,548.492477693807,0,0,-79.2205531027687,-80.5643642512354,0,0,259.136058287809,564.270576104372,365.380431212167,-408.414463590584,520.791801204721,-146.053599315456,0,0,0,0,386.019274083247,0,0,281.527301768185,0,101.645985389348,679.83157611437,373.276237269543,37.5364596271888,0,931.972677343073,455.660235924235,282.206251117036,293.974334015881,262.085719691641,-572.409539087833,436.282072984123,528.164174425958,239.3436319791,137.637456411644,351.799793520009,0,-288.091664602054,137.091888686551,0,192.86474928433,0,548.492477693807,0,0,-79.2223290159459,-80.5666550889392,0,0,259.136058287809,564.270576104372,365.380431212167,-408.415442467235,520.791801204721,-146.053599009711,0,0,0,0,386.01927407383,0,0,281.527301761082,0,101.645258187211,679.83157611437,373.276237269543,37.535743522259,0,931.972468123659,455.660235891869,282.204128271182,293.974334015881,262.085719665387,-572.409539087833,436.282072984123,528.164174425958,239.343247691254,137.637456373251,351.799793520009,0,-288.092955484562,137.091888686551,0,192.86474928433,0,548.492477693807,0,0,-79.2242033609434,-80.5690729034337,0,0,259.136058287809,564.270576104372,365.380431212167,-408.416475530786,520.791801204721,-146.05359908598],"Archive205_field2":[0,0,0,0,5962.44174085167,0,0,7905.70145219286,0,6205.48265485144,3108.72718352683,5845.93771226352,4616.63818616096,0,7266.76046136102,7465.2149242731,3530.72973499123,7408.12974620223,6955.91422629239,7231.7660906256,6469.70389335688,4513.69777032825,6071.40874774316,5127.73160312945,4412.88797661101,0,2820.16994715159,7157.95882494666,0,4528.86749810712,0,5067.70768873324,0,0,2330.80399647786,2964.90847765446,0,0,3335.74269878962,2529.09820602447,2275.91554015739,1044.34016051112,961.895724988416,2769.04303337889,0,0,0,0,5962.44174088087,0,0,7905.7014522138,0,6205.48366890763,3108.72718352683,5845.93771226352,4616.64005236076,0,7266.76162677144,7465.2149243029,3530.72937910801,7408.12974620223,6955.91422617631,7231.7660906256,6469.70389335688,4513.69777032825,6071.411109088,5127.73160326688,4412.88797661101,0,2820.17338394963,7157.95882494666,0,4528.86749810712,0,5067.70768873324,0,0,2330.80530365708,2964.90893112092,0,0,3335.74269878962,2529.09820602447,2275.91554015739,1044.34523970691,961.895724988416,2769.04303309869,0,0,0,0,5962.44174087263,0,0,7905.70145221502,0,6205.48443824802,3108.72718352683,5845.93771226352,4616.64206854248,0,7266.76482166717,7465.21492427617,3530.72852945956,7408.12974620223,6955.91422620383,7231.7660906256,6469.70389335688,4513.69777032825,6071.41367477962,5127.73160322529,4412.88797661101,0,2820.17700726094,7157.95882494666,0,4528.86749810712,0,5067.70768873324,0,0,2330.80665842805,2964.90948465971,0,0,3335.74269878962,2529.09820602447,2275.91554015739,1044.35060112369,961.895724988416,2769.04303315516],"Archive205_field3":[0,0,0,0,3.76546494268788,0,0,4.97824238892955,0,3.90012247767227,1.99328520977449,3.69156284170406,2.8991504874827,0,4.61813977256655,4.71277709205978,2.23312852218844,4.66681293062635,4.38106159223137,4.50178749530519,4.08690970845694,2.86534315639036,3.82463477500552,3.22612537640795,2.79102192499006,0,1.75149148224953,4.49999474623778,0,2.85382268972603,0,3.2142423919072,0,0,1.45753469758839,1.8553308303207,0,0,2.10933294867295,1.62233528126323,1.45099142141162,0.629661793286558,0.636237167109104,1.72832256287495,0,0,0,0,2.88161600575443,0,0,4.77743029974629,0,3.47219186406412,-0.196338738135834,3.29086240035608,2.10916395938098,0,4.51122382504813,4.35385643348551,2.3228906438312,4.22770250313145,3.99561742474476,4.28902886640045,3.61564405729952,1.92068835451356,3.18503013945202,2.4202856306986,1.87124409099337,0,0.829299132035333,3.87489419711079,0,2.66934809863902,0,2.37372304788049,0,0,0.515662024396077,1.56149885713018,0,0,1.31705808277271,0.0821202011668033,-3.00972220955827,-1.61363874086715,-2.23782743398221,-1.52900848403787,0,0,0,0,0.230068252676272,0,0,4.17499343023544,0,2.18840712087789,-6.76521063964799,2.08876139536801,-0.260783859166843,0,4.19046734520127,3.27709093703913,2.59217255116926,2.91037067202399,2.83929305002963,3.65075305241144,2.20184589715342,-0.913275910734414,1.26621097445238,0.00276223207523171,-0.888088774160348,0,-1.93726613355033,1.999592752172,0,2.11592425841505,0,-0.147834734116399,0,0,-2.30996033074141,0.67999788295749,0,0,-1.05976659516969,-4.5385251026792,-16.3918635297045,-8.34357766365226,-10.8600212228109,-11.3010001699334],"Archive205_field4":[0,0,0,0,5974.92565407395,0,0,7910.71411793693,0,6206.31631783661,3182.19415602926,5857.84401572892,4616.79169810891,0,7326.28161969008,7479.10972819257,3541.99081757587,7413.96176310408,6960.85130150388,7254.38582762536,6484.39875530148,4544.49481980172,6076.1257688202,5129.57950235514,4426.88956024906,0,2834.84703307673,7159.27293623648,0,4532.97317124551,0,5097.30473366924,0,0,2332.15035759671,2966.00342884276,0,0,3345.79367243688,2591.28185474778,2305.05889530372,1121.36039764223,1093.83174700261,2772.8927064847,0,0,0,0,5974.92516246631,0,0,7910.71399413583,0,6206.31706630763,3182.19353780214,5857.84377691572,4616.79313024046,0,7326.28268378803,7479.10951067727,3541.99036030407,7413.96149970412,6960.85106947038,7254.38569871562,6484.39847540282,4544.49432237042,6076.12774504808,5129.57905898056,4426.88907590795,0,2834.85015661995,7159.2725706164,0,4532.97305885959,0,5097.30427295583,0,0,2332.1513258959,2966.00377512091,0,0,3345.79326675681,2591.28134819765,2305.06040351885,1121.36646872206,1093.83385110567,2772.89258912116,0,0,0,0,5974.924472007,0,0,7910.71365325289,0,6206.31723818369,3182.20072301479,5857.84322493348,4616.79466611698,0,7326.28563562577,7479.10896133581,3541.98953105617,7413.96086554845,6960.85050179519,7254.38534942547,6484.39784120699,4544.49400825726,6076.12959076801,5129.57848795784,4426.88876950171,0,2834.85443299708,7159.27180123415,0,4532.97276674624,0,5097.3037223995,0,0,2332.1538305368,2966.00406104421,0,0,3345.7931753679,2591.2853214155,2305.11672126005,1121.40171697775,1093.88547207375,2772.9151963008],"Archive205_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,2732465.1375,1669839.80625,2319221.953125,2201152.471875,2702947.7671875,3153087.66445312,1905978.76875,3536813.47851562,4072277.02434082,3766708.38191106,4467048.82294566,5144221.38575526,5093854.7625,4984869.16245088,2466808.8046875,3204743.0625,2540602.23046875,5566132.6875,4572258.27409405,6628758.01875,4503507.35625,4267368.39375,3529434.1359375,6392619.05625,3795090.46875,3440882.025,4872973.52761088,5939681.20965504,5710759.45846776,6097445.353125,5654892.68035307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2051.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2051.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2051.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive2051_field1":[39.2244737404346,39.0629200635946,39.6595632099672,40.3562978249672,40.7630711267164,40.9119131594943,41.1351858669245,41.7460505780031,42.6733444673255,43.3648174585565,43.2359439161006,42.1364414682984,40.2753479056633,38.0015695160635,35.8069632665625,34.2746409415062,33.7147052490766,33.9994450272441,34.9992547920252,36.8041110444417,39.3233473765131,41.9593343204344,43.9320256864772,44.7836849583494,44.48615120898,43.2658363720384,41.3178479092801,38.6666638480498,35.2699750747165,31.5175470102791,28.593784186095,27.4733178751646,28.0978823202734,30.2990475927378,33.9937142391993,38.2369762051527,41.4872891041557,42.7225836338073,42.0353216011887,40.4403268432928,-39.7721128076345,-57.9288373758757,-37.1026267568352,12.2358304828041,15.1518078580715,-25.8938726903635,-7.60126690895203,9.91072452636299,-43.2659650426243,-71.9501306612469,17.1657694244765,-94.532338463682,19.453270925629,23.1464274575377,-31.3527345243647,-70.5303839324378,17.1471739353668,-64.3830516502519,-28.2919058057995,-14.3694029814345,-44.9062193445371,0.625554607797113,-83.0562122342338,-76.4535464916171,22.8026150396299,12.1802421160999,-29.9194209909759,-100.358589622103,17.3644522749594,-74.0599411413079,-168.920348248422,-214.076839583371,-212.976101121354,-308.016781462889,-185.290593380587,-296.019541704876,-273.29899229514,-191.922247484804,-326.95185286605,-356.140946135852,-187.876088730831,-145.150924251314,-193.883177191143,-212.581397066669,-309.285164726095,-388.767052893035,-178.412985392087,-320.382097527216,-371.011597721904,-338.878963394174,-164.1178041698],"Archive2051_field2":[4.92665272660561,4.80854959693902,4.64617321172657,4.50409237181265,4.40690995301902,4.35546900823346,4.32137337198327,4.27142494686893,4.20730478642478,4.19361731849625,4.29123386612549,4.4897084363185,4.75284808580523,5.06063347211939,5.37703099505346,5.61972348068878,5.73586347164647,5.76715349596061,5.7370517577882,5.60445733456613,5.36477636580299,5.10788998064624,4.93645213046249,4.89406357558337,4.98320478985951,5.17697411926536,5.4505647189255,5.78835266291576,6.19995528516234,6.67399492449931,7.02391026621667,7.098580097183,7.00852568812242,6.77627632422185,6.30393876909083,5.71434208232403,5.23546908869065,4.97885941833744,4.91555774156624,4.94197607607635,21.37374756576,25.1375999910604,21.3896613724001,11.6293860084024,10.7531043125402,19.4190748764196,15.3426452910437,12.4781095965011,22.6295666288227,27.1722160813259,11.2646280871113,31.600016001931,10.2395659508019,9.93650994247456,20.22365227155,26.7417340459801,11.4938534708731,25.4287676071085,19.2998166866453,16.2045473257785,23.0832521938375,13.8990017289765,29.5452896460746,28.7175249663749,10.1126216916987,11.5259740985713,19.0344680852077,33.1897429202592,11.6446113838124,27.7229950078359,44.6896978331914,52.0270491007546,51.7171790506685,67.6316458322426,47.568808164233,65.1648046308843,61.7428791283825,48.8450040900015,70.4467183962587,74.1211461628536,48.3050828738744,41.1126415259274,49.9515251725011,52.219544557052,67.6915318892589,78.9868499505848,46.6069568673422,69.8098054138771,76.7056310153449,72.1453662576697,43.5971917431993]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2052.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2052.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2052.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive2052_field1":[37.9491806822063,37.5764239081866,37.7999668772375,38.1703920284748,38.3860390577043,38.4650292493613,38.6438948429671,39.1304312884103,39.8581552174287,40.4525556000276,40.5021664748761,39.8488406781361,38.6115898796502,37.075578728922,35.6264283887311,34.6478787259921,34.3343507925461,34.6459324512438,35.5062823473765,36.9117688019949,38.7537911056099,40.6509245509098,42.100950524912,42.7821122141195,42.6665866043452,41.9016614102083,40.6098870367216,38.7916562894206,36.4506855360672,33.9128110616815,31.9044763143816,31.0459179909364,31.4671812520137,33.0610669342257,35.5830286278849,38.3671712326963,40.4398933850275,41.1106628641605,40.4156467127242,39.0612326799031,-4.92417900697648,-14.9769571524711,-2.59494061984056,25.0337686686489,26.0721552016757,4.1105733627228,13.5281743089914,24.3722346239025,-6.0797601956708,-23.9243594648025,28.7284904098392,-36.6259898843257,29.1019504745318,31.9118314713845,0.526719084817387,-23.3658011526417,29.1080135152985,-20.1329398609867,1.67177598351109,8.95852881630382,-6.67119998680465,18.4619728521643,-29.7989521579278,-25.4032756431488,31.8475236537066,24.8239994154908,-0.0810034201978471,-39.0905240012618,29.5625915398362,-24.9486427595693,-81.0291313879635,-108.760909965412,-108.277820012634,-166.285906759972,-90.6482718346017,-159.710085375503,-145.087862401583,-94.5208472197367,-178.578186321993,-198.200859704745,-91.7733497953543,-65.9044415326289,-94.6256109937177,-107.266336639775,-167.595293086864,-219.749203716391,-86.4293932802351,-174.005490243667,-207.576318673852,-186.675086398119,-78.4069068669651],"Archive2052_field2":[-3.06413435570866,-3.09669864471595,-3.18805521584339,-3.27022772142905,-3.31055489454762,-3.3163221448309,-3.32056474921864,-3.35665863545411,-3.4222126309952,-3.46582759699491,-3.43544062165771,-3.32598129364365,-3.16062031732406,-2.96302466904304,-2.76860714201142,-2.62912118452532,-2.57165015059556,-2.57810328850016,-2.63608430431976,-2.76605578235616,-2.97176746733868,-3.19737606509021,-3.3639028755573,-3.42723061322041,-3.38766739547686,-3.26990665478274,-3.09593665067448,-2.86774943527964,-2.57041690246075,-2.23200783545381,-1.97118583935155,-1.87885995950461,-1.93056260962269,-2.10894966404846,-2.43120472305434,-2.82469745908169,-3.14000068899341,-3.2758098296541,-3.24114590293761,-3.13099137780132,5.51243641144587,7.415050644786,5.33408557712287,0.0900145361777968,-0.319147383543157,4.20650254135154,2.1317195067055,0.430744092752784,5.96349303302632,8.78034291620926,-0.312327990682097,11.1698631296777,-0.674245009169381,-0.954098264283186,4.6965256481444,8.59495645526639,-0.252800673330155,7.90510815429959,4.27573907830388,2.74366770260079,6.21273923073634,1.31118160064383,10.0125870579301,9.38433582234706,-0.914222331412118,0.0774963594956451,4.36867070747353,11.9157983602419,-0.223782739751452,9.01029694852298,18.6411987626132,23.129132407677,23.0055975306571,32.3989370734304,20.3491531807141,31.1132669426575,28.9933187892015,21.0075106032122,34.135639687382,36.8129467944399,20.6579809417888,16.3712445410448,21.310824487308,23.0451554194996,32.3997389606462,39.6559203179166,19.6050393389249,33.5250359530029,38.1466093616782,35.1397772560341,18.1659901493457]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2053.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2053.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2053.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive2053_field1":[21.568298183239,21.1943318961182,21.1556781086256,21.262116054508,21.3586137339093,21.4369575724778,21.59800022686,21.924129797208,22.3662752150131,22.7387021307715,22.8308587094926,22.5368571446933,21.9037021176282,21.0999183925107,20.3507181214645,19.8569815646601,19.7237793648062,19.9547856913152,20.5116971252249,21.3476157354296,22.3646148439244,23.3745529511387,24.153275357927,24.5502915743887,24.5416884169567,24.1825294714786,23.5187836825576,22.5565005220842,21.337435242501,20.0515804238686,19.0284541972685,18.5694215976804,18.8033484469268,19.6816792788572,20.9963488387909,22.3672637367613,23.3321593206381,23.574025285742,23.1140690163722,22.2975570328547,5.4873351251713,1.42845409322002,6.91483401600726,17.807205439451,17.8033412537191,9.84456872483684,12.9801761237138,17.9914249580775,5.43860934047406,-2.72190515540121,19.8767766835365,-7.79061893357086,19.453034743416,21.0764841189081,8.04013428557194,-2.6768173894391,20.287761398351,-1.54317677127222,8.04416784689135,10.6688149620987,5.52737486845759,15.1746111934126,-4.82598959722441,-2.72013576998898,21.0789398605383,17.6470649553777,6.95269384334398,-8.21509488265631,20.7131591788096,-3.08393628417351,-27.3855810610063,-39.8699372896761,-39.6845132877817,-65.970597415399,-31.3818081128908,-63.4160097569697,-56.2962451940575,-33.0935025993337,-72.0736348612472,-81.8707964431419,-31.6400549805083,-20.1949968791615,-32.6512282125596,-38.8632210755463,-66.983916950026,-93.1020806032357,-29.6763457334672,-69.7813268027884,-86.5888272418125,-76.3819185599368,-26.2327917292401],"Archive2053_field2":[-2.81677640117776,-2.79778489378901,-2.82091650874403,-2.85098418736408,-2.86471568826843,-2.8646587225261,-2.87041879785813,-2.8989405212036,-2.94637207584626,-2.98647382368662,-2.9899647645891,-2.94495867987316,-2.85956200790121,-2.75418629959333,-2.65580555329982,-2.58996533440209,-2.56869874223859,-2.58889218702578,-2.64584055707788,-2.74046006108677,-2.86660836310766,-2.99830393107551,-3.09943190128816,-3.14612807674414,-3.13689825582691,-3.08376302443504,-2.99594741304771,-2.87168428798272,-2.70942845075976,-2.53217549620733,-2.39037472881741,-2.32733740263461,-2.35426257075901,-2.46399598055304,-2.63861878669198,-2.8331831429968,-2.98047278151105,-3.0301109077974,-2.98303392555374,-2.89015988856421,0.288018319862834,0.998516959566784,0.127700056638874,-1.86697700997296,-1.94705488513214,-0.351806650183733,-1.0427215673615,-1.80732064972398,0.372186785063615,1.63668528082365,-2.11651242372879,2.54922537615162,-2.15480809197367,-2.34584342616472,-0.101542023399152,1.58909382070845,-2.13864098677561,1.35590651534209,-0.200174006341354,-0.724295018025902,0.428387273914669,-1.39069876597261,2.06066924507554,1.74679546926464,-2.34403756207747,-1.84877976155095,-0.071240031015053,2.73422037130541,-2.16341422045796,1.70695876208261,5.6795357072464,7.64352383721844,7.619825866621,11.6976158976816,6.37166579297718,11.2292633273704,10.209473914756,6.64402517928001,12.5490091997528,13.9241671835761,6.4580607358507,4.61904132338024,6.64890873188009,7.54924354579392,11.7869920052372,15.3919968981488,6.06207272908197,12.2290617772828,14.5630450793762,13.106184505037,5.50184962906383]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive206.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive206.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive206.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive206_field1":[272.268414560129,272.329868324945,272.941668537605,272.885485118577,272.60537605187,272.299270142021,272.637951684869,272.903569288723,272.57680226676,272.776762875584,272.437810853533,272.7454943198,272.621170383462,272.46125142771,272.484403002619,272.314697853425,272.487518546898,272.573692119211,272.510598936953,272.730810983309,272.644061668943,272.790965104184,272.914612296144,272.75864451462,272.422485457336,272.283842326901,272.882464700416,267.290354855261,258.868775674918,257.337606010561,259.885495947052,265.458567111727,269.457540516795,262.418536207201,259.348746370751,263.672251201578,263.117698708066,266.891155008185,262.915332409364,264.544709434218,267.14148713526,265.168935048435,267.742547828795,267.030406034702,265.433722019286,265.112772426109,262.78696272051,263.545985328741,260.03967824507,258.026154835311,263.094267878055,265.427427661265,268.640899975464,257.89482366594,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive206_field2":[0.00461674974116689,-3.99533851153552e-07,-2.5504375704048e-16,9.30859616400538e-19,1.19341694714464e-10,0.016729466694392,-5.24536731880324e-08,-2.02476174703035e-16,1.21105239371097e-10,3.26192782625082e-12,-1.86609345976357e-06,-1.37377031828143e-14,1.15760403407235e-10,-1.59758553205462e-06,0.0022399929968572,0.0105458893077588,-9.79842898921497e-07,1.32990354869123e-10,-7.40160437918973e-07,-2.3166895942946e-15,-8.5156842060492e-15,1.63876857853467e-12,-2.03830712803709e-16,-7.65994016254422e-15,-1.44138785006643e-07,0.0085245818218096,8.64796640442298e-19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive207.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive207.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive207.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive207_field1":[271.857107122951,271.943895983726,272.837777066048,272.755803245635,272.338082557536,271.90362093706,272.391927910584,272.773564054908,272.302239738644,272.589991178261,272.097771914826,272.543526264533,272.363276092384,272.131045397738,272.168194494547,271.924518021919,272.166624026143,272.294067423179,272.202922703638,272.528360417973,272.397990515807,272.615794481459,272.790774877438,272.561603420138,272.078247791849,271.879909217893,272.742440020831,248.30851752966,248.247694122848,247.87008378978,248.219338333102,248.09051689305,248.342248528699,248.14431267418,247.724643767967,248.187205273021,248.260506580537,248.223611512214,248.189322393726,248.124879451497,248.230850795295,248.233430203107,248.310620832033,248.153598456852,248.163080846841,248.180767029363,248.164659533121,248.108490430786,248.044816282246,247.422718530249,248.089753663512,248.23492176798,248.31104593996,247.276931496381,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive207_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive207_field3":[272.260255095879,272.32095674759,272.937087828749,272.884695580935,272.594307718837,272.293904772459,272.634498528715,272.887247225629,272.572477523461,272.769370246176,272.428760804435,272.737094286039,272.612615492255,272.452033883994,272.47924269265,272.308312132947,272.475699301084,272.564921218787,272.501991016183,272.728799425574,272.636974147138,272.787751481805,272.896676187654,272.74774609043,272.415891340434,272.276471866758,272.862911979018,248.230550679623,248.136922311719,247.683239904439,248.309072001017,247.956436766481,248.312637688451,248.077538063727,247.402150876269,248.129687431882,248.35013524796,248.13885174818,248.190146730728,248.033847567226,248.163127098866,248.181311827085,248.257232079827,248.022794035706,248.084364167635,248.086659831899,248.174208156315,248.010197549633,247.960962933873,246.860264558433,248.015953102137,248.155763093173,248.243467778913,246.590370195431,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive207_field4":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive207_field5":[272.268414586029,272.32902099055,272.937460149791,272.885524370908,272.597477297507,272.299270638087,272.637432432964,272.887686960795,272.57609479003,272.771145719703,272.435066576557,272.739122766252,272.615621158285,272.458091495698,272.484403005764,272.314698101893,272.48109257161,272.56853371178,272.506794971904,272.73077185474,272.639940099246,272.789177298572,272.896858413585,272.74949886902,272.421661131687,272.283842459552,272.863209616979,248.251037815757,248.118444338904,247.53052423708,248.401232945493,247.890862853016,248.37786832249,248.072056546266,247.143103442522,248.136867256231,248.464373446812,248.135621238138,248.218931015758,248.009830649459,248.173625365459,248.20555399553,248.298204098161,247.970739459782,248.074495692845,248.066213859635,248.241922820063,247.97486559973,247.928632364026,246.408098301513,247.983088874641,248.160099584722,248.273174202592,246.0455415263,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive207_field6":[0.00733200957371536,-1.15852267545236e-06,1.17996754806286e-15,0.00303040473458044,6.58407936771151e-10,0.0961667717907667,2.40850675925824e-07,1.47867380240845e-11,5.43025725162635e-10,-1.5119733059877e-11,-8.54733930553807e-06,-1.89305382220089e-07,5.08551747384475e-10,-8.40614231299726e-06,-0.0102741214551775,0.047349164115004,-5.63262360757109e-06,6.62780055280202e-10,-2.21156345072716e-06,-9.46774534415144e-08,1.02378784847751e-11,-7.52469808897862e-12,4.82800528937677e-16,1.17875098274403e-11,-2.28562537124423e-07,0.0333200776347098,-9.46764822710519e-08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2071.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2071.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2071.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive2071_field1":[-23.7349865796418,-23.4452044880706,-23.375402628735,-23.527909514412,-23.6669823938052,-23.552729526484,-23.4129152625814,-23.4737422769846,-23.7336155602841,-23.9902360620978,-24.0351477162767,-24.1140253704586,-24.4709213706687,-25.2070467299692,-26.5253953793135,-27.9757135322078,-27.57700547414,-27.711976224451,-28.4330592471488,-28.1442983102703,-26.4846500769161,-25.5435531111445,-25.0250225098642,-24.8112504148676,-24.5424271794026,-24.4748219655519,-24.5665803579917,-24.2694670637367,-23.9507979267625,-23.8857142414409,-24.1461498746626,-24.8415222767195,-24.7789342876573,-23.9535883885825,-23.5219546750293,-23.3337919074331,-23.2648304062138,-23.3387198539339,-23.6468295127842,-23.9467381613026,-39.1813581851377,-44.6845891372907,-39.8972057113242,-32.3372230761731,-31.6162058333624,-40.4730348095794,-31.3842691198177,-31.0511610590217,-41.8170722788394,-41.2662951189871,-31.5641805845659,-46.0768210070253,-31.6615912862681,-31.7951622603979,-41.6733673855876,-38.8956427870665,-34.0613661402367,-44.0052994551715,-40.5869283151908,-31.6622419160667,-39.4278704237735,-33.0126640478906,-42.2733846164397,-42.9628356170234,-32.3451210764464,-33.0253428609401,-39.7626756027419,-46.7189234379717,-33.1393700791272,-46.6786550273199,-50.5625643590607,-51.6558755872837,-51.215135899077,-55.49458607155,-49.6205366377844,-55.1583949706669,-53.3281296532239,-53.0648790068616,-55.8813302134003,-57.2973703309471,-51.5421245462944,-51.1539183625842,-53.5755712697789,-51.2291612350751,-54.9608843065846,-59.3137322160375,-47.9953640016309,-59.2948421008987,-61.3879183766042,-60.415829196106,-45.8043340780839],"Archive2071_field2":[-96.2772666663726,-94.1119146215272,-93.6712060420969,-94.9621044426664,-96.0697522784405,-95.0457826581594,-93.7634204104493,-93.9952784348069,-95.7481779547657,-97.3504298779232,-97.0367105339352,-96.7778283342647,-98.4838553645385,-102.909898288026,-109.454401830097,-114.920917193841,-116.596763147962,-117.273379890503,-117.479739170745,-115.823125368582,-110.852154750879,-104.769446168224,-101.86774186827,-101.07547874437,-99.5910354083421,-99.3736818084199,-100.11195373518,-98.4752596907169,-96.2921701324734,-95.9157115446569,-98.0379719790286,-101.521168261109,-101.264573190181,-97.2295870478049,-94.3251225516568,-93.2179134675975,-92.8682269600916,-93.4779497326308,-95.664203571617,-97.5733401697254,-174.244739414332,-180.154188370084,-178.038340263326,-136.810196451762,-134.101711478241,-176.617216923368,-135.99833933216,-132.077541321358,-190.399672420041,-179.990314354326,-134.137170723567,-201.793427641802,-134.396243895441,-134.954197904028,-182.449817895279,-172.575402944826,-145.676640071066,-201.365433925182,-184.498274854538,-137.044635150734,-179.150343946847,-140.114667875066,-193.74983998321,-199.546503820914,-137.371194538001,-142.534470246095,-179.189063510314,-207.267794077257,-140.733596896023,-205.017364311091,-235.040672256229,-243.961370810045,-242.428339086679,-257.442830732498,-231.520298373653,-251.478270374082,-251.31925207941,-238.934840578067,-260.537966207677,-266.66146563308,-233.747324189762,-227.074003992247,-238.489304003371,-235.776362495323,-254.34014156581,-274.380858337032,-218.467853576787,-267.569312014278,-273.499446112166,-270.592867623506,-213.278455707056]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2072.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2072.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2072.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive2072_field1":[-93.7537739880923,-91.394480576798,-90.8709360861043,-92.2409676022973,-93.3698874040961,-92.3061410086051,-90.9148680380501,-91.1443079361168,-92.9924746815941,-94.6327151522957,-94.3306390257165,-94.0552037512366,-95.9256269224107,-100.76425337753,-107.981778685826,-114.402496213126,-115.830557211979,-116.581741810975,-117.271191242432,-115.391809090865,-109.339554683127,-102.846326166603,-99.5890878720956,-98.6065313042045,-97.1160839141838,-96.8890347292945,-97.6249861603912,-95.9684878283046,-93.6410938358639,-93.2418875554786,-95.5791329556283,-99.3649184567597,-99.1034138737273,-94.7593440678657,-91.5910466865288,-90.3107878673704,-89.9209908511056,-90.6440553330556,-93.0251198458964,-95.0800416595399,-178.82493050152,-188.333554245512,-182.636986511031,-138.266685337035,-134.849710492191,-181.375043604104,-136.658764422115,-132.525321076099,-195.613042770032,-185.447502923003,-134.884185244966,-210.310835322508,-135.158740760055,-135.685650174394,-187.717028536338,-176.692161080644,-147.504130776666,-208.003636727838,-189.551787384651,-137.749556782518,-183.450789356582,-141.615479034574,-199.56440487624,-205.746903525478,-138.271546852109,-143.840061208922,-183.721027533346,-215.665043049945,-142.030279962185,-212.90205705205,-244.589763214303,-253.975533516043,-252.338747570413,-269.648951943791,-240.915297778488,-263.986859348397,-262.313390978208,-250.17618650246,-272.331754458988,-279.391457866651,-244.318952802841,-237.360599884817,-249.823958433348,-245.471226382588,-265.616850432393,-287.678064783114,-226.69719699514,-281.377179140907,-288.606834567262,-284.992056518485,-220.721494197174],"Archive2072_field2":[-48.8196423297076,-46.8737486846848,-46.4082991365066,-47.526779937417,-48.3974585783175,-47.5366368833201,-46.3495467122961,-46.4637365753406,-47.8732055387343,-49.0444340846862,-48.686852505984,-48.2816241690822,-49.626690400916,-53.4027869447111,-58.7150178553788,-63.2292397341728,-65.12911716509,-65.6971213944193,-65.5041197999756,-63.9756150098465,-60.0634116707758,-55.0357215176949,-52.4524463651859,-51.6954031494054,-50.7139228145412,-50.6142230644139,-51.1708722969788,-50.0562680229777,-48.2376434377747,-47.946822584907,-49.9380567295985,-52.6673415990488,-52.5182452278681,-49.4668935395014,-46.91412436538,-45.8353245756841,-45.5360217883561,-46.2088927163195,-48.1602489305592,-49.7664115332605,-110.7802596999,-113.324892556496,-113.300050290811,-80.5654568904029,-77.9144716987795,-111.162037278526,-80.0064879028516,-76.380735181099,-123.112416301961,-114.33871381886,-78.0431501414654,-132.684117960012,-78.139402967444,-78.3868393723106,-115.683586887716,-108.843835154858,-86.878336292013,-132.618032900055,-119.217760508788,-80.6413589609927,-114.631335138938,-82.6769558156269,-126.680838180918,-131.787214701825,-80.0815375270937,-84.6995108402597,-114.557420834758,-136.708107632179,-82.7086178658705,-133.727054018034,-159.316937392713,-166.907244868004,-166.010152120922,-177.342145531851,-157.23468187565,-172.611274399462,-172.939638526448,-161.716689112686,-178.96084150563,-184.081643318661,-158.11292677615,-151.749131754078,-160.573275658866,-159.136181214156,-173.617649533589,-189.105059195453,-145.212517204319,-183.467475275085,-187.876733234208,-185.503139073725,-142.527799426733]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2073.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2073.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2073.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive2073_field1":[-111.732434200933,-99.7515973840204,-94.5017744769846,-98.6691447128131,-102.606832330583,-98.3649579254943,-91.766865427317,-91.1600120493194,-96.5323606937902,-100.06492072852,-96.5590819646724,-94.1481523675105,-104.178629449866,-131.076680693998,-168.567061770812,-202.206099032743,-219.423668705495,-225.230647003648,-222.24466200851,-206.950589305572,-176.373322796632,-141.617526693081,-120.161420121476,-112.492782240155,-109.854342219222,-112.765765345367,-117.116395482478,-112.340805236893,-103.234516012047,-102.939452758075,-116.193620023748,-132.496143053047,-132.21185195561,-114.323483427256,-95.7379432652717,-84.8929794088804,-82.2323344304345,-89.1159108308946,-104.108453230237,-115.683275668456,-503.112470356663,-509.931889586117,-516.050618707473,-309.72475120375,-289.417246895844,-490.416890629745,-302.310238427039,-276.2023542206,-572.612663303451,-518.745528034296,-290.38799448794,-643.5840019813,-286.246973735028,-283.998125061277,-517.509333432051,-485.885448113737,-337.625297743304,-652.762210546764,-560.265494888324,-308.114492970272,-516.386175745837,-315.190198521432,-605.455458231591,-630.643582207122,-290.066657140279,-327.445258946235,-528.380365291497,-660.02038747596,-309.35225856307,-641.12162222527,-819.985359999206,-857.537706176286,-864.163195332084,-931.97271766062,-809.474506588183,-902.341258911145,-898.220047139223,-823.967681747273,-926.715206209536,-953.32018191705,-809.543317364697,-757.053568056092,-809.52797247543,-806.944183535927,-901.109006932622,-973.762940171552,-720.456763932593,-956.264468757046,-973.416349572614,-960.756393056686,-708.342606840018],"Archive2073_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive208.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive208.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive208.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive208_field1":[0,0,0,0,385.99059131333,0,0,282.091237885843,0,100.812802283927,680.058684338847,373.843329451243,37.2913341522595,0,934.228442915374,455.685956357883,282.739056710937,294.34803523959,261.760915020439,-574.298337387652,436.534670167036,528.482164628681,238.972331832557,137.479614372578,351.852564185544,0,-288.299265085186,137.460129446809,0,193.034813090109,0,548.695629615635,0,0,-79.3836821929082,-80.8703382118504,0,0,259.473468361196,564.492465579917,365.488402753381,-408.557500507936,520.951736451643,-146.15391248504],"Archive208_field2":[0,0,0,0,5965.3427606593,0,0,7916.94414451567,0,6208.22142682195,3109.76404218389,5849.21762099958,4618.54358869214,0,7268.97621225413,7471.15625159065,3531.66365186689,7414.77993432182,6960.53513478037,7235.53301657509,6473.69250200482,4515.5462302479,6074.37059116711,5129.87028135796,4414.54691631822,0,2821.14762921867,7163.168065596,0,4530.66685591531,0,5069.88644814175,0,0,2331.67427348505,2966.15734905871,0,0,3337.04243932143,2529.97221952273,2276.6240399569,1044.65819816934,962.171930332715,2769.926621101],"Archive208_field3":[0,0,0,0,5977.81757740505,0,0,7921.9681931874,0,6209.03990207468,3183.25497128404,5861.152242758,4618.69413625238,0,7328.76510456355,7485.04010854343,3542.96338170571,7420.62007114438,6965.455343274,7258.28882135965,6488.39403310028,4546.36680832472,6079.06948917491,5131.71216534283,4428.54656781417,0,2835.84033614285,7164.4868639116,0,4534.77723800786,0,5099.49168947363,0,0,2333.02522203052,2967.25958267514,0,0,3347.11498497074,2592.18270483646,2305.77509567973,1121.70851036431,1094.15059988658,2773.77981325459],"Archive208_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive208_field5":[-892.185825245241,-829.85547334163,-208.818570119527,-270.606865135644,-550.853976304001,-847.038636873514,-518.231771495308,-248.763150808452,-580.409039189895,-379.707525762408,-717.602239518941,-412.5195669936,-534.360022154227,-362.960923315578,-231.816114524584,-307.559847199698,-291.389968759731,-360.821060042914,-421.005382212086,-264.225618291483,-470.968132127468,-539.540280389487,-500.308146605918,-593.062264429336,-679.718401637159,-674.30245622929,-658.774775453043,-325.063909912204,-423.9309397137,-337.06819775644,-734.170344242268,-606.11531966267,-867.110469610324,-596.544502921468,-564.685313032665,-468.006968152709,-835.975627895578,-501.531829329152,-455.862243716868,-643.401587707855,-778.19436497931,-752.833137444514,-803.8938614932,-742.758183361773],"Archive208_field6":[103.131622111227,95.9265868857282,24.138242565616,31.280619088744,63.6755959522619,97.9128631500463,59.9046540659789,28.7556095809116,67.0919936250042,43.892036783877,82.9507496063334,47.6849226841021,61.76898838424,41.9562245053994,26.7966282874655,35.5521742673588,33.6830280136657,41.7088684455277,48.6658348031419,30.5429831394735,54.4412453713322,62.3677968607259,57.8327846676416,68.5546347104794,78.571592773761,77.9455401966245,76.1506283511696,37.575544657245,49.0040126604713,38.9631722597411,84.8659285601749,70.0634938759466,100.233053193778,68.9571617335612,65.2744200452154,54.0989516076196,96.6340420468171,57.9742354513523,52.6950903315028,74.3735750240269,89.9548557118941,87.0232416239024,92.925571775659,85.8586340636292],"Archive208_field7":[995.317447356469,925.782060227358,232.956812685143,301.887484224388,614.529572256263,944.95150002356,578.136425561287,277.518760389364,647.501032814899,423.599562546285,800.552989125274,460.204489677702,596.129010538467,404.917147820977,258.612742812049,343.112021467057,325.072996773396,402.529928488442,469.671217015228,294.768601430956,525.4093774988,601.908077250213,558.140931273559,661.616899139815,758.28999441092,752.247996425914,734.925403804213,362.639454569449,472.934952374171,376.031370016181,819.036272802443,676.178813538616,967.343522804102,665.501664655029,629.959733077881,522.105919760329,932.609669942396,559.506064780504,508.557334048371,717.775162731882,868.149220691204,839.856379068416,896.819433268859,828.616817425402],"Archive208_field8":[0],"Archive208_field9":[916.999999999999],"Archive208_field10":[0,0,0,0,377.779651291413,0,0,277.809221923014,0,94.4413994362022,678.062604835304,367.9778812417,33.1980603837872,0,916.931127449261,446.541918537005,275.937532842891,288.165004941825,255.003828915718,-564.103549368729,428.508002894419,519.495091571113,232.321031731443,130.759756147124,344.690137189518,0,-294.654201158413,134.663800880749,0,195.958176209929,0,539.839389682127,0,0,-83.1094577604024,-83.3509723244262,0,0,253.553565358529,559.648561767745,361.692134377034,-410.13364101894,518.378476104047,-154.946562066282],"Archive208_field11":[0,0,0,0,5867.37615198332,0,0,7824.13826367986,0,6124.74047290075,3045.08843524137,5772.07203722086,4544.30601901318,0,7192.46743048216,7375.89496332038,3484.83413641871,7318.84244894501,6863.58095057809,7163.674357243,6378.02830726276,4445.59566209809,5980.98495431276,5038.73490724152,4324.11194678795,0,2764.09688810528,7075.9010022624,0,4472.67151801444,0,4981.78191472681,0,0,2290.65853258142,2921.18041761755,0,0,3293.27648211512,2481.83902378678,2217.56853901811,1023.23999515487,943.360375015804,2700.49964853805],"Archive208_field12":[0,0,0,0,5879.52552284557,0,0,7829.06875260173,0,6125.46855663434,3119.66864819275,5783.78970260418,4544.42728026895,0,7250.67930824637,7389.39958284471,3495.74176397235,7324.51321676413,6868.31641800959,7185.85020098744,6392.40676089918,4475.84583526196,5985.49530828488,5040.43128901504,4337.82842203677,0,2779.75767021041,7077.18230181233,0,4476.96215249594,0,5010.94578024464,0,0,2292.16572150822,2922.36931561699,0,0,3303.02276682414,2544.15633416652,2246.87147503215,1102.37456936378,1076.40375400586,2704.941180294],"Archive208_field13":[8953646.8334059,8328122.48393146,2095625.90684863,2715710.37396122,5528166.69021572,8500566.35536694,5200782.31297146,2496494.93914782,5824770.36596529,3810604.23676699,7201590.56298347,4139893.74210799,5362639.46913162,3642541.53085351,2326420.75340635,3086556.8293527,2924281.91218422,3621066.65479847,4225054.24388908,2651670.54169455,4726461.91582238,5414626.62408515,5020907.44532275,5951753.45277498,6821402.38302192,6767049.95880835,6611219.89977982,3262221.12623222,4254414.056519,3382691.71745046,7367861.93178803,6082749.08546628,8701999.84213546,5986699.90985378,5666972.86803001,4696744.76980237,8389542.0905777,5033187.87237051,4574864.80891231,6456940.27564858,7809670.71501732,7555154.81913229,8067581.35321701,7454046.30769091],"Archive208_field14":[-888.000499570775,-826.08051874186,-211.19986401603,-272.339143605979,-550.374093579246,-829.94636114804,-516.575322508492,-257.947997297995,-578.129288148505,-380.594406482287,-711.472062726914,-414.405796767587,-533.088797714247,-362.759216380475,-240.396131466193,-307.829249068412,-290.794332807181,-362.592180511324,-422.687606980908,-272.700264378911,-471.952583015713,-538.036130473696,-500.196753425999,-592.34868214712,-675.809812157334,-671.820131876009,-655.226867294372,-323.835489730836,-421.931695022692,-336.915445975682,-728.9321724957,-604.586970895042,-854.045312951637,-594.745369432412,-562.383601791857,-467.074099965287,-823.162683154217,-498.927443530916,-454.560585353151,-639.378775418758,-767.596550156977,-747.037602797915,-797.785150796069,-734.403218518702],"Archive208_field15":[102.64782219684,95.4902235404986,24.4135066365313,31.4808606567435,63.6201242305344,95.9370930007549,59.7131779562706,29.8173257509132,66.8284673323245,43.9945551658914,82.2421359313554,47.9029601497974,61.6220420476666,41.932908327514,27.7884295915119,35.5833155956943,33.614175875203,41.9135999282447,48.8602904470843,31.5226041702995,54.5550423115219,62.1939256599911,57.8199082477164,68.4721486451414,78.1197819941956,77.6585975778157,75.7405102870267,37.4335462502384,48.7729113112381,38.9455150200897,84.26042561019,69.886825425163,98.7227951721631,68.74919210451,65.0083552780119,53.9911173351368,95.1529382926358,57.6731832216762,52.5446260059259,73.9085607354289,88.7298084150923,86.3533106832923,92.2194394595239,84.8928475059787],"Archive208_field16":[990.648321767615,921.570742282359,235.613370652562,303.820004262722,613.99421780978,925.883454148795,576.288500464762,287.765323048908,644.95775548083,424.588961648178,793.714198658269,462.308756917384,594.710839761914,404.692124707989,268.184561057705,343.412564664106,324.408508682384,404.505780439569,471.547897427992,304.222868549211,526.507625327235,600.230056133687,558.016661673715,660.820830792261,753.929594151529,749.478729453825,730.967377581399,361.269035981075,470.70460633393,375.860960995771,813.19259810589,674.473796320205,952.7681081238,663.494561536922,627.391957069869,521.065217300424,918.315621446853,556.600626752592,507.105211359077,713.287336154186,856.326358572069,833.390913481208,890.004590255593,819.296066024681],"Archive208_field17":[0],"Archive208_field18":[916.999999999999],"Archive208_field19":[0,0,0,0,367.324251842304,0,0,272.84602495937,0,87.8257132691787,671.703599244341,360.222015903478,27.6424755906867,0,901.924528684124,437.673600477269,267.869836265011,280.632708301663,247.347900020117,-557.048479679575,418.783454126941,508.825112526562,223.647495918007,121.739587850214,335.431202279781,0,-300.439959643647,129.896430702388,0,196.532146043879,0,528.80407646376,0,0,-87.1242511634666,-86.1680846815185,0,0,246.788728223003,551.528465010749,354.398900703898,-408.783171537125,512.874117049489,-162.231855279223],"Archive208_field20":[0,0,0,0,5736.55036022574,0,0,7707.38461366242,0,6008.55120824489,2955.88688380669,5665.9104313724,4439.8791354568,0,7088.04090036664,7253.76621038296,3420.816312587,7195.51120014811,6737.29834211097,7066.05230517505,6252.28122780733,4347.03372030937,5855.21202005233,4914.00077437188,4198.22252440675,0,2685.4636208647,6961.51842484825,0,4393.27340595284,0,4860.83111390362,0,0,2232.56922585481,2856.72942216535,0,0,3229.08862164509,2415.17124028761,2134.35179468231,993.800203293051,917.860619301058,2602.74264510095],"Archive208_field21":[0,0,0,0,5748.29863015115,0,0,7712.21255777201,0,6009.19303883744,3031.24611259102,5677.34981457688,4439.96518498978,0,7145.19360554439,7266.95826432547,3431.28816826013,7200.98161006023,6741.83728179905,7087.97560578357,6266.2907794837,4376.71168351817,5859.4817178822,4915.50853297778,4211.60141227764,0,2702.21742802803,6962.73020173917,0,4397.66712063124,0,4889.51049382023,0,0,2234.2685566813,2858.02867905184,0,0,3238.50551996067,2477.34449918244,2163.57485756415,1074.58946830744,1051.43139405432,2607.79379006363],"Archive208_field22":[8911644.45350746,8290238.43630138,2119523.6913152,2733094.87974647,5523350.76474669,8329034.6003281,5184158.8038259,2588670.66012367,5801891.62802178,3819504.64352583,7140070.3768641,4158823.2462147,5349881.93100503,3640517.27468439,2412526.62882607,3089260.44682843,2918304.33014973,3638840.96450486,4241936.42924581,2736718.95420894,4736341.50068998,5399531.53206574,5019789.54458456,5944592.2050161,6782177.2251805,6742138.27005883,6575614.40622542,3249893.15580747,4234350.37652058,3381158.75709693,7315293.57826302,6067411.14272341,8570882.76401684,5968644.471837,5643873.74565042,4687382.84983463,8260956.11794296,5007051.22012217,4561801.84718765,6416568.81995575,7703314.96665186,7496992.97776684,8006276.59288356,7370198.97186284],"Archive208_field23":[-883.836237590199,-822.324834378295,-213.343620697446,-274.048636947636,-549.787068693575,-813.87597568652,-514.929978598016,-265.565187054495,-575.820870839852,-381.368402670231,-705.469910397541,-415.861222877643,-531.765367544935,-362.450686743831,-247.816563924452,-308.650745358899,-290.536248230766,-364.353792229177,-424.033944906298,-279.315897674892,-472.808379630427,-536.500624591661,-500.050090113705,-591.348568978018,-671.740222242778,-669.333651205855,-651.653338111377,-323.564545201032,-419.849633157281,-336.95928851846,-723.828770579151,-602.882801949927,-841.596572796253,-592.941448716272,-560.061341766082,-466.103824071606,-810.983810905401,-496.408596386448,-453.237138166377,-635.370204777412,-757.424697401512,-741.387134508713,-791.823937563939,-726.294261613283],"Archive208_field24":[102.166457126021,95.0560877252992,24.6613127523765,31.6784683930746,63.5522674825725,94.079447571179,59.5229855304141,30.6978296922318,66.5616273817059,44.0840247361444,81.5483211582763,48.0711991548856,61.4690610248234,41.8972440510862,28.6461895048985,35.6782759084441,33.5843427616806,42.1172322533182,49.0159194766277,32.2873338642733,54.6539675472467,62.0164298873676,57.8029548004938,68.3565412341003,77.649360477355,77.3711745123453,75.32743057776,37.4022265990288,48.5322367662723,38.9505829694185,83.6705012883207,69.6898331588792,97.2837914028384,68.5406690991547,64.7399151877914,53.878958943937,93.7451297229799,57.3820187753147,52.3916430159608,73.4451927005514,87.553999917732,85.7001485909745,91.5303570139341,83.955498070892],"Archive208_field25":[986.00269471622,917.380922103595,238.004933449822,305.72710534071,613.339336176148,907.955423257699,574.45296412843,296.263016746727,642.382498221558,425.452427406375,787.018231555818,463.932422032528,593.234428569758,404.347930794917,276.46275342935,344.329021267343,324.120590992446,406.471024482496,473.049864382926,311.603231539166,527.462347177673,598.517054479029,557.853044914199,659.705110212119,749.389582720133,746.704825718201,726.980768689136,360.966771800061,468.381869923553,375.909871487878,807.499271867472,672.572635108806,938.880364199091,661.482117815427,624.801256953874,519.982783015543,904.728940628381,553.790615161763,505.628781182338,708.815397477963,844.978697319244,827.087283099687,883.354294577873,810.249759684174],"Archive208_field26":[0],"Archive208_field27":[916.999999999999]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2081.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2081.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2081.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive2081_field1":[-15.8040015975011,-15.6209011148586,-15.5744935281067,-15.6693208475028,-15.7551719840589,-15.6859856152429,-15.6004107963986,-15.6401922666173,-15.8062054641916,-15.9706606766036,-16.007710655587,-16.0674545120511,-16.3045093190727,-16.7854253140101,-17.6254991558197,-18.5317462305656,-18.3209992973027,-18.4104543481584,-18.8352847840044,-18.6426219157904,-17.615476932064,-17.0101349457427,-16.666569295351,-16.5175671883573,-16.3450116457367,-16.2990004556406,-16.3462251463825,-16.159965663326,-15.9589245228735,-15.9148171708409,-16.0786248577134,-16.5064179306562,-16.465092191234,-15.9496594084999,-15.6725927016654,-15.5484331719531,-15.5021853689208,-15.5516741351544,-15.748180057519,-15.9325968959449,-25.8835640303809,-28.9700598557999,-26.304301111689,-21.3813149886596,-20.9268943620639,-26.6549033359542,-20.8415854475952,-20.6180709451484,-27.6075958845878,-27.1830494316228,-20.92907209051,-30.2091683557146,-20.9576407220788,-21.0451508910942,-27.459717571901,-25.665678225284,-22.5232241706175,-28.9815912325797,-26.7604701106275,-21.0253947675237,-26.0966466407664,-21.826577925621,-27.9469499353938,-28.4357242889652,-21.4122056630697,-21.9310609362589,-26.2844813985641,-30.722001263582,-21.9109908171186,-30.6643189827219,-33.3237488908386,-34.1207676413116,-33.8457589492636,-36.5653091513332,-32.7038042613387,-36.2661818298526,-35.2682038988222,-34.8715039492589,-36.8798434184317,-37.7783550918526,-33.826183952558,-33.5323958834191,-35.1019480820919,-33.749450818335,-36.2544933345158,-39.0173896766877,-31.6093328096567,-38.8729922606149,-40.2394271435153,-39.6149753989369,-30.2534181041841],"Archive2081_field2":[-64.090471558532,-62.6631212883335,-62.3706555692135,-63.2126350036952,-63.9396265698799,-63.2691559186453,-62.4333355840335,-62.5873137008029,-63.7361933239456,-64.7921231040754,-64.5947271875754,-64.442015076478,-65.5827564803964,-68.5198923625214,-72.8967022906297,-76.5399394305547,-77.6004827204206,-78.0481389929057,-78.2309422773036,-77.1331206562118,-73.7723183511436,-69.7335901270681,-67.8024272522916,-67.2709312341568,-66.2893091008748,-66.1552180710495,-66.6545636424627,-65.5578589366846,-64.1184467942008,-63.8717379162076,-65.271499562701,-67.6134336119589,-67.4422877250359,-64.7324851653345,-62.8126380843142,-62.0812832333778,-61.8467953128361,-62.2464488797101,-63.6931747062625,-64.9611916326079,-115.925939585866,-120.153629440899,-118.548708878353,-91.0997784683775,-89.3130877714337,-117.66640396044,-90.5144058463455,-87.9401145591969,-126.717293985088,-119.882824932792,-89.3239764113387,-134.313503743047,-89.5124444452596,-89.8761220831535,-121.528361417145,-114.940911869063,-97.0131971078829,-134.060579036839,-122.791367705318,-91.2176560812837,-119.17824450144,-93.3133350350481,-128.878171575345,-132.612189757633,-91.4830812966441,-94.8889724683474,-119.298533604604,-137.949474298013,-93.7438394085844,-136.647025267409,-156.450862883272,-162.216802343148,-161.16386315278,-171.203111700743,-153.970875240765,-167.272115244257,-167.068937340713,-159.059766161449,-173.318045060891,-177.319504832421,-155.64844300431,-151.27779879159,-158.932726813332,-157.0260837262,-169.313236050089,-182.544469864467,-145.533902651491,-178.21229909751,-182.083103195699,-180.211624643263,-141.880605626777]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2082.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2082.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2082.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive2082_field1":[-62.401328993722,-60.8400144606141,-60.4930647598978,-61.3963200450096,-62.1427743245695,-61.4406788794375,-60.524677255902,-60.6761407546258,-61.8963205745921,-62.9830219447486,-62.7883705935667,-62.6171022279826,-63.8656947726246,-67.0803912405649,-71.8686633180976,-76.0903323336753,-77.0633491494949,-77.5588879066286,-77.9845393223122,-76.7379675413543,-72.7569333826422,-68.4430908814593,-66.2801974293165,-65.6265439055614,-64.6373816155898,-64.4906444572713,-64.9826879907861,-63.8800831821246,-62.3410701926341,-62.0773392210339,-63.6251199591237,-66.1374445252577,-65.9633956251959,-63.0778628815026,-60.979249669163,-60.1337393440399,-59.8737634401686,-60.3505535757942,-61.9257120394179,-63.2849204449642,-118.841216513099,-124.785394925817,-121.407908537721,-91.9208888046807,-89.6856114371708,-120.559083080848,-90.9166112796733,-88.1702854837241,-130.044604689331,-123.256810853675,-89.7231382110453,-139.57473789028,-89.8963913697704,-90.2407645766212,-124.776439133281,-117.493837653074,-98.080690819155,-138.263181346746,-125.999723078238,-91.645638056087,-121.97281396974,-94.1679404387302,-132.644337641963,-136.736541518739,-91.9608118165216,-95.6966522577735,-122.173101215076,-143.220208757633,-94.4538008466888,-141.487852671957,-162.574611632255,-168.787033325163,-167.685853901472,-179.096242773563,-160.054348011435,-175.277405036955,-174.306859458667,-166.160976795837,-180.972041944882,-185.590274203645,-162.287916443754,-157.648995393633,-165.948449911546,-163.18198642381,-176.544313165439,-191.080693381612,-150.713215632031,-186.861262908788,-191.569687220366,-189.234575257086,-146.715988306423],"Archive2082_field2":[-32.4749297451159,-31.1686834914621,-30.8607905344894,-31.6147160050455,-32.2039621970613,-31.6221675360945,-30.8234755017703,-30.8987950270766,-31.8446928474427,-32.6332332958235,-32.3865495501146,-32.1107173844344,-33.0087494497816,-35.5331320068365,-39.0906180150714,-42.1049513894251,-43.3537370265432,-43.726688130928,-43.6039601644804,-42.5911001725486,-39.971330766716,-36.5988924553598,-34.8848719903822,-34.3948205461663,-33.7322558423048,-33.6670685456728,-34.0571070572501,-33.302522249851,-32.0810495072911,-31.8890307815728,-33.2262050766568,-35.0716712897798,-34.9720877971461,-32.9119410564972,-31.2035176068066,-30.4901433156221,-30.2918918752788,-30.7364245779019,-32.0391937706271,-33.1204539086333,-73.7862144474293,-75.5955943864246,-75.5336389851408,-53.6516386399249,-51.8950744481246,-74.1066597612373,-53.2604970792086,-50.8341770471725,-82.0604828630656,-76.2206292583153,-51.9534615093194,-88.3984753541414,-52.0504479315771,-52.2122768411325,-77.1142437797444,-72.5725392197052,-57.871233856653,-88.4461179955054,-79.4972226885188,-53.6852790834141,-76.3630195469205,-55.0826867582141,-84.3791864558541,-87.7764079613174,-53.3384715649783,-56.37353969074,-76.3392309664128,-91.0756811841987,-55.1056882994796,-89.1812646933248,-106.203495278381,-111.201851999501,-110.57741811902,-118.122252207595,-104.779949154675,-114.991236703685,-115.146004613065,-107.771656236223,-119.213532612966,-122.614207013722,-105.435024528508,-101.197785475075,-107.108504626724,-106.089049860396,-115.662156390511,-126.020976723063,-96.8260801318926,-122.308185976625,-125.173400091909,-123.627713117612,-94.9753960405694]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2083.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2083.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2083.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive2083_field1":[-73.9700781893955,-65.8845506999174,-62.3885164817305,-65.276376497719,-67.9822881938104,-65.0927589420699,-60.6000479408772,-60.1944693911515,-63.86989000684,-66.2904681114124,-63.8799466736281,-62.1574245185684,-68.7998345911602,-86.7862101507509,-111.878705975921,-134.357280555553,-145.902177428001,-149.757315038053,-147.696107825906,-137.491708322203,-117.098643524121,-93.8155603466306,-79.5351670744079,-74.4990578929538,-72.724080958789,-74.6690334883897,-77.6403592013504,-74.4211227581138,-68.262603345344,-68.051960634901,-76.9868304455841,-87.9787804841917,-87.787236038747,-75.7338812896618,-63.2348968380101,-55.9702345080009,-54.1859527331271,-58.7872388971773,-68.8531434174045,-76.6549471182353,-335.15601458814,-339.366959326211,-343.994574703459,-206.062164751114,-192.470146455395,-326.68277950253,-201.064761328118,-183.463611571652,-381.674374666735,-345.578816622976,-192.993535680512,-428.608058802676,-190.383047418399,-188.918548219876,-344.731610871847,-323.804549158133,-224.648353446459,-435.414835920434,-373.705433284808,-204.944469447424,-344.110618506975,-209.777061442155,-403.526578053859,-420.492798879943,-192.945691252522,-217.657031612902,-352.036298670875,-439.663561538941,-205.856867099995,-427.176542915034,-546.662068646222,-571.625763226692,-576.043839737549,-621.148208090232,-539.936524616031,-601.389603111121,-598.395446646648,-549.115271211946,-617.428934440765,-635.188657688184,-539.736686339976,-504.561046688263,-539.642151352154,-537.776214386619,-600.186810460409,-648.800261059878,-480.116733585634,-637.082220703424,-648.185916423266,-639.862944088392,-472.222895994808],"Archive2083_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive209.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive209.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive209.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive209_field1":[0,0,0,0,488.218884705428,0,0,230.698034799258,0,94.375776197006,1183.63451293761,401.618377041692,166.124244738409,78.6002793722833,0,0,660.556140856212,571.269368643239,-194.554057157653,0,516.009649129047,0,704.881736514255,295.000546229534,0,0,-346.428252043948,0,0,0,0,488.218884705428,0,0,230.698034799258,0,94.375776197006,1183.63451293761,401.618377041692,166.124244738409,78.6002793722833,0,0,660.556140856212,571.269368643239,-194.554057157653,0,516.009649129047,0,704.881736514255,295.000546229534,0,0,-346.428252043948,0,0,0,0,488.218884705428,0,0,230.698034799258,0,94.375776197006,1183.63451293761,401.618377041692,166.124244738409,78.6002793722833,0,0,660.556140856212,571.269368643239,-194.554057157653,0,516.009649129047,0,704.881736514255,295.000546229534,0,0,-346.428252043948],"Archive209_field2":[0,0,0,0,6735.18857787349,0,0,8962.82452225207,0,7011.44082850323,3327.0906006593,6867.39485776359,5335.27293843926,3985.70828519688,0,0,5032.45951801094,5422.16615455523,2818.65517567664,0,3712.69150241612,0,7754.56949531848,7826.5010632132,0,0,7693.72514275789,0,0,0,0,6735.18857787349,0,0,8962.82452225207,0,7011.44082850323,3327.0906006593,6867.39485776359,5335.27293843926,3985.70828519688,0,0,5032.45951801094,5422.16615455523,2818.65517567664,0,3712.69150241611,0,7754.56949531848,7826.5010632132,0,0,7693.72514275789,0,0,0,0,6735.18857787349,0,0,8962.82452225207,0,7011.44082850323,3327.0906006593,6867.39485776359,5335.27293843926,3985.70828519688,0,0,5032.45951801094,5422.16615455523,2818.65517567664,0,3712.69150241612,0,7754.56949531848,7826.5010632132,0,0,7693.72514275789],"Archive209_field3":[0,0,0,0,4.25675189068271,0,0,5.63836433482809,0,4.40537902731496,2.16191338776271,4.3342732398932,3.35813870723208,2.50583774182551,0,0,3.19915690518126,3.43808302510984,1.75640927623759,0,2.36197440391344,0,4.90997606686175,4.92939210183385,0,0,4.80583178606301,0,0,0,0,3.21101879926877,0,0,4.86203326672028,0,3.65110399782178,-4.89625392045381,3.30409039324544,1.79665477081342,-4.1342933753746,0,0,-1.42387652805413,1.45596835545458,-2.5320882824789,0,-0.302559983094421,0,4.73951623448159,4.1441923679202,0,0,4.29419558900502,0,0,0,0,2.16528570785484,0,0,4.08570219861248,0,2.89682896832859,-11.9544212286703,2.27390754659769,0.235170834394768,-10.7744244925747,0,0,-6.04690996128951,-0.526146314200676,-6.82058584119539,0,-2.96709437010228,0,4.56905640210144,3.35899263400654,0,0,3.78255939194704],"Archive209_field4":[0,0,0,0,6752.86168811692,0,0,8965.79482204984,0,7012.07734456054,3531.36336265216,6879.12990422043,5337.85967120041,3986.48401700387,0,0,5075.62739474114,5452.17812617758,2825.36216536902,0,3748.37961378383,0,7786.54162180234,7832.06029813737,0,0,7701.5220704831,0,0,0,0,6752.86110989574,0,0,8965.79436744513,0,7012.0769112507,3531.36609522645,6879.12933227954,5337.85891723456,3986.48537323119,0,0,5075.6265862518,5452.17723657239,2825.36275405412,0,3748.37888181673,0,7786.54151618094,7832.05984330326,0,0,7701.52176821145,0,0,0,0,6752.86069361443,0,0,8965.79398006143,0,7012.0765590767,3531.38293497029,6879.12891461345,5337.85862004957,3986.49778964289,0,0,5075.62998855924,5452.17706755607,2825.36985205768,0,3748.38004393313,0,7786.54141429118,7832.05946718898,0,0,7701.52149992939],"Archive209_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,2136495.375,2570400.71859375,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive209_field6":[-887.61658328668,-840.258198540169,-207.349250507958,-269.927005045082,-552.80026673072,-849.288652740482,-519.528409906184,-247.190729399254,-579.043947672443,-379.343664565867,-718.693820175793,-409.585122093573,-534.375108561528,-694.096991323272,-674.187417630834,-838.661287928124,-668.991775290996,-583.270215127025,-645.322900363026,-425.559611718119,-511.104753811267,-364.954913382253,-236.242223152755,-397.423837715145,-739.140954233642,-866.367707082224,-267.032210867202,-887.61658328668,-840.258198540169,-207.349250507958,-269.927005045082,-552.80026673072,-849.288652740482,-519.528409906184,-247.190729399254,-579.043947672443,-379.343664565867,-718.693820175793,-409.585122093573,-534.375108561528,-694.096991323272,-674.187417630834,-838.661287928124,-668.991775290996,-583.270215127025,-645.322900363026,-425.559611718119,-511.104753811267,-364.954913382253,-236.242223152755,-397.423837715145,-739.140954233642,-866.367707082224,-267.032210867202,-887.61658328668,-840.258198540169,-207.349250507958,-269.927005045082,-552.80026673072,-849.288652740482,-519.528409906184,-247.190729399254,-579.043947672443,-379.343664565867,-718.693820175793,-409.585122093573,-534.375108561528,-694.096991323272,-674.187417630834,-838.661287928124,-668.991775290996,-583.270215127025,-645.322900363026,-425.559611718119,-511.104753811267,-364.954913382253,-236.242223152755,-397.423837715145,-739.140954233642,-866.367707082224,-267.032210867202],"Archive209_field7":[102.603443651459,97.1290829283075,23.9683975505383,31.202031117534,63.9005760888291,98.1729522251811,60.0545381134738,28.5738465826837,66.9341967865637,43.8499764928919,83.0769301402771,47.3457174939136,61.7707322873741,80.2336762053073,77.9322423869884,96.9444891171005,77.3316555952514,67.4227293385656,74.5956678718438,49.1922779085285,59.080811236635,42.1867184498569,27.3082613459019,45.9399419823395,85.4405028885126,100.147194057487,30.8674093259798,102.603443651459,97.1290829283075,23.9683975505383,31.202031117534,63.9005760888291,98.1729522251811,60.0545381134738,28.5738465826837,66.9341967865637,43.8499764928919,83.076930140277,47.3457174939136,61.7707322873741,80.2336762053073,77.9322423869884,96.9444891171005,77.3316555952514,67.4227293385656,74.5956678718438,49.1922779085285,59.080811236635,42.1867184498569,27.3082613459019,45.9399419823395,85.4405028885126,100.147194057487,30.8674093259798,102.603443651459,97.1290829283075,23.9683975505383,31.202031117534,63.9005760888291,98.1729522251811,60.0545381134738,28.5738465826837,66.9341967865637,43.8499764928919,83.0769301402771,47.3457174939136,61.7707322873741,80.2336762053073,77.9322423869884,96.9444891171005,77.3316555952514,67.4227293385656,74.5956678718438,49.1922779085285,59.080811236635,42.1867184498569,27.3082613459019,45.9399419823395,85.4405028885126,100.147194057487,30.8674093259798],"Archive209_field8":[990.22002693814,937.387281468476,231.317648058497,301.129036162616,616.700842819549,947.461604965663,579.582948019657,275.764575981938,645.978144459007,423.193641058759,801.77075031607,456.930839587487,596.145840848902,774.330667528579,752.119660017822,935.605777045225,746.323430886247,650.692944465591,719.91856823487,474.751889626648,570.185565047902,407.14163183211,263.550484498657,443.363779697484,824.581457122154,966.514901139711,297.899620193182,990.22002693814,937.387281468476,231.317648058497,301.129036162616,616.700842819549,947.461604965663,579.582948019657,275.764575981938,645.978144459007,423.193641058759,801.77075031607,456.930839587487,596.145840848902,774.330667528579,752.119660017823,935.605777045225,746.323430886247,650.692944465591,719.91856823487,474.751889626648,570.185565047902,407.14163183211,263.550484498657,443.363779697484,824.581457122154,966.514901139711,297.899620193182,990.22002693814,937.387281468476,231.317648058497,301.129036162616,616.700842819549,947.461604965663,579.582948019657,275.764575981938,645.978144459007,423.193641058759,801.77075031607,456.930839587487,596.145840848902,774.330667528579,752.119660017822,935.605777045225,746.323430886247,650.692944465591,719.91856823487,474.751889626648,570.185565047902,407.14163183211,263.550484498657,443.363779697484,824.581457122154,966.514901139711,297.899620193182],"Archive209_field9":[271.857107122951,271.943895983726,272.837777066048,272.755803245635,272.338082557536,271.90362093706,272.391927910584,272.773564054908,272.302239738644,272.589991178261,272.097771914826,272.543526264533,272.363276092384,272.131045397738,272.168194494547,271.924518021919,272.166624026143,272.294067423179,272.202922703638,272.528360417973,272.397990515807,272.615794481459,272.790774877438,272.561603420138,272.078247791849,271.879909217893,272.742440020831,248.30851752966,248.247694122848,247.87008378978,248.219338333102,248.09051689305,248.342248528699,248.14431267418,247.724643767967,248.187205273021,248.260506580537,248.223611512214,248.189322393726,248.124879451497,248.230850795295,248.233430203107,248.310620832033,248.153598456852,248.163080846841,248.180767029363,248.164659533121,248.108490430786,248.044816282246,247.422718530249,248.089753663512,248.23492176798,248.31104593996,247.276931496381,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive209_field10":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive209_field11":[0,0,0,0,487.91458947399,0,0,224.311324646178,0,103.695491412778,1198.78385323607,384.630940208305,166.847420307756,74.6318602781715,0,0,668.103283771065,569.864249907042,-206.479134206914,0,514.61981707766,0,698.527751817808,289.873077864585,0,0,-352.338818438562,0,0,0,0,487.91458947399,0,0,224.311324646178,0,103.695491412778,1198.78385323607,384.630940208305,166.847420307756,74.6318602781715,0,0,668.103283771065,569.864249907042,-206.479134206914,0,514.61981707766,0,698.527751817808,289.873077864585,0,0,-352.338818438562,0,0,0,0,487.91458947399,0,0,224.311324646178,0,103.695491412778,1198.78385323607,384.630940208305,166.847420307756,74.6318602781715,0,0,668.103283771065,569.864249907042,-206.479134206914,0,514.61981707766,0,698.527751817808,289.873077864585,0,0,-352.338818438562],"Archive209_field12":[0,0,0,0,6741.81510117961,0,0,8973.22085067471,0,7004.03360722409,3360.35663560211,6854.65223765989,5330.65867957991,4005.18334305179,0,0,5045.03289807902,5422.27626032287,2819.60662278689,0,3712.35014793975,0,7824.98010896336,7819.35020717405,0,0,7753.8926745303,0,0,0,0,6741.81510117961,0,0,8973.22085067471,0,7004.03360722409,3360.35663560211,6854.65223765989,5330.65867957991,4005.18334305179,0,0,5045.03289807902,5422.27626032287,2819.60662278689,0,3712.35014793975,0,7824.98010896336,7819.35020717405,0,0,7753.8926745303,0,0,0,0,6741.81510117961,0,0,8973.22085067471,0,7004.03360722409,3360.35663560211,6854.65223765989,5330.65867957991,4005.18334305179,0,0,5045.03289807902,5422.27626032287,2819.60662278689,0,3712.35014793975,0,7824.98010896336,7819.35020717405,0,0,7753.8926745303],"Archive209_field13":[0,0,0,0,4.20169307210832,0,0,5.18743976895556,0,4.28628898725032,2.11553292894413,4.19332669248233,3.29089190486838,2.38367757248275,0,0,3.01312818274152,3.38723876164218,1.71855825551334,0,2.35740194595746,0,4.38996406433665,4.86027210964336,0,0,4.2584718844128,0,0,0,0,3.15382724210344,0,0,4.3395389065767,0,3.5164621403851,-4.90307032676795,3.15469868407383,1.75179865027668,-4.17445799890972,0,0,-1.53427819714564,1.45775912864401,-2.54887788821529,0,-0.274676851080374,0,4.12055375239529,4.06294895025435,0,0,3.63919085921695,0,0,0,0,2.10596141209857,0,0,3.49163804419784,0,2.74663529351988,-11.92167358248,2.11607067566533,0.212705395684977,-10.7325935703022,0,0,-6.0816845770328,-0.471720504354158,-6.81631403194392,0,-2.90675564811821,0,3.85114344045393,3.26562579086533,0,0,3.0199098340211],"Archive209_field14":[0,0,0,0,6759.44887985253,0,0,8976.02556340384,0,7004.8024881746,3567.78417518412,6865.43631850227,5333.27018346281,4005.87933017794,0,0,5089.07928995283,5452.14055027652,2827.1572459927,0,3747.8504151555,0,7856.09788619747,7824.72285042407,0,0,7761.89489658911,0,0,0,0,6759.44830971739,0,0,8976.0251134311,0,7004.80205941394,3567.78691702759,6865.43576268434,5333.26945584437,4005.8807960457,0,0,5089.07862923092,5452.13969296869,2827.15787265321,0,3747.84968381667,0,7856.09774027125,7824.72239579512,0,0,7761.89458153249,0,0,0,0,6759.44790202487,0,0,8976.02474355347,0,7004.80171525713,3567.80346593189,6865.43536399378,5333.26917238269,4005.89299839535,0,0,5089.08203189658,5452.13951849211,2827.16494076018,0,3747.85080096123,0,7856.09760358396,7824.72202241175,0,0,7761.89431588505],"Archive209_field15":[8907791.61172931,8432520.38501568,2080880.35887518,2708887.54964057,5547698.94081081,8523146.68210196,5213794.89630679,2480714.69968104,5811070.81258,3806952.66042715,7212545.26257079,4110444.73883593,5362790.87073333,6965700.58903357,6765895.47399853,8416494.38097012,6713753.92986357,5853484.06903523,6476221.85857019,4270758.80614671,5129258.20049097,3662552.47738634,2370839.54193848,3988398.58848924,7417745.13453576,8694545.75222558,2679836.46634522,4453895.80586465,4216260.19250784,1040440.17943759,1354443.77482029,2773849.47040541,4261573.34105098,2606897.4481534,1240357.34984052,2905535.40629,1903476.33021358,3606272.6312854,2055222.36941796,2681395.43536667,3482850.29451679,3382947.73699926,4208247.19048506,3356876.96493179,2926742.03451761,3238110.9292851,2135379.40307335,2564629.10024548,1831276.23869317,1185419.77096924,1994199.29424462,3708872.56726788,4347272.87611279,1339918.23317261,-3.83512741564118e-10,3.83512741564118e-10,-6.39187902606864e-11,2.23715765912402e-10,1.91756370782059e-10,-2.55675161042745e-10,2.55675161042745e-10,0,-5.11350322085491e-10,6.39187902606864e-11,-3.83512741564118e-10,1.27837580521373e-10,3.83512741564118e-10,0,-3.83512741564118e-10,5.11350322085491e-10,0,-3.83512741564118e-10,-2.55675161042745e-10,-1.27837580521373e-10,6.39187902606864e-11,0,-3.19593951303432e-11,0,0,-3.83512741564118e-10,1.91756370782059e-10],"Archive209_field16":[-878.859461035019,-846.852813934313,-208.661661671484,-270.966825900188,-554.064839709164,-833.811023458983,-519.105504490031,-256.086046182408,-575.596202143688,-380.204865237761,-713.568544392592,-409.389666031978,-533.068798372513,-687.961036306919,-671.572685947441,-828.086788823228,-665.08983705417,-581.880819833812,-641.348311753676,-425.244070481083,-509.891287002365,-366.711875575334,-248.946681507695,-400.436610006791,-738.565624430076,-852.1273199626,-279.098898769004,-878.859461035019,-846.852813934313,-208.661661671484,-270.966825900188,-554.064839709164,-833.811023458982,-519.105504490031,-256.086046182408,-575.596202143688,-380.204865237762,-713.568544392592,-409.389666031978,-533.068798372513,-687.961036306919,-671.572685947441,-828.086788823228,-665.08983705417,-581.880819833812,-641.348311753676,-425.244070481083,-509.891287002365,-366.711875575334,-248.946681507695,-400.436610006791,-738.565624430076,-852.1273199626,-279.098898769004,-878.859461035019,-846.852813934313,-208.661661671484,-270.966825900188,-554.064839709164,-833.811023458983,-519.105504490031,-256.086046182408,-575.596202143688,-380.204865237761,-713.568544392592,-409.389666031978,-533.068798372513,-687.961036306919,-671.572685947441,-828.086788823228,-665.08983705417,-581.880819833812,-641.348311753676,-425.244070481083,-509.891287002365,-366.711875575334,-248.946681507695,-400.436610006791,-738.565624430076,-852.1273199626,-279.098898769004],"Archive209_field17":[101.591169977876,97.8913830720144,24.1201048387975,31.3222285119084,64.0467535541673,96.3838260486937,60.0056526455216,29.6020947604529,66.5356569544503,43.9495264069822,82.4844773234622,47.323123881559,61.6197302371717,79.5243946003636,77.6299942316563,95.7221369850188,76.8806136616598,67.2621231214658,74.1362279671643,49.1558031308559,58.9405413546899,42.3898133162327,28.7768246890029,46.2882013748308,85.3739980257231,98.5010860589266,32.2622500212807,101.591169977876,97.8913830720144,24.1201048387975,31.3222285119084,64.0467535541673,96.3838260486938,60.0056526455216,29.6020947604529,66.5356569544503,43.9495264069823,82.4844773234622,47.323123881559,61.6197302371717,79.5243946003636,77.6299942316563,95.7221369850188,76.8806136616598,67.2621231214658,74.1362279671643,49.1558031308559,58.94054135469,42.3898133162327,28.7768246890029,46.2882013748308,85.3739980257231,98.5010860589266,32.2622500212807,101.591169977876,97.8913830720144,24.1201048387975,31.3222285119084,64.0467535541673,96.3838260486937,60.0056526455216,29.6020947604529,66.5356569544503,43.9495264069822,82.4844773234622,47.323123881559,61.6197302371717,79.5243946003636,77.6299942316563,95.7221369850188,76.8806136616598,67.2621231214658,74.1362279671643,49.1558031308559,58.9405413546899,42.3898133162327,28.7768246890029,46.2882013748308,85.3739980257231,98.5010860589266,32.2622500212807],"Archive209_field18":[980.450631012895,944.744197006328,232.781766510281,302.289054412097,618.111593263331,930.194849507676,579.111157135553,285.688140942861,642.131859098139,424.154391644744,796.053021716055,456.712789913537,594.688528609685,767.485430907283,749.202680179098,923.808925808247,741.970450715829,649.142942955278,715.48453972084,474.399873611939,568.831828357055,409.101688891566,277.723506196697,446.724811381622,823.939622455799,950.628406021527,311.361148790285,980.450631012895,944.744197006328,232.781766510281,302.289054412097,618.111593263331,930.194849507676,579.111157135553,285.688140942861,642.131859098139,424.154391644744,796.053021716055,456.712789913537,594.688528609685,767.485430907283,749.202680179098,923.808925808247,741.970450715829,649.142942955278,715.48453972084,474.399873611939,568.831828357055,409.101688891566,277.723506196697,446.724811381622,823.939622455799,950.628406021527,311.361148790285,980.450631012895,944.744197006328,232.781766510281,302.289054412097,618.111593263331,930.194849507676,579.111157135553,285.688140942861,642.131859098139,424.154391644744,796.053021716055,456.712789913537,594.688528609685,767.485430907283,749.202680179098,923.808925808247,741.970450715829,649.142942955278,715.48453972084,474.399873611939,568.831828357055,409.101688891566,277.723506196697,446.724811381622,823.939622455799,950.628406021527,311.361148790285],"Archive209_field19":[272.152831097642,272.330129421986,272.939521229819,272.879985810023,272.601869627448,272.062045191013,272.633534000045,272.910949961712,272.550357785252,272.769522417021,272.438135306017,272.735249426232,272.614007103645,272.461268681011,272.470024997138,272.154804938307,272.488267547393,272.568422757427,272.511402693443,272.731246937867,272.645502702139,272.790257940797,272.921115120987,272.759883295794,272.41033271068,271.964315372132,272.899508379551,249.651540618486,247.300651152287,248.616948190572,248.421830312247,248.21971645232,251.648262000227,248.177830411501,250.056643231366,248.562998711075,247.747263176541,247.580428870861,247.560963260406,248.097900261625,247.780603512315,248.421371341733,250.124322971249,247.757326066474,248.179852366741,248.154176295385,248.287726593529,247.997414463249,248.556300025391,253.006304127507,248.355490534698,248.313699137273,252.135725950346,251.727251837815,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive209_field20":[-9.30698261904214e-05,2.65354076515556,-4.90047935039143e-13,-3.00093907152076e-07,-7.82951230758748e-05,-0.000195465093097715,-1.72089089814447e-06,2.87990649939174e-11,-9.3244774331657e-05,7.81535032987069e-09,1.48939642692275,-4.73656157798084e-07,-4.50971165371316e-05,0.857255815091926,-8.49134037665014e-05,-0.000135265960804084,0.890921951489578,-0.000110397137157865,0.0368154295331278,0.00960515267783495,-3.60815564388145e-07,5.3282736143378e-11,-4.89282892038504e-13,4.9213281107397e-09,-9.30698206238279e-05,-9.30666266381146e-05,3.89756725310352e-11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive209_field21":[0,0,0,0,487.955522732297,0,0,217.899303687972,0,107.532328011285,1219.2678381042,371.004446887122,167.511163983641,69.7973365642661,0,0,676.590842387213,568.585155752278,-218.894098284872,0,512.467312479958,0,706.219872470275,284.355982884663,0,0,-371.78764526527,0,0,0,0,487.955522732297,0,0,217.899303687972,0,107.532328011285,1219.2678381042,371.004446887122,167.511163983641,69.7973365642661,0,0,676.590842387213,568.585155752278,-218.894098284872,0,512.467312479958,0,706.219872470275,284.355982884663,0,0,-371.78764526527,0,0,0,0,487.955522732297,0,0,217.899303687972,0,107.532328011285,1219.2678381042,371.004446887122,167.511163983641,69.7973365642661,0,0,676.590842387213,568.585155752278,-218.894098284872,0,512.467312479958,0,706.219872470275,284.355982884663,0,0,-371.78764526527],"Archive209_field22":[0,0,0,0,6739.43812377371,0,0,9021.20599731293,0,6993.63755254667,3394.53864029363,6837.40196850712,5321.41044585061,4025.94638856375,0,0,5054.75685821077,5417.36669435759,2823.56554934899,0,3707.86288775899,0,7902.34034222576,7818.60735942674,0,0,7822.34976362433,0,0,0,0,6739.43812377371,0,0,9021.20599731293,0,6993.63755254667,3394.53864029363,6837.40196850713,5321.41044585061,4025.94638856375,0,0,5054.75685821077,5417.36669435759,2823.56554934899,0,3707.86288775899,0,7902.34034222576,7818.60735942674,0,0,7822.34976362433,0,0,0,0,6739.43812377371,0,0,9021.20599731293,0,6993.63755254667,3394.53864029363,6837.40196850712,5321.41044585061,4025.94638856375,0,0,5054.75685821077,5417.36669435759,2823.56554934899,0,3707.86288775899,0,7902.34034222576,7818.60735942674,0,0,7822.34976362433],"Archive209_field23":[0,0,0,0,4.1322291265023,0,0,4.82062937257222,0,4.17338753394113,2.06910608083343,4.06112182491823,3.217061692706,2.26742127310061,0,0,2.83248259305945,3.33089414879268,1.68378385026737,0,2.34394084912393,0,3.95082813416073,4.79337545161383,0,0,3.797553416541,0,0,0,0,3.0846809022164,0,0,3.87703496423793,0,3.37766648852774,-4.90934308785671,3.00205970075507,1.7116235746117,-4.20326790109261,0,0,-1.61925668762607,1.46331660832719,-2.56286092538672,0,-0.258433607120892,0,3.57802429359952,3.96226141401224,0,0,3.06458875703629,0,0,0,0,2.03713267793052,0,0,2.93344055590364,0,2.58194544311435,-11.8877922565469,1.94299757659193,0.206185456517393,-10.6739570752858,0,0,-6.07099596831158,-0.404260932138305,-6.8095057010408,0,-2.86080806336571,0,3.20522045303832,3.13114737641066,0,0,2.33162409753158],"Archive209_field24":[0,0,0,0,6757.08101858021,0,0,9023.83848431309,0,6994.46544312873,3606.86996198668,6847.46131579183,5324.04728310644,4026.55201543208,0,0,5099.83824121792,5447.1242023046,2832.03811289016,0,3743.11039575907,0,7933.83545340358,7823.77800952535,0,0,7831.18102836714,0,0,0,0,6757.0804591625,0,0,9023.83802956938,0,6994.46501360822,3606.87270958255,6847.46076957857,5324.04658628401,4026.55357088938,0,0,5099.83771169468,5447.12338044331,2832.03877197868,0,3743.10967079096,0,7933.83527651655,7823.77754447298,0,0,7831.18070723373,0,0,0,0,6757.08006214585,0,0,9023.83767349435,0,6994.4646746124,3606.88895879628,6847.46038716506,5324.04631514223,4026.56552475439,0,0,5099.84106817292,5447.12319889165,2832.04579890621,0,3743.1107551078,0,7933.83511714724,7823.77716770922,0,0,7831.18045470263],"Archive209_field25":[8819908.37294687,8498701.50510361,2094051.23172019,2719322.80700871,5560389.72733048,8367818.92135567,5209550.77402529,2569984.80764956,5776470.51411926,3815595.35172604,7161109.89116263,4108483.2141205,5349681.22501115,6904122.41479281,6739654.99427472,8310372.62051805,6674595.52143594,5839540.6119488,6436334.35788454,4267592.15104208,5117080.29657954,3680184.69988009,2498336.78533907,4018633.65648245,7411971.33749921,8551634.49603627,2800933.28145318,4409954.18647344,4249350.75255181,1047025.6158601,1359661.40350435,2780194.86366524,4183909.46067784,2604775.38701265,1284992.40382478,2888235.25705963,1907797.67586302,3580554.94558132,2054241.60706025,2674840.61250557,3452061.2073964,3369827.49713736,4155186.31025903,3337297.76071797,2919770.3059744,3218167.17894227,2133796.07552104,2558540.14828977,1840092.34994004,1249168.39266953,2009316.82824123,3705985.6687496,4275817.24801814,1400466.64072659,-2.55675161042745e-10,2.55675161042745e-10,9.58781853910296e-11,1.59796975651716e-10,3.83512741564118e-10,-2.55675161042745e-10,-5.11350322085491e-10,1.59796975651716e-10,-1.27837580521373e-10,-2.55675161042746e-10,-2.55675161042746e-10,2.55675161042746e-10,1.91756370782059e-10,0,0,-2.55675161042745e-10,5.11350322085491e-10,-5.11350322085491e-10,-5.11350322085491e-10,1.91756370782059e-10,-1.91756370782059e-10,1.91756370782059e-10,6.39187902606864e-11,1.27837580521373e-10,-2.55675161042745e-10,-2.55675161042745e-10,0],"Archive209_field26":[-870.097361352769,-853.430584833353,-210.093746936407,-272.033262125273,-555.096483275444,-818.580274568294,-518.643369530423,-264.297546677401,-572.298903298696,-381.223298449677,-708.460636710206,-409.414977530525,-531.703113121531,-681.899330312079,-668.918554736882,-817.585378235709,-661.172711354844,-580.466282116504,-637.396731134211,-424.856256880849,-508.624420471641,-368.334215888648,-260.188992618789,-403.381519386285,-737.764512771363,-837.973852253648,-289.660214967191,-870.097361352769,-853.430584833353,-210.093746936407,-272.033262125273,-555.096483275444,-818.580274568294,-518.643369530423,-264.297546677401,-572.298903298696,-381.223298449677,-708.460636710206,-409.414977530525,-531.703113121531,-681.899330312079,-668.918554736882,-817.585378235709,-661.172711354844,-580.466282116504,-637.396731134211,-424.856256880849,-508.624420471641,-368.334215888648,-260.188992618789,-403.381519386285,-737.764512771363,-837.973852253648,-289.660214967191,-870.097361352769,-853.430584833353,-210.093746936407,-272.033262125273,-555.096483275444,-818.580274568294,-518.643369530423,-264.297546677401,-572.298903298696,-381.223298449677,-708.460636710206,-409.414977530525,-531.703113121531,-681.899330312079,-668.918554736882,-817.585378235709,-661.172711354844,-580.466282116504,-637.396731134211,-424.856256880849,-508.624420471641,-368.334215888648,-260.188992618789,-403.381519386285,-737.764512771363,-837.973852253648,-289.660214967191],"Archive209_field27":[100.578320941541,98.6517360876067,24.2856457745465,31.4455024921254,64.166005700324,94.623237845408,59.9522324648036,30.5512976530038,66.1545079058471,44.0672515110859,81.8940321606128,47.326049747258,61.4618647665019,78.8236957612655,77.3231917144051,94.5082334710852,76.4278161435262,67.0986105827148,73.6794476556449,49.1109740778299,58.7940987677142,42.577346656703,30.0763721020629,46.6286161995052,85.2813940608118,96.8650254513486,33.4830782841028,100.578320941541,98.6517360876067,24.2856457745465,31.4455024921254,64.166005700324,94.623237845408,59.9522324648036,30.5512976530038,66.1545079058471,44.0672515110859,81.8940321606128,47.326049747258,61.4618647665019,78.8236957612655,77.3231917144051,94.5082334710852,76.4278161435262,67.0986105827148,73.6794476556449,49.1109740778299,58.7940987677142,42.577346656703,30.0763721020629,46.6286161995052,85.2813940608118,96.8650254513486,33.4830782841028,100.578320941541,98.6517360876067,24.2856457745465,31.4455024921254,64.166005700324,94.623237845408,59.9522324648036,30.5512976530038,66.1545079058471,44.0672515110859,81.8940321606128,47.326049747258,61.4618647665019,78.8236957612655,77.3231917144051,94.5082334710852,76.4278161435262,67.0986105827148,73.6794476556449,49.1109740778299,58.7940987677142,42.577346656703,30.0763721020629,46.6286161995052,85.2813940608118,96.8650254513486,33.4830782841028],"Archive209_field28":[970.67568229431,952.082320920959,234.379392710954,303.478764617398,619.262488975769,913.203512413702,578.595601995227,294.848844330405,638.453411204543,425.290549960763,790.354668870819,456.741027277783,593.164977888033,760.723026073345,746.241746451287,912.093611706794,737.600527498371,647.564892699219,711.076178789856,473.967230958679,567.418519239355,410.911562545351,290.265364720852,450.01013558579,823.045906832175,934.838877704996,323.143293251294,970.67568229431,952.082320920959,234.379392710954,303.478764617398,619.262488975768,913.203512413702,578.595601995227,294.848844330405,638.453411204543,425.290549960763,790.354668870819,456.741027277783,593.164977888033,760.723026073344,746.241746451287,912.093611706794,737.600527498371,647.564892699219,711.076178789856,473.967230958679,567.418519239355,410.911562545351,290.265364720852,450.01013558579,823.045906832175,934.838877704996,323.143293251294,970.67568229431,952.082320920959,234.379392710954,303.478764617398,619.262488975769,913.203512413702,578.595601995227,294.848844330405,638.453411204543,425.290549960763,790.354668870819,456.741027277783,593.164977888033,760.723026073345,746.241746451287,912.093611706794,737.600527498371,647.564892699219,711.076178789856,473.967230958679,567.418519239355,410.911562545351,290.265364720852,450.01013558579,823.045906832175,934.838877704996,323.143293251294],"Archive209_field29":[272.170224832608,272.323617043757,272.939747809701,272.882257031702,272.604305262105,272.108358587155,272.637281347365,272.906890134928,272.560334679346,272.771162004601,272.443185078804,272.739470878078,272.619807316186,272.467368793826,272.477432054483,272.181109156954,272.492059788889,272.574802252608,272.51533215278,272.731465807736,272.647332894612,272.789848840857,272.917657947519,272.758347167022,272.417283905604,272.02167947844,272.887376889144,250.993975569208,246.527629240216,249.451115589781,248.707822237548,248.310561730819,254.468431953538,248.236990805194,251.779448735374,248.954625945848,247.536006721299,247.180649367974,247.239480091244,248.072484375869,247.549169283227,248.709418112516,251.821760346851,247.60977423471,248.173556985177,248.235891989154,248.36979898512,247.953394465642,248.931954965274,256.330912785239,248.662277839221,248.442107744931,255.318372278329,254.453875195495,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive209_field30":[-8.60838448094814e-05,2.75020660304141,-2.50245061130056e-06,-1.05142597688879e-05,-7.92715656751502e-05,-0.000190053482704114,-7.62550431034367e-06,-0.0173923331789152,-8.85542238217439e-05,-3.90838365692223e-06,1.37759976682311,-2.11993950974888e-05,-5.02011230687666e-05,0.851182539038712,-9.48228464877816e-05,-0.000145311355586486,0.923866111269576,-0.000107592361795675,0.162824201178678,0.0386119272172865,0.0495005371934381,5.60702482048766e-10,0.0800962455706743,1.09327121490532e-06,-8.60837675158601e-05,-8.60805960604519e-05,0.297928841216396,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive210.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive210.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive210.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive210_field1":[0,0,0,0,490.540612880051,0,0,262.090439959079,0,131.897857350059,1172.26267347815,530.785836932857,172.595237154162,62.823767423432,0,0,623.572202255057,496.665180214281,-198.987954086617,0,730.109858520098,365.989980090506,0,0,-317.057622160414,0,0,0,0,0,490.540539609044,0,0,262.090519038813,0,131.895973083624,1172.26625463723,530.787879797846,172.593449046555,62.8235790258126,0,0,623.572031204053,496.667255043982,-198.991776685554,0,730.10937939431,365.989984399955,0,0,-317.056990898588,0,0,0,0,0,490.540500905005,0,0,262.090539760492,0,131.895509652727,1172.26690327956,530.788308834373,172.592994296406,62.8234131692592,0,0,623.571898953531,496.667681461353,-198.992781422949,0,730.109268098396,365.989974872871,0,0,-317.056858802644,0],"Archive210_field2":[0,0,0,0,6674.81408381696,0,0,8936.39681162722,0,6959.28945869104,3333.94934524806,6765.10634563029,5300.63653364676,3977.71931369217,0,0,5049.63343273795,5485.05763351316,2803.87164228599,0,7714.29654394195,7772.35877166531,0,0,7578.65863007473,0,0,0,0,0,6674.81597710597,0,0,8936.39840448692,0,6959.28961670319,3333.95647926453,6765.1071303803,5300.63920563253,3977.72778495138,0,0,5049.6405126502,5485.06106921546,2803.87577826465,0,7714.29884550019,7772.36023944298,0,0,7578.6622655535,0,0,0,0,0,6674.81622057023,0,0,8936.3988574617,0,6959.2892601997,3333.95640196177,6765.10683755817,5300.63940647535,3977.72845699916,0,0,5049.64121325156,5485.06137648914,2803.87551370545,0,7714.299604314,7772.3604817384,0,0,7578.66345697611,0],"Archive210_field3":[0,0,0,0,4.21901325117642,0,0,5.62375139187039,0,4.3750104004683,2.16550543245869,4.27819569673169,3.33680995176542,2.49983605275937,0,0,3.20761187013098,3.47286267942248,1.7468560024828,0,4.88628924081308,4.89987366863342,0,0,4.73547444316619,0,0,0,0,0,3.3559684100875,0,0,4.91873719928209,0,3.61103085470353,-4.84844128915036,2.86047527578185,1.78974865222628,-4.14557497478541,0,0,-1.42900384649423,1.14254553734255,-2.52457304586108,0,4.70713327492723,4.20335721903547,0,0,4.39573033729858,0,0,0,0,0,2.49292755537345,0,0,4.21372260985156,0,2.8470503248217,-11.8623949720552,1.44275329765327,0.242690800085078,-10.7909900046219,0,0,-6.06561978988069,-1.18776849886311,-6.79600659277222,0,4.52797471328608,3.50684134841013,0,0,4.05598199897399,0],"Archive210_field4":[0,0,0,0,6692.81636880012,0,0,8940.24110414024,0,6960.54063671334,3534.03773348898,6785.89830275507,5303.44679543593,3978.21618485638,0,0,5087.99080042643,5507.49903358807,2810.92430417345,0,7748.77122189096,7780.97253238767,0,0,7585.28935451341,0,0,0,0,0,6692.81776322596,0,0,8940.24228295084,0,6960.54032072311,3534.04831387095,6785.8984991806,5303.44866008362,3978.22602664148,0,0,5087.9969955917,5507.50166597036,2810.92929128371,0,7748.77335716233,7780.9735913038,0,0,7585.29275593549,0,0,0,0,0,6692.81762609018,0,0,8940.24237625205,0,6960.53960108646,3534.06503889232,6785.89779129546,5303.44854958153,3978.23917133302,0,0,5088.0010895711,5507.50202001371,2810.93618019354,0,7748.77399535161,7780.97348779267,0,0,7585.2937515174,0],"Archive210_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4272990.75,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2136495.375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive210_field6":[-887.59851320127,-840.245287046799,-207.359335168449,-269.110117802972,-552.914358745014,-849.22246276438,-519.571655693359,-247.02154654017,-579.146356583616,-379.371908778017,-718.794814381163,-410.317826197543,-534.406135035672,-694.115101843756,-674.186856347417,-838.687672198281,-669.060123829999,-582.403212726481,-645.32538886762,-365.024305967856,-236.186573193876,-397.289154288081,-739.138536202984,-866.292146871575,-266.797210389428,-426.715833189205,-887.59851320127,-840.245287046799,-207.359335168449,-269.110117802972,-552.914358745014,-849.222462764381,-519.571655693359,-247.02154654017,-579.146356583616,-379.371908778017,-718.794814381163,-410.317826197543,-534.406135035672,-694.115101843756,-674.186856347417,-838.687672198281,-669.060123829999,-582.403212726481,-645.32538886762,-365.024305967856,-236.186573193876,-397.289154288081,-739.138536202984,-866.292146871575,-266.797210389428,-426.715833189205,-887.59851320127,-840.245287046799,-207.359335168449,-269.110117802972,-552.914358745014,-849.22246276438,-519.571655693359,-247.02154654017,-579.146356583616,-379.371908778017,-718.794814381163,-410.317826197543,-534.406135035672,-694.115101843756,-674.186856347417,-838.687672198281,-669.060123829999,-582.403212726481,-645.32538886762,-365.024305967856,-236.186573193876,-397.289154288081,-739.138536202984,-866.292146871575,-266.797210389428,-426.715833189205],"Archive210_field7":[102.601354852055,97.1275904328906,23.9695632801042,31.1076035846401,63.9137644787039,98.165301039285,60.0595370812389,28.5542900035529,66.9460346759687,43.853241363653,83.0886044977135,47.4304139334128,61.7743187718443,80.2357696787767,77.9321775058083,96.9475389891143,77.3395562987785,67.3225087775431,74.5959555288634,42.1947398392506,27.3018285262278,45.9243733419156,85.4402233778804,100.138459725613,30.8402446033581,49.3259305540412,102.601354852055,97.1275904328906,23.9695632801042,31.1076035846401,63.9137644787039,98.165301039285,60.0595370812389,28.5542900035529,66.9460346759687,43.853241363653,83.0886044977135,47.4304139334128,61.7743187718443,80.2357696787767,77.9321775058083,96.9475389891143,77.3395562987785,67.3225087775431,74.5959555288634,42.1947398392506,27.3018285262278,45.9243733419156,85.4402233778804,100.138459725613,30.8402446033581,49.3259305540412,102.601354852055,97.1275904328906,23.9695632801042,31.1076035846401,63.9137644787039,98.165301039285,60.0595370812389,28.5542900035529,66.9460346759687,43.853241363653,83.0886044977135,47.4304139334128,61.7743187718443,80.2357696787767,77.9321775058083,96.9475389891143,77.3395562987785,67.3225087775431,74.5959555288634,42.1947398392506,27.3018285262278,45.9243733419156,85.4402233778804,100.138459725613,30.8402446033581,49.3259305540412],"Archive210_field8":[990.199868053325,937.37287747969,231.328898448553,300.217721387612,616.828123223718,947.387763803665,579.631192774598,275.575836543723,646.092391259585,423.22515014167,801.883418878877,457.748240130955,596.180453807517,774.350871522533,752.119033853225,935.635211187395,746.399680128778,649.725721504024,719.921344396483,407.219045807107,263.488401720104,443.213527629997,824.578759580864,966.430606597188,297.637454992786,476.041763743246,990.199868053325,937.37287747969,231.328898448553,300.217721387612,616.828123223718,947.387763803666,579.631192774597,275.575836543723,646.092391259585,423.22515014167,801.883418878877,457.748240130955,596.180453807517,774.350871522533,752.119033853225,935.635211187396,746.399680128778,649.725721504024,719.921344396483,407.219045807107,263.488401720104,443.213527629997,824.578759580864,966.430606597188,297.637454992786,476.041763743246,990.199868053325,937.37287747969,231.328898448553,300.217721387612,616.828123223718,947.387763803665,579.631192774598,275.575836543723,646.092391259585,423.22515014167,801.883418878877,457.748240130955,596.180453807517,774.350871522533,752.119033853225,935.635211187395,746.399680128778,649.725721504024,719.921344396483,407.219045807107,263.488401720104,443.213527629997,824.578759580864,966.430606597188,297.637454992786,476.041763743246],"Archive210_field9":[271.857100893521,271.943898382898,272.837806118452,272.756360538106,272.338157304464,271.903652916215,272.391943784981,272.773730331249,272.3019959992,272.589933393398,272.097740658015,272.542600641134,272.363269531827,272.131043972792,272.168193393534,271.924514324133,272.166524520121,272.294575655735,272.202922220306,272.615812043541,272.790755251003,272.561787953138,272.078325987273,271.879918471,272.742709395277,272.527695934528,248.308550092096,248.247766752712,247.870721156611,248.233514698308,248.091205688558,248.343156854879,248.144586498866,247.729091286993,248.180618265683,248.259314642538,248.222355698871,248.167334106022,248.124852264878,248.231088461259,248.233472401723,248.310435728697,248.150510722549,248.182658243392,248.180714864171,248.04519644573,247.422061026693,248.094136976657,248.236985695889,248.311406094634,247.280308909924,248.149665013354,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive210_field10":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive210_field11":[0,0,0,0,489.788860609276,0,0,255.965027353288,0,141.502811912829,1186.70853373026,514.955374467716,173.537763471656,58.1951632189232,0,0,629.284158137165,493.552663841678,-210.925583723288,0,725.280987692055,361.989739132524,0,0,-324.636451920386,0,0,0,0,0,489.788794961268,0,0,255.965115188315,0,141.500923544664,1186.71206517125,514.957393113129,173.536038147647,58.1949286950633,0,0,629.283938472589,493.554630957117,-210.929283675043,0,725.280503202618,361.989746888338,0,0,-324.635819968234,0,0,0,0,0,489.788755479628,0,0,255.965137554063,0,141.500451457679,1186.71265653719,514.9578232164,173.535593848567,58.1947511810747,0,0,629.283802096895,493.555048979279,-210.930223066667,0,725.280382982037,361.989738795506,0,0,-324.635680243902,0],"Archive210_field12":[0,0,0,0,6678.57424750462,0,0,8945.51861239855,0,6947.71646380418,3367.34928723649,6746.75318754549,5293.33670386117,3996.44054354278,0,0,5062.48886488443,5484.38872311447,2803.73310232018,0,7776.22064513983,7762.75420530662,0,0,7627.53900004083,0,0,0,0,0,6678.57611161287,0,0,8945.52032177402,0,6947.71654475505,3367.35560060637,6746.75385602303,5293.33932035475,3996.44815814465,0,0,5062.49528663051,5484.39205935715,2803.73696478612,0,7776.22319131029,7762.75565462645,0,0,7627.54293096776,0,0,0,0,0,6678.57634594881,0,0,8945.52080210289,0,6947.71617917935,3367.35528227906,6746.75354935564,5293.33951595607,3996.4486150211,0,0,5062.4958578524,5484.39235571735,2803.73662127182,0,7776.22399697988,7762.75589390674,0,0,7627.54418180841,0],"Archive210_field13":[0,0,0,0,4.15221626071856,0,0,5.18362629732619,0,4.25646615082183,2.12461192095868,4.13602430046266,3.26979362426118,2.37665675523475,0,0,3.02883148511046,3.42030702055886,1.70824872639612,0,4.36603256485491,4.83834338344866,0,0,4.23747718012827,0,0,0,0,0,3.28691817931869,0,0,4.4066973343485,0,3.4787389607221,-4.84892846188514,2.71406823752328,1.74719092317868,-4.18599978356177,0,0,-1.53197502051897,1.15747840163387,-2.54073041224212,0,4.09272777101424,4.12796192420324,0,0,3.79558620503418,0,0,0,0,0,2.42162377569733,0,0,3.62976780009534,0,2.70101091297121,-11.8224749282862,1.29211078894113,0.22459115610025,-10.7486596743639,0,0,-6.09278164144225,-1.10534777928135,-6.78971380844183,0,3.81942012816579,3.4175810851989,0,0,3.35369065881124,0],"Archive210_field14":[0,0,0,0,6696.51135654295,0,0,8949.18142681097,0,6949.15859832678,3570.3393228454,6766.37825709186,5296.18159690026,3996.86493937335,0,0,5101.45089485152,5506.55296866475,2811.65642087162,0,7809.97177301217,7771.19121067095,0,0,7634.44549258636,0,0,0,0,0,6696.51273022808,0,0,8949.18272170407,0,6949.15820795956,3570.34911159474,6766.37835748563,5296.18343428792,3996.87403517521,0,0,5101.4565713454,5506.55552720893,2811.66117904181,0,7809.97411518236,7771.19224896391,0,0,7634.44916060336,0,0,0,0,0,6696.51259223209,0,0,8949.18285363043,0,6949.15748703777,3570.3652890414,6766.37766349063,5296.1833317924,3996.88675036633,0,0,5101.46052972502,5506.5558491327,2811.66795704565,0,7809.97476776427,7771.19214273058,0,0,7634.45019746463,0],"Archive210_field15":[8907610.26703806,8432390.81004547,2080981.56479654,2700689.57152704,5548843.92605223,8522482.4239921,5214228.89502594,2479016.84310493,5812098.55052123,3807236.10888993,7213558.80304803,4117797.88612284,5363102.24094804,6965882.33951626,6765889.84116583,8416759.16374324,6714439.85051205,5844783.15373426,6476246.83228155,3663248.8757002,2370281.05954166,3987046.9554481,7417720.86807475,8693787.45790879,2677478.08850045,4282362.21702858,4453805.13351903,4216195.40502273,1040490.78239827,1350344.78576352,2774421.96302611,4261241.21199605,2607114.44751297,1239508.42155246,2906049.27526062,1903618.05444497,3606779.40152402,2058898.94306142,2681551.12047402,3482941.16975813,3382944.92058291,4208379.58187162,3357219.92525603,2922391.57686713,3238123.41614078,1831624.4378501,1185140.52977083,1993523.47772405,3708860.43403737,4346893.72895439,1338739.04425023,2141181.10851429,-2.55675161042745e-10,-1.27837580521373e-10,6.39187902606864e-11,-2.23715765912402e-10,2.55675161042746e-10,5.11350322085491e-10,-1.91756370782059e-10,-9.58781853910296e-11,1.27837580521373e-10,0,2.55675161042746e-10,1.91756370782059e-10,-3.19593951303432e-10,-3.83512741564118e-10,-3.83512741564118e-10,3.83512741564118e-10,-3.83512741564118e-10,-3.83512741564118e-10,-3.83512741564118e-10,-6.39187902606864e-11,3.19593951303432e-11,1.91756370782059e-10,2.55675161042745e-10,1.27837580521373e-10,-6.39187902606864e-11,0],"Archive210_field16":[-878.820719273439,-846.825847104021,-208.692141994139,-269.445381873172,-554.288174962295,-833.682004354746,-519.195007579145,-255.7762523972,-575.74793118552,-380.254334569926,-713.766902032307,-410.718898017497,-533.135383078999,-687.998753489127,-671.572569807685,-828.14083862357,-665.218491027643,-580.2240017468,-641.354481448786,-366.850191085922,-248.842474744866,-400.207073121003,-738.579915532713,-851.97941087704,-278.762054706872,-427.460397064763,-878.820719273439,-846.825847104021,-208.692141994139,-269.445381873172,-554.288174962295,-833.682004354746,-519.195007579145,-255.7762523972,-575.74793118552,-380.254334569927,-713.766902032307,-410.718898017497,-533.135383078999,-687.998753489127,-671.572569807685,-828.14083862357,-665.218491027643,-580.2240017468,-641.354481448786,-366.850191085922,-248.842474744866,-400.207073121003,-738.579915532713,-851.97941087704,-278.762054706872,-427.460397064763,-878.820719273439,-846.825847104021,-208.692141994139,-269.445381873172,-554.288174962295,-833.682004354746,-519.195007579145,-255.7762523972,-575.74793118552,-380.254334569926,-713.766902032307,-410.718898017497,-533.135383078999,-687.998753489127,-671.572569807685,-828.14083862357,-665.218491027643,-580.2240017468,-641.354481448786,-366.850191085922,-248.842474744866,-400.207073121003,-738.579915532713,-851.97941087704,-278.762054706872,-427.460397064763],"Archive210_field17":[101.586691649929,97.8882658593525,24.1236281912528,31.146358209985,64.0725698429697,96.3689121718681,60.0159986950811,29.5662843556196,66.5531959712815,43.9552447812565,82.5074063417934,47.4767755614555,61.6274270516619,79.5287544927453,77.629980806559,95.7283848354399,76.8954853314397,67.0706043458679,74.1369411489328,42.4058018049158,28.7647789781415,46.2616682124605,85.3756499961478,98.4839886073787,32.2233127578281,49.4119979158832,101.586691649929,97.8882658593525,24.1236281912528,31.146358209985,64.0725698429697,96.3689121718681,60.0159986950811,29.5662843556196,66.5531959712815,43.9552447812565,82.5074063417934,47.4767755614555,61.6274270516619,79.5287544927453,77.629980806559,95.7283848354399,76.8954853314397,67.0706043458679,74.1369411489328,42.4058018049158,28.7647789781415,46.2616682124605,85.3756499961478,98.4839886073787,32.2233127578281,49.4119979158832,101.586691649929,97.8882658593525,24.1236281912528,31.146358209985,64.0725698429697,96.3689121718681,60.0159986950811,29.5662843556196,66.5531959712815,43.9552447812565,82.5074063417934,47.4767755614555,61.6274270516619,79.5287544927453,77.629980806559,95.7283848354399,76.8954853314397,67.0706043458679,74.1369411489328,42.4058018049158,28.7647789781415,46.2616682124605,85.3756499961478,98.4839886073787,32.2233127578281,49.4119979158832],"Archive210_field18":[980.407410923367,944.714112963373,232.815770185392,300.591740083157,618.360744805264,930.050916526614,579.211006274226,285.342536752819,642.301127156801,424.209579351183,796.2743083741,458.195673578952,594.762810130661,767.527507981872,749.202550614243,923.86922345901,742.113976359083,647.294606092668,715.491422597719,409.255992890838,277.607253723007,446.468741333463,823.95556552886,950.463399484419,310.9853674647,476.872394980646,980.407410923367,944.714112963373,232.815770185392,300.591740083157,618.360744805264,930.050916526614,579.211006274226,285.342536752819,642.301127156801,424.209579351183,796.2743083741,458.195673578952,594.762810130661,767.527507981872,749.202550614243,923.86922345901,742.113976359083,647.294606092668,715.491422597719,409.255992890838,277.607253723007,446.468741333463,823.95556552886,950.463399484419,310.9853674647,476.872394980646,980.407410923367,944.714112963373,232.815770185392,300.591740083157,618.360744805264,930.050916526614,579.211006274226,285.342536752819,642.301127156801,424.209579351183,796.2743083741,458.195673578952,594.762810130661,767.527507981872,749.202550614243,923.86922345901,742.113976359083,647.294606092668,715.491422597719,409.255992890838,277.607253723007,446.468741333463,823.95556552886,950.463399484419,310.9853674647,476.872394980646],"Archive210_field19":[272.153702358117,272.330129302185,272.939399959627,272.880900900808,272.601351887029,272.061135368872,272.633513932759,272.910526673724,272.558942434595,272.76985433187,272.438134626406,272.738424813581,272.614106820205,272.461268487793,272.470046776221,272.15470973823,272.488267424995,272.567488401039,272.511402650453,272.789789720526,272.921100746873,272.759481310656,272.408711730271,271.962791357738,272.898059907244,272.731247204011,249.651309716712,247.298458012184,248.631174177333,248.311803015089,248.218344733439,251.670628534146,248.173888475317,250.044613221961,248.513336819977,247.751809017948,247.567380176721,247.579398897288,248.100007139367,247.779076720902,248.424450419544,250.124840921605,247.750834137883,248.196631258784,248.154923543867,248.577843157161,252.98394771033,248.364126915898,248.326614781761,252.161890941036,251.692584103744,248.338428917849,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive210_field20":[-8.88490783492268e-05,2.65614032005305,-4.50675010569886e-13,-3.16744366985405e-06,-7.70255217449308e-05,-0.000189769232531301,-1.60567749079638e-06,3.81855196740403e-10,-9.199933215606e-05,7.4131685259567e-09,1.46627633842056,-6.31483965520312e-06,-4.37508651707959e-05,0.85883654570576,-8.23459622371226e-05,-0.000131257826238739,0.917975620742557,-0.000106935145036269,0.0354246036999361,4.82017817361375e-11,-4.60784801043608e-13,5.0492345114161e-09,-8.88489828030122e-05,-8.8846020437833e-05,4.78631109109913e-10,0.104550940080542,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive210_field21":[0,0,0,0,488.788791380165,0,0,249.883082475338,0,145.166767309014,1206.18818575341,502.725281975532,174.008895123926,52.8288988388318,0,0,635.944263177133,490.527827691442,-223.279395057908,0,733.830796511773,357.391056344027,0,0,-345.713621330668,0,0,0,0,0,488.788734780485,0,0,249.88318167452,0,145.164865813028,1206.19166822693,502.727290701396,174.007237351406,52.8286377999325,0,0,635.944001265495,490.529685543136,-223.28296083005,0,733.830295201837,357.391069164389,0,0,-345.712976415841,0,0,0,0,0,488.788695556629,0,0,249.883205763896,0,145.164383907787,1206.19220776303,502.72772475677,174.006803321001,52.828457323849,0,0,635.943863932144,490.530096517034,-223.283828952012,0,733.830163068837,357.39106297639,0,0,-345.712825532504,0],"Archive210_field22":[0,0,0,0,6670.95609210594,0,0,8989.868803518,0,6930.76618189144,3400.73232595036,6721.7501493069,5280.0090579146,4015.1397630254,0,0,5070.45711496356,5475.52983389179,2805.98139434548,0,7841.39992940368,7757.05876083519,0,0,7681.45155658617,0,0,0,0,0,6670.95795699023,0,0,8989.87067628931,0,6930.76619713915,3400.73798077407,6721.75072635705,5280.01164966098,4015.14661927546,0,0,5070.46294289659,5475.53310635934,2805.98506731014,0,7841.40277697202,7757.06023647943,0,0,7681.45586390339,0,0,0,0,0,6670.95820131797,0,0,8989.87119939302,0,6930.7658168214,3400.73749191915,6721.75040309893,5280.01186668485,4015.14690649517,0,0,5070.46341933978,5475.5334224963,2805.98468559289,0,7841.40366986656,7757.06048264668,0,0,7681.45723071086,0],"Archive210_field23":[0,0,0,0,4.07081268525385,0,0,4.82403081174923,0,4.14267310836929,2.08279981104513,4.00072425901138,3.19536561074913,2.25863010047489,0,0,2.85358840218273,3.35993015902591,1.67235293390149,0,3.92508534598036,4.77680015683173,0,0,3.81151316790042,0,0,0,0,0,3.20588387331491,0,0,3.95147580221436,0,3.34131914523756,-4.84674372114882,2.56413697986798,1.70898321629668,-4.21374995109561,0,0,-1.6083437225201,1.17451015258144,-2.55349851726272,0,3.554826562961,4.03082408696162,0,0,3.26217365697687,0,0,0,0,0,2.34095846297323,0,0,3.07892001125609,0,2.5399644315568,-11.7762926609346,1.12754844408142,0.222603356089996,-10.6861328786558,0,0,-6.07027590356717,-1.01090793399559,-6.77935405399092,0,3.18456458996468,3.28484867217818,0,0,2.71282910838948,0],"Archive210_field24":[0,0,0,0,6688.84042543251,0,0,8993.34231143498,0,6932.28753155273,3608.30633819662,6740.52474104497,5282.87657981936,4015.4879293294,0,0,5110.18283464684,5497.45903128977,2814.85134073449,0,7875.66352106641,7765.28890666821,0,0,7689.22820911087,0,0,0,0,0,6688.84181072262,0,0,8993.34376052929,0,6932.28707441396,3608.31548583325,6740.52476672967,5282.87842561514,4015.49635723152,0,0,5110.18804104141,5497.46155518257,2814.85594638859,0,7875.6661337091,7765.28995828434,0,0,7689.23223039434,0,0,0,0,0,6688.84169290333,0,0,8993.3439430474,0,6932.28634415766,3608.33116718541,6740.52408334584,5282.87835649157,4015.50865023061,0,0,5110.19184896079,5497.46187421049,2814.86264028899,0,7875.66685198644,7765.28985251451,0,0,7689.2333755986,0],"Archive210_field25":[8819519.5749621,8498430.87597252,2094357.12096065,2704054.15768786,5562631.03729685,8366524.13336262,5210448.9939115,2566875.83184491,5777993.21064334,3816091.80763999,7163100.53504248,4121822.89451133,5350349.4444891,6904500.93047809,6739653.82873909,8310915.04431586,6675886.64511175,5822913.39865024,6436396.27466188,3681572.78316762,2497291.00482382,4016330.10922533,7412114.75771756,8550150.13517995,2797552.83907792,4289834.38459505,4409759.78748105,4249215.43798626,1047178.56048032,1352027.07884393,2781315.51864843,4183262.06668131,2605224.49695575,1283437.91592245,2888996.60532167,1908045.90382,3581550.26752124,2060911.44725567,2675174.72224455,3452250.46523904,3369826.91436955,4155457.52215793,3337943.32255587,2911456.69932512,3218198.13733094,1840786.39158381,1248645.50241191,2008165.05461266,3706057.37885878,4275075.06758997,1398776.41953896,2144917.19229752,-3.83512741564118e-10,-1.27837580521373e-10,1.27837580521373e-10,1.27837580521373e-10,-1.27837580521373e-10,0,-4.47431531824805e-10,-6.39187902606864e-11,5.11350322085491e-10,0,0,-1.91756370782059e-10,-5.11350322085491e-10,1.27837580521373e-10,2.55675161042745e-10,2.55675161042745e-10,1.27837580521373e-10,-1.27837580521373e-10,-3.83512741564118e-10,1.91756370782059e-10,3.19593951303432e-11,-2.55675161042745e-10,2.55675161042745e-10,-1.27837580521373e-10,6.39187902606864e-11,-6.39187902606864e-11],"Archive210_field26":[-870.038041480751,-853.386672167414,-210.152724861327,-269.906178397121,-555.423563422992,-818.396246179947,-518.781537630453,-263.870865649242,-572.457624047342,-381.289216157401,-708.756069727763,-411.227725749002,-531.80994849122,-681.960139448099,-668.920352467116,-817.671405837351,-661.358215817821,-578.093977797338,-637.408826594366,-368.538745892091,-260.041304074961,-403.087118889745,-737.810698093965,-837.75946770802,-289.319651149995,-428.047806753636,-870.038041480751,-853.386672167414,-210.152724861327,-269.906178397121,-555.423563422992,-818.396246179947,-518.781537630453,-263.870865649242,-572.457624047342,-381.289216157401,-708.756069727763,-411.227725749002,-531.80994849122,-681.960139448099,-668.920352467116,-817.671405837351,-661.358215817821,-578.093977797338,-637.408826594366,-368.538745892091,-260.041304074961,-403.087118889745,-737.810698093965,-837.75946770802,-289.319651149995,-428.047806753636,-870.038041480751,-853.386672167414,-210.152724861327,-269.906178397121,-555.423563422992,-818.396246179947,-518.781537630453,-263.870865649242,-572.457624047342,-381.289216157401,-708.756069727763,-411.227725749002,-531.80994849122,-681.960139448099,-668.920352467116,-817.671405837351,-661.358215817821,-578.093977797338,-637.408826594366,-368.538745892091,-260.041304074961,-403.087118889745,-737.810698093965,-837.75946770802,-289.319651149995,-428.047806753636],"Archive210_field27":[100.571463900719,98.6466600324383,24.2924632882232,31.1996236751307,64.2038143106185,94.6019652072785,59.9682039136619,30.5019757457139,66.1728551243384,44.0748712243016,81.9281825421406,47.5355931618257,61.4742143294104,78.8307249525611,77.3233995218258,94.5181777740013,76.4492594075126,66.8243856559627,73.6808458222495,42.6009891652799,30.0593001438886,46.5945851715517,85.2867328222032,96.840243813577,33.4437110380583,49.4798991449132,100.571463900719,98.6466600324383,24.2924632882232,31.1996236751307,64.2038143106185,94.6019652072785,59.9682039136619,30.5019757457139,66.1728551243384,44.0748712243016,81.9281825421406,47.5355931618258,61.4742143294104,78.8307249525611,77.3233995218258,94.5181777740013,76.4492594075126,66.8243856559627,73.6808458222495,42.6009891652799,30.0593001438886,46.5945851715517,85.2867328222032,96.840243813577,33.4437110380583,49.4798991449132,100.571463900719,98.6466600324383,24.2924632882232,31.1996236751307,64.2038143106185,94.6019652072785,59.9682039136619,30.5019757457139,66.1728551243384,44.0748712243016,81.9281825421406,47.5355931618257,61.4742143294104,78.8307249525611,77.3233995218258,94.5181777740013,76.4492594075126,66.8243856559627,73.6808458222495,42.6009891652799,30.0593001438886,46.5945851715517,85.2867328222032,96.840243813577,33.4437110380583,49.4798991449132],"Archive210_field28":[970.609505381471,952.033332199852,234.44518814955,301.105802072251,619.62737773361,912.998211387225,578.749741544114,294.372841394955,638.630479171681,425.364087381703,790.684252269904,458.763318910827,593.28416282063,760.79086440066,746.243751988942,912.189583611352,737.807475225334,644.9183634533,711.089672416615,411.139735057371,290.100604218849,449.681704061297,823.097430916168,934.599711521597,322.763362188053,477.527705898549,970.609505381471,952.033332199852,234.44518814955,301.105802072251,619.62737773361,912.998211387226,578.749741544114,294.372841394955,638.630479171681,425.364087381703,790.684252269903,458.763318910827,593.28416282063,760.790864400661,746.243751988942,912.189583611352,737.807475225334,644.9183634533,711.089672416615,411.139735057371,290.100604218849,449.681704061296,823.097430916168,934.599711521597,322.763362188053,477.527705898549,970.609505381471,952.033332199852,234.44518814955,301.105802072251,619.62737773361,912.998211387225,578.749741544114,294.372841394955,638.630479171681,425.364087381703,790.684252269904,458.763318910827,593.28416282063,760.79086440066,746.243751988942,912.189583611352,737.807475225334,644.9183634533,711.089672416615,411.139735057371,290.100604218849,449.681704061297,823.097430916168,934.599711521597,322.763362188053,477.527705898549],"Archive210_field29":[272.170981903825,272.323629617337,272.939583025527,272.88341820714,272.60385482013,272.10779032779,272.637262169129,272.907056390644,272.567244937491,272.771346868316,272.443085159547,272.741182945566,272.619866747646,272.467350765287,272.477459191633,272.181004281483,272.491992430529,272.574602397157,272.515329638142,272.78939181085,272.917712651631,272.758064643751,272.41609965602,272.020688815679,272.887607796044,272.730328907837,250.992247701747,246.523243645475,249.482065979663,248.514606356386,248.311332382652,254.505414849639,248.229974411402,251.764987665326,248.844110080025,247.542691715456,247.161923122625,247.266361634508,248.076275731969,247.546041706516,248.715250656877,251.82301643778,247.600261337763,248.185216547109,248.237221299391,248.973413234261,256.303281526366,248.679452938287,248.466039705752,255.360815541273,254.442051119712,248.458227032407,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive210_field30":[-8.24462844181214e-05,2.75238715352057,-2.3217185052448e-06,-1.14597693035258e-05,-7.77233170381985e-05,-0.000184557541164015,-7.34268528023273e-06,-0.0318101869429322,-8.67421875843771e-05,-2.70700099641399e-06,1.36061103014012,-2.09682699660486e-05,-4.85980032774435e-05,0.850476039733883,-9.19555605085798e-05,-0.000140870267105961,0.947300190950797,-0.000102843149254643,0.16167962651059,4.56866009523256e-10,0.0766314110922262,1.93356674327029e-06,-8.24461541573218e-05,-8.24431904149396e-05,0.235891702187433,0.142368460446063,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive211.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive211.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive211.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive211_field1":[0,0,0,0,669.556721764799,0,0,-148.178206295161,0,-556.404883208147,1515.0459466363,1330.00559251468,2782.31887061668,527.729403135759,0,0,513.677295876441,-7167.89772000007,745.722852232462,0,6442.23491938227,654.108616284192,0,0,-6894.13444277028,0,0,0,0,0,669.563323647155,0,0,-148.174759013309,0,-556.473778674538,1515.04456256066,1330.07235477956,2782.27935781278,527.725369014494,0,0,513.694070070075,-7167.84470963044,745.706283776469,0,6442.17576933824,654.116557281496,0,0,-6894.06405943422,0,0,0,0,0,669.562452106523,0,0,-148.174628556525,0,-556.539680512306,1515.06516680385,1330.13800401353,2782.22975720264,527.703890833844,0,0,513.731095556584,-7167.77332211247,745.652502345721,0,6442.11455003733,654.122095492734,0,0,-6893.99138318056,0],"Archive211_field2":[0,0,0,0,28205.9810492256,0,0,52462.1379950844,0,29775.7906026276,1319.42795622653,25478.4082211783,23601.0529305379,2516.44697208006,0,0,10260.4656961894,18162.2565107456,5262.45256091821,0,41166.6129263692,39071.6346770955,0,0,38650.9236785868,0,0,0,0,0,28206.0399547575,0,0,52462.206940777,0,29775.8057130212,1319.44602128561,25478.4300566812,23601.10301489,2516.51407036934,0,0,10260.5386307029,18162.3211876616,5262.47689543873,0,41166.6793865937,39071.7154453832,0,0,38651.0190675468,0,0,0,0,0,28206.0421411307,0,0,52462.2688180128,0,29775.8171003125,1319.47294919162,25478.4449123351,23601.113490735,2516.59460870585,0,0,10260.6194652872,18162.348941932,5262.50646089957,0,41166.7302540179,39071.7828471835,0,0,38651.087246968,0],"Archive211_field3":[0,0,0,0,-22.521253894954,0,0,-133.122889246551,0,-40.3553132745835,7.9214317122135,-31.2671294663221,-4.24353787336622,11.0557499919777,0,0,17.92116684751,2.83422406000335,7.00786010784396,0,-78.890121583615,-67.5597645999435,0,0,-76.0575423092102,0,0,0,0,0,-51.7145972180121,0,0,-149.651206380445,0,-42.7181239043586,-3.57881789315205,-37.2569553148725,-30.0110301593354,-16.2671937718337,0,0,-20.0451282817449,-23.0201475350145,-8.85697796341666,0,-89.0619867209963,-76.5270718524241,0,0,-88.4408890230176,0,0,0,0,0,-73.5357778492418,0,0,-161.838080906554,0,-44.0021893151741,-12.4998553200973,-41.2894614749579,-49.6759042180283,-37.216104449324,0,0,-49.2681509161348,-42.8086136565683,-21.048894944823,0,-96.8288280494436,-83.1480192145805,0,0,-97.8154789578502,0],"Archive211_field4":[0,0,0,0,28213.9359246422,0,0,52462.5161567737,0,29781.0161169309,2009.05876000967,25513.1177631138,23764.4906475072,2571.21098236469,0,0,10273.3315840189,19525.5301418253,5315.03138639459,0,41667.7169309442,39077.1679980024,0,0,39261.0338079968,0,0,0,0,0,28214.0333765542,0,0,52462.6296361486,0,29781.0358074404,2009.05715139429,25513.1510931688,23764.5543321622,2571.30351243519,0,0,10273.4091905725,19525.5842071973,5315.05591529843,0,41667.7939468737,39077.2654200397,0,0,39261.1412978061,0,0,0,0,0,28214.0839768924,0,0,52462.727691366,0,29781.0502937676,2009.12607112989,25513.1755585275,23764.5918988709,2571.5957807165,0,0,10273.5903558915,19525.6171749599,5315.11194249402,0,41667.8520625292,39077.3464319978,0,0,39261.2178928778,0],"Archive211_field5":[-16659529.5981643,8366066.1,2046543.35658051,2601216.6310623,5344428.07538724,8191681.58075236,4865632.5781063,2242643.19308997,5166648.41170387,3803849.66352075,7254282.64508446,4112208.04508918,5281622.0770052,7117582.80438685,6914041.32989399,7783979.27513614,6670524.5004218,5915911.61982889,6588193.87770292,3828779.78716526,2157824.23888729,3895240.57465688,21496218.1780512,20960470.8774407,2479500.42998753,4658458.58541871,-21155280.2933973,4183033.05,1012493.10803951,1253190.11723739,2572105.02514495,3854092.22644533,2257832.00101768,1045602.42812861,2245357.40599892,1906044.52646845,3615396.80118391,2055196.21625385,2586744.81003492,3595980.31183905,3517654.62917089,3522779.22133109,3285147.81664315,2975109.38540291,3323234.04675136,2002663.92335938,1039173.22085279,1913335.33836635,17785835.1250549,16541521.9567699,1203549.20367948,2517255.25680793,-25650223.0215323,0,-21367.6416684629,-94288.0536143739,-202774.085238297,-482353.290839728,-349577.922873406,-153627.434763907,-674966.371872387,9274.38044505891,-26233.6446417982,-1516.00473189734,-111172.773292149,71334.41862126,121079.308803823,-738167.470343252,-103866.230127215,31291.3436268487,55510.7408747512,174706.22641527,-81756.0565021889,-69741.1810983018,14075586.6222839,12122755.3879982,-74628.2100035368,374100.738679937],"Archive211_field6":[-896.335587700229,-834.022883982924,-211.064962438774,-271.958385532447,-520.946613704164,-862.664742823511,-520.002062364609,-263.547452491778,-581.794330564747,-379.640207221925,-703.845340339207,-404.892027681858,-507.372453147048,-656.670977534065,-676.349021978205,-848.970312695245,-622.448675526161,-551.818349289518,-625.798199001765,-368.531383273361,-264.021518521102,-392.929300465407,-741.160898417677,-882.018850331817,-287.857459917722,-430.761454579486,-896.335587700229,-834.022883982924,-211.064962438774,-271.958385532447,-520.946613704164,-862.664742823511,-520.002062364609,-263.547452491778,-581.794330564747,-379.640207221925,-703.845340339206,-404.892027681857,-507.372453147048,-656.670977534065,-676.349021978205,-848.970312695245,-622.448675526161,-551.818349289518,-625.798199001765,-368.531383273361,-264.021518521102,-392.929300465407,-741.160898417677,-882.018850331817,-287.857459917722,-430.761454579486,-896.335587700229,-834.022883982924,-211.064962438774,-271.958385532447,-520.946613704164,-862.664742823511,-520.002062364609,-263.547452491778,-581.794330564747,-379.640207221925,-703.845340339207,-404.892027681858,-507.372453147048,-656.670977534065,-676.349021978205,-848.970312695245,-622.448675526161,-551.818349289518,-625.798199001765,-368.531383273361,-264.021518521102,-392.929300465407,-741.160898417677,-882.018850331817,-287.857459917722,-430.761454579486],"Archive211_field7":[103.61131111911,96.4083159238712,24.3979127791822,31.4368471825948,60.2184744303614,99.7191523874506,60.1092896517433,30.4645910186788,67.2521254524135,43.8842551423381,81.3605300719257,46.8032223928865,58.6493784444788,75.9074412416694,78.1821115918099,98.1361539211516,71.9515371927732,63.7870720007513,72.3387231125268,42.6001380883057,30.5193903633989,45.4203989632859,85.6739969817598,101.956377464747,33.2746900232045,49.7935814453931,103.61131111911,96.4083159238712,24.3979127791822,31.4368471825948,60.2184744303614,99.7191523874506,60.1092896517433,30.4645910186788,67.2521254524135,43.8842551423381,81.3605300719257,46.8032223928865,58.6493784444788,75.9074412416694,78.1821115918099,98.1361539211516,71.9515371927732,63.7870720007513,72.3387231125268,42.6001380883057,30.5193903633989,45.4203989632859,85.6739969817598,101.956377464747,33.2746900232045,49.7935814453931,103.61131111911,96.4083159238712,24.3979127791822,31.4368471825948,60.2184744303614,99.7191523874506,60.1092896517433,30.4645910186788,67.2521254524135,43.8842551423381,81.3605300719257,46.8032223928865,58.6493784444788,75.9074412416694,78.1821115918099,98.1361539211516,71.9515371927732,63.7870720007513,72.3387231125268,42.6001380883057,30.5193903633989,45.4203989632859,85.6739969817598,101.956377464747,33.2746900232045,49.7935814453931],"Archive211_field8":[999.946898819339,930.431199906795,235.462875217957,303.395232715042,581.165088134526,962.383895210962,580.111352016353,294.012043510457,649.046456017161,423.524462364263,785.205870411132,451.695250074744,566.021831591527,732.578418775734,754.531133570015,947.106466616397,694.400212718934,615.605421290269,698.136922114292,411.131521361667,294.540908884501,438.349699428693,826.834895399437,983.975227796564,321.132149940926,480.555036024879,999.946898819339,930.431199906795,235.462875217957,303.395232715042,581.165088134526,962.383895210962,580.111352016353,294.012043510457,649.04645601716,423.524462364263,785.205870411132,451.695250074744,566.021831591527,732.578418775734,754.531133570015,947.106466616397,694.400212718934,615.605421290269,698.136922114292,411.131521361667,294.540908884501,438.349699428693,826.834895399437,983.975227796564,321.132149940926,480.555036024879,999.946898819339,930.431199906795,235.462875217957,303.395232715042,581.165088134526,962.383895210962,580.111352016353,294.012043510457,649.046456017161,423.524462364263,785.205870411132,451.695250074744,566.021831591527,732.578418775734,754.531133570015,947.106466616397,694.400212718934,615.605421290269,698.136922114292,411.131521361667,294.540908884501,438.349699428693,826.834895399437,983.975227796564,321.132149940926,480.555036024879],"Archive211_field9":[271.857100893521,271.943898382898,272.837806118452,272.756360538106,272.338157304464,271.903652916215,272.391943784981,272.773730331249,272.3019959992,272.589933393398,272.097740658015,272.542600641134,272.363269531827,272.131043972792,272.168193393534,271.924514324133,272.166524520121,272.294575655735,272.202922220306,272.615812043541,272.790755251003,272.561787953138,272.078325987273,271.879918471,272.742709395277,272.527695934528,248.308550092096,248.247766752712,247.870721156611,248.233514698308,248.091205688558,248.343156854879,248.144586498866,247.729091286993,248.180618265683,248.259314642538,248.222355698871,248.167334106022,248.124852264878,248.231088461259,248.233472401723,248.310435728697,248.150510722549,248.182658243392,248.180714864171,248.04519644573,247.422061026693,248.094136976657,248.236985695889,248.311406094634,247.280308909924,248.149665013354,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive211_field10":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive211_field11":[0,0,0,0,2576.12647031371,0,0,628.960375632542,0,-4312.40720584675,1363.86653851333,6132.51521477094,8851.553033476,1098.35376995145,0,0,239.211100910461,-14401.8016203955,1219.38370840144,0,20083.6356878376,1169.77702154233,0,0,-19502.4036794689,0,0,0,0,0,2576.14970418229,0,0,628.971067940613,0,-4312.52662263897,1363.85891551979,6132.62580110331,8851.49844344945,1098.35342953118,0,0,239.232167626664,-14401.7428511634,1219.36672370881,0,20083.4705878154,1169.79234284609,0,0,-19502.2169589839,0,0,0,0,0,2576.15432668139,0,0,628.973782372083,0,-4312.64747765472,1363.87476283944,6132.74480878374,8851.41536144506,1098.32770172354,0,0,239.298436580661,-14401.6374347627,1219.29049165857,0,20083.2911233419,1169.80157729817,0,0,-19502.0161227405,0],"Archive211_field12":[0,0,0,0,52870.946809758,0,0,138552.693206291,0,59063.8412495351,1187.21206358309,50012.8033575163,41796.9435452913,5230.65504936149,0,0,14973.6883461648,25225.0560862849,8057.17534373987,0,100500.737380069,86963.8386627072,0,0,92145.9644138801,0,0,0,0,0,52871.0579632235,0,0,138552.926232374,0,59063.8720188114,1187.22412616545,50012.8482147411,41797.0390174059,5230.72833374306,0,0,14973.7694087299,25225.166077063,8057.20874175606,0,100500.934716354,86964.01986209,0,0,92146.2324750026,0,0,0,0,0,52871.0838181067,0,0,138553.113938379,0,59063.8981621537,1187.2472906185,50012.8773837197,41797.0857159921,5230.849765067,0,0,14973.8877501307,25225.2452613581,8057.24838939545,0,100501.085239163,86964.1693945965,0,0,92146.4230794399,0],"Archive211_field13":[0,0,0,0,-16.1012034433346,0,0,-275.116791299106,0,-61.2004947188293,7.42986727866037,-38.6633355068538,-3.38027036607297,21.1043566632542,0,0,35.0295985118846,14.8758468277383,10.6580618582602,0,-165.915850101427,-108.367783470988,0,0,-160.938537041382,0,0,0,0,0,-80.2150033249833,0,0,-333.633777056322,0,-77.9581843214884,-3.06550948769583,-65.6071914296553,-48.119673641013,-26.9784133007782,0,0,-29.3161224294819,-34.3550395447939,-13.0323400781191,0,-204.895019796281,-141.682579096117,0,0,-201.719179407765,0,0,0,0,0,-127.87178707036,0,0,-374.865782790129,0,-89.7331217137147,-10.8441491778285,-85.0157511851023,-81.160270765621,-62.989316896097,0,0,-77.8176521168012,-71.7162724122863,-30.8767577514227,0,-232.923827843623,-166.069424116656,0,0,-230.869233348023,0],"Archive211_field14":[0,0,0,0,52933.6726800631,0,0,138554.393922096,0,59221.0937467375,1808.22001474415,50387.3966125509,42723.9334829897,5344.77114975446,0,0,14975.6399433093,29046.7823650102,8148.93150924507,0,102487.941556305,86971.7733337086,0,0,94187.304920853,0,0,0,0,0,52933.8431619664,0,0,138554.75554327,0,59221.152818938,1808.20951898295,50387.4824740298,42724.042538364,5344.86922125973,0,0,14975.7090573661,29046.8652531592,8148.96544090148,0,102488.173228337,86972.0026137871,0,0,94187.6070206683,0,0,0,0,0,52933.9628821617,0,0,138555.048678839,0,59221.2043647283,1808.26659908397,50387.5549195096,42724.1210002075,5345.28583511844,0,0,14976.0019258227,29046.9499693471,8149.04131083122,0,102488.34553306,86972.1954033354,0,0,94187.8188503676,0],"Archive211_field15":[-25529606.1862691,8366066.1,2074666.89361967,2637548.59751666,5089185.45884067,8406281.53674139,4784525.99206956,2523415.24937002,5248069.22174749,3779898.85775913,6905798.10946642,4017063.52092871,5024553.80220286,6560773.53405091,6820871.41332688,7887175.07722118,6110523.10482744,5599428.77989684,6348836.51685942,4001722.51067455,2568342.17487501,3891917.56217788,26494509.3720886,25454843.553629,2818819.98095965,4684525.68711022,-30026695.9578359,4183033.05,1016876.73776923,1274469.8953447,2470851.68220393,4076984.21181894,2176741.30511955,1196544.16057213,2331297.9859958,1874344.99570177,3369501.66557958,1983075.42696159,2473159.82270396,3256033.84110934,3428253.67560725,3623015.41890933,2975771.55942408,2823080.17664827,3201249.89465601,2149023.71444715,1237938.32948039,1917410.4467096,22771881.0800629,21027143.59577,1369315.66966972,2518979.89402259,-34524156.6529179,0,-40311.7762735488,-87853.7284377222,-149432.665844543,-252445.255387831,-430455.465091316,-132645.188511038,-584413.913097883,-31455.1588567283,-168765.507043498,-51934.7200695937,-80482.9613625731,-53114.3879260468,36197.6219929725,-642829.286035893,-163917.38605941,43696.0624835923,50426.9646746691,294813.426206552,-95151.9490497248,-58229.0667207014,19047865.0244284,16598895.5491288,-82694.1283898163,351683.671565389],"Archive211_field16":[-896.822230949515,-834.923848637816,-225.487997162521,-281.611786020984,-453.562458777223,-856.053006815708,-517.781695868976,-268.66516894809,-577.333601635796,-361.382454751773,-682.513832001162,-373.558451730925,-461.969156445246,-586.508368789466,-676.407099262361,-847.110306101305,-545.997079848635,-490.669867164326,-591.014548664966,-377.511623862307,-286.727757769137,-359.492873468697,-745.054133394939,-885.829105030692,-299.721979916158,-437.053986454578,-896.822230949515,-834.923848637816,-225.487997162521,-281.611786020984,-453.562458777223,-856.053006815708,-517.781695868976,-268.66516894809,-577.333601635796,-361.382454751773,-682.513832001162,-373.558451730925,-461.969156445246,-586.508368789466,-676.407099262361,-847.110306101305,-545.997079848635,-490.669867164326,-591.014548664966,-377.511623862307,-286.727757769137,-359.492873468697,-745.054133394939,-885.829105030692,-299.721979916158,-437.053986454578,-896.822230949515,-834.923848637816,-225.487997162521,-281.611786020984,-453.562458777223,-856.053006815708,-517.781695868976,-268.66516894809,-577.333601635796,-361.382454751773,-682.513832001162,-373.558451730925,-461.969156445246,-586.508368789466,-676.407099262361,-847.110306101305,-545.997079848635,-490.669867164326,-591.014548664966,-377.511623862307,-286.727757769137,-359.492873468697,-745.054133394939,-885.829105030692,-299.721979916158,-437.053986454578],"Archive211_field17":[103.667564319137,96.5124623289078,26.065133805046,32.5527255378673,52.4292482337902,98.95487319789,59.8526278758032,31.0561700201718,66.7364904835272,41.7737624903904,78.89472867189,43.1812386951779,53.4010148126456,67.7970415394585,78.1888249965216,97.9211477063668,63.1141662638553,56.7186542196494,68.3179303800288,43.6382029764499,33.1441028609908,41.5553376092496,86.1240328678991,102.396821301258,34.6461612553029,50.5209624473122,103.667564319137,96.5124623289078,26.065133805046,32.5527255378673,52.4292482337902,98.9548731978899,59.8526278758032,31.0561700201718,66.7364904835272,41.7737624903904,78.89472867189,43.1812386951779,53.4010148126456,67.7970415394585,78.1888249965216,97.9211477063668,63.1141662638553,56.7186542196494,68.3179303800288,43.6382029764499,33.1441028609908,41.5553376092496,86.1240328678991,102.396821301258,34.6461612553029,50.5209624473122,103.667564319137,96.5124623289078,26.065133805046,32.5527255378673,52.4292482337902,98.95487319789,59.8526278758032,31.0561700201718,66.7364904835272,41.7737624903904,78.89472867189,43.1812386951779,53.4010148126456,67.7970415394585,78.1888249965216,97.9211477063668,63.1141662638553,56.7186542196494,68.3179303800288,43.6382029764499,33.1441028609908,41.5553376092496,86.1240328678991,102.396821301258,34.6461612553029,50.5209624473122],"Archive211_field18":[1000.48979526865,931.436310966723,251.553130967567,314.164511558852,505.991707011013,955.007880013598,577.63432374478,299.721338968262,644.070092119323,403.156217242164,761.408560673052,416.739690426103,515.370171257891,654.305410328925,754.595924258883,945.031453807671,609.11124611249,547.388521383975,659.332479044994,421.149826838757,319.871860630128,401.048211077946,831.178166262838,988.22592633195,334.368141171461,487.57494890189,1000.48979526865,931.436310966723,251.553130967567,314.164511558852,505.991707011013,955.007880013598,577.63432374478,299.721338968262,644.070092119323,403.156217242164,761.408560673052,416.739690426103,515.370171257891,654.305410328925,754.595924258883,945.031453807672,609.11124611249,547.388521383975,659.332479044995,421.149826838757,319.871860630128,401.048211077946,831.178166262838,988.22592633195,334.368141171461,487.57494890189,1000.48979526865,931.436310966723,251.553130967567,314.164511558852,505.991707011013,955.007880013598,577.63432374478,299.721338968262,644.070092119323,403.156217242164,761.408560673052,416.739690426103,515.370171257891,654.305410328925,754.595924258883,945.031453807671,609.11124611249,547.388521383975,659.332479044994,421.149826838757,319.871860630128,401.048211077946,831.178166262838,988.22592633195,334.368141171461,487.57494890189],"Archive211_field19":[274.725799928643,272.330126499341,272.949439815298,272.893312368928,272.392187864306,272.248077838423,272.673168841812,272.467433145513,272.63929722002,272.583057313969,272.333320319225,272.561519149059,272.517786646597,272.042951574754,272.468350556292,272.326764173724,272.30980044344,272.425956045796,272.412972725101,272.774784116594,272.866740954824,272.416895244122,271.043372423978,271.09587769523,272.816374147088,272.693475247748,247.514337374315,248.102968004251,248.394438401993,248.17314607432,249.86312830858,248.60477012587,248.343694012229,257.284851487395,248.150678705288,247.640465066079,249.311104189683,247.907842945539,247.961843732897,254.012959952168,247.995258750889,248.516275348841,250.002861419974,248.096363528385,249.178172641237,248.256686351215,254.887089566188,250.371717179608,248.273000827001,248.200194690392,254.904696826693,248.238505231305,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive211_field20":[-6.04625892789981e-05,0.690679727470659,-0.0304896471445948,-4.48540275006307e-05,1.08490415012009e-08,-4.11219147063128e-05,-0.0638245507084807,1.10287972110135e-08,-6.41726421386506e-05,-9.28205737147436e-05,-0.000120895903996996,-8.96778690985322e-05,3.38924033846063e-06,3.2245377017425e-09,-1.9474770834363e-05,-2.09225137803601e-05,8.28661634041383e-09,1.64376838533708e-08,2.90249247402895e-06,1.62659187712018,9.29441196922408e-07,1.10565053910909e-08,0.638144515486391,1.35760457288566,6.79307771483712e-09,1.48054167257593,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive211_field21":[0,0,0,0,2702.98979125624,0,0,215.892075329491,0,-8907.43788333099,1341.66845957786,10153.1302533407,12548.474537998,677.753401970609,0,0,-607.127235488708,-20048.7319854707,1334.31192933227,0,41126.7143914046,-256.101651769621,0,0,-39635.5146856453,0,0,0,0,0,2703.01693536911,0,0,215.900003366637,0,-8907.58578347266,1341.64994713726,10153.2627385235,12548.391589526,677.742298267972,0,0,-607.071822084317,-20048.6422612657,1334.27166205849,0,41126.4609666263,-256.081906326172,0,0,-39635.2348488005,0,0,0,0,0,2703.02940007896,0,0,215.903125037503,0,-8907.74408830346,1341.66292736722,10153.4106302989,12548.2825577154,677.706816692304,0,0,-606.967246373565,-20048.5088294782,1334.16308943493,0,41126.1647266934,-256.068553232751,0,0,-39634.9131561707,0],"Archive211_field22":[0,0,0,0,71880.1065510891,0,0,227019.626021092,0,81516.2622637872,1167.37342844641,66821.176290674,56957.9090456128,6371.59859199199,0,0,18923.0017090785,30315.4560375315,10344.662963854,0,167794.731670795,128444.671072534,0,0,147680.918174577,0,0,0,0,0,71880.2133548113,0,0,227020.042924503,0,81516.2974592825,1167.38121679227,66821.2271011239,56958.0197646219,6371.7272413448,0,0,18923.1387293166,30315.5976556103,10344.7185367861,0,167795.04980243,128444.862843953,0,0,147681.35537979,0,0,0,0,0,71880.2459753524,0,0,227020.380649048,0,81516.3312683631,1167.40208065277,66821.2636534417,56958.0762898062,6371.8898438899,0,0,18923.2941440779,30315.702283373,10344.7749567942,0,167795.300333928,128445.041618693,0,0,147681.676560385,0],"Archive211_field23":[0,0,0,0,-41.0135792602724,0,0,-378.943243505534,0,-65.5132283140678,7.99383009683664,-39.383951935443,-15.7786564295518,16.2466937637284,0,0,29.4550487081535,7.80823096095569,11.1446375697429,0,-212.872506545332,-133.505494083964,0,0,-224.049341537934,0,0,0,0,0,-120.279888416105,0,0,-494.508660276075,0,-100.020658753531,-2.34868070940905,-83.5295266448474,-71.4273648762107,-44.1412052045667,0,0,-46.154164289682,-48.781525310686,-20.7340574787957,0,-300.712609616882,-189.875328854329,0,0,-304.663661633281,0,0,0,0,0,-178.352112396001,0,0,-575.821807924044,0,-124.675316776562,-9.88719939576406,-115.391870967917,-112.037593544349,-88.632844541434,0,0,-102.415869458848,-91.640158000267,-44.6094897328521,0,-363.284964427437,-231.568755264515,0,0,-361.733971382046,0],"Archive211_field24":[0,0,0,0,71930.9220969761,0,0,227020.04494345,0,82001.5106878344,1778.45406974382,67588.1439744154,58323.8190197202,6407.56445511204,0,0,18932.7616781534,36345.2691551076,10430.3674126772,0,172761.465401895,128444.995771359,0,0,152907.41582863,0,0,0,0,0,71931.1187160164,0,0,227020.684170121,0,82001.596570386,1778.42880157568,67588.2542511588,58323.9509023489,6407.82264946166,0,0,18932.9301951127,36345.3696827294,10430.4320320224,0,172761.844624075,128445.258462838,0,0,152907.904924102,0,0,0,0,0,71931.2723291535,0,0,227021.213579155,0,82001.6811542961,1778.47822176598,67588.3594929935,58324.0465177616,6408.44150267364,0,0,18933.3029213548,36345.4661428125,10430.5488859648,0,172762.137678502,128445.505610824,0,0,152908.256101656,0],"Archive211_field25":[-27458404.4722536,8366066.1,2127816.83362211,2656025.69901489,4417452.40617697,8310387.39682659,4727917.10570617,2568528.23677093,5199124.76273353,3610480.15164571,6676716.89483096,3716712.23341271,4573559.42082982,5891478.05215286,6803498.94010136,7832078.65895365,5369250.32907167,5001115.54796894,6019120.49740637,4072539.81809563,2800919.23977701,3562480.46744919,27563443.1392887,26490333.8492453,2950487.37968196,4709107.36965201,-31958367.1179508,4183033.05,998282.158299808,1244635.38270375,2138191.62117729,4013793.34550729,2131546.81898634,1216172.88434201,2304304.36370864,1795972.74273667,3248415.94808982,1839942.13283611,2250565.68443526,2940450.31361205,3409788.90229629,3578214.98958044,2618983.12213339,2532433.92791331,3046040.41685979,2174273.47733401,1355420.01865073,1755771.61376346,23820131.294695,22042413.0700452,1440887.15210709,2512006.36072673,-36459054.8158344,0,-130344.943884158,-165896.343970675,-142672.382523038,-283099.614874347,-464101.242199777,-138432.550478892,-589613.671463252,-19037.6111114416,-181512.553129889,-37879.4351686216,-74410.0223254372,-14542.0393597789,16367.8314879,-676916.437227598,-136093.632911786,61071.5160140602,69573.8184258023,274256.892072928,-93446.2815336385,-52026.4855508929,20074972.5394064,17593527.2779645,-71610.0052630896,313155.778115294],"Archive211_field26":[-897.951657129157,-836.791274963748,-241.999619656687,-291.325581184258,-375.395148433677,-844.756426527107,-513.433334949799,-230.335370141819,-569.174029932415,-321.821577891235,-657.799269241785,-324.617396730478,-407.466800575138,-504.459110750612,-676.593895028401,-843.188657683401,-466.509431326834,-424.387943127914,-545.790968541736,-386.230146367782,-264.525152517227,-299.643178878744,-751.451701394283,-892.40152608816,-269.965388354248,-441.170411604995,-897.951657129157,-836.791274963748,-241.999619656687,-291.325581184258,-375.395148433677,-844.756426527107,-513.433334949799,-230.335370141819,-569.174029932415,-321.821577891235,-657.799269241785,-324.617396730478,-407.466800575138,-504.459110750611,-676.593895028401,-843.188657683401,-466.509431326834,-424.387943127914,-545.790968541736,-386.230146367782,-264.525152517227,-299.643178878744,-751.451701394283,-892.40152608816,-269.965388354248,-441.170411604995,-897.951657129157,-836.791274963748,-241.999619656687,-291.325581184258,-375.395148433677,-844.756426527107,-513.433334949799,-230.335370141819,-569.174029932415,-321.821577891235,-657.799269241785,-324.617396730478,-407.466800575138,-504.459110750612,-676.593895028401,-843.188657683401,-466.509431326834,-424.387943127914,-545.790968541736,-386.230146367782,-264.525152517227,-299.643178878744,-751.451701394283,-892.40152608816,-269.965388354248,-441.170411604995],"Archive211_field27":[103.798119580906,96.7283262226361,27.9737837334884,33.6755851750615,43.3935504187238,97.6490525756525,59.3499820116453,26.6254626336236,65.7932902648157,37.2007494618003,76.0378653649174,37.5239302654642,47.1008515386747,58.3126125840402,78.2104175278195,97.4678273876123,53.9258448425784,49.056839663641,63.090340965566,44.6460147382605,30.5776075974112,34.6370523022321,86.863555450157,103.156555905502,31.2064680104147,50.9967978518315,103.798119580906,96.7283262226361,27.9737837334884,33.6755851750615,43.3935504187238,97.6490525756525,59.3499820116453,26.6254626336236,65.7932902648157,37.2007494618003,76.0378653649174,37.5239302654642,47.1008515386747,58.3126125840402,78.2104175278195,97.4678273876123,53.9258448425784,49.056839663641,63.090340965566,44.6460147382605,30.5776075974112,34.6370523022321,86.863555450157,103.156555905502,31.2064680104147,50.9967978518315,103.798119580906,96.7283262226361,27.9737837334884,33.6755851750615,43.3935504187238,97.6490525756525,59.3499820116453,26.6254626336236,65.7932902648157,37.2007494618003,76.0378653649174,37.5239302654642,47.1008515386747,58.3126125840402,78.2104175278195,97.4678273876123,53.9258448425784,49.056839663641,63.090340965566,44.6460147382605,30.5776075974112,34.6370523022321,86.863555450157,103.156555905502,31.2064680104147,50.9967978518315],"Archive211_field28":[1001.74977671006,933.519601186384,269.973403390175,325.00116635932,418.788698852401,942.40547910276,572.783316961445,256.960832775443,634.967320197231,359.022327353035,733.837134606702,362.141326995942,454.567652113813,562.771723334652,754.804312556221,940.656485071013,520.435276169412,473.444782791555,608.881309507302,430.876161106042,295.102760114638,334.280231180976,838.31525684444,995.558081993661,301.171856364663,492.167209456826,1001.74977671006,933.519601186384,269.973403390175,325.00116635932,418.788698852401,942.40547910276,572.783316961445,256.960832775443,634.967320197231,359.022327353035,733.837134606702,362.141326995942,454.567652113813,562.771723334652,754.804312556221,940.656485071013,520.435276169412,473.444782791555,608.881309507302,430.876161106042,295.102760114638,334.280231180976,838.31525684444,995.558081993661,301.171856364663,492.167209456826,1001.74977671006,933.519601186384,269.973403390175,325.00116635932,418.788698852401,942.40547910276,572.783316961445,256.960832775443,634.967320197231,359.022327353035,733.837134606702,362.141326995942,454.567652113813,562.771723334652,754.804312556221,940.656485071013,520.435276169412,473.444782791555,608.881309507302,430.876161106042,295.102760114638,334.280231180976,838.31525684444,995.558081993661,301.171856364663,492.167209456826],"Archive211_field29":[275.637359572332,272.330127505423,272.946685280316,272.8704734118,272.293648080157,272.163926344555,272.681120922121,272.054228257879,272.612669866421,272.335583535582,272.360539539135,272.346836985242,272.462366471046,272.05378635656,272.481555286676,272.303728676894,272.319606210927,272.356769576459,272.403343882522,272.757844379818,272.718794734359,272.08374022896,270.553538235015,270.655429315117,272.669592211677,272.690928226135,247.220712964625,248.013628544694,250.06262171613,249.071110770644,251.876860736809,249.912232472654,248.542407868998,260.043753052456,248.407670851691,248.068380672554,250.39945581094,248.683819205811,248.499314300052,257.510044020533,247.631637193709,249.144831785017,251.759837433008,248.657408694622,250.705196350522,248.479787938857,260.513698476048,252.685365871219,248.358924465467,247.976596558115,260.929457721849,247.829248293306,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive211_field30":[-4.52051759317594e-05,1.49394024743102,-0.236938699257002,-0.00012831839896832,3.38657449932235e-08,-4.35192345782766e-05,0.256052078539604,3.28323458535276e-08,-0.000129973117372547,-0.00028895200624138,-9.03827236042115e-05,-0.000256554095314514,-1.35572100892799e-05,5.49477402027685e-09,-0.126807064129744,-3.75752180493952e-05,6.91907667252604e-09,3.07944643497615e-08,-4.91022385866459e-06,4.75091260061366,7.19659951633556e-06,3.30489216835342e-08,0.0554420593585992,1.4366903325404,1.94338188477607e-08,4.23553352830723,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive212.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive212.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive212.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive212_field1":[-2654135.68254118,0,-1724584.07924439,-1940935.32099368,-5184653.01007489,-9443597.60547885,-4706240.69878333,-1123764.73283462,-5565268.74979662,-6573535.12808571,-10000000,-7001746.0738235,-5596811.811031,-9364822.05219583,-2645598.63218068,-6548978.92037025,-7006684.62748934,-5504029.63569424,-6363375.92990492,-2464519.28862318,-1035657.00843178,-1510056.98931699,-1519245.92538965,-3593539.21264747,-1147450.84829594,-2630895.7634962],"Archive212_field2":[1528.77374700903,957.527536144722],"Archive212_field3":[176219146.344361,181573028.48017,178120128.569411,177707972.483338,171202777.375428,162824524.042428,172213054.806355,179312901.841495,170424338.020215,168427916.102084,161573028.48017,167560621.946691,170449202.9474,163031716.042152,176334446.849275,168633490.24074,167676920.126947,170579275.924803,168992117.920847,176658314.462329,179496878.538084,178504494.727719,178483826.036183,174351170.35503,179289830.175682,176331296.255285],"Archive212_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4272990.75],"Archive212_field5":[0,0,0,0,6795.54692753907,0,0,8786.8763328609,0,6984.23537744663,3567.67058807958,6814.93452731455,5362.40898616722,4097.42450223929,0,0,5227.88070713987,5594.80265932319,2826.97905259064,0,7693.13531915833,7756.99803389598,0,0,7534.29803343707,0],"Archive212_field6":[0,0,0,0,492.70182272569,0,0,260.932309817382,0,151.81138180451,1172.98833444802,509.005692888423,183.806649929954,64.1996973269727,0,0,619.893353490839,496.582959015327,-189.233986305191,0,705.241425792151,362.871403826956,0,0,-292.520672115691,0],"Archive212_field7":[0,0,0,0,6777.6620569536,0,0,8783.00119655487,0,6982.58527423273,3369.32809211228,6795.89919114396,5359.25790108747,4096.92152114414,0,0,5190.99883629183,5572.72125281584,2820.63841394343,0,7660.74184202992,7748.50584578412,0,0,7528.61730419595,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive213.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive213.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive213.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive213_field1":[-2654135.68254118,0,-1724584.07924439,-1940935.32099368,-5184653.01007489,-9443597.60547885,-4706240.69878332,-1123764.73283462,-5565268.74979662,-6573535.12808571,-10000000,-7001746.07382349,-5596811.811031,-9364822.05219584,-2645598.63218068,-6548978.92037025,-7006684.62748934,-5504029.63569423,-6363375.92990492,-2464519.28862318,-1035657.00843178,-1510056.98931699,-1519245.92538965,-3593539.21264747,-1147450.84829594,-2630895.7634962,-1327067.84127059,0,-862292.039622193,-970467.660496842,-2592326.50503744,-4721798.80273942,-2353120.34939166,-561882.366417308,-2782634.37489831,-3286767.56404286,-5000000,-3500873.03691175,-2798405.9055155,-4682411.02609792,-1322799.31609034,-3274489.46018512,-3503342.31374467,-2752014.81784712,-3181687.96495246,-1232259.64431159,-517828.504215888,-755028.494658497,-759622.962694823,-1796769.60632374,-573725.42414797,-1315447.8817481,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive213_field2":[1528.77374700904,957.527536144717],"Archive213_field3":[176219146.344361,181573028.48017,178120128.569411,177707972.483338,171202777.375428,162824524.042428,172213054.806355,179312901.841495,170424338.020215,168427916.102084,161573028.48017,167560621.946691,170449202.9474,163031716.042152,176334446.849275,168633490.24074,167676920.126947,170579275.924803,168992117.920847,176658314.462329,179496878.538084,178504494.727719,178483826.036183,174351170.35503,179289830.175682,176331296.255285,176219146.344361,181573028.48017,178120128.569411,177707972.483338,171202777.375428,162824524.042428,172213054.806355,179312901.841495,170424338.020215,168427916.102084,161573028.48017,167560621.946691,170449202.9474,163031716.042152,176334446.849275,168633490.24074,167676920.126947,170579275.924803,168992117.920847,176658314.462329,179496878.538084,178504494.727719,178483826.036183,174351170.35503,179289830.175682,176331296.255285,176219146.344361,181573028.48017,178120128.569411,177707972.483338,171202777.375428,162824524.042428,172213054.806355,179312901.841495,170424338.020215,168427916.102084,161573028.48017,167560621.946691,170449202.9474,163031716.042152,176334446.849275,168633490.24074,167676920.126947,170579275.924803,168992117.920847,176658314.462329,179496878.538084,178504494.727719,178483826.036183,174351170.35503,179289830.175682,176331296.255285],"Archive213_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4272990.75,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2136495.375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive213_field5":[0,0,0,0,6795.54827768398,0,0,8786.87807138866,0,6984.23675768352,3567.67125885916,6814.93588146582,5362.41004780631,4097.4253111824,0,0,5227.88174620027,5594.80377159047,2826.97959920236,0,7693.13684866535,7756.99957188795,0,0,7534.29950290405,0,0,0,0,0,6795.54785123309,0,0,8786.87769568302,0,6984.23634516024,3567.67401750517,6814.93516263643,5362.40930832376,4097.42668647936,0,0,5227.88091909227,5594.80279504571,2826.98019807891,0,7693.13676619673,7756.99922561223,0,0,7534.29933092527,0,0,0,0,0,6795.54750547756,0,0,8786.87736565956,0,6984.23600568338,3567.69104332415,6814.93471261169,5362.40899715402,4097.43936514982,0,0,5227.88447116135,5594.80276033916,2826.9873462983,0,7693.13668601343,7756.99892344128,0,0,7534.29916964609,0],"Archive213_field6":[0,0,0,0,492.70182272569,0,0,260.932309817381,0,151.811381804509,1172.98833444802,509.00569288842,183.806649929955,64.1996973269731,0,0,619.893353490838,496.582959015328,-189.233986305191,0,705.24142579215,362.871403826954,0,0,-292.520672115691,0,0,0,0,0,492.70182272569,0,0,260.932309817381,0,151.811381804509,1172.98833444802,509.00569288842,183.806649929955,64.1996973269731,0,0,619.893353490838,496.582959015328,-189.233986305191,0,705.24142579215,362.871403826954,0,0,-292.520672115691,0,0,0,0,0,492.70182272569,0,0,260.932309817381,0,151.811381804509,1172.98833444802,509.00569288842,183.806649929955,64.1996973269731,0,0,619.893353490838,496.582959015328,-189.233986305191,0,705.24142579215,362.871403826954,0,0,-292.520672115691,0],"Archive213_field7":[0,0,0,0,6777.66205695359,0,0,8783.00119655486,0,6982.58527423272,3369.32809211228,6795.89919114396,5359.25790108746,4096.92152114414,0,0,5190.99883629182,5572.72125281584,2820.63841394343,0,7660.74184202991,7748.50584578411,0,0,7528.61730419594,0,0,0,0,0,6777.66205695359,0,0,8783.00119655486,0,6982.58527423272,3369.32809211228,6795.89919114396,5359.25790108746,4096.92152114414,0,0,5190.99883629182,5572.72125281584,2820.63841394343,0,7660.74184202991,7748.50584578411,0,0,7528.61730419594,0,0,0,0,0,6777.66205695359,0,0,8783.00119655486,0,6982.58527423272,3369.32809211228,6795.89919114396,5359.25790108746,4096.92152114414,0,0,5190.99883629182,5572.72125281584,2820.63841394343,0,7660.74184202991,7748.50584578411,0,0,7528.61730419594,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive214.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive214.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive214.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive214_field1":[-2654865.66689173,0,-1724163.32254837,-1940452.30382749,-5178844.60086624,-9441147.23380304,-4703728.55068294,-1120225.19705511,-5565300.84425642,-6568182.12866215,-10000000,-6997399.29028831,-5593183.70300009,-9359541.70827588,-2643902.87501018,-6545447.60630619,-7003308.72164468,-5502307.51729703,-6359363.27545858,-2463399.1948418,-1034670.05280733,-1506455.81437022,-1520177.73343747,-3593964.05834525,-1146181.83308768,-2630263.13783746,-1327432.83344586,0,-862081.661274187,-970226.151913746,-2589422.30043312,-4720573.61690152,-2351864.27534147,-560112.598527557,-2782650.42212821,-3284091.06433107,-5000000,-3498699.64514416,-2796591.85150004,-4679770.85413794,-1321951.43750509,-3272723.80315309,-3501654.36082234,-2751153.75864852,-3179681.63772929,-1231699.5974209,-517335.026403664,-753227.907185109,-760088.866718737,-1796982.02917263,-573090.916543841,-1315131.56891873,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive214_field2":[1536.60030698667,963.360046271502],"Archive214_field3":[176217870.937337,181573028.48017,178120918.531343,177708823.227644,171213560.650245,162828403.160673,172217373.245844,179319670.88274,170424545.088599,168437915.136017,161573028.48017,167568986.045162,170455583.325437,163040519.947304,176337120.987808,168639046.515498,167682739.877703,170582639.617655,168998604.888936,176660279.067883,179498751.79268,178511569.226623,178482272.577785,174350346.319267,179292157.526615,176332415.634004,176217870.937337,181573028.48017,178120918.531343,177708823.227644,171213560.650245,162828403.160673,172217373.245844,179319670.88274,170424545.088599,168437915.136017,161573028.48017,167568986.045162,170455583.325437,163040519.947304,176337120.987808,168639046.515497,167682739.877703,170582639.617655,168998604.888936,176660279.067883,179498751.79268,178511569.226623,178482272.577785,174350346.319267,179292157.526615,176332415.634004,176217870.937337,181573028.48017,178120918.531343,177708823.227644,171213560.650245,162828403.160673,172217373.245844,179319670.88274,170424545.088599,168437915.136017,161573028.48017,167568986.045162,170455583.325437,163040519.947304,176337120.987808,168639046.515498,167682739.877703,170582639.617655,168998604.888936,176660279.067883,179498751.79268,178511569.226623,178482272.577785,174350346.319267,179292157.526615,176332415.634004],"Archive214_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4272990.75,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2136495.375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive214_field5":[0,0,0,0,6787.72497597023,0,0,8770.38444493127,0,6975.46140563339,3564.7048873799,6805.79212396351,5356.66837782272,4093.72525418762,0,0,5222.78611436699,5588.88830891744,2824.38771290936,0,7680.31785119249,7745.45624656738,0,0,7520.60612023482,0,0,0,0,0,6787.72668863921,0,0,8770.38552666038,0,6975.46163445072,3564.71907085772,6805.79291224083,5356.67111538969,4093.73768020561,0,0,5222.79420667242,5588.89197565361,2824.39518850125,0,7680.32018414095,7745.45736706532,0,0,7520.6098325573,0,0,0,0,0,6787.7269088373,0,0,8770.38574779022,0,6975.46121888485,3564.73866050752,6805.79251657446,5356.67163324164,4093.75282415634,0,0,5222.799744235,5588.89306051907,2824.40388083421,0,7680.32153473091,7745.45744283694,0,0,7520.61191299836,0],"Archive214_field6":[0,0,0,0,492.434865103837,0,0,260.660612463256,0,152.477641437341,1171.94917832932,507.92755689844,183.839960814458,64.3356225715711,0,0,619.432789578313,496.259126422273,-188.895434759464,0,703.858116201384,362.594065741279,0,0,-291.488382716075,0,0,0,0,0,492.434825646244,0,0,260.660680608332,0,152.475903700625,1171.9531800585,507.929576846954,183.83821729681,64.3356313655598,0,0,619.432859626892,496.261346829299,-188.89904814518,0,703.857671227536,362.594083639402,0,0,-291.487762791168,0,0,0,0,0,492.434816711343,0,0,260.66069604068,0,152.475510165706,1171.95408629867,507.930034292642,183.83782245576,64.3356333370042,0,0,619.432875512929,496.261849663964,-188.8998664244,0,703.85757045554,362.594087692594,0,0,-291.487622398381,0],"Archive214_field7":[0,0,0,0,6769.83751247292,0,0,8766.50836530883,0,6973.79331200661,3366.54886778502,6786.81056345211,5353.51170888822,4093.21887604154,0,0,5185.92199831765,5566.81120476262,2818.06340997493,0,7647.99598539144,7736.96285511651,0,0,7514.95368419877,0,0,0,0,0,6769.83965866971,0,0,8766.50981951586,0,6973.7939900633,3366.55957549176,6786.81192187121,5353.51524641038,4093.22993005559,0,0,5185.93097226362,5566.81566695998,2818.07006120175,0,7647.99845052369,7736.96432098675,0,0,7514.95759338305,0,0,0,0,0,6769.84022581208,0,0,8766.51036898885,0,6973.79392157724,3366.56199371438,6786.8119414783,5353.51608956214,4093.23241047237,0,0,5185.93297577983,5566.81674752398,2818.07156362782,0,7647.99989525167,7736.96469785964,0,0,7514.95984039932,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive215.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive215.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive215.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive215_field1":[-5.52692608315567e-09,0,-1238143.67904285,-1264579.09678905,-10000000,-1505912.55312059,-3437219.82187963,-1899643.74189759,-3136885.34431963,-4898433.10606544,-1979551.1528427,-7129471.75682753,-6853730.35664863,-7668087.28663111,-529716.14586739,-950871.920787026,-6138364.74213708,-7289235.64217615,-3885285.39762007,-1511725.2565209,-1060205.12544909,-1810478.68892796,-5.20163369821046e-09,-5.24866650350676e-09,-1020448.4290795,-1473012.221231,-2.76346304157784e-09,0,-619071.839521427,-632289.548394527,-5000000,-752956.276560294,-1718609.91093981,-949821.870948793,-1568442.67215982,-2449216.55303272,-989775.576421351,-3564735.87841376,-3426865.17832431,-3834043.64331555,-264858.072933695,-475435.960393513,-3069182.37106854,-3644617.82108807,-1942642.69881003,-755862.628260452,-530102.562724546,-905239.344463978,-2.60081684910523e-09,-2.62433325175338e-09,-510224.214539749,-736506.1106155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive215_field2":[7888.43460656872,7223.943445306],"Archive215_field3":[181573028.48017,181573028.48017,179081844.145067,179034793.810591,161573028.48017,178548663.437021,174651066.620542,177670110.154798,175289155.159619,171708915.004788,177604171.40539,167240914.194704,167815412.153937,166172496.699558,180497781.514741,179652126.125747,169266250.256637,166968717.544653,173723476.666579,178537795.608488,179423215.273926,177880764.375241,181573028.48017,181573028.48017,179511648.947054,178622184.561982,181573028.48017,181573028.48017,179081844.145067,179034793.810591,161573028.48017,178548663.437021,174651066.620542,177670110.154798,175289155.159619,171708915.004788,177604171.40539,167240914.194704,167815412.153937,166172496.699558,180497781.514741,179652126.125747,169266250.256637,166968717.544653,173723476.66658,178537795.608488,179423215.273926,177880764.375241,181573028.48017,181573028.48017,179511648.947054,178622184.561982,181573028.48017,181573028.48017,179081844.145067,179034793.810591,161573028.48017,178548663.437021,174651066.620542,177670110.154798,175289155.159619,171708915.004788,177604171.40539,167240914.194704,167815412.153937,166172496.699558,180497781.514741,179652126.125747,169266250.256637,166968717.544653,173723476.666579,178537795.608488,179423215.273926,177880764.375241,181573028.48017,181573028.48017,179511648.947054,178622184.561982],"Archive215_field4":[-50356225.5956121,8366066.1,2024734.2212826,2682784.8395114,5270015.06541149,8418453.62767966,4685230.31220161,2208526.98348215,5280942.10597332,3833508.42272899,6924980.73415288,4096583.48023936,5335690.82437918,6996029.40637628,6943343.31315891,7879990.62034927,6691353.84597807,5955307.98615791,6567145.08275592,3891101.64530215,2144157.16215441,3910430.29315311,40282068.9552252,38023588.9578568,2466117.6331453,4484581.05221449,-54853961.5916325,4183033.05,990211.543947992,1333409.79290262,2503813.88496526,4077991.24699325,2076451.62958556,1016585.57030034,2357312.18941934,1933154.78576923,3292930.72674399,2038803.47109209,2648204.93765894,3482057.43443238,3547437.83736448,3618240.78064649,3315131.35068171,3021845.53746671,3308991.43510123,2069455.33870827,1030931.78964485,1931361.82104719,36571337.6179501,33604298.9817023,1195466.31817304,2348082.0419358,-59351816.7891379,0,-44309.8254025251,-15964.3391003974,-262386.132226288,-262471.24656053,-532326.507393225,-175354.675862122,-566317.773560587,32800.5565452079,-339120.65001996,-18976.9312384467,-39281.6942493811,-31913.885686561,151528.679945879,-643509.076948406,-61090.9593128906,88383.2316194422,50839.0341617801,247808.631505292,-82294.1398552794,-47707.4310616992,32860611.1511243,29185121.6236591,-75185.3603063849,211582.921031506],"Archive215_field5":[0,0,0,0,3257.45134179062,0,0,5025.19490302352,0,3276.79411432387,0.110421813457403,2774.99810874156,2918.01138824096,442.522469838959,0,0,834.630745086216,1434.75162790212,614.548820444007,0,4129.58095751997,3689.94082055052,0,0,3770.76453737979,0,0,0,0,0,3257.46201308428,0,0,5025.20467773369,0,3276.79675385723,0.110420778516851,2775.00406835998,2918.01941105987,442.518909655877,0,0,834.629668988385,1434.75699483923,614.549433997542,0,4129.58641019719,3689.9484488351,0,0,3770.77253039546,0,0,0,0,0,3257.46862831594,0,0,5025.21502987846,0,3276.7989049052,0.110436924244747,2775.00846104634,2918.02384268002,442.542604477191,0,0,834.647093142331,1434.76390626246,614.555128385714,0,4129.59156351947,3689.95463846365,0,0,3770.77877241104,0],"Archive215_field6":[0,0,0,0,145.881251150854,0,0,-40.3088313232645,0,46.8332333509627,0.0832935417718158,198.898095473878,320.855433824561,80.9125042016047,0,0,-211.419730381335,-843.293116572823,69.8248720600384,0,585.206469107067,57.5301037509762,0,0,-455.209097079212,0,0,0,0,0,145.882782766931,0,0,-40.3084374727914,0,46.8265404528495,0.0832915285836921,198.905614502083,320.853760976253,80.9132207253912,0,0,-211.420394746052,-843.29275569167,69.8253968877968,0,585.20051669509,57.5308032281273,0,0,-455.202491398607,0,0,0,0,0,145.882819331303,0,0,-40.3083318679631,0,46.8203575287956,0.0833002879404794,198.912657046497,320.850970769798,80.9113972652774,0,0,-211.414963227089,-843.288083991389,69.8203325642253,0,585.194255228464,57.5310453354654,0,0,-455.195465645624,0],"Archive215_field7":[0,0,0,0,3254.18310257765,0,0,5025.01367534324,0,3276.45554565172,0.0724923782356877,2767.85913669792,2900.31758680997,435.055446008858,0,0,807.404655187554,1160.76121226283,610.567900498475,0,4087.89622896971,3689.48425227769,0,0,3743.17705327423,0,0,0,0,0,3254.19195270315,0,0,5025.01924596438,0,3276.45851328331,0.0724919789830037,2767.86362086243,2900.32526398702,435.057884615257,0,0,807.407795409469,1160.76837741781,610.569558092192,0,4087.90103579564,3689.49165229141,0,0,3743.18470090189,0,0,0,0,0,3254.19416570066,0,0,5025.02498216575,0,3276.46097790417,0.0725010282538446,2767.86636565353,2900.32769295621,435.063751577328,0,0,807.414895942741,1160.77356411148,610.571999846325,0,4087.90546545538,3689.49761770075,0,0,3743.19056734205,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive216.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive216.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive216.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive216_field1":[0,0,0,0,0,0,0,0,50.010591892464,46.4567962852791,49.895368617411,39.8833426248051,64.7023408866197,11.652169370772,-3.3637344984052,-16.7492537192016,-30.0704416979645,74.4800079324043,-54.740121075023,78.4842878140896,-77.8172641954573,82.747852821071,-100.933491447239,-113.318344754787,89.7389348254493,92.4199099144117,-162.010561988538,-180.237235399458,100.054433212186,-226.192650734777,103.614821438446,105.241479081047,106.72160100016,108.093487066821,-293.748709502689,-299.890565365507,-301.804261206584,-301.10553552975,-296.413128813258,112.017852157906,115.823246766276,121.830193687615,-290.543494671269,-283.511450378778,-273.218324752911,142.150065194027,-249.329214860893,-233.131828809891,-223.859880753051,-209.305785950672,-196.77819427421,147.781891480099,-176.622606140861,-166.320149366526,-155.197564759035,-143.480025682914,-131.344969012173,133.3255251713,130.969959261623,-92.5649960444163,-79.251951876589,-65.4841962691272,-51.6983388814816,118.758201458133,-25.2112680537595,-11.9215603992503,0.920419095407836,13.8664908835364,105.589565476234,39.9532295195769,53.871280800749,97.2254236085717,83.78155244325,98.9854976499852,113.945796235812,129.516851705164,81.5112086301349,78.3375417730189,179.196860773045,71.404701810215,213.365367876251,229.217289531822,244.666185464074,258.549260861445,58.8435401911128,56.1779793502947,305.163688013445,54.8173365874878,332.34317521421,345.676143055927,355.661798387046,365.14220821747,373.003481998701,76.5049463390009,384.484916406827,387.351596795514,385.723422262202,95.2873828622645,100.657761952669,103.606366416615,106.095014268013,356.218607605367,350.377134415769,105.716703243126,332.70951198139,321.243586086236,309.830493551147,109.045062547305,110.013562296398,259.698741239287,245.990595350958,113.34585792754,224.510713774957,215.355966187903,205.575065053667,115.170065808891,185.239432186442,174.666920404813,114.916971985436,150.548259521401,138.163650225836,125.640821375474,112.595443146673,111.469634129168,92.2149846709177,81.6370359344936,104.204604284342,98.390415501018,0,0,223.682534667593,0,0,0,0,0,0,110.274975956083,80.5511013635137,256.972477268363,21.0186716797375,50.2128962486245,349.229854710894,-209.244795197673,43.249162539996,-101.962441914069,77.3630601056349,-184.18448031547,90.6283849101092,-256.338102478887,106.81369323837,122.69972344545,-146.604167431829,-77.007379262036,121.274279922947,102.31296034185,99.6236532791273,204.833448674589,81.0319766641216,283.213645537414,76.562930758473,107.422683007304,301.994071845969,109.960060409424,108.379551942034,108.964565551723,164.02363212998,115.501243888542,239.704186501427,275.525418117064,33.4219089191546,-27.0399183747638,-3.52494064196069,8.25707496268531,43.0289719227816,-31.8574706751522,321.902810472115,358.055056209843,366.696986540713,-204.81447560413,-245.520314903668,-222.805002586983,-222.02761786546,55.1542482834446,-107.363837488003,-67.9630815834806,-83.6916441685585,81.5301495407061,80.2888824317909,76.3182929423525,-149.517495922458,-197.463332702654,96.6476716351558,94.6288230130615,89.3033754341594,-271.847828917584,-270.716582864942,109.006549405993,109.353918161413,109.138371241982,129.083584094976,125.394756937052,135.195594706506,126.554724210297,-168.425140133737,-162.909115221612,-141.105792491454,-67.5259136489387,-101.676256353173,-93.3104063867255,126.267069299338,113.426493775785,118.362789459834,122.740452532954,92.3355135421727,98.5249293120812,99.7972788323837,104.236972818201,71.736821544959,88.1273357020026,117.182531798679,226.76173419852,157.811936635561,195.533579948593,77.9935778441659,78.5916303425615,74.1454251064462,301.563231234647,263.801441019608,85.5201361964799,76.1429939005703,67.7390102280193,69.5309780262746,106.907616423753,106.191165402065,103.63933308118,328.027256948525,314.778405246652,296.654988480522,113.586874153071,111.498097556424,109.871848367636,108.218599413256,83.438587390019,109.87550832247,113.337088965671,206.516402447005,168.900057742654,144.420665809468,120.600653804827,100.791673410694,227.743072395417,262.157375950748,46.4471120621776,-41.4696734285072,-16.5206656681133,32.5795622621873,-5.43200296091642,-10.8950217596599,-36.6891157081387,325.625295096597,345.073198227496,369.946342543048,-194.044621716121,-252.226326383319,-254.641607314613,-268.149793083849,59.6702752574325,-117.08273971054,-70.6658656653871,84.5446444879152,74.6002593730776,-159.265621208528,-213.152610932096,101.317827383551,100.57076165014,97.9288945001586,87.2195776248315,-271.85033126971,-273.222018877913,119.264544528979,112.316697453881,108.91469004015,128.94374163227,135.760831585855,136.740880933362,125.136987254253,-131.241526529979,-55.2591433792642,129.204584333749,109.795097139833,112.888917430768,116.998040959631,88.079002517759,87.6467597330063,92.6357666483089,106.494681574605,133.140873162078,243.59464257369,180.966161742298,78.8477928924203,284.625522260062,91.6206699907231,81.945237961078,74.3221938495499,68.8587637534493,106.749807693361,105.549532288295,99.0549851184588,342.880444249236,334.804293835686,316.079298267744,288.456111999876,114.422561972645,114.084452418759,113.061990713234,111.253599192422,112.263773307429,114.295456473845,211.157433573731,190.225219494778,130.530920839683,218.848239443425,244.405253622005,59.8735940447984,43.9615660721069,19.9565975608145,14.3176132965114,-46.6536668412452,319.097889913813,356.312474371189,362.012633672439,-184.744245816923,-178.468801350661,-247.980323799137,-272.91388342611,65.1336566764432,62.2628422377536,51.964069135758,-128.412601014693,-131.710255255012,-86.1778552282521,72.570667317354,72.0792696088619,-229.105829173994,104.165546321964,105.077489971299,102.864491979747,83.8386681512653,-242.0160977139,-264.951701556819,-273.733635805767,-236.222705867976,105.185886973683,108.144056437384,126.61104891518,133.036269206143,137.955454824056,108.015218152204,-119.652248891173,-119.02637592166,-49.2553767516724,131.221684788785,119.667058062434,94.6404693433751,108.806149744539,105.352126163448,148.718909206702,119.610715520271,257.685599976878,222.361068823446,172.44718066765,81.3153599910299,89.5580543608412,98.3766386881638,68.0048479566943,81.0083894861022,107.159808747996,107.584366047866,94.3714834596995,335.001538157863,343.562707460095,332.962402519901,287.124520398585,114.550873684057,114.559854118899,112.155423625298,111.87087711812,113.29392076832,111.065269490161,178.118986205545,147.537179955326,230.653067995781,52.63606227261,13.6916158202214,-56.9349908837506,289.212946929693,320.421577955688,-183.095605782192,-227.821205798405,-244.988087310745,68.1379758385896,64.6665383825876,58.4175037587842,-132.090697567736,70.6806246689313,72.146509142178,-243.687319573465,102.650705431246,97.9229860040473,-214.486667771724,-236.8273974145,-252.40994934324,118.384389623468,-118.264202807087,114.9904240416,96.7788357711902,106.987523312021,134.897215620623,243.151380017511,85.7269361048721,109.076229348444,88.9385183947703,109.841274391771,350.968859303281,316.23886791624,114.546077418036,114.291334108386,112.78252836558,111.046272388822,195.444333797624,229.653142157894,60.6527640301652,-10.0013596874449,57.2489537840764,-150.952461307908,67.6605316604697,105.532985477581,-227.345571467374,-250.966720096321,-229.53281390768,124.17506753534,-98.924491506878,107.060645192797,136.632209668763,240.784936949462,92.8112713918382,103.550378415622,327.568268391776,113.85898451439,111.87101217445,69.507536071489,100.052896562609,-217.896207562689,117.126226243489,108.892870439446,62.8696033562592,-228.344048445581,67.7728806381402,-203.868288762876,106.334614745001,-169.740401723537,119.533809213622,265.875108285515,89.2908030381876,97.2046286563253,97.0314359327317,-85.392517236281,276.595661206645,-198.766798427894,110.165175797244,101.797000264703,111.638242709293,291.95790315194,112.863646281832,114.385283408566,92.7316407943886,-204.019642618032,253.254125502974,86.3749438165237,-188.126762925183,79.527278256906,39.8098389230135,-31.4273829473065,-4.66171252653945,-197.560651122619,-81.1691109606763,-95.2319981110173,109.19156767571,173.243229162578,94.6380726167086,319.816016816585,294.54060248425,112.763283583715,114.590832092695,118.172015817683,105.201443706703,105.07932581309,94.1891391528812,91.0440693232993,101.900964681547,-143.778515332868,-191.432793614471,105.794638121183,104.27747369671,116.629066338353,98.4739686000185,-197.879005381176,244.429695264245,-173.254180197595,94.9231430224762,-203.053883640224,108.037176037856,107.402863403181,92.9746039195058,-206.325819164829,56.5775978922941,73.6100075908335,-184.507520159376,114.365501733604,234.96334644643,90.8119787114617,62.4731169777515,-36.6495555491359,-71.9287189619205,165.380512981006,296.520719231871,115.344212944806,114.115481947518,96.6252870010873,58.0360504290325,101.068100645849,-116.917312781134,105.871241523863,105.544212580812,113.217721695349,115.692230189905,-145.509239380229,-181.972935686436,35.3959662375625,-190.097331422354,-169.934939681644,218.589907284965,81.1463085050876,89.5349661969278,275.701358077982,308.282601770078,289.422368517345,-218.958196441444,84.4423472311793,115.143972833679,-9.47149540233806,20.3237295673844,-62.6876968824724,32.9996920919211,-136.631474605123,113.163045553451,114.833294029505,66.8846644369249,42.3552887687344,-172.052932105979,-179.092738296037,80.4592576694771,254.491026428703,70.1388064529414,-91.6874313330217,116.200530845377,40.5270717696969,-157.30305904062,105.714930469258,179.601232971365,94.3712127339143,0,-51.9059640990201,0,84.988369614131,294.807957033123,257.437567179459,101.138096005398,108.525803258257,106.925479009104,92.8654503615883,269.626792023325,119.509032222905,14.61617113792,27.0829257774142,75.5937441047987,58.2225285157668,-123.711497900246,-36.8917752501859,118.858762350133,114.085379957191,29.5083139937881,92.3661360871873,80.2876386111272,-23.0865128594767,272.454911354028,103.926870795371,104.642978521102,99.4743130511251,122.363763284983,34.0738261792781,86.6545764039954,-56.9262016570228,278.347033694393,102.204698241432,101.92337784103,75.5177096515873,276.125699197008,255.935747808977,116.704403284155,-149.204502056148,148.221737163426,225.103870509465,210.449945844927,66.274604158369,-3.75446886840588,104.94007614563,120.092092220055,-19.016668072288,-88.5142021498685,92.613941193036,-113.853233123745,256.679938609309,94.9070659943758,-177.290582520591,47.966101992363,13.5456390468846,112.852722481083,114.05329099278,0,0,-128.290359176955,139.797156682929,100.504847600486,-148.744106523173,120.174508827988,-136.979303500395,-122.954845636728,55.0978408514092,108.04438685445,120.510796793471,73.7817048277178,97.2757567643694,-124.723568017266,90.7941692589784,81.1663032069414,100.711556581064,86.6067229649326,3.26389484239433,30.5935874176731,202.547583075686,57.1002152315618,126.214344648642,123.913854562736,62.7048638194317,-82.3040592932487,41.9407022113808,-100.25221094264,115.621261938157,58.6984240999227,205.695572661833,79.8868401598274,0,116.679666164445,43.7177061078869,71.4622604792518,113.710811696228,16.5327644240871,53.820370111083,64.7106676592283,175.329211343684,47.7461467844528,50.1302130831468,0,-45.4562227187664,0,52.1050019191946,0,0,65.9225435829108,5.99274178178702,0,83.9548721687915,2.58487747931447,16.8325704639917,12.2617392471163,15.1750490139097,0,121.687393101011,0,95.5825042539545,14.9145743610323,144.459727436056,17.8602419109218,0,31.1004363779225,33.4403523339359,30.3780037381325,0,59.9460275554158,-23.6266491979141,24.1179363685488,0,0,6.81094239071665,60.1538983915782,13.7499195764687,11.6284378086792,0,30.3460535563239,53.5105110486402,56.4345602616641,-41.2915454160661,93.3577935786672,79.9485219175561,27.0972789475024,-56.765309848092,104.367304698209,20.286564391122,0,196.561066244569,-14.8663198280941,131.792767661383,-17.9767319776513,0,0,-23.5380052465181,-23.3395929344731,-15.5156192844069,0,-11.7065734540728,0,76.1741051251811,63.2192814626665,-21.0017951550164,90.9824780239762,54.0700643685108,14.9650658794471,65.7374488363047,41.9719518927269,70.4790646864544,0,0,0,0,188.169495688696,123.96823208,121.418234206895,189.663879133476,76.968048451555,301.326084175504,160.229069391796,233.783859439237,263.111630992752,181.41159409443,0,297.56904163476,-58.8753933642513,0,264.918494825705,166.349353895824,405.174991068253,68.5899159459822,201.354241963258,145.717647099102,350.45026051952,0,0,105.059873620679,65.3183517623986,0,0,46.2863682072791,46.5983523840779,39.4421182103245,0,72.8111226855207,-6.56514043433374,110.927105809461,376.010776983538,309.152697209917,82.0129818518859,-18.2697990370559,224.433441147196,164.664967707716,163.557524684364,402.414328918132,0,466.077232490222,242.871663925358,424.942014020725,349.507968683865,37.8599443700119,0,-17.9413882688468,36.81970342905,22.5431285306134,0,-1.01342820062715,-18.2482086440997,0,0,-47.7186581279137,0,-71.3096727300962,-96.6292552041463,-132.972809720537,136.196308369379,63.3346511449414,15.2684912640217,-67.7107473022016,-112.664657758611,-244.268326801858,-71.1950533552811,440.795196258544,-169.626365649577,69.9454241672879,50.1871252188954,76.445836168887,0,12.3598128513467,-6.02582055127249,-134.494008826877,446.364848620965,418.815700382447,397.718735705449,321.69640898277,350.96999044336,405.642001627419,188.05597855609,452.663604346164,358.636174327282,372.919030370541,247.285308766369,182.125066854129,-76.4536485547886,0,-169.342802052916,367.536911375687,347.687162173177,245.98931056922,274.870821661531,89.3313746585816,0,-131.954509098208,147.54943032029,0,196.372550623206,199.121988209148,-238.317460509829,-124.293461917162,-201.325291626024,-141.469607481809,-234.490806602781,-265.508306940836,-201.221790882926,377.251603842221,-287.832963131481,-105.021866775858,-275.993913584283,-191.205181617744,-246.394189304526,-246.879501737028,-159.531309882522,-298.496088408292,-204.079398446822,-155.516433931341,102.462868887826,-84.1433451863326,56.149797527613,42.3923082790397,29.3654972186104,195.602691793025,-202.991962427302,-166.594879746731,-171.820552071959,10.9191887890205,371.204633358197,0,-62.2346283801905,-118.567284261305,0,-78.4082580177417,-42.51489582432,-49.04757943547,207.838250330515,258.877744560028,398.630356349961,271.607587778385,84.8004506799123,0,0,-90.4342028590825,30.8281688154882,90.2276651122452,429.343102102843,440.912692698502,0,0,6.73539175666678,88.6467545181271,11.1094611868092,385.301502398509,196.542234931777,45.0388207629504,57.6690796849568,75.2923287817374,58.1790497725027,0,51.1623781818551,52.9298281734079,0,0,32.4793200209685,49.4321117603919,-8.30167472217506,17.2584922639467,0,83.9009540751547,204.679304763318,166.407708928129,-2.05585736559498,112.596328190086,185.304665226359,149.456794202316,181.811452655264,322.62405545679,182.117373626235,148.186662898034,182.673418821637,85.5036931766864,-73.9959238485911,67.7199886485139,-47.8611971497943,173.92105634463,110.354485916039,211.099706801513,269.376948323077,114.201651093528,-7.07659382084343,348.470749418088,254.595070387377,59.1944601983681,61.9911906020465,62.9374019141373,25.4641032057323,66.3738001611957,68.5143465562938,70.6414604829603,72.4790574058651,-42.9025534237332,76.4828446697646,-66.7665198360797,80.6053706484198,-88.9255960931285,84.9487766507442,87.2901928711624,-125.769221548356,-138.710882450526,95.2982743344675,97.6295199169594,-204.483784796331,101.93838001914,-244.780930593667,-261.381765101712,-272.942830431156,-284.58406936302,109.203614362368,110.221365475196,110.825006366895,111.374375287293,110.56211193522,-293.556114092673,-292.828363913723,-290.373213632386,128.064226661675,132.874267393015,137.430873605498,-260.313213569684,146.676911136533,148.095952204209,158.120694511129,153.783588434769,149.813584557416,-186.836715874904,145.064680932668,143.029595718653,140.525186515325,138.28141646105,135.750390369284,-118.747548578118,-105.885486494949,128.79067352338,126.324774291556,124.018026223054,121.389645683928,-38.1036801134931,116.299301364609,113.584531609746,111.046509812583,108.30297247919,26.6959452979964,102.857586709193,100.214916955433,68.8689108310655,94.3990508829634,91.1485838299272,87.9341827148331,84.9291883742085,145.66674833649,162.577711620182,74.7017540508877,196.829016059562,68.483400993573,66.100059746752,63.5721556717115,61.4142914765353,272.908756408882,287.616702672833,53.415671662769,318.018697725362,56.4741385413745,60.0640484719454,64.5666310353792,68.6704931910047,72.8728199652836,379.453717935028,80.4928417907068,84.1772577751033,88.2776409623602,375.044538614258,368.449867087811,362.033114177003,358.570895754864,105.077368600164,105.30328358791,341.055437816369,106.329104817458,107.114731445781,107.988648268439,296.17344530289,274.748640224366,111.315018422545,112.46584656633,234.793146520613,113.972449086157,114.532534870523,114.949810987513,195.1026127382,115.203148387311,115.055542308274,162.902447929136,114.622726185269,113.986834863164,113.602993594957,112.684033376383,100.844180667887,109.493527977486,107.077541966808,92.9509869881204],"Archive216_field2":[0,0,0,0,0,0,0,0,673.780843333905,779.98312449864,834.710307155034,869.027877710557,590.075337455839,912.25602862837,928.488268164132,942.19698201574,954.070157065234,566.372377774909,973.491896109178,560.511627406513,987.309184528803,555.609504658797,996.27191366398,996.052594003525,549.249748155559,547.258960212693,969.26957864902,946.038835723831,538.006425284386,897.16146324534,529.970859090385,525.796094072531,521.61114538521,517.428667839119,739.825846324946,702.55453243376,664.33783707878,621.754024966404,568.476108400591,503.760152958232,497.821208847267,486.798422392012,441.502107457781,410.385468270573,382.394663072987,432.857745576458,334.282042115767,314.373492590636,323.286448504474,341.364697820414,331.291573634096,321.248810231861,312.256367029189,303.5828587207,295.284663611585,287.940011648209,281.18607135121,275.237164342881,269.625853900951,264.676150739824,259.996309691762,255.978792595919,252.40033910772,249.473404735656,247.053528033029,245.172232924461,243.880630493922,242.919428679834,242.389011904478,242.22651501867,242.47014397059,243.410500302542,244.97600491005,246.940372263835,249.945832645615,253.284256377784,257.458847323149,262.312892478922,268.289846563751,275.195107016523,283.120606827568,291.603059129433,300.485589232684,309.62565444131,319.316447079616,329.475162595044,324.430797350618,369.499864544097,349.687706423493,372.689875466466,395.538533967014,423.301543011124,450.857199040837,442.08296600579,506.000164501,534.306535591073,559.909259202125,488.415121059456,496.546684818437,501.433605839346,502.515881906089,704.264414529471,738.413600380343,499.981278194796,792.937975052195,816.773205059775,837.923511192696,507.323001880402,508.839255548397,893.800683095443,903.917505233662,510.616739049781,908.605431298393,908.889900915271,908.250093200372,513.499573560411,898.956840069426,892.306750944352,517.38527613851,873.60031111901,861.69958071563,848.685484406715,530.597057157684,537.324917699622,791.436019782552,758.183092099275,593.930436757242,620.192002661727,0,0,2903.76837767434,0,0,0,0,0,0,555.635966610108,688.584136582602,909.492202352919,211.781380711367,749.32104672483,550.157442429508,316.717160855988,598.168229904527,979.483056310798,552.414582564824,987.113270111669,539.761957224608,728.486963606703,491.363156712255,412.785802117824,274.198288410005,231.445927743705,273.702624108495,250.138992847446,214.621852063607,256.163422300425,291.655272814083,320.830156292806,341.822499976724,485.579223113043,861.934324457327,501.504781807696,570.658803526414,529.842165480744,848.877809959184,779.906011032011,908.819270067722,907.653198292802,222.826041755541,217.285966205388,213.547418670763,224.339609377803,796.011934782131,914.487178965959,432.39902343538,508.8427884257,567.026421258466,311.111077999297,456.508706957411,361.912724241509,328.189604362415,597.906667853945,990.037192743531,952.896367598505,976.657218364771,548.016883621476,552.723939562758,557.447069889534,998.486131834928,958.79750133414,527.137277746571,535.514902781025,544.331519629798,750.824975244255,671.136189448768,464.419808066812,491.418179425018,499.629474456847,333.298559713971,377.423675478885,405.637205849577,431.872054287792,292.417403158776,292.979184539748,275.477005110558,238.445989932907,242.978623400892,248.47958132835,276.41557468696,255.845277612219,265.077102403219,266.686196040989,258.344642479299,251.685957740529,247.863193109871,247.166913233473,209.71740533241,224.888016296991,230.37940832559,277.393657548118,230.895480583051,259.030123149284,281.973549474912,308.6700727318,298.528138377048,339.409195882268,294.668443859629,403.174779085369,368.700119962317,354.641020277463,327.429558958754,494.225536102852,494.827467296838,483.328466858416,732.047554983769,816.852915087187,870.465516834292,507.771985746777,505.586523837311,504.683267180628,500.822684175561,644.226300359649,530.459407847453,512.731232619066,892.209453398147,867.921845308028,842.437930346458,809.800317190863,759.39300022061,908.106434066271,906.928928471349,226.012453201104,231.276839887968,226.838566326513,837.265917686598,878.319019549498,905.591540166449,935.867644552401,394.157984439654,452.56219646167,587.893942415839,318.794547700291,410.586645224947,561.955687904643,474.663782237383,592.419817779311,995.108125941185,970.361530515975,548.545084089544,560.972987805634,989.511792263388,937.600566438966,514.341244442627,524.854718491233,533.694425862576,547.207264620544,781.080013391963,622.768376180931,456.771122305132,484.647422081419,502.592433026235,312.791080898597,320.343803372765,343.703132571408,445.740910141388,271.019231404678,238.251214487909,281.273597837466,251.996469629914,250.919694562778,255.637986531112,265.7996691336,259.412348382413,252.876882636137,246.581684965348,238.064300312775,291.381374684684,254.054148595987,274.345683636106,311.476567620007,426.479166507147,419.343247687332,393.965412505438,316.504845391162,497.135702235746,496.451775439399,474.446629122384,661.449260633833,748.399027361227,827.340641117848,886.809546473147,509.814217940279,509.642750425236,508.466725977879,527.174540630486,515.799466401218,513.608875279015,901.629142961256,888.109349546733,829.883928856472,906.946906315529,909.008809893964,226.257243171887,192.377296238854,867.233606391813,815.129134139225,950.166072952651,368.287912646832,478.076717036077,608.621673170313,314.277217353647,288.483579864658,379.492296308272,499.159108802614,569.282080937483,585.540249010079,574.508882756314,996.706887253283,989.376973051382,963.447815608301,564.134329405357,552.008336455023,905.865553062206,506.218098714455,512.230762746497,521.182216948533,540.005134232791,868.383829143384,813.914288696586,575.195469396042,676.753873977928,474.808004603405,505.452684112457,296.57413182993,302.492209868508,360.136657816076,430.665409042501,264.439517077838,243.392254333427,204.527922768188,287.266439141563,257.896861666474,249.674162448662,247.130757925489,253.78740187671,242.924172737077,202.166543316421,300.561992101289,256.186568857893,231.19175080804,267.989459817997,279.383655781051,448.126087307912,382.832155270893,321.84789000089,499.276129455837,490.008493033651,463.632586719312,623.849314477363,674.781338315788,773.630301795838,903.600266278651,511.76841742258,510.83818794559,508.141991765085,522.712092445446,516.676919385648,514.552397543172,880.488458192604,810.765148430837,907.283180605395,207.960877597872,841.580565994407,935.596101573909,384.243385606815,508.427696218311,302.208443198614,402.863496438298,523.716017761506,569.531017216281,579.539803688633,578.962439493172,995.279490145983,567.263971173667,557.753361703856,877.364462964916,493.526855471088,518.459836195097,948.10408710831,820.42468582755,626.429586400619,286.301553343743,252.234456833082,262.015696730433,255.047068991711,250.805911972859,221.516234625063,280.794056634547,273.492403341442,462.876135127845,441.298564734094,494.799668949903,622.764283550984,793.523319042849,513.14460564184,507.814222168341,505.404922253724,518.470168921006,869.688060001557,895.849183203826,184.668189180492,851.891286569948,561.743193599032,998.739670234846,558.274854891828,500.517181156544,915.419287037011,822.857170301704,626.674372764322,287.357650592315,224.971590803323,256.309876660231,200.922781267838,270.090748899488,272.643114349127,462.671350114508,677.079571749381,508.266455712471,510.366850640105,553.895742470109,498.315692556386,920.228065351097,295.729234610396,445.938679975074,546.053442713325,873.257882144224,543.042742374751,337.120954571714,734.417502663865,1002.77814584332,355.568865499385,302.274114145091,380.751974441351,443.407363962399,311.309357144069,941.400530309772,346.58286232233,980.47003301261,272.814227485195,259.736485537765,484.674085436996,860.153105886446,498.917477855113,502.948411133167,505.379828632249,383.836321682949,317.779552163986,525.686851565878,301.259409022823,186.902108690387,142.812329941417,886.232933184992,816.162895015207,738.370870250713,214.45935904727,194.884665534464,258.346262546543,199.809152258609,265.539254224484,730.67091952317,680.792423870014,509.242078295902,498.472936045262,306.585549993093,429.545414616035,383.478121474082,351.589510122065,475.111241722277,285.312250406116,991.918842094692,988.482811257345,293.725548091519,262.680858777697,441.437839983752,505.446200436519,507.066841139708,363.997826468255,332.154358062393,147.929524831964,876.541350809033,333.829593441066,396.554713561316,495.25728696403,922.688071332069,694.390990673202,541.417976729573,1007.92564307603,498.676184636969,286.699140037821,518.398512602448,149.806754439551,865.904358771925,181.671250055253,203.759702059553,758.280528088778,508.82336165085,499.029326117762,468.673833372149,523.228990626789,273.646741164916,970.415656068807,305.991759172399,264.452774059732,468.870535877323,421.831528656663,263.857937186991,977.16116027579,613.61621174609,1008.17667479699,1016.73024155594,303.447829205982,489.0709468591,581.545986481502,926.400030163244,589.49300075248,469.362880908025,777.834139884791,688.543683424419,485.071204968175,153.78349222444,168.139077641204,911.924958171097,764.986095229207,237.157507717988,509.571661274294,495.705635901323,527.44300984854,545.569314514887,1043.59035152457,1022.78067762417,506.449641612785,911.614190204198,643.19407729653,937.58593031622,493.518275448042,569.101783707261,1049.73800710077,721.218006939842,839.255490892252,403.436773692507,0,174.427146078465,0,115.316874020208,816.822697404074,817.659889450863,264.937459639651,284.448592687794,267.837381414865,308.493101362104,601.712595875924,457.14461085265,118.234589032071,764.622465391482,525.387365079302,492.14443243627,975.863002235464,863.846607698468,475.427571142456,477.148389593615,529.471923416592,362.905059458735,415.160734485093,101.423016963906,846.302016426039,269.789917893963,272.563253132059,277.890558956798,400.328824462491,77.9327580586165,446.518313789281,136.136877500189,879.517786631855,270.572950017116,278.716570726217,454.600845974794,916.358960267209,934.5409763425,485.025943192634,1020.0011300756,783.359600059552,885.035280951019,373.53631333789,474.40087057161,97.9917112735242,276.777020881348,379.021597022745,60.1392812756768,164.285251912459,291.955834768231,998.353780264083,962.052485443078,278.837703501943,868.383992807478,608.135704668996,58.8175863394081,301.754431893056,335.899454430127,0,0,1054.31037963743,789.782472267475,275.646515316189,693.645787089725,344.265677839119,1050.39252430228,267.468379194524,556.354857454275,512.455291307795,458.410043159087,322.549121666777,282.73142343163,1122.58563224334,427.127656409436,489.62657388138,280.732000868992,118.401932683029,797.784321826672,469.605856577006,793.319547157571,641.429837194888,410.477826844105,442.900905024754,391.096782105574,1059.42039919342,418.164309834579,611.559412214298,321.766856651751,671.92035090452,918.5764939127,291.288819290152,0,386.761294657513,713.478567659755,504.428994371165,845.488903480622,364.096735104814,592.281339929242,591.218613310457,1079.84996146648,369.276963614373,328.778644815181,0,1204.84252615568,0,248.435866301857,0,0,345.043082071791,204.538487322871,0,278.934757702115,422.839542010327,314.404469907589,1044.84961842037,380.450866092119,0,365.876537952478,0,278.100524728774,804.333084415395,1091.50213125133,150.966186222513,0,359.209697263687,275.092860920266,452.603876757059,0,968.050907350741,163.46653538828,266.025501658205,0,0,194.871953386486,300.157336994467,188.718257091258,202.90483246966,0,175.62898979003,184.056966379142,257.535207232595,1226.77759697031,350.734536563653,239.696343168372,483.997520561886,1049.17285421588,1130.22514240845,394.793080614628,0,1042.81299262171,1255.90327849397,947.374327028528,135.29460038108,0,0,106.689268532822,221.849354269518,277.068801889453,0,369.314589316431,0,250.779468924468,289.094419652955,1095.80720990813,1243.44040337723,735.082179934932,1234.45110244703,1375.85867802039,1037.4338031726,777.178135845695,0,0,0,0,1236.99538631701,749.31962713728,1144.72154119793,1484.15744731535,655.030093760281,1386.87559381906,858.615014424269,1280.03488933227,1523.24710633516,898.602021822705,0,1632.62136911993,2559.69121203411,0,1596.58091058337,1493.54897821766,1768.55585725241,1322.93154539561,1036.35540560639,759.267483052254,1547.58559081288,0,0,311.636463294184,189.412245253555,0,0,401.513495338562,314.008858692775,459.543871744686,0,1208.55259758113,1287.42764421973,1386.20908114968,1539.63348084356,2095.8072495291,1043.66911548486,1316.26829788629,1454.61322820502,1461.39877147099,1164.10464364559,1244.71010548161,0,1886.08141098287,1047.76408021835,1769.96303725541,1738.1976978787,1158.40303866502,0,930.1482628559,966.676786118111,633.710307038668,0,623.660149391886,477.886123296046,0,0,775.356858577689,0,1163.72433255464,911.441954371896,1442.75804235309,1003.05260812591,1215.36313995416,1294.86728474502,1380.25668385543,1432.83172828942,1602.20750591495,1270.02253923982,1999.58881416714,1920.78363043489,862.036565073687,659.894594281523,669.56104824731,0,401.3076535422,484.745193665426,997.157312672701,1875.74329531382,1822.21979551365,2004.84180355332,2416.47927731721,2229.57432269348,2194.36124343975,2513.7002690709,2034.77038322946,2242.9681356777,2306.01860519769,2626.43455033065,1116.80393467113,742.069976102638,0,1308.58947244789,1623.64622024196,1613.43082026279,1302.76007599016,1850.87534576703,701.548361250407,0,2318.43867139221,1875.82237218609,0,2167.33346268688,894.235793058023,1594.37552136214,1270.13552215728,1380.45636109185,1177.0825075964,1567.84340115799,1713.81217934349,1538.41045392748,2349.94004941658,1623.41353613872,1931.44876126801,1672.97414560049,1978.91023705502,1469.42073408715,1809.71608432078,1959.35022019792,1203.77673124107,1491.87056379042,1465.36016844837,1953.29271685335,1824.89152261416,2429.41242892116,1144.02065496877,2178.15543171548,2496.37727132788,1778.08434987282,1568.53392488559,1941.76674507075,2309.00902470618,1799.6347638411,0,1191.24941144236,1318.26124033687,0,1730.64347719063,714.766360727234,583.087573278592,1573.16532186182,2160.14533473563,1813.55647481752,2451.31141315109,636.406890890421,0,0,745.40178040162,1653.31134817765,2134.82358606796,2022.24568905772,1642.48028749736,0,0,528.207926595814,277.123246463194,1875.00953773877,2086.4473179867,2044.99335130245,1069.87283626808,448.927897957086,275.128935808462,188.423558347227,0,119.60204688129,150.690027074977,0,0,199.909557075173,184.652997922959,1221.88638118478,745.191468754621,0,2866.9340300912,2652.09455239442,2808.67854797872,2747.84283335293,2761.71465943885,2761.07658947514,2919.35708549069,2861.98946551838,2723.50823324871,2734.36616386798,2673.02203403196,2797.87098422257,2419.47456455404,2210.33149678778,2486.2142603723,2222.33335022585,2556.47736431485,2591.11810994465,2703.47271341325,2849.46094389725,2341.86681992637,2162.25821151507,2556.42696233906,2417.58780996782,640.690996273877,614.25422356961,599.441035973601,893.110571690802,583.124630571143,578.238523017248,573.669661723712,569.758898871188,964.190298339597,563.24751845835,981.021822824065,557.990194950589,992.984536461702,553.380940104629,551.252065407079,989.770639061175,982.446174169898,545.177663347182,541.745934381535,926.418504967188,534.099887215678,868.693699717076,838.329751820198,807.368812169155,774.531456754645,513.468598611391,509.653115204239,506.361626789586,504.045672732839,507.19483083355,527.969780588422,492.126461477915,462.795040794875,470.943834178865,457.990822648209,445.569429452234,356.616165144597,419.099438647494,405.988788698599,370.887633594609,341.364847876108,331.291690458997,321.248706097701,312.256465192778,303.582956226975,295.284763488675,287.94011319026,281.186174507807,275.237060337487,269.625746256117,264.676258830297,259.996419949838,255.978903655097,252.400450313269,249.473292437444,247.053641200167,245.172346089874,243.880742183055,242.919540194629,242.388900083986,242.22662792826,242.470258141512,243.410386946873,244.97611558511,246.940483211781,249.945941051691,253.284364174096,257.458741165903,262.312789085406,268.289946003026,275.19500947372,283.120701934069,291.603149136288,300.485677363934,309.625744134592,319.316356795146,329.475048609632,346.731977798969,326.780954092642,381.677237889586,393.464979312667,407.958360896056,420.199382624979,431.466604291265,478.742597036182,452.700370684191,462.928771442894,473.732656250273,574.908060615834,597.513499644145,625.361458421939,660.444246189867,497.94261663806,498.607553648239,767.703718827696,501.760300697536,503.66504524532,505.596427937874,860.092611740906,884.943332203949,509.522647583055,510.03908927938,906.762137466844,511.253911126764,511.974054966344,512.700125615285,904.358213244964,514.471425257098,515.676910385893,883.933454525811,519.424433752542,522.115088712457,525.402393852155,833.456282367876,814.342765831193,546.631129693348,556.488511669728,703.601863001367],"Archive216_field3":[0,0,0,0,0,0,0,0,675.634282837382,781.365412866319,836.20024197576,869.942603426825,593.612076014151,912.330441682097,928.494361225853,942.345844379716,954.543920449128,571.248581519477,975.029718852482,565.979741591148,990.371118551928,561.737597828106,1001.37170703561,1002.47783879701,556.532444941489,555.007936233047,982.716102590311,963.055003477029,547.231032793915,925.236081429461,540.004761744489,536.225047401831,532.416835862756,528.598740301214,796.009162776986,763.882989886843,729.678404406327,690.827482870059,641.112960994508,516.064231380719,511.117384237355,501.812016732674,528.525905879226,498.793519468263,469.972266551433,455.601217009129,417.024628846111,391.38362567675,393.226873442554,400.423237275824,385.325530561854,353.610358339262,358.747242150037,346.157398006075,333.585546256642,321.707892470702,310.349976005697,305.828697635969,299.751949653056,280.395690521721,271.806830174637,264.222107742478,257.640543053295,276.297828590764,248.336573525619,245.461906208517,243.882367344227,243.31487500677,264.389087198185,245.499379076881,248.382538863407,262.109623351376,258.90653045354,266.040741614544,274.693581535359,284.477643066137,270.053948679352,273.76052310678,322.63130145743,284.30789360558,354.516654361087,370.908223033622,387.495976296598,403.380423645234,324.693017476157,334.230232221612,445.398943365973,373.543960316121,482.424582847088,508.320508294945,531.926730560406,559.028647331717,585.152810392383,448.653937513993,635.503593553493,659.942977472576,679.912448056319,497.623367429889,506.646420342136,512.025331626378,513.593578250726,789.227509642718,817.324159405597,511.035517248945,859.910606774199,877.676426768523,893.370441274863,518.909870693252,520.59616967107,930.764791611259,936.79145452388,523.045636352281,935.932097101429,934.055161196862,931.224644846937,526.25654970285,917.843694505967,909.241371069622,529.993806015904,886.477457148322,872.705770376946,857.935118431787,542.412178036031,548.765474965213,796.790171128576,762.565542613478,603.002457093422,627.948082271159,0,0,2912.37097010267,0,0,0,0,0,0,566.473210057513,693.27959228877,945.098365364263,212.821845155034,751.001575241004,651.640010191186,379.596027768988,599.729706890967,984.775810609207,557.805444666128,1004.14965558906,547.317526321197,772.270988013527,502.838857724274,430.635972212779,310.930029549023,243.920794377911,299.366961127485,270.254431224814,236.616592139884,327.988476353349,302.702790542723,427.950882935716,350.292026538807,497.319630362158,913.307833705492,513.418212631017,580.85936105167,540.930676581759,864.579254977941,788.412280081725,939.89923006285,948.550781139173,225.318594173323,218.96197910944,213.576509072218,224.491513475954,797.174066776086,915.041911024264,539.064314212801,622.193222890024,675.267089634334,372.476941931819,518.343924974841,424.99751663474,396.238160083767,600.44514701005,995.841672463872,955.316946275291,980.236508954675,554.04843652728,558.524894707408,562.647063056461,1009.61875827146,978.920025500873,535.923951715691,543.811387565034,551.608462703773,798.523252972474,723.678970971164,477.041073638545,503.438284685077,511.410594164198,357.422021691743,397.70903419371,427.573843444028,450.032853794811,337.453649408613,335.225569424327,309.51320653459,247.822999596906,263.394518803616,265.422181207916,303.889688405129,279.861350612659,290.302635446528,293.575792337868,274.349779221441,270.283153414559,267.199661977648,268.247701760267,221.647381362226,241.538914404966,258.46937447055,358.284977838372,279.67361387579,324.545814310162,292.561242799545,318.518222650065,307.598103809308,454.025312820915,395.500558900588,412.14511544552,376.480456305994,361.052387847126,334.730746997067,505.656127210538,506.093653389224,494.31520130097,802.181715111288,875.405122955116,919.627314833552,520.321407871222,517.735027639233,516.50462073038,512.381328937522,649.607207426706,541.719309885657,525.108191364674,915.798412977809,884.203347125742,854.727439128565,818.731379281736,766.052668041165,936.228712770903,944.058563365414,230.735699927206,234.96533889668,227.439371189742,837.899543380218,878.33581662059,905.65707589583,936.586535954635,511.265439379856,569.111635622717,694.607503479638,373.206750823703,481.870846760728,616.957489089929,545.169714583274,595.417317725114,1001.97233008317,972.931222890675,555.0220772099,565.911558236895,1002.24703797379,961.524236685607,524.225350284125,534.403362284895,542.604652186846,554.114649846539,827.036026985427,680.066704059797,472.084621390693,497.491873558867,514.258265312063,338.326393879996,347.924066072198,369.905274168713,462.973243884292,301.124163887759,244.575579590387,309.529742437281,274.876670639553,275.144690659603,281.139327996054,280.013168968987,273.818773981941,269.310421325077,268.59568977187,272.765656177188,379.791331396255,311.917075702135,285.451446963872,421.935232112885,436.209613184051,427.274831233314,400.914622767978,323.908700873775,508.467725504774,507.548095359651,484.676690137262,745.038336893879,819.875002257077,885.662836094369,932.543886509366,522.496946883369,522.255680050191,520.885232244784,538.786005406814,527.875216634578,526.172526968046,926.025147169608,908.253186553264,840.086695924599,932.977621801721,941.292167428837,234.045267740204,197.336371203294,867.463194516951,815.254867739575,951.310743563845,487.298111990194,596.251563322489,708.147928042642,364.555353423887,339.225424912507,453.33061219032,568.895248413397,572.996056625659,588.841272954188,576.854159079272,1004.94498117931,998.105398314054,967.294327561238,568.78294925966,556.694372724558,934.388506557203,516.824171751507,522.897344803477,531.236300504435,546.474580630383,901.477823504489,855.953195859635,637.008580307344,716.796325821862,486.319557548231,516.892206189278,322.469492166435,330.454514200401,385.655441837199,444.004484096966,290.249752552996,270.937386926485,210.375291635732,315.818203427036,284.30792469211,267.009374052626,270.022942979032,274.785581569502,284.832350086194,234.900052157894,395.90324516394,339.228540944723,288.422703270578,280.054527447804,293.386898511989,458.797289841036,388.825305831514,331.886160400154,510.646529465646,501.67989700907,473.139675316312,708.105922685307,757.208814328358,842.23975526482,948.121264097038,524.431898088773,523.526135392759,520.372100370069,534.549366041972,528.952314966956,526.402568291939,898.324161011647,824.07969601201,936.1429418552,214.518721007848,841.691932599591,937.326868529453,480.923183111758,600.973135756893,353.346775841068,462.819077582083,578.184771663997,573.592506334237,583.136472230855,581.902149067429,1004.00658159654,571.65038589623,562.400152270032,910.577789425272,504.089202817033,527.626300458379,972.062698926001,853.922643616715,675.370127593387,309.811948048426,278.583278176339,286.138118667194,272.791404656543,272.671846043881,259.358248345147,371.440299167585,286.613332312729,475.554350500303,450.171615376434,506.844964415098,714.852777197807,854.216763734899,525.773896414778,520.516852069856,517.835914303774,530.228809734467,891.378600440279,924.816914178128,194.373603865599,851.949993444098,564.652865275836,1010.08295425461,562.359992486191,511.521905353724,943.227692524544,860.277988392608,667.387505232106,313.039720724609,245.7605983238,277.771011127296,242.978033474988,361.837530533861,288.007291399646,474.117558298361,752.155380847277,520.863377822981,522.483918984341,558.239904608442,508.260869592101,945.673542788432,318.079130213367,459.041352745538,549.66075840035,902.61859785157,547.255501019297,393.970579072153,742.075547711953,1017.04268040148,375.123379246933,402.565787527993,391.081722339707,453.937033351871,326.080688487714,945.265486764152,443.423996028497,1000.41477687658,294.217553311799,278.972527648157,497.36512375659,908.351684524764,511.524048663734,515.791718934915,513.817018395441,434.688781103315,406.351443774745,532.735672569946,355.174478888178,203.118158272136,148.257157865556,886.78999332457,816.17620815807,764.344001681696,229.305999173838,216.908197919527,280.473866560231,264.455882477553,281.899734520451,797.597816727993,741.776577488527,521.577465417853,511.474658970784,328.571643309312,442.240440230918,397.614303518654,363.987331595805,483.755841897366,302.963507430898,1002.28501474072,1006.84893733979,312.1973783632,282.621699607012,456.584828574578,514.949496579569,544.30954626393,438.452156569659,374.624516730794,175.765603569857,899.753087985533,350.876372620418,410.841838077501,503.908778713926,945.475341102311,696.692093044964,546.398992260662,1024.6741564837,511.622326634465,370.680686132595,526.292535901776,162.311287409803,866.679611195607,195.392383956338,262.428524092292,814.195244528229,521.733170137312,511.910745682938,478.530676316354,526.437802386692,291.714414999222,977.433477824151,323.789555827892,284.736458004926,482.346174360048,437.4088827346,301.320344088459,993.960805300626,614.636258077501,1025.94210510078,1030.83377312688,373.981460257955,495.75711235005,588.398032427564,966.554837933422,665.236920570628,551.42254340249,808.064750474368,693.702323759678,498.550106177103,154.074889926622,169.362934001401,914.077062766475,765.697528775032,273.700280087138,521.985778400884,508.832745489126,531.666894751711,547.210971588588,1057.67813310167,1038.34219958149,512.801064385051,946.470345184882,647.007011739423,942.05836432324,507.013660141378,570.542972759294,1061.45849468334,728.924591475962,858.257759579038,414.327353864416,0,181.986423664314,0,143.251542412152,868.395676247015,857.229138452535,283.585563779098,304.448438746065,288.391957142529,322.167635647763,659.360792747439,472.507781961817,119.134589865058,765.101953631027,530.797793451286,495.576437297808,983.673286129463,864.634006220703,490.059976727156,490.597655530228,530.293558589223,374.47507964673,422.852859008844,104.017380499951,889.077489158122,289.114846160741,291.960408123599,295.158096135469,418.612061771735,85.0561015396222,454.849008090574,147.559621342011,922.512118168788,289.232642735198,296.768094221579,460.83061273316,957.057545719711,968.953014067108,498.86880371077,1030.85609509249,797.259020879165,913.213666699306,428.740664141151,479.007838302725,98.0636095337999,296.003275099119,397.592104578879,63.0742960081724,186.612989843065,306.293244389297,1004.82477540132,995.705566737317,294.54679775869,886.297190345738,610.024411178436,60.3572100082683,322.166842084181,354.73454395187,0,0,1062.08699872891,802.059597858885,293.397726298543,709.414749756939,364.637860774325,1059.28645072877,294.375997551596,559.07647015364,523.721314364912,473.985885668459,330.880153311276,298.997710107881,1129.49301464778,436.671061602719,496.308523629304,298.250354469008,146.696087629497,797.790998421257,470.601347344551,818.768237850062,643.966358300922,429.443951087619,459.908528975427,396.091647122163,1062.612601282,420.262313943819,619.722050976714,341.909617079894,674.479401428589,941.325365525454,302.044836860643,0,403.978271125319,714.816692822118,509.465862482571,853.101186615913,364.471898523723,594.721630569523,594.749459212569,1093.99098334015,372.350869999002,332.578465253343,0,1205.69970598697,0,253.841113474853,0,0,351.284087652773,204.626258702033,0,291.295416399256,422.847442795964,314.854738135378,1044.9215642155,380.753389509297,0,385.581979174093,0,294.067878174201,804.471351393916,1101.02021569865,152.019004153057,0,360.553524114198,277.117915865276,453.622191219337,0,969.905194048505,165.165149908112,267.116533346734,0,0,194.990941207315,306.125657930391,189.218500279232,203.23777110914,0,178.231380573426,191.677702577476,263.646055453639,1227.47230687747,362.946818088267,252.677864256234,484.755466639018,1050.70737050125,1135.03365889395,395.313952695808,0,1061.17632387075,1255.99126286656,956.497490389077,136.483668564676,0,0,109.254920763569,223.073693178172,277.5028926376,0,369.500080844375,0,262.093182524194,295.926107369956,1096.00844736087,1246.76455197375,737.068099376649,1234.54180874098,1377.42822465038,1038.28249561998,780.367319533351,0,0,0,0,1251.22553717438,759.505119257397,1151.14282106109,1496.2271603836,659.536582923224,1419.23265243423,873.437517898646,1301.20874990994,1545.80382886125,916.731018399474,0,1659.51796297794,2560.3682182273,0,1618.4104587341,1502.7843018466,1814.37498704346,1324.70843976035,1055.73484241365,773.12401559944,1586.76921636067,0,0,328.869065586443,200.358393208144,0,0,404.172629974878,317.447585882221,461.23340159513,0,1210.74392036748,1287.44438333083,1390.64029837521,1584.88338995088,2118.48611450982,1046.88650378596,1316.39508415115,1471.82540172882,1470.64642958364,1175.53846608186,1308.14392893392,0,1942.81524481894,1075.54461224705,1820.25956075786,1772.98817172714,1159.02155949579,0,930.321280153723,967.377743893378,634.111146322939,0,623.660972785877,478.234402733265,0,0,776.823872236809,0,1165.90711105328,916.549861791801,1448.87285049431,1012.2568691205,1217.01225959104,1294.95730119893,1381.91651651893,1437.25435699487,1620.72079874628,1272.01650374491,2047.59757540073,1928.25902276383,864.869586634877,661.800289437616,673.910946043761,0,401.497942417227,484.782645414466,1006.18653570149,1928.12201066197,1869.73034795092,2043.91067564267,2437.79832579644,2257.0293738908,2231.53908775866,2520.72491434464,2084.51309690475,2271.45899439141,2335.97739944769,2638.05012672281,1131.55670139571,745.997995848722,0,1319.50119060521,1664.72533161768,1650.4682288714,1325.78073470247,1871.17436765501,707.212979003867,0,2322.19074700555,1881.61643444718,0,2176.21150560339,916.137118435049,1612.08824668585,1276.20261295811,1395.05972557711,1185.5534064438,1585.28195250431,1734.25685730825,1551.51440015215,2380.02878311451,1648.7326417535,1934.30191798096,1695.58695801285,1988.12603921347,1489.93536446661,1826.47797529213,1965.83405307327,1240.23317705683,1505.76431753936,1473.58942195503,1955.97829160067,1826.83036208844,2430.06122341784,1144.80582056364,2178.3533728802,2504.0287326305,1789.63395477197,1577.3561828182,1949.35384021911,2309.03484271207,1837.51956807322,0,1192.87397038891,1323.58259986735,0,1732.41874270277,716.029654968429,585.146804793802,1586.835173611,2175.60234275673,1856.85035701756,2466.31269833806,642.031811679397,0,0,750.867604356895,1653.59873911584,2136.72945764869,2067.320276647,1700.63091157371,0,0,528.250867695231,290.956252410732,1875.04244931661,2121.72563223533,2054.41637867867,1070.82042432894,452.616814000406,285.245273567283,197.201012098474,0,130.085504801332,159.71553139981,0,0,202.530830341991,191.155076613278,1221.91458225525,745.39129365716,0,2868.16144995182,2659.98103990208,2813.60386541293,2747.84360241964,2764.009007453,2767.28779708622,2923.18031019948,2867.75855068986,2742.55052418965,2740.42424742642,2677.1264597477,2803.82803008647,2420.98493387935,2211.56974170798,2487.136374496,2222.84867089928,2562.38659224057,2593.46701776694,2711.70201135407,2862.16554571598,2344.64970078358,2162.2697915488,2580.06795975884,2430.95649257047,643.419720574827,617.374407378021,602.735988778508,893.473510417597,586.889952313524,582.283440589893,578.002678818502,574.350430142915,965.144321074562,568.416566066005,983.291200524073,563.782124085506,996.958399980952,559.863161429238,558.12043269088,997.729329546068,992.190099754716,553.444166744777,550.472688312634,948.717484075355,543.740860010287,902.522270035728,878.132791731752,852.257113521033,825.15881503968,524.95278944849,521.435563847157,518.347643113401,516.203730780139,519.105554795795,604.092113287185,572.65775538201,546.347739978422,488.045634240839,476.876466776474,466.282491074198,441.517902696385,444.025287269992,432.156577652391,403.187041937226,374.405330407238,363.590833609873,371.629774867901,344.307800824764,335.589148458276,327.017460686322,319.423322446083,312.240025012406,299.760603943436,289.671847604216,294.347684847373,289.060697754892,284.439220123962,280.073978437145,252.366428190775,273.058655105743,270.205338785558,267.972281680986,265.968864448826,243.854572192686,263.160449956172,262.363975544654,252.965498344505,262.53471773229,263.225505191023,264.963004847736,267.144036379212,295.810420664415,308.608994738357,278.495686114859,338.339998821033,291.285612544263,299.001027564663,307.136877104672,315.65775236554,420.050145865428,437.3524611943,350.822317430875,455.984302427872,385.832660938669,398.023089612095,413.036165569379,425.773599220888,437.577282897921,610.884275678843,459.800742928007,470.519774458166,481.887509167668,686.423837075492,701.981258164361,722.595965557734,751.504949822519,508.908737256783,509.605998875089,840.052267163175,512.902795749218,514.929163569779,517.000286361992,909.658183316061,926.612927018271,521.540374013803,522.291527058232,936.667174398937,523.803666265434,524.628568134207,525.428280407511,925.164205620222,527.212113673821,528.356370001339,898.818980424445,531.92115180475,534.412915621749,537.543780188471,841.039277320893,820.563031726494,557.489394176053,566.69662396563,709.715060852636],"Archive216_field4":[8995770,8366066.1,2069027.1,2698731,6225072.84,6099132.06,4839724.26,4965665.04,7522262.874,7496465.32712903,7470667.78025807,7444870.2333871,7419072.68651613,7393275.13964516,7367477.59277419,7341680.04590323,7315882.49903226,7290084.95216129,7264287.40529032,7238489.85841936,7212692.31154839,7186894.76467742,7161097.21780645,7135299.67093548,7109502.12406452,7083704.57719355,7057907.03032258,7038221.38370129,7018535.73708,7003602.75888,6988669.78068,6973736.80248,6958803.82428,6943870.84608,6928937.86788,6914004.88968,6899071.91148,6884138.93328,6869205.95508,6854272.97688,6839339.99868,6824407.02048,6809474.04228,6794541.06408,6779608.08588,6764675.10768,6749742.12948,6738029.63694,6726317.1444,6723168.6249,6720020.1054,6716871.5859,6713723.0664,6710574.5469,6707426.0274,6704277.5079,6701128.9884,6697980.4689,6694831.9494,6691683.4299,6688534.9104,6685386.3909,6682237.8714,6679089.3519,6675940.8324,6672792.3129,6669643.7934,6666495.2739,6663346.7544,6660198.2349,6657049.7154,6653901.1959,6650752.6764,6647604.1569,6644455.6374,6641307.1179,6638158.5984,6635010.0789,6631861.5594,6628713.0399,6625564.5204,6622416.0009,6619267.4814,6616118.9619,6612970.4424,6609821.9229,6606673.4034,6609312.1626,6611950.9218,6621006.6636,6630062.4054,6639118.1472,6648173.889,6657229.6308,6666285.3726,6675341.1144,6684396.8562,6693452.598,6702508.3398,6711564.0816,6720619.8234,6729675.5652,6738731.307,6747787.0488,6756842.7906,6765898.5324,6774954.2742,6784010.016,6793065.7578,6814665.27867097,6836264.79954194,6857864.32041291,6879463.84128387,6901063.36215484,6922662.88302581,6944262.40389678,6965861.92476774,6987461.44563871,7009060.96650968,7030660.48738065,7052260.00825161,7073859.52912258,7095459.04999355,7117058.57086452,7138658.09173548,7160257.61260645,7181857.13347742,7194816.846,8680918.05,5217546.6,2383879.05,5847250.5,6162102.45,8523492.075,8838344.025,6791806.35,7421510.25,7213183.47352512,7163490.5059523,6805653.75366673,6609106.44912255,7476355.4868386,6616593.38033048,6674870.43724182,7542372.71429043,7166784.92438699,7258599.69870979,6998187.76298879,7103814.41748398,6856571.07569828,6911706.79086172,6807175.94346172,6653185.72212255,6634294.60512255,6749072.25467745,6714438.54017745,6590215.33212255,6568175.69562255,6679804.82567745,6547394.11239877,6664062.22817745,6761256.07386952,6716206.54013048,6824646.26646953,7257149.95730901,7190868.65848166,7000049.44150544,7086447.52498931,6843017.13399532,6762454.7119248,6627204.87063065,6621700.52712255,6615403.48812255,6633501.90963065,7463123.33518748,7321570.2056128,6580370.41313047,6628177.52408121,6646289.00768121,6679304.53247807,6752040.22829828,6707241.29369828,6708396.45588347,7504009.77219961,7153552.77273587,7244177.5649999,7205147.86647781,7207004.60496785,7220236.75661897,7271831.8503609,7063594.73690312,6997488.59173164,7046103.59466172,7066403.17168078,7117046.5691351,6890525.12489602,6860659.16849601,6866907.85626172,6877752.74166399,6907618.69806399,6774260.41067745,6785740.8051011,6773960.85988707,6803087.85066399,6659482.76112255,6677581.18263065,6671284.14363065,6652393.02663065,6640591.64412255,6658690.06563065,6730973.83316935,6733329.65717745,6742775.21567745,6724676.79416935,6698695.94267745,6708141.50117745,6690043.07966935,6696340.11866935,6596512.37112255,6614610.79263065,6608313.75363065,6586274.11713065,6577621.25412255,6592571.15613065,6661706.40416935,6673507.78667745,6655409.36516935,6573100.978979,6555581.61762255,6688810.13946952,6665085.06718194,6638871.59657932,6645963.80666935,6788423.29926953,6749671.93011879,6731560.44651879,6670927.83113048,6698095.05653048,6745902.16748121,6910074.88715908,6845276.32454617,6813062.12271879,6794950.6391188,7207456.98973618,7153505.27815306,7061271.53325585,6913651.35802157,6994213.7800921,7037412.82183403,7080611.86357597,7123810.9053179,6869461.27177963,6799818.09225339,6630586.05218777,6646095.98763065,6639798.94863065,7441187.43947932,7373165.29935473,7359933.14770361,7308338.05396168,6591954.55688121,6610066.04048121,6661687.88765097,6690693.90505391,6756128.32109601,6796839.16289828,6785994.27749601,7474350.57416584,7131616.87702771,7234807.06451158,7168641.66287703,7293767.74606907,7050362.585252,6980937.87648658,7001304.66006172,7012149.54546399,7036843.63613775,7138982.46484326,6911303.74023286,6851571.82743286,6832953.80706399,6856974.12632714,6916706.03912714,6767963.37167745,6749864.95016935,6756161.98916935,6812175.19172714,6674665.32518777,6655774.20818776,6727592.65161224,6727032.61817745,6708934.19666935,6715231.23566935,6692398.90367745,6674300.48216935,6680597.52116935,6692958.93711223,6611694.93518776,6589655.29868776,6602249.37668776,6658325.22261224,6573680.03913065,6706921.62306952,6677225.99571879,6659114.51211879,6642582.62511224,6776839.1555188,6752384.53374903,6716161.56654903,6652816.34753048,6700623.45848121,6727790.68388121,6761301.04745097,6974873.44977198,6915910.54857242,6872711.50683048,7127061.14036876,7104470.57499779,7023908.15292726,6907815.69660823,6951014.73835016,7063856.95961834,6891624.9196764,6822769.34154251,6628197.87780949,6571923.36051685,7415839.55907819,7409662.44748855,7286402.15825352,6589241.95325097,6625464.92045097,6671482.25042636,6690965.24249701,6626607.4865251,6747040.98003286,6806772.89283286,7413384.97993559,7448103.36082503,7512704.4607897,7106268.99662658,7100091.88503694,7204173.31479922,7319115.62647019,7325292.73805984,6971182.72533291,6971438.70366172,6967350.61086399,6991370.93012715,7177336.35146712,6916302.98849828,6926917.40835135,6837319.53915135,6800658.14583771,6897244.29271155,6930958.32740865,6761666.33267745,6743567.91116935,6752780.80761223,6863088.87332229,6672277.15080949,6616002.63351685,6597111.51651685,6729980.82599051,6711850.05411224,6677216.33961224,6695347.11149051,6751621.62878315,6609306.76080949,6553032.24351685,6587267.12430949,6530992.60701685,6560690.43285321,6660713.39699051,6716987.91428315,6725033.10666952,6643715.63214903,6682548.36721455,6779551.75914903,6789691.06252247,6706367.20377364,6603097.87812707,6682511.97488121,6716022.33845097,6702711.03792707,6980709.11118532,6932665.45253005,6846267.36904617,7104897.49247199,7067107.19466919,7173753.07060587,6977458.87613447,7022882.66032074,6857889.49325556,6598086.07328745,7409425.91280298,7268822.38402471,6533049.09826606,6569272.06546606,6659482.11271301,6714327.14186424,6766502.72644845,7375022.03784478,7422299.54687074,7479078.64937426,7099855.35035137,7344906.90625783,7325529.27274541,6956786.94322099,6967619.72072229,7031641.09651155,6921230.1337255,6856437.13492772,6816129.27140301,6786255.34328315,6642165.34628745,6751815.79621455,6717182.08171455,6725458.91601255,6579194.95628745,6557155.31978745,6690825.20151255,6774751.57607293,6695337.47931879,6835744.61413394,6636463.81640023,6674133.45802859,6997464.01514295,6957443.62793044,6881975.25095379,7138632.91889283,6930766.94589736,6847481.30154963,6554749.04756944,7364006.20522017,7476552.90813888,7054435.64276854,7380756.11637172,6952148.59515699,6935556.14285298,6891509.56904597,6767316.00815771,6760092.63051255,6598828.32056944,6768795.94173056,6535857.93056944,6513818.29406944,6734162.22723056,6741385.63779977,6604381.29830525,7038438.31444055,7150995.91226736,7357373.33002825,7000961.85840229,6884246.48356605,6803429.65623056,6773468.15589476,7418805.56193509,6868010.26006481,7368243.40569518,6667534.4661225,7089557.384894,7010238.74051922,6803164.90071897,6530806.18869352,6704027.66471091,6933767.44802875,6750266.18431391,7204896.79709583,6526121.74446154,6943582.91486412,6819533.61331391,6784899.89881391,6855885.77096597,6624797.34004085,6898612.72119329,7026821.70814077,7068164.25182875,6664100.52545106,6492365.95518578,7142520.65120267,6626695.28172199,6551999.68777581,6482772.90384674,7322905.07494,7356041.29109207,6720392.88025813,6596078.96077581,6526852.17684674,6771545.30152419,6441842.15034674,6736911.58702418,6621689.75873651,6516948.95792245,7113560.59504536,7238999.18976953,6806179.01602418,6756159.69546349,6858795.75931705,6723666.88277553,7047884.98630187,6806138.37095326,7046470.72864046,6839455.05567642,6875405.79995326,6840772.08545326,6860900.49627757,7020230.4207899,6667509.64994858,6444989.93410174,6574151.68491126,6463881.78684674,6785148.46591551,6850906.97550393,6771065.76493135,7054993.52728616,6825974.12073762,7563874.97650245,7300752.09052212,6953624.47560333,6971972.97370508,6474634.31152237,7097215.29471006,6482609.14053037,7299085.80903044,6526688.41353037,6489028.85852649,6545567.30403054,7303716.55446479,7182262.05879635,6978671.73443667,7448035.25174877,6806302.13426963,7127664.17471088,6875569.56326963,6840935.84876963,6842031.89287388,6832282.15016948,6527239.26548086,6731797.8485134,7629892.20395427,6889136.03642016,6958057.02716599,6399723.4171544,7154706.46958337,7313756.58482907,6701232.62017438,6547735.52780281,6505106.52610727,6793113.83905513,7141554.90121594,6936538.34058156,6506922.87756765,6532765.84197756,7254993.47968266,7433540.58245326,6562208.80255547,7243138.25331153,7126195.75896826,7363952.85882953,7590630.18336707,6784460.6057009,6903600.2234108,7187573.63215135,6755272.6393648,7204195.44214419,7147586.09399047,7311868.07646549,7599183.76748361,6844548.50562717,7037824.08978657,6935019.40497361,6931856.51577685,6130617.255,6535066.59194421,6193587.645,6348298.58944735,6582358.17215024,6406189.24162204,6798806.94219718,6940104.1413348,6833440.65669718,7009371.57033481,6410575.82022931,6965693.10162945,6442396.93760567,7392143.37927729,7265039.14578448,7424342.54432975,7077869.86013438,7238526.13502869,7300105.0608815,7450773.51656226,7747712.96846139,6942927.85183345,7081651.23648194,6395870.83088169,6483585.78617298,6928939.16946061,6892178.29777515,6975837.9854508,6971660.21257803,6348807.13346519,7053284.37533594,6435211.6373023,6538098.28503848,6933305.12021648,6916940.44810931,7161923.30861198,6591038.41646197,6390467.11258527,7098016.3532461,6951106.71219502,6964503.73236462,6804902.71664867,6279049.48435401,7315672.3426627,6395483.81577262,7008291.74975797,6890904.25122911,6313921.2057172,6437626.1187243,7055204.79473259,6993193.63407452,6595723.69484198,7114747.75759361,6671075.64785263,7759023.79612057,6307245.41887955,7141504.72909812,6846304.04226222,6177845.0475,6209330.2425,6840957.01945897,6826221.78563081,7048614.92238187,6527779.25968911,7079872.03466759,6530138.57302319,6398782.00571261,7364502.48767013,7402698.52260934,7096057.14673498,7273643.08776837,7267322.26311518,6589528.6779623,7670387.35371416,7523864.62453813,7138937.27150989,6277743.26524848,7204932.30543377,7709596.33822008,6171871.83639421,7054428.09323988,7132002.05719438,7297046.8777265,7333090.96352289,6805419.4219376,7580717.26091572,6279414.7889854,7460849.32027532,7595749.96842812,6638567.95207918,7405889.74444422,8444779.0875,7681016.07722465,7425392.02286536,7932969.04735088,6470551.25600789,7716910.35455209,7354381.28227149,7667285.65583355,6200666.31645115,7794120.0953274,7670993.08546254,5595368.94,6108408.12698133,8208640.125,8100190.3497365,8484135.58125,5910220.89,7874462.78641592,8101648.79098015,8759631.0375,7721424.44557428,7346372.36541544,8135189.7637501,5795435.42436184,8162248.86323609,5469428.16,7558577.7816312,8602205.0625,7914789.81025476,6889409.07518148,5941828.40286732,8256957.26133546,7578936.225,7843381.60975453,8077945.53005832,8088577.24485818,5784280.11,5578999.98564243,7956629.07765014,8456347.62635826,8798987.53125,8917057.0125,8481650.39106598,8418875.97556966,8416992.43377359,8519696.84260381,8720274.54375,8361096.62712925,8286777.91519773,8014363.43667134,6330184.71794742,7860277.3947113,8137916.23879856,6837493.93019467,6102687.86068904,5316367.40507042,7973459.85202718,6634380.375,6207786.83445528,5389155.73312243,5881834.29164989,8159715.96108726,8405422.59375,7972501.1625,7803002.53445753,7412444.41302387,7633701.46385833,7185371.2875,7143056.08037592,8641561.55625,7991844.78957483,7725533.84269784,6552851.99100973,5896643.94057063,6510826.84220457,6190754.40116677,5836241.18709666,6206515.91368346,5919278.48002849,4272990.75,6240815.4375,5060120.625,5453685.5625,5318555.98291151,5227964.61157576,5648199.41792876,5471002.34490937,5616793.86729543,4670834.5192084,4853345.43561566,4995244.74314687,5110648.9134262,4441614.95085783,4666555.6875,5063788.74603406,2541305.025,3485860.875,5188706.1639702,5493283.37122748,4632623.96256054,5686969.91428457,3833184.12741096,4128947.35802555,4166032.77962299,3879425.8125,8562848.56875,7866279.00903598,8256323.21403019,5280516.99,7027945.3125,7190818.74083017,7554300.22800116,6839607.93260211,7815075.1875,5757332.83472406,6085607.03171298,5766836.7592485,4849200.7044817,3389533.7367371,5996745.15242934,5294653.14061737,5147501.93376074,5389662.99094394,5040917.11262656,4761590.83250955,4902694.65,4319884.41238243,4504509.10640644,4646229.56647164,3719103.4623755,5698047.04683329,6004676.475,5443196.54808239,5752297.90316816,6209500.50730527,5611111.5375,5718526.1897243,5435739.28487621,3643286.85,4430416.725,5102185.90897068,4823981.6625,5148360.68492836,4667286.05697678,4863579.93333659,6240222.45907404,5625733.12407841,5461472.5453509,5167476.80160554,4994053.13681638,4431781.73937228,5017455.10304093,4082496.76991709,2620018.0125,6226629.62433165,6503545.14282756,6768800.54683904,6398241.4125,6468731.52603743,5992754.31756555,4081044.86371658,4401139.82036728,4229430.23752297,3794132.73014751,3439988.80941345,3522697.5617515,3787754.06145053,3015017.5844336,4091755.46968319,3805429.35938582,3698666.55146016,3241052.7522913,3222419.27497785,4353774.5709368,4036851.7875,4425390.72716087,4438014.01611055,4751010.3265717,3543550.8516252,3305908.14465372,3456458.00751599,3092295.9375,2580661.51875,2959639.36532668,2659374.50625,3052530.9045139,2911372.3123484,3880907.16305702,4791032.34810597,4088040.35156246,3559469.64122087,4251422.12096684,4015261.45066554,4562108.31578957,2226453.075,4248249.89746937,3248615.62477189,4234624.03871441,3679158.61824099,4608514.91423274,3988986.81576445,3852466.83989126,4559158.82720645,4247751.08457007,4815702.95958256,3916027.84370912,3989514.9176509,3389515.80859713,4362858.69751289,3698224.47936439,3439155.61404191,3626172.45440244,3492395.46203104,3517389.98762826,3112169.91840397,2147740.0875,2856156.975,2953572.14586651,3272609.75178272,3249721.9125,3045849.83642884,3168322.79429959,3472161.41564888,4189335.56076843,3827672.28226586,4192455.13920998,3531979.93357712,4618118.74306568,4934179.845,4871209.455,4559359.7978489,2604185.39382583,2716783.11532981,4086041.81875694,4448272.21996086,2108383.59375,2481709.847904,2700622.46730022,2388643.74584534,2774119.36789056,2187096.58125,2488431.01459973,2393564.63723834,8123122.96774226,8296332.92786905,8183226.76519564,8602205.0625,8523958.83186213,8627111.97690384,8956413.50625,8877700.51875,8588517.89455068,8247042.95869848,5291967.40827119,5305221.88283537,5154576.21,2462592.0375,3029207.37518407,2823093.90354984,2501948.53125,2719879.75943876,3015360.63321226,2423235.54375,2676893.67964274,2305166.0625,2812623.11594795,3123556.34814337,2831630.51312845,2853259.85519838,3467615.20677256,3117102.99926985,3585926.24679971,2700626.29080703,3088064.30852354,2632219.82121128,2344522.55625,2767004.44068608,3057434.37103102,2265809.56875,2468568.85916529,7496465.32712903,7470667.78025807,7444870.2333871,7419072.68651613,7393275.13964516,7367477.59277419,7341680.04590323,7315882.49903226,7290084.95216129,7264287.40529032,7238489.85841936,7212692.31154839,7186894.76467742,7161097.21780645,7135299.67093548,7109502.12406452,7083704.57719355,7057907.03032258,7038221.38370129,7018535.73708,7003602.75888,6988669.78068,6973736.80248,6958803.82428,6943870.84608,6928937.86788,6914004.88968,6899071.91148,6884138.93328,6869205.95508,6854272.97688,6839339.99868,6824407.02048,6809474.04228,6794541.06408,6779608.08588,6764675.10768,6749742.12948,6738029.63694,6726317.1444,6723168.6249,6720020.1054,6716871.5859,6713723.0664,6710574.5469,6707426.0274,6704277.5079,6701128.9884,6697980.4689,6694831.9494,6691683.4299,6688534.9104,6685386.3909,6682237.8714,6679089.3519,6675940.8324,6672792.3129,6669643.7934,6666495.2739,6663346.7544,6660198.2349,6657049.7154,6653901.1959,6650752.6764,6647604.1569,6644455.6374,6641307.1179,6638158.5984,6635010.0789,6631861.5594,6628713.0399,6625564.5204,6622416.0009,6619267.4814,6616118.9619,6612970.4424,6609821.9229,6606673.4034,6609312.1626,6611950.9218,6621006.6636,6630062.4054,6639118.1472,6648173.889,6657229.6308,6666285.3726,6675341.1144,6684396.8562,6693452.598,6702508.3398,6711564.0816,6720619.8234,6729675.5652,6738731.307,6747787.0488,6756842.7906,6765898.5324,6774954.2742,6784010.016,6793065.7578,6814665.27867097,6836264.79954194,6857864.32041291,6879463.84128387,6901063.36215484,6922662.88302581,6944262.40389678,6965861.92476774,6987461.44563871,7009060.96650968,7030660.48738065,7052260.00825161,7073859.52912258,7095459.04999355,7117058.57086452,7138658.09173548,7160257.61260645,7181857.13347742]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive217.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive217.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive217.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive217_field1":[0,0,66663.9632996015,66663.9632996012,33331.9816498007,0,33331.9816498007,66663.9632996015,33331.9816498006,49997.9724747011,16665.9908249003,49997.9724747009,33331.9816498007,49997.9724747011,66663.9632996014,58330.9678871513,58330.9678871513,54164.4701809261,46873.0991950323,66663.9632996012,42706.6014888071,36391.7534028097,37899.1041354705,28013.5119900495,19579.6048808828,16665.9908249004,19579.6048808828,58330.9678871511,49997.9724747009,58330.967887151,16665.9908249003,28447.5216239235,0,24998.9862373506,29165.4839435756,39581.7282091384,0,41664.9770622507,45831.4747684758,25560.7412076295,8842.36487967291,8842.36487967292,8332.99541245016,11246.6094684327]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive218.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive218.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive218.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive218_field1":[0.00016593666299,0.0014616554372,0.00097636876643,0.00073418993914,0.00034303162232,0.001765189677,0.0070532878256,0.0071448576013,0.013963803084,0.063683260658,0.0021942600054,0.010490095959,0.029230300468,0.33535933096,0.29648254099,0.0020270818753,0.0090755099711,0.019921542932,0.16825496213,0.021103966066,0.00084826384278,0.0019778535838,0.0028230997929,0.0027237398071,0.00019587032999]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive219.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive219.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive219.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive219_field1":[0,0,0,0,386.191630084551,0,0,281.728192193028,0,100.765641049373,680.210356746286,374.077810262989,37.2983067840327,0,934.454556081105,455.775335844701,282.609024192488,294.551676196015,261.933149146007,-574.99699918167,436.817585398613,528.712517738763,239.075517840709,137.552052674321,351.977870014966,0,-288.355466199921,137.486899534448,0,193.036092280616,0,548.920901597407,0,0,-79.4087972492432,-80.9619917225202,0,0,259.624776440253,564.636101563093,365.570444079961,-408.618084488476,521.037258704047,-146.166347978329,0,0,0,0,386.191910372077,0,0,281.728279038288,0,100.764940024809,680.210356746286,374.077810262989,37.2976733513491,0,934.454312926597,455.775418116172,282.607026898704,294.551676196015,261.933140301794,-574.99699918167,436.817585398613,528.712517738763,239.075140123504,137.55178416582,351.977870014966,0,-288.356663536623,137.486899534448,0,193.036092280616,0,548.920901597407,0,0,-79.4105896852533,-80.9642874359434,0,0,259.624776440253,564.636101563093,365.570444079962,-408.619091270611,521.037258704047,-146.166227955887,0,0,0,0,386.192206192279,0,0,281.728370699109,0,100.764200133729,680.210356746286,374.077810262989,37.2970047622854,0,934.454056287572,455.775504949501,282.604918885004,294.551676196015,261.93313096344,-574.99699918167,436.817585398613,528.712517738763,239.07474148119,137.551500761227,351.977870014966,0,-288.357927211577,137.486899534448,0,193.036092280616,0,548.920901597407,0,0,-79.4124814558485,-80.966710382,0,0,259.624776440253,564.636101563093,365.570444079961,-408.620153890136,521.037258704047,-146.166101298767],"Archive219_field2":[0,0,0,0,5966.74466232496,0,0,7920.52215566202,0,6210.19394079922,3110.25753692365,5850.4330597446,4619.60501803403,0,7272.49153809935,7474.26819562248,3532.97639895954,7417.21243532687,6962.76153261402,7236.86224683884,6475.34461070431,4516.3211062864,6075.96970636887,5130.97998253496,4415.35073681284,0,2821.64148259568,7164.94886353252,0,4531.32463604092,0,5070.87383605673,0,0,2332.13899907344,2966.88751918441,0,0,3337.54794189342,2530.37225970453,2276.97115009894,1044.80473480135,962.309571113546,2770.35391476321,0,0,0,0,5966.74754688986,0,0,7920.52332952839,0,6210.19486969833,3110.25753692365,5850.4330597446,4619.60697399624,0,7272.49233795219,7474.26861772385,3532.97616487807,7417.21243532687,6962.76283447114,7236.86224683884,6475.34461070431,4516.3211062864,6075.97095874303,5130.9823187463,4415.35073681284,0,2821.64320536767,7164.94886353252,0,4531.32463604092,0,5070.87383605673,0,0,2332.1406702249,2966.88793298795,0,0,3337.54794189342,2530.37225970453,2276.97115009894,1044.80861924415,962.309571113546,2770.36226940433,0,0,0,0,5966.75054714432,0,0,7920.52604452665,0,6210.19569920606,3110.25753692365,5850.4330597446,4619.60907001891,0,7272.49509983617,7474.26823005304,3532.97542126021,7417.21243532687,6962.76441885762,7236.86224683884,6475.34461070431,4516.3211062864,6075.9722733938,5130.98478823006,4415.35073681284,0,2821.64501997595,7164.94886353252,0,4531.32463604092,0,5070.87383605673,0,0,2332.14242029609,2966.88840596316,0,0,3337.54794189342,2530.37225970453,2276.97115009894,1044.81271977034,962.309571113546,2770.37108695899],"Archive219_field3":[0,0,0,0,3.76817508917816,0,0,4.98755353536909,0,3.903023283697,1.99426920188192,3.69443378912882,2.90099673742026,0,4.62189155232239,4.71846510006224,2.23456345768214,4.67254807922548,4.38534865944238,4.50482285275751,4.09048305607984,2.86702360380388,3.82748012373374,3.22815986229911,2.7925791759115,0,1.75239903375347,4.50440546295295,0,2.85537522700985,0,3.21625561761915,0,0,1.45835991463562,1.85654791002581,0,0,2.11049635670929,1.62315771524183,1.45166534948764,0.629940912407941,0.636512250014929,1.72913654811189,0,0,0,0,2.88303822472403,0,0,4.78452503007572,0,3.47435569595524,-0.196685469160869,3.2930467618505,2.11017804954782,0,4.51486211304583,4.35788741598261,2.32468366545613,4.23134490678421,3.99873280854776,4.29216218235836,3.61785726498789,1.92145189822353,3.18675832220239,2.42129635763164,1.87170761504744,0,0.829324348731388,3.87827274182913,0,2.6709052881449,0,2.37462504886435,0,0,0.515569942741533,1.56177468250297,0,0,1.3173640829384,0.0819204392507335,-3.0112278372637,-1.61446039095497,-2.23893747092324,-1.52996840670668,0,0,0,0,0.227613784382375,0,0,4.17542660803697,0,2.18835814889394,-6.76954992230341,2.08888513003609,-0.262272491246256,0,4.19376629233147,3.27615228358272,2.59504067928318,2.90773241389021,2.83889414465824,3.65418055691694,2.19998542487418,-0.91526341598984,1.26459544559001,0.000726906868698403,-0.890893057594535,0,-1.93987175807297,1.9998734984523,0,2.1174955970331,0,-0.150271985342319,0,0,-2.31281601278988,0.677454532534633,0,0,-1.06203261159381,-4.54179021678269,-16.3999140285719,-8.3476938161401,-10.8652865237342,-11.307314784387],"Archive219_field4":[0,0,0,0,5979.23072306749,0,0,7925.53259209118,0,6211.01261714595,3183.77010045087,5862.38132873704,4619.75649814102,0,7332.28203569591,7488.15320895419,3544.26227717899,7423.06020677611,6967.68802157172,7259.67058634331,6490.06272406842,4547.16411418436,6080.67262936816,5132.82442417287,4429.35868366431,0,2836.33788574184,7166.26926330905,0,4535.43537527347,0,5100.49859932492,0,0,2333.49098881772,2967.99256103617,0,0,3347.63136309443,2592.60493220845,2306.1312788521,1121.86722461256,1094.31254254094,2774.20770747945,0,0,0,0,5979.23312740542,0,0,7925.53364313679,0,6211.01327996592,3183.76948193497,5862.38108952674,4619.75802001398,0,7332.2827313532,7488.15341675325,3544.26194254929,7423.05994216652,6967.68908957231,7259.67045749637,6490.06244339621,4547.16361630842,6080.67349637706,5132.82630831108,4429.35819880752,0,2836.33930120893,7166.26889710252,0,4535.43526288816,0,5100.49813805077,0,0,2333.49232123947,2967.99286756045,0,0,3347.6309570242,2592.60442539574,2306.13278790724,1121.8721937369,1094.31464783012,2774.21592720128,0,0,0,0,5979.23544976938,0,0,7925.53601537897,0,6211.01351112501,3183.77667279309,5862.38053678919,4619.75963607979,0,7332.28524732427,7488.15248368154,3544.26122085306,7423.05930567884,6967.69010339337,7259.67010833308,6490.06180788955,4547.16330245669,6080.6740907786,5132.82819821689,4429.35789293939,0,2836.34177701547,7166.26812672213,0,4535.43497074999,0,5100.49758749055,0,0,2333.49522388056,2967.99307286479,0,0,3347.63086628318,2592.60840231011,2306.18913473025,1121.90629446097,1094.36629611196,2774.24734729888],"Archive219_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,2732465.1375,1669839.80625,2319221.953125,2201152.471875,2702947.7671875,3153087.66445312,1905978.76875,3536813.47851562,4072277.02434082,3766708.38191106,4467048.82294566,5144221.38575526,5093854.7625,4984869.16245088,2466808.8046875,3204743.0625,2540602.23046875,5566132.6875,4572258.27409405,6628758.01875,4503507.35625,4267368.39375,3529434.1359375,6392619.05625,3795090.46875,3440882.025,4872973.52761088,5939681.20965504,5710759.45846776,6097445.353125,5654892.68035307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive220.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive220.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive220.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive220_field1":[0,0,0,0,694.035183246912,0,0,411.73717004599,0,278.090413786591,396.264098558004,681.611234963752,121.745447728937,0,-66.80146532846,539.898282821606,212.497689534353,479.993984251361,563.328405637686,580.914575115792,-224.17245547841,116.724858970237,0,636.252396633249,-41.3953816170495,0,0,-312.71788502357,0,0,511.403838800569,34.5948598796551,537.914353365102,240.177330452803,689.381309202243,510.677635857039,0,588.907381602075,743.407012204452,-131.041543553878,282.653272738783,0,-2298.33934605363,677.334318052785,680.548760062593,653.292606596587,0,243.53699030495,0,516.832296806155,487.021600881587,0,525.681424489607,472.969708063583,0,356.476672786259,0,325.962083485303,699.466119850054,-393.866892077583,539.698376233749,0,266.909245364611,227.208615915367,-76.4178209576794,-1249.55037503426,0,0,0,0,-232.986346187481,0,0,-2845.1090607273,0,0,0,0,694.034217819673,0,0,411.736411706998,0,278.095599130302,396.265919286042,681.613057159552,121.745900483196,0,-66.8006345287303,539.903667542814,212.497342078614,479.995589763157,563.333687850687,580.915212836181,-224.174828140867,116.724268861868,0,636.261123471221,-41.4022518925091,0,0,-312.723776662814,0,0,511.40253901442,34.5962912279937,537.91114081926,240.177654677591,689.382802136224,510.678064967733,0,588.910323241868,743.419087938775,-131.041132158564,282.655842437207,0,-2298.34422077562,677.330672676959,680.549301592146,653.294102102758,0,243.540985203419,0,516.834891669177,487.026413024557,0,525.683229276223,472.971813800351,0,356.480778929836,0,325.966091488535,699.466832239472,-393.8661817377,539.695030893681,0,266.911087193278,227.210640368791,-76.4150058006325,-1249.55178474949,0,0,0,0,-232.987312403972,0,0,-2845.11646766181],"Archive220_field2":[0,0,0,0,5288.95342723887,0,0,6741.969229955,0,5007.00491377768,2805.08100320028,4754.87596540772,2911.34753471578,0,5794.95101947989,6399.27369750165,301.41977152252,5415.40560863776,6739.01924614031,6339.43180036682,1565.15968631179,2867.05952047855,0,5283.09987896647,1695.59013658075,0,0,1565.53674981595,0,0,6612.24781459404,5718.11820288848,6324.22582417268,6591.88997644102,5809.85220373316,6058.44623903246,0,2822.54339502067,5070.42251002648,3529.1216163561,2917.56939974232,0,-1535.41056572165,5605.52423594377,5810.00199851717,4505.54384015985,0,2691.33192363604,0,3864.12833922516,2814.56522733216,0,3466.5937469325,4603.78490614733,0,1920.16285451642,0,1163.09493093878,5300.68969713492,2559.27713614068,4746.35255321633,0,1558.84009526917,3515.8174350978,4036.69019232176,2898.73563603227,0,0,0,0,354.743236054489,0,0,15.5520647030176,0,0,0,0,5288.95689763582,0,0,6741.97337397802,0,5007.00348432097,2805.08713338463,4754.87747427835,2911.34592752137,0,5794.95751882067,6399.27479934909,301.418665770798,5415.40770437151,6739.02277214095,6339.43293728945,1565.15531542703,2867.05728951844,0,5283.09534424811,1695.58964329944,0,0,1565.54449181909,0,0,6612.24689971204,5718.12512130072,6324.22858118392,6591.89203509544,5809.85324753606,6058.446576485,0,2822.54012040654,5070.41271312882,3529.12960016875,2917.56547421969,0,-1535.39478801254,5605.52949604452,5810.00409569673,4505.54653942529,0,2691.33281100289,0,3864.12940041597,2814.56840324515,0,3466.59820039862,4603.78863229474,0,1920.16808655097,0,1163.10325101807,5300.69218219574,2559.29478569645,4746.36193579962,0,1558.85527282373,3515.82451958984,4036.69543879914,2898.74612923938,0,0,0,0,354.7480123085,0,0,15.5639446347481],"Archive220_field3":[0,0,0,0,3.40099835442083,0,0,4.59184983476802,0,1.45322301462763,1.79687350348228,3.01856150139797,-1.79470877088492,0,0.405190779198534,3.66274781674693,-0.857398492684896,2.31987885068989,2.47790483449743,3.92924059796864,-1.87094286236919,0.711731745757713,0,2.96256493542818,-0.261270277987711,0,0,3.72122251390122,0,0,4.44291527155771,3.59485190938445,4.43324723333587,4.07099421044465,3.59269414789341,3.86023561545817,0,1.80329214869846,2.66533603464769,-0.000579317591492421,2.10220860056398,0,7.19056775288319,3.64507014303416,3.70343976467645,2.87339422838612,0,1.70640283269478,0,2.45433048403579,1.79494589114535,0,2.22175479394408,2.85092062943973,0,1.22397250208491,0,0.746866435615735,3.38867781860903,1.52739310473638,3.38106678290001,0,1.00775872758528,2.18808633891378,2.83393930894643,1.92271722353731,0,0,0,0,4.32557199902664,0,0,0.44312770634931,0,0,0,0,1.14416223606853,0,0,3.67881820351118,0,1.45103182665885,-3.1290279760684,2.23406934445513,-0.314727726226504,0,0.522324889739728,2.71701892778256,1.31657785509058,0.741106580744471,2.73783899513347,3.19751891888538,2.09683075092745,-1.44473486099372,0,0.794393356582539,-1.02865007664639,0,0,-5.51493589931511,0,0,3.40174681326677,3.26579559610981,3.19951465305353,3.72276036568266,1.86772271724468,1.62588250564906,0,4.62447357997442,-0.57014838064799,-4.97347365906891,-5.11450361794281,0,-8.37611567787592,1.84849776536832,2.17118498162803,0.491894165624954,0,-0.0134527460836509,0,0.915164945446224,-1.99537518045872,0,-1.4981088444974,-1.00542905249823,0,-4.34750257504325,0,-8.08364930357705,1.11726916723824,-12.3379836810289,-1.31748809712729,0,-12.1788948540999,-1.83961576737505,-1.81318270920241,-3.20224000643641,0,0,0,0,-4.57875058982566,0,0,-0.775075728889032],"Archive220_field4":[0,0,0,0,5334.29702565167,0,0,6754.53164030952,0,5014.72178656912,2832.93273818414,4803.48294821105,2913.8925242565,0,5795.33604876547,6422.00960969787,368.795176018209,5436.63659929746,6762.52359940135,6365.99346009841,1581.1330221958,2869.43469924486,0,5321.27524378772,1696.0953856288,0,0,1596.46848955277,0,0,6631.99628976372,5718.22398210274,6347.06261040253,6596.26524516418,5850.61040628682,6079.93234998795,0,2883.32557522435,5124.63125697783,3531.55366222421,2931.22986034595,0,2764.03709439879,5646.29940976401,5849.72508354558,4552.66128564717,0,2702.32875509992,0,3898.53940197647,2856.39119877921,0,3506.22562059536,4628.01727898289,0,1952.97273514356,0,1207.90796671561,5346.64152541273,2589.4078321456,4776.9392217554,0,1581.52584659801,3523.15210852522,4037.41444780675,3156.58805107559,0,0,0,0,424.433871892103,0,0,2845.15160062013,0,0,0,0,5334.29937945569,0,0,6754.53517141315,0,5014.72064623258,2832.94022095132,4803.4842714592,2913.89040168522,0,5795.34254747145,6422.01069058611,368.795425463457,5436.63838414855,6762.52765340477,6365.99424088822,1581.12931529356,2869.43272156379,0,5321.27101966417,1696.09535199148,0,0,1596.48242422938,0,0,6631.99466160395,5718.23071164831,6347.06434340909,6596.26710853236,5850.61081376762,6079.93171422639,0,2883.32611507636,5124.62265409261,3531.56512732596,2931.22990906034,0,2764.03572182825,5646.30332059111,5849.72646009662,4552.66329138553,0,2702.32946015758,0,3898.54013265641,2856.39528165336,0,3506.22991044218,4628.02043193237,0,1952.9830841904,0,1207.94387730357,5346.64312518467,2589.45411140089,4776.94715145078,0,1581.5876882288,3523.15910963897,4037.41905260834,3156.5992838642,0,0,0,0,424.441050011685,0,0,2845.15914347078],"Archive220_field5":[8995770,8366066.1,2715968.74523149,2698731,5472629.47558423,-24607314.0124033,5143878.41602172,2395565.0903881,5847250.5,3804721.1169518,7264084.275,4115564.775,5443876.23909367,4009011.27875095,2089123.24323261,3024684.31650578,2865081.18851862,3019198.04006933,2329886.00521323,3603930.35625,3783376.72899858,4504207.23126792,4452190.05750378,4541956.29554534,5145640.08263418,6550223.8053906,6156073.75590918,6009538.82014067,2258194.58851495,3416824.58667771,3010842.81208732,2541305.025,3778052.0642625,2462592.0375,4605061.16601562,3289078.40625,4272990.75,3387469.640625,5244981.81374091,6616332.3449318,6030089.52917515,7242926.18268166,7565721.01195295,4927409.26271183,4193204.04863281,5431011.07928767,2620018.0125,4169679.95390625,5060120.625,4850649.51707646,5660139.72520353,7421510.25,6358865.98051187,6516065.04765495,6634380.375,6953658.4889597,8838344.025,7930655.76215143,5308621.61493718,7671610.82874856,6480699.12638116,8208640.125,8053736.54702078,7164625.16876492,7029659.00514774,24708389.2258328,45195694.4864335,3485860.875,9117869.98514431,6612032.17817282,7264475.97079796,8917057.0125,8759631.0375,7107922.32640876,0,0,646933.44116572,0,-59766.5358903626,-33288051.7460554,-73663.9572476079,11686.6152919075,0,3997.21446825189,0,0,68892.0949898569,365716.451263129,-137340.776827191,-67602.6925828626,-69787.5876957771,5622.02966030657,24719.999286295,0,61387.7158252018,-44278.5392576364,21763.4226564841,-104906.256929514,-52219.9263520359,-241570.845512484,151376.373474828,-248482.117802534,-597956.138832813,1269096.20899523,-51941.5176277299,0,1933.60418189207,0,0,0,0,0,-184116.434327445,-255439.821379535,-200963.922774486,-1280487.05933432,221555.034707992,58109.4975638835,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214748.837716498,0,0,0,0,17157513.524532,36593044.4303455,0,673069.363397946,-928633.425598371,19116.5763919661,0,0,-730508.154103985]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive221.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive221.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive221.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive221_field1":[0,0,0,0,693.059394723397,0,0,416.049851756383,0,276.935034478675,396.300459481813,682.675285303327,120.99831440478,0,-66.2577285480557,540.843708390823,212.579146404925,480.836923076995,568.891254755389,581.038104020901,-224.456894679447,115.72365657445,0,634.201243659796,-41.4960360986956,0,0,-313.184539062548,0,0,512.656536852112,36.5483445372021,537.035065104588,242.719650207133,688.488769279886,512.058222672055,0,591.134219105565,742.194507283779,-132.030028274017,281.539285768775,0,-2300.38066612319,675.848216289713,680.500729423989,653.30977248564,0,244.104954140248,0,517.186704825057,487.334651521272,0,525.817119074499,472.576028172993,0,356.640940505916,0,326.14539697522,698.861529610718,-394.719658708835,539.062955623814,0,266.978832374524,226.899568203273,-77.250307366396,-1251.34738129258,0,0,0,0,-233.152105934038,0,0,-2848.20454718684,0,0,0,0,693.059394723397,0,0,416.049851756383,0,276.940300686209,396.300459481813,682.675285303327,120.998567376124,0,-66.2571574370888,540.848980222332,212.578444877385,480.838908973209,568.896794216936,581.038104020901,-224.460148501814,115.722228878578,0,634.210442914951,-41.5034975868124,0,0,-313.190282364853,0,0,512.656536852112,36.5483445372021,537.035065104588,242.719650207133,688.488769279886,512.058222672055,0,591.134219105565,742.206665911307,-132.030028274017,281.541524720025,0,-2300.38585923303,675.848216289713,680.500729423989,653.30977248564,0,244.104954140248,0,517.186704825057,487.334651521272,0,525.817119074499,472.576028172993,0,356.640940505916,0,326.14539697522,698.861529610718,-394.719658708835,539.062955623814,0,266.978832374524,226.899568203273,-77.250307366396,-1251.34738129258,0,0,0,0,-233.15317539624,0,0,-2848.21170252849],"Archive221_field2":[0,0,0,0,5296.09258797916,0,0,6759.81244258727,0,5011.31063298938,2807.69622454813,4764.08050729833,2913.84244278984,0,5800.43127511263,6409.29514660202,301.534941275096,5420.5709640716,6750.59630924062,6353.68016496859,1565.93535479736,2869.26266557195,0,5289.6314513507,1697.05976610619,0,0,1566.81082915954,0,0,6627.2347181641,5737.28778445477,6335.62444505987,6612.34984854956,5819.89941549781,6074.74469937568,0,2827.88149954907,5076.8849297964,3532.4877250195,2920.22192277643,0,-1537.09199801364,5613.87987700753,5821.45488439913,4511.77749844053,0,2695.81793555319,0,3869.8428295403,2817.96236392015,0,3470.46582506129,4608.99634098103,0,1921.93212909055,0,1163.94920934782,5308.53019370149,2561.67640123617,4751.98252822611,0,1560.02906050609,3519.3831416869,4040.85590614804,2901.52834353027,0,0,0,0,354.995612381416,0,0,15.6578373477514,0,0,0,0,5296.09258797916,0,0,6759.81244258727,0,5011.30910941644,2807.69622454813,4764.08050729833,2913.84091545306,0,5800.43791235183,6409.29694317686,301.533693956378,5420.57234052346,6750.60084889365,6353.68016496859,1565.93081762348,2869.26077754097,0,5289.62798640536,1697.05975471627,0,0,1566.81856341017,0,0,6627.2347181641,5737.28778445477,6335.62444505987,6612.34984854956,5819.89941549781,6074.74469937568,0,2827.88149954907,5076.87840848484,3532.4877250195,2920.22132641526,0,-1537.07634364688,5613.87987700753,5821.45488439913,4511.77749844053,0,2695.81793555319,0,3869.8428295403,2817.96236392015,0,3470.46582506129,4608.99634098103,0,1921.93212909055,0,1163.94920934782,5308.53019370149,2561.67640123617,4751.98252822611,0,1560.02906050609,3519.3831416869,4040.85590614804,2901.52834353027,0,0,0,0,355.000445009417,0,0,15.6729280245459],"Archive221_field3":[0,0,0,0,3.4253899803172,0,0,4.66451329875706,0,1.09726897239035,1.79858178512972,3.02234296608518,-1.95173370872292,0,0.203044138520955,3.59174753599886,-0.921897534877048,2.13624931758718,2.1731169460429,3.91816924414252,-2.0104224704994,0.499558475627368,0,2.64028274247767,-0.328278233932635,0,0,3.73121958080128,0,0,4.49180004611734,3.60733129110371,4.57071255335372,4.07278321358911,3.56048199033271,3.8752177197608,0,1.80613030152276,2.49398996283424,0.0175834419006099,2.16463418576808,0,7.14835212963538,3.72138037665217,3.71704761517323,2.87649969322778,0,1.70980457263783,0,2.45712513798949,1.79718490154002,0,2.22531538430809,2.85024072609412,0,1.22488978000437,0,0.747383074879429,3.39544957602115,1.52468579885184,3.40332749193428,0,1.00883990320378,2.1935726714833,2.82576400364824,1.95758131510621,0,0,0,0,4.32207404527838,0,0,0.296408938304606,0,0,0,0,1.16162912109898,0,0,3.73924861163187,0,1.09188109940994,-3.13358354533949,2.23196281654122,-0.47842260315845,0,0.32500597306099,2.64509629638844,1.2529098379627,0.556152884045072,2.43531800278337,3.17665964134673,1.95736589734678,-1.66240068081312,0,0.466508134636748,-1.09752793173169,0,0,-5.5158968093255,0,0,3.44000286073427,3.26416513798074,3.33082798003548,3.71724477242518,1.82719978460456,1.6256761370397,0,4.62458864954156,-0.750120973268067,-4.96181956914671,-5.06525034963795,0,-8.43504748007988,1.92080468718764,2.17536819191664,0.488457811893204,0,-0.0145541391517448,0,0.912829966094826,-1.9980066832522,0,-1.50044933916973,-1.012647516443,0,-4.35280393073147,0,-8.08981793143526,1.11672987872153,-12.3538177247303,-1.30462002398697,0,-12.1884100303633,-1.84061967384504,-1.82931435991942,-3.17134631933399,0,0,0,0,-4.5885848291275,0,0,-0.925643958265281],"Archive221_field4":[0,0,0,0,5341.24889500187,0,0,6772.60536985498,0,5018.95691131467,2835.52735455396,4812.74534540743,2916.35426221794,0,5800.80969392412,6432.07502240237,368.936395861247,5441.85614351311,6774.52526104284,6380.19374855417,1581.94136262125,2871.59545519467,0,5327.51528197443,1697.56704683936,0,0,1597.80932901238,0,0,6647.03519703969,5737.40532958771,6358.34606335684,6616.80435979281,5860.48280169546,6096.28918304499,0,2889.00617905122,5130.84978312774,3534.95423677431,2933.76296474961,0,2766.66841496575,5654.41702862496,5861.0947808651,4558.83297879074,0,2706.84770419722,0,3904.25045949363,2859.79198140658,0,3510.07430657225,4633.16128549962,0,1954.74227703563,0,1208.78002154693,5354.33579298946,2591.90893325523,4782.46154206494,0,1582.70950724305,3526.69050581446,4041.59523569369,3159.86405231331,0,0,0,0,424.735764488448,0,0,2848.24760130583,0,0,0,0,5341.2479229525,0,0,6772.60479579935,0,5018.95567946846,2835.5285156163,4812.74491395939,2916.3521328474,0,5800.81632975817,6432.07679694189,368.935947829062,5441.85729917062,6774.53033902187,6380.19333627171,1581.93726649626,2871.59394890149,0,5327.51230295107,1697.56754091174,0,0,1597.82320321496,0,0,6647.03456949311,5737.40512408845,6358.34529295218,6616.80415050338,5860.48200497154,6096.28816812508,0,2889.00931589181,5130.84453790448,3534.95771904459,2933.76616010091,0,2766.66765940258,5654.41613028461,5861.09400590605,4558.83209746209,0,2706.84716422961,0,3904.24979301412,2859.79211466052,0,3510.07392186808,4633.16051945486,0,1954.74673965134,0,1208.80686094335,5354.33483283366,2591.93792565213,4782.46050906074,0,1582.75611636748,3526.69030394244,4041.59466184212,3159.8650373734,0,0,0,0,424.743186249018,0,0,2848.2549745256],"Archive221_field5":[8995770,8366066.1,2712236.31567322,2698731,5472661.62041142,-24607705.8406744,5143125.67522617,2396643.02905096,5847250.5,3804540.52441149,7264084.275,4115564.775,5443552.435354,4008730.48874443,2089091.82994972,3024937.48420327,2865160.83798008,3019226.94724016,2329490.58544354,3603930.35625,3783454.62900889,4504113.39177242,4451906.0734235,4542091.03223391,5145764.63726432,6549575.19512287,6156034.15033186,6009454.75763891,2260012.31224079,3418677.32808927,3010733.5895509,2541305.025,3777896.26306097,2462592.0375,4605061.16601562,3289078.40625,4272990.75,3387469.640625,5245050.22819033,6616066.69442507,6030062.59877027,7242056.47124693,7565758.57838178,4926794.92720809,4193204.04863281,5431011.07928767,2620018.0125,4169679.95390625,5060120.625,4850649.51707646,5660139.72520353,7421510.25,6358865.98051187,6516065.04765495,6634380.375,6953658.4889597,8838344.025,7930655.76215143,5308621.61493718,7671610.82874856,6480528.59050578,8208640.125,8053736.54702078,7164625.16876492,7029659.00514774,24708229.7796386,45195922.6530322,3485860.875,9118108.46783877,6611735.02706885,7264653.63599525,8917057.0125,8759631.0375,7108231.92203844,0,0,643201.835972101,0,-59735.0393580662,-33288442.8232158,-74415.698864656,12766.5494191893,0,3817.71671060876,0,0,68568.7068845361,365436.41110705,-137371.438647202,-67350.7724067984,-69708.1259305849,5650.55561464161,24325.2253432454,0,61464.5983293341,-44371.7426381256,21479.6678924627,-104772.580934696,-52096.577409405,-242220.256193939,151336.54768595,-248564.868861172,-596139.08321388,1270948.33508301,-52050.484051248,0,1778.16904887885,0,0,0,0,0,-184046.848578179,-255704.533073168,-200992.087349824,-1281355.69825489,221592.04499681,57496.3984499188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,214578.131103427,0,0,0,0,17157354.1424289,36593270.4297143,0,673307.476208554,-928929.755789258,19293.6310983319,0,0,-730198.544446136]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive222.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive222.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive222.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive222_field1":[0,0,0,0,385.990591313329,0,0,282.091237885839,0,100.812802283926,680.058684338847,373.84332945124,37.2913341522584,0,934.228442915371,455.685956357878,282.739056710935,294.348035239585,261.760915020438,-574.298337387658,436.534670167034,528.482164628679,238.972331832555,137.479614372577,351.852564185543,0,-288.299265085187,137.460129446805,0,193.034813090108,0,548.695629615635,0,0,-79.383682192909,-80.8703382118515,0,0,259.473468361194,564.492465579917,365.488402753381,-408.557500507937,520.951736451643,-146.15391248504],"Archive222_field2":[0,0,0,0,5965.34276065931,0,0,7916.94414451568,0,6208.22142682196,3109.76404218389,5849.21762099958,4618.54358869214,0,7268.97621225413,7471.15625159066,3531.6636518669,7414.77993432182,6960.53513478038,7235.5330165751,6473.69250200483,4515.5462302479,6074.37059116711,5129.87028135796,4414.54691631822,0,2821.14762921867,7163.16806559601,0,4530.66685591531,0,5069.88644814175,0,0,2331.67427348505,2966.15734905871,0,0,3337.04243932143,2529.97221952273,2276.6240399569,1044.65819816935,962.171930332715,2769.926621101],"Archive222_field3":[0,0,0,0,5977.81757740506,0,0,7921.96819318741,0,6209.03990207468,3183.25497128404,5861.15224275801,4618.69413625239,0,7328.76510456356,7485.04010854344,3542.96338170572,7420.62007114439,6965.45534327401,7258.28882135966,6488.39403310028,4546.36680832472,6079.06948917492,5131.71216534283,4428.54656781417,0,2835.84033614285,7164.48686391161,0,4534.77723800787,0,5099.49168947364,0,0,2333.02522203052,2967.25958267515,0,0,3347.11498497074,2592.18270483646,2305.77509567973,1121.70851036431,1094.15059988658,2773.77981325459],"Archive222_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive222_field5":[-893.079153290139,-830.748957219502,-209.719942336803,-271.506211872899,-551.745892941602,-847.918241672091,-519.126961679171,-249.656249435795,-581.303038696802,-380.600230513339,-718.490330593462,-413.412333308205,-535.251782420657,-363.857537338653,-232.710454975635,-308.452578058079,-292.28629302377,-361.713794409968,-421.898584482247,-265.118368480843,-471.861047264062,-540.431609622125,-501.200379504044,-593.95344924017,-680.608037492874,-675.196570748003,-659.665625977468,-325.954680697469,-424.825076699979,-337.962606326694,-735.061437366309,-607.006813373939,-867.99462680062,-597.439434110952,-565.577106259794,-468.901327579899,-836.859539395649,-502.424751162669,-456.754068850386,-644.291622745581,-779.07849689814,-753.723164222312,-804.783968021059,-743.644729033471],"Archive222_field6":[103.234885767453,96.0298685553623,24.242436082553,31.3845784716764,63.7786964578079,98.0145404768175,60.0081329749096,28.8588467177691,67.1953348984308,43.9952283908549,83.0534078984809,47.7881214074916,61.8720708141653,42.0598680020689,26.9000089721018,35.6553688922098,33.7866380158338,41.8120634759614,48.7690839205215,30.6461799988761,54.5444612976996,62.4708294655892,57.9359217311109,68.6576506210011,78.6744296338546,78.0488947647637,76.2536056200782,37.6785127087587,49.1073698257337,39.0665608185709,84.9689338722233,70.1665454936069,100.335256751217,69.0606107042103,65.3775062852106,54.2023344857898,96.7362172038592,58.0774521518462,52.7981802596956,74.4764580272972,90.0570563480947,87.1261236723719,93.0284630427832,85.9611137159738],"Archive222_field7":[996.314039057592,926.778825774865,233.962378419356,302.890790344575,615.52458939941,945.932782148908,579.13509465408,278.515096153564,648.498373595233,424.595458904194,801.543738491943,461.200454715697,597.123853234822,405.917405340722,259.610463947737,344.107946950289,326.072931039604,403.525857885929,470.667668402768,295.76454847972,526.405508561761,602.902439087714,559.136301235155,662.611099861171,759.282467126729,753.245465512767,735.919231597546,363.633193406228,473.932446525713,377.029167145265,820.030371238532,677.173358867546,968.329883551837,666.500044815162,630.954612545004,523.103662065688,933.595756599508,560.502203314515,509.552249110081,718.768080772878,869.135553246235,840.849287894684,897.812431063842,829.605842749445],"Archive222_field8":[0,0,0,0,377.877818421542,0,0,277.945146045153,0,93.4218630766531,678.643544790276,368.876366796347,32.543316491312,0,917.265808858256,446.581436683618,274.991510345131,288.330985585503,254.654065091941,-564.524538829372,428.962068550715,520.304164680719,231.884612300431,130.406421168366,344.824828942479,0,-295.260640309964,134.998963478352,0,197.053304681576,0,540.382221800571,0,0,-83.6167713779337,-84.1721027680353,0,0,254.26219912656,560.297083302708,361.947917549905,-410.529347991622,518.78320518232,-155.285603845055],"Archive222_field9":[0,0,0,0,5872.95350467431,0,0,7834.84878908475,0,6131.36030322344,3047.35307803912,5778.50503684344,4548.3543447961,0,7202.88699635145,7385.31648003715,3488.78422824988,7327.84572441108,6871.32072066152,7174.37579761737,6384.71132619543,4449.67467408746,5986.92026077801,5043.15966314917,4327.63150422704,0,2766.16479396664,7085.20716601574,0,4478.07270619113,0,4986.13438115319,0,0,2292.44491946301,2923.73256401938,0,0,3296.5830831751,2483.81644308993,2219.1744752946,1023.94126391987,943.980081695931,2702.4972665009],"Archive222_field10":[0,0,0,0,5885.0976639068,0,0,7839.77735985103,0,6132.07198363203,3122.00542009779,5790.26685350562,4548.47076645259,0,7261.05761210508,7398.80628817235,3499.60508086942,7333.51605425518,6876.03789540606,7196.55167704494,6399.10518550082,4479.99119742433,5991.40924009836,5044.84541117929,4341.34755565983,0,2781.87823477175,7086.49315991351,0,4482.40618048163,0,5015.33139608502,0,0,2293.96937059487,2924.94393942716,0,0,3306.37403966656,2546.22798361055,2248.49764216416,1103.17272333948,1077.14177739882,2706.95494868429],"Archive222_field11":[8962611.94313312,8337089.15754076,2104671.74491349,2724735.88505802,5537117.63558153,8509393.74367169,5209766.11043634,2505457.74652535,5833742.21423679,3819563.09134658,7210503.11641367,4148853.21451782,5371588.84521422,3651539.6174419,2335396.02326713,3095515.945937,2933277.09085813,3630025.80659451,4234018.09138757,2660629.85227741,4735422.88175464,5423571.67447209,5029861.56456217,5960697.05379813,6830330.43930461,6776022.96129578,6620160.14602826,3271160.57224794,4263387.28448261,3391667.67093036,7376804.61267645,6091695.7864999,8710872.91655911,5995681.10814689,5675922.57489397,4705720.23010066,8398412.69934515,5042148.90551062,4583814.835977,6465872.33797423,7818543.53582588,7564086.79856436,8076514.13299118,7462943.35203017],"Archive222_field12":[-889.782223937434,-827.862669947884,-213.008170864529,-274.141606447482,-552.152502920113,-831.678998928132,-518.361112216118,-259.74158210506,-579.912173243008,-382.375428858785,-713.235643583029,-416.188836445558,-534.865724534892,-364.550418626594,-242.192110608332,-309.611343901398,-292.583964135491,-364.375362459083,-424.471879818058,-274.489955682211,-473.735240431881,-539.811425946786,-501.97637932565,-594.124514236555,-677.578765801987,-673.603593037928,-656.999486656603,-325.610286769393,-423.713903373953,-338.70054910749,-730.705303573149,-606.363108766686,-855.793803045431,-596.531562156323,-564.159464619616,-468.857290335489,-824.910459424572,-500.707186709721,-456.33658832746,-641.148710564743,-769.346283744436,-748.807603819992,-799.555284638114,-736.160787116691],"Archive222_field13":[102.853779430063,95.696230113932,24.6225366539151,31.6892151400579,63.8256982655748,96.1373761029247,59.9196051198567,30.0246539837911,67.0345587391045,44.2004312530329,82.4459958776456,48.1090694255498,61.8274447117759,42.1399611498571,27.9960345959468,35.7893156527244,33.8210471083555,42.1197256495778,49.0665422690449,31.7294823362206,54.7611073999775,62.399139749574,58.0256229100534,68.6774247645308,78.3242630043736,77.8647555747223,75.9454150333696,37.6387027236158,48.978924490337,39.1518628194045,84.4653895079104,70.0921368912418,98.9249107119037,68.9556658544932,65.2136349505772,54.1972440300565,95.3549713184348,57.8789114408183,52.7499218786378,74.1131552015951,88.9320676956491,86.5579127643611,92.4240568938278,85.0960124693231],"Archive222_field14":[992.636003367498,923.558900061816,237.630707518444,305.83082158754,615.978201185688,927.816375031056,578.280717335975,289.766236088851,646.946731982113,426.575860111818,795.681639460674,464.297905871108,596.693169246668,406.690379776451,270.188145204279,345.400659554123,326.405011243846,406.495088108661,473.538422087103,306.219438018431,528.496347831858,602.210565696359,560.002002235704,662.801939001085,755.903028806361,751.46834861265,732.944901689972,363.248989493009,472.69282786429,377.852411926894,815.17069308106,676.455245657927,954.718713757334,665.487228010816,629.373099570194,523.054534365545,920.265430743007,558.586098150539,509.086510206098,715.261865766338,858.278351440085,835.365516584353,891.979341531942,821.256799586014],"Archive222_field15":[0,0,0,0,367.729408754554,0,0,273.358913547379,0,85.8329439774425,673.223214514313,362.293534489465,26.2981450997279,0,903.603780473808,438.173216425468,266.074531251921,281.169291837177,246.830517343563,-558.675418878265,420.000522100363,510.767566647533,222.863304702879,121.057794729356,335.86069627957,0,-301.855402957704,130.590704214824,0,198.884835670143,0,530.204647449617,0,0,-88.2180646586063,-87.9228309836829,0,0,248.391827784221,553.139505167364,355.081498628317,-409.790716730159,513.942217072314,-163.032708410152],"Archive222_field16":[0,0,0,0,5751.33195436043,0,0,7735.37684423064,0,6025.81855820354,2961.90515840222,5682.72671389089,4450.58871286411,0,7114.61843311349,7278.48169392569,3431.07671756079,7219.23997773131,6757.74584360098,7093.30364493976,6270.01195716581,4357.79930964981,5870.90617309034,4925.70614174144,4207.51043667405,0,2690.95359986314,6985.66478574879,0,4407.17774885289,0,4872.40252848835,0,0,2237.33827469149,2863.50292155686,0,0,3237.76422174842,2420.41313256254,2138.5588055571,995.655701121617,919.522126704746,2607.96157203666],"Archive222_field17":[0,0,0,0,5763.07592933759,0,0,7740.20542478528,0,6026.42983786106,3037.45150807888,5694.26373729756,4450.66640892228,0,7171.77071864995,7291.65903868276,3441.37808122976,7224.71328335915,6762.25215375754,7115.27053758144,6284.06320636312,4387.63014967344,5875.13466618539,4927.19352009378,4220.89403823721,0,2707.83085899233,6986.88531685457,0,4411.66305239233,0,4901.16551116128,0,0,2239.07681474567,2864.85242307049,0,0,3247.27819192383,2482.81353396868,2167.83685629107,1076.68876965175,1053.40284031743,2613.0524727283],"Archive222_field18":[8929525.18001323,8308123.44640908,2137671.1897732,2751183.72991254,5541198.22288018,8346422.71201313,5202080.32858944,2606670.41362101,5819784.00316273,3837378.32511809,7157769.02181115,4176717.17269814,5367714.5111141,3658493.1176816,2430550.4109843,3107144.89119719,2936264.40799705,3656736.31875525,4259842.7312585,2754679.63394306,4754231.5909354,5417347.74057434,5037649.21165188,5962413.79880779,6799929.78944539,6760036.42639922,6593403.7582756,3267704.36221152,4252235.96011674,3399073.3916396,7333088.06569781,6085235.80523221,8588429.96365681,5986570.04112286,5661695.64792056,4705278.28860954,8278496.15391502,5024912.06415968,4579625.15591671,6434331.23420485,7720874.64553418,7514756.05312402,8024041.0011728,7387837.28001188],"Archive222_field19":[-886.499993310674,-824.989516745687,-216.065210961479,-276.759419872747,-552.444965607027,-816.431006061195,-517.601147407312,-268.267583803001,-578.486450275362,-384.033233584815,-708.09369075829,-418.531163695297,-534.419772915657,-365.134381514457,-250.522913025587,-311.321009601202,-293.217354027198,-367.02599723336,-426.706153746762,-282.004992500224,-475.476943294742,-539.1513316866,-502.711427522358,-594.000543047539,-674.374846289422,-672.000747059834,-654.296599311024,-326.219421382002,-422.512764498348,-339.632013295547,-726.47306972203,-605.534489690396,-844.185749347333,-595.61469596586,-562.712391110224,-468.769560194531,-813.572006807159,-499.068430760646,-455.888869238828,-638.007895455814,-760.018069047807,-744.025123697678,-794.461834017787,-728.904022663941],"Archive222_field20":[102.474372182041,95.364109896448,24.9759131536716,31.991819527275,63.859505293724,94.3747945937696,59.8317574974646,31.0102114319718,66.8697532488423,44.3920640785064,81.8516152893987,48.379829173066,61.7758952334346,42.2074639482361,28.95902811419,35.9869433126798,33.8942633880949,42.4261239986218,49.3248116653836,32.5981779771251,54.9624383743105,62.3228365962701,58.1105903133805,68.6630943980797,77.953908077076,77.6794756688577,75.63297658339,37.7091152306349,48.8400796475736,39.2595347975223,83.9761672743023,69.996353224844,97.5830855297899,68.8496813221168,65.0463614587609,54.18710292325,94.0443104924307,57.6894805459417,52.698168090857,73.750094785514,87.8537789739013,86.0050851820654,91.8352828853712,84.2571716492669],"Archive222_field21":[988.974365492714,920.353626642135,241.041124115151,308.751239400022,616.304470900751,910.805800654965,577.432904904776,299.277795234973,645.356203524204,428.425297663321,789.945306047688,466.910992868363,596.195668149091,407.341845462693,279.481941139777,347.307952913881,327.111617415293,409.452121231982,476.030965412146,314.603170477349,530.439381669053,601.47416828287,560.822017835738,662.663637445619,752.328754366498,749.680222728692,729.929575894414,363.928536612637,471.352844145922,378.891548093069,810.449236996333,675.53084291524,941.768834877123,664.464377287977,627.758752568985,522.956663117781,907.61631729959,556.757911306588,508.587037329685,711.757990241328,847.871848021708,830.030208879744,886.297116903158,813.161194313208]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive223.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive223.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive223.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive223_field1":[0,0,0,0,691.219535201395,0,0,636.909057880497,0,-728.797421973488,1379.45539094068,1517.8389996015,-542.91064808217,0,4023.57000322104,1388.90985196369,-708.998903617696,622.747699295207,230.762113768063,-4530.06243450793,1263.71812116811,1597.88115649289,-83.5160238168458,-131.084457734336,596.02499142712,0,-896.21886360997,45.3917702217877,0,1803.85562086368,0,1314.06978274369,0,0,-526.634064105,-928.396543562565,0,0,1089.44324754537,1367.3743616408,686.051673267442,-825.561517830921,1008.14289722043,-444.866939362763],"Archive223_field2":[0,0,0,0,15470.7001771844,0,0,41833.445140614,0,18784.1117566089,6351.75731074271,18818.0610519458,11148.5935175577,0,36046.3561991585,30978.9272824997,12337.6650192678,28593.929293224,22702.7668947248,39237.2885498818,19475.2744224599,11408.8435425264,16532.6246156413,12091.7035228364,9561.53321796542,0,5785.22533022365,29796.8128880658,0,17021.6237292466,0,12107.7540887002,0,0,5114.03760887788,7332.16836505925,0,0,9618.10339260706,5529.74868417109,4410.7817592418,1945.40587715456,1792.22027788007,5390.26172223916],"Archive223_field3":[0,0,0,0,15486.1340694886,0,0,41838.2932907255,0,18798.2446033412,6499.82446764286,18879.1752198943,11161.8049343075,0,36270.2207162768,31010.0468582569,12358.0199697604,28600.7099059249,22703.939654372,39497.9275204058,19516.231637278,11520.1968372125,16532.8355586071,12092.414036049,9580.09202819378,0,5854.23268865798,29796.8474624281,0,17116.9380871981,0,12178.854152438,0,0,5141.08199725438,7390.71126994382,0,0,9679.60740218847,5696.29995303657,4463.81704666009,2113.32814456033,2056.3087379235,5408.58835815545],"Archive223_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive223_field5":[-840.896355085009,-778.551516661575,-163.886797277624,-225.515453377221,-494.422408821794,-783.828486418297,-465.444274749189,-208.769135012809,-528.22913652361,-322.220718719715,-660.504037203386,-359.231262427503,-479.629926646502,-312.542333269395,-193.972531542082,-246.470364859675,-234.304145537891,-302.432302921549,-364.828931942898,-218.465724411311,-415.07852114992,-483.677704694552,-445.30344727347,-538.542986560442,-621.878176683998,-622.842908882671,-603.441244294206,-259.865329013447,-369.926761102108,-278.917933943426,-680.195528775177,-549.616201793077,-806.657635293534,-545.638190309615,-510.518768863834,-414.172453591008,-776.438941798146,-448.89305090117,-398.634397366077,-587.627840715051,-718.552252948916,-698.580403709209,-749.255024132934,-683.723758564575],"Archive223_field6":[152.982566672858,145.775856887816,74.7241008848726,81.8480240545097,112.932143222585,146.385844667764,109.582435249088,79.9122446143487,116.84000923828,93.0266043449181,132.130237670184,97.3048133231356,111.222216166335,91.9078378697448,78.2018411597173,84.2702929935939,82.8639470305523,90.7391756921311,97.9518721766054,81.0331153627034,103.76043974034,111.690116355095,107.254269804785,118.032231816147,127.665307228466,127.77682479996,125.534102393878,85.8186748914126,98.5411523193277,88.0210479803741,134.406462432027,119.312232704543,149.024764821281,118.852397135026,114.792791166376,103.655703468535,145.531655213308,107.669207628707,101.859592280048,123.706162612645,138.84028223837,136.53164971993,142.389348482106,134.814305788271],"Archive223_field7":[993.878921757867,924.327373549391,238.610898162497,307.363477431731,607.354552044378,930.214331086061,575.026709998277,288.681379627158,645.06914576189,415.247323064633,792.634274873571,456.536075750638,590.852142812837,404.45017113914,272.1743727018,330.740657853269,317.168092568443,393.17147861368,462.780804119503,299.498839774014,518.838960890259,595.367821049648,552.557717078255,656.575218376589,749.543483912464,750.619733682631,728.975346688084,345.684003904859,468.467913421436,366.9389819238,814.601991207204,668.92843449762,955.682400114815,664.490587444642,625.311560030209,517.828157059543,921.970597011454,556.562258529876,500.493989646125,711.334003327696,857.392535187286,835.11205342914,891.64437261504,818.538064352846],"Archive223_field8":[0,0,0,0,699.817733949026,0,0,532.29570189926,0,-956.826145224374,1452.5210006998,1673.31394666496,-633.40673075458,0,4213.73528539112,1346.52257769184,-991.500339157157,663.865889155189,181.907603831731,-4950.98739430596,1353.57679719967,1699.29883248489,-160.872298020908,-193.639938987014,604.336812880107,0,-992.293511270744,135.545414155107,0,2094.94656160776,0,1383.34098251566,0,0,-595.931840931737,-1070.28606614793,0,0,1176.3914737016,1440.0976609645,704.405385970587,-875.082880303015,1052.37815823675,-501.705964489972],"Archive223_field9":[0,0,0,0,16057.6352238175,0,0,45796.3895844425,0,19976.3189150884,6406.29295704263,19839.3496790081,11558.5385902432,0,39493.6295096051,33605.6700886853,13286.5568814018,30589.6750608518,24106.1797574017,41994.6526051202,20448.5355310756,11777.0604008233,17298.0883893364,12451.4209926235,9693.6286213969,0,5876.71669031059,31988.8862224998,0,18020.1673830433,0,12437.2805155464,0,0,5256.7988770486,7657.44700675019,0,0,10032.0055278092,5619.51679375297,4372.93849581637,1964.08415928206,1809.43632475812,5365.98428326912],"Archive223_field10":[0,0,0,0,16072.8775843635,0,0,45799.482941233,0,19999.2208265598,6568.89691720976,19909.7909393861,11575.8808921268,0,39717.7836352597,33632.6357153553,13323.5005417223,30596.8779166647,24106.8660939679,42285.4954281406,20493.2861081764,11899.0238341943,17298.8364297014,12452.9266102999,9712.44865278408,0,5959.90314272682,31989.1733921859,0,18141.5333863731,0,12513.975343443,0,0,5290.46965710755,7731.88249552319,0,0,10100.7441215681,5801.10767598629,4429.30897951103,2150.20850899212,2093.21752364343,5389.38736806847],"Archive223_field11":[8940706.18798177,8315036.4571544,2146488.75936324,2764971.14937604,5463621.85864426,8367994.17315406,5172808.0270012,2596911.2944086,5802893.66937044,3735469.41140514,7130355.63087942,4106893.53415532,5315169.98075143,3638340.71602834,2448418.05671967,2975266.8876967,2853171.21208443,3536880.19216859,4163069.6742741,2694222.67787389,4667355.95920777,5355791.98356379,4970682.13456105,5906399.65221557,6742720.78627523,6752402.4816702,6557694.55447626,3109693.79180722,4214229.60151915,3300898.68542066,7327972.15444203,6017526.34320066,8597099.06448085,5977604.49181688,5625158.97237296,4658263.00043153,8293835.43747773,5006706.06841531,4502328.81723893,6398997.08711519,7712906.04626173,7512475.95687625,8021027.6978392,7363380.1631634],"Archive223_field12":[-835.093051243313,-773.188492927509,-169.311696111312,-231.225881153445,-486.718621493459,-754.45383562442,-460.740727598336,-215.430988091602,-523.214923403299,-315.102508310761,-646.983419595076,-354.907356131913,-472.749900577188,-310.595297082922,-204.541068363845,-239.55050687997,-228.954845074163,-295.921952116092,-358.260045172324,-220.058133972305,-409.34028655621,-475.813528841276,-439.517066344838,-532.101596188802,-609.268949372558,-618.638379593777,-594.015934827524,-250.416919801964,-362.58170990548,-271.983892804208,-670.77943088409,-540.625562432164,-783.464962299302,-542.54975859599,-503.547238022276,-408.702335137832,-754.423630335397,-443.376082270938,-389.738240386711,-577.385258121089,-698.373064917238,-688.277844770412,-738.282320691614,-666.130035894475],"Archive223_field13":[152.311737657351,145.15592175607,75.3511884272618,82.5081171235171,112.041629093028,142.990301609802,109.038731870691,80.6823170531187,116.260394635496,92.2037795866311,130.567330945559,96.8049942747904,110.426924167047,91.6827715275789,79.423504085679,83.4703966513378,82.2455982310373,89.9866160570401,97.1925461158849,81.2171888779327,103.097132360914,110.781062221565,106.585396982064,117.287643616154,126.207752053971,127.290805056642,124.444590067304,84.7264923653306,97.6921060523238,87.2195121453064,133.318014911356,118.272965777328,146.343823341032,118.495391942394,113.986921734309,103.023388794559,142.986810049675,107.031477339934,100.831246980361,122.52217814704,136.507682531327,135.340732328968,141.120966186817,132.780571215719],"Archive223_field14":[987.404788900664,918.344414683579,244.662884538574,313.733998276963,598.760250586487,897.444137234221,569.779459469027,296.113305144721,639.475318038794,407.306287897392,777.550750540636,451.712350406703,583.176824744234,402.278068610501,283.964572449524,323.020903531308,311.2004433052,385.908568173132,455.452591288209,301.275322850237,512.437418917124,586.594591062841,546.102463326903,649.389239804955,735.476701426528,745.929184650418,718.460524894828,335.143412167295,460.273815957804,359.203404949514,804.097445795446,658.898528209491,929.808785640334,661.045150538384,617.534159756585,511.725723932391,897.410440385072,550.407559610872,490.569487367072,699.907436268129,834.880747448565,823.61857709938,879.403286878431,798.910607110194],"Archive223_field15":[0,0,0,0,693.262673792389,0,0,508.683378494081,0,-1046.69593967029,1484.90326990453,1719.85911462258,-671.670114657988,0,4236.31919491515,1341.16807328033,-1126.10290115666,698.775626825317,168.470267759491,-5020.53964960359,1382.33276803812,1727.83768264011,-192.859590013598,-228.524107847622,598.052347589839,0,-1043.48701504229,191.362687455171,0,2198.20567645218,0,1400.30343508159,0,0,-628.781042225062,-1125.37334209178,0,0,1197.73172880104,1464.7384054714,710.356173852211,-899.976533233975,1067.68857067745,-543.198778381332],"Archive223_field16":[0,0,0,0,16066.1686406264,0,0,46667.0851200178,0,20166.784612358,6341.27817419104,19937.1736959061,11559.9652097853,0,40426.637440508,34199.4540599063,13483.9029306047,30927.753192826,24317.1210715194,42490.2340368109,20537.9326197372,11760.1001895586,17353.7203794603,12418.2127037503,9616.27644278446,0,5827.99490598602,32349.3832158153,0,18126.6540893057,0,12398.4561232558,0,0,5235.31151955826,7676.04392950997,0,0,10049.9243397136,5575.50910778395,4298.12525400284,1944.72435962667,1793.33929807217,5282.15801552564],"Archive223_field17":[0,0,0,0,16081.1189885505,0,0,46669.8574283074,0,20193.9291370294,6512.81403108095,20011.2171132812,11579.4618352655,0,40647.9939857737,34225.7416252216,13530.8442451299,30935.6461858,24317.7046498647,42785.8131496435,20584.3999226224,11886.3526586589,17354.7920134456,12420.3152143355,9634.85543402231,0,5920.67477360147,32349.9492135895,0,18259.454993765,0,12477.281913566,0,0,5272.93583365862,7758.09999721953,0,0,10121.0444386015,5764.69950712478,4356.43048754677,2142.87437692862,2087.10917825715,5310.01489770196],"Archive223_field18":[8882466.37784893,8261215.1352781,2200931.03684556,2822278.88967995,5386309.4994184,8073201.04640749,5125604.96810769,2663767.18702173,5752572.88175385,3664033.68547873,6994667.71519094,4063500.41041811,5246124.58472944,3618800.98126429,2554479.98190426,2905821.75335983,2799487.61187162,3471544.72031482,4097146.75713273,2710203.51103648,4609769.1599721,5276870.02444537,4912612.15652225,5841756.24176022,6616179.24639172,6710207.38140269,6463105.63603315,3014873.05287219,4140517.38537873,3231311.21414269,7233475.6799633,5927299.6131111,8364345.97959975,5946610.13385868,5555195.2683135,4603366.91557928,8072897.91730282,4951339.8125207,4413050.27737209,6296206.31795774,7510395.18147538,7409083.28731329,7910909.70600238,7186816.07212367],"Archive223_field19":[-829.175917034409,-767.737233209189,-173.047718573593,-235.308769428931,-478.82757026863,-726.844571278335,-456.011381369184,-215.745145317337,-517.905640856695,-308.255996739887,-633.713779673912,-349.460369385049,-465.669420068864,-307.948718841792,-208.380555695139,-234.597765060315,-225.186670898769,-289.923746409074,-351.23591317747,-216.846044479542,-403.273991188192,-467.918490825159,-433.54291776437,-524.977248837006,-596.526636627953,-614.275032099062,-584.544656561786,-244.101516628656,-355.103996519544,-265.921167961932,-661.477539923368,-531.381171538815,-761.333755916432,-539.243673775307,-496.523070654625,-403.011894098651,-733.421505989265,-437.839171760641,-381.136667879402,-567.204418562357,-678.955436217386,-678.061124040651,-727.412616508839,-649.056670618971],"Archive223_field20":[151.627750496889,144.525787044901,75.7830514381688,82.9800758554707,111.129468318947,139.79882721429,108.49204626514,80.7186318469332,115.646671680272,91.412361673313,129.033435818358,96.1753534948912,109.608460771319,91.3768420907633,79.8673270487293,82.8978877823264,81.810018664416,89.2932574911253,96.3805962887806,80.8458895472536,102.395903016301,109.86844059702,105.894819283559,116.464109462075,124.734812958084,126.786426829335,123.349764008233,83.9964675710333,96.8277247885188,86.5186955332222,132.242769064206,117.204366611902,143.785581381834,118.113227284823,113.17496781831,102.365606079015,140.559083571278,106.391441882909,99.8369539751544,121.345330826183,134.263114764496,134.159737348211,139.864490021742,130.806987007209],"Archive223_field21":[980.803667531299,912.26302025409,248.830770011761,318.288845284401,589.957038587577,866.643398492624,564.503427634324,296.463777164271,633.552312536968,399.6683584132,762.747215492271,445.635722879941,575.277880840183,399.325560932555,288.247882743869,317.495652842641,306.996689563185,379.2170039002,447.616509466251,297.691934026796,505.669894204493,577.786931422179,539.437737047928,641.441358299081,721.261449586037,741.061458928397,707.894420570019,328.09798419969,451.931721308063,352.439863495154,793.720308987574,648.585538150718,905.119337298266,657.35690106013,609.698038472935,505.377500177666,873.980589560543,544.230613643551,480.973621854556,688.549749388539,813.218550981882,812.220861388862,867.277106530581,779.86365762618]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive224.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive224.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive224.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive224_field1":[0,0,0,0,490.540612615776,0,0,262.09044030175,0,131.897857206276,1172.26267340636,530.785837104862,172.595236991999,62.8237672709402,0,0,623.572202120196,496.665180084883,-198.987954117678,0,730.109858778552,365.989980116426,0,0,-317.057622004069,0,0,0,0,0,490.540539344769,0,0,262.090519381484,0,131.89597293984,1172.26625456544,530.787879969851,172.593448884392,62.8235788733203,0,0,623.572031069193,496.667254914584,-198.991776716614,0,730.109379652765,365.989984425874,0,0,-317.056990742243,0,0,0,0,0,490.540500640729,0,0,262.090540103162,0,131.895509508944,1172.26690320777,530.788309006378,172.592994134243,62.8234130167668,0,0,623.571898818671,496.667681331955,-198.992781454009,0,730.109268356851,365.98997489879,0,0,-317.056858646298,0],"Archive224_field2":[0,0,0,0,6674.81408366702,0,0,8936.39681224459,0,6959.28945713759,3333.94934507003,6765.10634538124,5300.63653282172,3977.71931349243,0,0,5049.63343260402,5485.05763329338,2803.87164194747,0,7714.29654275204,7772.35877159348,0,0,7578.6586298528,0,0,0,0,0,6674.81597695602,0,0,8936.3984051043,0,6959.28961514973,3333.9564790865,6765.10713013124,5300.63920480749,3977.72778475163,0,0,5049.64051251627,5485.06106899567,2803.87577792613,0,7714.29884431029,7772.36023937114,0,0,7578.66226533157,0,0,0,0,0,6674.8162204203,0,0,8936.39885807907,0,6959.28925864624,3333.95640178374,6765.10683730912,5300.63940565031,3977.72845679942,0,0,5049.64121311763,5485.06137626935,2803.87551336693,0,7714.2996031241,7772.36048166657,0,0,7578.66345675419,0],"Archive224_field3":[0,0,0,0,4.21901325106575,0,0,5.62375139227928,0,4.37501039948455,2.16550543234247,4.27819569658621,3.33680995123756,2.49983605262447,0,0,3.20761187003848,3.47286267927644,1.74685600226844,0,4.88628924008266,4.89987366858998,0,0,4.73547444303675,0,0,0,0,0,3.35596841031753,0,0,4.91873719928796,0,3.61103085379301,-4.84844128889745,2.86047527551691,1.78974865246156,-4.14557497460969,0,0,-1.42900384638582,1.14254553747387,-2.5245730456978,0,4.7071332740355,4.20335721867507,0,0,4.3957303370709,0,0,0,0,0,2.49292755594418,0,0,4.21372260945441,0,2.84705032398442,-11.8623949714332,1.44275329726886,0.242690801083511,-10.7909900041356,0,0,-6.06561978957138,-1.18776849845453,-6.79600659223129,0,4.52797471223302,3.50684134773279,0,0,4.05598199864807,0],"Archive224_field4":[0,0,0,0,6692.81636863121,0,0,8940.2411047674,0,6960.54063515744,3534.03773329721,6785.89830252024,5303.44679460605,3978.21618465426,0,0,5087.99080027698,5507.49903335751,2810.92430383798,0,7748.7712207307,7780.97253231713,0,0,7585.28935428514,0,0,0,0,0,6692.81776305706,0,0,8940.242283578,0,6960.54031916722,3534.04831367918,6785.89849894576,5303.44865925373,3978.22602643936,0,0,5087.99699544225,5507.50166573979,2810.92929094823,0,7748.77335600208,7780.97359123326,0,0,7585.29275570722,0,0,0,0,0,6692.81762592128,0,0,8940.24237687921,0,6960.53959953057,3534.06503870055,6785.89779106063,5303.44854875164,3978.2391711309,0,0,5088.00108942165,5507.50201978315,2810.93617985807,0,7748.77399419135,7780.97348772214,0,0,7585.29375128913,0],"Archive224_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4272990.75,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2136495.375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive224_field6":[-887.598513201747,-840.245287046324,-207.359335168039,-269.110117802688,-552.914358745591,-849.22246276513,-519.571655693617,-247.021546539854,-579.146356583744,-379.371908777426,-718.794814381417,-410.317826197237,-534.406135036774,-694.115101844017,-674.186856347695,-838.687672198953,-669.06012383019,-582.403212726873,-645.325388867947,-365.024305967296,-236.18657319174,-397.289154287249,-739.138536203081,-866.292146872352,-266.797210389054,-426.715833188751,-887.598513201747,-840.245287046324,-207.359335168039,-269.110117802688,-552.914358745591,-849.22246276513,-519.571655693617,-247.021546539854,-579.146356583744,-379.371908777426,-718.794814381417,-410.317826197236,-534.406135036774,-694.115101844017,-674.186856347695,-838.687672198954,-669.06012383019,-582.403212726873,-645.325388867947,-365.024305967296,-236.18657319174,-397.289154287249,-739.138536203081,-866.292146872352,-266.797210389054,-426.715833188751,-887.598513201747,-840.245287046324,-207.359335168039,-269.110117802688,-552.914358745591,-849.22246276513,-519.571655693617,-247.021546539854,-579.146356583744,-379.371908777426,-718.794814381417,-410.317826197237,-534.406135036774,-694.115101844017,-674.186856347695,-838.687672198953,-669.06012383019,-582.403212726873,-645.325388867947,-365.024305967296,-236.18657319174,-397.289154287249,-739.138536203081,-866.292146872352,-266.797210389054,-426.715833188751],"Archive224_field7":[102.60135485211,97.1275904328357,23.9695632800568,31.1076035846073,63.9137644787706,98.1653010393716,60.0595370812687,28.5542900035164,66.9460346759836,43.8532413635848,83.0886044977428,47.4304139333774,61.7743187719717,80.2357696788068,77.9321775058405,96.9475389891921,77.3395562988005,67.3225087775884,74.5959555289012,42.1947398391859,27.3018285259808,45.9243733418195,85.4402233778916,100.138459725703,30.8402446033149,49.3259305539887,102.60135485211,97.1275904328357,23.9695632800568,31.1076035846073,63.9137644787706,98.1653010393716,60.0595370812687,28.5542900035165,66.9460346759836,43.8532413635848,83.0886044977428,47.4304139333774,61.7743187719717,80.2357696788068,77.9321775058405,96.9475389891921,77.3395562988005,67.3225087775884,74.5959555289012,42.1947398391859,27.3018285259808,45.9243733418195,85.4402233778916,100.138459725703,30.8402446033149,49.3259305539887,102.60135485211,97.1275904328357,23.9695632800568,31.1076035846073,63.9137644787706,98.1653010393716,60.0595370812687,28.5542900035164,66.9460346759836,43.8532413635848,83.0886044977428,47.4304139333774,61.7743187719717,80.2357696788068,77.9321775058405,96.9475389891921,77.3395562988005,67.3225087775884,74.5959555289012,42.1947398391859,27.3018285259808,45.9243733418195,85.4402233778916,100.138459725703,30.8402446033149,49.3259305539887],"Archive224_field8":[990.199868053858,937.372877479159,231.328898448096,300.217721387295,616.828123224362,947.387763804501,579.631192774885,275.575836543371,646.092391259728,423.225150141011,801.88341887916,457.748240130614,596.180453808746,774.350871522824,752.119033853536,935.635211188146,746.39968012899,649.725721504461,719.921344396848,407.219045806482,263.48840171772,443.213527629069,824.578759580972,966.430606598055,297.637454992369,476.041763742739,990.199868053858,937.372877479159,231.328898448096,300.217721387295,616.828123224362,947.387763804501,579.631192774885,275.575836543371,646.092391259728,423.225150141011,801.883418879159,457.748240130614,596.180453808746,774.350871522823,752.119033853536,935.635211188146,746.39968012899,649.725721504461,719.921344396848,407.219045806482,263.48840171772,443.213527629069,824.578759580972,966.430606598055,297.637454992369,476.041763742739,990.199868053858,937.372877479159,231.328898448096,300.217721387295,616.828123224362,947.387763804501,579.631192774885,275.575836543371,646.092391259728,423.225150141011,801.88341887916,457.748240130614,596.180453808746,774.350871522824,752.119033853536,935.635211188146,746.39968012899,649.725721504461,719.921344396848,407.219045806482,263.48840171772,443.213527629069,824.578759580972,966.430606598055,297.637454992369,476.041763742739],"Archive224_field9":[271.857100893521,271.943898382898,272.837806118452,272.756360538106,272.338157304464,271.903652916215,272.391943784981,272.773730331249,272.3019959992,272.589933393398,272.097740658015,272.542600641134,272.363269531827,272.131043972792,272.168193393534,271.924514324133,272.166524520121,272.294575655735,272.202922220306,272.615812043541,272.790755251003,272.561787953138,272.078325987273,271.879918471,272.742709395277,272.527695934528,248.308550092096,248.247766752712,247.870721156611,248.233514698308,248.091205688558,248.343156854879,248.144586498866,247.729091286993,248.180618265683,248.259314642538,248.222355698871,248.167334106022,248.124852264878,248.231088461259,248.233472401723,248.310435728697,248.150510722549,248.182658243392,248.180714864171,248.04519644573,247.422061026693,248.094136976657,248.236985695889,248.311406094634,247.280308909924,248.149665013354,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive224_field10":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive224_field11":[0,0,0,0,489.78886032045,0,0,255.965027978037,0,141.502812000188,1186.70853372315,514.955374544552,173.537763293782,58.1951630456092,0,0,629.284157948036,493.552663675106,-210.925583803761,0,725.280988205278,361.989739238083,0,0,-324.636451673528,0,0,0,0,0,489.788794672441,0,0,255.965115813064,0,141.500923632022,1186.71206516413,514.957393189965,173.536037969773,58.1949285217489,0,0,629.28393828346,493.554630790546,-210.929283755517,0,725.28050371584,361.989746993897,0,0,-324.635819721375,0,0,0,0,0,489.788755190802,0,0,255.965138178811,0,141.500451545038,1186.71265653008,514.957823293237,173.535593670692,58.1947510077602,0,0,629.283801907766,493.555048812707,-210.93022314714,0,725.280383495259,361.989738901064,0,0,-324.635679997044,0],"Archive224_field12":[0,0,0,0,6678.57424774567,0,0,8945.51861309849,0,6947.71646316417,3367.34928737238,6746.75318881873,5293.3367035433,3996.44054345369,0,0,5062.48886506644,5484.38872369834,2803.73310220597,0,7776.22064512306,7762.75420598301,0,0,7627.53900128312,0,0,0,0,0,6678.57611185391,0,0,8945.52032247396,0,6947.71654411504,3367.35560074226,6746.75385729627,5293.33932003688,3996.44815805556,0,0,5062.49528681252,5484.39205994102,2803.73696467191,0,7776.22319129352,7762.75565530285,0,0,7627.54293221005,0,0,0,0,0,6678.57634618986,0,0,8945.52080280283,0,6947.71617853934,3367.35528241495,6746.75355062888,5293.3395156382,3996.44861493201,0,0,5062.49585803441,5484.39235630122,2803.73662115762,0,7776.22399696311,7762.75589458314,0,0,7627.5441830507,0],"Archive224_field13":[0,0,0,0,4.15221626087633,0,0,5.18362629775779,0,4.25646615047287,2.12461192104331,4.13602430125398,3.26979362405816,2.37665675516052,0,0,3.02883148520106,3.42030702091239,1.70824872631799,0,4.36603256496377,4.83834338388369,0,0,4.23747718083233,0,0,0,0,0,3.28691817913728,0,0,4.40669733470602,0,3.47873896039835,-4.84892846204477,2.71406823796923,1.74719092318647,-4.18599978371511,0,0,-1.53197502048057,1.15747840127817,-2.54073041237973,0,4.09272777075447,4.12796192437203,0,0,3.79558620555442,0,0,0,0,0,2.42162377517676,0,0,3.62976780037879,0,2.70101091267267,-11.8224749286901,1.29211078904171,0.224591156318846,-10.7486596745963,0,0,-6.09278164145607,-1.1053477803464,-6.78971380863893,0,3.81942012753736,3.41758108510146,0,0,3.35369065914765,0],"Archive224_field14":[0,0,0,0,6696.51135676223,0,0,8949.18142752849,0,6949.15859768868,3570.3393229712,6766.37825836726,5296.18159657673,3996.86493928175,0,0,5101.45089500881,5506.55296923134,2811.65642076378,0,7809.97177304313,7771.19121135153,0,0,7634.44549381703,0,0,0,0,0,6696.51273044736,0,0,8949.1827224216,0,6949.15820732146,3570.34911172053,6766.37835876103,5296.1834339644,3996.87403508361,0,0,5101.4565715027,5506.55552777552,2811.66117893396,0,7809.97411521332,7771.1922496445,0,0,7634.44916183403,0,0,0,0,0,6696.51259245137,0,0,8949.18285434795,0,6949.15748639967,3570.3652891672,6766.37766476603,5296.18333146887,3996.88675027472,0,0,5101.46052988232,5506.55584969929,2811.66795693781,0,7809.97476779523,7771.19214341117,0,0,7634.45019869531,0],"Archive224_field15":[8907610.26704285,8432390.8100407,2080981.56479243,2700689.57152419,5548843.92605802,8522482.42399962,5214228.89502853,2479016.84310176,5812098.55052252,3807236.108884,7213558.80305058,4117797.88611977,5363102.2409591,6965882.33951887,6765889.84116862,8416759.16374999,6714439.85051397,5844783.15373819,6476246.83228483,3663248.87569458,2370281.05952022,3987046.95543975,7417720.86807572,8693787.45791659,2677478.08849671,4282362.21702402,4453805.13352143,4216195.40502035,1040490.78239621,1350344.78576209,2774421.96302901,4261241.21199981,2607114.44751427,1239508.42155088,2906049.27526126,1903618.054442,3606779.40152529,2058898.94305989,2681551.12047955,3482941.16975944,3382944.92058431,4208379.58187499,3357219.92525698,2922391.5768691,3238123.41614242,1831624.43784729,1185140.52976011,1993523.47771987,3708860.43403786,4346893.72895829,1338739.04424835,2141181.10851201,0,5.11350322085491e-10,-9.58781853910296e-11,3.19593951303432e-11,-6.39187902606864e-11,3.83512741564118e-10,1.91756370782059e-10,-6.39187902606864e-11,-1.27837580521373e-10,6.39187902606864e-11,-5.11350322085491e-10,-1.91756370782059e-10,-2.55675161042745e-10,-2.55675161042745e-10,-2.55675161042745e-10,-5.11350322085491e-10,1.27837580521373e-10,2.55675161042745e-10,5.11350322085491e-10,1.27837580521373e-10,-6.39187902606864e-11,0,-1.27837580521373e-10,-2.55675161042745e-10,1.91756370782059e-10,6.39187902606864e-11],"Archive224_field16":[-878.820719273701,-846.825847103486,-208.692141993724,-269.445381873015,-554.288174962308,-833.682004355583,-519.195007579518,-255.776252397485,-575.747931184999,-380.254334568891,-713.766902032313,-410.718898017144,-533.135383080357,-687.998753489148,-671.57256980785,-828.140838624474,-665.21849102776,-580.224001746163,-641.354481448943,-366.850191085643,-248.842474742126,-400.207073120097,-738.579915533217,-851.979410877044,-278.762054708019,-427.460397064561,-878.820719273701,-846.825847103486,-208.692141993724,-269.445381873015,-554.288174962308,-833.682004355583,-519.195007579518,-255.776252397485,-575.747931184999,-380.254334568891,-713.766902032313,-410.718898017144,-533.135383080357,-687.998753489148,-671.57256980785,-828.140838624474,-665.21849102776,-580.224001746163,-641.354481448943,-366.850191085643,-248.842474742126,-400.207073120097,-738.579915533217,-851.979410877044,-278.762054708019,-427.460397064561,-878.820719273701,-846.825847103486,-208.692141993724,-269.445381873015,-554.288174962308,-833.682004355583,-519.195007579518,-255.776252397485,-575.747931184999,-380.254334568891,-713.766902032313,-410.718898017144,-533.135383080357,-687.998753489148,-671.57256980785,-828.140838624474,-665.21849102776,-580.224001746163,-641.354481448943,-366.850191085643,-248.842474742126,-400.207073120097,-738.579915533217,-851.979410877044,-278.762054708019,-427.460397064561],"Archive224_field17":[101.586691649959,97.8882658592906,24.1236281912047,31.1463582099668,64.0725698429713,96.3689121719648,60.0159986951242,29.5662843556525,66.5531959712213,43.9552447811368,82.507406341794,47.4767755614147,61.6274270518188,79.5287544927479,77.6299808065781,95.7283848355445,76.8954853314531,67.0706043457942,74.1369411489509,42.4058018048835,28.7647789778249,46.2616682123559,85.3756499962061,98.4839886073791,32.2233127579608,49.4119979158598,101.586691649959,97.8882658592906,24.1236281912047,31.1463582099668,64.0725698429713,96.3689121719648,60.0159986951242,29.5662843556526,66.5531959712213,43.9552447811368,82.507406341794,47.4767755614147,61.6274270518188,79.5287544927479,77.6299808065781,95.7283848355445,76.8954853314531,67.0706043457942,74.1369411489509,42.4058018048835,28.7647789778249,46.2616682123559,85.3756499962061,98.4839886073791,32.2233127579608,49.4119979158598,101.586691649959,97.8882658592906,24.1236281912047,31.1463582099668,64.0725698429713,96.3689121719648,60.0159986951242,29.5662843556525,66.5531959712213,43.9552447811368,82.507406341794,47.4767755614147,61.6274270518188,79.5287544927479,77.6299808065781,95.7283848355445,76.8954853314531,67.0706043457942,74.1369411489509,42.4058018048835,28.7647789778249,46.2616682123559,85.3756499962061,98.4839886073791,32.2233127579608,49.4119979158598],"Archive224_field18":[980.40741092366,944.714112962777,232.815770184929,300.591740082981,618.360744805279,930.050916527547,579.211006274642,285.342536753137,642.30112715622,424.209579350028,796.274308374107,458.195673578559,594.762810132176,767.527507981896,749.202550614428,923.869223460018,742.113976359213,647.294606091957,715.491422597894,409.255992890527,277.607253719951,446.468741332453,823.955565529423,950.463399484423,310.98536746598,476.87239498042,980.40741092366,944.714112962777,232.815770184929,300.591740082981,618.360744805279,930.050916527547,579.211006274642,285.342536753137,642.30112715622,424.209579350028,796.274308374107,458.195673578559,594.762810132176,767.527507981896,749.202550614428,923.869223460018,742.113976359213,647.294606091957,715.491422597894,409.255992890527,277.607253719951,446.468741332453,823.955565529423,950.463399484423,310.98536746598,476.87239498042,980.40741092366,944.714112962777,232.815770184929,300.591740082981,618.360744805279,930.050916527547,579.211006274642,285.342536753137,642.30112715622,424.209579350028,796.274308374107,458.195673578559,594.762810132176,767.527507981896,749.202550614428,923.869223460018,742.113976359213,647.294606091957,715.491422597894,409.255992890527,277.607253719951,446.468741332453,823.955565529423,950.463399484423,310.98536746598,476.87239498042],"Archive224_field19":[272.153702358122,272.330129302185,272.939399959629,272.880900900808,272.60135188703,272.061135368882,272.633513932759,272.910526673726,272.558942434595,272.76985433187,272.438134626405,272.738424813581,272.614106820207,272.461268487793,272.470046776222,272.154709738235,272.488267424995,272.567488401039,272.511402650453,272.789789720528,272.921100746874,272.759481310657,272.408711730272,271.962791357751,272.898059907244,272.731247204011,249.651309716634,247.298458012198,248.631174177046,248.311803014977,248.218344733487,251.67062853401,248.173888475314,250.044613221691,248.513336819971,247.751809017993,247.567380176748,247.579398897307,248.100007139389,247.779076720894,248.424450419548,250.124840921545,247.750834137885,248.196631258774,248.154923543875,248.577843157028,252.983947709633,248.364126915809,248.326614781745,252.161890940864,251.692584103557,248.338428917812,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive224_field20":[-8.88490780575622e-05,2.6561403599957,-4.50675009641479e-13,-3.16744366985181e-06,-7.70255214448695e-05,-0.000189769231763349,-1.60567747775313e-06,3.81855196746983e-10,-9.19993318644658e-05,7.41316851083283e-09,1.46627633360722,-6.31483965527843e-06,-4.37508652342171e-05,0.858836547235942,-8.23459634320446e-05,-0.000131257827519445,0.917975610828006,-0.000106935144423899,0.0354246034135951,4.82017813418518e-11,-4.60784800127348e-13,5.04923449324045e-09,-8.88489825113476e-05,-8.88460201461828e-05,4.78631109114408e-10,0.104550940080468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive224_field21":[0,0,0,0,488.788791258507,0,0,249.88308275545,0,145.166767426457,1206.18818582747,502.725282068329,174.008895040711,52.828898733221,0,0,635.944263169018,490.527827679001,-223.279395140084,0,733.83079681881,357.391056446069,0,0,-345.713621130927,0,0,0,0,0,488.788734658826,0,0,249.883181954632,0,145.16486593047,1206.19166830098,502.727290794194,174.00723726819,52.8286376943214,0,0,635.94400125738,490.529685530695,-223.282960912226,0,733.830295508874,357.39106926643,0,0,-345.7129762161,0,0,0,0,0,488.78869543497,0,0,249.883206044008,0,145.164384025229,1206.19220783708,502.727724849568,174.006803237785,52.8284572182378,0,0,635.943863924029,490.530096504594,-223.283829034188,0,733.830163375874,357.391063078431,0,0,-345.712825332762,0],"Archive224_field22":[0,0,0,0,6670.95609299737,0,0,8989.86880466037,0,6930.76618201492,3400.73232620396,6721.75015035484,5280.00905817507,4015.13976330745,0,0,5070.45711541604,5475.52983450824,2805.98139444117,0,7841.3999302147,7757.05876191355,0,0,7681.45155834106,0,0,0,0,0,6670.95795788167,0,0,8989.87067743169,0,6930.76619726263,3400.73798102768,6721.75072740499,5280.01164992144,4015.14661955751,0,0,5070.46294334907,5475.53310697579,2805.98506740582,0,7841.40277778304,7757.06023755779,0,0,7681.45586565827,0,0,0,0,0,6670.9582022094,0,0,8989.8712005354,0,6930.76581694489,3400.73749217276,6721.75040414686,5280.01186694531,4015.14690677722,0,0,5070.46341979226,5475.53342311275,2805.98468568858,0,7841.40367067758,7757.06048372504,0,0,7681.45723246574,0],"Archive224_field23":[0,0,0,0,4.07081268581001,0,0,4.82403081234228,0,4.14267310849411,2.08279981120608,4.00072425962081,3.19536561091039,2.25863010061632,0,0,2.85358840244365,3.3599301594033,1.67235293394814,0,3.9250853465092,4.77680015748421,0,0,3.81151316873473,0,0,0,0,0,3.20588387358839,0,0,3.95147580255654,0,3.34131914534615,-4.8467437215565,2.56413698009556,1.70898321642771,-4.21374995156976,0,0,-1.60834372280785,1.17451015238524,-2.55349851759635,0,3.55482656288376,4.03082408759327,0,0,3.26217365689878,0,0,0,0,0,2.34095846296404,0,0,3.07892001134741,0,2.53996443164916,-11.7762926619109,1.12754844392715,0.222603356190777,-10.6861328797455,0,0,-6.0702759044036,-1.0109079347654,-6.77935405470482,0,3.18456458928135,3.28484867278902,0,0,2.71282910739898,0],"Archive224_field24":[0,0,0,0,6688.84042631267,0,0,8993.3423125847,0,6932.28753167864,3608.30633846039,6740.52474209691,5282.87658007694,4015.48792961004,0,0,5110.1828350948,5497.45903190265,2814.8513408364,0,7875.66352190251,7765.28890775013,0,0,7689.228210855,0,0,0,0,0,6688.84181160278,0,0,8993.34376167902,0,6932.28707453987,3608.31548609703,6740.5247677816,5282.87842587272,4015.49635751216,0,0,5110.18804148936,5497.46155579544,2814.85594649049,0,7875.6661345452,7765.28995936626,0,0,7689.23223213846,0,0,0,0,0,6688.84169378349,0,0,8993.34394419712,0,6932.28634428357,3608.33116744919,6740.52408439777,5282.87835674915,4015.50865051125,0,0,5110.19184940875,5497.46187482337,2814.86264039089,0,7875.66685282254,7765.28985359643,0,0,7689.23337734273,0],"Archive224_field25":[8819519.57496473,8498430.87596716,2094357.12095648,2704054.15768628,5562631.03729699,8366524.13337102,5210448.99391523,2566875.83184777,5777993.21063811,3816091.8076296,7163100.53504254,4121822.89450779,5350349.44450272,6904500.9304783,6739653.82874076,8310915.04432493,6675886.64511292,5822913.39864384,6436396.27466346,3681572.78316481,2497291.00479633,4016330.10921624,7412114.75772262,8550150.13517999,2797552.83908944,4289834.38459302,4409759.78748237,4249215.43798358,1047178.56047824,1352027.07884314,2781315.51864849,4183262.06668551,2605224.49695762,1283437.91592388,2888996.60531906,1908045.9038148,3581550.26752127,2060911.44725389,2675174.72225136,3452250.46523915,3369826.91437038,4155457.52216246,3337943.32255646,2911456.69932192,3218198.13733173,1840786.39158241,1248645.50239816,2008165.05460812,3706057.37886131,4275075.06758999,1398776.41954472,2144917.19229651,0,0,0,3.19593951303432e-11,3.83512741564118e-10,-5.11350322085491e-10,3.19593951303432e-10,-6.39187902606864e-11,0,-1.91756370782059e-10,5.11350322085491e-10,2.55675161042746e-10,4.47431531824805e-10,5.11350322085491e-10,-1.27837580521373e-10,1.27837580521373e-10,-3.83512741564118e-10,-1.27837580521373e-10,-5.11350322085491e-10,-1.27837580521373e-10,-1.91756370782059e-10,1.91756370782059e-10,2.55675161042745e-10,-1.27837580521373e-10,-1.27837580521373e-10,-1.27837580521373e-10],"Archive224_field26":[-870.038041480435,-853.386672167281,-210.152724860816,-269.90617839646,-555.423563422843,-818.396246179871,-518.781537630881,-263.870865650138,-572.457624046272,-381.289216156233,-708.756069727254,-411.22772574837,-531.809948492527,-681.960139447346,-668.920352467054,-817.67140583768,-661.358215817229,-578.093977795924,-637.408826594042,-368.538745892281,-260.041304072405,-403.087118889489,-737.810698094615,-837.759467706982,-289.319651151684,-428.047806753779,-870.038041480435,-853.386672167281,-210.152724860816,-269.90617839646,-555.423563422843,-818.396246179871,-518.781537630881,-263.870865650138,-572.457624046272,-381.289216156232,-708.756069727254,-411.22772574837,-531.809948492527,-681.960139447346,-668.920352467054,-817.67140583768,-661.358215817229,-578.093977795924,-637.408826594042,-368.538745892281,-260.041304072405,-403.087118889489,-737.810698094615,-837.759467706982,-289.319651151684,-428.047806753779,-870.038041480435,-853.386672167281,-210.152724860816,-269.90617839646,-555.423563422843,-818.396246179871,-518.781537630881,-263.870865650138,-572.457624046272,-381.289216156233,-708.756069727254,-411.22772574837,-531.809948492527,-681.960139447346,-668.920352467054,-817.67140583768,-661.358215817229,-578.093977795924,-637.408826594042,-368.538745892281,-260.041304072405,-403.087118889489,-737.810698094615,-837.759467706982,-289.319651151684,-428.047806753779],"Archive224_field27":[100.571463900683,98.6466600324229,24.2924632881641,31.1996236750542,64.2038143106013,94.6019652072697,59.9682039137115,30.5019757458175,66.1728551242147,44.0748712241665,81.9281825420816,47.5355931617527,61.4742143295614,78.8307249524741,77.3233995218187,94.5181777740394,76.4492594074441,66.8243856557993,73.6808458222121,42.6009891653018,30.0593001435931,46.5945851715222,85.2867328222783,96.8402438134571,33.4437110382536,49.4798991449297,100.571463900683,98.6466600324229,24.2924632881641,31.1996236750542,64.2038143106013,94.6019652072697,59.9682039137115,30.5019757458175,66.1728551242147,44.0748712241665,81.9281825420816,47.5355931617527,61.4742143295614,78.8307249524741,77.3233995218187,94.5181777740395,76.4492594074441,66.8243856557993,73.6808458222121,42.6009891653018,30.0593001435931,46.5945851715222,85.2867328222783,96.8402438134571,33.4437110382536,49.4798991449297,100.571463900683,98.6466600324229,24.2924632881641,31.1996236750542,64.2038143106013,94.6019652072697,59.9682039137115,30.5019757458175,66.1728551242147,44.0748712241665,81.9281825420816,47.5355931617527,61.4742143295614,78.8307249524741,77.3233995218187,94.5181777740394,76.4492594074441,66.8243856557993,73.6808458222121,42.6009891653018,30.0593001435931,46.5945851715222,85.2867328222783,96.8402438134571,33.4437110382536,49.4798991449297],"Archive224_field28":[970.609505381117,952.033332199704,234.44518814898,301.105802071514,619.627377733444,912.998211387141,578.749741544593,294.372841395955,638.630479170487,425.364087380399,790.684252269335,458.763318910122,593.284162822088,760.79086439982,746.243751988873,912.18958361172,737.807475224673,644.918363451724,711.089672416254,411.139735057582,290.100604215998,449.681704061011,823.097430916893,934.599711520439,322.763362189938,477.527705898708,970.609505381117,952.033332199704,234.44518814898,301.105802071514,619.627377733444,912.998211387141,578.749741544592,294.372841395955,638.630479170487,425.364087380399,790.684252269335,458.763318910122,593.284162822088,760.79086439982,746.243751988873,912.18958361172,737.807475224673,644.918363451724,711.089672416254,411.139735057582,290.100604215998,449.681704061011,823.097430916893,934.599711520439,322.763362189938,477.527705898708,970.609505381117,952.033332199704,234.44518814898,301.105802071514,619.627377733444,912.998211387141,578.749741544593,294.372841395955,638.630479170487,425.364087380399,790.684252269335,458.763318910122,593.284162822088,760.79086439982,746.243751988873,912.18958361172,737.807475224673,644.918363451724,711.089672416254,411.139735057582,290.100604215998,449.681704061011,823.097430916893,934.599711520439,322.763362189938,477.527705898708],"Archive224_field29":[272.170981903823,272.323629617338,272.939583025529,272.88341820714,272.603854820129,272.107790327791,272.637262169129,272.907056390644,272.567244937488,272.771346868316,272.443085159547,272.741182945566,272.619866747645,272.467350765287,272.477459191631,272.18100428148,272.491992430529,272.574602397156,272.515329638142,272.789391810849,272.917712651634,272.758064643752,272.416099656022,272.020688815664,272.887607796044,272.730328907837,250.992247701696,246.523243645448,249.482065979388,248.514606356332,248.311332382671,254.505414849484,248.2299744114,251.764987665162,248.844110080069,247.542691715446,247.161923122634,247.266361634464,248.07627573202,247.546041706518,248.715250656941,251.823016437737,247.600261337778,248.185216547096,248.237221299407,248.973413234223,256.303281525599,248.679452938158,248.466039705703,255.360815541303,254.442051119752,248.458227032388,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive224_field30":[-8.24462844051501e-05,2.75238715352038,-2.32171785981054e-06,-1.145976805296e-05,-7.77233166865479e-05,-0.000184557540767892,-7.34268535263979e-06,-0.0318101816175812,-8.67421869664525e-05,-2.70700002854727e-06,1.36061102992606,-2.09682677883032e-05,-4.85980029258935e-05,0.850476031244506,-9.19555605929872e-05,-0.000140870266714137,0.947300192694891,-0.000102843149310359,0.161679628102225,4.5686593350942e-10,0.0766313897883781,1.93356642038806e-06,-8.24461541443688e-05,-8.244319040198e-05,0.235891680882827,0.142368440472641,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive225.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive225.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive225.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive225_field1":[0,0,0,0,810.615385083246,0,0,255.8233509682,0,-1859.28109289627,2460.25992549318,2976.28554330896,74.8719714980585,-111.369287181571,0,0,1172.81719122085,894.717210506144,-682.448533636109,0,4108.21489985925,661.531383622537,0,0,-3616.67007366941,0,0,0,0,0,810.615246799092,0,0,255.824298324288,0,-1859.28977174758,2460.26793941393,2976.29628054146,74.8676444432887,-111.369769328844,0,0,1172.81733961106,894.723078387913,-682.456830574784,0,4108.21129481626,661.531711141465,0,0,-3616.66369325958,0,0,0,0,0,810.615139875504,0,0,255.824490063653,0,-1859.29186705353,2460.26948804331,2976.29860733847,74.8665488904893,-111.370108305206,0,0,1172.81718697527,894.724299917084,-682.458960975304,0,4108.21045564232,661.531704327489,0,0,-3616.66233330745,0],"Archive225_field2":[0,0,0,0,16936.088083723,0,0,48025.6173486251,0,20881.7936889282,6670.88558133652,21015.4018817982,13154.6092589404,8284.40184018817,0,0,11162.8764534475,13320.2742685215,5977.95751820493,0,38244.564821875,27734.7192295526,0,0,40205.5437876402,0,0,0,0,0,16936.0978337387,0,0,48025.634076831,0,20881.8091919608,6670.90345776562,21015.422181084,13154.6215029845,8284.42507439458,0,0,11162.8981148631,13320.2895984302,5977.96942218564,0,38244.5641798525,27734.743008281,0,0,40205.546392167,0,0,0,0,0,16936.0977813545,0,0,48025.6275631259,0,20881.8163235876,6670.90478127216,21015.4309516944,13154.6225062091,8284.42842135269,0,0,11162.9016658572,13320.2907081555,5977.97012195283,0,38244.5366449748,27734.7478811713,0,0,40205.5105178318,0],"Archive225_field3":[0,0,0,0,10.6777207404713,0,0,30.1506083466173,0,12.9860028881946,4.34014856367632,13.3732550918396,8.2587964921331,5.19121543316697,0,0,7.07794271144546,8.41418924381201,3.70816110212485,0,24.2550359597467,17.4441683755697,0,0,25.0007790271298,0,0,0,0,0,4.94363179731289,0,0,15.4890907396227,0,3.79942190460136,-10.8706140097061,1.85867695040605,0.421077959833318,-10.1319729635309,0,0,-5.07578988648815,-1.78400928958623,-6.85820390715397,0,12.3654398676593,5.44366278061068,0,0,9.27891661238491,0,0,0,0,0,-0.790458134367032,0,0,0.827596913701089,0,-5.38716449538012,-26.0813966888184,-9.6559078258694,-7.41664363021061,-25.4551729266253,0,0,-17.2295232860528,-11.9822166483963,-17.4245818245111,0,0.475885253789121,-6.55685038285689,0,0,-6.44288762321316,0],"Archive225_field4":[0,0,0,0,16955.4796716542,0,0,48026.3081691966,0,20964.4079927298,7110.10634077724,21225.1165069299,13154.8249237774,8285.15201529568,0,0,11224.3200674352,13350.2919920874,6016.78700312581,0,38464.5909426423,27742.6130494704,0,0,40367.8916804009,0,0,0,0,0,16955.4867624556,0,0,48026.3179357445,0,20964.4205267017,7110.13287124695,21225.1339796347,13154.8345572368,8285.17982277115,0,0,11224.3405418114,13350.3051484128,6016.80253732375,0,38464.5842594693,27742.6318789999,0,0,40367.887027452,0,0,0,0,0,16955.4860027491,0,0,48026.3089325707,0,20964.4281639276,7110.1741746493,21225.1451048524,13154.8376382078,8285.21608259971,0,0,11224.3561335221,13350.3115954704,6016.82479622168,0,38464.5548078116,27742.6369911054,0,0,40367.85062328,0],"Archive225_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4272990.75,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2136495.375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive225_field6":[-829.221752629971,-797.098771064973,-154.646973625578,-213.190039373494,-498.018584040139,-784.087747261471,-466.08794048582,-203.716437947747,-521.874233268636,-316.234402903255,-661.556769067888,-345.415277622465,-476.133171984892,-634.148845777872,-621.146950929857,-778.020609579494,-610.338484446829,-522.20756496901,-588.505481533996,-320.771000591022,-202.10467190787,-335.953007200651,-689.815172159729,-803.409293906481,-229.593712729578,-382.288542828217,-829.221752629971,-797.098771064973,-154.646973625578,-213.190039373494,-498.018584040139,-784.087747261471,-466.08794048582,-203.716437947747,-521.874233268636,-316.234402903255,-661.556769067888,-345.415277622465,-476.133171984892,-634.148845777872,-621.146950929857,-778.020609579494,-610.338484446829,-522.20756496901,-588.505481533996,-320.771000591022,-202.10467190787,-335.953007200651,-689.815172159729,-803.409293906481,-229.593712729578,-382.288542828217,-829.221752629971,-797.098771064973,-154.646973625578,-213.190039373494,-498.018584040139,-784.087747261471,-466.08794048582,-203.716437947747,-521.874233268636,-316.234402903255,-661.556769067888,-345.415277622465,-476.133171984892,-634.148845777872,-621.146950929857,-778.020609579494,-610.338484446829,-522.20756496901,-588.505481533996,-320.771000591022,-202.10467190787,-335.953007200651,-689.815172159729,-803.409293906481,-229.593712729578,-382.288542828217],"Archive225_field7":[151.633048831818,147.919814321578,73.6560296666426,80.4232760889753,113.34784068512,146.415813751053,109.65683935823,79.328181485781,116.105418458534,92.3346201829281,132.251927504031,95.7077638254976,110.818011156378,129.083726992862,127.580781677824,145.714487039723,126.331384243581,116.143949712885,123.807612914508,92.8590251501073,79.1418704713569,94.6139790221036,135.518438657504,148.649274977194,82.3194477091988,99.9701041873402,151.633048831818,147.919814321578,73.6560296666426,80.4232760889753,113.34784068512,146.415813751053,109.65683935823,79.328181485781,116.105418458534,92.3346201829281,132.251927504031,95.7077638254977,110.818011156378,129.083726992862,127.580781677824,145.714487039723,126.331384243581,116.143949712885,123.807612914508,92.8590251501073,79.1418704713569,94.6139790221036,135.518438657504,148.649274977194,82.3194477091988,99.9701041873402,151.633048831818,147.919814321578,73.6560296666426,80.4232760889753,113.34784068512,146.415813751053,109.65683935823,79.328181485781,116.105418458534,92.3346201829281,132.251927504031,95.7077638254976,110.818011156378,129.083726992862,127.580781677824,145.714487039723,126.331384243581,116.143949712885,123.807612914508,92.8590251501073,79.1418704713569,94.6139790221036,135.518438657504,148.649274977194,82.3194477091988,99.9701041873402],"Archive225_field8":[980.854801461789,945.018585386551,228.30300329222,293.613315462469,611.366424725259,930.503561012525,575.74477984405,283.044619433528,637.97965172717,408.569023086183,793.808696571919,441.123041447963,586.95118314127,763.232572770734,748.727732607681,923.735096619217,736.66986869041,638.351514681895,712.313094448504,413.630025741129,281.246542379227,430.566986222754,825.333610817233,952.058568883675,311.913160438777,482.258647015557,980.854801461789,945.018585386551,228.30300329222,293.613315462469,611.366424725259,930.503561012524,575.74477984405,283.044619433528,637.97965172717,408.569023086183,793.808696571919,441.123041447963,586.95118314127,763.232572770734,748.727732607681,923.735096619217,736.66986869041,638.351514681895,712.313094448504,413.630025741129,281.246542379227,430.566986222754,825.333610817233,952.058568883675,311.913160438777,482.258647015557,980.854801461789,945.018585386551,228.30300329222,293.613315462469,611.366424725259,930.503561012525,575.74477984405,283.044619433528,637.97965172717,408.569023086183,793.808696571919,441.123041447963,586.95118314127,763.232572770734,748.727732607681,923.735096619217,736.66986869041,638.351514681895,712.313094448504,413.630025741129,281.246542379227,430.566986222754,825.333610817233,952.058568883675,311.913160438777,482.258647015557],"Archive225_field9":[271.857100893521,271.943898382898,272.837806118452,272.756360538106,272.338157304464,271.903652916215,272.391943784981,272.773730331249,272.3019959992,272.589933393398,272.097740658015,272.542600641134,272.363269531827,272.131043972792,272.168193393534,271.924514324133,272.166524520121,272.294575655735,272.202922220306,272.615812043541,272.790755251003,272.561787953138,272.078325987273,271.879918471,272.742709395277,272.527695934528,248.308550092096,248.247766752712,247.870721156611,248.233514698308,248.091205688558,248.343156854879,248.144586498866,247.729091286993,248.180618265683,248.259314642538,248.222355698871,248.167334106022,248.124852264878,248.231088461259,248.233472401723,248.310435728697,248.150510722549,248.182658243392,248.180714864171,248.04519644573,247.422061026693,248.094136976657,248.236985695889,248.311406094634,247.280308909924,248.149665013354,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive225_field10":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive225_field11":[0,0,0,0,876.809924329202,0,0,105.753050079464,0,-2198.77360569272,2846.19503924784,3324.32374336538,43.9807276216968,-167.958514130225,0,0,1334.64424970625,980.320525409954,-848.148101753566,0,4636.99243611606,652.477916441352,0,0,-4327.05277856789,0,0,0,0,0,876.809806479378,0,0,105.754316449002,0,-2198.78281352425,2846.20418467946,3324.33502907805,43.9760576819687,-167.959119360705,0,0,1334.64403230422,980.326554030709,-848.157142627389,0,4636.99010152681,652.47825861657,0,0,-4327.04755113807,0,0,0,0,0,876.809705471886,0,0,105.75459933703,0,-2198.7850117224,2846.20575767428,3324.33744094173,43.9748733236709,-167.959495028542,0,0,1334.6438224145,980.327877835918,-848.159252114544,0,4636.98938756729,652.478256524671,0,0,-4327.04629317505,0],"Archive225_field12":[0,0,0,0,18726.2481381221,0,0,54485.3602359066,0,23046.8218685136,7652.11253026016,22970.4427914073,14560.5912137915,9393.71471254707,0,0,12534.1965895079,14702.7733790708,6717.53266628657,0,44429.5018706972,30900.1001492936,0,0,45419.7908155722,0,0,0,0,0,18726.2589776215,0,0,54485.3743409994,0,23046.8384884909,7652.13015425859,22970.4637848518,14560.604305289,9393.73671306282,0,0,12534.2169407572,14702.7895633308,6717.54542159692,0,44429.4904341945,30900.125511859,0,0,45419.7812469171,0,0,0,0,0,18726.2587631234,0,0,54485.364679412,0,23046.8468530777,7652.13100743207,22970.4736247909,14560.6052918694,9393.73965455355,0,0,12534.220255952,14702.7906897604,6717.54608071622,0,44429.4512389052,30900.1309447726,0,0,45419.7341694865,0],"Archive225_field13":[0,0,0,0,12.1800007477996,0,0,25.5305181248187,0,13.4667426454557,4.85304315620471,13.7123695130585,9.20675787672878,5.25142760930833,0,0,7.12932873145213,9.48757344977897,4.08135098559829,0,18.99331849508,19.0173732904775,0,0,19.3873318496067,0,0,0,0,0,6.13440918758416,0,0,7.38648990798565,0,2.94258796904468,-11.8977219611015,1.05403740133371,1.10305416390141,-11.2845869273334,0,0,-5.67561326792569,-0.797784782805874,-7.6143716062875,0,2.49989633768374,5.59330279402303,0,0,-0.17612383099743,0,0,0,0,0,0.0888133759710025,0,0,-10.7575028333652,0,-7.58156916164653,-28.6485062017525,-11.6042977593323,-7.00065516073385,-27.8206110093427,0,0,-18.4805540399349,-11.0831550218353,-19.3101076471796,0,-13.9934608550286,-7.83077500703657,0,0,-19.7394956010649,0],"Archive225_field14":[0,0,0,0,18746.7680768271,0,0,54485.4688476797,0,23151.4747901995,8164.29273907002,23209.751364741,14560.6605469647,9395.21759943239,0,0,12605.0549481164,14735.4220632767,6770.86530530339,0,44670.8260062094,30906.994003434,0,0,45625.4442098648,0,0,0,0,0,18746.7759458704,0,0,54485.4774744107,0,23151.4884798895,8164.31967247659,23209.7697314673,14560.6707553456,9395.24491655342,0,0,12605.0744235612,14735.4355800087,6770.88214403873,0,44670.810421273,30907.0140228985,0,0,45625.4300698484,0,0,0,0,0,18746.7747234278,0,0,54485.4683746746,0,23151.4980698265,8164.36261485422,23209.7826923948,14560.6733794929,9395.28227760609,0,0,12605.0899674816,14735.4409384753,6770.90631627338,0,44670.7734854414,30907.0199404661,0,0,45625.3873550438,0],"Archive225_field15":[8823544.19734592,8501169.83986278,2053761.30792606,2641277.85483782,5499711.74255074,8370596.01904964,5179267.61817771,2546204.29616155,5739118.21161773,3675392.96080799,7140920.45836077,3968241.42256634,5280077.84476674,6865864.68115379,6735382.4751602,8309708.47011426,6626912.70466913,5742463.40522995,6407804.76564702,3720920.57666128,2530029.20853878,3873281.57765307,7424511.33618134,8564499.91220669,2805899.05128034,4338287.86906314,4411772.09867296,4250584.91993139,1026880.65396303,1320638.92741891,2749855.87127537,4185298.00952482,2589633.80908886,1273102.14808077,2869559.10580886,1837696.480404,3570460.22918039,1984120.71128317,2640038.92238337,3432932.3405769,3367691.2375801,4154854.23505713,3313456.35233457,2871231.70261497,3203902.38282351,1860460.28833064,1265014.60426939,1936640.78882653,3712255.66809067,4282249.95610335,1402949.52564017,2169143.93453157,0,5.11350322085491e-10,1.27837580521373e-10,0,0,-2.55675161042745e-10,0,-1.27837580521373e-10,0,0,5.11350322085491e-10,0,1.27837580521373e-10,2.55675161042745e-10,-1.27837580521373e-10,-2.55675161042745e-10,5.11350322085491e-10,-3.83512741564118e-10,-1.27837580521373e-10,-1.27837580521373e-10,0,0,0,5.11350322085491e-10,0,0],"Archive225_field16":[-809.965167329452,-812.208567836363,-153.869749952821,-208.700643773761,-492.864409355998,-750.385143525508,-461.646946375071,-211.445600907162,-510.75868199101,-305.250452955676,-648.239971876436,-332.418791846884,-465.848867222697,-617.202754225604,-614.582262460225,-754.365704506346,-597.25903825115,-509.616677787786,-576.72218552901,-326.402989560465,-216.315927602625,-328.51973993777,-688.824254107673,-773.063696940212,-240.899209193565,-385.81297252673,-809.965167329452,-812.208567836363,-153.869749952821,-208.700643773761,-492.864409355998,-750.385143525508,-461.646946375071,-211.445600907162,-510.75868199101,-305.250452955676,-648.239971876436,-332.418791846884,-465.848867222697,-617.202754225604,-614.582262460225,-754.365704506346,-597.25903825115,-509.616677787786,-576.72218552901,-326.402989560465,-216.315927602625,-328.51973993777,-688.824254107673,-773.063696940212,-240.899209193565,-385.81297252673,-809.965167329452,-812.208567836363,-153.869749952821,-208.700643773761,-492.864409355998,-750.385143525508,-461.646946375071,-211.445600907162,-510.75868199101,-305.250452955676,-648.239971876436,-332.418791846884,-465.848867222697,-617.202754225604,-614.582262460225,-754.365704506346,-597.25903825115,-509.616677787786,-576.72218552901,-326.402989560465,-216.315927602625,-328.51973993777,-688.824254107673,-773.063696940212,-240.899209193565,-385.81297252673],"Archive225_field17":[149.407096768726,149.666421145752,73.5661870174472,79.9043274155056,112.752047319232,142.519983875359,109.143485622418,80.2216288943938,114.82052376341,91.0649378552908,130.712581263797,94.2054437685602,109.629203844717,127.124854905032,126.821940916885,142.980114152315,124.819474432521,114.688514553441,122.445530715458,93.5100511378509,80.7846110423972,93.7547354780847,135.403894149851,145.141496047615,83.6262989907502,100.377508274627,149.407096768726,149.666421145752,73.5661870174472,79.9043274155056,112.752047319232,142.519983875359,109.143485622418,80.2216288943938,114.82052376341,91.0649378552908,130.712581263797,94.2054437685602,109.629203844717,127.124854905032,126.821940916885,142.980114152315,124.819474432521,114.688514553441,122.445530715458,93.5100511378509,80.7846110423972,93.7547354780847,135.403894149851,145.141496047615,83.6262989907502,100.377508274627,149.407096768726,149.666421145752,73.5661870174472,79.9043274155056,112.752047319232,142.519983875359,109.143485622418,80.2216288943938,114.82052376341,91.0649378552908,130.712581263797,94.2054437685602,109.629203844717,127.124854905032,126.821940916885,142.980114152315,124.819474432521,114.688514553441,122.445530715458,93.5100511378509,80.7846110423972,93.7547354780847,135.403894149851,145.141496047615,83.6262989907502,100.377508274627],"Archive225_field18":[959.372264098178,961.874988982115,227.435936970269,288.604971189266,605.616456675231,892.905127400867,570.79043199749,291.667229801555,625.57920575442,396.315390810967,778.952553140233,426.624235615444,575.478071067415,744.327609130636,741.404203377111,897.34581865866,722.078512683671,624.305192341227,699.167716244468,419.913040698316,297.100538645022,422.274475415855,824.228148257524,918.205192987827,324.525508184315,486.190480801358,959.372264098178,961.874988982115,227.435936970269,288.604971189266,605.616456675231,892.905127400867,570.79043199749,291.667229801555,625.57920575442,396.315390810966,778.952553140233,426.624235615444,575.478071067415,744.327609130636,741.404203377111,897.34581865866,722.078512683671,624.305192341227,699.167716244468,419.913040698316,297.100538645022,422.274475415855,824.228148257524,918.205192987827,324.525508184315,486.190480801358,959.372264098178,961.874988982115,227.435936970269,288.604971189266,605.616456675231,892.905127400867,570.79043199749,291.667229801555,625.57920575442,396.315390810967,778.952553140233,426.624235615444,575.478071067415,744.327609130636,741.404203377111,897.34581865866,722.078512683671,624.305192341227,699.167716244468,419.913040698316,297.100538645022,422.274475415855,824.228148257524,918.205192987827,324.525508184315,486.190480801358],"Archive225_field19":[272.051636868868,272.330133595528,272.947235488461,272.875335769508,272.597075806996,271.867173501337,272.625135246892,272.916386380091,272.516335784794,272.741637014252,272.438139454622,272.717800149663,272.610987120675,272.461269141169,272.450025278785,272.013635512395,272.488271266545,272.565231648759,272.503265573682,272.792958375897,272.931813849487,272.734654926687,272.398872469665,271.746288430822,272.900958350493,272.731248884426,250.899311545884,246.49803342404,247.612629324349,247.831101235728,248.414677278968,254.085259047501,248.406179906389,249.015075200742,249.208229175277,247.051747100938,247.373948652279,247.009701994933,248.079000240338,247.751808239169,248.919088347732,251.709709496489,247.756193390439,247.941642830316,248.339897148544,249.0673567153,252.560347009515,247.558507843772,248.347544472326,254.58179443828,250.548307741997,248.695246788834,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive225_field20":[-0.000115197933748872,5.6710063030982,-0.574003645416068,-8.27923590192258e-05,-0.000100792121712858,-0.000251752960016388,-9.51668706022373e-06,0.618463709206708,-0.000136211150094167,-0.000154061890133706,1.90111149827038,-0.00020297750848199,-4.24176403545896e-05,0.861989831875101,-0.000171804370484877,-0.000220753261692803,1.54222975025712,-0.000151963598134787,-3.91480119520284e-05,0.314687219743484,2.18429657106612,-3.74458239024709e-05,-0.00011519729691725,-0.000115193796074627,2.03806840595814,0.694816566129354,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive225_field21":[0,0,0,0,852.400614315535,0,0,82.2149055185701,0,-2380.81749334481,2954.8457767707,3438.60848672855,-6.55118722799073,-221.762536290872,0,0,1352.53004503342,974.151726575354,-943.170656883328,0,4665.13596114255,608.850598774882,0,0,-4410.34119396191,0,0,0,0,0,852.400528068209,0,0,82.2161571193944,0,-2380.82642360007,2954.85515049566,3438.61935297821,-6.55582585605281,-221.763131544483,0,0,1352.529562625,974.157515855544,-943.179526250461,0,4665.13500549855,608.850911743432,0,0,-4410.33757931308,0,0,0,0,0,852.400433739112,0,0,82.2164436991453,0,-2380.82851599947,2954.85657998906,3438.62163492051,-6.55701895469255,-221.763475825314,0,0,1352.5293218791,974.158854075596,-943.181374392029,0,4665.13456169291,608.850919686293,0,0,-4410.33662620993,0],"Archive225_field22":[0,0,0,0,19003.9756902757,0,0,55640.3218879562,0,23396.7763884849,7809.86327362347,23271.7247276919,14788.1821312399,9610.01152390409,0,0,12765.9025223504,14913.9186376538,6853.90980465867,0,45126.8744455716,31451.5493960662,0,0,45915.9991359598,0,0,0,0,0,19003.9868082676,0,0,55640.3323765265,0,23396.7924733176,7809.8790809234,23271.7446838878,14788.1953979443,9610.0303813496,0,0,12765.920085179,14913.935105341,6853.9222310866,0,45126.8568545789,31451.5737575455,0,0,45915.9831271003,0,0,0,0,0,19003.9866539702,0,0,55640.3214477603,0,23396.8008847707,7809.87948489011,23271.7543977921,14788.1964835626,9610.03261891077,0,0,12765.922867486,14913.9363719759,6853.92276689561,0,45126.8147360044,31451.5790434313,0,0,45915.9338536444,0],"Archive225_field23":[0,0,0,0,12.4407697402933,0,0,20.802863219721,0,13.1041004885222,4.7782823310449,13.2744677197467,9.28315591295054,4.77600185365464,0,0,6.47419783191867,9.70927794203837,4.07046835885358,0,13.8102173785474,19.0042995550018,0,0,14.3399226303126,0,0,0,0,0,6.41152621083811,0,0,2.0442364327618,0,2.58567536526123,-11.882942056711,0.793551764149693,1.27372327336557,-11.4815922011359,0,0,-6.02947102510311,-0.371141147781132,-7.73545874795611,0,-3.50212841655236,5.60525170262657,0,0,-5.7207291308698,0,0,0,0,0,0.382276704126139,0,0,-16.7143511725539,0,-7.93275019379558,-28.5441833888772,-11.6873647995737,-6.73571668972849,-27.7391936582112,0,0,-18.5331377781614,-10.45157404676,-19.5413988506554,0,-20.8144024801505,-7.79380199685915,0,0,-25.7812911344466,0],"Archive225_field24":[0,0,0,0,19023.0868582527,0,0,55640.3865177552,0,23517.6021104796,8350.15573203125,23524.3995956955,14788.1864960434,9612.57108802142,0,0,12837.3535687115,14945.7028937091,6918.50179353266,0,45367.3724331091,31457.4477608756,0,0,46127.3269519707,0,0,0,0,0,19023.0949736557,0,0,55640.3931568221,0,23517.615508051,8350.18092159491,23524.4171939808,14788.1969059451,9612.5956246965,0,0,12837.3707663786,14945.7165545773,6918.5184400884,0,45367.3528702975,31457.4668827276,0,0,46127.3087966164,0,0,0,0,0,19023.0937386601,0,0,55640.384701431,0,23517.6252838744,8350.22213759714,23524.4300269698,14788.1994712281,9612.63103622541,0,0,12837.3854698822,14945.7215555396,6918.5424957746,0,45367.3155689833,31457.4726338744,0,0,46127.2665078228,0],"Archive225_field25":[8630292.23220647,8652806.16963564,2045961.37871903,2596223.94167526,5447986.35246534,8032369.1579189,5134699.44445006,2623771.31583194,5627566.65174944,3565162.10319557,7007278.00896231,3837813.50002234,5176868.36736612,6695799.9763891,6669501.69061371,8072316.59511502,6495652.22204439,5616105.92010744,6289551.9667605,3777441.13412269,2672648.11252673,3798684.05771169,7414566.84925058,8259962.72892411,2919356.83075922,4373657.74147843,4315146.11610323,4326403.08481782,1022980.68935952,1298111.97083763,2723993.17623267,4016184.57895945,2567349.72222503,1311885.65791597,2813783.32587472,1782581.05159778,3503639.00448116,1918906.75001117,2588434.18368306,3347899.98819455,3334750.84530686,4036158.29755751,3247826.11102219,2808052.96005372,3144775.98338025,1888720.56706134,1336324.05626336,1899342.02885584,3707283.42462529,4129981.36446205,1459678.41537961,2186828.87073921,0,-2.55675161042745e-10,-1.27837580521373e-10,-1.27837580521373e-10,0,0,-1.27837580521373e-10,-1.27837580521373e-10,1.27837580521373e-10,0,-2.55675161042746e-10,-1.27837580521373e-10,-1.27837580521373e-10,-3.83512741564118e-10,-2.55675161042745e-10,-2.55675161042745e-10,-3.83512741564118e-10,-3.83512741564118e-10,3.83512741564118e-10,2.55675161042745e-10,-1.27837580521373e-10,-2.55675161042745e-10,5.11350322085491e-10,-2.55675161042745e-10,0,1.27837580521373e-10],"Archive225_field26":[-790.793821788414,-827.460790019148,-154.036801789779,-205.614209064527,-486.410438145703,-717.569441115653,-456.803506625256,-214.408106861241,-499.917373766972,-296.435626017066,-634.825327219184,-321.648309935527,-455.322823338268,-600.580351635849,-607.688274017313,-730.755248583688,-584.104221259235,-497.20216995976,-564.876824860736,-329.677078837531,-221.260697821167,-322.377025662622,-686.837736072858,-743.373868036223,-243.540569263099,-386.601666727605,-790.793821788414,-827.460790019148,-154.036801789779,-205.614209064527,-486.410438145703,-717.569441115653,-456.803506625256,-214.408106861241,-499.917373766972,-296.435626017066,-634.825327219184,-321.648309935527,-455.322823338268,-600.580351635849,-607.688274017313,-730.755248583688,-584.104221259235,-497.20216995976,-564.876824860736,-329.677078837531,-221.260697821167,-322.377025662622,-686.837736072858,-743.373868036223,-243.540569263099,-386.601666727605,-790.793821788414,-827.460790019148,-154.036801789779,-205.614209064527,-486.410438145703,-717.569441115653,-456.803506625256,-214.408106861241,-499.917373766972,-296.435626017066,-634.825327219184,-321.648309935527,-455.322823338268,-600.580351635849,-607.688274017313,-730.755248583688,-584.104221259235,-497.20216995976,-564.876824860736,-329.677078837531,-221.260697821167,-322.377025662622,-686.837736072858,-743.373868036223,-243.540569263099,-386.601666727605],"Archive225_field27":[147.190997938464,151.429491539836,73.5854972625044,79.5475530652561,112.006004845632,138.726674763641,108.583611452865,80.564077783306,113.567330010141,90.0459938471199,129.161924411378,92.9604371354045,108.412452861348,125.203399425736,126.025034946385,140.250879334647,123.298852184819,113.253467847039,121.07627419328,93.8885172920156,81.3561984395242,93.0446725411538,135.174263929905,141.709520187393,83.9316252365197,100.468676851828,147.190997938464,151.429491539836,73.5854972625044,79.5475530652561,112.006004845632,138.726674763641,108.583611452865,80.564077783306,113.567330010141,90.0459938471199,129.161924411378,92.9604371354045,108.412452861348,125.203399425736,126.025034946385,140.250879334647,123.298852184819,113.253467847039,121.07627419328,93.8885172920156,81.3561984395242,93.0446725411538,135.174263929905,141.709520187393,83.9316252365197,100.468676851828,147.190997938464,151.429491539836,73.5854972625044,79.5475530652561,112.006004845632,138.726674763641,108.583611452865,80.564077783306,113.567330010141,90.0459938471199,129.161924411378,92.9604371354045,108.412452861348,125.203399425736,126.025034946385,140.250879334647,123.298852184819,113.253467847039,121.07627419328,93.8885172920156,81.3561984395242,93.0446725411538,135.174263929905,141.709520187393,83.9316252365197,100.468676851828],"Archive225_field28":[937.984819726879,978.890281558984,227.622299052283,285.161762129783,598.416442991334,856.296115879294,565.387118078121,294.972184644547,613.484703777113,386.481619864186,763.987251630562,414.608747070932,563.735276199616,725.783751061585,733.713308963698,871.006127918335,707.403073444054,610.455637806799,685.953099054017,423.565596129547,302.616896260691,415.421698203776,822.012000002763,885.083388223616,327.472194499619,487.070343579433,937.984819726879,978.890281558984,227.622299052283,285.161762129783,598.416442991334,856.296115879294,565.387118078121,294.972184644547,613.484703777113,386.481619864186,763.987251630562,414.608747070932,563.735276199616,725.783751061585,733.713308963698,871.006127918335,707.403073444054,610.455637806799,685.953099054017,423.565596129547,302.616896260691,415.421698203776,822.012000002763,885.083388223616,327.472194499619,487.070343579433,937.984819726879,978.890281558984,227.622299052283,285.161762129783,598.416442991334,856.296115879294,565.387118078121,294.972184644547,613.484703777113,386.481619864186,763.987251630562,414.608747070932,563.735276199616,725.783751061585,733.713308963698,871.006127918335,707.403073444054,610.455637806799,685.953099054017,423.565596129547,302.616896260691,415.421698203776,822.012000002763,885.083388223616,327.472194499619,487.070343579433],"Archive225_field29":[272.059120268967,272.316893899742,272.948731436931,272.879417602048,272.601222479932,271.94272805299,272.629048069353,272.900476167319,272.532884677709,272.760040046035,272.450205943087,272.73510727662,272.623799297156,272.477151279382,272.450788712404,272.041867410673,272.500572369726,272.582810949451,272.514833273595,272.785350710045,272.902062043388,272.746550611229,272.397713168595,271.841211784025,272.875025213655,272.724850145617,253.492563579457,244.961009372446,247.651077855289,247.661918214389,248.434807080246,258.615004249966,248.64157306465,248.484175674478,250.006555166711,246.87805462665,247.007298963141,246.747009006173,247.962605404972,247.725125835132,249.875751457087,254.853002864658,247.964777360772,247.602568519786,248.687220362241,249.290248991474,251.38685954403,247.334352633793,248.579908263538,259.416028121941,249.427616748566,248.860235445675,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive225_field30":[-9.3492834728635e-05,5.99973260310938,-0.539696923176589,-5.75063083067092e-05,-8.35186498281422e-05,-0.000207924952742081,-1.39308219835857e-05,0.381231506521582,-0.000118536106311781,-0.000125016239341756,1.54291224941353,-0.000138052447411829,-3.14381366559474e-05,0.638901495859911,-0.000181764715131789,-0.00021804112851568,1.37583017909542,-0.000128034993096259,-2.90099734837476e-05,0.460299528926619,1.76208593273031,-2.30783397470311e-05,-9.34920758055392e-05,-9.3489367380911e-05,1.07064754906713,0.827566755182321,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive226.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive226.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive226.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive226_field1":[0,0,0,0,385.990591313329,0,0,282.091237885843,0,100.812802283927,680.058684338846,373.843329451243,37.2913341522598,0,934.228442915376,455.685956357883,282.739056710937,294.348035239591,261.760915020441,-574.298337387655,436.534670167037,528.482164628682,238.972331832557,137.479614372577,351.852564185544,0,-288.299265085186,137.460129446809,0,193.03481309011,0,548.695629615636,0,0,-79.3836821929079,-80.8703382118501,0,0,259.473468361195,564.492465579917,365.48840275338,-408.557500507936,520.951736451642,-146.153912485039],"Archive226_field2":[0,0,0,0,5965.3427606593,0,0,7916.94414451567,0,6208.22142682195,3109.76404218389,5849.21762099958,4618.54358869214,0,7268.97621225413,7471.15625159065,3531.66365186689,7414.77993432182,6960.53513478037,7235.53301657509,6473.69250200482,4515.5462302479,6074.3705911671,5129.87028135796,4414.54691631822,0,2821.14762921867,7163.168065596,0,4530.6668559153,0,5069.88644814174,0,0,2331.67427348505,2966.15734905871,0,0,3337.04243932143,2529.97221952273,2276.62403995689,1044.65819816934,962.171930332714,2769.926621101],"Archive226_field3":[0,0,0,0,5977.81757740505,0,0,7921.96819318741,0,6209.03990207468,3183.25497128404,5861.152242758,4618.69413625238,0,7328.76510456355,7485.04010854343,3542.96338170571,7420.62007114438,6965.455343274,7258.28882135965,6488.39403310028,4546.36680832472,6079.06948917491,5131.71216534283,4428.54656781416,0,2835.84033614285,7164.4868639116,0,4534.77723800786,0,5099.49168947363,0,0,2333.02522203052,2967.25958267515,0,0,3347.11498497074,2592.18270483646,2305.77509567973,1121.70851036431,1094.15059988658,2773.77981325459],"Archive226_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive226_field5":[-879.114579447051,-818.538288293624,-221.944546741388,-282.447254338578,-552.536937736727,-784.173097075141,-516.189731537613,-279.050581903951,-574.895568042151,-387.555689750782,-696.275943326941,-421.789767137037,-533.30106205359,-366.008359300187,-262.02757035365,-318.046273431773,-297.190071243045,-373.145896987663,-430.471413462203,-289.942705812935,-478.795012854013,-537.553255635084,-504.29991519088,-591.785613191537,-665.615044280844,-668.672661416294,-648.026697867442,-332.102476390758,-419.473669403312,-342.849891952244,-717.658936456956,-602.425683114513,-819.224807345993,-593.901015114727,-559.634595547969,-468.639454241817,-789.177514118623,-495.748084587223,-454.839580206333,-631.001103594072,-739.111971611016,-733.139858328869,-782.730209867392,-712.32352453292],"Archive226_field6":[101.620660219615,94.6183844701463,25.6555310300842,32.64930093772,63.8701367503742,90.645963238784,59.6686058265943,32.2566648656694,66.4546676253741,44.7992400366225,80.4855507008241,48.756505252482,61.6465786016146,42.308490824231,30.288901262254,36.7643456747742,34.3534869702974,43.1335497063165,49.7600543369613,33.5157326239598,55.3459883997005,62.138108066869,58.29421048008,68.4070610668517,76.9413246387889,77.2947678409239,74.9082115310238,38.3891630288117,48.4887774882781,39.631503322724,82.9573034508586,69.6369928136733,94.6977421795804,68.6515895334363,64.6905857449125,54.1720634129037,91.2244454706369,57.3056673568655,52.5768762288672,72.9401493794674,85.4371526616879,84.7468102321266,90.4791736596986,82.3405600877749],"Archive226_field7":[980.735239666666,913.15667276377,247.600077771473,315.096555276298,616.407074487102,874.819060313925,575.858337364208,311.307246769621,641.350235667525,432.354929787404,776.761494027765,470.546272389519,594.947640655205,408.316850124418,292.316471615904,354.810619106547,331.543558213342,416.279446693979,480.231467799164,323.458438436895,534.141001253713,599.691363701953,562.59412567096,660.192674258389,742.556368919633,745.967429257218,722.934909398465,370.49163941957,467.96244689159,382.481395274968,800.616239907814,672.062675928187,913.922549525573,662.552604648163,624.325181292881,522.811517654721,880.40195958926,553.053751944089,507.4164564352,703.941252973539,824.549124272704,817.886668560995,873.209383527091,794.664084620696],"Archive226_field8":[0,0,0,0,317.793555510354,0,0,251.621249719872,0,60.1666859316774,615.083658948419,327.001700511154,-2.25284593532608,0,874.873480521566,412.54683002855,229.320500818108,251.893199979834,215.807405052861,-570.783312700141,378.529947135432,463.181079828913,179.607624626372,76.9040642198969,291.34830923912,0,-310.052348814492,101.814848219975,0,186.564909793018,0,477.145146976104,0,0,-102.553530296415,-101.053091419153,0,0,225.954632148852,501.394441310405,306.483250744009,-377.736584026526,468.789967931025,-171.54201807715],"Archive226_field9":[0,0,0,0,5097.67895375004,0,0,7208.71253557612,0,5409.58902768544,2504.39597180845,5127.30288133299,3894.3618993125,0,6574.84201970918,6704.89295283994,3099.06595964656,6637.18827077439,6143.79674410002,6567.55179955989,5652.58020258896,3829.14192281366,5231.58635436309,4286.623200542,3564.55944046729,0,2283.4192845174,6418.69932905148,0,3987.51517411298,0,4247.50127303973,0,0,1928.50020812974,2514.68977005371,0,0,2881.40453784197,2074.79991642844,1721.85204971292,843.087876375595,790.396255216251,2112.29357637199],"Archive226_field10":[0,0,0,0,5107.57510560834,0,0,7213.10263852407,0,5409.92361115669,2578.82281111281,5137.71982002355,3894.36255093586,0,6632.79361891002,6717.57280541189,3107.53885162125,6641.966450224,6147.58580817622,6592.30841435376,5665.24031860776,3857.05387281026,5234.6685360185,4287.31299283344,3576.44625877713,0,2304.37325273302,6419.50678324153,0,3991.87721872146,0,4274.21742027204,0,0,1931.22507215827,2516.71936594014,0,0,2890.25044009785,2134.52361874692,1748.91579674014,923.840946377426,918.961519484164,2119.24770065898],"Archive226_field11":[8822468.64693621,8214547.40214814,2227353.35161428,2834536.13905786,5545056.26845883,7869671.0582002,5180289.15551082,2800448.39127275,5769439.20951085,3889365.50673364,6987567.74513015,4232926.04077347,5352012.13737687,3673124.47084373,2629611.7458682,3191794.72304011,2982489.59466884,3744754.1581863,4320051.83108369,2909757.71673746,4805009.59484812,5394685.57884912,5060967.35788706,5938941.45331339,6679866.30683616,6710551.42108921,6503356.16991943,3332857.57514138,4209682.54087396,3440714.6611727,7202159.55247552,6045721.2582345,8221437.05334567,5960170.84431581,5616285.73611907,4703092.16617281,7919893.53601427,4975144.35012607,4564601.73630608,6332493.60526177,7417454.27565867,7357520.35644094,7855190.7760515,7148615.33250832],"Archive226_field12":[-856.044863705827,-798.689967596271,-239.03889586324,-297.471540688502,-546.994145945967,-708.402041426774,-510.815916617851,-310.514445791981,-563.56818215733,-394.813793349279,-663.342469498173,-428.761489659057,-526.999866339348,-367.998130322731,-293.762304392213,-333.458560569056,-306.735931220539,-387.291512443833,-438.134774950048,-313.550375075129,-483.562725914833,-529.486925358551,-504.098700551802,-580.267925323648,-637.035974464333,-657.415487047201,-627.537933346917,-344.055529759061,-410.986892271981,-349.917118606808,-692.20344526659,-589.265106695236,-756.726336450841,-587.238013084803,-548.440137499993,-465.837592639607,-729.17230047559,-486.404958763702,-449.953252951126,-609.16071562514,-686.114895086655,-703.8209629908,-751.09016506904,-668.338753021249],"Archive226_field13":[98.9539319005645,92.324031150714,27.6315408522393,34.3860232420733,63.2294214506789,81.8872588781222,59.0474232949752,35.8937091100873,65.1452860509018,45.6382356543332,76.6786278809229,49.5623968417231,60.9181961090195,42.5384970711117,33.9572565600596,38.5459186699236,35.4569342523197,44.7687026380004,50.6458954685987,36.2446453194806,55.8971089934268,61.2056860283603,58.2709512088233,67.0756816622756,73.6377462303373,75.9935023195238,72.5398265373753,39.7708682164236,47.5077541775682,40.4484346481152,80.0147930188207,68.1157048088277,87.4732733520056,67.8813842824309,63.3965698745903,53.8481841001073,84.2881830429798,56.225654993405,52.0120445068913,70.4155243797872,79.3109911441499,81.3577121886857,86.8217639011104,77.2561699239394],"Archive226_field14":[954.998795606391,891.013998746985,266.67043671548,331.857563930575,610.223567396646,790.289300304896,569.863339912826,346.408154902069,628.713468208232,440.452029003612,740.021097379095,478.32388650078,587.918062448367,410.536627393842,327.719560952273,372.00447923898,342.192865472859,432.060215081834,488.780670418646,349.79502039461,539.45983490826,590.692611386911,562.369651760625,647.343606985923,710.67372069467,733.408989366725,700.077759884292,383.826397975484,458.494646449549,390.365553254923,772.218238285411,657.380811504063,844.199609802846,655.119397367234,611.836707374584,519.685776739714,813.460483518569,542.630613757107,501.965297458017,679.576240004928,765.425886230805,785.178675179485,837.91192897015,745.594922945189],"Archive226_field15":[0,0,0,0,248.981719945228,0,0,211.657853148985,0,19.2654880607992,544.348065666557,279.227145928059,-42.5700189801425,0,818.189499408012,367.520589471559,171.806487311028,208.110133497575,168.365990094633,-579.11870022422,320.712128188454,399.906280112121,117.920908804061,18.0434466106218,234.286116259854,0,-319.840155632181,63.4071329892696,0,171.951727119755,0,406.813386880195,0,0,-121.017789572341,-119.839687913683,0,0,194.56983444806,435.58733248462,249.832315978637,-343.300047886576,412.776735285517,-184.988199102284],"Archive226_field16":[0,0,0,0,4241.19862996308,0,0,6520.37188660368,0,4611.09960057124,1960.69643661079,4401.97753628681,3193.39394431049,0,5883.45474512622,5945.84388756487,2669.1362665377,5856.82014747606,5321.36089392445,5885.05829131262,4831.63858160886,3157.1408017806,4394.83149204693,3479.637804461,2788.25737792301,0,1800.08759654149,5672.67309717164,0,3446.23276693033,0,3455.6475815337,0,0,1551.93934318762,2076.02545668493,0,0,2422.88584000438,1653.01002431939,1261.22246158094,665.431754571644,634.565410491044,1559.1406649418],"Archive226_field17":[0,0,0,0,4248.5006432467,0,0,6523.80629589899,0,4611.13984665597,2034.8575707241,4410.82464273936,3193.67767473095,0,5940.07355130303,5957.19152948586,2674.65995566333,5860.51636526559,5324.02374806959,5913.48370768846,4842.2709189448,3182.36752672299,4396.41321809275,3479.68458573471,2798.08312775268,0,1828.28145545956,5673.02745735368,0,3450.51991449459,0,3479.51107765223,0,0,1556.65058067847,2079.48148527539,0,0,2430.68574977739,1709.43805524548,1285.72869754997,748.768550936284,757.005874075385,1570.07650988169],"Archive226_field18":[8590949.51555211,8015356.99950817,2398905.91449201,2985314.31787975,5489430.86087973,7109260.77900378,5126359.5372876,3116208.08762338,5655761.75590357,3962205.14894982,6657059.58716995,4302891.66846712,5288775.66863115,3693093.07661071,2948089.79482763,3346466.73420364,3078288.31343478,3886714.32102671,4396958.49153195,3146675.55061522,4852856.59907268,5313734.87273604,5058948.04221868,5823354.19941576,6393057.33641349,6597578.5842755,6297738.51003432,3452813.99611592,4124512.38569146,3511638.73300404,6946697.66142075,5913646.58270391,7594225.52387615,5893303.42125424,5503942.29709906,4674973.71982182,7317703.41382184,4881380.19631777,4515564.36391391,6113311.55254913,6885595.22457849,7063286.77081936,7537662.99327181,6707200.43998264],"Archive226_field19":[-849.461816749984,-793.090858161538,-243.467847692504,-301.335792853092,-544.139859481643,-691.912195865785,-509.027093472594,-317.606522774274,-560.277785223375,-395.878432137344,-654.901830785559,-429.602666556867,-524.587238163401,-368.261227952344,-300.905361616751,-337.032248666651,-309.179621290623,-390.132599784455,-439.010876710819,-318.400338357351,-483.551385647874,-526.528943412427,-502.927332571646,-575.979400606441,-628.685692599731,-653.992743098661,-621.575556072865,-346.861201049919,-408.621355280789,-351.461152986191,-685.434564307844,-584.695045146713,-742.152353243043,-585.026537369778,-544.937233860212,-464.469015015611,-715.437047235344,-483.999694578103,-448.086962304144,-602.993953260979,-673.652232915234,-696.445126282847,-743.13128488089,-657.51889818929],"Archive226_field20":[98.1929690027245,91.676805850734,28.1435025685992,34.8327088794196,62.899482121106,79.9811262396654,58.8406454832007,36.7135129924461,64.7649348240761,45.7613018610234,75.7029379097811,49.6596321210773,60.6393099730867,42.5689096651564,34.78295346933,38.9590167488168,35.7394109670732,45.0971162237211,50.7471678640641,36.8052735723874,55.8957981228731,60.8637600891137,58.135547712753,66.5799525237544,72.6725009984422,75.5978525283076,71.8506095351403,40.0951879076242,47.2343115155547,40.6269162666699,79.2323487640474,67.5874316091075,85.7886035373637,67.6257502303124,62.9916540776254,53.6899842875188,82.7004656564302,55.9476200929977,51.7963118912097,69.702681620135,77.8703780687184,80.505107291147,85.9017624835053,76.0054560611393],"Archive226_field21":[947.654785752708,884.767664012272,271.611350261103,336.168501732512,607.039341602749,771.89332210545,567.867738955795,354.32003576672,625.042720047451,441.639733998367,730.60476869534,479.262298677944,585.226548136488,410.8301376175,335.688315086081,375.991265415468,344.919032257697,435.229716008177,489.758044574883,355.205611929739,539.447183770747,587.392703501541,561.062880284399,642.559353130195,701.358193598173,729.590595626969,693.426165608005,386.956388957543,455.855666796344,392.088069252861,764.666913071891,652.282476755821,827.940956780406,652.65228760009,607.928887937838,518.158999303129,798.137512891775,539.9473146711,499.883274195354,672.696634881114,751.522610983952,776.950233573994,829.033047364395,733.524354250429]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive227.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive227.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive227.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive227_field1":[0,0,0,0,495.971343896129,0,0,256.184874064636,0,131.379961662949,1186.92121875352,539.441438636423,177.303198280653,62.4375161012123,0,0,628.247380396124,502.858807477272,-202.13680713971,0,721.376332761675,367.970340069402,0,0,-306.230849243509,0,0,0,0,0,495.971271443794,0,0,256.184952609781,0,131.378100930343,1186.92482217896,539.443430305225,177.301385482492,62.4373177951321,0,0,628.247193291439,502.860886379687,-202.14067408431,0,721.375860710555,367.970340462964,0,0,-306.230241983262,0,0,0,0,0,495.971234361907,0,0,256.184975630554,0,131.377646036034,1186.92546640189,539.443843379458,177.300922218883,62.4371466429084,0,0,628.247056026271,502.861307757016,-202.141684455092,0,721.375749913682,367.970330361595,0,0,-306.230116112874,0],"Archive227_field2":[0,0,0,0,6728.17020385335,0,0,8943.56951762693,0,7019.3936849329,3383.95064508897,6828.86021405696,5352.14522786417,4041.17394451372,0,0,5114.34666635049,5547.30103696247,2841.59668208668,0,7734.82667525163,7815.04376851322,0,0,7590.87480856555,0,0,0,0,0,6728.17207989141,0,0,8943.57104313553,0,7019.39379877759,3383.95766904832,6828.86093239187,5352.14787405451,4041.18226989354,0,0,5114.35365314618,5547.30443726551,2841.60073808546,0,7734.82889929032,7815.04519615317,0,0,7590.87827232077,0,0,0,0,0,6728.17232241061,0,0,8943.57148434958,0,7019.39342231807,3383.95748673985,6828.86061296122,5352.14806650411,4041.18284555722,0,0,5114.35429829528,5547.30472554539,2841.60040482814,0,7734.82964432874,7815.04543033113,0,0,7590.87942789905,0],"Archive227_field3":[0,0,0,0,4.25283329501168,0,0,5.62788147855693,0,4.41269139844178,2.19779943888333,4.31874233246074,3.36942543629682,2.53962757470753,0,0,3.24851071439312,3.51230707093386,1.7703296912862,0,4.898623238702,4.92678141621356,0,0,4.74381902934944,0,0,0,0,0,3.41493166956156,0,0,4.96591525960099,0,3.65009248738915,-4.90614915190175,2.905564501682,1.84027728114043,-4.18133069555428,0,0,-1.4145576338415,1.18592202748897,-2.54805765372939,0,4.75077993286575,4.25831334253369,0,0,4.46191055283716,0,0,0,0,0,2.57703395409939,0,0,4.30394864636151,0,2.88749266436448,-12.0101045311461,1.49238520978551,0.311132426904044,-10.9022927915902,0,0,-6.07762621256271,-1.14046005167275,-6.86644943944543,0,4.6029340485708,3.58984584218591,0,0,4.17999794518725,0],"Archive227_field4":[0,0,0,0,6746.42719908673,0,0,8947.23969050651,0,7020.62446440826,3586.07149653318,6850.13485563486,5355.08228856453,4041.6570540982,0,0,5152.79022932302,5570.0474065526,2848.77765480457,0,7768.39439692414,7823.7034419847,0,0,7597.05075645559,0,0,0,0,0,6746.42858855603,0,0,8947.24082574457,0,7020.62410551202,3586.08199985931,6850.1349833965,5355.0841294662,4041.66674042798,0,0,5152.79631135382,5570.0499995213,2848.7825644308,0,7768.39647569707,7823.70447566942,0,0,7597.05402211558,0,0,0,0,0,6746.42845559564,0,0,8947.24092451879,0,7020.62336554056,3586.09879638959,6850.13424383981,5355.08399930447,4041.67985477511,0,0,5152.80032501139,5570.05031517189,2848.78943929552,0,7768.39711821892,7823.70437383463,0,0,7597.05501133816,0],"Archive227_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4272990.75,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2136495.375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive227_field6":[-828.211925671022,-885.584156272917,-222.066068099259,-275.93806403039,-552.910716286749,-748.685495894948,-515.407222863688,-294.608441634146,-555.895647544772,-389.548920412005,-680.747013441151,-415.98599579997,-521.395930054943,-649.479190557953,-655.294222504526,-766.902567588936,-635.701634205831,-563.660207055112,-616.25130088239,-374.127684818467,-292.200491536094,-416.536260021222,-730.861585011401,-773.801551217892,-318.602018943997,-426.136393962966,-828.211925671022,-885.584156272917,-222.066068099259,-275.93806403039,-552.910716286749,-748.685495894948,-515.407222863688,-294.608441634146,-555.895647544772,-389.548920412006,-680.747013441152,-415.98599579997,-521.395930054943,-649.479190557953,-655.294222504526,-766.902567588936,-635.701634205831,-563.660207055112,-616.25130088239,-374.127684818467,-292.200491536094,-416.536260021222,-730.861585011401,-773.801551217892,-318.602018943997,-426.136393962966,-828.211925671022,-885.584156272917,-222.066068099259,-275.93806403039,-552.910716286749,-748.685495894948,-515.407222863688,-294.608441634146,-555.895647544772,-389.548920412005,-680.747013441151,-415.98599579997,-521.395930054943,-649.479190557953,-655.294222504526,-766.902567588936,-635.701634205831,-563.660207055112,-616.25130088239,-374.127684818467,-292.200491536094,-416.536260021222,-730.861585011401,-773.801551217892,-318.602018943997,-426.136393962966],"Archive227_field7":[95.7366020950146,102.368506613881,25.6695782099471,31.8968754495325,63.9133434311836,86.5437977806592,59.5781522612333,34.0550652270659,64.2583845580652,45.0296461981162,78.6904944653894,48.0856221971612,60.2704128525888,75.0761114494471,75.7482961673716,88.6495879655695,73.4835040630514,65.1559236072431,71.2351558271902,43.2470388121674,33.77671985041,48.1492296207738,84.4834547559525,89.4470713512504,36.8285867045406,49.2589506652938,95.7366020950146,102.368506613881,25.6695782099471,31.8968754495325,63.9133434311836,86.5437977806592,59.5781522612333,34.0550652270659,64.2583845580652,45.0296461981162,78.6904944653894,48.0856221971612,60.2704128525888,75.0761114494471,75.7482961673716,88.6495879655695,73.4835040630514,65.1559236072431,71.2351558271902,43.2470388121674,33.77671985041,48.1492296207738,84.4834547559525,89.4470713512504,36.8285867045406,49.2589506652938,95.7366020950146,102.368506613881,25.6695782099471,31.8968754495325,63.9133434311836,86.5437977806592,59.5781522612333,34.0550652270659,64.2583845580652,45.0296461981162,78.6904944653894,48.0856221971612,60.2704128525888,75.0761114494471,75.7482961673716,88.6495879655695,73.4835040630514,65.1559236072431,71.2351558271902,43.2470388121674,33.77671985041,48.1492296207738,84.4834547559525,89.4470713512504,36.8285867045406,49.2589506652938],"Archive227_field8":[923.948527766037,987.952662886799,247.735646309206,307.834939479922,616.824059717932,835.229293675607,574.985375124921,328.663506861212,620.154032102837,434.578566610122,759.437507906541,464.071617997131,581.666342907532,724.5553020074,731.042518671897,855.552155554506,709.185138268883,628.816130662356,687.48645670958,417.374723630635,325.977211386504,464.685489641996,815.345039767353,863.248622569142,355.430605648538,475.39534462826,923.948527766037,987.952662886799,247.735646309206,307.834939479922,616.824059717932,835.229293675607,574.985375124921,328.663506861212,620.154032102837,434.578566610122,759.437507906541,464.071617997131,581.666342907532,724.5553020074,731.042518671897,855.552155554506,709.185138268883,628.816130662356,687.48645670958,417.374723630635,325.977211386504,464.685489641996,815.345039767353,863.248622569142,355.430605648538,475.39534462826,923.948527766037,987.952662886799,247.735646309206,307.834939479922,616.824059717932,835.229293675607,574.985375124921,328.663506861212,620.154032102837,434.578566610122,759.437507906541,464.071617997131,581.666342907532,724.5553020074,731.042518671897,855.552155554506,709.185138268883,628.816130662356,687.48645670958,417.374723630635,325.977211386504,464.685489641996,815.345039767353,863.248622569142,355.430605648538,475.39534462826],"Archive227_field9":[272.21877896331,272.281749352027,272.925369881014,272.870898410394,272.566117469812,272.253576890323,272.607739757796,272.873618398582,272.542803101868,272.749598937616,272.393645899428,272.714805372171,272.585143582637,272.417958115611,272.445982240641,272.268462676797,272.442558631274,272.535976481889,272.469888877049,272.768228205752,272.883319848175,272.726950277844,272.380261853598,272.235594178922,272.847845742772,272.705516993572,248.385234687994,248.050048501146,247.025751064128,248.490722996491,247.664789337264,248.695428522542,248.079435316131,246.444581317761,248.24559400786,248.70846684576,248.137825229534,248.085219511288,247.99380432227,248.258515661397,248.348951137405,248.523839563833,247.81087414404,248.15128623678,248.001648085813,247.901513674684,245.567402487736,247.749834234646,248.20008556277,248.45493334435,244.962799761657,248.560975362042,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive227_field10":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive227_field11":[0,0,0,0,423.302713666546,0,0,188.221129126777,0,73.2257614478779,1193.60207937189,451.257381955486,127.006741224935,-2.99523200345249,0,0,594.481493418301,428.199684059907,-285.185637955816,0,775.957854953827,292.913325182583,0,0,-488.69263347933,0,0,0,0,0,423.302707625441,0,0,188.2212841587,0,73.2239219939915,1193.60491471335,451.259206746137,127.005614537394,-2.99547184579801,0,0,594.48113434107,428.200888037512,-285.188309931253,0,775.957305526384,292.913365844174,0,0,-488.691959958022,0,0,0,0,0,423.302671152939,0,0,188.221316730817,0,73.2234238165238,1193.60514400617,451.259631840117,127.005289560059,-2.99558691704119,0,0,594.48100489037,428.201208716716,-285.188806524793,0,775.957125000417,292.913369290773,0,0,-488.691767956311,0],"Archive227_field12":[0,0,0,0,6043.00201505021,0,0,8901.75281259177,0,6366.94180087373,3051.64169517533,6129.63481907412,4762.40296570054,3619.97625589541,0,0,4554.96284776191,4908.11146024508,2556.98106961222,0,7671.19331088518,7267.31600179151,0,0,7464.35071760578,0,0,0,0,0,6043.0037736002,0,0,8901.75573384688,0,6366.94146262844,3051.64507490382,6129.63490821487,4762.4052134937,3619.97995227628,0,0,4554.96593245523,4908.11422412737,2556.98370105258,0,7671.19790529476,7267.31774220945,0,0,7464.35694239467,0,0,0,0,0,6043.00404416263,0,0,8901.75653073206,0,6366.94098249195,3051.64444165711,6129.6344786135,4762.40547321436,3619.97982438804,0,0,4554.96605633585,4908.11453398218,2556.98324970096,0,7671.19934718865,7267.318031312,0,0,7464.35895501198,0],"Archive227_field13":[0,0,0,0,3.07618584857798,0,0,3.65627138862675,0,3.32245149570686,1.61199452922439,3.12204833570459,2.43615985036362,1.49388478049348,0,0,1.79269367014262,2.61654012673047,1.3543586596053,0,2.63636220777141,4.00881837397333,0,0,2.50762577281735,0,0,0,0,0,2.13609524341188,0,0,2.22188689878114,0,2.35320388182967,-4.28064874907036,1.63374664315117,1.06544680678583,-3.83583356838464,0,0,-1.77963304229061,0.656234938143828,-2.41301397862821,0,1.78836940393757,2.94946868582078,0,0,1.47080209500868,0,0,0,0,0,1.19600671427719,0,0,0.787500393645173,0,1.38395579707689,-10.1732950533919,0.145443981024931,-0.305264889835866,-9.16555333279049,0,0,-5.35195974936009,-1.30406944242085,-6.18038953843273,0,0.940371327824094,1.8901196378657,0,0,0.433970880156701,0],"Archive227_field14":[0,0,0,0,6057.81049589847,0,0,8903.74324080921,0,6367.3637360007,3276.76754716287,6146.22371763027,4764.09683517292,3619.97780329563,0,0,4593.59314744555,4926.75551675749,2572.83595915847,0,7710.33879644985,7273.21773059141,0,0,7480.33143741812,0,0,0,0,0,6057.8118452897,0,0,8903.7456912059,0,6367.36294464654,3276.77412702895,6146.2233647019,4764.09854839433,3619.9832239049,0,0,4593.59615464932,4926.75772372073,2572.83964564573,0,7710.34306892136,7273.21896449488,0,0,7480.33732918923,0,0,0,0,0,6057.81185409412,0,0,8903.74624619657,0,6367.36217437524,3276.78661710325,6146.22275205592,4764.09869000055,3619.99266710381,0,0,4593.59903376649,4926.75818915752,2572.8455437187,0,7710.34433527094,7273.21890105709,0,0,7480.33919295552,0],"Archive227_field15":[8311628.44762188,8887394.92621718,2228572.89499897,2769212.3135253,5548807.37168878,7513530.62316822,5172436.18798751,2956581.31511688,5578763.03736974,3909368.83215433,6831725.15050042,4174681.53903005,5232536.63753729,6517932.84913911,6576290.35819309,7696350.41437256,6379666.39128507,5656685.2837285,6184470.04267434,3754607.01759476,2932416.01887437,4180203.78715678,7334656.44838796,7765586.06144881,3197371.97937495,4276547.17934656,4155814.22381094,4443697.46310859,1114286.44749948,1384606.15676265,2774403.68584439,3756765.31158411,2586218.09399376,1478290.65755844,2789381.51868487,1954684.41607717,3415862.57525021,2087340.76951503,2616268.31876864,3258966.42456955,3288145.17909655,3848175.20718628,3189833.19564254,2828342.64186425,3092235.02133717,1877303.50879738,1466208.00943719,2090101.89357839,3667328.22419398,3882793.03072441,1598685.98968747,2138273.58967328,-3.83512741564118e-10,-1.27837580521373e-10,-1.27837580521373e-10,-3.19593951303432e-11,-3.19593951303432e-10,-1.27837580521373e-10,1.91756370782059e-10,-6.39187902606864e-11,-2.55675161042745e-10,1.91756370782059e-10,0,1.91756370782059e-10,0,-2.55675161042745e-10,0,3.83512741564118e-10,-2.55675161042745e-10,-3.83512741564118e-10,-1.27837580521373e-10,1.27837580521373e-10,-1.91756370782059e-10,1.91756370782059e-10,2.55675161042745e-10,3.83512741564118e-10,1.27837580521373e-10,1.27837580521373e-10],"Archive227_field16":[-772.919272697696,-928.207479795954,-236.915282200771,-283.27535789059,-546.024471039355,-664.344530952413,-509.795279336313,-324.254527022225,-536.051414403228,-394.546215803748,-645.110039418376,-416.758515942902,-507.002637681476,-609.144825469525,-634.61938600394,-702.33075704345,-604.121820451918,-545.302584977748,-588.358891492345,-382.9281909814,-323.575649006474,-426.338928364273,-714.624030398409,-693.579835004528,-345.929364915305,-425.935305396065,-772.919272697696,-928.207479795954,-236.915282200771,-283.27535789059,-546.024471039355,-664.344530952413,-509.795279336313,-324.254527022225,-536.051414403228,-394.546215803748,-645.110039418376,-416.758515942902,-507.002637681476,-609.144825469525,-634.61938600394,-702.33075704345,-604.121820451918,-545.302584977748,-588.358891492345,-382.9281909814,-323.575649006474,-426.338928364273,-714.624030398409,-693.579835004528,-345.929364915305,-425.935305396065,-772.919272697696,-928.207479795954,-236.915282200771,-283.27535789059,-546.024471039355,-664.344530952413,-509.795279336313,-324.254527022225,-536.051414403228,-394.546215803748,-645.110039418376,-416.758515942902,-507.002637681476,-609.144825469525,-634.61938600394,-702.33075704345,-604.121820451918,-545.302584977748,-588.358891492345,-382.9281909814,-323.575649006474,-426.338928364273,-714.624030398409,-693.579835004528,-345.929364915305,-425.935305396065],"Archive227_field17":[89.3450849574218,107.295521110546,27.38606315516,32.7450250124346,63.1173325301763,76.7944605026781,58.9294434129217,37.4819845849028,61.9645037369053,45.6073052074126,74.5710623537055,48.174921144981,58.6066298737584,70.4136875679058,73.35840230798,81.1854528316311,69.8330566716503,63.0338865950286,68.0109514702166,44.2643274198783,37.4035101359719,49.2823624935801,82.6064855204268,80.1738958674809,39.9874729345936,49.235705967266,89.3450849574218,107.295521110546,27.38606315516,32.7450250124346,63.1173325301763,76.7944605026781,58.9294434129217,37.4819845849028,61.9645037369053,45.6073052074126,74.5710623537055,48.174921144981,58.6066298737585,70.4136875679058,73.35840230798,81.1854528316311,69.8330566716503,63.0338865950286,68.0109514702166,44.2643274198783,37.4035101359719,49.2823624935801,82.6064855204268,80.1738958674809,39.9874729345936,49.235705967266,89.3450849574218,107.295521110546,27.38606315516,32.7450250124346,63.1173325301763,76.7944605026781,58.9294434129217,37.4819845849028,61.9645037369053,45.6073052074126,74.5710623537055,48.174921144981,58.6066298737584,70.4136875679058,73.35840230798,81.1854528316311,69.8330566716503,63.0338865950286,68.0109514702166,44.2643274198783,37.4035101359719,49.2823624935801,82.6064855204268,80.1738958674809,39.9874729345936,49.235705967266],"Archive227_field18":[862.264357655118,1035.5030009065,264.301345355931,316.020382903024,609.141803569531,741.138991455091,568.724722749235,361.736511607128,598.015918140133,440.153521011161,719.681101772082,464.933437087883,565.609267555235,679.55851303743,707.97778831192,783.516209875081,673.954877123569,608.336471572776,656.369842962562,427.192518401278,360.979159142446,475.621290857853,797.230515918836,773.753730872009,385.916837849899,475.171011363331,862.264357655118,1035.5030009065,264.301345355931,316.020382903024,609.141803569531,741.138991455091,568.724722749235,361.736511607128,598.015918140133,440.153521011161,719.681101772082,464.933437087883,565.609267555235,679.558513037431,707.97778831192,783.516209875081,673.954877123569,608.336471572776,656.369842962562,427.192518401278,360.979159142446,475.621290857853,797.230515918836,773.753730872009,385.916837849899,475.171011363331,862.264357655118,1035.5030009065,264.301345355931,316.020382903024,609.141803569531,741.138991455091,568.724722749235,361.736511607128,598.015918140133,440.153521011161,719.681101772082,464.933437087883,565.609267555235,679.55851303743,707.97778831192,783.516209875081,673.954877123569,608.336471572776,656.369842962562,427.192518401278,360.979159142446,475.621290857853,797.230515918836,773.753730872009,385.916837849899,475.171011363331],"Archive227_field19":[272.181283522511,272.330128544787,272.941830630189,272.884080683025,272.605325538937,272.162849081202,272.636735321805,272.916380862718,272.564718701702,272.774337866053,272.438126186062,272.743580898927,272.618802669996,272.461264732373,272.471038729312,272.207670547193,272.488264043565,272.572399570169,272.511402244264,272.791193389758,272.931808705361,272.76105423524,272.410638459332,272.112673476437,272.900953424503,272.731247166448,255.899283717451,244.304167673373,253.656455217226,250.691184940242,248.112597697444,261.115069534259,248.335477579837,255.23614143286,249.900056881107,248.509142974824,247.650825375508,247.311720192924,247.760549171145,248.54191235421,250.684327686076,257.331257280596,249.032599338249,247.650497050728,249.232167864548,249.722607533431,258.795655879328,249.848707701469,249.2196173876,261.754835238248,256.521495078945,248.903366018094,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive227_field20":[-3.66836920183322e-05,2.09281082208651,-1.10425918221135e-05,-1.5975027779044e-05,-3.95470860484446e-05,-8.96152337320312e-05,-2.39515406124608e-06,0.0745487542104985,-3.94010781532325e-05,-2.65915585203313e-05,0.605390968535421,-3.64484361343945e-05,-2.06941436234853e-05,0.375771103286219,-6.62019589484541e-05,-8.77416513809562e-05,0.55614341292027,-5.08559685115702e-05,0.0527972649457155,2.01856935292759e-09,0.364502881595506,-4.51079539080195e-06,-3.66836096321861e-05,-3.6682088175527e-05,0.437291044021618,0.0900216696702176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive227_field21":[0,0,0,0,333.775550271427,0,0,140.190658997004,0,-24.5279026129977,1040.39553480139,409.840090814766,71.7957732076199,-37.3852527575478,0,0,500.816166210997,339.841611856124,-293.480478208568,0,773.01977128894,221.021241821361,0,0,-565.651917831968,0,0,0,0,0,333.775564824857,0,0,140.190832329273,0,-24.5294512861356,1040.39750889791,409.841566162152,71.7950979951512,-37.3854140837422,0,0,500.815790794876,339.842325110589,-293.48219979581,0,773.019313672807,221.021281962274,0,0,-565.651360632581,0,0,0,0,0,333.775526539695,0,0,140.190866369601,0,-24.5298899066945,1040.39750599303,409.841929588051,71.7948825489586,-37.3854744412405,0,0,500.815675945923,339.842564330826,-293.482401271691,0,773.019122512596,221.021287376938,0,0,-565.651163486531,0],"Archive227_field22":[0,0,0,0,4951.8145356391,0,0,8230.54483109892,0,5336.50357780804,2391.4275292669,5139.24615049214,3868.10263901356,2830.38252530056,0,0,3627.90265788063,3968.86390119499,2036.16471157277,0,6873.01778323573,6296.75088594341,0,0,6676.72977003698,0,0,0,0,0,4951.8160817724,0,0,8230.5485032013,0,5336.50296661712,2391.42918605832,5139.24582401836,3868.10448303817,2830.38405691842,0,0,3627.90381941813,3968.8661760997,2036.16643835206,0,6873.02370558326,6296.75266037673,0,0,6676.73716571202,0,0,0,0,0,4951.81633853979,0,0,8230.54953835549,0,5336.50243960669,2391.4286358444,5139.2453281223,3868.10472894983,2830.38379678651,0,0,3627.9037415705,3968.8664558399,2036.16608135856,0,6873.02563800574,6296.75293624891,0,0,6676.73966552276,0],"Archive227_field23":[0,0,0,0,2.06919179072977,0,0,2.56827845579285,0,2.41321094852778,1.05111975828723,2.24026574810988,1.63027052212826,0.760561947461488,0,0,0.857506474208285,1.82050508016733,0.934974970913685,0,1.5770327488574,3.07497449907012,0,0,1.47301047773323,0,0,0,0,0,1.06204527652799,0,0,0.712929475601973,0,1.36560522023513,-3.37564611591161,0.797640864299574,0.331219083802863,-3.10556505123657,0,0,-1.75858421047082,0.0546539866505198,-2.03296896433631,0,0.367264469647306,1.76240708684055,0,0,0.11064847801176,0,0,0,0,0,0.0549000101937406,0,0,-1.14242257831115,0,0.317999042824456,-7.80241349413823,-0.6449848583108,-0.967831585062458,-6.97169289666087,0,0,-4.37467520145099,-1.71119680850662,-5.0009148001278,0,-0.842510655596737,0.449840079333084,0,0,-1.25172263935843,0],"Archive227_field24":[0,0,0,0,4963.05123838958,0,0,8231.73907711204,0,5336.56049132319,2607.93972350264,5155.56252160499,3868.76922506061,2830.62951922447,0,0,3662.30736868344,3983.3875409752,2057.20645486104,0,6916.35276012658,6300.62945779495,0,0,6700.64807940284,0,0,0,0,0,4963.05246429191,0,0,8231.74238185858,0,5336.5595163524,2607.94400312568,5155.56188841482,3868.77072692376,2830.63265426273,0,0,3662.30878980412,3983.38945280422,2057.20920162027,0,6916.35842417842,6300.63072867474,0,0,6700.6552406484,0,0,0,0,0,4963.05260457317,0,0,8231.74346584407,0,5336.55882611167,2607.95298432879,5155.56140162066,3868.77107567535,2830.63927679114,0,0,3662.31088756233,3983.39011910918,2057.21395092492,0,6916.36036469172,6300.63077413596,0,0,6700.65783089453,0],"Archive227_field25":[7756731.84066318,9315146.83046467,2377594.11351252,2842846.67990754,5479699.56229668,6667115.90516197,5116116.79916588,3254098.45902005,5379613.65592747,3959519.83970657,6474085.66488824,4182434.26535206,5088090.88079535,6113152.08482672,6368805.34876272,7048331.61530796,6062743.06498189,5472454.98088023,5904552.14222732,3842925.64125867,3247285.49043884,4278579.73966035,7171702.35818719,6960510.59956649,3471619.11242499,4274529.12889192,3878365.92033159,4657573.41523233,1188797.05675626,1421423.33995377,2739849.78114834,3333557.95258098,2558058.39958294,1627049.22951003,2689806.82796373,1979759.91985329,3237042.83244412,2091217.13267603,2544045.44039768,3056576.04241336,3184402.67438136,3524165.80765398,3031371.53249094,2736227.49044012,2952276.07111366,1921462.82062933,1623642.74521942,2139289.86983018,3585851.17909359,3480255.29978324,1735809.55621249,2137264.56444596,-3.83512741564118e-10,-1.27837580521373e-10,-3.19593951303432e-11,1.27837580521373e-10,5.11350322085491e-10,-5.11350322085491e-10,1.91756370782059e-10,-1.27837580521373e-10,-5.11350322085491e-10,-1.27837580521373e-10,3.83512741564118e-10,1.27837580521373e-10,0,3.83512741564118e-10,-2.55675161042745e-10,-1.27837580521373e-10,3.83512741564118e-10,-3.19593951303432e-10,-2.55675161042745e-10,-6.39187902606864e-11,0,-1.91756370782059e-10,-3.83512741564118e-10,2.55675161042745e-10,-1.27837580521373e-10,-1.91756370782059e-10],"Archive227_field26":[-752.416134928983,-944.096718533647,-242.725208347145,-286.345152681637,-541.109982813973,-635.242688636623,-506.727662728444,-332.10524311331,-528.06640320883,-394.578772835163,-631.495949902791,-415.254781786811,-500.137819933539,-594.060917863664,-626.130563733165,-679.041101838838,-591.839032436256,-536.947585579488,-577.457116007968,-386.295397091953,-331.525060468677,-427.023452588447,-706.675487004513,-665.503002218098,-352.351167901795,-425.952594926343,-752.416134928983,-944.096718533647,-242.725208347145,-286.345152681637,-541.109982813973,-635.242688636623,-506.727662728444,-332.10524311331,-528.06640320883,-394.578772835163,-631.495949902791,-415.254781786811,-500.137819933539,-594.060917863664,-626.130563733165,-679.041101838838,-591.839032436256,-536.947585579488,-577.457116007968,-386.295397091953,-331.525060468677,-427.023452588447,-706.675487004513,-665.503002218098,-352.351167901795,-425.952594926343,-752.416134928983,-944.096718533647,-242.725208347145,-286.345152681637,-541.109982813973,-635.242688636623,-506.727662728444,-332.10524311331,-528.06640320883,-394.578772835163,-631.495949902791,-415.254781786811,-500.137819933539,-594.060917863664,-626.130563733165,-679.041101838838,-591.839032436256,-536.947585579488,-577.457116007968,-386.295397091953,-331.525060468677,-427.023452588447,-706.675487004513,-665.503002218098,-352.351167901795,-425.952594926343],"Archive227_field27":[86.9750384977887,109.13222700607,28.0576576715348,33.0998758825011,62.5492455597395,73.4304525577776,58.5748443284788,38.3894828462496,61.0414817231581,45.6110686156241,72.9973508066476,48.0010980037099,57.8130958701801,68.6700733844585,72.3771425907475,78.4933007578155,68.4132360286185,62.0680960429942,66.7507680445415,44.6535573519596,38.3224170225515,49.3614896121869,81.6876789776209,76.9283732116885,40.729796943937,49.237704538923,86.9750384977887,109.13222700607,28.0576576715348,33.0998758825011,62.5492455597395,73.4304525577776,58.5748443284788,38.3894828462496,61.0414817231581,45.6110686156241,72.9973508066476,48.0010980037099,57.8130958701801,68.6700733844585,72.3771425907475,78.4933007578155,68.4132360286185,62.0680960429942,66.7507680445415,44.6535573519596,38.3224170225515,49.3614896121869,81.6876789776209,76.9283732116885,40.729796943937,49.237704538923,86.9750384977887,109.13222700607,28.0576576715348,33.0998758825011,62.5492455597395,73.4304525577776,58.5748443284788,38.3894828462496,61.0414817231581,45.6110686156241,72.9973508066476,48.0010980037099,57.8130958701801,68.6700733844585,72.3771425907475,78.4933007578155,68.4132360286185,62.0680960429942,66.7507680445415,44.6535573519596,38.3224170225515,49.3614896121869,81.6876789776209,76.9283732116885,40.729796943937,49.237704538923],"Archive227_field28":[839.391173426772,1053.22894553972,270.78286601868,319.445028564138,603.659228373712,708.673141194401,565.302507056923,370.494725959559,589.107884931988,440.189841450787,704.493300709438,463.255879790521,557.950915803719,662.730991248123,698.507706323912,757.534402596653,660.252268464875,599.015681622482,644.207884052509,430.948954443912,369.847477491228,476.384942200634,788.363165982134,742.431375429786,393.080964845732,475.190299465266,839.391173426772,1053.22894553972,270.78286601868,319.445028564138,603.659228373712,708.673141194401,565.302507056923,370.494725959559,589.107884931988,440.189841450788,704.493300709438,463.255879790521,557.950915803719,662.730991248123,698.507706323912,757.534402596653,660.252268464875,599.015681622482,644.207884052509,430.948954443912,369.847477491228,476.384942200634,788.363165982134,742.431375429786,393.080964845732,475.190299465266,839.391173426772,1053.22894553972,270.78286601868,319.445028564138,603.659228373712,708.673141194401,565.302507056923,370.494725959559,589.107884931988,440.189841450787,704.493300709438,463.255879790521,557.950915803719,662.730991248123,698.507706323912,757.534402596653,660.252268464875,599.015681622482,644.207884052509,430.948954443912,369.847477491228,476.384942200634,788.363165982134,742.431375429786,393.080964845732,475.190299465266],"Archive227_field29":[272.262506393441,272.279037717191,272.930203459488,272.878499919398,272.603372993829,272.32212660652,272.640764151952,272.860256698037,272.59306090158,272.766019797778,272.480493246798,272.739354119588,272.633674658303,272.511243018013,272.488221924447,272.314949607962,272.524794193052,272.593713991904,272.542432117828,272.779730972316,272.862624586051,272.74034005012,272.409564345663,272.281904683025,272.836658874905,272.730898457232,258.553371430127,243.040309362114,255.597087181876,251.413622811544,248.132402468812,264.187074473847,248.444068833292,255.601305511777,250.374894905213,248.677643912439,247.909067643501,247.373438239439,247.749139117886,249.149864931402,252.057598970786,260.11819395801,250.077372009704,247.505881642749,249.871121873016,250.100195751974,258.213422211702,250.189564547258,250.106841786886,264.870715350397,255.850773754805,248.950179540673,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive227_field30":[-1.29958358041507e-05,1.6793891290756,-1.27657821622705e-05,-1.3332004049649e-05,-7.11066532669061e-06,-2.73360994582492e-05,3.38204267805009e-09,0.19637869762855,-1.38408989498821e-05,-3.46718020878068e-05,0.214470278045832,-3.58012295163498e-05,-1.31939567806774e-06,0.0268534345602588,-5.08788597650296e-05,-5.24000559780159e-05,0.225641486111009,-1.90991187204409e-05,-1.2145859983897e-06,2.48775918964992e-09,0.421391215599991,-0.0453866143896618,-1.29958101853384e-05,-1.29954012894316e-05,0.412017785624408,0.0280632784892392,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive228.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive228.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive228.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive228_field1":[0,0,0,0,385.990591313327,0,0,282.091237885842,0,100.812802283924,680.058684338846,373.843329451243,37.2913341522588,0,934.228442915371,455.685956357879,282.739056710934,294.348035239587,261.760915020437,-574.298337387654,436.534670167035,528.482164628681,238.972331832554,137.479614372575,351.852564185543,0,-288.299265085187,137.460129446807,0,193.034813090108,0,548.695629615634,0,0,-79.383682192908,-80.8703382118519,0,0,259.473468361196,564.492465579917,365.48840275338,-408.557500507936,520.951736451642,-146.15391248504],"Archive228_field2":[0,0,0,0,5965.3427606593,0,0,7916.94414451567,0,6208.22142682195,3109.76404218389,5849.21762099958,4618.54358869214,0,7268.97621225413,7471.15625159065,3531.66365186689,7414.77993432182,6960.53513478037,7235.53301657509,6473.69250200483,4515.5462302479,6074.3705911671,5129.87028135796,4414.54691631822,0,2821.14762921867,7163.168065596,0,4530.66685591531,0,5069.88644814175,0,0,2331.67427348505,2966.15734905871,0,0,3337.04243932143,2529.97221952273,2276.62403995689,1044.65819816935,962.171930332714,2769.926621101],"Archive228_field3":[0,0,0,0,5977.81757740505,0,0,7921.9681931874,0,6209.03990207468,3183.25497128404,5861.15224275801,4618.69413625238,0,7328.76510456356,7485.04010854343,3542.96338170571,7420.62007114438,6965.455343274,7258.28882135965,6488.39403310028,4546.36680832472,6079.06948917491,5131.71216534283,4428.54656781416,0,2835.84033614285,7164.4868639116,0,4534.77723800787,0,5099.49168947363,0,0,2333.02522203052,2967.25958267515,0,0,3347.11498497075,2592.18270483646,2305.77509567973,1121.70851036431,1094.15059988658,2773.77981325459],"Archive228_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive228_field5":[-896.29513425177,-833.965499179843,-212.964882318998,-274.743860127018,-554.956792836962,-851.084818946967,-522.349646341077,-252.87140449423,-584.521436921668,-383.813967616691,-721.687458461736,-416.626292040783,-538.462119379804,-367.085347821721,-235.93008059942,-311.666409148251,-295.513060374311,-364.927638131361,-425.114112654826,-268.332269162541,-475.075541755798,-543.640394859623,-504.412417937299,-597.161714559174,-683.810726573449,-678.415383015371,-662.8726878654,-329.161455524424,-428.043969850584,-341.182477179609,-738.269372612858,-610.21619073451,-871.177592685685,-600.661186393092,-568.787561877454,-472.121021517781,-840.041620795903,-505.639269763333,-459.96463933105,-647.495748881392,-782.261371805929,-756.927260622384,-807.988351521348,-746.836293451582],"Archive228_field6":[103.606634929867,96.4016825660451,24.6175327435264,31.7588322502333,64.1498582777731,98.3805788531936,60.3806570470602,29.2305004104562,67.5673634827665,44.3667181759751,83.4229777502116,48.1596368116936,62.2431675618967,42.432984590079,27.2721794367922,36.0268695416735,34.159634023639,42.1835655855226,49.1407807430879,31.0176886927256,54.9160386326223,62.8417468430971,58.3072151596005,69.0285078988794,79.0446423301915,78.4209712100647,76.6243237881487,38.0491976942082,49.4794556206782,39.4387596303583,85.3397529955975,70.5375313171844,100.703189557996,69.4330269985472,65.7486167491931,54.5745128472026,97.1040477692101,58.4490322736241,53.16930400119,74.8468368390704,90.4249786384172,87.4964990468623,93.3988716044307,86.3300404644141],"Archive228_field7":[999.901769181637,930.367181745888,237.582415062524,306.502692377252,619.106651114735,949.465397800161,582.730303388137,282.101904904686,652.088800404435,428.180685792666,805.110436211948,464.785928852476,600.705286941701,409.5183324118,263.202260036212,347.693278689924,329.67269439795,407.111203716883,474.254893397914,299.349957855267,529.99158038842,606.48214170272,562.719633096899,666.190222458053,762.855368903641,756.836354225436,739.497011653548,367.210653218632,477.523425471262,380.621236809968,823.609125608455,680.753722051694,971.880782243681,670.094213391639,634.536178626647,526.695534364983,937.145668565113,564.088302036957,513.13394333224,722.342585720463,872.686350444347,844.423759669247,901.387223125779,833.166333915996],"Archive228_field8":[3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6],"Archive228_field9":[0,0,0,0,378.232046303886,0,0,278.429383501408,0,89.7587444188364,680.73519515794,372.105847190936,30.1873516489841,0,918.473552215927,446.725721544522,271.599168770526,288.926205576109,253.397490761926,-566.04651335168,430.596151047696,523.216245643563,230.315593598889,129.134850325644,345.310131326765,0,-297.443886853094,136.199009823367,0,200.986365299201,0,542.33705241046,0,0,-85.442439255738,-87.1254950973877,0,0,256.809971507858,562.631707289654,362.86887036262,-411.953767395041,520.240106957108,-156.506321986562],"Archive228_field10":[0,0,0,0,5893.03598002804,0,0,7873.41050496645,0,6155.2010238953,3055.50506654105,5801.66715149485,4562.93052083308,0,7240.40622980899,7419.24204387221,3503.0152122032,7360.26284327302,6899.19100294459,7212.9048232825,6408.77490321243,4464.35949942736,6008.29264803011,5059.0911248907,4340.3023533376,0,2773.60867790069,7118.71247832385,0,4497.52323707332,0,5001.80445698838,0,0,2298.87622584951,2932.92261906938,0,0,3308.4881475732,2490.93439804074,2224.9552057765,1026.46522617306,946.210612757469,2709.68801896866],"Archive228_field11":[0,0,0,0,5905.16151707608,0,0,7878.33205071435,0,6155.85544638285,3130.41716350789,5813.58791954229,4563.03037620282,0,7298.42969677567,7432.67895013975,3513.52838118662,7365.93154151829,6903.84289967813,7235.08152303825,6423.22417523649,4494.91501363848,6012.70536589209,5060.73895982755,4354.01695049351,0,2789.51213726563,7120.0152752168,0,4502.01185994114,0,5031.12087952238,0,0,2300.46349942833,2934.2164101076,0,0,3318.44017334925,2553.68530038262,2254.35123367903,1106.04555376959,1079.79826476134,2714.20400651168],"Archive228_field12":[8994886.3381511,8369369.18253421,2137236.761947,2757227.72500651,5569341.0388984,8541172.34156875,5242107.78130991,2537723.85308443,5866040.8680142,3851814.96783309,7242588.30876235,4181107.31519324,5403806.59911155,3683932.7291601,2367706.99476595,3127768.76564046,2965659.73408425,3662278.75306023,4266287.94238215,2692883.37037567,4767682.35911074,5455773.85586508,5062096.39382409,5992894.01748148,6862471.4419223,6808325.77025055,6652345.03252264,3303342.57790457,4295690.90515162,3423981.103458,7408998.26387477,6123903.91022097,8742815.98448424,6028013.42200211,5708141.51960423,4738031.88717449,8430346.89090798,5074408.62481499,4616034.93340986,6498027.76234657,7850485.69073674,7596241.92451982,8108672.14017819,7494972.7116515],"Archive228_field13":[-894.052380940174,-832.133998247258,-217.354961872991,-278.472262773782,-556.414025833932,-835.804073827835,-522.641426598045,-264.054865123343,-584.184810042174,-386.644413650259,-717.452618331562,-420.464931256185,-539.122218801336,-368.846775784722,-246.511130453773,-313.884147191226,-296.875432061681,-368.65208030916,-428.75142746591,-278.790055097522,-478.009699497483,-544.063093568197,-506.241519572845,-598.378468185294,-681.81153412592,-677.878161842626,-661.24264385416,-329.861435809584,-427.983685120259,-342.980174196539,-734.949747766645,-610.617396511644,-859.965525167657,-600.814017708788,-568.412078326835,-473.130187137912,-829.080146534648,-504.971003638395,-460.589512172986,-645.384109348876,-773.522489671347,-753.043173623614,-803.79113427872,-740.359634610083],"Archive228_field14":[103.347385364949,96.1899714440669,25.1250010452967,32.189814453676,64.3183061487425,96.6142113694117,60.4143851901775,30.5232450415205,67.5284513243953,44.6939016869437,82.9334542455241,48.6033617373562,62.3194713118229,42.6365956741336,28.4952887983642,36.2832274833914,34.3171164651453,42.6140899812115,49.5612337092546,32.2265494442065,55.2552106289348,62.8906084168254,58.5186489364467,69.1691577182565,78.8135470200082,78.3588714888968,76.4358999438833,38.1301114458189,49.4724870477071,39.6465632113774,84.9560231878565,70.5839084299175,99.4071381327935,69.4506934319864,65.7052129799832,54.6911666702493,95.8369635034599,58.3717844990948,53.2415357582732,74.6027432835124,89.4148134189344,87.0475206151615,92.9136970921966,85.5813754293008],"Archive228_field15":[997.399766305123,928.323969691325,242.479962918288,310.662077227458,620.732331982675,932.418285197247,583.055811788223,294.578110164863,651.713261366569,431.338315337202,800.386072577086,469.068292993541,601.441690113158,411.483371458856,275.006419252137,350.167374674617,331.192548526827,411.266170290372,478.312661175164,311.016604541729,533.264910126418,606.953701985022,564.760168509292,667.547625903551,760.625081145928,756.237033331522,737.678543798043,367.991547255403,477.456172167966,382.626737407916,819.905770954502,681.201304941562,959.37266330045,670.264711140774,634.117291306819,527.821353808161,924.917110038108,563.34278813749,513.831047931259,719.986852632388,862.937303090282,840.090694238776,896.704831370917,825.941010039384],"Archive228_field16":[1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2],"Archive228_field17":[0,0,0,0,368.954752920416,0,0,274.890578849112,0,81.0642950311821,677.3221407542,367.630231366961,23.0065357503394,0,908.83478893005,439.870657606264,261.833895512919,282.71241041313,245.792857342845,-563.505444792026,423.307721914355,515.847509251376,221.071813167012,119.438566029282,337.088274006688,0,-305.51977828435,132.313206527013,0,204.78425043862,0,533.962521146235,0,0,-90.9569440321241,-92.2997515516712,0,0,252.487119397902,557.408033396104,356.936928616114,-412.482726314564,516.82932067143,-165.117570407807],"Archive228_field18":[0,0,0,0,5791.35549519223,0,0,7810.8081114573,0,6072.32722060684,2978.22627057212,5728.05363170931,4479.57346290727,0,7185.6639107854,7345.16825385285,3458.6883261112,7283.35988222644,6813.03794116233,7166.10197120656,6318.03199965173,4386.915804707,5913.3633838387,4957.38850984688,4232.6447203572,0,2705.83542161967,7050.58670373818,0,4444.46993815692,0,4903.77458164433,0,0,2250.28457694522,2881.85500283496,0,0,3261.18401687003,2434.61365963683,2149.92874950135,1000.6794257298,924.039052892189,2622.05110619883],"Archive228_field19":[0,0,0,0,5803.09624953747,0,0,7815.64381125106,0,6072.86829217066,3054.27520061336,5739.83888229915,4479.63254188,0,7242.91008589319,7358.32745077512,3468.58500342969,7288.84472883236,6817.47021382845,7188.22341389309,6332.19691545167,4417.14035665485,5917.49433932144,4958.82712025909,4246.04637671805,0,2723.02913385344,7051.8281070621,0,4449.1852760262,0,4932.75999026608,0,0,2252.12207548907,2883.33270738938,0,0,3270.94343230671,2497.60833346319,2179.35715268112,1082.35914214591,1058.75432371046,2627.24490970596],"Archive228_field20":[8972378.89573464,8350988.91683013,2181293.97602144,2794644.59446045,5583965.29007979,8387820.43742884,5245035.98001014,2649956.92607777,5862662.60520354,3880220.27696094,7200089.02010678,4219630.47806251,5410431.11266925,3701609.76846843,2473894.4961158,3150025.16407668,2979331.99226117,3699655.87671302,4302790.68801971,2797833.84063835,4797128.48056793,5460015.9037058,5080452.58107083,6005104.90667438,6842408.28622011,6802934.41733271,6635986.51394212,3310367.32105374,4295085.90990342,3442022.12557201,7375683.73717938,6127930.26295415,8630295.82333829,6029547.18053885,5704373.30561914,4748159.49994684,8320341.59096751,5067702.15324359,4622305.92604858,6476836.12930486,7762785.50302046,7557262.66451235,8066550.42090155,7429975.35988199],"Archive228_field21":[-887.52508924272,-826.016176244619,-217.198927762419,-277.877411605972,-553.463963867142,-817.237476400932,-518.63449510307,-269.408448699982,-579.511814331517,-385.066929480488,-709.040542050622,-419.578801422914,-535.429795672257,-366.193350783405,-251.66638229937,-312.370494107287,-294.271726712085,-368.08107083858,-427.757042377668,-283.110447199933,-476.519668009939,-540.154054980557,-503.738255071185,-595.007808396218,-675.34241801225,-673.030255753742,-655.280826103241,-327.239211934214,-423.529934572439,-340.675752868495,-727.458256101142,-606.538112485916,-845.059582080868,-596.656079389355,-563.712714365731,-469.793622307817,-814.444736462888,-500.084907348864,-456.890849969539,-638.982012594608,-760.904223674155,-744.999059242552,-795.43471613555,-729.820717173565],"Archive228_field22":[102.59286745881,95.4827859126822,25.1069643869318,32.121053031879,63.9772957141953,94.4680179918198,59.9512066313254,31.1420889445999,66.9882795192376,44.5115534623029,81.9610659295158,48.5009301535757,61.8926481365968,42.3298747906663,29.0912066780078,36.1082577703079,34.0161428914734,42.548084524416,49.4462884318788,32.725962271748,55.0829714384445,62.4387457229434,58.2292857552297,68.7795285605225,78.0657538814597,77.7984810358742,75.7467476193495,37.8269972355798,48.9576587401075,39.3801851734574,84.0900492330655,70.1123663287973,97.6840956385737,68.9700593405362,65.1619931545993,54.3054786964326,94.1451930916752,57.8069794754412,52.8139913814298,73.8626972028663,87.956213423621,86.1176666081903,91.9477425412959,84.3631363363118],"Archive228_field23":[990.117956701529,921.498962157301,242.305892149351,309.998464637851,617.441259581337,911.705494392752,578.585701734395,300.550537644582,646.500093850755,429.578482942791,791.001607980138,468.07973157649,597.322443808854,408.523225574072,280.757588977377,348.478751877595,328.287869603559,410.629155362996,477.203330809547,315.836409471681,531.602639448384,602.592800703501,561.967540826415,663.78733695674,753.40817189371,750.828736789616,731.02757372259,365.066209169794,472.487593312547,380.055938041952,811.548305334207,676.650478814713,942.743677719442,665.626138729891,628.874707520331,524.09910100425,908.589929554563,557.891886824305,509.704841350968,712.844709797474,848.860437097776,831.116725850742,887.382458676846,814.183853509877],"Archive228_field24":[-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6],"Archive228_field25":[0,0,0,0,350.804097687566,0,0,267.826496122071,0,75.7343690379692,653.067089125084,351.915518141403,15.3623875263581,0,899.732218980817,431.580708427341,252.959266625409,271.696482719803,236.336580787611,-567.181965049544,406.889157925826,495.627825272808,207.290946888959,105.137239160896,320.152575223551,0,-305.5733553048,120.395143418723,0,197.127633302253,0,512.635601479762,0,0,-94.1194370826943,-93.9516056416234,0,0,241.606593411958,535.620890926747,337.239880039309,-398.882475312032,498.728617024967,-166.041719069876],"Archive228_field26":[0,0,0,0,5532.19923861084,0,0,7582.47503240388,0,5823.02066011283,2799.40101136113,5502.44974436785,4260.82262733625,0,6952.71488170072,7102.62992090199,3321.75562698971,7040.59514707729,6563.08328074044,6940.15667992659,6069.17939178383,4178.07805020404,5658.97762050026,4706.16760213642,3979.75591338582,0,2546.76700750292,6811.01764263531,0,4270.45648239373,0,4658.40726998125,0,0,2129.63215643043,2744.1750847996,0,0,3118.69202320861,2299.31489469477,1984.50423192762,941.416526024651,873.714288395301,2425.93206067795],"Archive228_field27":[0,0,0,0,5543.31055693624,0,0,7587.20361194117,0,5823.5131409446,2874.56825372229,5513.69184133485,4260.85032177512,0,7010.68914530482,7115.73001885112,3331.37341587662,7045.83557882034,6567.3371414412,6963.29448776994,6082.80340603665,4207.37247397725,5662.77292905029,4707.34185485364,3992.61252835179,0,2565.03357989279,6812.08164358358,0,4275.00384465675,0,4686.52894506357,0,0,2131.71095370345,2745.78291207399,0,0,3128.03671359611,2360.87668542056,2012.95498787915,1022.43449892077,1006.03523357074,2431.60774293405],"Archive228_field28":[8906873.41135692,8289592.71880578,2179728.07542037,2788674.88823524,5554359.559704,8201492.93529349,5204823.89809122,2703683.510027,5815766.1492598,3864389.22950228,7115668.53501949,4210737.60692384,5373375.32034237,3674980.97692247,2525630.69619502,3134834.70177791,2953202.16874361,3693925.43693978,4292811.4071966,2841191.69723306,4782175.07587059,5420786.23878453,5055330.74474004,5971278.21217533,6777486.63047627,6754282.62554993,6576155.91686646,3284051.65246336,4250389.71729321,3418895.80575965,7300501.8986763,6086992.07780703,8480705.29371823,5987819.65000219,5657212.22767017,4714674.969841,8173466.03058905,5018667.09873748,4585187.5206798,6412587.05505482,7636153.25423106,7476534.90890633,7982688.50029141,7324210.68388855],"Archive228_field29":[-881.073488879394,-819.983495335257,-216.785024242277,-277.174880019578,-550.312402485253,-800.304228072817,-514.65120865726,-273.421618449809,-574.846330254158,-383.318964702854,-700.897512543579,-418.283972256527,-531.675013826302,-363.442894946998,-255.710314820922,-311.147432042466,-291.900575222854,-367.382663695299,-426.410923527049,-285.933470847173,-474.799792003583,-536.188581793557,-501.108873755137,-591.302337140625,-668.713703997529,-668.238612375223,-649.340385403423,-325.195456780813,-419.068043648317,-338.456365818844,-720.236249554616,-602.253409513425,-831.172085458311,-592.516975493777,-559.020965368326,-466.399058253333,-800.86515294833,-495.327660457315,-453.163452371786,-632.667881637454,-749.013672636032,-737.27175874663,-787.399215289778,-719.738042148303],"Archive228_field30":[101.847099041675,94.7854422088738,25.0591194871116,32.0398443643132,63.6129930898984,92.510630507872,59.4907613060737,31.6059886103378,66.4489760162931,44.3094986461315,81.0197778948957,48.351255244484,61.4586166473151,42.0119376928918,29.5586623457118,35.9668787311902,33.7420512253245,42.4673526190858,49.2906847261365,33.0522877969469,54.8841635249507,61.980359509397,57.9253441854357,68.3511970958629,77.2995121305758,77.2445942331228,75.0600663607011,37.5907507292979,48.4418894511686,39.1236366159187,83.2552262298684,69.6170789622934,96.0787797803501,68.4916024016798,64.619653575837,53.9130863411704,92.5754702426641,57.2570687115326,52.3831253559535,73.1328194695421,86.5817331509481,85.2244344897959,91.0188842101597,83.197636278866],"Archive228_field31":[982.920587921069,914.768937544131,241.844143729389,309.214724383891,613.925395575151,892.814858580689,574.141969963334,305.027607060147,641.295306270451,427.628463348986,781.917290438475,466.635227501011,593.133630473617,405.45483263989,285.268977166634,347.114310773656,325.642626448179,409.850016314385,475.701608253185,318.98575864412,529.683955528533,598.168941302954,559.034217940573,659.653534236488,746.013216128105,745.483206608346,724.400451764124,362.786207510111,467.509933099485,377.580002434762,803.491475784485,671.870488475718,927.250865238662,661.008577895456,623.640618944163,520.312144594503,893.440623190994,552.584729168848,505.54657772774,705.800701106996,835.59540578698,822.496193236426,878.418099499937,802.935678427169],"Archive228_field32":[-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive229.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive229.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive229.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive229_field1":[0,0,0,0,385.990591313327,0,0,282.091237885842,0,100.812802283924,680.058684338846,373.843329451243,37.2913341522584,0,934.228442915371,455.685956357879,282.739056710934,294.348035239587,261.760915020437,-574.298337387654,436.534670167035,528.48216462868,238.972331832554,137.479614372575,351.852564185542,0,-288.299265085187,137.460129446806,0,193.034813090108,0,548.695629615635,0,0,-79.3836821929082,-80.8703382118521,0,0,259.473468361195,564.492465579917,365.48840275338,-408.557500507936,520.951736451642,-146.15391248504],"Archive229_field2":[0,0,0,0,5965.3427606593,0,0,7916.94414451567,0,6208.22142682195,3109.76404218389,5849.21762099958,4618.54358869214,0,7268.97621225413,7471.15625159065,3531.66365186689,7414.77993432182,6960.53513478037,7235.53301657509,6473.69250200483,4515.5462302479,6074.3705911671,5129.87028135796,4414.54691631822,0,2821.14762921867,7163.168065596,0,4530.66685591531,0,5069.88644814174,0,0,2331.67427348505,2966.15734905871,0,0,3337.04243932143,2529.97221952273,2276.62403995689,1044.65819816935,962.171930332713,2769.926621101],"Archive229_field3":[0,0,0,0,5977.81757740505,0,0,7921.9681931874,0,6209.03990207468,3183.25497128404,5861.15224275801,4618.69413625238,0,7328.76510456356,7485.04010854343,3542.96338170571,7420.62007114438,6965.455343274,7258.28882135965,6488.39403310028,4546.36680832472,6079.06948917491,5131.71216534283,4428.54656781416,0,2835.84033614285,7164.4868639116,0,4534.77723800787,0,5099.49168947363,0,0,2333.02522203052,2967.25958267515,0,0,3347.11498497074,2592.18270483646,2305.77509567973,1121.70851036431,1094.15059988658,2773.77981325459],"Archive229_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive229_field5":[-896.29513425177,-833.965499179843,-212.964882318998,-274.743860127018,-554.956792836962,-851.084818946967,-522.349646341077,-252.87140449423,-584.521436921668,-383.813967616691,-721.687458461736,-416.626292040783,-538.462119379804,-367.085347821721,-235.93008059942,-311.666409148251,-295.513060374311,-364.927638131361,-425.114112654826,-268.332269162541,-475.075541755798,-543.640394859623,-504.412417937299,-597.161714559174,-683.810726573449,-678.415383015371,-662.8726878654,-329.161455524424,-428.043969850584,-341.182477179609,-738.269372612858,-610.21619073451,-871.177592685685,-600.661186393092,-568.787561877454,-472.121021517781,-840.041620795903,-505.639269763333,-459.96463933105,-647.495748881392,-782.261371805929,-756.927260622384,-807.988351521348,-746.836293451582],"Archive229_field6":[103.606634929867,96.4016825660451,24.6175327435264,31.7588322502333,64.1498582777731,98.3805788531936,60.3806570470602,29.2305004104562,67.5673634827665,44.3667181759751,83.4229777502116,48.1596368116936,62.2431675618967,42.432984590079,27.2721794367922,36.0268695416735,34.159634023639,42.1835655855226,49.1407807430879,31.0176886927256,54.9160386326223,62.8417468430971,58.3072151596005,69.0285078988794,79.0446423301915,78.4209712100647,76.6243237881488,38.0491976942082,49.4794556206782,39.4387596303583,85.3397529955975,70.5375313171844,100.703189557996,69.4330269985472,65.7486167491931,54.5745128472026,97.1040477692101,58.4490322736241,53.16930400119,74.8468368390704,90.4249786384172,87.4964990468623,93.3988716044307,86.3300404644141],"Archive229_field7":[999.901769181637,930.367181745888,237.582415062524,306.502692377252,619.106651114735,949.465397800161,582.730303388137,282.101904904686,652.088800404435,428.180685792666,805.110436211948,464.785928852476,600.705286941701,409.5183324118,263.202260036212,347.693278689924,329.67269439795,407.111203716883,474.254893397914,299.349957855267,529.99158038842,606.48214170272,562.719633096899,666.190222458053,762.855368903641,756.836354225436,739.497011653549,367.210653218632,477.523425471262,380.621236809968,823.609125608455,680.753722051694,971.880782243681,670.094213391639,634.536178626647,526.695534364983,937.145668565113,564.088302036957,513.13394333224,722.342585720463,872.686350444347,844.423759669246,901.387223125779,833.166333915996],"Archive229_field8":[3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6],"Archive229_field9":[0,0,0,0,378.232046303886,0,0,278.429383501413,0,89.7587444188392,680.735195157937,372.105847190938,30.1873516489839,0,918.473552215929,446.725721544526,271.599168770527,288.926205576114,253.397490761928,-566.046513351676,430.596151047698,523.216245643565,230.31559359889,129.134850325645,345.310131326764,0,-297.443886853093,136.199009823371,0,200.986365299203,0,542.337052410458,0,0,-85.4424392557379,-87.1254950973871,0,0,256.809971507859,562.631707289653,362.868870362619,-411.953767395041,520.240106957107,-156.506321986562],"Archive229_field10":[0,0,0,0,5893.03598002803,0,0,7873.41050496644,0,6155.20102389529,3055.50506654105,5801.66715149485,4562.93052083307,0,7240.40622980899,7419.24204387221,3503.0152122032,7360.26284327302,6899.19100294458,7212.9048232825,6408.77490321242,4464.35949942736,6008.2926480301,5059.09112489069,4340.3023533376,0,2773.60867790069,7118.71247832385,0,4497.52323707332,0,5001.80445698837,0,0,2298.8762258495,2932.92261906938,0,0,3308.4881475732,2490.93439804074,2224.9552057765,1026.46522617306,946.210612757468,2709.68801896866],"Archive229_field11":[0,0,0,0,5905.16151707607,0,0,7878.33205071434,0,6155.85544638285,3130.41716350789,5813.58791954229,4563.03037620281,0,7298.42969677567,7432.67895013975,3513.52838118662,7365.93154151829,6903.84289967812,7235.08152303825,6423.22417523649,4494.91501363849,6012.70536589208,5060.73895982754,4354.01695049351,0,2789.51213726563,7120.0152752168,0,4502.01185994114,0,5031.12087952238,0,0,2300.46349942833,2934.2164101076,0,0,3318.44017334926,2553.68530038262,2254.35123367903,1106.04555376959,1079.79826476134,2714.20400651168],"Archive229_field12":[8994886.3381511,8369369.18253421,2137236.761947,2757227.72500651,5569341.0388984,8541172.34156875,5242107.78130991,2537723.85308443,5866040.8680142,3851814.96783309,7242588.30876235,4181107.31519324,5403806.59911155,3683932.7291601,2367706.99476595,3127768.76564046,2965659.73408425,3662278.75306023,4266287.94238215,2692883.37037567,4767682.35911074,5455773.85586508,5062096.39382409,5992894.01748148,6862471.4419223,6808325.77025055,6652345.03252264,3303342.57790457,4295690.90515162,3423981.103458,7408998.26387477,6123903.91022097,8742815.98448424,6028013.42200211,5708141.51960423,4738031.88717449,8430346.89090799,5074408.62481499,4616034.93340986,6498027.76234657,7850485.69073674,7596241.92451982,8108672.14017819,7494972.7116515],"Archive229_field13":[-897.268375373192,-835.350532783516,-220.599366497413,-281.709406872245,-559.624841852249,-838.972172721456,-525.863946341624,-267.269864320915,-587.403219649428,-389.858008343655,-720.650150262222,-423.678833322709,-542.332545799633,-372.074415300974,-249.730327318578,-317.097861278558,-300.101870603687,-371.865774348586,-431.966846985145,-282.003470075225,-481.224051674906,-547.271822546094,-509.453459171047,-601.586709720088,-685.014386795777,-681.09683311945,-664.449740998998,-333.068078853866,-431.202590059975,-346.199883400523,-738.15776233343,-613.826801253009,-863.149394627529,-604.035609951978,-571.622476245646,-476.349692688642,-832.263195194463,-508.185638638493,-463.800060088195,-648.588318051491,-776.706321169305,-756.247581044932,-806.99584920212,-743.551849918248],"Archive229_field14":[103.719136084578,96.5617845965678,25.5000358219474,32.5640099546979,64.6894582729971,96.9804256362861,60.7868901987046,30.8948807175758,67.9004812244705,45.0653750102808,83.3030708045752,48.9748705912837,62.6905669081364,43.0096924993492,28.867409700948,36.6547146079904,34.6900744645483,42.9855747883862,49.9329179721106,32.5980019934284,55.6267715131299,63.2615192910425,58.8899309401647,69.540012246815,79.1837786263384,78.7309316364905,76.8066221874524,38.5007811979388,49.8445742054061,40.018743337465,85.3268514802002,70.9548974185594,99.7751753876969,69.8230912267281,66.0763167743059,55.0633232551756,96.2049058785312,58.7433780759872,53.612656891329,74.9731316395399,89.7828462856557,87.4179319419441,93.2841439644763,85.9503774169403],"Archive229_field15":[1000.98751145777,931.912317380084,246.09940231936,314.273416826942,624.314300125246,935.952598357742,586.650836540328,298.164745038491,655.303700873899,434.923383353936,803.953221066797,472.653703913993,605.023112707769,415.084107800323,278.597737019526,353.752575886549,334.791945068235,414.851349136973,481.899764957256,314.601472068654,536.850823188036,610.533341837136,568.343390111212,671.126721966903,764.198165422115,759.827764755941,741.25636318645,371.568860051805,481.047164265381,386.218626737988,823.48461381363,684.781698671569,962.924570015226,673.858701178706,637.698793019952,531.413015943817,928.468101072995,566.92901671448,517.412716979524,723.561449691031,866.48916745496,843.665512986876,900.279993166597,829.502227335188],"Archive229_field16":[4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8],"Archive229_field17":[0,0,0,0,369.311001539752,0,0,275.338289552626,0,77.4503936608554,679.395791993852,370.824309759507,20.6667427881525,0,910.110505731515,440.041121527525,258.53387713171,283.293955024385,244.555254150678,-565.126335116313,424.937278181333,518.742886511858,219.514498874657,118.174711006007,337.570312247023,0,-307.684827624423,133.455882148123,0,208.636378606853,0,535.909104990942,0,0,-92.7673176381351,-95.2249803755593,0,0,255.011107943477,559.723493471534,357.846068910891,-413.894831259312,518.275530173057,-166.325911123565],"Archive229_field18":[0,0,0,0,5811.33964910064,0,0,7849.36801602277,0,6096.09975155634,2986.29558843098,5751.13267271311,4494.06188568868,0,7223.16365116296,7379.07998370233,3472.90420257136,7315.73787036905,6840.86014428476,7204.58558849996,6342.0180747793,4401.50520479626,5934.65388771971,4973.21411397758,4245.19246163864,0,2713.20658782494,7084.02041483574,0,4463.87254318629,0,4919.33757955793,0,0,2256.66969502378,2891.00001134337,0,0,3273.02641306003,2441.66884592474,2155.62450942938,1003.17527814178,926.24716374347,2629.14064482197],"Archive229_field19":[0,0,0,0,5823.06269355461,0,0,7854.19565739579,0,6096.59173181242,3062.60346497245,5763.0753671852,4494.10940528345,0,7280.27432615865,7392.1889582526,3482.51394338379,7321.22094004171,6845.23007546105,7226.71580157013,6356.23827048793,4431.96821402808,5938.71226632869,4974.61796380256,4258.59281360217,0,2730.59699358344,7085.27739120279,0,4468.7455980723,0,4948.4422589804,0,0,2258.57563248621,2892.56786652879,0,0,3282.94571471463,2505.00242361229,2185.12490139297,1085.20485163771,1061.38745683138,2634.39648476951],"Archive229_field20":[9004653.42594647,8383268.86731823,2213853.62040243,2827131.3748893,5616187.85163768,8419614.30572863,5277375.99582439,2682221.46847491,5894961.37321039,3912470.72427384,7232178.26747606,4251884.01005838,5442648.76660317,3734001.16442691,2506201.16474815,3182276.80958294,3011711.33568648,3731907.32102591,4335059.44860953,2830082.48439103,4829386.52971024,5492217.52049826,5112686.41846074,6037301.63166821,6874550.9305593,6835235.81135855,6668171.75426178,3342548.00418823,4327389.64888359,3474333.93585079,7407878.18440624,6160138.66145874,8662247.95920587,6061877.88830237,5736591.67128509,4780469.26643691,8352285.48958941,5099963.04068962,4654525.7970229,6508992.38228709,7794737.25791631,7589420.91176195,8098711.75412828,7462011.25159506],"Archive229_field21":[-900.371233691798,-838.864939229447,-230.193878775246,-290.83804449749,-566.286229772768,-829.821949713519,-531.507326369739,-282.287935298013,-592.366743681622,-397.90378473792,-721.786703194919,-432.422915980849,-548.246698284047,-379.095748488655,-264.562854330631,-325.213526618537,-307.166334242206,-380.926078528507,-440.608664062028,-295.969525544891,-489.363970015441,-552.961741331456,-516.567362526428,-607.815674508589,-688.115975963779,-685.887423636859,-668.076326872164,-340.042971663136,-436.383302466144,-353.540746051652,-740.258416005976,-619.34994341915,-857.728133184853,-609.528703216028,-576.526059055254,-482.650515634758,-827.109585937824,-512.921956976928,-469.70465353849,-651.762442173866,-773.576795404774,-757.781926607259,-808.218697169968,-742.53617623019],"Archive229_field22":[104.077808910939,96.9680300526951,26.6091070339979,33.6192286987284,65.4594769421084,95.9227117444199,61.439232928236,32.6308845600757,68.474236456109,45.9954211365534,83.4344498785839,49.9856369617994,63.3742093981559,43.8213188002153,30.5819657132464,37.5928395000708,35.5066864009529,44.0328945736333,50.9318630213467,34.2123988088969,56.5676999145439,63.9192416370058,59.7122578274825,70.2600452539918,79.5423047460857,79.2846967344679,77.225834949236,39.3070392544084,50.4434351814736,40.8673054323611,85.5696751326428,71.5933413330752,99.1485083070823,70.4580616585594,66.6431431405201,55.7916626578892,95.6091778728565,59.2908696178346,54.2951944112104,75.3400423886912,89.421090853769,87.5952935881892,93.4254982551981,85.8329712981463],"Archive229_field23":[1004.44904260274,935.832969282142,256.802985809244,324.457273196218,631.745706714877,925.744661457939,592.946559297975,314.918819858089,660.840980137731,443.899205874473,805.221153073503,482.408552942649,611.620907682203,422.91706728887,295.144820043877,362.806366118608,342.673020643159,424.958973102141,491.540527083374,330.181924353788,545.931669929985,616.880982968462,576.279620353911,678.075719762581,767.658280709865,765.172120371327,745.3021618214,379.350010917545,486.826737647618,394.408051484014,825.828091138619,690.943284752226,956.876641491936,679.986764874587,643.169202195774,538.442178292648,922.718763810681,572.212826594762,523.9998479497,727.102484562557,862.997886258544,845.377220195449,901.644195425166,828.369147528336],"Archive229_field24":[7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2],"Archive229_field25":[0,0,0,0,360.405866301685,0,0,273.031951619597,0,63.082273300286,677.637373612172,371.609492819182,8.95400877056446,0,909.434539514387,435.896836290653,243.764375636931,278.585199937645,235.458274550402,-572.399761241052,420.896566177124,516.543850315673,207.155827558139,105.515549295678,329.797883787297,0,-319.021157251258,130.118442668317,0,217.428575063152,0,530.805565830654,0,0,-101.437796618412,-105.672160418698,0,0,255.43654093672,557.456228978025,351.982304555026,-415.169559713444,516.038706381296,-175.749315136247],"Archive229_field26":[0,0,0,0,5740.52917855941,0,0,7865.92784021376,0,6049.9035376597,2915.87739260822,5715.01724724137,4428.4922244511,0,7237.20950999116,7371.15599599532,3451.90662250128,7301.62577788,6805.44600048734,7227.65115256359,6293.07205269855,4342.53877460943,5872.9426576834,4891.71996903506,4149.7487235912,0,2651.74755530762,7077.937122905,0,4442.61027031609,0,4841.24701248366,0,0,2214.21031360623,2850.94886704674,0,0,3241.66785418879,2392.38896934946,2082.81219502447,979.152956654293,906.119078157137,2544.56174291051],"Archive229_field27":[0,0,0,0,5751.83167681015,0,0,7870.66498042288,0,6050.23240778337,2993.58203141984,5727.0861484196,4428.5012765378,0,7294.1259019274,7384.03323185818,3460.50291161529,7306.93839537641,6809.51803467788,7250.2815579688,6307.13166026168,4373.15224503851,5876.59501729774,4892.85783429271,4162.83330354427,0,2670.86869685761,7079.13304896293,0,4447.92774212576,0,4870.25945762634,0,0,2216.53263893474,2852.90659643856,0,0,3251.71620891594,2456.47764652792,2112.34423862744,1063.53480236309,1042.75967043419,2550.62390117685],"Archive229_field28":[9035792.56397442,8418538.15007921,2310140.59565322,2918743.00450035,5683039.07609449,8327786.05320349,5334010.86973595,2832937.2721148,5944773.4638936,3993215.15922941,7243584.29218403,4339636.38830489,5502001.01270033,3804464.6664052,2655054.91780611,3263722.62413879,3082607.67891111,3822833.18146304,4421785.52732081,2970240.64964407,4911075.73840606,5549319.4401582,5184078.9203911,6099813.21756864,6905677.33186138,6883312.40527277,6704566.8282481,3412545.44771172,4379381.36172831,3548004.11729835,7428959.56742205,6215566.87267553,8607842.18523391,6117004.53985587,5785802.21403668,4843701.99421965,8300565.77392521,5147494.97909637,4713782.11219048,6540846.71755331,7763330.49526802,7604819.03611761,8110983.80387985,7451818.32626098],"Archive229_field29":[-903.451225037107,-842.360305945734,-239.630933286243,-299.947301652945,-572.750042671236,-821.481853126724,-537.114743613203,-296.138185499831,-597.258649702539,-405.788635305165,-722.943800700867,-440.783485399561,-554.037599026443,-386.008252988191,-278.473141014134,-333.664272085561,-314.461638519501,-389.911187906762,-448.936627310082,-308.556268369541,-497.313022702874,-558.531125439298,-523.557896428255,-613.698332562405,-690.960475948964,-690.636253048329,-671.594857203253,-347.602376804859,-441.464508729477,-360.966379154158,-742.419768113957,-624.62560397096,-852.763213332382,-614.984240891301,-581.339360540174,-488.853079790011,-822.43345047708,-517.688295885141,-475.508723491668,-654.863942632299,-770.722568763118,-759.386366548225,-809.512219675345,-741.63764224398],"Archive229_field30":[104.433838444856,97.3720746240434,27.6999770210924,34.6722071703514,66.2066570590523,94.958643872882,62.0874185637945,34.2318949432739,69.0397130517657,46.9068651497791,83.5682037887589,50.9520713766123,64.0436046857175,44.6203651218629,32.1899159732805,38.5696977547104,36.34998220618,45.0715222662124,51.8945283477303,35.6673549042218,57.4865653287947,64.5630308577596,60.5203239055562,70.9400471664285,79.871112814166,79.8336344854121,77.6325571031024,40.1808636219357,51.0307938116953,41.7256665107315,85.8195151800212,72.2031777763596,98.5745917265349,71.0886908772932,67.1995334975556,56.5086439015716,95.0686431303931,59.8418313673118,54.9661119848602,75.6985582541152,89.0911584393572,87.7807577471231,93.5750221216866,85.7291058646258],"Archive229_field31":[1007.88506348196,939.732380569777,267.330910307335,334.619508823297,638.956699730288,916.440496999606,599.202162176997,330.370080443105,666.298362754305,452.695500454944,806.512004489626,491.735556776174,618.081203712161,430.628618110054,310.663056987414,372.233969840271,350.811620725681,434.982710172975,500.831155657812,344.223623273763,554.799588031669,623.094156297057,584.078220333811,684.638379728833,770.83158876313,770.469887533741,749.227414306356,387.783240426794,492.495302541172,402.692045664889,828.239283293978,696.82878174732,951.337805058917,686.072931768594,648.53889403773,545.361723691582,917.502093607473,577.530127252452,530.474835476528,730.562500886414,859.813727202476,847.167124295348,903.087241797032,827.366748108606],"Archive229_field32":[7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive230.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive230.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive230.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive230_field1":[0,0,0,0,312.173938522383,0,0,181.294912409067,0,-32.5183293600285,842.559701754032,465.224384730622,-548.651853192994,0,0,0,0,312.173938522383,0,0,181.294912409067,0,-32.5183293600285,842.559701754032,465.224384730622,-548.651853192994,0,0,0,0,312.173938522383,0,0,181.294912409067,0,-32.5183293600285,842.559701754032,465.224384730622,-548.651853192994],"Archive230_field2":[0,0,0,0,5482.07459156493,0,0,8287.62643518887,0,4103.87945949676,2049.23628916461,4043.11375376624,1884.58102520375,0,0,0,0,5482.07459156493,0,0,8287.62643518887,0,4103.87945949676,2049.23628916461,4043.11375376624,1884.58102520375,0,0,0,0,5482.07459156493,0,0,8287.62643518887,0,4103.87945949676,2049.23628916461,4043.11375376624,1884.58102520375],"Archive230_field3":[0,0,0,0,3.45941625521369,0,0,5.21159901193851,0,2.5730140731571,1.3386988793366,2.56611729593936,1.14808878899587,0,0,0,0,1.27830683128384,0,0,5.19888763747469,0,2.02503938791471,-2.88939238760049,1.50071587220351,-2.41701754326326,0,0,0,0,-0.902802592646014,0,0,5.18617626301087,0,1.47706470267233,-7.11748365453758,0.435314448467658,-5.98212387552239],"Archive230_field4":[0,0,0,0,5490.95678028294,0,0,8289.61078309899,0,4104.0090984579,2215.6890603069,4069.7922722173,1962.82088196503,0,0,0,0,5490.95583932731,0,0,8289.61077511721,0,4104.0087914877,2215.69053986277,4069.79173990388,1962.82203435358,0,0,0,0,5490.95576474869,0,0,8289.61076715493,0,4104.00855768405,2215.70008765233,4069.79148649416,1962.82966208894],"Archive230_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,6949232.325,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,3474616.1625,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive230_field6":[-894.159967395009,-832.892895590658,-213.087494244276,-275.331379680578,-553.142336368537,-858.090640550203,-523.09320355265,-252.686602089727,-584.913784075038,-380.565880444436,-723.934287245774,-411.341731732801,-692.960478847115,-894.159967395009,-832.892895590658,-213.087494244276,-275.331379680578,-553.142336368537,-858.090640550203,-523.09320355265,-252.686602089727,-584.913784075038,-380.565880444436,-723.934287245774,-411.341731732801,-692.960478847115,-894.159967395009,-832.892895590658,-213.087494244276,-275.331379680578,-553.142336368537,-858.090640550203,-523.09320355265,-252.686602089727,-584.913784075038,-380.565880444436,-723.934287245774,-411.341731732801,-692.960478847115],"Archive230_field7":[103.359821749041,96.2776956735112,24.6317059867974,31.8267461789982,63.9401173991985,99.1904121028588,60.466608044254,29.2091383004483,67.6127165888267,43.9912577176775,83.6826984166326,47.5487716070631,80.1023018078454,103.359821749041,96.2776956735112,24.6317059867974,31.8267461789982,63.9401173991985,99.1904121028589,60.466608044254,29.2091383004483,67.6127165888267,43.9912577176775,83.6826984166326,47.5487716070631,80.1023018078454,103.359821749041,96.2776956735112,24.6317059867974,31.8267461789982,63.9401173991985,99.1904121028588,60.466608044254,29.2091383004483,67.6127165888267,43.9912577176775,83.6826984166326,47.5487716070631,80.1023018078454],"Archive230_field8":[997.51978914405,929.17059126417,237.719200231073,307.158125859577,617.082453767736,957.281052653062,583.559811596905,281.895740390175,652.526500663865,424.557138162114,807.616985662407,458.890503339864,773.062780654961,997.51978914405,929.17059126417,237.719200231073,307.158125859577,617.082453767736,957.281052653062,583.559811596905,281.895740390175,652.526500663865,424.557138162114,807.616985662407,458.890503339864,773.062780654961,997.51978914405,929.17059126417,237.719200231073,307.158125859577,617.082453767736,957.281052653062,583.559811596905,281.895740390175,652.526500663865,424.557138162114,807.616985662407,458.890503339864,773.062780654961],"Archive230_field9":[3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6],"Archive230_field10":[0,0,0,0,306.562622452846,0,0,178.45824115985,0,-44.3486604669147,839.81622509151,470.160961990935,-550.970145512379,0,0,0,0,306.562622452846,0,0,178.45824115985,0,-44.3486604669147,839.81622509151,470.160961990935,-550.970145512379,0,0,0,0,306.562622452846,0,0,178.45824115985,0,-44.3486604669147,839.81622509151,470.160961990935,-550.970145512379],"Archive230_field11":[0,0,0,0,5423.70962104137,0,0,8276.39964945084,0,4068.44754469653,2020.71558386447,4010.18629855844,1859.33691856277,0,0,0,0,5423.70962104136,0,0,8276.39964945084,0,4068.44754469653,2020.71558386447,4010.18629855844,1859.33691856277,0,0,0,0,5423.70962104137,0,0,8276.39964945084,0,4068.44754469653,2020.71558386447,4010.18629855844,1859.33691856277],"Archive230_field12":[0,0,0,0,3.37243821260123,0,0,4.87811947578945,0,2.49484390114358,1.2937907314014,2.48118521177605,1.1071167058474,0,0,0,0,1.19798933343456,0,0,4.81940094027708,0,1.92667490348964,-2.87565609222176,1.39871648004941,-2.41252124940584,0,0,0,0,-0.976459545732117,0,0,4.76068240476472,0,1.35850590583569,-7.04510291584492,0.316247748322784,-5.93215920465908],"Archive230_field13":[0,0,0,0,5432.36763006715,0,0,8278.3248485015,0,4068.69001668578,2188.28344523605,4037.65422437412,1939.25323351125,0,0,0,0,5432.36671534979,0,0,8278.32481410903,0,4068.68970796602,2188.28495223946,4037.65370428593,1939.25441812961,0,0,0,0,5432.3666710132,0,0,8278.32478013304,0,4068.68947858776,2188.29440347381,4037.65347440054,1939.26199067822],"Archive230_field14":[8973458.59358837,8358604.92977648,2138467.24986268,2763123.8538638,5551131.82513019,8611480.17502484,5249569.84636909,2535869.24452973,5869978.31887698,3819218.3667646,7265136.65111231,4128073.42322965,6954294.97033247,4486729.29679419,4179302.46488824,1069233.62493134,1381561.9269319,2775565.91256509,4305740.08751242,2624784.92318454,1267934.62226486,2934989.15943849,1909609.1833823,3632568.32555616,2064036.71161482,3477147.48516624,-3.83512741564118e-10,-3.83512741564118e-10,-6.39187902606864e-11,-1.91756370782059e-10,-1.27837580521373e-10,-3.83512741564118e-10,1.27837580521373e-10,0,-3.83512741564118e-10,1.27837580521373e-10,3.83512741564118e-10,-1.91756370782059e-10,1.27837580521373e-10],"Archive230_field15":[-889.884857675516,-830.055988616073,-217.625609121076,-279.347726642388,-552.812144357552,-849.295701313059,-524.060620656481,-264.835573348047,-584.966472564205,-380.483141433313,-721.903772339772,-410.681406134455,-691.326309959103,-889.884857675516,-830.055988616073,-217.625609121076,-279.347726642388,-552.812144357552,-849.295701313058,-524.060620656481,-264.835573348047,-584.966472564205,-380.483141433313,-721.903772339772,-410.681406134455,-691.326309959103,-889.884857675516,-830.055988616073,-217.625609121076,-279.347726642388,-552.812144357552,-849.295701313059,-524.060620656481,-264.835573348047,-584.966472564205,-380.483141433313,-721.903772339772,-410.681406134455,-691.326309959103],"Archive230_field16":[102.865643308184,95.9497653143989,25.1562863324254,32.2910131124244,63.9019490751369,98.1737670002009,60.5784359755583,30.6134904851614,67.6188070793956,43.9816935571769,83.447982407869,47.4724417123798,79.9134011512159,102.865643308184,95.9497653143989,25.1562863324254,32.2910131124244,63.9019490751369,98.1737670002009,60.5784359755583,30.6134904851614,67.6188070793956,43.9816935571769,83.447982407869,47.4724417123798,79.9134011512159,102.865643308184,95.9497653143989,25.1562863324254,32.2910131124244,63.9019490751369,98.1737670002009,60.5784359755583,30.6134904851614,67.6188070793956,43.9816935571769,83.447982407869,47.4724417123798,79.9134011512159],"Archive230_field17":[992.7505009837,926.005753930472,242.781895453502,311.638739754812,616.714093432689,947.469468313259,584.639056632039,295.449063833209,652.5852796436,424.46483499049,805.351754747641,458.153847846835,771.239711110319,992.7505009837,926.005753930472,242.781895453502,311.638739754812,616.714093432689,947.469468313259,584.639056632039,295.449063833209,652.5852796436,424.46483499049,805.351754747641,458.153847846835,771.239711110319,992.7505009837,926.005753930472,242.781895453502,311.638739754812,616.714093432689,947.469468313259,584.639056632039,295.449063833209,652.5852796436,424.46483499049,805.351754747641,458.153847846835,771.239711110319],"Archive230_field18":[1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2],"Archive230_field19":[0,0,0,0,299.844626021978,0,0,176.369946039133,0,-54.2008753374906,832.756435057587,471.972939255602,-550.127465791187,0,0,0,0,299.844626021978,0,0,176.369946039133,0,-54.2008753374906,832.756435057587,471.972939255602,-550.127465791188,0,0,0,0,299.844626021978,0,0,176.369946039133,0,-54.2008753374906,832.756435057587,471.972939255602,-550.127465791187],"Archive230_field20":[0,0,0,0,5339.66952355326,0,0,8240.84785478473,0,4016.45484234626,1981.68299299661,3961.43014893321,1824.39837786357,0,0,0,0,5339.66952355326,0,0,8240.84785478473,0,4016.45484234626,1981.68299299661,3961.43014893321,1824.39837786357,0,0,0,0,5339.66952355326,0,0,8240.84785478473,0,4016.45484234626,1981.68299299661,3961.43014893321,1824.39837786357],"Archive230_field21":[0,0,0,0,3.27073670099582,0,0,4.55826115554448,0,2.41025269829182,1.24452238082715,2.3909107081974,1.06266197450541,0,0,0,0,1.11654761862907,0,0,4.44829654895417,0,1.8247501175338,-2.83454303658076,1.29708767238258,-2.38366622098961,0,0,0,0,-1.03764146373767,0,0,4.33833194236385,0,1.23924753677577,-6.91360845398868,0.203264636567754,-5.82999441648464],"Archive230_field22":[0,0,0,0,5348.08265813425,0,0,8242.73622660101,0,4016.82126124777,2149.54700197455,3989.44770572577,1905.53687946981,0,0,0,0,5348.08177454275,0,0,8242.73616652371,0,4016.82095259511,2149.54851061707,3989.44720013977,1905.53807404463,0,0,0,0,5348.08175865118,0,0,8242.73610791343,0,4016.82072928685,2149.55775982961,3989.44699445714,1905.5455015832],"Archive230_field23":[8930555.17423414,8330134.78103513,2184010.09166375,2803430.42592415,5547818.14027898,8523217.41896837,5259278.4864788,2657791.82495886,5870507.08105951,3818388.0286624,7244759.15480619,4121446.63984512,6937895.05601487,4465277.58711707,4165067.39051756,1092005.04583187,1401715.21296207,2773909.07013949,4261608.70948419,2629639.2432394,1328895.91247943,2935253.54052976,1909194.0143312,3622379.57740309,2060723.31992256,3468947.52800744,1.27837580521373e-10,5.11350322085491e-10,6.39187902606864e-11,-1.27837580521373e-10,-4.47431531824805e-10,1.27837580521373e-10,5.11350322085491e-10,-1.91756370782059e-10,1.27837580521373e-10,-2.55675161042745e-10,1.27837580521373e-10,1.27837580521373e-10,-3.83512741564118e-10],"Archive230_field24":[-881.454955604687,-823.011783965202,-217.635596300549,-278.828294720702,-548.159125829991,-836.560391655207,-520.667873075383,-271.865088998807,-580.679295459783,-376.298412518536,-715.624391170687,-405.942786110949,-685.435939147306,-881.454955604687,-823.011783965202,-217.635596300549,-278.828294720702,-548.159125829991,-836.560391655207,-520.667873075383,-271.865088998807,-580.679295459783,-376.298412518536,-715.624391170687,-405.942786110949,-685.435939147306,-881.454955604687,-823.011783965202,-217.635596300549,-278.828294720702,-548.159125829991,-836.560391655207,-520.667873075383,-271.865088998807,-580.679295459783,-376.298412518536,-715.624391170687,-405.942786110949,-685.435939147306],"Archive230_field25":[101.891194431949,95.1354952020844,25.1574407937385,32.2309697278019,63.3640865190612,96.7016374214307,60.1862535943191,31.4260626323593,67.1232337172704,43.4979626248253,82.7221215529911,46.9246841087902,79.232507687693,101.891194431949,95.1354952020844,25.1574407937385,32.2309697278019,63.3640865190612,96.7016374214307,60.1862535943191,31.4260626323593,67.1232337172704,43.4979626248253,82.7221215529911,46.9246841087902,79.232507687693,101.891194431949,95.1354952020844,25.1574407937385,32.2309697278019,63.3640865190612,96.7016374214307,60.1862535943191,31.4260626323593,67.1232337172704,43.4979626248253,82.7221215529911,46.9246841087902,79.232507687693],"Archive230_field26":[983.346150036636,918.147279167286,242.793037094288,311.059264448504,611.523212349052,933.262029076638,580.854126669702,303.291151631166,647.802529177053,419.796375143362,798.346512723678,452.867470219739,764.668446834999,983.346150036636,918.147279167286,242.793037094288,311.059264448504,611.523212349053,933.262029076637,580.854126669702,303.291151631166,647.802529177053,419.796375143362,798.346512723678,452.867470219739,764.668446834999,983.346150036636,918.147279167286,242.793037094288,311.059264448504,611.523212349052,933.262029076638,580.854126669702,303.291151631166,647.802529177053,419.796375143362,798.346512723678,452.867470219739,764.668446834999],"Archive230_field27":[-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6],"Archive230_field28":[0,0,0,0,292.338955532804,0,0,174.168604603325,0,-56.8016840719731,819.952428066365,465.625601193508,-544.547769755712,0,0,0,0,292.338955532804,0,0,174.168604603325,0,-56.8016840719731,819.952428066365,465.625601193508,-544.547769755712,0,0,0,0,292.338955532804,0,0,174.168604603325,0,-56.8016840719731,819.952428066365,465.625601193508,-544.547769755712],"Archive230_field29":[0,0,0,0,5221.70415543921,0,0,8128.17116361669,0,3935.64534179216,1931.61892851226,3883.48270276945,1779.01182323913,0,0,0,0,5221.70415543921,0,0,8128.17116361669,0,3935.64534179216,1931.61892851226,3883.48270276945,1779.01182323913,0,0,0,0,5221.70415543921,0,0,8128.17116361669,0,3935.64534179216,1931.61892851226,3883.48270276945,1779.01182323913],"Archive230_field30":[0,0,0,0,3.15067665001125,0,0,4.22544414475576,0,2.31314630112246,1.1909110785957,2.28793688995246,1.0147306580837,0,0,0,0,1.05025400743515,0,0,4.07541308585756,0,1.72891049997124,-2.75289868816295,1.20816567890758,-2.31826148813171,0,0,0,0,-1.05016863514096,0,0,3.92538202695935,0,1.14467469882003,-6.6967084549216,0.128394467862711,-5.65125363434712],"Archive230_field31":[0,0,0,0,5229.88205207503,0,0,8130.03807016041,0,3936.0558987811,2098.44587434319,3911.29778179206,1860.48820755436,0,0,0,0,5229.88120848712,0,0,8130.03799356874,0,3936.05559879624,2098.44734213893,3911.29729921679,1860.48937516635,0,0,0,0,5229.88120846997,0,0,8130.03791974573,0,3936.05538553053,2098.45622188858,3911.29711472824,1860.49651368611],"Archive230_field32":[8845955.79611507,8259441.7495147,2184110.31930168,2798217.59934792,5501122.16795324,8395410.56330674,5225230.12707151,2728337.44310909,5827482.55789506,3776391.6376234,7181741.60876428,4073891.60257863,6878781.47398488,4422977.89805753,4129720.87475735,1092055.15965084,1399108.79967396,2750561.08397662,4197705.28165337,2612615.06353575,1364168.72155455,2913741.27894753,1888195.8188117,3590870.80438214,2036945.80128931,3439390.73699244,-5.11350322085491e-10,-5.11350322085491e-10,3.19593951303432e-11,-1.27837580521373e-10,0,5.11350322085491e-10,4.47431531824805e-10,-9.58781853910296e-11,2.55675161042745e-10,6.39187902606864e-11,-1.27837580521373e-10,1.91756370782059e-10,-1.27837580521373e-10],"Archive230_field33":[-873.198808959729,-816.084218363371,-217.425799871112,-278.085812058961,-543.506278224647,-824.227549765285,-517.231484965198,-278.069444686363,-576.373290944653,-372.307420965208,-709.416642624075,-401.420845557774,-679.609048479627,-873.198808959729,-816.084218363371,-217.425799871112,-278.085812058961,-543.506278224647,-824.227549765285,-517.231484965198,-278.069444686363,-576.373290944653,-372.307420965208,-709.416642624075,-401.420845557774,-679.609048479627,-873.198808959729,-816.084218363371,-217.425799871112,-278.085812058961,-543.506278224647,-824.227549765285,-517.231484965198,-278.069444686363,-576.373290944653,-372.307420965208,-709.416642624075,-401.420845557774,-679.609048479627],"Archive230_field34":[100.936830697635,94.334707902418,25.1331895161809,32.1451429424753,62.8262437206244,95.2760308343732,59.7890266153883,32.1432509670169,66.6254840132315,43.0366266328375,82.0045410230664,46.4019734232542,78.5589521688555,100.936830697635,94.334707902418,25.1331895161809,32.1451429424753,62.8262437206244,95.2760308343732,59.7890266153883,32.1432509670169,66.6254840132315,43.0366266328375,82.0045410230664,46.4019734232542,78.5589521688555,100.936830697635,94.334707902418,25.1331895161809,32.1451429424753,62.8262437206244,95.2760308343732,59.7890266153883,32.1432509670169,66.6254840132315,43.0366266328375,82.0045410230664,46.4019734232542,78.5589521688555],"Archive230_field35":[974.135639657364,910.418926265789,242.558989387293,310.230955001436,606.332521945271,919.503580599658,577.020511580587,310.21269565338,642.998774957885,415.344047598045,791.421183647141,447.822818981028,758.168000648483,974.135639657364,910.418926265789,242.558989387293,310.230955001436,606.332521945271,919.503580599658,577.020511580587,310.21269565338,642.998774957885,415.344047598045,791.421183647141,447.822818981028,758.168000648483,974.135639657364,910.418926265789,242.558989387293,310.230955001436,606.332521945271,919.503580599658,577.020511580587,310.21269565338,642.998774957885,415.344047598045,791.421183647141,447.822818981028,758.168000648483],"Archive230_field36":[-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive231.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive231.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive231.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive231_field1":[0,0,0,0,312.173938522383,0,0,181.294912409067,0,-32.5183293600285,842.559701754032,465.224384730622,-548.651853192994,0,0,0,0,312.173938522383,0,0,181.294912409067,0,-32.5183293600285,842.559701754032,465.224384730622,-548.651853192994,0,0,0,0,312.173938522383,0,0,181.294912409067,0,-32.5183293600285,842.559701754032,465.224384730622,-548.651853192994],"Archive231_field2":[0,0,0,0,5482.07459156493,0,0,8287.62643518887,0,4103.87945949676,2049.23628916461,4043.11375376624,1884.58102520375,0,0,0,0,5482.07459156493,0,0,8287.62643518887,0,4103.87945949676,2049.23628916461,4043.11375376624,1884.58102520375,0,0,0,0,5482.07459156493,0,0,8287.62643518887,0,4103.87945949676,2049.23628916461,4043.11375376624,1884.58102520375],"Archive231_field3":[0,0,0,0,3.45941625521368,0,0,5.21159901193851,0,2.5730140731571,1.3386988793366,2.56611729593936,1.14808878899587,0,0,0,0,1.27830683128384,0,0,5.19888763747468,0,2.02503938791471,-2.88939238760049,1.50071587220351,-2.41701754326326,0,0,0,0,-0.902802592646021,0,0,5.18617626301087,0,1.47706470267233,-7.11748365453758,0.43531444846766,-5.98212387552239],"Archive231_field4":[0,0,0,0,5490.95678028294,0,0,8289.61078309899,0,4104.0090984579,2215.6890603069,4069.7922722173,1962.82088196503,0,0,0,0,5490.95583932731,0,0,8289.61077511721,0,4104.0087914877,2215.69053986277,4069.79173990388,1962.82203435358,0,0,0,0,5490.95576474869,0,0,8289.61076715493,0,4104.00855768405,2215.70008765233,4069.79148649416,1962.82966208894],"Archive231_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,6949232.325,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,3474616.1625,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive231_field6":[-894.159967395009,-832.892895590658,-213.087494244276,-275.331379680578,-553.142336368537,-858.090640550203,-523.09320355265,-252.686602089727,-584.913784075038,-380.565880444436,-723.934287245774,-411.341731732801,-692.960478847115,-894.159967395009,-832.892895590658,-213.087494244276,-275.331379680578,-553.142336368537,-858.090640550203,-523.09320355265,-252.686602089727,-584.913784075038,-380.565880444436,-723.934287245774,-411.341731732801,-692.960478847115,-894.159967395009,-832.892895590658,-213.087494244276,-275.331379680578,-553.142336368537,-858.090640550203,-523.09320355265,-252.686602089727,-584.913784075038,-380.565880444436,-723.934287245774,-411.341731732801,-692.960478847115],"Archive231_field7":[103.359821749041,96.2776956735112,24.6317059867974,31.8267461789982,63.9401173991985,99.1904121028588,60.466608044254,29.2091383004483,67.6127165888267,43.9912577176775,83.6826984166326,47.5487716070631,80.1023018078454,103.359821749041,96.2776956735112,24.6317059867974,31.8267461789982,63.9401173991985,99.1904121028589,60.466608044254,29.2091383004483,67.6127165888267,43.9912577176775,83.6826984166326,47.5487716070631,80.1023018078454,103.359821749041,96.2776956735112,24.6317059867974,31.8267461789982,63.9401173991985,99.1904121028588,60.466608044254,29.2091383004483,67.6127165888267,43.9912577176775,83.6826984166326,47.5487716070631,80.1023018078454],"Archive231_field8":[997.51978914405,929.17059126417,237.719200231073,307.158125859577,617.082453767736,957.281052653062,583.559811596905,281.895740390175,652.526500663865,424.557138162114,807.616985662407,458.890503339864,773.062780654961,997.51978914405,929.17059126417,237.719200231073,307.158125859577,617.082453767736,957.281052653062,583.559811596905,281.895740390175,652.526500663865,424.557138162114,807.616985662407,458.890503339864,773.062780654961,997.51978914405,929.17059126417,237.719200231073,307.158125859577,617.082453767736,957.281052653062,583.559811596905,281.895740390175,652.526500663865,424.557138162114,807.616985662407,458.890503339864,773.062780654961],"Archive231_field9":[3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6],"Archive231_field10":[0,0,0,0,306.562622452846,0,0,178.45824115985,0,-44.3486604669147,839.81622509151,470.160961990935,-550.970145512379,0,0,0,0,306.562622452846,0,0,178.45824115985,0,-44.3486604669147,839.81622509151,470.160961990935,-550.970145512379,0,0,0,0,306.562622452846,0,0,178.45824115985,0,-44.3486604669147,839.81622509151,470.160961990935,-550.970145512379],"Archive231_field11":[0,0,0,0,5423.70962104137,0,0,8276.39964945084,0,4068.44754469653,2020.71558386447,4010.18629855844,1859.33691856277,0,0,0,0,5423.70962104136,0,0,8276.39964945084,0,4068.44754469653,2020.71558386447,4010.18629855844,1859.33691856277,0,0,0,0,5423.70962104137,0,0,8276.39964945084,0,4068.44754469653,2020.71558386447,4010.18629855844,1859.33691856277],"Archive231_field12":[0,0,0,0,3.37243821260124,0,0,4.87811947578945,0,2.49484390114358,1.29379073140139,2.48118521177605,1.1071167058474,0,0,0,0,1.19798933343456,0,0,4.81940094027708,0,1.92667490348964,-2.87565609222175,1.39871648004942,-2.41252124940584,0,0,0,0,-0.976459545732116,0,0,4.76068240476472,0,1.35850590583569,-7.04510291584491,0.316247748322783,-5.93215920465908],"Archive231_field13":[0,0,0,0,5432.36763006715,0,0,8278.3248485015,0,4068.69001668578,2188.28344523605,4037.65422437412,1939.25323351125,0,0,0,0,5432.36671534979,0,0,8278.32481410903,0,4068.68970796602,2188.28495223946,4037.65370428593,1939.25441812961,0,0,0,0,5432.3666710132,0,0,8278.32478013304,0,4068.68947858776,2188.29440347381,4037.65347440054,1939.26199067822],"Archive231_field14":[8973458.59358837,8358604.92977648,2138467.24986268,2763123.8538638,5551131.82513019,8611480.17502484,5249569.84636909,2535869.24452973,5869978.31887698,3819218.3667646,7265136.65111231,4128073.42322965,6954294.97033247,4486729.29679419,4179302.46488824,1069233.62493134,1381561.9269319,2775565.91256509,4305740.08751242,2624784.92318454,1267934.62226486,2934989.15943849,1909609.1833823,3632568.32555616,2064036.71161482,3477147.48516624,-3.83512741564118e-10,-3.83512741564118e-10,-6.39187902606864e-11,-1.91756370782059e-10,-1.27837580521373e-10,-3.83512741564118e-10,1.27837580521373e-10,0,-3.83512741564118e-10,1.27837580521373e-10,3.83512741564118e-10,-1.91756370782059e-10,1.27837580521373e-10],"Archive231_field15":[-893.094027015816,-833.268835420292,-220.859306948921,-282.57582641292,-556.018463904444,-852.489080859529,-527.283526589901,-268.055138301502,-588.184799829283,-383.701161760342,-725.114115395094,-413.895797638045,-694.53851903081,-893.094027015816,-833.268835420292,-220.859306948921,-282.57582641292,-556.018463904444,-852.489080859528,-527.283526589901,-268.055138301502,-588.184799829282,-383.701161760342,-725.114115395095,-413.895797638045,-694.53851903081,-893.094027015816,-833.268835420292,-220.859306948921,-282.57582641292,-556.018463904444,-852.489080859529,-527.283526589901,-268.055138301502,-588.184799829283,-383.701161760342,-725.114115395094,-413.895797638045,-694.53851903081],"Archive231_field16":[103.236605085798,96.321152185988,25.5300834641065,32.6641631404248,64.2725814327929,98.5429035671865,60.9509856254411,30.9856539367058,67.9908274611821,44.3536784586655,83.8190798602836,47.8440071424566,80.2847143045429,103.236605085798,96.321152185988,25.5300834641065,32.6641631404248,64.2725814327929,98.5429035671865,60.9509856254411,30.9856539367058,67.9908274611821,44.3536784586655,83.8190798602836,47.8440071424566,80.2847143045429,103.236605085798,96.321152185988,25.5300834641065,32.6641631404248,64.2725814327929,98.5429035671865,60.9509856254411,30.9856539367058,67.9908274611821,44.3536784586655,83.8190798602836,47.8440071424566,80.2847143045429],"Archive231_field17":[996.330632101614,929.58998760628,246.389390413028,315.239989553345,620.291045337237,951.031984426715,588.234512215342,299.040792238208,656.175627290465,428.054840219007,808.933195255378,461.739804780501,774.823233335352,996.330632101614,929.58998760628,246.389390413028,315.239989553345,620.291045337237,951.031984426715,588.234512215342,299.040792238208,656.175627290465,428.054840219007,808.933195255378,461.739804780501,774.823233335352,996.330632101614,929.58998760628,246.389390413028,315.239989553345,620.291045337237,951.031984426715,588.234512215342,299.040792238208,656.175627290465,428.054840219007,808.933195255378,461.739804780501,774.823233335352],"Archive231_field18":[4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8,4.8],"Archive231_field19":[0,0,0,0,299.874686139923,0,0,176.477209685595,0,-59.3596795267581,835.030921469118,477.112946206241,-552.217964345921,0,0,0,0,299.874686139923,0,0,176.477209685595,0,-59.3596795267581,835.030921469118,477.112946206241,-552.217964345921,0,0,0,0,299.874686139923,0,0,176.477209685595,0,-59.3596795267581,835.030921469118,477.112946206241,-552.217964345921],"Archive231_field20":[0,0,0,0,5355.133857305,0,0,8285.79707185656,0,4031.05293416155,1986.09911138998,3976.50266094152,1828.64795203493,0,0,0,0,5355.13385730501,0,0,8285.79707185656,0,4031.05293416155,1986.09911138998,3976.50266094152,1828.64795203493,0,0,0,0,5355.133857305,0,0,8285.79707185656,0,4031.05293416155,1986.09911138998,3976.50266094152,1828.64795203493],"Archive231_field21":[0,0,0,0,3.28011369619882,0,0,4.58294359896906,0,2.41853894575332,1.24728853804952,2.4001009830397,1.06505743839241,0,0,0,0,1.10337416865993,0,0,4.46400565713178,0,1.81953581380452,-2.85888711857344,1.28824464507999,-2.40570191173564,0,0,0,0,-1.07336535887898,0,0,4.34506771529452,0,1.22053268185573,-6.9650627751964,0.176388307120288,-5.87646126186369],"Archive231_field22":[0,0,0,0,5363.5244211421,0,0,8287.67749884714,0,4031.49068942204,2154.49944901416,4005.02383718216,1910.20918932332,0,0,0,0,5363.5235316419,0,0,8287.67743392995,0,4031.49037457322,2154.50098475475,4005.02332521133,1910.21040726659,0,0,0,0,5363.5235255525,0,0,8287.67737071965,0,4031.49014872491,2154.51034626736,4005.02312190896,1910.21793139549],"Archive231_field23":[8962761.21034073,8362377.72280895,2216462.28659581,2835826.44082429,5579995.57691336,8555264.99454631,5291622.37795141,2690102.1875927,5902805.02271074,3850682.88999694,7276976.96988247,4153705.08365029,6970131.59774116,4481380.60517037,4181188.86140447,1108231.1432979,1417913.22041215,2789997.78845668,4277632.49727316,2645811.1889757,1345051.09379635,2951402.51135537,1925341.44499847,3638488.48494124,2076852.54182515,3485065.79887058,3.83512741564118e-10,0,0,1.27837580521373e-10,-1.27837580521373e-10,2.55675161042745e-10,5.11350322085491e-10,-9.58781853910296e-11,-2.55675161042745e-10,1.91756370782059e-10,3.83512741564118e-10,1.27837580521373e-10,5.11350322085491e-10],"Archive231_field24":[-894.263539175441,-835.840276062037,-230.58257203995,-291.746749127715,-560.951234127773,-849.281631734248,-533.550330886183,-284.772959044732,-593.537345698591,-389.142725297622,-728.44274539182,-418.769471413704,-698.263127958065,-894.263539175441,-835.840276062037,-230.58257203995,-291.746749127715,-560.951234127773,-849.281631734248,-533.550330886183,-284.772959044732,-593.537345698591,-389.142725297622,-728.44274539182,-418.769471413704,-698.263127958065,-894.263539175441,-835.840276062037,-230.58257203995,-291.746749127715,-560.951234127773,-849.281631734248,-533.550330886183,-284.772959044732,-593.537345698591,-389.142725297622,-728.44274539182,-418.769471413704,-698.263127958065],"Archive231_field25":[103.371794059538,96.6183961423948,26.6540377712483,33.7242698010227,64.8427816985212,98.1721406366743,61.6753926651422,32.9181392134586,68.6095514111785,44.9826923462901,84.2038506123587,48.4073761939506,80.7152579755234,103.371794059538,96.6183961423948,26.6540377712483,33.7242698010227,64.8427816985212,98.1721406366743,61.6753926651422,32.9181392134586,68.6095514111785,44.9826923462901,84.2038506123587,48.4073761939505,80.7152579755234,103.371794059538,96.6183961423948,26.6540377712483,33.7242698010227,64.8427816985212,98.1721406366743,61.6753926651422,32.9181392134586,68.6095514111785,44.9826923462901,84.2038506123587,48.4073761939506,80.7152579755234],"Archive231_field26":[997.63533323498,932.458672204432,257.236609811198,325.471018928738,625.794015826294,947.453772370922,595.225723551325,317.69109825819,662.14689710977,434.125417643912,812.646596004179,467.176847607655,778.978385933589,997.63533323498,932.458672204432,257.236609811198,325.471018928738,625.794015826294,947.453772370922,595.225723551325,317.69109825819,662.14689710977,434.125417643912,812.646596004179,467.176847607655,778.978385933589,997.63533323498,932.458672204432,257.236609811198,325.471018928738,625.794015826294,947.453772370922,595.225723551325,317.69109825819,662.14689710977,434.125417643912,812.646596004179,467.176847607655,778.978385933589],"Archive231_field27":[7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2],"Archive231_field28":[0,0,0,0,292.983854344097,0,0,175.295976551401,0,-78.1038947171474,830.510327545716,487.768357859753,-553.954367425816,0,0,0,0,292.983854344097,0,0,175.295976551401,0,-78.1038947171474,830.510327545716,487.768357859753,-553.954367425816,0,0,0,0,292.983854344097,0,0,175.295976551401,0,-78.1038947171474,830.510327545716,487.768357859753,-553.954367425816],"Archive231_field29":[0,0,0,0,5294.26593744587,0,0,8333.30051723524,0,4003.73579683187,1952.57501336317,3953.58323521267,1799.10816443401,0,0,0,0,5294.26593744588,0,0,8333.30051723524,0,4003.73579683187,1952.57501336317,3953.58323521267,1799.10816443401,0,0,0,0,5294.26593744587,0,0,8333.30051723524,0,4003.73579683187,1952.57501336317,3953.58323521267,1799.10816443401],"Archive231_field30":[0,0,0,0,3.19409376628552,0,0,4.33008060587662,0,2.35082014195585,1.20374592006054,2.32923668644598,1.02582718020325,0,0,0,0,0.997142439425671,0,0,4.13827705713604,0,1.70837705557443,-2.85426772946488,1.17196029744103,-2.40979012685242,0,0,0,0,-1.19980888743417,0,0,3.94647350839546,0,1.06593396919301,-6.9122813789903,0.0146839084360744,-5.84540743390809],"Archive231_field31":[0,0,0,0,5302.36754266818,0,0,8335.14516607517,0,4004.49823018543,2121.86192669894,3983.55918671072,1882.46027337754,0,0,0,0,5302.36667438221,0,0,8335.14506864069,0,4004.49790457619,2121.86350499144,3983.55867813878,1882.46153629011,0,0,0,0,5302.36671636802,0,0,8335.14497561988,0,4004.49768203431,2121.8728441177,3983.55850577087,1882.4690694169],"Archive231_field32":[8974498.00165523,8388183.74965647,2314041.37744128,2927862.42794858,5629499.0337497,8523076.22188117,5354513.7071513,2857876.05097808,5956521.19261315,3905292.40827858,7310381.86893651,4202615.47040351,7007510.3948298,4487249.00082762,4194091.87482823,1157020.68872064,1463931.21397429,2814749.51687485,4261538.11094058,2677256.85357565,1428938.02548904,2978260.59630658,1952646.20413929,3655190.93446825,2101307.73520176,3503755.1974149,-2.55675161042745e-10,-1.27837580521373e-10,3.19593951303432e-11,0,-2.55675161042746e-10,-1.27837580521373e-10,-1.91756370782059e-10,1.27837580521373e-10,2.55675161042745e-10,1.91756370782059e-10,2.55675161042745e-10,1.27837580521373e-10,-1.27837580521373e-10],"Archive231_field33":[-895.51522888521,-838.453959304132,-240.126818241835,-300.715105889981,-565.776292129229,-846.304002523019,-539.743957033863,-300.760520121597,-598.821056382595,-394.693475131464,-731.767680370972,-423.764805075491,-701.980934678742,-895.51522888521,-838.453959304132,-240.126818241835,-300.715105889981,-565.776292129229,-846.304002523019,-539.743957033863,-300.760520121597,-598.821056382595,-394.693475131464,-731.767680370972,-423.764805075491,-701.980934678742,-895.51522888521,-838.453959304132,-240.126818241835,-300.715105889981,-565.776292129229,-846.304002523019,-539.743957033863,-300.760520121597,-598.821056382595,-394.693475131464,-731.767680370972,-423.764805075491,-701.980934678742],"Archive231_field34":[103.516482292074,96.9205231038583,27.7572985099613,34.7609609861919,65.4005310422009,97.8279435849945,62.3913407258336,34.7662106138378,69.2203184040949,45.6243275506382,84.5881942413556,48.9848084383883,81.1450153499964,103.516482292074,96.9205231038583,27.7572985099613,34.7609609861919,65.4005310422009,97.8279435849945,62.3913407258336,34.7662106138378,69.2203184040949,45.6243275506382,84.5881942413556,48.9848084383883,81.1450153499964,103.516482292074,96.9205231038583,27.7572985099613,34.7609609861919,65.4005310422009,97.8279435849945,62.3913407258336,34.7662106138378,69.2203184040949,45.6243275506382,84.5881942413556,48.9848084383883,81.1450153499964],"Archive231_field35":[999.031711177284,935.374482407991,267.884116751797,335.476066876173,631.17682317143,944.131946108013,602.135297759696,335.526730735435,668.04137478669,440.317802682102,816.355874612328,472.749613513879,783.125950028739,999.031711177284,935.374482407991,267.884116751797,335.476066876173,631.17682317143,944.131946108013,602.135297759696,335.526730735435,668.04137478669,440.317802682102,816.355874612328,472.749613513879,783.125950028739,999.031711177284,935.374482407991,267.884116751797,335.476066876173,631.17682317143,944.131946108013,602.135297759696,335.526730735435,668.04137478669,440.317802682102,816.355874612328,472.749613513879,783.125950028739],"Archive231_field36":[7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2,7.2]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive232.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive232.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive232.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive232_field1":[271.857107122951,271.943895983726,272.837777066048,272.755803245635,272.338082557536,271.90362093706,272.391927910584,272.773564054908,272.302239738644,272.589991178261,272.097771914826,272.543526264533,272.363276092384,272.131045397738,272.168194494547,271.924518021919,272.166624026143,272.294067423179,272.202922703638,272.528360417973,272.397990515807,272.615794481459,272.790774877438,272.561603420138,272.078247791849,271.879909217893,272.742440020831,248.30851752966,248.247694122848,247.87008378978,248.219338333102,248.09051689305,248.342248528699,248.14431267418,247.724643767967,248.187205273021,248.260506580537,248.223611512214,248.189322393726,248.124879451497,248.230850795295,248.233430203107,248.310620832033,248.153598456852,248.163080846841,248.180767029363,248.164659533121,248.108490430786,248.044816282246,247.422718530249,248.089753663512,248.23492176798,248.31104593996,247.276931496381,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive232_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive232_field3":[272.267749383821,272.328765552335,272.938483617781,272.88552455351,272.598574080602,272.29927049839,272.638680483661,272.888266835126,272.576969533918,272.772480163301,272.4352357421,272.740686926837,272.61688439841,272.45838315761,272.484403105876,272.314698029742,272.481571624457,272.569591688789,272.507696628912,272.731247096202,272.641550719199,272.790779157827,272.897512949009,272.750685330513,272.42212728176,272.283842351042,272.864133331382,247.603990661483,247.511640646803,247.087516611851,247.694701671858,247.340418255484,247.685516194407,247.454409102762,246.830150563763,247.505819535694,247.736329619186,247.515536969739,247.576480201583,247.415957168769,247.540086736527,247.556279564597,247.630537767685,247.402428524051,247.464765385697,247.464829463942,247.551665930578,247.391715537302,247.342988562438,246.302677016976,247.408414262195,247.530676524764,247.616752082384,246.025227775894,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5],"Archive232_field4":[-8.71808872966555e-08,-1.53916074058321e-06,3.73878409750008e-11,0.0541631936949279,9.35336568320501e-10,0.0779164091657904,0.00766214908385959,4.32461389028958e-10,0.0137479785742003,-4.78604016198974e-07,-5.90143177245928e-06,-5.59688328533962e-06,-4.18424839640013e-07,-6.27471026717588e-06,0.0200442320048705,0.0292119900152735,-4.56372585912479e-06,-6.48821648064711e-07,-3.16586864263295e-06,0.0439444532952706,-2.16505396574846e-06,-2.39382324497408e-07,2.98943314325692e-11,3.79537584577684e-10,-4.29199116665668e-07,0.00280236917970374,-1.69203850646228e-06,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive232_field5":[272.268417939581,272.330127170156,272.940351635006,272.885525051561,272.607824947003,272.299276542866,272.638682728156,272.888823575743,272.576972488144,272.777530487665,272.438128002618,272.746674838078,272.623253886187,272.461266186451,272.484406853743,272.314704159701,272.488262560838,272.5750427093,272.511405351503,272.731248178761,272.646202361124,272.792958342865,272.897229968343,272.754230825244,272.422694786384,272.283845904552,272.864629085085,246.377261218177,246.249860139912,245.772784899361,246.571113129121,246.053103504729,246.499734629285,246.208269048807,245.476958412544,246.270709240688,246.636172217143,246.273057359787,246.391634588924,246.165486565907,246.312042476766,246.335570436014,246.422766635063,246.118280928173,246.224076010439,246.208420941321,246.378782827403,246.12868710242,246.083549643837,244.797308202273,246.179766113524,246.290703473495,246.398648903551,244.404164610005,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5,260.5],"Archive232_field6":[0.678189129520302,0.533963403826864,-1.46523872811403e-06,0.18805598721066,-0.0683753672470701,0.759475134167733,0.323038189480685,4.3596802680079e-06,0.391720682734214,-0.0178948386606076,0.359438200998018,-0.0518853588785844,0.0401897010324116,0.332074711836566,0.487896863395204,0.686526517142198,0.135757547767171,0.12997507739694,0.252199357891004,0.289824727524146,0.0792714333363848,0.0826820593785863,1.11819719034106e-06,8.63229224606312e-06,0.502182605992052,0.691945831787943,-2.63372169521808e-06,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive232_field7":[272.268419707745,272.330128018478,272.942957698982,272.885525569642,272.607827593791,272.29927987534,272.638684509222,272.888646025349,272.576974416646,272.777532421848,272.43813305626,272.746676718361,272.623256100645,272.461269711788,272.484408907631,272.314707407194,272.488265089087,272.575045071335,272.51140801657,272.731249127992,272.646203444079,272.792958926258,272.896546454809,272.758618391743,272.422696328221,272.283847709608,272.864907659568,244.526370212445,244.36848908117,243.929172895033,244.836059103449,244.176624324784,244.685320687153,244.346721022738,243.677089700364,244.416147206049,244.932978542177,244.416533716816,244.606255784907,244.320166439225,244.470054801463,244.493535157373,244.589618712959,244.23168638289,244.380431192287,244.341896131297,244.594839049542,244.267694981082,244.229494002015,242.923017686022,244.376485554349,244.43061229771,244.555904626711,242.410092643082,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268],"Archive232_field8":[1.00710350096441,0.830642235777141,-1.02289974562516e-05,0.276793558245082,0.0848801962634542,1.08671425255207,0.513674831918066,-6.8792869515419e-06,0.596409498400527,0.0685610185480107,0.608618440101747,0.041555038295115,0.213035481930508,0.573430373821824,0.73275780767628,1.00260729099206,0.352271508829137,0.325337064669251,0.467138036355226,0.452947818407187,0.243292188943356,0.190251081487382,-4.28399352617216e-06,-1.21837899162477e-05,0.768680491191316,1.01734606239577,-1.12453679398938e-05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive233.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive233.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive233.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive233_field1":[0,0,0,0,487.520306693893,0,0,261.24106377685,0,131.703812864547,1164.90464840184,526.595768409469,171.279310046338,62.5831665802542,0,0,620.00438462415,493.627811202599,-197.643118559792,0,727.240553509468,363.827824366888,0,0,-317.062222738814,0,0,0,0,0,487.520235053949,0,0,261.241142330307,0,131.701935414096,1164.90822069528,526.597810255492,171.277535489081,62.5829880638803,0,0,620.004221633845,493.629877614548,-197.646911762609,0,727.240076829377,363.827829925609,0,0,-317.061591239253,0,0,0,0,0,487.520197162227,0,0,261.241162646968,0,131.701472837994,1164.90887276609,526.598241094053,171.277084446238,62.5828278965367,0,0,620.004093429495,493.630304391567,-197.647908604533,0,727.239966639306,363.827820906686,0,0,-317.06145907548,0],"Archive233_field2":[0,0,0,0,6634.81734749616,0,0,8888.94176576366,0,6916.47837826695,3312.41304535924,6722.33285152007,5267.94062843814,3951.38004389128,0,0,5017.47347916082,5450.38670050065,2785.74482396078,0,7673.27540193685,7726.78731473847,0,0,7538.78610221984,0,0,0,0,0,6634.81924491646,0,0,8888.94335908631,0,6916.47855765618,3312.42026272504,6722.33366090771,5267.94331372352,3951.38856661253,0,0,5017.48058900477,5450.39015082069,2785.74902323263,0,7673.27770814231,7726.78878547512,0,0,7538.789751417,0,0,0,0,0,6634.8194952769,0,0,8888.94381297136,0,6916.47821224976,3312.42025386141,6722.33338135888,5267.94352842045,3951.38928776696,0,0,5017.48132213426,5450.39047578352,2785.74880708948,0,7673.27847383558,7726.78903144259,0,0,7538.79095646918,0],"Archive233_field3":[0,0,0,0,4.19372705322141,0,0,5.59392155622379,0,4.34813562731965,2.15153039353193,4.25109377050828,3.31621173548629,2.48329390120514,0,0,3.18720864929099,3.45091718041568,1.73556638038173,0,4.86036972998477,4.87114335377134,0,0,4.71045540230799,0,0,0,0,0,3.33391160639402,0,0,4.88668860753127,0,3.58794337718914,-4.8179060061964,2.84045152499639,1.77664880801735,-4.12046038585154,0,0,-1.4222768141779,1.13458952979782,-2.50905010653898,0,4.67733756523434,4.17502714196526,0,0,4.36448802569593,0,0,0,0,0,2.47410016773466,0,0,4.17945527042826,0,2.82775012050386,-11.7873494793429,1.42980769385485,0.237089415537562,-10.7242187707843,0,0,-6.03176249354897,-1.18173491718619,-6.75367113799392,0,4.49430281762919,3.47891151207329,0,0,4.0185164216158,0],"Archive233_field4":[0,0,0,0,6652.70583081963,0,0,8892.7815614969,0,6917.73358533275,3511.28005889837,6742.92815783551,5270.72538310046,3951.87639871872,0,0,5055.63603410435,5472.69545195202,2792.74775780573,0,7707.66228112206,7735.34980598967,0,0,7545.4520432179,0,0,0,0,0,6652.70723144101,0,0,8892.78273968369,0,6917.73329289639,3511.29069884183,6742.92838242432,5270.72726549653,3951.88628542687,0,0,5055.64226570223,5472.6981041832,2792.75280279213,0,7707.66441881762,7735.35086832033,0,0,7545.45545460743,0,0,0,0,0,6652.707103031,0,0,8892.78283345935,0,6917.73258623402,3511.30738638021,6742.92769069974,5270.72717132036,3951.8994069555,0,0,5055.64637568672,5472.69847629329,2792.75969679635,0,7707.66506179815,7735.35076919674,0,0,7545.45646085423,0],"Archive233_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4272990.75,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2136495.375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive233_field6":[-891.991753352329,-836.936053577725,-206.709480380443,-268.96468217293,-552.167213903698,-857.086363193548,-519.751486757191,-242.423625300305,-580.899403558278,-378.963283611558,-721.332960132416,-410.139548954307,-535.036314920347,-697.218078513355,-675.484571442552,-844.008424041294,-670.997302373376,-583.533130419962,-647.328692862418,-364.08710358821,-229.414657385479,-395.818828363359,-739.353875341288,-873.46951747578,-260.382455415976,-426.317455647089,-891.991753352329,-836.936053577725,-206.709480380443,-268.96468217293,-552.167213903698,-857.086363193548,-519.751486757191,-242.423625300305,-580.899403558278,-378.963283611558,-721.332960132416,-410.139548954307,-535.036314920347,-697.218078513355,-675.484571442552,-844.008424041294,-670.997302373376,-583.533130419962,-647.328692862418,-364.08710358821,-229.414657385479,-395.818828363359,-739.353875341288,-873.46951747578,-260.382455415976,-426.317455647089,-891.991753352329,-836.936053577725,-206.709480380443,-268.96468217293,-552.167213903698,-857.086363193548,-519.751486757191,-242.423625300305,-580.899403558278,-378.963283611558,-721.332960132416,-410.139548954307,-535.036314920347,-697.218078513355,-675.484571442552,-844.008424041294,-670.997302373376,-583.533130419962,-647.328692862418,-364.08710358821,-229.414657385479,-395.818828363359,-739.353875341288,-873.46951747578,-260.382455415976,-426.317455647089],"Archive233_field7":[103.109188500924,96.7450618094208,23.8944437517197,31.0907920505241,63.827398771856,99.0743233353502,60.0803245324562,28.0227963814965,67.1486769652971,43.8060066115869,83.3819997535835,47.4098060950453,61.8471639929736,80.5944561858404,78.082186011898,97.5625877299642,77.563483153302,67.4531208555245,74.8275261105958,42.0864045587244,26.5190334600445,45.7544120027438,85.4651153611521,100.968123066993,30.0987353043549,49.2798803692382,103.109188500924,96.7450618094208,23.8944437517197,31.0907920505241,63.827398771856,99.0743233353502,60.0803245324562,28.0227963814965,67.1486769652971,43.8060066115869,83.3819997535835,47.4098060950453,61.8471639929736,80.5944561858404,78.082186011898,97.5625877299642,77.563483153302,67.4531208555245,74.8275261105958,42.0864045587244,26.5190334600445,45.7544120027438,85.4651153611521,100.968123066993,30.0987353043549,49.2798803692382,103.109188500924,96.7450618094208,23.8944437517197,31.0907920505241,63.827398771856,99.0743233353502,60.0803245324562,28.0227963814965,67.1486769652971,43.8060066115869,83.3819997535835,47.4098060950453,61.8471639929736,80.5944561858404,78.082186011898,97.5625877299642,77.563483153302,67.4531208555245,74.8275261105958,42.0864045587244,26.5190334600445,45.7544120027438,85.4651153611521,100.968123066993,30.0987353043549,49.2798803692382],"Archive233_field8":[995.100941853252,933.681115387146,230.603924132162,300.055474223454,615.994612675554,956.160686528899,579.831811289648,270.446421681801,648.048080523575,422.769290223145,804.714959885999,457.549355049353,596.883478913321,777.812534699195,753.56675745445,941.571011771259,748.560785526678,650.986251275486,722.156218973014,406.173508146934,255.933690845523,441.573240366103,824.81899070244,974.437640542773,290.481190720331,475.597336016327,995.100941853252,933.681115387146,230.603924132162,300.055474223454,615.994612675554,956.160686528899,579.831811289648,270.446421681801,648.048080523575,422.769290223145,804.714959885999,457.549355049353,596.883478913321,777.812534699195,753.56675745445,941.571011771259,748.560785526678,650.986251275486,722.156218973014,406.173508146934,255.933690845523,441.573240366103,824.81899070244,974.437640542773,290.481190720331,475.597336016327,995.100941853252,933.681115387146,230.603924132162,300.055474223454,615.994612675554,956.160686528899,579.831811289648,270.446421681801,648.048080523575,422.769290223145,804.714959885999,457.549355049353,596.883478913321,777.812534699195,753.56675745445,941.571011771259,748.560785526678,650.986251275486,722.156218973014,406.173508146934,255.933690845523,441.573240366103,824.81899070244,974.437640542773,290.481190720331,475.597336016327],"Archive233_field9":[271.462316845569,271.574180354188,272.738902167251,272.628331313426,272.085202590053,271.521194163483,272.152308959975,272.660576469223,272.035398190248,272.412201373655,271.772354772869,272.350930254173,272.117044595628,271.815315878277,271.862058753484,271.548276044443,271.862326839114,272.027408578214,271.908401516539,272.445291818278,272.685202742812,272.377373079738,271.746529618918,271.491481227823,272.622722943663,272.329232861403,248.395579295015,248.348456467847,247.978578853208,248.190280746293,248.190613285254,248.403927392977,248.207726211371,247.912011070968,248.243545121001,248.23157803639,248.305498651295,248.194552806403,248.202209182294,248.303426822421,248.29710178683,248.383281308798,248.255436990783,248.24590242686,248.263979699648,248.110463674518,247.739406050878,248.150638230728,248.31670105318,248.392494170734,247.668915308,248.178263542834,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive233_field10":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive233_field11":[0,0,0,0,488.246714158701,0,0,257.397817719397,0,138.951033718135,1174.60423423714,516.998053004754,172.394017160158,61.0416037954895,0,0,624.908511541036,493.087456001568,-203.591833264459,0,723.474443975528,362.02857014981,0,0,-319.942245192616,0,0,0,0,0,488.246644358051,0,0,257.397900682022,0,138.949154599311,1174.60777185017,517.000075503569,172.392267789413,61.0413870160195,0,0,624.908311847488,493.089464843407,-203.595586948125,0,723.47396285222,362.028576720109,0,0,-319.941613378834,0,0,0,0,0,488.246604913791,0,0,257.397921847459,0,138.948688221158,1174.60838792463,517.000503343463,172.3918214722,61.0412131516389,0,0,624.908175890367,493.089883416856,-203.596561036315,0,723.473846935189,362.028568080395,0,0,-319.941477057482,0],"Archive233_field12":[0,0,0,0,6650.31496536627,0,0,8894.00595936859,0,6920.882029337,3338.03952181038,6721.18739394643,5273.24724828946,3967.72030582439,0,0,5033.74321567605,5459.06650817297,2790.06084217635,0,7717.06446988457,7729.17914584618,0,0,7573.61427191651,0,0,0,0,0,6650.31681826426,0,0,8894.00760828167,0,6920.88214425058,3338.04617481325,6721.18811162041,5273.24985687425,3967.72829469557,0,0,5033.74990987165,5459.06984331736,2790.06478669746,0,7717.06689657548,7729.18058431761,0,0,7573.61805970201,0,0,0,0,0,6650.31704614649,0,0,8894.00807185283,0,6920.88178597224,3338.04596430962,6721.18781430034,5273.25003821648,3967.7288491483,0,0,5033.75053082009,5459.0701247828,2790.06446816457,0,7717.06766903957,7729.18082094543,0,0,7573.61926656065,0],"Archive233_field13":[0,0,0,0,4.17204221117358,0,0,5.36023562628489,0,4.29424887524023,2.13669971781663,4.18362605538172,3.2900455885286,2.42509625022181,0,0,3.10296842881508,3.43193628847139,1.71872600839251,0,4.58921473342904,4.84636871964639,0,0,4.45133237477608,0,0,0,0,0,3.31106255298441,0,0,4.61795886789291,0,3.52865650806367,-4.82720373931927,2.77198150252019,1.76024017927194,-4.15011284843563,0,0,-1.47760369027935,1.15119916331736,-2.52048731184031,0,4.35465517579545,4.15047458040477,0,0,4.05058787776744,0,0,0,0,0,2.45008669716066,0,0,3.87568162765232,0,2.76306321598913,-11.7911136241789,1.36033547489826,0.230437929565003,-10.7253255543321,0,0,-6.05817594439979,-1.12953521857172,-6.7597049541878,0,4.12009291117175,3.45458104089791,0,0,3.64983900106354,0],"Archive233_field14":[0,0,0,0,6668.21500841099,0,0,8897.73141727579,0,6922.27808559758,3538.67313010705,6741.04327786746,5276.06549079378,3968.19056797137,0,0,5072.38514286663,5481.2912856469,2797.47959628607,0,7750.90448685393,7737.65458271936,0,0,7580.37043912738,0,0,0,0,0,6668.21636812653,0,0,8897.73265169233,0,6922.27773016852,3538.68322752576,6741.04342025326,5276.06730865551,3968.19998171631,0,0,5072.39102757876,5481.29383447158,2797.48441101111,0,7750.90672271108,7737.65561535234,0,0,7580.37397213872,0,0,0,0,0,6668.21622057962,0,0,8897.73276139842,0,6922.27701467364,3538.6995853261,6741.0427239463,5276.06718671799,3968.21285753107,0,0,5072.39502960109,5481.29414794298,2797.49119565931,0,7750.90735274914,7737.65550933273,0,0,7580.3749686203,0],"Archive233_field15":[8951699.19969523,8399180.56736623,2074459.86259038,2699230.03335512,5541345.85686837,8601401.61905607,5216033.61304507,2432873.8067725,5829691.48133156,3803135.29791066,7239030.69469368,4116008.76167231,5369426.49310408,6997022.66527098,6778913.22970602,8470156.26056154,6733880.65761733,5856122.58963648,6496351.24995087,3653843.45938295,2302320.61809743,3972291.30848817,7419881.93199129,8765816.89366546,2613101.98104623,4278364.2474156,4475849.59984762,4199590.28368311,1037229.93129519,1349615.01667756,2770672.92843418,4300700.80952804,2608016.80652254,1216436.90338625,2914845.74066578,1901567.64895533,3619515.34734684,2058004.38083616,2684713.24655204,3498511.33263549,3389456.61485301,4235078.13028077,3366940.32880866,2928061.29481824,3248175.62497544,1826921.72969147,1151160.30904872,1986145.65424409,3709940.96599564,4382908.44683273,1306550.99052312,2139182.1237078,-1.27837580521373e-10,2.55675161042745e-10,6.39187902606864e-11,9.58781853910296e-11,3.19593951303432e-10,1.27837580521373e-10,-1.91756370782059e-10,-3.19593951303432e-11,2.55675161042745e-10,-6.39187902606864e-11,1.27837580521373e-10,6.39187902606864e-11,6.39187902606864e-11,0,3.83512741564118e-10,3.83512741564118e-10,1.27837580521373e-10,-2.55675161042745e-10,3.83512741564118e-10,0,-3.19593951303432e-11,0,0,1.27837580521373e-10,-1.59796975651716e-10,0],"Archive233_field16":[-887.590180724995,-840.233808918889,-207.292057797915,-269.054246667921,-552.990071678475,-849.208227312082,-519.588596696355,-247.105771593282,-579.17537042665,-379.28179782573,-718.835355586416,-410.244039520801,-534.456094462117,-694.149149112141,-674.19009416883,-838.707390632688,-669.129989692443,-582.463415483381,-645.343300167817,-365.091330269515,-236.503062117928,-397.25692361896,-739.144316737635,-866.242433036913,-267.088137777534,-426.798709086331,-887.590180724995,-840.233808918889,-207.292057797915,-269.054246667921,-552.990071678475,-849.208227312082,-519.588596696355,-247.105771593282,-579.175370426649,-379.281797825731,-718.835355586416,-410.244039520801,-534.456094462117,-694.14914911214,-674.19009416883,-838.707390632688,-669.129989692442,-582.463415483381,-645.343300167816,-365.091330269515,-236.503062117928,-397.25692361896,-739.144316737635,-866.242433036913,-267.088137777534,-426.798709086331,-887.590180724995,-840.233808918889,-207.292057797915,-269.054246667921,-552.990071678475,-849.208227312082,-519.588596696355,-247.105771593282,-579.17537042665,-379.28179782573,-718.835355586416,-410.244039520801,-534.456094462117,-694.149149112141,-674.19009416883,-838.707390632688,-669.129989692443,-582.463415483381,-645.343300167817,-365.091330269515,-236.503062117928,-397.25692361896,-739.144316737635,-866.242433036913,-267.088137777534,-426.798709086331],"Archive233_field17":[102.600391665048,97.1262636263928,23.961786397578,31.1011451982548,63.9225164644694,98.1636555017238,60.0614953651185,28.5640259420806,66.9493885116956,43.8428250485577,83.0932908311452,47.421884612001,61.7800937982382,80.2397053499312,77.9325517796031,96.9498183283151,77.3476323962911,67.329467874851,74.5980259735971,42.20248746845,27.3384128511454,45.9206476593346,85.4408915749066,100.132713088236,30.8738741596713,49.3355105377874,102.600391665048,97.1262636263928,23.961786397578,31.1011451982548,63.9225164644694,98.1636555017238,60.0614953651185,28.5640259420806,66.9493885116956,43.8428250485577,83.0932908311452,47.421884612001,61.7800937982382,80.2397053499312,77.9325517796031,96.9498183283151,77.3476323962911,67.329467874851,74.5980259735971,42.20248746845,27.3384128511454,45.9206476593346,85.4408915749066,100.132713088236,30.8738741596713,49.3355105377874,102.600391665048,97.1262636263928,23.961786397578,31.1011451982548,63.9225164644694,98.1636555017238,60.0614953651185,28.5640259420806,66.9493885116956,43.8428250485577,83.0932908311452,47.421884612001,61.7800937982382,80.2397053499312,77.9325517796031,96.9498183283151,77.3476323962911,67.329467874851,74.5980259735971,42.20248746845,27.3384128511454,45.9206476593346,85.4408915749066,100.132713088236,30.8738741596713,49.3355105377874],"Archive233_field18":[990.190572390043,937.360072545282,231.253844195493,300.155391866176,616.912588142945,947.371882813806,579.650092061474,275.669797535363,646.124758938345,423.124622874288,801.928646417561,457.665924132802,596.236188260355,774.388854462072,752.122645948434,935.657208961003,746.477622088734,649.792883358232,719.941326141414,407.293817737965,263.841474969073,443.177571278295,824.585208312542,966.37514612515,297.962011937205,476.134219624118,990.190572390043,937.360072545282,231.253844195493,300.155391866176,616.912588142945,947.371882813806,579.650092061474,275.669797535363,646.124758938345,423.124622874288,801.928646417561,457.665924132802,596.236188260355,774.388854462072,752.122645948434,935.657208961003,746.477622088734,649.792883358232,719.941326141413,407.293817737965,263.841474969073,443.177571278295,824.585208312542,966.37514612515,297.962011937205,476.134219624118,990.190572390043,937.360072545282,231.253844195493,300.155391866176,616.912588142945,947.371882813806,579.650092061474,275.669797535363,646.124758938345,423.124622874288,801.928646417561,457.665924132802,596.236188260355,774.388854462072,752.122645948434,935.657208961003,746.477622088734,649.792883358232,719.941326141414,407.293817737965,263.841474969073,443.177571278295,824.585208312542,966.37514612515,297.962011937205,476.134219624118],"Archive233_field19":[272.12535971735,272.330128273559,272.938217840147,272.877496916411,272.588680147864,272.019867152457,272.624681489424,272.906595792076,272.545484254063,272.765855794059,272.438130464522,272.733757669167,272.601578430338,272.461264664157,272.452852263556,272.125580312819,272.488263963276,272.552312656281,272.502654816372,272.784667414537,272.912868767207,272.754662172205,272.385566353567,271.919056931658,272.891620481205,272.728063613829,248.955813656832,247.713872091348,248.276875163433,248.151142867771,248.18585733394,250.096843529978,248.141894417869,249.131198249836,248.327914720541,247.845519769523,247.807616948547,247.773224475451,248.117410185324,247.920528176203,248.278331117503,249.216248807943,247.893269681643,248.183246986929,248.131979010823,248.366479902739,251.041491583038,248.216951541571,248.254463443938,250.400819133889,250.207803617794,248.231307695335,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive233_field20":[-6.67320160858404e-05,1.96616433066846,-2.08985065614792e-13,-7.67217648975426e-13,-3.70280611185778e-05,-0.000115387127442153,3.24404156303675e-09,-1.05075631656382e-12,-6.6720078927259e-05,3.44892967741998e-09,1.10127846072765,1.165054384517e-08,-1.99123549280272e-05,0.404542310839998,-5.95648331174824e-05,-8.25385611950362e-05,0.452130651014096,-7.13299569174126e-05,-1.83751543073751e-05,-3.07286751085053e-13,-2.08962538281959e-13,2.24266618370162e-09,-6.6732016402869e-05,-6.67305418225601e-05,-7.05952906204534e-13,2.02086954935118e-09,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive233_field21":[0,0,0,0,494.375986933541,0,0,256.916819335869,0,146.49509522394,1198.97409991574,513.583130102766,176.148650627207,59.8553609890973,0,0,637.121511914731,497.744652457855,-212.00543119358,0,734.738775543211,364.189803542209,0,0,-333.576126610858,0,0,0,0,0,494.375928986346,0,0,256.916908661234,0,146.493200892592,1198.977726628,513.585179497121,176.146929485465,59.8551629947395,0,0,637.121311707104,497.746634456302,-212.009125147662,0,734.738284018773,364.189816119416,0,0,-333.575479877033,0,0,0,0,0,494.375893578484,0,0,256.916930947165,0,146.49273007201,1198.97835830581,513.585619528784,176.14649057687,59.8550046858889,0,0,637.121188133398,497.747059311802,-212.010054422043,0,734.738162505416,364.189810060501,0,0,-333.575336167274,0],"Archive233_field22":[0,0,0,0,6725.50907449947,0,0,9007.10462661747,0,6986.76454210316,3406.34057037731,6780.7893118928,5326.65152257296,4029.99812077898,0,0,5102.41704048238,5520.10925386937,2824.41729453141,0,7840.23966264663,7808.6450871649,0,0,7687.45798213831,0,0,0,0,0,6725.51101483118,0,0,9007.10638850956,0,6986.76471710428,3406.34747851191,6780.79009454522,5326.65428006079,4030.00618445309,0,0,5102.42377047162,5520.11274062102,2824.42157402473,0,7840.242359982,7808.64658061657,0,0,7687.46212640783,0,0,0,0,0,6725.51129448603,0,0,9007.10690219719,0,6986.76437866327,3406.34744711971,6780.78981893777,5326.65455004547,4030.00685354606,0,0,5102.42449227877,5520.1131265827,2824.42143355962,0,7840.24329578188,7808.64684329055,0,0,7687.46356742823,0],"Archive233_field23":[0,0,0,0,4.18480520800544,0,0,5.20685019870367,0,4.28010442204448,2.14811446081575,4.15621829752421,3.29228748906741,2.39535768626753,0,0,3.05127151872271,3.44464564073442,1.72048323151259,0,4.38412264071183,4.86902819887476,0,0,4.25480345594553,0,0,0,0,0,3.32126798965512,0,0,4.40578366716819,0,3.49608934571805,-4.88561595543221,2.72328053480514,1.77380819069342,-4.21455149965948,0,0,-1.53002090038753,1.19732166890406,-2.55438952133434,0,4.08981681700337,4.15141845002501,0,0,3.78856966994736,0,0,0,0,0,2.45773462144151,0,0,3.60471652230496,0,2.71207328867545,-11.9193531282808,1.29034121919568,0.255332309933571,-10.8244645568525,0,0,-6.1113133583876,-1.04999932642507,-6.8292668748683,0,3.79550798669219,3.433809347652,0,0,3.32233103497404,0],"Archive233_field24":[0,0,0,0,6743.65608851948,0,0,9010.76950754931,0,6988.30150315572,3611.1908822524,6800.21239359156,5329.56430012844,4030.44330756056,0,0,5142.04169432798,5542.50555067726,2832.36338003553,0,7874.593212132,7817.13477034548,0,0,7694.69306488174,0,0,0,0,0,6743.65753879879,0,0,9010.7708439853,0,6988.30120220371,3611.2012686304,6800.21260396604,5329.56627751758,4030.45285913526,0,0,5142.04766997246,5542.50826024267,2832.36855332565,0,7874.59569348552,7817.13584872459,0,0,7694.69693353742,0,0,0,0,0,6743.6574451013,0,0,9010.77100202844,0,6988.30050572121,3611.21781469405,6800.21193950434,5329.56624378169,4030.46585772006,0,0,5142.05177491687,5542.5086529317,2832.37556415336,0,7874.59646651023,7817.135762671,0,0,7694.69815154039,0],"Archive233_field25":[8907526.64538918,8432275.61980067,2080306.39399849,2700128.86948799,5549603.75303866,8522339.56225995,5214398.90866384,2479862.09457469,5812389.7227148,3806331.78871384,7213965.65958371,4117057.39033613,5363603.61526685,6966224.02530427,6765922.33474354,8416957.05065512,6715140.99845717,5845387.32632748,6476426.58346315,3663921.50679265,2373457.22528254,3986723.50037815,7417778.87938171,8693288.54825824,2680397.72812435,4283193.92886805,4453763.32269459,4216137.80990033,1040153.19699925,1350064.43474399,2774801.87651933,4261169.78112998,2607199.45433192,1239931.04728735,2906194.8613574,1903165.89435692,3606982.82979185,2058528.69516807,2681801.80763343,3483112.01265214,3382961.16737177,4208478.52532756,3357570.49922858,2922693.66316374,3238213.29173157,1831960.75339633,1186728.61264127,1993361.75018907,3708889.43969086,4346644.27412912,1340198.86406217,2141596.96443403,-2.55675161042745e-10,-2.55675161042745e-10,6.39187902606864e-11,-2.23715765912402e-10,0,-2.55675161042745e-10,1.27837580521373e-10,9.58781853910296e-11,1.27837580521373e-10,-2.55675161042746e-10,0,1.27837580521373e-10,4.47431531824805e-10,-2.55675161042745e-10,3.83512741564118e-10,-1.27837580521373e-10,3.83512741564118e-10,-2.55675161042745e-10,-1.27837580521373e-10,-2.55675161042745e-10,0,6.39187902606864e-11,1.27837580521373e-10,1.27837580521373e-10,-6.39187902606864e-11,6.39187902606864e-11],"Archive233_field26":[-883.121253373479,-843.568250827754,-207.920784936743,-269.183927215883,-553.760695638051,-841.284530542941,-519.416434109399,-251.637838421843,-577.466744845828,-379.664334330819,-716.316593584071,-410.39455473397,-533.857860023109,-691.069196055244,-672.871014101897,-833.357586881892,-667.242472394188,-581.407584558423,-643.344550426984,-366.062762287987,-243.211656541562,-398.716154593193,-738.876900903975,-858.918643432041,-273.430491810211,-427.234694011831,-883.121253373479,-843.568250827754,-207.920784936743,-269.183927215883,-553.760695638051,-841.284530542941,-519.416434109399,-251.637838421843,-577.466744845828,-379.664334330819,-716.316593584071,-410.39455473397,-533.857860023109,-691.069196055244,-672.871014101897,-833.357586881892,-667.242472394188,-581.407584558423,-643.344550426984,-366.062762287987,-243.211656541562,-398.716154593193,-738.876900903975,-858.918643432041,-273.430491810211,-427.234694011831,-883.121253373479,-843.568250827754,-207.920784936743,-269.183927215883,-553.760695638051,-841.284530542941,-519.416434109399,-251.637838421843,-577.466744845828,-379.664334330819,-716.316593584071,-410.39455473397,-533.857860023109,-691.069196055244,-672.871014101897,-833.357586881892,-667.242472394188,-581.407584558423,-643.344550426984,-366.062762287987,-243.211656541562,-398.716154593193,-738.876900903975,-858.918643432041,-273.430491810211,-427.234694011831],"Archive233_field27":[102.083809005004,97.5117062025539,24.0344636895253,31.1161355342242,64.0115962242459,97.2477210878427,60.0415943463427,29.0879071676285,66.7518810835963,43.8870440993095,82.8021362267302,47.439283317122,61.710941289476,79.8836802419367,77.780073603927,96.3314113516691,77.1294461000915,67.2074198071896,74.3669818377976,42.3147795011195,28.1138883243245,46.0893264851455,85.4099798209611,99.2861245406721,31.6070143204824,49.3859079228507,102.083809005004,97.5117062025539,24.0344636895253,31.1161355342242,64.0115962242459,97.2477210878427,60.0415943463427,29.0879071676285,66.7518810835963,43.8870440993095,82.8021362267302,47.439283317122,61.710941289476,79.8836802419367,77.780073603927,96.3314113516691,77.1294461000915,67.2074198071896,74.3669818377976,42.3147795011195,28.1138883243245,46.0893264851455,85.4099798209611,99.2861245406721,31.6070143204824,49.3859079228507,102.083809005004,97.5117062025539,24.0344636895253,31.1161355342242,64.0115962242459,97.2477210878427,60.0415943463427,29.0879071676285,66.7518810835963,43.8870440993095,82.8021362267302,47.439283317122,61.710941289476,79.8836802419367,77.780073603927,96.3314113516691,77.1294461000915,67.2074198071896,74.3669818377976,42.3147795011195,28.1138883243245,46.0893264851455,85.4099798209611,99.2861245406721,31.6070143204824,49.3859079228507],"Archive233_field28":[985.205062378484,941.079957030308,231.955248626268,300.300062750107,617.772291862297,938.532251630784,579.458028455741,280.725745589472,644.218625929425,423.551378430128,799.118729810802,457.833838051092,595.568801312585,770.952876297181,750.651087705824,929.688998233561,744.37191849428,648.615004365612,717.711532264782,408.377541789106,271.325544865886,444.805481078338,824.286880724936,958.204767972713,305.037506130693,476.620601934682,985.205062378484,941.079957030308,231.955248626268,300.300062750107,617.772291862297,938.532251630784,579.458028455741,280.725745589472,644.218625929425,423.551378430128,799.118729810801,457.833838051092,595.568801312585,770.952876297181,750.651087705824,929.688998233561,744.37191849428,648.615004365612,717.711532264782,408.377541789106,271.325544865886,444.805481078338,824.286880724936,958.204767972713,305.037506130693,476.620601934682,985.205062378484,941.079957030308,231.955248626268,300.300062750107,617.772291862297,938.532251630784,579.458028455741,280.725745589472,644.218625929425,423.551378430128,799.118729810802,457.833838051092,595.568801312585,770.952876297181,750.651087705824,929.688998233561,744.37191849428,648.615004365612,717.711532264782,408.377541789106,271.325544865886,444.805481078338,824.286880724936,958.204767972713,305.037506130693,476.620601934682],"Archive233_field29":[272.181964710544,272.326885218327,272.94424633,272.88547599351,272.606952583118,272.088927232891,272.63883100755,272.91157904713,272.578690669304,272.777294304048,272.440596445936,272.746632988423,272.623799036636,272.464304613679,272.485667661958,272.181769997732,272.49009238489,272.576102907156,272.513362964106,272.791924027012,272.921650064335,272.760717316946,272.422852536015,271.979040759011,272.893916700482,272.730721591815,249.078431296547,246.625250180038,248.050354883691,247.593630443391,247.643342035503,251.237777792804,247.553594365221,249.589995502616,247.896745810691,247.023954927214,246.934215221674,246.907622677382,247.495667264609,247.143544879097,247.794755259378,249.585571000278,247.104676623145,247.585338061889,247.557304245731,248.014905668851,252.938345850387,247.75028654063,247.725556395773,251.820618004669,251.58334723007,247.709269441006,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5,255.5],"Archive233_field30":[-0.000118406384781496,3.86066354063451,-6.32382571635691e-06,-0.0462434448786422,0.113681246442468,-0.000314828540536789,0.356785091052401,-0.00782902432329129,-0.447464638216799,0.0351853614281139,2.30079547043345,0.10678137099182,-0.0365854324680136,1.46080725646698,-0.697826358336237,-0.000201989902841997,1.62747659423279,-0.11294891213701,0.780545394259103,0.1383427158681,-1.89478168425707e-06,0.2712740384337,-0.693567205415454,-0.000139412122953024,0.208327820350882,0.530281120900811,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive233_field31":[0,0,0,0,501.42268871799,0,0,256.787438954013,0,152.778265540706,1227.57411434317,511.64497885764,180.458598920022,58.4994743488084,0,0,650.899939868438,503.275196389778,-221.24257620338,0,751.841801141397,366.714758001216,0,0,-353.063413835007,0,0,0,0,0,501.422641210285,0,0,256.787536389352,0,152.776348489914,1227.57783817718,511.647059401295,180.456906591691,58.499289984756,0,0,650.899728353201,503.27714070541,-221.246239727632,0,751.841296981674,366.714776049326,0,0,-353.062750087582,0,0,0,0,0,501.422609567384,0,0,256.78756004926,0,152.775871848391,1227.57849105655,511.64751189795,180.456476220063,58.4991458805651,0,0,650.899613119994,503.277567188388,-221.247137069192,0,751.841169745941,366.71477227528,0,0,-353.062598783893,0],"Archive233_field32":[0,0,0,0,6807.97566062617,0,0,9146.99491363418,0,7060.59882742081,3485.77029142754,6847.79842254068,5387.4967297899,4103.98892510025,0,0,5182.06437232354,5589.37246768003,2866.18373836556,0,7975.86746076098,7901.91513484801,0,0,7813.45352737654,0,0,0,0,0,6807.97767355068,0,0,9146.99681142563,0,7060.5990422787,3485.77739735291,6847.79924986822,5387.49959090089,4103.99700300611,0,0,5182.07106506513,5589.37605022668,2866.18829407589,0,7975.87045292132,7901.91669249403,0,0,7813.45805377578,0,0,0,0,0,6807.97800099844,0,0,9146.99738421617,0,7060.5987136583,3485.77753035614,6847.79898576591,5387.49993517866,4103.99776973218,0,0,5182.07186355383,5589.37652248415,2866.18831254432,0,7975.87157477087,7901.91698103992,0,0,7813.45975287634,0],"Archive233_field33":[0,0,0,0,4.19928342604809,0,0,5.07747280327917,0,4.27146908872689,2.1642808608643,4.13449241073676,3.2971012548229,2.37103185224651,0,0,3.00389720530102,3.46107094235743,1.72621675099329,0,4.19779924334208,4.89898102637369,0,0,4.07483453940111,0,0,0,0,0,3.33689716932628,0,0,4.2070064866652,0,3.4645602284333,-4.95408373335537,2.67490642469133,1.79844115469648,-4.28344503610595,0,0,-1.57538842345479,1.25625843006666,-2.59220590382297,0,3.84167854733335,4.14907236332771,0,0,3.54077606112808,0,0,0,0,0,2.47451475944199,0,0,3.33653939376321,0,2.65765033041743,-12.0724553175909,1.21531880218168,0.299784723431248,-10.9379259719685,0,0,-6.1546739422198,-0.948550878596739,-6.91063338020342,0,3.4855544901118,3.39916439932444,0,0,3.0067121997558,0],"Archive233_field34":[0,0,0,0,6826.41743101174,0,0,9150.6000633611,0,7062.25284492462,3695.61056050498,6866.88727985018,5390.51919487333,4104.4065231939,0,0,5222.78382800056,5611.9856098152,2874.71050358477,0,8011.22621494911,7910.42138650597,0,0,7821.42738909838,0,0,0,0,0,6826.41895898322,0,0,9150.6015215383,0,7062.25257631462,3695.6211867054,6866.88753621422,5390.52128940091,4104.41614794519,0,0,5222.78981595126,5611.98842562861,2874.71597818336,0,8011.22896790028,7910.42251443563,0,0,7821.43162091878,0,0,0,0,0,6826.41891614391,0,0,9150.60173597062,0,7062.25188770817,3695.63792693735,6866.88689311887,5390.5213274071,4104.42925170602,0,0,5222.79398266937,5611.98887378448,2874.72320328074,0,8011.2299099984,7910.42244470993,0,0,7821.43308791916,0],"Archive233_field35":[8862678.14399249,8465738.84505453,2086616.06693472,2701430.29548553,5557337.4499661,8442820.27325266,5212671.14864131,2525344.2404014,5795242.58857714,3810170.7835404,7188688.29607012,4118567.90532488,5357599.95578371,6935314.75600789,6752684.53525142,8363268.39963952,6696198.57323329,5834791.39782204,6456367.87060156,3673670.43910019,2440782.19673819,4001367.80252008,7415095.19301896,8619789.70558589,2744047.24652531,4287569.31226595,4431339.07199625,4232869.42252727,1043308.03346736,1350715.14774276,2778668.72498305,4221410.13662633,2606335.57432065,1262672.1202007,2897621.29428857,1905085.3917702,3594344.14803506,2059283.95266244,2678799.97789185,3467657.37800395,3376342.26762571,4181634.19981976,3348099.28661664,2917395.69891102,3228183.93530078,1836835.2195501,1220391.0983691,2000683.90126004,3707547.59650948,4309894.85279295,1372023.62326265,2143784.65613298,5.11350322085491e-10,-1.27837580521373e-10,0,6.39187902606864e-11,-1.27837580521373e-10,1.27837580521373e-10,-5.11350322085491e-10,-3.19593951303432e-11,-2.55675161042745e-10,0,-2.55675161042746e-10,1.27837580521373e-10,-2.55675161042745e-10,2.55675161042745e-10,2.55675161042745e-10,2.55675161042745e-10,2.55675161042745e-10,-2.55675161042745e-10,2.55675161042745e-10,1.91756370782059e-10,-9.58781853910296e-11,-1.27837580521373e-10,2.55675161042745e-10,-3.83512741564118e-10,1.91756370782059e-10,1.27837580521373e-10],"Archive233_field36":[-878.570197317313,-846.94953252467,-208.596731690083,-269.354351053481,-554.485824012721,-833.295268886193,-519.237358140355,-256.030137031253,-575.774853920827,-380.101646078088,-713.77424757519,-410.582624119967,-533.250566264865,-687.976760414584,-671.522970048473,-827.943067541484,-665.340311362751,-580.374470967973,-641.330123512694,-367.004752013206,-249.567492845874,-400.185558550958,-738.544744860322,-851.475876246192,-279.433910097555,-427.628242081781,-878.570197317313,-846.94953252467,-208.596731690083,-269.354351053481,-554.485824012721,-833.295268886193,-519.237358140355,-256.030137031253,-575.774853920827,-380.101646078088,-713.77424757519,-410.582624119967,-533.250566264865,-687.976760414584,-671.522970048473,-827.943067541484,-665.340311362751,-580.374470967973,-641.330123512694,-367.004752013206,-249.567492845874,-400.185558550958,-738.544744860322,-851.475876246192,-279.433910097555,-427.628242081781,-878.570197317313,-846.94953252467,-208.596731690083,-269.354351053481,-554.485824012721,-833.295268886193,-519.237358140355,-256.030137031253,-575.774853920827,-380.101646078088,-713.77424757519,-410.582624119967,-533.250566264865,-687.976760414584,-671.522970048473,-827.943067541484,-665.340311362751,-580.374470967973,-641.330123512694,-367.004752013206,-249.567492845874,-400.185558550958,-738.544744860322,-851.475876246192,-279.433910097555,-427.628242081781],"Archive233_field37":[101.557732732427,97.9025631926009,24.1125993011438,31.1358355634341,64.0954169523975,96.3242077447508,60.0208941798011,29.5956319796214,66.5563080868132,43.9375948574453,82.5082554448965,47.4610230716647,61.6407415747827,79.5262122180435,77.6242473556578,95.7055236198444,76.9095670713758,67.0879977345749,74.1341255096462,42.4236681716464,28.8485869592831,46.2591812501653,85.3715844658606,98.4257828594289,32.3009754311241,49.4313998480575,101.557732732427,97.9025631926009,24.1125993011438,31.1358355634341,64.0954169523975,96.3242077447508,60.0208941798011,29.5956319796214,66.5563080868132,43.9375948574453,82.5082554448966,47.4610230716647,61.6407415747827,79.5262122180435,77.6242473556578,95.7055236198444,76.9095670713757,67.0879977345749,74.1341255096462,42.4236681716464,28.8485869592831,46.2591812501653,85.3715844658606,98.4257828594289,32.3009754311241,49.4313998480575,101.557732732427,97.9025631926009,24.1125993011438,31.1358355634341,64.0954169523975,96.3242077447508,60.0208941798011,29.5956319796214,66.5563080868132,43.9375948574453,82.5082554448965,47.4610230716647,61.6407415747827,79.5262122180435,77.6242473556578,95.7055236198444,76.9095670713758,67.0879977345749,74.1341255096462,42.4236681716464,28.8485869592831,46.2591812501653,85.3715844658606,98.4257828594289,32.3009754311241,49.4313998480575],"Archive233_field38":[980.12793004974,944.852095717271,232.709330991227,300.490186616916,618.581240965119,929.619476630944,579.258252320156,285.625769010874,642.33116200764,424.039240935533,796.282503020086,458.043647191632,594.891307839648,767.502972632628,749.147217404131,923.648591161328,742.249878434126,647.462468702548,715.46424902234,409.428420184852,278.416079805157,446.444739801124,823.916329326183,949.901659105621,311.734885528679,477.059641929838,980.12793004974,944.852095717271,232.709330991227,300.490186616916,618.581240965119,929.619476630944,579.258252320156,285.625769010874,642.33116200764,424.039240935534,796.282503020086,458.043647191632,594.891307839648,767.502972632628,749.147217404131,923.648591161328,742.249878434126,647.462468702548,715.46424902234,409.428420184852,278.416079805157,446.444739801124,823.916329326183,949.901659105621,311.734885528679,477.059641929838,980.12793004974,944.852095717271,232.709330991227,300.490186616916,618.581240965119,929.619476630944,579.258252320156,285.625769010874,642.33116200764,424.039240935533,796.282503020086,458.043647191632,594.891307839648,767.502972632628,749.147217404131,923.648591161328,742.249878434126,647.462468702548,715.46424902234,409.428420184852,278.416079805157,446.444739801124,823.916329326183,949.901659105621,311.734885528679,477.059641929838],"Archive233_field39":[272.183254489111,272.323641975767,272.944909293481,272.885388079968,272.606143527612,272.102833855895,272.638991298183,272.906975134801,272.5803864377,272.776981596055,272.44305168406,272.746530932505,272.62436982046,272.46732223206,272.486940709979,272.186870453352,272.491928409902,272.577155166682,272.515315420431,272.790936397909,272.917401784015,272.759303215614,272.423058648416,271.997310635508,272.887322439805,272.730248330998,249.257694217449,245.514767616868,247.863976581596,247.072163978176,247.078087436799,252.373964395931,246.959386089878,249.885359303818,247.465851085577,246.284949179427,246.139745739579,246.115216826329,246.857437660878,246.433255069102,247.341868474979,250.007865957574,246.356161755041,246.963117427875,247.020699996515,247.617126710646,254.214503253637,247.28363493887,247.216904329602,253.219586798973,252.494860862935,247.150718649749,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258],"Archive233_field40":[-0.000111944861044429,3.92506995499653,-1.15813620064871e-05,-0.0436645625137498,0.142435572923216,-0.000298249782842242,0.371577871839906,0.107676489817312,-0.403099074332112,0.0383350765736995,2.16284569173419,0.108816031402724,-0.00421582879450794,1.36828011973446,-0.722499275673003,-0.000196378327553994,1.57528804971186,-0.0652035244953979,0.76624446024028,0.14006846951844,0.16549264899626,0.279219860037075,-0.630932136316355,-0.000131053241692659,0.435992465621509,0.534694086424529,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive234.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive234.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive234.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive234_field1":[0.00022460363045,606828719980000,-17061364.289,-24841860.544,-39791845.642,331943.77695,1516947.3771,19267607.666,2.4240311224e-08,55594363886,12276.100117,11318.489578,11247.706662,16460.02418,17052.357968,34126.449103]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive235.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive235.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive235.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive235_field1":[0.00022460374265,606829797460000,-17061284.402,-24842251.135,-39792193.283,332403.79441,1516773.8938,19268963.215,2.7846537605e-05,61672050956000,10097573.146,9849173.8701,11961146.176,19841333.999,16951173.785,32772253.455]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive236.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive236.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive236.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive236_field1":[0,0,0,0,385.990591313329,0,0,282.091237885846,0,100.812802283926,680.058684338848,373.843329451243,37.2913341522592,0,934.228442915376,455.685956357883,282.739056710937,294.34803523959,261.760915020439,-574.298337387655,436.534670167035,528.482164628681,238.972331832557,137.479614372577,351.852564185544,0,-288.299265085187,137.460129446809,0,193.034813090108,0,548.695629615636,0,0,-79.3836821929085,-80.8703382118509,0,0,259.473468361196,564.492465579918,365.488402753382,-408.557500507937,520.951736451643,-146.15391248504],"Archive236_field2":[0,0,0,0,5965.34276065932,0,0,7916.94414451569,0,6208.22142682196,3109.76404218389,5849.2176209996,4618.54358869215,0,7268.97621225414,7471.15625159067,3531.6636518669,7414.77993432183,6960.53513478038,7235.53301657511,6473.69250200484,4515.54623024791,6074.37059116712,5129.87028135797,4414.54691631823,0,2821.14762921868,7163.16806559602,0,4530.66685591532,0,5069.88644814176,0,0,2331.67427348506,2966.15734905871,0,0,3337.04243932144,2529.97221952273,2276.6240399569,1044.65819816935,962.171930332715,2769.926621101],"Archive236_field3":[0,0,0,0,5977.81757740507,0,0,7921.96819318742,0,6209.03990207469,3183.25497128404,5861.15224275802,4618.69413625239,0,7328.76510456356,7485.04010854345,3542.96338170572,7420.6200711444,6965.45534327401,7258.28882135967,6488.39403310029,4546.36680832472,6079.06948917492,5131.71216534284,4428.54656781417,0,2835.84033614285,7164.48686391162,0,4534.77723800787,0,5099.49168947364,0,0,2333.02522203052,2967.25958267515,0,0,3347.11498497075,2592.18270483646,2305.77509567973,1121.70851036431,1094.15059988658,2773.7798132546],"Archive236_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive236_field5":[-838.402038153085,-784.019698206061,-260.771150985007,-312.477877289951,-540.146939238723,-631.073718481326,-512.81835107633,-331.186462259865,-554.954468480477,-405.669115637566,-629.584586950384,-435.363836138664,-523.351276190869,-376.101919683809,-314.060568068329,-352.044134299854,-323.795232692489,-401.967948411931,-446.503750296698,-328.929910999149,-487.606762796602,-523.556432759856,-503.655000341477,-564.407060207861,-605.934567275684,-653.098060379983,-609.727673697004,-360.07338447096,-407.25888241406,-360.419367535578,-672.666330149706,-574.451442419243,-694.49188514893,-589.114354682579,-543.497365799561,-469.009603490611,-668.581199679414,-481.408061150118,-449.009675622989,-591.105687172793,-630.198621745499,-674.804402790824,-718.826447814908,-621.565660340647],"Archive236_field6":[96.9145213132247,90.628231199392,30.1436663079725,36.1206706572899,62.4379231835383,72.9485432486593,59.2788933632399,38.28327698969,64.1495895953441,46.8930493539607,72.7764080880488,50.3255906550691,60.4964397777886,43.475249167376,36.3036207363608,40.6943056006374,37.4288927648897,46.4652154107576,51.6133015610142,38.022432460098,56.36457672458,60.5201547137893,58.2196619805851,65.2422555965467,70.0425999249972,75.4944322794746,70.4810615178653,41.6224413892277,47.0768173782883,41.6624350695434,77.7564132997479,66.4033292218536,80.2793236922427,68.0982787310287,62.8252134948238,54.2148505670717,77.2841953827894,55.6480419650082,51.9029723184698,68.3284654747176,72.8473870283783,78.0035623727671,83.0922611432718,71.8494656446113],"Archive236_field7":[935.31655946631,874.647929405453,290.91481729298,348.598547947241,602.584862422261,704.022261729986,572.09724443957,369.469739249555,619.104058075821,452.562164991526,702.360995038433,485.689426793733,583.847715968658,419.577168851185,350.364188804689,392.738439900491,361.224125457379,448.433163822689,498.117051857713,366.952343459247,543.971339521182,584.076587473646,561.874662322062,629.649315804408,675.977167200681,728.592492659457,680.208735214869,401.695825860188,454.335699792348,402.081802605121,750.422743449454,640.854771641097,774.771208841173,657.212633413607,606.322579294385,523.224454057682,745.865395062203,537.056103115126,500.912647941459,659.43415264751,703.046008773878,752.807965163592,801.91870895818,693.415125985258],"Archive236_field8":[249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484,249.117741935484],"Archive236_field9":[0.557797164667394,0.557797164667394,0.111559432933479,0.111559432933479,0.334678298800436,0.557797164667394,0.334678298800436,0.111559432933479,0.334678298800436,0.223118865866957,0.446237731733915,0.223118865866957,0.334678298800436,0.223118865866957,0.111559432933479,0.167339149400218,0.167339149400218,0.195229007633588,0.244036259541985,0.111559432933479,0.271926117775354,0.314196684160305,0.304106723429243,0.370279269996777,0.426734472954558,0.446237731733915,0.426734472954558,0.167339149400218,0.223118865866957,0.167339149400218,0.446237731733915,0.367374080071296,0.557797164667394,0.390458015267176,0.362568157033806,0.292843511450382,0.557797164667394,0.278898582333697,0.251008724100327,0.386697718829339,0.498607811803153,0.498607811803153,0.502017448200654,0.482514189421297],"Archive236_field10":[0,0,0,0,180.685720821299,0,0,166.953167437283,0,-32.3175158680336,483.718090255739,240.853215331873,-99.6557203118979,0,753.322390325413,315.648909564923,103.764922034254,164.288065800547,113.786911140582,-588.426857877214,267.678968588892,350.83270834411,46.3492073242702,-48.9122365870471,184.194594914765,0,-337.802208895989,29.2336584182579,0,158.472945088104,0,349.008030042478,0,0,-149.763941802771,-150.107759874114,0,0,173.932903783685,381.814561538471,200.09725475909,-316.144335181397,364.796205764419,-196.558123643416],"Archive236_field11":[0,0,0,0,3454.4432118712,0,0,5928.22605901799,0,3896.02848464917,1479.18724410039,3750.58322216669,2558.59179625756,0,5275.26175686521,5282.05955899925,2291.68519740527,5164.08751356035,4577.40798187989,5275.52779981198,4084.61287536654,2550.21086985484,3630.39696791143,2744.50017355938,2090.36963886991,0,1372.65820849902,5013.67009764293,0,2969.54609953304,0,2734.25619604575,0,0,1219.88495970757,1683.72888706593,0,0,2009.05201933683,1279.68538776123,867.4569848561,510.5132388364,497.85104767969,1081.3274718564],"Archive236_field12":[0,0,0,0,3459.16539554728,0,0,5930.57649532803,0,3896.16251907304,1556.27057221743,3758.30876561972,2560.53182805201,0,5328.77858680676,5291.48253506754,2294.03317392125,5166.70014770301,4578.82204215502,5308.24262196636,4093.37444803611,2574.22980131336,3630.69282556926,2744.93599370831,2098.46917439951,0,1413.61270852195,5013.7553245829,0,2973.77163070348,0,2756.44037676288,0,0,1229.04375560232,1690.40684591453,0,0,2016.5670510598,1335.43141008904,890.23622254869,600.475651208705,617.1968384688,1099.04694957111],"Archive236_field13":[8413892.64615025,7868131.60390769,2617002.78595967,3135912.35966735,5420714.8278323,6333222.34140275,5146455.22861215,3323664.79624897,5569317.71251673,4071145.14696582,6318277.96833688,4369150.37486826,5252159.76787937,3774419.70823642,3151795.65872356,3532984.67550364,3249489.15106573,4034001.60212123,4480946.43159006,3301018.88272039,4893441.05692447,5254218.6432978,5054495.23107694,5664180.42563382,6080935.12138887,6554250.48769116,6119001.33398386,3613563.2593983,4087099.45812101,3617035.41742107,6750630.40284029,5764982.12908583,6969663.59735715,5912133.69128313,5454338.46913905,4706806.84707848,6709633.54493872,4831233.18071996,4506094.97097234,5932117.9673619,6324440.19434779,6772087.30877968,7213876.26448472,6237802.9878844],"Archive236_field14":[-799.772659864494,-752.832596883226,-289.634822014337,-332.870085250484,-508.725440240902,-568.580607780636,-502.087777745791,-351.16423124555,-534.819104350588,-402.558981143853,-586.21866410439,-428.012406900586,-502.096646130609,-379.177896577094,-335.367222825268,-360.282478198508,-336.667685106751,-402.814998739168,-436.41609458444,-341.382059965444,-471.215014326179,-498.597307974004,-482.935728515558,-529.211705178774,-555.323656674059,-632.444899929193,-573.916901940246,-365.033319982866,-396.814241007932,-364.225168338042,-636.285062866601,-538.800152105145,-632.238302983507,-574.744648107639,-520.727035715342,-457.033112046255,-611.966138735893,-469.56984310782,-434.048249458468,-555.082487719795,-574.893712205245,-638.75715583278,-678.964178415716,-570.375963175851],"Archive236_field15":[92.4491842373352,87.0231791380828,33.4801430027478,38.4778942601432,58.8057760801915,65.7246940291684,58.0384999357185,40.5925937971956,61.8220556828379,46.533535443019,67.763553320682,49.4758071226414,58.0395250707139,43.8308146534045,38.7665492033571,41.6466114384317,38.9168752686103,46.5631296252474,50.4472257643954,39.4618302686336,54.4697835535168,57.6350214233855,55.8246316495629,61.1738721362596,64.1922656569796,73.1070440485218,66.3415393736817,42.1957818082702,45.8694760598046,42.102364060886,73.5509451078077,62.2822422280757,73.0831626131426,66.4372221367609,60.1930924600069,52.8304360707775,70.739815382775,54.2796110898898,50.1735162950901,64.1643878934551,66.4544531011515,73.8367050362865,78.4844088463096,65.9322269319959],"Archive236_field16":[892.221844101829,839.855776021309,323.114965017085,371.347979510628,567.531216321094,634.305301809805,560.12627768151,391.756825042746,596.641160033426,449.092516586872,653.982217425072,477.488214023228,560.136171201323,423.008711230499,374.133772028625,401.92908963694,375.584560375361,449.378128364416,486.863320348835,380.843890234077,525.684797879695,556.23232939739,538.760360165121,590.385577315034,619.515922331039,705.551943977715,640.258441313928,407.229101791136,442.683717067737,406.327532398928,709.836007974408,601.082394333221,705.32146559665,641.1818702444,580.920128175349,509.863548117032,682.705954118668,523.84945419771,484.221765753558,619.246875613251,641.348165306396,712.593860869067,757.448587262025,636.308190107848],"Archive236_field17":[255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871,255.56935483871],"Archive236_field18":[0.557797164667394,0.557797164667394,0.111559432933479,0.111559432933479,0.334678298800436,0.557797164667394,0.334678298800436,0.111559432933479,0.334678298800436,0.223118865866957,0.446237731733915,0.223118865866957,0.334678298800436,0.223118865866957,0.111559432933479,0.167339149400218,0.167339149400218,0.195229007633588,0.244036259541985,0.111559432933479,0.271926117775354,0.314196684160305,0.304106723429243,0.370279269996777,0.426734472954558,0.446237731733915,0.426734472954558,0.167339149400218,0.223118865866957,0.167339149400218,0.446237731733915,0.367374080071296,0.557797164667394,0.390458015267176,0.362568157033806,0.292843511450382,0.557797164667394,0.278898582333697,0.251008724100327,0.386697718829339,0.498607811803153,0.498607811803153,0.502017448200654,0.482514189421297],"Archive236_field19":[0,0,0,0,115.666237365036,0,0,110.588115762416,0,-88.7298796622801,405.753010526479,206.018140784422,-135.423921986265,0,627.01741097028,237.090403108331,20.8088765349592,118.271617474233,53.9912710316458,-544.321009012032,212.628818220201,295.716361644579,-18.7361878982282,-93.7299103746612,134.781199062361,0,-321.335602894982,10.354605738011,0,157.545084652485,0,283.657315269458,0,0,-157.857710182634,-164.829625905004,0,0,152.593372629781,316.214979101259,153.6922262298,-281.283314295152,305.478620139471,-189.559391797227],"Archive236_field20":[0,0,0,0,2662.3289567475,0,0,5090.87641204986,0,3088.45721908444,1109.15726155597,2994.25442118922,1958.89615838938,0,4480.36234936922,4408.46406488559,1840.73649235884,4265.49477298268,3688.53126728123,4471.28598558013,3237.49753902246,1956.06144821869,2829.75510354965,2081.30582289951,1544.4542565197,0,1041.5095597554,4163.31507950101,0,2397.20264900761,0,2075.46150850882,0,0,932.021667070608,1299.96757745674,0,0,1567.9112785204,964.845499147772,614.169681571818,397.250575261186,385.371833330704,772.826341230322],"Archive236_field21":[0,0,0,0,2664.84036152307,0,0,5092.0774124235,0,3089.73153941563,1181.04417208403,3001.33353913614,1963.57169413261,0,4524.0244932256,4414.83490864988,1840.85410710468,4267.13414762678,3688.92639762016,4504.29614098553,3244.47242699244,1978.28828934302,2829.81713027578,2083.41527894327,1550.32413452881,0,1089.95354614303,4163.32795598191,0,2402.37403293227,0,2094.75582009159,0,0,945.295427130154,1310.37571254001,0,0,1575.31917866888,1015.34169136982,633.107967226365,486.752835067459,491.760752080708,795.734451131771],"Archive236_field22":[8026222.49851592,7555149.39425921,2906667.90885174,3340561.01364232,5105380.28984481,5706064.60486159,5038767.16497899,3524154.29401478,5367246.64819389,4039932.98793668,5883073.61204594,4295374.15106373,5038856.16480773,3805289.07422598,3365621.36240195,3615661.64668329,3378672.32068786,4042502.28579676,4379710.45129444,3425984.04245101,4728939.53422223,5003738.10182316,4846564.28516259,5310972.86484326,5573022.74862789,6346983.01107641,5759617.6786186,3663339.33701965,3982280.90148644,3655229.0261283,6385521.46545594,5407198.97047096,6344909.68057037,5767924.63288846,5225823.86143596,4586615.21024475,6141465.74088209,4712429.20458814,4355947.63371288,5570602.46623541,5769420.58501832,6410330.47579013,6813833.27783411,5724082.12732647],"Archive236_field23":[-770.321381920493,-728.277510245612,-307.140950515429,-343.843380401826,-483.205379329483,-532.283341379009,-491.254892658216,-351.060442666156,-518.773464598611,-394.201268973282,-557.958556268575,-416.174668421796,-484.230733071554,-379.454616533961,-337.825565869835,-356.519640826333,-341.043230923775,-393.560822508143,-421.525284957301,-339.795482222166,-453.097684809518,-478.110439965722,-463.679895670586,-503.651556173327,-522.283691503779,-614.423389500041,-548.654430406773,-360.205724829856,-389.14298118725,-361.778881064601,-609.589401903348,-512.649246536569,-594.054667815983,-560.733058831742,-502.792344483045,-445.280214119097,-577.228543118557,-459.765194851363,-420.512895043139,-529.753466652794,-540.936288374156,-613.729288694543,-651.247661782303,-538.471442714678],"Archive236_field24":[89.044783515346,84.1847503664502,35.5037521860801,39.7463449537552,55.8558017545531,61.5289358627862,56.7862798492595,40.5805964259678,59.9672707169605,45.5674313098886,64.4968451084722,48.107431682345,55.9743268326987,43.8628019112321,39.0507197188686,41.2116487759993,39.4226635528028,45.4933993302761,48.7259326122943,39.278430878462,52.3755229987011,55.2668556557978,53.5987665660656,58.2192638542778,60.3730330418763,71.0238596368641,63.4213409194307,41.6377391842582,44.9827219256799,41.8195871241523,70.4650780826116,59.2593458373787,68.6693509143884,64.8175618714991,58.119943855183,51.4718677171476,66.724346314686,53.1462493503211,48.6089060791415,61.2364966905084,62.5291674674597,70.9436255197618,75.2805366945737,62.2442452865385],"Archive236_field25":[859.366165435839,812.462260612062,342.644702701509,383.589725355581,539.061181084036,593.812277241795,548.041172507476,391.641039092124,578.740735315572,439.76870028317,622.455401377047,464.282100104141,540.205059904252,423.317418445193,376.876285588704,397.731289602332,380.465894476578,439.054221838419,470.251217569595,379.073913100628,505.473207808219,533.37729562152,517.278662236652,561.870820027605,582.656724545655,685.447249136905,612.075771326204,401.843464014114,434.12570311293,403.598468188753,680.054479985959,571.908592373947,662.724018730371,625.550620703241,560.912288338228,496.752081836245,643.952889433243,512.911444201684,469.121801122281,590.989963343303,603.465455841615,684.672914214305,726.528198476877,600.715688001216],"Archive236_field26":[258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15,258.15],"Archive236_field27":[0.557797164667394,0.557797164667394,0.111559432933479,0.111559432933479,0.334678298800436,0.557797164667394,0.334678298800436,0.111559432933479,0.334678298800436,0.223118865866957,0.446237731733915,0.223118865866957,0.334678298800436,0.223118865866957,0.111559432933479,0.167339149400218,0.167339149400218,0.195229007633588,0.244036259541985,0.111559432933479,0.271926117775354,0.314196684160305,0.304106723429243,0.370279269996777,0.426734472954558,0.446237731733915,0.426734472954558,0.167339149400218,0.223118865866957,0.167339149400218,0.446237731733915,0.367374080071296,0.557797164667394,0.390458015267176,0.362568157033806,0.292843511450382,0.557797164667394,0.278898582333697,0.251008724100327,0.386697718829339,0.498607811803153,0.498607811803153,0.502017448200654,0.482514189421297]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive237.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive237.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive237.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive237_field1":[0,0,0,0,17.4239830014713,0,0,0,0,17.4239830014713,0,0,0,0,17.4239830014713],"Archive237_field2":[0,0,0,0,229.508752607106,0,0,0,0,229.508752607106,0,0,0,0,229.508752607106],"Archive237_field3":[0,0,0,0,0.145102779356043,0,0,0,0,0.104633827947273,0,0,0,0,0.064164876538504],"Archive237_field4":[0,0,0,0,230.169250252335,0,0,0,0,230.169228297667,0,0,0,0,230.169213458353],"Archive237_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,4497885,4183033.05,1034513.55,1349365.5,2766199.275,0,0,0,0,0],"Archive237_field6":[-895.325485665375,-833.881722742963,-213.0382869031,-275.476101396949,-558.27215136038,-895.325485665375,-833.881722742963,-213.0382869031,-275.476101396949,-558.27215136038,-895.325485665375,-833.881722742963,-213.0382869031,-275.476101396949,-558.27215136038],"Archive237_field7":[103.494549051832,96.39199848501,24.6260178971958,31.8434751887422,64.5330949227921,103.494549051832,96.39199848501,24.6260178971958,31.8434751887422,64.5330949227921,103.494549051832,96.39199848501,24.6260178971958,31.8434751887422,64.5330949227921],"Archive237_field8":[998.820034717206,930.273721227973,237.664304800296,307.319576585691,622.805246283172,998.820034717206,930.273721227973,237.664304800296,307.319576585691,622.805246283172,998.820034717206,930.273721227973,237.664304800296,307.319576585691,622.805246283172],"Archive237_field9":[272.239897305369,272.302877625043,272.90919210007,272.861800826122,272.561378263669,232.263820033103,231.317019953524,226.914154255672,231.223652230295,233.429239723617,238.15,238.15,238.15,238.15,238.15],"Archive237_field10":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive237_field11":[252.15,252.15,252.15,252.15,252.15,252.15,252.15,252.15,252.15,252.15,252.15,252.15,252.15,252.15,252.15],"Archive237_field12":[0.453072083681804,0.453072083681804,0.0559121635769575,0.0559121635769575,0.233219000179,0.453072083681804,0.453072083681804,0.0559121635769575,0.0559121635769575,0.233219000179,0.453072083681804,0.453072083681804,0.0559121635769575,0.0559121635769575,0.233219000179],"Archive237_field13":[0,0,0,0,33.6227272429623,0,0,0,0,33.6227272429623,0,0,0,0,33.6227272429623],"Archive237_field14":[0,0,0,0,425.785138384171,0,0,0,0,425.785138384171,0,0,0,0,425.785138384171],"Archive237_field15":[0,0,0,0,0.266216952045705,0,0,0,0,0.191969435960166,0,0,0,0,0.117721919874626],"Archive237_field16":[0,0,0,0,427.110691422666,0,0,0,0,427.110651597858,0,0,0,0,427.110624679991],"Archive237_field17":[8985155.303708,8368528.43321097,2137973.42319336,2764576.22746226,5602612.75035677,4492577.651854,4184264.21660548,1068986.71159668,1382288.11373113,2801306.37517839,-1.27837580521373e-10,2.55675161042745e-10,1.27837580521373e-10,1.59796975651716e-10,-2.55675161042745e-10],"Archive237_field18":[-885.796291177601,-826.81965223994,-224.818909719252,-286.589301579401,-566.641171822239,-885.796291177601,-826.81965223994,-224.818909719252,-286.589301579401,-566.641171822239,-885.796291177601,-826.81965223994,-224.818909719252,-286.589301579401,-566.641171822239],"Archive237_field19":[102.393028205917,95.575663181498,25.987791090775,33.128098110596,65.5005062302698,102.393028205917,95.575663181498,25.987791090775,33.128098110596,65.5005062302698,102.393028205917,95.575663181498,25.987791090775,33.128098110596,65.5005062302698],"Archive237_field20":[988.189319383518,922.395315421438,250.806700810027,319.717399689997,632.141678052509,988.189319383518,922.395315421438,250.806700810027,319.717399689997,632.141678052509,988.189319383518,922.395315421438,250.806700810027,319.717399689997,632.141678052509],"Archive237_field21":[272.267709062621,272.328655324839,272.923310302456,272.866529090202,272.607825794798,232.012911106643,230.87919071981,251.957184782252,249.305652377775,231.426818140142,251.476490713587,251.523636363636,251.995092864125,251.947947214076,251.735791788856],"Archive237_field22":[-8.93154535645684e-06,-8.93154535645683e-06,-8.93154535645683e-06,-8.93154535645683e-06,0.071479157487724,0,0,0,0,0,0,0,0,0,0],"Archive237_field23":[249.15,249.15,249.15,249.15,249.15,249.15,249.15,249.15,249.15,249.15,249.15,249.15,249.15,249.15,249.15],"Archive237_field24":[0.408331425014279,0.408331425014279,0.0395827805001034,0.0395827805001034,0.194684832297802,0.408331425014279,0.408331425014279,0.0395827805001034,0.0395827805001034,0.194684832297802,0.408331425014279,0.408331425014279,0.0395827805001034,0.0395827805001034,0.194684832297802],"Archive237_field25":[0,0,0,0,32.7616661956099,0,0,0,0,32.7616661956099,0,0,0,0,32.7616661956099],"Archive237_field26":[0,0,0,0,409.098853508565,0,0,0,0,409.098853508565,0,0,0,0,409.098853508565],"Archive237_field27":[0,0,0,0,0.247684335214499,0,0,0,0,0.178605537873785,0,0,0,0,0.109526740533071],"Archive237_field28":[0,0,0,0,410.408650081191,0,0,0,0,410.408614205249,0,0,0,0,410.408589956451],"Archive237_field29":[8889523.83363067,8297656.10660871,2256199.39494581,2876104.19260929,5686601.14317442,4444761.91681533,4148828.05330435,1128099.69747291,1438052.09630464,2843300.57158721,1.27837580521373e-10,3.83512741564118e-10,3.19593951303432e-11,1.27837580521373e-10,-3.83512741564118e-10],"Archive237_field30":[-876.396813064055,-819.791729778051,-236.101982141389,-297.169823098221,-573.936552228626,-876.396813064055,-819.791729778051,-236.101982141389,-297.169823098221,-573.936552228626,-876.396813064055,-819.791729778051,-236.101982141389,-297.169823098221,-573.936552228626],"Archive237_field31":[101.306501837285,94.7632751978991,27.2920502802478,34.3511463995763,66.3438108355882,101.306501837285,94.7632751978991,27.2920502802478,34.3511463995763,66.3438108355882,101.306501837285,94.7632751978991,27.2920502802478,34.3511463995763,66.3438108355882],"Archive237_field32":[977.70331490134,914.55500497595,263.394032421636,331.520969497797,640.280363064214,977.70331490134,914.55500497595,263.394032421636,331.520969497797,640.280363064214,977.70331490134,914.55500497595,263.394032421636,331.520969497797,640.280363064214],"Archive237_field33":[272.264674861804,272.327365414291,272.926333545384,272.86640075275,272.600944837017,232.770708409072,230.917650529879,265.955544936874,261.12205376564,230.383056168405,248.477285431163,248.523452009847,248.989930883668,248.943017411273,248.730534883002],"Archive237_field34":[-9.28634005781008e-06,-9.28634005781007e-06,-9.28634005781007e-06,-9.28634005781007e-06,0.074318579482654,0,0,0,0,0,0,0,0,0,0],"Archive237_field35":[246.15,246.15,246.15,246.15,246.15,246.15,246.15,246.15,246.15,246.15,246.15,246.15,246.15,246.15,246.15],"Archive237_field36":[0.368008885692658,0.368008885692658,0.0280224625892509,0.0280224625892509,0.162517564596935,0.368008885692658,0.368008885692658,0.0280224625892509,0.0280224625892509,0.162517564596935,0.368008885692658,0.368008885692658,0.0280224625892509,0.0280224625892509,0.162517564596935]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive238.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive238.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive238.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive238_field1":[0,0,0,0,385.990591313329,0,0,282.091237885846,0,100.812802283926,680.058684338848,373.843329451243,37.2913341522592,0,934.228442915376,455.685956357883,282.739056710937,294.34803523959,261.760915020439,-574.298337387655,436.534670167035,528.482164628681,238.972331832557,137.479614372577,351.852564185544,0,-288.299265085187,137.460129446809,0,193.034813090108,0,548.695629615636,0,0,-79.3836821929085,-80.8703382118509,0,0,259.473468361196,564.492465579918,365.488402753382,-408.557500507937,520.951736451643,-146.15391248504],"Archive238_field2":[0,0,0,0,5965.34276065932,0,0,7916.94414451569,0,6208.22142682196,3109.76404218389,5849.2176209996,4618.54358869215,0,7268.97621225414,7471.15625159067,3531.6636518669,7414.77993432183,6960.53513478038,7235.53301657511,6473.69250200484,4515.54623024791,6074.37059116712,5129.87028135797,4414.54691631823,0,2821.14762921868,7163.16806559602,0,4530.66685591532,0,5069.88644814176,0,0,2331.67427348506,2966.15734905871,0,0,3337.04243932144,2529.97221952273,2276.6240399569,1044.65819816935,962.171930332715,2769.926621101],"Archive238_field3":[0,0,0,0,5977.81757740507,0,0,7921.96819318742,0,6209.03990207469,3183.25497128404,5861.15224275802,4618.69413625239,0,7328.76510456356,7485.04010854345,3542.96338170572,7420.6200711444,6965.45534327401,7258.28882135967,6488.39403310029,4546.36680832472,6079.06948917492,5131.71216534284,4428.54656781417,0,2835.84033614285,7164.48686391162,0,4534.77723800787,0,5099.49168947364,0,0,2333.02522203052,2967.25958267515,0,0,3347.11498497075,2592.18270483646,2305.77509567973,1121.70851036431,1094.15059988658,2773.7798132546],"Archive238_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive238_field5":[-833.586732277946,-779.186333461092,-259.419324490853,-311.186638877966,-537.080467160441,-627.324910178644,-509.772725226904,-329.505503079051,-552.002119527066,-403.403049835604,-625.991710973567,-433.088717113982,-520.304000939861,-373.964504694994,-312.404148525813,-350.180217090412,-322.044527150759,-399.84553905273,-444.034742664255,-327.350009318244,-484.937219101711,-520.707687761028,-500.785230127342,-561.125444369677,-602.426903723192,-649.127291984445,-606.089741858461,-358.263499258203,-405.290901359532,-358.689585305903,-668.914800412668,-571.21425990037,-690.437957072518,-585.567492020707,-540.276467469516,-466.289116464812,-664.534530358639,-478.93677089216,-446.68886651062,-587.828452470188,-626.522631835552,-670.710922298897,-714.714022825912,-617.878109196201],"Archive238_field6":[96.3578992600461,90.0695216432669,29.9874028310037,35.9714108190451,62.0834564002254,72.5152022671061,58.9268362857708,38.0889676405446,63.8083147981124,46.6311049973545,72.3610919991256,50.0625997972542,60.1441920388498,43.2281761152338,36.1121480302466,40.4788473408764,37.2265211319307,46.2198769243069,51.3278982796195,37.8398047848788,56.0559926115391,60.190855946204,57.8879328173372,64.8629194145974,69.6371339091149,75.0354339698486,70.0605372268232,41.4132289218861,46.8493299281465,41.4624820528089,77.3227577358155,66.0291292796502,79.8107125950784,67.6882815203871,62.4528959125068,53.9003776938605,76.8164233566147,55.362374825048,51.6346999456115,67.9496357271973,72.4224634400965,77.5303792406577,82.6168881347293,71.4232056431814],"Archive238_field7":[929.944631537992,869.255855104359,289.406727321857,347.158049697011,599.163923560666,699.84011244575,568.699561512675,367.594470719595,615.810434325179,450.034154832959,698.352802972693,483.151316911237,580.448192978711,417.192680810228,348.516296556059,390.659064431288,359.27104828269,446.065415977037,495.362640943875,365.189814103123,540.99321171325,580.898543707233,558.673162944679,625.988363784274,672.064037632307,724.162725954294,676.150279085284,399.676728180089,452.140231287678,400.152067358712,746.237558148483,637.243389180021,770.248669667596,653.255773541094,602.729363382023,520.189494158672,741.350953715253,534.299145717208,498.323566456232,655.778088197386,698.945095275648,748.241301539555,797.330910960642,689.301314839382],"Archive238_field8":[247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71,247.71],"Archive238_field9":[0.267426668449765,0.267426668449765,0.0534853336899531,0.0534853336899531,0.160456001069859,0.267426668449765,0.160456001069859,0.0534853336899531,0.160456001069859,0.106970667379906,0.213941334759812,0.106970667379906,0.160456001069859,0.106970667379906,0.0534853336899531,0.0802280005349296,0.0802280005349296,0.0935993339574178,0.116999167446772,0.0534853336899531,0.130370500869261,0.150636428087719,0.145798962510593,0.177524300666345,0.204590818389965,0.213941334759812,0.204590818389965,0.0802280005349296,0.106970667379906,0.0802280005349296,0.213941334759812,0.176131455180211,0.267426668449765,0.187198667914836,0.173827334492347,0.140399000936127,0.267426668449765,0.133713334224883,0.120342000802394,0.185395855687646,0.239049307561565,0.239049307561565,0.240684001604789,0.231333485234941],"Archive238_field10":[0,0,0,0,178.908924376011,0,0,165.59996786014,0,-31.0192076814438,476.137013923623,238.254343209695,-97.1483455150405,0,741.721178686626,311.574795098095,102.245246172961,162.952069752041,113.089431829476,-577.624150474211,264.611823461559,345.956782257266,46.6348856830552,-46.9815748068265,182.078460416596,0,-331.275508585592,30.1523084668461,0,157.198338841755,0,344.226284000278,0,0,-146.733384027068,-147.176964910063,0,0,171.925768675132,375.885842894715,197.156202822154,-310.180128740504,358.742680195528,-192.417530803152],"Archive238_field11":[0,0,0,0,3394.57341461723,0,0,5829.40538212825,0,3829.15916784484,1453.46894271727,3686.5502825105,2513.81473236612,0,5186.86992866356,5193.16443466589,2252.61923758745,5076.96111573398,4499.3826817779,5187.68076274331,4014.61649650173,2506.14029828153,3567.65145902343,2696.43719581703,2053.66405425005,0,1348.01120884651,4929.36192486458,0,2919.06719406489,0,2686.75532727641,0,0,1198.1690711084,1654.25794881718,0,0,1974.47799790081,1257.53786844536,852.201317218853,501.149489857609,489.260354269626,1061.92632876366],"Archive238_field12":[0,0,0,0,3399.28478807638,0,0,5831.75706443102,0,3829.28480580061,1529.4699812261,3694.24120998299,2515.69121906828,0,5239.63452578389,5202.50283021731,2254.93847364269,5079.5755283007,4500.80367675312,5219.73958692845,4023.32760673295,2529.9061820274,3567.95624211322,2696.84645824655,2061.71981934172,0,1388.12019716035,4929.45414300717,0,2923.29687188976,0,2708.71665613899,0,0,1207.12046165609,1660.79210626284,0,0,1981.9489988718,1312.51348848794,874.710039602152,589.374688504705,606.689380864632,1079.2182512735],"Archive238_field13":[8365568.01805053,7819625.74367214,2603436.35544014,3122953.96872288,5389940.84864933,6295600.6883361,5115890.45446888,3306795.31186521,5539689.03078941,4048403.74902168,6282221.19439766,4346318.1221306,5221578.4409521,3752969.40225222,3135172.4450701,3514279.09203905,3231919.71800997,4012701.88708375,4456168.38452368,3285163.57401445,4866650.5041337,5225629.69252521,5025695.27902285,5631247.34327966,6045733.50781157,6514401.32525786,6082492.39608703,3595399.9210606,4067349.52841076,3599675.96298348,6712981.43846538,5732494.96308396,6928979.87513567,5876538.68994777,5422014.7252311,4679505.04586776,6669022.66890307,4806432.22606849,4482804.18941998,5899228.85246339,6287549.31972782,6731006.65315048,7172605.48889241,6200796.08899267],"Archive238_field14":[-791.014038913018,-743.955992993841,-286.484024317522,-329.931729826657,-503.422392899786,-561.728707733165,-496.384017893745,-347.739882327999,-529.338102694903,-398.305545118219,-579.803867810466,-423.79260093259,-496.60861263662,-374.960478296969,-331.965604475521,-356.641229951126,-333.079641432693,-398.803909005276,-431.93204391813,-338.182516358804,-466.434291174889,-493.508887494939,-477.834716657486,-523.487853992635,-549.313929054288,-625.115210048694,-567.444601274318,-361.502411381191,-393.029012711002,-360.784134091251,-629.484385805996,-533.144032161157,-624.984058526467,-568.167217290971,-514.896949318721,-452.005097289319,-604.642802885878,-464.854127156842,-429.754889869181,-549.246549115545,-568.34180706173,-631.282821724539,-671.459569069968,-563.832251820171],"Archive238_field15":[91.4367373225517,85.9970940647189,33.1159286561149,38.1382370355786,58.1927738793645,64.932653238512,57.3791776409346,40.196758480663,61.1884829723661,46.0418623582674,67.0220392452665,48.9880214818479,57.4051395196093,43.3433050157893,38.3733414115651,41.225703789334,38.5021177664836,46.0994703975565,49.9288949349202,39.0919811712467,53.9171590671083,57.0468288707345,55.2349836049003,60.5122273971857,63.4975752232874,72.2597734625535,65.5933781189506,41.7876287965171,45.4319251334419,41.7046000149101,72.7648254039646,61.6284268365132,72.2446130903005,65.6769084327622,59.5191675330256,52.2492260770641,69.8932792866991,53.7345010672031,49.6772282727734,63.4897864844578,65.6970900202219,72.9727143978203,77.6169185620682,65.1758110064756],"Archive238_field16":[882.450776235569,829.95308705856,319.599952973637,368.069966862235,561.61516677915,626.661360971677,553.76319553468,387.936640808662,590.526585667269,444.347407476487,646.825907055732,472.780622414438,554.01375215623,418.303783312759,370.338945887086,397.86693374046,371.581759199177,444.903379402833,481.86093885305,377.27449753005,520.351450241998,550.555716365673,533.069700262387,584.000081389821,612.811504277575,697.374983511247,633.037979393268,403.290040177708,438.460937844444,402.488734106161,702.24921120996,594.77245899767,697.228671616768,633.844125723733,574.416116851747,504.254323366383,674.536082172577,518.588628224045,479.432118141955,612.736335600003,634.038897081952,704.25553612236,749.076487632036,629.008062826646],"Archive238_field17":[247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47,247.47],"Archive238_field18":[0.262945133387997,0.262945133387997,0.0525890266775995,0.0525890266775995,0.157767080032798,0.262945133387997,0.157767080032798,0.0525890266775995,0.157767080032798,0.105178053355199,0.210356106710398,0.105178053355199,0.157767080032798,0.105178053355199,0.0525890266775995,0.0788835400163992,0.0788835400163992,0.0920307966857991,0.115038495857249,0.0525890266775995,0.128185752526649,0.148112063416208,0.143355664068264,0.174549349131541,0.201162286257229,0.210356106710398,0.201162286257229,0.0788835400163992,0.105178053355199,0.0788835400163992,0.210356106710398,0.173179844944606,0.262945133387997,0.184061593371598,0.170914336702198,0.138046195028699,0.262945133387997,0.131472566693999,0.118325310024599,0.182288992664646,0.235043320202344,0.235043320202344,0.236650620049198,0.227456799596029],"Archive238_field19":[0,0,0,0,113.90743648168,0,0,109.464510278818,0,-84.3557557019612,393.466646138231,201.372417276872,-129.690347209862,0,609.371970516239,231.792453773005,21.0163808376506,116.702329252519,54.3390961327688,-526.019488178022,207.942838483154,287.630497255086,-16.3283713336712,-88.983227221028,131.923098513986,0,-309.700009991866,11.957168538676,0,154.253826235356,0,276.118603417797,0,0,-151.948753256409,-158.783522318688,0,0,148.876476912296,306.742239474742,149.291955004928,-271.108496299451,295.754528695846,-182.141306427859],"Archive238_field20":[0,0,0,0,2574.68145566781,0,0,4931.88743009295,0,2988.63561270159,1071.55690835631,2898.23047660433,1893.52781084676,0,4339.27809425719,4269.13863703446,1781.80656429851,4130.43521234087,3570.25680799359,4331.58190719203,3132.98351246128,1891.88251951915,2737.17985188509,2011.42275346226,1491.59296123437,0,1005.11504761492,4031.950025175,0,2320.86786000742,0,2006.43495727328,0,0,900.155323469865,1256.74307357702,0,0,1517.076143244,932.656765346387,592.49933006112,382.948029338023,372.43906078547,745.017004519729],"Archive238_field21":[0,0,0,0,2577.19993447259,0,0,4933.1020770018,0,2989.82586767662,1141.51224674526,2905.21784827887,1897.9639502924,0,4381.85675002631,4275.42658033635,1781.93050393128,4132.083551551,3570.67030295337,4363.40444156353,3139.87673538797,1913.62242112004,2737.22855408095,2013.39005358434,1497.41552881137,0,1051.74633592464,4031.96775525154,0,2325.98836336806,0,2025.34508687325,0,0,912.889933117522,1266.73413151448,0,0,1524.36354908463,981.804177738293,611.018448127444,469.200394223646,475.585528840886,766.958794545572],"Archive238_field22":[7938324.21933665,7466067.08196878,2875047.66896165,3311072.76580029,5052160.86885688,5637301.47118818,4981526.34149501,3489788.79528734,5312241.34354805,3997247.07775476,5818697.08991474,4253025.73969712,4983780.29123444,3762964.62481141,3331483.97924267,3579119.42653441,3342664.04195118,4002248.47333062,4334710.1779061,3393874.6066459,4680961.96554345,4952672.59661083,4795372.41752937,5253530.41216411,5512711.34583508,6273424.95542097,5694664.06388658,3627904.44472942,3944293.75083291,3620696.07961018,6317272.38672622,5350436.24347747,6272108.76726997,5701915.97086179,5167315.27149144,4536155.91450961,6067971.45192561,4665104.02411902,4312861.06541785,5512035.14570044,5703668.08920291,6335320.82418344,6738519.79514564,5658411.86133406],"Archive238_field23":[-758.119461596315,-715.886510485492,-302.251291139658,-339.317369404422,-475.979703993785,-522.657622139731,-483.242676158102,-346.316929555718,-511.044806377059,-388.280016377636,-549.008122398833,-410.33010766353,-476.608874977217,-373.323537452699,-333.051813017965,-351.48372200008,-335.840498293727,-388.063048932612,-415.409301360259,-335.293542955721,-446.559575334786,-471.075223374463,-456.666192704192,-495.74500975631,-514.014266170039,-604.193283191096,-539.66676884761,-355.294244228962,-383.663126532985,-356.855391158415,-600.13004792377,-504.842888936879,-583.963198509131,-551.542367733601,-494.672664635377,-438.240671854631,-567.014241320794,-453.024187607979,-414.493021680661,-521.646179488618,-531.814744941688,-603.277706088986,-640.749137515671,-529.36117521088],"Archive238_field24":[87.6343107188762,82.7524210593916,34.9385352898623,39.2231637479484,55.0205546601322,60.416257302957,55.8601130564436,40.032273209276,59.0738816531824,44.8829680872731,63.4622257080439,47.4318336012368,55.093283257999,43.1540839367351,38.4989009595467,40.629525116694,38.8212571637241,44.8578878809781,48.0189595901717,38.7580322282513,51.619754618852,54.4536245122062,52.7880222755118,57.3053119238483,59.4171343664386,69.841317359058,62.3824182092112,41.069999878157,44.3492818020681,41.2504596104602,69.371630403402,58.3569751660951,67.5028342878602,63.7551700978863,57.1813549087786,50.6581365502627,65.5436309487505,52.3670271389812,47.9130428551255,60.2993402680409,61.4747687718854,69.7354818379853,74.0669668229675,61.1911500243766],"Archive238_field25":[845.753772315192,798.638931544883,337.18982642952,378.54053315237,531.000258653917,583.073879442688,539.102789214545,386.349202764994,570.118688030242,433.162984464909,612.470348106877,457.761941264766,531.702158235216,416.477621389434,371.550713977512,392.113247116774,374.661755457451,432.92093681359,463.428260950431,374.051575183972,498.179329953638,525.528847886669,509.454214979704,553.050321680159,573.431400536478,674.034600550154,602.049187056822,396.364244107119,428.012408335053,398.105850768875,669.501678327172,563.199864102974,651.466032796991,615.297537831488,551.854019544155,488.898808404893,632.557872269544,505.39121474696,462.406064535786,581.945519756659,593.289513713574,673.013187926972,714.816104338639,590.552325235257],"Archive238_field26":[247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374,247.374],"Archive238_field27":[0.261173618751923,0.261173618751923,0.0522347237503847,0.0522347237503847,0.156704171251154,0.261173618751923,0.156704171251154,0.0522347237503847,0.156704171251154,0.104469447500769,0.208938895001539,0.104469447500769,0.156704171251154,0.104469447500769,0.0522347237503847,0.078352085625577,0.078352085625577,0.0914107665631731,0.114263458203966,0.0522347237503847,0.127322139141563,0.147114202437607,0.142389847915712,0.173373374802907,0.199807015179422,0.208938895001539,0.199807015179422,0.078352085625577,0.104469447500769,0.078352085625577,0.208938895001539,0.172013097243138,0.261173618751923,0.182821533126346,0.16976285218875,0.13711614984476,0.261173618751923,0.130586809375962,0.117528128438366,0.181060874789484,0.233459785734583,0.233459785734583,0.235056256876731,0.225924377054615]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive239.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive239.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive239.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive239_field1":[0,0,0,0,385.990591313329,0,0,282.091237885846,0,100.812802283926,680.058684338848,373.843329451243,37.2913341522592,0,934.228442915376,455.685956357883,282.739056710937,294.34803523959,261.760915020439,-574.298337387655,436.534670167035,528.482164628681,238.972331832557,137.479614372577,351.852564185544,0,-288.299265085187,137.460129446809,0,193.034813090108,0,548.695629615636,0,0,-79.3836821929085,-80.8703382118509,0,0,259.473468361196,564.492465579918,365.488402753382,-408.557500507937,520.951736451643,-146.15391248504],"Archive239_field2":[0,0,0,0,5965.34276065932,0,0,7916.94414451569,0,6208.22142682196,3109.76404218389,5849.2176209996,4618.54358869215,0,7268.97621225414,7471.15625159067,3531.6636518669,7414.77993432183,6960.53513478038,7235.53301657511,6473.69250200484,4515.54623024791,6074.37059116712,5129.87028135797,4414.54691631823,0,2821.14762921868,7163.16806559602,0,4530.66685591532,0,5069.88644814176,0,0,2331.67427348506,2966.15734905871,0,0,3337.04243932144,2529.97221952273,2276.6240399569,1044.65819816935,962.171930332715,2769.926621101],"Archive239_field3":[0,0,0,0,5977.81757740507,0,0,7921.96819318742,0,6209.03990207469,3183.25497128404,5861.15224275802,4618.69413625239,0,7328.76510456356,7485.04010854345,3542.96338170572,7420.6200711444,6965.45534327401,7258.28882135967,6488.39403310029,4546.36680832472,6079.06948917492,5131.71216534284,4428.54656781417,0,2835.84033614285,7164.48686391162,0,4534.77723800787,0,5099.49168947364,0,0,2333.02522203052,2967.25958267515,0,0,3347.11498497075,2592.18270483646,2305.77509567973,1121.70851036431,1094.15059988658,2773.7798132546],"Archive239_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive239_field5":[-894.856267652734,-832.317459226906,-208.027581894345,-270.201046864972,-551.583744790085,-856.486063009633,-519.582398490682,-244.17172118111,-582.064534131893,-379.724883123119,-721.257424405832,-411.944270027601,-535.49959069105,-363.527595348569,-227.65556299107,-308.072866281049,-292.264355408697,-360.420468873041,-420.563062873836,-259.896666549235,-470.9431136743,-540.797494715743,-500.86659408776,-593.864344814928,-682.175368811041,-676.080568220184,-661.079977258897,-326.451076975618,-425.403727821546,-337.687742872075,-737.370086563728,-607.359068988007,-874.41331859802,-597.971122587469,-566.352752599886,-468.973047725025,-843.157701301664,-503.369702289042,-457.011144116904,-645.947551808103,-784.197883635161,-756.334444050649,-807.555756938855,-747.576058261358],"Archive239_field6":[103.440310110349,96.2111784929685,24.0468088122144,31.2337087979139,63.7599530509804,99.004932038191,60.0607788876906,28.2248663524511,67.2833594525416,43.8940431963475,83.3732682519282,47.6184216171491,61.9007160449851,42.0217285790058,26.3156921232862,35.6114763640035,33.7841021519323,41.6625623779088,48.6147051958851,30.0425808661057,54.4383533800173,62.5131237075995,57.8973380297738,68.6473506547245,78.8556042464236,78.1510798596942,76.4170966078987,37.7358933036156,49.1742586140501,39.0347881618756,85.2358006278683,70.2072642450696,101.077221124744,69.1220708770684,65.4671666036946,54.2106249278655,97.4642490054269,58.1866831435534,52.8278967027174,74.6678740367054,90.6488284245661,87.427972812834,93.3488661237935,86.4155530814655],"Archive239_field7":[998.296577763083,928.528637719875,232.074390706559,301.434755662886,615.343697841065,955.490995047825,579.643177378372,272.396587533561,649.347893584434,423.618926319467,804.63069265776,459.56269164475,597.400306736035,405.549323927575,253.971255114356,343.684342645052,326.048457560629,402.08303125095,469.177768069721,289.939247415341,525.381467054317,603.310618423342,558.763932117534,662.511695469653,761.030973057465,754.231648079879,737.497073866796,364.186970279233,474.577986435596,376.72253103395,822.605887191597,677.566333233077,975.490539722764,667.093193464538,631.819919203581,523.183672652891,940.621950307091,561.556385432596,509.839040819622,720.615425844808,874.846712059727,843.762416863483,900.904623062648,833.991611342823],"Archive239_field8":[248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078,248.1078],"Archive239_field9":[0.275023663241996,0.275023663241996,0.0550047326483992,0.0550047326483992,0.165014197945198,0.275023663241996,0.165014197945198,0.0550047326483992,0.165014197945198,0.110009465296798,0.220018930593597,0.110009465296798,0.165014197945198,0.110009465296798,0.0550047326483992,0.0825070989725988,0.0825070989725988,0.0962582821346986,0.120322852668373,0.0550047326483992,0.134074035830473,0.154915672810531,0.149940785632896,0.182567369839194,0.210402786922709,0.220018930593597,0.210402786922709,0.0825070989725988,0.110009465296798,0.0825070989725988,0.220018930593597,0.181134956721433,0.275023663241996,0.192516564269397,0.178765381107297,0.144387423202048,0.275023663241996,0.137511831620998,0.123760648458898,0.190662538170454,0.24584016486521,0.24584016486521,0.247521296917796,0.237905153246909],"Archive239_field10":[0,0,0,0,381.199946091672,0,0,279.599382083574,0,96.8392252611223,678.099268515099,370.921112480672,34.7634284235003,0,922.923465066851,450.020791803221,278.371033418267,290.830421049335,257.607101391358,-567.488463154364,431.83689968132,523.235095975215,234.936366648947,133.852735409006,347.690086821011,0,-291.025795239346,136.075466447778,0,195.048342918093,0,543.362354200421,0,0,-81.5017426951303,-82.4513372945278,0,0,256.676355254375,561.351508975848,363.047741456648,-408.901559114352,518.977131678202,-150.469937602578],"Archive239_field11":[0,0,0,0,5907.27019345431,0,0,7858.81929403533,0,6158.07778323213,3072.8213529662,5802.47963147821,4575.07170093971,0,7221.19245445823,7412.52312942459,3503.15608555051,7356.07870401434,6901.87289485557,7190.12470114318,6415.97212619763,4474.27390951711,6018.97901814815,5076.73791836605,4362.82626369824,0,2788.23242259536,7109.09695400118,0,4495.52935855647,0,5018.27710501827,0,0,2308.07484650599,2939.72559946744,0,0,3311.27377178157,2502.33351880544,2243.71542139049,1032.48830242899,951.346663154275,2730.95166245985],"Archive239_field12":[0,0,0,0,5919.55695448351,0,0,7863.79148444079,0,6158.83916171597,3146.75224401378,5814.32303414623,4575.20377302423,0,7279.93188063566,7426.17114382033,3514.19876955985,7361.82560466228,6906.67871523131,7212.48475726657,6430.48842873318,4504.76436487478,6023.56236103536,5078.50218534482,4376.6587031306,0,2803.37939920852,7110.39914730234,0,4499.75866794189,0,5047.60812174566,0,0,2309.51337539664,2940.8816404585,0,0,3321.20712136946,2564.52501566405,2272.89739204441,1110.51005384861,1083.69633048179,2735.09381645573],"Archive239_field13":[8980446.40534381,8352830.06334132,2087687.84168635,2711637.73194952,5535490.37672772,8595377.22852137,5214336.70576504,2450417.05023678,5841384.30067005,3810778.42881687,7238272.64608989,4134120.27461709,5374075.75732682,3648228.44170796,2284666.99762008,3091705.29903608,2933056.93307018,3617046.47003636,4220615.29066856,2608226.7837215,4726210.83988322,5427243.56189415,5026511.81762495,5959802.83475504,6846059.59650115,6784894.43284753,6634354.05217871,3276142.22162882,4269194.41303774,3388909.24299928,7399973.36182155,6095230.89350811,8775288.53252184,6001016.93697248,5683706.674574,4706439.9869407,8461618.72191402,5051632.08538298,4586394.74823393,6482490.62935195,7869919.80694553,7590292.63674801,8104330.78100828,7502396.71756943],"Archive239_field14":[-893.333300373392,-830.999950861288,-209.805902832197,-271.513251121394,-551.882260563142,-848.196671095434,-519.266304198314,-250.135369579331,-581.468120710789,-380.698599651013,-718.711298739206,-413.616087091898,-535.398419095358,-363.979713640438,-233.030895224016,-308.303357052027,-292.230329191487,-361.754866688513,-422.075081056178,-265.71279579565,-471.968523095398,-540.557121667833,-501.304300549949,-594.158024978649,-680.843765498955,-675.388780354198,-659.861607664329,-325.66731528482,-424.96915965778,-337.94542289393,-735.253346957858,-607.19969407483,-868.2687901942,-597.603764899018,-565.734859670025,-469.022074154607,-837.134520505806,-502.543227775677,-456.864582554411,-644.470487337307,-779.34279384029,-753.96500346197,-805.032529859632,-743.894748731423],"Archive239_field15":[103.264263729094,96.0588819970518,24.2523726283674,31.3853921688852,63.7944597815628,98.0467253392759,60.0242401799578,28.9142302894319,67.2144174431228,44.0065993053515,83.0789505630925,47.811674189467,61.8890211822333,42.0739908897344,26.9370500477052,35.6381197900925,33.7801689141741,41.8168111984541,48.789485923615,30.7148924256695,54.5568848943427,62.4853379463362,57.947934414716,68.6812984162888,78.701678454623,78.0711131052835,76.2762599917327,37.6452948966095,49.1240249986092,39.064574511185,84.9911175327514,70.1888414088681,100.366948484826,69.0796064114459,65.3957416848666,54.2162921051127,96.7680034608674,58.0911473764687,52.8109550171948,74.4971337598196,90.0876075758678,87.154078917087,93.0571953818113,85.990014575279],"Archive239_field16":[996.597564102486,927.058832858339,234.058275460564,302.898643290279,615.676720344705,946.24339643471,579.290544378272,279.049599868763,648.682538153912,424.705198956364,801.790249302298,461.427761281365,597.287440277591,406.053704530172,259.967945271721,343.941476842119,326.010498105661,403.571677886967,470.864566979793,296.42768822132,526.525407989741,603.042459614169,559.252234964665,662.839323394938,759.545443953578,753.459893459482,736.137867656061,363.312610181429,474.093184656389,377.009997405115,820.24446449061,677.388535483698,968.635738679026,666.683371310463,631.130601354891,523.23836625972,933.902523966673,560.634375152145,509.675537571606,718.967621097127,869.430401416158,841.119082379057,898.089725241443,829.884763306703],"Archive239_field17":[248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976,248.0976],"Archive239_field18":[0.274826198418916,0.274826198418916,0.0549652396837832,0.0549652396837832,0.164895719051349,0.274826198418916,0.164895719051349,0.0549652396837832,0.164895719051349,0.109930479367566,0.219860958735132,0.109930479367566,0.164895719051349,0.109930479367566,0.0549652396837832,0.0824478595256747,0.0824478595256747,0.0961891694466205,0.120236461808276,0.0549652396837832,0.133977771729221,0.154804444578155,0.149833129330313,0.182436287906241,0.210251719379628,0.219860958735132,0.210251719379628,0.0824478595256747,0.109930479367566,0.0824478595256747,0.219860958735132,0.181004903249811,0.274826198418916,0.192378338893241,0.178637028972295,0.144283754169931,0.274826198418916,0.137413099209458,0.123671789288512,0.190525643970428,0.245663653564005,0.245663653564005,0.247343578577024,0.237734339221519],"Archive239_field19":[0,0,0,0,375.618966756416,0,0,277.085679573533,0,92.733908885723,674.659231856402,367.284407381384,31.5679943191345,0,914.32153522955,445.008183634011,273.499549348782,286.849439983637,253.252309200335,-563.197813317103,426.737319971742,517.674556319632,230.087562247675,129.059960379206,342.715110159542,0,-294.011726554601,133.813943963626,0,196.260055587821,0,537.494816918451,0,0,-83.8096984669444,-84.2933658159626,0,0,253.382005106678,557.113110667846,359.174309182561,-408.20127679191,516.024896120047,-154.361358674512],"Archive239_field20":[0,0,0,0,5838.60348847208,0,0,7798.38143420017,0,6097.62835422885,3025.87693876928,5747.32081399448,4520.5305916303,0,7167.84425236314,7348.97093920518,3469.65356765277,7292.02108832185,6836.05987290052,7140.72444413199,6350.03400604813,4422.77036299248,5953.26546760068,5011.36055945605,4296.77921330988,0,2746.73537626684,7049.7671977804,0,4453.99915668559,0,4954.86038549974,0,0,2277.65917164237,2906.018830052,0,0,3278.05918116041,2467.37598159739,2199.91771325708,1016.98785789594,937.849114017096,2679.46368338612],"Archive239_field21":[0,0,0,0,5850.67349146963,0,0,7803.30247184502,0,6098.33347105197,3100.17682200626,5759.04457135727,4520.64081388145,0,7225.92382300837,7362.43208109817,3480.41633759807,7297.66086864479,6840.74932430622,7162.9000665896,6364.35673247692,4452.96357834031,5957.71013175598,5013.02215537142,4310.42518258507,0,2762.42612979739,7051.03706659521,0,4458.32104016471,0,4983.92838211073,0,0,2279.20059839492,2907.24109976062,0,0,3287.83734933801,2529.48991945841,2229.04556469334,1095.85244694818,1070.44040192734,2683.90630604664],"Archive239_field22":[8965162.46922622,8339608.03686206,2105534.41263988,2724806.52835139,5538486.17057528,8512187.95834547,5211164.50040173,2510266.01901142,5835398.91624881,3820550.28761569,7212720.67096614,4150898.01210207,5373060.43662594,3652765.73360139,2338611.84303699,3094018.41913203,2932715.45854396,3630437.99278524,4235789.34569982,2666595.3048707,4736501.46943187,5424831.26692335,5030904.47772808,5962750.10021648,6832696.11835428,6777951.905786,6622126.94572437,3268276.6792918,4264833.24773641,3391495.22435701,7378730.54633069,6093631.46584819,8713624.31893662,5997330.27113353,5677505.72975029,4706931.9980482,8401172.30802368,5043337.89296242,4584923.91062053,6467667.3568369,7821195.92214743,7566513.80769305,8079008.60763522,7465452.45721154],"Archive239_field23":[-891.814717693383,-829.685893181468,-211.508922641154,-272.838405789129,-552.159128091372,-840.180642862622,-518.953277808892,-255.525824919866,-580.860732890189,-381.63907861842,-716.195760632622,-415.131187551303,-535.282479705183,-364.394844920537,-238.022072680264,-308.766016165606,-292.320887347371,-363.10221012785,-423.467534887141,-270.811045416312,-472.966303392432,-540.31385758903,-501.744374329114,-594.367868698749,-679.460634401518,-674.695448972096,-658.633586491027,-325.28888405934,-424.491479309596,-338.29086064214,-733.171764536916,-606.987956228346,-862.286234222243,-597.234549987591,-565.108820309008,-469.062648745085,-831.278450453985,-501.738774485716,-456.712099868514,-642.993198530355,-774.596492820878,-751.631435634174,-802.545411161624,-740.273947807453],"Archive239_field24":[103.088724182659,95.9069843808458,24.4492320610276,31.538572533967,63.8264640978031,97.1201179317753,59.9880561044084,29.5373363593302,67.1442068553545,44.1153133408424,82.7881686227458,47.9868112109466,61.8756192461826,42.1219777116434,27.5140018583511,35.6916005600374,33.7906369234693,41.9725564597079,48.9504456903347,31.3042211713513,54.6722226386017,62.4572179982958,57.9988044480764,68.7055551603788,78.5417963430326,77.9909679291627,76.1343077077959,37.6015503929008,49.0688078591245,39.1045051560162,84.7504984088474,70.1643657145089,99.6753989395395,69.0369272613792,65.3233750847926,54.220982297687,96.0910749706896,57.9981571379344,52.7933288833833,74.3263675509462,89.5389620927079,86.8843317090758,92.7696985639391,85.5714705208179],"Archive239_field25":[994.903441876043,925.592877562313,235.958154702181,304.376978323096,615.985592189176,937.300760794397,578.9413339133,285.063161279196,648.004939745544,425.754391959263,798.983929255368,463.117998762249,597.158098951366,406.516822632181,265.536074538615,344.457616725644,326.11152427084,405.074766587558,472.417980577475,302.115266587664,527.638526031033,602.771075587326,559.74317877719,663.073423859127,758.002430744551,752.686416901258,734.767894198823,362.89043445224,473.56028716872,377.395365798156,817.922262945763,677.152321942855,961.961633161782,666.271477248971,630.4321953938,523.283631042772,927.369525424674,559.73693162365,509.505428751897,717.319566081301,864.135454913586,838.51576734325,895.315109725563,825.845418328271],"Archive239_field26":[248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874,248.0874],"Archive239_field27":[0.274628875374023,0.274628875374023,0.0549257750748046,0.0549257750748046,0.164777325224414,0.274628875374023,0.164777325224414,0.0549257750748046,0.164777325224414,0.109851550149609,0.219703100299218,0.109851550149609,0.164777325224414,0.109851550149609,0.0549257750748046,0.082388662612207,0.082388662612207,0.0961201063809081,0.120150132976135,0.0549257750748046,0.133881576744836,0.154693296206774,0.149725550324107,0.182305300089084,0.210100760301852,0.219703100299218,0.210100760301852,0.082388662612207,0.109851550149609,0.082388662612207,0.219703100299218,0.180874943155558,0.274628875374023,0.192240212761816,0.178508768993115,0.144180159571362,0.274628875374023,0.137314437687012,0.12358299391831,0.190388848059359,0.245487268996524,0.245487268996524,0.247165987836621,0.237563647839254]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive240.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive240.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive240.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive240_field1":[0,0,0,0,385.990591313329,0,0,282.091237885846,0,100.812802283926,680.058684338848,373.843329451243,37.2913341522592,0,934.228442915376,455.685956357883,282.739056710937,294.34803523959,261.760915020439,-574.298337387655,436.534670167035,528.482164628681,238.972331832557,137.479614372577,351.852564185544,0,-288.299265085187,137.460129446809,0,193.034813090108,0,548.695629615636,0,0,-79.3836821929085,-80.8703382118509,0,0,259.473468361196,564.492465579918,365.488402753382,-408.557500507937,520.951736451643,-146.15391248504],"Archive240_field2":[0,0,0,0,5965.34276065932,0,0,7916.94414451569,0,6208.22142682196,3109.76404218389,5849.2176209996,4618.54358869215,0,7268.97621225414,7471.15625159067,3531.6636518669,7414.77993432183,6960.53513478038,7235.53301657511,6473.69250200484,4515.54623024791,6074.37059116712,5129.87028135797,4414.54691631823,0,2821.14762921868,7163.16806559602,0,4530.66685591532,0,5069.88644814176,0,0,2331.67427348506,2966.15734905871,0,0,3337.04243932144,2529.97221952273,2276.6240399569,1044.65819816935,962.171930332715,2769.926621101],"Archive240_field3":[0,0,0,0,5977.81757740507,0,0,7921.96819318742,0,6209.03990207469,3183.25497128404,5861.15224275802,4618.69413625239,0,7328.76510456356,7485.04010854345,3542.96338170572,7420.6200711444,6965.45534327401,7258.28882135967,6488.39403310029,4546.36680832472,6079.06948917492,5131.71216534284,4428.54656781417,0,2835.84033614285,7164.48686391162,0,4534.77723800787,0,5099.49168947364,0,0,2333.02522203052,2967.25958267515,0,0,3347.11498497075,2592.18270483646,2305.77509567973,1121.70851036431,1094.15059988658,2773.7798132546],"Archive240_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive240_field5":[-894.866084991113,-832.327277315331,-208.029569915018,-270.203027738335,-551.589651282828,-856.495799517242,-519.58829516603,-244.173772840242,-582.070429158823,-379.728830795909,-721.265264629409,-411.948229002431,-535.505491965228,-363.531534948333,-227.657603022308,-308.075817444826,-292.267303086782,-360.423929181744,-420.56738733256,-259.898719342971,-470.947922639344,-540.80303425683,-500.871962723288,-593.870879962714,-682.182879609785,-676.088427313041,-661.087487845928,-326.454014744703,-425.407658396795,-337.690696163748,-737.377931097158,-607.365547129077,-874.423082018842,-597.978002109862,-566.359138809199,-468.978211989466,-843.167463566813,-503.374611410675,-457.015570859682,-645.954355189325,-784.206619341103,-756.343207006177,-807.564579861755,-747.584523185662],"Archive240_field6":[103.441444938995,96.2123134083152,24.0470386161308,31.2339377756417,63.7606358080478,99.0060575232581,60.0614605099228,28.2251035126125,67.284040884226,43.8944995249361,83.3741745373144,47.6188792521894,61.9013981988158,42.0221839743984,26.315927939329,35.611817501801,33.7844428868037,41.6629623699726,48.6152050787911,30.0428181574208,54.4389092691063,62.5137640471363,57.8979586135971,68.6481060807499,78.856472452167,78.1519883262622,76.4179647891694,37.7362328930627,49.1747129662598,39.0351295456459,85.236707411449,70.2080130814418,101.078349720826,69.1228661108455,65.4679048132771,54.21122188755,97.4653774679195,58.1872506101762,52.8284084090799,74.6686604689951,90.6498382226357,87.4289857608013,93.3498860036489,86.4165315787134],"Archive240_field7":[998.307529930108,928.539590723646,232.076608531149,301.436965513976,615.350287090876,955.5018570405,579.649755675953,272.398876352855,649.354470043049,423.623330320845,804.639439166723,459.56710825462,597.406890164043,405.553718922732,253.973530961637,343.687634946627,326.051745973586,402.086891551717,469.182592411351,289.941537500392,525.38683190845,603.316798303966,558.769921336885,662.518986043464,761.039352061952,754.240415639304,737.505452635097,364.190247637765,474.582371363055,376.725825709394,822.614638508607,677.573560210519,975.501431739668,667.100868220707,631.827043622476,523.189433877016,940.632841034732,561.561862020851,509.843979268762,720.62301565832,874.856457563739,843.772192766978,900.914465865404,834.001054764376],"Archive240_field8":[249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198],"Archive240_field9":[0.296968297926528,0.296968297926528,0.0593936595853056,0.0593936595853056,0.178180978755917,0.296968297926528,0.178180978755917,0.0593936595853056,0.178180978755917,0.118787319170611,0.237574638341222,0.118787319170611,0.178180978755917,0.118787319170611,0.0593936595853056,0.0890904893779583,0.0890904893779583,0.103938904274285,0.129923630342856,0.0593936595853056,0.144772045239182,0.167276674066427,0.16190483165802,0.19713474993009,0.227191205203516,0.237574638341222,0.227191205203516,0.0890904893779583,0.118787319170611,0.0890904893779583,0.237574638341222,0.195588041983237,0.296968297926528,0.207877808548569,0.193029393652243,0.155908356411427,0.296968297926528,0.148484148963264,0.133635734066938,0.205875846359483,0.265456195519289,0.265456195519289,0.267271468133875,0.256888034996168],"Archive240_field10":[0,0,0,0,381.200945762438,0,0,279.600008108293,0,96.8384634699322,678.104773172636,370.921817591229,34.7617140477907,0,922.932097448501,450.023370059141,278.373537317389,290.830654293609,257.607204313214,-567.497479246243,431.838296470099,523.238093748605,234.93627783514,133.851406259732,347.691022658806,0,-291.030782062882,136.073873851352,0,195.047326252453,0,543.365287003722,0,0,-81.5038066026723,-82.4532926924748,0,0,256.676894456139,561.356152061905,363.050112941607,-408.907057445735,518.982501793631,-150.473791127082],"Archive240_field11":[0,0,0,0,5907.3378379121,0,0,7858.905607404,0,6158.14673800626,3072.85712358994,5802.54559983697,4575.12410987107,0,7221.27079796162,7412.60505606887,3503.19487011161,7356.16079518715,6901.95038982723,7190.20293147264,6416.04516636502,4474.32572575552,6019.04740909434,5076.79634671242,4362.87690481736,0,2788.26509652512,7109.17580590679,0,4495.58021759405,0,5018.33515360921,0,0,2308.10158037378,2939.75914444117,0,0,3311.31198948013,2502.36268711305,2243.74156206318,1032.50074791755,951.35754479431,2730.98372321874],"Archive240_field12":[0,0,0,0,5919.62452291344,0,0,7863.87776549331,0,6158.90809598782,3146.78836043941,5814.38891311482,4575.25616741697,0,7280.01068639284,7426.25307613855,3514.23763059002,7361.90764096679,6906.75616011962,7212.56345446669,6430.56139782011,4504.81617859234,6023.63069647935,5078.56055836202,4376.70925854417,0,2803.41241429233,7110.47795428939,0,4499.80943510958,0,5047.66614873355,0,0,2309.54016544737,2940.91522706815,0,0,3321.24526643585,2564.55449295066,2272.92357589001,1110.52364949119,1083.70845489229,2735.12604066099],"Archive240_field13":[8980544.92851937,8352928.59404405,2087707.79272625,2711657.61126166,5535549.65210349,8595474.94050922,5214395.88261706,2450437.63992872,5841443.46097916,3810818.04620035,7238351.32767283,4134160.00542366,5374134.980331,3648267.97807354,2284687.47061877,3091734.91582382,2933086.51487681,3617081.19641419,4220658.68933626,2608247.3847999,4726259.10087708,5427299.15467887,5026565.69526471,5959868.41908021,6846134.97209834,6784973.30379558,6634429.42565123,3276171.70399238,4269233.85883663,3388938.88114179,7400052.08665657,6095295.90573498,8775386.51460075,6001085.97731379,5683770.76420777,4706491.81358784,8461716.69239501,5051681.35151131,4586439.17338655,6482558.90556865,7870007.47525816,7590380.5785274,8104419.32459803,7502481.66841773],"Archive240_field14":[-893.352987118213,-831.019639964043,-209.80993482626,-271.517263007706,-551.894134934063,-848.216039537042,-519.278139414064,-250.139627013528,-581.479954870762,-380.706553950084,-718.726993639274,-413.62408152427,-535.410271906312,-363.987636151553,-233.035115930223,-308.309295646814,-292.236250423794,-361.761852636463,-422.083804356719,-265.717052975022,-471.978210178556,-540.568249572309,-501.315097432739,-594.171160534593,-680.858824188567,-675.404548409559,-659.876665992965,-325.67320792799,-424.977050728732,-337.951367323031,-735.269061524513,-607.212706587081,-868.288263980906,-597.617572462942,-565.74767286888,-469.032448352677,-837.15398982228,-502.553076250613,-456.87347865448,-644.48412573271,-779.360232549542,-753.982549076947,-805.050197838766,-743.911667891823],"Archive240_field15":[103.266539405159,96.06115794568,24.252838704017,31.3858559201928,63.7958323915057,98.0489642212938,60.025608263785,28.9147224246826,67.2157854049081,44.007518777218,83.0807648045399,47.8125983005154,61.8903912999662,42.0749066870934,26.9375379374086,35.6388062579742,33.7808533750515,41.8176187344221,48.7904942876905,30.7153845314638,54.5580046662234,62.486624268991,57.9491824731411,68.6828168120686,78.7034191537493,78.0729358030679,76.2780006491322,37.6459760527447,49.1249371616638,39.0652616534802,84.9929340475446,70.1903455814946,100.36919954414,69.0812024875375,65.3972228179948,54.217491303581,96.7702540034479,58.0922858043239,52.8119833559159,74.4987102809894,90.0896233917682,87.156107090683,93.0592377000101,85.9919703342784],"Archive240_field16":[996.619526523372,927.080797909723,234.062773530277,302.903118927899,615.689967325569,946.265003758336,579.303747677849,279.05434943821,648.69574027567,424.714072727302,801.807758443814,461.436679824785,597.300663206278,406.062542838647,259.972653867632,343.948101904788,326.017103798846,403.579471370885,470.874298644409,296.432437506486,526.536214844779,603.0548738413,559.26427990588,662.853977346662,759.562243342316,753.477484212627,736.154666642097,363.319183980735,474.101987890396,377.016628976511,820.261995572057,677.403052168575,968.657463525045,666.698774950479,631.144895686875,523.249939656258,933.924243825728,560.645362054937,509.685462010396,718.9828360137,869.44985594131,841.13865616763,898.109435538776,829.903638226102],"Archive240_field17":[249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198],"Archive240_field18":[0.296968297926528,0.296968297926528,0.0593936595853056,0.0593936595853056,0.178180978755917,0.296968297926528,0.178180978755917,0.0593936595853056,0.178180978755917,0.118787319170611,0.237574638341222,0.118787319170611,0.178180978755917,0.118787319170611,0.0593936595853056,0.0890904893779583,0.0890904893779583,0.103938904274285,0.129923630342856,0.0593936595853056,0.144772045239182,0.167276674066427,0.16190483165802,0.19713474993009,0.227191205203516,0.237574638341222,0.227191205203516,0.0890904893779583,0.118787319170611,0.0890904893779583,0.237574638341222,0.195588041983237,0.296968297926528,0.207877808548569,0.193029393652243,0.155908356411427,0.296968297926528,0.148484148963264,0.133635734066938,0.205875846359483,0.265456195519289,0.265456195519289,0.267271468133875,0.256888034996168],"Archive240_field19":[0,0,0,0,375.623453413913,0,0,277.088415363584,0,92.7327889665061,674.675213892501,367.288199135924,31.5645881760846,0,914.344939036996,445.016145052343,273.50640868562,286.8516232938,253.254019229435,-563.219703565455,426.742892853734,517.684181735026,230.088811083187,129.058008635507,342.719382707907,0,-294.024171092155,133.811468185325,0,196.259284950338,0,537.504442454594,0,0,-83.8146030233378,-84.2980225073839,0,0,253.384759815985,557.12646848325,359.181700201184,-408.215614861722,516.039436389009,-154.370422387325],"Archive240_field20":[0,0,0,0,5838.78199315164,0,0,7798.61063518451,0,6097.81155161853,3025.970568658,5747.49493319495,4520.66939969412,0,7168.0534971739,7349.18844051665,3469.75677763575,7292.23836797269,6836.26513180627,7140.93286551816,6350.22667170336,4422.90651446007,5953.44644891859,5011.51485167705,4296.9123062729,0,2746.82167870254,7049.97619465453,0,4454.13368116241,0,4955.01295100059,0,0,2277.72998912094,2906.10781591875,0,0,3278.159796378,2467.45229202913,2199.98609888301,1017.02066214761,937.877766878444,2679.54782702386],"Archive240_field21":[0,0,0,0,5850.85191594408,0,0,7803.53162543355,0,6098.51663023082,3100.27168593743,5759.21857792584,4520.7795947776,0,7226.13434734572,7362.64966595455,3480.51976744011,7297.87806619974,6840.95450581321,7163.10956389205,6364.54933821821,4453.09992563293,5957.89102628833,5013.17634620732,4310.55819390983,0,2762.51326653406,7051.24597884753,0,4458.45540031463,0,4984.08109587334,0,0,2279.27154832873,2907.33018323387,0,0,3287.93787762118,2529.56729804219,2229.1142476414,1095.8882312773,1070.47251506687,2683.99083169379],"Archive240_field22":[8965360.03811315,8339805.62941235,2105574.87624046,2724846.79015802,5538605.33736833,8512382.33285912,5211283.27424797,2510308.74504577,5835517.67949966,3820630.11401808,7212878.17917611,4150978.24126741,5373179.38705114,3652845.24099161,2338654.20048283,3094078.01667204,2932774.88184054,3630508.10117407,4235876.88951642,2666638.02834772,4736598.68541422,5424942.94245535,5031012.83124892,5962881.92379578,6832847.24179151,6778110.14815543,6622278.06553898,3268335.81567837,4264912.43960479,3391554.88044803,7378888.25190724,6093762.0546065,8713819.7506547,5997468.83873627,5677634.31827312,4707036.10966158,8401367.69488017,5043436.72861294,4585013.18858926,6467804.22672696,7821370.93058116,7566689.88899308,8079185.91693666,7465622.25164522],"Archive240_field23":[-891.844313454785,-829.71549406643,-211.515063688551,-272.844509706868,-552.177032875561,-840.209487351306,-518.971090423597,-255.532456269688,-580.87854450454,-381.651104366377,-716.219305857731,-415.143298377245,-535.300332626946,-364.406794643816,-238.028634435953,-308.774992731044,-292.329814397261,-363.112798231872,-423.480736873144,-270.817664693744,-472.980944230267,-540.330620359257,-501.760662634717,-594.38766735972,-679.483264324375,-674.719169336761,-658.65621905105,-325.297764567846,-424.50335505648,-338.299840889713,-733.195359866151,-607.007554931683,-862.315325592994,-597.255330033042,-565.128095565544,-469.078278262277,-831.307531563391,-501.753587199076,-456.725506265369,-643.013691553899,-774.622568964483,-751.657765505985,-802.571927922686,-740.299284039104],"Archive240_field24":[103.09214528485,95.9104060752907,24.4499419312829,31.5392781122443,63.8285337893233,97.1234521910997,59.9901151416589,29.5381029057655,67.1462657769698,44.1167034491123,82.7908903172514,47.9882111537491,61.8776829427004,42.1233590318915,27.5147603600992,35.6926382000988,33.7916688398143,41.9737803844912,48.9519717650526,31.3049863222867,54.6739150364322,62.4591556794779,58.0006872838386,68.7078437733155,78.5444122337881,77.9937098688077,76.136923903393,37.6025769293258,49.070180628121,39.1055432217116,84.7532258951058,70.1666312134769,99.678761737031,69.0393293167965,65.3256031951447,54.2227889812447,96.0944365820277,57.999869403601,52.7948785868366,74.3287364282588,89.5419763470395,86.8873752929492,92.7727637511502,85.5743992455235],"Archive240_field25":[994.936458739635,925.62590014172,235.965005619834,304.383787819112,616.005566664884,937.332939542405,578.961205565256,285.070559175454,648.02481028151,425.76780781549,799.010196174983,463.131509530994,597.178015569646,406.530153675708,265.543394796052,344.467630931143,326.121483237076,405.086578616363,472.432708638196,302.122651016031,527.654859266699,602.789776038735,559.761349918555,663.095511133036,758.027676558163,752.712879205569,734.793142954444,362.900341497172,473.573535684601,377.405384111424,817.948585761257,677.174186145159,961.994087330025,666.294659349838,630.453698760689,523.301067243522,927.401968145419,559.753456602677,509.520384852206,717.342427982158,864.164545311523,838.545140798934,895.344691673836,825.873683284627],"Archive240_field26":[249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198,249.198],"Archive240_field27":[0.296968297926528,0.296968297926528,0.0593936595853056,0.0593936595853056,0.178180978755917,0.296968297926528,0.178180978755917,0.0593936595853056,0.178180978755917,0.118787319170611,0.237574638341222,0.118787319170611,0.178180978755917,0.118787319170611,0.0593936595853056,0.0890904893779583,0.0890904893779583,0.103938904274285,0.129923630342856,0.0593936595853056,0.144772045239182,0.167276674066427,0.16190483165802,0.19713474993009,0.227191205203516,0.237574638341222,0.227191205203516,0.0890904893779583,0.118787319170611,0.0890904893779583,0.237574638341222,0.195588041983237,0.296968297926528,0.207877808548569,0.193029393652243,0.155908356411427,0.296968297926528,0.148484148963264,0.133635734066938,0.205875846359483,0.265456195519289,0.265456195519289,0.267271468133875,0.256888034996168]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive241.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive241.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive241.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive241_field1":[0,0,0,0,385.990591313331,0,0,282.091237885837,0,100.812802283926,680.058684338847,373.843329451241,37.2913341522611,0,934.228442915369,455.685956357878,282.739056710934,294.348035239585,261.760915020439,-574.298337387659,436.534670167037,528.482164628683,238.972331832557,137.47961437258,351.852564185547,0,-288.299265085186,137.460129446804,0,193.034813090108,0,548.695629615638,0,0,-79.3836821929074,-80.8703382118503,0,0,259.473468361195,564.492465579918,365.488402753382,-408.557500507936,520.951736451642,-146.153912485039],"Archive241_field2":[0,0,0,0,5965.3427606593,0,0,7916.94414451567,0,6208.22142682195,3109.76404218389,5849.21762099957,4618.54358869214,0,7268.97621225414,7471.15625159066,3531.6636518669,7414.77993432182,6960.53513478038,7235.53301657509,6473.69250200482,4515.5462302479,6074.37059116711,5129.87028135796,4414.54691631822,0,2821.14762921867,7163.168065596,0,4530.66685591531,0,5069.88644814174,0,0,2331.67427348505,2966.15734905871,0,0,3337.04243932143,2529.97221952273,2276.62403995689,1044.65819816934,962.171930332714,2769.926621101],"Archive241_field3":[0,0,0,0,5977.81757740505,0,0,7921.96819318741,0,6209.03990207468,3183.25497128404,5861.152242758,4618.69413625239,0,7328.76510456356,7485.04010854344,3542.96338170572,7420.62007114438,6965.45534327401,7258.28882135965,6488.39403310028,4546.36680832471,6079.06948917492,5131.71216534283,4428.54656781417,0,2835.84033614285,7164.4868639116,0,4534.77723800786,0,5099.49168947363,0,0,2333.02522203052,2967.25958267515,0,0,3347.11498497074,2592.18270483646,2305.77509567973,1121.70851036431,1094.15059988658,2773.77981325459],"Archive241_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive241_field5":[-896.295134251771,-833.965499179843,-212.964882318997,-274.743860127018,-554.956792836962,-851.084818946967,-522.349646341077,-252.87140449423,-584.521436921669,-383.813967616691,-721.687458461736,-416.626292040783,-538.462119379805,-367.085347821722,-235.93008059942,-311.666409148251,-295.513060374311,-364.927638131361,-425.114112654826,-268.332269162541,-475.075541755798,-543.640394859623,-504.412417937299,-597.161714559174,-683.810726573449,-678.415383015371,-662.872687865399,-329.161455524424,-428.043969850584,-341.182477179609,-738.269372612858,-610.21619073451,-871.177592685685,-600.661186393092,-568.787561877454,-472.121021517781,-840.041620795903,-505.639269763333,-459.96463933105,-647.495748881392,-782.261371805929,-756.927260622384,-807.988351521348,-746.836293451582],"Archive241_field6":[103.606634929867,96.4016825660451,24.6175327435264,31.7588322502333,64.1498582777731,98.3805788531936,60.3806570470602,29.2305004104562,67.5673634827665,44.3667181759751,83.4229777502116,48.1596368116936,62.2431675618968,42.4329845900791,27.2721794367922,36.0268695416735,34.159634023639,42.1835655855227,49.1407807430878,31.0176886927256,54.9160386326222,62.8417468430971,58.3072151596005,69.0285078988794,79.0446423301915,78.4209712100647,76.6243237881487,38.0491976942082,49.4794556206783,39.4387596303583,85.3397529955975,70.5375313171844,100.703189557996,69.4330269985472,65.7486167491931,54.5745128472026,97.1040477692101,58.4490322736241,53.16930400119,74.8468368390704,90.4249786384171,87.4964990468623,93.3988716044307,86.3300404644141],"Archive241_field7":[999.901769181637,930.367181745888,237.582415062524,306.502692377251,619.106651114735,949.465397800161,582.730303388137,282.101904904686,652.088800404435,428.180685792666,805.110436211948,464.785928852477,600.705286941702,409.518332411801,263.202260036212,347.693278689924,329.67269439795,407.111203716884,474.254893397914,299.349957855267,529.99158038842,606.48214170272,562.719633096899,666.190222458053,762.85536890364,756.836354225436,739.497011653548,367.210653218632,477.523425471263,380.621236809967,823.609125608455,680.753722051694,971.880782243681,670.09421339164,634.536178626647,526.695534364983,937.145668565113,564.088302036957,513.133943332239,722.342585720463,872.686350444346,844.423759669247,901.387223125779,833.166333915996],"Archive241_field8":[3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6],"Archive241_field9":[0,0,0,0,378.232046303889,0,0,278.429383501407,0,89.758744418839,680.735195157939,372.105847190935,30.1873516489851,0,918.473552215927,446.725721544523,271.599168770526,288.926205576111,253.397490761928,-566.046513351683,430.596151047698,523.216245643565,230.315593598891,129.134850325646,345.310131326766,0,-297.443886853093,136.199009823367,0,200.986365299201,0,542.337052410461,0,0,-85.4424392557378,-87.1254950973864,0,0,256.809971507858,562.631707289655,362.86887036262,-411.953767395041,520.240106957108,-156.506321986563],"Archive241_field10":[0,0,0,0,5893.03598002804,0,0,7873.41050496645,0,6155.2010238953,3055.50506654105,5801.66715149485,4562.93052083308,0,7240.406229809,7419.24204387222,3503.01521220321,7360.26284327303,6899.1910029446,7212.9048232825,6408.77490321243,4464.35949942736,6008.29264803012,5059.0911248907,4340.30235333761,0,2773.60867790069,7118.71247832386,0,4497.52323707332,0,5001.80445698838,0,0,2298.87622584951,2932.92261906938,0,0,3308.4881475732,2490.93439804075,2224.9552057765,1026.46522617306,946.21061275747,2709.68801896866],"Archive241_field11":[0,0,0,0,5905.16151707608,0,0,7878.33205071436,0,6155.85544638285,3130.41716350789,5813.58791954229,4563.03037620282,0,7298.42969677568,7432.67895013976,3513.52838118663,7365.9315415183,6903.84289967813,7235.08152303825,6423.2241752365,4494.91501363849,6012.70536589209,5060.73895982755,4354.01695049352,0,2789.51213726563,7120.01527521681,0,4502.01185994114,0,5031.12087952238,0,0,2300.46349942833,2934.21641010761,0,0,3318.44017334926,2553.68530038262,2254.35123367903,1106.04555376959,1079.79826476134,2714.20400651168],"Archive241_field12":[8994886.3381511,8369369.18253421,2137236.761947,2757227.72500651,5569341.0388984,8541172.34156875,5242107.78130991,2537723.85308443,5866040.8680142,3851814.96783309,7242588.30876236,4181107.31519324,5403806.59911155,3683932.7291601,2367706.99476595,3127768.76564046,2965659.73408425,3662278.75306023,4266287.94238215,2692883.37037567,4767682.35911074,5455773.85586508,5062096.39382409,5992894.01748148,6862471.4419223,6808325.77025055,6652345.03252264,3303342.57790457,4295690.90515162,3423981.103458,7408998.26387477,6123903.91022097,8742815.98448424,6028013.42200211,5708141.51960423,4738031.88717449,8430346.89090799,5074408.62481499,4616034.93340986,6498027.76234657,7850485.69073674,7596241.92451982,8108672.14017819,7494972.7116515],"Archive241_field13":[-896.196377228852,-834.278354604763,-219.517898289272,-280.630358839424,-558.554569846144,-837.916139756916,-524.789773093764,-266.198197921724,-586.33041644701,-388.786810112523,-719.584306285336,-422.607532633868,-541.262436800201,-370.998535462224,-248.657261696977,-316.026623249447,-299.026391089685,-370.794543002111,-430.895040478733,-280.932331749324,-480.152600949099,-546.202246220128,-508.382812638314,-600.517295875157,-683.946769239158,-680.023942693842,-663.380708617385,-331.999197839106,-430.129621746737,-345.126646999195,-737.088424144501,-612.756999672554,-862.088104807571,-602.961745870915,-570.552343606042,-475.276524171731,-831.202178974525,-507.11409363846,-462.729877449792,-647.520248483953,-775.645044003319,-755.179445237826,-805.927610894321,-742.487778148859],"Archive241_field14":[103.595219178035,96.4378468790675,25.3750242297305,32.4392781210239,64.5657408982456,96.8583542139947,60.6627218625289,30.7710021588907,67.7764712577787,44.9415505691684,83.1798652848916,48.8510343066412,62.566868376032,42.8853268909441,28.7433694000867,36.5308855664574,34.565755131414,42.861746519328,49.8090232178252,32.4741844770211,55.5029178850649,63.1378823329701,58.7661702722587,69.4163940706288,79.060368090895,78.6069115872926,76.6830481062626,38.3772246138988,49.7205451528398,39.8946832954358,85.2032420494189,70.8312344223455,99.652496302729,69.6989586284809,65.9526155095316,54.9392710602001,96.0822584201741,58.6195135503564,53.4889498469771,74.8496688541974,89.6601686634153,87.2944614996833,93.1606616737165,85.8273767543938],"Archive241_field15":[999.791596406888,930.716201483831,244.892922519003,313.069636960448,623.120310744389,934.77449397091,585.452494956293,296.969200080615,654.106887704789,433.728360681691,802.764171570227,471.458566940509,603.829305176233,413.883862353168,277.400631097063,352.557508815905,333.592146221099,413.656289521439,480.704063696558,313.406516226345,535.655518834164,609.340128553098,567.148982910572,669.933689945786,763.007137330053,758.630854281135,740.063756723648,370.376422453005,479.850166899577,385.02133029463,822.29166619392,683.5882340949,961.7406011103,672.660704499396,636.504959115574,530.215795231931,927.284437394699,565.733607188817,516.218827296769,722.36991733815,865.305212666734,842.473906737509,899.088272568037,828.315154903253],"Archive241_field16":[3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6],"Archive241_field17":[0,0,0,0,369.192121931946,0,0,275.189814356825,0,78.6538845371417,678.70453420177,369.760415565771,21.4464940040729,0,909.684891376332,439.983995491647,259.631845816688,283.100464605291,244.96737873983,-564.585121611976,424.394182632624,517.777855330225,220.033268931383,118.595927046133,337.409568402664,0,-306.963133924521,133.075980590778,0,207.353774058471,0,535.260143880501,0,0,-92.1639668628797,-94.2503320908396,0,0,254.170308436229,558.951682534106,357.543002544228,-413.424151630092,517.793482464659,-165.92310411524],"Archive241_field18":[0,0,0,0,5804.67764302155,0,0,7836.51412110395,0,6088.17408658637,2983.60593989402,5743.43912453607,4489.23207048599,0,7210.66231105048,7367.77481100425,3468.16386064917,7304.94437590388,6831.58496640677,7191.75708295703,6334.02197797515,4396.64201152049,5927.55622786252,4967.93855461835,4241.00982322983,0,2710.74963490926,7072.87533424977,0,4457.40399558794,0,4914.14973374021,0,0,2254.54127839403,2887.95130292029,0,0,3269.07872731856,2439.31724255581,2153.7260301277,1002.34342880087,925.511196693727,2626.77757973655],"Archive241_field19":[0,0,0,0,5816.40656782956,0,0,7841.34446406911,0,6088.68213508757,3059.82748685557,5755.32933394528,4489.28329856615,0,7267.81793701536,7380.90045874875,3477.86849372933,7310.42804547788,6835.97558289098,7213.88427269305,6348.223754699,4427.02551211729,5931.63868369512,4969.35392947367,4254.41059814184,0,2728.07440308168,7074.12713417345,0,4462.22432958044,0,4943.21464507116,0,0,2256.42428917314,2889.48885672505,0,0,3278.94468863036,2502.5378305308,2183.20242110483,1084.25637116474,1060.50981404621,2632.01271461326],"Archive241_field20":[8993895.24920919,8372508.8838222,2203000.40560877,2816302.44807969,5605446.99778505,8409016.3496287,5266595.99055297,2671466.62100919,5884195.11720811,3901720.57516954,7221481.85168631,4241132.83272642,5431909.5486252,3723204.03244076,2495432.27520403,3171526.26108085,3000918.22121138,3721156.83958828,4324303.19507959,2819332.93647347,4818633.8466628,5481483.6482341,5101941.80599744,6026569.3900036,6863836.71577957,6824468.6800166,6657443.34082189,3331821.10981006,4316621.7358902,3463563.33242453,7397146.70199728,6149402.52862388,8651597.24725,6051100.98571453,5725852.2160631,4769699.34427355,8341637.52338211,5089209.41154094,4643785.84003146,6498273.63129301,7784086.67295103,7578701.49601208,8087991.30971937,7451332.62102404],"Archive241_field21":[-889.657200444932,-828.148947462364,-219.374613580276,-280.044573729175,-555.591028268797,-819.286842796805,-520.77176026894,-271.565506423398,-581.644995692784,-387.198237057336,-711.141976846381,-421.714188941353,-537.553888101297,-368.340167003178,-253.826870743681,-314.505799785494,-296.416012844948,-370.217748417809,-429.894570754471,-285.25784713319,-478.654468680864,-542.275312550782,-505.867620714894,-597.13022724032,-677.452359332474,-675.164610832138,-657.396934467531,-329.362533406619,-425.661069332764,-342.813578007404,-729.575354393556,-608.660726043909,-847.13517117181,-598.794981496484,-565.834313164437,-471.926449703919,-816.519297837731,-502.213407968883,-459.012558917079,-641.093724410474,-762.982587737603,-747.111311296081,-797.54707889723,-731.911716985361],"Archive241_field22":[102.839327423296,95.729322171222,25.3584613298901,32.3715646840704,64.2231722971564,94.7049131259121,60.1982623647847,31.3914325854746,67.2348631880427,44.7579205322548,82.2039798753723,48.7477688416395,62.1381811763767,42.5780345717959,29.3409468907635,36.3550869981051,34.2640102089035,42.7950723361917,49.6933745910294,32.9741895268464,55.3297422902635,62.6839510691198,58.4754283487227,69.024868143374,78.3096511333068,78.0452003797237,75.9913577465194,38.0724411571447,49.2040058334493,39.6273056366247,84.334773790313,70.3577284194704,97.9240219675156,69.2173042951225,65.4072379448532,54.5520214488718,94.385000622464,58.053022077101,53.0592489042643,74.1067991139698,88.1964605236488,86.361830967704,92.1919196980441,84.6048440571955],"Archive241_field23":[992.496527868228,923.878269633586,244.733074910166,312.416138413245,619.814200565953,913.991755922717,580.970022633724,302.956939008872,648.879858880827,431.956157589591,793.345956721753,470.461957782992,599.692069277673,410.918201574974,283.167817634444,350.860886783599,330.680023053851,413.012820754,479.5879453455,318.232036660037,533.984210971128,604.959263619902,564.343049063616,666.155095383694,755.762010465781,753.209811211862,733.38829221405,367.434974563764,474.865075166214,382.440883644029,813.910128183869,679.01845446338,945.059193139325,668.012285791607,631.24155110929,526.478471152791,910.904298460194,560.266430045984,512.071807821343,715.200523524444,851.179048261252,833.473142263785,889.738998595275,816.516561042556],"Archive241_field24":[-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6],"Archive241_field25":[0,0,0,0,351.991732845485,0,0,269.27834991636,0,73.4786438671088,656.023100523542,355.307135802186,13.6567510392583,0,905.349939569031,433.664999836337,251.317829075705,273.11235659452,236.357924024841,-571.972449420081,409.406836870387,499.046830474528,206.659316044904,104.415753348635,321.210594717739,0,-307.897702556732,121.296411820217,0,200.425143353363,0,515.36267692614,0,0,-95.6733941766072,-96.3914340881096,0,0,244.156325888109,538.561733151252,338.599428017831,-400.752848949089,500.834516908907,-167.328981350553],"Archive241_field26":[0,0,0,0,5561.6997956614,0,0,7637.92995377316,0,5856.67654614212,2811.39698835739,5535.39041497756,4282.0745314017,0,7003.18512417094,7151.54198334324,3341.72850974083,7087.88165791589,6603.8382337232,6991.49293462762,6104.73739066068,4199.36377668405,5690.15229202226,4729.39031515763,3998.04966024879,0,2557.7163609955,6857.86437076153,0,4297.05733400435,0,4681.52876650963,0,0,2139.21710606999,2757.71646152797,0,0,3135.68215062568,2309.7371882504,1992.66321462921,945.113149524188,877.087679502764,2436.01471518769],"Archive241_field27":[0,0,0,0,5572.82718169616,0,0,7642.67523897744,0,5857.13746443054,2886.92212131978,5546.78196858119,4282.09630897392,0,7061.46304928992,7164.67850441344,3351.16548144462,7093.14152938916,6608.06662235133,7014.85038599139,6118.45017688358,4228.91284704861,5693.90386108814,4730.5428232555,4010.93222729759,0,2576.18205461954,6858.93698376657,0,4301.72895122517,0,4709.81000470567,0,0,2141.35546447939,2759.40054916787,0,0,3145.17326410226,2371.69446160372,2021.22642462204,1026.567928266,1010.00891622942,2441.75483630334],"Archive241_field28":[8928270.49050117,8310996.42162172,2201562.45328462,2810423.72545372,5575705.99102518,8222059.6181769,5226272.70050778,2725330.94322785,5837173.96812438,3885778.24375971,7136757.75709884,4232167.56596551,5394691.92604602,3696525.6301821,2547312.5588414,3156263.8395013,2974721.43098715,3715368.34255421,4314262.85110069,2862742.20842526,4803599.14552774,5442074.394894,5076700.27047501,5992578.02239977,6798661.22088776,6775702.22340533,6597392.39745039,3305360.52113147,4271776.99722797,3440350.22785845,7321748.31381261,6108293.84210804,8501535.13786695,6009284.88015556,5678503.80822242,4736079.23644214,8194285.56095926,5040027.94341476,4606480.206645,6433779.41350549,7657010.94697712,7497732.68898229,8003887.39139341,7345195.18432979],"Archive241_field29":[-883.187184873864,-822.098769426766,-218.980446162636,-279.358418844269,-552.418865350558,-802.267665096238,-516.774555510351,-275.608231496358,-576.962417095327,-385.438882822542,-702.955543476534,-420.411360462826,-533.778082701843,-365.584924647644,-257.900636315014,-313.280390002652,-294.041607819809,-369.516712213196,-428.539945489597,-288.093769638807,-476.9237322048,-538.286394218388,-503.222560257794,-593.400587456897,-670.783570930219,-670.357691825469,-651.425310471732,-327.308636174928,-421.179893087384,-340.587093816836,-722.323159985164,-604.349469865148,-833.180455299924,-594.644948352416,-561.118497625798,-468.515858151501,-802.873858606078,-497.438076958669,-455.262630036868,-634.745862981593,-751.029755971176,-739.350571719758,-789.476947488074,-721.775360411845],"Archive241_field30":[102.091430312573,95.029955898841,25.3128978116025,32.2922490703299,63.856488252082,92.7375926937854,59.7362081615018,31.8587486789683,66.6935836555121,44.5545491594215,81.2576746003409,48.5971692574259,61.7017194835281,42.2595441795531,29.811851089849,36.2134365760972,33.9895424524534,42.7140365262801,49.5367875920363,33.3020060869286,55.1296789680576,62.2228547297155,58.1696743591343,68.5937429339488,77.5387770104725,77.4895478009811,75.3010718756855,37.8350222841248,48.6860072707336,39.3699366898414,83.4964612414693,69.8593716528961,96.3109359452475,68.7375839971168,64.8621164103976,54.1577764057351,92.8076652260025,57.5010208916237,52.6257783903032,73.3730223293881,86.8147809519571,85.4647334812371,91.2590582701591,83.4331387171816],"Archive241_field31":[985.278615186437,917.128725325607,244.293343974239,311.650667914599,616.27535360264,895.005257790023,576.510763671853,307.466980175326,643.656000750839,429.993431981964,784.213218076875,469.008529720252,595.479802185371,407.844468827197,287.712487404863,349.493826578749,328.031150272263,412.230748739476,478.076733081634,321.395775725735,532.053411172858,600.509248948103,561.392234616928,661.994330390846,748.322347940692,747.84723962645,726.726382347417,365.143658459053,469.865900358118,379.957030506677,805.819621226633,674.208841518044,929.491391245172,663.382532349533,625.980614036195,522.673634557236,895.681523832081,554.939097850293,507.888408427171,708.118885310981,837.844536923133,824.815305200995,880.736005758233,805.208499129027],"Archive241_field32":[-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive242.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive242.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive242.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive242_field1":[0,0,0,0,311.961427919394,0,0,181.180313741772,0,-31.7052499972725,841.86250137696,464.145946747557,-548.129687880379,0,0,0,0,311.961546286316,0,0,181.180267366492,0,-31.707778198227,841.86514933674,464.148838930759,-548.131355363904,0,0,0,0,311.961573092439,0,0,181.180256864211,0,-31.7083507447132,841.865749003848,464.149493905754,-548.131732988805],"Archive242_field2":[0,0,0,0,5476.60139115648,0,0,8273.18200093894,0,4098.86213090109,2047.62858837302,4038.07256055324,1883.07896300446,0,0,0,0,5476.60549540155,0,0,8273.18384193681,0,4098.8623892654,2047.63494500866,4038.07383019686,1883.08408021303,0,0,0,0,5476.60635668264,0,0,8273.18497867638,0,4098.86224929223,2047.63640307426,4038.0739105125,1883.08525641862],"Archive242_field3":[0,0,0,0,3.45596801813211,0,0,5.20252810262635,0,2.56991697145221,1.33764742751102,2.56288663803279,1.14717998342281,0,0,0,0,1.27850551636579,0,0,5.19178964416681,0,2.02421687263065,-2.88674381375845,1.50032948399105,-2.41472735375006,0,0,0,0,-0.898954934031431,0,0,5.18105079129403,0,1.47851618291383,-7.11114110409778,0.437770920351824,-5.97663973255449],"Archive242_field4":[0,0,0,0,5485.48035032864,0,0,8275.16729698236,0,4098.98555687692,2213.93701275529,4064.66087546834,1961.23273776156,0,0,0,0,5485.48351498755,0,0,8275.16912977898,0,4098.9855289799,2213.94537669253,4064.66193597821,1961.23926811418,0,0,0,0,5485.48430106796,0,0,8275.17025928538,0,4098.98516027931,2213.95649163856,4064.66183723789,1961.24812297501],"Archive242_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,6949232.325,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,3474616.1625,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive242_field6":[-894.163746581599,-832.895797999854,-213.08321030299,-275.327673464478,-553.147164268138,-858.099040922114,-523.093789195316,-252.67189181221,-584.915222769515,-380.571595564737,-723.937240893858,-411.347919375105,-692.963111492179,-894.163746581599,-832.895797999854,-213.08321030299,-275.327673464478,-553.147164268138,-858.099040922114,-523.093789195316,-252.67189181221,-584.915222769515,-380.571595564737,-723.937240893858,-411.347919375105,-692.963111492179,-894.163746581599,-832.895797999854,-213.08321030299,-275.327673464478,-553.147164268138,-858.099040922114,-523.093789195316,-252.67189181221,-584.915222769515,-380.571595564737,-723.937240893858,-411.347919375105,-692.963111492179],"Archive242_field7":[103.360258601581,96.2780311755557,24.6312107874776,31.8263177614337,63.9406754770149,99.191383138216,60.4666757412252,29.2074378757843,67.6128828937498,43.9919183531757,83.6830398416019,47.5494868634254,80.102606126686,103.360258601581,96.2780311755557,24.6312107874776,31.8263177614337,63.9406754770149,99.191383138216,60.4666757412252,29.2074378757843,67.6128828937498,43.9919183531757,83.6830398416019,47.5494868634254,80.102606126686,103.360258601581,96.2780311755557,24.6312107874776,31.8263177614337,63.9406754770149,99.191383138216,60.4666757412252,29.2074378757843,67.6128828937498,43.9919183531757,83.6830398416019,47.5494868634254,80.102606126686],"Archive242_field8":[997.524005183179,929.17382917541,237.714421090468,307.153991225912,617.087839745153,957.29042406033,583.560464936541,281.879329687994,652.528105663265,424.563513917913,807.62028073546,458.89740623853,773.065717618865,997.524005183179,929.17382917541,237.714421090468,307.153991225912,617.087839745153,957.29042406033,583.560464936541,281.879329687994,652.528105663265,424.563513917913,807.62028073546,458.89740623853,773.065717618865,997.524005183179,929.17382917541,237.714421090468,307.153991225912,617.087839745153,957.29042406033,583.560464936541,281.879329687994,652.528105663265,424.563513917913,807.62028073546,458.89740623853,773.065717618865],"Archive242_field9":[3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6],"Archive242_field10":[0,0,0,0,306.353306980045,0,0,178.556704577249,0,-42.21990817902,838.706112579351,467.873499269928,-550.052072974989,0,0,0,0,306.353424227278,0,0,178.556654301012,0,-42.2223629517441,838.708722364085,467.876311684065,-550.053732044792,0,0,0,0,306.353450779806,0,0,178.556642915307,0,-42.2229188693757,838.709313385942,467.876948594259,-550.054107764249],"Archive242_field11":[0,0,0,0,5415.14729940059,0,0,8249.40232449236,0,4059.9832462109,2018.36232289783,4001.68179700982,1857.1173877975,0,0,0,0,5415.15128580453,0,0,8249.40434399788,0,4059.98347216755,2018.36846424757,4001.68301396769,1857.12234028737,0,0,0,0,5415.15211211219,0,0,8249.40561934232,0,4059.98330107507,2018.36987578821,4001.6830574246,1857.12348128543],"Archive242_field12":[0,0,0,0,3.36712761502781,0,0,4.86270595437238,0,2.48988307433071,1.29228781166443,2.4759444315823,1.10582394053757,0,0,0,0,1.19904292855543,0,0,4.80861145577332,0,1.92675430422071,-2.87169148652855,1.39919710020191,-2.4089346411326,0,0,0,0,-0.969039712854992,0,0,4.75451637769777,0,1.36362492043356,-7.03567658854588,0.322448369056969,-5.92369806486572],"Archive242_field13":[0,0,0,0,5423.80714631811,0,0,8251.33594359111,0,4060.20352687861,2185.68435044479,4028.94141756115,1936.86434679625,0,0,0,0,5423.81022035157,0,0,8251.33792983359,0,4060.20347206751,2185.69252756436,4028.94243506471,1936.87074888774,0,0,0,0,5423.81100086976,0,0,8251.33917328526,0,4060.203078586,2185.70349512341,4028.94232213343,1936.87951003897],"Archive242_field14":[8973496.52010669,8358634.05728128,2138424.257813,2763086.65965032,5551180.27614425,8611564.4780492,5249575.72366219,2535721.61762736,5869992.75708243,3819275.72159734,7265166.29283163,4128135.52011838,6954321.39058426,4486748.26005334,4179317.02864064,1069212.1289065,1381543.32982516,2775590.13807213,4305782.2390246,2624787.8618311,1267860.80881368,2934996.37854121,1909637.86079867,3632583.14641581,2064067.76005919,3477160.69529213,0,-1.27837580521373e-10,0,1.27837580521373e-10,-4.47431531824805e-10,3.83512741564118e-10,-1.91756370782059e-10,6.39187902606864e-11,-3.83512741564118e-10,0,-2.55675161042745e-10,-1.27837580521373e-10,2.55675161042745e-10],"Archive242_field15":[-892.033745535379,-832.205298219381,-219.771314779729,-281.491162554776,-554.963804063989,-851.445006257175,-526.211471549542,-266.94490623711,-587.116237831134,-382.645629344134,-724.051252159447,-412.842149850121,-693.474424057603,-892.033745535379,-832.205298219381,-219.771314779729,-281.491162554776,-554.963804063989,-851.445006257175,-526.211471549543,-266.94490623711,-587.116237831134,-382.645629344134,-724.051252159447,-412.842149850121,-693.474424057603,-892.033745535379,-832.205298219381,-219.771314779729,-281.491162554776,-554.963804063989,-851.445006257175,-526.211471549542,-266.94490623711,-587.116237831134,-382.645629344134,-724.051252159447,-412.842149850121,-693.474424057603],"Archive242_field16":[103.114042559161,96.1982133165261,25.4043177389873,32.5387821491889,64.1506687358591,98.422214463752,60.8270621420409,30.8573174058165,67.8673077536535,44.2316648969228,83.6962188973843,47.7222114330565,80.1617109597666,103.114042559161,96.1982133165261,25.4043177389873,32.5387821491889,64.1506687358591,98.422214463752,60.8270621420409,30.8573174058164,67.8673077536535,44.2316648969228,83.6962188973843,47.7222114330565,80.1617109597666,103.114042559161,96.1982133165261,25.4043177389873,32.5387821491889,64.1506687358591,98.422214463752,60.8270621420409,30.8573174058165,67.8673077536535,44.2316648969228,83.6962188973843,47.7222114330565,80.1617109597666],"Archive242_field17":[995.14778809454,928.403511535907,245.175632518717,314.029944703965,619.114472799848,949.867220720927,587.038533691583,297.802223642927,654.983545584788,426.877294241057,807.747471056832,460.564361283177,773.636135017369,995.14778809454,928.403511535907,245.175632518717,314.029944703965,619.114472799848,949.867220720927,587.038533691583,297.802223642927,654.983545584788,426.877294241057,807.747471056831,460.564361283177,773.636135017369,995.14778809454,928.403511535907,245.175632518717,314.029944703965,619.114472799848,949.867220720927,587.038533691583,297.802223642927,654.983545584788,426.877294241057,807.747471056832,460.564361283177,773.636135017369],"Archive242_field18":[3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6],"Archive242_field19":[0,0,0,0,299.535507388292,0,0,176.585481966148,0,-53.9464634683143,832.44141075865,471.46640113124,-549.986335451762,0,0,0,0,299.535623703894,0,0,176.585428703258,0,-53.9488447206853,832.443972839483,471.469135507582,-549.987978895071,0,0,0,0,299.535650045432,0,0,176.585416641199,0,-53.9493839885801,832.444553058077,471.469754744994,-549.988351075642],"Archive242_field20":[0,0,0,0,5335.82004600274,0,0,8224.39487133106,0,4011.86963021881,1980.82177595759,3957.0814811492,1823.63454542335,0,0,0,0,5335.82392051615,0,0,8224.39709256196,0,4011.86982693739,1980.82769156015,3957.08265008378,1823.63932482148,0,0,0,0,5335.82471360846,0,0,8224.3985167769,0,4011.86962488751,1980.82905408514,3957.08265720875,1823.64042860492],"Archive242_field21":[0,0,0,0,3.26829948844927,0,0,4.55027167350344,0,2.40768135159997,1.24398544604989,2.38847860108496,1.06221658799477,0,0,0,0,1.1100358491469,0,0,4.44295716433135,0,1.82207802378985,-2.84427072577882,1.29269295972378,-2.39245195196445,0,0,0,0,-1.04822576934493,0,0,4.33564186179458,0,1.23647405624923,-6.93253245650389,0.196905921979943,-5.8471251347973],"Archive242_field22":[0,0,0,0,5344.22190457064,0,0,8226.29163943209,0,4012.23303756428,2148.6309962284,3985.06965066856,1904.76482872536,0,0,0,0,5344.22489541745,0,0,8226.29380034778,0,4012.23295760674,2148.63896489016,3985.07062878255,1904.7710854039,0,0,0,0,5344.22567625847,0,0,8226.29516671525,0,4012.23253962129,2148.6497470342,3985.07050431903,1904.77972165643],"Archive242_field23":[8952120.61770722,8351704.45696937,2205543.5997429,2824941.15566958,5569411.40097869,8544787.04814469,5280863.63022674,2678960.30938033,5892081.32986527,3840089.95721487,7266310.46770891,4143131.06430037,6959452.7343052,4476060.30885361,4175852.22848468,1102771.79987145,1412470.57783479,2784705.70048934,4272393.52407235,2640431.81511337,1339480.15469017,2946040.66493263,1920044.97860743,3633155.23385446,2071565.53215018,3479726.3671526,-2.55675161042745e-10,-1.27837580521373e-10,3.19593951303432e-11,-2.55675161042745e-10,2.55675161042746e-10,2.55675161042745e-10,3.83512741564118e-10,6.39187902606864e-11,2.55675161042745e-10,0,-5.11350322085491e-10,6.39187902606864e-11,1.27837580521373e-10],"Archive242_field24":[-883.593699938689,-825.152825046568,-219.78153927546,-280.969173134629,-550.304593991968,-838.692587932441,-522.815906075075,-273.962096239907,-582.823861409118,-378.461464708433,-717.763011074188,-408.102163403764,-687.575730112387,-883.593699938689,-825.152825046568,-219.78153927546,-280.969173134629,-550.304593991968,-838.692587932441,-522.815906075075,-273.962096239907,-582.823861409118,-378.461464708433,-717.763011074188,-408.102163403764,-687.575730112388,-883.593699938689,-825.152825046568,-219.78153927546,-280.969173134629,-550.304593991968,-838.692587932441,-522.815906075075,-273.962096239907,-582.823861409118,-378.461464708433,-717.763011074188,-408.102163403764,-687.575730112387],"Archive242_field25":[102.138421148856,95.3829874099631,25.405499632714,32.4784431322472,63.612090472354,96.9481072201077,60.4345540283075,31.6684647780045,67.371133379898,43.7479991920326,82.9693338864383,47.1742958787339,79.4798553892182,102.138421148856,95.3829874099631,25.405499632714,32.4784431322472,63.612090472354,96.9481072201077,60.4345540283075,31.6684647780045,67.371133379898,43.7479991920326,82.9693338864383,47.1742958787339,79.4798553892182,102.138421148856,95.3829874099631,25.405499632714,32.4784431322472,63.612090472354,96.9481072201077,60.4345540283075,31.6684647780045,67.371133379898,43.7479991920326,82.9693338864383,47.1742958787339,79.4798553892182],"Archive242_field26":[985.732121087545,920.535812456531,245.187038908174,313.447616266876,613.916684464322,935.640695152548,583.250460103382,305.630561017911,650.194994789016,422.209463900466,800.732344960626,455.276459282498,767.055585501606,985.732121087545,920.535812456531,245.187038908174,313.447616266876,613.916684464322,935.640695152549,583.250460103382,305.630561017911,650.194994789016,422.209463900466,800.732344960626,455.276459282497,767.055585501606,985.732121087545,920.535812456531,245.187038908174,313.447616266876,613.916684464322,935.640695152548,583.250460103382,305.630561017911,650.194994789016,422.209463900466,800.732344960626,455.276459282498,767.055585501606],"Archive242_field27":[-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6],"Archive242_field28":[0,0,0,0,292.161641072617,0,0,174.760191408505,0,-55.53057499011,819.721374356307,464.448999937366,-544.383579110021,0,0,0,0,292.161754315699,0,0,174.760136284614,0,-55.5328255327165,819.723849006693,464.451591561652,-544.385178935458,0,0,0,0,292.161779961404,0,0,174.760123801113,0,-55.5333351995828,819.724409425498,464.452178470907,-544.385541238158],"Archive242_field29":[0,0,0,0,5218.02239892484,0,0,8105.7997077734,0,3930.39044275173,1931.09982939865,3878.52963116182,1778.56803358659,0,0,0,0,5218.02609212793,0,0,8105.80195979374,0,3930.39061061517,1931.10544023242,3878.53073277305,1778.5725713182,0,0,0,0,5218.02684234997,0,0,8105.80342901107,0,3930.39039489037,1931.10673421274,3878.53071715736,1778.57362082544],"Archive242_field30":[0,0,0,0,3.14828421236714,0,0,4.21502570624837,0,2.31033699152412,1.19057260127388,2.28519693683256,1.01446307581458,0,0,0,0,1.04492273948695,0,0,4.06979042008602,0,1.72784216003681,-2.76266619215253,1.2050895177968,-2.32694273541537,0,0,0,0,-1.05843680494401,0,0,3.92455425897049,0,1.14534670626996,-6.71591020208616,0.124980767050558,-5.66835290312706],"Archive242_field31":[0,0,0,0,5226.19613982188,0,0,8107.68449025257,0,3930.78338437643,2097.87776101068,3906.23990500687,1860.01579574906,0,0,0,0,5226.19898977031,0,0,8107.68666635707,0,3930.78328481259,2097.88537395399,3906.2408244001,1860.0217819027,0,0,0,0,5226.19974297227,0,0,8107.68806336089,0,3930.78286342351,2097.89571470548,3906.24069479081,1860.03007299074],"Archive242_field32":[8867419.4429157,8280928.44562209,2205646.20899898,2819702.66298507,5522653.29260362,8416808.49623244,5246786.99148421,2749382.23188809,5849004.62827319,3798099.22907189,7203204.00682645,4095562.31411971,6900255.62438778,4433709.72145785,4140464.22281104,1102823.10449949,1409851.33149254,2761326.64630181,4208404.24811622,2623393.4957421,1374691.11594405,2924502.31413659,1899049.61453595,3601602.00341323,2047781.15705986,3450127.81219389,-1.27837580521373e-10,3.83512741564118e-10,-1.27837580521373e-10,1.91756370782059e-10,4.47431531824805e-10,1.27837580521373e-10,-1.91756370782059e-10,-6.39187902606864e-11,-3.83512741564118e-10,-1.91756370782059e-10,-2.55675161042745e-10,6.39187902606864e-11,0],"Archive242_field33":[-875.326804854766,-818.21654423996,-219.572416543682,-280.224638487951,-545.648226056462,-826.34184015143,-519.377348223672,-280.153382960068,-578.512975054926,-374.474924181233,-711.546258415419,-403.582229121746,-681.740534693013,-875.326804854766,-818.21654423996,-219.572416543682,-280.224638487951,-545.648226056462,-826.34184015143,-519.377348223672,-280.153382960068,-578.512975054926,-374.474924181233,-711.546258415418,-403.582229121746,-681.740534693013,-875.326804854766,-818.21654423996,-219.572416543682,-280.224638487951,-545.648226056462,-826.34184015143,-519.377348223672,-280.153382960068,-578.512975054926,-374.474924181233,-711.546258415419,-403.582229121746,-681.740534693013],"Archive242_field34":[101.182814955949,94.5811926820456,25.3813262307855,32.392379149098,63.0738407437132,95.5204308135786,60.0370762395956,32.3841424141409,66.8728193629467,43.287177713425,82.2507125322076,46.6518171067667,78.8053398881782,101.182814955949,94.5811926820456,25.3813262307855,32.392379149098,63.0738407437132,95.5204308135786,60.0370762395956,32.3841424141409,66.8728193629467,43.287177713425,82.2507125322076,46.6518171067667,78.8053398881782,101.182814955949,94.5811926820456,25.3813262307855,32.392379149098,63.0738407437132,95.5204308135786,60.0370762395956,32.3841424141409,66.8728193629467,43.287177713425,82.2507125322076,46.6518171067667,78.8053398881782],"Archive242_field35":[976.509619810715,912.797736922006,244.953742774468,312.617017637049,608.722066800176,921.862270965009,579.414424463267,312.537525374209,645.385794417872,417.762101894658,793.796970947626,450.234046228513,760.545874581191,976.509619810715,912.797736922006,244.953742774468,312.617017637049,608.722066800176,921.862270965009,579.414424463267,312.537525374209,645.385794417872,417.762101894658,793.796970947626,450.234046228513,760.545874581191,976.509619810715,912.797736922006,244.953742774468,312.617017637049,608.722066800176,921.862270965009,579.414424463267,312.537525374209,645.385794417872,417.762101894658,793.796970947626,450.234046228513,760.545874581191],"Archive242_field36":[-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2424.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2424.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2424.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive2424_field1":[-14.0187737650188,-14.0187737650181,-14.0187737650187,-14.018773765019,43.7783909023754,-14.0187737650185,43.7783909023753,-14.0187737650191,43.7783909023751,14.8798085686789,14.879808568678,14.8798085686782,43.7783909023754,14.879808568678,-14.0187737650185,0.430517401829448,0.430517401829533,7.65516298525414,20.2982927562464,-14.0187737650191,27.5229383396708,38.4727918020478,35.8590678590059,34.5562429385139,19.9319723776024,14.8798085686778,19.931972377603,0.43051740183013,14.8798085686784,0.430517401830443,14.8798085686785,35.3088092437459,-14.018773765018,29.3290997355261,36.5537453189509,32.9414225272382,-14.018773765019,29.3290997355267,22.1044541521022,30.3031745703523,1.31375654683247,1.31375654683269,0.430517401829761,5.48268121075435],"Archive2424_field2":[-16.0600314894827,-16.0600314894826,-16.0600314894821,-16.0600314894825,41.7371331779115,-16.0600314894826,41.7371331779118,-16.0600314894832,41.7371331779113,12.8385508442152,12.8385508442141,12.8385508442145,41.7371331779112,12.8385508442143,-16.0600314894827,-1.61074032263444,-1.61074032263453,5.61390526079019,18.2570350317824,-16.0600314894836,25.4816806152068,36.4315340775836,33.817810134542,32.5149852140509,17.8907146531379,12.8385508442146,17.8907146531383,-1.61074032263365,12.8385508442143,-1.61074032263328,12.8385508442152,33.267551519283,-16.0600314894814,27.2878420110623,34.5124875944875,30.9001648027738,-16.0600314894829,27.2878420110633,20.0631964276384,28.2619168458883,-0.727501177631197,-0.727501177630742,-1.6107403226343,3.44142348629071],"Archive2424_field3":[-18.1012892139468,-18.1012892139455,-18.1012892139458,-18.1012892139462,39.6958754534475,-18.1012892139464,39.6958754534478,-18.101289213947,39.6958754534479,10.7972931197503,10.7972931197502,10.7972931197503,39.6958754534475,10.7972931197503,-18.1012892139465,-3.6519980470981,-3.6519980470981,3.5726475363265,16.2157773073191,-18.1012892139471,23.4404228907427,34.3902763531191,31.7765524100785,30.4737274895865,15.8494569286745,10.7972931197501,15.8494569286749,-3.65199804709742,10.7972931197505,-3.65199804709742,10.7972931197516,31.2262937948196,-18.1012892139453,25.2465842865987,32.471229870023,28.8589070783103,-18.1012892139471,25.2465842865994,18.021938703175,26.2206591214245,-2.76875890209463,-2.76875890209463,-3.6519980470989,1.40016576182644],"Archive2424_field4":[-20.1425469384108,-20.1425469384091,-20.1425469384093,-20.1425469384095,37.6546177289841,-20.1425469384104,37.6546177289841,-20.1425469384106,37.6546177289842,8.75603539528741,8.7560353952864,8.75603539528639,37.6546177289833,8.75603539528662,-20.1425469384105,-5.69325577156191,-5.69325577156214,1.53138981186326,14.1745195828548,-20.142546938411,21.3991651662792,32.3490186286548,29.7352946856147,28.432469765123,13.8081992042105,8.75603539528571,13.8081992042111,-5.69325577156111,8.7560353952865,-5.69325577156168,8.75603539528718,29.1850360703561,-20.1425469384088,23.2053265621348,30.4299721455592,26.8176493538457,-20.1425469384105,23.2053265621361,15.9806809787113,24.1794013969613,-4.81001662655798,-4.81001662655832,-5.69325577156259,-0.641091962637814],"Archive2424_field5":[-22.1838046628749,-22.1838046628727,-22.1838046628731,-22.1838046628738,35.6133600045202,-22.1838046628747,35.6133600045202,-22.1838046628747,35.6133600045209,6.71477767082398,6.71477767082251,6.71477767082293,35.6133600045194,6.71477767082293,-22.183804662875,-7.73451349602605,-7.73451349602651,-0.509867912601109,12.1332618583912,-22.1838046628753,19.3579074418151,30.30776090419,27.6940369611511,26.3912120406588,11.7669414797461,6.71477767082156,11.7669414797474,-7.73451349602503,6.7147776708227,-7.73451349602549,6.71477767082258,27.1437783458931,-22.1838046628729,21.1640688376705,28.3887144210956,24.7763916293817,-22.1838046628753,21.164068837672,13.9394232542476,22.1381436724977,-6.8512743510219,-6.85127435102224,-7.73451349602605,-2.6823496871008],"Archive2424_field6":[-24.225062387339,-24.2250623873363,-24.2250623873365,-24.2250623873373,33.5721022800564,-24.2250623873388,33.5721022800565,-24.2250623873389,33.5721022800574,4.67351994636057,4.67351994635864,4.67351994635943,33.5721022800554,4.67351994635898,-24.2250623873389,-9.77577122048967,-9.77577122049058,-2.55112563706496,10.0920041339277,-24.2250623873394,17.3166497173514,28.2665031797259,25.652779236687,24.3499543161951,9.72568375528205,4.67351994635736,9.7256837552833,-9.77577122048842,4.6735199463585,-9.77577122048888,4.6735199463583,25.1025206214296,-24.2250623873368,19.1228111132071,26.3474566966316,22.7351339049183,-24.2250623873398,19.1228111132089,11.8981655297837,20.0968859480345,-8.89253207548484,-8.89253207548529,-9.77577122048933,-4.72360741156443],"Archive2424_field7":[-26.2663201118027,-26.2663201117995,-26.2663201118011,-26.2663201118006,31.5308445555928,-26.2663201118021,31.5308445555926,-26.2663201118031,31.5308445555935,2.6322622218962,2.63226222189481,2.63226222189517,31.530844555592,2.63226222189515,-26.2663201118025,-11.8170289449535,-11.8170289449542,-4.59238336152898,8.05074640946383,-26.2663201118034,15.2753919928872,26.225245455262,23.611521512223,22.308696591731,7.684426030818,2.63226222189355,7.68442603081891,-11.8170289449519,2.63226222189481,-11.8170289449528,2.63226222189458,23.0612628969662,-26.2663201118006,17.0815533887435,24.3061989721677,20.6938761804541,-26.2663201118039,17.081553388745,9.85690780531975,18.0556282235705,-10.9337897999491,-10.9337897999491,-11.8170289449535,-6.76486513602836],"Archive2424_field8":[-28.3075778362665,-28.3075778362625,-28.3075778362649,-28.3075778362646,29.4895868311293,-28.3075778362664,29.4895868311293,-28.3075778362671,29.4895868311301,0.591004497432365,0.591004497431605,0.591004497432166,29.4895868311283,0.591004497430916,-28.3075778362664,-13.858286669417,-13.8582866694181,-6.63364108599302,6.00948868499991,-28.3075778362674,13.2341342684236,24.1839877307979,21.5702637877592,20.267438867267,5.64316830635433,0.591004497429324,5.64316830635559,-13.8582866694157,0.591004497431257,-13.8582866694165,0.591004497430234,21.0200051725033,-28.3075778362641,15.0402956642797,22.2649412477035,18.6526184559904,-28.3075778362683,15.0402956642814,7.81565008085632,16.0143704991067,-12.975047524413,-12.9750475244133,-13.8582866694175,-8.8061228604917],"Archive2424_field9":[-30.3488355607301,-30.3488355607261,-30.3488355607288,-30.3488355607283,27.4483291066659,-30.3488355607303,27.4483291066653,-30.3488355607309,27.4483291066664,-1.45025322703167,-1.45025322703234,-1.45025322703178,27.4483291066645,-1.45025322703269,-30.3488355607301,-15.8995443938813,-15.8995443938821,-8.67489881045718,3.96823096053642,-30.3488355607318,11.1928765439596,22.1427300063335,19.5290060632952,18.2261811428025,3.60191058189038,-1.4502532270353,3.60191058189164,-15.8995443938795,-1.45025322703303,-15.8995443938802,-1.45025322703371,18.9787474480402,-30.3488355607277,12.999037939816,20.2236835232394,16.6113607315267,-30.3488355607323,12.9990379398182,5.77439235639214,13.9731127746425,-15.0163052488767,-15.0163052488768,-15.899544393882,-10.8473805849554],"Archive2424_field10":[-32.3900932851939,-32.3900932851893,-32.3900932851918,-32.3900932851919,25.4070713822019,-32.3900932851946,25.4070713822022,-32.390093285194,25.4070713822028,-3.49151095149512,-3.49151095149569,-3.49151095149524,25.4070713822003,-3.49151095149638,-32.3900932851944,-17.9408021183451,-17.9408021183465,-10.7161565349215,1.92697323607261,-32.3900932851957,9.15161881949574,20.1014722818697,17.4877483388309,16.1849234183389,1.56065285742658,-3.491510951499,1.5606528574274,-17.9408021183433,-3.49151095149661,-17.9408021183439,-3.49151095149809,16.9374897235768,-32.390093285191,10.9577802153522,18.1824257987756,14.5701030070624,-32.3900932851961,10.9577802153543,3.733134631928,11.9318550501785,-17.0575629733409,-17.057562973341,-17.9408021183463,-12.8886383094183],"Archive2424_field11":[-34.4313510096574,-34.431351009652,-34.4313510096557,-34.4313510096561,23.3658136577384,-34.4313510096582,23.3658136577386,-34.4313510096584,23.3658136577391,-5.53276867595768,-5.53276867595927,-5.53276867595916,23.3658136577361,-5.53276867596087,-34.4313510096591,-19.9820598428091,-19.9820598428103,-12.7574142593855,-0.114284488391533,-34.4313510096595,7.11036109503205,18.0602145574053,15.4464906143671,14.1436656938748,-0.480604867037684,-5.53276867596337,-0.480604867036099,-19.9820598428077,-5.53276867596053,-19.9820598428072,-5.53276867596257,14.8962319991135,-34.4313510096551,8.91652249088789,16.1411680743117,12.5288452825984,-34.4313510096608,8.91652249089073,1.69187690746385,9.89059732571485,-19.0988206978048,-19.0988206978051,-19.98205984281,-14.9298960338821],"Archive2424_field12":[-36.4726087341211,-36.4726087341159,-36.4726087341197,-36.4726087341201,21.3245559332747,-36.472608734122,21.3245559332748,-36.472608734122,21.3245559332759,-7.57402640042177,-7.57402640042291,-7.5740264004228,21.3245559332723,-7.57402640042484,-36.4726087341226,-22.0233175672731,-22.0233175672737,-14.7986719838491,-2.15554221285449,-36.4726087341234,5.0691033705675,16.0189568329418,13.4052328899028,12.1024079694115,-2.52186259150143,-7.57402640042746,-2.52186259150052,-22.0233175672715,-7.57402640042439,-22.0233175672706,-7.57402640042586,12.8549742746501,-36.4726087341187,6.87526476642402,14.0999103498477,10.487587558135,-36.4726087341247,6.87526476642698,-0.349380817000352,7.84933960125021,-21.1400784222685,-21.1400784222684,-22.0233175672737,-16.9711537583458],"Archive2424_field13":[-38.5138664585846,-38.5138664585794,-38.5138664585837,-38.5138664585837,19.2832982088114,-38.513866458586,19.2832982088112,-38.5138664585858,19.283298208812,-9.61528412488543,-9.61528412488736,-9.6152841248868,19.2832982088085,-9.61528412488919,-38.5138664585871,-24.0645752917368,-24.064575291737,-16.839929708313,-4.19679993731837,-38.5138664585871,3.02784564610373,13.9776991084774,11.3639751654391,10.0611502449477,-4.56312031596544,-9.61528412489191,-4.56312031596396,-24.0645752917351,-9.61528412488839,-24.0645752917343,-9.61528412488953,10.813716550187,-38.5138664585822,4.83400704196002,12.0586526253837,8.4463298336716,-38.5138664585887,4.8340070419632,-2.3906385414639,5.80808187678666,-23.1813361467315,-23.1813361467321,-24.0645752917377,-19.0124114828098],"Archive2424_field14":[-40.5551241830483,-40.5551241830429,-40.5551241830477,-40.5551241830479,17.2420404843477,-40.5551241830499,17.2420404843472,-40.5551241830498,17.2420404843481,-11.6565418493492,-11.656541849351,-11.6565418493498,17.2420404843446,-11.6565418493521,-40.5551241830512,-26.105833016201,-26.1058330162014,-18.8811874327769,-6.23805766178187,-40.5551241830511,0.986587921639213,11.9364413840135,9.32271744097528,8.01989252048389,-6.60437804042938,-11.6565418493557,-6.6043780404279,-26.1058330161988,-11.6565418493521,-26.1058330161983,-11.6565418493535,8.77245882572373,-40.5551241830458,2.79274931749607,10.01739490092,6.40507210920718,-40.5551241830527,2.79274931750005,-4.43189626592853,3.76682415232283,-25.2225938711956,-25.2225938711962,-26.1058330162019,-21.0536692072737],"Archive2424_field15":[-42.5963819075117,-42.5963819075068,-42.5963819075116,-42.5963819075116,15.2007827598834,-42.5963819075135,15.2007827598831,-42.5963819075131,15.2007827598843,-13.697799573814,-13.6977995738151,-13.6977995738133,15.2007827598805,-13.6977995738155,-42.5963819075148,-28.1470907406649,-28.147090740665,-20.922445157241,-8.27931538624521,-42.5963819075154,-1.05466980282481,9.89518365954928,7.28145971651135,5.9786347960204,-8.64563576489307,-13.6977995738198,-8.64563576489216,-28.1470907406622,-13.6977995738161,-28.1470907406616,-13.6977995738174,6.73120110126025,-42.5963819075091,0.751491593032043,7.97613717645584,4.36381438474349,-42.5963819075165,0.751491593036818,-6.47315399039279,1.72556642785914,-27.2638515956593,-27.2638515956593,-28.1470907406662,-23.0949269317385],"Archive2424_field16":[-44.637639631975,-44.63763963197,-44.637639631975,-44.6376396319755,13.1595250354203,-44.6376396319773,13.1595250354194,-44.6376396319773,13.1595250354205,-15.7390572982777,-15.7390572982783,-15.7390572982775,13.1595250354166,-15.7390572982799,-44.6376396319786,-30.1883484651285,-30.1883484651291,-22.9637028817048,-10.3205731107092,-44.6376396319791,-3.09592752728908,7.85392593508607,5.24020199204755,3.93737707155626,-10.686893489357,-15.7390572982838,-10.6868934893555,-30.1883484651258,-15.7390572982799,-30.1883484651251,-15.7390572982817,4.68994337679635,-44.6376396319727,-1.2897661314321,5.93487945199205,2.32255666027969,-44.6376396319806,-1.28976613142721,-8.51441171485705,-0.315691296605237,-29.3051093201232,-29.3051093201228,-30.1883484651307,-25.1361846562019],"Archive2424_field17":[-46.6788973564398,-46.6788973564343,-46.6788973564397,-46.6788973564398,11.1182673109561,-46.6788973564421,11.1182673109557,-46.6788973564415,11.1182673109568,-17.7803150227414,-17.7803150227423,-17.7803150227419,11.1182673109521,-17.7803150227437,-46.6788973564431,-32.2296061895925,-32.2296061895927,-25.0049606061686,-12.3618308351729,-46.6788973564433,-5.13718525175268,5.81266821062142,3.19894426758405,1.89611934709232,-12.7281512138208,-17.7803150227472,-12.7281512138195,-32.2296061895897,-17.7803150227438,-32.2296061895883,-17.7803150227455,2.64868565233296,-46.678897356436,-3.3310238558965,3.89362172752833,0.281298935815855,-46.6788973564448,-3.33102385589036,-10.5556694393209,-2.35694902106873,-31.3463670445868,-31.3463670445867,-32.2296061895943,-27.1774423806664],"Archive2424_field18":[-48.7201550809036,-48.7201550808979,-48.7201550809033,-48.7201550809029,9.07700958649224,-48.7201550809056,9.0770095864919,-48.7201550809053,9.07700958649326,-19.8215727472055,-19.821572747206,-19.8215727472058,9.07700958648826,-19.8215727472081,-48.7201550809067,-34.2708639140564,-34.2708639140563,-27.046218330632,-14.4030885596356,-48.7201550809069,-7.1784429762168,3.77141048615766,1.15768654311994,-0.145138377371111,-14.7694089382847,-19.8215727472111,-14.7694089382833,-34.2708639140539,-19.8215727472079,-34.2708639140522,-19.8215727472096,0.607427927869978,-48.7201550808995,-5.37228158036039,1.85236400306432,-1.75995878864758,-48.7201550809094,-5.37228158035403,-12.5969271637847,-4.39820674553296,-33.3876247690505,-33.3876247690503,-34.2708639140577,-29.2187001051297],"Archive2424_field19":[-50.7614128053673,-50.7614128053609,-50.7614128053669,-50.7614128053667,7.03575186202926,-50.7614128053698,7.03575186202812,-50.7614128053687,7.03575186202949,-21.8628304716693,-21.8628304716698,-21.8628304716691,7.03575186202437,-21.862830471672,-50.7614128053709,-36.3121216385202,-36.3121216385204,-29.0874760550964,-16.4443462840995,-50.7614128053709,-9.21970070068112,1.73015276169333,-0.883571181344266,-2.18639610183497,-16.8106666627493,-21.8628304716752,-16.8106666627475,-36.3121216385178,-21.8628304716726,-36.3121216385156,-21.8628304716731,-1.43382979659366,-50.7614128053629,-7.41353930482425,-0.188893721399538,-3.80121651311156,-50.7614128053734,-7.41353930481755,-14.6381848882484,-6.43946446999648,-35.428882493514,-35.4288824935141,-36.3121216385217,-31.2599578295931],"Archive2424_field20":[-52.8026705298312,-52.8026705298249,-52.8026705298307,-52.8026705298302,4.99449413756548,-52.8026705298342,4.9944941375648,-52.8026705298328,4.9944941375656,-23.9040881961328,-23.9040881961338,-23.9040881961332,4.99449413756093,-23.9040881961359,-52.8026705298345,-38.3533793629845,-38.3533793629848,-31.1287337795602,-18.4856040085633,-52.8026705298354,-11.2609584251447,-0.311104962770841,-2.92482890580841,-4.22765382629912,-18.8519243872126,-23.9040881961391,-18.851924387211,-38.3533793629817,-23.9040881961372,-38.3533793629792,-23.9040881961364,-3.47508752105746,-52.8026705298263,-9.45479702928851,-2.23015144586334,-5.84247423757604,-52.8026705298367,-9.45479702928078,-16.6794426127127,-8.48072219446051,-37.4701402179775,-37.4701402179778,-38.3533793629869,-33.3012155540574],"Archive2424_field21":[-54.8439282542959,-54.8439282542885,-54.8439282542947,-54.8439282542932,2.95323641310131,-54.8439282542982,2.95323641310053,-54.8439282542964,2.953236413102,-25.945345920597,-25.9453459205976,-25.9453459205968,2.95323641309722,-25.9453459205992,-54.8439282542981,-40.3946370874485,-40.3946370874486,-33.1699915040238,-20.5268617330265,-54.8439282542995,-13.3022161496088,-2.35236268723519,-4.9660866302721,-6.26891155076315,-20.8931821116764,-25.945345920603,-20.893182111675,-40.3946370874453,-25.9453459206009,-40.3946370874432,-25.9453459206001,-5.51634524552036,-54.8439282542897,-11.4960547537523,-4.27140917032726,-7.88373196204007,-54.8439282543011,-11.4960547537448,-18.7207003371766,-10.5219799189243,-39.5113979424409,-39.5113979424412,-40.3946370874504,-35.3424732785216],"Archive2424_field22":[-56.8851859787599,-56.8851859787517,-56.8851859787589,-56.8851859787573,0.911978688637376,-56.8851859787623,0.911978688637262,-56.8851859787603,0.911978688638399,-27.9866036450611,-27.9866036450614,-27.9866036450608,0.911978688633965,-27.9866036450632,-56.8851859787621,-42.4358948119123,-42.4358948119123,-35.2112492284876,-22.5681194574903,-56.8851859787637,-15.3434738740729,-4.39362041169879,-7.00734435473639,-8.31016927522674,-22.9344398361406,-27.9866036450674,-22.9344398361395,-42.4358948119089,-27.9866036450651,-42.4358948119064,-27.9866036450643,-7.55760296998407,-56.8851859787526,-13.5373124782163,-6.31266689479155,-9.92498968650413,-56.885185978765,-13.5373124782089,-20.7619580616404,-12.5632376433885,-41.5526556669052,-41.5526556669047,-42.4358948119145,-37.383731002985],"Archive2424_field23":[-58.9264437032239,-58.9264437032151,-58.9264437032226,-58.9264437032211,-1.12927903582703,-58.9264437032267,-1.12927903582654,-58.9264437032242,-1.12927903582563,-30.0278613695251,-30.0278613695255,-30.0278613695249,-1.12927903582987,-30.0278613695268,-58.9264437032259,-44.477152536376,-44.4771525363763,-37.2525069529515,-24.6093771819547,-58.9264437032277,-17.3847315985366,-6.4348781361629,-9.04860207919985,-10.3514269996905,-24.9756975606041,-30.0278613695315,-24.9756975606032,-44.4771525363728,-30.0278613695285,-44.4771525363707,-30.0278613695287,-9.59886069444744,-58.9264437032161,-15.5785702026798,-8.35392461925558,-11.9662474109679,-58.9264437032291,-15.5785702026722,-22.8032157861041,-14.6044953678518,-43.5939133913687,-43.5939133913685,-44.4771525363784,-39.424988727449],"Archive2424_field24":[-60.9677014276878,-60.967701427679,-60.9677014276858,-60.9677014276847,-3.17053676029114,-60.9677014276903,-3.17053676029012,-60.9677014276875,-3.17053676028944,-32.0691190939884,-32.0691190939897,-32.0691190939889,-3.17053676029364,-32.0691190939904,-60.9677014276901,-46.5184102608401,-46.5184102608407,-39.2937646774152,-26.6506349064187,-60.9677014276916,-19.4259893230006,-8.47613586062731,-11.0898598036639,-12.3926847241541,-27.0169552850679,-32.069119093995,-27.0169552850672,-46.5184102608366,-32.0691190939924,-46.5184102608347,-32.0691190939925,-11.6401184189108,-60.9677014276799,-17.6198279271441,-10.3951823437195,-14.0075051354316,-60.9677014276926,-17.619827927136,-24.8444735105676,-16.6457530923156,-45.6351711158321,-45.6351711158319,-46.5184102608424,-41.4662464519134],"Archive2424_field25":[-63.0089591521518,-63.0089591521432,-63.0089591521494,-63.0089591521481,-5.21179448475463,-63.0089591521542,-5.21179448475384,-63.0089591521518,-5.21179448475327,-34.1103768184522,-34.1103768184536,-34.1103768184526,-5.2117944847577,-34.1103768184544,-63.0089591521537,-48.5596679853041,-48.5596679853048,-41.335022401879,-28.6918926308828,-63.0089591521557,-21.4672470474648,-10.5173935850911,-13.1311175281279,-14.4339424486176,-29.058213009531,-34.1103768184587,-29.0582130095307,-48.5596679852997,-34.1103768184561,-48.5596679852985,-34.1103768184565,-13.681376143374,-63.0089591521433,-19.6610856516077,-12.4364400681831,-16.0487628598953,-63.008959152156,-19.6610856515999,-26.8857312350312,-18.6870108167796,-47.6764288402958,-47.6764288402954,-48.5596679853066,-43.5075041763777],"Archive2424_field26":[-65.0502168766157,-65.0502168766071,-65.0502168766133,-65.0502168766118,-7.25305220921764,-65.0502168766185,-7.2530522092173,-65.0502168766162,-7.25305220921673,-36.1516345429156,-36.1516345429174,-36.1516345429164,-7.25305220922208,-36.151634542919,-65.0502168766184,-50.6009257097683,-50.6009257097684,-43.3762801263424,-30.7331503553467,-65.0502168766201,-23.5085047719292,-12.5586513095549,-15.1723752525917,-16.4752001730814,-31.0994707339952,-36.1516345429231,-31.0994707339949,-50.6009257097634,-36.1516345429204,-50.6009257097623,-36.1516345429212,-15.7226338678381,-65.0502168766069,-21.7023433760721,-14.477697792647,-18.0900205843589,-65.0502168766208,-21.7023433760639,-28.926988959495,-20.7282685412437,-49.7176865647598,-49.7176865647588,-50.6009257097708,-45.5487619008414],"Archive2424_field27":[-67.0914746010793,-67.0914746010703,-67.0914746010766,-67.0914746010752,-9.29430993368213,-67.0914746010823,-9.29430993368099,-67.0914746010802,-9.29430993368065,-38.1928922673787,-38.1928922673809,-38.1928922673801,-9.29430993368622,-38.1928922673826,-67.0914746010818,-52.6421834342323,-52.6421834342328,-45.4175378508065,-32.7744080798101,-67.0914746010839,-25.5497624963929,-14.5999090340185,-17.2136329770554,-18.5164578975453,-33.1407284584587,-38.192892267387,-33.1407284584584,-52.642183434227,-38.1928922673841,-52.6421834342262,-38.1928922673852,-17.7638915923012,-67.0914746010696,-23.7436011005365,-16.5189555171112,-20.1312783088226,-67.0914746010843,-23.7436011005276,-30.9682466839588,-22.7695262657077,-51.7589442892241,-51.7589442892223,-52.6421834342343,-47.5900196253055],"Archive2424_field28":[-69.1327323255434,-69.1327323255333,-69.1327323255398,-69.1327323255385,-11.3355676581451,-69.1327323255464,-11.3355676581443,-69.1327323255443,-11.3355676581445,-40.2341499918422,-40.2341499918446,-40.234149991844,-11.33556765815,-40.234149991846,-69.1327323255457,-54.6834411586958,-54.6834411586974,-47.4587955752697,-34.8156658042739,-69.132732325548,-27.5910202208572,-16.6411667584823,-19.2548907015197,-20.5577156220087,-35.1819861829231,-40.2341499918512,-35.1819861829219,-54.6834411586907,-40.2341499918487,-54.6834411586897,-40.2341499918489,-19.8051493167641,-69.132732325533,-25.7848588250007,-18.5602132415747,-22.1725360332867,-69.1327323255489,-25.7848588249914,-33.0095044084225,-24.8107839901717,-53.8002020136873,-53.800202013686,-54.6834411586981,-49.631277349769],"Archive2424_field29":[-71.1739900500077,-71.173990049997,-71.173990050004,-71.1739900500024,-13.376825382609,-71.173990050011,-13.3768253826077,-71.173990050008,-13.3768253826081,-42.2754077163065,-42.2754077163083,-42.2754077163074,-13.3768253826144,-42.2754077163104,-71.17399005001,-56.7246988831598,-56.7246988831611,-49.500053299734,-36.8569235287376,-71.1739900500125,-29.6322779453213,-18.6824244829468,-21.2961484259833,-22.5989733464724,-37.2232439073874,-42.2754077163152,-37.2232439073858,-56.7246988831548,-42.2754077163125,-56.7246988831539,-42.2754077163127,-21.8464070412269,-71.1739900499965,-27.8261165494645,-20.6014709660389,-24.2137937577498,-71.1739900500139,-27.8261165494551,-35.0507621328869,-26.8520417146354,-55.8414597381513,-55.8414597381496,-56.7246988831625,-51.6725350742332],"Archive2424_field30":[-73.2152477744713,-73.2152477744605,-73.2152477744678,-73.2152477744665,-15.4180831070726,-73.2152477744748,-15.4180831070715,-73.2152477744726,-15.4180831070719,-44.31666544077,-44.3166654407719,-44.3166654407716,-15.4180831070783,-44.3166654407742,-73.2152477744743,-58.7659566076237,-58.7659566076244,-51.5413110241971,-38.8981812532011,-73.2152477744763,-31.6735356697853,-20.7236822074102,-23.3374061504476,-24.6402310709364,-39.2645016318509,-44.3166654407795,-39.2645016318494,-58.7659566076183,-44.3166654407762,-58.765956607617,-44.3166654407767,-23.8876647656903,-73.2152477744598,-29.8673742739279,-22.6427286905028,-26.2550514822138,-73.2152477744773,-29.8673742739189,-37.0920198573509,-28.8932994390996,-57.8827174626149,-57.8827174626133,-58.7659566076263,-53.7137927986971]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2425.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2425.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive2425.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive2425_field1":[0,0,0,0,484789.97377679,0,0,395350.698507492,0,347240.208670361,5.45421841537928,203747.964829906,500963.627733935,0,368638.964179451,402043.418722868,165171.721074712,357580.984076082,428913.653497523,267353.195152987,301214.741518958,142957.132841575,536454.608459034,1186140.12981782,1617.74311331715,0,1102.21961081617,286737.311791507,0,119021.053586127,0,2871.09650022629,0,0,4968.39690449185,134217.355156115,0,0,72250.4985284928,1746.51486763708,34.4782872654312,95.2474409585069,57.8209130540473,523.898762124811],"Archive2425_field2":[0,0,0,0,484789.97377679,0,0,395350.69850749,0,347240.208670361,5.45421841538063,203747.964829905,500963.627733934,0,368638.96417945,402043.418722867,165171.721074712,357580.984076081,428913.653497522,267353.195152986,301214.741518957,142957.132841574,536454.608459034,1186140.12981782,1617.74311331715,0,1102.21961081617,286737.311791506,0,119021.053586127,0,2871.0965002263,0,0,4968.39690449186,134217.355156115,0,0,72250.4985284923,1746.51486763708,34.4782872654309,95.2474409585065,57.8209130540468,523.898762124811]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive243.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive243.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive243.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive243_field1":[0.0486636412109418,0.0294915877908977,0.0301812483130165,0.0306746658738122,0.0310446901072245,0.0318002416590273,0.0320381599659587,0.0481948675725658,0.0467698396197429,0.0253649901124088,0.025513802331954,0.0426396716490662,0.0745898563445325,0.0303475450883285,0.0309399269411301,0.0319944602953862,0.0327777227792062,0.0333028240576231,0.082661051934661,0.0341579919112237,0.0498825135407413,0.0333548732949996,0.0357234033783135,0.0338230385380134,0.0684874920422122,0.0378701550689872,0.0544394117863561,0.056617033240897,0.0567944419663348,0.0353454642654269,0.034966032671762,0.0392018777327007,0.057309902370248,0.0738136185232761,0.054633994588161,0.042863444532129,0.0763947482610975,0.0566882329304041,0.0372335531604097,0.0737988395886475,0.0766237092198553,0.056103621187547,0.0372863767894934,0.0391842072196118,0.0588674327035747,0.0391036602932276,0.0570387135532946,0.0364789268023042,0.0946058794854311,0.0741409278556407,0.0373298934037509,0.0573254405581585,0.0412725087481846,0.0832739930483526,0.0263585789614905,0.0356918901764623,0.053700627496985,0.0364622163704758,0.0552540438880673,0.0727096608520254,0.0373619624036976,0.0378020437661451,0.0865638266642356,0.0684830433834991,0.0497897135535053,0.0315382377892635,0.0329611223042872,0.0381798552262999,0.0357141579418158,0.0458967803563733,0.100386293082912,0.0553458066658702,0.0472340167227769,0.0275290222566051,0.0569870574237124,0.0261032547991762,0.0532447139848013,0.0265084249159193,0.0252653755551975,0.0617006253886961,0.0727727288089654,0.0258911548292233,0.027112662986116,0.0348238341634071,0.0368362350594413,0.0554071602530544,0.0284178138652069,0.0345824541489178,0.0460358731582475,0.0557635753618074,0.0261949995591534,0.0717368407338163,0.0475381920833654,0.0742586734312371,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.055,0.0605,0.06655,0.073205,0.0805255,0.08857805,0.097435855,0.1071794405,0.11789738455,0.129687123005,0.1426558353055,0.15692141883605,0.172613560719655,0.189874916791621,0.208862408470783,0.229748649317861,0.252723514249647,0.277995865674612,0.305795452242073,0.33637499746628,0.370012497212908,0.407013746934199,0.447715121627619,0.492486633790381,0.54173529716942,0.595908826886362,0.655499709574998,0.721049680532498,0.793154648585747,0.872470113444322,0.959717124788754,1.05568883726763,1.16125772099439,1.27738349309383,1.40512184240322,1.54563402664354,1.70019742930789,1.87021717223868,2.05723888946255,2.2629627784088,2.48925905624969,2.73818496187465,3.01200345806212,3.31320380386833,3.64452418425517,4.00897660268068,4.40987426294875,4.85086168924362,5.33594785816799,5.86954264398479,6.45649690838327,7.1021465992216,7.81236125914375,8.59359738505813,9.45295712356395,10.3982528359203,11.4380781195124,12.5818859314636,13.84007452461,15.224081977071,16.7464901747781,18.4211391922559,20.2632531114815,22.2895784226296,24.5185362648926,26.9703898913818,29.66742888052,32.634171768572,35.8975889454292,39.4873478399722,43.4360826239694,47.7796908863663],"Archive243_field2":[270.472449756375,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,273.15,268.816433382585,266.173658010788,264.173182094654,262.348004329187,261.403190892787,260.912159360077,260.304416336717,259.940575088642,259.811325162509,259.773831503535,259.764078022591,259.7720375855,259.798250887301,259.841685532778,259.944097252084,260.085169818182,260.184582114402,260.259478093791,260.34515498681,260.430340003168,260.511650403693,260.592576679703,260.644452522224,260.730138438151,260.856756786721,260.944607009059,260.99109368331,261.044695820646,261.105262325802,261.17909104573,261.227268433101,261.254981154077,261.284556579083,261.317191169174,261.334225420041,261.349900895297,261.366075007383,261.379453298023,261.387530595271,261.393117589659,261.398604000094,261.40398845037,261.40926965051,261.414446391018,261.419517538224,261.424482030122,261.429338872541,261.434087135599,261.438725950425,261.443254506113,261.4476720469,261.451977869524,261.45617132077,261.460251795166,261.464218732827,261.468071617437,261.471809974349,261.475433368809,261.478941404278,261.482333720869,261.485609993867,261.48876993235,261.491813277894,261.494739803361,261.497549311765,261.500241635214,261.502816633925,261.505274195302,261.507614233088,261.509836686566,261.51194151983,261.513928721097,261.515798302086,261.517550297426,261.519184764119,261.520701781043,261.522101448487,261.523383887722,261.5245492406,261.525597669186,261.526529355407,261.527344500724,261.52804332583,261.528626070352,261.529092992575,261.529444369177,261.529680494971,261.529801682657,261.529808262579,261.529700582489,261.529479007312,261.529143918917,261.528695715884,261.528134813282,261.527461642434,261.526676650696,261.525780301222,261.52477307274,261.523655459314,261.522427970122,261.52109112921,261.519645475269,261.518091561388,261.516429954825,261.514661236761,261.512786002062,261.510804859038,261.508718429198,261.506527347009,261.504232259651,261.501833826769,261.499332720235,261.496729623893,261.494025233321,261.491220255581,261.488315408976,261.485311422801,261.482209037103,261.479009002432,261.475712079598,261.472319039427,261.468830662522,261.465247739014,261.461571068326,261.457801458933,261.453939728118,261.449986701736,261.445943213978,261.441810107134,261.437588231354,261.433278444419,261.428881611507,261.424398604958,261.419830304047,261.415177594755,261.410441369537,261.405622527101,261.40072197218,261.395740615305,261.390679372592,261.38553916551,261.380320920668,261.375025569596,261.369654048529,261.364207298188,261.358686263572,261.353091893741,261.347425141611,261.341686963738,261.335878320119,261.330000173979,261.324053491571,261.318039241974,261.31195839689,261.305811930446,261.299600818997,261.293326040932,261.286988576475,261.2805894075,261.274129517335,261.267609890577,261.261031512903,261.254395370886,261.247702451813,261.240953743501,261.23415023412,261.227292912017,261.220382765535,261.213420782845,261.20640795177,261.199345259618,261.192233693013,261.185074237728,261.177867878523,261.17061559898,261.163318381346,261.155977206373,261.148593053163,261.141166899011,261.133699719258,261.126192487135,261.11864617362,261.111061747288,261.10344017417,261.095782417607,261.088089438117,261.080362193248,261.07260163745,261.064808721937,261.056984394556,261.049129599659,261.041245277973,261.033332366475,261.02539179827,261.01742450247,261.00943140407,261.001413423839,260.993371478195,260.985306479101,260.97721933395,260.969110945452,260.960982211537,260.952834025241,260.944667274609,260.936482842591,260.928281606945,260.920064440141,260.911832209267,260.903585775935,260.895325996189,260.887053720422,260.878769793287,260.870475053611,260.862170334316,260.853856462338,260.845534258547,260.837204537673,260.828868108231,260.820525772451,260.812178326204,260.803826558938,260.795471253609,260.787113186618,260.778753127747,260.770391840104,260.762030080058,260.753668597187,260.745308134222,260.736949426994,260.728593204385,260.720240188276,260.711891093506,260.703546627819,260.695207491827,260.686874378966,260.678547975459,260.669813009512,260.660214829863,260.649670452859,260.638089666372,260.62537464382,260.611419622798,260.596110684956,260.579325685609,260.56093439634,260.540798942171,260.518774637189,260.494711349007,260.468455553205,260.439853273148,260.408754136614,260.375016815158,260.338516139236,260.299152192464,260.256861667853,260.211631697199,260.163516214478,260.112654650355,260.059292338161,260.003801403186,259.946700083623,259.888667408205,259.830549023939,259.773348945262,259.718201480346,259.666318188122,259.618907198452,259.577067306301,259.541667124517,259.510781082957,259.487110621516,259.471586375887,259.461261498975,259.454982334031,259.451540850468,259.449867881574,259.449158697976,259.448901055648,259.448822188483,259.448802163866,259.44879800443,259.448797305586,259.448797211377,259.448797201016,259.448797200866,259.448797200813,259.448797200514,259.448797200648,259.448797200376,259.448797200744,259.448797200451,259.44879719938,259.448797199589,259.448797201168,259.448797201168,259.448797201168,259.448797199068,259.448797200719,259.44879720004,259.448797198822,259.448797201598,259.44879719873,259.448797200303,259.448797205429,259.448797200818,259.448797199069,259.448797202814,259.448797200818],"Archive243_field3":[160.179925711186,273.564274027061,296.109016046832,296.109016046832,395.917897012134,395.917897012134,317.48615763434,301.509545641062,291.656463473041,276.24493591864,276.24493591864,271.550343732113,266.048701757865,267.779653727754,259.03694505568,266.421268404633,256.391918853041,263.993115545625,256.169890804114,254.272320182073,250.907794712481,245.934546954926,253.708828608242,253.647279424473,247.169207547391,246.19602613471,240.688330974039,236.809469234186,238.292295841486,243.130651993739,230.300877190526,242.341130516261,235.603569988125,233.874183914266,236.006109332163,234.054249817645,228.900307135515,229.604494034874,229.71723368654,226.959416978705,223.009669477499,232.136078160691,222.070891743833,235.696284154815,230.441393581945,236.662774309271,238.218881752143,238.337605987736,224.580298220262,227.650054924595,227.491921245488,232.304049942663,223.829509719417,235.57420636177,234.382019579114,225.006124490108,218.378126861533,220.298665321712,222.894992337453,226.535332745387,229.37187145754,231.172704752933,234.209945881192,238.717754255859,242.572716531034,245.945154462102,247.763767253486,250.062579108806,252.711579482336,256.936897786483,266.185948117488,274.348857880019,279.399474272582,283.228988996936,287.382418094629,291.490879037955,295.772638100466,299.96520815266,304.017637228337,310.137060645717,320.388698034448,326.102483551424,328.350546374771,330.91690945938,335.51257634841,349.706758110201,417.684275246086,455.740055211314,478.90498908554,504.081183790246,634.808144818782,671.15216702033,694.18166355588,854.100792096865,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910,910],"Archive243_field4":[0.159760601809739,0.314389955449511,0.407368890588006,0.407368890588006,0.647891626972138,0.647891626972138,1.0619701183692,1.53339957305392,1.88545467648366,1.97397659695255,1.97397659695255,1.93821383012992,1.96754244131338,1.97677469865299,1.97049588922448,2.03798351263401,2.02395701107453,1.96925850473848,1.90364488104902,1.81165019371341,1.73158280791701,1.65954879421854,1.62090234701126,1.63443138708994,1.63790020046377,1.54727682761915,1.52700613757492,1.4121719156676,1,1,1,1,1,1,1,1,1,1,1.28141387327417,1.5128615643284,1.50695166536811,1.62410134050612,1.73971100183578,1.77549425355104,1.95161695807675,2.08619579723544,2.17065460635497,2.25682185146095,2.31549885634288,2.39776193046492,2.45223068282977,2.48525534727785,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,1,2.5,2.5,2.5,2.5,1.7295554908993,1.20031430520654,0.872012930485954,0.524855773977848,0.451922263541174,0.210824239955773,1.85164676541927,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5],"Archive243_field5":[0.287859220389049,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive243_field6":[0.123010641153443,1,0.806285632170106,0.806285632170106,0.409156180472693,0.409156180472693,0.0552846437765468,0.0157977056581698,0.0933467376346992,0,0,0,0.0319567221254077,0.0989702041206743,0.111521446859584,0,0,0,0,0,0,0,0.0162490823722567,0.230508422248398,0.453893134054236,0.644080565076669,0.618541394241632,0.912911367734398,1,1,1,1,1,1,1,1,1,1,0.890988809261024,0.290223124806379,0.770613231560635,0.512488472164531,0.120814772113353,0.0946248403203078,0.00827383737089443,0.000854332117384452,0.199496227049769,0.305906553675014,0.226689703666539,0.233560241999843,0.264289151375362,0.42359353421531,0.736929484279435,0.751374586951594,0.700882041149138,0.191387368501079,0.18190549176405,0.185641593940371,0.262278361009878,0.390340639366312,0.635577273832388,0.191939357715341,0,0.10964308684906,0.30275431678023,0,0,0.52942989927133,0.471387528730289,0.00535486510227126,0.0408162090508019,0.473271491253763,0.48908735915393,0.427521315118339,0.18608938325339,0.350922618889739,0.657567210963002,0.801286912439659,0.975354416010986,0.0242605667412411,0.128148973506952,0.956125012827631,1,0.893216866709391,0,0.0736005197031315,0.470821553264981,0.731945366583852,0.748326142463999,0.578809391794627,0.160824380329315,0.00410175599744783,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive243_field7":[0.792925341330695,0.816065152755946,0.80716287970352,0.80716287970352,0.814500675916521,0.814500675916521,0.833388454241992,0.83166376353867,0.836839115119348,0.844057768245053,0.844057768245053,0.843450434416777,0.835291642383038,0.828803562358442,0.830948405549874,0.828425968694264,0.839545629472291,0.837681998822009,0.835381450967914,0.841916040318474,0.839366654414931,0.838130164559416,0.833309236673614,0.828038265555325,0.832246695362817,0.841955580493615,0.839460182987365,0.843450518753257,0.835143800457265,0.836264757937703,0.841442829230521,0.843794868737715,0.840648283115081,0.828715167333636,0.83252389275647,0.843832438992724,0.8373046633847,0.832452526416721,0.82355339493089,0.826295681643709,0.83834616648765,0.830464366377135,0.832871784259321,0.838053255836425,0.828979437734046,0.833947588136163,0.829244935448277,0.835055551726039,0.840092470360307,0.840565691417534,0.84441303890445,0.845013038213467,0.842146001423036,0.830703582251869,0.822531117596743,0.835754713405726,0.840811316375409,0.842795385825131,0.839780714885931,0.844630475154982,0.84482974312075,0.842804097061432,0.839999188219429,0.839482927242007,0.829520517306761,0.826086771989478,0.843051806603372,0.844054752465398,0.837669860445327,0.822462955920884,0.844065741304254,0.846371607068703,0.844549729911914,0.842327542840915,0.839384188272923,0.838135913440924,0.839497489005455,0.830689925888383,0.828362110757072,0.828184880391113,0.83506301118795,0.843696258649031,0.844104608640681,0.837796334290873,0.812960260257046,0.801522647805564,0.797621649816862,0.806792213462252,0.809794206601074,0.831549716977205,0.837896295840622,0.809545382596515,0.736107817406312,0.806446543177713,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85],"Archive243_field8":[-0.010814495037948],"Archive243_field9":[1.12228677776423]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive270.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive270.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive270.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive270_field1":[0,0,0,0,3061.5882079898,0,0,2241.46963513997,0,799.461534659344,5394.87579925781,2969.70990653854,295.961330046826,0,7349.97345786609,3596.52076492998,2235.61099725713,2334.34211976243,2070.30117597014,-4503.41244154986,3455.63164655236,4185.27687939097,1894.46193890718,1100.5075872827,2793.52293657007,0,-2273.66129837315,1097.59945565231,0,1536.58221284703,0,4346.17571788377,0,0,-630.996991790259,-640.804536680759,0,0,2067.69306767436,4476.53160694964,2898.9542737223,-3241.97695359744,4132.67984595894,-1158.54092421472],"Archive270_field2":[0,0,0,0,47234.8820389771,0,0,62594.8702870513,0,49180.6240733212,24660.9529813891,46320.3882634422,36599.1245695416,0,57530.8558608052,59114.9745578369,27971.0523405565,58681.1913266613,55097.7683564965,57269.3008431431,51241.9471965241,35789.7176805371,48115.4148107443,40638.821714419,34993.0219493555,0,22343.2610453411,56691.6524007438,0,35898.7388933443,0,40166.5947422369,0,0,18479.4817948096,23507.464875869,0,0,26467.8566783707,20063.4576457475,18056.9417415457,8285.3981788759,7631.75828670751,21955.1240730943],"Archive270_field3":[0,0,0,0,47333.9983900725,0,0,62634.9900006221,0,49187.1215155628,25244.1535179871,46415.4882103488,36600.3212057723,0,57998.461064998,59224.2786244482,28060.2517018149,58727.6031236447,55136.6504679543,57446.0924927113,51358.3346942638,36033.6014604385,48152.6959624065,40653.719968608,35104.349524599,0,22458.6475514439,56702.2766429339,0,35931.6091906465,0,40401.0467260171,0,0,18490.2516101958,23516.197297702,0,0,26548.4988609315,20556.7912848947,18288.1677851749,8897.0915219625,8678.86958399099,21985.6701089152],"Archive270_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive272.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive272.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive272.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive272_field1":[-0.138956559000496,-0.129909267518034,-0.156337853447746,-0.196692088388446,-0.585074158767601,0,-0.205264773642095,-0.176491486334441,-0.303996585581332,-0.71336833517057,0,-0.554092861455315,-0.45018435011809,-0.373091792752718,-0.232526041226178,-0.304631236831456,-0.334164229949079,-0.542516599142672,-0.591681181246713,-0.143931491500796,-0.713042230972024,-0.728509077392062,-0.411824942986209,-0.525635539683463,0,-0.151398997189382,-0.506662921548036,-0.30322281968093,-0.316565093951934,-0.50642413460501,-0.356234528641592,-0.60265493210999,-0.485303344118741,-0.15438999493378,-0.293422105521468,-0.441070933728075,-0.400959373966053,-0.259115633493873,-0.450914701475539,-0.519470408931363,0,-0.389524828517807,-0.321637223469171,0],"Archive272_field2":[2240.16610394111,1104.67397692892],"Archive272_field3":[0.273137077506644,0.286688037646271,0.24222107338953,0.183331626504657,0,0,0.160442176071883,0.292497468919248,0,0,0,0,0,0,0.1567055495152,0.131478494312027,0,0,0,0.287303640409693,0,0,0,0,0,0.225987583137463,0,0.117445849137746,0.00259448101297172,0,0,0,0,0.239463503140036,0,0,0,0.0796606406873286,0,0,0,0,0,0],"Archive272_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive272_field5":[0,0,0,0,6315.73537979851,0,0,8627.94011981331,0,6581.71701099102,3375.88948357257,6195.42684305326,4958.65182000429,0,7879.58919965597,7978.00901726942,3775.23372161273,7870.28714005438,7367.72963162273,8011.05891034769,6862.31166556888,4786.16436558621,6436.61380233088,5451.22012935897,4652.55073190271,0,3222.06967911338,7603.69082716121,0,4864.51257104841,0,5362.53978056523,0,0,2682.72908464206,3270.43124737733,0,0,3574.21497030007,2716.30031663547,2404.67981313654,1417.38655848288,1293.62280769108,2958.42119743693],"Archive272_field6":[0,0,0,0,346.230984166741,0,0,314.270152420304,0,91.7259422218128,741.909905742852,339.808571106016,-25.8567983754518,0,1090.88160009752,496.767981702549,366.517637554069,257.265711577983,241.691178377489,-743.614366342765,415.196912395329,534.297828666027,195.019411730906,69.1158487190377,346.625549893294,0,-382.228943949251,50.611297264994,0,103.53717388906,0,545.717950585239,0,0,-141.892885873653,-118.939862530178,0,0,272.582743315515,582.350630536385,382.170513261365,-548.521115554083,626.321213780157,-175.79865689451],"Archive272_field7":[0,0,0,0,6306.23798260434,0,0,8622.21462168402,0,6581.07781174878,3293.35687362552,6186.10086424622,4958.58440464712,0,7803.71086662644,7962.52783053141,3757.39996196356,7866.08123658481,7363.76434298288,7976.47181021971,6849.73962420033,4756.24801337042,6433.658731189,5450.78195291137,4639.62057081068,0,3199.31774781268,7603.52238713379,0,4863.41059417268,0,5334.70006809695,0,0,2678.97401079646,3268.26771438989,0,0,3563.80573291583,2653.14062071121,2374.11682579016,1306.94653370336,1131.89297451106,2953.19332480592]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive273.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive273.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive273.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive273_field1":[0,0,0,0,385.990591313331,0,0,282.091237885844,0,100.812802283928,680.058684338849,373.843329451243,37.2913341522614,0,934.22844291537,455.685956357882,282.739056710936,294.348035239589,261.76091502044,-574.298337387656,436.534670167037,528.482164628681,238.972331832558,137.479614372579,351.852564185545,0,-288.299265085186,137.460129446807,0,193.034813090108,0,548.695629615637,0,0,-79.3836821929074,-80.8703382118496,0,0,259.473468361195,564.492465579918,365.488402753382,-408.557500507936,520.951736451643,-146.15391248504],"Archive273_field2":[0,0,0,0,5965.34276065931,0,0,7916.94414451567,0,6208.22142682195,3109.76404218389,5849.21762099958,4618.54358869214,0,7268.97621225413,7471.15625159065,3531.6636518669,7414.77993432182,6960.53513478037,7235.5330165751,6473.69250200483,4515.5462302479,6074.37059116711,5129.87028135796,4414.54691631822,0,2821.14762921867,7163.16806559601,0,4530.66685591531,0,5069.88644814175,0,0,2331.67427348505,2966.15734905871,0,0,3337.04243932143,2529.97221952273,2276.6240399569,1044.65819816934,962.171930332716,2769.926621101],"Archive273_field3":[0,0,0,0,5977.81757740506,0,0,7921.96819318741,0,6209.03990207468,3183.25497128404,5861.15224275801,4618.69413625238,0,7328.76510456356,7485.04010854344,3542.96338170572,7420.62007114439,6965.455343274,7258.28882135965,6488.39403310028,4546.36680832472,6079.06948917491,5131.71216534283,4428.54656781417,0,2835.84033614285,7164.48686391161,0,4534.77723800787,0,5099.49168947364,0,0,2333.02522203052,2967.25958267515,0,0,3347.11498497074,2592.18270483646,2305.77509567973,1121.70851036431,1094.15059988658,2773.77981325459],"Archive273_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive273_field5":[0,0,0.180030087214663,0.131666231937918,0,0.296368343631059,0.00776145009793572,0,0,0.00928280503677044,0.0227871952286835,0,0,0.0666767007248156,0.0477250405295085,0,0.100206364262568,0,0,0.0221711047417194,0,0.0193360702778554,0,0,0.00875620744351963,0,0,0,0.161430175301688,0.0693929431131642,0,0,0.122863596655939,0,0,0.0113563015934051,0.11914616932299,0.0899328911320752,0.0845647736398751,0,0.149678693959092,0.0124972025025254,0.0144516692258194,0.0960263240062788]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive274.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive274.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive274.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive274_field1":[0,0,0,0,0,0,0,0,397.802587450731,-227.733322704862,-291.958780135529,-520.243875620486,933.706899300139,-1032.26678235593,-1277.23212890789,-1470.96245235884,-1660.78117533013,1013.33832689099,-1990.97402252414,1045.12222411157,-2273.61240783085,1076.1317567267,-2518.51648182293,-2637.63066872076,1122.516148643,1139.54949297592,-3044.52299309045,-3193.6896623044,1183.5820783617,-3550.47826104366,1194.22370134834,1197.25875377865,1199.11575783279,1200.64446929352,-4174.6737347079,-4257.67395184585,-4311.43208293742,-4360.02484564767,-4382.98658279796,1196.27528655539,1194.68398150453,1193.35351015026,-4219.40667844022,-4094.61020625955,-3927.01438196345,1199.62334839861,-3531.05450447166,-3290.63962128299,-3089.04345478213,-2917.62135142736,-2735.74801014925,1198.46842032643,-2351.86277410827,-2166.1402085991,-1999.5270119741,-1812.78548605645,-1630.34917131032,1120.03399552196,1097.5290257875,-1126.99397323342,-971.404156608952,-816.373455181256,-663.50240089157,974.937965527608,-381.996087509186,-245.487375023126,-114.524106206379,15.8428406029065,839.252098917425,278.249749038785,419.704686337971,754.221136633778,732.752044067741,893.724008606853,1054.28341847812,1225.2189978389,608.960874202834,583.506048494431,1820.10758314934,539.398477683824,2290.22505188316,2526.70107229996,2783.85214229738,3026.2819169868,481.422498990885,474.02251037025,3711.77633923412,471.253131059189,4129.25439451153,4350.42644280953,4548.79472246108,4705.41497395455,4817.7208396659,473.679827494104,4967.54212534526,4984.79267693383,4957.52842910335,450.47828259173,443.11102534566,437.512278539667,432.32656609807,4652.09395572938,4574.98509566387,418.83926115899,4428.23726420889,4355.06677983867,4285.59891914122,418.61208717726,421.921057902673,3993.1979228967,3902.59533114844,447.830024718731,3712.47509068573,3607.76402238171,3492.9910406132,461.703519146388,3233.58369183199,3093.24728414207,470.054527874559,2696.64149428373,2492.78470484178,2279.05628826389,466.253307373888,452.16949614892,1598.86886430963,1255.26523085735,542.204763580241,804.145313275732,0,0,1822.63479326026,0,0,0,0,0,0,820.689361448063,986.092015538951,3950.62240921235,88.1970598795856,46.7768209600939,4408.04995087427,-2495.68240792558,412.347168656084,-2510.97432691289,1016.86714386608,-3182.93454087662,1113.08938204266,-3864.38365062272,1155.69067689126,1157.83644239645,-1877.66101168384,-968.666706265766,1026.81639129395,800.947365348694,909.731190322503,2196.54792275543,590.852206283048,3044.58787809175,520.112700442334,465.143463555967,4193.78714283681,447.790828532408,886.547820859185,618.145520299868,2895.11867076894,1991.82966760235,3837.92889296854,4054.404586987,214.084700626439,-409.307905350692,-165.158785467969,-42.1386557355966,-277.788290616103,-1663.79789718937,3892.88582983146,4555.21888442874,4655.86621414458,-2491.26633539004,-3411.34537642167,-2906.65459502935,-2913.34111059938,699.600262523789,-2563.15992869679,-2138.44175210016,-2323.90841316867,1050.27119418798,1047.31751172515,1014.95524838738,-2923.59123976457,-3296.94057287005,1139.30320461437,1138.11191197264,1110.69173306773,-3980.91100637366,-4049.47778597314,1153.8220596676,1170.67319602918,1172.16338624887,1134.36087592072,1156.39782467366,1179.29466118816,1171.76077596314,-2112.52510746816,-2107.21529219459,-1806.20774479978,-851.156981207035,-1266.09781137691,-1153.99657123245,1066.84568890383,931.978237073502,991.622543837924,1029.92785426081,691.768488847547,757.32540325116,775.577966789072,823.881347431703,611.856590660176,783.868486021937,1099.12175767536,2504.78313910301,1588.82837396151,2064.07173327807,577.774303585818,558.788281117719,551.002260320003,3505.00682649424,2857.95484294931,505.381933564657,507.698397068807,493.939345873234,511.094903079895,452.80029871749,450.664235031146,460.5988323038,4426.45926980245,4292.72333986314,4179.28503690943,464.131430874675,449.61049164612,436.422754463255,435.13584488826,650.192547353138,518.418743529894,499.657902381154,3475.71294418104,2987.37988425906,2577.00116897242,2147.19309885749,1700.95433422077,3724.05561491612,3987.47280081364,346.474468881698,-559.778467749741,-296.913403303074,-566.118737308973,-1247.16279042186,-1361.16930487865,-1742.39104444342,3963.67144933624,4324.33637610031,4717.2505140209,-2528.6320016253,-3534.8396129362,-3782.91118005282,-3823.95759273718,835.772446535236,-2655.45444495293,-2179.33207523525,1079.04223922911,1001.78544885295,-3005.00439053862,-3425.89142115151,1150.56245023347,1163.58047455327,1160.00390313432,1099.19258648419,-3960.94476766153,-4115.64501232653,1168.7520738161,1174.06793765051,1177.57462462047,1107.13200892173,1148.48518590416,1168.28870621212,1174.97926221182,-1654.98792065726,-711.87180847578,1092.37775060896,888.776076425843,919.847903456553,965.857834223096,650.085339791152,653.774524502609,701.217406400495,848.711526015585,1277.77983659169,2732.97795585306,1867.60320563836,584.647160959832,3199.65920343438,498.982748530911,492.872205998934,495.446355299735,515.097103514767,438.95614455702,442.897827740329,465.089914789193,4504.31937468622,4475.66798390847,4300.96586642203,4134.18072505851,475.767824408304,461.804418646552,454.838765295871,495.346231405203,510.137154138133,483.966171626814,3538.03898757238,3281.67907194348,2339.23978608565,3624.60818187509,3864.28826438356,484.027712342754,328.303909593873,-838.506025191559,-803.465185299701,-1879.90281991023,3841.62087823357,4523.20200517556,4699.73438026204,-2427.5632050032,-1950.36782449132,-3451.46372703388,-4011.20751013704,883.315731350456,874.082736178729,641.487620461114,-2762.97777868081,-2780.05252187879,-2345.91426794229,983.049189486813,954.857974208997,-3556.41240383244,1154.38256309543,1171.30141256059,1172.93766823172,1059.72317657794,-3658.36777628683,-3879.53752821205,-4125.07673576791,-3604.54646467754,1144.38903978856,1178.72062134754,1084.87156772762,1124.51833620693,1183.38130317316,1129.60687124202,-1485.12705163238,-1481.46637516775,-652.549284334406,1110.31922638099,993.10375363501,722.844920189316,873.776007102883,836.599884510379,1460.48150884889,1135.30505499829,2945.38553555974,2296.93582949117,1778.76216903432,602.317204711881,641.426792360466,489.857516660492,491.313891057961,552.990033222434,433.029923926793,463.238845167974,471.727844730531,4240.66411055032,4575.16944103603,4440.58388700008,4073.7418532112,473.069598375632,464.048403143474,446.461998317915,488.445075024617,492.364099209069,584.847770145566,3130.06809345715,2609.15027101136,3737.09079843435,413.854591683301,-894.652293944099,-1996.70717631314,3235.56876132411,3913.75284225821,-2201.4672936349,-3012.43274636046,-3499.34104546189,933.249176046556,901.644642118418,779.828616228518,-2785.0283144345,963.426266213302,965.420599579627,-3679.82534503044,1130.31854874901,1134.41775333045,-3407.78855109898,-3619.23228935238,-3837.98735622605,1022.2485783823,-1477.6489332869,958.057550553968,734.24227854403,855.526566029696,1303.07303935986,2630.74143341514,625.745221205366,489.051250179025,485.791207300294,465.410910124269,4483.82242774098,4315.84899105211,476.03366535,476.167902087213,462.173530976859,527.045518072901,3337.36300856701,3712.45752622795,504.052867949619,-1249.57269060316,743.996606927309,-2931.15362079539,904.771169366477,1153.01048937579,-3529.43915572942,-3752.47242272379,-3412.6338854566,1062.77314368023,-1242.94343903644,861.967678853335,1328.82716233144,2391.60127401433,672.076806593649,481.403343459362,4241.16687843564,500.490369128932,562.35492159876,923.642382164909,1117.39195642577,-3423.05503873713,1028.14465120537,503.819274603003,824.672591630941,-3526.71407916265,888.580483912026,-2423.1307493054,1706.23807105178,-3068.87967592405,1122.63138398864,2733.68899815817,523.708834422614,1094.67780553084,622.40090548807,-2319.47313953331,2968.55381629584,-3283.02350215243,937.731905442951,774.384663136615,488.163026980399,4062.03047741766,481.623799067601,505.295035143841,1081.07284896539,-2473.0905736209,2489.99302047954,1056.75592386548,-2000.15789810653,696.233929283462,297.639258726441,-1610.68805698303,-981.337942484476,-2919.57522221456,-1027.28216077892,-1045.54405488576,892.746153246623,1508.63590453862,696.925313654966,4267.3448220859,3712.17347376646,537.364711482606,684.428719784172,1049.652553502,512.492480407021,1095.14998990045,556.933550268828,1053.82132685063,693.562937423015,-2854.09503377954,-3143.39862240981,946.500521168169,824.501841301253,529.008598785873,1117.6684297167,-2580.65722558247,2476.24548815946,-1724.61346461036,852.219181550626,-3173.22441158251,1042.02901515863,542.140738784172,1074.2116435574,-3259.0098704063,465.692363567558,959.494820549097,-3161.721623989,499.924207942128,2174.42948282605,1081.70093390352,521.830781585307,-1605.0791202969,-849.441363146656,1575.7081217717,3886.70091360558,846.47432660126,615.060154568838,1091.36246079755,753.827357079689,721.578738461525,-2641.93504750362,978.553160094791,857.772578731756,501.926265861826,540.704489684913,-1280.94586084156,-2865.57060511314,234.576986100838,-3188.44208287347,-3042.38313015938,1977.70270035249,988.6002623781,698.195467468525,4031.27724123789,3802.89914713551,3308.6772946906,-3366.61873928193,1003.27850722865,516.074337362666,-221.502649251784,87.2453428804978,-2033.03569657685,-226.21608801049,-1428.52966778843,707.209346200752,575.327333411079,865.345284768891,529.05710656858,-2900.10408126114,-3086.9515060496,990.393740247153,3916.18695584505,577.407623292678,-2287.87308499631,793.705741083866,454.468094445123,-2796.27867945744,1509.08229231992,3023.86622770989,1058.48561876945,0,-664.736547046959,0,642.663896218621,4011.95419081968,3304.83252012694,746.070276019918,743.859616505543,893.113491690137,883.034246266508,3173.40096310296,554.216718767108,45.721489611613,-235.09745718176,958.550906203981,755.210208832746,-2655.68873543984,-1436.18397177374,731.846236392584,898.056419546472,292.40890216654,996.686353409184,963.311497450651,-247.861754641871,3643.32823724252,779.21841806918,754.2418716426,832.623784435035,605.82157257381,231.619284438511,1018.45205578337,-566.647848161231,3828.05103119458,821.229309567848,877.076458914704,941.306149933395,3904.76943535289,3419.01357733281,565.702518878238,-2797.97688064185,2461.96017793983,3599.06834976648,2049.99027965553,836.842499743878,-98.3655125008423,760.300658424576,608.083459832757,-144.6941575484,-747.550371402347,821.937997065714,-2410.85952169311,3789.06104533644,774.038216853427,-2671.55968461928,377.349858523779,74.5118972183549,731.739716096022,637.077388743436,0,0,-2452.84243081901,2084.75426858532,772.957866624253,-1868.11471394018,686.405835109464,-2186.39641612655,-1095.89333603453,392.105421935776,908.502621579019,599.10950714561,749.231299973281,733.162665258928,-2196.70368568694,858.544260948494,726.890290557339,748.499964365908,591.451355936961,-539.834358083631,402.93847292283,2545.32915349139,577.267697348126,653.891330344287,717.731169742094,748.251075100515,-1831.30755299221,560.274695437708,-1223.20368868043,761.044609113789,459.185849423488,3174.06422212744,683.221408664649,0,880.206936618453,107.277699367061,575.93079544658,1728.65039798539,192.247216424111,271.287390047136,496.628173737251,2627.4447977999,526.560278020681,527.073305144245,0,-957.17793883213,0,531.138438823372,0,0,561.825319533824,155.857969355949,0,641.786531481086,-36.1708412083236,189.989432515614,-102.897470935411,73.8650150773323,0,807.900779972451,0,697.304246015608,-320.138279062721,1987.12846075734,238.627487647785,0,381.996256070981,332.732114760623,104.606711331977,0,735.305497602962,-160.539464585149,87.6484811982657,0,0,42.2639530719089,385.763423937013,133.559733945148,35.9617822523021,0,257.816198181854,411.783334045406,469.673643293154,-1221.28992396031,823.088536254667,642.928447195584,358.579298320058,-964.637348317483,942.572366090626,239.095647325206,0,2758.55788437616,272.087544203719,1699.62930726396,-83.4563949710271,0,0,-181.521541070942,-214.146033356457,-123.544525075664,0,-95.7357890396566,0,579.810719934466,558.669048676977,-998.461008804481,340.780306567996,145.093596624641,-530.265703360962,140.953155728286,-131.420528401452,395.934220931142,0,0,0,0,1482.97306910276,992.368556678904,789.978564565617,1429.85191587265,528.861955154288,2588.76151744823,1327.72505581686,1935.11967159089,2177.9800334066,1536.79769597982,0,2518.8187972102,-397.946771666017,0,2187.37262231849,1226.98600516759,3514.49613237705,330.825926926592,1727.93039161708,1250.6895564403,3066.68766119162,0,0,773.817555473821,500.625695359503,0,0,292.853667321927,325.497943229508,160.071705751005,0,1269.9764709908,-645.250308915755,581.012036438106,3264.20539613252,2705.72952166989,1490.57331200359,100.306268493095,1921.70270214644,1299.02606525168,1500.46130420571,3561.24896196825,0,4069.82175457847,2131.13587932404,3681.34448128074,3062.328342429,931.108257969903,0,177.82765150018,859.223296351574,465.112654455554,0,268.300697815714,-25.9971273474543,0,0,-217.869603330065,0,-330.397997181869,-724.213258210588,-992.231133178021,2126.48471531195,1009.66626474206,555.390795934631,-319.106008398604,-807.986939097179,-2107.61272395241,-572.578791181666,3846.53006364397,-1374.74705843863,1174.26134055655,761.782036283785,1015.72240906608,0,243.924291134102,85.2128956281455,-1122.31426963659,3882.27232605651,3659.62819713251,3479.34908922895,2810.7148201133,3067.54431518475,3542.73099207685,1662.04155707718,3953.47493069539,3137.64938276742,3260.20284665707,2140.01928940127,1582.27245533926,-603.966006413587,0,-1395.24951530387,3191.92814152191,2980.70158627892,2129.79157454657,2397.66948966351,744.92018444395,0,-1020.18851825966,1302.99116915817,0,1731.75144473443,1757.72103920816,-2110.49334201861,-905.367784720172,-1734.51380500385,-1237.47563508778,-2033.40476370578,-2351.03824720204,-1684.75862275164,3038.40664270783,-2563.56126696891,-1000.02836004855,-2426.25126894365,-1755.54205568484,-2127.55870852854,-2212.11100294109,-1493.69739408033,-2660.10609565662,-1855.84076080688,-1277.88831181218,848.740837834891,-819.828268310591,389.454077776721,358.203309390003,171.626517207664,1661.39345402072,-1830.8799199901,-1489.2265581803,-1581.65848897073,-30.2417961511437,3060.36221558177,0,-561.823371110492,-1045.39937496436,0,-748.500671255103,-353.474464008676,-415.394727952881,1815.77970670151,2254.96720636847,3513.74713812667,2357.21958895397,739.509879093075,0,0,-795.832836844382,202.092775156909,651.95256287769,3764.99002025779,3867.32130475398,0,0,59.5352030146219,779.593491816411,1.07355059030127,3134.56367814344,1549.82750930222,332.816388677965,381.723540958373,596.357829677181,476.195526290133,0,403.232047824139,389.951324576519,0,0,155.060439809648,442.174040306714,105.078676857577,178.874154119052,0,742.544558278403,1786.09658259755,1422.45838472352,58.1283024914058,1001.6006614888,1556.61612618476,1246.73409385447,1506.80391234835,2585.01170478413,1467.19358297274,1206.8775610491,1499.63357811164,807.300059925004,-757.785708690375,469.60495683822,-524.231586730905,1355.0066110806,852.901271839718,1680.14635602461,2168.09140451982,846.375455377397,-177.69053464606,2787.61451053328,2015.54220551516,811.189515328379,914.689820815181,918.20200735354,-796.180929553355,944.575781873557,967.615100313449,978.256190928269,995.405339546345,-1842.83701921855,1029.9011024518,-2145.12339490066,1061.26293875058,-2395.37342532049,1091.98118515166,1107.24953746552,-2758.20975521997,-2869.69394297752,1159.70124105958,1172.23828399058,-3377.80478550949,1190.15819557024,-3701.01106148259,-3845.48686912653,-3954.21207313487,-4073.24845651134,1201.0741057203,1201.17024088026,1199.99835433565,1198.75114891145,1197.40485518748,-4396.04830979834,-4359.14538513711,-4308.04846810855,1192.82882937679,1194.14448446306,1196.32171180911,-3734.01138826826,1205.53122255561,1209.80344358696,1214.46829680678,1211.36353150983,1206.32612264694,-2528.98686592646,1191.38428060483,1182.13690214757,1171.3971767561,1157.79092408304,1140.86437145723,-1450.21276474811,-1287.6740818499,1076.13396739918,1052.2864594254,1028.33673571349,1001.86442590357,-515.774643716741,949.009073660793,921.098747086263,894.517862243407,866.797761272999,145.146120204108,811.412575302081,784.09341018497,575.183881111363,725.63565235132,694.446298718665,664.846608597194,637.610540911272,1412.51204774603,1612.48622868747,558.694086386342,2053.04467932664,523.979320350183,510.164249947607,499.433135209098,488.23180028499,3287.8279937754,3483.55825448362,469.252561175584,3935.12115602638,472.027873503245,477.108094363478,478.640690663695,478.026329118456,476.414991991741,4905.51522033108,469.547972273361,464.052443575565,457.660334428743,4910.37669376398,4836.08941612624,4781.71350121808,4711.4371895845,426.913721705525,422.516665389458,4492.24943570703,416.286944348848,415.036787713724,415.646084978908,4207.51666098621,4085.42787486923,433.010533379457,441.395887479802,3818.40656710946,451.897272210949,455.090889173866,458.016274883596,3359.91270554858,464.790971982484,467.715072770527,2904.46448513427,474.428741080794,473.310336004147,475.530523349179,2045.75313397602,1801.91771202866,430.715570913804,444.301088323294,1256.78413084198],"Archive274_field2":[0,0,0,0,0,0,0,0,5595.03139099018,7977.16762707192,8913.00137752783,9420.02547866076,3779.26376894279,10026.2675099497,10254.1065197713,10430.3431355197,10584.1962767579,3326.96180166105,10819.1486100088,3232.26120133465,10985.8997574765,3155.48981931273,11105.3524496681,11125.3495809811,3060.44512126244,3034.00795215899,10997.5623944583,10857.0333911066,2940.14985122716,10521.3497307839,2869.24114963599,2834.05776203238,2799.46829058861,2765.37981334034,9237.98941847808,8910.19176875431,8565.68815340647,8184.28891650405,7793.49077589289,2575.92885767537,2547.3681770208,2518.92446402224,6062.25748872982,5565.97106782859,5084.63015879028,2412.82445337728,4132.73756343484,3639.94687593525,3227.31339810217,2903.81968431476,2610.00434768863,2210.22578428957,2192.29557019142,2114.57888306548,2054.89310441646,2003.23817662168,1951.65494830429,1905.48992205106,1863.69958525474,1828.59258968896,1793.57889419309,1763.55659974657,1737.25458597931,1715.1650398605,1697.13080235161,1683.1362467512,1673.79973258396,1666.34764981167,1661.38315654749,1658.64248753124,1658.80186319216,1664.94412132128,1676.29235465514,1690.79762433226,1714.24962170117,1738.84134140038,1771.04635690706,1807.60292250938,1850.95857722404,1895.91944485346,1945.52412960848,1997.70671608907,2069.19339160495,2257.16597112639,2124.89727228496,2157.62791650553,3142.97727986733,2213.54972007567,4112.67158713955,4598.0685302766,5094.50630490615,5590.95136847519,6051.00583286107,2328.62640393802,6907.78625442784,7328.10313863587,7705.67942759902,2405.67406428442,2425.41043287945,2446.75458696056,2468.15809308882,9069.25314480527,9272.62347760397,2537.08671703731,9615.28282885892,9767.68344774245,9905.9659706644,2632.87052937358,2653.36377032169,10270.0493618798,10345.7687898026,2703.95834374156,10413.137963271,10419.6261567071,10415.9461383818,2807.00746015306,10299.9565500285,10219.5039391832,2919.10731622759,9971.61992918425,9788.38998596558,9589.19833182159,3205.85513193954,3346.60542543137,8724.48374589479,8203.14458890215,4516.23126443146,5278.26048510573,0,0,25007.3558376601,0,0,0,0,0,0,3971.51257214339,6578.42112810968,10364.785007702,1401.67307437995,6953.6121718915,7487.56485142277,3545.2465799672,4118.79563227357,10853.65884531,3146.59800253732,11040.9310171396,2973.24904632644,9073.54749465318,2561.61234633787,2375.1039070816,1871.71822709127,1522.97527516278,1875.65530893817,1701.64936307314,1399.33012871312,1670.55283440532,1973.97813923112,3404.50621635466,2164.81114558618,2412.67554997371,9993.42795539331,2575.08248508496,4449.73982116785,3277.16731891536,9533.42615681014,8347.62024440893,10385.6106208994,10311.9622476597,1494.18442001995,1438.11046354709,1413.06773182505,1507.65652247107,8082.81758633899,10006.6367992919,5701.34742077944,6902.46921711206,7736.26512735384,2964.73486442579,6198.05370356525,4656.26569182356,3951.41082012011,4052.96480683051,10993.464793708,10522.0802699139,10833.3361943238,3079.12502491537,3135.76289575049,3210.2128254781,11081.9046672648,10892.0128034461,2855.32139763134,2928.19783419308,3016.08761915399,9282.71553235444,8596.2916742781,2478.28155514374,2544.23716110776,2601.9509269372,2221.58576872219,2318.20545962469,2361.2397203345,2410.42083083711,2121.38784608772,2043.9850862968,1866.94234211582,1600.09557403531,1597.92494687584,1669.44381601193,1901.2940303856,1746.43848820005,1812.8970733728,1831.6685625885,1759.68347970054,1710.55475241277,1689.21399777799,1686.23475346425,1362.89428449222,1495.73440923751,1532.07888719611,1868.22663913682,1491.0774627356,1717.83801085544,1927.80161253183,2059.46876651929,2020.45386667136,3911.45596287199,2479.58307517295,2264.28206002284,2214.42245460107,2193.67314649233,2136.05536394701,2477.72749091715,2443.12489960823,2401.28860092456,9187.7986507828,9710.83974601688,10066.2869933482,2680.6454453921,2628.98074751333,2609.02426653476,2558.89221497184,5668.13717262681,3252.61700364695,2867.84235133108,10171.5688960575,9856.63044526289,9456.31754772731,8955.23778880087,8053.54957609821,10388.3562279469,10335.2144390519,1517.55275842497,1548.55937868769,1523.77753281168,8866.73030529595,9449.49333795115,9890.28983994056,10317.3566628138,5034.95940305121,6045.08539780865,8037.44084526115,2679.28977098146,5533.95199209814,7531.50717708766,6522.72050496682,3906.59682685669,11065.2012409077,10760.2317459337,3071.34471112441,3261.26868530841,11071.3199555616,10750.1104530717,2750.8565172376,2832.13568884236,2907.63567376528,3049.25973808276,9550.05150929199,8168.9599782073,2463.07225496055,2518.94852752012,2635.8297171639,2135.29506627747,2183.47930284128,2264.69874248228,2439.79684600932,1835.22181489638,1604.87872396713,1939.61519108246,1718.13586535414,1715.76328791136,1750.77831334993,1815.00241518239,1773.9090631194,1725.44332138197,1684.77428047815,1589.95147509757,2058.6101669475,1694.35774545061,1882.58876525047,2870.86503170798,2300.12911130051,2290.01609304143,2254.53501213447,2103.69591279174,2510.34643158423,2467.29825910979,2384.3499526202,8732.55071539544,9309.00335706172,9795.89129149851,10177.2332838895,2747.37670615949,2713.17051556482,2675.48634147819,3173.9155602205,2959.06722124362,2857.11829351953,10305.675828822,10137.5821833848,9275.19836593454,10378.04451519,10345.4711203074,1515.00187983197,1231.05622847883,9331.87042132188,8251.67150723284,10509.2458076508,4511.05345468754,6444.19762363196,8349.61718341696,2406.45534079304,2467.19689612509,5010.34747463761,6923.68513010568,3428.4039086028,3735.94604856199,3601.8338439562,11096.06161962,10930.7331123848,10641.8329554815,3311.95247461,3173.68490020153,10540.4025431534,2684.15568225401,2729.33648033655,2800.85524197774,2993.90042132154,10225.9880607016,9833.34218565384,7774.93866484954,8585.01332047303,2505.0558656059,2667.74659583256,2039.29199703794,2086.87577803599,2301.93803929829,2407.64434283319,1780.95419970282,1555.88044807767,1297.77294994915,1985.20046970253,1769.0596483021,1703.27572267426,1689.89517759792,1721.91096642499,1628.33892747467,1269.59207067305,2264.78038285724,1799.75078187649,1469.26723236607,1840.37782986874,1903.59024718891,2334.82265085317,2238.18804217047,2103.37327181155,2537.08709358421,2444.58306284638,2365.16816722987,8297.86271640018,8882.5147978002,9468.66333275625,10238.6144161863,2793.50194359644,2742.96152240474,2661.49306011945,3080.89381057731,2944.49697158287,3011.08231269668,10048.6609200205,8863.35896458941,10353.8960449651,1359.91863686775,8832.42478261053,10284.3623296734,4824.70380787966,6814.1836838717,2451.35987762122,5356.36671326037,7052.33426413397,3408.01623782916,3608.73689952858,3640.48673167269,11033.1795420173,3362.84229736522,3238.16504564211,10330.9991046644,2599.1439062652,2786.37618335826,10767.5169893918,9812.82954853798,8155.62994589287,1951.79316826402,1647.93489343003,1787.64150933374,1732.41626495535,1707.9626404121,1428.96415600371,2053.595560836,1870.15328719115,2360.65605351792,2325.07637861011,2507.6836603165,8367.26900320937,9561.74082958225,2831.2728224,2704.22208528422,2639.76396087896,3038.21164559885,9853.463253993,10171.8157898787,1153.94023403483,8912.50036261888,3367.19441300874,11015.5309339419,3272.12851271728,2634.93626625186,10566.021940937,9864.85551916663,8041.57179389843,1971.74793363462,1420.79507367701,1738.36602140651,1212.68983062738,2186.329265385,1851.35666932302,2360.79765994432,8734.18688666491,2769.66376072495,2910.10559906149,3211.36594835468,2637.78831005117,10553.9921247774,2015.95733623356,2328.0135419652,3165.27065420923,10218.9321772737,3104.2986665388,4121.60816742828,7349.76684651664,11089.2114511743,2266.083086444,2883.67829887057,2229.24335019057,2434.48147334425,2040.04344459305,10300.6248256344,4052.41333220678,10979.3610307172,1848.68278698509,1750.77821140908,2447.75437197902,9932.35334324132,2572.72121923247,2681.97505466621,2702.63577430426,4938.53288020701,3361.99824364252,2863.54502479096,3057.50042414108,1161.73022665401,817.086806169095,9502.57260225389,8043.69381435561,9024.94629945965,1357.84703424457,1262.21051700396,1754.07226134723,1444.954338519,1800.33943571351,9138.44394630449,8583.03858818897,2848.51457711481,2839.87583957663,2088.01236287116,2299.86659749071,2315.5784676417,2171.40167039007,2548.19356553487,1909.84984384093,10822.6921791505,10966.6372876387,1970.65082984184,1765.87642845152,2318.10055500046,2690.58776834643,6563.45192782831,4408.40205494116,3960.25360958537,807.904608008363,10177.1878990991,2175.10671344597,2243.54157871217,2639.68658704977,10529.6420645365,5987.10799159017,3052.67037478057,11117.5403134873,2603.63058544701,2678.88454127932,2801.52846231018,874.671585926067,9008.91406665201,1094.45241172429,1261.64120314617,9217.89364901227,3177.1215811393,2774.48299199599,2506.98449995951,2974.07872850602,1835.79275826938,10644.5122496035,2057.76492437444,1779.68051824833,2382.35446210114,2278.64970690025,2456.07409678008,10834.7101531848,4654.05920586279,11110.8776992648,11082.8051918043,3158.74803436427,2635.99880512484,4832.49319419201,10410.7959816561,7853.79943061847,6117.76719012474,9415.64010865349,6357.59591276793,2478.74678114028,909.041239272786,1031.81792483899,9865.8282778609,7149.47435860146,1745.21193443602,3043.96143260423,2678.87550799159,2958.10673284667,3296.39840279096,11318.6769883131,11163.9216254522,2750.03971217323,10294.209449949,5622.59358675321,10005.5776067851,2885.25728738623,3680.90356783358,11278.1961362707,6813.69422889004,9228.47949711738,2347.44716447555,0,1032.55458358087,0,667.722361001416,9626.80838858576,9412.65828306511,1784.61539466116,1857.5689333551,1807.85219898933,2019.12686234922,7694.75034543241,2366.09179193902,625.778400861804,7006.55565035612,2896.7336109987,2744.90632166555,10542.3635633392,8636.22202634373,2633.81201027792,2921.33539402106,3357.07489852794,2224.66159613967,2356.89257029175,535.015256222745,9716.5918378164,1792.49910815266,1814.05188451317,1840.58857710893,2208.69141530615,345.732851171839,2452.9925429555,841.044003493316,10010.9901368292,1798.92986572838,1865.10773224995,2494.06348459792,10272.1222505477,10344.3177404943,2547.26132625062,10960.8088492432,8127.16301963861,9843.89008473367,4397.24105392115,2606.96122305799,498.136729998021,1815.62134221962,2172.54747404404,362.551210265144,1288.47033817716,1909.28121430013,10512.8850227164,10674.3450892548,1813.10751389947,9972.75753036992,4977.10856528273,271.594179089745,1873.09783060759,2092.10529774415,0,0,11088.7503992552,7784.95255290271,1804.976039959,8202.07750192892,2041.93519703986,11166.0733916503,2825.46835727818,4725.48658065737,3668.21355013251,2402.46446875917,2009.01491312008,1797.9301011999,11826.2364411907,2916.73605574964,3829.01444412522,1808.5384654178,915.998281346548,7371.09619632521,2760.33937955103,8937.60579106056,5581.9185433625,2224.212355156,2391.10784318358,2260.38198666287,10841.1738219793,2408.62939003966,6812.08476062081,1913.56194428096,5785.15105598818,9774.3965648468,1850.81961087769,0,2272.18312769805,6329.275028432,4233.79884474709,8164.09271834958,2970.36764902464,5098.69778089174,5062.96012199236,11428.8929575934,2768.73294491481,2020.28906785721,0,12140.6923530053,0,1658.34455313213,0,0,2887.29989755723,1569.70470832549,0,1753.75295965507,3586.64034633961,1965.04107495462,10455.2626595712,2494.22151072934,0,2099.43365966912,0,1712.08108332184,7405.75814370863,11319.4348367788,1081.98353369841,0,2171.93950621905,1733.71605028413,3247.23206694365,0,9907.12715095579,1340.50011056409,1893.19709901071,0,0,1290.39312802636,2380.92576660077,1219.58187764039,1384.96450672055,0,1128.02871107481,1175.73979380831,1631.31048482065,12402.6903080981,2218.63443047624,1504.82615295448,4109.32928266992,10725.8632087559,10804.287046024,2434.87343592438,0,11083.2174591247,12377.9115733728,9974.01892870788,1067.5330598453,0,0,884.522051203597,1860.50937309367,2316.9095431489,0,3090.18430873726,0,1580.76895882933,1827.37544547993,10878.7967697729,12031.6861882402,6781.07749073621,12242.3597200145,13428.1266422397,9894.79054670056,7380.97299025413,0,0,0,0,11708.6225567046,7011.06542988403,10957.5838674428,14156.0227800448,6179.25130691381,12836.864471491,7970.64430441636,11986.4276645024,14296.7571346148,8255.14963709533,0,15003.5974551514,22144.3880372422,0,14916.3210675412,14178.1049275189,16075.6623173243,12772.5449579702,9380.12180566574,6916.72034345835,14104.9125436586,0,0,1874.22075577541,1200.27750933949,0,0,3420.16309526321,2620.9363561339,4080.96278613843,0,12324.9584697028,12842.3387984904,13446.3358447972,13977.2420857493,18424.5629747491,10446.7990733334,12837.2623331136,13469.9044696219,13738.6123021789,10887.7343859711,11281.1606310135,0,16701.5043841597,9130.34832547029,15947.8770126663,15594.4613848123,11548.3010882506,0,8960.71542431023,9411.99745793403,5750.18398582409,0,5785.68456845158,4472.51970330891,0,0,7391.30521695767,0,11273.45817315,8653.19501302119,13821.8766838402,10263.4812245085,12188.6707912723,12895.6072092084,13455.0519876252,13663.6411090416,14807.2158999416,12077.6613087638,17729.9052559379,16847.7626739261,8251.74177795966,5901.10242334243,5941.91629327449,0,3446.21976165606,4310.91751894783,9353.15090323448,16804.5699506768,16406.9248017175,17759.5501961795,21006.8037085476,19514.3646094039,19232.110831092,21786.8469688451,17945.7500877758,19530.8824207265,20093.2798360298,22705.0696179205,9980.46998165411,6997.83289892177,0,12391.0161652657,14849.4234322224,14894.3522379294,11688.1903591202,16413.0712955596,6305.0509014159,0,20156.7263756884,16539.0835765797,0,18963.9990053173,7961.58346959418,14699.6237355439,12174.1611763817,12910.4972219676,10914.3067609328,14602.017130928,15599.2618453067,14473.1277889121,20528.5548746212,14614.1985025331,17203.02778706,15205.3788911834,17564.3828066137,13547.7908282581,16209.1760480964,17235.9609003087,10968.3008413832,13198.1495733707,13706.543942565,16945.1940018417,15940.4819697412,21100.0884546919,9909.11438659385,18940.4617579994,21602.7246640594,16059.4350425614,14364.5715276345,17301.6822217814,20208.0412831854,15964.0850449558,0,10891.4773958536,12102.6197423706,0,15585.7386383774,6589.35329833832,5407.31120209726,13640.6617655254,18743.6771829562,15875.3668933289,21232.7804781535,5504.6987553695,0,0,6535.23633157203,14829.411431122,18800.0404704414,17735.1003932676,14585.1558873753,0,0,4824.55670779255,2503.57722981322,16699.3048616233,18356.0324595791,18048.4268496769,9660.46474481627,3573.3165901632,2273.61493139746,1569.90512600164,0,985.58976897543,1218.44487715331,0,0,1503.10034907109,1200.79893661932,11916.4124238507,7358.47333663306,0,24674.4169007703,22923.8157840678,24212.6229230842,23690.8335899171,23815.0948304166,23835.8950539561,25118.6718988179,24664.5270052462,23569.5673770052,23643.5382559252,23124.1208908286,24153.7163510762,21010.9641472824,19371.4966817398,21623.1630566004,19404.2947438931,22217.6636837506,22456.7149190591,23406.6755993604,24586.7995610796,20477.2192957015,19039.269361221,22212.8294498196,21089.5001610017,4713.40531063383,4233.49055309831,3971.74491034669,9761.3108423353,3640.58168291124,3542.08365171463,3445.15705228922,3379.96981974949,10700.9990261253,3276.17733470534,10908.2610867097,3192.77006936804,11057.6609813574,3120.82573351352,3089.09295423256,11108.4583108213,11079.5124797525,3009.57110184127,2976.4594055504,10718.6023622584,2905.28405077416,10310.1972147061,10073.8565542867,9822.83761407718,9539.1141093815,2732.06504206575,2699.06579640064,2666.83877914523,2635.373188242,2605.2067316808,7384.46508892172,6963.4612862121,6523.54212021239,2491.70185133045,2465.22908219129,2439.07642486368,4600.06014290364,2386.00877138195,2355.20759012117,2320.40501223545,2286.82090028304,2249.18846040886,2371.19624115761,2166.01527597763,2114.57914356928,2054.89367340571,2003.23881198833,1951.65566220241,1905.48916675158,1863.69877511748,1828.59340058667,1793.5797420866,1763.55746522611,1737.2554559737,1715.1641506369,1697.13170223414,1683.13714762673,1673.80061456904,1666.34853125044,1661.3822713318,1658.64338660858,1658.80278325467,1664.94321292029,1676.2932280764,1690.79850539526,1714.25045942813,1738.84217606698,1771.04555279482,1807.60216443212,1850.95926793076,1895.91879186846,1945.52468845242,1997.70700598557,2050.71041258069,2089.42680713271,2496.07132837659,2790.91576882418,2185.79897098886,3607.41126864275,2236.6103965462,2256.31646388079,2274.14518897552,2292.87810922942,2310.72562675027,6488.95662342395,2346.80940242315,2366.47987385986,2385.8884701392,8042.3060450547,8351.09602547197,8604.13667996417,8848.18509783642,2490.45928399912,2513.44088712378,9455.46391617043,2561.25112900672,2585.40105946944,2609.92704399812,10042.9660934033,10195.7883696948,2669.33478631416,2685.76319864372,10384.5112256476,2724.27456512106,2749.75846430939,2777.45493214208,10368.9110410496,2839.83374492892,2875.54108840553,10126.2353851563,2969.12408679152,3030.19797952904,3100.98363764316,9372.57146388617,9102.8167883687,3582.66522780004,3872.62028929463,7171.95134068765],"Archive274_field3":[0,0,0,0,0,0,0,0,5609.15529868339,7980.41764675725,8917.78187023608,9434.38040937181,3892.89650633617,10079.2665849768,10333.3451713339,10533.5553570925,10713.7017383007,3477.86276245311,11000.8160699024,3397.0270733371,11218.7034394517,3333.94294456608,11387.3516807273,11433.7438682005,3259.81086019164,3240.953146947,11411.2005886961,11317.0149648533,3169.43964824858,11104.2647680795,3107.84732952354,3076.57470607096,3045.4722639837,3014.7757219527,10137.4725295397,9875.18631906273,9589.54952785531,9273.20881483189,8941.42437528353,2840.15563676146,2813.60168555568,2787.30569827525,7386.09223999584,6909.83839674343,6424.55491126253,2694.5905107898,5435.79485280441,4906.88520110144,4467.40878307573,4116.39200141564,3781.063325308,2514.24433420027,3215.18558956045,3027.14506689326,2867.17525487934,2701.69472937478,2543.02879606835,2210.2868578904,2162.85600688644,2147.99121850389,2039.74294585667,1943.34698364298,1859.64752910196,1972.89005030356,1739.59017333478,1700.94434842044,1677.71312079882,1666.422961205,1861.32696708477,1681.81979542517,1711.07441248586,1827.80974121144,1829.44844594231,1912.46940106447,2012.50224645354,2127.14146290942,1872.81567289032,1899.44929758444,2595.92743905467,1971.15734001654,3005.02827393721,3221.03251027821,3468.62999497429,3775.33845665422,2178.75102760703,2209.08478027026,4863.70124229074,2263.15750154075,5827.93354785877,6329.96401596536,6829.7531373995,7307.50759710657,7734.6690736107,2376.31511127884,8508.46553168913,8862.80168132505,9162.67338533306,2447.4881790639,2465.55534285957,2485.56331697374,2505.73554714658,10192.8077965541,10339.8275992861,2571.4267122466,10585.9788941353,10694.589594377,10793.2627091026,2665.94135418895,2686.69996031515,11019.0536593155,11057.3587339272,2740.79230437646,11055.1306433293,11026.5393703885,10986.0329677038,2844.72512221252,10795.6087565527,10677.3798061057,2956.71080473367,10329.8150690512,10100.8194767575,9856.30875186473,3239.58319442798,3377.01423253949,8869.78005801954,8298.63072718831,4548.6625330395,5339.16505022011,0,0,25073.6882723893,0,0,0,0,0,0,4055.42145019319,6651.91716739389,11092.1677627078,1404.44513200521,6953.76950351798,8688.75893172692,4335.5742403975,4139.38493594574,11140.3277510489,3306.82593703482,11490.5713529285,3174.7720963712,9862.18663060719,2810.24531910721,2642.29139134494,2651.21481521646,1804.92905029115,2138.32521833744,1880.72518909761,1669.05232026138,2759.63214025001,2060.50868084361,4567.29437682976,2226.41517179873,2457.10434274367,10837.7328302122,2613.72654099641,4537.19643775284,3334.95569992072,9963.32908244963,8581.96650946662,11072.064222918,11080.3773379854,1509.44338750172,1495.22395203735,1422.68683804358,1508.24529041425,8087.58965752061,10144.0131839245,6903.61662438833,8270.07257394007,9029.2241263978,3872.47476043286,7074.82487341647,5489.03007166642,4909.29769886393,4112.90216911733,11288.3150642855,10737.1833519614,11079.7889606275,3253.31838288249,3306.0373423075,3366.83835981075,11461.0643830132,11380.0597560589,3074.22706965767,3141.59852310047,3214.0971753074,10100.3198016341,9502.34186336994,2733.71264253236,2800.64607972211,2853.78969622006,2494.43739640998,2590.62395610473,2639.35388206892,2680.14027577274,2993.8351195769,2935.68242844189,2597.66435979701,1812.39456319667,2038.71719564572,2029.4705568785,2180.15566277103,1979.55318883962,2066.3763132816,2101.37124472504,1890.77486520564,1870.70556940729,1858.75364501533,1876.74402048775,1493.93752153022,1688.68920360006,1885.55942754065,3124.77348764917,2178.91890665605,2685.39746623425,2012.52135471016,2133.92969504222,2094.23907857365,5252.10058959823,3783.68049801005,2319.99658321188,2271.87686062156,2248.59466134811,2196.34936150902,2518.76192399465,2484.34247393992,2445.06405422227,10198.4893839503,10617.3387553297,10899.3833427486,2720.52899066105,2667.15004545938,2645.27360474877,2595.62566086678,5705.3071220003,3293.67201859208,2911.04410332446,10749.0182936672,10299.3981526766,9801.16710337808,9209.05652375684,8231.21536723321,11035.6936955369,11077.7523369326,1556.60236804075,1646.62930930973,1552.43535728953,8884.7845630373,9531.4395224329,9983.51716553717,10463.4494818613,6407.92537009109,7432.55962374092,9319.49074537352,3684.0973760922,6566.56041927811,8428.1680900829,7560.98766411948,3994.99866708292,11379.3724260613,10978.7101027557,3255.3787012562,3411.66345399231,11471.8863725882,11282.8013712359,2981.77892042918,3061.84782129619,3130.48786399809,3241.32832222753,10338.8861722429,9147.1548031637,2726.29901940449,2779.1252592344,2886.9153597628,2405.24973864419,2467.10358278236,2548.28548150783,2707.98539811884,2471.23939095204,1755.67570762512,2226.07193044236,1934.40268968049,1946.78294261015,1999.52645854626,1927.91200943645,1890.5487280432,1862.48771978252,1886.47174125465,2039.77131168306,3421.5558342132,2521.6641138897,1971.28200972506,4298.8004196992,2353.63075098529,2342.45527552502,2308.33169451879,2165.83968001927,2548.43514797062,2506.73476563104,2429.28658774517,9825.79945989776,10329.0438765633,10698.4949212019,10984.8772219881,2788.26716587381,2752.19141187741,2713.87277996818,3212.33682424137,3002.71855755257,2897.81783389554,10896.0852679459,10655.5145373705,9565.63366977017,10992.7972978392,11043.6179077043,1590.44444172381,1274.08119628662,9369.4662555892,8290.69592780166,10676.0611677684,5925.17124167128,7873.18483156899,9581.42005939771,3418.19988027569,3144.99525835259,6084.09267480683,8001.69991128299,3540.36721849219,3836.83639310457,3658.51245818203,11434.8865176655,11278.7241476414,10897.3355644812,3454.7669824499,3314.21628694895,11124.2148018567,2921.86427278121,2970.05464965922,3036.53961938109,3175.91765380743,10860.6853653066,10570.9710988615,8801.47313341045,9311.02620169865,2754.07537373157,2916.54833712149,2309.90436331178,2370.56786475708,2588.3025413325,2659.46666930304,2318.92221105612,2148.37300985258,1452.59602027028,2274.60539201384,2028.75013363763,1850.31158621866,1902.42745508399,1914.3867799004,2187.34860057077,1703.16810497982,3715.4442716396,2918.05021918152,2307.10664124837,1936.433983322,2008.75189088911,2385.65655482213,2291.47879144918,2174.85105177679,2573.77657061518,2488.0869315255,2411.75198118953,9318.67789757397,9991.55866455927,10458.2202389588,11019.2830007194,2833.27512850136,2781.93796369598,2698.67997824974,3119.37257527365,2985.37850562549,3067.35449664349,10524.8711419773,9239.41541829818,11007.6796349498,1421.49721137876,8877.61962845514,10476.3995759967,5809.18858731793,7858.15249201919,3294.78732159684,6145.35722462645,7872.78898012212,3533.48676266075,3719.67002174655,3723.07350372965,11379.2545238513,3498.12785463571,3379.01609894227,10966.7979406253,2834.28457765299,3008.45406716763,11293.9118522256,10458.9897271654,9013.57014511429,2203.29043198729,2213.39914679394,2028.18550336661,1881.58917904079,1910.25183843022,1933.8919062476,3337.37250198004,1972.0624735168,2410.78164260317,2375.28382797951,2550.50674484132,9492.93706581801,10490.6358341935,2871.01268638915,2745.82464070761,2679.91756251774,3083.58670732204,10403.3037996947,10828.1197512436,1259.22490342774,8999.67191750805,3448.40965752571,11398.8413141571,3394.91323492282,2876.16451473484,11139.9174328339,10554.4504213784,8735.72818673919,2239.92782667664,1887.74125187447,1940.33623472029,1798.99923642477,3240.33830186693,1969.570702211,2409.38057813465,9709.45503424001,2814.52091075264,2963.94292379853,3341.55450417665,2864.6975325377,11095.226701969,2262.99920577011,2381.90699084469,3270.93613477632,10810.3786723631,3228.9697253867,4781.1313006485,7545.21842316454,11506.0259461795,2528.91948843449,3973.49418900142,2289.93381075113,2669.27322355322,2132.87602616266,10558.5428655422,5023.38188626864,11459.6951075723,2072.91320932176,1914.39179690208,2495.95765317705,10730.8776218195,2617.41398248678,2729.15980961043,2910.83469701035,5523.1588782343,4183.67033025932,3052.31439921084,3653.62018564886,1354.38502790273,869.609094450396,9638.11195608424,8103.33476640712,9485.44016829475,1702.66180031778,1639.00511284814,1968.18830200883,2088.98906959035,1930.52505205147,10085.7022358551,9351.40541874195,2898.75768721401,2921.18767912582,2336.99938180909,2356.2756436222,2561.49509860644,2241.6869080199,2757.50427676161,2031.88483290418,11192.6996058364,11408.2465040862,2186.16740661093,1948.87732986708,2377.69642315474,2913.49365160812,7052.5664069801,5056.26348162747,4319.47916473147,1174.30293750972,10660.4177544706,2411.82787182465,2308.11511759266,2849.89051245917,11022.4546877119,6005.19204359428,3199.91042495309,11558.3816449196,2651.19151310532,3450.29940168799,3003.10483259273,1018.50760813867,9150.78202356135,1385.4157177373,2018.56251092043,10003.7996439514,3287.95077927516,2841.84004944213,2734.23541486012,3068.12645887253,1972.51385980277,10967.4729006816,2278.58788970652,1975.61042309884,2434.65454622523,2341.92353246685,2770.04012015733,11207.249394763,4659.96710869126,11559.3151252078,11492.8093184461,3726.79448260589,2815.28332133617,4882.67010791285,11164.0435849825,8726.06483013202,6955.172236039,9999.42000274859,6436.27171218793,2531.90014153355,935.638497671062,1035.49986956705,10073.1227408285,7153.05230812514,2255.3185380007,3125.03540180519,2739.95903762941,3082.08012627585,3338.58410886015,11684.3079575949,11582.8500663671,2922.94341020324,11013.9578931713,5652.16402851464,10263.8173453375,2992.43686948361,3708.85323578037,11619.6765248168,6978.80780719766,9711.26154481488,2575.0533965621,0,1228.02428520522,0,926.752412936812,10429.3439956586,9975.97383415989,1934.28874877099,2000.97213154851,2016.42785202682,2203.77466324025,8323.44018727563,2430.13302912457,627.44646114028,7010.49876227866,3051.21048976862,2846.90238228231,10871.7115561977,8754.82468637062,2733.5992060297,3056.25683100239,3369.78557780649,2437.72494437145,2546.15624599455,589.641224648715,10377.1864003211,1954.54199130801,1964.60302367799,2020.15560702407,2290.2701905764,416.147446589808,2656.01524952788,1014.1226748465,10717.9241561564,1977.51516826112,2061.04099126653,2665.78505005695,10989.2547460446,10894.703454353,2609.3216750867,11312.2944292595,8491.88004304953,10481.1957803778,4851.61715647183,2737.98323367869,507.755823031774,1968.38460406604,2256.04255746591,390.358526605173,1489.62658748633,2078.68632224773,10785.7774469063,11326.8983702417,1971.41929028514,10324.3946024952,4991.39285033133,281.62993616182,2010.95462284438,2186.95500093104,0,0,11356.7962651184,8059.2609221523,1963.51785538161,8412.12980951247,2154.21733336786,11378.1160249037,3030.5533557331,4741.72648788227,3779.0432205509,2476.03871641833,2144.17547369578,1941.6694215366,12028.5234108621,3040.46829730513,3897.39927487884,1957.31029158678,1090.35203391817,7390.83758918078,2789.59368067493,9292.98110274697,5611.68892750977,2318.33873123149,2496.50450625538,2381.00953316426,10994.7595331601,2472.93414245318,6921.03504180435,2059.34654967577,5803.34596460627,10276.843479059,1972.89754555759,0,2436.71508738033,6330.1841118813,4272.79170319892,8345.09689052582,2976.58243000172,5105.90990019105,5087.25905963461,11727.022657163,2818.35906985711,2087.91144129703,0,12178.3660815771,0,1741.32555775729,0,0,2941.45344822985,1577.42339844157,0,1867.49548740805,3586.82273101763,1974.20424746944,10455.7689898997,2495.31500717591,0,2249.51669512182,0,1848.63594235855,7412.67442970672,11492.5316855614,1107.98530904322,0,2205.27602769524,1765.35605564597,3248.916536423,0,9934.37680783302,1350.07905920788,1895.22492384385,0,0,1291.08507333441,2411.97448686985,1226.87332630567,1385.43131719276,0,1157.11622797973,1245.76465551964,1697.57686986188,12462.6753129879,2366.3925022296,1636.41643197235,4124.9443955758,10769.1534851497,10845.3243952497,2446.58443090363,0,11421.3550355332,12380.9016856587,10117.7958752059,1070.79027065258,0,0,902.955884270205,1872.79300804218,2320.20108628769,0,3091.66692954934,0,1683.74908230095,1910.86685163896,10924.5202889703,12036.5112781751,6782.62958498773,12253.8383060327,13428.866404583,9895.66325813283,7391.58482263211,0,0,0,0,11802.1629923949,7080.94865215106,10986.0234090646,14228.0517798633,6201.84179753125,13095.2959360851,8080.47179633522,12141.6282392325,14461.703274237,8396.97818796762,0,15213.5592393563,22147.96340924,0,15075.8493352395,14231.0981302433,16455.3517739711,12776.8286557071,9537.94676685711,7028.88644638675,14434.4425273566,0,0,2027.68267994251,1300.49689975808,0,0,3432.67808986865,2641.07105053065,4084.10090629856,0,12390.2155557024,12858.5385552312,13458.8826667582,14353.3387471969,18622.177452031,10552.6025072992,12837.6542077077,13606.295149532,13799.8890107053,10990.638934333,11829.9230492784,0,17190.2209935808,9375.76667161467,16367.2562881195,15892.2962708114,11585.776651263,0,8962.47976784937,9451.13542497143,5768.96400163517,0,5791.90220826173,4472.59525858496,0,0,7394.51553343969,0,11278.2987200332,8683.44797743056,13857.4455685359,10481.4590630453,12230.4178842823,12907.5615137173,13458.8354858172,13687.5100456746,14956.4592769028,12091.2261231573,18142.362963932,16903.7580612012,8334.87444812761,5950.06904847183,6028.10594204846,0,3454.84148774354,4311.7596283597,9420.24528016685,17247.1913551411,16810.1177863351,18097.1681004332,21194.0066964568,19753.993374363,19555.6904736609,21850.1506397857,18376.0689550443,19781.3096578923,20356.0511192705,22805.6981676428,10105.1158913505,7023.84796376851,0,12469.3224682751,15188.6069647639,15189.6777626768,11880.6483839073,16587.2760975027,6348.90328723295,0,20182.5271657729,16590.3306639739,0,19042.9047505892,8153.3057464436,14850.3575752663,12207.7799445324,13026.4913410397,10984.2358869054,14742.9182736993,15775.4350481452,14570.8558297417,20752.192177377,14837.3395270494,17232.0695728418,15397.7349777329,17651.8971016303,13713.8303323495,16359.4261283065,17300.5629984129,11286.2654490862,13327.9892365854,13765.9850859621,16966.4363014116,15961.5501696159,21103.682315523,9915.58659573195,18941.2393276588,21666.5165894341,16163.464206898,14441.5619277874,17373.8266158967,20208.0639119427,16254.7786270112,0,10905.9582506406,12147.6855606981,0,15603.7015531148,6598.82725088544,5423.24323779945,13760.9850426754,18878.8323643352,16259.5723482661,21363.22660611,5554.15009237622,0,0,6583.51454875728,14830.7884107104,18811.3413619145,18130.3319277922,15089.1665221523,0,0,4824.92402708106,2622.1489198979,16699.3048961311,18621.7458126099,18114.8468681557,9666.19603744982,3593.6477728427,2350.52494504754,1640.53780325384,0,1064.88650902408,1279.32402236499,0,0,1511.07723143842,1279.62336963157,11916.8757056384,7360.64710531292,0,24685.5873297365,22993.2918718534,24254.370671525,23690.9049021918,23836.1478781038,23886.6688089299,25149.592916412,24710.510930023,23710.9002750435,23689.0176721052,23155.5937177395,24200.2255038429,21026.4677914561,19386.3127714104,21628.2618207709,19411.3748422002,22258.9447746366,22472.9055872933,23466.8991217706,24682.2068096646,20494.7032546391,19040.0985222039,22387.0629343402,21185.5948092827,4782.69987058459,4331.1776379497,4076.50003792136,9793.72724927937,3761.12461873452,3671.87085531322,3581.35341596269,3523.49652652231,10858.5187036049,3434.24434326802,11117.1810417558,3364.52964632769,11314.1363004591,3306.35390841414,3281.53878814602,11445.7663394394,11445.1186151718,3225.27908645953,3198.97689696919,11238.2383748176,3139.61015831038,10954.3438636621,10782.8732319809,10588.8588578683,10372.3695933125,2984.41927374649,2954.2792895859,2924.38457189904,2895.20226552849,2867.20778842788,8593.92607552477,8215.34792771048,7817.66483022633,2762.50225920559,2739.22169191456,2716.66697342013,5924.8117578576,2673.26455586947,2647.75889474084,2619.00986343239,2587.84687248749,2552.26790220321,3466.74864709118,2472.0474671496,2422.57974271999,2365.32436564522,2313.75140448266,2260.6484330535,2394.57846554378,2265.27650970966,2121.74884009853,2079.47952235974,2041.47284458369,2005.43981390653,1791.0364448361,1944.44702592245,1918.69058464488,1897.83316000227,1878.31195134045,1667.71054074318,1846.4799623334,1834.78313422294,1761.49720389777,1826.6105459178,1827.85536836231,1838.66137464536,1852.05812952793,2265.34602988196,2422.30002736375,1933.43975693629,2794.54835718966,2014.85002953881,2061.81978933379,2110.65076524081,2145.7107617697,4127.9758953992,4463.67437668255,2235.60173281061,5338.40749416313,2285.87759499553,2306.20816902695,2323.9692879424,2342.17830130713,2359.32705802203,8134.5336459798,2393.3218900866,2411.54963949993,2429.38608986974,9422.8703587062,9650.31427816845,9843.57414840952,10024.3712978408,2526.78506625274,2548.70661818841,10468.3381136937,2594.86072186419,2618.50227677224,2642.81683870658,10888.7264822717,10983.8436533102,2704.22749106735,2721.7924771505,11064.2804604432,2761.50014499316,2787.16331230342,2814.96621793914,10899.694012499,2877.61817246024,2913.33038641435,10534.541139556,3006.78906362403,3066.94024547434,3137.23266583263,9593.23729148957,9279.44938687256,3608.46311294921,3898.02403303798,7281.23563584695],"Archive274_field4":[8995770,8366066.1,2069027.1,2698731,6225072.84,6099132.06,4839724.26,4965665.04,7522262.874,7496465.32712903,7470667.78025807,7444870.2333871,7419072.68651613,7393275.13964516,7367477.59277419,7341680.04590323,7315882.49903226,7290084.95216129,7264287.40529032,7238489.85841936,7212692.31154839,7186894.76467742,7161097.21780645,7135299.67093548,7109502.12406452,7083704.57719355,7057907.03032258,7038221.38370129,7018535.73708,7003602.75888,6988669.78068,6973736.80248,6958803.82428,6943870.84608,6928937.86788,6914004.88968,6899071.91148,6884138.93328,6869205.95508,6854272.97688,6839339.99868,6824407.02048,6809474.04228,6794541.06408,6779608.08588,6764675.10768,6749742.12948,6738029.63694,6726317.1444,6723168.6249,6720020.1054,6716871.5859,6713723.0664,6710574.5469,6707426.0274,6704277.5079,6701128.9884,6697980.4689,6694831.9494,6691683.4299,6688534.9104,6685386.3909,6682237.8714,6679089.3519,6675940.8324,6672792.3129,6669643.7934,6666495.2739,6663346.7544,6660198.2349,6657049.7154,6653901.1959,6650752.6764,6647604.1569,6644455.6374,6641307.1179,6638158.5984,6635010.0789,6631861.5594,6628713.0399,6625564.5204,6622416.0009,6619267.4814,6616118.9619,6612970.4424,6609821.9229,6606673.4034,6609312.1626,6611950.9218,6621006.6636,6630062.4054,6639118.1472,6648173.889,6657229.6308,6666285.3726,6675341.1144,6684396.8562,6693452.598,6702508.3398,6711564.0816,6720619.8234,6729675.5652,6738731.307,6747787.0488,6756842.7906,6765898.5324,6774954.2742,6784010.016,6793065.7578,6814665.27867097,6836264.79954194,6857864.32041291,6879463.84128387,6901063.36215484,6922662.88302581,6944262.40389678,6965861.92476774,6987461.44563871,7009060.96650968,7030660.48738065,7052260.00825161,7073859.52912258,7095459.04999355,7117058.57086452,7138658.09173548,7160257.61260645,7181857.13347742,7194816.846,8680918.05,5217546.6,2383879.05,5847250.5,6162102.45,8523492.075,8838344.025,6791806.35,7421510.25,7213183.47352512,7163490.5059523,6805653.75366673,6609106.44912255,7476355.4868386,6616593.38033048,6674870.43724182,7542372.71429043,7166784.92438699,7258599.69870979,6998187.76298879,7103814.41748398,6856571.07569828,6911706.79086172,6807175.94346172,6653185.72212255,6634294.60512255,6749072.25467745,6714438.54017745,6590215.33212255,6568175.69562255,6679804.82567745,6547394.11239877,6664062.22817745,6761256.07386952,6716206.54013048,6824646.26646953,7257149.95730901,7190868.65848166,7000049.44150544,7086447.52498931,6843017.13399532,6762454.7119248,6627204.87063065,6621700.52712255,6615403.48812255,6633501.90963065,7463123.33518748,7321570.2056128,6580370.41313047,6628177.52408121,6646289.00768121,6679304.53247807,6752040.22829828,6707241.29369828,6708396.45588347,7504009.77219961,7153552.77273587,7244177.5649999,7205147.86647781,7207004.60496785,7220236.75661897,7271831.8503609,7063594.73690312,6997488.59173164,7046103.59466172,7066403.17168078,7117046.5691351,6890525.12489602,6860659.16849601,6866907.85626172,6877752.74166399,6907618.69806399,6774260.41067745,6785740.8051011,6773960.85988707,6803087.85066399,6659482.76112255,6677581.18263065,6671284.14363065,6652393.02663065,6640591.64412255,6658690.06563065,6730973.83316935,6733329.65717745,6742775.21567745,6724676.79416935,6698695.94267745,6708141.50117745,6690043.07966935,6696340.11866935,6596512.37112255,6614610.79263065,6608313.75363065,6586274.11713065,6577621.25412255,6592571.15613065,6661706.40416935,6673507.78667745,6655409.36516935,6573100.978979,6555581.61762255,6688810.13946952,6665085.06718194,6638871.59657932,6645963.80666935,6788423.29926953,6749671.93011879,6731560.44651879,6670927.83113048,6698095.05653048,6745902.16748121,6910074.88715908,6845276.32454617,6813062.12271879,6794950.6391188,7207456.98973618,7153505.27815306,7061271.53325585,6913651.35802157,6994213.7800921,7037412.82183403,7080611.86357597,7123810.9053179,6869461.27177963,6799818.09225339,6630586.05218777,6646095.98763065,6639798.94863065,7441187.43947932,7373165.29935473,7359933.14770361,7308338.05396168,6591954.55688121,6610066.04048121,6661687.88765097,6690693.90505391,6756128.32109601,6796839.16289828,6785994.27749601,7474350.57416584,7131616.87702771,7234807.06451158,7168641.66287703,7293767.74606907,7050362.585252,6980937.87648658,7001304.66006172,7012149.54546399,7036843.63613775,7138982.46484326,6911303.74023286,6851571.82743286,6832953.80706399,6856974.12632714,6916706.03912714,6767963.37167745,6749864.95016935,6756161.98916935,6812175.19172714,6674665.32518777,6655774.20818776,6727592.65161224,6727032.61817745,6708934.19666935,6715231.23566935,6692398.90367745,6674300.48216935,6680597.52116935,6692958.93711223,6611694.93518776,6589655.29868776,6602249.37668776,6658325.22261224,6573680.03913065,6706921.62306952,6677225.99571879,6659114.51211879,6642582.62511224,6776839.1555188,6752384.53374903,6716161.56654903,6652816.34753048,6700623.45848121,6727790.68388121,6761301.04745097,6974873.44977198,6915910.54857242,6872711.50683048,7127061.14036876,7104470.57499779,7023908.15292726,6907815.69660823,6951014.73835016,7063856.95961834,6891624.9196764,6822769.34154251,6628197.87780949,6571923.36051685,7415839.55907819,7409662.44748855,7286402.15825352,6589241.95325097,6625464.92045097,6671482.25042636,6690965.24249701,6626607.4865251,6747040.98003286,6806772.89283286,7413384.97993559,7448103.36082503,7512704.4607897,7106268.99662658,7100091.88503694,7204173.31479922,7319115.62647019,7325292.73805984,6971182.72533291,6971438.70366172,6967350.61086399,6991370.93012715,7177336.35146712,6916302.98849828,6926917.40835135,6837319.53915135,6800658.14583771,6897244.29271155,6930958.32740865,6761666.33267745,6743567.91116935,6752780.80761223,6863088.87332229,6672277.15080949,6616002.63351685,6597111.51651685,6729980.82599051,6711850.05411224,6677216.33961224,6695347.11149051,6751621.62878315,6609306.76080949,6553032.24351685,6587267.12430949,6530992.60701685,6560690.43285321,6660713.39699051,6716987.91428315,6725033.10666952,6643715.63214903,6682548.36721455,6779551.75914903,6789691.06252247,6706367.20377364,6603097.87812707,6682511.97488121,6716022.33845097,6702711.03792707,6980709.11118532,6932665.45253005,6846267.36904617,7104897.49247199,7067107.19466919,7173753.07060587,6977458.87613447,7022882.66032074,6857889.49325556,6598086.07328745,7409425.91280298,7268822.38402471,6533049.09826606,6569272.06546606,6659482.11271301,6714327.14186424,6766502.72644845,7375022.03784478,7422299.54687074,7479078.64937426,7099855.35035137,7344906.90625783,7325529.27274541,6956786.94322099,6967619.72072229,7031641.09651155,6921230.1337255,6856437.13492772,6816129.27140301,6786255.34328315,6642165.34628745,6751815.79621455,6717182.08171455,6725458.91601255,6579194.95628745,6557155.31978745,6690825.20151255,6774751.57607293,6695337.47931879,6835744.61413394,6636463.81640023,6674133.45802859,6997464.01514295,6957443.62793044,6881975.25095379,7138632.91889283,6930766.94589736,6847481.30154963,6554749.04756944,7364006.20522017,7476552.90813888,7054435.64276854,7380756.11637172,6952148.59515699,6935556.14285298,6891509.56904597,6767316.00815771,6760092.63051255,6598828.32056944,6768795.94173056,6535857.93056944,6513818.29406944,6734162.22723056,6741385.63779977,6604381.29830525,7038438.31444055,7150995.91226736,7357373.33002825,7000961.85840229,6884246.48356605,6803429.65623056,6773468.15589476,7418805.56193509,6868010.26006481,7368243.40569518,6667534.4661225,7089557.384894,7010238.74051922,6803164.90071897,6530806.18869352,6704027.66471091,6933767.44802875,6750266.18431391,7204896.79709583,6526121.74446154,6943582.91486412,6819533.61331391,6784899.89881391,6855885.77096597,6624797.34004085,6898612.72119329,7026821.70814077,7068164.25182875,6664100.52545106,6492365.95518578,7142520.65120267,6626695.28172199,6551999.68777581,6482772.90384674,7322905.07494,7356041.29109207,6720392.88025813,6596078.96077581,6526852.17684674,6771545.30152419,6441842.15034674,6736911.58702418,6621689.75873651,6516948.95792245,7113560.59504536,7238999.18976953,6806179.01602418,6756159.69546349,6858795.75931705,6723666.88277553,7047884.98630187,6806138.37095326,7046470.72864046,6839455.05567642,6875405.79995326,6840772.08545326,6860900.49627757,7020230.4207899,6667509.64994858,6444989.93410174,6574151.68491126,6463881.78684674,6785148.46591551,6850906.97550393,6771065.76493135,7054993.52728616,6825974.12073762,7563874.97650245,7300752.09052212,6953624.47560333,6971972.97370508,6474634.31152237,7097215.29471006,6482609.14053037,7299085.80903044,6526688.41353037,6489028.85852649,6545567.30403054,7303716.55446479,7182262.05879635,6978671.73443667,7448035.25174877,6806302.13426963,7127664.17471088,6875569.56326963,6840935.84876963,6842031.89287388,6832282.15016948,6527239.26548086,6731797.8485134,7629892.20395427,6889136.03642016,6958057.02716599,6399723.4171544,7154706.46958337,7313756.58482907,6701232.62017438,6547735.52780281,6505106.52610727,6793113.83905513,7141554.90121594,6936538.34058156,6506922.87756765,6532765.84197756,7254993.47968266,7433540.58245326,6562208.80255547,7243138.25331153,7126195.75896826,7363952.85882953,7590630.18336707,6784460.6057009,6903600.2234108,7187573.63215135,6755272.6393648,7204195.44214419,7147586.09399047,7311868.07646549,7599183.76748361,6844548.50562717,7037824.08978657,6935019.40497361,6931856.51577685,6130617.255,6535066.59194421,6193587.645,6348298.58944735,6582358.17215024,6406189.24162204,6798806.94219718,6940104.1413348,6833440.65669718,7009371.57033481,6410575.82022931,6965693.10162945,6442396.93760567,7392143.37927729,7265039.14578448,7424342.54432975,7077869.86013438,7238526.13502869,7300105.0608815,7450773.51656226,7747712.96846139,6942927.85183345,7081651.23648194,6395870.83088169,6483585.78617298,6928939.16946061,6892178.29777515,6975837.9854508,6971660.21257803,6348807.13346519,7053284.37533594,6435211.6373023,6538098.28503848,6933305.12021648,6916940.44810931,7161923.30861198,6591038.41646197,6390467.11258527,7098016.3532461,6951106.71219502,6964503.73236462,6804902.71664867,6279049.48435401,7315672.3426627,6395483.81577262,7008291.74975797,6890904.25122911,6313921.2057172,6437626.1187243,7055204.79473259,6993193.63407452,6595723.69484198,7114747.75759361,6671075.64785263,7759023.79612057,6307245.41887955,7141504.72909812,6846304.04226222,6177845.0475,6209330.2425,6840957.01945897,6826221.78563081,7048614.92238187,6527779.25968911,7079872.03466759,6530138.57302319,6398782.00571261,7364502.48767013,7402698.52260934,7096057.14673498,7273643.08776837,7267322.26311518,6589528.6779623,7670387.35371416,7523864.62453813,7138937.27150989,6277743.26524848,7204932.30543377,7709596.33822008,6171871.83639421,7054428.09323988,7132002.05719438,7297046.8777265,7333090.96352289,6805419.4219376,7580717.26091572,6279414.7889854,7460849.32027532,7595749.96842812,6638567.95207918,7405889.74444422,8444779.0875,7681016.07722465,7425392.02286536,7932969.04735088,6470551.25600789,7716910.35455209,7354381.28227149,7667285.65583355,6200666.31645115,7794120.0953274,7670993.08546254,5595368.94,6108408.12698133,8208640.125,8100190.3497365,8484135.58125,5910220.89,7874462.78641592,8101648.79098015,8759631.0375,7721424.44557428,7346372.36541544,8135189.7637501,5795435.42436184,8162248.86323609,5469428.16,7558577.7816312,8602205.0625,7914789.81025476,6889409.07518148,5941828.40286732,8256957.26133546,7578936.225,7843381.60975453,8077945.53005832,8088577.24485818,5784280.11,5578999.98564243,7956629.07765014,8456347.62635826,8798987.53125,8917057.0125,8481650.39106598,8418875.97556966,8416992.43377359,8519696.84260381,8720274.54375,8361096.62712925,8286777.91519773,8014363.43667134,6330184.71794742,7860277.3947113,8137916.23879856,6837493.93019467,6102687.86068904,5316367.40507042,7973459.85202718,6634380.375,6207786.83445528,5389155.73312243,5881834.29164989,8159715.96108726,8405422.59375,7972501.1625,7803002.53445753,7412444.41302387,7633701.46385833,7185371.2875,7143056.08037592,8641561.55625,7991844.78957483,7725533.84269784,6552851.99100973,5896643.94057063,6510826.84220457,6190754.40116677,5836241.18709666,6206515.91368346,5919278.48002849,4272990.75,6240815.4375,5060120.625,5453685.5625,5318555.98291151,5227964.61157576,5648199.41792876,5471002.34490937,5616793.86729543,4670834.5192084,4853345.43561566,4995244.74314687,5110648.9134262,4441614.95085783,4666555.6875,5063788.74603406,2541305.025,3485860.875,5188706.1639702,5493283.37122748,4632623.96256054,5686969.91428457,3833184.12741096,4128947.35802555,4166032.77962299,3879425.8125,8562848.56875,7866279.00903598,8256323.21403019,5280516.99,7027945.3125,7190818.74083017,7554300.22800116,6839607.93260211,7815075.1875,5757332.83472406,6085607.03171298,5766836.7592485,4849200.7044817,3389533.7367371,5996745.15242934,5294653.14061737,5147501.93376074,5389662.99094394,5040917.11262656,4761590.83250955,4902694.65,4319884.41238243,4504509.10640644,4646229.56647164,3719103.4623755,5698047.04683329,6004676.475,5443196.54808239,5752297.90316816,6209500.50730527,5611111.5375,5718526.1897243,5435739.28487621,3643286.85,4430416.725,5102185.90897068,4823981.6625,5148360.68492836,4667286.05697678,4863579.93333659,6240222.45907404,5625733.12407841,5461472.5453509,5167476.80160554,4994053.13681638,4431781.73937228,5017455.10304093,4082496.76991709,2620018.0125,6226629.62433165,6503545.14282756,6768800.54683904,6398241.4125,6468731.52603743,5992754.31756555,4081044.86371658,4401139.82036728,4229430.23752297,3794132.73014751,3439988.80941345,3522697.5617515,3787754.06145053,3015017.5844336,4091755.46968319,3805429.35938582,3698666.55146016,3241052.7522913,3222419.27497785,4353774.5709368,4036851.7875,4425390.72716087,4438014.01611055,4751010.3265717,3543550.8516252,3305908.14465372,3456458.00751599,3092295.9375,2580661.51875,2959639.36532668,2659374.50625,3052530.9045139,2911372.3123484,3880907.16305702,4791032.34810597,4088040.35156246,3559469.64122087,4251422.12096684,4015261.45066554,4562108.31578957,2226453.075,4248249.89746937,3248615.62477189,4234624.03871441,3679158.61824099,4608514.91423274,3988986.81576445,3852466.83989126,4559158.82720645,4247751.08457007,4815702.95958256,3916027.84370912,3989514.9176509,3389515.80859713,4362858.69751289,3698224.47936439,3439155.61404191,3626172.45440244,3492395.46203104,3517389.98762826,3112169.91840397,2147740.0875,2856156.975,2953572.14586651,3272609.75178272,3249721.9125,3045849.83642884,3168322.79429959,3472161.41564888,4189335.56076843,3827672.28226586,4192455.13920998,3531979.93357712,4618118.74306568,4934179.845,4871209.455,4559359.7978489,2604185.39382583,2716783.11532981,4086041.81875694,4448272.21996086,2108383.59375,2481709.847904,2700622.46730022,2388643.74584534,2774119.36789056,2187096.58125,2488431.01459973,2393564.63723834,8123122.96774226,8296332.92786905,8183226.76519564,8602205.0625,8523958.83186213,8627111.97690384,8956413.50625,8877700.51875,8588517.89455068,8247042.95869848,5291967.40827119,5305221.88283537,5154576.21,2462592.0375,3029207.37518407,2823093.90354984,2501948.53125,2719879.75943876,3015360.63321226,2423235.54375,2676893.67964274,2305166.0625,2812623.11594795,3123556.34814337,2831630.51312845,2853259.85519838,3467615.20677256,3117102.99926985,3585926.24679971,2700626.29080703,3088064.30852354,2632219.82121128,2344522.55625,2767004.44068608,3057434.37103102,2265809.56875,2468568.85916529,7496465.32712903,7470667.78025807,7444870.2333871,7419072.68651613,7393275.13964516,7367477.59277419,7341680.04590323,7315882.49903226,7290084.95216129,7264287.40529032,7238489.85841936,7212692.31154839,7186894.76467742,7161097.21780645,7135299.67093548,7109502.12406452,7083704.57719355,7057907.03032258,7038221.38370129,7018535.73708,7003602.75888,6988669.78068,6973736.80248,6958803.82428,6943870.84608,6928937.86788,6914004.88968,6899071.91148,6884138.93328,6869205.95508,6854272.97688,6839339.99868,6824407.02048,6809474.04228,6794541.06408,6779608.08588,6764675.10768,6749742.12948,6738029.63694,6726317.1444,6723168.6249,6720020.1054,6716871.5859,6713723.0664,6710574.5469,6707426.0274,6704277.5079,6701128.9884,6697980.4689,6694831.9494,6691683.4299,6688534.9104,6685386.3909,6682237.8714,6679089.3519,6675940.8324,6672792.3129,6669643.7934,6666495.2739,6663346.7544,6660198.2349,6657049.7154,6653901.1959,6650752.6764,6647604.1569,6644455.6374,6641307.1179,6638158.5984,6635010.0789,6631861.5594,6628713.0399,6625564.5204,6622416.0009,6619267.4814,6616118.9619,6612970.4424,6609821.9229,6606673.4034,6609312.1626,6611950.9218,6621006.6636,6630062.4054,6639118.1472,6648173.889,6657229.6308,6666285.3726,6675341.1144,6684396.8562,6693452.598,6702508.3398,6711564.0816,6720619.8234,6729675.5652,6738731.307,6747787.0488,6756842.7906,6765898.5324,6774954.2742,6784010.016,6793065.7578,6814665.27867097,6836264.79954194,6857864.32041291,6879463.84128387,6901063.36215484,6922662.88302581,6944262.40389678,6965861.92476774,6987461.44563871,7009060.96650968,7030660.48738065,7052260.00825161,7073859.52912258,7095459.04999355,7117058.57086452,7138658.09173548,7160257.61260645,7181857.13347742]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive275.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive275.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive275.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive275_field1":[0.119343386883676,0.12008350196964,0.129348470990372,0.128870347031109,0.11887206031451,0.124589085614283,0.137902025794526,0.109306597124578,0.139008197807555,0.122962266946201,0.124112279515854,0.120632115013654,0.126202930871874,0.134540637282324,0.11921739170295,0.102224569666982,0.129641956081093,0.100492406132369,0.112354179858202,0.119538193507731,0.119618979091753,0.129660981382351,0.121708216334695,0.123168098270241,0.123948807812125,0.130427806335062,0.125277343746151,0.102612307490504,0.132017703653122,0.123454178076684,0.128878270398088,0.123938262916584,0.120373484357278,0.134155805860203,0.130215017472148,0.138180977871741,0.120862219675494,0.137597518578535,0.137910564997496,0.129333046712777,0.12496553341194,0.122412673251025,0.123419349576603,0.124502902056828],"Archive275_field2":[7.13606053168985e-10,7.26337093693694e-10,9.60558059696269e-10,9.22369948366855e-10,6.58781997080871e-10,8.40858688510179e-10,1.16161988739333e-09,3.15569517433761e-10,1.12204289240651e-09,7.41586886079586e-10,8.24086734733191e-10,6.30600295616833e-10,8.75128516859562e-10,1.06838645198078e-09,6.3183965702546e-10,2.43949909271747e-10,9.41383955106914e-10,1.63896455902176e-10,4.46803377722386e-10,5.51592085714915e-10,6.16968428604807e-10,9.79440472516487e-10,7.0118854252752e-10,7.72853073081805e-10,7.90804789485471e-10,9.02223313537136e-10,8.79396682026539e-10,2.41139967644927e-10,1.08623341127554e-09,7.44802308264526e-10,9.04238153546339e-10,7.97025930767964e-10,7.55817943801175e-10,1.04765463210994e-09,1.03080859954352e-09,1.09115132956695e-09,7.53171333349443e-10,1.17526050586454e-09,1.08619016316722e-09,9.59841425333177e-10,8.33122313862723e-10,7.78157056113684e-10,7.72606173205976e-10,8.216050442696e-10]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive280.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive280.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive280.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive280_field1":[0,0,0,0,390.335286915185,0,0,283.968755591689,0,107.704196647281,684.484472572037,374.402495849892,43.5492240038219,0,949.995280023596,461.417015588103,299.293190098715,297.883154526645,266.765192295567,-582.883473263166,439.519739302923,529.546918236757,245.004863477478,142.302854439192,357.748759955369,0,-285.330258307421,136.115033405287,0,185.1212571293,0,552.211291270196,0,0,-76.9106817907601,-73.1711672678716,0,0,260.857098174574,567.145465214267,367.321002108307,-409.605680853981,525.030839376179,-142.636030897972],"Archive280_field2":[0,0,0,0,6004.88982252191,0,0,7965.25797111183,0,6251.62041606746,3129.63237064404,5890.56928655515,4658.5752337964,0,7295.2915040856,7512.92892200498,3554.8801625147,7459.65745439598,7005.75408561661,7263.34061649119,6518.24329513471,4546.88417639899,6116.82176298013,5168.79776942598,4438.32810259268,0,2846.05474431434,7199.85596451616,0,4559.01748046141,0,5100.29939776969,0,0,2354.69408752771,2996.02461731188,0,0,3360.89387675733,2551.40708745372,2288.3601593317,1056.31832641838,970.615250727697,2781.47743991332],"Archive280_field3":[0,0,0,0,6017.56291340925,0,0,7970.31823709146,0,6252.54812221121,3203.61011494459,5902.45573880953,4658.77878245496,0,7356.88583312604,7527.08487061047,3567.45699111846,7465.60270243978,7010.83119009111,7286.69129678031,6533.04471558289,4577.61680923617,6121.72654266711,5170.7562777223,4452.7228210965,0,2860.32182873535,7201.14249352822,0,4562.77440456942,0,5130.10635923819,0,0,2355.94980821143,2996.91800476058,0,0,3371.00193955639,2613.68171448288,2317.65332554428,1132.95420053733,1103.51771496485,2785.13227442739],"Archive280_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive280_field5":[0,0,0,0,384.874681996467,0,0,279.982073417092,0,102.792659819017,677.232246639702,372.765002411282,37.2308613198097,0,937.11549447636,456.171921891282,287.612362974584,293.808177872694,261.931759334792,-579.669011582893,436.052773559541,526.331713941695,238.959328070112,137.691797146494,351.203173249052,0,-286.442662468817,134.31326060299,0,186.716999629975,0,546.195794504264,0,0,-80.0069032747702,-78.9063689156742,0,0,260.334494775116,562.083590916557,363.910161305814,-406.142783438304,519.056348955949,-144.426650730984],"Archive280_field6":[0,0,0,0,5942.82678611447,0,0,7888.83871291155,0,6182.90878923034,3097.38481518276,5826.04822165264,4603.83417209853,0,7228.70587142691,7440.45029196811,3515.87281203616,7387.61366846606,6937.75683768974,7196.68969329782,6451.68250653784,4496.28721960184,6051.00782057228,5108.45805056629,4396.267787597,0,2811.76096968596,7130.88069263412,0,4509.15594346706,0,5048.83838313144,0,0,2326.78177840747,2959.28873226331,0,0,3324.39751091853,2520.90529998462,2267.97205666687,1040.89610805337,959.070051374369,2759.14342916405],"Archive280_field7":[0,0,0,0,5955.27654526652,0,0,7893.80555877626,0,6183.7632091514,3170.55771264511,5837.96125612739,4603.98471122753,0,7289.19570498622,7454.42106199873,3527.61711382498,7393.45379101618,6942.69963238069,7219.99714020779,6466.40156396858,4526.98838459474,6055.72433364487,5110.31336469663,4410.27370229595,0,2826.31370331242,7132.1455050045,0,4513.02011522828,0,5078.29684686858,0,0,2328.15689954535,2960.34052364859,0,0,3334.57536423622,2582.80883819693,2296.98233674606,1117.32567691773,1090.52045227713,2762.92083131973],"Archive280_field8":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive280_field9":[0,0,0,0,362.106106135181,0,0,323.640394507266,0,267.295950707516,624.211538134903,334.300858515826,83.1965811624255,0,1338.27514203343,499.511610299273,409.442405344123,287.820438712101,327.675605620746,-838.189156306941,401.342871963757,473.97908165569,258.954013129974,187.265141830243,404.576684487614,0,-176.55498536714,28.5186538710649,0,26.7499981721214,0,511.551445795222,0,0,-82.8405416856102,-17.1764314477014,0,0,315.004472324574,477.821563867975,455.196791949747,-285.201771529482,470.25169542167,-60.6659440210927],"Archive280_field10":[0,0,0,0,6504.91963020419,0,0,8358.95985428379,0,6655.27150363479,3326.52711944799,6644.0650952812,5235.36796770448,0,7306.93296291669,7896.52779162859,5129.09159914604,7909.94332406957,7458.22689907548,7329.16182137836,7076.18193129593,4995.72494526467,6623.16050551868,5631.77689441652,4808.01309299888,0,3142.6282009362,7593.44909156995,0,5865.46491962884,0,5509.1024463405,0,0,3041.19782751552,3910.50006195213,0,0,4334.37282407125,2996.25798214073,2533.21444742184,1146.224266469,1173.93943319162,3006.73772383973],"Archive280_field11":[0,0,0,0,6514.99042420756,0,0,8365.22282730621,0,6660.63705003943,3384.58604865701,6652.47007166048,5236.02897512831,0,7428.47559599835,7912.31085162776,5145.40802227817,7915.17807727237,7465.42160769317,7376.93527595984,7087.55436139118,5018.15941342908,6628.22089725279,5634.88945959266,4825.00489078298,0,3147.58378318632,7593.50264501719,0,5865.52591723869,0,5532.80169949819,0,0,3042.32588350293,3910.53778454126,0,0,4345.80436693046,3034.11854455941,2573.78700673309,1181.17319624429,1264.62265116881,3007.3496798219],"Archive280_field12":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive285.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive285.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive285.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive285_field1":[0,0,0,0,386.360318981563,0,0,283.270543280911,0,100.60731413239,681.149877778202,374.935306945555,36.977633977133,0,929.576929318584,454.578982462401,282.522838825024,294.528968991017,261.26428136335,-570.322862726784,436.324112480883,528.734274636529,238.974078199227,138.045629827263,352.144513825632,0,-288.15843410371,138.092979620547,0,193.732747000457,0,548.857170327908,0,0,-80.0804635434436,-81.1626312489999,0,0,261.12036584191,565.158657490717,366.277513654693,-409.920621186566,522.272441344641,-146.571080874955,0,0,0,0,386.360453297864,0,0,283.270524431543,0,100.606617924644,681.151270298561,374.935800038326,36.9769872399746,0,929.576709991295,454.579063727926,282.520832174869,294.529128497144,261.264209444621,-570.32254929127,436.324375195781,528.735885940508,238.973741361715,138.045373452179,352.14468568208,0,-288.159611080723,138.093126566777,0,193.734567851773,0,548.857558913164,0,0,-80.0822605331818,-81.164927689704,0,0,261.122626655805,565.161110336875,366.278485934301,-409.921607675206,522.274406816604,-146.571106142894,0,0,0,0,386.360595052598,0,0,283.270504538098,0,100.605883118113,681.152740012266,374.936320489932,36.9763046087313,0,929.576478500078,454.579149500091,282.518714285941,294.529296846369,261.264133535276,-570.322218474937,436.324652474203,528.737586563154,238.973385860761,138.045102864389,352.144867069305,0,-288.160853276741,138.093281656909,0,193.736489641269,0,548.857969069908,0,0,-80.0841571057529,-81.1673514043187,0,0,261.125012769124,565.163699113374,366.279512133917,-409.92264887504,522.276481253539,-146.571132829552],"Archive285_field2":[0,0,0,0,5970.03423772567,0,0,7913.34544077161,0,6215.71415427848,3115.75257176346,5854.26257333594,4625.4992731999,0,7271.63038072027,7471.52331159574,3534.98480007284,7416.56412034109,6963.33574718039,7240.15547812082,6476.29854720263,4523.13958811962,6080.97591564088,5136.15992614429,4422.21600251362,0,2826.98154258764,7165.50848767435,0,4537.22408593359,0,5076.58690008559,0,0,2337.74287387296,2971.97810796821,0,0,3344.96150736344,2534.62341525183,2282.54188011321,1047.77283205659,964.519424969534,2776.89712550809,0,0,0,0,5970.03612568057,0,0,7913.34605868251,0,6215.71507748029,3115.7571925027,5854.26369296899,4625.50116214851,0,7271.63129292723,7471.52371277208,3534.98453323767,7416.56496059749,6963.33677912737,7240.15763009408,6476.29969547238,4523.14141421297,6080.97742463116,5136.16213560885,4422.21877807838,0,2826.98353703507,7165.50899448759,0,4537.22445101098,0,5076.58903184994,0,0,2337.74449926035,2971.9785388163,0,0,3344.96297631676,2534.62618081784,2282.55154408386,1047.77696346707,964.524717729988,2776.90390449486,0,0,0,0,5970.03808992611,0,0,7913.3479564218,0,6215.71588809586,3115.76206197601,5854.26518437659,4625.50319038353,0,7271.63419231539,7471.52335220382,3534.98375298924,7416.56587589194,6963.33807842406,7240.16470739926,6476.30081697804,4523.14328792528,6080.97901080844,5136.16446828723,4422.2217072508,0,2826.98563857198,7165.50809468364,0,4537.224090747,0,5076.59131694781,0,0,2337.74619968042,2971.97903286617,0,0,3344.96464475036,2534.62910410879,2282.56174525567,1047.78132451965,964.530305486166,2776.91105954535],"Archive285_field3":[0,0,0,0,3.77024996944512,0,0,4.98314706820044,0,3.90647711474433,1.99777729274001,3.69689170374142,2.90467521557859,0,4.6210451530989,4.71666776285843,2.23581824157395,4.67214022451781,4.38566681049037,4.50717891499635,4.09105043579127,2.87130340150445,3.83061499280733,3.2314404806342,2.79689990942588,0,1.75576197062206,4.50479445378359,0,2.85912026357155,0,3.21983744154558,0,0,1.46183411774509,1.85972945106748,0,0,2.11524172846586,1.62585748870908,1.45520207617232,0.631721493470223,0.637973570469199,1.73321701602553,0,0,0,0,2.88735256250613,0,0,4.78281993509044,0,3.47945113742925,-0.195067019334233,3.2977584754734,2.11377480394454,0,4.51527604789895,4.35989430716805,2.32568503440992,4.2330470007638,4.00120571757717,4.29476399253794,3.62060319790898,1.92550405726145,3.19098611400222,2.42653958575258,1.87988160788886,0,0.833335035960439,3.87959296996634,0,2.67519444970188,0,2.38022575722657,0,0,0.517099918883346,1.56588638113705,0,0,1.32082881765035,0.0827013517531106,-3.01659673374132,-1.61779612015358,-2.24286142636315,-1.53111386616536,0,0,0,0,0.238650347619414,0,0,4.18182633999704,0,2.19837857023274,-6.77358392879533,2.10037539222603,-0.258918415196679,0,4.19796090258704,3.28957274960296,2.59528165624979,2.91576768037067,2.8478288281673,3.65747967568201,2.20926315653504,-0.911894124936824,1.27210165631923,0.0118476373973028,-0.871117372754991,0,-1.93392058388224,2.00398539191312,0,2.12341131605012,0,-0.138598675656969,0,0,-2.31711702415909,0.684355742090581,0,0,-1.06241672729011,-4.54677710882862,-16.4320622978662,-8.36638000784071,-10.8854198255291,-11.3241330785164],"Archive285_field4":[0,0,0,0,5982.52432594178,0,0,7918.41544107318,0,6216.5295414659,3189.3389966515,5866.25778746251,4625.647988004,0,7330.80780101304,7485.34066652747,3546.25742016665,7422.41150123058,6968.23672005695,7262.58492754292,6490.98130796298,4553.93894460318,6085.67098767809,5138.01574784006,4436.21549906608,0,2841.63034330231,7166.84043711919,0,4541.35915313961,0,5106.17166915628,0,0,2339.11452518771,2973.08673024303,0,0,3355.13871627509,2596.8678843353,2311.74366422683,1125.10587161472,1096.84394110645,2780.76315630173,0,0,0,0,5982.52572736703,0,0,7918.41593438008,0,6216.53019960221,3189.34318845006,5866.25869836783,4625.64944269089,0,7330.80861213512,7485.34085559059,3546.25705211188,7422.41208374897,6968.23751721566,7262.58691953752,6490.98219183608,4553.94044730667,6085.67211327776,5138.0175064404,4436.21779614099,0,2841.63202659542,7166.84058096238,0,4541.35948349148,0,5106.17336992683,0,0,2339.11581151222,2973.08705433791,0,0,3355.13994993804,2596.87060978477,2311.75487033418,1125.11106424014,1096.8516388077,2780.7698085718,0,0,0,0,5982.52700466383,0,0,7918.41748999242,0,6216.53041318979,3189.3554464052,5866.25966907391,4625.65098968669,0,7330.8112701874,7485.33995400183,3546.2562926707,7422.41237064115,6968.23824592928,7262.59360010689,6490.98269564716,4553.94219002603,6085.67298063947,5138.0192580275,4436.22041768992,0,2841.63477915481,7166.83891442894,0,4541.35891402002,0,5106.17513298663,0,0,2339.11866637221,2973.08728076942,0,0,3355.14170723874,2596.87800548523,2311.82153605875,1125.1454476588,1096.90926034772,2780.79959105186],"Archive285_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,2732465.1375,1669839.80625,2319221.953125,2201152.471875,2702947.7671875,3153087.66445312,1905978.76875,3536813.47851562,4072277.02434082,3766708.38191106,4467048.82294566,5144221.38575526,5093854.7625,4984869.16245088,2466808.8046875,3204743.0625,2540602.23046875,5566132.6875,4572258.27409405,6628758.01875,4503507.35625,4267368.39375,3529434.1359375,6392619.05625,3795090.46875,3440882.025,4872973.52761088,5939681.20965504,5710759.45846776,6097445.353125,5654892.68035307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive285_field6":[0,0,0,0,386.359578801978,0,0,283.269967717474,0,100.607136019747,681.14884184441,374.934674235391,36.9775988360798,0,929.57544727178,454.578221629414,282.522337442694,294.528461226208,261.263847948285,-570.322038408492,436.323382084162,528.73327199391,238.973630846251,138.045539148615,352.14415365553,0,-288.157780587932,138.092706528026,0,193.732374483589,0,548.85617452412,0,0,-80.0802857488973,-81.1624352939539,0,0,261.119896734777,565.157776676276,366.276895656585,-409.919757291581,522.271654697312,-146.57072671971,0,0,0,0,386.359713118054,0,0,283.269948868142,0,100.606439813157,681.150234362031,374.935167327388,36.9769520998533,0,929.575227944785,454.57830289478,282.520330796249,294.52862073208,261.2637760296,-570.321724973547,436.323644798722,528.734883295068,238.973294009438,138.045282773838,352.144325511724,0,-288.158957562907,138.092853474032,0,193.734195331545,0,548.856563108486,0,0,-80.0820827355103,-81.1647317305819,0,0,261.12215754455,565.160229517466,366.277867934203,-409.9207437782,522.27362016579,-146.570751987794,0,0,0,0,386.359854872309,0,0,283.2699289746,0,100.605705007744,681.15170407246,374.935687778122,36.9762694693761,0,929.574996453741,454.578388666763,282.518212911096,294.528789080979,261.263700120259,-570.321394158192,436.323922076696,528.736583914454,238.972938509083,138.045012186216,352.144506898815,0,-288.160199756938,138.093008563878,0,193.736117117358,0,548.856973264142,0,0,-80.0839793053014,-81.1671554411907,0,0,261.12454365317,565.162818288083,366.278894130143,-409.921784977085,522.275694597256,-146.570778675422],"Archive285_field7":[0,0,0,0,5970.02310745541,0,0,7913.33148950014,0,6215.70268924876,3115.74701469558,5854.25190113112,4625.49108682808,0,7271.61732128131,7471.50999103554,3534.97831535892,7416.55081414638,6963.32329153203,7240.14224259781,6476.28684271086,4523.13100599827,6080.96456056513,5136.15081499911,4422.2079892952,0,2826.97564135435,7165.49551275137,0,4537.21565531875,0,5076.57733433531,0,0,2337.73805705378,2971.97243498521,0,0,3344.95514008291,2534.61894521065,2282.53752615957,1047.77063996887,964.517904517283,2776.89138034055,0,0,0,0,5970.0249954067,0,0,7913.33210741016,0,6215.70361244894,3115.75163542542,5854.25302076217,4625.49297577306,0,7271.61823348676,7471.51039221124,3534.97804852411,7416.55165440122,6963.32432347764,7240.14439456677,6476.2879909791,4523.13283208813,6080.96606955218,5136.15302445998,4422.21076485532,0,2826.97763579854,7165.49601956379,0,4537.21602039535,0,5076.57946609526,0,0,2337.73968243841,2971.97286583227,0,0,3344.95660903342,2534.62171077012,2282.54719011133,1047.77477136859,964.523197266673,2776.8981593146,0,0,0,0,5970.02695964603,0,0,7913.33400514508,0,6215.70442306205,3115.75650488501,5854.25451216655,4625.495004002,0,7271.62113286856,7471.51003164359,3534.97726827554,7416.55256969339,6963.32562277212,7240.15147185404,6476.2891124824,4523.13470579408,6080.96765572473,5136.1553571329,4422.21369402427,0,2826.97973733032,7165.49511976114,0,4537.2156601306,0,5076.58175118692,0,0,2337.74138285037,2971.97335987804,0,0,3344.95827746038,2534.62463404769,2282.55739124734,1047.77913239808,964.528784993274,2776.90531434348],"Archive285_field8":[0,0,0,0,3.77024293911191,0,0,4.98313827810667,0,3.90646990962421,1.99777374084722,3.69688496756767,2.90467007668478,0,4.62103686572201,4.71665935688899,2.23581414116169,4.67213184344107,4.38565896776817,4.50717066185643,4.09104304576194,2.87129795358058,3.83060783978537,3.23143475798879,2.79689485877108,0,1.75575830878196,4.50478629529549,0,2.85911495025401,0,3.21983137685686,0,0,1.46183110650376,1.85972590374426,0,0,2.11523770376473,1.62585462863383,1.45519930543881,0.631720172217833,0.637972567085029,1.73321343334049,0,0,0,0,2.88734724067278,0,0,4.7828113521367,0,3.47944466157023,-0.195066502944242,3.29775235640166,2.11377105088595,0,4.51526786760496,4.35988645490897,2.32568076716555,4.23303947069521,4.00119825423125,4.29475612385142,3.62059625893706,1.92550040867085,3.19098038616332,2.42653490631796,1.87987791171383,0,0.83333273234172,3.87958593249261,0,2.67518946049238,0,2.38022152469263,0,0,0.517098370715837,1.5658833068097,0,0,1.32082612600558,0.0827014944856952,-3.01659133009818,-1.61779246062785,-2.24285750713687,-1.53111126023654,0,0,0,0,0.238650151325368,0,0,4.18181837848765,0,2.19837428214543,-6.77357120763515,2.10037112442816,-0.258918010747611,0,4.19795304355558,3.28956655848055,2.59527688851727,2.91576270333,2.84782250292998,3.65747296044758,2.20925757072182,-0.911892375546945,1.27210020401513,0.0118460875879414,-0.871117005677487,0,-1.9339188129543,2.00398171749467,0,2.12340729917499,0,-0.138597411729512,0,0,-2.31711418305088,0.684354086735527,0,0,-1.06241541975018,-4.54676795763803,-16.432032370914,-8.36636140588632,-10.8854011383169,-11.3241119066872],"Archive285_field9":[0,0,0,0,5982.51317110254,0,0,7918.4014781389,0,6216.51807505291,3189.33334655227,5866.2470966368,4625.63980161123,0,7330.79465906055,7485.32732434588,3546.25091611926,7422.39818536459,6968.22425691379,7262.57166815798,6490.96958084509,4553.93030410966,6085.65962379144,5138.00663754587,4436.20748254192,0,2841.62440621758,7166.82745934042,0,4541.35071430636,0,5106.16205178746,0,0,2339.10970510436,2973.08105402379,0,0,3355.13233179683,2596.86332974257,2311.73926735337,1125.10351544609,1096.84222951329,2780.75740045219,0,0,0,0,5982.51457252513,0,0,7918.40197144504,0,6216.51873318804,3189.33753834218,5866.24800754046,4625.64125629524,0,7330.79547018123,7485.32751340869,3546.25054806503,7422.39876788192,6968.22505407138,7262.57366014855,6490.97046471696,4553.93180681029,6085.66074938872,5138.00839614312,4436.20977961292,0,2841.62608950796,7166.82760318344,0,4541.35104465749,0,5106.16375255453,0,0,2339.11099142671,2973.08137811777,0,0,3355.13356545737,2596.86605518557,2311.7504734393,1125.1087080583,1096.84992719898,2780.76405271011,0,0,0,0,5982.51584981697,0,0,7918.4035270534,0,6216.51894677421,3189.34979626898,5866.24897824418,4625.64280328582,0,7330.7981282274,7485.32661182141,3546.24978862367,7422.39905477301,6968.22578278347,7262.58034070076,6490.97096852647,4553.93354952355,6085.6616167471,5138.01014772595,4436.2124011593,0,2841.62884206261,7166.82593665269,0,4541.35047518562,0,5106.16551560894,0,0,2339.11384627826,2973.08160454564,0,0,3355.13532275157,2596.8734508627,2311.81713902958,1125.14309138475,1096.90754861364,2780.79383513073],"Archive285_field10":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,2732465.1375,1669839.80625,2319221.953125,2201152.471875,2702947.7671875,3153087.66445312,1905978.76875,3536813.47851562,4072277.02434082,3766708.38191106,4467048.82294566,5144221.38575526,5093854.7625,4984869.16245088,2466808.8046875,3204743.0625,2540602.23046875,5566132.6875,4572258.27409405,6628758.01875,4503507.35625,4267368.39375,3529434.1359375,6392619.05625,3795090.46875,3440882.025,4872973.52761088,5939681.20965504,5710759.45846776,6097445.353125,5654892.68035307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive285_field11":[0,0,0,0,386.060423981603,0,0,282.256074566416,0,100.684454147209,680.234275388189,374.046182924026,37.1798492970502,0,934.762346694894,455.891183547115,282.678520264594,294.409931206412,261.766207717173,-574.765942257775,436.696345940684,528.702433874356,238.923982377758,137.425940732907,351.913933632369,0,-288.441548267184,137.460558547977,0,193.260100074436,0,548.868861371068,0,0,-79.4772540718645,-81.0194070826585,0,0,259.626060530659,564.674744947744,365.569622031409,-408.663039935973,521.075231817448,-146.229809333074,0,0,0,0,386.060558283907,0,0,282.256055678751,0,100.683755639568,680.235666740056,374.046678637904,37.1792024332345,0,934.762125152558,455.891265103568,282.676516253266,294.410091675061,261.766134787572,-574.765628099058,436.696609825151,528.704046859811,238.923644151768,137.425684031418,351.914105963811,0,-288.442724273222,137.460706426542,0,193.261921477295,0,548.869251432815,0,0,-79.4790487398603,-81.0217009364329,0,0,259.628320715482,564.677194799263,365.570592406445,-408.664024313573,521.077193675562,-146.229834570011,0,0,0,0,386.060700023045,0,0,282.256035744309,0,100.683018405516,680.237135220162,374.047201858093,37.1785196641105,0,934.761891322352,455.891351183224,282.674401150947,294.410261040381,261.766057810728,-574.7652965164,436.696888337734,528.705749255732,238.923287186402,137.425413099175,351.914287852457,0,-288.443965441433,137.46086249971,0,193.263843847578,0,548.869663150507,0,0,-79.480942857436,-81.0241219158731,0,0,259.630706160506,564.679780409263,365.571616597867,-408.665063287804,521.07926429701,-146.229861226532],"Archive285_field12":[0,0,0,0,5967.50653647864,0,0,7921.56602188058,0,6210.68987119002,3110.58104529193,5851.76373492254,4620.03165674927,0,7273.02312993446,7475.03366086657,3533.19534472469,7418.56125744663,6963.65010749637,7240.09780801299,6476.41113513835,4517.09181394783,6076.64693558052,5131.51497050391,4415.82453371086,0,2821.88056557167,7167.02209828826,0,4532.86533845236,0,5071.55320626014,0,0,2332.3267462051,2967.111854754,0,0,3338.33198732674,2530.69341034226,2277.16487729664,1044.88631953366,962.382939174686,2770.59463622122,0,0,0,0,5967.50843082676,0,0,7921.56664785159,0,6210.69079840253,3110.58566387563,5851.76485748853,4620.03354477635,0,7273.02404848659,7475.03406662478,3533.19507803256,7418.56210354399,6963.65114465683,7240.09996347965,6476.41228725637,4517.09364245846,6076.64844761628,5131.51718301216,4415.82731517448,0,2821.88256033211,7167.02260774405,0,4532.86570589757,0,5071.55534386469,0,0,2332.32836979028,2967.1122878837,0,0,3338.33345712963,2530.69617215792,2277.174526411,1044.89044156864,962.388221601818,2770.60141062255,0,0,0,0,5967.51040164934,0,0,7921.56856737478,0,6210.69161235317,3110.59053106037,5851.7663532997,4620.03557219832,0,7273.02696806509,7475.03370535971,3533.19429427075,7418.56302427343,6963.65245064896,7240.1070543111,6476.41341249676,4517.09551856992,6076.65003706712,5131.51951888641,4415.83025059102,0,2821.88466219136,7167.0217017584,0,4532.86534686119,0,5071.55763520899,0,0,2332.33006825065,2967.11278454463,0,0,3338.33512651386,2530.69909151069,2277.1847118856,1044.89479271928,962.393798439379,2770.60856083048],"Archive285_field13":[0,0,0,0,3.76864498356483,0,0,4.98824138165923,0,3.90332933998906,1.99447456817239,3.69526786540169,2.90125702742092,0,4.62224414959041,4.71895279180552,2.23470526711851,4.67338583844463,4.38589546902945,4.50686326414948,4.09114437311958,2.86750649495085,3.8278954572841,3.22848689652992,2.79287481246631,0,1.75254338288669,4.50570463945464,0,2.85635567679133,0,3.21667955020722,0,0,1.45847342990278,1.85668499946397,0,0,2.11098803072156,1.62336098039469,1.45178314539714,0.629988955144465,0.63655752901166,1.72928338818466,0,0,0,0,2.88332779577813,0,0,4.78523949186509,0,3.47461693494504,-0.196744214097083,3.29360124689486,2.11033386256739,0,4.51525211236931,4.3584229471915,2.32488428048671,4.23202231382357,3.99914902320079,4.29352022156569,3.6183443707397,1.92166976475997,3.18703157771317,2.42145559520434,1.87178630737591,0,0.829307790682993,3.87899522373627,0,2.67146681328582,0,2.3748359135207,0,0,0.515518993627628,1.56181471342277,0,0,1.31749942856237,0.0818927755032824,-3.01151674582133,-1.6146230795072,-2.23913075786077,-1.53015045122242,0,0,0,0,0.227364781022825,0,0,4.17621954883639,0,2.18848548592473,-6.77038410804738,2.08861935637168,-0.262427262463637,0,4.19426624219685,3.27683227126911,2.59541745294837,2.90793192523347,2.83891642912303,3.65344474371707,2.19994594436204,-0.915841097150966,1.26444195560743,0.000373012385784667,-0.891418336012557,0,-1.94037171734739,1.998863908789,0,2.11679405427679,0,-0.1506838179589,0,0,-2.31336046680634,0.67720218696887,0,0,-1.06297434734799,-4.54252365086947,-16.4014949857625,-8.34849435985883,-10.8662557917412,-11.3084829279428],"Archive285_field14":[0,0,0,0,5979.98253480436,0,0,7926.59457858132,0,6211.50716584866,3184.09124974005,5863.70727537786,4620.18216825392,0,7332.84852281166,7488.92430665711,3544.48606764237,7424.40234487708,6968.56969565605,7262.8776989421,6491.11867303042,4547.92842311889,6081.34337970148,5133.35584241144,4429.825902827,0,2836.58448217679,7168.34161182926,0,4536.98421879461,0,5101.16842477659,0,0,2333.68095765536,2968.21837980715,0,0,3348.41314732606,2592.92679033413,2306.32242642261,1121.95957941647,1094.39514072094,2774.45143872017,0,0,0,0,5979.98394146926,0,0,7926.59507833212,0,6211.50782700741,3184.09544036013,5863.70818790866,4620.18362205025,0,7332.84933896679,7488.92449812717,3544.48569997983,7424.40293196914,6968.57049666536,7262.87969353327,6491.1195595193,4547.92992873892,6081.34450765802,5133.35760313148,4429.8282042311,0,2836.58616601788,7168.34175750079,0,4536.98455085867,0,5101.17013055794,0,0,2333.68224261081,2968.21870558729,0,0,3348.4143817206,2592.92951250271,2306.33361658731,1121.96476177167,1094.40282554152,2774.45808806377,0,0,0,0,5979.98522653611,0,0,7926.5966516623,0,6211.50804261074,3184.10770077834,5863.70916103102,4620.18516940288,0,7332.8520142943,7488.92359140999,3544.48493780481,7424.40322200989,6968.57122959201,7262.88638570255,6491.12006525946,4547.93167626179,6081.34537820056,5133.35935980307,4429.83083905651,0,2836.58892562049,7168.34008384451,0,4536.98398133946,0,5101.1719023259,0,0,2333.68509426191,2968.21893450318,0,0,3348.41614056739,2592.93690256766,2306.40018816017,1121.99909053527,1094.46036861543,2774.48785390162],"Archive285_field15":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,2732465.1375,1669839.80625,2319221.953125,2201152.471875,2702947.7671875,3153087.66445312,1905978.76875,3536813.47851562,4072277.02434082,3766708.38191106,4467048.82294566,5144221.38575526,5093854.7625,4984869.16245088,2466808.8046875,3204743.0625,2540602.23046875,5566132.6875,4572258.27409405,6628758.01875,4503507.35625,4267368.39375,3529434.1359375,6392619.05625,3795090.46875,3440882.025,4872973.52761088,5939681.20965504,5710759.45846776,6097445.353125,5654892.68035307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive285_field16":[0,0,0,0,361.184284659058,0,0,324.052492258761,0,267.75514220275,623.39584644715,329.563278839192,83.1447570980951,0,1299.18297842869,492.414475360727,422.781932542868,286.029139197119,326.175049981436,-807.537276090586,398.428757274765,472.048849322483,259.134267828717,187.435329418491,403.846261804957,0,-176.032770491366,32.7649181528444,0,9.7511133181198,0,510.37610011723,0,0,-83.1490156662294,-16.6676470554219,0,0,313.692042989203,477.790864138647,455.49399574182,-286.487782051274,471.765586750654,-61.0629843474949,0,0,0,0,361.184337929252,0,0,324.052551557759,0,267.754864326787,623.396715225342,329.563723485558,83.144231741994,0,1299.18321779612,492.414470944459,422.781508616649,286.029218544691,326.174961090563,-807.537365029872,398.429007822129,472.049459708163,259.134044122066,187.435037444812,403.846494146682,0,-176.033259170556,32.7650063363154,0,9.75134741669289,0,510.376578681368,0,0,-83.1499208974886,-16.6682961206504,0,0,313.693156596232,477.791751575947,455.494438030385,-286.488135572536,471.766135959873,-61.0630552687324,0,0,0,0,361.18439416026,0,0,324.052614147023,0,267.754571032465,623.39763213858,329.564192867635,83.1436771433027,0,1299.18347043231,492.414466272145,422.781061142913,286.029302299188,326.174867264103,-807.537458882282,398.429272275232,472.050104005512,259.133807993081,187.434729288515,403.846739371503,0,-176.033774954505,32.765099451479,0,9.7515945769827,0,510.377083846929,0,0,-83.1508765058426,-16.6689813336961,0,0,313.69433210647,477.792688422699,455.494904892592,-286.48850862345,471.766715636766,-61.0631301083079],"Archive285_field17":[0,0,0,0,6502.54124115788,0,0,8353.43753469616,0,6664.12690716958,3325.1607944934,6647.90363321129,5235.36277114283,0,7333.09342651808,7887.85697445605,5156.57648760956,7900.91163174555,7451.70363413679,7345.8320628186,7072.88037566445,5000.10436526741,6620.82283792721,5631.71747339326,4807.2437802915,0,3141.47886571197,7589.94860565131,0,5883.45411704694,0,5508.80442741161,0,0,3041.06910840106,3909.22485724266,0,0,4336.85270628746,2994.81809679099,2532.8015412641,1145.37704127437,1174.60524008817,3006.46757416668,0,0,0,0,6502.54311881853,0,0,8353.43917511093,0,6664.12796884402,3325.16463743901,6647.904918288,5235.36470171575,0,7333.0944694859,7887.85792315321,5156.57776108079,7900.91244799523,7451.70474880976,7345.83449377264,7072.88173830409,5000.10631637031,6620.82441162387,5631.71986111058,4807.24724138755,0,3141.48171185179,7589.94989928568,0,5883.45586067303,0,5508.80695415968,0,0,3041.0708997324,3909.22617241905,0,0,4336.85413877251,2994.82052913606,2532.80629024724,1145.37931399112,1174.60747473112,3006.47182429519,0,0,0,0,6502.54511939704,0,0,8353.44461231895,0,6664.12915639472,3325.16869565614,6647.90676133533,5235.36675059528,0,7333.09783112658,7887.86027560952,5156.58092160566,7900.91341340344,7451.70616747838,7345.843168135,7072.88323857914,5000.10844460678,6620.82611173637,5631.72238792459,4807.2508970984,0,3141.48471674848,7589.9531726476,0,5883.4599129944,0,5508.80964307953,0,0,3041.0727889922,3909.2275463796,0,0,4336.85598599638,2994.82310031776,2532.81130393139,1145.38171322145,1174.60983430976,3006.47631111989],"Archive285_field18":[0,0,0,0,4.17016434072759,0,0,5.30156467271101,0,4.42579613736393,2.29592120957502,4.18868201826386,3.27150426668696,0,5.06656914971807,4.95201726268653,3.75668092263614,5.08921530942646,4.73869413269981,5.08684593341005,4.52100051404239,3.44852639187225,4.1854553937225,3.63709491180651,3.1263811816966,0,2.09856129615434,4.72650147610881,0,4.07431948530635,0,3.5200646652016,0,0,1.99752198704651,2.75178250572168,0,0,2.89314328023963,2.05825264443255,1.72926422658184,0.744017706472961,0.884633642804696,1.99447286464251,0,0,0,0,3.22823339540777,0,0,4.92081046554229,0,4.01132603877184,0.106824113002002,3.74232654419651,2.41942095899273,0,4.75951435570387,4.70079602731864,3.69633945112599,4.67415166855736,4.31149361094845,4.54482822336763,3.97996976140037,2.3467962385607,3.5217413074903,2.80474769860773,2.08278034885121,0,0.893165185963567,4.44007840336797,0,3.6567095387435,0,2.48515238579208,0,0,0.90932371374689,2.1484234479077,0,0,2.00448727007081,0.251553207640608,-3.19859174847945,-1.90613115506266,-3.00835436457373,-1.57730340192692,0,0,0,0,0.40244606214068,0,0,3.77850220627832,0,2.76792419984732,-6.46044539145444,2.40325290065655,-0.136827126145434,0,3.83830024512438,3.94714788531941,3.51532771623785,3.42896377119554,3.02988859940272,2.91863067467031,2.35688152060685,-0.95838508927404,1.53060239069497,0.307713458099148,-1.04801184843783,0,-2.72301883117278,3.58084582169284,0,2.40389600828331,0,-0.619580787624658,0,0,-2.35525988668381,0.338354404152617,0,0,-0.661471989484286,-5.16854139855072,-17.9821450851578,-9.85657498329885,-14.6873315449811,-12.2926133388556],"Archive285_field19":[0,0,0,0,6512.5658592228,0,0,8359.72229026764,0,6669.50521693394,3383.09354908459,6656.06882598731,5236.02397806211,0,7447.29221150912,7903.21353548635,5173.88053086888,7906.08899401179,7458.84037028946,7390.087348835,7084.09505318276,5022.3386656066,6625.89338414213,5634.83690369975,4824.17810000672,0,3146.40769830633,7590.02079813396,0,5883.46360842717,0,5532.39752493401,0,0,3042.20628343503,3909.26135826823,0,0,4348.18381213877,3032.69249663152,2573.43377959128,1180.66268235488,1265.80449575022,3007.08828279036,0,0,0,0,6512.56720192203,0,0,8359.72369895229,0,6669.50600443814,3383.09670893991,6656.06986557708,5236.02543699331,0,7447.29307767492,7903.21432864689,5173.88172197882,7906.08955631297,7458.84122083675,7390.08942173794,7084.09610313616,5022.34002979384,6625.89456187159,5634.83880460647,4824.18100496206,0,3146.40999425973,7590.02191917804,0,5883.46507806318,0,5532.39952337563,0,0,3042.2075789489,3909.26229804869,0,0,4348.18482075599,3032.69435039007,2573.43993867776,1180.6662771836,1265.81003982775,3007.09228572813,0,0,0,0,6512.56841486844,0,0,8359.72854014381,0,6669.50654732592,3383.10703343572,6656.07111141798,5236.02691962228,0,7447.29590007451,7903.21626390859,5173.88470921584,7906.08988600969,7458.84200333369,7390.09723323981,7084.09688996911,5022.34175231252,6625.89549231187,5634.84063014049,4824.18433259791,0,3146.41407483513,7590.02473890449,0,5883.46848552152,0,5532.40172396062,0,0,3042.21026943596,3909.26309920366,0,0,4348.18633625717,3032.7014309238,2573.50579312493,1180.70829870286,1265.89407714383,3007.12148466376],"Archive285_field20":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,2732465.1375,1669839.80625,2319221.953125,2201152.471875,2702947.7671875,3153087.66445312,1905978.76875,3536813.47851562,4072277.02434082,3766708.38191106,4467048.82294566,5144221.38575526,5093854.7625,4984869.16245088,2466808.8046875,3204743.0625,2540602.23046875,5566132.6875,4572258.27409405,6628758.01875,4503507.35625,4267368.39375,3529434.1359375,6392619.05625,3795090.46875,3440882.025,4872973.52761088,5939681.20965504,5710759.45846776,6097445.353125,5654892.68035307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive285_field21":[0,0,0,0,361.184308326072,0,0,324.052583940758,0,267.755236870887,623.395727842674,329.563234854836,83.1448728570147,0,1299.18327699139,492.414574100135,422.782117324315,286.029158384273,326.175104107965,-807.537570794461,398.428750768377,472.04877545178,259.134336307576,187.435407120905,403.84625340076,0,-176.032680691013,32.7649028507432,0,9.75103999687227,0,510.376051387266,0,0,-83.148838969408,-16.6675123049474,0,0,313.691862062156,477.790731396131,455.49394852717,-286.487734655313,471.7655149697,-61.0629702529169,0,0,0,0,361.184361596796,0,0,324.052643239739,0,267.75495899426,623.396596619209,329.563679506559,83.1443474946906,0,1299.18351635882,492.414569683419,422.781693395495,286.029237732283,326.175015216774,-807.537659733357,398.429001316756,472.04938584186,259.134112599827,187.435115147691,403.8464857431,0,-176.033169370365,32.7649910371521,0,9.75127410108725,0,510.376529955668,0,0,-83.1497442110846,-16.668161378648,0,0,313.692975679012,477.791618846167,455.49439082066,-286.488088171995,471.766064180084,-61.0630411724765,0,0,0,0,361.184417829035,0,0,324.052705829739,0,267.754665697485,623.397513527231,329.564148902596,83.1437928764152,0,1299.18376899062,492.414565009246,422.781245918773,286.029321488425,326.174921388866,-807.537753571774,398.429265772556,472.050030151269,259.133876467544,187.434806992038,403.846730968375,0,-176.03368515637,32.7650841617697,0,9.75152126756627,0,510.377035133011,0,0,-83.1506998513793,-16.6688466188533,0,0,313.694151215675,477.792555728179,455.494857691627,-286.488461210851,471.766643860877,-61.0631160095719],"Archive285_field22":[0,0,0,0,6502.54148806229,0,0,8353.43781521261,0,6664.12731518,3325.16035584468,6647.90400474311,5235.36288423253,0,7333.09375681526,7887.85749702661,5156.5765754619,7900.91227057226,7451.70412566642,7345.83193221836,7072.88079812219,5000.10445760725,6620.82315328263,5631.71753237543,4807.24355811139,0,3141.47860725634,7589.94903086525,0,5883.45421184318,0,5508.80445069317,0,0,3041.06904296577,3909.22496390126,0,0,4336.85280729871,2994.81789704584,2532.80087192274,1145.37670899828,1174.60491222706,3006.46704421388,0,0,0,0,6502.54336572473,0,0,8353.4394556187,0,6664.12837685463,3325.16419878697,6647.9052898164,5235.36481480722,0,7333.09479977775,7887.85844571896,5156.57784892636,7900.9130868224,7451.70524033857,7345.83436314493,7072.88216076206,5000.10640870933,6620.82472697997,5631.7199200948,4807.24701922179,0,3141.48145340545,7589.95032449052,0,5883.4559554579,0,5508.80697744322,0,0,3041.07083429746,3909.22627907747,0,0,4336.85423978005,2994.82032939471,2532.80562095428,1145.37898173887,1174.6071469223,3006.47129436107,0,0,0,0,6502.5453663042,0,0,8353.44489279368,0,6664.12956440361,3325.16825698979,6647.90713283649,5235.36686368582,0,7333.09816139571,7887.86079814058,5156.58100940928,7900.91405223078,7451.70665899769,7345.84303738987,7072.88366103331,5000.10853693661,6620.82642709063,5631.72244690969,4807.25067495736,0,3141.4844583168,7589.95359778854,0,5883.4600077062,0,5508.8096663622,0,0,3041.07272355302,3909.22765303236,0,0,4336.85608697924,2994.82290057914,2532.81063473719,1145.38138101864,1174.60950662382,3006.47578121387],"Archive285_field23":[0,0,0,0,4.17016433252239,0,0,5.30156484534368,0,4.42579640971486,2.29592047291952,4.18868219099117,3.27150419489748,0,5.06656921266667,4.95201778891469,3.75668125876943,5.08921569331894,4.73869438883826,5.08684541072567,4.52100073205334,3.44852624361112,4.18545551494511,3.63709487943946,3.12638099191974,0,2.0985610365859,4.72650211799701,0,4.07431970232707,0,3.52006452730815,0,0,1.99752181568713,2.7517825734116,0,0,2.89314315629707,2.0582521427527,1.72926230000919,0.744016832287136,0.884632291492129,1.99447150294457,0,0,0,0,3.22823336696119,0,0,4.92081198857153,0,4.01132612758596,0.106823138707478,3.74232698834721,2.4194209665493,0,4.75951594628113,4.7007960640785,3.69633949180315,4.67415198483213,4.3114940197789,4.54483198573367,3.97996992618759,2.34679600722279,3.52174142327424,2.80474760296181,2.08278007054806,0,0.893164967502336,4.4400778897928,0,3.65670940298646,0,2.48515230691795,0,0,0.909323366778786,2.14842337236312,0,0,2.00448705294731,0.251552844988882,-3.19859332580332,-1.90613178432335,-3.00835486259045,-1.57730472495743,0,0,0,0,0.402446027364771,0,0,3.77850200990166,0,2.76792449450286,-6.4604460574976,2.40325299384913,-0.136827194936447,0,3.83830014976376,3.94714828624506,3.51532826861322,3.42896406407724,3.02988878378733,2.91862935656901,2.35688166311098,-0.958385226858035,1.53060247540315,0.307713453999151,-1.04801195631944,0,-2.72301907116065,3.58084623492996,0,2.40389644476658,0,-0.619580928066962,0,0,-2.35526006076932,0.338354491390271,0,0,-0.661472114063233,-5.168541858187,-17.9821468363932,-9.85657582014496,-14.687332706132,-12.2926146162423],"Archive285_field24":[0,0,0,0,6512.56610705972,0,0,8359.72257412724,0,6669.50562841609,3383.09309609186,6656.06919488567,5236.02409297566,0,7447.29258882587,7903.21406319387,5173.88063352699,7906.08963311457,7458.84086371592,7390.08725121969,7084.09547460592,5022.33875059445,6625.89370193447,5634.83696523392,4824.17787790287,0,3146.40743523132,7590.0212232782,0,5883.46370310188,0,5532.39754362074,0,0,3042.20621319465,3909.26146435136,0,0,4348.18389983405,3032.69227846743,2573.43311246,1180.66234850812,1265.80416475727,3007.08775265984,0,0,0,0,6512.56744976077,0,0,8359.72398280401,0,6669.50641592033,3383.09625594399,6656.07023447244,5236.02555190858,0,7447.29345498739,7903.21485634929,5173.88182462974,7906.09019541619,7458.84171426245,7390.08932409793,7084.09652455957,5022.34011478128,6625.89487966456,5634.83886614269,4824.18078287254,0,3146.40973119405,7590.02234431251,0,5883.4651727263,0,5532.39954206479,0,0,3042.2075087091,3909.26240413158,0,0,4348.18490844822,3032.69413223198,2573.4392715986,1180.66594336077,1265.80970888672,3007.0917556178,0,0,0,0,6512.56866270825,0,0,8359.72882396156,0,6669.5069588064,3383.10658042689,6656.07148028664,5236.02703453631,0,7447.2962773628,7903.21679157644,5173.88481182504,7906.09052511312,7458.84249674972,7390.09713547869,7084.09731138888,5022.34183729208,6625.89581010287,5634.84069167764,4824.18411053319,0,3146.41381178455,7590.02516397562,0,5883.46858011185,0,5532.40174265005,0,0,3042.210199193,3909.26320528105,0,0,4348.18642392678,3032.70121277508,2573.50512617056,1180.70796494223,1265.89374635189,3007.12095459036],"Archive285_field25":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,2732465.1375,1669839.80625,2319221.953125,2201152.471875,2702947.7671875,3153087.66445312,1905978.76875,3536813.47851562,4072277.02434082,3766708.38191106,4467048.82294566,5144221.38575526,5093854.7625,4984869.16245088,2466808.8046875,3204743.0625,2540602.23046875,5566132.6875,4572258.27409405,6628758.01875,4503507.35625,4267368.39375,3529434.1359375,6392619.05625,3795090.46875,3440882.025,4872973.52761088,5939681.20965504,5710759.45846776,6097445.353125,5654892.68035307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive285_field26":[0,0,0,0,386.060425216995,0,0,282.256072430434,0,100.684455551777,680.234275095783,374.046182922212,37.1798502535391,0,934.762349915016,455.891185178131,282.678519438933,294.409932446231,261.766209465395,-574.765960121417,436.696347162587,528.702434563742,238.923983593438,137.425941560447,351.913934412694,0,-288.441547676845,137.460553902057,0,193.260095360942,0,548.868862328839,0,0,-79.4772536684327,-81.0194064306877,0,0,259.62606125981,564.674744470397,365.569622120359,-408.663039400121,521.075231248833,-146.229808424613,0,0,0,0,386.060559519296,0,0,282.256053542777,0,100.683757044136,680.235666447648,374.046678636088,37.1792033897251,0,934.762128372681,455.891266734585,282.676515427606,294.41009291488,261.766136535797,-574.765645962715,436.696611047057,528.704047549192,238.923645367448,137.425684858959,351.91410674414,0,-288.442723682881,137.460701780623,0,193.26191676379,0,548.869252390588,0,0,-79.4790483364268,-81.0217002844592,0,0,259.628321444628,564.677194321912,365.570592495393,-408.664023777722,521.077193106944,-146.229833661551,0,0,0,0,386.060701258533,0,0,282.25603360856,0,100.683019810247,680.237134927744,374.047201856566,37.1785206205869,0,934.761894542514,455.891352814252,282.674400325117,294.41026228034,261.766059558848,-574.765314380567,436.696889559521,528.705749945019,238.923288401952,137.425413926748,351.914288632743,0,-288.443964851097,137.46085785329,0,193.263839134078,0,548.869664108336,0,0,-79.4809424539884,-81.0241212639185,0,0,259.63070688963,564.679779931925,365.571616686827,-408.665062751954,521.07926372839,-146.229860318073],"Archive285_field27":[0,0,0,0,5967.50652818922,0,0,7921.5660157531,0,6210.68986467175,3110.58104036677,5851.76372104628,4620.03165114546,0,7273.0231364054,7475.03365697239,3533.19534189459,7418.56124471825,6963.65009722784,7240.09779639888,6476.41112303843,4517.09180344585,6076.64692736306,5131.5149639521,4415.82452692015,0,2821.88056225315,7167.02207483522,0,4532.86532647897,0,5071.55319692137,0,0,2332.32674371931,2967.11185159993,0,0,3338.3319796426,2530.69340556847,2277.16487418985,1044.88631843357,962.382937913597,2770.59463255273,0,0,0,0,5967.50842253732,0,0,7921.56664172412,0,6210.69079188424,3110.58565895046,5851.76484361225,4620.03353917253,0,7273.02405495753,7475.03406273063,3533.19507520247,7418.56209081558,6963.65113438831,7240.09995186557,6476.41227515646,4517.09363195651,6076.64843939883,5131.51717646033,4415.82730838378,0,2821.88255701358,7167.02258429105,0,4532.86569392418,0,5071.55533452593,0,0,2332.32836730448,2967.11228472961,0,0,3338.33344944547,2530.69616738411,2277.17452330421,1044.89044046854,962.388220340723,2770.60140695404,0,0,0,0,5967.51039335984,0,0,7921.56856124699,0,6210.69160583485,3110.59052613527,5851.76633942232,4620.03556659442,0,7273.02697453519,7475.03370146632,3533.19429144128,7418.56301154455,6963.65244038019,7240.10704269428,6476.41340039731,4517.09550806836,6076.65002884978,5131.51951233457,4415.83024380039,0,2821.88465887285,7167.02167830709,0,4532.86533488937,0,5071.55762587001,0,0,2332.33006576492,2967.11278139049,0,0,3338.33511882905,2530.69908673679,2277.18470877877,1044.89479161917,962.393797178249,2770.60855716194],"Archive285_field28":[0,0,0,0,3.7686449745615,0,0,4.98824115541185,0,3.9033293505075,1.99447455773944,3.69526797640983,2.90125703177198,0,4.62224397847655,4.71895274239661,2.23470522651833,4.67338589781444,4.38589550430067,4.50686257707393,4.09114431571971,2.86750645468701,3.82789543254102,3.22848689492245,2.79287480520843,0,1.75254337921359,4.50570449793521,0,2.85635558607406,0,3.21667956819312,0,0,1.45847342100557,1.8566850024159,0,0,2.1109880680448,1.62336098423387,1.4517831459403,0.629988955200494,0.636557530847179,1.72928338595316,0,0,0,0,2.88332779702884,0,0,4.78523970624692,0,3.47461691503025,-0.196744206056485,3.29360112034146,2.11033385253212,0,4.51525229110174,4.35842298806036,2.32488431670621,4.23202223844583,3.99914897407239,4.29352089395371,3.61834441456358,1.92166979409351,3.18703159487975,2.42145558997657,1.87178630816423,0,0.829307791870385,3.87899533258967,0,2.67146689428387,0,2.37483588603811,0,0,0.515519001033539,1.56181470813121,0,0,1.31749938106748,0.0818927685100996,-3.01151674380266,-1.61462307793491,-2.23913075761434,-1.53015044865032,0,0,0,0,0.22736478563701,0,0,4.17621951534835,0,2.18848547725884,-6.77038409631366,2.08861936261366,-0.262427260519895,0,4.19426623188535,3.27683225055813,2.59541744579833,2.9079319207642,2.83891642062614,3.65344470145684,2.1999459395538,-0.915841097152076,1.2644419596332,0.00037301361203878,-0.89141833259757,0,-1.94037171307572,1.99886387527829,0,2.11679406488454,0,-0.150683813863332,0,0,-2.31336046248985,0.677202191482782,0,0,-1.06297435197632,-4.54252364187954,-16.4014949617531,-8.34849434870462,-10.8662557774582,-11.3084829108657],"Archive285_field29":[0,0,0,0,5979.98252661198,0,0,7926.59457238152,0,6211.50715935401,3184.09124486611,5863.70726152982,4620.182162658,0,7332.84852964019,7488.92430286942,3544.4860647554,7424.40233220792,6968.56968546046,7262.87768877767,6491.11866104009,4547.92841276824,6081.34337153812,5133.35583588413,4429.82589611974,0,2836.58447881544,7168.34158829135,0,4536.98420663126,0,5101.1684155951,0,0,2333.68095515726,2968.21837663645,0,0,3348.41313972162,2592.92678557096,2306.32242336921,1121.95957819677,1094.39513934124,2774.45143500889,0,0,0,0,5979.98393327686,0,0,7926.59507213261,0,6211.50782051274,3184.09543548619,5863.70817406045,4620.1836164543,0,7332.84934579553,7488.92449433955,3544.48569709293,7424.40291929987,6968.57048646974,7262.87968336971,6491.11954752904,4547.92991838834,6081.34449949469,5133.35759660415,4429.82819752386,0,2836.58616265653,7168.34173396308,0,4536.98453869542,0,5101.17012137643,0,0,2333.68224011271,2968.21870241658,0,0,3348.4143741161,2592.92950773952,2306.33361353388,1121.96476055196,1094.40282416181,2774.45808435247,0,0,0,0,5979.98521834366,0,0,7926.59664546232,0,6211.50803611605,3184.10769590446,5863.70914718182,4620.18516380686,0,7332.85202112209,7488.9235876231,3544.48493491849,7424.40320934019,6968.57121939615,7262.88637553586,6491.12005326962,4547.93166591157,6081.34537003732,5133.35935327573,4429.83083234933,0,2836.58892225915,7168.34006030841,0,4536.98396917773,0,5101.17189314419,0,0,2333.68509176388,2968.21893133242,0,0,3348.41613296225,2592.93689780439,2306.40018510662,1121.9990893155,1094.46036723561,2774.48785019026],"Archive285_field30":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,2732465.1375,1669839.80625,2319221.953125,2201152.471875,2702947.7671875,3153087.66445312,1905978.76875,3536813.47851562,4072277.02434082,3766708.38191106,4467048.82294566,5144221.38575526,5093854.7625,4984869.16245088,2466808.8046875,3204743.0625,2540602.23046875,5566132.6875,4572258.27409405,6628758.01875,4503507.35625,4267368.39375,3529434.1359375,6392619.05625,3795090.46875,3440882.025,4872973.52761088,5939681.20965504,5710759.45846776,6097445.353125,5654892.68035307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive285_field31":[0,0,0,0,361.184296047366,0,0,324.052609432881,0,267.755233198559,623.395718004897,329.563236361928,83.1448687248761,0,1299.18329861644,492.414575062091,422.782123075015,286.029153707596,326.175090955908,-807.537602777103,398.42873758417,472.048765606749,259.134326677923,187.435401399996,403.846246060262,0,-176.032679220311,32.7649032048418,0,9.75104154820974,0,510.376039606472,0,0,-83.1488390060984,-16.667513933797,0,0,313.69186296555,477.790724829196,455.493941868936,-286.48773138685,471.765509530573,-61.0629700142384,0,0,0,0,361.184349318092,0,0,324.052668731865,0,267.754955321928,623.396586781411,329.563681013662,83.1443433625621,0,1299.18353798388,492.414570645361,422.781699146203,286.0292330556,326.17500206472,-807.537691716064,398.428988132548,472.049375996816,259.134102970175,187.435109426793,403.846478402608,0,-176.033167899655,32.7649913912529,0,9.75127565246491,0,510.376518174862,0,0,-83.1497442477603,-16.6681630074823,0,0,313.692976582415,477.791612279211,455.494384162423,-286.488084903529,471.766058740951,-61.0630409337999,0,0,0,0,361.184405550277,0,0,324.052731321763,0,267.754662025123,623.397503689435,329.564150412141,83.1437887442801,0,1299.18379061652,492.414565970658,422.781251669354,286.029316811701,326.17490823644,-807.537785555698,398.429252588743,472.050020306815,259.133866838055,187.434801271163,403.84672362794,0,-176.033683685641,32.765084517899,0,9.7515228228002,0,510.377023352437,0,0,-83.1506998879986,-16.6688482475558,0,0,313.694152120139,477.792549161198,455.494851033408,-286.488457942385,471.766638421754,-61.0631157709032],"Archive285_field32":[0,0,0,0,6502.54139307972,0,0,8353.43773971796,0,6664.12720093226,3325.16032024788,6647.90394093121,5235.362810607,0,7333.09363559915,7887.85737965133,5156.57649852392,7900.91218649085,7451.70401587241,7345.83190163493,7072.88070625399,5000.10440549272,6620.82305265765,5631.71744917771,4807.24349631318,0,3141.47857111714,7589.94898419939,0,5883.45416770916,0,5508.80438070938,0,0,3041.06900803894,3909.22491294065,0,0,4336.85277266993,2994.81787047317,2532.80084412433,1145.37669863045,1174.60490222166,3006.46700294068,0,0,0,0,6502.54327074208,0,0,8353.43938012415,0,6664.12826260701,3325.16416319016,6647.90522600447,5235.3647411816,0,7333.09467856181,7887.85832834388,5156.5777719884,7900.91300274111,7451.70513054459,7345.83433256181,7072.88206889395,5000.10635659478,6620.82462635511,5631.71983689713,4807.24695742364,0,3141.48141726624,7589.95027782478,0,5883.45591132378,0,5508.8069074593,0,0,3041.0707993706,3909.22622811682,0,0,4336.8542051512,2994.82030282207,2532.80559315582,1145.37897137103,1174.60713691688,3006.47125308786,0,0,0,0,6502.54527132118,0,0,8353.44481729297,0,6664.12945015642,3325.16822139295,6647.90706901778,5235.36679005985,0,7333.09804017604,7887.86068075973,5156.58093246246,7900.91396815026,7451.706549202,7345.84300678741,7072.88356916453,5000.10848481997,6620.82632646536,5631.72236371186,4807.2506131593,0,3141.48442217758,7589.95355111235,0,5883.45996355709,0,5508.80959637747,0,0,3041.07268862621,3909.22760207214,0,0,4336.85605234349,2994.82287400648,2532.81060693861,1145.38137065081,1174.60949661835,3006.47573994081],"Archive285_field33":[0,0,0,0,4.17016428015134,0,0,5.30156399557556,0,4.42579640738366,2.29592045106664,4.18868200236251,3.27150413563742,0,5.06656826973171,4.95201798687313,3.75668131596905,5.08921568559625,4.73869423773391,5.08684282483165,4.52100069667,3.44852622857039,4.18545545000486,3.63709482522893,3.12638095138716,0,2.09856101427723,4.72650273404809,0,4.07431986022181,0,3.52006447098456,0,0,1.99752179898997,2.75178252454746,0,0,2.89314310488722,2.05825212453593,1.72926228107403,0.744016826357645,0.884632283886154,1.99447147670879,0,0,0,0,3.22823331310387,0,0,4.92081275930903,0,4.01132599191848,0.10682314258539,3.74232709485657,2.41942095063723,0,4.75951672944914,4.70079571090666,3.69633933481879,4.67415187571097,4.31149402779033,4.5448345114745,3.97996983766377,2.34679597021147,3.5217413727712,2.80474756290288,2.08278005193777,0,0.89316496260882,4.44007719339295,0,3.65670917766525,0,2.48515229307952,0,0,0.909323353774621,2.14842336359188,0,0,2.00448706711873,0.251552848740804,-3.19859328626366,-1.90613176324794,-3.00835483114594,-1.57730469911644,0,0,0,0,0.402446037555589,0,0,3.77850205783298,0,2.76792445172648,-6.46044596425248,2.40325295642926,-0.136827172076793,0,3.83830018593637,3.94714815830054,3.51532823454961,3.42896394806439,3.02988871622669,2.91862953117767,2.3568815942168,-0.958385197770453,1.53060245583086,0.307713456409061,-1.04801190951956,0,-2.72301901617623,3.58084603863841,0,2.40389640792194,0,-0.61958088644498,0,0,-2.35526002527624,0.33835450715828,0,0,-0.66147211162907,-5.16854180043422,-17.9821466244434,-9.85657571984109,-14.6873325613902,-12.292614435075],"Archive285_field34":[0,0,0,0,6512.56601154234,0,0,8359.72249967697,0,6669.50551411305,3383.09305929183,6656.06913122655,5236.02401929378,0,7447.29247324038,7903.21394610672,5173.88055731629,7906.08954891902,7458.84075345172,7390.08722431246,7084.09538214161,5022.3386977853,6625.89360100984,5634.83688189192,4824.17781570707,0,3146.40739906643,7590.02117661469,0,5883.46365897062,0,5532.39747284856,0,0,3042.20617828186,3909.26141339814,0,0,4348.18386536065,3032.69225119202,2573.433083922,1180.66233765705,1265.80415344557,3007.0877113903,0,0,0,0,6512.56735424331,0,0,8359.72390835483,0,6669.50630161733,3383.09621914394,6656.07017081348,5236.02547822663,0,7447.29333940321,7903.21473926199,5173.8817484189,7906.09011122069,7458.84160399839,7390.08929719436,7084.09643209533,5022.34006197209,6625.89477874005,5634.83878280074,4824.1807206768,0,3146.40969502917,7590.02229764833,0,5883.46512859468,0,5532.3994712925,0,0,3042.20747379628,3909.26235317834,0,0,4348.18487397479,3032.69410495659,2573.43924306052,1180.66593250968,1265.80969757497,3007.09171434825,0,0,0,0,6512.56856719044,0,0,8359.72874950579,0,6669.50684450388,3383.1065436267,6656.07141662094,5236.02696085401,0,7447.2961617746,7903.2166744835,5173.88473560545,7906.09044091841,7458.84238648389,7390.09710855454,7084.097218924,5022.34178448087,6625.89570917797,5634.84060833555,4824.18404833755,0,3146.41377561962,7590.02511730131,0,5883.46853596537,0,5532.40167187697,0,0,3042.21016428022,3909.26315432824,0,0,4348.18638944653,3032.70118549961,2573.50509763161,1180.7079540907,1265.89373503922,3007.12091332057],"Archive285_field35":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,2732465.1375,1669839.80625,2319221.953125,2201152.471875,2702947.7671875,3153087.66445312,1905978.76875,3536813.47851562,4072277.02434082,3766708.38191106,4467048.82294566,5144221.38575526,5093854.7625,4984869.16245088,2466808.8046875,3204743.0625,2540602.23046875,5566132.6875,4572258.27409405,6628758.01875,4503507.35625,4267368.39375,3529434.1359375,6392619.05625,3795090.46875,3440882.025,4872973.52761088,5939681.20965504,5710759.45846776,6097445.353125,5654892.68035307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive290.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive290.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive290.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive290_field1":[0,0,0,0,334.964750980401,0,0,266.088912398271,0,244.764602077022,598.024392746154,272.93219812446,89.5119643356054,0,1134.01735695011,474.708476884719,332.496677918585,237.500133542671,298.00921299729,-640.79354537331,348.506793313001,389.743597162698,251.842741729071,187.698984866754,380.65779597163,0,-159.800835576594,6.15840799699086,0,-20.0372942086292,0,463.536566023751,0,0,-66.3174451691398,17.7064386047616,0,0,253.567062794122,379.3494199739,412.790474083504,-254.537053722072,406.286653348269,-75.5347515173114,0,0,0,0,333.819653837081,0,0,267.782923990435,0,237.898072033119,602.746721206881,277.807956594098,82.569251311211,0,1129.09772775941,471.728239491033,329.532800698701,241.011969335226,295.659282890353,-637.056477334505,354.023341847269,396.602955555587,246.843864186222,182.402911746384,379.378833429825,0,-162.627794159097,10.0829034304001,0,-15.7916719454645,0,469.59013598509,0,0,-68.5667724344832,14.1542434876043,0,0,257.759811537163,384.479352666431,412.256791738449,-255.22649373265,406.297378972406,-76.2445780274026,0,0,0,0,330.384035555751,0,0,272.864178077324,0,217.298752118646,616.913548019527,292.431608345174,61.7434024421006,0,1114.33939798464,462.787496535639,320.636823601038,251.547220844903,288.609753322076,-625.846391644305,370.571746685874,417.174574319764,231.848465468698,166.514003940446,375.540027355761,0,-171.10611924958,21.8572106095368,0,-3.05408134035091,0,487.744590261624,0,0,-75.3079686576522,3.50017307269624,0,0,270.330284801774,399.845981115301,410.641281098356,-257.283827392582,406.315409335992,-78.3753112773672],"Archive290_field2":[0,0,0,0,6208.38290473681,0,0,8189.29703932423,0,6471.86450207097,3014.26407660749,6388.38847857792,4979.1872832346,0,6989.10972451035,7608.97135512048,5058.20470350811,7607.79260627657,7180.19646267667,7033.14603276617,6802.77501022846,4770.84188501772,6346.70732723283,5337.22917986414,4497.54973534638,0,2908.3251453408,7326.53609862255,0,5693.77448177591,0,5223.11295788146,0,0,2847.9304929951,3720.54510396475,0,0,4141.05364317789,2744.87373361768,2017.81065961468,924.561045044908,947.440589801715,2531.38202524727,0,0,0,0,6212.14258738879,0,0,8188.70918610753,0,6472.58664410444,3019.07771139699,6389.18251544718,4981.76759029746,0,6989.57226033611,7610.2108845675,5058.20132920062,7608.49263757533,7181.1340112558,7031.95893833415,6802.63668856566,4770.78196114109,6349.64740943645,5342.77593519493,4505.99219173644,0,2909.41963331594,7326.9996854671,0,5693.61757258443,0,5226.11995388775,0,0,2848.46951570988,3720.94554339356,0,0,4141.72448291324,2745.32154211996,2022.72655619485,925.057073337018,947.466984519551,2535.28607884444,0,0,0,0,6223.41346694138,0,0,8186.94656026785,0,6474.74959428298,3033.50321750478,6391.56142639036,4989.50011148893,0,6990.95975796507,7613.92914332041,5058.1888412203,7610.5909401298,7183.94380989898,7028.39908671596,6802.21734536019,4770.59708688708,6358.46261315771,5359.40530287357,4531.28282696742,0,2912.67998274146,7328.38890321912,0,5693.14485671938,0,5235.13140732784,0,0,2850.07970943903,3722.14247376135,0,0,4143.73303700488,2746.65396670183,2037.36777192637,926.499658720153,947.479535894207,2546.93218130763],"Archive290_field3":[0,0,0,0,-12984.4277940373,0,0,-16735.8795384973,0,-8215.16254444975,-2964.11460354442,-7236.70351569857,-5316.82713208455,0,-10013.6311056108,-15788.6445295705,-2296.71160652243,-15038.6421854674,-15187.2178605178,-6875.36453048584,-12814.3512517002,-4656.0672196069,-11913.7722536516,-8075.19164509982,-6379.97600904075,0,-1538.32853155384,-10571.5884615639,0,-3549.85087403079,0,-8988.54891110156,0,0,-966.65406877327,-1634.07495655893,0,0,-2029.30934732281,-1886.65114148143,-1489.24196357043,-178.928644428035,-3.23812386360921,-1539.58837420607,0,0,0,0,-12985.2616347154,0,0,-16736.3304708017,0,-8215.59051113851,-2965.96840291353,-7237.19382435946,-5317.64062742804,0,-10013.7069143449,-15788.9062495989,-2297.16645378046,-15039.0524492817,-15187.6977530008,-6875.57673274212,-12814.956697354,-4656.84408203725,-11914.47544091,-8076.18268532345,-6381.48739360332,0,-1539.52862573612,-10571.9326671434,0,-3550.35442455575,0,-8989.65741748072,0,0,-967.407686919664,-1634.60578809168,0,0,-2029.8100762575,-1887.59633224346,-1491.23807242233,-179.921925908934,-3.8970148627233,-1541.52298802986,0,0,0,0,-12987.7043593883,0,0,-16737.6797222852,0,-8216.87185868238,-2971.51432078192,-7238.66620228392,-5320.08693554539,0,-10013.9329743959,-15789.6741123484,-2298.53091637105,-15040.2703430977,-15189.1069370476,-6876.21933402343,-12816.7501119009,-4659.1752670933,-11916.5492223731,-8079.14422616984,-6385.99344706359,0,-1543.1358749033,-10572.9549641021,0,-3551.84947380304,0,-8992.93733302948,0,0,-969.690107733703,-1636.21202370772,0,0,-2031.3147405502,-1890.42350295871,-1497.21750324343,-182.895692677108,-5.89711862157114,-1547.33189139818],"Archive290_field4":[0,0,0,0,14396.2350916757,0,0,18633.9757763789,0,10461.0628272335,4269.58973213951,9656.90825845022,7284.84516964875,0,12264.0310675717,17532.9144554523,5565.14807232955,16855.137894306,16801.6551885966,9856.28717687697,14512.2983302689,6677.7087625073,13501.1883912488,9681.42377609839,7815.17420506311,0,3293.98635836051,12862.2179942294,0,6709.76233337209,0,10406.2378718774,0,0,3008.24303957326,4063.61542868628,0,0,4618.51902216962,3352.26644609166,2541.61316088972,975.508942823642,1030.88457226739,2963.77003467243,0,0,0,0,14398.5822499769,0,0,18634.1467058975,0,10461.6872828825,4274.9388772778,9657.9399940044,7287.12068292227,0,12263.9026507752,17533.6076663687,5565.15644612418,16855.8697656825,16802.4481292364,9855.3459032931,14512.9016257346,6678.61147466373,13503.0988720922,9685.20791117206,7821.20676660338,0,3295.65149729432,12862.7674461755,0,6709.88427468817,0,10408.9761817339,0,0,3009.04596457446,4064.18161035797,0,0,4619.57257313738,3353.74934301204,2546.5995704296,976.341667377098,1030.91533776507,2968.12766906774,0,0,0,0,14405.5716067892,0,0,18634.657800082,0,10463.5837167935,4290.99306162966,9661.0487060654,7293.98715464004,0,12263.5282136537,17535.6750038491,5565.18882874679,16858.0574935478,16804.8003201039,9852.53620940728,14514.7017766082,6681.3580476104,13508.8099358569,9696.57277295597,7839.28993442998,0,3300.64392419434,12864.4136410258,0,6710.25650564553,0,10417.1693618332,0,0,3011.46551455201,4065.9004700946,0,0,4622.7525912624,3358.22659181176,2561.4749563181,978.798968045111,1030.94347993002,2981.14780038429],"Archive290_field5":[8869848.20263172,8255603.9036401,2182630.16189799,2771069.35441537,5437717.44492083,8476166.84739837,5193303.44595648,2276048.38855869,5785309.22468871,3737397.14123236,7149392.83675098,4037034.10649464,5293338.7509157,3646153.85291151,2093957.02003033,3012743.62273926,2901901.70809445,3507341.98705617,4116550.95949677,2373017.6154441,4626520.49269484,5347222.12689283,4932482.05147052,5860671.62007693,6742348.75408406,6711105.46945713,6543245.3858903,3211466.55945789,4234476.95557127,3329811.44824611,7314038.71697377,5993385.02070567,8646735.4550477,5954139.39963699,5623322.84899616,4656086.96264655,8335019.25361344,5008029.4518795,4535848.09291942,6409980.80145234,7798763.45045463,7510027.15614558,8025990.37342994,7423934.225908,6621218.17557654,6164061.85020546,1665144.68277923,2095913.57736465,4055464.5146077,6305621.72432143,3888641.92174236,1680215.90691775,4322664.21356869,2787209.17876844,5333511.29298531,3007991.59340141,3949506.83599435,2734942.65749961,1537239.74880653,2240285.62205415,2167928.80507087,2606614.94644995,3066234.16581004,1737884.56659502,3447997.24616798,3989670.93751829,3677531.77397757,4371813.89273593,5027846.02530663,5012898.98145252,4881567.63074509,2389380.0387764,3165659.67015375,2482991.99518354,5458360.69435581,4469817.23533726,6436984.23693,4452729.39366837,4200579.46029255,3479300.51585604,6204013.98600054,3742427.27250625,3388733.49173584,4785640.33627825,5818876.03396277,5606499.9225288,5993306.23818691,5538912.06981324,-124645.557675835,-110548.504251219,112677.023999341,70426.2157592352,-91209.5555022432,-205999.077197286,-25342.1111910014,-107291.408436816,-65251.973709909,-63352.4761888123,-114136.503139083,-79143.2168000803,-81983.1688281483,1310.86822042485,-132895.110869336,-77036.7775011084,-33987.147908875,-95542.6771742827,-84643.2125927389,-167432.8666285,-87541.9353249219,-82987.1063227736,-87297.1969100561,-94762.4937922258,-115652.708840696,-81716.9028713984,-103461.451665159,-76879.3706482348,-40782.6553689641,-57469.6856084693,-108654.477527045,-100857.213030141,-192246.448325869,-51498.1678620163,-67643.7921787503,-51054.2398320508,-188991.275277751,-54366.7722588088,-52606.704741461,-87381.5213085544,-120789.461893893,-104084.180594638,-104749.476411982,-116155.563029201]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive291.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive291.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive291.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive291_field1":[0,0,0,0,334.957248834487,0,0,266.067908921278,0,244.768049914374,597.988433496513,272.921436205717,89.5344855502589,0,1133.86439966911,474.672744563333,332.475102536382,237.499548464745,298.00702899052,-640.708367523593,348.492716347162,389.712494107971,251.85058118585,187.708989964574,380.643389956577,0,-159.776048305664,6.18451722767139,0,-20.0177817986057,0,463.50828115234,0,0,-66.2956815702099,17.7297894032203,0,0,253.539304989443,379.321828817297,412.770203063604,-254.519285050128,406.265206202726,-75.518985776928,0,0,0,0,330.377770770275,0,0,272.842013327513,0,217.304029150704,616.876569606211,292.420230540853,61.7668179352615,0,1114.19049463304,462.752184934815,320.616710248255,251.545587804129,288.607865192671,-625.764473585785,370.556791381531,417.141858411335,231.857963554415,166.525339163065,375.526015972564,0,-171.080963009994,21.8815577620466,0,-3.03640463186111,0,487.715175389731,0,0,-75.2863291134038,3.52327740716495,0,0,270.301236273082,399.817198876732,410.621115150579,-257.265922793064,406.293953915999,-78.3593671271917],"Archive291_field2":[0,0,0,0,6207.87103456354,0,0,8188.2185747715,0,6471.26025137336,3014.08650516177,6387.74146938873,4978.82199853052,0,6988.32770285063,7608.11266656816,5057.7035837169,7606.94606097309,7179.48831628906,7032.24709516125,6802.13003755242,4770.46696914333,6346.16720135911,5336.83774811104,4497.25213863375,0,2908.15507024916,7325.66370976675,0,5693.11257457574,0,5222.72312220592,0,0,2847.7566817717,3720.28300678717,0,0,4140.69404959894,2744.70555527012,2017.69938140457,924.516134964122,947.396127311398,2531.23922799914,0,0,0,0,6222.90087027933,0,0,8185.86364137146,0,6474.1434760443,3033.3246267726,6390.91352789746,4989.13492998374,0,6990.17581312479,7613.06631239934,5057.68770186511,7609.74172305333,7183.23463469599,7027.49816396352,6801.57281474548,4770.22233682519,6357.92121051659,5359.01368569066,4530.98372809328,0,2912.51012043098,7327.51391767574,0,5692.48290141629,0,5234.74068430368,0,0,2849.90608813321,3721.88034873831,0,0,4143.37286688229,2746.48558705313,2037.25537930477,926.454567004783,947.435070247232,2546.78857847935],"Archive291_field3":[0,0,0,0,-12983.8517168849,0,0,-16732.3026568687,0,-8214.60392735331,-2963.95429136665,-7236.19560271237,-5316.78316246568,0,-10011.5463120302,-15786.6951708537,-2296.42494212209,-15037.4457355648,-15186.4111748751,-6873.78759410695,-12813.7171100069,-4655.79738773627,-11913.3649198214,-8074.94265525751,-6379.65460672323,0,-1538.28201681183,-10570.38715571,0,-3549.46527948944,0,-8988.05471231219,0,0,-966.668236907607,-1634.10454194254,0,0,-2029.1582947092,-1886.53985149828,-1489.15816709793,-178.914880534663,-3.23761762078804,-1539.50842076503,0,0,0,0,-12987.1277198462,0,0,-16734.1023299613,0,-8216.31282966108,-2971.35341936614,-7238.15781013161,-5320.04252415153,0,-10011.8479860032,-15787.7243801976,-2298.24397499248,-15039.0733939149,-15188.2997626345,-6874.64250168264,-12816.1154310659,-4658.9049817785,-11916.1413784082,-8078.89469948355,-6385.67143388869,0,-1543.08894991933,-10571.7531562288,0,-3551.46341012742,0,-8992.44255434357,0,0,-969.703974862014,-1636.24134197379,0,0,-2031.16332209726,-1890.31186258717,-1497.13315189302,-182.881678179811,-5.89642231779822,-1547.251367043],"Archive291_field4":[0,0,0,0,14395.4945919331,0,0,18630.2889875988,0,10460.2503948305,4269.34803787472,9656.09931550018,7284.56368726588,0,12261.8690303392,17530.7854067946,5564.57300692064,16853.6882806148,16800.6233528828,9854.54018757431,14511.4357110661,6677.25094985977,13500.5751942531,9681.00050099542,7814.73986066385,0,3293.81327058392,12860.7337138456,0,6708.99659179237,0,10405.6140736354,0,0,3008.08256472728,4063.38745999184,0,0,4618.12870939581,3352.06298363249,2541.47242379137,975.459217367983,1030.83525453073,2963.60613513012,0,0,0,0,14404.8301317419,0,0,18630.9684962693,0,10462.769772118,4290.75006686396,9660.23880639923,7293.70515911922,0,12261.3652768181,17533.543833656,5564.61367329999,16856.6062071189,16803.7675536348,9850.78784396731,14513.8389074817,6680.89994701502,13508.1954969794,9696.14861361698,7838.85406130898,0,3300.47078533964,12862.9274977563,0,6709.49052880648,0,10416.5444950511,0,0,3011.30512259939,4065.67232730237,0,0,4622.36150829642,3358.02260418925,2561.33302309771,978.748960647444,1030.89415417841,2980.98289943198],"Archive291_field5":[8869845.17393968,8255602.70012943,2182638.55262596,2771081.86390568,5437707.69437971,8476167.49314597,5193307.31416042,2276063.47674003,5785308.61735983,3737404.77210403,7149396.89587244,4037045.04175255,5293342.60037768,3646157.50904349,2093967.98058055,3012744.4082352,2901909.38385125,3507347.96804837,4116546.1161401,2373026.31190426,4626522.55498141,5347227.99734983,4932484.31711128,5860677.21432766,6742351.08125347,6711107.76722943,6543248.08675045,3211477.60736808,4234477.93694027,3329822.5187821,7314037.68009033,5993384.64709753,8646734.03781012,5954142.16811162,5623325.13071208,4656090.49978215,8335020.19020026,5008030.53615144,4535852.60704179,6409984.183297,7798767.13042852,7510030.15620539,8025993.37431591,7423937.7290073,-124645.329663063,-110547.713923058,112684.222767344,70436.3032774889,-91208.6453770668,-205996.54811921,-25338.3656150586,-107277.462254979,-65250.1932641173,-63344.5246388886,-114132.834627195,-79133.2085765369,-81978.4384511894,1314.69740312262,-132882.030125895,-77029.3758410024,-33979.0822742742,-95533.3920369396,-84638.5210806369,-167413.428751317,-87535.8989018409,-82981.8082382199,-87291.9108871335,-94757.2267096919,-115649.20249497,-81714.1424579983,-103458.241802483,-76868.1543530648,-40780.4004676464,-57459.0468302499,-108653.110601902,-100853.998198609,-192244.956892338,-51495.1144984601,-67640.6713116097,-51050.0605025585,-188988.986926085,-54364.0626394063,-52601.8017876934,-87378.1973930933,-120786.193447033,-104081.496232936,-104746.871559474,-116152.220367453]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive292.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive292.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive292.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive292_field1":[0,0,0,0,385.990591313331,0,0,282.091237885842,0,100.812802283929,680.058684338848,373.843329451242,37.2913341522603,0,934.228442915373,455.685956357882,282.739056710937,294.348035239589,261.760915020439,-574.298337387657,436.534670167035,528.482164628683,238.972331832558,137.479614372578,351.852564185546,0,-288.299265085187,137.460129446808,0,193.034813090108,0,548.695629615639,0,0,-79.383682192908,-80.87033821185,0,0,259.473468361195,564.492465579918,365.488402753382,-408.557500507937,520.951736451643,-146.15391248504],"Archive292_field2":[0,0,0,0,5965.34276065932,0,0,7916.94414451568,0,6208.22142682197,3109.76404218389,5849.21762099959,4618.54358869215,0,7268.97621225414,7471.15625159066,3531.6636518669,7414.77993432183,6960.53513478038,7235.5330165751,6473.69250200484,4515.54623024791,6074.37059116712,5129.87028135797,4414.54691631823,0,2821.14762921868,7163.16806559601,0,4530.66685591531,0,5069.88644814175,0,0,2331.67427348506,2966.15734905871,0,0,3337.04243932143,2529.97221952273,2276.6240399569,1044.65819816935,962.171930332716,2769.926621101],"Archive292_field3":[0,0,0,0,5977.81757740507,0,0,7921.96819318742,0,6209.03990207469,3183.25497128405,5861.15224275801,4618.69413625239,0,7328.76510456357,7485.04010854345,3542.96338170572,7420.6200711444,6965.45534327401,7258.28882135966,6488.39403310029,4546.36680832472,6079.06948917493,5131.71216534284,4428.54656781418,0,2835.84033614285,7164.48686391161,0,4534.77723800787,0,5099.49168947364,0,0,2333.02522203052,2967.25958267515,0,0,3347.11498497075,2592.18270483646,2305.77509567973,1121.70851036431,1094.15059988658,2773.7798132546],"Archive292_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive292_field5":[-848.387219282392,-786.078640827176,-209.680522778058,-271.518640078395,-534.546785995521,-803.910784578856,-505.709661313937,-249.681711188349,-560.871012373035,-380.174330692609,-682.452041796195,-411.711784187569,-519.868945688415,-363.785152804549,-232.762029290034,-308.496569242729,-292.385716477089,-361.381608442702,-419.187319833781,-265.126897347057,-463.593685491867,-524.455679901302,-489.699636883486,-571.946149756811,-648.774045224424,-644.244704779917,-630.266942149168,-325.974348495591,-421.90785941144,-337.866697871257,-697.243832897703,-583.569234270042,-823.772545128322,-575.254861954974,-546.798756153428,-461.084431116252,-792.674681801592,-490.777319339058,-450.152997871468,-616.590023303529,-736.177997154438,-713.830381123776,-760.34545291028,-704.762687450671],"Archive292_field6":[98.0687516291533,90.8662332908186,24.2378794050972,31.3860151017556,61.7905772252184,92.9275279883956,58.4571691377071,28.8617899519793,64.8335085185842,43.9459967867138,78.8875860745874,47.5915475723907,60.0939021188354,42.051500760395,26.9059706703857,35.6604540236961,33.7981308032404,41.7736646618609,48.4556771018329,30.6471658874461,53.5888011582747,60.6241025840109,56.6065011010355,66.1137315967525,74.9946006475343,74.4710345765226,72.8552844796203,37.6807861946921,48.7701560497411,39.0554743449872,80.5974332466266,67.4572942558609,95.2234348785193,66.496199964261,63.2068354986515,53.2987455815951,91.628698223521,56.7310750817232,52.0351338869964,71.2743102182924,85.0980018520942,82.5147441647985,87.891622691919,81.4665701960427],"Archive292_field7":[946.455970911545,876.944874117995,233.918402183155,302.904655180151,596.337363220739,896.838312567251,564.166830451645,278.543501140329,625.704520891619,424.120327479323,761.339627870782,459.30333175996,579.962847807251,405.836653564944,259.66799996042,344.157023266426,326.183847280329,403.155273104563,467.642996935614,295.774063234503,517.182486650142,585.079782485313,546.306137984521,638.059881353564,723.768645871958,718.715739356439,703.122226628788,363.655134690283,470.678015461181,376.922172216244,777.84126614433,651.026528525903,918.995980006842,641.751061919235,610.005591652079,514.383176697847,884.303380025113,547.508394420782,502.188131758465,687.864333521822,821.275999006532,796.345125288574,848.237075602199,786.229257646713],"Archive292_field8":[0,0,0,0,309.631127691316,0,0,249.90054774067,0,56.2848549076316,557.522749019488,337.977087086154,-3.51011625816531,0,819.967114247406,393.542115362656,218.074406696186,253.740085209068,207.711690952823,-509.401980396569,373.212750622566,452.900072189233,173.036084816563,88.1182469799678,278.61883447479,0,-256.705727439076,119.608641883212,0,191.970295147521,0,455.077625174943,0,0,-89.0755735130796,-102.305633901325,0,0,239.515563221296,466.741523773208,295.128732014804,-335.70578513514,426.355527796006,-133.814082887517],"Archive292_field9":[0,0,0,0,4899.83437157367,0,0,6828.52335774505,0,5190.08811640039,2477.60364590729,4905.25188890203,3754.59741490537,0,6244.21206173233,6390.82783037986,2983.97990915253,6327.14574888769,5867.12811122401,6235.70836607,5404.41924247917,3683.30074321811,5021.15319279112,4156.00628451083,3528.56453867856,0,2235.17724919653,6121.58141618241,0,3826.18698995656,0,4113.93731060609,0,0,1864.97707772578,2412.89620412912,0,0,2760.89825995746,2025.62504030881,1793.61866592918,824.981408696623,774.174758634843,2174.24568377446],"Archive292_field10":[0,0,0,0,4909.60775460628,0,0,6833.09457940038,0,5190.39330310262,2539.55733187643,4916.88159354811,3754.59905568227,0,6297.81949092943,6402.93337105126,2991.93792467054,6332.23162546266,5870.80372862809,6256.48057651483,5417.29038410406,3711.04066811186,5024.13384297484,4156.94034866323,3539.54745109371,0,2249.87003309653,6122.74981214838,0,3830.99980113963,0,4139.03078516357,0,0,1867.1030925579,2415.06408499416,0,0,2771.26810447156,2078.7025891022,1817.7372987399,890.669803500863,883.813098448721,2178.35958973511],"Archive292_field11":[8514100.22944695,7888794.39024443,2104276.14480716,2724860.60992995,5364513.76194023,8067751.1870431,5075115.04837199,2505713.27125313,5628693.9579012,3815288.91832867,6848836.18421115,4131787.13274629,5217212.38741903,3650813.19303992,2335913.60400395,3095957.42518941,2934274.86784897,3626692.11113583,4206808.84254349,2660715.44482305,4652454.69793275,5263243.1548879,4914444.36689702,5739839.93888395,6510856.27147558,6465401.48663048,6325125.83264045,3271357.95099281,4234111.17114523,3390705.16915773,6997281.12674318,5856484.91451746,8267076.46706615,5773044.9502812,5487470.00121603,4627272.74944319,7954989.81692851,4925259.58927863,4517568.93002885,6187869.3355656,7388009.99358299,7163737.5877172,7630545.63758999,7072737.56906058],"Archive292_field12":[-801.035133509715,-740.720794776814,-212.481833891835,-273.753075430134,-519.157668381312,-747.357709407248,-493.138157535125,-258.600848408896,-541.680029613316,-380.798991428032,-646.821971442377,-411.738265105423,-505.648235657455,-364.15424882165,-241.070409403842,-309.284868187662,-292.637372692058,-362.907706959792,-418.131697224375,-273.343749534741,-457.128565259438,-509.535085293695,-479.661098024158,-552.181502762776,-618.22841169998,-615.650094107293,-602.204597239467,-325.350890864604,-418.371832558567,-338.151279664597,-660.736773954836,-562.001517020411,-770.009158824041,-554.872180101623,-528.940751132256,-453.860542607549,-740.07969137354,-479.145241593941,-443.658108685087,-589.695211696585,-691.52112765392,-675.106498048869,-716.263876663159,-665.118084047944],"Archive292_field13":[92.5951190316574,85.6231234965565,24.5616950845524,31.6443031576818,60.0116824955497,86.3903131921138,57.0039745896655,29.8927916372333,62.615139737199,44.0182040254868,74.7689519878865,47.5946086163302,58.450068680142,42.0941661669519,27.8663722974997,35.7515769115509,33.8272208346326,41.9500729964427,48.333653114268,31.5969874053244,52.8414699209383,58.8993664570684,55.4461029340903,63.8290504829381,71.46369862617,71.1656597332313,69.611436540222,37.6087180279695,48.3614113971735,39.0883703865292,76.3774242521403,64.9641884451075,89.0086922959088,64.1400775253785,61.1425513849718,52.4637050342424,85.5490155786208,55.3864728560063,51.2843615273928,68.1654225080022,79.9359209719907,78.038482871516,82.7960424496128,76.8838788539608],"Archive292_field14":[893.630252541373,826.343918273371,237.043528976387,305.397378587816,579.169350876861,833.748022599362,550.142132124791,288.493640046129,604.295169350515,424.817195453519,721.590923430263,459.332873721753,564.098304337597,406.248414988602,268.936781701342,345.036445099213,326.46459352669,404.857779956235,466.465350338643,304.940736940065,509.970035180376,568.434451750764,535.107200958249,616.010553245714,689.69211032615,686.815753840524,671.816033779689,362.959608892574,466.73324395574,377.239650051126,737.114198206976,626.965705465518,859.01785111995,619.012257627002,590.083302517228,506.324247641792,825.628706952161,534.531714449948,494.94247021248,657.860634204587,771.45704862591,753.144980920385,799.059919112772,742.001962901905],"Archive292_field15":[0,0,0,0,248.963030008391,0,0,220.961721124714,0,23.0521848244512,454.785525296742,306.527814684327,-32.0370601124962,0,732.258003745377,344.164242381692,167.861249750286,221.443653336786,165.677446400573,-463.648828998055,322.126497046997,391.043612632135,122.270775658704,50.7631090711095,220.905690852094,0,-228.191261935465,104.317968694249,0,187.099295812742,0,379.751799718618,0,0,-93.0284483928496,-114.911537024726,0,0,220.459079009,388.039554196684,236.008454372177,-272.096488581523,345.666636195508,-119.224967862626],"Archive292_field16":[0,0,0,0,4045.53107259341,0,0,5955.87409818088,0,4367.72957999597,1968.37421138693,4142.94105611098,3064.98568417501,0,5412.6457392124,5519.63238348236,2539.28342918999,5447.52704849184,4984.53520445113,5416.04165722911,4543.95881976145,3016.11681694252,4173.60035191165,3379.6430701765,2823.34198575052,0,1772.77602826082,5276.3551632677,0,3253.09623808605,0,3348.67312048721,0,0,1495.88524831373,1972.86475490859,0,0,2293.66465133805,1624.0406758978,1402.2116597061,644.895258412425,614.215864813395,1698.06265302885],"Archive292_field17":[0,0,0,0,4053.18445788367,0,0,5959.97150627286,0,4367.79041246222,2020.22942015816,4154.26526543324,3065.15311484083,0,5461.95346760327,5530.3517677017,2544.82567829834,5452.02606703722,4987.28786222115,5435.85112650009,4555.3624702967,3041.36084022003,4175.39100445183,3380.02428616047,2831.97092018131,0,1787.40205281294,5277.38628939878,0,3258.47223108364,0,3370.136955268,0,0,1498.77515603009,1976.20849165818,0,0,2304.23517426394,1669.75531518596,1421.9344320857,699.94742189769,704.802491459263,1702.24303980754],"Archive292_field18":[8038892.21690411,7433599.82968604,2132389.06665992,2747284.57637891,5210074.27153754,7500205.44925866,4948952.08790423,2595222.43231777,5436100.35558828,3821557.7823449,6491265.98126626,4132052.88543993,5074498.60321102,3654517.30410202,2419293.43272548,3103868.50173015,2936800.39650959,3642007.4711969,4196215.00461585,2743176.73314333,4587573.14337457,5113505.58802597,4813701.30516418,5541489.2545712,6204311.59530867,6178436.55392597,6043502.52219431,3265101.16088755,4198624.91397973,3393561.12674042,6630909.79080437,5640039.28425554,7727527.01456931,5568491.89679325,5308253.6702854,4554776.4772086,7427165.95313904,4808524.36089741,4452388.62526332,5917962.95735859,6939850.17431751,6775119.02501418,7188159.2485571,6674878.99781407],"Archive292_field19":[-754.286255972307,-700.974827605001,-214.767093305172,-275.655926755935,-505.147843177834,-699.995007685557,-482.013370963661,-265.375195161835,-524.777576329887,-380.857427649426,-616.00064207593,-410.867751925995,-492.881021305286,-364.274958443358,-247.54511367839,-310.137873254533,-293.001757533748,-363.835846057276,-416.35398245958,-279.233407437419,-450.786044323792,-496.183419930518,-470.388684075499,-534.284557970125,-591.365439894533,-590.482286620643,-577.591151799745,-325.214590603783,-415.221646363496,-338.327420760257,-629.074420374577,-542.67668062439,-721.995703971595,-536.878907234612,-513.168057130718,-447.279101334904,-695.735230801896,-469.05724711812,-437.729659523362,-566.218774847863,-653.588561457762,-641.574019301162,-678.006568880946,-631.164834902859],"Archive292_field20":[87.1912138855666,81.0287150775682,24.825858113793,31.8642619805116,58.392226147056,80.9154534511113,55.7180123469444,30.6758677068207,60.6613119857885,44.0249589213077,71.2061810905655,47.4939822291771,56.9742510996296,42.1081195147175,28.6148113957572,35.8501794601751,33.8693416560276,42.0573606129458,48.128159368283,32.2777984605958,52.1083104670905,57.3559896539094,54.3742644623805,61.7602651524899,68.3584914163801,68.2564039059849,66.7662618219989,37.5929624907318,47.9972677366746,39.1087312983503,72.7174357248693,62.7303469424049,83.4586091831942,62.0601572157785,59.3193174000613,51.7029277442746,80.4230473991286,54.2203579002407,50.5990664225479,65.4516795353037,75.5511314225984,74.1623184797417,78.3737146143733,72.9590757902978],"Archive292_field21":[841.477469857873,782.003542682569,239.592951418965,307.520188736447,563.54006932489,780.910461136669,537.731383310605,296.051062868656,585.438888315676,424.882386570734,687.206823166495,458.361734155172,549.855272404915,406.383077958075,276.159925074148,345.988052714708,326.871099189776,405.893206670222,464.482141827863,311.511205898014,502.894354790882,553.539409584428,524.76294853788,596.044823122615,659.723931310914,658.738690526628,644.357413621744,362.807553094515,463.218914100171,377.436152058607,701.791856099446,605.407027566795,805.454313154789,598.939064450391,572.48737453078,498.982029079179,776.158278201024,523.277605018361,488.32872594591,631.670454383167,729.13969288036,715.736337780903,756.38028349532,704.123910693157]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive293.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive293.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive293.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive293_field1":[0,0,0,0,385.99059131333,0,0,282.091237885836,0,100.812802283925,680.058684338846,373.843329451241,37.2913341522592,0,934.228442915369,455.685956357877,282.739056710935,294.348035239586,261.760915020438,-574.298337387658,436.534670167037,528.482164628681,238.972331832557,137.479614372577,351.852564185544,0,-288.299265085187,137.460129446805,0,193.034813090107,0,548.695629615636,0,0,-79.3836821929082,-80.8703382118516,0,0,259.473468361194,564.492465579918,365.48840275338,-408.557500507936,520.951736451642,-146.15391248504],"Archive293_field2":[0,0,0,0,5965.34276065931,0,0,7916.94414451568,0,6208.22142682196,3109.76404218389,5849.21762099958,4618.54358869214,0,7268.97621225413,7471.15625159066,3531.6636518669,7414.77993432182,6960.53513478038,7235.53301657509,6473.69250200483,4515.5462302479,6074.37059116711,5129.87028135796,4414.54691631822,0,2821.14762921867,7163.168065596,0,4530.66685591531,0,5069.88644814175,0,0,2331.67427348505,2966.15734905871,0,0,3337.04243932143,2529.97221952273,2276.6240399569,1044.65819816934,962.171930332715,2769.926621101],"Archive293_field3":[0,0,0,0,5977.81757740506,0,0,7921.96819318741,0,6209.03990207469,3183.25497128404,5861.152242758,4618.69413625238,0,7328.76510456356,7485.04010854344,3542.96338170572,7420.62007114439,6965.45534327401,7258.28882135965,6488.39403310029,4546.36680832472,6079.06948917491,5131.71216534283,4428.54656781417,0,2835.84033614285,7164.4868639116,0,4534.77723800786,0,5099.49168947364,0,0,2333.02522203052,2967.25958267515,0,0,3347.11498497074,2592.18270483646,2305.77509567973,1121.70851036431,1094.15059988658,2773.77981325459],"Archive293_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive293_field5":[-892.48649706958,-741.017319559402,-190.161766851501,-240.838430914156,-470.793271414291,-793.67206434359,-444.010274328312,-222.778228907314,-495.120414892491,-330.25364406224,-610.622906985656,-357.188564096691,-457.223591969458,-316.593280397682,-208.893889335581,-271.034243433177,-257.83524246167,-314.753892265651,-364.160058722907,-235.463642777751,-405.169756222068,-461.450542535112,-429.234573881205,-505.386367338056,-577.037683713032,-572.696577142747,-559.537655961672,-285.361059544543,-366.586997819851,-295.290281851125,-624.515011768192,-516.127060083709,-838.689726277367,-508.405849552623,-482.122171356783,-402.764519088469,-762.745376265874,-430.248386588708,-392.748869233969,-546.839407604643,-672.082428832512,-642.808101978136,-702.53805678372,-633.957002141238],"Archive293_field6":[103.166378069112,85.6574000799309,21.9816219043174,27.8395568995644,54.4210324644655,91.7439899895535,51.3250698787362,25.7518999609327,57.2331122994592,38.1754484957442,70.5845454094652,41.2889725128127,52.8524544697519,36.5963879194704,24.1469490398818,31.3300215964196,29.8042919312291,36.3837650819619,42.0948377585912,27.2182618696201,46.8353262372293,53.3410659855201,49.6170826951011,58.4197981873871,66.7022840497071,66.2004767471442,64.6793800784485,32.9861202963158,42.3753781558389,34.1338820896612,72.1903939448511,59.6613613619118,96.9477764290086,58.7688332089183,55.7305890554187,46.5572944638798,88.1690402226637,49.734273695096,45.3995421360967,63.2115345758911,77.6889176185892,74.3049714391302,81.2094155060789,73.2818344896087],"Archive293_field7":[995.652875138691,826.674719639333,212.143388755818,268.67798781372,525.214303878757,885.416054333144,495.335344207048,248.530128868247,552.353527191951,368.429092557984,681.207452395121,398.477536609504,510.07604643921,353.189668317153,233.040838375463,302.364265029596,287.639534392899,351.137657347613,406.254896481498,262.681904647371,452.005082459298,514.791608520632,478.851656576306,563.806165525443,643.739967762739,638.897053889891,624.21703604012,318.347179840859,408.96237597569,329.424163940787,696.705405713044,575.78842144562,935.637502706375,567.174682761541,537.852760412202,449.321813552349,850.914416488538,479.982660283804,438.148411370066,610.050942180534,749.771346451101,717.113073417266,783.747472289799,707.238836630847],"Archive293_field8":[8.2220062084307,124.114570776122,18.020395488156,28.1490061406084,74.1077320019972,121.807621650552,68.755637639218,24.5393616260105,78.968120869939,46.0201660204867,101.956810569375,51.4035448120722,71.3961704179945,43.2899138403156,21.7643354134636,34.1841614720952,31.5461131599464,42.922281096025,52.7969052744213,27.0747615809519,60.9932285773142,72.2408446481654,65.8027384158207,81.0187073849619,95.3060897682436,94.4429265282661,91.8235195665987,37.0476223087939,53.2819656708615,39.0321475958976,104.684617463672,83.1636595198029,95.4478986501555,81.621761970999,76.3713215053792,60.5125175045414,125.161566033202,66.0053508552773,58.5107762039249,89.2926332639165,113.764555618792,108.23889534791,119.065201426946,106.525746112877],"Archive293_field9":[0,0,0,0,272.636831596599,0,0,183.750527154527,0,59.2448204758787,513.301435375284,247.737126290197,49.1497020587157,0,604.665901241041,294.615981217843,170.327478403495,192.652341903363,172.64775850404,-377.0995202368,291.062625800445,341.087191208027,170.291352643094,130.752354321841,274.334158697823,0,-150.408083336722,91.606243352073,0,134.834617323317,0,371.07277791529,0,0,-31.7470239894182,-43.4974093172022,0,0,162.954712700562,353.179642337578,307.699637592239,-287.177617016754,438.743069281831,-69.3978375799287],"Archive293_field10":[0,0,0,0,3885.77555365626,0,0,5159.83588213352,0,4013.20962117644,2285.33400959367,3795.24058507924,3011.98878927811,0,4738.86498343884,4852.55498653611,2275.43203413528,4810.86761378602,4510.20162126734,4718.28533527263,4197.43482236808,2976.87611400606,3943.26117864484,3364.28724157447,3004.12450293472,0,1883.27566195175,4651.97701444204,0,2930.22488861963,0,3373.43983849048,0,0,1527.58084636406,1923.47118854407,0,0,2174.91449908591,1740.77865150269,1766.17190236975,753.63525319339,868.924940969896,1975.09457929144],"Archive293_field11":[0,0,0,0,3895.32829108608,0,0,5163.10667977935,0,4013.64689680798,2342.27024464809,3803.31760209099,3012.38977556848,0,4777.28606882469,4861.4903552044,2281.79806115009,4814.72347307881,4513.50483693095,4733.33080961088,4207.51429470727,2996.35309503836,3946.93651681814,3366.82711495281,3016.62448106509,0,1889.27229652923,4652.87887728857,0,2933.32546300519,0,3393.78716928809,0,0,1527.91070279337,1923.9629512484,0,0,2181.01061820557,1776.2449643248,1792.77501535881,806.496793900191,973.409489311861,1976.31340050286],"Archive293_field12":[8956664.26458639,7436575.64268992,1908393.13226793,2416965.38243503,4724707.07840341,7964999.17908846,4455922.82935744,2235719.87736911,4968845.28930753,3314303.37796034,6127985.56403246,3584612.26950568,4588526.79627645,3177213.02255739,2096381.78263284,2719999.38442529,2587539.09430561,3158753.60383794,3654575.61012136,2363025.99736968,4066133.76063488,4630946.90818165,4307639.36667944,5071870.58964881,5790936.68980102,5747370.95047107,5615312.88629863,2863778.00999701,3678931.47293083,2963424.01125361,6267401.58755123,5179660.20798787,8416779.77772093,5102172.99594579,4838399.72653327,4041995.69069981,7654630.38041509,4317813.61590123,3941482.3345505,5487877.96413938,6744770.58526442,6450984.27245484,7050411.99880041,6362157.90939867],"Archive293_field13":[-880.272314800337,-627.959693834964,-175.568135089128,-216.804298333498,-404.568690333817,-673.309543159723,-382.068182124692,-205.392764132115,-423.80116106787,-289.724922236703,-517.79776190996,-312.349117723096,-393.047404143229,-278.119877323162,-193.674326376956,-240.688858582831,-229.604978085821,-277.340659410501,-317.956478931314,-215.515861488836,-351.314977439165,-396.445152032113,-370.555178421382,-433.009991429993,-490.676775355707,-487.398184449648,-476.171240224882,-251.679167243642,-318.312493753677,-260.534264264915,-528.604229947419,-441.518253941077,-743.414410658822,-434.885235501361,-413.07108237855,-348.51230159554,-643.325840557211,-370.214715801357,-340.08438038456,-465.431453623274,-566.582962369579,-543.737818373998,-594.866705559104,-535.734734949123],"Archive293_field14":[101.754487861326,72.5885796581311,20.2946808281871,25.0613474627599,46.7658464289908,77.8307650762603,44.1649152728651,23.74223882007,48.9890109849446,33.4905580775251,59.8544850190357,36.1057867815138,45.4340510787157,32.1490806938443,22.3876538669109,27.8222671862379,26.5410334537591,32.0590075218245,36.7539659397157,24.9124114698109,40.6100192023462,45.8268114671799,42.8340773311521,50.0534995546121,56.719452767399,56.34046625045,55.0426951623092,29.0926845450666,36.79511923434,30.1162835464352,61.1036514443036,51.0370064533852,85.9344902179227,50.2702671353809,47.7486747351433,40.2860457678596,74.3648190829492,42.7947217829267,39.3118258677899,53.8012367328975,65.4937775476285,62.8530084489028,68.7632178726991,61.9278973877939],"Archive293_field15":[982.026802661663,700.548273493095,195.862815917315,241.865645796258,451.334536762808,751.140308235983,426.233097397557,229.135002952185,472.790172052814,323.215480314228,577.652246928996,348.45490450461,438.481455221945,310.268958017007,216.061980243867,268.511125769069,256.14601153958,309.399666932325,354.71044487103,240.428272958647,391.924996641511,442.271963499293,413.389255752534,483.063490984606,547.396228123106,543.738650700098,531.213935387191,280.771851788708,355.107612988018,290.650547811351,589.707881391722,492.555260394463,829.348900876745,485.155502636742,460.819757113694,388.7983473634,717.690659640161,413.009437584283,379.39620625235,519.232690356171,632.076739917207,606.590826822901,663.629923431803,597.662632336917],"Archive293_field16":[32.9941435312364,105.357718829986,15.10360470938,23.3453679461889,60.873099570611,113.989426782851,56.3761026569561,21.0645747634042,64.7168528031014,37.9198151615364,83.4972517191577,42.4416462640775,58.5704420410446,35.6003475128868,18.7224415087568,28.1191115185307,25.9038058620617,35.4446073959466,43.5623720264367,23.0878514832869,50.2296160924446,59.2495223300487,54.0750655204381,66.5572605074081,78.0804156093311,77.4254179984018,75.1823140333879,30.3157150302707,43.6335275796887,32.0855593284232,85.6545731600572,68.2576204311202,124.317829662514,66.9320278699869,62.5723793443262,49.6694566555717,108.338650254423,54.0070190547821,47.9850004115479,73.0363340636081,93.2264531988135,88.6740978400526,98.844000609347,87.077564098075],"Archive293_field17":[0,0,0,0,187.746339251198,0,0,119.037313334489,0,32.5144987799963,372.29506157725,165.117760577193,39.0196593346952,0,386.060880116915,188.948947642604,95.6159299865944,125.971586785301,112.45225420612,-242.323253917843,193.754214736628,223.603280272085,114.884220532331,100.127769422512,204.373040876971,0,-86.2062876125993,61.909922368377,0,95.4733421982098,0,253.835226269161,0,0,-17.3281188491489,-28.5511993791713,0,0,106.957451223932,225.56087666084,222.881497695049,-171.882906483266,354.550948303477,-30.2168755712903],"Archive293_field18":[0,0,0,0,2411.78321202659,0,0,3268.41630889555,0,2488.61081385908,1500.09213453839,2367.43492425418,1847.71615932303,0,2996.08559066086,3055.34066365709,1414.70773934155,3022.62128944078,2818.35269116786,2984.3879664683,2615.81066860361,1858.21244735576,2443.40972619044,2071.26476157801,1870.07400460562,0,1132.49572019946,2925.85292657738,0,1828.23912702488,0,2112.20262680741,0,0,922.426687272583,1175.70491815163,0,0,1353.28903034959,1107.05793109573,1135.89848093278,448.644118698753,664.221407891106,1195.1550356425],"Archive293_field19":[0,0,0,0,2419.07977332611,0,0,3270.58328898995,0,2488.82321097487,1545.60021511992,2373.18604315726,1848.12811764716,0,3020.85614846558,3061.17759625472,1417.93525727379,3025.24516362854,2820.59522109947,2994.20976115404,2622.97658199777,1871.61746263929,2446.10904789,2073.68350592957,1881.20842081334,0,1135.77201950657,2926.50784834914,0,1830.7303090994,0,2127.40035225795,0,0,922.589430405271,1176.05154034673,0,0,1357.50915136394,1129.80306774321,1157.55843092268,480.44279449703,752.92526431495,1195.53695835424],"Archive293_field20":[8834087.25057971,6301971.14224098,1761936.8435445,2175767.72048461,4060101.68577476,6757085.45062001,3834294.91057602,2061245.78550718,4253111.64604755,2907572.12134632,5196426.75335645,3134620.17629543,3944478.32044191,2791108.18446065,1943643.88001837,2415464.32985962,2304230.60622741,2783288.24179981,3190893.57865747,2162837.44503321,3525667.12703781,3978576.86108803,3718754.66522097,4345528.06029459,4924250.56706299,4891347.84180842,4778678.38353803,2525759.00116531,3194466.41168922,2614625.47848491,5304876.46818721,4430913.8347987,7460631.96204,4364347.31595453,4145428.54645065,3497540.50926125,6456180.10527117,3715337.90833757,3412961.0103187,4670897.85892534,5686016.97464501,5456751.56220865,5969862.15631012,5376435.57809747],"Archive293_field21":[-846.343144390802,-532.608773974804,-162.825748072415,-196.499884268215,-350.051580486577,-565.358163807588,-331.368538974597,-188.678900992113,-365.484875201855,-256.034001302374,-442.275383366733,-274.85253633525,-340.409604851523,-246.353747713547,-178.94713336853,-215.645018322105,-206.425655934908,-246.057585056241,-279.398957438152,-196.771982176377,-306.663874475686,-343.177056557706,-322.193456318869,-373.39932198058,-420.232766451344,-417.661395565333,-408.202892599172,-224.306180774473,-278.889608562191,-231.878642098366,-450.773816397254,-380.325725187443,-626.421355383047,-374.719949618807,-356.635347304688,-303.946533080111,-542.591867019529,-321.318471197836,-296.913791637213,-399.231315234247,-481.138333610552,-463.202361125855,-506.392080275316,-456.24517746929],"Archive293_field22":[97.8324681629499,61.5665540254408,18.8217331468658,22.7142723363477,40.4639776789282,65.352197779285,38.3043240254168,21.8102110198081,42.2479790309669,29.59607866745,51.1245263215635,31.7713946036385,39.3494199719318,28.4770962460589,20.685273868118,24.9273412673316,23.8616352552892,28.4428615223136,32.296935101902,22.745725311555,35.4486049012244,39.6693216958744,37.2437364992368,43.1628441984095,48.5765248024455,48.279288909406,47.1859396025215,25.9285225322727,32.2380572601879,26.8038561204218,52.1068969881232,43.9634971318091,72.4107564564918,43.3155012645513,41.2250237887643,35.1344956450291,62.7205429706326,37.142593180993,34.3215506145525,46.1488761339479,55.6168629909689,53.5435662806332,58.536052899873,52.7393553017936],"Archive293_field23":[944.175612553752,594.175328000245,181.647481219281,219.214156604563,390.515558165505,630.710361586873,369.672863000013,210.489112011922,407.732854232822,285.630079969824,493.399909688297,306.623930938888,379.759024823455,274.830843959606,199.632407236648,240.572359589436,230.287291190197,274.500446578555,311.695892540054,219.517707487932,342.112479376911,382.84637825358,359.437192818106,416.56216617899,468.80929125379,465.940684474739,455.388832201693,250.234703306745,311.127665822379,258.682498218787,502.880713385377,424.289222319252,698.832111839538,418.035450883358,397.860371093452,339.08102872514,605.312409990162,358.461064378829,331.235342251766,445.380191368195,536.755196601521,516.745927406489,564.928133175189,508.984532771084],"Archive293_field24":[86.9861013231478,86.4537902152398,12.5568173118431,19.2871783191261,49.9771061174228,92.9826356553365,46.242996242026,17.7240189933914,53.0616898868095,31.1861039632264,68.4089292101208,34.9473131377825,48.0500018232393,29.2513377417438,15.7789562084778,23.1136657178532,21.2710161214674,29.1921445057775,35.8559936913404,19.3415618108944,41.3053540095207,48.6031220199309,44.4092031135425,54.6435091008736,64.0036910296776,63.4897867672714,61.5994298550541,24.844749313539,35.7541915517879,26.3582370416947,70.1072736137039,56.0278487569711,105.05730901872,54.9074555640853,51.2929758051496,40.7622471203171,88.4455359960472,44.2343226689716,39.3566337846318,59.8063686845239,76.1747535696957,72.5909058468719,81.2195738303455,71.200650573935]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3001.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3001.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3001.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3001_field1":[0,0,0,0,147.998082676993,0,0,0,0,223.375007279383,210.47735142971,26.625009704538,128.878542177533,0,0,232.28570262438,291.674995543446,302.835404874897,0,152.525251199164,190.042809359308,270.387916442854,0,191.99984862108,0,285.256405374122,253.027042221988,300.002703703481,318.5731777082,273.506794600997,0,271.355744102126,234.592177448046,191.099869526402,187.089100600537,192.432701502324,230.196059972749,169.613318982266,246.077786015068,189.463247126296,189.696081101835,0,161.718455372461,136.628272248285,173.057172223729,149.72547471032,163.927160835292,0,138.309709789128,126.008413600046,285.156292227561,0,144.646567566554,111.790077814304,154.469064702225,142.264739091358,139.035793093135,143.822066540607,112.424338619618,144.045753193576,126.929112308254,66.6334050559855,159.911448429833,128.409181718068,107.377821053132,196.654018785742,0,114.359091554854,0,57.6275151765102,87.1520394946431,0,43.593916852534,49.9447724389793,75.509703323852,82.7072757522613,-22.3304217332012,5.47883127871237,18.1218298306817,10.8278130485255,2.41782920807886,0,-70.3637385656665,-35.4407811458167,0,-65.8696964001309,0,25.6720002061642,18.7821344176775,0,-23.7492062469286,-11.8896197565142,-6.86821911634648,0,0,221.248151129298,161.145387017429,184.413050854398,198.798260147511,154.979414828435,103.198021027251,98.2684883468221,140.514975077939,0,160.568134869962,0,26.3903198363099,153.182559017909,125.21490006097,44.0815119696861,80.6176070865496,21.1379663546764,106.934364275585,-39.3736309537464,104.724904559859,-59.7673172432346,-7.98169897295697,9.07618296744345,148.382947807778,166.650267284364,82.0850575379457,0,0,78.9574753172494,149.271137281319,135.77857185684,154.555361799806,143.882170730736,145.078544417265,149.625446103359,158.335787135561,169.143307583044,153.88125102962,-64.8278655940407,49.3859482237649,206.215899844373,133.139969008653,138.164178964879,138.301239054624,145.8997839119,102.903055224119,116.295188473672,81.4388644705818,123.391931417519,111.824474524396,147.142049949968,147.508908647687,147.17716836496,149.837813731123,87.4014575609236,54.7283689493084,44.5864359092751,148.447749972282,151.017360836059,85.6472093992254,68.782085512428,81.8366943610197,134.194099445515,25.4794953658978,147.65057101415,141.403970391449,145.063499943735,136.125267586691,149.220276724409,147.621280511584,162.824126991214,147.029341699821,155.62988375724,119.553641264557,159.019618162129,136.172088291625,115.656450067305,131.992135090334,0,154.787946280634,148.109979913285,168.348661178711,6.5548699192942,-54.3051056252801,-38.8440327233329,-25.9525869914805,-84.495277953372,6.13734613991233,0,-80.3696732518884,-103.604726857921,-96.0286534380343,-106.457037913826,-84.5502078422091,0,-81.1447286733396,0,-53.5509034576101,0,-59.203240442,-82.9686972943165,140.938603847008,119.651876330495,184.597995687724,64.9305828318067,0,105.548128366354,169.439315376777,164.756208302897,182.454951594388,0,177.351848254129,175.712683970425,122.028648028926,49.1160023336582,104.1851465858,11.422233637701,-48.9985704718488,-30.7994018111685,0,102.257753377259,72.5699734916241,124.187740307678,51.0299567184405,128.690636577241,52.3710134273762,-16.2137828362392,87.8835240906847,86.1989404468825,194.847472619261,0,176.143915672577,181.553761846258,205.690828602869,0,40.0461138218333,0,109.392114750299,57.1919566560346,102.077197071924,0,174.419986266804,135.984789682373,-16.1024859193554,0,145.59244486688,159.561786284228,142.547508800518,146.521489577954,163.271186179944,154.897492401101,-115.434522508121,-85.9419938427463,0,-49.9938204237624,-151.967257068536,0,72.056916398771,84.1944336253083,-94.9862679037629,0,-131.919966177356,-142.04331195003,-129.364921822221,-157.171722390105,-116.03628731945,130.588959735848,146.80470493799,0,200.983539172725,205.554810725062,225.824512153355,202.741868276179,0,134.900987694602,206.106248019082,226.879074567643,225.122863493311,0,231.772483592072,187.555985716168,173.202573951124,211.708608786532,149.241951965751,210.071559579325,151.057295882434,0,126.543980124579,127.79497373384,131.574285749212,0,0,80.3909218324737,0,84.9116809943901,161.473399749411,200.037955402788,170.63915755466,0,91.2619799608184,104.540823595933,102.982782293408,137.736812717182,91.0351497961094,0,0,74.6128192148832,95.5236438258271,124.987491775286,127.652158301111,85.022873524911,54.8184889983462,0,0,42.8124388752419,42.293782150024,73.5445138678263,98.9726692049355,159.419800142885,34.2113304912375,67.6599660401961,49.7701809394446,2.06039603482578,0,-23.6375851031363,-0.552225583821935,13.8785538845636,-17.7187866959332,111.185511818309,99.9072285863366,184.421181266676,128.634515989698,145.559915938423,0,-45.909888958443,-89.0881828802411,-113.590140140486,0,0,291.569504938693,208.946817347587,0,191.781586605154,204.938499176752,0],"Archive3001_field2":[0,0,0,0,1630.74065641636,0,0,0,0,1441.1614724982,1202.04954831196,1376.307711258,1474.06229826376,0,0,1337.14850518476,844.281465544326,1200.65578364938,0,956.469350935917,912.699368270741,1130.64202782671,0,680.57871457431,0,766.725563890046,1427.8880948999,967.939139921667,1053.34862078116,1291.98482034552,0,1352.80725843208,1461.12795024576,1565.2892099138,1556.78705352444,1095.37702084419,1287.14919130477,1415.79603719506,985.91171064033,1318.24690109537,1463.01238917754,0,1559.49982868888,1042.52579867771,1499.32274653789,1486.41952186302,1148.23740824584,0,668.990316413258,812.216346040579,1105.02189478106,0,1573.66748245459,1257.34646610276,600.773659138678,1525.17223396437,1549.33840495251,1610.42432518199,1469.28115809519,1358.05667860935,1178.94611865253,840.711763150216,1280.36645006961,1408.65169631001,1326.10518040944,877.044143602072,0,1421.86326644269,0,1233.58710075683,1295.96805467036,0,907.614512453756,1067.98118013826,1153.65804521655,1061.47948757174,824.014803871371,668.560830394399,1016.9058725153,1154.46033782138,1049.5213562784,0,777.065177101824,874.811977513962,0,474.073606078368,0,591.49114041109,506.343406137079,0,452.01273274897,388.229771654253,705.734270002318,0,0,1489.96675200019,1491.72471031777,1545.56583058353,1434.98837002581,1282.39260868093,938.494770473892,1365.48141238584,1612.70622975526,0,1607.22624175899,0,973.448494366693,1579.82783327642,1531.77687359516,1459.15260117273,1470.74933057654,1283.52302505915,1581.66133999499,847.910637158677,1559.46764779153,1218.96024743293,1324.78606684637,1393.69393050747,1632.42985557773,1609.35334946095,1044.54909123119,0,0,1520.28238896661,1627.43871841695,1620.54177036086,1625.3922842237,1630.38874089286,1626.28907698261,1622.2115424414,1606.42650994193,1574.80369007873,1595.22908962268,1174.65587131975,1485.66090966915,1540.13926955703,1561.88666292821,1593.76870844769,1597.86692732355,1623.73102655678,1494.49730967259,1521.29366653587,1399.4452973035,1557.63412850241,1501.2309943239,1628.19176002442,1631.75689055211,1633.0317982082,1612.57972974734,1372.75113050218,1345.7223250911,1255.65548457089,1625.11984579502,1619.37968455618,1436.54953845978,1265.65511513682,1401.05061889931,1429.7694420599,1232.84925084094,1626.3828866401,1590.80764321401,1615.22159018647,1607.32370244075,1603.19323342135,1478.0709553655,1561.40843796933,1552.25826083814,1598.20627755206,1455.17234036591,1534.22881796617,1499.38481399794,1244.28021122413,1404.63000960634,0,1249.78230806079,1376.5507946674,1413.99144292058,1176.49829989796,789.637118913721,992.141330633041,1043.96747187636,764.134694819577,990.823488665471,0,435.174419727165,365.790792584214,598.017353391143,446.369245751549,451.66060365036,0,232.794809216083,0,155.787550459503,0,220.813922085739,246.088825950643,1622.39724786881,1591.36694320038,1215.46598629823,835.379634802934,0,1510.29104490502,1303.37150755712,1143.49387335626,1346.86923831753,0,889.726297639487,1472.87438477001,911.342029706845,1029.77004237883,1234.01293143509,610.670530463415,446.627665135377,729.54686099913,0,1543.39172864893,1463.26942618228,1574.97920606269,1261.50154196713,1539.36993976898,1365.98242445046,1155.53128567909,1415.41853739192,1239.93096920168,1362.58421883922,0,1466.21089027286,1449.96664248003,1283.80884783461,0,437.829590721256,0,662.697615429778,436.358879096873,852.437141343861,0,1157.85028878762,1587.25093722375,1255.49078125415,0,1280.90316549974,1435.53314854939,1083.22692237195,1562.93396632289,1520.22981739047,1581.81283208679,699.338846596004,984.815278454677,0,736.515238674519,825.589517101174,0,595.98148250501,925.539016342996,818.269457377075,0,464.089890909079,328.697768962715,663.132852663311,576.07585664016,1014.84990179843,1612.50335761676,1608.21140198806,0,1067.74093100578,687.728011229393,960.056817662595,862.163073145444,0,473.337184393346,604.077098751273,1094.17968233068,757.901818545818,0,865.978272204902,447.644478395625,559.581581255954,917.565944428207,647.515546596509,1244.39545756403,355.878479410863,0,311.393804688505,250.653271515959,226.257953568041,0,0,122.351949528414,0,397.09641815037,905.10246728585,1093.12424608207,531.295253284564,0,174.830147719212,381.975007441874,264.829589837484,856.659419863372,563.225285543928,0,0,539.575324955982,932.171491729162,524.296032308438,1117.1123690842,1065.98973963037,493.85903392507,0,0,703.534345532521,728.779981806148,417.354313628959,349.851865151615,648.552643235232,514.730575092772,1043.61709034483,1116.94742764987,999.301084102359,0,509.037548108085,574.364158438796,891.30456823797,405.885537909834,1337.65064164761,1380.02713000788,1336.82595345375,1520.26047316153,1596.1525229298,0,389.159360114332,399.161741409387,451.926723555029,0,0,651.219708307257,384.951685337804,0,352.622328502404,544.279436846931,0],"Archive3001_field3":[0,0,0,0,1637.44267715402,0,0,0,0,1458.36990633043,1220.33758938331,1376.56522083409,1479.68555368918,0,0,1357.17455493445,893.24436527019,1238.25829020299,0,968.554372006622,932.274855517936,1162.52355694257,0,707.143075057755,0,818.070478094324,1450.13347511616,1013.36459422149,1100.46907564759,1320.61756110396,0,1379.75411516826,1479.84065922963,1576.91137062473,1567.98860378028,1112.15159146628,1307.57151494804,1425.91973719189,1016.15755567127,1331.79248167993,1475.2592497837,0,1567.86242205389,1051.44059541476,1509.27713927694,1493.94133511083,1159.87984711979,0,683.138067506609,821.932791092745,1141.22193237884,0,1580.30122914708,1262.30628506668,620.314179641942,1531.79293615182,1555.5643493028,1616.83372489625,1473.57604264171,1365.67460301807,1185.75922945479,843.348255093055,1290.31388344185,1414.49231863117,1330.44539382978,898.821023859186,0,1426.45474876715,0,1234.93241339721,1298.89517541415,0,908.660845862314,1069.14839074072,1156.12655042124,1064.6967624624,824.31732041366,668.58327942735,1017.06733025524,1154.51111434151,1049.52414130525,0,780.244413737917,875.529579723104,0,478.627831288562,0,592.047988578119,506.691635525773,0,452.636206422499,388.411790058782,705.767690029471,0,0,1506.3039754459,1500.40342812513,1556.52880153012,1448.69333205721,1291.72343085509,944.151611633843,1369.01284996643,1618.81618527632,0,1615.22701752241,0,973.806151226128,1587.23686927382,1536.88619021652,1459.81830828589,1472.95715890303,1283.69707076031,1585.2720752911,848.824323061796,1562.98005430125,1220.42460522238,1324.81011108339,1393.72348370493,1639.15976420289,1617.95874947636,1047.7694215155,0,0,1522.33137821911,1634.27006783697,1626.21998821186,1632.72393180079,1636.72524434751,1632.74736134014,1629.09731524907,1614.21075245212,1583.86114315167,1602.63385955647,1176.4433977814,1486.48152036981,1553.8835113934,1567.55101964199,1599.74624124454,1603.84099902654,1630.27273593981,1498.03579643247,1525.73228015411,1401.81290791287,1562.5138869829,1505.39005291697,1634.82696034623,1638.41064083297,1639.65056425051,1619.526089699,1375.5306907077,1346.83472282848,1256.44683381354,1631.88579492214,1626.40610120202,1439.10042072361,1267.52272001706,1403.43866316347,1436.0531723353,1233.11251716263,1633.07133496262,1597.07984789445,1621.72260402956,1613.07767106962,1610.12273900896,1485.42444828236,1569.8751563396,1559.20599526199,1605.76585040444,1460.0752080991,1542.44782888703,1505.55559780346,1249.64381264669,1410.81798528812,0,1259.33122166312,1384.49581308481,1423.97790445403,1176.51656001199,791.502257775261,992.901444670372,1044.29000718549,768.792094017249,990.842496418505,0,442.533682292648,380.180014423025,605.678344699618,458.888444476643,459.506298690201,0,246.531722480946,0,164.734514110731,0,228.612798998044,259.698892928872,1628.50745160918,1595.85880309642,1229.40391404122,837.899227133169,0,1513.97471832324,1314.33898531052,1155.30205858799,1359.17127489046,0,907.230159766762,1483.31854320632,919.475549457385,1030.94069755061,1238.40318948157,610.777344207971,449.307390516295,730.196703324255,0,1546.77557395626,1465.06785325881,1579.86774584855,1262.53324584667,1544.73981349838,1366.98599369377,1155.64503154603,1418.14426268954,1242.92359609092,1376.44516455099,0,1476.75355214849,1461.28882591544,1300.18224674457,0,439.657186616316,0,671.665664051585,440.090889786218,858.527130674712,0,1170.91401172541,1593.06541006408,1255.59403943589,0,1289.15091412509,1444.37369964505,1092.56595115199,1569.78696962166,1528.97226198504,1589.37883114964,708.801771544702,988.558121196437,0,738.210050649777,839.459408171881,0,600.321686006568,929.360626143934,823.764102135106,0,482.47518518597,358.076145241205,675.633379340785,597.131763451557,1021.46206153492,1617.78260428594,1614.89799519237,0,1086.49209788359,717.790079091201,986.258487126844,885.680207438165,0,492.185297027856,638.2702614945,1117.45393269787,790.629793406804,0,896.457947748485,485.348150110882,585.773572043165,941.672871760016,664.491943751558,1262.00242271957,386.610655242585,0,336.124203984409,281.35141341974,261.733555783765,0,0,146.399111563146,0,406.073341746472,919.393351680099,1111.27665366201,558.025419003179,0,197.21645351717,396.022335365489,284.148139361112,867.661680160037,570.534942641062,0,0,544.709651183588,937.053070280619,538.988128435727,1124.38210528265,1069.37505769475,496.89215341507,0,0,704.835782481507,730.006182090209,423.784637079678,363.582063363436,667.858670472282,515.866242420762,1045.80806186622,1118.05573521377,999.30320820058,0,509.58606811156,574.364423908899,891.412613563327,406.272107443191,1342.26355725639,1383.63880181266,1349.48686615592,1525.69287373351,1602.77589374909,0,391.858042495969,408.982640382056,465.983350990482,0,0,713.512357775241,438.002936661504,0,401.400901243691,581.583952511786,0],"Archive3001_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3013582.95,2305166.0625,2738087.49375,2698731,2856156.975,2265809.56875,2541305.025,2147740.0875,2592960.42304688,3348113.146875,2726198.55292969,2955009.41828613,3385501.02023202,2187096.58125,3322927.19560207,3615980.34601032,3799167.9452572,4112200.35158438,3898623.64085212,3733030.99065731,4485478.86421688,3414206.87010484,4122522.05040609,4173938.73326062,4430416.725,4643870.35100453,4555932.94761107,4466196.89475058,4891029.29891033,4252941.13561,4036851.7875,3876991.84515651,4238798.42725105,3246545.83818484,2856156.975,5141493.13292764,5121889.11919143,3459159.47365463,5135963.29785533,5399307.90594477,5533309.43806479,5912631.0221011,4810327.00871025,4824594.46451495,5128643.26449753,4519219.18791027,5128426.122899,5528219.9585469,3648235.25385438,3249721.9125,5677564.86512607,6791806.35,6194490.73662038,5861762.23566151,6004676.475,5713860.061753,6002564.18869234,5702880.19552416,5387134.81461557,6660747.03311464,6131420.08887104,6357274.06282467,6834570.83499271,6658841.00895551,8523492.075,7261479.66421003,6936703.83122667,7578936.225,7068369.25808199,5611111.5375,5462723.64768089,5806256.38569117,6398241.4125,6631957.14019963,6343041.55480422,6421801.78081992,2344522.55625,2541305.025,3442629.38163948,3404054.09623172,3585600.67398266,3256063.71058696,3056701.62576213,2761783.78964475,3215148.89037133,4062622.79637184,2462592.0375,3998703.43082607,2423235.54375,2880403.72271276,3753784.40364893,3581351.99528222,3637928.64986634,3508555.96128351,3238857.14784761,4057461.39554185,2869471.15669081,3782135.41724658,3369764.76005313,3408956.53971162,3772376.83514852,4764191.04596779,4232822.86190721,2900891.08930985,2501948.53125,4272990.75,4206109.19810528,4368249.82989597,4561827.39907642,4521888.89538821,4604751.60282763,5119423.43001803,5013229.91404861,4590705.77370609,4407115.22282038,4864886.22038275,3683950.82308812,3906295.55248381,3811514.46771222,5762764.94463899,6251437.84992443,5925736.29175443,5713699.38715185,6417820.38899745,6087621.08214827,6336266.86634408,6234901.09444153,6733249.54286626,5341878.14305374,5049544.82020172,5048132.82520177,6107490.66184474,6094784.50337788,6789466.7589842,6493891.69918067,5829351.35712559,5792930.14949529,6763766.95030373,7368622.95968463,7033899.54592751,7149495.32447672,7239225.36588139,5454060.4662377,5383948.07471914,5331478.48184639,4897527.09931274,5715369.83372733,5937370.13379795,6386438.17091159,5728092.71006071,6040312.00106006,5270548.83617863,6167553.8067024,5574001.84298875,5777267.49087734,5765618.30076324,7421510.25,6387815.5984402,6098321.86481251,6460940.81343323,7092727.75459329,7763532.30548483,7191610.1705803,7440985.69477849,7590226.01891741,7702926.78999512,8444779.0875,8074018.79972712,7798065.90292917,7590739.53700952,7926366.06891991,7430146.94227047,8484135.58125,8120774.74692543,8405422.59375,8014884.04805915,7185371.2875,7409593.76518569,7703591.57922561,4852212.8046968,4479097.35957484,6863145.39444849,8008235.58506312,8602205.0625,4752810.65204325,6581908.59755113,6680965.88768445,6764088.10431517,6634380.375,7202401.02819808,6632512.86492612,6394982.12930457,7741478.84470464,7522443.7791873,8168440.78860561,8175085.83906968,7949677.46027186,8562848.56875,4513697.75320387,4386931.311909,4805410.75689738,4623716.87638132,5114317.06656005,4422666.91475049,4110766.90316788,4789902.48874186,5153150.63105187,7004256.46511376,8838344.025,6982685.39944847,6891459.89148701,7404179.70891763,8641561.55625,8364008.57912602,8759631.0375,8245958.45951919,8396827.67508923,8038034.62131828,8720274.54375,7690449.48701012,5095678.90825055,3963657.65869581,3485860.875,7487499.39971643,7142298.23148485,7789354.89594386,6640587.82188574,6818891.84356161,6433059.61982831,3604855.74098089,3770161.01676209,2620018.0125,4150377.10885406,3224639.64888892,4823981.6625,4659007.8833875,4850843.36880368,2959378.37304627,2580661.51875,2898987.08602779,3096295.15789866,2935423.92554563,3187492.33231429,3264963.18725819,4235881.91166776,5231399.03320627,7972501.1625,7231701.20623081,7880141.13422346,7655807.59744669,7522220.65687807,8208640.125,7662007.11345972,8276860.75076804,7653924.33989551,7984955.59387517,8917057.0125,7972929.01945311,8349410.18246656,8378045.55048367,7982047.14389744,8284012.64693771,7349166.02691922,8135609.47392747,8877700.51875,8598584.70750672,8643977.20540123,8619698.70745586,8956413.50625,8583087.252096,8642467.60879502,8798987.53125,8475078.82292903,8019874.41228339,7783788.46568247,7872322.52887251,7815075.1875,8355000.64905269,8513960.5473371,7930731.53965616,6822349.15318231,6657428.36969315,6240815.4375,7027945.3125,6324197.21892013,5933222.59490463,7185660.9892403,6118286.2281819,5504707.43780276,5997029.67949575,5060120.625,5453685.5625,5657390.33672125,5185887.12881306,6936889.01067805,7454861.69645119,7386915.51050341,5430430.76629135,5199564.60496077,4866111.01507227,4473553.49967188,4666555.6875,4439149.70601457,4821928.08811871,4738392.41123538,8280754.65373118,5443578.64805444,5074451.1152489,7357653.84823608,6817288.44662108,6338415.74190144,3879425.8125,4050309.82012275,3693832.9220485,3403273.22967356,2659374.50625,3092295.9375,2552139.77402344,2575469.60671997,2108383.59375,2388862.72378699,2977479.2438058,2462592.0375],"Archive3001_field5":[28825.6690517499,0,0,0,-4757.68589466255,-1480.98482915314,-12926.5259193622,7.24087606026068e-12,15892.3867923943,11204.5817294906,-364.625349727442,27765.7646606134,-13327.9806582159,-43913.8852431915,1983.38328260685,14741.9399104734,-18957.5711479115,9200.61699824275,1939.78618214441,9243.71372256608,7030.003522492,11837.2598532161,2052.41745598958,3816.05115490964,75.3689368678814,2756.52657501502,16044.2282617664,5654.43897608062,-1162.95520031937,4492.07503799382,354.161612561582,11917.4127911202,15511.9298744962,27825.4278394402,18037.1612995757,-15715.5550673848,-3852.59139774058,-3794.11930149403,-21234.3268696931,-6912.39740191892,5066.36736122449,-27824.464750434,5563.50150745899,-18303.551849858,5150.6059917309,-4758.58001711049,-14039.7689953794,-35691.8023084631,-32017.7174757835,-24852.1357531526,-7109.21456567736,-61795.1022829135,-4173.37452960523,-16139.8243527793,-39494.1163643877,-8450.54614569937,-10341.3350848569,-8620.88814297671,-15534.9759403911,-10041.3408287085,-16982.5030435362,-16273.2288244557,-9935.02737649555,-12529.5878859178,-15105.1079515331,-26312.2467679689,-52985.2050374226,-14549.6703471822,15833.9891732651,-16746.7155059058,-16783.6495186466,-1827.49610896087,-14899.0328393645,-15851.5126182714,-18099.7851389553,-17545.8393473669,-6571.65815889097,-7686.47501642873,-12270.6392656776,-15906.7608759417,-14872.7062103536,-1763.25772878985,-4961.42248168657,-10101.2151419492,38586.9256273333,8387.49887261897,-8115.74320618448,-13160.5320683376,-7264.07015376012,7340.6846026907,4553.53512906811,354.801506218433,-5091.33580235604,2289.16227408168,3395.1186226545,21605.6999854066,23549.3204343834,27081.0998945876,19234.5150806764,15844.1957542279,7423.54854430655,18502.3524662555,32203.1455560487,3050.74842414036,30478.3113565076,4629.06466849435,11474.6875687888,28682.7628330014,28380.628907386,29950.3396790003,26412.6037554507,21046.5118485211,34257.5674042521,11891.5280796539,32111.7737857369,21097.7441471575,24488.2061457113,27211.7056624736,25094.5619492842,26804.704383534,11780.0819434136,2447.11769377661,-15642.5356879755,31821.6884432717,31292.5381181545,28511.0728079659,24284.4829542673,29313.8168360931,16401.6701185286,9141.52833355392,15726.9884955192,15400.573783222,3577.53939202022,18907.3862623879,31364.9210609266,21176.4503589358,-13606.1995158789,-15818.9394403751,-14725.0282610166,-9929.50372904491,-18789.6965731486,-16453.5555601485,-17883.6820382796,-17732.2268510885,-17859.9236987599,-2513.73099668817,10022.5629320644,14033.9300117114,-9638.58674471789,-17478.5290614135,-18291.5110550435,-17940.3180559787,-11565.8689605443,-4716.76766975198,-19150.651958578,-17798.7961579523,-18625.7099289999,-17272.7514667701,-18356.0929117668,4578.39916057602,10481.9811752436,11430.4897380764,21611.3179515439,2831.43411688634,6642.59540723678,-8229.75182537398,5848.02164834088,-6161.38528212391,15848.2867998978,-152.162958936945,11616.9274572117,12459.7331994288,12042.6561263116,44479.8609609243,9455.86648427243,7982.44195179748,1919.02171131346,-16981.6758537181,-11295.6427515006,-13329.8893569708,-15263.4975116472,-9759.56448209526,-15496.0853966091,0,-6249.83613080172,7933.3015256807,-1170.73951697351,-3241.02985790945,6775.37015752997,-2077.74771193673,4591.08263536753,9392.7880606629,18210.476473355,29398.5076708834,25602.6076474435,23736.2063463064,23020.9813093063,31833.1243988617,5695.8329383086,-11615.3070748277,-2617.95070029948,24702.3192026314,4899.50023597009,11022.8733201958,196.019992099708,29853.9768946642,14205.0630523144,-4057.96662395875,16192.1608693268,-14530.4839500279,-15652.3670554582,-8860.58084605131,-6254.48513897568,-11217.568699631,-1937.20233616021,29691.9196117989,26610.9866468257,24300.0713710305,19597.4883132766,17849.7616460704,23377.1140223999,16941.2701468032,20713.7713848931,16134.7595936545,-4998.02464716513,-2011.30926803765,-11446.7036532988,-8127.8654686698,-8282.47918203044,-2363.57702499816,-5915.88197615554,-1137.19809159992,-7988.94453581468,-4642.17830730427,-10563.8893650295,-3012.19201364666,-12406.035909262,15736.0266580835,22399.3281605534,-39721.3559836483,-14702.0588296865,-14735.3064347527,-12773.1582097946,-16136.660938618,-13296.2614711088,-11772.4438780035,-5086.68498994101,11337.0905418525,-2457.00731783401,809.884159757335,6515.20711575334,-20424.9584670045,-21268.3053977068,-19506.4761635964,10567.3447762009,2170.87349290529,652.693487810428,-20199.9792688803,7101.43671619539,-5377.6028105615,14759.8767042907,31583.1066972828,-3919.7638202732,21896.9169064976,7253.91793892708,14293.1113393362,4644.8339730446,15290.9713507593,56721.6921642545,31963.4680680601,1273.64813797185,-4507.0866711439,6335.80856826929,2493.35757614219,-1508.15839057254,10254.5223289923,-3845.50585011756,-7218.49914506491,-8072.44059554013,-4813.87050256546,26349.9015497152,-350.497423127277,-1395.90626391858,2037.48040129317,16138.7754392728,7824.25395114927,54137.8652134529,30999.6630206727,-659.152585133195,-5440.46955033082,-9427.37340943349,-9232.38621724216,24686.5331753702,47461.1653740973,42898.2325362915,-3444.15618108801,43370.8527514456,20245.9408517539,24607.0446690968,24957.5358034132,36117.6050393304,23290.981554863,17420.2349426431,30710.0205334181,12071.2548442454,15691.3456569328,20188.6809976904,7840.08732232053,13657.3611122534,17748.4470297377,11467.7128774571,29950.3090075291,37933.6933457751,22702.0596896194,13540.2489755373,14675.8483335985,17474.4162274292,12947.3067829939,-4640.84950524834,-1856.66619115399,4687.59654317415,12369.255531622,-6265.58178373335,14679.1246535416,16915.0216308551,-13043.5158141155,-17151.5472895764,-13844.1046885501,-30456.6357612499,-17032.2021867167,-22223.0957442641,-21092.5532282819,-10398.8651098859,-28657.3837296529,-6763.85229286335,-38357.7673776272,-18150.7635238712,-13287.2631228636,-42941.8844573666,-36726.2885002906],"Archive3001_field6":[37160.726741967,0,0,0,23404.0974827523,121074.594751324,-1498.13830404987,-143393.616946546,2460.85057680085,-53068.1873967352,68694.429648836,-55827.3831571491,28317.511583472,-3603.36978184428,-133167.331538291,-99317.9755047774,-65873.2280015721,-89258.3367687859,-141308.073565667,-123889.695284522,-127961.782085917,-107473.227505828,-140257.016266832,-130313.32804533,-119203.885082377,-118641.345782759,-79812.7922024572,-114232.240693899,-86230.4191120371,-68161.4748496962,-127437.526911409,-72262.0061679934,-64362.903127327,-59669.5203254803,-42050.6543057203,-26179.5650194316,-44033.7483634291,-11218.3016387656,-41523.1135682446,-24094.1759152484,-31027.1074758334,-2851.7199775516,-7749.72622164145,387.786729321134,-17804.0857067173,1896.25048448154,-14782.7173605793,1147.37223544254,-12004.6484572388,-6611.45270580383,-61751.3372172573,-13777.2194316981,11848.0863032181,15296.9745589011,-19480.1929117928,13876.1458782162,29059.6358493901,27638.9936557876,44962.4235993585,3792.59132581129,8314.12566356139,8365.53279991564,-6390.11636222575,18761.4048586999,31112.8052091016,-24909.8609998837,-8757.37755535084,38626.7296040818,11993.8744976832,54125.6859428883,45697.9660286946,9715.75273950595,27236.9617050983,42455.4554958127,36790.3705150121,27216.95564533,51244.7277471794,31303.7367100814,48546.2020711161,72323.5952827364,62503.9418582217,110212.319261377,71704.425055727,66993.8530648264,12482.7374740437,42046.4279004921,4263.70848170038,15158.5767712549,15527.7167820663,8538.64974690279,27350.6224179826,20172.1031180927,39658.0084201966,-143429.057061024,-131381.848119594,-75443.7240905321,-83962.8232095585,-70182.6628591693,-92598.3247514705,-104658.899443524,-129050.010198109,-100422.770738318,-49083.5534788522,-139531.158103038,-51665.4565522844,-139859.65420266,-125695.465074659,-64832.4310356595,-74390.7844980322,-76617.0046853443,-83611.2299414123,-99862.207839002,-55881.8441289064,-121586.236724349,-64763.5553856319,-95373.4153588223,-93986.9875242578,-73671.4562730892,-11668.7658383198,-40311.3819083051,-124942.657947329,-136171.017711203,-4726.75707609407,-49783.2781825266,-32076.5467622826,-26962.4609246146,-18850.4881262348,-22534.0669228449,-3662.67957738958,-368.325301220732,-15211.2317729058,-28689.5735777573,379.533735081629,-77831.6286761565,-61905.0393644321,-57702.4777497344,38536.7725692277,51571.9410899913,43095.8380958651,33470.7813871854,62393.5873748114,50548.2492148295,59332.392881483,55517.1150288561,66524.8675490431,18637.9084506857,3971.70491273049,-51.3506057544573,42511.0259643219,52384.1820388366,72022.5185495403,63671.8919480098,37376.6904386048,30675.5006667318,72979.5184044873,91399.5647874276,78971.2167622588,81339.4331395627,85301.2589835118,13994.9029629892,6827.04735473087,2729.99874702043,-13497.0226403342,22333.2793557337,27014.9157198299,53891.4657828955,20978.7740039179,39085.5530654254,-4314.68247037901,37036.4782319115,9653.67247171762,16677.6999963677,13458.4238202463,4324.98566482444,34094.6873339219,29771.6384378278,44553.2718417268,80911.4674791283,99911.0946087276,79437.8828945929,92363.521123179,88944.7289203889,100132.465206986,94024.7430785696,102688.131486067,71363.8674645227,78207.3704527963,91383.2300846673,60758.4119641303,100684.17001533,85239.7072335862,55639.6927972219,62167.9878906799,9266.66604394089,32731.5520907228,42430.9607271065,-12483.2460075959,-35777.1265239249,54022.3325301052,108212.725223643,118570.805581883,-27369.8566556387,45366.1864726035,40458.1378984835,56949.8978820123,5173.92107484053,47818.0926275345,55239.3456130484,25580.7899343825,102532.292958707,97474.8468514283,113344.148942994,110023.523632494,105410.163794565,115833.351401832,-36158.602729816,-41170.5571748256,-22636.3515340531,-28952.3095081329,-8872.2992547188,-43341.9252057744,-49368.9895990472,-24163.798749399,-11522.5558355035,67271.8094185279,113502.266674243,70544.227320911,65610.6394288469,79202.1111895651,120109.262600353,117598.422318031,119585.487252891,113443.614543328,118116.774956029,109376.911956041,120373.569460795,95701.4358486881,-5587.91089325223,-62024.3961266207,-22134.5853606635,90632.4360729366,77474.2560531402,102104.608595437,65247.2099633324,65246.9956716996,52670.9483029984,-58053.4155181945,-63124.0081108659,-107143.386151922,-37649.9064026923,-87664.3682768017,4588.03434580313,602.335166327819,7557.70556120379,-120551.95125869,-126079.646628153,-108287.181129733,-67919.4142169624,-117130.355642352,-79361.0685559888,-97657.6800378481,-41541.8813713686,16294.9012624037,28751.7252479801,61206.7581432245,68626.6328211662,74622.9440563045,58433.3011452658,8155.55187299952,35861.4959565053,94882.9443032993,84311.1050778978,81695.05593898,96230.2363029586,90960.1743192465,80024.6019414457,108089.789919686,98894.8976420303,109187.947549788,75512.3868266927,55123.8542338345,107224.716757115,107108.203925909,97922.6337970049,73841.7208524254,77599.2048353913,14781.9474501755,46602.3483672296,116118.802327262,116803.137596922,106113.032902977,95469.9712533243,52207.6326550883,11380.6822376985,34995.2822451552,116588.403210396,27229.440557377,31318.1396232629,18116.261466036,2277.47618369435,9129.78939944227,8852.22911860908,11427.3524961377,24182.1585913167,23983.2755356355,-278.416903440661,2534.29697648201,-4282.43645433579,0,-653.936789130883,-6592.01695155397,14692.1653611237,21423.9292153247,40932.9489727109,-999.527615617065,-13530.8160445683,-21716.3207095486,-31610.827463329,-1270.57451396776,-15496.6477386472,-6061.36458512796,-20031.2488235299,115501.898755283,1645.66268864508,-12481.5334920748,85296.5799339019,67728.0258303264,51423.4684282217,-9025.21033592514,-19074.6737346701,-30313.7506170733,-52296.2915334281,-55636.3827924301,-24063.6726533537,-102771.444878178,-59158.3623136354,-66998.1079903692,-99810.8096066165,-33744.2152639305,-24662.0009016268],"Archive3001_field7":[34143.9532578392,0,0,0,81.5963091501653,6847.75927763081,-100450.594393181,-7883.86785008452,99454.5439702887,-29893.4455086385,31666.8331286227,31992.5492193871,-49568.5592409792,-94240.2678064827,-25482.3413840527,-7334.38964327108,-46671.0920024267,-17506.4975460728,-14686.1959411385,-10560.6502477688,-14380.5047410428,-13166.3436158505,-17442.6705078706,-22688.415171044,-32948.3767970919,-25594.3037188334,-12016.0941000275,-23308.3731906169,-29029.1893900178,-30212.5027008389,-28935.9427251903,-21453.5094007673,-19464.6998079283,-5942.18380309711,-25818.3199915548,-68563.7652004108,-48013.5825416453,-54864.4119915953,-60457.3033115952,-57727.247247486,-43170.9588820609,-99839.0022564046,-41292.30670377,-77643.8972658885,-45460.6612130845,-50804.0406824949,-70382.3265581733,-97604.2166865199,-85945.6136986101,-87355.370081086,-42927.7485350375,-70861.183639316,-39809.5177291863,-68696.2242863071,-80397.4044453929,-47254.5206735366,-39799.5477665187,-27160.7139214635,-38286.9357573279,-60102.7064039873,-69944.1586388736,-88842.814845218,-65282.255044387,-54827.3883011704,-58695.4325076057,-73506.8160078081,-84947.1500611865,-46743.7456429966,-82736.8363725338,-50585.2799560814,-53664.134636173,-94726.842045996,-78143.3634362892,-65007.0363593495,-66055.5293814784,-73650.9179544745,-62164.1642976134,-80331.2331038806,-61940.6798546554,-34580.0200225455,-48749.218259607,-11215.8854487171,-41485.9922330739,-46489.7692714034,-63575.0741323722,-64819.0564446488,-100407.935063563,-91419.4204679572,-92737.1543205688,-90696.9940015336,-79987.7692477452,-87617.7341574464,-73641.659851459,-10687.2847712616,11290.3624232154,-5969.54653444519,-356.269263073906,-1671.58614843778,-4512.64999647535,-5213.54681321968,-3751.85628829085,1.01845984980611,2902.54489762876,473.919739694722,-2402.72606752715,-2368.14865400642,-696.220777329442,2206.78236742901,2666.51406164854,9811.76739433404,5125.02012874964,5516.11526288202,9382.56906468035,7063.50492745713,4535.14278327182,13656.2198221642,9324.71911814506,20782.0162914239,-4021.97080387209,-12831.3751443397,-233.194637055667,8371.88178897357,96267.0944336707,24130.7986487403,-2251.55793741164,12609.0021288016,-13963.9928473417,5019.29781974864,19616.4095232042,-25966.7768876813,-28725.3440924152,-33308.4930407096,-35376.474579508,29520.1999539957,18032.8550867495,-14643.7379877846,-32002.1387843636,-8423.58796025346,-20369.9848716644,-11518.6242709732,-20416.072062595,-27421.242282491,-32249.7319311625,-17278.5156641977,-9656.59091029814,-18781.059120241,-12011.0242515589,6873.28530636388,7597.75039910337,-42318.1619414047,-23803.2925377965,-38922.09698146,-311.512969068949,13505.3398730576,-13945.042600385,-4384.7126403455,-7334.6666059739,694.760082292507,-12643.0374576239,18582.8890251468,37844.0687612431,27393.2161760808,24741.06390683,27830.1433679324,43666.8029767088,19022.2182643339,38992.209331699,19739.0457730566,52188.4793682402,33414.0948265723,46178.679842985,63913.919279543,54413.8756019349,83387.5942105279,58723.7205494755,53319.3532562368,39477.1781897354,-22359.0386907112,-14067.9539625071,-29894.9104896043,-15631.3165672713,-24317.0668795801,-6281.73910088559,-16386.9896656697,-16772.7621697812,-37956.5767571661,-35416.4747949063,-25978.1964241688,-49196.586460919,-17765.209954829,-25029.5273309452,-23099.1201113861,-39788.4866464223,-74726.9987474895,-62702.7380414939,-51744.976232448,15268.8119887427,20406.3898916254,45118.2291663249,2625.5420208697,-755.539816520534,40740.5201568349,48098.5187116147,56761.956493546,35708.4121119768,94219.6351228069,56250.664035465,27788.1332075819,71919.0800596142,-1108.25780865001,1054.31235454999,-1121.59342226539,-10330.9857419709,-8385.73948600682,-6158.67686686133,32731.0151071095,36821.1113427937,34704.6794043905,59587.0135361467,43955.9922704725,46177.6249057079,54784.1269562426,48998.9610682312,65602.0213295061,24998.8750115415,21136.7421219854,12846.1908542489,19264.6832918977,15884.557560365,2279.69339561623,4617.76414110108,15090.1656093433,9258.76226613697,7732.20704517135,4583.74325440807,10026.4376535944,7709.82463230818,35352.557397867,38805.9840995861,70075.8792711446,4413.73640992676,5601.41203617863,5863.78899173113,3767.58423101248,9059.75915891295,10400.00866918,55334.2422776066,48542.1721814951,26583.2422477495,70625.1954838347,33240.0145273348,-100733.83939956,-94004.7643876308,-80080.166503474,12042.0254373123,17642.8468433216,29303.7986078583,45442.2783842227,18645.3996926827,40608.7246794088,19814.4625891091,5813.96365576649,-31725.1277180832,-36975.3510204335,41849.536007332,40769.2153423197,32338.3571117949,48393.1349480926,63141.4342654138,64032.9430865956,24521.4218159837,20726.2642514637,29988.2179623046,30264.1213855942,22269.1052869422,33985.8988478213,19457.6147878887,15486.4757127871,12972.5494377699,22302.8617607665,47742.8652660591,26629.082606025,24414.5874798462,28757.0002606907,36730.6772096537,31877.2932165487,48820.1901065623,38923.6600056842,19106.2903320408,11931.0600683413,10341.0880828904,12344.2712755809,52396.2456598193,73940.4307036963,49367.8932425499,17464.8603742314,61243.5371485331,70276.9494596189,85638.6694835602,98293.6006977084,87791.9180565858,91073.0309435753,78520.1195538481,75904.5219519277,64378.085042543,76367.7997650417,94467.6094074266,99413.6427120825,102741.712155282,90567.0861566023,88141.8734650492,85501.8980528667,75403.3807041291,64757.1116180956,95420.1607333452,75336.2079065363,69384.311336165,70556.6254034297,99589.3032776734,88197.7002333021,93213.4693461914,79609.9429317397,-4967.76542923954,61484.6531383242,58112.7159464577,8772.37993375351,-2605.80901287807,-52.3702624304324,87280.7181208612,86342.3425455585,75380.41086878,58336.0031087982,24053.1775449266,38356.9883980477,-35706.2039260674,-55107.9970217601,-34880.9997997257,-42632.585818672,-68580.8320444179,-40524.3166684949]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3002.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3002.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3002.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3002_field1":[0,0,0,0,153.06814753521,0,0,0,0,317.460727508572,326.707291254914,-108.039027668005,128.918949225301,84.2100744764573,0,0,202.061608111607,139.392314667147,10.3426751431989,0,17.9425436196533,0,0,115.768334729195,0,0,0,0,0,0,0,153.06814753521,0,0,0,0,317.460727508572,326.707291254914,-108.039027668005,128.918949225301,84.2100744764573,0,0,202.061608111607,139.392314667147,10.3426751431989,0,17.9425436196533,0,0,115.768334729195,0,0,0,0,0,0,0,153.06814753521,0,0,0,0,317.460727508572,326.707291254914,-108.039027668005,128.918949225301,84.2100744764573,0,0,202.061608111607,139.392314667147,10.3426751431989,0,17.9425436196533,0,0,115.768334729195,0,0,0],"Archive3002_field2":[0,0,0,0,1478.98293467286,0,0,0,0,1282.84123830902,1012.34584415348,1176.43989157977,1257.52229991162,1192.32870647704,0,0,1330.12401744479,1261.15616349122,823.322899248609,0,771.991476075294,0,0,1268.65051600039,0,0,0,0,0,0,0,1478.98293467286,0,0,0,0,1282.84123830902,1012.34584415348,1176.43989157977,1257.52229991162,1192.32870647704,0,0,1330.12401744479,1261.15616349121,823.322899248609,0,771.991476075294,0,0,1268.65051600039,0,0,0,0,0,0,0,1478.98293467286,0,0,0,0,1282.84123830902,1012.34584415348,1176.43989157977,1257.52229991162,1192.32870647704,0,0,1330.12401744479,1261.15616349122,823.322899248609,0,771.991476075294,0,0,1268.65051600039,0,0,0],"Archive3002_field3":[0,0,0,0,-2.94606573359155,0,0,0,0,-7.46828033890167,-8.12187032469344,-6.9743648567694,-3.94469375451376,-5.848370775773,0,0,-4.51589120413951,-3.80413612057037,-7.42990236269174,0,-6.53929621578351,0,0,-4.22605181468272,0,0,0,0,0,0,0,-3.02938902191596,0,0,0,0,-7.10406841377764,-9.06488604023314,-6.60369821595199,-3.84624400271528,-6.70629894574898,0,0,-4.97188696127012,-3.77059803122724,-7.90682793905216,0,-6.69094845038941,0,0,-3.97180620485879,0,0,0,0,0,0,0,-3.27935888688922,0,0,0,0,-6.01143263840557,-11.8939331868523,-5.49169829349977,-3.55089474731983,-9.28008345567695,0,0,-6.33987423266195,-3.66998376319784,-9.3376046681334,0,-7.14590515420711,0,0,-3.20906937538699,0,0,0],"Archive3002_field4":[0,0,0,0,1486.88569101552,0,0,0,0,1321.55920466233,1063.78932458994,1181.41097496376,1264.11945276275,1195.31304869197,0,0,1345.39183457069,1268.84181738772,823.421381071303,0,772.227645451425,0,0,1273.92868661788,0,0,0,0,0,0,0,1486.88585844417,0,0,0,0,1321.55719664513,1063.79694232164,1181.40884490924,1264.1191493832,1195.31755419976,0,0,1345.39344242347,1268.84171727984,823.425822575605,0,772.228944546641,0,0,1273.9278685697,0,0,0,0,0,0,0,1486.886388746,0,0,0,0,1321.55177482339,1063.82481075626,1181.40315250545,1264.11828524781,1195.33476519404,0,0,1345.39919327366,1268.84142227505,823.4408043188,0,772.233020509306,0,0,1273.92571887072,0,0,0],"Archive3002_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3003.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3003.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3003.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3003_field1":[0,0,0,0,153.068211215214,0,0,0,0,317.461031294575,326.706606098607,-108.039133443433,128.919074841181,84.2100917763113,0,0,202.061677811192,139.392283910315,10.3434480991006,0,17.9417896928519,0,0,115.768363115146,0,0,0,0,0,0,0,153.068247772747,0,0,0,0,317.460872313243,326.707202657052,-108.039079275472,128.919001594695,84.2100700474487,0,0,202.061674792074,139.392353846944,10.3428407993791,0,17.9423771768122,0,0,115.768373167155,0,0,0,0,0,0,0,153.068286354821,0,0,0,0,317.46070452136,326.7078322781,-108.03902210278,128.918924289893,84.2100471054431,0,0,202.061671617781,139.392427660332,10.3421998472931,0,17.9429972159357,0,0,115.768383775388,0,0,0],"Archive3003_field2":[0,0,0,0,1478.9832315238,0,0,0,0,1282.84202889772,1012.34407125173,1176.44068221335,1257.5224420249,1192.32734471867,0,0,1330.12343365832,1261.1564335237,823.321820992047,0,771.991308030961,0,0,1268.65146469587,0,0,0,0,0,0,0,1478.98336931297,0,0,0,0,1282.84163071444,1012.34554472523,1176.44021429669,1257.52250691691,1192.32846750543,0,0,1330.1241080529,1261.15648570213,823.322717548666,0,771.991570148048,0,0,1268.65093517857,0,0,0,0,0,0,0,1478.98351473657,0,0,0,0,1282.8412104638,1012.34709987654,1176.43972044229,1257.52257540555,1192.32965253505,0,0,1330.12481983508,1261.15654077463,823.323663804344,0,771.991846787553,0,0,1268.65037630635,0,0,0],"Archive3003_field3":[0,0,0,0,-2.94606537082247,0,0,0,0,-7.46827984740922,-8.12187178090145,-6.97436433878693,-3.94469323239163,-5.84837174909807,0,0,-4.51589135231494,-3.80413547766891,-7.42990316568661,0,-6.53929643051335,0,0,-4.22605114251001,0,0,0,0,0,0,0,-3.02938943357411,0,0,0,0,-7.10406787152905,-9.06488569203097,-6.60369791315129,-3.84624551488736,-6.70629905145705,0,0,-4.97188803488786,-3.77059967427867,-7.90682767365293,0,-6.69094820064169,0,0,-3.97180599254782,0,0,0,0,0,0,0,-3.27935874709851,0,0,0,0,-6.01143199052379,-11.8939340035954,-5.49169773342085,-3.55089502280867,-9.28008402995169,0,0,-6.3398749593386,-3.66998405100379,-9.3376049741374,0,-7.14590487095006,0,0,-3.2090687716973,0,0,0],"Archive3003_field4":[0,0,0,0,1486.88599284356,0,0,0,0,1321.56004506073,1063.78742701172,1181.41177194056,1264.11960694346,1195.31169155705,0,0,1345.39126787771,1268.84208240375,823.420312660121,0,772.22745994334,0,0,1273.92963396005,0,0,0,0,0,0,0,1486.88630109396,0,0,0,0,1321.5576123364,1063.79663016275,1181.40917098661,1264.11936065362,1195.31731551426,0,0,1345.39354202179,1268.84204184818,823.425642976572,0,772.229034721065,0,0,1273.9282895038,0,0,0,0,0,0,0,1486.88698001695,0,0,0,0,1321.55174226892,1063.82617187507,1181.40298157541,1264.11855676204,1195.33570694908,0,0,1345.39999609513,1268.84180968733,823.441562798808,0,772.233401642258,0,0,1273.92558421071,0,0,0],"Archive3003_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive3003_field6":[-8974878.19626389,-8366066.1,-2087125.70388987,-2705673.54748728,-5521370.54071888,-8688064.93489417,-5235639.69873174,-2375174.41924838,-5828649.19088772,-3806180.05720833,-7256378.94999626,-4105574.44394931,-5392253.6951135,-7043082.13971235,-6792765.87344136,-8526508.40720432,-6769736.82904098,-5859250.38171909,-6526920.36959567,-4281328.3313687,-5139121.41244037,-3679484.05777973,-2226453.075,-3922222.22722659,-7379726.64252778,-8838344.025,-2541305.025,-6725935.75764355,-6274549.575,-1569868.93965097,-2030990.80400353,-4138271.12092622,-6517835.43342456,-3931253.01622204,-1779204.6572666,-4366836.58308916,-2856003.81953848,-5440357.93021221,-3076682.48864679,-4048511.55188844,-5286095.84724615,-5094814.22608809,-6395635.38632066,-5081624.31324755,-4392517.90930143,-4897842.6531254,-3213080.61053802,-3853921.0777777,-2768662.36680194,-1669839.80625,-2932687.35667042,-5524349.2027871,-6628758.01875,-1905978.76875,20891.4752300172,0,-18098.6517110051,-6942.57404425644,11027.2245822871,-7146.89230378971,-18093.0225717875,8704.63199452682,18601.1079303643,-5472.43212666186,7705.30255606909,9992.28509544697,-17284.4385510465,-15136.6936733743,-959.394078419647,-3016.31996893666,-17286.3938551745,7679.55379098728,-10609.427539208,-8337.51606777212,1679.95357717559,-36197.3034220101,0,35916.984810829,41782.9504600344,0,0],"Archive3003_field7":[-8950359.26822411,-8366066.1,-2118340.25290216,-2746850.70667695,-5527829.18363632,-8585266.31989525,-5211502.55250902,-2484495.28404428,-5836561.36833794,-3841744.57391333,-7213005.79547602,-4163816.6117871,-5343142.0572868,-6953583.32277728,-6765215.09642113,-8458693.328793,-6682094.31701425,-5847782.62636854,-6467381.41190009,-4276814.04933057,-5135972.06627236,-3643286.85,-2325079.38080431,-4036968.85767475,-7421510.25,-8747522.56144821,-2637544.43835391,-6701416.80480197,-6274549.575,-1601083.48594753,-2072167.96485553,-4144729.66072824,-6415036.85934473,-3907115.96200996,-1888525.53082817,-4374748.81654151,-2891564.47276974,-5396984.83994462,-3134926.35050803,-3999398.20569568,-5196597.08953631,-5067263.54604614,-6327820.35197763,-4993982.21217827,-4381051.15271777,-4838303.74819913,-3208566.40477162,-3850771.75270114,-2732465.1375,-1768466.12814507,-3047434.47461859,-5566132.6875,-6537936.62835394,-2002218.19846107,45410.5047736698,0,-49313.1909069511,-48119.7470169542,4568.99056530479,95651.4022301749,6043.89739647291,-100616.289394589,10688.8964903616,-41026.6670718208,51077.579731979,-48254.1580925275,31832.8213444018,74361.1224873453,26591.0872622029,64798.4980119592,70353.5114230774,19143.3065827127,48929.1307378928,-3823.38107158736,4829.23968407471,0,-98626.3818139023,-78830.7776647384,0,90821.0095473397,-96239.4940339085],"Archive3003_field8":[-8995770,-8366066.1,-2069027.1,-2698731,-5589966.01656247,-8680918.05,-5217546.6,-2383879.05,-5847250.5,-3605769.65796358,-7418544.23876171,-3953823.31222214,-5320223.65917677,-7205577.65003963,-6791806.35,-8523492.075,-6873794.59331307,-5852529.59512789,-6599155.79117606,-4272990.75,-5178262.80071366,-3643286.85,-2226453.075,-3860516.26849835,-7421510.25,-8838344.025,-2541305.025,-6746827.5,-6274549.575,-1551770.325,-2024048.25,-4206868.82542424,-6510688.5375,-3913159.95,-1787909.2875,-4385437.875,-2655519.70800049,-5602522.77659987,-2924918.81691777,-3976473.34324464,-5448591.22541665,-5093854.7625,-6392619.05625,-5185681.37735802,-4385796.55146755,-4970078.0229572,-3204743.0625,-3893062.41974834,-2732465.1375,-1669839.80625,-2870980.94050833,-5566132.6875,-6628758.01875,-1905978.76875,0,0,0,0,-57577.5661325125,0,0,0,0,195132.055003462,-154455.819640545,161775.326787788,54772.561093381,-177629.081136644,0,0,-121339.601905048,14401.0488079604,-82844.3106163686,0,-37461.152831561,0,0,97623.9849744631,0,0,0],"Archive3003_field9":[39695.5639837437,0,-42669.4043982628,40008.333003907,-1660.55925199433,10170.9818156305,-73693.9446393224,-3223.84982281497,69135.0139888888,-33289.0847411395,35997.1050014771,30122.4526163957,-45438.4717184389,-16551.0622580341,-38021.2269286352,-18329.5832812973,10147.8106793369,42720.9144920832,-53387.6466582927,74912.6743813962,70630.904908431,-73135.4322123039,-12203.3765842217,-309.267009769351,64736.0452932617,14655.0826742258,4419.10203338872,39695.4537082647,0,-42669.4329369465,40008.3725455271,-1660.72719243735,10170.9669794413,-73693.8747198566,-3223.84971636605,69134.8498643986,-33290.4989020974,35996.9909672739,30122.7954172791,-45439.0794066661,-16551.0347487065,-38021.1387810722,-18329.5777022421,10147.7437317799,42720.8869360059,-53387.562325835,74912.6552083843,70630.7536348623,-73135.4896222131,-12203.37625168,-309.26302278317,64735.8311175702,14655.0762989592,4419.10232650302,39694.9993275167,0,-42669.5176448624,40008.4870277135,-1661.23650241074,10170.9257478241,-73693.5889603948,-3223.85073321506,69134.1864063661,-33292.8196755272,35996.4109810195,30123.2584256147,-45440.2997567963,-16550.7590115579,-38020.7939489859,-18329.5163371867,10147.3725730383,42720.4130930125,-53387.1641978153,74912.5816607084,70630.3139000658,-73135.65407635,-12203.3812133748,-309.258042880372,64734.9780804999,14655.0205745335,4419.10479662346],"Archive3003_field10":[-259.683379596621,0,212.885087258963,-224.08480183227,-21.6016085326237,29.5287017928892,406.106815096833,-4.89612196690042,-420.53159080028,-37.2497477164173,-27.0324733232099,35.2208627092761,-94.203795100984,-110.250595237749,344.622324498202,88.2476782886195,108.697629625653,135.539187153154,152.258084016957,-528.882034390834,-224.342289891338,425.770174517925,0,-25.6350148202184,-519.366759193241,0,0,-289.833304604837,0,202.503360373625,-212.17567611877,-29.3349221174569,30.0844384766448,408.455779175457,-4.96800539328055,-436.866980889966,-14.700317809262,-49.8807711132624,37.2948702345454,-63.6523556858811,-110.113080322419,366.742242161747,102.699434986147,100.386433026262,134.061919527845,191.298077429891,-517.61999263214,-229.959924566985,405.006720747249,0,-25.5415637961743,-579.666609209675,0,0,-380.281406005686,0,171.357922935567,-176.447904659295,-44.3350653317445,31.7516446987821,415.501688576844,-5.18366434003706,-485.872000746152,25.5030323898891,-86.7599469557171,51.1519245838114,14.8511810155866,-111.157245105424,433.101421896907,146.054606148417,75.1878547087449,139.34891601341,274.22826699677,-483.833228817904,-199.780532739423,342.715845871134,0,-24.0099011965784,-760.562812011372,0,0],"Archive3003_field11":[-182.161456482223,0,143.542391711253,142.635481463131,-213.105426384663,-225.390203838693,36.6281598548201,229.53160156267,-65.0871948001049,-334.136867878961,185.041173400613,-185.778576255386,-178.362447461589,207.254436793631,-119.983725748453,-224.701207408402,299.889057442158,-77.7531876025809,107.255236658944,84.2968713963208,-108.921998501993,0,287.084783422506,-127.787164987731,0,-364.322912964445,285.270962926263,-203.311390715662,0,136.542202070494,135.054912570674,-148.790739585833,-252.722828971648,53.0644745913917,217.040746361569,-51.2488022880027,-263.987874618992,149.724582475568,-117.356991739908,-102.882648515015,184.864117940077,-127.685148030095,-245.773389459449,314.117043901446,-12.4800169111472,88.2594718951376,98.3749778343023,-110.130486740445,0,273.084404140988,-69.888651100063,0,-406.622781431324,270.109825141347,-266.761048119687,0,115.541538171227,112.313066718982,75.0236358959173,-334.720424278091,102.372928873029,179.567961257652,-9.73564274236685,-122.220986423402,121.985633074647,21.8042641409023,135.335933443547,193.029182141735,-150.789464461617,-308.989878813274,414.947309114055,190.59846257999,81.7449423008738,140.609069890428,-92.7716187480714,0,231.083076342454,37.9155482446115,0,-533.522096239373,224.626133437965]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3004.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3004.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3004.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3004_field1":[0,0,0,0,-53.9774577536049,0,0,0,0,2.25560832581177e-05,0.121225554960656,-63.2002539950366,-40.8172579581843,3.95429198699505,0,0,-49.9784977044797,-51.143185273313,6.68164816186118,0,-22.9007317474797,0,0,-189.345367641073,0,0,0,0,0,0,0,-53.9775133375909,0,0,0,0,2.25483745834657e-05,0.12122498573797,-63.2001510202785,-40.8174063218833,3.95438912292265,0,0,-49.9786156062275,-51.1431120116276,6.68167937690604,0,-22.9005524610407,0,0,-189.345502288794,0,0,0,0,0,0,0,-53.9776560028723,0,0,0,0,2.25300692613802e-05,0.121233346223971,-63.2000399407088,-40.8178333221258,3.9540313946205,0,0,-49.9780200988525,-51.1425513101237,6.68131636318328,0,-22.9003587168935,0,0,-189.345573706848,0,0,0],"Archive3004_field2":[0,0,0,0,302.876141735644,0,0,0,0,3.06821603028778e-05,0.105488488433669,76.2684578161735,75.2065917499592,43.5286756274155,0,0,69.9792924472366,107.107742240998,25.156519552912,0,45.2288186836859,0,0,132.704547454468,0,0,0,0,0,0,0,302.876327036677,0,0,0,0,3.06721776877064e-05,0.10548919944592,76.2682844325278,75.2065845338745,43.5288176937204,0,0,69.9794988900778,107.108045157649,25.156572384673,0,45.228856597897,0,0,132.704262580618,0,0,0,0,0,0,0,302.876059498889,0,0,0,0,3.06526498850089e-05,0.105499166909755,76.2680893447146,75.206401710949,43.5294238323769,0,0,69.9804069137344,107.108263670356,25.1567246349894,0,45.2286895471183,0,0,132.703811305152,0,0,0],"Archive3004_field3":[0,0,0,0,-0.162389312808852,0,0,0,0,-1.00522862005838e-05,-0.00033267619342459,-0.295399936054058,-0.0626671637281048,0.190295829215139,0,0,0.229252869964238,-0.0328837454980018,0.0072982596926287,0,-0.184294524892391,0,0,-0.291521751809365,0,0,0,0,0,0,0,-0.20488666794327,0,0,0,0,-1.00168986317627e-05,-0.000736089283270711,-0.195871615077295,-0.0779018362566447,0.0496590313838459,0,0,0.0622062838977885,-0.0795050180946286,-0.0155466281205154,0,-0.126488815462128,0,0,-0.197301765679117,0,0,0,0,0,0,0,-0.332359524516069,0,0,0,0,-9.91671452119866e-06,-0.00196584510131968,0.102713069458366,-0.123607168304082,-0.372252657528039,0,0,-0.438945290269847,-0.219385914465704,-0.0840843831877304,0,0.0469406177197098,0,0,0.0853538553330617,0,0,0],"Archive3004_field4":[0,0,0,0,307.648418732327,0,0,0,0,3.93855342817268e-05,0.160697128291046,99.0516886469726,85.5691762087459,43.7083314654974,0,0,85.9942100439962,118.691595865947,26.0287331892957,0,50.6963856558203,0,0,231.219052301406,0,0,0,0,0,0,0,307.648636278278,0,0,0,0,3.93643231703725e-05,0.160698507131663,99.0512426219711,85.5692531508405,43.7080956936816,0,0,85.9941634789431,118.691859724139,26.028795883381,0,50.6961613102456,0,0,231.218899469849,0,0,0,0,0,0,0,307.648509224394,0,0,0,0,3.93132317774878e-05,0.160721694249022,99.0508811206401,85.5693499692123,43.7102239240362,0,0,85.9956540633362,118.691991436519,26.0289810190318,0,50.6957886903202,0,0,231.218630526542,0,0,0],"Archive3004_field5":[-26529968.9060453,8366066.1,-30294254.6984428,2034491.26647129,5482395.74467873,8418518.95105071,5264725.52805784,2710012.69630203,5664276.21697956,4160060.38373763,7070274.08645235,4092349.58592229,5247337.99315589,7065707.82133845,6715763.87498607,8126219.20993201,6753812.46403154,5920901.12424514,6579988.99956442,4567100.769693,5168764.30703358,16357817.604705,18921283.8249123,3864680.68355727,27017879.7705769,26283119.5193333,3559554.03110137,-28769091.015879,6274549.575,-30810443.6580464,1359893.33651184,4099315.51739531,6248319.75651472,3960352.91343713,2114071.96275743,4202460.76862682,3209851.34219596,5254472.67166265,3063462.60620226,3903595.54142496,5308722.17564906,5017823.0372051,5995342.07329677,5065645.45876215,4454121.94358029,4950905.63596069,3498770.86031373,3883601.16108218,15446413.6286064,18364157.4370488,2875140.20425294,25156039.6200029,24067018.6643336,2924152.7569279,-35512605.8761098,0,-32361871.6017921,-664126.499111269,-49976.080600179,-262358.588666925,47197.4911787456,326173.1387848,-182978.456913451,359306.413962875,-193517.873208598,-23209.8606288226,-127634.450944744,37763.7525709612,-76030.6721804992,-397277.83626427,1289.497733374,53909.9816746303,63671.4515499689,294000.318841705,28012.6156849215,12713756.8569597,16694158.0945437,-93466.5102253838,19587752.5118918,17436052.4675813,1018149.18588499]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3005.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3005.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3005.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3005_field1":[1002.83413840792,933.169209873948,236.244871886963,306.035578751545,621.030111188425,961.447328665088,584.921824595431,274.067890679615,655.905576184887,429.427533317792,811.03931648037,463.732714384476,603.10144221964,410.493520875593,255.619269654182,352.05192518697,332.550521470525,407.935168553066,473.100858975582,291.380694610794,530.397527482341,609.389959792691,564.195995267735,668.294615303461,767.905508186844,759.980916282327,743.431705062201,373.880239118368,480.595655791072,383.825459336725,828.850195341849,683.53377610287,980.940415402838,671.381352770285,637.168354781271,529.364002442999,945.970856989674,566.70979480754,516.191575256307,727.028754272326,881.262691070864,848.97143215157,907.117034903996,840.373607877195]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3006.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3006.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3006.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3006_field1":[1002.48726345365,932.613761005154,235.928677628409,306.246351712827,621.016570372704,963.447067491478,584.928570244464,272.409916787884,655.10136059174,429.256793581284,811.2664897242,463.93017238482,603.310673683013,410.492903389993,254.235903301827,351.494747171213,332.77186779078,407.862716573077,473.651299016423,289.923955229016,530.385310026212,609.413144439459,564.395411242112,667.669305864804,767.444143298832,759.127149974465,743.426717393063,373.552321727607,480.828000080039,383.613338164495,828.784688786928,683.387562446207,982.52689779218,671.650921116975,637.512634291838,529.139101584274,947.512878510217,567.317301746057,516.113138654808,727.265790473246,881.82092983321,849.276362636713,906.755151624785,840.740540246321]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3007.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3007.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3007.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3007_field1":[1002.83413840792,933.169209873948,236.244871886963,306.035578751545,621.030111188425,961.447328665088,584.921824595431,274.067890679615,655.905576184887,429.427533317792,811.03931648037,463.732714384476,603.10144221964,410.493520875593,255.619269654182,352.05192518697,332.550521470525,407.935168553066,473.100858975582,291.380694610794,530.397527482341,609.389959792691,564.195995267735,668.294615303461,767.905508186844,759.980916282327,743.431705062201,373.880239118368,480.595655791072,383.825459336725,828.850195341849,683.53377610287,980.940415402838,671.381352770285,637.168354781271,529.364002442999,945.970856989674,566.70979480754,516.191575256307,727.028754272326,881.262691070864,848.97143215157,907.117034903996,840.373607877195,1002.83413840792,933.169209873948,236.244871886963,306.035578751545,621.030111188425,961.447328665088,584.921824595431,274.067890679615,655.905576184887,429.427533317792,811.03931648037,463.732714384476,603.10144221964,410.493520875593,255.619269654182,352.05192518697,332.550521470525,407.935168553066,473.100858975582,291.380694610794,530.397527482341,609.389959792691,564.195995267735,668.294615303461,767.905508186845,759.980916282327,743.431705062201,373.880239118368,480.595655791072,383.825459336725,828.850195341849,683.53377610287,980.940415402838,671.381352770285,637.168354781271,529.364002442999,945.970856989674,566.70979480754,516.191575256307,727.028754272326,881.262691070865,848.97143215157,907.117034903996,840.373607877195,1002.83413840792,933.169209873948,236.244871886963,306.035578751545,621.030111188425,961.447328665088,584.921824595431,274.067890679615,655.905576184887,429.427533317792,811.03931648037,463.732714384476,603.10144221964,410.493520875593,255.619269654182,352.05192518697,332.550521470525,407.935168553066,473.100858975582,291.380694610794,530.397527482341,609.389959792691,564.195995267735,668.294615303461,767.905508186845,759.980916282327,743.431705062201,373.880239118368,480.595655791072,383.825459336725,828.850195341849,683.53377610287,980.940415402838,671.381352770285,637.168354781271,529.364002442999,945.970856989674,566.70979480754,516.191575256307,727.028754272326,881.262691070865,848.97143215157,907.117034903996,840.373607877195,1002.83413840792,933.169209873948,236.244871886963,306.035578751545,621.030111188425,961.447328665088,584.921824595431,274.067890679615,655.905576184887,429.427533317792,811.03931648037,463.732714384476,603.10144221964,410.493520875593,255.619269654182,352.05192518697,332.550521470525,407.935168553066,473.100858975582,291.380694610794,530.397527482341,609.389959792691,564.195995267735,668.294615303461,767.905508186845,759.980916282327,743.431705062201,373.880239118368,480.595655791072,383.825459336725,828.850195341849,683.53377610287,980.940415402838,671.381352770285,637.168354781271,529.364002442999,945.970856989674,566.70979480754,516.191575256307,727.028754272326,881.262691070865,848.97143215157,907.117034903996,840.373607877195,1002.83413840792,933.169209873948,236.244871886963,306.035578751545,621.030111188425,961.447328665088,584.921824595431,274.067890679615,655.905576184887,429.427533317792,811.03931648037,463.732714384476,603.10144221964,410.493520875593,255.619269654182,352.05192518697,332.550521470525,407.935168553066,473.100858975582,291.380694610794,530.397527482341,609.389959792691,564.195995267735,668.294615303461,767.905508186844,759.980916282327,743.431705062201,373.880239118368,480.595655791072,383.825459336725,828.850195341849,683.53377610287,980.940415402838,671.381352770285,637.168354781271,529.364002442999,945.970856989674,566.70979480754,516.191575256307,727.028754272326,881.262691070864,848.97143215157,907.117034903996,840.373607877195]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3008.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3008.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3008.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3008_field1":[272.268414542953,272.329879854546,272.946436049276,272.884930159022,272.607083725304,272.299270089162,272.63852338181,272.915178827766,272.576663875595,272.776179542709,272.437766840794,272.74525916051,272.622475179914,272.460940624048,272.484379986929,272.314697808564,272.487605234388,272.57434968284,272.510867705088,272.73110609119,272.645526173677,272.792725433623,272.930624536357,272.760659124878,272.42252893727,272.283842301169,272.899851098599,264.884174564557,260.299924470492,261.171424557187,261.098725764896,262.435646278439,266.242317867428,262.75445303366,258.622313506927,261.923511089412,260.143682783833,263.460888222055,259.654907720941,262.004016826978,264.312258603818,264.429734429118,265.641823590348,263.62137332599,261.971986571506,263.227341917021,261.943615182693,261.1164900792,262.136375098988,258.806655076582,260.413543515824,263.271053902385,265.242470083702,258.329020215367,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive3008_field2":[0.000267218311431119,-1.35687871923232e-07,5.25214138829668e-19,4.4236170620048e-19,6.07990728502478e-11,0.00910478127250312,1.82746404713558e-11,1.1581945196343e-18,4.81199441004752e-11,-8.11947844985576e-15,-7.65963799618992e-07,-6.61865562591289e-15,5.09072640881523e-11,-7.87646784238698e-07,-2.71344877928151e-07,0.0043425546221652,-5.3328247677028e-07,5.9706631638706e-11,-2.54331220015511e-07,-9.20446357678103e-16,-3.60342017554847e-15,-5.7050375077085e-16,5.07351377673199e-19,-3.79807147427934e-15,-8.3016632905832e-09,0.00288893721718619,4.13564263704535e-19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3009.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3009.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3009.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3009_field1":[271.856472876669,271.944623282419,272.845420925044,272.75452181464,272.345657401033,271.901474940143,272.392439416615,272.799427202021,272.302182297831,272.593596959095,272.099751787486,272.548203097366,272.368312119425,272.133080771535,272.167940385088,271.923317421871,272.171496602319,272.298245227232,272.205688215977,272.528131328817,272.40241856866,272.618626839391,272.822351842776,272.570707398523,272.078476519805,271.878964944285,272.776858875454,248.297443046784,248.263324760846,248.130006485084,248.121862472403,248.168788603732,248.300653749628,248.171216232536,248.096523447827,248.185386174928,248.116972654354,248.229328092326,248.118862531806,248.162560665895,248.22196182639,248.223756364413,248.288740869613,248.196913479645,248.181438770571,248.199003307632,248.153196320434,248.162402488603,248.139589147193,248.107250614475,248.115087744206,248.239145981251,248.295509119817,248.100365361103,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive3009_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive301.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive301.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive301.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive301_field1":[0,0,0,0,11.1666777030935,0,0,0,0,14.6801679155055,14.8173674069677,0.719925017032611,12.3804734028856,0,0,8.71083567603623,19.6988377526476,5.93592802568333,12.2257331251905,0,9.41480889906515,7.83655710779641,12.7499423470256,10.7534334877628,10.4009206620105,0,6.76371332714988,-0.252175611421552,0,-10.3448601211847,0,10.5886089349864,0,0,10.8472191457535,12.3297523079076,0,0,-0.740855071236915,9.28766710312122,11.3430470708857,-12.9787767007806,20.4010911744302,6.72372388418485],"Archive301_field2":[0,0,0,0,111.724363051545,0,0,0,0,100.245009077106,105.684263657701,93.0668895668176,104.875811122665,0,0,79.3954720747422,46.4337931064369,93.020340720494,104.821489673309,0,109.206012663211,102.788734278425,108.942410595766,110.348401412465,111.725011324695,0,101.555828718034,77.1738812086802,0,60.8501616575992,0,112.473156409856,0,0,81.7931182675927,82.1664052380944,0,0,67.1821633295513,85.9426037361815,91.1832387783014,56.8226916091512,49.1821396012698,102.832484349879],"Archive301_field3":[0,0,0,0,112.281022395587,0,0,0,0,101.314210133113,106.717936457484,93.0696740387134,105.604033447196,0,0,79.8718952081774,50.4394820657045,93.209543659879,105.53204843923,0,109.611093546244,103.087028873009,109.685960160218,110.871123499594,112.208098219873,0,101.780814324599,77.1742932157495,0,61.7232395835056,0,112.970480887593,0,0,82.5092501428319,83.0863463014538,0,0,67.1862481157795,86.4429979649753,91.8860585233313,58.286078323708,53.2455385630214,103.052065968804],"Archive301_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3010.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3010.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3010.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3010_field1":[0,0,0,0,142.19721912515,0,0,0,0,219.265384109743,244.352363795245,-11.0321209152768,121.810400101882,0,0,151.148677455625,304.159335117164,52.8176668085338,155.293541533391,0,118.485037129767,113.722314994686,149.32494687931,124.785347378151,150.732240322552,0,-13.109596916085,-97.9553951145293,0,-222.212781553647,0,156.649181583479,0,0,57.429271407829,131.42228634087,0,0,-10.9615424554842,158.292288605977,153.476570786394,-158.345542999662,212.490629247238,5.7231481668797],"Archive3010_field2":[0,0,0,0,1586.68570929195,0,0,0,0,1430.03708205564,1160.81903366895,1296.70788728388,1409.63373816489,0,0,1287.24248882816,615.040463639737,1464.39388293064,1570.39440382871,0,1558.10158228797,1297.52502793447,1570.15491696092,1545.72017426605,1482.01013761642,0,1105.22219248825,1154.23663224221,0,738.776809892725,0,1512.48555539493,0,0,879.180363943307,955.261673819819,0,0,813.744145606331,893.802343083126,929.075039716247,470.81197218577,417.457251349491,1125.50598526091],"Archive3010_field3":[0,0,0,0,1593.04475429858,0,0,0,0,1446.74924044321,1186.25836419409,1296.75481592941,1414.88693871478,0,0,1296.08608809025,686.139689169121,1465.34608550054,1578.05407626561,0,1562.60015511068,1302.49912208957,1577.23948816185,1550.74892876099,1489.6557509272,0,1105.29993951861,1158.38571410471,0,771.472420194709,0,1520.57604918961,0,0,881.054046899462,964.259655287985,0,0,813.8179709994,907.710899534099,941.666335388548,496.726508394018,468.425900460424,1125.52053614453],"Archive3010_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive3010_field5":[-899.146828025197,-836.644746972163,-211.432081590382,-274.398661294904,-556.678722072356,-861.921061046228,-524.778537831474,-245.64983003239,-587.027869882573,-384.975997859834,-726.965117094089,-415.534131455567,-540.573858628779,-368.37564903568,-228.890622528253,-315.615557870779,-298.299989460295,-365.571252313957,-424.037084665013,-260.856679899811,-475.444267205557,-546.18244485536,-505.665395224007,-599.196282935719,-688.362618772155,-680.980154622461,-666.686221185765,-334.935139005103,-430.533424715488,-343.602277367484,-742.376525500566,-612.737890229582,-879.869318968832,-602.560122974702,-571.648236243889,-474.311996370739,-848.331052899989,-508.302076631676,-462.50827822929,-651.474634805261,-789.967672826776,-761.240907019435,-812.697116308988,-753.472686599089],"Archive3010_field6":[103.936274559074,96.7113884177201,24.4403496712983,31.718929222748,64.3489035329005,99.6331869911671,60.6614231299196,28.3957273537986,67.8570929199049,44.501042282598,84.0330451602764,48.0333892413197,62.4872726441119,42.5821360935464,26.4584580021754,36.4833687396975,34.4817872222369,42.2579637353101,49.0162824149307,30.153552965518,54.9586612036958,63.1355934074898,58.4520522287292,69.2636924658519,79.5708152561052,78.7174442638832,77.0651466147122,38.7166027639487,49.767222486196,39.7184748102,85.8145165791276,70.8290254791011,101.707903828458,69.6525332991477,66.0792944840264,54.8277771159197,98.0622591138483,58.7568376477183,53.463334233702,75.3067734889397,91.3157833365739,87.9951321091169,93.9431781120532,87.0971698795022],"Archive3010_field7":[1003.08310258427,933.356135389884,235.87243126168,306.117590517652,621.027625605256,961.554248037396,585.439960961394,274.045557386188,654.884962802478,429.477040142432,810.998162254365,463.567520696887,603.061131272891,410.957785129226,255.349080530429,352.098926610477,332.781776682531,407.829216049267,473.053367079944,291.010232865329,530.402928409253,609.31803826285,564.117447452736,668.459975401571,767.933434028261,759.697598886344,743.751367800477,373.651741769052,480.300647201684,383.320752177684,828.191042079694,683.566915708683,981.577222797291,672.21265627385,637.727530727915,529.139773486659,946.393312013838,567.058914279394,515.971612462992,726.781408294201,881.28345616335,849.236039128552,906.640294421042,840.569856478592],"Archive3010_field8":[620000000000000],"Archive3010_field9":[0,0,0,0,141.397877829498,0,0,0,0,218.053863969759,242.949875672934,-9.77276588875404,121.615811367146,0,0,150.331257405917,298.916936559593,53.6873625957816,155.622846255339,0,118.993674206698,111.799829475931,148.782678449618,124.567561140284,149.182074796581,0,-13.7758843818147,-96.5688322325005,0,-219.107536374591,0,154.850331472098,0,0,57.674914712135,129.427568805788,0,0,-9.74448867893965,155.696145648394,151.897596863428,-156.605414303238,209.198389776458,3.74879962181743],"Archive3010_field10":[0,0,0,0,1561.38204348208,0,0,0,0,1408.07338774581,1141.59139043183,1272.74057580196,1388.40253098069,0,0,1264.76231602864,603.706217473894,1438.84146618394,1545.09765971537,0,1534.08477961796,1275.60508224892,1544.91726707669,1521.04004661492,1459.36133771795,0,1083.7510254696,1131.86409856559,0,721.156835548392,0,1490.08491905598,0,0,858.394098256671,935.08521798106,0,0,795.830489181762,877.355130355273,909.079504179923,460.386476355027,408.526492054588,1104.10705990598],"Archive3010_field11":[0,0,0,0,1567.7714264404,0,0,0,0,1424.85723947001,1167.15703519174,1272.77809544547,1393.71876417306,0,0,1273.66526332446,673.65609325442,1439.84273367366,1552.91508085102,0,1538.69282365152,1280.4950322942,1552.06496240278,1526.13233393921,1466.96653181541,0,1083.83857663257,1135.97617799866,0,753.707697953466,0,1498.10937222724,0,0,860.329485551283,943.999926087742,0,0,795.890144788146,891.063025004676,921.682388273151,486.293083849325,458.974793420608,1104.11342407963],"Archive3010_field12":[9023504.88173451,8396257.12205625,2121854.14097089,2753763.43725098,5586621.683591,8649920.85786736,5266483.23761768,2465250.80376795,5891194.50182965,3863476.67340208,7295552.93806295,4170146.79565943,5424999.23287074,3696881.71473194,2297061.59816321,3167400.96103473,2993628.32322742,3668737.82685951,4255479.28797675,2617861.12250294,4771382.7512961,5481284.92906379,5074670.8102719,6013312.19291819,6908152.54782841,6834064.86913381,6690616.2419185,3361285.12905378,4320674.15307749,3448265.32281745,7450216.13060925,6149210.7533247,8830042.93352318,6047070.44692861,5736850.18909626,4760019.70013808,8513536.56441472,5101131.56930715,4641561.95224621,6537958.38929072,7927823.27645058,7639532.08371146,8155927.56134397,7561573.09781442],"Archive3010_field13":[-901.947443960666,-839.677582872929,-216.691785467709,-279.875517977435,-562.07725351252,-859.041518675631,-529.649796384168,-253.779561276215,-591.397465593987,-391.205479292867,-730.086638947059,-420.965565458299,-545.551921288233,-373.713113800826,-235.946799614634,-323.060297519233,-304.156039120758,-371.995625086718,-429.15468049912,-268.482483165639,-480.974362391259,-551.307558393499,-510.879107902264,-604.847221266122,-693.191645851847,-685.176430362234,-671.0557141698,-342.090374082732,-435.284520498877,-349.639611179348,-745.260667299339,-617.979244424329,-879.162685182081,-606.817534138247,-576.326900564963,-479.681356903458,-847.46457662631,-512.407904482169,-467.848321199442,-655.515986100792,-790.833725565314,-763.777568594642,-815.291971045106,-755.645498895089],"Archive3010_field14":[104.260009879859,97.0619670496516,25.0483416134974,32.3520227978279,64.972943154119,99.3003282220468,61.2245129953346,29.3354781846006,68.3621934056299,45.221135010953,84.3938753853743,48.6612322121916,63.062708458618,43.1991167534215,27.2741120601431,37.3439384264327,35.1587133552894,43.0005847973741,49.6078474731807,31.0350525796703,55.5979088478445,63.7280274696957,59.0547278491167,69.9169088922671,80.1290234027217,79.202509943726,77.5702352257348,39.5437073639799,50.3164222168822,40.4163563631526,86.1479070160632,71.434896302049,101.626220969793,70.1446658873001,66.6201215484036,55.448444745656,97.9620993701078,59.2314480644601,54.0806129194557,75.7739307815529,91.4158941220537,88.2883558026522,94.2431286049959,87.3483346596286],"Archive3010_field15":[1006.20745384052,936.739549922581,241.740127081206,312.227540775263,627.050196666639,958.341846897678,590.874309379503,283.115039460815,659.759658999617,436.42661430382,814.480514332433,469.62679767049,608.614629746852,416.912230554247,263.220911674777,360.404235945666,339.314752476048,414.996209884092,478.762527972301,299.517535745309,536.572271239103,615.035585863195,569.933835751381,674.764130158389,773.320669254569,764.37894030596,748.625949395535,381.634081446712,485.600942715759,390.055967542501,831.408574315403,689.414140726378,980.788906151874,676.962200025548,642.947022113366,535.129801649114,945.426675996417,571.639352546629,521.928934118897,731.289916882345,882.249619687367,852.065924397294,909.535099650102,842.993833554717],"Archive3010_field16":[625000000000000],"Archive3010_field17":[0,0,0,0,139.264800097755,0,0,0,0,215.516681817379,239.867737883618,-9.75611211926664,120.055487195003,0,0,148.176575093111,293.319284015791,53.3022573730664,154.225949232631,0,117.781553015111,109.276990633161,146.867318378572,122.775972898008,146.674131023264,0,-14.7561702108752,-95.0569754109497,0,-215.262475302019,0,152.138468016064,0,0,56.7128754113265,127.237693687173,0,0,-9.70897567586317,152.841013240584,149.217139065366,-154.356097911073,205.567696175426,2.08712293670562],"Archive3010_field18":[0,0,0,0,1527.274572189,0,0,0,0,1377.60710201606,1115.0413812745,1242.51892676139,1358.96343027928,0,0,1233.36641918378,590.300489277576,1404.63313794357,1510.8753836167,0,1500.95790322223,1247.30679506797,1510.85512222978,1487.52748915609,1426.65966821955,0,1057.25165709603,1102.11711953629,0,702.08418837427,0,1458.20855805626,0,0,836.442160479632,912.679233630461,0,0,776.76215424322,856.824783124327,882.702982522468,448.443164931199,398.560550051091,1074.22089512636],"Archive3010_field19":[0,0,0,0,1533.61087091914,0,0,0,0,1394.3632122466,1140.54978568756,1242.55722809212,1364.25618006372,0,0,1242.23549352631,659.159214467098,1405.64411671314,1518.72646261123,0,1505.57202467233,1252.08454255476,1517.97668281686,1492.58566605608,1434.17959462396,0,1057.35462877485,1106.20882917704,0,734.343339888304,0,1466.12356649731,0,0,838.362593431538,921.505732046804,0,0,776.822829526297,870.349978057367,895.22640150127,474.264775347951,448.451323744172,1074.22292267863],"Archive3010_field20":[9051610.82703498,8426693.54100705,2174638.5829933,2808727.14447989,5640799.34766785,8621022.83606673,5315369.38608685,2546837.77853042,5935046.14763898,3925993.44415587,7326879.37641627,4224654.65768027,5474957.22783783,3750446.53625298,2367874.78061661,3242113.61359295,3052397.47088146,3733210.45498902,4306837.58625738,2694390.86253158,4826880.74044459,5532718.67224055,5126993.7016372,6070022.91915493,6956614.87686017,6876177.13983614,6734466.85679387,3433092.42085589,4368354.39245415,3508853.7711398,7479160.31056927,6201811.04472213,8822951.41829385,6089796.25012382,5783803.53311676,4813904.61578105,8504840.92912829,5142336.13845839,4695152.64767875,6578515.8955927,7936514.66129503,7664989.08071545,8181968.5633794,7583378.63807652],"Archive3010_field21":[-904.775969241056,-842.732165080302,-221.949827147284,-285.342718181109,-567.463367973218,-856.423441586687,-534.514927493422,-261.899664918839,-595.760589701447,-397.399175085845,-733.207030638454,-426.385138803059,-550.521444349247,-379.046565437722,-243.003217035552,-330.447752245639,-310.002271948636,-378.377601460481,-434.269659806586,-276.08659393748,-486.484275190651,-556.412354863181,-516.080657078842,-610.435810409647,-697.943238246829,-689.364355220853,-675.396132263936,-349.191097683598,-440.039008473456,-355.652950299214,-748.175533309954,-623.188251737813,-878.606913164544,-611.093933590963,-580.993140358368,-485.030307431771,-846.758831714093,-516.529353979881,-473.170928116848,-659.546469900338,-791.769100108083,-766.351432666514,-817.910024053843,-757.842385456438],"Archive3010_field22":[104.586971362652,97.4150594313109,25.6561414150622,32.9840001387106,65.5955474429237,98.9976933568036,61.7868945630347,30.2741161192988,68.8665458106362,45.9370911222461,84.754574970203,49.2877041582598,63.6371571439697,43.8156335184281,28.0897938994204,38.1978863010226,35.8345047181629,43.7383050761298,50.1991100757886,31.9140446645288,56.2348235225835,64.3181129939991,59.6559974376852,70.5629181062406,80.6782805388919,79.6866103090626,78.071962944359,40.3645107464137,50.866014065634,41.1114642657761,86.484848997661,72.0370280089512,101.561976876163,70.6389934140045,67.1595124078375,56.0667530946213,97.8805192602986,59.7078642550353,54.6958760963859,76.239831853256,91.524018115002,88.5858798938391,94.5457606867037,87.6022822883124],"Archive3010_field23":[1009.36294060371,940.147224511613,247.605968562346,318.32671831982,633.058915416141,955.421134943491,596.301822056457,292.173781038138,664.627135512083,443.336266208092,817.961605608657,475.672842961319,614.158601493217,422.86219895615,271.093010934972,368.645638546662,345.836776666798,422.115906536611,484.468769882375,308.000638602009,542.719098713235,620.73046785718,575.736654516527,680.998728515887,778.621518785721,769.050965529915,753.468095208295,389.555608430012,490.90502253909,396.76441456499,834.660382307615,695.225279746764,980.168890040707,681.732927004968,648.152652766206,541.097060526392,944.639350974391,576.237218234917,527.866804213234,735.786301753594,883.293118223085,854.937312560353,912.455784740546,845.444667744751],"Archive3010_field24":[630000000000000]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3015.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3015.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3015.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3015_field1":[0.127728462219238]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3019.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3019.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3019.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3019_field1":[8.43999429237551e-26,4.82896396332273e-26,-3.36852263373696e-09,-2.20220148066558e-09,3.20651772333366e-09,6.19590072989082e-09,-9.70658336958525e-10,-1.40031121795344e-08,-1.33992155679896e-10,-3.16059938178306e-09,4.58794219503557e-09,-1.7672023806631e-09,2.04713503982238e-09,-4.49957515661614e-09,-1.25960474729225e-08,-1.69925500331354e-08,-1.28564635065592e-08,-7.85574219164551e-09,-8.69898476567601e-09,-3.69551465178819e-09,-5.14026156652406e-09,-7.92374472022055e-10,-3.14083025432218e-09,-2.5114721172191e-09,1.00176751424825e-09,1.42197716775322e-09,8.18209639434122e-10,-8.26184120029297e-11,4.06979071373441e-09,6.1143099788699e-10,3.12201289590567e-09,3.25922938154685e-09,2.82985512474245e-09,3.02648528598061e-09,1.03735345731535e-09,1.71635999583843e-09,5.58296628492345e-10,1.63961195848238e-09,4.99937861258018e-09,4.75532712811629e-09,3.42231984225359e-09,7.79763023151947e-09,3.60685680988447e-09,4.83973255937335e-09,7.75669598667239e-09,5.33211836155125e-09,4.80358918945743e-09,5.50422732725071e-09,4.40110533365183e-09,9.94560245028057e-09,-1.10614906016526e-09,-8.41653948191953e-09,-3.77943581455148e-10,-1.49748982811967e-09,-8.78514975999699e-09,6.40209970842667e-10,-1.18234203849972e-08,-2.08339689598128e-09,3.0476120594758e-09,-1.63892706609358e-09,-3.53564289473632e-10,-3.70545106099033e-09,1.28526804151915e-09,-2.60949821672922e-09,-2.69834620804405e-09,3.4932372556882e-09,4.33782560301871e-09,3.39342658213524e-09,6.29333285563995e-09,5.94600364332895e-09,1.89553487418589e-09,5.87063264989216e-09,-9.44667670891855e-09,-1.2083271030773e-08,7.70516864190787e-11,1.29532214895128e-09,2.76408180486817e-09,7.67728430438213e-09,3.03227164660774e-09,2.15862103480388e-09,4.1968880179405e-09,3.36646268463359e-09,-3.04646169316266e-09,-3.92512555038977e-09,-8.79878051021798e-10,-6.96607435439127e-09,-5.50382952466792e-09,2.61676127778725e-09,4.44872262690887e-09,1.11949452367254e-09,2.98187026122403e-09],"Archive3019_field2":[-2.84343335565103e-25,-2.06795153138257e-25,-3.36852263373694e-09,-2.20220148066559e-09,3.20651772333381e-09,6.19590072989081e-09,-9.70658336958507e-10,-1.40031121795345e-08,-1.33992155679862e-10,-3.16059938178309e-09,4.58794219503562e-09,-1.76720238066305e-09,2.04713503982249e-09,-4.49957515661615e-09,-1.25960474729226e-08,-1.69925500331355e-08,-1.28564635065592e-08,-7.85574219164553e-09,-8.69898476567604e-09,-3.69551465178819e-09,-5.14026156652416e-09,-7.92374472022099e-10,-3.14083025432218e-09,-2.51147211721909e-09,1.00176751424825e-09,1.42197716775326e-09,8.18209639434233e-10,-8.26184120029235e-11,4.0697907137344e-09,6.11430997886993e-10,3.12201289590561e-09,3.25922938154701e-09,2.82985512474246e-09,3.02648528598057e-09,1.03735345731532e-09,1.71635999583851e-09,5.58296628492419e-10,1.63961195848235e-09,4.99937861258018e-09,4.75532712811626e-09,3.42231984225359e-09,7.79763023151947e-09,3.60685680988447e-09,4.83973255937334e-09,7.75669598667238e-09,5.33211836155125e-09,4.80358918945745e-09,5.50422732725072e-09,4.40110533365179e-09,9.94560245028062e-09,-1.10614906016531e-09,-8.41653948191961e-09,-3.7794358145511e-10,-1.49748982811967e-09,-8.7851497599969e-09,6.40209970842693e-10,-1.18234203849972e-08,-2.08339689598131e-09,3.0476120594758e-09,-1.63892706609356e-09,-3.53564289473606e-10,-3.70545106099038e-09,1.28526804151914e-09,-2.60949821672922e-09,-2.69834620804405e-09,3.49323725568822e-09,4.33782560301854e-09,3.39342658213524e-09,6.29333285563994e-09,5.94600364332895e-09,1.8955348741859e-09,5.87063264989218e-09,-9.44667670891859e-09,-1.20832710307731e-08,7.70516864190872e-11,1.29532214895129e-09,2.76408180486819e-09,7.67728430438216e-09,3.03227164660775e-09,2.15862103480389e-09,4.19688801794049e-09,3.36646268463358e-09,-3.04646169316269e-09,-3.92512555038975e-09,-8.79878051021822e-10,-6.96607435439123e-09,-5.50382952466788e-09,2.61676127778727e-09,4.44872262690888e-09,1.11949452367253e-09,2.98187026122403e-09],"Archive3019_field3":[3.68743278488858e-25,2.55084792771484e-25,-2.44018280703143e-23,8.27180612553028e-24,-1.54682774547416e-22,1.81979734761666e-23,-1.75775880167518e-23,1.1745964698253e-22,-3.39402545088164e-23,2.48154183765908e-23,-4.96308367531817e-23,-4.98376319063199e-23,-1.17873237288806e-22,3.30872245021211e-24,2.64697796016969e-23,1.09187840857e-22,-6.28657265540301e-23,1.48892510259545e-23,3.14328632770151e-23,4.13590306276514e-24,1.00088854118916e-22,4.35303797356031e-23,-3.72231275648862e-24,-1.28212994945719e-23,-1.65436122510606e-24,-3.90842839431306e-23,-1.10945599658675e-22,-6.22970398828999e-24,9.0989867380833e-24,-3.10192729707385e-24,6.45200877791362e-23,-1.55509955159969e-22,-1.03397576569128e-23,3.59823566460567e-23,2.31610571514848e-23,-7.75481824268463e-23,-7.34122793640812e-23,3.8670693636854e-23,-8.27180612553028e-25,3.88774887899923e-23,0,4.96308367531817e-24,-3.30872245021211e-24,1.81979734761666e-23,6.61744490042422e-24,6.61744490042422e-24,-1.15805285757424e-23,-1.65436122510606e-24,3.80503081774393e-23,-4.13590306276514e-23,4.67357046092461e-23,7.27918939046664e-23,-3.77918142360165e-23,-2.06795153138257e-25,-9.42985898310452e-23,-2.60561892954204e-23,-1.48892510259545e-23,2.52290086828673e-23,1.65436122510606e-24,-2.58493941422821e-23,-2.5745996565713e-23,5.08716076720112e-23,1.17873237288806e-23,-2.48154183765908e-24,4.13590306276514e-25,-1.19941188820189e-23,1.68744844960818e-22,1.24077091882954e-24,1.24077091882954e-23,-2.48154183765908e-24,-8.27180612553028e-24,-1.98523347012727e-23,4.63221143029695e-23,9.92616735063633e-23,-8.55614946109538e-24,-1.22009140351572e-23,-1.77843831698901e-23,-3.14328632770151e-23,-8.68539643180679e-24,-1.07533479631894e-23,6.61744490042422e-24,9.51257704435982e-24,2.19202862326552e-23,-2.31610571514848e-23,2.44018280703143e-23,-3.22600438895681e-23,-4.38405724653105e-23,-1.40620704134015e-23,-1.65436122510606e-23,1.65436122510606e-24,7.85821581925376e-24]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive302.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive302.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive302.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive302_field1":[0,0,0,0,0.199942649442653,0,0,0,0,0.137358970690801,0.262526338300074,0.148737820883937,0.194253223776859,0,0,0.111756558286771,0.1060671333876,0.130247189400572,0.151938122532348,0,0.170428754593095,0.196231188159455,0.181506722319724,0.215254095943707,0.24788507993216,0,0.240206357610279,0.118868339447171,0,0.122424230044056,0,0.22032383436537,0,0,0.205632075190634,0.170073165509477,0,0,0.165806096523973,0.234814431031275,0.286215989753293,0.275184911512496,0.293818188691894,0.272492852865811],"Archive302_field2":[0,0,0,0,1.99942649442651,0,0,0,0,1.37358970690801,2.62526338300077,1.48737820883935,1.94253223776856,0,0,1.11756558286773,1.06067133387599,1.30247189400571,1.51938122532352,0,1.70428754593093,1.96231188159451,1.81506722319715,2.15254095943709,2.47885079932163,0,2.40206357610283,1.18868339447171,0,1.22424230044057,0,2.2032383436537,0,0,2.05632075190633,1.7007316550948,0,0,1.65806096523978,2.34814431031272,2.86215989753293,2.7518491151249,2.93818188691896,2.7249285286582],"Archive302_field3":[0,0,0,0,2.00939875825602,0,0,0,0,1.38044057088774,2.63835704718408,1.49479660004011,1.95222073795916,0,0,1.12313951062662,1.0659614980342,1.30896805347632,1.52695923355676,0,1.71278778592312,1.97209903398725,1.82411998371047,2.16327689117109,2.49121422164985,0,2.41404401738583,1.19461202673325,0,1.23034828495426,0,2.2142271317404,0,0,2.06657677937884,1.70921415986058,0,0,1.66633064728954,2.35985582590855,2.8764350977966,2.76557413350968,2.95283625157659,2.73851927894589],"Archive302_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3020.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3020.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3020.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3020_field1":[-14.5335922241211],"Archive3020_field2":[-2.20752047133141e-10]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive303.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive303.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive303.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive303_field1":[0,0,0,0,0.199942649442653,0,0,0,0,0.137358970690801,8.35693271686189,7.37978530084311,0.194253223776859,0,0,0.111756558286771,0.1060671333876,15.5785139112888,0.151938122532348,0,15.0349700284466,6.09923638888469,0.181506722319724,0.215254095943707,3.74912308487185,0,0.240206357610279,8.61848568102106,0,-5.54069837770457,0,3.04095540605091,0,0,0.205632075190634,0.170073165509477,0,0,2.00235304683803,4.58007500529958,-1.37982902317501,0.275184911512496,17.9031391776887,0.272492852865811],"Archive303_field2":[0,0,0,0,1.99942649442651,0,0,0,0,1.37358970690801,96.3301760000748,82.0452479430044,1.94253223776856,0,0,1.11756558286773,1.06067133387599,63.5977765796168,1.51938122532352,0,83.3570890349697,97.1893605886057,1.81506722319715,2.15254095943709,65.6139285696714,0,2.40206357610283,64.1173927730191,0,55.7665112245963,0,98.6488421782509,0,0,2.05632075190633,1.7007316550948,0,0,63.8652748565846,81.0550020285446,66.5724708809785,2.7518491151249,45.0555913753031,2.7249285286582],"Archive303_field3":[0,0,0,0,2.00939875825602,0,0,0,0,1.38044057088774,96.6919910470331,82.376476867584,1.95222073795916,0,0,1.12313951062662,1.0659614980342,65.4779908179464,1.52695923355676,0,84.7021523701739,97.380555020751,1.82411998371047,2.16327689117109,65.7209521100498,0,2.41404401738583,64.6940364442007,0,56.0410841497175,0,98.6957013901367,0,0,2.06657677937884,1.70921415986058,0,0,63.8966568001118,81.1842992265225,66.5867690110575,2.76557413350968,48.4822514596216,2.73851927894589],"Archive303_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive304.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive304.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive304.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive304_field1":[0,0,0,0,13.9581935521502,0,0,0,0,21.177186623283,23.094793329508,-3.04388416789663,13.0493328117081,10.458847324086,0,0,15.337085280321,11.0794996713619,5.97148941451654,0,2.64823560670387,0,0,9.68834323290961,0,0,0,0,0,0,0,13.9581935521502,0,0,0,0,21.177186623283,23.094793329508,-3.04388416789663,13.0493328117081,10.458847324086,0,0,15.337085280321,11.0794996713619,5.97148941451653,0,2.64823560670387,0,0,9.68834323290961,0,0,0,0,0,0,0,13.9581935521502,0,0,0,0,21.177186623283,23.094793329508,-3.04388416789663,13.0493328117081,10.458847324086,0,0,15.337085280321,11.0794996713619,5.97148941451654,0,2.64823560670387,0,0,9.68834323290961,0,0,0],"Archive304_field2":[0,0,0,0,115.667456726882,0,0,0,0,103.9048559711,107.890313073287,97.9479508940797,106.212016237412,108.415893248515,0,0,114.329367364276,113.173456985166,86.5783121539506,0,71.6637141492194,0,0,96.9350953486591,0,0,0,0,0,0,0,115.667456726882,0,0,0,0,103.9048559711,107.890313073287,97.9479508940797,106.212016237412,108.415893248515,0,0,114.329367364276,113.173456985166,86.5783121539506,0,71.6637141492194,0,0,96.9350953486591,0,0,0,0,0,0,0,115.667456726882,0,0,0,0,103.9048559711,107.890313073287,97.9479508940797,106.212016237412,108.415893248515,0,0,114.329367364276,113.173456985166,86.5783121539506,0,71.6637141492194,0,0,96.9350953486591,0,0,0],"Archive304_field3":[0,0,0,0,0.0734535013269995,0,0,0,0,0.0665258105459722,0.0691468825122396,0.0612682455680517,0.0674634834975877,0.068683801814488,0,0,0.0727004136876997,0.0717079664790452,0.0546998432092589,0,0.0451328812668563,0,0,0.0614316177434985,0,0,0,0,0,0,0,0.0724542696440657,0,0,0,0,0.0943294167386606,-0.0163556899823011,0.0920876950280892,0.0898508946907854,-0.0096043623279653,0,0,0.0365962084677724,0.0866691816730924,0.0147433290726028,0,0.0304576174754136,0,0,0.0838352621465074,0,0,0,0,0,0,0,0.0694565745952644,0,0,0,0,0.177740235316726,-0.272863407465924,0.184546043408202,0.157013128270379,-0.244468854755325,0,0,-0.0717164071920093,0.131552827255234,-0.105126213337366,0,-0.0135681738989146,0,0,0.151046195355534,0,0,0],"Archive304_field4":[0,0,0,0,116.506639760665,0,0,0,0,106.041014486546,110.334463860011,97.9952553390955,107.010663166661,108.919227474705,0,0,115.353524923002,113.714518954148,86.7840181907213,0,71.7126426403784,0,0,97.41807059625,0,0,0,0,0,0,0,116.506639134968,0,0,0,0,106.041035574401,110.334443405009,97.9952794542685,107.010679622317,108.91920624236,0,0,115.353507818765,113.714529372846,86.7840022044406,0,71.7126349059641,0,0,97.418087300067,0,0,0,0,0,0,0,116.506637309298,0,0,0,0,106.041142577981,110.334779595664,97.9954099558686,107.010757090908,108.919480173396,0,0,115.353524307038,113.714572439451,86.7840646246494,0,71.7126297215838,0,0,97.4181683250379,0,0,0],"Archive304_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive305.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive305.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive305.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive305_field1":[0,0,0,0,0.199942640985307,0,0,0,0,0.137358968806975,0.262526313163631,0.148737818293942,0.194253216241817,0.253992176048391,0,0,0.244035682747297,0.212032668565204,0.235501545632077,0,0.185790196935884,0,0,0.143048393550458,0,0,0,0,0,0,0,0.199942643390617,0,0,0,0,0.137358969342744,0.262526320312556,0.148737819030548,0.194253218384818,0.253992182312089,0,0,0.244035688085102,0.212032671607213,0.235501550261475,0,0.185790198729132,0,0,0.143048394180663,0,0,0,0,0,0,0,0.199942648212046,0,0,0,0,0.137358970416689,0.26252633464253,0.148737820507069,0.194253222680448,0.253992194867629,0,0,0.244035698784698,0.2120326777049,0.235501559541071,0,0.185790202323688,0,0,0.143048395443903,0,0,0,0,0,0,0,0.199942651169686,0,0,0,0,0.137358971075486,0.262526343433058,0.148737821412821,0.194253225315544,0.253992202569654,0,0,0.244035705348219,0.212032681445444,0.235501565233513,0,0.185790204528719,0,0,0.143048396218821,0,0,0,0,0,0,0,0.199942651556994,0,0,0,0,0.137358971161757,0.262526344584192,0.14873782153143,0.194253225660615,0.253992203578247,0,0,0.244035706207724,0.212032681935274,0.235501565978948,0,0.185790204817472,0,0,0.143048396320297,0,0,0],"Archive305_field2":[0,0,0,0,1.99942640985301,0,0,0,0,1.37358968806975,2.62526313163628,1.48737818293944,1.94253216241818,2.53992176048402,0,0,2.44035682747304,2.12032668565205,2.35501545632079,0,1.85790196935885,0,0,1.4304839355046,0,0,0,0,0,0,0,1.99942643390612,0,0,0,0,1.37358969342744,2.62526320312553,1.4873781903055,1.94253218384818,2.53992182312099,0,0,2.44035688085109,2.12032671607214,2.35501550261476,0,1.85790198729134,0,0,1.43048394180664,0,0,0,0,0,0,0,1.9994264821204,0,0,0,0,1.37358970416689,2.62526334642527,1.48737820507071,1.94253222680449,2.53992194867639,0,0,2.44035698784705,2.12032677704902,2.35501559541073,0,1.8579020232369,0,0,1.43048395443904,0,0,0,0,0,0,0,1.9994265116968,0,0,0,0,1.37358971075487,2.62526343433054,1.48737821412823,1.94253225315545,2.53992202569664,0,0,2.44035705348226,2.12032681445445,2.35501565233515,0,1.85790204528721,0,0,1.43048396218822,0,0,0,0,0,0,0,1.99942651556988,0,0,0,0,1.37358971161757,2.62526344584189,1.48737821531433,1.94253225660615,2.53992203578258,0,0,2.44035706207731,2.12032681935275,2.3550156597895,0,1.85790204817473,0,0,1.43048396320299,0,0,0],"Archive305_field3":[0,0,0,0,0.00126712256924335,0,0,0,0,0.000870502903265027,0.00166374223524959,0.000942615569806796,0.00123106623596671,0.00160965773533996,0,0,0.0015465591521048,0.00134374227743885,0.00149247465220093,0,0.00117743244023839,0,0,0.000906559236534824,0,0,0,0,0,0,0,0.00138111046247129,0,0,0,0,0.000962918549159032,0.00122426204555387,0.00109395347717442,0.00152787515744039,0.00117144096865092,0,0,0.00139059013102184,0.00151675665174778,0.0012809567855232,0,0.001090483757472,0,0,0.00102888935423717,0,0,0,0,0,0,0,0.00172307414809143,0,0,0,0,0.0012401654824366,-9.41786206247631e-05,0.00154796719669286,0.00241830194776357,-0.000143209414146494,0,0,0.000922683026297308,0.00203579979779327,0.000646403137436037,0,0.000829637692970019,0,0,0.00139587970763736,0,0,0,0,0,0,0,0.00229301364657459,0,0,0,0,0.00170224369652806,-0.00229157992542108,0.00230465672607552,0.00390234666523441,-0.00233429355056543,0,0,0.000142837777153484,0.00290087177180334,-0.000411186368253899,0,0.000394894221904506,0,0,0.00200753029964597,0,0,0,0,0,0,0,0.00309092895480442,0,0,0,0,0.00234915319307534,-0.00536794183129446,0.00336402206616388,0.00598000929866787,-0.00540181140866778,0,0,-0.00094894560103271,0.00411197256346867,-0.00189181171328162,0,-0.000213746649633066,0,0,0.00286384112996136,0,0,0],"Archive305_field4":[0,0,0,0,2.00939907278308,0,0,0,0,1.38044082642415,2.63835731914201,1.49479687121669,1.95222105038682,2.55259028554762,0,0,2.45252874635414,2.13090237037514,2.36676171275976,0,1.86716874207237,0,0,1.43761884882042,0,0,0,0,0,0,0,2.00939917206977,0,0,0,0,1.38044089317911,2.63835715045544,1.49479698171378,1.95222128165363,2.55259010977397,0,0,2.45252870660414,2.1309025170732,2.36676163535361,0,1.86716870728912,0,0,1.43761893749966,0,0,0,0,0,0,0,2.00939948466275,0,0,0,0,1.38044112520515,2.63835701210705,1.494797397767,1.95222222476849,2.55258997117256,0,0,2.45252859346415,2.13090301101824,2.36676147023967,0,1.86716860929214,0,0,1.43761925968832,0,0,0,0,0,0,0,2.00940008394157,0,0,0,0,1.38044162428556,2.63835809396069,1.49479838199823,1.95222465367185,2.55259111189229,0,0,2.45252849002169,2.13090405066782,2.36676147489459,0,1.86716848889506,0,0,1.43761999148467,0,0,0,0,0,0,0,2.00940115679208,0,0,0,0,1.38044257444523,2.63836257107962,1.4948003918885,1.95222991580043,2.55259577036768,0,0,2.45252867808567,2.13090604846708,2.36676220275377,0,1.86716846227265,0,0,1.43762144330723,0,0,0],"Archive305_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,8433534.375,7843186.96875,1939712.90625,2530060.3125,5186623.640625,8138360.671875,4891449.9375,2234886.609375,5481797.34375,3563168.2734375,6810079.0078125,3858341.9765625,5039036.7890625,6588698.73046875,6367318.453125,7990773.8203125,6330421.74023437,5500245.70019531,6109041.46289063,4005928.828125,4819501.34736328,3415581.421875,2087299.7578125,3710755.125,6957665.859375,8285947.5234375,2382473.4609375,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,3935649.375,3660153.91875,905199.35625,1180694.8125,2420424.365625,3797901.646875,2282676.6375,1042947.084375,2558172.09375,1662811.8609375,3178036.8703125,1800559.5890625,2351550.5015625,3074726.07421875,2971415.278125,3729027.7828125,2954196.81210937,2566781.32675781,2850886.01601563,1869433.453125,2249100.62876953,1593937.996875,974073.2203125,1731685.725,3246910.734375,3866775.5109375,1111820.9484375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive306.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive306.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive306.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive306_field1":[0,0,0,0,0.199942640985307,0,0,0,0,0.137358968806975,14.0198419904353,6.13230068314288,0.194253216241817,0.253992176048391,0,0,2.69218705699368,-3.36640328451906,0.235501545632077,0,0.217971177653363,0,0,0.143048393550458,0,0,0,0,0,0,0,0.199942642687522,0,0,0,0,0.137358969691678,14.0198419904353,6.13230068314288,0.194253219780506,0.253992182943793,0,0,2.69218705699368,-3.36640328451906,0.235501553276497,0,0.217971177653363,0,0,0.14304839407078,0,0,0,0,0,0,0,0.199942645084434,0,0,0,0,0.13735897093744,14.0198419904353,6.13230068314288,0.194253224763381,0.253992192653302,0,0,2.69218705699368,-3.36640328451906,0.235501564040708,0,0.217971177653363,0,0,0.143048394803451,0,0,0,0,0,0,0,0.19994264551603,0,0,0,0,0.137358971161757,14.0198419904353,6.13230068314288,0.194253225660615,0.253992194401629,0,0,2.69218705699368,-3.36640328451906,0.235501565978948,0,0.217971177653363,0,0,0.143048394935378,0,0,0],"Archive306_field2":[0,0,0,0,1.99942640985301,0,0,0,0,1.37358968806975,94.151107569273,89.7272431652614,1.94253216241818,2.53992176048402,0,0,66.3384290637517,103.934807460223,2.35501545632079,0,69.8722390378273,0,0,1.4304839355046,0,0,0,0,0,0,0,1.99942642687516,0,0,0,0,1.37358969691678,94.151107569273,89.7272431652614,1.94253219780506,2.53992182943804,0,0,66.3384290637517,103.934807460223,2.35501553276498,0,69.8722390378273,0,0,1.43048394070781,0,0,0,0,0,0,0,1.99942645084428,0,0,0,0,1.37358970937441,94.151107569273,89.7272431652614,1.94253224763382,2.53992192653312,0,0,66.3384290637517,103.934807460223,2.35501564040709,0,69.8722390378273,0,0,1.43048394803452,0,0,0,0,0,0,0,1.99942645516024,0,0,0,0,1.37358971161757,94.151107569273,89.7272431652614,1.94253225660615,2.53992194401639,0,0,66.3384290637517,103.934807460223,2.3550156597895,0,69.8722390378273,0,0,1.43048394935379,0,0,0],"Archive306_field3":[0,0,0,0,0.00126712257123533,0,0,0,0,0.000870502903328462,0.059956541350086,0.0566857881702614,0.00123106624450748,0.0016096577281282,0,0,0.0417941912076023,0.0650045715574581,0.00149247464701558,0,0.0438562959226132,0,0,0.000906559237110301,0,0,0,0,0,0,0,0.00761459206753799,0,0,0,0,0.000758451452747515,0.0299836865725506,0.0667517808023045,0.000559272444809789,-0.000284967914793524,0,0,0.0443699045239369,0.0732667199449268,0.00153176911389573,0,0.0388820728778247,0,0,-0.0016105678151356,0,0,0,0,0,0,0,0.0266570005790005,0,0,0,0,0.000422297092586111,-0.0599348777638021,0.0969497586951742,-0.00145610882765337,-0.00596884504918199,0,0,0.0520970445126432,0.0980531650981824,0.00164965234265645,0,0.0239594037463581,0,0,-0.0091619489659338,0,0,0,0,0,0,0,0.0583943481096336,0,0,0,0,-0.000137960180898503,-0.209799151660317,0.14727972184839,-0.00481507754304849,-0.0154419737420341,0,0,0.0649756111871546,0.139363907014758,0.00184612427495829,0,-0.000911711471104257,0,0,-0.0217475842143718,0,0,0],"Archive306_field4":[0,0,0,0,2.00939907278308,0,0,0,0,1.38044082642415,95.1892358449444,89.9365692640375,1.95222105038682,2.55259028554761,0,0,66.3930477425964,103.989331656964,2.36676171275975,0,69.872592788362,0,0,1.43761884882042,0,0,0,0,0,0,0,2.00941311801829,0,0,0,0,1.38044076920356,95.1892216849106,89.9365761718038,1.95222077790657,2.55258986322894,0,0,66.3930494139612,103.989337149921,2.3667618146904,0,69.8725898432937,0,0,1.4376194703738,0,0,0,0,0,0,0,2.00957552466659,0,0,0,0,1.38044063795989,95.1892358313016,89.9366036548086,1.95222129090971,2.55259692351217,0,0,66.3930550276029,103.989357567449,2.36676200209918,0,69.8725831327753,0,0,1.43764776984807,0,0,0,0,0,0,0,2.01024702735304,0,0,0,0,1.38044058251461,95.1894481633423,89.9366719921462,1.95222669498362,2.55263667039906,0,0,66.3930663821631,103.989404725511,2.36676216667563,0,69.8725790308672,0,0,1.43778306085152,0,0,0],"Archive306_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,7996240,7436503.2,1839135.2,2398872,4917687.6,7716371.6,4637819.2,2119003.6,5197556,3378411.4,6456963.8,3658279.8,4777753.4,6247062.5,6037161.2,7576437.4,6002177.65,5215047.775,5792276.35,3798214,4569601.2775,3238477.2,1979069.4,3518345.6,6596898,7856305.8,2258937.8,4997650,4647814.5,1149459.5,1499295,3073554.75,4822732.25,2898637,1324377.25,3248472.5,2111507.125,4035602.375,2286424.875,2986095.875,3904414.0625,3773225.75,4735273.375,3751361.03125,3259404.859375,3620172.71875,2373883.75,2856000.7984375,2024048.25,1236918.375,2198966,4123061.25,4910191.125,1411836.125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive307.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive307.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive307.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive307_field1":[0,0,0,0,14.0288978450971,0,0,0,0,21.4732234308584,23.2152414544215,-3.27193715930873,13.1055296833548,10.5444458629685,0,0,15.5175751144267,11.0739886869201,5.96026712236673,0,2.39330799326315,0,0,9.70228653383208,0,0,0,0,0,0,0,14.0289107059261,0,0,0,0,21.473271817502,23.2155156143932,-3.27193946840665,13.105529467995,10.544500074791,0,0,15.5176001610636,11.0740082065073,5.96025411329872,0,2.3934217486137,0,0,9.70233273016225,0,0,0,0,0,0,0,14.0289146535782,0,0,0,0,21.4732902408393,23.2155994933173,-3.27194080228049,13.1055304592767,10.5445178129619,0,0,15.517610033123,11.0740144049355,5.96025881673903,0,2.39345003345517,0,0,9.70234824434854,0,0,0],"Archive307_field2":[0,0,0,0,115.919935032264,0,0,0,0,104.07704439826,108.112791921341,97.7228139996996,106.135887954721,108.362182220213,0,0,114.493889780643,113.347982446685,85.8105784302945,0,71.1270726579438,0,0,96.4928648369411,0,0,0,0,0,0,0,115.92000632547,0,0,0,0,104.077340544387,108.113943569322,97.7231912505333,106.135976039972,108.362750863892,0,0,114.494252739756,113.348184753007,85.8116023398247,0,71.1276673356827,0,0,96.4932265922331,0,0,0,0,0,0,0,115.920029624969,0,0,0,0,104.077445250495,108.114309344478,97.7233259366516,106.136006771338,108.362931692066,0,0,114.494369594256,113.348254936121,85.8119314166562,0,71.1278614797863,0,0,96.4933548518159,0,0,0],"Archive307_field3":[0,0,0,0,0.0736163975540336,0,0,0,0,0.0666524523599416,0.0692941775611401,0.061112662543554,0.0674190985613606,0.0686555453218251,0,0,0.072814871596238,0.0718170078949533,0.0542174886161661,0,0.0447802529935302,0,0,0.0611550180004629,0,0,0,0,0,0,0,0.0719465844144957,0,0,0,0,0.122406181291761,-0.102139921881068,0.122536985970462,0.111131592898646,-0.0876784700438288,0,0,0.000239613020408981,0.102248540438547,-0.0251764493845567,0,0.0161440780273186,0,0,0.105758194712386,0,0,0,0,0,0,0,0.0702765200946575,0,0,0,0,0.178159718203362,-0.273575047714542,0.183961277735248,0.154844868463987,-0.244013035265658,0,0,-0.0723351519555877,0.132680695283423,-0.104571028484341,0,-0.0124927594959183,0,0,0.150361227036403,0,0,0],"Archive307_field4":[0,0,0,0,116.765777229489,0,0,0,0,106.269162684846,110.577249081795,97.7775929523318,106.941975695016,108.874021638165,0,0,115.540690825957,113.887679350554,86.0173418227264,0,71.1673407772842,0,0,96.9794363169893,0,0,0,0,0,0,0,116.76584851061,0,0,0,0,106.26951209361,110.57845808256,97.7780277536122,106.942099581151,108.87460651654,0,0,115.541030916515,113.887905851867,86.0183489673971,0,71.167926686911,0,0,96.9798392625115,0,0,0,0,0,0,0,116.765871098538,0,0,0,0,106.269697207258,110.579124558726,97.7782586799661,106.942184562116,108.875026352092,0,0,115.541170680846,113.888007692959,86.0187374571344,0,71.1681209378142,0,0,96.9800273278559,0,0,0],"Archive307_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,2136495.375,2570400.71859375,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive308.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive308.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive308.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive308_field1":[0,0,0,0,-7.83489040873009,0,0,0,0,4.26593731790411e-05,0.0470721695398485,-18.5300322883287,-11.6848041976616,4.24885001237735,0,0,-17.1513879717474,-16.1999306355401,3.6405546619962,0,-8.77730969453038,0,0,-56.8867734552795,0,0,0,0,0,0,0,-7.83499630997348,0,0,0,0,4.26727057730026e-05,0.0470737275376095,-18.530113159384,-11.6848456256354,4.24879720113235,0,0,-17.15143135176,-16.1999953430061,3.64051712896852,0,-8.77738554151871,0,0,-56.8870870758097,0,0,0,0,0,0,0,-7.83506181935319,0,0,0,0,4.26907284865264e-05,0.0470787837979452,-18.5301860010851,-11.6848403014849,4.24858298917661,0,0,-17.1511904850956,-16.199916851807,3.64038178966406,0,-8.77750796024655,0,0,-56.8870935079374,0,0,0],"Archive308_field2":[0,0,0,0,87.2928829210786,0,0,0,0,5.80694511870227e-05,0.0409615182932724,22.36146842418,22.3983254040141,12.6730408307934,0,0,20.7326806075708,38.0317071683808,9.89055653951548,0,14.0491978598455,0,0,38.3926906998751,0,0,0,0,0,0,0,87.2934739070776,0,0,0,0,5.80600673651568e-05,0.0409634481703636,22.3615184184691,22.3983946283031,12.6732265604292,0,0,20.7330601066683,38.0318941903575,9.89059140322983,0,14.0491985512836,0,0,38.3929049554046,0,0,0,0,0,0,0,87.2934622369241,0,0,0,0,5.8076945918524e-05,0.0409683986993727,22.3615917928104,22.3983773164393,12.6733764039282,0,0,20.7333667334845,38.031783557157,9.89059798684814,0,14.0491128222684,0,0,38.3930271324032,0,0,0],"Archive308_field3":[0,0,0,0,0.054281896316426,0,0,0,0,3.91134759348118e-08,2.86556805036309e-05,0.0128684103703747,0.0133210532701747,0.00821853234758631,0,0,0.0119329033119191,0.0228471938258927,0.00643444325167987,0,0.00826467702535965,0,0,0.0205207293960463,0,0,0,0,0,0,0,0.0296042627599592,0,0,0,0,1.67324573041666e-07,-0.000288387581767567,0.0712310037770086,0.0159864265236132,-0.0758520807360376,0,0,-0.0992720709572074,-0.012105395282477,-0.00458388717010821,0,0.0520249795161879,0,0,0.0743643147542972,0,0,0,0,0,0,0,0.00492635781363405,0,0,0,0,2.95817363935697e-07,-0.000605523986630165,0.129593730030101,0.0186517141704516,-0.159922876770498,0,0,-0.210477261761534,-0.0470580580767599,-0.0156023554789951,0,0.0957852039131255,0,0,0.128208026467564,0,0,0],"Archive308_field4":[0,0,0,0,87.6438010524088,0,0,0,0,7.20547348274539e-05,0.0623990059794733,29.0413073446787,25.2630126369016,13.3663292594081,0,0,26.907513763392,41.3382271600034,10.539297334756,0,16.5656631102915,0,0,68.6301982689028,0,0,0,0,0,0,0,87.6443873294537,0,0,0,0,7.20552512864159e-05,0.0624021079586938,29.0414819445394,25.2630947190949,13.3667012627077,0,0,26.9080143032689,41.338420039481,10.5393161203172,0,16.5657835153169,0,0,68.6306153034985,0,0,0,0,0,0,0,87.6443767009121,0,0,0,0,7.20799379428581e-05,0.062411443142927,29.0417867094633,25.2630787349291,13.3675166810474,0,0,26.9087370911181,41.3383125079475,10.539286102268,0,16.5659709009254,0,0,68.6307684458532,0,0,0],"Archive308_field5":[-22067480.7050707,8366066.1,-29277021.9117008,1862419.19905654,5479592.80509513,8417154.26268228,5288222.81242662,2597914.5660727,5657898.43533617,4164083.79365332,7115868.95836382,4107725.62964083,5256499.80704927,7091897.78653176,6751033.4430178,8153642.90289965,6770857.63472832,5914282.03611588,6577002.25358539,4504078.72112748,5166957.50660244,15947368.0603468,18363864.8276187,3867690.68500913,24534621.8811085,24061678.4722676,3568554.51635501,-26565285.8853276,4183033.05,-30311569.208478,513052.509338149,2713392.58247953,4076692.93292914,2679449.14701131,1405974.87851871,2734275.8869102,2263727.56397094,3483823.31015541,2049943.2605159,2569013.49360476,3577926.01785456,3355128.68674977,3891895.10435245,3394634.24911564,2980818.1117195,3318847.0817285,2367584.1288201,2596555.39451301,14125729.0231374,17250663.2709061,1888621.63374813,20823872.5691139,19642440.8949192,2297903.68626609,-31063153.0913835,0,-31346089.7612834,-836313.201162476,-52806.9421339707,-263769.472533859,70675.9795585971,214036.081653091,-189345.557786389,363371.319871571,-148222.85558113,-7839.36212437789,-118473.608916827,63954.9500826096,-40777.8712479803,-369852.499400271,18411.3436715595,47353.9227711428,60692.6312112378,231089.649578948,26152.5852436457,12304084.2866652,16137439.1455089,-90448.1962834134,17113124.9061995,15223262.5606589,1027251.41061397]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive309.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive309.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive309.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive309_field1":[999.655283583917,929.709078430431,230.098618436666,300.064886567415,615.063956066549,964.191252168836,580.021825974382,265.24151024821,650.131523459792,422.645532993445,807.449590030182,457.602732829445,597.559645465596,405.026744197069,247.713943142025,343.961997794268,326.333520624692,400.796390480045,467.421949950277,282.768599163525,524.310615909533,603.677902369018,558.363965844085,662.222123325862,762.593059509084,755.117113159151,738.904225091942,365.837225859871,475.042066024189,376.730186800417,824.962360261182,677.778327202852,981.813865488952,667.350672973618,632.500433007497,523.261798981684,946.793874156013,562.399339487967,510.090431623775,722.26933502122,880.052482409582,846.242521685178,903.669557700165,837.97234334487]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive310.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive310.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive310.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive310_field1":[999.711903973028,929.730287609331,230.064730265008,300.086074860965,615.082359855589,964.391475563461,580.012782834548,265.147885783776,650.042874849416,422.628287373982,807.442782401064,457.611419608298,597.580077142134,405.03254543872,247.614858568227,343.930047633742,326.359293633126,400.782494881047,467.447406417134,282.659714959213,524.312430493338,603.66465969094,558.380397905467,662.163498053166,762.510358172587,754.977694131795,738.864156862611,365.82067575332,475.05669636062,376.711782951718,824.935785773015,677.764698962301,982.018288408845,667.435263576113,632.532618881605,523.229602039758,946.98923099328,562.479330603764,510.089079914465,722.306268241656,880.091821172651,846.272182361998,903.601579548683,837.981867250742]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3101.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3101.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3101.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3101_field1":[0,0,0,0,147.998082677,0,0,0,0,223.37500727938,210.477351429712,26.6250097045421,128.878542177539,0,0,232.285702624376,291.674995543443,302.835404874892,0,152.525251199161,190.042809359304,270.387916442849,0,191.999848621077,0,285.256405374119,253.027042221984,300.002703703476,318.573177708196,273.506794600993,0,271.355744102121,234.592177448042,191.0998695264,187.089100600537,192.432701502323,230.196059972747,169.613318982268,246.077786015065,189.463247126296,189.696081101836,0,161.718455372466,136.628272248286,173.057172223732,149.725474710325,163.927160835293,0,138.309709789127,126.008413600046,285.156292227557,0,144.64656756656,111.790077814309,154.469064702224,142.264739091364,139.035793093142,143.822066540614,112.424338619626,144.04575319358,126.929112308257,66.6334050559881,159.911448429835,128.409181718073,107.377821053138,196.654018785741,0,114.359091554861,0,57.6275151765164,87.152039494649,0,43.5939168525381,49.9447724389846,75.509703323857,82.7072757522656,-22.3304217331976,5.47883127871525,18.1218298306863,10.8278130485307,2.41782920808303,0,-70.3637385656628,-35.4407811458127,0,-65.869696400129,0,25.6720002061661,18.7821344176796,0,-23.7492062469267,-11.8896197565127,-6.86821911634322,0,0,221.248151129294,161.145387017426,184.413050854395,198.798260147508,154.979414828433,103.198021027249,98.2684883468211,140.514975077936,0,160.568134869961,0,26.3903198363104,153.182559017906,125.214900060968,44.0815119696877,80.6176070865499,21.1379663546781,106.934364275584,-39.3736309537446,104.724904559858,-59.767317243231,-7.98169897295416,9.07618296744659,148.38294780778,166.650267284364,82.0850575379447,0,0,78.9574753172511,149.271137281319,135.77857185684,154.555361799807,143.882170730738,145.078544417268,149.625446103364,158.335787135564,169.143307583046,153.881251029626,-64.8278655940366,49.3859482237665,206.21589984437,133.13996900866,138.164178964887,138.301239054632,145.899783911907,102.903055224128,116.29518847368,81.4388644705877,123.391931417528,111.824474524405,147.142049949974,147.508908647692,147.177168364964,149.837813731132,87.4014575609297,54.7283689493153,44.5864359092806,148.44774997229,151.017360836065,85.6472093992338,68.7820855124355,81.836694361028,134.194099445522,25.4794953659045,147.650571014155,141.403970391453,145.063499943739,136.125267586693,149.220276724415,147.621280511587,162.824126991221,147.029341699825,155.629883757247,119.553641264558,159.019618162133,136.172088291628,115.656450067306,131.992135090335,0,154.787946280635,148.109979913287,168.348661178714,6.55486991930007,-54.3051056252754,-38.8440327233279,-25.9525869914743,-84.4952779533677,6.13734613991799,0,-80.3696732518857,-103.604726857919,-96.0286534380315,-106.457037913824,-84.5502078422072,0,-81.1447286733385,0,-53.5509034576094,0,-59.2032404419991,-82.9686972943153,140.93860384701,119.651876330495,184.597995687725,64.930582831811,0,105.548128366356,169.439315376779,164.756208302897,182.45495159439,0,177.351848254129,175.71268397043,122.028648028926,49.1160023336639,104.185146585807,11.4222336377043,-48.9985704718461,-30.7994018111642,0,102.257753377261,72.569973491627,124.187740307679,51.0299567184431,128.690636577243,52.3710134273794,-16.2137828362355,87.8835240906868,86.1989404468834,194.847472619263,0,176.143915672583,181.553761846262,205.690828602873,0,40.0461138218353,0,109.3921147503,57.191956656036,102.077197071927,0,174.419986266807,135.984789682375,-16.1024859193511,0,145.592444866885,159.561786284234,142.547508800523,146.521489577963,163.271186179951,154.897492401109,-115.434522508119,-85.9419938427427,0,-49.9938204237599,-151.967257068533,0,72.0569163987723,84.1944336253109,-94.9862679037601,0,-131.919966177354,-142.043311950029,-129.364921822218,-157.171722390102,-116.036287319447,130.588959735847,146.804704937996,0,200.983539172726,205.554810725061,225.824512153356,202.741868276179,0,134.900987694602,206.106248019082,226.879074567645,225.122863493311,0,231.772483592073,187.555985716168,173.202573951124,211.708608786533,149.241951965751,210.071559579327,151.057295882434,0,126.543980124579,127.794973733839,131.574285749212,0,0,80.3909218324734,0,84.9116809943901,161.473399749412,200.03795540279,170.639157554659,0,91.2619799608181,104.540823595933,102.982782293408,137.736812717182,91.0351497961088,0,0,74.6128192148826,95.5236438258274,124.987491775286,127.652158301112,85.0228735249107,54.8184889983463,0,0,42.812438875242,42.2937821500248,73.5445138678258,98.9726692049351,159.419800142884,34.2113304912378,67.6599660401968,49.7701809394466,2.06039603482871,0,-23.6375851031346,-0.55222558382057,13.8785538845659,-17.718786695931,111.185511818309,99.9072285863378,184.421181266681,128.634515989708,145.559915938432,0,-45.9098889584418,-89.0881828802398,-113.590140140484,0,0,291.569504938691,208.946817347587,0,191.781586605153,204.938499176751,0],"Archive3101_field2":[0,0,0,0,1630.74065641635,0,0,0,0,1441.1614724982,1202.04954831196,1376.30771125799,1474.06229826376,0,0,1337.14850518475,844.281465544327,1200.65578364938,0,956.469350935911,912.699368270738,1130.64202782671,0,680.578714574308,0,766.725563890046,1427.88809489989,967.939139921665,1053.34862078116,1291.98482034552,0,1352.80725843208,1461.12795024576,1565.28920991379,1556.78705352443,1095.37702084419,1287.14919130477,1415.79603719506,985.911710640332,1318.24690109537,1463.01238917754,0,1559.49982868888,1042.52579867771,1499.32274653789,1486.41952186302,1148.23740824584,0,668.990316413261,812.216346040583,1105.02189478106,0,1573.66748245459,1257.34646610276,600.773659138679,1525.17223396437,1549.33840495251,1610.42432518199,1469.28115809519,1358.05667860935,1178.94611865253,840.71176315022,1280.36645006961,1408.65169631001,1326.10518040944,877.044143602075,0,1421.86326644269,0,1233.58710075683,1295.96805467036,0,907.614512453759,1067.98118013826,1153.65804521655,1061.47948757174,824.014803871372,668.560830394401,1016.9058725153,1154.46033782138,1049.5213562784,0,777.065177101825,874.811977513963,0,474.073606078367,0,591.491140411092,506.343406137081,0,452.01273274897,388.229771654253,705.734270002319,0,0,1489.96675200018,1491.72471031776,1545.56583058353,1434.98837002581,1282.39260868092,938.494770473885,1365.48141238583,1612.70622975525,0,1607.22624175898,0,973.448494366686,1579.82783327641,1531.77687359515,1459.15260117272,1470.74933057653,1283.52302505914,1581.66133999497,847.910637158672,1559.46764779152,1218.96024743292,1324.78606684636,1393.69393050746,1632.42985557772,1609.35334946094,1044.54909123119,0,0,1520.28238896659,1627.43871841694,1620.54177036084,1625.3922842237,1630.38874089285,1626.28907698259,1622.2115424414,1606.42650994192,1574.80369007872,1595.22908962268,1174.65587131975,1485.66090966914,1540.13926955702,1561.8866629282,1593.76870844768,1597.86692732354,1623.73102655677,1494.49730967259,1521.29366653587,1399.4452973035,1557.63412850241,1501.23099432389,1628.19176002441,1631.7568905521,1633.03179820818,1612.57972974733,1372.75113050218,1345.7223250911,1255.6554845709,1625.11984579501,1619.37968455617,1436.54953845978,1265.65511513682,1401.0506188993,1429.76944205989,1232.84925084094,1626.38288664009,1590.80764321399,1615.22159018645,1607.32370244073,1603.19323342133,1478.07095536549,1561.40843796932,1552.25826083812,1598.20627755204,1455.1723403659,1534.22881796616,1499.38481399792,1244.28021122413,1404.63000960633,0,1249.78230806078,1376.55079466739,1413.99144292057,1176.49829989796,789.63711891372,992.141330633042,1043.96747187636,764.134694819578,990.823488665467,0,435.174419727165,365.790792584213,598.017353391144,446.369245751549,451.660603650359,0,232.794809216082,0,155.787550459503,0,220.813922085739,246.088825950643,1622.39724786879,1591.36694320036,1215.46598629823,835.37963480293,0,1510.291044905,1303.37150755712,1143.49387335626,1346.86923831753,0,889.726297639482,1472.87438477,911.342029706839,1029.77004237883,1234.01293143509,610.670530463412,446.627665135376,729.546860999129,0,1543.39172864891,1463.26942618226,1574.97920606267,1261.50154196712,1539.36993976896,1365.98242445045,1155.53128567908,1415.4185373919,1239.93096920167,1362.58421883921,0,1466.21089027285,1449.96664248002,1283.8088478346,0,437.829590721254,0,662.697615429774,436.358879096871,852.437141343856,0,1157.85028878761,1587.25093722373,1255.49078125414,0,1280.90316549973,1435.53314854938,1083.22692237194,1562.93396632288,1520.22981739046,1581.81283208678,699.338846596001,984.815278454671,0,736.515238674515,825.589517101169,0,595.981482505012,925.539016342999,818.26945737707,0,464.089890909077,328.697768962714,663.132852663307,576.075856640157,1014.84990179842,1612.50335761674,1608.21140198806,0,1067.74093100578,687.728011229391,960.056817662593,862.163073145441,0,473.337184393345,604.077098751272,1094.17968233068,757.901818545816,0,865.978272204901,447.644478395624,559.581581255952,917.565944428203,647.515546596506,1244.39545756402,355.878479410862,0,311.393804688504,250.653271515958,226.257953568041,0,0,122.351949528414,0,397.096418150369,905.102467285845,1093.12424608207,531.295253284563,0,174.830147719212,381.975007441873,264.829589837484,856.659419863368,563.225285543927,0,0,539.575324955979,932.171491729155,524.296032308438,1117.11236908419,1065.98973963036,493.859033925067,0,0,703.534345532516,728.779981806144,417.354313628958,349.851865151615,648.55264323523,514.730575092769,1043.61709034483,1116.94742764986,999.301084102353,0,509.037548108083,574.364158438793,891.304568237965,405.885537909833,1337.6506416476,1380.02713000786,1336.82595345374,1520.26047316152,1596.1525229298,0,389.159360114329,399.161741409385,451.926723555027,0,0,651.219708307258,384.951685337805,0,352.622328502404,544.279436846932,0],"Archive3101_field3":[0,0,0,0,1637.44267715401,0,0,0,0,1458.36990633043,1220.33758938331,1376.56522083407,1479.68555368918,0,0,1357.17455493445,893.24436527019,1238.25829020299,0,968.554372006616,932.274855517932,1162.52355694257,0,707.143075057752,0,818.070478094322,1450.13347511615,1013.36459422149,1100.46907564759,1320.61756110395,0,1379.75411516825,1479.84065922963,1576.91137062472,1567.98860378027,1112.15159146628,1307.57151494804,1425.9197371919,1016.15755567128,1331.79248167993,1475.2592497837,0,1567.86242205389,1051.44059541476,1509.27713927694,1493.94133511083,1159.8798471198,0,683.138067506612,821.932791092749,1141.22193237884,0,1580.30122914708,1262.30628506668,620.314179641944,1531.79293615182,1555.5643493028,1616.83372489625,1473.57604264171,1365.67460301807,1185.7592294548,843.348255093059,1290.31388344185,1414.49231863117,1330.44539382978,898.821023859188,0,1426.45474876715,0,1234.93241339721,1298.89517541415,0,908.660845862317,1069.14839074073,1156.12655042125,1064.69676246241,824.317320413661,668.583279427351,1017.06733025524,1154.51111434151,1049.52414130526,0,780.244413737918,875.529579723105,0,478.627831288562,0,592.047988578121,506.691635525775,0,452.636206422498,388.411790058783,705.767690029472,0,0,1506.30397544589,1500.40342812512,1556.52880153011,1448.6933320572,1291.72343085508,944.151611633836,1369.01284996642,1618.81618527631,0,1615.2270175224,0,973.806151226121,1587.2368692738,1536.88619021651,1459.81830828588,1472.95715890302,1283.6970707603,1585.27207529109,848.82432306179,1562.98005430123,1220.42460522237,1324.81011108338,1393.72348370492,1639.15976420288,1617.95874947636,1047.76942151549,0,0,1522.33137821909,1634.27006783696,1626.21998821184,1632.72393180078,1636.72524434749,1632.74736134012,1629.09731524907,1614.21075245212,1583.86114315166,1602.63385955646,1176.44339778139,1486.48152036979,1553.88351139339,1567.55101964199,1599.74624124454,1603.84099902653,1630.2727359398,1498.03579643247,1525.73228015411,1401.81290791287,1562.5138869829,1505.39005291697,1634.82696034623,1638.41064083296,1639.6505642505,1619.52608969899,1375.5306907077,1346.83472282847,1256.44683381354,1631.88579492213,1626.40610120201,1439.10042072361,1267.52272001705,1403.43866316347,1436.05317233529,1233.11251716263,1633.07133496261,1597.07984789443,1621.72260402954,1613.0776710696,1610.12273900894,1485.42444828235,1569.87515633959,1559.20599526197,1605.76585040442,1460.07520809908,1542.44782888701,1505.55559780345,1249.64381264668,1410.81798528811,0,1259.33122166312,1384.4958130848,1423.97790445402,1176.51656001199,791.502257775259,992.901444670374,1044.29000718549,768.792094017248,990.842496418502,0,442.533682292647,380.180014423024,605.678344699618,458.888444476642,459.5062986902,0,246.531722480946,0,164.73451411073,0,228.612798998044,259.698892928872,1628.50745160917,1595.8588030964,1229.40391404121,837.899227133165,0,1513.97471832323,1314.33898531051,1155.30205858799,1359.17127489046,0,907.230159766757,1483.31854320631,919.475549457379,1030.9406975506,1238.40318948157,610.777344207969,449.307390516295,730.196703324253,0,1546.77557395624,1465.0678532588,1579.86774584854,1262.53324584666,1544.73981349836,1366.98599369376,1155.64503154603,1418.14426268953,1242.92359609091,1376.44516455098,0,1476.75355214849,1461.28882591543,1300.18224674457,0,439.657186616314,0,671.665664051581,440.090889786216,858.527130674707,0,1170.9140117254,1593.06541006406,1255.59403943588,0,1289.15091412508,1444.37369964504,1092.56595115198,1569.78696962165,1528.97226198503,1589.37883114963,708.801771544698,988.558121196431,0,738.210050649773,839.459408171875,0,600.321686006571,929.360626143939,823.764102135101,0,482.475185185967,358.076145241203,675.633379340781,597.131763451554,1021.46206153491,1617.78260428593,1614.89799519236,0,1086.49209788359,717.790079091199,986.258487126842,885.680207438162,0,492.185297027856,638.2702614945,1117.45393269787,790.629793406803,0,896.457947748483,485.348150110881,585.773572043163,941.672871760013,664.491943751555,1262.00242271957,386.610655242584,0,336.124203984408,281.35141341974,261.733555783765,0,0,146.399111563146,0,406.07334174647,919.393351680094,1111.276653662,558.025419003177,0,197.21645351717,396.022335365488,284.148139361112,867.661680160032,570.53494264106,0,0,544.709651183585,937.053070280612,538.988128435726,1124.38210528264,1069.37505769474,496.892153415067,0,0,704.835782481502,730.006182090205,423.784637079677,363.582063363436,667.85867047228,515.866242420759,1045.80806186621,1118.05573521376,999.303208200573,0,509.586068111557,574.364423908896,891.412613563321,406.272107443189,1342.26355725638,1383.63880181265,1349.48686615591,1525.6928737335,1602.77589374908,0,391.858042495967,408.982640382054,465.98335099048,0,0,713.512357775241,438.002936661505,0,401.400901243691,581.583952511786,0],"Archive3101_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3013582.95,2305166.0625,2738087.49375,2698731,2856156.975,2265809.56875,2541305.025,2147740.0875,2592960.42304688,3348113.146875,2726198.55292969,2955009.41828613,3385501.02023202,2187096.58125,3322927.19560207,3615980.34601032,3799167.9452572,4112200.35158438,3898623.64085212,3733030.99065731,4485478.86421688,3414206.87010484,4122522.05040609,4173938.73326062,4430416.725,4643870.35100453,4555932.94761107,4466196.89475058,4891029.29891033,4252941.13561,4036851.7875,3876991.84515651,4238798.42725105,3246545.83818484,2856156.975,5141493.13292764,5121889.11919143,3459159.47365463,5135963.29785533,5399307.90594477,5533309.43806479,5912631.0221011,4810327.00871025,4824594.46451495,5128643.26449753,4519219.18791027,5128426.122899,5528219.9585469,3648235.25385438,3249721.9125,5677564.86512607,6791806.35,6194490.73662038,5861762.23566151,6004676.475,5713860.061753,6002564.18869234,5702880.19552416,5387134.81461557,6660747.03311464,6131420.08887104,6357274.06282467,6834570.83499271,6658841.00895551,8523492.075,7261479.66421003,6936703.83122667,7578936.225,7068369.25808199,5611111.5375,5462723.64768089,5806256.38569117,6398241.4125,6631957.14019963,6343041.55480422,6421801.78081992,2344522.55625,2541305.025,3442629.38163948,3404054.09623172,3585600.67398266,3256063.71058696,3056701.62576213,2761783.78964475,3215148.89037133,4062622.79637184,2462592.0375,3998703.43082607,2423235.54375,2880403.72271276,3753784.40364893,3581351.99528222,3637928.64986634,3508555.96128351,3238857.14784761,4057461.39554185,2869471.15669081,3782135.41724658,3369764.76005313,3408956.53971162,3772376.83514852,4764191.04596779,4232822.86190721,2900891.08930985,2501948.53125,4272990.75,4206109.19810528,4368249.82989597,4561827.39907642,4521888.89538821,4604751.60282763,5119423.43001803,5013229.91404861,4590705.77370609,4407115.22282038,4864886.22038275,3683950.82308812,3906295.55248381,3811514.46771222,5762764.94463899,6251437.84992443,5925736.29175443,5713699.38715185,6417820.38899745,6087621.08214827,6336266.86634408,6234901.09444153,6733249.54286626,5341878.14305374,5049544.82020172,5048132.82520177,6107490.66184474,6094784.50337788,6789466.7589842,6493891.69918067,5829351.35712559,5792930.14949529,6763766.95030373,7368622.95968463,7033899.54592751,7149495.32447672,7239225.36588139,5454060.4662377,5383948.07471914,5331478.48184639,4897527.09931274,5715369.83372733,5937370.13379795,6386438.17091159,5728092.71006071,6040312.00106006,5270548.83617863,6167553.8067024,5574001.84298875,5777267.49087734,5765618.30076324,7421510.25,6387815.5984402,6098321.86481251,6460940.81343323,7092727.75459329,7763532.30548483,7191610.1705803,7440985.69477849,7590226.01891741,7702926.78999512,8444779.0875,8074018.79972712,7798065.90292917,7590739.53700952,7926366.06891991,7430146.94227047,8484135.58125,8120774.74692543,8405422.59375,8014884.04805915,7185371.2875,7409593.76518569,7703591.57922561,4852212.8046968,4479097.35957484,6863145.39444849,8008235.58506312,8602205.0625,4752810.65204325,6581908.59755113,6680965.88768445,6764088.10431517,6634380.375,7202401.02819808,6632512.86492612,6394982.12930457,7741478.84470464,7522443.7791873,8168440.78860561,8175085.83906968,7949677.46027186,8562848.56875,4513697.75320387,4386931.311909,4805410.75689738,4623716.87638132,5114317.06656005,4422666.91475049,4110766.90316788,4789902.48874186,5153150.63105187,7004256.46511376,8838344.025,6982685.39944847,6891459.89148701,7404179.70891763,8641561.55625,8364008.57912602,8759631.0375,8245958.45951919,8396827.67508923,8038034.62131828,8720274.54375,7690449.48701012,5095678.90825055,3963657.65869581,3485860.875,7487499.39971643,7142298.23148485,7789354.89594386,6640587.82188574,6818891.84356161,6433059.61982831,3604855.74098089,3770161.01676209,2620018.0125,4150377.10885406,3224639.64888892,4823981.6625,4659007.8833875,4850843.36880368,2959378.37304627,2580661.51875,2898987.08602779,3096295.15789866,2935423.92554563,3187492.33231429,3264963.18725819,4235881.91166776,5231399.03320627,7972501.1625,7231701.20623081,7880141.13422346,7655807.59744669,7522220.65687807,8208640.125,7662007.11345972,8276860.75076804,7653924.33989551,7984955.59387517,8917057.0125,7972929.01945311,8349410.18246656,8378045.55048367,7982047.14389744,8284012.64693771,7349166.02691922,8135609.47392747,8877700.51875,8598584.70750672,8643977.20540123,8619698.70745586,8956413.50625,8583087.252096,8642467.60879502,8798987.53125,8475078.82292903,8019874.41228339,7783788.46568247,7872322.52887251,7815075.1875,8355000.64905269,8513960.5473371,7930731.53965616,6822349.15318231,6657428.36969315,6240815.4375,7027945.3125,6324197.21892013,5933222.59490463,7185660.9892403,6118286.2281819,5504707.43780276,5997029.67949575,5060120.625,5453685.5625,5657390.33672125,5185887.12881306,6936889.01067805,7454861.69645119,7386915.51050341,5430430.76629135,5199564.60496077,4866111.01507227,4473553.49967188,4666555.6875,4439149.70601457,4821928.08811871,4738392.41123538,8280754.65373118,5443578.64805444,5074451.1152489,7357653.84823608,6817288.44662108,6338415.74190144,3879425.8125,4050309.82012275,3693832.9220485,3403273.22967356,2659374.50625,3092295.9375,2552139.77402344,2575469.60671997,2108383.59375,2388862.72378699,2977479.2438058,2462592.0375],"Archive3101_field5":[28825.6690517499,0,0,0,-4757.68589466063,-1480.98482915309,-12926.5259193628,7.24087606026058e-12,15892.3867923944,11204.5817294909,-364.625349726891,27765.7646606134,-13327.9806582166,-43913.8852431912,1983.38328260691,14741.9399104732,-18957.5711479111,9200.61699824294,1939.78618214441,9243.71372256598,7030.00352249194,11837.259853216,2052.41745598956,3816.05115490965,75.3689368679469,2756.52657501515,16044.2282617661,5654.43897608076,-1162.95520031905,4492.07503799419,354.161612561627,11917.4127911203,15511.9298744961,27825.4278394397,18037.1612995757,-15715.5550673848,-3852.5913977405,-3794.11930149508,-21234.3268696927,-6912.3974019194,5066.36736122417,-27824.4647504342,5563.50150745868,-18303.5518498585,5150.60599172974,-4758.58001711183,-14039.7689953797,-35691.8023084629,-32017.7174757832,-24852.1357531527,-7109.21456567698,-61795.1022829133,-4173.37452960597,-16139.82435278,-39494.1163643872,-8450.54614570005,-10341.3350848572,-8620.88814297724,-15534.9759403919,-10041.3408287093,-16982.5030435368,-16273.2288244564,-9935.02737649608,-12529.5878859187,-15105.1079515341,-26312.2467679685,-52985.2050374222,-14549.670347183,15833.9891732644,-16746.7155059063,-16783.6495186473,-1827.49610896167,-14899.0328393654,-15851.5126182722,-18099.7851389561,-17545.8393473678,-6571.65815889154,-7686.47501642958,-12270.6392656783,-15906.7608759424,-14872.7062103542,-1763.25772878988,-4961.42248168722,-10101.2151419499,38586.9256273328,8387.49887261834,-8115.7432061852,-13160.5320683383,-7264.07015376094,7340.68460268994,4553.53512906738,354.801506217601,-5091.3358023568,2289.16227408164,3395.1186226545,21605.6999854062,23549.3204343831,27081.0998945873,19234.5150806763,15844.1957542277,7423.54854430638,18502.352466255,32203.1455560485,3050.74842414031,30478.3113565082,4629.06466849424,11474.6875687885,28682.7628330014,28380.6289073852,29950.3396789995,26412.6037554499,21046.5118485207,34257.5674042513,11891.5280796537,32111.773785736,21097.7441471573,24488.2061457109,27211.7056624733,25094.5619492866,26804.7043835339,11780.0819434132,2447.11769377658,-15642.535687975,31821.688443271,31292.5381181549,28511.0728079653,24284.482954269,29313.8168360929,16401.6701185303,9141.52833355741,15726.9884955211,15400.5737832218,3577.53939202182,18907.386262388,31364.9210609258,21176.4503589356,-13606.1995158794,-15818.9394403755,-14725.0282610174,-9929.50372904569,-18789.6965731496,-16453.5555601495,-17883.6820382807,-17732.2268510891,-17859.9236987602,-2513.7309966869,10022.5629320684,14033.9300117143,-9638.58674471683,-17478.5290614142,-18291.5110550445,-17940.3180559793,-11565.8689605439,-4716.76766974977,-19150.6519585787,-17798.7961579524,-18625.7099290001,-17272.7514667697,-18356.0929117673,4578.39916057907,10481.9811752453,11430.4897380775,21611.317951544,2831.43411688851,6642.59540723845,-8229.751825372,5848.02164834358,-6161.38528212176,15848.2867998989,-152.162958934555,11616.927457214,12459.7331994293,12042.6561263126,44479.8609609242,9455.86648427332,7982.44195179834,1919.0217113149,-16981.6758537188,-11295.6427515008,-13329.8893569713,-15263.4975116475,-9759.56448209576,-15496.0853966093,0,-6249.83613080192,7933.30152568032,-1170.73951697408,-3241.02985790983,6775.37015752944,-2077.74771193685,4591.08263536737,9392.78806066279,18210.4764733547,29398.5076708828,25602.607647443,23736.206346306,23020.981309307,31833.1243988607,5695.83293830941,-11615.3070748276,-2617.9507002995,24702.3192026315,4899.50023597132,11022.8733201965,196.019992100913,29853.976894664,14205.0630523148,-4057.96662395742,16192.1608693274,-14530.4839500279,-15652.367055458,-8860.58084605133,-6254.48513897575,-11217.5686996311,-1937.20233616023,29691.9196117982,26610.9866468256,24300.0713710303,19597.4883132768,17849.7616460717,23377.1140224004,16941.2701468037,20713.7713848937,16134.7595936547,-4998.02464716419,-2011.30926803764,-11446.7036532974,-8127.8654686686,-8282.4791820296,-2363.57702499816,-5915.88197615545,-1137.1980915999,-7988.94453581435,-4642.17830730408,-10563.8893650292,-3012.19201364656,-12406.0359092615,15736.0266580844,22399.3281605539,-39721.3559836479,-14702.058829686,-14735.3064347518,-12773.1582097942,-16136.6609386172,-13296.2614711072,-11772.4438780022,-5086.68498994054,11337.090541853,-2457.00731783395,809.884159757888,6515.20711575359,-20424.9584670049,-21268.3053977071,-19506.4761635969,10567.3447762009,2170.87349290532,652.693487810572,-20199.9792688801,7101.43671619547,-5377.60281056118,14759.8767042908,31583.1066972819,-3919.76382027272,21896.9169064974,7253.91793892747,14293.1113393365,4644.83397304491,15290.9713507596,56721.6921642543,31963.4680680602,1273.64813797189,-4507.08667114352,6335.80856826955,2493.35757614219,-1508.15839057245,10254.5223289924,-3845.50585011756,-7218.49914506478,-8072.44059553993,-4813.8705025647,26349.9015497152,-350.497423127284,-1395.9062639186,2037.48040129318,16138.7754392728,7824.25395114922,54137.8652134528,30999.6630206726,-659.152585133196,-5440.46955033067,-9427.37340943309,-9232.38621724175,24686.5331753703,47461.1653740972,42898.2325362914,-3444.15618108796,43370.8527514455,20245.9408517541,24607.0446690969,24957.5358034132,36117.6050393302,23290.9815548631,17420.2349426435,30710.0205334181,12071.2548442461,15691.345656933,20188.6809976905,7840.08732232085,13657.3611122536,17748.4470297378,11467.7128774574,29950.3090075291,37933.6933457751,22702.0596896196,13540.2489755374,14675.8483335987,17474.4162274293,12947.3067829943,-4640.84950524778,-1856.66619115344,4687.59654317464,12369.2555316224,-6265.58178373338,14679.1246535421,16915.0216308555,-13043.5158141149,-17151.5472895762,-13844.1046885501,-30456.6357612495,-17032.2021867162,-22223.0957442636,-21092.5532282815,-10398.8651098858,-28657.3837296528,-6763.8522928631,-38357.7673776269,-18150.763523871,-13287.2631228634,-42941.8844573662,-36726.2885002905],"Archive3101_field6":[37160.726741967,0,0,0,23404.0974827518,121074.594751324,-1498.13830404986,-143393.616946546,2460.85057680085,-53068.1873967358,68694.4296488356,-55827.3831571482,28317.5115834721,-3603.36978184435,-133167.331538291,-99317.9755047771,-65873.2280015724,-89258.3367687858,-141308.073565667,-123889.695284522,-127961.782085917,-107473.227505828,-140257.016266832,-130313.32804533,-119203.885082377,-118641.345782759,-79812.7922024572,-114232.240693899,-86230.4191120373,-68161.4748496965,-127437.526911409,-72262.0061679936,-64362.9031273276,-59669.52032548,-42050.6543057213,-26179.5650194315,-44033.7483634292,-11218.3016387655,-41523.1135682449,-24094.1759152483,-31027.1074758342,-2851.71997755162,-7749.72622164374,387.786729321003,-17804.0857067176,1896.25048448147,-14782.7173605793,1147.37223544256,-12004.6484572389,-6611.45270580382,-61751.3372172576,-13777.2194316981,11848.0863032175,15296.974558901,-19480.1929117931,13876.1458782156,29059.6358493899,27638.993655788,44962.4235993587,3792.59132581083,8314.12566356119,8365.53279991583,-6390.11636222588,18761.4048586996,31112.8052091019,-24909.860999884,-8757.3775553509,38626.7296040821,11993.8744976832,54125.6859428881,45697.9660286949,9715.75273950608,27236.9617050984,42455.455495813,36790.3705150121,27216.9556453301,51244.7277471796,31303.7367100818,48546.2020711165,72323.5952827368,62503.9418582217,110212.319261377,71704.4250557272,66993.8530648264,12482.7374740437,42046.4279004922,4263.7084817004,15158.576771255,15527.7167820664,8538.64974690293,27350.6224179828,20172.103118093,39658.0084201969,-143429.057061024,-131381.848119594,-75443.7240905318,-83962.8232095581,-70182.6628591691,-92598.3247514702,-104658.899443524,-129050.010198108,-100422.770738317,-49083.5534788526,-139531.158103038,-51665.4565522844,-139859.65420266,-125695.465074658,-64832.4310356596,-74390.7844980319,-76617.0046853436,-83611.2299414118,-99862.2078390015,-55881.8441289052,-121586.236724349,-64763.5553856312,-95373.415358822,-93986.9875242574,-73671.4562730884,-11668.7658383241,-40311.3819083064,-124942.657947329,-136171.017711203,-4726.75707609413,-49783.2781825249,-32076.5467622821,-26962.4609246154,-18850.488126238,-22534.0669228463,-3662.6795773916,-368.325301224011,-15211.2317729115,-28689.5735777607,379.533735078293,-77831.6286761564,-61905.0393644309,-57702.4777497343,38536.7725692273,51571.9410899917,43095.8380958657,33470.7813871859,62393.587374812,50548.2492148297,59332.3928814837,55517.1150288566,66524.8675490434,18637.9084506864,3971.70491272612,-51.3506057587983,42511.0259643207,52384.1820388369,72022.5185495407,63671.8919480099,37376.6904386036,30675.500666729,72979.5184044877,91399.5647874275,78971.216762259,81339.4331395624,85301.258983512,13994.9029629858,6827.04735473061,2729.99874702006,-13497.0226403339,22333.2793557317,27014.9157198288,53891.4657828939,20978.7740039165,39085.5530654224,-4314.68247038002,37036.4782319095,9653.67247171564,16677.6999963679,13458.4238202456,4324.9856648244,34094.6873339204,29771.6384378273,44553.2718417253,80911.4674791285,99911.0946087276,79437.8828945932,92363.5211231792,88944.7289203892,100132.465206986,94024.7430785698,102688.131486067,71363.8674645229,78207.3704527966,91383.2300846674,60758.4119641305,100684.17001533,85239.7072335863,55639.692797222,62167.9878906799,9266.66604394096,32731.5520907228,42430.9607271065,-12483.2460075973,-35777.1265239242,54022.3325301043,108212.725223643,118570.805581883,-27369.8566556391,45366.1864726018,40458.1378984826,56949.8978820111,5173.92107484035,47818.092627534,55239.3456130474,25580.7899343817,102532.292958707,97474.846851428,113344.148942994,110023.523632494,105410.163794565,115833.351401832,-36158.602729815,-41170.5571748252,-22636.3515340527,-28952.3095081324,-8872.29925471984,-43341.9252057745,-49368.989599047,-24163.7987493994,-11522.5558355034,67271.8094185274,113502.266674243,70544.2273209101,65610.6394288461,79202.1111895646,120109.262600353,117598.422318031,119585.48725289,113443.614543327,118116.774956029,109376.911956041,120373.569460795,95701.4358486878,-5587.91089325282,-62024.3961266207,-22134.5853606635,90632.4360729364,77474.2560531398,102104.608595436,65247.2099633322,65246.9956716985,52670.9483029972,-58053.4155181944,-63124.008110866,-107143.386151921,-37649.9064026922,-87664.3682768016,4588.03434580316,602.335166327789,7557.70556120372,-120551.95125869,-126079.646628153,-108287.181129733,-67919.4142169623,-117130.355642352,-79361.0685559887,-97657.6800378479,-41541.8813713687,16294.9012624035,28751.7252479801,61206.758143224,68626.6328211659,74622.9440563042,58433.3011452655,8155.55187299952,35861.4959565052,94882.9443032993,84311.1050778974,81695.0559389798,96230.2363029587,90960.1743192465,80024.6019414455,108089.789919686,98894.8976420302,109187.947549787,75512.3868266923,55123.8542338344,107224.716757115,107108.203925909,97922.6337970048,73841.7208524254,77599.2048353913,14781.9474501755,46602.3483672296,116118.802327262,116803.137596922,106113.032902977,95469.971253324,52207.6326550882,11380.6822376984,34995.2822451553,116588.403210395,27229.440557377,31318.1396232626,18116.2614660356,2277.47618369432,9129.78939944229,8852.2291186087,11427.3524961376,24182.1585913165,23983.2755356352,-278.416903440611,2534.29697648189,-4282.43645433581,0,-653.936789130837,-6592.01695155382,14692.1653611237,21423.9292153246,40932.9489727107,-999.527615616978,-13530.816044568,-21716.320709548,-31610.8274633285,-1270.57451396772,-15496.6477386472,-6061.36458512789,-20031.2488235296,115501.898755283,1645.66268864467,-12481.5334920747,85296.5799339017,67728.0258303266,51423.4684282219,-9025.21033592508,-19074.6737346701,-30313.7506170732,-52296.2915334281,-55636.38279243,-24063.6726533536,-102771.444878178,-59158.3623136356,-66998.1079903694,-99810.8096066168,-33744.2152639306,-24662.0009016268],"Archive3101_field7":[34143.9532578392,0,0,0,81.5963091534743,6847.75927763109,-100450.594393181,-7883.86785008442,99454.5439702885,-29893.4455086379,31666.8331286226,31992.5492193868,-49568.5592409792,-94240.267806483,-25482.3413840524,-7334.38964327102,-46671.0920024267,-17506.4975460722,-14686.1959411383,-10560.6502477685,-14380.5047410425,-13166.3436158502,-17442.6705078704,-22688.4151710437,-32948.3767970917,-25594.3037188331,-12016.0941000272,-23308.3731906165,-29029.1893900175,-30212.5027008387,-28935.94272519,-21453.5094007666,-19464.6998079273,-5942.1838030978,-25818.3199915547,-68563.7652004108,-48013.5825416454,-54864.4119915955,-60457.3033115952,-57727.2472474862,-43170.9588820605,-99839.0022564046,-41292.3067037698,-77643.8972658884,-45460.6612130843,-50804.0406824949,-70382.3265581733,-97604.2166865201,-85945.6136986102,-87355.370081086,-42927.7485350374,-70861.1836393163,-39809.5177291862,-68696.2242863071,-80397.4044453931,-47254.5206735367,-39799.5477665188,-27160.7139214619,-38286.9357573278,-60102.7064039873,-69944.1586388735,-88842.8148452179,-65282.255044387,-54827.3883011704,-58695.4325076055,-73506.8160078083,-84947.1500611867,-46743.7456429964,-82736.8363725339,-50585.2799560813,-53664.1346361727,-94726.8420459959,-78143.3634362892,-65007.0363593494,-66055.5293814782,-73650.9179544744,-62164.1642976134,-80331.2331038805,-61940.6798546552,-34580.0200225449,-48749.218259607,-11215.8854487168,-41485.9922330738,-46489.7692714035,-63575.0741323723,-64819.0564446489,-100407.935063563,-91419.4204679571,-92737.1543205688,-90696.9940015336,-79987.7692477453,-87617.7341574464,-73641.6598514591,-10687.2847712614,11290.3624232152,-5969.54653444538,-356.26926307285,-1671.58614843707,-4512.64999647475,-5213.5468132192,-3751.85628829071,1.01845984987867,2902.544897631,473.919739694615,-2402.72606752652,-2368.1486540064,-696.220777329553,2206.78236743069,2666.5140616492,9811.7673943341,5125.02012874967,5516.11526288183,9382.56906468063,7063.50492745695,4535.14278327247,13656.219822164,9324.71911814488,20782.0162914238,-4021.97080386911,-12831.3751443403,-233.194637055658,8371.8817889734,96267.0944336706,24130.7986487405,-2251.55793741027,12609.002128804,-13963.9928473405,5019.29781975172,19616.4095232072,-25966.7768876797,-28725.3440924147,-33308.4930407089,-35376.4745795074,29520.1999539953,18032.8550867495,-14643.7379877849,-32002.1387843635,-8423.58796025126,-20369.9848716622,-11518.6242709702,-20416.0720625945,-27421.2422824905,-32249.7319311618,-17278.5156641962,-9656.59091029656,-18781.0591202378,-12011.0242515543,6873.28530636751,7597.75039910636,-42318.161941404,-23803.292537796,-38922.0969814594,-311.512969066603,13505.3398730617,-13945.0426003844,-4384.7126403449,-7334.66660597272,694.760082293472,-12643.0374576235,18582.8890251497,37844.0687612415,27393.2161760818,24741.0639068312,27830.1433679339,43666.8029767081,19022.2182643344,38992.2093316974,19739.0457730591,52188.4793682394,33414.0948265716,46178.6798429839,63913.9192795425,54413.8756019343,83387.5942105279,58723.7205494759,53319.3532562368,39477.1781897353,-22359.0386907104,-14067.9539625067,-29894.9104896039,-15631.3165672708,-24317.0668795797,-6281.73910088519,-16386.9896656695,-16772.7621697808,-37956.5767571661,-35416.4747949063,-25978.1964241686,-49196.586460919,-17765.2099548287,-25029.5273309451,-23099.120111386,-39788.4866464222,-74726.9987474896,-62702.738041494,-51744.976232448,15268.811988746,20406.389891626,45118.2291663254,2625.54202087021,-755.539816520192,40740.520156834,48098.5187116152,56761.9564935462,35708.412111977,94219.6351228068,56250.6640354649,27788.1332075815,71919.0800596141,-1108.25780864949,1054.31235455077,-1121.59342226498,-10330.9857419705,-8385.73948600636,-6158.67686686097,32731.0151071094,36821.1113427931,34704.6794043902,59587.0135361465,43955.9922704713,46177.624905707,54784.1269562423,48998.9610682303,65602.021329506,24998.8750115409,21136.7421219853,12846.1908542492,19264.6832918976,15884.5575603646,2279.69339561655,4617.76414110147,15090.1656093433,9258.76226613717,7732.20704517162,4583.74325440859,10026.4376535945,7709.82463230816,35352.5573978662,38805.9840995856,70075.8792711446,4413.73640992718,5601.41203617892,5863.78899173148,3767.58423101331,9059.75915891361,10400.0086691817,55334.2422776065,48542.1721814947,26583.2422477493,70625.1954838346,33240.0145273345,-100733.83939956,-94004.7643876308,-80080.1665034739,12042.0254373121,17642.8468433214,29303.7986078581,45442.2783842225,18645.3996926825,40608.7246794086,19814.4625891088,5813.96365576798,-31725.1277180823,-36975.3510204334,41849.5360073323,40769.2153423198,32338.357111795,48393.1349480926,63141.4342654138,64032.9430865955,24521.4218159838,20726.2642514635,29988.2179623047,30264.1213855942,22269.1052869423,33985.8988478213,19457.6147878887,15486.475712787,12972.54943777,22302.8617607658,47742.865266059,26629.0826060249,24414.5874798462,28757.0002606907,36730.6772096536,31877.2932165486,48820.1901065623,38923.6600056841,19106.2903320408,11931.0600683413,10341.0880828905,12344.2712755808,52396.2456598192,73940.4307036963,49367.8932425499,17464.8603742314,61243.5371485331,70276.9494596186,85638.66948356,98293.6006977083,87791.9180565857,91073.0309435752,78520.1195538477,75904.5219519275,64378.0850425429,76367.7997650415,94467.6094074264,99413.6427120822,102741.712155281,90567.086156602,88141.873465049,85501.8980528666,75403.3807041289,64757.1116180953,95420.160733345,75336.2079065362,69384.3113361649,70556.6254034296,99589.3032776733,88197.700233302,93213.4693461913,79609.9429317394,-4967.76542923912,61484.6531383238,58112.7159464572,8772.37993375356,-2605.80901287639,-52.3702624286193,87280.7181208612,86342.3425455585,75380.4108687801,58336.0031087981,24053.1775449264,38356.9883980476,-35706.2039260672,-55107.9970217601,-34880.9997997256,-42632.5858186718,-68580.832044418,-40524.316668495]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3102.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3102.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3102.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3102_field1":[0,0,0,0,153.06814753521,0,0,0,0,317.460727508573,326.707291254914,-108.039027668005,128.918949225301,84.2100744764573,0,0,202.061608111607,139.392314667147,10.3426751431989,0,17.9425436196538,0,0,115.768334729195,0,0,0,0,0,0,0,153.06814753521,0,0,0,0,317.460727508573,326.707291254914,-108.039027668005,128.918949225301,84.2100744764573,0,0,202.061608111607,139.392314667147,10.3426751431989,0,17.9425436196538,0,0,115.768334729195,0,0,0,0,0,0,0,153.06814753521,0,0,0,0,317.460727508573,326.707291254914,-108.039027668005,128.918949225301,84.2100744764573,0,0,202.061608111607,139.392314667147,10.3426751431989,0,17.9425436196538,0,0,115.768334729195,0,0,0],"Archive3102_field2":[0,0,0,0,1478.98293467286,0,0,0,0,1282.84123830902,1012.34584415348,1176.43989157977,1257.52229991162,1192.32870647704,0,0,1330.12401744479,1261.15616349122,823.322899248609,0,771.991476075294,0,0,1268.65051600038,0,0,0,0,0,0,0,1478.98293467286,0,0,0,0,1282.84123830902,1012.34584415348,1176.43989157977,1257.52229991162,1192.32870647704,0,0,1330.12401744479,1261.15616349122,823.322899248609,0,771.991476075294,0,0,1268.65051600038,0,0,0,0,0,0,0,1478.98293467286,0,0,0,0,1282.84123830902,1012.34584415348,1176.43989157977,1257.52229991162,1192.32870647704,0,0,1330.12401744479,1261.15616349122,823.322899248609,0,771.991476075294,0,0,1268.65051600038,0,0,0],"Archive3102_field3":[0,0,0,0,-2.94606573359155,0,0,0,0,-7.46828033890168,-8.12187032469344,-6.9743648567694,-3.94469375451376,-5.848370775773,0,0,-4.51589120413952,-3.80413612057037,-7.42990236269174,0,-6.5392962157835,0,0,-4.22605181468273,0,0,0,0,0,0,0,-3.02938902191597,0,0,0,0,-7.10406841377764,-9.06488604023314,-6.60369821595199,-3.84624400271528,-6.70629894574897,0,0,-4.97188696127012,-3.77059803122724,-7.90682793905216,0,-6.69094845038941,0,0,-3.97180620485879,0,0,0,0,0,0,0,-3.27935888688922,0,0,0,0,-6.01143263840558,-11.8939331868523,-5.49169829349976,-3.55089474731983,-9.28008345567694,0,0,-6.33987423266195,-3.66998376319784,-9.3376046681334,0,-7.14590515420711,0,0,-3.20906937538699,0,0,0],"Archive3102_field4":[0,0,0,0,1486.88569101552,0,0,0,0,1321.55920466232,1063.78932458994,1181.41097496376,1264.11945276275,1195.31304869197,0,0,1345.39183457069,1268.84181738772,823.421381071303,0,772.227645451425,0,0,1273.92868661788,0,0,0,0,0,0,0,1486.88585844417,0,0,0,0,1321.55719664513,1063.79694232164,1181.40884490924,1264.1191493832,1195.31755419976,0,0,1345.39344242347,1268.84171727984,823.425822575604,0,772.228944546641,0,0,1273.9278685697,0,0,0,0,0,0,0,1486.886388746,0,0,0,0,1321.55177482339,1063.82481075626,1181.40315250545,1264.11828524781,1195.33476519404,0,0,1345.39919327366,1268.84142227505,823.440804318799,0,772.233020509306,0,0,1273.92571887072,0,0,0],"Archive3102_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3103.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3103.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3103.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3103_field1":[0,0,0,0,153.06821123737,0,0,0,0,317.461031230799,326.706606073761,-108.039133431255,128.919074860848,84.2100918281353,0,0,202.061677829585,139.39228392574,10.3434481272025,0,17.9417897019373,0,0,115.768363090327,0,0,0,0,0,0,0,153.068247794902,0,0,0,0,317.460872249466,326.707202632207,-108.039079263294,128.919001614362,84.2100700992728,0,0,202.061674810467,139.392353862369,10.342840827481,0,17.9423771858976,0,0,115.768373142336,0,0,0,0,0,0,0,153.068286376976,0,0,0,0,317.460704457584,326.707832253255,-108.039022090602,128.918924309559,84.2100471572672,0,0,202.061671636174,139.392427675758,10.3421998753952,0,17.942997225021,0,0,115.768383750568,0,0,0],"Archive3103_field2":[0,0,0,0,1478.98323130972,0,0,0,0,1282.84202888557,1012.34407114424,1176.44068205015,1257.52244197841,1192.32734460785,0,0,1330.12343348629,1261.15643334881,823.321820963481,0,771.991307918155,0,0,1268.65146450913,0,0,0,0,0,0,0,1478.98336909888,0,0,0,0,1282.84163070229,1012.34554461775,1176.4402141335,1257.52250687042,1192.32846739461,0,0,1330.12410788087,1261.15648552724,823.322717520099,0,771.991570035242,0,0,1268.65093499183,0,0,0,0,0,0,0,1478.98351452249,0,0,0,0,1282.84121045165,1012.34709976906,1176.4397202791,1257.52257535906,1192.32965242423,0,0,1330.12481966305,1261.15654059974,823.323663775778,0,771.991846674747,0,0,1268.65037611962,0,0,0],"Archive3103_field3":[0,0,0,0,-2.94606537095541,0,0,0,0,-7.46827984742084,-8.12187178097046,-6.97436433888857,-3.94469323241957,-5.84837174916436,0,0,-4.51589135242173,-3.80413547777768,-7.42990316570278,0,-6.53929643058357,0,0,-4.22605114262875,0,0,0,0,0,0,0,-3.02938943369209,0,0,0,0,-7.10406787156973,-9.06488569200107,-6.60369791330683,-3.84624551493394,-6.70629905143894,0,0,-4.97188803494276,-3.77059967438521,-7.90682767360842,0,-6.69094820070785,0,0,-3.97180599270336,0,0,0,0,0,0,0,-3.2793587471716,0,0,0,0,-6.01143199065165,-11.8939340032687,-5.49169773373813,-3.55089502291117,-9.28008402968037,0,0,-6.33987495923782,-3.66998405110362,-9.33760497391091,0,-7.14590487100405,0,0,-3.20906877196327,0,0,0],"Archive3103_field4":[0,0,0,0,1486.8859926329,0,0,0,0,1321.56004503361,1063.7874269018,1181.41177177694,1264.11960689921,1195.31169145015,0,0,1345.39126771039,1268.84208223161,823.420312631911,0,772.227459830781,0,0,1273.92963377183,0,0,0,0,0,0,0,1486.8863008833,0,0,0,0,1321.55761230929,1063.79663005284,1181.40917082299,1264.11936060938,1195.31731540736,0,0,1345.39354185447,1268.84204167604,823.425642948362,0,772.229034608505,0,0,1273.92828931558,0,0,0,0,0,0,0,1486.88697980629,0,0,0,0,1321.5517422418,1063.82617176516,1181.40298141179,1264.11855671779,1195.33570684218,0,0,1345.39999592781,1268.84180951519,823.441562770596,0,772.233401529699,0,0,1273.92558402249,0,0,0],"Archive3103_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive3103_field6":[-8974878.19626412,-8366066.1,-2087125.7038868,-2705673.54748713,-5521370.54071895,-8688064.93489243,-5235639.69873276,-2375174.41924908,-5828649.19088547,-3806180.05720852,-7256378.94999444,-4105574.44394844,-5392253.69511707,-7043082.13971334,-6792765.87344399,-8526508.40720628,-6769736.82903712,-5859250.38171432,-6526920.3695998,-4281328.33136784,-5139121.41243844,-3679484.0577736,-2226453.075,-3922222.22722905,-7379726.64252824,-8838344.025,-2541305.025,-6725935.75764378,-6274549.575,-1569868.9396479,-2030990.80400338,-4138271.12092629,-6517835.43342282,-3931253.01622306,-1779204.6572673,-4366836.58308691,-2856003.81953867,-5440357.93021039,-3076682.48864592,-4048511.55189201,-5286095.84724714,-5094814.22609072,-6395635.38632262,-5081624.31324368,-4392517.90929666,-4897842.65312953,-3213080.61053717,-3853921.07777578,-2768662.36679581,-1669839.80625,-2932687.35667288,-5524349.20278757,-6628758.01875,-1905978.76875,20891.4752297837,0,-18098.6517079379,-6942.57404411195,11027.2245822116,-7146.89230204982,-18093.0225728053,8704.63199382506,18601.1079326101,-5472.43212685039,7705.30255788824,9992.28509632175,-17284.4385546123,-15136.6936743586,-959.394081052587,-3016.31997089482,-17286.3938513077,7679.55379575365,-10609.427543341,-8337.51606691783,1679.95357909729,-36197.3034158758,0,35916.9848083744,41782.9504595674,0,0],"Archive3103_field7":[-8950359.26822574,-8366066.1,-2118340.2529021,-2746850.70667473,-5527829.1836323,-8585266.31989938,-5211502.55250806,-2484495.28404057,-5836561.36834019,-3841744.57390747,-7213005.79547949,-4163816.611785,-5343142.05727732,-6953583.32277837,-6765215.09642107,-8458693.32879345,-6682094.31702025,-5847782.62637224,-6467381.4118992,-4276814.04933002,-5135972.06627262,-3643286.85,-2325079.38080419,-4036968.85767178,-7421510.25,-8747522.56145147,-2637544.43834945,-6701416.8048036,-6274549.575,-1601083.48594747,-2072167.96485331,-4144729.66072422,-6415036.85934886,-3907115.96200901,-1888525.53082447,-4374748.81654376,-2891564.47276387,-5396984.83994809,-3134926.35050592,-3999398.20568621,-5196597.0895374,-5067263.54604608,-6327820.35197808,-4993982.21218427,-4381051.15272147,-4838303.74819824,-3208566.40477107,-3850771.75270141,-2732465.1375,-1768466.12814494,-3047434.47461561,-5566132.6875,-6537936.62835721,-2002218.19845662,45410.5047720395,0,-49313.1909068903,-48119.7470147274,4568.99056932589,95651.4022260435,6043.89739742962,-100616.289390886,10688.8964881081,-41026.6670659482,51077.5797285123,-48254.1580904226,31832.8213538847,74361.1224862546,26591.0872622607,64798.4980115074,70353.5114170774,19143.3065790143,48929.130738778,-3823.38107104115,4829.23968380899,0,-98626.3818137807,-78830.7776617618,0,90821.0095440789,-96239.4940294548],"Archive3103_field8":[-8995770,-8366066.1,-2069027.1,-2698731,-5589966.01656064,-8680918.05,-5217546.6,-2383879.05,-5847250.5,-3605769.65795838,-7418544.23876145,-3953823.31222851,-5320223.65918046,-7205577.65004533,-6791806.35,-8523492.075,-6873794.59331966,-5852529.59512506,-6599155.79116835,-4272990.75,-5178262.80071647,-3643286.85,-2226453.075,-3860516.2685017,-7421510.25,-8838344.025,-2541305.025,-6746827.5,-6274549.575,-1551770.325,-2024048.25,-4206868.82542243,-6510688.5375,-3913159.95,-1787909.2875,-4385437.875,-2655519.70799534,-5602522.77659962,-2924918.81692415,-3976473.34324832,-5448591.22542235,-5093854.7625,-6392619.05625,-5185681.3773646,-4385796.55146471,-4970078.02294949,-3204743.0625,-3893062.41975115,-2732465.1375,-1669839.80625,-2870980.94051168,-5566132.6875,-6628758.01875,-1905978.76875,0,0,0,0,-57577.5661307101,0,0,0,0,195132.055008642,-154455.819640291,161775.32678141,54772.5610897195,-177629.081142344,0,0,-121339.601911628,14401.0488107917,-82844.3106086598,0,-37461.1528343762,0,0,97623.9849711143,0,0,0],"Archive3103_field9":[39695.5639823645,0,-42669.40439789,40008.3330020928,-1660.55924510251,10170.981817138,-73693.9446394974,-3223.84982032786,69135.0139855852,-33289.0847333631,35997.1050003767,30122.452612191,-45438.4717067777,-16551.0622521926,-38021.2269278874,-18329.5832790741,10147.8106804853,42720.9144877989,-53387.6466555035,74912.6743776792,70630.9049045683,-73135.4322139093,-12203.3765818707,-309.267005790446,64736.045290588,14655.0826741411,4419.10203329909,39695.4537068856,0,-42669.4329365737,40008.372543713,-1660.72718554617,10170.9669809488,-73693.8747200316,-3223.84971387893,69134.8498610949,-33290.4988943168,35996.9909661735,30122.795413074,-45439.0793950044,-16551.034742865,-38021.1387803245,-18329.5777000189,10147.7437329282,42720.8869317215,-53387.5623230458,74912.6552046674,70630.7536309996,-73135.4896238185,-12203.3762493289,-309.26301880425,64735.8311148966,14655.0762988746,4419.10232641341,39694.9993261375,0,-42669.5176444896,40008.4870258994,-1661.23649551886,10170.9257493315,-73693.5889605698,-3223.85073072797,69134.1864030624,-33292.8196677415,35996.410979919,30123.2584214091,-45440.2997451322,-16550.7590057165,-38020.7939482381,-18329.5163349634,10147.3725741863,42720.4130887281,-53387.1641950261,74912.5816569915,70630.3138962031,-73135.6540779553,-12203.3812110238,-309.258038901546,64734.9780778263,14655.0205744488,4419.10479653385],"Archive3103_field10":[-259.683379615673,0,212.885087265984,-224.08480185613,-21.6016085416221,29.5287017961928,406.106815104708,-4.89612196649714,-420.53159084277,-37.2497477454945,-27.0324733262533,35.2208627031576,-94.2037950736269,-110.250595239135,344.622324508311,88.2476782929794,108.697629645807,135.539187187186,152.258084022436,-528.882034449713,-224.342289932806,425.770174531968,0,-25.6350148237047,-519.366759231346,0,0,-289.833304622684,0,202.503360381148,-212.175676143269,-29.3349221254242,30.0844384800088,408.455779183081,-4.96800539262849,-436.866980932028,-14.7003178180279,-49.880771115187,37.2948702325657,-63.6523556848631,-110.113080325582,366.742242169644,102.699434989958,100.386433045102,134.061919551996,191.29807743622,-517.619992692125,-229.959924606587,405.006720762296,0,-25.5415637998105,-579.666609245368,0,0,-380.281406019913,0,171.357922944597,-176.447904685706,-44.3350653406115,31.751644702327,415.501688583714,-5.18366433863889,-485.872000786928,25.5030324026124,-86.7599469542991,51.1519245860703,14.8511809905445,-111.157245111997,433.101421898165,146.054606150579,75.1878547242019,139.348916028885,274.228267002186,-483.833228881207,-199.780532777362,342.715845889193,0,-24.0099011983209,-760.562812039826,0,0],"Archive3103_field11":[-182.161456496571,0,143.542391712659,142.635481478395,-213.105426604107,-225.390203857443,36.6281598579274,229.531601581895,-65.0871948077592,-334.136867874475,185.041173476494,-185.77857616633,-178.362447503067,207.254436845465,-119.983725753138,-224.701207422026,299.889057372605,-77.7531877004089,107.25523666602,84.2968714056398,-108.921998502286,0,287.084783425318,-127.787164995497,0,-364.322912993142,285.27096295679,-203.311390729279,0,136.542202072401,135.05491258634,-148.790739572049,-252.722828989375,53.0644745927815,217.040746381489,-51.2488022963179,-263.987874726491,149.724582532111,-117.356991680396,-102.882648510877,184.864117944596,-127.685148034084,-245.773389471955,314.117043901267,-12.4800169910975,88.2594718930713,98.37497784375,-110.130486739142,0,273.084404144802,-69.8886511138912,0,-406.622781458557,270.109825172679,-266.761048131106,0,115.541538174637,112.313066735853,75.0236361522844,-334.720424292749,102.372928869268,179.567961279658,-9.7356427526646,-122.220986638594,121.985633115751,21.8042641682201,135.335933497116,193.029182103067,-150.789464463519,-308.98987882243,414.94730919334,190.598462521161,81.7449422874928,140.609069900261,-92.7716187471284,0,231.083076349273,37.9155482229428,0,-533.522096262213,224.626133471707]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3104.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3104.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3104.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3104_field1":[0,0,0,0,-53.9774577549476,0,0,0,0,2.25560781314606e-05,0.121225554964595,-63.2002539935303,-40.8172579590732,3.95429198838009,0,0,-49.9784977053153,-51.143185273887,6.6816481628079,0,-22.9007317479003,0,0,-189.345367635127,0,0,0,0,0,0,0,-53.9775133389332,0,0,0,0,2.25483694580046e-05,0.121224985741812,-63.200151018775,-40.8174063227642,3.9543891243121,0,0,-49.978615607073,-51.1431120122095,6.68167937785985,0,-22.9005524614653,0,0,-189.345502282844,0,0,0,0,0,0,0,-53.9776560042133,0,0,0,0,2.25300641390398e-05,0.121233346227524,-63.2000399392141,-40.8178333229832,3.95403139602316,0,0,-49.9780200997276,-51.1425513107292,6.68131636415835,0,-22.9003587173302,0,0,-189.345573700889,0,0,0],"Archive3104_field2":[0,0,0,0,302.876141727013,0,0,0,0,3.06821527868363e-05,0.105488488437081,76.2684578144269,75.2065917484767,43.5286756261889,0,0,69.9792924456635,107.107742241538,25.1565195541211,0,45.2288186829047,0,0,132.704547450769,0,0,0,0,0,0,0,302.876327028047,0,0,0,0,3.06721701730139e-05,0.105489199449224,76.2682844307836,75.2065845323962,43.5288176924851,0,0,69.9794988884949,107.108045158186,25.1565723858791,0,45.2288565971166,0,0,132.704262576925,0,0,0,0,0,0,0,302.876059490265,0,0,0,0,3.06526423733741e-05,0.105499166912734,76.2680893429774,75.206401709483,43.5294238311158,0,0,69.9804069121221,107.108263670881,25.1567246361865,0,45.2286895463404,0,0,132.703811301478,0,0,0],"Archive3104_field3":[0,0,0,0,-0.162389296666369,0,0,0,0,-1.00522845828719e-05,-0.000332676148812583,-0.295399931235549,-0.0626671560468889,0.190295838186102,0,0,0.229252877502363,-0.0328837384634032,0.00729826301217094,0,-0.184294521484795,0,0,-0.291521741839994,0,0,0,0,0,0,0,-0.20488665179922,0,0,0,0,-1.00168970270727e-05,-0.000736089238675311,-0.195871610261087,-0.077901828575499,0.0496590403565453,0,0,0.0622062914383829,-0.079505011057325,-0.0155466247998745,0,-0.126488812053787,0,0,-0.197301755712779,0,0,0,0,0,0,0,-0.332359508367484,0,0,0,0,-9.91671294318138e-06,-0.00196584505675843,0.102713074267606,-0.123607160623134,-0.372252648550153,0,0,-0.438945282721912,-0.219385907420247,-0.0840843798637654,0,0.0469406211303442,0,0,0.0853538652903723,0,0,0],"Archive3104_field4":[0,0,0,0,307.648418724056,0,0,0,0,3.93855250776521e-05,0.160697128296165,99.0516886446522,85.5691762078613,43.7083314644402,0,0,85.9942100432218,118.69159586668,26.0287331907082,0,50.6963856553009,0,0,231.2190522944,0,0,0,0,0,0,0,307.648636270008,0,0,0,0,3.93643139707525e-05,0.160698507136525,99.0512426196592,85.5692531499544,43.7080956925874,0,0,85.9941634781519,118.69185972487,26.0287958847895,0,50.6961613097327,0,0,231.218899462849,0,0,0,0,0,0,0,307.648509216122,0,0,0,0,3.93132225870212e-05,0.160721694253112,99.0508811183538,85.5693499683218,43.7102239228307,0,0,85.9956540624943,118.691991437241,26.0289810204284,0,50.6957886898266,0,0,231.218630519557,0,0,0],"Archive3104_field5":[-26529968.9063002,8366066.1,-30294254.7069457,2034491.2664087,5482395.74467283,8418518.95105317,5264725.52804929,2710012.69625197,5664276.21697885,4160060.38376945,7070274.08644763,4092349.58592726,5247337.99315065,7065707.8213412,6715763.87499046,8126219.20992311,6753812.46403309,5920901.12424786,6579988.99956891,4567100.76969549,5168764.3070326,16357817.6080204,18921283.8287878,3864680.6835608,27017879.7707246,26283119.5194668,3559554.03117034,-28769091.0161337,6274549.575,-30810443.6661889,1359893.33644889,4099315.51738958,6248319.75651748,3960352.91342898,2114071.96270727,4202460.76862586,3209851.34222758,5254472.6716585,3063462.60620688,3903595.54141961,5308722.17565177,5017823.03720974,5995342.07328798,5065645.45876335,4454121.94358305,4950905.63596505,3498770.86031625,3883601.16108143,15446413.6319431,18364157.4412458,2875140.20425659,25156039.6201491,24067018.664466,2924152.75699865,-35512605.8763641,0,-32361871.6099997,-664126.49917423,-49976.0806060244,-262358.588664136,47197.4911705913,326173.138734596,-182978.456914205,359306.413994549,-193517.873212659,-23209.8606241693,-127634.45095,37763.7525736137,-76030.6721756147,-397277.83627309,1289.49773471117,53909.9816772892,63671.4515542773,294000.318844322,28012.6156840295,12713756.8602486,16694158.0987767,-93466.510221719,19587752.5120373,17436052.4677133,1018149.18595613]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3105.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3105.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3105.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3105_field1":[1002.83413840792,933.169209873948,236.244871886963,306.035578751545,621.030111188425,961.447328665088,584.921824595431,274.067890679615,655.905576184887,429.427533317792,811.03931648037,463.732714384476,603.10144221964,410.493520875593,255.619269654182,352.051925186969,332.550521470525,407.935168553066,473.100858975582,291.380694610794,530.397527482341,609.389959792691,564.195995267735,668.294615303461,767.905508186844,759.980916282327,743.431705062201,373.880239118368,480.595655791072,383.825459336725,828.850195341849,683.533776102869,980.940415402838,671.381352770285,637.168354781271,529.364002442999,945.970856989674,566.70979480754,516.191575256307,727.028754272326,881.262691070865,848.97143215157,907.117034903996,840.373607877195]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3106.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3106.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3106.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3106_field1":[1002.48726345365,932.613761005154,235.928677628409,306.246351712827,621.016570372704,963.447067491478,584.928570244464,272.409916787884,655.10136059174,429.256793581284,811.2664897242,463.93017238482,603.310673683012,410.492903389993,254.235903301827,351.494747171213,332.77186779078,407.862716573077,473.651299016423,289.923955229016,530.385310026212,609.413144439458,564.395411242112,667.669305864804,767.444143298832,759.127149974465,743.426717393063,373.552321727607,480.828000080039,383.613338164495,828.784688786928,683.387562446207,982.52689779218,671.650921116975,637.512634291838,529.139101584274,947.512878510218,567.317301746057,516.113138654808,727.265790473246,881.82092983321,849.276362636713,906.755151624785,840.740540246321]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3107.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3107.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3107.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3107_field1":[1002.83413840792,933.169209873948,236.244871886963,306.035578751545,621.030111188425,961.447328665088,584.921824595431,274.067890679615,655.905576184887,429.427533317792,811.03931648037,463.732714384476,603.10144221964,410.493520875593,255.619269654182,352.051925186969,332.550521470525,407.935168553066,473.100858975582,291.380694610794,530.397527482341,609.389959792691,564.195995267735,668.294615303461,767.905508186844,759.980916282327,743.431705062201,373.880239118368,480.595655791072,383.825459336725,828.850195341849,683.533776102869,980.940415402838,671.381352770285,637.168354781271,529.364002442999,945.970856989674,566.70979480754,516.191575256307,727.028754272326,881.262691070865,848.97143215157,907.117034903996,840.373607877195,1002.83413840792,933.169209873948,236.244871886963,306.035578751545,621.030111188425,961.447328665088,584.921824595431,274.067890679615,655.905576184887,429.427533317792,811.03931648037,463.732714384476,603.10144221964,410.493520875593,255.619269654182,352.051925186969,332.550521470525,407.935168553066,473.100858975582,291.380694610794,530.397527482341,609.389959792691,564.195995267735,668.294615303461,767.905508186844,759.980916282327,743.4317050622,373.880239118368,480.595655791072,383.825459336725,828.850195341849,683.533776102869,980.940415402838,671.381352770285,637.168354781271,529.364002442999,945.970856989674,566.70979480754,516.191575256307,727.028754272326,881.262691070865,848.97143215157,907.117034903996,840.373607877195,1002.83413840792,933.169209873948,236.244871886963,306.035578751545,621.030111188425,961.447328665088,584.921824595431,274.067890679615,655.905576184887,429.427533317792,811.03931648037,463.732714384476,603.10144221964,410.493520875593,255.619269654182,352.051925186969,332.550521470525,407.935168553066,473.100858975582,291.380694610794,530.397527482341,609.389959792691,564.195995267735,668.294615303461,767.905508186844,759.980916282327,743.4317050622,373.880239118368,480.595655791072,383.825459336725,828.850195341849,683.533776102869,980.940415402838,671.381352770285,637.168354781271,529.364002442999,945.970856989674,566.70979480754,516.191575256307,727.028754272326,881.262691070865,848.97143215157,907.117034903996,840.373607877195,1002.83413840792,933.169209873948,236.244871886963,306.035578751545,621.030111188425,961.447328665088,584.921824595431,274.067890679615,655.905576184887,429.427533317792,811.03931648037,463.732714384476,603.10144221964,410.493520875593,255.619269654182,352.051925186969,332.550521470525,407.935168553066,473.100858975582,291.380694610794,530.397527482341,609.389959792691,564.195995267735,668.294615303461,767.905508186844,759.980916282327,743.4317050622,373.880239118368,480.595655791072,383.825459336725,828.850195341849,683.533776102869,980.940415402838,671.381352770285,637.168354781271,529.364002442999,945.970856989674,566.70979480754,516.191575256307,727.028754272326,881.262691070865,848.97143215157,907.117034903996,840.373607877195,1002.83413840792,933.169209873948,236.244871886963,306.035578751545,621.030111188425,961.447328665088,584.921824595431,274.067890679615,655.905576184887,429.427533317792,811.03931648037,463.732714384476,603.10144221964,410.493520875593,255.619269654182,352.051925186969,332.550521470525,407.935168553066,473.100858975582,291.380694610794,530.397527482341,609.389959792691,564.195995267735,668.294615303461,767.905508186844,759.980916282327,743.431705062201,373.880239118368,480.595655791072,383.825459336725,828.850195341849,683.533776102869,980.940415402838,671.381352770285,637.168354781271,529.364002442999,945.970856989674,566.70979480754,516.191575256307,727.028754272326,881.262691070865,848.97143215157,907.117034903996,840.373607877195]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3108.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3108.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3108.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3108_field1":[272.268414542953,272.329879854546,272.946436049277,272.884930159022,272.607083725304,272.299270089162,272.63852338181,272.915178827765,272.576663875595,272.776179542709,272.437766840794,272.74525916051,272.622475179914,272.460940624048,272.484379986929,272.314697808564,272.487605234388,272.57434968284,272.510867705087,272.73110609119,272.645526173677,272.792725433623,272.930624536357,272.760659124878,272.42252893727,272.283842301169,272.899851098598,264.884174564558,260.299924470492,261.171424557188,261.098725764896,262.435646278439,266.242317867427,262.75445303366,258.622313506926,261.923511089413,260.143682783833,263.460888222055,259.654907720941,262.004016826978,264.312258603818,264.429734429119,265.641823590347,263.62137332599,261.971986571506,263.227341917021,261.943615182693,261.1164900792,262.136375098988,258.806655076582,260.413543515824,263.271053902385,265.242470083701,258.329020215367,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive3108_field2":[0.000267189595389499,-1.35687459276527e-07,5.25214272996929e-19,4.42362674003267e-19,6.07991713467625e-11,0.00910480746277755,1.82745848798086e-11,1.15819599257442e-18,4.81200573148044e-11,-8.11948146549806e-15,-7.65966060236843e-07,-6.61867003034334e-15,5.09072694620013e-11,-7.87647544742511e-07,-2.71344052728617e-07,0.00434254141582015,-5.33284010846688e-07,5.97068063035457e-11,-2.54330446409109e-07,-9.20448523277685e-16,-3.60342974853737e-15,-5.70502013563675e-16,5.0735156607707e-19,-3.79807762768449e-15,-8.3007658851732e-09,0.00288897592816436,4.13565163792654e-19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3109.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3109.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3109.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3109_field1":[271.856472876669,271.944623282419,272.845420925043,272.75452181464,272.345657401032,271.901474940143,272.392439416615,272.799427202021,272.302182297831,272.593596959095,272.099751787486,272.548203097367,272.368312119425,272.133080771535,272.167940385088,271.923317421871,272.171496602319,272.298245227231,272.205688215978,272.528131328817,272.402418568659,272.618626839391,272.822351842776,272.570707398523,272.078476519805,271.878964944285,272.776858875454,248.297443046784,248.263324760846,248.130006485084,248.121862472404,248.168788603732,248.300653749628,248.171216232536,248.096523447827,248.185386174927,248.116972654354,248.229328092326,248.118862531806,248.162560665895,248.22196182639,248.223756364413,248.288740869612,248.196913479644,248.181438770571,248.199003307633,248.153196320433,248.162402488604,248.139589147193,248.107250614474,248.115087744207,248.239145981251,248.295509119817,248.100365361103,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive3109_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive311.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive311.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive311.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive311_field1":[999.655283583917,929.709078430431,230.098618436666,300.064886567415,615.063956066549,964.191252168836,580.021825974382,265.24151024821,650.131523459792,422.645532993445,807.449590030182,457.602732829445,597.559645465596,405.026744197069,247.713943142025,343.961997794268,326.333520624692,400.796390480045,467.421949950277,282.768599163525,524.310615909533,603.677902369018,558.363965844085,662.222123325862,762.593059509084,755.117113159151,738.904225091942,365.837225859871,475.042066024189,376.730186800417,824.962360261182,677.778327202852,981.813865488952,667.350672973618,632.500433007497,523.261798981684,946.793874156013,562.399339487967,510.090431623775,722.26933502122,880.052482409582,846.242521685178,903.669557700165,837.97234334487,999.655283583917,929.709078430431,230.098618436666,300.064886567415,615.063956066549,964.191252168836,580.021825974382,265.24151024821,650.131523459792,422.645532993444,807.449590030182,457.602732829445,597.559645465596,405.026744197069,247.713943142025,343.961997794268,326.333520624692,400.796390480045,467.421949950277,282.768599163525,524.310615909533,603.677902369018,558.363965844085,662.222123325862,762.593059509084,755.117113159151,738.904225091942,365.837225859871,475.042066024189,376.730186800417,824.962360261183,677.778327202852,981.813865488952,667.350672973618,632.500433007497,523.261798981684,946.793874156013,562.399339487967,510.090431623775,722.26933502122,880.052482409582,846.242521685178,903.669557700165,837.97234334487,999.655283583917,929.709078430431,230.098618436666,300.064886567415,615.063956066549,964.191252168836,580.021825974382,265.24151024821,650.131523459792,422.645532993444,807.449590030182,457.602732829445,597.559645465596,405.026744197069,247.713943142025,343.961997794268,326.333520624692,400.796390480045,467.421949950277,282.768599163525,524.310615909533,603.677902369018,558.363965844085,662.222123325862,762.593059509084,755.117113159151,738.904225091942,365.837225859871,475.042066024189,376.730186800417,824.962360261183,677.778327202852,981.813865488952,667.350672973618,632.500433007497,523.261798981684,946.793874156013,562.399339487967,510.090431623775,722.26933502122,880.052482409582,846.242521685178,903.669557700165,837.97234334487,999.655283583917,929.709078430431,230.098618436666,300.064886567415,615.063956066549,964.191252168836,580.021825974382,265.24151024821,650.131523459792,422.645532993444,807.449590030182,457.602732829445,597.559645465596,405.026744197069,247.713943142025,343.961997794268,326.333520624692,400.796390480045,467.421949950277,282.768599163525,524.310615909533,603.677902369018,558.363965844085,662.222123325862,762.593059509084,755.117113159151,738.904225091942,365.837225859871,475.042066024189,376.730186800417,824.962360261183,677.778327202852,981.813865488952,667.350672973618,632.500433007497,523.261798981684,946.793874156013,562.399339487967,510.090431623775,722.26933502122,880.052482409582,846.242521685178,903.669557700165,837.97234334487,999.655283583917,929.709078430431,230.098618436666,300.064886567415,615.063956066549,964.191252168836,580.021825974382,265.24151024821,650.131523459792,422.645532993445,807.449590030182,457.602732829445,597.559645465596,405.026744197069,247.713943142025,343.961997794268,326.333520624692,400.796390480045,467.421949950277,282.768599163525,524.310615909533,603.677902369018,558.363965844085,662.222123325862,762.593059509084,755.117113159151,738.904225091942,365.837225859871,475.042066024189,376.730186800417,824.962360261182,677.778327202852,981.813865488952,667.350672973618,632.500433007497,523.261798981684,946.793874156013,562.399339487967,510.090431623775,722.26933502122,880.052482409582,846.242521685178,903.669557700165,837.97234334487]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3110.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3110.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3110.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3110_field1":[0,0,0,0,142.19721912515,0,0,0,0,219.265384109742,244.352363795244,-11.0321209152764,121.810400101882,0,0,151.148677455625,304.159335117163,52.8176668085342,155.29354153339,0,118.485037129766,113.722314994685,149.32494687931,124.785347378151,150.732240322551,0,-13.1095969160845,-97.955395114529,0,-222.212781553647,0,156.649181583478,0,0,57.429271407829,131.42228634087,0,0,-10.9615424554842,158.292288605976,153.476570786394,-158.345542999662,212.490629247237,5.72314816687961],"Archive3110_field2":[0,0,0,0,1586.68570929195,0,0,0,0,1430.03708205564,1160.81903366895,1296.70788728388,1409.63373816488,0,0,1287.24248882816,615.040463639736,1464.39388293063,1570.39440382871,0,1558.10158228797,1297.52502793447,1570.15491696092,1545.72017426605,1482.01013761642,0,1105.22219248825,1154.23663224221,0,738.776809892725,0,1512.48555539493,0,0,879.180363943308,955.261673819819,0,0,813.744145606331,893.802343083126,929.075039716247,470.81197218577,417.45725134949,1125.50598526091],"Archive3110_field3":[0,0,0,0,1593.04475429858,0,0,0,0,1446.7492404432,1186.25836419409,1296.75481592941,1414.88693871478,0,0,1296.08608809025,686.13968916912,1465.34608550054,1578.05407626561,0,1562.60015511068,1302.49912208957,1577.23948816185,1550.74892876098,1489.6557509272,0,1105.29993951861,1158.38571410471,0,771.472420194708,0,1520.57604918961,0,0,881.054046899463,964.259655287985,0,0,813.8179709994,907.710899534099,941.666335388548,496.726508394018,468.425900460423,1125.52053614453],"Archive3110_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive3110_field5":[-899.146828025198,-836.644746972164,-211.432081590382,-274.398661294904,-556.678722072356,-861.921061046228,-524.778537831474,-245.64983003239,-587.027869882574,-384.975997859834,-726.965117094089,-415.534131455567,-540.57385862878,-368.37564903568,-228.890622528253,-315.615557870779,-298.299989460294,-365.571252313957,-424.037084665013,-260.856679899811,-475.444267205557,-546.18244485536,-505.665395224006,-599.196282935719,-688.362618772156,-680.980154622461,-666.686221185765,-334.935139005103,-430.533424715488,-343.602277367484,-742.376525500566,-612.737890229582,-879.869318968833,-602.560122974702,-571.648236243889,-474.311996370739,-848.33105289999,-508.302076631676,-462.50827822929,-651.474634805261,-789.967672826775,-761.240907019435,-812.697116308989,-753.472686599089],"Archive3110_field6":[103.936274559074,96.7113884177201,24.4403496712983,31.7189292227479,64.3489035329005,99.6331869911671,60.6614231299196,28.3957273537986,67.8570929199049,44.501042282598,84.0330451602764,48.0333892413197,62.4872726441119,42.5821360935465,26.4584580021754,36.4833687396975,34.4817872222368,42.2579637353101,49.0162824149307,30.153552965518,54.9586612036958,63.1355934074898,58.4520522287292,69.2636924658519,79.5708152561053,78.7174442638832,77.0651466147123,38.7166027639487,49.767222486196,39.7184748102,85.8145165791276,70.829025479101,101.707903828458,69.6525332991477,66.0792944840264,54.8277771159197,98.0622591138484,58.7568376477183,53.463334233702,75.3067734889396,91.3157833365738,87.9951321091168,93.9431781120532,87.0971698795021],"Archive3110_field7":[1003.08310258427,933.356135389884,235.872431261681,306.117590517652,621.027625605257,961.554248037396,585.439960961394,274.045557386188,654.884962802479,429.477040142432,810.998162254366,463.567520696887,603.061131272892,410.957785129227,255.349080530429,352.098926610477,332.781776682531,407.829216049267,473.053367079944,291.010232865329,530.402928409253,609.31803826285,564.117447452736,668.459975401571,767.933434028261,759.697598886344,743.751367800478,373.651741769052,480.300647201684,383.320752177684,828.191042079693,683.566915708683,981.577222797291,672.21265627385,637.727530727915,529.139773486659,946.393312013838,567.058914279394,515.971612462992,726.7814082942,881.283456163349,849.236039128552,906.640294421042,840.569856478592],"Archive3110_field8":[620000000000000],"Archive3110_field9":[0,0,0,0,141.397877829497,0,0,0,0,218.053863969758,242.949875672935,-9.77276588875516,121.615811367145,0,0,150.331257405916,298.916936559593,53.6873625957801,155.622846255337,0,118.993674206697,111.79982947593,148.782678449617,124.567561140283,149.182074796582,0,-13.775884381815,-96.5688322325017,0,-219.107536374592,0,154.850331472098,0,0,57.6749147121342,129.427568805788,0,0,-9.74448867894018,155.696145648394,151.89759686343,-156.605414303238,209.198389776458,3.74879962181717],"Archive3110_field10":[0,0,0,0,1561.38204348208,0,0,0,0,1408.07338774581,1141.59139043183,1272.74057580196,1388.4025309807,0,0,1264.76231602864,603.706217473894,1438.84146618394,1545.09765971537,0,1534.08477961796,1275.60508224892,1544.91726707669,1521.04004661492,1459.36133771795,0,1083.7510254696,1131.8640985656,0,721.156835548392,0,1490.08491905598,0,0,858.394098256671,935.085217981061,0,0,795.830489181762,877.355130355273,909.079504179923,460.386476355027,408.526492054588,1104.10705990598],"Archive3110_field11":[0,0,0,0,1567.7714264404,0,0,0,0,1424.85723947001,1167.15703519174,1272.77809544548,1393.71876417306,0,0,1273.66526332446,673.656093254421,1439.84273367366,1552.91508085102,0,1538.69282365152,1280.4950322942,1552.06496240278,1526.13233393922,1466.96653181541,0,1083.83857663257,1135.97617799867,0,753.707697953466,0,1498.10937222724,0,0,860.329485551283,943.999926087743,0,0,795.890144788147,891.063025004676,921.682388273151,486.293083849325,458.974793420608,1104.11342407963],"Archive3110_field12":[9023504.88173451,8396257.12205626,2121854.14097089,2753763.43725098,5586621.683591,8649920.85786736,5266483.23761768,2465250.80376795,5891194.50182965,3863476.67340208,7295552.93806296,4170146.79565943,5424999.23287074,3696881.71473194,2297061.59816321,3167400.96103473,2993628.32322741,3668737.82685951,4255479.28797675,2617861.12250294,4771382.7512961,5481284.9290638,5074670.81027189,6013312.19291819,6908152.54782841,6834064.86913381,6690616.2419185,3361285.12905378,4320674.15307749,3448265.32281745,7450216.13060924,6149210.7533247,8830042.93352319,6047070.44692861,5736850.18909626,4760019.70013808,8513536.56441473,5101131.56930715,4641561.9522462,6537958.38929072,7927823.27645057,7639532.08371145,8155927.56134398,7561573.09781442],"Archive3110_field13":[-901.947443960666,-839.67758287293,-216.691785467709,-279.875517977435,-562.07725351252,-859.041518675631,-529.649796384168,-253.779561276214,-591.397465593987,-391.205479292867,-730.08663894706,-420.965565458298,-545.551921288233,-373.713113800826,-235.946799614634,-323.060297519234,-304.156039120758,-371.995625086718,-429.15468049912,-268.482483165638,-480.974362391259,-551.307558393499,-510.879107902264,-604.847221266122,-693.191645851847,-685.176430362234,-671.055714169801,-342.090374082732,-435.284520498877,-349.639611179348,-745.260667299339,-617.979244424329,-879.162685182081,-606.817534138247,-576.326900564963,-479.681356903458,-847.46457662631,-512.407904482169,-467.848321199442,-655.515986100792,-790.833725565313,-763.777568594641,-815.291971045106,-755.645498895089],"Archive3110_field14":[104.260009879859,97.0619670496517,25.0483416134974,32.3520227978279,64.972943154119,99.3003282220468,61.2245129953346,29.3354781846006,68.3621934056299,45.221135010953,84.3938753853744,48.6612322121915,63.062708458618,43.1991167534215,27.2741120601431,37.3439384264327,35.1587133552894,43.0005847973741,49.6078474731807,31.0350525796703,55.5979088478445,63.7280274696957,59.0547278491166,69.9169088922671,80.1290234027217,79.202509943726,77.5702352257349,39.54370736398,50.3164222168822,40.4163563631526,86.1479070160632,71.4348963020489,101.626220969793,70.1446658873001,66.6201215484036,55.448444745656,97.9620993701078,59.2314480644601,54.0806129194557,75.7739307815528,91.4158941220536,88.2883558026521,94.243128604996,87.3483346596286],"Archive3110_field15":[1006.20745384052,936.739549922582,241.740127081206,312.227540775263,627.050196666639,958.341846897678,590.874309379503,283.115039460815,659.759658999617,436.42661430382,814.480514332434,469.62679767049,608.614629746851,416.912230554247,263.220911674777,360.404235945667,339.314752476048,414.996209884092,478.7625279723,299.517535745309,536.572271239103,615.035585863195,569.93383575138,674.764130158389,773.320669254569,764.37894030596,748.625949395536,381.634081446712,485.600942715759,390.055967542501,831.408574315402,689.414140726377,980.788906151874,676.962200025547,642.947022113367,535.129801649114,945.426675996418,571.639352546629,521.928934118897,731.289916882345,882.249619687366,852.065924397293,909.535099650102,842.993833554718],"Archive3110_field16":[625000000000000],"Archive3110_field17":[0,0,0,0,139.264800097755,0,0,0,0,215.516681817378,239.867737883619,-9.75611211926756,120.055487195002,0,0,148.176575093109,293.319284015791,53.3022573730635,154.225949232628,0,117.78155301511,109.276990633161,146.867318378571,122.775972898008,146.674131023265,0,-14.7561702108752,-95.0569754109518,0,-215.26247530202,0,152.138468016064,0,0,56.7128754113259,127.237693687173,0,0,-9.70897567586352,152.841013240585,149.217139065366,-154.356097911073,205.567696175426,2.08712293670547],"Archive3110_field18":[0,0,0,0,1527.274572189,0,0,0,0,1377.60710201606,1115.0413812745,1242.5189267614,1358.96343027928,0,0,1233.36641918379,590.300489277577,1404.63313794358,1510.8753836167,0,1500.95790322223,1247.30679506797,1510.85512222979,1487.52748915609,1426.65966821955,0,1057.25165709603,1102.11711953629,0,702.08418837427,0,1458.20855805627,0,0,836.442160479633,912.679233630462,0,0,776.762154243221,856.824783124327,882.702982522468,448.443164931199,398.560550051091,1074.22089512636],"Archive3110_field19":[0,0,0,0,1533.61087091914,0,0,0,0,1394.36321224661,1140.54978568756,1242.55722809212,1364.25618006372,0,0,1242.23549352631,659.159214467099,1405.64411671315,1518.72646261123,0,1505.57202467233,1252.08454255476,1517.97668281687,1492.58566605608,1434.17959462396,0,1057.35462877485,1106.20882917704,0,734.343339888305,0,1466.12356649732,0,0,838.362593431539,921.505732046806,0,0,776.822829526298,870.349978057367,895.22640150127,474.264775347951,448.451323744172,1074.22292267863],"Archive3110_field20":[9051610.82703498,8426693.54100706,2174638.5829933,2808727.14447989,5640799.34766785,8621022.83606672,5315369.38608685,2546837.77853042,5935046.14763898,3925993.44415588,7326879.37641628,4224654.65768026,5474957.22783783,3750446.53625298,2367874.78061661,3242113.61359295,3052397.47088146,3733210.45498902,4306837.58625738,2694390.86253158,4826880.74044459,5532718.67224056,5126993.7016372,6070022.91915493,6956614.87686018,6876177.13983614,6734466.85679388,3433092.42085589,4368354.39245415,3508853.7711398,7479160.31056927,6201811.04472212,8822951.41829384,6089796.25012382,5783803.53311676,4813904.61578105,8504840.92912829,5142336.13845839,4695152.64767875,6578515.89559269,7936514.66129502,7664989.08071544,8181968.5633794,7583378.63807652],"Archive3110_field21":[-904.775969241056,-842.732165080303,-221.949827147284,-285.342718181109,-567.463367973219,-856.423441586687,-534.514927493422,-261.899664918839,-595.760589701447,-397.399175085846,-733.207030638455,-426.385138803059,-550.521444349246,-379.046565437722,-243.003217035552,-330.44775224564,-310.002271948635,-378.377601460482,-434.269659806586,-276.08659393748,-486.484275190651,-556.412354863181,-516.080657078842,-610.435810409647,-697.943238246829,-689.364355220853,-675.396132263937,-349.191097683598,-440.039008473457,-355.652950299214,-748.175533309954,-623.188251737813,-878.606913164543,-611.093933590963,-580.993140358369,-485.030307431771,-846.758831714094,-516.529353979881,-473.170928116848,-659.546469900338,-791.769100108083,-766.351432666512,-817.910024053843,-757.842385456439],"Archive3110_field22":[104.586971362652,97.4150594313109,25.6561414150623,32.9840001387106,65.5955474429239,98.9976933568035,61.7868945630347,30.2741161192987,68.8665458106362,45.9370911222461,84.7545749702031,49.2877041582598,63.6371571439696,43.815633518428,28.0897938994204,38.1978863010227,35.8345047181629,43.7383050761298,50.1991100757885,31.9140446645288,56.2348235225834,64.3181129939991,59.6559974376851,70.5629181062405,80.678280538892,79.6866103090626,78.0719629443591,40.3645107464138,50.866014065634,41.1114642657761,86.484848997661,72.0370280089511,101.561976876163,70.6389934140044,67.1595124078376,56.0667530946213,97.8805192602987,59.7078642550353,54.6958760963859,76.239831853256,91.5240181150019,88.5858798938389,94.5457606867038,87.6022822883125],"Archive3110_field23":[1009.36294060371,940.147224511614,247.605968562346,318.32671831982,633.058915416142,955.42113494349,596.301822056457,292.173781038138,664.627135512083,443.336266208092,817.961605608658,475.672842961318,614.158601493216,422.86219895615,271.093010934972,368.645638546662,345.836776666798,422.115906536611,484.468769882374,308.000638602009,542.719098713234,620.73046785718,575.736654516527,680.998728515887,778.621518785721,769.050965529916,753.468095208296,389.555608430012,490.905022539091,396.76441456499,834.660382307615,695.225279746764,980.168890040707,681.732927004967,648.152652766206,541.097060526392,944.639350974392,576.237218234916,527.866804213234,735.786301753594,883.293118223084,854.937312560351,912.455784740547,845.444667744752],"Archive3110_field24":[630000000000000]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3119.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3119.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive3119.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive3119_field1":[-1.80945758995975e-25,-7.75481824268463e-26,-3.36852263373698e-09,-2.2022014806656e-09,3.20651772333384e-09,6.19590072989084e-09,-9.7065833695852e-10,-1.40031121795346e-08,-1.33992155679859e-10,-3.16059938178313e-09,4.58794219503563e-09,-1.76720238066305e-09,2.04713503982254e-09,-4.4995751566162e-09,-1.25960474729227e-08,-1.69925500331356e-08,-1.28564635065593e-08,-7.85574219164561e-09,-8.69898476567611e-09,-3.69551465178824e-09,-5.14026156652423e-09,-7.92374472022105e-10,-3.14083025432222e-09,-2.51147211721912e-09,1.00176751424826e-09,1.42197716775328e-09,8.18209639434222e-10,-8.26184120029173e-11,4.06979071373443e-09,6.11430997886998e-10,3.12201289590566e-09,3.25922938154705e-09,2.82985512474249e-09,3.02648528598061e-09,1.03735345731533e-09,1.71635999583847e-09,5.58296628492427e-10,1.63961195848233e-09,4.99937861258022e-09,4.75532712811631e-09,3.42231984225363e-09,7.79763023151953e-09,3.6068568098845e-09,4.83973255937338e-09,7.75669598667242e-09,5.33211836155128e-09,4.80358918945745e-09,5.50422732725074e-09,4.4011053336518e-09,9.94560245028063e-09,-1.10614906016532e-09,-8.41653948191967e-09,-3.77943581455107e-10,-1.49748982811968e-09,-8.78514975999694e-09,6.40209970842709e-10,-1.18234203849972e-08,-2.08339689598131e-09,3.04761205947583e-09,-1.63892706609356e-09,-3.535642894736e-10,-3.70545106099039e-09,1.28526804151915e-09,-2.60949821672922e-09,-2.69834620804405e-09,3.49323725568829e-09,4.33782560301865e-09,3.39342658213526e-09,6.29333285563995e-09,5.94600364332898e-09,1.8955348741859e-09,5.87063264989221e-09,-9.44667670891865e-09,-1.20832710307732e-08,7.70516864190917e-11,1.2953221489513e-09,2.7640818048682e-09,7.67728430438217e-09,3.03227164660776e-09,2.15862103480389e-09,4.1968880179405e-09,3.36646268463358e-09,-3.04646169316272e-09,-3.92512555038979e-09,-8.79878051021822e-10,-6.96607435439125e-09,-5.5038295246679e-09,2.61676127778727e-09,4.44872262690892e-09,1.11949452367254e-09,2.98187026122405e-09]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive312.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive312.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive312.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive312_field1":[272.268433952718,272.3301265108,257.76774364199,259.267683763907,266.265929003036,272.299292499981,265.251130707328,258.748446471669,266.654273602166,262.373122039075,269.798262436651,263.083879465633,265.961925002597,269.432610286512,268.799663928001,272.314709373978,268.704836303421,266.92029910822,268.365593000549,262.998130254647,265.301183765938,261.468380782837,258.322970054727,262.691805766773,269.837940769873,272.283864569672,259.106033428386,262.733108630946,262.675850894877,255.383502555511,256.140618980659,259.701990296014,262.68816712809,259.168046964579,255.924860444672,259.877028894492,257.771523949116,261.36138363432,258.128773946999,259.563796818749,261.233391070414,260.870817944312,262.666012586156,260.903807596984,260.012445368404,260.750595056651,258.023017607458,259.209498058673,257.243105504809,255.699043537236,257.919316568339,261.367554665701,262.746124092336,256.101780709897,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive312_field2":[0.000470024338798702,-1.45050152168067e-05,1.67106340431153e-20,2.3904541254288e-20,1.87395265011181e-12,0.000271517815566253,6.20844887765178e-13,4.41552980217483e-20,5.29229194056917e-12,-2.57720181308879e-16,-7.73558530938201e-08,-3.31903701743357e-16,1.63092348634683e-12,-2.46923176259628e-08,-8.92277775828148e-09,0.000150049178735933,-1.59004349129476e-08,4.54777726563645e-12,-8.7881017235112e-09,-1.01254274077598e-16,-3.31665943922495e-16,-1.93828728944255e-17,1.61035963218877e-20,-1.17055927917024e-16,-1.46815908131736e-08,0.00049669156936973,2.07392620812223e-20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive313.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive313.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive313.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive313_field1":[253.005569057713,253.006034570066,253.022301542889,253.017877614385,253.009217822367,253.005762582601,253.009561167491,253.019843123619,253.008534120285,253.012942335049,253.007008921742,253.01201693612,253.009492336468,253.007255389673,253.007376076923,253.005871106765,253.007588314542,253.00873209199,253.007805099721,253.011636793572,253.009959321158,253.01352907383,253.021714093673,253.012738535981,253.006779932675,253.005708725691,253.01914440125,252.998623441357,252.998480851889,252.994549716669,252.995602278805,252.997699957104,252.998578978068,252.997634901573,252.995136704046,252.997889050859,252.996792746392,252.998261114115,252.997017703546,252.99763730328,252.998197101852,252.998172642279,252.998548417743,252.998112033429,252.997825403146,252.998068186117,252.99712359303,252.997536099469,252.99665188823,252.994692190077,252.996843350494,252.998318118853,252.998590142386,252.995302440474,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive313_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive314.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive314.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive314.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive314_field1":[0,0,0,0,0.199942649442653,0,0,0,0,0.137358970690802,0.262526338300074,0.148737820883937,0.194253223776859,0,0,0.111756558286771,0.1060671333876,0.130247189400572,0.151938122532348,0,0.170428754593095,0.196231188159455,0.181506722319724,0.215254095943707,0.24788507993216,0,0.240206357610279,0.118868339447171,0,0.122424230044056,0,0.22032383436537,0,0,0.205632075190634,0.170073165509477,0,0,0.165806096523973,0.234814431031275,0.286215989753293,0.275184911512496,0.293818188691894,0.272492852865811],"Archive314_field2":[0,0,0,0,1.99942649442651,0,0,0,0,1.37358970690801,2.62526338300077,1.48737820883935,1.94253223776856,0,0,1.11756558286773,1.06067133387599,1.30247189400571,1.51938122532352,0,1.70428754593093,1.96231188159451,1.81506722319715,2.15254095943709,2.47885079932163,0,2.40206357610283,1.18868339447171,0,1.22424230044057,0,2.2032383436537,0,0,2.05632075190633,1.7007316550948,0,0,1.65806096523978,2.34814431031272,2.86215989753293,2.7518491151249,2.93818188691896,2.7249285286582],"Archive314_field3":[0,0,0,0,2.00939875825602,0,0,0,0,1.38044057088774,2.63835704718408,1.49479660004011,1.95222073795916,0,0,1.12313951062662,1.06596149803421,1.30896805347632,1.52695923355676,0,1.71278778592312,1.97209903398725,1.82411998371047,2.16327689117109,2.49121422164985,0,2.41404401738582,1.19461202673325,0,1.23034828495426,0,2.2142271317404,0,0,2.06657677937884,1.70921415986058,0,0,1.66633064728954,2.35985582590855,2.8764350977966,2.76557413350968,2.95283625157659,2.73851927894589],"Archive314_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive314_field5":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive314_field6":[123.596669573297,116.351540366509,43.8337973123009,51.0860365433826,83.7265376517058,119.966553342404,80.0995435774977,47.4617798408025,87.3528678875552,63.7807648578226,103.673389319637,67.4067958881909,81.9130746393737,61.9651559946724,45.6484577182416,55.6211207898832,53.8060050134771,61.5140849444305,68.4266253025788,49.2766794393717,74.3204326216409,82.5450036394444,77.8511341581456,88.6086389594416,99.0111246978994,98.2411686318999,96.5631057459581,57.8879669408026,69.2176794052651,59.0210602681069,105.486646375423,90.2236384976197,121.778160364917,89.1592933604491,85.5393421831404,74.2084629073017,118.150482714187,78.2803503758215,72.8457213935239,94.8379444024531,111.213891704473,107.70222220419,113.644358301804,106.844325681431],"Archive314_field7":[999.979856279064,929.987904002872,230.001930254627,300.000992555113,615.002197475753,964.97632851347,580.001791866843,265.003324317831,650.001939246304,422.502661241009,807.502812584544,457.502103806079,597.50202869607,405.000346610508,247.503296427919,343.752841219991,326.251019676234,400.627599118429,467.345705214602,282.504929683751,524.221306277555,603.587538998071,558.295833947603,662.100537052624,762.472137875317,755.010474594754,738.852589973771,365.628069580099,474.999693090505,376.565354011997,825.002775407681,677.693659359164,982.474641303333,667.495070486549,632.501707774538,523.128917452756,947.473552117902,562.495892897816,510.001146613465,722.26097980875,880.359659952876,846.433457275997,903.750663287141,838.153103220801],"Archive314_field8":[1000000000000],"Archive314_field9":[0],"Archive314_field10":[0,0,0,0,0.199901008183366,0,0,0,0,0.137381328969784,0.26267511510866,0.148710176452296,0.194295777659841,0,0,0.111706261192865,0.106213073741741,0.130223573580707,0.151896743961138,0,0.1707189625608,0.195852212561561,0.181457164359231,0.215311253759689,0.248254117563286,0,0.23983601714381,0.118952089684621,0,0.122269786021571,0,0.219758336773837,0,0,0.206461570392899,0.170006627656275,0,0,0.165315874446763,0.234838224279156,0.285004541234711,0.273743091496375,0.295203723715385,0.272739293047164],"Archive314_field11":[0,0,0,0,2.00001379956514,0,0,0,0,1.37360955477947,2.62435841281068,1.4874970276312,1.94282247134632,0,0,1.11750478838241,1.06056745645484,1.30242360731958,1.5192947130666,0,1.70427424015547,1.96232093602094,1.81512123101159,2.15287223640814,2.47838735149681,0,2.40270093655839,1.18846848407418,0,1.22415167185899,0,2.20362880632691,0,0,2.05537693140581,1.70090736870285,0,0,1.65774156850395,2.34800477930181,2.85707817168643,2.7467789062831,2.93352011966304,2.72125646891052],"Archive314_field12":[0,0,0,0,2.0099790077321,0,0,0,0,1.38046254513875,2.63747138278077,1.49491207895051,1.95251376547892,0,0,1.12307401396672,1.0658726690955,1.30891765669941,1.52686903366927,0,1.71280344751969,1.97207037022297,1.82416879311272,2.16361221162493,2.49078982873837,0,2.41464140311931,1.19440652094583,0,1.23024274689547,0,2.21455946920722,0,0,2.06572038529038,1.70938238272035,0,0,1.66596411914843,2.35971935517907,2.8712581332321,2.76038577741296,2.94833606140197,2.73489003280922],"Archive314_field13":[8995588.79171951,8365957.28719192,2069044.46412667,2698739.92879751,5532418.31798645,8680705.10675161,5217562.71922199,2383908.95479861,5847267.94501372,3800736.76491203,7264109.57636367,4115583.70035561,5374990.82468324,3643289.96802841,2226482.72890738,3092321.49646156,2934879.13527287,3603953.73732159,4204134.47459836,2541349.3713012,4715774.30037244,5429734.67569268,5022300.91415083,5956104.14820188,6859023.98373464,6791900.57704525,6646547.96330835,3289106.01948657,4272987.98911277,3387495.31466051,7421535.21692915,6096376.29005339,8838115.90399729,6004632.13023078,5689839.88774696,4705947.42175398,8523254.15593566,5060083.67845338,4587853.01467101,6497293.65433416,7919513.01821428,7614320.70195969,8129933.10427857,7539832.54136059],"Archive314_field14":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive314_field15":[123.576550379693,116.339468591198,43.8357274759738,51.0870294583074,83.7287385719511,119.942922558221,80.1013334552893,47.4651039467183,87.3548097316051,63.7834264443748,103.676188310968,67.4088981584589,81.9151060188375,61.9655041411866,45.6517538834233,55.6239614728906,53.8070243630347,61.5166845324012,68.4285816381945,49.2816079411337,74.3229893729052,82.5485574317075,77.8536990995156,88.6129792717019,99.0180060625266,98.2516115896987,96.5692855941667,57.8910369862828,69.2173735736168,59.0239137595966,105.489400540104,90.2271878213514,121.752850829423,89.1543850265676,85.5410508520412,74.212377949486,118.124089570613,78.276247119945,72.8468683219849,94.8374621270402,111.20700189172,107.699408873007,113.645012664774,106.841607190098],"Archive314_field16":[999.95973708546,929.975832227562,230.0038604183,300.001985470038,615.004398395998,964.952697729287,580.003581744634,265.006648423747,650.003881090354,422.505322827561,807.505611575875,457.504206076347,597.504060075534,405.000694757022,247.506592593101,343.755681902998,326.252039025791,400.630198706399,467.347661550218,282.509858185513,524.223863028819,603.591092790334,558.298398888973,662.104877364884,762.479019239944,755.020917552553,738.85876982198,365.631139625579,474.999387258856,376.568207503487,825.005529572362,677.697208682896,982.449331767839,667.490162152667,632.503416443439,523.132832494941,947.447158974327,562.491789641939,510.002293541926,722.260497533337,880.352770140123,846.430643944814,903.751317650112,838.150384729468],"Archive314_field17":[1000000000000],"Archive314_field18":[0],"Archive314_field19":[0,0,0,0,0.199859494437668,0,0,0,0,0.137403666861981,0.26282502530629,0.148682487788919,0.194338661439691,0,0,0.111655949015655,0.106359044478294,0.130199992363864,0.151855584697646,0,0.171008294285936,0.195473725837087,0.181407692891162,0.215367777734193,0.248622029847597,0,0.239466909330933,0.119035696123724,0,0.12211542331102,0,0.219194779544369,0,0,0.207288512353305,0.16994087437575,0,0,0.164826067007346,0.234860787932463,0.283797497870103,0.272304087471759,0.296583607819159,0.272983820455336],"Archive314_field20":[0,0,0,0,2.00059947727251,0,0,0,0,1.37362954542235,2.62345323336073,1.48761547491846,1.94311198864152,0,0,1.11744407108788,1.06046376858092,1.30237527135819,1.51920842820928,0,1.70426158992539,1.96233129576268,1.81517589329656,2.15320088305081,2.47792010553852,0,2.40333304629496,1.18825359951333,0,1.2240610361621,0,2.20401678610689,0,0,2.05443553175245,1.70108250759707,0,0,1.65742226448483,2.34786212066158,2.85200860230259,2.74172106231837,2.92886954323006,2.71759103554104],"Archive314_field21":[0,0,0,0,2.01055765547271,0,0,0,0,1.38048465972076,2.6365856446469,1.49502718483376,1.9528061131952,0,0,1.12300859433935,1.06578405449471,1.3088672146008,1.52677908256105,0,1.71281972303264,1.97204312625822,1.82421826398188,2.16394485199067,2.49036161293045,0,2.4152337634436,1.1942010357172,0,1.23013722684124,0,2.21488969134367,0,0,2.06486655294734,1.70955011580133,0,0,1.66559784917462,2.35957965056189,2.86609387274829,2.75521031858078,2.94384759077091,2.73126732537908],"Archive314_field22":[8995407.80408127,8365848.69227774,2069061.82743513,2698748.8608318,5532438.11695877,8680492.52965218,5217578.82055093,2383938.85769089,5847285.41339617,3800760.70793249,7264134.75544591,4115602.61189542,5375009.09850568,3643293.09987438,2226512.38045124,3092347.05059253,2934888.30510704,3603977.12261707,4204152.0733436,2541393.70696949,4715797.30031876,5429766.6447905,5022323.98777346,5956143.1926527,6859085.88690811,6791994.51949173,6646603.55580148,3289133.63690959,4272985.2379216,3387520.98401364,7421559.99276117,6096408.21895333,8837888.22523718,6004587.9759881,5689855.2585394,4705982.64057301,8523016.72928648,5060046.76650727,4587863.33217565,6497289.31589547,7919451.03904341,7614295.39387944,8129938.99077735,7539808.0864378],"Archive314_field23":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive314_field24":[123.556455671438,116.327420965043,43.837657549633,51.0880227337666,83.7309429170491,119.919332384469,80.103121352554,47.4684278409101,87.3567541617208,63.7860883757875,103.678973745343,67.4109989006234,81.9171400661519,61.9658538201547,45.6550497859373,55.626801619913,53.808043387038,61.5192845893586,68.4305390947105,49.2865352620493,74.3255465995431,82.5521103866755,77.8562642654002,88.6173188408881,99.0248616079739,98.2620229961245,96.575448334413,57.8941074949732,69.2170688175825,59.0267667294008,105.492133532205,90.2307376011463,121.727590319726,89.1494978100269,85.542760406357,74.2162905898107,118.097751034551,78.2721477144461,72.8480155687062,94.836984720267,111.200106434919,107.69658829844,113.645658123353,106.838878829589],"Archive314_field25":[999.939642377206,929.963784601407,230.00579049196,300.002978745497,615.006602741096,964.929107555534,580.005369641899,265.009972317938,650.00582552047,422.507984758974,807.50839701025,457.506306818512,597.506094122848,405.00104443599,247.509888495615,343.75852205002,326.253058049795,400.632798763357,467.349619006734,282.514785506429,524.226420255457,603.594645745302,558.300964054858,662.10921693407,762.485874785391,755.031328958979,738.864932562226,365.634210134269,474.999082502822,376.571060473291,825.008262564463,677.70075846269,982.424071258142,667.485274936127,632.505125997755,523.136745135265,947.420820438266,562.48769023644,510.003440788648,722.260020126564,880.345874683322,846.427823370248,903.75196310869,838.147656368959],"Archive314_field26":[1000000000000],"Archive314_field27":[0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive315.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive315.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive315.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive315_field1":[0,0,0,0,0.199942640985304,0,0,0,0,0.137358968806976,0.262526313163625,0.148737818293947,0.194253216241821,0,0,0.111756557461295,0.106067132717814,0.130247187877621,0.15193811971215,0,0.17042875012848,0.196231180312799,0.181506716576134,0.215254084582665,0.247885059951309,0,0.24020633999253,0.118868338390652,0,0.122424228855329,0,0.220323821895602,0,0,0.205632065728787,0.170073161082006,0,0,0.165806092524392,0.234814414942922,0.286215954240247,0.275184881165839,0.29381814925279,0.272492823689334,0,0,0,0,0.199942647000798,0,0,0,0,0.137358970147522,0.262526331037459,0.148737820136768,0.194253221601472,0,0,0.111756558048883,0.10606713319465,0.130247188961454,0.151938121718707,0,0.170428753304551,0.196231185894069,0.181506720661835,0.215254092662589,0.247885074160212,0,0.240206352521353,0.118868339142672,0,0.122424229701339,0,0.220323830764093,0,0,0.205632072458481,0.170073164231663,0,0,0.165806095369823,0.234814426384188,0.286215979491199,0.275184902743833,0.293818177294461,0.272492844435644,0,0,0,0,0.199942650487552,0,0,0,0,0.137358970924107,0.26252634140122,0.148737821204484,0.19425322470796,0,0,0.111756558389158,0.10606713347074,0.130247189589262,0.151938122881333,0,0.170428755145141,0.196231189129034,0.181506723029722,0.215254097346571,0.24788508239818,0,0.240206359784987,0.118868339578189,0,0.122424230191366,0,0.22032383590518,0,0,0.205632076359402,0.170073166056941,0,0,0.165806097018678,0.234814433017259,0.286215994133416,0.275184915255854,0.293818193555519,0.272492856465147,0,0,0,0,0.199942651486032,0,0,0,0,0.137358971146518,0.262526344368804,0.148737821510265,0.194253225597553,0,0,0.111756558486618,0.106067133549818,0.130247189769068,0.151938123214292,0,0.17042875567224,0.196231190055417,0.181506723707818,0.215254098687856,0.247885084757108,0,0.240206361864932,0.118868339702926,0,0.122424230331712,0,0.220323837377362,0,0,0.205632077476473,0.170073166579655,0,0,0.165806097490876,0.234814434916645,0.28621599832604,0.275184918838546,0.293818198211641,0.272492859909692,0,0,0,0,0.199942651562817,0,0,0,0,0.137358971163621,0.262526344597022,0.14873782153378,0.194253225665964,0,0,0.111756558494112,0.106067133555899,0.130247189782894,0.151938123239896,0,0.170428755712775,0.196231190126657,0.181506723759964,0.215254098791004,0.247885084938517,0,0.240206362024886,0.118868339712519,0,0.122424230342505,0,0.220323837490576,0,0,0.205632077562378,0.170073166619853,0,0,0.165806097527189,0.234814435062713,0.286215998648469,0.275184919114067,0.293818198569715,0.272492860174589],"Archive315_field2":[0,0,0,0,1.99942640985302,0,0,0,0,1.37358968806975,2.62526313163627,1.48737818293945,1.94253216241818,0,0,1.11756557461297,1.06067132717813,1.3024718787762,1.51938119712154,0,1.70428750128478,1.96231180312794,1.81506716576126,2.15254084582666,2.47885059951312,0,2.40206339992533,1.18868338390652,0,1.2242422885533,0,2.20323821895601,0,0,2.05632065728786,1.70073161082009,0,0,1.65806092524397,2.34814414942919,2.86215954240247,2.75184881165833,2.93818149252792,2.72492823689343,0,0,0,0,1.99942647000796,0,0,0,0,1.37358970147522,2.62526331037461,1.48737820136766,1.94253221601469,0,0,1.11756558048885,1.06067133194649,1.30247188961453,1.51938121718712,0,1.70428753304549,1.96231185894064,1.81506720661827,2.15254092662591,2.47885074160216,0,2.40206352521356,1.18868339142672,0,1.22424229701339,0,2.20323830764092,0,0,2.05632072458481,1.70073164231666,0,0,1.65806095369828,2.34814426384184,2.86215979491198,2.75184902743827,2.93818177294463,2.72492844435653,0,0,0,0,1.9994265048755,0,0,0,0,1.37358970924106,2.62526341401223,1.48737821204482,1.94253224707957,0,0,1.1175655838916,1.06067133470739,1.30247189589262,1.51938122881337,0,1.70428755145138,1.96231189129029,1.81506723029714,2.15254097346572,2.47885082398184,0,2.4020635978499,1.18868339578189,0,1.22424230191367,0,2.2032383590518,0,0,2.05632076359401,1.70073166056943,0,0,1.65806097018683,2.34814433017255,2.86215994133415,2.75184915255848,2.93818193555521,2.72492856465156,0,0,0,0,1.9994265148603,0,0,0,0,1.37358971146517,2.62526344368807,1.48737821510263,1.9425322559755,0,0,1.1175655848662,1.06067133549817,1.30247189769067,1.51938123214296,0,1.70428755672238,1.96231190055413,1.8150672370781,2.15254098687857,2.47885084757111,0,2.40206361864935,1.18868339702927,0,1.22424230331712,0,2.20323837377361,0,0,2.05632077476472,1.70073166579658,0,0,1.65806097490881,2.34814434916641,2.8621599832604,2.7518491883854,2.93818198211643,2.724928599097,0,0,0,0,1.99942651562815,0,0,0,0,1.3735897116362,2.62526344597024,1.48737821533778,1.94253225665961,0,0,1.11756558494114,1.06067133555898,1.30247189782894,1.51938123239901,0,1.70428755712773,1.96231190126653,1.81506723759956,2.15254098791005,2.4788508493852,0,2.40206362024889,1.18868339712519,0,1.22424230342505,0,2.20323837490575,0,0,2.05632077562377,1.70073166619855,0,0,1.65806097527194,2.3481443506271,2.86215998648468,2.75184919114062,2.93818198569717,2.72492860174598],"Archive315_field3":[0,0,0,0,0.00126712256913644,0,0,0,0,0.000870502902711248,0.00166374223081773,0.000942615569307229,0.00123106623577454,0,0,0.000708249403344653,0.000672193070215361,0.000825432486406853,0.000962897256451846,0,0.00108008033914558,0.00124360144327902,0.00115028618025527,0.00136415777315218,0.00157095429967807,0,0.00152229094811326,0.000753319819771368,0,0.000775855027975385,0,0.00139628688239967,0,0,0.00130317890246783,0.00107782681787796,0,0,0.0010507845694838,0.00148812000898346,0.00181387370780703,0.00174396503986954,0.00186205208438619,0.00172690431244274,0,0,0,0,0.00131213916938478,0,0,0,0,0.0011490763247806,0.00165207458735292,0.00104633337307508,0.00126875561630901,0,0,0.00126369846549238,0.000932648062480051,0.00111249599360126,0.00108218018843531,0,0.00135136750658378,0.00156161807923278,0.00144479765451579,0.00182674918312134,0.00299127692778363,0,0.00281311371759299,0.00143058675672525,0,0.00125652920165477,0,0.00167233275058032,0,0,0.00110105988557809,0.0017166448168335,0,0,0.000896480405952698,0.00131288501888191,-0.00135181708182103,6.43952593879484e-06,-0.000257044746920768,-0.000159188491254011,0,0,0,0,0.00137054353844185,0,0,0,0,0.00151049656900642,0.00163693702296752,0.00118089651084444,0.00131765367823814,0,0,0.00198433625196637,0.00127056151163126,0.00148493124326669,0.00123693747624893,0,0.00170333459132759,0.00197421182884388,0.00182689587688568,0.00242691378452371,0.00483399895692167,0,0.00448782303896913,0.00230927065487631,0,0.00188015429645886,0,0.00203047374990254,0,0,0.000838831314641492,0.00254544519944057,0,0,0.000696286683569512,0.00108553568244004,-0.00545897428607811,-0.00224782059211794,-0.00300635433113618,-0.00260619931137564,0,0,0,0,0.00143535823349964,0,0,0,0,0.00191158550294967,0.00162013799419846,0.00133022900198676,0.00137191867649992,0,0,0.00278406965145343,0.00164556359464337,0.00189824416385726,0.0014086805846201,0,0.00209393280965784,0.00243209096413875,0.00225093235934068,0.00309295114189117,0.00687897414828603,0,0.00634634481035607,0.00328439695918023,0,0.0025722271066585,0,0.00242792351496397,0,0,0.000547821104512415,0.00346521288870914,0,0,0.000474120136629702,0.000833232968889628,-0.0100169241777983,-0.00474950343091895,-0.00605742221615138,-0.00532178873879074,0,0,0,0,0.00150472152475393,0,0,0,0,0.00234082225268775,0.00160216003703441,0.00149004142198891,0.00142999190944429,0,0,0.00363992713266213,0.00204688275718692,0.00234056276082612,0.00159247636550398,0,0.0025119426217649,0.00292210336720162,0.00270472708238105,0.00380572999835241,0.00906746262243979,0,0.00833529484337102,0.00432795615443148,0,0.00331286854138417,0,0.0028532657049381,0,0,0.000236388236146524,0.00444952848625028,0,0,0.00023636227668052,0.000563224030027514,-0.0148947441402386,-0.0074267506110581,-0.0093226094632254,-0.00822795414777413],"Archive315_field4":[0,0,0,0,2.00939907278308,0,0,0,0,1.38044082642415,2.63835731914201,1.49479687121669,1.95222105038682,0,0,1.12313972564095,1.06596170324469,1.30896829842882,1.52695950881459,0,1.71278808160245,1.97209934723552,1.82412028867209,2.1632772071115,2.49121451616496,0,2.41404432030631,1.19461225363628,0,1.23034851763395,0,2.21422744666852,0,0,2.06657709517935,1.70921445520267,0,0,1.66633093840549,2.35985613342523,2.87643531280733,2.76557437839985,2.9528364423215,2.73851953021698,0,0,0,0,2.00939916212966,0,0,0,0,1.38044104367233,2.63835749143999,1.4947969587393,1.95222112838129,0,0,1.12314021915971,1.06596190409867,1.30896852182004,1.52695960885885,0,1.71278830607911,1.97209962950848,1.82412053922616,2.16327762948266,2.49121595950063,0,2.41404560531937,1.19461288025985,0,1.23034892314344,0,2.21422772707683,0,0,2.06657704524013,1.70921500907239,0,0,1.66633087684222,2.35985614441189,2.8764353123156,2.76557404539321,2.95283614822168,2.73851919885052,0,0,0,0,2.00939923615797,0,0,0,0,1.38044139963497,2.63835758615914,1.49479706971845,1.95222119199251,0,0,1.12314126459334,1.06596225608565,1.30896889764685,1.52695973806432,0,1.71278863843768,1.97210003189459,1.82412090568363,2.16327826660921,2.49121893641986,0,2.41404821077633,1.19461426004071,0,1.2303497230109,0,2.21422807819991,0,0,2.06657696136721,1.70921606076211,0,0,1.66633079773513,2.35985609554109,2.87644032190413,2.76557508462862,2.95283783087618,2.73852055525487,0,0,0,0,2.00939929144581,0,0,0,0,1.38044189901514,2.63835760561371,1.49479719822413,1.95222123831321,0,0,1.12314296324463,1.06596276982196,1.30896943358032,1.52695989019199,0,1.71278907671474,1.97210055272883,1.82412138646581,2.16327912982603,2.4912237675557,0,2.41405240216771,1.19461654426019,0,1.23035097665496,0,2.21422849313206,0,0,2.06657687496116,1.70921768324986,0,0,1.66633072445737,2.35985601205764,2.87645262541292,2.76557828545069,2.95284256031334,2.73852452067056,0,0,0,0,2.00939934296241,0,0,0,0,1.38044256031201,2.63835759692878,1.49479734922144,1.95222128067532,0,0,1.12314541092452,1.06596346495847,1.30897014989437,1.52696007106963,0,1.71278963915886,1.97210121862923,1.8241220034104,2.1632802673856,2.49123077367616,0,2.41405845190637,1.19461986924359,0,1.23035274810454,0,2.21422900151477,0,0,2.06657681673437,1.70921996264915,0,0,1.66633067413526,2.35985593363601,2.87647375088307,2.76558418188883,2.95285106734717,2.73853171292371],"Archive315_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,7291390.29781034,6780992.97696362,1677019.76849638,2187417.0893431,4484205.03315336,7036191.63738698,4229006.37273,1932218.42891974,4739403.69357672,3080612.40082487,5887797.66548185,3335811.06124823,4356605.70294168,2953013.07061319,1804619.09870806,2506415.41487231,2378816.08466062,2921113.23806027,3407585.6844923,2059817.75913142,3822283.50768027,4400966.40758559,4070734.12660205,4827601.77986929,5559431.58497596,5504999.67484681,5387217.42136557,2665914.57763691,3463410.39145991,2745664.15901921,6015396.99569353,4941303.09672397,7163790.96759866,4867003.02378841,4611804.36336504,3814308.54954204,6908592.3071753,4101407.04251832,3718609.05188328,5266290.2528201,6419096.07799594,6171697.15819776,6589593.9816461,6111321.15422917,5080133.67960881,4724524.3220362,1168430.74631003,1524040.10388264,3124282.21295942,4902329.0008225,2946477.53417311,1346235.42509634,3302086.89174573,2146356.47963472,4102207.94628412,2324161.15842103,3035379.87356627,2057454.14024157,1257333.08570318,1746295.95236553,1657393.61297238,2035228.55539328,2374168.72432968,1435137.76448949,2663101.32735743,3066287.32749592,2836204.44011814,3363537.18453646,3873425.29761421,3835500.92810465,3753438.44504844,1857423.87660697,2413063.49781419,1912987.83872769,4191110.28567727,3442756.35476011,4991231.34021566,3390989.23113888,3213184.55235257,2657544.93114536,4813426.66142935,2857575.19477996,2590868.17660049,3669184.80388867,4472379.73096365,4300009.36901183,4591170.81294646,4257943.5682971,2626174.41638899,2442342.20724176,604020.115769469,787852.324916698,1615097.26607923,2534258.31181538,1523181.16150562,695936.220343083,1707013.37065285,1109558.69092435,2120635.84123411,1201474.79549796,1569139.21379242,1063600.63863754,649978.168056276,902747.455633717,856789.403346909,1052111.12556584,1227326.19990929,741894.272629891,1376689.86984142,1585116.81790776,1466175.50049602,1738780.09117329,2002366.68204599,1982761.68437369,1940339.49489222,960195.020992226,1247432.84778477,988918.803671481,2166593.89352092,1779732.43047176,2580216.36410219,1752971.42293965,1661055.31836604,1373817.49157349,2488300.25952857,1477223.10921881,1339348.95235839,1896784.58652641,2311996.0950984,2222889.25987503,2373405.12881155,2201143.34990314,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive315_field6":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive315_field7":[123.596669573359,116.351540366539,43.8337973123007,51.086036543383,83.7265376517016,119.966553342465,80.0995435774951,47.4617798408019,87.3528678875541,63.7807648578208,103.673389319619,67.4067958881891,81.9130746393696,61.9651559946724,45.6484577182414,55.6211207898826,53.8060050134769,61.5140849444293,68.4266253025764,49.2766794393712,74.3204326216375,82.545003639436,77.8511341581411,88.6086389594299,99.0111246978731,98.2411686318756,96.5631057459362,57.8879669408018,69.2176794052647,59.0210602681058,105.486646375407,90.2236384976097,121.778160364983,89.1592933604593,85.5393421831343,74.2084629072979,118.150482714249,78.2803503758252,72.8457213935218,94.8379444024515,111.213891704484,107.702222204192,113.644358301798,106.84432568143,123.596669573359,116.351540366539,43.8337973123007,51.086036543383,83.7265376517016,119.966553342465,80.0995435774951,47.4617798408019,87.3528678875541,63.7807648578207,103.673389319619,67.4067958881891,81.9130746393696,61.9651559946724,45.6484577182414,55.6211207898826,53.8060050134769,61.5140849444293,68.4266253025764,49.2766794393712,74.3204326216375,82.545003639436,77.8511341581411,88.6086389594299,99.0111246978731,98.2411686318755,96.5631057459362,57.8879669408018,69.2176794052647,59.0210602681058,105.486646375407,90.2236384976097,121.778160364983,89.1592933604593,85.5393421831343,74.2084629072979,118.150482714249,78.2803503758252,72.8457213935218,94.8379444024515,111.213891704484,107.702222204192,113.644358301798,106.84432568143,123.596669573359,116.351540366539,43.8337973123007,51.086036543383,83.7265376517016,119.966553342465,80.0995435774951,47.4617798408019,87.3528678875541,63.7807648578207,103.673389319619,67.4067958881891,81.9130746393696,61.9651559946724,45.6484577182414,55.6211207898826,53.8060050134769,61.5140849444293,68.4266253025764,49.2766794393712,74.3204326216375,82.545003639436,77.8511341581411,88.6086389594299,99.0111246978731,98.2411686318755,96.5631057459362,57.8879669408018,69.2176794052647,59.0210602681058,105.486646375407,90.2236384976097,121.778160364983,89.1592933604593,85.5393421831343,74.2084629072979,118.150482714249,78.2803503758252,72.8457213935218,94.8379444024515,111.213891704484,107.702222204192,113.644358301798,106.84432568143,123.596669573359,116.351540366539,43.8337973123007,51.086036543383,83.7265376517016,119.966553342465,80.0995435774951,47.4617798408019,87.3528678875541,63.7807648578207,103.673389319619,67.4067958881891,81.9130746393696,61.9651559946724,45.6484577182414,55.6211207898826,53.8060050134769,61.5140849444293,68.4266253025764,49.2766794393712,74.3204326216375,82.545003639436,77.8511341581411,88.6086389594299,99.0111246978731,98.2411686318755,96.5631057459362,57.8879669408018,69.2176794052647,59.0210602681058,105.486646375407,90.2236384976097,121.778160364983,89.1592933604593,85.5393421831343,74.2084629072979,118.150482714249,78.2803503758252,72.8457213935218,94.8379444024515,111.213891704484,107.702222204192,113.644358301798,106.84432568143,123.596669573359,116.351540366539,43.8337973123007,51.086036543383,83.7265376517016,119.966553342465,80.0995435774951,47.4617798408019,87.3528678875541,63.7807648578208,103.673389319619,67.4067958881891,81.9130746393696,61.9651559946724,45.6484577182414,55.6211207898826,53.8060050134769,61.5140849444293,68.4266253025764,49.2766794393712,74.3204326216375,82.545003639436,77.8511341581411,88.6086389594299,99.0111246978731,98.2411686318756,96.5631057459362,57.8879669408018,69.2176794052647,59.0210602681058,105.486646375407,90.2236384976097,121.778160364983,89.1592933604593,85.5393421831343,74.2084629072979,118.150482714249,78.2803503758252,72.8457213935218,94.8379444024515,111.213891704484,107.702222204192,113.644358301798,106.84432568143],"Archive315_field8":[999.979856279126,929.987904002902,230.001930254627,300.000992555113,615.002197475749,964.976328513531,580.00179186684,265.00332431783,650.001939246303,422.502661241007,807.502812584526,457.502103806078,597.502028696066,405.000346610508,247.503296427919,343.75284121999,326.251019676233,400.627599118427,467.3457052146,282.504929683751,524.221306277551,603.587538998062,558.295833947599,662.100537052612,762.472137875291,755.01047459473,738.85258997375,365.628069580098,474.999693090504,376.565354011996,825.002775407665,677.693659359154,982.4746413034,667.495070486559,632.501707774532,523.128917452752,947.473552117963,562.495892897819,510.001146613463,722.260979808749,880.359659952887,846.433457275999,903.750663287135,838.1531032208,999.979856279126,929.987904002902,230.001930254627,300.000992555113,615.002197475748,964.976328513531,580.00179186684,265.00332431783,650.001939246303,422.502661241007,807.502812584526,457.502103806078,597.502028696066,405.000346610508,247.503296427919,343.75284121999,326.251019676233,400.627599118427,467.3457052146,282.504929683751,524.221306277552,603.587538998062,558.295833947599,662.100537052612,762.472137875291,755.01047459473,738.852589973749,365.628069580098,474.999693090504,376.565354011996,825.002775407665,677.693659359154,982.4746413034,667.495070486559,632.501707774532,523.128917452752,947.473552117963,562.495892897819,510.001146613463,722.260979808749,880.359659952886,846.433457275999,903.750663287135,838.1531032208,999.979856279126,929.987904002902,230.001930254627,300.000992555113,615.002197475748,964.976328513531,580.00179186684,265.00332431783,650.001939246303,422.502661241007,807.502812584526,457.502103806078,597.502028696066,405.000346610508,247.503296427919,343.75284121999,326.251019676233,400.627599118427,467.3457052146,282.504929683751,524.221306277552,603.587538998062,558.295833947599,662.100537052612,762.472137875291,755.01047459473,738.852589973749,365.628069580098,474.999693090504,376.565354011996,825.002775407665,677.693659359154,982.4746413034,667.495070486559,632.501707774532,523.128917452752,947.473552117963,562.495892897819,510.001146613463,722.260979808749,880.359659952886,846.433457275999,903.750663287135,838.1531032208,999.979856279126,929.987904002902,230.001930254627,300.000992555113,615.002197475748,964.976328513531,580.00179186684,265.00332431783,650.001939246303,422.502661241007,807.502812584526,457.502103806078,597.502028696066,405.000346610508,247.503296427919,343.75284121999,326.251019676233,400.627599118427,467.3457052146,282.504929683751,524.221306277552,603.587538998062,558.295833947599,662.100537052612,762.472137875291,755.01047459473,738.852589973749,365.628069580098,474.999693090504,376.565354011996,825.002775407665,677.693659359154,982.4746413034,667.495070486559,632.501707774532,523.128917452752,947.473552117963,562.495892897819,510.001146613463,722.260979808749,880.359659952886,846.433457275999,903.750663287135,838.1531032208,999.979856279126,929.987904002902,230.001930254627,300.000992555113,615.002197475749,964.976328513531,580.00179186684,265.00332431783,650.001939246303,422.502661241007,807.502812584526,457.502103806078,597.502028696066,405.000346610508,247.503296427919,343.75284121999,326.251019676233,400.627599118427,467.3457052146,282.504929683751,524.221306277551,603.587538998062,558.295833947599,662.100537052612,762.472137875291,755.01047459473,738.85258997375,365.628069580098,474.999693090504,376.565354011996,825.002775407665,677.693659359154,982.4746413034,667.495070486559,632.501707774532,523.128917452752,947.473552117963,562.495892897819,510.001146613463,722.260979808749,880.359659952887,846.433457275999,903.750663287135,838.1531032208],"Archive315_field9":[253.014619785634,253.015665468494,253.056228992694,253.045170697127,253.023833932904,253.015123686506,253.024660985996,253.050364544698,253.022170945209,253.033472635844,253.018279143042,253.031492291543,253.024440784083,253.034478000174,253.052998033427,253.040571323203,253.042391901158,253.035440640506,253.030964210181,253.048293618848,253.027719365631,253.024204725932,253.026211818113,253.022212075451,253.019412846218,253.019191272133,253.019931094075,253.038475458996,253.029621922254,253.037270516557,253.017577542297,253.021748708034,253.014814672689,253.021717059604,253.023183088276,253.027693687151,253.015407321123,253.025702666278,253.028343948953,253.020358700443,253.016781043723,253.017344635241,253.016241550055,253.017592020137,252.996621207802,252.996384974987,252.98889479659,252.990464447426,252.994561698967,252.996521488452,252.994410399508,252.98969425631,252.994941182385,252.992561344096,252.995785424064,252.992961253309,252.994431498252,252.992361575582,252.989325933578,252.991252860374,252.990936794826,252.99218759737,252.993072085375,252.990012314294,252.993737246421,252.994485689733,252.994059227846,252.994907385074,252.995527518825,252.995588937711,252.995418477166,252.99162155795,252.993338159578,252.991852031135,252.995954754782,252.99501185577,252.996586606792,252.995045333504,252.994711272122,252.993762735713,252.996450935901,252.994185081399,252.993626542568,252.995330306978,252.996131143842,252.996003741038,252.996249973606,252.995946422858,253.000862074503,253.000920743189,253.00254002817,253.002271393869,253.001355816801,253.000899725231,253.001413296432,253.002422314692,253.001281073033,253.001828007628,253.001061729031,253.001728469852,253.001382280337,253.001881102345,253.002479155279,253.002116977373,253.002178241985,253.001911511119,253.001703435022,253.002362770622,253.001550874012,253.001376470051,253.001474115322,253.001270467015,253.001117425668,253.001115622165,253.001149219685,253.002040402142,253.001658523473,253.001987202537,253.001028079388,253.001243219055,253.000876340798,253.001255703703,253.001329347852,253.001552487961,253.000911160163,253.001458305495,253.001586105254,253.001177621748,253.000984202578,253.001014131294,253.000951768984,253.001024187471,252.999808531115,252.999794814555,252.999448089689,252.999488291993,252.999678122433,252.999816210841,252.999693499463,252.999477602068,252.999718022177,252.999574197975,252.999751619339,252.99958907873,252.999666791148,252.999574386608,252.999463318739,252.999521513045,252.999506318925,252.99955806018,252.999595729543,252.999487796305,252.999632076919,252.999676819745,252.999650065935,252.99969480255,252.99972921526,252.999746735187,252.999728398958,252.999538140841,252.999624007251,252.99954705917,252.999770766105,252.999699712861,252.999812956516,252.999724749499,252.999696778375,252.999643910857,252.999805826523,252.999673767342,252.999638108098,252.999730465411,252.999780013714,252.999771262061,252.999783924431,252.999763928205,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive315_field10":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive315_field11":[0,0,0,0,0.199900999723037,0,0,0,0,0.137381327085513,0.262675089974425,0.148710173862317,0.194295770120579,0,0,0.11170626036783,0.106213073071084,0.130223572058235,0.15189674114215,0,0.170718958087701,0.195852204730993,0.181457158616909,0.215311242391751,0.248254097557872,0,0.239835999545278,0.1189520886277,0,0.122269784834547,0,0.219758324333737,0,0,0.206461560898474,0.170006623229839,0,0,0.16531587046125,0.234838208191257,0.285004506002419,0.273743061424272,0.295203684208372,0.272739263921124,0,0,0,0,0.199901005747227,0,0,0,0,0.137381328428381,0.262675107860803,0.148710175707679,0.194295775488964,0,0,0.111706260956153,0.106213073549431,0.130223573143535,0.151896743150686,0,0.170718961273158,0.195852210307505,0.181457162706533,0.215311250484196,0.248254111795618,0,0.239836012072432,0.118952089381334,0,0.122269785680746,0,0.219758333190769,0,0,0.206461567656768,0.170006626382808,0,0,0.165315873300707,0.234838219642805,0.285004531074656,0.273743082825289,0.295203712316861,0.272739284647488,0,0,0,0,0.199901009234478,0,0,0,0,0.137381329204887,0.262675118221672,0.14871017677506,0.194295778596341,0,0,0.111706261296124,0.106213073825759,0.130223573770988,0.151896744312534,0,0.170718963116449,0.195852213535385,0.181457165073321,0.215311255169919,0.248254120041534,0,0.239836019327077,0.118952089816866,0,0.122269786169918,0,0.219758338319143,0,0,0.206461571569309,0.170006628207269,0,0,0.165315874943523,0.23483822627445,0.285004545599929,0.273743095222921,0.295203728602222,0.272739296653841,0,0,0,0,0.199901010233387,0,0,0,0,0.137381329427357,0.262675121189088,0.148710177080853,0.194295779486451,0,0,0.111706261393536,0.106213073904939,0.130223573950761,0.151896744645387,0,0.170718963644492,0.195852214460012,0.181457165751312,0.215311256512054,0.248254122403303,0,0.239836021404965,0.118952089941658,0,0.122269786310074,0,0.219758339788072,0,0,0.206461572690022,0.170006628729919,0,0,0.165315875414151,0.234838228173902,0.285004549759935,0.273743098773624,0.295203733266246,0.272739300092508,0,0,0,0,0.199901010310199,0,0,0,0,0.137381329444464,0.262675121417279,0.148710177104367,0.194295779554897,0,0,0.111706261401026,0.106213073911028,0.130223573964584,0.151896744670982,0,0.170718963685095,0.195852214531112,0.181457165803446,0.215311256615261,0.248254122584919,0,0.23983602156475,0.118952089951254,0,0.122269786320851,0,0.219758339901028,0,0,0.206461572776201,0.170006628770108,0,0,0.165315875450339,0.234838228319966,0.285004550079837,0.27374309904667,0.295203733624908,0.272739300356938],"Archive315_field12":[0,0,0,0,2.00001371491553,0,0,0,0,1.37360953594015,2.62435816170261,1.48749700172444,1.94282239596019,0,0,1.11750478012886,1.06056744975872,1.30242359209155,1.51929468486934,0,1.70427419550846,1.96232085755609,1.81512117357043,2.1528721227421,2.47838715179162,0,2.4027007602434,1.18846847351444,0,1.22415165997446,0,2.20362868156652,0,0,2.05537683690944,1.70090732441393,0,0,1.65774152853311,2.34800461844439,2.85707781847954,2.74677860452478,2.9335197271123,2.72125617832123,0,0,0,0,2.00001377518769,0,0,0,0,1.37360954936683,2.62435834040346,1.48749702018296,1.9428224496403,0,0,1.11750478601442,1.06056745453515,1.30242360294612,1.51929470495903,0,1.70427422730863,1.96232091342938,1.81512121447906,2.15287220365752,2.47838729393085,0,2.40270088574167,1.18846848104412,0,1.22415166844651,0,2.2036287703805,0,0,2.05537690418997,1.70090735595922,0,0,1.65774155700639,2.34800473294146,2.85707806982059,2.74677881926577,2.93352000643404,2.72125638511854,0,0,0,0,2.0000138100777,0,0,0,0,1.37360955713074,2.62435844391778,1.48749703085961,1.9428224807119,0,0,1.11750478941547,1.06056745729437,1.30242360922155,1.51929471658002,0,1.70427424571006,1.96232094577079,1.81512123815411,2.15287225050952,2.47838737625204,0,2.40270095841942,1.18846848539558,0,1.22415167334405,0,2.20362882180532,0,0,2.0553769431403,1.70090737421286,0,0,1.65774157348009,2.34800479924725,2.85707821543175,2.74677894366545,2.93352016826613,2.72125650491192,0,0,0,0,2.00001382007181,0,0,0,0,1.37360955935511,2.6243584735649,1.48749703391836,1.94282248961238,0,0,1.11750479038998,1.060567458085,1.30242361101954,1.51929471990927,0,1.70427425098147,1.96232095503499,1.81512124493607,2.15287226392938,2.47838739983021,0,2.4027009792359,1.18846848664241,0,1.22415167474727,0,2.20362883653501,0,0,2.05537695429728,1.70090737944194,0,0,1.65774157819941,2.34800481823872,2.85707825713446,2.74677897929373,2.93352021461381,2.72125653922123,0,0,0,0,2.00001382084032,0,0,0,0,1.37360955952615,2.62435847584474,1.48749703415356,1.94282249029679,0,0,1.11750479046492,1.0605674581458,1.30242361115779,1.51929472016527,0,1.70427425138681,1.96232095574737,1.81512124545757,2.15287226496133,2.47838740164333,0,2.40270098083665,1.18846848673828,0,1.22415167485517,0,2.20362883766768,0,0,2.05537695515521,1.70090737984403,0,0,1.6577415785623,2.34800481969913,2.85707826034138,2.74677898203352,2.93352021817794,2.72125654185958],"Archive315_field13":[0,0,0,0,0.00126748847160733,0,0,0,0,0.000870516759531571,0.0016631837261475,0.00094268838973278,0.00123125101824367,0,0,0.00070820810074551,0.000672137047716853,0.000825400706220872,0.000962840376374976,0,0.00108009019982317,0.00124358334512449,0.0011503169588412,0.00136436922540432,0.00157068665691115,0,0.00152266763391305,0.000753190225362002,0,0.000775788470535416,0,0.00139649640213273,0,0,0.00130263873322332,0.00107793289756191,0,0,0.00105055339827092,0.00148803395065593,0.00181060907228706,0.00174069317570289,0.00185921391202741,0.00172461567523607,0,0,0,0,0.00131318823682556,0,0,0,0,0.00114918731707982,0.00164955686655039,0.00104604464810818,0.00126941879162716,0,0,0.00126354279212006,0.000932587120856109,0.00111259373936927,0.00108232470863307,0,0.00135134415910472,0.0015617247754806,0.00144482190880171,0.00182670085072851,0.00298558095099002,0,0.00280940856533078,0.00143051027451488,0,0.00125640912796469,0,0.00167275538662618,0,0,0.00110167508826512,0.00171618172505631,0,0,0.000896468741628777,0.00131284192972701,-0.00135253076380192,4.13829393688259e-06,-0.000258557013550027,-0.000160539561338348,0,0,0,0,0.00137247894198715,0,0,0,0,0.0015107335845433,0.00163187742077841,0.00118013871805865,0.00131893751902408,0,0,0.00198403219432053,0.00127049418794505,0.00148519703557894,0.00123734329248561,0,0.00170326815963158,0.00197448043288455,0.00182691166649929,0.00242652840823771,0.00482126027609354,0,0.00447882212223489,0.00230926308025282,0,0.00187996479094937,0,0.00203117288246083,0,0,0.000840945493347189,0.00254424366634598,0,0,0.000696559806752669,0.00108554834130957,-0.00545637836810728,-0.00224886252841512,-0.00300614637113382,-0.00260633398452398,0,0,0,0,0.00143827725552541,0,0,0,0,0.00191196237375689,0.00161225751899553,0.00132895065753496,0.00137389130572273,0,0,0.00278360092320281,0.0016454891884146,0.0018986964471362,0.00140937637617402,0,0.00209381856489905,0.0024325392466087,0.002250938755203,0.00309219172847311,0.00685841977118165,0,0.00633146687719881,0.00328446585528945,0,0.00257196054864441,0,0.00242892949176371,0,0,0.000551598783691014,0.00346319186455599,0,0,0.000474709304977817,0.000833307494586445,-0.0100106554048326,-0.00474914785358952,-0.00605530522073483,-0.00532057350568822,0,0,0,0,0.00150869319413564,0,0,0,0,0.00234134879359686,0.00159126072413893,0.00148820599434187,0.00143270166525542,0,0,0.00363928217747225,0.00204680077137351,0.00234121462272685,0.00159348248240498,0,0.00251177720849106,0.00292274393765989,0.00270472342524937,0.00380457029843244,0.00903854405518082,0,0.00831412745354985,0.00432810688787405,0,0.00331251952343668,0,0.00285460005986124,0,0,0.000241946157777894,0.00444663046038352,0,0,0.000237289669767151,0.000563364764275368,-0.01488454475675,-0.0074248994446417,-0.00931844945908959,-0.00822529427399693],"Archive315_field14":[0,0,0,0,2.0099793222985,0,0,0,0,1.38046280067842,2.63747165481798,1.49491235014323,1.95251407792884,0,0,1.12307422896928,1.06587287428996,1.30891790164341,1.52686930891397,0,1.71280374320043,1.97207068346882,1.82416909807894,2.16361252757599,2.49079012326944,0,2.41464170602365,1.19440674781339,0,1.23024297955708,0,2.21455978414194,0,0,2.06572070103878,1.70938267808186,0,0,1.66596441021772,2.35971966269464,2.87125834915542,2.76038602299856,2.94833625307624,2.73489028453335,0,0,0,0,2.00997941220865,0,0,0,0,1.38046301802836,2.63747182585384,1.49491243744294,1.95251415631827,0,0,1.12307472237707,1.06587307515047,1.30891812516224,1.52686940912545,0,1.71280396769089,1.9720709659008,1.82416934867895,2.16361294983697,2.49079156021433,0,2.41464298640754,1.19440737454318,0,1.23024338503187,0,2.21456006483591,0,0,2.06572065170604,1.7093832314171,0,0,1.66596434879242,2.3597196737906,2.87125834942144,2.76038568996778,2.94833595893788,2.73488995330916,0,0,0,0,2.00997948688362,0,0,0,0,1.38046337415049,2.63747191888733,1.49491254801745,1.95251422036719,0,0,1.12307576750771,1.06587342713797,1.30891850121909,1.52686953855892,0,1.71280429999477,1.9720713684678,1.82416971511995,2.16361358649295,2.49079451971328,0,2.41464557887982,1.19440875463396,0,1.23024418479775,0,2.2145604162486,0,0,2.06572056825626,1.70938428168213,0,0,1.66596426976936,2.35971962491798,2.87126336168805,2.76038673104491,2.9483376427948,2.73489131090095,0,0,0,0,2.00997954293371,0,0,0,0,1.38046387378558,2.63747193661619,1.49491267597582,1.95251426720709,0,0,1.12307746563324,1.06587394088227,1.30891903752749,1.52686969100831,0,1.71280473819478,1.97207188959366,1.82417019588251,2.1636144489319,2.49079931966611,0,2.414649746911,1.19441103944979,0,1.23024543828129,0,2.21456083159021,0,0,2.06572048194213,1.70938590170566,0,0,1.66596419652523,2.35971954144672,2.87127567015012,2.76038993615421,2.94834237503101,2.73489527890405,0,0,0,0,2.0099795953269,0,0,0,0,1.38046453544296,2.63747192615588,1.49491282627019,1.95251431016265,0,0,1.1230799125276,1.06587463603412,1.3089197543789,1.52686987230416,0,1.71280530053084,1.97207255590004,1.82417081279733,2.16361558536171,2.49080627855388,0,2.41465576123569,1.19441436536194,0,1.23024720950029,0,2.21456134051378,0,0,2.06572042332797,1.70938817743546,0,0,1.66596414615577,2.35971946302747,2.87129680265802,2.76039583928619,2.94835088622524,2.73490247505074],"Archive315_field15":[8995588.79172007,8365957.28719219,2069044.46412667,2698739.92879751,5532418.31798641,8680705.10675217,5217562.71922196,2383908.95479861,5847267.94501371,3800736.76491202,7264109.5763635,4115583.7003556,5374990.82468321,3643289.96802841,2226482.72890738,3092321.49646155,2934879.13527287,3603953.73732158,4204134.47459834,2541349.37130119,4715774.30037241,5429734.6756926,5022300.91415079,5956104.14820177,6859023.9837344,6791900.57704503,6646547.96330816,3289106.01948656,4272987.98911276,3387495.3146605,7421535.21692901,6096376.29005329,8838115.90399788,6004632.13023087,5689839.8877469,4705947.42175395,8523254.15593621,5060083.67845342,4587853.01467099,6497293.65433415,7919513.01821438,7614320.70195972,8129933.10427851,7539832.54136058,7291243.4220794,6780904.78032774,1677033.84273624,2187424.32644983,4484221.05580671,7036019.03934021,4229019.43793049,1932242.66781852,4739417.8333784,3080631.80497173,5887818.17313338,3335826.40091946,4356620.49495649,2953015.59788569,1804643.1342506,2506436.13131618,2378823.51951802,2921132.18924715,3407599.94072507,2059853.70337969,3822302.1464976,4400992.3257297,4070752.82695346,4827633.43204043,5559481.94845461,5505076.0492052,5387262.60604664,2665936.95914345,3463408.15366299,2745684.96873459,6015417.23227406,4941328.97273892,7163606.06744431,4866967.08078193,4611816.8154157,3814337.11321903,6908399.46534482,4101377.09603333,3718617.41228956,5266286.7006645,6419045.88316409,6171676.69812429,6589598.81793148,6111301.40490377,5080031.34681397,4724462.87275395,1168440.55226157,1524045.1461953,3124293.37642998,4902208.74650685,2946486.6370962,1346252.31307531,3302096.74337618,2146369.99909479,4102222.23458949,2324171.84603714,3035390.17961347,2057455.90106929,1257349.83199767,1746310.38614289,1657398.79306395,2035241.75926234,2374178.65708122,1435162.80794194,2663114.31358912,3066305.38545626,2836217.46922249,3363559.23756806,3873460.3873836,3835554.14044612,3753469.92659184,1857439.47048421,2413061.93867292,1913002.33749016,4191124.38511922,3442774.38336778,4991102.51464699,3390964.18855163,3213193.22807549,2657564.83232903,4813292.30265306,2857554.33015184,2590874.00155017,3669182.32899369,4472344.75869562,4299995.11385553,4591174.18253378,4257929.80834063,2626121.51546458,2442310.44104365,604025.184954788,787854.931539543,1615103.03703382,2534196.14636322,1523185.86726047,695944.950581521,1707018.46345187,1109565.6798074,2120643.22757164,1201480.32045966,1569144.54150213,1063601.54889719,649986.825050942,902754.917172966,856792.081194547,1052117.95130416,1227331.33464385,741907.218839237,1376696.58307212,1585126.15296791,1466182.23588974,1738791.49148498,2002384.82169751,1982789.19248639,1940355.76927181,960203.082244948,1247432.04178691,988926.29880477,2166601.18222552,1779741.75035805,2580149.76774194,1752958.47717757,1661059.80327982,1373827.77948769,2488230.8027774,1477212.32325214,1339351.96356533,1896783.30712978,2311978.01618918,2222881.89067392,2373406.87071926,2201136.23669551,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive315_field16":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive315_field17":[123.576550379815,116.339468591256,43.8357274759734,51.0870294583076,83.7287385719433,119.942922558343,80.1013334552838,47.4651039467171,87.3548097316029,63.7834264443706,103.676188310931,67.408898158455,81.915106018829,61.9655041411868,45.6517538834227,55.6239614728898,53.8070243630344,61.5166845323986,68.4285816381892,49.2816079411325,74.3229893728984,82.5485574316917,77.8536990995076,88.6129792716778,99.0180060624756,98.251611589651,96.5692855941239,57.8910369862812,69.2173735736159,59.0239137595947,105.489400540073,90.227187821331,121.752850829554,89.1543850265879,85.5410508520295,74.2123779494788,118.124089570735,78.2762471199517,72.8468683219809,94.8374621270365,111.20700189174,107.699408873012,113.645012664763,106.841607190095,123.576550379815,116.339468591256,43.8357274759734,51.0870294583076,83.7287385719433,119.942922558343,80.1013334552838,47.4651039467171,87.3548097316029,63.7834264443706,103.676188310931,67.408898158455,81.915106018829,61.9655041411868,45.6517538834227,55.6239614728898,53.8070243630344,61.5166845323986,68.4285816381892,49.2816079411325,74.3229893728984,82.5485574316917,77.8536990995076,88.6129792716778,99.0180060624756,98.251611589651,96.5692855941239,57.8910369862812,69.2173735736159,59.0239137595947,105.489400540073,90.227187821331,121.752850829554,89.1543850265879,85.5410508520295,74.2123779494788,118.124089570735,78.2762471199517,72.8468683219809,94.8374621270365,111.20700189174,107.699408873012,113.645012664763,106.841607190095,123.576550379815,116.339468591256,43.8357274759734,51.0870294583076,83.7287385719433,119.942922558343,80.1013334552838,47.4651039467171,87.3548097316029,63.7834264443706,103.676188310931,67.408898158455,81.915106018829,61.9655041411868,45.6517538834227,55.6239614728898,53.8070243630344,61.5166845323986,68.4285816381892,49.2816079411325,74.3229893728984,82.5485574316917,77.8536990995076,88.6129792716778,99.0180060624756,98.251611589651,96.5692855941239,57.8910369862812,69.2173735736159,59.0239137595947,105.489400540073,90.227187821331,121.752850829554,89.1543850265879,85.5410508520295,74.2123779494788,118.124089570735,78.2762471199517,72.8468683219809,94.8374621270365,111.20700189174,107.699408873012,113.645012664763,106.841607190095,123.576550379815,116.339468591256,43.8357274759734,51.0870294583076,83.7287385719433,119.942922558343,80.1013334552838,47.4651039467171,87.3548097316029,63.7834264443706,103.676188310931,67.408898158455,81.915106018829,61.9655041411868,45.6517538834227,55.6239614728898,53.8070243630344,61.5166845323986,68.4285816381892,49.2816079411325,74.3229893728984,82.5485574316917,77.8536990995076,88.6129792716778,99.0180060624756,98.251611589651,96.5692855941239,57.8910369862812,69.2173735736159,59.0239137595947,105.489400540073,90.227187821331,121.752850829554,89.1543850265879,85.5410508520295,74.2123779494788,118.124089570735,78.2762471199517,72.8468683219809,94.8374621270365,111.20700189174,107.699408873012,113.645012664763,106.841607190095,123.576550379815,116.339468591256,43.8357274759734,51.0870294583076,83.7287385719433,119.942922558343,80.1013334552838,47.4651039467171,87.3548097316029,63.7834264443706,103.676188310931,67.408898158455,81.915106018829,61.9655041411868,45.6517538834227,55.6239614728898,53.8070243630344,61.5166845323986,68.4285816381892,49.2816079411325,74.3229893728984,82.5485574316917,77.8536990995076,88.6129792716778,99.0180060624756,98.251611589651,96.5692855941239,57.8910369862812,69.2173735736159,59.0239137595947,105.489400540073,90.227187821331,121.752850829554,89.1543850265879,85.5410508520295,74.2123779494788,118.124089570735,78.2762471199517,72.8468683219809,94.8374621270365,111.20700189174,107.699408873012,113.645012664763,106.841607190095],"Archive315_field18":[999.959737085582,929.97583222762,230.0038604183,300.001985470038,615.00439839599,964.952697729409,580.003581744629,265.006648423745,650.003881090352,422.505322827557,807.505611575839,457.504206076344,597.504060075525,405.000694757023,247.5065925931,343.755681902997,326.252039025791,400.630198706397,467.347661550213,282.509858185512,524.223863028812,603.591092790318,558.298398888965,662.10487736486,762.479019239893,755.020917552505,738.858769821937,365.631139625577,474.999387258855,376.568207503485,825.005529572331,677.697208682875,982.449331767971,667.490162152688,632.503416443427,523.132832494933,947.447158974449,562.491789641946,510.002293541922,722.260497533334,880.352770140143,846.430643944819,903.751317650101,838.150384729465,999.959737085582,929.97583222762,230.0038604183,300.001985470038,615.00439839599,964.952697729409,580.003581744629,265.006648423745,650.003881090352,422.505322827557,807.505611575839,457.504206076343,597.504060075525,405.000694757023,247.5065925931,343.755681902997,326.252039025791,400.630198706397,467.347661550213,282.509858185512,524.223863028812,603.591092790318,558.298398888966,662.10487736486,762.479019239893,755.020917552505,738.858769821937,365.631139625577,474.999387258855,376.568207503485,825.005529572331,677.697208682875,982.449331767971,667.490162152688,632.503416443427,523.132832494933,947.44715897445,562.491789641946,510.002293541922,722.260497533334,880.352770140143,846.430643944819,903.751317650101,838.150384729465,999.959737085582,929.97583222762,230.0038604183,300.001985470038,615.00439839599,964.952697729409,580.003581744629,265.006648423745,650.003881090352,422.505322827557,807.505611575839,457.504206076343,597.504060075525,405.000694757023,247.5065925931,343.755681902997,326.252039025791,400.630198706397,467.347661550213,282.509858185512,524.223863028812,603.591092790318,558.298398888966,662.10487736486,762.479019239893,755.020917552505,738.858769821937,365.631139625577,474.999387258855,376.568207503485,825.005529572331,677.697208682875,982.449331767971,667.490162152688,632.503416443427,523.132832494933,947.44715897445,562.491789641946,510.002293541922,722.260497533334,880.352770140143,846.430643944819,903.751317650101,838.150384729465,999.959737085582,929.97583222762,230.0038604183,300.001985470038,615.00439839599,964.952697729409,580.003581744629,265.006648423745,650.003881090352,422.505322827557,807.505611575839,457.504206076343,597.504060075525,405.000694757023,247.5065925931,343.755681902997,326.252039025791,400.630198706397,467.347661550213,282.509858185512,524.223863028812,603.591092790318,558.298398888966,662.10487736486,762.479019239893,755.020917552505,738.858769821937,365.631139625577,474.999387258855,376.568207503485,825.005529572331,677.697208682875,982.449331767971,667.490162152688,632.503416443427,523.132832494933,947.44715897445,562.491789641946,510.002293541922,722.260497533334,880.352770140143,846.430643944819,903.751317650101,838.150384729465,999.959737085582,929.97583222762,230.0038604183,300.001985470038,615.00439839599,964.952697729409,580.003581744629,265.006648423745,650.003881090352,422.505322827557,807.505611575839,457.504206076344,597.504060075525,405.000694757023,247.5065925931,343.755681902997,326.252039025791,400.630198706397,467.347661550213,282.509858185512,524.223863028812,603.591092790318,558.298398888965,662.10487736486,762.479019239893,755.020917552505,738.858769821937,365.631139625577,474.999387258855,376.568207503485,825.005529572331,677.697208682875,982.449331767971,667.490162152688,632.503416443427,523.132832494933,947.447158974449,562.491789641946,510.002293541922,722.260497533334,880.352770140143,846.430643944819,903.751317650101,838.150384729465],"Archive315_field19":[253.029132040013,253.031217111035,253.10778965869,253.087935056676,253.046904572791,253.030171756562,253.048964182257,253.09744717506,253.044110585926,253.065672051064,253.036140727668,253.061772352502,253.048096698108,253.067976442546,253.102189295837,253.079178734306,253.08271229324,253.069369637359,253.060668710421,253.093569491598,253.054448709112,253.047703548837,253.051495803077,253.043760041797,253.038274151069,253.038233938499,253.039372077856,253.075237482643,253.058629155561,253.073062054849,253.035045896544,253.042835416652,253.029561511257,253.043204548615,253.045775414165,253.054544753874,253.030728730069,253.050991758036,253.055829181309,253.040252743555,253.033243028858,253.034445390836,253.032291747084,253.034797691854,252.99329194211,252.992824054518,252.980677138934,252.982437611922,252.989430008237,252.993076687295,252.989031469438,252.981483512575,252.990037253197,252.985760562592,252.991726772261,252.986530270414,252.989186547803,252.985360394042,252.981072053811,252.983604803063,252.983093128465,252.985149554208,252.986738625154,252.981916899467,252.987913755802,252.989269812846,252.988509797579,252.99008518278,252.991258734672,252.991281118075,252.991027668321,252.984199569268,252.987054771482,252.984566909365,252.991978140075,252.990282661059,252.993205636862,252.990236296186,252.989679852481,252.987933429973,252.992948067535,252.988641994066,252.987669899977,252.990846558483,252.992371976925,252.992106859711,252.992579345375,252.992025816467,253.001690951483,253.001808029304,253.004129920574,253.004027031293,253.002612238244,253.001755067407,253.002726222341,253.004123584437,253.002485656693,253.003437187584,253.002069122299,253.00325693503,253.002663911776,253.003525826473,253.004140605638,253.003852481614,253.003935635872,253.00355784258,253.003212763248,253.00406858061,253.002957934422,253.002651786878,253.00282153676,253.002455640088,253.002173959403,253.002180987139,253.002234663005,253.003746699053,253.003169562594,253.003671166654,253.002016127324,253.002407248892,253.00171719431,253.002437913247,253.00256215371,253.002958559027,253.001779325388,253.002802704655,253.003020634393,253.00228476613,253.001921384422,253.001984111554,253.001867797826,253.001999767626,252.999611953159,252.99958355312,252.999141039879,252.999109584776,252.999382061656,252.999613956505,252.999384973349,252.999127970684,252.999433600316,252.999204822424,252.99951178932,252.999236966746,252.999365213948,252.999199027348,252.999130714363,252.999135720818,252.999119565065,252.999183422442,252.999247291872,252.999133041458,252.999303813085,252.999376622985,252.999334540386,252.999414762744,252.999478399551,252.999494261818,252.999470904545,252.999154808858,252.999272961987,252.999167232228,252.999535622517,252.999424327709,252.999613733075,252.999445449588,252.999406172388,252.999316308801,252.999601168173,252.999359380698,252.999304269161,252.99946796767,252.999556372181,252.999539838168,252.999564977212,252.99953123391,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive315_field20":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive315_field21":[0,0,0,0,0.199859485974271,0,0,0,0,0.137403664977267,0.262825000174233,0.148682485198979,0.194338653896128,0,0,0.111655948191097,0.106359043806704,0.130199990841853,0.151855581879809,0,0.171008289804466,0.195473718022604,0.181407687150223,0.2153677663596,0.24862200981786,0,0.239466891751377,0.119035695066425,0,0.122115422125709,0,0.21919476713368,0,0,0.207288502826507,0.169940869950225,0,0,0.164826063035859,0.234860771845253,0.283797462916183,0.272304057672152,0.296583568245682,0.272983791379831,0,0,0,0,0.199859492007106,0,0,0,0,0.137403666322422,0.262825018073158,0.148682487046846,0.194338659273209,0,0,0.11165594878013,0.10635904428654,0.13019999192859,0.151855583890291,0,0.171008292999269,0.195473723594308,0.181407691243729,0.215367774464483,0.248622024084291,0,0.239466904276772,0.119035695821645,0,0.122115422972068,0,0.219194775979208,0,0,0.207288509613287,0.169940873106477,0,0,0.164826065869291,0.234860783306933,0.283797487810883,0.272304078897244,0.296583596419998,0.27298381208605,0,0,0,0,0.199859495494881,0,0,0,0,0.137403667098871,0.262825028431214,0.148682488113912,0.19433866238151,0,0,0.111655949119811,0.106359044563121,0.130199992555707,0.151855585051387,0,0.171008294845277,0.195473726815151,0.18140769360945,0.215367779151953,0.248622032338121,0,0.239466911522467,0.119035696257208,0,0.122115423460402,0,0.219194781094936,0,0,0.207288513537413,0.169940874930155,0,0,0.164826067506107,0.234860789937136,0.283797502220188,0.272304091181389,0.296583612729127,0.272983824069261,0,0,0,0,0.199859496494215,0,0,0,0,0.1374036673214,0.262825031398467,0.148682488419716,0.194338663272134,0,0,0.111655949217175,0.106359044642402,0.130199992735446,0.151855585384132,0,0.171008295374257,0.195473727738021,0.181407694287334,0.21536778049493,0.248622034702708,0,0.239466913598291,0.119035696382055,0,0.122115423600367,0,0.219194782560616,0,0,0.207288514661747,0.16994087545274,0,0,0.164826067975162,0.234860791836636,0.283797506347824,0.27230409470033,0.296583617400885,0.272983827502035,0,0,0,0,0.199859496571055,0,0,0,0,0.137403667338509,0.262825031626633,0.148682488443229,0.194338663340615,0,0,0.111655949224661,0.106359044648498,0.130199992749265,0.151855585409717,0,0.17100829541493,0.195473727808981,0.181407694339456,0.215367780598194,0.248622034884529,0,0.239466913757907,0.119035696391653,0,0.122115423611128,0,0.219194782673315,0,0,0.207288514748198,0.169940875492921,0,0,0.164826068011227,0.234860791982694,0.28379750666522,0.272304094970919,0.296583617760123,0.272983827765997],"Archive315_field22":[0,0,0,0,2.00059939254706,0,0,0,0,1.37362952658197,2.62345298250906,1.48761544900492,1.94311191321972,0,0,1.11744406283548,1.06046376188651,1.30237525613158,1.51920840001682,0,1.7042615452775,1.96233121729932,1.81517583585003,2.15320076932956,2.47791990593744,0,2.40333286984365,1.18825358895899,0,1.22406102428033,0,2.2040166612842,0,0,2.05443543737777,1.70108246329403,0,0,1.65742222453894,2.34786195983078,2.85200825100727,2.74172076225739,2.92886915250896,2.71759074612183,0,0,0,0,2.00059945293592,0,0,0,0,1.37362954002954,2.62345316117161,1.48761546749342,1.94311196698294,0,0,1.11744406873048,1.06046376667076,1.30237526700208,1.51920842013028,0,1.70426157711678,1.96233127323281,1.81517587680988,2.15320085036045,2.47792004812548,0,2.40333299555077,1.18825359649784,0,1.22406103276406,0,2.20401675022651,0,0,2.05443550464151,1.70108249488764,0,0,1.65742225303075,2.34786207441119,2.85200850118529,2.74172097596436,2.92886943074043,2.71759095225506,0,0,0,0,2.00059948784865,0,0,0,0,1.37362954779173,2.62345326456312,1.48761547816976,1.94311199806155,0,0,1.11744407212998,1.06046376942844,1.30237527327506,1.51920843174623,0,1.70426159551402,1.96233130556637,1.81517590048142,2.15320089722477,2.47792013038823,0,2.40333306826987,1.18825360084578,0,1.22406103765903,0,2.20401680166547,0,0,2.0544355435335,1.70108251314238,0,0,1.65742226948989,2.34786214069217,2.85200864599087,2.74172109964851,2.92886959179894,2.71759107154955,0,0,0,0,2.00059949785201,0,0,0,0,1.37362955001636,2.6234532941815,1.48761548122942,1.94311200696654,0,0,1.11744407310439,1.06046377021892,1.30237527507297,1.51920843507511,0,1.70426160078582,1.96233131483092,1.81517590726437,2.15320091065156,2.47792015395515,0,2.40333308910321,1.18825360209204,0,1.224061039062,0,2.20401681640296,0,0,2.05443555467677,1.70108251837337,0,0,1.65742227420652,2.34786215968114,2.85200868747135,2.74172113507932,2.92886963793422,2.71759110572328,0,0,0,0,2.00059949862118,0,0,0,0,1.3736295501874,2.62345329645899,1.48761548146467,1.94311200765125,0,0,1.11744407317931,1.06046377027969,1.3023752752112,1.51920843533106,0,1.70426160119116,1.96233131554327,1.81517590778591,2.15320091168398,2.47792015576729,0,2.40333309070515,1.18825360218786,0,1.22406103916987,0,2.20401681753616,0,0,2.05443555553359,1.70108251877558,0,0,1.65742227456917,2.34786216114125,2.852008690661,2.74172113780378,2.92886964148183,2.71759110835106],"Archive315_field23":[0,0,0,0,0.00126785336091788,0,0,0,0,0.000870530704657248,0.00166262516128976,0.000942760974275608,0.00123143537196819,0,0,0.000708166845634712,0.000672081146059614,0.000825368897287433,0.000962783652745054,0,0.00108010041685328,0.00124356609668915,0.00115034815351372,0.00136457898743744,0.00157041656032407,0,0.00152304110239859,0.000753060638141438,0,0.00077572191373292,0,0.00139670448568076,0,0,0.00130209992277573,0.00107803866586065,0,0,0.00105032231125199,0.00148794585268712,0.00180735234096425,0.0017374292467928,0.00185638240697181,0.00172233107584801,0,0,0,0,0.00131423275450345,0,0,0,0,0.00114929811569094,0.00164704439351119,0.00104575714494012,0.00127007881538457,0,0,0.00126338737839444,0.000932526389778603,0.00111269127505145,0.00108246933794898,0,0.00135132165259686,0.0015618303913132,0.00144484654810391,0.00182664766743594,0.00297989764105245,0,0.00280570946281748,0.00143043349833467,0,0.00125628878909165,0,0.00167317251126768,0,0,0.00110228737667067,0.00171572040588864,0,0,0.000896457875411809,0.00131279508610856,-0.00135323770887021,1.84401991323149e-06,-0.000260065404212654,-0.000161885584535402,0,0,0,0,0.00137440520739209,0,0,0,0,0.00151097004053502,0.00162682995287569,0.00117938403826322,0.00132021467567584,0,0,0.00198372867157524,0.00127042719118872,0.00148546238253778,0.0012377491564366,0,0.00170320319765033,0.00197474545236045,0.00182692780081942,0.00242613408039527,0.00480855387964495,0,0.00446983927831358,0.00230925482093762,0,0.00187977467538264,0,0.00203186121643727,0,0,0.000843051213892321,0.00254304660962983,0,0,0.000696834654271611,0.001085555020911,-0.00545377722766,-0.00224989877465528,-0.00300593815663928,-0.0026064623016235,0,0,0,0,0.00144118204742235,0,0,0,0,0.0019123382790062,0.00160439682045357,0.00132767752483796,0.00137585333050975,0,0,0.00278313303531781,0.00164541523827306,0.00189914802397159,0.00141007214729885,0,0.00209370648760821,0.00243298116551414,0.00225094545103785,0.00309141881276257,0.0068379194491598,0,0.00631662035954652,0.00328453363310027,0,0.00257169299784614,0,0.00242991880249413,0,0,0.000555361852344916,0.00346117831731009,0,0,0.00047530122555128,0.000833373572020618,-0.0100043830900513,-0.00474878799329138,-0.00605319198978841,-0.00531935046368593,0,0,0,0,0.00151264518405188,0,0,0,0,0.00234187393444192,0.00158038936660976,0.0014863780245022,0.00143539662120822,0,0,0.00363863838955015,0.00204671937986879,0.00234186549877096,0.00159448850595124,0,0.00251161470940565,0.00292337517052806,0.00270472002021689,0.00380339222612015,0.00900970284154386,0,0.00829300575829626,0.00432825603898166,0,0.00331216910311884,0,0.00285591146945602,0,0,0.000247482884756726,0.00444374312252547,0,0,0.000238220915104437,0.000563494407995688,-0.0148743436300534,-0.00742304550109253,-0.00931429752043128,-0.00822262503651035],"Archive315_field24":[0,0,0,0,2.01055797007838,0,0,0,0,1.38048491526373,2.63658591676332,1.49502745604263,1.95280642566734,0,0,1.1230088093301,1.06578425967314,1.30886745953623,1.52677935779276,0,1.71282001871487,1.97204343950168,1.82421856895272,2.16394516795227,2.49036190747752,0,2.41523406633191,1.19420126254924,0,1.23013745948476,0,2.21489000628486,0,0,2.06486686864356,1.70955041118222,0,0,1.66559814019723,2.35957995807624,2.86609408957446,2.75521056485314,2.94384778336577,2.73126757755212,0,0,0,0,2.0105580605495,0,0,0,0,1.38048513271486,2.63658608654102,1.49502754312023,1.95280650444959,0,0,1.12300930262691,1.06578446054,1.30886768318223,1.52677945817111,0,1.71282024321915,1.97204372209074,1.82421881959825,2.16394559009982,2.49036333805971,0,2.41523534210489,1.19420188938462,0,1.23013786492433,0,2.21489028726071,0,0,2.06486681991522,1.70955096398495,0,0,1.66559807890986,2.35957996927947,2.86609409060017,2.75521023180273,2.94384748919254,2.73126724647123,0,0,0,0,2.0105581358691,0,0,0,0,1.38048548899624,2.63658617789983,1.4950276532923,1.95280656893451,0,0,1.12301034745532,1.06578481252831,1.30886805946905,1.52677958783287,0,1.71282057546931,1.97204412483606,1.824219186023,2.16394622628035,2.49036628023621,0,2.4152379216584,1.1942032697846,0,1.23013866458812,0,2.21489063895781,0,0,2.06486673688975,1.70955201283169,0,0,1.66559799997151,2.35957992040431,2.86609910553685,2.75521127472585,2.94384917425607,2.73126860524831,0,0,0,0,2.01055819267942,0,0,0,0,1.38048598888551,2.63658619392018,1.49502778070634,1.95280661629162,0,0,1.12301204505616,1.0657853262808,1.308868596152,1.52677974060412,0,1.71282101359328,1.97204464624896,1.82421966676579,2.1639470879336,2.49037104919312,0,2.41524206645617,1.19420555519519,0,1.23013991790996,0,2.21489105470094,0,0,2.06486665067203,1.70955363040195,0,0,1.66559792676123,2.35957983694475,2.86611141892675,2.75521448412254,2.94385390929251,2.73127257582858,0,0,0,0,2.01055824594772,0,0,0,0,1.38048665090237,2.63658618170953,1.49502793030186,1.95280665983884,0,0,1.12301449116659,1.0657860214483,1.30886931354027,1.52677992231846,0,1.71282157582272,1.97204531295498,1.82422028365062,2.16394822322276,2.49037796114028,0,2.41524804556543,1.19420888203371,0,1.23014168889666,0,2.21489156415472,0,0,2.06486659167969,1.7095559024788,0,0,1.66559787634449,2.35957975852811,2.86613255843021,2.75522039394718,2.94386242464825,2.73127977585106],"Archive315_field25":[8995407.80408237,8365848.69227826,2069061.82743513,2698748.8608318,5532438.1169587,8680492.52965328,5217578.82055088,2383938.85769088,5847285.41339615,3800760.70793245,7264134.75544558,4115602.61189539,5375009.09850561,3643293.09987438,2226512.38045123,3092347.05059253,2934888.30510704,3603977.12261704,4204152.07334356,2541393.70696948,4715797.3003187,5429766.64479036,5022323.98777339,5956143.19265249,6859085.88690765,6791994.5194913,6646603.55580109,3289133.63690958,4272985.23792159,3387520.98401363,7421559.99276089,6096408.21895315,8837888.22523836,6004587.97598828,5689855.25853929,4705982.64057295,8523016.72928758,5060046.76650733,4587863.33217562,6497289.31589544,7919451.03904359,7614295.39387949,8129938.99077725,7539808.08643778,7291096.72518679,6780816.76030257,1677047.91631292,2187431.56618007,4484237.10357521,7035846.73807013,4229032.48862804,1932266.90517213,4739431.99212126,3080651.21163808,5887838.58167148,3335841.72939248,4356635.30653697,2953018.1363578,1804667.16787743,2506456.84384469,2378830.95199349,2921151.14385765,3407614.20513157,2059889.63900962,3822320.78876894,4401018.23781607,4070771.52894205,4827665.07895105,5559532.1231697,5505152.1928862,5387307.66573176,2665959.34404327,3463405.92372508,2745705.77465475,6015437.31396358,4941354.85224347,7163421.52574324,4866931.29220396,4611829.2739875,3814365.6593196,6908207.02263428,4101347.17759326,3718625.77499259,5266283.18420622,6418995.6468503,6171656.18502862,6589603.58914726,6111281.58332243,5079929.13862124,4724401.54652177,1168450.35775105,1524050.19033585,3124304.55739903,4902088.69896455,2946495.72991463,1346269.19997772,3302106.60820354,2146383.52031027,4102236.45383953,2324182.52585112,3035400.49929268,2057457.66970012,1257366.57695742,1746324.81719231,1657403.97149597,2035254.96551674,2374188.59552766,1435187.84538973,2663127.30222731,3066323.43919598,2836230.49946751,3363581.28693449,3873495.34563568,3835607.19206763,3753501.32104676,1857455.06672565,2413060.38500726,1913016.83360838,4191138.3766439,3442792.41440675,4990973.93882364,3390939.25355942,3213201.90834189,2657584.72126667,4813158.22195579,2857533.48506348,2590879.82810006,3669179.87897011,4472309.75752586,4299980.82175705,4591177.50678512,4257915.99804124,2626068.67895322,2442278.73845624,604030.253901244,787857.539107316,1615108.81703425,2534134.08780252,1523190.56779173,695953.680263433,1707023.56307304,1109572.6695979,2120650.57821102,1201485.84138805,1569149.8762589,1063602.46319066,649995.481355613,902762.377302005,856794.758184276,1052124.77827558,1227336.47232239,741920.161944474,1376703.29754688,1585135.48584621,1466188.97187314,1738802.88990197,2002402.89336118,1982816.61751493,1940371.99863102,960211.144719843,1247431.23861965,988933.792571115,2166608.41514231,1779751.0715012,2580083.30048751,1752945.58703673,1661064.29054236,1373838.0610713,2488161.48977913,1477201.54738654,1339354.97559951,1896782.04059043,2311959.92233922,2222874.50237555,2373408.58919054,2201129.09746312,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive315_field26":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive315_field27":[123.556455671619,116.327420965129,43.8376575496323,51.0880227337673,83.7309429170369,119.919332384649,80.1031213525465,47.4684278409086,87.3567541617178,63.7860883757813,103.678973745289,67.4109989006179,81.9171400661397,61.9658538201545,45.6550497859365,55.6268016199116,53.8080433870378,61.5192845893549,68.4305390947027,49.2865352620474,74.3255465995331,82.5521103866516,77.8562642653884,88.6173188408527,99.0248616078987,98.2620229960547,96.5754483343502,57.894107494971,69.2170688175812,59.0267667293977,105.492133532158,90.2307376011159,121.727590319919,89.149497810056,85.5427604063392,74.2162905898004,118.097751034732,78.2721477144563,72.8480155687001,94.8369847202617,111.20010643495,107.696588298448,113.645658123336,106.838878829584,123.556455671619,116.327420965129,43.8376575496323,51.0880227337673,83.7309429170369,119.919332384649,80.1031213525465,47.4684278409086,87.3567541617178,63.7860883757812,103.678973745289,67.4109989006179,81.9171400661397,61.9658538201545,45.6550497859365,55.6268016199117,53.8080433870378,61.5192845893549,68.4305390947027,49.2865352620474,74.3255465995331,82.5521103866516,77.8562642653884,88.6173188408527,99.0248616078987,98.2620229960547,96.5754483343502,57.894107494971,69.2170688175812,59.0267667293977,105.492133532158,90.2307376011159,121.727590319919,89.149497810056,85.5427604063392,74.2162905898004,118.097751034732,78.2721477144563,72.8480155687001,94.8369847202618,111.20010643495,107.696588298448,113.645658123336,106.838878829584,123.556455671619,116.327420965129,43.8376575496323,51.0880227337673,83.7309429170369,119.919332384649,80.1031213525465,47.4684278409086,87.3567541617178,63.7860883757812,103.678973745289,67.4109989006179,81.9171400661397,61.9658538201545,45.6550497859365,55.6268016199117,53.8080433870378,61.5192845893549,68.4305390947027,49.2865352620474,74.3255465995331,82.5521103866516,77.8562642653884,88.6173188408527,99.0248616078987,98.2620229960547,96.5754483343502,57.894107494971,69.2170688175812,59.0267667293977,105.492133532158,90.2307376011159,121.727590319919,89.149497810056,85.5427604063392,74.2162905898004,118.097751034732,78.2721477144563,72.8480155687001,94.8369847202618,111.20010643495,107.696588298448,113.645658123336,106.838878829584,123.556455671619,116.327420965129,43.8376575496323,51.0880227337673,83.7309429170369,119.919332384649,80.1031213525465,47.4684278409086,87.3567541617178,63.7860883757812,103.678973745289,67.4109989006179,81.9171400661397,61.9658538201545,45.6550497859365,55.6268016199117,53.8080433870378,61.5192845893549,68.4305390947027,49.2865352620474,74.3255465995331,82.5521103866516,77.8562642653884,88.6173188408527,99.0248616078987,98.2620229960547,96.5754483343502,57.894107494971,69.2170688175812,59.0267667293977,105.492133532158,90.2307376011159,121.727590319919,89.149497810056,85.5427604063392,74.2162905898004,118.097751034732,78.2721477144563,72.8480155687001,94.8369847202618,111.20010643495,107.696588298448,113.645658123336,106.838878829584,123.556455671619,116.327420965129,43.8376575496323,51.0880227337673,83.7309429170369,119.919332384649,80.1031213525465,47.4684278409086,87.3567541617178,63.7860883757813,103.678973745289,67.4109989006179,81.9171400661397,61.9658538201545,45.6550497859365,55.6268016199116,53.8080433870378,61.5192845893549,68.4305390947027,49.2865352620474,74.3255465995331,82.5521103866516,77.8562642653884,88.6173188408527,99.0248616078987,98.2620229960547,96.5754483343502,57.894107494971,69.2170688175812,59.0267667293977,105.492133532158,90.2307376011159,121.727590319919,89.149497810056,85.5427604063392,74.2162905898004,118.097751034732,78.2721477144563,72.8480155687001,94.8369847202617,111.20010643495,107.696588298448,113.645658123336,106.838878829584],"Archive315_field28":[999.939642377386,929.963784601493,230.005790491959,300.002978745498,615.006602741084,964.929107555714,580.005369641892,265.009972317937,650.005825520467,422.507984758968,807.508397010196,457.506306818506,597.506094122836,405.00104443599,247.509888495614,343.758522050019,326.253058049794,400.632798763353,467.349619006726,282.514785506427,524.226420255447,603.594645745278,558.300964054846,662.109216934035,762.485874785316,755.031328958909,738.864932562164,365.634210134267,474.999082502821,376.571060473288,825.008262564416,677.70075846266,982.424071258336,667.485274936156,632.505125997737,523.136745135255,947.420820438447,562.48769023645,510.003440788641,722.260020126559,880.345874683353,846.427823370255,903.751963108674,838.147656368954,999.939642377386,929.963784601493,230.005790491959,300.002978745498,615.006602741084,964.929107555714,580.005369641892,265.009972317937,650.005825520467,422.507984758968,807.508397010196,457.506306818507,597.506094122836,405.00104443599,247.509888495614,343.758522050019,326.253058049794,400.632798763353,467.349619006726,282.514785506427,524.226420255447,603.594645745278,558.300964054846,662.109216934035,762.485874785316,755.031328958909,738.864932562164,365.634210134267,474.999082502821,376.571060473288,825.008262564416,677.70075846266,982.424071258336,667.485274936156,632.505125997737,523.136745135255,947.420820438447,562.48769023645,510.003440788641,722.260020126559,880.345874683353,846.427823370255,903.751963108674,838.147656368955,999.939642377386,929.963784601493,230.005790491959,300.002978745498,615.006602741084,964.929107555714,580.005369641892,265.009972317937,650.005825520467,422.507984758968,807.508397010196,457.506306818507,597.506094122836,405.00104443599,247.509888495614,343.758522050019,326.253058049794,400.632798763353,467.349619006726,282.514785506427,524.226420255447,603.594645745278,558.300964054846,662.109216934035,762.485874785316,755.031328958909,738.864932562164,365.634210134267,474.999082502821,376.571060473288,825.008262564416,677.70075846266,982.424071258336,667.485274936156,632.505125997737,523.136745135255,947.420820438447,562.48769023645,510.003440788641,722.260020126559,880.345874683353,846.427823370255,903.751963108674,838.147656368955,999.939642377386,929.963784601493,230.005790491959,300.002978745498,615.006602741084,964.929107555714,580.005369641892,265.009972317937,650.005825520467,422.507984758968,807.508397010196,457.506306818507,597.506094122836,405.00104443599,247.509888495614,343.758522050019,326.253058049794,400.632798763353,467.349619006726,282.514785506427,524.226420255447,603.594645745278,558.300964054846,662.109216934035,762.485874785316,755.031328958909,738.864932562164,365.634210134267,474.999082502821,376.571060473288,825.008262564416,677.70075846266,982.424071258336,667.485274936156,632.505125997737,523.136745135255,947.420820438447,562.48769023645,510.003440788641,722.260020126559,880.345874683353,846.427823370255,903.751963108674,838.147656368955,999.939642377386,929.963784601493,230.005790491959,300.002978745498,615.006602741084,964.929107555714,580.005369641892,265.009972317937,650.005825520467,422.507984758968,807.508397010196,457.506306818506,597.506094122836,405.00104443599,247.509888495614,343.758522050019,326.253058049794,400.632798763353,467.349619006726,282.514785506427,524.226420255447,603.594645745278,558.300964054846,662.109216934035,762.485874785316,755.031328958909,738.864932562164,365.634210134267,474.999082502821,376.571060473288,825.008262564416,677.70075846266,982.424071258336,667.485274936156,632.505125997737,523.136745135255,947.420820438447,562.48769023645,510.003440788641,722.260020126559,880.345874683353,846.427823370255,903.751963108674,838.147656368954],"Archive315_field29":[253.043558008786,253.046665842367,253.155164701713,253.128418071526,253.069639808833,253.045122020861,253.0728791922,253.141386339775,253.065757278206,253.096975919987,253.053845150239,253.091260443493,253.071389636342,253.100452523486,253.147778797994,253.116150534176,253.121163097037,253.102213885792,253.089626124366,253.136028724148,253.080646672011,253.070846988936,253.076326211801,253.065029951962,253.056949666634,253.057084813883,253.058609883974,253.110594304362,253.08700575363,253.107552236105,253.052368483919,253.063662579702,253.044218285579,253.064413516679,253.068045687949,253.080839884697,253.045946040911,253.075815021817,253.082730160168,253.059927668073,253.049582606359,253.051408549214,253.04822851388,253.051865210785,252.990018297246,252.989328562025,252.974987477016,252.975813993214,252.984509170273,252.989695193014,252.983896306472,252.975189538738,252.985317421345,252.979520097231,252.987767090814,252.980593457789,252.9841694776,252.978998098629,252.975005050503,252.976970592265,252.976406462512,252.97878787944,252.980871452379,252.975543946425,252.982423178602,252.984277226252,252.983244617116,252.98543776046,252.987106899753,252.987094122243,252.986764694213,252.977650546793,252.981167709819,252.978090420867,252.98809340086,252.985716647974,252.989882895645,252.985602508754,252.984850955427,252.982451508113,252.989512848979,252.98339108897,252.982078982518,252.986500715672,252.988689804993,252.988296533215,252.988979940806,252.988192170714,253.002499022866,253.002671937346,253.004945940539,253.005327547671,253.003795658076,253.002586376737,253.003954978952,253.00521933469,253.003626501329,253.004855047253,253.003042059333,253.004617873966,253.003866933063,253.004953222902,253.005120610968,253.005251421773,253.005310933162,253.004975572834,253.004563912841,253.005224898447,253.004250811816,253.003849867171,253.004071385471,253.003580214235,253.003189667282,253.003203901545,253.003275578394,253.005161298095,253.00454359681,253.005084629588,253.002972029098,253.003514721111,253.002536078299,253.003559416596,253.003724789586,253.004246345916,253.002621481114,253.004046696247,253.004330099779,253.003344018518,253.002832111051,253.002924307873,253.002759454879,253.002945309995,252.999421994859,252.999379281849,252.999036152823,252.998855323234,252.999106984697,252.999419496927,252.999100623834,252.998940641338,252.999167516061,252.998889850883,252.999281903471,252.998932281978,252.999086182522,252.998885296508,252.998978759635,252.998843556304,252.998838661444,252.998873289946,252.998943660034,252.998926875511,252.999008153992,252.999098618371,252.999046898714,252.999152182192,252.999239440331,252.999254251108,252.999226300501,252.99885300985,252.99896126281,252.998863122782,252.999309825884,252.999165221895,252.999421577398,252.99918361886,252.999135750695,252.999022308905,252.999405081636,252.999073749939,252.999006059835,252.999219275866,252.999340195815,252.999316842716,252.999352862669,252.999307089792,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive315_field30":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive316.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive316.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive316.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive316_field1":[0,0,0,0,11.1666777030936,0,0,0,0,14.6801679155055,14.8173674069677,0.719925017032651,12.3804734028856,0,0,8.71083567603626,19.6988377526476,5.93592802568336,12.2257331251905,0,9.41480889906524,7.83655710779644,12.7499423470256,10.7534334877628,10.4009206620105,0,6.7637133271499,-0.252175611421558,0,-10.3448601211847,0,10.5886089349864,0,0,10.8472191457535,12.3297523079076,0,0,-0.740855071236887,9.28766710312124,11.3430470708857,-12.9787767007806,20.4010911744302,6.7237238841848],"Archive316_field2":[0,0,0,0,111.724363051545,0,0,0,0,100.245009077106,105.684263657701,93.0668895668176,104.875811122665,0,0,79.3954720747423,46.4337931064369,93.020340720494,104.821489673309,0,109.206012663211,102.788734278426,108.942410595766,110.348401412465,111.725011324695,0,101.555828718034,77.1738812086802,0,60.8501616575992,0,112.473156409856,0,0,81.7931182675926,82.1664052380944,0,0,67.1821633295514,85.9426037361815,91.1832387783015,56.8226916091511,49.1821396012698,102.832484349879],"Archive316_field3":[0,0,0,0,112.281022395587,0,0,0,0,101.314210133113,106.717936457484,93.0696740387134,105.604033447196,0,0,79.8718952081775,50.4394820657045,93.2095436598791,105.53204843923,0,109.611093546244,103.087028873009,109.685960160218,110.871123499594,112.208098219873,0,101.780814324599,77.1742932157495,0,61.7232395835056,0,112.970480887593,0,0,82.5092501428319,83.0863463014538,0,0,67.1862481157796,86.4429979649753,91.8860585233313,58.286078323708,53.2455385630214,103.052065968804],"Archive316_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive316_field5":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive316_field6":[123.332540883617,116.117533509983,43.9004628757745,51.1716815105102,83.7862105173549,119.143757455677,80.1623501438132,47.6996216438258,87.395955082299,63.9339127792499,103.607959343133,67.4964995107178,81.9630297897729,62.0398913886552,45.8327093643685,55.8361143742987,53.9042555008065,61.6754796400372,68.5025941396148,49.5322065224968,74.416858685697,82.6274584550697,77.9104550896789,88.7444269966655,99.1425929635776,98.2871297099248,96.6343316805396,58.086121133876,69.2267547554428,59.1485926656236,105.34605926658,90.3120823479485,121.190880298616,89.1275861929655,85.5923676472089,74.3208415045236,117.540371327708,78.2242500967671,72.9197502369182,94.8397484004136,110.888455757735,107.521127630789,113.504151428785,106.676782217414],"Archive316_field7":[999.715727589384,929.753897146346,230.068595818101,300.08663752224,615.061870341402,964.153532626742,580.064598433158,265.241166120854,650.045026441048,422.655809162437,807.43738260804,457.591807428606,597.551983846469,405.075082004491,247.687548074046,343.967834804406,326.349270163563,400.788993814035,467.421674051638,282.760456766876,524.317732341611,603.669993813696,558.355154879137,662.236325089848,762.603606140995,755.056435672779,738.923815908353,365.826223773172,475.008768440682,376.692886409514,824.862188298838,677.782103209493,981.887361237033,667.463363319065,632.554733238607,523.241296049978,946.863440731423,562.439792618761,510.07517545686,722.262783806711,880.034224006138,846.252362702596,903.610456414122,837.985559756785],"Archive316_field8":[0,0,0,0,11.1042168679511,0,0,0,0,14.553591208643,14.7385686424772,0.705545486868064,12.2239519309954,0,0,8.59604553081784,19.5578229168249,5.85143044725301,12.16834486049,0,9.45316920747333,7.78697729614989,12.6274593630852,10.6420190716338,10.1993165935982,0,6.63106694687082,-0.324337806169484,0,-10.3758878714721,0,10.5137588571952,0,0,10.7478280159332,12.0462704465159,0,0,-0.73852219462522,9.10660500957747,11.3103446978311,-12.9601621907143,20.2370802757228,6.50707024403359],"Archive316_field9":[0,0,0,0,110.303241915188,0,0,0,0,99.2881291187943,104.202940543334,91.8707446075377,103.719842074703,0,0,78.4599946974826,46.0418719561956,91.8144480140349,103.651027536961,0,107.966587011924,101.727583210845,107.613833239785,108.875147411307,110.259522541518,0,100.311844969334,76.3096379122359,0,60.1451459220582,0,111.202318644421,0,0,80.3986874262395,80.8468405372642,0,0,66.2562561021266,84.3993934792385,89.413140436383,55.5456358088495,48.2934076215684,101.306480022181],"Archive316_field10":[0,0,0,0,110.860763163759,0,0,0,0,100.349088690325,105.240097983167,91.8734537784308,104.437687837354,0,0,78.9294797062345,50.023618526418,92.0007179450299,104.362848399762,0,108.379639781042,102.025184152395,108.352156575339,109.394013975879,110.730250474114,0,100.530777824532,76.310327173385,0,61.0335778658522,0,111.698230949297,0,0,81.1138998379578,81.7393678500661,0,0,66.260371925477,84.8892683115115,90.1256543936304,57.0375618467249,52.3621298057004,101.515244459369],"Archive316_field11":[8993212.75077676,8363852.21533219,2069644.1722026,2699510.37122345,5532955.12136107,8673303.42419767,5218127.71264705,2386048.524955,5847655.54750758,3802114.44838917,7263520.98334393,4116390.65351203,5375440.20972655,3643962.27044354,2228140.21433806,3094255.52929843,2935762.97405928,3605405.60688248,4204817.87278351,2543648.03416976,4716641.72706669,5430476.42024943,5022834.55160709,5957325.6661535,6860206.64201498,6792314.03233212,6647188.69543389,3290888.56903199,4273069.62887564,3388642.56677611,7420270.52763304,6097171.91058886,8832832.86759526,6004346.89984475,5690316.89262586,4706958.35376751,8517765.73422851,5059579.01324607,4588518.96111955,6497309.88268489,7916585.4712877,7612691.61682913,8128671.83549647,7538325.35889329],"Archive316_field12":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive316_field13":[123.052793782817,115.877974732512,43.9687806562416,51.2578682091805,83.8475000459932,118.313763907328,80.2253237730405,47.9379165593664,87.4387609472323,64.0878195566703,103.545067063791,67.5873368396111,82.0146748808238,62.1133573924843,46.018411518999,56.0516092981167,54.002939729888,61.8373485359409,68.579701813279,49.7900641440619,74.515162550124,82.7114130218935,77.9710153841969,88.8825544587709,99.2769313688217,98.3392683607725,96.7089260542183,58.2843710376793,69.2354179401883,59.2770228713786,105.210924220097,90.4021731707596,120.590022864206,89.0944547084276,85.6471450941564,74.4345956094485,116.916548874831,78.1662107937095,72.9943997129489,94.8397922207138,110.560373351274,107.338401129887,113.365191728792,106.50790713424],"Archive316_field14":[999.435980488584,929.514338368875,230.136913598568,300.172824220911,615.12315987004,963.323539078393,580.127572062386,265.479461036395,650.087832305981,422.809715939857,807.374490328698,457.6826447575,597.60362893752,405.14854800832,247.873250228676,344.183329728224,326.447954392645,400.950862709939,467.498781725302,283.018314388441,524.416036206038,603.75394838052,558.415715173655,662.374452551953,762.737944546239,755.108574323627,738.998410282032,366.024473676975,475.017431625428,376.821316615269,824.727053252355,677.872194032304,981.286503802622,667.430231834527,632.609510685554,523.355050154903,946.239618278546,562.381753315704,510.14982493289,722.262827627011,879.706141599677,846.069636201694,903.471496714129,837.81668467361],"Archive316_field15":[0,0,0,0,10.9661750741266,0,0,0,0,14.4165663025516,14.7307202754213,0.656660590571867,12.0147213118405,0,0,8.48522092060843,19.4537197527349,5.76457105964473,12.071256330261,0,9.42403118301883,7.71523087880361,12.4586481539055,10.4673628859984,10.0275229604887,0,6.37519931646423,-0.392281716465846,0,-10.394612677982,0,10.3703859647122,0,0,10.5643349502778,11.8066726695472,0,0,-0.797240286345834,9.00582379851903,11.2720287153151,-12.9447379235075,20.0829818896609,6.25670039174192],"Archive316_field16":[0,0,0,0,108.593530557954,0,0,0,0,98.0650877752701,102.263706145692,90.6139824703051,102.201809575258,0,0,77.3622786331763,45.5959539122885,90.4592341736484,102.228976667179,0,106.472908419404,100.442990073792,106.020095087873,107.128250113264,108.444947996626,0,98.6326540829982,75.2607463492474,0,59.4086705792087,0,109.554190852093,0,0,79.0540931382162,79.5950203049128,0,0,65.4155996302343,82.8571912367855,87.0061804506053,54.1021607702037,47.25823395076,99.1369254126832],"Archive316_field17":[0,0,0,0,109.145828480972,0,0,0,0,99.1191143237635,103.319212707439,90.616361780089,102.905604359814,0,0,77.8262239183474,49.5725551630082,90.6427235181327,102.939200015395,0,106.889160306485,100.738865600508,106.749606445478,107.63841162948,108.907566140806,0,98.8384723565729,75.2617686876333,0,60.3111773447858,0,110.043925949205,0,0,79.7568480749297,80.4659230784393,0,0,65.4204575576882,83.3451798362641,87.7333121907647,55.6292192998721,51.3484842787517,99.3341647172408],"Archive316_field18":[8990696.21019979,8361697.19966858,2070258.74324259,2700285.68694174,5533506.46786411,8665836.99313524,5218694.20893165,2388192.17120737,5848040.61922317,3803498.95836029,7262955.21886419,4117207.80523017,5375904.79708727,3644623.1537168,2229810.74820962,3096194.07206927,2936650.71468672,3606861.74224019,4205511.51568102,2545967.66202611,4717526.04602119,5431231.65622303,5023379.33808771,5958568.22903328,6861415.11941072,6792783.05964325,6647859.72926279,3292671.97956913,4273147.56089307,3389797.89536814,7419054.88383594,6097982.34690998,8827427.69231251,6004048.85663009,5690809.65793979,4707981.65953197,8512153.97092159,5059056.90502481,4589190.49063655,6497310.27688224,7913634.11741813,7611047.85125411,8127421.78599606,7536806.19748633],"Archive316_field19":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive316_field20":[122.777582359709,115.644700875962,44.0369700539004,51.3433502858413,83.908138259396,117.506821904688,80.2868588502408,48.1728230644382,87.479998528606,64.2393308929036,103.481154486328,67.676954430529,82.0655211860421,62.185624451747,46.2018535350199,56.2642539527748,54.1006019110498,61.9968343372755,68.6556008446447,50.044752382189,74.6119667291327,82.7931453937087,78.0300101071049,89.0178892597822,99.4052837286212,98.387116163502,96.7795927235038,58.4794828655802,69.2444595365742,59.4037325189706,105.077325651178,90.490294003899,120.00448591182,89.063157507559,85.7006951489026,74.5461157842281,116.308734180617,78.1096808643994,73.068196989956,94.8381219246494,110.237579188025,107.157998340768,113.227746079922,106.34073501435],"Archive316_field21":[999.160769065477,929.281064512325,230.205102996227,300.258306297572,615.183798083443,962.516597075753,580.189107139586,265.714367541467,650.129069887355,422.96122727609,807.310577751236,457.772262348417,597.654475242738,405.220815067583,248.056692244697,344.395974382882,326.545616573806,401.110348511274,467.574680756668,283.273002626568,524.512840385047,603.835680752335,558.474709896563,662.509787352964,762.866296906039,755.156422126356,739.069076951317,366.219585504876,475.026473221814,376.948026262861,824.593454683436,677.960314865443,980.700966850236,667.398934633659,632.6630607403,523.466570329683,945.631803584331,562.325223386394,510.223622209897,722.261157330947,879.383347436428,845.889233412575,903.334051065259,837.64951255372]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive317.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive317.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive317.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive317_field1":[0,0,0,0,13.6822174235912,0,0,0,0,21.3865246800407,23.1968538959329,-3.73964535669126,12.8615685648622,10.6791089388232,0,0,15.8088522622201,11.4383537975811,5.99252862190109,0,0,9.60421882394534,0,0,0,0,0,0,0,0,13.68222675244,0,0,0,0,21.3865738892563,23.1971227087034,-3.73963421550459,12.861568543619,10.6791663743674,0,0,15.8088755281671,11.4383788722014,5.99251486141918,0,0,9.60426094680161,0,0,0,0,0,0,0,0,13.6822298026965,0,0,0,0,21.3865924603456,23.1972050366472,-3.73963260002386,12.8615695384074,10.6791851036549,0,0,15.8088848296084,11.438386367955,5.99251936230766,0,0,9.60427548260716,0,0,0,0],"Archive317_field2":[0,0,0,0,115.963127300335,0,0,0,0,104.056956221032,107.725748763366,100.040228248479,106.171775685601,108.366816980122,0,0,114.175730737825,112.508811713071,85.8910602965378,0,0,96.6047352075007,0,0,0,0,0,0,0,0,115.963185826141,0,0,0,0,104.057254983494,107.726876842845,100.040668020639,106.171867529993,108.367407328186,0,0,114.176074597514,112.509010962407,85.8920806122523,0,0,96.6050901011496,0,0,0,0,0,0,0,0,115.963204953077,0,0,0,0,104.057360421146,107.727235133161,100.040821234765,106.171899514812,108.36759508021,0,0,114.176185320687,112.509079735835,85.8924084607115,0,0,96.60521656789,0,0,0,0],"Archive317_field3":[0,0,0,0,0.0736217413848686,0,0,0,0,0.0666344099180941,0.0690501634155786,0.0625374577683594,0.0674263084584014,0.0686669046678761,0,0,0.0726335141116213,0.0713133201384169,0.0542700124624333,0,0,0.0612190507431308,0,0,0,0,0,0,0,0,0.0739252967116738,0,0,0,0,0.121659581456692,-0.10144373403483,0.107153637953889,0.110605757070473,-0.0878230032944896,0,0,0.000954905544156684,0.0971333854412981,-0.0250126610564758,0,0,0.109396851648877,0,0,0,0,0,0,0,0,0.0742286288346284,0,0,0,0,0.17668454810631,-0.271938635527392,0.151769557961244,0.153785991200802,-0.244313473306763,0,0,-0.0707232090418256,0.122954064991471,-0.104295973832093,0,0,0.157574557815996,0,0,0,0],"Archive317_field4":[0,0,0,0,116.767527108615,0,0,0,0,106.232000903779,110.194989655711,100.110119999605,106.947980086065,108.89175866554,0,0,115.265010193867,113.088786960845,86.099869822097,0,0,97.0809952127692,0,0,0,0,0,0,0,0,116.767586516134,0,0,0,0,106.232352221318,110.196174103765,100.110596861589,106.948107200839,108.892365565104,0,0,115.265331114234,113.08900695407,86.1008732354045,0,0,97.0813948676915,0,0,0,0,0,0,0,0,116.767606061153,0,0,0,0,106.232536505115,110.196830542304,100.110807604914,106.948192447117,108.892792906692,0,0,115.265463759584,113.089101258297,86.1012601367685,0,0,97.081588395617,0,0,0,0],"Archive317_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4272990.75,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2136495.375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive317_field6":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-680.299364613881,-656.769305962854,-829.323069403714,-652.847629521017,-564.609909579668,-629.31757086999,-343.035190615836,-201.854838709677,-374.408602150538,-719.516129032258,-860.696480938416,-233.228250244379,-405.782013685239,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-680.299364613881,-656.769305962854,-829.323069403715,-652.847629521017,-564.609909579668,-629.31757086999,-343.035190615836,-201.854838709677,-374.408602150538,-719.516129032258,-860.696480938416,-233.228250244379,-405.782013685239,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-680.299364613881,-656.769305962854,-829.323069403714,-652.847629521017,-564.609909579668,-629.31757086999,-343.035190615836,-201.854838709677,-374.408602150538,-719.516129032258,-860.696480938416,-233.228250244379,-405.782013685239],"Archive317_field7":[123.310396775336,116.585863809007,43.9278402653205,51.1785599662432,83.7995302190987,119.461437743915,80.1722748012368,47.6570447134882,87.3298533861654,63.9271025019408,103.596795460119,67.5451740850131,82.0250716887682,100.83926810692,98.1552009379869,117.807968804703,97.7752754975478,87.6645878107944,95.0146260656163,61.9564587058302,45.8495925836511,65.7614362756383,105.487142619729,121.203790430327,49.4945964678948,69.1783600685407,123.310396775336,116.585863809007,43.9278402653205,51.1785599662432,83.7995302190987,119.461437743915,80.1722748012368,47.6570447134882,87.3298533861654,63.9271025019408,103.596795460119,67.5451740850131,82.0250716887682,100.83926810692,98.1552009379869,117.807968804703,97.7752754975478,87.6645878107944,95.0146260656163,61.9564587058302,45.8495925836511,65.7614362756383,105.487142619729,121.203790430327,49.4945964678948,69.1783600685407,123.310396775336,116.585863809007,43.9278402653205,51.1785599662432,83.7995302190987,119.461437743915,80.1722748012368,47.6570447134882,87.3298533861654,63.9271025019408,103.596795460119,67.5451740850131,82.0250716887682,100.83926810692,98.1552009379869,117.807968804703,97.7752754975478,87.6645878107944,95.0146260656163,61.9564587058302,45.8495925836511,65.7614362756383,105.487142619729,121.203790430327,49.4945964678948,69.1783600685407],"Archive317_field8":[999.693583481103,930.222227445371,230.095973207647,300.093515977973,615.075190043146,964.471212914981,580.074523090582,265.198589190517,649.978924744914,422.648998885128,807.426218725026,457.640482002902,597.614025745464,781.138632720801,754.924506900841,947.131038208417,750.622905018564,652.274497390462,724.332196935606,404.991649321666,247.704431293328,440.170038426176,825.003271651987,981.900271368744,282.722846712274,474.96037375378,999.693583481103,930.222227445371,230.095973207647,300.093515977973,615.075190043146,964.471212914981,580.074523090582,265.198589190517,649.978924744914,422.648998885127,807.426218725027,457.640482002902,597.614025745464,781.138632720801,754.924506900841,947.131038208417,750.622905018564,652.274497390462,724.332196935606,404.991649321666,247.704431293328,440.170038426176,825.003271651987,981.900271368744,282.722846712274,474.96037375378,999.693583481103,930.222227445371,230.095973207647,300.093515977973,615.075190043146,964.471212914981,580.074523090582,265.198589190517,649.978924744914,422.648998885128,807.426218725026,457.640482002902,597.614025745464,781.138632720801,754.924506900841,947.131038208417,750.622905018564,652.274497390462,724.332196935606,404.991649321666,247.704431293328,440.170038426176,825.003271651987,981.900271368744,282.722846712274,474.96037375378],"Archive317_field9":[253.005565856783,253.006034526659,253.022302522637,253.017887742501,253.00922229597,253.005761596343,253.009561741012,253.019848050411,253.008505647484,253.01294052979,253.007013881255,253.011993248092,253.009491630843,253.007255004403,253.007375897699,253.005871364835,253.007588219607,253.008723365506,253.007805160533,253.013529613084,253.021713604536,253.012742663639,253.006784838922,253.005707389299,253.019153716702,253.011638851953,252.998623940245,252.998480863799,252.994549368969,252.995600408305,252.997698263893,252.998579195696,252.997634697774,252.995135001658,252.997892548655,252.996793398882,252.998260148888,252.997026154448,252.997637560954,252.998197323961,252.998172712192,252.998548327072,252.998111795101,252.997829337266,252.998068145109,252.996651691133,252.994692346004,252.996841892753,252.998317663453,252.998590427653,252.995298669414,252.997117204185,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive317_field10":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive317_field11":[1000000000000],"Archive317_field12":[0],"Archive317_field13":[0],"Archive317_field14":[0],"Archive317_field15":[0,0,0,0,13.5765736334968,0,0,0,0,21.4279886674546,23.2895695491091,-3.93182173563914,12.7388155151777,10.6655152144236,0,0,15.8790984942667,11.3600163580569,5.95531376454401,0,0,9.52123908020961,0,0,0,0,0,0,0,0,13.5765829893316,0,0,0,0,21.4280375431362,23.2898359371943,-3.93181181621939,12.7388150661403,10.6655744049024,0,0,15.8791219690544,11.3600412713061,5.95529988272321,0,0,9.52128259149415,0,0,0,0,0,0,0,0,13.5765860295742,0,0,0,0,21.4280559426014,23.2899175556442,-3.9318105979604,12.7388158652454,10.6655937611104,0,0,15.879131334142,11.3600487528237,5.95530420190221,0,0,9.52129759876331,0,0,0,0],"Archive317_field16":[0,0,0,0,114.94957450373,0,0,0,0,103.20897633979,106.385562713264,99.1450398151036,105.095159341329,107.151252627363,0,0,113.032675514859,111.325804510762,84.6977400365064,0,0,95.4778950763843,0,0,0,0,0,0,0,0,114.949634141003,0,0,0,0,103.209266711212,106.38666550228,99.1454793631395,105.095249133333,107.151856181581,0,0,113.033017577975,111.326003914925,84.6987478888151,0,0,95.47825989988,0,0,0,0,0,0,0,0,114.94965357745,0,0,0,0,103.209369149424,106.387015935909,99.145632410781,105.095280275943,107.152048306234,0,0,113.03312777849,111.32607259237,84.6990717736748,0,0,95.4783897128737,0,0,0,0],"Archive317_field17":[0,0,0,0,0.0729791395406121,0,0,0,0,0.0661049307948608,0.0682150541956389,0.0619636964837649,0.0667430627563003,0.0679033239969907,0,0,0.0719206936201539,0.0705661087359808,0.0535189054980583,0,0,0.0605067883390405,0,0,0,0,0,0,0,0,0.0731953189216748,0,0,0,0,0.120747483731756,-0.100614434171664,0.106244327126352,0.108804625654745,-0.0867137876073371,0,0,0.0011001678286755,0.0956297452747603,-0.0246690949320267,0,0,0.107927289962104,0,0,0,0,0,0,0,0,0.0734112790380871,0,0,0,0,0.17538983506559,-0.269444908029612,0.150524699720471,0.150866979415812,-0.241331466371881,0,0,-0.0697198792372003,0.120693976294509,-0.102857725720342,0,0,0.155347690128504,0,0,0,0],"Archive317_field18":[0,0,0,0,115.748578203661,0,0,0,0,105.409941966125,108.904989127653,99.2229911945765,105.864415137219,107.680772495666,0,0,114.142615510703,111.903930678057,84.9068654091,0,0,95.9514778568366,0,0,0,0,0,0,0,0,115.748638663146,0,0,0,0,105.410284640404,108.906148485473,99.2234675374829,105.864539096589,107.681392449326,0,0,114.142934860206,111.904150192921,84.9078565221763,0,0,95.9518868183218,0,0,0,0,0,0,0,0,115.748658458792,0,0,0,0,105.410465435343,108.906795105056,99.2236777104999,105.864621695697,107.681821062681,0,0,114.143066579521,111.904243501058,84.9082386295409,0,0,95.9520825361932,0,0,0,0],"Archive317_field19":[8993013.54747181,8368065.20698624,2069890.45290215,2699572.24822917,5533074.94233443,8676161.2030042,5218216.99258256,2385665.51268237,5847060.91185256,3802053.18470086,7263420.55562003,4116828.51878724,5375998.32438027,7026943.4780708,6791127.23144338,8520172.97958413,6752431.01027885,5867711.3553902,6515925.84722742,3643211.72921836,2228292.09189559,3959668.42657304,7421539.6810288,8832949.0041708,2543309.70276887,4272634.28140304,4496506.7737359,4184032.60349312,1034945.22645108,1349786.12411459,2766537.47116721,4338080.6015021,2609108.49629128,1192832.75634119,2923530.45592628,1901026.59235043,3631710.27781001,2058414.25939362,2687999.16219014,3513471.7390354,3395563.61572169,4260086.48979207,3376215.50513943,2933855.6776951,3257962.92361371,1821605.86460918,1114146.04594779,1979834.21328652,3710769.8405144,4416474.5020854,1271654.85138444,2136317.14070152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive317_field20":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-680.299364613881,-656.769305962854,-829.323069403714,-652.847629521017,-564.609909579668,-629.31757086999,-343.035190615836,-201.854838709677,-374.408602150538,-719.516129032258,-860.696480938416,-233.228250244379,-405.782013685239,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-680.299364613881,-656.769305962854,-829.323069403715,-652.847629521017,-564.609909579668,-629.31757086999,-343.035190615836,-201.854838709677,-374.408602150538,-719.516129032258,-860.696480938416,-233.228250244379,-405.782013685239,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-680.299364613881,-656.769305962854,-829.323069403714,-652.847629521017,-564.609909579668,-629.31757086999,-343.035190615836,-201.854838709677,-374.408602150538,-719.516129032258,-860.696480938416,-233.228250244379,-405.782013685239],"Archive317_field21":[123.007132426392,116.80484986842,44.0230303164833,51.2712975738032,83.8739344583539,118.93913866547,80.2456033834313,47.8532740108779,87.308649202054,64.0749644917439,103.523183474261,67.68439584702,82.1365162384401,100.72901228738,98.0811090248989,117.444088598965,97.7730246864783,87.7496724400775,94.9722461932918,61.9490788512801,46.052619929971,65.929202806205,105.488401940071,120.612585457595,49.7156682836494,69.1400039579626,123.007132426392,116.80484986842,44.0230303164833,51.2712975738032,83.8739344583539,118.93913866547,80.2456033834313,47.8532740108779,87.308649202054,64.0749644917439,103.523183474261,67.6843958470199,82.1365162384401,100.72901228738,98.0811090248989,117.444088598965,97.7730246864783,87.7496724400774,94.9722461932918,61.9490788512801,46.052619929971,65.929202806205,105.488401940071,120.612585457595,49.7156682836494,69.1400039579626,123.007132426392,116.80484986842,44.0230303164833,51.2712975738032,83.8739344583539,118.93913866547,80.2456033834313,47.8532740108779,87.308649202054,64.0749644917439,103.523183474261,67.68439584702,82.1365162384401,100.72901228738,98.0811090248989,117.444088598965,97.7730246864783,87.7496724400775,94.9722461932918,61.9490788512801,46.052619929971,65.929202806205,105.488401940071,120.612585457595,49.7156682836494,69.1400039579626],"Archive317_field22":[999.390319132159,930.441213504784,230.19116325881,300.186253585533,615.149594282401,963.948913836535,580.147851672776,265.394818487906,649.957720560803,422.796860874931,807.352606739168,457.779703764908,597.725470295136,781.02837690126,754.850414987753,946.76715800268,750.620654207495,652.359582019745,724.289817063282,404.984269467116,247.907458639648,440.337804956743,825.004530972329,981.309066396011,282.943918528029,474.922017643202,999.390319132159,930.441213504784,230.19116325881,300.186253585533,615.149594282401,963.948913836535,580.147851672776,265.394818487906,649.957720560803,422.796860874931,807.352606739168,457.779703764909,597.725470295136,781.02837690126,754.850414987753,946.76715800268,750.620654207495,652.359582019745,724.289817063282,404.984269467116,247.907458639648,440.337804956743,825.004530972329,981.309066396011,282.943918528029,474.922017643202,999.390319132159,930.441213504784,230.19116325881,300.186253585533,615.149594282401,963.948913836535,580.147851672776,265.394818487906,649.957720560803,422.796860874931,807.352606739168,457.779703764908,597.725470295136,781.02837690126,754.850414987753,946.76715800268,750.620654207495,652.359582019745,724.289817063282,404.984269467116,247.907458639648,440.337804956743,825.004530972329,981.309066396011,282.943918528029,474.922017643202],"Archive317_field23":[253.011107305928,253.012074125143,253.04427096664,253.035603099672,253.01842815324,253.011462199617,253.019080460383,253.039312278779,253.01697799569,253.025924439597,253.014064949392,253.024005844026,253.018955961964,253.014533349319,253.01474292047,253.01170429713,253.015193451396,253.017433898461,253.015582869889,253.026976638637,253.042792979932,253.025440097988,253.013554060439,253.011325619504,253.037790523288,253.023220363142,252.997264201369,252.996957392511,252.989322167461,252.991311243373,252.995422160763,252.997200611017,252.995292380622,252.990550467918,252.995802989711,252.993578636917,252.996525158206,252.994042328747,252.995301245587,252.996416090991,252.996352407427,252.997123395183,252.996232820318,252.995674213473,252.996146175131,252.993357289766,252.989894291657,252.993715043618,252.996643000051,252.997253779891,252.991023935159,252.994279008485,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive317_field24":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive317_field25":[1000000000000],"Archive317_field26":[0],"Archive317_field27":[0],"Archive317_field28":[0],"Archive317_field29":[0,0,0,0,13.4028490523192,0,0,0,0,21.3667342007148,23.3540735625493,-4.08986255267635,12.5563179574896,10.5724135238361,0,0,15.8581525391047,11.210557235616,5.8696525896997,0,0,9.40535569691945,0,0,0,0,0,0,0,0,13.4028581712327,0,0,0,0,21.366782087494,23.3543376092022,-4.08985380446542,12.5563171311719,10.5724730890008,0,0,15.8581765598131,11.2105820215527,5.86963797603076,0,0,9.40539966280794,0,0,0,0,0,0,0,0,13.4028611170288,0,0,0,0,21.3668000936571,23.3544185143835,-4.08985295127984,12.556317746941,10.5724926104156,0,0,15.8581860807181,11.2105894897853,5.86964185371843,0,0,9.40541481819095,0,0,0,0],"Archive317_field30":[0,0,0,0,113.58087198294,0,0,0,0,102.078032338503,104.556077769534,97.9937233741331,103.738524888857,105.613088643948,0,0,111.507492999663,109.75737402522,83.372232464994,0,0,94.2266897654231,0,0,0,0,0,0,0,0,113.580930767369,0,0,0,0,102.078312219314,104.557153046735,97.9941561276693,103.73861179552,105.613693716954,0,0,111.507835418218,109.757572811995,83.3732175813941,0,0,94.2270572110498,0,0,0,0,0,0,0,0,113.580949857001,0,0,0,0,102.078410950547,104.557494790618,97.9943067709952,103.738641826824,105.613886411496,0,0,111.507945772346,109.757641102793,83.3735341390928,0,0,94.2271878291564,0,0,0,0],"Archive317_field31":[0,0,0,0,0.0721094200081301,0,0,0,0,0.0653914551580789,0.0670711552805071,0.0612313646414144,0.0658803678389532,0.0669323321396965,0,0,0.0709623783333589,0.069572593026467,0.0526818146139469,0,0,0.0597144260108309,0,0,0,0,0,0,0,0,0.0720740673864597,0,0,0,0,0.119481886390692,-0.0994399957381137,0.105046518115883,0.106808939959516,-0.0853710508282154,0,0,0.00131410825651364,0.0936254400838564,-0.0243361871856739,0,0,0.106290751610011,0,0,0,0,0,0,0,0,0.0720385037390011,0,0,0,0,0.173572121000172,-0.265952113405741,0.148861418320855,0.14773829636005,-0.237674996378073,0,0,-0.0683336990260029,0.117678866217677,-0.101354804376685,0,0,0.152866971139778,0,0,0,0],"Archive317_field32":[0,0,0,0,114.368947021876,0,0,0,0,104.290298170764,107.132584441213,98.0790525326684,104.495679369955,106.140967117181,0,0,112.62951226336,110.328430546214,83.5786141491611,0,0,94.6949488924702,0,0,0,0,0,0,0,0,114.3690064476,0,0,0,0,104.290629867881,107.133716572868,98.0795216856552,104.495799366816,106.141588342989,0,0,112.629832305591,110.328648612069,83.5795827465905,0,0,94.6953597131109,0,0,0,0,0,0,0,0,114.369025728503,0,0,0,0,104.29080618977,107.134351687784,98.0797288761183,104.495879105543,106.142013794452,0,0,112.629963622624,110.328740342095,83.5799567069149,0,0,94.6955549242108,0,0,0,0],"Archive317_field33":[8990285.45113951,8370035.15520993,2070746.7607087,2700406.49441713,5533744.26575779,8671462.72062329,5218876.63964241,2387430.74630895,5846870.16388925,3803383.31715287,7262758.359126,4118080.92573725,5377000.85391688,7025951.64207705,6790460.71763438,8516899.59694577,6752410.76250016,5868476.75714576,6515544.60764336,3643145.3417442,2230118.47920679,3961177.61569572,7421551.00958495,8827630.66021324,2545298.41397688,4272289.23865419,4495142.72556975,4185017.57760496,1035373.38035435,1350203.24720857,2766872.1328789,4335731.36031164,2609438.31982121,1193715.37315448,2923435.08194463,1901691.65857644,3631379.179563,2059040.46286863,2688500.42695844,3512975.82103853,3395230.35881719,4258449.79847288,3376205.38125008,2934238.37857288,3257772.30382168,1821572.6708721,1115059.23960339,1980588.80784786,3710775.50479247,4413815.33010662,1272649.20698844,2136144.61932709,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive317_field34":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-680.299364613881,-656.769305962854,-829.323069403714,-652.847629521017,-564.609909579668,-629.31757086999,-343.035190615836,-201.854838709677,-374.408602150538,-719.516129032258,-860.696480938416,-233.228250244379,-405.782013685239,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-680.299364613881,-656.769305962854,-829.323069403715,-652.847629521017,-564.609909579668,-629.31757086999,-343.035190615836,-201.854838709677,-374.408602150538,-719.516129032258,-860.696480938416,-233.228250244379,-405.782013685239,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-680.299364613881,-656.769305962854,-829.323069403714,-652.847629521017,-564.609909579668,-629.31757086999,-343.035190615836,-201.854838709677,-374.408602150538,-719.516129032258,-860.696480938416,-233.228250244379,-405.782013685239],"Archive317_field35":[122.708222422764,117.020312110214,44.1171954386964,51.3630244097483,83.9469709808943,118.425352582256,80.3175844348249,48.0469351679932,87.2871629063757,64.2212259328281,103.449965231521,67.8219468724853,82.2452857402434,100.6201404063,98.0083258331597,117.085947307116,97.7707072859246,87.8322521173419,94.9303408862672,61.9425517028989,46.2536236742091,66.0943439226936,105.487295880323,120.03280289176,49.9343406546777,69.1030041457277,122.708222422764,117.020312110214,44.1171954386964,51.3630244097483,83.9469709808943,118.425352582256,80.3175844348249,48.0469351679932,87.2871629063757,64.221225932828,103.449965231521,67.8219468724853,82.2452857402434,100.6201404063,98.0083258331597,117.085947307116,97.7707072859246,87.8322521173419,94.9303408862672,61.9425517028989,46.2536236742091,66.0943439226936,105.487295880323,120.03280289176,49.9343406546777,69.1030041457277,122.708222422764,117.020312110214,44.1171954386964,51.3630244097483,83.9469709808943,118.425352582256,80.3175844348249,48.0469351679932,87.2871629063757,64.2212259328281,103.449965231521,67.8219468724853,82.2452857402434,100.6201404063,98.0083258331597,117.085947307116,97.7707072859246,87.8322521173419,94.9303408862672,61.9425517028989,46.2536236742091,66.0943439226936,105.487295880323,120.03280289176,49.9343406546777,69.1030041457277],"Archive317_field36":[999.091409128531,930.656675746578,230.285328381023,300.277980421479,615.222630804941,963.435127753322,580.21983272417,265.588479645021,649.936234265124,422.943122316015,807.279388496429,457.917254790374,597.834239796939,780.919505020181,754.777631796014,946.409016710831,750.618336806941,652.44216169701,724.247911756257,404.977742318735,248.108462383886,440.502946073231,825.003424912581,980.729283830176,283.162590899057,474.885017830967,999.091409128531,930.656675746578,230.285328381023,300.277980421479,615.222630804941,963.435127753322,580.21983272417,265.588479645021,649.936234265124,422.943122316015,807.279388496428,457.917254790374,597.834239796939,780.919505020181,754.777631796014,946.409016710831,750.618336806941,652.44216169701,724.247911756257,404.977742318735,248.108462383886,440.502946073231,825.003424912581,980.729283830176,283.162590899057,474.885017830967,999.091409128531,930.656675746578,230.285328381023,300.277980421479,615.222630804941,963.435127753322,580.21983272417,265.588479645021,649.936234265124,422.943122316015,807.279388496429,457.917254790374,597.834239796939,780.919505020181,754.777631796014,946.409016710831,750.618336806941,652.44216169701,724.247911756257,404.977742318735,248.108462383886,440.502946073231,825.003424912581,980.729283830176,283.162590899057,474.885017830967],"Archive317_field37":[253.016638331431,253.018111749765,253.065934367638,253.053156137928,253.027600812722,253.017138428916,253.02856784721,253.058487398491,253.025429021827,253.038871490482,253.02111350816,253.035989474637,253.028388789271,253.021805189268,253.022099406775,253.017519227552,253.022787185898,253.026117628897,253.023349373667,253.040357615089,253.063435077644,253.038084662846,253.02031316685,253.016903939702,253.056085341468,253.034756363022,252.99591484283,252.995432461655,252.984293332299,252.987125398694,252.993166952068,252.995846775438,252.992970503909,252.986162571946,252.993728164577,252.990379258042,252.994789349154,252.991069580415,252.992983816451,252.994635967875,252.994539749344,252.995715323247,252.994358624573,252.99353496907,252.994230669407,252.990108188857,252.985415670003,252.99061864308,252.994975341808,252.995952301985,252.987004671432,252.991474741398,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive317_field38":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive317_field39":[1000000000000],"Archive317_field40":[0],"Archive317_field41":[0],"Archive317_field42":[0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive318.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive318.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive318.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive318_field1":[0,0,0,0,0.199942640985307,0,0,0,0,0.137358968806975,0.262526313163631,0.148737818293942,0.194253216241817,0.253992176048391,0,0,0.244035682747297,0.212032668565204,0.235501545632077,0,0.185790196935884,0,0,0.143048393550458,0,0,0,0,0,0,0,0.199942670217644,0,0,0,0,0.137358973030485,0.262526480178191,0.148737824472057,0.194253243272006,0.253992303953992,0,0,0.24403578716108,0.212032710818227,0.23550162879808,0,0.185790216102807,0,0,0.143048398582867,0,0,0,0,0,0,0,0.199942673984501,0,0,0,0,0.137358973729942,0.262526495060316,0.148737825463103,0.194253246680175,0.253992316134955,0,0,0.244035797381523,0.212032715843103,0.23550163730625,0,0.185790218783347,0,0,0.143048399419643,0,0,0,0,0,0,0,0.199942674147175,0,0,0,0,0.137358973764129,0.262526495573099,0.148737825510606,0.194253246825887,0.253992316578976,0,0,0.244035797759565,0.212032716052062,0.235501637631297,0,0.185790218903378,0,0,0.143048399460131,0,0,0],"Archive318_field2":[0,0,0,0,1.99942640985301,0,0,0,0,1.37358968806975,2.62526313163628,1.48737818293944,1.94253216241818,2.53992176048402,0,0,2.44035682747304,2.12032668565205,2.35501545632079,0,1.85790196935885,0,0,1.4304839355046,0,0,0,0,0,0,0,1.99942670217639,0,0,0,0,1.37358973030485,2.62526480178187,1.48737824472059,1.94253243272006,2.53992303954003,0,0,2.44035787161087,2.12032710818229,2.35501628798082,0,1.85790216102809,0,0,1.43048398582869,0,0,0,0,0,0,0,1.99942673984495,0,0,0,0,1.37358973729942,2.62526495060313,1.48737825463105,1.94253246680176,2.53992316134965,0,0,2.4403579738153,2.12032715843104,2.35501637306252,0,1.85790218783349,0,0,1.43048399419644,0,0,0,0,0,0,0,1.99942674147169,0,0,0,0,1.3735897376413,2.62526495573095,1.48737825510608,1.94253246825887,2.53992316578987,0,0,2.44035797759572,2.12032716052064,2.35501637631298,0,1.8579021890338,0,0,1.43048399460132,0,0,0],"Archive318_field3":[0,0,0,0,0.00126855192368058,0,0,0,0,0.000869348830086663,0.00156164724572174,0.00094046596770303,0.00123840077730774,0.00157674964457435,0,0,0.0015407221566497,0.00136462277007166,0.00148430609969026,0,0.00117321370830513,0,0,0.00090702779469815,0,0,0,0,0,0,0,0.00187648778224521,0,0,0,0,0.00136223222604486,-0.000782247160155517,0.00174760144590477,0.0028213824245164,-0.000760406478382413,0,0,0.000708887892103841,0.00228736716212632,0.000356210934228656,0,0.000709487344997667,0,0,0.00155945513301502,0,0,0,0,0,0,0,0.0024844237617165,0,0,0,0,0.00185511557253276,-0.00312614277392618,0.00255473688196625,0.00440436441043434,-0.00309756350642555,0,0,-0.000122946745149767,0.00321011199635278,-0.000771884706956519,0,0.000245760839516829,0,0,0.0022118824806225,0,0,0,0,0,0,0,0.00309235975356749,0,0,0,0,0.00234799891593569,-0.0054700384604557,0.0033618723163967,0.00598734642607515,-0.00543472059229791,0,0,-0.00095478140288029,0.0041328568654147,-0.00189998037811571,0,-0.000217965675684999,0,0,0.00286430982977594,0,0,0],"Archive318_field4":[0,0,0,0,2.00939907368494,0,0,0,0,1.38044082569687,2.63835725673649,1.4947968698627,1.95222105502574,2.55259026500797,0,0,2.45252874268029,2.13090238364464,2.36676170762278,0,1.86716873941681,0,0,1.43761884911596,0,0,0,0,0,0,0,2.00939984322586,0,0,0,0,1.38044126653313,2.63835858900571,1.49479765768066,1.95222297263653,2.55259117672066,0,0,2.45252941052101,2.13090359899225,2.36676210479798,0,1.86716869825002,0,0,1.43761945936669,0,0,0,0,0,0,0,2.00940054077044,0,0,0,0,1.38044184793574,2.63836047465894,1.49479882919185,1.95222593642503,2.55259306531921,0,0,2.45252941386713,2.13090483977748,2.36676228936759,0,1.86716860656728,0,0,1.43762032353916,0,0,0,0,0,0,0,2.00940138602173,0,0,0,0,1.38044259863492,2.63836429819456,1.49480042704218,1.95223015099643,2.55259697586303,0,0,2.45252960043518,2.13090643173833,2.36676292939424,0,1.867168604322,0,0,1.43762147579586,0,0,0],"Archive318_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,5997180,5577377.4,1379351.4,1799154,3688265.7,5787278.7,3478364.4,1589252.7,3898167,2533808.55,4842722.85,2743709.85,3583315.05,4685296.875,4527870.9,5682328.05,4501633.2375,3911285.83125,4344207.2625,2848660.5,3427200.958125,2428857.9,1484302.05,2638759.2,4947673.5,5892229.35,1694203.35,2998590,2788688.7,689675.7,899577,1844132.85,2893639.35,1739182.2,794626.35,1949083.5,1266904.275,2421361.425,1371854.925,1791657.525,2342648.4375,2263935.45,2841164.025,2250816.61875,1955642.915625,2172103.63125,1424330.25,1713600.4790625,1214428.95,742151.025,1319379.6,2473836.75,2946114.675,847101.675,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive318_field6":[272.268421008321,272.330126012493,257.783688133302,259.249839542614,265.925916043344,272.299275279049,265.091509546428,258.528232312804,266.50262473342,261.878837673707,269.980479751234,262.59909140812,265.489131429745,269.238015253349,268.822853775383,272.314700274849,268.8308097935,266.641346074986,268.19093725613,262.861738424562,264.998248048785,261.422671358108,258.160113244856,262.222784390203,270.267142988198,272.283847887747,258.905532836422,265.809469132011,265.909717519588,256.18720247281,257.167631334652,261.644499398184,265.806937713197,261.06361913221,256.687640911114,262.028418996017,258.937828177497,264.232978559394,259.414860333503,261.337462351999,263.754357053299,263.549581128799,265.82928934068,263.583584662471,262.114652545808,263.13454538247,259.562349401286,261.009058762371,258.611189606721,256.440889157819,259.161352584383,264.487134471829,265.782627220306,256.942179703807,259.363547141105,259.476829678754,254.592201864488,255.085027067313,257.336105621982,259.342516612001,257.032291069229,254.845136597133,257.535960883765,255.980506279663,258.536734457255,256.215980536323,257.173550016928,258.308636937089,258.276581580684,259.368657637477,258.31285719282,257.566612274829,258.064813895714,256.271664432111,257.007150118282,255.803065828115,254.720619000035,256.087623325658,258.7239977882,259.316220156463,254.974344117151,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive318_field7":[0.000323503499732148,2.94291487399647e-05,7.03421067700847e-21,1.19294104803658e-20,8.1226810524745e-13,0.000123070594533444,2.55228793804509e-13,2.01498641167387e-20,2.89873993511133e-12,-1.08580772697246e-16,-4.133787838428e-08,-1.63169053620961e-16,6.70722781523797e-13,-1.04611258262454e-08,-4.38936060057685e-09,5.55301115374921e-05,-7.20688910409423e-09,2.37989411904328e-12,-3.25217406173752e-09,-5.54609415606051e-17,-1.78106903534843e-16,-7.96811771320227e-18,6.78460071615108e-21,-5.07370892008871e-17,-1.01056376351119e-08,0.000215121779729811,1.01957889003664e-20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive319.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive319.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive319.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive319_field1":[0.160609710728284,0,0.173819670821061,0.11640340466597,2.73699818457095,0.357411659259158,0.0909861241051945,0.410453292019858,0.61109592931231,3,2.30040643981245,2.4434441452233,0.764604282029751,0.201093216474329,-0.165072401563905,-0.215143190796313,1.52067414525272,2.37253055276386,-1.39155998579154,0.173819670821061,0.173819670821061,1.15767649539947,0.160609710728284,0.160609710728284,0.11640340466597,0.11640340466597],"Archive319_field2":[15.4843079346604,14.1179581937675],"Archive319_field3":[20.0613474505749,20,20.0663932063403,20.0444621441762,21.0454402793593,20.1365191058615,20.0347536069036,20.1567792067573,20.2334178746106,21.1458980337503,20.8786770720692,20.9333126138634,20.2920528477917,20.0768107737862,19.9369479532072,19.9178226135639,20.5808458376733,20.9062260318082,19.468471382812,20.0663932063403,20.0663932063403,20.4421930732657,20.0613474505749,20.0613474505749,20.0444621441762,20.0444621441762],"Archive319_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4272990.75],"Archive319_field5":[0,0,0,0,110.188935532916,0,0,0,0,100.476384952973,104.057918285067,93.8963510649794,102.372923418222,104.288107243794,0,0,108.864664486319,106.324524283354,83.9194338735929,0,0,91.0774770688963,0,0,0,0],"Archive319_field6":[0,0,0,0,12.790501977777,0,0,0,0,19.7708751497142,21.814708122386,-3.78762842696225,12.2797495185124,10.7218595731375,0,0,15.1397499720677,10.7818680588016,6.28094843110896,0,0,8.76341330568642,0,0,0,0],"Archive319_field7":[0,0,0,0,109.444070524783,0,0,0,0,98.5120115977358,101.745608590036,93.819926530653,101.633769982993,103.735485923512,0,0,107.806786170919,105.776442487182,83.6840550431806,0,0,90.6548918507383,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive320.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive320.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive320.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive320_field1":[0.160609710728283,0,0.173819670821061,0.11640340466597,2.73699818457095,0.357411659259156,0.0909861241051945,0.410453292019858,0.611095929312307,3,2.30040643981244,2.4434441452233,0.76460428202975,0.201093216474327,-0.165072401563905,-0.215143190796313,1.52067414525271,2.37253055276385,-1.39155998579154,0.173819670821061,0.17381967082106,1.15767649539947,0.160609710728283,0.160609710728283,0.116403404665969,0.11640340466597,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive320_field2":[15.4843079346603,14.1179581937675],"Archive320_field3":[20.0613474505749,20,20.0663932063403,20.0444621441762,21.0454402793593,20.1365191058615,20.0347536069036,20.1567792067573,20.2334178746106,21.1458980337503,20.8786770720692,20.9333126138634,20.2920528477917,20.0768107737862,19.9369479532072,19.9178226135639,20.5808458376733,20.9062260318082,19.468471382812,20.0663932063403,20.0663932063403,20.4421930732657,20.0613474505749,20.0613474505749,20.0444621441762,20.0444621441762,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"Archive320_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4272990.75,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2136495.375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive320_field5":[0,0,0,0,110.188957435344,0,0,0,0,100.476404737584,104.057938718246,93.8963693704704,102.372943764093,104.288127978839,0,0,108.864686097176,106.324545423445,83.9194505488062,0,0,91.0774951773452,0,0,0,0,0,0,0,0,110.188958225142,0,0,0,0,100.47645080763,104.057962215339,93.896404965951,102.372980669724,104.288141322527,0,0,108.864664486822,106.324564179959,83.9194369921463,0,0,91.0775352083695,0,0,0,0,0,0,0,0,110.188959028927,0,0,0,0,100.476523772861,104.058234281145,93.8964593282438,102.373036251556,104.28837062308,0,0,108.864685682424,106.324588843231,83.9194918681195,0,0,91.0775979467213,0,0,0,0],"Archive320_field6":[0,0,0,0,12.790501977777,0,0,0,0,19.7708751497142,21.814708122386,-3.78762842696223,12.2797495185124,10.7218595731375,0,0,15.1397499720677,10.7818680588016,6.28094843110899,0,0,8.76341330568642,0,0,0,0,0,0,0,0,12.790501977777,0,0,0,0,19.7708751497142,21.814708122386,-3.78762842696223,12.2797495185124,10.7218595731375,0,0,15.1397499720677,10.7818680588016,6.28094843110899,0,0,8.76341330568642,0,0,0,0,0,0,0,0,12.790501977777,0,0,0,0,19.7708751497142,21.814708122386,-3.78762842696223,12.2797495185124,10.7218595731375,0,0,15.1397499720677,10.7818680588016,6.28094843110899,0,0,8.76341330568642,0,0,0,0],"Archive320_field7":[0,0,0,0,109.444070524783,0,0,0,0,98.5120115977358,101.745608590036,93.819926530653,101.633769982992,103.735485923512,0,0,107.806786170919,105.776442487182,83.6840550431805,0,0,90.6548918507382,0,0,0,0,0,0,0,0,109.444070524783,0,0,0,0,98.5120115977358,101.745608590036,93.8199265306531,101.633769982992,103.735485923512,0,0,107.806786170919,105.776442487182,83.6840550431805,0,0,90.6548918507382,0,0,0,0,0,0,0,0,109.444070524783,0,0,0,0,98.5120115977358,101.745608590036,93.819926530653,101.633769982992,103.735485923512,0,0,107.806786170919,105.776442487182,83.6840550431805,0,0,90.6548918507382,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive321.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive321.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive321.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive321_field1":[0.133002566730598,9.21427636535517e-14,0.148486182744798,-0.154507056761752,1.66852502594026,0.286489350459113,0.451864436410982,0.0250117422222934,-0.318963493438184,3,1.36716553761644,-2.57238544199319,2.42703151476786,1.32910655121139,0.0548044877772553,0.143356298729468,0.496821112788504,-1.5091709899722,0.807707418786441,0.148664465995559,0.148430620385706,0.387865274268631,0.132800645876873,0.133110087600058,-0.154637635965449,-0.154420306674911,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive321_field2":[18422591.5424404,11376319.9081017],"Archive321_field3":[20.2524993835671,20.0000000000001,20.305469735076,19.7146885621424,23.3716494410394,20.6067995327815,20.9197523599611,20.0851012722364,19.423412054211,26,22.6484582257281,15.2040979576072,24.8961472591582,22.8900053069209,20.1097067995648,20.3107913821633,21.1989443649708,17.3002678434587,21.6471783537519,20.3056480183267,20.3054141727169,20.7910894451013,20.2522974627134,20.2526069044365,19.7145579829387,19.7147753122292,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"Archive321_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4272990.75,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2136495.375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive321_field5":[0,0,0,0,103.14631558882,0,0,0,0,82.0557911817954,105.107072699686,108.478709269675,85.2716845119596,91.5572021938217,0,0,104.676240476053,113.332469241785,72.3124989257606,0,0,87.2268448786839,0,0,0,0,0,0,0,0,103.146468668469,0,0,0,0,82.0562289540429,105.108538583974,108.479061882656,85.2719423031814,91.557889270538,0,0,104.676717242208,113.33266685584,72.3132885691118,0,0,87.2272015800018,0,0,0,0,0,0,0,0,103.14651938475,0,0,0,0,82.0564348872881,105.109261422953,108.479227514404,85.2720772773641,91.5583209276622,0,0,104.676891996784,113.33274148529,72.3136011252706,0,0,87.2273767819732,0,0,0,0],"Archive321_field6":[0,0,0,0,10.3232639695991,0,0,0,0,18.7078488411244,20.3408159533839,-0.923277624302308,9.24622645867282,5.51883486144885,0,0,9.8673362472423,8.35399688766511,4.13324817942147,0,0,10.7043097568149,0,0,0,0,0,0,0,0,10.3232714136144,0,0,0,0,18.7079269011284,20.341118945839,-0.923259416333336,9.24623811719572,5.51887745372918,0,0,9.86735075119835,8.3540102976339,4.13322543607116,0,0,10.7043422445996,0,0,0,0,0,0,0,0,10.32327469697,0,0,0,0,18.7079552479382,20.3412121453339,-0.923255214943917,9.24624349417606,5.51889127989914,0,0,9.86735814805487,8.35401397848342,4.13322503361056,0,0,10.7043543052835,0,0,0,0],"Archive321_field7":[0,0,0,0,102.628399626322,0,0,0,0,79.8947221409238,103.120044532323,108.474758807515,84.7688892494421,91.3907019726975,0,0,104.210108140158,113.024131123969,72.1942635169143,0,0,86.5675296876104,0,0,0,0,0,0,0,0,102.628553045443,0,0,0,0,79.8951107901818,103.121457829141,108.475075350126,84.7691096742853,91.3913724002621,0,0,104.210606381027,113.024318604159,72.1950664525973,0,0,86.5678453292851,0,0,0,0,0,0,0,0,102.628604000809,0,0,0,0,79.8952465762764,103.121909225028,108.475187150711,84.7691859198241,91.3915863377356,0,0,104.210767701844,113.024381759732,72.195325048218,0,0,86.567957691879,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive322.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive322.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive322.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive322_field1":[-2.71422598548195e-19,0,-2.169194859311e-18,-1.04640243631185e-17,-0.102982041769563,-0.358376142296447,0.586264279955141,0.0922186932736601,-0.129054368473622,0.547480674285601,-0.167592121720572,0.475356061911565,3,-0.334828566384146,0.00947143646416343,-0.0847819074006857,-0.914809064328052,0.618155545038711,0.388224563741228,-2.169194859311e-18,-2.169194859311e-18,1.71659356792153,-2.71422598548196e-19,-2.71422598548196e-19,-1.04640243631185e-17,-1.04640243631185e-17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive322_field2":[40520.4928188335,42953.570253183],"Archive322_field3":[20,20,20,20,19.8970179582304,19.6416238577036,20.5862642799551,20.0922186932737,19.8709456315264,20.5474806742856,19.8324078782794,20.4753560619116,23,19.6651714336159,20.0094714364642,19.9152180925993,19.0851909356719,20.6181555450387,20.3882245637412,20,20,21.7165935679215,20,20,20,20,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"Archive322_field4":[305820.397313974,8366066.1,-54467859.2869019,-75399547.4091649,5331872.19837944,8101772.70358417,5150539.11873699,2565763.4346945,5637025.7906196,4702462.01421065,7428857.05438325,4947028.27130556,5169320.40492014,7256229.71152611,6917539.56558232,8013930.21040335,6854860.36360869,5690596.96301472,6617261.72367081,25565061.1878744,30349630.0787098,3570027.3533132,11902835.7760057,12767770.8463181,43231233.5361562,35697782.8558831,-4192042.16012596,4183033.05,-55502433.7434921,-76748995.9221943,2565672.25512442,3761315.05292278,2541765.22027621,1373823.97736536,2713400.69663534,2802107.21430649,3796812.48673876,2889246.91795741,2481834.17760373,3742256.94618793,3521636.88622245,3752184.46473834,3478635.7816591,2757132.92386434,3359105.9639656,23743425.7410054,29236448.143325,1590956.97659185,8192085.46061637,8348583.74237192,41960660.4714282,33561289.157352,-8689922.1714941,0,-56536960.8099703,-78098379.9863165,-200526.931512705,-579143.625208554,-67008.1104734798,181885.077359193,-210224.351735469,901750.749493494,164768.216682418,831464.150151569,-205652.038831683,228284.414681012,125734.255810339,-509562.027997349,102411.432583947,-176331.042453154,100950.242603456,21921782.1867448,28123228.6635531,-388112.633018686,4481335.62910671,3929412.40167137,40690024.3333721,31424793.583084],"Archive322_field5":[0,0,0,0,30.9017960319267,0,0,0,0,0.00027449714391324,0.00205280454420489,0.00617550443894978,12.7775603539286,9.50198403566781,0,0,17.0641964105663,1.87689424623789,10.4202497267774,0,0,9.89494439387303,0,0,0,0,0,0,0,0,30.9019242166533,0,0,0,0,0.000274510243056483,0.00205293978586769,0.00617559988829981,12.7776212253883,9.50203224565156,0,0,17.0643297015576,1.87690565724902,10.4202875981102,0,0,9.89501483488735,0,0,0,0,0,0,0,0,30.9018962149132,0,0,0,0,0.000274550311861265,0.00205335283788549,0.00617591190920604,12.7776325989935,9.50206299210693,0,0,17.0644467874209,1.87693036510798,10.420295702735,0,0,9.89519090374844,0,0,0,0],"Archive322_field6":[0,0,0,0,8.09373341796489,0,0,0,0,0.000162626641698071,0.00154880879611577,-0.00357169848475472,-6.87994087345162,-0.864741540961916,0,0,-2.41017777505259,0.965542461221222,5.52999094180142,0,0,-0.0831626560488112,0,0,0,0,0,0,0,0,8.09377130609854,0,0,0,0,0.000162644548645023,0.00154889349716916,-0.00357185517178431,-6.87997570265905,-0.864764826734667,0,0,-2.4101682357423,0.965549712904176,5.53000740150988,0,0,-0.0831673798372615,0,0,0,0,0,0,0,0,8.09377713268028,0,0,0,0,0.00016269292018842,0.00154914583419761,-0.00357226784491027,-6.87998324717415,-0.864826458612739,0,0,-2.41012298791145,0.965564611070636,5.53000062893434,0,0,-0.0831676864684003,0,0,0,0],"Archive322_field7":[0,0,0,0,29.8230130589897,0,0,0,0,0.000221136236825564,0.00134729244091693,0.00503783846343761,-10.7671913938655,-9.46255181126248,0,0,16.8931267992735,-1.60949025033787,8.83180445184399,0,0,9.89459297036734,0,0,0,0,0,0,0,0,29.8231374366796,0,0,0,0,0.000221138458112869,0.00134736808709177,0.00503782087991153,-10.7672420427552,-9.46258226085399,0,0,16.8932523150301,-1.60949205096739,8.83183308383163,0,0,9.89460656926104,0,0,0,0,0,0,0,0,29.8231083565113,0,0,0,0,0.00022115066554638,0.00134759356371302,0.00503785509571873,-10.7672512777431,-9.46257561307113,0,0,16.8933060282637,-1.60949511026633,8.83183736023119,0,0,9.89464720426388,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive323.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive323.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive323.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive323_field1":[0,0,0,0,11.1666777030936,0,0,0,0,14.6801679155056,14.8173674069677,0.719925017032615,12.3804734028857,0,0,8.71083567603629,19.6988377526476,5.93592802568338,12.2257331251906,0,9.41480889906521,7.83655710779639,12.7499423470256,10.7534334877628,10.4009206620104,0,6.76371332714983,-0.252175611421543,0,-10.3448601211847,0,10.5886089349864,0,0,10.8472191457535,12.3297523079076,0,0,-0.74085507123692,9.28766710312122,11.3430470708857,-12.9787767007806,20.4010911744302,6.72372388418473],"Archive323_field2":[0,0,0,0,111.724363051546,0,0,0,0,100.245009077106,105.684263657701,93.0668895668177,104.875811122665,0,0,79.3954720747423,46.4337931064369,93.020340720494,104.821489673309,0,109.206012663212,102.788734278426,108.942410595766,110.348401412465,111.725011324696,0,101.555828718034,77.1738812086803,0,60.8501616575993,0,112.473156409856,0,0,81.7931182675926,82.1664052380943,0,0,67.1821633295514,85.9426037361815,91.1832387783015,56.8226916091512,49.1821396012698,102.832484349879],"Archive323_field3":[0,0,0,0,112.281022395587,0,0,0,0,101.314210133113,106.717936457484,93.0696740387135,105.604033447196,0,0,79.8718952081775,50.4394820657045,93.2095436598791,105.53204843923,0,109.611093546244,103.087028873009,109.685960160218,110.871123499594,112.208098219874,0,101.780814324599,77.1742932157496,0,61.7232395835057,0,112.970480887593,0,0,82.5092501428318,83.0863463014537,0,0,67.1862481157796,86.4429979649753,91.8860585233314,58.286078323708,53.2455385630214,103.052065968804],"Archive323_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive323_field5":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive323_field6":[-15.1898508738506,-6.7258766272563,88.0199562624976,107.719692454098,122.172045121923,-188.210316591429,115.502982270054,233.954261748437,98.9181782509974,144.343928138455,35.5956273134735,122.048288074675,114.698579813691,116.62394365638,189.216957919085,175.381135374476,123.467125051284,147.91347409387,115.769676177685,235.630547946132,127.680619678114,118.183817775131,114.839391661168,119.495814649394,86.1355601990027,110.836434299382,90.960124401482,169.931411776035,73.768950905137,136.03141458818,44.9718262557443,115.334805392957,-126.755087465119,97.0713115811842,108.513244834258,132.379188814981,-133.341629028212,63.7968774663438,107.754281317289,77.1697600629711,-62.345393261917,4.84959777084453,16.5962750089474,-17.0516071597368],"Archive323_field7":[861.193335831917,806.910487009107,274.188089204824,356.634648465829,653.44770494597,656.799458579637,615.405230559399,451.495806225465,661.567249609746,503.065824521641,739.425050578381,512.143595992564,630.287533870387,459.659134272215,391.071796628763,463.512855804584,395.91213971404,487.026988267868,514.688756089709,468.858798190511,577.581493334028,639.226353133757,595.284091450626,692.987712742576,749.59657337642,767.605740262236,733.249608629295,477.671514415331,479.550964590377,453.575708332071,764.487955288002,702.804826254501,733.941393473297,675.407088707284,655.475610425656,581.299643360436,695.981440375503,548.012419988338,544.909706537231,704.592795469268,706.800374986486,743.580832842652,806.702579994285,714.257170379633],"Archive323_field8":[0,0,0,0,-41.313167865877,0,0,0,0,16.1923338561794,3843.30679890703,-44.5823988178601,97.0617201807717,0,0,4.27506942009608,54.9531784344006,-1.83339464311806,11.1692687604451,0,-13.9255047194048,-170.941197173053,14.239608372526,152.734706321377,207.689769731578,0,-1281.5095137547,-30.2290283602362,0,-93.1428832604097,0,-249.060308563828,0,0,-9.03421668550155,36.8973450280579,0,0,-85.9650282616409,661.660242514372,2574.41997642015,-3200.75337484801,683.423350129944,-4104.31553347033],"Archive323_field9":[0,0,0,0,117.991447632769,0,0,0,0,-46.4642593254444,-12424.5993515897,-75.7320326171699,-34.0335038680642,0,0,-77.7622728568257,-9.38805168393919,-90.1881118197678,-67.9120701339052,0,-41.9152802921753,-53.5497716748364,-7.25458248689444,308.729959870159,-6106.10249843255,0,-2688.07334775759,-123.840855695138,0,-90.5622821079713,0,70.2142789080049,0,0,-177.627979121173,-40.603881859011,0,0,-32.9357475541464,-2734.52297345815,-17621.7852490013,-5962.17846638924,-5706.99246794305,-19887.7269601329],"Archive323_field10":[0,0,0,0,125.01503730988,0,0,0,0,49.2048683604795,13005.4479429987,87.8802085152444,102.855514728127,0,0,77.8796976008898,55.7493258655509,90.2067450334638,68.8244276003478,0,44.1679793930148,179.132551305964,15.9810955088213,344.444594436474,6109.63360291069,0,2977.9195685526,127.476867293278,0,129.911984214953,0,258.768395026286,0,0,177.85757233751,54.8642806581848,0,0,92.0584029351757,2813.4338749817,17808.8448130953,6767.00777535215,5747.76743654974,20306.8237210817],"Archive323_field11":[7747097.17467668,7258781.15172192,2466532.98722608,3208203.27162945,5878265.26072181,5908416.86550694,5536043.91090932,4061552.42876885,5951306.81702187,4525464.45225704,6651697.68724148,4607125.99652203,5669921.68856521,4134987.85031197,3517991.93595912,4169655.0428612,3561534.54907537,4381182.77025044,4630021.67136912,4217745.91099826,5195790.27028945,5750333.25073006,5355038.7713488,6233958.07665828,6743198.3668824,6905204.69007881,6596144.83181916,4297023.079232,4313930.18073317,4080262.74974239,6877157.81354115,6322270.57187545,6602367.96916529,6075806.82638032,5896507.8319988,5229237.89275251,6260888.96188674,4929793.68735849,4901882.39077642,6338354.73169858,6358213.60929218,6689082.14866094,7256910.86803519,6425293.225586],"Archive323_field12":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive323_field13":[-9.26584612787087,-478.047727102531,180.48534348306,124.83334403297,-459.211464644704,5518.08230932146,200.257184981313,111.389512599726,-450.506943188748,141.071912914572,-702.829423264907,118.684207519458,-243.137310174222,167.23107043257,89.1913623068069,93.8165564259423,96.3626170237209,60.2753868554167,264.988228751604,25.8606377936593,269.792435079839,-295.772659391624,125.174564140539,-572.491898093182,-421.288514977369,-604.404887476526,-641.289484227814,35.8004512633283,341.01970165031,70.7009756029759,-507.101450316709,-561.41944395098,2828.89936249087,-330.595034875602,-375.015456499164,126.102101207707,1716.16330487148,495.417156048441,186.989012902024,-535.539434094028,999.212595874832,-511.535562112151,-456.089189532553,260.429445773347],"Archive323_field14":[867.117340577896,335.588636533832,366.653476425386,373.7483000447,72.0641951793433,6363.09208449253,700.159433270658,328.931057076755,112.142128170001,499.793809297759,1,508.779515437346,272.451643882474,510.266261048405,291.046201016484,381.94827685605,368.807631686477,399.388901029415,663.907308663628,259.088888038039,719.693308735753,225.269875967003,605.619263929997,1,242.172498200049,52.3644184863288,1,343.540553902624,746.80171533555,388.245269346866,212.414678715549,26.0505769105641,3689.59584342928,247.740742250498,171.946909092234,575.022555753161,2545.48637427519,979.632698570435,624.144438121965,91.8836013122689,1768.35836412324,227.195672959656,334.017115452785,991.738223312717],"Archive323_field15":[0,0,0,0,-6520.48970960167,0,0,0,0,242.786828487069,-1180.84968681304,-531.872794484989,502.815501196583,0,0,-120.6274699822,-75.8165251658999,-267.992051630194,321.327498426961,0,-55.9863401331248,3599.40551490396,-18.0744832859755,18590.9876243697,1303.1606063055,0,156361.599106889,-32.0571384075925,0,334.407848024741,0,-63053.374845808,0,0,-37315.4264194389,-1429.12975693554,0,0,974.437662902463,-2728.51359206027,-1533.19918346318,13156.175388281,-14037.2424830044,2316.91283138384],"Archive323_field16":[0,0,0,0,-33351.8353102093,0,0,0,0,857.988271380727,7094.22305806023,437.566504778653,-56316.622326247,0,0,-41.5035829728691,-15.7635661275885,194.148134930681,1125.7823986961,0,768.05279276877,-27921.8715673505,-3358.81484805373,22587.876336051,7407.35105672938,0,80152.3197422814,261.062774825332,0,171.450101151395,0,-297225.972298986,0,0,-90297.4197665349,-884.092679908656,0,0,1467.23541268092,-26738.361298607,4241.50394097683,18704.6821299297,17180.6655107294,5574.52730115584],"Archive323_field17":[0,0,0,0,33983.2562391002,0,0,0,0,891.677810598479,7191.82916790714,688.732978459343,56318.8669423079,0,0,127.567762047832,77.4379461587818,330.927844150386,1170.74223057823,0,770.090619837308,28152.9151578364,3358.86347898396,29254.6915591704,7521.10877753117,0,175708.121711355,263.023634912123,0,375.79748004126,0,303840.42964774,0,0,97703.9664771004,1680.48556340919,0,0,1761.33713840019,26877.2162129359,4510.10592087305,22868.1018982539,22186.0191093001,6036.84020821845],"Archive323_field18":[7800388.15885042,3018878.18887195,3298330.3436232,3362153.74509311,648272.925068481,57240912.8809153,6298473.22503319,2958988.13531936,1008804.79232785,4496030.1558665,8995.77,4576863.50158582,2450912.32448865,4590237.92315141,2618184.68371806,3435918.85049335,3317708.62889626,3592810.69421338,5972357.450057,2330704.04634595,6474195.47592583,2026475.99212768,5448011.60588355,8995.77,2178528.09413305,471058.264886762,8995.77,3090411.80858061,6718056.46676408,3492565.14663246,1910833.59434898,234344.998254746,33190755.6004458,2228618.73691476,1546794.84640464,5172770.65636761,22898609.9611135,8812550.44081897,5614659.81212443,826563.744176869,15907745.1212289,2043800.01894029,3004741.1466767,8921448.95712984],"Archive323_field19":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive323_field20":[-73.9306264945421,-593.377744449803,125.284107644035,93.2961630679457,-433.958544481319,4817.71645358239,-354.079205007359,80.2253970789685,-327.063506237981,23.5568402976286,-93.8256540939954,128.455289783515,-60.06895274119,357.224889161708,130.840616102209,109.951355375824,89.0646561883896,168.119494228319,228.528641004396,38.612320459347,-279.803566060483,-387.188338083743,-45.50908605086,-445.045599813078,-198.282842590072,58.7336022828777,-256.052890280191,21.7160287359195,386.533986509711,100.066717861609,-396.793707934533,-412.63575879096,1640.40651791959,706.101735422166,96.9915248032132,-242.600961798304,1021.12475712907,233.862672664255,52.2881155133659,-358.884028441267,1217.23837016551,-330.858083021418,-5.45592432745502,-205.889977489921],"Archive323_field21":[802.452560211225,220.25861918656,311.452240586361,342.211119079676,97.3171153427278,5662.72622875346,145.823043281986,297.766941555997,235.585565120767,382.278736680815,610.003769170912,518.550597701403,455.520001315506,700.260079777544,332.695454811887,398.083075805932,361.509670851146,507.233008402317,627.44772091642,271.840570703726,170.097307595431,133.854197274884,434.935613738598,128.446298280104,465.178170587346,715.502908245732,386.236593947623,329.456131375216,792.31600019495,417.611011605499,322.722421097725,174.834262070584,2501.102998858,1284.43751254827,643.953890394611,206.319492747151,1850.44782653278,718.078215186249,489.443540733307,268.53900696503,1986.38413841391,407.873152050389,784.650380657882,525.418800049449]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive324.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive324.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive324.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive324_field1":[0,0,0,0,0.199942640985304,0,0,0,0,0.137358968806976,0.262526313163625,0.148737818293947,0.194253216241821,0,0,0.111756557461295,0.106067132717814,0.130247187877621,0.15193811971215,0,0.17042875012848,0.196231180312799,0.181506716576134,0.215254084582665,0.247885059951309,0,0.24020633999253,0.118868338390652,0,0.122424228855329,0,0.220323821895602,0,0,0.205632065728787,0.170073161082006,0,0,0.165806092524392,0.234814414942922,0.286215954240247,0.275184881165839,0.29381814925279,0.272492823689334,0,0,0,0,0.199942648430603,0,0,0,0,0.137358970508103,0.262526335175664,0.148737820613918,0.194253222910617,0,0,0.111756558211115,0.106067133336318,0.130247189251382,0.151938122232444,0,0.170428754087398,0.196231187299642,0.181506721664972,0.215254094537931,0.247885077415687,0,0.240206355532617,0.118868339352696,0,0.122424229943176,0,0.220323832838803,0,0,0.205632074180809,0.170073165068369,0,0,0.165806096149654,0.234814429135487,0.286215985439938,0.275184907949437,0.293818183930585,0.272492849341936,0,0,0,0,0.199942652230691,0,0,0,0,0.137358971389498,0.262526346225449,0.148737821811813,0.194253226315559,0,0,0.111756558603222,0.106067133660108,0.130247189965522,0.151938123533191,0,0.170428756120278,0.196231190855904,0.181506724272483,0.215254099595696,0.247885086238536,0,0.240206363370145,0.118868339854739,0,0.12242423050751,0,0.220323838394944,0,0,0.205632078461964,0.170073167106942,0,0,0.16580609800506,0.234814436294051,0.286216001017247,0.275184921317472,0.293818201194102,0.272492862186723,0,0,0,0,0.199942653256251,0,0,0,0,0.137358971624468,0.26252634923473,0.148737822132093,0.194253227232278,0,0,0.111756558707486,0.106067133745773,0.130247190155889,0.151938123881294,0,0.170428756666421,0.196231191811564,0.181506724973499,0.215254100965691,0.247885088636771,0,0.240206365491929,0.118868339988132,0,0.122424230657251,0,0.220323839899142,0,0,0.205632079612289,0.170073167651779,0,0,0.165806098499544,0.234814438231829,0.286216005262868,0.27518492495168,0.293818205904053,0.272492865680934,0,0,0,0,0.199942653333478,0,0,0,0,0.137358971641831,0.262526349463466,0.148737822155893,0.19425322730115,0,0,0.111756558715129,0.106067133752002,0.130247190169937,0.151938123907193,0,0.1704287567073,0.196231191883302,0.181506725026049,0.215254101069265,0.247885088818703,0,0.240206365652482,0.118868339997912,0,0.122424230668243,0,0.220323840012832,0,0,0.205632079698743,0.170073167692391,0,0,0.165806098536284,0.234814438378448,0.28621600558593,0.275184925227841,0.293818206262743,0.272492865946453],"Archive324_field2":[0,0,0,0,1.99942640985302,0,0,0,0,1.37358968806975,2.62526313163627,1.48737818293945,1.94253216241818,0,0,1.11756557461297,1.06067132717813,1.3024718787762,1.51938119712154,0,1.70428750128478,1.96231180312794,1.81506716576126,2.15254084582666,2.47885059951312,0,2.40206339992533,1.18868338390652,0,1.2242422885533,0,2.20323821895601,0,0,2.05632065728786,1.70073161082009,0,0,1.65806092524397,2.34814414942919,2.86215954240247,2.75184881165833,2.93818149252792,2.72492823689343,0,0,0,0,1.99942648430601,0,0,0,0,1.37358970508102,2.62526335175667,1.48737820613916,1.94253222910614,0,0,1.11756558211117,1.06067133336317,1.30247189251381,1.51938122232448,0,1.70428754087396,1.96231187299637,1.81506721664964,2.15254094537932,2.47885077415691,0,2.4020635553262,1.18868339352696,0,1.22424229943177,0,2.20323832838802,0,0,2.05632074180808,1.70073165068372,0,0,1.65806096149659,2.34814429135483,2.86215985439938,2.75184907949431,2.93818183930587,2.72492849341945,0,0,0,0,1.99942652230689,0,0,0,0,1.37358971389498,2.62526346225452,1.48737821811811,1.94253226315556,0,0,1.11756558603224,1.06067133660107,1.30247189965522,1.51938123533195,0,1.70428756120276,1.962311908559,1.81506724272475,2.15254099595697,2.47885086238539,0,2.40206363370148,1.1886833985474,0,1.22424230507511,0,2.20323838394943,0,0,2.05632078461964,1.70073167106944,0,0,1.65806098005065,2.34814436294048,2.86216001017246,2.75184921317466,2.93818201194105,2.72492862186732,0,0,0,0,1.99942653256249,0,0,0,0,1.37358971624467,2.62526349234733,1.48737822132091,1.94253227232275,0,0,1.11756558707488,1.06067133745772,1.30247190155889,1.51938123881298,0,1.70428756666419,1.96231191811559,1.8150672497349,2.15254100965692,2.47885088636775,0,2.40206365491933,1.18868339988133,0,1.22424230657251,0,2.20323839899141,0,0,2.05632079612289,1.70073167651782,0,0,1.65806098499549,2.34814438231825,2.86216005262867,2.75184924951674,2.93818205904055,2.72492865680943,0,0,0,0,1.99942653333476,0,0,0,0,1.3735897164183,2.62526349463468,1.48737822155891,1.94253227301147,0,0,1.11756558715131,1.06067133752001,1.30247190169937,1.51938123907198,0,1.70428756707298,1.96231191883298,1.8150672502604,2.15254101069266,2.47885088818707,0,2.40206365652485,1.18868339997913,0,1.22424230668244,0,2.20323840012832,0,0,2.05632079698742,1.70073167692394,0,0,1.6580609853629,2.34814438378444,2.86216005585929,2.75184925227835,2.93818206262745,2.72492865946462],"Archive324_field3":[0,0,0,0,0.00126712256917005,0,0,0,0,0.000870502902497727,0.00166374222881943,0.000942615569107573,0.00123106623573347,0,0,0.000708249403268769,0.000672193070194155,0.0008254324863129,0.000962897256133919,0,0.00108008033865072,0.00124360144236237,0.00115028617973388,0.00136415777151011,0.00157095429445001,0,0.00152229094359013,0.000753319819635976,0,0.000775855027791295,0,0.00139628688160693,0,0,0.00130317890249769,0.00107782681718158,0,0,0.00105078456943618,0.00148812000888832,0.00181387371631536,0.00174396504438227,0.0018620520909252,0.00172690431660697,0,0,0,0,0.00131213917831831,0,0,0,0,0.001149076327865,0.00165207462010415,0.00104633337684981,0.00126875562475457,0,0,0.00126369846683875,0.000932648063468516,0.00111249599579767,0.00108218019283323,0,0.00135136751330625,0.00156161809131684,0.0014447976626857,0.00182674920066665,0.00299127696636511,0,0.00281311375221116,0.00143058675859157,0,0.0012565292038985,0,0.00167233276641181,0,0,0.00110105989631955,0.00171664482466462,0,0,0.000896480411036717,0.00131288503643155,-0.0013518170738327,6.43954299360427e-06,-0.000257044727557961,-0.000159188474917443,0,0,0,0,0.00137054355099681,0,0,0,0,0.00151049657585543,0.00163693708501776,0.00118089651856322,0.00131765369091779,0,0,0.00198433625499349,0.00127056151343346,0.00148493124759306,0.00123693748582898,0,0.00170333460587408,0.00197421185464422,0.00182689589353103,0.00242691382434282,0.00483399905825914,0,0.00448782312858296,0.00230927065927403,0,0.00188015430188415,0,0.00203047377938781,0,0,0.000838831329527577,0.00254544521784266,0,0,0.000696286691399358,0.00108553570708595,-0.00545897435426787,-0.00224782061117576,-0.00300635436445931,-0.00260619932837124,0,0,0,0,0.00143535824895958,0,0,0,0,0.00191158551388673,0.00162013808698867,0.0013302290138908,0.00137191869289856,0,0,0.00278406965634588,0.00164556359724777,0.00189824417039186,0.00140868059977005,0,0.0020939328326457,0.00243209100465085,0.00225093238492559,0.00309295120614408,0.00687897432032912,0,0.00634634496168944,0.00328439696639919,0,0.0025722271156418,0,0.00242792355856769,0,0,0.000547821122548084,0.00346521291880334,0,0,0.000474120146802433,0.000833232999278469,-0.0100169243396135,-0.00474950349642289,-0.00605742231566163,-0.00532178879882841,0,0,0,0,0.00150472154327367,0,0,0,0,0.00234082226800175,0.00160216016265689,0.00149004143836861,0.00142999192977966,0,0,0.00363992713955921,0.00204688276064621,0.0023405627697191,0.00159247638660946,0,0.00251194265378239,0.00292210342343818,0.0027047271175136,0.0038057300887549,0.00906746287023613,0,0.00833529506081367,0.00432795616467985,0,0.00331286855418642,0,0.00285326576361163,0,0,0.000236388257481216,0.00444952852887256,0,0,0.000236362289321197,0.000563224066462903,-0.0148947444026513,-0.0074267507265485,-0.00932260963386998,-0.00822795425414492],"Archive324_field4":[0,0,0,0,2.00939907278308,0,0,0,0,1.38044082642415,2.63835731914201,1.49479687121669,1.95222105038682,0,0,1.12313972564095,1.06596170324469,1.30896829842882,1.52695950881459,0,1.71278808160245,1.97209934723552,1.82412028867209,2.1632772071115,2.49121451616496,0,2.41404432030631,1.19461225363628,0,1.23034851763395,0,2.21422744666852,0,0,2.06657709517935,1.70921445520267,0,0,1.66633093840549,2.35985613342523,2.87643531280733,2.76557437839985,2.9528364423215,2.73851953021699,0,0,0,0,2.00939917649902,0,0,0,0,1.38044104729612,2.63835753302845,1.4947969635346,1.95222114153803,0,0,1.12314022079013,1.06596190552243,1.30896852473378,1.52695961402184,0,1.71278831394663,1.97209964363432,1.82412054930756,2.16327764832961,2.49121599221777,0,2.41404563558223,1.19461288237057,0,1.23034892557388,0,2.21422774792741,0,0,2.06657706254931,1.70921501748118,0,0,1.66633088467942,2.35985617206211,2.87643537209968,2.76557409770888,2.95283621491391,2.73851924815815,0,0,0,0,2.0093992536763,0,0,0,0,1.3804414043121,2.63835763464207,1.49479707582204,1.95222120814869,0,0,1.12314126674465,1.06596225798878,1.30896890142822,1.52695974461542,0,1.7127886482377,1.97210004924943,1.82412091817323,2.16327828921267,2.49121897501508,0,2.41404824680682,1.19461426282001,0,1.23034972618811,0,2.21422810322174,0,0,2.0665769824977,1.70921607131451,0,0,1.66633080764815,2.35985612847245,2.87644039108578,2.76557514554713,2.95283790764299,2.73852061275598,0,0,0,0,2.0093993092363,0,0,0,0,1.38044190381849,2.6383576545157,1.49479720447343,1.952221254742,0,0,1.12314296546433,1.06596277179128,1.30896943746783,1.52695989689529,0,1.71278908670615,1.97210057037793,1.82412139918577,2.16327915271806,2.49122380654616,0,2.41405243861885,1.19461654712648,0,1.2303509799266,0,2.21422851847566,0,0,2.06657689642585,1.70921769402461,0,0,1.66633073459436,2.35985604537482,2.87645269512732,2.76557834688696,2.95284263762117,2.73852457867084,0,0,0,0,2.00939936075734,0,0,0,0,1.38044256511797,2.638357645836,1.49479735547361,1.95222129710874,0,0,1.12314541314572,1.06596346692928,1.30897015378411,1.5269600777759,0,1.71278964915375,1.97210123628335,1.82412201613443,2.16328029028197,2.4912308126722,0,2.41405848836379,1.19461987211178,0,1.2303527513782,0,2.21422902686319,0,0,2.06657683820458,1.7092199734281,0,0,1.66633068427654,2.35985596695873,2.87647382060412,2.76558424333158,2.9528511446613,2.73853177093028],"Archive324_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,7291390.29781034,6780992.97696362,1677019.76849638,2187417.0893431,4484205.03315336,7036191.63738698,4229006.37273,1932218.42891974,4739403.69357672,3080612.40082487,5887797.66548185,3335811.06124823,4356605.70294168,2953013.07061319,1804619.09870806,2506415.41487231,2378816.08466062,2921113.23806027,3407585.6844923,2059817.75913142,3822283.50768027,4400966.40758559,4070734.12660205,4827601.77986929,5559431.58497596,5504999.67484681,5387217.42136557,2665914.57763691,3463410.39145991,2745664.15901921,6015396.99569353,4941303.09672397,7163790.96759866,4867003.02378841,4611804.36336504,3814308.54954204,6908592.3071753,4101407.04251832,3718609.05188328,5266290.2528201,6419096.07799594,6171697.15819776,6589593.9816461,6111321.15422917,5080133.67960881,4724524.3220362,1168430.74631003,1524040.10388264,3124282.21295942,4902329.0008225,2946477.53417311,1346235.42509634,3302086.89174573,2146356.47963472,4102207.94628412,2324161.15842103,3035379.87356627,2057454.14024157,1257333.08570318,1746295.95236553,1657393.61297238,2035228.55539328,2374168.72432968,1435137.76448949,2663101.32735743,3066287.32749592,2836204.44011814,3363537.18453646,3873425.29761421,3835500.92810465,3753438.44504844,1857423.87660697,2413063.49781419,1912987.83872769,4191110.28567727,3442756.35476011,4991231.34021566,3390989.23113888,3213184.55235257,2657544.93114536,4813426.66142935,2857575.19477996,2590868.17660049,3669184.80388867,4472379.73096365,4300009.36901183,4591170.81294646,4257943.5682971,2626174.41638899,2442342.20724176,604020.115769469,787852.324916698,1615097.26607923,2534258.31181538,1523181.16150562,695936.220343083,1707013.37065285,1109558.69092435,2120635.84123411,1201474.79549796,1569139.21379242,1063600.63863754,649978.168056276,902747.455633717,856789.403346909,1052111.12556584,1227326.19990929,741894.272629891,1376689.86984142,1585116.81790776,1466175.50049602,1738780.09117329,2002366.68204599,1982761.68437369,1940339.49489222,960195.020992226,1247432.84778477,988918.803671481,2166593.89352092,1779732.43047176,2580216.36410219,1752971.42293965,1661055.31836604,1373817.49157349,2488300.25952857,1477223.10921881,1339348.95235839,1896784.58652641,2311996.0950984,2222889.25987503,2373405.12881155,2201143.34990314,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive324_field6":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive324_field7":[112.176140621601,109.479037489693,44.9426960929088,51.6631067442238,85.0375873540463,106.576731018676,81.1099654919775,49.3888526224663,88.4395117637753,65.317020834035,105.187966403731,68.6365781322644,83.1180689945922,62.1801231792855,47.5572510815279,57.2612384883297,54.394688475045,63.0140564683197,69.5533546511546,52.1319637665852,75.7910968172591,84.5681180883256,79.3270592242784,91.121516392639,102.899930062783,104.213491522988,100.094782765097,59.6579726325036,69.0323181218678,60.6647006619839,107.095490057002,92.3073094932962,107.423702321177,86.4277994191243,86.5220951942623,76.4549330301484,103.207745477444,75.9576366416123,73.5010394892724,94.6058155546147,107.160599024873,105.964456824235,113.823640213203,105.15696110805,112.176140621601,109.479037489693,44.9426960929088,51.6631067442238,85.0375873540463,106.576731018676,81.1099654919775,49.3888526224663,88.4395117637753,65.317020834035,105.187966403731,68.6365781322644,83.1180689945922,62.1801231792855,47.5572510815279,57.2612384883297,54.394688475045,63.0140564683197,69.5533546511546,52.1319637665852,75.7910968172591,84.5681180883256,79.3270592242784,91.121516392639,102.899930062783,104.213491522988,100.094782765097,59.6579726325036,69.0323181218678,60.6647006619839,107.095490057002,92.3073094932962,107.423702321177,86.4277994191243,86.5220951942623,76.4549330301484,103.207745477444,75.9576366416123,73.5010394892724,94.6058155546146,107.160599024873,105.964456824235,113.823640213203,105.15696110805,112.176140621601,109.479037489693,44.9426960929088,51.6631067442238,85.0375873540463,106.576731018676,81.1099654919775,49.3888526224663,88.4395117637753,65.317020834035,105.187966403731,68.6365781322644,83.1180689945922,62.1801231792855,47.5572510815279,57.2612384883297,54.394688475045,63.0140564683197,69.5533546511546,52.1319637665852,75.7910968172591,84.5681180883256,79.3270592242784,91.121516392639,102.899930062783,104.213491522988,100.094782765097,59.6579726325036,69.0323181218678,60.6647006619839,107.095490057002,92.3073094932962,107.423702321177,86.4277994191243,86.5220951942623,76.4549330301484,103.207745477444,75.9576366416123,73.5010394892724,94.6058155546146,107.160599024873,105.964456824235,113.823640213203,105.15696110805,112.176140621601,109.479037489693,44.9426960929088,51.6631067442238,85.0375873540463,106.576731018676,81.1099654919775,49.3888526224663,88.4395117637753,65.317020834035,105.187966403731,68.6365781322644,83.1180689945922,62.1801231792855,47.5572510815279,57.2612384883297,54.394688475045,63.0140564683197,69.5533546511546,52.1319637665852,75.7910968172591,84.5681180883256,79.3270592242784,91.121516392639,102.899930062783,104.213491522988,100.094782765097,59.6579726325036,69.0323181218678,60.6647006619839,107.095490057002,92.3073094932962,107.423702321177,86.4277994191243,86.5220951942623,76.4549330301484,103.207745477444,75.9576366416123,73.5010394892724,94.6058155546146,107.160599024873,105.964456824235,113.823640213203,105.15696110805,112.176140621601,109.479037489693,44.9426960929088,51.6631067442238,85.0375873540463,106.576731018676,81.1099654919775,49.3888526224663,88.4395117637753,65.317020834035,105.187966403731,68.6365781322644,83.1180689945922,62.1801231792855,47.5572510815279,57.2612384883297,54.394688475045,63.0140564683197,69.5533546511546,52.1319637665852,75.7910968172591,84.5681180883256,79.3270592242784,91.121516392639,102.899930062783,104.213491522988,100.094782765097,59.6579726325036,69.0323181218678,60.6647006619839,107.095490057002,92.3073094932962,107.423702321177,86.4277994191243,86.5220951942623,76.4549330301484,103.207745477444,75.9576366416123,73.5010394892724,94.6058155546147,107.160599024873,105.964456824235,113.823640213203,105.15696110805],"Archive324_field8":[988.559327327369,923.115401126057,231.110829035235,300.578062755954,616.313247178093,951.586506189742,581.012213781323,266.930397099495,651.088583122524,424.038917217222,809.017389668638,458.731886050153,598.707023051288,405.215313795121,249.412089791205,345.392958918437,326.839703137802,402.127570642318,468.472434563178,285.360214010965,525.691970473173,605.610653446952,559.771759013736,664.613414485821,766.3609432402,760.982797485843,742.38426699291,367.3980752718,474.814331807107,378.208994405874,826.61161908926,679.77733035484,968.120183259593,664.763576545224,633.48446078566,525.375387575603,932.530814881159,560.173179163606,510.656464709214,722.028850960912,876.306367273276,844.695691896042,903.92994519854,836.46573864742,988.559327327369,923.115401126057,231.110829035235,300.578062755954,616.313247178093,951.586506189742,581.012213781323,266.930397099495,651.088583122524,424.038917217222,809.017389668638,458.731886050153,598.707023051288,405.215313795121,249.412089791205,345.392958918437,326.839703137802,402.127570642318,468.472434563178,285.360214010965,525.691970473173,605.610653446952,559.771759013736,664.613414485821,766.3609432402,760.982797485843,742.38426699291,367.3980752718,474.814331807107,378.208994405875,826.61161908926,679.77733035484,968.120183259593,664.763576545224,633.48446078566,525.375387575603,932.530814881159,560.173179163606,510.656464709214,722.028850960912,876.306367273276,844.695691896042,903.92994519854,836.46573864742,988.559327327369,923.115401126057,231.110829035235,300.578062755954,616.313247178093,951.586506189742,581.012213781323,266.930397099495,651.088583122524,424.038917217222,809.017389668638,458.731886050153,598.707023051288,405.215313795121,249.412089791205,345.392958918437,326.839703137802,402.127570642318,468.472434563178,285.360214010965,525.691970473173,605.610653446952,559.771759013736,664.613414485821,766.3609432402,760.982797485843,742.38426699291,367.3980752718,474.814331807107,378.208994405875,826.61161908926,679.77733035484,968.120183259593,664.763576545224,633.48446078566,525.375387575603,932.530814881159,560.173179163606,510.656464709214,722.028850960912,876.306367273276,844.695691896042,903.92994519854,836.46573864742,988.559327327369,923.115401126057,231.110829035235,300.578062755954,616.313247178093,951.586506189742,581.012213781323,266.930397099495,651.088583122524,424.038917217222,809.017389668638,458.731886050153,598.707023051288,405.215313795121,249.412089791205,345.392958918437,326.839703137802,402.127570642318,468.472434563178,285.360214010965,525.691970473173,605.610653446952,559.771759013736,664.613414485821,766.3609432402,760.982797485843,742.38426699291,367.3980752718,474.814331807107,378.208994405875,826.61161908926,679.77733035484,968.120183259593,664.763576545224,633.48446078566,525.375387575603,932.530814881159,560.173179163606,510.656464709214,722.028850960912,876.306367273276,844.695691896042,903.92994519854,836.46573864742,988.559327327369,923.115401126057,231.110829035235,300.578062755954,616.313247178093,951.586506189742,581.012213781323,266.930397099495,651.088583122524,424.038917217222,809.017389668638,458.731886050153,598.707023051288,405.215313795121,249.412089791205,345.392958918437,326.839703137802,402.127570642318,468.472434563178,285.360214010965,525.691970473173,605.610653446952,559.771759013736,664.613414485821,766.3609432402,760.982797485843,742.38426699291,367.3980752718,474.814331807107,378.208994405874,826.61161908926,679.77733035484,968.120183259593,664.763576545224,633.48446078566,525.375387575603,932.530814881159,560.173179163606,510.656464709214,722.028850960912,876.306367273276,844.695691896042,903.92994519854,836.46573864742],"Archive324_field9":[256.04021285994,256.060751607293,255.820415309353,255.970113164223,255.638135955167,256.092633186895,256.114228812691,255.752077280555,255.915474627269,255.61931139605,255.676766670802,255.598524390181,255.687288411942,256.013768738508,255.702407081969,255.669656293426,255.834778720911,255.669307584533,255.652100595912,255.849710521805,255.601796959028,255.70128303084,255.696175066311,255.524786632663,255.71556567658,255.880354636885,255.736746465859,255.703387075756,256.14619533706,255.705567985973,256.013616149018,255.655709740539,256.162505742836,256.048603566195,255.741390503096,255.694406070032,256.099739418986,256.080593867101,255.801012311335,255.74486146991,255.810307254315,255.847787998155,255.788543619039,255.852916043244,253.810212182062,253.913520755118,255.019656057707,254.976633811191,254.106949028851,253.889161532407,254.494578526644,254.86629284071,254.205892778674,254.443251881873,253.841456960722,254.336704362008,254.18330205739,254.758508072163,254.865020418378,254.639333583148,254.821641509135,254.515563925359,254.368873941259,254.907525745684,254.23349670288,254.164307043971,254.238572788733,253.952996389776,253.938737208854,254.010192642043,253.984731279468,254.606154195608,254.732417412268,254.589045142991,254.009158627918,254.017672077142,253.930080674765,254.26586914637,254.130653081879,254.300599738496,253.915027869373,254.480944527215,254.408684418731,254.003117727155,253.83451682735,253.896290635195,253.78824191003,253.93526717622,253.134628127301,253.178353585599,254.235668418739,254.11268170319,253.345789077744,253.168301008637,253.563636716647,254.075986484882,253.377218140356,253.647044604475,253.180384796944,253.551053567882,253.393499673398,253.848899021798,254.095785851263,253.839725273128,253.984101049996,253.705883268093,253.566219263828,254.083955949322,253.455051279994,253.377437437378,253.433875531136,253.26421896815,253.224392958909,253.25304475874,253.249880211167,253.791424185676,253.778003389297,253.77339141554,253.232826732867,253.280866607587,253.175018380765,253.392697292189,253.351325242696,253.491348868704,253.1783487767,253.561348397907,253.562513813717,253.260800749166,253.166489817285,253.192187478093,253.144540345225,253.207069134404,253.020518758241,253.030101579907,253.581228273124,253.490058129514,253.087956192292,253.031339481268,253.17591623115,253.484112577109,253.100006857342,253.234590358163,253.032691923409,253.18554107349,253.106320855127,253.329493577427,253.500134385891,253.342630889565,253.419058811178,253.265231725478,253.190959078345,253.482178951734,253.13730052107,253.099924611037,253.123418136877,253.060709158336,253.043178175611,253.054177011526,253.051770724269,253.312677860984,253.283005875598,253.302673558045,253.045604105051,253.062655672484,253.029654992715,253.102000900621,253.091441137869,253.152323380191,253.031935756258,253.176037312917,253.183984056174,253.056458613425,253.030159236644,253.035860634491,253.023558521364,253.038255406873,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive324_field10":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive324_field11":[0,0,0,0,0.180416122919835,0,0,0,0,0.149128115751615,0.347559584066399,0.132844665631304,0.221882156449357,0,0,0.0822165533162246,0.190973689430679,0.117943759139441,0.128998143560444,0,0.333339996471685,-0.023227451158762,0.152300714616247,0.244510959895232,0.459965964451738,0,0.0240723965913003,0.167460894486006,0,0.0313029537529284,0,-0.10380104117037,0,0,0.680520696542818,0.138055309013301,0,0,-0.117736066336199,0.244013210028221,-0.380596421206448,-0.550101540883611,1.07361082406315,0.406427417387217,0,0,0,0,0.180416139693606,0,0,0,0,0.149128118705855,0.347559621359917,0.132844669294131,0.221882172740782,0,0,0.0822165540641496,0.190973690838272,0.117943760963191,0.128998146852246,0,0.333340010224134,-0.0232274526449394,0.152300722418247,0.244510985247341,0.459966015958153,0,0.0240724004818866,0.167460896096502,0,0.0313029541308646,0,-0.103801052930055,0,0,0.680520730006369,0.138055315163219,0,0,-0.117736069708117,0.244013236691982,-0.380596422647632,-0.550101545272004,1.07361085985292,0.406427423134087,0,0,0,0,0.180416147489938,0,0,0,0,0.149128120165734,0.347559637409645,0.132844671089877,0.221882180361155,0,0,0.0822165544421405,0.190973691555269,0.117943761873196,0.128998148458896,0,0.333340016801264,-0.0232274533403115,0.152300726121053,0.244510996721923,0.459966038571316,0,0.0240724022102669,0.16746089690968,0,0.0313029543199526,0,-0.103801058262013,0,0,0.680520745460516,0.138055318109951,0,0,-0.117736071340516,0.244013248586667,-0.380596423259547,-0.550101547150662,1.0736108749299,0.406427425602111,0,0,0,0,0.180416149272401,0,0,0,0,0.149128120510353,0.347559641000559,0.132844671510547,0.221882182107582,0,0,0.0822165545330086,0.190973691729132,0.117943762089195,0.128998148834416,0,0.333340018322598,-0.0232274534996233,0.152300726974344,0.244510999322703,0.459966043654399,0,0.0240724025998021,0.167460897104807,0,0.031302954364953,0,-0.103801059471135,0,0,0.680520748982823,0.138055318791868,0,0,-0.117736071719992,0.244013251270226,-0.380596423396121,-0.550101547570449,1.07361087828862,0.406427426154413,0,0,0,0,0.18041614937954,0,0,0,0,0.149128120531613,0.347559641217003,0.132844671536265,0.22188218221262,0,0,0.0822165545387334,0.190973691740195,0.117943762102594,0.128998148857329,0,0.333340018414643,-0.0232274535092005,0.152300727025813,0.244510999478577,0.459966043958758,0,0.0240724026231379,0.167460897117076,0,0.0313029543677535,0,-0.103801059543614,0,0,0.680520749193788,0.138055318833103,0,0,-0.117736071743009,0.244013251430989,-0.38059642340445,-0.550101547595986,1.07361087849452,0.406427426187925],"Archive324_field12":[0,0,0,0,2.3392270675263,0,0,0,0,1.38556130033906,2.07488215527485,1.55207260577955,2.11360681152889,0,0,1.08170011499186,1.00161682739821,1.27364238096915,1.47022470786187,0,1.70169826642703,1.97173563726865,1.85155622940132,2.32780372845171,2.17366585694971,0,2.7321304960949,1.06536025528942,0,1.17098765201816,0,2.4199435891671,0,0,1.52556820711344,1.7982854363163,0,0,1.47622716719769,2.27067765772984,0.00303472287176419,-0.12503762992946,0.288672482806745,0.63580267316908,0,0,0,0,2.33922728501052,0,0,0,0,1.38556132778714,2.07488237791195,1.5520726485737,2.11360696671788,0,0,1.0817001248321,1.00161683478074,1.27364240066333,1.47022474537938,0,1.70169833663318,1.97173576342752,1.8515563242521,2.32780396980995,2.1736661003541,0,2.73213093766247,1.06536026553515,0,1.17098766615608,0,2.41994386332402,0,0,1.52556828213089,1.79828551642411,0,0,1.47622720947629,2.27067790585086,0.00303472288325561,-0.125037630926938,0.288672492429897,0.635802682159309,0,0,0,0,2.33922738609567,0,0,0,0,1.385561341351,2.07488247372658,1.55207266955404,2.11360703930809,0,0,1.08170012980522,1.00161683854124,1.27364241049022,1.47022476369078,0,1.70169837020938,1.97173582245638,1.85155636926799,2.32780407905075,2.17366620721736,0,2.73213113382743,1.06536027070846,0,1.17098767322952,0,2.4199439876295,0,0,1.52556831677547,1.79828555480774,0,0,1.47622722994403,2.27067801653747,0.00303472288813478,-0.125037631353956,0.288672496483797,0.635802686020211,0,0,0,0,2.33922740920659,0,0,0,0,1.38556134455288,2.07488249516384,1.55207267446889,2.11360705594422,0,0,1.08170013100075,1.00161683945312,1.27364241282274,1.47022476797068,0,1.70169837797578,1.97173583598006,1.85155637964165,2.32780410381081,2.17366623123854,0,2.73213117803827,1.06536027194983,0,1.17098767491291,0,2.4199440158181,0,0,1.52556832467166,1.79828556369029,0,0,1.47622723470207,2.27067804150947,0.00303472288922376,-0.125037631449373,0.288672497386889,0.635802686884216,0,0,0,0,2.33922741059573,0,0,0,0,1.38556134475041,2.07488249645597,1.55207267476936,2.11360705694479,0,0,1.08170013107607,1.00161683951114,1.27364241296743,1.47022476823182,0,1.70169837844567,1.97173583679305,1.85155638026738,2.32780410529477,2.17366623267685,0,2.7321311806868,1.06536027202788,0,1.17098767501767,0,2.41994401750784,0,0,1.52556832514459,1.79828556422741,0,0,1.47622723499068,2.27067804300546,0.00303472288929017,-0.125037631455178,0.288672497442252,0.635802686936641],"Archive324_field13":[0,0,0,0,0.00147911149541863,0,0,0,0,0.000878753186486659,0.0013237311797853,0.000982212028055719,0.00134014378018619,0,0,0.000683891420685159,0.000640465858015581,0.000806570887387454,0.000930613701532226,0,0.00108867783731536,0.00123574425947327,0.00117134932540555,0.00147596546207125,0.00139276796850924,0,0.00171583591184322,0.000678987487294594,0,0.000736721856696039,0,0.00151192483105771,0,0,0.000999946276308392,0.00113702974129785,0,0,0.000918898266220549,0.00144008943322921,-2.19770152621206e-05,-0.000112974264962609,0.000248498541775179,0.000424448108957864,0,0,0,0,0.00188944920798959,0,0,0,0,0.00121230584034764,0.000195236346366505,0.000878293897412417,0.00163035489585442,0,0,0.00117360548813869,0.000898095509606631,0.00116795499033338,0.00117137663246508,0,0.00134781133637266,0.00163234677806222,0.00146837927788375,0.00176915540932823,-0.000246130677404442,0,0.00068507912628625,0.00138402979716427,0,0.00118632399578258,0,0.00186711307900365,0,0,0.00143677591819539,0.00146233503780035,0,0,0.000892181756612384,0.00127465728960464,-0.00172227930349873,-0.00130595021359769,-0.00110759474252538,-0.000904911972068035,0,0,0,0,0.00242181997949738,0,0,0,0,0.00164505596131634,-0.00126886946384311,0.000743470837796931,0.00200687391026194,0,0,0.00180895890576248,0.00123234337072985,0.00163681353444592,0.00148374168898429,0,0.00168401031485476,0.00214689762282083,0.00185374497347105,0.00214953901636957,-0.00237243269997502,0,-0.000652221690328144,0.0022987493810686,0,0.00176963633609442,0,0.00232793308375611,0,0,0.0020035174066549,0.0018843850054444,0,0,0.000857519839912044,0.00106002604941796,-0.00392824602844384,-0.00285371351105414,-0.0028669858298783,-0.00262961954656849,0,0,0,0,0.00301262258583244,0,0,0,0,0.00212530378278376,-0.00289367240894509,0.000593849890270071,0.0024247188480683,0,0,0.00251404731122383,0.00160327753882502,0.00215713295681805,0.00183039125349203,0,0.0020571097634362,0.00271792444998596,0.00228140756354246,0.0025716726688885,-0.0047321130474904,0,-0.00213630181124658,0.00331386657156197,0,0.0024169717530232,0,0.0028393316581488,0,0,0.00263246324540173,0.00235275822724797,0,0,0.000819053506507958,0.00082183731914763,-0.00637633483870883,-0.00457135597540468,-0.004819483842542,-0.00454362728318343,0,0,0,0,0.00364488682731928,0,0,0,0,0.00263925467138785,-0.00463250158735647,0.000433728769981493,0.00287188751832502,0,0,0.00326861775556298,0.00200024330635377,0.00271396761013554,0.00220136816250018,0,0.0024563927702933,0.00332902508107366,0.00273908286989999,0.00302343102193382,-0.0072573922130488,0,-0.00372453244930668,0.00440022315349079,0,0.00310973619182439,0,0.00338661941117697,0,0,0.00330554756291124,0.00285400117153199,0,0,0.000777887664089859,0.000566932859087123,-0.00899622683078467,-0.00640954000704378,-0.00690900522283995,-0.00659195720200816],"Archive324_field14":[0,0,0,0,2.34617463941369,0,0,0,0,1.39356380697551,2.1037907155938,1.55774774708182,2.12522169221879,0,0,1.08482033909772,1.01966054605371,1.27909198085099,1.47587332745443,0,1.73403971362478,1.971872831809,1.85780982621114,2.34061060114163,2.22179969527533,0,2.73223708196458,1.07844150780485,0,1.17140620574238,0,2.42216925849861,0,0,1.67046932712666,1.80357729849616,0,0,1.48091501270764,2.28375163838788,0.38060852047879,0.564133075562925,1.11174280552064,0.754604840276809,0,0,0,0,2.34617515211843,0,0,0,0,1.39356408483193,2.10379053393788,1.55774772797478,2.12522205107975,0,0,1.08482076822571,1.01966074793733,1.27909227956252,1.47587353656754,0,1.73403996721868,1.97187324640593,1.85781013240448,2.34061104707306,2.22179952116417,0,2.73223707066769,1.07844219253563,0,1.17140658893127,0,2.42216978065953,0,0,1.67046972787214,1.80357761325908,0,0,1.48091503878405,2.28375178961098,0.380612417980749,0.564134580365739,1.1117433665401,0.754605274154682,0,0,0,0,2.34617574263888,0,0,0,0,1.39356454212916,2.10379100467793,1.55774767884997,2.12522244626708,0,0,1.08482164662091,1.01966110094765,1.27909280348327,1.47587383592394,0,1.73404029534064,1.97187379852663,1.8578105221266,2.34061147533743,2.22180088339946,0,2.73223725879918,1.07844375961221,0,1.17140733198039,0,2.4221703041349,0,0,1.67047034940261,1.80357804333372,0,0,1.48091503884025,2.28375179122592,0.38062879299631,0.564140288503634,1.11174652713723,0.75460931794607,0,0,0,0,2.34617645005582,0,0,0,0,1.39356519501683,2.10379263382344,1.55774761955826,2.12522289864746,0,0,1.084823052705,1.01966161764949,1.27909357749121,1.47587422942786,0,1.73404070572789,1.97187451644302,1.85781100848528,2.34061192597332,2.22180468066743,0,2.73223806033829,1.07844640238623,0,1.17140849045172,0,2.42217087783778,0,0,1.67047123079099,1.80357860241657,0,0,1.48091502183914,2.28375171820523,0.380661929657943,0.564151592405203,1.1117532802523,0.754618416107491,0,0,0,0,2.34617734850529,0,0,0,0,1.39356607380672,2.1037957454024,1.55774756704735,2.12522345688358,0,0,1.08482506390304,1.01966231915396,1.27909463791722,1.47587473640303,0,1.73404122584982,1.97187545425631,1.85781162751674,2.34061246741709,2.22181149569813,0,2.73223976641711,1.07845028779373,0,1.17141012478748,0,2.42217158290353,0,0,1.67047242761216,1.80357932647541,0,0,1.48091499993312,2.28375164220497,0.380714826541422,0.564169481761041,1.11176430215873,0.75463352918708],"Archive324_field15":[8892852.33999172,8304133.83198775,2079019.8625103,2703931.11959813,5544212.21956728,8560253.34478649,5226652.24236761,2401244.45831572,5857043.14339611,3814556.57033517,7277734.36345944,4126646.53857338,5385830.67675409,3645223.76337874,2243653.79498103,3107075.61804971,2940174.79629594,3617447.13615704,4214270.2726704,2567034.85239341,4729004.05722346,5447934.14795849,5035577.996583,5978709.41562911,6894006.7823719,6845626.22013922,6678318.11748681,3305028.5835878,4271320.52164042,3402281.12560653,7436008.00465459,6115120.51508616,8708986.50096115,5980060.23897823,5698680.50780182,4726156.15029098,8388832.72858348,5039189.0799246,4593748.1055372,6495205.47660864,7883050.52952592,7598688.16428766,8131545.88311867,7524653.3977523,7207971.8880847,6730794.67952984,1685119.25654642,2191631.97051339,4493780.43088634,6938388.61875913,4236386.81847445,1946293.70760192,4747340.97799466,3091833.24689165,5898861.54578976,3344793.22324233,4365406.57910708,2954583.00752992,1818560.8916602,2518394.8695899,2383115.84039818,2932069.06706344,3415815.36416555,2080672.69582063,3833025.3331449,4415743.64279369,4081514.37266099,4845955.80217652,5587836.74616238,5548622.58638885,5413013.44159915,2678842.761471,3462056.61219964,2757669.3923556,6027147.93948473,4956521.8312207,7058942.11133337,4847050.69235955,4618982.45118618,3830717.0036771,6799446.13603366,4084441.2836471,3723395.59229489,5264594.15863555,6389491.74424579,6159005.97249299,6590906.03232087,6098998.17122456,5022013.5330472,4689549.63942608,1174073.90630421,1526976.73995809,3130953.6841785,4834186.65915579,2951619.71549457,1356042.1004165,3307617.03952952,2154174.38482006,4109916.48864485,2330419.30423385,3041511.71202118,2058547.96310385,1267046.75744992,1754642.4033013,1660389.38374369,2042861.81511931,2379902.59279274,1449668.03401748,2670585.48430069,3076583.07730576,2843715.36585955,3376324.99084923,3893216.03849132,3865894.33911076,3771411.31796238,1866431.33601172,2412120.27857424,1921352.25041226,4199297.52609132,3453359.71057019,4918179.94888612,3377087.8341846,3218185.74474606,2668977.20086035,4737381.19995083,2845754.63388258,2594203.10507925,3668003.08341578,4451753.49004062,4291167.03342155,4592084.95861005,4249357.77074162,2596129.21450985,2424262.04981192,606937.346562786,789370.418537452,1618546.08222074,2499032.13753649,1525839.41144204,701005.779819248,1709872.17979933,1113600.15594916,2124620.77116158,1204709.94312678,1572309.06684971,1064166.09021779,654999.649347778,907062.152312495,858338.066640668,1056057.13814551,1230290.32243329,749405.693490883,1380558.80375777,1590439.20437501,1470058.27253894,1745390.7459116,2012597.50285715,1998473.55406945,1949630.56910648,964851.425909358,1246945.25072666,993242.785156916,2170826.2863421,1785213.83381909,2542452.45726617,1745785.09767031,1663640.68409528,1379727.4018515,2448988.56853528,1471112.47186675,1341072.94318299,1896173.69628829,2301333.36265186,2218318.21569139,2373877.69628831,2196704.92302178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive324_field16":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive324_field17":[73.3179995285086,116.016273077252,56.981484392739,59.8279379386296,105.196234874511,97.5010322957111,88.4258843864296,71.492023218361,108.724791212394,84.4621188976098,78.1508971574474,77.7237050593748,102.279736554286,69.7840204179067,68.3848500245294,74.221176997028,60.6965149370697,81.7565362919015,87.5705135982209,81.2015063736402,96.3880477016678,105.781351947254,99.7563493823114,106.898804598974,56.6960818579082,62.5613577414681,75.822873645519,80.7504280343574,70.7445602165872,76.9148008509553,52.6186089467792,106.99954045686,117.829288792666,122.697678689479,99.4155148104186,93.5442620333957,126.359308133724,66.0548868701981,81.935258285914,101.559876723339,49.0570754390354,66.0612933120461,86.8981049477209,59.3336471751445,73.3179995285086,116.016273077252,56.981484392739,59.8279379386296,105.196234874511,97.5010322957111,88.4258843864296,71.492023218361,108.724791212394,84.4621188976098,78.1508971574474,77.7237050593748,102.279736554286,69.7840204179067,68.3848500245294,74.221176997028,60.6965149370697,81.7565362919015,87.5705135982209,81.2015063736402,96.3880477016678,105.781351947254,99.7563493823114,106.898804598974,56.6960818579082,62.5613577414681,75.822873645519,80.7504280343574,70.7445602165872,76.9148008509553,52.6186089467792,106.99954045686,117.829288792666,122.697678689479,99.4155148104186,93.5442620333957,126.359308133724,66.0548868701981,81.9352582859139,101.559876723339,49.0570754390354,66.0612933120461,86.8981049477209,59.3336471751445,73.3179995285086,116.016273077252,56.981484392739,59.8279379386296,105.196234874511,97.5010322957111,88.4258843864296,71.492023218361,108.724791212394,84.4621188976098,78.1508971574474,77.7237050593748,102.279736554286,69.7840204179067,68.3848500245294,74.221176997028,60.6965149370697,81.7565362919015,87.5705135982209,81.2015063736402,96.3880477016678,105.781351947254,99.7563493823114,106.898804598974,56.6960818579082,62.5613577414681,75.822873645519,80.7504280343574,70.7445602165872,76.9148008509553,52.6186089467792,106.99954045686,117.829288792666,122.697678689479,99.4155148104186,93.5442620333957,126.359308133724,66.0548868701981,81.9352582859139,101.559876723339,49.0570754390354,66.0612933120461,86.8981049477209,59.3336471751445,73.3179995285086,116.016273077252,56.981484392739,59.8279379386296,105.196234874511,97.5010322957111,88.4258843864296,71.492023218361,108.724791212394,84.4621188976098,78.1508971574474,77.7237050593748,102.279736554286,69.7840204179067,68.3848500245294,74.221176997028,60.6965149370697,81.7565362919015,87.5705135982209,81.2015063736402,96.3880477016678,105.781351947254,99.7563493823114,106.898804598974,56.6960818579082,62.5613577414681,75.822873645519,80.7504280343574,70.7445602165872,76.9148008509553,52.6186089467792,106.99954045686,117.829288792666,122.697678689479,99.4155148104186,93.5442620333957,126.359308133724,66.0548868701981,81.9352582859139,101.559876723339,49.0570754390354,66.0612933120461,86.8981049477209,59.3336471751445,73.3179995285086,116.016273077252,56.981484392739,59.8279379386296,105.196234874511,97.5010322957111,88.4258843864296,71.492023218361,108.724791212394,84.4621188976098,78.1508971574474,77.7237050593748,102.279736554286,69.7840204179067,68.3848500245294,74.221176997028,60.6965149370697,81.7565362919015,87.5705135982209,81.2015063736402,96.3880477016678,105.781351947254,99.7563493823114,106.898804598974,56.6960818579082,62.5613577414681,75.822873645519,80.7504280343574,70.7445602165872,76.9148008509553,52.6186089467792,106.99954045686,117.829288792666,122.697678689479,99.4155148104186,93.5442620333957,126.359308133724,66.0548868701981,81.935258285914,101.559876723339,49.0570754390354,66.0612933120461,86.8981049477209,59.3336471751445],"Archive324_field18":[949.701186234276,929.652636713616,243.149617335065,308.74289395036,636.471894698558,942.510807466776,588.328132675775,289.033567695389,671.373862571142,443.184015280796,781.980320422355,467.819012977263,617.868690610982,412.819211033742,270.239688734207,362.352897427136,333.141529599826,420.870050465899,486.489593510244,314.429756618019,546.288921357582,626.823887305881,580.201049171769,680.390702692156,720.157095035326,719.330663704322,718.112357873332,388.490530673654,476.526573901827,394.459094594846,772.134737979037,694.469561318405,978.525769731083,701.033455815578,646.377880401816,542.46471657885,955.682377537439,550.270429392192,519.090683505855,728.982912129636,818.202843687438,804.792528383853,877.004409933058,790.642424714515,949.701186234276,929.652636713616,243.149617335065,308.74289395036,636.471894698558,942.510807466777,588.328132675775,289.033567695389,671.373862571142,443.184015280796,781.980320422355,467.819012977263,617.868690610982,412.819211033742,270.239688734207,362.352897427136,333.141529599826,420.870050465899,486.489593510244,314.429756618019,546.288921357582,626.82388730588,580.201049171769,680.390702692156,720.157095035326,719.330663704322,718.112357873332,388.490530673654,476.526573901827,394.459094594846,772.134737979037,694.469561318404,978.525769731083,701.033455815578,646.377880401817,542.46471657885,955.682377537439,550.270429392192,519.090683505855,728.982912129636,818.202843687438,804.792528383853,877.004409933058,790.642424714515,949.701186234276,929.652636713616,243.149617335065,308.74289395036,636.471894698558,942.510807466777,588.328132675775,289.033567695389,671.373862571142,443.184015280796,781.980320422355,467.819012977263,617.868690610982,412.819211033742,270.239688734207,362.352897427136,333.141529599826,420.870050465899,486.489593510244,314.429756618019,546.288921357582,626.82388730588,580.201049171769,680.390702692156,720.157095035326,719.330663704322,718.112357873332,388.490530673654,476.526573901827,394.459094594846,772.134737979037,694.469561318404,978.525769731083,701.033455815578,646.377880401817,542.46471657885,955.682377537439,550.270429392192,519.090683505855,728.982912129636,818.202843687438,804.792528383853,877.004409933058,790.642424714515,949.701186234276,929.652636713616,243.149617335065,308.74289395036,636.471894698558,942.510807466777,588.328132675775,289.033567695389,671.373862571142,443.184015280796,781.980320422355,467.819012977263,617.868690610982,412.819211033742,270.239688734207,362.352897427136,333.141529599826,420.870050465899,486.489593510244,314.429756618019,546.288921357582,626.82388730588,580.201049171769,680.390702692156,720.157095035326,719.330663704322,718.112357873332,388.490530673654,476.526573901827,394.459094594846,772.134737979037,694.469561318404,978.525769731083,701.033455815578,646.377880401817,542.46471657885,955.682377537439,550.270429392192,519.090683505855,728.982912129636,818.202843687438,804.792528383853,877.004409933058,790.642424714515,949.701186234276,929.652636713616,243.149617335065,308.74289395036,636.471894698558,942.510807466776,588.328132675775,289.033567695389,671.373862571142,443.184015280796,781.980320422355,467.819012977263,617.868690610982,412.819211033742,270.239688734207,362.352897427136,333.141529599826,420.870050465899,486.489593510244,314.429756618019,546.288921357582,626.823887305881,580.201049171769,680.390702692156,720.157095035326,719.330663704322,718.112357873332,388.490530673654,476.526573901827,394.459094594846,772.134737979037,694.469561318405,978.525769731083,701.033455815578,646.377880401816,542.46471657885,955.682377537439,550.270429392192,519.090683505855,728.982912129636,818.202843687438,804.792528383853,877.004409933058,790.642424714515],"Archive324_field19":[262.518317950564,263.156874443192,257.635267887254,258.906142288928,262.351840798149,262.156504990175,262.139451308455,258.180491476481,262.554255091236,260.618176652218,263.316023231691,260.944620516079,262.237853060241,260.411373649221,257.889917679759,259.591403849241,259.329114366658,260.329983927697,261.066304386866,258.338968330573,261.626855185874,262.26826084132,261.918178574397,262.551775439693,263.003442270522,262.661541201199,262.964515599654,259.918428108464,261.250579339828,260.043418377989,263.28507179613,262.695664926609,262.402934900952,262.739076100958,262.457731243322,261.64417220274,261.857622978532,261.919925403181,261.531390932279,262.91938496443,263.82155321433,263.721897208059,263.976003384139,263.639545599275,259.096159561849,259.934158850761,256.727437495883,257.734905314145,260.088741236476,258.838963158516,259.981942360796,257.137058345473,260.173691334718,259.000589508536,260.45499294091,259.20762297806,260.030319018519,258.858525696489,256.912553816901,258.25754396526,258.062761486447,258.791384619669,259.295163245189,257.227164387917,259.660894269801,260.037989754936,259.838554376775,260.133194742921,260.262526958186,259.925183784216,260.298418896801,258.504750887458,259.452131854255,258.589946393875,260.356988766874,260.229123046869,259.035857499667,260.318774293196,260.137702668915,259.67877804204,258.594845556688,259.835582929137,259.615045168823,260.319683436168,260.768581345047,260.759229191655,260.843329728824,260.698266528637,256.108166964142,256.911447381678,255.566732010715,256.258482403084,257.597415047034,255.948434973919,257.554600263891,255.821241940953,257.593253200955,257.054872904785,257.595727432779,257.15618163402,257.577438322797,256.972402335904,255.673257980756,256.604951151984,256.482496093474,256.927021898234,257.210683627869,255.842995372951,257.40549694862,257.572116137562,257.489534793705,257.545901195098,257.480296056704,257.144124899865,257.55311940346,256.766545171899,257.325753220992,256.810499483672,257.449400019673,257.599461654008,256.080476303509,257.706766903695,257.605639108401,257.421909841771,255.769303000088,257.478057238248,257.396355049028,257.606112515322,257.764747338794,257.803017942356,257.789552937668,257.754965702148,254.179981595597,254.664532243964,254.307843632219,254.667233226591,255.25501564417,254.110105277194,255.235164414829,254.421483305324,255.224717188926,255.049215788182,255.180696235771,255.084616170551,255.250493234902,255.011501345289,254.348321222897,254.845011255372,254.787074581483,254.989921502061,255.111509845509,254.406270639858,255.192467249549,255.245355743014,255.221895641006,255.200470818805,255.116544168257,254.857839499656,255.172491427187,254.926581865149,255.17348936693,254.94045671509,255.054215437289,255.220867651395,254.167018059476,255.29794645146,255.249920620415,255.203769471833,254.012591191282,255.207599052738,255.196136622454,255.209598104439,255.244738174997,255.286346814761,255.250958205683,255.248517574463,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive324_field20":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive324_field21":[0,0,0,0,-0.142674272148814,0,0,0,0,0.513745749487988,4.37800130254044,-0.527970992409119,1.32543063660337,0,0,-0.28415851094005,1.24578193769012,0.0260176152488757,0.426896572081922,0,-0.409631480840679,-0.63005220332338,0.020734552849169,-1.36126441424346,-0.905802843996836,0,1.54588190289492,0.213312579009046,0,-0.741479634734686,0,3.19938874223018,0,0,-3.212504515691,2.00503211124274,0,0,-1.78628873278431,-3.16872557078018,6.39327530648166,0.550426040560125,-9.33520704721749,-3.98335941843032,0,0,0,0,-0.142674275703161,0,0,0,0,0.513745779934504,4.3780062362626,-0.52797101399412,1.32543069559829,0,0,-0.284158513240509,1.2457819615638,0.0260176155602347,0.426896597283474,0,-0.409631555125429,-0.630052618185235,0.020734557592645,-1.36126548980602,-0.905806523717596,0,1.54588687702195,0.213312579463824,0,-0.741479639950331,0,3.19939157544989,0,0,-3.21250600913199,2.00503230139045,0,0,-1.78628882694752,-3.16873583002265,6.39331063849232,0.550428737058909,-9.33528782565778,-3.98336276935557,0,0,0,0,-0.142674277084436,0,0,0,0,0.513745794216643,4.37800779628291,-0.527971023986729,1.32543071897763,0,0,-0.284158514383694,1.24578197361339,0.0260176157109486,0.426896608732978,0,-0.409631586718878,-0.630052782808759,0.0207345595576713,-1.36126587776278,-0.905807763077254,0,1.54588859959918,0.213312579690121,0,-0.741479642501817,0,3.19939259368788,0,0,-3.21250658118266,2.00503238335501,0,0,-1.78628886938655,-3.16873937592514,6.39332142181243,0.550429584821679,-9.33531220256399,-3.98336382801555,0,0,0,0,-0.142674277376808,0,0,0,0,0.513745797489737,4.37800809606858,-0.527971026253894,1.32543072396587,0,0,-0.284158514653569,1.24578197649697,0.0260176157459074,0.426896611311953,0,-0.409631593648153,-0.630052817932175,0.0207345599843211,-1.36126595726593,-0.905808008943692,0,1.5458889460182,0.213312579743449,0,-0.741479643097142,0,3.19939280202623,0,0,-3.21250670155571,2.00503240143403,0,0,-1.78628887890317,-3.16874008922977,6.39332346342926,0.550429747692689,-9.33531677836444,-3.98336403201635,0,0,0,0,-0.142674277392936,0,0,0,0,0.513745797682013,4.37800811206279,-0.527971026385146,1.32543072424222,0,0,-0.284158514669983,1.24578197667573,0.0260176157479824,0.426896611460358,0,-0.409631594038805,-0.630052819878395,0.0207345600081909,-1.36126596158645,-0.905808022155408,0,1.545888964739,0.213312579746683,0,-0.741479643132764,0,3.19939281334495,0,0,-3.2125067081705,2.0050324024567,0,0,-1.78628887944743,-3.16874012778427,6.39332357208721,0.550429756423329,-9.33531702295798,-3.98336404292392],"Archive324_field22":[0,0,0,0,-0.969050647635079,0,0,0,0,2.11391392148523,-2.37810822410092,1.63520911499601,0.265332973892786,0,0,0.911350837408092,0.967645889219856,1.03325537122441,1.9427173746395,0,3.06319913785917,5.12775807598402,3.28713363597331,-4.81002263428824,-10.3464331028563,0,-9.36716000557753,-0.421051423599769,0,0.374287316839278,0,-4.12908006264966,0,0,2.61784947421677,1.06463988884138,0,0,0.216895758129416,-8.89872143956112,8.33166417730868,10.2420271544044,8.51072675738638,1.6016446023111,0,0,0,0,-0.969050671776379,0,0,0,0,2.11391404676376,-2.3781109040739,1.63520918184815,0.265332985702758,0,0,0.911350844786105,0.96764590776344,1.03325538358962,1.94271748932651,0,3.06319969335599,5.12776145238873,3.287134387976,-4.81002643478447,-10.3464751340609,0,-9.36719014594192,-0.42105142449744,0,0.374287319472054,0,-4.12908371915781,0,0,2.61785069121232,1.06463998980676,0,0,0.216895769562955,-8.89875025055747,8.33171022169648,10.2420773293811,8.51080040151978,1.60164594966412,0,0,0,0,-0.969050681158067,0,0,0,0,2.1139141055306,-2.37811175146907,1.63520921279683,0.26533299038298,0,0,0.911350848452518,0.96764591712281,1.03325538957503,1.94271754143081,0,3.06319992960987,5.12776279219772,3.28713469949967,-4.81002780562821,-10.3464892905099,0,-9.36720058377452,-0.421051424944122,0,0.374287320760004,0,-4.12908503327951,0,0,2.61785115737277,1.06464003332863,0,0,0.21689577471601,-8.8987602085036,8.33172427443119,10.2420931040877,8.51082262547121,1.60164637533423,0,0,0,0,-0.969050683143875,0,0,0,0,2.11391411899843,-2.37811191431113,1.6352092198186,0.265332991381558,0,0,0.911350849318059,0.967645919362597,1.03325539096337,1.94271755316719,0,3.06319998142656,5.127763078054,3.28713476713822,-4.81002808655229,-10.3464920988922,0,-9.36720268287559,-0.421051425049385,0,0.374287321060515,0,-4.12908530215767,0,0,2.617851255464,1.0646400429283,0,0,0.216895775871543,-8.8987622116746,8.33172693504958,10.2420961347025,8.51082679713951,1.60164645735967,0,0,0,0,-0.969050683253412,0,0,0,0,2.11391411978959,-2.3781119229991,1.63520922022511,0.265332991436878,0,0,0.911350849370701,0.967645919501446,1.03325539104577,1.94271755384255,0,3.06319998434783,5.12776309389355,3.2871347709224,-4.8100281018188,-10.3464922498016,0,-9.36720279631291,-0.421051425055769,0,0.374287321078496,0,-4.12908531676542,0,0,2.61785126085435,1.06464004347132,0,0,0.216895775937628,-8.89876231994707,8.33172707665173,10.2420962971575,8.51082702013068,1.60164646174542],"Archive324_field23":[0,0,0,0,-0.000616998788181603,0,0,0,0,0.0013586500632452,-0.00121748250623552,0.000992913286936686,0.000249655977156718,0,0,0.000554013722959369,0.000685336033258686,0.000649967777848525,0.00124578000778573,0,0.00189635646614629,0.00317797367557675,0.0020638723268427,-0.00310354836386255,-0.00654890085287947,0,-0.0057806010115377,-0.000250811784623021,0,0.000188328041935017,0,-0.00239011281519912,0,0,0.00144104571640574,0.000793836610630967,0,0,2.40107922934854e-05,-0.00578249409571526,0.00562901267807067,0.00646108602091883,0.00475445930785981,0.00075503543380229,0,0,0,0,-0.00637357318252938,0,0,0,0,0.00126465174858808,0.00283203995793518,0.00327222058515915,-0.0050313333393593,0,0,0.00114048462559115,0.00135483782447775,0.00144923432034704,0.00196901182354358,0,0.0022570149187243,-0.00317959975971568,0.000369588306713691,-0.0121654116548172,0.00817556870299013,0,0.000185031814590168,-4.78312491520341e-05,0,-0.000260717000843933,0,-0.0112642621056105,0,0,-0.00463103628435484,0.00367827726264418,0,0,0.00356727656105107,-0.0100979199631662,0.0121667256724092,0.0072206280488165,0.0017778857460606,0.00684289017715472,0,0,0,0,-0.0138421502908778,0,0,0,0,0.00114269825116723,0.00808588384657347,0.00622938801966309,-0.0118828821316914,0,0,0.00190137035151371,0.00222344735643594,0.00248619852723159,0.00290733096574191,0,0.00272493921304117,-0.0114279085599521,-0.0018285629080742,-0.0239222687455314,0.0272791067392926,0,0.0079248664467056,0.000215515224846618,0,-0.000843307377551498,0,-0.0227775736126717,0,0,-0.0125089554311749,0.00742054610743488,0,0,0.008164301838795,-0.0156967204747305,0.0206487165203661,0.0082060289037099,-0.00208395697183705,0.0147412723923109,0,0,0,0,-0.0221304668152014,0,0,0,0,0.00100735930176232,0.0139163803245044,0.00951112820612899,-0.0194864450764086,0,0,0.00274576930641661,0.0031873935853243,0.00363697716133258,0.00394863812059624,0,0.00324422401000062,-0.0205815378863909,-0.00426797621947026,-0.0369695401141143,0.0484794233106201,0,0.0165142199668324,0.000507766076440492,0,-0.00148984185761563,0,-0.0355545667299642,0,0,-0.0212515436795135,0.0115735596722242,0,0,0.0132658877457472,-0.021910027996751,0.0300616704822767,0.00929958066525,-0.00636967584574781,0.0235065694375456,0,0,0,0,-0.0310004456043492,0,0,0,0,0.000862522456304792,0.0201560526235754,0.0130231760619603,-0.0276236150924739,0,0,0.0036494269179329,0.0042189881088615,0.00486851562814755,0.00506302266607879,0,0.0037999517623574,-0.0303775557706847,-0.0068785835529171,-0.050932450411442,0.0711675485353291,0,0.0257063630897583,0.000820526657533796,0,-0.00218174919506332,0,-0.0492282308318382,0,0,-0.0306076745051756,0.0160180256969994,0,0,0.0187254954521571,-0.0285593752823531,0.0401352115626966,0.0104698760216778,-0.010956160602472,0.032887002675016],"Archive324_field24":[0,0,0,0,0.979497568298494,0,0,0,0,2.17544676066688,4.98219786970027,1.71833151762642,1.35172779131366,0,0,0.954623860541576,1.5774383261746,1.03358308854462,1.98906838317573,0,3.09046768377292,5.16632158931756,3.287199677841,4.99893670492668,10.3860098032004,0,9.49386490546065,0.472002776035728,0,0.830592005584259,0,5.22354249531095,0,0,4.14407084997407,2.27015693074362,0,0,1.79940857154323,9.44606258919868,10.5019345262528,10.2568089971158,12.6324416942329,4.2932992277022,0,0,0,0,0.979518134519614,0,0,0,0,2.17544683291725,4.98220414046632,1.71833441665062,1.35173719207961,0,0,0.954624388775284,1.57743878935273,1.03358391256661,1.98906908505332,0,3.0904684865643,5.16632499211388,3.28719980273308,4.99895449412204,10.3860531482404,0,9.49389369547694,0.472002712827651,0,0.830592030994641,0,5.22355871953926,0,0,4.14407511354307,2.27015998714594,0,0,1.79941220224659,9.44609679975033,10.5019981035893,10.2568597510677,12.6325502343455,4.2933082262411,0,0,0,0,0.979595210849438,0,0,0,0,2.1754468259178,4.98221167237069,1.71834262504901,1.35178008177473,0,0,0.954625604874019,1.57743978979315,1.03358589270377,1.98907028857807,0,3.09046910207713,5.1663380028088,3.28720060207119,4.99899835525275,10.3860999654323,0,9.49390758026139,0.472002760106699,0,0.83059242104275,0,5.2235978978533,0,0,4.14409214307137,2.27016922791513,0,0,1.79942723048432,9.44611501454536,10.5020290685774,10.2568762895707,12.6325832680592,4.29332922137072,0,0,0,0,0.979747382485947,0,0,0,0,2.17544677289793,4.98222488772556,1.71835766320725,1.35186830789463,0,0,0.954627661055322,1.57744144667929,1.03358930281173,1.98907209519328,0,3.09046965584777,5.16636664762964,3.28720293181416,4.99907810968475,10.3861801041571,0,9.49392076304379,0.47200298414238,0,0.830593329772689,0,5.22366957811911,0,0,4.14412790963112,2.27018662208422,0,0,1.79945761835664,9.44612950908183,10.5020551480316,10.2568802577506,12.6325908940364,4.2933684846215,0,0,0,0,0.979987858991717,0,0,0,0,2.17544671146565,4.98224624181256,1.71838069173456,1.35201008325414,0,0,0.95463068797571,1.57744386866809,1.03359437009824,1.98907462029026,0,3.09047029213625,5.16641497547653,3.28720736174301,4.99920088343781,10.3863109364283,0,9.49394131726427,0.47200342422876,0,0.8305948590799,0,5.22378056065929,0,0,4.14418645861112,2.27021363184417,0,0,1.79950614965247,9.4461473872821,10.5020889927873,10.2568815482732,12.632594370246,4.29343010212415],"Archive324_field25":[8543293.44009071,8362941.29976925,2187318.03313426,2777380.06311183,5725554.77617245,8478610.44648541,5292464.56608075,2600079.49726715,6039524.85170161,3986781.46914253,7034515.10704581,4208392.24237048,5558204.63093755,3713626.67404101,2431014.08472452,3259643.3240881,2996864.57772823,3786050.17387962,4376348.49061165,2828537.77169168,4914289.49008089,5638763.52070962,5219355.19210793,6120638.27155702,6478367.59080593,6470933.20463143,6459973.60558619,3494771.46111813,4286723.45770884,3548463.28938348,6945946.51186968,6247288.44562126,8802592.76357378,6306335.73082211,5814666.74518225,4879887.82345852,8597098.86137997,4950106.2206134,4669620.39796147,6557762.61144842,7360364.59515815,7239728.48305962,7889329.96074351,7112437.40497409,6924642.01512758,6778460.21566746,1772898.76075319,2251164.94146754,4640764.99783404,6872214.15714465,4289730.03852102,2107456.55123567,4895248.86775468,3231427.62916303,5701723.72140618,3411051.01235363,4505121.77604169,3010025.99008115,1970423.04451988,2642056.40068368,2429064.91672187,3068727.80260601,3547185.50210629,2292630.07674749,3983205.74098795,4570417.61033786,4230472.30071042,4960994.16832995,5250946.45563986,5244920.62225117,5236037.47893532,2832636.08614507,3474541.23759658,2876155.21521191,5629935.73710269,5063648.62152162,7134813.30357462,5111508.53817417,4712993.40588102,3955321.97136747,6968253.2153648,4012236.47004216,3784892.77339833,5315298.93277156,5965836.27610342,5868056.43320829,6394581.44572279,5764882.50460066,4824608.98175319,4722759.67010598,1235232.56020786,1568455.17389712,3233362.30838258,4788080.89640727,2988785.56146757,1468329.16178684,3410668.97085672,2251434.04229224,3972564.56256889,2376583.12378715,3138855.54474865,2097176.77756205,1372853.74430565,1840801.15812343,1692403.50459647,2138076.11811048,2471432.16877059,1597345.1964664,2775220.74818582,3184349.14108592,2947498.89084187,3456475.72403913,3658494.3130982,3654295.93145969,3648106.77497561,1973583.82908433,2420818.69730727,2003904.93167927,3922547.68760323,3527998.20791679,4971041.71917601,3561343.66942128,3283686.03998343,2755793.27669167,4854994.23313657,2795447.34124808,2637050.06404925,3703330.64376908,4156579.82296826,4088453.62854035,4455299.64006638,4016569.21031978,2494080.95850274,2441429.97066587,638553.304400123,810812.689334335,1671486.20660798,2475197.76973938,1545052.29047503,759052.560959268,1763144.86171659,1163878.52268298,2053616.71161286,1228574.32338124,1622630.94797033,1084135.2506107,709696.556846699,951601.908927569,874887.76207176,1105278.15915789,1277606.52431608,825747.382581661,1434649.98922602,1646148.8564242,1523709.15169695,1786824.65655907,1891258.13876279,1889087.78594441,1885888.30233972,1020243.89266453,1251441.89711048,1035918.38253695,2027760.49488577,1823798.19489528,2569779.34224512,1841036.12669564,1697501.05283099,1424606.96047308,2509788.61008263,1445106.12376516,1363222.67280895,1914436.2738196,2148743.37550867,2113525.54854269,2303166.54442652,2076364.90829702,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive324_field26":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive324_field27":[87.7752403081012,-254.375124389698,86.9217417786287,85.5006044572444,-74.1275155998118,-144.673741547877,135.1104123525,85.5750794485404,-11.8021391200454,87.8341485778595,137.59898294699,160.368939693718,-61.2122222313329,113.190438702348,89.3131820040975,110.093314904149,84.9733348841328,144.451991216603,108.706960958053,60.6202248345095,70.3396679249604,-88.6794651470637,21.7906886793179,-212.829234000257,484.220773123956,522.93030099782,177.152975494956,99.6075764417774,105.093133236334,71.1833516503926,648.243090169125,-144.702504447444,-517.282909049478,-143.290997974977,-47.9195355682679,142.914199306001,-341.05748988755,257.998778902724,170.273667394891,-120.620329778921,432.673499943439,102.129090249093,-17.9855235196732,410.574376337024,87.7752403081012,-254.375124389698,86.9217417786287,85.5006044572444,-74.1275155998118,-144.673741547877,135.1104123525,85.5750794485404,-11.8021391200454,87.8341485778596,137.59898294699,160.368939693718,-61.2122222313329,113.190438702348,89.3131820040975,110.093314904149,84.9733348841328,144.451991216603,108.706960958053,60.6202248345095,70.3396679249604,-88.6794651470637,21.7906886793179,-212.829234000257,484.220773123956,522.93030099782,177.152975494956,99.6075764417774,105.093133236334,71.1833516503926,648.243090169125,-144.702504447444,-517.282909049478,-143.290997974977,-47.9195355682679,142.914199306001,-341.05748988755,257.998778902724,170.273667394891,-120.620329778921,432.673499943439,102.129090249093,-17.9855235196732,410.574376337024,87.7752403081012,-254.375124389698,86.9217417786287,85.5006044572444,-74.1275155998118,-144.673741547877,135.1104123525,85.5750794485404,-11.8021391200454,87.8341485778596,137.59898294699,160.368939693718,-61.2122222313329,113.190438702348,89.3131820040975,110.093314904149,84.9733348841328,144.451991216603,108.706960958053,60.6202248345095,70.3396679249604,-88.6794651470637,21.7906886793179,-212.829234000257,484.220773123956,522.93030099782,177.152975494956,99.6075764417774,105.093133236334,71.1833516503926,648.243090169125,-144.702504447444,-517.282909049478,-143.290997974977,-47.9195355682679,142.914199306001,-341.05748988755,257.998778902724,170.273667394891,-120.620329778921,432.673499943439,102.129090249093,-17.9855235196732,410.574376337024,87.7752403081012,-254.375124389698,86.9217417786287,85.5006044572444,-74.1275155998118,-144.673741547877,135.1104123525,85.5750794485404,-11.8021391200454,87.8341485778596,137.59898294699,160.368939693718,-61.2122222313329,113.190438702348,89.3131820040975,110.093314904149,84.9733348841328,144.451991216603,108.706960958053,60.6202248345095,70.3396679249604,-88.6794651470637,21.7906886793179,-212.829234000257,484.220773123956,522.93030099782,177.152975494956,99.6075764417774,105.093133236334,71.1833516503926,648.243090169125,-144.702504447444,-517.282909049478,-143.290997974977,-47.9195355682679,142.914199306001,-341.05748988755,257.998778902724,170.273667394891,-120.620329778921,432.673499943439,102.129090249093,-17.9855235196732,410.574376337024,87.7752403081012,-254.375124389698,86.9217417786287,85.5006044572444,-74.1275155998118,-144.673741547877,135.1104123525,85.5750794485404,-11.8021391200454,87.8341485778595,137.59898294699,160.368939693718,-61.2122222313329,113.190438702348,89.3131820040975,110.093314904149,84.9733348841328,144.451991216603,108.706960958053,60.6202248345095,70.3396679249604,-88.6794651470637,21.7906886793179,-212.829234000257,484.220773123956,522.93030099782,177.152975494956,99.6075764417774,105.093133236334,71.1833516503926,648.243090169125,-144.702504447444,-517.282909049478,-143.290997974977,-47.9195355682679,142.914199306001,-341.05748988755,257.998778902724,170.273667394891,-120.620329778921,432.673499943439,102.129090249093,-17.9855235196732,410.574376337024],"Archive324_field28":[964.158427013869,559.261239246665,273.089874720955,334.415560468975,457.148144224235,700.336033623188,635.012660641845,303.116623925569,550.846932238703,446.556044961046,841.428406211897,550.464247611607,454.376731825363,456.225629318184,291.168020713775,398.225035334256,357.418349546889,483.565505390601,507.626040870076,293.848475078889,520.240541580874,432.363070211563,502.235388468776,360.662664092925,1147.68178630137,1179.69960696067,819.442459722769,407.347679081074,510.875146921573,388.727645394283,1367.75921920138,442.7675164141,343.413571888939,435.044779151123,499.04283002313,591.834653851456,488.265579516165,742.214321424718,607.429092614832,506.802705627376,1201.81926819184,840.860325320901,772.120781465664,1141.88315387639,964.158427013869,559.261239246665,273.089874720955,334.415560468975,457.148144224235,700.336033623188,635.012660641845,303.116623925569,550.846932238703,446.556044961046,841.428406211897,550.464247611607,454.376731825363,456.225629318184,291.168020713775,398.225035334257,357.418349546889,483.565505390601,507.626040870076,293.848475078889,520.240541580874,432.363070211563,502.235388468776,360.662664092925,1147.68178630137,1179.69960696067,819.442459722769,407.347679081074,510.875146921573,388.727645394283,1367.75921920138,442.7675164141,343.413571888939,435.044779151123,499.04283002313,591.834653851456,488.265579516165,742.214321424718,607.429092614832,506.802705627376,1201.81926819184,840.8603253209,772.120781465664,1141.88315387639,964.158427013869,559.261239246665,273.089874720955,334.415560468975,457.148144224235,700.336033623188,635.012660641845,303.116623925569,550.846932238703,446.556044961046,841.428406211897,550.464247611607,454.376731825363,456.225629318184,291.168020713775,398.225035334257,357.418349546889,483.565505390601,507.626040870076,293.848475078889,520.240541580874,432.363070211563,502.235388468776,360.662664092925,1147.68178630137,1179.69960696067,819.442459722769,407.347679081074,510.875146921573,388.727645394283,1367.75921920138,442.7675164141,343.413571888939,435.044779151123,499.04283002313,591.834653851456,488.265579516165,742.214321424718,607.429092614832,506.802705627376,1201.81926819184,840.8603253209,772.120781465664,1141.88315387639,964.158427013869,559.261239246665,273.089874720955,334.415560468975,457.148144224235,700.336033623188,635.012660641845,303.116623925569,550.846932238703,446.556044961046,841.428406211897,550.464247611607,454.376731825363,456.225629318184,291.168020713775,398.225035334257,357.418349546889,483.565505390601,507.626040870076,293.848475078889,520.240541580874,432.363070211563,502.235388468776,360.662664092925,1147.68178630137,1179.69960696067,819.442459722769,407.347679081074,510.875146921573,388.727645394283,1367.75921920138,442.7675164141,343.413571888939,435.044779151123,499.04283002313,591.834653851456,488.265579516165,742.214321424718,607.429092614832,506.802705627376,1201.81926819184,840.8603253209,772.120781465664,1141.88315387639,964.158427013869,559.261239246665,273.089874720955,334.415560468975,457.148144224235,700.336033623188,635.012660641845,303.116623925569,550.846932238703,446.556044961046,841.428406211897,550.464247611607,454.376731825363,456.225629318184,291.168020713775,398.225035334256,357.418349546889,483.565505390601,507.626040870076,293.848475078889,520.240541580874,432.363070211563,502.235388468776,360.662664092925,1147.68178630137,1179.69960696067,819.442459722769,407.347679081074,510.875146921573,388.727645394283,1367.75921920138,442.7675164141,343.413571888939,435.044779151123,499.04283002313,591.834653851456,488.265579516165,742.214321424718,607.429092614832,506.802705627376,1201.81926819184,840.860325320901,772.120781465664,1141.88315387639],"Archive324_field29":[266.733407455848,267.83544586,257.955322431673,259.37102578743,265.11175711844,267.453104193372,264.371730230166,258.781024695128,265.489929043627,262.016884807989,266.968651207284,262.429134766207,264.839354506795,261.381114687256,258.426834307253,260.49932412319,259.938987634167,261.573501654926,262.751081381143,259.132638089846,263.799070988748,264.97565506202,264.3038013147,265.641524379172,266.11395392791,265.475386753062,266.200714071478,261.012139628086,262.575811666186,261.113193334616,265.991732670687,265.812514904239,267.662379971263,265.695226604305,265.245476361855,263.744159996828,266.732783633377,263.836096737039,263.334614508958,266.377939114439,267.330761274773,267.269850291083,268.157714197452,267.130111183739,263.188176618961,264.36337489598,256.996310904557,258.153435902781,262.652124784554,263.962203332759,262.086316770913,257.642407391452,262.904304247291,260.277141079529,263.988128416287,260.594797259103,262.446187405698,259.758600628859,257.361828035653,259.073351774161,258.626461405823,259.921076186017,260.846699314435,257.896653492055,261.669451148467,262.549209349743,262.049453415,263.022785345399,263.351400030535,262.713205821723,263.446612297166,259.485384836379,260.709500418769,259.562330313438,263.035090202194,263.143525307698,264.04680587021,263.003301220095,262.749303785246,261.629240418233,263.188020739618,261.692666140935,261.307228508349,263.590476078043,264.219384158125,264.208233804525,264.855171145926,264.117625235976,259.278594756729,260.41772272099,255.759549824961,256.578654613905,259.605410078899,260.077902122673,259.226634802197,256.182918095984,259.73007601165,258.046480826409,260.41876879633,258.252165095345,259.468883698128,257.676537345155,255.994566788922,257.231882325486,256.927133095839,257.801194053807,258.42228625241,256.325843476693,258.979643323701,259.535759332815,259.223129954397,259.8143949211,259.99931908556,259.401543114434,260.096486161445,257.518300476205,258.330130666109,257.565056183937,259.530643480754,259.884214683366,260.055478733278,259.729549337922,259.665450089242,258.956556067741,259.303011606875,258.991872951441,258.736692994665,260.209463895761,260.52063444519,260.552550057693,260.977778908298,260.507646729425,255.841624011879,256.635363048279,254.408123257223,254.84149594086,256.371220442548,256.446296662974,256.172380326379,254.608211046059,256.405651539645,255.599184888112,256.75715209053,255.697431050646,256.299874576093,255.39925283985,254.515596957749,255.191234328519,255.037517731919,255.474080344785,255.78412365449,254.659320995993,256.068507090449,256.333149516475,256.1868276402,256.456054359728,256.533492939124,256.112853190172,256.605383334816,255.340749864869,255.737135658888,255.359916968062,256.123105269587,256.485402308902,256.383030830776,256.35847629897,256.401129409435,256.060473141929,255.875170776074,256.076201768903,255.946044868498,256.676984861363,256.774637534681,256.814142327704,257.044165618951,256.800453075816,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive324_field30":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive325.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive325.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive325.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive325_field1":[102804.84163222,102934.002717965,72454.9381317601,75594.3136572649,90241.6266773997,102869.422175092,88117.6684693782,74507.5478103921,91054.441821813,82093.992093342,97634.7965162465,83581.6048072845,89605.3529802306,96869.488609076,95544.7550394907,102901.712446528,95346.2496775635,91611.2232500348,94636.2288021224,83402.1372147233,88222.4226101135,80200.3719730198,73617.0262857615,82760.9932872603,97717.8468448047,102837.131903656,75255.9774833028,82847.4294803746,82727.6040817814,67464.7213103563,69049.366570239,76503.3074284546,82753.3647374085,75385.7736458,68597.7824465842,76869.669973094,72462.848122786,79976.4128588662,73210.5706780723,76214.072776349,79708.5270838762,78949.6755384749,82707.0044925125,79018.7053700774,77153.0895882702,78698.0409098296,72989.2261575735,75472.5261250353,71356.8704453346,68125.1480875151,72772.1755956038,79989.3331815743,82874.6693128339,68968.076676834,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05],"Archive325_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive325_field3":[272.26841454,272.3301255222,257.767743971218,259.26768449941,266.26592292279,272.2992700311,265.25113161461,258.748446158811,266.654272251225,262.373120923718,269.798254427256,263.083877117671,265.961922111911,269.432603253261,268.799667959623,272.31469777665,268.704825455119,266.920293000494,268.365589489786,262.998130537374,265.301181371292,261.468381258012,258.322970036198,262.691802812833,269.837934469567,272.28384228555,259.106033197947,262.733100563963,262.675850015185,255.38350277609,256.140619479331,259.701986348999,262.68815802074,259.168047609078,255.924860222926,259.877028176347,257.771523231145,261.361377381207,258.128772421439,259.563794924199,261.233386088809,260.870819655268,262.666007879844,260.90380094127,260.012441274854,260.750592885728,258.02301775326,259.209496476367,257.243105802835,255.699043520074,257.91931466584,261.367550492869,262.746115295191,256.10178054316,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive326.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive326.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive326.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive326_field1":[62487.7060377926,62488.6803551467,62522.7271292672,62513.4678469093,62495.3429022138,62488.1110853842,62496.0615235591,62517.5816577339,62493.9119137574,62503.1383072566,62490.7196732053,62501.2014472996,62495.9174602271,62491.2355305854,62491.4881290006,62488.3382264599,62491.9323423366,62494.3262685352,62492.386073717,62500.4058089461,62496.8948591836,62504.3663515261,62521.4975980573,62502.7117558088,62490.2403990881,62487.9983628718,62516.1192318156,62473.1688627599,62472.8704230032,62464.6425569875,62466.8455695375,62471.236010219,62473.0758010966,62471.0998489925,62465.8711215676,62471.6317834465,62469.3372181989,62472.4105118426,62469.8080535221,62471.104875766,62472.2765341759,62472.2253402902,62473.0118383357,62472.0984859676,62471.4985687858,62472.0067135436,62470.0296802108,62470.8930561883,62469.0424020643,62464.9407538309,62469.443132584,62472.5298227593,62473.0991680147,62466.2180079108,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05],"Archive326_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive326_field3":[253.005569057713,253.006034570065,253.022301542889,253.017877614386,253.009217822367,253.005762582601,253.009561167491,253.019843123619,253.008534120285,253.012942335049,253.007008921742,253.01201693612,253.009492336468,253.007255389673,253.007376076923,253.005871106765,253.007588314542,253.00873209199,253.007805099722,253.011636793572,253.009959321158,253.01352907383,253.021714093673,253.012738535981,253.006779932675,253.005708725691,253.01914440125,252.998623441357,252.998480851889,252.994549716669,252.995602278804,252.997699957104,252.998578978068,252.997634901573,252.995136704046,252.997889050858,252.996792746392,252.998261114115,252.997017703546,252.99763730328,252.998197101852,252.998172642279,252.998548417743,252.998112033429,252.997825403147,252.998068186117,252.99712359303,252.997536099469,252.996651888229,252.994692190077,252.996843350494,252.998318118853,252.998590142386,252.995302440473,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive326_field4":[62499.3537199721,62501.2959113989,62568.8039253944,62550.5643058572,62514.5808636898,62500.1654797314,62516.0205353602,62558.6657943854,62511.7376080061,62530.0986520137,62505.3654450686,62526.2466179547,62515.7262529941,62506.3953103413,62506.9051745872,62500.6180729309,62507.7819176319,62512.5575483709,62508.6886633992,62524.6781311725,62517.6719875093,62532.5572455813,62566.3503576331,62529.2389304599,62504.4127347351,62499.9383692362,62555.7766078072,62470.2939710559,62469.6990626754,62453.6156323439,62457.8454383951,62466.4535111544,62470.1087491787,62466.1838729345,62455.9673801529,62467.2361662329,62462.6972473164,62468.7844143396,62463.6250820792,62466.1931075032,62468.517555793,62468.4153312367,62469.9812262093,62468.1635950797,62466.9731912733,62467.981421178,62464.0658033212,62465.7759777129,62462.1195102736,62454.200785435,62462.9130350359,62469.0213096191,62470.155197258,62456.6407077734,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05],"Archive326_field5":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive326_field6":[253.011134123255,253.012062069469,253.044316256758,253.035601675039,253.018409394978,253.011521968338,253.019097245753,253.039472429233,253.017050935502,253.025823531779,253.014006423826,253.023983095057,253.018956642615,253.014498476035,253.014742080548,253.011738209714,253.015160973546,253.01744268914,253.015594201337,253.023233698601,253.019886281658,253.026998206202,253.04314398358,253.025412771362,253.013551234943,253.011413458785,253.038092024753,252.997249866725,252.996965629563,252.989281238578,252.991302168368,252.99541495994,252.997161370845,252.995286131359,252.990404863905,252.995788899299,252.99362028061,252.996528626058,252.994063584367,252.99529054348,252.996401125558,252.996352284394,252.997100442527,252.996232009116,252.995663254311,252.996144969507,252.994274153522,252.995091245921,252.993344247622,252.989560814828,252.993723380333,252.996641810616,252.997183562952,252.990726568454,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive326_field7":[62510.9930519434,62513.8966955823,62614.2902481465,62587.3429921967,62533.7641630464,62512.2131829889,62535.9273331798,62599.3085762157,62529.5271673259,62556.9314691929,62519.9873681874,62551.1858635021,62535.4766234219,62521.5293809579,62522.3011614039,62512.8895515454,62523.59880297,62530.7439870311,62524.9578369655,62548.8672798008,62538.3817531996,62560.6231241572,62610.6184195494,62555.6322868577,62518.5670382366,62511.8700225023,62595.0276706591,62467.4253195431,62466.5359041129,62442.9624709025,62449.0471291002,62461.7023200606,62467.1488360835,62461.3018678107,62446.3346494634,62462.8630918686,62456.1298218842,62465.1716755281,62457.5008780037,62461.3145364872,62464.7730406232,62464.6199525365,62466.9581500957,62464.2452886652,62462.4737671982,62463.9740853014,62458.1581289404,62460.6985290381,62455.2809726875,62443.8232737184,62456.4592246266,62465.5244380118,62467.2180827001,62447.3143862899,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05],"Archive326_field8":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive326_field9":[253.016695199209,253.018082511028,253.066048852435,253.053173909315,253.027574850954,253.017278157185,253.028608377057,253.058890862979,253.025550486061,253.03864379799,253.020992531384,253.035898644769,253.028393035558,253.021729279005,253.022098022649,253.017601314642,253.022718013841,253.026131861936,253.023367337298,253.034790864692,253.029781057429,253.040407608293,253.064294514835,253.038023070644,253.020313921757,253.017114200909,253.05684551871,252.995879273551,252.995454325902,252.984191338224,252.987098484998,252.993144921195,252.995747174431,252.992953591883,252.985802508105,252.993699518332,252.990482475817,252.994802520558,252.991137543241,252.992959644762,252.994612059543,252.994538916644,252.995656067891,252.994359908583,252.993513505589,252.994230332203,252.991451566622,252.992665326822,252.990076910027,252.98460261525,252.990639858876,252.994971064506,252.995780259293,252.98627060979,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive327.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive327.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive327.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive327_field1":[0,0,0,0,17.2087231350641,0,0,0,0,22.984123369491,29.7733242907383,0.42604653279435,16.7538701620102,21.2440254173356,0,0,22.7689924960538,16.6356971085313,18.8958887945368,0,0,12.2073305273531,0,0,0,0,0,0,0,0,17.2088198251434,0,0,0,0,22.984482681343,29.7747644647349,0.426108646274671,16.753932073899,21.244328205028,0,0,22.7693419564859,16.6359267295838,18.8962481854464,0,0,12.2075307332962,0,0,0,0,0,0,0,0,17.2088513150546,0,0,0,0,22.9845981957656,29.7752147028003,0.426123363587441,16.7539533559657,21.2444219674091,0,0,22.7694578085007,16.6359983278256,18.8963691079985,0,0,12.2075940730187,0,0,0,0],"Archive327_field2":[0,0,0,0,157.109940250184,0,0,0,0,139.920345941553,204.575094824263,143.553837066659,159.290695005623,166.748168740954,0,0,165.349622456014,175.293608741726,159.388250323607,0,0,117.791359919561,0,0,0,0,0,0,0,0,157.110839625518,0,0,0,0,139.922726948995,204.584508804492,143.556600465653,159.291537992799,166.750367303772,0,0,165.352583000384,175.296065626056,159.392143358713,0,0,117.793189332763,0,0,0,0,0,0,0,0,157.111129646852,0,0,0,0,139.923472475015,204.587484107492,143.557465564279,159.29181438382,166.751052705083,0,0,165.353520203043,175.296853729707,159.393358605008,0,0,117.793770691742,0,0,0,0],"Archive327_field3":[0,0,0,0,-0.322649507127097,0,0,0,0,-0.843997209545125,-0.851026419621412,-0.838272219444349,-0.433318202371307,-0.637693704103202,0,0,-0.493391515363848,-0.442700582598287,-0.790005766776631,0,0,-0.476179738734491,0,0,0,0,0,0,0,0,-0.299464872154675,0,0,0,0,-0.771538914723212,-1.12532624725056,-0.777515261739849,-0.323572792421511,-0.889640443267882,0,0,-0.577313175402774,-0.34866488266989,-0.912817339274826,0,0,-0.403747611928394,0,0,0,0,0,0,0,0,-0.276281547739324,0,0,0,0,-0.699081668619125,-1.39963474481675,-0.716759702768922,-0.213825598779221,-1.14158999941321,0,0,-0.661232223894826,-0.254624086761079,-1.03563128326674,0,0,-0.331315766148731,0,0,0,0],"Archive327_field4":[0,0,0,0,158.049921164359,0,0,0,0,141.798044650685,206.732059699613,143.556916770049,160.169926782291,168.097195240297,0,0,166.910659038957,176.081775512942,160.506364558131,0,0,118.423182432525,0,0,0,0,0,0,0,0,158.050780089246,0,0,0,0,141.800039609546,206.742893954952,143.559338378998,160.17051231547,168.100559002474,0,0,166.913908733014,176.084031784052,160.510924224694,0,0,118.424753628297,0,0,0,0,0,0,0,0,158.051029588508,0,0,0,0,141.800418260549,206.747578078801,143.559887311294,160.170605306123,168.102772941761,0,0,166.915164321536,176.084662027456,160.51289065058,0,0,118.425113624464,0,0,0,0],"Archive327_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4272990.75,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2136495.375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive327_field6":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-680.299364613881,-656.769305962854,-829.323069403714,-652.847629521017,-564.609909579668,-629.31757086999,-343.035190615836,-201.854838709677,-374.408602150538,-719.516129032258,-860.696480938416,-233.228250244379,-405.782013685239,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-680.299364613881,-656.769305962854,-829.323069403715,-652.847629521017,-564.609909579668,-629.31757086999,-343.035190615836,-201.854838709677,-374.408602150538,-719.516129032258,-860.696480938416,-233.228250244379,-405.782013685239,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-680.299364613881,-656.769305962854,-829.323069403714,-652.847629521017,-564.609909579668,-629.31757086999,-343.035190615836,-201.854838709677,-374.408602150538,-719.516129032258,-860.696480938416,-233.228250244379,-405.782013685239],"Archive327_field7":[122.498833717792,116.18704760481,43.4023222623584,50.6568795779019,83.3161983938462,118.58764940215,79.7096733761954,47.1499161572015,86.8078327562904,63.4144666012991,103.050689652783,67.0419631920546,81.6020846062364,100.216109292728,97.5327983450313,116.982951757374,97.2600467260755,87.2496500983898,94.4566225651874,61.3561927006376,45.3640662998342,65.268408919357,104.961445626143,120.016784984502,49.0411719629043,68.5690392095806,122.498833717792,116.18704760481,43.4023222623584,50.6568795779019,83.3161983938462,118.58764940215,79.7096733761954,47.1499161572015,86.8078327562904,63.4144666012992,103.050689652783,67.0419631920546,81.6020846062364,100.216109292728,97.5327983450313,116.982951757374,97.2600467260755,87.2496500983898,94.4566225651874,61.3561927006376,45.3640662998342,65.268408919357,104.961445626143,120.016784984502,49.0411719629043,68.5690392095806,122.498833717792,116.18704760481,43.4023222623584,50.6568795779019,83.3161983938462,118.58764940215,79.7096733761954,47.1499161572015,86.8078327562904,63.4144666012991,103.050689652783,67.0419631920546,81.6020846062364,100.216109292728,97.5327983450313,116.982951757374,97.2600467260755,87.2496500983898,94.4566225651874,61.3561927006376,45.3640662998342,65.268408919357,104.961445626143,120.016784984502,49.0411719629043,68.5690392095806],"Archive327_field8":[998.882020423559,929.823411241174,229.570455204685,299.571835589632,614.591858217893,963.597424573215,579.61192166554,264.69146063423,649.456904115039,422.136362984486,806.88011291769,457.137271109943,597.191038662932,780.515473906609,754.302104307886,946.306021161088,750.107676247092,651.859559678057,723.774193435178,404.391383316473,247.218905009512,439.677011069895,824.477574658401,980.713265922919,282.269422207284,474.35105289482,998.882020423559,929.823411241174,229.570455204685,299.571835589632,614.591858217893,963.597424573215,579.611921665541,264.69146063423,649.456904115039,422.136362984486,806.880112917691,457.137271109943,597.191038662933,780.515473906609,754.302104307886,946.306021161088,750.107676247092,651.859559678057,723.774193435178,404.391383316473,247.218905009512,439.677011069895,824.477574658401,980.713265922919,282.269422207284,474.35105289482,998.882020423559,929.823411241174,229.570455204685,299.571835589632,614.591858217893,963.597424573215,579.61192166554,264.69146063423,649.456904115039,422.136362984486,806.88011291769,457.137271109943,597.191038662932,780.515473906609,754.302104307886,946.306021161088,750.107676247092,651.859559678057,723.774193435178,404.391383316473,247.218905009512,439.677011069895,824.477574658401,980.713265922919,282.269422207284,474.35105289482],"Archive327_field9":[272.26841454,272.3301255222,272.9472353442,272.885524362,272.6078249421,272.2992700311,272.6386804332,272.9163798531,272.576969451,272.77753014315,272.43811974105,272.74667465205,272.62325268765,272.461261359375,272.4844029777,272.31469777665,272.488259914087,272.575040982806,272.511401532412,272.7929578887,272.93180759865,272.7621023976,272.4226919955,272.28384228555,272.90095210755,272.7312469065,271.860591977055,271.849246817626,271.440687564915,271.551872291533,271.774276274756,271.85546744096,271.760193095637,271.502198908806,271.786668471817,271.680752419575,271.827157930961,271.704097787368,271.766982246387,271.821709629818,271.815684198262,271.852969911344,271.813803327083,271.7859515484,271.807619952096,271.661174209038,271.455219117665,271.68682863298,271.830311766748,271.857269402072,271.519912793941,271.708590393824,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272],"Archive327_field10":[103411.088224541,103505.707351355,106958.446325458,106013.251216878,104135.811716456,103454.429338045,104254.54428968,106433.800965533,104031.800636902,104922.396395132,103691.385415349,104725.698239055,104197.09673839,103737.172926506,103788.044862314,103475.228736226,103803.2007913,104037.842377926,103855.39533914,105088.459486852,106833.592555981,104871.750786404,103665.017856783,103439.05736873,106283.212734678,104689.084707607,101951.269007977,101927.523589291,101072.409073368,101305.118706178,101770.610243065,101940.543353928,101741.134149168,101201.152316131,101796.547111514,101574.86481417,101881.291549502,101623.72666896,101755.343841688,101869.888255208,101857.277026963,101935.316024443,101853.340363585,101795.046590801,101840.398559737,101533.887619517,101102.823613273,101587.582328828,101887.892527803,101944.314858537,101238.227477718,101633.129694273,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05],"Archive327_field11":[0.00181510955784669,0.00171169051913245,0.00818213398217905,0.00573891834494578,0.00185803626539168,0.00175151845195335,0.0020201680927915,0.0068046944101632,0.00173998076634567,0.00314962816023763,0.00159087065069124,0.00275406644405516,0.00194484689562576,0.00158294281836438,0.00159023781433526,0.0017171146398126,0.00161144548237918,0.00177015449374906,0.00162270039461316,0.00355014558623521,0.00790499776050004,0.00309467206056076,0.00160860332395611,0.00180217205112034,0.00645050890292196,0.00274112255180433,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive327_field12":[0,0,0,0,17.4874461386789,0,0,0,0,23.7093197410823,31.2626163634646,-0.229644761022653,16.7650914341332,21.499095225177,0,0,23.5284141018758,16.6382346302415,18.9405142377698,0,0,12.3190536189855,0,0,0,0,0,0,0,0,17.4875462973221,0,0,0,0,23.7096875139623,31.2640845307514,-0.229594578808582,16.7651549197729,21.4993991056364,0,0,23.5287735591135,16.6384634660807,18.9408665857869,0,0,12.3192563878036,0,0,0,0,0,0,0,0,17.4875788395902,0,0,0,0,23.7098055861259,31.2645435588491,-0.229583574974052,16.7651767187121,21.4994933387134,0,0,23.5288922895807,16.6385349304218,18.9409850203655,0,0,12.3193204677094,0,0,0,0],"Archive327_field13":[0,0,0,0,157.998924153675,0,0,0,0,141.609447349239,202.410915828533,145.110788638653,159.803618222441,166.811256948145,0,0,165.55448273742,175.830475000301,159.240011355126,0,0,118.57652549839,0,0,0,0,0,0,0,0,157.999843989733,0,0,0,0,141.611834308672,202.42000832164,145.113554274743,159.804491535088,166.813436866799,0,0,165.557435094354,175.832958382468,159.243845171753,0,0,118.578371453155,0,0,0,0,0,0,0,0,158.00014022501,0,0,0,0,141.612580999051,202.422882021866,145.114419463276,159.804777126581,166.814116288945,0,0,165.55836957026,175.833753771313,159.245041651816,0,0,118.578957559293,0,0,0,0],"Archive327_field14":[0,0,0,0,-0.322044039153993,0,0,0,0,-0.841675884677093,-0.852297893187711,-0.836315266693001,-0.432839784909778,-0.637545447051523,0,0,-0.493115709786941,-0.442301518985004,-0.789872088636941,0,0,-0.475041951379277,0,0,0,0,0,0,0,0,-0.299931184920542,0,0,0,0,-0.768610513238656,-1.12655367024522,-0.774774612970024,-0.324953033798957,-0.888749057403009,0,0,-0.577284154391863,-0.352686220187372,-0.912448142867043,0,0,-0.403273095996653,0,0,0,0,0,0,0,0,-0.277819619742941,0,0,0,0,-0.69554617334034,-1.40081791138164,-0.713235315874031,-0.217064575478372,-1.13995545478089,0,0,-0.661450117892937,-0.26306608780078,-1.03502654638851,0,0,-0.331504552732779,0,0,0,0],"Archive327_field15":[0,0,0,0,158.964066752631,0,0,0,0,143.582992862792,204.812735053593,145.113380290286,160.681212461376,168.192190675782,0,0,167.218767450628,176.616484001568,160.364423092805,0,0,119.215674918164,0,0,0,0,0,0,0,0,158.964948762288,0,0,0,0,143.584998033909,204.823269853918,145.115804182798,160.681833225621,168.195531320258,0,0,167.222010385033,176.618776203474,160.368922219111,0,0,119.217267556427,0,0,0,0,0,0,0,0,158.96520659734,0,0,0,0,143.58538143775,204.827871982312,145.116353831666,160.68193756585,168.197732165216,0,0,167.223264001741,176.619418563498,160.370868564656,0,0,119.217635976827,0,0,0,0],"Archive327_field16":[8985712.91286564,8364477.54814102,2065163.01381665,2694879.33144214,5528727.00040078,8668300.80405299,5214055.53656122,2381103.50082959,5842364.93433095,3797441.63004495,7258507.91338157,4112301.74933269,5372193.22987285,7021337.68470485,6785528.24086975,8512751.31598028,6747796.1307533,5863978.67116508,6510906.17607837,3637811.87429683,2223924.40911741,3955233.26587223,7416810.63178481,8822270.97619141,2539230.80020962,4267152.97109964,4492856.45643282,4182238.77407051,1032581.50690832,1347439.66572107,2764363.50020039,4334150.4020265,2607027.76828061,1190551.75041479,2921182.46716547,1898720.81502247,3629253.95669079,2056150.87466635,2686096.61493642,3510668.84235243,3392764.12043487,4256375.65799014,3373898.06537665,2931989.33558254,3255453.08803918,1818905.93714842,1111962.20455871,1977616.63293611,3708405.3158924,4411135.48809571,1269615.40010481,2133576.48554982,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive327_field17":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-680.299364613881,-656.769305962854,-829.323069403714,-652.847629521017,-564.609909579668,-629.31757086999,-343.035190615836,-201.854838709677,-374.408602150538,-719.516129032258,-860.696480938416,-233.228250244379,-405.782013685239,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-680.299364613881,-656.769305962854,-829.323069403715,-652.847629521017,-564.609909579668,-629.31757086999,-343.035190615836,-201.854838709677,-374.408602150538,-719.516129032258,-860.696480938416,-233.228250244379,-405.782013685239,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-680.299364613881,-656.769305962854,-829.323069403714,-652.847629521017,-564.609909579668,-629.31757086999,-343.035190615836,-201.854838709677,-374.408602150538,-719.516129032258,-860.696480938416,-233.228250244379,-405.782013685239],"Archive327_field18":[121.383974387677,116.009718841348,42.9754662330969,50.2309565348091,82.9066654809875,117.190722467651,79.3204795740845,46.8441617390621,86.2613404166582,63.0531936456188,102.426275776175,66.6819115977017,81.2895905587033,99.4817171150497,96.8359184591889,115.789924193378,96.7406967358972,86.9136448627598,93.8560743173938,60.7505151732029,45.08789881346,64.9452788350758,104.430757725334,118.249940160731,48.8151133433179,67.9232279080779,121.383974387677,116.009718841348,42.9754662330969,50.2309565348091,82.9066654809875,117.190722467651,79.3204795740845,46.8441617390621,86.2613404166582,63.0531936456188,102.426275776175,66.6819115977017,81.2895905587033,99.4817171150497,96.8359184591889,115.789924193378,96.7406967358973,86.9136448627599,93.8560743173938,60.7505151732029,45.08789881346,64.9452788350758,104.430757725334,118.249940160731,48.8151133433179,67.9232279080779,121.383974387677,116.009718841348,42.9754662330969,50.2309565348091,82.9066654809875,117.190722467651,79.3204795740845,46.8441617390621,86.2613404166582,63.0531936456188,102.426275776175,66.6819115977017,81.2895905587033,99.4817171150497,96.8359184591889,115.789924193378,96.7406967358972,86.9136448627598,93.8560743173938,60.7505151732029,45.08789881346,64.9452788350758,104.430757725334,118.249940160731,48.8151133433179,67.9232279080779],"Archive327_field19":[997.767161093445,929.646082477711,229.143599175423,299.145912546539,614.182325305035,962.200497638716,579.22272786343,264.38570621609,648.910411775407,421.775090028805,806.255699041082,456.77721951559,596.878544615399,779.78108172893,753.605224422043,945.112993597092,749.588326256914,651.523554442427,723.173645187384,403.785705789039,246.942737523137,439.353880985613,823.946886757592,978.946421099148,282.043363587697,473.705241593317,997.767161093445,929.646082477711,229.143599175423,299.145912546539,614.182325305035,962.200497638716,579.22272786343,264.38570621609,648.910411775407,421.775090028806,806.255699041082,456.77721951559,596.878544615399,779.78108172893,753.605224422043,945.112993597092,749.588326256914,651.523554442427,723.173645187384,403.785705789039,246.942737523137,439.353880985614,823.946886757592,978.946421099148,282.043363587697,473.705241593317,997.767161093445,929.646082477711,229.143599175423,299.145912546539,614.182325305035,962.200497638716,579.22272786343,264.38570621609,648.910411775407,421.775090028805,806.255699041082,456.77721951559,596.878544615399,779.78108172893,753.605224422043,945.112993597092,749.588326256914,651.523554442427,723.173645187384,403.785705789039,246.942737523137,439.353880985613,823.946886757592,978.946421099148,282.043363587697,473.705241593317],"Archive327_field20":[272.26841454,272.3301255222,272.9472353442,272.885524362,272.6078249421,272.2992700311,272.6386804332,272.9163798531,272.576969451,272.77753014315,272.43811974105,272.74667465205,272.62325268765,272.461261359375,272.4844029777,272.31469777665,272.488259914087,272.575040982806,272.511401532412,272.7929578887,272.93180759865,272.7621023976,272.4226919955,272.28384228555,272.90095210755,272.7312469065,271.934602748377,271.91590030818,271.782925318873,271.79010467222,271.847564971462,271.928226075612,271.841061584584,271.780868922944,271.856969168858,271.812927993098,271.889966267898,271.819389797102,271.844619132755,271.884759267986,271.881369641623,271.924014473128,271.87823935271,271.856321906282,271.873067799885,271.81180248176,271.779786183834,271.812608211072,271.895598257279,271.934191099296,271.783318713086,271.825173908884,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272],"Archive327_field21":[102804.84163222,102934.002717965,104225.61357541,104096.452489666,103515.227603815,102869.422175092,103579.808146688,104161.033032538,103450.647060943,103870.420589613,103160.034618018,103805.840046741,103547.517875251,103208.470025172,103256.905432326,102901.712446528,103264.978000185,103446.610777013,103313.413407339,103902.710861049,104193.323303974,103838.130318177,103127.744346581,102837.131903656,104128.742761102,103773.549775304,102106.173552353,102067.02934502,101788.712692401,101803.739078955,101924.00348527,102092.827176256,101910.391896535,101784.408655722,101943.68647042,101851.508289554,102012.749398711,101865.032845334,101917.837844857,102001.851147894,101994.756659917,102084.012292258,101988.204965222,101942.331749849,101977.38090516,101849.152594323,101782.142482765,101850.838985774,102024.537152484,102105.311970826,101789.536066489,101877.138991293,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05],"Archive327_field22":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive327_field23":[0,0,0,0,17.7542940188744,0,0,0,0,24.4992656174444,32.6883637782607,-0.916299860951821,16.8918228480015,21.678298927091,0,0,24.1649303050229,16.5158237974637,18.9352793396361,0,0,12.4390562202064,0,0,0,0,0,0,0,0,17.7543916517252,0,0,0,0,24.49963723726,32.6898237033546,-0.916261693161611,16.8918836633806,21.6785892241035,0,0,24.1652866464346,16.516042851656,18.9356214207267,0,0,12.439260106952,0,0,0,0,0,0,0,0,17.7544233234611,0,0,0,0,24.4997564817155,32.690280046368,-0.916254356675524,16.891904584588,21.6786793463004,0,0,24.1654040424821,16.5161113869702,18.935736303545,0,0,12.4393245107393,0,0,0,0],"Archive327_field24":[0,0,0,0,158.928442302627,0,0,0,0,143.389681828572,199.087741261272,146.644287079503,160.103018462086,166.473199835764,0,0,165.609857413042,176.03136183309,158.75281596415,0,0,119.625064252891,0,0,0,0,0,0,0,0,158.92932690972,0,0,0,0,143.3920426848,199.096286365112,146.647030673502,160.103864661843,166.475258495619,0,0,165.612723279916,176.033789359745,158.756553722078,0,0,119.626914972742,0,0,0,0,0,0,0,0,158.929611626223,0,0,0,0,143.39278123708,199.098986742187,146.647889011795,160.104140999863,166.475899858661,0,0,165.613630415849,176.034566080748,158.75772025451,0,0,119.627502512414,0,0,0,0],"Archive327_field25":[0,0,0,0,-0.32143887288396,0,0,0,0,-0.84053042803409,-0.854276380383262,-0.835410324590842,-0.43263977381872,-0.637738911879962,0,0,-0.493036527176796,-0.442178759558996,-0.790172502284674,0,0,-0.474379285148397,0,0,0,0,0,0,0,0,-0.300999636483478,0,0,0,0,-0.766834085140399,-1.12758796191459,-0.77303046820588,-0.327266414189901,-0.887886473379926,0,0,-0.578035761920403,-0.358187258577228,-0.912210918983089,0,0,-0.403233000742383,0,0,0,0,0,0,0,0,-0.280561677823376,0,0,0,0,-0.69313875602633,-1.40090758086582,-0.710651919543046,-0.221891446212077,-1.13803667313491,0,0,-0.663032660722211,-0.274191311229214,-1.03425162577574,0,0,-0.332087073360068,0,0,0,0],"Archive327_field26":[0,0,0,0,159.91737882981,0,0,0,0,145.470001588279,201.755266685034,146.649529317013,160.992227691194,167.879961933669,0,0,167.364308662366,176.805000796292,159.880035504126,0,0,120.270990487582,0,0,0,0,0,0,0,0,159.918229028715,0,0,0,0,145.471984122685,201.765277668748,146.651930491727,160.992826910583,167.883177430975,0,0,167.367467914874,176.807248058276,159.884437132138,0,0,120.272592783048,0,0,0,0,0,0,0,0,159.918478338389,0,0,0,0,145.47236239198,201.769728832959,146.652473214101,160.992924197347,167.885334378617,0,0,167.368697624027,176.807877571842,159.886351907197,0,0,120.272966345166,0,0,0,0],"Archive327_field27":[8975683.89474958,8362882.33937052,2061323.1151543,2691047.82570878,5525042.93650927,8655734.37064344,5210554.438632,2378353.00440752,5837448.81493685,3794191.70162843,7252890.8297628,4109062.80800176,5369382.10529487,7014731.26158466,6779259.26969908,8502019.11441092,6743124.17769216,5860956.04534656,6505503.78216731,3632363.33856586,2221440.06992851,3952326.46195395,7412036.68548734,8806376.84653108,2537197.2288613,4261343.40116792,4487841.94737479,4181441.16968526,1030661.55757715,1345523.91285439,2762521.46825463,4327867.18532172,2605277.219316,1189176.50220376,2918724.40746843,1897095.85081421,3626445.4148814,2054531.40400088,2684691.05264743,3507365.63079233,3389629.63484954,4251009.55720546,3371562.08884608,2930478.02267328,3252751.89108366,1816181.66928293,1110720.03496426,1976163.23097698,3706018.34274367,4403188.42326554,1268598.61443065,2130671.70058396,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive327_field28":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-680.299364613881,-656.769305962854,-829.323069403714,-652.847629521017,-564.609909579668,-629.31757086999,-343.035190615836,-201.854838709677,-374.408602150538,-719.516129032258,-860.696480938416,-233.228250244379,-405.782013685239,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-680.299364613881,-656.769305962854,-829.323069403715,-652.847629521017,-564.609909579668,-629.31757086999,-343.035190615836,-201.854838709677,-374.408602150538,-719.516129032258,-860.696480938416,-233.228250244379,-405.782013685239,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-680.299364613881,-656.769305962854,-829.323069403714,-652.847629521017,-564.609909579668,-629.31757086999,-343.035190615836,-201.854838709677,-374.408602150538,-719.516129032258,-860.696480938416,-233.228250244379,-405.782013685239],"Archive327_field29":[120.275194669911,115.830738885728,42.5501047796989,49.8061811485558,82.4942563671362,115.801823589904,78.9295409605268,46.5404824947564,85.7102879067266,62.6936687395537,101.796644806471,66.3241183965382,80.9720035287962,98.7471210233548,96.1400072072618,114.599229763521,96.2176881846514,86.5671500232933,93.2558698769006,60.147349443952,44.815512069124,64.6216301160567,103.891576656481,116.510923925707,48.5922106693821,67.2802437382707,120.275194669911,115.830738885728,42.5501047796989,49.8061811485558,82.4942563671362,115.801823589904,78.9295409605268,46.5404824947564,85.7102879067266,62.6936687395537,101.796644806471,66.3241183965382,80.9720035287962,98.7471210233548,96.1400072072617,114.599229763521,96.2176881846514,86.5671500232933,93.2558698769006,60.147349443952,44.815512069124,64.6216301160567,103.891576656481,116.510923925707,48.5922106693821,67.2802437382707,120.275194669911,115.830738885728,42.5501047796989,49.8061811485558,82.4942563671362,115.801823589904,78.9295409605268,46.5404824947564,85.7102879067266,62.6936687395537,101.796644806471,66.3241183965382,80.9720035287962,98.7471210233548,96.1400072072618,114.599229763521,96.2176881846514,86.5671500232933,93.2558698769006,60.147349443952,44.815512069124,64.6216301160567,103.891576656481,116.510923925707,48.5922106693821,67.2802437382707],"Archive327_field30":[996.658381375679,929.467102522091,228.718237722025,298.721137160286,613.769916191183,960.811598760969,578.831789249872,264.082026971785,648.359359265475,421.41556512274,805.626068071378,456.419426314427,596.560957585492,779.046485637235,752.909313170116,943.922299167235,749.065317705668,651.177059602961,722.573440746891,403.182540059788,246.670350778801,439.030232266594,823.407705688739,977.207404864123,281.820460913761,473.06225742351,996.658381375679,929.467102522091,228.718237722025,298.721137160286,613.769916191183,960.811598760969,578.831789249872,264.082026971785,648.359359265475,421.41556512274,805.626068071378,456.419426314427,596.560957585492,779.046485637236,752.909313170116,943.922299167235,749.065317705668,651.177059602961,722.573440746891,403.182540059788,246.670350778801,439.030232266594,823.407705688739,977.207404864123,281.820460913761,473.06225742351,996.658381375679,929.467102522091,228.718237722025,298.721137160286,613.769916191183,960.811598760969,578.831789249872,264.082026971785,648.359359265475,421.41556512274,805.626068071378,456.419426314427,596.560957585492,779.046485637235,752.909313170116,943.922299167235,749.065317705668,651.177059602961,722.573440746891,403.182540059788,246.670350778801,439.030232266594,823.407705688739,977.207404864123,281.820460913761,473.06225742351],"Archive327_field31":[272.26841454,272.3301255222,272.9472353442,272.885524362,272.6078249421,272.2992700311,272.6386804332,272.9163798531,272.576969451,272.77753014315,272.43811974105,272.74667465205,272.62325268765,272.461261359375,272.4844029777,272.31469777665,272.488259914087,272.575040982806,272.511401532412,272.7929578887,272.93180759865,272.7621023976,272.4226919955,272.28384228555,272.90095210755,272.7312469065,271.936235905983,271.914383851207,271.800832978929,271.800825989318,271.847032271186,271.931082922922,271.841727235432,271.790269114298,271.858122321274,271.82008901197,271.889494118353,271.825324844157,271.84498684822,271.884813431634,271.883738088447,271.926560047003,271.878555816687,271.856315977281,271.873963859229,271.82124561022,271.791682412264,271.815637739661,271.896824123087,271.939002282025,271.791511322567,271.832678748323,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272],"Archive327_field32":[102804.84163222,102934.002717965,104225.61357541,104096.452489666,103515.227603815,102869.422175092,103579.808146688,104161.033032538,103450.647060943,103870.420589613,103160.034618018,103805.840046741,103547.517875251,103208.470025172,103256.905432326,102901.712446528,103264.978000185,103446.610777013,103313.413407339,103902.710861049,104193.323303974,103838.130318177,103127.744346581,102837.131903656,104128.742761102,103773.549775304,102109.591751222,102063.855400576,101826.193424898,101826.178795642,101922.888543592,102098.806557676,101911.78510376,101804.083256226,101946.100018426,101866.496302052,102011.761189712,101877.45489882,101918.607473325,102001.96451241,101999.71381912,102089.340178378,101988.867324325,101942.319340448,101979.256357367,101868.91706219,101807.041288869,101857.17978911,102027.102889621,102115.381776279,101806.683198133,101892.846620241,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05,102243.05],"Archive327_field33":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive328.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive328.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive328.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive328_field1":[0,0,0,0,11.1666777030935,0,0,0,0,14.6801679155055,14.8173674069677,0.719925017032611,12.3804734028856,0,0,8.71083567603623,19.6988377526476,5.93592802568333,12.2257331251905,0,9.41480889906515,7.83655710779641,12.7499423470256,10.7534334877628,10.4009206620105,0,6.76371332714988,-0.252175611421552,0,-10.3448601211847,0,10.5886089349864,0,0,10.8472191457535,12.3297523079076,0,0,-0.740855071236915,9.28766710312122,11.3430470708857,-12.9787767007806,20.4010911744302,6.72372388418485],"Archive328_field2":[0,0,0,0,111.724363051545,0,0,0,0,100.245009077106,105.684263657701,93.0668895668176,104.875811122665,0,0,79.3954720747422,46.4337931064369,93.020340720494,104.821489673309,0,109.206012663211,102.788734278425,108.942410595766,110.348401412465,111.725011324695,0,101.555828718034,77.1738812086802,0,60.8501616575992,0,112.473156409856,0,0,81.7931182675927,82.1664052380944,0,0,67.1821633295513,85.9426037361815,91.1832387783014,56.8226916091512,49.1821396012698,102.832484349879],"Archive328_field3":[0,0,0,0,112.281022395587,0,0,0,0,101.314210133113,106.717936457484,93.0696740387134,105.604033447196,0,0,79.8718952081774,50.4394820657045,93.209543659879,105.53204843923,0,109.611093546244,103.087028873009,109.685960160218,110.871123499594,112.208098219873,0,101.780814324599,77.1742932157495,0,61.7232395835056,0,112.970480887593,0,0,82.5092501428319,83.0863463014538,0,0,67.1862481157795,86.4429979649753,91.8860585233313,58.286078323708,53.2455385630214,103.052065968804],"Archive328_field4":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive328_field5":[124.422663139714,116.117484527697,38.4465396956373,46.8087091296006,81.6057496958598,119.688256651409,77.4358209596533,42.7893515445143,85.760187872299,60.1172613260104,103.063309773802,64.2256397087702,79.510008542546,57.9499408640814,40.6502781091753,51.4728837212961,49.2690782155992,57.858622873731,65.1294698106593,44.894625999675,71.5888862972031,80.5193930878204,75.2200888597363,86.8629272673929,98.1347259412138,96.9240508311912,95.2584624593086,54.0638827760115,66.2278341492092,55.2973176626522,105.07350407179,88.7088161225671,122.008061680755,87.082876097298,83.3437170562797,71.2196070569639,117.812585403417,75.907140938747,70.1255254148986,93.6946539793995,110.838823013316,106.942866026992,113.776933682696,106.166335970937],"Archive328_field6":[1000.80584984548,929.753848164061,224.614672637964,295.723665141331,612.881409519907,964.698031822474,577.338069248998,260.330896021543,648.409259231048,418.839157709197,806.89273303871,454.320947626659,595.098962599242,400.985131479917,242.505116818853,339.604604151404,321.714092878356,396.972137047729,464.048549722683,278.122876244054,521.489759953117,601.561928446447,555.664788649194,660.354825360575,761.595739118631,753.693356794045,737.547946687122,361.803985415308,472.009847834449,372.841611406543,824.589633104048,676.178836984111,982.704542619172,665.418653223398,630.306082647678,520.140061602418,947.135654807131,560.122683460741,507.28095063484,721.117689385697,879.984591261719,845.674101098799,903.883238668034,837.475113510307],"Archive328_field7":[1.09051254089422,0,-5.4525627044711,-4.36205016357688,-2.18102508178844,0.54525627044711,-2.72628135223555,-4.90730643402399,-1.63576881134133,-3.81679389312977,-0.54525627044711,-3.27153762268266,-2.453653217012,-4.08942202835333,-5.17993456924755,-4.36205016357688,-4.63467829880044,-3.81679389312977,-3.37377317339149,-4.63467829880044,-2.82851690294438,-2.10860823336968,-2.69089212314403,-1.88233216997279,-1.00853209657347,-1.36314067611778,-1.37648407724843,-4.02126499454744,-2.99890948745911,-3.85087241003272,-0.272628135223555,-1.60390005479761,0.817884405670665,-2.04471101417666,-2.24918211559433,-3.10114503816794,0.272628135223555,-2.31733914940022,-2.79443838604144,-1.14564885229945,-0.0499946685850583,-0.578586049503816,0.272628135223555,-0.51093774885206],"Archive328_field8":[-2000],"Archive328_field9":[0,0,0,0,13.6471752405509,0,0,0,0,17.6119961295317,18.5434180834849,2.01172692461612,14.4404949598805,0,0,10.9252203360264,24.2411398633178,7.7262224699579,15.0290186282907,0,12.2041444954603,10.4036020250464,15.161940113002,13.1006793055976,12.9959819110293,0,8.14724967401668,-0.0481032210660544,0,-12.1683532100651,0,13.1585910273741,0,0,12.635054827814,14.0198062906169,0,0,0.195523052748166,11.6096993737667,14.2220761507202,-14.4583334480382,23.5424209656629,8.48221298351202],"Archive328_field10":[0,0,0,0,129.373848371504,0,0,0,0,119.700265552516,120.018139763083,109.784775701964,122.503406924689,0,0,96.5413415638112,56.2658553068296,111.054063036226,123.882135829677,0,127.559520351222,119.471803210376,127.093890534699,127.866560032494,128.69954520902,0,117.149678918193,92.833334483597,0,72.0389209062946,0,129.831859443064,0,0,94.5149462788546,95.9454416525287,0,0,78.3898553058714,97.2708176533368,102.293457685808,63.6189851149526,55.2874090868708,117.221829793613],"Archive328_field11":[0,0,0,0,130.091652439729,0,0,0,0,120.98899115626,121.442217644483,109.803205878288,123.351581274186,0,0,97.1575579681332,61.2656456367026,111.322501905542,124.790444260176,0,128.142000823695,119.923920455572,127.995083652601,128.535928723495,129.35404316387,0,117.432640044778,92.8333469463602,0,73.0593932714218,0,130.496974080893,0,0,95.3557532642715,96.9643374768539,0,0,78.390099146127,97.9612019449432,103.277388306226,65.2412344545321,60.0911240406059,117.528317086822],"Archive328_field12":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive328_field13":[125.10580252392,115.767111845764,31.9540382341131,41.895035103164,78.9882473923533,119.305618999686,74.0673001585005,37.3246688618969,83.8272885961153,55.6598391706053,102.284436360716,60.4331962948189,76.5048463309878,52.989651028479,34.7203341733042,46.5300687477537,43.7711528608259,53.5026161397387,61.1141188645811,39.8353018456731,68.2792996496204,78.0619391252903,71.968976190526,84.6956134460207,97.0478155020087,95.2316994197491,93.5989547250944,49.5717107258034,62.6895809233154,50.9415357679137,104.540807031507,86.8459077551724,122.116312898202,84.4125402371602,80.5676017494975,67.5032537891641,117.391242141322,73.0488290330097,66.8779522282458,92.2743232411866,110.301522946662,105.920008904467,113.869939295006,105.260834402838],"Archive328_field14":[1001.48898922969,929.403475482127,218.12217117644,290.809991114894,610.2639072164,964.315394170751,573.969548447846,254.866213338925,646.476359954864,414.381735553792,806.113859625623,450.528504212707,592.093800387684,396.024841644315,236.575172882982,334.661789177861,316.216167523582,392.616130313737,460.033198776605,273.063552090052,518.180173305534,599.104474483917,552.413675979984,658.187511539203,760.508828679426,752.001005382603,735.888438952908,357.3118133651,468.471594608555,368.485829511804,824.056936063765,674.315928616717,982.812793836618,662.74831736326,627.529967340895,516.423708334619,946.714311545036,557.264371555004,504.033377448187,719.697358647484,879.447291195065,844.651243976274,903.976244280343,836.569611942208],"Archive328_field15":[-2439.34498741489],"Archive328_field16":[1.00263360463669,-0.0807979308807134,-6.57426120626927,-5.01492571451874,-2.69045714379561,0.56995377678781,-3.44038709350755,-5.74998550538135,-1.9740397491229,-4.63818789676412,-0.701046404191459,-3.89642768843485,-3.06438601278823,-5.04607281530872,-6.15085924431789,-5.20118768200187,-5.61593301554653,-4.54552411813638,-4.10015686320294,-5.36380114909566,-3.42208897812944,-2.55041830613297,-3.3196033015944,-2.32982992609998,-1.237011457456,-1.75285378062002,-1.74204746776801,-4.72832978444926,-3.5450932254415,-4.50707464800781,-0.372199165048316,-1.96689097663777,0.798366980177175,-2.63427461856317,-2.83893198184021,-3.8475830821106,0.29746082285094,-2.78722859622757,-3.33039059187862,-1.41335495838299,-0.156176797066889,-0.811012138497836,0.257190176141153,-0.706400851220343],"Archive328_field17":[0,0,0,0,17.619969099994,0,0,0,0,21.8975038772041,24.6513254115343,4.50361897673517,17.8272134207022,0,0,14.689432489739,32.2293903404345,10.9002596357056,19.2708312077779,0,16.4600470309926,14.6221999533545,18.9639331902631,16.9839235653986,17.692770229755,0,10.1764403131539,0.538833391499092,0,-14.883352239912,0,17.4925403970781,0,0,15.3409797774345,17.1156902232429,0,0,1.95529176606126,15.7318559983905,18.6030823410788,-16.7579482506885,28.4410552948653,11.5282058987544],"Archive328_field18":[0,0,0,0,157.852137379637,0,0,0,0,151.333454932786,142.202395333075,137.200288984748,151.421653230083,0,0,125.901556277655,73.0509785784211,140.848814700497,154.384488015081,0,156.54103488558,145.996411831449,156.320534744384,156.44664700562,155.165628027689,0,141.936399277665,118.775917475546,0,90.5861750288327,0,157.093788521854,0,0,116.445992773199,119.927732511375,0,0,97.0758409881964,115.842781404197,118.671915318936,75.1622140641119,64.9034284138705,138.811512548707],"Archive328_field19":[0,0,0,0,158.832492225,0,0,0,0,152.909500221359,144.323279768059,137.27418505089,152.46746080813,0,0,126.755596720642,79.8447185039877,141.269969429673,155.582566745498,0,157.404030289288,146.726824402131,157.46663248071,157.365838157385,156.171080036062,0,142.300742715406,118.77713969271,0,91.8007041381035,0,158.0646935963,0,0,117.452181305702,121.142923347334,0,0,97.0955306358435,116.906121724291,120.121181138273,77.0077090465112,70.8614750492818,139.289394956342],"Archive328_field20":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive328_field21":[125.65914039009,115.256648516639,24.1357757165487,36.2561209908969,75.7603399718554,118.800952296103,69.8085749520809,30.9536913275068,81.4785501928778,50.2411914894207,101.277631849949,55.9119035926892,72.7455536997929,46.8676633935495,27.6978651112201,40.6549392063451,37.1130383055465,48.3170892694029,56.2203191209432,34.0102193406014,64.2694227936275,75.0777760568181,67.953269241087,82.0027856205796,95.684940635035,93.0462102186964,91.476162863015,44.3074883086225,58.5016738356292,45.8531434824122,103.839657098838,84.5534643258459,122.098466106914,80.9795743931431,77.0522268569933,62.8853100107345,116.870324109678,69.6039785371511,62.9998587279273,90.5057704646845,109.537760019156,104.542884517131,113.914127596915,104.047643885928],"Archive328_field22":[1002.04232709586,928.893012153003,210.303908658875,285.171077002627,607.035999795902,963.810727467169,569.710823241426,248.495235804535,644.127621551627,408.963087872607,805.107055114856,446.007211510578,588.334507756489,389.902854009385,229.552703820898,328.786659636453,309.558052968303,387.430603443401,455.139399032967,267.238469584981,514.170296449542,596.120311415445,548.397969030545,655.494683713762,759.145953812452,749.815516181551,733.765647090828,352.047590947919,464.283687520869,363.397437226303,823.355786131096,672.02348518739,982.79494704533,659.315351519243,624.014592448391,511.805764556189,946.193393513392,553.819521059145,500.155283947869,717.928805870982,878.683528267559,843.274119588938,904.020432582253,835.356421425298],"Archive328_field23":[0.928136398071194,-0.195805757775044,-7.92657067099241,-5.76510495519608,-3.31985655265404,0.601249113624472,-4.34404698127589,-6.73625048245133,-2.38507067481081,-5.63831287874297,-0.900860984811626,-4.64188889384894,-3.82878523399428,-6.22799574778323,-7.30354463861344,-6.20174387552836,-6.8053015458117,-5.41452846044796,-4.98528832430935,-6.20656207005944,-4.14194437542349,-3.08736087961299,-4.09724301172279,-2.88678663560611,-1.52262276186247,-2.25760635535218,-2.20926376775746,-5.55958981146092,-4.19139356932067,-5.27524433534668,-0.501452263699423,-2.41434063561745,0.788037665535363,-3.39067564328596,-3.58518326114426,-4.77692469467584,0.326178329809423,-3.35218937367019,-3.97052020309725,-1.7457895271121,-0.305545154907204,-1.12293874573001,0.246413898815174,-0.966416408425385],"Archive328_field24":[-2975.54068798633]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive329.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive329.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive329.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive329_field1":[0,0,0,0,11.1670098459989,0,0,0,0,14.6804380599301,14.8177041169531,0.720051781641451,12.3808591796626,0,0,8.71101137135358,19.6995146290851,5.93619206191578,12.2260187559414,0,9.41501552483492,7.836643122836,12.7503428567013,10.7537810481259,10.4013098158218,0,6.76400689046507,-0.251806790959416,0,-10.3447910618944,0,10.5888630075542,0,0,10.8476219777234,12.330074148192,0,0,-0.740868987725648,9.28774865901998,11.3431652036312,-12.9788468635746,20.4013840273257,6.72404833544759,0,0,0,0,11.1670182451343,0,0,0,0,14.6804696819619,14.8178143703409,0.72005348870473,12.3808751839509,0,0,8.71104945357169,19.6995678166411,5.93621548528863,12.226044724224,0,9.41503071357137,7.83670450533277,12.7503548963005,10.7537884424405,10.4013133878543,0,6.76400973104299,-0.251818510388214,0,-10.3448135680475,0,10.5888670417342,0,0,10.8476263347131,12.3300826092371,0,0,-0.740809125172455,9.28789338629791,11.3433684473837,-12.9790473840709,20.4017871566592,6.72410020178285,0,0,0,0,11.1670209613072,0,0,0,0,14.6804818088071,14.817848597124,0.720054152153181,12.3808802872386,0,0,8.71106376638616,19.6995898748665,5.93622366033749,12.2260533549434,0,9.41503606466204,7.83672187220407,12.7503590886503,10.7537909824471,10.4013148938078,0,6.76401316651107,-0.251821279511182,0,-10.3448241513309,0,10.5888686855798,0,0,10.8476355809113,12.330092598595,0,0,-0.740795598204748,9.28793363184834,11.3434320370668,-12.9791071249266,20.4019086499331,6.72411661880542],"Archive329_field2":[0,0,0,0,111.727660567183,0,0,0,0,100.247980161062,105.687011522005,93.0697630485915,104.878863277021,0,0,79.3980763035893,46.4360402371308,93.022805682366,104.824240184958,0,109.209020772807,102.791712283204,108.945492078642,110.351659404883,111.728252386897,0,101.558657050859,77.1766050648367,0,60.8531264789721,0,112.476558989178,0,0,81.795270543153,82.1688649772409,0,0,67.1845181816725,85.9447053560012,91.1843375176728,56.8236812356137,49.1830096595674,102.834562299921,0,0,0,0,111.727736527428,0,0,0,0,100.248253139707,105.687731010965,93.0699879270124,104.878996445535,0,0,79.3983914477576,46.4361823987745,93.0231447149382,104.824454578854,0,109.20919756253,102.792131903346,108.945617558372,110.351717664994,111.728326563641,0,101.558972234738,77.1769028654342,0,60.8533310865444,0,112.476639944225,0,0,81.7959109721095,82.1693172541637,0,0,67.184930527414,85.9453969153621,91.1861097879175,56.824868455161,49.1840941979445,102.835342403725,0,0,0,0,111.727761618407,0,0,0,0,100.248348719821,105.687963543942,93.0700644472632,104.879040146306,0,0,79.3985136251232,46.4362407225177,93.0232651349684,104.824526946237,0,109.209258643694,102.792272790142,108.945659986466,110.351737716031,111.728351985861,0,101.559077944905,77.177021121817,0,60.8534081382452,0,112.476667141163,0,0,81.7961236087768,82.169473826188,0,0,67.1850693817266,85.9456240157713,91.1866604220507,56.8252352983603,49.1844229867465,102.835588841565],"Archive329_field3":[0,0,0,0,0.070806364110673,0,0,0,0,0.0638235897462759,0.0672448506963219,0.058443515238719,0.0665850652461721,0,0,0.0503663444913559,0.0303732143721193,0.0587413642231483,0.0665410687776141,0,0.0691159844713307,0.0649902500917291,0.0691599070735937,0.0699169407646387,0.0707581685156154,0,0.0641490329286671,0.0484100508422092,0,0.0375342811092903,0,0.0712399114517114,0,0,0.0520047168981947,0.0523319865871634,0,0,0.0421096892457019,0.054510401258566,0.0579273731464086,0.0348408714046639,0.0321411875281716,0.0649473927036432,0,0,0,0,0.0559982678024664,0,0,0,0,0.103470248741275,-0.0168024371027341,0.0522172447853493,0.0499629244354548,0,0,0.156043388199972,0.0925124227578911,0.106864519683609,0.0617880031574838,0,0.08075153765827,0.0722452328205272,0.0703185042483331,0.093289672816011,0.139043537392533,0,0.0940096680325486,0.161163700442471,0,0.101777142768219,0,0.0759003990294854,0,0,0.0427916958428668,0.102521290257426,0,0,0.0486635216636245,0.0186646393824932,-0.25221282501378,-0.134959343798784,-0.167824391648392,-0.12707826887908,0,0,0,0,0.0411895999930269,0,0,0,0,0.143116815435828,-0.100848986656014,0.0459908582722485,0.0333405055099694,0,0,0.261720525233412,0.154651690140402,0.154987472349111,0.057034670272693,0,0.092386948380197,0.0795002483408896,0.0714769889850742,0.116662405433289,0.207331282133869,0,0.123871508288642,0.273917460014048,0,0.166020130132043,0,0.0805607943741651,0,0,0.0335778648752296,0.152710797995602,0,0,0.0552171721451114,-0.0171814868316406,-0.562355283482321,-0.304760868890337,-0.367791780937534,-0.319104365754151],"Archive329_field4":[0,0,0,0,112.284358920811,0,0,0,0,101.317209108101,106.720725642304,93.0725667645074,105.607130771921,0,0,79.8745189443486,50.4418242340434,93.2120389422045,105.534834498796,0,109.614130076863,103.090025285089,109.689089112425,110.874421886298,112.211383709645,0,101.783676128772,77.1770310359681,0,61.7261623074227,0,112.973914763382,0,0,82.5114530855551,83.0888430463729,0,0,67.1886161740692,86.4451133683497,91.8871817010093,58.2870691402568,53.2464641310525,103.054181126229,0,0,0,0,112.284426978257,0,0,0,0,101.317516519791,106.721433607696,93.0727879479361,105.607255726285,0,0,79.8749729052406,50.4420515689346,93.2124215272283,105.53504756767,0,109.614315472023,103.090453186085,109.689215877627,110.874497791162,112.211521734666,0,101.784014004339,77.1774819633368,0,61.7264402883646,0,112.97399877512,0,0,82.5120832362391,83.0893383400118,0,0,67.1890322617593,86.445801302684,91.8892933768475,58.2884170309058,53.2478751339839,103.055020836936,0,0,0,0,112.284445806145,0,0,0,0,101.317661094265,106.721714967625,93.0728611860558,105.60729316807,0,0,79.8753722711465,50.4422661150629,93.2126098166592,105.535117771735,0,109.614385976259,103.090600324931,109.689259254205,110.874540123325,112.211652582328,0,101.784151670516,77.1779180463499,0,61.7266573811139,0,112.974029233564,0,0,82.5122909789297,83.0895717461003,0,0,67.1891760247276,86.4460311050394,91.8912222835827,58.2894284382815,53.2492310920405,103.055683512803],"Archive329_field5":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive329_field6":[124.422652108,116.11747531447,38.4465447436196,46.8087137538404,81.6057521140063,119.688234675645,77.435823014848,42.7893600382535,85.7601898994624,60.1172650610833,103.063308129277,64.2256410670465,79.5100099404333,57.94994200025,40.650285646961,51.4728902833162,49.2690809293682,57.8586270331532,65.1294713509807,44.8946388707268,71.5888898629768,80.5193953915017,75.2200914469909,86.8629307834445,98.1347282534227,96.924054924056,95.2584647210625,54.0638888168555,66.2278324199613,55.297322470249,105.073501182616,88.708818819802,122.008042421132,87.0828745865371,83.3437180473641,71.2196112722631,117.812566436601,75.9071381380108,70.125526079883,93.6946538033181,110.838812247982,106.94286117324,113.776929504991,106.166330299097,124.422652108,116.11747531447,38.4465447436196,46.8087137538404,81.6057521140063,119.688234675645,77.435823014848,42.7893600382535,85.7601898994624,60.1172650610833,103.063308129277,64.2256410670465,79.5100099404333,57.94994200025,40.650285646961,51.4728902833162,49.2690809293682,57.8586270331532,65.1294713509808,44.8946388707268,71.5888898629768,80.5193953915017,75.2200914469908,86.8629307834445,98.1347282534227,96.924054924056,95.2584647210625,54.0638888168555,66.2278324199613,55.297322470249,105.073501182616,88.708818819802,122.008042421132,87.0828745865371,83.3437180473641,71.2196112722631,117.812566436601,75.9071381380108,70.125526079883,93.6946538033182,110.838812247982,106.94286117324,113.776929504991,106.166330299097,124.422652108,116.11747531447,38.4465447436196,46.8087137538404,81.6057521140063,119.688234675645,77.435823014848,42.7893600382535,85.7601898994624,60.1172650610833,103.063308129277,64.2256410670465,79.5100099404333,57.94994200025,40.650285646961,51.4728902833162,49.2690809293682,57.8586270331532,65.1294713509807,44.8946388707268,71.5888898629768,80.5193953915017,75.2200914469909,86.8629307834445,98.1347282534227,96.924054924056,95.2584647210625,54.0638888168555,66.2278324199613,55.297322470249,105.073501182616,88.708818819802,122.008042421132,87.0828745865371,83.3437180473641,71.2196112722631,117.812566436601,75.9071381380108,70.125526079883,93.6946538033181,110.838812247982,106.94286117324,113.776929504991,106.166330299097],"Archive329_field7":[1000.80583881377,929.753838950834,224.614677685946,295.723669765571,612.881411938053,964.698009846711,577.338071304193,260.330904515282,648.409261258211,418.83916144427,806.892731394185,454.320948984935,595.098963997129,400.985132616086,242.505124356638,339.604610713424,321.714095592125,396.972141207151,464.048551263004,278.122889115106,521.489763518891,601.561930750128,555.664791236449,660.354828876627,761.59574143084,753.69336088691,737.547948948876,361.803991456152,472.009846105201,372.841616214139,824.589630214874,676.178839681346,982.704523359548,665.418651712637,630.306083638762,520.140065817718,947.135635840315,560.122680660005,507.280951299824,721.117689209615,879.984580496385,845.674096245048,903.883234490328,837.475107838467,1000.80583881377,929.753838950834,224.614677685946,295.723669765571,612.881411938053,964.698009846711,577.338071304193,260.330904515282,648.409261258211,418.83916144427,806.892731394185,454.320948984935,595.098963997129,400.985132616086,242.505124356638,339.604610713424,321.714095592125,396.972141207151,464.048551263004,278.122889115106,521.489763518891,601.561930750128,555.664791236449,660.354828876627,761.59574143084,753.69336088691,737.547948948876,361.803991456152,472.009846105201,372.841616214139,824.589630214874,676.178839681346,982.704523359548,665.418651712637,630.306083638762,520.140065817718,947.135635840316,560.122680660005,507.280951299824,721.117689209615,879.984580496385,845.674096245048,903.883234490328,837.475107838467,1000.80583881377,929.753838950834,224.614677685946,295.723669765571,612.881411938053,964.698009846711,577.338071304193,260.330904515282,648.409261258211,418.83916144427,806.892731394185,454.320948984935,595.098963997129,400.985132616086,242.505124356638,339.604610713424,321.714095592125,396.972141207151,464.048551263004,278.122889115106,521.489763518891,601.561930750128,555.664791236449,660.354828876627,761.59574143084,753.69336088691,737.547948948876,361.803991456152,472.009846105201,372.841616214139,824.589630214874,676.178839681346,982.704523359548,665.418651712637,630.306083638762,520.140065817718,947.135635840315,560.122680660005,507.280951299824,721.117689209615,879.984580496385,845.674096245048,903.883234490328,837.475107838467],"Archive329_field8":[253.005621501884,253.006027343241,253.023216088492,253.018137676953,253.009244329388,253.005821922528,253.009568802542,253.020512512881,253.008584624962,253.013155915872,253.007050534951,253.012350891647,253.009484309716,253.013539398523,253.021732650477,253.016168877568,253.016939767105,253.013978754271,253.012131947515,253.019565969924,253.010809415671,253.009391126198,253.010196552346,253.008604405966,253.007492255934,253.0074066467,253.00769811071,253.015259187801,253.011539077103,253.01475576148,253.006773025468,253.008414801996,253.005698007638,253.008403330715,253.008987794947,253.010808573491,253.005929758492,253.009990206654,253.011062211813,253.007869321154,253.006466593232,253.006685459724,253.006255048816,253.006780038632,252.9986124748,252.998511801301,252.994343592568,252.995540985001,252.997698603171,252.998579346833,252.997648148483,252.994991392352,252.997884704245,252.99673886283,252.998247042664,252.996928942287,252.99763446904,252.996657766505,252.994697593741,252.996015651085,252.995827802518,252.996540457036,252.996984154368,252.995217111684,252.997310964603,252.997665980436,252.997463110276,252.997853214143,252.998128259136,252.998166642023,252.998083876988,252.996236547875,252.997148701166,252.996356758754,252.998327743376,252.997899359575,252.998601598747,252.99793084111,252.997774516074,252.997323989029,252.998544839042,252.99753457532,252.997263682007,252.998050084737,252.998402420211,252.99834641884,252.998451259425,252.998318179658,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive329_field9":[1.09051254089422,0,-5.4525627044711,-4.36205016357688,-2.18102508178844,0.54525627044711,-2.72628135223555,-4.90730643402399,-1.63576881134133,-3.81679389312977,-0.54525627044711,-3.27153762268266,-2.453653217012,-4.08942202835333,-5.17993456924755,-4.36205016357688,-4.63467829880044,-3.81679389312977,-3.37377317339149,-4.63467829880044,-2.82851690294438,-2.10860823336968,-2.69089212314403,-1.88233216997279,-1.00853209657347,-1.36314067611778,-1.37648407724843,-4.02126499454744,-2.99890948745911,-3.85087241003272,-0.272628135223555,-1.60390005479761,0.817884405670665,-2.04471101417666,-2.24918211559433,-3.10114503816794,0.272628135223555,-2.31733914940022,-2.79443838604144,-1.14564885229945,-0.0499946685850583,-0.578586049503816,0.272628135223555,-0.51093774885206,1.09051254089422,0,-5.4525627044711,-4.36205016357688,-2.18102508178844,0.54525627044711,-2.72628135223555,-4.90730643402399,-1.63576881134133,-3.81679389312977,-0.54525627044711,-3.27153762268266,-2.453653217012,-4.08942202835333,-5.17993456924755,-4.36205016357688,-4.63467829880044,-3.81679389312977,-3.37377317339149,-4.63467829880044,-2.82851690294438,-2.10860823336968,-2.69089212314403,-1.88233216997279,-1.00853209657347,-1.36314067611778,-1.37648407724843,-4.02126499454744,-2.99890948745911,-3.85087241003272,-0.272628135223555,-1.60390005479761,0.817884405670665,-2.04471101417666,-2.24918211559433,-3.10114503816794,0.272628135223555,-2.31733914940022,-2.79443838604144,-1.14564885229945,-0.0499946685850583,-0.578586049503816,0.272628135223555,-0.510937748852059,1.09051254089422,0,-5.4525627044711,-4.36205016357688,-2.18102508178844,0.54525627044711,-2.72628135223555,-4.90730643402399,-1.63576881134133,-3.81679389312977,-0.54525627044711,-3.27153762268266,-2.453653217012,-4.08942202835333,-5.17993456924755,-4.36205016357688,-4.63467829880044,-3.81679389312977,-3.37377317339149,-4.63467829880044,-2.82851690294438,-2.10860823336968,-2.69089212314403,-1.88233216997279,-1.00853209657347,-1.36314067611778,-1.37648407724843,-4.02126499454744,-2.99890948745911,-3.85087241003272,-0.272628135223555,-1.60390005479761,0.817884405670665,-2.04471101417666,-2.24918211559433,-3.10114503816794,0.272628135223555,-2.31733914940022,-2.79443838604144,-1.14564885229945,-0.0499946685850583,-0.578586049503816,0.272628135223555,-0.51093774885206],"Archive329_field10":[-2000],"Archive329_field11":[0,0,0,0,13.7449048234465,0,0,0,0,17.7388650426855,18.7178624137574,2.13360878388285,14.5156040184592,0,0,11.029944719181,24.5478169622709,7.8145118496059,15.1622730784044,0,12.3635088306532,10.5416769661425,15.2378564998051,13.2038551174516,13.1495783831584,0,8.29171181710104,0.00967004005089351,0,-12.190758010909,0,13.2373533062347,0,0,12.7567983449271,14.0842662509106,0,0,0.290926512565452,11.6181894673235,14.3162228375827,-14.4658168749865,23.7857225570786,8.71910604401913,0,0,0,0,13.7449138314601,0,0,0,0,17.7388944370672,18.7180189760821,2.13361378081259,14.5156223742767,0,0,11.0299874466493,24.5478731860941,7.81454038933333,15.1622983401419,0,12.3635235487405,10.5417558304323,15.2378641689081,13.2038644443408,13.149587525401,0,8.29171982721176,0.00965818352619847,0,-12.190779114117,0,13.2373598709156,0,0,12.756804434999,14.084272270816,0,0,0.291003725879408,11.6183762475725,14.3165023302714,-14.4660512419216,23.7862235574856,8.71918030051874,0,0,0,0,13.7449167150493,0,0,0,0,17.7389059560919,18.7180677308064,2.13361557334383,14.5156282032334,0,0,11.0300038435293,24.547897662045,7.81455033586784,15.1623066432117,0,12.3635287406907,10.5417781648819,15.2378668375987,13.2038676082514,13.1495910020452,0,8.29172574633855,0.00965574308082188,0,-12.1907900689235,0,13.2373624125323,0,0,12.7568165495986,14.0842837645627,0,0,0.291021304363708,11.6184280009569,14.3165897982262,-14.4661207118899,23.7863743093307,8.71920379322575],"Archive329_field12":[0,0,0,0,130.495817170051,0,0,0,0,121.025785417267,121.270553977921,110.924165968096,123.760748561035,0,0,97.8425214902523,57.07860725803,112.262733254788,125.109067381306,0,128.688382769063,120.77889280257,128.211252384725,129.016533440748,129.80671363126,0,118.460165056812,94.0419239037795,0,73.0729367851924,0,130.998988576865,0,0,95.6108239261086,97.010629476028,0,0,79.382854353248,98.2780188829248,102.944598968559,64.3805141239609,56.0571422910211,118.147980696655,0,0,0,0,130.495892939077,0,0,0,0,121.026043152024,121.271508299246,110.924412428312,123.760904216297,0,0,97.842862027114,57.0787609522748,112.263098665655,125.109266101269,0,128.688535649776,120.779400942534,128.211335739261,129.016602099294,129.806848489194,0,118.460594724732,94.0422294512637,0,73.0731522957119,0,130.999099197923,0,0,95.6115987321882,97.0111736790997,0,0,79.3833273185103,98.2788903115204,102.946817436031,64.3819286513236,56.0584567659302,118.14899407204,0,0,0,0,130.495917867695,0,0,0,0,121.026133752867,121.271816150855,110.924496011402,123.760954936309,0,0,97.8429969042753,57.0788264317539,112.263229019425,125.109332794712,0,128.688588603721,120.779571129322,128.21136378277,129.016625536868,129.806894028832,0,118.460738121269,94.0423547591895,0,73.0732350768576,0,130.999136101652,0,0,95.6118555522299,97.0113624816606,0,0,79.3834862061097,98.2791755131449,102.947506580214,64.3823647473658,56.0588549674278,118.149313916423],"Archive329_field13":[0,0,0,0,0.0827445552669208,0,0,0,0,0.0770529102063218,0.0772677273073974,0.0697352801261162,0.0785667962553402,0,0,0.062085157005812,0.0373553063648843,0.0709316742858066,0.0794534004732923,0,0.0815236737492826,0.0764463585650219,0.081404637881231,0.0817822760171579,0.0822741660844157,0,0.0748500049339151,0.0590089085376209,0,0.0450859935208364,0,0.0830283185279701,0,0,0.0607933526405267,0.0617547811211289,0,0,0.0498285010252329,0.0623953959543067,0.065493212772259,0.0394892898925235,0.0366669248718929,0.0746812821235042,0,0,0,0,0.0656155946673882,0,0,0,0,0.121889183984739,-0.0227877244608626,0.0595044687775421,0.0578685558241245,0,0,0.188866013875511,0.11166776989922,0.125697881268082,0.0692703334403134,0,0.0932077483917671,0.0801373220995348,0.0803201036467274,0.108095625769581,0.155143578896727,0,0.105086087156303,0.193258743731376,0,0.120086728490644,0,0.087173100064993,0,0,0.0497098254449957,0.118209213427089,0,0,0.0541871083147475,0.0153543707458672,-0.290183773029435,-0.15560688737212,-0.194873400257192,-0.147816011773685,0,0,0,0,0.0484860007310688,0,0,0,0,0.166725371774736,-0.122842355053578,0.0492735486063074,0.0371700426584637,0,0,0.31564695319983,0.18598027531462,0.180463840982741,0.0590869698945033,0,0.10489170194508,0.0838283614930557,0.0792355147140654,0.134409077432963,0.228015975161845,0,0.135323614622195,0.327508705721374,0,0.195087606081915,0,0.0913178742369799,0,0,0.038625358231133,0.174663911238821,0,0,0.0585455234666717,-0.0316870663936113,-0.645863658060891,-0.350704685653304,-0.426416031156866,-0.370313906988783],"Archive329_field14":[0,0,0,0,131.217710520137,0,0,0,0,122.318902897385,122.706607832479,110.944705800546,124.60911610773,0,0,98.4622899725848,62.1334380148765,112.534407647554,126.024519752179,0,129.280945449946,121.238087018556,129.113609412344,129.690456007259,130.471073746027,0,118.750026495442,94.0419429142402,0,74.0828637678113,0,131.666128614832,0,0,96.458121750707,98.027713432553,0,0,79.3834030914789,98.9623929340665,103.935311528343,65.9856955417625,60.8947053844707,118.469294461467,0,0,0,0,131.21777713255,0,0,0,0,122.319198631523,122.707552656075,110.944946352295,124.609261510202,0,0,98.4627947150664,62.1336905349933,112.534822003985,126.024714059318,0,129.281106933334,121.238602474692,129.113692410196,129.690544521088,130.471275138687,0,118.750478581418,94.0424285223785,0,74.0831634223583,0,131.666242014303,0,0,96.4588842076484,98.028304674788,0,0,79.3838791919929,98.9632617856279,103.937931794905,65.9872986937746,60.8964118955007,118.470379230089,0,0,0,0,131.217794778483,0,0,0,0,122.319342840924,122.707923714592,110.945024938846,124.609304670613,0,0,98.463255384927,62.1339383518809,112.535027231603,126.024776081336,0,129.28116909283,121.238776454791,129.113719902515,129.690592760372,130.471427800183,0,118.750652649023,94.0429255384952,0,74.083406416527,0,131.666281795964,0,0,96.4591352985236,98.0285775026383,0,0,79.3840412376034,98.9635549726622,103.940227988968,65.988487880011,60.8980184708363,118.471186480507],"Archive329_field15":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive329_field16":[125.100371104828,115.763994066133,31.955581262759,41.8964823439359,78.9891062598296,119.299782070454,74.0677978317439,37.3285044312713,83.8280231479724,55.6612855616361,102.283780449896,60.4338291863664,76.5055401723354,52.9902316377537,34.723326777614,46.5330014000971,43.7723776506505,53.5040175025419,61.114047061461,39.8398598468752,68.2802547340883,78.0626667826067,71.9694086087168,84.6971899135837,97.047934928711,95.233644684562,93.5996307950922,49.5742046866098,62.6890491527138,50.9432675904879,104.540482877975,86.8469935146281,122.109832244248,84.4119614779439,80.5683703872803,67.504656920064,117.384265815128,73.0474062595445,66.8784424891089,92.2739687587764,110.297246376079,105.917931616682,113.868313151411,105.258309561029,125.100371104828,115.763994066133,31.955581262759,41.8964823439359,78.9891062598296,119.299782070454,74.0677978317439,37.3285044312713,83.8280231479724,55.6612855616361,102.283780449896,60.4338291863664,76.5055401723354,52.9902316377537,34.723326777614,46.5330014000971,43.7723776506505,53.5040175025419,61.1140470614609,39.8398598468752,68.2802547340883,78.0626667826067,71.9694086087168,84.6971899135837,97.047934928711,95.233644684562,93.5996307950922,49.5742046866098,62.6890491527138,50.9432675904879,104.540482877975,86.8469935146281,122.109832244248,84.4119614779439,80.5683703872803,67.504656920064,117.384265815128,73.0474062595445,66.8784424891089,92.2739687587764,110.297246376079,105.917931616682,113.868313151411,105.258309561029,125.100371104828,115.763994066133,31.955581262759,41.8964823439359,78.9891062598296,119.299782070454,74.0677978317439,37.3285044312713,83.8280231479724,55.6612855616361,102.283780449896,60.4338291863664,76.5055401723354,52.9902316377537,34.723326777614,46.5330014000971,43.7723776506505,53.5040175025419,61.114047061461,39.8398598468752,68.2802547340883,78.0626667826067,71.9694086087168,84.6971899135837,97.047934928711,95.233644684562,93.5996307950922,49.5742046866098,62.6890491527138,50.9432675904879,104.540482877975,86.8469935146281,122.109832244248,84.4119614779439,80.5683703872803,67.504656920064,117.384265815128,73.0474062595445,66.8784424891089,92.2739687587764,110.297246376079,105.917931616682,113.868313151411,105.258309561029],"Archive329_field17":[1001.4835578106,929.400357702497,218.123714205085,290.811438355666,610.264766083876,964.309557241519,573.970046121089,254.8700489083,646.477094506721,414.383181944823,806.113203714803,450.529137104255,592.094494229031,396.025422253589,236.578165487291,334.664721830205,316.217392313407,392.61753167654,460.033126973484,273.068110091254,518.181128390002,599.105202141233,552.414108398175,658.189088006766,760.508948106129,752.002950647416,735.889115022906,357.314307325906,468.471062837953,368.487561334378,824.056611910233,674.317014376172,982.806313182664,662.747738604044,627.530735978678,516.425111465519,946.707335218842,557.262948781539,504.03386770905,719.697004165074,879.443014624482,844.649166688489,903.974618136748,836.567087100399,1001.4835578106,929.400357702497,218.123714205085,290.811438355666,610.264766083876,964.309557241519,573.970046121089,254.8700489083,646.477094506721,414.383181944823,806.113203714803,450.529137104255,592.094494229032,396.025422253589,236.578165487291,334.664721830205,316.217392313407,392.61753167654,460.033126973484,273.068110091254,518.181128390002,599.105202141233,552.414108398175,658.189088006766,760.508948106129,752.002950647416,735.889115022906,357.314307325906,468.471062837953,368.487561334379,824.056611910233,674.317014376172,982.806313182665,662.747738604044,627.530735978678,516.425111465519,946.707335218842,557.262948781539,504.03386770905,719.697004165074,879.443014624483,844.649166688489,903.974618136748,836.567087100399,1001.4835578106,929.400357702497,218.123714205085,290.811438355666,610.264766083876,964.309557241519,573.970046121089,254.8700489083,646.477094506721,414.383181944823,806.113203714803,450.529137104255,592.094494229031,396.025422253589,236.578165487291,334.664721830205,316.217392313407,392.61753167654,460.033126973484,273.068110091254,518.181128390002,599.105202141233,552.414108398175,658.189088006766,760.508948106129,752.002950647416,735.889115022906,357.314307325906,468.471062837953,368.487561334378,824.056611910233,674.317014376172,982.806313182664,662.747738604044,627.530735978678,516.425111465519,946.707335218842,557.262948781539,504.03386770905,719.697004165074,879.443014624482,844.649166688489,903.974618136748,836.567087100399],"Archive329_field18":[253.011033938407,253.011966104112,253.001788753774,253.007414615315,253.018217689615,253.011631923489,253.013592497548,253.012719183776,253.015770390455,253.02489553614,253.01410712884,253.021883090745,253.017622291907,253.010932438058,253.008843115176,253.027852954187,253.025092859675,253.025190434109,253.021780369777,253.013019246576,253.020705326138,253.018674340625,253.019485373947,253.017087600098,253.014932724309,253.014091077085,253.015444256308,253.028678190382,253.011435353827,253.026829283313,253.01345645114,253.016600773429,253.011366036764,253.015474482532,253.018122188876,253.021799020814,253.011816520332,253.017197983455,253.021435267167,253.015761709683,253.012966887394,253.013415870678,253.012543572157,253.013537800025,252.997384801084,252.997094651377,253.00092371928,253.001760215886,252.995775231348,252.997155862178,252.999513759819,253.002120539298,252.996984492076,252.996125808057,252.996506248723,252.99571151515,252.996095966678,253.001229795226,253.001962582508,252.997977515064,253.000015455294,252.996215174618,252.995558386184,253.001829886166,252.995616936596,252.995520100683,252.995650614917,252.995911075078,252.996305516595,252.996982417409,252.996174337895,252.996416965632,253.000789574161,252.997245364505,252.996726485181,252.995982138259,252.997211212701,252.997071399822,252.995466261337,252.995481196101,252.997122900845,252.997587275109,252.995365550707,252.996092983659,252.99683197199,252.996656800841,252.996888925096,252.996684832767,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive329_field19":[1.00263480765894,-0.0808009550697388,-6.57426015483565,-5.01492500852792,-2.69045656233289,0.569955574151256,-3.4403865421685,-5.74998397243278,-1.97403931804671,-4.63818705871477,-0.701046826082993,-3.89642742144543,-3.06438565721874,-5.04607254458589,-6.15085777909401,-5.20118635367582,-5.61593242847573,-4.5455232883498,-4.10015652365926,-5.36379900509002,-3.42208820255179,-2.55041780278902,-3.31960268274415,-2.32982902254439,-1.23701084986867,-1.75285255990188,-1.74204683099586,-4.72832866661316,-3.54509354130738,-4.50707380015772,-0.372199866074744,-1.96689032879225,0.7983688179275,-2.63427504650228,-2.8389317154255,-3.8475820279985,0.29746211557283,-2.78722914980819,-3.33039046080344,-1.41335499959559,-0.156179789808417,-0.811013618679463,0.257190660199137,-0.706402479894056,1.00263480765894,-0.0808009550697388,-6.57426015483565,-5.01492500852792,-2.69045656233289,0.569955574151256,-3.4403865421685,-5.74998397243278,-1.97403931804671,-4.63818705871477,-0.701046826082993,-3.89642742144543,-3.06438565721874,-5.04607254458589,-6.15085777909401,-5.20118635367582,-5.61593242847573,-4.5455232883498,-4.10015652365926,-5.36379900509002,-3.42208820255179,-2.55041780278903,-3.31960268274415,-2.32982902254439,-1.23701084986867,-1.75285255990188,-1.74204683099586,-4.72832866661316,-3.54509354130738,-4.50707380015772,-0.372199866074744,-1.96689032879225,0.798368817927499,-2.63427504650228,-2.8389317154255,-3.8475820279985,0.29746211557283,-2.78722914980819,-3.33039046080344,-1.41335499959559,-0.156179789808417,-0.811013618679463,0.257190660199137,-0.706402479894056,1.00263480765894,-0.0808009550697388,-6.57426015483565,-5.01492500852792,-2.69045656233289,0.569955574151256,-3.4403865421685,-5.74998397243278,-1.97403931804671,-4.63818705871477,-0.701046826082993,-3.89642742144543,-3.06438565721874,-5.04607254458589,-6.15085777909401,-5.20118635367582,-5.61593242847573,-4.5455232883498,-4.10015652365926,-5.36379900509002,-3.42208820255179,-2.55041780278902,-3.31960268274415,-2.32982902254439,-1.23701084986867,-1.75285255990188,-1.74204683099586,-4.72832866661316,-3.54509354130738,-4.50707380015772,-0.372199866074744,-1.96689032879225,0.7983688179275,-2.63427504650228,-2.8389317154255,-3.8475820279985,0.29746211557283,-2.78722914980819,-3.33039046080344,-1.41335499959559,-0.156179789808417,-0.811013618679463,0.257190660199137,-0.706402479894056],"Archive329_field20":[-2439.34466747049],"Archive329_field21":[0,0,0,0,17.8157746933417,0,0,0,0,22.0001033347735,25.0151279772004,4.77078830473091,17.9536171618959,0,0,14.9042499868394,32.8705536283326,11.0857570575035,19.4261850580572,0,16.6707296592073,14.9038037386715,19.0809562879151,17.1579141412374,18.0539831673786,0,10.3612427514374,0.640604157058811,0,-14.9386994989592,0,17.7213928803112,0,0,15.497389469322,17.2870576745857,0,0,2.18602094618605,15.8786521158988,18.7358692522437,-16.7990965285467,28.8690877616638,11.9574558946429,0,0,0,0,17.8157839239313,0,0,0,0,22.0001251149742,25.0153623029494,4.77079754426932,17.9536376935235,0,0,14.9042944398277,32.8706062235125,11.0857910679913,19.426207484145,0,16.6707399627343,14.9039055228432,19.0809597799069,17.1579290531432,18.0540137571028,0,10.3612619441343,0.640592833559056,0,-14.9387165888785,0,17.7214009854741,0,0,15.4973946447778,17.2870586748867,0,0,2.18612617655119,15.8789020497836,18.736282318281,-16.7993874753744,28.8697532881772,11.9575797692056,0,0,0,0,17.8157868006727,0,0,0,0,22.000134070624,25.0154355432172,4.77080076566715,17.9536441155968,0,0,14.904312224853,32.8706317747105,11.0858028706513,19.4262147101054,0,16.6707435707952,14.9039344610168,19.0809609774388,17.1579340085012,18.054024597907,0,10.3612731087113,0.640591236728679,0,-14.9387275119218,0,17.7214040163761,0,0,15.4974094250904,17.2870719646276,0,0,2.18615032390193,15.8789714041696,18.7364117816542,-16.7994735348182,28.869953946012,11.9576188800589],"Archive329_field22":[0,0,0,0,159.859768227932,0,0,0,0,153.619271489126,144.224254385975,139.365018774165,153.712099378192,0,0,128.612045385465,74.5678653618337,143.205499533174,156.496807380968,0,158.509566087834,148.221331808533,158.307243740184,158.4783910581,156.828993572615,0,144.09517327272,121.116137722098,0,92.5298539676466,0,159.028237539807,0,0,118.56330634852,122.065969200745,0,0,98.9058850666617,117.619869556955,119.431494052609,76.4984338542606,66.1530162383812,139.946442551619,0,0,0,0,159.859837874748,0,0,0,0,153.619476853147,144.225560018937,139.365279288126,153.712271272014,0,0,128.612386187415,74.5680158719402,143.20587654255,156.496977495675,0,158.509658011091,148.221949392449,158.307285901561,158.478500420833,156.829325729904,0,144.095850195181,121.116443754143,0,92.5300798614269,0,159.02835800337,0,0,118.564231494349,122.06662509275,0,0,98.9064572925207,117.620994275959,119.434413330865,76.5001755508221,66.1547132277137,139.947929257753,0,0,0,0,159.859860629892,0,0,0,0,153.619549548262,144.225980179086,139.365367196762,153.71232663463,0,0,128.612526737179,74.5680854301818,143.206011730012,156.497033996536,0,158.509690116923,148.222155534847,158.307299870461,158.478537132822,156.829436412436,0,144.09607475577,121.11657631603,0,92.5301693168149,0,159.028397762555,0,0,118.56453690833,122.066853572249,0,0,98.9066487200122,117.621360893148,119.435320150353,76.5007111660043,66.1552284679704,139.948397803017],"Archive329_field23":[0,0,0,0,0.101424950239679,0,0,0,0,0.0977716651785319,0.0920655338508387,0.0877464817422997,0.0975760344591071,0,0,0.0816351628318993,0.0488514928114904,0.0905525486737119,0.0994157604753216,0,0.100505786134504,0.0939393174629074,0.100530054750609,0.100516714163547,0.0995373488333293,0,0.0910649340128227,0.0760367088027221,0,0.0571221631655357,0,0.100897109420081,0,0,0.0753672812942964,0.0776771662676594,0,0,0.0621974978475037,0.074799128458467,0.0761157138636676,0.0469465804733991,0.0433208576803389,0.0885623784422686,0,0,0,0,0.0816392436104399,0,0,0,0,0.150031536359106,-0.0341051712216174,0.0700328636202104,0.0700528915369094,0,0,0.241801435667335,0.141614642832411,0.154751966171122,0.0789806876620984,0,0.111657326126452,0.0919350552640625,0.0977586196392036,0.129034704704921,0.174732689793524,0,0.119561442050949,0.244845749069627,0,0.149269034655991,0,0.104245050841583,0,0,0.0571764794549878,0.145517558799845,0,0,0.0612610867116094,0.0088396792586421,-0.345520108714807,-0.185781256639384,-0.235028168763238,-0.179091473124086,0,0,0,0,0.0618528561992486,0,0,0,0,0.202291355993226,-0.160274873725202,0.052319161399154,0.042529528900942,0,0,0.40196777384834,0.234377802233632,0.218951081538764,0.0585453157552756,0,0.122808765308707,0.0899309218433436,0.094987189658153,0.157553083199201,0.249931983112898,0,0.148059810548244,0.413654922192162,0,0.241416078534362,0,0.107593188799753,0,0,0.0389846643046463,0.213358271676012,0,0,0.0603244557274125,-0.0571202401327709,-0.767159973553938,-0.418511259314652,-0.513380287622475,-0.446746339748189],"Archive329_field24":[0,0,0,0,160.849487449705,0,0,0,0,155.18664465375,146.377596157912,139.446680055199,154.757072166443,0,0,129.472783048032,81.4913628976838,143.633969888213,157.697930455156,0,159.383831896892,148.968773216306,159.453053968142,159.404531157844,157.864782142475,0,144.467237132409,121.117855710814,0,93.7280207885333,0,160.012619130063,0,0,119.571871160754,123.284018565684,0,0,98.9300594204087,118.686860698741,120.892184866837,78.3212757193825,72.1778890126532,140.45638247378,0,0,0,0,160.849546431225,0,0,0,0,155.186892755706,146.378897649513,139.446930711535,154.757230375318,0,0,129.47332675692,81.4916302406953,143.634403219055,157.698090478129,0,159.383931815778,148.969396634295,159.453094521206,159.404662023994,157.865180939784,0,144.467934461199,121.118385294181,0,93.728347972903,0,160.012741896283,0,0,119.572779091946,123.284729526908,0,0,98.9306332474313,118.687985503638,120.895602678277,78.3232455502814,72.1800801842265,140.457960583321,0,0,0,0,160.849560539379,0,0,0,0,155.187025309235,146.37940791679,139.447010907831,154.757276097835,0,0,129.473866609091,81.4919181940496,143.63462242955,157.698138528107,0,159.383972325197,148.969603414204,159.453106857988,159.404724692129,157.865393280542,0,144.468185640165,121.118976737933,0,93.7286300721228,0,160.012783962817,0,0,119.573076530545,123.285056352711,0,0,98.9308245861853,118.688371519422,120.89845888304,78.3246849443114,72.1820757100677,140.459027047763],"Archive329_field25":[-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912024,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227814,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545454,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937,-876.383186705767,-813.636363636364,-186.168132942326,-248.91495601173,-531.275659824047,-845.009775171065,-499.902248289345,-217.541544477028,-562.649071358749,-358.721896383187,-703.829423264907,-390.095307917889,-515.588954056696,-343.035190615836,-201.854838709677,-288.131720430108,-272.445014662757,-339.113514173998,-398.919079912023,-233.228250244379,-449.900873655914,-521.042535358627,-480.444699789458,-573.491898093182,-663.461013177417,-656.769305962854,-642.289484227813,-307.740102639296,-405.782013685239,-317.544293743891,-719.516129032258,-587.470020861544,-860.696480938416,-578.3357771261,-546.962365591398,-448.920454545455,-829.323069403714,-484.215542521994,-437.155425219941,-627.423035406297,-769.145768248403,-738.731235071807,-790.106304985337,-731.30877753937],"Archive329_field26":[125.645252897236,115.245919239522,24.1407702948931,36.2604687222059,75.7631052085738,118.789882853643,69.8101639340364,30.9661422501783,81.4805399952862,50.2452157580528,101.275135871224,55.9134569772174,72.7476240260252,46.869796697738,27.7070969254255,40.6637807601905,37.1161802854012,48.320916695665,56.2193023355474,34.0239300799102,64.2719843983288,75.0797929175209,67.9554692837975,82.0062842961431,95.6833426362454,93.0525379930677,91.4770763910203,44.3152241218122,58.5000401786834,45.8584911207753,103.837831510317,84.5564459374571,122.083152675844,80.9767026909273,77.0534578685082,62.890084539988,116.85389903308,69.5992303537807,63.0007599598533,90.5044061745531,109.525575058933,104.537141270796,113.909993693002,104.040031862362,125.645252897236,115.245919239522,24.1407702948931,36.2604687222059,75.7631052085738,118.789882853643,69.8101639340364,30.9661422501783,81.4805399952862,50.2452157580528,101.275135871224,55.9134569772174,72.7476240260252,46.869796697738,27.7070969254255,40.6637807601906,37.1161802854012,48.3209166956649,56.2193023355474,34.0239300799102,64.2719843983287,75.0797929175209,67.9554692837975,82.0062842961431,95.6833426362454,93.0525379930677,91.4770763910203,44.3152241218122,58.5000401786834,45.8584911207753,103.837831510317,84.5564459374571,122.083152675844,80.9767026909273,77.0534578685082,62.890084539988,116.85389903308,69.5992303537807,63.0007599598533,90.5044061745531,109.525575058933,104.537141270796,113.909993693002,104.040031862362,125.645252897236,115.245919239522,24.1407702948931,36.2604687222059,75.7631052085738,118.789882853643,69.8101639340364,30.9661422501783,81.4805399952862,50.2452157580528,101.275135871224,55.9134569772174,72.7476240260252,46.869796697738,27.7070969254255,40.6637807601905,37.1161802854012,48.320916695665,56.2193023355474,34.0239300799102,64.2719843983288,75.0797929175209,67.9554692837975,82.0062842961431,95.6833426362454,93.0525379930677,91.4770763910203,44.3152241218122,58.5000401786834,45.8584911207753,103.837831510317,84.5564459374571,122.083152675844,80.9767026909273,77.0534578685082,62.890084539988,116.85389903308,69.5992303537807,63.0007599598533,90.5044061745531,109.525575058933,104.537141270796,113.909993693002,104.040031862362],"Archive329_field27":[1002.028439603,928.882282875886,210.30890323722,285.175424733936,607.038765032621,963.799658024708,569.712412223381,248.507686727207,644.129611354035,408.967112141239,805.104559136131,446.008764895106,588.336578082721,389.904987313574,229.561935635103,328.795501190298,309.561194948158,387.434430869663,455.138382247571,267.252180324289,514.172858054243,596.122328276147,548.400169073255,655.498182389325,759.144355813663,749.821843955922,733.766560618834,352.055326761108,464.282053863923,363.402784864666,823.353960542575,672.026466799001,982.77963361426,659.312479817027,624.015823459906,511.810539085443,946.176968436795,553.814772875775,500.156185179795,717.92744158085,878.671343307336,843.268376342604,904.016298678339,835.348809401732,1002.028439603,928.882282875886,210.30890323722,285.175424733936,607.038765032621,963.799658024708,569.712412223381,248.507686727207,644.129611354035,408.967112141239,805.104559136132,446.008764895106,588.336578082721,389.904987313574,229.561935635103,328.795501190298,309.561194948158,387.434430869663,455.138382247571,267.252180324289,514.172858054243,596.122328276147,548.400169073255,655.498182389325,759.144355813663,749.821843955922,733.766560618834,352.055326761108,464.282053863923,363.402784864666,823.353960542575,672.026466799001,982.77963361426,659.312479817027,624.015823459906,511.810539085442,946.176968436795,553.814772875775,500.156185179795,717.92744158085,878.671343307336,843.268376342603,904.016298678339,835.348809401732,1002.028439603,928.882282875886,210.30890323722,285.175424733936,607.038765032621,963.799658024708,569.712412223381,248.507686727207,644.129611354035,408.967112141239,805.104559136131,446.008764895106,588.336578082721,389.904987313574,229.561935635103,328.795501190298,309.561194948158,387.434430869663,455.138382247571,267.252180324289,514.172858054243,596.122328276147,548.400169073255,655.498182389325,759.144355813663,749.821843955922,733.766560618834,352.055326761108,464.282053863923,363.402784864666,823.353960542575,672.026466799001,982.77963361426,659.312479817027,624.015823459906,511.810539085443,946.176968436795,553.814772875775,500.156185179795,717.92744158085,878.671343307336,843.268376342604,904.016298678339,835.348809401732],"Archive329_field28":[253.01647961262,253.017760494736,252.998238607385,253.003460887701,253.026830109622,253.017425785247,253.015593222603,253.00919239651,253.022001762207,253.034119390115,253.021190812778,253.030817515574,253.025405945794,253.009152187056,253.004213369025,253.035757268968,253.028346021237,253.034321455474,253.030801864091,253.010398385911,253.029803492855,253.027777816359,253.028256998048,253.025398313026,253.022385783942,253.020046125151,253.023195835246,253.038925329751,253.011252997389,253.035575931021,253.020016860466,253.024694918156,253.017019390897,253.021367499851,253.02720502089,253.03114497305,253.01766220282,253.022853153891,253.030863980348,253.023678442494,253.019495150683,253.020207019684,253.018851982192,253.020300360431,252.996124956551,252.995801716935,252.99987454585,253.001408841639,252.99421656293,252.995752142326,253.001506585419,253.002507004076,252.996879478876,252.997745925386,252.994766918072,252.995077468804,252.994775522083,253.002031160817,253.001603954289,253.001058214137,253.002634263871,252.997500283055,252.994853025657,253.002352772863,252.99465966279,252.993583638632,252.994294248621,252.99421782266,252.994494102615,252.996431357302,252.9942946826,252.998767570875,253.001957720248,252.999809585157,252.995228749374,252.99419951098,252.995831176056,252.997198907537,252.993477245054,252.995479643889,252.99573942318,252.998629072091,252.994730351484,252.994157579867,252.995265682893,252.994936648812,252.995319872838,252.995068022313,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive329_field29":[0.92872870113459,-0.196829151088886,-7.92624927680335,-5.76488400240648,-3.31965003108532,0.60172650696406,-4.34391347242326,-6.73555823955988,-2.38491447239844,-5.63798834771289,-0.901029254190301,-4.64176448959439,-3.82860874708661,-6.2278574019528,-7.30296292463501,-6.20115022930019,-6.80503658650804,-5.41424889468154,-4.9853041523656,-6.20580281740554,-4.1417366386931,-3.08720188978123,-4.09713958080828,-2.88638151467815,-1.52259137968506,-2.25702617004539,-2.20907342762443,-5.55912831312467,-4.19149070299108,-5.27493891748199,-0.501530916001189,-2.41407984839534,0.788656048546196,-3.39083958298763,-3.58497664259087,-4.77657381631765,0.326653815509648,-3.35247059252576,-3.97042356770903,-1.74587249525747,-0.306734033086632,-1.12357222749084,0.246602315125961,-0.967141418931099,0.92872870113459,-0.196829151088886,-7.92624927680335,-5.76488400240648,-3.31965003108532,0.60172650696406,-4.34391347242326,-6.73555823955988,-2.38491447239844,-5.63798834771289,-0.901029254190301,-4.64176448959439,-3.82860874708661,-6.2278574019528,-7.30296292463501,-6.20115022930018,-6.80503658650804,-5.41424889468154,-4.9853041523656,-6.20580281740554,-4.1417366386931,-3.08720188978123,-4.09713958080828,-2.88638151467815,-1.52259137968506,-2.25702617004539,-2.20907342762443,-5.55912831312467,-4.19149070299108,-5.27493891748199,-0.501530916001189,-2.41407984839534,0.788656048546196,-3.39083958298763,-3.58497664259087,-4.77657381631765,0.326653815509648,-3.35247059252576,-3.97042356770903,-1.74587249525747,-0.306734033086632,-1.12357222749084,0.246602315125961,-0.967141418931099,0.92872870113459,-0.196829151088886,-7.92624927680335,-5.76488400240648,-3.31965003108532,0.60172650696406,-4.34391347242326,-6.73555823955988,-2.38491447239844,-5.63798834771289,-0.901029254190301,-4.64176448959439,-3.82860874708661,-6.2278574019528,-7.30296292463501,-6.20115022930019,-6.80503658650804,-5.41424889468154,-4.9853041523656,-6.20580281740554,-4.1417366386931,-3.08720188978123,-4.09713958080828,-2.88638151467815,-1.52259137968506,-2.25702617004539,-2.20907342762443,-5.55912831312467,-4.19149070299108,-5.27493891748199,-0.501530916001189,-2.41407984839534,0.788656048546196,-3.39083958298763,-3.58497664259087,-4.77657381631765,0.326653815509648,-3.35247059252576,-3.97042356770903,-1.74587249525747,-0.306734033086632,-1.12357222749084,0.246602315125961,-0.967141418931099],"Archive329_field30":[-2975.43628562725]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive330.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive330.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive330.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive330_field1":[614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive332.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive332.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive332.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive332_field1":[0,0,8000.01232316529,8000.01247486507,6555.54725154155,0,6570.2125132469,8000.02289111091,6531.25976921082,7864.54221411456,3932.72028793803,7854.9358325556,6567.18551764007,7847.24192136702,8000.02464421194,8000.03119714871,8000.03260473879,8000.00949143619,8000.01232703593,7969.46218776893,7850.9924041836,7352.24635257918,7356.66876574277,7010.39182015557,3941.58796514513,5811.19315150365,7367.96288940847,6542.79158364968,3737.77790761022,5421.05628809265,5205.50101129572,5994.07228489081,0,4235.06999388122,6739.10653409537,7098.52049135806,7770.51630126316,7402.86749115615,4625.24217386676,4978.8397271096,4014.16620962597,2193.9602593107,2912.91180432857,0,2092.20519946778,3499.93391334864,0,1965.76575628895,0,2141.37873012955,7785.39788395904,7999.44298824433,7763.94411994818,7860.94876769064,8000.02328856768,7424.59753197363,8000.02458687274,7851.91959197174,6620.92707763852,7364.84964022263,7550.72956386536,7864.57871397651,6794.13733225628,8000.00999952642,8000.01217094601,5645.14845266231,5678.69338453099,5712.43987428234,4504.15983125733,3311.36453641752,3937.4347944503,1586.55476476007,8000.01576743079,8000.0215722812,6665.12377004985,5417.58616383487,4709.71339631331,2129.04345356192,4954.4984492018,5931.05116494784,3548.67851286699,2154.45789800113,8000.00377819387,8000.01232660215,7358.87483159225,8000.02410749123,8000.00098233857,0,0,2119.3549652841,3083.54181772831],"Archive332_field2":[0,0,330.297520877842,334.363526677049,0,0,0,613.549928609528,0,0,0,0,0,0,660.538255854559,836.176471904756,873.904076988993,254.39874972153,330.4012653913,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,624.202953456327,0,659.001394380571,0,0,0,0,0,0,268.017080802092,326.217590963335,0,0,0,0,0,0,0,422.614091122916,578.201365670612,0,0,0,0,0,0,0,0,101.266845029096,330.38963882389,0,646.15254275487,26.3295983717185,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive333.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive333.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive333.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive333_field1":[199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636],"Archive333_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive333_field3":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive333_field4":[799.378914558545,799.378914558545,799.378914558544,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558544,799.378914558544,799.378914558544,799.378914558545,799.378914558544,799.378914558544,799.378914558544,799.378914558545,799.378914558544,799.378914558545,799.378914558544,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558546,799.378914558544,799.378914558545,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558544,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545],"Archive333_field5":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive333_field6":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive333_field7":[800.006014532849,800.00601467173,800.012024906314,800.012173107507,800.031974982166,800.01959627012,800.019580633486,800.022339874986,800.010632910818,800.041478356468,800.024754189127,800.02504102558,800.036131831359,800.018038738878,800.024047678835,800.042093957493,800.048084477607,800.024055067558,800.012029344948,800.021774141932,800.037574034125,800.035335432142,800.018038565715,800.025770314253,800.014579286939,800.035325313081,800.035299463987,800.020297743581,800.022690004525,800.019882105403,800.032623893103,800.031774434657,800.012365089615,800.035662650863,800.014387066039,800.030401514116,800.027459732464,800.038137897067,800.029444231157,800.031978395476,800.023771334235,800.039083949878,800.024874771052,800.017932922235,800.031012609367,800.028620113867,800.019541981971,800.021961971853,800.013929712885,800.041125956992,800.023415950951,800.033109785602,800.017663755075,800.027657989873,800.022725052316,800.03062811729,800.035657761671,800.018281730388,800.036745544647,800.030970975622,800.020939993691,800.035016790225,800.034805044926,800.017844628657,800.011877162178,800.022476057559,800.030367650145,800.030339306305,800.0359734742,800.027284519974,800.018756106033,800.020113592727,800.015385970774,800.024453343121,800.031374287869,800.024803729985,800.024776790699,800.037775978807,800.022574354725,800.028842902538,800.028695105131,800.026917748186,800.012029139852,800.012029423629,800.01673252786,800.033944834721,800.023058839702,800.019541394491,800.032921267446,800.016478298059,800.024945650595],"Archive333_field8":[3983.90777060589,3983.90726075566,3983.90356575064,3983.90789182344,3983.90206330628,3983.90577183906,3983.90376823881,3983.90382652536,3983.90671268169,3983.89954353895,3983.9044036436,3983.90451864394,3983.90125409409,3983.90258777407,3983.90200991944,3983.90036414068,3983.89896635416,3983.90162838178,3983.9038725658,3983.90394096656,3983.9000844133,3983.90070322643,3983.90326003198,3983.90251033541,3983.90557829304,3983.902039829,3983.90093180658,3983.90315603845,3983.90415182101,3983.90426134976,3983.90232220067,3983.9021609885,3983.90602126832,3983.90276131881,3983.90355326333,3983.90190920691,3983.90233907157,3983.90158703948,3983.90321126812,3983.90261960875,3983.90392364204,3983.90284074627,3983.90429542484,3983.90563674233,3983.90388677762,3983.90372985585,3983.90559019683,3983.90507614889,3983.90628003401,3983.90283268139,3983.90204459927,3983.90193065722,3983.90396534871,3983.90361555999,3983.90552146279,3983.90313787118,3983.90350272114,3983.90632042164,3983.90193253125,3983.90422788316,3983.90486511397,3983.90410295281,3983.90300136109,3983.90680089773,3983.90731754406,3983.90346592891,3983.90277670709,3983.9033408033,3983.90267649218,3983.90397100905,3983.90607449,3983.90537063792,3983.90553046562,3983.9039708968,3983.90414502409,3983.90532295212,3983.90499244823,3983.90360121984,3983.90471137587,3983.90411383308,3983.90448980278,3983.90532674692,3983.90316026559,3983.90314541171,3983.9062511383,3983.90471849871,3983.90521541058,3983.90601748493,3983.90408700121,3983.90598243966,3983.90462846363],"Archive333_field9":[1038678853.696,1038702837.80429,2076639403.2232,2102232986.22073,5521914778.40886,3384174947.03256,3381474580.87895,3857981380.24273,1836248948.546,7163098586.68983,4274921001.01434,4324456179.46941,6239781230.05516,3115197321.22703,4152910311.39647,7269409713.88026,8303941691.86124,4154186305.81692,2077405932.40995,3760282194.93376,6488842221.7144,6102247185.99326,3115167417.04243,4450400578.11638,2517767784.4983,6100499676.14173,6096035670.75338,3505315801.7346,3918446948.8447,3433537228.59259,5633978355.81732,5487281256.2109,2135387307.67114,6158756174.22445,2484572224.83317,5250184948.05209,4742154404.0823,6586218448.39109,5084867110.07915,5522504239.32765,4105187021.93184,6749596897.50098,4295744878.49548,3096923331.93988,5355717951.23877,4942546297.66041,3374799663.08912,3792719455.13003,2405589690.07698,7102241011.71508,4043814158.69365,5717889488.53482,3050439549.34908,4776392437.91271,3924499521.90894,5289318149.39172,6157911835.93373,3157160703.84956,6345766354.81041,5348528017.87007,3616229088.73306,6047219367.55564,6010652044.82991,3081675485.71574,2051124751.65761,3881499409.34347,5244336814.66827,5239441979.3909,6212433763.9775,4711896109.29522,3239082935.22382,3473513897.43466,2657077929.0024,4222966444.84119,5418177966.30673,4283476451.99573,4278824176.08689,6523717028.5213,3898474823.91005,4981020753.91857,4955496902.71912,4648556510.06769,2077370513.37688,2077419520.34319,2889621404.33953,5862098171.57646,3982142884.65759,3374698208.41094,5685333373.66016,2845717226.67017,4307985410.61504],"Archive333_field10":[800.006033726303,800.006033887904,800.01206366841,800.012212177538,800.032079832824,800.019659443818,800.019643896541,800.022412430298,800.010667042089,800.041615696954,800.024835072122,800.025122499219,800.036250549109,800.018097319093,800.024126015575,800.042232378689,800.048242947613,800.024133874952,800.012068200169,800.021844768041,800.037697637022,800.035451753182,800.018096898685,800.025854082731,800.014626252633,800.035441062638,800.035415439607,800.020363600548,800.022763815249,800.019946561533,800.03273100472,800.031878374273,800.012405027586,800.035779317782,800.014433649177,800.030500969933,800.027549343048,800.038263320786,800.029540392211,800.032082869005,800.023848730309,800.039211970329,800.024955858392,800.017990931174,800.031113658873,800.028713390907,800.019605463613,800.022033060008,800.013974577903,800.041261180059,800.023492481064,800.033217970666,800.017720927514,800.027748148576,800.022798715688,800.030728397144,800.035774165319,800.018340845644,800.036866534481,800.031071949488,800.02100803825,800.035131165906,800.034919262176,800.017902321243,800.011915309566,800.022549158447,800.030467051477,800.030438664735,800.036091586038,800.027373531828,800.018816718166,800.020178563671,800.015435617184,800.024532681347,800.031476478089,800.024884182334,800.024857115503,800.037899908312,800.022647674093,800.028936948272,800.028788498128,800.027005164164,800.012067961568,800.012068291768,800.016786474328,800.034055265994,800.023133822195,800.019604572303,800.033028554595,800.01653132443,800.02502657814],"Archive333_field11":[19971.4820697623,19971.4820697302,19971.481466739,19971.4814519079,19971.4794651385,19971.4807071828,19971.4807087233,19971.4804318729,19971.4816064261,19971.4785115417,19971.4801896243,19971.4801608744,19971.4790480608,19971.4808633765,19971.4802605075,19971.4784498751,19971.4778488127,19971.4802597225,19971.4814662923,19971.4804886422,19971.4789033455,19971.4791279369,19971.4808634207,19971.480087704,19971.481210492,19971.4791290091,19971.4791315715,19971.4806367542,19971.4803967404,19971.4806784591,19971.4794000179,19971.4794852822,19971.4814326185,19971.4790951859,19971.4812297523,19971.4796230217,19971.4799181826,19971.4788467895,19971.4797190864,19971.4794648339,19971.4802882465,19971.4787519242,19971.4801775337,19971.4808740308,19971.4795617582,19971.4798017857,19971.4807125864,19971.4804698209,19971.4812756724,19971.4785470133,19971.480323866,19971.4793513188,19971.4809010268,19971.479898307,19971.4803932513,19971.4796002849,19971.4790957056,19971.4808390425,19971.478986472,19971.479565933,19971.4805723223,19971.4791600098,19971.4791812018,19971.4808828939,19971.4814815938,19971.480418207,19971.4796264208,19971.4796292626,19971.4790639701,19971.4799357748,19971.480791462,19971.4806552729,19971.481129558,19971.4802198501,19971.4795254819,19971.4801847141,19971.4801874209,19971.478883143,19971.4804083638,19971.4797794357,19971.4797942833,19971.4799726184,19971.4814663105,19971.4814662777,19971.4809944812,19971.4792675987,19971.480359742,19971.4807126772,19971.4793702642,19971.481019986,19971.4801704605],"Archive333_field12":[1041993464.31818,1042021371.97037,2083333417.68884,2108980179.28082,5540021947.03921,3395084719.40716,3392399784.60041,3870511309.03977,1842143243.28967,7186816581.43373,4288889077.70061,4338526257.43987,6260283174.10689,3125313822.87254,4166438663.0501,7293314341.74148,8331308645.9423,4167795936.88758,2084116029.11965,3772478960.18944,6510187805.51003,6122335230.55131,3125241220.59284,4464866962.97929,2525878517.91841,6120489028.65843,6116064063.24159,3516688960.89375,3931193680.87442,3444668470.32771,5652475980.66693,5505231092.71982,2142284389.61838,6178903950.50395,2492616892.90324,5267360455.44525,4757629690.63235,6607878478.79631,5101473629.07992,5540546279.91329,4118552925.42338,6771705370.34371,4309748244.55762,3106941176.96221,5373168680.69894,4958654762.18386,3385762615.86443,3804996013.35872,2413337647.59799,7125593339.12971,4057030515.0127,5736572491.96428,3060312935.12494,4791962381.69925,3937220806.86758,5306635963.88674,6178014146.49448,3167369604.21465,6366660676.08514,5365965684.58326,3627980033.71299,6066971458.82215,6030376775.71776,3091638698.21206,2057712609.17264,3894123556.38018,5261502912.8439,5256600668.69023,6232831070.23143,4727267998.29202,3249550338.55233,3484734044.91967,2665651608.42362,4236667747.95033,5435825691.05469,4297370158.49771,4292695856.06085,6545119015.8103,3911136701.11354,4997261967.97841,4971625392.48697,4663652799.31494,2084074823.86897,2084131847.67113,2898937681.65233,5881169083.92452,3995091975.1969,3385608691.23004,5703861311.94698,2854874607.8863,4321961180.89728]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive334.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive334.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive334.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive334_field1":[0,0,8000.01232316529,8000.01247486507,6555.54725154155,0,6570.2125132469,8000.02289111091,6531.25976921082,7864.54221411456,3932.72028793803,7854.9358325556,6567.18551764007,7847.24192136702,8000.02464421194,8000.03119714871,8000.03260473879,8000.00949143619,8000.01232703593,7969.46218776893,7850.9924041836,7352.24635257918,7356.66876574277,7010.39182015557,3941.58796514513,5811.19315150365,7367.96288940847,6542.79158364968,3737.77790761022,5421.05628809265,5205.50101129572,5994.07228489081,0,4235.06999388122,6739.10653409537,7098.52049135806,7770.51630126316,7402.86749115615,4625.24217386676,4978.8397271096,4014.16620962597,2193.9602593107,2912.91180432857,0,2092.20519946778,3499.93391334864,0,1965.76575628895,0,2141.37873012955,7785.39788395904,7999.44298824433,7763.94411994818,7860.94876769064,8000.02328856768,7424.59753197363,8000.02458687274,7851.91959197174,6620.92707763852,7364.84964022263,7550.72956386536,7864.57871397651,6794.13733225628,8000.00999952642,8000.01217094601,5645.14845266231,5678.69338453099,5712.43987428234,4504.15983125733,3311.36453641752,3937.4347944503,1586.55476476007,8000.01576743079,8000.0215722812,6665.12377004985,5417.58616383487,4709.71339631331,2129.04345356192,4954.4984492018,5931.05116494784,3548.67851286699,2154.45789800113,8000.00377819387,8000.01232660215,7358.87483159225,8000.02410749123,8000.00098233857,0,0,2119.3549652841,3083.54181772831,0,0,8000.01232316529,8000.01247486507,6555.54725154155,0,6570.2125132469,8000.02289111091,6531.25976921082,7864.54221411456,3932.72028793803,7854.9358325556,6567.18551764008,7847.24192136702,8000.02464421194,8000.03119714871,8000.03260473878,8000.00949143619,8000.01232703593,7969.46218776893,7850.9924041836,7352.24635257918,7356.66876574277,7010.39182015557,3941.58796514513,5811.19315150366,7367.96288940846,6542.79158364968,3737.77790761022,5421.05628809265,5205.50101129572,5994.07228489081,0,4235.06999388122,6739.10653409537,7098.52049135806,7770.51630126316,7402.86749115615,4625.24217386676,4978.8397271096,4014.16620962596,2193.9602593107,2912.91180432857,0,2092.20519946778,3499.93391334864,0,1965.76575628895,0,2141.37873012955,7785.39788395904,7999.44298824433,7763.94411994817,7860.94876769064,8000.02328856768,7424.59753197362,8000.02458687274,7851.91959197174,6620.92707763852,7364.84964022263,7550.72956386536,7864.57871397651,6794.13733225628,8000.00999952642,8000.01217094601,5645.14845266231,5678.69338453099,5712.43987428234,4504.15983125733,3311.36453641752,3937.4347944503,1586.55476476007,8000.01576743079,8000.0215722812,6665.12377004985,5417.58616383487,4709.71339631331,2129.04345356192,4954.4984492018,5931.05116494783,3548.67851286699,2154.45789800113,8000.00377819387,8000.01232660215,7358.87483159225,8000.02410749123,8000.00098233857,0,0,2119.3549652841,3083.54181772831,0,0,8000.01232316529,8000.01247486507,6555.54725154155,0,6570.2125132469,8000.02289111091,6531.25976921082,7864.54221411456,3932.72028793803,7854.9358325556,6567.18551764007,7847.24192136702,8000.02464421194,8000.03119714871,8000.03260473879,8000.00949143619,8000.01232703593,7969.46218776893,7850.9924041836,7352.24635257918,7356.66876574277,7010.39182015557,3941.58796514513,5811.19315150365,7367.96288940847,6542.79158364968,3737.77790761022,5421.05628809265,5205.50101129572,5994.07228489081,0,4235.06999388122,6739.10653409537,7098.52049135806,7770.51630126316,7402.86749115615,4625.24217386676,4978.8397271096,4014.16620962597,2193.9602593107,2912.91180432857,0,2092.20519946778,3499.93391334864,0,1965.76575628895,0,2141.37873012955,7785.39788395904,7999.44298824433,7763.94411994818,7860.94876769064,8000.02328856768,7424.59753197363,8000.02458687274,7851.91959197174,6620.92707763852,7364.84964022263,7550.72956386536,7864.57871397651,6794.13733225628,8000.00999952642,8000.01217094601,5645.14845266231,5678.69338453099,5712.43987428234,4504.15983125733,3311.36453641752,3937.4347944503,1586.55476476007,8000.01576743079,8000.0215722812,6665.12377004985,5417.58616383487,4709.71339631331,2129.04345356192,4954.4984492018,5931.05116494784,3548.67851286699,2154.45789800113,8000.00377819387,8000.01232660215,7358.87483159225,8000.02410749123,8000.00098233857,0,0,2119.3549652841,3083.54181772831],"Archive334_field2":[0,0,330.297520877842,334.363526677049,0,0,0,613.549928609528,0,0,0,0,0,0,660.538255854559,836.176471904756,873.904076988993,254.39874972153,330.4012653913,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,624.202953456327,0,659.001394380571,0,0,0,0,0,0,268.017080802092,326.217590963335,0,0,0,0,0,0,0,422.614091122916,578.201365670612,0,0,0,0,0,0,0,0,101.266845029096,330.38963882389,0,646.15254275487,26.3295983717185,0,0,0,0,0,0,330.297520877842,334.363526677049,0,0,0,613.549928609527,0,0,0,0,0,0,660.538255854559,836.176471904756,873.904076988993,254.39874972153,330.4012653913,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,624.202953456327,0,659.001394380571,0,0,0,0,0,0,268.017080802092,326.217590963335,0,0,0,0,0,0,0,422.614091122916,578.201365670612,0,0,0,0,0,0,0,0,101.266845029096,330.38963882389,0,646.15254275487,26.3295983717185,0,0,0,0,0,0,330.297520877842,334.363526677049,0,0,0,613.549928609528,0,0,0,0,0,0,660.538255854559,836.176471904756,873.904076988993,254.39874972153,330.4012653913,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,624.202953456327,0,659.001394380571,0,0,0,0,0,0,268.017080802092,326.217590963335,0,0,0,0,0,0,0,422.614091122916,578.201365670612,0,0,0,0,0,0,0,0,101.266845029096,330.38963882389,0,646.15254275487,26.3295983717185,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive335.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive335.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive335.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive335_field1":[199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636,199.844728639636],"Archive335_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive335_field3":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive335_field4":[799.378914558545,799.378914558545,799.378914558544,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558544,799.378914558544,799.378914558544,799.378914558545,799.378914558544,799.378914558544,799.378914558544,799.378914558545,799.378914558544,799.378914558545,799.378914558544,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558546,799.378914558544,799.378914558545,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558544,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558544,799.378914558545,799.378914558544,799.378914558545,799.378914558544,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558544,799.378914558544,799.378914558544,799.378914558545,799.378914558544,799.378914558544,799.378914558544,799.378914558545,799.378914558544,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558544,799.378914558544,799.378914558544,799.378914558545,799.378914558544,799.378914558544,799.378914558544,799.378914558545,799.378914558544,799.378914558545,799.378914558544,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558546,799.378914558544,799.378914558545,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558544,799.378914558544,799.378914558545,799.378914558544,799.378914558545,799.378914558545,799.378914558545,799.378914558545,799.378914558545],"Archive335_field5":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive335_field6":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive335_field7":[800.006014532849,800.00601467173,800.012024906314,800.012173107507,800.031974982166,800.01959627012,800.019580633486,800.022339874986,800.010632910818,800.041478356468,800.024754189127,800.02504102558,800.036131831359,800.018038738878,800.024047678835,800.042093957493,800.048084477607,800.024055067558,800.012029344948,800.021774141932,800.037574034125,800.035335432142,800.018038565715,800.025770314253,800.014579286939,800.035325313081,800.035299463987,800.020297743581,800.022690004525,800.019882105403,800.032623893103,800.031774434657,800.012365089615,800.035662650863,800.014387066039,800.030401514116,800.027459732464,800.038137897067,800.029444231157,800.031978395476,800.023771334235,800.039083949878,800.024874771052,800.017932922235,800.031012609367,800.028620113867,800.019541981971,800.021961971853,800.013929712885,800.041125956992,800.023415950951,800.033109785602,800.017663755075,800.027657989873,800.022725052316,800.03062811729,800.035657761671,800.018281730388,800.036745544647,800.030970975622,800.020939993691,800.035016790225,800.034805044926,800.017844628657,800.011877162178,800.022476057559,800.030367650145,800.030339306305,800.0359734742,800.027284519974,800.018756106033,800.020113592727,800.015385970774,800.024453343121,800.031374287869,800.024803729985,800.024776790699,800.037775978807,800.022574354725,800.028842902538,800.028695105131,800.026917748186,800.012029139852,800.012029423629,800.01673252786,800.033944834721,800.023058839702,800.019541394491,800.032921267446,800.016478298059,800.024945650595,800.006014532849,800.00601467173,800.012024906314,800.012173107507,800.031974982167,800.01959627012,800.019580633487,800.022339874986,800.010632910818,800.041478356468,800.024754189127,800.02504102558,800.036131831359,800.018038738877,800.024047678835,800.042093957493,800.048084477607,800.024055067558,800.012029344948,800.021774141932,800.037574034125,800.035335432142,800.018038565715,800.025770314253,800.014579286939,800.035325313081,800.035299463987,800.020297743581,800.022690004525,800.019882105403,800.032623893103,800.031774434657,800.012365089615,800.035662650863,800.014387066039,800.030401514116,800.027459732464,800.038137897067,800.029444231157,800.031978395476,800.023771334235,800.039083949878,800.024874771052,800.017932922235,800.031012609366,800.028620113867,800.01954198197,800.021961971853,800.013929712885,800.041125956992,800.023415950951,800.033109785602,800.017663755075,800.027657989873,800.022725052316,800.03062811729,800.035657761671,800.018281730387,800.036745544647,800.030970975622,800.020939993691,800.035016790225,800.034805044926,800.017844628657,800.011877162178,800.022476057559,800.030367650145,800.030339306305,800.0359734742,800.027284519974,800.018756106033,800.020113592727,800.015385970774,800.024453343121,800.031374287869,800.024803729985,800.024776790699,800.037775978807,800.022574354725,800.028842902538,800.028695105131,800.026917748186,800.012029139852,800.012029423629,800.01673252786,800.033944834721,800.023058839702,800.019541394491,800.032921267446,800.016478298059,800.024945650595,800.006014532849,800.00601467173,800.012024906314,800.012173107507,800.031974982166,800.01959627012,800.019580633486,800.022339874986,800.010632910818,800.041478356468,800.024754189127,800.02504102558,800.036131831359,800.018038738878,800.024047678835,800.042093957493,800.048084477607,800.024055067558,800.012029344948,800.021774141932,800.037574034125,800.035335432142,800.018038565715,800.025770314253,800.014579286939,800.035325313081,800.035299463987,800.020297743581,800.022690004525,800.019882105403,800.032623893103,800.031774434657,800.012365089615,800.035662650863,800.014387066039,800.030401514116,800.027459732464,800.038137897067,800.029444231157,800.031978395476,800.023771334235,800.039083949878,800.024874771052,800.017932922235,800.031012609367,800.028620113867,800.019541981971,800.021961971853,800.013929712885,800.041125956992,800.023415950951,800.033109785602,800.017663755075,800.027657989873,800.022725052316,800.03062811729,800.035657761671,800.018281730388,800.036745544647,800.030970975622,800.020939993691,800.035016790225,800.034805044926,800.017844628657,800.011877162178,800.022476057559,800.030367650145,800.030339306305,800.0359734742,800.027284519974,800.018756106033,800.020113592727,800.015385970774,800.024453343121,800.031374287869,800.024803729985,800.024776790699,800.037775978807,800.022574354725,800.028842902538,800.028695105131,800.026917748186,800.012029139852,800.012029423629,800.01673252786,800.033944834721,800.023058839702,800.019541394491,800.032921267446,800.016478298059,800.024945650595],"Archive335_field8":[3983.90777060677,3983.90726075667,3983.90356575159,3983.90789182456,3983.90206330727,3983.90577184001,3983.90376823984,3983.90382652643,3983.90671268269,3983.89954353997,3983.90440364456,3983.90451864499,3983.90125409508,3983.9025877751,3983.90200992047,3983.90036414172,3983.89896635516,3983.9016283828,3983.90387256686,3983.9039409676,3983.90008441433,3983.90070322745,3983.90326003302,3983.90251033644,3983.90557829405,3983.90203983,3983.90093180757,3983.90315603946,3983.90415182197,3983.90426135079,3983.90232220165,3983.90216098947,3983.90602126925,3983.9027613198,3983.90355326431,3983.90190920791,3983.90233907258,3983.90158704049,3983.90321126909,3983.90261960971,3983.90392364301,3983.90284074721,3983.90429542581,3983.90563674327,3983.90388677856,3983.90372985681,3983.90559019776,3983.90507614984,3983.90628003497,3983.90283268234,3983.90204460028,3983.90193065824,3983.90396534974,3983.90361556103,3983.90552146389,3983.90313787221,3983.9035027222,3983.9063204227,3983.90193253224,3983.90422788418,3983.90486511501,3983.90410295386,3983.90300136209,3983.90680089883,3983.90731754517,3983.90346592988,3983.90277670806,3983.90334080427,3983.90267649315,3983.90397101002,3983.90607449093,3983.90537063888,3983.90553046669,3983.90397089786,3983.90414502509,3983.90532295308,3983.90499244918,3983.90360122076,3983.90471137683,3983.90411383405,3983.90448980372,3983.90532674782,3983.90316026658,3983.90314541268,3983.90625113933,3983.90471849981,3983.90521541165,3983.90601748582,3983.90408700218,3983.90598244067,3983.90462846463,3983.90777060677,3983.90726075667,3983.90356575159,3983.90789182456,3983.90206330727,3983.90577184001,3983.90376823984,3983.90382652643,3983.90671268269,3983.89954353997,3983.90440364456,3983.90451864499,3983.90125409508,3983.9025877751,3983.90200992047,3983.90036414172,3983.89896635516,3983.9016283828,3983.90387256686,3983.9039409676,3983.90008441433,3983.90070322745,3983.90326003302,3983.90251033643,3983.90557829405,3983.90203983,3983.90093180757,3983.90315603946,3983.90415182197,3983.90426135079,3983.90232220165,3983.90216098948,3983.90602126925,3983.9027613198,3983.90355326431,3983.90190920791,3983.90233907258,3983.90158704049,3983.90321126909,3983.90261960972,3983.903923643,3983.90284074721,3983.90429542581,3983.90563674327,3983.90388677856,3983.90372985681,3983.90559019776,3983.90507614984,3983.90628003498,3983.90283268234,3983.90204460028,3983.90193065824,3983.90396534974,3983.90361556103,3983.90552146389,3983.90313787221,3983.9035027222,3983.9063204227,3983.90193253224,3983.90422788418,3983.90486511501,3983.90410295386,3983.90300136209,3983.90680089883,3983.90731754517,3983.90346592988,3983.90277670806,3983.90334080427,3983.90267649315,3983.90397101002,3983.90607449093,3983.90537063888,3983.90553046669,3983.90397089786,3983.90414502509,3983.90532295308,3983.90499244918,3983.90360122076,3983.90471137683,3983.90411383405,3983.90448980372,3983.90532674782,3983.90316026658,3983.90314541268,3983.90625113933,3983.90471849981,3983.90521541165,3983.90601748582,3983.90408700218,3983.90598244067,3983.90462846463,3983.90777060677,3983.90726075667,3983.90356575159,3983.90789182456,3983.90206330727,3983.90577184001,3983.90376823984,3983.90382652643,3983.90671268269,3983.89954353997,3983.90440364456,3983.90451864499,3983.90125409508,3983.9025877751,3983.90200992047,3983.90036414172,3983.89896635516,3983.9016283828,3983.90387256686,3983.9039409676,3983.90008441433,3983.90070322745,3983.90326003302,3983.90251033644,3983.90557829405,3983.90203983,3983.90093180757,3983.90315603946,3983.90415182197,3983.90426135079,3983.90232220165,3983.90216098947,3983.90602126925,3983.9027613198,3983.90355326431,3983.90190920791,3983.90233907258,3983.90158704049,3983.90321126909,3983.90261960971,3983.90392364301,3983.90284074721,3983.90429542581,3983.90563674327,3983.90388677856,3983.90372985681,3983.90559019776,3983.90507614984,3983.90628003497,3983.90283268234,3983.90204460028,3983.90193065824,3983.90396534974,3983.90361556103,3983.90552146389,3983.90313787221,3983.9035027222,3983.9063204227,3983.90193253224,3983.90422788418,3983.90486511501,3983.90410295386,3983.90300136209,3983.90680089883,3983.90731754517,3983.90346592988,3983.90277670806,3983.90334080427,3983.90267649315,3983.90397101002,3983.90607449093,3983.90537063888,3983.90553046669,3983.90397089786,3983.90414502509,3983.90532295308,3983.90499244918,3983.90360122076,3983.90471137683,3983.90411383405,3983.90448980372,3983.90532674782,3983.90316026658,3983.90314541268,3983.90625113933,3983.90471849981,3983.90521541165,3983.90601748582,3983.90408700218,3983.90598244067,3983.90462846463],"Archive335_field9":[1038678853.696,1038702837.80429,2076639403.2232,2102232986.22073,5521914778.40886,3384174947.03256,3381474580.87895,3857981380.24273,1836248948.546,7163098586.68983,4274921001.01434,4324456179.46941,6239781230.05516,3115197321.22703,4152910311.39647,7269409713.88026,8303941691.86124,4154186305.81692,2077405932.40995,3760282194.93376,6488842221.7144,6102247185.99326,3115167417.04243,4450400578.11638,2517767784.4983,6100499676.14173,6096035670.75338,3505315801.7346,3918446948.8447,3433537228.59259,5633978355.81732,5487281256.2109,2135387307.67114,6158756174.22445,2484572224.83317,5250184948.05209,4742154404.0823,6586218448.39109,5084867110.07915,5522504239.32765,4105187021.93184,6749596897.50098,4295744878.49548,3096923331.93988,5355717951.23877,4942546297.66041,3374799663.08912,3792719455.13003,2405589690.07698,7102241011.71508,4043814158.69365,5717889488.53482,3050439549.34908,4776392437.91271,3924499521.90894,5289318149.39172,6157911835.93373,3157160703.84956,6345766354.81041,5348528017.87007,3616229088.73306,6047219367.55564,6010652044.82991,3081675485.71574,2051124751.65761,3881499409.34347,5244336814.66827,5239441979.3909,6212433763.9775,4711896109.29522,3239082935.22382,3473513897.43466,2657077929.0024,4222966444.84119,5418177966.30673,4283476451.99573,4278824176.08689,6523717028.5213,3898474823.91005,4981020753.91857,4955496902.71912,4648556510.06769,2077370513.37688,2077419520.34319,2889621404.33953,5862098171.57646,3982142884.65759,3374698208.41094,5685333373.66016,2845717226.67017,4307985410.61504,1038678853.696,1038702837.80429,2076639403.2232,2102232986.22073,5521914778.40886,3384174947.03256,3381474580.87895,3857981380.24273,1836248948.546,7163098586.68983,4274921001.01434,4324456179.4694,6239781230.05517,3115197321.22703,4152910311.39647,7269409713.88026,8303941691.86124,4154186305.81692,2077405932.40995,3760282194.93376,6488842221.7144,6102247185.99326,3115167417.04243,4450400578.11638,2517767784.4983,6100499676.14173,6096035670.75338,3505315801.7346,3918446948.8447,3433537228.59259,5633978355.81732,5487281256.2109,2135387307.67114,6158756174.22445,2484572224.83317,5250184948.05209,4742154404.0823,6586218448.39109,5084867110.07915,5522504239.32765,4105187021.93184,6749596897.50098,4295744878.49548,3096923331.93988,5355717951.23877,4942546297.66041,3374799663.08912,3792719455.13003,2405589690.07698,7102241011.71508,4043814158.69365,5717889488.53482,3050439549.34908,4776392437.91271,3924499521.90894,5289318149.39172,6157911835.93373,3157160703.84956,6345766354.81041,5348528017.87007,3616229088.73306,6047219367.55564,6010652044.82991,3081675485.71574,2051124751.65761,3881499409.34347,5244336814.66827,5239441979.3909,6212433763.9775,4711896109.29522,3239082935.22382,3473513897.43466,2657077929.0024,4222966444.84119,5418177966.30673,4283476451.99573,4278824176.08689,6523717028.5213,3898474823.91005,4981020753.91857,4955496902.71912,4648556510.06769,2077370513.37688,2077419520.34319,2889621404.33953,5862098171.57646,3982142884.65759,3374698208.41094,5685333373.66016,2845717226.67017,4307985410.61504,1038678853.696,1038702837.80429,2076639403.2232,2102232986.22073,5521914778.40886,3384174947.03256,3381474580.87895,3857981380.24273,1836248948.546,7163098586.68983,4274921001.01434,4324456179.46941,6239781230.05516,3115197321.22703,4152910311.39647,7269409713.88026,8303941691.86124,4154186305.81692,2077405932.40995,3760282194.93376,6488842221.7144,6102247185.99326,3115167417.04243,4450400578.11638,2517767784.4983,6100499676.14173,6096035670.75338,3505315801.7346,3918446948.8447,3433537228.59259,5633978355.81732,5487281256.2109,2135387307.67114,6158756174.22445,2484572224.83317,5250184948.05209,4742154404.0823,6586218448.39109,5084867110.07915,5522504239.32765,4105187021.93184,6749596897.50098,4295744878.49548,3096923331.93988,5355717951.23877,4942546297.66041,3374799663.08912,3792719455.13003,2405589690.07698,7102241011.71508,4043814158.69365,5717889488.53482,3050439549.34908,4776392437.91271,3924499521.90894,5289318149.39172,6157911835.93373,3157160703.84956,6345766354.81041,5348528017.87007,3616229088.73306,6047219367.55564,6010652044.82991,3081675485.71574,2051124751.65761,3881499409.34347,5244336814.66827,5239441979.3909,6212433763.9775,4711896109.29522,3239082935.22382,3473513897.43466,2657077929.0024,4222966444.84119,5418177966.30673,4283476451.99573,4278824176.08689,6523717028.5213,3898474823.91005,4981020753.91857,4955496902.71912,4648556510.06769,2077370513.37688,2077419520.34319,2889621404.33953,5862098171.57646,3982142884.65759,3374698208.41094,5685333373.66016,2845717226.67017,4307985410.61504],"Archive335_field10":[800.006033726303,800.006033887904,800.01206366841,800.012212177538,800.032079832824,800.019659443818,800.019643896541,800.022412430298,800.010667042089,800.041615696954,800.024835072122,800.025122499219,800.036250549109,800.018097319093,800.024126015575,800.042232378689,800.048242947613,800.024133874952,800.012068200169,800.021844768041,800.037697637022,800.035451753182,800.018096898685,800.025854082731,800.014626252633,800.035441062638,800.035415439607,800.020363600548,800.022763815249,800.019946561533,800.03273100472,800.031878374273,800.012405027586,800.035779317782,800.014433649177,800.030500969933,800.027549343048,800.038263320786,800.029540392211,800.032082869005,800.023848730309,800.039211970329,800.024955858392,800.017990931174,800.031113658873,800.028713390907,800.019605463613,800.022033060008,800.013974577903,800.041261180059,800.023492481064,800.033217970666,800.017720927514,800.027748148576,800.022798715688,800.030728397144,800.035774165319,800.018340845644,800.036866534481,800.031071949488,800.02100803825,800.035131165906,800.034919262176,800.017902321243,800.011915309566,800.022549158447,800.030467051477,800.030438664735,800.036091586038,800.027373531828,800.018816718166,800.020178563671,800.015435617184,800.024532681347,800.031476478089,800.024884182334,800.024857115503,800.037899908312,800.022647674093,800.028936948272,800.028788498128,800.027005164164,800.012067961568,800.012068291768,800.016786474328,800.034055265994,800.023133822195,800.019604572303,800.033028554595,800.01653132443,800.02502657814,800.006033726303,800.006033887904,800.01206366841,800.012212177538,800.032079832824,800.019659443818,800.019643896541,800.022412430298,800.010667042089,800.041615696954,800.024835072122,800.025122499219,800.036250549109,800.018097319093,800.024126015575,800.042232378689,800.048242947612,800.024133874952,800.012068200169,800.021844768041,800.037697637022,800.035451753182,800.018096898685,800.025854082731,800.014626252633,800.035441062637,800.035415439607,800.020363600548,800.022763815249,800.019946561533,800.03273100472,800.031878374273,800.012405027586,800.035779317783,800.014433649177,800.030500969933,800.027549343048,800.038263320786,800.029540392211,800.032082869005,800.023848730309,800.039211970329,800.024955858392,800.017990931174,800.031113658873,800.028713390907,800.019605463613,800.022033060008,800.013974577903,800.041261180059,800.023492481064,800.033217970666,800.017720927514,800.027748148576,800.022798715688,800.030728397144,800.035774165319,800.018340845644,800.036866534481,800.031071949488,800.02100803825,800.035131165906,800.034919262176,800.017902321243,800.011915309566,800.022549158447,800.030467051477,800.030438664735,800.036091586038,800.027373531828,800.018816718166,800.020178563671,800.015435617184,800.024532681347,800.031476478089,800.024884182334,800.024857115503,800.037899908312,800.022647674093,800.028936948272,800.028788498129,800.027005164164,800.012067961568,800.012068291768,800.016786474329,800.034055265994,800.023133822195,800.019604572303,800.033028554595,800.01653132443,800.02502657814,800.006033726303,800.006033887904,800.01206366841,800.012212177538,800.032079832824,800.019659443818,800.019643896541,800.022412430298,800.010667042089,800.041615696954,800.024835072122,800.025122499219,800.036250549109,800.018097319093,800.024126015575,800.042232378689,800.048242947613,800.024133874952,800.012068200169,800.021844768041,800.037697637022,800.035451753182,800.018096898685,800.025854082731,800.014626252633,800.035441062638,800.035415439607,800.020363600548,800.022763815249,800.019946561533,800.03273100472,800.031878374273,800.012405027586,800.035779317782,800.014433649177,800.030500969933,800.027549343048,800.038263320786,800.029540392211,800.032082869005,800.023848730309,800.039211970329,800.024955858392,800.017990931174,800.031113658873,800.028713390907,800.019605463613,800.022033060008,800.013974577903,800.041261180059,800.023492481064,800.033217970666,800.017720927514,800.027748148576,800.022798715688,800.030728397144,800.035774165319,800.018340845644,800.036866534481,800.031071949488,800.02100803825,800.035131165906,800.034919262176,800.017902321243,800.011915309566,800.022549158447,800.030467051477,800.030438664735,800.036091586038,800.027373531828,800.018816718166,800.020178563671,800.015435617184,800.024532681347,800.031476478089,800.024884182334,800.024857115503,800.037899908312,800.022647674093,800.028936948272,800.028788498128,800.027005164164,800.012067961568,800.012068291768,800.016786474328,800.034055265994,800.023133822195,800.019604572303,800.033028554595,800.01653132443,800.02502657814],"Archive335_field11":[19971.482069768,19971.4820697362,19971.4814667447,19971.4814519142,19971.4794651445,19971.4807071887,19971.4807087292,19971.4804318789,19971.4816064322,19971.4785115476,19971.4801896302,19971.4801608804,19971.4790480667,19971.4808633825,19971.4802605134,19971.478449881,19971.4778488185,19971.4802597284,19971.4814662983,19971.4804886482,19971.4789033515,19971.4791279429,19971.4808634267,19971.48008771,19971.4812104979,19971.479129015,19971.4791315774,19971.4806367601,19971.4803967462,19971.480678465,19971.4794000237,19971.4794852881,19971.4814326242,19971.4790951918,19971.4812297582,19971.4796230276,19971.4799181885,19971.4788467955,19971.4797190923,19971.4794648398,19971.4802882524,19971.47875193,19971.4801775395,19971.4808740366,19971.479561764,19971.4798017916,19971.4807125923,19971.4804698268,19971.4812756784,19971.4785470193,19971.4803238719,19971.4793513247,19971.4809010328,19971.479898313,19971.4803932574,19971.4796002909,19971.4790957117,19971.4808390485,19971.4789864779,19971.479565939,19971.4805723284,19971.4791600158,19971.4791812078,19971.4808829001,19971.4814816,19971.4804182129,19971.4796264267,19971.4796292686,19971.4790639761,19971.4799357808,19971.4807914679,19971.4806552789,19971.481129564,19971.480219856,19971.4795254879,19971.4801847201,19971.4801874269,19971.4788831489,19971.4804083698,19971.4797794417,19971.4797942893,19971.4799726242,19971.4814663164,19971.4814662835,19971.4809944872,19971.4792676048,19971.4803597481,19971.480712683,19971.4793702701,19971.4810199919,19971.4801704664,19971.482069768,19971.4820697362,19971.4814667447,19971.4814519142,19971.4794651445,19971.4807071887,19971.4807087292,19971.4804318789,19971.4816064322,19971.4785115476,19971.4801896302,19971.4801608804,19971.4790480667,19971.4808633825,19971.4802605134,19971.478449881,19971.4778488185,19971.4802597284,19971.4814662983,19971.4804886482,19971.4789033515,19971.4791279429,19971.4808634267,19971.48008771,19971.4812104979,19971.479129015,19971.4791315774,19971.4806367601,19971.4803967462,19971.480678465,19971.4794000237,19971.4794852881,19971.4814326242,19971.4790951918,19971.4812297582,19971.4796230276,19971.4799181885,19971.4788467955,19971.4797190923,19971.4794648398,19971.4802882524,19971.47875193,19971.4801775395,19971.4808740366,19971.479561764,19971.4798017916,19971.4807125923,19971.4804698268,19971.4812756784,19971.4785470193,19971.4803238719,19971.4793513247,19971.4809010328,19971.479898313,19971.4803932574,19971.4796002909,19971.4790957117,19971.4808390485,19971.4789864779,19971.479565939,19971.4805723284,19971.4791600158,19971.4791812078,19971.4808829001,19971.4814816,19971.4804182129,19971.4796264267,19971.4796292686,19971.4790639761,19971.4799357808,19971.4807914679,19971.4806552789,19971.481129564,19971.480219856,19971.4795254879,19971.4801847201,19971.4801874269,19971.4788831489,19971.4804083698,19971.4797794417,19971.4797942893,19971.4799726242,19971.4814663164,19971.4814662835,19971.4809944872,19971.4792676048,19971.4803597481,19971.480712683,19971.4793702701,19971.4810199919,19971.4801704664,19971.482069768,19971.4820697362,19971.4814667447,19971.4814519142,19971.4794651445,19971.4807071887,19971.4807087292,19971.4804318789,19971.4816064322,19971.4785115476,19971.4801896302,19971.4801608804,19971.4790480667,19971.4808633825,19971.4802605134,19971.478449881,19971.4778488185,19971.4802597284,19971.4814662983,19971.4804886482,19971.4789033515,19971.4791279429,19971.4808634267,19971.48008771,19971.4812104979,19971.479129015,19971.4791315774,19971.4806367601,19971.4803967462,19971.480678465,19971.4794000237,19971.4794852881,19971.4814326242,19971.4790951918,19971.4812297582,19971.4796230276,19971.4799181885,19971.4788467955,19971.4797190923,19971.4794648398,19971.4802882524,19971.47875193,19971.4801775395,19971.4808740366,19971.479561764,19971.4798017916,19971.4807125923,19971.4804698268,19971.4812756784,19971.4785470193,19971.4803238719,19971.4793513247,19971.4809010328,19971.479898313,19971.4803932574,19971.4796002909,19971.4790957117,19971.4808390485,19971.4789864779,19971.479565939,19971.4805723284,19971.4791600158,19971.4791812078,19971.4808829001,19971.4814816,19971.4804182129,19971.4796264267,19971.4796292686,19971.4790639761,19971.4799357808,19971.4807914679,19971.4806552789,19971.481129564,19971.480219856,19971.4795254879,19971.4801847201,19971.4801874269,19971.4788831489,19971.4804083698,19971.4797794417,19971.4797942893,19971.4799726242,19971.4814663164,19971.4814662835,19971.4809944872,19971.4792676048,19971.4803597481,19971.480712683,19971.4793702701,19971.4810199919,19971.4801704664],"Archive335_field12":[1041993464.31818,1042021371.97037,2083333417.68884,2108980179.28082,5540021947.03921,3395084719.40716,3392399784.60041,3870511309.03977,1842143243.28967,7186816581.43373,4288889077.70061,4338526257.43987,6260283174.10689,3125313822.87254,4166438663.0501,7293314341.74148,8331308645.9423,4167795936.88758,2084116029.11965,3772478960.18944,6510187805.51003,6122335230.55131,3125241220.59284,4464866962.97929,2525878517.91841,6120489028.65843,6116064063.24159,3516688960.89375,3931193680.87442,3444668470.32771,5652475980.66693,5505231092.71982,2142284389.61838,6178903950.50395,2492616892.90324,5267360455.44525,4757629690.63235,6607878478.79631,5101473629.07992,5540546279.91329,4118552925.42338,6771705370.34371,4309748244.55762,3106941176.96221,5373168680.69894,4958654762.18386,3385762615.86443,3804996013.35872,2413337647.59799,7125593339.12971,4057030515.0127,5736572491.96428,3060312935.12494,4791962381.69925,3937220806.86758,5306635963.88674,6178014146.49448,3167369604.21465,6366660676.08514,5365965684.58326,3627980033.71299,6066971458.82215,6030376775.71776,3091638698.21206,2057712609.17264,3894123556.38018,5261502912.8439,5256600668.69023,6232831070.23143,4727267998.29202,3249550338.55233,3484734044.91967,2665651608.42362,4236667747.95033,5435825691.05469,4297370158.49771,4292695856.06085,6545119015.8103,3911136701.11354,4997261967.97841,4971625392.48697,4663652799.31494,2084074823.86897,2084131847.67113,2898937681.65233,5881169083.92452,3995091975.1969,3385608691.23004,5703861311.94698,2854874607.8863,4321961180.89728,1041993464.31818,1042021371.97037,2083333417.68884,2108980179.28082,5540021947.03921,3395084719.40716,3392399784.60041,3870511309.03977,1842143243.28967,7186816581.43373,4288889077.70061,4338526257.43987,6260283174.10689,3125313822.87254,4166438663.05011,7293314341.74148,8331308645.94229,4167795936.88758,2084116029.11965,3772478960.18944,6510187805.51003,6122335230.55131,3125241220.59284,4464866962.97929,2525878517.91841,6120489028.65843,6116064063.24159,3516688960.89375,3931193680.87442,3444668470.32771,5652475980.66693,5505231092.71982,2142284389.61838,6178903950.50395,2492616892.90324,5267360455.44525,4757629690.63235,6607878478.7963,5101473629.07992,5540546279.91329,4118552925.42338,6771705370.34371,4309748244.55762,3106941176.96221,5373168680.69894,4958654762.18386,3385762615.86443,3804996013.35872,2413337647.59799,7125593339.12971,4057030515.0127,5736572491.96428,3060312935.12494,4791962381.69925,3937220806.86758,5306635963.88674,6178014146.49448,3167369604.21465,6366660676.08514,5365965684.58326,3627980033.71299,6066971458.82215,6030376775.71776,3091638698.21206,2057712609.17264,3894123556.38019,5261502912.8439,5256600668.69023,6232831070.23143,4727267998.29202,3249550338.55233,3484734044.91967,2665651608.42362,4236667747.95033,5435825691.05469,4297370158.49771,4292695856.06085,6545119015.8103,3911136701.11354,4997261967.97841,4971625392.48697,4663652799.31494,2084074823.86897,2084131847.67113,2898937681.65233,5881169083.92452,3995091975.1969,3385608691.23004,5703861311.94698,2854874607.8863,4321961180.89728,1041993464.31818,1042021371.97037,2083333417.68884,2108980179.28082,5540021947.03921,3395084719.40716,3392399784.60041,3870511309.03977,1842143243.28967,7186816581.43373,4288889077.70061,4338526257.43987,6260283174.10689,3125313822.87254,4166438663.0501,7293314341.74148,8331308645.9423,4167795936.88758,2084116029.11965,3772478960.18944,6510187805.51003,6122335230.55131,3125241220.59284,4464866962.97929,2525878517.91841,6120489028.65843,6116064063.24159,3516688960.89375,3931193680.87442,3444668470.32771,5652475980.66693,5505231092.71982,2142284389.61838,6178903950.50395,2492616892.90324,5267360455.44525,4757629690.63235,6607878478.79631,5101473629.07992,5540546279.91329,4118552925.42338,6771705370.34371,4309748244.55762,3106941176.96221,5373168680.69894,4958654762.18386,3385762615.86443,3804996013.35872,2413337647.59799,7125593339.12971,4057030515.0127,5736572491.96428,3060312935.12494,4791962381.69925,3937220806.86758,5306635963.88674,6178014146.49448,3167369604.21465,6366660676.08514,5365965684.58326,3627980033.71299,6066971458.82215,6030376775.71776,3091638698.21206,2057712609.17264,3894123556.38018,5261502912.8439,5256600668.69023,6232831070.23143,4727267998.29202,3249550338.55233,3484734044.91967,2665651608.42362,4236667747.95033,5435825691.05469,4297370158.49771,4292695856.06085,6545119015.8103,3911136701.11354,4997261967.97841,4971625392.48697,4663652799.31494,2084074823.86897,2084131847.67113,2898937681.65233,5881169083.92452,3995091975.1969,3385608691.23004,5703861311.94698,2854874607.8863,4321961180.89728]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive336.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive336.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive336.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive336_field1":[0,0,0,0,385.990591313332,0,0,282.091237885839,0,100.812802283925,680.058684338848,373.843329451243,37.2913341522591,0,934.228442915376,455.68595635788,282.739056710937,294.348035239587,261.760915020439,-574.298337387661,436.534670167036,528.482164628684,238.972331832557,137.479614372577,351.852564185546,0,-288.299265085187,137.460129446805,0,193.034813090107,0,548.695629615639,0,0,-79.3836821929086,-80.8703382118516,0,0,259.473468361196,564.492465579918,365.488402753382,-408.557500507936,520.951736451643,-146.15391248504],"Archive336_field2":[0,0,0,0,5965.34276065932,0,0,7916.94414451569,0,6208.22142682197,3109.76404218389,5849.21762099959,4618.54358869215,0,7268.97621225414,7471.15625159068,3531.6636518669,7414.77993432184,6960.53513478039,7235.5330165751,6473.69250200484,4515.54623024791,6074.37059116712,5129.87028135797,4414.54691631823,0,2821.14762921867,7163.16806559602,0,4530.66685591531,0,5069.88644814175,0,0,2331.67427348506,2966.15734905871,0,0,3337.04243932143,2529.97221952273,2276.6240399569,1044.65819816935,962.171930332715,2769.926621101],"Archive336_field3":[0,0,0,0,5977.81757740507,0,0,7921.96819318743,0,6209.03990207469,3183.25497128404,5861.15224275801,4618.69413625239,0,7328.76510456357,7485.04010854346,3542.96338170572,7420.6200711444,6965.45534327402,7258.28882135967,6488.39403310029,4546.36680832472,6079.06948917493,5131.71216534284,4428.54656781418,0,2835.84033614285,7164.48686391162,0,4534.77723800787,0,5099.49168947364,0,0,2333.02522203052,2967.25958267515,0,0,3347.11498497075,2592.18270483646,2305.77509567973,1121.70851036431,1094.15059988658,2773.7798132546],"Archive336_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive336_field5":[-896.295134251771,-833.965499179843,-212.964882318997,-274.743860127018,-554.956792836962,-851.084818946967,-522.349646341077,-252.87140449423,-584.521436921669,-383.81396761669,-721.687458461736,-416.626292040783,-538.462119379804,-367.085347821721,-235.93008059942,-311.666409148251,-295.513060374311,-364.927638131361,-425.114112654826,-268.332269162541,-475.075541755798,-543.640394859623,-504.412417937299,-597.161714559174,-683.810726573449,-678.415383015371,-662.8726878654,-329.161455524424,-428.043969850584,-341.182477179609,-738.269372612858,-610.21619073451,-871.177592685684,-600.661186393092,-568.787561877454,-472.121021517781,-840.041620795903,-505.639269763333,-459.96463933105,-647.495748881392,-782.261371805929,-756.927260622384,-807.988351521348,-746.836293451582],"Archive336_field6":[103.606634929867,96.4016825660451,24.6175327435264,31.7588322502333,64.1498582777731,98.3805788531936,60.3806570470602,29.2305004104563,67.5673634827665,44.3667181759751,83.4229777502116,48.1596368116936,62.2431675618967,42.432984590079,27.2721794367922,36.0268695416735,34.1596340236391,42.1835655855226,49.1407807430879,31.0176886927256,54.9160386326223,62.8417468430971,58.3072151596005,69.0285078988794,79.0446423301915,78.4209712100647,76.6243237881487,38.0491976942082,49.4794556206782,39.4387596303583,85.3397529955975,70.5375313171843,100.703189557996,69.4330269985472,65.7486167491931,54.5745128472026,97.1040477692102,58.4490322736241,53.16930400119,74.8468368390704,90.4249786384171,87.4964990468623,93.3988716044307,86.3300404644141],"Archive336_field7":[999.901769181637,930.367181745888,237.582415062524,306.502692377251,619.106651114735,949.465397800161,582.730303388138,282.101904904686,652.088800404435,428.180685792665,805.110436211948,464.785928852477,600.705286941701,409.5183324118,263.202260036212,347.693278689924,329.67269439795,407.111203716883,474.254893397914,299.349957855267,529.991580388421,606.48214170272,562.719633096899,666.190222458053,762.855368903641,756.836354225436,739.497011653548,367.210653218632,477.523425471263,380.621236809967,823.609125608455,680.753722051694,971.880782243681,670.09421339164,634.536178626647,526.695534364984,937.145668565113,564.088302036957,513.133943332239,722.342585720463,872.686350444346,844.423759669246,901.387223125779,833.166333915996],"Archive336_field8":[3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6],"Archive336_field9":[0,0,0,0,378.232046303891,0,0,278.429383501404,0,89.7587444188393,680.73519515794,372.105847190936,30.1873516489865,0,918.473552215927,446.725721544521,271.599168770527,288.926205576109,253.397490761929,-566.046513351684,430.596151047699,523.216245643565,230.315593598894,129.134850325648,345.310131326767,0,-297.443886853093,136.199009823366,0,200.986365299202,0,542.337052410462,0,0,-85.4424392557372,-87.125495097387,0,0,256.809971507859,562.631707289655,362.86887036262,-411.953767395041,520.240106957108,-156.506321986561],"Archive336_field10":[0,0,0,0,5893.03598002804,0,0,7873.41050496645,0,6155.20102389531,3055.50506654105,5801.66715149485,4562.93052083308,0,7240.40622980899,7419.24204387222,3503.01521220321,7360.26284327302,6899.1910029446,7212.9048232825,6408.77490321242,4464.35949942736,6008.29264803011,5059.0911248907,4340.3023533376,0,2773.60867790069,7118.71247832385,0,4497.52323707332,0,5001.80445698837,0,0,2298.8762258495,2932.92261906938,0,0,3308.4881475732,2490.93439804074,2224.9552057765,1026.46522617306,946.210612757469,2709.68801896866],"Archive336_field11":[0,0,0,0,5905.16151707608,0,0,7878.33205071435,0,6155.85544638286,3130.41716350789,5813.58791954229,4563.03037620282,0,7298.42969677567,7432.67895013976,3513.52838118663,7365.9315415183,6903.84289967813,7235.08152303825,6423.22417523649,4494.91501363848,6012.70536589209,5060.73895982755,4354.01695049351,0,2789.51213726563,7120.0152752168,0,4502.01185994114,0,5031.12087952238,0,0,2300.46349942833,2934.2164101076,0,0,3318.44017334925,2553.68530038262,2254.35123367903,1106.04555376959,1079.79826476134,2714.20400651168],"Archive336_field12":[8994886.3381511,8369369.18253421,2137236.761947,2757227.72500651,5569341.0388984,8541172.34156875,5242107.78130991,2537723.85308443,5866040.8680142,3851814.96783309,7242588.30876236,4181107.31519324,5403806.59911155,3683932.7291601,2367706.99476595,3127768.76564046,2965659.73408425,3662278.75306023,4266287.94238215,2692883.37037567,4767682.35911074,5455773.85586508,5062096.39382409,5992894.01748148,6862471.4419223,6808325.77025055,6652345.03252264,3303342.57790457,4295690.90515162,3423981.103458,7408998.26387477,6123903.91022097,8742815.98448423,6028013.42200211,5708141.51960423,4738031.88717449,8430346.89090799,5074408.624815,4616034.93340986,6498027.76234657,7850485.69073674,7596241.92451982,8108672.14017819,7494972.7116515],"Archive336_field13":[-894.052380940174,-832.133998247258,-217.354961872991,-278.472262773782,-556.414025833933,-835.804073827835,-522.641426598045,-264.054865123342,-584.184810042174,-386.644413650258,-717.452618331563,-420.464931256185,-539.122218801336,-368.846775784722,-246.511130453773,-313.884147191226,-296.875432061681,-368.65208030916,-428.751427465909,-278.790055097522,-478.009699497483,-544.063093568197,-506.241519572845,-598.378468185294,-681.81153412592,-677.878161842626,-661.24264385416,-329.861435809584,-427.983685120259,-342.980174196539,-734.949747766645,-610.617396511643,-859.965525167656,-600.814017708788,-568.412078326835,-473.130187137912,-829.080146534649,-504.971003638395,-460.589512172986,-645.384109348877,-773.522489671348,-753.043173623614,-803.79113427872,-740.359634610082],"Archive336_field14":[103.347385364949,96.1899714440669,25.1250010452967,32.189814453676,64.3183061487425,96.6142113694117,60.4143851901775,30.5232450415205,67.5284513243952,44.6939016869437,82.9334542455243,48.6033617373562,62.3194713118229,42.6365956741336,28.4952887983642,36.2832274833914,34.3171164651453,42.6140899812115,49.5612337092545,32.2265494442065,55.2552106289348,62.8906084168254,58.5186489364467,69.1691577182565,78.8135470200082,78.3588714888968,76.4358999438833,38.1301114458189,49.4724870477072,39.6465632113774,84.9560231878565,70.5839084299173,99.4071381327934,69.4506934319864,65.7052129799831,54.6911666702494,95.83696350346,58.3717844990948,53.2415357582732,74.6027432835125,89.4148134189344,87.0475206151615,92.9136970921967,85.5813754293007],"Archive336_field15":[997.399766305123,928.323969691325,242.479962918287,310.662077227458,620.732331982676,932.418285197247,583.055811788223,294.578110164863,651.713261366569,431.338315337202,800.386072577088,469.068292993541,601.441690113159,411.483371458856,275.006419252137,350.167374674617,331.192548526827,411.266170290372,478.312661175164,311.016604541729,533.264910126418,606.953701985023,564.760168509292,667.54762590355,760.625081145928,756.237033331523,737.678543798043,367.991547255403,477.456172167966,382.626737407916,819.905770954501,681.20130494156,959.372663300449,670.264711140775,634.117291306818,527.821353808161,924.917110038109,563.34278813749,513.831047931259,719.986852632389,862.937303090282,840.090694238776,896.704831370917,825.941010039383],"Archive336_field16":[1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2],"Archive336_field17":[0,0,0,0,368.954752920419,0,0,274.890578849114,0,81.06429503119,677.3221407542,367.630231366965,23.0065357503432,0,908.834788930053,439.870657606271,261.833895512921,282.712410413139,245.792857342855,-563.50544479202,423.307721914361,515.84750925138,221.071813167018,119.438566029284,337.088274006692,0,-305.51977828435,132.313206527019,0,204.784250438624,0,533.962521146237,0,0,-90.9569440321224,-92.2997515516687,0,0,252.487119397904,557.408033396105,356.936928616115,-412.482726314563,516.82932067143,-165.117570407807],"Archive336_field18":[0,0,0,0,5791.35549519223,0,0,7810.80811145728,0,6072.32722060684,2978.22627057212,5728.0536317093,4479.57346290726,0,7185.6639107854,7345.16825385284,3458.6883261112,7283.35988222643,6813.03794116232,7166.10197120655,6318.03199965173,4386.915804707,5913.36338383869,4957.38850984688,4232.64472035719,0,2705.83542161966,7050.58670373816,0,4444.46993815692,0,4903.77458164432,0,0,2250.28457694522,2881.85500283496,0,0,3261.18401687003,2434.61365963683,2149.92874950135,1000.6794257298,924.039052892188,2622.05110619883],"Archive336_field19":[0,0,0,0,5803.09624953746,0,0,7815.64381125105,0,6072.86829217065,3054.27520061336,5739.83888229914,4479.63254187999,0,7242.91008589319,7358.32745077511,3468.58500342969,7288.84472883234,6817.47021382844,7188.22341389308,6332.19691545166,4417.14035665485,5917.49433932143,4958.82712025908,4246.04637671804,0,2723.02913385343,7051.82810706209,0,4449.18527602619,0,4932.75999026608,0,0,2252.12207548907,2883.33270738938,0,0,3270.94343230671,2497.60833346319,2179.35715268112,1082.35914214591,1058.75432371046,2627.24490970596],"Archive336_field20":[8972378.89573464,8350988.91683013,2181293.97602144,2794644.59446045,5583965.29007979,8387820.43742884,5245035.98001014,2649956.92607777,5862662.60520354,3880220.27696094,7200089.02010679,4219630.47806251,5410431.11266925,3701609.76846843,2473894.4961158,3150025.16407668,2979331.99226117,3699655.87671302,4302790.68801971,2797833.84063835,4797128.48056793,5460015.90370581,5080452.58107083,6005104.90667438,6842408.2862201,6802934.41733271,6635986.51394212,3310367.32105374,4295085.90990343,3442022.12557201,7375683.73717938,6127930.26295414,8630295.82333828,6029547.18053885,5704373.30561914,4748159.49994684,8320341.59096752,5067702.15324359,4622305.92604858,6476836.12930487,7762785.50302047,7557262.66451235,8066550.42090155,7429975.35988198],"Archive336_field21":[-887.525089242721,-826.016176244618,-217.198927762419,-277.877411605972,-553.463963867142,-817.237476400932,-518.63449510307,-269.408448699982,-579.511814331517,-385.066929480489,-709.040542050623,-419.578801422914,-535.429795672258,-366.193350783405,-251.66638229937,-312.370494107287,-294.271726712085,-368.08107083858,-427.757042377668,-283.110447199933,-476.519668009939,-540.154054980558,-503.738255071185,-595.007808396217,-675.34241801225,-673.030255753742,-655.280826103241,-327.239211934214,-423.52993457244,-340.675752868495,-727.458256101141,-606.538112485915,-845.059582080868,-596.656079389355,-563.712714365731,-469.793622307818,-814.444736462889,-500.084907348864,-456.890849969539,-638.982012594608,-760.904223674155,-744.999059242552,-795.434716135549,-729.820717173564],"Archive336_field22":[102.59286745881,95.4827859126822,25.1069643869318,32.121053031879,63.9772957141953,94.4680179918199,59.9512066313254,31.1420889445999,66.9882795192375,44.5115534623029,81.9610659295159,48.5009301535757,61.8926481365969,42.3298747906662,29.0912066780078,36.108257770308,34.0161428914733,42.548084524416,49.4462884318787,32.725962271748,55.0829714384445,62.4387457229435,58.2292857552297,68.7795285605224,78.0657538814597,77.7984810358743,75.7467476193495,37.8269972355798,48.9576587401076,39.3801851734574,84.0900492330654,70.1123663287971,97.6840956385737,68.9700593405362,65.1619931545992,54.3054786964326,94.1451930916753,57.8069794754412,52.8139913814298,73.8626972028664,87.956213423621,86.1176666081903,91.9477425412958,84.3631363363117],"Archive336_field23":[990.11795670153,921.498962157301,242.305892149351,309.998464637851,617.441259581338,911.705494392752,578.585701734396,300.550537644582,646.500093850755,429.578482942792,791.001607980139,468.079731576489,597.322443808854,408.523225574071,280.757588977377,348.478751877595,328.287869603559,410.629155362996,477.203330809547,315.836409471681,531.602639448384,602.592800703502,561.967540826415,663.78733695674,753.40817189371,750.828736789617,731.02757372259,365.066209169794,472.487593312547,380.055938041952,811.548305334207,676.650478814712,942.743677719442,665.626138729892,628.87470752033,524.09910100425,908.589929554564,557.891886824305,509.704841350968,712.844709797474,848.860437097776,831.116725850742,887.382458676845,814.183853509876],"Archive336_field24":[-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6],"Archive336_field25":[0,0,0,0,350.804097687568,0,0,267.826496122074,0,75.7343690379694,653.067089125086,351.915518141407,15.362387526359,0,899.732218980824,431.580708427344,252.959266625411,271.696482719806,236.336580787613,-567.181965049544,406.889157925829,495.627825272811,207.290946888959,105.137239160896,320.152575223554,0,-305.573355304801,120.395143418724,0,197.127633302256,0,512.635601479765,0,0,-94.1194370826951,-93.9516056416231,0,0,241.60659341196,535.62089092675,337.239880039312,-398.882475312032,498.728617024968,-166.041719069877],"Archive336_field26":[0,0,0,0,5532.19923861085,0,0,7582.47503240389,0,5823.02066011283,2799.40101136114,5502.44974436785,4260.82262733625,0,6952.71488170072,7102.629920902,3321.75562698971,7040.5951470773,6563.08328074045,6940.15667992661,6069.17939178383,4178.07805020404,5658.97762050026,4706.16760213642,3979.75591338583,0,2546.76700750292,6811.01764263533,0,4270.45648239374,0,4658.40726998126,0,0,2129.63215643043,2744.1750847996,0,0,3118.69202320861,2299.31489469477,1984.50423192762,941.41652602465,873.714288395302,2425.93206067795],"Archive336_field27":[0,0,0,0,5543.31055693625,0,0,7587.20361194118,0,5823.5131409446,2874.5682537223,5513.69184133486,4260.85032177512,0,7010.68914530482,7115.73001885113,3331.37341587662,7045.83557882035,6567.33714144121,6963.29448776995,6082.80340603666,4207.37247397725,5662.7729290503,4707.34185485364,3992.6125283518,0,2565.03357989279,6812.08164358359,0,4275.00384465676,0,4686.52894506358,0,0,2131.71095370345,2745.782912074,0,0,3128.03671359611,2360.87668542057,2012.95498787916,1022.43449892077,1006.03523357075,2431.60774293405],"Archive336_field28":[8906873.41135693,8289592.71880578,2179728.07542037,2788674.88823524,5554359.55970401,8201492.93529349,5204823.89809122,2703683.510027,5815766.1492598,3864389.22950228,7115668.5350195,4210737.60692384,5373375.32034238,3674980.97692246,2525630.69619502,3134834.70177791,2953202.16874361,3693925.43693978,4292811.4071966,2841191.69723306,4782175.07587059,5420786.23878454,5055330.74474004,5971278.21217533,6777486.63047628,6754282.62554993,6576155.91686647,3284051.65246336,4250389.71729321,3418895.80575965,7300501.8986763,6086992.07780702,8480705.29371822,5987819.6500022,5657212.22767016,4714674.96984101,8173466.03058906,5018667.09873748,4585187.5206798,6412587.05505483,7636153.25423106,7476534.90890633,7982688.5002914,7324210.68388854],"Archive336_field29":[-881.073488879395,-819.983495335257,-216.785024242277,-277.174880019577,-550.312402485253,-800.304228072817,-514.651208657261,-273.421618449809,-574.846330254158,-383.318964702855,-700.89751254358,-418.283972256527,-531.675013826302,-363.442894946997,-255.710314820922,-311.147432042466,-291.900575222854,-367.382663695299,-426.410923527049,-285.933470847173,-474.799792003582,-536.188581793558,-501.108873755137,-591.302337140625,-668.713703997529,-668.238612375223,-649.340385403423,-325.195456780813,-419.068043648317,-338.456365818843,-720.236249554616,-602.253409513424,-831.172085458311,-592.516975493777,-559.020965368325,-466.399058253333,-800.86515294833,-495.327660457315,-453.163452371786,-632.667881637454,-749.013672636032,-737.27175874663,-787.399215289778,-719.738042148302],"Archive336_field30":[101.847099041675,94.7854422088738,25.0591194871117,32.0398443643132,63.6129930898984,92.510630507872,59.4907613060738,31.6059886103378,66.4489760162931,44.3094986461315,81.0197778948958,48.3512552444841,61.4586166473152,42.0119376928917,29.5586623457118,35.9668787311902,33.7420512253244,42.4673526190859,49.2906847261365,33.0522877969469,54.8841635249506,61.9803595093971,57.9253441854357,68.3511970958629,77.2995121305759,77.2445942331228,75.0600663607011,37.5907507292979,48.4418894511686,39.1236366159187,83.2552262298684,69.6170789622933,96.0787797803501,68.4916024016798,64.6196535758369,53.9130863411705,92.5754702426642,57.2570687115326,52.3831253559535,73.1328194695421,86.5817331509481,85.2244344897958,91.0188842101597,83.1976362788659],"Archive336_field31":[982.92058792107,914.768937544131,241.844143729389,309.214724383891,613.925395575151,892.814858580689,574.141969963335,305.027607060147,641.295306270451,427.628463348986,781.917290438476,466.635227501011,593.133630473617,405.454832639889,285.268977166634,347.114310773656,325.642626448178,409.850016314385,475.701608253185,318.98575864412,529.683955528532,598.168941302955,559.034217940573,659.653534236488,746.013216128105,745.483206608346,724.400451764124,362.786207510111,467.509933099486,377.580002434762,803.491475784484,671.870488475717,927.250865238661,661.008577895457,623.640618944162,520.312144594504,893.440623190995,552.584729168848,505.546577727739,705.800701106996,835.59540578698,822.496193236426,878.418099499937,802.935678427168],"Archive336_field32":[-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive337.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive337.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive337.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive337_field1":[0,0,0,0,385.790046898572,0,0,281.620107939875,0,101.1852756325,679.547892882904,373.259279414292,37.6151194771426,0,932.702227781788,455.098399689761,282.924663137617,294.170332862932,261.746653261734,-572.963082897016,436.070075078167,527.841827275367,239.113304529121,137.635428355483,351.676223043201,0,-287.884890897374,137.457654118619,0,192.378578368716,0,548.197215297345,0,0,-79.1051207404748,-80.429869669395,0,0,259.023424848739,563.956475198305,365.250188573199,-408.249393864208,520.586982522856,-145.93601104545,0,0,0,0,385.790271514325,0,0,281.620076336687,0,101.184108005702,679.550221744308,373.260107983712,37.6140371192062,0,932.70185782567,455.098535875334,282.921310034784,294.170600792902,261.746531582178,-572.962558358486,436.070515979403,527.844525502543,239.112739135568,137.634999067394,351.676511321248,0,-287.886859320241,137.457901247828,0,192.381624125659,0,548.197867582064,0,0,-79.1081248304942,-80.4337090795977,0,0,259.027206522741,563.960575682009,365.251813371593,-408.251042031522,520.590267260886,-145.936053113411,0,0,0,0,385.790322377327,0,0,281.620069179975,0,101.183843578787,679.550749144992,373.260295637061,37.6137919821567,0,932.70177404121,455.098566717243,282.920550681249,294.170661469511,261.74650402424,-572.962439566499,436.070615827259,527.84513654917,239.112611099879,137.634901849153,351.676576607781,0,-287.887305080724,137.457957212542,0,192.382313876424,0,548.198015316835,0,0,-79.1088051275178,-80.4345785478486,0,0,259.02806291628,563.961504266252,365.252181339942,-408.251415294032,520.591011136208,-145.936062650248],"Archive337_field2":[0,0,0,0,5959.13402982644,0,0,7903.70238848653,0,6201.14568054797,3107.39772234913,5841.91747278573,4614.27143982136,0,7257.37539001041,7460.04801334334,3527.27807844046,7403.94290458571,6951.60549466906,7222.43887000327,6465.89834032226,4511.10886553011,6067.84171063764,5125.14767889216,4410.87258705923,0,2819.03771999469,7152.12625336448,0,4524.36835352599,0,5065.10040507552,0,0,2329.79665420633,2963.42114569007,0,0,3333.33997011176,2527.89095124877,2275.01961814798,1043.98136379709,961.537590275137,2767.97416872051,0,0,0,0,5959.13718256284,0,0,7903.70398646337,0,6201.14715491799,3107.40544900158,5841.91948383677,4614.27461301186,0,7257.37778310719,7460.04833985411,3527.27740763224,7403.94432721278,6951.60731787733,7222.44459171986,6465.90022314189,4511.11189876773,6067.84423419177,5125.15137906153,4410.87723945338,0,2819.0410561636,7152.12646261129,0,4524.36863449271,0,5065.10399423481,0,0,2329.79936358623,2963.42188563995,0,0,3333.34247825723,2527.89557471373,2275.03577299343,1043.9882656783,961.546435382193,2767.98550840538,0,0,0,0,5959.13788406667,0,0,7903.70489792159,0,6201.14741675377,3107.40719555877,5841.92007518081,4614.27534682026,0,7257.37917749309,7460.04806888037,3527.27703614911,7403.94466161325,6951.60782312915,7222.44799208591,6465.90060984565,4511.11256219295,6067.84480290068,5125.15221732358,4410.87829295025,0,2819.04181016452,7152.12587910061,0,4524.36837168457,0,5065.10482246003,0,0,2329.79997053889,2963.42207050857,0,0,3333.34309788778,2527.89662369509,2275.03943210252,1043.98982896356,961.548439155817,2767.98807654428],"Archive337_field3":[0,0,0,0,5971.61004325619,0,0,7908.71962465691,0,6201.97237988748,3180.83478246932,5853.8308702517,4614.42566459245,0,7317.06582384807,7473.91818888715,3538.60735107129,7409.78599379544,6956.53286011298,7245.13147833908,6480.58756139973,4541.88599505244,6072.55241297765,5126.99645396931,4424.87072441722,0,2833.69977986904,7153.44845287745,0,4528.45742431442,0,5094.6808164076,0,0,2331.13967678213,2964.51299364349,0,0,3343.38943796036,2590.03517288391,2304.15365523752,1120.96612426711,1093.41929212179,2771.81913241737,0,0,0,0,5971.61235210182,0,0,7908.72097687772,0,6201.97335721187,3180.84309805989,5853.83248059277,4614.42810759339,0,7317.06801998273,7473.91810557162,3538.60653366502,7409.78692515976,6956.53423572059,7245.13689117429,6480.58894457968,4541.88852344923,6072.55424246125,5126.99938147031,4424.8746079812,0,2833.70275939807,7153.44799141018,0,4528.45761840255,0,5094.6836727,0,0,2331.14207011,2964.51352843564,0,0,3343.39160839669,2590.04048036151,2304.18150696683,1120.97960577305,1093.44038874926,2771.83404881237,0,0,0,0,5971.61272586455,0,0,7908.72166446798,0,6201.97325445801,3180.85120968422,5853.83274255945,4614.42865812489,0,7317.06926814581,7473.91748828807,3538.60623135227,7409.78686502192,6956.53438295696,7245.14004657057,6480.58894888688,4541.88923985467,6072.55440468983,5126.99996264507,4424.87564960172,0,2833.70421417118,7153.44695126884,0,4528.45719881184,0,5094.68428343943,0,0,2331.1438034374,2964.51354398607,0,0,3343.39241833672,2590.04526726392,2304.23133546483,1121.00559415263,1093.48445159968,2771.85550198577],"Archive337_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,1821643.425,1113226.5375,1546147.96875,1467434.98125,1801965.178125,2102058.44296875,1270652.5125,2357875.65234375,2714851.34956055,2511138.92127404,2978032.54863044,3429480.92383684,3395903.175,3323246.10830059,1644539.203125,2136495.375,1693734.8203125,3710755.125,3048172.18272937,4419172.0125,3002338.2375,2844912.2625,2352956.090625,4261746.0375,2530060.3125,2293921.35,3248649.01840725,3959787.47310336,3807172.97231184,4064963.56875,3769928.45356871,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive337_field5":[-896.296879416301,-833.967151921563,-212.961496900867,-274.741213553737,-554.959767562692,-851.095741159436,-522.351679972774,-252.857234696309,-584.523382022244,-383.815474522104,-721.692895621872,-416.625773012749,-538.464613005086,-367.085802841535,-235.918202496796,-311.668797580195,-295.515502034584,-364.927982940831,-425.114653035868,-268.320965089778,-475.077011656861,-543.643464199475,-504.414571229318,-597.164251661914,-683.816126157677,-678.417106755005,-662.876592071001,-329.167301168069,-428.046350998338,-341.185037788053,-738.272841318685,-610.219785092298,-871.186223325794,-600.66235680994,-568.790438968656,-472.123417292734,-840.049667072421,-505.641305425989,-459.96790115539,-647.499799000764,-782.269139013776,-756.93099983877,-807.992450001914,-746.84325747454,-896.296879416301,-833.967151921563,-212.961496900867,-274.741213553737,-554.959767562692,-851.095741159436,-522.351679972774,-252.857234696309,-584.523382022244,-383.815474522104,-721.692895621872,-416.625773012749,-538.464613005086,-367.085802841535,-235.918202496796,-311.668797580195,-295.515502034584,-364.927982940831,-425.114653035868,-268.320965089778,-475.077011656861,-543.643464199475,-504.414571229318,-597.164251661914,-683.816126157676,-678.417106755005,-662.876592071001,-329.167301168069,-428.046350998338,-341.185037788053,-738.272841318684,-610.219785092298,-871.186223325794,-600.66235680994,-568.790438968656,-472.123417292734,-840.049667072421,-505.641305425989,-459.96790115539,-647.499799000764,-782.269139013776,-756.93099983877,-807.992450001914,-746.84325747454,-896.296879416301,-833.967151921563,-212.961496900867,-274.741213553737,-554.959767562692,-851.095741159436,-522.351679972774,-252.857234696309,-584.523382022244,-383.815474522104,-721.692895621872,-416.625773012749,-538.464613005086,-367.085802841535,-235.918202496796,-311.668797580195,-295.515502034584,-364.927982940831,-425.114653035868,-268.320965089778,-475.077011656861,-543.643464199475,-504.414571229318,-597.164251661914,-683.816126157677,-678.417106755005,-662.876592071001,-329.167301168069,-428.046350998338,-341.185037788053,-738.272841318685,-610.219785092298,-871.186223325794,-600.66235680994,-568.790438968656,-472.123417292734,-840.049667072421,-505.641305425989,-459.96790115539,-647.499799000764,-782.269139013776,-756.93099983877,-807.992450001914,-746.84325747454],"Archive337_field6":[103.60683666099,96.4018736136158,24.6171414083881,31.7585263213698,64.1502021391988,98.3818413990188,60.3808921233524,29.2288624621688,67.567588325363,44.3668923656958,83.423606255091,48.1595768149961,62.2434558108387,42.4330371877892,27.2708063954857,36.0271456308622,34.1599162657208,42.1836054435421,49.140843208072,31.0163820060158,54.9162085448498,62.8421016413788,58.3074640679473,69.0288011735691,79.045266491509,78.4211704645916,76.6247750921768,38.049873417465,49.4797308678558,39.4390556221741,85.3401539583212,70.5379468045622,100.704187211051,69.4331622920978,65.7489493246211,54.5747897852015,97.1049778731479,58.4492675846836,53.169681049587,74.8473050099029,90.425876483599,87.4969312790727,93.399345365543,86.3308454659774,103.60683666099,96.4018736136158,24.6171414083881,31.7585263213698,64.1502021391989,98.3818413990188,60.3808921233524,29.2288624621688,67.567588325363,44.3668923656958,83.423606255091,48.1595768149961,62.2434558108387,42.4330371877892,27.2708063954857,36.0271456308622,34.1599162657208,42.1836054435421,49.140843208072,31.0163820060158,54.9162085448498,62.8421016413788,58.3074640679473,69.0288011735691,79.045266491509,78.4211704645916,76.6247750921768,38.049873417465,49.4797308678558,39.439055622174,85.3401539583212,70.5379468045622,100.704187211051,69.4331622920978,65.7489493246211,54.5747897852015,97.1049778731479,58.4492675846836,53.169681049587,74.8473050099029,90.425876483599,87.4969312790727,93.399345365543,86.3308454659774,103.60683666099,96.4018736136158,24.6171414083881,31.7585263213698,64.1502021391988,98.3818413990188,60.3808921233524,29.2288624621688,67.567588325363,44.3668923656958,83.423606255091,48.1595768149961,62.2434558108387,42.4330371877892,27.2708063954857,36.0271456308622,34.1599162657208,42.1836054435421,49.140843208072,31.0163820060158,54.9162085448498,62.8421016413788,58.3074640679473,69.0288011735691,79.045266491509,78.4211704645916,76.6247750921768,38.049873417465,49.4797308678558,39.4390556221741,85.3401539583212,70.5379468045622,100.704187211051,69.4331622920978,65.7489493246211,54.5747897852015,97.1049778731479,58.4492675846836,53.169681049587,74.8473050099029,90.425876483599,87.4969312790727,93.399345365543,86.3308454659774],"Archive337_field7":[999.903716077292,930.369025535179,237.578638309255,306.499739875107,619.109969701891,949.477582558455,582.732572096127,282.086097158478,652.090970347607,428.1823668878,805.116501876963,464.785349827745,600.708068815925,409.518840029324,263.189008892281,347.695943211057,329.675418300305,407.111588384373,474.25549624394,299.337347095794,529.993220201711,606.485565840854,562.722035297265,666.193052835483,762.861392649186,756.838277219596,739.501367163178,367.217174585534,477.526081866194,380.624093410227,823.612995277006,680.75773189686,971.890410536845,670.095519102038,634.539388293277,526.698207077935,937.154644945569,564.090573010673,513.137582204977,722.347104010666,872.695015497375,844.427931117843,901.391795367457,833.174102940518,999.903716077292,930.369025535179,237.578638309255,306.499739875107,619.10996970189,949.477582558455,582.732572096127,282.086097158478,652.090970347607,428.1823668878,805.116501876963,464.785349827745,600.708068815925,409.518840029324,263.189008892281,347.695943211057,329.675418300305,407.111588384373,474.25549624394,299.337347095794,529.993220201711,606.485565840854,562.722035297265,666.193052835483,762.861392649185,756.838277219596,739.501367163178,367.217174585534,477.526081866194,380.624093410227,823.612995277006,680.75773189686,971.890410536845,670.095519102038,634.539388293277,526.698207077935,937.154644945569,564.090573010673,513.137582204977,722.347104010666,872.695015497376,844.427931117843,901.391795367457,833.174102940518,999.903716077292,930.369025535179,237.578638309255,306.499739875107,619.109969701891,949.477582558455,582.732572096127,282.086097158478,652.090970347607,428.1823668878,805.116501876963,464.785349827745,600.708068815925,409.518840029324,263.189008892281,347.695943211057,329.675418300305,407.111588384373,474.25549624394,299.337347095794,529.993220201711,606.485565840854,562.722035297265,666.193052835483,762.861392649186,756.838277219596,739.501367163178,367.217174585534,477.526081866194,380.624093410227,823.612995277006,680.75773189686,971.890410536845,670.095519102038,634.539388293277,526.698207077935,937.154644945569,564.090573010673,513.137582204977,722.347104010666,872.695015497375,844.427931117843,901.391795367457,833.174102940518],"Archive337_field8":[3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6],"Archive337_field9":[0,0,0,0,378.130812978749,0,0,277.986257879565,0,90.3822557928187,680.116186893175,371.473589544353,30.7417519052015,0,917.134003223635,446.080135019296,272.158965576107,289.060909404331,253.622065442129,-564.960539450389,430.225580397367,522.466147330451,230.660060901654,129.464473729533,345.168267217551,0,-296.846705082003,136.434729155409,0,199.835086823761,0,541.801999515839,0,0,-85.0093355744949,-86.4588153517908,0,0,256.270920087341,561.95305740272,362.5955624058,-411.547102229831,519.78643963062,-156.172021888824,0,0,0,0,378.131035252732,0,0,277.986247958062,0,90.3810648570948,680.1184153692,371.474443508185,30.7407129116043,0,917.133646116735,446.080282562528,272.155710993674,289.061171006523,253.621954438174,-564.960060131779,430.226013072951,522.46876156656,230.659522712997,129.464083013793,345.168525810682,0,-296.848590448098,136.434952728212,0,199.838064939667,0,541.802608882522,0,0,-85.0122867773061,-86.4625750824331,0,0,256.274610830103,561.957006341988,362.597159614287,-411.548824373154,519.789855584974,-156.172098581152,0,0,0,0,378.131085585859,0,0,277.986245711419,0,90.3807951518959,680.118920039398,371.474636912418,30.7404775953567,0,917.133565241816,446.080315976595,272.154973951374,289.061230250544,253.621929297593,-564.959951579657,430.226111057848,522.469353592458,230.659400837624,129.463994530844,345.168584374391,0,-296.849017401085,136.435003357508,0,199.838739372233,0,541.802746897175,0,0,-85.0129550968623,-86.4634265063581,0,0,256.275446631399,561.957900607728,362.597521332023,-411.549214386481,519.790629170829,-156.172115958515],"Archive337_field10":[0,0,0,0,5885.43070356871,0,0,7857.7062413009,0,6146.30752157944,3052.63266011406,5792.12125603178,4557.68497379485,0,7224.9834805976,7405.61655327568,3497.30859523692,7346.91853856087,6888.2193170313,7194.08678567593,6399.16997663608,4458.71193711736,6000.26021853658,5053.32072556269,4335.83338706923,0,2771.05434188701,7104.06835106015,0,4488.60871073606,0,4995.93629461277,0,0,2296.59271778372,2929.56083639306,0,0,3303.56146778123,2488.34896148913,2223.0268841845,1025.6469977614,945.45111606954,2707.32861702419,0,0,0,0,5885.43383191178,0,0,7857.70799463905,0,6146.30895918984,3052.63999026678,5792.12341309689,4557.68810996138,0,7224.98612300707,7405.61675431942,3497.30782310261,7346.92000464216,6888.22123541617,7194.09299661572,6399.17184417259,4458.71488596315,6000.26273379513,5053.32439792445,4335.83784473134,0,2771.05765035342,7104.06831239613,0,4488.60883435043,0,4995.93981412017,0,0,2296.59541206742,2929.56158352025,0,0,3303.56388514416,2488.35348016375,2223.04146654856,1025.65359995547,945.459657123801,2707.3389220646,0,0,0,0,5885.43452574034,0,0,7857.70904343389,0,6146.30920254589,3052.6416465818,5792.12405719385,4557.68883754406,0,7224.98770985151,7405.61640248889,3497.30739723141,7346.92034678744,6888.22177693712,7194.0968164031,6399.17222228396,4458.71552698985,6000.26329989012,5053.32523002875,4335.83885417568,0,2771.05839784676,7104.06758460611,0,4488.6084944138,0,4995.94062866606,0,0,2296.59601468361,2929.5617724015,0,0,3303.56449022392,2488.35450568891,2223.04476965056,1025.65509542429,945.461592144993,2707.34125588774],"Archive337_field11":[0,0,0,0,5897.56651528233,0,0,7862.62300651997,0,6146.97322648984,3127.47945157512,5804.02236040475,4557.78953166236,0,7282.96215506977,7419.04061945096,3507.88292746959,7352.60430826388,6892.88828335131,7216.23709593574,6413.61721603482,4489.21937661535,6004.69320196572,5054.97982456057,4349.5515896635,0,2786.90920879924,7105.37963339894,0,4493.05573958311,0,5025.23019480737,0,0,2298.16594791069,2930.83691964528,0,0,3313.48718746299,2551.01435137975,2252.40444541401,1105.13490324608,1078.91434248968,2711.82971249102,0,0,0,0,5897.56881985496,0,0,7862.6245386761,0,6146.97416145492,3127.48746326556,5804.02409236414,4557.79195167409,0,7282.96459806316,7419.04042696057,3507.88201181084,7352.60526670654,6892.88973709961,7216.24303022427,6413.61859055573,4489.22184533671,6004.69503534421,5054.98274576909,4349.55534097498,0,2786.91220238166,7105.37895345724,0,4493.05577686281,0,5025.23300065848,0,0,2298.1683571116,2930.8374662128,0,0,3313.48928271848,2551.0196019243,2252.43060510442,1105.14804580602,1078.93490462063,2711.84373285614,0,0,0,0,5897.56921829555,0,0,7862.62539225561,0,6146.97404077944,3127.49547856712,5804.02438760783,4557.79251638112,0,7282.96603694007,7419.03974808312,3507.88164453676,7352.60520388558,6892.8899086363,7216.24664123706,6413.61860231488,4489.22258973336,6004.69521720502,5054.98336665823,4349.55643688821,0,2786.9137440346,7105.37780593637,0,4493.05528094433,0,5025.23363155931,0,0,2298.17015322183,2930.83749660784,0,0,3313.49011382626,2551.02447055308,2252.47849108558,1105.17357851437,1078.97790453045,2711.86454813452],"Archive337_field12":[8994903.85197662,8369385.7688386,2137202.78714325,2757201.16497629,5569370.89214518,8541281.95285187,5242128.19008518,2537581.65023532,5866060.38832389,3851830.09057826,7242642.87408973,4181102.10641993,5403831.62421223,3683937.29557059,2367587.79052292,3127792.73505973,2965684.23768333,3662282.2134405,4266293.36544634,2692769.92688393,4767697.11049394,5455804.65862418,5062118.00346608,5992919.47890585,6862525.63015176,6808343.06906373,6652384.2136855,3303401.24262131,4295714.80146945,3424006.80077692,7409033.07452303,6123939.98186581,8742902.59839504,6028025.16787254,5708170.39302702,4738055.93028548,8430427.640362,5074429.05397222,4616067.66787206,6498068.40784603,7850563.63956083,7596279.44991196,8108713.27101271,7495042.60000922,4497451.92598831,4184692.8844193,1068601.39357162,1378600.58248815,2784685.44607259,4270640.97642594,2621064.09504259,1268790.82511766,2933030.19416195,1925915.04528913,3621321.43704487,2090551.05320997,2701915.81210612,1841968.6477853,1183793.89526146,1563896.36752987,1482842.11884167,1831141.10672025,2133146.68272317,1346384.96344196,2383848.55524697,2727902.32931209,2531059.00173304,2996459.73945293,3431262.81507588,3404171.53453186,3326192.10684275,1651700.62131066,2147857.40073472,1712003.40038846,3704516.53726152,3061969.99093291,4371451.29919752,3014012.58393627,2854085.19651351,2369027.96514274,4215213.820181,2537214.52698611,2308033.83393603,3249034.20392302,3925281.81978041,3798139.72495598,4054356.63550636,3747521.30000461,3.83512741564118e-10,-3.83512741564118e-10,3.19593951303432e-11,-6.39187902606864e-11,-3.83512741564118e-10,-2.55675161042745e-10,-3.19593951303432e-10,-3.19593951303432e-11,1.27837580521373e-10,-1.91756370782059e-10,-1.27837580521373e-10,6.39187902606864e-11,-5.11350322085491e-10,6.39187902606864e-11,6.39187902606864e-11,6.39187902606864e-11,-6.39187902606864e-11,-1.27837580521373e-10,6.39187902606864e-11,-3.19593951303432e-11,1.91756370782059e-10,3.19593951303432e-10,-1.91756370782059e-10,0,-1.27837580521373e-10,3.83512741564118e-10,-1.27837580521373e-10,1.27837580521373e-10,0,-1.27837580521373e-10,-1.27837580521373e-10,-1.27837580521373e-10,-3.83512741564118e-10,1.27837580521373e-10,3.83512741564118e-10,-1.91756370782059e-10,-1.27837580521373e-10,-2.55675161042745e-10,0,-2.55675161042745e-10,-1.27837580521373e-10,0,0,1.27837580521373e-10],"Archive337_field13":[-894.056259618305,-832.137721333067,-217.348515958016,-278.466447348893,-556.420720445277,-835.827586844467,-522.646366842612,-264.028791957429,-584.189168049654,-386.648462683318,-717.464593457564,-420.465433974298,-539.128201422368,-368.848674746662,-246.488288451511,-313.88735344719,-296.881023065238,-368.65250148989,-428.753609969489,-278.771367941749,-478.013059041917,-544.070351331904,-506.246442239702,-598.38457166515,-681.823626563661,-677.882279791015,-661.251549423329,-329.871771838601,-427.990215616274,-342.986409009579,-734.957555231328,-610.62558166817,-859.984239233863,-600.816999875456,-568.41889773879,-473.135984686654,-829.097664020435,-504.975525397312,-460.59775207755,-645.393436759833,-773.539393286066,-753.051543773242,-803.80018111642,-740.374944201089,-894.056259618305,-832.137721333067,-217.348515958016,-278.466447348893,-556.420720445277,-835.827586844467,-522.646366842612,-264.028791957429,-584.189168049654,-386.648462683317,-717.464593457564,-420.465433974298,-539.128201422368,-368.848674746662,-246.488288451511,-313.88735344719,-296.881023065238,-368.65250148989,-428.753609969489,-278.771367941749,-478.013059041917,-544.070351331904,-506.246442239702,-598.38457166515,-681.823626563661,-677.882279791015,-661.251549423329,-329.871771838601,-427.990215616274,-342.986409009579,-734.957555231328,-610.62558166817,-859.984239233863,-600.816999875456,-568.41889773879,-473.135984686654,-829.097664020435,-504.975525397312,-460.59775207755,-645.393436759833,-773.539393286066,-753.051543773242,-803.80018111642,-740.374944201089,-894.056259618305,-832.137721333067,-217.348515958016,-278.466447348893,-556.420720445277,-835.827586844467,-522.646366842612,-264.028791957429,-584.189168049654,-386.648462683318,-717.464593457564,-420.465433974298,-539.128201422368,-368.848674746662,-246.488288451511,-313.88735344719,-296.881023065238,-368.65250148989,-428.753609969489,-278.771367941749,-478.013059041917,-544.070351331904,-506.246442239702,-598.38457166515,-681.823626563661,-677.882279791015,-661.251549423329,-329.871771838601,-427.990215616274,-342.986409009579,-734.957555231328,-610.62558166817,-859.984239233863,-600.816999875456,-568.41889773879,-473.135984686654,-829.097664020435,-504.975525397312,-460.59775207755,-645.393436759833,-773.539393286066,-753.051543773242,-803.80018111642,-740.374944201089],"Archive337_field14":[103.347833718147,96.1904018116741,25.1242559340782,32.1891422235361,64.319080007851,96.6169293407999,60.414956254435,30.5202311313932,67.5289550853471,44.6943697322046,82.934838502183,48.6034198487193,62.3201628688888,42.6368151833656,28.492648392432,36.2835981083992,34.3177627534517,42.6141386673156,49.5614859942921,32.2243893149677,55.2555989732205,62.8914473731536,58.5192179688205,69.1698632459171,78.8149448372389,78.3593475003791,76.4369293771787,38.1313062321611,49.4732419360142,39.6472839204094,84.9569256865003,70.5848545875966,99.4093013727258,69.4510381535423,65.7060012653345,54.691836834008,95.8389884254811,58.3723071887842,53.242488244515,74.6038214793264,89.4167673809412,87.0484881569942,92.9147428553332,85.5831451312055,103.347833718147,96.1904018116741,25.1242559340782,32.1891422235361,64.319080007851,96.6169293408,60.414956254435,30.5202311313932,67.5289550853471,44.6943697322046,82.934838502183,48.6034198487193,62.3201628688889,42.6368151833656,28.492648392432,36.2835981083992,34.3177627534517,42.6141386673156,49.5614859942921,32.2243893149677,55.2555989732205,62.8914473731536,58.5192179688205,69.1698632459171,78.8149448372389,78.3593475003791,76.4369293771787,38.1313062321611,49.4732419360142,39.6472839204094,84.9569256865003,70.5848545875966,99.4093013727258,69.4510381535423,65.7060012653345,54.691836834008,95.8389884254811,58.3723071887842,53.242488244515,74.6038214793264,89.4167673809412,87.0484881569942,92.9147428553332,85.5831451312055,103.347833718147,96.1904018116741,25.1242559340782,32.1891422235361,64.319080007851,96.6169293407999,60.414956254435,30.5202311313932,67.5289550853471,44.6943697322046,82.934838502183,48.6034198487193,62.3201628688888,42.6368151833656,28.492648392432,36.2835981083992,34.3177627534517,42.6141386673156,49.5614859942921,32.2243893149677,55.2555989732205,62.8914473731536,58.5192179688205,69.1698632459171,78.8149448372389,78.3593475003791,76.4369293771787,38.1313062321611,49.4732419360142,39.6472839204094,84.9569256865003,70.5848545875966,99.4093013727258,69.4510381535423,65.7060012653345,54.691836834008,95.8389884254811,58.3723071887842,53.242488244515,74.6038214793264,89.4167673809412,87.0484881569942,92.9147428553332,85.5831451312055],"Archive337_field15":[997.404093336451,928.328123144741,242.472771892094,310.655589572429,620.739800453128,932.444516185267,583.061323097047,294.549023088823,651.718123135001,431.342832415522,800.399431959748,469.068853823017,601.448364291257,411.485489930028,274.980936843943,350.170951555589,331.198785818689,411.266640157206,478.315095963781,310.995757256717,533.268658015138,606.961798705058,564.765660208522,667.554434911068,760.6385714009,756.241627291395,737.688478800507,368.003078070762,477.463457552288,382.633692929989,819.914480917828,681.210436255767,959.393540606589,670.268038028998,634.124899004124,527.827821520662,924.936652445916,563.347832586096,513.840240322065,719.997258239159,862.956160667007,840.100031930236,896.714923971754,825.958089332295,997.404093336451,928.328123144741,242.472771892094,310.655589572429,620.739800453128,932.444516185267,583.061323097047,294.549023088823,651.718123135001,431.342832415522,800.399431959748,469.068853823017,601.448364291257,411.485489930028,274.980936843943,350.170951555589,331.198785818689,411.266640157206,478.315095963782,310.995757256717,533.268658015138,606.961798705058,564.765660208522,667.554434911068,760.6385714009,756.241627291395,737.688478800507,368.003078070762,477.463457552288,382.633692929989,819.914480917829,681.210436255767,959.393540606589,670.268038028998,634.124899004124,527.827821520662,924.936652445916,563.347832586096,513.840240322065,719.997258239159,862.956160667007,840.100031930236,896.714923971754,825.958089332294,997.404093336451,928.328123144741,242.472771892094,310.655589572429,620.739800453128,932.444516185267,583.061323097047,294.549023088823,651.718123135001,431.342832415522,800.399431959748,469.068853823017,601.448364291257,411.485489930028,274.980936843943,350.170951555589,331.198785818689,411.266640157206,478.315095963781,310.995757256717,533.268658015138,606.961798705058,564.765660208522,667.554434911068,760.6385714009,756.241627291395,737.688478800507,368.003078070762,477.463457552288,382.633692929989,819.914480917828,681.210436255767,959.393540606589,670.268038028998,634.124899004124,527.827821520662,924.936652445916,563.347832586096,513.840240322065,719.997258239159,862.956160667007,840.100031930236,896.714923971754,825.958089332295],"Archive337_field16":[1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2],"Archive337_field17":[0,0,0,0,368.847533758643,0,0,274.275754862626,0,81.7982318585607,676.518827683337,366.871844092042,23.754479190878,0,907.360054335761,438.951592632075,262.731041532415,282.97261021997,246.075812789426,-562.432429187576,422.874880284387,514.899170418913,221.514407165121,119.897230703501,336.929627783408,0,-304.717316922368,132.66637109931,0,203.191212394988,0,533.291397009643,0,0,-90.3736020636493,-91.4162219321968,0,0,251.824589240491,556.524281481749,356.592100578858,-411.943774829328,516.239936009093,-164.653014520787,0,0,0,0,368.847754257171,0,0,274.275760724078,0,81.7970330195573,676.520940527055,366.872707679502,23.7534942401998,0,907.35971005034,438.951746688101,262.727912216456,282.972868587737,246.075711531522,-562.431992004791,422.875306165486,514.901687898319,221.513894172252,119.896881123816,336.92985828589,0,-304.719106276196,132.666574983512,0,203.194098967728,0,533.291959941964,0,0,-90.376469451805,-91.419866860096,0,0,251.828157420433,556.528050782603,356.59364906768,-411.945543644182,516.243433061846,-164.65311768793,0,0,0,0,368.847804188566,0,0,274.275762051807,0,81.7967615248416,676.521419012445,366.87290326334,23.753271163311,0,907.359632078923,438.951781577143,262.727203542309,282.972927099485,246.075688597801,-562.431892994918,422.875402611563,514.902258012364,221.513778002491,119.896801956488,336.929910488176,0,-304.719511487682,132.666621153584,0,203.19475266895,0,533.292087440273,0,0,-90.3771187904877,-91.4206922859241,0,0,251.828965466293,556.528904368097,356.593999749474,-411.945944224894,516.244225010208,-164.653141059797],"Archive337_field18":[0,0,0,0,5781.58597986002,0,0,7791.21816669593,0,6060.68746693926,2974.56848451456,5715.54127463845,4472.82700151999,0,7164.81000183499,7327.59561661113,3451.05547270084,7266.25546590563,6798.90982213393,7140.55403380927,6305.66682232298,4379.56368114895,5903.00267064079,4949.99718222602,4226.94500907859,0,2702.5902086809,7031.28401178236,0,4432.4349686195,0,4896.23748829343,0,0,2247.3674957329,2877.53174850913,0,0,3254.63979774666,2431.29097974828,2147.49742399396,999.64377218587,923.077752899405,2619.06997651612,0,0,0,0,5781.58908608849,0,0,7791.22006820826,0,6060.68886766271,2974.57538379735,5715.54353619165,4472.83007757196,0,7164.81285401079,7327.59571207514,3451.05461283288,7266.25696681249,6798.91182372127,7140.56063941295,6305.66868417555,4379.56654133932,5903.00518027097,4950.00080829282,4226.94926896817,0,2702.59346217875,7031.2837772971,0,4432.43496122432,0,4896.24092624791,0,0,2247.37015436156,2877.53249928619,0,0,3254.64211721438,2431.29535993367,2147.51044340388,999.65003081847,923.085929305541,2619.07925942052,0,0,0,0,5781.58977304652,0,0,7791.2212425375,0,6060.68909455502,2974.57694219403,5715.5442200878,4472.83079325188,0,7164.81460597188,7327.59529104111,3451.05414047549,7266.25731383223,6798.91239679512,7140.56479620622,6305.66905697582,4379.56715964799,5903.00574437159,4950.00163005089,4226.95023368878,0,2702.59419704023,7031.28293264752,0,4432.43455944401,0,4896.24172395997,0,0,2247.37074818656,2877.532690872,0,0,3254.64270455257,2431.29635432212,2147.51339261737,999.651448524734,923.087781829693,2619.08136174939],"Archive337_field19":[0,0,0,0,5793.34077530796,0,0,7796.0451214357,0,6061.24060072988,3050.5308554753,5727.30490424107,4472.89092648351,0,7222.03696293207,7340.73249500422,3461.04260367742,7271.76481670086,6803.36293639595,7162.67062667152,6319.83159370595,4409.72858357932,5907.15853459742,4951.44990861701,4240.35274687931,0,2719.71487709839,7032.53664740305,0,4437.09066436402,0,4925.19543808837,0,0,2249.18428564481,2878.98400393779,0,0,3264.3682018227,2494.17267098066,2176.90249628784,1081.19641633365,1057.62781931071,2624.24086584201,0,0,0,0,5793.34307999178,0,0,7796.0468237068,0,6061.24149680907,3050.53850660902,5727.30672198253,4472.89330607684,0,7222.03961416759,7340.73220954851,3461.04160415436,7271.76579760325,6803.36445775892,7162.67698371997,6319.83296617296,4409.730988754,5907.16037290448,4951.45280966177,4240.35636487393,0,2719.71786001382,7032.53579493063,0,4437.09056950483,0,4925.19818625217,0,0,2249.18669243022,2878.98455865203,0,0,3264.37021290645,2494.17782352266,2176.92679541764,1081.20907139036,1057.64761471855,2624.25392644167,0,0,0,0,5793.34350860111,0,0,7796.04782906983,0,6061.24136383969,3050.5463375985,5727.30704486024,4472.89388147324,0,7222.04121810609,7340.73147817584,3461.04118140426,7271.76573397719,6803.36465181686,7162.68096506548,6319.83298762759,4409.73175735893,5907.16057529268,4951.45347594003,4240.35753109284,0,2719.71948318257,7032.53456198858,0,4437.09001334345,0,4925.19884201844,0,0,2249.18853424306,2878.98460391143,0,0,3264.37105504031,2494.18273211712,2176.97222601858,1081.23379008649,1057.68898754588,2624.2738861666],"Archive337_field20":[8972417.82071325,8351026.28034177,2181229.28720374,2794586.23300797,5584032.47472224,8388056.40536394,5245085.55847672,2649695.26543174,5862706.34055415,3880260.91155858,7200209.19804054,4219635.52315548,5410491.15204036,3701628.82574785,2473665.26223263,3150057.34087522,2979388.10150419,3699660.10352699,4302812.59081811,2797646.30325725,4797162.19571283,5460088.739937,5080501.98313402,6005166.15893993,6842529.64145107,6802975.74353911,6636075.88693924,3310471.04961662,4295151.44754515,3442084.6958488,7375762.09000617,6128012.40615654,8630483.63078254,6029577.10846012,5704441.74271433,4748217.68200092,8320517.3899734,5067747.53194303,4622388.61868202,6476929.73575008,7762955.14144344,7557346.66423706,8066641.21161738,7430129.00127277,4486208.91035662,4175513.14017088,1090614.64360187,1397293.11650399,2792016.23736112,4194028.20268197,2622542.77923836,1324847.63271587,2931353.17027707,1940130.45577929,3600104.59902027,2109817.76157774,2705245.57602018,1850814.41287392,1236832.63111632,1575028.67043761,1489694.05075209,1849830.05176349,2151406.29540905,1398823.15162863,2398581.09785642,2730044.3699685,2540250.99156701,3002583.07946997,3421264.82072554,3401487.87176955,3318037.94346962,1655235.52480831,2147575.72377257,1721042.3479244,3687881.04500309,3064006.20307827,4315241.81539127,3014788.55423006,2852220.87135717,2374108.84100046,4160258.6949867,2533873.76597151,2311194.30934101,3238464.86787504,3881477.57072172,3778673.33211853,4033320.60580869,3715064.50063639,1.27837580521373e-10,2.55675161042745e-10,1.27837580521373e-10,1.91756370782059e-10,-3.83512741564118e-10,-2.55675161042745e-10,1.27837580521373e-10,1.91756370782059e-10,2.55675161042745e-10,1.91756370782059e-10,-3.83512741564118e-10,-1.27837580521373e-10,1.91756370782059e-10,-1.27837580521373e-10,0,-1.27837580521373e-10,-1.27837580521373e-10,-1.91756370782059e-10,-6.39187902606864e-11,-1.27837580521373e-10,6.39187902606864e-11,-1.91756370782059e-10,-1.91756370782059e-10,-2.55675161042745e-10,-3.83512741564118e-10,-3.83512741564118e-10,0,2.55675161042745e-10,6.39187902606864e-11,0,0,-2.55675161042745e-10,-5.11350322085491e-10,1.27837580521373e-10,-2.55675161042745e-10,6.39187902606864e-11,3.83512741564118e-10,-1.91756370782059e-10,-2.55675161042745e-10,-1.27837580521373e-10,3.83512741564118e-10,0,2.55675161042745e-10,2.55675161042746e-10],"Archive337_field21":[-887.531729525126,-826.022596776673,-217.1894285442,-277.867664020694,-553.475624627296,-817.276218489723,-518.643226263747,-269.370830116182,-579.519312087887,-385.074674198908,-709.060795945771,-419.581894837989,-535.440502498874,-366.197421374542,-251.632416564526,-312.373240626022,-294.281093263614,-368.081155397242,-427.762006416161,-283.087761263478,-476.525579103325,-540.166919445053,-503.746856767748,-595.018934127379,-675.363242579179,-673.037546411121,-655.296226248885,-327.253262853137,-423.542124125697,-340.68670977453,-727.471599146361,-606.552461699298,-845.090680359689,-596.661513851352,-563.724698008508,-469.80385570816,-814.473867619834,-500.092612071654,-456.905784293755,-638.998258280571,-760.932435204881,-745.013314883317,-795.450039724145,-729.846487756223,-887.531729525126,-826.022596776673,-217.1894285442,-277.867664020694,-553.475624627296,-817.276218489723,-518.643226263747,-269.370830116182,-579.519312087887,-385.074674198908,-709.060795945771,-419.581894837989,-535.440502498874,-366.197421374542,-251.632416564526,-312.373240626022,-294.281093263614,-368.081155397242,-427.762006416161,-283.087761263478,-476.525579103325,-540.166919445053,-503.746856767748,-595.018934127379,-675.363242579179,-673.037546411121,-655.296226248885,-327.253262853137,-423.542124125697,-340.68670977453,-727.471599146361,-606.552461699298,-845.090680359688,-596.661513851352,-563.724698008508,-469.803855708159,-814.473867619834,-500.092612071654,-456.905784293755,-638.998258280571,-760.932435204881,-745.013314883317,-795.450039724145,-729.846487756223,-887.531729525126,-826.022596776673,-217.1894285442,-277.867664020694,-553.475624627296,-817.276218489723,-518.643226263747,-269.370830116182,-579.519312087887,-385.074674198908,-709.060795945771,-419.581894837989,-535.440502498874,-366.197421374542,-251.632416564526,-312.373240626022,-294.281093263614,-368.081155397242,-427.762006416161,-283.087761263478,-476.525579103325,-540.166919445053,-503.746856767748,-595.018934127379,-675.363242579179,-673.037546411121,-655.296226248885,-327.253262853137,-423.542124125697,-340.68670977453,-727.471599146361,-606.552461699298,-845.090680359689,-596.661513851352,-563.724698008508,-469.80385570816,-814.473867619834,-500.092612071654,-456.905784293755,-638.998258280571,-760.932435204881,-745.013314883317,-795.450039724145,-729.846487756223],"Archive337_field22":[102.593635037801,95.483528089779,25.1058663311725,32.1199262662961,63.9786436319448,94.4724963575907,59.9522159039882,31.137740449635,66.9891462173566,44.5124487078346,81.9634071649419,48.5012877348166,61.8938857850389,42.3303453279187,29.0872804316682,36.1085752522992,34.0172256117154,42.5480942989179,49.4468622465792,32.7233399061381,55.08365472732,62.440232782089,58.230280062575,68.7808146319544,78.0681610833075,77.7993237945244,75.748527788857,37.8286214421292,48.9590677833412,39.3814517296622,84.0915916134288,70.1140250164947,97.6876904232574,68.970687533526,65.163378395749,54.3066616194819,94.1485604882251,57.8078700977048,52.8157177046217,73.8645751120398,87.9594745165948,86.1193144794238,91.9495138612425,84.3661152695307,102.593635037801,95.483528089779,25.1058663311725,32.1199262662961,63.9786436319448,94.4724963575907,59.9522159039882,31.137740449635,66.9891462173566,44.5124487078346,81.9634071649419,48.5012877348166,61.8938857850389,42.3303453279187,29.0872804316682,36.1085752522992,34.0172256117154,42.5480942989179,49.4468622465792,32.7233399061381,55.08365472732,62.4402327820891,58.230280062575,68.7808146319544,78.0681610833075,77.7993237945244,75.748527788857,37.8286214421292,48.9590677833412,39.3814517296622,84.0915916134288,70.1140250164947,97.6876904232574,68.970687533526,65.163378395749,54.3066616194819,94.1485604882251,57.8078700977048,52.8157177046217,73.8645751120398,87.9594745165947,86.1193144794238,91.9495138612425,84.3661152695307,102.593635037801,95.483528089779,25.1058663311725,32.1199262662961,63.9786436319448,94.4724963575907,59.9522159039882,31.137740449635,66.9891462173566,44.5124487078346,81.9634071649419,48.5012877348166,61.8938857850389,42.3303453279187,29.0872804316682,36.1085752522992,34.0172256117154,42.5480942989179,49.4468622465792,32.7233399061381,55.08365472732,62.440232782089,58.230280062575,68.7808146319544,78.0681610833075,77.7993237945244,75.748527788857,37.8286214421292,48.9590677833412,39.3814517296622,84.0915916134288,70.1140250164947,97.6876904232574,68.970687533526,65.163378395749,54.3066616194819,94.1485604882251,57.8078700977048,52.8157177046217,73.8645751120398,87.9594745165948,86.1193144794238,91.9495138612425,84.3661152695307],"Archive337_field23":[990.125364562927,921.506124866452,242.295294875373,309.98759028699,617.454268259241,911.748714847314,578.595442167735,300.508570565817,646.508458305243,429.587122906743,791.024203110713,468.083182572805,597.334388283913,408.52776670246,280.719696996194,348.481815878322,328.298318875329,410.62924969616,477.208868662741,315.811101169616,531.609233830645,602.607152227142,561.977136830323,663.799748759333,753.431403662486,750.836870205645,731.044754037742,365.081884295266,472.501191909038,380.068161504192,811.56319075979,676.666486715793,942.778370782946,665.632201384878,628.888076404257,524.110517327641,908.622428108059,557.900482169359,509.721501998377,712.862833392611,848.891909721476,831.132629362741,887.399553585388,814.212603025754,990.125364562927,921.506124866452,242.295294875373,309.98759028699,617.454268259241,911.748714847314,578.595442167735,300.508570565817,646.508458305243,429.587122906743,791.024203110712,468.083182572806,597.334388283913,408.52776670246,280.719696996194,348.481815878322,328.298318875329,410.62924969616,477.208868662741,315.811101169616,531.609233830645,602.607152227142,561.977136830323,663.799748759333,753.431403662486,750.836870205645,731.044754037742,365.081884295266,472.501191909038,380.068161504192,811.56319075979,676.666486715793,942.778370782946,665.632201384878,628.888076404257,524.110517327641,908.622428108059,557.900482169359,509.721501998377,712.862833392611,848.891909721476,831.132629362741,887.399553585387,814.212603025754,990.125364562927,921.506124866452,242.295294875373,309.98759028699,617.454268259241,911.748714847314,578.595442167735,300.508570565817,646.508458305243,429.587122906743,791.024203110713,468.083182572805,597.334388283913,408.52776670246,280.719696996194,348.481815878322,328.298318875329,410.62924969616,477.208868662741,315.811101169616,531.609233830645,602.607152227142,561.977136830323,663.799748759333,753.431403662486,750.836870205645,731.044754037742,365.081884295266,472.501191909038,380.068161504192,811.56319075979,676.666486715793,942.778370782946,665.632201384878,628.888076404257,524.110517327641,908.622428108059,557.900482169359,509.721501998377,712.862833392611,848.891909721476,831.132629362741,887.399553585388,814.212603025754],"Archive337_field24":[-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6],"Archive337_field25":[0,0,0,0,350.455935333941,0,0,266.854261977414,0,76.3495818385083,651.862842793717,350.859496000461,16.2472529960409,0,897.330293505636,430.01949760992,254.08871735218,271.783959948962,236.340100075409,-565.246231834432,406.049346935445,494.221047731015,207.638282243987,105.642876238017,319.837034112733,0,-304.477431582328,120.838578059714,0,195.155934483056,0,511.564281339566,0,0,-93.3752848079302,-92.8434986906084,0,0,240.691652423607,534.341912860261,336.72008021377,-398.108107355294,497.85841044866,-165.412542089013,0,0,0,0,350.456151937221,0,0,266.854280140757,0,76.3484133823889,651.86476656607,350.860340558838,16.2463565648258,0,897.329965058787,430.019648992205,254.085830823928,271.784215323991,236.340007337002,-565.245841654238,406.049762863743,494.2234001263,207.637801066937,105.642576962307,319.837235439834,0,-304.479064245868,120.838765590897,0,195.158625909426,0,511.564786333244,0,0,-93.3779585143676,-92.846891721679,0,0,240.694970752326,534.345380502065,336.721510358539,-398.109834114928,497.861830040238,-165.41265441024,0,0,0,0,350.456200986814,0,0,266.854284254554,0,76.3481487684772,651.86520223398,350.860531833148,16.2461535359871,0,897.329890674526,430.019683275751,254.085177132028,271.784273158006,236.339986332536,-565.245753289441,406.049857055821,494.223932854896,207.637692102053,105.642509186648,319.837281035311,0,-304.479433974824,120.838808057461,0,195.159235416989,0,511.564900709552,0,0,-93.37856399255,-92.8476601035952,0,0,240.695722217408,534.346165775169,336.721834236846,-398.110225169453,497.862604445065,-165.412679853539],"Archive337_field26":[0,0,0,0,5517.92642548578,0,0,7554.53259996612,0,5805.95675814054,2794.11004312333,5484.61324429894,4250.97777111648,0,6922.01287342898,7076.83256836992,3310.49165463702,7015.8291688596,6542.41096408581,6904.44135418408,6051.12821814955,4167.48348970743,5643.79469106158,4695.40927220596,3971.53108350048,0,2542.06436345528,6783.66911894035,0,4253.59423150847,0,4647.43468079046,0,0,2125.38042229654,2737.86285122628,0,0,3109.32894095908,2294.52268961383,1981.04995215132,939.917939417457,872.30827879501,2421.69886724632,0,0,0,0,5517.92947165504,0,0,7554.53460127165,0,5805.95809832399,2794.11631235473,5484.61552221533,4250.98069384408,0,6922.01579327929,7076.83259003097,3310.49075284638,7015.83067110363,6542.41300314004,6904.44802931823,6051.1300602342,4167.486200142,5643.79715397732,4695.41278339566,3971.53509248133,0,2542.06746018658,6783.66876299495,0,4253.594126628,0,4647.437976615,0,0,2125.38296236199,2737.86358886986,0,0,3109.33110238618,2294.5267930778,1981.06110958734,939.92363466628,872.315804846631,2421.70694125411,0,0,0,0,5517.93014395048,0,0,7554.5358629193,0,5805.95830923912,2794.11772798646,5484.61621761917,4250.98137528894,0,6922.01761684102,7076.83212801806,3310.49025987575,7015.83101288956,6542.41359183287,6904.45229357131,6051.1304273073,4167.48678331391,5643.79770678488,4695.41357927138,3971.53600045747,0,2542.06815949377,6783.66785904015,0,4253.59369372725,0,4647.43874264292,0,0,2125.38352916799,2737.86377793109,0,0,3109.33165456016,2294.52772494737,1981.0636371272,939.924924803438,872.31751011912,2421.70876977575],"Archive337_field27":[0,0,0,0,5529.04533051704,0,0,7559.24482372528,0,5806.45983498983,2869.14249342324,5495.82554292852,4251.00960621683,0,6979.93367527691,7089.88652811768,3320.22890823301,7021.09289643124,6546.67974747467,6927.54063119763,6064.73752153364,4196.68668535734,5647.61396537461,4696.59835252394,3984.38946544726,0,2560.234338022,6784.74635216566,0,4258.0695177134,0,4675.50582418424,0,0,2127.43097408647,2739.43708487841,0,0,3118.63149521706,2355.91967797766,2009.46269414282,1020.75271086444,1004.38294100383,2427.34178805745,0,0,0,0,5529.04761389397,0,0,7559.24664578839,0,5806.46068190319,2869.14953667192,5495.82737148448,4251.01187389576,0,6979.93639554098,7089.88618466563,3320.22787632755,7021.09387828374,6546.68129789512,6927.54708479013,6064.73888163668,4196.68897790424,5647.61577866416,4696.60118056656,3984.39291340204,0,2560.23721922328,6784.74541110827,0,4258.0693251832,0,4675.50847028219,0,0,2127.43330330781,2739.43763442894,0,0,3118.63336782102,2355.92456621889,2009.48431925612,1020.76432170447,1004.40111857634,2427.35351921564,0,0,0,0,5529.04808046338,0,0,7559.24776318123,0,5806.46054808661,2869.15688501828,5495.82770728089,4251.01244254625,0,6979.93807460093,7089.8854326259,3320.22742902874,7021.0938151366,6546.68150717233,6927.55120595811,6064.73891902165,4196.68975423623,5647.61600248287,4696.60190237055,3984.39419176912,0,2560.23889504762,6784.74415466227,0,4258.0687449912,0,4675.50915453366,0,0,2127.43512763891,2739.43769397115,0,0,3118.63418963291,2355.92935103088,2009.52549752231,1020.78702439665,1004.43894609615,2427.37188246671],"Archive337_field28":[8906940.05077424,8289657.15288988,2179632.74478103,2788577.06507599,5554476.58277843,8201881.73656202,5204911.52078925,2703305.98383886,5815841.39396856,3864466.95263079,7115871.79561726,4210768.65129297,5373482.77009278,3675021.82786899,2525289.82864745,3134862.26482373,2953296.16798912,3693926.28553922,4292861.22445022,2840964.0295686,4782234.3974167,5420915.34179036,5055417.06818411,5971389.86589674,6777695.61812488,6754355.79188984,6576310.4670301,3284192.66228683,4250512.04713957,3419005.76521457,7300635.80454119,6087136.08120333,8481017.3845381,5987874.18825204,5657332.49107512,4714777.66846048,8173758.38010164,5018744.42048465,4585337.39603194,6412750.09074825,7636436.37471516,7476677.97324246,7982842.28215682,7324469.30792099,4453470.02538712,4144828.57644494,1089816.37239052,1394288.532538,2777238.29138921,4100940.86828101,2602455.76039462,1351652.99191943,2907920.69698428,1932233.47631539,3557935.89780863,2105384.32564648,2686741.38504639,1837510.9139345,1262644.91432373,1567431.13241186,1476648.08399456,1846963.14276961,2146430.61222511,1420482.0147843,2391117.19870835,2710457.67089518,2527708.53409206,2985694.93294837,3388847.80906244,3377177.89594492,3288155.23351505,1642096.33114341,2125256.02356978,1709502.88260728,3650317.9022706,3043568.04060166,4240508.69226905,2993937.09412602,2828666.24553756,2357388.83423024,4086879.19005082,2509372.21024233,2292668.69801597,3206375.04537412,3818218.18735758,3738338.98662123,3991421.14107841,3662234.65396049,1.27837580521373e-10,2.55675161042745e-10,3.19593951303432e-11,-2.55675161042745e-10,-1.91756370782059e-10,-3.83512741564118e-10,0,3.19593951303432e-11,-1.27837580521373e-10,0,5.11350322085491e-10,-1.91756370782059e-10,-2.55675161042745e-10,0,-3.19593951303432e-11,1.27837580521373e-10,-6.39187902606864e-11,-1.91756370782059e-10,-6.39187902606864e-11,6.39187902606864e-11,-1.91756370782059e-10,-3.83512741564118e-10,2.55675161042745e-10,-2.55675161042745e-10,1.27837580521373e-10,-3.83512741564118e-10,-3.83512741564118e-10,-6.39187902606864e-11,1.27837580521373e-10,0,2.55675161042745e-10,-1.27837580521373e-10,3.83512741564118e-10,2.55675161042745e-10,1.27837580521373e-10,-6.39187902606864e-11,-2.55675161042745e-10,0,1.91756370782059e-10,2.55675161042745e-10,-3.83512741564118e-10,-1.27837580521373e-10,1.27837580521373e-10,0],"Archive337_field29":[-881.08438757727,-819.99398319463,-216.771234724182,-277.15917979163,-550.331858817789,-800.363892096008,-514.664851659731,-273.369026823319,-574.858493273245,-383.332078935513,-700.929831804311,-418.291252677433,-531.692615035261,-363.449629984189,-255.662380630339,-311.148559076703,-291.914140918774,-367.381584734409,-426.420460722226,-285.908480383262,-474.809730431109,-536.209461725691,-501.122918734484,-591.321396649239,-668.747786719826,-668.250253580352,-649.365134753757,-325.213139465809,-419.0875058525,-338.47293039117,-720.257433703583,-602.27733135509,-831.220624984247,-592.525618278535,-559.040083105078,-466.414853079908,-800.910404439214,-495.339938530253,-453.187200945206,-632.694101075782,-749.057960026645,-737.294371435177,-787.423615795472,-719.778801419147,-881.08438757727,-819.99398319463,-216.771234724182,-277.15917979163,-550.331858817789,-800.363892096008,-514.664851659731,-273.369026823319,-574.858493273245,-383.332078935513,-700.929831804311,-418.291252677433,-531.692615035261,-363.449629984189,-255.662380630339,-311.148559076703,-291.914140918774,-367.381584734409,-426.420460722226,-285.908480383262,-474.809730431109,-536.209461725691,-501.122918734484,-591.321396649239,-668.747786719826,-668.250253580352,-649.365134753757,-325.213139465809,-419.0875058525,-338.47293039117,-720.257433703583,-602.277331355089,-831.220624984247,-592.525618278535,-559.040083105078,-466.414853079908,-800.910404439214,-495.339938530253,-453.187200945206,-632.694101075782,-749.057960026645,-737.294371435177,-787.423615795472,-719.778801419147,-881.08438757727,-819.99398319463,-216.771234724182,-277.15917979163,-550.331858817789,-800.363892096008,-514.664851659731,-273.369026823319,-574.858493273245,-383.332078935513,-700.929831804311,-418.291252677433,-531.692615035261,-363.449629984189,-255.662380630339,-311.148559076703,-291.914140918774,-367.381584734409,-426.420460722226,-285.908480383262,-474.809730431109,-536.209461725691,-501.122918734484,-591.321396649239,-668.747786719826,-668.250253580352,-649.365134753757,-325.213139465809,-419.0875058525,-338.47293039117,-720.257433703583,-602.27733135509,-831.220624984247,-592.525618278535,-559.040083105078,-466.414853079908,-800.910404439214,-495.339938530253,-453.187200945206,-632.694101075782,-749.057960026645,-737.294371435177,-787.423615795472,-719.778801419147],"Archive337_field30":[101.848358869346,94.7866545459442,25.0575254970156,32.0380295069932,63.6152421316092,92.5175273306182,59.4923383597945,31.5999093165451,66.4503819923271,44.3110145770604,81.0235138181647,48.3520968198559,61.4606512472602,42.012716224999,29.5531214250991,35.967009009957,33.7436193428463,42.4672278973254,49.2917871718167,33.0493990410314,54.8853123508152,61.9827731111485,57.9269677054039,68.3534002669786,77.3034519000018,77.2459398904224,75.0629272452543,37.5927947474109,48.4441391716085,39.1255513865475,83.2576749973607,69.6198441915371,96.0843906742968,68.4926014585875,64.6218634777953,53.9149121335553,92.5807010584042,57.2584879871394,52.3858705563706,73.1358502879312,86.586852522164,85.2270483883629,91.0217047702508,83.2023478194434,101.848358869346,94.7866545459442,25.0575254970156,32.0380295069932,63.6152421316092,92.5175273306182,59.4923383597945,31.5999093165451,66.4503819923271,44.3110145770604,81.0235138181647,48.3520968198559,61.4606512472602,42.012716224999,29.5531214250991,35.967009009957,33.7436193428463,42.4672278973254,49.2917871718167,33.0493990410314,54.8853123508152,61.9827731111485,57.9269677054039,68.3534002669786,77.3034519000018,77.2459398904224,75.0629272452543,37.5927947474109,48.4441391716085,39.1255513865475,83.2576749973607,69.6198441915371,96.0843906742968,68.4926014585875,64.6218634777953,53.9149121335553,92.5807010584042,57.2584879871394,52.3858705563706,73.1358502879312,86.586852522164,85.2270483883629,91.0217047702508,83.2023478194434,101.848358869346,94.7866545459442,25.0575254970156,32.0380295069932,63.6152421316092,92.5175273306182,59.4923383597945,31.5999093165451,66.4503819923271,44.3110145770604,81.0235138181647,48.3520968198559,61.4606512472602,42.012716224999,29.5531214250991,35.967009009957,33.7436193428463,42.4672278973254,49.2917871718167,33.0493990410314,54.8853123508152,61.9827731111485,57.9269677054039,68.3534002669786,77.3034519000018,77.2459398904224,75.0629272452543,37.5927947474109,48.4441391716085,39.1255513865475,83.2576749973607,69.6198441915371,96.0843906742968,68.4926014585875,64.6218634777953,53.9149121335553,92.5807010584042,57.2584879871394,52.3858705563706,73.1358502879312,86.586852522164,85.2270483883629,91.0217047702508,83.2023478194434],"Archive337_field31":[982.932746446616,914.780637740574,241.828760221198,309.197209298623,613.947100949398,892.881419426626,574.157190019526,304.968936139864,641.308875265572,427.643093512574,781.953345622476,466.643349497288,593.153266282521,405.462346209188,285.215502055438,347.11556808666,325.65776026162,409.848812631734,475.712247894042,318.957879424293,529.695042781924,598.192234836839,559.049886439888,659.674796916218,746.051238619828,745.496193470775,724.428061999011,362.80593421322,467.531645024108,377.598481777718,803.515108700944,671.897175546627,927.305015658544,661.018219737122,623.661946582873,520.329765213463,893.491105497618,552.598426517392,505.573071501576,705.829951363713,835.644812548809,822.52141982354,878.445320565723,802.981149238591,982.932746446616,914.780637740574,241.828760221198,309.197209298623,613.947100949398,892.881419426626,574.157190019526,304.968936139864,641.308875265572,427.643093512574,781.953345622476,466.643349497289,593.153266282521,405.462346209188,285.215502055438,347.11556808666,325.65776026162,409.848812631734,475.712247894042,318.957879424293,529.695042781924,598.192234836839,559.049886439888,659.674796916218,746.051238619828,745.496193470775,724.428061999011,362.80593421322,467.531645024108,377.598481777718,803.515108700944,671.897175546627,927.305015658543,661.018219737122,623.661946582873,520.329765213463,893.491105497618,552.598426517392,505.573071501576,705.829951363713,835.644812548809,822.52141982354,878.445320565723,802.981149238591,982.932746446616,914.780637740574,241.828760221198,309.197209298623,613.947100949398,892.881419426626,574.157190019526,304.968936139864,641.308875265572,427.643093512574,781.953345622476,466.643349497288,593.153266282521,405.462346209188,285.215502055438,347.11556808666,325.65776026162,409.848812631734,475.712247894042,318.957879424293,529.695042781924,598.192234836839,559.049886439888,659.674796916218,746.051238619828,745.496193470775,724.428061999011,362.80593421322,467.531645024108,377.598481777718,803.515108700944,671.897175546627,927.305015658544,661.018219737122,623.661946582873,520.329765213463,893.491105497618,552.598426517392,505.573071501576,705.829951363713,835.644812548809,822.52141982354,878.445320565723,802.981149238591],"Archive337_field32":[-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive338.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive338.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive338.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive338_field1":[0,0,0,0,385.990591313331,0,0,282.091237885842,0,100.812802283929,680.058684338848,373.843329451242,37.2913341522603,0,934.228442915373,455.685956357882,282.739056710937,294.348035239589,261.760915020439,-574.298337387657,436.534670167035,528.482164628683,238.972331832558,137.479614372578,351.852564185546,0,-288.299265085187,137.460129446808,0,193.034813090108,0,548.695629615639,0,0,-79.383682192908,-80.87033821185,0,0,259.473468361195,564.492465579918,365.488402753382,-408.557500507937,520.951736451643,-146.15391248504],"Archive338_field2":[0,0,0,0,5965.34276065932,0,0,7916.94414451568,0,6208.22142682197,3109.76404218389,5849.21762099959,4618.54358869215,0,7268.97621225414,7471.15625159066,3531.6636518669,7414.77993432183,6960.53513478038,7235.5330165751,6473.69250200484,4515.54623024791,6074.37059116712,5129.87028135797,4414.54691631823,0,2821.14762921868,7163.16806559601,0,4530.66685591531,0,5069.88644814175,0,0,2331.67427348506,2966.15734905871,0,0,3337.04243932143,2529.97221952273,2276.6240399569,1044.65819816935,962.171930332716,2769.926621101],"Archive338_field3":[0,0,0,0,5977.81757740507,0,0,7921.96819318742,0,6209.03990207469,3183.25497128405,5861.15224275801,4618.69413625239,0,7328.76510456357,7485.04010854345,3542.96338170572,7420.6200711444,6965.45534327401,7258.28882135966,6488.39403310029,4546.36680832472,6079.06948917493,5131.71216534284,4428.54656781418,0,2835.84033614285,7164.48686391161,0,4534.77723800787,0,5099.49168947364,0,0,2333.02522203052,2967.25958267515,0,0,3347.11498497075,2592.18270483646,2305.77509567973,1121.70851036431,1094.15059988658,2773.7798132546],"Archive338_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive338_field5":[-896.295134251771,-833.965499179843,-212.964882318997,-274.743860127018,-554.956792836962,-851.084818946967,-522.349646341077,-252.87140449423,-584.521436921669,-383.813967616691,-721.687458461736,-416.626292040783,-538.462119379805,-367.085347821721,-235.93008059942,-311.666409148251,-295.513060374311,-364.927638131361,-425.114112654826,-268.332269162541,-475.075541755798,-543.640394859623,-504.412417937299,-597.161714559174,-683.810726573449,-678.415383015371,-662.8726878654,-329.161455524424,-428.043969850584,-341.182477179609,-738.269372612858,-610.21619073451,-871.177592685684,-600.661186393092,-568.787561877454,-472.121021517781,-840.041620795903,-505.639269763333,-459.96463933105,-647.495748881393,-782.261371805929,-756.927260622384,-807.988351521348,-746.836293451582],"Archive338_field6":[103.606634929867,96.4016825660451,24.6175327435264,31.7588322502333,64.1498582777731,98.3805788531936,60.3806570470602,29.2305004104563,67.5673634827665,44.3667181759751,83.4229777502116,48.1596368116936,62.2431675618967,42.432984590079,27.2721794367922,36.0268695416735,34.159634023639,42.1835655855226,49.1407807430879,31.0176886927256,54.9160386326223,62.8417468430971,58.3072151596005,69.0285078988794,79.0446423301915,78.4209712100647,76.6243237881487,38.0491976942082,49.4794556206782,39.4387596303583,85.3397529955975,70.5375313171843,100.703189557996,69.4330269985472,65.7486167491931,54.5745128472026,97.1040477692102,58.4490322736241,53.16930400119,74.8468368390705,90.4249786384172,87.4964990468623,93.3988716044307,86.3300404644141],"Archive338_field7":[999.901769181637,930.367181745888,237.582415062524,306.502692377251,619.106651114735,949.465397800161,582.730303388137,282.101904904686,652.088800404435,428.180685792666,805.110436211948,464.785928852477,600.705286941701,409.5183324118,263.202260036212,347.693278689924,329.67269439795,407.111203716883,474.254893397914,299.349957855267,529.99158038842,606.48214170272,562.719633096899,666.190222458053,762.855368903641,756.836354225436,739.497011653548,367.210653218632,477.523425471262,380.621236809968,823.609125608455,680.753722051694,971.880782243681,670.09421339164,634.536178626647,526.695534364983,937.145668565113,564.088302036957,513.133943332239,722.342585720463,872.686350444347,844.423759669246,901.387223125779,833.166333915996],"Archive338_field8":[3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6],"Archive338_field9":[0,0,0,0,378.232046303891,0,0,278.429383501406,0,89.7587444188391,680.73519515794,372.105847190937,30.1873516489864,0,918.473552215928,446.725721544524,271.599168770527,288.926205576112,253.397490761928,-566.046513351682,430.596151047698,523.216245643566,230.315593598893,129.134850325648,345.310131326768,0,-297.443886853093,136.19900982337,0,200.986365299202,0,542.337052410463,0,0,-85.4424392557374,-87.1254950973861,0,0,256.809971507859,562.631707289656,362.868870362621,-411.953767395041,520.240106957109,-156.506321986561],"Archive338_field10":[0,0,0,0,5893.03598002805,0,0,7873.41050496646,0,6155.20102389531,3055.50506654106,5801.66715149485,4562.93052083309,0,7240.406229809,7419.24204387222,3503.01521220321,7360.26284327303,6899.1910029446,7212.9048232825,6408.77490321243,4464.35949942736,6008.29264803012,5059.0911248907,4340.3023533376,0,2773.60867790069,7118.71247832386,0,4497.52323707332,0,5001.80445698838,0,0,2298.87622584951,2932.92261906938,0,0,3308.4881475732,2490.93439804075,2224.9552057765,1026.46522617306,946.21061275747,2709.68801896866],"Archive338_field11":[0,0,0,0,5905.16151707609,0,0,7878.33205071436,0,6155.85544638286,3130.41716350789,5813.58791954229,4563.03037620282,0,7298.42969677568,7432.67895013977,3513.52838118663,7365.9315415183,6903.84289967813,7235.08152303825,6423.2241752365,4494.91501363849,6012.7053658921,5060.73895982756,4354.01695049352,0,2789.51213726564,7120.01527521681,0,4502.01185994114,0,5031.12087952238,0,0,2300.46349942833,2934.21641010761,0,0,3318.44017334925,2553.68530038262,2254.35123367903,1106.04555376959,1079.79826476134,2714.20400651169],"Archive338_field12":[8994886.3381511,8369369.18253421,2137236.761947,2757227.72500651,5569341.0388984,8541172.34156875,5242107.78130991,2537723.85308443,5866040.8680142,3851814.96783309,7242588.30876236,4181107.31519324,5403806.59911155,3683932.7291601,2367706.99476595,3127768.76564046,2965659.73408425,3662278.75306023,4266287.94238215,2692883.37037567,4767682.35911074,5455773.85586508,5062096.39382409,5992894.01748148,6862471.4419223,6808325.77025055,6652345.03252264,3303342.57790457,4295690.90515162,3423981.103458,7408998.26387477,6123903.91022097,8742815.98448423,6028013.42200211,5708141.51960423,4738031.88717449,8430346.89090799,5074408.62481499,4616034.93340986,6498027.76234657,7850485.69073674,7596241.92451982,8108672.14017819,7494972.7116515],"Archive338_field13":[-894.052380940174,-832.133998247258,-217.354961872991,-278.472262773782,-556.414025833933,-835.804073827835,-522.641426598045,-264.054865123342,-584.184810042174,-386.644413650258,-717.452618331563,-420.464931256185,-539.122218801336,-368.846775784722,-246.511130453773,-313.884147191226,-296.875432061681,-368.65208030916,-428.75142746591,-278.790055097522,-478.009699497483,-544.063093568197,-506.241519572845,-598.378468185294,-681.81153412592,-677.878161842626,-661.24264385416,-329.861435809584,-427.983685120259,-342.980174196539,-734.949747766645,-610.617396511644,-859.965525167656,-600.814017708788,-568.412078326835,-473.130187137912,-829.080146534649,-504.971003638395,-460.589512172986,-645.384109348877,-773.522489671348,-753.043173623614,-803.79113427872,-740.359634610083],"Archive338_field14":[103.347385364949,96.1899714440669,25.1250010452967,32.189814453676,64.3183061487425,96.6142113694116,60.4143851901775,30.5232450415205,67.5284513243952,44.6939016869437,82.9334542455242,48.6033617373562,62.3194713118229,42.6365956741336,28.4952887983642,36.2832274833914,34.3171164651453,42.6140899812115,49.5612337092546,32.2265494442065,55.2552106289348,62.8906084168254,58.5186489364467,69.1691577182565,78.8135470200082,78.3588714888968,76.4358999438833,38.1301114458189,49.4724870477072,39.6465632113774,84.9560231878565,70.5839084299174,99.4071381327934,69.4506934319864,65.7052129799831,54.6911666702493,95.83696350346,58.3717844990948,53.2415357582732,74.6027432835125,89.4148134189344,87.0475206151615,92.9136970921966,85.5813754293007],"Archive338_field15":[997.399766305123,928.323969691325,242.479962918287,310.662077227458,620.732331982675,932.418285197246,583.055811788223,294.578110164863,651.713261366569,431.338315337202,800.386072577087,469.068292993541,601.441690113159,411.483371458855,275.006419252137,350.167374674617,331.192548526827,411.266170290371,478.312661175164,311.016604541729,533.264910126418,606.953701985022,564.760168509292,667.547625903551,760.625081145928,756.237033331523,737.678543798043,367.991547255403,477.456172167967,382.626737407916,819.905770954501,681.201304941561,959.372663300449,670.264711140774,634.117291306818,527.821353808161,924.917110038109,563.34278813749,513.831047931259,719.98685263239,862.937303090282,840.090694238776,896.704831370916,825.941010039384],"Archive338_field16":[1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2],"Archive338_field17":[0,0,0,0,368.954752920414,0,0,274.89057884911,0,81.064295031183,677.322140754201,367.63023136696,23.0065357503415,0,908.834788930048,439.870657606264,261.833895512918,282.712410413132,245.792857342846,-563.505444792024,423.307721914355,515.847509251378,221.071813167013,119.438566029282,337.088274006691,0,-305.51977828435,132.313206527014,0,204.784250438622,0,533.962521146236,0,0,-90.9569440321229,-92.2997515516708,0,0,252.487119397903,557.408033396104,356.936928616115,-412.482726314563,516.82932067143,-165.117570407805],"Archive338_field18":[0,0,0,0,5791.35549519223,0,0,7810.80811145729,0,6072.32722060685,2978.22627057212,5728.05363170931,4479.57346290727,0,7185.66391078541,7345.16825385285,3458.6883261112,7283.35988222644,6813.03794116233,7166.10197120656,6318.03199965173,4386.915804707,5913.3633838387,4957.38850984689,4232.64472035719,0,2705.83542161967,7050.58670373818,0,4444.46993815693,0,4903.77458164432,0,0,2250.28457694522,2881.85500283496,0,0,3261.18401687003,2434.61365963683,2149.92874950135,1000.6794257298,924.039052892189,2622.05110619883],"Archive338_field19":[0,0,0,0,5803.09624953747,0,0,7815.64381125106,0,6072.86829217066,3054.27520061336,5739.83888229914,4479.63254188,0,7242.9100858932,7358.32745077512,3468.58500342969,7288.84472883235,6817.47021382845,7188.22341389309,6332.19691545167,4417.14035665485,5917.49433932144,4958.82712025909,4246.04637671804,0,2723.02913385344,7051.8281070621,0,4449.1852760262,0,4932.75999026608,0,0,2252.12207548907,2883.33270738939,0,0,3270.94343230671,2497.60833346319,2179.35715268112,1082.35914214591,1058.75432371046,2627.24490970596],"Archive338_field20":[8972378.89573464,8350988.91683013,2181293.97602144,2794644.59446045,5583965.29007979,8387820.43742883,5245035.98001014,2649956.92607777,5862662.60520354,3880220.27696094,7200089.02010678,4219630.47806251,5410431.11266925,3701609.76846843,2473894.4961158,3150025.16407668,2979331.99226117,3699655.87671301,4302790.68801971,2797833.84063835,4797128.48056793,5460015.9037058,5080452.58107083,6005104.90667438,6842408.28622011,6802934.41733271,6635986.51394212,3310367.32105374,4295085.90990343,3442022.12557201,7375683.73717938,6127930.26295415,8630295.82333828,6029547.18053884,5704373.30561914,4748159.49994684,8320341.59096752,5067702.15324359,4622305.92604858,6476836.12930487,7762785.50302047,7557262.66451235,8066550.42090155,7429975.35988199],"Archive338_field21":[-887.52508924272,-826.016176244618,-217.198927762419,-277.877411605972,-553.463963867142,-817.237476400932,-518.63449510307,-269.408448699982,-579.511814331517,-385.066929480489,-709.040542050623,-419.578801422914,-535.429795672258,-366.193350783405,-251.66638229937,-312.370494107286,-294.271726712085,-368.081070838579,-427.757042377668,-283.110447199933,-476.519668009939,-540.154054980558,-503.738255071185,-595.007808396217,-675.34241801225,-673.030255753742,-655.280826103241,-327.239211934214,-423.52993457244,-340.675752868494,-727.458256101141,-606.538112485915,-845.059582080868,-596.656079389355,-563.71271436573,-469.793622307817,-814.444736462889,-500.084907348864,-456.890849969538,-638.982012594608,-760.904223674155,-744.999059242552,-795.43471613555,-729.820717173564],"Archive338_field22":[102.59286745881,95.4827859126822,25.1069643869318,32.121053031879,63.9772957141953,94.4680179918198,59.9512066313254,31.1420889445999,66.9882795192375,44.5115534623029,81.9610659295159,48.5009301535756,61.8926481365969,42.3298747906662,29.0912066780078,36.1082577703079,34.0161428914733,42.548084524416,49.4462884318787,32.725962271748,55.0829714384444,62.4387457229434,58.2292857552297,68.7795285605224,78.0657538814596,77.7984810358742,75.7467476193495,37.8269972355798,48.9576587401076,39.3801851734574,84.0900492330654,70.1123663287972,97.6840956385736,68.9700593405362,65.1619931545992,54.3054786964325,94.1451930916753,57.8069794754412,52.8139913814297,73.8626972028664,87.956213423621,86.1176666081903,91.9477425412958,84.3631363363117],"Archive338_field23":[990.11795670153,921.498962157301,242.305892149351,309.998464637851,617.441259581337,911.705494392751,578.585701734395,300.550537644582,646.500093850754,429.578482942792,791.001607980139,468.079731576489,597.322443808854,408.523225574071,280.757588977377,348.478751877594,328.287869603559,410.629155362996,477.203330809547,315.836409471681,531.602639448383,602.592800703501,561.967540826415,663.78733695674,753.408171893709,750.828736789616,731.02757372259,365.066209169794,472.487593312548,380.055938041952,811.548305334207,676.650478814712,942.743677719442,665.626138729891,628.87470752033,524.09910100425,908.589929554564,557.891886824305,509.704841350968,712.844709797475,848.860437097776,831.116725850742,887.382458676845,814.183853509876],"Archive338_field24":[-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6],"Archive338_field25":[0,0,0,0,350.804097687566,0,0,267.826496122081,0,75.7343690379728,653.067089125085,351.915518141407,15.3623875263583,0,899.732218980825,431.580708427348,252.959266625412,271.696482719808,236.336580787615,-567.181965049542,406.88915792583,495.627825272812,207.290946888959,105.137239160895,320.152575223554,0,-305.573355304801,120.395143418728,0,197.127633302257,0,512.635601479764,0,0,-94.1194370826947,-93.9516056416222,0,0,241.606593411961,535.620890926749,337.239880039312,-398.882475312032,498.728617024967,-166.041719069876],"Archive338_field26":[0,0,0,0,5532.19923861084,0,0,7582.47503240388,0,5823.02066011282,2799.40101136113,5502.44974436785,4260.82262733625,0,6952.71488170072,7102.62992090199,3321.75562698971,7040.59514707729,6563.08328074045,6940.15667992659,6069.17939178383,4178.07805020404,5658.97762050026,4706.16760213642,3979.75591338582,0,2546.76700750292,6811.01764263532,0,4270.45648239373,0,4658.40726998125,0,0,2129.63215643043,2744.1750847996,0,0,3118.69202320861,2299.31489469477,1984.50423192762,941.416526024651,873.7142883953,2425.93206067795],"Archive338_field27":[0,0,0,0,5543.31055693624,0,0,7587.20361194117,0,5823.51314094459,2874.56825372229,5513.69184133485,4260.85032177512,0,7010.68914530482,7115.73001885112,3331.37341587662,7045.83557882034,6567.33714144121,6963.29448776994,6082.80340603666,4207.37247397725,5662.7729290503,4707.34185485364,3992.61252835179,0,2565.03357989279,6812.08164358358,0,4275.00384465675,0,4686.52894506357,0,0,2131.71095370345,2745.78291207399,0,0,3128.03671359611,2360.87668542057,2012.95498787915,1022.43449892078,1006.03523357074,2431.60774293405],"Archive338_field28":[8906873.41135692,8289592.71880578,2179728.07542037,2788674.88823524,5554359.55970401,8201492.93529348,5204823.89809122,2703683.510027,5815766.1492598,3864389.22950228,7115668.5350195,4210737.60692384,5373375.32034238,3674980.97692246,2525630.69619502,3134834.70177791,2953202.16874361,3693925.43693977,4292811.4071966,2841191.69723306,4782175.07587058,5420786.23878454,5055330.74474004,5971278.21217533,6777486.63047627,6754282.62554993,6576155.91686647,3284051.65246336,4250389.71729322,3418895.80575965,7300501.8986763,6086992.07780703,8480705.29371822,5987819.65000219,5657212.22767016,4714674.969841,8173466.03058906,5018667.09873748,4585187.5206798,6412587.05505483,7636153.25423106,7476534.90890633,7982688.50029141,7324210.68388854],"Archive338_field29":[-881.073488879395,-819.983495335257,-216.785024242277,-277.174880019578,-550.312402485253,-800.304228072817,-514.651208657261,-273.421618449809,-574.846330254158,-383.318964702855,-700.897512543579,-418.283972256527,-531.675013826302,-363.442894946998,-255.710314820922,-311.147432042466,-291.900575222854,-367.382663695299,-426.410923527049,-285.933470847173,-474.799792003582,-536.188581793558,-501.108873755137,-591.302337140625,-668.713703997529,-668.238612375222,-649.340385403423,-325.195456780813,-419.068043648318,-338.456365818843,-720.236249554617,-602.253409513424,-831.172085458311,-592.516975493777,-559.020965368325,-466.399058253333,-800.86515294833,-495.327660457315,-453.163452371786,-632.667881637455,-749.013672636032,-737.27175874663,-787.399215289777,-719.738042148302],"Archive338_field30":[101.847099041675,94.7854422088738,25.0591194871116,32.0398443643132,63.6129930898984,92.510630507872,59.4907613060738,31.6059886103378,66.4489760162931,44.3094986461315,81.0197778948958,48.351255244484,61.4586166473152,42.0119376928918,29.5586623457118,35.9668787311902,33.7420512253244,42.4673526190858,49.2906847261365,33.0522877969469,54.8841635249506,61.9803595093971,57.9253441854357,68.3511970958629,77.2995121305758,77.2445942331228,75.060066360701,37.5907507292979,48.4418894511687,39.1236366159187,83.2552262298684,69.6170789622933,96.0787797803501,68.4916024016798,64.6196535758369,53.9130863411704,92.5754702426641,57.2570687115326,52.3831253559534,73.1328194695422,86.5817331509481,85.2244344897959,91.0188842101597,83.1976362788659],"Archive338_field31":[982.92058792107,914.768937544131,241.844143729389,309.214724383891,613.925395575151,892.814858580688,574.141969963334,305.027607060147,641.295306270451,427.628463348986,781.917290438475,466.635227501011,593.133630473617,405.454832639889,285.268977166634,347.114310773656,325.642626448178,409.850016314385,475.701608253185,318.98575864412,529.683955528533,598.168941302955,559.034217940572,659.653534236488,746.013216128104,745.483206608345,724.400451764124,362.786207510111,467.509933099486,377.580002434762,803.491475784485,671.870488475718,927.250865238662,661.008577895456,623.640618944162,520.312144594503,893.440623190994,552.584729168848,505.546577727739,705.800701106997,835.59540578698,822.496193236426,878.418099499937,802.935678427168],"Archive338_field32":[-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive339.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive339.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive339.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive339_field1":[0,0,0,0,385.790046736626,0,0,281.620108307603,0,101.185275433094,679.547892852486,373.259279449837,37.6151194387414,0,932.702227988873,455.098399560555,282.924663242202,294.170332945793,261.746653095323,-572.963082751501,436.070074973798,527.841827233796,239.113304439176,137.63542826965,351.676222968603,0,-287.884890921096,137.457654322315,0,192.378578522312,0,548.19721520309,0,0,-79.1051207556879,-80.4298697142292,0,0,259.023424853548,563.956475174694,365.250188550466,-408.249393870138,520.586982520736,-145.936011069528,0,0,0,0,385.790271352379,0,0,281.620076704414,0,101.184107806296,679.55022171389,373.260108019257,37.614037080805,0,932.701858032754,455.098535746127,282.92131013937,294.170600875762,261.746531415767,-572.962558212972,436.070515875034,527.844525460972,239.112739045623,137.634998981562,351.67651124665,0,-287.886859343962,137.457901451525,0,192.381624279256,0,548.197867487809,0,0,-79.1081248457073,-80.4337091244318,0,0,259.02720652755,563.960575658398,365.25181334886,-408.251042037452,520.590267258766,-145.93605313749,0,0,0,0,385.790322215381,0,0,281.620069547702,0,101.183843379381,679.550749114574,373.260295672606,37.6137919437555,0,932.701774248294,455.098566588037,282.920550785836,294.170661552371,261.746503857829,-572.962439420985,436.070615722891,527.845136507599,239.112611009934,137.63490176332,351.676576533182,0,-287.887305104446,137.457957416239,0,192.382314030021,0,548.19801522258,0,0,-79.1088051427308,-80.4345785926827,0,0,259.028062921089,563.96150424264,365.252181317209,-408.251415299962,520.591011134088,-145.936062674326],"Archive339_field2":[0,0,0,0,5959.13402975262,0,0,7903.7023894135,0,6201.14568039141,3107.39772238272,5841.91747308694,4614.27143977202,0,7257.37538919385,7460.04801318988,3527.27807812785,7403.94290499601,6951.60549424978,7222.43887042354,6465.89834053889,4511.1088656978,6067.84171042359,5125.14767884865,4410.87258708171,0,2819.03772000083,7152.12625384702,0,4524.36835395628,0,5065.10040515826,0,0,2329.7966542045,2963.42114567854,0,0,3333.3399702982,2527.89095129703,2275.01961816463,1043.98136380635,961.537590278145,2767.9741687355,0,0,0,0,5959.13718248901,0,0,7903.70398739034,0,6201.14715476143,3107.40544903518,5841.91948413798,4614.27461296252,0,7257.37778229063,7460.04833970065,3527.27740731964,7403.94432762308,6951.60731745804,7222.44459214013,6465.90022335852,4511.11189893542,6067.84423397772,5125.15137901802,4410.87723947586,0,2819.04105616974,7152.12646309383,0,4524.36863492299,0,5065.10399431755,0,0,2329.7993635844,2963.42188562842,0,0,3333.34247844367,2527.89557476199,2275.03577301009,1043.98826568756,961.546435385201,2767.98550842038,0,0,0,0,5959.13788399284,0,0,7903.70489884856,0,6201.14741659721,3107.40719559237,5841.92007548202,4614.27534677093,0,7257.37917667653,7460.0480687269,3527.2770358365,7403.94466202355,6951.60782270987,7222.44799250618,6465.90061006227,4511.11256236064,6067.84480268662,5125.15221728007,4410.87829297274,0,2819.04181017066,7152.12587958314,0,4524.36837211486,0,5065.10482254276,0,0,2329.79997053707,2963.42207049703,0,0,3333.34309807421,2527.89662374335,2275.03943211917,1043.98982897282,961.548439158825,2767.98807655927],"Archive339_field3":[0,0,0,0,5971.61004317205,0,0,7908.71962559638,0,6201.97237972768,3180.83478249565,5853.83087055456,4614.4256645428,0,7317.06582306457,7473.91818872611,3538.60735076804,7409.78599420871,6956.53285968773,7245.13147874652,6480.58756160883,4541.88599521416,6072.55241276023,5126.99645392351,4424.8707244337,0,2833.69977987756,7153.44845336381,0,4528.45742475084,0,5094.68081647972,0,0,2331.13967678082,2964.51299363318,0,0,3343.38943814661,2590.03517292586,2304.15365525036,1120.96612427789,1093.41929212342,2771.81913243361,0,0,0,0,5971.61235201769,0,0,7908.72097781719,0,6201.97335705207,3180.84309808621,5853.83248089563,4614.42810754375,0,7317.06801919923,7473.91810541058,3538.60653336177,7409.78692557303,6956.53423529533,7245.13689158173,6480.58894478879,4541.88852361095,6072.55424224383,5126.99938142451,4424.87460799768,0,2833.70275940659,7153.44799189654,0,4528.45761883897,0,5094.68367277211,0,0,2331.14207010869,2964.51352842532,0,0,3343.39160858294,2590.04048040347,2304.18150697967,1120.97960578384,1093.4403887509,2771.83404882861,0,0,0,0,5971.61272578042,0,0,7908.72166540746,0,6201.97325429822,3180.85120971055,5853.83274286232,4614.42865807524,0,7317.06926736231,7473.91748812702,3538.60623104903,7409.78686543518,6956.5343825317,7245.14004697801,6480.58894909599,4541.8892400164,6072.5544044724,5126.99996259927,4424.8756496182,0,2833.7042141797,7153.4469517552,0,4528.45719924826,0,5094.68428351155,0,0,2331.1438034361,2964.51354397576,0,0,3343.39241852296,2590.04526730588,2304.23133547767,1121.00559416341,1093.48445160132,2771.85550200201],"Archive339_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,1821643.425,1113226.5375,1546147.96875,1467434.98125,1801965.178125,2102058.44296875,1270652.5125,2357875.65234375,2714851.34956055,2511138.92127404,2978032.54863044,3429480.92383684,3395903.175,3323246.10830059,1644539.203125,2136495.375,1693734.8203125,3710755.125,3048172.18272937,4419172.0125,3002338.2375,2844912.2625,2352956.090625,4261746.0375,2530060.3125,2293921.35,3248649.01840725,3959787.47310336,3807172.97231184,4064963.56875,3769928.45356871,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive339_field5":[-896.296879416304,-833.967151921536,-212.961496900831,-274.741213553943,-554.959767563032,-851.095741159318,-522.35167997264,-252.857234696504,-584.523382022359,-383.815474522379,-721.692895621863,-416.625773012693,-538.464613005095,-367.085802841524,-235.918202496429,-311.668797579662,-295.515502035179,-364.927982940091,-425.114653035551,-268.320965090694,-475.077011656771,-543.643464199389,-504.414571229733,-597.164251661998,-683.816126157784,-678.417106754957,-662.876592070972,-329.167301167659,-428.04635099778,-341.185037787958,-738.272841318722,-610.219785092166,-871.186223325716,-600.662356809853,-568.790438968678,-472.123417292488,-840.049667072312,-505.641305426084,-459.967901155003,-647.499799000714,-782.269139013699,-756.930999838718,-807.992450001915,-746.843257474508,-896.296879416304,-833.967151921536,-212.961496900831,-274.741213553943,-554.959767563032,-851.095741159318,-522.35167997264,-252.857234696504,-584.523382022359,-383.815474522379,-721.692895621863,-416.625773012693,-538.464613005095,-367.085802841524,-235.918202496429,-311.668797579662,-295.515502035179,-364.927982940091,-425.114653035551,-268.320965090694,-475.077011656771,-543.643464199389,-504.414571229733,-597.164251661998,-683.816126157784,-678.417106754957,-662.876592070972,-329.167301167659,-428.046350997781,-341.185037787958,-738.272841318722,-610.219785092166,-871.186223325716,-600.662356809853,-568.790438968678,-472.123417292488,-840.049667072312,-505.641305426084,-459.967901155002,-647.499799000714,-782.269139013699,-756.930999838718,-807.992450001915,-746.843257474508,-896.296879416304,-833.967151921536,-212.961496900831,-274.741213553943,-554.959767563032,-851.095741159318,-522.35167997264,-252.857234696504,-584.523382022359,-383.815474522379,-721.692895621863,-416.625773012693,-538.464613005095,-367.085802841524,-235.918202496429,-311.668797579662,-295.515502035179,-364.927982940091,-425.114653035551,-268.320965090694,-475.077011656771,-543.643464199389,-504.414571229733,-597.164251661998,-683.816126157784,-678.417106754957,-662.876592070972,-329.167301167659,-428.04635099778,-341.185037787958,-738.272841318722,-610.219785092166,-871.186223325716,-600.662356809853,-568.790438968678,-472.123417292488,-840.049667072312,-505.641305426084,-459.967901155003,-647.499799000714,-782.269139013699,-756.930999838718,-807.992450001915,-746.843257474508],"Archive339_field6":[103.60683666099,96.4018736136127,24.617141408384,31.7585263213936,64.1502021392382,98.3818413990051,60.3808921233368,29.2288624621913,67.5675883253763,44.3668923657276,83.42360625509,48.1595768149896,62.2434558108397,42.4330371877879,27.2708063954433,36.0271456308007,34.1599162657895,42.1836054434565,49.1408432080354,31.0163820061216,54.9162085448394,62.8421016413688,58.3074640679953,69.0288011735788,79.0452664915213,78.421170464586,76.6247750921735,38.0498734174175,49.4797308677914,39.4390556221631,85.3401539583255,70.537946804547,100.704187211042,69.4331622920877,65.7489493246236,54.5747897851731,97.1049778731353,58.4492675846945,53.1696810495423,74.8473050098972,90.4258764835901,87.4969312790666,93.3993453655431,86.3308454659737,103.60683666099,96.4018736136127,24.617141408384,31.7585263213936,64.1502021392382,98.3818413990051,60.3808921233368,29.2288624621913,67.5675883253763,44.3668923657276,83.42360625509,48.1595768149896,62.2434558108397,42.4330371877879,27.2708063954433,36.0271456308007,34.1599162657895,42.1836054434565,49.1408432080354,31.0163820061216,54.9162085448394,62.8421016413688,58.3074640679953,69.0288011735788,79.0452664915213,78.421170464586,76.6247750921735,38.0498734174175,49.4797308677914,39.439055622163,85.3401539583255,70.537946804547,100.704187211042,69.4331622920877,65.7489493246236,54.5747897851731,97.1049778731354,58.4492675846945,53.1696810495423,74.8473050098972,90.42587648359,87.4969312790666,93.3993453655431,86.3308454659737,103.60683666099,96.4018736136127,24.617141408384,31.7585263213936,64.1502021392382,98.3818413990051,60.3808921233368,29.2288624621913,67.5675883253763,44.3668923657276,83.42360625509,48.1595768149896,62.2434558108397,42.4330371877879,27.2708063954433,36.0271456308007,34.1599162657895,42.1836054434565,49.1408432080354,31.0163820061216,54.9162085448394,62.8421016413688,58.3074640679953,69.0288011735788,79.0452664915213,78.421170464586,76.6247750921735,38.0498734174175,49.4797308677914,39.4390556221631,85.3401539583255,70.537946804547,100.704187211042,69.4331622920877,65.7489493246236,54.5747897851731,97.1049778731353,58.4492675846945,53.1696810495423,74.8473050098972,90.4258764835901,87.4969312790666,93.3993453655431,86.3308454659737],"Archive339_field7":[999.903716077295,930.369025535149,237.578638309215,306.499739875337,619.10996970227,949.477582558323,582.732572095977,282.086097158695,652.090970347736,428.182366888107,805.116501876953,464.785349827682,600.708068815934,409.518840029312,263.189008891873,347.695943210463,329.675418300969,407.111588383547,474.255496243586,299.337347096815,529.993220201611,606.485565840758,562.722035297728,666.193052835576,762.861392649305,756.838277219543,739.501367163145,367.217174585077,477.526081865572,380.624093410121,823.612995277047,680.757731896713,971.890410536759,670.09551910194,634.539388293302,526.698207077661,937.154644945447,564.090573010778,513.137582204545,722.347104010611,872.695015497289,844.427931117784,901.391795367458,833.174102940482,999.903716077295,930.369025535149,237.578638309215,306.499739875337,619.10996970227,949.477582558323,582.732572095977,282.086097158695,652.090970347736,428.182366888106,805.116501876953,464.785349827682,600.708068815934,409.518840029312,263.189008891873,347.695943210463,329.675418300969,407.111588383547,474.255496243586,299.337347096815,529.993220201611,606.485565840757,562.722035297728,666.193052835576,762.861392649305,756.838277219543,739.501367163146,367.217174585077,477.526081865572,380.624093410121,823.612995277047,680.757731896713,971.890410536759,670.09551910194,634.539388293302,526.698207077661,937.154644945447,564.090573010778,513.137582204545,722.347104010611,872.695015497289,844.427931117784,901.391795367458,833.174102940482,999.903716077295,930.369025535149,237.578638309215,306.499739875337,619.10996970227,949.477582558323,582.732572095977,282.086097158695,652.090970347736,428.182366888107,805.116501876953,464.785349827682,600.708068815934,409.518840029312,263.189008891873,347.695943210463,329.675418300969,407.111588383547,474.255496243586,299.337347096815,529.993220201611,606.485565840758,562.722035297728,666.193052835576,762.861392649305,756.838277219543,739.501367163145,367.217174585077,477.526081865572,380.624093410121,823.612995277047,680.757731896713,971.890410536759,670.09551910194,634.539388293302,526.698207077661,937.154644945447,564.090573010778,513.137582204545,722.347104010611,872.695015497289,844.427931117784,901.391795367458,833.174102940482],"Archive339_field8":[3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6,3.6],"Archive339_field9":[0,0,0,0,378.130812873805,0,0,277.986258281869,0,90.382255839667,680.11618684801,371.473589558264,30.7417519122786,0,917.134003250091,446.080135187324,272.158965591373,289.060909337118,253.622065346719,-564.960539419209,430.22558029606,522.466147211753,230.660060840644,129.464473691351,345.168267154727,0,-296.846705058763,136.434729162604,0,199.835086885548,0,541.801999382879,0,0,-85.0093355489768,-86.4588152927747,0,0,256.270920065828,561.953057340578,362.595562386033,-411.547102216922,519.786439605273,-156.17202188644,0,0,0,0,378.131035147788,0,0,277.986248360366,0,90.3810649039435,680.118415324035,371.474443522096,30.7407129186814,0,917.133646143191,446.080282730555,272.15571100894,289.06117093931,253.621954342765,-564.960060100599,430.226012971644,522.468761447863,230.659522651987,129.464082975611,345.168525747858,0,-296.848590424858,136.434952735407,0,199.838065001454,0,541.802608749562,0,0,-85.0122867517878,-86.4625750234167,0,0,256.27461080859,561.957006279845,362.597159594519,-411.548824360245,519.789855559627,-156.172098578768,0,0,0,0,378.131085480914,0,0,277.986246113724,0,90.3807951987446,680.118919994233,371.474636926329,30.7404776024338,0,917.133565268272,446.080316144623,272.15497396664,289.06123018333,253.621929202183,-564.959951548477,430.226110956541,522.46935347376,230.659400776614,129.463994492662,345.168584311568,0,-296.849017377845,136.435003364703,0,199.83873943402,0,541.802746764215,0,0,-85.012955071344,-86.4634264473415,0,0,256.275446609886,561.957900545586,362.597521312255,-411.549214373572,519.790629145482,-156.172115956132],"Archive339_field10":[0,0,0,0,5885.43070312832,0,0,7857.70624078866,0,6146.3075208116,3052.63265998844,5792.12125586354,4557.6849734457,0,7224.98347979057,7405.61655224534,3497.30859482353,7346.91853820101,6888.21931628427,7194.08678562531,6399.16997618417,4458.71193697076,6000.2602180404,5053.32072530919,4335.83338689,0,2771.0543417891,7104.06835106011,0,4488.60871056913,0,4995.93629439055,0,0,2296.5927176695,2929.56083616333,0,0,3303.56146770047,2488.34896137886,2223.02688410105,1025.64699773493,945.451116038812,2707.32861696885,0,0,0,0,5885.43383147139,0,0,7857.70799412681,0,6146.30895842201,3052.63999014116,5792.12341292866,4557.68810961223,0,7224.98612220005,7405.61675328907,3497.30782268922,7346.9200042823,6888.22123466914,7194.09299656509,6399.17184372069,4458.71488581655,6000.26273329895,5053.32439767094,4335.83784455211,0,2771.05765025551,7104.06831239609,0,4488.6088341835,0,4995.93981389794,0,0,2296.59541195319,2929.56158329052,0,0,3303.56388506339,2488.35348005348,2223.0414664651,1025.653599929,945.459657093072,2707.33892200927,0,0,0,0,5885.43452529996,0,0,7857.70904292165,0,6146.30920177806,3052.64164645618,5792.12405702563,4557.68883719491,0,7224.98770904448,7405.61640145854,3497.30739681801,7346.92034642758,6888.22177619008,7194.09681635248,6399.17222183205,4458.71552684325,6000.26329939394,5053.32522977524,4335.83885399646,0,2771.05839774885,7104.06758460607,0,4488.60849424688,0,4995.94062844383,0,0,2296.59601456938,2929.56177217178,0,0,3303.56449014315,2488.35450557864,2223.04476956711,1025.65509539783,945.461592114265,2707.34125583241],"Archive339_field11":[0,0,0,0,5897.56651483612,0,0,7862.62300602227,0,6146.97322572278,3127.47945144268,5804.02236023775,4557.78953131327,0,7282.96215427249,7419.04061843259,3507.88292705863,7352.60430790166,6892.88828260127,7216.23709588283,6413.61721557714,4489.21937645594,6004.69320146756,5054.97982430616,4349.55158947985,0,2786.90920869941,7105.37963339903,0,4493.05573941909,0,5025.2301945721,0,0,2298.1659477956,2930.83691941391,0,0,3313.4871873808,2551.0143512585,2252.40444532846,1105.13490321671,1078.91434245054,2711.82971243564,0,0,0,0,5897.56881940876,0,0,7862.62453817841,0,6146.97416068786,3127.48746313312,5804.02409219715,4557.791951325,0,7282.96459726589,7419.04042594219,3507.88201139989,7352.60526634432,6892.88973634957,7216.24303017136,6413.61859009805,4489.22184517729,6004.69503484606,5054.98274551468,4349.55534079134,0,2786.91220228183,7105.37895345734,0,4493.0557766988,0,5025.23300042321,0,0,2298.16835699651,2930.83746598143,0,0,3313.48928263629,2551.01960180305,2252.43060501888,1105.14804577664,1078.93490458149,2711.84373280076,0,0,0,0,5897.56921784935,0,0,7862.62539175792,0,6146.97404001238,3127.49547843468,5804.02438744084,4557.79251603203,0,7282.96603614279,7419.03974706474,3507.8816441258,7352.60520352335,6892.88990788626,7216.24664118415,6413.61860185719,4489.22258957394,6004.69521670686,5054.98336640382,4349.55643670456,0,2786.91374393477,7105.37780593647,0,4493.05528078032,0,5025.23363132404,0,0,2298.17015310674,2930.83749637647,0,0,3313.49011374407,2551.02447043183,2252.47849100003,1105.173578485,1078.97790449131,2711.86454807914],"Archive339_field12":[8994903.85197665,8369385.76883833,2137202.78714289,2757201.16497836,5569370.89214859,8541281.95285068,5242128.19008383,2537581.65023728,5866060.38832505,3851830.09058102,7242642.87408964,4181102.10641937,5403831.62421232,3683937.29557048,2367587.79051924,3127792.73505439,2965684.23768931,3662282.21343306,4266293.36544317,2692769.92689312,4767697.11049304,5455804.65862331,5062118.00347024,5992919.47890669,6862525.63015284,6808343.06906324,6652384.21368521,3303401.2426172,4295714.80146386,3424006.80077596,7409033.0745234,6123939.9818645,8742902.59839426,6028025.16787166,5708170.39302723,4738055.93028301,8430427.64036091,5074429.05397317,4616067.66786818,6498068.40784554,7850563.63956005,7596279.44991143,8108713.27101272,7495042.6000089,4497451.92598832,4184692.88441917,1068601.39357144,1378600.58248918,2784685.44607429,4270640.97642534,2621064.09504191,1268790.82511864,2933030.19416253,1925915.04529051,3621321.43704482,2090551.05320969,2701915.81210616,1841968.64778524,1183793.89525962,1563896.36752719,1482842.11884465,1831141.10671653,2133146.68272158,1346384.96344656,2383848.55524652,2727902.32931166,2531059.00173512,2996459.73945335,3431262.81507642,3404171.53453162,3326192.1068426,1651700.6213086,2147857.40073193,1712003.40038798,3704516.5372617,3061969.99093225,4371451.29919713,3014012.58393583,2854085.19651362,2369027.96514151,4215213.82018045,2537214.52698658,2308033.83393409,3249034.20392277,3925281.81978002,3798139.72495572,4054356.63550636,3747521.30000445,5.11350322085491e-10,5.11350322085491e-10,-6.39187902606864e-11,1.91756370782059e-10,-3.83512741564118e-10,0,6.39187902606864e-11,-6.39187902606864e-11,-3.83512741564118e-10,1.91756370782059e-10,5.11350322085491e-10,0,3.19593951303432e-10,0,6.39187902606864e-11,1.27837580521373e-10,-1.91756370782059e-10,-6.39187902606864e-11,2.55675161042745e-10,1.59796975651716e-10,-6.39187902606864e-11,1.27837580521373e-10,2.55675161042745e-10,-1.27837580521373e-10,-1.27837580521373e-10,3.83512741564118e-10,2.55675161042746e-10,0,-6.39187902606864e-11,1.27837580521373e-10,-3.83512741564118e-10,2.55675161042745e-10,0,-1.27837580521373e-10,3.83512741564118e-10,0,0,-6.39187902606864e-11,-1.27837580521373e-10,3.83512741564118e-10,1.27837580521373e-10,-2.55675161042745e-10,5.11350322085491e-10,3.83512741564118e-10],"Archive339_field13":[-894.056259618375,-832.137721333137,-217.348515957859,-278.466447348618,-556.420720446115,-835.827586844742,-522.646366842709,-264.028791956495,-584.189168050103,-386.64846268374,-717.464593457857,-420.465433973849,-539.128201422799,-368.848674746777,-246.488288450084,-313.887353446285,-296.881023065685,-368.652501488449,-428.753609969105,-278.771367942337,-478.013059041656,-544.070351331937,-506.246442240469,-598.38457166562,-681.823626564122,-677.882279791014,-661.25154942364,-329.871771838186,-427.990215615766,-342.986409009347,-734.95755523168,-610.625581668326,-859.984239234249,-600.816999875469,-568.418897739119,-473.135984686897,-829.097664020514,-504.975525397587,-460.597752077322,-645.39343675999,-773.539393286386,-753.051543773358,-803.800181116663,-740.374944201315,-894.056259618375,-832.137721333137,-217.348515957859,-278.466447348618,-556.420720446115,-835.827586844742,-522.646366842709,-264.028791956495,-584.189168050103,-386.64846268374,-717.464593457857,-420.46543397385,-539.128201422799,-368.848674746777,-246.488288450084,-313.887353446285,-296.881023065685,-368.652501488449,-428.753609969105,-278.771367942337,-478.013059041656,-544.070351331937,-506.246442240469,-598.38457166562,-681.823626564122,-677.882279791014,-661.25154942364,-329.871771838186,-427.990215615766,-342.986409009347,-734.95755523168,-610.625581668326,-859.984239234249,-600.816999875469,-568.418897739119,-473.135984686897,-829.097664020514,-504.975525397587,-460.597752077322,-645.39343675999,-773.539393286386,-753.051543773358,-803.800181116663,-740.374944201315,-894.056259618375,-832.137721333137,-217.348515957859,-278.466447348618,-556.420720446115,-835.827586844742,-522.646366842709,-264.028791956495,-584.189168050103,-386.64846268374,-717.464593457857,-420.465433973849,-539.128201422799,-368.848674746777,-246.488288450084,-313.887353446285,-296.881023065685,-368.652501488449,-428.753609969105,-278.771367942337,-478.013059041656,-544.070351331937,-506.246442240469,-598.38457166562,-681.823626564122,-677.882279791014,-661.25154942364,-329.871771838186,-427.990215615766,-342.986409009347,-734.95755523168,-610.625581668326,-859.984239234249,-600.816999875469,-568.418897739119,-473.135984686897,-829.097664020514,-504.975525397587,-460.597752077322,-645.39343675999,-773.539393286386,-753.051543773358,-803.800181116663,-740.374944201315],"Archive339_field14":[103.347833718155,96.1904018116822,25.12425593406,32.1891422235044,64.3190800079479,96.6169293408317,60.4149562544462,30.5202311312851,67.5289550853991,44.6943697322535,82.9348385022168,48.6034198486674,62.3201628689386,42.6368151833788,28.4926483922671,36.2835981082946,34.3177627535034,42.614138667149,49.5614859942478,32.2243893150356,55.2555989731903,62.8914473731573,58.5192179689091,69.1698632459714,78.8149448372922,78.359347500379,76.4369293772147,38.1313062321131,49.4732419359556,39.6472839203826,84.956925686541,70.5848545876146,99.4093013727703,69.4510381535438,65.7060012653725,54.6918368340361,95.8389884254901,58.372307188816,53.2424882444887,74.6038214793446,89.4167673809781,87.0484881570076,92.9147428553613,85.5831451312317,103.347833718155,96.1904018116822,25.12425593406,32.1891422235044,64.3190800079479,96.6169293408317,60.4149562544462,30.5202311312851,67.5289550853991,44.6943697322535,82.9348385022168,48.6034198486674,62.3201628689386,42.6368151833788,28.4926483922671,36.2835981082946,34.3177627535034,42.614138667149,49.5614859942478,32.2243893150356,55.2555989731903,62.8914473731574,58.5192179689091,69.1698632459714,78.8149448372922,78.359347500379,76.4369293772147,38.1313062321131,49.4732419359556,39.6472839203826,84.956925686541,70.5848545876146,99.4093013727703,69.4510381535438,65.7060012653725,54.6918368340361,95.8389884254901,58.372307188816,53.2424882444887,74.6038214793446,89.4167673809781,87.0484881570076,92.9147428553613,85.5831451312317,103.347833718155,96.1904018116822,25.12425593406,32.1891422235044,64.3190800079479,96.6169293408317,60.4149562544462,30.5202311312851,67.5289550853991,44.6943697322535,82.9348385022168,48.6034198486674,62.3201628689386,42.6368151833788,28.4926483922671,36.2835981082946,34.3177627535034,42.614138667149,49.5614859942478,32.2243893150356,55.2555989731903,62.8914473731573,58.5192179689091,69.1698632459714,78.8149448372922,78.359347500379,76.4369293772147,38.1313062321131,49.4732419359556,39.6472839203826,84.956925686541,70.5848545876146,99.4093013727703,69.4510381535438,65.7060012653725,54.6918368340361,95.8389884254901,58.372307188816,53.2424882444887,74.6038214793446,89.4167673809781,87.0484881570076,92.9147428553613,85.5831451312317],"Archive339_field15":[997.40409333653,928.328123144819,242.472771891919,310.655589572122,620.739800454063,932.444516185573,583.061323097155,294.54902308778,651.718123135503,431.342832415993,800.399431960073,469.068853822517,601.448364291738,411.485489930155,274.980936842352,350.170951554579,331.198785819189,411.266640155598,478.315095963353,310.995757257372,533.268658014846,606.961798705094,564.765660209378,667.554434911592,760.638571401414,756.241627291393,737.688478800855,368.003078070299,477.463457551722,382.63369292973,819.914480918221,681.210436255941,959.393540607019,670.268038029013,634.124899004491,527.827821520933,924.936652446004,563.347832586403,513.840240321811,719.997258239335,862.956160667365,840.100031930365,896.714923972025,825.958089332547,997.40409333653,928.328123144819,242.472771891919,310.655589572122,620.739800454063,932.444516185574,583.061323097155,294.54902308778,651.718123135503,431.342832415993,800.399431960074,469.068853822517,601.448364291738,411.485489930155,274.980936842352,350.170951554579,331.198785819189,411.266640155599,478.315095963353,310.995757257372,533.268658014846,606.961798705094,564.765660209378,667.554434911592,760.638571401415,756.241627291393,737.688478800855,368.003078070299,477.463457551722,382.63369292973,819.914480918221,681.210436255941,959.393540607019,670.268038029013,634.124899004491,527.827821520933,924.936652446004,563.347832586403,513.840240321811,719.997258239335,862.956160667365,840.100031930365,896.714923972025,825.958089332547,997.40409333653,928.328123144819,242.472771891919,310.655589572122,620.739800454063,932.444516185573,583.061323097155,294.54902308778,651.718123135503,431.342832415993,800.399431960073,469.068853822517,601.448364291738,411.485489930155,274.980936842352,350.170951554579,331.198785819189,411.266640155598,478.315095963353,310.995757257372,533.268658014846,606.961798705094,564.765660209378,667.554434911592,760.638571401414,756.241627291393,737.688478800855,368.003078070299,477.463457551722,382.63369292973,819.914480918221,681.210436255941,959.393540607019,670.268038029013,634.124899004491,527.827821520933,924.936652446004,563.347832586403,513.840240321811,719.997258239335,862.956160667365,840.100031930365,896.714923972025,825.958089332547],"Archive339_field16":[1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2],"Archive339_field17":[0,0,0,0,368.847533827233,0,0,274.275754876514,0,81.798231916832,676.51882765499,366.871844102632,23.754479266113,0,907.36005433742,438.951592744705,262.731041526326,282.972610230832,246.075812853688,-562.432428984097,422.874880233583,514.899170324986,221.51440726368,119.897230793159,336.929627815526,0,-304.717316864344,132.666371157759,0,203.191212501286,0,533.291396971164,0,0,-90.3736020249202,-91.4162218993455,0,0,251.824589220454,556.524281429241,356.592100578594,-411.943774803456,516.239935977325,-164.653014491417,0,0,0,0,368.847754325761,0,0,274.275760737966,0,81.7970330778291,676.520940498708,366.872707690091,23.753494315435,0,907.359710051999,438.951746800731,262.727912210366,282.972868598599,246.075711595783,-562.431991801313,422.875306114682,514.901687804391,221.513894270811,119.896881213475,336.929858318007,0,-304.719106218172,132.666575041961,0,203.194099074026,0,533.291959903485,0,0,-90.3764694130759,-91.4198668272445,0,0,251.828157400395,556.528050730094,356.593649067415,-411.945543618309,516.243433030078,-164.65311765856,0,0,0,0,368.847804257156,0,0,274.275762065694,0,81.7967615831134,676.521418984098,366.872903273929,23.7532712385462,0,907.359632080582,438.951781689773,262.72720353622,282.972927110347,246.075688662062,-562.431892791439,422.87540256076,514.902257918435,221.51377810105,119.896802046147,336.929910520293,0,-304.719511429657,132.666621212033,0,203.194752775248,0,533.292087401794,0,0,-90.3771187517585,-91.4206922530726,0,0,251.828965446255,556.528904315588,356.593999749209,-411.945944199021,516.24422497844,-164.653141030428],"Archive339_field18":[0,0,0,0,5781.58597930512,0,0,7791.21816557963,0,6060.68746659269,2974.56848429054,5715.54127406663,4472.82700125393,0,7164.81000157528,7327.59561591202,3451.05547254429,7266.25546488492,6798.90982130488,7140.55403348957,6305.66682138368,4379.56368076245,5903.00267005763,4949.99718180446,4226.94500882666,0,2702.59020853582,7031.28401118027,0,4432.43496835295,0,4896.23748780446,0,0,2247.36749563714,2877.53174837941,0,0,3254.6397974897,2431.29097953297,2147.49742387198,999.643772142812,923.077752847928,2619.06997635448,0,0,0,0,5781.58908553358,0,0,7791.22006709195,0,6060.68886731614,2974.57538357334,5715.54353561983,4472.8300773059,0,7164.81285375108,7327.59571137603,3451.05461267634,7266.25696579179,6798.91182289221,7140.56063909326,6305.66868323624,4379.56654095281,5903.0051796878,4950.00080787126,4226.94926871623,0,2702.59346203367,7031.28377669501,0,4432.43496095778,0,4896.24092575895,0,0,2247.3701542658,2877.53249915647,0,0,3254.64211695741,2431.29535971837,2147.5104432819,999.650030775412,923.085929254063,2619.07925925888,0,0,0,0,5781.58977249161,0,0,7791.2212414212,0,6060.68909420845,2974.57694197001,5715.54421951598,4472.83079298582,0,7164.81460571217,7327.595290342,3451.05414031895,7266.25731281152,6798.91239596607,7140.56479588653,6305.66905603651,4379.56715926149,5903.00574378842,4950.00162962932,4226.95023343684,0,2702.59419689514,7031.28293204542,0,4432.43455917747,0,4896.241723471,0,0,2247.3707480908,2877.53269074228,0,0,3254.6427042956,2431.29635410682,2147.51339249539,999.651448481676,923.087781778214,2619.08136158775],"Archive339_field19":[0,0,0,0,5793.34077475855,0,0,7796.04512032057,0,6061.24060038412,3050.53085525058,5727.3049036711,4472.89092621785,0,7222.03696267464,7340.7324943131,3461.04260352087,7271.76481568135,6803.36293556977,7162.67062633684,6319.83159276535,4409.72858318449,5907.15853401837,4951.44990819775,4240.35274663072,0,2719.71487694772,7032.53664680216,0,4437.09066410262,0,4925.19543759812,0,0,2249.18428554757,2878.98400380709,0,0,3264.36820156495,2494.17267075906,2176.90249616747,1081.19641628398,1057.62781925027,2624.24086567885,0,0,0,0,5793.34307944237,0,0,7796.04682259167,0,6061.24149646332,3050.5385063843,5727.30672141256,4472.89330581119,0,7222.03961391015,7340.73220885738,3461.04160399781,7271.76579658375,6803.36445693273,7162.67698338529,6319.83296523236,4409.73098835917,5907.16037232542,4951.4528092425,4240.35636462535,0,2719.71785986315,7032.53579432974,0,4437.09056924344,0,4925.19818576191,0,0,2249.18669233298,2878.98455852133,0,0,3264.3702126487,2494.17782330106,2176.92679529727,1081.20907134069,1057.64761465811,2624.2539262785,0,0,0,0,5793.34350805169,0,0,7796.0478279547,0,6061.24136349394,3050.54633737377,5727.30704429027,4472.89388120759,0,7222.04121784864,7340.73147748471,3461.04118124771,7271.76573295768,6803.36465099067,7162.6809647308,6319.83298668699,4409.7317569641,5907.16057471362,4951.45347552076,4240.35753084426,0,2719.7194830319,7032.53456138769,0,4437.09001308206,0,4925.19884152818,0,0,2249.18853414582,2878.98460378073,0,0,3264.37105478257,2494.18273189552,2176.9722258982,1081.23379003682,1057.68898748544,2624.27388600343],"Archive339_field20":[8972417.82071396,8351026.28034247,2181229.28720217,2794586.23300521,5584032.47473065,8388056.4053667,5245085.55847769,2649695.26542236,5862706.34055866,3880260.91156282,7200209.19804347,4219635.52315098,5410491.15204469,3701628.82574899,2473665.26221832,3150057.34086614,2979388.10150868,3699660.10351253,4302812.59081425,2797646.30326315,4797162.19571021,5460088.73993732,5080501.98314171,6005166.15894465,6842529.6414557,6802975.7435391,6636075.88694237,3310471.04961246,4295151.44754005,3442084.69584648,7375762.09000971,6128012.4061581,8630483.6307864,6029577.10846025,5704441.74271763,4748217.68200336,8320517.38997419,5067747.53194579,4622388.61867974,6476929.73575166,7762955.14144666,7557346.66423822,8066641.21161982,7430129.00127505,4486208.91035698,4175513.14017123,1090614.64360108,1397293.11650261,2792016.23736532,4194028.20268335,2622542.77923885,1324847.63271118,2931353.17027933,1940130.45578141,3600104.59902173,2109817.76157549,2705245.57602234,1850814.4128745,1236832.63110916,1575028.67043307,1489694.05075434,1849830.05175626,2151406.29540713,1398823.15163158,2398581.0978551,2730044.36996866,2540250.99157086,3002583.07947232,3421264.82072785,3401487.87176955,3318037.94347118,1655235.52480623,2147575.72377003,1721042.34792324,3687881.04500485,3064006.20307905,4315241.8153932,3014788.55423013,2852220.87135882,2374108.84100168,4160258.69498709,2533873.76597289,2311194.30933987,3238464.86787583,3881477.57072333,3778673.33211911,4033320.60580991,3715064.50063752,-3.83512741564118e-10,1.27837580521373e-10,-3.19593951303432e-11,1.91756370782059e-10,-5.11350322085491e-10,-1.27837580521373e-10,5.11350322085491e-10,1.91756370782059e-10,-3.83512741564118e-10,-1.91756370782059e-10,-2.55675161042746e-10,0,1.91756370782059e-10,6.39187902606864e-11,-6.39187902606864e-11,-1.91756370782059e-10,1.91756370782059e-10,6.39187902606864e-11,1.91756370782059e-10,6.39187902606864e-11,1.91756370782059e-10,0,1.27837580521373e-10,-5.11350322085491e-10,5.11350322085491e-10,-3.83512741564118e-10,0,6.39187902606864e-11,-1.27837580521373e-10,0,0,1.27837580521373e-10,2.55675161042745e-10,-3.83512741564118e-10,0,1.91756370782059e-10,0,-6.39187902606864e-11,6.39187902606864e-11,1.27837580521373e-10,-1.27837580521373e-10,0,2.55675161042745e-10,3.83512741564118e-10],"Archive339_field21":[-887.531729525329,-826.022596776809,-217.189428543995,-277.867664019988,-553.475624628644,-817.276218490883,-518.643226263984,-269.370830114194,-579.51931208861,-385.074674199279,-709.060795946626,-419.581894837009,-535.44050249949,-366.197421374724,-251.632416562849,-312.373240624794,-294.281093263889,-368.081155395096,-427.762006415571,-283.0877612633,-476.525579103063,-540.166919445221,-503.746856768725,-595.018934128244,-675.36324258013,-673.037546411374,-655.296226249494,-327.253262852195,-423.542124125053,-340.68670977386,-727.471599147075,-606.552461699989,-845.090680360768,-596.661513851453,-563.724698009045,-469.803855708644,-814.473867620522,-500.092612072114,-456.905784293489,-638.99825828096,-760.932435205649,-745.01331488369,-795.450039724722,-729.84648775704,-887.531729525329,-826.022596776809,-217.189428543995,-277.867664019988,-553.475624628644,-817.276218490883,-518.643226263984,-269.370830114194,-579.51931208861,-385.074674199279,-709.060795946626,-419.581894837009,-535.44050249949,-366.197421374724,-251.632416562849,-312.373240624794,-294.281093263889,-368.081155395096,-427.762006415571,-283.0877612633,-476.525579103063,-540.166919445221,-503.746856768725,-595.018934128244,-675.36324258013,-673.037546411374,-655.296226249493,-327.253262852195,-423.542124125053,-340.68670977386,-727.471599147075,-606.552461699989,-845.090680360768,-596.661513851453,-563.724698009045,-469.803855708644,-814.473867620522,-500.092612072114,-456.905784293489,-638.99825828096,-760.932435205649,-745.01331488369,-795.450039724722,-729.84648775704,-887.531729525329,-826.022596776809,-217.189428543995,-277.867664019988,-553.475624628644,-817.276218490883,-518.643226263984,-269.370830114194,-579.51931208861,-385.074674199279,-709.060795946626,-419.581894837009,-535.44050249949,-366.197421374724,-251.632416562849,-312.373240624794,-294.281093263889,-368.081155395096,-427.762006415571,-283.0877612633,-476.525579103063,-540.166919445221,-503.746856768725,-595.018934128244,-675.36324258013,-673.037546411374,-655.296226249494,-327.253262852195,-423.542124125053,-340.68670977386,-727.471599147075,-606.552461699989,-845.090680360768,-596.661513851453,-563.724698009045,-469.803855708644,-814.473867620522,-500.092612072114,-456.905784293489,-638.99825828096,-760.932435205649,-745.01331488369,-795.450039724722,-729.84648775704],"Archive339_field22":[102.593635037824,95.4835280897947,25.1058663311488,32.1199262662146,63.9786436321006,94.4724963577248,59.9522159040156,31.1377404494052,66.9891462174402,44.5124487078774,81.9634071650408,48.5012877347034,61.8938857851101,42.3303453279398,29.0872804314744,36.1085752521572,34.0172256117473,42.5480942986698,49.4468622465109,32.7233399061175,55.0836547272897,62.4402327821084,58.230280062688,68.7808146320543,78.0681610834174,77.7993237945537,75.7485277889273,37.8286214420203,48.9590677832668,39.3814517295847,84.0915916135114,70.1140250165745,97.6876904233822,68.9706875335377,65.1633783958111,54.3066616195379,94.1485604883046,57.807870097758,52.8157177045909,73.8645751120848,87.9594745166835,86.1193144794669,91.9495138613092,84.3661152696251,102.593635037824,95.4835280897947,25.1058663311488,32.1199262662146,63.9786436321006,94.4724963577248,59.9522159040156,31.1377404494052,66.9891462174402,44.5124487078774,81.9634071650408,48.5012877347034,61.8938857851101,42.3303453279398,29.0872804314744,36.1085752521572,34.0172256117473,42.5480942986698,49.4468622465109,32.7233399061175,55.0836547272897,62.4402327821084,58.230280062688,68.7808146320544,78.0681610834174,77.7993237945537,75.7485277889273,37.8286214420203,48.9590677832668,39.3814517295847,84.0915916135114,70.1140250165745,97.6876904233822,68.9706875335377,65.1633783958111,54.3066616195379,94.1485604883046,57.807870097758,52.8157177045909,73.8645751120848,87.9594745166835,86.1193144794669,91.9495138613092,84.3661152696251,102.593635037824,95.4835280897947,25.1058663311488,32.1199262662146,63.9786436321006,94.4724963577248,59.9522159040156,31.1377404494052,66.9891462174402,44.5124487078774,81.9634071650408,48.5012877347034,61.8938857851101,42.3303453279398,29.0872804314744,36.1085752521572,34.0172256117473,42.5480942986698,49.4468622465109,32.7233399061175,55.0836547272897,62.4402327821084,58.230280062688,68.7808146320543,78.0681610834174,77.7993237945537,75.7485277889273,37.8286214420203,48.9590677832668,39.3814517295847,84.0915916135114,70.1140250165745,97.6876904233822,68.9706875335377,65.1633783958111,54.3066616195379,94.1485604883046,57.807870097758,52.8157177045909,73.8645751120848,87.9594745166835,86.1193144794669,91.9495138613092,84.3661152696251],"Archive339_field23":[990.125364563153,921.506124866604,242.295294875144,309.987590286203,617.454268260744,911.748714848608,578.595442168,300.508570563599,646.50845830605,429.587122907157,791.024203111667,468.083182571713,597.3343882846,408.527766702664,280.719696994324,348.481815876951,328.298318875636,410.629249693766,477.208868662082,315.811101169417,531.609233830353,602.607152227329,561.977136831413,663.799748760298,753.431403663547,750.836870205928,731.044754038421,365.081884294215,472.50119190832,380.068161503445,811.563190760586,676.666486716563,942.778370784151,665.632201384991,628.888076404856,524.110517328182,908.622428108826,557.900482169872,509.72150199808,712.862833393044,848.891909722332,831.132629363157,887.399553586031,814.212603026665,990.125364563153,921.506124866604,242.295294875144,309.987590286203,617.454268260744,911.748714848608,578.595442168,300.508570563599,646.50845830605,429.587122907157,791.024203111667,468.083182571713,597.3343882846,408.527766702664,280.719696994324,348.481815876951,328.298318875636,410.629249693766,477.208868662082,315.811101169417,531.609233830353,602.607152227329,561.977136831413,663.799748760298,753.431403663547,750.836870205928,731.04475403842,365.081884294215,472.50119190832,380.068161503445,811.563190760586,676.666486716563,942.778370784151,665.632201384991,628.888076404856,524.110517328182,908.622428108827,557.900482169872,509.72150199808,712.862833393044,848.891909722332,831.132629363157,887.399553586031,814.212603026665,990.125364563153,921.506124866604,242.295294875144,309.987590286203,617.454268260744,911.748714848608,578.595442168,300.508570563599,646.50845830605,429.587122907157,791.024203111667,468.083182571713,597.3343882846,408.527766702664,280.719696994324,348.481815876951,328.298318875636,410.629249693766,477.208868662082,315.811101169417,531.609233830353,602.607152227329,561.977136831413,663.799748760298,753.431403663547,750.836870205928,731.044754038421,365.081884294215,472.50119190832,380.068161503445,811.563190760586,676.666486716563,942.778370784151,665.632201384991,628.888076404856,524.110517328182,908.622428108826,557.900482169872,509.72150199808,712.862833393044,848.891909722332,831.132629363157,887.399553586031,814.212603026665],"Archive339_field24":[-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6],"Archive339_field25":[0,0,0,0,350.455935291567,0,0,266.854261820782,0,76.3495817657157,651.862842788453,350.859495950396,16.2472530018672,0,897.330293381698,430.01949742216,254.088717280985,271.783959965268,236.340100108727,-565.246231667832,406.049346890329,494.221047697103,207.638282228777,105.642876224117,319.837034093267,0,-304.477431577061,120.838578208847,0,195.155934524517,0,511.5642813084,0,0,-93.3752848071709,-92.8434986916098,0,0,240.691652402436,534.341912839226,336.720080211677,-398.108107351207,497.85841043641,-165.412542092782,0,0,0,0,350.456151894847,0,0,266.854279984125,0,76.3484133095961,651.864766560805,350.860340508773,16.2463565706521,0,897.329964934849,430.019648804444,254.085830752733,271.784215340297,236.340007370321,-565.245841487638,406.049762818626,494.223400092388,207.637801051728,105.642576948407,319.837235420369,0,-304.4790642406,120.838765740029,0,195.158625950886,0,511.564786302078,0,0,-93.3779585136082,-92.8468917226801,0,0,240.694970731154,534.345380481029,336.721510356446,-398.109834110841,497.861830027988,-165.412654414008,0,0,0,0,350.45620094444,0,0,266.854284097922,0,76.3481486956843,651.865202228715,350.860531783084,16.2461535418135,0,897.32989055059,430.019683087991,254.085177060834,271.784273174313,236.339986365855,-565.245753122842,406.049857010704,494.223932820983,207.637692086844,105.642509172748,319.837281015845,0,-304.479433969557,120.838808206594,0,195.15923545845,0,511.564900678385,0,0,-93.3785639917906,-92.8476601045963,0,0,240.695722196237,534.346165754133,336.721834234753,-398.110225165367,497.862604432815,-165.412679857307],"Archive339_field26":[0,0,0,0,5517.92642527896,0,0,7554.53259989502,0,5805.9567578433,2794.1100430278,5484.61324402553,4250.97777097304,0,6922.01287320405,7076.83256829182,3310.49165443673,7015.8291681629,6542.41096377622,6904.441353898,6051.12821782141,4167.4834894885,5643.79469078937,4695.40927209908,3971.53108342266,0,2542.06436338618,6783.66911842132,0,4253.59423142768,0,4647.43468060843,0,0,2125.38042221464,2737.8628510876,0,0,3109.32894083024,2294.52268949989,1981.04995207395,939.91793938904,872.308278771975,2421.69886724653,0,0,0,0,5517.92947144822,0,0,7554.53460120055,0,5805.95809802675,2794.11631225921,5484.61552194192,4250.98069370065,0,6922.01579305436,7076.83258995286,3310.49075264609,7015.83067040693,6542.41300283045,6904.44802903214,6051.13005990606,4167.48619992306,5643.79715370511,4695.41278328878,3971.5350924035,0,2542.06746011748,6783.66876247591,0,4253.59412654721,0,4647.43797643297,0,0,2125.3829622801,2737.86358873117,0,0,3109.33110225735,2294.52679296386,1981.06110950997,939.923634637864,872.315804823595,2421.70694125431,0,0,0,0,5517.93014374366,0,0,7554.5358628482,0,5805.95830894188,2794.11772789094,5484.61621734576,4250.98137514551,0,6922.01761661609,7076.83212793994,3310.49025967546,7015.83101219286,6542.41359152329,6904.45229328523,6051.13042697916,4167.48678309498,5643.79770651266,4695.4135791645,3971.53600037965,0,2542.06815942467,6783.66785852111,0,4253.59369364645,0,4647.43874246088,0,0,2125.38352908609,2737.86377779241,0,0,3109.33165443132,2294.52772483343,1981.06363704983,939.924924775022,872.317510096084,2421.70876977596],"Archive339_field27":[0,0,0,0,5529.04533030795,0,0,7559.2448236487,0,5806.45983469165,2869.14249332901,5495.82554265247,4251.00960607341,0,6979.93367503791,7089.88652802833,3320.22890802785,7021.09289573569,6546.67974716648,6927.54063089891,6064.73752120321,4196.68668513594,5647.61396510202,4696.59835241677,3984.38946536812,0,2560.23433795277,6784.74635164937,0,4258.06951763459,0,4675.50582399989,0,0,2127.43097400462,2739.43708473984,0,0,3118.63149508698,2355.91967786191,2009.46269406619,1020.75271083667,1004.38294097775,2427.34178805791,0,0,0,0,5529.04761368488,0,0,7559.24664571181,0,5806.46068160501,2869.14953657769,5495.82737120843,4251.01187375235,0,6979.93639530199,7089.88618457628,3320.2278761224,7021.09387758819,6546.68129758694,6927.5470844914,6064.73888130626,4196.68897768284,5647.61577839157,4696.60118045939,3984.39291332291,0,2560.23721915404,6784.74541059197,0,4258.06932510439,0,4675.50847009784,0,0,2127.43330322596,2739.43763429037,0,0,3118.63336769094,2355.92456610314,2009.48431917949,1020.76432167671,1004.40111855026,2427.3535192161,0,0,0,0,5529.04808025429,0,0,7559.24776310465,0,5806.46054778844,2869.15688492406,5495.82770700484,4251.01244240283,0,6979.93807436194,7089.88543253654,3320.22742882359,7021.09381444105,6546.68150686414,6927.55120565939,6064.73891869122,4196.68975401483,5647.61600221028,4696.60190226338,3984.39419168998,0,2560.23889497838,6784.74415414597,0,4258.06874491239,0,4675.50915434931,0,0,2127.43512755706,2739.43769383258,0,0,3118.63418950283,2355.92935091513,2009.52549744568,1020.78702436889,1004.43894607007,2427.37188246718],"Archive339_field28":[8906940.05077627,8289657.15289125,2179632.74477897,2788577.06506892,5554476.58279196,8201881.73657366,5204911.52079163,2703305.98381891,5815841.39397582,3864466.95263451,7115871.79562584,4210768.65128314,5373482.77009896,3675021.82787082,2525289.82863063,3134862.2648114,2953296.16799188,3693926.28551769,4292861.22444429,2840964.02956681,4782234.39741407,5420915.34179204,5055417.06819392,5971389.86590543,6777695.61813443,6754355.79189238,6576310.4670362,3284192.66227737,4250512.04713311,3419005.76520785,7300635.80454836,6087136.08121026,8481017.38454894,5987874.18825306,5657332.49108051,4714777.66846534,8173758.38010854,5018744.42048927,4585337.39602927,6412750.09075215,7636436.37472287,7476677.97324621,7982842.28216261,7324469.30792918,4453470.02538814,4144828.57644562,1089816.37238949,1394288.53253446,2777238.29139598,4100940.86828683,2602455.76039581,1351652.99190945,2907920.69698791,1932233.47631726,3557935.89781292,2105384.32564157,2686741.38504948,1837510.91393541,1262644.91431531,1567431.1324057,1476648.08399594,1846963.14275885,2146430.61222215,1420482.0147834,2391117.19870704,2710457.67089602,2527708.53409696,2985694.93295271,3388847.80906721,3377177.89594619,3288155.2335181,1642096.33113868,2125256.02356655,1709502.88260392,3650317.90227418,3043568.04060513,4240508.69227447,2993937.09412653,2828666.24554026,2357388.83423267,4086879.19005427,2509372.21024464,2292668.69801463,3206375.04537607,3818218.18736143,3738338.98662311,3991421.1410813,3662234.65396459,1.27837580521373e-10,1.27837580521373e-10,0,6.39187902606864e-11,3.83512741564118e-10,3.83512741564118e-10,1.27837580521373e-10,1.59796975651716e-10,1.27837580521373e-10,1.27837580521373e-10,5.11350322085491e-10,-1.27837580521373e-10,-4.47431531824805e-10,6.39187902606864e-11,-3.19593951303432e-11,6.39187902606864e-11,-1.27837580521373e-10,6.39187902606864e-11,-1.91756370782059e-10,-1.91756370782059e-10,-1.27837580521373e-10,0,-6.39187902606864e-11,1.27837580521373e-10,1.27837580521373e-10,2.55675161042745e-10,0,-1.91756370782059e-10,1.27837580521373e-10,6.39187902606864e-11,1.27837580521373e-10,1.27837580521373e-10,3.83512741564118e-10,1.27837580521373e-10,-2.55675161042745e-10,0,0,-6.39187902606864e-11,6.39187902606864e-11,-5.11350322085491e-10,2.55675161042745e-10,3.83512741564118e-10,-3.83512741564118e-10,1.27837580521373e-10],"Archive339_field29":[-881.084387577513,-819.99398319491,-216.771234723592,-277.159179790954,-550.331858819265,-800.363892097402,-514.664851659984,-273.369026820696,-574.858493274047,-383.33207893562,-700.929831805358,-418.29125267668,-531.69261503613,-363.449629984356,-255.662380628546,-311.148559075,-291.914140918688,-367.381584732211,-426.420460721831,-285.908480382576,-474.809730431272,-536.209461725844,-501.122918735837,-591.321396650397,-668.747786721012,-668.25025358055,-649.365134754494,-325.213139464126,-419.087505851732,-338.472930390369,-720.257433704462,-602.27733135616,-831.220624985739,-592.5256182787,-559.040083105773,-466.414853080436,-800.910404439873,-495.33993853082,-453.187200944805,-632.694101076412,-749.057960027585,-737.294371435691,-787.423615796145,-719.778801420076,-881.084387577513,-819.99398319491,-216.771234723592,-277.159179790954,-550.331858819265,-800.363892097402,-514.664851659984,-273.369026820696,-574.858493274047,-383.33207893562,-700.929831805358,-418.29125267668,-531.69261503613,-363.449629984356,-255.662380628546,-311.148559075,-291.914140918688,-367.381584732211,-426.420460721831,-285.908480382576,-474.809730431272,-536.209461725844,-501.122918735837,-591.321396650397,-668.747786721012,-668.25025358055,-649.365134754493,-325.213139464126,-419.087505851731,-338.472930390369,-720.257433704462,-602.27733135616,-831.220624985739,-592.5256182787,-559.040083105773,-466.414853080436,-800.910404439872,-495.33993853082,-453.187200944806,-632.694101076412,-749.057960027585,-737.294371435691,-787.423615796145,-719.778801420076,-881.084387577513,-819.99398319491,-216.771234723592,-277.159179790954,-550.331858819265,-800.363892097402,-514.664851659984,-273.369026820696,-574.858493274047,-383.33207893562,-700.929831805358,-418.29125267668,-531.69261503613,-363.449629984356,-255.662380628546,-311.148559075,-291.914140918688,-367.381584732211,-426.420460721831,-285.908480382576,-474.809730431272,-536.209461725844,-501.122918735837,-591.321396650397,-668.747786721012,-668.25025358055,-649.365134754494,-325.213139464126,-419.087505851732,-338.472930390369,-720.257433704462,-602.27733135616,-831.220624985739,-592.5256182787,-559.040083105773,-466.414853080436,-800.910404439873,-495.33993853082,-453.187200944805,-632.694101076412,-749.057960027585,-737.294371435691,-787.423615796145,-719.778801420076],"Archive339_field30":[101.848358869374,94.7866545459766,25.0575254969474,32.038029506915,63.6152421317798,92.5175273307793,59.4923383598237,31.5999093162418,66.4503819924199,44.3110145770728,81.0235138182857,48.3520968197689,61.4606512473607,42.0127162250182,29.5531214248919,35.9670090097601,33.7436193428364,42.4672278970713,49.2917871717711,33.0493990409521,54.885312350834,61.9827731111663,57.9269677055602,68.3534002671124,77.3034519001388,77.2459398904452,75.0629272453395,37.5927947472163,48.4441391715197,39.1255513864549,83.2576749974624,69.6198441916609,96.0843906744693,68.4926014586066,64.6218634778756,53.9149121336164,92.5807010584804,57.2584879872049,52.3858705563243,73.135850288004,86.5868525222726,85.2270483884223,91.0217047703287,83.2023478195507,101.848358869374,94.7866545459766,25.0575254969474,32.038029506915,63.6152421317798,92.5175273307793,59.4923383598237,31.5999093162418,66.4503819924199,44.3110145770728,81.0235138182857,48.3520968197689,61.4606512473607,42.0127162250182,29.5531214248919,35.9670090097601,33.7436193428364,42.4672278970713,49.2917871717711,33.0493990409521,54.885312350834,61.9827731111663,57.9269677055602,68.3534002671124,77.3034519001388,77.2459398904452,75.0629272453395,37.5927947472163,48.4441391715197,39.1255513864549,83.2576749974624,69.6198441916608,96.0843906744693,68.4926014586066,64.6218634778756,53.9149121336164,92.5807010584804,57.2584879872049,52.3858705563243,73.135850288004,86.5868525222726,85.2270483884223,91.0217047703287,83.2023478195507,101.848358869374,94.7866545459766,25.0575254969474,32.038029506915,63.6152421317798,92.5175273307793,59.4923383598237,31.5999093162418,66.4503819924199,44.3110145770728,81.0235138182857,48.3520968197689,61.4606512473607,42.0127162250182,29.5531214248919,35.9670090097601,33.7436193428364,42.4672278970713,49.2917871717711,33.0493990409521,54.885312350834,61.9827731111663,57.9269677055602,68.3534002671124,77.3034519001388,77.2459398904452,75.0629272453395,37.5927947472163,48.4441391715197,39.1255513864549,83.2576749974624,69.6198441916609,96.0843906744693,68.4926014586066,64.6218634778756,53.9149121336164,92.5807010584804,57.2584879872049,52.3858705563243,73.135850288004,86.5868525222726,85.2270483884223,91.0217047703287,83.2023478195507],"Archive339_field31":[982.932746446887,914.780637740887,241.82876022054,309.197209297869,613.947100951044,892.881419428181,574.157190019808,304.968936136938,641.308875266467,427.643093512693,781.953345623644,466.643349496448,593.153266283491,405.462346209374,285.215502053438,347.115568084761,325.657760261524,409.848812629282,475.712247893602,318.957879423528,529.695042782106,598.19223483701,559.049886441397,659.674796917509,746.05123862115,745.496193470995,724.428061999833,362.805934211342,467.531645023251,377.598481776824,803.515108701925,671.897175547821,927.305015660208,661.018219737307,623.661946583649,520.329765214052,893.491105498353,552.598426518025,505.57307150113,705.829951364416,835.644812549857,822.521419824113,878.445320566474,802.981149239626,982.932746446887,914.780637740887,241.82876022054,309.197209297869,613.947100951044,892.881419428181,574.157190019808,304.968936136938,641.308875266467,427.643093512693,781.953345623644,466.643349496448,593.15326628349,405.462346209374,285.215502053438,347.115568084761,325.657760261524,409.848812629282,475.712247893602,318.957879423528,529.695042782106,598.19223483701,559.049886441397,659.674796917509,746.05123862115,745.496193470995,724.428061999833,362.805934211342,467.531645023251,377.598481776824,803.515108701925,671.897175547821,927.305015660208,661.018219737307,623.661946583649,520.329765214052,893.491105498353,552.598426518025,505.57307150113,705.829951364416,835.644812549857,822.521419824113,878.445320566474,802.981149239626,982.932746446887,914.780637740887,241.82876022054,309.197209297869,613.947100951044,892.881419428181,574.157190019808,304.968936136938,641.308875266467,427.643093512693,781.953345623644,466.643349496448,593.153266283491,405.462346209374,285.215502053438,347.115568084761,325.657760261524,409.848812629282,475.712247893602,318.957879423528,529.695042782106,598.19223483701,559.049886441397,659.674796917509,746.05123862115,745.496193470995,724.428061999833,362.805934211342,467.531645023251,377.598481776824,803.515108701925,671.897175547821,927.305015660208,661.018219737307,623.661946583649,520.329765214052,893.491105498353,552.598426518025,505.57307150113,705.829951364416,835.644812549857,822.521419824113,878.445320566474,802.981149239626],"Archive339_field32":[-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6,-3.6]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive340.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive340.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive340.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive340_field1":[-466.900626124975,-1.4571626093765e-07,-221.103736164544,410.869368550467,-3647.24468576817,-656.425138594207,140.832814870183,174.761398344755,-550.532236971128,-5418.42719252123,-7321.50660896999,0,1929.31490795243,4355.75455061622,225.865996904291,718.143937565889,-3866.66701986685,-3079.09410248719,3101.7619531517,-222.475953316906,-220.383286009945,-897.571588437954,-461.011388909887,-467.420585307775,415.384088087427,406.423011073782,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive340_field2":[29609644.3525263,2481908.021614,1314302.39971204,108268.925657279,0,0,0,0,0],"Archive340_field3":[21.5003715527332,20.0000000000159,21.1418663717518,18.5635536561863,31.4409185630391,21.8608942750953,23.5512134289942,19.8775513480984,17.2713717305265,43.6879481221256,34.7394308906845,1,38.840739228472,27.6180828171423,20.4639200338707,20.9932425755376,18.9320711775455,4.71968323508437,26.4365537022775,21.143248024248,21.1412755330728,22.7107563784022,21.4920779555766,21.5026916955076,18.5572175992522,18.5687459145412,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"Archive340_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4272990.75,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2136495.375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive340_field5":[0,0,0,0,78.7685135344183,0,0,0,0,39.0665713908334,94.4526289057331,163.56568406074,47.7415793490141,63.9033663766628,0,0,92.5113954362751,144.032967561931,46.5228057635952,0,0,69.0391654081233,0,0,0,0,0,0,0,0,78.7691900605864,0,0,0,0,39.0669747653635,94.455321522581,163.565792920812,47.7420827136068,63.90409405976,0,0,92.5122315856756,144.033073388388,46.523267719314,0,0,69.0395471877346,0,0,0,0,0,0,0,0,78.7694170297762,0,0,0,0,39.0671542549279,94.4564729700685,163.565891290314,47.7423146699055,63.9044981073813,0,0,92.5125232755779,144.033100434919,46.5234558731638,0,0,69.0397190499731,0,0,0,0],"Archive340_field6":[0,0,0,0,2.6511919555064,0,0,0,0,10.8255030271807,17.4979269854797,2.56864344813661,2.96960485957295,-0.40437405613148,0,0,-0.344535578381949,-0.522088127145426,2.28395877868477,0,0,9.84407223044742,0,0,0,0,0,0,0,0,2.65118354782441,0,0,0,0,10.8256016870166,17.498410493394,2.56866534382836,2.96962369499722,-0.404380567139215,0,0,-0.34460966475673,-0.522103233122228,2.28393525934382,0,0,9.84408845582184,0,0,0,0,0,0,0,0,2.65118399611278,0,0,0,0,10.8256361388756,17.4985625163647,2.56867069133474,2.96963173237246,-0.40438264003317,0,0,-0.344628489047045,-0.522110181042183,2.28393213795098,0,0,9.84409773603227,0,0,0,0],"Archive340_field7":[0,0,0,0,78.7238683572665,0,0,0,0,37.5367139909224,92.8176606975951,163.545481469821,47.6491231885041,63.902074380892,0,0,92.510735667873,144.031992997871,46.4666991504512,0,0,68.3337303999068,0,0,0,0,0,0,0,0,78.7245446869463,0,0,0,0,37.5370757446203,92.8202773837835,163.545542426537,47.6495856163234,63.9027855514936,0,0,92.5115897373596,144.032121510775,46.4671695031951,0,0,68.3340829533355,0,0,0,0,0,0,0,0,78.7247708835122,0,0,0,0,37.5372009454206,92.8211233316503,163.545571975068,47.6497446855857,63.9030134623663,0,0,92.5118646272408,144.032153773206,46.4673217073154,0,0,68.3342068613596,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive341.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive341.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive341.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive341_field1":[-8410.33193095261,-1.32354605553357e-07,-2866.80115234679,7291.46648429644,-24205.3783573194,-1494.79043146621,-10303.7403095515,4475.18683672114,13609.4795103189,-74484.2797844423,-75464.1418269692,99305.6456529426,-55942.3990380812,8210.28125412594,-1768.15406061551,-930.623065177453,46168.4619683339,86360.5336192054,-19944.1064204958,-2882.32210618925,-2860.98723350062,-5570.47823519658,-8334.83224917784,-8437.9347770479,7349.91399124686,7246.75507860933,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive341_field2":[20.8880060752279,20.0000000000025,20.958134961788,19.0780728378198,30.3728347822388,21.8700994392505,22.8996976127496,20.2311745688576,18.1957296429312,38.8585915110556,29.2064454557177,4.79508330446735,35.3593780935815,28.6548806036707,20.3560946027885,20.9674514527501,22.9770735498283,11.0387362950885,25.2532051196389,20.9585991826515,20.9579909035131,22.4568799014948,20.8863363943803,20.8889058052315,19.0767282607887,19.0789587029062,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"Archive341_field3":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4272990.75,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2136495.375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive341_field4":[0,0,0,0,78.3465610740368,0,0,0,0,46.7817886284802,97.2311473735828,139.617347455611,53.3495880160201,64.4252280879071,0,0,87.1919294387857,126.644156118376,50.341748477782,0,0,69.2830228322286,0,0,0,0,0,0,0,0,78.3470544552271,0,0,0,0,46.7821900809616,97.2332122301488,139.617526407358,53.3499890166967,64.425916116435,0,0,87.1928429882372,126.644426836841,50.3422013766539,0,0,69.2833403022873,0,0,0,0,0,0,0,0,78.3472184166128,0,0,0,0,46.7823698969145,97.2341211007073,139.617638526121,53.3501773213164,64.4263049277077,0,0,87.1931532384881,126.644507179709,50.3423877987329,0,0,69.2834907195512,0,0,0,0],"Archive341_field5":[0,0,0,0,4.38375149970189,0,0,0,0,12.1582765424778,17.6662061281088,2.24677635225516,3.92118445098102,1.27700242773541,0,0,3.12177021796151,2.70852251308079,2.63305971044243,0,0,10.2005032638383,0,0,0,0,0,0,0,0,4.38375325631216,0,0,0,0,12.1583675699469,17.6665921053565,2.2467979243814,3.92120202511493,1.27701665337284,0,0,3.12174505838063,2.70851895046211,2.6330375118618,0,0,10.2005207644173,0,0,0,0,0,0,0,0,4.38375620185226,0,0,0,0,12.1583996081994,17.6667123497498,2.24680332560451,3.9212094771275,1.27702113726544,0,0,3.12174202702837,2.70851638162437,2.63303479575929,0,0,10.2005294987204,0,0,0,0],"Archive341_field6":[0,0,0,0,78.2238065981227,0,0,0,0,45.1742317201241,95.612747304325,139.599240718257,53.2052790892206,64.4125580842932,0,0,87.1360091991344,126.615164360032,50.2728319357963,0,0,68.5279875785005,0,0,0,0,0,0,0,0,78.2243017116911,0,0,0,0,45.1745919769914,95.6147541834795,139.599379067512,53.2056432559552,64.4132304619999,0,0,87.1369410965413,126.615448630757,50.2732941084568,0,0,68.5282746617447,0,0,0,0,0,0,0,0,78.2244667848623,0,0,0,0,45.1747169307217,95.6153999283834,139.59943299956,53.2057687727418,64.4134459898854,0,0,87.1372438537857,126.615537374512,50.273443355447,0,0,68.5283762328889,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive342.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive342.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive342.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive342_field1":[272.268459109,272.330135802635,258.100483622995,259.762097081367,272.348686197453,272.29937546093,266.440578906563,259.823334299049,267.771445174856,263.722032421986,270.855031264475,264.384212920394,267.201602573892,271.086695213601,271.162053915509,272.314763526043,270.618301097891,268.316961604827,269.269944590153,263.836621557961,266.542569465301,262.176684206143,258.77260557646,266.281042326159,270.826845508971,272.283902740695,259.64087410025,262.911861431088,262.613089951593,255.554784591529,256.396312066248,261.476054012653,263.153516762494,259.781037739458,256.62442329015,260.417694168952,258.45201300015,261.654744147708,258.773384935925,260.102457132078,261.955353274691,261.99947505443,262.84699528156,261.771890471212,260.573577202325,261.095920196901,258.442654453411,259.799238791376,257.602785708996,255.919857895403,259.706909844147,261.766622429233,262.92195536438,256.364652273758,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive342_field2":[0.00105497528118514,0.000214030780655806,9.0207481588192e-20,9.15821615655379e-20,9.8260408293179e-12,0.00139878969251366,3.65214191639072e-12,2.07331210220497e-19,1.54366186343429e-11,-1.38652917631363e-15,-2.30570683420214e-07,-1.31787891691419e-15,8.71810375815745e-12,-1.30580707583383e-07,-5.8587518594176e-08,0.000830588586572841,-8.19233040991395e-08,1.49035860268086e-11,-4.86458141111837e-08,-2.95320012712874e-16,-1.01987305723625e-15,-1.14028526066916e-16,8.66379456922717e-20,-6.1380508801274e-16,-3.29494486706324e-08,0.00123699297638976,8.23477977895452e-20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive342_field3":[0.0542789722075975,0.0542789722075975,0.0542789722075975,0.0542789722075975,0.119032879924764,0.0547537751986118,0.0547537751986118,0.0547537751986118,0.0547537751986118,0.0560432603596813,0.0560432603596813,0.0560432603596813,0.0586372588385054,0.0576282179205021,0.0545337903637817,0.0545337903637817,0.0613986551150107,0.0599738953128043,0.0558858536028222,0.0545337903637817,0.0559461217363656,0.0545337903637817,0.0545337903637817,0.0586372588385054,0.0545337903637817,0.0545337903637817,0.0545337903637817,0.0542789722075975,0.0542789722075975,0.0542789722075975,0.0542789722075975,0.119032879924764,0.0547537751986118,0.0547537751986118,0.0547537751986118,0.0547537751986118,0.0560432603596813,0.0560432603596813,0.0560432603596813,0.0586372588385054,0.0576282179205021,0.0545337903637817,0.0545337903637817,0.0613986551150107,0.0599738953128043,0.0558858536028221,0.0545337903637817,0.0559461217363656,0.0545337903637817,0.0545337903637817,0.0586372588385055,0.0545337903637817,0.0545337903637817,0.0545337903637817,0.0542789722075975,0.0542789722075975,0.0542789722075975,0.0542789722075975,0.119032879924764,0.0547537751986118,0.0547537751986118,0.0547537751986118,0.0547537751986118,0.0560432603596813,0.0560432603596813,0.0560432603596813,0.0586372588385054,0.0576282179205021,0.0545337903637817,0.0545337903637817,0.0613986551150107,0.0599738953128043,0.0558858536028222,0.0545337903637817,0.0559461217363656,0.0545337903637817,0.0545337903637817,0.0586372588385054,0.0545337903637817,0.0545337903637817,0.0545337903637817]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive350.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive350.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive350.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive350_field1":[20,0,0,20,14.5961573950579,10,0,10,26.700377783098,5.10810590792773,15,15,5.38634201502389,0,5,7.5,2.50368269650575,5,7.5,8.75,7.5,6.25,6.25,5.625,2.5,4.140625,6.25,4.98697916666667,3.75,4.34467308128168,3.75,5.25911594397997,5.82623262278997,7.66404900309499,6.62247727705314,2.57827579801447,3.75136120456852,4.40795447436562,2.45525712987451,3.72781975518656,4.99790318000682,0,6.33561500134025,2.2219042283941,5.40591509303947,5.20468507023525,2.70719113704601,0,1.21051747446546,1.50695982575643,3.31796969221028,0,6.88588036141387,3.32220247685653,1.14738543189343,5.84492225577793,6.457984401329,8.62476728267895,5.93544121890634,3.91423077538863,2.86771349342717,1.62904269285682,3.3793006838985,4.47836781637824,4.01881088902283,1.95575436018968,0,5.06891290501582,0,4.16929547522199,4.16395213082569,0,2.1724532095366,3.04357642337495,3.20973822153818,2.54302137802179,2.6251697829833,1.55954626292107,3.15262129421277,4.74564713997355,3.74902779976413,5.04614768677172,3.35022337847532,3.26201217999995,0,1.59630756203285,0,1.12536447981968,1.03089991750523,0,1.23138206376045,0.942787852226535,1.93803894160041,8.75,15,7.36786695079353,9.42985409745041,8.47972733425183,8.4541312145369,9.28656431574753,9.95478337197921,10.8892595932312,10.1453912878329,12.5,8.91978359669761,11.25,11.875,9.53216582998374,10.5792505538375,12.8510598179908,11.7084581422781,12.5628325536363,11.8698435727452,13.3311584831983,11.3666378033346,14.3496246463281,13.41153287528,14.1572101582462,10.2303077422426,8.04946780653239,10.8902733078275,13.75,20,13.4504485206747,9.80436307510627,11.4733800564307,9.01141337634382,10.7805179053999,12.3358299053348,8.81688464826903,7.70218697018457,6.77084389781817,7.32105964570354,15.697644700193,13.3557944207564,6.71815712921995,7.31469697739248,9.48942228086489,8.74466998968343,10.5280076863334,7.27919488292682,7.00586012380988,5.80751669734905,8.28085515645278,8.63857665791926,10.0573083305465,10.1276638863469,11.560703828687,11.7506640479404,5.12536558925415,6.29671803407434,4.80137727144639,11.9735990091198,12.8409200749074,7.46018907817506,8.12438248716035,8.08590880611187,9.9059526297571,6.7355935232256,13.1040005839835,13.3352750715132,12.9834089817442,12.602162922095,13.1722669859363,14.620198508015,12.7571917773287,13.7619854312588,12.8928737612211,15.0785135862914,13.6184691759199,14.5442155175732,16.6146250459037,15.5175733426414,20,16.1949872738226,15.5871441124816,14.7527202098661,5.64293308632899,5.45377675667696,4.5091220526003,5.84381614626446,4.23536838396552,7.09273309097139,2.55718264090413,4.36738347151991,2.33060444749241,3.14438686365967,3.36773377505369,2.00857051138308,3.81485391144597,2.58885300837474,1.28313025232171,1.3361932233477,0,0.902307741695751,1.34017151781399,12.0313338575921,12.4857424637027,15.8283667746323,9.1309711897536,7.5,14.1511735900323,15.6011344008128,16.5344708124149,14.8950303630302,21.7378148204928,17.332324474813,13.554102334556,17.9881413301814,8.22149737820414,9.27366497648874,7.83050130823139,5.62488977328324,6.38077349214368,6.25,13.4615486539426,14.4246098367022,13.1979813674907,16.3421921104561,13.9597887200322,15.462417137446,16.4958698702529,15.3367866588078,16.6733639867262,14.0144527826912,15,12.0773575611693,13.0250991787521,13.1296726145361,8.75,9.375,12.5,11.25,10.3974538510696,10.2648953189791,11.25,11.6249283619927,13.1737798073368,15.6961826019502,20,10.4978707180245,10.9919389592805,10.7461795228658,10.7563443276849,11.3930444869719,11.8592832564786,17.8640495038351,16.8652816088492,17.5,18.2303158632301,16.4990152494542,0,1.06390635370377,1.88762753686319,14.7105887315025,16.25,16.875,18.5969978803665,15.7964640790388,17.5725451291852,15.3931039314725,11.0681124833409,8.10021014036175,0,16.1652776966327,17.1206563053207,15.822041839381,16.9199375578086,20,18.5806163305604,15.7121197519432,14.3968234796873,16.1476255160058,17.5,15.0153682037427,17.1947297538152,14.1777459453505,13.7326891353404,12.7177381903814,14.0804436436811,18.4796999354339,16.25,15.625,16.875,17.9424542277652,18.75,20,18.9913308871669,13.75,11.9956278067966,11.9701504681168,12.7373447965104,18.0253565142649,20,19.2091542351544,13.3863506492238,19.1385946401529,17.8666105216957,18.8508587410809,27.0532266065519,20,20.8145237127219,18.7160220363863,18.7592012052108,17.1235712261687,17.6123900090103,22.174121356616,20,21.9141607877598,19.5566271436485,18.6079322363161,19.12080364977,19.1247483658888,18.128713513693,19.3884640525387,17.6450417720987,17.2104234133128,17.5122410917309,20,19.0273678554179,18.9268122416424,18.0087296836582,6.81931409926015,16.1136741324377,15.7349787852655,11.9809919025357,9.70665906873839,10.6272057588967,20,19.1774400276939,18.9808284202546,18.543913052772,18.75,20,2.84412202380953,1.25,1.25,1.96684592934531,1.25814621496713,0],"Archive350_field2":[0.00918569181009693,0.0091966739451426,0.00931561722691295,0.00917858455787906,0.00919189904992347,0.00918493608341825,0.00918546940747682,0.00918770273098618,0.00918546940747682,0.00918660876134971,0.00918546940747682,0.00918546940747682,0.00918554677595187,0.00918546940747682,0.00920810193077879,0.00918688522122354,0.00918551606300339,0.00918546940747682,0.00918490442388963,0.00918546940747682,0.00918546940747682,0.00918550385975066,0.00918554015074387,0.00918547068976223,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546220882249,0.00918546752407595,0.00918546940747682,0.00918546940747682,0.00918546379102963,0.00918546898268163,0.00918546498465982,0.00918537155861314,0.00918553061105924,0.00918546940747682,0.00918545972573008,0.00918413183975949,0.00918536521782051,0.00918718046138056,0.00918574890392239,0.0091854459193301,0.00918546483207017,0.00918580234020732,0.00918544913846221,0.00918783516683665,0.00918546940747682,0.00919221123566998,0.00918605882003556,0.00919185758738436,0.00918804905964246,0.00918720916721479,0.00918909647513498,0.00918715382200726,0.0091896089292127,0.00918974443169213,0.00918695545537234,0.00918659921999676,0.00918777720224582,0.0091892216597937,0.00918938210156168,0.00919189143694204,0.00918997655152592,0.00918864557016926,0.00919533828435894,0.00919273253259745,0.00918888305591031,0.00919104791136144,0.00919426199821394,0.00919899422281453,0.00919529782391953,0.00919050399620121,0.0091877843799039,0.00918702437225722,0.00918867390475548,0.00918859105111315,0.00918896725925918,0.00918784954379077,0.00918582187611017,0.00918574136006702,0.00919389368165746,0.00918633464383957,0.00919777340766626,0.00919434962404454,0.00919040898241326,0.0091858133472353,0.00918575154001243,0.0091948443213685,0.00919912894236207,0.00919573042166141,0.00920523840264004,0.00919959894009291,0.00920813015737759,0.00918891530319754,0.00919087970923448,0.00919310091877705,0.00919106782734446,0.00919038241509211,0.00918988325294744,0.00919255187824358,0.00918833640387283,0.00919075515703362,0.00919103999641039,0.00919465904088526,0.00919250039360061,0.00918998976243367,0.00919178143247646,0.00918721376930419,0.00918765504207068,0.00919745868988512,0.00918655635688499,0.00919368308317712,0.0092017521269042,0.00919391913436348,0.00919131262763084,0.00919620487578419,0.00919090383250718,0.00919179438994945,0.00918874302007671,0.00918911740913623,0.00919133403039183,0.00919020265035568,0.0091900562003667,0.00919213802032783,0.00919054317975604,0.00919162032761377,0.00918984289630715,0.00918863949134264,0.0091901655036996,0.00918850255346607,0.00919131908515607,0.00918979627443721,0.00919746506246813,0.0091896943638765,0.00919093558277207,0.00918936706158958,0.00918737824082685,0.00918906969149644,0.0091881758917445,0.00918961866392785,0.00918848482574339,0.00918790585442977,0.00918724806556598,0.00918774986917349,0.00918967643655242,0.00918894922644905,0.00918882120269506,0.00918902197583591,0.0091896907725688,0.00918883015822182,0.00918892610534664,0.00918815389985805,0.00918836561765675,0.00918904520901257,0.0091897629153004,0.00918896320409855,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918452164839371,0.00918546940747682,0.00918535018947626,0.00918546940747682,0.00918435066017673,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918548220103211,0.00918546940747682,0.00918546940747682,0.00918295166658368,0.00918546940747682,0.00918581288452882,0.00918546940747682,0.00918546940747682,0.00918545956980083,0.00918546940747682,0.00918232650320569,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.0091854671664119,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00923061111706223,0.00920343628607825,0.00919029526941553,0.00919211534248377,0.00918546940747682,0.00918546940747682,0.00917317968703346,0.00918546940747682,0.00918546940747682,0.00919326745045405,0.00918544506418745,0.00919967644348187,0.00917525923510773,0.00919364080789218,0.00936539354474128,0.00919615752061826,0.00919083462649116,0.00918789973926498,0.00918546940747682,0.00919674376068472,0.00922362308346702,0.00919905237407766,0.00919985096907502,0.00920722885707437,0.00919313414949941,0.00919088288285915,0.00919681432406112,0.00920515230775047,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918691850897847,0.00918710414586886,0.00922359859294816,0.009204089274712,0.00924196989325899,0.00919103453651496,0.00923292468309946,0.00920385964620275,0.00922529814925717,0.00938098637424518,0.00919753135355117,0.0091933772582221,0.00920619686959793,0.00919605989329897,0.00919508062859396,0.00919229931667447,0.00920228760826021,0.00920081105081964,0.00922246843546561,0.0091891722450961,0.00921645436606769,0.0094000668627424,0.0092116063706408,0.00922521365420766,0.00921456569646972,0.00920392237413761,0.0092430169024369,0.00918126544093443,0.00919322668447868,0.00919485138222129,0.00919369029315896,0.00919237607002416,0.00919058907868938,0.00919276407032707,0.00933357467035772,0.00920658481308772,0.00919241055250526,0.00917292283116337,0.00918562251404907,0.00919281944629059,0.00918423838364122,0.00918850400691623,0.00919051155319402,0.00918742863448003,0.00920396867576282,0.00918546940747682,0.00918469107764219,0.00919066667180185,0.00928538837348173,0.00918013988131911,0.00917707421871217,0.00917483859876105,0.00918504428692004,0.00916993710885965,0.00918156872043804,0.00918546940747682,0.00917139964548275,0.00919186278830312,0.00917936809912085,0.00918528689417085,0.00917314648394353,0.00918547254782945,0.00917514455914218,0.00917946730398313,0.00916973256686137,0.00918214513699139,0.00918546940747682,0.00918538042519462,0.00918535053962539,0.00918383784043598,0.00917731293695608,0.00918544827460365,0.00918546940747682,0.00918551737850653,0.00918541337471242,0.00918572874995952,0.00932018420271621,0.00918097699945683,0.00918546940747682,0.00918553312028017,0.00918542571626038,0.00918548416325255,0.00918546028077384,0.00918795897111608,0.00918898751494497,0.00918630386520755,0.00918824447600157,0.00918837620253024,0.00918734775529931,0.00918564015750224,0.00918691639737014,0.00918533430778147,0.00918712022022536,0.00918423101642324,0.00918545640208607,0.00918646809070131,0.0091861954025321,0.00918677547018349,0.00918695369173152,0.00918776821511282,0.00918670859777366,0.009187504202457,0.00918621325811286,0.00918719884136115,0.00918718711750483,0.00918804260823801,0.00918710989321844,0.00918546516411805,0.00918691593824082,0.00918687716016826,0.00918697890530134,0.00918728146407015,0.0091873647847823,0.00918764444868818,0.00918731041453631,0.0091871056996011,0.00918756038695235,0.00919294831270473,0.00918027909103335,0.00918268630408455,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918282083189213,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918602359382585,0.00918546940747682,0.00917466848137078,0.00918546940747682,0.00918680729685456,0.00918546940747682,0.00918546940747682,0.00918546220340018,0.00921863675463563,0.00930819229304159,0.00918444430703015,0.00918546940747682,0.00918546940747682,0.00918545293925091,0.00918407872818974,0.00918351543093622,0.00918527378345077,0.00918499599481515,0.00918529908785477,0.00918544558221595,0.00918546940747682,0.00918442515910931,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00917599552088947,0.00918546940747682,0.00961606960020223,0.00918544648996341,0.0091822870869122,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00921102404016018,0.00918545082102642,0.00917640365354419,0.00918546940747682,0.00918546940747682,0.00918112317932654,0.00918546940747682,0.00918398253416272,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546938213321,0.00918523794982779,0.00918544256085959,0.00918546940747682,0.00918541384527747,0.00916853506952997,0.00917424410801456,0.00918546940747682,0.00918546940747682,0.00918012647522671,0.00918546940747682,0.00918546940747682,0.00918321563433758,0.00918546998914495,0.00918546940747682,0.00918545111539182,0.00919047860191576,0.00918017539035001,0.00918291084919555,0.00918823369011227,0.00919089186460344,0.00918414948864539,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918829559479582,0.00918883875525365,0.00919003544573965,0.00918926709947923,0.00918913660545869,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546699848465,0.00918136546772788,0.00920763365933658,0.00920497298545289,0.00918546940747682,0.00918707909310172,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.0091847525070478,0.00929039366016313,0.00931224008640531,0.00918546940747682,0.00921421659587724,0.00970794134291823,0.00924699045214377,0.0097462031154092,0.0091855503502459,0.0096319240909748,0.00918546940747682,0.00918546940747682,0.00918693352756409,0.00918571678784629,0.00918546940747682,0.00938200974197994,0.00939490070109103,0.00923636836130647,0.00919994329272207,0.00936112137252762,0.00955155490321198,0.00959630865023296,0.00918547370987542,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00923755198571491,0.00919443236149721,0.00918546940747682,0.0091854975667655,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918544774134938,0.00918425824715848,0.00918554723771342,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918532964726557,0.00918821832035023,0.00919414751939696,0.00920236506721184,0.00919158005437988,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918546940747682,0.00918540571183717,0.00918546940747682,0.00918546940747682,0.0091854678891126,0.00918547216347399,0.00918546817932014,0.00918546929081416,0.00918547438050236,0.00918546884852818,0.00918570718724753,0.00918632707797832,0.00918547479010308],"Archive350_field3":[20,0,0,20,10,10,0,10,20,5,15,15,5,0,5,7.5,2.5,5,7.5,8.75,7.5,6.25,6.25,5.625,2.5,4.140625,6.25,4.98697916666667,3.75,4.31247472763062,3.75,5.25911594397997,5.77169102616791,7.60382042027098,6.40193676141642,2.5,3.66869892287631,4.19318682579561,2.4193293364953,3.59218757816335,4.81062043528938,0,5.95358280317525,2.11462984433532,5.1325884640738,4.87718418975453,2.59712289676286,0,1.17269486202989,1.4448159603868,3.29481337022333,0,6.32512740138015,3.12434667487242,1.12450799869608,5.42226180669164,5.93982488708768,7.65236497568009,5.49950123538699,3.69380124183046,2.71131958828995,1.53693949944678,3.21582485375313,4.19165440877974,3.76029027288648,1.91028848542524,0,4.71709511609569,0,3.92349435846132,3.89990328842149,0,2.04380386224362,2.86581441788533,3.01243116513934,2.39121941520485,2.50153977488235,1.47402702880196,2.98362214758215,4.53669745397269,3.56827534683339,5,3.23474191784327,3.12687600732202,0,1.53270798343164,0,1.0599892144645,0.971825865083659,0,1.17303573789617,0.894067534025364,1.83952840347752,8.75,15,7.36786695079353,9.42985409745041,8.47972733425183,8.4541312145369,9.28656431574753,9.95478337197921,10.8892595932312,10.1453912878329,12.5,8.82407985255742,11.25,11.875,9.53216582998374,10.5792505538375,12.8510598179908,11.7084581422781,12.5628325536363,11.8698435727452,13.3311584831983,11.3666378033346,14.3496246463281,13.41153287528,14.1572101582462,9.35907975360773,7.74978032672982,10.8902733078275,13.75,20,13.4504485206747,9.42690582352364,11.1802491429084,8.4765917322317,10.1894911323232,11.0800736058273,7.93414349043812,7.22123397146571,6.43528570243011,6.76661944359392,15.697644700193,13.3557944207564,6.61433458907382,6.65414345963395,8.62212431298141,7.82926260161329,8.88374582288059,6.79339929756527,6.46361459656638,5.44741775006247,7.589170025633,8.18178207593868,8.60717467287404,8.96067533149348,10.0209195536559,10.3344808292815,4.79348561301664,5.99819090710498,4.54074929804293,9.82199532461747,11.1587207078482,7.09135230727297,8.00169374677002,7.80460697489351,9.75281958219652,6.54663935565762,11.0128705014782,12.9425062441322,11.9190713482478,12.2868255385582,12.358962822926,14.620198508015,12.3536726629168,13.5571279327073,12.0280512975148,15.0785135862914,13.4991322236892,14.5442155175732,16.6146250459037,15.5175733426414,20,16.1949872738226,15.5871441124816,14.7527202098661,5.44056210151147,5.36484607034743,4.35293046156329,5.70423312434723,4.12858866181772,7.03865698817992,2.5,4.2956691712777,2.26793250054892,3.05539568227595,3.292362139351,1.94316436330799,3.75,2.52810618306941,1.25,1.30012294239498,0,0.87152100965848,1.30034285539469,11.3657030634713,12.4857424637027,15.8283667746323,9.1309711897536,7.5,14.1511735900323,15.6011344008128,16.5344708124149,14.8950303630302,20,17.332324474813,13.554102334556,17.955084340182,8.22149737820414,9.27366497648874,7.83050130823139,5.58531106362167,6.34644465615493,6.25,13.4615486539426,14.4246098367022,13.1979813674907,16.3421921104561,13.9597887200322,15.462417137446,16.4958698702529,15.3367866588078,16.6733639867262,14.0144527826912,15,12.0773575611693,13.0250991787521,13.1296726145361,8.75,9.375,12.5,11.25,10.3974538510696,10.2648953189791,11.25,11.6249283619927,13.0316287338922,15.6961826019502,20,10.4978707180245,10.9919389592805,10.7461795228658,10.1845070220587,11.1194657538211,11.1538875166157,17.8640495038351,16.8652816088492,17.5,18.2303158632301,16.4990152494542,0,1.01027450004667,1.78680645105729,14.7105887315025,16.25,16.875,18.5969978803665,15.7964640790388,17.5725451291852,15.3931039314725,11.0681124833409,7.29653169230299,0,16.1652776966327,17.1206563053207,15.822041839381,16.9199375578086,20,18.5806163305604,15.7121197519432,14.3968234796873,16.1476255160058,17.5,15.0153682037427,17.1947297538152,14.1777459453505,13.7326891353404,12.7177381903814,14.0804436436811,18.4796999354339,16.25,15.625,16.875,17.9424542277652,18.75,20,18.9913308871669,13.75,11.9956278067966,11.9701504681168,12.7373447965104,18.0253565142649,20,19.2091542351544,13.3863506492238,19.1385946401529,17.8666105216957,18.8508587410809,20,20,18.9841096768765,18.0516305636916,18.7592012052108,17.1235712261687,17.6123900090103,19.1053589539079,20,20,18.669573115894,18.6079322363161,19.12080364977,19.1247483658888,18.128713513693,19.1147214472624,17.6450417720987,17.2104234133128,17.5122410917309,20,19.0273678554179,18.9268122416424,18.0087296836582,6.81931409926015,16.1136741324377,15.7349787852655,11.9809919025357,9.28293447323468,9.65701925513053,20,19.1774400276939,18.9808284202546,18.543913052772,18.75,20,2.84412202380953,1.25,1.25,1.96684592934531,1.25,0],"Archive350_field4":[0.00845754856741088,0.00846734906269194,0.0085735493386596,0.00845131053463511,0.0084630860516184,0.00845687493425,0.00845734874651426,0.00845934105647328,0.00845734874651426,0.00845836561220486,0.00845734874651426,0.00845734874651426,0.00845741741325878,0.00845734874651426,0.00847754742938846,0.00845861319993457,0.00845739052107457,0.00845734874651426,0.00845684584871363,0.00845734874651426,0.00845734874651426,0.00845737949626475,0.00845741214850645,0.00845734988457334,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734235753952,0.00845734707495114,0.00845734874651426,0.00845734874651426,0.00845734376178495,0.00845734836949837,0.00845734482115956,0.00845726263947664,0.00845740453890956,0.00845734874651426,0.0084573401537382,0.00845615680411364,0.00845725584688469,0.00845887595592569,0.00845759835144105,0.00845732790025634,0.00845734468573268,0.00845764611640324,0.00845733075730435,0.00845946152133504,0.00845734874651426,0.00846336600332367,0.0084578756908082,0.00846304949634628,0.00845965088185181,0.0084588997907776,0.00846058559091465,0.00845885196911564,0.00846104361985744,0.00846116290854186,0.00845867428542591,0.00845835674974905,0.0084594093328275,0.00846069717016093,0.00846084127648756,0.00846308080566072,0.00846137220742511,0.00846018286969519,0.00846615630940109,0.00846383023657248,0.00846039283411032,0.00846232831092258,0.0084651958620802,0.00846941854725949,0.00846611971691431,0.00846184128419591,0.0084594130915394,0.00845873529238049,0.0084602076882255,0.00846013356363185,0.00846046863831621,0.00845947081658343,0.00845766422130358,0.00845759173901417,0.00846486871191819,0.0084581205706366,0.00846832953445577,0.00846527399054552,0.00846175596232233,0.0084576553965011,0.00845760029980479,0.008465716268836,0.00846953979836462,0.00846650710125563,0.00847499132422107,0.00846996006719321,0.00847757550397861,0.00846042154393401,0.00846217582711709,0.00846415930035897,0.00846234440707625,0.00846173167750223,0.00846128707741758,0.00846366893679789,0.00845990469632925,0.00846206593889655,0.00846231928235492,0.00846554926117278,0.00846362269067525,0.00846138090418444,0.00846298084972715,0.00845890505105713,0.00845929839204599,0.00846804833145118,0.00845831777502021,0.00846467933303932,0.00847188004306104,0.00846488912122384,0.00846256533171954,0.00846692928081401,0.0084621975679997,0.00846299319684989,0.00846026724172482,0.00846060184895251,0.00846258196036731,0.00846157150029618,0.0084614404717428,0.00846329979513458,0.00846187545802342,0.00846283723897581,0.0084612516118221,0.00846017748217309,0.00846153876334927,0.00846005338844701,0.00846256953862922,0.00846120927031852,0.00846805487821686,0.00846111888884232,0.00846222678450037,0.00846082769318984,0.00845905312408953,0.00846056435457736,0.00845976236784765,0.00846105220863913,0.00846003953667554,0.00845952304637859,0.00845893671026264,0.00845938208268638,0.00846110129721308,0.0084604518754352,0.00846033696587748,0.00846051649773209,0.00846111388540624,0.00846034672888074,0.00846043185970127,0.00845974215966493,0.00845993077399589,0.00846053827964498,0.00846117917582001,0.00846046565130967,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845650561224549,0.00845734874651426,0.00845724732484531,0.00845734874651426,0.00845635269399658,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845736010111086,0.00845734874651426,0.00845734874651426,0.0084551113338468,0.00845734874651426,0.00845765933953324,0.00845734874651426,0.00845734874651426,0.00845734001534744,0.00845734874651426,0.00845454898925845,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734675751583,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.0084976424472711,0.00847338988590292,0.0084616576506126,0.00846328415363271,0.00845734874651426,0.00845734874651426,0.00844652864299798,0.00845734874651426,0.00845734874651426,0.00846431689435512,0.00845732714129933,0.00847003060069243,0.00844827717869788,0.00846465936372398,0.00861800596253365,0.00846688903766002,0.00846214037068679,0.0084595303623659,0.00845734874651426,0.00846745218261412,0.00849140114833575,0.00846947159113514,0.00847018703105363,0.00847676961217093,0.00846419038856857,0.00846218227680444,0.00846747530559042,0.00847491507708195,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845864187395341,0.00845881027760758,0.00849138139236751,0.00847396858080784,0.00850778383926716,0.00846231662389552,0.00849970435143149,0.00847376642839233,0.00849289637526655,0.00863193599871007,0.00846811649966856,0.00846440681989006,0.00847584806982443,0.0084668023898232,0.00846592723425691,0.00846344548254114,0.00847236102197267,0.00847104189234063,0.00849037642922294,0.00846065718767575,0.0084850075917102,0.00864897752791851,0.00848067701700649,0.00849282444192723,0.00848332003462956,0.00847384354027577,0.00850873917120828,0.00845361034093875,0.0084642715312906,0.00846572257196004,0.00846468909092493,0.00846351603798571,0.00846191840043898,0.00846385906209447,0.00858959097183641,0.00847621342075267,0.00846358308409975,0.00844626128171815,0.0084574906087113,0.00846391089923004,0.00845625317897072,0.00846005750093889,0.00846185402302306,0.0084591006743358,0.00847386222790474,0.00845734874651426,0.00845665726376402,0.00846198814508449,0.00854655984655346,0.00845263683910941,0.00844987267361486,0.0084479006202364,0.00845699495916282,0.00844357771838516,0.00845387951904786,0.00845734874651426,0.00844484603258443,0.00846308914330524,0.00845191481458772,0.00845718676366262,0.00844640596614418,0.00845735153365296,0.00844815691090362,0.00845200515841821,0.00844335990685108,0.00845441015102293,0.00845734874651426,0.00845726977310231,0.00845724324933127,0.0084558964278463,0.0084500902604995,0.00845732999061143,0.00845734874651426,0.00845739132209387,0.00845729901629041,0.00845757892334158,0.00857761818086091,0.00845334790169514,0.00845734874651426,0.00845740529340381,0.00845730996963296,0.00845736184263181,0.00845734064635217,0.00845957280595441,0.00846048998257512,0.00845809615757891,0.00845982588624447,0.00845994440666926,0.00845902679851679,0.00845750441955823,0.00845864167124162,0.00845723026647887,0.00845882173410706,0.00845624677066322,0.0084573372039293,0.00845824066708069,0.00845799839816342,0.00845851481521802,0.00845867301873877,0.00845939872748236,0.00845845569516629,0.00845916453184068,0.00845801379549393,0.00845889243420587,0.0084588811644888,0.00845964470440477,0.00845881141334009,0.00845734672291435,0.00845864000341441,0.00845860390694011,0.0084586956979527,0.00845896463576576,0.00845903980496573,0.00845928901082589,0.00845899006388572,0.0084588080192349,0.00845921385690751,0.00846404967148457,0.00845273920572898,0.00845487160886054,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845498967550589,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845784250045486,0.00845734874651426,0.0084477350295871,0.00845734874651426,0.00845854038856332,0.00845734874651426,0.00845734874651426,0.00845734235272709,0.00848693849175723,0.00856690702595344,0.00845643789052514,0.00845734874651426,0.00845734874651426,0.00845733413058658,0.00845611001463654,0.0084556078178779,0.00845717692434566,0.00845692717877553,0.00845719778626684,0.00845732760106046,0.00845734874651426,0.0084564186828496,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00844891332087221,0.00845734874651426,0.00884195399586338,0.00845732840670541,0.00845451992985831,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00848014487063899,0.00845733225061629,0.00844927792079164,0.00845734874651426,0.00845734874651426,0.00845347917732692,0.00845734874651426,0.0084560278959284,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734872402119,0.00845714408729169,0.00845732491954392,0.00845734874651426,0.00845729943392489,0.00844231268892828,0.00844735647620872,0.00845734874651426,0.00845734874651426,0.00845258940892146,0.00845734874651426,0.00845734874651426,0.00845534792428005,0.00845734926275866,0.00845734874651426,0.00845733251187195,0.00846182446533405,0.00845264832177139,0.00845507748839269,0.00845982780584727,0.00846220374597343,0.00845620915180616,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845986891032556,0.0084603528435792,0.00846142214820854,0.00846073610562389,0.00846061994350402,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734660847643,0.00845370139971617,0.00847713078248898,0.00847475487603455,0.00845734874651426,0.00845878423986674,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845671047372568,0.00855100872293177,0.008570520165444,0.00845734874651426,0.00848299462529824,0.00892403871453721,0.00851225303977951,0.00895822319502942,0.00845742058556538,0.00885612715120895,0.00845734874651426,0.00845734874651426,0.00845865290358475,0.00845756830630466,0.00845734874651426,0.0086328450876522,0.0086443619326154,0.00850276899854656,0.00847025667618224,0.00861418152473264,0.00878431444793424,0.00882429601464932,0.00845735256499711,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00850382394842077,0.00846534165658088,0.00845734874651426,0.00845737373860599,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845732951733693,0.00845626959815082,0.00845741782308765,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845722470719856,0.00845980707675213,0.00846510056414073,0.00847243868034647,0.00846281409705455,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845734874651426,0.00845729209685538,0.00845734874651426,0.00845734874651426,0.00845734739892983,0.00845735119252816,0.00845734765649592,0.00845734864297335,0.00845735316019495,0.00845734825043399,0.00845756113323584,0.00845811349731043,0.00845735352372565],"Archive350_field5":[22.8685408280591,0,0,21.5753505615382,23.323750641977,15.7005032377056,0,15.2330090089627,42.3510595444832,8.38030741479321,22.0478013918538,21.1347942052181,8.80644044043479,0,8.11719965061692,12.0303853660327,4.13574182068862,8.18602959685622,11.8901922831233,13.6750685544468,11.9267774179744,10.0943345782819,10.0347828390524,9.10234100413368,4.10825735403126,6.76975904197881,10.2270130985316,8.12425793891834,6.17471385092015,7.15131967963459,6.13153312556523,8.66308216170567,9.56889809771551,12.5443426786155,10.8246570901163,4.23221803283746,6.16107821196519,7.21595319227508,4.04133500790602,6.11128941986304,8.1843414675395,0,10.3457268145814,3.64223640679211,8.83995174977059,8.51205310791594,4.43877145732536,0,1.98755951870561,2.47186241354875,5.46782241009977,0,11.2401948174056,5.44177280667995,1.88735993766895,9.55461343949801,10.5474900337941,14.0404760375801,9.68450954891371,6.4096848517089,4.69879240504544,2.6700075586452,5.536333787008,7.32996849997439,6.57550757890587,3.21482474844248,0,8.28325191942649,0,6.80932626162524,6.80574707000393,0,3.55516282373928,4.97599919289833,5.25094455757976,4.16475422882906,4.28774321251093,2.54991339759346,5.15046048719147,7.74683798229826,6.12119491640961,8.28356765123275,5.47492033154201,5.32842403998364,0,2.60770276070602,0,1.84332778810872,1.68716348240489,0,2.01191250700938,1.54104218865936,3.16699696930905,13.6306472906229,19.9823899154084,11.9782738136001,14.8601402031275,13.6856448667866,13.4527958388205,14.489988651491,15.2233653315055,16.525621255048,16.4194441530827,17.9590531856599,14.535143022925,16.6866380080444,17.4163186873847,15.2722593719386,16.4200188404441,18.8437024292123,17.6083676834589,18.2668492017125,18.3729651085314,18.7793493450177,17.5217412721155,19.8362196162313,19.1282029130041,20.0708803991219,16.5309308807354,13.1176587522246,16.3707537458417,19.0640273714475,23.4957232779068,20.0444813831419,15.8947534298892,18.4755145797826,14.6254625395256,17.3920737360965,19.7519975325837,14.3297275699301,12.5444042583263,11.052103981082,11.9363041203671,21.0243708182802,19.5769756537075,11.0022870061863,11.9195263721429,15.363241631177,14.2101241622813,17.059446101821,11.8444725159853,11.4100129029231,9.46912779612926,13.446559643523,14.0299101533893,16.345688083093,16.3941552544613,18.571546201059,18.8832324168994,8.36608410076959,10.2650816296503,7.83535658313376,19.2619336781358,20.529690282859,12.143552234553,13.2649320840849,13.1695310185537,16.0863271881959,10.9988399854764,20.9193055997564,21.2496565293049,20.7325927166261,20.1556412186076,21.0225589244299,22.9500225293931,20.4081174462175,21.8817545221319,20.6105005722162,23.0671876322955,21.6830920334901,22.7545937895828,26.0139248247153,24.0897061153217,25.496664163639,24.9181388460299,24.1738413849727,22.8032486836501,9.21386262545548,8.93488772801719,7.36684126644158,9.55719491507333,6.92928074816684,11.6182275495189,4.18514800595965,7.15683621776394,3.81179338611534,5.14209746075189,5.51235281708167,3.28313793136273,6.25057107716714,4.23640339021974,2.09865489383884,2.18515287928596,0,1.47448521293878,2.19094208292868,19.2999513159632,19.5883778811023,23.5728170556576,14.6384142285976,12.1796912392296,21.4430193732622,23.7554378542294,24.9022849400677,22.6296467571851,35.6070907752314,24.5443359554829,21.3124895774072,28.8603345888821,13.4203924729335,15.0852252698408,12.7140368454941,9.23665595414307,10.4736625815059,10.2665810836544,20.4954540695156,21.094576627192,20.7272239210058,23.0733831011307,21.7957585680557,21.9860509686975,22.1048239202838,22.5497241422065,24.802598606854,21.365157706462,20.92983370935,19.2887490037903,20.4486862530567,19.9916672495797,13.9927160767906,14.8887461649877,18.6457908512427,17.3247527584859,16.2355343357684,16.1686911072734,17.2517495130516,18.0615310947771,21.0102571322798,21.3843032797491,21.9693064299704,16.8104692484506,17.7898928665062,16.9222418113563,17.3659182606746,18.3775881861591,19.0570691018783,21.8545845104855,21.7158769189837,21.1822417060881,22.9447099557644,21.004223787929,0,1.74449896790674,3.09446437171224,19.8660664730162,20.6981160451515,21.0221229060734,21.573884319696,20.5200249331039,21.3714490077394,20.4577651205464,17.788404481926,13.2002293176119,0,23.2596488879191,22.9193678210836,22.2902045673618,23.401741069131,23.3819041120394,24.1812830191482,21.6262073016085,21.0290000077026,22.1572029430833,22.3970459126128,21.2849622454322,22.4699320022083,20.3443753010546,20.1281583314929,18.9628141413582,21.0356508925746,23.199051342062,21.7819835651221,21.423091687885,22.1540470275355,22.6048556917632,22.7607102615744,22.9906064857645,22.8704266009096,19.8837196259945,18.1326979747403,18.2656038363859,19.2540456143267,23.4180710908292,24.141762561484,23.1244380231507,19.5677832313607,23.722841288494,26.7298369834872,30.2332459211165,42.671285851299,28.0963479545646,33.7044335266384,30.1132136667696,26.112791680651,27.2397804930842,27.6760186218008,35.6666365775209,27.8639378041815,35.6971394047336,31.704194146433,27.9479761367636,28.0723392090175,25.0787219748898,24.6868629232777,31.5871684007099,26.479764847942,24.5303998488069,23.5056820629149,25.04626032289,24.0176937581603,25.7670344538634,24.7296939368259,11.1610566540837,24.6315073350473,23.4952832258661,18.7703133340806,15.7324004164731,17.1436347271355,22.5349943088547,22.8982475789135,22.2089440170624,21.7947225243908,21.482132171403,21.6681682045824,4.67696873151049,2.06567571818932,2.0609371775796,3.23825046662049,2.07616212166313,0],"Archive350_field6":[0.007866718766618,0.00789058216854125,0.00817980390420091,0.00787480876600057,0.00786745614309854,0.00786343823744958,0.00786686171670009,0.00784921111882328,0.00787618081504445,0.00785582675027632,0.00787542415399912,0.00787378840395929,0.00794820861270237,0.00784626182697507,0.00792379265257587,0.00787163441087979,0.00785345220747551,0.00786077962563738,0.00787329483935359,0.00786664359747608,0.00785742759945412,0.00784754424197738,0.00785933406703641,0.00786574084205036,0.00786474272281777,0.00786788273731428,0.00786685946955662,0.00786859345120605,0.00786717289395522,0.00786004710171876,0.00786713833786559,0.00786211779890369,0.00786206991612547,0.00786488500191778,0.007857756123842,0.00784877600688439,0.00785464360797174,0.00787083110519559,0.0078639533764324,0.00786326381388076,0.0078602318243968,0.00786177407344676,0.00785217850031428,0.007864054494695,0.00785780111225527,0.00786478382647279,0.00785449432777349,0.0078671319546347,0.00787138623900243,0.00787486254325254,0.00787400288704479,0.00787704165183576,0.00788029933581488,0.00787611745986891,0.00785945047935947,0.00783998408461534,0.00786618450096933,0.00785517716933083,0.00786829565621166,0.00785921143050521,0.00784583435498528,0.0078477500991582,0.00786622339638805,0.00786114512393918,0.00787466756656597,0.00788037774829039,0.00788435921388724,0.00785844490507963,0.00788472316348252,0.00787537805016815,0.00784630384073774,0.0078810486056591,0.00788480596433309,0.00789873162765503,0.00788439206305521,0.00786702756862307,0.00784419013799733,0.00784200441400778,0.00785335629771998,0.00785397951517732,0.0078506770362397,0.00784184633883415,0.00785790545827604,0.00785167665940436,0.00789402405195625,0.00784583737838036,0.0078934696973446,0.00788027475788846,0.00786003104551725,0.0078374874907744,0.00784002081396223,0.00788678312793779,0.00789900241118437,0.00789472147734968,0.00791613392028475,0.0079016529363267,0.00792709598527021,0.00784587117300782,0.00786058615812473,0.00787616875202463,0.0078653163532332,0.00785755056073188,0.00785975731845981,0.00787162880266407,0.00784194036698899,0.00786779362321615,0.00786543400597841,0.00787993804359102,0.00787139715716973,0.00785367615592566,0.00786604893759452,0.00785182728969307,0.00785008414650197,0.00789136461075386,0.00783860742810477,0.00787859893769483,0.00790552388723962,0.00787709175356634,0.00788515632367686,0.00788719180761611,0.00786158933717998,0.00786904764596557,0.00784263777351308,0.00784688191940443,0.00786615539206924,0.00785689695973666,0.00785485102071692,0.00786983506685575,0.00785913525033469,0.0078659552473692,0.00786147072829989,0.00785508680215406,0.0078587228022587,0.00784435756838335,0.00787059564992664,0.00785789447236035,0.00789448661312234,0.00786144564245408,0.00786671684483041,0.0078664302312167,0.0078591334914451,0.00787736796672656,0.00784497788125841,0.00786534672530866,0.00785627396441278,0.00785577964347851,0.0078589995792497,0.00784164575488472,0.00785191497160717,0.00784611794192312,0.00784302008166821,0.00784546101235878,0.00785110151959765,0.00785148701094995,0.00784904381569567,0.00784175388147799,0.00784163585516142,0.00784993020665115,0.00785572744413632,0.00785240760423232,0.00786781315279199,0.00786840282845879,0.00786807410125847,0.00787521030677709,0.007872196141359,0.00788465330685324,0.00786975976891819,0.00787572820267679,0.00787075191716717,0.00787187062649601,0.00786606738229991,0.00786745882745271,0.00785371499435553,0.0078635923344144,0.00786002873177334,0.00787835836284881,0.00787191957540542,0.0078737657176692,0.00788179314656064,0.00786190933129375,0.00788059923936927,0.00785921960985608,0.00786382422033709,0.00787301262083562,0.00787173310810691,0.00787848000149773,0.00786704113237588,0.00787154933746105,0.00786489605273872,0.00786457463488457,0.00786262655833756,0.00787060267752177,0.00785729073996962,0.00785935120468952,0.00786225591771784,0.00786628237423559,0.00784777040986123,0.00785731179978521,0.00786597140555812,0.00787272842713972,0.0078506152226722,0.00782981820356434,0.00785864130560915,0.00785226414139177,0.00786434491184617,0.0078601755185881,0.00798291749890624,0.00792257889201576,0.00789344884453334,0.00789649530982817,0.00786582227898437,0.00786606186092607,0.00786477524542478,0.00785478114065364,0.00785542088544396,0.00790256070464517,0.00788091861375549,0.00791594824962747,0.00787386350048185,0.00790624091640555,0.00828488307430068,0.00790185983896183,0.00789885764986425,0.00789626085296606,0.00787251638102129,0.00791058697050689,0.00796533445483636,0.00790112004909518,0.00791064056092335,0.00792461419413818,0.00788533759713856,0.00788581109077507,0.00789783318039847,0.00791996300586057,0.0078513119744607,0.00786878974186545,0.00786193629386498,0.00787022451147575,0.00787298594483537,0.00788059460967644,0.0079673642696457,0.00791737011973218,0.00800967391968225,0.00787587949047315,0.00798654608518835,0.00792003024047824,0.00796863942065518,0.00832379395560275,0.00790383015911515,0.00788041324583988,0.00792047538681358,0.00789379276496585,0.00789074071524149,0.00788046365169221,0.00791723736688787,0.00790796976681704,0.00796788248512599,0.00788366815721266,0.00795107269740045,0.00835802972185541,0.00793965753362527,0.00797338623000907,0.00795175597598681,0.00792883963557513,0.0080323624820748,0.00788267904171184,0.00787594615743855,0.00788564245523549,0.00789423997918736,0.0078877329122399,0.00787028659581908,0.00787621940499669,0.00823224195216726,0.00793274235112894,0.00790603402698298,0.00786480777838331,0.00788249676629097,0.00789439981739094,0.00786653843785502,0.00786198497686796,0.0078923438454776,0.00788187065194564,0.00792559874662234,0.00787428134246751,0.00787031999296071,0.00787692679801799,0.00812437744046217,0.0078812015154413,0.00787694455904888,0.00787378101188923,0.00789119104863698,0.00786134394434209,0.00788066764250625,0.00787725264424707,0.00786729767760315,0.00790404055444375,0.00787484951530816,0.00789719590753392,0.00786972766574471,0.00788130186966995,0.00787235032227582,0.00788250516738443,0.00786467657434301,0.00788647774098487,0.0078761829104672,0.00789866898738433,0.00789962774949131,0.00788565943231938,0.00787603252130099,0.00790249395058288,0.0078919386053825,0.0080377925056132,0.00789416841177986,0.0079412482163296,0.00832501617839807,0.00788134230566957,0.00789416015419867,0.00792261175054553,0.00791436236695499,0.00789471522708202,0.00788515082739257,0.00787441734115545,0.00787015264069586,0.00787418469533476,0.00786352187708886,0.00787128020996291,0.00786651281068529,0.00787667705731719,0.0078677901432506,0.00786493071420431,0.00784981061033554,0.00787560723642394,0.00787382029322746,0.00785401896364054,0.0078635311084034,0.00785626482091538,0.00784736528990297,0.00784349879848426,0.00786048758067803,0.00785296926189103,0.00785872643874332,0.00785514072977663,0.00784739707695442,0.00785291599058768,0.00783985316352404,0.00786079065340549,0.00785348190745618,0.00783928222363921,0.00784990591077874,0.00784201931406762,0.00784909206986675,0.00784725872809448,0.00783937155212857,0.00784255580976456,0.00784660420221303,0.00790527895848274,0.00788134581946518,0.00787765431117852,0.00787358312888482,0.00790240754017822,0.00789621425948552,0.00787594129244177,0.00786955072173359,0.00787016667581686,0.00787223594869778,0.00787784292502623,0.00790459466130839,0.00789046755121077,0.00792502689456591,0.00795447639422392,0.00788553941745091,0.00787240015669068,0.00783875841413793,0.00795877721229605,0.00787931265019922,0.00788068446703288,0.00788385091041484,0.00803401310575589,0.00825607053933452,0.0078823521192151,0.00787315816137694,0.00787448693577417,0.00787857614659456,0.00786513876454593,0.00787357128156671,0.00786887529875766,0.00787048090737021,0.00787252543165533,0.0078702581299115,0.00786743074501747,0.00786832018940048,0.00787643817718946,0.00786772460598191,0.00787370413786772,0.0078789327026613,0.0078710573683929,0.00786317873625528,0.00892073579165114,0.00788557930202302,0.00787787075920351,0.00785792752261016,0.00787348836751692,0.00785307107293651,0.0078583057591106,0.00789807085889362,0.00788274852869504,0.0078963613793046,0.00801911990378062,0.00787993684953854,0.00787483717958278,0.00787536635196487,0.00786772205177434,0.00787886140895356,0.00787807415122433,0.00788234235502641,0.007874351956507,0.00787350045250759,0.00787193549227365,0.00787509709460339,0.00787375337971786,0.00787209360048989,0.00786526236263897,0.00786321245078475,0.00787447220207847,0.00786954297756735,0.00787567306862382,0.00788049864585123,0.00788016325761032,0.00787326550007801,0.00787906536215419,0.00785974044840814,0.00786929581481926,0.00785834605114699,0.00784727938497922,0.00787879033694278,0.00780917761888156,0.0078753524843635,0.0078849032007237,0.00787766677577011,0.00787521813038467,0.00787633178398096,0.00789862269262292,0.00788105050109625,0.00788577022211832,0.00789732666900244,0.00789999614637106,0.00788715737465528,0.00782950487667244,0.0078309767610624,0.00784235810781142,0.00784131964498108,0.00782534187483735,0.00783490390257587,0.00793689875846928,0.00784969996819893,0.00782403142452331,0.00784489541115527,0.00784408166312512,0.0078571510475507,0.00785084023209472,0.00785176042608052,0.00783935279390688,0.00784390385458867,0.00782337918050813,0.00783432267431946,0.00783562691875172,0.00780555560154472,0.00781805133520224,0.0078389691038864,0.00784245432140234,0.00782199667351912,0.00783153114339611,0.00784325570193609,0.00784691501689587,0.00787728073314381,0.00788386302335152,0.00792395141851477,0.00791708735282438,0.00788218401809574,0.00784239733506297,0.00788020940279507,0.00787356983999817,0.00785199695894267,0.00785603420819279,0.00786851123285274,0.00789565376604923,0.00786400872622152,0.00782925505517596,0.00785718686044241,0.00784244664636269,0.0078380367416293,0.00785863758420475,0.00786092043203628,0.00786513328559993,0.00785230473880009,0.00785771760272226,0.0078573935169542,0.00785081446060152,0.00787178212806292,0.00784904186804001,0.00783956327391746,0.00786677955230138,0.00786731464545518,0.00786601589888611,0.00786722295323917,0.00786439578457716,0.00786815548936599,0.00787606248609907,0.00787316871695715,0.0078403142630401,0.00782096954143832,0.00785595715001504,0.00784899710470973,0.00784703825259707,0.00784243357831206,0.00784729509940706,0.00782259829703315,0.00783197106313254,0.00782809805751875,0.00783571187748248,0.00783206467396933,0.0078177910131899,0.00786935211899275,0.00785957902787009,0.00787275504618827,0.00787218687633343,0.0078722160323757,0.00787526888235975,0.00787077920013671,0.00785394794199908,0.00785210970427668,0.00782223672901765,0.00786081551783366,0.00782886733914589,0.00786423884081037,0.00786535291641092,0.00784263343682188,0.00783428166406773,0.0080120433425788,0.00832819799934214,0.00827102454697684,0.00792650519911032,0.0080197545607995,0.00910848623816649,0.00833848582489812,0.00917519243306006,0.00794267376022148,0.00895395398163097,0.00788072504741139,0.00790728799626851,0.00795904746528341,0.00794006592225559,0.00788291574813569,0.00841181191021253,0.00844206226080605,0.00811110301762346,0.00812158447086157,0.00864069555584037,0.00877911907445621,0.00887347983251197,0.00794238983451758,0.00793139810073563,0.00794070397888653,0.00794487910342392,0.00786059802932717,0.00786492717947507,0.00787130165905345,0.00789457753938347,0.00811604952976502,0.00811017956120697,0.00788940817802977,0.00794865216434659,0.00788377637329122,0.00791533140815922,0.00786377744596624,0.00786020422299594,0.00787855793022407,0.00784993361741506,0.00785535928292437,0.00793260658022513,0.00795089178162067,0.00787565367086433,0.00793400000791577,0.00787278132739848,0.00786742485842223,0.0079273008327381,0.00789865997485214,0.00788101895210076,0.0079003672379225,0.00787847346036942,0.00788160689459722,0.00789035220031037,0.0079016739235416,0.00792642464162809,0.00789958878567204,0.00784256426881135,0.00783267164534006,0.00783385745643633,0.00782449270401507,0.00781630908753136,0.00782567717390411,0.00781416499998832,0.00784458327454419,0.00781804268226149,0.00781005467591358,0.00785144235293826,0.00783665249189342,0.00784547805190734,0.00784623558170528,0.00783944401683625,0.00784294400422921,0.00784759120048477,0.00784083396752676,0.00783683141172732],"Archive350_field7":[214.12264581633,0,0,203.070420759274,226.179728167146,150.347459336659,0,146.336550430078,295.1,80.6414870668895,207.457495204417,199.659346189534,84.0680741133145,0,78.3906334612837,115.852499637079,39.966444561392,78.9794315684341,114.588949408617,131.589422789285,114.92254782594,97.336089437695,96.8029695164595,87.843364159537,39.7396711181761,65.395637298434,98.5209857617759,78.4283574578656,59.6277021847239,68.9474806646933,59.2618820053719,83.5033693726488,92.1127524649883,120.600910766448,103.979231684645,40.7368959511725,59.3332499562549,69.1834165314905,38.9956263220399,58.7273263333565,78.6041940094754,0,99.0522434264435,34.9359828404341,84.7432530739757,81.3955376111981,42.6403386761979,0,19.1470470098628,23.7578154872201,52.7683388399042,0,107.275857370321,52.0396632927446,18.2175145838047,91.2130401574443,100.613102074098,133.92753177358,92.544352988363,61.3444185533142,44.9912554822641,25.5657658684802,53.0855577470365,70.0379290001763,62.8424274704509,30.9875096195734,0,79.1348408529616,0,65.227588506005,65.1011221704006,0,34.0411535967743,47.6630613530864,50.2366879888106,39.8446040141408,41.213436499742,24.4684810061223,49.4090148452268,74.4113074572227,58.7883785733828,79.7932904403905,52.7146327957011,51.2494966334552,0,25.1278605506436,0,17.6552579603231,16.1724828943054,0,19.3530111419022,14.8054926442593,30.4169498547426,131.18261269937,189.848117376425,115.2833667265,142.728092057673,131.548452030747,129.397863233138,139.275286566995,146.226841637076,158.411954821841,157.382888183321,171.671275101081,139.544893019797,159.952077583507,166.668231250055,146.567626602808,157.38267918715,179.620401835276,168.379941250687,174.431599157814,175.40227079046,179.129234097166,167.599571725259,188.470633200709,182.176940978349,190.460921650448,158.400284101136,125.927874185458,156.98590127603,181.698147728894,219.800550407409,190.320272421764,152.426942764829,176.619777088178,140.234144561146,166.652736109679,188.909831257422,136.980507657797,120.194445505257,105.990947053897,114.111439589554,198.670085298177,186.14718086204,105.81638531841,113.788027717526,147.084625484539,135.71808756507,163.180376653802,113.446564144079,109.095451089024,90.6879084758584,128.695714001683,134.470430790001,156.121022913479,156.831540628714,178.151212789434,180.995854816092,80.0524034395261,98.49923088682,75.140591645981,184.797530003755,196.242814666378,116.453281062269,127.273559389495,126.322259138393,153.989175353605,105.64531064975,200.047839805615,201.428464709986,197.724055451906,191.952512966524,199.751763857791,215.891532679941,194.027399299851,206.690738312401,196.274675779353,216.995221227021,204.885734361166,214.198055756512,244.933357983035,226.332319269648,237.31718115027,233.70480393957,226.921497306015,214.413148393848,88.5326528648615,85.9866846363084,70.8604660646833,91.8992756689684,66.7317845489398,111.628585086474,40.3894186267396,68.9634351427353,36.7738332449186,49.5593246552978,53.1496207908543,31.655882516103,60.2708010131743,40.8772479191075,20.2726856613973,21.1014477195652,0,14.2275210367651,21.1497821698122,184.4078489992,186.484434608724,220.941606018029,140.333668474951,117.05195671492,202.667603039892,222.813200181772,233.118263033255,212.741817326001,295.1,229.204994002058,201.442886920214,271.950690512689,128.784429209981,144.532502932827,122.122356936132,88.9180748863763,100.732723179947,98.7850896502253,194.389926999609,199.429690833998,196.647128823345,216.722922031635,205.887831310761,207.107460774726,207.859128030188,212.248702770087,233.162902883628,201.693146782091,197.964017119643,183.515685858602,193.820578693467,189.578174043189,134.251830288089,142.708241044928,177.543240551078,165.435171756189,155.330103762649,154.694168525634,164.793694851366,172.199569226787,199.320156805857,201.738173847537,206.133977331565,160.711535876723,169.851856942212,161.722904540454,166.168317318854,175.449193609716,182.034210590261,205.37530485327,204.36536566393,200.019218195023,214.915984666638,198.546028355883,0,16.7311470431839,29.6431430093127,188.801690460631,196.02850565915,198.721295494132,203.069640774853,194.480419944804,201.467793331423,193.8910431197,170.170258307783,125.918664887731,0,217.929126373286,214.662899628507,209.450726412936,218.891645791791,218.226686827411,225.364203445783,203.922775932595,198.660860456734,208.341283924502,210.491884969602,200.898674052925,211.022586966969,192.776613223803,190.775137194864,180.394117198594,198.729321897238,216.780533313843,205.338845389227,202.238768700699,208.458460176241,212.130930500241,213.365697783755,214.995849518871,214.139755091053,188.718780264042,172.871736341985,174.058329523867,183.010625285508,218.732787680172,224.739563898393,216.113434983481,185.851137436461,221.161721616266,250.16759885493,281.831512714716,295.1,262.785613834507,294.084109676877,285.491837354346,243.658962888527,256.558235935725,262.053839369012,294.205358953908,263.386739899283,295.1,293.769573115894,264.728188396118,263.131967156487,233.589886427749,230.191988452542,294.214721447262,249.920299013479,230.351488077412,220.331889876982,234.739510334045,224.830122478113,242.25427110832,232.001521079195,107.320010408416,231.504527749084,220.891789467828,178.71512185277,150.674486249098,164.282382395074,211.10553607164,214.363688056736,208.294023782401,204.81786377167,202.429707430432,203.711157483175,45.2196959774054,19.992453439376,19.9527366312341,31.3263574048691,20.0762487802185,0],"Archive350_field8":[0.00930559114920411,0.00964819575749243,0.0150999314974901,0.00826887060590729,0.00935130674356372,0.00926773863962914,0.00920284615843914,0.0090763880714897,0.00920579216976885,0.00918782082891401,0.00902651664411303,0.00874472527279156,0.0108753292086503,0.00840349785534815,0.0101586668018073,0.00936770313242677,0.0091473231969648,0.00918816056733067,0.00924802652783793,0.00911243552496356,0.00917703227671715,0.00905735330205277,0.0092113791503829,0.00926295899976766,0.00918773764943544,0.00897374774788941,0.00900325911998245,0.00924020161846431,0.0091169328234368,0.00921713837494122,0.00921876026337636,0.0092013248134754,0.00919030234035557,0.00919759684884438,0.00918159463396304,0.00907951439151522,0.00915481718414247,0.00928809289271329,0.00928357199282734,0.00922206858557511,0.00922809683037437,0.0092649741824425,0.00912906146821156,0.00929794748138976,0.00921343895617514,0.00925731072833379,0.00915359259495222,0.00928205757586601,0.00930106108638562,0.00940184063961512,0.00925926494930448,0.00946804092264771,0.00935819241966998,0.0094682190221301,0.00923688796595199,0.00891043391476872,0.00933021953102466,0.00917301752368423,0.00934988176058023,0.00923457882308891,0.00902095553211626,0.00905774581093432,0.00931587719506489,0.00925915235696007,0.00942120785219228,0.00950015786132179,0.00951053213917142,0.00922110327561448,0.00958033869469476,0.00946165718784349,0.00902370419019032,0.00949763046665388,0.00957443906310338,0.0097820816521692,0.00958311487872471,0.00934657347930486,0.0089896181604726,0.0089523762536196,0.00914203146592471,0.00915631805160829,0.00909974949352633,0.00894335554062174,0.00920782817042542,0.0091235944555441,0.00963329002884443,0.00902529614351622,0.00969985842248153,0.00952023058807204,0.00924385863608536,0.00886878170391203,0.00892273915902853,0.00959042057298392,0.00976868386133037,0.00967907855904534,0.0100433636184706,0.00979015842903722,0.0101223626788253,0.00901564721265793,0.00925231262028609,0.00946797662495249,0.00931930494247136,0.00920721463167886,0.00923928062474997,0.00940827033190297,0.0089440570230111,0.00935041079456607,0.00932506202395744,0.00952833948042478,0.00940897376140948,0.00914612083336701,0.00933213860458578,0.00912611301801396,0.00909453390271271,0.00967862988489888,0.00888658208668231,0.00949450134871896,0.00988656830665399,0.00948625953481675,0.00952428480475011,0.00962255155305309,0.00926696871039651,0.00936927570909103,0.00895611188053622,0.00903344114303926,0.0093316688208157,0.0091951911952718,0.00916461090355124,0.00938050757750899,0.00923018165308348,0.00932938820705771,0.00926081186048906,0.00916600311521528,0.00922303803231692,0.00898946584668432,0.00938510719046491,0.00921272269605005,0.00970349591734812,0.00926385778546012,0.00933723481620484,0.00932640967938009,0.00922211876179285,0.00942137521876804,0.0090018689074212,0.00930954659593987,0.00918698447193108,0.00918121356761853,0.00922381170479869,0.00893919769696863,0.00911816555872457,0.00901962295070742,0.00896335001675733,0.00900839970644706,0.0091038320097478,0.00911206188326032,0.00907040094456673,0.00894019477704506,0.00893769473404839,0.00908492243449493,0.00917765425845883,0.0091253520271081,0.00912139197108515,0.00906308609209168,0.0089614780103888,0.00937932306337421,0.0091439276075985,0.00929847234462099,0.00917414073339222,0.00918895068371543,0.00919023914253503,0.00912688427052106,0.0089957373127735,0.00901536169369476,0.00848610129287761,0.00879154771513541,0.00870491242461834,0.00915347297311542,0.00901687476772198,0.00877849923055204,0.00910744643730981,0.00875831866626343,0.00935341511264021,0.0086597060234368,0.00886196416923995,0.00893700898172518,0.00902846362627788,0.00924079882954378,0.00883018594985484,0.00893098882582876,0.00878145909205143,0.00873766363632906,0.00874260355434268,0.00882885172461316,0.00862161910783647,0.00859075945892727,0.00860781165805513,0.00867578161008998,0.00842094277525794,0.00855258797973968,0.00873560485713663,0.00881970008109429,0.00846185334413024,0.00813935240482454,0.00862048487648078,0.0084261310577944,0.00859008927742539,0.00858795795033608,0.0110742894531947,0.00986366199835144,0.00953270548414495,0.00954409197838854,0.00889068102604712,0.00891758302049164,0.0081564096509569,0.00856695175132393,0.00850189796261793,0.00946919164765034,0.00911798296594955,0.00983348484069778,0.00860665925907476,0.00930387839940912,0.0177334879301516,0.0097088903055138,0.0094946421025912,0.00923852493427088,0.00871748620620173,0.00901494462015394,0.0108608572186539,0.00978392420592858,0.00981334128000278,0.0101178661482675,0.00955620548936408,0.00951284569906827,0.00970744646467858,0.0100681318301125,0.00846894199882033,0.00875999325329774,0.00857661681402504,0.0087451994355171,0.00937501188746428,0.00942547072295565,0.0108194586206047,0.00997676365117076,0.0114657604885073,0.00943553418553241,0.0112653013029436,0.00992117897681421,0.0109309415175773,0.018548705704064,0.00973991436888279,0.00950903519241643,0.0100699302973968,0.00965621217582589,0.00963563701817057,0.00949533028308988,0.00992067935053318,0.00986032891622498,0.0106414584963792,0.00944884792097827,0.0104064234960069,0.019574440621171,0.010289727082408,0.010774662567059,0.0103610302589957,0.00943614206910708,0.011646166999038,0.00894581344855966,0.0094646375184827,0.00957880628350421,0.00958878568042951,0.00953127915072469,0.00937680305314422,0.00946357564301101,0.0162185833690443,0.0097040044763715,0.008993900688544,0.00819897864448021,0.0093375427532869,0.00959708058508516,0.00928211323597301,0.00926296190514353,0.00947206551990529,0.00942285901347853,0.00997741631180316,0.00906720029180825,0.00930718015638356,0.00945061030507386,0.0137655523248623,0.00868242796148121,0.00864536177503417,0.00858256427405294,0.00895426099966215,0.00821367983718501,0.00890720067868162,0.00874458864163893,0.00841946126756705,0.00901130473047459,0.00864539997742138,0.00906276207258765,0.00843296363191608,0.00877825203729353,0.00858642856208641,0.00875546839769855,0.00839154811799416,0.00885787284646264,0.00875717938518359,0.00914482458706828,0.00917680133205261,0.00881934919870699,0.00860411517481744,0.00930100301481236,0.00913354499431382,0.012700512159237,0.00903219509218926,0.0103388717464519,0.010038619121337,0.00870988350315732,0.00907415901543496,0.00988574685737935,0.00963911009224775,0.00902523135450031,0.00880870187163157,0.00938576991785438,0.0093578970565002,0.00936660193996738,0.00928715998761028,0.00937168166036721,0.00930684520519263,0.00936087495752162,0.00932698382567967,0.0092869587131201,0.00908869728643185,0.00930910749392498,0.00918114027131383,0.00915163699121506,0.00927081039228981,0.00918833578835722,0.00904578317210883,0.00897585120598936,0.00924268742071953,0.00913718647403485,0.00921661359993751,0.00917088012373775,0.00904611558204578,0.00913443324457995,0.00890673172005498,0.00923979359436933,0.00914441374236645,0.00889659126486824,0.00909079038073225,0.00894948571312834,0.00907524397304867,0.00904251456062629,0.00889685109111279,0.00896054637078978,0.00903244518164692,0.00914688337816741,0.00888634500844414,0.00888363273608719,0.00871091308869278,0.00933291773512023,0.00923202275364656,0.00925705883550223,0.00870146514644339,0.00864323028631773,0.00919252486811782,0.00865869611167823,0.00933152054851864,0.00898741664417796,0.010112430891962,0.010840509678604,0.00892121733616672,0.0086149717405431,0.00821016965769864,0.0109566317437608,0.00879049357762262,0.00879940861052995,0.00882797943377631,0.0123769601710194,0.0110580659957532,0.0093330121997835,0.00915988549175706,0.00879303517320683,0.00926268652308365,0.00926996076367699,0.00929314626170782,0.00931614882769683,0.0092542768058811,0.00929454116333097,0.00926052555393189,0.00864302596713407,0.00928472801726951,0.00869214435878413,0.00866159909740407,0.00868953837728377,0.00873563696641945,0.00870000735465068,0.00861646366970952,0.00916751692425423,0.00879195535172893,0.0085923925006475,0.00850132494276211,0.00875644598581127,0.00850544085479362,0.00868983625367986,0.00941277399853377,0.00879499478392431,0.00988221097971489,0.0120166096911733,0.008841676152087,0.00872122623960047,0.00870276828217746,0.0085962966686702,0.00894281189350081,0.0087587854436722,0.00884514412434056,0.00874688722534753,0.00905888229031492,0.00896862952068624,0.00920229368414123,0.00911695976261291,0.00894688181095512,0.00859622042830307,0.00857488729103744,0.00909647160379821,0.00883288487069754,0.00910778185924641,0.00916200333680678,0.00916578195133655,0.00898093885409825,0.00897562794412882,0.00826222666058923,0.00859861779719326,0.00851933535346476,0.00835015030404793,0.00914474749785272,0.00806822440175774,0.00894367729978068,0.00918657849170193,0.00883175683109464,0.0089477972488459,0.00907465424022077,0.0094900491160066,0.00885344213342792,0.00913805600562154,0.00928097888833461,0.00927415605558116,0.00878569923522039,0.00815321812216445,0.00847869873980057,0.00830691525844641,0.00840256473610187,0.00831782971153432,0.00820919026189036,0.0107919895071976,0.00842834006316796,0.00810990540576625,0.00900032945976015,0.0089823213048793,0.00920289147046267,0.00910041421878648,0.00911654199864235,0.00828181283419721,0.00834439983488942,0.00810188140367534,0.00820404035743606,0.00823666097351242,0.00801470160679353,0.00817499172509653,0.00825271315784493,0.00830929904621637,0.00813126402128424,0.00820258067575712,0.00832456535125741,0.00836347330862349,0.00887578899980255,0.00911069135264847,0.0101239731975196,0.0100401282620408,0.00887885753528585,0.00895808027505581,0.00893512360517515,0.00879379157884175,0.00838544596404879,0.00839811751130547,0.00860740702972669,0.00962584980626774,0.00859892779531821,0.00820069699872591,0.0085316626398559,0.00821829241414792,0.00818186556705242,0.00848374317333836,0.008507064743401,0.00857277274466529,0.0083937947352411,0.0084610526292139,0.00848999241059076,0.00834595125355015,0.00882613641844659,0.00840829500537084,0.00819192566128179,0.0087244014968407,0.00873311176402912,0.00867140002083625,0.00866753202692252,0.00864074831771478,0.00874597710095672,0.00875022785729618,0.00870012020989482,0.00827131474582452,0.00804346160256711,0.00844730404072842,0.0083160262466513,0.0083015273483848,0.00823692354719299,0.00830128946120875,0.00809189544260216,0.00811579139101325,0.00809025182173577,0.00826615989755699,0.00814017087975159,0.00804244801003999,0.00882148266153615,0.00852676785575706,0.00890935882646944,0.0088817677660268,0.00881814115194259,0.00887208115201477,0.00869516210433941,0.00840065139412671,0.00855793230040507,0.00813275511249808,0.00886267211573578,0.00812033070888197,0.00864847870979897,0.00868605148657687,0.00839982845599096,0.00833212664206074,0.0119355295918197,0.012109377837747,0.0111153216738553,0.0106012692991056,0.0118562576721342,0.0093552471560363,0.0124219269866394,0.00942194963859621,0.0105353978853288,0.00920073027865626,0.00925019728431069,0.00964860512959714,0.0107733820377987,0.0103823260026694,0.00919101377314833,0.00940149540172764,0.0093186653668102,0.012407850036002,0.0139555323703113,0.0127294179427273,0.00902592506875093,0.00912026830751314,0.0106311393302699,0.0105180990491716,0.0108016106647103,0.0108631238363216,0.00887077404106955,0.0087604750105022,0.00887957420286748,0.00945671837639745,0.012504667365714,0.0138542645629714,0.00916686416110674,0.0107453307991787,0.00919395756688407,0.0100900909643509,0.00866494603972145,0.0091193297115073,0.00943121869082431,0.00874115942009732,0.00869459418258615,0.0111182396244735,0.0111852637401447,0.00918584386917827,0.0107808253120394,0.00928057200755691,0.00926820084456595,0.0100508182560427,0.00924918100495868,0.00889609571662068,0.00931134112474217,0.00899157173123054,0.00897378382266033,0.00943131850330708,0.00956612473722821,0.00974452573636266,0.00938493760608314,0.00862890660292582,0.00832684673590643,0.00833530243770137,0.00817558192934616,0.00820031523623398,0.00814914443317032,0.00807053697675848,0.00900835153848102,0.00807543669195656,0.0080196376343714,0.0091091091404994,0.00885240061536475,0.00902034343936862,0.00903327787188453,0.00891280798514572,0.00897220959215693,0.00906035946966649,0.00893450459556128,0.0088575622935617]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive4001.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive4001.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive4001.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive4001_field1":[401.153883546769,379.776373107523,339.337937191373,284.220707796819,220.397491960691,154.784525438065,94.4919912417395,46.0535209869463,14.718174526098,3.88162286622492,14.718174526098,46.0535209869461,94.4919912417395,154.784525438065,220.397491960691,284.220707796819,339.337937191373,379.776373107523,401.15388354677,401.15388354677,400.729790898949,379.352280459702,338.913844543553,283.796615148998,219.973399312871,154.360432790245,94.0678985939189,45.6294283391258,14.2940818782774,3.45753021840437,14.2940818782774,45.6294283391255,94.0678985939189,154.360432790244,219.973399312871,283.796615148998,338.913844543553,379.352280459702,400.729790898949,400.729790898949,400.145451898773,378.767941459527,338.329505543377,283.212276148823,219.389060312696,153.776093790069,93.4835595937436,45.0450893389504,13.7097428781021,2.87319121822907,13.7097428781021,45.0450893389502,93.4835595937436,153.776093790069,219.389060312696,283.212276148823,338.329505543377,378.767941459527,400.145451898773,400.145451898773,399.340830120242,377.963319680995,337.524883764846,282.407654370292,218.584438534164,152.971472011538,92.6789378152123,44.2404675604191,12.9051210995708,2.06856943969774,12.9051210995708,44.2404675604189,92.6789378152123,152.971472011538,218.584438534164,282.407654370292,337.524883764846,377.963319680995,399.340830120242,399.340830120242,398.233857155063,376.856346715816,336.417910799667,281.300681405113,217.477465568985,151.864499046359,91.5719648500333,43.1334945952401,11.7981481343918,0.961596474518728,11.7981481343918,43.1334945952399,91.5719648500333,151.864499046359,217.477465568985,281.300681405113,336.417910799667,376.856346715816,398.233857155063,398.233857155063,396.712759031651,375.335248592404,334.896812676255,279.7795832817,215.956367445573,150.343400922947,90.0508667266208,41.6123964718277,10.2770500109793,-0.559501648893729,10.2770500109793,41.6123964718274,90.0508667266208,150.343400922946,215.956367445573,279.7795832817,334.896812676255,375.335248592404,396.712759031651,396.712759031651,394.626077448199,373.248567008952,332.810131092803,277.692901698249,213.869685862121,148.256719339495,87.9641851431693,39.5257148883761,8.1903684275278,-2.64618323234527,8.1903684275278,39.5257148883759,87.9641851431693,148.256719339495,213.869685862121,277.692901698249,332.810131092803,373.248567008952,394.626077448199,394.626077448199,391.770026219697,370.392515780451,329.954079864301,274.836850469747,211.013634633619,145.400668110993,85.1081339146674,36.6696636598742,5.33431719902592,-5.50223446084715,5.33431719902592,36.669663659874,85.1081339146674,145.400668110993,211.013634633619,274.836850469747,329.954079864301,370.392515780451,391.770026219697,391.770026219697,387.87309692198,366.495586482734,326.057150566584,270.93992117203,207.116705335902,141.503738813276,81.2112046169505,32.7727343621573,1.43738790130897,-9.3991637585641,1.43738790130897,32.7727343621571,81.2112046169505,141.503738813276,207.116705335902,270.93992117203,326.057150566584,366.495586482734,387.873096921981,387.873096921981,382.578491100561,361.200980661314,320.762544745165,265.64531535061,201.822099514483,136.209132991857,75.9165987955309,27.4781285407378,-3.85721792011054,-14.6937695799836,-3.85721792011054,27.4781285407375,75.9165987955309,136.209132991857,201.822099514483,265.64531535061,320.762544745165,361.200980661314,382.578491100561,382.578491100561,375.426296284724,354.048785845477,313.610349929327,258.493120534773,194.669904698646,129.056938176019,68.7644039796937,20.3259337249006,-11.0094127359478,-21.8459643958208,-11.0094127359478,20.3259337249003,68.7644039796937,129.056938176019,194.669904698646,258.493120534773,313.610349929327,354.048785845477,375.426296284724,375.426296284724,365.839708827964,344.462198388717,304.023762472568,248.906533078014,185.083317241886,119.47035071926,59.1778165229341,10.7393462681409,-20.5960001927074,-31.4325518525804,-20.5960001927074,10.7393462681407,59.1778165229341,119.47035071926,185.083317241886,248.906533078013,304.023762472568,344.462198388717,365.839708827964,365.839708827964,353.123345460934,331.745835021687,291.307399105538,236.190169710983,172.366953874856,106.75398735223,46.4614531559041,-1.97701709888906,-33.3123635597374,-44.1489152196104,-33.3123635597374,-1.97701709888929,46.4614531559041,106.75398735223,172.366953874856,236.190169710983,291.307399105538,331.745835021687,353.123345460934,353.123345460934,336.486591288323,315.109080849076,274.670644932927,219.553415538373,155.730199702245,90.1172331796188,29.824698983293,-18.6137712715001,-49.9491177323484,-60.7856693922215,-49.9491177323484,-18.6137712715004,29.824698983293,90.1172331796188,155.730199702245,219.553415538372,274.670644932927,315.109080849076,336.486591288323,336.486591288323,315.109435333,293.731924893754,253.293488977604,198.17625958305,134.353043746922,68.7400772242961,8.44754302797037,-39.9909272268228,-71.3262736876711,-82.1628253475442,-71.3262736876711,-39.990927226823,8.44754302797037,68.7400772242959,134.353043746922,198.17625958305,253.293488977604,293.731924893754,315.109435333,315.109435333,288.268166694584,266.890656255337,226.452220339188,171.334990944634,107.511775108506,41.89880858588,-18.3937256104457,-66.8321958652389,-89.1901881066781,-89.1901881066781,-89.1901881066781,-66.8321958652391,-18.3937256104457,41.89880858588,107.511775108506,171.334990944634,226.452220339188,266.890656255337,288.268166694584,288.268166694584,255.526453051055,234.148942611808,193.710506695659,138.593277301105,74.7700614649771,9.1570949423508,-51.1354392539749,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-51.1354392539749,9.1570949423508,74.7700614649771,138.593277301104,193.710506695659,234.148942611808,255.526453051055,255.526453051055,216.966797531247,195.589287092,155.150851175851,100.033621781296,36.2104059451692,-29.4025605774571,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-29.4025605774573,36.2104059451692,100.033621781296,155.150851175851,195.589287092,216.966797531247,216.966797531247,173.391458687101,152.013948247854,111.575512331705,56.4582829371507,-7.3649328989768,-72.9778994216032,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-72.9778994216032,-7.3649328989768,56.4582829371504,111.575512331705,152.013948247854,173.391458687101,173.391458687101,126.386222934425,105.008712495179,64.570276579029,9.4530471844746,-54.3701686516526,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-54.3701686516526,9.4530471844746,64.570276579029,105.008712495179,126.386222934425,126.386222934425,78.1582984266634,56.7807879874167,16.3423520712672,-38.774877323287,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-38.7748773232872,16.3423520712672,56.7807879874167,78.1582984266634,78.1582984266634,31.153062673988,9.77555223474133,-30.6628836814084,-85.7801130759626,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-85.7801130759628,-30.6628836814084,9.7755522347411,31.153062673988,31.153062673988,-12.4222761701583,-33.7997866094049,-74.2382225255545,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-74.2382225255545,-33.7997866094051,-12.4222761701583,-12.4222761701583,-50.9819316899659,-72.3594421292125,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-72.3594421292127,-50.9819316899659,-50.9819316899659,-83.7236453334953,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-83.7236453334953,-83.7236453334953,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-89.1901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781,-0.891901881066781],"Archive4001_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.13752339530038e-05,-1.18152192953858e-05,-1.13776786747621e-05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.15060256575816e-05,-1.19997039291775e-05,-1.20169679576065e-05,-1.19945507321972e-05,-1.15073162305634e-05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.20128306662082e-05,-1.2030857760692e-05,-1.20314216474071e-05,-1.20270005936618e-05,-1.20212098408956e-05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.20313943625661e-05,-1.20299355330644e-05,-1.20339191198582e-05,-1.20328350021737e-05,-1.20286958917859e-05,-1.20188333312399e-05,-1.20234408313991e-05,0,0,0,0,0,0,0,0,0,0,0,0,-1.20312442959403e-05,-1.20317336040898e-05,-1.20325785246678e-05,-1.20315489766654e-05,-1.20312943181489e-05,-1.20295580927632e-05,-1.20245795187657e-05,-1.20078066174756e-05,-1.2023593626509e-05,0,0,0,0,0,0,0,0,0,0,-1.1676217582135e-05,-1.20178183351527e-05,-1.20339173008688e-05,-1.20334188977722e-05,-1.20321319627692e-05,-1.20316899483441e-05,-1.20312533908873e-05,-1.20320710266242e-05,-1.20215645438293e-05,-1.19793185149319e-05,-1.16839328256901e-05,0,0,0,0,0,0,0,0,0,-1.20097374747274e-05,-1.2033300663461e-05,-1.20335298561258e-05,-1.20328377306578e-05,-1.20302383948001e-05,-1.20295972010354e-05,-1.20278409667662e-05,-1.20287559184362e-05,-1.20293279906036e-05,-1.20266677186009e-05,-1.2027628145006e-05,0,0,0,0,0,0,0,0,-1.20312142826151e-05,-1.20273380161962e-05,-1.20353261081618e-05,-1.20316381071461e-05,-1.20310778584098e-05,-1.20318745757686e-05,-1.20305176096736e-05,-1.2028250239382e-05,-1.20246950245928e-05,-1.20188624350703e-05,-1.20043278002413e-05,-1.19629585242365e-05,-1.1989501217613e-05,0,0,0,0,0,0,-1.19464411909576e-05,-1.20264303404838e-05,-1.2032928680128e-05,-1.20334680104861e-05,-1.20316044558422e-05,-1.20314780360786e-05,-1.20306349344901e-05,-1.20302793220617e-05,-1.20292761494056e-05,-1.20274526125286e-05,-1.20271015475737e-05,-1.20259946925216e-05,-1.19986634672387e-05,-1.1886339962075e-05,-1.17921763376216e-05,0,0,0,0,-1.1404247743485e-05,-1.21152579595218e-05,-1.20335416795569e-05,-1.203313604492e-05,-1.20324702947983e-05,-1.20320428322884e-05,-1.20319582492812e-05,-1.20302665891359e-05,-1.2030260222673e-05,-1.20301019705948e-05,-1.20280928967986e-05,-1.20264585348195e-05,-1.20231989058084e-05,-1.19989081213134e-05,-1.18314055725932e-05,-1.14125805339427e-05,-1.11342033051187e-05,0,0,3.19377875257487e-07,-7.33872047931072e-06,-1.20901459013112e-05,-1.20370323202224e-05,-1.20323811643175e-05,-1.20323256851407e-05,-1.20322620205116e-05,-1.20322556540486e-05,-1.20312652143184e-05,-1.20308213809039e-05,-1.20301765491604e-05,-1.20288241305389e-05,-1.2027152479277e-05,-1.20212789624929e-05,-1.19930273285718e-05,-1.18346542876679e-05,-1.1211258424737e-05,-1.00169454526622e-05,-7.28664326743456e-06,3.19377875257487e-07,3.19377875257487e-07,1.95476131921168e-05,-1.19006517707021e-05,-1.2017481822113e-05,-1.20306458484265e-05,-1.20321901704301e-05,-1.20325466923532e-05,-1.20326167234452e-05,-1.20312388389721e-05,-1.20308877740172e-05,-1.20302429422736e-05,-1.20294125736109e-05,-1.20285467346548e-05,-1.20233116831514e-05,-1.20103968583862e-05,-1.19076412374852e-05,-1.16644005174749e-05,-1.2523038094514e-05,-1.40858019221923e-05,3.19377875257487e-07,3.19377875257487e-07,3.87453546863981e-05,-1.39849271363346e-05,-1.21618177217897e-05,-1.20370223157806e-05,-1.2032654012728e-05,-1.20325612442684e-05,-1.20326230899082e-05,-1.20317745313514e-05,-1.20311578939436e-05,-1.20298136607744e-05,-1.20291024359176e-05,-1.20289005280938e-05,-1.20297027024208e-05,-1.20296444947599e-05,-1.19763408292783e-05,-1.15573802759172e-05,-1.14330523501849e-05,-2.91712312900927e-05,3.19377875257487e-07,3.19377875257487e-07,4.61219060525764e-05,-1.57301456056302e-05,-1.22492929222062e-05,-1.20402191896574e-05,-1.20341092042509e-05,-1.20327968033962e-05,-1.20325903480989e-05,-1.20321592476103e-05,-1.20313716251985e-05,-1.20308277473669e-05,-1.20303147923551e-05,-1.20337026601192e-05,-1.20401446110918e-05,-1.20406157293473e-05,-1.19554733828409e-05,-1.13228006739519e-05,-1.04154942164314e-05,-2.50873054028489e-05,3.19377875257487e-07,3.19377875257487e-07,4.38202077930328e-05,-1.64550783665618e-05,-1.2234045243531e-05,-1.20425575005356e-05,-1.20303866424365e-05,-1.20257964226766e-05,-1.20247023005504e-05,-1.20260328912991e-05,-1.20312006401946e-05,-1.20400754894945e-05,-1.20558725029696e-05,-1.20772465379559e-05,-1.20976310427068e-05,-1.21140219562221e-05,-1.20311269711237e-05,-1.09559205156984e-05,-9.28041208680952e-06,-2.81843022094108e-05,3.19377875257487e-07,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive4001_field3":[-18.3591386125994,35.1222754634042,72.5792821375512,104.759474927178,134.419681409796,158.523375988632,169.621795557287,153.71100599433,94.5689901225405,-5.97185749569174,-106.694203532898,-166.243365425175,-183.350570603077,-172.558593322773,-146.352855709969,-114.486987660583,-82.392603634366,-50.8201338690718,-16.96498718048,32.0980635595105,30.646947475403,48.4395501114357,75.1389899141719,104.386234829656,131.188658358667,150.245652590824,158.078722161819,148.37582287903,96.9836826998106,1.89713461569585,-92.9460041916326,-143.979040467613,-153.964088280926,-146.124715892766,-128.01612274753,-101.627007409571,-71.5343157687183,-42.4109399009321,-15.8086756434585,4.4018386612339,47.151847094373,53.1426347041127,74.4914434671176,102.384841027923,126.67488417728,140.461082884413,144.616279099451,137.623766950978,92.6311219949058,1.85854207488776,-89.1830250827676,-134.773865778147,-142.49153007429,-138.510730771621,-125.632841078953,-101.368563512481,-72.5028575649251,-44.9289603810363,-24.8345723797895,-16.1873447064445,51.5780530968652,54.4846570775614,75.0995469563281,103.01338721969,127.021702902426,137.895928470341,139.930011677142,134.298733293488,91.3390693012813,1.20166643276911,-89.0417513776418,-132.482223140123,-138.396855432145,-136.599466879692,-126.217265830378,-102.049863589625,-72.9205635662159,-45.1453604582658,-26.159332639865,-21.3797263966349,52.9570554745826,55.0717727452794,75.3936098563472,103.307181465441,127.381486924322,137.55095401591,138.519378823229,133.535879230612,91.2397964297103,0.921959131198288,-89.3552734800514,-131.942623811578,-137.074883896183,-136.603005106566,-126.500406039225,-102.374381892,-73.1667971635201,-45.2165069423959,-26.0730069232699,-23.1906004524685,53.4508266377811,55.3472762163576,75.5290047220573,103.480956150594,127.703841826121,137.859527373118,138.269388753166,133.554196531348,91.6477270665683,0.92992504120626,-89.7845760477492,-131.99923727998,-137.146966463437,-136.934035625211,-126.789565922687,-102.535811444451,-73.2323403673654,-45.1911296196794,-25.8907678764521,-23.7790973290237,53.6536184527196,55.4944051408271,75.680953551703,103.820954576657,128.449711300992,139.102657495157,139.363144319482,133.943431505338,92.394070340793,1.15010447011009,-90.3061745183838,-132.379988391522,-138.213563337829,-138.06438536848,-127.487331949234,-102.780779624267,-73.2774925986743,-45.1439915975364,-25.7150006797843,-23.8602660075784,53.8243596989618,55.6671593790072,75.9562030259472,104.448188770472,129.852628888748,141.528479030016,141.763117855452,134.95006380698,93.608563072893,1.65594579241433,-90.8630941721613,-133.088547861911,-140.454320688616,-140.301698404712,-128.714155947696,-103.239368093003,-73.4114937301291,-45.1300664742397,-25.5863214655418,-23.7945282617508,54.1102180442508,55.9774119306185,76.4436243360911,105.452731631988,131.982122734886,145.183079954275,145.650123367995,137.044678971357,95.4961288678255,2.60926634658284,-91.3937400096257,-134.677285143922,-144.090047446655,-143.715914759006,-130.53422486902,-103.997192554084,-73.7057877698298,-45.1973838774463,-25.5448153440723,-23.7484405598385,54.6089293341176,56.5093097973124,77.2418596223862,106.964566192946,135.002707866779,150.464010472376,151.703113929722,141.074711645427,98.3783115834783,4.25293441978917,-91.7578417441088,-137.794675692,-149.764735358582,-148.667959466678,-133.134402933749,-105.169526367802,-74.2324557132485,-45.3868253890398,-25.6007303420595,-23.7779547903345,55.4125334508667,57.3462747357015,78.4770403759941,109.186161589379,139.266629354205,158.061192611449,161.124467989146,148.572032412937,103.019137090786,6.88212903125327,-92.0210650738567,-143.59895135158,-158.650237831208,-155.818037538596,-136.851015972413,-106.934009790267,-75.0893926656951,-45.7456148791799,-25.7573091839125,-23.906196605511,56.6382815215182,58.5960195874773,80.3250263871162,112.421262212768,145.31582432583,168.98303873254,175.797803041944,162.072272104696,111.261507444789,10.6924107420678,-93.6472877403614,-154.189728527961,-172.553808122777,-166.14290297424,-142.180799072797,-109.550475849626,-76.4214720514898,-46.3446528925714,-26.0325509573402,-24.1645033655876,58.452808920239,60.4141504394803,83.0412360286338,117.12171647204,153.950674176048,184.655469747841,198.373081664409,184.983824972068,125.507418742125,13.8398397617285,-101.446289906519,-173.375285424401,-195.23434755929,-181.169876920141,-149.697911096098,-113.299894740562,-78.4049038899343,-47.2846069911445,-26.4685466650402,-24.6078672425713,61.1001235205491,63.0342295643953,87.0075360383888,123.984063854596,166.432849696822,207.21498436702,232.030861631459,219.183907302716,140.363121669324,1.15048573019816,-136.780638186888,-233.56600051445,-251.064297478297,-207.335009910958,-161.013606920136,-118.693072580256,-81.268957636548,-48.7042382580011,-27.1390763725634,-25.3229076095319,64.9458174833007,66.8157316665196,92.8176510746267,134.157443427047,185.052461231525,240.817662841049,281.031865134249,257.325423352263,132.983898355167,-46.9076833531782,-243.224813163704,-384.770501704368,-377.763984003586,-275.400203805228,-180.879728049019,-126.606097404557,-85.2273887205691,-50.7107746609349,-28.1342651583465,-26.4192235000338,70.556078339291,72.328275986283,101.446284604688,149.709842613373,214.634830642957,296.175824576534,354.566326636807,273.677510744611,111.587170390422,-101.009136049579,-320.303505257956,-498.620662644833,-604.847375467241,-436.988795347956,-245.114636372534,-142.211654822703,-91.892382676722,-53.7572538929551,-29.6497966842949,-28.0961859774124,78.8491330667421,80.5115354188277,114.638543029074,175.049886794401,269.173460726765,417.997065523037,422.351765808717,286.422254976608,81.4094309673291,-124.045400106439,-340.464311924085,-556.524355092084,-714.442868208902,-767.393068500575,-362.851302769799,-170.936649096155,-103.424489375658,-58.7565379156422,-32.078351128543,-30.7038441574829,91.3857421834191,92.9703417898626,135.573960950933,218.965725251927,377.388872719341,525.468734003164,438.637972424734,251.486310644434,64.1754247696907,-125.76793239015,-320.171216999856,-520.764580233991,-669.863592336574,-715.954631534339,-472.060240047022,-237.660216938992,-120.223618747955,-65.8177801593492,-35.7125983312053,-34.5580128301561,110.992528874452,112.579146312539,168.359173910456,280.341959223018,456.965039539075,453.609428958349,354.794951408182,206.15007692294,46.8681166389957,-118.748074394208,-289.087681400146,-450.119486062665,-594.617965418955,-685.576114809712,-733.111233303427,-416.000789095728,-184.333069887678,-81.5326144557153,-43.0309021870774,-41.7026358021439,144.096333816297,146.827478208449,229.904532535415,409.357640700997,469.812550018894,406.598647601742,294.080342588734,169.022736946149,34.5617130684111,-105.339476522661,-244.409673879833,-377.828635081274,-504.524303335198,-620.580578784199,-700.861739481399,-714.336359752377,-299.539855193031,-112.383578404813,-58.0663098438441,-56.4014585919592,201.314082327937,209.098716662802,335.732820328139,468.740102195461,431.505258522164,342.813704370057,244.645407826348,138.456749361139,26.119390171924,-88.4753494644949,-201.108726359237,-309.302458737529,-412.975891729265,-513.90761792838,-576.806331887719,-588.379796785822,-386.103969635847,-178.35880300867,-86.0009689753309,-87.4749360163404,280.794606682406,295.939536532777,388.192466174653,387.111209523655,342.236126161492,274.581488673706,195.914657946002,109.710270446709,18.9061266972842,-73.1217741787829,-163.35383946756,-250.022037298203,-332.738783562772,-403.962900755133,-458.160872485956,-479.690511564865,-493.413153591753,-306.138431365088,-162.370637888138,-160.505777806094,331.951238931891,352.841528349263,350.041913078246,313.904968310426,266.838469291291,211.835309324752,149.806119529568,82.3130622022504,11.5110376216279,-60.1243265614868,-130.291504327897,-197.233765640363,-258.293276615845,-309.87846728398,-349.026162521139,-380.538142214175,-404.625702056998,-409.818290064727,-305.728703484593,-313.35985158324,238.720233699867,267.882558550816,248.970552372127,220.855532414273,187.873942825388,148.549579535508,103.612069126555,54.4123207004947,2.5992449805975,-49.96579918515,-101.332425863328,-149.447743335646,-192.218102597199,-227.913336412932,-257.422640567545,-283.701655916926,-304.436777496259,-319.877778201911,-327.869459409687,-328.377780185131,0,90.0728666024758,110.107576018932,109.543362856944,98.1484778585864,78.6373575278332,53.0116045757473,22.999907088009,-9.78563152733179,-43.6226384864764,-76.6299788281807,-107.044720149983,-133.586065018135,-155.74216791138,-173.884051879286,-186.803299072008,-195.406762898462,-200.936101230463,-193.126106833994,0,0,22.93633046323,35.3889784383519,35.6876393961236,29.6768464234138,19.9068547543146,7.23618671859861,-7.6624302180053,-24.0305004645625,-40.757995556535,-56.5358259516736,-70.4418007630738,-82.4401424822756,-90.9197425861227,-97.759878766841,-103.846693736284,-106.967070271289,-101.413141725773,-52.0837757656757,0,0,-2.02051675146167,-5.17000211834446,-12.1110458098997,-18.7527985697368,-24.1232606313791,-28.7820642675902,-32.884603595346,-36.2750187736474,-38.4118918946858,-38.6235038583315,-38.8015347506097,-39.3278991500459,-39.5597533585559,-40.7883588682389,-42.4465400908429,-41.7859040134242,-30.1523276975374,-8.76821758385182,0,0,-26.561269927959,-50.7219731257065,-65.6106134723595,-71.1985829442922,-71.8764650635954,-69.5271586866818,-64.7278252731057,-56.2384135427389,-41.6175144662727,-23.1910137918715,-6.84014128399575,5.9327696303941,14.3764057290894,18.9868926268562,20.3823528546753,21.0692220924152,22.4830921266833,18.3818267649873,0,0,-80.5341359893491,-136.205333280358,-150.596455710908,-151.44361025787,-147.846522644269,-136.467682274611,-115.021630962808,-84.7982738102747,-48.910982596342,-10.9448446250404,25.2892452849961,56.9298596545464,82.1078181258879,98.8458252296063,106.798592408378,107.387520551008,97.544713542258,65.6012751798469,0,0,-235.822521370173,-273.488305026627,-275.023502219433,-266.310794693188,-245.393773006952,-213.139782106505,-169.84378465506,-117.424863317418,-59.7203589950785,-0.347096073585163,56.9865088134047,109.384396219235,155.646126188447,195.81490294692,231.196451272039,252.679418895129,251.424914319351,213.898834341934,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive4001_field4":[200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,10.6235079217429,14.4857840658722,23.6232824697989,29.6650042553108,32.9970704395272,33.9462191134835,39.2643256871854,50.0043324378989,60.1764260711019,65.7984677460471,65.6423838903595,58.8768283600268,49.9191352301133,43.4895468068042,40.0497287572469,36.4773173002466,30.5384763664245,24.2932399818465,17.7776257233401,24.1373780030595,4.68432423121622,4.87896448219386,8.34032275461177,11.062698642982,13.7856159902719,16.0433641445825,18.3230386557684,22.9690920283845,27.2944546469724,31.1197084857862,34.1073979895276,33.2503070524322,29.2928755167208,25.5561640749602,23.1380637957289,19.0256203835464,14.5908085241523,10.3231650766292,7.38629059413657,12.3885731928488,3.25176680423222,2.88903736133611,3.32715866548225,4.47845876715563,6.87113830027737,10.1516598392728,11.78030935407,13.8095876339181,15.581371702114,18.8154245863786,22.7662938858366,24.314479674638,22.4654778222542,20.4217622876019,17.3238633790653,12.8517764738942,9.44233684199343,6.63371256647735,5.13930884232761,7.8444945509033,2.91901022791468,2.50648451051757,2.04820595117217,2.52821868397237,4.7941906645214,8.49534031065384,9.79824878646738,10.6873381231947,11.9527956343196,15.2705501771009,19.1981308681219,21.2138287419814,20.2304643597212,19.6524860242754,15.3313990096385,11.0209344022776,8.12309784239364,5.89597814824867,4.84906936993152,6.2170716220607,3.13752259294327,2.8011147718454,2.21454010001789,2.5067282759882,4.72005896852825,8.51950474890184,9.47749083059872,10.1851196548147,12.3746848175844,16.1839754894807,19.6328625340024,20.87644154145,20.0036199081996,19.6997149860548,15.2416686199713,11.0371816676615,8.25274757039441,6.14351364138707,5.20842825855067,5.80058775008701,3.82428572165515,3.54304534397583,3.06042019301956,3.43798999299846,5.77458688132002,9.52636551094779,10.2125727058604,11.5701347996738,15.6309575375169,20.3153339389893,22.9580670105599,22.3947667682941,20.8997340171068,20.5823862940959,16.2875483263451,11.9692857460126,9.07569782378541,6.90277693500146,5.90339615563749,6.11506854208055,4.9959714790329,4.69990233298418,4.40034875564258,5.03005409286706,7.69371467916243,11.6191336167904,12.6947408589045,15.2126088704881,21.8329897788023,27.9030293874324,29.3403340226684,25.9395122756682,23.5514948383597,22.8152437761855,18.2449981703849,13.561222768836,10.4157238325074,8.08919359063722,6.95952940177604,7.04831309275578,6.71282232183361,6.33797460412667,6.27473874938359,7.28265788446023,10.513011943607,15.173645753491,17.3820713533906,21.8911796629919,31.9642989636689,40.264593254209,39.8837679387446,32.4990704482977,28.4444897383729,26.6047010311787,21.1587650619672,15.8454322836549,12.3168289307595,9.76630088369632,8.48641957259689,8.58399988576934,9.08717691949587,8.58765518578479,8.83021603899346,10.3547227066986,14.4365804612559,20.5260462132156,24.935338892339,32.8562469499419,47.9299794237151,59.8747139391647,56.7551613157174,43.6406613681338,36.3487013614263,32.2289324877112,25.2208958312378,18.9939619733283,14.9296607243756,12.0737913043297,10.6202188133474,10.7807682931475,12.2955120283629,11.6367936454568,12.2863974101242,14.5095183318908,19.7747760302401,28.1251986365127,36.3847413765999,50.0515249846878,72.9784444576532,90.6863103585504,83.6790413276143,62.3371079198503,48.6940739381053,40.156985201982,30.7493752677555,23.2789734493786,18.4800172347718,15.2080381885086,13.5354221433957,13.7823888384227,16.5871950517949,15.7359785681888,16.9364742904503,20.1138512067934,27.0027760400073,38.7044286989875,53.3585925568053,76.6672597688548,112.487039862763,138.840854381808,127.519010413072,94.6441144409081,68.2972476464184,51.2513275562983,38.2374671022115,29.0906118066362,23.2717904534435,19.424485581968,17.462428049262,17.8159184573573,22.2931608836864,21.2072071888442,23.1635260378055,27.677455842367,36.8755559418453,53.5636995110646,78.6638034360393,118.603482166505,175.485955542477,214.76614159444,201.231768204971,153.155555599685,102.524416609831,67.427371162498,48.4347936795643,37.0109287802183,29.7235266960179,25.0527187364112,22.6987750954663,23.1883377008444,29.838266469801,28.4531990658639,31.4678634795831,37.9269133874375,50.6487703381145,75.2899415464424,118.146161028243,188.081982214953,279.831392717753,337.344839202545,330.474196483082,281.841020288098,179.910786626529,93.6220787968204,62.0642753016674,47.8000838275259,38.4074743455189,32.5196911124251,29.6169192681929,30.2854849220958,39.76119734037,37.9681462796749,42.5104519396906,51.940967549712,70.5644394181005,109.862303621264,187.232056353367,315.244477116509,438.802347165079,493.251142462131,526.193508258101,524.81770530741,352.680710958511,162.889585318764,80.5153729065004,62.0597340987058,50.0731131871211,42.39547970243,38.6852750420773,39.5940650851159,52.7520700446442,50.3558791893428,57.1940030474947,71.4286149344544,101.121116516926,174.146391351726,336.440223270315,501.348373056221,573.555107135867,632.104804874184,680.423313644567,713.575054825238,684.028192868261,354.020959806473,131.846811487133,79.4233831665132,65.1861096913473,55.2841915474235,50.4536077498084,51.7190338384672,69.7361232207633,66.3749463087344,76.8396471382713,99.3530512944756,153.321203193378,336.680341164977,577.671752510507,635.995257655188,698.507647059344,753.499141101998,804.338711452607,859.978470136145,895.260337159005,804.750062066326,239.72204882088,103.236630006036,83.9549412291312,71.8171727213346,65.5572704999129,67.3912165921359,92.0740757779132,87.0549904241244,103.596864482429,141.472347836099,267.225038687872,612.785036554305,701.131764222684,756.645494436208,813.61131429753,866.946779186163,914.439485119512,967.694197032538,991.518005287897,919.579074448774,449.038325103339,182.694790524416,108.220660345824,92.7638926422448,84.9136547619432,87.9549026523818,122.034632366741,113.999458676624,141.91356796993,214.449639018709,474.679314984178,711.846450674457,786.385057819875,852.62001462858,910.928828443468,962.34592949019,1006.30229281398,1031.87633238733,1034.79086547792,1006.12970754962,898.855827389791,414.800025859706,173.342996173457,118.658170690609,109.172116430856,115.214184294063,163.081220003698,150.230375693094,204.392743782335,400.035613872765,683.160604445415,776.168791088765,858.364871164647,929.610901433227,989.966143090527,1039.56081801919,1073.91805765178,1087.87142456455,1080.64499336213,1065.6700650301,1026.89092895328,895.236841257769,307.499078802019,156.609028452531,139.74647055522,151.731164664083,215.013666411198,201.474060014356,326.944031584382,634.811512264303,742.643486373938,833.032951580061,918.485397392368,992.403661711526,1053.09179467717,1098.64937791063,1125.94913674952,1132.80495062918,1120.40316156192,1102.15405442565,1050.26506465852,941.001733250484,522.602574240452,261.63091174,185.206335772322,206.017644342076,258.143240588845,279.168126573446,485.551341447415,671.250817866442,776.668027718178,877.215363472412,966.84602327841,1042.55412409079,1102.26966552282,1143.9328501636,1165.64066609024,1166.74177736558,1149.04874502003,1110.4427092483,1046.23245194564,946.389349639858,818.908343312671,480.911721967211,287.733404271375,291.596885992558,265.083824525369,388.237782417367,552.046159192885,691.034603683509,807.068892802003,912.793004164125,1005.26162924745,1081.80176330045,1140.18124284736,1178.49848087239,1195.54647741381,1191.20244986602,1165.05322457814,1115.99818023324,1041.62867051586,950.028672270495,847.737172772109,718.123930510071,467.409468570855,417.469007938388,237.074161942153,413.236073902017,571.412615296609,708.826746019582,830.72562524515,940.109602145618,1034.64911881599,1111.57212443229,1168.69828277222,1204.21073216001,1217.14932354553,1207.17971125245,1174.30625712535,1118.65462936911,1042.11692400036,950.50965851356,847.052540331406,729.798919367106,573.13194836269,426.31638745719,0,381.540404491627,567.159434731534,715.303011958552,844.015965586857,957.795316353956,1054.75826934193,1132.3509319286,1188.72920488864,1222.03309953049,1231.38050038402,1216.72946886221,1179.09527495616,1119.94713519299,1041.65547642398,946.493053312794,839.31533029843,718.130930102407,556.000657279599,0,0,341.188011229685,556.021791906187,717.983036515108,853.163567653844,970.046267694,1068.43303130827,1146.11561143522,1201.68786120733,1232.94825835515,1239.22373429474,1220.98643982259,1180.39936810546,1118.24255340045,1037.53645197841,939.257216134591,825.58549792452,686.362239884035,425.317917233629,0,0,316.170738867806,549.934373309146,722.54190310292,861.213441172363,979.075110411338,1077.64915940987,1154.64279296134,1209.11276743941,1238.17280472905,1241.52395901088,1220.72150411154,1177.77409188265,1114.70498706535,1032.35431724689,930.392126231805,806.159154191043,634.841583739753,366.560636574288,0,0,309.378442740566,556.81149301158,732.544345286603,869.331719925956,985.87302799277,1083.33130331751,1158.68134938561,1211.43514838452,1238.44234134543,1240.02759030927,1217.70833430368,1173.10923766638,1109.04081467412,1025.56583132757,920.639877583382,785.706377401668,604.501429570063,342.192453707346,0,0,328.966101082931,580.556152578401,744.241416736396,875.556851958915,990.25806075095,1085.29687907667,1158.10687612943,1207.31809869234,1231.70267768089,1232.44024278817,1209.94031182628,1165.52880861414,1100.92971909884,1016.29003697259,909.587256086635,770.951505077454,591.764173421376,341.146691697445,0,0,404.01190086765,602.269365760862,750.177219174306,877.947412136917,990.081521532971,1081.31426939396,1150.16797926399,1195.93898338896,1218.11050049949,1217.75355147738,1195.22293957848,1151.53901724958,1088.09356505972,1004.17992058449,895.910021451778,755.169081153405,581.039438799917,350.346511920281,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive4001_field5":[100.261899551338,100.371686177516,100.364175166047,100.355600693047,100.350549324773,100.364665145365,100.393351171348,100.431946991869,100.491442843244,100.522048796313,100.47457695376,100.397502143266,100.352154899064,100.335066799358,100.326741727741,100.328844281356,100.340184149702,100.353806406867,100.345870624337,100.378148006342,100.217959512034,100.183713422975,100.167457658959,100.169619412327,100.178171697702,100.192279651087,100.211465909744,100.258431009275,100.344405893719,100.392061874667,100.344011055155,100.258403362789,100.207010559452,100.187993273765,100.173331711571,100.165665779034,100.167229256179,100.177124452064,100.177856694866,100.168067959463,100.020541285507,100.04362530386,100.024470862648,100.028057254574,100.041899690712,100.06174477241,100.080620177842,100.129965988169,100.223981437589,100.276249661501,100.219859700413,100.12381790983,100.075737121407,100.060579004895,100.040855709815,100.024471374404,100.018841913527,100.021395463117,100.038538874098,100.085344018273,100.101481121913,100.070619757249,100.047984597135,100.04763983427,100.064121248724,100.084658270109,100.091826366096,100.127382362905,100.216875170735,100.270565687191,100.219001757487,100.130668367162,100.092922100725,100.084982223597,100.063747516936,100.046586540717,100.043721982466,100.051037897803,100.06859263683,100.087047385578,100.082688621408,100.063690549733,100.036548412719,100.03490937133,100.052719435928,100.076181352726,100.083177732131,100.115893799449,100.203935798893,100.256722183533,100.203924607098,100.115699296254,100.08227663892,100.075920895398,100.05183616113,100.033856823529,100.03088765131,100.03860041758,100.064291040703,100.087801600697,100.08776478147,100.064823232367,100.037870018649,100.035087262524,100.052449301307,100.076817407884,100.082765390358,100.11318338416,100.199465367374,100.252975305968,100.200326352838,100.113263814747,100.083613839161,100.077204116419,100.052041033314,100.034466425473,100.032411243244,100.039241597969,100.064945964602,100.087074607914,100.085895682116,100.063966834926,100.036506501204,100.033164007227,100.049716180645,100.074749159913,100.081204128667,100.110314224108,100.194114938857,100.248442584124,100.195332993579,100.109878236576,100.082310474899,100.074448814976,100.049243690074,100.032341215862,100.031041356292,100.038107004093,100.064778267239,100.086396652026,100.085452644406,100.063454061807,100.035798347667,100.031689382521,100.046939616984,100.071639569309,100.079867216095,100.10763617563,100.188569515764,100.243710148918,100.190227345659,100.107405182079,100.081363750217,100.071250878149,100.046456290737,100.030917951227,100.030328847786,100.037380497753,100.064227697666,100.085534773882,100.084439201617,100.062576227719,100.034547884092,100.029483647137,100.043100374843,100.067118474188,100.077961546647,100.104037610923,100.181451753653,100.236401222295,100.183349618384,100.104654650914,100.079411168819,100.066603425052,100.042403571189,100.028819524974,100.029091971144,100.036440321529,100.063459155482,100.084595347242,100.083313611318,100.061430476189,100.032845022644,100.026550755061,100.037995963997,100.060780194488,100.074549868211,100.099170177477,100.172057616674,100.22461985176,100.173979115598,100.101313196365,100.075688612268,100.060251861032,100.037001425692,100.026007999896,100.027359541867,100.035152183193,100.062388269425,100.083500390323,100.081864662367,100.05986250124,100.030406395151,100.022563285639,100.030994101387,100.051652519159,100.067951845504,100.092091530695,100.159055911002,100.206221759032,100.160214813799,100.09464379923,100.067467764874,100.050783813749,100.030033872424,100.022141951097,100.024828790445,100.033425147782,100.061023224284,100.082134572456,100.080046768648,100.057747063419,100.026966714936,100.017083495378,100.021251886465,100.038099466277,100.055359915357,100.080251774766,100.140215109231,100.179965501881,100.138895873449,100.079891208926,100.052517655012,100.03493072557,100.019798068761,100.017034361393,100.021272275797,100.030520843852,100.059186878937,100.080560768506,100.077764008511,100.054914525427,100.022111806097,100.009484897851,100.007419300294,100.017527874224,100.032007543634,100.057788043761,100.112758424289,100.143638747975,100.09328925367,100.03025622341,100.015227682593,100.012525369017,100.006158438242,100.008107271992,100.018275386394,100.027219510439,100.056339620306,100.078844703883,100.074928584066,100.051132084923,100.015344980644,99.9984346969936,99.9880681449832,99.9839905849663,99.9913399528808,100.013971977851,100.074808203615,100.10471251413,100.037301826235,99.8897835728605,99.8445927485415,99.9450894416538,99.9977607879331,99.9923722542835,100.007306670614,100.024215064808,100.052464054211,100.076535082198,100.07141162899,100.046162305876,100.005546878563,99.9830354301011,99.9552725842921,99.9347592872189,99.8992281445287,99.9662666284648,100.105900855422,100.175375989379,100.094385393499,99.8681296000895,99.6154822460997,99.6558291037122,99.9492300766281,100.010836147654,99.9917943883525,100.018319198419,100.0490405237,100.072020832605,100.066974304546,100.03953244295,99.9917351017177,99.955701739925,99.9131806746139,99.7820161471414,99.7877115763035,100.031087457092,100.187287555923,100.223326572343,100.199016607245,100.04875074803,99.6050783910294,99.3049686824233,99.544139799839,99.9862350480387,99.987270814839,100.002667571274,100.047190793986,100.068833548667,100.061546496008,100.030253278793,99.9706317279523,99.9149766121376,99.7630630710315,99.5349212457284,99.9046792302839,100.169036868078,100.202516747059,100.217155329485,100.226008951166,100.222357255232,99.9385955398925,99.3349557923976,99.3096751176415,99.8519481767897,100.002377649611,99.9826786185892,100.033793677261,100.069541741735,100.053339435059,100.018981165882,99.9296583828907,99.8358608884827,99.4931569661311,99.7599899396565,100.200580278269,100.204247340166,100.190303057025,100.202760122573,100.217269604653,100.209569736251,100.270385723727,99.667426545452,99.1996308251041,99.4383332876873,99.9422322227569,100.012045965837,100.01521683161,100.062298569272,100.043241215771,99.9960595710532,99.8967247311513,99.6190832729705,99.6032854416538,100.076502024909,100.151313316438,100.172487410325,100.18197439916,100.188689213581,100.208282890261,100.190370287143,100.199921691508,99.9818930054099,99.3831117912298,99.1177011121101,99.4765393822967,99.9821168324133,100.021139016117,100.039124373146,100.028332046981,99.966861360569,99.7238914739068,99.4692491609598,99.8880784528809,100.124878190148,100.14715527617,100.156209103868,100.165594952265,100.172577787058,100.176683072786,100.17476549872,100.162582914147,100.229419200738,99.9112559113538,99.3248137234749,99.3000827916214,99.8023663357297,100.026566265005,100.039566115952,100.026175250259,99.896284062298,99.5585919613893,99.8125769663254,100.135987891302,100.12815765793,100.135315415733,100.143208677118,100.149803164166,100.153880745137,100.153983265532,100.155258542528,100.139752838178,100.135014380052,100.227172453279,99.7704582567834,99.3526043508506,99.5079948710603,99.9101429981865,100.075075549558,100.076207999375,99.8239806629084,99.8240238814795,100.124898363661,100.094680973108,100.11250587912,100.120373086299,100.127500608246,100.132547984761,100.135389590359,100.135029935749,100.134227484646,100.142330882315,100.103787720779,100.127120327125,100.027978236793,99.6385557549991,99.4646706414859,99.6882942712381,99.9690771714844,100.049827651941,99.895420501457,100.068567689136,100.089638936972,100.093538280839,100.099033672825,100.105681160768,100.111214813286,100.115060903078,100.117004257971,100.117252404348,100.114221929903,100.113376085363,100.10255822835,100.078819090892,100.144337970068,100.023733677447,99.7509029075761,99.7937530080564,99.9685889535642,100.301730757564,100.159516315717,100.089106255313,100.083519168591,100.084303453182,100.088368665606,100.092130646313,100.09577505367,100.098289920059,100.09932123032,100.099288582079,100.09686351522,100.09114634755,100.085737776515,100.064938866631,100.061134386029,100.115672609831,100.051089467235,99.9927220232097,100.257786775014,100,100.015776900114,100.060826454416,100.06155302291,100.063758713458,100.069442124292,100.073937987328,100.077890328734,100.080414104668,100.081470348714,100.080825467287,100.078671826956,100.073404868031,100.068211378525,100.064822843502,100.046878361231,100.0526650678,100.058286787161,100.118811573052,100,100,100.115472815137,100.049070270094,100.057313391039,100.054059743934,100.057014380978,100.059254938956,100.061924494643,100.063183219172,100.063793558124,100.063119490159,100.062000343823,100.058439314862,100.052789431459,100.051848551466,100.052882515807,100.052291312874,100.087292639903,99.9716854456892,100,100,100.198276453787,100.055768672943,100.056709143728,100.049315564586,100.050699414412,100.04969005117,100.050242201165,100.049795446307,100.047684880768,100.046257661712,100.047615134524,100.046778778914,100.045923352296,100.046176137382,100.048384712791,100.052763801194,100.055747993226,100.03853702359,100,100,100.268399056268,100.039416880884,100.057519162719,100.044522321514,100.045599449952,100.043588757503,100.041117637505,100.035616343844,100.028353995872,100.026261476271,100.029126933558,100.032609656873,100.036541669514,100.040283371313,100.045138512902,100.050591207359,100.041344215015,100.006666184216,100,100,100.384791031796,100.004372105807,100.05280099775,100.046349863368,100.041088861891,100.032035232592,100.021614087096,100.013793150073,100.008669555847,100.007358952918,100.008909840533,100.013213641005,100.020239893785,100.029458575808,100.036654762984,100.047211706102,100.063870259086,100.035245974491,100,100,100.347314180666,100.039038522161,100.041827821002,100.034470530619,100.020415447013,100.008714327681,99.9976094713987,99.9894894230996,99.9845566968574,99.9832544720146,99.9850021655671,99.9877127877271,99.9904175923078,99.992337790993,99.9996897886364,100.029623225607,100.00657760776,100.242914584896,100,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"Archive4001_field6":[401.153883546769,379.776373107523,339.337937191373,284.220707796819,220.397491960691,154.784525438065,94.4919912417395,46.0535209869463,14.718174526098,3.88162286622492,14.718174526098,46.0535209869461,94.4919912417395,154.784525438065,220.397491960691,284.220707796819,339.337937191373,379.776373107523,401.15388354677,401.15388354677,400.729790898949,379.352280459702,338.913844543553,283.796615148998,219.973399312871,154.360432790245,94.0678985939189,45.6294283391258,14.2940818782774,3.45753021840437,14.2940818782774,45.6294283391255,94.0678985939189,154.360432790244,219.973399312871,283.796615148998,338.913844543553,379.352280459702,400.729790898949,400.729790898949,400.145451898773,378.767941459527,338.329505543377,283.212276148823,219.389060312696,153.776093790069,93.4835595937436,45.0450893389504,13.7097428781021,2.87319121822907,13.7097428781021,45.0450893389502,93.4835595937436,153.776093790069,219.389060312696,283.212276148823,338.329505543377,378.767941459527,400.145451898773,400.145451898773,399.340830120242,377.963319680995,337.524883764846,282.407654370292,218.584438534164,152.971472011538,92.6789378152123,44.2404675604191,12.9051210995708,2.06856943969774,12.9051210995708,44.2404675604189,92.6789378152123,152.971472011538,218.584438534164,282.407654370292,337.524883764846,377.963319680995,399.340830120242,399.340830120242,398.233857155063,376.856346715816,336.417910799667,281.300681405113,217.477465568985,151.864499046359,91.5719648500333,43.1334945952401,11.7981481343918,0.961596474518728,11.7981481343918,43.1334945952399,91.5719648500333,151.864499046359,217.477465568985,281.300681405113,336.417910799667,376.856346715816,398.233857155063,398.233857155063,396.712759031651,375.335248592404,334.896812676255,279.7795832817,215.956367445573,150.343400922947,90.0508667266208,41.6123964718277,10.2770500109793,-0.559501648893729,10.2770500109793,41.6123964718274,90.0508667266208,150.343400922946,215.956367445573,279.7795832817,334.896812676255,375.335248592404,396.712759031651,396.712759031651,394.626077448199,373.248567008952,332.810131092803,277.692901698249,213.869685862121,148.256719339495,87.9641851431693,39.5257148883761,8.1903684275278,-2.64618323234527,8.1903684275278,39.5257148883759,87.9641851431693,148.256719339495,213.869685862121,277.692901698249,332.810131092803,373.248567008952,394.626077448199,394.626077448199,391.770026219697,370.392515780451,329.954079864301,274.836850469747,211.013634633619,145.400668110993,85.1081339146674,36.6696636598742,5.33431719902592,-5.50223446084715,5.33431719902592,36.669663659874,85.1081339146674,145.400668110993,211.013634633619,274.836850469747,329.954079864301,370.392515780451,391.770026219697,391.770026219697,387.87309692198,366.495586482734,326.057150566584,270.93992117203,207.116705335902,141.503738813276,81.2112046169505,32.7727343621573,1.43738790130897,-9.3991637585641,1.43738790130897,32.7727343621571,81.2112046169505,141.503738813276,207.116705335902,270.93992117203,326.057150566584,366.495586482734,387.873096921981,387.873096921981,382.578491100561,361.200980661314,320.762544745165,265.64531535061,201.822099514483,136.209132991857,75.9165987955309,27.4781285407378,-3.85721792011054,-14.6937695799836,-3.85721792011054,27.4781285407375,75.9165987955309,136.209132991857,201.822099514483,265.64531535061,320.762544745165,361.200980661314,382.578491100561,382.578491100561,375.426296284724,354.048785845477,313.610349929327,258.493120534773,194.669904698646,129.056938176019,68.7644039796937,20.3259337249006,-11.0094127359478,-21.8459643958208,-11.0094127359478,20.3259337249003,68.7644039796937,129.056938176019,194.669904698646,258.493120534773,313.610349929327,354.048785845477,375.426296284724,375.426296284724,365.839708827964,344.462198388717,304.023762472568,248.906533078014,185.083317241886,119.47035071926,59.1778165229341,10.7393462681409,-20.5960001927074,-31.4325518525804,-20.5960001927074,10.7393462681407,59.1778165229341,119.47035071926,185.083317241886,248.906533078013,304.023762472568,344.462198388717,365.839708827964,365.839708827964,353.123345460934,331.745835021687,291.307399105538,236.190169710983,172.366953874856,106.75398735223,46.4614531559041,-1.97701709888906,-33.3123635597374,-44.1489152196104,-33.3123635597374,-1.97701709888929,46.4614531559041,106.75398735223,172.366953874856,236.190169710983,291.307399105538,331.745835021687,353.123345460934,353.123345460934,336.486591288323,315.109080849076,274.670644932927,219.553415538372,155.730199702245,90.1172331796188,29.824698983293,-18.6137712715001,-49.9491177323484,-60.7856693922215,-49.9491177323484,-18.6137712715004,29.824698983293,90.1172331796188,155.730199702245,219.553415538372,274.670644932927,315.109080849076,336.486591288323,336.486591288323,315.109435333,293.731924893754,253.293488977604,198.17625958305,134.353043746922,68.7400772242961,8.44754302797037,-39.9909272268228,-71.3262736876711,-82.1628253475442,-71.3262736876711,-39.990927226823,8.44754302797037,68.7400772242959,134.353043746922,198.17625958305,253.293488977604,293.731924893754,315.109435333,315.109435333,288.268166694584,266.890656255337,226.452220339188,171.334990944634,107.511775108506,41.89880858588,-18.3937256104457,-66.8321958652389,-89.8062000867852,-89.8385048551695,-89.8167138111867,-66.8321958652391,-18.3937256104457,41.89880858588,107.511775108506,171.334990944634,226.452220339188,266.890656255337,288.268166694584,288.268166694584,255.526453051055,234.148942611808,193.710506695659,138.593277301105,74.7700614649771,9.1570949423508,-51.1354392539749,-89.7898404770554,-89.8198512776667,-89.8329730568307,-89.8409092944468,-89.8376359756089,-51.1354392539749,9.1570949423508,74.7700614649771,138.593277301104,193.710506695659,234.148942611808,255.526453051055,255.526453051055,216.966797531247,195.589287092,155.150851175851,100.033621781296,36.2104059451692,-29.402560577457,-89.6950947737828,-89.821402552231,-89.8089031312727,-89.8200694353854,-89.8330754911696,-89.8261734585946,-89.6950947737828,-29.4025605774573,36.2104059451692,100.033621781296,155.150851175851,195.589287092,216.966797531247,216.966797531247,173.391458687101,152.013948247854,111.575512331705,56.4582829371507,-7.3649328989768,-72.9778994216032,-89.7739533833565,-89.7929334851109,-89.8014374623946,-89.8074565091434,-89.8250199514854,-89.8089633952198,-89.8175251135027,-72.9778994216032,-7.3649328989768,56.4582829371504,111.575512331705,152.013948247854,173.391458687101,173.391458687101,126.386222934425,105.008712495179,64.570276579029,9.4530471844746,-54.3701686516526,-89.7502573806118,-89.7702261859704,-89.7783418848943,-89.7867552015905,-89.7930144972949,-89.7966944063975,-89.7949755252455,-89.7840552612642,-89.8439661848255,-54.3701686516526,9.4530471844746,64.570276579029,105.008712495179,126.386222934425,126.386222934425,78.1582984266634,56.7807879874167,16.3423520712672,-38.774877323287,-89.7602159299353,-89.7531970403929,-89.7596131341417,-89.7666885209358,-89.7725997082507,-89.7762547832752,-89.7763466808334,-89.7774898176914,-89.7635907650138,-89.7593432908185,-89.8419522381791,-38.7748773232872,16.3423520712672,56.7807879874167,78.1582984266634,78.1582984266634,31.153062673988,9.77555223474133,-30.6628836814084,-85.7801130759626,-89.7231891029716,-89.7391670490252,-89.7462190812667,-89.7526080721032,-89.7571324555486,-89.7596796230297,-89.7593572346838,-89.758637931007,-89.7659016804325,-89.73135223847,-89.7522671945001,-85.7801130759628,-30.6628836814084,9.7755522347411,31.153062673988,31.153062673988,-12.4222761701583,-33.7997866094049,-74.2382225255545,-89.7186695065522,-89.7221648128338,-89.7270907898144,-89.733049486241,-89.7380097593187,-89.7414573295434,-89.7431993201948,-89.7434217544355,-89.740705288095,-89.739947087271,-89.730250142128,-89.7089707784433,-89.767700800149,-74.2382225255545,-33.7997866094051,-12.4222761701583,-12.4222761701583,-50.9819316899659,-72.3594421292125,-89.7181920196692,-89.7131838490697,-89.7138868685905,-89.7175308566578,-89.7209030329117,-89.7241698183927,-89.7264241023404,-89.7273485515184,-89.7273192861839,-89.7251454970248,-89.72002072405,-89.7151725719101,-89.6965287787884,-89.693118506343,-89.7420056531912,-72.3594421292127,-50.9819316899659,-50.9819316899659,-83.7236453334953,-89.6524608185774,-89.6928424816224,-89.6934937654046,-89.6954709093264,-89.7005654232414,-89.7045954392768,-89.7081382516608,-89.7104005219755,-89.7113473213792,-89.7107692605108,-89.7088387735272,-89.7041175601021,-89.6994622034282,-89.696424777606,-89.6803396454042,-89.6855267518796,-89.6905659665947,-83.7236453334953,-83.7236453334953,-89.6383186705767,-89.7418265605874,-89.6823044356558,-89.6896934306776,-89.6867769161164,-89.689425403086,-89.6914338015858,-89.6938267464198,-89.6949550459241,-89.6955021434996,-89.6948979203083,-89.6938947363495,-89.6907026898612,-89.685638229372,-89.684794840366,-89.6857216686168,-89.6851917242474,-89.7165663253086,-89.6129379801535,-89.6383186705767,-89.6383186705767,-89.8160503500714,-89.6883087713477,-89.6891517935465,-89.6825243135146,-89.6837647732313,-89.6828599969917,-89.6833549349637,-89.6829544714212,-89.6810625959575,-89.6797832607916,-89.6810000765965,-89.6802503814903,-89.6794835914519,-89.6797101837533,-89.6816899136161,-89.6856152548335,-89.6882902343971,-89.6728626105884,-89.6383186705767,-89.6383186705767,-89.8789070719433,-89.6736512998732,-89.6898778809511,-89.6782277310146,-89.679193250837,-89.677390899932,-89.6751758295131,-89.67024456237,-89.6637347157521,-89.6618590163638,-89.6644275640987,-89.6675494187223,-89.6710740087428,-89.6744280073259,-89.6787800746151,-89.6836677782484,-89.675378929784,-89.6442941260272,-89.6383186705767,-89.6383186705767,-89.9832388818739,-89.6422377527129,-89.6856485972011,-89.6798659088058,-89.6751500355367,-89.667034514454,-89.6576931748457,-89.6506826183935,-89.6460899146743,-89.6449151122445,-89.6463053018272,-89.6501631562087,-89.6564613710662,-89.664724842635,-89.6711753838283,-89.6806384501419,-89.6955708969519,-89.6699125695097,-89.6383186705767,-89.6383186705767,-89.9496452626303,-89.6733121454757,-89.6758124260594,-89.6692174746603,-89.6566187340285,-89.6461300473937,-89.6361758409311,-89.6288971661606,-89.6244755532925,-89.6233082608381,-89.6248748639541,-89.6273046200838,-89.6297291614333,-89.6314503952499,-89.6380406023261,-89.6648724319471,-89.6442147275817,-89.8560632202828,-89.6383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767],"Archive4001_field7":[547.786897226742,524.048054431601,478.927653624907,417.430610590698,346.22474155573,273.041403992846,205.808080768185,151.808993850807,116.910954882719,104.85236525449,116.894088993235,151.774549002203,205.766884495901,273.011805646839,346.200933958697,417.403854179007,478.903662608562,524.030174660952,547.870868299741,547.903145681746,547.269841834416,523.386966324038,478.257820764798,416.771513956957,345.579248575638,272.395903145547,205.15308015356,151.162362515191,116.290802580172,104.249262979823,116.290407741608,151.162334868706,205.148624803268,272.391616768225,345.574408589507,416.767560323663,478.257592362018,523.380377353127,547.229739017249,547.219950281846,546.420538332884,522.594992929919,477.462948693483,415.978066524199,344.791091293643,271.613482991866,204.370349146653,150.382012219081,115.518492849038,103.481565491652,115.514371111862,150.375864140742,204.365466090218,271.612317224351,344.790047312746,415.974480644029,477.457319744362,522.572763089176,546.438535921475,546.485341065651,545.603846675901,521.724355889919,476.588830934581,415.100017610506,343.915681358266,270.738764996176,203.483923841518,149.481797100428,114.613755088795,102.578250023953,114.615881675547,149.485083104685,203.485019576147,270.739088949664,343.915307626478,415.098964316953,476.584568319912,521.704774030473,545.570958190818,545.589412939567,544.350121412716,520.482493919723,475.342461987483,413.852354384886,342.669346782789,269.495355316112,202.240342444873,148.235375774291,113.365882954272,101.329473757615,113.365871762477,148.235181271096,202.239441351661,269.495094858784,342.668463507992,413.851301837084,475.336801226075,520.457403787569,544.331723832011,544.355234392006,542.658269131937,518.786698161516,473.646855152573,412.155603835239,340.972148207328,267.79906293043,200.543001662259,146.535736918162,111.664484081912,99.6287984392092,111.665345067376,146.535817348748,200.543850111062,267.799449638964,340.971739939334,412.154982998188,473.641396377168,518.761116527118,542.63545031507,542.657578958382,540.328509890957,516.457951622449,471.317601493503,409.825790438315,338.641524945039,265.469104540833,198.213550258942,144.204977616484,109.33124351177,97.2963755757386,109.332461566492,144.204541628952,198.214656605174,265.468804195896,338.641052454469,409.824967646951,471.31213634859,516.432091791616,540.307392476081,540.329010860868,537.141872298442,513.271244294523,468.130698785159,406.638121258803,335.452553826572,262.279800395422,195.026018791564,141.0161050132,106.139503533871,94.1054485857263,106.141161363765,141.015874019648,195.027515325685,262.279411704262,335.452070500326,406.637349827509,468.125229285278,513.245170730469,537.120647351701,537.141954427917,532.7934666293,508.922974234084,463.782056095233,402.288523297068,331.101322358079,257.92788707395,190.676720895764,136.665114222141,101.784993545408,89.7507474327519,101.786891410139,136.665731262131,190.678170517936,257.927372024813,331.100625554425,402.287859174905,463.776600182285,508.896838327893,532.772486583166,532.793622774926,526.885708808563,503.015196252116,457.873721003346,396.378958174554,325.189585716795,252.014916563811,184.76667698689,130.753614558257,95.86896717799,83.8323338317781,95.8708886769142,130.755757577144,184.767815730946,252.014388230355,325.18859117849,396.378415419388,457.868235522568,502.988917959119,526.86478346667,526.885895587568,518.905311880766,495.03468029832,449.892334397007,388.396022726285,317.20363587534,244.026840909637,176.781130985337,122.767587932629,87.877017493472,75.8349877602047,87.8781763962694,122.770140201163,176.780646904706,244.025972204226,317.202675646377,388.395601391743,449.8867567923,495.008242944863,518.884470442684,518.905581790856,508.208751382615,484.337822256066,439.194152112358,377.695800331591,306.499151055984,233.318545252321,166.073796450757,112.061005572267,77.163434087268,65.1139888986209,77.162114851486,112.060645006426,166.070954190412,233.315376511615,306.49769723828,377.695751197606,439.188457673219,484.3105960365,508.187891492904,508.209265382472,494.020165760458,470.148686856055,425.002994341501,363.501898872046,292.299015607794,219.111670798249,151.864141217014,97.8522389792427,62.9496745403068,50.8913592826948,62.9302053696881,97.8247071588908,151.847361355974,219.106668293042,292.297754745742,363.500521246187,424.999157921798,470.120991841067,493.998741372253,494.021246455831,475.457461722511,451.585035802049,406.436358902546,344.930980057686,273.719795838982,200.51826489549,133.263605012759,79.2485542998309,44.3518557061316,32.2925644353488,44.3143493287513,79.12436589484,133.11685780842,200.479363752177,273.729488481932,344.924917614976,406.428320592516,451.558118781935,475.434997192656,475.459068220643,451.605710806372,427.731832061939,382.578326839401,321.06734682973,249.838766317227,176.620799636679,109.323259243344,55.3526149893812,20.5347143968746,8.51499394953417,20.523198934952,55.2544779610056,109.039513344915,176.341869453172,249.832723809563,321.095147547283,382.564574349191,427.703988954482,451.583339701082,451.606320009987,421.657306396759,397.781235113844,352.620547977388,291.096046054386,219.85270732238,146.524089411433,79.2677755899502,25.4734687328397,-9.32786598779273,-21.3810225526706,-9.31613693647023,25.4911320237776,79.0851424046761,146.047041946715,219.483666447606,291.126579362499,352.616083690509,397.744370242168,421.637522886199,421.659165640881,385.125408514796,361.245485876263,316.072974530198,254.528850853174,183.176119645373,109.750524436595,42.8582731705059,-10.915051929599,-45.8391068700813,-57.9136638689531,-45.8156146659744,-10.8617315424451,42.8921894801145,109.550558983264,182.722731691983,254.465822417825,316.104720451856,361.197911216059,385.097655696049,385.133403760524,342.100268414848,318.217280724351,273.015068146135,211.432802090518,139.889280501473,66.9586600915229,0.137241179490942,-53.8967744965115,-88.8682535991157,-100.944992114866,-88.8412870514881,-53.8914521004266,0.207046624948674,66.8660966973181,139.595754360445,211.035274489723,273.027641986002,318.210345524306,342.062145811399,342.10922754906,293.477769282188,269.581958216151,224.369733581025,162.603623561635,91.387008063624,18.662771263404,-48.5244266957116,-102.540935339723,-137.488983170352,-149.571463937229,-137.462674679251,-102.523052462906,-48.4758183206411,18.568162243905,91.1668344132,162.102241400774,223.94954823217,269.568015477511,293.455667082534,293.473652439563,241.024085658668,217.113985550937,171.75812586905,110.015014994894,39.2330266201212,-33.7276270260868,-100.96735919071,-154.995988100911,-189.944137071977,-202.026349818481,-189.933048951456,-154.977431706059,-100.951931552732,-33.6230860154972,39.2562040785941,109.870579557409,171.334317186765,216.949490526098,241.022319876692,241.035319727639,187.219129765501,163.240609156221,117.790027260088,56.5555437038144,-14.3218630379033,-87.5271466547501,-154.781998147592,-208.811787624106,-243.762727956521,-255.847845956848,-243.758547855155,-208.799737758696,-154.777560725147,-87.5202899326286,-14.2306784759257,56.5134249942721,117.584039649549,162.852319964983,187.103097513428,187.2680300648,134.830388059887,110.729531302102,65.6166847254481,4.42909064642049,-66.8019444108268,-139.98157288829,-207.235714931756,-261.266270147708,-296.218757590655,-308.305111566356,-296.216275639668,-261.259543271308,-207.21375713574,-139.99029104663,-66.7695050568097,4.33217051955175,65.4312165989677,110.370221280679,134.44247433175,134.723257231997,86.1916067990819,62.188570227279,17.2488276197335,-44.2185696936406,-115.415488016468,-188.607446007957,-255.862807770658,-309.894956856039,-344.84864558571,-356.935897812115,-344.84645408444,-309.891949739422,-255.855112846062,-188.603921452431,-115.430207206415,-44.1638706605443,17.2039936080443,62.0440526333978,85.9355321551971,86.1103681007049,43.426576865705,19.435733002539,-25.7475668530903,-87.2416225010211,-158.441655883124,-231.635044054175,-298.893291324114,-352.927329654655,-387.882349607729,-399.970513878766,-387.88135094571,-352.926241193106,-298.894275622876,-231.637674943267,-158.461020469676,-87.2640072835833,-25.7210004985723,19.327306154057,43.1175681313502,43.3826328831547,6.59837603471576,-17.2344764864889,-62.3023167274115,-123.790058720127,-194.988670696273,-268.180440668914,-335.437954056522,-389.471684453016,-424.426695496545,-436.514834833797,-424.426284133926,-389.470902954794,-335.43848717582,-268.181671414682,-194.98760656623,-123.804733381807,-62.3104781140275,-17.1919665994424,6.7171876077677,6.59837603471576,-23.3455910504529,-47.0787476566343,-92.2580399969027,-153.738265437166,-224.942336750966,-298.136835497397,-365.396604190064,-419.431617372276,-454.38789346721,-466.476478709555,-454.387957196223,-419.431541523096,-365.397419814158,-298.141060446916,-224.944547943434,-153.742696312399,-92.2548189541228,-47.1069278318691,-23.3739056047637,-23.3455910504529,-47.1938250115162,-70.8441779790476,-116.099575555117,-177.587103645542,-248.795314891377,-321.991384425026,-389.254403038913,-443.291533626818,-478.249515201138,-490.340821347975,-478.253052985733,-443.294160693459,-389.257314311168,-321.996160487143,-248.798454318581,-177.595428076478,-116.102580426866,-70.9867064396091,-47.1552879879263,-47.1938250115162,-65.753693625018,-89.3339239900684,-134.675795960678,-196.146162240052,-267.359976747951,-340.556353002988,-407.820372946082,-461.860526803979,-496.823562917103,-508.920020846373,-496.832917784676,-461.872517507926,-407.831352046711,-340.565410783427,-267.364215698151,-196.158542889869,-134.664621634203,-89.5609788313216,-65.7470274408022,-65.753693625018,-79.9399964870373,-103.40383487656,-148.897143597773,-210.33718326704,-281.544452068116,-354.747166453068,-422.018229333012,-476.066333216407,-511.031688972894,-523.126008148417,-511.038123170048,-476.07903746297,-422.037050924599,-354.768015421174,-281.561343355677,-210.353329501806,-148.854303997479,-103.72475564927,-79.9047505125461,-79.9399964870373,-90.6347390914703,-114.136054332123,-159.557219785853,-221.042899048221,-292.251074005299,-365.462582472379,-432.736292842356,-486.785080436537,-521.7507353043,-533.84486361184,-521.756970255385,-486.797687742369,-432.75729438231,-365.492580327085,-292.293206744924,-221.085037080587,-159.566635082406,-114.476790905029,-90.3918245065746,-90.6347390914703,-197.613687070316,-221.462316491635,-266.575206286859,-328.063674848069,-399.264492514763,-472.461945898238,-539.723955148883,-593.761637886782,-628.719172706245,-640.808368287543,-628.719172706245,-593.761637886782,-539.723955148883,-472.461945898238,-399.264492514763,-328.063674848069,-266.575206286859,-221.462316491635,-197.613687070316,-197.613687070316,-203.520319300754,-227.368948722073,-272.481838517298,-333.970307078507,-405.171124745201,-478.368578128676,-545.630587379321,-599.66827011722,-634.625804936683,-646.715000517981,-634.625804936683,-599.66827011722,-545.630587379321,-478.368578128676,-405.171124745201,-333.970307078508,-272.481838517298,-227.368948722073,-203.520319300754,-203.520319300754,-207.867711527106,-231.716340948425,-276.82923074365,-338.317699304859,-409.518516971553,-482.715970355028,-549.977979605673,-604.015662343572,-638.973197163035,-651.062392744333,-638.973197163035,-604.015662343572,-549.977979605673,-482.715970355028,-409.518516971553,-338.317699304859,-276.82923074365,-231.716340948425,-207.867711527106,-207.867711527106,-211.053906081913,-234.902535503231,-280.015425298456,-341.503893859665,-412.70471152636,-485.902164909835,-553.164174160479,-607.201856898378,-642.159391717841,-654.248587299139,-642.159391717841,-607.201856898378,-553.164174160479,-485.902164909835,-412.70471152636,-341.503893859666,-280.015425298456,-234.902535503231,-211.053906081913,-211.053906081913,-213.381796223538,-237.230425644857,-282.343315440082,-343.831784001291,-415.032601667985,-488.23005505146,-555.492064302105,-609.529747040004,-644.487281859467,-656.576477440765,-644.487281859467,-609.529747040004,-555.492064302105,-488.23005505146,-415.032601667985,-343.831784001291,-282.343315440082,-237.230425644857,-213.381796223538,-213.381796223538,-215.078724664379,-238.927354085698,-284.040243880923,-345.528712442132,-416.729530108826,-489.926983492301,-557.188992742946,-611.226675480845,-646.184210300308,-658.273405881606,-646.184210300308,-611.226675480845,-557.188992742946,-489.926983492301,-416.729530108826,-345.528712442132,-284.040243880923,-238.927354085698,-215.078724664379,-215.078724664379,-216.31365742706,-240.162286848378,-285.275176643603,-346.763645204813,-417.964462871507,-491.161916254982,-558.423925505626,-612.461608243526,-647.419143062989,-659.508338644287,-647.419143062989,-612.461608243526,-558.423925505626,-491.161916254982,-417.964462871507,-346.763645204813,-285.275176643603,-240.162286848379,-216.31365742706,-216.31365742706,-217.211288920449,-241.059918341767,-286.172808136992,-347.661276698202,-418.862094364895,-492.059547748371,-559.321556999015,-613.359239736914,-648.316774556378,-660.405970137675,-648.316774556378,-613.359239736915,-559.321556999015,-492.059547748371,-418.862094364895,-347.661276698202,-286.172808136992,-241.059918341767,-217.211288920449,-217.211288920449,-217.863174195453,-241.711803616772,-286.824693411997,-348.313161973206,-419.5139796399,-492.711433023375,-559.97344227402,-614.011125011919,-648.968659831382,-661.05785541268,-648.968659831382,-614.011125011919,-559.97344227402,-492.711433023375,-419.5139796399,-348.313161973206,-286.824693411997,-241.711803616772,-217.863174195453,-217.863174195453,-218.336289548474,-242.184918969793,-287.297808765018,-348.786277326227,-419.987094992921,-493.184548376396,-560.446557627041,-614.48424036494,-649.441775184403,-661.530970765701,-649.441775184403,-614.48424036494,-560.446557627041,-493.184548376396,-419.987094992921,-348.786277326228,-287.297808765018,-242.184918969793,-218.336289548474,-218.336289548474],"Archive4001_field8":[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.391198885432854,0.406330158886898,0.391282960400544,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.395696864926384,0.412674659880634,0.413268376784166,0.412497439357222,0.395741248251962,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.413126093663622,0.413746052716667,0.413765445008321,0.413613403186171,0.413414256862033,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.413764506671628,0.413714336936444,0.413851334093618,0.413814050849017,0.413671705172694,0.413332527736075,0.413490981525628,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.413759345819817,0.413776173324511,0.413805230484103,0.413769823912889,0.413761066103754,0.413701356612192,0.413530141443614,0.412953314600556,0.413496236211108,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.401549833882453,0.413297621611096,0.413851271537838,0.413834131254247,0.413789873040228,0.413774671985802,0.413759658598715,0.413787777421614,0.413426455239041,0.411973597259426,0.401815164221335,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.413019717560529,0.413830065128577,0.413837947156798,0.413814144682687,0.413724752473736,0.413702701561452,0.413642303956314,0.413673769513418,0.413693443306081,0.413601955478516,0.413634984930109,-0,-0,-0,-0,-0,-0,-0,-0,0.413758313649455,0.413625007283274,0.413899720989085,0.413772889146086,0.41375362196599,0.413781021397425,0.413734354785894,0.413656379006709,0.413534113735615,0.413333528628547,0.412833676672202,0.411410970578322,0.412323784513243,-0,-0,-0,-0,-0,-0,0.410842932822287,0.413593791949287,0.413817272471663,0.413835820260294,0.413771731864164,0.413767384237487,0.413738389633674,0.413726159978776,0.413691660466364,0.413628948297384,0.413616875031935,0.41357880984009,0.412638877974742,0.408776027310793,0.405537702271795,-0,-0,-0,-0,0.392196681394268,0.41664860960903,0.413838353769365,0.41382440383053,0.413801508415221,0.413786807807031,0.413783898963283,0.413725722088319,0.413725503143091,0.413720060790271,0.413650967931779,0.41359476156387,0.41348266160695,0.412647291727089,0.406886811491057,0.392483249420301,0.382909744198717,-0,-0,-0.0109835339957689,0.252381558381181,0.415784995794711,0.413958398310286,0.413798443182024,0.413796535230748,0.413794345778465,0.413794126833237,0.413760065211282,0.413744801601076,0.413722625577232,0.413676115355151,0.413618626593761,0.413416633981655,0.412445048891864,0.4069985361133,0.385559700853334,0.344486795850768,0.250590602052144,-0.0109835339957689,-0.0109835339957689,-0.67225030493631,0.409268216184145,0.413286048791883,0.413738764968351,0.413791874825173,0.413804135757962,0.413806544155474,0.413759158152479,0.413747084887029,0.413724908863185,0.413696352149829,0.413666575598772,0.413486540065281,0.413042394030609,0.409508586766995,0.401143440260728,0.430672332986472,0.484416411579343,-0.0109835339957689,-0.0109835339957689,-1.33246838101445,0.480947286991764,0.418249818619804,0.413958054253498,0.413807826548954,0.413804636204198,0.413806763100702,0.413777580829551,0.413756374420289,0.413710145699216,0.413685686389419,0.413678742697891,0.413706329796664,0.413704328011719,0.411871193448334,0.397462970972002,0.393187283441036,1.0032104143559,-0.0109835339957689,-0.0109835339957689,-1.58615095885938,0.540966054328414,0.421258126057465,0.414067996036025,0.413857871172579,0.413812737177647,0.41380563709667,0.413790811376921,0.413763724724384,0.413745020546304,0.413727379816477,0.413843889955854,0.414065431249064,0.414081633195963,0.41115355354555,0.389395683809974,0.358193048647089,0.862762555271801,-0.0109835339957689,-0.0109835339957689,-1.50699462700227,0.565896784479708,0.420733752235544,0.414148411490612,0.413729850769768,0.413571991260121,0.413534363958733,0.41358012351146,0.413757844481108,0.414063054129442,0.414606319796781,0.415341381484164,0.416042412827482,0.416606102956839,0.413755310972037,0.376778527135293,0.319157116215513,0.969269525055594,-0.0109835339957689,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0],"Archive4001_field9":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-9.77094532572664e-06,-1.07530158857116e-05,-9.80352888291236e-06,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.01459290817729e-05,-1.12813659143285e-05,-1.13281257654307e-05,-1.12449188236496e-05,-1.01763307611691e-05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.13210653580609e-05,-1.1429230653448e-05,-1.14196291178814e-05,-1.13856867756112e-05,-1.13892856461462e-05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.14078702608822e-05,-1.14006634248653e-05,-1.14544764073798e-05,-1.14289432531223e-05,-1.13736550702015e-05,-1.12915049612639e-05,-1.13227479232592e-05,0,0,0,0,0,0,0,0,0,0,0,0,-1.14146168925799e-05,-1.14095964818262e-05,-1.14243248390267e-05,-1.14162412501173e-05,-1.14118565761601e-05,-1.13955366032314e-05,-1.13708756543929e-05,-1.12679381345515e-05,-1.13395481093903e-05,0,0,0,0,0,0,0,0,0,0,-1.05581129901111e-05,-1.13415871965117e-05,-1.14489357656566e-05,-1.14344375106157e-05,-1.14164022306795e-05,-1.14240283437539e-05,-1.14186232167413e-05,-1.1421716408222e-05,-1.13484074972803e-05,-1.11629296952742e-05,-1.0558628673607e-05,0,0,0,0,0,0,0,0,0,-1.12633570097387e-05,-1.14407566798036e-05,-1.14363592729205e-05,-1.1420404916862e-05,-1.1386007827241e-05,-1.13849928311538e-05,-1.13645282908692e-05,-1.13663336378522e-05,-1.13461810542503e-05,-1.12240413727704e-05,-1.09755092125852e-05,0,0,0,0,0,0,0,0,-1.1394507055229e-05,-1.13506112029427e-05,-1.14642889457173e-05,-1.1403762982809e-05,-1.13992100523319e-05,-1.14043186840718e-05,-1.13994601633749e-05,-1.13758824227261e-05,-1.13240457721986e-05,-1.12052666736417e-05,-1.08515632746276e-05,-9.87840030575171e-06,-9.83820882538566e-06,0,0,0,0,0,0,-1.12094567157328e-05,-1.13720416266005e-05,-1.14122294689878e-05,-1.14349331852281e-05,-1.13957294161082e-05,-1.13976111606462e-05,-1.13932328531519e-05,-1.13946744022542e-05,-1.1396266927477e-05,-1.13942096504616e-05,-1.13376654553576e-05,-1.10255314211827e-05,-9.90905846265377e-06,-7.72848761698697e-06,-8.52820085128769e-06,0,0,0,0,-7.59210206524585e-06,-1.16952969619888e-05,-1.14348304123268e-05,-1.14219592433074e-05,-1.14137483251397e-05,-1.14006334115402e-05,-1.14001386464224e-05,-1.13866872197832e-05,-1.1395059118513e-05,-1.14011163532268e-05,-1.1388520761102e-05,-1.13167916424572e-05,-1.09874981717439e-05,-9.93062167253811e-06,-7.73684587329626e-06,-5.97668622503988e-06,-1.07842943180003e-05,0,0,2.4023896116887e-07,1.29687005028245e-05,-1.23282834465499e-05,-1.14389422378736e-05,-1.14184404083062e-05,-1.14081367428298e-05,-1.14036647573812e-05,-1.14020340333809e-05,-1.13936648631352e-05,-1.13995474748663e-05,-1.14009262688342e-05,-1.13985233838321e-05,-1.13642518044799e-05,-1.11182116597774e-05,-1.00391689557e-05,-8.45106842461973e-06,-1.23749323392985e-05,-1.59773826453602e-05,-1.00884835774195e-05,2.4023896116887e-07,2.4023896116887e-07,7.42073825676925e-05,-1.88371268450283e-05,-1.17506006063195e-05,-1.14148260763614e-05,-1.14073945951532e-05,-1.14069034680142e-05,-1.14041877168347e-05,-1.1392942724342e-05,-1.13957885332638e-05,-1.13969545054715e-05,-1.14001586553059e-05,-1.13918576971628e-05,-1.12369225462317e-05,-1.00880170066375e-05,-5.54995813217829e-06,-7.00542977938312e-06,-4.48271457571536e-05,-5.20900939591229e-05,2.4023896116887e-07,2.4023896116887e-07,0.000110775952634867,-3.64637126040179e-05,-1.36018234115909e-05,-1.1487607480376e-05,-1.14130498332088e-05,-1.14077411126345e-05,-1.14051927084802e-05,-1.13980213427567e-05,-1.1399688446545e-05,-1.1403512871766e-05,-1.14182912511751e-05,-1.14314898382872e-05,-1.14239055619691e-05,-1.13083642645506e-05,-9.58617147261975e-06,-4.93726884087664e-06,-2.72421038971515e-05,-0.000102894795418251,2.4023896116887e-07,2.4023896116887e-07,0.0001160718529718,-4.65210396214388e-05,-1.47845867104479e-05,-1.15223629109096e-05,-1.14319818749209e-05,-1.14131053123856e-05,-1.14064541776315e-05,-1.14021659101127e-05,-1.14058557301178e-05,-1.14142212623847e-05,-1.14073682198068e-05,-1.13725664050435e-05,-1.13524884000071e-05,-1.12877469291561e-05,-8.44370879349299e-06,2.22885137191042e-06,-8.65614856593311e-06,-8.88208742253482e-05,2.4023896116887e-07,2.4023896116887e-07,6.39819190837443e-05,-2.95797381113516e-05,-1.27510511447326e-05,-1.13576807052596e-05,-1.13237611003569e-05,-1.13218220576528e-05,-1.13544683699729e-05,-1.13912656161119e-05,-1.14210588435526e-05,-1.14306285468047e-05,-1.1423539945099e-05,-1.14670683615259e-05,-1.1732520761143e-05,-1.21593584481161e-05,-9.89536147244507e-06,-3.0484196145153e-07,5.11665211888612e-06,-7.33472916181199e-05,2.4023896116887e-07,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive4001_field10":[-18.3497340060816,35.2033510094008,72.7705479029066,105.004993371058,134.680245255968,158.755739129617,169.766793285281,153.686604174184,94.4222603201702,-5.92930107160921,-106.421192125752,-166.070807062573,-183.383349215625,-172.726374848026,-146.576746594068,-114.708245649663,-82.5751284748938,-50.9353795188355,-17.0110604637299,32.0792453580724,30.6474450192207,48.5015333215549,75.2391744792906,104.493335448118,131.297212268503,150.35290312586,158.172736750049,148.313428611004,96.7817157637142,1.91499661692384,-92.7026998757681,-143.873807383212,-154.023969444206,-146.20581857016,-128.091534730704,-101.714868335877,-71.6203478473955,-42.4671641208929,-15.8264260636019,4.44719828115002,47.1274213272014,53.1777944773869,74.5331691306235,102.407129147196,126.670090105544,140.460390424667,144.619622578198,137.519907605475,92.3970272616065,1.87248343140277,-88.9141343485293,-134.634534132618,-142.472559310088,-138.487977373269,-125.618538736349,-101.383170610016,-72.5281898779094,-44.9593479310177,-24.8613921898094,-16.1826223697278,51.6024526802802,54.5329701372386,75.1371833171211,103.026722296259,127.001730445187,137.854808375498,139.893016935502,134.176659597455,91.0929937490501,1.20992969323524,-88.778927335893,-132.344119831672,-138.352383711899,-136.547280908155,-126.195097327835,-102.053926356283,-72.9385880583431,-45.172699649067,-26.1930333877842,-21.3954766118596,53.0057982943044,55.1214773355218,75.432346440678,103.321718371719,127.367072237695,137.504428054263,138.47237731183,133.414947106017,90.9968652634342,0.926129331076009,-89.1027174561113,-131.813758755247,-137.021367404966,-136.548966506334,-126.48181717262,-102.379325880992,-73.1866852117807,-45.2471805243906,-26.1095441013003,-23.2208031328414,53.5062606765141,55.4000661513372,75.5687639176388,103.495855958599,127.690591914886,137.80976495446,138.216634296956,133.440273734424,91.4113033253659,0.932471039448302,-89.5377346601654,-131.876239101842,-137.088704153696,-136.880019599443,-126.770757365622,-102.54158575767,-73.2531326711975,-45.223122837132,-25.9293728718843,-23.8174128708488,53.7117017621264,55.5495777742047,75.7213769267803,103.836005101052,128.43585759534,139.051056611987,139.303321908313,133.831057832539,92.1625330562326,1.15150586025334,-90.0647690171699,-132.261607287014,-138.150877498845,-138.009785431478,-127.46908207346,-102.787404736838,-73.2987811108703,-45.176658419244,-25.7549981148661,-23.9018440770546,53.8827712975071,55.7233999456716,75.9970532642164,104.464064748081,129.84041308516,141.480600926644,141.701429960733,134.836242489311,93.3810414045691,1.65814456714386,-90.6245418763415,-132.968458042228,-140.390825601273,-140.251108423252,-128.698278547079,-103.247126662365,-73.4330068156755,-45.162793175961,-25.6265993636603,-23.8361764707799,54.1682409310643,56.0339223923825,76.484791379733,105.469624244252,131.972540749778,145.139937396896,145.588371832491,136.928920689531,95.2737214325503,2.61471104267645,-91.1560105168015,-134.552493358347,-144.02654545157,-143.670243227651,-130.520997508544,-104.006084150889,-73.7274374740049,-45.2299481520088,-25.5848635728374,-23.7892743415676,54.666712142511,56.5659010731112,77.2833706047901,106.982420761299,134.995723650435,150.426364098125,151.643683006914,140.959251746022,98.1660085705771,4.26537712488402,-91.5216289059043,-137.664563627709,-149.702041290853,-148.627413000899,-133.123694924605,-105.179325019642,-74.2541478427111,-45.4192775629549,-25.6406234270592,-23.8182917015976,55.4705141092848,57.4030955210881,78.5190028892216,109.20483347945,139.262178494374,158.0305696639,161.07192218882,148.463636976078,102.828409642942,6.90859568505491,-91.787095980228,-143.463828077009,-158.589165850948,-155.782839050842,-136.843245700248,-106.944613580786,-75.1109804690706,-45.7781088176775,-25.7973226732889,-23.946585742535,56.696945865804,58.6533934352989,80.367629970357,112.440624724273,145.313863039794,168.961338458436,175.759898783478,161.986061956023,111.114987558358,10.7492609743138,-93.4107900803914,-154.044960427767,-172.490734103602,-166.113339600564,-142.177588310841,-109.562209057922,-76.4428955591311,-46.3773139220722,-26.0730600122685,-24.2055208394172,58.5127314006808,60.4725778161981,83.0848155086615,117.141748548801,153.951011482392,184.644489690347,198.360712734947,184.946014102077,125.443489582666,13.966534140198,-101.165232339287,-173.173873321412,-195.146712650847,-181.151868194883,-149.708152142585,-113.314256122131,-78.4260832603097,-47.3177900614679,-26.5098529597334,-24.6500275580733,61.1621447239345,63.0945159466205,87.052774566453,124.004868401785,166.435927738882,207.214464349009,232.053322754085,219.213845769371,140.406216137258,1.44129391352848,-136.232819812469,-233.063190440314,-250.785813466788,-207.302237162826,-161.070201335893,-118.724510501732,-81.2888667583082,-48.739075907595,-27.1816575370656,-25.3665606978255,65.0113012069604,66.8792550795944,92.8658507952656,134.180720047109,185.058046622069,240.830897099793,281.04129806218,257.341764455298,133.106784476773,-46.2929772036282,-241.999764483152,-383.408471063049,-376.629205631554,-275.017694149767,-180.966494869071,-126.705253584361,-85.2509457935037,-50.7455342502547,-28.1786372788186,-26.4643641281727,70.6273482785711,72.3974927652658,101.500840226395,149.739459544617,214.666689695607,296.150434396804,354.413380849299,273.858480967253,112.386610755491,-99.9010387541371,-318.832642631169,-496.23796577413,-601.980167115125,-435.403212695773,-244.899088851075,-142.407907147616,-91.9607585379347,-53.7975815353823,-29.6995419653275,-28.146631737032,78.9303695876981,80.5909208600562,114.707322712217,175.102358524825,269.180851550234,417.432085158242,421.864002840239,287.017718567541,82.3730520060055,-122.621212456141,-338.616772018168,-553.59411638481,-710.410444731835,-763.192001478444,-361.868548477765,-171.074651189223,-103.567458807495,-58.818610417635,-32.1362620371169,-30.7659615634531,91.4844982039594,93.0692590822853,135.667262615019,219.050239730324,376.956288506658,524.318962858484,438.51979627308,252.103530799433,65.1939391116398,-124.278740915066,-318.032477015867,-518.070436642429,-666.085934839892,-711.888303638692,-470.242010949559,-237.382366376776,-120.442370154554,-65.9680256024694,-35.7873846326309,-34.6330285040134,111.126272631557,112.717010772737,168.528520430484,280.310777555552,456.1289110852,453.27321619163,355.423546478102,206.939550252212,48.0161121093678,-117.102566931245,-286.896224219575,-447.496277016674,-591.511534354001,-681.635712668153,-728.985857242717,-414.503076558338,-184.303730462563,-81.8094840597321,-43.1664229754645,-41.8136501305861,144.312603706109,147.066745372282,230.120272272754,408.888416442582,469.377940131641,406.951721731838,294.660379241018,169.895582598905,35.8217677703603,-103.647583431302,-242.337890404004,-375.463482565615,-502.008700491743,-617.523121626506,-697.198812250913,-710.731636917675,-298.937621828894,-112.666289950912,-58.3205280026771,-56.6259725494181,201.712851277432,209.543113627029,335.801380577301,468.400343726679,431.774395670577,343.229719677553,245.297353533659,139.433980481992,27.4584984852003,-86.8060873546547,-199.189903296877,-307.245673147951,-410.825653919686,-511.761660953059,-574.467944639706,-585.936805683302,-385.322531271618,-178.571603001134,-86.501484052286,-87.9869269303478,281.418883417217,296.575701123258,388.370456301414,387.612615040233,343.027672829807,275.320201004383,196.811318755071,110.858310158224,20.3200264595601,-71.4846398977289,-161.569379042372,-248.159433348545,-330.856452001433,-402.217025191533,-456.740791224829,-478.091902848475,-491.727730713335,-305.995608446525,-163.04138527871,-161.227031916321,332.676291682197,353.595229120785,350.785164271781,314.873165076786,267.723754469341,212.786150516437,150.912041975586,83.6000610685239,12.9625468371394,-58.5550769923144,-128.664179062054,-195.608394596986,-256.756269521461,-308.562224701957,-348.083948779076,-379.635285267384,-403.555869074865,-408.900181172128,-306.003083086688,-313.674722568679,240.04112243007,269.13253655559,250.133637723476,221.827131592948,188.862001645035,149.661565529245,104.859085917858,55.769749234296,4.02795304131168,-48.5147607347741,-99.9166855754088,-148.140218148287,-191.095982370723,-227.045945743348,-256.774771278159,-283.188665289517,-303.898390943177,-319.34102996035,-327.557091437346,-328.191106392385,0,90.970811899798,110.864283123595,110.363901189802,99.1542278086253,79.8142275809923,54.2974943818498,24.333880721354,-8.45848571257715,-42.3539472296663,-75.4843374729777,-106.104135561539,-132.915437638233,-155.324470358236,-173.76967544139,-186.900434451073,-195.559582742109,-201.198369804029,-193.605337563986,0,0,23.0009689780959,35.6283832683702,36.1579219927174,30.3874638501658,20.797577188388,8.22831225046711,-6.63365125724153,-23.0260359197894,-39.8292088395977,-55.7459169943925,-69.8822323085551,-82.1840495244416,-90.9708810501699,-97.8467077440593,-103.96737380568,-107.148403337927,-101.699983433867,-52.165201912514,0,0,-2.16346026764759,-5.11823447930743,-11.7814595294941,-18.1961317072239,-23.4543878891815,-28.0949117294631,-32.2521039873688,-35.7643454854664,-38.0579471777291,-38.3857306844296,-38.693436045493,-39.3741090640199,-39.6937121919723,-40.9731716571525,-42.6528328924516,-41.9848837087812,-30.219621271729,-8.66340172105801,0,0,-26.6138872506498,-50.4118005835734,-64.9881082507678,-70.432056625599,-71.0760918711965,-68.7668929318919,-64.0607690289003,-55.7637456781491,-41.4951831952816,-23.3598082166343,-7.23109132940939,5.39045249269048,13.7600911047104,18.3722806281364,19.8246015307161,20.6270002677627,22.215841655025,18.3116518077209,0,0,-80.2046223426967,-135.115109406064,-149.366390553018,-150.187105871651,-146.68361001414,-135.501071611001,-114.374149638074,-84.5203459785849,-48.9841914877745,-11.3787219874311,24.5537805228813,55.9468107607909,80.9406491315436,97.586784156929,105.614878890689,106.381342706769,96.6845447348071,64.9875609468663,0,0,-233.702067851616,-271.405343261054,-272.981551407428,-264.427539125275,-243.745998689442,-211.84959409698,-169.039493178907,-117.153126032074,-59.9524167537243,-1.0668138568641,55.8587806489562,107.935919770195,153.965542297966,194.005187656248,229.350563921991,250.794235872263,249.618851253082,212.401626977965,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive4001_field11":[200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,10.8292956625805,14.7166175260601,23.8537649607965,29.9068495752625,33.2530935086287,34.2601825053889,39.6921848555261,50.5248098869493,60.7505367740239,66.3759561910331,66.1777516484567,59.3497774952676,50.3008152737683,43.793784948515,40.2913591740477,36.7118608336375,30.774967022941,24.5173476764785,17.9834685067783,24.3238990292867,4.76777643869302,4.96177688925232,8.45351173575307,11.1931058781501,13.9321618732503,16.1998651078495,18.5235759323388,23.2431650707838,27.6567163585664,31.5149524930326,34.4435007577773,33.5085884571489,29.4843756540561,25.7052492261223,23.2643787874339,19.1538583980302,14.707351347392,10.4275896355208,7.47588541522723,12.458952716426,3.28430053782171,2.92123113741269,3.36811024934711,4.53285327719721,6.94278839144273,10.2357180590917,11.8694823878232,13.9350921485672,15.7638990342803,19.0131046870525,22.9214045655444,24.426283398651,22.5537674333263,20.4855010738051,17.391691975925,12.903424409575,9.48145772854858,6.66746039196682,5.17275110250853,7.87809985162922,2.93803397769393,2.52486248601536,2.06665688562672,2.55607274621202,4.83933644875394,8.55157972356761,9.85316099793267,10.7613325474159,12.0615044719965,15.3859552337161,19.2854234405264,21.2767238973197,20.2817364577845,19.698415686991,15.3756012787007,11.047381239575,8.14138763732196,5.91210008409354,4.86540098528858,6.23923441317933,3.14981564817279,2.8117227500343,2.22252777310261,2.52109227707126,4.75127916269485,8.56330424469008,9.52417477841657,10.241497683424,12.451686027603,16.2593577969955,19.6883939721027,20.9215825112813,20.0441023784973,19.7411338295216,15.272146391482,11.0514199070374,8.26130882147192,6.15189059298351,5.21978468555133,5.81725290518773,3.83262012497129,3.55003202746164,3.06561398048104,3.44807315446516,5.79997352575303,9.56267830845863,10.2490521417995,11.6230109152847,15.7036739780459,20.3825608140451,23.009139056681,22.4389852328846,20.9292340299306,20.6151312773959,16.3120479704861,11.9800792241297,9.08193803114064,6.90916868018778,5.9129879514516,6.12751646677321,5.00213398474841,4.70546243376748,4.4050748870151,5.03927981467841,7.71685244219976,11.6504946834547,12.7284124044885,15.2718843184122,21.9185939596254,27.9820603801343,29.4040489522143,25.9906597582552,23.5769019637414,22.8426487686558,18.2668116382617,13.5711920593483,10.4216164050487,8.09533679726799,6.96824627582421,7.05806056932494,6.71866974317407,6.34359171589407,6.28011890905528,7.29255664923001,10.5359527645356,15.2046806483394,17.4212050939379,21.9667530183626,32.0788739994133,40.3736839274506,39.9760635951306,32.5668273952169,28.4749683144758,26.6320095583267,21.1803333308767,15.8560358481277,12.3233641141523,9.77297765598895,8.49511267062669,8.59307163953561,9.09409481418453,8.59430690668367,8.83679775177061,10.3660533785915,14.461257265276,20.5619088958292,24.9878862803896,32.9601200003784,48.092109125664,60.0334649533061,56.8961312356878,43.739642585209,36.3946315348837,32.2616310174145,25.2441454509539,19.0060319358706,14.9373737098739,12.0814830452699,10.6297850656824,10.7907902492756,12.3044702881709,11.645203535299,12.2946391739997,14.5229096631952,19.8028836216993,28.170655533506,36.4599899850443,50.200818590685,73.2128821479196,90.9199656305011,83.8983303863469,62.491939262052,48.7701728961403,40.2014567704581,30.7762711986354,23.2933100048431,18.4893888532908,15.21718833948,13.5466206634475,13.7943994929165,16.5989258075571,15.7467339282665,16.9468030597095,20.1298688483205,27.0358350052771,38.7642496408461,53.4692277935245,76.8879420458548,112.831133193452,139.190841426916,127.867441253695,94.9002954966213,68.4309005027638,51.3199104453925,38.2704805936235,29.108008182027,23.2835082198473,19.4353469126079,17.475862771489,17.8306458956741,22.3083918018574,21.2208525145629,23.1763473622628,27.6967190882918,36.9153947082353,53.6440254312344,78.8288057189068,118.939768987754,176.012994427565,215.324165238154,201.798588346089,153.582305335488,102.778049904028,67.5600228474884,48.4836913782513,37.0309997903939,29.7392455091092,25.0661463537514,22.7150109629424,23.2064998044876,29.8578505308902,28.470251156834,31.4835789177134,37.9502446935947,50.698916978955,75.4016001642476,118.399032643042,188.625385700102,280.73183598194,338.310102491358,331.388262577649,282.491455907361,180.312633063595,93.8836616125577,62.173600235035,47.8239783319818,38.4243569506133,32.536590673938,29.636523347533,30.307861089415,39.7861638373423,37.9890619157455,42.5293976035206,51.9703515251234,70.6315087024434,110.035332401082,187.631035082725,316.223611828565,440.430462147522,494.873485071618,527.621482919082,525.675279818145,352.989554632122,163.192545031332,80.758219249011,62.1315496430186,50.0924527422872,42.4161266695532,38.7094383027486,39.6217992094796,52.7836665861396,50.3809048411974,57.2167602594056,71.4662630547447,101.230061957995,174.386543642202,337.059005980733,502.801824229103,574.876448370979,633.221989955373,681.14349793713,713.523260175067,683.239546242608,353.729403631539,131.993856790529,79.5499801543164,65.2140749885947,55.3041885741221,50.4838891426673,51.7551876897351,69.7761394622355,66.4038073644795,76.8664925041823,99.4069679621031,153.437028518911,336.655581287443,578.05071837088,636.064901770428,698.194043641285,752.891065310355,803.477388100721,858.403454087335,892.548073905644,802.074164407895,239.429511557002,103.466434159467,84.0528211402703,71.8403554732876,65.5915504583664,67.4401101162924,92.1249951594644,87.086459001634,103.62306352466,141.52599284212,267.010855784225,611.833607128406,699.78874732141,754.981526863693,811.630057222568,864.633500201044,911.625195962707,964.447774114949,987.536113768462,915.665127437917,447.876033854576,182.691666679057,108.444858059208,92.8435930298152,84.9567857531397,88.0232471052445,122.100331186514,114.024606254284,141.947852864887,214.343997726979,473.856620427381,709.745192298862,783.663145359648,849.517587857862,907.401622948683,958.371202081118,1001.87010157215,1027.15814869494,1029.938438113,1001.08142006275,894.503486239547,413.503944208616,173.323599474659,118.781481830104,109.232364922828,115.311058833888,163.153239616813,150.232117571724,204.30558740439,399.184415164499,680.843908564547,772.911817192713,854.464754841688,925.162039513455,984.992312121474,1034.11566939549,1068.12758065327,1081.89728462003,1074.77270330555,1059.7653633679,1020.8370017857,890.449224701387,306.746144351498,156.751518171556,139.858450549232,151.909680805179,215.023170986549,201.347177975113,326.210241385561,632.101637829707,738.990037090749,828.676595475523,913.414628092424,986.682320543532,1046.81264635263,1091.95324160248,1119.00825614166,1125.80744820193,1113.45981152524,1095.42417685895,1043.65858002265,935.092422946093,520.663443439771,261.344539014451,185.322628029238,206.292848804074,257.924527147979,278.73235227357,483.751428350193,667.845092770926,772.288542195263,871.9450120159,960.706876160278,1035.68936374652,1094.85770331146,1136.17379000976,1157.73655212289,1158.85721623764,1141.30182388132,1103.04761470344,1039.47683236563,940.255762769935,813.975651180617,479.162719920592,287.41790235044,291.537804288849,264.598632857572,387.192069701149,549.628871505045,687.201119397096,802.020638017587,906.639861149547,998.142632874788,1073.93229124594,1131.79955202717,1169.8422784522,1186.82781621654,1182.58856147054,1156.71513769508,1108.1765674498,1034.58377287806,943.671582381495,842.100104483951,713.922783986436,465.950062838653,416.414439764545,236.416487617853,412.189698596328,568.610504482611,704.447399888998,824.951465860797,933.105915184596,1026.64618999835,1102.83670321569,1159.5036528656,1194.81543083449,1207.77815563263,1198.01875843852,1165.53080807372,1110.50188563656,1034.69500277235,943.907774935116,841.256371271436,725.215481518416,570.731907731946,425.110875946695,0,379.865847962826,563.773435968758,710.290440271209,837.484137249971,950.001043209146,1045.98766886324,1122.89532876875,1178.87988724458,1212.06366637766,1221.53611883148,1207.1982497252,1170.01097073854,1111.50918479214,1034.02350882633,939.795215924713,833.520642898198,713.69393226027,553.78505838467,0,0,339.007789149497,551.937137579817,712.215810657706,845.862887517649,961.524461558654,1058.99225816501,1136.05694809404,1191.31750904721,1222.55443744516,1229.07060672532,1211.25493320725,1171.14689943293,1109.7466146977,1029.77991964291,932.361583268,819.645508977799,681.8761239143,422.787310585637,0,0,313.305612983019,544.836988596423,715.752691987636,853.015305238524,969.822992908749,1067.61070435499,1144.10153071669,1198.36718059039,1227.50140045908,1231.16008380275,1210.88025249371,1168.45056784821,1105.96429888779,1024.26317704955,923.072010202287,799.728600363924,629.364035718415,363.052547241268,0,0,305.743859993584,550.56746078376,724.68260487062,860.290429537674,975.971199069218,1072.79871818071,1147.80203245701,1200.51919668955,1227.76481581188,1229.5751629202,1207.67626733962,1163.53225707637,1099.99912385661,1017.10125341704,912.791590892818,778.47350199908,598.061375531766,337.83664900159,0,0,324.277149630476,573.051654751486,735.578055422533,865.944829900535,979.968799374836,1074.5243838211,1147.01607822152,1196.14207320041,1220.64589885973,1221.61351297434,1199.51412682866,1155.57658498956,1091.51322534111,1007.4374854573,901.258563968738,763.017320144331,584.473218670851,335.842392809871,0,0,397.055753781039,594.044751120546,741.212861868188,868.202532546435,979.516576167534,1070.151827911,1138.60437519987,1184.21644882233,1206.46472233671,1206.33118024444,1184.20823961986,1141.03183157262,1078.16698640157,994.840069421943,887.076773877379,746.733509919575,573.295253433493,344.119618979365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive4001_field12":[100.523924886285,100.743401649038,100.728518885857,100.711431456091,100.70140348589,100.729677064172,100.787011499129,100.864345669528,100.98335812311,101.044532734277,100.949287290011,100.795284132222,100.704452002871,100.670185338103,100.653574033217,100.657776722775,100.680445898197,100.707730547388,100.691962648736,100.756782211177,100.436076624223,100.368013873578,100.335473938933,100.339734206682,100.356805992214,100.385022563769,100.42365501776,100.517829097863,100.689580136945,100.784909688081,100.688726700783,100.517714910725,100.414699899262,100.376423846607,100.347118302687,100.33179966253,100.334921780244,100.354686999291,100.356146142037,100.33646242892,100.041082689891,100.087200539676,100.049093679772,100.056272384857,100.083952446154,100.123620745954,100.161644383103,100.260590665427,100.448371229222,100.552889881028,100.440114607561,100.248313295884,100.151820783986,100.12127907999,100.081859631512,100.049097763982,100.037824619591,100.042912576724,100.077158185192,100.170737825726,100.202890547839,100.141331660141,100.096082756043,100.095394638389,100.128295919169,100.169280416497,100.183783333204,100.255151164438,100.433867474453,100.541218414527,100.438098727024,100.261705632914,100.185959431098,100.169945624311,100.127557079438,100.093252595986,100.087520221133,100.102144945716,100.137211388296,100.174092787023,100.165357689843,100.127399140039,100.073171046633,100.069883783472,100.105484606267,100.152334693673,100.166424431015,100.232066803921,100.407857409699,100.513392670133,100.407838748285,100.231697427712,100.164619706549,100.151800900086,100.103709835285,100.067749201886,100.061806163045,100.077238751444,100.12858968577,100.175602815824,100.175528342596,100.129679956313,100.075805286415,100.070220272153,100.1049266826,100.153585325007,100.165574833243,100.22660356815,100.398870882848,100.505837551068,100.400581470845,100.226770442252,100.167261819663,100.154363827176,100.104106039639,100.068959839181,100.064840512357,100.07850902886,100.129896911157,100.174153779783,100.171784726647,100.127957767659,100.073074775511,100.06636561762,100.099459840197,100.149455486814,100.1624430459,100.220832826223,100.388130821665,100.496725725059,100.390561641119,100.219975999037,100.164650368416,100.148860807987,100.098503661233,100.06470310813,100.062094127761,100.076236216715,100.129561538721,100.172796390289,100.170895041452,100.126930728074,100.071656388263,100.063412864498,100.093899302279,100.143234711832,100.159750109978,100.215458371066,100.377004904584,100.487219464828,100.380318940558,100.215004741701,100.162739716228,100.14246097859,100.092923621024,100.061853890632,100.060665787207,100.074781820242,100.128458969939,100.171067730641,100.168862699878,100.1251722625,100.069153974093,100.059000601537,100.086215860955,100.134190301269,100.155919827721,100.20824131832,100.362725565013,100.472553467995,100.366528603793,100.20947943644,100.158821580049,100.133160692096,100.084815030944,100.057655037509,100.05819086228,100.072900091945,100.126918864449,100.169184511726,100.16660803786,100.122878861131,100.06574746174,100.053134736705,100.076003665031,100.121509844123,100.149074332501,100.198476894128,100.343881145572,100.448935314414,100.347745587851,100.202747005095,100.151350318617,100.120445636669,100.074011463007,100.0520275521,100.054725501961,100.07032564094,100.124775018261,100.166990347202,100.163707548439,100.119741378389,100.060870884893,100.045161112778,100.061999758102,100.10324986564,100.135849127447,100.184266269208,100.317804993048,100.412070775623,100.320166395952,100.189357562967,100.134906427511,100.101497301443,100.060084909482,100.04430150613,100.049656505816,100.06686759051,100.122046149023,100.164257229104,100.160069452402,100.115509441424,100.053994106393,100.03420512547,100.042519690579,100.076140029691,100.110627570726,100.160484953912,100.280027235524,100.359477335168,100.277348665115,100.159608756194,100.104929526081,100.069786211473,100.039571249589,100.034095303223,100.042576766682,100.061055846544,100.118366329596,100.161112861078,100.155501322172,100.109843663109,100.044290502062,100.019013418525,100.014871553827,100.03499442589,100.063885339254,100.115396645215,100.224851427551,100.286705272066,100.186299996832,100.060522618576,100.030282289868,100.025120217851,100.012341975134,100.016103307423,100.0365465589,100.05449439598,100.112662447841,100.157680494466,100.149827153126,100.102279422296,100.030765931403,99.9969329871078,99.9761785629312,99.9680042541093,99.9824345706999,100.027652074327,100.148548498246,100.20763689842,100.072224562343,99.779161766906,99.6899414791075,99.8900608411259,99.9957367273981,99.9849932285848,100.014483359321,100.04848147533,100.104928946409,100.153027213435,100.142788592336,100.09234129957,100.011191171166,99.9661388251052,99.9107388946028,99.8694259625874,99.7991918372865,99.9305372740877,100.211507012008,100.352501453379,100.1902475031,99.7380865928415,99.2347701048923,99.3152324586872,99.897008853734,100.021652461777,99.9836983426005,100.036571844608,100.098154462891,100.143986966349,100.133911514146,100.079082492139,99.9836007780787,99.9115542530353,99.8264298729689,99.566026996829,99.575226273145,100.064736458163,100.38326550499,100.449704038425,100.410028745119,100.096425207616,99.2174123740585,98.6233992218054,99.094863611193,99.9710358250854,99.9750626740202,100.005115663328,100.0943608253,100.137722274871,100.123038925753,100.060550566928,99.9413899630141,99.8303167070235,99.5273156771948,99.0787844191848,99.8079334200926,100.344927734954,100.408814337304,100.438224332173,100.454819173247,100.449698974314,99.8696921309122,98.6838343603199,98.6327641509339,99.7020655286419,100.004829731503,99.9657960178435,100.067385473988,100.139098206276,100.106635563274,100.037952679855,99.8598493958001,99.67163121552,98.9967649923394,99.5166368197319,100.392961788807,100.412690921855,100.384750757552,100.40991218151,100.438336879587,100.425756157207,100.519448917795,99.335754807017,98.4177565160097,98.8842882738466,99.8818925154025,100.024180356513,100.03058355972,100.124323348852,100.086421406875,99.992250633673,99.7935401544824,99.2432164903676,99.210171755112,100.145493173211,100.308700233754,100.348625612788,100.367336901928,100.381326707582,100.418988651911,100.388676534194,100.401712872988,99.9511743997024,98.7796578799689,98.2557331704988,98.960092873372,99.962672100985,100.042698319645,100.078044933447,100.056581165732,99.9338730366866,99.4501895996701,98.949100753532,99.7744514250184,100.249657080871,100.297580360569,100.31607657367,100.334718564362,100.349093327889,100.356927019063,100.352538362269,100.33239693578,100.446475587264,99.8135362475906,98.6664376930264,98.6130007061226,99.6043424409991,100.052581518044,100.079753412702,100.052675902611,99.7931624803938,99.1261816659362,99.6241300196079,100.278512552343,100.259584064069,100.273799332628,100.289655433387,100.302990353861,100.311204441978,100.311869618626,100.313117264854,100.285531259103,100.279858330467,100.447703254368,99.539211652386,98.7184178896979,99.0235907431571,99.8198162473462,100.149517544363,100.150864685726,99.6520750850964,99.6474385814909,100.243192671106,100.194166976852,100.227934329013,100.243917472851,100.258260393999,100.268526053962,100.274145486827,100.273724462492,100.27200698818,100.285641321651,100.214144295849,100.259444617634,100.04804129835,99.2832940996467,98.9400785207369,99.3825108596902,99.938479536868,100.100198384109,99.7931121404105,100.134717544656,100.183286937976,100.189701285358,100.201126427877,100.214512560496,100.225674237965,100.233421069522,100.237330523378,100.237743486315,100.232471169207,100.230530867669,100.208729160042,100.167328718305,100.289689378691,100.040453430423,99.5074910648733,99.5906517105257,99.9386727842044,100.598807568282,100.321855609071,100.182427773552,100.169830547287,100.171496330483,100.17954928156,100.187333726128,100.194676854142,100.19975518786,100.201873904261,100.201680813064,100.196757829413,100.185991227805,100.175121385548,100.137813292478,100.1383056991,100.237286587015,100.099182041665,99.9903846793267,100.507659091009,100,100.044567036065,100.123707424623,100.126005685623,100.130391624566,100.141855353231,100.150929956959,100.158877987639,100.163950056773,100.166019435063,100.164729463908,100.160310034796,100.150086533551,100.140520841873,100.13530632463,100.106699221064,100.122824203087,100.118430072182,100.23852650298,100,100,100.288756163993,100.098630422039,100.117257888719,100.110861357744,100.116896123614,100.121410515504,100.126761761012,100.129318092538,100.130487184036,100.129143373904,100.126879162875,100.119694362109,100.109200207032,100.110069166645,100.115666700844,100.102345234063,100.157352114058,99.9384209455381,100,100,100.553380990517,100.092649773541,100.11561158647,100.101511703906,100.104174854972,100.102201581087,100.103269447812,100.102306047606,100.097900287471,100.094958104294,100.097690129134,100.096074670251,100.09471447042,100.098726131213,100.115496385537,100.119996185244,100.022093856665,99.9691964979631,100,100,100.744082590473,100.016001114964,100.111765257827,100.091875346185,100.093877615113,100.089677054521,100.084683551304,100.073934545584,100.059666415932,100.055560172578,100.061198612894,100.067939714867,100.075651614046,100.083601327141,100.098433984219,100.120773195492,100.038615262596,99.8052342763429,100,100,100.967824195973,99.9247513131194,100.098660774359,100.094462452547,100.084336548714,100.066584251625,100.046234256127,100.030859233135,100.020602844953,100.017918538337,100.021023236866,100.029589403897,100.043409165755,100.061492868507,100.083635612346,100.133397943199,100.131786759423,99.8904132215816,100,100,100.754006347972,100.038758591814,100.083159435985,100.071710741178,100.044681080422,100.021755438209,99.9997748451451,99.983617086083,99.9738083015783,99.9711275722905,99.9745254538135,99.9798054489016,99.9846424313727,99.987450750675,100.008122184817,100.091808744894,100.055654435834,100.351526435994,100,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"Archive4001_field13":[401.153883546769,379.776373107523,339.337937191373,284.220707796819,220.397491960691,154.784525438065,94.4919912417395,46.0535209869463,14.718174526098,3.88162286622492,14.718174526098,46.0535209869461,94.4919912417395,154.784525438065,220.397491960691,284.220707796819,339.337937191373,379.776373107523,401.15388354677,401.15388354677,400.729790898949,379.352280459702,338.913844543553,283.796615148998,219.973399312871,154.360432790245,94.0678985939189,45.6294283391258,14.2940818782774,3.45753021840437,14.2940818782774,45.6294283391255,94.0678985939189,154.360432790244,219.973399312871,283.796615148998,338.913844543553,379.352280459702,400.729790898949,400.729790898949,400.145451898773,378.767941459527,338.329505543377,283.212276148823,219.389060312696,153.776093790069,93.4835595937436,45.0450893389504,13.7097428781021,2.87319121822907,13.7097428781021,45.0450893389502,93.4835595937436,153.776093790069,219.389060312696,283.212276148823,338.329505543377,378.767941459527,400.145451898773,400.145451898773,399.340830120242,377.963319680995,337.524883764846,282.407654370292,218.584438534164,152.971472011538,92.6789378152123,44.2404675604191,12.9051210995708,2.06856943969774,12.9051210995708,44.2404675604189,92.6789378152123,152.971472011538,218.584438534164,282.407654370292,337.524883764846,377.963319680995,399.340830120242,399.340830120242,398.233857155063,376.856346715816,336.417910799667,281.300681405113,217.477465568985,151.864499046359,91.5719648500333,43.1334945952401,11.7981481343918,0.961596474518728,11.7981481343918,43.1334945952399,91.5719648500333,151.864499046359,217.477465568985,281.300681405113,336.417910799667,376.856346715816,398.233857155063,398.233857155063,396.712759031651,375.335248592404,334.896812676255,279.7795832817,215.956367445573,150.343400922947,90.0508667266208,41.6123964718277,10.2770500109793,-0.559501648893729,10.2770500109793,41.6123964718274,90.0508667266208,150.343400922946,215.956367445573,279.7795832817,334.896812676255,375.335248592404,396.712759031651,396.712759031651,394.626077448199,373.248567008952,332.810131092803,277.692901698249,213.869685862121,148.256719339495,87.9641851431693,39.5257148883761,8.1903684275278,-2.64618323234527,8.1903684275278,39.5257148883759,87.9641851431693,148.256719339495,213.869685862121,277.692901698249,332.810131092803,373.248567008952,394.626077448199,394.626077448199,391.770026219697,370.392515780451,329.954079864301,274.836850469747,211.013634633619,145.400668110993,85.1081339146674,36.6696636598742,5.33431719902592,-5.50223446084715,5.33431719902592,36.669663659874,85.1081339146674,145.400668110993,211.013634633619,274.836850469747,329.954079864301,370.392515780451,391.770026219697,391.770026219697,387.87309692198,366.495586482734,326.057150566584,270.93992117203,207.116705335902,141.503738813276,81.2112046169505,32.7727343621573,1.43738790130897,-9.3991637585641,1.43738790130897,32.7727343621571,81.2112046169505,141.503738813276,207.116705335902,270.93992117203,326.057150566584,366.495586482734,387.873096921981,387.873096921981,382.578491100561,361.200980661314,320.762544745165,265.64531535061,201.822099514483,136.209132991857,75.9165987955309,27.4781285407378,-3.85721792011054,-14.6937695799836,-3.85721792011054,27.4781285407375,75.9165987955309,136.209132991857,201.822099514483,265.64531535061,320.762544745165,361.200980661314,382.578491100561,382.578491100561,375.426296284724,354.048785845477,313.610349929327,258.493120534773,194.669904698646,129.056938176019,68.7644039796937,20.3259337249006,-11.0094127359478,-21.8459643958208,-11.0094127359478,20.3259337249003,68.7644039796937,129.056938176019,194.669904698646,258.493120534773,313.610349929327,354.048785845477,375.426296284724,375.426296284724,365.839708827964,344.462198388717,304.023762472568,248.906533078014,185.083317241886,119.47035071926,59.1778165229341,10.7393462681409,-20.5960001927074,-31.4325518525804,-20.5960001927074,10.7393462681407,59.1778165229341,119.47035071926,185.083317241886,248.906533078013,304.023762472568,344.462198388717,365.839708827964,365.839708827964,353.123345460934,331.745835021687,291.307399105538,236.190169710983,172.366953874856,106.75398735223,46.4614531559041,-1.97701709888906,-33.3123635597374,-44.1489152196104,-33.3123635597374,-1.97701709888929,46.4614531559041,106.75398735223,172.366953874856,236.190169710983,291.307399105538,331.745835021687,353.123345460934,353.123345460934,336.486591288323,315.109080849076,274.670644932927,219.553415538372,155.730199702245,90.1172331796188,29.824698983293,-18.6137712715001,-49.9491177323484,-60.7856693922215,-49.9491177323484,-18.6137712715004,29.824698983293,90.1172331796188,155.730199702245,219.553415538372,274.670644932927,315.109080849076,336.486591288323,336.486591288323,315.109435333,293.731924893754,253.293488977604,198.17625958305,134.353043746922,68.7400772242961,8.44754302797037,-39.9909272268228,-71.3262736876711,-82.1628253475442,-71.3262736876711,-39.990927226823,8.44754302797037,68.7400772242959,134.353043746922,198.17625958305,253.293488977604,293.731924893754,315.109435333,315.109435333,288.268166694584,266.890656255337,226.452220339188,171.334990944634,107.511775108506,41.89880858588,-18.3937256104457,-66.8321958652389,-89.9818714252937,-90.0414258096144,-90.0058615437674,-66.8321958652391,-18.3937256104457,41.89880858588,107.511775108506,171.334990944634,226.452220339188,266.890656255337,288.268166694584,288.268166694584,255.526453051055,234.148942611808,193.710506695659,138.593277301105,74.7700614649771,9.1570949423508,-51.1354392539749,-89.9475060928175,-90.0047729690207,-90.0311355939419,-90.0460109304671,-90.0414212702307,-51.1354392539749,9.1570949423508,74.7700614649771,138.593277301104,193.710506695659,234.148942611808,255.526453051055,255.526453051055,216.966797531247,195.589287092,155.150851175851,100.033621781296,36.2104059451692,-29.402560577457,-89.6950947737828,-90.0082478742334,-89.9832027807185,-90.0057570581083,-90.0312364795512,-90.0199593315333,-89.6950947737828,-29.4025605774573,36.2104059451692,100.033621781296,155.150851175851,195.589287092,216.966797531247,216.966797531247,173.391458687101,152.013948247854,111.575512331705,56.4582829371507,-7.3649328989768,-72.9778994216032,-89.9150323698463,-89.9508208083349,-89.9675932933212,-89.9801335198955,-90.0138930535706,-89.9867217808953,-89.9984073358069,-72.9778994216032,-7.3649328989768,56.4582829371504,111.575512331705,152.013948247854,173.391458687101,173.391458687101,126.386222934425,105.008712495179,64.570276579029,9.4530471844746,-54.3701686516526,-89.8621070803115,-89.9050647024842,-89.9216443969262,-89.9383547639487,-89.951240060288,-89.9582620493457,-89.9543281311836,-89.9362736951225,-90.038531880275,-54.3701686516526,9.4530471844746,64.570276579029,105.008712495179,126.386222934425,126.386222934425,78.1582984266634,56.7807879874167,16.3423520712672,-38.774877323287,-89.8879726397839,-89.8710054611447,-89.883747788876,-89.8979609310028,-89.9099141295116,-89.9172770999942,-89.917873353157,-89.9189917222591,-89.8942640905151,-89.8891789726672,-90.039632340426,-38.7748773232872,16.3423520712672,56.7807879874167,78.1582984266634,78.1582984266634,31.153062673988,9.77555223474133,-30.6628836814084,-85.7801130759626,-89.8123666840403,-89.8426351707773,-89.8569621921838,-89.8698189455497,-89.8790209105408,-89.8840580756794,-89.8836806765447,-89.8821411614477,-89.8943627487334,-89.8302740169045,-89.8708804637053,-85.7801130759628,-30.6628836814084,9.7755522347411,31.153062673988,31.153062673988,-12.4222761701583,-33.7997866094049,-74.2382225255545,-89.8026140001212,-89.8083637132684,-89.8186050189279,-89.8306041231426,-89.8406092631616,-89.8475533927196,-89.851057761425,-89.8514279344583,-89.8467019180474,-89.8449626643718,-89.8254199802139,-89.788309320318,-89.897991359003,-74.2382225255545,-33.7997866094051,-12.4222761701583,-12.4222761701583,-50.9819316899659,-72.3594421292125,-89.8018438595766,-89.7905519177539,-89.7920450978038,-89.799263627752,-89.8062414729812,-89.8128237294701,-89.817375862432,-89.8192750441909,-89.8191019604883,-89.8146890807148,-89.8050380800556,-89.7952945362143,-89.7618521888581,-89.7622935738757,-89.8510183776074,-72.3594421292127,-50.9819316899659,-50.9819316899659,-83.7236453334953,-89.6782678123868,-89.7492079260797,-89.7512680485981,-89.7551995305251,-89.7654754241576,-89.7736097463651,-89.7807342274341,-89.7852807449272,-89.7871357008333,-89.7859793923785,-89.7820178904279,-89.7728537158026,-89.7642791906136,-89.75960498503,-89.7339620583727,-89.7484162211443,-89.7444773960806,-83.7236453334953,-83.7236453334953,-89.6383186705767,-89.8971548410373,-89.7267293225898,-89.7434266705332,-89.7376929277139,-89.7431023903754,-89.747149015364,-89.7519457818647,-89.7542372344643,-89.7552851884276,-89.7540806196187,-89.7520510189214,-89.7456106843147,-89.7362039001449,-89.7369828209322,-89.7420003564746,-89.7300592176302,-89.7793664600113,-89.5831202415038,-89.6383186705767,-89.6383186705767,-90.1343600863183,-89.7213683698313,-89.7419509528768,-89.7293120552115,-89.731699259051,-89.7299304495177,-89.7308876672957,-89.7300240915489,-89.7260748422392,-89.7234375187073,-89.7258864598397,-89.7244383896583,-89.7232191293994,-89.7268151146847,-89.7418476886975,-89.7458812334987,-89.6581232322206,-89.6107069292592,-89.6383186705767,-89.6383186705767,-90.3053017941973,-89.6526618009987,-89.7385031685509,-89.7206741861696,-89.7224689863722,-89.7187036744824,-89.7142275821566,-89.7045923541545,-89.6918026426296,-89.6881218751266,-89.693176078225,-89.699218688693,-89.7061315054548,-89.7132574946126,-89.7265532390307,-89.7465777324207,-89.6729327427176,-89.4637339505439,-89.6383186705767,-89.6383186705767,-90.5058600075338,-89.5708670128352,-89.7267565298997,-89.7229932248151,-89.713916534869,-89.6980036742325,-89.6797622804187,-89.6659803683134,-89.6567867143909,-89.6543805470725,-89.6571635466337,-89.6648421147347,-89.6772299169084,-89.6934398440088,-89.713288227294,-89.7578943440011,-89.7564501059539,-89.5400869249172,-89.6383186705767,-89.6383186705767,-90.3141972835685,-89.6730612206193,-89.7128613908096,-89.7025989732747,-89.6783700398307,-89.6578198796064,-89.6381168455504,-89.6236333019922,-89.6148408724802,-89.6124379118185,-89.6154837156862,-89.620216614509,-89.6245524042706,-89.6270697344761,-89.6455992604857,-89.7206144858925,-89.6882063711237,-89.953421057484,-89.6383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767],"Archive4001_field14":[548.048922561689,524.419769903123,479.291997344717,417.786441353742,346.575595716847,273.406415911654,206.201741095966,152.241392528466,117.402870162585,105.374849192454,117.368799329485,152.17233099116,206.119181599708,273.346924185584,346.527766264174,417.732786620426,479.243924357057,524.384098801472,548.216960324139,548.281779886581,547.487958946605,523.571266774641,478.425837044772,416.941628751311,345.75788287015,272.588646058229,205.365269261576,151.42176060378,116.635976823399,104.642110793237,116.635123387236,151.421646416642,205.356314143078,272.580047341067,345.748195180623,416.933694207159,478.425284886083,523.557939900355,547.40802846442,547.388344751303,546.441079737269,522.638568165735,477.487571510606,416.006281654482,344.833144049085,271.67535896541,204.451373351914,150.512636896339,115.742882640671,103.758205711178,115.73462601901,150.500359526796,204.441549752797,271.673017299446,344.831051234442,415.999107033607,477.476302450425,522.594280202783,546.477155232569,546.570734873104,545.705256101828,521.795067792811,476.636929093488,415.147772414625,343.979856028711,270.823387142564,203.575880808626,149.609565901961,114.830747392513,102.848902751289,114.834978645084,149.616120370437,203.57805690652,270.824052350378,343.97911718898,415.145630372222,476.628366558578,521.755881078386,545.639576942285,545.676458341012,544.432790481151,520.546202510028,475.379084621398,413.887328797028,342.722111953128,269.571508657059,202.323589143757,148.351548778763,113.569804565078,101.586144244215,113.569785903664,148.351179402555,202.32178441929,269.570974863472,342.720337182146,413.885194215441,475.36771973781,520.496042121433,544.396022477078,544.443035607132,542.746032693063,518.851554885462,473.684790420339,412.190736844868,341.024625588621,267.875830847552,200.625811105144,146.649157102152,111.863889597387,99.8816606843085,111.865600185384,146.649323976254,200.627498091564,267.876609349721,341.02380494566,412.189476411895,473.673825646281,518.800383958008,542.700401261625,542.74465813025,540.414398935489,516.521942555182,471.354169767809,409.858992048709,338.691268604592,265.543810867734,198.294789176175,144.315496218599,109.525259394578,97.5446587166734,109.527690214031,144.314639391413,198.296996498691,265.543216188906,338.690312425627,409.857329539219,471.343189120059,516.470221004238,540.372175747563,540.41541059913,537.227314695487,513.33472096079,468.166556825755,406.669844740781,335.499513511868,262.351395537945,195.105901685446,141.123927208636,106.32793892269,94.348957901636,106.331252958664,141.12347357927,195.108891291696,262.350621804703,335.498537830612,406.668285766914,468.155566224699,513.282572052959,537.184878623974,537.227487384676,532.877890127561,508.985570268865,463.816662185233,402.318040251468,331.144437844192,257.994958901031,190.754679176838,136.769317929538,101.966267356768,89.9868996784516,101.970070395547,136.770556047658,190.757580929166,257.993929291858,331.143037014181,402.31669468744,463.80569907342,508.93329809831,532.835946292133,532.87821193941,526.969003235105,503.076644637057,457.906623442442,396.405542156197,325.227593417829,252.075646213446,184.841201451179,130.852921274907,96.0407907068885,84.0566492944319,96.0446551491676,130.857191385875,184.843477437296,252.074582005992,325.225601215806,396.404434971592,457.895601482663,503.024091416866,526.927170215506,526.969385544447,518.987154766839,495.09455917547,449.922798886749,388.418620553424,317.234641532054,244.078438256118,176.849028267279,122.859762671142,88.0357665755184,76.0408367767953,88.0381279784221,122.864853964901,176.848085567344,244.076685691921,317.232726683435,388.417760946777,449.911584507672,495.041685387591,518.945493367423,518.987704447503,508.288774066369,484.395584634072,439.221179503816,377.712921961683,306.520418860099,233.356585815736,166.129064106126,112.141238751413,77.303246213561,65.2935007319073,77.3005676431521,112.140362553695,166.123366061481,233.350231997518,306.517470419108,377.712812139436,439.209762164105,484.341131039192,508.247070943563,508.289817475044,494.097903074119,470.203615993738,425.025173037465,363.511427392719,292.306467861327,219.129137349915,151.896019012634,97.9098475806968,63.0617675435689,51.0344258067867,63.0232161128503,97.8549735540574,151.862415963249,219.119263141876,292.303938282634,363.508517281617,425.017429094304,470.148266726608,494.055064199788,494.100082246413,475.532360291571,451.636183139422,406.451779853305,344.9294783478,273.70790625693,200.502278564633,133.254699630579,79.2622343963066,44.4255960007623,32.3954888196382,44.3492720648594,79.0137440888854,132.962206538986,200.424335151649,273.727464421397,344.917538589277,406.435497281223,451.582385192456,475.487462084854,475.53556035188,451.677087769718,427.778011055633,382.583971132004,321.050450224734,249.794232627538,176.555466312048,109.223222936102,55.316885635004,20.6403205534613,8.69211941353409,20.6190610445529,55.1244349537576,108.658801203708,176.001272808147,249.780502586669,321.105963861405,382.556478303439,427.722241600671,451.632453640273,451.678286143732,421.724243606359,397.820785163034,352.612413653749,291.051898567496,219.765956520735,146.30810026112,79.0552902867918,25.5071177339108,-9.13188803872603,-21.1546450865887,-9.10512479859666,25.5388064833631,78.6974763877052,145.365472486097,219.03439025896,291.111380139546,352.60387554969,397.746818334222,421.684692917514,421.728054367084,385.186900944542,361.275783164398,316.043732765259,254.444190948059,182.940372251537,109.294387610052,42.7615273603147,-10.7391610627236,-45.6328092798358,-57.6925948662652,-45.5868044438928,-10.6343898233631,42.8232860711342,108.899437551187,182.045820725276,254.315939769678,316.107172533748,361.181028615313,385.131247492776,385.202960225064,342.153564543062,318.236252238324,272.945259159045,211.268572417555,139.392888527681,66.7153069715982,0.32962269002843,-53.6883309148229,-88.6738058985889,-100.737840055928,-88.6202197765542,-53.675265679471,0.456109819017001,66.534424958883,138.813880051351,210.481229475882,272.967302278647,318.222479914982,342.077512539509,342.17125232864,293.520949473292,269.578149278771,224.266549004356,162.227756779032,90.9938943770822,18.7317624117062,-48.3670397783952,-102.364797137261,-137.303620667584,-149.378826443227,-137.251968917601,-102.324746215855,-48.2740271391611,18.5374436381974,90.5633805019392,161.240273459163,223.433101723246,269.548570746083,293.477226386062,293.512572999864,241.052334777419,217.080997227055,171.484423994814,109.494866587466,39.1193995922587,-33.602848135364,-100.816934106311,-154.836120631109,-189.77501345988,-201.84983427765,-189.752805005179,-154.79965884251,-100.7821175311,-33.4060296289707,39.1584844148309,109.21220352696,170.647235101266,216.751466631367,241.048335129731,241.07550702439,187.245630417853,163.137487574317,117.357616964635,56.3670967570969,-14.1793383768617,-87.3957202486116,-154.643514230697,-208.665340867837,-243.609540766826,-255.690522260007,-243.600661502062,-208.64187903637,-154.631782304222,-87.3754459822129,-14.0101476748368,56.2821783898747,116.949853188396,162.36791583708,187.012770762588,187.342472059605,134.905044746238,110.55762572429,65.4400994254595,4.5473849538653,-66.7024584070828,-139.866144438397,-207.112170545204,-261.135510361954,-296.082779521455,-308.166355669888,-296.077581112925,-261.121763767774,-207.070446696403,-139.879934471561,-66.6371807663006,4.35223358110881,65.0759549436153,109.84562915993,134.136690920202,134.69265959738,86.2419775312502,62.0862618662325,17.3149774752531,-44.1249216926362,-115.319325011948,-188.505353252904,-255.75397637093,-309.78049743136,-344.730285419266,-356.815571546708,-344.725963002473,-309.773700500118,-255.737958063757,-188.497750520739,-115.341697579002,-44.0185192519209,17.2207133610199,61.800640790695,85.7324308576665,86.0804519313451,43.7236536764223,19.5980722958924,-25.6542453348513,-87.1553111223253,-158.354463005823,-231.543863438222,-298.798088244298,-352.828427854184,-387.780884339928,-399.867961204825,-387.778958714725,-352.826346878913,-298.799430742621,-231.548291334234,-158.388146043829,-87.1868359705125,-25.5993865213883,19.3753987284867,43.1152307874673,43.6325051991491,6.59837603471576,-17.2056863505379,-62.2394357572045,-123.725606057415,-194.922037785165,-268.108027439975,-335.360962086892,-389.390696794111,-424.343159544441,-436.430285747448,-424.342380137306,-389.389264746954,-335.3618055103,-268.109361951333,-194.917123085101,-123.744912521974,-62.2403189787409,-17.1318233144216,6.83690253769565,6.59837603471576,-23.3455910504529,-46.9054643077791,-92.2084798449578,-153.678320939487,-224.885535137156,-298.076953754761,-365.334448613515,-419.366780105907,-454.321758593844,-466.409785083643,-454.321933312478,-419.366662704044,-365.336164766911,-298.084649671343,-224.886327328255,-153.679912127362,-92.2047650329335,-47.0368683577134,-23.4071701049148,-23.3455910504529,-47.1938250115162,-70.4890734423185,-116.062694454518,-177.528201202799,-248.743118752058,-321.937908984467,-389.201891508996,-443.23850638017,-478.197004599839,-490.290605941272,-478.204352543151,-443.244085698848,-389.208018419832,-321.947369369018,-248.74590432475,-177.528316403732,-116.035348042815,-71.0203605761702,-47.2246285135531,-47.1938250115162,-65.753693625018,-88.8582404558637,-134.699211726598,-196.091916144944,-267.31262372328,-340.508074837827,-407.774284649064,-461.816960890179,-496.785244715364,-508.888708426312,-496.803619088369,-461.84044582859,-407.796021988718,-340.526300838894,-267.320897742323,-196.105247418552,-134.594439646069,-89.5637077837413,-65.9484593486751,-65.753693625018,-79.9399964870373,-102.820801712383,-148.976764390461,-210.291323490431,-281.496339478937,-354.703918766245,-421.983680313979,-476.041713047376,-511.014622889831,-523.114074859311,-511.027563584629,-476.066924066637,-422.020675161707,-354.744846149204,-281.529309062977,-210.306348652444,-148.768117760382,-103.656839148933,-80.0495832654557,-79.9399964870373,-90.6347390914703,-113.729362164817,-159.5574997162,-221.001567433238,-292.21383379474,-365.438316838971,-432.723251731828,-486.782915062791,-521.756607641316,-533.855612007119,-521.769097155109,-486.808164454123,-432.765201721135,-365.49835548802,-292.298093785242,-221.076604684407,-159.50444956312,-114.427714076955,-90.2832126554767,-90.6347390914703,-197.613687070316,-221.462316491635,-266.575206286859,-328.063674848069,-399.264492514763,-472.461945898238,-539.723955148883,-593.761637886782,-628.719172706245,-640.808368287543,-628.719172706245,-593.761637886782,-539.723955148883,-472.461945898238,-399.264492514763,-328.063674848069,-266.575206286859,-221.462316491635,-197.613687070316,-197.613687070316,-203.520319300754,-227.368948722073,-272.481838517298,-333.970307078507,-405.171124745201,-478.368578128676,-545.630587379321,-599.66827011722,-634.625804936683,-646.715000517981,-634.625804936683,-599.66827011722,-545.630587379321,-478.368578128676,-405.171124745201,-333.970307078508,-272.481838517298,-227.368948722073,-203.520319300754,-203.520319300754,-207.867711527106,-231.716340948425,-276.82923074365,-338.317699304859,-409.518516971553,-482.715970355028,-549.977979605673,-604.015662343572,-638.973197163035,-651.062392744333,-638.973197163035,-604.015662343572,-549.977979605673,-482.715970355028,-409.518516971553,-338.317699304859,-276.82923074365,-231.716340948425,-207.867711527106,-207.867711527106,-211.053906081913,-234.902535503231,-280.015425298456,-341.503893859665,-412.70471152636,-485.902164909835,-553.164174160479,-607.201856898378,-642.159391717841,-654.248587299139,-642.159391717841,-607.201856898378,-553.164174160479,-485.902164909835,-412.70471152636,-341.503893859666,-280.015425298456,-234.902535503231,-211.053906081913,-211.053906081913,-213.381796223538,-237.230425644857,-282.343315440082,-343.831784001291,-415.032601667985,-488.23005505146,-555.492064302105,-609.529747040004,-644.487281859467,-656.576477440765,-644.487281859467,-609.529747040004,-555.492064302105,-488.23005505146,-415.032601667985,-343.831784001291,-282.343315440082,-237.230425644857,-213.381796223538,-213.381796223538,-215.078724664379,-238.927354085698,-284.040243880923,-345.528712442132,-416.729530108826,-489.926983492301,-557.188992742946,-611.226675480845,-646.184210300308,-658.273405881606,-646.184210300308,-611.226675480845,-557.188992742946,-489.926983492301,-416.729530108826,-345.528712442132,-284.040243880923,-238.927354085698,-215.078724664379,-215.078724664379,-216.31365742706,-240.162286848378,-285.275176643603,-346.763645204813,-417.964462871507,-491.161916254982,-558.423925505626,-612.461608243526,-647.419143062989,-659.508338644287,-647.419143062989,-612.461608243526,-558.423925505626,-491.161916254982,-417.964462871507,-346.763645204813,-285.275176643603,-240.162286848379,-216.31365742706,-216.31365742706,-217.211288920449,-241.059918341767,-286.172808136992,-347.661276698202,-418.862094364895,-492.059547748371,-559.321556999015,-613.359239736914,-648.316774556378,-660.405970137675,-648.316774556378,-613.359239736915,-559.321556999015,-492.059547748371,-418.862094364895,-347.661276698202,-286.172808136992,-241.059918341767,-217.211288920449,-217.211288920449,-217.863174195453,-241.711803616772,-286.824693411997,-348.313161973206,-419.5139796399,-492.711433023375,-559.97344227402,-614.011125011919,-648.968659831382,-661.05785541268,-648.968659831382,-614.011125011919,-559.97344227402,-492.711433023375,-419.5139796399,-348.313161973206,-286.824693411997,-241.711803616772,-217.863174195453,-217.863174195453,-218.336289548474,-242.184918969793,-287.297808765018,-348.786277326227,-419.987094992921,-493.184548376396,-560.446557627041,-614.48424036494,-649.441775184403,-661.530970765701,-649.441775184403,-614.48424036494,-560.446557627041,-493.184548376396,-419.987094992921,-348.786277326228,-287.297808765018,-242.184918969793,-218.336289548474,-218.336289548474],"Archive4001_field15":[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.336026752226952,0.369800555040134,0.337147313905697,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.348922594899445,0.38797072570803,0.389578815854552,0.386717295553561,0.349968120920641,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.389336005596301,0.393055853748241,0.392725653065985,0.391558362219931,0.391682128829733,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.392321261229205,0.392073415230702,0.393924065412356,0.393045969935075,0.391144587016221,0.388319411623137,0.389393869692367,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.392553280615486,0.39238062666398,0.392887140810845,0.392609142926608,0.392458352220048,0.391897101766093,0.391049001785097,0.38750893894353,0.389971634872119,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.363097765819132,0.390041759900973,0.393733520507904,0.39323491966715,0.392614679113096,0.392876944218781,0.392691059719904,0.392797435822997,0.390276312796326,0.383897656346966,0.363115500382629,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.38735139221278,0.393452238445241,0.393301009848224,0.392752333105955,0.391569403315018,0.391534497190039,0.390830713392422,0.390892800003607,0.39019974452218,0.38599931159399,0.377452190325066,-0,-0,-0,-0,-0,-0,-0,-0,0.391861695194878,0.390352099123228,0.394261522565038,0.392180010279023,0.392023433162856,0.39219912106967,0.392032034582542,0.391221186568257,0.389438503241063,0.385353642115557,0.373189639507802,0.339722172346986,0.338339971120351,-0,-0,-0,-0,-0,-0,0.385497739353708,0.391089100039776,0.392471176154852,0.393251966117072,0.391903732678723,0.391968446632648,0.391817874871316,0.391867450326595,0.391922217911574,0.391851467324925,0.389906889640304,0.379172474262178,0.340776518733096,0.265785807512869,0.293288268316476,-0,-0,-0,-0,0.261095453358335,0.402205981453957,0.393248431715528,0.392805787019565,0.39252341023076,0.392072383060339,0.392055367888307,0.391592767898673,0.391880680873966,0.392088991619805,0.39165582412444,0.389189030792292,0.377864495467957,0.34151808622155,0.266073251319816,0.205540650810096,0.370876232947064,-0,-0,-0.00826191480852944,-0.445998843028434,0.423974642061502,0.393389839055159,0.392684772864061,0.392330425650906,0.392176632266928,0.392120551010579,0.391832731868955,0.392035037259959,0.392082454540844,0.391999818356083,0.390821204913933,0.382359785062968,0.345251071087192,0.29063565304123,0.425578916305473,0.549468635882311,0.346947020826066,-0.00826191480852944,-0.00826191480852944,-2.55202182841303,0.647816392786053,0.404107896096937,0.392560474530133,0.392304902892857,0.392288012832384,0.392194617053544,0.391807897224481,0.391905765741558,0.391945863996237,0.392056056001882,0.391770582701991,0.386442300346741,0.346930975268616,0.190865299516221,0.240919556731326,1.54162362987742,1.7913993490675,-0.00826191480852944,-0.00826191480852944,-3.80962970806235,1.25400178918245,0.467772195319444,0.39506345638074,0.39249938881142,0.392316819768858,0.392229179121735,0.391982552960932,0.392039885332873,0.392171408859337,0.39267964329014,0.393133548026419,0.392872721703663,0.388899209865723,0.329672304864271,0.169794667574576,0.936866944929739,3.53859353141764,-0.00826191480852944,-0.00826191480852944,-3.99175785749038,1.59987732333882,0.508447902399875,0.396258709660245,0.393150469364782,0.392501296762696,0.39227256155484,0.392125086304595,0.392251980703374,0.392539674733438,0.392303995834054,0.391107147382171,0.390416656687704,0.388190171382626,0.290382552357246,-0.0766510979984374,0.297688441848709,3.0545857029123,-0.00826191480852944,-0.00826191480852944,-2.20036401333147,1.01725912876727,0.438513793784393,0.390595222160377,0.389428713261566,0.389362028800586,0.390484748653724,0.391750220795753,0.392774821908697,0.393103927864811,0.392860147991977,0.394357107796162,0.403486122926286,0.418165243205877,0.340305473713226,0.0104836380548914,-0.175963730884616,2.52244295361944,-0.00826191480852944,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0],"Archive4001_field16":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-8.47849969431991e-06,-9.65265280683525e-06,-8.54347399581457e-06,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-9.0467865447863e-06,-1.04493110484327e-05,-1.05139524748665e-05,-1.03956199382083e-05,-9.11057122721104e-06,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.05519357020967e-05,-1.07431260403246e-05,-1.07120722532272e-05,-1.06408378997003e-05,-1.06454426713753e-05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.07072182800039e-05,-1.07041596493218e-05,-1.08131016531843e-05,-1.07317091533332e-05,-1.06035759017686e-05,-1.04437249319744e-05,-1.04408873085049e-05,0,0,0,0,0,0,0,0,0,0,0,0,-1.07293772089179e-05,-1.0719724741648e-05,-1.07509267763817e-05,-1.07350479083834e-05,-1.0709163689171e-05,-1.06507068267092e-05,-1.05273811641382e-05,-1.00542674772441e-05,-9.97013648884604e-06,0,0,0,0,0,0,0,0,0,0,-9.60372653935337e-06,-1.06033903648495e-05,-1.08167869257159e-05,-1.07798923636437e-05,-1.07389414552017e-05,-1.07439282146515e-05,-1.0664882211131e-05,-1.04633900264162e-05,-9.62777176027885e-06,-7.8941466199467e-06,-7.28912436898099e-06,0,0,0,0,0,0,0,0,0,-1.04401678981958e-05,-1.08059766716906e-05,-1.07966088762623e-05,-1.0741270671133e-05,-1.06585730463848e-05,-1.06361185316928e-05,-1.04820901469793e-05,-1.00775851024082e-05,-8.74618854140863e-06,-5.76296088183881e-06,-2.96576672553783e-06,0,0,0,0,0,0,0,0,-1.06658435470308e-05,-1.05906910903286e-05,-1.08702543002437e-05,-1.0712948096625e-05,-1.06971992863691e-05,-1.07010619103676e-05,-1.06759507616516e-05,-1.0517314876779e-05,-9.93371122604003e-06,-8.09173980087508e-06,-4.45259547632304e-06,4.04798079500779e-08,-5.45651664651814e-06,0,0,0,0,0,0,-1.04525297501823e-05,-1.06274328572908e-05,-1.07262585515855e-05,-1.08018593891757e-05,-1.06794586827164e-05,-1.06868137663696e-05,-1.06810175566352e-05,-1.06854231489706e-05,-1.06533161670086e-05,-1.04248247225769e-05,-9.23047718970338e-06,-6.31667717243545e-06,-5.07638060298632e-06,-9.23774314287584e-06,-1.69854956766358e-05,0,0,0,0,-3.25326845995733e-06,-1.13329288069508e-05,-1.07462119558477e-05,-1.07542236946756e-05,-1.07414134618011e-05,-1.06858688013745e-05,-1.06892848634743e-05,-1.06713087006938e-05,-1.07011719592265e-05,-1.06986335595138e-05,-1.05534090835135e-05,-9.73596979747526e-06,-7.27291671864805e-06,-6.2619192249258e-06,-1.63408840307966e-05,-2.94800738629419e-05,-3.28428359352984e-05,0,0,2.4023896116887e-07,2.84583256870974e-05,-1.96899036382092e-05,-1.10094970295904e-05,-1.07452251540963e-05,-1.07151045085629e-05,-1.06915149444831e-05,-1.06920206235372e-05,-1.06821507870336e-05,-1.07101504909224e-05,-1.07128489617025e-05,-1.06526658782968e-05,-1.01004870884935e-05,-7.32066973796464e-06,-1.78419497842697e-06,-6.56441534374608e-06,-4.54365472251084e-05,-5.50984877918381e-05,-8.59087413118687e-06,2.4023896116887e-07,2.4023896116887e-07,9.72701600403525e-05,-5.02918446727563e-05,-1.51185640788754e-05,-1.09110887933639e-05,-1.07167716123513e-05,-1.06946117739426e-05,-1.06888046502718e-05,-1.06734669316211e-05,-1.06934048744733e-05,-1.07138284874964e-05,-1.07328996818978e-05,-1.06235293060308e-05,-9.66252537182299e-06,-4.73471072837128e-06,5.37530604560743e-06,-1.33239382194006e-05,-0.000114154972834513,-7.16506547178142e-05,2.4023896116887e-07,2.4023896116887e-07,0.000133675406686962,-8.7841872300487e-05,-2.54774276982062e-05,-1.19847236419446e-05,-1.08100366560393e-05,-1.06972020148532e-05,-1.06873567347066e-05,-1.06957832031185e-05,-1.07410660348251e-05,-1.07972500700271e-05,-1.08503536466742e-05,-1.09733009594493e-05,-1.15321636258159e-05,-1.25754995679017e-05,-7.30190458853031e-06,-3.36843271497855e-07,-5.81101194256917e-05,-0.000140009593451396,2.4023896116887e-07,2.4023896116887e-07,0.000113321439130232,-6.01719002588652e-05,-2.52216505032266e-05,-1.28608216982684e-05,-1.09967240859987e-05,-1.07667092379415e-05,-1.07663836388383e-05,-1.07773612398887e-05,-1.07741234387504e-05,-1.07725181806018e-05,-1.10369128378807e-05,-1.1895528587047e-05,-1.3038075849181e-05,-1.28899855553755e-05,-4.81762208437431e-06,9.61260411713738e-06,-2.91080141323619e-05,-0.000120299628179055,2.4023896116887e-07,2.4023896116887e-07,-1.23645086205215e-05,9.17434704206244e-07,-1.26509885376436e-05,-1.13722480818979e-05,-1.08354070107453e-05,-1.05923090814031e-05,-1.04487698990852e-05,-1.03439588201582e-05,-1.05359058579779e-05,-1.14804461190943e-05,-1.37692586577032e-05,-1.60736999532674e-05,-1.72560939972755e-05,-1.67482830875088e-05,-1.17046529339859e-05,1.51089966493601e-06,-1.32774839585181e-05,-0.000115861665108241,2.4023896116887e-07,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive4001_field17":[-18.3400383882324,35.2843806168338,72.961369616306,105.250034890672,134.940210455223,158.987254127824,169.910236459102,153.660590145391,94.2753090155339,-5.8858171927762,-106.147405255559,-165.897380745005,-183.414587582963,-172.892844762539,-146.799801552192,-114.9290602679,-82.7573541931173,-51.0505456921379,-17.0573454306639,32.0598928987699,30.6473324871438,48.5637578891866,75.339412054536,104.600817684001,131.406273894833,150.460841549515,158.267268335862,148.249803302291,96.5782285787618,1.93363545715085,-92.457444542388,-143.767486005272,-154.084257159067,-146.287640498241,-128.167223543501,-101.802654591977,-71.7064635143916,-42.5234288122401,-15.8441172813256,4.49302209259575,47.1024172541017,53.2125770670426,74.575188473063,102.429169761153,126.664910323389,140.460265899617,144.623838524001,137.415358526766,92.159012728655,1.88708440081364,-88.6407874966193,-134.494516057605,-142.454175887881,-138.465799006314,-125.603913657794,-101.397795835866,-72.553557581646,-44.9899816770757,-24.888082925407,-16.1774830404947,51.6249066355509,54.5820160356501,75.1750354946806,103.03977038934,126.980505424142,137.814817196346,139.857180337901,134.053700645925,90.8410266779471,1.2185172510085,-88.5099503750303,-132.205014718447,-138.308858205946,-136.495997347077,-126.171860979185,-102.058260075174,-72.9563940396088,-45.2002140429475,-26.2266198624162,-21.4110740207394,53.0525107240047,55.1725186548296,75.4712089467476,103.336079594932,127.351343535473,137.459315743042,138.426854342015,133.292193197859,90.7467528502981,0.9304661522424,-88.8432505383346,-131.682785907304,-136.969386378001,-136.495969342316,-126.462063515716,-102.384692364481,-73.2062745489983,-45.2779546654121,-26.1467252000757,-23.2505644300518,53.559884127476,55.4538146765136,75.6087382519549,103.510680694758,127.675962003183,137.761763466918,138.165609922829,133.324525662477,91.1670864166314,0.934976242891109,-89.2834762372779,-131.751429929803,-137.032286939378,-136.82755904244,-126.750744506265,-102.547822853564,-73.2736018190215,-45.2551899811916,-25.9689155508573,-23.8545155072948,53.7684034745243,55.6051347821351,75.7621328674217,103.851003621276,128.420601831256,139.000577229062,139.24462684861,133.718027199898,91.9230981368054,1.15255710577616,-89.8155362974346,-132.14327941655,-138.089582930446,-137.956445604335,-127.449656043038,-102.794465856489,-73.3197478569079,-45.2094095980919,-25.795513784231,-23.9420494279923,53.9403767117246,55.7796626072487,76.0383089989135,104.479858150995,129.826782721022,141.432910758113,141.639878795821,134.723115352715,93.1463231386144,1.65959261450349,-90.3789105805927,-132.849194012451,-140.3274568989,-140.200740032466,-128.681280467872,-103.255256856445,-73.4542090605034,-45.1956588081649,-25.6670623353347,-23.8769534689962,54.2259245494667,56.0903082916672,76.5263746812022,105.486349215904,131.961456799418,145.095416706499,145.524761275653,136.813362191661,95.045626095695,2.61901938817995,-90.9138372116731,-134.427143077614,-143.961332438592,-143.623400893245,-130.506610879051,-104.0152538788,-73.748778099592,-45.2627275238077,-25.6249441791563,-23.8297914643672,54.7243915245801,56.6223292431515,77.3252636661968,106.999946152755,134.986822109784,150.385009376653,151.57876142241,140.840607934215,97.9494458693228,4.27607580588309,-91.2841151341833,-137.530695853789,-149.634308401548,-148.583640905089,-133.111586012014,-105.189277649454,-74.2755252757784,-45.4520070884859,-25.6804832822715,-23.8586002783052,55.5284408468676,57.4597450732087,78.5612837184088,109.22293244771,139.254951181941,157.992470175946,161.00674734983,148.343711007857,102.631751971726,6.93141748902018,-91.5529423460699,-143.317510719269,-158.516573644351,-155.741246875397,-136.833563550731,-106.9551838225,-75.1322485863998,-45.8109068705379,-25.8372767079448,-23.9870101670046,56.7555228845694,58.7105896775432,80.4104567595314,112.459071537524,145.307597734106,168.92553629288,175.694403960302,161.867647092731,110.948657096728,10.7962974930732,-93.1673878882288,-153.871936554513,-172.403081308975,-166.072430186123,-142.171721358978,-109.573521965563,-76.4639784063324,-46.4102685106216,-26.1135060646338,-24.2465530340302,58.5725242551213,60.5308184326273,83.1284746183001,117.160349714897,153.944405638305,184.607504307009,198.288860483352,184.824426259191,125.312512018423,14.0693846641508,-100.854017559499,-172.902743211495,-195.007691986464,-181.115806123218,-149.71560721394,-113.327709894147,-78.446697878561,-47.3512360248879,-26.5511070318415,-24.6921810068555,61.224002601933,63.1545952614812,87.0978636334034,124.023354755035,166.427171126611,207.165012107134,231.94622044744,219.03736604257,140.281855809936,1.71354630895043,-135.515928390307,-232.291527077363,-250.349210984765,-207.240032976055,-161.125648246898,-118.755748389525,-81.3074548553042,-48.7739383412194,-27.2241732537584,-25.4101759953292,65.076572581076,66.9425133101551,92.9134906607792,134.199762619505,185.040430157705,240.740034748042,280.742657828697,256.859234145096,132.891300498384,-45.4453089687684,-239.919613825834,-380.861321569618,-374.894692180902,-274.534248266692,-181.062044488347,-126.809996252059,-85.2736360978401,-50.7798136988348,-28.2228627849527,-26.5093997003073,70.6982919125734,72.4662946969443,101.553955366087,149.759400318645,214.641971100611,295.848644296022,353.349191973497,272.800476106606,112.347136074749,-98.2878796826952,-315.510798843723,-491.544793041097,-597.000323083391,-433.236385044165,-244.663530483509,-142.619821210842,-92.0325054645045,-53.8371475043992,-29.7488711888658,-28.1967720609247,79.0109748179261,80.6695354383731,114.772349329238,175.130670834984,269.035860098964,415.94776953536,419.445451329795,285.565716891728,82.6133964443896,-120.647143238256,-334.73655584807,-547.688634530938,-703.325862587155,-756.331542387717,-360.607316408962,-171.228403859927,-103.721580631902,-58.8813331358326,-32.1932032152712,-30.8270493279532,91.5816126370181,93.1662379519473,135.749307731585,219.061304992864,375.982914876859,521.027189635514,435.651486753402,251.053176031255,65.6152839086832,-122.265721848423,-314.252790332205,-512.460434843283,-658.927653486112,-704.781443079178,-467.571561851341,-237.046839185324,-120.688828270214,-66.1283847103971,-35.8632755964277,-34.7076760831994,111.25499440599,112.848938006522,168.664802664715,280.074208779433,453.993392478692,450.597179247738,353.56075794386,206.204786243309,48.5396844249033,-115.181028444135,-283.442033107527,-442.575436127953,-584.954052422541,-674.550358505652,-722.318229697605,-412.425525851661,-184.262456274546,-82.1089834088483,-43.3109350777842,-41.9300530876012,144.511861562401,147.284403288756,230.218515530042,407.591969954782,466.850966695101,404.767342747901,293.290397274696,169.433740620482,36.3940170265673,-101.936923516493,-239.44100473196,-371.343048709062,-496.716898394896,-611.442035893565,-690.933439946808,-704.893378409933,-298.038050603806,-112.958559648978,-58.5956018824543,-56.8687107321513,202.046921370161,209.901022361169,335.410046105611,466.419402876288,429.813191434838,341.745859897603,244.387160790512,139.226148433519,28.0615517172839,-85.3290700587578,-196.817886368323,-304.015677547124,-406.846026116398,-507.120892412049,-569.574135878433,-581.175576854438,-383.655014183214,-178.635407524704,-87.0071655985613,-88.5174398748445,281.817283180201,296.903543053363,387.588887376179,386.575447091655,342.025747808773,274.496834218638,196.35550612466,110.905028015734,20.9633585007171,-70.1972192701408,-159.643026210207,-245.652789858785,-327.835824136698,-398.780500370554,-452.975677580279,-474.451715234562,-488.398210447287,-305.279118660154,-163.567703301427,-161.879505344659,332.854664334561,353.643393997273,350.552619212362,314.544444501358,267.352364535614,212.51341582011,150.867233540248,83.8875569689476,13.657183169857,-57.4195199373625,-127.1012382203,-193.667317043667,-254.491387187128,-306.0552550353,-345.467255506751,-377.144931650543,-401.291173404778,-406.980790329899,-305.806284438476,-313.633542418143,240.579650234779,269.464974664373,250.355738566834,221.941181021706,188.961274127175,149.826684809395,105.159028847062,56.2690776837681,4.77707144040661,-47.4937820630751,-98.6354437539505,-146.634148572401,-189.411120654799,-225.253591646042,-255.011612629482,-281.496320017936,-302.350814942388,-317.981980173017,-326.526752535827,-327.361939466841,0,91.3015363680516,111.207282872219,110.739569452469,99.5814050286944,80.3028199237155,54.8641483121933,25.0045713424141,-7.65918005970931,-41.4155819979186,-74.4179348593805,-104.939337327429,-131.692962194397,-154.108994004897,-172.626874509865,-185.837602391366,-194.543318396444,-200.304710617372,-192.975882150269,0,0,23.253028498727,36.0290335792141,36.6600709861589,30.968695376908,21.4413212512709,8.92574322954648,-5.88186246544359,-22.2179420214702,-38.9668402521994,-54.8452457009567,-68.9729456928153,-81.3042947299579,-90.1496848441132,-97.0506489525581,-103.186058579318,-106.422070170893,-101.127518200116,-51.8715765764752,0,0,-1.89256099488412,-4.61732253350108,-11.1625157264028,-17.4943453339108,-22.7053957054416,-27.3232291292045,-31.4729908979164,-34.9900563353637,-37.2955314086806,-37.6447693505658,-37.982405174493,-38.7043181675552,-39.0720654731812,-40.3955583400901,-42.115165582648,-41.5142847178345,-29.8843444634896,-8.48933820183581,0,0,-26.2134926424511,-49.6666450169096,-64.1326124928087,-69.5094155609508,-70.1291983769649,-67.8257811336623,-63.1449342033306,-54.8787568305497,-40.6722089761395,-22.6722774821876,-6.67607913423616,5.82731887638675,14.1045408184556,18.6473805121109,20.0487101671466,20.7990226978927,22.3276530477739,18.368291037018,0,0,-79.4970069824672,-133.931610036275,-148.10679367852,-148.895341157738,-145.389663551156,-134.209830271771,-113.140785964073,-83.4255911628068,-48.0959819362375,-10.7295369483188,24.9572512614003,56.121479569402,80.9231114378008,97.4278903022968,105.370678080738,106.102632556957,96.4371965945432,64.7941825489783,0,0,-232.189294601184,-269.68818878727,-271.206180019291,-262.599876122536,-241.909359731574,-210.086311014343,-167.446991436155,-115.827221280426,-58.9619284284249,-0.44186914476456,56.1109756504149,107.827878779233,153.526801419018,193.277668842518,228.407280211365,249.753875771208,248.608644705873,211.56576924195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive4001_field18":[200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,11.0352990621702,14.9488205929091,24.0849110041096,30.14903824434,33.510046625099,34.5770899745771,40.1240443656865,51.0486459527462,61.3260158551807,66.9532078196839,66.7137489334977,59.8253281890438,50.6856420986495,44.1000509150339,40.5342577845491,36.946567453024,31.0117858832682,24.7418106389804,18.1899807887387,24.5114155127228,4.85127205579191,5.0456380113043,8.5668796503633,11.3237940557383,14.0791373785963,16.3572175786915,18.7248182141016,23.5187146260882,28.0206685460459,31.9115383162137,34.7808044507418,33.7681283397751,29.67704018532,25.8552237280444,23.3910527041943,19.2823507901895,14.824206135528,10.5323466323039,7.56567024643534,12.5296559779142,3.31631926218949,2.95300448202006,3.40918747166137,4.58743777550946,7.01441712697703,10.3195058334332,11.958309007703,14.0609401661808,15.9474568531054,19.2121456084177,23.0770440852349,24.5384942420237,22.6420776482696,20.5495411558218,17.4592003381902,12.9553862356567,9.52076972029597,6.70137219286987,5.20617220010273,7.91212819797858,2.95635451429485,2.54245804230525,2.08516247031465,2.58398514774654,4.88396433164856,8.60729395692799,9.90696514071363,10.8347548791159,12.1704702435307,15.5019801640809,19.3725738930628,21.3391537164559,20.3326799078689,19.743645848425,15.4191446916481,11.0739938987139,8.15974517602118,5.92821724102965,4.88155817035674,6.2612374228988,3.16167369710312,2.82188374989161,2.23053482743528,2.53542177224916,4.78177638435022,8.60656575896763,9.56972438977066,10.2969411793331,12.5280495252539,16.3343201040766,19.742927620156,20.9656543247573,20.0841421854118,19.7819632788511,15.3017634360229,11.0657143104409,8.26987314874173,6.16023488295655,5.23082070719683,5.83332436405297,3.84102856985495,3.55700702122061,3.07082383925449,3.45807985614617,5.82450665149791,9.59815730392542,10.2843196032446,11.6745684578404,15.7745456933501,20.447643354528,23.0579603572724,22.4824687265725,20.9584374148763,20.6473973183481,16.3356813641584,11.9908753462603,9.08815224624488,6.915584994903,5.92240952362451,6.13972971598619,5.00872164695995,4.71126273370658,4.4098263824284,5.04841644123665,7.73913045819942,11.6807067076687,12.7610492409268,15.3283719398712,22.0000097049581,28.055528790215,29.4634973869287,26.0409090449251,23.6016184970885,22.8693531157807,18.2878242666022,13.5811361936866,10.427467428996,8.10154311188365,6.97708880688261,7.06809800474246,6.72497840914626,6.34947860991717,6.2855268648602,7.3023556025093,10.5580770757597,15.2343452665928,17.4581021987798,22.0362539022836,32.1839516853966,40.4700851411023,40.0599826362592,32.6318520693663,28.5037762889101,26.6581848682441,21.2011173944342,15.8665900678104,12.3298457122054,9.77972323363835,8.50405828037058,8.60259633222907,9.10129991912294,8.60112622059648,8.8433985292793,10.3772568160495,14.4851243015736,20.5957562922935,25.0352103398684,33.0518333198066,48.2329724065634,60.1648713570398,57.0194932823935,43.8319889314455,36.4369914626527,32.2925133875816,25.2665500845114,19.0180282772306,14.9450235374334,12.0892304083969,10.6395369915222,10.8011132859514,12.3135152288542,11.6536614303569,12.3028871755104,14.5361377233576,19.8301327857468,28.2129210729721,36.5250789217272,50.3260162701951,73.4007708864468,91.0964254421716,84.0793166335708,62.6307946020505,48.8393779706478,40.2433434823172,30.8021962593791,23.3075558349028,18.4987005826499,15.2263756213625,13.5578830606486,13.8065026596497,16.6106257713751,15.7574648850739,16.9571272110946,20.1456859582321,27.0679727222283,38.8191952014529,53.5611233805162,77.0592983836782,113.074754071267,139.421299815097,128.128329547966,95.1161234303028,68.5511598522384,51.3854037428658,38.3022935921236,29.1252600817141,23.2952437026613,19.4462453978668,17.4892830941589,17.8453502467468,22.3235610518205,21.2344516230413,23.1891509542547,27.7157323135421,36.9542047690079,53.7168469820214,78.9581344277863,119.169251704382,176.319310132089,215.618362695107,202.15140351842,153.894961667222,103.000749066966,67.6900733463623,48.5307973144063,37.0505579330234,29.7550881215589,25.0796860146637,22.731215947958,23.2246149997617,29.8773762517861,28.4872589994728,31.4992419197099,37.9732091937378,50.7475760524749,75.4999699258931,118.576093775077,188.914835393573,281.100606307622,338.632720644871,331.682679366884,282.704144171818,180.586401489319,94.1453731892168,62.2791072722799,47.8461252211605,38.441325165172,32.5538079776781,29.6561534176899,30.3302056293697,39.8110593269947,38.0099323293725,42.5481999134109,51.9990290997031,70.6953227063154,110.177213718899,187.829987352779,316.503532569612,440.79097236858,494.982879292603,527.3712604735,524.986661370821,352.747851099907,163.468340935522,80.9981103764022,62.1956823952882,50.110745578409,42.4372600210789,38.7338088615345,39.6495644014194,52.8151203725724,50.4058703625962,57.239172920079,71.5023318738643,101.330420553954,174.532077198694,336.999792204453,502.788747413485,574.650935376325,632.568493314215,679.956179457421,711.476942455132,680.664005886505,353.15373229356,132.155088445016,79.6596919574709,65.2368930324732,55.3241986151788,50.5145968463137,51.7916116870501,69.8157268837475,66.4326128000001,76.8925104342603,99.4574975252764,153.532960304371,336.252289241412,576.954171405308,635.078613116948,696.822715580938,751.118323715538,801.170510258358,855.133992980156,888.055933422332,797.648409073322,239.191575969819,103.682943717049,84.1346841601013,71.8612762157361,65.6261686691547,67.489920569538,92.1744590980343,87.1179974308033,103.647329265071,141.574503050258,266.731672341333,610.034655783119,697.893125759079,752.866622082251,809.197232039001,861.779647175245,908.207840037637,960.222238469947,982.406532091149,910.67092182437,446.740197155922,182.721836270704,108.636858098145,92.9116667405061,84.9981076719555,88.0931539989779,122.161687622892,114.050419166623,141.978989288134,214.244339076046,472.881324144692,707.574502855613,781.100408542198,846.581811264589,904.091492411695,954.614052271892,997.591014206207,1022.44257295964,1024.6848100765,995.567105958121,889.558130311817,412.365109445166,173.291470241525,118.877719632203,109.283490843526,115.406331476861,163.213061316814,150.23780528143,204.224912663947,398.385979392429,678.594234779838,770.240589324403,851.302888712229,921.584003533497,980.993794197801,1029.66870753042,1063.25387570517,1076.62657789883,1069.25444413241,1054.09800709384,1015.15766932587,885.770737314379,306.150902651651,156.869540169501,139.948387689631,152.07019034823,214.997425406887,201.243560348201,325.567063880889,629.932825762865,736.341426638081,825.563170987819,909.820917894215,982.628103955438,1042.31404825674,1087.03460685001,1113.71960529442,1120.24531942521,1107.81930073307,1089.71447106874,1038.08819343592,930.389065555392,519.209226354305,261.125105758199,185.41363874135,206.509293874316,257.645946226011,278.362674581325,482.379925287452,665.647476091012,769.518290261747,868.618373695521,956.830983082062,1031.30787852593,1090.02300159009,1130.95066250287,1152.21881999051,1153.1814408239,1135.62564264252,1097.49689465217,1034.13489715614,935.758352415862,810.064693030453,477.869238408034,287.155051346629,291.389665535693,264.088103979256,386.299302815866,548.089800840173,685.03914439264,799.20526596458,903.18676252498,994.086967365185,1069.34051048484,1126.75399763588,1164.44410046899,1181.2045500076,1176.88701374306,1151.08469056212,1102.75626402684,1029.54622355924,939.391273274404,838.380393120229,710.788487072496,464.769531683567,415.280890541012,235.881633078461,411.401544646401,567.10995660558,702.27625836365,822.085937746037,929.56250603608,1022.47525995689,1098.11747843671,1154.33866851625,1189.33160569613,1202.12334919638,1192.34272124643,1159.98440968404,1105.2386264033,1029.90879635608,939.790343477733,837.728571880918,722.237325128374,568.76751473204,423.801875206144,0,379.04092933772,562.193393135204,708.043067913744,834.532070368613,946.374594036432,1041.7366188692,1118.10098952961,1173.65453945511,1206.54842616762,1215.89146771828,1201.57467480883,1164.56068295599,1106.39598567756,1029.38709146783,935.787867620767,830.072072055946,710.917688420919,552.030180062361,0,0,338.183032199224,550.244416860965,709.88166351671,842.829824019771,957.829465966149,1054.68115328145,1131.21349900761,1186.06046871791,1217.031614384,1223.45326661739,1205.68825161051,1165.78129000439,1104.72997025162,1025.21911187212,928.426621719897,816.360969246182,679.471702180355,421.633892252426,0,0,312.434472779548,542.965599268202,713.294931262732,849.892686884622,966.073082211234,1063.26269146156,1139.23612029793,1193.10293028359,1221.98389247125,1225.56960392451,1205.34735017431,1163.12972261885,1101.00188260665,1019.77962841441,919.228743371888,796.639994037259,627.274511479015,362.065613674123,0,0,304.782567608734,548.514201682895,722.096709544363,857.087650652692,972.182544393069,1068.430358564,1142.93206631966,1195.26019946193,1222.25465392113,1224.00941703938,1202.18977711071,1158.27368167068,1095.10463891257,1012.70150154402,909.049351885064,775.553499854248,596.149597139442,336.911325131164,0,0,323.122973509497,570.847505900431,732.893379718816,862.6900873247,976.158008246279,1070.14139148414,1142.14595347623,1190.90776729855,1215.20207868455,1216.11845440316,1194.10495715152,1150.39534754803,1086.69935631203,1003.1302299304,897.617194144295,760.215865441675,582.639203299361,334.912429389202,0,0,395.459986192526,591.770818024351,738.479662330603,864.928895525894,975.685774008242,1065.77413444692,1133.77590456761,1179.06104997394,1201.12513613679,1200.95266004421,1178.92125435054,1135.97070167263,1073.46635719883,990.641708491966,883.548510429763,744.038264030045,571.513677007157,343.166793591163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive4001_field19":[100.786076848838,101.115139812121,101.093025868549,101.067487653685,101.052558770892,101.09502850365,101.180968897961,101.297181396522,101.475729317592,101.567433627106,101.424122269723,101.193336843592,101.05688054157,101.005347056048,100.980490655552,100.986793480912,101.02078171223,101.061768076369,101.038272519234,101.135896946522,100.654348445992,100.552899492847,100.504049285055,100.51034490173,100.535902469149,100.578228788626,100.636569933717,100.778198785393,101.035525404193,101.178533861822,101.03414563628,100.777938018775,100.623069219869,100.565292608327,100.521359147673,100.498401934213,100.503077421055,100.532687657073,100.534868161017,100.50518464894,100.061626868322,100.130727739202,100.073870359152,100.084647559986,100.126161259732,100.185631840724,100.243081070442,100.39188487698,100.673177063193,100.829911211133,100.660772616274,100.373499782159,100.228255794872,100.182103201284,100.123012951408,100.073881915337,100.056949108563,100.064553378298,100.11585867061,100.256182002273,100.304224782442,100.212133635322,100.144296462235,100.143265057186,100.192523429826,100.253863109766,100.275872516547,100.383316207249,100.650980876473,100.811940321512,100.657294360071,100.393120810979,100.279113598601,100.254888782872,100.191428304554,100.139999743767,100.131393618801,100.15332138716,100.2058559895,100.261135955339,100.247999705487,100.191124536355,100.109869882121,100.104925498016,100.158294865315,100.228457137265,100.249743039834,100.34853062254,100.61176815203,100.769991928552,100.611745805673,100.34800550584,100.247032416467,100.227637681018,100.155620875285,100.101679304457,100.092754783294,100.115916392039,100.192896687707,100.263400723398,100.263282465373,100.194568871034,100.113806390596,100.105401515913,100.157430351231,100.23030009707,100.24843114111,100.340271555677,100.598220304431,100.758566034305,100.600767642849,100.340532591973,100.250944472861,100.231475842847,100.15619411153,100.103482034159,100.097286583634,100.11780420581,100.194852106909,100.261232384258,100.257661312529,100.191971722983,100.109704561269,100.099607810939,100.149229505875,100.224116945787,100.243717647517,100.331566158151,100.582054419181,100.744829398258,100.585690499832,100.330305648785,100.247017985751,100.223233479481,100.147779355832,100.097087011377,100.093157182042,100.11438944947,100.194347757744,100.259195013595,100.256324350351,100.190429238157,100.107573498593,100.09517334039,100.140878092998,100.214784715306,100.239647339084,100.323477859921,100.565317051149,100.730512649268,100.570283848717,100.322808105706,100.244127236919,100.213629795394,100.139403131079,100.092808834783,100.091009945492,100.112205257462,100.192692049308,100.256597054882,100.253269974339,100.187787640061,100.103817709001,100.088553604029,100.129346651532,100.201217856625,100.233874346804,100.312622937524,100.543837141531,100.708454796098,100.549551085864,100.31447852555,100.238231236454,100.199670875599,100.127235580596,100.086507183471,100.087296644456,100.109380282726,100.190378047129,100.253767552965,100.249883881229,100.184344795944,100.098706977707,100.07975462828,100.114025281761,100.182195437102,100.223576862381,100.297932946905,100.515495294997,100.672967701239,100.521320915546,100.304307583409,100.226998242625,100.18059125066,100.111035339009,100.078057606329,100.082097201794,100.105521464471,100.187159941728,100.250470470829,100.245529477801,100.179636221743,100.091393390352,100.067796377053,100.093022039582,100.154804852068,100.203705055136,100.276542959902,100.476294300719,100.617608421842,100.47988238439,100.284125364382,100.202303700487,100.152136876886,100.090161332252,100.066484101897,100.074482880648,100.100326358913,100.183068758507,100.246368859469,100.24006869724,100.173286633676,100.081082416721,100.051368178819,100.063813667821,100.114145684007,100.165840295446,100.240749305058,100.419521619906,100.538656620879,100.41550038201,100.239294011379,100.157351797049,100.10460520249,100.059305021081,100.051176299636,100.063921525607,100.09160558443,100.177536927497,100.24165748472,100.233212386922,100.164786918047,100.066536630719,100.02859032053,100.02237335671,100.052455263777,100.095715761634,100.172976733442,100.336544707398,100.429328005803,100.278925503027,100.090603714179,100.045066499052,100.037874135491,100.018636071366,100.023966602182,100.054802024156,100.081830376037,100.168967011213,100.236507255916,100.224696028567,100.153441637069,100.046264028629,99.9955009682011,99.9643686200796,99.9521289893203,99.9736085617331,100.04130674897,100.221815527664,100.31031093845,100.106978992851,99.6703144563939,99.5368604983775,99.834578134542,99.9939254237879,99.9779595791313,100.0215173399,100.072796283975,100.157398789744,100.229470811149,100.214131263429,100.138536720735,100.016935380716,99.949322583102,99.8664588136043,99.8043289580577,99.7002938657411,99.895174455183,100.315608122641,100.527219854011,100.283407493666,99.6092283584666,98.8618426573866,98.9794052748011,99.842893994504,100.032397748465,99.9757697701092,100.054729967879,100.147354327058,100.215897359923,100.200811879029,100.118650758182,99.9755999658111,99.8675945312158,99.739904783131,99.3527407150144,99.3660889096839,100.095358776898,100.579621222701,100.678377265582,100.619443781716,100.136820341105,98.8370739005621,97.9588203840802,98.6531495561344,99.954022423381,99.9635069296353,100.00731597523,100.141495444323,100.206680731974,100.184478512546,100.090891725412,99.9122915060382,99.7460661982455,99.2933512391521,98.6342015654161,99.7087755285539,100.523853112715,100.616604387604,100.661213985853,100.68654691239,100.668774762171,99.7898742846814,98.0499790773324,97.9716835871824,99.5499446153536,100.007314223499,99.9494728192761,100.100747074411,100.208664741831,100.15989059477,100.056918996247,99.7906032610131,99.5075687502599,98.5124261005558,99.2726515293859,100.575553365704,100.622442410834,100.580873300792,100.61795472139,100.661517173741,100.646717539772,100.745525610294,99.0041525016662,97.6575417249739,98.3389555935099,99.8183816291271,100.036405592501,100.046166029985,100.18600754149,100.129545249628,99.9885769364166,99.6905449610444,98.8729397278956,98.8236158599168,100.204918297544,100.469782485974,100.526303316511,100.553860571874,100.575509954106,100.629380872271,100.591883362129,100.602696727032,99.9070948953252,98.1888709739488,97.4172341488312,98.4514940173338,99.9412124824197,100.064851093579,100.116722257848,100.084777350876,99.9010684224076,99.1791363229578,98.4419711707175,99.6555665772733,100.374576964997,100.449026755013,100.477648590246,100.505262332901,100.52739770656,100.538666541625,100.531350363048,100.508475592486,100.651873749373,99.6996597423693,98.0223589633316,97.941391407762,99.4054226339942,100.07805588323,100.120674211998,100.079480160855,99.6907812381796,98.7038221454731,99.4325496303704,100.415113406467,100.39397317674,100.413798036269,100.437617246364,100.457736378233,100.470059201967,100.471793248639,100.472283704313,100.43780373586,100.440253431634,100.654740132991,99.3007348609808,98.0997587944687,98.5474366988431,99.7288583633976,100.223377900593,100.224171848968,99.4843649100005,99.4716954586262,100.354268071368,100.299088112323,100.344599232777,100.369240219805,100.390771547213,100.406377497123,100.414712277221,100.414772330645,100.413303125654,100.43341740959,100.344093895546,100.415920292453,100.058064364894,98.9307804357162,98.4269052286476,99.0826211449321,99.9084555855765,100.150468740158,99.6942238256711,100.196498997202,100.28032814946,100.28753287109,100.30517037206,100.325283426315,100.342095645076,100.353724025866,100.359621456376,100.36043913526,100.355135823757,100.356284877693,100.331696121665,100.286652431898,100.441257085072,100.048817071589,99.2692807698112,99.3902834946494,99.9092762360371,100.893228763955,100.481273081663,100.2789541766,100.258421649033,100.260839314494,100.272584330126,100.284657394928,100.295651142556,100.303272783547,100.306500936862,100.306143699063,100.299410728789,100.28744427064,100.277716119424,100.225865016859,100.214933330737,100.331608637683,100.144973465004,99.9956269635802,100.750145675905,100,100.086987597017,100.187586216701,100.192897814624,100.19926461711,100.21648999843,100.230217943595,100.242109885002,100.249698667127,100.252709541502,100.250832338735,100.244425763158,100.231561930873,100.2237465198,100.215498195896,100.143305131163,100.127521979034,100.117513518942,100.359177288784,100,100,100.504711787651,100.127498081325,100.178480269299,100.169701603287,100.178917198761,100.185831089372,100.193868476572,100.197754307349,100.199405959675,100.197408361126,100.194185786388,100.184871845267,100.1770143676,100.19159679762,100.182648820725,100.059105230248,100.114242721294,99.9109497821504,100,100,100.973176138146,100.039792445826,100.165000778539,100.15535813679,100.159658792894,100.156897539223,100.158534583532,100.157090702555,100.15039775015,100.145926043117,100.149933861649,100.147790791709,100.148336873622,100.167043580143,100.212397147247,100.167449650867,99.7939186588871,99.8436757418613,100,100,101.284253881358,99.8475947508198,100.131564576954,100.138013848228,100.144013512157,100.137903082612,100.130448543085,100.114543875669,100.093377686314,100.087174984037,100.095409084087,100.104974834579,100.114787719018,100.124307686747,100.159770550237,100.202641373889,99.9458738491307,99.49977745574,100,100,101.537525305465,99.8082793256485,100.115067841169,100.1384317076,100.128738588684,100.103012353532,100.072990044924,100.050096153662,100.034706519247,100.030665159715,100.034546949804,100.044766677539,100.061799403539,100.088417628369,100.14049349852,100.239958222137,100.139187697506,99.6563264117772,100,100,100.946942216335,100.118201968373,100.125066990206,100.109159719969,100.071183911024,100.037855539101,100.005655423223,99.982033524401,99.9670158826817,99.9604824203126,99.9592541148627,99.9608831644416,99.9654821426332,99.972039818139,100.013981296524,100.160862125809,100.052592868971,100.333387794093,100,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"Archive4001_field20":[401.153883546769,379.776373107523,339.337937191373,284.220707796819,220.397491960691,154.784525438065,94.4919912417395,46.0535209869463,14.718174526098,3.88162286622492,14.718174526098,46.0535209869461,94.4919912417395,154.784525438065,220.397491960691,284.220707796819,339.337937191373,379.776373107523,401.15388354677,401.15388354677,400.729790898949,379.352280459702,338.913844543553,283.796615148998,219.973399312871,154.360432790245,94.0678985939189,45.6294283391258,14.2940818782774,3.45753021840437,14.2940818782774,45.6294283391255,94.0678985939189,154.360432790244,219.973399312871,283.796615148998,338.913844543553,379.352280459702,400.729790898949,400.729790898949,400.145451898773,378.767941459527,338.329505543377,283.212276148823,219.389060312696,153.776093790069,93.4835595937436,45.0450893389504,13.7097428781021,2.87319121822907,13.7097428781021,45.0450893389502,93.4835595937436,153.776093790069,219.389060312696,283.212276148823,338.329505543377,378.767941459527,400.145451898773,400.145451898773,399.340830120242,377.963319680995,337.524883764846,282.407654370292,218.584438534164,152.971472011538,92.6789378152123,44.2404675604191,12.9051210995708,2.06856943969774,12.9051210995708,44.2404675604189,92.6789378152123,152.971472011538,218.584438534164,282.407654370292,337.524883764846,377.963319680995,399.340830120242,399.340830120242,398.233857155063,376.856346715816,336.417910799667,281.300681405113,217.477465568985,151.864499046359,91.5719648500333,43.1334945952401,11.7981481343918,0.961596474518728,11.7981481343918,43.1334945952399,91.5719648500333,151.864499046359,217.477465568985,281.300681405113,336.417910799667,376.856346715816,398.233857155063,398.233857155063,396.712759031651,375.335248592404,334.896812676255,279.7795832817,215.956367445573,150.343400922947,90.0508667266208,41.6123964718277,10.2770500109793,-0.559501648893729,10.2770500109793,41.6123964718274,90.0508667266208,150.343400922946,215.956367445573,279.7795832817,334.896812676255,375.335248592404,396.712759031651,396.712759031651,394.626077448199,373.248567008952,332.810131092803,277.692901698249,213.869685862121,148.256719339495,87.9641851431693,39.5257148883761,8.1903684275278,-2.64618323234527,8.1903684275278,39.5257148883759,87.9641851431693,148.256719339495,213.869685862121,277.692901698249,332.810131092803,373.248567008952,394.626077448199,394.626077448199,391.770026219697,370.392515780451,329.954079864301,274.836850469747,211.013634633619,145.400668110993,85.1081339146674,36.6696636598742,5.33431719902592,-5.50223446084715,5.33431719902592,36.669663659874,85.1081339146674,145.400668110993,211.013634633619,274.836850469747,329.954079864301,370.392515780451,391.770026219697,391.770026219697,387.87309692198,366.495586482734,326.057150566584,270.93992117203,207.116705335902,141.503738813276,81.2112046169505,32.7727343621573,1.43738790130897,-9.3991637585641,1.43738790130897,32.7727343621571,81.2112046169505,141.503738813276,207.116705335902,270.93992117203,326.057150566584,366.495586482734,387.873096921981,387.873096921981,382.578491100561,361.200980661314,320.762544745165,265.64531535061,201.822099514483,136.209132991857,75.9165987955309,27.4781285407378,-3.85721792011054,-14.6937695799836,-3.85721792011054,27.4781285407375,75.9165987955309,136.209132991857,201.822099514483,265.64531535061,320.762544745165,361.200980661314,382.578491100561,382.578491100561,375.426296284724,354.048785845477,313.610349929327,258.493120534773,194.669904698646,129.056938176019,68.7644039796937,20.3259337249006,-11.0094127359478,-21.8459643958208,-11.0094127359478,20.3259337249003,68.7644039796937,129.056938176019,194.669904698646,258.493120534773,313.610349929327,354.048785845477,375.426296284724,375.426296284724,365.839708827964,344.462198388717,304.023762472568,248.906533078014,185.083317241886,119.47035071926,59.1778165229341,10.7393462681409,-20.5960001927074,-31.4325518525804,-20.5960001927074,10.7393462681407,59.1778165229341,119.47035071926,185.083317241886,248.906533078013,304.023762472568,344.462198388717,365.839708827964,365.839708827964,353.123345460934,331.745835021687,291.307399105538,236.190169710983,172.366953874856,106.75398735223,46.4614531559041,-1.97701709888906,-33.3123635597374,-44.1489152196104,-33.3123635597374,-1.97701709888929,46.4614531559041,106.75398735223,172.366953874856,236.190169710983,291.307399105538,331.745835021687,353.123345460934,353.123345460934,336.486591288323,315.109080849076,274.670644932927,219.553415538372,155.730199702245,90.1172331796188,29.824698983293,-18.6137712715001,-49.9491177323484,-60.7856693922215,-49.9491177323484,-18.6137712715004,29.824698983293,90.1172331796188,155.730199702245,219.553415538372,274.670644932927,315.109080849076,336.486591288323,336.486591288323,315.109435333,293.731924893754,253.293488977604,198.17625958305,134.353043746922,68.7400772242961,8.44754302797037,-39.9909272268228,-71.3262736876711,-82.1628253475442,-71.3262736876711,-39.990927226823,8.44754302797037,68.7400772242959,134.353043746922,198.17625958305,253.293488977604,293.731924893754,315.109435333,315.109435333,288.268166694584,266.890656255337,226.452220339188,171.334990944634,107.511775108506,41.89880858588,-18.3937256104457,-66.8321958652389,-90.1578813892641,-90.2464046456875,-90.1935776616167,-66.8321958652391,-18.3937256104457,41.89880858588,107.511775108506,171.334990944634,226.452220339188,266.890656255337,288.268166694584,288.268166694584,255.526453051055,234.148942611808,193.710506695659,138.593277301105,74.7700614649771,9.1570949423508,-51.1354392539749,-90.1078917931178,-90.1910324764737,-90.2310197703099,-90.2537277797281,-90.2377971230796,-51.1354392539749,9.1570949423508,74.7700614649771,138.593277301104,193.710506695659,234.148942611808,255.526453051055,255.526453051055,216.966797531247,195.589287092,155.150851175851,100.033621781296,36.2104059451692,-29.402560577457,-89.6950947737828,-90.1962655823413,-90.159003731013,-90.1922428929766,-90.231291542835,-90.2180253997758,-89.6950947737828,-29.4025605774573,36.2104059451692,100.033621781296,155.150851175851,195.589287092,216.966797531247,216.966797531247,173.391458687101,152.013948247854,111.575512331705,56.4582829371507,-7.3649328989768,-72.9778994216032,-90.0594237924128,-90.110088114605,-90.1347899749841,-90.1541961172188,-90.2024851025146,-90.1688729648797,-90.1785658833706,-72.9778994216032,-7.3649328989768,56.4582829371504,111.575512331705,152.013948247854,173.391458687101,173.391458687101,126.386222934425,105.008712495179,64.570276579029,9.4530471844746,-54.3701686516526,-89.9740831641276,-90.0408187041518,-90.0664748360265,-90.0912273306651,-90.1110691074444,-90.1211703017301,-90.1146122022633,-90.0941076425319,-90.2226473393696,-54.3701686516526,9.4530471844746,64.570276579029,105.008712495179,126.386222934425,126.386222934425,78.1582984266634,56.7807879874167,16.3423520712672,-38.774877323287,-90.0104193487097,-89.9914696022192,-90.0092402729798,-90.0305914124296,-90.0486258639682,-90.059671835976,-90.0612262062579,-90.0616658424783,-90.0307585784788,-90.0329544445828,-90.2252167174513,-38.7748773232872,16.3423520712672,56.7807879874167,78.1582984266634,78.1582984266634,31.153062673988,9.77555223474133,-30.6628836814084,-85.7801130759626,-89.9064162258065,-89.9472116289893,-89.9692993954655,-89.9885997153412,-90.0025886264535,-90.0100597831981,-90.0101136140776,-90.0087966434258,-90.0268267493587,-89.9467586531926,-90.0111426277411,-85.7801130759628,-30.6628836814084,9.7755522347411,31.153062673988,31.153062673988,-12.4222761701583,-33.7997866094049,-74.2382225255545,-89.8896001105133,-89.8960583018471,-89.9118682611722,-89.9298972648398,-89.9449674550685,-89.9553909400967,-89.9606772976504,-89.961410251255,-89.9566564519891,-89.957686444618,-89.9356454971329,-89.8952690909585,-90.0338541026502,-74.2382225255545,-33.7997866094051,-12.4222761701583,-12.4222761701583,-50.9819316899659,-72.3594421292125,-89.888368504342,-89.8699634918508,-89.8721306465214,-89.8826586810609,-89.8934807733617,-89.9033353838938,-89.910167294734,-89.9130609570896,-89.9127407351324,-89.9067054137823,-89.8959788818935,-89.8872587307056,-89.8407802741539,-89.8309812945123,-89.9355670779624,-72.3594421292127,-50.9819316899659,-50.9819316899659,-83.7236453334953,-89.7162928899948,-89.8064678012855,-89.8112290283582,-89.8169361230595,-89.8323766652596,-89.8446821644935,-89.8553419008277,-89.8621443575326,-89.8648432546994,-89.8631605617008,-89.8574178150693,-89.8458868920925,-89.8388812890095,-89.8314876301436,-89.7667749807196,-89.7526272285186,-89.7436558131674,-83.7236453334953,-83.7236453334953,-89.6383186705767,-90.0907338311593,-89.7526058070139,-89.7983053831346,-89.7904363345205,-89.7986970393586,-89.8048945346574,-89.8120991134085,-89.8155823067833,-89.8170628201583,-89.8152722064049,-89.8123835445926,-89.8040346843695,-89.7969913734991,-89.8100628185896,-89.802042002546,-89.691299605217,-89.7407239251481,-89.5584955525239,-89.6383186705767,-89.6383186705767,-90.5106573985138,-89.6739879499732,-89.7862225942525,-89.777579092313,-89.7814341281366,-89.7789589867715,-89.7804264057663,-89.7791321351344,-89.7731326851296,-89.7691243221295,-89.7727168632768,-89.770795851415,-89.7712853500599,-89.7880537272638,-89.8287079022731,-89.7884177222337,-89.4535908213093,-89.4981922339069,-89.6383186705767,-89.6383186705767,-90.789502257288,-89.5017051676458,-89.7562509453247,-89.7620319636606,-89.7674099615323,-89.7619326752254,-89.7552505513282,-89.7409938748662,-89.7220208586022,-89.7164608605689,-89.7238417694115,-89.7324163473202,-89.7412124519447,-89.749745990955,-89.7815343055396,-89.819962991062,-89.5898008989764,-89.1899275922909,-89.6383186705767,-89.6383186705767,-91.0165305035305,-89.4664634815442,-89.7414635487311,-89.7624065257762,-89.753717776953,-89.7306572123056,-89.7037457196432,-89.6832240204377,-89.6694290108989,-89.6658064041631,-89.6692859755326,-89.6784467676471,-89.6937146168572,-89.7175747460549,-89.7642546804912,-89.8534131864122,-89.7630841824174,-89.330255444379,-89.6383186705767,-89.6383186705767,-90.4871417520809,-89.7442729276616,-89.7504266178094,-89.7361676082228,-89.7021267315828,-89.6722517393504,-89.6433880968676,-89.6222138239254,-89.6087522623842,-89.6028957765657,-89.6017947442122,-89.603254996865,-89.607377443592,-89.6132556336593,-89.6508512697092,-89.7825127755298,-89.6854620340631,-89.9371618838543,-89.6383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767,-0.896383186705767],"Archive4001_field21":[548.311074524242,524.791508066206,479.656504327409,418.142497551335,346.926751001849,273.771767351132,206.595698494798,152.67422825546,117.895241357066,105.897750085283,117.843634309197,152.57038370253,206.471610138407,273.682085903529,346.854682886509,418.061803378563,479.58426017109,524.738136330454,548.563270194637,548.660894621926,547.706230768374,523.756152393911,478.594412390894,417.112239446359,345.936979347085,272.781852283086,205.578184177533,151.68213029131,116.981922090646,105.035734966978,116.980542322733,151.681869524691,205.564683463685,272.768916102787,345.922436025609,417.100296478842,478.593440526894,523.735940558136,547.5867504834,547.557066971323,546.4616239157,522.682095365261,477.512348189986,416.034656829611,344.875352862663,271.73737006018,204.532810039253,150.643931107892,115.967688474642,104.035227041284,115.955284027723,150.62554601307,204.517984763683,271.73384142074,344.872204554339,416.023891184962,477.495426939397,522.615921004357,546.515855717987,546.656179049651,545.806590336431,521.865869767992,476.685142799681,415.195642833422,344.044083539368,270.907969835833,203.667969991969,149.737730944772,115.047860794533,103.119624658274,115.054174278131,149.747535548502,203.671211074023,270.908995508939,344.042988414096,415.192377520003,476.672239956246,521.80705751983,545.708221543489,545.763501509328,544.515432496795,520.609927906345,475.415783456885,413.922370511572,342.774922212177,269.647631100651,202.406907752575,148.468012597383,113.773715307409,101.842743502634,113.773692961052,148.467487480683,202.404197129209,269.646811644404,342.772248222147,413.919124318012,475.398668358058,520.534719762029,544.460329479015,544.530833514706,542.83378681584,518.916443800182,473.722791524521,412.225918088627,341.077129257251,267.952545619616,200.708667413011,146.762825089679,112.06323901897,100.134389167546,112.065786357388,146.763086125974,200.711180744762,267.953721365393,341.075893017551,412.223998606873,473.706271717559,518.839679134959,542.765356457376,542.831736734726,540.500275521371,516.585956510505,471.390799553567,409.892234242027,338.74103827027,265.618472326707,198.376063777792,144.426229550527,109.719182992094,97.7927623898733,109.722819072744,144.424969041161,198.379364116026,265.6175888604,338.739588120226,409.889713442466,471.37425217434,516.508374236993,540.436961966586,540.501809222437,537.312744004387,513.398219470873,468.202473936085,406.701605216672,335.546492302587,262.422945541419,195.185798914553,141.231946697491,106.516251069255,94.5922510860761,106.521217866823,141.231276943276,195.190278812387,262.421790621507,335.545017340668,406.699240711065,468.185910382984,513.319995490179,537.249111703343,537.313016708917,532.962297402022,509.048185646425,463.851325920141,402.34759325396,331.187568634769,258.061986456386,190.832633695921,136.873699548742,102.147378933286,90.2228010065548,102.153092877618,136.875555136768,190.836990585571,258.060439475361,331.185457563833,402.345546833402,463.834804855597,508.969778289091,532.899405474813,532.962794980649,527.052279078474,503.138110571871,457.939582958409,396.432162047772,325.265615034559,252.136331806425,184.91570398106,130.952377327684,96.2124048563135,84.2806816812573,96.2182304768619,130.958751964188,184.919125361304,252.134727619983,325.262625091808,396.430465025821,457.922973182496,503.059287240397,526.989555138974,527.052865668074,519.068976696201,495.154454018823,449.953321392208,388.441255817699,317.265663813535,244.129993242546,176.916884194968,122.952039361836,88.1942558831891,76.2463744230147,88.1978439668603,122.959621766316,176.91548284032,244.127325267363,317.262803106205,388.439943542543,449.936410882504,495.075144155993,519.006515976906,519.069816077868,508.368773311206,484.453361826323,439.248267814144,377.730085015033,306.541712837341,233.394591470051,166.184276830846,112.221503102559,77.4427405979438,65.472680017619,77.4387193600476,112.22004780888,166.175788332449,233.385050988534,306.5372041906,377.729893135849,439.23110692303,484.371680777078,508.306241541463,508.370362098686,494.175614138869,470.258559248675,425.047419166123,363.521004294724,292.313969664211,219.146598187802,151.927849435014,97.9674276689234,63.1734608234164,51.1770485405231,63.1158416190455,97.8850546496598,151.877200172432,219.132017059516,292.310232378867,363.516380576376,425.03568455956,470.175602706665,494.11136876316,494.178909007863,475.607229167012,451.687345354195,406.467277950531,344.928046328894,273.696096314078,200.486403299844,133.245873621612,79.2758890709501,44.4988630301807,32.498162859669,44.3840264953678,78.9048967783733,132.809125558256,200.368852445065,273.725653117786,344.910504939824,406.442531261802,451.606700001101,475.539931928189,475.612003949594,451.748430440811,427.824206476798,382.589715341554,321.033633982731,249.74995254654,176.490369307518,109.124324964556,55.2815228160993,20.7444216640937,8.86683781416637,20.7122210351187,54.9955767193827,108.285873756202,175.665445624261,249.726387727439,321.116709148094,382.548549730948,427.740399723943,451.68165350444,451.750196537305,421.791143971243,397.860353429077,352.604412841481,291.007938845676,219.679431430898,146.094813979306,78.8461529233306,25.5377400526459,-8.93553232101416,-20.9259718594319,-8.89570976199929,25.579201616852,78.3171379142089,144.700893648372,218.592676203901,291.094366737841,352.592319805305,397.749018646124,421.731827536536,421.797012824187,385.248340531335,361.306124322882,316.014634308284,254.359940439281,182.706407813494,108.849804756283,42.662369468776,-10.5602356849623,-45.4250192295365,-57.4696052125853,-45.35507670475,-10.4153140355067,42.7434682249035,108.265582268199,181.384740161524,254.163818856389,316.109657025744,361.164705416746,385.1646090932,385.27252676062,342.206819574558,318.255218554717,272.876013024258,211.104509952295,138.908549635897,66.4713216812522,0.512214266926037,-53.4785794258432,-88.4776833553487,-100.529797516048,-88.3970394824,-53.454304296906,0.682186511515781,66.2028226535323,138.053665260315,209.935896795545,272.903791392372,318.23470515097,342.093095009774,342.232936521278,293.564073316045,269.574475581515,224.163553810918,161.85748001656,90.607338481887,18.7911875360387,-48.2059575261754,-102.187119433537,-137.117096997638,-149.184643196704,-137.041576697241,-102.12153938792,-48.0730432851179,18.4933641338203,89.9725935959191,160.401774437495,222.924502867207,269.527111127518,293.499379159996,293.551250324265,241.080530962563,217.048192612776,171.213370718101,108.987737004652,39.0005147445136,-33.4779282512376,-100.665487711866,-154.674548614533,-189.604469691341,-201.67152989898,-189.571065482617,-154.62084684173,-100.606038874393,-33.2006314668619,39.0446079096096,108.568124797266,169.975625802906,216.552546824362,241.073809494917,241.116427823685,187.272434676097,163.035106332103,116.935257444171,56.1755163678594,-14.0427375227383,-87.2613311359407,-154.503515527056,-208.51737905486,-243.454794742454,-255.531667500018,-243.440737872048,-208.482712596911,-154.479509827465,-87.2150508810465,-13.8031107962142,56.0437015984695,116.331194093167,161.891761792766,186.921812878639,187.416332415835,134.97835190948,110.389915549194,65.2643563025948,4.6584603541269,-66.5975372716119,-139.749479534633,-206.98684779825,-261.002999208741,-295.944928078294,-308.025788879494,-295.936533244772,-260.9804676303,-206.922670608464,-139.749984871863,-66.480705091482,4.36225664765293,64.7234412796848,109.332455867841,133.836801205444,134.662635646089,86.2922478872983,61.9873735514931,17.3767589277994,-44.0278804811518,-115.221493426216,-188.401309308721,-255.643205505111,-309.664076024249,-344.609982462922,-356.69328061371,-344.603267353528,-309.651035845568,-255.612204053733,-188.374783559116,-115.222373865408,-43.8669515455403,17.2290770021867,61.562430495633,85.5320626417902,86.0510553831779,44.0180748720952,19.7574897684843,-25.5577189318033,-87.0667200205793,-158.265120021812,-231.450828389656,-298.700764575498,-352.72745356577,-387.677366744241,-399.763334172224,-387.674495828726,-352.723693979537,-298.697977699786,-231.445696600357,-158.300094319448,-87.1102083388753,-25.5050644707196,19.4211901518255,43.1204730717207,43.8749917840452,6.59837603471576,-17.1632657895859,-62.1755569651265,-123.658713928413,-194.853164792621,-268.033392794776,-335.281674100256,-389.307464896748,-424.257410934086,-436.343595641009,-424.256277262478,-389.305149018592,-335.280330112978,-268.026136273406,-194.836931213835,-123.708306611875,-62.2356212027933,-17.1327398676606,6.95755332349958,6.59837603471576,-23.3455910504529,-46.6895086841207,-92.1796121856711,-153.617098558907,-224.826694891612,-298.014932679614,-365.270028039647,-419.299673390346,-454.253322379032,-466.340866308005,-454.253668325256,-419.29935608053,-365.270987283752,-298.016835510774,-224.80479969728,-153.612930007481,-92.2480050367488,-47.0799777504778,-23.4346412683024,-23.3455910504529,-47.1938250115162,-70.0692782946893,-116.115551782234,-177.47881201073,-248.689272319173,-321.882425046544,-389.14719555086,-443.18324124445,-478.142219944891,-490.238108478593,-478.153384604328,-443.191841966333,-389.156302298373,-321.893746965816,-248.67758687582,-177.431415642022,-115.987894577193,-71.248535773948,-47.3501492696549,-47.1938250115162,-65.753693625018,-88.3180691649784,-134.867618090742,-196.072116825817,-267.266485221237,-340.457938940783,-407.726058620972,-461.771195898399,-496.744635385278,-508.854997155931,-496.77200427691,-461.806235357397,-407.758986869006,-340.487164733922,-267.280191382718,-196.043910852534,-134.512571467672,-89.6564491972062,-66.253916169278,-65.753693625018,-79.9399964870373,-102.251100602891,-149.093236377932,-210.274916423621,-281.452370223884,-354.659516726276,-421.947252212072,-476.014957258579,-510.995385969305,-523.099971185017,-511.014816963251,-476.0534003537,-422.005497888065,-354.726455911421,-281.502384303115,-210.249490766271,-148.661557481444,-103.64943821085,-80.2836700752601,-79.9399964870373,-90.6347390914703,-113.536426296455,-159.478056339641,-220.959659879017,-292.176384815948,-365.411814008368,-432.707151630936,-486.777034484713,-521.758191202998,-533.862404426016,-521.779742307087,-486.823435793074,-432.784124005595,-365.517515776759,-292.313504717778,-221.070745572699,-159.435396182205,-114.430775643818,-90.3013512973777,-90.6347390914703,-197.613687070316,-221.462316491635,-266.575206286859,-328.063674848069,-399.264492514763,-472.461945898238,-539.723955148883,-593.761637886782,-628.719172706245,-640.808368287543,-628.719172706245,-593.761637886782,-539.723955148883,-472.461945898238,-399.264492514763,-328.063674848069,-266.575206286859,-221.462316491635,-197.613687070316,-197.613687070316,-203.520319300754,-227.368948722073,-272.481838517298,-333.970307078507,-405.171124745201,-478.368578128676,-545.630587379321,-599.66827011722,-634.625804936683,-646.715000517981,-634.625804936683,-599.66827011722,-545.630587379321,-478.368578128676,-405.171124745201,-333.970307078508,-272.481838517298,-227.368948722073,-203.520319300754,-203.520319300754,-207.867711527106,-231.716340948425,-276.82923074365,-338.317699304859,-409.518516971553,-482.715970355028,-549.977979605673,-604.015662343572,-638.973197163035,-651.062392744333,-638.973197163035,-604.015662343572,-549.977979605673,-482.715970355028,-409.518516971553,-338.317699304859,-276.82923074365,-231.716340948425,-207.867711527106,-207.867711527106,-211.053906081913,-234.902535503231,-280.015425298456,-341.503893859665,-412.70471152636,-485.902164909835,-553.164174160479,-607.201856898378,-642.159391717841,-654.248587299139,-642.159391717841,-607.201856898378,-553.164174160479,-485.902164909835,-412.70471152636,-341.503893859666,-280.015425298456,-234.902535503231,-211.053906081913,-211.053906081913,-213.381796223538,-237.230425644857,-282.343315440082,-343.831784001291,-415.032601667985,-488.23005505146,-555.492064302105,-609.529747040004,-644.487281859467,-656.576477440765,-644.487281859467,-609.529747040004,-555.492064302105,-488.23005505146,-415.032601667985,-343.831784001291,-282.343315440082,-237.230425644857,-213.381796223538,-213.381796223538,-215.078724664379,-238.927354085698,-284.040243880923,-345.528712442132,-416.729530108826,-489.926983492301,-557.188992742946,-611.226675480845,-646.184210300308,-658.273405881606,-646.184210300308,-611.226675480845,-557.188992742946,-489.926983492301,-416.729530108826,-345.528712442132,-284.040243880923,-238.927354085698,-215.078724664379,-215.078724664379,-216.31365742706,-240.162286848378,-285.275176643603,-346.763645204813,-417.964462871507,-491.161916254982,-558.423925505626,-612.461608243526,-647.419143062989,-659.508338644287,-647.419143062989,-612.461608243526,-558.423925505626,-491.161916254982,-417.964462871507,-346.763645204813,-285.275176643603,-240.162286848379,-216.31365742706,-216.31365742706,-217.211288920449,-241.059918341767,-286.172808136992,-347.661276698202,-418.862094364895,-492.059547748371,-559.321556999015,-613.359239736914,-648.316774556378,-660.405970137675,-648.316774556378,-613.359239736915,-559.321556999015,-492.059547748371,-418.862094364895,-347.661276698202,-286.172808136992,-241.059918341767,-217.211288920449,-217.211288920449,-217.863174195453,-241.711803616772,-286.824693411997,-348.313161973206,-419.5139796399,-492.711433023375,-559.97344227402,-614.011125011919,-648.968659831382,-661.05785541268,-648.968659831382,-614.011125011919,-559.97344227402,-492.711433023375,-419.5139796399,-348.313161973206,-286.824693411997,-241.711803616772,-217.863174195453,-217.863174195453,-218.336289548474,-242.184918969793,-287.297808765018,-348.786277326227,-419.987094992921,-493.184548376396,-560.446557627041,-614.48424036494,-649.441775184403,-661.530970765701,-649.441775184403,-614.48424036494,-560.446557627041,-493.184548376396,-419.987094992921,-348.786277326228,-287.297808765018,-242.184918969793,-218.336289548474,-218.336289548474],"Archive4001_field22":[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.291579025474452,0.331958624772472,0.293813517919311,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.311122639559848,0.359356023144356,0.36157906788156,0.35750956419993,0.313316220524893,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.362885326391844,0.369460439266822,0.368392486998663,0.365942708838547,0.366101068794431,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.368225556900984,0.368120369357702,0.371866928827502,0.369067807916593,0.364661253694848,0.359163914345415,0.359066327329346,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.368987611407234,0.368655659163151,0.369728709727342,0.369182629049923,0.368292460307192,0.366282105220394,0.36204088592395,0.345770315335192,0.342877016698199,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.330276030692528,0.364654873005336,0.371993666836832,0.370724847960599,0.36931652969601,0.369488026365595,0.366769602410282,0.359840204877928,0.331102955542152,0.271482887466346,0.250675928135425,-0,-0,-0,-0,-0,-0,-0,-0,-0,0.359041586518542,0.371621897839078,0.371299735574491,0.3693966323717,0.366552627688978,0.365780407868553,0.3604833095694,0.346572217873004,0.30078495293551,0.198190550021449,0.101993914347395,-0,-0,-0,-0,-0,-0,-0,-0,0.366802663139764,0.364218139830538,0.373832431420376,0.368422607606507,0.367880999667325,0.36801383686516,0.36715025432873,0.361694702240024,0.341624337213084,0.278278196685274,0.153126555006896,-0.00139211692858632,0.187651809121697,-0,-0,-0,-0,-0,-0,0.359466715596236,0.365481704021291,0.368880359523228,0.371480302832109,0.367270893149556,0.367523837444091,0.367324503452615,0.367476013550639,0.366371841486132,0.358513928518195,0.317439834955819,0.217233076673854,0.174578777203682,0.317689714017157,0.584138049791042,-0,-0,-0,-0,0.111881214998053,0.389743994390404,0.369566565146797,0.369842092077742,0.369401543000393,0.367491339716625,0.367608819470584,0.366990611979366,0.368017621489822,0.367930324899486,0.362935996573264,0.334823929698124,0.250118540500856,0.215349928764733,0.561969595196512,1.01383163505097,1.12947837955896,-0,-0,-0.00826191480852944,-0.978693303018869,0.677143730790148,0.378621045065609,0.369532628636401,0.368496767483142,0.36768551285629,0.367702903363,0.367363475703263,0.368326396817588,0.368419198316523,0.36634947779495,0.347359826415193,0.251760786103002,0.0613591852122932,0.225752892345012,1.56258119224757,1.89485922683032,0.295443627700228,-0.00826191480852944,-0.00826191480852944,-3.34516005128959,1.7295568305344,0.519933518856503,0.375236746115075,0.368554099855082,0.367792014070942,0.367592304744788,0.36706483441178,0.367750508311223,0.368452884603801,0.369108750674297,0.365347459318417,0.332298146265878,0.162828612355416,-0.184858943788741,0.458215611436224,3.9258355761278,2.46409492604252,-0.00826191480852944,-0.00826191480852944,-4.59715117260635,3.02091743169919,0.876179018419443,0.412159481758304,0.371761522338992,0.367881093500995,0.367542510344281,0.36783229999296,0.369389594846503,0.371321786486776,0.373148039914414,0.377376247608715,0.39659576020036,0.432476504223935,0.251115445042412,0.0115841760195816,1.99843045388071,4.81498641121397,-0.00826191480852944,-0.00826191480852944,-3.89717001571536,2.06933592864076,0.867382737480646,0.442288847411769,0.37818177838174,0.370271474948445,0.370260277463909,0.370637801593381,0.370526452305815,0.370471246830379,0.379563885774705,0.409092027831095,0.448384689181868,0.443291804224995,0.165679967342234,-0.33058133417453,1.00103635079407,4.13715275273137,-0.00826191480852944,-0.00826191480852944,0.425220440410869,-0.0315509496530514,0.435072600352375,0.391096200120753,0.372634019074005,0.364273783196431,0.359337412799945,0.355732917505461,0.362334053584724,0.394817174276725,0.473530360991633,0.552781026964274,0.59344403522146,0.575980213138142,0.402527737105976,-0.0519604491095113,0.456618030660663,3.98452941205397,-0.00826191480852944,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0],"Archive4001_field23":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-7.49210312278592e-06,-8.68289498612285e-06,-7.59545582695864e-06,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-8.19658635009546e-06,-9.66450261330465e-06,-9.72882298810873e-06,-9.5952736955951e-06,-8.26146424515173e-06,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-9.83492918749107e-06,-1.00813822427881e-05,-1.00040369943599e-05,-9.81311586656375e-06,-9.6261064754799e-06,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.00375164038269e-05,-1.00275901786517e-05,-1.0179179298575e-05,-9.96088874671841e-06,-9.40210702538025e-06,-7.95501546235755e-06,-6.64560229779454e-06,0,0,0,0,0,0,0,0,0,0,0,0,-1.00749621196883e-05,-1.00475899671437e-05,-1.00950792329968e-05,-1.00351990113268e-05,-9.81978791969595e-06,-9.0549419837771e-06,-6.76949866829091e-06,-2.36819687415846e-06,-3.32393346980098e-06,0,0,0,0,0,0,0,0,0,0,-8.84084602148505e-06,-9.89275213214569e-06,-1.0207339983026e-05,-1.01375662779901e-05,-1.0003917850554e-05,-9.73326405073749e-06,-8.69688210514141e-06,-6.41703718429198e-06,-2.76198397841654e-06,2.54607448368915e-06,-4.9880702590599e-07,0,0,0,0,0,0,0,0,0,-9.69405300565995e-06,-1.01941586763132e-05,-1.01843688753434e-05,-1.00633251349791e-05,-9.82898382062558e-06,-9.41497910389444e-06,-8.01048554421868e-06,-5.24414599567535e-06,-2.87700709122873e-06,-3.733824541996e-06,3.08275275529013e-06,0,0,0,0,0,0,0,0,-9.96641483652638e-06,-9.88330157269957e-06,-1.03068623502622e-05,-1.00616962299682e-05,-1.000193242362e-05,-9.92560944723664e-06,-9.63704042078461e-06,-8.60683303471887e-06,-6.03427542955615e-06,-2.79661662716535e-06,-4.29185820394196e-06,-1.14844506242662e-05,-2.72944271273445e-05,0,0,0,0,0,0,-9.79165270109661e-06,-9.91987326415256e-06,-1.00853740150342e-05,-1.02131634776015e-05,-1.00043243946857e-05,-9.99944950308418e-06,-9.96184280666057e-06,-9.87002022156958e-06,-9.42002498049987e-06,-7.59485601520282e-06,-3.12101178678859e-06,-1.08511983398785e-06,-1.30417083710199e-05,-4.28167295467574e-05,-4.27781815233175e-05,0,0,0,0,-6.96716710990586e-07,-1.16629344120156e-05,-1.00872712209821e-05,-1.01400273706531e-05,-1.01220475698938e-05,-1.00088891485939e-05,-1.00101042335154e-05,-9.98188352241414e-06,-1.00103361546644e-05,-9.91360320767853e-06,-9.26400389289483e-06,-6.70842246108805e-06,-3.24358211400977e-06,-8.0645140769775e-06,-3.02685166388983e-05,-5.75830745219719e-05,-4.35917099821381e-05,0,0,2.4023896116887e-07,3.04436689475551e-05,-3.28436472045723e-05,-1.10507626231993e-05,-1.01465984698734e-05,-1.00864199339412e-05,-1.00217148428783e-05,-1.00205579656176e-05,-1.00056704468443e-05,-1.00468014352373e-05,-1.00282795756357e-05,-9.75428429228486e-06,-8.24720427772263e-06,-4.52206313639181e-06,3.9646965888096e-07,-7.22755930837593e-06,-4.85875316371676e-05,-5.18345914315432e-05,1.74199567481992e-06,2.4023896116887e-07,2.4023896116887e-07,7.70363258197904e-05,-8.28719130367972e-05,-1.81952764251037e-05,-1.02098192655831e-05,-1.00770103017567e-05,-1.0030748853751e-05,-1.00090264822938e-05,-9.99148414848605e-06,-1.0057302461064e-05,-1.0157398719457e-05,-1.03366737675969e-05,-1.10240980575327e-05,-1.29405570987728e-05,-9.9775570561178e-06,1.32952436615597e-06,-1.96504824998556e-05,-0.000120938202599064,-6.13141164649278e-05,2.4023896116887e-07,2.4023896116887e-07,6.07007568760309e-05,-0.00010030062549049,-2.76918108284008e-05,-1.18197622214211e-05,-1.01910200100974e-05,-9.97389997792197e-06,-1.0038876098406e-05,-1.01153082141536e-05,-1.02434323707712e-05,-1.04164246295113e-05,-1.10812734419596e-05,-1.28780775412451e-05,-1.61142725119134e-05,-1.72256768564694e-05,-8.11429435998434e-06,-1.24218668133835e-05,-7.62235213187523e-05,-0.000139966141432524,2.4023896116887e-07,2.4023896116887e-07,1.62940596055705e-05,-2.62410740106134e-05,-2.74937301583122e-05,-1.42364569910569e-05,-1.13438027256052e-05,-1.15317934614723e-05,-1.02909543784335e-05,-1.01002351584611e-05,-1.03769571069279e-05,-1.14934618977713e-05,-1.47684149851557e-05,-1.84216132765869e-05,-2.23146253119921e-05,-2.01850853045471e-05,-2.9266964247654e-06,4.24917971031391e-06,-5.65664922760334e-05,-0.000129667561850511,2.4023896116887e-07,2.4023896116887e-07,3.02075895888265e-05,3.13344862661324e-05,2.1405271581898e-06,-9.20107868296327e-06,-1.00450351965264e-05,-9.69331904343562e-06,-9.53768994804705e-06,-1.09114944280009e-05,-1.42276012411457e-05,-1.94649765035138e-05,-2.73901114269393e-05,-3.06870097119827e-05,-3.42630155500956e-05,-3.25429646181874e-05,-1.82109160959953e-05,-4.89781314172433e-06,-4.16299408243503e-05,-0.000140608215588145,2.4023896116887e-07,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive401.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive401.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive401.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive401_field1":[0,0,0,0,413.23008576766,0,0,276.79479258021,0,131.567910003252,26.6063411353253,401.705842882636,66.2435916069221,0,590.073446556031,369.234316013539,106.36460598412,296.23785866352,222.369011054435,-257.69819864946,359.149459395975,245.039841658453,232.026723854917,108.348952812353,34.6512731266114,0,34.0789439141032,197.714660409417,0,253.423454389475,0,201.440871450189,0,0,12.1521503575397,121.354596366911,0,0,276.063006352515,82.0043828315714,22.2140763620356,-1.55070465348417,45.0914376419358,31.4283420615125],"Archive401_field2":[0,0,0,0,2555.72643630686,0,0,4041.53424286762,0,2515.87994387536,341.854122249234,2517.48120366531,2143.39298566256,0,3600.99624600821,3606.5833270506,1593.08753045497,3523.01595086974,2976.60994470648,3603.28759971782,2449.01173950608,1426.997237287,2337.90491134095,1185.2722963214,322.360733802892,0,576.530057756131,3446.23696103874,0,2075.40322943791,0,732.1830246321,0,0,1531.79624889397,1207.98016889383,0,0,1349.82305691578,543.681226092432,244.41252568636,284.224058406725,223.037527986211,230.457731228147],"Archive401_field3":[0,0,0,0,2588.91805992799,0,0,4051.00165310644,0,2519.31776616943,342.887938381337,2549.32916568539,2144.41640182509,0,3649.02187388562,3625.43477049048,1596.63436925843,3535.44880587856,2984.90447753405,3612.49081491807,2475.20642258843,1447.88315800161,2349.39051139971,1190.21422945726,324.217756187464,0,577.536390121513,3451.90386288065,0,2090.81850288254,0,759.388178898,0,0,1531.84445126911,1214.06055306156,0,0,1377.76379269374,549.830878006099,245.419941938311,284.228288638045,227.549943174716,232.590856586325],"Archive401_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive402.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive402.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive402.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive402_field1":[0,0,0,0,413.230085767661,0,0,276.794792580211,0,131.567910003254,26.6063411353253,401.705842882636,66.2435916069231,0,590.07344655603,369.234316013541,106.36460598412,296.237858663521,222.369011054436,-257.698198649458,359.149459395976,245.039841658453,232.026723854917,108.348952812353,34.6512731266113,0,34.0789439141031,197.714660409418,0,253.423454389475,0,201.440871450189,0,0,12.1521503575402,121.354596366911,0,0,276.063006352515,82.0043828315714,22.2140763620356,-1.55070465348416,45.0914376419358,31.4283420615125,0,0,0,0,413.230085767661,0,0,276.794792580211,0,131.567910003254,26.6063411353253,401.705842882636,66.2435916069231,0,590.07344655603,369.234316013541,106.36460598412,296.237858663521,222.369011054436,-257.698198649458,359.149459395976,245.039841658453,232.026723854917,108.348952812353,34.6512731266113,0,34.0789439141031,197.714660409418,0,253.423454389475,0,201.440871450189,0,0,12.1521503575402,121.354596366911,0,0,276.063006352515,82.0043828315714,22.2140763620356,-1.55070465348416,45.0914376419358,31.4283420615126,0,0,0,0,413.230085767661,0,0,276.794792580211,0,131.567910003254,26.6063411353253,401.705842882636,66.2435916069231,0,590.07344655603,369.234316013541,106.36460598412,296.237858663521,222.369011054436,-257.698198649458,359.149459395976,245.039841658453,232.026723854917,108.348952812353,34.6512731266113,0,34.0789439141031,197.714660409418,0,253.423454389475,0,201.440871450189,0,0,12.1521503575402,121.354596366911,0,0,276.063006352515,82.0043828315714,22.2140763620356,-1.55070465348416,45.0914376419358,31.4283420615126,0,0,0,0,413.230085767661,0,0,276.794792580211,0,131.567910003254,26.6063411353253,401.705842882636,66.2435916069231,0,590.07344655603,369.234316013541,106.36460598412,296.237858663521,222.369011054436,-257.698198649458,359.149459395976,245.039841658453,232.026723854917,108.348952812353,34.6512731266113,0,34.0789439141031,197.714660409418,0,253.423454389475,0,201.440871450189,0,0,12.1521503575402,121.354596366911,0,0,276.063006352515,82.0043828315714,22.2140763620356,-1.55070465348416,45.0914376419358,31.4283420615125],"Archive402_field2":[0,0,0,0,2555.72643630686,0,0,4041.53424286762,0,2515.87994387536,341.854122249234,2517.48120366531,2143.39298566256,0,3600.99624600821,3606.5833270506,1593.08753045497,3523.01595086973,2976.60994470648,3603.28759971782,2449.01173950608,1426.997237287,2337.90491134095,1185.2722963214,322.360733802891,0,576.530057756131,3446.23696103874,0,2075.4032294379,0,732.1830246321,0,0,1531.79624889397,1207.98016889383,0,0,1349.82305691577,543.681226092432,244.41252568636,284.224058406725,223.037527986211,230.457731228147,0,0,0,0,2555.72643630686,0,0,4041.53424286762,0,2515.87994387536,341.854122249234,2517.48120366531,2143.39298566256,0,3600.99624600821,3606.5833270506,1593.08753045497,3523.01595086973,2976.60994470648,3603.28759971782,2449.01173950608,1426.997237287,2337.90491134095,1185.2722963214,322.360733802891,0,576.530057756131,3446.23696103874,0,2075.4032294379,0,732.1830246321,0,0,1531.79624889397,1207.98016889383,0,0,1349.82305691577,543.681226092432,244.41252568636,284.224058406725,223.037527986211,230.457731228147,0,0,0,0,2555.72643630686,0,0,4041.53424286762,0,2515.87994387536,341.854122249234,2517.48120366531,2143.39298566256,0,3600.99624600821,3606.5833270506,1593.08753045497,3523.01595086973,2976.60994470648,3603.28759971782,2449.01173950608,1426.997237287,2337.90491134095,1185.2722963214,322.360733802891,0,576.530057756131,3446.23696103874,0,2075.4032294379,0,732.1830246321,0,0,1531.79624889397,1207.98016889383,0,0,1349.82305691577,543.681226092432,244.41252568636,284.224058406725,223.037527986211,230.457731228147,0,0,0,0,2555.72643630686,0,0,4041.53424286762,0,2515.87994387536,341.854122249234,2517.48120366531,2143.39298566256,0,3600.99624600821,3606.5833270506,1593.08753045497,3523.01595086973,2976.60994470648,3603.28759971782,2449.01173950608,1426.997237287,2337.90491134095,1185.2722963214,322.360733802891,0,576.530057756131,3446.23696103874,0,2075.4032294379,0,732.1830246321,0,0,1531.79624889397,1207.98016889383,0,0,1349.82305691577,543.681226092432,244.41252568636,284.224058406725,223.037527986211,230.457731228147],"Archive402_field3":[0,0,0,0,-4.02852596339638,0,0,-2.41735894562957,0,-3.49535454214175,-5.53170927981922,-2.72967876318486,-3.15884475363255,0,-2.68916152436508,-2.7204387358749,-6.4767301776541,-3.02179627985906,-2.77795412733761,-3.19916305340227,-3.22880221551229,-5.34541146984834,-3.25751338696086,-4.84823992563306,-4.72293663211814,0,-5.81694889117627,-2.45928995748317,0,-5.70845688285398,0,-4.44580984926043,0,0,-6.10682483214893,-5.88059073767999,0,0,-5.4062682013107,-6.84560084360456,-6.79188230652669,-7.61039221397032,-8.6170726800452,-5.79906929192985,0,0,0,0,-5.63063202288293,0,0,-2.59632564668764,0,-3.88217246430389,-5.70296314847667,-3.30743692897672,-3.94366545539094,0,-2.8748706180776,-3.26285655943563,-6.51483548183527,-3.70709055714396,-3.00912809128873,-3.50943443529329,-4.05493539521653,-6.6108840598522,-3.60866154861718,-6.64458796898586,-5.87011742512403,0,-7.08368736379319,-3.02265438121609,0,-6.06335744239413,0,-6.06278668294024,0,0,-7.15179891717778,-5.29356003455174,0,0,-6.33893350819993,-7.6838576980773,-7.16278991711239,-7.98998947828425,-9.03297974309653,-6.23710182432201,0,0,0,0,-7.23273808236949,0,0,-2.7752923477457,0,-4.26899038646604,-5.87421701713412,-3.88519509476858,-4.72848615714933,0,-3.06057971179012,-3.80527438299636,-6.55294078601643,-4.39238483442889,-3.24030205523984,-3.81970581718431,-4.88106857492076,-7.87635664985607,-3.9598097102735,-8.44093601233866,-7.01729821812993,0,-8.35042583641025,-3.58601880494901,0,-6.4182580019343,0,-7.67976351662006,0,0,-8.19677300220666,-4.70652933142348,0,0,-7.27159881508917,-8.52211455255004,-7.53369752769809,-8.36958674259815,-9.44888680614785,-6.67513435671417,0,0,0,0,-8.83484414185604,0,0,-2.95425904880377,0,-4.65580830862819,-6.04547088579157,-4.46295326056044,-5.51330685890773,0,-3.24628880550264,-4.34769220655709,-6.5910460901976,-5.0776791117138,-3.47147601919096,-4.12997719907533,-5.707201754625,-9.14182923985994,-4.31095787192983,-10.2372840556915,-8.16447901113583,0,-9.61716430902724,-4.14938322868194,0,-6.77315856147446,0,-9.29674035029987,0,0,-9.24174708723553,-4.11949862829522,0,0,-8.20426412197841,-9.36037140702278,-7.90460513828379,-8.74918400691206,-9.86479386919917,-7.11316688910633],"Archive402_field4":[0,0,0,0,2588.92119425114,0,0,4051.00237436308,0,2519.32019093253,342.932556189931,2549.33062707847,2144.41872840092,0,3649.02286477975,3625.43579116611,1596.6475055976,3535.45009726355,2984.90577020983,3612.49223148115,2475.20852850558,1447.89302527794,2349.39276972763,1190.2241038699,324.252154283768,0,577.565683545163,3451.90473893435,0,2090.82629562476,0,759.401192700695,0,0,1531.85662390234,1214.07479499723,0,0,1377.7743996002,549.873491504971,245.513905036496,284.330156915798,227.713044379082,232.663137974654,0,0,0,0,2588.92418294516,0,0,4051.0024851113,0,2519.32075730741,342.935361367236,2549.33131117813,2144.42002809936,0,3649.02300636441,3625.43623876,1596.64766062479,3535.45074941067,2984.90599430781,3612.49251957668,2475.20974402657,1447.89825022782,2349.39328284839,1190.23277662473,324.270892473898,0,577.579830448793,3451.90518627175,0,2090.82729470883,0,759.412380484006,0,0,1531.86114615904,1214.07209352575,0,0,1377.77837497032,549.884566139187,245.524445749096,284.340570432668,227.729162299991,232.674467887491,0,0,0,0,2588.928163067,0,0,4051.00260376597,0,2519.32138307439,342.938252041046,2549.33212621563,2144.42161502765,0,3649.02315740033,3625.4367675074,1596.64781656137,3535.4515343917,2984.90623630965,3612.49283432091,2475.21123527942,1447.90458118579,2349.39384845281,1190.24416041555,324.293687729989,0,577.596755120938,3451.90572555236,0,2090.82835403381,0,759.427010987687,0,0,1531.86638123943,1214.06967589117,0,0,1377.78298168005,549.89691838144,245.535546305301,284.351490314986,227.746038605926,232.686621846294,0,0,0,0,2588.93313461208,0,0,4051.0027303271,0,2519.32206823342,342.9412282092,2549.33307219084,2144.42348918514,0,3649.0233178875,3625.43737740826,1596.64797340736,3535.45245220654,2984.90649621535,3612.49317571384,2475.21300226362,1447.91201813735,2349.39446654085,1190.25825516456,324.320539196575,0,577.616457317427,3451.90635677613,0,2090.82947359962,0,759.44508401277,0,0,1531.8723291362,1214.06754209521,0,0,1377.78821972305,549.910548145637,245.547206629186,284.362916504418,227.763673128307,232.699599721943],"Archive402_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,5997180,5577377.4,1379351.4,1799154,3688265.7,5787278.7,3478364.4,1589252.7,3898167,2533808.55,4842722.85,2743709.85,3583315.05,2428857.9,1484302.05,2061530.625,1956579.975,2402620.2375,2802744.590625,1694203.35,3143834.203125,3619801.79941406,3348185.22836539,3970710.06484059,4572641.23178246,4527870.9,4430994.81106745,2192718.9375,2848660.5,2258313.09375,4947673.5,4064229.57697249,5892229.35,4003117.65,3793216.35,3137274.7875,5682328.05,3373413.75,3058561.8,4331532.024543,5279716.63080448,5076230.62974912,5419951.425,5026571.27142495,2998590,2788688.7,689675.7,899577,1844132.85,2893639.35,1739182.2,794626.35,1949083.5,1266904.275,2421361.425,1371854.925,1791657.525,1214428.95,742151.025,1030765.3125,978289.9875,1201310.11875,1401372.2953125,847101.675,1571917.1015625,1809900.89970703,1674092.61418269,1985355.03242029,2286320.61589123,2263935.45,2215497.40553372,1096359.46875,1424330.25,1129156.546875,2473836.75,2032114.78848625,2946114.675,2001558.825,1896608.175,1568637.39375,2841164.025,1686706.875,1529280.9,2165766.0122715,2639858.31540224,2538115.31487456,2709975.7125,2513285.63571248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive403.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive403.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive403.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive403_field1":[0,0,0,0,460.770816774129,0,0,411.949999662632,0,412.174513811017,48.6771703561525,558.568579350587,474.616516846037,12.7915119642201,0,0,37.3086856610408,360.919557112004,12.3544353948163,0,385.226231454435,0,590.278063411913,495.177702755498,0,0,-8.09377849329831,0,0,0,0,460.77170840018,0,0,411.950248740164,0,412.17364361406,48.6864330023905,558.568083917617,474.617058098477,12.8005651021339,0,0,37.3176309150267,360.932076543289,12.3574480742331,0,385.225517493002,0,590.277936479337,495.177738940768,0,0,-8.09313751605764,0,0,0,0,460.772298754885,0,0,411.95042479675,0,412.17302052898,48.6929384210177,558.567719166432,474.617465830832,12.8068908375883,0,0,37.3240093333081,360.94080749853,12.3597394866041,0,385.224999527871,0,590.277864059119,495.177780549843,0,0,-8.09269302276209,0,0,0,0,460.772587002485,0,0,411.950527678175,0,412.172644914488,48.6966993942973,558.567485494758,474.61773903373,12.81050539475,0,0,37.3278369760597,360.945746948668,12.3613106187048,0,385.224678132393,0,590.277846035159,495.177827664038,0,0,-8.09244514793573,0,0,0,0,460.772572647918,0,0,411.95055729363,0,412.172516981893,48.6977235461413,558.567383136389,474.617877113028,12.8114183266457,0,0,37.3291233300265,360.946893098474,12.3621620943239,0,385.224553646572,0,590.277882339241,495.177880332199,0,0,-8.09239397060975],"Archive403_field2":[0,0,0,0,2616.21339271603,0,0,3912.24233856008,0,2411.09194021722,400.448830925542,2569.02303458998,2551.09956440855,285.808133877798,0,0,360.45813796543,1560.53793275944,710.635812096255,0,1313.539366359,0,3192.84862079441,2925.93882732803,0,0,3210.94892334187,0,0,0,0,2616.21892310434,0,0,3912.24430687077,0,2411.09082176164,400.518689063798,2569.01930947128,2551.09808260662,285.899787924607,0,0,360.522177129439,1560.59255274829,710.725975613384,0,1313.53224431277,0,3192.84988039961,2925.93913250498,0,0,3210.95183632047,0,0,0,0,2616.22273399302,0,0,3912.24587785005,0,2411.08998764474,400.56819269654,2569.01646976854,2551.09671075066,285.964391674096,0,0,360.567288334832,1560.63084090241,710.789752402917,0,1313.52727217383,0,3192.85141636534,2925.9393908527,0,0,3210.95491078904,0,0,0,0,2616.22475489571,0,0,3912.24681574223,0,2411.08956982951,400.597441724179,2569.01474208757,2551.09540645765,286.002104892819,0,0,360.59360411601,1560.6527389563,710.827183021512,0,1313.52440230197,0,3192.85254118104,2925.93958426487,0,0,3210.95711499408,0,0,0,0,2616.224925228,0,0,3912.2469111193,0,2411.08968467173,400.606496078295,2569.01432715861,2551.09413552577,286.013023864695,0,0,360.601204071791,1560.65820291824,710.838292213486,0,1313.52359090168,0,3192.85264328221,2925.93969644583,0,0,3210.95753091054],"Archive403_field3":[0,0,0,0,-3.05259416202537,0,0,-1.85471759580051,0,-5.04963367981924,-8.78910432050351,-4.46611347574808,-3.97210419198582,-6.82937917736106,0,0,-5.49057913056217,-4.38282757392598,-8.03678400524229,0,-6.40330197644071,0,-3.58151855637165,-2.34920442020373,0,0,-3.84532567936689,0,0,0,0,-3.98233494385821,0,0,-2.38819585263808,0,-4.76100231206086,-9.28662269650678,-4.71859061979417,-4.60891762464862,-8.16054023545125,0,0,-6.57698481854546,-5.77679382241434,-8.87897955069127,0,-7.19143733699156,0,-3.93122026822535,-2.46876132637005,0,0,-4.1371012390692,0,0,0,0,-4.91204170119151,0,0,-2.92167150856576,0,-4.47238358487258,-9.78419367130657,-4.97106840475183,-5.24566695282388,-9.49173199550835,0,0,-7.66339660334596,-7.17072101290606,-9.72119143105633,0,-7.9795615978778,0,-4.28091754811687,-2.58832279647793,0,0,-4.42888123088939,0,0,0,0,-5.84172533915077,0,0,-3.45514577569977,0,-4.18377326334881,-10.2817951523705,-5.22354671345074,-5.88237311958826,-10.8229382194204,0,0,-8.74980807828814,-8.5646197568083,-10.5634082957961,0,-8.76767856437342,0,-4.63061265259992,-2.70788732006133,0,0,-4.7206653549463,0,0,0,0,-6.77139882918045,0,0,-3.98861901982261,0,-3.89516721943285,-10.7794026419905,-5.47602591215735,-6.51905950190668,-12.1541407443651,0,0,-9.8362110485719,-9.95850111094578,-11.4056173855207,0,-9.55579349512035,0,-4.98030634274945,-2.82745318914998,0,0,-5.01245098146518],"Archive403_field4":[0,0,0,0,2656.48105209665,0,0,3933.87167531193,0,2446.07393036598,403.492232215531,2629.04890716419,2594.8767992335,286.175737247217,0,0,362.425376747336,1601.73679968482,710.788632017125,0,1368.87761273665,0,3246.9560105935,2967.54519718459,0,0,3210.96142675214,0,0,0,0,2656.48788438097,0,0,3933.87394657725,0,2446.07210245657,403.573822749924,2629.04560285764,2594.87649437096,286.302528139735,0,0,362.508072335726,1601.79725649601,710.888848704469,0,1368.87449130593,0,3246.95763069907,2967.54560117431,0,0,3210.96470077939,0,0,0,0,2656.49329630538,0,0,3933.87588739265,0,2446.07063053944,403.635491127878,2629.0432157646,2594.87642933075,286.408349624686,0,0,362.574928445621,1601.84216055556,710.963667738385,0,1368.87394175248,0,3246.95957012702,2967.54596471708,0,0,3210.96816330987,0,0,0,0,2656.49721829649,0,0,3933.87726328261,0,2446.06964473932,403.677339170049,2629.04196740095,2594.87656226039,286.493366490907,0,0,362.626079983351,1601.87145444437,711.013130481662,0,1368.87591850845,0,3246.96115280422,2967.54626997321,0,0,3210.97078259534,0,0,0,0,2656.49959061373,0,0,3933.87786596111,0,2446.0692597744,403.699428411812,2629.04205396373,2594.87685945326,286.557682495166,0,0,362.661609319771,1601.88509504203,711.037262621712,0,1368.8803796449,0,3246.96177734576,2967.54650088239,0,0,3210.97164061225],"Archive403_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,2136495.375,2570400.71859375,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2248942.5,2091516.525,517256.775,674682.75,1383099.6375,2170229.5125,1304386.65,595969.7625,1461812.625,950178.20625,1816021.06875,1028891.19375,1343743.14375,1756986.328125,1697951.5875,2130873.01875,1688112.4640625,1466732.18671875,1629077.7234375,1068247.6875,1285200.35929688,910821.7125,556613.26875,989534.7,1855377.5625,2209586.00625,635326.25625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive404.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive404.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive404.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive404_field1":[0,0,0,0,1665074.97261583,0,0,-145647628.999131,0,-120588045.146973,-20182.4346668275,-4393054.47558441,-13274612.2756044,581541.021085137,0,0,-360484.692775165,254505.461576783,1225824.76990259,0,-4118595.87331871,0,161208732.740185,-187958219.722576,0,0,-194517720.648798,0,0,0,0,-11160047.0364705,0,0,-169715800.225912,0,-87022180.1257278,-94549.7555637864,-20708585.7336805,-20058253.9310513,2077170.73677262,0,0,-376155.686121783,2909673.25897326,1814786.25636212,0,-2427560.0255243,0,190568951.055936,-235917311.895294,0,0,-221096845.367705,0,0,0,0,-24589082.1336088,0,0,-193802333.127207,0,-53696606.5116367,-158300.869803505,-36987948.4685076,-25244499.0679001,3498789.20900291,0,0,-320172.7001676,5509071.54207924,2033969.90477044,0,-739857.612071463,0,220054416.788646,-283750622.975757,0,0,-247684561.30505],"Archive404_field2":[0,0,0,0,2174101.91910473,0,0,350687473.895578,0,24514888.5264932,-10159.0126634616,-8251615.27446378,16028206.1720837,-1117309.72651903,0,0,-57817.2431073018,324950.950950206,-1715218.6090176,0,-4538900.94627376,0,509232663.007534,-217018763.921607,0,0,193202844.873456,0,0,0,0,-21488929.2651651,0,0,345918708.777304,0,233531.993335532,-94582.2879895811,-20880061.7444775,-22949728.1026978,1379431.16560418,0,0,757.546037813982,3850998.37590355,-1868198.99493612,0,-3432105.35903932,0,533602846.58424,-257233561.956676,0,0,173060515.143276,0,0,0,0,-46013898.4137882,0,0,341073353.125321,0,-23677771.4959765,-171805.637050496,-33424408.4505748,-66958743.3024775,5398144.59053391,0,0,71430.5176811375,7291191.64707167,-1293434.00161027,0,-2330927.5532354,0,557834478.265855,-297388901.17584,0,0,152914701.449263],"Archive404_field3":[0,0,0,0,1073.08241677448,0,0,63897002974.8859,0,61014435162.0132,0.635478135805254,-5962.31863058936,6064.10652932165,146.31268502957,0,0,3.5164309764487,75.2161896254847,251.867630327796,0,-4037.20984707884,0,50551541946.9589,38834125355.3572,0,0,21016679886.726,0,0,0,0,244704.558429306,0,0,63896403580.5072,0,61014172205.125,3174.92689724192,42820.146215608,-11092.4854769027,-20481.78416932,0,0,-17661.6903784341,-33934.0193254475,8603.38889984435,0,20500.687159359,0,50551143077.7534,38834072975.0603,0,0,21016636459.2238,0,0,0,0,529124.694888732,0,0,63895748338.931,0,61013849890.2655,1402.19817266514,145982.969133312,7009.9476309789,-16567.7375337024,0,0,-23621.0589099844,-48927.4508157681,36603.8214277576,0,61248.2023433767,0,50550706780.0636,38833996286.4109,0,0,21016620096.9538],"Archive404_field4":[0,0,0,0,2738465.8059929,0,0,63898131303.7303,0,61014559251.0173,22595.0483022491,9348161.19953329,20811505.4942174,1259591.60269754,0,0,365091.834115883,412754.353282107,2108227.05292013,0,6128986.05536561,0,50554363801.513,38835186590.9236,0,0,21018468020.8627,0,0,0,0,24215297.0483622,0,0,63897565319.2591,0,61014234263.7439,133774.233839401,29407895.7953015,30479889.9898527,2493569.35211904,0,0,376570.8557294,4826752.37430546,2604551.9114162,0,4203904.75049614,0,50554318460.35,38835641489.6903,0,0,21018511883.9586,0,0,0,0,52174531.9130945,0,0,63896952557.7593,0,61013878113.0512,233620.008694864,49852991.1159512,71559472.3777059,6432866.03616714,0,0,328893.343217578,9138585.16322512,2410673.12794093,0,2446295.95242733,0,50554263511.75,38836171569.1385,0,0,21018635798.9169],"Archive404_field5":[72327139.4928617,8366066.1,-14128499.5771427,-11949958.5484244,-12313121.513978,-942894728.092438,960329419.144832,-8544118.27445779,-28695201.4692119,24354481.8946774,269158555.128626,19795394.3088366,-472910705.584507,706439696.445823,-2172060590.22065,-3179306283.01691,59342693.7589355,-48678721.5854144,1002282370.93889,-49111055.3054139,37238771.4515834,-589141523.369643,-3637097.94504017,1330522.57429856,-1056936857.95331,262793113.992523,-800721.830560348,65090619.8751028,4183033.05,-14205630.6324334,-12693021.420347,-14889368.3910548,-950372149.530089,958320297.288211,-9667642.88151714,-33878929.8952898,22130183.2996389,264657442.505025,17861254.4362657,-475973451.724927,703751073.042316,-2178283960.78723,-3185304520.83357,57012944.1546308,-51329487.8802938,1000194471.53994,-51275667.9073152,35598388.8439347,-590467502.962235,-5310470.82765737,-956667.25267232,-1054941094.79108,264494370.327929,-2263437.85498295,58061043.6670664,0,-14707185.5776328,-13953668.0648617,-17940787.105802,-957477040.195502,955902637.873901,-11255143.0058901,-39025484.815773,19744708.1346972,259373294.893909,15758474.9922143,-478471994.706307,701013626.586506,-2184289259.3596,-3191083039.78021,54604884.2002716,-53328658.2743904,997934061.396848,-52732688.027963,33319145.3432287,-591217891.675442,-6376825.96615981,-2612036.33172492,-1052128139.04768,266848232.508247,-3068405.73372801]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive405.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive405.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive405.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive405_field1":[0,0,0,0,460.693415058491,0,0,412.025879327821,0,411.826458671647,48.6737015273674,559.284324620853,474.49621635553,12.7956207214845,0,0,37.3361174442725,360.912190330982,12.3302394851095,0,385.479588783638,0,591.150068086942,495.380435774035,0,0,-8.74295759710056,0,0,0,0,460.693415043863,0,0,412.025879314955,0,411.826458671647,48.682734905086,559.284029612226,474.49621635553,12.7956207032786,0,0,37.3470630929809,360.924646338759,12.3302394851095,0,385.478836061325,0,591.150068086942,495.380435760639,0,0,-8.74233392791591,0,0,0,0,460.693415043875,0,0,412.025879314957,0,411.826458671647,48.6890810546009,559.283803357428,474.49621635553,12.795620703307,0,0,37.3548323352455,360.933327468487,12.3302394851095,0,385.478292549717,0,591.150068086942,495.38043576064,0,0,-8.74190026955817,0,0,0,0,460.693415043883,0,0,412.025879314957,0,411.826458671647,48.6927519686883,559.283646185666,474.49621635553,12.7956207033241,0,0,37.3594501858467,360.938229637349,12.3302394851095,0,385.477959053039,0,591.150068086942,495.380435760642,0,0,-8.74165676271486,0,0,0,0,460.693415048576,0,0,412.025879321584,0,411.826458671647,48.6937548059677,559.283558276117,474.49621635553,12.7956207110661,0,0,37.3609313926876,360.939350428428,12.3302394851095,0,385.477836051292,0,591.150068086942,495.380435767692,0,0,-8.74160349180543],"Archive405_field2":[0,0,0,0,2616.81976157722,0,0,3918.46846587317,0,2411.20272530577,400.446489830717,2570.04077941789,2551.26655612334,285.769268094534,0,0,360.413479772207,1560.66822143267,710.608461719973,0,1313.93580792847,0,3193.060983473,2927.99544879081,0,0,3212.74323392221,0,0,0,0,2616.81976158862,0,0,3918.46846587898,0,2411.20272530577,400.51408236123,2570.03842495406,2551.26655612334,285.769268163463,0,0,360.497530294323,1560.72164230885,710.608461719973,0,1313.92857420773,0,3193.060983473,2927.99544879966,0,0,3212.74610106198,0,0,0,0,2616.81976158939,0,0,3918.4684658819,0,2411.20272530577,400.561990237612,2570.03657256771,2551.26655612334,285.769268163742,0,0,360.556715474587,1560.75906703419,710.608461719973,0,1313.92352149404,0,3193.060983473,2927.99544880085,0,0,3212.74918743419,0,0,0,0,2616.81976159004,0,0,3918.46846588449,0,2411.20272530577,400.59031073495,2570.03540032784,2551.26655612334,285.769268163908,0,0,360.591225849309,1560.78042671657,710.608461719973,0,1313.92061712146,0,3193.060983473,2927.9954488019,0,0,3212.75141424497,0,0,0,0,2616.81976157165,0,0,3918.46846587599,0,2411.20272530577,400.59910233771,2570.03506602793,2551.26655612334,285.769268122392,0,0,360.601174697883,1560.785670192,710.608461719973,0,1313.91983008655,0,3193.060983473,2927.99544879501,0,0,3212.75182160736],"Archive405_field3":[0,0,0,0,-3.05228645101546,0,0,-1.85086852508335,0,-5.04953812944024,-8.78909944529217,-4.46540790091453,-3.97203911545368,-6.82943606950107,0,0,-5.49062225793944,-4.38282039737776,-8.03678651399995,0,-6.40302647917476,0,-3.58133909305889,-2.34772016669168,0,0,-3.84423607515555,0,0,0,0,-3.98226747608859,0,0,-2.3855179195588,0,-4.76113158008953,-9.28659756646802,-4.71848251721773,-4.60897167424451,-8.16071022293933,0,0,-6.57724596193446,-5.77717741061319,-8.87904923142994,0,-7.19182312853041,0,-3.93067986701727,-2.46860664540687,0,0,-4.13594494429049,0,0,0,0,-4.91222134963474,0,0,-2.92016527349516,0,-4.47272718650716,-9.78415338332678,-4.97155762489536,-5.24591014434872,-9.49198413100875,0,0,-7.66387310690307,-7.17148839410768,-9.72131097885961,0,-7.98061150259957,0,-4.28002007322625,-2.58949972647754,0,0,-4.4276573987027,0,0,0,0,-5.84215687053798,0,0,-3.45481133103473,0,-4.18432425348306,-10.281743320032,-5.22463317701445,-5.8828525995244,-10.8232579341755,0,0,-8.75049669309736,-8.56576626645052,-10.5635720610244,0,-8.7693944977302,0,-4.62935987325529,-2.71039719323011,0,0,-4.71937346572646,0,0,0,0,-6.77208463701068,0,0,-3.98945676356263,0,-3.89592195837332,-10.7793409977385,-5.47770946075667,-6.51979674582098,-12.1545316169374,0,0,-9.83710867155617,-9.9600248554788,-11.4058328751036,0,-9.55817628211782,0,-4.97869951058007,-2.83129640769347,0,0,-5.01109083156849],"Archive405_field4":[0,0,0,0,2657.0648098441,0,0,3940.07155632897,0,2446.12450877287,403.489490206594,2630.19552571767,2595.0189742705,286.137106461153,0,0,362.383786889125,1601.86207759406,710.760867388785,0,1369.32933199926,0,3247.32346297169,2969.60681506447,0,0,3212.7574300858,0,0,0,0,2657.06604091049,0,0,3940.07184376237,0,2446.12393041684,403.568804222847,2630.19360420424,2595.02002735028,286.171975789395,0,0,362.486596489334,1601.92135290245,710.770890082761,0,1369.32609465045,0,3247.3238670359,2969.60691310225,0,0,3212.76065780383,0,0,0,0,2657.06759741413,0,0,3940.07220374213,0,2446.12338606876,403.628869500791,2630.19221225726,2595.02123677291,286.213033069368,0,0,362.567598557311,1601.96540613482,710.781910687753,0,1369.32546332941,0,3247.3243086807,2969.6070160615,0,0,3212.7641317609,0,0,0,0,2657.06947935312,0,0,3940.07263626925,0,2446.1228757267,403.669785090124,2630.19152394286,2595.02260253815,286.260275708014,0,0,362.626987233538,1601.99416927373,710.793929158427,0,1369.3274069018,0,3247.32478790613,2969.60712394619,0,0,3212.76677316949,0,0,0,0,2657.07168671667,0,0,3940.07314133387,0,2446.12239938886,403.691610939871,2630.19169348398,2595.02412464292,286.313700600261,0,0,362.6648798754,1602.00759207299,710.806945448172,0,1369.3318957489,0,3247.32530471241,2969.60723674782,0,0,3212.76762214517],"Archive405_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,2136495.375,2570400.71859375,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2248942.5,2091516.525,517256.775,674682.75,1383099.6375,2170229.5125,1304386.65,595969.7625,1461812.625,950178.20625,1816021.06875,1028891.19375,1343743.14375,1756986.328125,1697951.5875,2130873.01875,1688112.4640625,1466732.18671875,1629077.7234375,1068247.6875,1285200.35929688,910821.7125,556613.26875,989534.7,1855377.5625,2209586.00625,635326.25625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive406.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive406.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive406.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive406_field1":[272.268414542388,272.330125522406,272.942477144711,272.88476870769,272.607825097537,272.29927003579,272.638680453156,272.906266416155,272.576969459852,272.776105299834,272.438119838363,272.744144286203,272.623252773258,272.79213384309,272.922057172998,272.845824489717,272.862027487947,272.795070828972,272.735620677907,272.891875537663,272.686815744598,272.617889255579,272.657091948428,272.566305732416,272.477821902076,272.373129144128,272.498643845943,272.827203739163,272.731246940509,272.816270323226,272.422692009208,272.552558491728,272.283842295648,272.384086193602,272.592397196837,272.687172333455,272.314697780251,272.653719435846,272.699864143209,272.513264924904,272.373881695178,272.403794120774,272.353267159138,272.41109411318,265.47020463888,265.607415029667,260.246887245382,263.511966125803,269.448332632068,265.408148503469,268.625219471215,261.22608081457,267.744840683381,266.471214318535,266.504260152739,265.856978639064,270.007989910782,263.114114558151,260.935154977899,264.979958204214,264.825249069522,265.586660798822,266.444013880591,261.033941556416,267.403579858492,267.978927113543,267.67867888112,267.939135083491,267.215056457212,266.461888727719,266.98021642621,264.937485767927,267.724676189678,264.562635797091,266.32715706523,268.25913722138,265.306458149945,266.945415839638,267.230315711809,265.798087922174,265.414429061992,267.169637030983,266.92036812235,267.321550991067,265.926093915795,266.053688971221,266.008384426983,265.986825067038,258.805399645626,258.689285470538,256.95048959124,258.324480576493,263.376266022337,258.738513645028,261.711660891398,258.387555675269,261.862260194446,259.056092988464,260.301613065083,261.051614929092,263.204518836095,258.286214027135,257.423455716636,258.506899840454,257.578860531052,259.785450823006,260.326712221754,259.053949641134,261.293317553803,262.518655593038,261.227670403834,261.864390505212,259.673479289057,260.836245847594,259.616230270304,259.551081868937,260.150616974735,259.578796852251,259.69982584696,261.999255637083,258.208298397517,260.481531231781,261.523376867197,259.573583591819,258.696912060394,260.788393355694,260.862421014853,261.106145363383,259.649591998577,259.799486915321,259.84858997566,259.366407348994,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive406_field2":[-0.000167816289252417,-0.00035827421714865,6.15002107176496e-12,-3.16109801942394e-07,0.0138441905605668,-0.000833297502357465,0.00749532089023107,-1.76169745135777e-14,-0.004765954303924,-5.97069468852758e-07,0.00277103490303267,-4.26585421723234e-07,0.0104224372786827,-2.14709804861176e-07,3.42138825945567e-11,6.71608844077536e-11,4.65241868238657e-11,1.86242930289651e-10,-6.75661098805631e-07,3.33444419561842e-11,-2.43534827249386e-06,0.00825685247864164,-1.1642951761579e-06,0.00584668447487427,0.00943158354678925,-3.45936013629381e-07,0.00558363541483476,3.39522739604389e-11,0.00882466348865239,-5.21489018313166e-07,-0.00191690840939546,0.018287944320224,-0.000160994265256538,-1.89843762303531e-07,-0.00472653379915001,-6.65008310159086e-07,-0.000764040680250816,-3.79591438703798e-07,-6.74796200104293e-07,0.0129664636246056,0.0019651175292894,0.00122785135251172,0.00296251829859816,0.00358976199257291,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive407.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive407.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive407.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive407_field1":[253.578828341539,253.187182815944,272.871025757029,272.80248722512,272.059960504346,252.860303339165,272.291474769516,272.822460433485,271.905326103132,272.681045367657,255.331856499928,272.656379972035,272.209657821881,272.701602467953,272.834822600872,272.717874060962,272.750421223364,272.669915423522,272.675734044158,272.798440575533,272.453821910839,272.291321518268,272.442806097903,246.471042203114,252.320165712553,252.973402452945,252.714520801638,272.708793631475,272.582148723204,272.699154567056,251.55745306222,244.756278723651,252.574601655975,254.132404507459,242.221435851381,272.501143274371,252.641035230428,272.653496556656,272.550708053392,247.547583956015,252.589373696706,252.859945750552,252.773984485238,254.230146517837,252.847224670486,252.948752831977,247.3924449876,247.99466665653,248.169125797983,253.032650448893,247.969360195755,247.176825441114,247.99618691352,247.957416001985,252.388487943776,247.640377296705,248.177995235989,247.719386775596,247.452808123562,248.227474590551,248.351510534754,247.978404782619,247.698118077356,247.103014043435,247.974007565031,248.024057857136,248.019689382384,254.69462202431,253.15114845438,253.014433485245,253.0476219742,248.115961158988,247.951734747301,247.879331604352,253.385566985701,255.187464484273,253.111680725484,252.705629268111,255.841682130298,247.930573181495,253.0909154869,247.755428721722,247.908924227504,254.425739355085,253.111288572392,253.039338777818,253.057748810847,252.687769471159,253.037690153384,253.012965593339,254.424041266141,254.205516412762,254.16577783104,252.992903237593,254.239560370866,254.549334414657,254.241726495249,254.254041952411,253.149403172674,254.362847012186,254.15718654025,254.314447636287,254.448919381971,254.138995734281,254.085364914391,254.237303113318,254.350512497656,254.568184554188,254.24189991837,254.218626395236,254.221242237124,252.589360429192,252.968110321493,252.99512395158,252.993343932186,254.172865801209,254.235445260517,254.267621915821,252.903695028576,252.460400088743,252.97273794685,253.072138254943,252.297206009546,254.253769802122,252.978536005985,254.309182930314,254.258490550767,252.651736557847,252.972292925087,252.990053329586,252.986458646919,253.074219528542,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive407_field2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive408.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive408.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive408.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive408_field1":[0,0,0,0,413.23008576766,0,0,276.79479258021,0,131.567910003253,26.6063411353253,401.705842882635,66.2435916069222,0,590.073446556031,369.23431601354,106.36460598412,296.23785866352,222.369011054435,-257.69819864946,359.149459395975,245.039841658453,232.026723854916,108.348952812353,34.6512731266114,0,34.0789439141032,197.714660409418,0,253.423454389475,0,201.440871450189,0,0,12.1521503575396,121.354596366911,0,0,276.063006352514,82.0043828315713,22.2140763620356,-1.55070465348419,45.0914376419358,31.4283420615126,0,0,0,0,413.23008576766,0,0,276.79479258021,0,131.567910003253,26.6063411353253,401.705842882635,66.2435916069222,0,590.073446556031,369.23431601354,106.36460598412,296.23785866352,222.369011054435,-257.69819864946,359.149459395975,245.039841658453,232.026723854916,108.348952812353,34.6512731266114,0,34.0789439141032,197.714660409418,0,253.423454389475,0,201.440871450189,0,0,12.1521503575396,121.354596366911,0,0,276.063006352514,82.0043828315713,22.2140763620356,-1.55070465348419,45.0914376419358,31.4283420615126,0,0,0,0,413.23008576766,0,0,276.79479258021,0,131.567910003253,26.6063411353253,401.705842882635,66.2435916069222,0,590.073446556031,369.23431601354,106.36460598412,296.23785866352,222.369011054435,-257.69819864946,359.149459395975,245.039841658453,232.026723854916,108.348952812353,34.6512731266114,0,34.0789439141032,197.714660409418,0,253.423454389475,0,201.440871450189,0,0,12.1521503575396,121.354596366911,0,0,276.063006352514,82.0043828315713,22.2140763620356,-1.55070465348419,45.0914376419358,31.4283420615126],"Archive408_field2":[0,0,0,0,2555.72643630686,0,0,4041.53424286762,0,2515.87994387536,341.854122249234,2517.48120366531,2143.39298566256,0,3600.99624600821,3606.5833270506,1593.08753045497,3523.01595086973,2976.60994470648,3603.28759971782,2449.01173950608,1426.997237287,2337.90491134095,1185.2722963214,322.360733802891,0,576.530057756131,3446.23696103874,0,2075.4032294379,0,732.1830246321,0,0,1531.79624889397,1207.98016889383,0,0,1349.82305691577,543.681226092432,244.41252568636,284.224058406725,223.037527986211,230.457731228147,0,0,0,0,2555.72643630686,0,0,4041.53424286762,0,2515.87994387536,341.854122249234,2517.48120366531,2143.39298566256,0,3600.99624600821,3606.5833270506,1593.08753045497,3523.01595086973,2976.60994470648,3603.28759971782,2449.01173950608,1426.997237287,2337.90491134095,1185.2722963214,322.360733802891,0,576.530057756131,3446.23696103874,0,2075.4032294379,0,732.1830246321,0,0,1531.79624889397,1207.98016889383,0,0,1349.82305691577,543.681226092432,244.41252568636,284.224058406725,223.037527986211,230.457731228147,0,0,0,0,2555.72643630686,0,0,4041.53424286762,0,2515.87994387536,341.854122249234,2517.48120366531,2143.39298566256,0,3600.99624600821,3606.5833270506,1593.08753045497,3523.01595086973,2976.60994470648,3603.28759971782,2449.01173950608,1426.997237287,2337.90491134095,1185.2722963214,322.360733802891,0,576.530057756131,3446.23696103874,0,2075.4032294379,0,732.1830246321,0,0,1531.79624889397,1207.98016889383,0,0,1349.82305691577,543.681226092432,244.41252568636,284.224058406725,223.037527986211,230.457731228147],"Archive408_field3":[0,0,0,0,2588.92119425114,0,0,4051.00237436309,0,2519.32019093253,342.932556189931,2549.33062707847,2144.41872840092,0,3649.02286477975,3625.43579116612,1596.6475055976,3535.45009726356,2984.90577020983,3612.49223148115,2475.20852850558,1447.89302527794,2349.39276972763,1190.2241038699,324.252154283768,0,577.565683545163,3451.90473893435,0,2090.82629562476,0,759.401192700695,0,0,1531.85662390234,1214.07479499723,0,0,1377.7743996002,549.873491504971,245.513905036496,284.330156915798,227.713044379082,232.663137974654,0,0,0,0,2588.92604907787,0,0,4051.00254345033,0,2519.32106276689,342.936796017211,2549.33170232966,2144.42078565981,0,3649.02308070097,3625.43649298952,1596.64773847941,3535.45112529696,2984.90611307075,3612.49267361771,2475.21045518654,1447.90127745664,2349.39355909015,1190.23812964507,324.281783018603,0,577.587945578124,3451.90544441916,0,2090.82781684121,0,759.419265407139,0,0,1531.86367459671,1214.07084922873,0,0,1377.78059940811,549.890582564481,245.529926051404,284.345967081728,227.73750566519,232.680441869013,0,0,0,0,2588.93313461208,0,0,4051.0027303271,0,2519.32206823342,342.9412282092,2549.33307219084,2144.42348918514,0,3649.0233178875,3625.43737740826,1596.64797340736,3535.45245220655,2984.90649621535,3612.49317571384,2475.21300226362,1447.91201813735,2349.39446654085,1190.25825516456,324.320539196575,0,577.616457317427,3451.90635677614,0,2090.82947359962,0,759.445084012769,0,0,1531.8723291362,1214.06754209521,0,0,1377.78821972305,549.910548145637,245.547206629186,284.362916504418,227.763673128307,232.699599721943],"Archive408_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,1821643.425,1113226.5375,1546147.96875,1467434.98125,1801965.178125,2102058.44296875,1270652.5125,2357875.65234375,2714851.34956055,2511138.92127404,2978032.54863044,3429480.92383684,3395903.175,3323246.10830059,1644539.203125,2136495.375,1693734.8203125,3710755.125,3048172.18272937,4419172.0125,3002338.2375,2844912.2625,2352956.090625,4261746.0375,2530060.3125,2293921.35,3248649.01840725,3959787.47310336,3807172.97231184,4064963.56875,3769928.45356871,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive408_field5":[-582.649071358749,-582.649071358749,-212.532287933284,-274.342410026978,-582.649071358749,-582.649071358749,-582.649071358749,-248.512107840574,-582.649071358749,-383.595442742981,-582.649071358749,-415.07353567849,-582.649071358749,-367.492191928762,-231.560494128667,-311.522601550378,-296.34975647709,-363.531150814285,-424.697494902788,-263.808219331318,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-330.291176367269,-429.228748745727,-341.525294272461,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545455,-582.649071358749,-507.668547346006,-460.203924413763,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-212.532287933284,-274.342410026978,-582.649071358749,-582.649071358749,-582.649071358749,-248.512107840574,-582.649071358749,-383.595442742981,-582.649071358749,-415.07353567849,-582.649071358749,-367.492191928762,-231.560494128667,-311.522601550378,-296.34975647709,-363.531150814285,-424.697494902788,-263.808219331318,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-330.291176367269,-429.228748745727,-341.525294272461,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545454,-582.649071358749,-507.668547346006,-460.203924413763,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-212.532287933284,-274.342410026978,-582.649071358749,-582.649071358749,-582.649071358749,-248.512107840574,-582.649071358749,-383.595442742981,-582.649071358749,-415.07353567849,-582.649071358749,-367.492191928762,-231.560494128667,-311.522601550378,-296.34975647709,-363.531150814285,-424.697494902788,-263.808219331318,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-330.291176367269,-429.228748745727,-341.525294272461,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545455,-582.649071358749,-507.668547346006,-460.203924413763,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749],"Archive408_field6":[421.056801356366,350.667135868831,24.5675272856359,31.7124268951577,33.883305676083,385.405371512481,4.40198168633037,28.7265904374055,72.3020704160426,44.3414579397557,229.715193263854,47.980146981374,18.6591754179716,42.4800134617762,26.7670800192352,36.0102461988442,34.2563513484968,42.0221395706807,49.092622093452,30.4947341866082,58.109290697553,64.4703525208076,62.9185464291538,79.6902475613421,181.042137568861,179.637995589582,157.439529758017,38.1797870173724,49.6164093424723,39.478387342291,246.838111109487,95.3136974024831,402.407210283462,86.3296856675526,53.0642334276367,61.2274782292076,367.84746480115,58.6836052548274,53.1969639998461,142.407663514374,302.515395269367,267.990182032226,325.946371897651,259.643496389784,421.056801356366,350.667135868831,24.5675272856359,31.7124268951577,33.883305676083,385.405371512481,4.40198168633037,28.7265904374055,72.3020704160426,44.3414579397557,229.715193263854,47.980146981374,18.6591754179716,42.4800134617762,26.7670800192352,36.0102461988442,34.2563513484968,42.0221395706807,49.092622093452,30.4947341866082,58.109290697553,64.4703525208076,62.9185464291538,79.6902475613421,181.042137568861,179.637995589582,157.439529758017,38.1797870173725,49.6164093424723,39.478387342291,246.838111109487,95.3136974024831,402.407210283462,86.3296856675526,53.0642334276367,61.2274782292076,367.84746480115,58.6836052548274,53.1969639998461,142.407663514374,302.515395269367,267.990182032227,325.946371897651,259.643496389784,421.056801356366,350.667135868831,24.5675272856359,31.7124268951577,33.883305676083,385.405371512481,4.40198168633037,28.7265904374055,72.3020704160426,44.3414579397557,229.715193263854,47.980146981374,18.6591754179716,42.4800134617762,26.7670800192352,36.0102461988442,34.2563513484968,42.0221395706807,49.092622093452,30.4947341866082,58.109290697553,64.4703525208076,62.9185464291538,79.6902475613421,181.042137568861,179.637995589582,157.439529758017,38.1797870173724,49.6164093424723,39.478387342291,246.838111109487,95.3136974024831,402.407210283462,86.3296856675526,53.0642334276367,61.2274782292076,367.84746480115,58.6836052548274,53.1969639998461,142.407663514374,302.515395269367,267.990182032226,325.946371897651,259.643496389784],"Archive408_field7":[1003.70587271512,933.31620722758,237.09981521892,306.054836922135,616.532377034832,968.05444287123,587.051053045079,277.23869827798,654.951141774791,427.936900682737,812.364264622603,463.053682659864,601.30824677672,409.972205390538,258.327574147902,347.532847749223,330.606107825587,405.553290384966,473.79011699624,294.302953517926,528.010164353467,605.512887879434,563.363246218612,662.339318920091,763.69120892761,762.28706694833,740.088601116766,368.470963384642,478.845158088199,381.003681614752,829.487182468236,677.962768761232,985.056281642211,668.978757026301,635.713304786385,530.147932774662,950.496536159898,566.352152600834,513.400888413609,725.056734873123,885.164466628116,850.639253390975,908.595443256399,842.292567748533,1003.70587271512,933.31620722758,237.09981521892,306.054836922135,616.532377034832,968.05444287123,587.051053045079,277.238698277979,654.951141774791,427.936900682737,812.364264622603,463.053682659864,601.30824677672,409.972205390538,258.327574147902,347.532847749223,330.606107825587,405.553290384966,473.79011699624,294.302953517926,528.010164353467,605.512887879434,563.363246218612,662.339318920091,763.69120892761,762.28706694833,740.088601116765,368.470963384642,478.845158088199,381.003681614752,829.487182468236,677.962768761232,985.056281642211,668.978757026301,635.713304786385,530.147932774662,950.496536159898,566.352152600834,513.400888413609,725.056734873123,885.164466628116,850.639253390975,908.595443256399,842.292567748533,1003.70587271512,933.31620722758,237.09981521892,306.054836922135,616.532377034832,968.05444287123,587.051053045079,277.23869827798,654.951141774791,427.936900682737,812.364264622603,463.053682659864,601.30824677672,409.972205390538,258.327574147902,347.532847749223,330.606107825587,405.553290384966,473.79011699624,294.302953517926,528.010164353467,605.512887879434,563.363246218612,662.339318920091,763.69120892761,762.28706694833,740.088601116766,368.470963384642,478.845158088199,381.003681614752,829.487182468236,677.962768761232,985.056281642211,668.978757026301,635.713304786385,530.147932774662,950.496536159898,566.352152600834,513.400888413609,725.056734873123,885.164466628116,850.639253390975,908.595443256399,842.292567748533],"Archive408_field8":[648421947772.686],"Archive408_field9":[351578052227.314],"Archive408_field10":[1611.98568402181],"Archive408_field11":[2973.01483173769],"Archive408_field12":[9170],"Archive408_field13":[0,0,0,0,395.562112104207,0,0,202.266139878395,0,54.7753790530404,27.6758514015883,357.688662976184,10.607447862082,0,526.884027193767,285.750693237995,81.2134547922203,221.587818847819,133.852985752287,-276.246678270359,294.831220983053,218.710710522235,175.545764302919,100.21571499964,36.4677823087407,0,30.5169208185794,151.076291968206,0,230.957182729192,0,200.425940674582,0,0,-19.5984186189949,58.919927984901,0,0,250.673374658457,85.3966094705909,22.7779531677507,-3.93397049305971,44.8502655714581,31.5282076665774,0,0,0,0,395.562112104207,0,0,202.266139878395,0,54.7753790530405,27.6758514015883,357.688662976184,10.607447862082,0,526.884027193767,285.750693237995,81.2134547922203,221.587818847819,133.852985752287,-276.246678270359,294.831220983053,218.710710522235,175.545764302919,100.21571499964,36.4677823087407,0,30.5169208185794,151.076291968206,0,230.957182729192,0,200.425940674582,0,0,-19.5984186189949,58.919927984901,0,0,250.673374658457,85.3966094705909,22.7779531677507,-3.93397049305971,44.8502655714581,31.5282076665774,0,0,0,0,395.562112104207,0,0,202.266139878395,0,54.7753790530404,27.6758514015883,357.688662976184,10.607447862082,0,526.884027193767,285.750693237995,81.2134547922203,221.587818847819,133.852985752287,-276.246678270359,294.831220983053,218.710710522235,175.545764302919,100.21571499964,36.4677823087407,0,30.5169208185794,151.076291968206,0,230.957182729192,0,200.425940674582,0,0,-19.5984186189949,58.919927984901,0,0,250.673374658457,85.3966094705909,22.7779531677507,-3.93397049305971,44.8502655714581,31.5282076665774],"Archive408_field14":[0,0,0,0,2436.73313849606,0,0,3931.24622163804,0,2548.64970717346,336.555666386396,2437.28528292842,2108.61715491412,0,3561.12463244257,3546.02523919595,1583.65810970012,3407.45320324392,2914.77763351277,3527.9514205823,2274.26295004369,1350.42216598869,2310.73042880229,1154.27324724031,325.142281101829,0,570.912902598423,3352.14179964545,0,2019.71870074723,0,702.859304518035,0,0,1471.82184302053,1220.45045927832,0,0,1304.67846760801,531.484877935854,242.172124334674,279.260760605414,218.965405039976,229.921687720718,0,0,0,0,2436.73313849606,0,0,3931.24622163804,0,2548.64970717346,336.555666386396,2437.28528292842,2108.61715491412,0,3561.12463244257,3546.02523919596,1583.65810970012,3407.45320324392,2914.77763351277,3527.9514205823,2274.26295004369,1350.42216598869,2310.73042880229,1154.27324724031,325.142281101829,0,570.912902598423,3352.14179964545,0,2019.71870074723,0,702.859304518035,0,0,1471.82184302053,1220.45045927832,0,0,1304.67846760801,531.484877935854,242.172124334674,279.260760605414,218.965405039976,229.921687720718,0,0,0,0,2436.73313849606,0,0,3931.24622163804,0,2548.64970717346,336.555666386396,2437.28528292842,2108.61715491412,0,3561.12463244257,3546.02523919595,1583.65810970012,3407.45320324392,2914.77763351277,3527.9514205823,2274.26295004369,1350.42216598869,2310.73042880229,1154.27324724031,325.142281101829,0,570.912902598423,3352.14179964545,0,2019.71870074723,0,702.859304518035,0,0,1471.82184302053,1220.45045927832,0,0,1304.67846760801,531.484877935854,242.172124334674,279.260760605414,218.965405039976,229.921687720718],"Archive408_field15":[0,0,0,0,2468.6341678495,0,0,3936.44713912378,0,2549.24066913669,337.737057220226,2463.39370261861,2108.64624895643,0,3599.89216747067,3557.52108894603,1585.75240937857,3414.65199229145,2917.85082878492,3538.75200002051,2293.29654406288,1368.02910286333,2317.3913559271,1158.62559876631,327.214970881133,0,571.757491473826,3355.54546281574,0,2032.88908251954,0,730.890790756612,0,0,1471.96501744801,1221.88619333593,0,0,1328.55290289424,538.34522089261,243.335775515472,279.392129778233,223.677511472625,232.145826929182,0,0,0,0,2468.63893191859,0,0,3936.4473411876,0,2549.24157207438,337.741579939422,2463.39489912767,2108.64839061872,0,3599.89240735946,3557.52178240861,1585.75280815319,3414.65310938867,2917.8512206418,3538.7525158097,2293.29868130258,1368.03728571637,2317.39225359701,1158.63923588964,327.242476732324,0,571.778989925378,3355.54617727532,0,2032.89054865454,0,730.907669453863,0,0,1471.97279176341,1221.88317032339,0,0,1328.55919718831,538.361882947593,243.35247428225,279.408441927632,223.702067992021,232.163365562155,0,0,0,0,2468.6457423425,0,0,3936.44756236423,0,2549.24261807458,337.746317409758,2463.39643005705,2108.65120675064,0,3599.89267017843,3557.52264425722,1585.75321283325,3414.65454747268,2917.85166071331,3538.75309869963,2293.30146701502,1368.04778000179,2317.39329203868,1158.65861940755,327.278076800446,0,571.806325725644,3355.54708423228,0,2032.89213586777,0,730.931333413332,0,0,1471.98241406728,1221.88050537347,0,0,1328.56688872709,538.381240842169,243.370525963413,279.42594466585,223.728315436684,232.182800068085],"Archive408_field16":[9029107.17859445,8395897.93749165,2132895.40475191,2753198.92033904,5546183.46135863,8708395.11554773,5280976.25145133,2493975.5648081,5891789.83264342,3849621.93305475,7307842.08076407,4165524.42686112,5409230.68710662,3688015.66608604,2323855.44169247,3126325.56579702,2974056.50659418,3648264.12304636,4262106.92077126,2647481.68016796,4749857.99618599,5447054.67139918,5067886.189436,5958252.17496179,6869990.46653472,6857359.12824178,6657666.83526817,3314680.03828666,4307580.90777508,3427421.48895954,7461875.91143228,6098797.13633923,8861339.74670855,6017979.03309449,5718730.67579822,4769088.86921632,8550448.22509113,5094773.703802,4618436.30996449,6522443.62386959,7962735.95395921,7652155.07647693,8173515.63058262,7577070.21217522,4514553.58929723,4197948.96874582,1066447.70237595,1376599.46016952,2773091.73067931,4354197.55777386,2640488.12572567,1246987.78240405,2945894.91632171,1924810.96652737,3653921.04038204,2082762.21343056,2704615.34355331,1844007.83304302,1161927.72084624,1563162.78289851,1487028.25329709,1824132.06152318,2131053.46038563,1323740.84008398,2374928.99809299,2723527.33569959,2533943.094718,2979126.08748089,3434995.23326736,3428679.56412089,3328833.41763408,1657340.01914333,2153790.45388754,1713710.74447977,3730937.95571614,3049398.56816961,4430669.87335427,3008989.51654725,2859365.33789911,2384544.43460816,4275224.11254556,2547386.851901,2309218.15498225,3261221.8119348,3981367.9769796,3826077.53823847,4086757.81529131,3788535.10608761,0,0,9.58781853910296e-11,2.23715765912402e-10,0,0,0,-6.39187902606864e-11,0,6.39187902606864e-11,0,-6.39187902606864e-11,0,-6.39187902606864e-11,3.19593951303432e-11,0,1.27837580521373e-10,0,0,1.91756370782059e-10,0,0,0,0,0,0,0,-1.27837580521373e-10,2.55675161042745e-10,-2.55675161042745e-10,0,0,0,0,0,0,0,1.27837580521373e-10,-1.91756370782059e-10,0,0,0,0,0],"Archive408_field17":[-582.649071358749,-582.649071358749,-218.766966487408,-279.792221770083,-582.649071358749,-582.649071358749,-582.649071358749,-258.631011833415,-582.649071358749,-388.460557455472,-582.649071358749,-419.747855085138,-582.649071358749,-371.872494543324,-240.807306455723,-315.309517056904,-300.36119138459,-367.897330970419,-430.236989961216,-273.462653879057,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-333.354361493615,-432.708220487569,-345.638435757403,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545455,-582.649071358749,-511.14211971336,-463.274248828678,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-218.766966487408,-279.792221770083,-582.649071358749,-582.649071358749,-582.649071358749,-258.631011833415,-582.649071358749,-388.460557455472,-582.649071358749,-419.747855085139,-582.649071358749,-371.872494543324,-240.807306455723,-315.309517056904,-300.36119138459,-367.89733097042,-430.236989961216,-273.462653879057,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-333.354361493614,-432.708220487569,-345.638435757403,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545454,-582.649071358749,-511.14211971336,-463.274248828678,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-218.766966487408,-279.792221770083,-582.649071358749,-582.649071358749,-582.649071358749,-258.631011833415,-582.649071358749,-388.460557455472,-582.649071358749,-419.747855085138,-582.649071358749,-371.872494543324,-240.807306455723,-315.309517056904,-300.36119138459,-367.897330970419,-430.236989961216,-273.462653879057,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-333.354361493615,-432.708220487569,-345.638435757403,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545455,-582.649071358749,-511.14211971336,-463.274248828678,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749],"Archive408_field18":[424.781908978499,354.026063334066,25.2882207717179,32.3423942286029,35.6770076364667,388.484388307399,11.0058130792742,29.896278358061,77.3117108656085,44.9038376120829,234.542790828088,48.5204717982821,22.3322803067764,42.9863516047899,27.835959088666,36.4479921570685,34.7200504762993,42.5268452375839,49.7329563095844,31.6107320732607,61.7899116652953,66.6135408150536,67.806730798124,80.1875524691732,182.47994518928,186.798885759715,158.852111194857,38.5338738476806,50.0186165449098,39.9538431737019,251.298063012012,96.0230377242721,405.012412850132,87.9916185886436,56.083392421139,67.8487290414652,370.880616883965,59.0851305230274,53.5518760914285,145.310607863999,307.257022497942,272.17753191914,330.795527140551,263.747796187548,424.781908978499,354.026063334066,25.2882207717179,32.3423942286029,35.6770076364667,388.484388307399,11.0058130792742,29.896278358061,77.3117108656085,44.9038376120828,234.542790828088,48.5204717982821,22.3322803067764,42.9863516047899,27.835959088666,36.4479921570685,34.7200504762993,42.5268452375839,49.7329563095844,31.6107320732607,61.7899116652953,66.6135408150536,67.806730798124,80.1875524691732,182.47994518928,186.798885759715,158.852111194857,38.5338738476806,50.0186165449098,39.9538431737019,251.298063012012,96.023037724272,405.012412850132,87.9916185886436,56.083392421139,67.8487290414652,370.880616883965,59.0851305230274,53.5518760914285,145.310607863999,307.257022497942,272.17753191914,330.795527140551,263.747796187548,424.781908978499,354.026063334066,25.2882207717179,32.3423942286029,35.6770076364667,388.484388307399,11.0058130792742,29.896278358061,77.3117108656085,44.9038376120829,234.542790828088,48.5204717982821,22.3322803067764,42.9863516047899,27.835959088666,36.4479921570685,34.7200504762993,42.5268452375839,49.7329563095844,31.6107320732607,61.7899116652953,66.6135408150536,67.806730798124,80.1875524691732,182.47994518928,186.798885759715,158.852111194857,38.5338738476806,50.0186165449098,39.9538431737019,251.298063012012,96.0230377242721,405.012412850132,87.9916185886436,56.083392421139,67.8487290414652,370.880616883965,59.0851305230274,53.5518760914285,145.310607863999,307.257022497942,272.17753191914,330.795527140551,263.747796187548],"Archive408_field19":[1007.43098033725,936.675134692815,244.055187259126,312.134615998686,618.326078995215,971.133459666147,593.654884438023,288.527290191476,659.960782224357,433.364395067554,817.191862186836,468.268326883421,604.981351665525,414.858846148114,268.643265544389,351.757509213972,335.081241860889,410.424176208003,479.9699462708,305.073385952318,531.690785321209,607.65607617368,568.251430587582,662.836623827922,765.129016548029,769.447957118464,741.501182553606,371.888235341295,482.726837032479,385.592278931104,833.947134370761,678.672109083021,987.661484208881,670.640689947392,638.732463779888,536.76918358692,953.529688242714,570.227250236387,516.826124920107,727.959679222748,889.90609385669,854.826603277888,913.4445984993,846.396867546296,1007.43098033725,936.675134692815,244.055187259126,312.134615998686,618.326078995216,971.133459666147,593.654884438023,288.527290191476,659.960782224357,433.364395067554,817.191862186836,468.268326883421,604.981351665525,414.858846148114,268.643265544389,351.757509213972,335.081241860889,410.424176208003,479.9699462708,305.073385952318,531.690785321209,607.65607617368,568.251430587582,662.836623827922,765.129016548029,769.447957118464,741.501182553606,371.888235341295,482.726837032479,385.592278931104,833.947134370761,678.672109083021,987.66148420888,670.640689947392,638.732463779888,536.76918358692,953.529688242714,570.227250236387,516.826124920107,727.959679222748,889.90609385669,854.826603277888,913.4445984993,846.396867546296,1007.43098033725,936.675134692815,244.055187259126,312.134615998686,618.326078995215,971.133459666147,593.654884438023,288.527290191476,659.960782224357,433.364395067554,817.191862186836,468.268326883421,604.981351665525,414.858846148114,268.643265544389,351.757509213972,335.081241860889,410.424176208003,479.9699462708,305.073385952318,531.690785321209,607.65607617368,568.251430587582,662.836623827922,765.129016548029,769.447957118464,741.501182553606,371.888235341295,482.726837032479,385.592278931104,833.947134370761,678.672109083021,987.661484208881,670.640689947392,638.732463779888,536.76918358692,953.529688242714,570.227250236387,516.826124920107,727.959679222748,889.90609385669,854.826603277888,913.4445984993,846.396867546296],"Archive408_field20":[648421947772.686],"Archive408_field21":[351578052227.314],"Archive408_field22":[1611.98566766511],"Archive408_field23":[2973.01482559436],"Archive408_field24":[9170],"Archive408_field25":[0,0,0,0,372.637803686975,0,0,144.393359622117,0,-36.7305779970619,28.9660649204324,336.484628863911,-27.1693875479381,0,472.806420723071,209.806171679922,50.2738256051148,168.162440154251,58.5136367238938,-290.977973077722,244.875285041751,188.027720630017,126.820470888181,93.2348049450181,37.7995550436683,0,27.4715695223542,118.415986213244,0,218.572776380759,0,193.562719491514,0,0,-39.5839854625107,5.25780439545807,0,0,235.587591470063,88.9001147250395,23.2743583636615,-6.43244685733102,44.7409255828546,31.6969664655134,0,0,0,0,372.637803686975,0,0,144.393359622117,0,-36.7305779970619,28.9660649204324,336.484628863911,-27.1693875479381,0,472.806420723071,209.806171679922,50.2738256051148,168.162440154251,58.5136367238939,-290.977973077722,244.875285041751,188.027720630016,126.820470888181,93.2348049450181,37.7995550436683,0,27.4715695223542,118.415986213244,0,218.572776380759,0,193.562719491514,0,0,-39.5839854625107,5.25780439545807,0,0,235.587591470063,88.9001147250395,23.2743583636615,-6.43244685733102,44.7409255828546,31.6969664655134,0,0,0,0,372.637803686975,0,0,144.393359622117,0,-36.7305779970619,28.9660649204324,336.484628863911,-27.1693875479381,0,472.806420723071,209.806171679922,50.2738256051148,168.162440154251,58.5136367238938,-290.977973077722,244.875285041751,188.027720630017,126.820470888181,93.2348049450181,37.7995550436683,0,27.4715695223542,118.415986213244,0,218.572776380759,0,193.562719491514,0,0,-39.5839854625107,5.25780439545807,0,0,235.587591470063,88.9001147250395,23.2743583636615,-6.43244685733102,44.7409255828546,31.6969664655134],"Archive408_field26":[0,0,0,0,2251.63747028623,0,0,3856.61235732896,0,2565.3641825811,332.316453328651,2363.03773129415,2033.53762703297,0,3521.54180038887,3487.97485887896,1570.56560098503,3311.5707838091,2826.83580288015,3472.36163159435,2048.66466948994,1269.07905090064,2197.72730415423,1092.26108810512,331.458897757644,0,565.913329103501,3276.75764358504,0,1970.25497257207,0,666.452055782389,0,0,1393.94268406799,1218.89753029821,0,0,1266.67272236744,518.348304558105,238.917157481005,273.785741798112,214.475481905495,231.020607247243,0,0,0,0,2251.63747028623,0,0,3856.61235732896,0,2565.3641825811,332.316453328651,2363.03773129415,2033.53762703297,0,3521.54180038887,3487.97485887896,1570.56560098503,3311.5707838091,2826.83580288015,3472.36163159435,2048.66466948994,1269.07905090064,2197.72730415424,1092.26108810512,331.458897757644,0,565.913329103501,3276.75764358504,0,1970.25497257207,0,666.452055782389,0,0,1393.94268406799,1218.89753029821,0,0,1266.67272236744,518.348304558105,238.917157481005,273.785741798112,214.475481905495,231.020607247243,0,0,0,0,2251.63747028623,0,0,3856.61235732896,0,2565.3641825811,332.316453328651,2363.03773129415,2033.53762703297,0,3521.54180038887,3487.97485887896,1570.56560098503,3311.5707838091,2826.83580288015,3472.36163159435,2048.66466948994,1269.07905090064,2197.72730415423,1092.26108810512,331.458897757644,0,565.913329103501,3276.75764358504,0,1970.25497257207,0,666.452055782389,0,0,1393.94268406799,1218.89753029821,0,0,1266.67272236744,518.348304558105,238.917157481005,273.785741798112,214.475481905495,231.020607247243],"Archive408_field27":[0,0,0,0,2282.26816681817,0,0,3859.31567994112,0,2565.62956193198,333.622481349892,2386.87607469629,2033.72170363178,0,3553.1410946664,3494.28039679562,1571.38347049608,3315.83925225066,2827.44288952314,3484.53403672121,2063.25080266466,1282.94424113099,2201.38616756777,1096.24369735933,333.640415141188,0,566.609491190612,3278.89770992007,0,1982.35022585497,0,694.005986717801,0,0,1394.51805311529,1218.92345088031,0,0,1288.40658895969,525.961002724513,240.144202455954,273.967015728876,219.261708800038,233.257255394027,0,0,0,0,2282.27281825743,0,0,3859.31592061822,0,2565.63054794224,333.627372935927,2386.87748684648,2033.72396279094,0,3553.14135929273,3494.28105952248,1571.38408430625,3315.84052957854,2827.44344588564,3484.53463779992,2063.25336314243,1282.95238227733,2201.38730463196,1096.25662446016,333.66472237031,0,566.629730752769,3278.8984258235,0,1982.35166877697,0,694.021220344848,0,0,1394.52632708774,1218.92146957938,0,0,1288.41310156362,525.977128378886,240.162154357413,273.984118476068,219.28644234595,233.274881758515,0,0,0,0,2282.27927576845,0,0,3859.31618341182,0,2565.63170083004,333.632511489683,2386.8793205916,2033.72692573595,0,3553.14164881712,3494.28186935326,1571.3847118189,3315.84218778553,2827.44408718277,3484.53531757446,2063.25667781219,1282.9626694729,2201.38863504912,1096.27463896916,333.695670106088,0,566.655189825812,3278.89932065028,0,1982.35322475358,0,694.041997303358,0,0,1394.53657541074,1218.91963289655,0,0,1288.42104581045,525.995743094433,240.181641775282,274.002501951066,219.312859155035,233.294427495773],"Archive408_field28":[9062617.3899884,8426114.07641558,2195464.33189003,2807891.2145625,5562319.19164279,8736093.24246094,5340382.79978103,2595525.14128577,5936855.40591041,3898446.42421685,7351270.03810448,4212434.16692807,5442273.09387218,3731974.76241382,2416653.02888625,3164329.64866177,3014313.78309493,3692081.49160667,4317699.24356448,2744370.01314828,4782968.01586898,5466334.30036091,5111859.17173685,5962725.81553251,6882924.65319226,6921776.84920756,6670374.09298025,3345421.03083616,4342499.59877166,3468699.45504006,7501996.61295846,6105178.19872577,8884775.54980172,6032929.39940805,5745890.3356972,4828652.11863571,8577733.76360316,5129633.19085898,4649248.94977255,6548557.84356162,8005390.5419332,7689823.51296913,8217137.51584205,7613991.54916695,4531308.6949942,4213057.03820779,1097732.16594502,1403945.60728125,2781159.5958214,4368046.62123047,2670191.39989052,1297762.57064289,2968427.7029552,1949223.21210843,3675635.01905224,2106217.08346403,2721136.54693609,1865987.38120691,1208326.51444313,1582164.82433089,1507156.89154746,1846040.74580334,2158849.62178224,1372185.00657414,2391484.00793449,2733167.15018045,2555929.58586843,2981362.90776625,3441462.32659613,3460888.42460378,3335187.04649012,1672710.51541808,2171249.79938583,1734349.72752003,3750998.30647923,3052589.09936288,4442387.77490086,3016464.69970403,2872945.1678486,2414326.05931785,4288866.88180158,2564816.59542949,2324624.47488627,3274278.92178081,4002695.2709666,3844911.75648456,4108568.75792102,3806995.77458347,0,0,-9.58781853910296e-11,-6.39187902606864e-11,0,0,0,-2.23715765912402e-10,0,1.91756370782059e-10,0,-1.91756370782059e-10,0,0,0,0,1.91756370782059e-10,1.27837580521373e-10,-6.39187902606864e-11,-1.27837580521373e-10,0,0,0,0,0,0,0,6.39187902606864e-11,-1.27837580521373e-10,-6.39187902606864e-11,0,0,0,0,0,0,0,-2.55675161042745e-10,-1.27837580521373e-10,0,0,0,0,0],"Archive408_field29":[-582.649071358749,-582.649071358749,-224.872387135333,-285.236689205292,-582.649071358749,-582.649071358749,-582.649071358749,-268.053710946698,-582.649071358749,-393.24479228689,-582.649071358749,-424.054115435386,-582.649071358749,-376.163540957191,-249.65768590056,-319.434400400009,-304.43489783825,-372.08935195245,-435.381502885216,-282.360955349301,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-336.803750810584,-436.20784077487,-349.841872932032,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545455,-582.649071358749,-514.595467872161,-466.323779112656,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-224.872387135333,-285.236689205292,-582.649071358749,-582.649071358749,-582.649071358749,-268.053710946698,-582.649071358749,-393.24479228689,-582.649071358749,-424.054115435386,-582.649071358749,-376.163540957191,-249.65768590056,-319.434400400009,-304.43489783825,-372.08935195245,-435.381502885216,-282.360955349301,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-336.803750810585,-436.20784077487,-349.841872932032,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545454,-582.649071358749,-514.595467872161,-466.323779112656,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-224.872387135333,-285.236689205292,-582.649071358749,-582.649071358749,-582.649071358749,-268.053710946698,-582.649071358749,-393.24479228689,-582.649071358749,-424.054115435386,-582.649071358749,-376.163540957191,-249.65768590056,-319.434400400009,-304.43489783825,-372.08935195245,-435.381502885216,-282.360955349301,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-336.803750810584,-436.20784077487,-349.841872932032,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545455,-582.649071358749,-514.595467872161,-466.323779112656,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749],"Archive408_field30":[428.528401369177,357.447380108685,25.9939727768215,32.9717437903609,37.8172592784995,391.593154432885,17.2183422823981,30.9854889425846,82.4090072506606,45.4568680288009,239.323988622901,49.01825107541,25.8846326690325,43.4823722371453,28.8590127649502,36.924805280699,35.1909478417171,43.0114190915591,50.3276328307883,32.6393252639323,65.2363528391086,68.9619815002586,72.4020524136456,81.129886219429,184.234922101429,193.801390452437,160.50406394889,38.9326036923904,50.4231528049468,40.4397366748041,255.728567000763,97.303598436093,407.682256188325,89.9042981262592,59.0302968299573,74.0197751148916,373.941556687206,59.4843179874036,53.904384499391,148.330579348746,311.9020859196,276.336093659965,335.642407517195,267.827235719238,428.528401369177,357.447380108685,25.9939727768215,32.9717437903609,37.8172592784995,391.593154432885,17.2183422823981,30.9854889425845,82.4090072506606,45.4568680288009,239.323988622901,49.0182510754099,25.8846326690325,43.4823722371453,28.8590127649502,36.924805280699,35.1909478417171,43.0114190915591,50.3276328307884,32.6393252639323,65.2363528391086,68.9619815002586,72.4020524136456,81.129886219429,184.234922101429,193.801390452437,160.50406394889,38.9326036923904,50.4231528049468,40.4397366748041,255.728567000763,97.303598436093,407.682256188325,89.9042981262592,59.0302968299572,74.0197751148916,373.941556687206,59.4843179874036,53.904384499391,148.330579348746,311.9020859196,276.336093659965,335.642407517195,267.827235719238,428.528401369177,357.447380108685,25.9939727768215,32.9717437903609,37.8172592784995,391.593154432885,17.2183422823981,30.9854889425846,82.4090072506606,45.4568680288009,239.323988622901,49.01825107541,25.8846326690325,43.4823722371453,28.8590127649502,36.924805280699,35.1909478417171,43.0114190915591,50.3276328307883,32.6393252639323,65.2363528391086,68.9619815002586,72.4020524136456,81.129886219429,184.234922101429,193.801390452437,160.50406394889,38.9326036923904,50.4231528049468,40.4397366748041,255.728567000763,97.303598436093,407.682256188325,89.9042981262592,59.0302968299573,74.0197751148916,373.941556687206,59.4843179874036,53.904384499391,148.330579348746,311.9020859196,276.336093659965,335.642407517195,267.827235719238],"Archive408_field31":[1011.17747272793,940.096451467434,250.866359912155,318.208432995653,620.466330637248,974.242225791634,599.867413641147,299.039199889283,665.058078609409,438.701660315691,821.97305998165,473.072366510796,608.533704027781,419.645913194336,278.51669866551,356.359205680708,339.625845679968,415.100771044009,485.709135716004,315.000280613233,535.137226495023,610.004516858885,572.846752203104,663.778957578178,766.883993460178,776.450461811186,743.153135307639,375.736354502975,486.630993579817,390.281609606836,838.377638359512,679.952669794842,990.331327547074,672.553369485008,641.679368188706,542.940229660346,956.590628045955,574.079785859565,520.228163612047,730.979650707495,894.551157278348,858.985165018714,918.291478875944,850.476307077987,1011.17747272793,940.096451467434,250.866359912155,318.208432995653,620.466330637248,974.242225791634,599.867413641147,299.039199889283,665.058078609409,438.701660315691,821.97305998165,473.072366510796,608.533704027781,419.645913194336,278.51669866551,356.359205680708,339.625845679968,415.100771044009,485.709135716005,315.000280613233,535.137226495023,610.004516858885,572.846752203104,663.778957578178,766.883993460178,776.450461811186,743.153135307639,375.736354502975,486.630993579817,390.281609606836,838.377638359512,679.952669794842,990.331327547074,672.553369485008,641.679368188706,542.940229660346,956.590628045955,574.079785859565,520.228163612047,730.979650707495,894.551157278348,858.985165018714,918.291478875944,850.476307077987,1011.17747272793,940.096451467434,250.866359912155,318.208432995653,620.466330637248,974.242225791634,599.867413641147,299.039199889283,665.058078609409,438.701660315691,821.97305998165,473.072366510796,608.533704027781,419.645913194336,278.51669866551,356.359205680708,339.625845679968,415.100771044009,485.709135716004,315.000280613233,535.137226495023,610.004516858885,572.846752203104,663.778957578178,766.883993460178,776.450461811186,743.153135307639,375.736354502975,486.630993579817,390.281609606836,838.377638359512,679.952669794842,990.331327547074,672.553369485008,641.679368188706,542.940229660346,956.590628045955,574.079785859565,520.228163612047,730.979650707495,894.551157278348,858.985165018714,918.291478875944,850.476307077987],"Archive408_field32":[648421947772.686],"Archive408_field33":[351578052227.314],"Archive408_field34":[1611.98565325068],"Archive408_field35":[2973.01482003103],"Archive408_field36":[9170]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive409.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive409.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive409.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive409_field1":[0,0,0,0,467.964283777794,0,0,443.19455078149,0,420.974456284401,48.9909695505058,604.789684978928,496.799553302461,12.1877660740533,0,0,36.9372541541621,360.577682953443,11.377441587827,0,405.731372847122,0,634.150766136304,524.15784667005,0,0,-11.012020868372,0,0,0,0,467.964283575247,0,0,443.194550669124,0,420.974456284401,49.0062834033338,604.788787974594,496.799553302461,12.1877659110061,0,0,36.9556568424985,360.599544786869,11.377441587827,0,405.729636676814,0,634.150766136304,524.157846548674,0,0,-11.0107696032007,0,0,0,0,467.964283650269,0,0,443.194550716175,0,420.974456284401,49.0108851587395,604.788463618904,496.799553302461,12.1877659838013,0,0,36.961979467386,360.605663301568,11.377441587827,0,405.729149153153,0,634.150766136304,524.157846601426,0,0,-11.0104514884697],"Archive409_field2":[0,0,0,0,2652.75319814909,0,0,4178.86388235315,0,2470.31151190807,401.514952616762,2656.71745177219,2618.57162805652,280.823929629323,0,0,360.812516752009,1555.10045561454,707.429630458732,0,1338.40568370319,0,3366.15426622899,3032.34316987485,0,0,3402.26001111846,0,0,0,0,2652.75319835023,0,0,4178.863882416,0,2470.31151190807,401.630306307921,2656.71225046893,2618.57162805652,280.823930258404,0,0,360.952748578355,1555.19354930212,707.429630458732,0,1338.39172335393,0,3366.15426622899,3032.34316994554,0,0,3402.26620183458,0,0,0,0,2652.75319814493,0,0,4178.86388238359,0,2470.31151190807,401.667185007776,2656.71087447753,2618.57162805652,280.823929911143,0,0,360.997494655329,1555.22081257515,707.429630458732,0,1338.3878441266,0,3366.15426622899,3032.34316992033,0,0,3402.2678419897],"Archive409_field3":[0,0,0,0,2.20791016835916,0,0,-2.00751950773289,0,-4.92541662726358,0.00291716679310638,2.02469285102457,1.67604464650209,-0.558076747051922,0,0,-0.303682592473576,0.280112373673775,-0.183430783545312,0,0.0350421078711315,0,-3.43276052796155,-3.46243917126953,0,0,-5.19472417166658,0,0,0,0,0.278528290912092,0,0,-3.18602675614458,0,-4.36091237717464,-0.979801397061823,1.41993627876293,0.355530001989154,-3.27341875582543,0,0,-2.48363836545113,-2.5661763903975,-1.90418482719148,0,-1.6574237342367,0,-4.2131015099448,-3.78971577543062,0,0,-5.85577294721654,0,0,0,0,-1.65078341032083,0,0,-4.36452872986184,0,-3.79641369072473,-1.9626513175498,0.815178296998518,-0.964999980717171,-5.98875977044459,0,0,-4.66357950301492,-5.41233571843452,-3.62493642098961,0,-3.34986817600059,0,-4.99344102878214,-4.11700944634064,0,0,-6.51683275797817],"Archive409_field4":[0,0,0,0,2693.7139744318,0,0,4202.30041610695,0,2505.9295118655,404.492734521708,2724.6875565813,2665.28234462125,281.088833901289,0,0,362.69839427889,1596.35640474161,707.521138818421,0,1398.55200915425,0,3425.36910742298,3077.31352588543,0,0,3402.28179800243,0,0,0,0,2693.71308413451,0,0,4202.30114440532,0,2505.92846591164,404.610280107637,2724.68190364866,2665.28184134918,281.107340199486,0,0,362.848144184947,1596.45406847572,707.523677446853,0,1398.53912718724,0,3425.36997833332,3077.31391157282,0,0,3402.28905815922,0,0,0,0,2693.71357536883,0,0,4202.30220312457,0,2505.92754713028,404.651018009727,2724.68024193837,2665.28199233197,281.152070051072,0,0,362.914766918284,1596.48912105595,707.530401037382,0,1398.53830315626,0,3425.37102701243,3077.31433202445,0,0,3402.29189926267],"Archive409_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,2136495.375,2570400.71859375,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive409_field6":[-582.649071358749,-582.649071358749,-211.020563060866,-272.176692054147,-582.649071358749,-582.649071358749,-582.649071358749,-244.726494287179,-582.649071358749,-383.930711507119,-582.649071358749,-410.095307917889,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-427.660069480203,-512.254979227762,-368.266533614781,-232.042080628194,-398.951371697935,-582.649071358749,-582.649071358749,-262.687516361888,-582.649071358749,-582.649071358749,-211.020563060866,-272.176692054147,-582.649071358749,-582.649071358749,-582.649071358749,-244.726494287179,-582.649071358749,-383.930711507119,-582.649071358749,-410.095307917889,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-427.660069480203,-512.254979227762,-368.266533614781,-232.042080628194,-398.951371697935,-582.649071358749,-582.649071358749,-262.687516361888,-582.649071358749,-582.649071358749,-211.020563060866,-272.176692054147,-582.649071358749,-582.649071358749,-582.649071358749,-244.726494287179,-582.649071358749,-383.930711507119,-582.649071358749,-410.095307917889,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-427.660069480203,-512.254979227762,-368.266533614781,-232.042080628194,-398.951371697935,-582.649071358749,-582.649071358749,-262.687516361888],"Archive409_field7":[426.681475924372,357.90147158581,24.39278046287,31.4620821785601,40.7368399126097,393.567218517276,9.73332632937036,28.2889949775801,75.2879110137654,44.3802131076932,233.490654429479,58.1339092465197,23.5923848980646,202.498374451172,181.528182081988,374.572589311396,173.022815351461,74.2058301835638,148.244511448369,49.4350789148326,68.163152530436,42.5695229696475,26.8227486876647,46.1165162486163,253.523673023887,407.213895555004,30.3651872784734,426.681475924372,357.90147158581,24.39278046287,31.4620821785601,40.7368399126097,393.567218517276,9.73332632937036,28.2889949775801,75.2879110137654,44.3802131076932,233.490654429479,58.1339092465198,23.5923848980645,202.498374451172,181.528182081988,374.572589311396,173.022815351461,74.2058301835638,148.244511448369,49.4350789148326,68.163152530436,42.5695229696475,26.8227486876647,46.1165162486163,253.523673023887,407.213895555004,30.3651872784734,426.681475924372,357.90147158581,24.39278046287,31.4620821785601,40.7368399126097,393.567218517276,9.73332632937036,28.2889949775801,75.2879110137654,44.3802131076932,233.490654429479,58.1339092465197,23.5923848980646,202.498374451172,181.528182081988,374.572589311396,173.022815351461,74.2058301835638,148.244511448369,49.4350789148326,68.163152530436,42.5695229696475,26.8227486876647,46.1165162486163,253.523673023887,407.213895555004,30.3651872784734],"Archive409_field8":[1009.33054728312,940.550542944559,235.413343523735,303.638774232707,623.385911271359,976.216289876025,592.382397688119,273.015489264759,657.936982372514,428.310924614812,816.139725788228,468.229217164408,606.241456256813,785.147445809921,764.177253440736,957.221660670145,755.67188671021,656.854901542313,730.893582807118,477.095148395035,580.418131758198,410.836056584428,258.864829315859,445.067887946551,836.172744382636,989.862966913753,293.052703640362,1009.33054728312,940.550542944559,235.413343523735,303.638774232707,623.385911271359,976.216289876025,592.382397688119,273.015489264759,657.936982372514,428.310924614812,816.139725788228,468.229217164408,606.241456256813,785.147445809921,764.177253440736,957.221660670145,755.67188671021,656.854901542313,730.893582807118,477.095148395035,580.418131758198,410.836056584428,258.864829315859,445.067887946551,836.172744382636,989.862966913753,293.052703640362,1009.33054728312,940.550542944559,235.413343523735,303.638774232707,623.385911271359,976.216289876025,592.382397688119,273.015489264759,657.936982372514,428.310924614812,816.139725788228,468.229217164408,606.241456256813,785.147445809921,764.177253440736,957.221660670145,755.67188671021,656.854901542313,730.893582807118,477.095148395035,580.418131758198,410.836056584428,258.864829315859,445.067887946551,836.172744382636,989.862966913753,293.052703640362],"Archive409_field9":[254.4980442733,252.348895759452,272.798357552349,272.738467884297,272.040203620897,254.172125331463,272.203796728002,272.758724138021,271.310192293522,272.691496749764,252.004645829552,272.456697309435,272.069723823661,247.594294139104,251.440627957629,255.815083177698,252.987082626187,241.434762490162,247.519873496881,272.722202246333,272.326059903147,272.623009487745,272.770235583156,272.644104455326,248.925760167882,252.824205888496,272.810886754218,252.629005735858,253.157662198293,247.994669843363,248.175834041839,248.333512796493,252.716832729028,248.234156868821,247.865389529809,248.44896567294,248.198612751095,253.24486282636,248.294813095268,248.327288448807,254.320933924341,253.38843625473,252.307710820842,252.989970167406,255.906346155175,254.350398234125,248.079142138399,248.182880155226,248.033711911734,247.681393663507,248.062067660371,254.013660182095,253.042634779322,247.526906870704,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive409_field10":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive409_field11":[701367187500],"Archive409_field12":[0,0,0,0,461.286106784265,0,0,267.836666888462,0,307.098659269659,51.2819814299571,392.371578537583,447.34358850261,11.6615642027267,0,0,44.4675193860529,289.420021302552,-2.45469337179882,0,182.755840191091,0,486.352242632653,432.915088389767,0,0,-154.73699668809,0,0,0,0,461.286106636706,0,0,267.836666767844,0,307.098659269659,51.2974868100773,392.372572461443,447.34358850261,11.661564055972,0,0,44.4870124007903,289.438044056897,-2.45469337179882,0,182.757346718062,0,486.352242632653,432.91508825516,0,0,-154.736573397634,0,0,0,0,461.286106684514,0,0,267.836666812282,0,307.098659269659,51.3021839624366,392.372745129237,447.34358850261,11.661564120247,0,0,44.4936930697898,289.443191611959,-2.45469337179882,0,182.757837092903,0,486.352242632653,432.915088302692,0,0,-154.736529978136],"Archive409_field13":[0,0,0,0,2355.34255205015,0,0,3977.81330205315,0,2494.57963691911,399.335881215835,1756.17296589998,2491.66533059765,275.48216259163,0,0,367.005363552333,1092.644615529,645.887010067194,0,736.648313635513,0,3319.85981087757,2757.73610461692,0,0,2941.18335652798,0,0,0,0,2355.34255228358,0,0,3977.8133020932,0,2494.57963691911,399.449080662371,1756.17635608747,2491.66533059765,275.482163272375,0,0,367.140130726104,1092.70855256798,645.887010067194,0,736.6519906205,0,3319.85981087757,2757.73610460605,0,0,2941.18640550195,0,0,0,0,2355.34255205828,0,0,3977.81330206644,0,2494.57963691911,399.485450247466,1756.17713728057,2491.66533059765,275.48216289564,0,0,367.183417381283,1092.72771814935,645.887010067194,0,736.652947348986,0,3319.85981087757,2757.7361046098,0,0,2941.18692602743],"Archive409_field14":[0,0,0,0,2.00192590132463,0,0,-2.18679324416086,0,-4.99758007900172,0.00599647201045061,1.29021130708046,1.51698849390415,-0.506341066826322,0,0,-0.270688281077306,0.222099952289605,-0.165776023601365,0,-1.6086241799816,0,-3.52900153831155,-3.69313070168546,0,0,-5.60825150954291,0,0,0,0,0.260637591687346,0,0,-3.45381498388493,0,-4.57371340412629,-0.772915840992259,0.510799617965596,0.134598721153543,-2.97307037830295,0,0,-2.14569445862367,-1.62636530841014,-1.83946825782128,0,-2.6117039662457,0,-4.26061608206498,-4.15538700164644,0,0,-6.66824358635677,0,0,0,0,-1.48058959266811,0,0,-4.72083076033163,0,-4.1498518234276,-1.55194599597706,-0.268617936118722,-1.24780448056334,-5.43979803119048,0,0,-4.02067512054824,-3.47470486807647,-3.51315849492307,0,-3.61479054761429,0,-4.9922295695494,-4.61765726405554,0,0,-7.72823554458484],"Archive409_field15":[0,0,0,0,2400.08904366434,0,0,3986.82077954172,0,2513.41642535879,402.615185607508,1799.47231333167,2531.50443553448,275.729342593587,0,0,369.689559534314,1130.32572911691,645.891695855256,0,758.98156945854,0,3355.29732239123,2791.51169363082,0,0,2945.25627532584,0,0,0,0,2400.08822310883,0,0,3986.82167587326,0,2513.41561829933,402.730179641333,1799.47544862855,2531.50398458969,275.744906580218,0,0,369.831818353476,1130.39329760345,645.894293934046,0,758.988289805698,0,3355.29817164485,2791.51234343104,0,0,2945.26150698522,0,0,0,0,2400.08866542511,0,0,3986.82297480448,0,2513.41488272965,402.769099578295,1799.47619622568,2531.50428853926,275.782533083607,0,0,369.89122259282,1130.41731265773,645.901228962834,0,758.993450938496,0,3355.2991804234,2791.51306984352,0,0,2945.26461513545],"Archive409_field16":[9079705.45733308,8460976.35770438,2117724.29327051,2731464.57607936,5607836.27903755,8781817.21397805,5328935.80165085,2455984.54786324,5918649.76791719,3852986.56632219,7341805.26105397,4212082.34489107,5453608.70495135,7063005.83859351,6874362.81118457,8610945.89840667,6797850.48831111,5908915.61764729,6574950.56540879,4291838.22307761,5221308.01712644,3695786.6727405,2328688.46561472,4003728.35435295,7522017.68873499,8904579.58187373,2636234.71982686,4539852.72866654,4230488.17885219,1058862.14663526,1365732.28803968,2803918.13951877,4390908.60698903,2664467.90082543,1227992.27393162,2959324.8839586,1926493.2831611,3670902.63052698,2106041.17244554,2726804.35247568,3531502.91929676,3437181.40559229,4305472.94920333,3398925.24415555,2954457.80882364,3287475.28270439,2145919.1115388,2610654.00856322,1847893.33637025,1164344.23280736,2001864.17717647,3761008.84436749,4452289.79093686,1318117.35991343,0,0,6.39187902606864e-11,0,0,0,0,-1.27837580521373e-10,0,-1.91756370782059e-10,0,0,0,0,0,0,0,0,0,-1.91756370782059e-10,0,1.91756370782059e-10,-1.27837580521373e-10,0,0,0,-6.39187902606864e-11],"Archive409_field17":[-582.649071358749,-582.649071358749,-215.775295714217,-275.39913695741,-582.649071358749,-582.649071358749,-582.649071358749,-251.303081541631,-582.649071358749,-389.054599331229,-582.649071358749,-410.095307917889,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-430.135180575484,-512.254979227762,-373.37212798351,-241.958596236455,-403.179711498117,-582.649071358749,-582.649071358749,-270.323262349679,-582.649071358749,-582.649071358749,-215.775295714217,-275.39913695741,-582.649071358749,-582.649071358749,-582.649071358749,-251.303081541631,-582.649071358749,-389.054599331229,-582.649071358749,-410.095307917889,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-430.135180575484,-512.254979227762,-373.37212798351,-241.958596236455,-403.179711498116,-582.649071358749,-582.649071358749,-270.323262349679,-582.649071358749,-582.649071358749,-215.775295714217,-275.39913695741,-582.649071358749,-582.649071358749,-582.649071358749,-251.303081541631,-582.649071358749,-389.054599331229,-582.649071358749,-410.095307917889,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-430.135180575484,-512.254979227762,-373.37212798351,-241.958596236455,-403.179711498117,-582.649071358749,-582.649071358749,-270.323262349679],"Archive409_field18":[435.935091210639,368.400273472321,24.9424005951004,31.8345785359711,49.2356770786953,404.305594376929,21.6056645350733,29.0492111705702,84.497903793044,44.9725054843078,242.563899935338,67.8910747726355,32.005362421774,207.042574237603,190.801826228494,384.301341390732,178.902579531797,80.6636413743806,154.911953590617,49.7211877219207,76.4803457837004,43.1597007265563,27.9690416587397,46.6052883520178,264.158152067252,414.491254489018,31.2478362149029,435.935091210639,368.400273472321,24.9424005951004,31.8345785359711,49.2356770786953,404.305594376929,21.6056645350733,29.0492111705702,84.497903793044,44.9725054843078,242.563899935338,67.8910747726355,32.005362421774,207.042574237603,190.801826228494,384.301341390732,178.902579531797,80.6636413743806,154.911953590617,49.7211877219207,76.4803457837004,43.1597007265563,27.9690416587397,46.6052883520178,264.158152067252,414.491254489018,31.2478362149029,435.935091210639,368.400273472321,24.9424005951004,31.8345785359711,49.2356770786953,404.305594376929,21.6056645350733,29.0492111705702,84.497903793044,44.9725054843078,242.563899935338,67.8910747726355,32.005362421774,207.042574237603,190.801826228494,384.301341390732,178.902579531797,80.6636413743806,154.911953590617,49.7211877219207,76.4803457837004,43.1597007265563,27.9690416587397,46.6052883520178,264.158152067252,414.491254489018,31.2478362149029],"Archive409_field19":[1018.58416256939,951.04934483107,240.717696309318,307.233715493381,631.884748437444,986.954665735678,604.254735893822,280.352292712201,667.146975151793,434.027104815536,825.212971294086,477.986382690524,614.654433780523,789.691645596352,773.450897587243,966.950412749481,761.551650890546,663.312712733129,737.561024949366,479.856368297405,588.735325011462,416.531828710067,269.927637895195,449.784999850134,846.807223426001,997.140325847767,301.571098564582,1018.58416256939,951.04934483107,240.717696309318,307.233715493381,631.884748437444,986.954665735678,604.254735893822,280.352292712201,667.146975151793,434.027104815536,825.212971294086,477.986382690524,614.654433780523,789.691645596352,773.450897587243,966.950412749481,761.551650890546,663.312712733129,737.561024949366,479.856368297405,588.735325011462,416.531828710067,269.927637895195,449.784999850134,846.807223426001,997.140325847767,301.571098564582,1018.58416256939,951.04934483107,240.717696309318,307.233715493381,631.884748437444,986.954665735678,604.254735893822,280.352292712201,667.146975151793,434.027104815536,825.212971294086,477.986382690524,614.654433780523,789.691645596352,773.450897587243,966.950412749481,761.551650890546,663.312712733129,737.561024949366,479.856368297405,588.735325011462,416.531828710067,269.927637895195,449.784999850134,846.807223426001,997.140325847767,301.571098564582],"Archive409_field20":[254.637360439073,252.681626601836,272.86959589169,272.865661153932,272.567518781908,253.934368354091,272.510708402687,272.913382832876,272.113295081295,272.777539446907,251.718485972645,272.732659969318,272.608317062353,248.047644957134,251.015605558411,255.585569560917,253.162547251694,241.366133065468,247.433397743381,272.731253313079,272.646206322717,272.744853021745,272.931809549909,272.762102632131,248.813277592507,252.929833782469,272.900953268486,252.853163158931,252.97356400259,253.758529098854,249.765809141984,248.654639283814,252.927369983905,251.076185877819,248.30011227686,251.149989102491,247.203712584896,253.117203219603,248.354955855959,248.238146466881,253.815616226552,253.333223423849,252.720227912013,252.981221246621,255.267193501104,253.828028556836,248.292473778204,248.228258774002,250.710640278029,247.803203347266,248.146169132044,253.392265835664,253.032187547043,247.555489694913,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive409_field21":[-4.33704742914418e-13,-3.54886306892763e-14,-5.71265035091875e-05,-6.48468067270858e-05,-3.88554659460818e-05,-7.90313666380415e-13,-4.85003320096421e-05,-5.98278473016114e-05,-6.77849745047223e-05,0.776241747167766,5.88150296755485e-09,-0.000135307208815664,-4.84967679468118e-05,4.4341353533947e-09,1.13629305338692e-09,-5.85894068707158e-13,2.78405649929485e-09,-3.24460505056733e-05,4.35593961897049e-09,1.68051002148032,1.01358178920516,-4.85057451412328e-05,0.275841629717645,-0.154101284318267,2.11764816686952e-09,-3.67509746178615e-13,0.395117795430964,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive409_field22":[701367187500],"Archive409_field23":[0,0,0,0,411.406275779599,0,0,309.012136036482,0,130.451813269721,53.594314397157,307.791928707878,368.074026524545,14.9515761616575,0,0,51.0645627767734,210.707707856553,-11.3476258304756,0,88.9698609716725,0,495.702251786822,416.206824098513,0,0,-194.775680396822,0,0,0,0,411.40627567693,0,0,309.012135905034,0,130.451813269721,53.6094956937509,307.795172657776,368.074026524545,14.9515760296001,0,0,51.0838751714681,210.720723636779,-11.3476258304756,0,88.9714486845492,0,495.702251786822,416.206823971999,0,0,-194.776201586443,0,0,0,0,411.406275697029,0,0,309.012135947526,0,130.451813269721,53.6141342025833,307.79588901979,368.074026524545,14.9515760855667,0,0,51.0904862005002,210.724526987278,-11.3476258304756,0,88.9719904754979,0,495.702251786822,416.206824001739,0,0,-194.776457927267],"Archive409_field24":[0,0,0,0,1863.20622464675,0,0,4109.48978348891,0,2350.67567529919,391.474584125785,1202.31676618874,2255.94962412511,280.378950524806,0,0,370.773326864912,768.142089232528,595.554221365915,0,478.663981732837,0,3233.07929032831,2595.47680234923,0,0,2962.01878005167,0,0,0,0,1863.20622505074,0,0,4109.48978352157,0,2350.67567529919,391.582287342727,1202.3289669158,2255.94962412511,280.378951316629,0,0,370.897116329162,768.182439247095,595.554221365914,0,478.67077107704,0,3233.07929032831,2595.4768022832,0,0,2962.01910958733,0,0,0,0,1863.20622474312,0,0,4109.489783492,0,2350.67567529919,391.617113179169,1202.33192619007,2255.94962412511,280.37895087836,0,0,370.937168995565,768.19509583506,595.554221365915,0,478.672472444841,0,3233.07929032831,2595.47680230349,0,0,2962.01843294264],"Archive409_field25":[0,0,0,0,1.74700033823703,0,0,-2.15191151420561,0,-5.17248447761119,0.0107820214769067,0.920565912519777,1.44299685179116,-0.460495360805132,0,0,-0.224137474397661,0.136450572421462,-0.161660075743745,0,-1.23108795189343,0,-3.63470476467329,-3.88038795839295,0,0,-5.6996359165469,0,0,0,0,0.264267502196797,0,0,-3.56087236245255,0,-4.96017677431087,-0.646226144004404,-0.168116283819254,0.187311619158129,-2.53814254155348,0,0,-1.65413735125906,-0.983282719425868,-1.74840142860443,0,-1.85753286311335,0,-4.2939093701157,-4.74814517959177,0,0,-7.43023458932848,0,0,0,0,-1.21841483194728,0,0,-4.96982612290156,0,-4.74787375295763,-1.30333735995798,-1.25681184940417,-1.0683847364728,-4.61578748584467,0,0,-3.08410507116991,-2.10289540583321,-3.33514128903557,0,-2.48400083711424,0,-4.95311340653404,-5.61591198093418,0,0,-9.16082013792231],"Archive409_field26":[0,0,0,0,1908.08689826313,0,0,4121.09201687377,0,2354.29831597959,395.126183223043,1241.08916886655,2285.77979644412,280.777701363707,0,0,374.273295498978,796.517436105095,595.662341711082,0,486.863799380482,0,3270.86160377584,2628.63900324291,0,0,2968.42134895005,0,0,0,0,1908.08611717907,0,0,4121.09299346869,0,2354.29785910413,395.235478414235,1241.10146291885,2285.77934864192,280.788796312714,0,0,374.40214926493,796.560387028209,595.664885742231,0,486.872751540741,0,3270.86240273632,2628.64042736806,0,0,2968.42553934759,0,0,0,0,1908.08648759408,0,0,4121.09445171542,0,2354.29742138368,395.272232024148,1241.10513237575,2285.77959065133,280.815261724157,0,0,374.451776370119,796.575767713365,595.671656507314,0,486.877316400947,0,3270.86333455079,2628.64213808356,0,0,2968.42971725461],"Archive409_field27":[9162948.85211682,8555421.16475099,2165441.03092847,2763803.8408239,5684289.86345111,8878417.17338504,5435736.62551157,2521984.74421163,6001500.74466124,3904408.00868646,7423426.09077821,4299855.56181594,5529289.91576981,7103884.4147063,6957786.38098839,8698463.5144994,6850743.49453164,5967008.6018233,6634929.34140876,4316677.52223874,5296127.57467836,3747024.52875516,2428206.94714846,4046162.40810184,7617683.01627891,8970045.02905157,2712864.24133431,4581474.42605841,4277710.5823755,1082720.51546424,1381901.92041195,2842144.93172555,4439208.58669252,2717868.31275578,1260992.37210582,3000750.37233062,1952204.00434323,3711713.0453891,2149927.78090797,2764644.95788491,3551942.20735315,3478893.1904942,4349231.7572497,3425371.74726582,2983504.30091165,3317464.67070438,2158338.76111937,2648063.78733918,1873512.26437758,1214103.47357423,2023081.20405092,3808841.50813946,4485022.51452578,1356432.12066715,0,0,3.19593951303432e-11,0,0,0,0,0,0,1.91756370782059e-10,0,0,0,0,0,0,0,0,0,6.39187902606864e-11,0,-1.27837580521373e-10,-3.19593951303432e-11,-6.39187902606864e-11,0,0,-2.23715765912402e-10],"Archive409_field28":[-582.649071358749,-582.649071358749,-220.444733830874,-278.376126135847,-582.649071358749,-582.649071358749,-582.649071358749,-257.540626661211,-582.649071358749,-393.816555740191,-582.649071358749,-410.095307917889,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-433.203882431996,-512.254979227762,-378.204477414829,-251.601245964047,-406.500646637792,-582.649071358749,-582.649071358749,-276.655112448413,-582.649071358749,-582.649071358749,-220.444733830874,-278.376126135847,-582.649071358749,-582.649071358749,-582.649071358749,-257.540626661211,-582.649071358749,-393.816555740191,-582.649071358749,-410.095307917889,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-433.203882431996,-512.254979227762,-378.204477414829,-251.601245964047,-406.500646637792,-582.649071358749,-582.649071358749,-276.655112448413,-582.649071358749,-582.649071358749,-220.444733830874,-278.376126135847,-582.649071358749,-582.649071358749,-582.649071358749,-257.540626661211,-582.649071358749,-393.816555740191,-582.649071358749,-410.095307917889,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-433.203882431996,-512.254979227762,-378.204477414829,-251.601245964047,-406.500646637792,-582.649071358749,-582.649071358749,-276.655112448413],"Archive409_field29":[445.093478983878,378.920471780893,25.4821611625655,32.1787016034894,57.9250958291196,414.419892023724,33.138236281056,29.7702360153636,94.2471869861978,45.5229606417233,251.957386696003,76.5729840603699,40.5671172340592,212.580807908967,200.157923854755,393.904847146538,185.913221022933,88.4425986666658,161.80026521781,50.0759122549526,85.7172758763118,43.7182929181809,29.0836772870109,46.989169622253,274.497245731594,421.826940707384,31.9797621805145,445.093478983878,378.920471780893,25.4821611625655,32.1787016034894,57.9250958291196,414.419892023724,33.138236281056,29.7702360153636,94.2471869861978,45.5229606417233,251.957386696003,76.5729840603699,40.5671172340592,212.580807908967,200.157923854755,393.904847146538,185.913221022933,88.4425986666658,161.80026521781,50.0759122549526,85.7172758763118,43.7182929181809,29.0836772870109,46.989169622253,274.497245731594,421.826940707384,31.9797621805145,445.093478983878,378.920471780893,25.4821611625655,32.1787016034894,57.9250958291196,414.419892023724,33.138236281056,29.7702360153636,94.2471869861978,45.5229606417233,251.957386696003,76.5729840603699,40.5671172340592,212.580807908967,200.157923854755,393.904847146538,185.913221022933,88.4425986666658,161.80026521781,50.0759122549526,85.7172758763118,43.7182929181809,29.0836772870109,46.989169622253,274.497245731594,421.826940707384,31.9797621805145],"Archive409_field30":[1027.74255034263,961.569543139641,245.926894993439,310.554827739337,640.574167187868,997.068963382473,615.787307639805,287.310862676575,676.896258344947,439.339516381914,834.606458054752,486.668291978258,623.216188592808,795.229879267716,782.806995213503,976.553918505287,768.562292381681,671.091670025415,744.449336576558,483.279794686949,597.972255104073,421.92277033301,280.684923251058,453.489816260045,857.146317090343,1004.47601206613,308.634874628927,1027.74255034263,961.569543139641,245.926894993439,310.554827739337,640.574167187868,997.068963382473,615.787307639805,287.310862676575,676.896258344947,439.339516381914,834.606458054752,486.668291978259,623.216188592808,795.229879267716,782.806995213503,976.553918505287,768.562292381681,671.091670025415,744.449336576558,483.279794686949,597.972255104073,421.92277033301,280.684923251058,453.489816260045,857.146317090343,1004.47601206613,308.634874628927,1027.74255034263,961.569543139641,245.926894993439,310.554827739337,640.574167187868,997.068963382473,615.787307639805,287.310862676575,676.896258344947,439.339516381914,834.606458054752,486.668291978258,623.216188592808,795.229879267716,782.806995213503,976.553918505287,768.562292381681,671.091670025415,744.449336576558,483.279794686949,597.972255104073,421.92277033301,280.684923251058,453.489816260045,857.146317090343,1004.47601206613,308.634874628927],"Archive409_field31":[254.705446680473,252.886928229951,272.884119079775,272.852255485651,272.575321607965,253.788012638283,272.526694978141,272.906282151042,272.101655744092,272.772414079961,251.561489894697,272.726150152822,272.61101819994,248.484368178667,250.803022568551,255.405420357079,253.298395331885,241.47707137612,247.488385854905,272.729404129386,272.638314539393,272.748680535475,272.92179015126,272.757577158237,248.727744446212,252.99312550924,272.891649761358,253.0264402316,252.923416848456,257.982807639454,251.612912287203,249.014335554456,253.012165892536,252.749559180831,248.652453771844,253.202321213526,246.579071775431,252.995317653451,248.524189469177,248.376814148618,253.434483093003,253.18448858839,252.956150033865,253.000492012566,254.650820340434,253.441189680294,249.199903920339,249.0831699763,252.965727669427,247.879923871199,248.287270729139,252.96063318816,253.0318197295,247.724886895912,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive409_field32":[-2.47381009967856e-13,-2.47019223114997e-14,-4.25611459061502e-05,-4.46335924809954e-05,-3.374584652041e-05,-5.23124919903526e-13,-3.37595899615245e-05,-5.0673799758747e-05,-4.01595422103454e-05,0.540318014118064,3.33138467088775e-09,-9.28876854465e-05,-3.37566904986236e-05,3.42655891096575e-09,7.90938662052329e-10,-4.27744239717719e-13,1.95046413914077e-09,-1.62061801125064e-05,3.03200172453417e-09,1.16857968722151,0.506334038557085,-3.37632704505769e-05,0.281524648614751,-3.37503565849999e-05,1.25462066267919e-09,-2.08161443439746e-13,0.260059581911155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive409_field33":[701367187500]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive410.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive410.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive410.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive410_field1":[0,0,0,0,432.210455373802,0,0,323.124099138416,0,174.427721070179,26.2043098942956,448.69281939744,69.4392387530813,0,480.804920699068,383.910975980411,117.79001146975,333.236589260269,252.277389741409,33.6599445696642,373.863969090207,261.970167027992,259.440173301389,111.265205122892,34.1468644791619,0,34.3775937682519,282.210613634959,0,355.551219240148,0,200.987434419639,0,0,17.33847829596,135.004423262156,0,0,311.324641050253,83.279260152204,22.4955200946741,-0.555829642012902,44.6587030784267,31.1893695854339,0,0,0,0,432.210455373802,0,0,323.124099138416,0,174.427721070179,26.2043098942956,448.69281939744,69.4392387530813,0,480.804920699068,383.910975980411,117.79001146975,333.236589260269,252.277389741409,33.6599445696642,373.863969090207,261.970167027992,259.440173301389,111.265205122892,34.1468644791619,0,34.3775937682519,282.210613634959,0,355.551219240148,0,200.987434419639,0,0,17.33847829596,135.004423262156,0,0,311.324641050253,83.279260152204,22.4955200946741,-0.555829642012902,44.6587030784267,31.1893695854339,0,0,0,0,432.210455373802,0,0,323.124099138416,0,174.427721070179,26.2043098942956,448.69281939744,69.4392387530813,0,480.804920699068,383.910975980411,117.79001146975,333.236589260269,252.277389741409,33.6599445696642,373.863969090207,261.970167027992,259.440173301389,111.265205122892,34.1468644791619,0,34.3775937682519,282.210613634959,0,355.551219240148,0,200.987434419639,0,0,17.33847829596,135.004423262156,0,0,311.324641050253,83.279260152204,22.4955200946741,-0.555829642012902,44.6587030784267,31.1893695854339],"Archive410_field2":[0,0,0,0,2632.31871475734,0,0,3824.75672068808,0,2654.97074922757,341.172140667654,2670.92142505655,2226.51296405385,0,3730.85399644214,3583.68507926654,1753.06986717296,3508.84186066949,3026.25853221393,3763.48891400855,2534.6094048047,1474.63773738686,2439.01799483103,1203.07256714964,320.155416516527,0,577.578525894004,3517.36507997848,0,2325.42323225087,0,737.840110874308,0,0,1615.71379683958,1283.95382435221,0,0,1466.28484300173,551.161807730571,245.48145807401,286.467295812985,225.65258680314,229.339822470665,0,0,0,0,2632.31871475734,0,0,3824.75672068808,0,2654.97074922757,341.172140667654,2670.92142505655,2226.51296405385,0,3730.85399644214,3583.68507926654,1753.06986717296,3508.84186066949,3026.25853221393,3763.48891400855,2534.6094048047,1474.63773738686,2439.01799483103,1203.07256714964,320.155416516527,0,577.578525894004,3517.36507997848,0,2325.42323225087,0,737.840110874308,0,0,1615.71379683958,1283.95382435221,0,0,1466.28484300173,551.161807730571,245.48145807401,286.467295812985,225.65258680314,229.339822470665,0,0,0,0,2632.31871475734,0,0,3824.75672068808,0,2654.97074922757,341.172140667654,2670.92142505655,2226.51296405385,0,3730.85399644214,3583.68507926654,1753.06986717296,3508.84186066949,3026.25853221393,3763.48891400855,2534.6094048047,1474.63773738686,2439.01799483103,1203.07256714964,320.155416516527,0,577.578525894004,3517.36507997848,0,2325.42323225087,0,737.840110874308,0,0,1615.71379683958,1283.95382435221,0,0,1466.28484300173,551.161807730571,245.48145807401,286.467295812985,225.65258680314,229.339822470665],"Archive410_field3":[0,0,0,0,1.39112164285493,0,0,-2.67223591493796,0,-4.38370242488628,0.0550446637097213,-3.72623447575044,1.67936519282265,0,-2.5231716878265,-2.28188679394664,-6.15389246151822,-3.24381979941984,-3.86929452517829,-3.1940422170279,2.86253893600208,0.866881483721569,3.04211980449966,-0.250519998529459,-0.152565300977846,0,-0.220292463354118,-2.16084872745357,0,-5.35146571477448,0,-0.225417150644101,0,0,0.29346655562444,1.0155173779581,0,0,-5.7474599717662,0.00565728217849586,0.000377725553804338,0.0239552243469037,-0.0137611659549947,0.0896603058459206,0,0,0,0,0.123689132381715,0,0,-2.71249040816659,0,-4.68291149611855,-0.0668925591399732,-4.16326052576728,1.0321936683623,0,-2.64162841058741,-2.61578960972879,-6.20906980715422,-3.65965386013523,-3.98512104884231,-3.38399543998397,2.23414599187517,-0.164734975769828,2.76314312944649,-1.65654475080046,-1.03616532150979,0,-1.21975199993751,-2.51737313315645,0,-5.68867854321156,0,-1.48454599360874,0,0,-0.554815704556649,1.49176622725742,0,0,-6.58882565042002,-0.63804140407142,-0.274143500273202,-0.254288306856485,-0.326588696593496,-0.22902036238851,0,0,0,0,-3.67860839903796,0,0,-2.8332538878525,0,-5.58053870981538,-0.432704227689122,-5.47433867581776,-0.909320905018752,0,-2.99699857887015,-3.61749805707525,-6.37460184406223,-4.90715604228139,-4.33260061983436,-3.95385510885219,0.348967159494378,-3.25958435424407,1.92621310428699,-5.87461900761343,-3.68696538310572,0,-4.21813060968768,-3.58694635026506,0,-6.70031702852285,0,-5.26193252250216,0,0,-3.09966248509991,2.92051277515538,0,0,-9.11292268638149,-2.56913746282124,-1.09770717775419,-1.08901890046665,-1.26507128850899,-1.1850623670918],"Archive410_field4":[0,0,0,0,2667.56623704372,0,0,3838.38251047722,0,2660.69801480339,342.176998722446,2708.35012319831,2227.59614994413,0,3761.70855874457,3604.19083732302,1757.03338510806,3524.63166160313,3036.75806685559,3763.64079046332,2562.03577188873,1497.72680299901,2452.77949215275,1208.20677471173,321.971306725926,0,578.600744085207,3528.66895664179,0,2352.45372255875,0,764.724805941649,0,0,1615.80685177716,1291.03239643494,0,0,1498.98209003237,557.417952262335,246.510029578138,286.467836049439,230.029323958849,231.450942933883,0,0,0,0,2667.56587718001,0,0,3838.382538713,0,2660.69852459684,342.177000833487,2708.35075973241,2227.59575605679,0,3761.7086400647,3604.19106419057,1757.03357922942,3524.63206883707,3036.7582166452,3763.64095646208,2562.03514685428,1497.72656118389,2452.77916201035,1208.2078843641,321.972937864663,0,578.601987831123,3528.66919297739,0,2352.45451383418,0,764.726213678077,0,0,1615.80692037999,1291.03285889069,0,0,1498.98555215356,557.418317396516,246.510182015126,286.467947909602,230.029555387503,231.451038875049,0,0,0,0,2667.56841073588,0,0,3838.38262595331,0,2660.70025586198,342.177267885718,2708.35309245099,2227.59570251044,0,3761.7089064064,3604.1919303955,1757.03417198999,3524.63358489769,3036.75869252077,3763.64151198064,2562.03419650995,1497.7300991261,2452.77836196611,1208.22103062624,321.992380022207,0,578.616077509972,3528.67011811594,0,2352.45717768539,0,764.742875706255,0,0,1615.80979822345,1291.03530035545,0,0,1498.99877194798,557.423872775137,246.512473606347,286.469905014752,230.032802219511,231.453959393282],"Archive410_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,2732465.1375,1669839.80625,2319221.953125,2201152.471875,2702947.7671875,3153087.66445312,1905978.76875,3536813.47851562,4072277.02434082,3766708.38191106,4467048.82294566,5144221.38575526,5093854.7625,4984869.16245088,2466808.8046875,3204743.0625,2540602.23046875,5566132.6875,4572258.27409405,6628758.01875,4503507.35625,4267368.39375,3529434.1359375,6392619.05625,3795090.46875,3440882.025,4872973.52761088,5939681.20965504,5710759.45846776,6097445.353125,5654892.68035307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive410_field6":[257.423342712784,259.864066538142,272.947236016775,272.885524809124,272.604897167825,258.784997164406,272.634982916815,272.900607291888,272.574707472397,272.754545691977,259.847346282182,272.731410993332,272.623252776255,272.792305002595,272.927240187227,272.835846056334,272.836295555158,272.780561792621,272.719914709005,272.892660883264,272.687856568468,272.614947002116,272.657816967433,254.832042745201,258.412019498154,257.610027023989,258.202349421988,272.815932364009,272.728645566932,272.801892182767,258.43390380215,253.981187270801,259.419905727818,260.939712918728,254.365031226775,272.688288181216,259.145067686924,272.654108277577,272.666157818166,258.9447995948,258.232831395426,258.922977821062,259.728144245954,256.413841249219,253.765855085584,255.645525024785,272.99792658074,270.724730423332,253.432663989944,254.363407497287,260.083934453363,235.798812473397,260.857804279928,248.611336172312,254.083322902541,248.219129146274,253.395918425002,256.78683243841,250.651771350803,242.148957120991,264.150816911146,244.036819037314,244.929292575146,247.87268321458,252.505352199737,248.784594444321,251.514387509034,253.467244342743,253.198448750594,255.127557077133,253.223760999039,242.089486313832,258.09797882517,261.213355219852,254.916468888148,254.442087387925,254.608927755544,255.991485862623,255.16475210502,253.05783466008,254.529465240838,254.850383375018,259.288330400996,253.173255008195,253.860687271968,253.931376613509,254.439129907587,253.180281512767,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive410_field7":[-6.59680401786408e-16,-1.62424426624863e-15,0.223752723098995,0.132222740187112,-2.47267834218962e-06,-9.74739705388161e-15,2.05805107769225e-10,3.53849973189353e-10,-7.53677685566434e-07,-2.15393551967625e-06,7.64840651760454e-11,-1.23284977084182e-06,0.00644358671752259,-6.41112198979258e-06,-6.41124863771191e-06,6.847326679608e-10,-1.28233556449502e-05,-1.14656333200977e-06,-2.65556645985822e-06,-3.78902363895258e-06,0.0213438091032257,-2.76391026233543e-06,0.0344343398730119,-1.45287581985448e-06,3.05159030106251e-10,1.58121534888238e-11,-3.09053503494765e-07,5.75241855746313e-10,-5.19792224914591e-06,-8.52445725641479e-06,2.3033062192911e-11,-1.28639169724963e-06,-4.51498133888757e-15,2.27669448150931e-11,-2.51628027643966e-07,-2.99493861054332e-07,-1.09486840044482e-14,0.0322180315805579,-1.12996121131518e-06,2.69108511723344e-10,-3.20349262695241e-14,1.88033093347653e-11,-5.70345048513237e-15,1.35342265466389e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive411.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive411.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive411.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive411_field1":[0,0,0,0,439.874110949676,0,0,310.154765614741,0,178.654885163408,26.2356502398213,447.84962179495,66.3313527023293,0,461.698747699299,377.414760867508,119.108074838818,330.563374593107,253.397390039023,45.7365530973471,376.290631897459,264.919712813737,261.903593146016,111.684079393877,33.8174059386181,0,34.8995132238548,280.795211007642,0,356.215785866817,0,201.148049979804,0,0,17.0032304334626,132.456329840363,0,0,312.828402443258,82.9237343672988,22.4324425669939,-0.585455881588204,44.5930876134207,31.1289572664936,0,0,0,0,439.874535340973,0,0,310.154767063683,0,178.654867336073,26.2396701115691,447.849694638449,66.3303860697202,0,461.698665395077,377.414717221997,119.106973624274,330.563511206414,253.397575211435,45.7366197734511,376.290030118685,264.922591955052,261.902487101685,111.693629524147,33.8238888109744,0,34.9045695224618,280.795218992605,0,356.216718934659,0,201.165325378854,0,0,17.0024886122625,132.454818077052,0,0,312.829052119302,82.9359153239409,22.4350674691861,-0.585535728497388,44.6037435659965,31.1361453487168,0,0,0,0,439.87417990958,0,0,310.154791200526,0,178.654982090647,26.2444530020687,447.849839079671,66.3286482553166,0,461.698580008162,377.414610623307,119.105715144631,330.563644318588,253.398077666002,45.7366597485275,376.289034915933,264.925283284918,261.901238299677,111.703859706723,33.8313063399516,0,34.9109229020951,280.795201724071,0,356.217665382455,0,201.18407139534,0,0,17.0020326500551,132.452622630367,0,0,312.829751967408,82.948456472856,22.4380337167065,-0.585504433724936,44.6155616229052,31.1444398040473],"Archive411_field2":[0,0,0,0,2675.58701318484,0,0,3807.15027437015,0,2699.17878227704,340.673447943801,2688.4280309207,2267.51592353455,0,3758.38809208255,3603.65564361249,1778.13512796569,3524.79635424569,3066.83171350241,3757.1986041312,2570.58015341334,1485.19352438094,2488.05068038274,1202.77531574268,317.798295047295,0,574.746294750823,3518.88575536219,0,2339.56760811276,0,735.902617749817,0,0,1654.44727096346,1308.33607821563,0,0,1475.54480160805,552.295602643095,245.721034687215,286.810949649003,226.074202028186,229.394910603376,0,0,0,0,2675.58903498764,0,0,3807.15062836272,0,2699.1816702706,340.724685349658,2688.42743307251,2267.50825860691,0,3758.38856841008,3603.65563464977,1778.13442052199,3524.79710892974,3066.83258472827,3757.19984844182,2570.58079356559,1485.20766119383,2488.044697966,1202.87752824717,317.844064569782,0,574.833537890084,3518.88607517547,0,2339.56832589382,0,735.973096495143,0,0,1654.45406832555,1308.33580311143,0,0,1475.54366988833,552.372793703026,245.756640365776,286.872969634773,226.129431207177,229.454139436572,0,0,0,0,2675.5857819123,0,0,3807.15158729361,0,2699.18456002296,340.784162202124,2688.42723449278,2267.49736775237,0,3758.38994370981,3603.65509331305,1778.13320689704,3524.79762947676,3066.83442529114,3757.2031848298,2570.581878934,1485.2182747557,2488.03997510072,1202.98909927976,317.895821291903,0,574.932843669512,3518.88575485419,0,2339.56829895607,0,736.050612063778,0,0,1654.45465850839,1308.3374521894,0,0,1475.54296799124,552.45588215776,245.79653723108,286.943749059369,226.191685712912,229.523326659804],"Archive411_field3":[0,0,0,0,1.41076538253783,0,0,-2.68357318928155,0,-4.35336214750688,0.0557282614797858,-3.71530841504972,1.70123008271929,0,-2.50735891586208,-2.27078459542592,-6.13859955092234,-3.23495356293329,-3.84000017141116,-3.19734585412579,2.88751442334116,0.871727549588336,3.07890892570857,-0.253551366165891,-0.154914042267672,0,-0.223746411177126,-2.15988425150835,0,-5.34260661723588,0,-0.227839157632229,0,0,0.302341567263906,1.0385978332557,0,0,-5.74112759335943,0.00560832552257148,0.000411876262205257,0.0243320211812203,-0.0139590262220287,0.0908711246020009,0,0,0,0,0.109610088383391,0,0,-2.70858119056168,0,-4.64788049901764,-0.060103462409325,-4.14274890182268,1.03224394610345,0,-2.6230650620507,-2.59363535795856,-6.19517282141609,-3.62974149140117,-3.9356759774637,-3.37523824733227,2.25672206330449,-0.172840548386218,2.78848552579327,-1.69096401954972,-1.04813203282086,0,-1.24643352827234,-2.50039369391231,0,-5.6770839289338,0,-1.51001724557469,0,0,-0.575916139381569,1.52920088895034,0,0,-6.58671234355139,-0.640820297998694,-0.273034441690418,-0.249020264708655,-0.327906085015794,-0.217218380426758,0,0,0,0,-3.79351702704014,0,0,-2.78362791811906,0,-5.53151025895494,-0.407920621115304,-5.42511433632677,-0.974308455013718,0,-2.97018020452746,-3.56214627375795,-6.36487018225851,-4.81409359800463,-4.22282145231182,-3.90893429895569,0.364416711627449,-3.30620203815051,1.91745556711438,-6.00290386081281,-3.72773906594754,0,-4.31417457103861,-3.52191688085571,0,-6.68051284876781,0,-5.35638534992038,0,0,-3.21034927599818,3.00088547838775,0,0,-9.12349787697803,-2.58019499319521,-1.09379458625939,-1.06963839535593,-1.27008882014979,-1.14217730303319],"Archive411_field4":[0,0,0,0,2711.50458027755,0,0,3819.7639183378,0,2705.08828293076,341.682177736947,2725.47763973559,2268.48654525828,0,3786.64139722575,3623.36598426429,1782.13045235241,3540.26438962553,3077.28480024583,3757.47833076854,2597.977155888,1508.63614533436,2501.79918457417,1207.94944349433,319.592548845785,0,575.804940422986,3530.07189373188,0,2366.53646126077,0,762.89793074329,0,0,1654.53466982534,1315.02435398014,0,0,1508.35242283552,558.486148845046,246.742864876467,286.811548214502,230.430224754552,231.49739793093,0,0,0,0,2711.50627935874,0,0,3819.76428893028,0,2705.09165344555,341.733573279849,2725.47767817919,2268.47845228785,0,3786.64193834768,3623.36618752,1782.12986866202,3540.26553652178,3077.28580463685,3757.47973138283,2597.97707761433,1508.65032610969,2501.79277868457,1208.05325801374,319.640428321098,0,575.893635017196,3530.0724379312,0,2366.53809004971,0,762.971930710109,0,0,1654.54153181399,1315.02440699418,0,0,1508.35490597435,558.56466046874,246.778712785415,286.873675282789,230.486704867294,231.55713946147,0,0,0,0,2711.50566314987,0,0,3819.765300607,0,2705.09620703181,341.793479926716,2725.47975692202,2268.46748965469,0,3786.64354933641,3623.36646073222,1782.12917164344,3540.26747961328,3077.28806096158,3757.48358531444,2597.97705280501,1508.66486018724,2501.78713182356,1208.17902651638,319.712693714318,0,576.007950787155,3530.07298861164,0,2366.54082573334,0,763.068951646366,0,0,1654.5451316047,1315.02836142677,0,0,1508.36757533364,558.654280900219,246.820986665354,286.946340046331,230.553334719295,231.629527868712],"Archive411_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,2732465.1375,1669839.80625,2319221.953125,2201152.471875,2702947.7671875,3153087.66445312,1905978.76875,3536813.47851562,4072277.02434082,3766708.38191106,4467048.82294566,5144221.38575526,5093854.7625,4984869.16245088,2466808.8046875,3204743.0625,2540602.23046875,5566132.6875,4572258.27409405,6628758.01875,4503507.35625,4267368.39375,3529434.1359375,6392619.05625,3795090.46875,3440882.025,4872973.52761088,5939681.20965504,5710759.45846776,6097445.353125,5654892.68035307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive411_field6":[257.396534858609,259.93207504786,272.947236018959,272.885524809105,272.604806854219,258.866854939106,272.634899806002,272.900519563038,272.574706659019,272.75466147077,259.848024275447,272.731471017179,272.623252769461,272.792395189651,272.927029710957,272.835746357128,272.836401284342,272.780602110915,272.720074389638,272.892627066303,272.687856557122,272.61492423593,272.657816954994,254.842484484687,258.355198319333,257.561916323439,258.130058602577,272.815862254018,272.728689504498,272.801939008587,258.439210836842,254.001145084242,259.459209262494,260.916209266785,254.304653427297,272.688219232405,259.260828970452,272.65410827691,272.666238557395,258.917825906379,258.259349075902,258.963852344149,259.739881636933,256.424164778945,253.745630863389,255.697842633483,272.997926591831,270.742151667468,253.4352164226,254.411400309663,259.875121135916,235.634250385496,260.821646128291,248.255313934964,254.092611747265,248.095168925164,253.391193117341,256.737383073099,250.111889405704,241.779522550133,263.994257837436,243.979201633365,244.836056364941,247.766806152261,252.62137421419,248.764881466982,251.657535169425,253.478458266955,253.186185123062,255.11016739184,253.217912662754,241.93386647839,258.080447415549,261.126501032146,254.917982621498,254.438670788712,254.637634501176,255.92630980533,255.147101506423,253.157084830068,254.602412855363,254.818437485886,259.21163475553,253.165207371904,253.883343715409,253.963802655784,254.444237992234,253.19036073696,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive411_field7":[-6.55255036263704e-16,-1.47948239403633e-15,0.224474054147081,0.132214174373105,-2.32409900337888e-06,-9.05366554348395e-15,2.04430010600547e-10,3.50875346916526e-10,-7.48576930849424e-07,-2.00950346856231e-06,7.20619359323697e-11,-1.1615545270796e-06,0.00586940067701071,-6.43180162493157e-06,-6.43192580985021e-06,6.66159884709284e-10,-1.28647040828891e-05,-1.08028123887405e-06,-2.4954215716961e-06,-3.7887781733409e-06,0.0201099304351772,-2.67673014895128e-06,0.0322843771112084,-1.35462895154057e-06,2.86272176953285e-10,1.44030323417566e-11,-2.81511788073042e-07,5.69807764103645e-10,-5.19448903378729e-06,-8.52390820163857e-06,2.2877869516607e-11,-1.21202181046669e-06,-4.25394676997329e-15,2.07378543771458e-11,-2.29205533215318e-07,-2.72764824183951e-07,-1.01479435966411e-14,0.0319998369996413,-1.12231035807057e-06,2.59774259713236e-10,-2.9986508148131e-14,1.71274652870141e-11,-5.44112003961967e-15,1.2571004669728e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive412.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive412.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive412.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive412_field1":[0.00058152672845,0.00032957811402,0,0,0.74922668045,0.17609346939,2.8197798285e-05,0,0.00034230485237,0,0.035657629095,0,0.03773961635]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive413.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive413.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive413.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive413_field1":[8.2622853081e-06,0.0002595852661,6.1860949893e-24,6.1860949893e-24,0.044666689749,0.00047036972588,0.0056431644524,6.1860949893e-24,0.11371304507,2.2269941962e-24,0.2298183318,6.1860949893e-24,0.24499450389,6.1860949893e-24,6.1860949893e-24,6.1860949893e-24,6.1860949893e-24,6.1860949893e-24,6.1860949893e-24,6.1860949893e-24,0.089351746146,0.11371304507,0.044666689749,0.24499450389,0.15313474958,0.10146262533,0.10146262533,6.1860949893e-24,6.1860949893e-24,6.1860949893e-24,0.01429421588,0.2298183318,0.00047036972588,0.10146262533,0.0056431644524,0.0056431644524,0.0002595852661,6.1860949893e-24,6.1860949893e-24,0.01429421588,0.00047036972588,0.0002595852661,8.2622853081e-06,0.0005018617901]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive414.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive414.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive414.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive414_field1":[3.1709791984e-08,-95129.375951,-95129.375951,-190258.7519,4.3655745685e-11,5.8207660913e-11,-8.731149137e-11,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive415.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive415.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive415.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive415_field1":[0.0923908815038354,0.0802617932742964,0,0,-1.80758663935644,0.0958957490699779,0.061442277860498,0,-0.183959541560503,0,0.87420250962831,0,-0.221454086504094,0,0,0,0,0,0,0,-0.49935061576795,-1.61726062001758,0.195435806310688,-1.0890721496662,0.00699473183404266,0,0,0.305177826180816,1.00912609242173,-1.71705965333427,-2.23290298195669,-3,0.391087126834578,1.72855965089452,0.0810078258447976,0,0.709962466892635,1.32776223860227,0.0157486608518594,0.682458209303504,0.667103634015846,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive415_field2":[1186.95326049782,1044.52479698062],"Archive415_field3":[20.2138137067684,20.2495379806005,1,1,16.2324427127356,20.2084951958829,20.1289216707739,1,19.5740500331915,1,21.6357510980928,1,19.5578657321254,1,1,1,1,1,1,1,18.9742769803812,16.5249262193276,20.3519057291182,17.1956719244403,20.0426291307465,1,1,20.6768948442289,22.0308117606521,15.9222944405444,15.1445052768752,14,20.9252856865238,23.9704655891327,20.2816130648702,1,21.6182900555867,23.6073643324522,20.0536895175043,21.8809602044255,21.3364494204291,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"Archive415_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,7421510.25,6497298.0368145,7027945.3125,4509129.7125,4272990.75,8838344.025,7972501.1625,6752449.85625,5954097.2310791,6044032.96875,6791806.35,6437597.90625,8523492.075,3407147.8875,8129927.1375,7657649.2125,8602205.0625,7775718.69375,7952822.915625,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,1821643.425,1113226.5375,1546147.96875,1467434.98125,1801965.178125,2102058.44296875,1270652.5125,2357875.65234375,2714851.34956055,3710755.125,3248649.01840725,3513972.65625,2254564.85625,2136495.375,4419172.0125,3986250.58125,3376224.928125,2977048.61553955,3022016.484375,3395903.175,3218798.953125,4261746.0375,1703573.94375,4064963.56875,3828824.60625,4301102.53125,3887859.346875,3976411.4578125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive415_field5":[0,0,0,0,3288.08751902758,0,0,4023.75937793876,0,2673.30479697826,282.423283082432,3187.77888841104,2137.25705873736,0,3968.43360044415,3807.51579788844,1862.687586089,3805.65175633701,3266.43372939426,4063.67123075995,3269.92967445881,2086.37456424356,0,671.465121029935,285.391002446317,811.860366756215,0,0,203.912991298031,515.311297352742,1611.42214281839,2147.22401375855,0,581.134318024051,0,1966.19418059782,205.105032961049,198.916225552199,0,172.212832966743,191.935591364478,0,0,0,0,3288.08705817443,0,0,4023.75941122259,0,2673.30599635774,282.42445236475,3187.78081113305,2137.25678958164,0,3968.43370050523,3807.51630912625,1862.68713286267,3805.65241133098,3266.43357445215,4063.67146195014,3269.92869553803,2086.37493584306,0,671.468868329496,285.396723177798,811.85494499809,0,0,203.913601869952,515.320099602217,1611.42614358437,2147.23175876237,0,581.137039524248,0,1966.19744182644,205.105349765456,198.916673233036,0,172.213347166103,191.935590724473,0,0,0,0,3288.08756000152,0,0,4023.75944518632,0,2673.30744805831,282.428009610463,3187.78321997521,2137.25654387548,0,3968.43380642949,3807.51695487662,1862.68668956054,3805.653225192,3266.43342526192,4063.6717344977,3269.92802718441,2086.37758498799,0,671.480436575175,285.417956089321,811.850160216268,0,0,203.915633397342,515.344713608821,1611.43820115919,2147.2512363876,0,581.143517913967,0,1966.20119548327,205.106292751022,198.9183867573,0,172.214995454964,191.93559462882],"Archive415_field6":[0,0,0,0,727.741592664499,0,0,638.479132107756,0,494.764076525243,18.1249239553653,583.249854398064,428.339840311388,0,697.935725280858,700.553664351251,236.811694330162,652.630070409864,757.985764416633,296.355761169815,721.633041178035,531.882264435618,0,116.39426663858,27.0624664692646,277.907682240249,0,0,25.4077343652698,44.3562920513971,416.325424818489,210.831956508856,0,-6.64554358167452,0,322.369481816353,38.2998525860562,2.2758396397258,0,32.0701326065855,13.6657765820346,0,0,0,0,727.741592664499,0,0,638.479132107756,0,494.764076525243,18.1249239553653,583.249854398064,428.339840311388,0,697.935725280859,700.553664351251,236.811694330162,652.630070409864,757.985764416633,296.355761169815,721.633041178035,531.882264435618,0,116.39426663858,27.0624664692646,277.907682240249,0,0,25.4077343652698,44.3562920513971,416.325424818489,210.831956508856,0,-6.64554358167452,0,322.369481816353,38.2998525860562,2.2758396397258,0,32.0701326065855,13.6657765820346,0,0,0,0,727.741592664499,0,0,638.479132107756,0,494.764076525243,18.1249239553653,583.249854398064,428.339840311388,0,697.935725280858,700.553664351251,236.811694330162,652.630070409864,757.985764416633,296.355761169815,721.633041178035,531.882264435618,0,116.39426663858,27.0624664692646,277.907682240249,0,0,25.4077343652698,44.3562920513971,416.325424818489,210.831956508856,0,-6.64554358167452,0,322.369481816353,38.2998525860562,2.2758396397258,0,32.0701326065855,13.6657765820346],"Archive415_field7":[0,0,0,0,3206.54154425087,0,0,3972.77956932634,0,2627.11911473923,281.841086228452,3133.96479688464,2093.89243413559,0,3906.57709243283,3742.51192848686,1847.56214021621,3749.27344243738,3177.26812612651,4052.8499577753,3189.30592530956,2017.43885655732,0,661.300068929123,284.104859050276,762.786064425969,0,0,202.323882974842,513.398701180157,1556.71271044531,2136.84819429959,0,581.096224736094,0,1939.57757701452,201.49738418482,198.903192406398,0,169.200372366265,191.448471983054,0,0,0,0,3206.54154425087,0,0,3972.77956932634,0,2627.11911473923,281.841086228452,3133.96479688464,2093.89243413559,0,3906.57709243283,3742.51192848685,1847.56214021621,3749.27344243738,3177.26812612651,4052.8499577753,3189.30592530956,2017.43885655732,0,661.300068929124,284.104859050276,762.786064425969,0,0,202.323882974842,513.398701180157,1556.71271044531,2136.84819429959,0,581.096224736094,0,1939.57757701452,201.49738418482,198.903192406398,0,169.200372366265,191.448471983054,0,0,0,0,3206.54154425087,0,0,3972.77956932634,0,2627.11911473923,281.841086228452,3133.96479688464,2093.89243413559,0,3906.57709243283,3742.51192848686,1847.56214021621,3749.27344243738,3177.26812612651,4052.8499577753,3189.30592530956,2017.43885655732,0,661.300068929123,284.104859050276,762.786064425969,0,0,202.323882974842,513.398701180157,1556.71271044531,2136.84819429959,0,581.096224736094,0,1939.57757701452,201.49738418482,198.903192406398,0,169.200372366265,191.448471983054],"Archive415_field8":[0,0,0,0,1.74128812097049,0,0,-2.53435520352402,0,-3.49329341280054,0.0084992734356773,-4.30123605280879,2.68152837184686,0,-2.52693289374066,-2.36213201753538,-6.27716801136382,-2.81700933624977,-3.76087313807304,-2.08669315762654,3.68029505960796,0.734271091805245,0,0.0478304189988844,0.276133910275256,-6.48036873406919,0,0,0.0378486064325706,-0.161744692369402,0.0123739139119263,-0.803675680398658,0,-0.331561822633329,0,-6.02459564229204,-0.00212466083816179,0.0734330378408427,0,0.020594775821815,-0.0189260633732232,0,0,0,0,-0.0378624299125536,0,0,-2.58665972841568,0,-4.31459315779885,-0.812735324264057,-5.54608515116428,2.45765834710824,0,-2.67947034806893,-3.07778492345081,-6.14120511807617,-3.59456533161678,-3.62380332942136,-2.49664780277045,2.6725584178346,-1.44559525686333,0,-2.2438056282495,-1.82799705883423,-5.76123140018769,0,0,-0.500439790069673,-3.01629508135485,-3.59082370809839,-5.82292632232244,0,-1.80915863600989,0,-7.00857908540921,-0.360501000232981,-0.428362669098207,0,-0.421340558333727,0.0106073597451854,0,0,0,0,-1.8170129807956,0,0,-2.63896425330733,0,-5.13589290279716,-1.63396992196378,-6.79093424951976,2.23378832236962,0,-2.8320078023972,-3.79343782936625,-6.00524222478852,-4.37212132698379,-3.4867335207697,-2.90660244791436,1.66482177606123,-3.62546160553191,0,-4.5354416754979,-3.93212802794371,-5.0420940663062,0,0,-1.03872818657192,-5.87084547034029,-7.19402133010871,-10.8421769642462,0,-3.28675544938645,0,-7.99256252852638,-0.718877339627803,-0.930158376037255,0,-0.863275892489275,0.0401407828635941],"Archive415_field9":[260.108061202375,260.848050344155,272.947236102386,272.885524956926,272.596343848629,260.723558272523,272.634482627335,272.903202184025,272.576969560882,272.759312018976,256.309046809824,272.725696581557,272.623252957561,272.792958829537,272.926825632226,272.834338655458,272.83816718097,272.780888249005,272.722849535669,272.900663930297,272.687762336146,272.609628937618,256.517883011924,255.632033321094,254.533483178191,272.67961919041,272.729852882217,256.846764229542,255.66518672676,256.656099594887,252.928611159136,253.295973988028,257.726952704974,255.035191113447,259.595314383302,272.789561849873,259.996405166986,257.410047451523,260.709985842115,257.028740584221,256.884875104573,253.242776402917,253.749047294287,267.975619538854,265.890631447861,249.710791529974,253.627605744936,258.252497314848,235.632754726203,254.439362419564,243.571990904175,253.156962104329,245.197149509019,247.804752649865,264.019173024401,245.146835764567,238.769666987233,256.726219616944,240.723557103328,239.932757652891,250.199038067023,249.018283165728,246.934317825225,253.07009275201,252.287030132172,253.421127986863,258.1449810323,248.19707936112,252.416961911987,252.859510160412,252.906768116205,253.852000592299,252.66896727872,253.05144044498,252.28530904973,252.880881614032,255.427429423752,253.462748017669,253.381988875238,253.830369203292,253.174274662458,252.997146927797,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive415_field10":[1.94748326901225e-11,-2.01842789898105e-14,0.200928773225069,0.18077717862223,-1.55750663464584e-06,1.98711758097641e-18,-5.28179681890936e-06,4.71576440808274e-10,0.0182591745267187,-9.00357604728974e-06,1.21342602760743e-10,1.85577115283101e-09,0.0207504031503367,0.117830693661835,-6.35002887411339e-06,1.04772429499847e-09,-2.01526325850841e-05,6.58077002443169e-10,-1.9667975259833e-06,-5.71374516175334e-06,3.18397838187853e-10,-1.49402467710374e-06,-6.16047353929536e-07,-1.16851088816923e-06,1.24375319389134e-10,-8.76090231336297e-06,-6.65591020348403e-06,-1.07484616603554e-14,-1.7737304371905e-14,1.47703069026479e-10,2.5286121532557e-10,-1.00429430592747e-06,4.23456241285988e-10,-1.4135247692795e-06,-9.47742683178941e-15,-1.14288755933763e-05,3.89407610560204e-11,1.07480898154781e-10,-2.73629301507077e-15,8.93570021045716e-11,-1.86433313476083e-14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive416.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive416.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive416.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive416_field1":[-0.00613466600270633,4.71387678895857e-05,0,0,0.228060652971698,0.172763056323951,-0.00267383673665052,0,-0.00401331392988853,0,-3,0,-0.00388446138474716,0,0,0,0,0,0,0,-0.013943570719005,0.0141822063292884,-0.389982675513388,-0.504333198442983,0.849429868881152,0,0,-0.358919804315792,1.02607058655159,2.86144849092636,0.00881897717764776,0.236083503266921,-0.0122835793457111,-0.0668043370162927,0.00808844784964305,0,-0.543299692888284,-0.0112957794292875,0.0715181741536077,0.241526090966982,1.67456823149006,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive416_field2":[183024316.195468,106573498.485089],"Archive416_field3":[19.9922419937116,19.9998684963056,1,1,20.4490718992789,20.4557456195366,19.9952217804873,1,19.994737909557,1,14.4587006209479,1,19.9905461346642,1,1,1,1,1,1,1,19.9813807734992,20.0487287796789,19.2661837871308,19.0730479978217,21.6099217167334,1,1,19.4886432468666,23.064928785258,25.8614484909264,20.1052716539239,20.429579653041,19.9779966054042,19.8719259727624,20.0155240205881,1,18.9917621052082,19.9816263552965,20.1314174045869,20.4526207787017,23.3593276552113,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"Archive416_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,7421510.25,6497298.0368145,7027945.3125,4509129.7125,4272990.75,8838344.025,7972501.1625,6752449.85625,5954097.2310791,6044032.96875,6791806.35,6437597.90625,8523492.075,3407147.8875,8129927.1375,7657649.2125,8602205.0625,7775718.69375,7952822.915625,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,1821643.425,1113226.5375,1546147.96875,1467434.98125,1801965.178125,2102058.44296875,1270652.5125,2357875.65234375,2714851.34956055,3710755.125,3248649.01840725,3513972.65625,2254564.85625,2136495.375,4419172.0125,3986250.58125,3376224.928125,2977048.61553955,3022016.484375,3395903.175,3218798.953125,4261746.0375,1703573.94375,4064963.56875,3828824.60625,4301102.53125,3887859.346875,3976411.4578125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive416_field5":[0,0,0,0,2516.72892205605,0,0,3534.3948879721,0,2179.88458923951,485.070511504506,2683.43576440078,1777.7295673507,0,3549.01963713182,3251.50349561387,1588.18110935733,3222.90801728576,2550.82236373204,3670.61186495576,2563.13509770545,1657.46990735213,0,630.451165377172,233.266999876802,626.425637835733,0,0,180.607277490316,191.941253805705,1117.31596261615,1369.79635089096,0,779.667620709153,0,1721.06306618039,269.252915269855,258.595956354343,0,189.909110240641,173.237215596892,0,0,0,0,2516.72801434246,0,0,3534.39629893959,0,2179.89094841436,485.18055385489,2683.43896438586,1777.70598735022,0,3549.02155308181,3251.50370672394,1588.17947340452,3222.90995338261,2550.8277503058,3670.61435547655,2563.12977091057,1657.48406570805,0,630.591675053039,233.336048285441,626.424059402863,0,0,180.656573296378,192.005317885369,1117.43417515168,1370.06190307859,0,779.792613674021,0,1721.06776837481,269.361538139006,258.714742204057,0,190.013910844711,173.244523494031,0,0,0,0,2516.72758212509,0,0,3534.3969302627,0,2179.8941690474,485.214549405901,2683.44209717822,1777.69816258477,0,3549.02226109622,3251.50430336658,1588.17873397243,3222.91114103755,2550.82982477372,3670.61536419592,2563.12819877427,1657.48884252986,0,630.634954161007,233.363197767834,626.420216235084,0,0,180.672318024165,192.047895770692,1117.47573873802,1370.15135080943,0,779.830324409985,0,1721.07190256485,269.396698619341,258.753657470187,0,190.050341232349,173.246824632037],"Archive416_field6":[0,0,0,0,574.419818807121,0,0,556.06880069851,0,410.728137916736,32.0046914689018,526.429492145072,299.826192728107,0,571.917074181271,600.945877261335,145.642484298908,573.515947961936,615.514883186436,260.307394554389,600.625765148896,428.608650469549,0,87.9095167407851,22.7453867812404,230.655387175176,0,0,10.1406662532337,16.4933131237142,312.746666048296,110.954972088766,0,7.40170550328108,0,312.592270472789,56.2501170358354,-1.52910785326598,0,40.5605050738677,23.1739850754018,0,0,0,0,574.419855225076,0,0,556.068801086838,0,410.728000813115,32.0121815053331,526.429884808636,299.823838686298,0,571.916897342941,600.945771659225,145.640804858226,573.515988309236,615.515229911639,260.307425805468,600.62432495662,428.613565451403,0,87.9323004735155,22.7487631061795,230.65289455391,0,0,10.1416793792493,16.5025137515144,312.778744458998,110.980082762179,0,7.40382905457381,0,312.59437081978,56.2720403667048,-1.52953414227635,0,40.5773924282732,23.175629887259,0,0,0,0,574.419468718483,0,0,556.068809920095,0,410.728011033048,32.014622685029,526.429961541047,299.823034670725,0,571.916862849452,600.945731156893,145.640348496838,573.515978477575,615.515386264202,260.307382805929,600.623889605179,428.614650322448,0,87.9379278249608,22.7495933723133,230.651693586603,0,0,10.1419992937941,16.505282358558,312.787742096398,110.986627211027,0,7.40497978707683,0,312.594857487249,56.2782127050673,-1.52944499905967,0,40.5822031772856,23.176118316033],"Archive416_field7":[0,0,0,0,2450.29883949132,0,0,3490.37627348085,0,2140.83734319628,484.013533594025,2631.28830532913,1752.26161122109,0,3502.63379076908,3195.48616666938,1581.47589123069,3171.4674213839,2475.44283395679,3661.36942137725,2491.7665150948,1601.09364637285,0,624.292066048306,232.155301553111,582.37679602888,0,0,180.322363743648,191.231281826989,1072.65300904091,1365.29503957769,0,779.632425539499,0,1692.42606221185,263.311710156235,258.591426619987,0,185.527127571602,171.680222433589,0,0,0,0,2450.29823892338,0,0,3490.37763304368,0,2140.84222847376,484.123053926836,2631.28893807293,1752.23819602428,0,3502.63556034883,3195.48555848135,1581.47430449638,3171.46833728676,2475.44846887217,3661.37159454649,2491.76248816001,1601.10647144114,0,624.429291378335,232.222995989263,582.382715552817,0,0,180.371139743726,191.285052700798,1072.76332971363,1365.55149771555,0,779.756302507705,0,1692.42662601965,263.416799572527,258.709109603733,0,185.6287988719,171.68732867093,0,0,0,0,2450.29673796199,0,0,3490.37819979191,0,2140.84357869906,484.15613443332,2631.2889457008,1752.23049626616,0,3502.63606608916,3195.48509633252,1581.47350510447,3171.46823650475,2475.45073412491,3661.3722302133,2491.76163496415,1601.10839120159,0,624.467494120013,232.243948079535,582.385054615413,0,0,180.385130857271,191.300462172415,1072.7939811631,1365.62103840543,0,779.79151947988,0,1692.42635138205,263.447550954892,258.74428809181,0,185.659088729952,171.689407611206],"Archive416_field8":[0,0,0,0,1.39142462558209,0,0,-2.86051305672074,0,-3.8326366484188,0.0123712766933413,-4.62014103842416,2.4320008161207,0,-2.78796876368398,-2.68201722961134,-6.44269685825335,-3.15284295034131,-4.35151737572704,-2.34172968109461,3.13904144360313,0.504048654949526,0,0.0711405175832465,0.237849699981061,-6.66629973158976,0,0,0.0265388033795966,-0.11129023241102,-0.0734030639302221,-0.701418220501724,0,-0.307547253184073,0,-6.17852385422629,-0.00306098373850911,0.0674583587021321,0,0.0227062755115395,-0.0225531077493017,0,0,0,0,-0.51810070416417,0,0,-2.94366507348259,0,-4.64856003863688,-0.508655837610636,-5.89714673634261,2.35533645157036,0,-3.02954661118292,-3.5468156879297,-6.46683240808506,-4.06993291661216,-4.25340280560371,-2.79952660411246,2.08456161402553,-1.38083179031194,0,-1.35323626278231,-0.827852870380097,-6.05946020625921,0,0,-0.442450118626594,-1.93332599308543,-2.726028853051,-4.70601575260402,0,-1.34623749954245,0,-7.15109853093848,-0.827891627145645,-0.758265826285708,0,-0.842951718247173,0.127568972231472,0,0,0,0,-2.42745116976872,0,0,-3.02683033356541,0,-5.46449839095219,-1.02974758663114,-7.17417123549552,2.27883587653844,0,-3.2711276912027,-4.41159069101827,-6.49096175937102,-4.98701276658716,-4.15537574625099,-3.25732262841269,1.03010103048675,-3.26561844186797,0,-2.77759733937425,-1.89384641765358,-5.45267954720814,0,0,-0.911546024543932,-3.75540901035794,-5.37857253703125,-8.71046323148254,0,-2.38480418392607,0,-8.12367025157897,-1.65284530221076,-1.58411870002078,0,-1.70873045664157,0.27766706340684],"Archive416_field9":[256.548068401177,258.654932005927,272.94723599006,272.885524909748,272.599077581458,261.513084151836,272.63432213482,272.906486520266,272.576969577472,272.759512302365,257.861967543299,272.724055521234,272.623253392778,272.792958481627,272.930179683693,272.834623504718,272.834019401792,272.779492365232,272.720012343134,272.900952667824,272.687856639141,272.611059918917,257.853412784461,257.609973676582,255.709646006604,272.673774641276,272.729061297283,258.063407695941,256.547498606828,256.356760599983,253.135356262356,253.207127345198,260.738339014419,254.910467897429,257.162727797179,272.788118557802,257.596116906551,256.490183884233,258.854757425252,256.270809258891,258.772967016099,252.43279192774,252.92147297836,266.454897236023,265.318922222273,249.604202019149,254.097160804975,259.6127519256,241.628540240121,254.414999582373,247.694489983066,252.978933276674,247.835228118966,246.030335847766,263.656393228589,252.733254965683,244.325926533753,257.90264402947,242.573586932433,241.780031226185,254.742835128624,246.745158004956,247.149738383858,253.146670772325,252.162558611782,253.504513610844,260.076360611562,249.197793013175,252.324873717117,253.023697392503,253.023162530552,253.81519365558,252.909201949078,253.861889841939,251.77213232965,252.468716675567,256.798424398158,253.121803526158,253.077279432331,253.16326540271,253.185518264811,253.358634973632,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive416_field10":[2.24209477321643e-11,-3.94681024392212e-14,0.179379637433669,0.153284175948171,-5.77108289302353e-06,5.85765038564905e-18,-6.20917283178938e-06,-2.50263199774498e-06,0.0210213858848514,-8.34623996046572e-06,2.50697265877047e-10,-5.92129826319011e-06,0.0542177097390815,0.0676886302363555,-5.66905465428415e-06,1.8116372974196e-09,-1.56200330272443e-05,-6.63372705532833e-06,-6.87726738772537e-06,0.0527903367344581,0.0274904392337751,-3.51929532874055e-06,-7.09241785681635e-07,-1.34506691136012e-06,3.24994621406466e-10,-7.70662185455979e-06,-5.92861921833874e-06,-1.93896910942095e-14,-5.53188309872727e-14,5.79131322955361e-10,-1.64011758743915e-06,-2.62398049469214e-06,6.86526142733954e-10,-3.69407920664816e-06,-2.47701572976887e-14,-1.30283351414755e-05,4.4824625350597e-11,2.80917619736735e-10,-7.15060534559784e-15,2.33523919290454e-10,-6.16928713212078e-14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive417.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive417.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive417.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive417_field1":[3.1709791984e-08,-95129.375951,-95129.375951,-190258.7519,4.3655745685e-11,5.8207660913e-11,-8.731149137e-11,0,6.789355214e-24,4.4789850017e-11,2.9859900011e-11,5.9719800023e-11,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive418.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive418.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive418.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive418_field1":[557.470845264093,815.110972813632,852.483546705447,650.19122292476,224.010212963624,691.349474066073,588.814460871694,116.956453957735,200.373856290126,436.641070616346,411.743874470534,313.888843662548,423.061119492389,750.221490513423,695.980936147215,35.2814013810386,778.48133227857,511.841922148525,26.7433962766551,26.7433962766551,35.2814013810386,26.7433962766551,26.7433962766551,26.7433962766551,26.7433962766551,26.7433962766551,35.2814013810386,26.7433962766551,171.184214898343,26.7433962766551,171.184214898343,26.7433962766551,795.417789206049,116.956453957735,35.2814013810386,171.184214898343,171.184214898343,171.184214898343,402.756018996314,35.2814013810386,26.7433962766551,35.2814013810386,35.2814013810386,116.956453957735,116.956453957735,105.558025948333,67.7566119089251,116.956453957735,258.909178059767,116.956453957735,258.909178059767,116.956453957735,258.909178059767,402.756018996314,258.909178059767,258.909178059767,105.558025948333,35.2814013810386,67.7566119089251,67.7566119089251,67.7566119089251,124.981541035805,67.7566119089251,105.558025948333,105.558025948333,105.558025948333,105.558025948333,105.558025948333,493.791562656559,493.791562656559,67.7566119089251,124.981541035805,94.1882421011019,67.7566119089251,124.981541035805,124.981541035805,105.558025948333,90.6400774832752,67.7566119089251,225.323855343808,124.981541035805,90.6400774832752,90.6400774832752,90.6400774832752,94.1882421011019,225.323855343808,225.323855343808,124.981541035805,67.7566119089251,90.6400774832752,94.1882421011019,225.323855343808,225.323855343808,124.981541035805,90.6400774832752,94.1882421011019,90.6400774832752,94.1882421011019,94.1882421011019,90.6400774832752,112.336168411585,313.888843662548,112.336168411585,313.888843662548,313.888843662548,90.6400774832752,313.888843662548,112.336168411585,112.336168411585,133.103303931445,112.336168411585,94.1882421011019,112.336168411585,662.664421094291,112.336168411585,347.45906965341,133.103303931445,347.45906965341,133.103303931445,347.45906965341,157.546733459281,112.336168411585,112.336168411585,112.336168411585,251.868934592055,251.868934592055,157.546733459281,251.868934592055,402.756018996314,124.981541035805,157.546733459281,116.956453957735,402.756018996314,402.756018996314,157.546733459281,157.546733459281,224.010212963624,133.103303931445,157.546733459281,133.103303931445,133.103303931445,205.239732549326,205.239732549326,261.949218056048,205.239732549326,163.011690549063,205.239732549326,205.239732549326,205.239732549326,205.203508156481,205.239732549326,261.949218056048,402.756018996314,133.103303931445,163.011690549063,133.103303931445,347.45906965341,163.011690549063,347.45906965341,182.592492644704,163.011690549063,485.037453649004,163.011690549063,485.037453649004,200.373856290126,485.037453649004,163.011690549063,182.592492644704,163.011690549063,182.592492644704,205.239732549326,383.071931181767,182.592492644704,163.011690549063,281.244935264795,281.244935264795,281.244935264795,244.448196520679,281.244935264795,281.244935264795,219.293611268882,281.244935264795,219.293611268882,219.293611268882,219.293611268882,163.011690549063,200.373856290126,281.244935264795,200.373856290126,270.145335134755,205.203508156481,205.203508156481,182.592492644704,485.037453649004,182.592492644704,270.145335134755,277.36989251059,277.36989251059,270.145335134755,270.145335134755,277.36989251059,277.36989251059,219.293611268882,277.36989251059,277.36989251059,205.203508156481,182.592492644704,200.373856290126,182.592492644704,200.373856290126,244.448196520679,244.448196520679,244.448196520679,244.448196520679,277.36989251059,205.203508156481,265.600234392942,261.949218056048,205.203508156481,261.949218056048,270.145335134755,205.203508156481,261.949218056048,241.892743287893,261.949218056048,241.892743287893,265.600234392942,241.892743287893,265.600234392942,241.892743287893,265.600234392942,265.600234392942,312.599259346845,205.203508156481,200.373856290126,200.373856290126,200.373856290126,200.373856290126,244.448196520679,244.448196520679,270.145335134755,241.892743287893,359.740362766942,283.680968387729,224.010212963624,261.949218056048,224.010212963624,244.448196520679,383.071931181767,244.448196520679,241.892743287893,312.599259346845,312.599259346845,265.600234392942,358.930251339354,359.740362766942,312.599259346845,359.740362766942,359.740362766942,312.599259346845,358.930251339354,358.930251339354,283.680968387729,241.892743287893,241.892743287893,157.546733459281,224.010212963624,224.010212963624,224.010212963624,244.448196520679,283.680968387729,265.600234392942,526.736086156043,283.680968387729,283.680968387729,283.680968387729,283.680968387729,157.546733459281,224.010212963624,224.010212963624,244.448196520679,244.448196520679,244.448196520679,219.293611268882,466.465624043855,359.740362766942,418.010612508314,359.740362766942,388.990084344764,283.680968387729,418.010612508314,314.54584139144,418.010612508314,418.010612508314,465.933130093085,418.010612508314,418.010612508314,418.010612508314,775.913073200449,388.990084344764,465.933130093085,388.990084344764,365.887154131521,388.990084344764,388.990084344764,388.990084344764,388.990084344764,365.887154131521,365.887154131521,314.54584139144,365.887154131521,365.887154131521,314.54584139144,423.061119492389,339.878205419523,314.54584139144,365.887154131521,423.061119492389,365.887154131521,314.54584139144,339.878205419523,314.54584139144,339.878205419523,339.878205419523,339.878205419523,339.878205419523,336.235528062268,336.235528062268,339.878205419523,341.640311132877,314.54584139144,336.235528062268,336.235528062268,336.235528062268,341.640311132877,339.878205419523,336.235528062268,336.235528062268,415.182153967803,341.640311132877,341.640311132877,341.640311132877,336.235528062268,415.182153967803,341.640311132877,415.182153967803,251.868934592055,415.182153967803,341.640311132877,365.801073059213,341.640311132877,365.801073059213,365.801073059213,251.868934592055,219.293611268882,383.071931181767,312.599259346845,283.680968387729,283.680968387729,336.235528062268,389.2622648537,251.868934592055,251.868934592055,365.801073059213,365.801073059213,365.801073059213,365.801073059213,365.801073059213,383.071931181767,383.071931181767,437.677174621868,383.071931181767,383.071931181767,383.071931181767,265.600234392942,312.599259346845,389.2622648537,389.2622648537,389.2622648537,225.323855343808,389.2622648537,225.323855343808,436.641070616346,436.641070616346,389.2622648537,436.641070616346,436.641070616346,511.841922148525,436.641070616346,225.323855343808,225.323855343808,365.801073059213,365.801073059213,411.743874470534,265.600234392942,466.465624043855,462.050596661547,312.599259346845,466.465624043855,358.930251339354,466.465624043855,312.599259346845,358.930251339354,358.930251339354,466.465624043855,466.465624043855,358.930251339354,462.050596661547,488.233477138071,434.133580438557,437.677174621868,270.145335134755,270.145335134755,462.050596661547,518.37872354923,389.2622648537,415.182153967803,389.2622648537,434.133580438557,389.2622648537,750.221490513423,660.862760392886,415.182153967803,415.182153967803,434.133580438557,436.641070616346,441.059233853717,434.133580438557,660.862760392886,434.133580438557,434.133580438557,423.061119492389,441.059233853717,441.059233853717,588.814460871694,441.059233853717,441.059233853717,750.221490513423,660.862760392886,588.814460871694,441.059233853717,441.059233853717,588.814460871694,557.470845264093,437.677174621868,411.743874470534,488.233477138071,415.182153967803,339.878205419523,434.133580438557,437.677174621868,411.743874470534,277.36989251059,277.36989251059,411.743874470534,411.743874470534,462.050596661547,277.36989251059,462.050596661547,411.743874470534,270.145335134755,462.050596661547,502.001868096746,488.233477138071,423.061119492389,434.133580438557,434.133580438557,633.343143998596,441.059233853717,437.677174621868,437.677174621868,497.985691011856,383.071931181767,437.677174621868,411.743874470534,497.985691011856,411.743874470534,557.470845264093,383.071931181767,383.071931181767,383.071931181767,502.001868096746,567.78465650621,411.743874470534,526.736086156043,497.985691011856,502.001868096746,497.985691011856,526.736086156043,497.985691011856,502.001868096746,497.985691011856,462.050596661547,518.37872354923,488.233477138071,423.061119492389,423.061119492389,423.061119492389,757.777735989513,633.343143998596,633.343143998596,633.343143998596,557.470845264093,502.001868096746,502.001868096746,557.470845264093,567.78465650621,488.233477138071,518.37872354923,518.37872354923,518.37872354923,691.349474066073,518.37872354923,518.37872354923,488.233477138071,488.233477138071,600.357808155674,600.357808155674,600.357808155674,691.349474066073,465.933130093085,600.357808155674,600.357808155674,734.457546274253,600.357808155674,600.357808155674,566.97416874703,566.97416874703,566.97416874703,566.97416874703,465.933130093085,566.97416874703,418.010612508314,566.97416874703,734.457546274253,734.703142122223,566.97416874703,734.457546274253,566.97416874703,502.001868096746,557.470845264093,557.470845264093,557.470845264093,497.985691011856,567.78465650621,497.985691011856,567.78465650621,567.78465650621,567.78465650621,567.78465650621,567.78465650621,502.001868096746,567.78465650621,502.001868096746,567.78465650621,526.736086156043,488.233477138071,488.233477138071,691.349474066073,691.349474066073,691.349474066073,691.349474066073,465.933130093085,359.740362766942,465.933130093085,557.470845264093,526.736086156043,358.930251339354,465.933130093085,359.740362766942,359.740362766942,526.736086156043,526.736086156043,526.736086156043,526.736086156043,526.736086156043,518.37872354923,518.37872354923,466.465624043855,171.184214898343,124.981541035805,846.809479620195,695.980936147215,695.980936147215,695.980936147215,695.980936147215,511.841922148525,695.980936147215,171.184214898343,511.841922148525,511.841922148525,511.841922148525,511.841922148525,778.48133227857,116.956453957735,105.558025948333,493.791562656559,493.791562656559,258.909178059767,258.909178059767,402.756018996314,258.909178059767,402.756018996314,402.756018996314,493.791562656559,258.909178059767,402.756018996314,402.756018996314,493.791562656559,313.888843662548,493.791562656559,493.791562656559,313.888843662548,678.610433147502,313.888843662548,313.888843662548,678.610433147502,630.904453467895,678.610433147502,630.904453467895,678.610433147502,678.610433147502,757.322567980623,795.417789206049,795.417789206049,678.610433147502,678.610433147502,661.384445602427,678.610433147502,630.904453467895,630.904453467895,630.904453467895,650.19122292476,651.304143871895,679.184916502384,630.904453467895,679.184916502384,651.304143871895,757.322567980623,679.184916502384,651.304143871895,661.384445602427,757.322567980623,347.45906965341,650.19122292476,650.19122292476,650.19122292476,630.904453467895,630.904453467895,651.304143871895,661.384445602427,661.384445602427,347.45906965341,347.45906965341,650.19122292476,679.184916502384,651.304143871895,651.304143871895,651.304143871895,651.304143871895,661.384445602427,347.45906965341,347.45906965341,650.19122292476,650.19122292476,650.19122292476,650.19122292476,679.184916502384,679.184916502384,651.304143871895,662.664421094291,757.322567980623,650.19122292476,650.19122292476,679.184916502384,679.184916502384,662.664421094291,662.664421094291,650.19122292476,650.19122292476,757.322567980623,757.322567980623,757.322567980623,662.664421094291,662.664421094291,662.664421094291,662.664421094291,205.239732549326,485.037453649004,661.384445602427,661.384445602427,661.384445602427,662.664421094291,485.037453649004,485.037453649004,485.037453649004,485.037453649004,662.664421094291,261.949218056048,772.839712067193,415.182153967803,462.050596661547,436.641070616346,660.862760392886,750.221490513423,588.814460871694,588.814460871694,588.814460871694,723.519867147862,588.814460871694,588.814460871694,588.814460871694,588.814460871694,723.519867147862,736.996364505968,723.519867147862,736.996364505968,723.519867147862,723.519867147862,633.343143998596,723.519867147862,736.996364505968,723.519867147862,723.519867147862,723.519867147862,633.343143998596,633.343143998596,736.996364505968,747.48490777748,365.887154131521,633.343143998596,388.990084344764,772.839712067193,736.996364505968,388.990084344764,772.839712067193,772.839712067193,772.839712067193,747.48490777748,769.61384812426,747.48490777748,747.48490777748,772.839712067193,747.48490777748,734.703142122223,747.48490777748,772.839712067193,769.61384812426,747.48490777748,757.777735989513,757.777735989513,757.777735989513,723.519867147862,723.519867147862,736.996364505968,736.996364505968,772.839712067193,782.837068708554,815.110972813632,757.777735989513,736.996364505968,736.996364505968,734.703142122223,769.61384812426,757.777735989513,757.777735989513,734.703142122223,769.61384812426,769.61384812426,757.777735989513,734.703142122223,782.837068708554,769.61384812426,823.49285080571,757.777735989513,757.777735989513,757.777735989513,798.792156423819,757.777735989513,734.703142122223,734.703142122223,734.703142122223,418.010612508314,782.837068708554,782.837068708554,782.837068708554,782.837068708554,775.913073200449,782.837068708554,769.61384812426,769.61384812426,747.48490777748,798.792156423819,823.49285080571,798.792156423819,798.792156423819,769.61384812426,782.837068708554,775.913073200449,782.837068708554,775.913073200449,823.49285080571,775.913073200449,775.913073200449,823.49285080571,815.110972813632,798.792156423819,775.913073200449,734.457546274253,775.913073200449,775.913073200449,734.457546274253,734.457546274253,734.457546274253,734.457546274253,734.457546274253,775.913073200449,823.49285080571,823.49285080571,815.110972813632,798.792156423819,798.792156423819,734.457546274253,566.97416874703,691.349474066073,823.49285080571,823.49285080571,823.49285080571,815.110972813632,823.49285080571,815.110972813632,815.110972813632,815.110972813632,815.110972813632,691.349474066073,815.110972813632,815.110972813632,815.110972813632,815.110972813632,734.457546274253,600.357808155674,691.349474066073,600.357808155674,815.110972813632,691.349474066073,600.357808155674,466.465624043855,633.343143998596,423.061119492389,418.010612508314,557.470845264093,557.470845264093,567.78465650621,846.809479620195,846.809479620195,846.809479620195,846.809479620195,852.483546705447,852.483546705447,846.809479620195,852.483546705447,695.980936147215,846.809479620195,846.809479620195,846.809479620195,695.980936147215,695.980936147215,695.980936147215,695.980936147215,695.980936147215,846.809479620195,852.483546705447,852.483546705447,852.483546705447,852.483546705447,852.483546705447,852.483546705447,852.483546705447,888.690461003893,888.690461003893,852.483546705447,888.690461003893,888.690461003893,888.690461003893,888.690461003893,778.48133227857,750.221490513423,888.690461003893,778.48133227857,778.48133227857,778.48133227857,778.48133227857,660.862760392886,660.862760392886,888.690461003893,888.690461003893,778.48133227857,660.862760392886,750.221490513423,750.221490513423,750.221490513423,750.221490513423,750.221490513423,436.641070616346,511.841922148525,402.756018996314,795.417789206049,795.417789206049,678.610433147502,795.417789206049,795.417789206049,795.417789206049,678.610433147502,795.417789206049,795.417789206049,795.417789206049,757.322567980623,757.322567980623,679.184916502384,757.322567980623,757.322567980623,662.664421094291,485.037453649004,772.839712067193,772.839712067193,823.49285080571,691.349474066073,691.349474066073,852.483546705447,888.690461003893,778.48133227857,750.221490513423,281.244935264795]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive419.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive419.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive419.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive419_field1":[0,0,0,0,460.699409172781,0,0,411.930870148711,0,412.113665872112,48.6782095697768,558.489205638221,474.585530791265,12.8041601626837,0,0,37.3055881906049,360.90452764754,12.3481372641369,0,385.193654375586,0,590.299028473703,495.115300279937,0,0,-8.05052113481377,0,0,0,0,460.700149481497,0,0,411.930911232103,0,412.113665872112,48.6874814253371,558.488796038579,474.585530791265,12.8136756324218,0,0,37.3144437971117,360.917068255483,12.3481372641369,0,385.19291331027,0,590.299028473703,495.11518598508,0,0,-8.04985860132564,0,0,0,0,460.700635943243,0,0,411.930941539368,0,412.113665872112,48.6939938609159,558.488491924358,474.585530791265,12.8203469843392,0,0,37.3207546171593,360.925814015753,12.3481372641369,0,385.192376231192,0,590.299028473703,495.115118111002,0,0,-8.04939922267804,0,0,0,0,460.700867397039,0,0,411.930960947623,0,412.113665872112,48.6977597545212,558.488293699036,474.585530791265,12.8241950113311,0,0,37.3245357873305,360.930762063323,12.3481372641369,0,385.192043676665,0,590.299028473703,495.115096908179,0,0,-8.04914314479,0,0,0,0,460.700843156098,0,0,411.9309693847,0,412.113665872112,48.6987867862333,558.488201599747,474.585530791265,12.8252319766983,0,0,37.3257962511733,360.93191069981,12.3481372641369,0,385.19191596608,0,590.299028473703,495.115122525062,0,0,-8.04909045348228],"Archive419_field2":[0,0,0,0,2616.0506550563,0,0,3911.72889512123,0,2410.52317701054,400.448997673779,2568.91270802335,2550.75306878249,285.83299673442,0,0,360.465667653174,1560.51892514178,710.617319128655,0,1313.49675859177,0,3191.25179185255,2925.6457587086,0,0,3210.78107670758,0,0,0,0,2616.05502302678,0,0,3911.73073942792,0,2410.52317701054,400.519121472233,2568.90916494045,2550.75306878249,285.93661306116,0,0,360.527221614549,1560.57399171581,710.617319128655,0,1313.48949621265,0,3191.25179185255,2925.64609125257,0,0,3210.78394337495,0,0,0,0,2616.05792959997,0,0,3911.73230606959,0,2410.52317701054,400.568811004084,2568.90645674504,2550.75306878249,286.009614091344,0,0,360.57058766118,1560.61261022607,710.617319128655,0,1313.48442110664,0,3191.25179185255,2925.64636214606,0,0,3210.78695960399,0,0,0,0,2616.05932518079,0,0,3911.73328269939,0,2410.52317701054,400.598166700366,2568.90480817543,2550.75306878249,286.052204412924,0,0,360.595892978674,1560.63471920978,710.617319128655,0,1313.48148678657,0,3191.25179185255,2925.64659766394,0,0,3210.78911676029,0,0,0,0,2616.05916892055,0,0,3911.7333916384,0,2410.52317701054,400.607248893943,2568.90441825837,2550.75306878249,286.064505752077,0,0,360.603213873944,1560.64027144916,710.617319128655,0,1313.48065057199,0,3191.25179185255,2925.64682044845,0,0,3210.78951743814],"Archive419_field3":[0,0,0,0,-3.05267986914822,0,0,-1.85501681193505,0,-5.05007791599211,-8.78910559309269,-4.46619468085479,-3.97223856758372,-6.82934705470711,0,0,-5.49057141172362,-4.38282523771415,-8.03676919404803,0,-6.40333244493011,0,-3.58248362538708,-2.34941493027325,0,0,-3.84543084278849,0,0,0,0,-3.98229952502341,0,0,-2.38836590281347,0,-4.76132709091251,-9.28663068612891,-4.71862076669441,-4.60885371562564,-8.16041342708464,0,0,-6.57692991974849,-5.7767040895087,-8.87882669304145,0,-7.1913963999174,0,-3.93168398390818,-2.46893530857407,0,0,-4.13722079215349,0,0,0,0,-4.91187752433124,0,0,-2.92171200947425,0,-4.47258483936936,-9.78420765550722,-4.97104803070285,-5.24543976652887,-9.49150658279455,0,0,-7.66329619441,-7.1705454715604,-9.72088093592698,0,-7.97944867296756,0,-4.28088089268982,-2.58846394456539,0,0,-4.42901481441104,0,0,0,0,-5.84142731654122,0,0,-3.45505647684773,0,-4.18384837327402,-10.2818146244107,-5.22347617984309,-5.88200627284031,-10.8226107302226,0,0,-8.74966345173823,-8.56435946292116,-10.5629329520643,0,-8.76749326615149,0,-4.6300754150126,-2.70799808212294,0,0,-4.72081270898293,0,0,0,0,-6.77096456076526,0,0,-3.98839981779665,0,-3.89511461040125,-10.7794273549244,-5.47590538758414,-6.51856382983456,-12.1537082781035,0,0,-9.83602307427026,-9.95815648754163,-11.4049841348897,0,-9.55553564034036,0,-4.97926890425311,-2.82753492215337,0,0,-5.01261197862592],"Archive419_field4":[0,0,0,0,2656.30839592978,0,0,3933.35905198028,0,2445.50304922944,403.492523105422,2628.92423648024,2594.53048211405,286.20113298316,0,0,362.432546608776,1601.71489440512,710.770033413459,0,1368.82755994636,0,3245.38961855246,2967.24582496486,0,0,3210.79347214554,0,0,0,0,2656.31405709969,0,0,3933.36117814084,0,2445.50246999245,403.574378549893,2628.92112821925,2594.53153487721,286.339884262394,0,0,362.512760117714,1601.77579082969,710.780053394111,0,1368.8242959955,0,3245.39002281052,2967.24623081672,0,0,3210.79669986341,0,0,0,0,2656.31856024879,0,0,3933.3630993524,0,2445.50192486505,403.636232400907,2628.91888243757,2594.53274378607,286.4540964041,0,0,362.57787235308,1601.82101969663,710.791070755437,0,1368.82364196328,0,3245.39046463755,2967.24658844966,0,0,3210.8001041739,0,0,0,0,2656.32185631915,0,0,3933.36450497289,0,2445.50141383945,403.678187026217,2628.91771882825,2594.53410884065,286.543980097645,0,0,362.628012728396,1601.85052051046,710.803085454784,0,1368.82555337816,0,3245.39094403394,2967.24692381045,0,0,3210.8026764478,0,0,0,0,2656.32390497453,0,0,3933.36511884292,0,2445.5009369087,403.700304378043,2628.91783192501,2594.53563005293,286.609666011712,0,0,362.663260162811,1601.86424702937,710.816097456021,0,1368.8299893756,0,3245.39146100096,2967.24725924666,0,0,3210.8035192809],"Archive419_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,2136495.375,2570400.71859375,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2248942.5,2091516.525,517256.775,674682.75,1383099.6375,2170229.5125,1304386.65,595969.7625,1461812.625,950178.20625,1816021.06875,1028891.19375,1343743.14375,1756986.328125,1697951.5875,2130873.01875,1688112.4640625,1466732.18671875,1629077.7234375,1068247.6875,1285200.35929688,910821.7125,556613.26875,989534.7,1855377.5625,2209586.00625,635326.25625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive420.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive420.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive420.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive420_field1":[828.89347484,788.05555556,422.5,463.00189394,534.80271465,819.76902174,594.375,351.33333333,643.15705128,422.5,828.89347484,463.00189394,594.375,778.33333333,788.05555556,788.05555556,819.76902174,643.15705128,788.05555556,422.5,422.5,534.80271465,828.89347484,828.89347484,351.33333333,463.00189394]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive421.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive421.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive421.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive421_field1":[0,0,0,0,-398011.341151843,0,0,-719431.260833015,0,1611448.61272468,-4105.41220512884,108283.850665594,2324596.81819431,-52002.6069695147,0,0,36666.9602246856,7160.82155071922,-327875.457017951,0,-11238.5024968068,0,1442762.5663003,-323872.567092633,0,0,-470178.837008082,0,0,0,0,-238376.08393645,0,0,-651644.546688404,0,607793.36555223,-3205.33984897522,88211.9343564964,1226362.12937249,-38398.6270371937,0,0,22059.3334446927,385.827215476207,-195627.766989348,0,-6836.07567267313,0,613246.184501189,-235219.709320691,0,0,-470595.309604775,0,0,0,0,-71720.6269372351,0,0,-583780.651735521,0,-384797.112617674,-2260.45527440738,67823.9381891359,75060.9340822322,-27918.6435232339,0,0,7085.62235500589,-6877.61073772449,-13886.4554482324,0,-2289.22269408979,0,-220506.466816415,-148967.075794409,0,0,-470961.155610969,0,0,0,0,102170.075946361,0,0,-515738.825740631,0,-1365954.32179743,-1267.47517345556,47139.1082657527,-1128582.50321189,-20673.1200991794,0,0,-8228.82069094009,-14648.6485168748,221643.630707099,0,2401.88500337278,0,-1058705.29002692,-65312.9975385267,0,0,-471282.388802958,0,0,0,0,282951.019895552,0,0,-447456.816377314,0,-2335331.73537565,-232.032943802668,26203.4293791711,-2383108.878333,-17213.3323217064,0,0,-23663.2733458824,-22921.7057910519,514682.823873781,0,7228.93282937127,0,-1901542.10267,15659.0501249251,0,0,-471569.971102937],"Archive421_field2":[0,0,0,0,-2145432.35414884,0,0,2757988.32525387,0,1575556.67260105,-26194.8328786869,182310.424098958,13997205.3759165,-488324.726297054,0,0,247403.777463369,21744.1949099542,-771503.674409516,0,-22217.9383382993,0,-21786865.3407529,357501.247595667,0,0,868869.089404314,0,0,0,0,-1562468.48118548,0,0,2692796.3683312,0,-308482.472974208,-22079.6130754041,148483.339764553,7452956.23007699,-272378.404048072,0,0,176339.703574622,-7617.4721740372,-565352.56736982,0,-11949.7784752331,0,-11692193.8712724,531125.725976216,0,0,897598.994003858,0,0,0,0,-938105.071598257,0,0,2628405.716245,0,-2150685.56514886,-17658.163589865,113810.899003608,289401.087149478,-37323.3110560022,0,0,100018.111303115,-39415.4273884416,-280290.027946228,0,-1172.4669235966,0,-1617639.76502887,694569.170131424,0,0,926700.414304587,0,0,0,0,-274601.002151131,0,0,2564591.5677333,0,-3948599.17095466,-12931.2621905087,78473.9975599755,-7504207.09256341,214496.723624705,0,0,18815.5830523515,-73532.9851973228,94862.6819212651,0,10065.4084950908,0,8435781.84136013,847992.636983016,0,0,956086.272402376,0,0,0,0,425722.799203607,0,0,2501141.31682865,0,-5699890.4817128,-7903.75447989229,42652.8735645168,-15934751.0442778,480571.260418158,0,0,-66920.801571783,-109849.932915177,571232.161055051,0,21715.0977110996,0,18467113.3381919,991581.556984793,0,0,985674.526472697],"Archive421_field3":[0,0,0,0,-2930902286.07633,0,0,-4858747964.16955,0,19245007671.0312,-83412450.7939513,1482836709.94405,5128.70354224178,420637595.348889,0,0,370888208.604706,309244007.097925,113.889037380379,0,-441148081.498767,0,3410118445.87749,-3234549135.4857,0,0,473269623.472677,0,0,0,0,-2930901792.16034,0,0,-4858746927.08069,0,19245008810.2962,-83412778.2117709,1482836473.8634,2046.08479626432,420634430.155551,0,0,370889908.987533,309244418.004558,-3136.01662120105,0,-441148260.113188,0,3410130881.52131,-3234552432.95046,0,0,473269247.342632,0,0,0,0,-2930901387.34167,0,0,-4858747191.30242,0,19245008465.6039,-83412893.5030326,1482836160.95819,1429.29673816961,420634291.980941,0,0,370890483.870471,309244649.500875,-4494.56475372398,0,-441148356.785792,0,3410136488.27676,-3234553961.12022,0,0,473269151.198806,0,0,0,0,-2930901116.3091,0,0,-4858747596.55286,0,19245006756.9688,-83412923.1524019,1482835752.21753,3732.0332869494,420635055.214851,0,0,370890641.994872,309244805.72499,-3253.93986260397,0,-441148401.137174,0,3410135922.73534,-3234554543.51858,0,0,473269096.50887,0,0,0,0,-2930901023.42553,0,0,-4858749296.11233,0,19245003032.2874,-83412728.1997976,1482835258.89014,9152.19275521273,420638991.937868,0,0,370889617.849911,309244776.30671,1146.93712651008,0,-441148360.981029,0,3410129235.60631,-3234553179.81324,0,0,473269322.494447],"Archive421_field4":[0,0,0,0,2930903098.33342,0,0,4858748800.19565,0,19245007802.9912,83412455.0080923,1482836725.10501,14188922.9685112,420637882.015166,0,0,370888292.93347,309244007.945294,838284.109304732,0,441148082.201412,0,3410188347.28804,3234549171.4568,0,0,473270654.597982,0,0,0,0,2930902218.33135,0,0,4858747716.97491,0,19245008822.3662,83412781.1956273,1482836483.92137,7553179.78246682,420634520.096407,0,0,370889951.563918,309244418.098618,598250.435226866,0,441148260.328001,0,3410150980.90593,3234552485.10958,0,0,473270332.499472,0,0,0,0,2930901538.35066,0,0,4858747937.30911,0,19245008589.6236,83412895.4027413,1482836166.87692,298980.2267003,420634294.563327,0,0,370890497.424106,309244652.089242,280669.796243448,0,441148356.79329,0,3410136879.0795,3234554039.12442,0,0,473270292.807933,0,0,0,0,2930901130.95381,0,0,4858748300.7586,0,19245007210.522,83412924.1643796,1482835755.04329,7588599.11200397,420635110.412603,0,0,370890642.563422,309244814.814363,241112.868961715,0,441148401.258541,0,3410146521.01669,3234554655.33572,0,0,473270296.890025,0,0,0,0,2930901068.00247,0,0,4858749960.47312,0,19245004018.0634,83412728.5745795,1482835259.73511,16111970.1629482,420639266.811291,0,0,370889624.642153,309244796.666653,768899.152346447,0,441148361.57471,0,3410179768.5275,3234553331.84029,0,0,473270583.859659],"Archive421_field5":[8995770,8366066.1,-567770397.409594,2698731,-255948878.177112,8680918.05,1195057297.83739,-273770692.036619,5847250.5,435394609.066286,7264084.275,4115564.775,-666158218.308434,1613956943.37119,2108991497.23372,-1313406668.07256,6752449.85625,5866928.746875,-774065207.135089,4272990.75,5140801.4371875,-1717948846.75325,67183794.9004412,-286336014.510166,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,-569107815.874617,2024048.25,-257422951.60086,6510688.5375,1193263500.26048,-274560382.217291,4385437.875,434546610.802487,5448063.20625,3086673.58125,-667684451.318353,1612630614.42986,2106531944.39383,-1317176223.20788,5064337.3921875,4400196.56015625,-774611286.503306,3204743.0625,3855601.07789063,-1718325719.28297,66744225.4325329,-287187254.397735,5566132.6875,6628758.01875,1905978.76875,4497885,4183033.05,-571719843.024321,1349365.5,-259124145.470852,4340459.025,1190676748.72861,-275753990.642784,2923625.25,433843392.942546,3632042.1375,2057782.3875,-669272419.533234,1611903914.83168,2103668087.16714,-1322861117.69458,3376224.928125,2933464.3734375,-774210385.363235,2136495.375,2570400.71859375,-1717827776.45581,66842578.3198372,-287726922.837598,3710755.125,4419172.0125,1270652.5125,2248942.5,2091516.525,-574330011.143508,674682.75,-260841248.147224,2170229.5125,1188075816.28703,-276952152.802415,1461812.625,433225410.524197,1816021.06875,1028891.19375,-670936283.080158,1611237697.66909,2101163155.10759,-1328565934.07634,1688112.4640625,1466732.18671875,-773916445.155323,1068247.6875,1285200.35929688,-1717398674.16106,66832561.4140855,-288294949.215617,1855377.5625,2209586.00625,635326.25625,0,0,-575796509.23883,0,-262385755.286743,0,1186138326.91131,-277810599.768957,0,432305246.610908,0,0,-672270897.101516,1609905454.67033,2099240008.7802,-1332239742.88661,0,0,-774687008.018913,0,0,-1717555988.05166,66572503.4497631,-289031994.809411,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive422.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive422.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive422.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive422_field1":[0,0,0,0,-175343.125168269,0,0,355040.671797196,0,519376.063726834,-1052.65590156259,31158.0124889895,1063991.90440501,-15475.4084653019,0,0,13736.3817058401,-1793.25693169731,-210264.804518893,0,1053.60370685059,0,990121.491495596,-151998.11817829,0,0,203707.097591754,0,0,0,0,-175343.125168269,0,0,355040.671797196,0,140144.040060459,-1052.65590156259,31158.0124889895,408224.595334275,-15475.4084653019,0,0,13736.3817058401,-1793.25693169731,-112224.657019273,0,1053.60370685059,0,582981.95817371,-151998.11817829,0,0,203707.097591754,0,0,0,0,-175343.125168269,0,0,355040.671797196,0,-235993.538894822,-1052.65590156259,31158.0124889895,-263179.760863824,-15475.4084653019,0,0,13736.3817058401,-1793.25693169731,7664.83724553369,0,1053.60370685059,0,175072.271522043,-151998.11817829,0,0,203707.097591754,0,0,0,0,-175343.125168269,0,0,355040.671797196,0,-608971.302661116,-1052.65590156259,31158.0124889895,-950215.206399453,-15475.4084653019,0,0,13736.3817058401,-1793.25693169731,150373.771102283,0,1053.60370685059,0,-233657.740473923,-151998.11817829,0,0,203707.097591754,0,0,0,0,-175343.125168269,0,0,355040.671797196,0,-978727.248551129,-1052.65590156259,31158.0124889895,-1652809.57765036,-15475.4084653019,0,0,13736.3817058401,-1793.25693169731,316777.216705436,0,1053.60370685059,0,-643256.108348097,-151998.11817829,0,0,203707.097591754],"Archive422_field2":[0,0,0,0,-1608407.2833267,0,0,-654269.824332871,0,563310.564075682,-18752.6376603078,-16251.8309672155,10770053.4551268,-372729.570129197,0,0,184969.714164619,12442.4616697929,-621877.784286454,0,5440.11920448279,0,-14724611.1476531,-914254.569117408,0,0,-126397.571863017,0,0,0,0,-1608407.2833267,0,0,-654269.824332871,0,-728954.870494643,-18752.6376603078,-16251.8309672155,5518167.89646707,-372729.570129197,0,0,184969.714164619,12442.4616697929,-384449.750495534,0,5440.11920448279,0,-8048536.31057974,-914254.569117408,0,0,-126397.571863017,0,0,0,0,-1608407.2833267,0,0,-654269.824332871,0,-1998831.28085748,-18752.6376603078,-16251.8309672155,29768.5907655298,-372729.570129197,0,0,184969.714164619,12442.4616697929,-103736.114398178,0,5440.11920448279,0,-1383028.39739319,-914254.569117408,0,0,-126397.571863017,0,0,0,0,-1608407.2833267,0,0,-654269.824332871,0,-3245737.77736419,-18752.6376603078,-16251.8309672155,-5697375.09245773,-372729.570129197,0,0,184969.714164619,12442.4616697929,222970.840021277,0,5440.11920448279,0,5271706.55669908,-914254.569117408,0,0,-126397.571863017,0,0,0,0,-1608407.2833267,0,0,-654269.824332871,0,-4469100.28728216,-18752.6376603078,-16251.8309672155,-11665227.9529502,-372729.570129197,0,0,184969.714164619,12442.4616697929,598281.573703818,0,5440.11920448279,0,11915468.0007416,-914254.569117408,0,0,-126397.571863017],"Archive422_field3":[0,0,0,0,-2005577177.26293,0,0,-3364147923.73749,0,13153793153.4287,-57035434.5875006,1017269967.59286,3954.94096192778,287827487.520706,0,0,253854423.959212,211203653.446562,91.7645115697757,0,-302424997.562996,0,2639309247.16279,-2200336252.17228,0,0,332401819.424237,0,0,0,0,-2005576338.20585,0,0,-3364146799.37698,0,13153794243.388,-57035659.2270761,1017269896.3751,1653.34118727874,287825286.212964,0,0,253855617.482354,211203881.120492,-2733.54996428437,0,-302425032.655963,0,2639317118.88854,-2200337800.47647,0,0,332401529.751928,0,0,0,0,-2005575599.5745,0,0,-3364146615.80304,0,13153794095.0929,-57035834.2616027,1017269806.71076,1322.02659554634,287825497.685321,0,0,253856320.020489,211204195.307491,-3776.98893139595,0,-302425082.843038,0,2639320788.8452,-2200338477.49142,0,0,332401484.499559,0,0,0,0,-2005574971.91113,0,0,-3364146560.34353,0,13153792917.1905,-57035995.7409347,1017269670.22885,3051.4918830628,287826549.059914,0,0,253856861.756735,211204559.76941,-2878.09337888737,0,-302425132.777233,0,2639320481.55924,-2200338675.44888,0,0,332401494.684575,0,0,0,0,-2005574477.7384,0,0,-3364147434.77989,0,13153790308.3836,-57036107.3805251,1017269510.88469,6991.12599586933,287830086.220383,0,0,253856901.921276,211205019.417446,226.668387953229,0,-302425198.677145,0,2639316233.54105,-2200337954.03512,0,0,332401748.774691],"Archive422_field4":[0,0,0,0,2005577829.87277,0,0,3364148006.09458,0,13153793175.7443,57035437.6800474,1017269968.19985,10822483.349051,287827729.274479,0,0,253854491.719463,211203653.820681,656462.698886329,0,302424997.61376,0,2639350506.59685,2200336447.36172,0,0,332401905.875208,0,0,0,0,2005576990.81596,0,0,3364146881.73409,0,13153794264.3331,57035662.3196107,1017269896.98209,5533247.4178707,287825527.968586,0,0,253855685.242286,211203881.49461,400504.003219167,0,302425032.706728,0,2639329455.15766,2200337995.66577,0,0,332401616.202975,0,0,0,0,2005576252.18484,0,0,3364146698.16016,0,13153794249.0796,57035837.3541277,1017269807.31775,264861.29063875,287825739.440766,0,0,253856387.780234,211204195.681609,104087.447878311,0,302425082.893803,0,2639321157.01146,2200338672.68066,0,0,332401570.950617,0,0,0,0,2005575624.52169,0,0,3364146642.70065,0,13153793331.7348,57035998.833451,1017269670.83584,5776071.4325771,287826790.814475,0,0,253856929.516335,211204560.143527,268954.549983474,0,302425132.827997,0,2639325756.67803,2200338870.6381,0,0,332401581.135631,0,0,0,0,2005575130.34911,0,0,3364147517.13699,0,13153791104.0008,57036110.4730354,1017269511.49168,11781738.9026453,287830327.971973,0,0,253856969.680866,211205019.791563,676970.23408398,0,302425198.727909,0,2639343208.60123,2200338149.22441,0,0,332401835.225681],"Archive422_field5":[8995770,8366066.1,-1266705654.53391,2698731,-478794036.284218,8680918.05,323941949.11898,-611519033.626869,5847250.5,963554509.382273,7264084.275,4115564.775,-459575267.936594,1408073169.8892,2013032679.28101,-1381916850.44136,6752449.85625,5866928.746875,-505417478.474252,4272990.75,5140801.4371875,-2517966608.99222,146690306.19326,-759219002.722242,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,-1268125534.97526,2024048.25,-480363795.294407,6510688.5375,322070270.385893,-612407163.244879,4385437.875,962701593.811452,5448063.20625,3086673.58125,-461024410.093709,1406815519.66402,2010772297.41795,-1385731088.1832,5064337.3921875,4400196.56015625,-506032114.368416,3204743.0625,3855601.07789063,-2518208417.14701,146351273.367409,-759962820.793647,5566132.6875,6628758.01875,1905978.76875,4497885,4183033.05,-1270819221.8567,1349365.5,-482234081.37854,4340459.025,319413034.016158,-613769878.21928,2923625.25,962054279.989858,3632042.1375,2057782.3875,-462596272.972263,1406261076.41187,2008039761.19931,-1391608548.5318,3376224.928125,2933464.3734375,-505641836.228757,2136495.375,2570400.71859375,-2517582080.03182,146511639.338901,-760348246.078147,3710755.125,4419172.0125,1270652.5125,2248942.5,2091516.525,-1273515142.54171,674682.75,-484115425.086486,2170229.5125,316746252.641127,-615137451.708919,1461812.625,961448783.322636,1816021.06875,1028891.19375,-464204256.241455,1405740248.09281,2005467642.74075,-1397514435.79431,1688112.4640625,1466732.18671875,-505289236.741639,1068247.6875,1285200.35929688,-2516986198.87849,146623082.90255,-760743929.059862,1855377.5625,2209586.00625,635326.25625,0,0,-1274994473.16392,0,-485720132.414774,0,314809579.959197,-616058586.560997,0,960562140.051926,0,0,-465569028.388891,1404486655.31618,2003438725.03391,-1401312022.15759,0,0,-505988674.822626,0,0,-2517125905.90682,146368284.503308,-761432304.540345,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive423.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive423.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive423.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive423_field1":[-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1.86573461925877,-1004.03489640131,-1004.03489640131,-5.32040408696844,-1004.03489640131,-10.6773780488078,-1004.03489640131,-1004.03489640131,0.382728221620312,-1004.03489640131,-1004.03489640131,-1.70805153437419,-1004.03489640131,-1004.03489640131,-1.86573462011449,-1004.03489640131,-1004.03489640131,-1004.03489640131,0.402599399457984,-1004.03489640131,-1004.03489640131,0.382728222050275,-1004.03489640131,-1026.346782988,-1026.346782988,-22.3118865866957,-1026.346782988,-1004.03489640131,-12.9302953228488,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,13.9234215177135,-22.3118865866957,-6.49415957969711,13.2300547718002,-22.3118865866957,-22.3118865866957,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246200977869,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620098423,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201298853,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201642523,-12.1322536834644,-1004.03489640131,-1004.03489640131,-12.1322536835307,-1004.03489640131,7.94246201201122,-1004.03489640131,7.94246201712883,-1026.346782988,-1004.03489640131,7.94246201376984,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201605364,-1004.03489640131,7.94246201517802,-1004.03489640131,-22.3118865866958,-8.50415616914523,-1004.03489640131,-13.3172915499275,20.8012933970991,-1004.03489640131,-6.484319039318,13.3533221799019,-10.7426316298049,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-6.13899584061471,-10.7255646354427,12.7285795284387,-1004.03489640131,-6.48431904086471,13.3533221795731,-10.7426316282136,-1004.03489640131,8.82622136200843,-10.6244028613748,-13.8349005388457,-22.3118865866958,3.06730449534194,39.8335511594283,30.0880481346721,17.7013607076611,79.3166377725732,6.91505412343815,49.302617060269,55.6737065015006,33.896174672252,30.1818915205478,49.1977067452478,31.4320296162073,28.5827974601651,82.5841809424686,56.0035793430457,75.3638413273682,35.4245742161953,120.813991583567,28.9201819928979,97.5353811488949,112.962430523175,100.397898062442,79.2440478358114,-6.47786147222564,-22.3118865866958,6.01909653183412,-1004.03489640131,-16.1237549139601,-1004.03489640131,-1004.03489640131,-16.1237549147168,-1004.03489640131,-11.4324994449325,-1004.03489640131,24.794812689333,6.01909653028298,-1004.03489640131,-16.1237549133937,-1004.03489640131,-1004.03489640131,-11.4324994442847,-1004.03489640131,24.794812690903,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-11.4324994444304,-1004.03489640131,24.7948126894471,-1004.03489640131,-1004.03489640131,-1004.03489640131,-16.1338695179189,-1026.346782988,-22.3118865866958,-1026.346782988,-22.3118865866958,-1004.03489640131,-6.34574844371338,-1004.03489640131,36.4817071513331,12.9083498609584,22.8148039371792,18.9003815275257,22.6298880681195,52.7842000914906,29.0872009820332,52.7909118540404,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,29.0872009798487,-1004.03489640131,-1004.03489640131,5.94417597708554,42.2415916864318,24.9363742557928,35.2748892154652,44.5841758101249,78.4540574653122,57.9102565849224,48.439142437713,82.7357735273924,59.7368986308019,65.8816659359867,86.2690671239712,-22.3118865866957,-22.3118865866957,34.0135295427073,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,9.74183260070259,12.6033374147904,-11.2927061365044,6.49359155273152,27.6621948168156,25.4438495598533,66.4446359369044,48.3624418097024,44.3564104056831,54.6609580245687,50.02069492144,31.7822263191927,84.300935334491,11.8227263230977,55.6003005623927,60.2775545386897,93.6721845520076,71.5998437864305,105.637647564996,71.3923875724517,65.8774578605704,92.0437817127173,75.58796972012,106.408727024305,95.2889844454791,132.894992012272,71.841674414088,77.3775199284386,-1004.03489640131,2.09642019255745,-1004.03489640131,17.8488203688954,-11.2927061371036,7.98386561066536,49.3558235075603,26.6160653380965,25.6209179159651,39.2082757506033,48.4245118896995,31.86769908222,11.7661131947169,62.1873964128244,-1004.03489640131,2.09642019394886,14.6487589343,0.0674819430308276,-1004.03489640131,-1004.03489640131,17.8488203686265,-1004.03489640131,-3.37610189835431,45.6887277886844,19.7626370056832,29.0747921877152,29.7888678870024,18.4118623869763,0.217025254320106,40.3535085741369,67.4795814870575,71.3017569870563,52.7909118543566,10.8842284729205,31.1269461503889,58.9309301081481,14.472612883317,39.730189767963,28.3950033974821,10.8842284729658,31.3337696889882,25.1121229429542,73.6390988135703,3.84229941083208,-5.3917958174261,58.4845535190493,50.3371866765528,8.5911431029046,36.6069463057471,38.4019007598162,48.0098989319283,53.0569290479509,14.4726128820075,32.4571777704739,32.8258800064307,20.9938577041856,62.9141114959777,-22.3118865866957,-22.3118865866957,-22.3118865866957,-9.18572137881705,6.68869760424582,34.9514705960922,15.1894312213601,96.6284954807157,-9.20425961578331,6.7571125444814,42.0932459073928,28.0148305440199,22.4591346846447,32.4416003527506,-7.79078171769623,3.95109190095178,32.0576937223642,3.38675745593162,24.7908238431443,5.13486699569512,5.67287543575185,-6.21987739881001,6.48614489977734,38.9258410821357,7.9398213645461,9.4809051500589,56.6257930751213,45.7494971301226,56.0934383489007,124.364818249116,66.2179535117044,78.5595580004794,115.941515270475,91.8195145555857,14.5267462665565,49.0813288191072,73.1665860419262,66.4235879121048,86.2848122204173,85.0237615358961,74.4417692401076,129.072827003248,45.4211782855838,107.820691042524,106.560414115413,65.2749758325582,66.0612518269076,110.351919135679,133.657200095536,124.02871798734,164.618122778342,143.295070063987,-22.3118865866957,125.286866567413,167.206870076219,128.670420424397,149.335151389059,101.284401838968,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,189.094824455141,-22.3118865866957,-22.3118865866957,-22.3118865866958,169.1503310417,-22.3118865866957,-22.3118865866957,207.550242542316,-22.3118865866957,-22.3118865866957,205.124985853367,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,57.3110920668582,83.6186496049072,79.7748493477665,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,52.3089918464665,30.8997221521129,-3.72696222840335,63.6206516399131,68.7630789093847,27.8732607773815,57.682840413622,38.5678004125347,43.9160522688983,63.9213601317228,86.9134675411592,62.5507954059221,58.2409711794388,78.4813257862671,123.340217206628,96.2270058656176,101.68719302365,125.238229640223,119.302666041622,160.69532608623,139.63732345322,154.196584781469,26.6247045876559,28.1957910599185,33.3916214452844,94.9629279042715,14.8267599096186,-5.31537789436834,33.3775842056455,113.167313235841,98.1964396678895,148.150650908305,146.229898342763,-22.3118865866957,84.3857126287415,64.595888473353,132.310764708529,111.034503849403,105.880261777928,45.0906227521446,41.5702000692108,76.0119194318353,10.9514477851601,64.1937246983898,92.2094414649446,37.0927960852875,55.7983044896501,57.9721780917667,38.238017352515,15.9903111920977,-4.44186718559575,76.8634528898766,77.3500513712026,46.9899633028219,112.024294428727,69.4322040115057,98.5690003558271,81.8535221169006,103.343021782206,71.1887793700487,38.1922001504714,16.8361140174449,54.9794152506233,11.1291969380391,48.2510333624119,-22.3118865866957,134.059772896181,102.633988373431,7.47066646891517,-7.76120450802784,148.702651385051,35.2725682574065,10.8760566333162,103.769207124703,108.584558205041,82.4762969081376,111.333747369104,140.008272226531,119.637926942354,53.0133995693175,69.0122776633632,93.48046637123,123.82065470455,-2.17538648718727,30.4877194726769,57.8491961739253,81.8619055631148,82.0806921298806,-22.3118865866957,81.9764978573661,143.972911736266,129.203801735713,-22.3118865866957,165.380711199236,130.755041172074,144.105141774104,131.768603084792,-22.3118865866958,160.496776905666,110.998339533156,97.6154159592663,165.962923784006,97.8697536666336,120.294138167316,155.286998176178,133.180361202721,143.914427993959,98.1874973164513,92.8872748082143,119.70805241835,83.76012276542,113.767066512325,78.654436755952,103.445083174279,134.818948423154,50.030424278119,87.8427410633602,85.2716767805422,117.193842072871,97.2291357087095,89.7793553454653,81.552265876838,150.130158069731,167.792733445885,145.222375983542,134.950676988781,64.6421181675113,75.4243622866026,107.039914920236,172.971363388437,151.603851258647,80.1775946924533,121.643706760136,133.542100249927,163.209440688717,153.570978880148,185.171468864147,191.744352747078,112.069012548187,89.13582843123,75.489521530191,80.8928702670617,-22.3118865866957,133.813371947464,-22.3118865866958,173.072757643504,-22.3118865866957,151.404394456582,-22.3118865866957,-22.3118865866957,-22.3118865866958,186.842794225428,125.120332772188,110.894990504071,133.487876800215,162.409765286135,32.338789604893,137.000922383199,74.3724521277803,59.8885237442851,95.8706561946358,107.071111326464,127.933019703814,125.946760411667,144.179027577437,187.568536077155,168.720680475072,164.637064573745,165.309466457639,193.005552797276,175.250819165573,194.951362682138,237.876496552214,221.997933390133,214.487637153331,214.526771597227,222.582571044266,-22.3118865866957,243.124519768589,-22.3118865866957,148.960265600981,175.988957504124,169.063972555285,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,161.328054045441,153.081265299424,191.888735708948,48.2469911144827,51.1049869508653,29.2865410655509,6.74286754377272,14.2485746261325,20.5917273334148,-6.60393676078365,-7.33906708218626,8.09623833480697,115.771088269857,89.2461552593629,69.2556698469793,141.418711174504,175.452767184112,197.679048484884,196.798900654555,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,186.018284723395,149.020411318709,182.290717348143,173.397337266187,181.238586478799,206.936226086974,221.883132402739,228.168683489221,-22.3118865866957,212.636504593589,228.492467195201,-22.3118865866958,123.070447616465,136.329489994976,125.950283795707,180.29259927096,158.19624829373,153.814593317637,173.965899740664,204.370738868307,184.496742851761,208.672429926777,207.21116504315,240.036003445492,221.555635415164,-22.3118865866957,-22.3118865866957,242.044608012181,179.687835642647,163.999296182837,203.791627808573,215.564829310416,148.256236161921,169.421351067773,121.943156026546,191.915096770084,170.651811006466,205.81917456683,137.854233245889,190.94178127132,169.347438328254,151.059751030985,162.714538128504,128.456885872335,143.591846379224,113.434977406849,141.59273033209,150.948543710117,187.097855982985,113.075891616281,165.51490656934,131.657211306064,155.562518585006,167.778790409234,189.217532297872,154.901650429128,184.645347298793,210.078384525232,198.466507073285,240.449823907673,-22.3118865866957,232.815081733634,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,107.67738123976,105.127885634911,103.826987131366,87.0035269652008,189.542649952155,193.987896921384,210.571723468924,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,233.340315418878,237.868299647795,233.506897098169,237.215241979543,-22.3118865866957,228.801206476262,95.0209284772066,106.832101453779,75.2560528057624,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,225.371204714401,201.520276060854,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,224.416599341426,203.630201488263,216.278175796255,213.861119017491,197.8686585431,189.601313376317,180.495193662822,-1026.346782988,38.8974145729957,8.07752256008393,45.2836048886647,15.1606947401658,27.7935420792658,48.7699646667651,35.2565825181601,62.2038678723161,76.5147521665165,66.2661719043376,57.4353616767448,82.0372020522045,41.5212489608193,91.2058900631578,53.902281240207,13.785910125567,116.258707783349,110.298083239468,-4.35410514320068,33.8947013333096,71.2990865502966,91.6764472565484,103.618734944368,58.6327413763724,30.9444988079017,20.3188890367212,-6.11308026931141,112.220319308981,134.014385152462,136.510799412065,122.537689991698,98.7091577574195,81.2865619061268,-9.5259524821862,-12.2064541923179,70.0690338154616,58.6799464156607,7.896926408436,-3.35580294529507,45.5848795737924,18.4479175313971,2.41081875295163,2.57434771645541,-22.3118865866957,-22.3118865866957,-1.73029327280381,-22.3118865866958,190.305127172657,196.221031714531,171.532660988827,180.095737410207,161.552124075994,241.084013801906,247.658718560054,121.458440634562,177.647701879244,164.425063223403,230.374387339944,213.760840058251,147.642242189514,41.1829456545146,225.596745385455,-22.3118865866957,222.283730726769],"Archive423_field2":[2988.6506215106,2948.40125446234,2936.02490338004,2937.18256856052,2948.5674090396,2972.73387878297,3014.17945685643,3061.82658652294,3103.22558765788,3140.39666545041,3169.00391818788,3179.21286407803,3168.30000420214,3134.67521135822,3094.65236249166,3063.21347592759,3036.57516267143,3020.94042947831,3008.72570222622,2987.78852074519,2967.76501297089,2935.39178033545,2908.85703027671,2899.70636129702,2879.69021727841,2870.85005675435,2844.61071847945,2795.84663996397,2678.75025088304,1761.71211759921,907.740162639946,187.72778149863,557.763479611631,1314.10339479307,2069.92770415763,2878.15667504575,2956.97969521786,2959.12682333159,2971.90921672468,2999.94294820713,3041.46852491221,3070.19191739711,3094.82377461702,3087.6657613649,3077.03051720314,3054.7028861955,3016.54140777434,2985.44993986431,2937.49556507024,2889.11008635865,2837.46004495322,2781.27327127817,2729.08511022434,2687.41482785919,2674.85465415249,2691.14139155303,2724.55812051993,2771.66286644891,2829.89692648249,2882.09423677879,2920.31195428593,2943.74698225605,2953.18113660681,2949.34887995512,2937.19521237112,2924.99316298924,2916.48741552275,2909.65744767876,2912.9556520354,2932.26760068513,2960.22425459881,2993.10732483604,3033.09544046518,3068.16645996114,3088.67324540826,3100.979408298,3101.22410857241,3086.43581866189,3060.13923894263,3025.21836986617,2985.66122004741,2944.40214671769,2910.40668168581,2874.56880258671,2832.83080602084,2797.90537067358,2768.84171535041,2748.81123487331,2732.73050476655,2719.53055414683,2712.37664013459,2709.88574489002,2708.97468833465,2713.84815317077,2731.28560604351,2752.46659907082,2777.39757412065,2810.40326793825,2844.7378718528,2873.32158188323,2897.63133837733,2906.81197995333,2898.56945989717,2870.38946976059,2822.11842619593,2762.07746836133,2706.54194114232,2682.94897423879,2700.78184650537,2749.05420171924,2837.88835822152,2961.51378390917,3104.70598180113,3251.93639199618,3375.45671216532,3472.73462825063,3534.58242259861,3556.77105915988,3542.35578262471,3497.07402213066,3425.85561429104,3336.41691337502,3232.73096507516,3135.5694821991,2727.77765113702,2817.44587075092,2841.36265345073,2907.8749524752,2731.30098279451,2671.14400985006,3233.25428533926,3071.3119246887,2736.77698761216,2839.7287544172,3048.18235853632,2881.16025748166,2725.15214616685,2477.02887768415,2745.04624408724,2696.23813334931,2801.92748773365,2859.44178886063,2879.05026626512,2791.92523706449,2582.57716231889,2520.89513880605,2527.65491407254,2622.01503579462,3407.35249387277,2664.52890473327,3201.94070406669,3057.66288182726,3327.27354193697,3270.44591885358,2971.10887711037,2992.32092500782,2954.53733321155,2742.71564405558,2919.9686451675,2786.93114016442,393.334847650615,2206.46606403148,2464.02750660481,2624.95588656563,2545.90362695917,2559.98465563449,2830.20311898844,2696.13807625236,2837.7231216655,2807.39835967567,2853.92495081723,2991.48001832153,2798.70240690516,2693.24083126609,2609.9404907744,2609.22085172243,2582.559500651,2639.24846638983,2646.59520039117,2487.65425063466,2601.67859720673,2745.52410530225,2907.22611101904,2487.58956521478,3452.70543344141,3039.23069932794,2802.50706490151,2817.60434070414,2349.97429124186,2836.69962388166,2851.46064474347,178.375253229974,2001.43980839775,1061.21289082411,2530.8469030203,1979.06500389299,2783.06574463714,2586.82155418991,2668.09929325186,2743.07446321394,2966.98077374795,2877.35867888113,2848.51069497291,2737.41065464499,2692.11408238331,2594.55700342531,2564.69310542067,2658.38629504437,2884.64968105309,2546.25496609484,2482.72616129802,2917.48639435311,2394.32982679908,1466.04629003315,2449.97975097714,2700.35018713968,2930.85430791479,2735.92912408429,2637.87236227295,2588.28812188484,2610.03640002963,2541.09877501389,2937.71022570515,3095.54693947783,2854.13590475598,2175.450278667,2614.69357591907,2499.15775416812,2844.65876597421,2695.44654140258,2641.81415134659,2568.08548826153,2420.88113536082,2420.33639645161,2296.34658862697,2342.73989037732,3093.41675124748,2821.3531409183,2173.20042920113,3199.36432419261,3471.90717409075,3352.18885044652,2683.11936577333,2684.4799253235,980.232078797766,2026.49498265612,537.874471142061,2586.67283579332,2419.7276216037,2582.67935978283,2371.40805423671,2711.59689348614,2578.90270088668,2780.751312588,2590.14743645993,2628.04863935581,2479.58966186162,2596.34946497601,2416.91691562781,2476.51354922756,1871.22989125608,2503.20282080784,2159.23894090184,820.845384036051,794.832634884907,2700.625145304,2645.74872425019,2377.67826463673,2550.66329728935,2766.05586949789,2249.43794472942,3052.37548979025,3101.70436786264,3256.71677604224,2382.00577631977,2091.74061601634,2331.07859068415,2435.58953744952,1985.11986567957,2259.85055108021,2430.08495750198,2043.73409177644,2317.11882478567,2261.00745197768,2400.11716181127,2188.07305165832,2379.83032177196,2087.94484360419,1737.65118448725,2034.13824486689,1109.99636980558,215.330302988256,319.198321030212,308.728719505864,2895.61543869838,2861.85093135775,2430.28915824175,2527.5219449798,2293.16742227288,2484.18880914021,2190.99864721568,2314.06419105109,1639.33025736695,1396.3403403481,785.167071554291,2005.09348959255,1485.30237981675,767.625472520085,409.57542706009,2748.59825030176,2443.12005726103,2797.34146962163,2393.98951589179,2717.37357467439,3049.42384264741,2885.01025964186,3279.81796826407,2998.32695965257,2534.47715405467,2756.60182172268,2409.50893336753,2443.24686501159,2821.23087309866,2399.92176969645,2727.30704388843,2589.46348808924,2598.97597072011,2019.35587739879,2231.55689738139,2516.71454016844,2248.94987130096,3136.30711093242,2841.48307889739,2196.51140166137,2857.7091452606,2210.30059226907,1445.73179904432,2394.43515941295,1954.28591976962,2739.01994023883,2429.36570207496,2916.63385152957,2170.54945644121,2741.30867299221,2141.8858153307,2658.86240716694,1571.51017839987,2429.78654947374,2987.24477139589,2986.81701540227,2368.17485255851,2556.93943257187,2384.28863635933,1980.94172967822,2486.04350330116,2505.8748897483,2440.49773012274,2570.52851461625,2586.03499319285,2441.15269548985,2380.18499389173,2097.91476740434,2397.73116742894,2223.29190696701,1763.00061975454,2429.98736815766,1874.93886874691,1647.96028443909,1802.44478349283,2052.95770289411,1358.25803774548,1995.50120496669,623.414576898519,826.803296129402,1414.99424904563,282.702765011982,2545.47321070075,465.818746376347,399.798442126423,689.529079616702,766.273550680416,485.006160217272,797.049662116538,994.278753587569,268.567965357766,415.441377295188,296.438814835286,846.050348413544,194.322029908159,972.780741110313,231.884743923126,203.983161689297,226.142156635363,279.04503342639,2073.61097288638,289.393699671393,2238.36788549338,2601.0450808615,2774.86070085435,2852.02959701626,2808.80138514743,2713.64159571267,2534.56431515908,2393.09623082039,2578.42158700809,1134.3513416336,2278.69722177014,2622.75979760796,2744.44876921962,2364.50267350244,2321.80001818918,2192.80518202119,2348.13284454881,1079.65565750221,3153.93983198723,3244.83347795172,2528.35647919886,2561.82229313772,2433.43463814343,2580.04267316085,2513.46171793367,2539.63311592434,1207.89246762936,2639.81985814659,2528.79266564309,2464.2176007273,2417.90618300742,1433.64461631439,987.682376171255,1846.39282477572,812.872954289896,2550.02833794957,2410.57249748177,2616.33875193868,748.118113582813,1998.61846109848,1250.03840252553,1366.3244298481,1241.27291809039,409.453059056872,929.915596920867,422.707238075135,2615.51412292217,2622.14952266274,2527.1028808871,2472.74310956086,946.628550764197,2550.91864875201,2590.61507608415,1708.25507319141,521.94333014352,1017.61390149916,850.9046839933,513.10627263902,286.554637532532,385.627850129587,488.137806339659,599.907822745314,388.259110942373,325.582741956426,257.074701764694,1115.744907169,1049.77771298971,843.165418598853,715.97971173247,779.981812054801,1079.3550338793,530.094746600273,1309.44256996262,529.167782945234,435.21357620806,532.822824137551,694.522995258951,580.088411497645,636.554944319634,1839.95105740324,2117.05441341061,2447.12461604866,2121.1038563005,997.544441140555,1093.03273223883,334.391265788968,502.312358754342,546.882009217279,407.271340954231,460.049134022833,973.194024976749,267.433751412281,2433.64946955311,403.935417366394,381.358330323886,240.410564832243,310.636603239862,214.390743194503,308.795411979707,341.828605309855,244.477850474956,298.194603249254,212.632962448874,236.184473782191,177.373141087446,311.083828890568,287.735263177583,2769.44622462933,2303.02985915885,2840.58658647847,1486.8916208948,2490.55381103989,2179.73619839964,482.624163532109,1094.9326871683,1177.69922057375,624.053714208366,514.336754924165,969.616661488894,2416.69429160493,353.887136486057,2764.30057966212,2338.68223417187,1547.51499697144,2370.47546441371,2416.38465472063,2726.58407275835,1419.28502671928,2525.2033293366,2211.62981143862,491.918681274564,1233.72814971583,906.914122164064,908.337090892863,1276.50495218208,2049.92494914944,563.548591682075,305.203845570884,286.985327847974,383.066887208593,2147.16313104199,916.590877076568,365.945943234704,1656.40859735338,640.910423097302,964.433363809199,2107.02408844841,926.525893428319,1119.04788497064,297.29671201597,2197.61220871529,2489.03535200424,381.02076038639,459.040932453208,2373.86351670403,783.675837608168,648.011133831676,481.256830607713,438.44465288301,1564.56509525482,803.285427913752,731.392178003015,1019.17538079177,621.135019958108,336.359542545171,524.217581552771,1060.83383025856,2750.59437722757,2534.49976429407,850.94757725643,1601.70641646061,234.701955094076,2683.18943224579,2318.60662422434,574.054241069618,1132.50214762032,1312.95505396892,823.689366562722,2213.49948621515,2072.95571150982,828.910379688737,2206.70551905087,1214.55814543991,2113.8353747057,2163.40911276582,2355.02367554146,2159.13051606677,659.316274540945,2135.167469928,1923.91257841341,379.318548559102,516.727556629152,370.41846913905,395.270245705873,339.603802352525,284.043221091863,194.191068312804,245.881079998119,1378.1729326458,478.938031231209,301.397774155167,338.97593382401,259.468146170779,261.953417210568,298.299581806813,184.023662193703,497.430019159842,211.27118645851,214.956701736309,341.301205003159,337.720745237011,208.288753749549,181.830483459594,186.714989510142,129.853254265252,155.870138854172,1952.58206641154,553.716049535552,573.560198003664,163.935688011297,542.263029466977,217.641595107775,2368.37815085309,1127.33916533158,2421.22370683768,1839.74367212449,512.33022943521,1140.85151651711,1518.29709373613,1609.29954065234,169.547320521062,1730.02234101185,479.068328940963,273.21471423777,1204.93396592611,846.623144875481,502.92027742923,2081.81445655653,508.19132750691,701.907395615622,787.55061711737,541.545582923074,395.999467021689,265.743221525429,274.753227687363,771.864874192536,933.757589991691,1247.5600029318,1354.47869974475,1623.13810869297,460.653786364431,1040.97076794067,2249.63120745961,357.841982154627,320.791333598289,887.560278716132,364.87421023749,688.770113511464,527.505507246264,342.901626035403,257.91433717693,360.253341938848,373.604752144669,279.747452266856,190.696626139932,232.478076194231,224.512193168725,189.014208704488,195.35954187978,156.290378094042,172.679969383269,160.808201035465,1105.37795654707,931.749210261904,757.464118162518,239.925344599574,1410.86665197172,2031.00446371188,698.015250675492,206.487234906699,227.714430626643,170.141786421842,167.948265710309,1170.10285046133,264.18978985709,347.883551821627,160.106074064789,204.976366258628,652.912774633019,529.659466758178,639.727593713216,291.67729834486,2211.45095931413,348.6319091794,243.64926259041,711.2737749286,425.325260963405,394.129256947387,700.29133691426,1615.07138034466,2353.84251052799,287.396234764512,286.410304194678,496.750580496626,207.625152363883,316.73463749039,236.905964420676,268.94742174438,220.979493347587,313.113514763296,644.79215322672,1377.40614429816,326.024626212493,1891.8099195329,454.942980846133,1366.36850318764,180.379536928092,209.86568191519,2147.4708366534,2438.62617194376,164.00377948316,811.041509469535,2220.5989905238,219.234652638755,211.757346812569,245.187465340415,191.794739038481,173.818226191348,196.942767523005,451.357825127097,330.477153050235,241.000079616905,189.853836681238,2062.33977870077,869.607215480311,376.72642460131,213.219979923983,260.779686642359,774.781611830484,297.45559892471,349.734049911854,753.363129967734,1931.3315368882,157.302073009824,331.983628884519,212.404883834556,661.349344193357,590.334852938392,161.031118288989,209.064730432139,230.553424841449,152.665467702674,451.954297422691,183.661869086134,154.957163623238,176.489412908852,161.197104188712,226.306183277122,237.87036943076,194.332115552849,269.994887721801,202.790702499425,280.775051626535,221.094237731626,177.357999058149,448.801003904179,255.52271165538,263.673691075275,198.700731240698,232.77200811217,248.845968718713,270.956310351251,164.490637387268,151.278006823902,168.722304938577,177.168941079452,256.717776381613,347.38437618125,418.338086269102,169.075412674244,166.812802694742,278.065164880653,193.259558550858,179.499664321959,153.098291201189,168.844170712111,145.902044897271,138.968777270633,244.808748716168,240.38122198602,264.22425234721,657.094583786634,1817.44331096711,673.214953132409,1649.09129597116,676.268330253109,1102.67482207269,407.653851098685,1457.68993075536,1437.79444234167,1137.07932720652,120.936405027226,185.505219590369,206.969873260627,178.476131140343,152.165120667787,787.239942496296,175.12889988375,298.027238908401,363.78079621557,229.616909622377,214.02689732848,185.160766886381,187.54385805017,168.878461395237,141.182680612505,147.185568118207,154.188177105994,153.211692999157,140.056947443676,147.649792347761,133.779094275913,238.969251608303,223.165436556823,136.474651219495,86.8317371137557,116.115066641751,2381.27868014444,697.875950294794,1968.52716093264,190.316474817355,149.073242938289,151.674421005879,1197.0483055139,979.179196804197,776.288160590378,701.316253324066,693.62182170726,751.627909086283,466.024295305136,585.799327382036,410.345010643724,1045.12821715825,416.336423054587,662.380832343831,629.452286514272,963.454803910914,976.430745570704,1625.9013552693,1987.02954542762,1267.44594297909,1997.99926353399,943.390687257796,1763.36684573138,151.80938532746,160.773163062103,123.358591492539,487.966260296035,446.777899168146,1001.43360659412,2085.00294836913,1506.96425601192,1094.4377359063,2155.22998124869,2343.11879950906,2161.63645425888,201.014229311898,251.6456732555,322.1014385147,172.002730352618,142.27378489814,118.254183923796,133.805143785788,1371.71574925003,596.747952417317,635.589904788259,496.285975771643,429.05470024729,542.044151027241,531.413343237402,1162.12790171588,432.689212356342,1033.38924962562,496.986548293585,674.083252835169,1451.67382403475,234.95266401335,163.227688936138,139.700079974272,143.077813950803,133.791649777608,91.7391781511621,236.026065835944,409.578552488137,1304.79875359662,94.2127952843337,185.028112116948,2137.65719966317,191.170141733778,175.879897523142,188.030456302257,140.857163039029,157.261873218559,160.455589322174,148.701919401549,132.576284815807,147.612193737651,141.973442041331,138.142548714957,471.270058932883,110.156016060312,971.689396196832,1051.10146053871,648.508523884027,143.132260570192,126.282061625478,274.891225263508,118.721956450289,163.630750107081,145.608426528374,191.574635765423,132.675212850776,147.0186370458,118.793509309977,174.439077926324,131.615991881049,148.495170719964,162.357157361213,153.238115963591,183.718921454701,169.408131737747,204.068168941262,171.882791561951,162.83636187804,138.687664445228,205.845285802874,151.950050943582,181.512928194615,160.014091876355,151.635784605984,140.340605740487,161.7267102256,149.804456315477,136.506763450342,131.701360354695,907.932055735303,2736.43317916644,252.030541762644,2392.4953926121,1807.67890887393,982.257235366484,326.190757274624,1491.51138580681,2104.88069266171,2517.19609245909,1581.31953968793,1404.36370712847,2317.18566609965,212.56751996021,216.164940463954,218.584091538712,260.896173124737,141.175169887427,135.486592516828,95.5083741744128,1246.33471020792,1263.98385124162,1290.70782035697,1857.17025619224,0,1941.57475311549,2541.93148581735,550.697238761471,717.521589090556,360.126883195554,815.860179446226,2108.14531210694,240.565419406971,238.542339389976,215.300080182792,296.431601638064,1029.9452209966,1804.08449268431,1900.66813859058,2496.23627706629,43.62964736991,114.15815496452,576.596168233821,1564.12235955455,1023.46925139823,1643.06457671417,926.724029456783,1870.80920336006,2345.73096700545,714.703993539054,130.299974928489,125.070415085083,131.544239102135,137.700343584984,133.644718675089,138.293349448125,1999.55740478755,875.85441137502,2811.5849736517,579.429104370664,2654.58860732823,1330.30680598762,544.012219057579,946.726286846629,367.671174050116,288.809992901422,355.093159770326,435.785447207399,275.768975057145,849.077796495165,249.526444017476,449.972393073237,2876.39979801272,200.951566728884,209.367922808554,3125.18036225366,944.96643464843,322.034684878746,246.610695305978,220.18206532366,380.992717321371,1078.49476734133,2534.33714732477,3114.18162708253,207.119795567129,179.829437823146,176.393186881833,192.2885975978,231.231415575662,279.134892103349,2622.47045802646,2925.25653286836,316.958781455434,373.699608369572,2478.48593990379,2320.1102983422,515.728767966599,1085.37332384123,1507.16287713633,1552.09926936928,1238.4374667428,1010.44206402549,1938.93862544186,1067.25927750901,129.927166274043,129.90637148108,147.351702760095,411.894228212255,111.849998209498,527.811586735674,685.902199650842,192.474218163737,141.84660650781,154.066504386057,267.910582862961,110.712075200495,166.585184298769,848.625050593252,684.241719549975,2279.02035108713,355.44932758383],"Archive423_field3":[-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1.86573461925877,-1004.03489640131,-1004.03489640131,-5.32040408696844,-1004.03489640131,-10.6773780488078,-1004.03489640131,-1004.03489640131,0.382728221620312,-1004.03489640131,-1004.03489640131,-1.70805153437419,-1004.03489640131,-1004.03489640131,-1.86573462011449,-1004.03489640131,-1004.03489640131,-1004.03489640131,0.402599399457984,-1004.03489640131,-1004.03489640131,0.382728222050275,-1004.03489640131,-1026.346782988,-1026.346782988,-22.3118865866957,-1026.346782988,-1004.03489640131,-12.9302953228488,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,13.9234215177135,-22.3118865866957,-6.49415957969711,13.2300547718002,-22.3118865866957,-22.3118865866957,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246200977869,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620098423,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201298853,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201642523,-12.1322536834644,-1004.03489640131,-1004.03489640131,-12.1322536835307,-1004.03489640131,7.94246201201122,-1004.03489640131,7.94246201712883,-1026.346782988,-1004.03489640131,7.94246201376984,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201605364,-1004.03489640131,7.94246201517802,-1004.03489640131,-22.3118865866958,-8.50415616914523,-1004.03489640131,-13.3172915499275,20.8012933970991,-1004.03489640131,-6.484319039318,13.3533221799019,-10.7426316298049,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-6.13899584061471,-10.7255646354427,12.7285795284387,-1004.03489640131,-6.48431904086471,13.3533221795731,-10.7426316282136,-1004.03489640131,8.82622136200843,-10.6244028613748,-13.8349005388457,-22.3118865866958,3.06730449534194,39.8335511594283,30.0880481346721,17.7013607076611,79.3166377725732,6.91505412343815,49.302617060269,55.6737065015006,33.896174672252,30.1818915205478,49.1977067452478,31.4320296162073,28.5827974601651,82.5841809424686,56.0035793430457,75.3638413273682,35.4245742161953,120.813991583567,28.9201819928979,97.5353811488949,112.962430523175,100.397898062442,79.2440478358114,-6.47786147222564,-22.3118865866958,6.01909653183412,-1004.03489640131,-16.1237549139601,-1004.03489640131,-1004.03489640131,-16.1237549147168,-1004.03489640131,-11.4324994449325,-1004.03489640131,24.794812689333,6.01909653028298,-1004.03489640131,-16.1237549133937,-1004.03489640131,-1004.03489640131,-11.4324994442847,-1004.03489640131,24.794812690903,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-11.4324994444304,-1004.03489640131,24.7948126894471,-1004.03489640131,-1004.03489640131,-1004.03489640131,-16.1338695179189,-1026.346782988,-22.3118865866958,-1026.346782988,-22.3118865866958,-1004.03489640131,-6.34574844371338,-1004.03489640131,36.4817071513331,12.9083498609584,22.8148039371792,18.9003815275257,22.6298880681195,52.7842000914906,29.0872009820332,52.7909118540404,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,29.0872009798487,-1004.03489640131,-1004.03489640131,5.94417597708554,42.2415916864318,24.9363742557928,35.2748892154652,44.5841758101249,78.4540574653122,57.9102565849224,48.439142437713,82.7357735273924,59.7368986308019,65.8816659359867,86.2690671239712,-22.3118865866957,-22.3118865866957,34.0135295427073,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,9.74183260070259,12.6033374147904,-11.2927061365044,6.49359155273152,27.6621948168156,25.4438495598533,66.4446359369044,48.3624418097024,44.3564104056831,54.6609580245687,50.02069492144,31.7822263191927,84.300935334491,11.8227263230977,55.6003005623927,60.2775545386897,93.6721845520076,71.5998437864305,105.637647564996,71.3923875724517,65.8774578605704,92.0437817127173,75.58796972012,106.408727024305,95.2889844454791,132.894992012272,71.841674414088,77.3775199284386,-1004.03489640131,2.09642019255745,-1004.03489640131,17.8488203688954,-11.2927061371036,7.98386561066536,49.3558235075603,26.6160653380965,25.6209179159651,39.2082757506033,48.4245118896995,31.86769908222,11.7661131947169,62.1873964128244,-1004.03489640131,2.09642019394886,14.6487589343,0.0674819430308276,-1004.03489640131,-1004.03489640131,17.8488203686265,-1004.03489640131,-3.37610189835431,45.6887277886844,19.7626370056832,29.0747921877152,29.7888678870024,18.4118623869763,0.217025254320106,40.3535085741369,67.4795814870575,71.3017569870563,52.7909118543566,10.8842284729205,31.1269461503889,58.9309301081481,14.472612883317,39.730189767963,28.3950033974821,10.8842284729658,31.3337696889882,25.1121229429542,73.6390988135703,3.84229941083208,-5.3917958174261,58.4845535190493,50.3371866765528,8.5911431029046,36.6069463057471,38.4019007598162,48.0098989319283,53.0569290479509,14.4726128820075,32.4571777704739,32.8258800064307,20.9938577041856,62.9141114959777,-22.3118865866957,-22.3118865866957,-22.3118865866957,-9.18572137881705,6.68869760424582,34.9514705960922,15.1894312213601,96.6284954807157,-9.20425961578331,6.7571125444814,42.0932459073928,28.0148305440199,22.4591346846447,32.4416003527506,-7.79078171769623,3.95109190095178,32.0576937223642,3.38675745593162,24.7908238431443,5.13486699569512,5.67287543575185,-6.21987739881001,6.48614489977734,38.9258410821357,7.9398213645461,9.4809051500589,56.6257930751213,45.7494971301226,56.0934383489007,124.364818249116,66.2179535117044,78.5595580004794,115.941515270475,91.8195145555857,14.5267462665565,49.0813288191072,73.1665860419262,66.4235879121048,86.2848122204173,85.0237615358961,74.4417692401076,129.072827003248,45.4211782855838,107.820691042524,106.560414115413,65.2749758325582,66.0612518269076,110.351919135679,133.657200095536,124.02871798734,164.618122778342,143.295070063987,-22.3118865866957,125.286866567413,167.206870076219,128.670420424397,149.335151389059,101.284401838968,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,189.094824455141,-22.3118865866957,-22.3118865866957,-22.3118865866958,169.1503310417,-22.3118865866957,-22.3118865866957,207.550242542316,-22.3118865866957,-22.3118865866957,205.124985853367,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,57.3110920668582,83.6186496049072,79.7748493477665,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,52.3089918464665,30.8997221521129,-3.72696222840335,63.6206516399131,68.7630789093847,27.8732607773815,57.682840413622,38.5678004125347,43.9160522688983,63.9213601317228,86.9134675411592,62.5507954059221,58.2409711794388,78.4813257862671,123.340217206628,96.2270058656176,101.68719302365,125.238229640223,119.302666041622,160.69532608623,139.63732345322,154.196584781469,26.6247045876559,28.1957910599185,33.3916214452844,94.9629279042715,14.8267599096186,-5.31537789436834,33.3775842056455,113.167313235841,98.1964396678895,148.150650908305,146.229898342763,-22.3118865866957,84.3857126287415,64.595888473353,132.310764708529,111.034503849403,105.880261777928,45.0906227521446,41.5702000692108,76.0119194318353,10.9514477851601,64.1937246983898,92.2094414649446,37.0927960852875,55.7983044896501,57.9721780917667,38.238017352515,15.9903111920977,-4.44186718559575,76.8634528898766,77.3500513712026,46.9899633028219,112.024294428727,69.4322040115057,98.5690003558271,81.8535221169006,103.343021782206,71.1887793700487,38.1922001504714,16.8361140174449,54.9794152506233,11.1291969380391,48.2510333624119,1,134.059772896181,102.633988373431,7.47066646891517,-7.76120450802784,148.702651385051,35.2725682574065,10.8760566333162,103.769207124703,108.584558205041,82.4762969081376,111.333747369104,140.008272226531,119.637926942354,53.0133995693175,69.0122776633632,93.48046637123,123.82065470455,-2.17538648718727,30.4877194726769,57.8491961739253,81.8619055631148,82.0806921298806,1,81.9764978573661,143.972911736266,129.203801735713,1,165.380711199236,130.755041172074,144.105141774104,131.768603084792,1,160.496776905666,110.998339533156,97.6154159592663,165.962923784006,97.8697536666336,120.294138167316,155.286998176178,133.180361202721,143.914427993959,98.1874973164513,92.8872748082143,119.70805241835,83.76012276542,113.767066512325,78.654436755952,103.445083174279,134.818948423154,50.030424278119,87.8427410633602,85.2716767805422,117.193842072871,97.2291357087095,89.7793553454653,81.552265876838,150.130158069731,167.792733445885,145.222375983542,134.950676988781,64.6421181675113,75.4243622866026,107.039914920236,172.971363388437,151.603851258647,80.1775946924533,121.643706760136,133.542100249927,163.209440688717,153.570978880148,185.171468864147,191.744352747078,112.069012548187,89.13582843123,75.489521530191,80.8928702670617,-22.3118865866957,133.813371947464,-22.3118865866958,173.072757643504,-22.3118865866957,151.404394456582,-22.3118865866957,-22.3118865866957,-22.3118865866958,186.842794225428,125.120332772188,110.894990504071,133.487876800215,162.409765286135,32.338789604893,137.000922383199,74.3724521277803,59.8885237442851,95.8706561946358,107.071111326464,127.933019703814,125.946760411667,144.179027577437,187.568536077155,168.720680475072,164.637064573745,165.309466457639,193.005552797276,175.250819165573,194.951362682138,237.876496552214,221.997933390133,214.487637153331,214.526771597227,222.582571044266,-22.3118865866957,243.124519768589,-22.3118865866957,148.960265600981,175.988957504124,169.063972555285,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,161.328054045441,153.081265299424,191.888735708948,48.2469911144827,51.1049869508653,29.2865410655509,6.74286754377272,14.2485746261325,20.5917273334148,-6.60393676078365,-7.33906708218626,8.09623833480697,115.771088269857,89.2461552593629,69.2556698469793,141.418711174504,175.452767184112,197.679048484884,196.798900654555,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,186.018284723395,149.020411318709,182.290717348143,173.397337266187,181.238586478799,206.936226086974,221.883132402739,228.168683489221,-22.3118865866957,212.636504593589,228.492467195201,-22.3118865866958,123.070447616465,136.329489994976,125.950283795707,180.29259927096,158.19624829373,153.814593317637,173.965899740664,204.370738868307,184.496742851761,208.672429926777,207.21116504315,240.036003445492,221.555635415164,-22.3118865866957,-22.3118865866957,242.044608012181,179.687835642647,163.999296182837,203.791627808573,215.564829310416,148.256236161921,169.421351067773,121.943156026546,191.915096770084,170.651811006466,205.81917456683,137.854233245889,190.94178127132,169.347438328254,151.059751030985,162.714538128504,128.456885872335,143.591846379224,113.434977406849,141.59273033209,150.948543710117,187.097855982985,113.075891616281,165.51490656934,131.657211306064,155.562518585006,167.778790409234,189.217532297872,154.901650429128,184.645347298793,210.078384525232,198.466507073285,240.449823907673,-22.3118865866957,232.815081733634,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,107.67738123976,105.127885634911,103.826987131366,87.0035269652008,189.542649952155,193.987896921384,210.571723468924,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,233.340315418878,237.868299647795,233.506897098169,237.215241979543,-22.3118865866957,228.801206476262,95.0209284772066,106.832101453779,75.2560528057624,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,225.371204714401,201.520276060854,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,224.416599341426,203.630201488263,216.278175796255,213.861119017491,197.8686585431,189.601313376317,180.495193662822,-1026.346782988,38.8974145729957,8.07752256008393,45.2836048886647,15.1606947401658,27.7935420792658,48.7699646667651,35.2565825181601,62.2038678723161,76.5147521665165,66.2661719043376,57.4353616767448,82.0372020522045,41.5212489608193,91.2058900631578,53.902281240207,13.785910125567,116.258707783349,110.298083239468,-4.35410514320068,33.8947013333096,71.2990865502966,91.6764472565484,103.618734944368,58.6327413763724,30.9444988079017,20.3188890367212,-6.11308026931141,112.220319308981,134.014385152462,136.510799412065,122.537689991698,98.7091577574195,81.2865619061268,-9.5259524821862,-12.2064541923179,70.0690338154616,58.6799464156607,7.896926408436,-3.35580294529507,45.5848795737924,18.4479175313971,2.41081875295163,2.57434771645541,-22.3118865866957,-22.3118865866957,-1.73029327280381,-22.3118865866958,190.305127172657,196.221031714531,171.532660988827,180.095737410207,161.552124075994,241.084013801906,247.658718560054,121.458440634562,177.647701879244,164.425063223403,230.374387339944,213.760840058251,147.642242189514,41.1829456545146,225.596745385455,-22.3118865866957,222.283730726769],"Archive423_field4":[2988.6506215106,2948.40125446234,2936.02490338004,2937.18256856052,2948.5674090396,2972.73387878297,3014.17945685643,3061.82658652294,3103.22558765788,3140.39666545041,3169.00391818788,3179.21286407803,3168.30000420214,3134.67521135822,3094.65236249166,3063.21347592759,3036.57516267143,3020.94042947831,3008.72570222622,2987.78852074519,2967.76501297089,2935.39178033545,2908.85703027671,2899.70636129702,2879.69021727841,2870.85005675435,2844.61071847945,2795.84663996397,2678.75025088304,1761.71211759921,907.740162639946,187.72778149863,557.763479611631,1314.10339479307,2069.92770415763,2878.15667504575,2956.97969521786,2959.12682333159,2971.90921672468,2999.94294820713,3041.46852491221,3070.19191739711,3094.82377461702,3087.6657613649,3077.03051720314,3054.7028861955,3016.54140777434,2985.44993986431,2937.49556507024,2889.11008635865,2837.46004495322,2781.27327127817,2729.08511022434,2687.41482785919,2674.85465415249,2691.14139155303,2724.55812051993,2771.66286644891,2829.89692648249,2882.09423677879,2920.31195428593,2943.74698225605,2953.18113660681,2949.34887995512,2937.19521237112,2924.99316298924,2916.48741552275,2909.65744767876,2912.9556520354,2932.26760068513,2960.22425459881,2993.10732483604,3033.09544046518,3068.16645996114,3088.67324540826,3100.979408298,3101.22410857241,3086.43581866189,3060.13923894263,3025.21836986617,2985.66122004741,2944.40214671769,2910.40668168581,2874.56880258671,2832.83080602084,2797.90537067358,2768.84171535041,2748.81123487331,2732.73050476655,2719.53055414683,2712.37664013459,2709.88574489002,2708.97468833465,2713.84815317077,2731.28560604351,2752.46659907082,2777.39757412065,2810.40326793825,2844.7378718528,2873.32158188323,2897.63133837733,2906.81197995333,2898.56945989717,2870.38946976059,2822.11842619593,2762.07746836133,2706.54194114232,2682.94897423879,2700.78184650537,2749.05420171924,2837.88835822152,2961.51378390917,3104.70598180113,3251.93639199618,3375.45671216532,3472.73462825063,3534.58242259861,3556.77105915988,3542.35578262471,3497.07402213066,3425.85561429104,3336.41691337502,3232.73096507516,3135.5694821991,2727.77765113702,2817.44587075092,2841.36265345073,2907.8749524752,2731.30098279451,2671.14400985006,3233.25428533926,3071.3119246887,2736.77698761216,2839.7287544172,3048.18235853632,2881.16025748166,2725.15214616685,2477.02887768415,2745.04624408724,2696.23813334931,2801.92748773365,2859.44178886063,2879.05026626512,2791.92523706449,2582.57716231889,2520.89513880605,2527.65491407254,2622.01503579462,3407.35249387277,2664.52890473327,3201.94070406669,3057.66288182726,3327.27354193697,3270.44591885358,2971.10887711037,2992.32092500782,2954.53733321155,2742.71564405558,2919.9686451675,2786.93114016442,393.334847650615,2206.46606403148,2464.02750660481,2624.95588656563,2545.90362695917,2559.98465563449,2830.20311898844,2696.13807625236,2837.7231216655,2807.39835967567,2853.92495081723,2991.48001832153,2798.70240690516,2693.24083126609,2609.9404907744,2609.22085172243,2582.559500651,2639.24846638983,2646.59520039117,2487.65425063466,2601.67859720673,2745.52410530225,2907.22611101904,2487.58956521478,3452.70543344141,3039.23069932794,2802.50706490151,2817.60434070414,2349.97429124186,2836.69962388166,2851.46064474347,178.375253229974,2001.43980839775,1061.21289082411,2530.8469030203,1979.06500389299,2783.06574463714,2586.82155418991,2668.09929325186,2743.07446321394,2966.98077374795,2877.35867888113,2848.51069497291,2737.41065464499,2692.11408238331,2594.55700342531,2564.69310542067,2658.38629504437,2884.64968105309,2546.25496609484,2482.72616129802,2917.48639435311,2394.32982679908,1466.04629003315,2449.97975097714,2700.35018713968,2930.85430791479,2735.92912408429,2637.87236227295,2588.28812188484,2610.03640002963,2541.09877501389,2937.71022570515,3095.54693947783,2854.13590475598,2175.450278667,2614.69357591907,2499.15775416812,2844.65876597421,2695.44654140258,2641.81415134659,2568.08548826153,2420.88113536082,2420.33639645161,2296.34658862697,2342.73989037732,3093.41675124748,2821.3531409183,2173.20042920113,3199.36432419261,3471.90717409075,3352.18885044652,2683.11936577333,2684.4799253235,980.232078797766,2026.49498265612,537.874471142061,2586.67283579332,2419.7276216037,2582.67935978283,2371.40805423671,2711.59689348614,2578.90270088668,2780.751312588,2590.14743645993,2628.04863935581,2479.58966186162,2596.34946497601,2416.91691562781,2476.51354922756,1871.22989125608,2503.20282080784,2159.23894090184,820.845384036051,794.832634884907,2700.625145304,2645.74872425019,2377.67826463673,2550.66329728935,2766.05586949789,2249.43794472942,3052.37548979025,3101.70436786264,3256.71677604224,2382.00577631977,2091.74061601634,2331.07859068415,2435.58953744952,1985.11986567957,2259.85055108021,2430.08495750198,2043.73409177644,2317.11882478567,2261.00745197768,2400.11716181127,2188.07305165832,2379.83032177196,2087.94484360419,1737.65118448725,2034.13824486689,1109.99636980558,215.330302988256,319.198321030212,308.728719505864,2895.61543869838,2861.85093135775,2430.28915824175,2527.5219449798,2293.16742227288,2484.18880914021,2190.99864721568,2314.06419105109,1639.33025736695,1396.3403403481,785.167071554291,2005.09348959255,1485.30237981675,767.625472520085,409.57542706009,2748.59825030176,2443.12005726103,2797.34146962163,2393.98951589179,2717.37357467439,3049.42384264741,2885.01025964186,3279.81796826407,2998.32695965257,2534.47715405467,2756.60182172268,2409.50893336753,2443.24686501159,2821.23087309866,2399.92176969645,2727.30704388843,2589.46348808924,2598.97597072011,2019.35587739879,2231.55689738139,2516.71454016844,2248.94987130096,3136.30711093242,2841.48307889739,2196.51140166137,2857.7091452606,2210.30059226907,1445.73179904432,2394.43515941295,1954.28591976962,2739.01994023883,2429.36570207496,2916.63385152957,2170.54945644121,2741.30867299221,2141.8858153307,2658.86240716694,1571.51017839987,2429.78654947374,2987.24477139589,2986.81701540227,2368.17485255851,2556.93943257187,2384.28863635933,1980.94172967822,2486.04350330116,2505.8748897483,2440.49773012274,2570.52851461625,2586.03499319285,2441.15269548985,2380.18499389173,2097.91476740434,2397.73116742894,2223.29190696701,1763.00061975454,2429.98736815766,1874.93886874691,1647.96028443909,1802.44478349283,2052.95770289411,1358.25803774548,1995.50120496669,623.414576898519,826.803296129402,1414.99424904563,282.702765011982,2545.47321070075,465.818746376347,399.798442126423,689.529079616702,766.273550680416,485.006160217272,797.049662116538,994.278753587569,268.567965357766,415.441377295188,296.438814835286,846.050348413544,194.322029908159,972.780741110313,231.884743923126,203.983161689297,226.142156635363,279.04503342639,2073.61097288638,289.393699671393,2238.36788549338,2601.0450808615,2774.86070085435,2852.02959701626,2808.80138514743,2713.64159571267,2534.56431515908,2393.09623082039,2578.42158700809,1134.3513416336,2278.69722177014,2622.75979760796,2744.44876921962,2364.50267350244,2321.80001818918,2192.80518202119,2348.13284454881,1079.65565750221,3153.93983198723,3244.83347795172,2528.35647919886,2561.82229313772,2433.43463814343,2580.04267316085,2513.46171793367,2539.63311592434,1207.89246762936,2639.81985814659,2528.79266564309,2464.2176007273,2417.90618300742,1433.64461631439,987.682376171255,1846.39282477572,812.872954289896,2550.02833794957,2410.57249748177,2616.33875193868,748.118113582813,1998.61846109848,1250.03840252553,1366.3244298481,1241.27291809039,409.453059056872,929.915596920867,422.707238075135,2615.51412292217,2622.14952266274,2527.1028808871,2472.74310956086,946.628550764197,2550.91864875201,2590.61507608415,1708.25507319141,521.94333014352,1017.61390149916,850.9046839933,513.10627263902,286.554637532532,385.627850129587,488.137806339659,599.907822745314,388.259110942373,325.582741956426,257.074701764694,1115.744907169,1049.77771298971,843.165418598853,715.97971173247,779.981812054801,1079.3550338793,530.094746600273,1309.44256996262,529.167782945234,435.21357620806,532.822824137551,694.522995258951,580.088411497645,636.554944319634,1839.95105740324,2117.05441341061,2447.12461604866,2121.1038563005,997.544441140555,1093.03273223883,334.391265788968,502.312358754342,546.882009217279,407.271340954231,460.049134022833,973.194024976749,267.433751412281,2433.64946955311,403.935417366394,381.358330323886,240.410564832243,310.636603239862,214.390743194503,308.795411979707,341.828605309855,244.477850474956,298.194603249254,212.632962448874,236.184473782191,177.373141087446,311.083828890568,287.735263177583,2769.44622462933,2303.02985915885,2840.58658647847,1486.8916208948,2490.55381103989,2179.73619839964,482.624163532109,1094.9326871683,1177.69922057375,624.053714208366,514.336754924165,969.616661488894,2416.69429160493,353.887136486057,2764.30057966212,2338.68223417187,1547.51499697144,2370.47546441371,2416.38465472063,2726.58407275835,1419.28502671928,2525.2033293366,2211.62981143862,491.918681274564,1233.72814971583,906.914122164064,908.337090892863,1276.50495218208,2049.92494914944,563.548591682075,305.203845570884,286.985327847974,383.066887208593,2147.16313104199,916.590877076568,365.945943234704,1656.40859735338,640.910423097302,964.433363809199,2107.02408844841,926.525893428319,1119.04788497064,297.29671201597,2197.61220871529,2489.03535200424,381.02076038639,459.040932453208,2373.86351670403,783.675837608168,648.011133831676,481.256830607713,438.44465288301,1564.56509525482,803.285427913752,731.392178003015,1019.17538079177,621.135019958108,336.359542545171,524.217581552771,1060.83383025856,2750.59437722757,2534.49976429407,850.94757725643,1601.70641646061,234.701955094076,2683.18943224579,2318.60662422434,574.054241069618,1132.50214762032,1312.95505396892,823.689366562722,2213.49948621515,2072.95571150982,828.910379688737,2206.70551905087,1214.55814543991,2113.8353747057,2163.40911276582,2355.02367554146,2159.13051606677,659.316274540945,2135.167469928,1923.91257841341,379.318548559102,516.727556629152,370.41846913905,395.270245705873,339.603802352525,284.043221091863,194.191068312804,245.881079998119,1378.1729326458,478.938031231209,301.397774155167,338.97593382401,259.468146170779,261.953417210568,298.299581806813,184.023662193703,497.430019159842,211.27118645851,214.956701736309,341.301205003159,337.720745237011,208.288753749549,181.830483459594,186.714989510142,129.853254265252,155.870138854172,1952.58206641154,553.716049535552,573.560198003664,163.935688011297,542.263029466977,217.641595107775,2368.37815085309,1127.33916533158,2421.22370683768,1839.74367212449,512.33022943521,1140.85151651711,1518.29709373613,1609.29954065234,169.547320521062,1730.02234101185,479.068328940963,273.21471423777,1204.93396592611,846.623144875481,502.92027742923,2081.81445655653,508.19132750691,701.907395615622,787.55061711737,541.545582923074,395.999467021689,265.743221525429,274.753227687363,771.864874192536,933.757589991691,1247.5600029318,1354.47869974475,1623.13810869297,460.653786364431,1040.97076794067,2249.63120745961,357.841982154627,320.791333598289,887.560278716132,364.87421023749,688.770113511464,527.505507246264,342.901626035403,257.91433717693,360.253341938848,373.604752144669,279.747452266856,190.696626139932,232.478076194231,224.512193168725,189.014208704488,195.35954187978,156.290378094042,172.679969383269,160.808201035465,1105.37795654707,931.749210261904,757.464118162518,239.925344599574,1410.86665197172,2031.00446371188,698.015250675492,206.487234906699,227.714430626643,170.141786421842,167.948265710309,1170.10285046133,264.18978985709,347.883551821627,160.106074064789,204.976366258628,652.912774633019,529.659466758178,639.727593713216,291.67729834486,2211.45095931413,348.6319091794,243.64926259041,711.2737749286,425.325260963405,394.129256947387,700.29133691426,1615.07138034466,2353.84251052799,287.396234764512,286.410304194678,496.750580496626,207.625152363883,316.73463749039,236.905964420676,268.94742174438,220.979493347587,313.113514763296,644.79215322672,1377.40614429816,326.024626212493,1891.8099195329,454.942980846133,1366.36850318764,180.379536928092,209.86568191519,2147.4708366534,2438.62617194376,164.00377948316,811.041509469535,2220.5989905238,219.234652638755,211.757346812569,245.187465340415,191.794739038481,173.818226191348,196.942767523005,451.357825127097,330.477153050235,241.000079616905,189.853836681238,2062.33977870077,869.607215480311,376.72642460131,213.219979923983,260.779686642359,774.781611830484,297.45559892471,349.734049911854,753.363129967734,1931.3315368882,157.302073009824,331.983628884519,212.404883834556,661.349344193357,590.334852938392,161.031118288989,209.064730432139,230.553424841449,152.665467702674,451.954297422691,183.661869086134,154.957163623238,176.489412908852,161.197104188712,226.306183277122,237.87036943076,194.332115552849,269.994887721801,202.790702499425,280.775051626535,221.094237731626,177.357999058149,448.801003904179,255.52271165538,263.673691075275,198.700731240698,232.77200811217,248.845968718713,270.956310351251,164.490637387268,151.278006823902,168.722304938577,177.168941079452,256.717776381613,347.38437618125,418.338086269102,169.075412674244,166.812802694742,278.065164880653,193.259558550858,179.499664321959,153.098291201189,168.844170712111,145.902044897271,138.968777270633,244.808748716168,240.38122198602,264.22425234721,657.094583786634,1817.44331096711,673.214953132409,1649.09129597116,676.268330253109,1102.67482207269,407.653851098685,1457.68993075536,1437.79444234167,1137.07932720652,120.936405027226,185.505219590369,206.969873260627,178.476131140343,152.165120667787,787.239942496296,175.12889988375,298.027238908401,363.78079621557,229.616909622377,214.02689732848,185.160766886381,187.54385805017,168.878461395237,141.182680612505,147.185568118207,154.188177105994,153.211692999157,140.056947443676,147.649792347761,133.779094275913,238.969251608303,223.165436556823,136.474651219495,86.8317371137557,116.115066641751,2381.27868014444,697.875950294794,1968.52716093264,190.316474817355,149.073242938289,151.674421005879,1197.0483055139,979.179196804197,776.288160590378,701.316253324066,693.62182170726,751.627909086283,466.024295305136,585.799327382036,410.345010643724,1045.12821715825,416.336423054587,662.380832343831,629.452286514272,963.454803910914,976.430745570704,1625.9013552693,1987.02954542762,1267.44594297909,1997.99926353399,943.390687257796,1763.36684573138,151.80938532746,160.773163062103,123.358591492539,487.966260296035,446.777899168146,1001.43360659412,2085.00294836913,1506.96425601192,1094.4377359063,2155.22998124869,2343.11879950906,2161.63645425888,201.014229311898,251.6456732555,322.1014385147,172.002730352618,142.27378489814,118.254183923796,133.805143785788,1371.71574925003,596.747952417317,635.589904788259,496.285975771643,429.05470024729,542.044151027241,531.413343237402,1162.12790171588,432.689212356342,1033.38924962562,496.986548293585,674.083252835169,1451.67382403475,234.95266401335,163.227688936138,139.700079974272,143.077813950803,133.791649777608,91.7391781511621,236.026065835944,409.578552488137,1304.79875359662,94.2127952843337,185.028112116948,2137.65719966317,191.170141733778,175.879897523142,188.030456302257,140.857163039029,157.261873218559,160.455589322174,148.701919401549,132.576284815807,147.612193737651,141.973442041331,138.142548714957,471.270058932883,110.156016060312,971.689396196832,1051.10146053871,648.508523884027,143.132260570192,126.282061625478,274.891225263508,118.721956450289,163.630750107081,145.608426528374,191.574635765423,132.675212850776,147.0186370458,118.793509309977,174.439077926324,131.615991881049,148.495170719964,162.357157361213,153.238115963591,183.718921454701,169.408131737747,204.068168941262,171.882791561951,162.83636187804,138.687664445228,205.845285802874,151.950050943582,181.512928194615,160.014091876355,151.635784605984,140.340605740487,161.7267102256,149.804456315477,136.506763450342,131.701360354695,907.932055735303,2736.43317916644,252.030541762644,2392.4953926121,1807.67890887393,982.257235366484,326.190757274624,1491.51138580681,2104.88069266171,2517.19609245909,1581.31953968793,1404.36370712847,2317.18566609965,212.56751996021,216.164940463954,218.584091538712,260.896173124737,141.175169887427,135.486592516828,95.5083741744128,1246.33471020792,1263.98385124162,1290.70782035697,1857.17025619224,0,1941.57475311549,2541.93148581735,550.697238761471,717.521589090556,360.126883195554,815.860179446226,2108.14531210694,240.565419406971,238.542339389976,215.300080182792,296.431601638064,1029.9452209966,1804.08449268431,1900.66813859058,2496.23627706629,43.62964736991,114.15815496452,576.596168233821,1564.12235955455,1023.46925139823,1643.06457671417,926.724029456783,1870.80920336006,2345.73096700545,714.703993539054,130.299974928489,125.070415085083,131.544239102135,137.700343584984,133.644718675089,138.293349448125,1999.55740478755,875.85441137502,2811.5849736517,579.429104370664,2654.58860732823,1330.30680598762,544.012219057579,946.726286846629,367.671174050116,288.809992901422,355.093159770326,435.785447207399,275.768975057145,849.077796495165,249.526444017476,449.972393073237,2876.39979801272,200.951566728884,209.367922808554,3125.18036225366,944.96643464843,322.034684878746,246.610695305978,220.18206532366,380.992717321371,1078.49476734133,2534.33714732477,3114.18162708253,207.119795567129,179.829437823146,176.393186881833,192.2885975978,231.231415575662,279.134892103349,2622.47045802646,2925.25653286836,316.958781455434,373.699608369572,2478.48593990379,2320.1102983422,515.728767966599,1085.37332384123,1507.16287713633,1552.09926936928,1238.4374667428,1010.44206402549,1938.93862544186,1067.25927750901,129.927166274043,129.90637148108,147.351702760095,411.894228212255,111.849998209498,527.811586735674,685.902199650842,192.474218163737,141.84660650781,154.066504386057,267.910582862961,110.712075200495,166.585184298769,848.625050593252,684.241719549975,2279.02035108713,355.44932758383],"Archive423_field5":[-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1.86573461925877,-1004.03489640131,-1004.03489640131,-5.32040408696844,-1004.03489640131,-10.6773780488078,-1004.03489640131,-1004.03489640131,0.382728221620312,-1004.03489640131,-1004.03489640131,-1.70805153437419,-1004.03489640131,-1004.03489640131,-1.86573462011449,-1004.03489640131,-1004.03489640131,-1004.03489640131,0.402599399457984,-1004.03489640131,-1004.03489640131,0.382728222050275,-1004.03489640131,-1026.346782988,-1026.346782988,-22.3118865866957,-1026.346782988,-1004.03489640131,-12.9302953228488,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,13.9234215177135,-22.3118865866957,-6.49415957969711,13.2300547718002,-22.3118865866957,-22.3118865866957,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246200977869,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620098423,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201298853,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201642523,-12.1322536834644,-1004.03489640131,-1004.03489640131,-12.1322536835307,-1004.03489640131,7.94246201201122,-1004.03489640131,7.94246201712883,-1026.346782988,-1004.03489640131,7.94246201376984,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201605364,-1004.03489640131,7.94246201517802,-1004.03489640131,-22.3118865866958,-8.50415616914523,-1004.03489640131,-13.3172915499275,20.8012933970991,-1004.03489640131,-6.484319039318,13.3533221799019,-10.7426316298049,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-6.13899584061471,-10.7255646354427,12.7285795284387,-1004.03489640131,-6.48431904086471,13.3533221795731,-10.7426316282136,-1004.03489640131,8.82622136200843,-10.6244028613748,-13.8349005388457,-22.3118865866958,3.06730449534194,39.8335511594283,30.0880481346721,17.7013607076611,79.3166377725732,6.91505412343815,49.302617060269,55.6737065015006,33.896174672252,30.1818915205478,49.1977067452478,31.4320296162073,28.5827974601651,82.5841809424686,56.0035793430457,75.3638413273682,35.4245742161953,120.813991583567,28.9201819928979,97.5353811488949,112.962430523175,100.397898062442,79.2440478358114,-6.47786147222564,-22.3118865866958,6.01909653183412,-1004.03489640131,-16.1237549139601,-1004.03489640131,-1004.03489640131,-16.1237549147168,-1004.03489640131,-11.4324994449325,-1004.03489640131,24.794812689333,6.01909653028298,-1004.03489640131,-16.1237549133937,-1004.03489640131,-1004.03489640131,-11.4324994442847,-1004.03489640131,24.794812690903,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-11.4324994444304,-1004.03489640131,24.7948126894471,-1004.03489640131,-1004.03489640131,-1004.03489640131,-16.1338695179189,-1026.346782988,-22.3118865866958,-1026.346782988,-22.3118865866958,-1004.03489640131,-6.34574844371338,-1004.03489640131,36.4817071513331,12.9083498609584,22.8148039371792,18.9003815275257,22.6298880681195,52.7842000914906,29.0872009820332,52.7909118540404,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,29.0872009798487,-1004.03489640131,-1004.03489640131,5.94417597708554,42.2415916864318,24.9363742557928,35.2748892154652,44.5841758101249,78.4540574653122,57.9102565849224,48.439142437713,82.7357735273924,59.7368986308019,65.8816659359867,86.2690671239712,-22.3118865866957,-22.3118865866957,34.0135295427073,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,9.74183260070259,12.6033374147904,-11.2927061365044,6.49359155273152,27.6621948168156,25.4438495598533,66.4446359369044,48.3624418097024,44.3564104056831,54.6609580245687,50.02069492144,31.7822263191927,84.300935334491,11.8227263230977,55.6003005623927,60.2775545386897,93.6721845520076,71.5998437864305,105.637647564996,71.3923875724517,65.8774578605704,92.0437817127173,75.58796972012,106.408727024305,95.2889844454791,132.894992012272,71.841674414088,77.3775199284386,-1004.03489640131,2.09642019255745,-1004.03489640131,17.8488203688954,-11.2927061371036,7.98386561066536,49.3558235075603,26.6160653380965,25.6209179159651,39.2082757506033,48.4245118896995,31.86769908222,11.7661131947169,62.1873964128244,-1004.03489640131,2.09642019394886,14.6487589343,0.0674819430308276,-1004.03489640131,-1004.03489640131,17.8488203686265,-1004.03489640131,-3.37610189835431,45.6887277886844,19.7626370056832,29.0747921877152,29.7888678870024,18.4118623869763,0.217025254320106,40.3535085741369,67.4795814870575,71.3017569870563,52.7909118543566,10.8842284729205,31.1269461503889,58.9309301081481,14.472612883317,39.730189767963,28.3950033974821,10.8842284729658,31.3337696889882,25.1121229429542,73.6390988135703,3.84229941083208,-5.3917958174261,58.4845535190493,50.3371866765528,8.5911431029046,36.6069463057471,38.4019007598162,48.0098989319283,53.0569290479509,14.4726128820075,32.4571777704739,32.8258800064307,20.9938577041856,62.9141114959777,-22.3118865866957,-22.3118865866957,-22.3118865866957,-9.18572137881705,6.68869760424582,34.9514705960922,15.1894312213601,96.6284954807157,-9.20425961578331,6.7571125444814,42.0932459073928,28.0148305440199,22.4591346846447,32.4416003527506,-7.79078171769623,3.95109190095178,32.0576937223642,3.38675745593162,24.7908238431443,5.13486699569512,5.67287543575185,-6.21987739881001,6.48614489977734,38.9258410821357,7.9398213645461,9.4809051500589,56.6257930751213,45.7494971301226,56.0934383489007,124.364818249116,66.2179535117044,78.5595580004794,115.941515270475,91.8195145555857,14.5267462665565,49.0813288191072,73.1665860419262,66.4235879121048,86.2848122204173,85.0237615358961,74.4417692401076,129.072827003248,45.4211782855838,107.820691042524,106.560414115413,65.2749758325582,66.0612518269076,110.351919135679,133.657200095536,124.02871798734,164.618122778342,143.295070063987,-22.3118865866957,125.286866567413,167.206870076219,128.670420424397,149.335151389059,101.284401838968,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,189.094824455141,-22.3118865866957,-22.3118865866957,-22.3118865866958,169.1503310417,-22.3118865866957,-22.3118865866957,207.550242542316,-22.3118865866957,-22.3118865866957,205.124985853367,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,57.3110920668582,83.6186496049072,79.7748493477665,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,52.3089918464665,30.8997221521129,-3.72696222840335,63.6206516399131,68.7630789093847,27.8732607773815,57.682840413622,38.5678004125347,43.9160522688983,63.9213601317228,86.9134675411592,62.5507954059221,58.2409711794388,78.4813257862671,123.340217206628,96.2270058656176,101.68719302365,125.238229640223,119.302666041622,160.69532608623,139.63732345322,154.196584781469,26.6247045876559,28.1957910599185,33.3916214452844,94.9629279042715,14.8267599096186,-5.31537789436834,33.3775842056455,113.167313235841,98.1964396678895,148.150650908305,146.229898342763,-22.3118865866957,84.3857126287415,64.595888473353,132.310764708529,111.034503849403,105.880261777928,45.0906227521446,41.5702000692108,76.0119194318353,10.9514477851601,64.1937246983898,92.2094414649446,37.0927960852875,55.7983044896501,57.9721780917667,38.238017352515,15.9903111920977,-4.44186718559575,76.8634528898766,77.3500513712026,46.9899633028219,112.024294428727,69.4322040115057,98.5690003558271,81.8535221169006,103.343021782206,71.1887793700487,38.1922001504714,16.8361140174449,54.9794152506233,11.1291969380391,48.2510333624119,-22.3118865866957,134.059772896181,102.633988373431,7.47066646891517,-7.76120450802784,148.702651385051,35.2725682574065,10.8760566333162,103.769207124703,108.584558205041,82.4762969081376,111.333747369104,140.008272226531,119.637926942354,53.0133995693175,69.0122776633632,93.48046637123,123.82065470455,-2.17538648718727,30.4877194726769,57.8491961739253,81.8619055631148,82.0806921298806,-22.3118865866957,81.9764978573661,143.972911736266,129.203801735713,-22.3118865866957,165.380711199236,130.755041172074,144.105141774104,131.768603084792,-22.3118865866958,160.496776905666,110.998339533156,97.6154159592663,165.962923784006,97.8697536666336,120.294138167316,155.286998176178,133.180361202721,143.914427993959,98.1874973164513,92.8872748082143,119.70805241835,83.76012276542,113.767066512325,78.654436755952,103.445083174279,134.818948423154,50.030424278119,87.8427410633602,85.2716767805422,117.193842072871,97.2291357087095,89.7793553454653,81.552265876838,150.130158069731,167.792733445885,145.222375983542,134.950676988781,64.6421181675113,75.4243622866026,107.039914920236,172.971363388437,151.603851258647,80.1775946924533,121.643706760136,133.542100249927,163.209440688717,153.570978880148,185.171468864147,191.744352747078,112.069012548187,89.13582843123,75.489521530191,80.8928702670617,-22.3118865866957,133.813371947464,-22.3118865866958,173.072757643504,-22.3118865866957,151.404394456582,-22.3118865866957,-22.3118865866957,-22.3118865866958,186.842794225428,125.120332772188,110.894990504071,133.487876800215,162.409765286135,32.338789604893,137.000922383199,74.3724521277803,59.8885237442851,95.8706561946358,107.071111326464,127.933019703814,125.946760411667,144.179027577437,187.568536077155,168.720680475072,164.637064573745,165.309466457639,193.005552797276,175.250819165573,194.951362682138,237.876496552214,221.997933390133,214.487637153331,214.526771597227,222.582571044266,-22.3118865866957,243.124519768589,-22.3118865866957,148.960265600981,175.988957504124,169.063972555285,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,161.328054045441,153.081265299424,191.888735708948,48.2469911144827,51.1049869508653,29.2865410655509,6.74286754377272,14.2485746261325,20.5917273334148,-6.60393676078365,-7.33906708218626,8.09623833480697,115.771088269857,89.2461552593629,69.2556698469793,141.418711174504,175.452767184112,197.679048484884,196.798900654555,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,186.018284723395,149.020411318709,182.290717348143,173.397337266187,181.238586478799,206.936226086974,221.883132402739,228.168683489221,-22.3118865866957,212.636504593589,228.492467195201,-22.3118865866958,123.070447616465,136.329489994976,125.950283795707,180.29259927096,158.19624829373,153.814593317637,173.965899740664,204.370738868307,184.496742851761,208.672429926777,207.21116504315,240.036003445492,221.555635415164,-22.3118865866957,-22.3118865866957,242.044608012181,179.687835642647,163.999296182837,203.791627808573,215.564829310416,148.256236161921,169.421351067773,121.943156026546,191.915096770084,170.651811006466,205.81917456683,137.854233245889,190.94178127132,169.347438328254,151.059751030985,162.714538128504,128.456885872335,143.591846379224,113.434977406849,141.59273033209,150.948543710117,187.097855982985,113.075891616281,165.51490656934,131.657211306064,155.562518585006,167.778790409234,189.217532297872,154.901650429128,184.645347298793,210.078384525232,198.466507073285,240.449823907673,-22.3118865866957,232.815081733634,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,107.67738123976,105.127885634911,103.826987131366,87.0035269652008,189.542649952155,193.987896921384,210.571723468924,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,233.340315418878,237.868299647795,233.506897098169,237.215241979543,-22.3118865866957,228.801206476262,95.0209284772066,106.832101453779,75.2560528057624,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,225.371204714401,201.520276060854,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,224.416599341426,203.630201488263,216.278175796255,213.861119017491,197.8686585431,189.601313376317,180.495193662822,-1026.346782988,38.8974145729957,8.07752256008393,45.2836048886647,15.1606947401658,27.7935420792658,48.7699646667651,35.2565825181601,62.2038678723161,76.5147521665165,66.2661719043376,57.4353616767448,82.0372020522045,41.5212489608193,91.2058900631578,53.902281240207,13.785910125567,116.258707783349,110.298083239468,-4.35410514320068,33.8947013333096,71.2990865502966,91.6764472565484,103.618734944368,58.6327413763724,30.9444988079017,20.3188890367212,-6.11308026931141,112.220319308981,134.014385152462,136.510799412065,122.537689991698,98.7091577574195,81.2865619061268,-9.5259524821862,-12.2064541923179,70.0690338154616,58.6799464156607,7.896926408436,-3.35580294529507,45.5848795737924,18.4479175313971,2.41081875295163,2.57434771645541,-22.3118865866957,-22.3118865866957,-1.73029327280381,-22.3118865866958,190.305127172657,196.221031714531,171.532660988827,180.095737410207,161.552124075994,241.084013801906,247.658718560054,121.458440634562,177.647701879244,164.425063223403,230.374387339944,213.760840058251,147.642242189514,41.1829456545146,225.596745385455,-22.3118865866957,222.283730726769],"Archive423_field6":[3006.98969614009,2966.7808975869,2953.08539824596,2951.99643549475,2960.62325508435,2982.07053164115,3021.13441911611,3066.91778008687,3107.00290980212,3143.42056304356,3171.69781441144,3181.97856359071,3171.42736873182,3138.28956352078,3098.73883455446,3067.50474312144,3040.71276437767,3024.65831376762,3011.84214403679,2990.37528000311,2969.3098996453,2935.73081569716,2907.31812524728,2894.233811245,2870.63807418266,2855.66015184184,2821.95874896224,2761.80833037236,2634.63041540264,1723.30753827622,882.681097727643,218.940779883208,600.337113552598,1334.56350656717,2074.51268454849,2869.86236156213,2959.26900577107,2966.07628877256,2981.55518350394,3008.87800908558,3048.3828158264,3076.27584290443,3099.07201671148,3091.37155447593,3080.5629912738,3058.9575742597,3022.26135971252,2993.09268168163,2947.1222493192,2900.71287927787,2850.90666626601,2796.39618388724,2745.72490700037,2705.12002871393,2692.8274843221,2708.60574448932,2740.93037778012,2786.50715708769,2843.0930977827,2894.18212166652,2931.98063015902,2955.76520692672,2966.2381127763,2963.83231851969,2953.20805201874,2942.54473073882,2935.24433431068,2929.04995150244,2931.83445434873,2949.28147316021,2974.41976042662,3004.23131537084,3041.36963669711,3074.15232060375,3093.04164746347,3104.39449784258,3104.24340662047,3089.57749992992,3063.84171870051,3029.81858753487,2991.35548939095,2951.2270355073,2918.31885843149,2883.67115363332,2843.5210937331,2810.69703367243,2784.26640701722,2767.58036587672,2755.53239735738,2747.07787713293,2745.03779311907,2746.60120988317,2747.93966059112,2752.5396141768,2767.43935899745,2784.85935317331,2805.93144727013,2835.43953241787,2867.03022854071,2893.63388068337,2916.62889775609,2925.17781909546,2917.1521454498,2890.07098067955,2843.80214146871,2786.37693210322,2733.3399897114,2711.453072861,2729.8598785438,2777.83997960876,2865.51590441576,2987.11338011881,3127.33384146431,3270.71233606094,3390.42796594377,3484.38109390392,3543.59381651262,3564.07082630073,3548.90584573871,3503.73220305515,3433.44442286025,3345.75643645082,3244.43769446777,3149.96218485035,2741.23025770392,2833.71729936381,2851.94303346364,2910.90444835339,2747.56132688914,2690.88502776483,3246.52326230448,3081.81345022702,2756.64022552453,2845.31510691223,3050.85590597278,2885.25094716004,2731.64432565747,2494.65726200835,2758.88401454484,2716.06038293568,2820.50384858406,2872.2051343823,2882.62198885028,2810.4745695238,2605.7497175925,2541.41665847227,2562.48760023126,2645.42439073384,3417.51504252673,2692.55053482687,3219.11747452414,3070.97392979189,3333.46417711527,3278.79440404694,2975.29649359117,2995.13766182471,2958.93582112726,2746.37480838966,2923.39684760773,2792.36936749434,437.169641114206,2252.46317048824,2485.31298825499,2640.83058888478,2561.94411181143,2578.06174713112,2845.52737339037,2707.56965376558,2850.1020679312,2825.74402233628,2860.73464184497,2994.5242187078,2803.92964348667,2711.96719672879,2635.96497867852,2634.37509599925,2594.10801725333,2656.27657059364,2677.22313468345,2527.87155616119,2640.06670133133,2766.75492383424,2932.20154236222,2517.65250366232,3459.32686131214,3042.63446152026,2806.6763123942,2820.66557770864,2359.38592757429,2838.64941476831,2859.62063322639,285.52310697812,2007.58530814942,1054.96157539659,2559.77756195172,2014.91770384,2793.43324948252,2604.2711523621,2680.45264394139,2755.61988090695,2971.95939809334,2880.58714762747,2854.88021083656,2757.95021000453,2700.64192683087,2629.91120582169,2594.11038340222,2687.29967513396,2888.25119358529,2551.2417413307,2486.46390813133,2921.42673154097,2389.48860496025,1501.56537153146,2475.0549737962,2714.63057129625,2934.95607998392,2745.78314248693,2640.63064314096,2606.59468988712,2618.75990038682,2563.12228106088,2955.07052815592,3102.68144425553,2856.43040346463,2195.67895686936,2626.03544916229,2516.08076785319,2861.50829777031,2712.74345383657,2652.61686669829,2586.13202160117,2436.19379469301,2448.75479032668,2324.89222682789,2386.2184698796,3114.63785904156,2844.21518912077,2205.27040095457,3206.6752950066,3479.89643085326,3359.5010370259,2688.42983478803,2686.32998961144,1017.62770234613,2072.63251823417,646.022288730183,2604.76879599028,2438.57456185145,2592.01080286239,2385.63722228425,2725.66787813214,2592.61750868856,2783.38346007209,2597.7098499726,2658.27394999836,2511.03417927061,2624.49571985126,2446.7500817023,2482.00261542345,1905.11033066695,2501.70315173757,2174.1078915117,867.44459521523,861.11745105192,2717.29391738626,2661.38858651762,2392.35584304101,2564.89453320063,2791.872101561,2282.90119669757,3069.91097312483,3113.88524609689,3266.40256282907,2400.23202065409,2107.36061623854,2347.43867606303,2451.80468274209,2005.66580356538,2278.59942526317,2455.18842700374,2063.14568599051,2337.23267850009,2292.8044588465,2427.68161309471,2209.28343786246,2403.30367959709,2107.74564276202,1755.02467888797,2050.31781429601,1188.53273044667,348.824689221214,448.58728883763,405.926283579362,2909.3620648528,2871.56751628233,2442.7132373175,2541.60964814396,2322.73688342401,2501.6832566049,2199.88075276347,2323.18140251191,1725.6579937164,1419.8864775335,944.641017214129,2040.09812768327,1523.4541980835,891.342834111966,561.562245435508,2766.95531511178,2456.38578264663,2805.43001542842,2396.76183277525,2737.60324867758,3066.39040291277,2903.68230568689,3286.73039763274,3000.87171373537,2537.53858248137,2768.09481187694,2429.3691611166,2460.62311455499,2831.11133867415,2403.3494078013,2745.44897248458,2603.80266174849,2626.10893179153,2037.42046504797,2277.79266529136,2557.6814926017,2283.50536086011,3141.791736628,2846.133883586,2200.15455251574,2859.77357475198,2212.39867355812,1449.88169727577,2425.16250293284,1967.38039612842,2749.16077241666,2439.3833260855,2919.5164977522,2173.8753221756,2748.83107854013,2149.42488270076,2662.85251981594,1624.73771965336,2454.40368608063,2996.1399478618,2994.15939358061,2373.66371921087,2568.47465168867,2395.86521930101,1991.09135243404,2491.69173226077,2535.19564034619,2470.63890432382,2590.65934992066,2603.68422981856,2457.80411633725,2401.2253317993,2110.64690289442,2404.12705664955,2231.69252381321,1771.02662765346,2434.73495388654,1944.23791682545,1710.38429169939,1867.32339514441,2083.61301731486,1491.6210172554,2023.35256416933,626.292190639532,831.475778310411,1450.35029599923,282.783951919531,2564.92419446423,466.898713321317,400.096627127405,693.244093876847,771.592799737506,485.895189413763,802.132375107504,997.454048784487,268.610735545131,415.721547636454,296.543682697877,847.989333392738,194.332920083936,976.856635067205,231.910705734615,203.994543198036,226.166493222515,279.100109914407,2106.81776086063,439.271138749231,2244.73920717922,2605.83445761584,2777.50963280722,2870.8849614651,2811.36904520198,2718.18505617869,2556.11024959308,2419.42642590897,2597.13307798011,1140.03943158928,2286.43065884893,2628.63290092848,2747.64380927179,2386.9569954282,2366.72221795668,2244.55490981345,2387.46291821509,1126.42258678845,3159.97009582666,3250.81560891161,2533.16129506601,2562.89647453946,2440.13643529909,2590.70676751456,2523.53644960561,2551.21748150654,1210.30668774367,2642.66462880129,2534.46008186778,2472.68100619045,2428.93124243166,1468.87587993347,1050.36597323461,1874.12935299523,931.191379586025,2571.350541123,2431.07589375879,2636.92941644153,751.004261615835,2017.95962690392,1262.20328365521,1377.47867006632,1266.33381545943,409.178805197279,931.618010490981,423.089379979319,2621.90456033986,2625.2848839601,2546.78838348428,2493.31266016262,948.568507233989,2555.38281095566,2594.59692541075,1740.792936064,550.546935193017,1024.25477209702,851.960746263778,512.929962088573,287.002488969035,385.743261432544,488.275088561136,652.128843319367,388.483769685763,326.169043171061,257.156273226573,1253.37273640415,1258.32767143857,1057.06317829812,870.723547687553,951.625289307655,1295.89640237359,684.336342289285,1467.76469485793,658.370410486764,571.614556648147,676.385789106271,822.677210300595,712.759118804589,742.089708111704,1862.79794417618,2132.26151975492,2456.5011327357,2132.68148880065,999.156439913594,1093.9180345449,334.501084329168,502.391373468719,547.772196253492,407.376550996637,460.522941442341,973.64100224614,267.453873844508,2435.37985762493,403.986799589733,381.576801957147,240.420773480493,310.707430430789,214.39968073153,308.811751709729,341.8527326002,244.493901706316,298.207811134078,212.641210809149,236.191336175356,177.428929407829,311.119425260378,287.768706764433,2773.27881717183,2307.17831165841,2844.05477033754,1496.77578741685,2502.27748379154,2194.01560324671,482.885782189031,1097.33787854002,1179.01590486919,626.029291438854,514.422961435779,970.179901278689,2418.84007007646,353.933151163052,2768.92521945644,2343.80586544524,1570.3637983284,2371.64036460243,2431.43578405845,2730.69536880353,1429.79078204716,2534.96186998066,2227.16749211888,492.651691794256,1247.15383490997,910.759374897717,909.867228364948,1286.72206910518,2071.7618115956,564.387031908615,305.365851789419,286.993695444555,414.353737280775,2152.67947991984,917.323771108922,365.999851415142,1669.08997575104,641.634235443231,967.831803849302,2112.15370362939,927.331561815074,1120.24253839561,297.2884186514,2203.78662337385,2496.00143526878,381.082457238346,459.208594033912,2379.17283889099,784.07034350288,648.821442972702,481.437364483804,439.302722949113,1575.91940628413,805.160897235098,733.331594503969,1073.04148269941,659.074562473753,485.402421913412,638.924940733625,1213.64204736199,2752.76167930183,2536.44827029332,851.210729267069,1633.72392189072,234.718263017419,2685.73188624197,2320.64915459331,574.224626010969,1133.07473024727,1313.89183222748,824.180533420512,2242.72499693506,2094.27343113249,831.407045328927,2207.58749871174,1215.33158365116,2117.49795939179,2170.32798079945,2364.29223638854,2167.54050080579,659.599720727534,2145.03610948226,1953.95551024292,379.606192346954,518.86678446878,370.972082915718,398.202431669807,339.679814623819,284.20884349466,194.579687810399,245.94400718972,1398.92105221418,479.424740979977,301.47532736297,339.074522423895,259.526819634778,262.011052566989,298.389481840716,184.239332333765,498.213111900806,211.342358420939,215.080801788283,341.464686601614,337.847047593863,208.385451177965,182.084376780231,187.051204515884,130.637073574021,157.345679869033,2144.02416152774,592.483547002512,593.105621772114,164.23330885421,586.173326012881,217.864041356347,2593.41441253715,1272.51168847825,2617.26017367781,2026.63983270464,527.100148505042,1246.96118227796,1773.97359916396,1770.17225289125,170.648245045814,1886.44121771947,555.983627358112,262.476376460435,1338.48809093701,975.968541783576,521.390325510593,2221.91036440014,605.384183683011,814.943963103705,908.031881015895,650.402718568677,396.074533776411,265.757408766103,274.776701688025,915.591820391638,1102.62181648883,1436.27444801924,1514.07020062392,1773.51874932832,460.714418635595,1041.33760205591,2275.17260808485,357.968951159409,320.866575092316,890.480519974018,365.03472102485,689.188096257908,527.988572973273,342.934871752798,257.928979616928,360.297406810175,373.697668133686,279.757466543656,190.708891419101,232.484333886551,224.522171671821,189.035654997469,195.369165134199,156.316377997871,172.693811720388,160.867311678323,1107.09653438279,943.752584900182,762.718177676359,241.664335350688,1428.07636882256,2052.88178215493,700.731876355448,206.60644268027,228.001361574199,170.606397752056,168.049212006421,1309.9143192924,264.201360238815,347.948751938402,159.831714908476,205.017895050981,687.302979006419,530.374448396872,640.750888641398,291.718328109382,2225.75863707817,348.731079122552,243.66609394533,712.726672378933,425.537439897353,394.287536604601,701.705620317563,1631.44056923567,2371.12240664391,287.424470831013,286.447565229445,497.366442829085,207.690876387296,316.834856403901,236.877893625833,268.966411856299,220.992229520251,313.130668082989,653.014758380162,1418.40114188722,326.37447303049,1918.88496358769,455.826244576921,1411.79590743194,180.572302275528,209.92005436404,2165.22090772226,2455.52738247021,164.011932980367,812.174485728011,2228.92219773163,219.250801947294,211.767510463598,244.92185327766,191.868022399273,173.855916048941,196.971930726059,451.429397302123,330.4998085884,241.008539049778,189.870805654162,2104.1714254363,875.178991866535,377.464654212118,215.432491364503,279.221948525346,802.424060303881,310.909380636438,350.293927919601,795.980230418888,2035.8980158279,157.567770489183,334.432026259637,213.228264190942,690.162582043041,604.812627554059,160.791362425803,209.142772537223,230.583951783588,153.038932849943,459.312607913919,183.682541417103,155.148739881494,176.57366521782,161.225952700868,226.335767315114,237.891743888152,194.338715704329,270.027348228338,202.800335342593,280.815628986767,221.108870381398,177.37979593088,449.026135634268,255.53500433412,263.68605518947,198.713602893267,232.783839272071,248.868653197517,270.986714098807,164.510297601343,151.348259794719,168.766540929868,177.195641050778,256.912870850786,356.122614313339,424.031577919596,169.315851323905,166.845597443233,278.121777674124,193.307215486242,179.54121415325,153.189835309143,169.407430738232,147.223932188982,139.403433665255,243.359549480364,240.575826059114,265.357544585175,749.478894765324,1997.77987896544,714.762855688434,1772.52039013028,713.428078748805,1219.76523899034,426.420227371363,1590.00155359511,1614.52263537307,1255.40978624126,121.172337978752,185.519366169114,206.977415511939,178.483040772519,152.180921730278,789.775184552314,175.142534177833,298.063634204016,363.9348053548,229.574791221685,214.036044336238,185.180582396134,187.561682386569,168.911427846756,141.420731846956,147.224277649105,154.289755723493,153.304096014069,140.32448894236,147.781396196721,134.098355727627,227.070725359175,223.637205387753,137.491527328403,86.9576427004514,116.181593460108,2547.79959592317,735.232506915041,2085.04286799764,190.579233863266,148.993146255148,151.910522626933,1353.47576972898,1101.51715374285,898.183757261949,833.018528244175,783.09027807197,850.156455773153,545.426124450259,656.028151083118,460.483297021817,1152.37240052737,472.393372969024,743.823158375622,690.377798587485,1046.26156287167,1051.39428330903,1707.75041853271,2159.46716370539,1341.79718710374,2235.60141900958,1043.09242186264,1944.4067732298,152.050082660772,160.804236501466,123.350389958473,488.459042756448,447.217681440045,1003.41634625473,2097.89124839051,1526.75507899409,1104.08353202686,2173.65380109986,2354.73930726496,2169.48847245488,201.025206187102,251.679493193646,322.236262726933,172.027045432876,142.293269554521,118.445336710271,134.135705043279,1534.37568718638,722.337616658354,703.777403228298,543.376138584766,477.945393552481,601.257871657542,587.282435141774,1287.40982401967,480.111603402611,1116.1015454327,540.062811365891,729.369046004666,1589.32202835792,233.98214185911,163.268011554555,139.904324844037,143.122046885859,133.789745508183,91.6274665484093,236.022679797478,418.571779769781,1376.65751017519,94.4414589895515,178.401791597284,2256.39060963754,191.181774193671,175.894705870271,188.047248543792,140.925632725529,157.293774180566,160.466175998812,148.816702996209,133.022679580617,148.021953999687,142.33413407664,139.130014216801,487.805780610026,111.286725063184,1069.30316745489,1135.45678421486,673.834233412808,143.82957840344,126.460076855565,275.672298671875,119.498165943153,163.705169864408,145.72083440496,191.594144848907,132.975296251889,147.105084963706,118.725248302524,174.454229598614,131.750312316756,148.492461022141,162.394255015454,153.266985428509,183.734146174751,169.414812005596,204.073340283013,171.90278388345,162.844928369406,138.876362690371,205.853643756017,151.998376909885,181.519512392308,160.047928728867,151.733470767871,140.422877109126,161.78086865168,149.840555620593,137.084472502365,131.379769780434,933.887955182227,2971.27360661789,244.951903604971,2522.85287168917,1936.60853347242,1080.56170285496,358.50499519696,1659.06515379609,2249.13769305814,2704.91307120172,1699.00277274905,1492.36203180997,2477.81961372211,212.579968708881,216.177951682809,218.592539140176,260.910897541579,141.314530506974,135.749411207473,95.3448523678204,1330.79271367883,1384.82329652349,1378.56160951607,1987.59323428593,0,2055.37118427041,2692.29060627657,573.384740722766,739.858006480793,352.445429171216,839.316725344652,2377.54323986948,241.58294743168,238.545738098847,215.306788623894,296.397027714224,1121.28779406617,1945.18057397557,2122.66090350552,2680.88303106239,44.0956091634456,114.162551251983,625.520078466804,1680.50818247456,1105.73646172288,1779.81897228447,1006.26554830231,2038.66073196719,2549.63925210096,748.123951073128,131.226019288056,125.949265344774,131.85371645506,138.058042525052,133.619808240065,138.306559962094,2052.54049081171,876.517579369475,2816.63644832047,579.666613266454,2658.70731140455,1331.75203551902,544.35408507939,947.386158716415,367.728015344309,288.834261685946,355.144589272789,435.912147991854,275.785811632376,850.10095728428,249.542825033569,450.152505667821,2883.53234892089,200.961368867358,209.380524640413,3131.03780165741,946.570452512013,322.121070740384,246.628344287894,220.190314771736,381.371068574942,1080.54915941713,2543.64772510557,3122.7512562781,207.130345941715,179.846715924534,176.406152269909,192.298128425004,231.240498220787,279.153457140901,2650.75923876313,2942.79717134286,317.131054506302,373.749910413333,2488.70679393279,2342.95894596109,515.90977041764,1097.13714803472,1540.91071129108,1616.83235456267,1353.58108730492,1165.86794455857,1960.30245534291,1208.42816458582,129.99194411186,129.916917742946,147.376237419962,431.675576587675,112.826726915088,548.329466216587,734.066139605113,192.485150652257,141.855539901277,154.096009619712,260.147735748036,111.009140517021,166.621607138068,977.109794820987,742.607417320223,2440.21686327644,347.780613301526],"Archive423_field7":[-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1.86573461925877,-1004.03489640131,-1004.03489640131,-5.32040408696844,-1004.03489640131,-10.6773780488078,-1004.03489640131,-1004.03489640131,0.382728221620312,-1004.03489640131,-1004.03489640131,-1.70805153437419,-1004.03489640131,-1004.03489640131,-1.86573462011449,-1004.03489640131,-1004.03489640131,-1004.03489640131,0.402599399457984,-1004.03489640131,-1004.03489640131,0.382728222050275,-1004.03489640131,-1026.346782988,-1026.346782988,-22.3118865866957,-1026.346782988,-1004.03489640131,-12.9302953228488,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,13.9234215177135,-22.3118865866957,-6.49415957969711,13.2300547718002,-22.3118865866957,-22.3118865866957,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246200977869,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620098423,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201298853,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201642523,-12.1322536834644,-1004.03489640131,-1004.03489640131,-12.1322536835307,-1004.03489640131,7.94246201201122,-1004.03489640131,7.94246201712883,-1026.346782988,-1004.03489640131,7.94246201376984,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201605364,-1004.03489640131,7.94246201517802,-1004.03489640131,-22.3118865866958,-8.50415616914523,-1004.03489640131,-13.3172915499275,20.8012933970991,-1004.03489640131,-6.484319039318,13.3533221799019,-10.7426316298049,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-6.13899584061471,-10.7255646354427,12.7285795284387,-1004.03489640131,-6.48431904086471,13.3533221795731,-10.7426316282136,-1004.03489640131,8.82622136200843,-10.6244028613748,-13.8349005388457,-22.3118865866958,3.06730449534194,39.8335511594283,30.0880481346721,17.7013607076611,79.3166377725732,6.91505412343815,49.302617060269,55.6737065015006,33.896174672252,30.1818915205478,49.1977067452478,31.4320296162073,28.5827974601651,82.5841809424686,56.0035793430457,75.3638413273682,35.4245742161953,120.813991583567,28.9201819928979,97.5353811488949,112.962430523175,100.397898062442,79.2440478358114,-6.47786147222564,-22.3118865866958,6.01909653183412,-1004.03489640131,-16.1237549139601,-1004.03489640131,-1004.03489640131,-16.1237549147168,-1004.03489640131,-11.4324994449325,-1004.03489640131,24.794812689333,6.01909653028298,-1004.03489640131,-16.1237549133937,-1004.03489640131,-1004.03489640131,-11.4324994442847,-1004.03489640131,24.794812690903,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-11.4324994444304,-1004.03489640131,24.7948126894471,-1004.03489640131,-1004.03489640131,-1004.03489640131,-16.1338695179189,-1026.346782988,-22.3118865866958,-1026.346782988,-22.3118865866958,-1004.03489640131,-6.34574844371338,-1004.03489640131,36.4817071513331,12.9083498609584,22.8148039371792,18.9003815275257,22.6298880681195,52.7842000914906,29.0872009820332,52.7909118540404,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,29.0872009798487,-1004.03489640131,-1004.03489640131,5.94417597708554,42.2415916864318,24.9363742557928,35.2748892154652,44.5841758101249,78.4540574653122,57.9102565849224,48.439142437713,82.7357735273924,59.7368986308019,65.8816659359867,86.2690671239712,-22.3118865866957,-22.3118865866957,34.0135295427073,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,9.74183260070259,12.6033374147904,-11.2927061365044,6.49359155273152,27.6621948168156,25.4438495598533,66.4446359369044,48.3624418097024,44.3564104056831,54.6609580245687,50.02069492144,31.7822263191927,84.300935334491,11.8227263230977,55.6003005623927,60.2775545386897,93.6721845520076,71.5998437864305,105.637647564996,71.3923875724517,65.8774578605704,92.0437817127173,75.58796972012,106.408727024305,95.2889844454791,132.894992012272,71.841674414088,77.3775199284386,-1004.03489640131,2.09642019255745,-1004.03489640131,17.8488203688954,-11.2927061371036,7.98386561066536,49.3558235075603,26.6160653380965,25.6209179159651,39.2082757506033,48.4245118896995,31.86769908222,11.7661131947169,62.1873964128244,-1004.03489640131,2.09642019394886,14.6487589343,0.0674819430308276,-1004.03489640131,-1004.03489640131,17.8488203686265,-1004.03489640131,-3.37610189835431,45.6887277886844,19.7626370056832,29.0747921877152,29.7888678870024,18.4118623869763,0.217025254320106,40.3535085741369,67.4795814870575,71.3017569870563,52.7909118543566,10.8842284729205,31.1269461503889,58.9309301081481,14.472612883317,39.730189767963,28.3950033974821,10.8842284729658,31.3337696889882,25.1121229429542,73.6390988135703,3.84229941083208,-5.3917958174261,58.4845535190493,50.3371866765528,8.5911431029046,36.6069463057471,38.4019007598162,48.0098989319283,53.0569290479509,14.4726128820075,32.4571777704739,32.8258800064307,20.9938577041856,62.9141114959777,-22.3118865866957,-22.3118865866957,-22.3118865866957,-9.18572137881705,6.68869760424582,34.9514705960922,15.1894312213601,96.6284954807157,-9.20425961578331,6.7571125444814,42.0932459073928,28.0148305440199,22.4591346846447,32.4416003527506,-7.79078171769623,3.95109190095178,32.0576937223642,3.38675745593162,24.7908238431443,5.13486699569512,5.67287543575185,-6.21987739881001,6.48614489977734,38.9258410821357,7.9398213645461,9.4809051500589,56.6257930751213,45.7494971301226,56.0934383489007,124.364818249116,66.2179535117044,78.5595580004794,115.941515270475,91.8195145555857,14.5267462665565,49.0813288191072,73.1665860419262,66.4235879121048,86.2848122204173,85.0237615358961,74.4417692401076,129.072827003248,45.4211782855838,107.820691042524,106.560414115413,65.2749758325582,66.0612518269076,110.351919135679,133.657200095536,124.02871798734,164.618122778342,143.295070063987,-22.3118865866957,125.286866567413,167.206870076219,128.670420424397,149.335151389059,101.284401838968,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,189.094824455141,-22.3118865866957,-22.3118865866957,-22.3118865866958,169.1503310417,-22.3118865866957,-22.3118865866957,207.550242542316,-22.3118865866957,-22.3118865866957,205.124985853367,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,57.3110920668582,83.6186496049072,79.7748493477665,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,52.3089918464665,30.8997221521129,-3.72696222840335,63.6206516399131,68.7630789093847,27.8732607773815,57.682840413622,38.5678004125347,43.9160522688983,63.9213601317228,86.9134675411592,62.5507954059221,58.2409711794388,78.4813257862671,123.340217206628,96.2270058656176,101.68719302365,125.238229640223,119.302666041622,160.69532608623,139.63732345322,154.196584781469,26.6247045876559,28.1957910599185,33.3916214452844,94.9629279042715,14.8267599096186,-5.31537789436834,33.3775842056455,113.167313235841,98.1964396678895,148.150650908305,146.229898342763,-22.3118865866957,84.3857126287415,64.595888473353,132.310764708529,111.034503849403,105.880261777928,45.0906227521446,41.5702000692108,76.0119194318353,10.9514477851601,64.1937246983898,92.2094414649446,37.0927960852875,55.7983044896501,57.9721780917667,38.238017352515,15.9903111920977,-4.44186718559575,76.8634528898766,77.3500513712026,46.9899633028219,112.024294428727,69.4322040115057,98.5690003558271,81.8535221169006,103.343021782206,71.1887793700487,38.1922001504714,16.8361140174449,54.9794152506233,11.1291969380391,48.2510333624119,-22.3118865866957,134.059772896181,102.633988373431,7.47066646891517,-7.76120450802784,148.702651385051,35.2725682574065,10.8760566333162,103.769207124703,108.584558205041,82.4762969081376,111.333747369104,140.008272226531,119.637926942354,53.0133995693175,69.0122776633632,93.48046637123,123.82065470455,-2.17538648718727,30.4877194726769,57.8491961739253,81.8619055631148,82.0806921298806,-22.3118865866957,81.9764978573661,143.972911736266,129.203801735713,-22.3118865866957,165.380711199236,130.755041172074,144.105141774104,131.768603084792,-22.3118865866958,160.496776905666,110.998339533156,97.6154159592663,165.962923784006,97.8697536666336,120.294138167316,155.286998176178,133.180361202721,143.914427993959,98.1874973164513,92.8872748082143,119.70805241835,83.76012276542,113.767066512325,78.654436755952,103.445083174279,134.818948423154,50.030424278119,87.8427410633602,85.2716767805422,117.193842072871,97.2291357087095,89.7793553454653,81.552265876838,150.130158069731,167.792733445885,145.222375983542,134.950676988781,64.6421181675113,75.4243622866026,107.039914920236,172.971363388437,151.603851258647,80.1775946924533,121.643706760136,133.542100249927,163.209440688717,153.570978880148,185.171468864147,191.744352747078,112.069012548187,89.13582843123,75.489521530191,80.8928702670617,-22.3118865866957,133.813371947464,-22.3118865866958,173.072757643504,-22.3118865866957,151.404394456582,-22.3118865866957,-22.3118865866957,-22.3118865866958,186.842794225428,125.120332772188,110.894990504071,133.487876800215,162.409765286135,32.338789604893,137.000922383199,74.3724521277803,59.8885237442851,95.8706561946358,107.071111326464,127.933019703814,125.946760411667,144.179027577437,187.568536077155,168.720680475072,164.637064573745,165.309466457639,193.005552797276,175.250819165573,194.951362682138,237.876496552214,221.997933390133,214.487637153331,214.526771597227,222.582571044266,-22.3118865866957,243.124519768589,-22.3118865866957,148.960265600981,175.988957504124,169.063972555285,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,161.328054045441,153.081265299424,191.888735708948,48.2469911144827,51.1049869508653,29.2865410655509,6.74286754377272,14.2485746261325,20.5917273334148,-6.60393676078365,-7.33906708218626,8.09623833480697,115.771088269857,89.2461552593629,69.2556698469793,141.418711174504,175.452767184112,197.679048484884,196.798900654555,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,186.018284723395,149.020411318709,182.290717348143,173.397337266187,181.238586478799,206.936226086974,221.883132402739,228.168683489221,-22.3118865866957,212.636504593589,228.492467195201,-22.3118865866958,123.070447616465,136.329489994976,125.950283795707,180.29259927096,158.19624829373,153.814593317637,173.965899740664,204.370738868307,184.496742851761,208.672429926777,207.21116504315,240.036003445492,221.555635415164,-22.3118865866957,-22.3118865866957,242.044608012181,179.687835642647,163.999296182837,203.791627808573,215.564829310416,148.256236161921,169.421351067773,121.943156026546,191.915096770084,170.651811006466,205.81917456683,137.854233245889,190.94178127132,169.347438328254,151.059751030985,162.714538128504,128.456885872335,143.591846379224,113.434977406849,141.59273033209,150.948543710117,187.097855982985,113.075891616281,165.51490656934,131.657211306064,155.562518585006,167.778790409234,189.217532297872,154.901650429128,184.645347298793,210.078384525232,198.466507073285,240.449823907673,-22.3118865866957,232.815081733634,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,107.67738123976,105.127885634911,103.826987131366,87.0035269652008,189.542649952155,193.987896921384,210.571723468924,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,233.340315418878,237.868299647795,233.506897098169,237.215241979543,-22.3118865866957,228.801206476262,95.0209284772066,106.832101453779,75.2560528057624,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,225.371204714401,201.520276060854,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,224.416599341426,203.630201488263,216.278175796255,213.861119017491,197.8686585431,189.601313376317,180.495193662822,-1026.346782988,38.8974145729957,8.07752256008393,45.2836048886647,15.1606947401658,27.7935420792658,48.7699646667651,35.2565825181601,62.2038678723161,76.5147521665165,66.2661719043376,57.4353616767448,82.0372020522045,41.5212489608193,91.2058900631578,53.902281240207,13.785910125567,116.258707783349,110.298083239468,-4.35410514320068,33.8947013333096,71.2990865502966,91.6764472565484,103.618734944368,58.6327413763724,30.9444988079017,20.3188890367212,-6.11308026931141,112.220319308981,134.014385152462,136.510799412065,122.537689991698,98.7091577574195,81.2865619061268,-9.5259524821862,-12.2064541923179,70.0690338154616,58.6799464156607,7.896926408436,-3.35580294529507,45.5848795737924,18.4479175313971,2.41081875295163,2.57434771645541,-22.3118865866957,-22.3118865866957,-1.73029327280381,-22.3118865866958,190.305127172657,196.221031714531,171.532660988827,180.095737410207,161.552124075994,241.084013801906,247.658718560054,121.458440634562,177.647701879244,164.425063223403,230.374387339944,213.760840058251,147.642242189514,41.1829456545146,225.596745385455,-22.3118865866957,222.283730726769],"Archive423_field8":[2993.93040773549,2953.66110837486,2940.75958917015,2941.07094890434,2951.4744784672,2974.77707645654,3015.55294721085,3062.74622564876,3103.86533405915,3140.90257672508,3169.49858226069,3179.80084566018,3169.07169830763,3135.67583831178,3095.86769693793,3064.61893192804,3038.08937203093,3022.58867024937,3010.66878752039,2990.11643583408,2970.67660795622,2938.89518909221,2913.08667994708,2905.08815235907,2886.38989438308,2879.35135020362,2855.20279361361,2808.93331102225,2693.59288533804,1772.1470483543,911.040802276601,183.441501740215,574.26556831285,1337.39024219708,2095.92221535436,2902.26175302595,2977.8093128838,2976.43591390443,2986.00298593792,3011.16431291263,3050.16057880348,3076.66944720295,3099.61597778665,3091.13152870288,3079.74397463807,3057.05115468457,3018.74389227736,2987.85029536892,2940.07920403662,2891.9212554882,2840.47249294216,2784.48800258504,2732.5610226727,2691.09125723186,2678.55888206928,2694.69604711998,2727.8354773766,2774.57406490388,2832.42131549794,2884.37587617646,2922.53130525212,2946.09793362144,2955.84014295203,2952.43444749009,2940.76815486166,2929.1060795495,2921.07842964121,2914.54713899287,2917.74593931072,2936.47607852162,2963.57287194221,2995.59663294598,3034.84002974985,3069.35223152409,3089.47409123632,3101.5545536663,3101.69724812516,3086.92415926669,3060.75084518519,3026.05053577412,2986.78737009445,2945.82897966323,2912.09799281193,2876.55858044887,2835.27950000029,2801.00540512942,2772.78899641462,2753.87642847499,2739.19555425198,2727.72256900801,2722.5127002744,2721.55245523914,2721.38812414881,2725.92517378599,2742.10822565428,2761.64021663174,2785.00324246043,2816.63470492519,2849.95241071242,2877.83615651107,2901.64897190116,2910.48338936664,2902.0928274779,2874.0027769188,2826.10485423633,2766.66713738691,2711.79014655267,2688.72744659953,2706.84534930101,2755.24479180898,2844.09330671405,2967.60618473096,3110.34261467774,3256.71459744981,3379.26598398638,3475.67515657807,3536.82494028938,3558.5508568677,3543.92675058292,3498.6658129743,3427.70066773051,3338.77381316157,3235.81485646167,3139.52359463244,2731.08581628674,2821.86584679491,2843.77116753282,2908.40551088179,2735.15570372943,2675.48147714719,3236.62541345461,3073.98575111146,2742.56773437316,2840.77746107145,3048.66242614721,2882.28194642137,2727.64834222263,2480.57315637493,2747.91583669076,2701.22700985082,2806.62151740201,2862.35563731246,2879.68005077267,2795.74877617593,2586.8227184346,2526.50811511456,2537.63731814469,2627.5315249925,3409.9088004646,2670.9398419321,3206.32228961836,3061.2311845767,3328.75259171121,3272.49968295277,2971.84481998061,2992.99107457596,2955.86866623963,2744.44791977987,2922.6791490873,2788.77290458492,382.143041438544,2222.24864055209,2469.31358623637,2628.09634858148,2549.26423326623,2563.69636067791,2833.5359699693,2698.26797799125,2840.18624727333,2811.78713617268,2855.30686893757,2991.97015683686,2799.67607180042,2696.66884672949,2614.92539587156,2616.49239934433,2585.25075945403,2643.71426761538,2654.98968095204,2500.71377621079,2613.45454163998,2750.3444371201,2913.3583090073,2493.91092098879,3454.30803038781,3040.12038887933,2803.92167763343,2819.85816561847,2352.35462924605,2838.1766767624,2853.84839995167,180.474976421831,2008.1952123411,1062.41563580822,2543.80447990188,2000.43169241848,2788.08919131996,2590.47214571194,2671.02463550538,2745.43938996707,2967.92974483573,2877.85968920583,2849.82361869121,2741.13663582159,2693.92640796558,2605.71162263864,2570.73668825817,2664.66821468993,2886.2982683543,2548.46234342998,2487.40395480829,2919.33779298657,2402.42512398354,1485.22721002258,2470.37990925631,2703.47241948273,2931.55566601244,2738.11654521341,2641.04931934075,2593.5287142083,2611.75720506618,2547.0456291967,2942.6365580656,3097.24900208569,2854.56022954434,2179.72010091308,2616.89196182762,2502.85174659094,2848.50093197363,2699.39084054099,2644.08050991095,2571.72822995836,2424.7711058928,2427.78911375005,2304.47478984653,2356.52572486965,3098.78972567815,2827.4404175683,2179.79211082218,3201.17956821506,3473.88156031314,3353.99048239732,2684.642194391,2685.48348708017,974.332657686522,2033.93292216877,537.791625418123,2590.42732063398,2423.66444706639,2585.26702565647,2374.13269454929,2714.31112102513,2581.52318216223,2781.15981827728,2591.8732337034,2637.22251511741,2489.13460020824,2601.97313134832,2422.99399048216,2478.46343907186,1873.21233568691,2509.91425551105,2163.8199083448,834.876852968185,805.986278687336,2705.15492661659,2649.13333158989,2380.66104401599,2553.61134052189,2772.5724032535,2256.75669619438,3056.86332059579,3104.76071600507,3259.14614768216,2385.86875043404,2094.27309174741,2334.35340793315,2438.81567219028,1989.20502469414,2263.60804623712,2437.21233209839,2048.85656216912,2322.53013777361,2267.87123116582,2405.39187878151,2191.64840310063,2383.98753716182,2089.95479777137,1737.25570973486,2034.81815962525,1124.26148492897,202.377203154295,277.733112614853,282.506873104117,2899.2709207164,2864.15057660779,2432.91208263544,2530.53272497419,2298.9276328483,2487.26800028669,2191.81461556904,2315.50950347304,1659.08736272562,1398.1563089636,779.945786486134,2013.30797303549,1487.20190264599,770.911915538795,372.450271932466,2753.82288401817,2446.049930989,2798.98885133476,2394.51143482017,2722.59216341797,3054.23825167943,2890.39345148954,3281.47362132991,2998.83162433409,2535.14848414823,2758.80332862151,2414.28854534526,2446.95945984717,2823.34625645056,2400.59246467585,2730.83637776779,2593.04827570373,2605.96426159125,2022.18214321701,2247.28650675122,2529.77365397256,2258.10175684072,3137.62477509061,2842.91375103507,2197.20613801989,2859.46746585718,2210.66134237698,1448.86137431084,2402.74705403801,1952.72794110317,2741.69708811664,2431.17878875363,2917.07813940458,2171.02709672579,2742.93578825342,2143.37774905818,2661.1077755523,1574.97016924446,2437.12006564277,2989.39373082214,2988.56029534821,2369.43593641942,2559.7884951089,2387.66756585123,1982.25570588582,2487.3809945494,2512.08704573214,2447.22871846717,2574.11288708185,2589.26963791371,2444.1642758774,2385.46987522334,2100.17767723398,2399.49344294773,2225.45374704755,1762.73650749894,2431.18516843728,1889.05353371558,1650.670063449,1809.82717248052,2055.00656536038,1380.18318314535,1999.83530267199,623.649277313683,827.325610998915,1418.18542612122,282.709717605266,2549.81191400514,465.872116285426,399.820488678395,689.790616331071,766.490068180538,485.061226199282,797.346001488886,994.825599435758,268.569701177227,415.435555235058,296.447566357832,846.39107775489,194.327038825687,973.241176057324,231.888556537572,203.99084611565,226.14681880704,279.04864938318,2079.46749886734,257.859788489607,2239.46642087393,2601.90620800995,2775.35251015613,2857.45318598745,2809.41303101638,2714.79415135577,2540.30314534394,2401.24108080103,2582.85323132333,1135.09287850599,2280.25391096547,2623.93143997005,2745.01817635001,2369.37172329298,2336.91195733788,2210.53919306153,2360.88784705956,1083.12778178735,3155.37447577456,3246.2811554577,2529.48236424002,2562.48132302183,2433.94681651567,2582.01922914882,2515.35329083771,2541.75843322943,1208.36417720839,2640.24270944768,2529.76934330886,2465.91527994855,2420.42480394247,1434.62054911126,978.872932929641,1850.27326485469,797.264418913058,2556.3622119572,2416.89369958712,2622.32382989988,748.412154767511,2002.1076893226,1251.38505847529,1367.56666401277,1243.10602507455,409.408317574536,930.059767311365,422.719229019953,2617.33048750155,2623.26304894426,2531.56673743682,2477.27070492593,946.686212993715,2552.48898766176,2591.93669391912,1707.00496313066,527.419849210529,1017.5488142454,850.897804651478,513.537635282514,286.539084632828,385.822729027157,488.144170911186,602.438622170489,388.283816268588,325.228934980223,257.096221460144,1129.74139936281,1070.70524461314,876.821399889869,659.952079538526,755.418093566893,1070.28145697781,480.809864658764,1230.42484126401,458.61661820698,378.612445408531,463.780350348436,605.735970157047,501.916069323096,566.794013483983,1842.28318615643,2119.08512497691,2448.84694231015,2122.46045928807,997.824143853457,1093.2188805737,334.39792068187,502.332494050028,546.9938239179,407.289351657012,460.055416119707,973.294517874063,267.436958143508,2434.00190215157,403.945505613011,381.382448315319,240.407028612744,310.641799217436,214.393084688356,308.79808470718,341.830126835172,244.476845878052,298.196293130038,212.633282904361,236.184627351044,177.313812669991,311.088322507996,287.737530878986,2770.13581042302,2303.75279911858,2841.48952204534,1487.60701632082,2492.94310674581,2182.14747352709,482.66122181669,1095.39731825752,1177.97089344313,624.157819306862,514.354132920532,969.731193926323,2417.07579592092,353.893902801099,2765.18044536038,2339.7031111398,1550.60865307942,2370.30097017089,2418.67667233835,2727.26391762946,1420.07448277674,2527.32518702775,2215.59643870763,492.010452268128,1234.9999246948,907.867415575233,908.686133125844,1278.09631804621,2055.5375462512,563.721591273808,305.493862412952,287.110909689399,391.232244351672,2147.64344872331,916.697077398243,365.953165986256,1657.66530811088,640.990871756598,964.788382990487,2107.40678963921,926.619346656811,1119.23482943006,297.06825351126,2198.41014319136,2491.11272647632,381.021440363282,459.018075887684,2374.68909297422,783.735151098209,648.062531246172,481.257618209094,438.355510029557,1565.16562873233,803.243451029754,731.13382000592,1023.75339567671,614.841432521542,281.157653464035,491.926504917145,971.979082920715,2750.99168172279,2534.91308430863,851.01417381908,1604.35824589481,234.702207255235,2683.60587975348,2318.92371159869,574.081558173893,1132.60908116149,1313.11959544639,823.770587231175,2221.5228222803,2076.92151026672,829.499993456161,2206.81906476389,1214.69437876024,2112.87974343127,2164.25332949714,2357.5016034346,2160.36945914551,659.392466673822,2137.33099060003,1931.49549373103,379.464800574796,517.087023566067,369.794774811535,392.455001259997,339.611679592244,284.050729612129,194.281789870271,245.902386139936,1379.12654399798,478.97411181207,301.405737525769,338.988265114747,259.479988059709,261.971277552122,298.308781152405,184.126391029112,497.464130914751,211.302008045889,215.010723159544,341.311010743434,337.731851224596,208.331476992568,181.951320075892,186.842371080126,130.008483236937,156.498744676896,1759.14237629531,564.413006905012,580.632026165254,163.739373037929,557.580464239977,216.993833992084,2211.02016270281,973.334981869034,2253.08909425278,1613.26403476992,519.576915300598,1056.03678935199,1295.02042441333,1389.18635229551,170.091516991381,1592.41228571702,435.718033183329,280.294276988299,1082.78043119017,734.178240398157,511.508515952958,1985.42010509221,447.34697186616,606.587077447787,682.567297237515,470.20013977564,396.002233864094,265.737346519932,274.720308356669,692.821479952096,880.766223338502,1188.44521914364,1238.62527807286,1451.98501183028,460.666063237684,1041.05698778672,2255.18626839248,357.855851342572,320.793537241896,887.90448680616,365.112375892333,688.834182174401,527.542247013824,342.906328203076,257.916856864649,360.262470229237,373.614466387436,279.749518288959,190.699660404326,232.47879807585,224.51402296724,189.021231529407,195.36171876955,156.307922107438,172.68657771216,160.823467808952,1105.7934321774,933.494258607937,758.223653440376,239.839170202815,1411.81069410791,2036.26519585975,698.101077138157,206.541437403837,227.6733497615,170.365576765143,168.002018964839,1012.2906893664,264.188755740478,347.835392479999,159.683709929178,204.981983990586,653.028041795815,529.739658590462,639.849237034335,291.682422084786,2214.0168810592,348.638247740771,243.650539011615,711.40797472372,425.350933110989,394.151030958619,700.430354439168,1616.53148329454,2357.65720972852,287.397822960147,286.412916212844,496.861089720701,207.627560198538,316.738229809224,236.751857791085,268.939167101796,220.982113840036,313.11588376286,645.113307841205,1381.04246218311,326.255047897161,1897.65263040308,454.955247502137,1278.64186914165,180.466507966816,209.722139069044,2150.72207227292,2442.22071725427,163.993467023735,811.244010079565,2222.18807023774,219.239052308513,211.75558245724,245.363310776338,192.163252329394,173.87752951284,196.959848172663,451.36972663109,330.48051483882,241.000658024475,189.855586833486,2072.97803504725,870.471889097578,377.452173572191,214.729492149545,260.890437023728,742.879878718826,295.469522699832,352.249413209146,748.8649830931,1795.88868046881,157.128715376035,329.987241907976,212.03423787364,657.967140270347,569.551323412387,161.008856323413,209.096883063909,230.562728889263,152.839860105786,450.117177764389,183.58123985845,155.041817740279,176.539187499253,161.190131106516,226.264122284562,237.860208919812,194.32983429259,269.999588289133,202.79243331741,280.780049783544,221.097606477613,177.368719638439,448.831659707898,255.523127253174,263.674454288774,198.695864835991,232.771151114196,248.847151537605,270.964844834446,164.507423459231,151.297184850341,168.712116345054,177.175027177124,255.729677914602,339.602964041082,414.564843227163,169.221884237325,166.814429985144,278.073199114596,193.281737160705,179.52096334764,153.150804221355,169.107756857315,146.424659833906,139.212851715467,247.192746658555,239.536702220978,264.509998914619,664.4903739706,1617.10473506073,674.600575893474,1498.37352891804,687.672266667274,993.994443506169,421.599520424485,1312.60887887446,1299.73728383993,1024.89110587272,120.687489772438,185.492414423617,206.970082444469,178.475148900612,152.166995234982,787.458865203282,175.11849838688,298.019529079437,363.752085896021,229.712996861758,214.049581613798,185.157328399305,187.538816872236,168.856549649943,140.993765748871,147.144882432571,154.117708469838,153.225640488558,140.172123353525,147.68951696788,133.868769437463,246.189853126904,223.273523201603,136.739232889706,86.7350672691466,116.545687661332,2289.64125783621,706.851804620995,1893.43701721946,190.094480182073,149.162181221255,151.801521492445,1125.30672626215,885.751170972588,708.696447102729,658.101308598889,628.596590608412,676.714911717121,424.50337561831,543.116999449667,398.285637924102,958.448601371779,397.771646817701,602.706579238599,593.595545666239,915.485933188102,920.572610356231,1557.52438874513,1836.98271641139,1207.45590460236,1878.78761346992,860.425533664181,1590.79160193605,151.521633566629,160.788318794722,123.348814336727,488.01250709585,446.810153348636,1001.79679891376,2086.93957397845,1508.28719137026,1095.01411588025,2159.22396777778,2345.15283160122,2163.05554431452,201.010469203075,251.654061340813,322.099555229183,172.018975409278,142.234842060812,118.036052374388,133.939289955636,1281.03673216392,555.92979013362,590.415588175175,475.091388596721,413.948454076381,523.03449067935,511.405539445273,1100.9335326472,421.480553846899,984.267044427534,478.61633373277,648.322985382344,1382.52541060463,237.999357028046,163.230406054516,139.816819534021,143.101341994754,133.780683587047,91.6818109320196,235.414607579391,415.435038615593,1266.21594600945,94.1549097848605,190.109223074626,2059.95836367186,191.18485063303,175.889145189122,188.050994336674,140.886302440425,157.27750808615,160.46921714459,148.763471014645,132.103504339931,147.678495138749,142.45301876107,138.527592397935,478.778754562886,110.722374628564,926.907808768531,1007.4982179597,659.77414050618,142.390722037372,126.050373253245,274.963558110817,119.58523539871,163.577390456032,145.620189349815,191.566398500812,132.96279947958,147.091963605959,119.039888033253,174.452910641717,131.767665455105,148.547931982159,162.38525178626,153.27626079436,183.724396949299,169.425074075216,204.072730896125,171.898911832273,162.855890830528,138.809248621488,205.850191936888,151.990465389451,181.522613005825,160.042566791158,151.69137915212,140.466097917372,161.755736303595,149.993304437831,136.853640149143,131.887179440425,913.606851556953,2612.11152673969,255.450795304611,2305.62358648165,1736.13144886948,937.34463530767,314.672394200726,1412.93678045173,2018.36527350229,2408.24141085415,1513.60344622102,1351.29293749541,2215.10378995645,212.566421780619,216.158862304498,218.587175419257,260.898783908667,141.332826586763,135.593668202472,95.4739866604125,1198.68514937887,1206.48786283303,1240.81062072326,1782.41321626497,0,1869.10845375667,2445.4143487427,558.371897154941,725.108853602967,363.666739773476,821.508776137786,1990.60246265367,247.027245590962,238.544998665903,215.303856895541,296.430297057684,983.393698570505,1717.33944008323,1803.38676662976,2387.65496812539,43.9861410054432,114.226834679841,554.136785501289,1487.19625056455,968.922017840576,1545.30566352443,869.577968475106,1742.09214895814,2224.17542496396,727.314859630147,131.111191938144,125.530929994347,131.937160988428,137.904882338728,133.768620965248,138.339641967607,2018.51444343558,876.020941097739,2812.79377399016,579.489444383791,2655.61020377328,1330.66056395086,544.079495491181,946.892077595985,367.684732774685,288.81308642472,355.100272318565,435.815555038471,275.772258608094,849.326844511082,249.529221227094,449.97773550183,2878.19726903935,200.957141555311,209.372308735529,3126.62491919632,945.258588018062,322.041277752107,246.613410325772,220.185511267272,381.013104474902,1079.05483788283,2536.62026803776,3116.32883634815,207.124490213958,179.842031561265,176.405502708448,192.295722946582,231.234579789136,279.13909449491,2630.63229588579,2929.62306447554,316.967834719784,373.7076690753,2480.59430746053,2326.5721118015,515.763731994647,1084.72805391815,1506.90232110261,1555.47586964441,1244.07893584567,1002.78706185841,1942.91880882858,937.066517121238,129.939276771926,129.980741131538,147.371170003022,418.495672421666,112.79375710216,531.997197904123,690.88339870791,192.479820779948,141.870360995865,154.108824551491,272.217107427547,110.94115866053,166.608215590138,865.128595056889,693.122197980562,2183.5100203826,358.286755878308]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive424.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive424.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive424.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive424_field1":[-981.539589442816,-981.539589442815,-981.539589442815,-981.539589442815,-700,-981.539589442815,-700,-981.539589442816,-700,-950,-950,-950,-700,-950,-981.539589442815,-981.539589442815,-981.539589442815,-981.539589442815,-903.125,-981.539589442815,-840.625,-745.8984375,-768.509615384615,-779.78028002699,-906.294016860532,-950,-906.294016860532,-981.539589442815,-950,-981.539589442816,-950,-773.269871518521,-981.539589442815,-825,-762.5,-793.75,-981.539589442815,-825,-887.5,-816.573333740234,-981.539589442815,-981.539589442815,-981.539589442815,-981.539589442815],"Archive424_field2":[113.460410557185,113.460410557185,113.460410557185,113.460410557185,395,113.460410557185,395,113.460410557185,395,145,145,145,394.999999999999,145,113.460410557185,113.460410557185,113.460410557185,113.460410557185,191.875,113.460410557185,254.374999999999,349.1015625,326.490384615385,315.219719973009,188.705983139467,145,188.705983139467,113.460410557185,145,113.460410557185,144.999999999999,321.73012848148,113.460410557185,270,332.5,301.25,113.460410557185,270,207.5,278.426666259766,113.460410557185,113.460410557185,113.460410557185,113.460410557185],"Archive424_field3":[1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095,1095],"Archive424_field4":[-243.713195201744,-243.713195201745,-243.713195201745,-243.713195201745,314.083969465649,-243.713195201745,314.083969465649,-243.713195201744,314.083969465649,35.1853871319515,35.1853871319524,35.1853871319518,314.083969465648,35.1853871319522,-243.713195201745,-104.263904034897,-104.263904034897,-34.5392584514725,87.4788713195204,-243.713195201746,157.203516902944,262.879932865321,237.655031037665,225.081541474796,83.9435340803437,35.1853871319524,83.9435340803438,-104.263904034897,35.1853871319518,-104.263904034896,35.1853871319513,232.344516288499,-243.713195201746,174.6346782988,244.359323882224,209.497001090512,-243.713195201745,174.6346782988,104.910032715376,184.035419393392,-95.7398130411439,-95.7398130411448,-104.263904034896,-55.5057570865042],"Archive424_field5":[1.095e+15],"Archive424_field6":[77560760460533.5],"Archive424_field7":[-1066.69599217986,-1066.69599217986,-1066.69599217986,-1066.69599217986,-700,-1066.69599217986,-700,-1066.69599217986,-700,-950,-950,-950,-700,-950,-1066.69599217986,-1066.69599217986,-1066.69599217986,-1012.5,-903.125,-1066.69599217986,-840.625,-745.8984375,-768.509615384615,-779.78028002699,-906.294016860532,-950,-906.294016860532,-1066.69599217986,-950,-1066.69599217986,-950,-773.269871518521,-1066.69599217986,-825,-762.5,-793.75,-1066.69599217986,-825,-887.5,-816.573333740234,-1066.69599217986,-1066.69599217986,-1066.69599217986,-1031.29401686053],"Archive424_field8":[123.304007820137,123.304007820137,123.304007820137,123.304007820137,489.999999999999,123.304007820137,490,123.304007820137,490,239.999999999999,240,240,489.999999999999,240,123.304007820137,123.304007820137,123.304007820137,177.5,286.875,123.304007820137,349.374999999999,444.1015625,421.490384615384,410.219719973009,283.705983139467,240,283.705983139468,123.304007820137,240,123.304007820137,240,416.73012848148,123.304007820137,364.999999999999,427.499999999999,396.25,123.304007820137,365,302.5,373.426666259765,123.304007820137,123.304007820137,123.304007820137,158.705983139467],"Archive424_field9":[1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190],"Archive424_field10":[-148.713195201745,-148.713195201745,-148.713195201745,-148.713195201745,409.083969465648,-148.713195201745,409.083969465649,-148.713195201745,409.083969465649,130.185387131951,130.185387131952,130.185387131952,409.083969465648,130.185387131952,-148.713195201745,-9.263904034897,-9.26390403489654,60.4607415485273,182.47887131952,-148.713195201746,252.203516902943,357.879932865322,332.655031037664,320.081541474796,178.943534080344,130.185387131952,178.943534080344,-9.26390403489631,130.185387131952,-9.26390403489586,130.185387131952,327.3445162885,-148.713195201746,269.6346782988,339.359323882224,304.497001090512,-148.713195201745,269.6346782988,199.910032715376,279.035419393392,-0.739813041143634,-0.739813041144998,-9.26390403489677,39.4942429134953],"Archive424_field11":[1.19e+15],"Archive424_field12":[129725378560042],"Archive424_field13":[-1151.85239491691,-1151.85239491691,-1151.85239491691,-1151.85239491691,-700,-1151.85239491691,-700,-1151.85239491691,-700,-950,-950,-950,-700,-950,-1151.85239491691,-1075,-1075,-1012.5,-903.125,-1151.85239491691,-840.625,-745.8984375,-768.509615384615,-779.78028002699,-906.294016860532,-950,-906.294016860532,-1075,-950,-1075,-950,-773.269871518521,-1151.85239491691,-825,-762.5,-793.75,-1151.85239491691,-825,-887.5,-816.573333740234,-1067.35914815125,-1067.35914815125,-1075,-1031.29401686053],"Archive424_field14":[133.147605083089,133.147605083089,133.147605083089,133.147605083089,585,133.147605083089,585.000000000001,133.147605083089,585.000000000001,335,335,335,585,335,133.147605083089,210,209.999999999999,272.5,381.875,133.147605083089,444.374999999999,539.1015625,516.490384615384,505.219719973009,378.705983139467,335,378.705983139468,210,335,210.000000000001,335,511.73012848148,133.147605083089,460,522.499999999999,491.249999999999,133.147605083089,459.999999999999,397.5,468.426666259765,217.64085184875,217.640851848748,209.999999999999,253.705983139468],"Archive424_field15":[1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285,1285],"Archive424_field16":[-53.7131952017442,-53.7131952017444,-53.7131952017446,-53.7131952017451,504.083969465648,-53.7131952017453,504.083969465649,-53.7131952017446,504.083969465649,225.185387131952,225.185387131952,225.185387131952,504.083969465648,225.185387131952,-53.7131952017455,85.7360959651035,85.736095965103,155.460741548527,277.47887131952,-53.7131952017464,347.203516902943,452.879932865322,427.655031037664,415.081541474796,273.943534080344,225.185387131952,273.943534080344,85.7360959651039,225.185387131952,85.7360959651044,225.185387131952,422.344516288499,-53.7131952017455,364.6346782988,434.359323882224,399.497001090512,-53.7131952017455,364.634678298799,294.910032715376,374.035419393392,94.2601869588559,94.2601869588545,85.736095965103,134.494242913496],"Archive424_field17":[1.285e+15],"Archive424_field18":[206879723159590]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive425.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive425.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive425.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive425_field1":[-1200,-1200,-1026.3587487781,-1026.3587487781,-700,-1200,-700,-1026.3587487781,-700,-950,-950,-950,-700,-950,-1026.3587487781,-1026.3587487781,-1026.3587487781,-1012.5,-903.125,-1026.3587487781,-840.625,-745.8984375,-768.509615384615,-779.78028002699,-906.294016860532,-950,-906.294016860532,-1026.3587487781,-950,-1026.3587487781,-950,-773.269871518521,-1200,-825,-762.5,-793.75,-1200,-825,-887.5,-816.573333740234,-1067.35914815125,-1067.35914815125,-1075,-1031.29401686053],"Archive425_field2":[-54.9999999999995,-54.9999999999995,118.641251221896,118.641251221896,445.000000000001,-55.0000000000002,445,118.641251221896,445,195.000000000001,195,195.000000000001,445,195,118.641251221896,118.641251221896,118.641251221896,132.5,241.875000000001,118.641251221896,304.374999999999,399.1015625,376.490384615384,365.219719973009,238.705983139467,195,238.705983139468,118.641251221896,195,118.641251221896,195,371.73012848148,-54.9999999999998,320,382.5,351.25,-55.0000000000002,319.999999999999,257.5,328.426666259766,77.6408518487503,77.6408518487501,69.9999999999995,113.705983139467],"Archive425_field3":[1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145,1145],"Archive425_field4":[1,1,-193.713195201744,-193.713195201744,364.08396946565,1,364.083969465649,-193.713195201745,364.083969465649,85.1853871319529,85.185387131952,85.1853871319527,364.083969465649,85.185387131952,-193.713195201745,-54.263904034897,-54.2639040348965,15.4607415485282,137.478871319521,-193.713195201745,207.203516902943,312.879932865322,287.655031037664,275.081541474797,133.943534080344,85.1853871319524,133.943534080344,-54.2639040348963,85.185387131952,-54.2639040348961,85.1853871319518,282.344516288499,1,224.634678298801,294.359323882225,259.497001090513,1,224.6346782988,154.910032715377,234.035419393392,1,1,1,1],"Archive425_field5":[-1200,-1200,-887.419354838711,-887.41935483871,-700,-1200,-700,-887.41935483871,-700,-887.419354838711,-950,-887.41935483871,-700,-887.41935483871,-887.41935483871,-887.419354838709,-887.419354838709,-887.41935483871,-887.419354838711,-887.419354838709,-840.625,-745.8984375,-768.509615384615,-779.78028002699,-906.294016860532,-950,-906.294016860532,-887.41935483871,-887.41935483871,-887.41935483871,-950,-773.269871518521,-1200,-825,-762.5,-793.75,-1200,-825,-887.41935483871,-816.573333740234,-1067.35914815125,-1067.35914815125,-1075,-1031.29401686053],"Archive425_field6":[-209.999999999999,-210,102.58064516129,102.58064516129,290.000000000001,-210,290.000000000001,102.58064516129,290.000000000001,102.58064516129,40.0000000000001,102.58064516129,290,102.58064516129,102.58064516129,102.58064516129,102.58064516129,102.58064516129,102.58064516129,102.58064516129,149.374999999999,244.1015625,221.490384615384,210.21971997301,83.7059831394671,40.0000000000003,83.7059831394678,102.58064516129,102.58064516129,102.58064516129,39.9999999999995,216.73012848148,-210,165,227.5,196.25,-210,164.999999999999,102.58064516129,173.426666259766,-77.3591481512493,-77.3591481512503,-85.0000000000005,-41.2940168605325],"Archive425_field7":[990.000000000001,990,990.000000000001,990,990.000000000001,990,990,990,990.000000000001,990.000000000001,990,990.000000000001,990,990,990.000000000001,989.999999999999,989.999999999999,990.000000000001,990.000000000001,990,989.999999999999,990,989.999999999999,990,989.999999999999,990,990,990,990,990.000000000001,990,990.000000000001,990,990,990,990,990,989.999999999999,990,990,990.000000000001,990,990,990],"Archive425_field8":[1,1,-348.713195201744,-348.713195201744,209.083969465649,1,209.083969465649,-348.713195201745,209.083969465649,-69.8146128680468,85.185387131952,-69.8146128680472,209.083969465649,-69.814612868048,-348.713195201744,-209.263904034897,-209.263904034897,-139.539258451471,-17.5211286804787,-348.713195201745,52.2035169029428,157.879932865322,132.655031037664,120.081541474797,133.943534080344,85.1853871319524,133.943534080344,-209.263904034896,-69.8146128680479,-209.263904034896,85.1853871319518,127.3445162885,1,69.6346782988006,139.359323882225,104.497001090513,1,69.6346782987993,-0.0899672846232988,79.0354193933922,1,1,1,1],"Archive425_field9":[-748.479960899316,-748.479960899316,-748.479960899317,-748.479960899316,-700,-748.479960899315,-700,-748.479960899316,-700,-748.479960899317,-748.479960899316,-748.479960899316,-700,-748.479960899316,-748.479960899317,-748.479960899315,-748.479960899315,-748.479960899316,-748.479960899317,-748.479960899315,-748.479960899315,-745.8984375,-748.479960899315,-748.479960899316,-748.479960899315,-748.479960899316,-748.479960899316,-748.479960899316,-748.479960899316,-748.479960899316,-748.479960899316,-748.479960899317,-748.479960899316,-748.479960899316,-748.479960899316,-748.479960899316,-748.479960899316,-748.479960899314,-748.479960899316,-748.479960899316,-748.479960899317,-748.479960899316,-748.479960899315,-748.479960899316],"Archive425_field10":[86.5200391006844,86.5200391006843,86.5200391006844,86.5200391006843,135.000000000001,86.5200391006842,135,86.5200391006843,135.000000000001,86.5200391006844,86.5200391006843,86.5200391006844,135,86.5200391006843,86.5200391006844,86.5200391006842,86.5200391006841,86.5200391006843,86.5200391006844,86.5200391006842,86.5200391006841,89.1015625000004,86.5200391006841,86.5200391006843,86.5200391006842,86.5200391006843,86.5200391006843,86.5200391006843,86.5200391006843,86.5200391006843,86.5200391006843,86.5200391006845,86.5200391006843,86.5200391006843,86.5200391006843,86.5200391006843,86.5200391006843,86.5200391006841,86.5200391006843,86.5200391006843,86.5200391006844,86.5200391006843,86.5200391006842,86.5200391006842],"Archive425_field11":[835.000000000001,835.000000000001,835.000000000001,835.000000000001,835.000000000001,835,835,835.000000000001,835.000000000001,835.000000000001,835,835.000000000001,835,835,835.000000000001,834.999999999999,834.999999999999,835,835.000000000001,834.999999999999,834.999999999999,835,834.999999999999,835,834.999999999999,835,835,835,835,835.000000000001,835,835.000000000002,835,835,835,835,835,834.999999999999,835.000000000001,835,835.000000000001,835,834.999999999999,835],"Archive425_field12":[-503.713195201744,-503.713195201744,-503.713195201743,-503.713195201744,54.0839694656497,-503.713195201745,54.0839694656493,-503.713195201744,54.0839694656496,-224.814612868047,-224.814612868048,-224.814612868047,54.0839694656493,-224.814612868048,-503.713195201744,-364.263904034897,-364.263904034898,-294.539258451472,-172.521128680479,-503.713195201746,-102.796483097057,2.87993286532208,-22.3449689623367,-34.9184585252031,-176.056465919657,-224.814612868048,-176.056465919656,-364.263904034896,-224.814612868048,-364.263904034896,-224.814612868048,-27.6554837114995,-503.713195201745,-85.3653217011992,-15.6406761177756,-50.5029989094872,-503.713195201745,-85.3653217012011,-155.089967284623,-75.964580606608,-355.739813041143,-355.739813041144,-364.263904034897,-315.505757086505]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive426.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive426.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive426.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive426_field1":[-986.021505376344,-986.021505376344,-981.539589442816,-981.539589442816,-700,-986.021505376344,-700,-981.539589442815,-700,-950,-950,-950,-950,-986.021505376344,-986.021505376344,-981.539589442816,-981.539589442816,-700,-986.021505376344,-700,-981.539589442815,-700,-950,-950,-950,-950,-986.021505376344,-986.021505376344,-981.539589442816,-981.539589442816,-700,-986.021505376344,-700,-981.539589442815,-700,-950,-950,-950,-950],"Archive426_field2":[113.978494623656,113.978494623656,113.460410557185,113.460410557185,400.833333333334,113.978494623656,400.833333333333,113.460410557185,400.833333333333,143.749999999999,149.583333333333,143.749999999999,149.583333333333,113.978494623656,113.978494623656,113.460410557185,113.460410557185,400.833333333334,113.978494623656,400.833333333333,113.460410557185,400.833333333333,143.749999999999,149.583333333333,143.749999999999,149.583333333333,113.978494623656,113.978494623656,113.460410557185,113.460410557185,400.833333333334,113.978494623656,400.833333333333,113.460410557185,400.833333333333,143.749999999999,149.583333333333,143.749999999999,149.583333333333],"Archive426_field3":[1100,1100,1095,1095,1100.83333333333,1100,1100.83333333333,1095,1100.83333333333,1093.75,1099.58333333333,1093.75,1099.58333333333,1100,1100,1095,1095,1100.83333333333,1100,1100.83333333333,1095,1100.83333333333,1093.75,1099.58333333333,1093.75,1099.58333333333,1100,1100,1095,1095,1100.83333333333,1100,1100.83333333333,1095,1100.83333333333,1093.75,1099.58333333333,1093.75,1099.58333333333],"Archive426_field4":[-238.713195201745,-238.713195201745,-243.713195201744,-243.713195201744,319.917302798983,-238.713195201745,319.917302798982,-243.713195201745,319.917302798982,33.9353871319511,39.7687204652852,33.9353871319513,39.7687204652852,-238.713195201745,-238.713195201745,-243.713195201744,-243.713195201744,319.917302798983,-238.713195201745,319.917302798982,-243.713195201745,319.917302798982,33.9353871319511,39.7687204652852,33.9353871319513,39.7687204652852,-238.713195201745,-238.713195201745,-243.713195201744,-243.713195201744,319.917302798983,-238.713195201745,319.917302798982,-243.713195201745,319.917302798982,33.9353871319511,39.7687204652852,33.9353871319513,39.7687204652852],"Archive426_field5":[1.09833333333333e+15],"Archive426_field6":[56390554949715.2],"Archive426_field7":[-1069.68393355669,-1069.68393355669,-1065.37074035138,-1065.37074035138,-700,-1069.68392488534,-700,-1065.37073519383,-700,-950,-950,-950,-950,-1069.68393355669,-1069.68393355669,-1065.37074035138,-1065.37074035138,-700,-1069.68392488534,-700,-1065.37073519383,-700,-950,-950,-950,-950,-1069.68393355669,-1069.68393355669,-1065.37074035138,-1065.37074035138,-700,-1069.68392488534,-700,-1065.37073519383,-700,-950,-950,-950,-950],"Archive426_field8":[123.649396899683,123.649396899683,123.150816223824,123.150816223824,501.619719592585,123.649395897324,501.619661186544,123.15081562764,501.619661186545,242.651014946323,249.190196132481,242.651014946323,249.190196132481,123.649396899683,123.649396899683,123.150816223824,123.150816223824,501.619719592585,123.649395897324,501.619661186544,123.15081562764,501.619661186544,242.651014946323,249.190196132481,242.651014946323,249.190196132481,123.649396899683,123.649396899683,123.150816223824,123.150816223824,501.619719592585,123.649395897324,501.619661186544,123.15081562764,501.619661186545,242.651014946323,249.190196132481,242.651014946323,249.190196132481],"Archive426_field9":[1193.33333045637,1193.33333045637,1188.52155657521,1188.52155657521,1201.61971959259,1193.33332078266,1201.61966118654,1188.52155082147,1201.61966118654,1192.65101494632,1199.19019613248,1192.65101494632,1199.19019613248,1193.33333045637,1193.33333045637,1188.52155657521,1188.52155657521,1201.61971959259,1193.33332078266,1201.61966118654,1188.52155082147,1201.61966118654,1192.65101494632,1199.19019613248,1192.65101494632,1199.19019613248,1193.33333045637,1193.33333045637,1188.52155657521,1188.52155657521,1201.61971959259,1193.33332078266,1201.61966118654,1188.52155082147,1201.61966118654,1192.65101494632,1199.19019613248,1192.65101494632,1199.19019613248],"Archive426_field10":[-145.379864745372,-145.379864745373,-150.191638626538,-150.191638626538,420.703689058234,-145.379874419084,420.703630652193,-150.191644380278,420.703630652193,132.836402078275,139.375583264433,132.836402078275,139.375583264433,-145.379864745372,-145.379864745373,-150.191638626538,-150.191638626538,420.703689058234,-145.379874419084,420.703630652193,-150.191644380278,420.703630652193,132.836402078275,139.375583264433,132.836402078275,139.375583264433,-145.379864745372,-145.379864745373,-150.191638626538,-150.191638626538,420.703689058234,-145.379874419084,420.703630652193,-150.191644380278,420.703630652193,132.836402078275,139.375583264433,132.836402078275,139.375583264433],"Archive426_field11":[1.19615591186263e+15],"Archive426_field12":[81459442698481.8],"Archive426_field13":[-1153.34636785361,-1153.34636785355,-1149.06181972608,-1149.06181972591,-700,-1153.34633327833,-700,-1149.06182815801,-700,-950,-950,-950,-950,-1153.34636785361,-1153.34636785355,-1149.06181972608,-1149.06181972591,-700,-1153.34633327833,-700,-1149.06182815801,-700,-950,-950,-950,-950,-1153.34636785361,-1153.34636785355,-1149.06181972608,-1149.06181972591,-700,-1153.34633327833,-700,-1149.06182815801,-700,-950,-950,-950,-950],"Archive426_field14":[133.320299882751,133.320299882745,132.825030415446,132.825030415427,601.603868302227,133.320295886045,601.603683205708,132.82503139013,601.603683205263,343.733215411421,350.86487638122,343.733215410282,350.864876381124,133.320299882751,133.320299882745,132.825030415446,132.825030415427,601.603868302227,133.320295886045,601.603683205708,132.82503139013,601.603683205263,343.733215411421,350.86487638122,343.733215410282,350.864876381124,133.320299882751,133.320299882745,132.825030415446,132.825030415427,601.603868302227,133.320295886045,601.603683205708,132.82503139013,601.603683205263,343.733215411421,350.86487638122,343.733215410282,350.864876381124],"Archive426_field15":[1286.66666773636,1286.6666677363,1281.88685014152,1281.88685014134,1301.60386830223,1286.66662916438,1301.60368320571,1281.88685954814,1301.60368320526,1293.73321541142,1300.86487638122,1293.73321541028,1300.86487638112,1286.66666773636,1286.6666677363,1281.88685014152,1281.88685014134,1301.60386830223,1286.66662916438,1301.60368320571,1281.88685954814,1301.60368320526,1293.73321541142,1300.86487638122,1293.73321541028,1300.86487638112,1286.66666773636,1286.6666677363,1281.88685014152,1281.88685014134,1301.60386830223,1286.66662916438,1301.60368320571,1281.88685954814,1301.60368320526,1293.73321541142,1300.86487638122,1293.73321541028,1300.86487638112],"Archive426_field16":[-52.0465274653818,-52.0465274654462,-56.8263450602215,-56.8263450604047,520.687837767875,-52.0465660373691,520.687652671356,-56.8263356536054,520.687652670912,233.918602543373,241.050263513172,233.918602542234,241.050263513076,-52.0465274653818,-52.0465274654462,-56.8263450602215,-56.8263450604047,520.687837767875,-52.0465660373691,520.687652671356,-56.8263356536054,520.687652670912,233.918602543373,241.050263513172,233.918602542234,241.050263513076,-52.0465274653818,-52.0465274654462,-56.8263450602215,-56.8263450604047,520.687837767875,-52.0465660373691,520.687652671356,-56.8263356536054,520.687652670912,233.918602543373,241.050263513172,233.918602542234,241.050263513076],"Archive426_field17":[1.29439319109915e+15],"Archive426_field18":[106571660288914]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive427.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive427.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive427.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive427_field1":[-1200,-1200,-1026.36312588443,-1026.28368029945,-700,-1200,-700,-1026.26254011264,-700,-950,-950,-950,-700,-950,-1026.36342335859,-1026.75087109317,-1026.73678495453,-1012.5,-903.125,-1026.28629768775,-840.625,-745.8984375,-768.509615384615,-779.78028002699,-906.294016860532,-950,-906.294016860532,-1026.57797693561,-950,-1026.47899469351,-950,-773.269871518521,-1200,-825,-762.5,-793.75,-1200,-825,-887.5,-816.573333740234,-1067.35914815125,-1067.35914815125,-1075,-1031.29401686053,-1200,-1200,-1026.36312588443,-1026.28368029945,-700,-1200,-700,-1026.26254011264,-700,-950,-950,-950,-700,-950,-1026.36342335859,-1026.75087109317,-1026.73678495453,-1012.5,-903.125,-1026.28629768775,-840.625,-745.8984375,-768.509615384615,-779.780280026991,-906.294016860532,-950,-906.294016860532,-1026.57797693561,-950,-1026.47899469351,-950,-773.269871518521,-1200,-825,-762.5,-793.75,-1200,-825,-887.5,-816.573333740234,-1067.35914815125,-1067.35914815125,-1075,-1031.29401686053,-1200,-1200,-1026.36312588443,-1026.28368029945,-700,-1200,-700,-1026.26254011264,-700,-950,-950,-950,-700,-950,-1026.36342335859,-1026.75087109317,-1026.73678495453,-1012.5,-903.125,-1026.28629768775,-840.625,-745.8984375,-768.509615384615,-779.78028002699,-906.294016860532,-950,-906.294016860532,-1026.57797693561,-950,-1026.47899469351,-950,-773.269871518521,-1200,-825,-762.5,-793.75,-1200,-825,-887.5,-816.573333740234,-1067.35914815125,-1067.35914815125,-1075,-1031.29401686053],"Archive427_field2":[-49.9870198247249,-49.9884993785045,118.641757190567,118.632573731452,450.193585655552,-49.9967310703537,450.20653351316,118.630130045736,450.224394770949,194.171179195575,200.073553603818,193.937176585156,450.191228527968,194.131782735108,118.641791576893,118.686578337924,118.684950060175,132.272773510879,240.764969307005,118.632876286697,310.451309988391,404.910654430142,382.621622591953,370.030117087189,243.754673213354,199.979760680276,243.743770641233,118.666592753735,195.124684118783,118.655150967843,199.991931437032,376.379153127823,-50.0092390601367,325.065645720165,387.163528983946,357.482506789911,-50.0073448833571,318.709807567965,257.373597822551,333.2846263672,82.6138674901554,82.6316427072998,74.9826934610032,118.728416191547,-49.9870198247249,-49.9884993785045,118.641757190567,118.632573731452,450.193585655552,-49.9967310703537,450.20653351316,118.630130045736,450.224394770949,194.171179195575,200.073553603818,193.937176585156,450.191228527968,194.131782735108,118.641791576893,118.686578337924,118.684950060175,132.272773510879,240.764969307005,118.632876286697,310.451309988391,404.910654430142,382.621622591953,370.030117087189,243.754673213354,199.979760680276,243.743770641233,118.666592753735,195.124684118783,118.655150967843,199.991931437032,376.379153127823,-50.0092390601367,325.065645720165,387.163528983946,357.482506789911,-50.0073448833571,318.709807567965,257.373597822551,333.2846263672,82.6138674901554,82.6316427072997,74.9826934610032,118.728416191547,-49.9870198247249,-49.9884993785045,118.641757190567,118.632573731452,450.193585655552,-49.9967310703537,450.20653351316,118.630130045736,450.224394770949,194.171179195575,200.073553603818,193.937176585156,450.191228527968,194.131782735108,118.641791576893,118.686578337924,118.684950060175,132.272773510879,240.764969307005,118.632876286697,310.451309988391,404.910654430142,382.621622591953,370.030117087189,243.754673213354,199.979760680276,243.743770641233,118.666592753735,195.124684118783,118.655150967843,199.991931437032,376.379153127823,-50.0092390601367,325.065645720165,387.163528983946,357.482506789911,-50.0073448833571,318.709807567965,257.373597822551,333.2846263672,82.6138674901554,82.6316427072998,74.9826934610032,118.728416191547],"Archive427_field3":[1150.01298017528,1150.0115006215,1145.004883075,1144.9162540309,1150.19358565555,1150.00326892965,1150.20653351316,1144.89267015838,1150.22439477095,1144.17117919557,1150.07355360382,1143.93717658516,1150.19122852797,1144.13178273511,1145.00521493548,1145.4374494311,1145.42173501471,1144.77277351088,1143.889969307,1144.91917397445,1151.07630998839,1150.80909193014,1151.13123797657,1149.81039711418,1150.04869007389,1149.97976068028,1150.03778750177,1145.24456968935,1145.12468411878,1145.13414566135,1149.99193143703,1149.64902464634,1149.99076093986,1150.06564572016,1149.66352898395,1151.23250678991,1149.99265511664,1143.70980756797,1144.87359782255,1149.85796010743,1149.97301564141,1149.99079085855,1149.982693461,1150.02243305208,1150.01298017528,1150.0115006215,1145.004883075,1144.9162540309,1150.19358565555,1150.00326892965,1150.20653351316,1144.89267015838,1150.22439477095,1144.17117919557,1150.07355360382,1143.93717658516,1150.19122852797,1144.13178273511,1145.00521493548,1145.4374494311,1145.42173501471,1144.77277351088,1143.889969307,1144.91917397445,1151.07630998839,1150.80909193014,1151.13123797657,1149.81039711418,1150.04869007389,1149.97976068028,1150.03778750177,1145.24456968935,1145.12468411878,1145.13414566135,1149.99193143703,1149.64902464634,1149.99076093986,1150.06564572016,1149.66352898395,1151.23250678991,1149.99265511664,1143.70980756797,1144.87359782255,1149.85796010743,1149.97301564141,1149.99079085855,1149.982693461,1150.02243305208,1150.01298017528,1150.0115006215,1145.004883075,1144.9162540309,1150.19358565555,1150.00326892965,1150.20653351316,1144.89267015838,1150.22439477095,1144.17117919557,1150.07355360382,1143.93717658516,1150.19122852797,1144.13178273511,1145.00521493548,1145.4374494311,1145.42173501471,1144.77277351088,1143.889969307,1144.91917397445,1151.07630998839,1150.80909193014,1151.13123797657,1149.81039711418,1150.04869007389,1149.97976068028,1150.03778750177,1145.24456968935,1145.12468411878,1145.13414566135,1149.99193143703,1149.64902464634,1149.99076093986,1150.06564572016,1149.66352898395,1151.23250678991,1149.99265511664,1143.70980756797,1144.87359782255,1149.85796010743,1149.97301564141,1149.99079085855,1149.982693461,1150.02243305208],"Archive427_field4":[1,1,-193.708312126747,-193.796941170846,369.277555121201,1,369.290502978809,-193.820525043364,369.308364236598,84.3565663275267,90.2589407357698,84.1225637171083,369.275197993617,84.3171698670599,-193.707980266261,-53.8264546038004,-53.8421690201867,15.2335150594065,136.368840626525,-193.794021227299,213.279826891335,318.689024795464,293.786269014234,279.891938588976,138.99222415423,90.1651478122283,138.981321582109,-54.0193343455478,85.3100712507353,-54.1297583735477,90.1773185689835,286.993540934843,1,229.700324018965,299.022852866171,265.729507880424,1,223.344485866766,154.783630537927,238.893379500826,1,1,1,1,1,1,-193.708312126747,-193.796941170846,369.277555121201,1,369.290502978809,-193.820525043364,369.308364236598,84.3565663275267,90.2589407357698,84.1225637171083,369.275197993617,84.3171698670599,-193.707980266261,-53.8264546038003,-53.8421690201867,15.2335150594065,136.368840626525,-193.794021227299,213.279826891335,318.689024795464,293.786269014234,279.891938588976,138.99222415423,90.1651478122283,138.981321582109,-54.0193343455478,85.3100712507353,-54.1297583735477,90.1773185689835,286.993540934843,1,229.700324018965,299.022852866171,265.729507880424,1,223.344485866766,154.783630537927,238.893379500826,1,1,1,1,1,1,-193.708312126747,-193.796941170846,369.277555121201,1,369.290502978809,-193.820525043364,369.308364236598,84.3565663275267,90.2589407357698,84.1225637171083,369.275197993617,84.3171698670599,-193.707980266261,-53.8264546038004,-53.8421690201867,15.2335150594065,136.368840626525,-193.794021227299,213.279826891335,318.689024795464,293.786269014234,279.891938588976,138.99222415423,90.1651478122283,138.981321582109,-54.0193343455478,85.3100712507353,-54.1297583735477,90.1773185689835,286.993540934843,1,229.700324018965,299.022852866171,265.729507880424,1,223.344485866766,154.783630537927,238.893379500826,1,1,1,1],"Archive427_field5":[-1200,-1200,-887.45771024527,-886.038525187164,-700,-1200,-700,-886.83036507883,-700,-891.842703735923,-950,-891.736262498312,-700,-891.757816910519,-887.235706105928,-887.565824870005,-886.736623194727,-890.296017816084,-891.42416442525,-887.663657469356,-840.625,-745.8984375,-768.509615384615,-779.78028002699,-906.294016860532,-950,-906.294016860532,-886.788599423259,-893.266652100716,-888.473021392948,-950,-773.269871518521,-1200,-825,-762.5,-793.75,-1200,-825,-887.5,-816.573333740234,-1067.35914815125,-1067.35914815125,-1075,-1031.29401686053,-1200,-1200,-887.45771024527,-886.038525187164,-700,-1200,-700,-886.83036507883,-700,-891.842703735923,-950,-891.736262498311,-700,-891.757816910518,-887.235706105928,-887.565824870005,-886.736623194727,-890.296017816084,-891.42416442525,-887.663657469356,-840.625,-745.8984375,-768.509615384615,-779.780280026991,-906.294016860532,-950,-906.294016860532,-886.788599423259,-893.266652100716,-888.473021392948,-950,-773.269871518521,-1200,-825,-762.5,-793.75,-1200,-825,-887.5,-816.573333740234,-1067.35914815125,-1067.35914815125,-1075,-1031.29401686053,-1200,-1200,-887.45771024527,-886.038525187164,-700,-1200,-700,-886.83036507883,-700,-891.842703735923,-950,-891.736262498312,-700,-891.757816910519,-887.235706105928,-887.565824870005,-886.736623194727,-890.296017816084,-891.42416442525,-887.663657469356,-840.625,-745.8984375,-768.509615384615,-779.78028002699,-906.294016860532,-950,-906.294016860532,-886.788599423259,-893.266652100716,-888.473021392948,-950,-773.269871518521,-1200,-825,-762.5,-793.75,-1200,-825,-887.5,-816.573333740234,-1067.35914815125,-1067.35914815125,-1075,-1031.29401686053],"Archive427_field6":[-199.985596083131,-199.991698956205,102.585078828788,102.421029083794,300.110671566904,-199.994960087352,300.153395537165,102.512561285012,300.313746523771,103.091959210477,50.0680359233586,103.079655207002,300.120354443251,103.082146774826,102.559416409191,102.597576266326,102.501725254789,102.913171088882,103.04357843956,102.608885160035,160.490231689674,254.739757168511,232.337291759299,220.083410408672,93.7540612811113,49.9851596654559,93.7354648449201,102.507733412067,103.256559566713,102.70244303997,49.977364465293,226.41387877974,-200.010155960014,175.044185364451,237.263417320109,207.123145080348,-200.005086747848,168.448874445258,107.827863148575,183.296469592669,-67.3833806509837,-67.3657866976424,-75.0124120863763,-31.2798822780585,-199.985596083131,-199.991698956205,102.585078828788,102.421029083794,300.110671566904,-199.994960087352,300.153395537165,102.512561285012,300.313746523771,103.091959210477,50.0680359233586,103.079655207002,300.120354443251,103.082146774826,102.559416409191,102.597576266326,102.501725254789,102.913171088882,103.04357843956,102.608885160035,160.490231689674,254.739757168511,232.337291759299,220.083410408672,93.7540612811113,49.9851596654558,93.7354648449201,102.507733412067,103.256559566713,102.70244303997,49.977364465293,226.41387877974,-200.010155960014,175.044185364451,237.263417320109,207.123145080348,-200.005086747848,168.448874445258,107.827863148575,183.296469592669,-67.3833806509837,-67.3657866976424,-75.0124120863763,-31.2798822780585,-199.985596083131,-199.991698956205,102.585078828788,102.421029083794,300.110671566904,-199.994960087352,300.153395537165,102.512561285012,300.313746523771,103.091959210477,50.0680359233586,103.079655207002,300.120354443251,103.082146774826,102.559416409191,102.597576266326,102.501725254789,102.913171088882,103.04357843956,102.608885160035,160.490231689674,254.739757168511,232.337291759299,220.083410408672,93.7540612811113,49.9851596654559,93.7354648449201,102.507733412067,103.256559566713,102.70244303997,49.977364465293,226.41387877974,-200.010155960014,175.044185364451,237.263417320109,207.123145080348,-200.005086747848,168.448874445258,107.827863148575,183.296469592669,-67.3833806509837,-67.3657866976424,-75.0124120863763,-31.2798822780585],"Archive427_field7":[1000.01440391687,1000.00830104379,990.042789074059,988.459554270958,1000.1106715669,1000.00503991265,1000.15339553717,989.342926363842,1000.31374652377,994.9346629464,1000.06803592336,994.815917705314,1000.12035444325,994.839963685344,989.795122515119,990.16340113633,989.238348449515,993.209188904967,994.46774286481,990.272542629391,1001.11523168967,1000.63819466851,1000.84690714391,999.863690435662,1000.04807814164,999.985159665456,1000.02948170545,989.296332835326,996.523211667429,991.175464432918,999.977364465293,999.683750298261,999.989844039986,1000.04418536445,999.763417320109,1000.87314508035,999.994913252152,993.448874445258,995.327863148575,999.869803332904,999.975767500267,999.993361453608,999.987587913624,1000.01413458247,1000.01440391687,1000.00830104379,990.042789074059,988.459554270958,1000.1106715669,1000.00503991265,1000.15339553717,989.342926363842,1000.31374652377,994.9346629464,1000.06803592336,994.815917705314,1000.12035444325,994.839963685344,989.795122515119,990.16340113633,989.238348449515,993.209188904967,994.46774286481,990.272542629391,1001.11523168967,1000.63819466851,1000.84690714392,999.863690435663,1000.04807814164,999.985159665456,1000.02948170545,989.296332835326,996.523211667429,991.175464432918,999.977364465293,999.68375029826,999.989844039986,1000.04418536445,999.763417320109,1000.87314508035,999.994913252152,993.448874445258,995.327863148575,999.869803332904,999.975767500267,999.993361453608,999.987587913624,1000.01413458247,1000.01440391687,1000.00830104379,990.042789074059,988.459554270958,1000.1106715669,1000.00503991265,1000.15339553717,989.342926363842,1000.31374652377,994.9346629464,1000.06803592336,994.815917705314,1000.12035444325,994.839963685344,989.795122515119,990.16340113633,989.238348449515,993.209188904967,994.46774286481,990.272542629391,1001.11523168967,1000.63819466851,1000.84690714391,999.863690435662,1000.04807814164,999.985159665456,1000.02948170545,989.296332835326,996.523211667429,991.175464432918,999.977364465293,999.683750298261,999.989844039986,1000.04418536445,999.763417320109,1000.87314508035,999.994913252152,993.448874445258,995.327863148575,999.869803332904,999.975767500267,999.993361453608,999.987587913624,1000.01413458247],"Archive427_field8":[1,1,-348.670406127686,-350.253640930787,219.194641032553,1,219.237365002814,-349.370268837902,219.397715989419,-64.8799499216481,90.2589407357698,-64.9986951627341,219.2043239089,-64.9746491827038,-348.918072686626,-209.100502898566,-210.025555585381,-136.330069546506,-13.0533858156701,-348.440652572354,63.3187485926188,168.518127533833,143.501938181579,129.945231910459,138.99222415423,90.1651478122283,138.981321582109,-209.96757119957,-63.291401200619,-208.088439601978,90.1773185689835,137.028266586759,1,79.6788636632516,149.122741202333,115.370146170861,1,73.0835527440585,5.23789586395128,88.9052227262954,1,1,1,1,1,1,-348.670406127686,-350.253640930787,219.194641032553,1,219.237365002814,-349.370268837903,219.397715989419,-64.8799499216481,90.2589407357698,-64.9986951627341,219.2043239089,-64.9746491827038,-348.918072686626,-209.100502898566,-210.025555585381,-136.330069546506,-13.0533858156701,-348.440652572354,63.3187485926188,168.518127533833,143.501938181579,129.945231910459,138.99222415423,90.1651478122283,138.981321582109,-209.96757119957,-63.291401200619,-208.088439601978,90.1773185689835,137.028266586759,1,79.6788636632516,149.122741202333,115.370146170861,1,73.0835527440585,5.23789586395128,88.9052227262954,1,1,1,1,1,1,-348.670406127686,-350.253640930787,219.194641032553,1,219.237365002814,-349.370268837902,219.397715989419,-64.8799499216481,90.2589407357698,-64.9986951627341,219.2043239089,-64.9746491827038,-348.918072686626,-209.100502898566,-210.025555585381,-136.330069546506,-13.0533858156701,-348.440652572354,63.3187485926188,168.518127533833,143.501938181579,129.945231910459,138.99222415423,90.1651478122283,138.981321582109,-209.96757119957,-63.291401200619,-208.088439601978,90.1773185689835,137.028266586759,1,79.6788636632516,149.122741202333,115.370146170861,1,73.0835527440585,5.23789586395128,88.9052227262954,1,1,1,1],"Archive427_field9":[-761.940710764141,-761.941272637516,-748.548418556662,-747.445209059144,-700,-761.926675799906,-700,-748.077458497257,-700,-753.485096649051,-762.019339765186,-751.806938599458,-700,-753.206269492685,-748.279536741999,-748.249191022009,-747.551489205249,-750.749353303116,-754.348078977741,-748.609483338629,-763.776556937868,-745.8984375,-763.723957192845,-761.577216362059,-762.009733451721,-761.903723068359,-761.960423767657,-748.158213876086,-753.651844681872,-749.267714959983,-761.92283669049,-761.384806053644,-761.917197324928,-762.013370498112,-761.269672100288,-763.713309386171,-761.910833625904,-756.525981521944,-756.171121549383,-761.816500119981,-761.883198788388,-761.913011177447,-761.901396263618,-761.972168097606,-761.940710764141,-761.941272637516,-748.548418556662,-747.445209059144,-700,-761.926675799906,-700,-748.077458497257,-700,-753.485096649052,-762.019339765186,-751.806938599458,-700,-753.206269492685,-748.279536741999,-748.249191022009,-747.551489205249,-750.749353303116,-754.348078977741,-748.609483338629,-763.776556937868,-745.8984375,-763.723957192845,-761.577216362059,-762.009733451721,-761.903723068359,-761.960423767657,-748.158213876086,-753.651844681872,-749.267714959983,-761.92283669049,-761.384806053644,-761.917197324928,-762.013370498112,-761.269672100287,-763.713309386171,-761.910833625904,-756.525981521944,-756.171121549383,-761.816500119981,-761.883198788388,-761.913011177446,-761.901396263618,-761.972168097606,-761.940710764141,-761.941272637516,-748.548418556662,-747.445209059144,-700,-761.926675799906,-700,-748.077458497257,-700,-753.485096649051,-762.019339765186,-751.806938599458,-700,-753.206269492685,-748.279536741999,-748.249191022009,-747.551489205249,-750.749353303116,-754.348078977741,-748.609483338629,-763.776556937868,-745.8984375,-763.723957192845,-761.577216362059,-762.009733451721,-761.903723068359,-761.960423767657,-748.158213876086,-753.651844681872,-749.267714959983,-761.92283669049,-761.384806053644,-761.917197324928,-762.013370498112,-761.269672100288,-763.713309386171,-761.910833625904,-756.525981521944,-756.171121549383,-761.816500119981,-761.883198788388,-761.913011177447,-761.901396263618,-761.972168097606],"Archive427_field10":[88.0760254536521,88.076090403028,86.5279524176731,86.4004276556916,150.347439603041,88.0744030913741,150.924204986064,86.4735121054627,150.101316316597,87.0986044109046,88.0851145202942,86.904618856644,150.741596298178,87.066373572764,86.4968712046368,86.4933634114863,86.4127130379023,86.7823679935991,87.1983602744172,86.5350111601905,88.2882388608659,105.156417288538,88.2821586286168,88.0340075620265,88.0840040849318,88.0717498857645,88.0783041650727,86.4828469693185,87.1178795379264,86.6110990030078,88.073959312096,88.0117660214681,88.0733074334159,88.0844245068701,87.9984571893462,88.2809278025454,88.0725718258952,87.4501134583709,87.4090936578349,88.0616674075442,88.0693773953862,88.0728235385053,88.071480920331,88.0796617430166,88.0760254536521,88.076090403028,86.5279524176731,86.4004276556916,150.347439603041,88.0744030913741,150.924204986064,86.4735121054627,150.101316316597,87.0986044109046,88.0851145202942,86.904618856644,150.741596298178,87.066373572764,86.4968712046368,86.4933634114863,86.4127130379023,86.7823679935991,87.1983602744172,86.5350111601905,88.2882388608659,105.156417288538,88.2821586286167,88.0340075620265,88.0840040849318,88.0717498857645,88.0783041650727,86.4828469693185,87.1178795379264,86.6110990030078,88.073959312096,88.0117660214681,88.0733074334159,88.0844245068701,87.9984571893462,88.2809278025454,88.0725718258952,87.4501134583709,87.4090936578349,88.0616674075442,88.0693773953862,88.0728235385053,88.071480920331,88.0796617430166,88.0760254536521,88.076090403028,86.5279524176731,86.4004276556916,150.347439603041,88.0744030913741,150.924204986064,86.4735121054627,150.101316316597,87.0986044109046,88.0851145202942,86.904618856644,150.741596298178,87.066373572764,86.4968712046368,86.4933634114863,86.4127130379023,86.7823679935991,87.1983602744172,86.5350111601905,88.2882388608659,105.156417288538,88.2821586286168,88.0340075620265,88.0840040849318,88.0717498857645,88.0783041650727,86.4828469693185,87.1178795379264,86.6110990030078,88.073959312096,88.0117660214681,88.0733074334159,88.0844245068701,87.9984571893462,88.2809278025454,88.0725718258952,87.4501134583709,87.4090936578349,88.0616674075442,88.0693773953862,88.0728235385053,88.071480920331,88.0796617430166],"Archive427_field11":[850.016736217793,850.017363040544,835.076370974335,833.845636714835,850.347439603041,850.00107889128,850.924204986064,834.55097060272,850.101316316598,840.583701059956,850.104454285481,838.711557456102,850.741596298178,840.272643065449,834.776407946636,834.742554433495,833.964202243152,837.531721296715,841.546439252159,835.14449449882,852.064795798734,851.054854788538,852.006115821462,849.611223924085,850.093737536653,849.975472954123,850.03872793273,834.641060845404,840.769724219799,835.87881396299,849.996796002586,849.396572075112,849.990504758344,850.097795004982,849.268129289634,851.994237188716,849.9834054518,843.976094980315,843.580215207218,849.878167527525,849.952576183774,849.985834715952,849.972877183949,850.051829840622,850.016736217793,850.017363040544,835.076370974335,833.845636714835,850.34743960304,850.00107889128,850.924204986063,834.55097060272,850.101316316597,840.583701059956,850.10445428548,838.711557456102,850.741596298178,840.272643065449,834.776407946636,834.742554433495,833.964202243152,837.531721296715,841.546439252158,835.14449449882,852.064795798734,851.054854788538,852.006115821462,849.611223924085,850.093737536653,849.975472954123,850.03872793273,834.641060845404,840.769724219799,835.87881396299,849.996796002586,849.396572075112,849.990504758344,850.097795004982,849.268129289634,851.994237188716,849.983405451799,843.976094980315,843.580215207218,849.878167527526,849.952576183774,849.985834715952,849.972877183949,850.051829840623,850.016736217793,850.017363040544,835.076370974335,833.845636714835,850.347439603041,850.00107889128,850.924204986064,834.55097060272,850.101316316598,840.583701059956,850.104454285481,838.711557456102,850.741596298178,840.272643065449,834.776407946636,834.742554433495,833.964202243152,837.531721296715,841.546439252159,835.14449449882,852.064795798734,851.054854788538,852.006115821462,849.611223924085,850.093737536653,849.975472954123,850.03872793273,834.641060845404,840.769724219799,835.87881396299,849.996796002586,849.396572075112,849.990504758344,850.097795004982,849.268129289634,851.994237188716,849.9834054518,843.976094980315,843.580215207218,849.878167527525,849.952576183774,849.985834715952,849.972877183949,850.051829840622],"Archive427_field12":[-488.696458983952,-488.695832161201,-503.63682422741,-504.86755848691,69.4314090686895,-488.712116310465,70.0081744517123,-504.162224599025,69.1852857822463,-219.230911808092,-209.710158582567,-221.103055411946,69.8255657638269,-219.541969802599,-503.936787255109,-364.521349601402,-365.299701791745,-292.007537154757,-165.974689428321,-503.568700702925,-85.7316872983221,18.9347876538602,-5.33885314087377,-20.307234601118,-160.962728383003,-209.839139913925,-161.017737986926,-364.622843189492,-219.044888648249,-363.385090071906,-209.817816865462,-13.2589116363889,-488.722690443401,-70.2675266962174,-1.37254682814148,-33.5087617207715,-488.729789749945,-76.3892267208844,-146.509752077406,-61.0864130790828,-340.78723685737,-340.753978325192,-349.291026850947,-300.453927245882,-488.696458983952,-488.695832161201,-503.63682422741,-504.86755848691,69.4314090686895,-488.712116310465,70.0081744517123,-504.162224599025,69.1852857822463,-219.230911808092,-209.710158582567,-221.103055411946,69.8255657638269,-219.541969802599,-503.936787255109,-364.521349601401,-365.299701791745,-292.007537154757,-165.974689428321,-503.568700702925,-85.7316872983221,18.9347876538602,-5.33885314087377,-20.307234601118,-160.962728383003,-209.839139913925,-161.017737986926,-364.622843189492,-219.044888648249,-363.385090071906,-209.817816865462,-13.2589116363889,-488.722690443401,-70.2675266962174,-1.37254682814148,-33.5087617207715,-488.729789749945,-76.3892267208844,-146.509752077406,-61.0864130790828,-340.78723685737,-340.753978325192,-349.291026850947,-300.453927245882,-488.696458983952,-488.695832161201,-503.63682422741,-504.86755848691,69.4314090686895,-488.712116310465,70.0081744517123,-504.162224599025,69.1852857822463,-219.230911808092,-209.710158582567,-221.103055411946,69.8255657638269,-219.541969802599,-503.936787255109,-364.521349601402,-365.299701791745,-292.007537154757,-165.974689428321,-503.568700702925,-85.7316872983221,18.9347876538602,-5.33885314087377,-20.307234601118,-160.962728383003,-209.839139913925,-161.017737986926,-364.622843189492,-219.044888648249,-363.385090071906,-209.817816865462,-13.2589116363889,-488.722690443401,-70.2675266962174,-1.37254682814148,-33.5087617207715,-488.729789749945,-76.3892267208844,-146.509752077406,-61.0864130790828,-340.78723685737,-340.753978325192,-349.291026850947,-300.453927245882]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive428.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive428.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive428.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive428_field1":[0,0,0,0,390.283631343809,0,0,248.368172529759,0,128.025923818872,26.5900927138482,355.322274431152,66.7490707924212,0,523.088922668113,332.565760264127,101.844966905492,267.02698500372,211.051373696512,-222.732752232965,328.691019089367,243.863805047413,220.242595333846,108.454962489273,35.2933110242113,0,34.0171940263494,179.441125994169,0,227.946442149024,0,202.792011465701,0,0,15.012887814758,118.765727693192,0,0,246.659472067976,83.2853634604825,22.3123874869135,-1.4988009082433,45.0071240586219,31.2660000955926],"Archive428_field2":[0,0,0,0,2468.85756556416,0,0,3720.86333439123,0,2414.64912664534,340.431905545083,2375.13046115887,2084.18887563204,0,3379.44946160811,3368.55679096011,1518.79903718595,3282.2545530199,2798.23327791276,3372.28802753919,2363.32390085481,1394.72272918241,2264.55317493671,1191.32076561524,324.292081130171,0,579.144335467061,3219.5075389821,0,1956.08148819912,0,744.491381289504,0,0,1506.67145467422,1181.63762222564,0,0,1280.47226570066,545.844347272301,245.107826433544,284.171431272763,223.040759607199,229.265722332776],"Archive428_field3":[0,0,0,0,2499.51575148834,0,0,3729.14342742979,0,2418.04074448276,341.468761885458,2401.56170568897,2085.25746797848,0,3419.69306876823,3384.9335058201,1522.20987798692,3293.0985957818,2806.18106328825,3379.63554538081,2386.07159288685,1415.8817205933,2275.23798379759,1196.24731785473,326.206946104447,0,580.14250903809,3224.50428922968,0,1969.31824979196,0,771.616495889414,0,0,1506.74624908465,1187.59116211496,0,0,1304.01308213891,552.161664022294,246.12128964058,284.175383796298,227.536418320639,231.387843671069],"Archive428_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive429.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive429.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive429.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive429_field1":[0,0,0,0,459.59933129529,0,0,363.595511604856,0,412.406959522428,48.4899104084004,514.466579849862,472.459868351247,13.0240407880528,0,0,36.9860731963596,366.2705935689,12.2757062600457,0,365.256567847801,0,520.449732824448,469.700743946743,0,0,9.34634678625073,0,0,0,0,459.600015914173,0,0,363.595728816915,0,412.406209634979,48.4992001952999,514.466129878545,472.460358020491,13.0331245047635,0,0,36.9950543072316,366.282783202143,12.2787008552157,0,365.255814007009,0,520.449602149117,469.700795748681,0,0,9.34691968447865,0,0,0,0,459.600468711272,0,0,363.595882181818,0,412.405672560393,48.5057244590226,514.465799997205,472.460724901228,13.0394710234202,0,0,37.001457428708,366.291284959948,12.2809802497753,0,365.25526785136,0,520.449525338483,469.700846178851,0,0,9.34731654775561,0,0,0,0,459.600689033686,0,0,363.595971566119,0,412.405348613923,48.5094961162953,514.465590556559,472.460968077749,13.043096299137,0,0,37.0052983655389,366.296095925473,12.2825454754921,0,365.254929950451,0,520.449502291978,469.700895298986,0,0,9.34753725825103,0,0,0,0,459.600676494964,0,0,363.595996891317,0,412.405237981146,48.5105228676311,514.465501762564,472.461087011132,13.0440097257091,0,0,37.0065864559466,366.297214368942,12.2833971825687,0,365.254800642166,0,520.449532950556,469.700943146252,0,0,9.34758174681041],"Archive429_field2":[0,0,0,0,2580.89723376328,0,0,3631.75322425211,0,2415.75872162627,400.22188903479,2477.76199997408,2535.194920296,288.077681813364,0,0,361.683832525034,1562.1893800502,711.296961856688,0,1275.70795973157,0,3090.42877435382,2783.01056097681,0,0,3019.67915137333,0,0,0,0,2580.9013907362,0,0,3631.75492113134,0,2415.75779471177,400.291867146039,2477.758746644,2535.19360259718,288.169509400173,0,0,361.748082450322,1562.24185945107,711.387076120846,0,1275.70086227394,0,3090.42984429623,2783.01079036284,0,0,3019.68165626452,0,0,0,0,2580.9042569623,0,0,3631.75626215894,0,2415.75710417839,400.341454527074,2477.75627620287,2535.19237944411,288.23423397248,0,0,361.793343083885,1562.27864083492,711.450815276746,0,1275.69590110019,0,3090.43117953106,2783.01099326976,0,0,3019.68430528328,0,0,0,0,2580.90577261827,0,0,3631.75705727106,0,2415.75676352821,400.370751806664,2477.75477828469,2535.19121323183,288.272011850454,0,0,361.819744131359,1562.29967113022,711.488220335302,0,1275.6930371888,0,3090.43216479092,2783.0111480191,0,0,3019.68620611135,0,0,0,0,2580.90588613456,0,0,3631.75713765229,0,2415.75687281939,400.379819277078,2477.75442083038,2535.19007366605,288.282937060009,0,0,361.82736335295,1562.30491067345,711.499316234708,0,1275.69223443222,0,3090.43225276454,2783.01123518414,0,0,3019.68656479087],"Archive429_field3":[0,0,0,0,-3.07071962571946,0,0,-2.02974017476117,0,-5.04845630796447,-8.78966055948454,-4.52752257296642,-3.97726032944721,-6.82593759022253,0,0,-5.48854255145467,-4.38032934476637,-8.03654309133305,0,-6.42812156160358,0,-3.65028495455347,-2.45316396481611,0,0,-3.9645603321271,0,0,0,0,-3.96334643698705,0,0,-2.51361526262394,0,-4.7506648446432,-9.29362794575983,-4.73098787055806,-4.62301108482768,-8.14566108337894,0,0,-6.56781072132668,-5.74209879482577,-8.87184168391168,0,-7.16129087912379,0,-3.96827331085215,-2.52185398838799,0,0,-4.21257523147077,0,0,0,0,-4.85593915334908,0,0,-2.99748737315341,0,-4.45288611298993,-9.79764745538506,-4.93445434436896,-5.2686977027488,-9.46541511098484,0,0,-7.64708400596193,-7.10382837975137,-9.70715674834794,0,-7.89445009718053,0,-4.28625708199586,-2.59054888706249,0,0,-4.46059383325626,0,0,0,0,-5.74850874674866,0,0,-3.48135777904901,0,-4.15511586074146,-10.3016971463328,-5.13792169947173,-5.9143411384742,-10.7851834636226,0,0,-8.72635630058542,-8.46552905917429,-10.5424768746259,0,-8.62760270196551,0,-4.60423849013007,-2.65924705161478,0,0,-4.70861591600189,0,0,0,0,-6.64106823380003,0,0,-3.96522708042316,0,-3.85734985650704,-10.8057526930824,-5.34139007063422,-6.55996480937236,-12.1049481140593,0,0,-9.80561985399266,-9.82721234384965,-11.377789321588,0,-9.3607535359983,0,-4.92221845138371,-2.72794660076106,0,0,-4.95663922609445],"Archive429_field4":[0,0,0,0,2621.50176538049,0,0,3649.90921774364,0,2450.71319992508,403.244454402961,2530.61274966333,2578.84614308354,288.452716786298,0,0,363.611452542164,1604.55881604262,711.448274251611,0,1326.98322507305,0,3133.94819011599,2822.37003055695,0,0,3019.6962180285,0,0,0,0,2621.50717554756,0,0,3649.91122898041,0,2450.71156468333,403.326323022984,2530.60984499968,2578.84601416642,288.579071099722,0,0,363.694164563237,1604.6169874428,711.548345610699,0,1326.97994851446,0,3133.94961001084,2822.37032590524,0,0,3019.69906048237,0,0,0,0,2621.51157819125,0,0,3649.91294392083,0,2450.71023447144,403.388248978336,2530.60774765058,2578.84611726663,288.684248828189,0,0,363.760922647631,1604.66018877028,711.623013909738,0,1326.97918789985,0,3133.95133271762,2822.37059659163,0,0,3019.70206689304,0,0,0,0,2621.51491429047,0,0,3649.91417343329,0,2450.70932121406,403.430334853224,2530.60664336019,2578.8464152477,288.768411291334,0,0,363.811858856593,1604.68836771695,711.672320958111,0,1326.98090585866,0,3133.95275149807,2822.37082124907,0,0,3019.70434494766,0,0,0,0,2621.51713301781,0,0,3649.91474953451,0,2450.70892356402,403.452642579647,2530.60669660384,2578.84687825643,288.831659896407,0,0,363.847053709096,1604.7014854082,711.696292626741,0,1326.9850677719,0,3133.95332663239,2822.37098072637,0,0,3019.70510069037],"Archive429_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,2136495.375,2570400.71859375,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2248942.5,2091516.525,517256.775,674682.75,1383099.6375,2170229.5125,1304386.65,595969.7625,1461812.625,950178.20625,1816021.06875,1028891.19375,1343743.14375,1756986.328125,1697951.5875,2130873.01875,1688112.4640625,1466732.18671875,1629077.7234375,1068247.6875,1285200.35929688,910821.7125,556613.26875,989534.7,1855377.5625,2209586.00625,635326.25625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive430.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive430.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive430.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive430_field1":[0,0,0,0,310.305593717502,0,0,-156.801740814069,0,20.5526635827122,3.8518983637919,255.321203534994,221.606746204188,65.7959383603537,0,0,-145.060297583224,-107.562252191156,25.1867810310471,0,-113.351857823893,0,570.44595846548,0.0967673608392524,0,0,-354.500422850911,0,0,0,0,310.310561498888,0,0,-156.796312301291,0,20.5447719628308,3.85193479528491,255.330264360733,221.608488248035,65.8284350566693,0,0,-145.104722829094,-107.56762031152,25.1915479994531,0,-113.351048595414,0,570.434784896735,0.110166496064662,0,0,-354.491770755695,0,0,0,0,310.313846492044,0,0,-156.790789577001,0,20.5372273517536,3.85216158190957,255.338227078131,221.609811547208,65.838216190677,0,0,-145.11340845614,-107.567067736707,25.1854898722566,0,-113.348337162786,0,570.423268565669,0.123140908750638,0,0,-354.482419237566],"Archive430_field2":[0,0,0,0,2375.4822726191,0,0,4388.86188817432,0,2670.93686448676,3.3095111088482,2348.88860548264,2673.69694798162,392.687069758518,0,0,503.385640568394,709.396114418759,550.197655570233,0,897.782063446035,0,3596.41276509838,2992.9204096183,0,0,3219.0446452684,0,0,0,0,2375.51099896093,0,0,4388.86957072525,0,2670.93561048302,3.30903806154755,2348.89524286886,2673.73083057415,392.892173647908,0,0,503.583703957116,709.438884372754,550.337858381643,0,897.795831967152,0,3596.41458826924,2992.93075490061,0,0,3219.05760614443,0,0,0,0,2375.52456665974,0,0,4388.87521272979,0,2670.94096105076,3.30910155697197,2348.89996518677,2673.74834823511,392.961748006931,0,0,503.653289058322,709.450788949267,550.384783665565,0,897.797475535393,0,3596.41310367547,2992.94165883843,0,0,3219.06884086461],"Archive430_field3":[0,0,0,0,0.931216616596219,0,0,-18.8325797337947,0,-15.9248773862033,-0.000190218000717502,1.56108001682678,0.734706115470682,-0.0391936995991947,0,0,-0.0433519200591508,0.162421128227475,-0.0562547136931829,0,0.658198106293763,0,-14.128834810689,-10.8786996513422,0,0,-9.10062737973122,0,0,0,0,-1.11704077470999,0,0,-20.2354194207709,0,-15.8466938414287,-0.0261974350816803,0.542199679730873,-0.932950912360757,-2.90927855426004,0,0,-2.34139466620633,-2.4565884424717,-2.02755932028058,0,-0.668132134974129,0,-15.1976431498603,-11.4129814718348,0,0,-9.34885384013863,0,0,0,0,-3.16106738490235,0,0,-21.6371343448441,0,-15.7687615120918,-0.0522463647113812,-0.437741189647081,-2.59668322123706,-5.77743451279239,0,0,-4.63911023258025,-5.07454766459362,-3.99776734240461,0,-1.97621317746972,0,-16.2664066394142,-11.9467020627197,0,0,-9.59582247594549],"Archive430_field4":[0,0,0,0,2395.66409502342,0,0,4391.70241767937,0,2671.06341141024,5.07838407574252,2362.72491731719,2682.86515863219,398.161075189925,0,0,523.869826335489,717.504363491603,550.773853136003,0,904.909780222479,0,3641.39986714797,2992.94018212522,0,0,3238.51845748196,0,0,0,0,2395.69330227018,0,0,4391.7161411672,0,2671.06163176872,5.07817101577939,2362.73204148312,2682.89913094468,398.379350465727,0,0,524.077675166057,717.551641644221,550.9178554517,0,904.923346209954,0,3641.40422129888,2992.95251748381,0,0,3238.53110040308,0,0,0,0,2395.70900621833,0,0,4391.7282646121,0,2671.06646285069,5.07858559543106,2362.73757499202,2682.91779244683,398.480846286722,0,0,524.162244192362,717.577066966477,550.97522733279,0,904.926548419161,0,3641.40556840277,2992.96550465661,0,0,3238.54196631492],"Archive430_field5":[-187307167.817194,8995770,2585173.04771426,2759561.15197602,5580110.82015798,9703324.57407173,5202947.80977101,2532309.20822,5827367.59534885,4299236.67937376,6271631.63273245,4186495.48535445,5752668.99179505,7188886.46965296,7194817.35631979,8442557.70781342,6952605.80969393,6147767.32249029,7191888.72910035,4196525.48513519,5123649.42646146,4447355.81565341,2613499.46207793,4228045.68526309,116292346.919018,102790246.669811,2639810.23598539,-191805765.182987,4497885,1235980.27144803,1410824.41682567,2656116.98682302,5205138.76783383,2279681.16382952,1182513.73333782,2902998.16676779,2162592.76396944,2560808.77474427,2048308.9548634,2828491.94370012,3477949.37533527,3483975.48937399,3944304.97706733,3438511.68813599,3125997.30964711,3677812.9944131,2060771.22388956,2504687.34036901,2310786.53374659,1264270.55235498,2091715.15849943,112582552.66565,98293307.6411067,1290058.89322574,-196304699.242044,0,-113223.923035245,62077.8427004977,-267888.349490533,706963.600569117,-643598.891042765,-167292.409051927,-21341.6603145198,25958.1107891029,-1150025.58025412,-89856.1063586579,-95681.6983650406,-232990.292754214,-226875.044215152,-553917.538291597,-75564.6864375178,104214.983114023,163734.207981533,-74994.893144214,-114289.067445541,174220.245043681,-84955.2603264584,-44619.6913168139,108872717.530005,93796731.1318389,-59703.5602447262]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive431.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive431.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive431.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive431_field1":[0,0,0,0,393.089337850737,0,0,332.358607914366,0,167.65337468579,26.8666537719701,442.528610580307,72.3285975033002,0,437.817600179378,368.042352175082,98.7410461806015,326.777864884757,240.054351433957,96.6740550881898,344.992171186594,255.888054179694,242.099948453102,113.219193850223,34.8364054036704,0,33.7292737526491,301.793509121917,0,364.782164449871,0,203.146890935195,0,0,14.6634399945138,148.171968919467,0,0,300.453348393027,85.087064009647,22.4472905476641,-0.659198386194992,44.8647498413287,30.9819244786044,0,0,0,0,393.089337850737,0,0,332.358607914366,0,167.65337468579,26.8666537719701,442.528610580307,72.3285975033002,0,437.817600179378,368.042352175082,98.7410461806015,326.777864884757,240.054351433957,96.6740550881898,344.992171186594,255.888054179694,242.099948453102,113.219193850223,34.8364054036704,0,33.7292737526491,301.793509121917,0,364.78216444987,0,203.146890935195,0,0,14.6634399945138,148.171968919467,0,0,300.453348393027,85.087064009647,22.4472905476641,-0.659198386194992,44.8647498413287,30.9819244786044,0,0,0,0,393.089337850737,0,0,332.358607914366,0,167.65337468579,26.8666537719701,442.528610580307,72.3285975033002,0,437.817600179378,368.042352175082,98.7410461806015,326.777864884757,240.054351433957,96.6740550881898,344.992171186594,255.888054179694,242.099948453102,113.219193850223,34.8364054036704,0,33.7292737526491,301.793509121917,0,364.782164449871,0,203.146890935195,0,0,14.6634399945138,148.171968919467,0,0,300.453348393027,85.087064009647,22.4472905476641,-0.659198386194992,44.8647498413287,30.9819244786044],"Archive431_field2":[0,0,0,0,2518.60656151123,0,0,3607.63045921234,0,2542.86495419841,342.809901795674,2597.15248135591,2147.12210987809,0,3584.84814813215,3398.70875852484,1705.67078554059,3315.32691319682,2864.65476762001,3672.22430217791,2427.71769327807,1436.36055594093,2329.17016678899,1210.84379778307,323.582915590484,0,581.471855195247,3392.33863367804,0,2286.6776518114,0,748.618321475818,0,0,1585.09458878595,1263.81702947353,0,0,1438.57188553124,548.357506576434,245.576850413334,286.852913807263,226.018297998345,228.93789809772,0,0,0,0,2518.60656151123,0,0,3607.63045921234,0,2542.86495419842,342.809901795674,2597.15248135591,2147.12210987809,0,3584.84814813215,3398.70875852484,1705.67078554059,3315.32691319682,2864.65476762,3672.22430217791,2427.71769327808,1436.36055594093,2329.17016678899,1210.84379778307,323.582915590484,0,581.471855195247,3392.33863367804,0,2286.6776518114,0,748.618321475818,0,0,1585.09458878595,1263.81702947353,0,0,1438.57188553124,548.357506576434,245.576850413334,286.852913807263,226.018297998345,228.93789809772,0,0,0,0,2518.60656151123,0,0,3607.63045921234,0,2542.86495419841,342.809901795674,2597.15248135591,2147.12210987809,0,3584.84814813215,3398.70875852484,1705.67078554059,3315.32691319682,2864.65476762001,3672.22430217791,2427.71769327807,1436.36055594093,2329.17016678899,1210.84379778307,323.582915590484,0,581.471855195247,3392.33863367804,0,2286.6776518114,0,748.618321475818,0,0,1585.09458878595,1263.81702947353,0,0,1438.57188553124,548.357506576434,245.576850413334,286.852913807263,226.018297998345,228.93789809772],"Archive431_field3":[0,0,0,0,-0.425820477761404,0,0,-2.8012811501293,0,-4.12792644205216,-0.257919191532854,-3.51086452980965,-0.522428876304161,0,-2.65689770820943,-2.49935985194065,-6.25661145709974,-3.20264162320801,-3.91410939450171,-3.21420915804682,-1.56711977411973,-2.75845806261693,-1.74712684091328,0.841767497699536,-0.276785354191991,0,-0.274990614008817,-2.31797228559622,0,-5.40644995945336,0,1.43843740770312,0,0,1.81793139387047,-4.46598148497775,0,0,-5.75579611807891,0.426509938190345,0.118984505910479,0.0704550806895974,0.0644797978832132,-0.0765577935302236,0,0,0,0,-1.6029634670898,0,0,-2.83165852619576,0,-4.42018568770916,-0.399987319612169,-3.93242643738965,-1.12379861633179,0,-2.76210839220727,-2.81138700648359,-6.32258725284443,-3.58412123660775,-4.02177385610008,-3.40363684571827,-2.13434896227083,-3.74787612053434,-1.9823712934117,-0.503149845940258,-1.13806509041125,0,-1.24416983825843,-2.66617022950221,0,-5.75133728176982,0,0.252962626839944,0,0,0.996569999071597,-3.98759307287498,0,0,-6.59216827548263,-0.208356779027732,-0.154854522517434,-0.212687322153177,-0.245372182708836,-0.417549865555008,0,0,0,0,-5.13439243507498,0,0,-2.92279065439515,0,-5.29696342468016,-0.826191703850167,-5.19711216012967,-2.92790783641468,0,-3.07774044420077,-3.7474684701124,-6.52051464007852,-4.72856007680694,-4.34476724089516,-3.97191990873262,-3.83603652672416,-6.71613029428656,-2.68810465090696,-4.53790187685963,-3.72190429906908,0,-4.15170751100726,-3.71076406122018,0,-6.7859992487192,0,-3.30346171574946,0,0,-1.46751418532502,-2.55242783656665,0,0,-9.10128474769375,-2.11295693068198,-0.976371607801154,-1.0621145306815,-1.17492812448497,-1.44052608162936],"Archive431_field4":[0,0,0,0,2549.09756983574,0,0,3622.90872389404,0,2548.38907333844,343.861181839957,2634.58628797105,2148.34006937358,0,3611.48550534247,3418.57903887971,1708.53790359899,3331.39408825482,2874.69795796754,3673.49799640258,2452.10832801078,1458.97839326896,2341.71926228424,1216.12581465008,325.452846067782,0,582.449360813385,3405.73723306544,0,2315.59710236811,0,775.693315459198,0,0,1585.16345426757,1272.48118310307,0,0,1469.62390208871,554.919764823017,246.60065788472,286.853679889501,230.428125379777,231.024775058641,0,0,0,0,2549.09803826986,0,0,3622.90874750958,0,2548.38956350389,343.861317748767,2634.58688347395,2148.34029978201,0,3611.48558427638,3418.57928124608,1708.53814647408,3331.39447683261,2874.69810657664,3673.49816703058,2452.10875612827,1458.980599429,2341.71944961321,1216.12562741091,325.454718195384,0,582.450624731976,3405.73748785141,0,2315.5979332939,0,775.692022993661,0,0,1585.16272509251,1272.47959404436,0,0,1469.6274157364,554.919640031827,246.600677800746,286.853750085521,230.428247000887,231.025139709275,0,0,0,0,2549.10270511116,0,0,3622.90881988446,0,2548.39123510413,343.862077651483,2634.58907470788,2148.34200102974,0,3611.48583946823,3418.5801792247,1708.53889038519,3331.39590466612,2874.69857659769,3673.49873752272,2452.11082775875,1458.9912437506,2341.72015339311,1216.13398975576,325.474009676807,0,582.464092427456,3405.73846580483,0,2315.60073427615,0,775.699015988299,0,0,1585.16309112622,1272.47590595997,0,0,1469.64081250676,554.923623634367,246.602562057617,286.855637541788,230.431111754666,231.02925344032],"Archive431_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,2732465.1375,1669839.80625,2319221.953125,2201152.471875,2702947.7671875,3153087.66445312,1905978.76875,3536813.47851562,4072277.02434082,3766708.38191106,4467048.82294566,5144221.38575526,5093854.7625,4984869.16245088,2466808.8046875,3204743.0625,2540602.23046875,5566132.6875,4572258.27409405,6628758.01875,4503507.35625,4267368.39375,3529434.1359375,6392619.05625,3795090.46875,3440882.025,4872973.52761088,5939681.20965504,5710759.45846776,6097445.353125,5654892.68035307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive431_field6":[259.822016911585,261.441108066082,272.9472353442,272.885524362,272.591349360197,258.088108402827,272.631858788558,272.900898272146,272.57193929879,272.759389750274,259.931274851468,272.740338303285,272.608250804771,272.7929578887,272.92751761557,272.832785071333,272.831658211276,272.779249074162,272.721803044561,272.893897174294,272.668030960861,272.58551932787,272.637352229341,249.391279691936,257.623663260013,259.281351181562,256.094041497955,272.814496707584,272.726408165225,272.799996627901,260.326708399173,237.804747165569,257.556362081852,264.236451703767,243.900929914204,272.659510357332,257.508239621116,272.65410817875,272.669661375504,248.594939117826,257.190246239716,258.525527473944,259.254906188426,257.227036618621,255.014872918832,256.60609850054,272.142744403325,270.132004392386,248.994041107458,254.127895530504,258.226156304967,234.201998016887,253.575248126656,249.073420680303,254.540754615291,252.201892946384,245.246466609229,264.199298711939,252.703837500216,242.092148809616,263.68265604681,239.75875011396,242.324602359287,250.085186798089,242.223119605708,250.767632748265,241.866626764414,253.233840754117,253.280237371441,255.658511065783,252.86969125133,243.742520939848,257.706261401781,261.386712459715,256.014978338861,252.651709498305,253.888078364443,257.506641924828,255.292008448778,255.995988275162,253.828816634892,254.956659848762,260.866783854688,252.822694736193,253.285160248131,253.788574035761,254.129894129455,253.555849981517,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive431_field7":[0,0,3.68717040873236e-05,2.59721593525345e-05,0,0,0,0,0,0,0,0,0,3.25316467682634e-05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4.2914791583292e-05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive431_field8":[76754.5313959478,80143.2891823093,104237.928724576,104105.12719089,103480.744210892,73125.460887117,103565.530444452,104128.630083601,103440.118952368,103832.452747324,76983.208264123,103792.578068775,103516.118934385,103913.57643107,104184.344369389,103986.069154301,103983.7106362,103874.018312221,103753.783772267,104113.976785798,103641.238801082,103468.541953233,103577.028216011,54922.9983952221,72153.3772032065,75622.9180230096,68951.8788552203,103947.791608973,103763.422289815,103917.442942198,77810.8506794694,30672.3858175351,72012.5158373164,85993.9434159841,43431.6963104293,103623.405177895,71911.7955269954,103626.431958513,103644.65125893,53256.25757361,71246.2353797257,74040.979002965,75567.5686523754,71323.2376427739,66693.1790191149,70023.6141616302,102541.814036159,98333.3351932633,54091.5780379085,64836.7353453454,73414.395146296,23131.8318493449,63680.0443290901,54257.7194838748,65700.8494098033,60805.6119367812,46247.9046131166,85916.1822040894,61856.1818879517,39645.9174585268,84834.8491059734,34762.1139885182,40132.4427379874,56375.3459683998,39920.0393347464,57803.7053421188,39173.8998179194,62965.4786983663,63062.5868184264,68040.3136606838,62203.3137890343,43100.1463271022,72326.2551139286,80029.4391781828,68786.3996632367,61747.0779799527,64334.7980167801,71908.4515486644,67273.2236832925,68746.6534599143,64210.7632168287,66571.3390634594,78941.2286078626,62104.9500828525,63072.8903993374,64126.5354568478,64840.9184129497,63639.444011316,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive432.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive432.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive432.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive432_field1":[0,0,0,0,384.304477745138,0,0,323.711808333535,0,169.334370894895,26.8541140066585,431.424624754699,69.0158065409714,0,408.673788948331,355.546550612553,96.4349217733116,318.480725886175,236.484540904397,128.826591417133,336.278696946374,255.188483443914,236.465176846604,113.267452800476,34.9868172086588,0,34.0909395856589,298.434701415256,0,361.745880236479,0,204.378229217445,0,0,14.1351116186957,146.101003117266,0,0,294.902112531083,85.4319780671518,22.4838083557481,-0.632256043564672,44.7569479946006,30.8989719697297,0,0,0,0,384.304666234299,0,0,323.711811540219,0,169.334406364586,26.8582288031952,431.424709354564,69.0149292975482,0,408.673719612531,355.546526164683,96.4338881899001,318.480831361787,236.484728417967,128.826640545379,336.278215734887,255.190667878099,236.464259136596,113.275913917475,34.9931114141483,0,34.0957791090908,298.434670438757,0,361.746775845554,0,204.391438401827,0,0,14.134572978495,146.099514785911,0,0,294.902873402562,85.4425124740191,22.4865710074075,-0.63235381628256,44.7677736515688,30.9062320615861,0,0,0,0,384.304459233632,0,0,323.711831450008,0,169.334581881649,26.8633539397705,431.424832402425,69.0134135263876,0,408.67364298619,355.546454971914,96.4327129796664,318.480943487652,236.485151377769,128.826659595179,336.277345154834,255.192712846842,236.46318009312,113.285444401135,35.0005520002835,0,34.1020205182525,298.434609906446,0,361.747688642161,0,204.409257811562,0,0,14.1345878945375,146.097213272117,0,0,294.90368842745,85.4546372624999,22.4896244529957,-0.632363117986656,44.7796438007304,30.9146835178438],"Archive432_field2":[0,0,0,0,2499.16783940574,0,0,3481.60657240727,0,2517.7648848455,341.966219163314,2564.27105657921,2138.65339277093,0,3509.01007994379,3315.92156671982,1687.8273283126,3236.17501931533,2819.14174551272,3595.24595452285,2411.27582176868,1428.00801414267,2317.86503928787,1215.26306307828,323.769788789198,0,581.035699337316,3313.99207326986,0,2264.86494934537,0,755.107699180673,0,0,1598.22296316077,1269.45471996115,0,0,1426.21190192621,549.402930985464,245.794097039103,287.257794871647,226.48915833635,228.247396616056,0,0,0,0,2499.16816140775,0,0,3481.60691653942,0,2517.767834088,342.015982390796,2564.27068496151,2138.64510745179,0,3509.01050714932,3315.92150331456,1687.82657857066,3236.17568186054,2819.1427368638,3595.24717456401,2411.27643248204,1428.02008800252,2317.85996645855,1215.35431928165,323.814939375217,0,581.120304196771,3313.99234943664,0,2264.86556045414,0,755.159985556647,0,0,1598.22750874447,1269.45477831782,0,0,1426.21109363796,549.468445535531,245.830707869977,287.320692618408,226.545707969581,228.307392547343,0,0,0,0,2499.16441650254,0,0,3481.60780363977,0,2517.77081310654,342.076573505104,2564.27055433734,2138.63432879858,0,3509.01178083914,3315.92093941157,1687.82531663954,3236.17620565431,2819.14461284352,3595.25042066696,2411.2771078765,1428.03018990708,2317.85561766654,1215.45947281443,323.867523524199,0,581.218580263983,3313.99201655389,0,2264.86550358046,0,755.233058971407,0,0,1598.22867431532,1269.45608744009,0,0,1426.21040765602,549.549607550754,245.87119532255,287.392143658196,226.608296731638,228.378188095353],"Archive432_field3":[0,0,0,0,-0.435155275263677,0,0,-2.88127267854175,0,-4.14484242042002,-0.258504177429201,-3.53247136732366,-0.527197774787539,0,-2.70622495834542,-2.55127900197931,-6.26765595797506,-3.25222396405646,-3.94621256617802,-3.26044366014403,-1.57831209500229,-2.76228726198597,-1.75570990714978,0.843448952664959,-0.275961039463383,0,-0.275039224424885,-2.36734681006574,0,-5.42025960962688,0,1.44118343044959,0,0,1.82193606232344,-4.46171617953445,0,0,-5.76416188729414,0.426701577089884,0.118983996409824,0.0705156515516482,0.0645982188324712,-0.0769845220396043,0,0,0,0,-1.59534043727498,0,0,-2.89548306549604,0,-4.422578529166,-0.406956726291854,-3.93050031699683,-1.12004035490752,0,-2.8009609099882,-2.84122757395546,-6.33218925227247,-3.59783636979322,-4.03072725998298,-3.43622616027868,-2.12052778503244,-3.7363752683804,-1.97579041846385,-0.495512521719839,-1.13489221887662,0,-1.24796127780904,-2.69327975867706,0,-5.75813978092319,0,0.265482166574127,0,0,0.991300263096245,-3.97329338382929,0,0,-6.5897923643414,-0.207846418329132,-0.153027151595645,-0.210709379488158,-0.24291062752702,-0.421158301066963,0,0,0,0,-5.07557640864977,0,0,-2.93813607845936,0,-5.25585698465283,-0.852605134690132,-5.12462711143612,-2.89818384929817,0,-3.08516555544584,-3.7110342496611,-6.52576723045502,-4.63466154009145,-4.28438111429382,-3.96359204849526,-3.74711767529106,-6.65831703916603,-2.63581651477323,-4.51208897996567,-3.71160767611211,0,-4.16639406036406,-3.67107385670257,0,-6.77177750638322,0,-3.26144321518212,0,0,-1.50027040205699,-2.50814507519809,0,0,-9.0667129049716,-2.11156369781883,-0.969504570187178,-1.05494650457036,-1.16579230823091,-1.45435360317237],"Archive432_field4":[0,0,0,0,2528.54306083465,0,0,3496.62436667371,0,2523.45622594213,343.019103421871,2600.31262289913,2139.76676156552,0,3532.7288787245,3334.92963873522,1690.59163249068,3251.8101582599,2829.04589782013,3597.554779939,2434.6122774962,1450.63285526318,2329.8963931324,1220.53043376741,325.654770678228,0,582.035009009606,3327.40324232504,0,2293.57857939411,0,782.278834527477,0,0,1598.28650773441,1277.84220311225,0,0,1456.39310309186,556.005742349951,246.820327231445,287.258499325403,230.869069843991,230.329386873256,0,0,0,0,2528.54387357522,0,0,3496.62472136315,0,2523.4596423854,343.069180019079,2600.31284164567,2139.7586804553,0,3532.72936888298,3334.92980750506,1690.59106549801,3251.8111919724,2829.04702052636,3597.55616456157,2434.61322777545,1450.64730696711,2329.89142959667,1220.62189051444,325.702196476117,0,582.121024796523,3327.4037624551,0,2293.5801474855,0,782.331473455251,0,0,1598.29031735072,1277.84047888418,0,0,1456.39596735245,556.071972659331,246.857056258949,287.321465742665,230.926764067593,230.390186523484,0,0,0,0,2528.54473157491,0,0,3496.6256420769,0,2523.46422443134,343.130804302677,2600.31481241369,2139.74952810649,0,3532.73086192339,3334.93009369708,1690.59047473359,3251.81303667593,2829.04929806257,3597.55995163254,2434.61573656388,1450.66807959711,2329.88764695141,1220.73571296757,325.774442621829,0,582.233067325254,3327.40436060245,0,2293.58300406097,0,782.413416969717,0,0,1598.29187972345,1277.83780052724,0,0,1456.40877422425,556.158003529666,246.899509591428,287.394775581766,230.993280677686,230.465679872574],"Archive432_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,2732465.1375,1669839.80625,2319221.953125,2201152.471875,2702947.7671875,3153087.66445312,1905978.76875,3536813.47851562,4072277.02434082,3766708.38191106,4467048.82294566,5144221.38575526,5093854.7625,4984869.16245088,2466808.8046875,3204743.0625,2540602.23046875,5566132.6875,4572258.27409405,6628758.01875,4503507.35625,4267368.39375,3529434.1359375,6392619.05625,3795090.46875,3440882.025,4872973.52761088,5939681.20965504,5710759.45846776,6097445.353125,5654892.68035307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive432_field6":[259.875807538128,261.48551522587,272.9472353442,272.885524362,272.591327027336,258.070648563593,272.631858448671,272.901516396805,272.571961751153,272.75933103392,259.875038608104,272.74028730553,272.608244331248,272.7929578887,272.927880781996,272.832661042648,272.83144857966,272.778932156176,272.721679098237,272.894150723148,272.668029650394,272.585496550294,272.637338725547,249.357913731094,257.627950122385,259.280036936613,256.092714039124,272.814325421152,272.726397328845,272.799907415158,260.34166402924,237.723553728152,257.519804127571,264.230718726087,243.900197761344,272.659615461406,257.496696679421,272.65410817875,272.669618634682,248.648104862783,257.199749123529,258.537316166918,259.277496028127,257.20702141351,255.055324410887,256.642056630313,272.037546777428,270.082477662997,248.96184296596,254.121606982739,258.162104514263,235.59595435822,253.588559013285,249.314796543323,254.527556755322,252.375715081131,245.246985058591,264.177872098735,253.599927009899,242.711688361296,263.75109135582,240.178860196278,242.57177685366,250.634597221789,242.138626107854,250.820603824122,241.821776588191,253.227672497488,253.286585115117,255.661200120546,252.870158468416,244.023948121492,257.780736157089,261.528330819695,256.024931822774,252.613225554052,253.868228909686,257.489738518729,255.306618350705,255.935711058089,253.823014817698,255.017138526459,260.967801154121,252.82787653287,253.282372582522,253.794131217927,254.139340944748,253.551695189964,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive432_field7":[0,0,3.62136019036103e-05,2.5550453314902e-05,0,0,0,0,0,0,0,0,0,3.23708212735239e-05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4.29888272140047e-05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive432_field8":[76867.1151773023,80236.2333677453,104237.708918446,104104.986341073,103480.697468215,73088.9174436,103565.529733068,104129.923818512,103440.165945162,103832.329853994,76865.5058067625,103792.471330475,103516.105385302,103913.522715354,104185.104476718,103985.809562263,103983.271877229,103873.355002876,103753.52435261,104114.50746355,103641.236058275,103468.494279765,103576.999952571,54853.1634391803,72162.3496061518,75620.1673083318,68949.1004838855,103947.433106472,103763.399609272,103917.256219925,77842.1528131999,30502.4479530224,71936.0000390066,85981.9442936999,43430.1639144936,103623.625160722,71887.6361500278,103626.456686413,103644.561802389,53367.5334778044,71266.1249155462,74065.6527373598,75614.8491868706,71281.3458184768,66777.8439919856,70098.8745272455,102321.635405156,98229.6757486532,54024.1873277551,64823.5734148731,73280.3347483531,26049.3824717548,63707.904014805,54762.9191651756,65673.2262888899,61169.4216648063,46248.9897276309,85871.3363026519,63731.6972317184,40942.6137401924,84978.0842077305,35641.4043908107,40649.7789547108,57525.2619852037,39743.1944437391,57914.5738038873,39080.0283990829,62952.5685372414,63075.87264594,68045.9418523025,62204.2916743958,43689.1734182821,72482.1307767863,80325.8464056213,68807.2323050668,61666.5310846307,64293.2531079719,71873.0727196993,67303.8022080252,68620.4932445806,64198.6200134416,66697.9209358797,79152.6578155743,62115.7955832965,63067.0558152191,64138.1666391205,64860.6905973577,63630.7480325947,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive433.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive433.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive433.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive433_field1":[-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1.86573461925877,-1004.03489640131,-1004.03489640131,-5.32040408696844,-1004.03489640131,-10.6773780488078,-1004.03489640131,-1004.03489640131,0.382728221620312,-1004.03489640131,-1004.03489640131,-1.70805153437419,-1004.03489640131,-1004.03489640131,-1.86573462011449,-1004.03489640131,-1004.03489640131,-1004.03489640131,0.402599399457984,-1004.03489640131,-1004.03489640131,0.382728222050275,-1004.03489640131,-1026.346782988,-1026.346782988,-22.3118865866957,-1026.346782988,-1004.03489640131,-12.9302953228488,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,13.9234215177135,-22.3118865866957,-6.49415957969711,13.2300547718002,-22.3118865866957,-22.3118865866957,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246200977869,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620098423,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201298853,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201642523,-12.1322536834644,-1004.03489640131,-1004.03489640131,-12.1322536835307,-1004.03489640131,7.94246201201122,-1004.03489640131,7.94246201712883,-1026.346782988,-1004.03489640131,7.94246201376984,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201605364,-1004.03489640131,7.94246201517802,-1004.03489640131,-22.3118865866958,-8.50415616914523,-1004.03489640131,-13.3172915499275,20.8012933970991,-1004.03489640131,-6.484319039318,13.3533221799019,-10.7426316298049,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-6.13899584061471,-10.7255646354427,12.7285795284387,-1004.03489640131,-6.48431904086471,13.3533221795731,-10.7426316282136,-1004.03489640131,8.82622136200843,-10.6244028613748,-13.8349005388457,-22.3118865866958,3.06730449534194,39.8335511594283,30.0880481346721,17.7013607076611,79.3166377725732,6.91505412343815,49.302617060269,55.6737065015006,33.896174672252,30.1818915205478,49.1977067452478,31.4320296162073,28.5827974601651,82.5841809424686,56.0035793430457,75.3638413273682,35.4245742161953,120.813991583567,28.9201819928979,97.5353811488949,112.962430523175,100.397898062442,79.2440478358114,-6.47786147222564,-22.3118865866958,6.01909653183412,-1004.03489640131,-16.1237549139601,-1004.03489640131,-1004.03489640131,-16.1237549147168,-1004.03489640131,-11.4324994449325,-1004.03489640131,24.794812689333,6.01909653028298,-1004.03489640131,-16.1237549133937,-1004.03489640131,-1004.03489640131,-11.4324994442847,-1004.03489640131,24.794812690903,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-11.4324994444304,-1004.03489640131,24.7948126894471,-1004.03489640131,-1004.03489640131,-1004.03489640131,-16.1338695179189,-1026.346782988,-22.3118865866958,-1026.346782988,-22.3118865866958,-1004.03489640131,-6.34574844371338,-1004.03489640131,36.4817071513331,12.9083498609584,22.8148039371792,18.9003815275257,22.6298880681195,52.7842000914906,29.0872009820332,52.7909118540404,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,29.0872009798487,-1004.03489640131,-1004.03489640131,5.94417597708554,42.2415916864318,24.9363742557928,35.2748892154652,44.5841758101249,78.4540574653122,57.9102565849224,48.439142437713,82.7357735273924,59.7368986308019,65.8816659359867,86.2690671239712,-22.3118865866957,-22.3118865866957,34.0135295427073,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,9.74183260070259,12.6033374147904,-11.2927061365044,6.49359155273152,27.6621948168156,25.4438495598533,66.4446359369044,48.3624418097024,44.3564104056831,54.6609580245687,50.02069492144,31.7822263191927,84.300935334491,11.8227263230977,55.6003005623927,60.2775545386897,93.6721845520076,71.5998437864305,105.637647564996,71.3923875724517,65.8774578605704,92.0437817127173,75.58796972012,106.408727024305,95.2889844454791,132.894992012272,71.841674414088,77.3775199284386,-1004.03489640131,2.09642019255745,-1004.03489640131,17.8488203688954,-11.2927061371036,7.98386561066536,49.3558235075603,26.6160653380965,25.6209179159651,39.2082757506033,48.4245118896995,31.86769908222,11.7661131947169,62.1873964128244,-1004.03489640131,2.09642019394886,14.6487589343,0.0674819430308276,-1004.03489640131,-1004.03489640131,17.8488203686265,-1004.03489640131,-3.37610189835431,45.6887277886844,19.7626370056832,29.0747921877152,29.7888678870024,18.4118623869763,0.217025254320106,40.3535085741369,67.4795814870575,71.3017569870563,52.7909118543566,10.8842284729205,31.1269461503889,58.9309301081481,14.472612883317,39.730189767963,28.3950033974821,10.8842284729658,31.3337696889882,25.1121229429542,73.6390988135703,3.84229941083208,-5.3917958174261,58.4845535190493,50.3371866765528,8.5911431029046,36.6069463057471,38.4019007598162,48.0098989319283,53.0569290479509,14.4726128820075,32.4571777704739,32.8258800064307,20.9938577041856,62.9141114959777,-22.3118865866957,-22.3118865866957,-22.3118865866957,-9.18572137881705,6.68869760424582,34.9514705960922,15.1894312213601,96.6284954807157,-9.20425961578331,6.7571125444814,42.0932459073928,28.0148305440199,22.4591346846447,32.4416003527506,-7.79078171769623,3.95109190095178,32.0576937223642,3.38675745593162,24.7908238431443,5.13486699569512,5.67287543575185,-6.21987739881001,6.48614489977734,38.9258410821357,7.9398213645461,9.4809051500589,56.6257930751213,45.7494971301226,56.0934383489007,124.364818249116,66.2179535117044,78.5595580004794,115.941515270475,91.8195145555857,14.5267462665565,49.0813288191072,73.1665860419262,66.4235879121048,86.2848122204173,85.0237615358961,74.4417692401076,129.072827003248,45.4211782855838,107.820691042524,106.560414115413,65.2749758325582,66.0612518269076,110.351919135679,133.657200095536,124.02871798734,164.618122778342,143.295070063987,-22.3118865866957,125.286866567413,167.206870076219,128.670420424397,149.335151389059,101.284401838968,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,189.094824455141,-22.3118865866957,-22.3118865866957,-22.3118865866958,169.1503310417,-22.3118865866957,-22.3118865866957,207.550242542316,-22.3118865866957,-22.3118865866957,205.124985853367,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,57.3110920668582,83.6186496049072,79.7748493477665,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,52.3089918464665,30.8997221521129,-3.72696222840335,63.6206516399131,68.7630789093847,27.8732607773815,57.682840413622,38.5678004125347,43.9160522688983,63.9213601317228,86.9134675411592,62.5507954059221,58.2409711794388,78.4813257862671,123.340217206628,96.2270058656176,101.68719302365,125.238229640223,119.302666041622,160.69532608623,139.63732345322,154.196584781469,26.6247045876559,28.1957910599185,33.3916214452844,94.9629279042715,14.8267599096186,-5.31537789436834,33.3775842056455,113.167313235841,98.1964396678895,148.150650908305,146.229898342763,-22.3118865866957,84.3857126287415,64.595888473353,132.310764708529,111.034503849403,105.880261777928,45.0906227521446,41.5702000692108,76.0119194318353,10.9514477851601,64.1937246983898,92.2094414649446,37.0927960852875,55.7983044896501,57.9721780917667,38.238017352515,15.9903111920977,-4.44186718559575,76.8634528898766,77.3500513712026,46.9899633028219,112.024294428727,69.4322040115057,98.5690003558271,81.8535221169006,103.343021782206,71.1887793700487,38.1922001504714,16.8361140174449,54.9794152506233,11.1291969380391,48.2510333624119,-22.3118865866957,134.059772896181,102.633988373431,7.47066646891517,-7.76120450802784,148.702651385051,35.2725682574065,10.8760566333162,103.769207124703,108.584558205041,82.4762969081376,111.333747369104,140.008272226531,119.637926942354,53.0133995693175,69.0122776633632,93.48046637123,123.82065470455,-2.17538648718727,30.4877194726769,57.8491961739253,81.8619055631148,82.0806921298806,-22.3118865866957,81.9764978573661,143.972911736266,129.203801735713,-22.3118865866957,165.380711199236,130.755041172074,144.105141774104,131.768603084792,-22.3118865866958,160.496776905666,110.998339533156,97.6154159592663,165.962923784006,97.8697536666336,120.294138167316,155.286998176178,133.180361202721,143.914427993959,98.1874973164513,92.8872748082143,119.70805241835,83.76012276542,113.767066512325,78.654436755952,103.445083174279,134.818948423154,50.030424278119,87.8427410633602,85.2716767805422,117.193842072871,97.2291357087095,89.7793553454653,81.552265876838,150.130158069731,167.792733445885,145.222375983542,134.950676988781,64.6421181675113,75.4243622866026,107.039914920236,172.971363388437,151.603851258647,80.1775946924533,121.643706760136,133.542100249927,163.209440688717,153.570978880148,185.171468864147,191.744352747078,112.069012548187,89.13582843123,75.489521530191,80.8928702670617,-22.3118865866957,133.813371947464,-22.3118865866958,173.072757643504,-22.3118865866957,151.404394456582,-22.3118865866957,-22.3118865866957,-22.3118865866958,186.842794225428,125.120332772188,110.894990504071,133.487876800215,162.409765286135,32.338789604893,137.000922383199,74.3724521277803,59.8885237442851,95.8706561946358,107.071111326464,127.933019703814,125.946760411667,144.179027577437,187.568536077155,168.720680475072,164.637064573745,165.309466457639,193.005552797276,175.250819165573,194.951362682138,237.876496552214,221.997933390133,214.487637153331,214.526771597227,222.582571044266,-22.3118865866957,243.124519768589,-22.3118865866957,148.960265600981,175.988957504124,169.063972555285,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,161.328054045441,153.081265299424,191.888735708948,48.2469911144827,51.1049869508653,29.2865410655509,6.74286754377272,14.2485746261325,20.5917273334148,-6.60393676078365,-7.33906708218626,8.09623833480697,115.771088269857,89.2461552593629,69.2556698469793,141.418711174504,175.452767184112,197.679048484884,196.798900654555,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,186.018284723395,149.020411318709,182.290717348143,173.397337266187,181.238586478799,206.936226086974,221.883132402739,228.168683489221,-22.3118865866957,212.636504593589,228.492467195201,-22.3118865866958,123.070447616465,136.329489994976,125.950283795707,180.29259927096,158.19624829373,153.814593317637,173.965899740664,204.370738868307,184.496742851761,208.672429926777,207.21116504315,240.036003445492,221.555635415164,-22.3118865866957,-22.3118865866957,242.044608012181,179.687835642647,163.999296182837,203.791627808573,215.564829310416,148.256236161921,169.421351067773,121.943156026546,191.915096770084,170.651811006466,205.81917456683,137.854233245889,190.94178127132,169.347438328254,151.059751030985,162.714538128504,128.456885872335,143.591846379224,113.434977406849,141.59273033209,150.948543710117,187.097855982985,113.075891616281,165.51490656934,131.657211306064,155.562518585006,167.778790409234,189.217532297872,154.901650429128,184.645347298793,210.078384525232,198.466507073285,240.449823907673,-22.3118865866957,232.815081733634,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,107.67738123976,105.127885634911,103.826987131366,87.0035269652008,189.542649952155,193.987896921384,210.571723468924,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,233.340315418878,237.868299647795,233.506897098169,237.215241979543,-22.3118865866957,228.801206476262,95.0209284772066,106.832101453779,75.2560528057624,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,225.371204714401,201.520276060854,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,224.416599341426,203.630201488263,216.278175796255,213.861119017491,197.8686585431,189.601313376317,180.495193662822,-1026.346782988,38.8974145729957,8.07752256008393,45.2836048886647,15.1606947401658,27.7935420792658,48.7699646667651,35.2565825181601,62.2038678723161,76.5147521665165,66.2661719043376,57.4353616767448,82.0372020522045,41.5212489608193,91.2058900631578,53.902281240207,13.785910125567,116.258707783349,110.298083239468,-4.35410514320068,33.8947013333096,71.2990865502966,91.6764472565484,103.618734944368,58.6327413763724,30.9444988079017,20.3188890367212,-6.11308026931141,112.220319308981,134.014385152462,136.510799412065,122.537689991698,98.7091577574195,81.2865619061268,-9.5259524821862,-12.2064541923179,70.0690338154616,58.6799464156607,7.896926408436,-3.35580294529507,45.5848795737924,18.4479175313971,2.41081875295163,2.57434771645541,-22.3118865866957,-22.3118865866957,-1.73029327280381,-22.3118865866958,190.305127172657,196.221031714531,171.532660988827,180.095737410207,161.552124075994,241.084013801906,247.658718560054,121.458440634562,177.647701879244,164.425063223403,230.374387339944,213.760840058251,147.642242189514,41.1829456545146,225.596745385455,-22.3118865866957,222.283730726769,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1.86573461925877,-1004.03489640131,-1004.03489640131,-5.32040408696844,-1004.03489640131,-10.6773780488078,-1004.03489640131,-1004.03489640131,0.382728221620312,-1004.03489640131,-1004.03489640131,-1.70805153437419,-1004.03489640131,-1004.03489640131,-1.86573462011449,-1004.03489640131,-1004.03489640131,-1004.03489640131,0.402599399457984,-1004.03489640131,-1004.03489640131,0.382728222050275,-1004.03489640131,-1026.346782988,-1026.346782988,-22.3118865866957,-1026.346782988,-1004.03489640131,-12.9302953228488,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,13.9234215177135,-22.3118865866958,-6.49415957969711,13.2300547718002,-22.3118865866958,-22.3118865866957,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620097787,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620098423,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201298853,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201642523,-12.1322536834644,-1004.03489640131,-1004.03489640131,-12.1322536835307,-1004.03489640131,7.94246201201122,-1004.03489640131,7.94246201712883,-1026.346782988,-1004.03489640131,7.94246201376984,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201605364,-1004.03489640131,7.94246201517802,-1004.03489640131,-22.3118865866957,-8.50415616914523,-1004.03489640131,-13.3172915499275,20.8012933970991,-1004.03489640131,-6.48431903931799,13.3533221799019,-10.7426316298049,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-6.13899584061471,-10.7255646354427,12.7285795284387,-1004.03489640131,-6.48431904086471,13.3533221795731,-10.7426316282136,-1004.03489640131,8.82622136200843,-10.6244028613748,-13.8349005388457,-22.3118865866957,3.06730449534194,39.8335511594283,30.0880481346721,17.7013607076611,79.3166377725733,6.91505412343815,49.302617060269,55.6737065015006,33.896174672252,30.1818915205478,49.1977067452478,31.4320296162073,28.5827974601651,82.5841809424687,56.0035793430457,75.3638413273682,35.4245742161953,120.813991583567,28.9201819928979,97.5353811488949,112.962430523175,100.397898062442,79.2440478358114,-6.47786147222564,-22.3118865866957,6.01909653183412,-1004.03489640131,-16.1237549139601,-1004.03489640131,-1004.03489640131,-16.1237549147168,-1004.03489640131,-11.4324994449325,-1004.03489640131,24.794812689333,6.01909653028298,-1004.03489640131,-16.1237549133937,-1004.03489640131,-1004.03489640131,-11.4324994442847,-1004.03489640131,24.794812690903,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-11.4324994444304,-1004.03489640131,24.7948126894471,-1004.03489640131,-1004.03489640131,-1004.03489640131,-16.1338695179189,-1026.346782988,-22.3118865866957,-1026.346782988,-22.3118865866957,-1004.03489640131,-6.34574844371337,-1004.03489640131,36.4817071513331,12.9083498609584,22.8148039371792,18.9003815275257,22.6298880681195,52.7842000914906,29.0872009820332,52.7909118540404,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,29.0872009798487,-1004.03489640131,-1004.03489640131,5.94417597708554,42.2415916864318,24.9363742557928,35.2748892154652,44.5841758101249,78.4540574653122,57.9102565849224,48.439142437713,82.7357735273924,59.7368986308019,65.8816659359867,86.2690671239712,-22.3118865866958,-22.3118865866958,34.0135295427073,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,9.74183260070259,12.6033374147904,-11.2927061365044,6.49359155273152,27.6621948168156,25.4438495598533,66.4446359369044,48.3624418097024,44.3564104056831,54.6609580245687,50.02069492144,31.7822263191927,84.3009353344911,11.8227263230977,55.6003005623927,60.2775545386897,93.6721845520077,71.5998437864305,105.637647564996,71.3923875724517,65.8774578605704,92.0437817127173,75.58796972012,106.408727024305,95.2889844454791,132.894992012272,71.841674414088,77.3775199284386,-1004.03489640131,2.09642019255745,-1004.03489640131,17.8488203688954,-11.2927061371036,7.98386561066536,49.3558235075603,26.6160653380965,25.6209179159652,39.2082757506033,48.4245118896995,31.86769908222,11.7661131947169,62.1873964128244,-1004.03489640131,2.09642019394886,14.6487589343,0.0674819430308276,-1004.03489640131,-1004.03489640131,17.8488203686265,-1004.03489640131,-3.37610189835431,45.6887277886844,19.7626370056832,29.0747921877152,29.7888678870024,18.4118623869763,0.217025254320106,40.3535085741369,67.4795814870575,71.3017569870562,52.7909118543566,10.8842284729205,31.1269461503888,58.930930108148,14.472612883317,39.730189767963,28.3950033974821,10.8842284729658,31.3337696889882,25.1121229429542,73.6390988135704,3.84229941083208,-5.3917958174261,58.4845535190493,50.3371866765528,8.5911431029046,36.6069463057471,38.4019007598162,48.0098989319282,53.0569290479509,14.4726128820075,32.4571777704739,32.8258800064307,20.9938577041856,62.9141114959778,-22.3118865866958,-22.3118865866958,-22.3118865866957,-9.18572137881705,6.68869760424582,34.9514705960922,15.1894312213601,96.6284954807158,-9.20425961578331,6.7571125444814,42.0932459073928,28.0148305440199,22.4591346846447,32.4416003527506,-7.79078171769623,3.95109190095178,32.0576937223642,3.38675745593162,24.7908238431443,5.13486699569512,5.67287543575185,-6.21987739881001,6.48614489977734,38.9258410821357,7.93982136454611,9.4809051500589,56.6257930751213,45.7494971301226,56.0934383489007,124.364818249115,66.2179535117044,78.5595580004794,115.941515270475,91.8195145555857,14.5267462665565,49.0813288191072,73.1665860419262,66.4235879121048,86.2848122204173,85.0237615358961,74.4417692401076,129.072827003248,45.4211782855838,107.820691042524,106.560414115413,65.2749758325582,66.0612518269076,110.351919135679,133.657200095536,124.02871798734,164.618122778342,143.295070063987,-22.3118865866958,125.286866567413,167.206870076219,128.670420424397,149.335151389059,101.284401838968,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,189.094824455141,-22.3118865866958,-22.3118865866958,-22.3118865866957,169.1503310417,-22.3118865866957,-22.3118865866958,207.550242542316,-22.3118865866958,-22.3118865866958,205.124985853367,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,57.3110920668582,83.6186496049072,79.7748493477665,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,52.3089918464665,30.8997221521129,-3.72696222840335,63.6206516399131,68.7630789093847,27.8732607773815,57.682840413622,38.5678004125347,43.9160522688983,63.9213601317228,86.9134675411592,62.5507954059221,58.2409711794388,78.4813257862671,123.340217206628,96.2270058656176,101.68719302365,125.238229640223,119.302666041622,160.69532608623,139.63732345322,154.196584781469,26.6247045876559,28.1957910599185,33.3916214452844,94.9629279042715,14.8267599096186,-5.31537789436834,33.3775842056455,113.167313235841,98.1964396678895,148.150650908305,146.229898342763,-22.3118865866958,84.3857126287415,64.595888473353,132.310764708529,111.034503849403,105.880261777928,45.0906227521446,41.5702000692108,76.0119194318353,10.9514477851601,64.1937246983898,92.2094414649446,37.0927960852875,55.7983044896501,57.9721780917667,38.238017352515,15.9903111920977,-4.44186718559575,76.8634528898766,77.3500513712026,46.9899633028219,112.024294428727,69.4322040115057,98.5690003558271,81.8535221169006,103.343021782206,71.1887793700487,38.1922001504714,16.8361140174449,54.9794152506233,11.1291969380391,48.2510333624119,-22.3118865866958,134.059772896181,102.633988373431,7.47066646891517,-7.76120450802784,148.702651385051,35.2725682574065,10.8760566333162,103.769207124703,108.584558205041,82.4762969081376,111.333747369104,140.008272226531,119.637926942354,53.0133995693175,69.0122776633632,93.48046637123,123.82065470455,-2.17538648718727,30.4877194726769,57.8491961739253,81.8619055631148,82.0806921298806,-22.3118865866958,81.9764978573661,143.972911736266,129.203801735713,-22.3118865866958,165.380711199236,130.755041172074,144.105141774104,131.768603084792,-22.3118865866957,160.496776905666,110.998339533156,97.6154159592663,165.962923784006,97.8697536666336,120.294138167316,155.286998176178,133.180361202721,143.914427993959,98.1874973164513,92.8872748082143,119.70805241835,83.76012276542,113.767066512325,78.654436755952,103.44508317428,134.818948423154,50.030424278119,87.8427410633602,85.2716767805423,117.193842072871,97.2291357087095,89.7793553454653,81.552265876838,150.130158069731,167.792733445885,145.222375983542,134.950676988781,64.6421181675113,75.4243622866026,107.039914920236,172.971363388437,151.603851258647,80.1775946924533,121.643706760136,133.542100249927,163.209440688717,153.570978880148,185.171468864147,191.744352747078,112.069012548187,89.13582843123,75.489521530191,80.8928702670617,-22.3118865866958,133.813371947464,-22.3118865866957,173.072757643504,-22.3118865866958,151.404394456582,-22.3118865866957,-22.3118865866958,-22.3118865866957,186.842794225428,125.120332772188,110.894990504071,133.487876800215,162.409765286135,32.338789604893,137.000922383199,74.3724521277802,59.8885237442851,95.8706561946358,107.071111326464,127.933019703814,125.946760411667,144.179027577437,187.568536077155,168.720680475072,164.637064573745,165.309466457639,193.005552797276,175.250819165573,194.951362682138,237.876496552215,221.997933390132,214.487637153331,214.526771597227,222.582571044266,-22.3118865866958,243.124519768589,-22.3118865866958,148.960265600981,175.988957504124,169.063972555284,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,161.328054045441,153.081265299424,191.888735708948,48.2469911144827,51.1049869508653,29.2865410655509,6.74286754377272,14.2485746261325,20.5917273334148,-6.60393676078365,-7.33906708218626,8.09623833480697,115.771088269857,89.2461552593629,69.2556698469793,141.418711174504,175.452767184112,197.679048484884,196.798900654555,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,186.018284723395,149.020411318709,182.290717348143,173.397337266187,181.238586478799,206.936226086974,221.883132402739,228.168683489221,-22.3118865866958,212.636504593589,228.492467195201,-22.3118865866957,123.070447616465,136.329489994976,125.950283795707,180.29259927096,158.19624829373,153.814593317637,173.965899740664,204.370738868307,184.496742851761,208.672429926777,207.21116504315,240.036003445492,221.555635415164,-22.3118865866957,-22.3118865866958,242.044608012181,179.687835642647,163.999296182837,203.791627808573,215.564829310416,148.256236161921,169.421351067773,121.943156026546,191.915096770084,170.651811006466,205.81917456683,137.854233245889,190.94178127132,169.347438328254,151.059751030985,162.714538128504,128.456885872335,143.591846379224,113.434977406849,141.59273033209,150.948543710117,187.097855982985,113.075891616281,165.51490656934,131.657211306064,155.562518585006,167.778790409234,189.217532297872,154.901650429128,184.645347298793,210.078384525232,198.466507073285,240.449823907674,-22.3118865866958,232.815081733634,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,107.67738123976,105.127885634911,103.826987131366,87.0035269652007,189.542649952155,193.987896921384,210.571723468924,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,233.340315418878,237.868299647795,233.506897098169,237.215241979543,-22.3118865866957,228.801206476262,95.0209284772065,106.832101453779,75.2560528057624,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,225.371204714401,201.520276060854,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,224.416599341426,203.630201488263,216.278175796255,213.861119017491,197.8686585431,189.601313376317,180.495193662822,-1026.346782988,38.8974145729957,8.07752256008394,45.2836048886647,15.1606947401658,27.7935420792658,48.7699646667651,35.2565825181601,62.2038678723161,76.5147521665165,66.2661719043376,57.4353616767448,82.0372020522045,41.5212489608193,91.2058900631578,53.9022812402069,13.785910125567,116.258707783349,110.298083239468,-4.35410514320068,33.8947013333096,71.2990865502966,91.6764472565484,103.618734944368,58.6327413763724,30.9444988079017,20.3188890367212,-6.11308026931141,112.220319308981,134.014385152462,136.510799412065,122.537689991698,98.7091577574195,81.2865619061269,-9.5259524821862,-12.2064541923179,70.0690338154616,58.6799464156607,7.896926408436,-3.35580294529507,45.5848795737924,18.4479175313971,2.41081875295163,2.57434771645541,-22.3118865866958,-22.3118865866957,-1.73029327280381,-22.3118865866957,190.305127172657,196.221031714531,171.532660988827,180.095737410207,161.552124075994,241.084013801906,247.658718560054,121.458440634562,177.647701879244,164.425063223403,230.374387339944,213.760840058251,147.642242189514,41.1829456545146,225.596745385455,-22.3118865866957,222.283730726769,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1.86573461925877,-1004.03489640131,-1004.03489640131,-5.32040408696844,-1004.03489640131,-10.6773780488078,-1004.03489640131,-1004.03489640131,0.382728221620312,-1004.03489640131,-1004.03489640131,-1.70805153437419,-1004.03489640131,-1004.03489640131,-1.86573462011449,-1004.03489640131,-1004.03489640131,-1004.03489640131,0.402599399457984,-1004.03489640131,-1004.03489640131,0.382728222050275,-1004.03489640131,-1026.346782988,-1026.346782988,-22.3118865866957,-1026.346782988,-1004.03489640131,-12.9302953228488,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,13.9234215177135,-22.3118865866957,-6.49415957969711,13.2300547718002,-22.3118865866957,-22.3118865866957,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246200977869,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620098423,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201298853,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201642523,-12.1322536834644,-1004.03489640131,-1004.03489640131,-12.1322536835307,-1004.03489640131,7.94246201201122,-1004.03489640131,7.94246201712883,-1026.346782988,-1004.03489640131,7.94246201376984,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201605364,-1004.03489640131,7.94246201517802,-1004.03489640131,-22.3118865866958,-8.50415616914523,-1004.03489640131,-13.3172915499275,20.8012933970991,-1004.03489640131,-6.484319039318,13.3533221799019,-10.7426316298049,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-6.13899584061471,-10.7255646354427,12.7285795284387,-1004.03489640131,-6.48431904086471,13.3533221795731,-10.7426316282136,-1004.03489640131,8.82622136200843,-10.6244028613748,-13.8349005388457,-22.3118865866958,3.06730449534194,39.8335511594283,30.0880481346721,17.7013607076611,79.3166377725732,6.91505412343815,49.302617060269,55.6737065015006,33.896174672252,30.1818915205478,49.1977067452478,31.4320296162073,28.5827974601651,82.5841809424686,56.0035793430457,75.3638413273682,35.4245742161953,120.813991583567,28.9201819928979,97.5353811488949,112.962430523175,100.397898062442,79.2440478358114,-6.47786147222564,-22.3118865866958,6.01909653183412,-1004.03489640131,-16.1237549139601,-1004.03489640131,-1004.03489640131,-16.1237549147168,-1004.03489640131,-11.4324994449325,-1004.03489640131,24.794812689333,6.01909653028298,-1004.03489640131,-16.1237549133937,-1004.03489640131,-1004.03489640131,-11.4324994442847,-1004.03489640131,24.794812690903,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-11.4324994444304,-1004.03489640131,24.7948126894471,-1004.03489640131,-1004.03489640131,-1004.03489640131,-16.1338695179189,-1026.346782988,-22.3118865866958,-1026.346782988,-22.3118865866958,-1004.03489640131,-6.34574844371338,-1004.03489640131,36.4817071513331,12.9083498609584,22.8148039371792,18.9003815275257,22.6298880681195,52.7842000914906,29.0872009820332,52.7909118540404,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,29.0872009798487,-1004.03489640131,-1004.03489640131,5.94417597708554,42.2415916864318,24.9363742557928,35.2748892154652,44.5841758101249,78.4540574653122,57.9102565849224,48.439142437713,82.7357735273924,59.7368986308019,65.8816659359867,86.2690671239712,-22.3118865866957,-22.3118865866957,34.0135295427073,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,9.74183260070259,12.6033374147904,-11.2927061365044,6.49359155273152,27.6621948168156,25.4438495598533,66.4446359369044,48.3624418097024,44.3564104056831,54.6609580245687,50.02069492144,31.7822263191927,84.300935334491,11.8227263230977,55.6003005623927,60.2775545386897,93.6721845520076,71.5998437864305,105.637647564996,71.3923875724517,65.8774578605704,92.0437817127173,75.58796972012,106.408727024305,95.2889844454791,132.894992012272,71.841674414088,77.3775199284386,-1004.03489640131,2.09642019255745,-1004.03489640131,17.8488203688954,-11.2927061371036,7.98386561066536,49.3558235075603,26.6160653380965,25.6209179159651,39.2082757506033,48.4245118896995,31.86769908222,11.7661131947169,62.1873964128244,-1004.03489640131,2.09642019394886,14.6487589343,0.0674819430308276,-1004.03489640131,-1004.03489640131,17.8488203686265,-1004.03489640131,-3.37610189835431,45.6887277886844,19.7626370056832,29.0747921877152,29.7888678870024,18.4118623869763,0.217025254320106,40.3535085741369,67.4795814870575,71.3017569870563,52.7909118543566,10.8842284729205,31.1269461503889,58.9309301081481,14.472612883317,39.730189767963,28.3950033974821,10.8842284729658,31.3337696889882,25.1121229429542,73.6390988135703,3.84229941083208,-5.3917958174261,58.4845535190493,50.3371866765528,8.5911431029046,36.6069463057471,38.4019007598162,48.0098989319283,53.0569290479509,14.4726128820075,32.4571777704739,32.8258800064307,20.9938577041856,62.9141114959777,-22.3118865866957,-22.3118865866957,-22.3118865866957,-9.18572137881705,6.68869760424582,34.9514705960922,15.1894312213601,96.6284954807157,-9.20425961578331,6.7571125444814,42.0932459073928,28.0148305440199,22.4591346846447,32.4416003527506,-7.79078171769623,3.95109190095178,32.0576937223642,3.38675745593162,24.7908238431443,5.13486699569512,5.67287543575185,-6.21987739881001,6.48614489977734,38.9258410821357,7.9398213645461,9.4809051500589,56.6257930751213,45.7494971301226,56.0934383489007,124.364818249116,66.2179535117044,78.5595580004794,115.941515270475,91.8195145555857,14.5267462665565,49.0813288191072,73.1665860419262,66.4235879121048,86.2848122204173,85.0237615358961,74.4417692401076,129.072827003248,45.4211782855838,107.820691042524,106.560414115413,65.2749758325582,66.0612518269076,110.351919135679,133.657200095536,124.02871798734,164.618122778342,143.295070063987,-22.3118865866957,125.286866567413,167.206870076219,128.670420424397,149.335151389059,101.284401838968,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,189.094824455141,-22.3118865866957,-22.3118865866957,-22.3118865866958,169.1503310417,-22.3118865866957,-22.3118865866957,207.550242542316,-22.3118865866957,-22.3118865866957,205.124985853367,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,57.3110920668582,83.6186496049072,79.7748493477665,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,52.3089918464665,30.8997221521129,-3.72696222840335,63.6206516399131,68.7630789093847,27.8732607773815,57.682840413622,38.5678004125347,43.9160522688983,63.9213601317228,86.9134675411592,62.5507954059221,58.2409711794388,78.4813257862671,123.340217206628,96.2270058656176,101.68719302365,125.238229640223,119.302666041622,160.69532608623,139.63732345322,154.196584781469,26.6247045876559,28.1957910599185,33.3916214452844,94.9629279042715,14.8267599096186,-5.31537789436834,33.3775842056455,113.167313235841,98.1964396678895,148.150650908305,146.229898342763,-22.3118865866957,84.3857126287415,64.595888473353,132.310764708529,111.034503849403,105.880261777928,45.0906227521446,41.5702000692108,76.0119194318353,10.9514477851601,64.1937246983898,92.2094414649446,37.0927960852875,55.7983044896501,57.9721780917667,38.238017352515,15.9903111920977,-4.44186718559575,76.8634528898766,77.3500513712026,46.9899633028219,112.024294428727,69.4322040115057,98.5690003558271,81.8535221169006,103.343021782206,71.1887793700487,38.1922001504714,16.8361140174449,54.9794152506233,11.1291969380391,48.2510333624119,-22.3118865866957,134.059772896181,102.633988373431,7.47066646891517,-7.76120450802784,148.702651385051,35.2725682574065,10.8760566333162,103.769207124703,108.584558205041,82.4762969081376,111.333747369104,140.008272226531,119.637926942354,53.0133995693175,69.0122776633632,93.48046637123,123.82065470455,-2.17538648718727,30.4877194726769,57.8491961739253,81.8619055631148,82.0806921298806,-22.3118865866957,81.9764978573661,143.972911736266,129.203801735713,-22.3118865866957,165.380711199236,130.755041172074,144.105141774104,131.768603084792,-22.3118865866958,160.496776905666,110.998339533156,97.6154159592663,165.962923784006,97.8697536666336,120.294138167316,155.286998176178,133.180361202721,143.914427993959,98.1874973164513,92.8872748082143,119.70805241835,83.76012276542,113.767066512325,78.654436755952,103.445083174279,134.818948423154,50.030424278119,87.8427410633602,85.2716767805422,117.193842072871,97.2291357087095,89.7793553454653,81.552265876838,150.130158069731,167.792733445885,145.222375983542,134.950676988781,64.6421181675113,75.4243622866026,107.039914920236,172.971363388437,151.603851258647,80.1775946924533,121.643706760136,133.542100249927,163.209440688717,153.570978880148,185.171468864147,191.744352747078,112.069012548187,89.13582843123,75.489521530191,80.8928702670617,-22.3118865866957,133.813371947464,-22.3118865866958,173.072757643504,-22.3118865866957,151.404394456582,-22.3118865866957,-22.3118865866957,-22.3118865866958,186.842794225428,125.120332772188,110.894990504071,133.487876800215,162.409765286135,32.338789604893,137.000922383199,74.3724521277803,59.8885237442851,95.8706561946358,107.071111326464,127.933019703814,125.946760411667,144.179027577437,187.568536077155,168.720680475072,164.637064573745,165.309466457639,193.005552797276,175.250819165573,194.951362682138,237.876496552214,221.997933390133,214.487637153331,214.526771597227,222.582571044266,-22.3118865866957,243.124519768589,-22.3118865866957,148.960265600981,175.988957504124,169.063972555285,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,161.328054045441,153.081265299424,191.888735708948,48.2469911144827,51.1049869508653,29.2865410655509,6.74286754377272,14.2485746261325,20.5917273334148,-6.60393676078365,-7.33906708218626,8.09623833480697,115.771088269857,89.2461552593629,69.2556698469793,141.418711174504,175.452767184112,197.679048484884,196.798900654555,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,186.018284723395,149.020411318709,182.290717348143,173.397337266187,181.238586478799,206.936226086974,221.883132402739,228.168683489221,-22.3118865866957,212.636504593589,228.492467195201,-22.3118865866958,123.070447616465,136.329489994976,125.950283795707,180.29259927096,158.19624829373,153.814593317637,173.965899740664,204.370738868307,184.496742851761,208.672429926777,207.21116504315,240.036003445492,221.555635415164,-22.3118865866957,-22.3118865866957,242.044608012181,179.687835642647,163.999296182837,203.791627808573,215.564829310416,148.256236161921,169.421351067773,121.943156026546,191.915096770084,170.651811006466,205.81917456683,137.854233245889,190.94178127132,169.347438328254,151.059751030985,162.714538128504,128.456885872335,143.591846379224,113.434977406849,141.59273033209,150.948543710117,187.097855982985,113.075891616281,165.51490656934,131.657211306064,155.562518585006,167.778790409234,189.217532297872,154.901650429128,184.645347298793,210.078384525232,198.466507073285,240.449823907673,-22.3118865866957,232.815081733634,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,107.67738123976,105.127885634911,103.826987131366,87.0035269652008,189.542649952155,193.987896921384,210.571723468924,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,233.340315418878,237.868299647795,233.506897098169,237.215241979543,-22.3118865866957,228.801206476262,95.0209284772066,106.832101453779,75.2560528057624,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,225.371204714401,201.520276060854,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,224.416599341426,203.630201488263,216.278175796255,213.861119017491,197.8686585431,189.601313376317,180.495193662822,-1026.346782988,38.8974145729957,8.07752256008393,45.2836048886647,15.1606947401658,27.7935420792658,48.7699646667651,35.2565825181601,62.2038678723161,76.5147521665165,66.2661719043376,57.4353616767448,82.0372020522045,41.5212489608193,91.2058900631578,53.902281240207,13.785910125567,116.258707783349,110.298083239468,-4.35410514320068,33.8947013333096,71.2990865502966,91.6764472565484,103.618734944368,58.6327413763724,30.9444988079017,20.3188890367212,-6.11308026931141,112.220319308981,134.014385152462,136.510799412065,122.537689991698,98.7091577574195,81.2865619061268,-9.5259524821862,-12.2064541923179,70.0690338154616,58.6799464156607,7.896926408436,-3.35580294529507,45.5848795737924,18.4479175313971,2.41081875295163,2.57434771645541,-22.3118865866957,-22.3118865866957,-1.73029327280381,-22.3118865866958,190.305127172657,196.221031714531,171.532660988827,180.095737410207,161.552124075994,241.084013801906,247.658718560054,121.458440634562,177.647701879244,164.425063223403,230.374387339944,213.760840058251,147.642242189514,41.1829456545146,225.596745385455,-22.3118865866957,222.283730726769],"Archive433_field2":[-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1.86573461925877,-1004.03489640131,-1004.03489640131,-5.32040408696844,-1004.03489640131,-10.6773780488078,-1004.03489640131,-1004.03489640131,0.382728221620312,-1004.03489640131,-1004.03489640131,-1.70805153437419,-1004.03489640131,-1004.03489640131,-1.86573462011449,-1004.03489640131,-1004.03489640131,-1004.03489640131,0.402599399457984,-1004.03489640131,-1004.03489640131,0.382728222050275,-1004.03489640131,-1026.346782988,-1026.346782988,-22.3118865866957,-1026.346782988,-1004.03489640131,-12.9302953228488,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,13.9234215177135,-22.3118865866957,-6.49415957969711,13.2300547718002,-22.3118865866957,-22.3118865866957,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246200977869,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620098423,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201298853,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201642523,-12.1322536834644,-1004.03489640131,-1004.03489640131,-12.1322536835307,-1004.03489640131,7.94246201201122,-1004.03489640131,7.94246201712883,-1026.346782988,-1004.03489640131,7.94246201376984,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201605364,-1004.03489640131,7.94246201517802,-1004.03489640131,-22.3118865866958,-8.50415616914523,-1004.03489640131,-13.3172915499275,20.8012933970991,-1004.03489640131,-6.484319039318,13.3533221799019,-10.7426316298049,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-6.13899584061471,-10.7255646354427,12.7285795284387,-1004.03489640131,-6.48431904086471,13.3533221795731,-10.7426316282136,-1004.03489640131,8.82622136200843,-10.6244028613748,-13.8349005388457,-22.3118865866958,3.06730449534194,39.8335511594283,30.0880481346721,17.7013607076611,79.3166377725732,6.91505412343815,49.302617060269,55.6737065015006,33.896174672252,30.1818915205478,49.1977067452478,31.4320296162073,28.5827974601651,82.5841809424686,56.0035793430457,75.3638413273682,35.4245742161953,120.813991583567,28.9201819928979,97.5353811488949,112.962430523175,100.397898062442,79.2440478358114,-6.47786147222564,-22.3118865866958,6.01909653183412,-1004.03489640131,-16.1237549139601,-1004.03489640131,-1004.03489640131,-16.1237549147168,-1004.03489640131,-11.4324994449325,-1004.03489640131,24.794812689333,6.01909653028298,-1004.03489640131,-16.1237549133937,-1004.03489640131,-1004.03489640131,-11.4324994442847,-1004.03489640131,24.794812690903,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-11.4324994444304,-1004.03489640131,24.7948126894471,-1004.03489640131,-1004.03489640131,-1004.03489640131,-16.1338695179189,-1026.346782988,-22.3118865866958,-1026.346782988,-22.3118865866958,-1004.03489640131,-6.34574844371338,-1004.03489640131,36.4817071513331,12.9083498609584,22.8148039371792,18.9003815275257,22.6298880681195,52.7842000914906,29.0872009820332,52.7909118540404,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,29.0872009798487,-1004.03489640131,-1004.03489640131,5.94417597708554,42.2415916864318,24.9363742557928,35.2748892154652,44.5841758101249,78.4540574653122,57.9102565849224,48.439142437713,82.7357735273924,59.7368986308019,65.8816659359867,86.2690671239712,-22.3118865866957,-22.3118865866957,34.0135295427073,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,9.74183260070259,12.6033374147904,-11.2927061365044,6.49359155273152,27.6621948168156,25.4438495598533,66.4446359369044,48.3624418097024,44.3564104056831,54.6609580245687,50.02069492144,31.7822263191927,84.300935334491,11.8227263230977,55.6003005623927,60.2775545386897,93.6721845520076,71.5998437864305,105.637647564996,71.3923875724517,65.8774578605704,92.0437817127173,75.58796972012,106.408727024305,95.2889844454791,132.894992012272,71.841674414088,77.3775199284386,-1004.03489640131,2.09642019255745,-1004.03489640131,17.8488203688954,-11.2927061371036,7.98386561066536,49.3558235075603,26.6160653380965,25.6209179159651,39.2082757506033,48.4245118896995,31.86769908222,11.7661131947169,62.1873964128244,-1004.03489640131,2.09642019394886,14.6487589343,0.0674819430308276,-1004.03489640131,-1004.03489640131,17.8488203686265,-1004.03489640131,-3.37610189835431,45.6887277886844,19.7626370056832,29.0747921877152,29.7888678870024,18.4118623869763,0.217025254320106,40.3535085741369,67.4795814870575,71.3017569870563,52.7909118543566,10.8842284729205,31.1269461503889,58.9309301081481,14.472612883317,39.730189767963,28.3950033974821,10.8842284729658,31.3337696889882,25.1121229429542,73.6390988135703,3.84229941083208,-5.3917958174261,58.4845535190493,50.3371866765528,8.5911431029046,36.6069463057471,38.4019007598162,48.0098989319283,53.0569290479509,14.4726128820075,32.4571777704739,32.8258800064307,20.9938577041856,62.9141114959777,-22.3118865866957,-22.3118865866957,-22.3118865866957,-9.18572137881705,6.68869760424582,34.9514705960922,15.1894312213601,96.6284954807157,-9.20425961578331,6.7571125444814,42.0932459073928,28.0148305440199,22.4591346846447,32.4416003527506,-7.79078171769623,3.95109190095178,32.0576937223642,3.38675745593162,24.7908238431443,5.13486699569512,5.67287543575185,-6.21987739881001,6.48614489977734,38.9258410821357,7.9398213645461,9.4809051500589,56.6257930751213,45.7494971301226,56.0934383489007,124.364818249116,66.2179535117044,78.5595580004794,115.941515270475,91.8195145555857,14.5267462665565,49.0813288191072,73.1665860419262,66.4235879121048,86.2848122204173,85.0237615358961,74.4417692401076,129.072827003248,45.4211782855838,107.820691042524,106.560414115413,65.2749758325582,66.0612518269076,110.351919135679,133.657200095536,124.02871798734,164.618122778342,143.295070063987,-22.3118865866957,125.286866567413,167.206870076219,128.670420424397,149.335151389059,101.284401838968,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,189.094824455141,-22.3118865866957,-22.3118865866957,-22.3118865866958,169.1503310417,-22.3118865866957,-22.3118865866957,207.550242542316,-22.3118865866957,-22.3118865866957,205.124985853367,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,57.3110920668582,83.6186496049072,79.7748493477665,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,52.3089918464665,30.8997221521129,-3.72696222840335,63.6206516399131,68.7630789093847,27.8732607773815,57.682840413622,38.5678004125347,43.9160522688983,63.9213601317228,86.9134675411592,62.5507954059221,58.2409711794388,78.4813257862671,123.340217206628,96.2270058656176,101.68719302365,125.238229640223,119.302666041622,160.69532608623,139.63732345322,154.196584781469,26.6247045876559,28.1957910599185,33.3916214452844,94.9629279042715,14.8267599096186,-5.31537789436834,33.3775842056455,113.167313235841,98.1964396678895,148.150650908305,146.229898342763,-22.3118865866957,84.3857126287415,64.595888473353,132.310764708529,111.034503849403,105.880261777928,45.0906227521446,41.5702000692108,76.0119194318353,10.9514477851601,64.1937246983898,92.2094414649446,37.0927960852875,55.7983044896501,57.9721780917667,38.238017352515,15.9903111920977,-4.44186718559575,76.8634528898766,77.3500513712026,46.9899633028219,112.024294428727,69.4322040115057,98.5690003558271,81.8535221169006,103.343021782206,71.1887793700487,38.1922001504714,16.8361140174449,54.9794152506233,11.1291969380391,48.2510333624119,1,134.059772896181,102.633988373431,7.47066646891517,-7.76120450802784,148.702651385051,35.2725682574065,10.8760566333162,103.769207124703,108.584558205041,82.4762969081376,111.333747369104,140.008272226531,119.637926942354,53.0133995693175,69.0122776633632,93.48046637123,123.82065470455,-2.17538648718727,30.4877194726769,57.8491961739253,81.8619055631148,82.0806921298806,1,81.9764978573661,143.972911736266,129.203801735713,1,165.380711199236,130.755041172074,144.105141774104,131.768603084792,1,160.496776905666,110.998339533156,97.6154159592663,165.962923784006,97.8697536666336,120.294138167316,155.286998176178,133.180361202721,143.914427993959,98.1874973164513,92.8872748082143,119.70805241835,83.76012276542,113.767066512325,78.654436755952,103.445083174279,134.818948423154,50.030424278119,87.8427410633602,85.2716767805422,117.193842072871,97.2291357087095,89.7793553454653,81.552265876838,150.130158069731,167.792733445885,145.222375983542,134.950676988781,64.6421181675113,75.4243622866026,107.039914920236,172.971363388437,151.603851258647,80.1775946924533,121.643706760136,133.542100249927,163.209440688717,153.570978880148,185.171468864147,191.744352747078,112.069012548187,89.13582843123,75.489521530191,80.8928702670617,-22.3118865866957,133.813371947464,-22.3118865866958,173.072757643504,-22.3118865866957,151.404394456582,-22.3118865866957,-22.3118865866957,-22.3118865866958,186.842794225428,125.120332772188,110.894990504071,133.487876800215,162.409765286135,32.338789604893,137.000922383199,74.3724521277803,59.8885237442851,95.8706561946358,107.071111326464,127.933019703814,125.946760411667,144.179027577437,187.568536077155,168.720680475072,164.637064573745,165.309466457639,193.005552797276,175.250819165573,194.951362682138,237.876496552214,221.997933390133,214.487637153331,214.526771597227,222.582571044266,-22.3118865866957,243.124519768589,-22.3118865866957,148.960265600981,175.988957504124,169.063972555285,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,161.328054045441,153.081265299424,191.888735708948,48.2469911144827,51.1049869508653,29.2865410655509,6.74286754377272,14.2485746261325,20.5917273334148,-6.60393676078365,-7.33906708218626,8.09623833480697,115.771088269857,89.2461552593629,69.2556698469793,141.418711174504,175.452767184112,197.679048484884,196.798900654555,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,186.018284723395,149.020411318709,182.290717348143,173.397337266187,181.238586478799,206.936226086974,221.883132402739,228.168683489221,-22.3118865866957,212.636504593589,228.492467195201,-22.3118865866958,123.070447616465,136.329489994976,125.950283795707,180.29259927096,158.19624829373,153.814593317637,173.965899740664,204.370738868307,184.496742851761,208.672429926777,207.21116504315,240.036003445492,221.555635415164,-22.3118865866957,-22.3118865866957,242.044608012181,179.687835642647,163.999296182837,203.791627808573,215.564829310416,148.256236161921,169.421351067773,121.943156026546,191.915096770084,170.651811006466,205.81917456683,137.854233245889,190.94178127132,169.347438328254,151.059751030985,162.714538128504,128.456885872335,143.591846379224,113.434977406849,141.59273033209,150.948543710117,187.097855982985,113.075891616281,165.51490656934,131.657211306064,155.562518585006,167.778790409234,189.217532297872,154.901650429128,184.645347298793,210.078384525232,198.466507073285,240.449823907673,-22.3118865866957,232.815081733634,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,107.67738123976,105.127885634911,103.826987131366,87.0035269652008,189.542649952155,193.987896921384,210.571723468924,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,233.340315418878,237.868299647795,233.506897098169,237.215241979543,-22.3118865866957,228.801206476262,95.0209284772066,106.832101453779,75.2560528057624,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,225.371204714401,201.520276060854,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,224.416599341426,203.630201488263,216.278175796255,213.861119017491,197.8686585431,189.601313376317,180.495193662822,-1026.346782988,38.8974145729957,8.07752256008393,45.2836048886647,15.1606947401658,27.7935420792658,48.7699646667651,35.2565825181601,62.2038678723161,76.5147521665165,66.2661719043376,57.4353616767448,82.0372020522045,41.5212489608193,91.2058900631578,53.902281240207,13.785910125567,116.258707783349,110.298083239468,-4.35410514320068,33.8947013333096,71.2990865502966,91.6764472565484,103.618734944368,58.6327413763724,30.9444988079017,20.3188890367212,-6.11308026931141,112.220319308981,134.014385152462,136.510799412065,122.537689991698,98.7091577574195,81.2865619061268,-9.5259524821862,-12.2064541923179,70.0690338154616,58.6799464156607,7.896926408436,-3.35580294529507,45.5848795737924,18.4479175313971,2.41081875295163,2.57434771645541,-22.3118865866957,-22.3118865866957,-1.73029327280381,-22.3118865866958,190.305127172657,196.221031714531,171.532660988827,180.095737410207,161.552124075994,241.084013801906,247.658718560054,121.458440634562,177.647701879244,164.425063223403,230.374387339944,213.760840058251,147.642242189514,41.1829456545146,225.596745385455,-22.3118865866957,222.283730726769,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1.86573461925877,-1004.03489640131,-1004.03489640131,-5.32040408696844,-1004.03489640131,-10.6773780488078,-1004.03489640131,-1004.03489640131,0.382728221620312,-1004.03489640131,-1004.03489640131,-1.70805153437419,-1004.03489640131,-1004.03489640131,-1.86573462011449,-1004.03489640131,-1004.03489640131,-1004.03489640131,0.402599399457984,-1004.03489640131,-1004.03489640131,0.382728222050275,-1004.03489640131,-1026.346782988,-1026.346782988,-22.3118865866957,-1026.346782988,-1004.03489640131,-12.9302953228488,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,13.9234215177135,-22.3118865866958,-6.49415957969711,13.2300547718002,-22.3118865866958,-22.3118865866957,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620097787,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620098423,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201298853,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201642523,-12.1322536834644,-1004.03489640131,-1004.03489640131,-12.1322536835307,-1004.03489640131,7.94246201201122,-1004.03489640131,7.94246201712883,-1026.346782988,-1004.03489640131,7.94246201376984,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201605364,-1004.03489640131,7.94246201517802,-1004.03489640131,-22.3118865866957,-8.50415616914523,-1004.03489640131,-13.3172915499275,20.8012933970991,-1004.03489640131,-6.48431903931799,13.3533221799019,-10.7426316298049,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-6.13899584061471,-10.7255646354427,12.7285795284387,-1004.03489640131,-6.48431904086471,13.3533221795731,-10.7426316282136,-1004.03489640131,8.82622136200843,-10.6244028613748,-13.8349005388457,-22.3118865866957,3.06730449534194,39.8335511594283,30.0880481346721,17.7013607076611,79.3166377725733,6.91505412343815,49.302617060269,55.6737065015006,33.896174672252,30.1818915205478,49.1977067452478,31.4320296162073,28.5827974601651,82.5841809424687,56.0035793430457,75.3638413273682,35.4245742161953,120.813991583567,28.9201819928979,97.5353811488949,112.962430523175,100.397898062442,79.2440478358114,-6.47786147222564,-22.3118865866957,6.01909653183412,-1004.03489640131,-16.1237549139601,-1004.03489640131,-1004.03489640131,-16.1237549147168,-1004.03489640131,-11.4324994449325,-1004.03489640131,24.794812689333,6.01909653028298,-1004.03489640131,-16.1237549133937,-1004.03489640131,-1004.03489640131,-11.4324994442847,-1004.03489640131,24.794812690903,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-11.4324994444304,-1004.03489640131,24.7948126894471,-1004.03489640131,-1004.03489640131,-1004.03489640131,-16.1338695179189,-1026.346782988,-22.3118865866957,-1026.346782988,-22.3118865866957,-1004.03489640131,-6.34574844371337,-1004.03489640131,36.4817071513331,12.9083498609584,22.8148039371792,18.9003815275257,22.6298880681195,52.7842000914906,29.0872009820332,52.7909118540404,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,29.0872009798487,-1004.03489640131,-1004.03489640131,5.94417597708554,42.2415916864318,24.9363742557928,35.2748892154652,44.5841758101249,78.4540574653122,57.9102565849224,48.439142437713,82.7357735273924,59.7368986308019,65.8816659359867,86.2690671239712,-22.3118865866958,-22.3118865866958,34.0135295427073,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,9.74183260070259,12.6033374147904,-11.2927061365044,6.49359155273152,27.6621948168156,25.4438495598533,66.4446359369044,48.3624418097024,44.3564104056831,54.6609580245687,50.02069492144,31.7822263191927,84.3009353344911,11.8227263230977,55.6003005623927,60.2775545386897,93.6721845520077,71.5998437864305,105.637647564996,71.3923875724517,65.8774578605704,92.0437817127173,75.58796972012,106.408727024305,95.2889844454791,132.894992012272,71.841674414088,77.3775199284386,-1004.03489640131,2.09642019255745,-1004.03489640131,17.8488203688954,-11.2927061371036,7.98386561066536,49.3558235075603,26.6160653380965,25.6209179159652,39.2082757506033,48.4245118896995,31.86769908222,11.7661131947169,62.1873964128244,-1004.03489640131,2.09642019394886,14.6487589343,0.0674819430308276,-1004.03489640131,-1004.03489640131,17.8488203686265,-1004.03489640131,-3.37610189835431,45.6887277886844,19.7626370056832,29.0747921877152,29.7888678870024,18.4118623869763,0.217025254320106,40.3535085741369,67.4795814870575,71.3017569870562,52.7909118543566,10.8842284729205,31.1269461503888,58.930930108148,14.472612883317,39.730189767963,28.3950033974821,10.8842284729658,31.3337696889882,25.1121229429542,73.6390988135704,3.84229941083208,-5.3917958174261,58.4845535190493,50.3371866765528,8.5911431029046,36.6069463057471,38.4019007598162,48.0098989319282,53.0569290479509,14.4726128820075,32.4571777704739,32.8258800064307,20.9938577041856,62.9141114959778,-22.3118865866958,-22.3118865866958,-22.3118865866957,-9.18572137881705,6.68869760424582,34.9514705960922,15.1894312213601,96.6284954807158,-9.20425961578331,6.7571125444814,42.0932459073928,28.0148305440199,22.4591346846447,32.4416003527506,-7.79078171769623,3.95109190095178,32.0576937223642,3.38675745593162,24.7908238431443,5.13486699569512,5.67287543575185,-6.21987739881001,6.48614489977734,38.9258410821357,7.93982136454611,9.4809051500589,56.6257930751213,45.7494971301226,56.0934383489007,124.364818249115,66.2179535117044,78.5595580004794,115.941515270475,91.8195145555857,14.5267462665565,49.0813288191072,73.1665860419262,66.4235879121048,86.2848122204173,85.0237615358961,74.4417692401076,129.072827003248,45.4211782855838,107.820691042524,106.560414115413,65.2749758325582,66.0612518269076,110.351919135679,133.657200095536,124.02871798734,164.618122778342,143.295070063987,-22.3118865866958,125.286866567413,167.206870076219,128.670420424397,149.335151389059,101.284401838968,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,189.094824455141,-22.3118865866958,-22.3118865866958,-22.3118865866957,169.1503310417,-22.3118865866957,-22.3118865866958,207.550242542316,-22.3118865866958,-22.3118865866958,205.124985853367,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,57.3110920668582,83.6186496049072,79.7748493477665,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,52.3089918464665,30.8997221521129,-3.72696222840335,63.6206516399131,68.7630789093847,27.8732607773815,57.682840413622,38.5678004125347,43.9160522688983,63.9213601317228,86.9134675411592,62.5507954059221,58.2409711794388,78.4813257862671,123.340217206628,96.2270058656176,101.68719302365,125.238229640223,119.302666041622,160.69532608623,139.63732345322,154.196584781469,26.6247045876559,28.1957910599185,33.3916214452844,94.9629279042715,14.8267599096186,-5.31537789436834,33.3775842056455,113.167313235841,98.1964396678895,148.150650908305,146.229898342763,-22.3118865866958,84.3857126287415,64.595888473353,132.310764708529,111.034503849403,105.880261777928,45.0906227521446,41.5702000692108,76.0119194318353,10.9514477851601,64.1937246983898,92.2094414649446,37.0927960852875,55.7983044896501,57.9721780917667,38.238017352515,15.9903111920977,-4.44186718559575,76.8634528898766,77.3500513712026,46.9899633028219,112.024294428727,69.4322040115057,98.5690003558271,81.8535221169006,103.343021782206,71.1887793700487,38.1922001504714,16.8361140174449,54.9794152506233,11.1291969380391,48.2510333624119,1,134.059772896181,102.633988373431,7.47066646891517,-7.76120450802784,148.702651385051,35.2725682574065,10.8760566333162,103.769207124703,108.584558205041,82.4762969081376,111.333747369104,140.008272226531,119.637926942354,53.0133995693175,69.0122776633632,93.48046637123,123.82065470455,-2.17538648718727,30.4877194726769,57.8491961739253,81.8619055631148,82.0806921298806,1,81.9764978573661,143.972911736266,129.203801735713,1,165.380711199236,130.755041172074,144.105141774104,131.768603084792,1,160.496776905666,110.998339533156,97.6154159592663,165.962923784006,97.8697536666336,120.294138167316,155.286998176178,133.180361202721,143.914427993959,98.1874973164513,92.8872748082143,119.70805241835,83.76012276542,113.767066512325,78.654436755952,103.44508317428,134.818948423154,50.030424278119,87.8427410633602,85.2716767805423,117.193842072871,97.2291357087095,89.7793553454653,81.552265876838,150.130158069731,167.792733445885,145.222375983542,134.950676988781,64.6421181675113,75.4243622866026,107.039914920236,172.971363388437,151.603851258647,80.1775946924533,121.643706760136,133.542100249927,163.209440688717,153.570978880148,185.171468864147,191.744352747078,112.069012548187,89.13582843123,75.489521530191,80.8928702670617,-22.3118865866958,133.813371947464,-22.3118865866957,173.072757643504,-22.3118865866958,151.404394456582,-22.3118865866957,-22.3118865866958,-22.3118865866957,186.842794225428,125.120332772188,110.894990504071,133.487876800215,162.409765286135,32.338789604893,137.000922383199,74.3724521277802,59.8885237442851,95.8706561946358,107.071111326464,127.933019703814,125.946760411667,144.179027577437,187.568536077155,168.720680475072,164.637064573745,165.309466457639,193.005552797276,175.250819165573,194.951362682138,237.876496552215,221.997933390132,214.487637153331,214.526771597227,222.582571044266,-22.3118865866958,243.124519768589,-22.3118865866958,148.960265600981,175.988957504124,169.063972555284,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,161.328054045441,153.081265299424,191.888735708948,48.2469911144827,51.1049869508653,29.2865410655509,6.74286754377272,14.2485746261325,20.5917273334148,-6.60393676078365,-7.33906708218626,8.09623833480697,115.771088269857,89.2461552593629,69.2556698469793,141.418711174504,175.452767184112,197.679048484884,196.798900654555,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,186.018284723395,149.020411318709,182.290717348143,173.397337266187,181.238586478799,206.936226086974,221.883132402739,228.168683489221,-22.3118865866958,212.636504593589,228.492467195201,-22.3118865866957,123.070447616465,136.329489994976,125.950283795707,180.29259927096,158.19624829373,153.814593317637,173.965899740664,204.370738868307,184.496742851761,208.672429926777,207.21116504315,240.036003445492,221.555635415164,-22.3118865866957,-22.3118865866958,242.044608012181,179.687835642647,163.999296182837,203.791627808573,215.564829310416,148.256236161921,169.421351067773,121.943156026546,191.915096770084,170.651811006466,205.81917456683,137.854233245889,190.94178127132,169.347438328254,151.059751030985,162.714538128504,128.456885872335,143.591846379224,113.434977406849,141.59273033209,150.948543710117,187.097855982985,113.075891616281,165.51490656934,131.657211306064,155.562518585006,167.778790409234,189.217532297872,154.901650429128,184.645347298793,210.078384525232,198.466507073285,240.449823907674,-22.3118865866958,232.815081733634,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,107.67738123976,105.127885634911,103.826987131366,87.0035269652007,189.542649952155,193.987896921384,210.571723468924,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,233.340315418878,237.868299647795,233.506897098169,237.215241979543,-22.3118865866957,228.801206476262,95.0209284772065,106.832101453779,75.2560528057624,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,225.371204714401,201.520276060854,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,224.416599341426,203.630201488263,216.278175796255,213.861119017491,197.8686585431,189.601313376317,180.495193662822,-1026.346782988,38.8974145729957,8.07752256008394,45.2836048886647,15.1606947401658,27.7935420792658,48.7699646667651,35.2565825181601,62.2038678723161,76.5147521665165,66.2661719043376,57.4353616767448,82.0372020522045,41.5212489608193,91.2058900631578,53.9022812402069,13.785910125567,116.258707783349,110.298083239468,-4.35410514320068,33.8947013333096,71.2990865502966,91.6764472565484,103.618734944368,58.6327413763724,30.9444988079017,20.3188890367212,-6.11308026931141,112.220319308981,134.014385152462,136.510799412065,122.537689991698,98.7091577574195,81.2865619061269,-9.5259524821862,-12.2064541923179,70.0690338154616,58.6799464156607,7.896926408436,-3.35580294529507,45.5848795737924,18.4479175313971,2.41081875295163,2.57434771645541,-22.3118865866958,-22.3118865866957,-1.73029327280381,-22.3118865866957,190.305127172657,196.221031714531,171.532660988827,180.095737410207,161.552124075994,241.084013801906,247.658718560054,121.458440634562,177.647701879244,164.425063223403,230.374387339944,213.760840058251,147.642242189514,41.1829456545146,225.596745385455,-22.3118865866957,222.283730726769,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1.86573461925877,-1004.03489640131,-1004.03489640131,-5.32040408696844,-1004.03489640131,-10.6773780488078,-1004.03489640131,-1004.03489640131,0.382728221620312,-1004.03489640131,-1004.03489640131,-1.70805153437419,-1004.03489640131,-1004.03489640131,-1.86573462011449,-1004.03489640131,-1004.03489640131,-1004.03489640131,0.402599399457984,-1004.03489640131,-1004.03489640131,0.382728222050275,-1004.03489640131,-1026.346782988,-1026.346782988,-22.3118865866957,-1026.346782988,-1004.03489640131,-12.9302953228488,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,13.9234215177135,-22.3118865866957,-6.49415957969711,13.2300547718002,-22.3118865866957,-22.3118865866957,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246200977869,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620098423,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201298853,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201642523,-12.1322536834644,-1004.03489640131,-1004.03489640131,-12.1322536835307,-1004.03489640131,7.94246201201122,-1004.03489640131,7.94246201712883,-1026.346782988,-1004.03489640131,7.94246201376984,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201605364,-1004.03489640131,7.94246201517802,-1004.03489640131,-22.3118865866958,-8.50415616914523,-1004.03489640131,-13.3172915499275,20.8012933970991,-1004.03489640131,-6.484319039318,13.3533221799019,-10.7426316298049,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-6.13899584061471,-10.7255646354427,12.7285795284387,-1004.03489640131,-6.48431904086471,13.3533221795731,-10.7426316282136,-1004.03489640131,8.82622136200843,-10.6244028613748,-13.8349005388457,-22.3118865866958,3.06730449534194,39.8335511594283,30.0880481346721,17.7013607076611,79.3166377725732,6.91505412343815,49.302617060269,55.6737065015006,33.896174672252,30.1818915205478,49.1977067452478,31.4320296162073,28.5827974601651,82.5841809424686,56.0035793430457,75.3638413273682,35.4245742161953,120.813991583567,28.9201819928979,97.5353811488949,112.962430523175,100.397898062442,79.2440478358114,-6.47786147222564,-22.3118865866958,6.01909653183412,-1004.03489640131,-16.1237549139601,-1004.03489640131,-1004.03489640131,-16.1237549147168,-1004.03489640131,-11.4324994449325,-1004.03489640131,24.794812689333,6.01909653028298,-1004.03489640131,-16.1237549133937,-1004.03489640131,-1004.03489640131,-11.4324994442847,-1004.03489640131,24.794812690903,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-11.4324994444304,-1004.03489640131,24.7948126894471,-1004.03489640131,-1004.03489640131,-1004.03489640131,-16.1338695179189,-1026.346782988,-22.3118865866958,-1026.346782988,-22.3118865866958,-1004.03489640131,-6.34574844371338,-1004.03489640131,36.4817071513331,12.9083498609584,22.8148039371792,18.9003815275257,22.6298880681195,52.7842000914906,29.0872009820332,52.7909118540404,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,29.0872009798487,-1004.03489640131,-1004.03489640131,5.94417597708554,42.2415916864318,24.9363742557928,35.2748892154652,44.5841758101249,78.4540574653122,57.9102565849224,48.439142437713,82.7357735273924,59.7368986308019,65.8816659359867,86.2690671239712,-22.3118865866957,-22.3118865866957,34.0135295427073,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,9.74183260070259,12.6033374147904,-11.2927061365044,6.49359155273152,27.6621948168156,25.4438495598533,66.4446359369044,48.3624418097024,44.3564104056831,54.6609580245687,50.02069492144,31.7822263191927,84.300935334491,11.8227263230977,55.6003005623927,60.2775545386897,93.6721845520076,71.5998437864305,105.637647564996,71.3923875724517,65.8774578605704,92.0437817127173,75.58796972012,106.408727024305,95.2889844454791,132.894992012272,71.841674414088,77.3775199284386,-1004.03489640131,2.09642019255745,-1004.03489640131,17.8488203688954,-11.2927061371036,7.98386561066536,49.3558235075603,26.6160653380965,25.6209179159651,39.2082757506033,48.4245118896995,31.86769908222,11.7661131947169,62.1873964128244,-1004.03489640131,2.09642019394886,14.6487589343,0.0674819430308276,-1004.03489640131,-1004.03489640131,17.8488203686265,-1004.03489640131,-3.37610189835431,45.6887277886844,19.7626370056832,29.0747921877152,29.7888678870024,18.4118623869763,0.217025254320106,40.3535085741369,67.4795814870575,71.3017569870563,52.7909118543566,10.8842284729205,31.1269461503889,58.9309301081481,14.472612883317,39.730189767963,28.3950033974821,10.8842284729658,31.3337696889882,25.1121229429542,73.6390988135703,3.84229941083208,-5.3917958174261,58.4845535190493,50.3371866765528,8.5911431029046,36.6069463057471,38.4019007598162,48.0098989319283,53.0569290479509,14.4726128820075,32.4571777704739,32.8258800064307,20.9938577041856,62.9141114959777,-22.3118865866957,-22.3118865866957,-22.3118865866957,-9.18572137881705,6.68869760424582,34.9514705960922,15.1894312213601,96.6284954807157,-9.20425961578331,6.7571125444814,42.0932459073928,28.0148305440199,22.4591346846447,32.4416003527506,-7.79078171769623,3.95109190095178,32.0576937223642,3.38675745593162,24.7908238431443,5.13486699569512,5.67287543575185,-6.21987739881001,6.48614489977734,38.9258410821357,7.9398213645461,9.4809051500589,56.6257930751213,45.7494971301226,56.0934383489007,124.364818249116,66.2179535117044,78.5595580004794,115.941515270475,91.8195145555857,14.5267462665565,49.0813288191072,73.1665860419262,66.4235879121048,86.2848122204173,85.0237615358961,74.4417692401076,129.072827003248,45.4211782855838,107.820691042524,106.560414115413,65.2749758325582,66.0612518269076,110.351919135679,133.657200095536,124.02871798734,164.618122778342,143.295070063987,-22.3118865866957,125.286866567413,167.206870076219,128.670420424397,149.335151389059,101.284401838968,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,189.094824455141,-22.3118865866957,-22.3118865866957,-22.3118865866958,169.1503310417,-22.3118865866957,-22.3118865866957,207.550242542316,-22.3118865866957,-22.3118865866957,205.124985853367,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,57.3110920668582,83.6186496049072,79.7748493477665,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,52.3089918464665,30.8997221521129,-3.72696222840335,63.6206516399131,68.7630789093847,27.8732607773815,57.682840413622,38.5678004125347,43.9160522688983,63.9213601317228,86.9134675411592,62.5507954059221,58.2409711794388,78.4813257862671,123.340217206628,96.2270058656176,101.68719302365,125.238229640223,119.302666041622,160.69532608623,139.63732345322,154.196584781469,26.6247045876559,28.1957910599185,33.3916214452844,94.9629279042715,14.8267599096186,-5.31537789436834,33.3775842056455,113.167313235841,98.1964396678895,148.150650908305,146.229898342763,-22.3118865866957,84.3857126287415,64.595888473353,132.310764708529,111.034503849403,105.880261777928,45.0906227521446,41.5702000692108,76.0119194318353,10.9514477851601,64.1937246983898,92.2094414649446,37.0927960852875,55.7983044896501,57.9721780917667,38.238017352515,15.9903111920977,-4.44186718559575,76.8634528898766,77.3500513712026,46.9899633028219,112.024294428727,69.4322040115057,98.5690003558271,81.8535221169006,103.343021782206,71.1887793700487,38.1922001504714,16.8361140174449,54.9794152506233,11.1291969380391,48.2510333624119,1,134.059772896181,102.633988373431,7.47066646891517,-7.76120450802784,148.702651385051,35.2725682574065,10.8760566333162,103.769207124703,108.584558205041,82.4762969081376,111.333747369104,140.008272226531,119.637926942354,53.0133995693175,69.0122776633632,93.48046637123,123.82065470455,-2.17538648718727,30.4877194726769,57.8491961739253,81.8619055631148,82.0806921298806,1,81.9764978573661,143.972911736266,129.203801735713,1,165.380711199236,130.755041172074,144.105141774104,131.768603084792,1,160.496776905666,110.998339533156,97.6154159592663,165.962923784006,97.8697536666336,120.294138167316,155.286998176178,133.180361202721,143.914427993959,98.1874973164513,92.8872748082143,119.70805241835,83.76012276542,113.767066512325,78.654436755952,103.445083174279,134.818948423154,50.030424278119,87.8427410633602,85.2716767805422,117.193842072871,97.2291357087095,89.7793553454653,81.552265876838,150.130158069731,167.792733445885,145.222375983542,134.950676988781,64.6421181675113,75.4243622866026,107.039914920236,172.971363388437,151.603851258647,80.1775946924533,121.643706760136,133.542100249927,163.209440688717,153.570978880148,185.171468864147,191.744352747078,112.069012548187,89.13582843123,75.489521530191,80.8928702670617,-22.3118865866957,133.813371947464,-22.3118865866958,173.072757643504,-22.3118865866957,151.404394456582,-22.3118865866957,-22.3118865866957,-22.3118865866958,186.842794225428,125.120332772188,110.894990504071,133.487876800215,162.409765286135,32.338789604893,137.000922383199,74.3724521277803,59.8885237442851,95.8706561946358,107.071111326464,127.933019703814,125.946760411667,144.179027577437,187.568536077155,168.720680475072,164.637064573745,165.309466457639,193.005552797276,175.250819165573,194.951362682138,237.876496552214,221.997933390133,214.487637153331,214.526771597227,222.582571044266,-22.3118865866957,243.124519768589,-22.3118865866957,148.960265600981,175.988957504124,169.063972555285,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,161.328054045441,153.081265299424,191.888735708948,48.2469911144827,51.1049869508653,29.2865410655509,6.74286754377272,14.2485746261325,20.5917273334148,-6.60393676078365,-7.33906708218626,8.09623833480697,115.771088269857,89.2461552593629,69.2556698469793,141.418711174504,175.452767184112,197.679048484884,196.798900654555,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,186.018284723395,149.020411318709,182.290717348143,173.397337266187,181.238586478799,206.936226086974,221.883132402739,228.168683489221,-22.3118865866957,212.636504593589,228.492467195201,-22.3118865866958,123.070447616465,136.329489994976,125.950283795707,180.29259927096,158.19624829373,153.814593317637,173.965899740664,204.370738868307,184.496742851761,208.672429926777,207.21116504315,240.036003445492,221.555635415164,-22.3118865866957,-22.3118865866957,242.044608012181,179.687835642647,163.999296182837,203.791627808573,215.564829310416,148.256236161921,169.421351067773,121.943156026546,191.915096770084,170.651811006466,205.81917456683,137.854233245889,190.94178127132,169.347438328254,151.059751030985,162.714538128504,128.456885872335,143.591846379224,113.434977406849,141.59273033209,150.948543710117,187.097855982985,113.075891616281,165.51490656934,131.657211306064,155.562518585006,167.778790409234,189.217532297872,154.901650429128,184.645347298793,210.078384525232,198.466507073285,240.449823907673,-22.3118865866957,232.815081733634,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,107.67738123976,105.127885634911,103.826987131366,87.0035269652008,189.542649952155,193.987896921384,210.571723468924,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,233.340315418878,237.868299647795,233.506897098169,237.215241979543,-22.3118865866957,228.801206476262,95.0209284772066,106.832101453779,75.2560528057624,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,225.371204714401,201.520276060854,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,224.416599341426,203.630201488263,216.278175796255,213.861119017491,197.8686585431,189.601313376317,180.495193662822,-1026.346782988,38.8974145729957,8.07752256008393,45.2836048886647,15.1606947401658,27.7935420792658,48.7699646667651,35.2565825181601,62.2038678723161,76.5147521665165,66.2661719043376,57.4353616767448,82.0372020522045,41.5212489608193,91.2058900631578,53.902281240207,13.785910125567,116.258707783349,110.298083239468,-4.35410514320068,33.8947013333096,71.2990865502966,91.6764472565484,103.618734944368,58.6327413763724,30.9444988079017,20.3188890367212,-6.11308026931141,112.220319308981,134.014385152462,136.510799412065,122.537689991698,98.7091577574195,81.2865619061268,-9.5259524821862,-12.2064541923179,70.0690338154616,58.6799464156607,7.896926408436,-3.35580294529507,45.5848795737924,18.4479175313971,2.41081875295163,2.57434771645541,-22.3118865866957,-22.3118865866957,-1.73029327280381,-22.3118865866958,190.305127172657,196.221031714531,171.532660988827,180.095737410207,161.552124075994,241.084013801906,247.658718560054,121.458440634562,177.647701879244,164.425063223403,230.374387339944,213.760840058251,147.642242189514,41.1829456545146,225.596745385455,-22.3118865866957,222.283730726769],"Archive433_field3":[-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1.86573461925877,-1004.03489640131,-1004.03489640131,-5.32040408696844,-1004.03489640131,-10.6773780488078,-1004.03489640131,-1004.03489640131,0.382728221620312,-1004.03489640131,-1004.03489640131,-1.70805153437419,-1004.03489640131,-1004.03489640131,-1.86573462011449,-1004.03489640131,-1004.03489640131,-1004.03489640131,0.402599399457984,-1004.03489640131,-1004.03489640131,0.382728222050275,-1004.03489640131,-1026.346782988,-1026.346782988,-22.3118865866957,-1026.346782988,-1004.03489640131,-12.9302953228488,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,13.9234215177135,-22.3118865866957,-6.49415957969711,13.2300547718002,-22.3118865866957,-22.3118865866957,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246200977869,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620098423,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201298853,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201642523,-12.1322536834644,-1004.03489640131,-1004.03489640131,-12.1322536835307,-1004.03489640131,7.94246201201122,-1004.03489640131,7.94246201712883,-1026.346782988,-1004.03489640131,7.94246201376984,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201605364,-1004.03489640131,7.94246201517802,-1004.03489640131,-22.3118865866958,-8.50415616914523,-1004.03489640131,-13.3172915499275,20.8012933970991,-1004.03489640131,-6.484319039318,13.3533221799019,-10.7426316298049,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-6.13899584061471,-10.7255646354427,12.7285795284387,-1004.03489640131,-6.48431904086471,13.3533221795731,-10.7426316282136,-1004.03489640131,8.82622136200843,-10.6244028613748,-13.8349005388457,-22.3118865866958,3.06730449534194,39.8335511594283,30.0880481346721,17.7013607076611,79.3166377725732,6.91505412343815,49.302617060269,55.6737065015006,33.896174672252,30.1818915205478,49.1977067452478,31.4320296162073,28.5827974601651,82.5841809424686,56.0035793430457,75.3638413273682,35.4245742161953,120.813991583567,28.9201819928979,97.5353811488949,112.962430523175,100.397898062442,79.2440478358114,-6.47786147222564,-22.3118865866958,6.01909653183412,-1004.03489640131,-16.1237549139601,-1004.03489640131,-1004.03489640131,-16.1237549147168,-1004.03489640131,-11.4324994449325,-1004.03489640131,24.794812689333,6.01909653028298,-1004.03489640131,-16.1237549133937,-1004.03489640131,-1004.03489640131,-11.4324994442847,-1004.03489640131,24.794812690903,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-11.4324994444304,-1004.03489640131,24.7948126894471,-1004.03489640131,-1004.03489640131,-1004.03489640131,-16.1338695179189,-1026.346782988,-22.3118865866958,-1026.346782988,-22.3118865866958,-1004.03489640131,-6.34574844371338,-1004.03489640131,36.4817071513331,12.9083498609584,22.8148039371792,18.9003815275257,22.6298880681195,52.7842000914906,29.0872009820332,52.7909118540404,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,29.0872009798487,-1004.03489640131,-1004.03489640131,5.94417597708554,42.2415916864318,24.9363742557928,35.2748892154652,44.5841758101249,78.4540574653122,57.9102565849224,48.439142437713,82.7357735273924,59.7368986308019,65.8816659359867,86.2690671239712,-22.3118865866957,-22.3118865866957,34.0135295427073,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,9.74183260070259,12.6033374147904,-11.2927061365044,6.49359155273152,27.6621948168156,25.4438495598533,66.4446359369044,48.3624418097024,44.3564104056831,54.6609580245687,50.02069492144,31.7822263191927,84.300935334491,11.8227263230977,55.6003005623927,60.2775545386897,93.6721845520076,71.5998437864305,105.637647564996,71.3923875724517,65.8774578605704,92.0437817127173,75.58796972012,106.408727024305,95.2889844454791,132.894992012272,71.841674414088,77.3775199284386,-1004.03489640131,2.09642019255745,-1004.03489640131,17.8488203688954,-11.2927061371036,7.98386561066536,49.3558235075603,26.6160653380965,25.6209179159651,39.2082757506033,48.4245118896995,31.86769908222,11.7661131947169,62.1873964128244,-1004.03489640131,2.09642019394886,14.6487589343,0.0674819430308276,-1004.03489640131,-1004.03489640131,17.8488203686265,-1004.03489640131,-3.37610189835431,45.6887277886844,19.7626370056832,29.0747921877152,29.7888678870024,18.4118623869763,0.217025254320106,40.3535085741369,67.4795814870575,71.3017569870563,52.7909118543566,10.8842284729205,31.1269461503889,58.9309301081481,14.472612883317,39.730189767963,28.3950033974821,10.8842284729658,31.3337696889882,25.1121229429542,73.6390988135703,3.84229941083208,-5.3917958174261,58.4845535190493,50.3371866765528,8.5911431029046,36.6069463057471,38.4019007598162,48.0098989319283,53.0569290479509,14.4726128820075,32.4571777704739,32.8258800064307,20.9938577041856,62.9141114959777,-22.3118865866957,-22.3118865866957,-22.3118865866957,-9.18572137881705,6.68869760424582,34.9514705960922,15.1894312213601,96.6284954807157,-9.20425961578331,6.7571125444814,42.0932459073928,28.0148305440199,22.4591346846447,32.4416003527506,-7.79078171769623,3.95109190095178,32.0576937223642,3.38675745593162,24.7908238431443,5.13486699569512,5.67287543575185,-6.21987739881001,6.48614489977734,38.9258410821357,7.9398213645461,9.4809051500589,56.6257930751213,45.7494971301226,56.0934383489007,124.364818249116,66.2179535117044,78.5595580004794,115.941515270475,91.8195145555857,14.5267462665565,49.0813288191072,73.1665860419262,66.4235879121048,86.2848122204173,85.0237615358961,74.4417692401076,129.072827003248,45.4211782855838,107.820691042524,106.560414115413,65.2749758325582,66.0612518269076,110.351919135679,133.657200095536,124.02871798734,164.618122778342,143.295070063987,-22.3118865866957,125.286866567413,167.206870076219,128.670420424397,149.335151389059,101.284401838968,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,189.094824455141,-22.3118865866957,-22.3118865866957,-22.3118865866958,169.1503310417,-22.3118865866957,-22.3118865866957,207.550242542316,-22.3118865866957,-22.3118865866957,205.124985853367,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,57.3110920668582,83.6186496049072,79.7748493477665,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,52.3089918464665,30.8997221521129,-3.72696222840335,63.6206516399131,68.7630789093847,27.8732607773815,57.682840413622,38.5678004125347,43.9160522688983,63.9213601317228,86.9134675411592,62.5507954059221,58.2409711794388,78.4813257862671,123.340217206628,96.2270058656176,101.68719302365,125.238229640223,119.302666041622,160.69532608623,139.63732345322,154.196584781469,26.6247045876559,28.1957910599185,33.3916214452844,94.9629279042715,14.8267599096186,-5.31537789436834,33.3775842056455,113.167313235841,98.1964396678895,148.150650908305,146.229898342763,-22.3118865866957,84.3857126287415,64.595888473353,132.310764708529,111.034503849403,105.880261777928,45.0906227521446,41.5702000692108,76.0119194318353,10.9514477851601,64.1937246983898,92.2094414649446,37.0927960852875,55.7983044896501,57.9721780917667,38.238017352515,15.9903111920977,-4.44186718559575,76.8634528898766,77.3500513712026,46.9899633028219,112.024294428727,69.4322040115057,98.5690003558271,81.8535221169006,103.343021782206,71.1887793700487,38.1922001504714,16.8361140174449,54.9794152506233,11.1291969380391,48.2510333624119,-22.3118865866957,134.059772896181,102.633988373431,7.47066646891517,-7.76120450802784,148.702651385051,35.2725682574065,10.8760566333162,103.769207124703,108.584558205041,82.4762969081376,111.333747369104,140.008272226531,119.637926942354,53.0133995693175,69.0122776633632,93.48046637123,123.82065470455,-2.17538648718727,30.4877194726769,57.8491961739253,81.8619055631148,82.0806921298806,-22.3118865866957,81.9764978573661,143.972911736266,129.203801735713,-22.3118865866957,165.380711199236,130.755041172074,144.105141774104,131.768603084792,-22.3118865866958,160.496776905666,110.998339533156,97.6154159592663,165.962923784006,97.8697536666336,120.294138167316,155.286998176178,133.180361202721,143.914427993959,98.1874973164513,92.8872748082143,119.70805241835,83.76012276542,113.767066512325,78.654436755952,103.445083174279,134.818948423154,50.030424278119,87.8427410633602,85.2716767805422,117.193842072871,97.2291357087095,89.7793553454653,81.552265876838,150.130158069731,167.792733445885,145.222375983542,134.950676988781,64.6421181675113,75.4243622866026,107.039914920236,172.971363388437,151.603851258647,80.1775946924533,121.643706760136,133.542100249927,163.209440688717,153.570978880148,185.171468864147,191.744352747078,112.069012548187,89.13582843123,75.489521530191,80.8928702670617,-22.3118865866957,133.813371947464,-22.3118865866958,173.072757643504,-22.3118865866957,151.404394456582,-22.3118865866957,-22.3118865866957,-22.3118865866958,186.842794225428,125.120332772188,110.894990504071,133.487876800215,162.409765286135,32.338789604893,137.000922383199,74.3724521277803,59.8885237442851,95.8706561946358,107.071111326464,127.933019703814,125.946760411667,144.179027577437,187.568536077155,168.720680475072,164.637064573745,165.309466457639,193.005552797276,175.250819165573,194.951362682138,237.876496552214,221.997933390133,214.487637153331,214.526771597227,222.582571044266,-22.3118865866957,243.124519768589,-22.3118865866957,148.960265600981,175.988957504124,169.063972555285,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,161.328054045441,153.081265299424,191.888735708948,48.2469911144827,51.1049869508653,29.2865410655509,6.74286754377272,14.2485746261325,20.5917273334148,-6.60393676078365,-7.33906708218626,8.09623833480697,115.771088269857,89.2461552593629,69.2556698469793,141.418711174504,175.452767184112,197.679048484884,196.798900654555,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,186.018284723395,149.020411318709,182.290717348143,173.397337266187,181.238586478799,206.936226086974,221.883132402739,228.168683489221,-22.3118865866957,212.636504593589,228.492467195201,-22.3118865866958,123.070447616465,136.329489994976,125.950283795707,180.29259927096,158.19624829373,153.814593317637,173.965899740664,204.370738868307,184.496742851761,208.672429926777,207.21116504315,240.036003445492,221.555635415164,-22.3118865866957,-22.3118865866957,242.044608012181,179.687835642647,163.999296182837,203.791627808573,215.564829310416,148.256236161921,169.421351067773,121.943156026546,191.915096770084,170.651811006466,205.81917456683,137.854233245889,190.94178127132,169.347438328254,151.059751030985,162.714538128504,128.456885872335,143.591846379224,113.434977406849,141.59273033209,150.948543710117,187.097855982985,113.075891616281,165.51490656934,131.657211306064,155.562518585006,167.778790409234,189.217532297872,154.901650429128,184.645347298793,210.078384525232,198.466507073285,240.449823907673,-22.3118865866957,232.815081733634,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,107.67738123976,105.127885634911,103.826987131366,87.0035269652008,189.542649952155,193.987896921384,210.571723468924,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,233.340315418878,237.868299647795,233.506897098169,237.215241979543,-22.3118865866957,228.801206476262,95.0209284772066,106.832101453779,75.2560528057624,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,225.371204714401,201.520276060854,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,224.416599341426,203.630201488263,216.278175796255,213.861119017491,197.8686585431,189.601313376317,180.495193662822,-1026.346782988,38.8974145729957,8.07752256008393,45.2836048886647,15.1606947401658,27.7935420792658,48.7699646667651,35.2565825181601,62.2038678723161,76.5147521665165,66.2661719043376,57.4353616767448,82.0372020522045,41.5212489608193,91.2058900631578,53.902281240207,13.785910125567,116.258707783349,110.298083239468,-4.35410514320068,33.8947013333096,71.2990865502966,91.6764472565484,103.618734944368,58.6327413763724,30.9444988079017,20.3188890367212,-6.11308026931141,112.220319308981,134.014385152462,136.510799412065,122.537689991698,98.7091577574195,81.2865619061268,-9.5259524821862,-12.2064541923179,70.0690338154616,58.6799464156607,7.896926408436,-3.35580294529507,45.5848795737924,18.4479175313971,2.41081875295163,2.57434771645541,-22.3118865866957,-22.3118865866957,-1.73029327280381,-22.3118865866958,190.305127172657,196.221031714531,171.532660988827,180.095737410207,161.552124075994,241.084013801906,247.658718560054,121.458440634562,177.647701879244,164.425063223403,230.374387339944,213.760840058251,147.642242189514,41.1829456545146,225.596745385455,-22.3118865866957,222.283730726769,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1.86573461925877,-1004.03489640131,-1004.03489640131,-5.32040408696844,-1004.03489640131,-10.6773780488078,-1004.03489640131,-1004.03489640131,0.382728221620312,-1004.03489640131,-1004.03489640131,-1.70805153437419,-1004.03489640131,-1004.03489640131,-1.86573462011449,-1004.03489640131,-1004.03489640131,-1004.03489640131,0.402599399457984,-1004.03489640131,-1004.03489640131,0.382728222050275,-1004.03489640131,-1026.346782988,-1026.346782988,-22.3118865866957,-1026.346782988,-1004.03489640131,-12.9302953228488,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,13.9234215177135,-22.3118865866958,-6.49415957969711,13.2300547718002,-22.3118865866958,-22.3118865866957,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620097787,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620098423,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201298853,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201642523,-12.1322536834644,-1004.03489640131,-1004.03489640131,-12.1322536835307,-1004.03489640131,7.94246201201122,-1004.03489640131,7.94246201712883,-1026.346782988,-1004.03489640131,7.94246201376984,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201605364,-1004.03489640131,7.94246201517802,-1004.03489640131,-22.3118865866957,-8.50415616914523,-1004.03489640131,-13.3172915499275,20.8012933970991,-1004.03489640131,-6.48431903931799,13.3533221799019,-10.7426316298049,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-6.13899584061471,-10.7255646354427,12.7285795284387,-1004.03489640131,-6.48431904086471,13.3533221795731,-10.7426316282136,-1004.03489640131,8.82622136200843,-10.6244028613748,-13.8349005388457,-22.3118865866957,3.06730449534194,39.8335511594283,30.0880481346721,17.7013607076611,79.3166377725733,6.91505412343815,49.302617060269,55.6737065015006,33.896174672252,30.1818915205478,49.1977067452478,31.4320296162073,28.5827974601651,82.5841809424687,56.0035793430457,75.3638413273682,35.4245742161953,120.813991583567,28.9201819928979,97.5353811488949,112.962430523175,100.397898062442,79.2440478358114,-6.47786147222564,-22.3118865866957,6.01909653183412,-1004.03489640131,-16.1237549139601,-1004.03489640131,-1004.03489640131,-16.1237549147168,-1004.03489640131,-11.4324994449325,-1004.03489640131,24.794812689333,6.01909653028298,-1004.03489640131,-16.1237549133937,-1004.03489640131,-1004.03489640131,-11.4324994442847,-1004.03489640131,24.794812690903,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-11.4324994444304,-1004.03489640131,24.7948126894471,-1004.03489640131,-1004.03489640131,-1004.03489640131,-16.1338695179189,-1026.346782988,-22.3118865866957,-1026.346782988,-22.3118865866957,-1004.03489640131,-6.34574844371337,-1004.03489640131,36.4817071513331,12.9083498609584,22.8148039371792,18.9003815275257,22.6298880681195,52.7842000914906,29.0872009820332,52.7909118540404,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,29.0872009798487,-1004.03489640131,-1004.03489640131,5.94417597708554,42.2415916864318,24.9363742557928,35.2748892154652,44.5841758101249,78.4540574653122,57.9102565849224,48.439142437713,82.7357735273924,59.7368986308019,65.8816659359867,86.2690671239712,-22.3118865866958,-22.3118865866958,34.0135295427073,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,9.74183260070259,12.6033374147904,-11.2927061365044,6.49359155273152,27.6621948168156,25.4438495598533,66.4446359369044,48.3624418097024,44.3564104056831,54.6609580245687,50.02069492144,31.7822263191927,84.3009353344911,11.8227263230977,55.6003005623927,60.2775545386897,93.6721845520077,71.5998437864305,105.637647564996,71.3923875724517,65.8774578605704,92.0437817127173,75.58796972012,106.408727024305,95.2889844454791,132.894992012272,71.841674414088,77.3775199284386,-1004.03489640131,2.09642019255745,-1004.03489640131,17.8488203688954,-11.2927061371036,7.98386561066536,49.3558235075603,26.6160653380965,25.6209179159652,39.2082757506033,48.4245118896995,31.86769908222,11.7661131947169,62.1873964128244,-1004.03489640131,2.09642019394886,14.6487589343,0.0674819430308276,-1004.03489640131,-1004.03489640131,17.8488203686265,-1004.03489640131,-3.37610189835431,45.6887277886844,19.7626370056832,29.0747921877152,29.7888678870024,18.4118623869763,0.217025254320106,40.3535085741369,67.4795814870575,71.3017569870562,52.7909118543566,10.8842284729205,31.1269461503888,58.930930108148,14.472612883317,39.730189767963,28.3950033974821,10.8842284729658,31.3337696889882,25.1121229429542,73.6390988135704,3.84229941083208,-5.3917958174261,58.4845535190493,50.3371866765528,8.5911431029046,36.6069463057471,38.4019007598162,48.0098989319282,53.0569290479509,14.4726128820075,32.4571777704739,32.8258800064307,20.9938577041856,62.9141114959778,-22.3118865866958,-22.3118865866958,-22.3118865866957,-9.18572137881705,6.68869760424582,34.9514705960922,15.1894312213601,96.6284954807158,-9.20425961578331,6.7571125444814,42.0932459073928,28.0148305440199,22.4591346846447,32.4416003527506,-7.79078171769623,3.95109190095178,32.0576937223642,3.38675745593162,24.7908238431443,5.13486699569512,5.67287543575185,-6.21987739881001,6.48614489977734,38.9258410821357,7.93982136454611,9.4809051500589,56.6257930751213,45.7494971301226,56.0934383489007,124.364818249115,66.2179535117044,78.5595580004794,115.941515270475,91.8195145555857,14.5267462665565,49.0813288191072,73.1665860419262,66.4235879121048,86.2848122204173,85.0237615358961,74.4417692401076,129.072827003248,45.4211782855838,107.820691042524,106.560414115413,65.2749758325582,66.0612518269076,110.351919135679,133.657200095536,124.02871798734,164.618122778342,143.295070063987,-22.3118865866958,125.286866567413,167.206870076219,128.670420424397,149.335151389059,101.284401838968,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,189.094824455141,-22.3118865866958,-22.3118865866958,-22.3118865866957,169.1503310417,-22.3118865866957,-22.3118865866958,207.550242542316,-22.3118865866958,-22.3118865866958,205.124985853367,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,57.3110920668582,83.6186496049072,79.7748493477665,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,52.3089918464665,30.8997221521129,-3.72696222840335,63.6206516399131,68.7630789093847,27.8732607773815,57.682840413622,38.5678004125347,43.9160522688983,63.9213601317228,86.9134675411592,62.5507954059221,58.2409711794388,78.4813257862671,123.340217206628,96.2270058656176,101.68719302365,125.238229640223,119.302666041622,160.69532608623,139.63732345322,154.196584781469,26.6247045876559,28.1957910599185,33.3916214452844,94.9629279042715,14.8267599096186,-5.31537789436834,33.3775842056455,113.167313235841,98.1964396678895,148.150650908305,146.229898342763,-22.3118865866958,84.3857126287415,64.595888473353,132.310764708529,111.034503849403,105.880261777928,45.0906227521446,41.5702000692108,76.0119194318353,10.9514477851601,64.1937246983898,92.2094414649446,37.0927960852875,55.7983044896501,57.9721780917667,38.238017352515,15.9903111920977,-4.44186718559575,76.8634528898766,77.3500513712026,46.9899633028219,112.024294428727,69.4322040115057,98.5690003558271,81.8535221169006,103.343021782206,71.1887793700487,38.1922001504714,16.8361140174449,54.9794152506233,11.1291969380391,48.2510333624119,-22.3118865866958,134.059772896181,102.633988373431,7.47066646891517,-7.76120450802784,148.702651385051,35.2725682574065,10.8760566333162,103.769207124703,108.584558205041,82.4762969081376,111.333747369104,140.008272226531,119.637926942354,53.0133995693175,69.0122776633632,93.48046637123,123.82065470455,-2.17538648718727,30.4877194726769,57.8491961739253,81.8619055631148,82.0806921298806,-22.3118865866958,81.9764978573661,143.972911736266,129.203801735713,-22.3118865866958,165.380711199236,130.755041172074,144.105141774104,131.768603084792,-22.3118865866957,160.496776905666,110.998339533156,97.6154159592663,165.962923784006,97.8697536666336,120.294138167316,155.286998176178,133.180361202721,143.914427993959,98.1874973164513,92.8872748082143,119.70805241835,83.76012276542,113.767066512325,78.654436755952,103.44508317428,134.818948423154,50.030424278119,87.8427410633602,85.2716767805423,117.193842072871,97.2291357087095,89.7793553454653,81.552265876838,150.130158069731,167.792733445885,145.222375983542,134.950676988781,64.6421181675113,75.4243622866026,107.039914920236,172.971363388437,151.603851258647,80.1775946924533,121.643706760136,133.542100249927,163.209440688717,153.570978880148,185.171468864147,191.744352747078,112.069012548187,89.13582843123,75.489521530191,80.8928702670617,-22.3118865866958,133.813371947464,-22.3118865866957,173.072757643504,-22.3118865866958,151.404394456582,-22.3118865866957,-22.3118865866958,-22.3118865866957,186.842794225428,125.120332772188,110.894990504071,133.487876800215,162.409765286135,32.338789604893,137.000922383199,74.3724521277802,59.8885237442851,95.8706561946358,107.071111326464,127.933019703814,125.946760411667,144.179027577437,187.568536077155,168.720680475072,164.637064573745,165.309466457639,193.005552797276,175.250819165573,194.951362682138,237.876496552215,221.997933390132,214.487637153331,214.526771597227,222.582571044266,-22.3118865866958,243.124519768589,-22.3118865866958,148.960265600981,175.988957504124,169.063972555284,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,161.328054045441,153.081265299424,191.888735708948,48.2469911144827,51.1049869508653,29.2865410655509,6.74286754377272,14.2485746261325,20.5917273334148,-6.60393676078365,-7.33906708218626,8.09623833480697,115.771088269857,89.2461552593629,69.2556698469793,141.418711174504,175.452767184112,197.679048484884,196.798900654555,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,186.018284723395,149.020411318709,182.290717348143,173.397337266187,181.238586478799,206.936226086974,221.883132402739,228.168683489221,-22.3118865866958,212.636504593589,228.492467195201,-22.3118865866957,123.070447616465,136.329489994976,125.950283795707,180.29259927096,158.19624829373,153.814593317637,173.965899740664,204.370738868307,184.496742851761,208.672429926777,207.21116504315,240.036003445492,221.555635415164,-22.3118865866957,-22.3118865866958,242.044608012181,179.687835642647,163.999296182837,203.791627808573,215.564829310416,148.256236161921,169.421351067773,121.943156026546,191.915096770084,170.651811006466,205.81917456683,137.854233245889,190.94178127132,169.347438328254,151.059751030985,162.714538128504,128.456885872335,143.591846379224,113.434977406849,141.59273033209,150.948543710117,187.097855982985,113.075891616281,165.51490656934,131.657211306064,155.562518585006,167.778790409234,189.217532297872,154.901650429128,184.645347298793,210.078384525232,198.466507073285,240.449823907674,-22.3118865866958,232.815081733634,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,107.67738123976,105.127885634911,103.826987131366,87.0035269652007,189.542649952155,193.987896921384,210.571723468924,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,233.340315418878,237.868299647795,233.506897098169,237.215241979543,-22.3118865866957,228.801206476262,95.0209284772065,106.832101453779,75.2560528057624,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,225.371204714401,201.520276060854,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,224.416599341426,203.630201488263,216.278175796255,213.861119017491,197.8686585431,189.601313376317,180.495193662822,-1026.346782988,38.8974145729957,8.07752256008394,45.2836048886647,15.1606947401658,27.7935420792658,48.7699646667651,35.2565825181601,62.2038678723161,76.5147521665165,66.2661719043376,57.4353616767448,82.0372020522045,41.5212489608193,91.2058900631578,53.9022812402069,13.785910125567,116.258707783349,110.298083239468,-4.35410514320068,33.8947013333096,71.2990865502966,91.6764472565484,103.618734944368,58.6327413763724,30.9444988079017,20.3188890367212,-6.11308026931141,112.220319308981,134.014385152462,136.510799412065,122.537689991698,98.7091577574195,81.2865619061269,-9.5259524821862,-12.2064541923179,70.0690338154616,58.6799464156607,7.896926408436,-3.35580294529507,45.5848795737924,18.4479175313971,2.41081875295163,2.57434771645541,-22.3118865866958,-22.3118865866957,-1.73029327280381,-22.3118865866957,190.305127172657,196.221031714531,171.532660988827,180.095737410207,161.552124075994,241.084013801906,247.658718560054,121.458440634562,177.647701879244,164.425063223403,230.374387339944,213.760840058251,147.642242189514,41.1829456545146,225.596745385455,-22.3118865866957,222.283730726769,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1.86573461925877,-1004.03489640131,-1004.03489640131,-5.32040408696844,-1004.03489640131,-10.6773780488078,-1004.03489640131,-1004.03489640131,0.382728221620312,-1004.03489640131,-1004.03489640131,-1.70805153437419,-1004.03489640131,-1004.03489640131,-1.86573462011449,-1004.03489640131,-1004.03489640131,-1004.03489640131,0.402599399457984,-1004.03489640131,-1004.03489640131,0.382728222050275,-1004.03489640131,-1026.346782988,-1026.346782988,-22.3118865866957,-1026.346782988,-1004.03489640131,-12.9302953228488,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,13.9234215177135,-22.3118865866957,-6.49415957969711,13.2300547718002,-22.3118865866957,-22.3118865866957,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246200977869,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620098423,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201298853,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201642523,-12.1322536834644,-1004.03489640131,-1004.03489640131,-12.1322536835307,-1004.03489640131,7.94246201201122,-1004.03489640131,7.94246201712883,-1026.346782988,-1004.03489640131,7.94246201376984,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201605364,-1004.03489640131,7.94246201517802,-1004.03489640131,-22.3118865866958,-8.50415616914523,-1004.03489640131,-13.3172915499275,20.8012933970991,-1004.03489640131,-6.484319039318,13.3533221799019,-10.7426316298049,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-6.13899584061471,-10.7255646354427,12.7285795284387,-1004.03489640131,-6.48431904086471,13.3533221795731,-10.7426316282136,-1004.03489640131,8.82622136200843,-10.6244028613748,-13.8349005388457,-22.3118865866958,3.06730449534194,39.8335511594283,30.0880481346721,17.7013607076611,79.3166377725732,6.91505412343815,49.302617060269,55.6737065015006,33.896174672252,30.1818915205478,49.1977067452478,31.4320296162073,28.5827974601651,82.5841809424686,56.0035793430457,75.3638413273682,35.4245742161953,120.813991583567,28.9201819928979,97.5353811488949,112.962430523175,100.397898062442,79.2440478358114,-6.47786147222564,-22.3118865866958,6.01909653183412,-1004.03489640131,-16.1237549139601,-1004.03489640131,-1004.03489640131,-16.1237549147168,-1004.03489640131,-11.4324994449325,-1004.03489640131,24.794812689333,6.01909653028298,-1004.03489640131,-16.1237549133937,-1004.03489640131,-1004.03489640131,-11.4324994442847,-1004.03489640131,24.794812690903,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-11.4324994444304,-1004.03489640131,24.7948126894471,-1004.03489640131,-1004.03489640131,-1004.03489640131,-16.1338695179189,-1026.346782988,-22.3118865866958,-1026.346782988,-22.3118865866958,-1004.03489640131,-6.34574844371338,-1004.03489640131,36.4817071513331,12.9083498609584,22.8148039371792,18.9003815275257,22.6298880681195,52.7842000914906,29.0872009820332,52.7909118540404,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,29.0872009798487,-1004.03489640131,-1004.03489640131,5.94417597708554,42.2415916864318,24.9363742557928,35.2748892154652,44.5841758101249,78.4540574653122,57.9102565849224,48.439142437713,82.7357735273924,59.7368986308019,65.8816659359867,86.2690671239712,-22.3118865866957,-22.3118865866957,34.0135295427073,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,9.74183260070259,12.6033374147904,-11.2927061365044,6.49359155273152,27.6621948168156,25.4438495598533,66.4446359369044,48.3624418097024,44.3564104056831,54.6609580245687,50.02069492144,31.7822263191927,84.300935334491,11.8227263230977,55.6003005623927,60.2775545386897,93.6721845520076,71.5998437864305,105.637647564996,71.3923875724517,65.8774578605704,92.0437817127173,75.58796972012,106.408727024305,95.2889844454791,132.894992012272,71.841674414088,77.3775199284386,-1004.03489640131,2.09642019255745,-1004.03489640131,17.8488203688954,-11.2927061371036,7.98386561066536,49.3558235075603,26.6160653380965,25.6209179159651,39.2082757506033,48.4245118896995,31.86769908222,11.7661131947169,62.1873964128244,-1004.03489640131,2.09642019394886,14.6487589343,0.0674819430308276,-1004.03489640131,-1004.03489640131,17.8488203686265,-1004.03489640131,-3.37610189835431,45.6887277886844,19.7626370056832,29.0747921877152,29.7888678870024,18.4118623869763,0.217025254320106,40.3535085741369,67.4795814870575,71.3017569870563,52.7909118543566,10.8842284729205,31.1269461503889,58.9309301081481,14.472612883317,39.730189767963,28.3950033974821,10.8842284729658,31.3337696889882,25.1121229429542,73.6390988135703,3.84229941083208,-5.3917958174261,58.4845535190493,50.3371866765528,8.5911431029046,36.6069463057471,38.4019007598162,48.0098989319283,53.0569290479509,14.4726128820075,32.4571777704739,32.8258800064307,20.9938577041856,62.9141114959777,-22.3118865866957,-22.3118865866957,-22.3118865866957,-9.18572137881705,6.68869760424582,34.9514705960922,15.1894312213601,96.6284954807157,-9.20425961578331,6.7571125444814,42.0932459073928,28.0148305440199,22.4591346846447,32.4416003527506,-7.79078171769623,3.95109190095178,32.0576937223642,3.38675745593162,24.7908238431443,5.13486699569512,5.67287543575185,-6.21987739881001,6.48614489977734,38.9258410821357,7.9398213645461,9.4809051500589,56.6257930751213,45.7494971301226,56.0934383489007,124.364818249116,66.2179535117044,78.5595580004794,115.941515270475,91.8195145555857,14.5267462665565,49.0813288191072,73.1665860419262,66.4235879121048,86.2848122204173,85.0237615358961,74.4417692401076,129.072827003248,45.4211782855838,107.820691042524,106.560414115413,65.2749758325582,66.0612518269076,110.351919135679,133.657200095536,124.02871798734,164.618122778342,143.295070063987,-22.3118865866957,125.286866567413,167.206870076219,128.670420424397,149.335151389059,101.284401838968,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,189.094824455141,-22.3118865866957,-22.3118865866957,-22.3118865866958,169.1503310417,-22.3118865866957,-22.3118865866957,207.550242542316,-22.3118865866957,-22.3118865866957,205.124985853367,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,57.3110920668582,83.6186496049072,79.7748493477665,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,52.3089918464665,30.8997221521129,-3.72696222840335,63.6206516399131,68.7630789093847,27.8732607773815,57.682840413622,38.5678004125347,43.9160522688983,63.9213601317228,86.9134675411592,62.5507954059221,58.2409711794388,78.4813257862671,123.340217206628,96.2270058656176,101.68719302365,125.238229640223,119.302666041622,160.69532608623,139.63732345322,154.196584781469,26.6247045876559,28.1957910599185,33.3916214452844,94.9629279042715,14.8267599096186,-5.31537789436834,33.3775842056455,113.167313235841,98.1964396678895,148.150650908305,146.229898342763,-22.3118865866957,84.3857126287415,64.595888473353,132.310764708529,111.034503849403,105.880261777928,45.0906227521446,41.5702000692108,76.0119194318353,10.9514477851601,64.1937246983898,92.2094414649446,37.0927960852875,55.7983044896501,57.9721780917667,38.238017352515,15.9903111920977,-4.44186718559575,76.8634528898766,77.3500513712026,46.9899633028219,112.024294428727,69.4322040115057,98.5690003558271,81.8535221169006,103.343021782206,71.1887793700487,38.1922001504714,16.8361140174449,54.9794152506233,11.1291969380391,48.2510333624119,-22.3118865866957,134.059772896181,102.633988373431,7.47066646891517,-7.76120450802784,148.702651385051,35.2725682574065,10.8760566333162,103.769207124703,108.584558205041,82.4762969081376,111.333747369104,140.008272226531,119.637926942354,53.0133995693175,69.0122776633632,93.48046637123,123.82065470455,-2.17538648718727,30.4877194726769,57.8491961739253,81.8619055631148,82.0806921298806,-22.3118865866957,81.9764978573661,143.972911736266,129.203801735713,-22.3118865866957,165.380711199236,130.755041172074,144.105141774104,131.768603084792,-22.3118865866958,160.496776905666,110.998339533156,97.6154159592663,165.962923784006,97.8697536666336,120.294138167316,155.286998176178,133.180361202721,143.914427993959,98.1874973164513,92.8872748082143,119.70805241835,83.76012276542,113.767066512325,78.654436755952,103.445083174279,134.818948423154,50.030424278119,87.8427410633602,85.2716767805422,117.193842072871,97.2291357087095,89.7793553454653,81.552265876838,150.130158069731,167.792733445885,145.222375983542,134.950676988781,64.6421181675113,75.4243622866026,107.039914920236,172.971363388437,151.603851258647,80.1775946924533,121.643706760136,133.542100249927,163.209440688717,153.570978880148,185.171468864147,191.744352747078,112.069012548187,89.13582843123,75.489521530191,80.8928702670617,-22.3118865866957,133.813371947464,-22.3118865866958,173.072757643504,-22.3118865866957,151.404394456582,-22.3118865866957,-22.3118865866957,-22.3118865866958,186.842794225428,125.120332772188,110.894990504071,133.487876800215,162.409765286135,32.338789604893,137.000922383199,74.3724521277803,59.8885237442851,95.8706561946358,107.071111326464,127.933019703814,125.946760411667,144.179027577437,187.568536077155,168.720680475072,164.637064573745,165.309466457639,193.005552797276,175.250819165573,194.951362682138,237.876496552214,221.997933390133,214.487637153331,214.526771597227,222.582571044266,-22.3118865866957,243.124519768589,-22.3118865866957,148.960265600981,175.988957504124,169.063972555285,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,161.328054045441,153.081265299424,191.888735708948,48.2469911144827,51.1049869508653,29.2865410655509,6.74286754377272,14.2485746261325,20.5917273334148,-6.60393676078365,-7.33906708218626,8.09623833480697,115.771088269857,89.2461552593629,69.2556698469793,141.418711174504,175.452767184112,197.679048484884,196.798900654555,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,186.018284723395,149.020411318709,182.290717348143,173.397337266187,181.238586478799,206.936226086974,221.883132402739,228.168683489221,-22.3118865866957,212.636504593589,228.492467195201,-22.3118865866958,123.070447616465,136.329489994976,125.950283795707,180.29259927096,158.19624829373,153.814593317637,173.965899740664,204.370738868307,184.496742851761,208.672429926777,207.21116504315,240.036003445492,221.555635415164,-22.3118865866957,-22.3118865866957,242.044608012181,179.687835642647,163.999296182837,203.791627808573,215.564829310416,148.256236161921,169.421351067773,121.943156026546,191.915096770084,170.651811006466,205.81917456683,137.854233245889,190.94178127132,169.347438328254,151.059751030985,162.714538128504,128.456885872335,143.591846379224,113.434977406849,141.59273033209,150.948543710117,187.097855982985,113.075891616281,165.51490656934,131.657211306064,155.562518585006,167.778790409234,189.217532297872,154.901650429128,184.645347298793,210.078384525232,198.466507073285,240.449823907673,-22.3118865866957,232.815081733634,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,107.67738123976,105.127885634911,103.826987131366,87.0035269652008,189.542649952155,193.987896921384,210.571723468924,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,233.340315418878,237.868299647795,233.506897098169,237.215241979543,-22.3118865866957,228.801206476262,95.0209284772066,106.832101453779,75.2560528057624,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,225.371204714401,201.520276060854,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,224.416599341426,203.630201488263,216.278175796255,213.861119017491,197.8686585431,189.601313376317,180.495193662822,-1026.346782988,38.8974145729957,8.07752256008393,45.2836048886647,15.1606947401658,27.7935420792658,48.7699646667651,35.2565825181601,62.2038678723161,76.5147521665165,66.2661719043376,57.4353616767448,82.0372020522045,41.5212489608193,91.2058900631578,53.902281240207,13.785910125567,116.258707783349,110.298083239468,-4.35410514320068,33.8947013333096,71.2990865502966,91.6764472565484,103.618734944368,58.6327413763724,30.9444988079017,20.3188890367212,-6.11308026931141,112.220319308981,134.014385152462,136.510799412065,122.537689991698,98.7091577574195,81.2865619061268,-9.5259524821862,-12.2064541923179,70.0690338154616,58.6799464156607,7.896926408436,-3.35580294529507,45.5848795737924,18.4479175313971,2.41081875295163,2.57434771645541,-22.3118865866957,-22.3118865866957,-1.73029327280381,-22.3118865866958,190.305127172657,196.221031714531,171.532660988827,180.095737410207,161.552124075994,241.084013801906,247.658718560054,121.458440634562,177.647701879244,164.425063223403,230.374387339944,213.760840058251,147.642242189514,41.1829456545146,225.596745385455,-22.3118865866957,222.283730726769],"Archive433_field4":[-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1.86573461925877,-1004.03489640131,-1004.03489640131,-5.32040408696844,-1004.03489640131,-10.6773780488078,-1004.03489640131,-1004.03489640131,0.382728221620312,-1004.03489640131,-1004.03489640131,-1.70805153437419,-1004.03489640131,-1004.03489640131,-1.86573462011449,-1004.03489640131,-1004.03489640131,-1004.03489640131,0.402599399457984,-1004.03489640131,-1004.03489640131,0.382728222050275,-1004.03489640131,-1026.346782988,-1026.346782988,-22.3118865866957,-1026.346782988,-1004.03489640131,-12.9302953228488,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,13.9234215177135,-22.3118865866957,-6.49415957969711,13.2300547718002,-22.3118865866957,-22.3118865866957,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246200977869,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620098423,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201298853,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201642523,-12.1322536834644,-1004.03489640131,-1004.03489640131,-12.1322536835307,-1004.03489640131,7.94246201201122,-1004.03489640131,7.94246201712883,-1026.346782988,-1004.03489640131,7.94246201376984,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201605364,-1004.03489640131,7.94246201517802,-1004.03489640131,-22.3118865866958,-8.50415616914523,-1004.03489640131,-13.3172915499275,20.8012933970991,-1004.03489640131,-6.484319039318,13.3533221799019,-10.7426316298049,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-6.13899584061471,-10.7255646354427,12.7285795284387,-1004.03489640131,-6.48431904086471,13.3533221795731,-10.7426316282136,-1004.03489640131,8.82622136200843,-10.6244028613748,-13.8349005388457,-22.3118865866958,3.06730449534194,39.8335511594283,30.0880481346721,17.7013607076611,79.3166377725732,6.91505412343815,49.302617060269,55.6737065015006,33.896174672252,30.1818915205478,49.1977067452478,31.4320296162073,28.5827974601651,82.5841809424686,56.0035793430457,75.3638413273682,35.4245742161953,120.813991583567,28.9201819928979,97.5353811488949,112.962430523175,100.397898062442,79.2440478358114,-6.47786147222564,-22.3118865866958,6.01909653183412,-1004.03489640131,-16.1237549139601,-1004.03489640131,-1004.03489640131,-16.1237549147168,-1004.03489640131,-11.4324994449325,-1004.03489640131,24.794812689333,6.01909653028298,-1004.03489640131,-16.1237549133937,-1004.03489640131,-1004.03489640131,-11.4324994442847,-1004.03489640131,24.794812690903,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-11.4324994444304,-1004.03489640131,24.7948126894471,-1004.03489640131,-1004.03489640131,-1004.03489640131,-16.1338695179189,-1026.346782988,-22.3118865866958,-1026.346782988,-22.3118865866958,-1004.03489640131,-6.34574844371338,-1004.03489640131,36.4817071513331,12.9083498609584,22.8148039371792,18.9003815275257,22.6298880681195,52.7842000914906,29.0872009820332,52.7909118540404,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,29.0872009798487,-1004.03489640131,-1004.03489640131,5.94417597708554,42.2415916864318,24.9363742557928,35.2748892154652,44.5841758101249,78.4540574653122,57.9102565849224,48.439142437713,82.7357735273924,59.7368986308019,65.8816659359867,86.2690671239712,-22.3118865866957,-22.3118865866957,34.0135295427073,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,9.74183260070259,12.6033374147904,-11.2927061365044,6.49359155273152,27.6621948168156,25.4438495598533,66.4446359369044,48.3624418097024,44.3564104056831,54.6609580245687,50.02069492144,31.7822263191927,84.300935334491,11.8227263230977,55.6003005623927,60.2775545386897,93.6721845520076,71.5998437864305,105.637647564996,71.3923875724517,65.8774578605704,92.0437817127173,75.58796972012,106.408727024305,95.2889844454791,132.894992012272,71.841674414088,77.3775199284386,-1004.03489640131,2.09642019255745,-1004.03489640131,17.8488203688954,-11.2927061371036,7.98386561066536,49.3558235075603,26.6160653380965,25.6209179159651,39.2082757506033,48.4245118896995,31.86769908222,11.7661131947169,62.1873964128244,-1004.03489640131,2.09642019394886,14.6487589343,0.0674819430308276,-1004.03489640131,-1004.03489640131,17.8488203686265,-1004.03489640131,-3.37610189835431,45.6887277886844,19.7626370056832,29.0747921877152,29.7888678870024,18.4118623869763,0.217025254320106,40.3535085741369,67.4795814870575,71.3017569870563,52.7909118543566,10.8842284729205,31.1269461503889,58.9309301081481,14.472612883317,39.730189767963,28.3950033974821,10.8842284729658,31.3337696889882,25.1121229429542,73.6390988135703,3.84229941083208,-5.3917958174261,58.4845535190493,50.3371866765528,8.5911431029046,36.6069463057471,38.4019007598162,48.0098989319283,53.0569290479509,14.4726128820075,32.4571777704739,32.8258800064307,20.9938577041856,62.9141114959777,-22.3118865866957,-22.3118865866957,-22.3118865866957,-9.18572137881705,6.68869760424582,34.9514705960922,15.1894312213601,96.6284954807157,-9.20425961578331,6.7571125444814,42.0932459073928,28.0148305440199,22.4591346846447,32.4416003527506,-7.79078171769623,3.95109190095178,32.0576937223642,3.38675745593162,24.7908238431443,5.13486699569512,5.67287543575185,-6.21987739881001,6.48614489977734,38.9258410821357,7.9398213645461,9.4809051500589,56.6257930751213,45.7494971301226,56.0934383489007,124.364818249116,66.2179535117044,78.5595580004794,115.941515270475,91.8195145555857,14.5267462665565,49.0813288191072,73.1665860419262,66.4235879121048,86.2848122204173,85.0237615358961,74.4417692401076,129.072827003248,45.4211782855838,107.820691042524,106.560414115413,65.2749758325582,66.0612518269076,110.351919135679,133.657200095536,124.02871798734,164.618122778342,143.295070063987,-22.3118865866957,125.286866567413,167.206870076219,128.670420424397,149.335151389059,101.284401838968,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,189.094824455141,-22.3118865866957,-22.3118865866957,-22.3118865866958,169.1503310417,-22.3118865866957,-22.3118865866957,207.550242542316,-22.3118865866957,-22.3118865866957,205.124985853367,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,57.3110920668582,83.6186496049072,79.7748493477665,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,52.3089918464665,30.8997221521129,-3.72696222840335,63.6206516399131,68.7630789093847,27.8732607773815,57.682840413622,38.5678004125347,43.9160522688983,63.9213601317228,86.9134675411592,62.5507954059221,58.2409711794388,78.4813257862671,123.340217206628,96.2270058656176,101.68719302365,125.238229640223,119.302666041622,160.69532608623,139.63732345322,154.196584781469,26.6247045876559,28.1957910599185,33.3916214452844,94.9629279042715,14.8267599096186,-5.31537789436834,33.3775842056455,113.167313235841,98.1964396678895,148.150650908305,146.229898342763,-22.3118865866957,84.3857126287415,64.595888473353,132.310764708529,111.034503849403,105.880261777928,45.0906227521446,41.5702000692108,76.0119194318353,10.9514477851601,64.1937246983898,92.2094414649446,37.0927960852875,55.7983044896501,57.9721780917667,38.238017352515,15.9903111920977,-4.44186718559575,76.8634528898766,77.3500513712026,46.9899633028219,112.024294428727,69.4322040115057,98.5690003558271,81.8535221169006,103.343021782206,71.1887793700487,38.1922001504714,16.8361140174449,54.9794152506233,11.1291969380391,48.2510333624119,-22.3118865866957,134.059772896181,102.633988373431,7.47066646891517,-7.76120450802784,148.702651385051,35.2725682574065,10.8760566333162,103.769207124703,108.584558205041,82.4762969081376,111.333747369104,140.008272226531,119.637926942354,53.0133995693175,69.0122776633632,93.48046637123,123.82065470455,-2.17538648718727,30.4877194726769,57.8491961739253,81.8619055631148,82.0806921298806,-22.3118865866957,81.9764978573661,143.972911736266,129.203801735713,-22.3118865866957,165.380711199236,130.755041172074,144.105141774104,131.768603084792,-22.3118865866958,160.496776905666,110.998339533156,97.6154159592663,165.962923784006,97.8697536666336,120.294138167316,155.286998176178,133.180361202721,143.914427993959,98.1874973164513,92.8872748082143,119.70805241835,83.76012276542,113.767066512325,78.654436755952,103.445083174279,134.818948423154,50.030424278119,87.8427410633602,85.2716767805422,117.193842072871,97.2291357087095,89.7793553454653,81.552265876838,150.130158069731,167.792733445885,145.222375983542,134.950676988781,64.6421181675113,75.4243622866026,107.039914920236,172.971363388437,151.603851258647,80.1775946924533,121.643706760136,133.542100249927,163.209440688717,153.570978880148,185.171468864147,191.744352747078,112.069012548187,89.13582843123,75.489521530191,80.8928702670617,-22.3118865866957,133.813371947464,-22.3118865866958,173.072757643504,-22.3118865866957,151.404394456582,-22.3118865866957,-22.3118865866957,-22.3118865866958,186.842794225428,125.120332772188,110.894990504071,133.487876800215,162.409765286135,32.338789604893,137.000922383199,74.3724521277803,59.8885237442851,95.8706561946358,107.071111326464,127.933019703814,125.946760411667,144.179027577437,187.568536077155,168.720680475072,164.637064573745,165.309466457639,193.005552797276,175.250819165573,194.951362682138,237.876496552214,221.997933390133,214.487637153331,214.526771597227,222.582571044266,-22.3118865866957,243.124519768589,-22.3118865866957,148.960265600981,175.988957504124,169.063972555285,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,161.328054045441,153.081265299424,191.888735708948,48.2469911144827,51.1049869508653,29.2865410655509,6.74286754377272,14.2485746261325,20.5917273334148,-6.60393676078365,-7.33906708218626,8.09623833480697,115.771088269857,89.2461552593629,69.2556698469793,141.418711174504,175.452767184112,197.679048484884,196.798900654555,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,186.018284723395,149.020411318709,182.290717348143,173.397337266187,181.238586478799,206.936226086974,221.883132402739,228.168683489221,-22.3118865866957,212.636504593589,228.492467195201,-22.3118865866958,123.070447616465,136.329489994976,125.950283795707,180.29259927096,158.19624829373,153.814593317637,173.965899740664,204.370738868307,184.496742851761,208.672429926777,207.21116504315,240.036003445492,221.555635415164,-22.3118865866957,-22.3118865866957,242.044608012181,179.687835642647,163.999296182837,203.791627808573,215.564829310416,148.256236161921,169.421351067773,121.943156026546,191.915096770084,170.651811006466,205.81917456683,137.854233245889,190.94178127132,169.347438328254,151.059751030985,162.714538128504,128.456885872335,143.591846379224,113.434977406849,141.59273033209,150.948543710117,187.097855982985,113.075891616281,165.51490656934,131.657211306064,155.562518585006,167.778790409234,189.217532297872,154.901650429128,184.645347298793,210.078384525232,198.466507073285,240.449823907673,-22.3118865866957,232.815081733634,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,107.67738123976,105.127885634911,103.826987131366,87.0035269652008,189.542649952155,193.987896921384,210.571723468924,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,233.340315418878,237.868299647795,233.506897098169,237.215241979543,-22.3118865866957,228.801206476262,95.0209284772066,106.832101453779,75.2560528057624,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,225.371204714401,201.520276060854,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,224.416599341426,203.630201488263,216.278175796255,213.861119017491,197.8686585431,189.601313376317,180.495193662822,-1026.346782988,38.8974145729957,8.07752256008393,45.2836048886647,15.1606947401658,27.7935420792658,48.7699646667651,35.2565825181601,62.2038678723161,76.5147521665165,66.2661719043376,57.4353616767448,82.0372020522045,41.5212489608193,91.2058900631578,53.902281240207,13.785910125567,116.258707783349,110.298083239468,-4.35410514320068,33.8947013333096,71.2990865502966,91.6764472565484,103.618734944368,58.6327413763724,30.9444988079017,20.3188890367212,-6.11308026931141,112.220319308981,134.014385152462,136.510799412065,122.537689991698,98.7091577574195,81.2865619061268,-9.5259524821862,-12.2064541923179,70.0690338154616,58.6799464156607,7.896926408436,-3.35580294529507,45.5848795737924,18.4479175313971,2.41081875295163,2.57434771645541,-22.3118865866957,-22.3118865866957,-1.73029327280381,-22.3118865866958,190.305127172657,196.221031714531,171.532660988827,180.095737410207,161.552124075994,241.084013801906,247.658718560054,121.458440634562,177.647701879244,164.425063223403,230.374387339944,213.760840058251,147.642242189514,41.1829456545146,225.596745385455,-22.3118865866957,222.283730726769,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1.86573461925877,-1004.03489640131,-1004.03489640131,-5.32040408696844,-1004.03489640131,-10.6773780488078,-1004.03489640131,-1004.03489640131,0.382728221620312,-1004.03489640131,-1004.03489640131,-1.70805153437419,-1004.03489640131,-1004.03489640131,-1.86573462011449,-1004.03489640131,-1004.03489640131,-1004.03489640131,0.402599399457984,-1004.03489640131,-1004.03489640131,0.382728222050275,-1004.03489640131,-1026.346782988,-1026.346782988,-22.3118865866957,-1026.346782988,-1004.03489640131,-12.9302953228488,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,13.9234215177135,-22.3118865866958,-6.49415957969711,13.2300547718002,-22.3118865866958,-22.3118865866957,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620097787,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620098423,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201298853,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201642523,-12.1322536834644,-1004.03489640131,-1004.03489640131,-12.1322536835307,-1004.03489640131,7.94246201201122,-1004.03489640131,7.94246201712883,-1026.346782988,-1004.03489640131,7.94246201376984,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201605364,-1004.03489640131,7.94246201517802,-1004.03489640131,-22.3118865866957,-8.50415616914523,-1004.03489640131,-13.3172915499275,20.8012933970991,-1004.03489640131,-6.48431903931799,13.3533221799019,-10.7426316298049,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-6.13899584061471,-10.7255646354427,12.7285795284387,-1004.03489640131,-6.48431904086471,13.3533221795731,-10.7426316282136,-1004.03489640131,8.82622136200843,-10.6244028613748,-13.8349005388457,-22.3118865866957,3.06730449534194,39.8335511594283,30.0880481346721,17.7013607076611,79.3166377725733,6.91505412343815,49.302617060269,55.6737065015006,33.896174672252,30.1818915205478,49.1977067452478,31.4320296162073,28.5827974601651,82.5841809424687,56.0035793430457,75.3638413273682,35.4245742161953,120.813991583567,28.9201819928979,97.5353811488949,112.962430523175,100.397898062442,79.2440478358114,-6.47786147222564,-22.3118865866957,6.01909653183412,-1004.03489640131,-16.1237549139601,-1004.03489640131,-1004.03489640131,-16.1237549147168,-1004.03489640131,-11.4324994449325,-1004.03489640131,24.794812689333,6.01909653028298,-1004.03489640131,-16.1237549133937,-1004.03489640131,-1004.03489640131,-11.4324994442847,-1004.03489640131,24.794812690903,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-11.4324994444304,-1004.03489640131,24.7948126894471,-1004.03489640131,-1004.03489640131,-1004.03489640131,-16.1338695179189,-1026.346782988,-22.3118865866957,-1026.346782988,-22.3118865866957,-1004.03489640131,-6.34574844371337,-1004.03489640131,36.4817071513331,12.9083498609584,22.8148039371792,18.9003815275257,22.6298880681195,52.7842000914906,29.0872009820332,52.7909118540404,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,29.0872009798487,-1004.03489640131,-1004.03489640131,5.94417597708554,42.2415916864318,24.9363742557928,35.2748892154652,44.5841758101249,78.4540574653122,57.9102565849224,48.439142437713,82.7357735273924,59.7368986308019,65.8816659359867,86.2690671239712,-22.3118865866958,-22.3118865866958,34.0135295427073,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,9.74183260070259,12.6033374147904,-11.2927061365044,6.49359155273152,27.6621948168156,25.4438495598533,66.4446359369044,48.3624418097024,44.3564104056831,54.6609580245687,50.02069492144,31.7822263191927,84.3009353344911,11.8227263230977,55.6003005623927,60.2775545386897,93.6721845520077,71.5998437864305,105.637647564996,71.3923875724517,65.8774578605704,92.0437817127173,75.58796972012,106.408727024305,95.2889844454791,132.894992012272,71.841674414088,77.3775199284386,-1004.03489640131,2.09642019255745,-1004.03489640131,17.8488203688954,-11.2927061371036,7.98386561066536,49.3558235075603,26.6160653380965,25.6209179159652,39.2082757506033,48.4245118896995,31.86769908222,11.7661131947169,62.1873964128244,-1004.03489640131,2.09642019394886,14.6487589343,0.0674819430308276,-1004.03489640131,-1004.03489640131,17.8488203686265,-1004.03489640131,-3.37610189835431,45.6887277886844,19.7626370056832,29.0747921877152,29.7888678870024,18.4118623869763,0.217025254320106,40.3535085741369,67.4795814870575,71.3017569870562,52.7909118543566,10.8842284729205,31.1269461503888,58.930930108148,14.472612883317,39.730189767963,28.3950033974821,10.8842284729658,31.3337696889882,25.1121229429542,73.6390988135704,3.84229941083208,-5.3917958174261,58.4845535190493,50.3371866765528,8.5911431029046,36.6069463057471,38.4019007598162,48.0098989319282,53.0569290479509,14.4726128820075,32.4571777704739,32.8258800064307,20.9938577041856,62.9141114959778,-22.3118865866958,-22.3118865866958,-22.3118865866957,-9.18572137881705,6.68869760424582,34.9514705960922,15.1894312213601,96.6284954807158,-9.20425961578331,6.7571125444814,42.0932459073928,28.0148305440199,22.4591346846447,32.4416003527506,-7.79078171769623,3.95109190095178,32.0576937223642,3.38675745593162,24.7908238431443,5.13486699569512,5.67287543575185,-6.21987739881001,6.48614489977734,38.9258410821357,7.93982136454611,9.4809051500589,56.6257930751213,45.7494971301226,56.0934383489007,124.364818249115,66.2179535117044,78.5595580004794,115.941515270475,91.8195145555857,14.5267462665565,49.0813288191072,73.1665860419262,66.4235879121048,86.2848122204173,85.0237615358961,74.4417692401076,129.072827003248,45.4211782855838,107.820691042524,106.560414115413,65.2749758325582,66.0612518269076,110.351919135679,133.657200095536,124.02871798734,164.618122778342,143.295070063987,-22.3118865866958,125.286866567413,167.206870076219,128.670420424397,149.335151389059,101.284401838968,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,189.094824455141,-22.3118865866958,-22.3118865866958,-22.3118865866957,169.1503310417,-22.3118865866957,-22.3118865866958,207.550242542316,-22.3118865866958,-22.3118865866958,205.124985853367,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,57.3110920668582,83.6186496049072,79.7748493477665,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,52.3089918464665,30.8997221521129,-3.72696222840335,63.6206516399131,68.7630789093847,27.8732607773815,57.682840413622,38.5678004125347,43.9160522688983,63.9213601317228,86.9134675411592,62.5507954059221,58.2409711794388,78.4813257862671,123.340217206628,96.2270058656176,101.68719302365,125.238229640223,119.302666041622,160.69532608623,139.63732345322,154.196584781469,26.6247045876559,28.1957910599185,33.3916214452844,94.9629279042715,14.8267599096186,-5.31537789436834,33.3775842056455,113.167313235841,98.1964396678895,148.150650908305,146.229898342763,-22.3118865866958,84.3857126287415,64.595888473353,132.310764708529,111.034503849403,105.880261777928,45.0906227521446,41.5702000692108,76.0119194318353,10.9514477851601,64.1937246983898,92.2094414649446,37.0927960852875,55.7983044896501,57.9721780917667,38.238017352515,15.9903111920977,-4.44186718559575,76.8634528898766,77.3500513712026,46.9899633028219,112.024294428727,69.4322040115057,98.5690003558271,81.8535221169006,103.343021782206,71.1887793700487,38.1922001504714,16.8361140174449,54.9794152506233,11.1291969380391,48.2510333624119,-22.3118865866958,134.059772896181,102.633988373431,7.47066646891517,-7.76120450802784,148.702651385051,35.2725682574065,10.8760566333162,103.769207124703,108.584558205041,82.4762969081376,111.333747369104,140.008272226531,119.637926942354,53.0133995693175,69.0122776633632,93.48046637123,123.82065470455,-2.17538648718727,30.4877194726769,57.8491961739253,81.8619055631148,82.0806921298806,-22.3118865866958,81.9764978573661,143.972911736266,129.203801735713,-22.3118865866958,165.380711199236,130.755041172074,144.105141774104,131.768603084792,-22.3118865866957,160.496776905666,110.998339533156,97.6154159592663,165.962923784006,97.8697536666336,120.294138167316,155.286998176178,133.180361202721,143.914427993959,98.1874973164513,92.8872748082143,119.70805241835,83.76012276542,113.767066512325,78.654436755952,103.44508317428,134.818948423154,50.030424278119,87.8427410633602,85.2716767805423,117.193842072871,97.2291357087095,89.7793553454653,81.552265876838,150.130158069731,167.792733445885,145.222375983542,134.950676988781,64.6421181675113,75.4243622866026,107.039914920236,172.971363388437,151.603851258647,80.1775946924533,121.643706760136,133.542100249927,163.209440688717,153.570978880148,185.171468864147,191.744352747078,112.069012548187,89.13582843123,75.489521530191,80.8928702670617,-22.3118865866958,133.813371947464,-22.3118865866957,173.072757643504,-22.3118865866958,151.404394456582,-22.3118865866957,-22.3118865866958,-22.3118865866957,186.842794225428,125.120332772188,110.894990504071,133.487876800215,162.409765286135,32.338789604893,137.000922383199,74.3724521277802,59.8885237442851,95.8706561946358,107.071111326464,127.933019703814,125.946760411667,144.179027577437,187.568536077155,168.720680475072,164.637064573745,165.309466457639,193.005552797276,175.250819165573,194.951362682138,237.876496552215,221.997933390132,214.487637153331,214.526771597227,222.582571044266,-22.3118865866958,243.124519768589,-22.3118865866958,148.960265600981,175.988957504124,169.063972555284,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,161.328054045441,153.081265299424,191.888735708948,48.2469911144827,51.1049869508653,29.2865410655509,6.74286754377272,14.2485746261325,20.5917273334148,-6.60393676078365,-7.33906708218626,8.09623833480697,115.771088269857,89.2461552593629,69.2556698469793,141.418711174504,175.452767184112,197.679048484884,196.798900654555,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,186.018284723395,149.020411318709,182.290717348143,173.397337266187,181.238586478799,206.936226086974,221.883132402739,228.168683489221,-22.3118865866958,212.636504593589,228.492467195201,-22.3118865866957,123.070447616465,136.329489994976,125.950283795707,180.29259927096,158.19624829373,153.814593317637,173.965899740664,204.370738868307,184.496742851761,208.672429926777,207.21116504315,240.036003445492,221.555635415164,-22.3118865866957,-22.3118865866958,242.044608012181,179.687835642647,163.999296182837,203.791627808573,215.564829310416,148.256236161921,169.421351067773,121.943156026546,191.915096770084,170.651811006466,205.81917456683,137.854233245889,190.94178127132,169.347438328254,151.059751030985,162.714538128504,128.456885872335,143.591846379224,113.434977406849,141.59273033209,150.948543710117,187.097855982985,113.075891616281,165.51490656934,131.657211306064,155.562518585006,167.778790409234,189.217532297872,154.901650429128,184.645347298793,210.078384525232,198.466507073285,240.449823907674,-22.3118865866958,232.815081733634,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,107.67738123976,105.127885634911,103.826987131366,87.0035269652007,189.542649952155,193.987896921384,210.571723468924,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,233.340315418878,237.868299647795,233.506897098169,237.215241979543,-22.3118865866957,228.801206476262,95.0209284772065,106.832101453779,75.2560528057624,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,225.371204714401,201.520276060854,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,224.416599341426,203.630201488263,216.278175796255,213.861119017491,197.8686585431,189.601313376317,180.495193662822,-1026.346782988,38.8974145729957,8.07752256008394,45.2836048886647,15.1606947401658,27.7935420792658,48.7699646667651,35.2565825181601,62.2038678723161,76.5147521665165,66.2661719043376,57.4353616767448,82.0372020522045,41.5212489608193,91.2058900631578,53.9022812402069,13.785910125567,116.258707783349,110.298083239468,-4.35410514320068,33.8947013333096,71.2990865502966,91.6764472565484,103.618734944368,58.6327413763724,30.9444988079017,20.3188890367212,-6.11308026931141,112.220319308981,134.014385152462,136.510799412065,122.537689991698,98.7091577574195,81.2865619061269,-9.5259524821862,-12.2064541923179,70.0690338154616,58.6799464156607,7.896926408436,-3.35580294529507,45.5848795737924,18.4479175313971,2.41081875295163,2.57434771645541,-22.3118865866958,-22.3118865866957,-1.73029327280381,-22.3118865866957,190.305127172657,196.221031714531,171.532660988827,180.095737410207,161.552124075994,241.084013801906,247.658718560054,121.458440634562,177.647701879244,164.425063223403,230.374387339944,213.760840058251,147.642242189514,41.1829456545146,225.596745385455,-22.3118865866957,222.283730726769,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1004.03489640131,-1026.346782988,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,-1026.346782988,-1004.03489640131,-1004.03489640131,-1.86573461925877,-1004.03489640131,-1004.03489640131,-5.32040408696844,-1004.03489640131,-10.6773780488078,-1004.03489640131,-1004.03489640131,0.382728221620312,-1004.03489640131,-1004.03489640131,-1.70805153437419,-1004.03489640131,-1004.03489640131,-1.86573462011449,-1004.03489640131,-1004.03489640131,-1004.03489640131,0.402599399457984,-1004.03489640131,-1004.03489640131,0.382728222050275,-1004.03489640131,-1026.346782988,-1026.346782988,-22.3118865866957,-1026.346782988,-1004.03489640131,-12.9302953228488,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1026.346782988,13.9234215177135,-22.3118865866957,-6.49415957969711,13.2300547718002,-22.3118865866957,-22.3118865866957,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246200977869,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.9424620098423,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201298853,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201642523,-12.1322536834644,-1004.03489640131,-1004.03489640131,-12.1322536835307,-1004.03489640131,7.94246201201122,-1004.03489640131,7.94246201712883,-1026.346782988,-1004.03489640131,7.94246201376984,-1004.03489640131,-1004.03489640131,-1004.03489640131,7.94246201605364,-1004.03489640131,7.94246201517802,-1004.03489640131,-22.3118865866958,-8.50415616914523,-1004.03489640131,-13.3172915499275,20.8012933970991,-1004.03489640131,-6.484319039318,13.3533221799019,-10.7426316298049,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-6.13899584061471,-10.7255646354427,12.7285795284387,-1004.03489640131,-6.48431904086471,13.3533221795731,-10.7426316282136,-1004.03489640131,8.82622136200843,-10.6244028613748,-13.8349005388457,-22.3118865866958,3.06730449534194,39.8335511594283,30.0880481346721,17.7013607076611,79.3166377725732,6.91505412343815,49.302617060269,55.6737065015006,33.896174672252,30.1818915205478,49.1977067452478,31.4320296162073,28.5827974601651,82.5841809424686,56.0035793430457,75.3638413273682,35.4245742161953,120.813991583567,28.9201819928979,97.5353811488949,112.962430523175,100.397898062442,79.2440478358114,-6.47786147222564,-22.3118865866958,6.01909653183412,-1004.03489640131,-16.1237549139601,-1004.03489640131,-1004.03489640131,-16.1237549147168,-1004.03489640131,-11.4324994449325,-1004.03489640131,24.794812689333,6.01909653028298,-1004.03489640131,-16.1237549133937,-1004.03489640131,-1004.03489640131,-11.4324994442847,-1004.03489640131,24.794812690903,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,-11.4324994444304,-1004.03489640131,24.7948126894471,-1004.03489640131,-1004.03489640131,-1004.03489640131,-16.1338695179189,-1026.346782988,-22.3118865866958,-1026.346782988,-22.3118865866958,-1004.03489640131,-6.34574844371338,-1004.03489640131,36.4817071513331,12.9083498609584,22.8148039371792,18.9003815275257,22.6298880681195,52.7842000914906,29.0872009820332,52.7909118540404,-1004.03489640131,-1004.03489640131,-1004.03489640131,-1004.03489640131,29.0872009798487,-1004.03489640131,-1004.03489640131,5.94417597708554,42.2415916864318,24.9363742557928,35.2748892154652,44.5841758101249,78.4540574653122,57.9102565849224,48.439142437713,82.7357735273924,59.7368986308019,65.8816659359867,86.2690671239712,-22.3118865866957,-22.3118865866957,34.0135295427073,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,9.74183260070259,12.6033374147904,-11.2927061365044,6.49359155273152,27.6621948168156,25.4438495598533,66.4446359369044,48.3624418097024,44.3564104056831,54.6609580245687,50.02069492144,31.7822263191927,84.300935334491,11.8227263230977,55.6003005623927,60.2775545386897,93.6721845520076,71.5998437864305,105.637647564996,71.3923875724517,65.8774578605704,92.0437817127173,75.58796972012,106.408727024305,95.2889844454791,132.894992012272,71.841674414088,77.3775199284386,-1004.03489640131,2.09642019255745,-1004.03489640131,17.8488203688954,-11.2927061371036,7.98386561066536,49.3558235075603,26.6160653380965,25.6209179159651,39.2082757506033,48.4245118896995,31.86769908222,11.7661131947169,62.1873964128244,-1004.03489640131,2.09642019394886,14.6487589343,0.0674819430308276,-1004.03489640131,-1004.03489640131,17.8488203686265,-1004.03489640131,-3.37610189835431,45.6887277886844,19.7626370056832,29.0747921877152,29.7888678870024,18.4118623869763,0.217025254320106,40.3535085741369,67.4795814870575,71.3017569870563,52.7909118543566,10.8842284729205,31.1269461503889,58.9309301081481,14.472612883317,39.730189767963,28.3950033974821,10.8842284729658,31.3337696889882,25.1121229429542,73.6390988135703,3.84229941083208,-5.3917958174261,58.4845535190493,50.3371866765528,8.5911431029046,36.6069463057471,38.4019007598162,48.0098989319283,53.0569290479509,14.4726128820075,32.4571777704739,32.8258800064307,20.9938577041856,62.9141114959777,-22.3118865866957,-22.3118865866957,-22.3118865866957,-9.18572137881705,6.68869760424582,34.9514705960922,15.1894312213601,96.6284954807157,-9.20425961578331,6.7571125444814,42.0932459073928,28.0148305440199,22.4591346846447,32.4416003527506,-7.79078171769623,3.95109190095178,32.0576937223642,3.38675745593162,24.7908238431443,5.13486699569512,5.67287543575185,-6.21987739881001,6.48614489977734,38.9258410821357,7.9398213645461,9.4809051500589,56.6257930751213,45.7494971301226,56.0934383489007,124.364818249116,66.2179535117044,78.5595580004794,115.941515270475,91.8195145555857,14.5267462665565,49.0813288191072,73.1665860419262,66.4235879121048,86.2848122204173,85.0237615358961,74.4417692401076,129.072827003248,45.4211782855838,107.820691042524,106.560414115413,65.2749758325582,66.0612518269076,110.351919135679,133.657200095536,124.02871798734,164.618122778342,143.295070063987,-22.3118865866957,125.286866567413,167.206870076219,128.670420424397,149.335151389059,101.284401838968,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,189.094824455141,-22.3118865866957,-22.3118865866957,-22.3118865866958,169.1503310417,-22.3118865866957,-22.3118865866957,207.550242542316,-22.3118865866957,-22.3118865866957,205.124985853367,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,57.3110920668582,83.6186496049072,79.7748493477665,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,52.3089918464665,30.8997221521129,-3.72696222840335,63.6206516399131,68.7630789093847,27.8732607773815,57.682840413622,38.5678004125347,43.9160522688983,63.9213601317228,86.9134675411592,62.5507954059221,58.2409711794388,78.4813257862671,123.340217206628,96.2270058656176,101.68719302365,125.238229640223,119.302666041622,160.69532608623,139.63732345322,154.196584781469,26.6247045876559,28.1957910599185,33.3916214452844,94.9629279042715,14.8267599096186,-5.31537789436834,33.3775842056455,113.167313235841,98.1964396678895,148.150650908305,146.229898342763,-22.3118865866957,84.3857126287415,64.595888473353,132.310764708529,111.034503849403,105.880261777928,45.0906227521446,41.5702000692108,76.0119194318353,10.9514477851601,64.1937246983898,92.2094414649446,37.0927960852875,55.7983044896501,57.9721780917667,38.238017352515,15.9903111920977,-4.44186718559575,76.8634528898766,77.3500513712026,46.9899633028219,112.024294428727,69.4322040115057,98.5690003558271,81.8535221169006,103.343021782206,71.1887793700487,38.1922001504714,16.8361140174449,54.9794152506233,11.1291969380391,48.2510333624119,-22.3118865866957,134.059772896181,102.633988373431,7.47066646891517,-7.76120450802784,148.702651385051,35.2725682574065,10.8760566333162,103.769207124703,108.584558205041,82.4762969081376,111.333747369104,140.008272226531,119.637926942354,53.0133995693175,69.0122776633632,93.48046637123,123.82065470455,-2.17538648718727,30.4877194726769,57.8491961739253,81.8619055631148,82.0806921298806,-22.3118865866957,81.9764978573661,143.972911736266,129.203801735713,-22.3118865866957,165.380711199236,130.755041172074,144.105141774104,131.768603084792,-22.3118865866958,160.496776905666,110.998339533156,97.6154159592663,165.962923784006,97.8697536666336,120.294138167316,155.286998176178,133.180361202721,143.914427993959,98.1874973164513,92.8872748082143,119.70805241835,83.76012276542,113.767066512325,78.654436755952,103.445083174279,134.818948423154,50.030424278119,87.8427410633602,85.2716767805422,117.193842072871,97.2291357087095,89.7793553454653,81.552265876838,150.130158069731,167.792733445885,145.222375983542,134.950676988781,64.6421181675113,75.4243622866026,107.039914920236,172.971363388437,151.603851258647,80.1775946924533,121.643706760136,133.542100249927,163.209440688717,153.570978880148,185.171468864147,191.744352747078,112.069012548187,89.13582843123,75.489521530191,80.8928702670617,-22.3118865866957,133.813371947464,-22.3118865866958,173.072757643504,-22.3118865866957,151.404394456582,-22.3118865866957,-22.3118865866957,-22.3118865866958,186.842794225428,125.120332772188,110.894990504071,133.487876800215,162.409765286135,32.338789604893,137.000922383199,74.3724521277803,59.8885237442851,95.8706561946358,107.071111326464,127.933019703814,125.946760411667,144.179027577437,187.568536077155,168.720680475072,164.637064573745,165.309466457639,193.005552797276,175.250819165573,194.951362682138,237.876496552214,221.997933390133,214.487637153331,214.526771597227,222.582571044266,-22.3118865866957,243.124519768589,-22.3118865866957,148.960265600981,175.988957504124,169.063972555285,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,161.328054045441,153.081265299424,191.888735708948,48.2469911144827,51.1049869508653,29.2865410655509,6.74286754377272,14.2485746261325,20.5917273334148,-6.60393676078365,-7.33906708218626,8.09623833480697,115.771088269857,89.2461552593629,69.2556698469793,141.418711174504,175.452767184112,197.679048484884,196.798900654555,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,186.018284723395,149.020411318709,182.290717348143,173.397337266187,181.238586478799,206.936226086974,221.883132402739,228.168683489221,-22.3118865866957,212.636504593589,228.492467195201,-22.3118865866958,123.070447616465,136.329489994976,125.950283795707,180.29259927096,158.19624829373,153.814593317637,173.965899740664,204.370738868307,184.496742851761,208.672429926777,207.21116504315,240.036003445492,221.555635415164,-22.3118865866957,-22.3118865866957,242.044608012181,179.687835642647,163.999296182837,203.791627808573,215.564829310416,148.256236161921,169.421351067773,121.943156026546,191.915096770084,170.651811006466,205.81917456683,137.854233245889,190.94178127132,169.347438328254,151.059751030985,162.714538128504,128.456885872335,143.591846379224,113.434977406849,141.59273033209,150.948543710117,187.097855982985,113.075891616281,165.51490656934,131.657211306064,155.562518585006,167.778790409234,189.217532297872,154.901650429128,184.645347298793,210.078384525232,198.466507073285,240.449823907673,-22.3118865866957,232.815081733634,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866958,-22.3118865866957,107.67738123976,105.127885634911,103.826987131366,87.0035269652008,189.542649952155,193.987896921384,210.571723468924,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,233.340315418878,237.868299647795,233.506897098169,237.215241979543,-22.3118865866957,228.801206476262,95.0209284772066,106.832101453779,75.2560528057624,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,225.371204714401,201.520276060854,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866957,-22.3118865866958,-22.3118865866957,-22.3118865866957,224.416599341426,203.630201488263,216.278175796255,213.861119017491,197.8686585431,189.601313376317,180.495193662822,-1026.346782988,38.8974145729957,8.07752256008393,45.2836048886647,15.1606947401658,27.7935420792658,48.7699646667651,35.2565825181601,62.2038678723161,76.5147521665165,66.2661719043376,57.4353616767448,82.0372020522045,41.5212489608193,91.2058900631578,53.902281240207,13.785910125567,116.258707783349,110.298083239468,-4.35410514320068,33.8947013333096,71.2990865502966,91.6764472565484,103.618734944368,58.6327413763724,30.9444988079017,20.3188890367212,-6.11308026931141,112.220319308981,134.014385152462,136.510799412065,122.537689991698,98.7091577574195,81.2865619061268,-9.5259524821862,-12.2064541923179,70.0690338154616,58.6799464156607,7.896926408436,-3.35580294529507,45.5848795737924,18.4479175313971,2.41081875295163,2.57434771645541,-22.3118865866957,-22.3118865866957,-1.73029327280381,-22.3118865866958,190.305127172657,196.221031714531,171.532660988827,180.095737410207,161.552124075994,241.084013801906,247.658718560054,121.458440634562,177.647701879244,164.425063223403,230.374387339944,213.760840058251,147.642242189514,41.1829456545146,225.596745385455,-22.3118865866957,222.283730726769]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive434.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive434.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive434.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive434_field1":[0,0,0,0,413.275089695086,0,0,276.751655410237,0,131.550938066866,26.6030340755727,401.698131683618,66.2418247986518,0,590.072191827821,369.213764220727,106.369092729509,296.21643875279,222.354953734428,-257.747916622082,359.14516695488,245.0602996677,232.030034697694,108.357839882501,34.646982540087,0,34.0812956490903,197.688845156403,0,253.410345772057,0,201.459484043884,0,0,12.1542599843795,121.357330712682,0,0,276.064740987514,82.0078322180226,22.2172984241735,-1.53516540570227,45.0839396323146,31.431082710255,0,0,0,0,413.275089695086,0,0,276.751655410238,0,131.550938066866,26.6030340755727,401.698131683618,66.2418247986518,0,590.072191827821,369.213764220727,106.369092729509,296.21643875279,222.354953734428,-257.747916622082,359.14516695488,245.0602996677,232.030034697694,108.357839882501,34.646982540087,0,34.0812956490903,197.688845156403,0,253.410345772057,0,201.459484043884,0,0,12.1542599843795,121.357330712682,0,0,276.064740987514,82.0078322180226,22.2172984241735,-1.53516540570227,45.0839396323146,31.431082710255,0,0,0,0,413.275089695086,0,0,276.751655410238,0,131.550938066866,26.6030340755727,401.698131683618,66.2418247986518,0,590.072191827821,369.213764220727,106.369092729509,296.21643875279,222.354953734428,-257.747916622082,359.14516695488,245.0602996677,232.030034697694,108.357839882501,34.646982540087,0,34.0812956490903,197.688845156403,0,253.410345772057,0,201.459484043884,0,0,12.1542599843795,121.357330712682,0,0,276.064740987514,82.0078322180226,22.2172984241735,-1.53516540570227,45.0839396323146,31.431082710255,0,0,0,0,413.275089695086,0,0,276.751655410237,0,131.550938066866,26.6030340755727,401.698131683618,66.2418247986518,0,590.072191827821,369.213764220727,106.369092729509,296.21643875279,222.354953734428,-257.747916622082,359.14516695488,245.0602996677,232.030034697694,108.357839882501,34.646982540087,0,34.0812956490903,197.688845156403,0,253.410345772057,0,201.459484043884,0,0,12.1542599843795,121.357330712682,0,0,276.064740987514,82.0078322180226,22.2172984241735,-1.53516540570227,45.0839396323146,31.431082710255],"Archive434_field2":[0,0,0,0,2555.95957266083,0,0,4041.7452837218,0,2516.13519056802,341.857686728066,2517.59249843303,2143.65948851967,0,3601.22984856953,3606.81841932599,1593.21913861356,3523.2061556584,2976.84867903177,3603.42664264988,2449.16578864909,1427.06707471737,2338.13852009975,1185.3425868718,322.389477190997,0,576.561787411356,3446.3912931885,0,2075.47886697995,0,732.240744120801,0,0,1532.02910752688,1208.1461613723,0,0,1349.87195064257,543.734175524905,244.416550438345,284.260085873458,223.100306494594,230.462361991723,0,0,0,0,2555.95957266083,0,0,4041.7452837218,0,2516.13519056802,341.857686728066,2517.59249843303,2143.65948851967,0,3601.22984856953,3606.81841932599,1593.21913861356,3523.2061556584,2976.84867903177,3603.42664264988,2449.16578864908,1427.06707471737,2338.13852009975,1185.3425868718,322.389477190997,0,576.561787411356,3446.3912931885,0,2075.47886697995,0,732.240744120801,0,0,1532.02910752688,1208.1461613723,0,0,1349.87195064257,543.734175524905,244.416550438345,284.260085873458,223.100306494594,230.462361991723,0,0,0,0,2555.95957266083,0,0,4041.7452837218,0,2516.13519056802,341.857686728066,2517.59249843303,2143.65948851967,0,3601.22984856953,3606.81841932599,1593.21913861356,3523.2061556584,2976.84867903177,3603.42664264988,2449.16578864908,1427.06707471737,2338.13852009975,1185.3425868718,322.389477190997,0,576.561787411356,3446.3912931885,0,2075.47886697995,0,732.240744120801,0,0,1532.02910752688,1208.1461613723,0,0,1349.87195064257,543.734175524905,244.416550438345,284.260085873458,223.100306494594,230.462361991723,0,0,0,0,2555.95957266083,0,0,4041.7452837218,0,2516.13519056802,341.857686728066,2517.59249843303,2143.65948851967,0,3601.22984856953,3606.81841932599,1593.21913861356,3523.2061556584,2976.84867903177,3603.42664264988,2449.16578864909,1427.06707471737,2338.13852009975,1185.3425868718,322.389477190997,0,576.561787411356,3446.3912931885,0,2075.47886697995,0,732.240744120801,0,0,1532.02910752688,1208.1461613723,0,0,1349.87195064257,543.734175524905,244.416550438345,284.260085873458,223.100306494594,230.462361991723],"Archive434_field3":[0,0,0,0,-4.02841902861099,0,0,-2.41722640773173,0,-3.49518128927003,-5.53170784217995,-2.72961065094729,-3.15870201290027,0,-2.68901684351224,-2.72029772312065,-6.47665040115834,-3.02168382092624,-2.77778736916657,-3.19907966249859,-3.2286892903169,-5.34537584517361,-3.25732799852613,-4.84824922365706,-4.72295306991359,0,-5.8169726878665,-2.45919394362123,0,-5.70841040472094,0,-4.44580692587613,0,0,-6.10677161954177,-5.88043642137793,0,0,-5.40623513362475,-6.84559898078564,-6.79188077390326,-7.61038896818001,-8.61707303945501,-5.79906266521387,0,0,0,0,-5.63065841136879,0,0,-2.59619672063113,0,-3.8819919295586,-5.70296547565734,-3.30737789467289,-3.94365324966561,0,-2.87472447035007,-3.26272238553254,-6.5147580029068,-3.70699117263099,-3.00891748704196,-3.50934856711186,-4.05483131410476,-6.6108639075604,-3.60850332751039,-6.64479953315469,-5.87026616869855,0,-7.08389333113751,-3.02256600218184,0,-6.06330126105591,0,-6.06290426916526,0,0,-7.1519472186002,-5.29329755246685,0,0,-6.3389191466258,-7.68392566948324,-7.1628052524175,-7.98998962226613,-9.03298669991502,-6.23709863359581,0,0,0,0,-7.23289779412658,0,0,-2.77516703353051,0,-4.26880256984717,-5.87422310913472,-3.8851451383985,-4.72860448643094,0,-3.0604320971879,-3.80514704794442,-6.55286560465525,-4.39229852433577,-3.24004760491737,-3.81961747172513,-4.8809733378926,-7.87635196994719,-3.95967865649464,-8.4413498426523,-7.01757926748353,0,-8.3508139744085,-3.58593806074247,0,-6.41819211739087,0,-7.68000161245441,0,0,-8.19712281765863,-4.70615868355578,0,0,-7.27160315962685,-8.52225235818084,-7.53372973093173,-8.36959027635225,-9.44890036037502,-6.67513460197773,0,0,0,0,-8.83513717688438,0,0,-2.9541373464299,0,-4.65561321013574,-6.04548074261211,-4.46291238212411,-5.51355572319627,0,-3.24613972402572,-4.3475717103563,-6.59097320640371,-5.07760587604053,-3.47117772279276,-4.1298863763384,-5.70711536168046,-9.14184003233398,-4.31085398547889,-10.2379001521499,-8.1648923662685,0,-9.61773461767949,-4.14931011930309,0,-6.77308297372584,0,-9.29709895574355,0,0,-9.24229841671705,-4.1190198146447,0,0,-8.20428717262791,-9.36057904687844,-7.90465420944597,-8.74919093043837,-9.86481402083503,-7.11317057035967],"Archive434_field4":[0,0,0,0,2589.15852450152,0,0,4051.20997484001,0,2519.57420268054,342.935852877389,2549.43931638677,2144.6850490157,0,3649.25318998397,3625.66756800716,1596.77911889311,3535.6378384147,2985.14279380503,3612.63446692199,2475.36032441151,1447.96531700816,2349.62556301249,1190.29491103527,324.280271814858,0,577.597495309104,3452.05733916742,0,2090.89978635372,0,759.461780645369,0,0,1532.08948988138,1214.2402268451,0,0,1377.82264886538,549.92635907388,245.518203239385,284.366086539615,227.773050026818,232.668094896868,0,0,0,0,2589.16151314536,0,0,4051.21008557901,0,2519.5747689605,342.938658089617,2549.44000045361,2144.68634874054,0,3649.25333155118,3625.66801555749,1596.77927391499,3535.63849051911,2985.1430178281,3612.63475499661,2475.36153983476,1447.97054173668,2349.62607609643,1190.30358441734,324.29901083338,0,577.611643719918,3452.05778647607,0,2090.90078536665,0,759.47296849196,0,0,1532.09401235512,1214.23752534473,0,0,1377.82662415996,549.937433616354,245.528744257231,284.376498831694,227.78916396412,232.679424647965,0,0,0,0,2589.16549329114,0,0,4051.21020422438,0,2519.57539462434,342.941548801289,2549.44081545681,2144.68793575509,0,3649.2534825689,3625.66854425819,1596.7794298463,3535.63927545543,2985.14325974683,3612.63506971845,2475.36303097886,1447.97687244513,2349.62664166695,1190.31496928464,324.321807502044,0,577.628570545237,3452.05832572634,0,2090.90184461508,0,759.487599297433,0,0,1532.09924781911,1214.23510774721,0,0,1377.83123079737,549.949785856949,245.539845159818,284.387417434391,227.806036111364,232.691578440427,0,0,0,0,2589.17046493427,0,0,4051.21033077612,0,2519.57607967201,342.944525010241,2549.44176139626,2144.68981005874,0,3649.25364303712,3625.66915410922,1596.77958668704,3535.64019322358,2985.1435195612,3612.63541108752,2475.36479784332,1447.98430911899,2349.62725972401,1190.32906555938,324.34866096528,0,577.648275540813,3452.05895691821,0,2090.90296409892,0,759.50567286282,0,0,1532.10519626604,1214.23297405422,0,0,1377.83646877128,549.963415709573,245.551505871212,284.398842289391,227.823666300096,232.704556145138],"Archive434_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,5997180,5577377.4,1379351.4,1799154,3688265.7,5787278.7,3478364.4,1589252.7,3898167,2533808.55,4842722.85,2743709.85,3583315.05,2428857.9,1484302.05,2061530.625,1956579.975,2402620.2375,2802744.590625,1694203.35,3143834.203125,3619801.79941406,3348185.22836539,3970710.06484059,4572641.23178246,4527870.9,4430994.81106745,2192718.9375,2848660.5,2258313.09375,4947673.5,4064229.57697249,5892229.35,4003117.65,3793216.35,3137274.7875,5682328.05,3373413.75,3058561.8,4331532.024543,5279716.63080448,5076230.62974912,5419951.425,5026571.27142495,2998590,2788688.7,689675.7,899577,1844132.85,2893639.35,1739182.2,794626.35,1949083.5,1266904.275,2421361.425,1371854.925,1791657.525,1214428.95,742151.025,1030765.3125,978289.9875,1201310.11875,1401372.2953125,847101.675,1571917.1015625,1809900.89970703,1674092.61418269,1985355.03242029,2286320.61589123,2263935.45,2215497.40553372,1096359.46875,1424330.25,1129156.546875,2473836.75,2032114.78848625,2946114.675,2001558.825,1896608.175,1568637.39375,2841164.025,1686706.875,1529280.9,2165766.0122715,2639858.31540224,2538115.31487456,2709975.7125,2513285.63571248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive435.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive435.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive435.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive435_field1":[-100,-362.01961732162,-361.150685764321,-100,-398.008041738517,-398.017209432531,-361.217289286875,-398.166164883801,-100,-379.646268004692,-350,-350,-379.81944290482,-361.475402906621,-379.609916578843,-389.228632389456,-369.552522666259,-379.557317109689,-389.112683251114,-411.154427202844,-369.754201132588,-375.054084714895,-361.525453855928,-367.220343886317,-361.582430019224,-369.755607382937,-387.088418653707,-372.579913921101,-386.478527473284,-361.484223599786,-380.356081550112,-390.13129236212,-379.832668869955,-370.837198035639,-386.993111860485,-392.534120956361,-394.817591088953,-408.857134363307,-399.88066458293,-388.677696117594,-379.116367777456,-380.967948153731,-374.106180918888,-389.580897703459,-390.895157108706,-393.811535637087,-350,-396.850609014077,-419.651041123819,-412.5,-387.368866422332,-392.562741935592,-403.969735282776,-425.342432743268,-350,-402.484174298823,-401.500959981014,-100,-422.255617071632,-226.050277337542,-312.14276856129,-225,-320.458977449135,-100,-231.072,-395.953207372578,-411.347066697207,-371.563608973942,-423.591817174582,-409.324921242635,-100,-412.811993316107,-422.407157932553,-409.138704886329,-210.490936240545,-100,-225,-256.25,-313.637502977648,-270.240705131938,-257.670454545455,-100,-362.095959653162,-369.955971451818,-100,-223.643705616733,-312.244735638371,-225,-369.608669529138,-361.391082772365,-366.150615299252,-100,-362.01961732162,-361.150685764321,-100,-398.008041738517,-398.017209432531,-361.217289286874,-398.166164883801,-100,-379.646268004692,-350,-350,-379.81944290482,-361.475402906621,-379.609916578843,-389.228632389456,-369.552522666259,-379.557317109689,-389.112683251114,-411.154427202844,-369.754201132589,-375.054084714895,-361.525453855928,-367.220343886317,-361.582430019224,-369.755607382937,-387.088418653707,-372.579913921101,-386.478527473283,-361.484223599786,-380.356081550112,-390.13129236212,-379.832668869955,-370.837198035639,-386.993111860485,-392.534120956361,-394.817591088953,-408.857134363307,-399.880664582929,-388.677696117594,-379.116367777456,-380.967948153731,-374.106180918888,-389.580897703459,-390.895157108706,-393.811535637087,-350,-396.850609014077,-419.651041123819,-412.5,-387.368866422332,-392.562741935592,-403.969735282776,-425.342432743268,-350,-402.484174298823,-401.500959981014,-100,-422.255617071632,-226.050277337542,-312.14276856129,-225,-320.458977449135,-100,-231.072,-395.953207372578,-411.347066697207,-371.563608973942,-423.591817174582,-409.324921242635,-100,-412.811993316107,-422.407157932553,-409.138704886329,-210.490936240545,-100,-225,-256.25,-313.637502977648,-270.240705131938,-257.670454545455,-100,-362.095959653162,-369.955971451818,-100,-223.643705616733,-312.244735638371,-225,-369.608669529138,-361.391082772365,-366.150615299252,-100,-362.01961732162,-361.150685764321,-100,-398.008041738517,-398.017209432531,-361.217289286874,-398.166164883801,-100,-379.646268004692,-350,-350,-379.81944290482,-361.475402906621,-379.609916578843,-389.228632389456,-369.552522666259,-379.557317109689,-389.112683251114,-411.154427202844,-369.754201132589,-375.054084714895,-361.525453855928,-367.220343886317,-361.582430019224,-369.755607382937,-387.088418653707,-372.579913921101,-386.478527473283,-361.484223599786,-380.356081550112,-390.13129236212,-379.832668869955,-370.837198035639,-386.993111860485,-392.534120956361,-394.817591088953,-408.857134363307,-399.880664582929,-388.677696117594,-379.116367777456,-380.967948153731,-374.106180918888,-389.580897703459,-390.895157108706,-393.811535637087,-350,-396.850609014077,-419.651041123819,-412.5,-387.368866422332,-392.562741935592,-403.969735282776,-425.342432743268,-350,-402.484174298823,-401.500959981014,-100,-422.255617071632,-226.050277337542,-312.14276856129,-225,-320.458977449135,-100,-231.072,-395.953207372578,-411.347066697207,-371.563608973942,-423.591817174582,-409.324921242635,-100,-412.811993316107,-422.407157932553,-409.138704886329,-210.490936240545,-100,-225,-256.25,-313.637502977648,-270.240705131938,-257.670454545455,-100,-362.095959653162,-369.955971451818,-100,-223.643705616733,-312.244735638371,-225,-369.608669529138,-361.391082772365,-366.150615299252,-100,-362.01961732162,-361.150685764321,-100,-398.008041738517,-398.017209432531,-361.217289286875,-398.166164883801,-100,-379.646268004692,-350,-350,-379.81944290482,-361.475402906621,-379.609916578843,-389.228632389456,-369.552522666259,-379.557317109689,-389.112683251114,-411.154427202844,-369.754201132588,-375.054084714895,-361.525453855928,-367.220343886317,-361.582430019224,-369.755607382937,-387.088418653707,-372.579913921101,-386.478527473284,-361.484223599786,-380.356081550112,-390.13129236212,-379.832668869955,-370.837198035639,-386.993111860485,-392.534120956361,-394.817591088953,-408.857134363307,-399.88066458293,-388.677696117594,-379.116367777456,-380.967948153731,-374.106180918888,-389.580897703459,-390.895157108706,-393.811535637087,-350,-396.850609014077,-419.651041123819,-412.5,-387.368866422332,-392.562741935592,-403.969735282776,-425.342432743268,-350,-402.484174298823,-401.500959981014,-100,-422.255617071632,-226.050277337542,-312.14276856129,-225,-320.458977449135,-100,-231.072,-395.953207372578,-411.347066697207,-371.563608973942,-423.591817174582,-409.324921242635,-100,-412.811993316107,-422.407157932553,-409.138704886329,-210.490936240545,-100,-225,-256.25,-313.637502977648,-270.240705131938,-257.670454545455,-100,-362.095959653162,-369.955971451818,-100,-223.643705616733,-312.244735638371,-225,-369.608669529138,-361.391082772365,-366.150615299252],"Archive435_field2":[409.840308525794,41.847414870329,41.7469713097252,409.935884350669,46.007472654616,46.0085323880571,41.7546702992461,46.0257507935473,409.94072449348,43.8849557344573,134.566967939964,134.101999540174,43.9049737708952,41.7845067700129,43.8807537157659,44.9926227189557,42.718176011585,43.8746735154057,44.9792196560721,47.5271202655414,42.7414888986416,43.3541253868908,41.7902923759306,42.4485893696288,41.7968784973149,42.7416514532076,44.7452261475387,43.0681252733225,44.6747261855704,41.7855263921236,43.9670061551929,45.0969650931131,43.9065026174648,42.8666771993214,44.7342092226951,45.3747184529708,45.6386746515039,47.2615662404695,46.2239372364128,44.9289376101036,43.8237022730757,44.0377344648806,43.2445530833174,45.0333425916758,45.1852635261972,45.5223803462718,134.753015810653,45.8736799950841,48.5092806533531,69.376731723584,44.7776443192663,45.3780268758699,46.6966106215641,49.167173250585,134.46563942736,80.1958452463887,81.4211511493071,409.931016033765,48.8103548632421,271.414305225514,176.263288881957,272.694568845866,167.192176594521,409.914506663148,265.899952968368,45.7699454541911,47.5493882986957,114.134313862388,48.9648120179997,47.315639751057,409.897611816235,47.7187255087321,48.827872127427,47.2941141962387,288.555166100958,410.078866850952,272.57110510568,237.534123052198,174.874178931792,222.361403727501,236.716751918329,410.079942557355,41.8562396109435,42.7648124033727,409.967806994256,274.121431821217,176.174450930658,272.739424709938,42.7246662705438,41.7747598406441,42.3249348110368,409.840308525794,41.847414870329,41.7469713097252,409.935884350669,46.007472654616,46.0085323880571,41.7546702992461,46.0257507935473,409.94072449348,43.8849557344573,134.566967939964,134.101999540174,43.9049737708952,41.7845067700129,43.8807537157659,44.9926227189557,42.718176011585,43.8746735154057,44.9792196560721,47.5271202655414,42.7414888986416,43.3541253868908,41.7902923759306,42.4485893696288,41.7968784973149,42.7416514532076,44.7452261475387,43.0681252733225,44.6747261855704,41.7855263921236,43.9670061551929,45.0969650931131,43.9065026174648,42.8666771993214,44.7342092226951,45.3747184529708,45.6386746515039,47.2615662404695,46.2239372364128,44.9289376101036,43.8237022730756,44.0377344648806,43.2445530833174,45.0333425916758,45.1852635261972,45.5223803462718,134.753015810653,45.8736799950841,48.5092806533532,69.376731723584,44.7776443192663,45.3780268758699,46.6966106215641,49.167173250585,134.46563942736,80.1958452463887,81.4211511493071,409.931016033765,48.8103548632421,271.414305225514,176.263288881957,272.694568845866,167.192176594521,409.914506663148,265.899952968368,45.7699454541911,47.5493882986958,114.134313862387,48.9648120179997,47.315639751057,409.897611816235,47.7187255087321,48.827872127427,47.2941141962387,288.555166100958,410.078866850953,272.57110510568,237.534123052198,174.874178931792,222.361403727501,236.716751918329,410.079942557355,41.8562396109435,42.7648124033727,409.967806994256,274.121431821217,176.174450930658,272.739424709938,42.7246662705438,41.7747598406441,42.3249348110368,409.840308525794,41.847414870329,41.7469713097252,409.935884350669,46.007472654616,46.0085323880571,41.7546702992461,46.0257507935473,409.94072449348,43.8849557344573,134.566967939964,134.101999540174,43.9049737708952,41.7845067700129,43.8807537157659,44.9926227189557,42.718176011585,43.8746735154057,44.9792196560721,47.5271202655414,42.7414888986416,43.3541253868908,41.7902923759306,42.4485893696288,41.7968784973149,42.7416514532076,44.7452261475387,43.0681252733225,44.6747261855704,41.7855263921236,43.9670061551929,45.0969650931131,43.9065026174648,42.8666771993214,44.7342092226951,45.3747184529708,45.6386746515039,47.2615662404695,46.2239372364128,44.9289376101036,43.8237022730756,44.0377344648806,43.2445530833174,45.0333425916758,45.1852635261972,45.5223803462718,134.753015810653,45.8736799950841,48.5092806533532,69.376731723584,44.7776443192663,45.3780268758699,46.6966106215641,49.167173250585,134.46563942736,80.1958452463887,81.4211511493071,409.931016033765,48.8103548632421,271.414305225514,176.263288881957,272.694568845866,167.192176594521,409.914506663148,265.899952968368,45.7699454541911,47.5493882986958,114.134313862387,48.9648120179997,47.315639751057,409.897611816235,47.7187255087321,48.827872127427,47.2941141962387,288.555166100958,410.078866850953,272.57110510568,237.534123052198,174.874178931792,222.361403727501,236.716751918329,410.079942557355,41.8562396109435,42.7648124033727,409.967806994256,274.121431821217,176.174450930658,272.739424709938,42.7246662705438,41.7747598406441,42.3249348110368,409.840308525794,41.847414870329,41.7469713097252,409.935884350669,46.007472654616,46.0085323880571,41.7546702992461,46.0257507935473,409.94072449348,43.8849557344573,134.566967939964,134.101999540174,43.9049737708952,41.7845067700129,43.8807537157659,44.9926227189557,42.718176011585,43.8746735154057,44.9792196560721,47.5271202655414,42.7414888986416,43.3541253868908,41.7902923759306,42.4485893696288,41.7968784973149,42.7416514532076,44.7452261475387,43.0681252733225,44.6747261855704,41.7855263921236,43.9670061551929,45.0969650931131,43.9065026174648,42.8666771993214,44.7342092226951,45.3747184529708,45.6386746515039,47.2615662404695,46.2239372364128,44.9289376101036,43.8237022730757,44.0377344648806,43.2445530833174,45.0333425916758,45.1852635261972,45.5223803462718,134.753015810653,45.8736799950841,48.5092806533531,69.376731723584,44.7776443192663,45.3780268758699,46.6966106215641,49.167173250585,134.46563942736,80.1958452463887,81.4211511493071,409.931016033765,48.8103548632421,271.414305225514,176.263288881957,272.694568845866,167.192176594521,409.914506663148,265.899952968368,45.7699454541911,47.5493882986957,114.134313862388,48.9648120179997,47.315639751057,409.897611816235,47.7187255087321,48.827872127427,47.2941141962387,288.555166100958,410.078866850952,272.57110510568,237.534123052198,174.874178931792,222.361403727501,236.716751918329,410.079942557355,41.8562396109435,42.7648124033727,409.967806994256,274.121431821217,176.174450930658,272.739424709938,42.7246662705438,41.7747598406441,42.3249348110368],"Archive435_field3":[509.840308525794,403.867032191949,402.897657074046,509.935884350669,444.015514393133,444.025741820588,402.971959586121,444.191915677348,509.94072449348,423.531223739149,484.566967939964,484.101999540174,423.724416675715,403.259909676633,423.490670294608,434.221255108412,412.270698677844,423.431990625095,434.091902907187,458.681547468386,412.49569003123,418.408210101786,403.315746231859,409.668933255945,403.379308516539,412.497258836145,431.833644801246,415.648039194423,431.153253658854,403.26974999191,424.323087705305,435.228257455233,423.73917148742,413.70387523496,431.72732108318,437.908839409332,440.456265740457,456.118700603777,446.104601819342,433.606633727698,422.940070050532,425.005682618612,417.350734002205,434.614240295135,436.080420634903,439.333915983359,484.753015810653,442.724289009161,468.160321777172,481.876731723584,432.146510741598,437.940768811462,450.66634590434,474.509605993853,484.46563942736,482.680019545212,482.922111130321,509.931016033765,471.065971934874,497.464582563056,488.406057443247,497.694568845866,487.651154043657,509.914506663148,496.971952968368,441.723152826769,458.896454995903,485.69792283633,472.556629192582,456.640560993692,509.897611816235,460.530718824839,471.23503005998,456.432819082568,499.046102341503,510.078866850952,497.57110510568,493.784123052198,488.511681909439,492.602108859439,494.387206463784,510.079942557355,403.952199264105,412.720783855191,509.967806994256,497.76513743795,488.419186569029,497.739424709938,412.333335799682,403.165842613009,408.475550110289,509.840308525794,403.867032191949,402.897657074046,509.935884350669,444.015514393133,444.025741820588,402.971959586121,444.191915677348,509.94072449348,423.531223739149,484.566967939964,484.101999540174,423.724416675715,403.259909676633,423.490670294608,434.221255108412,412.270698677844,423.431990625095,434.091902907187,458.681547468386,412.49569003123,418.408210101785,403.315746231859,409.668933255945,403.379308516539,412.497258836145,431.833644801246,415.648039194423,431.153253658854,403.26974999191,424.323087705305,435.228257455233,423.73917148742,413.70387523496,431.72732108318,437.908839409332,440.456265740457,456.118700603777,446.104601819342,433.606633727698,422.940070050532,425.005682618612,417.350734002205,434.614240295135,436.080420634903,439.333915983359,484.753015810653,442.724289009161,468.160321777172,481.876731723584,432.146510741598,437.940768811462,450.66634590434,474.509605993853,484.46563942736,482.680019545212,482.922111130321,509.931016033765,471.065971934874,497.464582563056,488.406057443247,497.694568845866,487.651154043657,509.914506663148,496.971952968368,441.723152826769,458.896454995903,485.69792283633,472.556629192582,456.640560993692,509.897611816235,460.530718824839,471.23503005998,456.432819082568,499.046102341503,510.078866850953,497.57110510568,493.784123052198,488.511681909439,492.602108859439,494.387206463784,510.079942557355,403.952199264105,412.720783855191,509.967806994256,497.76513743795,488.419186569029,497.739424709938,412.333335799682,403.165842613009,408.475550110289,509.840308525794,403.867032191949,402.897657074046,509.935884350669,444.015514393133,444.025741820588,402.971959586121,444.191915677348,509.94072449348,423.531223739149,484.566967939964,484.101999540174,423.724416675715,403.259909676633,423.490670294608,434.221255108412,412.270698677844,423.431990625095,434.091902907187,458.681547468386,412.49569003123,418.408210101785,403.315746231859,409.668933255945,403.379308516539,412.497258836145,431.833644801246,415.648039194423,431.153253658854,403.26974999191,424.323087705305,435.228257455233,423.73917148742,413.70387523496,431.72732108318,437.908839409332,440.456265740457,456.118700603777,446.104601819342,433.606633727698,422.940070050532,425.005682618612,417.350734002205,434.614240295135,436.080420634903,439.333915983359,484.753015810653,442.724289009161,468.160321777172,481.876731723584,432.146510741598,437.940768811462,450.66634590434,474.509605993853,484.46563942736,482.680019545212,482.922111130321,509.931016033765,471.065971934874,497.464582563056,488.406057443247,497.694568845866,487.651154043657,509.914506663148,496.971952968368,441.723152826769,458.896454995903,485.69792283633,472.556629192582,456.640560993692,509.897611816235,460.530718824839,471.23503005998,456.432819082568,499.046102341503,510.078866850953,497.57110510568,493.784123052198,488.511681909439,492.602108859439,494.387206463784,510.079942557355,403.952199264105,412.720783855191,509.967806994256,497.76513743795,488.419186569029,497.739424709938,412.333335799682,403.165842613009,408.475550110289,509.840308525794,403.867032191949,402.897657074046,509.935884350669,444.015514393133,444.025741820588,402.971959586121,444.191915677348,509.94072449348,423.531223739149,484.566967939964,484.101999540174,423.724416675715,403.259909676633,423.490670294608,434.221255108412,412.270698677844,423.431990625095,434.091902907187,458.681547468386,412.49569003123,418.408210101786,403.315746231859,409.668933255945,403.379308516539,412.497258836145,431.833644801246,415.648039194423,431.153253658854,403.26974999191,424.323087705305,435.228257455233,423.73917148742,413.70387523496,431.72732108318,437.908839409332,440.456265740457,456.118700603777,446.104601819342,433.606633727698,422.940070050532,425.005682618612,417.350734002205,434.614240295135,436.080420634903,439.333915983359,484.753015810653,442.724289009161,468.160321777172,481.876731723584,432.146510741598,437.940768811462,450.66634590434,474.509605993853,484.46563942736,482.680019545212,482.922111130321,509.931016033765,471.065971934874,497.464582563056,488.406057443247,497.694568845866,487.651154043657,509.914506663148,496.971952968368,441.723152826769,458.896454995903,485.69792283633,472.556629192582,456.640560993692,509.897611816235,460.530718824839,471.23503005998,456.432819082568,499.046102341503,510.078866850952,497.57110510568,493.784123052198,488.511681909439,492.602108859439,494.387206463784,510.079942557355,403.952199264105,412.720783855191,509.967806994256,497.76513743795,488.419186569029,497.739424709938,412.333335799682,403.165842613009,408.475550110289],"Archive435_field4":[398.280875592315,-823.286730076318,-824.25610519422,398.376451417191,-225.341083207739,-225.330855780284,-824.181802682145,-225.164681923524,398.381291560002,-524.72395619542,94.1089526727887,93.6439842729984,-524.530763258854,-823.893852591633,-524.764509639961,-374.584633659309,-675.433772423574,-524.823189309474,-374.713985860534,-140.950404549062,-675.208781070188,-599.571615416208,-823.838016036407,-712.897860637185,-823.774453751727,-675.207212265273,-411.834566758187,-634.288915549306,-416.873049202489,-823.884012276356,-515.440150406826,-373.577631312487,-524.516008447149,-655.886902908797,-411.386530518456,-306.165302018188,-281.556469010153,-133.746213108842,-197.624809984154,-396.012452087309,-535.515247643139,-504.622280055471,-612.921866175691,-374.191648472586,-355.906362015356,-284.054549751614,94.2950005434776,-220.677006780593,-61.7469846568517,21.6940708729842,-404.170441040671,-274.891123419202,-166.906670547902,-31.9976428238105,94.0076241601845,33.6709570504506,35.0099169530286,398.371583100286,-42.8131655000402,245.284175020738,140.181354893411,246.685844745539,130.148936016977,398.355073729669,239.18934010032,-256.812901694679,-108.595366695094,71.1836676778315,-40.2005711539786,-132.12950623126,398.338178882756,-99.5783185967949,-58.6722763740443,-143.19913293488,264.223607495181,398.519433917474,246.562381005353,207.913076160159,138.619462120853,191.123110658815,206.931508535758,398.520509623877,-823.201563004161,-674.983687246227,398.408374060777,248.269487660504,140.080730126222,246.730700609611,-675.371135301736,-823.987919655257,-732.183516756022,398.280875592315,-823.286730076318,-824.25610519422,398.376451417191,-225.341083207739,-225.330855780284,-824.181802682146,-225.164681923524,398.381291560002,-524.72395619542,94.1089526727887,93.6439842729984,-524.530763258854,-823.893852591632,-524.764509639961,-374.584633659309,-675.433772423574,-524.823189309474,-374.713985860534,-140.950404549062,-675.208781070187,-599.571615416208,-823.838016036407,-712.897860637185,-823.774453751727,-675.207212265273,-411.834566758187,-634.288915549306,-416.873049202489,-823.884012276356,-515.440150406826,-373.577631312487,-524.516008447149,-655.886902908797,-411.386530518456,-306.165302018188,-281.556469010153,-133.746213108842,-197.624809984154,-396.012452087309,-535.515247643139,-504.622280055471,-612.921866175691,-374.191648472586,-355.906362015356,-284.054549751614,94.2950005434776,-220.677006780593,-61.7469846568517,21.6940708729842,-404.17044104067,-274.891123419203,-166.906670547902,-31.9976428238104,94.0076241601845,33.6709570504506,35.0099169530286,398.371583100286,-42.8131655000402,245.284175020738,140.181354893411,246.685844745539,130.148936016977,398.355073729669,239.18934010032,-256.812901694678,-108.595366695094,71.1836676778315,-40.2005711539786,-132.12950623126,398.338178882756,-99.5783185967949,-58.6722763740443,-143.19913293488,264.223607495181,398.519433917474,246.562381005353,207.913076160159,138.619462120853,191.123110658815,206.931508535758,398.520509623877,-823.201563004161,-674.983687246227,398.408374060777,248.269487660504,140.080730126222,246.730700609611,-675.371135301736,-823.987919655257,-732.183516756022,398.280875592315,-823.286730076318,-824.25610519422,398.376451417191,-225.341083207739,-225.330855780284,-824.181802682146,-225.164681923524,398.381291560002,-524.72395619542,94.1089526727887,93.6439842729984,-524.530763258854,-823.893852591632,-524.764509639961,-374.584633659309,-675.433772423574,-524.823189309474,-374.713985860534,-140.950404549062,-675.208781070187,-599.571615416208,-823.838016036407,-712.897860637185,-823.774453751727,-675.207212265273,-411.834566758187,-634.288915549306,-416.873049202489,-823.884012276356,-515.440150406826,-373.577631312487,-524.516008447149,-655.886902908797,-411.386530518456,-306.165302018188,-281.556469010153,-133.746213108842,-197.624809984154,-396.012452087309,-535.515247643139,-504.622280055471,-612.921866175691,-374.191648472586,-355.906362015356,-284.054549751614,94.2950005434776,-220.677006780593,-61.7469846568517,21.6940708729842,-404.17044104067,-274.891123419203,-166.906670547902,-31.9976428238104,94.0076241601845,33.6709570504506,35.0099169530286,398.371583100286,-42.8131655000402,245.284175020738,140.181354893411,246.685844745539,130.148936016977,398.355073729669,239.18934010032,-256.812901694678,-108.595366695094,71.1836676778315,-40.2005711539786,-132.12950623126,398.338178882756,-99.5783185967949,-58.6722763740443,-143.19913293488,264.223607495181,398.519433917474,246.562381005353,207.913076160159,138.619462120853,191.123110658815,206.931508535758,398.520509623877,-823.201563004161,-674.983687246227,398.408374060777,248.269487660504,140.080730126222,246.730700609611,-675.371135301736,-823.987919655257,-732.183516756022,398.280875592315,-823.286730076318,-824.25610519422,398.376451417191,-225.341083207739,-225.330855780284,-824.181802682145,-225.164681923524,398.381291560002,-524.72395619542,94.1089526727887,93.6439842729984,-524.530763258854,-823.893852591633,-524.764509639961,-374.584633659309,-675.433772423574,-524.823189309474,-374.713985860534,-140.950404549062,-675.208781070188,-599.571615416208,-823.838016036407,-712.897860637185,-823.774453751727,-675.207212265273,-411.834566758187,-634.288915549306,-416.873049202489,-823.884012276356,-515.440150406826,-373.577631312487,-524.516008447149,-655.886902908797,-411.386530518456,-306.165302018188,-281.556469010153,-133.746213108842,-197.624809984154,-396.012452087309,-535.515247643139,-504.622280055471,-612.921866175691,-374.191648472586,-355.906362015356,-284.054549751614,94.2950005434776,-220.677006780593,-61.7469846568517,21.6940708729842,-404.170441040671,-274.891123419202,-166.906670547902,-31.9976428238105,94.0076241601845,33.6709570504506,35.0099169530286,398.371583100286,-42.8131655000402,245.284175020738,140.181354893411,246.685844745539,130.148936016977,398.355073729669,239.18934010032,-256.812901694679,-108.595366695094,71.1836676778315,-40.2005711539786,-132.12950623126,398.338178882756,-99.5783185967949,-58.6722763740443,-143.19913293488,264.223607495181,398.519433917474,246.562381005353,207.913076160159,138.619462120853,191.123110658815,206.931508535758,398.520509623877,-823.201563004161,-674.983687246227,398.408374060777,248.269487660504,140.080730126222,246.730700609611,-675.371135301736,-823.987919655257,-732.183516756022],"Archive435_field5":[0,1776.27831783741,1739.46983462811,0,363.224801488433,360.228188573289,1763.12839377402,272.50045614548,0,1084.0237312659,5.30370330629188e-09,6.89470565812576e-09,1107.06890552696,1745.55417635485,1070.60876301078,686.60587713687,1423.88259329485,1070.79994469933,684.411770297977,0.000893118571914335,1429.29226120292,1271.58414590867,1754.29941668927,1523.83743491823,1772.83924688745,1453.85372428239,821.980232464693,1358.25869877408,851.363016588158,1769.31758333651,1095.10482414194,747.038844291637,1120.12865511027,1418.32311765798,826.750155273773,542.942178739955,460.141387842786,0.000921527420294747,285.842316831766,805.283291586072,1144.69951262892,1073.34434616179,1324.92629783983,750.807122141665,696.720649396521,490.174436758815,4.93088631426053e-09,310.623146411663,2.54786230953645e-08,-7.13685488647766e-10,781.088958463408,392.348762059257,166.752828428912,2.76603962983011e-09,5.60544453973848e-09,-1.71173737340888e-09,-2.25757490688496e-09,0,1.41364648989591e-08,1.96155375749239e-09,3.57108383813108e-09,1.69410606299197e-09,3.38023261741704e-09,0,1.52333721389092e-09,433.025059562608,6.43416827322116e-06,-1.40185255612139e-09,9.35738470360537e-09,0.182327845185571,0,0.389819290272108,3.89455718926107e-09,0.00224448819803357,2.06022536642953e-09,0,2.10081606948348e-09,2.56719497358622e-09,2.45291017377186e-09,2.93934352442488e-09,2.28328822840254e-09,0,1739.07436821732,1418.70951700278,0,1.8399487990372e-09,3.46152847461706e-09,1.99975382281809e-09,1467.30412853718,1777.89899133708,1584.01545277109,0,1776.28087662838,1739.47120625396,0,363.224981495631,360.228269850624,1763.1303251145,272.500647281384,0,1084.02401315315,3.9443610297993e-05,5.03664560306731e-05,1107.06906997957,1745.55601207395,1070.60907231369,686.605934814647,1423.88193353645,1070.80019681987,684.411886498959,0.00091674209370995,1429.29188891808,1271.5844462303,1754.30152399808,1523.8368762767,1772.841730418,1453.85330855629,821.980275431007,1358.25856842777,851.36313897954,1769.31931396755,1095.10516594164,747.038909743399,1120.12892686138,1418.32261428788,826.750299913298,542.942359192292,460.141555581756,0.000967213194250643,285.842450617909,805.283396133877,1144.69962814356,1073.34449820258,1324.92680247451,750.807216210829,696.720809498736,490.174588489619,3.04174491144145e-05,310.623220160442,3.61627133206757e-05,7.36052338019759e-07,781.089076865265,392.348965196215,166.752971015917,4.02282139616611e-06,4.03323965468032e-05,-5.22625186309166e-06,-4.50904032050303e-06,0,1.39170191717404e-05,8.6931664225819e-05,6.94386431449863e-05,8.4556790966813e-05,4.91565039983687e-05,0,7.59453117553233e-05,433.025238671272,7.93972625204226e-05,-4.27594067371652e-06,1.88499842779493e-05,0.182632104832152,0,0.390362084668303,4.38815593517709e-06,0.00227247960835956,0.000103991879194244,0,9.70048561987947e-05,8.69656082247861e-05,4.07356087997921e-05,8.13461415086613e-05,9.6260858367514e-05,0,1739.07727516883,1418.70962893167,0,9.01504437560074e-05,7.05771931645756e-05,0.000101866992094973,1467.30361386231,1777.90112882844,1584.01491346384,0,1776.28507133332,1739.47340349033,0,363.225089880688,360.228317961717,1763.13346176468,272.500774911293,0,1084.02434790307,4.78961676528582e-05,6.10530727420156e-05,1107.0692094105,1745.55898947101,1070.60945213298,686.605885082623,1423.88070534696,1070.80048109906,684.411929689525,0.000924059004484097,1429.29114463125,1271.584822537,1754.30495739626,1523.83582174391,1772.84579637607,1453.85249085879,821.980208157677,1358.25822833034,851.363201256171,1769.32211466309,1095.1056044851,747.038887523633,1120.12924827843,1418.32164842174,826.750397851082,542.942475460945,460.141661085068,0.000978590362250251,285.842527553045,805.283424663005,1144.69968715898,1073.34461997427,1324.92752376259,750.807221550901,696.720898856711,490.174675400939,3.6872416104086e-05,310.623250028509,4.45845278383533e-05,9.80338718061136e-07,781.089131697918,392.349087663751,166.753048033457,5.44148594356632e-06,4.88948681150534e-05,-6.12329572236528e-06,-5.5612967538678e-06,0,1.73360816799939e-05,0.000105787707012258,8.44915454007185e-05,0.00010288987286028,5.96434304224568e-05,0,9.24299192397499e-05,433.025354718158,9.50714154384964e-05,-5.2309187320252e-06,2.32071385714836e-05,0.182813408719678,0,0.390684895843245,6.15043412902366e-06,0.00228260835563028,0.000126540999557385,0,0.000118012768453098,0.00010582207080192,4.95262293225777e-05,9.90072596272439e-05,0.000117131845190016,0,1739.0820541064,1418.70969631652,0,0.000109692411685658,8.59828819506763e-05,0.000123957914051392,1467.30262796751,1777.90461480331,1584.01389291048,0,1776.28626613913,1739.47402617141,0,363.225108060395,360.228316995809,1763.13435338862,272.500799304158,0,1084.02443528827,4.82570280397051e-05,6.15033899478622e-05,1107.06924102457,1745.55983558181,1070.60955236494,686.60586200402,1423.88034637425,1070.80055402222,684.411932870511,0.000925657020418887,1429.29092427798,1271.58492248184,1754.30593406592,1523.83551272652,1772.84695422513,1453.85224948351,821.980180476962,1358.25812356829,851.363209830211,1769.32291015292,1095.10572165911,747.038873136889,1120.12933225747,1418.3213645422,826.750417118953,542.94249710122,460.141680262376,0.000980606830978063,285.842535942318,805.283425062594,1144.69969585995,1073.34464614275,1324.92772271087,750.807214213282,696.720917350024,490.174688151531,3.71591730889301e-05,310.62324035094,4.48599526085317e-05,1.07456130744709e-06,781.08913871219,392.34910917558,166.753059413169,5.63942068392366e-06,4.92536375035138e-05,-6.0305542620784e-06,-5.51621698471876e-06,0,1.75769341143314e-05,0.000106611490733832,8.51186493822197e-05,0.000103680544296934,6.00526652968435e-05,0,9.30973611539848e-05,433.025377145282,9.57626213181573e-05,-5.16209492543859e-06,2.34191210992414e-05,0.182873391334003,0,0.390791578499856,6.31087127210259e-06,0.00228519733192819,0.000127589495267169,0,0.000118971473697971,0.00010660333639666,4.99063129857932e-05,9.97668023410094e-05,0.000118053633012877,0,1739.08341619896,1418.7097082735,0,0.000110542925225033,8.66404410307884e-05,0.000124972709376283,1467.30233836988,1777.9056066296,1584.0135936681],"Archive435_field6":[0,0,0,0,1.18439331197568,0,13.8183855536398,0,0,8.34534091296845,-5.11344983148701e-10,-1.18977951943271e-10,7.35579350821151,11.3514894931676,0,1.16761934050194,5.0113181876201,3.91007221698816,0,-0.000237481074145896,8.18072586786685,8.71944148875137,14.3660431404175,10.267986413053,9.08370724369196,7.91465991422299,8.07508001515798,7.65133455635474,0.922711791724671,11.6684730791296,3.2289228502288,2.67530952308725,0,4.76798846619803,7.20096739130582,10.2605651590128,-5.94962830929967,3.84134707541268e-06,0.197906247064351,0.578230326277071,2.21561542632474,1.93771952807811,2.03555366137238,0,2.77018063322952,-3.16249810978469,0,8.62982608863316,0,2.85492481746868e-10,6.45609979513721,6.04086440673138,-2.88785816968873,5.71090402451087e-10,0,1.1497586296861e-11,-3.05106274632181e-11,0,9.04902069528241e-10,-2.3103768923318e-12,-4.19290120762958e-13,4.2671832204706e-12,1.11386509370495e-11,0,0,2.34933235478609,-3.42978348857951e-08,-1.41506304910971e-11,-1.6885059164556e-09,0.0181818051596576,0,-0.0636952070447407,0,0.000393815475023998,4.83822465336804e-12,0,-2.68322506210104e-11,-4.16636070023019e-12,3.25025587263962e-10,-4.00779529163008e-11,1.2064276912624e-11,0,6.22119948031972,0,0,-5.51108084278359e-12,5.12652281630989e-11,0,0,4.22887495569992,4.60762126084429,0,0,0,0,1.18438961226536,0,13.8183853339562,0,0,8.34533971597766,-5.68643527511542e-06,-9.59519135143295e-08,7.35579269923204,11.3514891672095,0,1.16761958985274,5.01131783809943,3.91007175189017,0,-0.000243775282001864,8.18072537768592,8.71944053184491,14.3660426994421,10.2679862485273,9.08370697934287,7.91465955579249,8.07507909795728,7.65133423837361,0.922713122211196,11.6684732201199,3.22892244766878,2.67530946288058,0,4.76798846373271,7.2009664983827,10.2605612292915,-5.94962641424462,3.50883093826871e-06,0.197905626334632,0.578231837173241,2.21561499031616,1.93771950217449,2.03555371056779,0,2.77017822719259,-3.16250162394614,0,8.62983165135202,0,2.13481469845644e-06,6.45609741140531,6.04086119634231,-2.88786189806764,1.54299015780209e-07,0,3.12403282844156e-07,-2.6422055182826e-07,0,7.14165986143278e-07,-1.03443673847445e-07,-3.16756514847068e-07,5.46417520535638e-08,1.06084353326886e-06,0,0,2.3493328493372,2.82778883524984e-07,-2.3418175013623e-08,-3.09660496744057e-06,0.018218485607109,0,-0.063795102643309,0,0.000400093589428365,-3.28251556624841e-08,0,-3.71490212054939e-07,2.79008786282166e-07,3.13453794430539e-06,-5.22478797491802e-07,3.19648539553487e-07,0,6.2211994499574,0,0,-2.4389762486107e-08,9.47863816404021e-08,0,0,4.22887509831546,4.60762110271697,0,0,0,0,1.18438764406763,0,13.8183852181105,0,0,8.34533906640574,-6.91448573920889e-06,-1.17463729863523e-07,7.35579226563759,11.3514889951958,0,1.16761972091917,5.01131764635975,3.91007150059925,0,-0.000245869175925244,8.18072511254023,8.71944001046081,14.3660424529696,10.2679861629985,9.08370682752267,7.91465936092035,8.07507860011567,7.65133406013671,0.922713888197445,11.6684732947462,3.22892222216703,2.67530940495297,0,4.76798846937666,7.2009660243414,10.2605590663825,-5.94962536251106,3.42830491861921e-06,0.197904910651384,0.57823275922117,2.21561472600565,1.93771949480722,2.03555373739352,0,2.77017686735804,-3.16250378162057,0,8.62983521815378,0,2.61028568851624e-06,6.456096105691,6.04085949455039,-2.88786422238204,1.85266647160666e-07,0,4.23651620078139e-07,-3.43134004926989e-07,0,8.82452720291164e-07,-1.22105595052623e-07,-3.95525334523938e-07,6.66268963755855e-08,1.27875590086643e-06,0,0,2.34933319141851,3.52892631178075e-07,-2.64926183501451e-08,-3.7946245095922e-06,0.0182400132529776,0,-0.0638536271277926,0,0.0004023611124994,-3.89112119770353e-08,0,-4.52066853193852e-07,3.36252699314936e-07,3.81590967938133e-06,-6.3534251262102e-07,3.88283584835479e-07,0,6.2211994343455,0,0,-3.10927699868709e-08,1.22527284700942e-07,0,0,4.22887518115671,4.60762101615361,0,0,0,0,1.18438732838209,0,13.8183852015694,0,0,8.34533896218723,-6.96948378264586e-06,-1.18725124841569e-07,7.35579220421325,11.3514889701361,0,1.16761974349939,5.01131761524727,3.91007146058262,0,-0.000246361921550987,8.1807250709941,8.71943992665118,14.3660424107232,10.267986151142,9.0837067988073,7.91465933042032,8.07507851949476,7.65133402834519,0.922714130967217,11.6684733035979,3.22892217356717,2.67530936436839,0,4.76798847885839,7.20096595409806,10.2605587266954,-5.94962520070883,3.42485508919077e-06,0.19790430741381,0.578233085750488,2.21561463183928,1.93771950084402,2.03555374618874,0,2.77017653166955,-3.16250476276959,0,8.62983707315555,0,2.63685223070258e-06,6.45609590191658,6.04085920898829,-2.8878645557389,1.8737857459512e-07,0,4.39932184769178e-07,-3.55716632362354e-07,0,8.94750524597115e-07,-1.22377842191489e-07,-4.00611886310461e-07,6.7155532772759e-08,1.28615231282408e-06,0,0,2.34933331850474,3.55251152012249e-07,-2.63226314180044e-08,-3.83148619966369e-06,0.0182470940287951,0,-0.0638728271105671,0,0.000402929452386782,-3.90583059065811e-08,0,-4.56175895832789e-07,3.38067131182401e-07,3.848667369428e-06,-6.40042761673967e-07,3.91313027736268e-07,0,6.22119943193082,0,0,-3.16687404579978e-08,1.25596327995909e-07,0,0,4.22887519700314,4.60762100049056],"Archive435_field7":[1.69491783743852e-07,0.159222496264033,0.155923036194144,2.09996472291776e-08,0.0325589049821228,0.0322927179552941,0.158043753219185,0.0244265233463311,3.22281217441337e-08,0.0971700827842732,6.74483639712238e-07,-6.5133852841852e-09,0.0992357924562669,0.156468419231767,0.0959675888021303,0.0615461675855637,0.127634416175337,0.095984735846097,0.0613495097869503,3.16273333237103e-08,0.128119337186161,0.113982701769465,0.157252295845124,0.136594180711588,0.158914164398208,0.130320981029085,0.0736809064255436,0.121752027259181,0.0763148965804423,0.158598544541352,0.0981634087577959,0.0669633155641962,0.100406447136651,0.127136085746718,0.0741084905741532,0.0486684286605832,0.0412463072194032,4.77605943551667e-08,0.0256230864161407,0.0721840500590906,0.102608911946249,0.0962129234213427,0.118764197592015,0.0673009391574442,0.0624519306881987,0.0439387182445609,8.45711488537328e-07,0.0278466124298252,2.71498894315052e-07,-2.86160098445707e-06,0.0700154890708574,0.0351695168997755,0.0149474739198539,7.50957716223987e-09,-4.81181894763542e-09,-2.90005580037436e-08,-4.71075361007849e-08,1.90715438129978e-08,3.08772064822729e-08,5.91354306372073e-09,-1.03697103596318e-08,6.09225620346953e-09,-1.88699121732617e-08,2.09716944564988e-08,9.08198970815631e-10,0.0388155550867341,-1.30408617163363e-07,-1.69286469265318e-08,3.3323441444705e-07,1.16644402482933e-05,5.85570458429838e-08,2.15789421629287e-05,4.10238835152835e-09,8.20596826254955e-08,7.60816313788066e-09,9.12238418457011e-10,4.6677223321265e-08,3.7729215749091e-07,-1.83584282578844e-07,1.08363943911165e-08,-1.32083488703135e-07,9.62736019052928e-09,0.155887515024828,0.127170731969729,2.0859224146231e-08,4.77831060496287e-09,-1.01161340443429e-08,-2.76800602354915e-07,0.131526631774919,0.15936768124939,0.141988440324673,-0.00513255632739109,-0.169267030208603,-0.168888817076947,-0.00206634091970151,-0.522786008809267,-0.520123493503012,-0.176330375295071,-0.521981368559179,-0.00191434066559285,-0.318667053663764,-0.0145127160614854,-0.0291795823771187,-0.312327721804927,-0.170029635154706,-0.322639611459005,-0.383257597647559,-0.228212865906966,-0.32162266653379,-0.403611036251729,-0.243843227863495,-0.227369000265144,-0.27434769728939,-0.173348292675506,-0.21003200385355,-0.174061825840817,-0.228118018389514,-0.347529900085224,-0.243088202510609,-0.370309776745561,-0.171581191385186,-0.315833202983675,-0.346382198891314,-0.304454134342865,-0.234108170752415,-0.367776597577296,-0.495707667032628,-0.473003495447577,-0.35648885828407,-0.530385297987936,-0.343078539533311,-0.303938840281895,-0.324355105948763,-0.261871647701093,-0.379691290060088,-0.369644598746881,-0.506973947157704,-0.00806269111462668,-0.595197512019088,-0.13982456289064,0.101001086771526,-0.370804932750132,-0.602671543510714,-0.460876429073225,-0.000780915184099636,-0.0172889365107853,0.0938172556041298,0.0982416300687347,-0.0022238421447515,-0.0893465560917319,0.00228467064584666,-0.0119778782211301,0.00623657254123904,-0.0102759178154229,-0.00273600774568244,0.00257864024537511,-0.508522444803148,-0.333279684408765,0.0916925003557452,-0.0452287925396304,-0.345236172447099,-0.00332898956129388,-0.298380051904683,-0.0392156072081863,-0.314873653016476,0.00312060924835718,0.00248292298801389,0.00231483585508114,-0.018999742296723,-0.00440980014894077,-0.0118856128530516,0.00508884447613361,0.00253587098311787,-0.168822601462534,-0.23400126612545,-0.00106757102925045,0.00415031676189555,-0.0112730324689394,0.00772888688842871,-0.230058282396928,-0.168844499915637,-0.2033925376322,-0.0102653508917715,-0.497762347007079,-0.493706533124579,-0.00413278644321288,-1.07813093807807,-1.07253939982713,-0.510710179241611,-1.06838897597021,-0.00382882478340504,-0.734503410022562,-0.0290259014634362,-0.0583590798559639,-0.723891066593712,-0.496533895556446,-0.741245996980017,-0.828062096306324,-0.584061359353261,-0.739228658209051,-0.868571781884612,-0.487686656174742,-0.582858207574779,-0.662676193943439,-0.503956684434996,-0.556660469457697,-0.50704590663919,-0.586557900677187,-0.768741636313061,-0.607928428116114,-0.81693427092146,-0.501766509754473,-0.729828248385258,-0.759728260281767,-0.709313067409059,-0.595353188013571,-0.809661423419438,-1.0400835278951,-0.987253069799553,-0.712978027492619,-1.08639363983243,-0.758341500040007,-0.710486796497142,-0.744923544923896,-0.642504556770377,-0.82668394659419,-0.801741185683202,-1.05788650099651,-0.0161259846112544,-1.21824130101653,-0.279649710884217,0.20200468091174,-0.811625422814479,-1.24051246117979,-0.936700602522193,-0.00156185628870717,-0.034577791965254,0.187634612973787,0.196483413590647,-0.00444778090027847,-0.178693211073272,0.00456938375425299,-0.0239556365377438,0.0124731784374697,-0.020551719163646,-0.00547212032552857,0.00515733399452715,-1.05586018158084,-0.666559491192875,0.183385091205338,-0.0904580329220901,-0.690484204815438,-0.00665810769967346,-0.596781831835516,-0.078431297441982,-0.629747760511476,0.00624126723454826,0.00496575494601044,0.00462967638348561,-0.0379997242296577,-0.00881932215846477,-0.0237711402691876,0.0101778637325766,0.00507164549837896,-0.493542167920695,-0.595173393296176,-0.00213525425197757,0.00830067655346742,-0.0225459455149958,0.0154580620381646,-0.591644083901416,-0.497066775755791,-0.548776236225168,-0.0153981487014683,-0.826261353812138,-0.818527920602261,-0.0061992448033445,-1.63347585518593,-1.62495513914349,-0.845093567898825,-1.61479638643034,-0.00574332621933332,-1.15033929046539,-0.0435390085578597,-0.0875385688400153,-1.135454306616,-0.823042062094024,-1.15985188743957,-1.27286706099579,-0.939910563612857,-1.15683378757521,-1.33353265693264,-0.731530143075695,-0.938347928971933,-1.05100353243863,-0.834569979700933,-0.903290305546383,-0.84003508700262,-0.944998303323954,-1.18995394723795,-0.972768642175931,-1.26355865952023,-0.831955345680498,-1.14382233906585,-1.17307466971061,-1.11417099653855,-0.956598644955658,-1.25154609744831,-1.5844592412551,-1.50150250872609,-1.06946731302183,-1.6424019400681,-1.17360469526279,-1.11703487854414,-1.16549224070785,-1.02313568223465,-1.27367686262107,-1.23383780568386,-1.60879899197946,-0.0241891771572613,-1.84128490569987,-0.419475006171627,0.303008081244699,-1.25244596979172,-1.87835327031202,-1.4125248959929,-0.00234279411164369,-0.0518666348256655,0.28145199611289,0.294725235194114,-0.00667173183253888,-0.268039883293873,0.00685411351573465,-0.0359333724715349,0.01870980014051,-0.0308275059355981,-0.00820824609854227,0.00773604395961495,-1.60319776335155,-0.999839405350162,0.275077714355994,-0.13568731953402,-1.03573230242307,-0.00998723459806983,-0.895183645813743,-0.117647022390918,-0.94462203319613,0.00936194525919552,0.00744857287781023,0.00694453638914086,-0.0569996626044683,-0.0132288304665977,-0.0356566472686118,0.0152668910954657,0.00760740837623481,-0.81826769216675,-0.956345603110011,-0.00320295174027192,0.0124510532728234,-0.0338188377092921,0.0231872331121483,-0.953230401081249,-0.825295367735962,-0.894161577182141],"Archive435_field8":[4497885,3598308,3598308,4497885,4048096.5,4048096.5,3598308,4048096.5,4497885,3823202.25,4272990.75,4272990.75,3823202.25,3598308,3823202.25,3935649.375,3710755.125,3823202.25,3935649.375,4104320.0625,3710755.125,3766978.6875,3598308,3682643.34375,3598308,3710755.125,3907537.59375,3741209.5546875,3904023.37841562,3598308,3830049.86059458,3935649.375,3823202.25,3725361.38566421,3907984.61060428,3987846.83562332,4005636.39721605,4112195.86715955,4068761.38356192,3918866.32683645,3814977.20879672,3838222.59904707,3757066.21568166,3935649.375,3949211.72524325,4004527.05494065,4272990.75,4052898.65110141,4160543.625,4216767.1875,3913465.397471,4013039.51370239,4089853.00355512,4179412.62879182,4272990.75,4225777.19393679,4226661.67092316,4497885,4173468.19068178,4384493.06966353,4307046.24468594,4385437.875,4299565.17444324,4497885,4379975.643456,4024567.18685452,4130236.7611228,4253592.62333005,4174372.88226509,4113078.71381172,4497885,4136189.98511296,4160543.625,4104320.0625,4398489.89504954,4497885,4385437.875,4357326.09375,4305701.61598388,4344740.37719953,4356048.28551136,4497885,3598308,3710755.125,4497885,4386657.96623242,4306954.51744864,4385437.875,3710755.125,3598308,3668054.35542653,2998590,2398872,2398872,2998590,2698731,2698731,2398872,2698731,2998590,2548801.5,2848660.5,2848660.5,2548801.5,2398872,2548801.5,2623766.25,2473836.75,2548801.5,2623766.25,2736213.375,2473836.75,2511319.125,2398872,2455095.5625,2398872,2473836.75,2605025.0625,2494139.703125,2602682.25227708,2398872,2553366.57372972,2623766.25,2548801.5,2483574.25710947,2605323.07373619,2658564.55708222,2670424.2648107,2741463.9114397,2712507.58904128,2612577.5512243,2543318.13919782,2558815.06603138,2504710.81045444,2623766.25,2632807.81682884,2669684.70329377,2848660.5,2701932.43406761,2773695.75,2811178.125,2608976.93164734,2675359.67580159,2726568.66903675,2786275.08586121,2848660.5,2817184.79595786,2817774.44728211,2998590,2782312.12712119,2922995.37977568,2871364.16312396,2923625.25,2866376.78296216,2998590,2919983.762304,2683044.79123635,2753491.17408187,2835728.41555337,2782915.25484339,2742052.47587448,2998590,2757459.99007531,2773695.75,2736213.375,2932326.59669969,2998590,2923625.25,2904884.0625,2870467.74398925,2896493.58479968,2904032.19034091,2998590,2398872,2473836.75,2998590,2924438.64415494,2871303.01163243,2923625.25,2473836.75,2398872,2445369.57028435,1499295,1199436,1199436,1499295,1349365.5,1349365.5,1199436,1349365.5,1499295,1274400.75,1424330.25,1424330.25,1274400.75,1199436,1274400.75,1311883.125,1236918.375,1274400.75,1311883.125,1368106.6875,1236918.375,1255659.5625,1199436,1227547.78125,1199436,1236918.375,1302512.53125,1247069.8515625,1301341.12613854,1199436,1276683.28686486,1311883.125,1274400.75,1241787.12855474,1302661.53686809,1329282.27854111,1335212.13240535,1370731.95571985,1356253.79452064,1306288.77561215,1271659.06959891,1279407.53301569,1252355.40522722,1311883.125,1316403.90841442,1334842.35164689,1424330.25,1350966.2170338,1386847.875,1405589.0625,1304488.46582367,1337679.8379008,1363284.33451837,1393137.54293061,1424330.25,1408592.39797893,1408887.22364105,1499295,1391156.0635606,1461497.68988784,1435682.08156198,1461812.625,1433188.39148108,1499295,1459991.881152,1341522.39561817,1376745.58704093,1417864.20777668,1391457.6274217,1371026.23793724,1499295,1378729.99503765,1386847.875,1368106.6875,1466163.29834985,1499295,1461812.625,1452442.03125,1435233.87199463,1448246.79239984,1452016.09517045,1499295,1199436,1236918.375,1499295,1462219.32207747,1435651.50581621,1461812.625,1236918.375,1199436,1222684.78514218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive435_field9":[-100,-363.697727444402,-362.527155384318,-100,-392.558205480883,-392.593664006333,-362.596031649234,-392.92954087232,-100,-377.75157802656,-350,-350,-378.109166523041,-362.997539455123,-377.67828402071,-385.660294186879,-368.879605108088,-377.552730159573,-385.72163537782,-412.857893175694,-369.228698438783,-374.008054198455,-362.938555932559,-367.057376693536,-363.071844573685,-369.21045277241,-384.287196740016,-371.752384322053,-383.408800813396,-362.971075932712,-378.552425900679,-387.523672893474,-378.068280136858,-370.00235599481,-383.992923709031,-387.59559858946,-390.33114179965,-407.416897517626,-394.21877019375,-386.247675098429,-377.44961397687,-378.946967615257,-373.085099149326,-386.548987672587,-387.6076351134,-388.495646448564,-350,-389.952414609494,-424.432219380088,-412.5,-384.211670294299,-385.446399162256,-400.107343794195,-434.065313259763,-350,-402.484174298823,-401.500959981014,-100,-428.322930800384,-226.050277337542,-312.14276856129,-225,-320.458977449135,-100,-231.072,-390.843676178488,-410.556009567945,-371.563608973942,-430.997884728226,-408.285891758137,-100,-412.870746486312,-430.06945887106,-408.651134225325,-210.490936240545,-100,-225,-256.25,-313.637502977648,-270.240705131938,-257.670454545455,-100,-363.757310195333,-369.454798948359,-100,-223.643705616733,-312.244735638371,-225,-368.995044458625,-362.722731112011,-366.229527056898,-100,-363.697727444402,-362.527155384318,-100,-392.558205480883,-392.593664006333,-362.596031649234,-392.92954087232,-100,-377.75157802656,-350,-350,-378.109166523041,-362.997539455123,-377.67828402071,-385.660294186879,-368.879605108087,-377.552730159573,-385.72163537782,-412.857893175694,-369.228698438783,-374.008054198455,-362.938555932559,-367.057376693536,-363.071844573685,-369.21045277241,-384.287196740016,-371.752384322053,-383.408800813396,-362.971075932712,-378.552425900679,-387.523672893474,-378.068280136858,-370.00235599481,-383.992923709031,-387.595598589459,-390.33114179965,-407.416897517626,-394.21877019375,-386.247675098429,-377.44961397687,-378.946967615257,-373.085099149326,-386.548987672587,-387.6076351134,-388.495646448564,-350,-389.952414609494,-424.432219380088,-412.5,-384.211670294299,-385.446399162257,-400.107343794195,-434.065313259763,-350,-402.484174298823,-401.500959981014,-100,-428.322930800384,-226.050277337542,-312.14276856129,-225,-320.458977449135,-100,-231.072,-390.843676178488,-410.556009567945,-371.563608973942,-430.997884728226,-408.285891758137,-100,-412.870746486312,-430.06945887106,-408.651134225325,-210.490936240545,-100,-225,-256.25,-313.637502977648,-270.240705131938,-257.670454545455,-100,-363.757310195333,-369.454798948359,-100,-223.643705616733,-312.244735638371,-225,-368.995044458625,-362.722731112011,-366.229527056898,-100,-363.697727444402,-362.527155384318,-100,-392.558205480883,-392.593664006333,-362.596031649234,-392.92954087232,-100,-377.75157802656,-350,-350,-378.109166523041,-362.997539455123,-377.67828402071,-385.660294186879,-368.879605108087,-377.552730159573,-385.72163537782,-412.857893175694,-369.228698438783,-374.008054198455,-362.938555932559,-367.057376693536,-363.071844573685,-369.21045277241,-384.287196740016,-371.752384322053,-383.408800813396,-362.971075932712,-378.552425900679,-387.523672893474,-378.068280136858,-370.00235599481,-383.992923709031,-387.595598589459,-390.33114179965,-407.416897517626,-394.21877019375,-386.247675098429,-377.44961397687,-378.946967615257,-373.085099149326,-386.548987672587,-387.6076351134,-388.495646448564,-350,-389.952414609494,-424.432219380088,-412.5,-384.211670294299,-385.446399162257,-400.107343794195,-434.065313259763,-350,-402.484174298823,-401.500959981014,-100,-428.322930800384,-226.050277337542,-312.14276856129,-225,-320.458977449135,-100,-231.072,-390.843676178488,-410.556009567945,-371.563608973942,-430.997884728226,-408.285891758137,-100,-412.870746486312,-430.06945887106,-408.651134225325,-210.490936240545,-100,-225,-256.25,-313.637502977648,-270.240705131938,-257.670454545455,-100,-363.757310195333,-369.454798948359,-100,-223.643705616733,-312.244735638371,-225,-368.995044458625,-362.722731112011,-366.229527056898,-100,-363.697727444402,-362.527155384318,-100,-392.558205480883,-392.593664006333,-362.596031649234,-392.92954087232,-100,-377.75157802656,-350,-350,-378.109166523041,-362.997539455123,-377.67828402071,-385.660294186879,-368.879605108088,-377.552730159573,-385.72163537782,-412.857893175694,-369.228698438783,-374.008054198455,-362.938555932559,-367.057376693536,-363.071844573685,-369.21045277241,-384.287196740016,-371.752384322053,-383.408800813396,-362.971075932712,-378.552425900679,-387.523672893474,-378.068280136858,-370.00235599481,-383.992923709031,-387.59559858946,-390.33114179965,-407.416897517626,-394.21877019375,-386.247675098429,-377.44961397687,-378.946967615257,-373.085099149326,-386.548987672587,-387.6076351134,-388.495646448564,-350,-389.952414609494,-424.432219380088,-412.5,-384.211670294299,-385.446399162256,-400.107343794195,-434.065313259763,-350,-402.484174298823,-401.500959981014,-100,-428.322930800384,-226.050277337542,-312.14276856129,-225,-320.458977449135,-100,-231.072,-390.843676178488,-410.556009567945,-371.563608973942,-430.997884728226,-408.285891758137,-100,-412.870746486312,-430.06945887106,-408.651134225325,-210.490936240545,-100,-225,-256.25,-313.637502977648,-270.240705131938,-257.670454545455,-100,-363.757310195333,-369.454798948359,-100,-223.643705616733,-312.244735638371,-225,-368.995044458625,-362.722731112011,-366.229527056898],"Archive435_field10":[419.667120180637,42.0413948845219,41.9060833922985,419.867133911484,45.3775024874303,45.3816012918989,41.9140450979486,45.4204267529617,419.876971094041,43.6659403171378,144.130761877306,143.167598731222,43.7072755195664,41.960457123493,43.6574679456873,44.580143057589,42.6403905577506,43.6429546313138,44.5872337514165,47.7240312722177,42.6807437671876,43.2332101908792,41.9536389627603,42.4297512862757,41.9690463738393,42.6786346716199,44.4214207791076,42.9724675443159,44.3198831910796,41.9573980903681,43.7585137900458,44.7955390694746,43.7025492851766,42.7701741935113,44.3874044854496,44.803853272064,45.1200665548124,47.0950830282097,45.5694543517312,44.6480409601238,43.6310349853307,43.8041205749371,43.126521820969,44.6828709850536,44.8052446259765,44.9078937007065,144.489069395655,45.0762878392654,49.0619577473166,82.7379122534889,44.412690350268,44.5554180056698,46.2501400678132,50.1754887737567,143.899401477491,93.3525196806386,94.7532103014541,419.857525252366,49.5117019245809,281.487382063592,185.843113732949,282.903037611937,176.890991132629,419.822332414687,275.982506308336,45.1793126225951,47.4579465803732,127.228440799159,49.8209114298713,47.1955338346374,419.788935803983,47.7255170420383,49.7135906655751,47.2377537926766,298.655290501809,420.167010445454,282.64634807179,246.894623741093,184.76238949384,231.949678061864,246.876521893249,420.168259044833,42.0482823126558,42.7068797039543,419.934386763793,284.261732778086,185.778591139686,282.997467042688,42.6537346920548,41.9286908373753,42.3340565627385,419.667120180637,42.0413948845219,41.9060833922985,419.867133911484,45.3775024874303,45.381601291899,41.9140450979486,45.4204267529618,419.876971094041,43.6659403171378,144.130761877306,143.167598731222,43.7072755195664,41.960457123493,43.6574679456873,44.580143057589,42.6403905577506,43.6429546313138,44.5872337514165,47.7240312722177,42.6807437671876,43.2332101908792,41.9536389627603,42.4297512862757,41.9690463738393,42.67863467162,44.4214207791076,42.9724675443159,44.3198831910796,41.957398090368,43.7585137900458,44.7955390694746,43.7025492851766,42.7701741935113,44.3874044854496,44.8038532720641,45.1200665548124,47.0950830282097,45.5694543517312,44.6480409601238,43.6310349853307,43.8041205749371,43.126521820969,44.6828709850536,44.8052446259765,44.9078937007065,144.489069395655,45.0762878392654,49.0619577473166,82.7379122534889,44.412690350268,44.5554180056698,46.2501400678132,50.1754887737567,143.899401477491,93.3525196806386,94.7532103014541,419.857525252366,49.5117019245809,281.487382063592,185.843113732949,282.903037611937,176.890991132629,419.822332414687,275.982506308336,45.1793126225951,47.4579465803732,127.228440799159,49.8209114298713,47.1955338346374,419.788935803983,47.7255170420383,49.7135906655751,47.2377537926766,298.655290501809,420.167010445454,282.64634807179,246.894623741093,184.76238949384,231.949678061864,246.876521893249,420.168259044833,42.0482823126558,42.7068797039543,419.934386763793,284.261732778086,185.778591139686,282.997467042688,42.6537346920548,41.9286908373753,42.3340565627385,419.667120180637,42.0413948845219,41.9060833922985,419.867133911484,45.3775024874303,45.381601291899,41.9140450979486,45.4204267529618,419.876971094041,43.6659403171378,144.130761877306,143.167598731222,43.7072755195664,41.960457123493,43.6574679456873,44.580143057589,42.6403905577506,43.6429546313138,44.5872337514165,47.7240312722177,42.6807437671876,43.2332101908792,41.9536389627603,42.4297512862757,41.9690463738393,42.67863467162,44.4214207791076,42.9724675443159,44.3198831910796,41.957398090368,43.7585137900458,44.7955390694746,43.7025492851766,42.7701741935113,44.3874044854496,44.8038532720641,45.1200665548124,47.0950830282097,45.5694543517312,44.6480409601238,43.6310349853307,43.8041205749371,43.126521820969,44.6828709850536,44.8052446259765,44.9078937007065,144.489069395655,45.0762878392654,49.0619577473166,82.7379122534889,44.412690350268,44.5554180056698,46.2501400678132,50.1754887737567,143.899401477491,93.3525196806386,94.7532103014541,419.857525252366,49.5117019245809,281.487382063592,185.843113732949,282.903037611937,176.890991132629,419.822332414687,275.982506308336,45.1793126225951,47.4579465803732,127.228440799159,49.8209114298713,47.1955338346374,419.788935803983,47.7255170420383,49.7135906655751,47.2377537926766,298.655290501809,420.167010445454,282.64634807179,246.894623741093,184.76238949384,231.949678061864,246.876521893249,420.168259044833,42.0482823126558,42.7068797039543,419.934386763793,284.261732778086,185.778591139686,282.997467042688,42.6537346920548,41.9286908373753,42.3340565627385,419.667120180637,42.0413948845219,41.9060833922985,419.867133911484,45.3775024874303,45.3816012918989,41.9140450979486,45.4204267529617,419.876971094041,43.6659403171378,144.130761877306,143.167598731222,43.7072755195664,41.960457123493,43.6574679456873,44.580143057589,42.6403905577506,43.6429546313138,44.5872337514165,47.7240312722177,42.6807437671876,43.2332101908792,41.9536389627603,42.4297512862757,41.9690463738393,42.6786346716199,44.4214207791076,42.9724675443159,44.3198831910796,41.9573980903681,43.7585137900458,44.7955390694746,43.7025492851766,42.7701741935113,44.3874044854496,44.803853272064,45.1200665548124,47.0950830282097,45.5694543517312,44.6480409601238,43.6310349853307,43.8041205749371,43.126521820969,44.6828709850536,44.8052446259765,44.9078937007065,144.489069395655,45.0762878392654,49.0619577473166,82.7379122534889,44.412690350268,44.5554180056698,46.2501400678132,50.1754887737567,143.899401477491,93.3525196806386,94.7532103014541,419.857525252366,49.5117019245809,281.487382063592,185.843113732949,282.903037611937,176.890991132629,419.822332414687,275.982506308336,45.1793126225951,47.4579465803732,127.228440799159,49.8209114298713,47.1955338346374,419.788935803983,47.7255170420383,49.7135906655751,47.2377537926766,298.655290501809,420.167010445454,282.64634807179,246.894623741093,184.76238949384,231.949678061864,246.876521893249,420.168259044833,42.0482823126558,42.7068797039543,419.934386763793,284.261732778086,185.778591139686,282.997467042688,42.6537346920548,41.9286908373753,42.3340565627385],"Archive435_field11":[519.667120180637,405.739122328924,404.433238776617,519.867133911484,437.935707968313,437.975265298232,404.510076747183,438.349967625282,519.876971094041,421.417518343698,494.130761877306,493.167598731222,421.816442042607,404.957996578616,421.335751966397,430.240437244468,411.519995665838,421.195684790887,430.308869129237,460.581924447912,411.909442205971,417.241264389334,404.892194895319,409.487127979812,405.040890947524,411.88908744403,428.708617519123,414.724851866369,427.728684004475,404.92847402308,422.310939690725,432.319211962949,421.770829422035,412.772530188321,428.380328194481,432.399451861524,435.451208354463,454.511980545835,439.788224545481,430.895716058553,421.080648962201,422.751088190195,416.211620970295,431.23185865764,432.412879739377,433.403540149271,494.489069395655,435.028702448759,473.494177127405,495.237912253489,428.624360644567,430.001817167926,446.357483862008,484.24080203352,493.899401477491,495.836693979462,496.254170282468,519.857525252366,477.834632724965,507.537659401135,497.985882294238,507.903037611937,497.349968581764,519.822332414687,507.054506308336,436.022988801083,458.013956148319,498.792049773101,480.818796158097,455.481425592774,519.788935803983,460.59626352835,479.783049536635,455.888888018002,509.146226742354,520.167010445454,507.64634807179,503.144623741093,498.399892471487,502.190383193802,504.546976438704,520.168259044833,405.805592507989,412.161678652313,519.934386763793,507.905438394819,498.023326778057,507.997467042688,411.64877915068,404.651421949386,408.563583619637,519.667120180637,405.739122328924,404.433238776617,519.867133911484,437.935707968313,437.975265298232,404.510076747183,438.349967625282,519.876971094041,421.417518343698,494.130761877306,493.167598731222,421.816442042607,404.957996578616,421.335751966397,430.240437244468,411.519995665838,421.195684790887,430.308869129237,460.581924447912,411.909442205971,417.241264389334,404.892194895319,409.487127979812,405.040890947524,411.88908744403,428.708617519123,414.724851866369,427.728684004475,404.92847402308,422.310939690725,432.319211962948,421.770829422035,412.772530188321,428.380328194481,432.399451861524,435.451208354463,454.511980545835,439.788224545481,430.895716058553,421.080648962201,422.751088190194,416.211620970295,431.23185865764,432.412879739377,433.403540149271,494.489069395655,435.028702448759,473.494177127405,495.237912253489,428.624360644567,430.001817167926,446.357483862008,484.24080203352,493.899401477491,495.836693979462,496.254170282468,519.857525252366,477.834632724965,507.537659401135,497.985882294238,507.903037611937,497.349968581764,519.822332414687,507.054506308336,436.022988801083,458.013956148319,498.792049773101,480.818796158097,455.481425592774,519.788935803983,460.59626352835,479.783049536635,455.888888018002,509.146226742354,520.167010445454,507.64634807179,503.144623741093,498.399892471487,502.190383193802,504.546976438704,520.168259044833,405.805592507989,412.161678652313,519.934386763793,507.905438394819,498.023326778057,507.997467042688,411.64877915068,404.651421949386,408.563583619637,519.667120180637,405.739122328924,404.433238776617,519.867133911484,437.935707968313,437.975265298232,404.510076747183,438.349967625282,519.876971094041,421.417518343698,494.130761877306,493.167598731222,421.816442042607,404.957996578616,421.335751966397,430.240437244468,411.519995665838,421.195684790887,430.308869129237,460.581924447912,411.909442205971,417.241264389334,404.892194895319,409.487127979812,405.040890947524,411.88908744403,428.708617519123,414.724851866369,427.728684004475,404.92847402308,422.310939690725,432.319211962948,421.770829422035,412.772530188321,428.380328194481,432.399451861524,435.451208354463,454.511980545835,439.788224545481,430.895716058553,421.080648962201,422.751088190194,416.211620970295,431.23185865764,432.412879739377,433.403540149271,494.489069395655,435.028702448759,473.494177127405,495.237912253489,428.624360644567,430.001817167926,446.357483862008,484.24080203352,493.899401477491,495.836693979462,496.254170282468,519.857525252366,477.834632724965,507.537659401135,497.985882294238,507.903037611937,497.349968581764,519.822332414687,507.054506308336,436.022988801083,458.013956148319,498.792049773101,480.818796158097,455.481425592774,519.788935803983,460.59626352835,479.783049536635,455.888888018002,509.146226742354,520.167010445454,507.64634807179,503.144623741093,498.399892471487,502.190383193802,504.546976438704,520.168259044833,405.805592507989,412.161678652313,519.934386763793,507.905438394819,498.023326778057,507.997467042688,411.64877915068,404.651421949386,408.563583619637,519.667120180637,405.739122328924,404.433238776617,519.867133911484,437.935707968313,437.975265298232,404.510076747183,438.349967625282,519.876971094041,421.417518343698,494.130761877306,493.167598731222,421.816442042607,404.957996578616,421.335751966397,430.240437244468,411.519995665838,421.195684790887,430.308869129237,460.581924447912,411.909442205971,417.241264389334,404.892194895319,409.487127979812,405.040890947524,411.88908744403,428.708617519123,414.724851866369,427.728684004475,404.92847402308,422.310939690725,432.319211962949,421.770829422035,412.772530188321,428.380328194481,432.399451861524,435.451208354463,454.511980545835,439.788224545481,430.895716058553,421.080648962201,422.751088190195,416.211620970295,431.23185865764,432.412879739377,433.403540149271,494.489069395655,435.028702448759,473.494177127405,495.237912253489,428.624360644567,430.001817167926,446.357483862008,484.24080203352,493.899401477491,495.836693979462,496.254170282468,519.857525252366,477.834632724965,507.537659401135,497.985882294238,507.903037611937,497.349968581764,519.822332414687,507.054506308336,436.022988801083,458.013956148319,498.792049773101,480.818796158097,455.481425592774,519.788935803983,460.59626352835,479.783049536635,455.888888018002,509.146226742354,520.167010445454,507.64634807179,503.144623741093,498.399892471487,502.190383193802,504.546976438704,520.168259044833,405.805592507989,412.161678652313,519.934386763793,507.905438394819,498.023326778057,507.997467042688,411.64877915068,404.651421949386,408.563583619637],"Archive435_field12":[408.107687247158,-821.414639939342,-822.720523491649,408.307700978005,-231.42088963256,-231.38133230264,-822.643685521083,-231.006629975591,408.317538160562,-526.837661590871,103.672746610131,102.709583464047,-526.438737891962,-822.19576568965,-526.919427968172,-378.565451523253,-676.18447543558,-527.059495143682,-378.497019638484,-139.050027569536,-675.795028895447,-600.73856112866,-822.261567372947,-713.079665913318,-822.112871320742,-675.815383657388,-414.95959404031,-635.21210287736,-420.297618856868,-822.225288245186,-517.452298421406,-376.486676804772,-526.484350512535,-656.818247955435,-414.733523407155,-311.674689565996,-286.561526396147,-135.352933166783,-203.941187258015,-398.723369756453,-537.37466873147,-506.876874483888,-614.0609792076,-377.574030110081,-359.573902910883,-289.984925585702,104.031054128479,-228.372593340995,-56.4131293066195,35.0552514028891,-407.692591137701,-282.830075062738,-171.215532590234,-22.2664467841436,103.441386210315,46.8276314847004,48.3419761051755,408.298092318887,-36.044504709949,255.357251858816,149.761179744403,256.89431351161,139.847750555084,408.262899481208,249.271893440288,-262.513065720365,-109.477865542679,84.2777946146026,-31.9384041884633,-133.288641632178,408.229502870504,-99.5127738932835,-50.124256897389,-143.743063999446,274.323731896032,408.607577511975,256.637623971463,217.273576849054,148.507672682901,200.711384993178,217.091278510678,408.608826111354,-821.348169760277,-675.542792449104,408.374953830314,258.409788617373,149.68487033525,256.988742942361,-676.055691950738,-822.50234031888,-732.095483246674,408.107687247158,-821.414639939342,-822.720523491649,408.307700978005,-231.42088963256,-231.38133230264,-822.643685521083,-231.006629975591,408.317538160562,-526.837661590871,103.672746610131,102.709583464047,-526.438737891962,-822.19576568965,-526.919427968172,-378.565451523253,-676.18447543558,-527.059495143682,-378.497019638484,-139.050027569536,-675.795028895447,-600.73856112866,-822.261567372947,-713.079665913318,-822.112871320741,-675.815383657388,-414.95959404031,-635.21210287736,-420.297618856868,-822.225288245186,-517.452298421406,-376.486676804772,-526.484350512535,-656.818247955436,-414.733523407155,-311.674689565996,-286.561526396147,-135.352933166783,-203.941187258015,-398.723369756453,-537.37466873147,-506.876874483888,-614.0609792076,-377.574030110081,-359.573902910883,-289.984925585702,104.031054128479,-228.372593340995,-56.4131293066195,35.0552514028891,-407.692591137701,-282.830075062738,-171.215532590234,-22.2664467841436,103.441386210315,46.8276314847004,48.3419761051755,408.298092318887,-36.044504709949,255.357251858816,149.761179744403,256.89431351161,139.847750555084,408.262899481208,249.271893440288,-262.513065720365,-109.477865542679,84.2777946146026,-31.9384041884633,-133.288641632178,408.229502870504,-99.5127738932835,-50.124256897389,-143.743063999446,274.323731896032,408.607577511975,256.637623971463,217.273576849054,148.507672682901,200.711384993178,217.091278510678,408.608826111354,-821.348169760277,-675.542792449104,408.374953830314,258.409788617373,149.68487033525,256.988742942361,-676.055691950738,-822.50234031888,-732.095483246674,408.107687247158,-821.414639939342,-822.720523491649,408.307700978005,-231.42088963256,-231.38133230264,-822.643685521083,-231.006629975591,408.317538160562,-526.837661590871,103.672746610131,102.709583464047,-526.438737891962,-822.19576568965,-526.919427968172,-378.565451523253,-676.18447543558,-527.059495143682,-378.497019638484,-139.050027569536,-675.795028895447,-600.73856112866,-822.261567372947,-713.079665913318,-822.112871320741,-675.815383657388,-414.95959404031,-635.21210287736,-420.297618856868,-822.225288245186,-517.452298421406,-376.486676804772,-526.484350512535,-656.818247955436,-414.733523407155,-311.674689565996,-286.561526396147,-135.352933166783,-203.941187258015,-398.723369756453,-537.37466873147,-506.876874483888,-614.0609792076,-377.574030110081,-359.573902910883,-289.984925585702,104.031054128479,-228.372593340995,-56.4131293066195,35.0552514028891,-407.692591137701,-282.830075062738,-171.215532590234,-22.2664467841436,103.441386210315,46.8276314847004,48.3419761051755,408.298092318887,-36.044504709949,255.357251858816,149.761179744403,256.89431351161,139.847750555084,408.262899481208,249.271893440288,-262.513065720365,-109.477865542679,84.2777946146026,-31.9384041884633,-133.288641632178,408.229502870504,-99.5127738932835,-50.124256897389,-143.743063999446,274.323731896032,408.607577511975,256.637623971463,217.273576849054,148.507672682901,200.711384993178,217.091278510678,408.608826111354,-821.348169760277,-675.542792449104,408.374953830314,258.409788617373,149.68487033525,256.988742942361,-676.055691950738,-822.50234031888,-732.095483246674,408.107687247158,-821.414639939342,-822.720523491649,408.307700978005,-231.42088963256,-231.38133230264,-822.643685521083,-231.006629975591,408.317538160562,-526.837661590871,103.672746610131,102.709583464047,-526.438737891962,-822.19576568965,-526.919427968172,-378.565451523253,-676.18447543558,-527.059495143682,-378.497019638484,-139.050027569536,-675.795028895447,-600.73856112866,-822.261567372947,-713.079665913318,-822.112871320742,-675.815383657388,-414.95959404031,-635.21210287736,-420.297618856868,-822.225288245186,-517.452298421406,-376.486676804772,-526.484350512535,-656.818247955435,-414.733523407155,-311.674689565996,-286.561526396147,-135.352933166783,-203.941187258015,-398.723369756453,-537.37466873147,-506.876874483888,-614.0609792076,-377.574030110081,-359.573902910883,-289.984925585702,104.031054128479,-228.372593340995,-56.4131293066195,35.0552514028891,-407.692591137701,-282.830075062738,-171.215532590234,-22.2664467841436,103.441386210315,46.8276314847004,48.3419761051755,408.298092318887,-36.044504709949,255.357251858816,149.761179744403,256.89431351161,139.847750555084,408.262899481208,249.271893440288,-262.513065720365,-109.477865542679,84.2777946146026,-31.9384041884633,-133.288641632178,408.229502870504,-99.5127738932835,-50.124256897389,-143.743063999446,274.323731896032,408.607577511975,256.637623971463,217.273576849054,148.507672682901,200.711384993178,217.091278510678,408.608826111354,-821.348169760277,-675.542792449104,408.374953830314,258.409788617373,149.68487033525,256.988742942361,-676.055691950738,-822.50234031888,-732.095483246674],"Archive435_field13":[0,1863.24798199619,1824.06992924504,0,382.198335381498,377.29757265406,1849.26199992956,286.111366133129,0,1127.41292895489,5.15305897946828e-09,6.35855712419587e-09,1152.10769326044,1831.07151835009,1113.03368989784,711.633795387174,1485.83576596563,1113.62599347885,710.411735398294,8.4739409384099e-05,1492.17743136442,1325.32258148521,1839.78050949609,1592.90066495764,1859.66991794267,1518.01187129771,853.255656964233,1416.98573755274,883.648485928768,1855.86274965139,1139.33336252821,775.591209842763,1165.54409869951,1479.92020834128,858.768740408025,565.09898639625,479.887449680901,8.6115637062862e-05,301.538804494716,835.609923571306,1191.21880222665,1115.87780075115,1381.25972131829,779.115726126883,721.993475774582,509.076610984828,5.17825850208809e-09,324.172475996581,1.36822268095317e-08,-1.48443918448638e-09,810.715798466141,409.0918974759,177.823274205827,3.00494593217917e-09,5.29440445320907e-09,-1.6661650553891e-09,-2.15567658414992e-09,0,1.51628995058825e-08,2.0228876334406e-09,3.54473740409183e-09,1.77817423788218e-09,3.11884984352111e-09,0,1.59145649556376e-09,451.752006683643,3.29447064151734e-06,-1.37988081004342e-09,7.98816887246984e-09,0.00113290471970336,0,0.00330860852328685,3.59909804881832e-09,0.000227334735145895,2.14892150400852e-09,0,2.14773598182781e-09,2.65516370112532e-09,2.54629590279666e-09,2.89023841397448e-09,2.32483366426896e-09,0,1824.41352323351,1481.04465694891,0,1.9142302814153e-09,3.34167009016996e-09,2.01627916042536e-09,1531.39477458802,1864.32517090948,1656.45445179692,0,1863.25074899228,1824.07139045677,0,382.198624518179,377.297807760738,1849.26407220053,286.11163610977,0,1127.41322740823,5.32584380181428e-05,6.31703702567956e-05,1152.1078578352,1831.0734890377,1113.03401728901,711.633776278358,1485.83502369607,1113.62625636512,710.411826023456,0.000116950921510938,1492.17700566838,1325.32289221562,1839.78276847924,1592.90003780216,1859.67259398814,1518.01139700165,853.255666536421,1416.98558017769,883.64860339089,1855.86460465145,1139.33373465453,775.591226476066,1165.54437245633,1479.91964067844,858.768860991562,565.099160474644,479.887604590204,0.000152427647474418,301.539102844398,835.60995964288,1191.21891145071,1115.87796095679,1381.26025281735,779.11579704879,721.99351722558,509.076763074714,4.55836314960589e-05,324.172757795342,2.29887757680167e-05,-5.8863293497227e-06,810.715863402634,409.09216749753,177.823587095971,7.84489641658455e-06,4.90550076122185e-05,-7.29087977132426e-06,-5.82669434588211e-06,0,2.25512375309824e-05,9.73788862655397e-05,7.28161835711531e-05,9.54519777097884e-05,5.80501923941154e-05,0,8.41900329099157e-05,451.75215856152,0.000106230169937886,-3.05429073539799e-06,1.69425339588904e-05,0.00117773614663002,0,0.00340202382166198,6.17131092088647e-06,0.000265242727343807,0.000116635958895422,0,0.000108525470162086,9.29227795736297e-05,4.97812802774766e-05,8.68894665944017e-05,0.000107254671570154,0,1824.41666763576,1481.04475813976,0,0.000101258350453726,7.33472810456257e-05,0.00011388671016027,1531.39419381343,1864.32746256098,1656.45384233643,0,1863.25532675746,1824.07376380627,0,382.198796046904,377.297948061152,1849.26746926384,286.111809800944,0,1127.41358540418,6.4443323302516e-05,7.67453394509613e-05,1152.10800106187,1831.07672040917,1113.03442331915,711.633678725585,1485.83367836138,1113.62655830611,710.411853643834,0.000124247581592119,1492.17618725067,1325.3232911321,1839.78649112877,1592.89888259771,1859.67701457157,1518.0104997624,853.255574377058,1416.98520325608,883.648663196629,1855.8676400924,1139.33420964977,775.59117318542,1165.54470854707,1479.91858248517,858.768947240323,565.099275336525,479.887704894698,0.000166942813128944,301.53927442474,835.609947733847,1191.21896679944,1115.87809076153,1381.26102546883,779.11578614225,721.993538649526,509.076852254786,5.47522067740338e-05,324.172912521965,3.01908182550207e-05,-6.8139409992448e-06,810.715888311075,409.092327956386,177.823758923378,9.68189617135904e-06,5.95893500688958e-05,-8.72622381413876e-06,-7.0802820333698e-06,0,2.75120479930677e-05,0.000118417449624158,8.85227497359997e-05,0.000116073182338091,7.05461225092664e-05,0,0.000102373595094755,451.752261309378,0.000128288414868467,-3.73967093722097e-06,2.12012253278231e-05,0.00119163915237082,0,0.00343268386299087,7.79084736927894e-06,0.000274002325770544,0.000141830421938305,0,0.000131958024082928,0.000113053227283444,6.04376177148418e-05,0.000105677997866394,0.000130455679722393,0,1824.42188442428,1481.0448209488,0,0.000123130284174784,8.92187050631037e-05,0.000138566264861879,1531.39311353619,1864.3312440243,1656.45272031357,0,1863.2566333109,1824.07443847699,0,382.198824836665,377.297971591488,1849.26843689757,286.11184214582,0,1127.41367916698,6.48955578198697e-05,7.73243456134558e-05,1152.10803393531,1831.07764090356,1113.03453080399,711.633646883581,1485.83328714986,1113.62663626228,710.411854032489,0.000124807505959612,1492.17594661821,1325.3233978676,1839.78755272274,1592.8985456284,1859.67827585394,1518.01023674522,853.255541478781,1416.9850884811,883.64867184747,1855.86850437993,1139.33433646519,775.591153235478,1165.54479726634,1479.91827311831,858.768964852675,565.099297157849,479.887723590652,0.000167829511673771,301.539302455481,835.609940156788,1191.2189748541,1115.87811939713,1381.26123941006,779.115775171704,721.993542288161,509.076867600354,5.51017734985244e-05,324.17293603157,3.05928220817698e-05,-6.72225530162282e-06,810.715890388387,409.092355874665,177.823785807373,9.87297394438367e-06,6.00294267070673e-05,-8.64532518809162e-06,-7.03663841681169e-06,0,2.77926149207633e-05,0.00011934193311254,8.91759420533852e-05,0.000116965206170301,7.10376401099527e-05,0,0.000103105967859678,451.752281129789,0.000129250007421256,-3.63243136564942e-06,2.14914257714952e-05,0.00119466187388559,0,0.00343986538570899,7.97046614881483e-06,0.000274869643261819,0.00014300747355385,0,0.000133035161730704,0.000113893643072736,6.08704567002044e-05,0.000106482800798118,0.000131481353702984,0,1824.42337426493,1481.04483241381,0,0.000124088166654619,8.98948330837596e-05,0.000139703496461998,1531.39279784633,1864.33232269862,1656.45239305283],"Archive435_field14":[0,0,0,0,0.93398288395892,0,14.6349369522014,0,0,9.15584341613977,-2.66982429221329e-10,-1.58353362055635e-10,7.79192853523349,12.1042928995076,0,1.13105833451814,5.39230073008184,4.27072887805644,0,-2.6451451869766e-05,8.90164332362499,9.4332600030223,15.1203859950376,10.9622125102127,9.13104731350676,8.2036527355773,8.73573353678533,8.14367349879812,0.664494898061688,12.1953946368935,3.16496386875887,2.88461870837681,0,4.87061377033284,7.71227857508204,11.2408044647292,-5.61043632585162,5.03289026405674e-07,0.39978822144062,0.0912107327364905,2.09900238208376,2.01087825208022,2.05261776974978,0,3.06032144604734,-4.00080485768326,0,8.54621729385675,0,1.69133679002227e-10,7.38836778114859,6.61892314039481,-2.87033144811691,7.25090606476391e-10,0,-1.0245379070312e-11,-2.75568876487125e-11,0,5.24909731344361e-10,-6.02434619686873e-12,2.72123082146202e-11,4.71571711669496e-12,2.36317357201363e-11,0,0,2.3769747093849,-1.74143137438518e-08,-9.66625420796824e-13,-1.28284716270047e-09,0.000154142860718652,0,-0.000586624247047298,0,4.48931254485745e-05,1.01042327157787e-12,0,-9.55509557610393e-12,-1.70737651652684e-11,1.93465558331814e-10,-3.24733475838611e-11,-2.93288241806447e-13,0,6.77225636211054,0,0,-5.28432806784543e-12,5.35228060958453e-11,0,0,4.44436772210038,4.68601152392427,0,0,0,0,0.933973570484611,0,14.6349384296006,0,0,9.15584468416488,-4.18722973889744e-06,-2.07527913102465e-07,7.79192660069166,12.1042916129894,0,1.13105212705555,5.39229967102305,4.27072979357297,0,-3.66718532125e-05,8.90164362961143,9.43326031587381,15.1203832224038,10.9622126096421,9.13104399320886,8.20365076182753,8.73572837737672,8.14367326473443,0.664494378366443,12.1953964800612,3.16496363030592,2.88462668659399,0,4.87061437965304,7.71228606349182,11.2407912624955,-5.610411769869,3.57925583288942e-07,0.399801905231738,0.0912033680427905,2.09900278056024,2.0108771562347,2.05261763515519,0,3.06032945008048,-4.0008090589747,0,8.54620252800227,0,1.3136714319512e-06,7.38837127928373,6.61891794351255,-2.87035261321281,3.91482317148339e-07,0,2.76947124656509e-07,-3.46948960251778e-07,0,5.05865182409652e-07,-1.49395389873832e-07,1.13724893524572e-07,8.32356846241601e-09,1.0712635537871e-06,0,0,2.37697011891796,-9.24628307614198e-08,1.29054038165108e-07,-2.43908221070926e-06,0.000161779525582621,0,-0.000606467413684531,0,5.45257213034045e-05,-1.71416985270943e-07,0,1.90203492432883e-08,3.20533461195904e-07,1.63428195720767e-06,-3.13544114753327e-07,-1.88206900396454e-08,0,6.77225845604373,0,0,2.04730899615114e-08,2.70353879766896e-08,0,0,4.44437145655128,4.68601040117826,0,0,0,0,0.933968537213699,0,14.6349392354317,0,0,9.15584537775533,-5.09585193186152e-06,-2.55495903828586e-07,7.79192555001694,12.1042909200498,0,1.13104874154851,5.3922990930742,4.27073029360159,0,-3.90371306928034e-05,8.90164379628465,9.43326048493687,15.120381709013,10.9622126677405,9.13104218205514,8.20364968911992,8.73572557225155,8.14367313271275,0.664494033462131,12.1953974813792,3.16496350415192,2.88463102901529,0,4.87061471163436,7.71229013550997,11.2407840621976,-5.61039835817125,3.23963526162615e-07,0.399809427170098,0.0911993067620114,2.09900301468523,2.01087656338344,2.05261755682236,0,3.06033384258687,-4.0008110239554,0,8.54619396509009,0,1.67104153278946e-06,7.38837314522184,6.61891524670959,-2.8703647907598,4.71043088172555e-07,0,3.55650754249413e-07,-4.15481464906989e-07,0,6.10079993010351e-07,-1.80030494846493e-07,1.34765334394501e-07,1.09287136426857e-08,1.29897594582559e-06,0,0,2.37696760553952,-9.06627040123202e-08,1.63854400336205e-07,-3.04607203910726e-06,0.00016418467819769,0,-0.000612895378020822,0,5.67888784571529e-05,-2.07218673927599e-07,0,2.15877478175116e-08,3.69781381426583e-07,2.00276934208597e-06,-3.85040988096499e-07,-2.09619078805572e-08,0,6.77225959468191,0,0,2.48614365682946e-08,3.07380554646355e-08,0,0,4.44437349023153,4.68600979258341,0,0,0,0,0.933967738604873,0,14.6349393651655,0,0,9.15584548766736,-5.13674986760375e-06,-2.5778116490875e-07,7.79192538421846,12.104290812408,0,1.13104820297577,5.39229900037909,4.27073037343308,0,-3.92521623478335e-05,8.90164382331299,9.43326051150155,15.120381465152,10.9622126786567,9.13104189065114,8.20364951840593,8.73572512596616,8.14367310932727,0.664493982488891,12.1953976399381,3.16496348323789,2.88463171787502,0,4.87061476630872,7.71229078319548,11.24078291594,-5.61039622102021,3.19741484195839e-07,0.399810598720607,0.0911986688259465,2.09900304850348,2.01087647079703,2.05261754346601,0,3.06033453503619,-4.00081135680419,0,8.54619265830086,0,1.6983561622762e-06,7.38837344102801,6.61891482027887,-2.87036676088166,4.76657382764246e-07,0,3.6892556386824e-07,-4.27994527024992e-07,0,6.15260769531548e-07,-1.8098687128742e-07,1.34180410002398e-07,1.10081772042313e-08,1.30754575214867e-06,0,0,2.37696720906162,-8.92255874397216e-08,1.67514192793952e-07,-3.08675291570586e-06,0.00016468092388397,0,-0.000614308545219146,0,5.7024336622683e-05,-2.0873336607391e-07,0,2.12622881037692e-08,3.69911028038608e-07,2.02235006359499e-06,-3.88509115331305e-07,-2.0879275028597e-08,0,6.77225977590791,0,0,2.47778984499542e-08,3.28304949303676e-08,0,0,4.44437381573917,4.68600969594781],"Archive435_field15":[0.000124311989695942,0.107263704419702,0.114448506631705,5.58473753025349e-05,0.047025768335488,0.0382031334164619,0.121354262883567,0.031433315240852,4.41904114441006e-05,0.093836722612216,0.000312184045513819,0.000735385560641941,0.0934608099939101,0.113417635277397,0.091597380720044,0.0401625445298566,0.106350900835093,0.0922420465493452,0.0546367811726384,0.00563844222461777,0.110476069332587,0.110069478385192,0.107150262154597,0.115852348697022,0.112296527372703,0.110910733716871,0.0573176622639613,0.111847078691267,0.0647929808305051,0.117334697233157,0.102291135691612,0.0510494010990441,0.0959380625533666,0.109803386258195,0.0598767758208891,0.0453157803506708,0.0425726689120034,0.00578594571402808,0.0390267113930931,0.0548238013707884,0.0954487916934736,0.0901809808460484,0.115488688416062,0.0592619514985726,0.0408390001298509,0.0384032025858143,0.000283946583168553,0.0342792672896252,0.00269784244846577,-0.00236545635706351,0.0497399464454502,0.0388892015666436,0.03125204714512,-0.000489701292706952,0.000445167174080533,-0.00152102524013076,-0.00258852668166241,4.21848666843703e-05,0.00169790104204858,-2.55439644832059e-05,0.000146351722521155,-0.000141548571571217,0.000193335990410687,6.78381255927719e-05,-6.46654602491619e-05,0.0336145015036312,0.00716506848004196,-0.00196281468980618,0.00124402100798172,0.0073289222723802,6.93904502958517e-05,0.00822753551819332,0.00110476303747622,0.00951676204631683,-6.70527350715055e-05,-5.79353359304166e-05,-4.23359983043443e-05,0.000431892510536794,3.62282150013829e-05,0.000265154537809571,-0.000106717859679048,-5.54379135532642e-05,0.0975123334652269,0.113128125877147,1.54691389773917e-05,-0.000111701773371545,0.00030151330217578,-0.00019310417346473,0.113394693712416,0.104506693166006,0.116858170684374,-0.00535196401677434,-0.250474653867743,-0.237872280937798,-0.00211222158119169,-0.524944291060037,-0.527477627239936,-0.240073319488517,-0.528307594422868,-0.00198874215939398,-0.342172156780864,-0.0143690945586195,-0.0293425798415508,-0.338172321810071,-0.241429055250511,-0.347021264660673,-0.415936700936912,-0.271798180299936,-0.344555416403599,-0.422415458742501,-0.251045031282763,-0.267944388135238,-0.299221881516071,-0.250901706746971,-0.254429912372576,-0.248536911848958,-0.270142327052172,-0.379166146870265,-0.275545683071283,-0.398782086821945,-0.241198518700484,-0.332081463932024,-0.374166206405619,-0.327481745574492,-0.273839439054615,-0.39779948338348,-0.510107576022405,-0.481432201751962,-0.367543525210981,-0.533479048625715,-0.372906503661961,-0.331088557209491,-0.350398332194933,-0.285922674730411,-0.402330899833977,-0.401547778669513,-0.522146728122383,-0.00810694155451273,-0.602242903829529,-0.146331548691906,0.104740500590687,-0.403242920129192,-0.610132511021502,-0.463358430782546,-0.0059598131418129,-0.0175289089748386,0.098346882579287,0.10197243465615,-0.00230318706218989,-0.0963233430280749,0.00237485900245834,-0.0128845422763328,0.00644422871311757,-0.010194573759609,-0.00282975671304363,0.00257907496117395,-0.523679775405048,-0.344013243400673,0.0959803929503164,-0.0502171812059814,-0.353315320625869,-0.00343099835701088,-0.306312599014112,-0.0432630680050459,-0.322259541244592,0.00319913201773234,0.00265300976041296,0.00238739836758247,-0.0198417625424634,-0.00412892620395996,-0.0125758086059262,0.00514801143373106,0.00269915464834282,-0.256321451823085,-0.270934246893354,-0.00109720693875407,0.00428761575296311,-0.011951033916388,0.00800437112269705,-0.270702266606975,-0.251628157073672,-0.253106939305999,-0.0108283449665889,-0.608219398259253,-0.590199487783205,-0.00428038643369753,-1.09691432788667,-1.0931582311953,-0.601507088051897,-1.08804814708908,-0.00402180338083007,-0.778180237479345,-0.0290502594657741,-0.0594204437566169,-0.769805281498362,-0.596282546165967,-0.78563907435131,-0.872036686484188,-0.649948556762087,-0.78135139310805,-0.899467877883588,-0.507728792804742,-0.646365776398548,-0.708511162550225,-0.608962186502875,-0.624714653289556,-0.609379196858905,-0.651196318519995,-0.815651007740773,-0.662938439360463,-0.862357070862793,-0.599737837897659,-0.766452426150792,-0.799382409275163,-0.750899711136586,-0.65748307907906,-0.855475458797104,-1.06553060064628,-1.0054366788795,-0.740873316810624,-1.10598483146309,-0.800637128038772,-0.757626120769089,-0.790978198966821,-0.68733080722392,-0.86392425481889,-0.843934271524927,-1.08269648803303,-0.0164977264166342,-1.23876516235469,-0.29536108549361,0.211846540102844,-0.856225839670326,-1.25915395082109,-0.957969212907293,-0.0114300445832042,-0.0355029015504691,0.198214896838724,0.206533561516475,-0.00464864885152163,-0.194344726933886,0.00477531746456813,-0.0259153255784993,0.0130300518923136,-0.020582364517747,-0.00572744993886557,0.00522287157495729,-1.08097360960254,-0.695191895337153,0.193923693705528,-0.101678504320742,-0.713959858028667,-0.00693147441387865,-0.620853104855705,-0.0876310097758586,-0.654036356498282,0.00646537868866891,0.00536385967371197,0.00481718276164314,-0.0401153259425068,-0.00829395457320301,-0.0254166734473938,0.010402809077069,0.00545365223705075,-0.610165625183851,-0.654996732531977,-0.00220998710936063,0.00868699197632804,-0.0242034733324658,0.0162019067849735,-0.654800173018685,-0.607774038347719,-0.623075021571721,-0.016304742744726,-0.965968167239809,-0.942530696285014,-0.00644856632128509,-1.66888434234867,-1.65883875766936,-0.962944741613438,-1.64778847535977,-0.00605488476244895,-1.2141878150549,-0.0437314018210902,-0.0894982942746341,-1.20143813057537,-0.951140290341978,-1.22425636052726,-1.32813715805648,-1.02809971319559,-1.21814644743286,-1.37652042300417,-0.764412650792475,-1.0247877264032,-1.11779917907222,-0.967027989223002,-0.995000895092552,-0.97022702456503,-1.03225087317575,-1.25213650622534,-1.0503311860004,-1.32593198504925,-0.958280978289202,-1.20082237376767,-1.22459899142746,-1.17431656337597,-1.04112720224093,-1.31315126807986,-1.62095344195842,-1.52944096203335,-1.11420324567923,-1.67849061203884,-1.2283679676701,-1.18416381691599,-1.23155839106084,-1.08873697855329,-1.32551790483378,-1.28632063407218,-1.6432461768986,-0.0248884910852005,-1.87528746996732,-0.444390676004338,0.318952603867253,-1.30920881272607,-1.90817523816995,-1.45258013260001,-0.0169003054251209,-0.053476881839507,0.298082951327271,0.311094749508354,-0.00699412485440892,-0.292366149703249,0.00717579483090357,-0.0389460882764538,0.0196158933969928,-0.0309701361170191,-0.0086251588902455,0.00786668565312165,-1.63826722019011,-1.04637068614274,0.29186703351766,-0.153139863999293,-1.07460449516863,-0.0104319643084291,-0.935393731527559,-0.131998997087262,-0.985813386000535,0.00973164732765663,0.00807469579374617,0.00724698613512907,-0.0603888694385946,-0.0124589603623122,-0.0382575181159428,0.0156576282815132,0.00820813610478705,-0.964016297171372,-1.039059295781,-0.00332278344055891,0.0130863886122844,-0.036455894525546,0.0243994639577324,-1.03889864225001,-0.963926795290438,-0.993044909660955],"Archive435_field16":[4586406.15222708,3633094.93218136,3624374.65657699,4587265.93036522,3994261.44391232,3994353.44749739,3625043.06488604,3995848.30929282,4587309.47117671,3809989.47657592,4359052.99318529,4354870.24440351,3811727.3957989,3627633.39767177,3809624.66711613,3906154.5400666,3708692.38304519,3809096.79830551,3904990.91741538,4126193.70426968,3710716.35351224,3763904.02418734,3628135.69048017,3685287.49971584,3628707.48217383,3710730.46612042,3884676.1468937,3739074.16154402,3878555.50466671,3627721.91888473,3817112.90268675,3915213.30156806,3811860.12669139,3721584.9097224,3883719.68318044,3939327.20029328,3962243.26166003,4103138.92333044,4013054.39390839,3900625.54748861,3804671.59395847,3823253.36953003,3754391.21241502,3909689.74441977,3922879.16553485,3952146.86138562,4360726.637039,3982645.87733994,4211462.57783343,4334852.24693707,3887490.61693395,3939614.42985108,4054090.79449588,4268579.27831133,4358141.46519146,4342078.43942423,4344256.23964281,4587222.13610606,4237601.13835258,4475076.96788326,4393588.55936623,4477145.87158657,4386797.62201131,4587073.62160514,4470645.38535426,3973639.88650447,4128126.9629585,4369226.80331337,4251010.74819175,4107833.45937022,4586921.63944813,4142828.42448292,4239121.94636266,4105964.6609184,4489303.95606062,4588552.16805179,4476035.22017652,4441968.40062928,4394538.73277048,4431335.27281447,4447393.60029071,4588561.84485918,3633861.07557406,3712741.24578101,4587553.09912472,4477780.69041019,4393706.66596207,4477549.38462292,3709255.8521867,3626787.19200283,3674552.09941564,3057604.10148472,2422063.28812091,2416249.77105133,3058177.28691015,2662840.96260821,2662902.2983316,2416695.37659069,2663898.87286188,3058206.31411781,2539992.98438395,2906035.3287902,2903246.82960234,2541151.59719927,2418422.26511451,2539749.77807742,2604103.02671106,2472461.58869679,2539397.86553701,2603327.27827692,2750795.80284645,2473810.90234149,2509269.34945823,2418757.12698678,2456858.33314389,2419138.32144922,2473820.31074695,2589784.09792914,2492716.10769601,2585703.66977781,2418481.27925648,2544741.9351245,2610142.20104538,2541240.08446093,2481056.6064816,2589146.45545362,2626218.13352886,2641495.50777336,2735425.94888696,2675369.59593892,2600417.03165907,2536447.72930565,2548835.57968668,2502927.47494334,2606459.82961318,2615252.77702323,2634764.57425708,2907151.09135933,2655097.25155996,2807641.71855562,2889901.49795804,2591660.4112893,2626409.61990072,2702727.19633059,2845719.51887422,2905427.64346098,2894718.95961616,2896170.82642854,3058148.09073738,2825067.42556839,2983384.64525551,2929059.03957749,2984763.91439105,2924531.74800754,3058049.0810701,2980430.25690284,2649093.25766964,2752084.64197233,2912817.86887558,2834007.16546117,2738555.63958015,3057947.75963209,2761885.61632195,2826081.29757511,2737309.7739456,2992869.30404042,3059034.7787012,2984023.48011768,2961312.26708618,2929692.48851365,2954223.51520965,2964929.06686048,3059041.22990612,2422574.05038271,2475160.83052068,3058368.73274981,2985187.12694013,2929137.77730805,2985032.92308195,2472837.23479114,2417858.12800189,2449701.39961042,1528802.05074236,1211031.64406046,1208124.88552567,1529088.64345507,1331420.48130411,1331451.1491658,1208347.68829535,1331949.43643094,1529103.1570589,1269996.49219197,1453017.6643951,1451623.41480117,1270575.79859963,1209211.13255726,1269874.88903871,1302051.51335553,1236230.7943484,1269698.9327685,1301663.63913846,1375397.90142323,1236905.45117075,1254634.67472911,1209378.56349339,1228429.16657195,1209569.16072461,1236910.15537348,1294892.04896457,1246358.05384801,1292851.8348889,1209240.63962824,1272370.96756225,1305071.10052269,1270620.04223046,1240528.3032408,1294573.22772681,1313109.06676443,1320747.75388668,1367712.97444348,1337684.79796946,1300208.51582954,1268223.86465283,1274417.78984334,1251463.73747167,1303229.91480659,1307626.38851162,1317382.28712854,1453575.54567967,1327548.62577998,1403820.85927781,1444950.74897902,1295830.20564465,1313204.80995036,1351363.5981653,1422859.75943711,1452713.82173049,1447359.47980808,1448085.41321427,1529074.04536869,1412533.71278419,1491692.32262775,1464529.51978874,1492381.95719552,1462265.87400377,1529024.54053505,1490215.12845142,1324546.62883482,1376042.32098616,1456408.93443779,1417003.58273059,1369277.81979007,1528973.87981604,1380942.80816097,1413040.64878755,1368654.8869728,1496434.65202021,1529517.3893506,1492011.74005884,1480656.13354309,1464846.24425683,1477111.75760482,1482464.53343024,1529520.61495306,1211287.02519135,1237580.41526034,1529184.36637491,1492593.56347006,1464568.88865402,1492516.46154097,1236418.61739557,1208929.06400094,1224850.69980521,0,6.39187902606864e-11,-1.91756370782059e-10,0,6.39187902606864e-11,0,6.39187902606864e-11,-6.39187902606864e-11,0,0,0,0,-1.27837580521373e-10,0,6.39187902606864e-11,0,-1.91756370782059e-10,0,-1.27837580521373e-10,0,-6.39187902606864e-11,2.55675161042745e-10,6.39187902606864e-11,-2.55675161042745e-10,2.55675161042745e-10,0,-1.27837580521373e-10,2.55675161042745e-10,-1.27837580521373e-10,-6.39187902606864e-11,1.27837580521373e-10,2.55675161042746e-10,1.91756370782059e-10,0,6.39187902606864e-11,-1.91756370782059e-10,-1.27837580521373e-10,-2.55675161042746e-10,-2.55675161042745e-10,1.91756370782059e-10,1.91756370782059e-10,-6.39187902606864e-11,0,-1.91756370782059e-10,1.27837580521373e-10,6.39187902606864e-11,0,-6.39187902606864e-11,1.91756370782059e-10,0,6.39187902606864e-11,1.27837580521373e-10,1.27837580521373e-10,0,0,0,0,0,2.55675161042745e-10,0,0,0,0,0,0,-6.39187902606864e-11,-1.27837580521373e-10,0,-1.91756370782059e-10,6.39187902606864e-11,0,-1.27837580521373e-10,0,-6.39187902606864e-11,0,0,0,0,0,0,0,0,0,2.55675161042745e-10,0,1.02270064417098e-09,0,0,1.27837580521373e-10,-1.91756370782059e-10,-6.39187902606864e-11],"Archive435_field17":[-100,-364.484553196968,-363.313102759799,-100,-387.815190470122,-387.891952517244,-363.372540612453,-388.422989463585,-100,-375.934241251631,-350,-350,-376.46070360089,-363.82688859525,-375.837990572393,-382.275781145392,-368.20714510787,-375.612293529677,-382.709515706324,-414.509638295976,-368.658258526223,-372.890285636363,-363.654194528843,-366.837430378854,-363.8304759401,-368.631354044923,-381.679301431922,-370.885723327048,-380.551234813148,-363.751521867816,-376.874151303904,-385.075047157939,-376.36608441181,-369.202303695124,-381.181194324213,-383.3058275834,-386.425903111679,-406.043783620925,-389.251129304593,-383.932272719266,-375.790320023234,-377.028518018205,-371.993100244481,-383.783634491505,-384.46408501601,-383.865054922188,-350,-383.979315348611,-429.146387039842,-412.5,-381.267044124199,-379.34300076665,-396.677611807058,-442.628558654241,-350,-402.484174298823,-401.500959981014,-100,-434.229473134851,-226.050277337542,-312.14276856129,-225,-320.458977449135,-100,-231.072,-386.448940772297,-409.748828873407,-371.563608973942,-438.254989708447,-407.308757938435,-100,-412.847691794125,-437.63060508356,-408.076010432671,-210.490936240545,-100,-225,-256.25,-313.637502977648,-270.240705131938,-257.670454545455,-100,-364.51635503686,-368.839117771025,-100,-223.643705616733,-312.244735638371,-225,-368.375027132618,-363.392642158276,-366.144452475417,-100,-364.484553196968,-363.313102759799,-100,-387.815190470122,-387.891952517244,-363.372540612453,-388.422989463585,-100,-375.934241251631,-350,-350,-376.46070360089,-363.82688859525,-375.837990572393,-382.275781145392,-368.20714510787,-375.612293529677,-382.709515706324,-414.509638295976,-368.658258526222,-372.890285636363,-363.654194528843,-366.837430378854,-363.8304759401,-368.631354044923,-381.679301431922,-370.885723327049,-380.551234813148,-363.751521867816,-376.874151303904,-385.075047157939,-376.36608441181,-369.202303695124,-381.181194324213,-383.3058275834,-386.425903111679,-406.043783620925,-389.251129304593,-383.932272719266,-375.790320023234,-377.028518018205,-371.993100244481,-383.783634491505,-384.464085016009,-383.865054922188,-350,-383.979315348611,-429.146387039842,-412.5,-381.267044124199,-379.34300076665,-396.677611807058,-442.628558654241,-350,-402.484174298823,-401.500959981014,-100,-434.229473134851,-226.050277337542,-312.14276856129,-225,-320.458977449135,-100,-231.072,-386.448940772297,-409.748828873407,-371.563608973942,-438.254989708447,-407.308757938435,-100,-412.847691794125,-437.63060508356,-408.076010432671,-210.490936240545,-100,-225,-256.25,-313.637502977648,-270.240705131938,-257.670454545455,-100,-364.51635503686,-368.839117771025,-100,-223.643705616733,-312.244735638371,-225,-368.375027132618,-363.392642158276,-366.144452475417,-100,-364.484553196968,-363.313102759799,-100,-387.815190470122,-387.891952517244,-363.372540612453,-388.422989463585,-100,-375.934241251631,-350,-350,-376.46070360089,-363.82688859525,-375.837990572393,-382.275781145392,-368.20714510787,-375.612293529677,-382.709515706324,-414.509638295976,-368.658258526222,-372.890285636363,-363.654194528843,-366.837430378854,-363.8304759401,-368.631354044923,-381.679301431922,-370.885723327049,-380.551234813148,-363.751521867816,-376.874151303904,-385.075047157939,-376.36608441181,-369.202303695124,-381.181194324213,-383.3058275834,-386.425903111679,-406.043783620925,-389.251129304593,-383.932272719266,-375.790320023234,-377.028518018205,-371.993100244481,-383.783634491505,-384.464085016009,-383.865054922188,-350,-383.979315348611,-429.146387039842,-412.5,-381.267044124199,-379.34300076665,-396.677611807058,-442.628558654241,-350,-402.484174298823,-401.500959981014,-100,-434.229473134851,-226.050277337542,-312.14276856129,-225,-320.458977449135,-100,-231.072,-386.448940772297,-409.748828873407,-371.563608973942,-438.254989708447,-407.308757938435,-100,-412.847691794125,-437.63060508356,-408.076010432671,-210.490936240545,-100,-225,-256.25,-313.637502977648,-270.240705131938,-257.670454545455,-100,-364.51635503686,-368.839117771025,-100,-223.643705616733,-312.244735638371,-225,-368.375027132618,-363.392642158276,-366.144452475417,-100,-364.484553196968,-363.313102759799,-100,-387.815190470122,-387.891952517244,-363.372540612453,-388.422989463585,-100,-375.934241251631,-350,-350,-376.46070360089,-363.82688859525,-375.837990572393,-382.275781145392,-368.20714510787,-375.612293529677,-382.709515706324,-414.509638295976,-368.658258526223,-372.890285636363,-363.654194528843,-366.837430378854,-363.8304759401,-368.631354044923,-381.679301431922,-370.885723327048,-380.551234813148,-363.751521867816,-376.874151303904,-385.075047157939,-376.36608441181,-369.202303695124,-381.181194324213,-383.3058275834,-386.425903111679,-406.043783620925,-389.251129304593,-383.932272719266,-375.790320023234,-377.028518018205,-371.993100244481,-383.783634491505,-384.46408501601,-383.865054922188,-350,-383.979315348611,-429.146387039842,-412.5,-381.267044124199,-379.34300076665,-396.677611807058,-442.628558654241,-350,-402.484174298823,-401.500959981014,-100,-434.229473134851,-226.050277337542,-312.14276856129,-225,-320.458977449135,-100,-231.072,-386.448940772297,-409.748828873407,-371.563608973942,-438.254989708447,-407.308757938435,-100,-412.847691794125,-437.63060508356,-408.076010432671,-210.490936240545,-100,-225,-256.25,-313.637502977648,-270.240705131938,-257.670454545455,-100,-364.51635503686,-368.839117771025,-100,-223.643705616733,-312.244735638371,-225,-368.375027132618,-363.392642158276,-366.144452475417],"Archive435_field18":[429.490915315817,42.1323474796932,41.9969344520597,429.797886941831,44.8292368482366,44.838110105592,42.0038051307743,44.8994949652563,429.81240364191,43.4558664914644,153.72119009576,152.253322121919,43.516722553647,42.0563251811303,43.4447404587499,44.1889125424336,42.562657995021,43.4186511604643,44.2390497981138,47.9149636416286,42.6148041480694,43.1040024835926,42.0363627263439,42.4043267395404,42.0567398578524,42.6116941425975,44.1199628699932,42.8722864478377,43.989564765751,42.0476132148185,43.564514763592,44.5124918197835,43.5057851119431,42.6776926844964,44.0623845129406,44.3079800696187,44.6686431077841,46.9363588482204,44.9952232347731,44.3803935749642,43.4392300135909,43.5823586804032,43.0002929399291,44.3632118387126,44.4418680607383,44.3726235787916,154.229587266429,44.3858314361535,49.6068887963177,96.1295801068026,44.0723082629936,43.8498997614667,45.853682498962,51.1653513820606,153.335773361079,106.557181508666,108.151591583138,429.783775119688,50.1944647244211,291.559794994364,195.405739993087,293.113245144034,186.609449520057,429.728870337007,286.063311252222,44.6713061307126,47.3646410693361,140.386003023107,50.6597916129721,47.0825827060787,429.68043277247,47.7228520503569,50.5876162910113,47.1712727435803,308.754557024407,430.259446030833,292.721444862016,256.243895039892,194.670719767695,241.523305835895,257.031728642004,430.260195504171,42.1360235920471,42.6357104511763,429.901641882296,294.404548641086,195.365477310669,293.257920316313,42.582064205079,42.0061287554823,42.3242224235488,429.490915315817,42.1323474796932,41.9969344520597,429.797886941831,44.8292368482366,44.838110105592,42.0038051307743,44.8994949652563,429.81240364191,43.4558664914644,153.72119009576,152.253322121919,43.516722553647,42.0563251811303,43.4447404587499,44.1889125424336,42.562657995021,43.4186511604643,44.2390497981138,47.9149636416286,42.6148041480694,43.1040024835926,42.0363627263439,42.4043267395404,42.0567398578524,42.6116941425975,44.1199628699932,42.8722864478377,43.989564765751,42.0476132148185,43.564514763592,44.5124918197835,43.5057851119431,42.6776926844964,44.0623845129406,44.3079800696187,44.6686431077841,46.9363588482204,44.9952232347731,44.3803935749642,43.4392300135909,43.5823586804032,43.0002929399291,44.3632118387126,44.4418680607383,44.3726235787916,154.229587266429,44.3858314361535,49.6068887963176,96.1295801068026,44.0723082629936,43.8498997614667,45.853682498962,51.1653513820606,153.335773361079,106.557181508666,108.151591583138,429.783775119688,50.1944647244211,291.559794994364,195.405739993087,293.113245144034,186.609449520057,429.728870337007,286.063311252222,44.6713061307126,47.3646410693361,140.386003023107,50.6597916129721,47.0825827060787,429.68043277247,47.7228520503569,50.5876162910113,47.1712727435803,308.754557024407,430.259446030833,292.721444862016,256.243895039892,194.670719767695,241.523305835895,257.031728642004,430.260195504171,42.1360235920471,42.6357104511763,429.901641882296,294.404548641086,195.365477310669,293.257920316313,42.582064205079,42.0061287554823,42.3242224235488,429.490915315817,42.1323474796932,41.9969344520597,429.797886941831,44.8292368482366,44.838110105592,42.0038051307743,44.8994949652563,429.81240364191,43.4558664914644,153.72119009576,152.253322121919,43.516722553647,42.0563251811303,43.4447404587499,44.1889125424336,42.562657995021,43.4186511604643,44.2390497981138,47.9149636416286,42.6148041480694,43.1040024835926,42.0363627263439,42.4043267395404,42.0567398578524,42.6116941425975,44.1199628699932,42.8722864478377,43.989564765751,42.0476132148185,43.564514763592,44.5124918197835,43.5057851119431,42.6776926844964,44.0623845129406,44.3079800696187,44.6686431077841,46.9363588482204,44.9952232347731,44.3803935749642,43.4392300135909,43.5823586804032,43.0002929399291,44.3632118387126,44.4418680607383,44.3726235787916,154.229587266429,44.3858314361535,49.6068887963176,96.1295801068026,44.0723082629936,43.8498997614667,45.853682498962,51.1653513820606,153.335773361079,106.557181508666,108.151591583138,429.783775119688,50.1944647244211,291.559794994364,195.405739993087,293.113245144034,186.609449520057,429.728870337007,286.063311252222,44.6713061307126,47.3646410693361,140.386003023107,50.6597916129721,47.0825827060787,429.68043277247,47.7228520503569,50.5876162910113,47.1712727435803,308.754557024407,430.259446030833,292.721444862016,256.243895039892,194.670719767695,241.523305835895,257.031728642004,430.260195504171,42.1360235920471,42.6357104511763,429.901641882296,294.404548641086,195.365477310669,293.257920316313,42.582064205079,42.0061287554823,42.3242224235488,429.490915315817,42.1323474796932,41.9969344520597,429.797886941831,44.8292368482366,44.838110105592,42.0038051307743,44.8994949652563,429.81240364191,43.4558664914644,153.72119009576,152.253322121919,43.516722553647,42.0563251811303,43.4447404587499,44.1889125424336,42.562657995021,43.4186511604643,44.2390497981138,47.9149636416286,42.6148041480694,43.1040024835926,42.0363627263439,42.4043267395404,42.0567398578524,42.6116941425975,44.1199628699932,42.8722864478377,43.989564765751,42.0476132148185,43.564514763592,44.5124918197835,43.5057851119431,42.6776926844964,44.0623845129406,44.3079800696187,44.6686431077841,46.9363588482204,44.9952232347731,44.3803935749642,43.4392300135909,43.5823586804032,43.0002929399291,44.3632118387126,44.4418680607383,44.3726235787916,154.229587266429,44.3858314361535,49.6068887963177,96.1295801068026,44.0723082629936,43.8498997614667,45.853682498962,51.1653513820606,153.335773361079,106.557181508666,108.151591583138,429.783775119688,50.1944647244211,291.559794994364,195.405739993087,293.113245144034,186.609449520057,429.728870337007,286.063311252222,44.6713061307126,47.3646410693361,140.386003023107,50.6597916129721,47.0825827060787,429.68043277247,47.7228520503569,50.5876162910113,47.1712727435803,308.754557024407,430.259446030833,292.721444862016,256.243895039892,194.670719767695,241.523305835895,257.031728642004,430.260195504171,42.1360235920471,42.6357104511763,429.901641882296,294.404548641086,195.365477310669,293.257920316313,42.582064205079,42.0061287554823,42.3242224235488],"Archive435_field19":[529.490915315817,406.616900676661,405.310037211859,529.797886941831,432.644427318358,432.730062622836,405.376345743227,433.322484428842,529.81240364191,419.390107743095,503.72119009576,502.25332212192,419.977426154537,405.883213776381,419.282731031143,426.464693687826,410.769803102891,419.030944690141,426.948565504438,462.424601937605,411.273062674292,415.994288119955,405.690557255186,409.241757118395,405.887215797953,411.243048187521,425.799264301915,413.758009774886,424.540799578899,405.799135082635,420.438666067496,429.587538977722,419.871869523753,411.879996379621,425.243578837153,427.613807653019,431.094546219463,452.980142469145,434.246352539366,428.31266629423,419.229550036825,420.610876698608,414.99339318441,428.146846330217,428.905953076748,428.237678500979,504.229587266429,428.365146784764,478.75327583616,508.629580106803,425.339352387193,423.192900528117,442.53129430602,493.793910036302,503.335773361079,509.04135580749,509.652551564152,529.783775119688,484.423937859272,517.610072331906,507.548508554377,518.113245144034,507.068426969193,529.728870337007,517.135311252222,431.120246903009,457.113469942743,511.949611997049,488.914781321419,454.391340644514,529.68043277247,460.570543844482,488.218221374571,455.247283176251,519.245493264952,530.259446030833,517.721444862016,512.493895039892,508.308222745342,511.764010967833,514.702183187459,530.260195504171,406.652378628907,411.474828222202,529.901641882296,518.048254257819,507.61021294904,518.257920316313,410.957091337697,405.398770913758,408.468674898966,529.490915315817,406.616900676661,405.310037211859,529.797886941831,432.644427318358,432.730062622836,405.376345743227,433.322484428842,529.81240364191,419.390107743095,503.72119009576,502.25332212192,419.977426154537,405.883213776381,419.282731031143,426.464693687826,410.769803102891,419.030944690141,426.948565504438,462.424601937605,411.273062674292,415.994288119955,405.690557255187,409.241757118395,405.887215797953,411.243048187521,425.799264301915,413.758009774886,424.540799578899,405.799135082635,420.438666067496,429.587538977722,419.871869523753,411.879996379621,425.243578837153,427.613807653019,431.094546219463,452.980142469145,434.246352539366,428.31266629423,419.229550036825,420.610876698608,414.99339318441,428.146846330217,428.905953076748,428.237678500979,504.229587266429,428.365146784764,478.75327583616,508.629580106803,425.339352387193,423.192900528117,442.53129430602,493.793910036302,503.335773361079,509.04135580749,509.652551564152,529.783775119688,484.423937859272,517.610072331906,507.548508554377,518.113245144034,507.068426969193,529.728870337007,517.135311252222,431.120246903009,457.113469942743,511.949611997049,488.914781321419,454.391340644514,529.68043277247,460.570543844482,488.218221374571,455.247283176251,519.245493264952,530.259446030833,517.721444862016,512.493895039892,508.308222745342,511.764010967833,514.702183187459,530.260195504171,406.652378628907,411.474828222202,529.901641882296,518.048254257819,507.61021294904,518.257920316313,410.957091337697,405.398770913758,408.468674898966,529.490915315817,406.616900676661,405.310037211859,529.797886941831,432.644427318358,432.730062622836,405.376345743227,433.322484428842,529.81240364191,419.390107743095,503.72119009576,502.25332212192,419.977426154537,405.883213776381,419.282731031143,426.464693687826,410.769803102891,419.030944690141,426.948565504438,462.424601937605,411.273062674292,415.994288119955,405.690557255187,409.241757118395,405.887215797953,411.243048187521,425.799264301915,413.758009774886,424.540799578899,405.799135082635,420.438666067496,429.587538977722,419.871869523753,411.879996379621,425.243578837153,427.613807653019,431.094546219463,452.980142469145,434.246352539366,428.31266629423,419.229550036825,420.610876698608,414.99339318441,428.146846330217,428.905953076748,428.237678500979,504.229587266429,428.365146784764,478.75327583616,508.629580106803,425.339352387193,423.192900528117,442.53129430602,493.793910036302,503.335773361079,509.04135580749,509.652551564152,529.783775119688,484.423937859272,517.610072331906,507.548508554377,518.113245144034,507.068426969193,529.728870337007,517.135311252222,431.120246903009,457.113469942743,511.949611997049,488.914781321419,454.391340644514,529.68043277247,460.570543844482,488.218221374571,455.247283176251,519.245493264952,530.259446030833,517.721444862016,512.493895039892,508.308222745342,511.764010967833,514.702183187459,530.260195504171,406.652378628907,411.474828222202,529.901641882296,518.048254257819,507.61021294904,518.257920316313,410.957091337697,405.398770913758,408.468674898966,529.490915315817,406.616900676661,405.310037211859,529.797886941831,432.644427318358,432.730062622836,405.376345743227,433.322484428842,529.81240364191,419.390107743095,503.72119009576,502.25332212192,419.977426154537,405.883213776381,419.282731031143,426.464693687826,410.769803102891,419.030944690141,426.948565504438,462.424601937605,411.273062674292,415.994288119955,405.690557255186,409.241757118395,405.887215797953,411.243048187521,425.799264301915,413.758009774886,424.540799578899,405.799135082635,420.438666067496,429.587538977722,419.871869523753,411.879996379621,425.243578837153,427.613807653019,431.094546219463,452.980142469145,434.246352539366,428.31266629423,419.229550036825,420.610876698608,414.99339318441,428.146846330217,428.905953076748,428.237678500979,504.229587266429,428.365146784764,478.75327583616,508.629580106803,425.339352387193,423.192900528117,442.53129430602,493.793910036302,503.335773361079,509.04135580749,509.652551564152,529.783775119688,484.423937859272,517.610072331906,507.548508554377,518.113245144034,507.068426969193,529.728870337007,517.135311252222,431.120246903009,457.113469942743,511.949611997049,488.914781321419,454.391340644514,529.68043277247,460.570543844482,488.218221374571,455.247283176251,519.245493264952,530.259446030833,517.721444862016,512.493895039892,508.308222745342,511.764010967833,514.702183187459,530.260195504171,406.652378628907,411.474828222202,529.901641882296,518.048254257819,507.61021294904,518.257920316313,410.957091337697,405.398770913758,408.468674898966],"Archive435_field20":[417.931482382338,-820.536861591605,-821.843725056407,418.238454008352,-236.712170282514,-236.626534978037,-821.777416525039,-236.034113172031,418.252970708432,-528.865072191474,113.263174828585,111.795306854744,-528.277753780032,-821.270548491885,-528.972448903427,-382.341195079895,-676.934667998527,-529.224235244428,-381.857323263283,-137.207350079844,-676.431408427126,-601.985537398038,-821.46320501308,-713.325036774735,-821.266546470313,-676.461422913897,-417.868947257518,-636.178944968843,-423.485503282444,-821.354627185631,-519.324572044635,-379.218349789999,-528.383310410816,-657.710781764136,-417.870272764483,-316.460333774501,-290.918188531146,-136.884771243473,-209.48305926413,-401.306419520776,-539.225767656845,-509.017085975474,-615.279206993485,-380.659042437504,-363.080829573512,-295.150787233993,113.771571999253,-235.036149004989,-51.1540305978641,48.4469192562028,-410.977599395076,-289.638991702547,-175.041722146222,-12.7133387813619,112.877758093903,60.0322933127281,61.7403573868592,418.224342186209,-29.455199575642,265.429664789588,159.323806004541,267.104521043707,149.566208942513,418.169437403528,259.352698384174,-267.415807618438,-110.378351748254,97.4353568385507,-23.8424190251414,-134.378726580438,418.120999838991,-99.5384935771518,-41.6890850594528,-144.384668841197,284.42299841863,418.700013097355,266.712720761688,226.622848147852,158.416002956756,210.285012767209,227.246485259433,418.700762570692,-820.501383639359,-676.229642879216,418.342208948817,268.552604480373,159.271756506234,267.249196215986,-676.747379763721,-821.754991354508,-732.190391967345,417.931482382338,-820.536861591605,-821.843725056407,418.238454008352,-236.712170282514,-236.626534978037,-821.777416525039,-236.034113172031,418.252970708432,-528.865072191474,113.263174828585,111.795306854744,-528.277753780032,-821.270548491886,-528.972448903427,-382.341195079895,-676.934667998527,-529.224235244428,-381.857323263283,-137.207350079844,-676.431408427126,-601.985537398038,-821.46320501308,-713.325036774735,-821.266546470313,-676.461422913897,-417.868947257518,-636.178944968843,-423.485503282444,-821.354627185631,-519.324572044635,-379.218349789999,-528.383310410816,-657.710781764136,-417.870272764483,-316.460333774501,-290.918188531146,-136.884771243473,-209.48305926413,-401.306419520776,-539.225767656845,-509.017085975474,-615.279206993485,-380.659042437504,-363.080829573512,-295.150787233993,113.771571999253,-235.036149004989,-51.1540305978641,48.4469192562027,-410.977599395076,-289.638991702547,-175.041722146222,-12.7133387813619,112.877758093903,60.0322933127281,61.7403573868592,418.224342186209,-29.455199575642,265.429664789588,159.323806004541,267.104521043706,149.566208942513,418.169437403528,259.352698384174,-267.415807618438,-110.378351748254,97.4353568385507,-23.8424190251414,-134.378726580438,418.120999838991,-99.5384935771518,-41.6890850594528,-144.384668841197,284.42299841863,418.700013097355,266.712720761688,226.622848147852,158.416002956756,210.285012767209,227.246485259433,418.700762570692,-820.501383639359,-676.229642879216,418.342208948817,268.552604480373,159.271756506234,267.249196215986,-676.747379763721,-821.754991354508,-732.190391967345,417.931482382338,-820.536861591605,-821.843725056407,418.238454008352,-236.712170282514,-236.626534978037,-821.777416525039,-236.034113172031,418.252970708432,-528.865072191474,113.263174828585,111.795306854744,-528.277753780032,-821.270548491886,-528.972448903427,-382.341195079895,-676.934667998527,-529.224235244428,-381.857323263283,-137.207350079844,-676.431408427126,-601.985537398038,-821.46320501308,-713.325036774735,-821.266546470313,-676.461422913897,-417.868947257518,-636.178944968843,-423.485503282444,-821.354627185631,-519.324572044635,-379.218349789999,-528.383310410816,-657.710781764136,-417.870272764483,-316.460333774501,-290.918188531146,-136.884771243473,-209.48305926413,-401.306419520776,-539.225767656845,-509.017085975474,-615.279206993485,-380.659042437504,-363.080829573512,-295.150787233993,113.771571999253,-235.036149004989,-51.1540305978641,48.4469192562027,-410.977599395076,-289.638991702547,-175.041722146222,-12.7133387813619,112.877758093903,60.0322933127281,61.7403573868592,418.224342186209,-29.455199575642,265.429664789588,159.323806004541,267.104521043706,149.566208942513,418.169437403528,259.352698384174,-267.415807618438,-110.378351748254,97.4353568385507,-23.8424190251414,-134.378726580438,418.120999838991,-99.5384935771518,-41.6890850594528,-144.384668841197,284.42299841863,418.700013097355,266.712720761688,226.622848147852,158.416002956756,210.285012767209,227.246485259433,418.700762570692,-820.501383639359,-676.229642879216,418.342208948817,268.552604480373,159.271756506234,267.249196215986,-676.747379763721,-821.754991354508,-732.190391967345,417.931482382338,-820.536861591605,-821.843725056407,418.238454008352,-236.712170282514,-236.626534978037,-821.777416525039,-236.034113172031,418.252970708432,-528.865072191474,113.263174828585,111.795306854744,-528.277753780032,-821.270548491885,-528.972448903427,-382.341195079895,-676.934667998527,-529.224235244428,-381.857323263283,-137.207350079844,-676.431408427126,-601.985537398038,-821.46320501308,-713.325036774735,-821.266546470313,-676.461422913897,-417.868947257518,-636.178944968843,-423.485503282444,-821.354627185631,-519.324572044635,-379.218349789999,-528.383310410816,-657.710781764136,-417.870272764483,-316.460333774501,-290.918188531146,-136.884771243473,-209.48305926413,-401.306419520776,-539.225767656845,-509.017085975474,-615.279206993485,-380.659042437504,-363.080829573512,-295.150787233993,113.771571999253,-235.036149004989,-51.1540305978641,48.4469192562028,-410.977599395076,-289.638991702547,-175.041722146222,-12.7133387813619,112.877758093903,60.0322933127281,61.7403573868592,418.224342186209,-29.455199575642,265.429664789588,159.323806004541,267.104521043707,149.566208942513,418.169437403528,259.352698384174,-267.415807618438,-110.378351748254,97.4353568385507,-23.8424190251414,-134.378726580438,418.120999838991,-99.5384935771518,-41.6890850594528,-144.384668841197,284.42299841863,418.700013097355,266.712720761688,226.622848147852,158.416002956756,210.285012767209,227.246485259433,418.700762570692,-820.501383639359,-676.229642879216,418.342208948817,268.552604480373,159.271756506234,267.249196215986,-676.747379763721,-821.754991354508,-732.190391967345],"Archive435_field21":[0,1841.18140446295,1801.8637773265,0,379.51330085343,373.15070002196,1827.19635311059,283.71997562661,0,1105.09775696167,4.86175996121815e-09,5.97902463021275e-09,1130.05829221802,1809.34504587576,1090.56171809526,695.712288456734,1461.08086531471,1091.54887715552,695.416064147633,1.7306363192331e-05,1467.9039755051,1301.64625476563,1817.85591812339,1569.06187796059,1837.64862759279,1493.6528574855,835.259681784143,1393.05574620488,864.74768667096,1833.76280078079,1117.23088017894,759.425177417789,1143.00535913716,1455.26218187317,841.142257555432,554.902818311719,472.246627847192,1.81447820049355e-05,300.315496022856,817.65063867623,1168.353706821,1093.37459544713,1357.021530207,762.41877709223,705.736676837233,498.985699100193,4.94119096576851e-09,319.438709871355,1.17247060363059e-08,-1.60744349371783e-09,793.51919622674,402.56814322572,178.974133547216,3.67481386438021e-09,5.0652858454022e-09,-1.61028934931619e-09,-2.08460557284579e-09,0,1.71030714967963e-08,2.09812956679504e-09,3.49488338643623e-09,1.87054507678653e-09,2.88012664999884e-09,0,1.66223785396806e-09,444.789813602292,1.92481228406545e-06,-1.37141295851962e-09,8.1230203495409e-09,8.31308914663507e-05,0,0.000283063566998896,3.68288119211379e-09,4.84023995565081e-05,2.2446159582414e-09,0,2.20740764549998e-09,2.68701683164774e-09,2.56517831837731e-09,2.86862528671438e-09,2.40929886668648e-09,0,1802.83161644568,1456.77350941067,0,1.99616240314904e-09,3.23757010014127e-09,2.10870758743186e-09,1506.2206956519,1841.90953720214,1632.2674016992,0,1841.18419987123,1801.86524019716,0,379.513675524675,373.150987330227,1827.19843709805,283.720305952291,0,1105.09804878311,6.32138797970321e-05,7.56630822612667e-05,1130.058445945,1809.3470285651,1090.56204005881,695.712203670134,1461.08009475907,1091.5491295764,695.416126971187,6.16267471925386e-05,1467.90352736286,1301.64655279262,1817.85819205513,1569.06122717403,1837.65132734973,1493.65235995999,835.25966351131,1393.05557213422,864.747788512096,1833.76466424627,1117.23125335436,759.425148956379,1143.00561801251,1455.26159048336,841.14235033192,554.902977141661,472.246759813801,0.000109934727545371,300.3158975179,817.650620196961,1168.35380283175,1093.37474719767,1357.0220513314,762.418825350744,705.736642147432,498.985828157593,5.4627823040397e-05,319.439060241562,2.90429435876257e-05,-7.8780822604211e-06,793.519212628605,402.568460837025,178.974596189294,1.54975463128475e-05,5.69946462907427e-05,-8.51587556665955e-06,-7.526685638249e-06,0,3.55079132080315e-05,0.000106200799593618,7.32959274575297e-05,0.000104943976857519,6.59698840624455e-05,0,9.08459028511147e-05,444.789936946672,0.000137798651478291,-1.79971709802067e-06,2.42043398404257e-05,0.000132219929012507,0,0.000392464695189186,1.18549078807391e-05,0.000101772318375295,0.000127229270609195,0,0.000118187272233352,9.6287160889252e-05,5.70380863512664e-05,9.00880151228181e-05,0.000117010491728439,0,1802.83479716323,1456.77359378915,0,0.000110729822297537,7.34188644533068e-05,0.000125095343513432,1506.22009168088,1841.91184494521,1632.26676663773,0,1841.18885170124,1801.8676378692,0,379.513897456763,373.151159122127,1827.20187456762,283.720513908651,0,1105.09840421131,7.67901450151589e-05,9.19700533812844e-05,1130.05858352058,1809.35030269121,1090.5624441632,695.71207024389,1461.07872493619,1091.54942682638,695.4161392389,7.11928073326856e-05,1467.90269050263,1301.64694640495,1817.86196368471,1569.06004914827,1837.65581129345,1493.65144448737,835.259555931135,1393.05518313957,864.747840094668,1833.76773599553,1117.23173066915,759.42507042581,1143.00594708666,1455.26051184953,841.142421499576,554.903084600778,472.246848591478,0.000129736837265712,300.316127865329,817.650578110658,1168.35385102785,1093.37487274172,1357.02282281372,762.418801875503,705.736621198637,498.985904798108,6.62453366928858e-05,319.439255183346,3.57818569651661e-05,-9.4268727973003e-06,793.519210988628,402.56864773307,178.974852177358,1.88783214229183e-05,6.92818988826568e-05,-1.02478407647025e-05,-9.10176997963822e-06,0,4.31698036221355e-05,0.000129135369951174,8.91060034784912e-05,0.000127610297548044,8.01967820870673e-05,0,0.000110454466057963,444.790024995278,0.000167120756028642,-2.13951724613363e-06,2.94975359144041e-05,0.000143218269518141,0,0.00041740579210998,1.4483728283426e-05,0.000113322674001086,0.000154709599763668,0,0.000143698966304483,0.000117070378735595,6.93546939000428e-05,0.000109531958764672,0.000142284421355825,0,1802.84010138554,1456.77364772947,0,0.000134639500709183,8.92755745321423e-05,0.000152137685184328,1506.21899150928,1841.915677341,1632.26561984636,0,1841.19018106569,1801.86832081378,0,379.513934603299,373.151188392658,1827.2028550308,283.720551879477,0,1105.09849775267,7.73442844268089e-05,9.26519128869378e-05,1130.05861552671,1809.35123680186,1090.56255152707,695.712032676428,1461.07832811536,1091.54950422209,695.416137157036,7.16592103084644e-05,1467.90244576233,1301.64705259532,1817.86304075593,1569.05970667065,1837.65709214963,1493.65117751867,835.259520548351,1393.0550658813,864.747847482803,1833.76861202154,1117.23185816708,759.425046414413,1143.00603488326,1455.26019781298,841.14243670997,554.9031053344,472.24686554064,0.000130664334424162,300.316165636485,817.650565650288,1168.35385794721,1093.37490077581,1357.02303740656,762.418788860698,705.736617819264,498.985918229646,6.66766215132793e-05,319.439285990255,3.62379343968373e-05,-9.34656300953207e-06,793.51920882346,402.568679936862,178.974892699933,1.91221286991967e-05,6.98011275065215e-05,-1.01544817411092e-05,-9.06044537173369e-06,0,4.35358982657683e-05,0.000130151067894956,8.97640374811404e-05,0.000128597451322196,8.0747441119023e-05,0,0.000111239362176967,444.790042504464,0.000168419360024636,-1.98416348419403e-06,2.98122678294395e-05,0.000144065677736041,0,0.000419683437661227,1.46747978189737e-05,0.000113972398192218,0.000156000130849239,0,0.000144877646822128,0.000117938012756404,6.98455670033749e-05,0.000110357521517592,0.000143399966647784,0,1802.84161786984,1456.77365783437,0,0.000135693035179961,8.99527097850551e-05,0.00015338446768929,1506.21867128121,1841.91677205417,1632.26528660333],"Archive435_field22":[0,0,0,0,0.622203247278204,0,14.5706919581088,0,0,9.43943093974804,-4.9697539683561e-11,-1.95863125569487e-10,7.79511315216219,12.2716748442006,0,1.00988580548005,5.47914292820343,4.38616114751546,0,-6.02662613981171e-06,9.07985950000299,9.60643365063353,15.1223112917955,11.0688571455804,8.73211938774243,8.06024785028827,8.89057894781722,8.21180838088809,0.367897707043246,11.9857154290418,2.89749792248972,2.91533987203172,0,4.66209518000098,7.76884782480609,11.5366806009827,-5.06526576791225,1.30609929323739e-07,0.603589978229409,-0.400118700240779,1.82482291271942,1.98459401397333,1.95308243626911,0,3.18069503297753,-4.58200964593196,0,7.9934654472702,0,1.07494357672838e-10,7.88387172441425,6.80097715847635,-2.74527341967576,9.3393496610064e-10,0,-1.62158517998768e-11,-2.84362025679002e-11,0,2.03001503309954e-10,-9.61454012874824e-12,5.54385093781876e-11,4.97511972923707e-12,3.32245231203983e-11,0,0,2.28225013040689,-9.93608050738697e-09,1.15050981413051e-11,-1.1646623974802e-09,1.30945179210919e-05,0,-5.23549899786782e-05,0,1.03773651764497e-05,-2.71652143003252e-12,0,6.44420815116386e-12,-3.07313102103789e-11,8.63703251292508e-11,-2.75518974341209e-11,-1.38736639467258e-11,0,6.94312455183282,0,0,-5.04327261251327e-12,5.60529815114281e-11,0,0,4.32945836218285,4.47830767363287,0,0,0,0,0.622188954860342,0,14.5706941976245,0,0,9.43943429004852,-1.79455445499723e-06,-3.48846733757913e-07,7.79511099078786,12.2716733770243,0,1.00987365048695,5.47914158640768,4.38616336915596,0,-2.24273200202994e-05,9.07986007108702,9.60643513846036,15.1223075591148,11.0688575695312,8.73211487106137,8.06024524357253,8.89057027568411,8.21180778913493,0.367896043291845,11.9857177418831,2.89749736318289,2.91535481019216,0,4.66209606195717,7.76886210256768,11.5366593536712,-5.06522197556915,3.40435040359143e-07,0.603613163200738,-0.400132576335311,1.82482294530573,1.98459270589474,1.95308237368944,0,3.18071124048509,-4.58201935577684,0,7.99344255617025,0,9.91190218962905e-07,7.88388113790276,6.80097103862746,-2.74531267463509,6.28653873751629e-07,0,3.74739634444641e-07,-4.65755773380551e-07,0,-3.03198280882018e-08,-1.88519597445033e-07,5.93422091695307e-07,-4.93049665536431e-08,1.02328743132148e-06,0,0,2.28224116898468,-3.01292197063785e-07,4.7548239087584e-07,-2.74661619377431e-06,2.28365201844358e-05,0,-7.63895493657506e-05,0,2.55627569168193e-05,-3.39993943475843e-07,0,5.10282052893567e-07,1.30004461827548e-07,-2.3764503269604e-07,-9.04605904738128e-08,-4.56973681267304e-07,0,6.94312757553139,0,0,7.12152770206711e-08,-3.60190835576774e-08,0,0,4.32946345697608,4.47830602982416,0,0,0,0,0.622181193083346,0,14.5706954173891,0,0,9.43943611967104,-2.19005268039403e-06,-4.25664240913801e-07,7.79510981604634,12.2716725864981,0,1.00986702635986,5.47914085418185,4.38616457952729,0,-2.59929053822165e-05,9.07986038083735,9.60643594674602,15.1223055243701,11.0688578039867,8.73211241036187,8.06024382681035,8.89056555458125,8.21180746279274,0.367895034629034,11.9857189991307,2.89749706611692,2.91536294494445,0,4.66209653977494,7.76886985839938,11.5366477961899,-5.06519804806025,3.84294151613757e-07,0.603625980224878,-0.400140232142527,1.82482299772425,1.98459199717287,1.95308233225252,0,3.18072012022771,-4.58202408941369,0,7.99342920497085,0,1.24054005253968e-06,7.88388619308793,6.8009679136803,-2.74533510590678,7.59930218204889e-07,0,4.64440725725242e-07,-5.61182521901157e-07,0,-3.95666403110857e-08,-2.28243664003295e-07,7.21162948855373e-07,-5.95963290480269e-08,1.24261091078405e-06,0,0,2.28223625811891,-3.61420935422782e-07,5.80942193309163e-07,-3.35322908768465e-06,2.50505079515817e-05,0,-8.19115193412466e-05,0,2.88765837196843e-05,-4.12451041945227e-07,0,6.20379585353613e-07,1.49308124763092e-07,-2.87483403598562e-07,-1.11603909907744e-07,-5.53891119055426e-07,0,6.9431292194765,0,0,8.69532652096283e-08,-4.65957760813823e-08,0,0,4.32946622942526,4.47830513896486,0,0,0,0,0.622179959038905,0,14.5706956129484,0,0,9.43943641077268,-2.20821596113158e-06,-4.28858513553372e-07,7.79510963011395,12.2716724634262,0,1.00986597169364,5.47914073686692,4.38616477246882,0,-2.6198012947816e-05,9.07986043054303,9.60643607505343,15.1223051975559,11.0688578429814,8.73211201570821,8.0602436013298,8.89056480308819,8.21180740855099,0.367894868498234,11.9857191985781,2.89749701888393,2.91536423948913,0,4.66209661710848,7.76887109140791,11.5366459574754,-5.06519423265551,3.83951396163133e-07,0.603628029216815,-0.40014145527496,1.82482300658836,1.9845918857092,1.95308232432377,0,3.18072153564752,-4.58202481323834,0,7.99342703762868,0,1.26411766592242e-06,7.88388699362803,6.80096742800698,-2.74533874746738,7.66686654766002e-07,0,4.77285466893944e-07,-5.74325442476753e-07,0,-4.15145825497625e-08,-2.29697144443244e-07,7.25476881422016e-07,-6.013315915319e-08,1.25111310216451e-06,0,0,2.28223547437202,-3.62811981695567e-07,5.88624031065915e-07,-3.39234445170424e-06,2.52329739954792e-05,0,-8.24105062118118e-05,0,2.90829509347303e-05,-4.15695473546543e-07,0,6.25184658788923e-07,1.47772844942763e-07,-2.87241294753445e-07,-1.12980089982199e-07,-5.579123796892e-07,0,6.94312948110599,0,0,8.74408006014925e-08,-4.54705875154623e-08,0,0,4.32946667241918,4.47830499759738],"Archive435_field23":[0.000238203837458181,0.0682290444888269,0.0808038312849657,0.000100689369442503,0.0590728897094438,0.0431190143559869,0.0904374514044104,0.0371360593589322,8.4521726881702e-05,0.0828991893732522,0.000513604222654696,0.00133764821291505,0.0822127986321835,0.079020632576554,0.0806442496102593,0.0195267858790998,0.0837989504772246,0.0800260440127932,0.0460697045218929,0.0106703143611142,0.0894375341236811,0.0963843983434561,0.0729273624508189,0.0938377235305747,0.0779563930324842,0.0894945558359977,0.0409792671275674,0.0948659434031502,0.0505817468511597,0.0834019164338503,0.0970827121489005,0.0343345111365334,0.0841837578021841,0.0892580885637796,0.0434595358816406,0.0403789878288561,0.0416070551270738,0.0106854677707838,0.0504539678980146,0.0362861436528054,0.082682327524639,0.0789953222522325,0.100977969504438,0.0485131205093221,0.0187620110058125,0.0322478634805538,0.000501664332438705,0.039247847611595,0.00529197265705519,-0.00447342511835181,0.029442492540836,0.0415285471136224,0.0459104367526404,-0.000616594653476476,0.000790998491274808,-0.00293912319517171,-0.00492333879999408,7.97241644128356e-05,0.00356282002375988,-4.56649305994393e-05,0.000308392196239527,-0.000269204396388006,0.000317731934874277,0.000128280405446647,-0.000110894488662832,0.027386698217033,0.0134025307217225,-0.00380704335789858,0.00272572351239745,0.0135578075180466,0.000128762574207678,0.0152976832185781,0.00245948859180651,0.0175662118379604,-0.000123524307934587,-0.000117961892945715,-7.83210993681636e-05,0.000833535698316036,1.77032204854919e-05,0.000528394363073277,-0.000187266462667564,-0.000113140029830234,0.0589524688433263,0.0931887243636079,2.71349001528665e-05,-0.000207266639466885,0.000596020321688688,-0.000363175888656836,0.0923998376430302,0.0691173365273031,0.0919142922189835,-0.00525367173357491,-0.29549528525889,-0.277055445575767,-0.00204315579063707,-0.496459434032861,-0.502880514959277,-0.275445058317233,-0.503719047170542,-0.00195095717095335,-0.346693478485979,-0.0133545172679118,-0.0278605643857272,-0.343236359869979,-0.281716095728089,-0.351317262859475,-0.419843683886026,-0.293918812672098,-0.349460411812376,-0.414373384971592,-0.244076950436813,-0.289223412163028,-0.308911091491298,-0.290089162122661,-0.278185151174738,-0.287804727262445,-0.291249598455589,-0.38404882563192,-0.291707505571216,-0.401572937241512,-0.280696468366187,-0.331573713583105,-0.3767261462927,-0.332315418937707,-0.293690318584027,-0.402194079953403,-0.493627146485785,-0.461451842081145,-0.357744130252847,-0.505459960169557,-0.377669995278274,-0.337968560200617,-0.354871734483744,-0.297008291374163,-0.399471007338228,-0.406815528513918,-0.505062941757788,-0.00756651540159418,-0.573873115559076,-0.144827704065611,0.102296271288081,-0.408191065802275,-0.581500253901799,-0.439068806426536,-0.0107634454153968,-0.0168104041109272,0.097260925893579,0.100017834679753,-0.00225197756465708,-0.0976653526191185,0.00233198849693933,-0.0130438143342107,0.00628664969910441,-0.00956469968584784,-0.00276475784588952,0.00243926092035538,-0.507407018460461,-0.335446516840372,0.0948281840977277,-0.0523051776486925,-0.341794320321554,-0.00333608848810856,-0.297456883693099,-0.0447720117736523,-0.312024986660131,0.00310010894487973,0.00266892506310047,0.00232829764906065,-0.0195342629367708,-0.00363421469646768,-0.0125469721863074,0.00490549964446492,0.0027115367420265,-0.300972670555989,-0.290400697201957,-0.00106631220929681,0.0041891938542932,-0.0119593780523264,0.00779535866845719,-0.291287354718451,-0.292521702608729,-0.28041649677851,-0.0107456689540939,-0.659226127938862,-0.634921260865149,-0.00418710784968384,-1.05199170161792,-1.04887982668746,-0.641333848079372,-1.04457375238228,-0.00398658039861093,-0.776285373722832,-0.0272225061067922,-0.0570586527236181,-0.76868535464263,-0.642459747856841,-0.783277968891964,-0.859214848606648,-0.671637877370255,-0.778945404715218,-0.874816623369989,-0.498824607658298,-0.667885297665539,-0.714204466507693,-0.653114329737895,-0.650210549052581,-0.653574843772798,-0.671994679042293,-0.809078015022918,-0.678280949889233,-0.853727590765482,-0.644801056478685,-0.760228528187823,-0.787787391174558,-0.748812716225709,-0.67663954463791,-0.847847413504984,-1.02763288250731,-0.964510212408151,-0.726174082299795,-1.06137388981975,-0.791626433155331,-0.758619664305868,-0.788739387518085,-0.694991263629543,-0.847455670277774,-0.83239271158466,-1.04237347429163,-0.0156345830737697,-1.18699411477393,-0.294947548726924,0.209066083139795,-0.845824663542469,-1.20452868255562,-0.924048374092026,-0.0209105125308777,-0.0344117152528492,0.197461102830238,0.204959215067925,-0.00458378080793152,-0.198893732020359,0.00470970432612289,-0.0263959105052611,0.0128425552917718,-0.0194469938849094,-0.00565790807707939,0.00498947252904892,-1.04220017859796,-0.68429596022338,0.193463522643062,-0.107336256458676,-0.697146810837905,-0.00680103772506803,-0.610211942558851,-0.0920036500822861,-0.64161679753358,0.00632380897249627,0.00545571164813973,0.00473496786158486,-0.0399019725336874,-0.00728598545108295,-0.0256222399938054,0.00999833836577387,0.00553611327136529,-0.660908402503123,-0.673990214714224,-0.00215987541341327,0.00858572306959227,-0.0245146703268779,0.0159539613515588,-0.674975504079521,-0.654171955671823,-0.652750314537008,-0.0162376863472058,-1.0229610463391,-0.992791136524297,-0.00633107685299319,-1.60752393958064,-1.59487904678176,-1.00722656485367,-1.58542822191125,-0.00602222634569977,-1.20587676997084,-0.0410904694564355,-0.086256721622327,-1.19413424105853,-1.00320771019615,-1.21523815652233,-1.29858648580128,-1.04935773997015,-1.20842947775732,-1.33525997665051,-0.753572394235491,-1.04654775723945,-1.1194965565544,-1.01614488494502,-1.02223748017435,-1.0193505738625,-1.05274033065241,-1.23410785937442,-1.06485438697813,-1.30588219260339,-1.00890950971566,-1.18888233119251,-1.19884901252693,-1.16530888202515,-1.0595892650154,-1.29350058030568,-1.56163841437428,-1.46756834506722,-1.09460418194153,-1.61728781406509,-1.20558307861284,-1.17927090200959,-1.2226073815711,-1.09297223973984,-1.29544063896542,-1.25796973628017,-1.57968390261518,-0.0237026315490348,-1.80011515547361,-0.445067451388907,0.315835936836143,-1.28345830979941,-1.82755692821904,-1.40902809043549,-0.0310576414832215,-0.0520130134224949,0.297661330054428,0.309900672417497,-0.00691560016279044,-0.300122171179806,0.00708744115217834,-0.0397479879573422,0.0193984813102395,-0.0293292648325577,-0.00855107634307146,0.00753970236664337,-1.57699307926786,-1.03314556036052,0.292098909347405,-0.162367390213979,-1.05249942283013,-0.0102660026885979,-0.92296716093376,-0.139235343236449,-0.971208854944673,0.00954753287488296,0.0082424840480344,0.00714165819864377,-0.0602696645741196,-0.0109377283289121,-0.0386974885754644,0.0150912005615365,0.00836067558086408,-1.02085072673527,-1.0575798028399,-0.00325345667251601,0.0129822757169675,-0.0370699466806684,0.0241125891096623,-1.05866423083228,-1.01582917971212,-1.02508597846492],"Archive435_field24":[4674805.88970737,3649935.82447287,3638188.39638953,4676605.16722691,3939568.90367011,3939924.75231188,3638879.61310001,3943295.48826448,4676693.66025864,3790975.06899069,4445086.68377301,4436422.28963837,3794563.69483363,3642908.99688202,3790239.51746676,3870344.01815067,3701939.23141088,3788979.50537132,3870959.61564672,4143289.05849079,3705442.60291321,3753406.44895564,3642317.06007346,3683652.02126695,3643654.69555901,3705259.49615638,3856564.12022,3730769.38067393,3847748.86370694,3642643.4187626,3799012.08194163,3889044.19739993,3794153.37418986,3713206.74389219,3853610.90496206,3889766.01707234,3917218.91657883,4088685.23923481,3956233.7167195,3876238.75564805,3787944.6695147,3802971.55660871,3744144.01357595,3879262.61715664,3889886.81117309,3898798.56436861,4448309.93579735,3913418.15062747,4259444.71377739,4455046.35391257,3855806.16475558,3868197.44682472,4015329.26260134,4356118.87970908,4443005.41882917,4460432.85659963,4464188.37740192,4676518.72993947,4298490.45402826,4565692.05031095,4479766.46036604,4568978.90865834,4474045.92686878,4676202.14326607,4561345.71621334,3922362.52196712,4120188.20630036,4487018.55758737,4325335.30191513,4097406.14390471,4675901.71503739,4143418.04956043,4316017.96353018,4101071.5821657,4580162.35214206,4679302.7875549,4566669.78859377,4526173.31191142,4483490.80069823,4517589.18342331,4538788.554238,4679314.01966774,3650533.77491559,3707711.66397012,4677210.15841813,4569000.50554896,4480103.30233024,4569828.37409861,3703097.73802031,3640151.12202963,3675344.02861802,3116537.25980491,2433290.54964858,2425458.93092635,3117736.77815128,2626379.26911341,2626616.50154125,2425919.74206667,2628863.65884299,3117795.77350576,2527316.71266046,2963391.12251534,2957614.85975891,2529709.12988908,2428605.99792135,2526826.34497784,2580229.34543378,2467959.48760725,2525986.33691421,2580639.74376448,2762192.70566053,2470295.0686088,2502270.96597043,2428211.37338231,2455768.01417797,2429103.13037268,2470172.99743759,2571042.74681333,2487179.58711595,2565165.90913796,2428428.94584174,2532674.72129442,2592696.13159996,2529435.58279324,2475471.1625948,2569073.93664138,2593177.34471489,2611479.27771922,2725790.15948987,2637489.14447967,2584159.17043204,2525296.44634313,2535314.37107247,2496096.00905064,2586175.07810443,2593257.8741154,2599199.0429124,2965539.95719823,2608945.43375165,2839629.80918493,2970030.90260838,2570537.44317039,2578798.29788314,2676886.17506756,2904079.25313939,2962003.61255278,2973621.90439975,2976125.58493461,3117679.15329298,2865660.30268551,3043794.7002073,2986510.97357736,3045985.93910556,2982697.28457918,3117468.09551071,3040897.14414223,2614908.34797808,2746792.13753357,2991345.70505824,2883556.86794342,2731604.09593647,3117267.81002493,2762278.69970695,2877345.30902012,2734047.7214438,3053441.56809471,3119535.19170327,3044446.52572918,3017448.87460761,2988993.86713215,3011726.1222822,3025859.03615867,3119542.67977849,2433689.18327706,2471807.77598008,3118140.10561208,3046000.33703264,2986735.53488683,3046552.24939907,2468731.82534688,2426767.41468642,2450229.35241201,1558268.62990246,1216645.27482429,1212729.46546318,1558868.38907564,1313189.6345567,1313308.25077063,1212959.87103334,1314431.82942149,1558897.88675288,1263658.35633023,1481695.56125767,1478807.42987946,1264854.56494454,1214302.99896067,1263413.17248892,1290114.67271689,1233979.74380363,1262993.16845711,1290319.87188224,1381096.35283026,1235147.5343044,1251135.48298521,1214105.68669115,1227884.00708898,1214551.56518634,1235086.49871879,1285521.37340667,1243589.79355798,1282582.95456898,1214214.47292087,1266337.36064721,1296348.06579998,1264717.79139662,1237735.5812974,1284536.96832069,1296588.67235745,1305739.63885961,1362895.07974494,1318744.57223983,1292079.58521602,1262648.22317157,1267657.18553624,1248048.00452532,1293087.53905221,1296628.9370577,1299599.5214562,1482769.97859912,1304472.71687582,1419814.90459246,1485015.45130419,1285268.72158519,1289399.14894157,1338443.08753378,1452039.62656969,1481001.80627639,1486810.95219988,1488062.79246731,1558839.57664649,1432830.15134275,1521897.35010365,1493255.48678868,1522992.96955278,1491348.64228959,1558734.04775536,1520448.57207111,1307454.17398904,1373396.06876679,1495672.85252912,1441778.43397171,1365802.04796824,1558633.90501246,1381139.34985348,1438672.65451006,1367023.8607219,1526720.78404735,1559767.59585163,1522223.26286459,1508724.4373038,1494496.93356608,1505863.0611411,1512929.51807933,1559771.33988925,1216844.59163853,1235903.88799004,1559070.05280604,1523000.16851632,1493367.76744341,1523276.12469954,1234365.91267344,1213383.70734321,1225114.67620601,0,1.27837580521373e-10,-2.55675161042745e-10,0,6.39187902606864e-11,-1.27837580521373e-10,-6.39187902606864e-11,-1.27837580521373e-10,0,0,0,0,1.27837580521373e-10,1.91756370782059e-10,-6.39187902606864e-11,-6.39187902606864e-11,2.55675161042746e-10,-6.39187902606864e-11,6.39187902606864e-11,1.27837580521373e-10,-1.27837580521373e-10,2.55675161042745e-10,2.55675161042745e-10,6.39187902606864e-11,-1.91756370782059e-10,6.39187902606864e-11,1.91756370782059e-10,1.27837580521373e-10,1.27837580521373e-10,1.91756370782059e-10,-2.55675161042745e-10,1.91756370782059e-10,1.91756370782059e-10,-2.55675161042746e-10,0,6.39187902606864e-11,2.55675161042745e-10,0,1.27837580521373e-10,0,1.91756370782059e-10,-1.27837580521373e-10,0,6.39187902606864e-11,-6.39187902606864e-11,1.91756370782059e-10,0,-6.39187902606864e-11,-1.27837580521373e-10,0,-1.27837580521373e-10,1.91756370782059e-10,0,-1.27837580521373e-10,0,0,0,0,-2.55675161042745e-10,0,0,0,0,0,0,-1.91756370782059e-10,1.27837580521373e-10,0,-2.55675161042746e-10,-2.55675161042745e-10,0,-1.27837580521373e-10,-1.27837580521373e-10,0,0,0,0,0,0,0,0,0,6.39187902606864e-11,1.91756370782059e-10,0,1.02270064417098e-09,0,0,1.91756370782059e-10,1.91756370782059e-10,-1.91756370782059e-10]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive436.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive436.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive436.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive436_field1":[0,0,0,0,368.999795529661,0,0,312.307620796088,0,168.000319450415,27.1605676397255,415.48296204287,69.7765500451522,0,392.666681313969,344.131114237827,94.7397502525079,309.078509407623,232.4163604441,128.02866369126,325.981956957474,249.457543156988,230.61252520196,111.48061206463,35.8569127625145,0,33.2339187676206,287.69938314747,0,345.427926360333,0,203.158308997022,0,0,14.6342634384027,144.220927476105,0,0,283.454483178467,86.3149626742229,22.4764391153816,-1.27834088688025,44.9816497625703,31.0591409404455,0,0,0,0,368.999901383055,0,0,312.307624785371,0,168.000349029952,27.164719406579,415.483053760368,69.7756987163486,0,392.666615643722,344.131089113418,94.7387548201081,309.078605748829,232.416556185786,128.028712432331,325.981488759598,249.459558094555,230.611649927768,111.488549321106,35.8632081221952,0,33.2385640245533,287.699353019293,0,345.428778210961,0,203.170976763904,0,0,14.6337220998781,144.219489093877,0,0,283.455232710239,86.3253613728197,22.4792446247553,-1.27859767894601,44.9923648402397,31.0663535264779,0,0,0,0,368.999619198173,0,0,312.307644556804,0,168.000507370298,27.1697807903547,415.483180263775,69.774248995802,0,392.666542406754,344.131020141485,94.7376266417064,309.078707962361,232.416977445655,128.028734260862,325.980658725329,249.461426699381,230.610625522386,111.497355470665,35.8705495695199,0,33.2444974330903,287.699295624424,0,345.429645115305,0,203.187786682585,0,0,14.6337024753178,144.217268567531,0,0,283.456033753413,86.3370837246166,22.4822945212501,-1.27880551101702,45.0038535134078,31.0746329448087],"Archive436_field2":[0,0,0,0,2418.55677631435,0,0,3341.30253782493,0,2428.63373788969,342.371688960149,2480.04898648502,2065.83246342306,0,3376.91935038374,3189.98104038344,1626.89910557091,3116.50995521782,2717.16831558719,3457.25191176051,2339.38498337935,1398.80518291055,2242.51187369168,1207.22170059188,327.431644031601,0,583.167873806113,3185.76849438139,0,2185.30878149096,0,757.151429782908,0,0,1540.03517735403,1227.27026236493,0,0,1383.30617787478,547.056704644903,245.134856285586,286.03660368821,224.878225848141,228.709952771032,0,0,0,0,2418.55663313123,0,0,3341.30286104054,0,2428.6365735226,342.421182672451,2480.0486807841,2065.82413794134,0,3376.91975515848,3189.98096792241,1626.89837088579,3116.51055583822,2717.16933828473,3457.25308584123,2339.3855480032,1398.81632210481,2242.50711723391,1207.30824254645,327.47688864419,0,583.250438433944,3185.76875007231,0,2185.30933336823,0,757.201730783862,0,0,1540.03877191789,1227.27053587353,0,0,1383.30544567577,547.120531747609,245.17156658668,286.098464422918,224.93341454804,228.769510449283,0,0,0,0,2418.55259413609,0,0,3341.30368319166,0,2428.63939708153,342.48030430653,2480.04861018814,2065.81355818341,0,3376.92095740097,3189.98043378157,1626.89715751185,3116.51102096937,2717.17119924942,3457.25617767813,2339.38620187953,1398.82541014664,2242.50313701745,1207.40671374495,327.528858964408,0,583.344900721135,3185.76844251047,0,2185.30924483984,0,757.270902547899,0,0,1540.03872257526,1227.27203137518,0,0,1383.30484364391,547.198026642897,245.211501507568,286.167402933736,224.993019648981,228.838839867989],"Archive436_field3":[0,0,0,0,-0.472340508484095,0,0,-2.97112696233422,0,-4.20541842900269,-0.259913939773246,-3.58657463645978,-0.566594889737431,0,-2.78962878973089,-2.62885615814385,-6.30497236912022,-3.32585372343861,-4.01871977104683,-3.34687351537694,-1.62818299644097,-2.77602346255296,-1.81377649895105,0.848070245568602,-0.271315085541266,0,-0.268995567595418,-2.44864149259254,0,-5.47102811494243,0,1.44575887682118,0,0,1.80911567505687,-4.50151467633359,0,0,-5.79282713348867,0.427215474158369,0.118796861534063,0.069791651756415,0.0649516666408366,-0.0791256087996779,0,0,0,0,-1.57555554572858,0,0,-2.98252424881633,0,-4.47173458120306,-0.419827893421728,-3.96088664753868,-1.12289710771369,0,-2.87926979873176,-2.90462826538555,-6.36439253035053,-3.6502275211757,-4.09953376600618,-3.51537513887979,-2.1406233780088,-3.70851208246501,-2.01174016702314,-0.438409355222741,-1.10810593258149,0,-1.20317801877877,-2.75765775400379,0,-5.7923075355904,0,0.312337626342656,0,0,1.02296453478805,-4.032152846423,0,0,-6.58281775851501,-0.198237316481363,-0.156286642609541,-0.21812973673747,-0.240180930542213,-0.436391724290583,0,0,0,0,-4.88489655169482,0,0,-3.01673688525298,0,-5.27074754330928,-0.899846693876512,-5.08386104823309,-2.79144196893688,0,-3.14819005571002,-3.73190789812407,-6.54263262700029,-4.6233365192685,-4.34207953016257,-4.02089777659559,-3.67789392727347,-6.50567113747933,-2.60543467600314,-4.29754227485112,-3.6183880145576,0,-4.0053929839281,-3.68470206707873,0,-6.75614259305451,0,-3.08774612076452,0,0,-1.33516348747172,-2.62418618323254,0,0,-8.95281904263516,-2.07465803073929,-0.981982155293032,-1.08243828218231,-1.15592587194983,-1.50883652674375],"Archive436_field4":[0,0,0,0,2446.54408349054,0,0,3355.8676265428,0,2434.44113210725,343.447430316771,2514.61367423127,2067.01060831785,0,3399.67339661313,3208.49063777301,1629.66747303304,3131.80058229326,2727.09317221498,3459.62329187162,2361.9883546924,1420.87744435669,2254.33913380693,1212.35839604855,329.38924286924,0,584.114145313063,3198.73378553165,0,2212.44770670851,0,783.934739857573,0,0,1540.10576976186,1235.72336566148,0,0,1412.06089905028,553.824424697444,246.163161732532,286.039468737767,229.332879227313,230.809269730113,0,0,0,0,2446.54441963743,0,0,3355.86795883683,0,2434.44443763581,343.497255562105,2514.61394962409,2067.00248619356,0,3399.67386583114,3208.49080083876,1629.66691269965,3131.80155076015,2727.09432815974,3459.62463406482,2361.98925812303,1420.89089207209,2254.33448073387,1212.44508385044,329.436655810571,0,584.198017549826,3198.73428895576,0,2212.44920261442,0,783.985334337363,0,0,1540.10863619723,1235.72184876467,0,0,1412.06379405347,553.88896321733,246.19999578997,286.101404641358,229.38921413405,230.869655152802,0,0,0,0,2446.54475368532,0,0,3355.86880984049,0,2434.44886418115,343.557514180904,2514.61592049788,2066.99344342105,0,3399.67528995935,3208.49111796642,1629.6663416367,3131.80330908245,2727.09659364867,3459.62827519214,2361.99168464055,1420.91022068242,2254.33102458951,1212.55148407931,329.507120579768,0,584.305153990519,3198.73491102775,0,2212.45198383371,0,784.062517072958,0,0,1540.10882568113,1235.71928280737,0,0,1412.07640249695,553.971187512398,246.241950787208,286.172307391908,229.452700760842,230.943984620613],"Archive436_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,2732465.1375,1669839.80625,2319221.953125,2201152.471875,2702947.7671875,3153087.66445312,1905978.76875,3536813.47851562,4072277.02434082,3766708.38191106,4467048.82294566,5144221.38575526,5093854.7625,4984869.16245088,2466808.8046875,3204743.0625,2540602.23046875,5566132.6875,4572258.27409405,6628758.01875,4503507.35625,4267368.39375,3529434.1359375,6392619.05625,3795090.46875,3440882.025,4872973.52761088,5939681.20965504,5710759.45846776,6097445.353125,5654892.68035307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive436_field6":[259.928175712321,261.402165424643,272.9472353442,272.885524362,272.591177573071,257.965519959452,272.631782337723,272.902530243339,272.572033017545,272.759347509475,259.814547159002,272.740200429358,272.608041055175,272.7929578887,272.928628473376,272.832764790798,272.830842698624,272.778705589783,272.721513560022,272.894600599065,272.667870753349,272.585389446141,272.637131209639,248.949197202111,257.697601090291,259.412324474317,256.144843746334,272.814248315267,272.726287669592,272.799567644392,260.319920174291,237.268523539495,257.439100848762,264.305390998546,243.960391423805,272.659513478711,257.365790275836,272.65410817875,272.66939511779,248.762682873434,257.187125237245,258.487658959125,259.25867033579,257.192529341589,255.095660798949,256.569555160474,271.71895750914,270.070304929872,248.806407689538,254.068153929251,258.410803255175,238.127703486877,253.651670673678,250.432057835388,254.515366292904,253.038971467163,245.091742211393,264.570538259046,255.539757553873,244.301237192404,263.953758183505,241.265303569332,243.510430431352,251.809862867434,242.103684658894,251.005874207996,241.872751864742,253.248586066558,253.305378714934,255.734361430482,252.858129285632,244.906679812315,258.055450719689,261.961097268677,256.03079716495,252.496642751463,253.823762639561,257.647558381873,255.267636039761,256.659101046099,253.754381806908,255.25756411134,261.268495359478,252.840262771925,253.254885755846,253.757400165642,254.131630563824,253.549531926014,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive436_field7":[0,0,3.45233598230637e-05,2.51608332373344e-05,0,0,0,0,0,0,0,0,0,3.22427548959828e-05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4.33094461728985e-05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive436_field8":[76976.7217658888,80061.7822337787,104237.144377591,104104.856207967,103480.384660438,72868.8832751324,103565.370432855,104132.045799308,103440.315105722,103832.364337331,76738.8972037902,103792.289498646,103515.679928481,103913.479941184,104186.669394776,103986.026707139,103982.00376822,103872.880799416,103753.177881127,104115.449053844,103640.903486759,103468.270110772,103576.565621775,53997.7197440184,72308.1290819791,75897.0451247445,69058.2079610765,103947.271723854,103763.170092456,103916.545079712,77796.6429247901,29550.0697681623,71767.0880764592,86138.2333599562,43556.1492500231,103623.411710942,71613.6490473238,103626.563773145,103644.093981534,53607.3452540974,71239.7031215547,73961.7202014483,75575.4470128091,71251.0139119459,66862.2680522008,69947.128950872,101654.828066629,98204.198218223,53698.8612942024,64711.6961739221,73800.8612130818,31348.3333980335,63839.9967200085,57101.3470494667,65647.7116510474,62557.6172807719,45924.0664484464,86693.1865761831,67791.7625602558,44269.5394437014,85402.265878077,37915.330370613,42614.3808928201,59985.0929815392,39670.0619910655,58302.344717336,39186.7196529048,62996.340637305,63115.2076503568,68199.0684739981,62179.114594828,45536.730847176,73057.1083563087,81231.6265833417,68819.5084662409,61422.5232788123,64200.1852046006,72203.3896932602,67222.2122312198,70134.5484894844,64054.9711218584,67201.1316850341,79782.010787387,62141.7199816384,63009.5258869851,64061.2885466896,64844.5527700841,63626.220321147,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05],"Archive436_field9":[0,0,0,0,319.696643812253,0,0,263.657490651791,0,152.868946850768,28.2113979399823,352.627572940395,72.955778401817,0,352.806378486921,302.568535219036,82.3167214265644,268.653308860298,209.292403400542,75.7637878458829,286.767632641267,232.882320216779,206.848244628213,106.358771351339,38.4197175814066,0,30.3297064654231,242.689918249829,0,289.172727866313,0,198.975549347681,0,0,19.0057906809206,136.313117584402,0,0,237.251369253806,89.5167019308137,22.4606036488712,-3.28241365951688,45.7094976104213,31.4652155587699,0,0,0,0,319.696546123844,0,0,263.657496651647,0,152.868951806129,28.2154276139284,352.627704751233,72.9550666039285,0,352.806307993189,302.568512000282,82.3158435773219,268.653392969381,209.29260197831,75.7638522095828,286.767257623005,232.883683950173,206.847555746126,106.364901645377,38.4256605438195,0,30.3335864903442,242.689891124718,0,289.173477231822,0,198.985696909776,0,0,19.0053317286277,136.31185745288,0,0,237.252111769572,89.5260563422019,22.4634189031329,-3.283056605105,45.7191280211168,31.4719480817198,0,0,0,0,319.696152902128,0,0,263.657516412128,0,152.869060841596,28.2203779307988,352.627871791503,72.9538610202306,0,352.806229012636,302.568451474595,82.3148540538096,268.653482012337,209.292986049791,75.7638991790388,286.766593211295,232.884929390217,206.846739599005,106.371793510928,38.4327141653681,0,30.3387122804109,242.689838991981,0,289.174243460143,0,198.999654871012,0,0,19.0053884429673,136.309902402034,0,0,237.252904497226,89.5366987168797,22.4665211841405,-3.28370003030851,45.7295879169374,31.4797530897069],"Archive436_field10":[0,0,0,0,2155.43134577792,0,0,2987.33322700428,0,2147.48683963781,343.617666314682,2190.0383086926,1842.41219150726,0,3017.19504137233,2835.99596955746,1431.10495426662,2757.14060872504,2401.45483906938,3064.61991640292,2092.67212923024,1300.93265610861,1997.40631681423,1179.46551683416,339.449881582496,0,588.895904864938,2814.77894500024,0,1918.5519725692,0,763.629836610541,0,0,1366.48398197647,1094.44715347888,0,0,1230.54160561957,539.51292055984,242.802794331895,281.831760021881,219.385360590724,230.252340851717,0,0,0,0,2155.42999993794,0,0,2987.33356723651,0,2147.48934757092,343.663393237125,2190.03827117095,1842.40437690336,0,3017.19544230089,2835.99589653792,1431.10435807608,2757.14115217429,2401.45596587612,3064.62103019939,2092.67255654264,1300.94034281998,1997.40262754228,1179.53431382756,339.492990482689,0,588.968596616677,2814.77919060896,0,1918.55240346672,0,763.670467909442,0,0,1366.48523335051,1094.44777755087,0,0,1230.54131221882,539.568067153343,242.838036497125,281.887476821798,219.432900769614,230.308124180951,0,0,0,0,2155.42552251063,0,0,2987.33439533687,0,2147.49186662135,343.718868673894,2190.03843129203,1842.39461276583,0,3017.19660466709,2835.99539327566,1431.10333912719,2757.14157592815,2401.45781614396,3064.62395078582,2092.67304849742,1300.94665244884,1997.39953244631,1179.61402101168,339.543390778559,0,589.052820917476,2814.77890656358,0,1918.55228831734,0,763.728369073958,0,0,1366.48338749563,1094.44936997662,0,0,1230.54107386557,539.636337276601,242.876760294512,281.950219241,219.484977324121,230.373761910782],"Archive436_field11":[0,0,0,0,-0.593733297790756,0,0,-3.19982023059246,0,-4.39693770219893,-0.264555792145181,-3.77350635836086,-0.687585110942658,0,-3.01639105014418,-2.84664541015777,-6.42543041628343,-3.54727364759387,-4.24520929217264,-3.5958721964086,-1.79833901285546,-2.82195146237094,-2.00181552233924,0.862472258403696,-0.256088354026457,0,-0.250627852824018,-2.68475847172028,0,-5.64133810608935,0,1.46085431522274,0,0,1.77131800125423,-4.62628872173462,0,0,-5.89497590331972,0.428995304938452,0.118121164072994,0.0676346187007539,0.0661139268806093,-0.0858414408576117,0,0,0,0,-1.51007717340789,0,0,-3.22608205905972,0,-4.63727346864433,-0.462143935482295,-4.08772440619669,-1.12881277883351,0,-3.11068779416345,-3.10598343787881,-6.47867262718028,-3.84264786270279,-4.33378853881057,-3.75755937807091,-2.21226540882935,-3.60504885770866,-2.13102893276292,-0.255074015021185,-1.02188576427298,0,-1.07006319350441,-2.97600803148389,0,-5.91635957318648,0,0.471555342477995,0,0,1.12335111623076,-4.21199685480915,0,0,-6.5535170840392,-0.168913954103524,-0.167142030164268,-0.239454108501437,-0.231148058935646,-0.48292583403383,0,0,0,0,-4.25885170358254,0,0,-3.30488616082344,0,-5.35833082147334,-1.05514646642057,-5.03041265916726,-2.45219864502174,0,-3.39357667777696,-3.88396756644507,-6.63838307899621,-4.72875758357502,-4.59961159889982,-4.24263837137626,-3.45401409649814,-5.95407726471069,-2.51852669755345,-3.60741440633368,-3.31915245419825,0,-3.52804489606289,-3.84975301150933,0,-6.74141962578797,0,-2.49615620436956,0,0,-0.820258029359718,-2.96923065430117,0,0,-8.52917159507001,-1.96267391873014,-1.02337940618333,-1.16121580097265,-1.12326098388105,-1.67474651391668],"Archive436_field12":[0,0,0,0,2179.01137742465,0,0,2998.94736872625,0,2152.92544561812,344.773916599042,2218.24891256351,1843.8562042063,0,3037.75366957194,2852.09203239321,1433.48481642078,2770.20062807599,2410.56148563211,3065.55840163893,2112.22999448708,1321.6156454164,2008.08919075337,1184.2515938358,341.617274719313,0,589.676471190172,2825.22319712352,0,1940.23049215459,0,789.128589455092,0,0,1366.61729487268,1102.91307016054,0,0,1253.21809997881,546.889033911405,243.839475073782,281.850882153852,224.09662867694,232.392357074427,0,0,0,0,2179.01047417607,0,0,2998.94773630419,0,2152.92845182141,344.820028106994,2218.24945324965,1843.84858488818,0,3037.75415469712,2852.09222795602,1433.4844104514,2770.20157109723,2410.56278304631,3065.55971060661,2112.23075990043,1321.62535622015,2008.08558311524,1184.32037678216,341.662210707628,0,589.750183811098,2825.22373127566,0,1940.23184905642,0,789.169255290737,0,0,1366.61785350435,1102.91187371694,0,0,1253.22122316952,546.944825725325,243.874855397302,281.906696245233,224.14524317193,232.449024083063,0,0,0,0,2179.00962620372,0,0,2998.94864874273,0,2152.93264610778,344.877026992353,2218.25157535203,1843.84006580411,0,3037.75560287648,2852.09267446073,1433.48406708578,2770.20337236405,2410.56515223203,3065.56326441476,2112.23282265542,1321.64028157854,2008.08286902613,1184.40584702237,341.72767595343,0,589.844140764709,2825.22449928912,0,1940.23454067466,0,789.232611568317,0,0,1366.61579308693,1102.90916637126,0,0,1253.23302778482,547.017411985518,243.915789916693,281.971731274739,224.201053069027,232.520643830608],"Archive436_field13":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,2732465.1375,1669839.80625,2319221.953125,2201152.471875,2702947.7671875,3153087.66445312,1905978.76875,3536813.47851562,4072277.02434082,3766708.38191106,4467048.82294566,5144221.38575526,5093854.7625,4984869.16245088,2466808.8046875,3204743.0625,2540602.23046875,5566132.6875,4572258.27409405,6628758.01875,4503507.35625,4267368.39375,3529434.1359375,6392619.05625,3795090.46875,3440882.025,4872973.52761088,5939681.20965504,5710759.45846776,6097445.353125,5654892.68035307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive436_field14":[260.103754391072,261.192248069849,272.9472353442,272.885524362,272.59069733444,257.657353256098,272.631507003347,272.905347591301,272.57225124835,272.759406051363,259.609807615559,272.739856240249,272.607238954297,272.7929578887,272.930549025334,272.833383767587,272.828127761371,272.778554052119,272.721228825675,272.895805693852,272.667275895948,272.585141319481,272.636463560287,247.677221191061,257.8961762495,259.833487746708,256.300580386678,272.814389507907,272.725864383685,272.798146722918,260.25183159082,235.876070595495,257.181662112215,264.487216652525,244.290038408942,272.659108424656,256.996217557746,272.65410817875,272.668393077451,249.183313092192,257.16467143406,258.351376417303,259.200846580484,257.147971559839,255.228614071482,256.378677678371,270.891440141741,269.961575528736,248.270953040971,253.919072391103,259.205373525952,246.304736235943,253.902692729305,253.914484908679,254.473159006188,255.534121467646,244.730409855405,265.552145486583,260.525504644376,249.426781287997,264.453542832303,245.39819153103,247.174179937594,255.485244797369,242.370856533208,251.656435685349,242.53625843237,253.348054378411,253.360912678808,255.987320268269,252.814109866174,248.192234870125,259.155139076589,263.216016510032,256.046246495215,252.055280447935,253.685372243189,258.164908098745,255.016479844859,258.881980792802,253.573530359996,256.211763968338,262.303122650586,252.891415278469,253.182435818271,253.661453018926,254.110886754446,253.542189754589,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive436_field15":[0,0,3.00277393680027e-05,2.3989696592416e-05,0,0,0,0,0,0,0,0,0,3.09322711215724e-05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4.45846646102591e-05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive436_field16":[77344.2079405133,79622.4252101936,104235.642840359,104104.465048328,103479.379520982,72223.8903650124,103564.794158006,104137.942508592,103440.771862797,103832.486865503,76310.377339365,103791.569110842,103514.001131344,103913.042239604,104190.689110024,103987.322225559,103976.321404549,103872.563631085,103752.581932137,104117.971317233,103639.65845022,103467.750781674,103575.168231682,51335.4739528913,72723.7468902041,76778.5398538601,69384.1647493175,103947.567240049,103762.284155053,103913.571091067,77654.1335195859,26635.665756371,71228.2688008658,86518.7944537359,44246.100389916,103622.563932806,70840.1333483614,103626.989696104,103641.996711106,54487.7243019585,71192.7073114877,73676.4808414153,75454.4218929539,71157.7544747438,67140.5392516111,69547.6223808305,99922.8342166643,97976.6275816442,52578.1547147533,64399.668514578,75463.8967898185,48462.8629418292,64365.3858824348,64390.0669138657,65559.3717999514,67779.9662317833,45167.7978273634,88747.690503418,78226.9312206791,54997.3032357784,86448.3151480111,46565.4648744458,50282.6086093852,67677.6673608942,40229.2527240036,59663.9698894355,40575.4388989493,63204.5278140151,63231.4402367446,68728.5113214869,62086.9819499016,52413.3975831724,75358.7560873015,83858.1725554977,68851.8439144845,60498.7519775285,63910.5341049943,73286.2026506743,66696.5423152897,74787.0357993335,63676.4490434723,69198.2719857309,81947.4857076762,62248.7821778353,62857.8881676411,63860.4711686112,64801.1359770545,63610.8531563546,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05,62476.05]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive437.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive437.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive437.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive437_field1":[102557.000000034,102557.000000037,102557.000000025,102557.000000037,102557.000000038,102557.000000008,102557.000000018,102557.000000006,102557.000000018,102556.999999982,102556.999999969,102556.999999982,102556.99999998,102554.383750034,102554.383750037,102554.383750025,102554.383750037,102554.383750038,102554.383750008,102554.383750018,102554.383750006,102554.383750017,102554.383749982,102554.383749969,102554.383749982,102554.38374998,102546.535000034,102546.535000037,102546.535000025,102546.535000036,102546.535000038,102546.535000008,102546.535000018,102546.535000006,102546.535000018,102546.534999982,102546.534999969,102546.534999982,102546.53499998,102533.453750033,102533.453750037,102533.453750025,102533.453750036,102533.453750038,102533.453750008,102533.453750018,102533.453750006,102533.453750018,102533.453749982,102533.453749969,102533.453749982,102533.45374998,102515.140000033,102515.140000036,102515.140000025,102515.140000036,102515.140000038,102515.140000008,102515.140000018,102515.140000006,102515.140000017,102515.139999983,102515.13999997,102515.139999982,102515.13999998,102491.593750032,102491.593750035,102491.593750024,102491.593750035,102491.593750037,102491.593750008,102491.593750018,102491.593750007,102491.593750017,102491.593749983,102491.593749971,102491.593749983,102491.593749981,102462.815000031,102462.815000034,102462.815000024,102462.815000033,102462.815000035,102462.815000008,102462.815000017,102462.815000006,102462.815000016,102462.814999984,102462.814999973,102462.814999984,102462.814999982,102428.80375003,102428.803750032,102428.803750022,102428.803750032,102428.803750034,102428.803750007,102428.803750017,102428.803750006,102428.803750015,102428.803749985,102428.803749974,102428.803749985,102428.803749983,102389.560000028,102389.56000003,102389.560000021,102389.56000003,102389.560000032,102389.560000007,102389.560000015,102389.560000006,102389.560000014,102389.559999986,102389.559999976,102389.559999986,102389.559999984,102345.083750026,102345.083750028,102345.08375002,102345.083750028,102345.083750029,102345.083750006,102345.083750014,102345.083750005,102345.083750013,102345.083749987,102345.083749978,102345.083749987,102345.083749985,102295.375000024,102295.375000026,102295.375000018,102295.375000026,102295.375000027,102295.375000006,102295.375000013,102295.375000005,102295.375000011,102295.374999988,102295.37499998,102295.374999988,102295.374999986,102240.433750022,102240.433750024,102240.433750016,102240.433750024,102240.433750025,102240.433750005,102240.433750012,102240.433750004,102240.43375001,102240.433749989,102240.433749981,102240.433749989,102240.433749987,102180.26000002,102180.260000022,102180.260000015,102180.260000021,102180.260000023,102180.260000004,102180.260000011,102180.260000004,102180.260000009,102180.25999999,102180.259999983,102180.25999999,102180.259999988,102114.853750018,102114.85375002,102114.853750014,102114.85375002,102114.853750021,102114.853750004,102114.85375001,102114.853750003,102114.853750008,102114.853749991,102114.853749985,102114.853749991,102114.853749989,102044.215000016,102044.215000018,102044.215000012,102044.215000018,102044.215000019,102044.215000003,102044.215000009,102044.215000003,102044.215000007,102044.214999991,102044.214999986,102044.214999992,102044.21499999,101968.343750015,101968.343750016,101968.343750011,101968.343750016,101968.343750017,101968.343750003,101968.343750008,101968.343750003,101968.343750006,101968.343749992,101968.343749988,101968.343749992,101968.343749991,101887.240000013,101887.240000014,101887.24000001,101887.240000014,101887.240000015,101887.240000003,101887.240000007,101887.240000002,101887.240000005,101887.239999993,101887.239999989,101887.239999993,101887.239999992,101800.903750011,101800.903750012,101800.903750009,101800.903750013,101800.903750013,101800.903750002,101800.903750006,101800.903750002,101800.903750004,101800.903749994,101800.90374999,101800.903749994,101800.903749993,101709.33500001,101709.335000011,101709.335000008,101709.335000011,101709.335000011,101709.335000002,101709.335000005,101709.335000002,101709.335000004,101709.334999994,101709.334999992,101709.334999995,101709.334999994,101612.533750008,101612.533750009,101612.533750007,101612.533750009,101612.533750009,101612.533750002,101612.533750005,101612.533750002,101612.533750003,101612.533749995,101612.533749993,101612.533749995,101612.533749994,101510.500000007,101510.500000008,101510.500000006,101510.500000008,101510.500000008,101510.500000002,101510.500000004,101510.500000001,101510.500000003,101510.499999996,101510.499999994,101510.499999996,101510.499999995,101403.233750006,101403.233750007,101403.233750004,101403.233750007,101403.233750006,101403.233750001,101403.233750003,101403.233750001,101403.233750002,101403.233749997,101403.233749995,101403.233749997,101403.233749996,101290.735000005,101290.735000006,101290.735000004,101290.735000006,101290.735000005,101290.735000001,101290.735000002,101290.735000001,101290.735000001,101290.734999997,101290.734999996,101290.734999998,101290.734999997,101173.003750004,101173.003750005,101173.003750003,101173.003750005,101173.003750005,101173.003750001,101173.003750002,101173.003750001,101173.003750001,101173.003749998,101173.003749997,101173.003749998,101173.003749997,101050.040000003,101050.040000004,101050.040000003,101050.040000004,101050.040000004,101050.040000001,101050.040000002,101050.040000001,101050.040000001,101050.039999998,101050.039999997,101050.039999998,101050.039999998,100921.843750003,100921.843750003,100921.843750002,100921.843750003,100921.843750003,100921.843750001,100921.843750001,100921.843750001,100921.843750001,100921.843749998,100921.843749998,100921.843749999,100921.843749998,100788.415000002,100788.415000003,100788.415000002,100788.415000003,100788.415000003,100788.415,100788.415000001,100788.415,100788.415,100788.414999999,100788.414999998,100788.414999999,100788.414999998,100649.753750002,100649.753750002,100649.753750002,100649.753750002,100649.753750002,100649.75375,100649.753750001,100649.75375,100649.75375,100649.753749999,100649.753749999,100649.753749999,100649.753749998,100505.860000002,100505.860000002,100505.860000001,100505.860000002,100505.860000002,100505.860000001,100505.860000001,100505.86,100505.86,100505.859999999,100505.859999999,100505.859999999,100505.859999998,100356.733750001,100356.733750002,100356.733750001,100356.733750002,100356.733750002,100356.733750001,100356.733750001,100356.733750001,100356.73375,100356.733749999,100356.733749999,100356.733749999,100356.733749999,100202.375000001,100202.375000002,100202.375000001,100202.375000001,100202.375000001,100202.375000001,100202.375000001,100202.375000001,100202.375000001,100202.374999999,100202.374999999,100202.374999999,100202.374999999,100042.783750001,100042.783750002,100042.783750001,100042.783750001,100042.783750002,100042.783750001,100042.783750001,100042.783750001,100042.783750001,100042.783749999,100042.783749999,100042.783749999,100042.783749999,99877.9600000013,99877.9600000014,99877.9600000012,99877.9600000013,99877.9600000014,99877.960000001,99877.9600000012,99877.960000001,99877.9600000008,99877.9599999989,99877.959999999,99877.9599999992,99877.9599999988,99707.903750001,99707.9037500012,99707.9037500009,99707.903750001,99707.9037500012,99707.9037500009,99707.9037500012,99707.9037500008,99707.9037500008,99707.9037499991,99707.9037499991,99707.9037499993,99707.903749999,99532.6150000008,99532.6150000009,99532.6150000008,99532.6150000008,99532.615000001,99532.6150000008,99532.615000001,99532.6150000008,99532.6150000007,99532.6149999991,99532.6149999992,99532.6149999994,99532.6149999991,99352.0937500008,99352.0937500008,99352.0937500008,99352.0937500007,99352.0937500009,99352.0937500007,99352.0937500009,99352.0937500007,99352.0937500006,99352.0937499991,99352.0937499992,99352.0937499993,99352.0937499991,99166.3400000005,99166.3400000005,99166.3400000005,99166.3400000004,99166.3400000006,99166.3400000005,99166.3400000008,99166.3400000005,99166.3400000004,99166.3399999994,99166.3399999995,99166.3399999996,99166.3399999992,98975.3537500003,98975.3537500003,98975.3537500003,98975.3537500002,98975.3537500003,98975.3537500003,98975.3537500005,98975.3537500003,98975.3537500003,98975.3537499996,98975.3537499997,98975.3537499998,98975.3537499996,98779.135,98779.135,98779.135,98779.135,98779.1350000002,98779.1350000002,98779.1350000003,98779.135,98779.1350000002,98779.1349999997,98779.1349999998,98779.1349999999,98779.1349999997,98577.6837499999,98577.6837499999,98577.6837499999,98577.6837499999,98577.6837500001,98577.6837499999,98577.6837500002,98577.6837500001,98577.6837499999,98577.6837499998,98577.6837499998,98577.6837499999,98577.6837499998,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999],"Archive437_field2":[272.150000000016,272.150000000018,272.150000000012,272.150000000018,272.150000000018,272.150000000004,272.150000000009,272.150000000003,272.150000000008,272.149999999991,272.149999999985,272.149999999991,272.14999999999,272.148750000016,272.148750000018,272.148750000012,272.148750000018,272.148750000018,272.148750000004,272.148750000009,272.148750000003,272.148750000008,272.148749999992,272.148749999985,272.148749999991,272.14874999999,272.145000000016,272.145000000018,272.145000000012,272.145000000017,272.145000000018,272.145000000004,272.145000000009,272.145000000003,272.145000000008,272.144999999992,272.144999999985,272.144999999991,272.14499999999,272.138750000016,272.138750000018,272.138750000012,272.138750000017,272.138750000018,272.138750000004,272.138750000009,272.138750000003,272.138750000008,272.138749999992,272.138749999985,272.138749999991,272.13874999999,272.130000000016,272.130000000017,272.130000000012,272.130000000017,272.130000000018,272.130000000004,272.130000000009,272.130000000003,272.130000000008,272.129999999992,272.129999999986,272.129999999992,272.129999999991,272.118750000015,272.118750000017,272.118750000012,272.118750000017,272.118750000017,272.118750000004,272.118750000009,272.118750000003,272.118750000008,272.118749999992,272.118749999986,272.118749999992,272.118749999991,272.105000000015,272.105000000016,272.105000000011,272.105000000016,272.105000000017,272.105000000004,272.105000000008,272.105000000003,272.105000000008,272.104999999992,272.104999999987,272.104999999992,272.104999999991,272.088750000014,272.088750000015,272.088750000011,272.088750000015,272.088750000016,272.088750000004,272.088750000008,272.088750000003,272.088750000007,272.088749999993,272.088749999988,272.088749999993,272.088749999992,272.070000000013,272.070000000014,272.07000000001,272.070000000014,272.070000000015,272.070000000003,272.070000000007,272.070000000003,272.070000000007,272.069999999993,272.069999999989,272.069999999993,272.069999999992,272.048750000012,272.048750000013,272.048750000009,272.048750000013,272.048750000014,272.048750000003,272.048750000007,272.048750000002,272.048750000006,272.048749999994,272.048749999989,272.048749999994,272.048749999993,272.025000000011,272.025000000012,272.025000000009,272.025000000012,272.025000000013,272.025000000003,272.025000000006,272.025000000002,272.025000000005,272.024999999994,272.02499999999,272.024999999994,272.024999999993,271.99875000001,271.998750000011,271.998750000008,271.998750000011,271.998750000012,271.998750000002,271.998750000006,271.998750000002,271.998750000005,271.998749999995,271.998749999991,271.998749999995,271.998749999994,271.970000000009,271.97000000001,271.970000000007,271.97000000001,271.970000000011,271.970000000002,271.970000000005,271.970000000002,271.970000000004,271.969999999995,271.969999999992,271.969999999995,271.969999999994,271.938750000009,271.938750000009,271.938750000007,271.938750000009,271.93875000001,271.938750000002,271.938750000005,271.938750000002,271.938750000004,271.938749999996,271.938749999993,271.938749999996,271.938749999995,271.905000000008,271.905000000008,271.905000000006,271.905000000008,271.905000000009,271.905000000002,271.905000000004,271.905000000002,271.905000000003,271.904999999996,271.904999999993,271.904999999996,271.904999999995,271.868750000007,271.868750000008,271.868750000005,271.868750000008,271.868750000008,271.868750000001,271.868750000004,271.868750000001,271.868750000003,271.868749999996,271.868749999994,271.868749999996,271.868749999996,271.830000000006,271.830000000007,271.830000000005,271.830000000007,271.830000000007,271.830000000001,271.830000000003,271.830000000001,271.830000000003,271.829999999997,271.829999999995,271.829999999997,271.829999999996,271.788750000005,271.788750000006,271.788750000004,271.788750000006,271.788750000006,271.788750000001,271.788750000003,271.788750000001,271.788750000002,271.788749999997,271.788749999995,271.788749999997,271.788749999997,271.745000000005,271.745000000005,271.745000000004,271.745000000005,271.745000000005,271.745000000001,271.745000000003,271.745000000001,271.745000000002,271.744999999997,271.744999999996,271.744999999997,271.744999999997,271.698750000004,271.698750000004,271.698750000003,271.698750000005,271.698750000005,271.698750000001,271.698750000002,271.698750000001,271.698750000002,271.698749999998,271.698749999997,271.698749999998,271.698749999997,271.650000000003,271.650000000004,271.650000000003,271.650000000004,271.650000000004,271.650000000001,271.650000000002,271.650000000001,271.650000000001,271.649999999998,271.649999999997,271.649999999998,271.649999999998,271.598750000003,271.598750000003,271.598750000002,271.598750000003,271.598750000003,271.598750000001,271.598750000001,271.598750000001,271.598750000001,271.598749999998,271.598749999998,271.598749999999,271.598749999998,271.545000000002,271.545000000003,271.545000000002,271.545000000003,271.545000000003,271.545,271.545000000001,271.545,271.545000000001,271.544999999999,271.544999999998,271.544999999999,271.544999999999,271.488750000002,271.488750000002,271.488750000002,271.488750000002,271.488750000002,271.48875,271.488750000001,271.48875,271.48875,271.488749999999,271.488749999999,271.488749999999,271.488749999999,271.430000000002,271.430000000002,271.430000000001,271.430000000002,271.430000000002,271.43,271.430000000001,271.43,271.43,271.429999999999,271.429999999999,271.429999999999,271.429999999999,271.368750000001,271.368750000002,271.368750000001,271.368750000002,271.368750000001,271.36875,271.368750000001,271.36875,271.36875,271.368749999999,271.368749999999,271.368749999999,271.368749999999,271.305000000001,271.305000000001,271.305000000001,271.305000000001,271.305000000001,271.305,271.305000000001,271.305,271.305,271.304999999999,271.304999999999,271.304999999999,271.304999999999,271.238750000001,271.238750000001,271.238750000001,271.238750000001,271.238750000001,271.23875,271.23875,271.23875,271.23875,271.238749999999,271.238749999999,271.23875,271.238749999999,271.170000000001,271.170000000001,271.170000000001,271.170000000001,271.170000000001,271.17,271.170000000001,271.17,271.17,271.17,271.169999999999,271.17,271.169999999999,271.098750000001,271.098750000001,271.098750000001,271.098750000001,271.098750000001,271.09875,271.098750000001,271.09875,271.09875,271.09875,271.098749999999,271.09875,271.098749999999,271.025000000001,271.025000000001,271.025000000001,271.025000000001,271.025000000001,271.025,271.025000000001,271.025,271.025,271.025,271.025,271.025,271.024999999999,270.948750000001,270.948750000001,270.948750000001,270.948750000001,270.948750000001,270.94875,270.948750000001,270.94875,270.94875,270.94875,270.94875,270.94875,270.948749999999,270.870000000001,270.870000000001,270.870000000001,270.870000000001,270.870000000001,270.87,270.870000000001,270.87,270.87,270.869999999999,270.869999999999,270.87,270.869999999999,270.788750000001,270.788750000001,270.78875,270.788750000001,270.788750000001,270.78875,270.788750000001,270.78875,270.78875,270.78875,270.78875,270.78875,270.78875,270.705,270.705,270.705,270.705,270.705,270.705,270.705,270.705,270.705,270.705,270.705,270.705,270.705,270.61875,270.61875,270.61875,270.61875,270.61875,270.61875,270.61875,270.61875,270.61875,270.61875,270.61875,270.61875,270.61875,270.53,270.53,270.53,270.53,270.53,270.53,270.53,270.53,270.53,270.53,270.53,270.53,270.53,270.43875,270.43875,270.43875,270.43875,270.43875,270.43875,270.43875,270.43875,270.43875,270.43875,270.43875,270.43875,270.43875,270.345,270.345,270.345,270.345,270.345,270.345,270.345,270.345,270.345,270.345,270.345,270.345,270.345,270.24875,270.24875,270.24875,270.24875,270.24875,270.24875,270.24875,270.24875,270.24875,270.24875,270.24875,270.24875,270.24875,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15],"Archive437_field3":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive437_field4":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive437_field5":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive437_field6":[104465.484163222,104465.484163222,104465.484163222,104465.484163222,104465.484163222,104465.484163222,104465.484163222,104465.484163222,104465.484163222,104465.484163222,104465.484163222,104465.484163222,104465.484163222,104463.165288476,104463.165288476,104463.165288476,104463.165288476,104463.165288476,104463.165288475,104463.165288476,104463.165288475,104463.165288475,104463.165288475,104463.165288475,104463.165288475,104463.165288475,104456.208814659,104456.208814659,104456.208814659,104456.208814659,104456.208814659,104456.208814658,104456.208814658,104456.208814658,104456.208814658,104456.208814657,104456.208814656,104456.208814657,104456.208814656,104444.616069056,104444.616069056,104444.616069055,104444.616069056,104444.616069056,104444.616069053,104444.616069054,104444.616069054,104444.616069054,104444.616069051,104444.61606905,104444.616069051,104444.61606905,104428.39203517,104428.39203517,104428.392035169,104428.39203517,104428.39203517,104428.392035165,104428.392035167,104428.392035166,104428.392035166,104428.392035161,104428.39203516,104428.392035161,104428.39203516,104407.549010248,104407.549010248,104407.549010246,104407.549010248,104407.549010249,104407.549010241,104407.549010244,104407.549010242,104407.549010243,104407.549010234,104407.549010233,104407.549010234,104407.549010234,104382.110799603,104382.110799604,104382.1107996,104382.110799604,104382.110799604,104382.110799594,104382.110799598,104382.110799595,104382.110799596,104382.110799585,104382.110799582,104382.110799585,104382.110799584,104352.116680145,104352.116680147,104352.116680142,104352.116680146,104352.116680147,104352.116680134,104352.116680138,104352.116680134,104352.116680136,104352.116680122,104352.116680118,104352.116680122,104352.11668012,104317.624344304,104317.624344306,104317.6243443,104317.624344306,104317.624344307,104317.62434429,104317.624344296,104317.62434429,104317.624344293,104317.624344275,104317.62434427,104317.624344275,104317.624344273,104278.711118326,104278.711118328,104278.711118321,104278.711118328,104278.711118329,104278.711118308,104278.711118315,104278.711118308,104278.711118311,104278.71111829,104278.711118284,104278.71111829,104278.711118287,104235.472918668,104235.47291867,104235.472918661,104235.47291867,104235.472918671,104235.472918646,104235.472918655,104235.472918646,104235.47291865,104235.472918624,104235.472918617,104235.472918625,104235.472918621,104188.020636727,104188.02063673,104188.020636719,104188.020636729,104188.020636731,104188.020636701,104188.020636711,104188.020636701,104188.020636706,104188.020636675,104188.020636667,104188.020636676,104188.020636672,104136.47388712,104136.473887123,104136.47388711,104136.473887122,104136.473887124,104136.473887089,104136.473887101,104136.47388709,104136.473887096,104136.47388706,104136.473887051,104136.473887061,104136.473887056,104080.95227771,104080.952277715,104080.9522777,104080.952277714,104080.952277716,104080.952277676,104080.95227769,104080.952277677,104080.952277683,104080.952277642,104080.952277632,104080.952277643,104080.952277639,104021.564523959,104021.564523964,104021.564523947,104021.564523963,104021.564523964,104021.56452392,104021.564523936,104021.564523921,104021.564523929,104021.564523882,104021.56452387,104021.564523883,104021.564523878,103958.39580837,103958.395808376,103958.395808358,103958.395808374,103958.395808376,103958.395808328,103958.395808345,103958.395808329,103958.395808337,103958.395808285,103958.395808271,103958.395808287,103958.395808281,103891.493762843,103891.493762849,103891.49376283,103891.493762848,103891.49376285,103891.493762798,103891.493762816,103891.493762798,103891.493762808,103891.493762751,103891.493762736,103891.493762752,103891.493762746,103820.853326475,103820.853326482,103820.853326461,103820.85332648,103820.853326482,103820.853326426,103820.853326446,103820.853326426,103820.853326437,103820.853326375,103820.853326359,103820.853326377,103820.85332637,103746.400516316,103746.400516323,103746.4005163,103746.400516321,103746.400516323,103746.400516264,103746.400516285,103746.400516264,103746.400516275,103746.400516209,103746.400516191,103746.400516211,103746.400516203,103667.974867272,103667.974867279,103667.974867256,103667.974867278,103667.97486728,103667.974867217,103667.974867239,103667.974867217,103667.97486723,103667.97486716,103667.974867141,103667.974867162,103667.974867154,103585.309981649,103585.309981657,103585.309981632,103585.309981655,103585.309981657,103585.309981593,103585.309981615,103585.309981592,103585.309981605,103585.309981533,103585.309981513,103585.309981535,103585.309981527,103498.011315678,103498.011315686,103498.011315661,103498.011315684,103498.011315687,103498.01131562,103498.011315644,103498.01131562,103498.011315634,103498.01131556,103498.011315539,103498.011315562,103498.011315553,103405.530060159,103405.530060167,103405.530060142,103405.530060165,103405.530060168,103405.5300601,103405.530060124,103405.5300601,103405.530060114,103405.530060038,103405.530060017,103405.530060041,103405.530060032,103307.131789224,103307.131789232,103307.131789206,103307.13178923,103307.131789233,103307.131789165,103307.131789189,103307.131789164,103307.131789178,103307.131789102,103307.131789081,103307.131789104,103307.131789095,103201.858507048,103201.858507057,103201.858507031,103201.858507055,103201.858507057,103201.85850699,103201.858507014,103201.858506989,103201.858507003,103201.858506927,103201.858506905,103201.858506929,103201.85850692,103088.482884868,103088.482884877,103088.482884851,103088.482884875,103088.482884877,103088.48288481,103088.482884834,103088.482884809,103088.482884824,103088.482884748,103088.482884727,103088.48288475,103088.482884741,102965.453947375,102965.453947383,102965.453947358,102965.453947381,102965.453947384,102965.453947318,102965.453947342,102965.453947317,102965.453947331,102965.453947257,102965.453947236,102965.453947259,102965.45394725,102830.834385819,102830.834385827,102830.834385803,102830.834385825,102830.834385828,102830.834385764,102830.834385787,102830.834385763,102830.834385777,102830.834385704,102830.834385684,102830.834385706,102830.834385697,102682.231269313,102682.231269321,102682.231269298,102682.231269319,102682.231269322,102682.231269261,102682.231269283,102682.231269259,102682.231269273,102682.231269203,102682.231269183,102682.231269205,102682.231269196,102516.724530564,102516.724530571,102516.724530549,102516.72453057,102516.724530572,102516.724530514,102516.724530535,102516.724530513,102516.724530526,102516.724530458,102516.72453044,102516.724530461,102516.724530452,102330.801697214,102330.801697221,102330.8016972,102330.801697219,102330.801697222,102330.801697167,102330.801697187,102330.801697166,102330.801697178,102330.801697114,102330.801697097,102330.801697116,102330.801697108,102120.313572144,102120.31357215,102120.313572131,102120.313572149,102120.313572151,102120.313572101,102120.313572119,102120.313572099,102120.313572111,102120.313572051,102120.313572035,102120.313572053,102120.313572045,101880.474725881,101880.474725887,101880.47472587,101880.474725886,101880.474725888,101880.474725843,101880.474725859,101880.474725841,101880.474725851,101880.474725796,101880.474725782,101880.474725798,101880.474725791,101605.945537093,101605.945537098,101605.945537083,101605.945537097,101605.945537099,101605.945537059,101605.945537073,101605.945537057,101605.945537066,101605.945537017,101605.945537004,101605.945537019,101605.945537012,101291.049441187,101291.049441191,101291.049441178,101291.04944119,101291.049441192,101291.049441157,101291.049441169,101291.049441155,101291.049441163,101291.049441119,101291.049441108,101291.049441121,101291.049441116,100930.198821305,100930.198821309,100930.198821298,100930.198821308,100930.19882131,100930.19882128,100930.198821291,100930.198821279,100930.198821285,100930.198821248,100930.198821238,100930.198821249,100930.198821245,100518.620384844,100518.620384848,100518.620384839,100518.620384847,100518.620384848,100518.620384824,100518.620384833,100518.620384823,100518.620384828,100518.620384798,100518.62038479,100518.620384799,100518.620384795,100053.471336658,100053.47133666,100053.471336653,100053.471336659,100053.471336661,100053.471336642,100053.471336649,100053.471336641,100053.471336645,100053.471336622,100053.471336617,100053.471336623,100053.47133662,99535.3860508716,99535.3860508732,99535.3860508686,99535.3860508729,99535.3860508737,99535.386050861,99535.3860508658,99535.3860508605,99535.3860508635,99535.3860508477,99535.3860508439,99535.3860508485,99535.3860508464,98970.3105492223,98970.310549223,98970.3105492207,98970.3105492228,98970.3105492233,98970.3105492168,98970.3105492193,98970.3105492167,98970.3105492181,98970.3105492101,98970.3105492082,98970.3105492105,98970.3105492094,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999],"Archive437_field7":[273.061841454,273.061841454,273.061841454,273.061841454,273.061841454,273.061841454,273.061841454,273.061841454,273.061841454,273.061841454,273.061841454,273.061841454,273.061841454,273.060733534867,273.060733534867,273.060733534866,273.060733534867,273.060733534867,273.060733534866,273.060733534866,273.060733534866,273.060733534866,273.060733534866,273.060733534866,273.060733534866,273.060733534866,273.057409849335,273.057409849335,273.057409849335,273.057409849335,273.057409849336,273.057409849335,273.057409849335,273.057409849335,273.057409849335,273.057409849334,273.057409849334,273.057409849334,273.057409849334,273.05187103156,273.05187103156,273.05187103156,273.05187103156,273.051871031561,273.051871031559,273.05187103156,273.051871031559,273.051871031559,273.051871031558,273.051871031558,273.051871031558,273.051871031558,273.044119462575,273.044119462575,273.044119462575,273.044119462575,273.044119462575,273.044119462573,273.044119462574,273.044119462573,273.044119462574,273.044119462571,273.04411946257,273.044119462571,273.044119462571,273.034161017796,273.034161017797,273.034161017795,273.034161017797,273.034161017797,273.034161017793,273.034161017794,273.034161017793,273.034161017794,273.03416101779,273.034161017789,273.03416101779,273.03416101779,273.022007071,273.022007071,273.022007070999,273.022007071,273.022007071001,273.022007070996,273.022007070997,273.022007070996,273.022007070997,273.022007070991,273.02200707099,273.022007070991,273.022007070991,273.007676388029,273.00767638803,273.007676388028,273.00767638803,273.00767638803,273.007676388024,273.007676388026,273.007676388024,273.007676388025,273.007676388018,273.007676388016,273.007676388018,273.007676388017,272.991196533351,272.991196533352,272.991196533349,272.991196533352,272.991196533353,272.991196533344,272.991196533347,272.991196533345,272.991196533346,272.991196533337,272.991196533335,272.991196533337,272.991196533336,272.972604452139,272.97260445214,272.972604452136,272.972604452139,272.97260445214,272.97260445213,272.972604452133,272.97260445213,272.972604452132,272.972604452121,272.972604452119,272.972604452121,272.97260445212,272.951945971652,272.951945971653,272.951945971649,272.951945971653,272.951945971654,272.951945971641,272.951945971646,272.951945971642,272.951945971644,272.951945971631,272.951945971628,272.951945971631,272.95194597163,272.929274073926,272.929274073927,272.929274073922,272.929274073927,272.929274073928,272.929274073913,272.929274073918,272.929274073914,272.929274073916,272.929274073901,272.929274073897,272.929274073902,272.9292740739,272.904645908801,272.904645908802,272.904645908796,272.904645908802,272.904645908803,272.904645908786,272.904645908792,272.904645908786,272.904645908789,272.904645908772,272.904645908768,272.904645908773,272.90464590877,272.878118622891,272.878118622893,272.878118622886,272.878118622892,272.878118622893,272.878118622874,272.878118622881,272.878118622875,272.878118622878,272.878118622858,272.878118622853,272.878118622859,272.878118622856,272.849744158604,272.849744158607,272.849744158599,272.849744158606,272.849744158607,272.849744158586,272.849744158593,272.849744158586,272.84974415859,272.849744158568,272.849744158562,272.849744158568,272.849744158566,272.819563214701,272.819563214704,272.819563214696,272.819563214704,272.819563214704,272.819563214681,272.819563214689,272.819563214682,272.819563214686,272.819563214661,272.819563214654,272.819563214662,272.819563214659,272.787598548898,272.787598548901,272.787598548891,272.7875985489,272.787598548901,272.787598548876,272.787598548885,272.787598548876,272.787598548881,272.787598548854,272.787598548846,272.787598548854,272.787598548851,272.75384774318,272.753847743183,272.753847743173,272.753847743182,272.753847743183,272.753847743156,272.753847743166,272.753847743156,272.753847743162,272.753847743132,272.753847743124,272.753847743133,272.753847743129,272.718275449745,272.718275449748,272.718275449737,272.718275449747,272.718275449748,272.71827544972,272.71827544973,272.71827544972,272.718275449725,272.718275449694,272.718275449685,272.718275449695,272.718275449691,272.680805001085,272.680805001089,272.680805001078,272.680805001088,272.680805001089,272.680805001059,272.68080500107,272.680805001059,272.680805001065,272.680805001032,272.680805001023,272.680805001033,272.680805001029,272.641309116889,272.641309116893,272.641309116881,272.641309116892,272.641309116893,272.641309116862,272.641309116873,272.641309116862,272.641309116868,272.641309116834,272.641309116824,272.641309116835,272.641309116831,272.599599290816,272.59959929082,272.599599290808,272.599599290819,272.59959929082,272.599599290788,272.5995992908,272.599599290788,272.599599290795,272.59959929076,272.59959929075,272.599599290761,272.599599290756,272.555413311113,272.555413311117,272.555413311104,272.555413311116,272.555413311117,272.555413311085,272.555413311096,272.555413311084,272.555413311091,272.555413311055,272.555413311045,272.555413311056,272.555413311052,272.508400281521,272.508400281525,272.508400281513,272.508400281524,272.508400281525,272.508400281493,272.508400281504,272.508400281493,272.508400281499,272.508400281463,272.508400281453,272.508400281464,272.50840028146,272.45810248784,272.458102487844,272.458102487831,272.458102487843,272.458102487844,272.458102487812,272.458102487823,272.458102487811,272.458102487818,272.458102487782,272.458102487771,272.458102487783,272.458102487778,272.403933533143,272.403933533147,272.403933533135,272.403933533146,272.403933533147,272.403933533115,272.403933533127,272.403933533115,272.403933533122,272.403933533085,272.403933533075,272.403933533087,272.403933533082,272.345152387661,272.345152387665,272.345152387653,272.345152387664,272.345152387666,272.345152387634,272.345152387645,272.345152387634,272.34515238764,272.345152387605,272.345152387595,272.345152387606,272.345152387601,272.280833438041,272.280833438045,272.280833438033,272.280833438044,272.280833438045,272.280833438014,272.280833438025,272.280833438014,272.28083343802,272.280833437986,272.280833437976,272.280833437987,272.280833437982,272.209833382376,272.20983338238,272.209833382369,272.209833382379,272.20983338238,272.209833382351,272.209833382361,272.20983338235,272.209833382357,272.209833382323,272.209833382314,272.209833382324,272.20983338232,272.130757061903,272.130757061907,272.130757061896,272.130757061906,272.130757061907,272.13075706188,272.13075706189,272.130757061879,272.130757061885,272.130757061853,272.130757061844,272.130757061854,272.13075706185,272.041926276739,272.041926276742,272.041926276732,272.041926276741,272.041926276742,272.041926276716,272.041926276726,272.041926276716,272.041926276721,272.041926276691,272.041926276683,272.041926276692,272.041926276688,271.941358610675,271.941358610678,271.941358610669,271.941358610678,271.941358610679,271.941358610655,271.941358610663,271.941358610654,271.94135861066,271.941358610631,271.941358610623,271.941358610632,271.941358610628,271.826767666451,271.826767666454,271.826767666445,271.826767666453,271.826767666454,271.826767666432,271.82676766644,271.826767666432,271.826767666436,271.82676766641,271.826767666403,271.826767666411,271.826767666408,271.695602263303,271.695602263305,271.695602263298,271.695602263305,271.695602263306,271.695602263287,271.695602263293,271.695602263286,271.69560226329,271.695602263266,271.69560226326,271.695602263267,271.695602263264,271.545150234681,271.545150234683,271.545150234676,271.545150234682,271.545150234683,271.545150234666,271.545150234672,271.545150234666,271.54515023467,271.545150234649,271.545150234643,271.545150234649,271.545150234647,271.372741911756,271.372741911758,271.372741911752,271.372741911757,271.372741911758,271.372741911744,271.372741911749,271.372741911743,271.372741911746,271.372741911728,271.372741911724,271.372741911729,271.372741911727,271.176096696056,271.176096696057,271.176096696053,271.176096696057,271.176096696057,271.176096696046,271.17609669605,271.176096696045,271.176096696048,271.176096696033,271.17609669603,271.176096696034,271.176096696032,270.95385634814,270.953856348141,270.953856348138,270.953856348141,270.953856348142,270.953856348133,270.953856348136,270.953856348132,270.953856348134,270.953856348123,270.953856348121,270.953856348124,270.953856348122,270.706323961238,270.706323961239,270.706323961237,270.706323961239,270.706323961239,270.706323961233,270.706323961235,270.706323961233,270.706323961234,270.706323961227,270.706323961225,270.706323961227,270.706323961226,270.436340443967,270.436340443967,270.436340443966,270.436340443967,270.436340443967,270.436340443964,270.436340443965,270.436340443964,270.436340443965,270.436340443961,270.43634044396,270.436340443961,270.436340443961,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15],"Archive437_field8":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive437_field9":[0.00061261593655251,0.00061261593655251,0.000612615936312685,0.00061261593655251,0.000612615936792334,0.000612615935803058,0.000612615936312685,0.000612615936072861,0.000612615936072861,0.000612615935323409,0.000612615935083584,0.000612615935323409,0.000612615935323409,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive437_field10":[0.0484231980665069,0.0484231980687061,0.0484231980640329,0.0484231980676065,0.0484231980696682,0.0484231980572982,0.0484231980629334,0.0484231980597723,0.0484231980596347,0.0484231980494639,0.0484231980463027,0.0484231980494639,0.0484231980483643,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive437_field11":[103878.333646074,103878.333646085,103878.333646051,103878.333646083,103878.333646086,103878.333645998,103878.333646029,103878.333645996,103878.333646021,103878.333645921,103878.33364589,103878.333645921,103878.333645913,103875.716679333,103875.716679343,103875.71667931,103875.716679341,103875.716679345,103875.716679257,103875.716679288,103875.716679255,103875.71667928,103875.71667918,103875.716679148,103875.71667918,103875.716679172,103867.857178256,103867.857178267,103867.857178233,103867.857178265,103867.857178268,103867.857178181,103867.857178212,103867.857178179,103867.857178203,103867.857178103,103867.857178072,103867.857178104,103867.857178095,103854.729341026,103854.729341036,103854.729341003,103854.729341034,103854.729341038,103854.729340951,103854.729340981,103854.729340949,103854.729340973,103854.729340873,103854.729340842,103854.729340874,103854.729340865,103836.290169785,103836.290169795,103836.290169761,103836.290169793,103836.290169796,103836.29016971,103836.290169741,103836.290169708,103836.290169732,103836.290169633,103836.290169602,103836.290169633,103836.290169625,103812.479487857,103812.479487866,103812.479487834,103812.479487865,103812.479487868,103812.479487782,103812.479487813,103812.479487781,103812.479487804,103812.479487706,103812.479487676,103812.479487707,103812.479487699,103783.219982742,103783.219982752,103783.21998272,103783.21998275,103783.219982754,103783.219982669,103783.219982699,103783.219982668,103783.21998269,103783.219982594,103783.219982565,103783.219982595,103783.219982586,103748.417293661,103748.41729367,103748.417293639,103748.417293669,103748.417293672,103748.417293589,103748.417293619,103748.417293588,103748.41729361,103748.417293516,103748.417293487,103748.417293516,103748.417293508,103707.960167498,103707.960167507,103707.960167476,103707.960167505,103707.960167508,103707.960167427,103707.960167457,103707.960167426,103707.960167447,103707.960167355,103707.960167328,103707.960167356,103707.960167348,103661.720711709,103661.720711718,103661.720711688,103661.720711716,103661.720711719,103661.72071164,103661.720711668,103661.720711639,103661.720711659,103661.72071157,103661.720711544,103661.720711571,103661.720711563,103609.55477676,103609.554776769,103609.55477674,103609.554776767,103609.55477677,103609.554776694,103609.554776721,103609.554776693,103609.554776712,103609.554776626,103609.554776601,103609.554776627,103609.554776619,103551.302503644,103551.302503653,103551.302503624,103551.302503651,103551.302503654,103551.302503579,103551.302503606,103551.302503579,103551.302503597,103551.302503514,103551.30250349,103551.302503515,103551.302503507,103486.789073462,103486.789073471,103486.789073443,103486.789073469,103486.789073472,103486.7890734,103486.789073426,103486.789073399,103486.789073416,103486.789073337,103486.789073314,103486.789073338,103486.78907333,103415.825695514,103415.825695523,103415.825695496,103415.825695521,103415.825695524,103415.825695454,103415.825695479,103415.825695454,103415.82569547,103415.825695394,103415.825695372,103415.825695395,103415.825695387,103338.210867185,103338.210867193,103338.210867168,103338.210867192,103338.210867194,103338.210867128,103338.210867152,103338.210867128,103338.210867142,103338.210867069,103338.210867049,103338.210867071,103338.210867063,103253.731932867,103253.731932874,103253.73193285,103253.731932873,103253.731932875,103253.731932812,103253.731932835,103253.731932812,103253.731932826,103253.731932756,103253.731932737,103253.731932757,103253.73193275,103162.166959832,103162.16695984,103162.166959817,103162.166959839,103162.16695984,103162.16695978,103162.166959802,103162.166959781,103162.166959793,103162.166959727,103162.166959709,103162.166959728,103162.166959721,103063.286936511,103063.286936518,103063.286936497,103063.286936517,103063.286936518,103063.286936462,103063.286936483,103063.286936463,103063.286936474,103063.286936411,103063.286936395,103063.286936412,103063.286936406,102956.858283347,102956.858283354,102956.858283334,102956.858283353,102956.858283354,102956.858283301,102956.858283321,102956.858283302,102956.858283312,102956.858283253,102956.858283238,102956.858283254,102956.858283248,102842.645649289,102842.645649295,102842.645649276,102842.645649294,102842.645649295,102842.645649246,102842.645649264,102842.645649246,102842.645649255,102842.6456492,102842.645649186,102842.645649201,102842.645649195,102720.414949158,102720.414949164,102720.414949146,102720.414949163,102720.414949163,102720.414949118,102720.414949135,102720.414949119,102720.414949127,102720.414949075,102720.414949063,102720.414949077,102720.414949071,102589.936580421,102589.936580427,102589.936580411,102589.936580426,102589.936580426,102589.936580384,102589.9365804,102589.936580385,102589.936580392,102589.936580345,102589.936580334,102589.936580346,102589.93658034,102450.988744062,102450.988744067,102450.988744052,102450.988744066,102450.988744066,102450.988744027,102450.988744042,102450.988744028,102450.988744034,102450.988743991,102450.988743981,102450.988743992,102450.988743987,102303.360785246,102303.360785252,102303.360785238,102303.360785251,102303.360785251,102303.360785215,102303.360785229,102303.360785216,102303.360785221,102303.360785181,102303.360785172,102303.360785182,102303.360785177,102146.85646694,102146.856466945,102146.856466932,102146.856466943,102146.856466943,102146.856466911,102146.856466923,102146.856466912,102146.856466917,102146.856466879,102146.856466872,102146.856466881,102146.856466875,101981.297094593,101981.297094598,101981.297094586,101981.297094597,101981.297094596,101981.297094567,101981.297094579,101981.297094568,101981.297094572,101981.297094538,101981.297094531,101981.297094539,101981.297094534,101806.52442299,101806.524422994,101806.524422984,101806.524422993,101806.524422993,101806.524422967,101806.524422977,101806.524422968,101806.52442297,101806.524422939,101806.524422933,101806.524422941,101806.524422936,101622.403296614,101622.403296618,101622.403296608,101622.403296617,101622.403296617,101622.403296593,101622.403296602,101622.403296594,101622.403296596,101622.403296567,101622.403296562,101622.403296569,101622.403296564,101428.824001161,101428.824001165,101428.824001156,101428.824001163,101428.824001163,101428.824001142,101428.82400115,101428.824001143,101428.824001145,101428.824001118,101428.824001114,101428.82400112,101428.824001115,101225.704333686,101225.70433369,101225.704333682,101225.704333688,101225.704333688,101225.70433367,101225.704333677,101225.70433367,101225.704333672,101225.704333647,101225.704333644,101225.704333649,101225.704333644,101012.991429579,101012.991429582,101012.991429575,101012.99142958,101012.99142958,101012.991429564,101012.991429571,101012.991429565,101012.991429566,101012.991429543,101012.991429541,101012.991429545,101012.991429541,100790.663412994,100790.663412997,100790.663412991,100790.663412996,100790.663412996,100790.663412981,100790.663412988,100790.663412982,100790.663412983,100790.663412962,100790.66341296,100790.663412964,100790.66341296,100558.730960778,100558.73096078,100558.730960775,100558.730960779,100558.730960779,100558.730960767,100558.730960772,100558.730960767,100558.730960768,100558.730960749,100558.730960747,100558.73096075,100558.730960747,100317.238886075,100317.238886076,100317.238886072,100317.238886075,100317.238886076,100317.238886065,100317.23888607,100317.238886066,100317.238886066,100317.238886049,100317.238886048,100317.238886051,100317.238886048,100066.267855746,100066.267855747,100066.267855744,100066.267855746,100066.267855747,100066.267855738,100066.267855742,100066.267855739,100066.267855739,100066.267855724,100066.267855723,100066.267855725,100066.267855723,99805.9363556219,99805.9363556232,99805.9363556203,99805.9363556225,99805.9363556227,99805.9363556155,99805.936355619,99805.9363556161,99805.936355616,99805.9363556034,99805.9363556029,99805.9363556047,99805.9363556024,99536.4030114003,99536.4030114014,99536.403011399,99536.4030114007,99536.403011401,99536.4030113953,99536.4030113982,99536.4030113958,99536.4030113957,99536.4030113856,99536.4030113851,99536.4030113866,99536.4030113847,99257.8693638125,99257.8693638132,99257.8693638116,99257.8693638128,99257.869363813,99257.8693638088,99257.8693638111,99257.8693638093,99257.8693638091,99257.8693638015,99257.8693638013,99257.8693638024,99257.869363801,98970.5831889269,98970.5831889274,98970.5831889263,98970.583188927,98970.5831889273,98970.5831889245,98970.5831889261,98970.5831889249,98970.5831889247,98970.5831889196,98970.5831889195,98970.5831889203,98970.5831889193,98674.8424529484,98674.8424529487,98674.8424529481,98674.8424529484,98674.8424529485,98674.8424529473,98674.8424529481,98674.8424529474,98674.8424529474,98674.8424529447,98674.8424529447,98674.8424529451,98674.8424529445,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999],"Archive437_field12":[272.78131086769,272.781310867695,272.781310867678,272.781310867694,272.781310867695,272.781310867653,272.781310867668,272.781310867652,272.781310867664,272.781310867616,272.781310867601,272.781310867617,272.781310867613,272.780060525243,272.780060525248,272.780060525232,272.780060525247,272.780060525248,272.780060525206,272.780060525221,272.780060525206,272.780060525217,272.78006052517,272.780060525155,272.78006052517,272.780060525166,272.77630538856,272.776305388565,272.776305388549,272.776305388564,272.776305388566,272.776305388524,272.776305388539,272.776305388523,272.776305388535,272.776305388487,272.776305388472,272.776305388487,272.776305388483,272.770033129969,272.770033129974,272.770033129958,272.770033129973,272.770033129975,272.770033129933,272.770033129948,272.770033129933,272.770033129944,272.770033129896,272.770033129882,272.770033129897,272.770033129893,272.761223205822,272.761223205826,272.761223205811,272.761223205825,272.761223205827,272.761223205786,272.7612232058,272.761223205785,272.761223205796,272.761223205749,272.761223205735,272.761223205749,272.761223205745,272.749846864719,272.749846864724,272.749846864708,272.749846864723,272.749846864724,272.749846864683,272.749846864698,272.749846864683,272.749846864694,272.749846864647,272.749846864633,272.749846864647,272.749846864643,272.735867168057,272.735867168061,272.735867168046,272.73586716806,272.735867168062,272.735867168022,272.735867168036,272.735867168021,272.735867168032,272.735867167986,272.735867167972,272.735867167986,272.735867167982,272.719239031849,272.719239031854,272.719239031839,272.719239031853,272.719239031855,272.719239031815,272.719239031829,272.719239031815,272.719239031825,272.71923903178,272.719239031766,272.71923903178,272.719239031776,272.699909301241,272.699909301246,272.699909301231,272.699909301245,272.699909301246,272.699909301208,272.699909301221,272.699909301207,272.699909301217,272.699909301173,272.69990930116,272.699909301174,272.69990930117,272.677816871337,272.677816871341,272.677816871327,272.677816871341,272.677816871342,272.677816871304,272.677816871318,272.677816871304,272.677816871313,272.677816871271,272.677816871258,272.677816871271,272.677816871268,272.652892869928,272.652892869933,272.652892869919,272.652892869932,272.652892869933,272.652892869897,272.65289286991,272.652892869896,272.652892869905,272.652892869864,272.652892869852,272.652892869865,272.652892869861,272.625060919084,272.625060919089,272.625060919075,272.625060919088,272.625060919089,272.625060919054,272.625060919066,272.625060919053,272.625060919062,272.625060919022,272.625060919011,272.625060919023,272.625060919019,272.594237493293,272.594237493297,272.594237493284,272.594237493296,272.594237493297,272.594237493263,272.594237493276,272.594237493263,272.594237493271,272.594237493233,272.594237493222,272.594237493234,272.59423749323,272.56033239155,272.560332391554,272.560332391542,272.560332391553,272.560332391555,272.560332391521,272.560332391533,272.560332391521,272.560332391529,272.560332391492,272.560332391482,272.560332391493,272.560332391489,272.523249339315,272.523249339318,272.523249339306,272.523249339318,272.523249339319,272.523249339287,272.523249339298,272.523249339287,272.523249339294,272.523249339259,272.52324933925,272.52324933926,272.523249339256,272.482886733333,272.482886733337,272.482886733326,272.482886733336,272.482886733337,272.482886733307,272.482886733318,272.482886733307,272.482886733314,272.48288673328,272.482886733271,272.482886733281,272.482886733278,272.439138537904,272.439138537907,272.439138537896,272.439138537907,272.439138537907,272.439138537879,272.439138537889,272.439138537879,272.439138537885,272.439138537853,272.439138537845,272.439138537854,272.439138537851,272.39189533517,272.391895335174,272.391895335163,272.391895335173,272.391895335174,272.391895335147,272.391895335157,272.391895335147,272.391895335152,272.391895335122,272.391895335114,272.391895335123,272.39189533512,272.341045524772,272.341045524775,272.341045524765,272.341045524774,272.341045524775,272.34104552475,272.341045524759,272.34104552475,272.341045524755,272.341045524727,272.341045524719,272.341045524727,272.341045524724,272.286476659956,272.286476659959,272.28647665995,272.286476659959,272.286476659959,272.286476659936,272.286476659945,272.286476659936,272.28647665994,272.286476659914,272.286476659907,272.286476659915,272.286476659912,272.228076898785,272.228076898788,272.22807689878,272.228076898788,272.228076898788,272.228076898766,272.228076898774,272.228076898767,272.22807689877,272.228076898746,272.22807689874,272.228076898747,272.228076898744,272.165736541052,272.165736541055,272.165736541047,272.165736541054,272.165736541054,272.165736541034,272.165736541042,272.165736541034,272.165736541038,272.165736541015,272.16573654101,272.165736541016,272.165736541013,272.099349614936,272.099349614939,272.099349614932,272.099349614938,272.099349614938,272.09934961492,272.099349614927,272.09934961492,272.099349614923,272.099349614902,272.099349614898,272.099349614903,272.0993496149,272.028815473123,272.028815473126,272.028815473119,272.028815473125,272.028815473125,272.028815473108,272.028815473114,272.028815473109,272.028815473111,272.028815473092,272.028815473087,272.028815473092,272.02881547309,271.954040356875,271.954040356878,271.954040356871,271.954040356877,271.954040356877,271.954040356862,271.954040356867,271.954040356862,271.954040356864,271.954040356846,271.954040356843,271.954040356847,271.954040356844,271.87493888896,271.874938888962,271.874938888957,271.874938888962,271.874938888961,271.874938888948,271.874938888953,271.874938888948,271.87493888895,271.874938888933,271.87493888893,271.874938888934,271.874938888932,271.791435462489,271.791435462491,271.791435462486,271.791435462491,271.791435462491,271.791435462478,271.791435462483,271.791435462479,271.79143546248,271.791435462465,271.791435462462,271.791435462466,271.791435462463,271.703465502443,271.703465502445,271.703465502441,271.703465502445,271.703465502445,271.703465502433,271.703465502438,271.703465502434,271.703465502435,271.703465502421,271.703465502419,271.703465502422,271.703465502419,271.610976589183,271.610976589185,271.610976589181,271.610976589184,271.610976589184,271.610976589174,271.610976589178,271.610976589175,271.610976589176,271.610976589163,271.610976589161,271.610976589164,271.610976589162,271.513929447533,271.513929447534,271.513929447531,271.513929447534,271.513929447534,271.513929447525,271.513929447528,271.513929447525,271.513929447526,271.513929447514,271.513929447513,271.513929447515,271.513929447513,271.412298819675,271.412298819676,271.412298819673,271.412298819675,271.412298819675,271.412298819667,271.412298819671,271.412298819668,271.412298819668,271.412298819658,271.412298819656,271.412298819658,271.412298819656,271.3060742537,271.306074253701,271.306074253698,271.306074253701,271.306074253701,271.306074253694,271.306074253697,271.306074253694,271.306074253695,271.306074253685,271.306074253684,271.306074253685,271.306074253684,271.195260850825,271.195260850827,271.195260850824,271.195260850826,271.195260850826,271.19526085082,271.195260850823,271.19526085082,271.195260850821,271.195260850812,271.195260850811,271.195260850812,271.195260850811,271.079880022014,271.079880022015,271.079880022012,271.079880022014,271.079880022014,271.079880022009,271.079880022011,271.079880022009,271.07988002201,271.079880022002,271.079880022001,271.079880022002,271.079880022001,270.959970308526,270.959970308527,270.959970308525,270.959970308527,270.959970308527,270.959970308523,270.959970308525,270.959970308523,270.959970308523,270.959970308516,270.959970308516,270.959970308517,270.959970308515,270.83558832089,270.83558832089,270.835588320889,270.83558832089,270.83558832089,270.835588320887,270.835588320888,270.835588320887,270.835588320887,270.835588320881,270.835588320881,270.835588320881,270.83558832088,270.706809847778,270.706809847779,270.706809847778,270.706809847779,270.706809847779,270.706809847776,270.706809847777,270.706809847776,270.706809847776,270.706809847771,270.706809847771,270.706809847772,270.706809847771,270.573731181946,270.573731181946,270.573731181945,270.573731181946,270.573731181946,270.573731181944,270.573731181945,270.573731181944,270.573731181944,270.573731181941,270.57373118194,270.573731181941,270.57373118194,270.436470706606,270.436470706606,270.436470706606,270.436470706606,270.436470706606,270.436470706605,270.436470706606,270.436470706605,270.436470706605,270.436470706603,270.436470706603,270.436470706603,270.436470706603,270.295170784973,270.295170784973,270.295170784973,270.295170784973,270.295170784973,270.295170784972,270.295170784973,270.295170784972,270.295170784972,270.295170784971,270.295170784971,270.295170784971,270.295170784971,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15],"Archive437_field13":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive437_field14":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive437_field15":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive437_field16":[102751.759623688,102751.759623714,102751.759623631,102751.759623711,102751.75962372,102751.759623499,102751.759623576,102751.75962349,102751.759623552,102751.759623306,102751.759623226,102751.759623308,102751.759623285,102749.143279816,102749.143279842,102749.143279759,102749.143279839,102749.143279849,102749.143279628,102749.143279704,102749.143279619,102749.14327968,102749.143279434,102749.143279355,102749.143279437,102749.143279414,102741.293121741,102741.293121767,102741.293121684,102741.293121764,102741.293121774,102741.293121553,102741.29312163,102741.293121544,102741.293121606,102741.293121359,102741.29312128,102741.293121362,102741.293121339,102728.205770128,102728.205770153,102728.205770071,102728.20577015,102728.20577016,102728.20576994,102728.205770016,102728.205769931,102728.205769992,102728.205769746,102728.205769667,102728.205769749,102728.205769726,102709.875593038,102709.875593063,102709.875592982,102709.875593061,102709.875593071,102709.875592851,102709.875592927,102709.875592842,102709.875592903,102709.875592657,102709.875592579,102709.87559266,102709.875592637,102686.294706905,102686.29470693,102686.294706849,102686.294706928,102686.294706938,102686.294706719,102686.294706795,102686.29470671,102686.294706771,102686.294706526,102686.294706448,102686.294706529,102686.294706506,102657.452978949,102657.452978973,102657.452978893,102657.452978971,102657.452978981,102657.452978763,102657.452978839,102657.452978755,102657.452978814,102657.452978572,102657.452978495,102657.452978575,102657.452978551,102623.338032109,102623.338032134,102623.338032054,102623.338032132,102623.338032141,102623.338031925,102623.338032,102623.338031917,102623.338031976,102623.338031735,102623.338031659,102623.338031738,102623.338031715,102583.935253864,102583.935253889,102583.935253809,102583.935253886,102583.935253896,102583.935253682,102583.935253756,102583.935253674,102583.935253732,102583.935253494,102583.935253418,102583.935253497,102583.935253474,102539.227810587,102539.227810612,102539.227810533,102539.227810609,102539.227810618,102539.227810406,102539.227810481,102539.227810399,102539.227810456,102539.227810221,102539.227810147,102539.227810224,102539.227810201,102489.19666942,102489.196669444,102489.196669366,102489.196669441,102489.19666945,102489.196669241,102489.196669314,102489.196669233,102489.196669289,102489.196669058,102489.196668985,102489.196669061,102489.196669038,102433.820629904,102433.820629928,102433.820629851,102433.820629925,102433.820629934,102433.820629727,102433.8206298,102433.82062972,102433.820629775,102433.820629547,102433.820629475,102433.82062955,102433.820629527,102373.076367921,102373.076367945,102373.076367869,102373.076367942,102373.076367951,102373.076367747,102373.076367818,102373.07636774,102373.076367794,102373.076367569,102373.076367499,102373.076367573,102373.07636755,102306.938494737,102306.93849476,102306.938494686,102306.938494758,102306.938494767,102306.938494566,102306.938494636,102306.938494559,102306.938494611,102306.938494391,102306.938494322,102306.938494394,102306.938494372,102235.379634218,102235.379634241,102235.379634168,102235.379634239,102235.379634247,102235.37963405,102235.379634119,102235.379634044,102235.379634095,102235.379633878,102235.379633811,102235.379633882,102235.37963386,102158.370521512,102158.370521534,102158.370521463,102158.370521532,102158.37052154,102158.370521348,102158.370521415,102158.370521341,102158.370521391,102158.370521179,102158.370521113,102158.370521182,102158.370521161,102075.880126687,102075.880126709,102075.88012664,102075.880126707,102075.880126714,102075.880126526,102075.880126592,102075.88012652,102075.880126568,102075.880126361,102075.880126297,102075.880126364,102075.880126343,101987.875806985,101987.875807006,101987.875806939,101987.875807005,101987.875807012,101987.875806829,101987.875806893,101987.875806822,101987.875806869,101987.875806667,101987.875806605,101987.87580667,101987.875806649,101894.323491468,101894.323491489,101894.323491423,101894.323491487,101894.323491494,101894.323491316,101894.323491378,101894.32349131,101894.323491355,101894.323491158,101894.323491098,101894.323491161,101894.323491141,101795.187901892,101795.187901912,101795.187901848,101795.187901911,101795.187901917,101795.187901745,101795.187901805,101795.187901739,101795.187901782,101795.187901591,101795.187901533,101795.187901594,101795.187901575,101690.432813633,101690.432813653,101690.432813591,101690.432813651,101690.432813657,101690.43281349,101690.432813549,101690.432813485,101690.432813527,101690.432813342,101690.432813286,101690.432813345,101690.432813326,101580.021360408,101580.021360428,101580.021360368,101580.021360426,101580.021360431,101580.021360271,101580.021360327,101580.021360265,101580.021360305,101580.021360128,101580.021360074,101580.021360131,101580.021360112,101463.916386337,101463.916386355,101463.916386298,101463.916386354,101463.916386359,101463.916386205,101463.916386259,101463.916386199,101463.916386238,101463.916386067,101463.916386016,101463.91638607,101463.916386052,101342.080848599,101342.080848617,101342.080848561,101342.080848615,101342.08084862,101342.080848472,101342.080848524,101342.080848467,101342.080848503,101342.08084834,101342.080848291,101342.080848343,101342.080848325,101214.478273527,101214.478273544,101214.478273491,101214.478273542,101214.478273547,101214.478273406,101214.478273456,101214.478273402,101214.478273436,101214.47827328,101214.478273233,101214.478273283,101214.478273265,101081.073268406,101081.073268422,101081.073268372,101081.07326842,101081.073268425,101081.073268291,101081.073268338,101081.073268286,101081.073268319,101081.07326817,101081.073268125,101081.073268173,101081.073268156,100941.832090522,100941.832090537,100941.83209049,100941.832090535,100941.83209054,100941.832090413,100941.832090458,100941.832090409,100941.832090439,100941.832090298,100941.832090256,100941.832090301,100941.832090285,100796.723274144,100796.723274159,100796.723274114,100796.723274157,100796.723274161,100796.723274042,100796.723274084,100796.723274038,100796.723274066,100796.723273933,100796.723273894,100796.723273936,100796.723273921,100645.718315014,100645.718315028,100645.718314986,100645.718315026,100645.71831503,100645.718314919,100645.718314958,100645.718314915,100645.718314941,100645.718314816,100645.718314779,100645.718314819,100645.718314805,100488.792410665,100488.792410678,100488.792410639,100488.792410676,100488.79241068,100488.792410577,100488.792410613,100488.792410573,100488.792410598,100488.792410481,100488.792410447,100488.792410484,100488.79241047,100325.925253423,100325.925253435,100325.925253399,100325.925253433,100325.925253437,100325.925253342,100325.925253375,100325.925253338,100325.925253361,100325.925253252,100325.925253221,100325.925253255,100325.925253242,100157.101871231,100157.101871242,100157.101871209,100157.10187124,100157.101871244,100157.101871157,100157.101871188,100157.101871154,100157.101871174,100157.101871074,100157.101871046,100157.101871077,100157.101871065,99982.3135095685,99982.3135095779,99982.3135095488,99982.3135095766,99982.31350958,99982.3135095019,99982.3135095296,99982.313509499,99982.3135095176,99982.3135094268,99982.3135094016,99982.3135094293,99982.3135094188,99801.5585456083,99801.5585456166,99801.5585455908,99801.5585456154,99801.5585456183,99801.5585455494,99801.558545574,99801.5585455469,99801.5585455632,99801.5585454825,99801.55854546,99801.5585454848,99801.5585454754,99614.8434234688,99614.8434234761,99614.8434234537,99614.843423475,99614.8434234776,99614.8434234178,99614.8434234392,99614.8434234156,99614.8434234297,99614.8434233592,99614.8434233399,99614.8434233612,99614.843423353,99422.1835969391,99422.183596945,99422.1835969263,99422.1835969442,99422.1835969465,99422.183596896,99422.1835969142,99422.1835968941,99422.183596906,99422.1835968462,99422.18359683,99422.183596848,99422.1835968409,99223.6044634363,99223.6044634412,99223.6044634261,99223.6044634405,99223.6044634424,99223.6044634016,99223.6044634165,99223.6044634001,99223.6044634097,99223.6044633611,99223.6044633479,99223.6044633627,99223.6044633569,99019.1422702357,99019.1422702393,99019.1422702279,99019.1422702388,99019.1422702404,99019.1422702093,99019.1422702207,99019.1422702082,99019.1422702155,99019.1422701788,99019.1422701687,99019.1422701799,99019.1422701754,98808.8449712282,98808.8449712305,98808.8449712228,98808.8449712302,98808.8449712312,98808.8449712104,98808.844971218,98808.8449712096,98808.8449712146,98808.8449711897,98808.844971183,98808.8449711906,98808.8449711876,98592.7730097064,98592.7730097076,98592.7730097037,98592.7730097075,98592.7730097081,98592.7730096975,98592.7730097014,98592.773009697,98592.7730096995,98592.773009687,98592.7730096836,98592.7730096874,98592.7730096858,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999,98370.9999999999],"Archive437_field17":[272.243052854127,272.243052854139,272.2430528541,272.243052854138,272.243052854143,272.243052854037,272.243052854074,272.243052854033,272.243052854062,272.243052853944,272.243052853907,272.243052853946,272.243052853935,272.241802809277,272.241802809289,272.24180280925,272.241802809288,272.241802809292,272.241802809187,272.241802809223,272.241802809182,272.241802809212,272.241802809094,272.241802809056,272.241802809095,272.241802809084,272.238052136522,272.238052136535,272.238052136495,272.238052136533,272.238052136538,272.238052136432,272.238052136469,272.238052136428,272.238052136458,272.23805213634,272.238052136302,272.238052136341,272.23805213633,272.231799221275,272.231799221287,272.231799221247,272.231799221285,272.23179922129,272.231799221185,272.231799221221,272.231799221181,272.23179922121,272.231799221092,272.231799221054,272.231799221093,272.231799221082,272.223041372689,272.223041372701,272.223041372662,272.2230413727,272.223041372705,272.223041372599,272.223041372636,272.223041372595,272.223041372624,272.223041372507,272.22304137247,272.223041372508,272.223041372497,272.211774824131,272.211774824143,272.211774824104,272.211774824141,272.211774824146,272.211774824041,272.211774824078,272.211774824037,272.211774824066,272.211774823949,272.211774823912,272.211774823951,272.21177482394,272.197994734328,272.19799473434,272.197994734301,272.197994734339,272.197994734343,272.197994734239,272.197994734276,272.197994734235,272.197994734264,272.197994734148,272.197994734111,272.197994734149,272.197994734138,272.181695189732,272.181695189744,272.181695189706,272.181695189743,272.181695189747,272.181695189644,272.18169518968,272.18169518964,272.181695189668,272.181695189553,272.181695189517,272.181695189555,272.181695189544,272.162869208726,272.162869208738,272.1628692087,272.162869208737,272.162869208741,272.162869208639,272.162869208675,272.162869208635,272.162869208663,272.162869208549,272.162869208513,272.162869208551,272.16286920854,272.141508748489,272.141508748501,272.141508748463,272.141508748499,272.141508748504,272.141508748402,272.141508748438,272.141508748399,272.141508748426,272.141508748314,272.141508748278,272.141508748315,272.141508748304,272.117604715442,272.117604715453,272.117604715416,272.117604715452,272.117604715456,272.117604715356,272.117604715391,272.117604715353,272.11760471538,272.117604715269,272.117604715234,272.11760471527,272.117604715259,272.091146980365,272.091146980376,272.09114698034,272.091146980375,272.09114698038,272.091146980281,272.091146980315,272.091146980277,272.091146980303,272.091146980194,272.09114698016,272.091146980196,272.091146980185,272.062124399389,272.0621243994,272.062124399364,272.062124399399,272.062124399403,272.062124399306,272.06212439934,272.062124399302,272.062124399328,272.062124399221,272.062124399187,272.062124399223,272.062124399212,272.030524842206,272.030524842217,272.030524842182,272.030524842216,272.03052484222,272.030524842124,272.030524842158,272.030524842121,272.030524842146,272.030524842041,272.030524842008,272.030524842042,272.030524842032,271.996335228962,271.996335228973,271.996335228938,271.996335228972,271.996335228976,271.996335228882,271.996335228915,271.996335228879,271.996335228903,271.9963352288,271.996335228768,271.996335228801,271.996335228791,271.959541577407,271.959541577417,271.959541577383,271.959541577416,271.95954157742,271.959541577328,271.95954157736,271.959541577325,271.959541577349,271.959541577247,271.959541577216,271.959541577249,271.959541577239,271.920129061962,271.920129061973,271.92012906194,271.920129061972,271.920129061975,271.920129061886,271.920129061917,271.920129061883,271.920129061906,271.920129061806,271.920129061776,271.920129061808,271.920129061798,271.878082086472,271.878082086482,271.878082086449,271.878082086481,271.878082086484,271.878082086397,271.878082086427,271.878082086394,271.878082086416,271.878082086319,271.87808208629,271.878082086321,271.878082086311,271.833384372417,271.833384372427,271.833384372395,271.833384372426,271.833384372429,271.833384372344,271.833384372374,271.833384372341,271.833384372363,271.833384372269,271.83338437224,271.83338437227,271.833384372261,271.786019064449,271.786019064459,271.786019064428,271.786019064458,271.786019064461,271.786019064379,271.786019064407,271.786019064376,271.786019064397,271.786019064305,271.786019064278,271.786019064307,271.786019064298,271.735968855056,271.735968855066,271.735968855036,271.735968855065,271.735968855068,271.735968854988,271.735968855016,271.735968854986,271.735968855006,271.735968854917,271.735968854891,271.735968854919,271.73596885491,271.683216130152,271.683216130161,271.683216130133,271.68321613016,271.683216130163,271.683216130086,271.683216130113,271.683216130084,271.683216130103,271.683216130018,271.683216129992,271.68321613002,271.683216130011,271.627743137285,271.627743137294,271.627743137266,271.627743137293,271.627743137295,271.627743137222,271.627743137247,271.627743137219,271.627743137237,271.627743137156,271.627743137131,271.627743137157,271.627743137149,271.569532178021,271.56953217803,271.569532178003,271.569532178029,271.569532178031,271.569532177961,271.569532177986,271.569532177958,271.569532177976,271.569532177898,271.569532177874,271.569532177899,271.569532177891,271.508565825861,271.508565825869,271.508565825844,271.508565825868,271.508565825871,271.508565825803,271.508565825827,271.508565825801,271.508565825818,271.508565825743,271.50856582572,271.508565825744,271.508565825736,271.444827170762,271.44482717077,271.444827170746,271.444827170769,271.444827170771,271.444827170708,271.44482717073,271.444827170705,271.444827170721,271.44482717065,271.444827170629,271.444827170651,271.444827170643,271.378300091028,271.378300091035,271.378300091013,271.378300091035,271.378300091037,271.378300090976,271.378300090997,271.378300090974,271.378300090989,271.378300090921,271.378300090901,271.378300090923,271.378300090915,271.308969552864,271.308969552871,271.30896955285,271.30896955287,271.308969552872,271.308969552815,271.308969552835,271.308969552813,271.308969552827,271.308969552763,271.308969552744,271.308969552765,271.308969552757,271.236821937417,271.236821937424,271.236821937404,271.236821937423,271.236821937425,271.236821937372,271.23682193739,271.23682193737,271.236821937382,271.236821937323,271.236821937305,271.236821937324,271.236821937317,271.161845394489,271.161845394495,271.161845394476,271.161845394494,271.161845394496,271.161845394447,271.161845394464,271.161845394445,271.161845394457,271.161845394401,271.161845394385,271.161845394402,271.161845394396,271.084030221416,271.084030221421,271.084030221404,271.084030221421,271.084030221422,271.084030221377,271.084030221393,271.084030221375,271.084030221386,271.084030221334,271.084030221319,271.084030221335,271.084030221329,271.003369264802,271.003369264807,271.003369264792,271.003369264807,271.003369264808,271.003369264767,271.003369264782,271.003369264765,271.003369264775,271.003369264727,271.003369264714,271.003369264729,271.003369264723,270.919858341887,270.919858341891,270.919858341877,270.91985834189,270.919858341892,270.919858341855,270.919858341868,270.919858341853,270.919858341862,270.919858341819,270.919858341807,270.91985834182,270.919858341815,270.833496677309,270.833496677313,270.833496677301,270.833496677313,270.833496677314,270.833496677281,270.833496677293,270.83349667728,270.833496677288,270.833496677249,270.833496677238,270.83349667725,270.833496677246,270.744287349961,270.744287349965,270.744287349954,270.744287349964,270.744287349965,270.744287349937,270.744287349947,270.744287349936,270.744287349943,270.744287349909,270.7442873499,270.74428734991,270.744287349906,270.652237743401,270.652237743404,270.652237743395,270.652237743404,270.652237743405,270.652237743381,270.652237743389,270.65223774338,270.652237743386,270.652237743357,270.652237743349,270.652237743358,270.652237743354,270.557359992086,270.557359992088,270.557359992081,270.557359992088,270.557359992089,270.55735999207,270.557359992077,270.557359992069,270.557359992073,270.55735999205,270.557359992044,270.557359992051,270.557359992048,270.459671414351,270.459671414352,270.459671414347,270.459671414352,270.459671414353,270.459671414338,270.459671414343,270.459671414337,270.459671414341,270.459671414323,270.459671414319,270.459671414324,270.459671414322,270.359194921753,270.359194921754,270.35919492175,270.359194921754,270.359194921754,270.359194921744,270.359194921748,270.359194921744,270.359194921746,270.359194921734,270.359194921731,270.359194921735,270.359194921733,270.255959393075,270.255959393076,270.255959393074,270.255959393076,270.255959393076,270.255959393071,270.255959393073,270.255959393071,270.255959393072,270.255959393066,270.255959393064,270.255959393066,270.255959393065,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15,270.15],"Archive437_field18":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive437_field19":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive437_field20":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive438.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive438.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive438.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive438_field1":[0,0,0,0,413.230085767661,0,0,276.794792580209,0,131.567910003253,26.6063411353253,401.705842882636,66.243591606923,0,590.07344655603,369.234316013539,106.36460598412,296.237858663521,222.369011054436,-257.698198649461,359.149459395975,245.039841658453,232.026723854917,108.348952812353,34.6512731266113,0,34.0789439141032,197.714660409418,0,253.423454389474,0,201.440871450189,0,0,12.15215035754,121.354596366911,0,0,276.063006352515,82.0043828315714,22.2140763620356,-1.55070465348419,45.0914376419358,31.4283420615126],"Archive438_field2":[0,0,0,0,2555.72643630686,0,0,4041.53424286763,0,2515.87994387537,341.854122249234,2517.48120366531,2143.39298566256,0,3600.99624600821,3606.5833270506,1593.08753045497,3523.01595086974,2976.60994470648,3603.28759971782,2449.01173950608,1426.997237287,2337.90491134095,1185.2722963214,322.360733802892,0,576.530057756132,3446.23696103874,0,2075.4032294379,0,732.1830246321,0,0,1531.79624889397,1207.98016889383,0,0,1349.82305691577,543.681226092433,244.41252568636,284.224058406725,223.037527986211,230.457731228147],"Archive438_field3":[0,0,0,0,2588.91805992799,0,0,4051.00165310644,0,2519.31776616943,342.887938381337,2549.32916568539,2144.41640182509,0,3649.02187388562,3625.43477049048,1596.63436925843,3535.44880587856,2984.90447753405,3612.49081491807,2475.20642258843,1447.88315800161,2349.39051139971,1190.21422945726,324.217756187464,0,577.536390121514,3451.90386288065,0,2090.81850288254,0,759.388178898001,0,0,1531.84445126911,1214.06055306157,0,0,1377.76379269374,549.830878006099,245.419941938311,284.228288638045,227.549943174716,232.590856586325],"Archive438_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive438_field5":[-582.649071358749,-582.649071358749,-212.532287933284,-274.342410026978,-582.649071358749,-582.649071358749,-582.649071358749,-248.512107840574,-582.649071358749,-383.595442742982,-582.649071358749,-415.07353567849,-582.649071358749,-367.492191928762,-231.560494128667,-311.522601550378,-296.34975647709,-363.531150814285,-424.697494902787,-263.808219331318,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-330.291176367269,-429.228748745727,-341.525294272461,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545455,-582.649071358749,-507.668547346006,-460.203924413763,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749],"Archive438_field6":[421.056801356367,350.667135868831,24.5675272856359,31.7124268951577,33.8833056760833,385.405371512481,4.40198168633037,28.7265904374055,72.3020704160425,44.3414579397558,229.715193263854,47.980146981374,18.6591754179713,42.4800134617762,26.7670800192352,36.0102461988442,34.2563513484968,42.0221395706807,49.092622093452,30.4947341866082,58.1092906975528,64.4703525208082,62.9185464291539,79.6902475613416,181.042137568861,179.637995589581,157.439529758017,38.1797870173724,49.6164093424723,39.478387342291,246.838111109487,95.3136974024825,402.407210283462,86.3296856675523,53.0642334276369,61.2274782292074,367.84746480115,58.6836052548273,53.1969639998462,142.407663514374,302.515395269367,267.990182032227,325.946371897651,259.643496389784],"Archive438_field7":[1003.70587271512,933.31620722758,237.09981521892,306.054836922136,616.532377034832,968.05444287123,587.051053045079,277.23869827798,654.951141774791,427.936900682737,812.364264622603,463.053682659864,601.30824677672,409.972205390538,258.327574147902,347.532847749222,330.606107825587,405.553290384966,473.790116996239,294.302953517926,528.010164353467,605.512887879435,563.363246218612,662.33931892009,763.69120892761,762.28706694833,740.088601116766,368.470963384642,478.845158088199,381.003681614752,829.487182468236,677.962768761231,985.056281642211,668.978757026301,635.713304786386,530.147932774662,950.496536159898,566.352152600834,513.40088841361,725.056734873123,885.164466628116,850.639253390975,908.595443256399,842.292567748533],"Archive438_field8":[0,0,0,0,9.29979857425622,0,0,264.82972659488,0,-65.4865585162494,8.57512746701221,299.633627565919,5.08080635848815,0,306.247852453102,163.261204360944,-43.5716504833216,160.169799758501,-39.9243302358988,-28.0481775740285,19.2030106658866,2.30738555547817,6.90464969257363,5.60214873156767,7.60304098016202,0,6.48514429727496,185.653994376076,0,239.901077510649,0,7.66646470771606,0,0,11.08953933608,-5.37288048648336,0,0,193.019606010085,5.49262748465236,6.78854797698304,4.029235927433,13.1166165875221,9.27374752379957],"Archive438_field9":[0,0,0,0,47.7655804987733,0,0,1865.95021963656,0,520.397365498908,83.4568979364647,995.921189211959,42.0086514912401,0,1430.50390985449,1363.4834016802,476.411263933752,1368.61020785698,621.84296672375,1897.77855535326,49.6193136913595,72.2969665182453,53.0083755395569,54.1025561688149,71.8681927086181,0,83.5497427733462,1613.48532520855,0,999.285864713426,0,43.8899405371617,0,0,43.9674572650328,9.74239223123918,0,0,502.272526796352,71.483991304604,75.9088402657245,82.928882589505,85.928110141588,75.0254102683771],"Archive438_field10":[0,0,0,0,48.6624797344579,0,0,1884.64983650811,0,524.501579944719,83.8962849252158,1040.01890650587,42.3147892983638,0,1462.91803708927,1373.22292709771,478.399604022407,1377.95074868625,623.123284277341,1897.98581275623,53.2055627715344,72.333777696467,53.4561695664762,54.3918252535285,72.2692421113511,0,83.8010537764818,1624.13124478631,0,1027.67931107269,0,44.5544785792657,0,0,45.3444062816898,11.1257382276118,0,0,538.083877735321,71.6946997310252,76.2117865826742,83.0267084118286,86.9234476031004,75.5963926326745],"Archive438_field11":[9029107.17859445,8395897.93749165,2132895.40475191,2753198.92033904,5546183.46135863,8708395.11554773,5280976.25145133,2493975.5648081,5891789.83264341,3849621.93305475,7307842.08076407,4165524.42686113,5409230.68710661,3688015.66608604,2323855.44169247,3126325.56579702,2974056.50659418,3648264.12304637,4262106.92077126,2647481.68016796,4749857.99618599,5447054.67139918,5067886.189436,5958252.17496178,6869990.46653472,6857359.12824178,6657666.83526817,3314680.03828666,4307580.90777508,3427421.48895954,7461875.91143228,6098797.13633922,8861339.74670855,6017979.03309449,5718730.67579822,4769088.86921632,8550448.22509113,5094773.703802,4618436.3099645,6522443.62386959,7962735.95395921,7652155.07647694,8173515.63058262,7577070.21217522],"Archive438_field12":[-582.649071358749,-582.649071358749,-217.561615769286,-279.036540162475,-582.649071358749,-582.649071358749,-582.649071358749,-255.549466244718,-582.649071358749,-386.861453705135,-582.649071358749,-417.93324251613,-582.649071358749,-371.707041150243,-237.697683822465,-315.052057288964,-300.233685650226,-366.328106702672,-427.229103085775,-270.731294521678,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-333.628965329469,-432.93762077731,-345.46446858052,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545455,-582.649071358749,-510.971850346634,-462.835089793575,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749],"Archive438_field13":[425.444697609992,355.286246009364,25.1488890638433,32.2550417199807,38.8177311921073,389.788446762873,9.71653437783618,29.5400691624211,77.9399234213591,44.7189902865259,234.764224533844,48.3107128753651,23.4015780436802,42.9672261307805,27.4765043458901,36.4182312678629,34.7053115364492,42.3454518107777,49.3852616435029,31.2950024201722,60.9302641476053,68.2955036302731,66.642715827005,85.0714180881849,186.181092196323,184.906060797614,162.669849351198,38.565616493919,50.0451339175517,39.933733554564,251.828339447927,101.026740440781,406.689793196726,91.1832822734781,58.4346637689739,65.6598317987843,372.114021154507,59.0654483497745,53.5011117972944,147.412069742084,307.301661365817,272.864929920652,330.964772599804,264.515081523651],"Archive438_field14":[1008.09376896874,937.935317368113,242.710504833129,311.291581882455,621.466802550856,972.437518121621,592.365605736585,285.089535407139,660.588994780108,431.580443991661,817.413295892593,466.243955391495,606.050649402429,414.674267281023,265.174188168355,351.470288556827,334.938997186675,408.673558513449,476.614364729278,302.02629694185,530.831137803519,609.338038988899,567.087415616463,667.720489446934,768.830163555072,767.555132156363,745.318920709947,372.194581823388,482.982754694862,385.398202135084,834.477410806675,683.67581179953,989.338864555474,673.832353632227,641.083735127723,534.580286344239,954.763092513256,570.037298696408,516.33620159087,730.061141100833,889.950732724566,855.514001279401,913.613843958553,847.1641528824],"Archive438_field15":[0,0,0,0,9.69397645844365,0,0,256.476129187556,0,-73.2575682678603,8.54338060120053,289.869001935323,4.41504653457195,0,320.917635418174,159.385615950469,-35.2806040644288,155.253203084668,-37.0280986854383,-50.5293442231755,19.0159105264011,2.78256717769095,6.29502977226701,5.58648728529574,7.70583414553634,0,6.52189355043318,175.81795698358,0,226.070351804241,0,7.34186062555664,0,0,10.7717572440085,-6.6519001273361,0,0,184.314067872419,5.66179733959071,6.73839624897033,3.8760289097645,13.1157015500966,9.28694965975555],"Archive438_field16":[0,0,0,0,50.0329630188754,0,0,1919.31128190367,0,563.468581966879,83.0254334872831,1032.26888476786,44.9679158736888,0,1444.09652543563,1412.19105502403,475.967114424899,1426.11855021551,679.134320557457,1900.10416869132,53.9024368957007,76.0999717900285,57.7226334501813,55.1744494104042,71.4726238617816,0,83.2756037727258,1642.4678518116,0,1000.32633223409,0,45.365333851427,0,0,43.7699431510993,16.9502330008105,0,0,513.480724100543,71.6685613168609,75.5460950599558,82.4706499259332,85.3486702314718,74.6399032609262],"Archive438_field17":[0,0,0,0,50.9634238255733,0,0,1936.371813905,0,568.210800823326,83.4638362277234,1072.19545267776,45.1841354230175,0,1479.32515137736,1421.15704637517,477.272893675217,1434.54441420851,680.143003677387,1900.77591170179,57.1583550886753,76.1508265650577,58.0648758911763,55.4565479265525,71.8868266205028,0,83.5306008549873,1651.85126395584,0,1025.55378938689,0,45.9555919654673,0,0,45.0759212615151,18.2087389482583,0,0,545.558548314016,71.8918537133607,75.8460181078481,82.5616842083248,86.3505479857061,75.2154411858579],"Archive438_field18":[9068579.68407593,8437450.38992055,2183367.87806272,2800307.47355074,5590572.41838291,8747824.25239294,5328784.745117,2564599.88992948,5942506.66157305,3882398.41064686,7353262.00479171,4194223.38659215,5451892.25037489,3730314.33337861,2385446.00669924,3161745.87769085,3013034.18272197,3676333.33746853,4287513.2038007,2716959.10124059,4775234.82451876,5481464.85099517,5101387.96078011,6006659.94735204,6916219.32040381,6904749.43119824,6704717.58735492,3348176.85332938,4344801.7752014,3466953.58482073,7506766.85781237,6150190.35751186,8899864.8776022,6061640.87183418,5767041.83194991,4808961.30248691,8588829.18473797,5127924.43049419,4644841.7121851,6567462.11128064,8005792.10292167,7696007.1872892,8218660.00906703,7620893.87157491],"Archive438_field19":[-582.649071358749,-582.649071358749,-222.569073448806,-283.745771358029,-582.649071358749,-582.649071358749,-582.649071358749,-262.486366742693,-582.649071358749,-390.124400204915,-582.649071358749,-420.720610186015,-582.649071358749,-375.936489011828,-243.793330526733,-318.688576911362,-304.183489773566,-369.107633376254,-429.674820352024,-277.483665454649,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-337.095960146951,-436.68108180007,-349.471257696778,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545455,-582.649071358749,-514.268857967876,-465.478611868907,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749],"Archive438_field20":[429.83287240667,359.903928342099,25.7277227759797,32.7994021417133,43.6941827779552,394.171796572051,15.0389023175619,30.3419355231466,83.5900180597441,45.0961683988233,239.804936959453,48.6329167717749,28.0866299081565,43.4561263197969,28.1811265385319,36.8385923147267,35.1618864950905,42.6667493324787,49.6679726906375,32.0755382095886,63.6092240604299,72.0665238649828,70.216862238564,90.4730290309425,191.31119771381,190.173809897955,167.897903869425,38.9663814346531,50.4778567838685,40.3968956552438,256.817763892971,106.768969259722,410.97457340453,96.0360782876318,63.80706448072,69.99889575399,376.383954285737,59.4465637345636,53.8066879586741,152.407048815336,312.091353566543,277.74009147943,335.984169012127,269.380889554655],"Archive438_field21":[1012.48194376542,942.552999700847,248.296796224785,316.545173499742,626.343254136704,976.820867930799,597.687973676311,292.82830226584,666.239089418493,435.220568603738,822.454008318202,469.35352695779,610.735701266905,419.392615331625,271.974457065265,355.527169226088,339.345376268657,411.774382708733,479.342793042662,309.559203664237,533.510097716344,613.10905922361,570.661562028022,673.122100389691,773.960269072559,772.822881256704,750.546975228174,376.062341581605,487.158938583939,389.868153352022,839.46683525172,689.418040618471,993.623644763279,678.685149646381,646.456135839469,538.919350299445,959.033025644486,573.71542170244,519.285299827582,735.056120174085,894.740424925292,860.389162838179,918.633240370876,852.029960913404]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive439.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive439.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive439.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive439_field1":[0,0,0,0,431.792395503136,0,0,318.371647423638,0,138.495790810256,26.6365223562186,451.995037796178,74.7095966306997,0,641.094856351432,406.410655191675,103.153379907086,331.217734756532,236.92920681384,-259.205773835355,384.680599144079,246.409952988625,252.712815004189,108.800999274256,34.2829643840186,0,33.5851614397061,230.865860824486,0,293.686140866875,0,199.626971703351,0,0,14.5525416761724,132.935567604007,0,0,308.216434051145,82.1370669506552,22.1754298096051,-1.48604631478801,45.1094688372785,31.5003747979096,0,0,0,0,431.793028190234,0,0,318.371653703092,0,138.495711961137,26.6409916237213,451.995224031279,74.7085304762298,0,641.094595806488,406.410556196836,103.152126932484,331.217989262804,236.929410824437,-259.205556688033,384.679975938842,246.413222126889,252.711376606068,108.811255889104,34.2903718064819,0,33.5906744915766,230.865946124723,0,293.687365354303,0,199.645360924646,0,0,14.5519428305959,132.933626582431,0,0,308.217357037868,82.1492676085613,22.1786331180197,-1.48625241134762,45.1213717378437,31.5087415497901,0,0,0,0,431.793049610722,0,0,318.371667977644,0,138.495709792709,26.6437901612258,451.995402489413,74.7077643147906,0,641.094452881699,406.410470321596,103.151433970535,331.218121517835,236.929661911217,-259.20543875625,384.67944831305,246.414739999941,252.710550917178,108.817218938071,34.2947598515296,0,33.5941567631638,230.865977975612,0,293.688007343604,0,199.656399337987,0,0,14.5518149447912,132.93230695766,0,0,308.217878310529,82.1562814344805,22.1804813584989,-1.48632096228524,45.1282991736058,31.5137210360948,0,0,0,0,431.79275870951,0,0,318.371680282328,0,138.495797139306,26.6446716146073,451.995427511182,74.7071524334939,0,641.094423806205,406.410426954037,103.15130784791,331.218145817069,236.929807116551,-259.205424519473,384.679256069153,246.415173147421,252.710465706124,108.818878525369,34.2960988795494,0,33.5955320707732,230.865980324919,0,293.68811237289,0,199.659616332544,0,0,14.5524345240621,132.931920918795,0,0,308.21792474244,82.1580665481413,22.1811190195381,-1.48619984869614,45.1303495528933,31.5152079425076],"Archive439_field2":[0,0,0,0,2613.57488842821,0,0,4333.43444137519,0,2609.28603351156,343.06411999687,2667.08675125637,2179.19387533426,0,3843.04154810655,3835.02203144414,1678.16635562382,3746.62584014995,3102.49444566898,3884.05331404898,2516.78247528639,1447.11273774838,2390.51436305967,1180.71895195971,322.041369317102,0,577.442456151288,3692.38247836748,0,2224.95324291641,0,724.460488185175,0,0,1532.91679936728,1226.07461961662,0,0,1426.3044389617,542.920077258475,244.009340733437,284.074584611295,223.064992322141,231.14003937539,0,0,0,0,2613.57783252554,0,0,4333.43548724281,0,2609.28961083008,343.120920358377,2667.08598616292,2179.18518366594,0,3843.04257190798,3835.02211080157,1678.16566129517,3746.62738585168,3102.49576080323,3884.05571184934,2516.78416656759,1447.12980777144,2390.50714522962,1180.8293460988,322.094244816245,0,577.538672280056,3692.38299177128,0,2224.95416508138,0,724.53382912767,0,0,1532.92271546269,1226.07433040869,0,0,1426.30347410671,542.998753627143,244.051772962476,284.144630399377,223.125689264357,231.209338127665,0,0,0,0,2613.57706649357,0,0,4333.43662839663,0,2609.29144193437,343.155531873828,2667.08600959613,2179.17971048808,0,3843.04379678381,3835.02173898623,1678.16506471196,3746.62808188353,3102.49701682207,3884.05853183237,2516.78490545242,1447.13688989424,2390.50397487146,1180.89390837604,322.125522222035,0,577.595805491075,3692.38269427847,0,2224.95427251292,0,724.578457926767,0,0,1532.92540061055,1226.07456810139,0,0,1426.30320498203,543.045709044625,244.076251394291,284.185930614942,223.161420061767,231.250869583599,0,0,0,0,2613.57535266727,0,0,4333.43702736727,0,2609.29199809033,343.166503991893,2667.08587614798,2179.17693315732,0,3843.04418639587,3835.02148799052,1678.16485473712,3746.62813319715,3102.49756649287,3884.05946408005,2516.78530237886,1447.13889702456,2390.50323713712,1180.91235908424,322.134908861414,0,577.613322837377,3692.38249321509,0,2224.95424918519,0,724.591361869812,0,0,1532.92447704498,1226.07519662,0,0,1426.30304304457,543.060201692185,244.083953486847,284.199008648609,223.172896015152,231.263687462135],"Archive439_field3":[0,0,0,0,2649.00363991132,0,0,4345.11450976405,0,2612.962728361,344.096640197523,2705.11832968336,2180.47477205763,0,3896.14898576977,3856.49686920105,1681.34511222973,3761.23915241272,3111.53046865069,3892.69413403857,2546.01285429008,1467.9420528836,2403.8369237116,1185.72128423991,323.861062690056,0,578.418360045016,3699.59344095945,0,2244.25886143198,0,751.4612290852,0,0,1532.9858984055,1233.2606240863,0,0,1459.23783211583,549.098086041462,245.014913938824,284.078472407873,227.580436699576,233.276658276253,0,0,0,0,2649.00630223826,0,0,4345.11566513391,0,2612.96707833771,344.153626707367,2705.11862780581,2180.46557412005,0,3896.15009261414,3856.4973183547,1681.34456025388,3761.24143864757,3111.53219702766,3892.69681234057,2546.01355274545,1467.95926592857,2403.82910827806,1185.83396060375,323.917052926714,0,578.516609712445,3699.59435509411,0,2244.2609532927,0,751.539139989862,0,0,1532.99198150368,1233.26071100584,0,0,1459.24165250502,549.178324562287,245.057746652403,284.148744276357,227.642703447268,233.346678415865,0,0,0,0,2649.00626013068,0,0,4345.11692515912,0,2612.96976285806,344.188433193768,2705.11987235255,2180.45991952433,0,3896.15142887635,3856.49741532728,1681.34414223843,3761.24302995287,3111.5339017288,3892.69995046694,2546.01366303384,1467.96758802643,2403.82545291737,1185.90344141298,323.955418844941,0,578.578530216499,3699.59456064184,0,2244.26223472332,0,751.591053414194,0,0,1532.9955580873,1233.26165698743,0,0,1459.24683495463,549.22768600684,245.083146779804,284.190784185625,227.680291760172,233.389504868209,0,0,0,0,2649.00628763941,0,0,4345.11745389101,0,2612.97125319319,344.199594409465,2705.12110686648,2180.45728087674,0,3896.15197172465,3856.49773202364,1681.34414692651,3761.24413174184,3111.53492574435,3892.70124392611,2546.01382480161,1467.97197415722,2403.82436512104,1185.92944708657,323.975865982755,0,578.603584849377,3699.59496465483,0,2244.26338977207,0,751.613939747638,0,0,1532.99625296833,1233.26336038593,0,0,1459.25278874942,549.245430611911,245.092300166515,284.20511539047,227.693918444295,233.40418601949],"Archive439_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743,5997180,5577377.4,1379351.4,1799154,3688265.7,5787278.7,3478364.4,1589252.7,3898167,2533808.55,4842722.85,2743709.85,3583315.05,2428857.9,1484302.05,2061530.625,1956579.975,2402620.2375,2802744.590625,1694203.35,3143834.203125,3619801.79941406,3348185.22836539,3970710.06484059,4572641.23178246,4527870.9,4430994.81106745,2192718.9375,2848660.5,2258313.09375,4947673.5,4064229.57697249,5892229.35,4003117.65,3793216.35,3137274.7875,5682328.05,3373413.75,3058561.8,4331532.024543,5279716.63080448,5076230.62974912,5419951.425,5026571.27142495,2998590,2788688.7,689675.7,899577,1844132.85,2893639.35,1739182.2,794626.35,1949083.5,1266904.275,2421361.425,1371854.925,1791657.525,1214428.95,742151.025,1030765.3125,978289.9875,1201310.11875,1401372.2953125,847101.675,1571917.1015625,1809900.89970703,1674092.61418269,1985355.03242029,2286320.61589123,2263935.45,2215497.40553372,1096359.46875,1424330.25,1129156.546875,2473836.75,2032114.78848625,2946114.675,2001558.825,1896608.175,1568637.39375,2841164.025,1686706.875,1529280.9,2165766.0122715,2639858.31540224,2538115.31487456,2709975.7125,2513285.63571248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive439_field5":[-582.649071358749,-582.649071358749,-212.662979743217,-274.312333015135,-582.649071358749,-582.649071358749,-582.649071358749,-248.841799123664,-582.649071358749,-382.868822405163,-582.649071358749,-414.151367667879,-582.649071358749,-366.770157370288,-231.848328252358,-311.611813298569,-296.547959204244,-363.287701286017,-423.770851868369,-264.14392814053,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-330.229203414901,-429.195778165902,-341.518149526282,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545455,-582.649071358749,-506.451064397443,-459.858572155327,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-212.662979743217,-274.312333015135,-582.649071358749,-582.649071358749,-582.649071358749,-248.841799123664,-582.649071358749,-382.868822405163,-582.649071358749,-414.151367667879,-582.649071358749,-366.770157370288,-231.848328252358,-311.61181329857,-296.547959204244,-363.287701286017,-423.770851868369,-264.14392814053,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-330.229203414901,-429.195778165902,-341.518149526282,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545454,-582.649071358749,-506.451064397443,-459.858572155327,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-212.662979743217,-274.312333015135,-582.649071358749,-582.649071358749,-582.649071358749,-248.841799123664,-582.649071358749,-382.868822405163,-582.649071358749,-414.151367667879,-582.649071358749,-366.770157370288,-231.848328252358,-311.61181329857,-296.547959204244,-363.287701286017,-423.770851868369,-264.14392814053,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-330.229203414901,-429.195778165902,-341.518149526282,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545454,-582.649071358749,-506.451064397443,-459.858572155327,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-212.662979743217,-274.312333015135,-582.649071358749,-582.649071358749,-582.649071358749,-248.841799123664,-582.649071358749,-382.868822405163,-582.649071358749,-414.151367667879,-582.649071358749,-366.770157370288,-231.848328252358,-311.611813298569,-296.547959204244,-363.287701286017,-423.770851868369,-264.14392814053,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-330.229203414901,-429.195778165902,-341.518149526282,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545455,-582.649071358749,-506.451064397443,-459.858572155327,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749],"Archive439_field6":[426.075714137782,355.676397373549,24.5826345177547,31.7089501631454,38.8386341702191,390.386707456163,9.68309262855314,28.7647008801618,77.5662268217335,44.2574647491247,234.832354134539,47.8735495886534,23.6960238729916,42.3965503612329,26.800352011723,36.0205585710451,34.2792624598144,41.9939981857337,48.9855074133557,30.5335402212608,63.7424556587728,69.9242964215346,68.7394871948799,84.3590301246978,186.006308786219,184.63688388429,162.420364968149,38.1726232955065,49.6125981304097,39.4775614501482,251.80959440715,99.8447067513342,407.374687140062,91.3809707786526,57.706506663921,67.3480918076942,372.813990342711,58.5428711299116,53.1570432371479,147.265609833943,307.48361285483,272.969255940899,330.915579545688,264.703669176356,426.075714137782,355.676397373549,24.5826345177547,31.7089501631454,38.8386341702191,390.386707456163,9.68309262855314,28.7647008801618,77.5662268217335,44.2574647491247,234.832354134539,47.8735495886534,23.6960238729916,42.3965503612329,26.800352011723,36.0205585710451,34.2792624598144,41.9939981857337,48.9855074133557,30.5335402212608,63.7424556587728,69.9242964215345,68.7394871948799,84.3590301246978,186.006308786219,184.63688388429,162.420364968149,38.1726232955065,49.6125981304096,39.4775614501482,251.80959440715,99.8447067513342,407.374687140062,91.3809707786526,57.706506663921,67.3480918076942,372.813990342711,58.5428711299116,53.1570432371479,147.265609833943,307.48361285483,272.969255940899,330.915579545688,264.703669176356,426.075714137782,355.676397373549,24.5826345177547,31.7089501631454,38.8386341702191,390.386707456163,9.68309262855314,28.7647008801618,77.5662268217335,44.2574647491247,234.832354134539,47.8735495886534,23.6960238729916,42.3965503612329,26.800352011723,36.0205585710451,34.2792624598144,41.9939981857337,48.9855074133557,30.5335402212608,63.7424556587728,69.9242964215345,68.7394871948799,84.3590301246978,186.006308786219,184.63688388429,162.420364968149,38.1726232955065,49.6125981304096,39.4775614501482,251.80959440715,99.8447067513342,407.374687140062,91.3809707786526,57.706506663921,67.3480918076942,372.813990342711,58.5428711299116,53.1570432371479,147.265609833943,307.48361285483,272.969255940899,330.915579545688,264.703669176356,426.075714137782,355.676397373549,24.5826345177547,31.7089501631454,38.8386341702191,390.386707456163,9.68309262855314,28.7647008801618,77.5662268217335,44.2574647491247,234.832354134539,47.8735495886534,23.6960238729916,42.3965503612329,26.800352011723,36.0205585710451,34.2792624598144,41.9939981857337,48.9855074133557,30.5335402212608,63.7424556587728,69.9242964215346,68.7394871948799,84.3590301246978,186.006308786219,184.63688388429,162.420364968149,38.1726232955065,49.6125981304097,39.4775614501482,251.80959440715,99.8447067513342,407.374687140062,91.3809707786526,57.706506663921,67.3480918076942,372.813990342711,58.5428711299116,53.1570432371479,147.265609833943,307.48361285483,272.969255940899,330.915579545688,264.703669176356],"Archive439_field7":[1008.72478549653,938.325468732297,237.245614260972,306.02128317828,621.487705528968,973.035778814912,592.332163987302,277.606500003826,660.215298180482,427.126287154288,817.481425493288,462.024917256532,606.34509523174,409.166707731521,258.648680264081,347.632371869615,330.827221664058,405.28169947175,472.756359281725,294.67746836179,533.643329314687,610.966831780161,569.184186984338,667.008101483447,768.655380144968,767.285955243039,745.069436326898,368.401826710407,478.808376296312,380.99571097643,834.458665765899,682.493778110083,990.023758498811,674.030042137401,640.35557802267,536.268546353149,955.463061701459,564.993935527355,513.015615392475,729.914681192692,890.132684213579,855.618327299648,913.564650904436,847.352740535105,1008.72478549653,938.325468732297,237.245614260972,306.02128317828,621.487705528968,973.035778814912,592.332163987302,277.606500003826,660.215298180482,427.126287154288,817.481425493288,462.024917256532,606.34509523174,409.166707731521,258.648680264081,347.632371869615,330.827221664058,405.28169947175,472.756359281725,294.67746836179,533.643329314687,610.966831780161,569.184186984338,667.008101483447,768.655380144968,767.285955243039,745.069436326898,368.401826710407,478.808376296312,380.99571097643,834.458665765899,682.493778110083,990.023758498811,674.030042137401,640.35557802267,536.268546353149,955.463061701459,564.993935527355,513.015615392475,729.914681192692,890.132684213579,855.618327299648,913.564650904436,847.352740535105,1008.72478549653,938.325468732297,237.245614260972,306.02128317828,621.487705528968,973.035778814912,592.332163987302,277.606500003826,660.215298180482,427.126287154288,817.481425493288,462.024917256532,606.34509523174,409.166707731521,258.648680264081,347.632371869615,330.827221664058,405.28169947175,472.756359281725,294.67746836179,533.643329314687,610.966831780161,569.184186984338,667.008101483447,768.655380144968,767.285955243039,745.069436326898,368.401826710407,478.808376296312,380.99571097643,834.458665765899,682.493778110083,990.023758498811,674.030042137401,640.35557802267,536.268546353149,955.463061701459,564.993935527355,513.015615392475,729.914681192692,890.132684213579,855.618327299648,913.564650904436,847.352740535105,1008.72478549653,938.325468732297,237.245614260972,306.02128317828,621.487705528968,973.035778814912,592.332163987302,277.606500003826,660.215298180482,427.126287154288,817.481425493288,462.024917256532,606.34509523174,409.166707731521,258.648680264081,347.632371869615,330.827221664058,405.28169947175,472.756359281725,294.67746836179,533.643329314687,610.966831780161,569.184186984338,667.008101483447,768.655380144968,767.285955243039,745.069436326898,368.401826710407,478.808376296312,380.99571097643,834.458665765899,682.493778110083,990.023758498811,674.030042137401,640.35557802267,536.268546353149,955.463061701459,564.993935527355,513.015615392475,729.914681192692,890.132684213579,855.618327299648,913.564650904436,847.352740535105],"Archive439_field8":[0,0,0,0,9.67316459974225,0,0,309.594759734414,0,-104.829107781909,8.50184075045798,349.800062725109,4.5065858835796,0,406.654339403951,193.323833748251,-30.7617183062361,184.847019676794,-46.1936504111487,-70.401156324711,20.6920913973139,1.04063379612791,5.92677446655545,5.63177391635547,7.65876828772563,0,6.55644278429912,201.52687714568,0,261.464072903102,0,7.54414827463305,0,0,10.9377299151134,-8.55509357598942,0,0,228.47131313131,5.85773772821884,6.78834269674161,3.91058498385475,13.0943546507495,9.31571504863587,0,0,0,0,9.67387981817181,0,0,309.594756669269,0,-104.829250570252,8.5033732198664,349.800102310168,4.50705237990824,0,406.654207366391,193.323834772975,-30.7621067209757,184.846987462225,-46.1936138614601,-70.4010372053849,20.6931855837577,1.04085908295483,5.92673906880561,5.63234307997378,7.65910485739755,0,6.55703247825781,201.526942783032,0,261.464723730591,0,7.54514893926218,0,0,10.9391005569647,-8.55563718159236,0,0,228.472122581218,5.85870632095397,6.78908848137704,3.91135314011022,13.1000264258705,9.31683355724427,0,0,0,0,9.67425673112951,0,0,309.59476317481,0,-104.82931120898,8.50428118934019,349.800178538721,4.50727906107387,0,406.654136182341,193.323815749821,-30.7623351928081,184.846943058031,-46.19350407303,-70.4009863874156,20.6936925256801,1.04097002453421,5.92667462518685,5.6326776308451,7.65931590686393,0,6.55739642059914,201.52698588729,0,261.465047694228,0,7.54573261194902,0,0,10.9398988098297,-8.55592324691544,0,0,228.472544513191,5.85928114090755,6.78947862039159,3.91177576066853,13.103382478017,9.31748017110562,0,0,0,0,9.67438091943004,0,0,309.59477392891,0,-104.829295435906,8.50457652835287,349.800211654185,4.50735049779958,0,406.654124079366,193.323801062439,-30.7623822301641,184.846900601323,-46.1934114499212,-70.400990428499,20.6938704582094,1.04100643796819,5.92665995892201,5.63279239146904,7.65939638826129,0,6.55753093225151,201.527005967815,0,261.465083519708,0,7.54594762713819,0,0,10.9402016456192,-8.5560066253169,0,0,228.472598541569,5.85942945130139,6.78959879728499,3.91192794175671,13.1044398499518,9.31767530644988],"Archive439_field9":[0,0,0,0,49.6432850459233,0,0,2415.81289005236,0,798.969157039636,83.3945927203417,1365.31835558661,44.0914218591663,0,1808.77214648809,1807.40468859179,619.002468443987,1863.6540367677,957.764157277495,2364.09580463963,55.111588004034,77.1586373753304,58.4458504559886,55.1481420781531,71.5706016548001,0,83.4303726011506,2081.73670384648,0,1267.64235143446,0,44.0422522157405,0,0,43.1192795751645,19.7892490056624,0,0,663.70439764092,71.4712583953578,75.8297662187646,82.766878014556,85.6203086932717,74.892931312679,0,0,0,0,49.6471229863541,0,0,2415.81381253182,0,798.969841876663,83.4095043772864,1365.31913556409,44.0966694567723,0,1808.77334282908,1807.40514343486,619.002535175297,1863.65551575948,957.765674888266,2364.09804342313,55.1143223698045,77.1658441829141,58.446357095401,55.1538957241079,71.5734500430351,0,83.4374461353764,2081.73695735168,0,1267.64275566041,0,44.0481398319221,0,0,43.1261023629273,19.7899654795925,0,0,663.70494007082,71.4840828305171,75.8386513184765,82.7832453856418,85.6587389517763,74.9013618672124,0,0,0,0,49.6490100862337,0,0,2415.81487034765,0,798.970183447303,83.4182888127818,1365.31953861959,44.0993815843171,0,1808.77451772644,1807.40508638471,619.002383697144,1863.65618067977,957.766573027453,2364.10052184151,55.1155929442393,77.169355439128,58.4464671083848,55.15724797868,71.575222118017,0,83.4417011480631,2081.73665731364,0,1267.64271051857,0,44.0516769037312,0,0,43.1300754527897,19.7902914064816,0,0,663.705161461822,71.4918475876759,75.8433905960691,82.7921753233066,85.6816428633393,74.906292586982,0,0,0,0,49.6496908120795,0,0,2415.81520931768,0,798.970179180015,83.4211197706163,1365.31935148143,44.1003800312593,0,1808.77487007017,1807.40503378471,619.002314889139,1863.65619467565,957.766633110775,2364.10129241765,55.1159471396297,77.1705416972096,58.4464505064501,55.158445200353,71.5758886379489,0,83.4431795104045,2081.73653167784,0,1267.64266869289,0,44.0529519437825,0,0,43.1314745589428,19.7903776349943,0,0,663.705066450135,71.4944531841382,75.8448285858456,82.7949538934634,85.6891559044533,74.9078441914463],"Archive439_field10":[0,0,0,0,50.5769521514989,0,0,2435.57279867345,0,805.836722237227,83.8268459936692,1409.42360787667,44.3241838264032,0,1853.92526040956,1817.71762338467,619.804331221072,1872.8034689626,958.892607193062,2365.14763131782,58.8791911481295,77.1656635793991,58.757731964955,55.4353742936898,71.9792278300982,0,83.6876025893029,2091.47091424805,0,1294.3403567413,0,44.6843255928951,0,0,44.484930219888,21.5639636369255,0,0,701.956122870107,71.7109146252983,76.133011533525,82.8592105617044,86.615815122223,75.4700929581152,0,0,0,0,50.5810431498128,0,0,2435.57402418963,0,805.842186158977,83.841832035083,1409.42836606665,44.3277212047578,0,1853.92683303074,1817.71870858373,619.80568674017,1872.80749728885,958.900986875946,2365.15066402297,58.8714038319265,77.1744554091044,58.7484663373495,55.4407766945926,71.982131122614,0,83.6947071266134,2091.47169497265,0,1294.34230340398,0,44.6897025506197,0,0,44.4919416530432,21.5738277138837,0,0,701.967760820946,71.7238077593175,76.1421192680167,82.8756614058252,86.6547409962116,75.4786290579044,0,0,0,0,50.5833455255292,0,0,2435.57540110253,0,805.847811753605,83.8506709645767,1409.43363465744,44.3294260433387,0,1853.92842103954,1817.71934011773,619.806837271912,1872.81125767912,958.910025584401,2365.15401420075,58.8767441099679,77.1832311345089,58.7463519226642,55.444173027151,71.9839759117508,0,83.6990464070799,2091.47197503551,0,1294.34381223227,0,44.6943762761482,0,0,44.4965149488411,21.5879489160833,0,0,701.980729143883,71.7316486195694,76.1473689058876,82.8847929539936,86.6781114287664,75.4838022523385,0,0,0,0,50.5846063687642,0,0,2435.5760814836,0,805.853597212893,83.8535368194708,1409.43918725404,44.3301242066241,0,1853.92924244878,1817.72003399413,619.80808223757,1872.81491387873,958.919509331104,2365.15573484099,58.8958113077586,77.193360875497,58.7516659621112,55.4458098204049,71.9847325892917,0,83.7006618984228,2091.47247894702,0,1294.34533439357,0,44.6984418287405,0,0,44.4989362329904,21.6064787147695,0,0,701.995038534063,71.7343353885573,76.1496092984943,82.8878933953312,86.6860629477098,75.4857348619995],"Archive439_field11":[9074256.16362612,8440960.10185794,2134206.97940042,2752897.07857668,5590760.45676632,8753206.06798982,5328483.91083205,2497284.22453942,5939144.97291304,3842329.84019393,7353874.88300975,4156269.88990879,5454541.01733283,3680769.59440999,2326744.03845921,3127220.86189352,2976045.59582889,3645820.95365699,4252807.47413576,2650850.72956494,4800532.65254918,5496117.09632302,5120250.0337481,6000251.46908174,6914647.0090467,6902327.97759667,6702473.28322642,3314058.10066668,4307250.02723507,3427349.78693044,7506598.2317369,6139557.05430934,8906026.02599085,6063419.23215837,5760491.49810899,4824148.50122727,8595125.94656214,5082555.49539891,4614970.48247916,6566144.59163278,8007428.89666799,7696945.68017236,8218217.4796666,7622590.36272348,6049504.10908408,5627306.73457196,1422804.65293362,1835264.71905112,3727173.63784422,5835470.71199321,3552322.60722137,1664856.14969295,3959429.98194203,2561553.22679595,4902583.25533984,2770846.59327253,3636360.67822189,2453846.39627332,1551162.69230614,2084813.90792902,1984030.39721926,2430547.30243799,2835204.98275718,1767233.81970996,3200355.10169945,3664078.06421535,3413500.02249873,4000167.6460545,4609764.6726978,4601551.98506445,4468315.52215095,2209372.06711112,2871500.01815672,2284899.85795363,5004398.82115793,4093038.03620623,5937350.6839939,4042279.48810558,3840327.665406,3216099.00081818,5730083.96437476,3388370.33026594,3076646.98831944,4377429.72775519,5338285.93111199,5131297.1201149,5478811.65311107,5081726.90848232,3024752.05454204,2813653.36728598,711402.326466808,917632.35952556,1863586.81892211,2917735.35599661,1776161.30361068,832428.074846473,1979714.99097101,1280776.61339798,2451291.62766992,1385423.29663627,1818180.33911095,1226923.19813666,775581.346153071,1042406.95396451,992015.198609629,1215273.651219,1417602.49137859,883616.909854981,1600177.55084973,1832039.03210767,1706750.01124937,2000083.82302725,2304882.3363489,2300775.99253222,2234157.76107547,1104686.03355556,1435750.00907836,1142449.92897681,2502199.41057897,2046519.01810311,2968675.34199695,2021139.74405279,1920163.832703,1608049.50040909,2865041.98218738,1694185.16513297,1538323.49415972,2188714.86387759,2669142.965556,2565648.56005745,2739405.82655553,2540863.45424116,0,0,-9.58781853910296e-11,2.23715765912402e-10,0,0,0,-9.58781853910296e-11,0,-6.39187902606864e-11,0,2.55675161042745e-10,0,1.27837580521373e-10,6.39187902606864e-11,0,0,1.91756370782059e-10,1.27837580521373e-10,-1.27837580521373e-10,0,0,0,0,0,0,0,1.27837580521373e-10,-6.39187902606864e-11,-6.39187902606864e-11,0,0,0,0,0,0,0,-6.39187902606864e-11,2.55675161042745e-10,0,0,0,0,0],"Archive439_field12":[-582.649071358749,-582.649071358749,-217.839481450458,-279.03790665906,-582.649071358749,-582.649071358749,-582.649071358749,-256.545355688925,-582.649071358749,-385.156666754945,-582.649071358749,-415.653375604598,-582.649071358749,-370.210433424663,-238.523548770471,-315.586267671449,-300.804586744225,-365.607906615918,-424.73827991027,-271.641481236862,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-333.75636780647,-432.932856684821,-345.623684822825,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545455,-582.649071358749,-508.233601675622,-461.920486353562,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-217.839481450458,-279.03790665906,-582.649071358749,-582.649071358749,-582.649071358749,-256.545355688925,-582.649071358749,-385.156666754945,-582.649071358749,-415.653375604598,-582.649071358749,-370.210433424662,-238.523548770471,-315.586267671449,-300.804586744225,-365.607906615918,-424.73827991027,-271.641481236862,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-333.75636780647,-432.932856684821,-345.623684822825,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545454,-582.649071358749,-508.233601675622,-461.920486353562,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-217.839481450458,-279.03790665906,-582.649071358749,-582.649071358749,-582.649071358749,-256.545355688925,-582.649071358749,-385.156666754945,-582.649071358749,-415.653375604598,-582.649071358749,-370.210433424662,-238.523548770471,-315.586267671449,-300.804586744225,-365.607906615918,-424.73827991027,-271.641481236862,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-333.75636780647,-432.932856684821,-345.623684822825,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545454,-582.649071358749,-508.233601675622,-461.920486353562,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-217.839481450458,-279.03790665906,-582.649071358749,-582.649071358749,-582.649071358749,-256.545355688925,-582.649071358749,-385.156666754945,-582.649071358749,-415.653375604598,-582.649071358749,-370.210433424663,-238.523548770471,-315.586267671449,-300.804586744225,-365.607906615918,-424.73827991027,-271.641481236862,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-333.75636780647,-432.932856684821,-345.623684822825,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545455,-582.649071358749,-508.233601675622,-461.920486353562,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749],"Archive439_field13":[435.467980834275,365.297084308362,25.1810087609035,32.255199679237,48.5037772328067,399.767612181011,20.3468181786412,29.6551883348158,88.5572542475304,44.52192658236,244.906306265511,48.047173188754,33.3419426719148,42.7942267644648,27.571969650676,36.4799829587498,34.7713044655265,42.2622007647627,49.0973366090389,31.4002148430833,71.5085759441029,78.8917079963385,77.6065561050267,94.7231735840285,196.150529001538,194.893538854234,172.690744562847,38.5803434978035,50.0445832154755,39.9521380493124,261.774538999396,110.530681496212,416.644744920753,101.250639186232,67.8544792481403,77.2053400055967,382.076867065434,58.748922331097,53.3953888260388,157.157748140031,317.263624293022,282.836969266096,340.932779725279,274.568983524631,435.467980834275,365.297084308362,25.1810087609035,32.255199679237,48.5037772328067,399.767612181011,20.3468181786412,29.6551883348158,88.5572542475304,44.52192658236,244.906306265511,48.047173188754,33.3419426719148,42.7942267644648,27.571969650676,36.4799829587498,34.7713044655265,42.2622007647626,49.0973366090389,31.4002148430833,71.5085759441029,78.8917079963385,77.6065561050267,94.7231735840285,196.150529001538,194.893538854234,172.690744562847,38.5803434978035,50.0445832154755,39.9521380493124,261.774538999396,110.530681496212,416.644744920753,101.250639186232,67.8544792481402,77.2053400055967,382.076867065434,58.748922331097,53.3953888260388,157.157748140031,317.263624293022,282.836969266096,340.932779725279,274.568983524631,435.467980834275,365.297084308362,25.1810087609035,32.255199679237,48.5037772328067,399.767612181011,20.3468181786412,29.6551883348158,88.5572542475304,44.52192658236,244.906306265511,48.047173188754,33.3419426719148,42.7942267644648,27.571969650676,36.4799829587498,34.7713044655265,42.2622007647626,49.0973366090389,31.4002148430833,71.5085759441029,78.8917079963385,77.6065561050267,94.7231735840285,196.150529001538,194.893538854234,172.690744562847,38.5803434978035,50.0445832154755,39.9521380493124,261.774538999396,110.530681496212,416.644744920753,101.250639186232,67.8544792481402,77.2053400055967,382.076867065434,58.748922331097,53.3953888260388,157.157748140031,317.263624293022,282.836969266096,340.932779725279,274.568983524631,435.467980834275,365.297084308362,25.1810087609035,32.255199679237,48.5037772328067,399.767612181011,20.3468181786412,29.6551883348158,88.5572542475304,44.52192658236,244.906306265511,48.047173188754,33.3419426719148,42.7942267644648,27.571969650676,36.4799829587498,34.7713044655265,42.2622007647627,49.0973366090389,31.4002148430833,71.5085759441029,78.8917079963385,77.6065561050267,94.7231735840285,196.150529001538,194.893538854234,172.690744562847,38.5803434978035,50.0445832154755,39.9521380493124,261.774538999396,110.530681496212,416.644744920753,101.250639186232,67.8544792481403,77.2053400055967,382.076867065434,58.748922331097,53.3953888260388,157.157748140031,317.263624293022,282.836969266096,340.932779725279,274.568983524631],"Archive439_field14":[1018.11705219302,947.94615566711,243.020490211361,311.293106338297,631.152848591555,982.416683539759,602.99588953739,286.200544023741,671.206325606279,429.678593337305,827.555377624259,463.700548793352,615.991014030664,413.004660189127,266.095518421147,352.066250630199,335.575891209751,407.870107380681,473.835616519309,303.041696079946,541.409449600017,619.934243354965,578.051255894485,677.372244942777,778.799600360287,777.542610212983,755.339815921596,372.336711304273,482.977439900297,385.575822872137,844.423610358145,693.17975285496,999.293816279502,683.899710544981,650.503550606889,546.125794551051,964.725938424183,566.982524006719,515.315875179601,739.80681949878,899.912695651771,865.486040624845,923.581851084028,857.21805488338,1018.11705219302,947.94615566711,243.020490211361,311.293106338297,631.152848591555,982.416683539759,602.99588953739,286.200544023741,671.206325606279,429.678593337305,827.555377624259,463.700548793352,615.991014030663,413.004660189127,266.095518421147,352.066250630198,335.575891209751,407.870107380681,473.835616519309,303.041696079946,541.409449600017,619.934243354965,578.051255894485,677.372244942777,778.799600360286,777.542610212983,755.339815921596,372.336711304273,482.977439900297,385.575822872137,844.423610358144,693.17975285496,999.293816279502,683.899710544981,650.503550606889,546.125794551051,964.725938424183,566.982524006719,515.315875179601,739.80681949878,899.912695651771,865.486040624845,923.581851084028,857.21805488338,1018.11705219302,947.94615566711,243.020490211361,311.293106338297,631.152848591555,982.416683539759,602.99588953739,286.200544023741,671.206325606279,429.678593337305,827.555377624259,463.700548793352,615.991014030663,413.004660189127,266.095518421147,352.066250630198,335.575891209751,407.870107380681,473.835616519309,303.041696079946,541.409449600017,619.934243354965,578.051255894485,677.372244942777,778.799600360286,777.542610212983,755.339815921596,372.336711304273,482.977439900297,385.575822872137,844.423610358144,693.17975285496,999.293816279502,683.899710544981,650.503550606889,546.125794551051,964.725938424183,566.982524006719,515.315875179601,739.80681949878,899.912695651771,865.486040624845,923.581851084028,857.21805488338,1018.11705219302,947.94615566711,243.020490211361,311.293106338297,631.152848591555,982.416683539759,602.99588953739,286.200544023741,671.206325606279,429.678593337305,827.555377624259,463.700548793352,615.991014030664,413.004660189127,266.095518421147,352.066250630199,335.575891209751,407.870107380681,473.835616519309,303.041696079946,541.409449600017,619.934243354965,578.051255894485,677.372244942777,778.799600360287,777.542610212983,755.339815921596,372.336711304273,482.977439900297,385.575822872137,844.423610358145,693.17975285496,999.293816279502,683.899710544981,650.503550606889,546.125794551051,964.725938424183,566.982524006719,515.315875179601,739.80681949878,899.912695651771,865.486040624845,923.581851084028,857.21805488338],"Archive439_field15":[0,0,0,0,10.7828261092806,0,0,295.48330655624,0,-194.416699572471,8.38495956168809,397.112851736303,3.56185617663448,0,487.41662339116,184.219548865195,-25.0600269920664,184.743717507199,-50.1544729973242,-140.007154157125,24.1572518195292,-2.06970299294872,3.02801657384409,5.73774285689172,7.73138421905814,0,6.59020301319009,193.854260263249,0,265.915337289741,0,7.53754763864029,0,0,11.1113479710605,-14.7618885198437,0,0,265.4179095624,6.65969273969638,6.73788648564585,3.81193671244739,13.088470769484,9.29150445541211,0,0,0,0,10.7839292585395,0,0,295.48332885054,0,-194.416796959018,8.38647415485854,397.112950694499,3.562293599407,0,487.416458944339,184.21958193213,-25.0606152158717,184.743608518288,-50.1545535416625,-140.007022172578,24.1595127633495,-2.06974536441003,3.02810616978396,5.73835602246652,7.73165450454495,0,6.59078157460256,193.854359897689,0,265.916091888558,0,7.53878496656269,0,0,11.112640796916,-14.7630310853617,0,0,265.419073581608,6.66084609571332,6.73868476770417,3.81272443276808,13.0942419911882,9.29262071478545,0,0,0,0,10.7845430591879,0,0,295.483360355933,0,-194.416758267732,8.38737970497783,397.113140290283,3.56250441835423,0,487.416361050756,184.219571935153,-25.0609685671893,184.74350630551,-50.1544907845189,-140.006970017296,24.1605488286478,-2.06975875483493,3.02804070427667,5.73872381674319,7.73182387628978,0,6.59114095477502,193.854417924152,0,265.916437356778,0,7.53951103866299,0,0,11.1134086073598,-14.7636506543086,0,0,265.4196703209,6.66154097439017,6.73910662509521,3.81315858188658,13.0976575108307,9.29326935134213,0,0,0,0,10.7847440376462,0,0,295.483387134214,0,-194.41664701277,8.38767749278409,397.113250504398,3.56256265958352,0,487.416333646687,184.21955199586,-25.0610505387929,184.743427065067,-50.1544021606754,-140.006979668121,24.1608823504986,-2.06976119471554,3.02802127809337,5.73884745075959,7.7318894761875,0,6.59127650638144,193.854440105129,0,265.916452800055,0,7.53976717030553,0,0,11.1136846759326,-14.7638260606088,0,0,265.419740994791,6.66172482240936,6.73923655620577,3.81331330539545,13.0987336621264,9.29346620790747],"Archive439_field16":[0,0,0,0,53.7257570060774,0,0,3056.53781948761,0,1352.86444630861,83.1657350568861,1857.05617605596,47.9657199509696,0,2375.67758869955,2435.94407050752,904.755983016899,2480.04199145737,1547.12120951385,2899.83169164231,69.8668709365033,88.4642555204219,74.5678671918359,56.4966609383122,71.2334386058097,0,83.036712272357,2642.34124207702,0,1597.23535154989,0,42.4718497619955,0,0,43.7716628311417,35.7201641794037,0,0,891.160368048662,71.7135129477851,75.5250288482731,82.3491878060467,85.1686852394506,74.4642659787757,0,0,0,0,53.7313098482695,0,0,3056.53875696246,0,1352.86483462155,83.1805746917883,1857.05604765089,47.9722932304034,0,2375.67886725883,2435.94465508975,904.755998071413,2480.04324849416,1547.12180767621,2899.83412918876,69.8741313043126,88.4751512620343,74.5742823051728,56.5030711450716,71.2357719964271,0,83.0435246550892,2642.34156792622,0,1597.23583295417,0,42.4792460210269,0,0,43.7782001095979,35.7218578379595,0,0,891.160604851636,71.7273121333865,75.5344006511095,82.3661123523416,85.2076815548976,74.4725896797396,0,0,0,0,53.7341392229133,0,0,3056.53985012123,0,1352.86480168855,83.1893574511503,1857.05563457028,47.9757939274829,0,2375.68015891364,2435.94470762383,904.75575736513,2480.04367495753,1547.12187152775,2899.83686067911,69.8776041271938,88.480444297565,74.5772983838043,56.5068710427103,71.237239404226,0,83.0476333386161,2642.34131840315,0,1597.23579832784,0,42.4837709470448,0,0,43.7821082966691,35.7227071731157,0,0,891.160398117727,71.7358039339599,75.5394350368008,82.3753818501669,85.2309213085865,74.4774844496386,0,0,0,0,53.7351002761175,0,0,3056.54018949516,0,1352.86451797862,83.1922077482391,1857.05487249085,47.9770196149717,0,2375.68054417557,2435.94476878248,904.755667778914,2480.04350443472,1547.12133466534,2899.83767928402,69.8785994980973,88.4821393715555,74.578193055273,56.508201376344,71.237799021454,0,83.0490630712509,2642.341271954,0,1597.23578675939,0,42.4853769082527,0,0,43.7834474372717,35.722936042765,0,0,891.159990912323,71.7386212766834,75.5409634683364,82.3782664093088,85.2385409238385,74.479035494681],"Archive439_field17":[0,0,0,0,54.7974523779821,0,0,3070.78914355285,0,1366.77302971623,83.5873625076597,1899.04550431066,48.1007360848636,0,2425.16623662802,2442.90191563877,905.127724333598,2486.91656477333,1547.94212009249,2903.21238049194,73.9351874127556,88.4888377362102,74.63909170962,56.7876785006923,71.6517849262135,0,83.2978228737539,2649.44427505288,0,1619.23006146262,0,43.1359397970544,0,0,45.159971745754,38.6506781494555,0,0,929.866414803087,72.0221389797222,75.8249917349901,82.4373677181588,86.16851525364,75.0417230868387,0,0,0,0,54.8028487976532,0,0,3070.79036139259,0,1366.77732443642,83.6022874468647,1899.04919453492,48.1046602190074,0,2425.16774746071,2442.90272392298,905.128252781434,2486.9200183065,1547.94837498733,2903.21553773748,73.933061247124,88.5052637994278,74.6357380529287,56.7937203530631,71.6541575357086,0,83.3046636339759,2649.44489302966,0,1619.23156524248,0,43.1434949704554,0,0,45.1669348657597,38.6605560008364,0,0,929.877307136715,72.0360767757658,75.8345661182969,82.4543719662182,86.2080058483566,75.0501710966607,0,0,0,0,54.8067075118017,0,0,3070.79175395501,0,1366.78180104744,83.6111555294844,1899.05375363063,48.1083015399162,0,2425.16930033893,2442.9030106255,905.12852401957,2486.92323251366,1547.95556942866,2903.21907655056,73.9517467027854,88.5227006166675,74.6478892021125,56.7981925909538,71.6556736223952,0,83.3088515079855,2649.44495818173,0,1619.23252996074,0,43.1517543053109,0,0,45.1723379169622,38.679484944916,0,0,929.889715773879,72.0447276257703,75.8400611941316,82.4638319786558,86.2316979286839,75.055379934728,0,0,0,0,54.8098818499027,0,0,3070.79241465091,0,1366.78663731564,83.6140906508117,1899.05908313884,48.1124602524732,0,2425.16999532879,2442.90331737662,905.128943747711,2486.92644154003,1547.96364084211,2903.22079180324,73.9926352094247,88.5431502753432,74.6768211579215,56.8012351885857,71.6562913174246,0,83.3104108132321,2649.44524729013,0,1619.23350037179,0,43.1606767622803,0,0,45.1762471242149,38.7076881966433,0,0,929.903885358806,72.0477211920243,75.8423126834779,82.4670199470251,86.2397288455595,75.0574361160991],"Archive439_field18":[9158746.83460644,8527505.58876552,2186156.43522866,2800321.18720486,5677705.86077446,8837594.52928646,5424412.33322377,2574594.26791245,6038017.7276992,3865289.79958593,7444497.83937098,4171343.48581877,5541313.48428662,3715294.93198955,2393734.0817474,3167107.01543162,3018763.53486795,3669105.67587191,4262516.2240159,2726093.39834509,4870394.88442834,5576785.86834529,5200016.14623793,6093484.91988889,7005902.08093306,6994594.48667565,6794863.25587302,3349455.41744964,4344753.96453189,3468551.42011849,7596240.58135149,6235685.62534007,8989417.33367266,6152204.49912922,5851780.32544293,4912822.03884851,8678452.65509811,5100444.37998392,4635663.0904644,6655131.99264254,8095407.63016333,7785713.35967176,8308329.90852617,7711336.46157826,6105831.22307096,5685003.72584368,1457437.62348577,1866880.79146991,3785137.2405163,5891729.68619098,3616274.88881584,1716396.1786083,4025345.15179947,2576859.86639062,4962998.55958066,2780895.65721252,3694208.98952442,2476863.28799303,1595822.72116493,2111404.67695441,2012509.0232453,2446070.45058127,2841677.48267727,1817395.59889673,3246929.92295223,3717857.24556353,3466677.43082529,4062323.27992593,4670601.3872887,4663062.9911171,4529908.83724868,2232970.27829976,2896502.64302126,2312367.61341232,5064160.38756766,4157123.75022671,5992944.8891151,4101469.66608615,3901186.88362862,3275214.69256567,5785635.10339874,3400296.25332261,3090442.0603096,4436754.66176169,5396938.42010889,5190475.57311451,5538886.60568411,5140890.97438551,3052915.61153548,2842501.86292184,728718.811742886,933440.395734953,1892568.62025815,2945864.84309549,1808137.44440792,858198.08930415,2012672.57589973,1288429.93319531,2481499.27979033,1390447.82860626,1847104.49476221,1238431.64399652,797911.360582467,1055702.33847721,1006254.51162265,1223035.22529064,1420838.74133863,908697.799448365,1623464.96147611,1858928.62278176,1733338.71541264,2031161.63996296,2335300.69364435,2331531.49555855,2264954.41862434,1116485.13914988,1448251.32151063,1156183.80670616,2532080.19378383,2078561.87511336,2996472.44455755,2050734.83304307,1950593.44181431,1637607.34628284,2892817.55169937,1700148.12666131,1545221.0301548,2218377.33088085,2698469.21005445,2595237.78655725,2769443.30284205,2570445.48719275,0,0,9.58781853910296e-11,-1.27837580521373e-10,0,0,0,-9.58781853910296e-11,0,6.39187902606864e-11,0,-1.91756370782059e-10,0,-1.91756370782059e-10,6.39187902606864e-11,-1.27837580521373e-10,-6.39187902606864e-11,-1.27837580521373e-10,6.39187902606864e-11,-6.39187902606864e-11,0,0,0,0,0,0,0,1.91756370782059e-10,0,1.91756370782059e-10,0,0,0,0,0,0,0,-1.91756370782059e-10,0,0,0,0,0,0],"Archive439_field19":[-582.649071358749,-582.649071358749,-223.260276085008,-283.92906357412,-582.649071358749,-582.649071358749,-582.649071358749,-264.852274250889,-582.649071358749,-387.038802518291,-582.649071358749,-416.637569378717,-582.649071358749,-373.424238856632,-245.977346977486,-320.082786226585,-305.230818644349,-367.785069596294,-424.989097083557,-279.638920413341,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-337.52404145954,-436.629390505828,-349.92111703961,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545455,-582.649071358749,-509.403168699391,-463.4448366024,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-223.260276085008,-283.92906357412,-582.649071358749,-582.649071358749,-582.649071358749,-264.852274250889,-582.649071358749,-387.03880251829,-582.649071358749,-416.637569378717,-582.649071358749,-373.424238856632,-245.977346977486,-320.082786226585,-305.230818644349,-367.785069596294,-424.989097083557,-279.638920413341,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-337.52404145954,-436.629390505828,-349.92111703961,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545454,-582.649071358749,-509.403168699391,-463.4448366024,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-223.260276085008,-283.92906357412,-582.649071358749,-582.649071358749,-582.649071358749,-264.852274250889,-582.649071358749,-387.03880251829,-582.649071358749,-416.637569378717,-582.649071358749,-373.424238856632,-245.977346977486,-320.082786226585,-305.230818644349,-367.785069596294,-424.989097083557,-279.638920413341,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-337.52404145954,-436.629390505828,-349.92111703961,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545454,-582.649071358749,-509.403168699391,-463.4448366024,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-223.260276085008,-283.92906357412,-582.649071358749,-582.649071358749,-582.649071358749,-264.852274250889,-582.649071358749,-387.038802518291,-582.649071358749,-416.637569378717,-582.649071358749,-373.424238856632,-245.977346977486,-320.082786226585,-305.230818644349,-367.785069596294,-424.989097083557,-279.638920413341,-469.900873655914,-541.042535358626,-500.444699789458,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-337.52404145954,-436.629390505828,-349.92111703961,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-468.920454545455,-582.649071358749,-509.403168699391,-463.4448366024,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749,-582.649071358749],"Archive439_field20":[444.847450165846,374.903671534544,25.8076218811459,32.8205896825046,57.8508925482299,409.152188612957,31.3580458602103,30.6154210148247,99.5319813564171,44.739490803641,254.900563544529,48.1609404080088,42.3440313186404,43.1657244479858,28.4335864554128,36.9997550054723,35.2829517735016,42.5138684593317,49.1263296519706,32.3246734610842,77.8164224709469,86.8435009339203,84.6608104465332,105.41581584677,206.25819403898,205.166471453356,182.971320687248,39.0158652068825,50.4718815633782,40.4488968442734,271.727775669844,121.676272268314,425.917984835973,110.994976941892,78.2512728327747,86.2663028526455,391.356869842445,58.8841176468216,53.5715950707245,167.146345480466,327.073122342477,292.709547568077,350.972336966014,284.373860914792,444.847450165846,374.903671534544,25.8076218811459,32.8205896825046,57.8508925482299,409.152188612957,31.3580458602103,30.6154210148247,99.5319813564171,44.739490803641,254.900563544529,48.1609404080088,42.3440313186404,43.1657244479858,28.4335864554128,36.9997550054723,35.2829517735016,42.5138684593317,49.1263296519706,32.3246734610842,77.8164224709469,86.8435009339203,84.6608104465332,105.41581584677,206.25819403898,205.166471453356,182.971320687248,39.0158652068825,50.4718815633782,40.4488968442734,271.727775669844,121.676272268314,425.917984835973,110.994976941892,78.2512728327747,86.2663028526455,391.356869842445,58.8841176468216,53.5715950707245,167.146345480466,327.073122342477,292.709547568077,350.972336966014,284.373860914792,444.847450165846,374.903671534544,25.8076218811459,32.8205896825046,57.8508925482299,409.152188612957,31.3580458602103,30.6154210148247,99.5319813564171,44.739490803641,254.900563544529,48.1609404080088,42.3440313186404,43.1657244479858,28.4335864554128,36.9997550054723,35.2829517735016,42.5138684593317,49.1263296519706,32.3246734610842,77.8164224709469,86.8435009339203,84.6608104465332,105.41581584677,206.25819403898,205.166471453356,182.971320687248,39.0158652068825,50.4718815633782,40.4488968442734,271.727775669844,121.676272268314,425.917984835973,110.994976941892,78.2512728327747,86.2663028526455,391.356869842445,58.8841176468216,53.5715950707245,167.146345480466,327.073122342477,292.709547568077,350.972336966014,284.373860914792,444.847450165846,374.903671534544,25.8076218811459,32.8205896825046,57.8508925482299,409.152188612957,31.3580458602103,30.6154210148247,99.5319813564171,44.739490803641,254.900563544529,48.1609404080088,42.3440313186404,43.1657244479858,28.4335864554128,36.9997550054723,35.2829517735016,42.5138684593317,49.1263296519706,32.3246734610842,77.8164224709469,86.8435009339203,84.6608104465332,105.41581584677,206.25819403898,205.166471453356,182.971320687248,39.0158652068825,50.4718815633782,40.4488968442734,271.727775669844,121.676272268314,425.917984835973,110.994976941892,78.2512728327747,86.2663028526455,391.356869842445,58.8841176468216,53.5715950707245,167.146345480466,327.073122342477,292.709547568077,350.972336966014,284.373860914792],"Archive439_field21":[1027.49652152459,957.552742893292,249.067897966154,316.749653256624,640.499963906979,991.801259971706,614.007117218959,295.467695265714,682.181052715166,431.778293321931,837.549634903278,464.798509786726,624.993102677389,416.589963304618,274.410933432899,357.082541232058,340.513770417851,410.298938055626,474.115426735528,311.963593874426,547.717296126861,627.886036292547,585.105510235991,688.064887205519,788.907265397728,787.815542812105,765.620392045997,376.539906666423,487.101272069206,390.370013883883,854.376847028592,704.325343627063,1008.56705619472,693.64404830064,660.900344191523,555.1867573981,974.005941201194,568.287286346213,517.016431673125,749.795416839215,909.722193701226,875.358618926826,933.621408324762,867.022932273541,1027.49652152459,957.552742893292,249.067897966154,316.749653256624,640.499963906979,991.801259971706,614.007117218959,295.467695265714,682.181052715166,431.778293321931,837.549634903278,464.798509786726,624.993102677389,416.589963304618,274.410933432899,357.082541232058,340.513770417851,410.298938055626,474.115426735528,311.963593874426,547.717296126861,627.886036292547,585.105510235991,688.064887205519,788.907265397728,787.815542812105,765.620392045997,376.539906666423,487.101272069206,390.370013883883,854.376847028592,704.325343627063,1008.56705619472,693.64404830064,660.900344191523,555.1867573981,974.005941201194,568.287286346213,517.016431673125,749.795416839215,909.722193701226,875.358618926826,933.621408324762,867.022932273541,1027.49652152459,957.552742893292,249.067897966154,316.749653256624,640.499963906979,991.801259971706,614.007117218959,295.467695265714,682.181052715166,431.778293321931,837.549634903278,464.798509786726,624.993102677389,416.589963304618,274.410933432899,357.082541232058,340.513770417851,410.298938055626,474.115426735528,311.963593874426,547.717296126861,627.886036292547,585.105510235991,688.064887205519,788.907265397728,787.815542812105,765.620392045997,376.539906666423,487.101272069206,390.370013883883,854.376847028592,704.325343627063,1008.56705619472,693.64404830064,660.900344191523,555.1867573981,974.005941201194,568.287286346213,517.016431673125,749.795416839215,909.722193701226,875.358618926826,933.621408324762,867.022932273541,1027.49652152459,957.552742893292,249.067897966154,316.749653256624,640.499963906979,991.801259971706,614.007117218959,295.467695265714,682.181052715166,431.778293321931,837.549634903278,464.798509786726,624.993102677389,416.589963304618,274.410933432899,357.082541232058,340.513770417851,410.298938055626,474.115426735528,311.963593874426,547.717296126861,627.886036292547,585.105510235991,688.064887205519,788.907265397728,787.815542812105,765.620392045997,376.539906666423,487.101272069206,390.370013883883,854.376847028592,704.325343627063,1008.56705619472,693.64404830064,660.900344191523,555.1867573981,974.005941201194,568.287286346213,517.016431673125,749.795416839215,909.722193701226,875.358618926826,933.621408324762,867.022932273541]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive450.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive450.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive450.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive450_field1":[0,0,0,0,445.430324093775,0,0,268.275595460932,0,122.742165199256,31.4276332871812,417.55437438186,144.860668589607,0,625.935976383308,372.673665456879,122.605804267967,310.236674669695,241.312370522411,-302.416956038872,406.79293512244,274.00261260421,298.087039312884,128.964828977695,39.4267619125547,0,25.6697504067361,199.917403152822,0,254.994637573802,0,208.226298723887,0,0,108.498853526752,109.049275948648,0,0,279.996136475284,87.5710837878446,20.9019374401419,-1.10891832004601,41.9366175675251,26.4541394705915],"Archive450_field2":[0,0,0,0,2567.70274182713,0,0,4289.09579845317,0,2694.68884505093,329.929336063605,2602.70999289135,2221.18112784963,0,3802.52730717061,3819.84156926109,1687.72872748111,3698.30916311227,3090.22471234875,3755.95934586101,2546.82137406997,1476.20971127838,2485.84356392916,1321.29565707904,330.198898033313,0,547.901672990239,3606.90886443676,0,2139.94877375168,0,755.579461076662,0,0,1642.44533409165,1291.2139621905,0,0,1377.56938141818,510.805667927521,220.377541186767,249.330358461041,195.492154452884,248.84295889075],"Archive450_field3":[0,0,0,0,2606.05171552846,0,0,4297.47769783958,0,2697.48282863111,331.422785772802,2635.99145724373,2225.89986657521,0,3853.7007886328,3837.97801911112,1692.17624401397,3711.29862181289,3099.63230609343,3768.114465228,2579.10441887977,1501.42350567271,2503.65215382136,1327.5745329469,332.544405782632,0,548.502670322986,3612.44495105958,0,2155.08770574951,0,783.74645994808,0,0,1646.02511423613,1295.81065003365,0,0,1405.7365461074,518.257778622433,221.366554945134,249.332824453885,199.939646757803,250.245159163235],"Archive450_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive450_field5":[0,0,0,0,389.709055860096,0,0,309.387158142525,0,150.14722896207,29.6328374825939,405.735979931981,81.787722771753,0,621.206171611865,393.356318324049,115.078501219309,317.511045201606,240.418046055387,-258.03380411243,372.531577329281,253.752111275348,245.407033388733,118.063950580838,40.4615702514884,0,23.25012635872,213.641604718734,0,258.85124835698,0,211.88751911161,0,0,11.5014097983376,124.592709112953,0,0,271.538477635937,86.799529117935,19.1035051432223,-9.31069043509327,43.7212263090834,27.3409473799244],"Archive450_field6":[0,0,0,0,2462.27100847982,0,0,4062.93132420159,0,2430.43916520355,330.905560231794,2500.53888260987,2032.90510967162,0,3555.26098669534,3577.09773396042,1549.33197260941,3516.50682959847,2884.44209488639,3618.50007866122,2418.70006361329,1417.51435033412,2279.90985854556,1304.97216463316,330.601009014759,0,571.340684172529,3458.42840328629,0,2066.86720137364,0,755.786666992911,0,0,1433.50846114572,1153.31001818763,0,0,1331.9827051966,503.018609350328,216.871475730742,243.423892644567,183.177282090598,236.197598750666],"Archive450_field7":[0,0,0,0,2492.92030907921,0,0,4074.69402026729,0,2435.07263261701,332.229732037317,2533.24226809344,2034.54968396576,0,3609.12424158085,3598.66049961236,1553.59989147548,3530.81202366222,2894.44416695532,3627.68855655168,2447.22082653576,1440.04759205377,2293.07949603364,1310.30204414635,333.067809655621,0,571.813558571699,3465.02088823779,0,2083.013201324,0,784.92662508003,0,0,1433.5545997986,1160.0204055171,0,0,1359.3789286949,510.452622294991,217.711232816286,243.601889291959,188.322760982491,237.774752779206],"Archive450_field8":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743],"Archive450_field9":[0,0,0,0,472.934423559558,0,0,245.79985910088,0,201.769396134182,24.6018154188213,388.278022253897,254.502397964079,0,786.497587618431,336.875727078946,193.920266506081,291.692360993343,307.813374872512,-396.130249063353,381.061734378823,316.06043480056,364.122880028964,145.461922531842,23.8676295993416,0,57.5478396060459,143.029903442142,0,137.560226834725,0,200.210608196612,0,0,33.1737427037244,224.055768019891,0,0,371.101990507854,27.7159089674714,21.4425391707326,23.3048956724359,18.9579498910595,23.7100273079283],"Archive450_field10":[0,0,0,0,2871.89266496676,0,0,4297.12078982369,0,2915.3208158354,238.271904154624,2806.29985886707,2319.71145851928,0,3672.23629402447,3909.7480115891,2400.79229579245,3792.18638757874,3262.17856356371,3592.4447219328,2740.43245060253,1519.08625217032,2680.90328726582,1450.41214355899,290.449255436999,0,272.549686092462,3646.78993470577,0,2647.97881770783,0,756.388570104928,0,0,1854.7958617534,1591.87161188091,0,0,1754.55426107946,417.918925030549,185.152282694141,189.019650689546,155.783417463776,224.772680461654],"Archive450_field11":[0,0,0,0,2910.57287283406,0,0,4304.14505483597,0,2922.29470595618,239.538618246353,2833.03348381955,2333.63080228109,0,3755.51565760019,3924.23429086744,2408.61136701174,3803.3882304597,3276.66874345348,3614.21889961937,2766.79924492602,1551.61762041399,2705.51804788533,1457.68808635114,291.428265147014,0,278.558943910302,3649.59372823195,0,2651.5494781422,0,782.437190207518,0,0,1855.09250065394,1607.5621965869,0,0,1793.37038629252,418.836960533073,186.389780494906,190.450903145931,156.93271494741,226.019740900789],"Archive450_field12":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3603930.35625,4204116.8859375,2541305.025,4715751.3046875,5429702.69912109,5022277.84254808,5956065.09726088,6858961.84767369,6791806.35,6646492.21660117,3289078.40625,4272990.75,3387469.640625,7421510.25,6096344.36545874,8838344.025,6004676.475,5689824.525,4705912.18125,8523492.075,5060120.625,4587842.7,6497298.0368145,7919574.94620672,7614345.94462368,8129927.1375,7539856.90713743]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive455.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive455.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive455.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive455_field1":[0,0,0,0,463.474527507037,0,0,409.526318140367,0,426.536388939494,48.6958099021838,567.106511924539,476.484734862872,12.5731348740053,0,0,37.2299276834411,359.83240489056,12.3623154112578,0,380.000470713177,0,594.937174324685,505.797845295657,0,0,-11.3404454622844,0,0,0,0,463.475377213835,0,0,409.526560240285,0,426.535546189253,48.7050456459633,567.106034132377,476.485246373393,12.5821699827405,0,0,37.2388049986933,359.845062318831,12.3653539724495,0,379.999738570539,0,594.937029694457,505.797873579136,0,0,-11.3398077375397,0,0,0,0,463.475941701434,0,0,409.526731399494,0,426.534942799435,48.7115323887761,567.105682017209,476.485631366624,12.5884831777393,0,0,37.2451357844914,359.853888608991,12.3676638316624,0,379.999207723648,0,594.936944851736,505.797909274297,0,0,-11.3393657146865,0,0,0,0,463.476220226689,0,0,409.526831472669,0,426.534579118731,48.7152828650523,567.105455955537,476.485888906113,12.592090755724,0,0,37.2489357789536,359.858880760578,12.3692460108649,0,379.998878757091,0,594.936919682376,505.797952454608,0,0,-11.3391195211759,0,0,0,0,463.476212349117,0,0,409.526860374256,0,426.534455352457,48.7163046673326,567.105356168619,476.48601844088,12.5930023095184,0,0,37.2502142806869,359.860036995502,12.3701011552695,0,379.998752017287,0,594.936954119342,505.798003164378,0,0,-11.33906923188],"Archive455_field2":[0,0,0,0,2633.09548647299,0,0,3957.08441220809,0,2440.49130900333,400.416898411119,2590.88647199582,2565.8259314683,284.15805276581,0,0,359.05302502638,1561.3913321382,710.495752278107,0,1308.89242261576,0,3233.43206467343,2911.22762167637,0,0,3228.82011757389,0,0,0,0,2633.1006940431,0,0,3957.08641808939,0,2440.49015839015,400.486596851373,2590.88283707586,2565.82467078394,284.249429446755,0,0,359.116503844756,1561.44683192173,710.586276325518,0,1308.8851310217,0,3233.43334984732,2911.22787751856,0,0,3228.82296808491,0,0,0,0,2633.10429116862,0,0,3957.08801940282,0,2440.48930472439,400.535987744862,2590.88006294617,2565.82348213884,284.313834081803,0,0,359.161221641815,1561.48573609944,710.650305158362,0,1308.88003783338,0,3233.43491219657,2911.22810156555,0,0,3228.82599035038,0,0,0,0,2633.10621005388,0,0,3957.08897689583,0,2440.48887494012,400.565170664211,2590.87837277801,2565.8223247418,284.351426753348,0,0,359.187308153154,1561.50798729838,710.687880565752,0,1308.87709730395,0,3233.43605632432,2911.22827346129,0,0,3228.82816144783,0,0,0,0,2633.10639227054,0,0,3957.08907800566,0,2440.4889809438,400.574205318722,2590.87796429207,2565.82116556176,284.362303829902,0,0,359.194841278472,1561.51354228568,710.69902799436,0,1308.87626730998,0,3233.43616364095,2911.22837493006,0,0,3228.82857119746],"Archive455_field3":[0,0,0,0,-3.04455225304399,0,0,-1.82774710312515,0,-5.02607767266105,-8.78894998102512,-4.45114772520536,-3.96630786515207,-6.83139842486755,0,0,-5.49149135972095,-4.38317365914734,-8.03740162290758,0,-6.40654936023628,0,-3.55761161469029,-2.35765411296742,0,0,-3.83441789982437,0,0,0,0,-3.97341798947577,0,0,-2.3839141044534,0,-4.73741857095406,-9.28391490411419,-4.71281320660249,-4.61951262014488,-8.16947467902054,0,0,-6.58533004450868,-5.78893728285147,-8.88252387412592,0,-7.20462364672723,0,-3.9089270072476,-2.48033761113985,0,0,-4.11251358470765,0,0,0,0,-4.90224962189561,0,0,-2.94007852788274,0,-4.44877205543138,-9.77893252979501,-4.97447921918701,-5.27265325549526,-9.50758161130839,0,0,-7.67917481778075,-7.19466223918782,-9.72766266575549,0,-8.00268649522727,0,-4.260238023052,-2.60302582391636,0,0,-4.39061366434091,0,0,0,0,-5.83105808968117,0,0,-3.49624157462524,0,-4.16013392144558,-10.2739807432486,-5.23614568539908,-5.92575071175371,-10.8457030015881,0,0,-8.77301930631161,-8.60035897047261,-10.572806543788,0,-8.80074183046171,0,-4.6115469011387,-2.72571719723815,0,0,-4.66871783797954,0,0,0,0,-6.75985641216886,0,0,-4.0524036235592,0,-3.87150001510886,-10.7690350015868,-5.4978130088256,-6.5788283951739,-12.1838207630725,0,0,-9.86685538341567,-10.0060383714236,-11.4179426937046,0,-9.59879504140983,0,-4.96285440134416,-2.84840993495393,0,0,-4.94682349843952],"Archive455_field4":[0,0,0,0,2673.57620946752,0,0,3978.21972636622,0,2477.48993577513,403.462786483436,2652.22968827254,2609.6965618153,284.518102546492,0,0,361.019803851898,1602.32376999686,710.648746338448,0,1362.95296162336,0,3287.71133386922,2954.84065290332,0,0,3228.84230957689,0,0,0,0,2673.58270459402,0,0,3978.22204091429,0,2477.4880884672,403.544157193381,2652.22648731438,2609.69649022868,284.645023597483,0,0,361.102144140971,1602.38515644289,710.749363215615,0,1362.94974013177,0,3287.71297057953,2954.84101024625,0,0,3228.84550005728,0,0,0,0,2673.58788685877,0,0,3978.22402349262,0,2477.48660853613,403.605647120847,2652.22417992742,2609.69662973807,284.751154988188,0,0,361.168870470211,1602.43074369964,710.824480973513,0,1362.9491532337,0,3287.71492824259,2954.84134262986,0,0,3228.8488869356,0,0,0,0,2673.59168935317,0,0,3978.22543610486,0,2477.48562106922,403.647357744582,2652.22298420118,2609.69694006633,284.836661825447,0,0,361.220114919867,1602.46047521719,710.874142213747,0,1362.95115714402,0,3287.71652292349,2954.8416300103,0,0,3228.85144729769,0,0,0,0,2673.59405446829,0,0,3978.22606730875,0,2477.48523632802,403.669350362437,2652.22309333081,2609.69738866356,284.901648003313,0,0,361.255958151809,1602.47430861523,710.898373334808,0,1362.95571150652,0,3287.7171462341,2954.84185438783,0,0,3228.85227096793],"Archive455_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,2136495.375,2570400.71859375,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2248942.5,2091516.525,517256.775,674682.75,1383099.6375,2170229.5125,1304386.65,595969.7625,1461812.625,950178.20625,1816021.06875,1028891.19375,1343743.14375,1756986.328125,1697951.5875,2130873.01875,1688112.4640625,1466732.18671875,1629077.7234375,1068247.6875,1285200.35929688,910821.7125,556613.26875,989534.7,1855377.5625,2209586.00625,635326.25625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive455_field6":[0,0,0,0,463.47467665181,0,0,409.52635501474,0,426.536467978612,48.6958091647749,567.106694173627,476.484962824333,12.5731188906082,0,0,37.2299238362724,359.832400319725,12.3623214849407,0,380.000676927436,0,594.937182522501,505.797977869542,0,0,-11.3404034754105,0,0,0,0,463.475526361237,0,0,409.526597114975,0,426.535625226917,48.7050448942417,567.106216381828,476.48547433874,12.5821539826261,0,0,37.2388011424866,359.8450577602,12.3653600405644,0,379.999944782865,0,594.937037892771,505.79800615253,0,0,-11.3397657509109,0,0,0,0,463.476090850741,0,0,409.526768274418,0,426.535021836036,48.7115316270621,567.105864266888,476.485859334862,12.5884671659623,0,0,37.2451319220052,359.853884059152,12.3676698959561,0,379.999413934571,0,594.936953050415,505.798041847343,0,0,-11.3393237282255,0,0,0,0,463.476369377183,0,0,409.526868347746,0,426.534658154661,48.7152820976151,567.105638205302,476.486116876263,12.5920747373118,0,0,37.2489319129424,359.858876216124,12.3692520730837,0,379.999084967142,0,594.936927881286,505.798085027448,0,0,-11.3390775347998,0,0,0,0,463.476361500084,0,0,409.526897249408,0,426.534534388114,48.7163038984111,567.105538418326,476.486246411981,12.5929862894817,0,0,37.2502104139033,359.860032453027,12.3701072171594,0,379.998958226995,0,594.936962318351,505.798135737151,0,0,-11.3390272455012],"Archive455_field7":[0,0,0,0,2633.09620520333,0,0,3957.08526832581,0,2440.49235865089,400.416897190286,2590.88717597923,2565.82699154973,284.157962239313,0,0,359.052980212289,1561.39137552887,710.495700133752,0,1308.89280952988,0,3233.43316303705,2911.2284480809,0,0,3228.82090638131,0,0,0,0,2633.10141278766,0,0,3957.08727420993,0,2440.49120802648,400.48659549293,2590.88354105439,2565.82573090814,284.249338748023,0,0,359.116458944695,1561.4468753792,710.586224112438,0,1308.88551792625,0,3233.43444821495,2911.22870392261,0,0,3228.82375689348,0,0,0,0,2633.10500992393,0,0,3957.08887552547,0,2440.49035435232,400.535986290132,2590.88076692077,2565.82454229495,284.313743262699,0,0,359.161176681765,1561.48577960839,710.650252897834,0,1308.88042473042,0,3233.43601056729,2911.22892796924,0,0,3228.82677916005,0,0,0,0,2633.10692881648,0,0,3957.08983301994,0,2440.48992456247,400.565169154102,2590.87907674969,2565.82338491902,284.351335865524,0,0,359.187263159068,1561.50803084361,710.687828279071,0,1308.87748419547,0,3233.43715469712,2911.22909986477,0,0,3228.82895025842,0,0,0,0,2633.10711103698,0,0,3957.08993413061,0,2440.49003056338,400.574203793903,2590.87866826187,2565.82222574925,284.362212924883,0,0,359.194796276286,1561.51358585211,710.698975702833,0,1308.87665419793,0,3233.43726201476,2911.22920133344,0,0,3228.82936000866],"Archive455_field8":[0,0,0,0,-3.04455189406941,0,0,-1.82774663250023,0,-5.02607681410889,-8.78894997490388,-4.45114723938894,-3.96630745693185,-6.83139853667621,0,0,-5.49149139628062,-4.38317367253085,-8.03740167210582,0,-6.40654910449596,0,-3.55761100525391,-2.35765349854107,0,0,-3.83441740134575,0,0,0,0,-3.9734181090115,0,0,-2.38391367066848,0,-4.7374175556214,-9.28391482293852,-4.71281280051115,-4.61951272698491,-8.16947519913076,0,0,-6.5853302864059,-5.78893773846789,-8.88252423065719,0,-7.20462375845903,0,-3.90892648454419,-2.48033690560218,0,0,-4.11251310474268,0,0,0,0,-4.90225021996886,0,0,-2.94007813095265,0,-4.44877088328667,-9.77893237353085,-4.97447889279285,-5.27265387748648,-9.50758253968282,0,0,-7.67917526505433,-7.19466313714746,-9.72766332962562,0,-8.00268697438289,0,-4.26023758710143,-2.60302502726566,0,0,-4.39061320290371,0,0,0,0,-5.83105916631097,0,0,-3.49624121455962,0,-4.16013259246823,-10.273980511881,-5.23614543868408,-5.92575184895649,-10.8457043382126,0,0,-8.77301995899201,-8.60036031084698,-10.5728075150049,0,-8.80074267701105,0,-4.61154655195389,-2.72571630947304,0,0,-4.66871739507921,0,0,0,0,-6.75985796735933,0,0,-4.05240330036347,0,-3.87149852928826,-10.7690346951305,-5.49781284177943,-6.5788300476118,-12.1838225079635,0,0,-9.86685624153202,-10.0060401542434,-11.4179439722831,0,-9.59879625533126,0,-4.96285413893265,-2.84840895607453,0,0,-4.94682307408234],"Archive455_field9":[0,0,0,0,2673.57694316994,0,0,3978.2205817313,0,2477.49098335336,403.462785182685,2652.23041494172,2609.69764569724,284.518011430916,0,0,361.019758885766,1602.32381125265,710.648694311533,0,1362.95339068354,0,3287.71241558194,2954.84148980321,0,0,3228.84309823083,0,0,0,0,2673.58343831115,0,0,3978.2228962821,0,2477.48913603418,403.544155752636,2652.22721397884,2609.69757415374,284.644932332476,0,0,361.102099094546,1602.38519776802,710.749311124543,0,1362.95016918285,0,3287.71405229622,2954.84184714545,0,0,3228.84628871228,0,0,0,0,2673.58862058732,0,0,3978.22487886245,0,2477.48765609473,403.605645581463,2652.22490658808,2609.69771369561,284.751063631701,0,0,361.168825371278,1602.43078507913,710.824428840389,0,1362.94958227805,0,3287.71600996232,2954.84217952852,0,0,3228.8496755916,0,0,0,0,2673.59242308984,0,0,3978.22629147603,0,2477.4866686223,403.647356147496,2652.22371085899,2609.69802404571,284.836570435206,0,0,361.22006979618,1602.46051663624,710.874090060693,0,1362.95158618397,0,3287.71760464524,2954.84246690856,0,0,3228.8522359545,0,0,0,0,2673.5947882098,0,0,3978.22692268064,0,2477.48628387844,403.669348748337,2652.22381998676,2609.69847265415,284.901556636901,0,0,361.2559130311,1602.47435005911,710.898321183961,0,1362.95614054434,0,3287.71822795679,2954.84269128583,0,0,3228.85305962525],"Archive455_field10":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,2136495.375,2570400.71859375,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2248942.5,2091516.525,517256.775,674682.75,1383099.6375,2170229.5125,1304386.65,595969.7625,1461812.625,950178.20625,1816021.06875,1028891.19375,1343743.14375,1756986.328125,1697951.5875,2130873.01875,1688112.4640625,1466732.18671875,1629077.7234375,1068247.6875,1285200.35929688,910821.7125,556613.26875,989534.7,1855377.5625,2209586.00625,635326.25625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive455_field11":[0,0,0,0,460.770936066953,0,0,411.950161153844,0,412.174484212598,48.6770941082226,558.56888110253,474.616586007897,12.7917104702599,0,0,37.3084697255481,360.919480310189,12.3548033784775,0,385.226397039004,0,590.278231858929,495.177837075569,0,0,-8.09372248755305,0,0,0,0,460.771827637324,0,0,411.950410222031,0,412.173614034716,48.6863575885413,558.568385693794,474.617127220844,12.8007644742787,0,0,37.317416077689,360.931999513296,12.3578160112985,0,385.225683125245,0,590.278104920424,495.177873267612,0,0,-8.09308151850381,0,0,0,0,460.77241795274,0,0,411.950586272006,0,412.172990963141,48.6928636018113,558.568020959777,474.617534925026,12.8070908247971,0,0,37.3237952729484,360.940730306277,12.3601073927307,0,385.225165193908,0,590.278032496002,495.177914881435,0,0,-8.09263703099433,0,0,0,0,460.772706177345,0,0,411.950689149537,0,412.172615356584,48.6966249286214,558.567787298238,474.617808111135,12.8107057445636,0,0,37.3276233742757,360.945669660072,12.3616785099407,0,385.224843818341,0,590.278014469566,495.177961998379,0,0,-8.09238915954926,0,0,0,0,460.77269181599,0,0,411.950718763825,0,412.17248742637,48.6976491919273,558.567684943019,474.617946185045,12.8116187859029,0,0,37.3289098702657,360.946815779416,12.3625299869345,0,385.224719338553,0,590.278050772916,495.178014667301,0,0,-8.09233798330331],"Archive455_field12":[0,0,0,0,2616.21451809791,0,0,3912.2440186056,0,2411.09367287529,400.448920075534,2569.0250398561,2551.10150658519,285.808272926138,0,0,360.459576587813,1560.53835438974,710.63640454607,0,1313.54070038242,0,3192.85028977411,2925.94038020856,0,0,3210.95069152133,0,0,0,0,2616.22004805959,0,0,3912.24598683355,0,2411.09255464739,400.518784232859,2569.02131492737,2551.10002403936,285.899936338461,0,0,360.523623205658,1560.59297271015,710.726570257169,0,1313.53357863737,0,3192.85154930135,2925.94068541866,0,0,3210.95360443831,0,0,0,0,2616.22385864625,0,0,3912.24755775425,0,2411.091720692,400.568292161138,2569.01847535927,2551.09865165478,285.964546747224,0,0,360.568739679254,1560.6312596811,710.790348606754,0,1313.52860671195,0,3192.85308521161,2925.94094378972,0,0,3210.95667886282,0,0,0,0,2616.22587937079,0,0,3912.24849561193,0,2411.09130297192,400.597543748217,2569.01674775769,2551.09734704971,286.002263904353,0,0,360.59505856801,1560.65315703661,710.827780153487,0,1313.52573696609,0,3192.85420999461,2925.94113721568,0,0,3210.95888304185,0,0,0,0,2616.22604964805,0,0,3912.24859097846,0,2411.0914178429,400.60659891859,2569.01633285308,2551.09607602298,286.013184087055,0,0,360.60265948734,1560.65862078433,710.838889642863,0,1313.52492560438,0,3192.85431208594,2925.94124940107,0,0,3210.95929895033],"Archive455_field13":[0,0,0,0,-3.05259348432471,0,0,-1.85471663884927,0,-5.0496322738788,-8.78910312831261,-4.46611216710321,-3.97210344957184,-6.82937779039319,0,0,-5.49057809496439,-4.38282652344936,-8.03678255877745,0,-6.40330124060522,0,-3.58151767394294,-2.34920328129083,0,0,-3.84532461595521,0,0,0,0,-3.98233351479673,0,0,-2.38819475601942,0,-4.76100109154793,-9.2866255391626,-4.71858947598301,-4.60891562596364,-8.16054381448023,0,0,-6.57698689004919,-5.77679315868137,-8.87898196727612,0,-7.19143698292741,0,-3.93121921001412,-2.46876036949007,0,0,-4.1371000140537,0,0,0,0,-4.91203942123746,0,0,-2.92167023655721,0,-4.47238257838046,-9.78419562014841,-4.97106764280325,-5.24566366740251,-9.49173422619727,0,0,-7.663397086656,-7.17071836855594,-9.72119156344281,0,-7.9795620595236,0,-4.28091632342868,-2.58832200349276,0,0,-4.42887977731519,0,0,0,0,-5.84172230321378,0,0,-3.45514440951515,0,-4.18377244524099,-10.2818011332329,-5.22354612365819,-5.88236857553293,-10.8229454198816,0,0,-8.74981167815506,-8.56461750091508,-10.5634122943046,0,-8.76767938241855,0,-4.6306113384263,-2.70788670687188,0,0,-4.72066388985878,0,0,0,0,-6.77139493823121,0,0,-3.9886175155588,0,-3.89516661494349,-10.7794077284993,-5.47602570613064,-6.51905366799396,-12.1541466009275,0,0,-9.83621306810175,-9.95849687397179,-11.4056191024567,0,-9.55579511169528,0,-4.98030493726492,-2.82745273885818,0,0,-5.01244941532564],"Archive455_field14":[0,0,0,0,2656.48218111044,0,0,3933.87336303086,0,2446.07563325447,403.492311468611,2629.05093075461,2594.87872129331,286.175884956753,0,0,362.426785316627,1601.73719316159,710.789230719334,0,1368.87893942583,0,3246.957682383,2967.54675070536,0,0,3210.96319478228,0,0,0,0,2656.48901296304,0,0,3933.87563421259,0,2446.07380557372,403.573908166164,2629.04762663866,2594.87841568892,286.302685360809,0,0,362.509488411824,1601.79764829524,710.889449638172,0,1368.8758182951,0,3246.95930241033,2967.54715472894,0,0,3210.96646874744,0,0,0,0,2656.49442458047,0,0,3933.87757496861,0,2446.07233381904,403.635580857992,2629.04523968107,2594.8783501198,286.408513473955,0,0,362.576349728399,1601.84255115469,710.964270194139,0,1368.87526895622,0,3246.96124178242,2967.54751829557,0,0,3210.96993123323,0,0,0,0,2656.49834638889,0,0,3933.87895082341,0,2446.07134811489,403.67743158503,2629.04399139703,2594.87848273485,286.493534460467,0,0,362.627504382722,1601.8718443395,711.013733912937,0,1368.8772458365,0,3246.96282442652,2967.54782356582,0,0,3210.97255049233,0,0,0,0,2656.50071864658,0,0,3933.87955349076,0,2446.0709631795,403.699521630776,2629.04407798463,2594.87877982797,286.557851623591,0,0,362.663034549934,1601.88548470536,711.037866307756,0,1368.88170701258,0,3246.9634489577,2967.54805447958,0,0,3210.97340850073],"Archive455_field15":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,2136495.375,2570400.71859375,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2248942.5,2091516.525,517256.775,674682.75,1383099.6375,2170229.5125,1304386.65,595969.7625,1461812.625,950178.20625,1816021.06875,1028891.19375,1343743.14375,1756986.328125,1697951.5875,2130873.01875,1688112.4640625,1466732.18671875,1629077.7234375,1068247.6875,1285200.35929688,910821.7125,556613.26875,989534.7,1855377.5625,2209586.00625,635326.25625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive455_field16":[0,0,0,0,738.338739104921,0,0,455.819399212856,0,546.717685572251,-4.59970464225105,547.829321702638,464.384554022239,20.7541133896424,0,0,42.8660155710255,491.218972954336,-9.21288599134301,0,511.448799203032,0,937.438118541407,608.307285074936,0,0,-206.095114810119,0,0,0,0,738.337742173883,0,0,455.819353757108,0,546.716905982842,-4.59659001362475,547.82960224709,464.379754146434,20.7635247921599,0,0,42.8731993859633,491.237385233417,-9.21343983113175,0,511.450997914569,0,937.438193959589,608.307282543744,0,0,-206.095100405524,0,0,0,0,738.337029631332,0,0,455.819316607474,0,546.716340597843,-4.5942556844102,547.829792728396,464.376322908191,20.7702477717373,0,0,42.8783145946324,491.250297091096,-9.21403354693495,0,511.452505101984,0,937.438244580148,608.307280912852,0,0,-206.095089404911,0,0,0,0,738.336602011533,0,0,455.819287813643,0,546.715989591149,-4.59269682963808,547.829893272799,464.374260798807,20.7742965924522,0,0,42.8813820640324,491.25771105554,-9.21465483812818,0,511.45332096702,0,937.438270421201,608.307280316211,0,0,-206.095081786893,0,0,0,0,738.336459633293,0,0,455.819267405134,0,546.71585306424,-4.59191053483489,547.829903955016,464.373568073889,20.775679789685,0,0,42.8824142187364,491.259628630363,-9.2152965533619,0,511.453445628708,0,937.438271493865,608.307280835018,0,0,-206.095077539342],"Archive455_field17":[0,0,0,0,3155.43895214491,0,0,4108.12409451343,0,2821.43715287105,83.5356063731852,2867.52424286947,2903.63699410409,68.7664026186522,0,0,306.227165084166,1595.38836435407,303.863892681168,0,1789.77193084849,0,3547.13342989488,3405.06254572394,0,0,3532.76814483044,0,0,0,0,3155.42497404469,0,0,4108.12364332401,0,2821.43162038489,83.5892370597665,2867.52415345432,2903.57355652673,68.8636091949827,0,0,306.289300457108,1595.42946267616,303.956589706738,0,1789.77846658319,0,3547.13328061228,3405.06173900653,0,0,3532.76943916366,0,0,0,0,3155.41493370896,0,0,4108.1238394844,0,2821.4280175786,83.6276993483328,2867.52452004475,2903.52813447516,68.9330817670542,0,0,306.333379325287,1595.45810012229,304.022256495618,0,1789.78302648387,0,3547.13382177282,3405.0612325218,0,0,3532.77172485763,0,0,0,0,3155.40876025502,0,0,4108.12415782666,0,2821.42599810507,83.6510304883047,2867.52483023929,2903.50071577444,68.9749437748099,0,0,306.3595780645,1595.47423621376,304.061075925608,0,1789.78554582563,0,3547.13440314358,3405.0609536172,0,0,3532.77362458959,0,0,0,0,3155.40638995858,0,0,4108.12413079204,0,2821.42525284883,83.6592526393798,2867.52462760551,2903.49128568774,68.9892676709878,0,0,306.368000396684,1595.477830703,304.073155012882,0,1789.78596653752,0,3547.13444587354,3405.0608373586,0,0,3532.77391237386],"Archive455_field18":[0,0,0,0,-2.86604122394494,0,0,-1.73230259620986,0,-4.58673131182521,-8.79209221866485,-4.02687732168503,-3.90080966521731,-6.86554245130332,0,0,-5.52329407336067,-4.32572230658127,-8.04225337685091,0,-5.92372898112974,0,-2.96967049444289,-1.95797130320016,0,0,-3.35376556465172,0,0,0,0,-3.95134805238957,0,0,-2.12650299596188,0,-4.48770042207158,-9.19085433142441,-4.262462804547,-4.27535399207127,-8.18314940457399,0,0,-6.66569623353005,-6.47771874238196,-9.69966395312702,0,-6.86567259963677,0,-3.27712210282936,-2.21643295337799,0,0,-3.77433338864482,0,0,0,0,-5.03655532702384,0,0,-2.52068806607077,0,-4.38870340122349,-9.58969245442853,-4.49807614975612,-4.64977490088334,-9.500859248277,0,0,-7.80823036071386,-8.62958408120424,-11.3571174014925,0,-7.8076287207487,0,-3.58456094310391,-2.47490737674863,0,0,-4.19489309508469,0,0,0,0,-6.12169235175472,0,0,-2.91486286617132,0,-4.28972973487621,-9.9885761810394,-4.73370872152177,-5.02411032374713,-10.8186319141019,0,0,-8.9508482960181,-10.78135663654,-13.0145936565866,0,-8.74959397751031,0,-3.8919922652104,-2.73339095390231,0,0,-4.61544981673024,0,0,0,0,-7.2067970011111,0,0,-3.30903283756694,0,-4.19076673424587,-10.3874715611702,-4.96935111725231,-5.3984074384411,-12.1364180448462,0,0,-10.0934886326348,-12.9330800608438,-14.6720681853747,0,-9.69156535238207,0,-4.1994201556842,-2.99187834394143,0,0,-5.03600450883983],"Archive455_field19":[0,0,0,0,3240.67080842358,0,0,4133.33496120177,0,2873.92221074661,84.1228607485099,2919.38837171457,2940.54009050383,72.157376787487,0,0,309.262152071413,1669.30489257659,304.109882087083,0,1861.42379087203,0,3668.91736272638,3458.97275603883,0,0,3538.77623045323,0,0,0,0,3240.65811240476,0,0,4133.33469176067,0,2873.91647464748,84.2185311871957,2919.38867099454,2940.47721175902,72.3898098307457,0,0,309.347180860552,1669.35655264722,304.250849432628,0,1861.43391507003,0,3668.91749940643,3458.97211740959,0,0,3538.77794532129,0,0,0,0,3240.64967870455,0,0,4133.33510422284,0,2873.91267720015,84.3010171051299,2919.38942033223,2940.43238612506,72.6184500031384,0,0,309.418256754013,1669.39745817446,304.373807964093,0,1861.44242616609,0,3668.91832302701,3458.97179381402,0,0,3538.78070003757,0,0,0,0,3240.64543837818,0,0,4133.3356766282,0,2873.91047839682,84.37037051032,2919.39011644562,2940.40560166104,72.8433735087975,0,0,309.475559107336,1669.42757097885,304.478944107585,0,1861.44926199167,0,3668.91920494562,3458.97171375545,0,0,3538.7831196203,0,0,0,0,3240.64532945805,0,0,4133.33594427454,0,2873.90957476582,84.4266294481404,2919.39031101393,2940.39684389594,73.0646328086442,0,0,309.519194282143,1669.44685316624,304.566371871372,0,1861.45436675173,0,3668.91958553109,3458.97181332346,0,0,3538.7839801656],"Archive455_field20":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,2136495.375,2570400.71859375,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2248942.5,2091516.525,517256.775,674682.75,1383099.6375,2170229.5125,1304386.65,595969.7625,1461812.625,950178.20625,1816021.06875,1028891.19375,1343743.14375,1756986.328125,1697951.5875,2130873.01875,1688112.4640625,1466732.18671875,1629077.7234375,1068247.6875,1285200.35929688,910821.7125,556613.26875,989534.7,1855377.5625,2209586.00625,635326.25625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive455_field21":[0,0,0,0,748.405937861134,0,0,442.855822953463,0,560.398243257937,-4.2013907139761,538.752264102044,469.0126167874,20.4976558851464,0,0,43.6224265381785,497.735802240477,-9.25525013309221,0,509.381487493066,0,890.937761293666,606.238740249834,0,0,-174.957763059093,0,0,0,0,748.40504352774,0,0,442.85578475466,0,560.397506697711,-4.19816244691644,538.752556032442,469.007899221953,20.5071465483672,0,0,43.6296950680089,497.754559609724,-9.25576369810812,0,509.383772509439,0,890.937834267231,606.238765278263,0,0,-174.957743411392,0,0,0,0,748.404405514282,0,0,442.855753150533,0,560.39697223886,-4.19574545710768,538.752755380438,469.004527989166,20.5139268964568,0,0,43.6348723815015,497.767717076694,-9.25632639980078,0,509.385340759876,0,890.937883228355,606.238783863059,0,0,-174.957728651021,0,0,0,0,748.404024332877,0,0,442.855728186232,0,560.396640039763,-4.19413467496644,538.752862261375,469.00250345391,20.5180116036041,0,0,43.6379790876047,497.775277062431,-9.25692515521147,0,509.386192435132,0,890.93790819319,606.238796128607,0,0,-174.957718757789,0,0,0,0,748.403900289829,0,0,442.855709888576,0,560.396510192746,-4.19332704219418,538.752876743511,469.001825796741,20.5194094467318,0,0,43.6390274676919,497.777241007616,-9.25755234414488,0,509.386327648491,0,890.937909171802,606.238802150493,0,0,-174.957713720467],"Archive455_field22":[0,0,0,0,3164.65368639433,0,0,4022.40112677029,0,2857.41225013889,82.2892034885409,2851.79907114581,2934.32384797291,67.8429867419551,0,0,306.822141824706,1607.93177265143,298.600679047073,0,1790.5755586045,0,3522.86352848668,3355.41933428188,0,0,3466.60272033794,0,0,0,0,3164.64069204052,0,0,4022.40068433112,0,2857.40694274656,82.3439402048167,2851.79903883053,2934.26168653306,67.9411366345421,0,0,306.885106961411,1607.9743820522,298.694024370535,0,1790.58235858641,0,3522.86336017731,3355.4186465555,0,0,3466.60394622945,0,0,0,0,3164.63136126378,0,0,4022.40084612555,0,2857.40348178423,82.3831924120033,2851.79941827358,2934.21716753396,68.0112820086204,0,0,306.929781959593,1608.00409156725,298.760154714221,0,1790.587102628,0,3522.86382569961,3355.41822306899,0,0,3466.60608300388,0,0,0,0,3164.62562708706,0,0,4022.4011285939,0,2857.40153927954,82.4069987892943,2851.79972835579,2934.19027780003,68.0535510565314,0,0,306.956341394153,1608.02086034409,298.799265382165,0,1790.58972777382,0,3522.86433702917,3355.41799494696,0,0,3466.60785377811,0,0,0,0,3164.62342923796,0,0,4022.40110122071,0,2857.40082252734,82.4153823511942,2851.79954050843,2934.18100224499,68.0680191008832,0,0,306.964888049406,1608.02464806691,298.811470585312,0,1790.59017753416,0,3522.86437069364,3355.41790064155,0,0,3466.60812197023],"Archive455_field23":[0,0,0,0,-2.85551885149569,0,0,-1.80426231924537,0,-4.54987243841836,-8.79239972904625,-4.0344115596577,-3.88386798913447,-6.86943716665693,0,0,-5.52488519521276,-4.3216085291045,-8.04443267030185,0,-5.9210020259327,0,-2.9889239123022,-1.99352917479618,0,0,-3.39652236445604,0,0,0,0,-3.94919399396433,0,0,-2.18691405018242,0,-4.43323253812321,-9.19030305752103,-4.23888882571169,-4.29194962937077,-8.18663747034985,0,0,-6.66879157339439,-6.48832122667164,-9.72232293542298,0,-6.8523549506673,0,-3.28345095628038,-2.20544421612873,0,0,-3.7952134457618,0,0,0,0,-5.04276610107681,0,0,-2.5695498894902,0,-4.31662730433443,-9.58827774667764,-4.4433947339898,-4.69990446480978,-9.50393446950145,0,0,-7.81282397537674,-8.65489769050409,-11.400251745575,0,-7.78372126323,0,-3.57796499135361,-2.41737283551831,0,0,-4.19389617886222,0,0,0,0,-6.13626989109277,0,0,-2.9521756903992,0,-4.20004502706452,-9.98630437164624,-4.64791904442983,-5.10777444803959,-10.8213023391271,0,0,-8.95694689167596,-10.821385522307,-13.0782113452512,0,-8.7150959737727,0,-3.87247163969416,-2.6293104869954,0,0,-4.59257625767135,0,0,0,0,-7.22973838246715,0,0,-3.33479618723662,0,-4.08347408113162,-10.3843372624903,-4.85245399982728,-5.51560372039688,-12.1386766073795,0,0,-10.1010857996545,-12.9878194305477,-14.7561633453547,0,-9.64647763022029,0,-4.16697461829768,-2.84125250986417,0,0,-4.99125397027325],"Archive455_field24":[0,0,0,0,3251.9459645915,0,0,4046.70673016086,0,2911.85021243016,82.8641719182984,2902.24537569445,2971.57270883935,71.2040301797701,0,0,309.956879529071,1683.21246152535,298.852368368374,0,1861.62976693473,0,3633.77853872615,3409.74607459425,0,0,3471.01659112618,0,0,0,0,3251.93425748886,0,0,4046.70647489921,0,2911.84468258868,82.9615014731183,2902.24568957982,2971.51114341173,71.4392198993009,0,0,310.042726003197,1683.26566924558,298.995506520686,0,1861.64012777583,0,3633.77864764198,3409.74553275793,0,0,3471.01822750015,0,0,0,0,3251.9265422788,0,0,4046.70685713664,0,2911.84100827611,83.0453475041283,2902.24640533024,2971.46726763518,71.6706386714241,0,0,310.114387541087,1683.30768604994,299.120837393766,0,1861.64878099911,0,3633.77938901466,3409.74526298588,0,0,3471.0208196292,0,0,0,0,3251.9227538584,0,0,4046.70739622253,0,2911.83886766132,83.1157655931392,2902.24705020031,2971.44106856287,71.8983671294721,0,0,310.172042000168,1683.33847343336,299.228560248252,0,1861.6556661076,0,3633.78019277504,3409.74519752121,0,0,3471.02309225762,0,0,0,0,3251.92283364288,0,0,4046.70766423127,0,2911.83797351032,83.1727942307909,2902.24720307443,2971.43253135932,72.1224573772925,0,0,310.215794484811,1683.35799338982,299.318795910709,0,1861.66072881385,0,3633.78055143395,3409.74527580792,0,0,3471.02391024845],"Archive455_field25":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,2136495.375,2570400.71859375,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2248942.5,2091516.525,517256.775,674682.75,1383099.6375,2170229.5125,1304386.65,595969.7625,1461812.625,950178.20625,1816021.06875,1028891.19375,1343743.14375,1756986.328125,1697951.5875,2130873.01875,1688112.4640625,1466732.18671875,1629077.7234375,1068247.6875,1285200.35929688,910821.7125,556613.26875,989534.7,1855377.5625,2209586.00625,635326.25625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive455_field26":[0,0,0,0,460.770936150788,0,0,411.950161605533,0,412.174483795928,48.6770940915969,558.568884076964,474.616585263518,12.7917104832122,0,0,37.3084698031575,360.919480353128,12.3548033434871,0,385.226397485545,0,590.278235173167,495.177837946892,0,0,-8.09372366519654,0,0,0,0,460.77182772116,0,0,411.950410673722,0,412.173613618044,48.6863575719651,558.56838866823,474.61712647646,12.8007644872869,0,0,37.3174161554097,360.931999556247,12.3578159762921,0,385.225683571785,0,590.278108234661,495.177874138933,0,0,-8.09308269614432,0,0,0,0,460.772418036579,0,0,411.950586723697,0,412.172990546467,48.6928635852715,558.568023934211,474.617534180642,12.8070908378463,0,0,37.3237953507492,360.940730349238,12.3601073577123,0,385.225165640448,0,590.278035810242,495.177915752755,0,0,-8.09263820862921,0,0,0,0,460.772706261183,0,0,411.950689601232,0,412.172614939909,48.6966249121037,558.567790272671,474.61780736675,12.8107057576381,0,0,37.3276234521253,360.945669703038,12.3616784749151,0,385.22484426488,0,590.278017783808,495.177962869698,0,0,-8.09239033718472,0,0,0,0,460.772691899825,0,0,411.95071921552,0,412.172487009696,48.6976491754161,558.567687917453,474.617945440659,12.8116187989832,0,0,37.3289099481247,360.946815822384,12.3625299519074,0,385.224719785092,0,590.278054087157,495.178015538619,0,0,-8.09233916093558],"Archive455_field27":[0,0,0,0,2616.21452395554,0,0,3912.24403834851,0,2411.0936779943,400.448920064548,2569.0250406464,2551.10151017572,285.808272561608,0,0,360.459576416605,1560.53835405961,710.636404601076,0,1313.54070077386,0,3192.85028998831,2925.94038931714,0,0,3210.95069194186,0,0,0,0,2616.22005391721,0,0,3912.24600657647,0,2411.09255976641,400.518784222237,2569.02131571767,2551.10002762985,285.899935974649,0,0,360.523623035119,1560.59297237999,710.726570312219,0,1313.53357902881,0,3192.85154951554,2925.94069452725,0,0,3210.95360485885,0,0,0,0,2616.22386450387,0,0,3912.24757749717,0,2411.091725811,400.568292150786,2569.01847614957,2551.09865524524,285.964546383938,0,0,360.568739509199,1560.63125935092,710.790348661829,0,1313.52860710341,0,3192.85308542581,2925.9409528983,0,0,3210.95667928336,0,0,0,0,2616.22588522841,0,0,3912.24851535485,0,2411.09130809089,400.59754373803,2569.01674854799,2551.09735064016,286.00226354139,0,0,360.595058398248,1560.65315670643,710.827780208573,0,1313.52573735755,0,3192.85421020883,2925.94114632425,0,0,3210.95888346241,0,0,0,0,2616.22605550567,0,0,3912.24861072139,0,2411.09142296186,400.606598908448,2569.01633364339,2551.09607961344,286.013183724138,0,0,360.602659317623,1560.65862045414,710.83888969795,0,1313.52492599585,0,3192.85431230016,2925.94125850965,0,0,3210.9592993709],"Archive455_field28":[0,0,0,0,-3.05259348229493,0,0,-1.85471662341,0,-5.04963226903051,-8.78910312826587,-4.46611216493684,-3.97210344878158,-6.82937779046165,0,0,-5.49057809439394,-4.38282652404853,-8.03678255861722,0,-6.40330124268355,0,-3.58151766795309,-2.34920327484093,0,0,-3.84532460479352,0,0,0,0,-3.98233351298328,0,0,-2.38819474910492,0,-4.7610010879034,-9.2866255388068,-4.71858947728031,-4.60891562666132,-8.16054381742797,0,0,-6.57698689307326,-5.7767931592591,-8.87898196880576,0,-7.19143698297006,0,-3.93121921058328,-2.46876036562546,0,0,-4.13710002005447,0,0,0,0,-4.9120394231783,0,0,-2.92167022653184,0,-4.47238257328684,-9.78419561895656,-4.97106764265808,-5.24566367248609,-9.49173422982841,0,0,-7.66339709050646,-7.17071837150051,-9.7211915657797,0,-7.97956206506263,0,-4.28091631029006,-2.58832200282899,0,0,-4.42887976358227,0,0,0,0,-5.84172230537155,0,0,-3.45514440801479,0,-4.18377244135068,-10.2818011317315,-5.22354612697627,-5.88236858210621,-10.822945426391,0,0,-8.74981168560091,-8.56461750384018,-10.5634122983317,0,-8.76767938592119,0,-4.63061133184695,-2.70788670879336,0,0,-4.72066389328857,0,0,0,0,-6.77139494309672,0,0,-3.98861751437746,0,-3.89516661038716,-10.7794077263194,-5.47602570945364,-6.519053678096,-12.1541466087686,0,0,-9.83621307719151,-9.95849687855686,-11.4056191075509,0,-9.5557951184745,0,-4.98030492295259,-2.82745274379971,0,0,-5.01244940989923],"Archive455_field29":[0,0,0,0,2656.48218689382,0,0,3933.87338271252,0,2446.07563823006,403.492311455701,2629.05093215881,2594.87872468712,286.175884593272,0,0,362.426785154329,1601.73719284962,710.789230773719,0,1368.87893992711,0,3246.95768319613,2967.54675983161,0,0,3210.96319520577,0,0,0,0,2656.48901874641,0,0,3933.87565389425,0,2446.07381054932,403.573908153615,2629.04762804287,2594.87841908268,286.302684998174,0,0,362.509488250275,1601.79764798326,710.889449692619,0,1368.87581879638,0,3246.95930322346,2967.54716385521,0,0,3210.96646917095,0,0,0,0,2656.49443036385,0,0,3933.87759465027,0,2446.07233879462,403.635580845694,2629.04524108528,2594.87835351354,286.408513111936,0,0,362.576349567376,1601.8425508427,710.964270248623,0,1368.87526945755,0,3246.96124259554,2967.54752742184,0,0,3210.96993165672,0,0,0,0,2656.49835217226,0,0,3933.87897050507,0,2446.07135309043,403.67743157289,2629.04399280125,2594.87848612859,286.493534098957,0,0,362.627504222105,1601.87184402751,711.01373396746,0,1368.87724633782,0,3246.96282523966,2967.54783269209,0,0,3210.97255091586,0,0,0,0,2656.50072442995,0,0,3933.87957317243,0,2446.07096815504,403.699521618661,2629.04407938884,2594.87878322172,286.557851262281,0,0,362.663034389441,1601.88548439338,711.0378663623,0,1368.88170751393,0,3246.96344977084,2967.54806360584,0,0,3210.97340892426],"Archive455_field30":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,2136495.375,2570400.71859375,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2248942.5,2091516.525,517256.775,674682.75,1383099.6375,2170229.5125,1304386.65,595969.7625,1461812.625,950178.20625,1816021.06875,1028891.19375,1343743.14375,1756986.328125,1697951.5875,2130873.01875,1688112.4640625,1466732.18671875,1629077.7234375,1068247.6875,1285200.35929688,910821.7125,556613.26875,989534.7,1855377.5625,2209586.00625,635326.25625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive455_field31":[0,0,0,0,743.923607987982,0,0,448.988490674771,0,554.03126872041,-4.38196938387363,542.831389323199,466.469766390061,20.5880253419372,0,0,43.2742478030889,494.953322202273,-9.26469129121953,0,510.369857129578,0,913.725850086678,607.082993078365,0,0,-190.906119400046,0,0,0,0,743.922666881881,0,0,448.988449293507,0,554.030510868129,-4.37877978499132,542.831677496155,466.465015840998,20.5975000652347,0,0,43.2814768902642,494.971942756591,-9.26521863615768,0,510.372103955301,0,913.725924638277,607.083005912974,0,0,-190.906102287087,0,0,0,0,743.921994911692,0,0,448.988415245158,0,554.029961112893,-4.37639111310516,542.831873767578,466.461620617051,20.6042685564415,0,0,43.2866253701457,494.985002863103,-9.26579197277847,0,510.37364517362,0,913.725974674573,607.083015548124,0,0,-190.906089339489,0,0,0,0,743.921592601407,0,0,448.988388577106,0,554.029619620354,-4.37479837943859,542.831978257332,466.459581137439,20.6083454065671,0,0,43.2897139346913,494.992504978712,-9.26639851848668,0,510.374480982333,0,913.726000212643,607.083022113313,0,0,-190.906080536697,0,0,0,0,743.921460264128,0,0,448.988369317504,0,554.029486487146,-4.37399857300993,542.831991036381,466.458897614753,20.6097393439564,0,0,43.2907549103605,494.994450565261,-9.26703083608164,0,510.374611498534,0,913.726001263085,607.083025687166,0,0,-190.906075867209],"Archive455_field32":[0,0,0,0,3160.92329410197,0,0,4066.19554119387,0,2840.23644209799,82.7223139267625,2859.44168850542,2918.98451529407,68.0606509242753,0,0,306.508988544978,1602.89040346043,300.773237900769,0,1790.5500049389,0,3535.26544686561,3380.73331534208,0,0,3499.10153539394,0,0,0,0,3160.90983989851,0,0,4066.19509589416,0,2840.23101439667,82.7766713002952,2859.44163144906,2918.92184399121,68.1585756898444,0,0,306.571583319146,1602.93242147656,300.8663830862,0,1790.55668711415,0,3535.26528447706,3380.73257282359,0,0,3499.10279235971,0,0,0,0,3160.90017742536,0,0,4066.19527578793,0,2840.22747677311,82.8156522779074,2859.44200673675,2918.87696556934,68.2285596781218,0,0,306.615992543658,1602.96171170099,300.932368883325,0,1790.56134912133,0,3535.26578137549,3380.73211122046,0,0,3499.10499679693,0,0,0,0,3160.8942377647,0,0,4066.19557670393,0,2840.2254923407,82.8392951384749,2859.44231788869,2918.84986716491,68.2707297488663,0,0,306.642391354706,1602.97823332923,300.971386419335,0,1790.56392715889,0,3535.26632232768,3380.73185975426,0,0,3499.10682615394,0,0,0,0,3160.89195892121,0,0,4066.19554977655,0,2840.22476043247,82.8476226561068,2859.44212265515,2918.84053374545,68.2851603979074,0,0,306.650882811476,1602.98194599164,300.983547532055,0,1790.56436397902,0,3535.26635963965,3380.73175517134,0,0,3499.10710319854],"Archive455_field33":[0,0,0,0,-2.86037945992402,0,0,-1.7679681819188,0,-4.56694194217343,-8.79226719145815,-4.03043004276852,-3.89185786089717,-6.86761097359972,0,0,-5.52416964620279,-4.32340516320011,-8.04340193687139,0,-5.92211642393771,0,-2.97906671983698,-1.97562118426789,0,0,-3.37531109662356,0,0,0,0,-3.9502752401652,0,0,-2.15668742360105,0,-4.45905850758659,-9.19057684715053,-4.25009511812857,-4.28351529762118,-8.1849350326893,0,0,-6.6676431689333,-6.48354455691014,-9.71290776925952,0,-6.85783312596913,0,-3.27904234765741,-2.21112912632804,0,0,-3.7836014937,0,0,0,0,-5.04006836972981,0,0,-2.54539084438228,0,-4.35120963446005,-9.58895747461716,-4.46978887101036,-4.67504671301993,-9.50235529039911,0,0,-7.81124263085963,-8.64354790041958,-11.3824511728867,0,-7.79356319239768,0,-3.57900496954609,-2.4466504613308,0,0,-4.19188345572104,0,0,0,0,-6.12979344689606,0,0,-2.93408434461002,0,-4.24338362422319,-9.98738977136797,-4.68950100792216,-5.06649378954208,-10.8198460678732,0,0,-8.95493252893789,-10.8034627361882,-13.0520247052631,0,-8.72930165091663,0,-3.87896034430806,-2.6821806991934,0,0,-4.60016298961118,0,0,0,0,-7.21948338124467,0,0,-3.3227725695877,0,-4.13556890277404,-10.3858282313951,-4.9092238001149,-5.45790047344626,-12.1373431415582,0,0,-10.0986384685455,-12.9633237250431,-14.7215903577106,0,-9.66504704588977,0,-4.17891204001839,-2.91771523433767,0,0,-5.00844010002925],"Archive455_field34":[0,0,0,0,3247.28603413511,0,0,4090.90943063945,0,2893.77168254514,83.3035823926261,2910.51351681514,2956.02432162528,71.4372666904397,0,0,309.598024916292,1677.57417973001,301.02337360536,0,1861.87587736564,0,3651.43883746627,3434.808788423,0,0,3504.30707760402,0,0,0,0,3247.27386509705,0,0,4090.90916994907,0,2893.76604191084,83.4003460828907,2910.51382698414,2955.96222757259,71.6717629927919,0,0,309.683514908428,1677.62677860333,301.165677534944,0,1861.88613082007,0,3651.43895596017,3434.80820339517,0,0,3504.30874881626,0,0,0,0,3247.26581425824,0,0,4090.9095684064,0,2893.76230030267,83.4837299528485,2910.5145613931,2955.91796904138,71.9024825340681,0,0,309.754926241547,1677.66835612974,301.290069098395,0,1861.89471836682,0,3651.43973126163,3434.80791045186,0,0,3504.31141387905,0,0,0,0,3247.26181461249,0,0,4090.91012489087,0,2893.76012707744,83.5537888688797,2910.5152322864,2955.89153340289,72.129505126346,0,0,309.812437330843,1677.69887385058,301.396743402424,0,1861.90157870601,0,3651.44056771875,3434.80783995103,0,0,3504.3137522092,0,0,0,0,3247.26180588424,0,0,4090.91039325265,0,2893.75922713018,83.6105607643998,2910.5154051792,2955.88290588057,72.3528823539857,0,0,309.856153543357,1677.71829370355,301.485818850834,0,1861.90665683011,0,3651.44093506794,3434.80792964666,0,0,3504.31458832248],"Archive455_field35":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,6746827.5,6274549.575,1551770.325,2024048.25,4149298.9125,6510688.5375,3913159.95,1787909.2875,4385437.875,2850534.61875,5448063.20625,3086673.58125,4031229.43125,5270958.984375,5093854.7625,6392619.05625,5064337.3921875,4400196.56015625,4887233.1703125,3204743.0625,3855601.07789063,2732465.1375,1669839.80625,2968604.1,5566132.6875,6628758.01875,1905978.76875,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,2136495.375,2570400.71859375,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,2248942.5,2091516.525,517256.775,674682.75,1383099.6375,2170229.5125,1304386.65,595969.7625,1461812.625,950178.20625,1816021.06875,1028891.19375,1343743.14375,1756986.328125,1697951.5875,2130873.01875,1688112.4640625,1466732.18671875,1629077.7234375,1068247.6875,1285200.35929688,910821.7125,556613.26875,989534.7,1855377.5625,2209586.00625,635326.25625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive460.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive460.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive460.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive460_field1":[0,0,0,0,234.395020212384,0,0,138.194644852886,0,192.265389126115,65.7853504598023,204.404534349748,212.332952438538,28.7564027122619,0,0,52.8383499286596,244.808240861348,11.4098141387175,0,160.970534807165,0,179.462275778478,195.223557630631,0,0,54.5029856291962,0,0,0,0,234.395020212384,0,0,138.194644852886,0,192.265389126115,65.7853504598023,204.404534349748,212.332952438538,28.7564027122619,0,0,52.8383499286596,244.808240861348,11.4098141387175,0,160.970534807165,0,179.462275778478,195.223557630631,0,0,54.5029856291962,0,0,0,0,234.395020212384,0,0,138.194644852886,0,192.265389126115,65.7853504598023,204.404534349748,212.332952438538,28.7564027122619,0,0,52.8383499286596,244.808240861348,11.4098141387175,0,160.970534807165,0,179.462275778478,195.223557630631,0,0,54.5029856291962],"Archive460_field2":[0,0,0,0,1306.41539835085,0,0,1546.59013880394,0,1254.83722643802,394.693127153845,1240.91368779048,1288.38203132392,384.04934454549,0,0,435.882357357383,1072.34417758331,629.287339784776,0,713.607513033341,0,1444.38081201035,1360.06062869259,0,0,1370.26084448984,0,0,0,0,1306.41539835085,0,0,1546.59013880394,0,1254.83722643802,394.693127153845,1240.91368779048,1288.38203132392,384.04934454549,0,0,435.882357357383,1072.34417758331,629.287339784776,0,713.607513033342,0,1444.38081201035,1360.06062869259,0,0,1370.26084448984,0,0,0,0,1306.41539835085,0,0,1546.59013880394,0,1254.83722643802,394.693127153845,1240.91368779048,1288.38203132392,384.04934454549,0,0,435.882357357383,1072.34417758331,629.287339784776,0,713.607513033341,0,1444.38081201035,1360.06062869259,0,0,1370.26084448984],"Archive460_field3":[0,0,0,0,-3.70309709334919,0,0,-3.24826376720013,0,-6.02717385429152,-8.78872232888221,-5.39006114874844,-4.44654016852659,-6.66806095438857,0,0,-5.39866379079081,-4.47790798909279,-7.98548947958664,0,-6.82401409767412,0,-4.61229091696494,-3.52562136236577,0,0,-4.98918344736564,0,0,0,0,-4.27516523947136,0,0,-3.50799465938879,0,-5.79111961490984,-9.74402687095962,-5.42773005000575,-4.73659570355942,-8.11451437522735,0,0,-6.53311978162168,-5.58832513569493,-8.91474328520826,0,-7.3709536446471,0,-4.80763659685723,-3.55625743706936,0,0,-5.16413091805504,0,0,0,0,-4.84723338559353,0,0,-3.76772555157745,0,-5.55506537552816,-10.6993314130371,-5.46539895126306,-5.02665123859225,-9.56096779606614,0,0,-7.66757577245254,-6.69874228229708,-9.84399709082989,0,-7.91789319162007,0,-5.00298227674951,-3.58689351177295,0,0,-5.33907838874444],"Archive460_field4":[0,0,0,0,1327.28140628755,0,0,1552.75541168888,0,1269.49547913144,400.234454536056,1257.64742554012,1305.76924188352,385.182155323507,0,0,439.106440683052,1099.94234469376,629.441425324317,0,731.569383518843,0,1455.49438740201,1374.00494219622,0,0,1371.35343705989,0,0,0,0,1327.2831256316,0,0,1552.75597675171,0,1269.49438036444,400.256571485419,1257.64758754669,1305.77026182574,385.209910420691,0,0,439.121853626865,1099.94742572919,629.453900234101,0,731.574689755849,0,1455.49501953834,1374.00502114825,0,0,1371.35408470338,0,0,0,0,1327.28509153839,0,0,1552.75658525973,0,1269.49332548927,400.280967134694,1257.64775068149,1305.77134619821,385.243094484467,0,0,439.140196744547,1099.95362772192,629.467746712096,0,731.580404853991,0,1455.49567789222,1374.00510078337,0,0,1371.35475466509],"Archive460_field5":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,2136495.375,2570400.71859375,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive460_field6":[0,0,0,0,234.432177247959,0,0,138.075429650019,0,192.336406904608,65.7730850317175,204.284896217474,212.416319276896,28.7580240448665,0,0,52.8327281308122,244.8063431606,11.432355621658,0,160.876587335587,0,179.37428312509,195.185344146199,0,0,54.4379432938387,0,0,0,0,234.432130755978,0,0,138.075471025811,0,192.336120032248,65.7845670458252,204.284854557121,212.416147339799,28.7644512287942,0,0,52.8403642142517,244.809466474553,11.4340063164061,0,160.877203006881,0,179.374175032252,195.185416845792,0,0,54.4381668054065,0,0,0,0,234.432079211022,0,0,138.075482718718,0,192.336020085542,65.7879318903259,204.284842363912,212.416114704682,28.7661471516956,0,0,52.8428529814408,244.810164071776,11.4350539773706,0,160.877357083877,0,179.374165313592,195.18545111004,0,0,54.4382177905587],"Archive460_field7":[0,0,0,0,1305.81016236405,0,0,1544.91875327329,0,1254.25068018142,394.685985648332,1240.10445583008,1287.83995864384,384.092909607627,0,0,435.960472495695,1072.18146801771,629.276350720323,0,713.356281982974,0,1442.96327966906,1359.16770901873,0,0,1368.55875350799,0,0,0,0,1305.80970333592,0,0,1544.919040209,0,1254.25152673603,394.753477265379,1240.10381551988,1287.83494215493,384.161917987151,0,0,436.014950444138,1072.1937657643,629.337380095765,0,713.355232819731,0,1442.9635663405,1359.16811668877,0,0,1368.55985439837,0,0,0,0,1305.8093119545,0,0,1544.91907777021,0,1254.25190824601,394.774396170003,1240.10367658975,1287.83283023426,384.182265279098,0,0,436.031029580189,1072.19665976256,629.355951346932,0,713.355012208658,0,1442.96374699339,1359.1682721169,0,0,1368.56034629916],"Archive460_field8":[0,0,0,0,-3.70340611449314,0,0,-3.24926674845899,0,-6.02764950078679,-8.7887128398585,-5.39060900244703,-4.44675947135619,-6.6679806601938,0,0,-5.39862442043753,-4.47794745484482,-7.98546411669676,0,-6.82418380868813,0,-4.61314322397761,-3.52627515799417,0,0,-4.99025228659451,0,0,0,0,-4.27490211268413,0,0,-3.50839945693976,0,-5.79145275654099,-9.74411093517126,-5.42773875151115,-4.73614609835775,-8.11402206275406,0,0,-6.53267851532666,-5.58756590626307,-8.91431015434248,0,-7.37055556014995,0,-4.80780983515893,-3.55664653687135,0,0,-5.16437667792661,0,0,0,0,-4.84636725527731,0,0,-3.7675261763138,0,-5.55527220283206,-10.699552909591,-5.46487795095944,-5.02546228242899,-9.56008324320801,0,0,-7.66670868954549,-6.69711254166741,-9.84316110920517,0,-7.91693593959859,0,-5.00246970685087,-3.58702143973475,0,0,-5.33849981665367],"Archive460_field9":[0,0,0,0,1326.69225560388,0,0,1551.08005474345,0,1268.92647332895,400.225395814867,1256.82951861325,1305.24795554129,385.225711919522,0,0,439.183305563914,1099.78329593866,629.430847645797,0,731.303651626308,0,1454.07683463094,1373.11565952223,0,0,1369.65012104964,0,0,0,0,1326.6935139832,0,0,1551.08090871046,0,1268.92616661245,400.315956180155,1256.82903985241,1305.24399595084,385.322735171564,0,0,439.253704582766,1099.8010579701,629.504360121336,0,731.308066226453,0,1454.07773639858,1373.11615171739,0,0,1369.65187542765,0,0,0,0,1326.69508411913,0,0,1551.08155492864,0,1268.9254725989,400.361531976115,1256.8290617272,1305.24298875212,385.376308779547,0,0,439.288292912648,1099.81023133776,629.536783497111,0,731.313595757784,0,1454.07857113098,1373.11638945031,0,0,1369.65303657495],"Archive460_field10":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,7027945.3125,6791806.35,8523492.075,6752449.85625,5866928.746875,6516310.89375,4272990.75,5140801.4371875,3643286.85,2226453.075,3958138.8,7421510.25,8838344.025,2541305.025,4497885,4183033.05,1034513.55,1349365.5,2766199.275,4340459.025,2608773.3,1191939.525,2923625.25,1900356.4125,3632042.1375,2057782.3875,2687486.2875,3513972.65625,3395903.175,4261746.0375,3376224.928125,2933464.3734375,3258155.446875,2136495.375,2570400.71859375,1821643.425,1113226.5375,1979069.4,3710755.125,4419172.0125,1270652.5125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive460_field11":[0,0,0,0,656774.413671736,0,0,-6220870.69964542,0,-18252127.7843675,11470.8976956964,-178937.930288146,-4585287.54366649,199920.443428353,0,0,-144153.909963351,51751.0964057377,407241.21262941,0,-1538767.96735027,0,11732967.3033807,-16712262.3044492,0,0,-16998328.0554899,0,0,0,0,-3571247.59091831,0,0,-14131383.8507032,0,-7877727.3281702,-2026.72308879981,-5641595.82533281,-5552388.07354593,575815.15817007,0,0,-137055.681584121,920039.170571537,437015.931431355,0,-960235.84870323,0,22071946.0597196,-32876663.0377843,0,0,-26177771.8227236,0,0,0,0,-8088025.36033501,0,0,-22049106.5935179,0,2445446.42726692,-20374.8766346854,-11365271.9257277,-6883421.48807242,1002902.12124034,0,0,-118810.229489337,1795686.00096524,448802.780037288,0,-364740.490216325,0,32434146.2652795,-48890881.6512232,0,0,-35283495.404379],"Archive460_field12":[0,0,0,0,1048036.77382938,0,0,-693607.727138032,0,1746260.83212365,14687.3894112976,-3060757.21813133,5648585.20770694,-419374.610065859,0,0,-59179.6359536946,99211.1871480346,-589608.834467083,0,-1506568.41675843,0,32812157.193315,-96562051.2191061,0,0,10639565.1140351,0,0,0,0,-7234650.94741186,0,0,-2674629.66999898,0,-5763794.48648849,-2960.48342489939,-7273470.97962247,-3356821.0010436,581383.276630695,0,0,-46076.9898762093,1287112.29519219,-501274.637947109,0,-1129699.03991492,0,40543450.2408065,-110189564.790062,0,0,3807305.9658063,0,0,0,0,-15964541.5489227,0,0,-4684599.62736447,0,-13040746.0999094,-26093.0638236299,-11678928.564117,-17821301.978972,2104507.2253037,0,0,-25544.9890811957,2482573.94227058,-296132.660657382,0,-743408.291788101,0,48188189.389655,-123731021.231624,0,0,-2913087.76661126],"Archive460_field13":[0,0,0,0,518.787082657467,0,0,21876170974.0183,0,20422181765.8927,-0.906606298198612,-2166.89705108215,2135.96937106577,54.8598038898632,0,0,5.09123757199475,23.7179090327673,86.5894909614481,0,-1358.31860550156,0,17115967051.0395,13106698368.2877,0,0,7314927345.69021,0,0,0,0,77503.763379944,0,0,21876069385.4828,0,20422162818.5391,820.410936994847,10692.7775275406,-12103.6327298032,-7107.49505032272,0,0,-4879.88663582426,-10270.5677981436,2094.17861334255,0,6209.38740027049,0,17115954050.8955,13106720275.7041,0,0,7314931141.55467,0,0,0,0,168830.689266646,0,0,21875948951.5703,0,20422125011.1962,70.1952791595261,42081.9235399633,-14873.797647699,-6444.64411040905,0,0,-6257.18872705187,-14105.8101445839,9380.56914650977,0,19844.3230561976,0,17115928425.2444,13106734052.3002,0,0,7314944713.74737],"Archive460_field14":[0,0,0,0,1236824.15035145,0,0,21876171869.5206,0,20422189996.8822,18636.010905936,3065984.05519038,7275395.6091194,464589.335088612,0,0,155828.685084789,111897.436061143,716577.972340237,0,2153498.80351644,0,17116002523.7335,13107064722.7639,0,0,7314954833.50573,0,0,0,0,8068456.51409643,0,0,21876074113.2432,0,20422165151.2966,3680.3726296829,9204949.64045508,6488251.46323936,818303.200048831,0,0,144676.059332976,1582161.69223748,665029.001290834,0,1482670.34853045,0,17116016300.9541,13107224687.1989,0,0,7314978973.10735,0,0,0,0,17897241.2650202,0,0,21875960564.9737,0,20422129321.2581,33105.7171038461,16296274.0907169,19104463.270085,2331266.79287926,0,0,121686.357120399,3063961.58050052,537779.214134138,0,828302.668509589,0,17116026990.3249,13107409248.2706,0,0,7315030387.92792],"Archive460_field15":[110884616.697502,8366066.1,-6746906.9506299,-5320376.41727557,-6997427.61317068,-432548835.261019,352817702.533997,-3025697.24773808,-3023619.01232257,12297117.6295052,72244122.7906707,10326128.0262244,-165497411.216903,277228418.37112,-671971581.448178,-1133864085.92721,52880793.0129467,-11419960.8161395,336287047.661961,-11212079.6803728,14478282.3617621,-214174795.753617,1047108.91027979,4973902.5121627,-314702914.420312,224616156.861998,2130407.25490441,103668228.456579,4183033.05,-6598083.90092497,-6011024.93139157,-9521005.97424803,-440153062.13116,351012923.439179,-4213008.26033753,-7980000.16600764,10134385.7014603,67612014.105759,8452314.11767141,-168705053.496176,274528245.560517,-680420282.912884,-1140245879.87087,50880999.7275806,-14207660.5415419,334732934.041547,-13473339.5847872,12795535.7135439,-215872549.31212,-824490.047549704,2561081.59746943,-311927237.989734,227257257.859793,510343.940765885,96730476.3375985,0,-7033369.59367152,-7365540.43649072,-12673651.0896998,-447180910.849087,348637068.494003,-6030788.54290165,-12998363.7133026,7713316.56348239,62163928.3876399,6333725.91607704,-171151197.399614,271739890.80723,-686791075.957464,-1145911902.79976,48704473.7706857,-16140093.6859644,332463860.393785,-14844729.1999597,10392064.8603066,-216736236.680525,-1831604.4761336,1010548.87597904,-309110802.326199,229636193.662409,-229878.822085585]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive501.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive501.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive501.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive501_field1":[-809.129447530646,-684.577773257811,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-24.8334307819574,73.196314959522,-839.293943397358,-510.74623563419,133.126986303063,-124.864774752957,151.698544383023,-62.856969614827,29.046584949239,30.5214785047545,-25.9875900678296,22.0588725759823,-2.06688692183117,72.4394635860172,102.715031286893,49.5025892852573,111.014249357008,61.9664205751707,-14.8177109808074,-554.091227512889,-471.434546468647,-28.1732220450353,-306.369704551026,-34.4491555534425,-133.609441877792,-247.339393379417,-347.245756040677,-355.08550382863,-223.506073885188,-102.920006344304,-56.5043071968663,136.963077472056,-3.70458777395125,-127.385224665895,-27.0612754868743,-48.7389823273559,-121.527456311307,-93.1398250647679,-115.851094069973,6.48490608524487,-30.2376073278239],"Archive501_field2":[-1104.01850819828,-2535.11270056617,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-854.069718408055,-62.9223766314668,-1666.22215201076,-196.030107451074,-108.15348496249,1.73281974410524,-251.359843264814,-684.177407349936,-147.027732205933,-133.341344263217,-14.5363472600491,17.9650951959676,1.52939225288104,-132.11224983399,-54.6414871995954,-48.890594634,-9.88679477261066,-188.190672694242,-27.1838170100698,-978.559180046811,-48.0747981280184,-7.15734520064289,-98.1255197395209,5.77661858898994,12.6887514366138,-68.4065361163797,-302.121616838406,-88.5501655127086,-220.147456369236,-105.075799735515,-507.699484875363,-141.108802038541,-20.9808745633161,8.9412919093974,-477.273754695347,-123.308116679182,-232.732925948426,-66.2744567604902,-72.3259364372832,-49.7546896901133,-56.1847793395475],"Archive501_field3":[1368.77585064378,2625.91757909697,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,854.43067781185,96.524224962471,1865.66625720541,547.073596732447,171.522508119685,124.876797838399,293.588520167325,687.058748112008,149.869470322788,136.789892682311,29.7768404838104,28.4488752804676,2.57119859419868,150.668916637867,116.344616444643,69.5758333734565,111.453632830768,198.130175813807,30.9600462846505,1124.54219896837,473.879433842774,29.0681618049719,321.700191934717,34.9301251166947,134.210608268926,256.62468646009,460.279356966304,365.960171113688,313.719409041608,147.08314449987,510.834125401296,196.648362829108,21.3054234413802,127.69863806709,478.04032209843,132.59102547787,262.551970965773,114.312425536307,136.574218206584,50.1755234461377,63.8047202512895],"Archive501_field4":[2880851.51218263,4892658.50172371,8242113.96332349,15569348.5080002,14879115.8572858,12977694.282484,6150165.22353762,2980782.32721449,5123954.55542523,3646788.2954335,5791990.63346932,4317881.39608773,4391001.39044248,5406373.73295309,3921781.76970302,6572756.95927813,2115241.36460238,2679445.05067977,9686621.709677,5735250.17082337,5757378.04775961,7797820.13386029,6442605.73913329,12595753.5071235,8306399.69629558,10970537.0176863,11136018.9183313,5903538.42148905,6713665.91156207,11002013.6948064,8286041.17330408,12818145.9486863,16395641.6258048,13366902.9576708,7843818.7270751,11555372.3708106,12142531.980309,11397833.5739712,12659977.9257428,6974127.9150809,14307741.929095,15610213.4678266,17262129.277202,17228494.3195467,16414525.8979891,16401488.3363321,11719836.9049415,14011369.9025945,17467866.9779851]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive502.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive502.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive502.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive502_field1":[-878.219522728,-756.622449186296,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-31.7754796169471,73.196314959522,-863.366141716641,-517.128949730583,130.959335913041,-124.864774752957,145.24727454728,-58.2440067466599,29.046584949239,36.2547802681392,-25.9875900678296,22.0588725759823,-2.06688692183117,72.716715947726,102.239369041189,51.0960457825278,108.809434198254,63.1419630058406,-14.8177109808074,-573.634737632597,-468.751016909813,-28.1732220450353,-303.063874906595,-34.4491555534425,-133.609441877792,-248.075508045843,-352.710818468059,-351.977714802335,-226.29436498139,-102.823498302706,-56.4004934465528,135.276219481635,-3.70458777395125,-127.385224665895,-27.0612754868743,-48.2929122250722,-121.059667845043,-92.5450914578635,-113.965121998956,6.61836134134205,-29.2065484531314,-878.426303164775,-756.290899286122,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-31.8106272366916,73.196314959522,-863.539745987984,-518.680431143977,131.970416618205,-124.864774752957,145.797982286221,-58.4558321056289,29.046584949239,36.4057675879236,-25.9875900678296,22.0588725759823,-2.06688692183117,73.8935035408094,104.17188432174,52.0481819834914,110.83641397426,64.5756597308709,-14.8177109808074,-574.187556032628,-477.426710402038,-28.1732220450353,-309.586566130503,-34.4491555534425,-133.609441877792,-256.775438188774,-356.393007718178,-363.321930359249,-231.298754436739,-104.753513090194,-57.0022426846773,136.931629821509,-3.70458777395125,-127.385224665895,-27.0612754868743,-48.5300188239273,-124.916950344267,-95.477571554011,-117.753327589721,8.01636392950789,-31.5949008596759,-878.462063344943,-756.176706212481,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-31.8358695759275,73.196314959522,-863.580913226153,-519.142613719898,132.196458702784,-124.864774752957,145.917517591804,-58.5425755205357,29.046584949239,36.4400211577805,-25.9875900678296,22.0588725759823,-2.06688692183117,74.1507819467132,104.642029850171,52.3132094675571,111.348424414097,64.9346020701107,-14.8177109808074,-574.252744458155,-479.368306737831,-28.1732220450353,-310.915689230831,-34.4491555534425,-133.609441877792,-258.802329804812,-357.294423660367,-365.814522506208,-232.584620826051,-105.233617607,-57.1642611403445,137.283876669887,-3.70458777395125,-127.385224665895,-27.0612754868743,-48.6108720837665,-125.875063210965,-96.236241744049,-118.6543344502,8.33077397926434,-32.2043551102495],"Archive502_field2":[-1191.41421050808,-2526.03185708405,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-857.076697660837,-62.9223766314668,-1676.99613597824,-195.166279213174,-108.789290090431,1.73281974410524,-241.926104805201,-693.05461107757,-147.027732205933,-134.703798431453,-14.5363472600491,17.9650951959676,1.52939225288104,-126.891516972422,-59.4007673591962,-50.8251844371378,-7.73961377628028,-186.973284999064,-27.1838170100698,-1007.77031062621,-47.5248488286698,-7.15734520064289,-96.9119067819747,5.77661858898994,12.6887514366138,-67.6843087191312,-305.875852442428,-85.3832268461074,-221.189256233335,-104.789963742585,-511.358315783723,-139.489883968243,-20.9808745633161,8.9412919093974,-477.273754695347,-124.041408523443,-233.509771045234,-66.2542800532891,-71.0690601442579,-49.6944239827192,-55.9132382309499,-1191.39287818956,-2526.35677391574,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-857.593212169932,-62.9223766314668,-1677.10439051247,-196.164122112022,-109.787107766948,1.73281974410524,-243.453917720117,-694.805768072433,-147.027732205933,-135.32992350981,-14.5363472600491,17.9650951959676,1.52939225288104,-128.780931230742,-60.5468787452946,-50.2715759725446,-8.15307424323866,-191.331501038647,-27.1838170100699,-1008.46856615592,-48.4423530835865,-7.15734520064289,-99.0270636224122,5.77661858898994,12.6887514366138,-69.906728712177,-309.207130911062,-88.5438745505423,-226.188788720281,-106.653846323324,-519.68213699344,-140.936269339283,-20.9808745633161,8.9412919093974,-477.273754695347,-126.588582785528,-241.429941023768,-66.9549702280089,-73.0612582778988,-55.3740469065352,-60.6660257125527,-1191.35035301263,-2526.28214843682,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-857.706430886124,-62.9223766314668,-1677.31265670435,-196.415731305177,-110.001050470787,1.73281974410524,-243.807130361468,-695.268330338442,-147.027732205933,-135.501885260645,-14.5363472600491,17.9650951959676,1.52939225288104,-129.226061682922,-60.8143203334409,-50.1479993967823,-8.25424365364891,-192.398296567474,-27.1838170100698,-1008.63977211034,-48.7119578662001,-7.15734520064289,-99.4104426737889,5.77661858898994,12.6887514366138,-70.4237610369563,-310.027338009782,-89.2621415727519,-227.386623128344,-107.10214637471,-521.782597091074,-141.22233177161,-20.9808745633161,8.9412919093974,-477.273754695347,-127.284695194618,-243.372202517643,-67.132186070837,-73.5345796317298,-56.676263717433,-61.8671824011279],"Archive502_field3":[16.5911510550466,7.38818797995117,0,0,0,0,0,0,-0.716336380929892,0,-7.36196711818847,-5.25190593800547,-0.956527692424482,0,-7.65871748671431,3.42917543205229,0,-0.00366827515206312,0,0,0,0.525402635620191,-1.09972323614177,-0.60189354465356,-1.11493709561461,-2.78959484561846,0,-0.946000977616317,0.39551858240989,0,2.85645000437372,0,0,-0.514054106846652,5.45815011936486,1.6560094329306,0.026434957168147,-1.72739469202254,4.32370028095637,-4.91879100682233,0,0,0,1.12669627095203,-1.79392204509971,0.295839711009485,1.55030737179428,0.8367868762559,-1.16347718379986,7.6122330400692,-19.5791807257399,0,0,0,0,0,0,-3.12502588356919,0,-18.96726622178,-2.32138786086434,-1.54124829804025,0,-11.5075706094701,6.88053852994667,0,-0.49151405166004,0,0,0,-1.67338770034337,-5.14952979188446,-4.60351317314542,-2.64626090741575,-2.4366549505545,0,-13.0450934402353,-5.2600385875607,0,-2.44503500925738,0,0,-3.89212491660856,10.423693592035,-6.18726369762059,4.08095883408261,-2.66251436754261,4.93761706425963,-5.39210643213701,0,0,0,0.798843031010755,-3.47712460486281,-1.17906827604588,-4.09321425233942,18.5365751277311,13.3182030214986,-0.164329817230476,-42.9313941567821,0,0,0,0,0,0,-5.20536458937029,0,-29.0267715194757,0.275458659045776,-2.03918565982928,0,-14.8262989366291,9.89405498978219,0,-0.912168916191005,0,0,0,-3.58696876722162,-8.65616161389131,-7.97570372137436,-4.0125505606941,-2.12420572270402,0,-23.5189918411231,-10.1775946145939,0,-7.0335449414984,0,0,-6.91549726050731,14.8008575449927,-13.0419467567779,7.72656629905919,-3.48942904447568,5.53111032286848,-5.77560228506248,0,0,0,0.520181378411005,-4.93358558499192,-2.45729737648411,-9.05537460855514,33.846297432608,25.8874920748063],"Archive502_field4":[1480.20695086684,2636.92416632291,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,857.66582065272,96.524224962471,1886.20553845769,552.756555553484,170.253846495141,124.876797838399,282.282955389041,695.506159212074,149.869470322788,139.497392153433,29.7768404838104,28.4488752804676,2.57119859419868,146.251338133072,118.247829307763,72.0719608691088,109.090043893461,197.366913729163,30.9600462846505,1159.59419889732,471.154203573651,29.0681618049719,318.19457766616,34.9301251166947,134.210608268926,257.143709996209,466.899079003713,362.189659586479,316.43929495907,146.821633953586,514.477440872094,194.374066664476,21.3054234413802,127.69863806709,478.04032209843,133.115535697924,263.031318493927,113.817007074772,134.317771701931,50.1401904074476,63.0925222286548,1480.23907068567,2637.20265011448,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942435,858.18867351644,96.524224962471,1886.4622410123,554.540477600403,171.673455550152,124.876797838399,284.005784929354,697.29440085544,149.869470322788,140.14210536773,29.7768404838104,28.4488752804676,2.57119859419868,148.48426967389,120.599434766573,72.5081852764588,111.167378214472,201.9497373277,30.9600462846505,1160.54744534214,479.906859071142,29.0681618049719,325.047964851882,34.9301251166947,134.210608268926,266.149816856299,471.946690998846,374.006851584911,323.538461657559,149.517324825768,522.822301784674,196.576646813972,21.3054234413802,127.69863806709,478.04032209843,135.574592637734,271.854283213581,116.62043092908,138.638191067677,58.9419356564025,69.6848546515719,1480.20650159491,2637.37517413302,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,858.312845060341,96.524224962471,1886.7941847202,555.056995957665,171.989223721688,124.876797838399,284.523562988036,697.798808141948,149.869470322788,140.319165131853,29.7768404838104,28.4488752804676,2.57119859419868,149.032143601051,121.339462264625,72.9047706130904,111.726025257314,203.071709792432,30.9600462846505,1160.89342636512,481.944407350052,29.0681618049719,326.49727820753,34.9301251166947,134.210608268926,268.302024094767,473.281439395517,376.773256972686,325.361310006711,150.190412968945,524.933733494268,197.037984577286,21.3054234413802,127.69863806709,478.04032209843,136.252270088236,274.041786527853,117.363465107609,139.886329906594,66.537001089305,74.3964447554091],"Archive502_field5":[2880851.51218263,4892658.50172371,8242113.96332349,15569348.5080002,14879115.8572858,12977694.282484,6150165.22353762,2980782.32721449,5123954.55542523,3646788.2954335,5791990.63346932,4317881.39608773,4391001.39044248,5406373.73295309,3921781.76970302,6572756.95927813,2115241.36460238,2679445.05067977,9686621.709677,5735250.17082337,5757378.04775961,7797820.13386029,6442605.73913329,12595753.5071235,8306399.69629558,10970537.0176863,11136018.9183313,5903538.42148905,6713665.91156207,11002013.6948064,8286041.17330408,12818145.9486863,16395641.6258048,13366902.9576708,7843818.7270751,11555372.3708106,12142531.980309,11397833.5739712,12659977.9257428,6974127.9150809,14307741.929095,15610213.4678266,17262129.277202,17228494.3195467,16414525.8979891,16401488.3363321,11719836.9049415,14011369.9025945,17467866.9779851,1337041.41205018,2270747.73002369,3825274.45277852,7225941.22807336,6905595.09636484,6023120.11404635,2854373.28513702,1383420.62926166,2378095.29755188,1692522.8361667,2688139.70536372,2003986.04873473,2037922.00832437,2509169.78518689,1820150.95638986,3050503.71695061,981711.583882438,1243566.00085838,4495689.66464713,2661805.70377576,2672075.54507073,3619071.79130896,2990098.80873975,5845856.3323318,3855110.31444102,5091571.7950222,5168374.14084648,2739910.51388137,3115901.43138869,5106180.53852922,3845661.65378888,5949071.61532678,7609434.82790833,6203757.0245061,3640420.34876295,5363001.64243065,5635510.20806227,5289885.79647743,5875663.7371896,3236785.30322226,6640412.87488406,7244907.198155,8011583.24411406,7995972.813973,7618199.26919938,7612148.36384246,5439331.8149566,6502862.68490422,8107068.84092586,-1.27837580521373e-10,6.39187902606864e-11,0,0,0,0,0,0,-1.27837580521373e-10,-1.91756370782059e-10,2.55675161042745e-10,0,0,2.55675161042745e-10,0,2.55675161042746e-10,0,0,0,0,0,0,0,0,0,0,0,3.83512741564118e-10,0,0,0,0,0,0,0,0,0,0,1.02270064417098e-09,0,0,0,1.02270064417098e-09,1.02270064417098e-09,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive503.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive503.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive503.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive503_field1":[-165492.430672601,333220.17323027,-65.5998122745461,-153.196904915416,-116.929639638123,155.194092031888,22.5604984720281,44.057059977327,-722.016685838046,73.1965323239247,-6536.37085980452,-1940.19263764922,507.059561132054,-124.863687486754,1614.76998430346,-1140.07046344277,29.0497120323519,-1148.95006987993,-25.9880189407249,22.0591034564248,-2.06648991400929,330.875903482983,36.105025330003,397.85311916991,-18.516111179838,859.829739116322,-14.8158176626756,5332.57564240007,68.7669128077615,-28.1731796165705,708.02245343557,-34.4478810297505,-133.601201564416,-157.039941058935,-1206.23507914957,-392.545071247468,-359.079179587116,-310.423729818182,1211.91185521536,-391.16831408635,-3.7050032476595,-127.379032510562,-27.0433723220556,-122.842505634694,-1279.58816659075,-239.790821146244,95.3817743353276,51.2619342972244,59.7137538714367,18449.6653888767,97794.092585936,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,14222.5717739449,73.196314959522,3085.41329782299,-710.878508713237,620.720675686271,-124.864774752957,390.609301521437,-713.721082494681,29.046584949239,-1166.90236615979,-25.9875900678296,22.0588725759823,-2.06688692183117,359.825833254632,41.040048813111,401.263667602485,-1.96889605898903,850.357026993562,-14.8177109808074,-19953.8783128847,-38.910358520894,-28.1732220450353,633.635773931086,-34.4491555534425,-133.609441877792,-184.460556280498,-1515.40983680725,-416.854788963859,-341.23838225415,-309.794002316984,1171.06776517425,-393.26603960822,-3.70458777395125,-127.385224665895,-27.0612754868743,-132.414031593042,-1253.9511939262,-231.242395515801,82.7013487785712,56.9522712217469,53.799772377536,178272.542441862,-106162.40602887,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,27360.415994769,73.196314959522,11037.2625151866,484.364049368043,697.454843902051,-124.864774752957,-830.355877160319,-293.136824606879,29.046584949239,-1139.40368030298,-25.9875900678296,22.0588725759823,-2.06688692183117,360.772174261953,44.377085628056,400.927950321544,1.37812625112904,847.179718603852,-14.8177109808074,-42660.933693419,-122.538377407026,-28.1732220450353,552.244732638179,-34.4491555534425,-133.609441877792,-192.901789414569,-1755.50831954946,-413.069973582271,-323.274220616646,-310.815150221853,1148.74495146935,-397.264961680493,-3.70458777395125,-127.385224665895,-27.0612754868743,-133.988201125623,-1244.03688168542,-227.449545136446,78.7784747159515,57.8112936721427,52.0082167684429],"Archive503_field2":[323632.134086373,374502.259758878,4.06566497287248,5.69753835047282,-196.848062015771,-246.445510362436,10.837706387868,-26.730262993688,1770.61483337807,-62.9214135080223,293222.309437443,-1294.73478782251,483.376247496893,1.73281874197888,-1201.12210955494,-1230.37481377241,-147.023299916125,-503.261190977746,-14.5320957336472,17.9625781086994,1.52934194638822,-10.8557057654313,-183.086111939691,49.4658777919141,-32.7672701422052,-253.199935447986,-27.1829790767729,-80.0547098296225,-594.048722813176,-7.15714076252641,369.902252365512,5.77566983522718,12.6860798876513,-214.463514434916,503.693572076319,-400.663461374553,-168.094814829197,-64.4453048375228,-475.566306126175,-473.475231511681,-20.9805407525068,8.94071361317784,-477.26968453407,28.5046288895949,-551.41712307301,-22.4648474308923,35.473411367937,-346.435361473098,-350.42072122008,-108960.181159931,-187636.510551434,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-58147.7888682415,-62.9223766314668,-109677.535516288,760.905068248434,-498.073778181289,1.73281974410524,3626.77700985317,3075.22617649126,-147.027732205933,-676.940850937115,-14.5363472600491,17.9650951959676,1.52939225288104,49.5004126726102,-211.504203360064,44.2087815866382,-38.6139932955808,-256.418392610339,-27.1838170100699,-46907.8219552858,-780.954069986755,-7.15734520064289,302.905341133923,5.77661858898994,12.6887514366138,-202.276558992066,-386.472433054225,-406.320017079212,-114.970499841935,-75.3760836289302,-731.385615191754,-361.557659883398,-20.9808745633161,8.9412919093974,-477.273754695347,20.4933439525397,-560.620397560427,-46.2921517267737,41.5974879382423,-377.521365294969,-354.117519042893,-483677.081102486,-674547.428068422,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-110429.551093402,-62.9223766314668,-458990.865487204,2624.06912974167,-1335.04212764114,1.73281974410524,7872.29148139107,6985.64262748359,-147.027732205933,-788.670377034083,-14.5363472600491,17.9650951959676,1.52939225288104,101.727461725458,-231.44573349731,40.7646128800471,-37.732367633643,-257.468836344721,-27.1838170100698,-87677.5878281334,-908.410703281484,-7.15734520064289,223.081117084842,5.77661858898994,12.6887514366138,-205.863265145257,-1132.06788093643,-386.636565150796,-53.4246022040714,-84.3347701224886,-879.896625362496,-250.401522334016,-20.9808745633161,8.9412919093974,-477.273754695347,18.1174015755561,-554.169087012618,-51.4969267375888,45.5737324981704,-382.2373310292,-354.254836421729],"Archive503_field3":[-23839410.212853,-24387731.6644694,-0.529904995565014,-0.134153962378052,-4.16684938021911,-2.11189101416926,-0.26264854490544,-0.754479377096173,6.70711965587482,0.298969080027506,-28530965.8451228,-19.6182940373405,-18.6610235339466,-0.521080406442624,-46.8039562983803,14.2995663610792,-1.05907858230806,3.96990860819501,0.31826769067281,-0.283279210713388,0.0423657541490524,1.52515288483698,-0.842377329635488,-11.9196769683058,0.651460844173835,-37.9562455139606,0.318843920716861,41.187023683174,-1.82395282338005,-0.0729185700930701,-8.58275205737668,-0.314278829304446,1.50654888523718,-1.37367063086843,-25.5114920016877,7.95692809545258,-4.06145766190072,-5.77112872897224,-23.1510862935351,3.89008300788888,-0.104540345065075,-1.26011148313335,2.20313190045231,0.547477105222946,-19.7104459983156,-3.00642982882345,-0.914348436573863,0.775611275898694,-2.15223636745047,-23839281.4852745,-24384922.1228308,0,0,0,0,0,0,-37.2283410347795,0,-28536693.0996464,-624.239349060903,73.8188032256938,0,-140.76546759257,-363.08832634901,0,27.6204252344628,0,0,0,-9.19283158863201,2.52551656161314,-4.83314219711966,-25.4945963850055,-42.0368590619465,0,1582.52007465587,60.2403976547211,0,44.7649871859127,0,0,-4.59464040099876,178.898225568524,-26.8189190332701,-32.8602151471553,-42.4531491730967,56.712597184181,-47.6497707973318,0,0,0,30.2458203199398,19.622447399656,6.77817144916717,-9.31813584972112,11.5444864881515,20.5554138231581,-23840557.0228106,-24388997.2157005,0,0,0,0,0,0,-1886.9292160085,0,-28537821.0629416,-764.288600826458,232.467644205155,0,-605.768876971342,-418.428825462088,0,78.8050402600878,0,0,0,-41.0962028668315,17.8386065723793,2.1112770531142,-50.1079750260604,-45.508685571279,0,-538.946919228299,87.7713591873476,0,47.8338731867172,0,0,-7.11790902832008,268.40912778877,-50.1953581079466,-63.4223901862399,-71.0428340764452,134.723972596259,-124.919447173509,0,0,0,56.0988540554812,48.3736267055424,14.0458021990208,-17.0869864183583,20.4313052891033,39.9226682169086],"Archive503_field4":[23842181.208931,24392883.047409,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,1912.1793765913,96.524224962471,28532473.3260623,2332.61023736221,700.792572006114,124.876797838399,2013.04918831962,1677.43474435765,149.869470322788,1254.34199865739,29.7768404838104,28.4488752804676,2.57119859419868,331.057451123922,186.614058524107,401.09357536363,37.6425924589137,897.138821004432,30.9600462846505,5333.33555192286,598.018478123358,29.0681618049719,798.872414411013,34.9301251166947,134.210608268926,265.815780349044,1307.42537719983,560.968942942507,396.497439365953,317.095246379758,1302.08664424861,614.171456147227,21.3054234413802,127.69863806709,478.04032209843,126.107473172386,1393.48312561676,240.859597891384,101.768766438911,350.208291106508,355.478615929568,23839537.6306962,24385840.1143196,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942435,59861.9101272251,96.524224962471,28536904.0322348,1214.08382822295,799.262698645369,124.876797838399,3650.46600073212,3177.77389895904,149.869470322788,1349.32313983971,29.7768404838104,28.4488752804676,2.57119859419868,363.331018886037,215.463899248717,403.720579820586,46.3129730718791,889.170716424013,30.9600462846505,51000.052844099,784.239874616626,29.0681618049719,703.739897810589,34.9301251166947,134.210608268926,273.793012806017,1574.11323929208,582.73761314975,361.582138796777,321.645997533817,1381.86140673333,536.332564726897,21.3054234413802,127.69863806709,478.04032209843,137.361794382231,1373.70807209964,235.927854234245,93.0413442953236,381.967560952194,358.770341358382,23846129.3248203,24398554.6677793,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,113784.175613146,96.524224962471,28541514.0708449,2775.6952994406,1524.08068928824,124.876797838399,7939.10700161071,7004.29973650714,149.869470322788,1387.96683846173,29.7768404838104,28.4488752804676,2.57119859419868,377.086112288524,236.335924411402,403.000536603973,62.7410548239088,886.608548213264,30.9600462846505,97506.9491612577,920.830859206783,29.0681618049719,597.517789651888,34.9301251166947,134.210608268926,282.208165942349,2106.04620246935,568.008988100056,333.740631947773,329.796142082741,1453.26652188879,485.927196654325,21.3054234413802,127.69863806709,478.04032209843,146.383604638869,1362.74397733199,233.629008484835,92.6011785953492,387.123960953323,360.270957998527],"Archive503_field5":[1439696.88023682,4733037.15977415,3515974.30891269,14779328.8967868,11893431.1958934,12985746.9027395,14578781.5172907,2931333.7412861,5148849.66877865,8341888.23002328,5476081.96526582,2845606.25782127,4129092.68624722,5121753.02587607,3198467.5305708,6349923.55239929,-30203658.2036334,8184989.68984941,12364073.5450944,7759642.02868599,6026548.86829716,5768633.44239826,6297236.19819934,12628667.7816559,6929216.64370946,11096282.3447192,14295878.1329663,7012066.73334169,9533266.9107761,4873211.97922567,9451359.52196708,18963771.8538103,13401939.250018,12302096.0184644,8260699.87666943,11077426.2486594,12114036.830983,11475857.6460893,12840365.5587191,7277943.33059188,14219994.7688699,17769870.0250825,22944709.0753326,17393597.5661726,16478210.2161944,16683208.4409724,12610136.4685562,12462251.5742766,17309964.1548524,1577825.14584246,2707202.78532243,1693282.88751832,6535149.49824635,4477418.46282682,6078262.90482946,12531571.9835014,6059465.73798751,1838650.58639861,663411.573501346,2111591.21506934,1594500.81113157,2266442.76095735,-2488479.30523276,-305615.739386115,3091327.29954288,-36045405.0270609,6884656.61590899,5679952.59570492,5783242.18486764,3735810.28756045,840660.802253428,3221256.02592505,5837615.72400517,2524745.75586188,5205900.45353613,8449825.34555884,3848540.93477701,5914755.92262958,-1195529.1900473,4826625.52981957,11747222.3308444,4427377.12134036,5133000.13455619,3750476.76477066,5028336.35390349,5661072.555561,5355008.58429014,6028081.99800705,3363858.31360559,6406268.47841509,9367815.45769357,13307168.9777071,8182500.41031917,7664488.75748755,7956816.8327088,6434679.90235584,5046725.44019023,7912269.29371079,2139258.76242483,1148172.71589823,537289.124781028,-613460.61298498,-1707213.06066747,317415.203159526,11009719.1059355,9560755.46371753,-967425.201294214,-7374328.27963476,-856031.134111271,763231.536309463,656730.741652254,-10268123.4094185,-3283536.88808386,55163.5635205681,-41985990.2259034,5631691.29871186,-631773.679550735,4138239.81550913,1905558.76311517,-3344813.3874654,571311.183125505,-27157.0508605853,-1220518.83785705,30168.9509911132,3331275.03459711,1358395.45691077,3057492.8632553,-6372886.46011774,498159.982477951,5203789.82655329,-3406019.13550584,-1003906.14706041,-93839.2413726162,-36786.6729520865,-71104.5812259332,71931.7143512186,233309.135040516,-18194.6620871342,-402511.692306416,2069692.21220722,4751252.86559015,212869.416226098,75014.9227354095,432905.542883646,1060568.11684331,-1334422.00666917,-259920.07757506]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive504.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive504.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive504.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive504_field1":[-809.129447530646,-684.577773257811,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-24.8334307819574,73.196314959522,-839.293943397358,-510.74623563419,133.126986303063,-124.864774752957,151.698544383023,-62.856969614827,29.046584949239,30.5214785047545,-25.9875900678296,22.0588725759823,-2.06688692183117,72.4394635860172,102.715031286893,49.5025892852573,111.014249357008,61.9664205751707,-14.8177109808074,-554.091227512889,-471.434546468647,-28.1732220450353,-306.369704551026,-34.4491555534425,-133.609441877792,-247.339393379417,-347.245756040677,-355.08550382863,-223.506073885188,-102.920006344304,-56.5043071968663,136.963077472056,-3.70458777395125,-127.385224665895,-27.0612754868743,-48.7389823273559,-121.527456311307,-93.1398250647679,-115.851094069973,6.48490608524487,-30.2376073278239],"Archive504_field2":[-1104.01850819828,-2535.11270056617,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-854.069718408055,-62.9223766314668,-1666.22215201076,-196.030107451074,-108.15348496249,1.73281974410524,-251.359843264814,-684.177407349936,-147.027732205933,-133.341344263217,-14.5363472600491,17.9650951959676,1.52939225288104,-132.11224983399,-54.6414871995954,-48.890594634,-9.88679477261066,-188.190672694242,-27.1838170100698,-978.559180046811,-48.0747981280184,-7.15734520064289,-98.1255197395209,5.77661858898994,12.6887514366138,-68.4065361163797,-302.121616838406,-88.5501655127086,-220.147456369236,-105.075799735515,-507.699484875363,-141.108802038541,-20.9808745633161,8.9412919093974,-477.273754695347,-123.308116679182,-232.732925948426,-66.2744567604902,-72.3259364372832,-49.7546896901133,-56.1847793395475],"Archive504_field3":[1368.77585064378,2625.91757909697,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,854.43067781185,96.524224962471,1865.66625720541,547.073596732447,171.522508119685,124.876797838399,293.588520167325,687.058748112008,149.869470322788,136.789892682311,29.7768404838104,28.4488752804676,2.57119859419868,150.668916637867,116.344616444643,69.5758333734565,111.453632830768,198.130175813807,30.9600462846505,1124.54219896837,473.879433842774,29.0681618049719,321.700191934717,34.9301251166947,134.210608268926,256.62468646009,460.279356966304,365.960171113688,313.719409041608,147.083144499871,510.834125401296,196.648362829108,21.3054234413802,127.69863806709,478.04032209843,132.59102547787,262.551970965773,114.312425536307,136.574218206584,50.1755234461377,63.8047202512895],"Archive504_field4":[2880851.51218263,4892658.50172371,8242113.96332349,15569348.5080002,14879115.8572858,12977694.282484,6150165.22353762,2980782.32721449,5123954.55542523,3646788.2954335,5791990.63346932,4317881.39608773,4391001.39044248,5406373.73295309,3921781.76970302,6572756.95927813,2115241.36460238,2679445.05067977,9686621.709677,5735250.17082337,5757378.04775961,7797820.13386029,6442605.73913329,12595753.5071235,8306399.69629558,10970537.0176863,11136018.9183313,5903538.42148905,6713665.91156207,11002013.6948064,8286041.17330408,12818145.9486863,16395641.6258048,13366902.9576708,7843818.7270751,11555372.3708106,12142531.980309,11397833.5739712,12659977.9257428,6974127.9150809,14307741.929095,15610213.4678266,17262129.277202,17228494.3195467,16414525.8979891,16401488.3363321,11719836.9049415,14011369.9025945,17467866.9779851],"Archive504_field5":[-313.177143664149,-472.17742067993,-279.145284437359,-877.43625447038,-930.029659946747,-718.893496575918,123.792981737429,-239.902579783931,-493.685661920005,-347.922271897081,-526.783339446445,-312.902840714898,-30.4731257290842,-427.129454949491,-207.196469990522,-633.559001874661,158.707732814923,170.435230516748,-212.047518130282,-27.2472852565027,276.818733187662,-125.126370404839,46.4658160509413,-734.999012932509,-185.258367216796,-658.254398499939,-492.166944229169,-588.25787932487,-402.623627716129,-411.754747153084,-400.620701844376,-586.978158436526,-1041.59541759197,-871.612178445434,-569.679625888414,-752.52427707452,-861.918070495102,-618.931926536453,-1084.60564375298,-236.73745008053,-780.697129453588,-991.738957652349,-1209.16740553159,-1291.16505314244,-1267.06399926656,-1130.15702888728,-601.226022606376,-869.903123499428,-1253.24912586743],"Archive504_field6":[36.2015018848417,54.5810322705263,619.079698421201,852.837481641788,753.624886741806,754.260646119856,806.423951375813,93.3571187650162,72.136510597252,48.7936325806293,60.8931668280515,189.210922277393,460.059148834444,162.999968449833,215.599220091912,117.236758853105,394.950524112419,472.148859582678,856.396023740991,611.206986613854,913.215390860091,735.103253062176,758.124332943861,659.523412584875,736.670316709225,563.243149041341,744.780432934137,34.5790651316189,346.888764847031,790.07746885886,516.618943973945,829.467834868501,774.621234406418,609.606632831073,325.863657283991,523.827713313438,500.894402647002,651.552290468606,317.728624058264,537.325199200307,796.303698515455,751.08489762394,766.741879738759,623.557827085699,544.814134420331,691.263185511801,700.870312101063,710.239128811025,702.369109540557],"Archive504_field7":[349.378645548991,526.758452950456,898.22498285856,1730.27373611217,1683.65454668855,1473.15414269577,682.630969638385,333.259698548947,565.822172517257,396.71590447771,587.676506274497,502.113762992291,490.532274563528,590.129423399324,422.795690082434,750.795760727766,236.242791297497,301.713629065931,1068.44354187127,638.454271870357,636.39665767243,860.229623467015,711.65851689292,1394.52242551738,921.928683926021,1221.49754754128,1236.94737716331,622.836944456489,749.51239256316,1201.83221601194,917.239645818322,1416.44599330503,1816.21665199839,1481.21881127651,895.543283172404,1276.35199038796,1362.8124731421,1270.48421700506,1402.33426781124,774.062649280837,1577.00082796904,1742.82385527629,1975.90928527035,1914.72288022814,1811.87813368689,1821.42021439908,1302.09633470744,1580.14225231045,1955.61823540798],"Archive504_field8":[-749.442173686616,-604.822215713753,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-14.7292642410054,73.196314959522,-727.270576756803,-504.29458016504,127.637358354074,-124.864774752957,134.241104531973,-80.8299029783101,29.046584949239,39.3551770967903,-25.9875900678296,22.0588725759823,-2.06688692183117,73.8176968672131,99.9956006585694,40.0454345616365,103.47929988573,68.1957708244046,-14.8177109808074,-621.925333360168,-436.689814506521,-28.1732220450353,-276.087431197395,-34.4491555534425,-133.609441877792,-239.866025426407,-317.621271115292,-325.124253638009,-224.869361304207,-100.469993626461,-69.6559652103467,130.070114416373,-3.70458777395125,-127.385224665895,-27.0612754868743,-50.8792828512241,-130.182205471528,-84.6059187067635,-105.258241828842,-1.16205645946747,-17.5352671197141],"Archive504_field9":[-949.460738600943,-2085.0047683065,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-897.798792062055,-62.9223766314668,-1466.16979159382,-220.807725321467,-108.634921169165,1.73281974410524,-257.52153096568,-660.870872309778,-147.027732205933,-132.52208360541,-14.5363472600491,17.9650951959676,1.52939225288104,-123.780506297912,-59.1862083898557,-68.2120152713849,-8.36053163191477,-189.692312522572,-27.1838170100698,-1161.56412755036,-55.9574376164343,-7.15734520064289,-92.5008450772076,5.77661858898994,12.6887514366138,-74.627660361459,-266.827604924153,-95.2045237296859,-198.195173140073,-108.207824616335,-479.596580672008,-138.063655066393,-20.9808745633161,8.9412919093974,-477.273754695347,-133.72136807799,-232.486280185875,-81.6348172088256,-72.8552333626998,-94.1607963572198,-100.365840051819],"Archive504_field10":[1209.60293726692,2170.95711530231,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,897.919607901045,96.524224962471,1636.63568016783,550.51709795925,167.609192304709,124.876797838399,290.410077402407,665.795601579771,149.869470322788,138.242296738152,29.7768404838104,28.4488752804676,2.57119859419868,144.120318172516,116.198654960527,79.0981406647081,103.816491917273,201.578363393733,30.9600462846505,1317.58200605768,440.26041034635,29.0681618049719,291.171214245457,34.9301251166947,134.210608268926,251.207081597806,414.825556848241,338.776743065797,299.745819502768,147.658907376089,484.628552276553,189.683440275055,21.3054234413802,127.69863806709,478.04032209843,143.073777136497,266.453142402368,117.568723991263,128.012431041804,94.1679666651076,101.886149413289],"Archive504_field11":[3142929.93827025,4738597.88829813,8080225.35404954,15565144.5671058,15145769.0614645,13252155.8422384,6140791.19774389,2997927.59841567,5090006.12486557,3568765.03202345,5286602.68484893,4516899.92571316,4412715.51955035,5308668.56313294,3803372.78497286,6753985.98048202,2125185.81467028,2714146.41294243,9611472.36065934,5743387.7852632,5724877.96118991,7738427.83989587,6401916.33650982,12544802.9997965,8293458.39700118,10988310.9932454,11127294.1070643,5602897.89983335,6742441.0956479,10811406.1938338,8251276.88866308,12742022.3731936,16338267.2715476,13324703.7459169,8056101.40046382,11481768.9445723,12259547.5615175,11428983.8048076,12615076.5363483,6963289.55852107,14186336.7382191,15678042.5525788,17774825.4711564,17224406.6442699,16299238.9586765,16385077.3220848,11713359.1448711,14214596.2690668,17592291.8535361],"Archive504_field12":[-330.252267697788,-469.865744411337,-279.145284437359,-877.43625447038,-930.029659946747,-718.893496575918,123.792981737429,-239.902579783931,-493.685661920005,-347.922271897081,-495.801093680552,-312.902840714898,-30.4731257290842,-427.129454949491,-207.196469990522,-633.559001874661,158.707732814923,170.435230516748,-212.047518130282,-27.2472852565027,276.818733187662,-125.126370404839,46.4658160509413,-734.999012932509,-185.258367216796,-658.254398499939,-492.166944229169,-588.25787932487,-402.623627716129,-411.754747153084,-400.620701844376,-586.978158436526,-1041.59541759197,-871.612178445434,-569.679625888414,-752.52427707452,-861.918070495102,-618.931926536453,-1084.60564375298,-236.73745008053,-780.697129453588,-991.738957652349,-1209.16740553159,-1291.16505314244,-1267.06399926656,-1130.15702888728,-601.226022606376,-869.903123499428,-1253.24912586743],"Archive504_field13":[38.1752893958185,54.3138156026192,603.094947506928,852.377161463247,781.476427325196,781.906548095976,805.458293247729,93.6978774760189,69.6608136221929,46.2439875173823,57.3117949074575,204.275978649511,463.27971498564,155.711315139661,203.834278803062,131.527548986286,396.517291892731,475.891676130234,848.300510596744,611.255066672529,909.8362786304,728.767977971876,753.709850883344,655.743743790353,734.872374093515,566.058999599781,744.760891371594,13.2610701968869,349.457205016921,771.534694445428,512.884931851397,822.223528273515,768.719534444029,604.878672425202,346.208999575944,517.135825892072,512.466157391616,655.018534608961,314.769106645338,536.235102401294,783.989180822734,759.129363655383,816.443590406466,624.044879957526,534.654248580564,691.172064646379,699.470905391049,732.414589903419,716.304202993375],"Archive504_field14":[368.427557093607,524.179560013957,882.240231944287,1729.81341593363,1711.50608727194,1500.80004467189,681.6653115103,333.60045725995,563.346475542198,394.166259414463,553.112888588009,517.178819364408,493.752840714725,582.840770089152,411.030748793584,765.086550860946,237.809559077808,305.456445613487,1060.34802872703,638.502351929032,633.017545442738,853.894348376715,707.244034832403,1390.74275672286,920.130741310311,1224.31339809972,1236.92783560076,601.518949521757,752.08083273305,1183.28944159851,913.505633695773,1409.20168671004,1810.314952036,1476.49085087064,915.888625464358,1269.66010296659,1374.38422788672,1273.95046114541,1399.37475039831,772.972552481824,1564.68631027632,1750.86832130773,2025.61099593805,1915.20993309997,1801.71824784713,1821.32909353366,1300.69692799742,1602.31771340285,1969.5533288608]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive505.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive505.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive505.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive505_field1":[-462.65937715415,-870.630545651028,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-233.845892459415,-326.403171498296,-124.864774752957,-28.1732220450353,-423.487072286323,-282.40662509138,-133.609441877792,-155.190487050673,-25.9875900678296,29.046584949239,108.893869210636,-127.385224665895,12.5939094002324,67.7975167558258,-92.5910613846002,-26.0792662763932,113.193020046783,59.8090155677755,-462.65937715415,-870.630545651028,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-233.845892459415,-326.403171498296,-124.864774752957,-28.1732220450353,-423.487072286323,-282.40662509138,-133.609441877792,-155.190487050673,-25.9875900678296,29.046584949239,108.893869210636,-127.385224665895,12.5939094002324,67.7975167558258,-92.5910613846002,-26.0792662763932,113.193020046783,59.8090155677755,-462.65937715415,-870.630545651028,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-233.845892459415,-326.403171498296,-124.864774752957,-28.1732220450353,-423.487072286323,-282.40662509138,-133.609441877792,-155.190487050673,-25.9875900678296,29.046584949239,108.893869210636,-127.385224665895,12.5939094002324,67.7975167558258,-92.5910613846002,-26.0792662763932,113.193020046783,59.8090155677755],"Archive505_field2":[-1111.18961814651,-2655.18427992495,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-334.818194997265,-784.034959972729,1.73281974410524,-7.15734520064289,-33.4288256765458,-98.5219807664039,12.6887514366138,-188.280147257398,-14.5363472600491,-147.027732205933,-106.923835026165,8.9412919093974,-498.58295923785,-39.4673959179198,-86.0311665452345,-20.7478609888404,-169.057075024481,-244.890074298591,-1111.18961814651,-2655.18427992495,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-334.818194997265,-784.034959972729,1.73281974410524,-7.15734520064289,-33.4288256765458,-98.5219807664039,12.6887514366138,-188.280147257398,-14.5363472600491,-147.027732205933,-106.923835026165,8.9412919093974,-498.58295923785,-39.4673959179198,-86.0311665452345,-20.7478609888404,-169.057075024481,-244.890074298591,-1111.18961814651,-2655.18427992495,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-334.818194997265,-784.034959972729,1.73281974410524,-7.15734520064289,-33.4288256765458,-98.5219807664039,12.6887514366138,-188.280147257398,-14.5363472600491,-147.027732205933,-106.923835026165,8.9412919093974,-498.58295923785,-39.4673959179198,-86.0311665452345,-20.7478609888404,-169.057075024481,-244.890074298591],"Archive505_field3":[0,12.8606989050895,0,0,0,0,0,0,5.26137665025987,0.831104453551012,0,0,-0.841291940624299,0.0454974499809407,0,0.207710814611791,0,0,-1.28278192794548,0,0,-0.979470015898012,0.497054724563787,-0.803984805826173,-3.38951384105136,0.126806383469962,0,-16.1174026475546,0,0,0,0,0,0,8.32824764565714,-6.10024889714291,0,0,-0.26120888478651,-3.9246307444453,0,2.22341213083502,0,0,-5.19682047351652,0,0,2.90650194743285,-4.57103078934997,18.0131515289493,-3.13573617407019,2.52484900635054,0,-45.0955042001986,0,0,0,0,0,0,11.3951186410544,-13.0316022478368,0,0,0.318874171051277,-7.89475893887155,0,4.23911344705824,0,0,-9.11085901908756,0,0,6.7924739107637,-9.63911630326372,36.8302878637249,-2.88195850708902,4.92289162923113],"Archive505_field4":[1203.65944799401,2794.309665187,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,408.429684530426,849.26470523518,124.876797838399,29.0681618049719,424.805243084267,299.098787459356,134.210608268926,243.994967706457,29.7768404838104,149.869470322788,152.617911064987,127.69863806709,498.741991210237,78.4546874336413,126.391112539054,33.3353904536195,203.480817786894,252.087847610738,1203.65944799401,2794.32655179191,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942435,408.480703130778,849.286207270665,124.876797838399,29.0681618049719,424.804490336244,299.124531451567,134.210608268926,244.005009546517,29.7768404838104,149.869470322788,152.700976393078,127.69863806709,498.741991210237,78.5023972396305,126.472766190741,37.8823902774383,203.476748658164,252.10045953084,1203.65944799401,2794.64393293318,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,408.554737887362,849.364274902547,124.876797838399,29.0681618049719,424.804529708066,299.202957552799,134.210608268926,244.031701229798,29.7768404838104,149.869470322788,152.88423398255,127.69863806709,498.741991210237,78.7420873524871,126.757164801713,49.6696282375065,203.472995967477,252.135879428433],"Archive505_field5":[2880851.51218263,4892658.50172371,8242113.96332349,15569348.5080002,14879115.8572858,12977694.282484,6150165.22353762,2980782.32721449,9755542.79744514,5930644.45879585,5406373.73295309,11002013.6948064,7017669.5208221,13474571.9746154,16395641.6258048,15041788.8272108,9686621.709677,2115241.36460238,5505040.61223867,15610213.4678266,16102266.4918056,13322155.289457,15853330.4379555,17362664.5431186,3324095.27882402,12354841.9898433,1440425.75609131,2446329.25086186,4121056.98166174,7784674.25400008,7439557.92864288,6488847.14124202,3075082.61176881,1490391.16360724,4877771.39872257,2965322.22939793,2703186.86647654,5501006.84740321,3508834.76041105,6737285.98730771,8197820.81290242,7520894.41360537,4843310.8548385,1057620.68230119,2752520.30611934,7805106.7339133,8051133.24590279,6661077.6447285,7926665.21897775,8681332.27155932,1662047.63941201,6177420.99492165,-1.27837580521373e-10,6.39187902606864e-11,0,0,0,0,0,0,0,-5.11350322085491e-10,2.55675161042745e-10,0,0,0,0,0,0,0,0,0,1.02270064417098e-09,0,0,0,0,0],"Archive505_field6":[-273.792124853197,-463.272515436099,-279.145284437359,-877.43625447038,-930.029659946747,-718.893496575918,123.792981737429,-239.902579783931,-793.504477175478,-586.003592538296,-427.129454949491,-411.754747153084,-408.509030839481,-880.079137928074,-1041.59541759197,-1081.30437401166,-212.047518130282,158.707732814923,43.2381266279682,-991.738957652349,-1079.71540204242,-821.023721179278,-1069.65228339388,-1238.25389968396,-20.3236618007238,-925.888441446204,-273.792124853197,-463.272515436099,-279.145284437359,-877.43625447038,-930.029659946747,-718.893496575918,123.792981737429,-239.902579783931,-793.504477175478,-586.003592538296,-427.129454949491,-411.754747153084,-408.509030839481,-880.079137928074,-1041.59541759197,-1081.30437401166,-212.047518130282,158.707732814923,43.2381266279682,-991.738957652349,-1079.71540204242,-821.023721179278,-1069.65228339388,-1238.25389968396,-20.3236618007238,-925.888441446204,-273.792124853197,-463.272515436099,-279.145284437359,-877.43625447038,-930.029659946747,-718.893496575918,123.792981737429,-239.902579783931,-793.504477175478,-586.003592538296,-427.129454949491,-411.754747153084,-408.509030839481,-880.079137928074,-1041.59541759197,-1081.30437401166,-212.047518130282,158.707732814923,43.2381266279682,-991.738957652349,-1079.71540204242,-821.023721179278,-1069.65228339388,-1238.25389968396,-20.3236618007238,-925.888441446204],"Archive505_field7":[67.2690068284903,53.5516757210758,622.887136591152,843.087283963858,758.61525387355,738.915484161049,804.082912929761,90.5737270970176,305.772669391119,55.789517390055,155.864715965018,789.673351417014,389.834758062688,615.274730764938,777.005127906213,595.685800304602,860.992857971309,394.951584347442,651.828830273354,749.072104660984,753.111454970948,663.52654971945,687.922546461406,710.175388829636,355.30412684549,445.191982932508,67.2690068284903,53.5516757210758,622.887136591152,843.087283963858,758.61525387355,738.915484161049,804.082912929761,90.5737270970176,305.772669391119,55.789517390055,155.864715965018,789.673351417014,389.834758062688,615.274730764938,777.005127906213,595.685800304601,860.992857971309,394.951584347442,651.828830273354,749.072104660984,753.111454970948,663.52654971945,687.922546461406,710.175388829636,355.30412684549,445.191982932508,67.2690068284903,53.5516757210758,622.887136591152,843.087283963858,758.61525387355,738.915484161049,804.082912929761,90.5737270970176,305.772669391119,55.789517390055,155.864715965018,789.673351417014,389.834758062688,615.274730764938,777.005127906213,595.685800304602,860.992857971309,394.951584347442,651.828830273354,749.072104660984,753.111454970948,663.52654971945,687.922546461406,710.175388829636,355.30412684549,445.191982932508],"Archive505_field8":[341.061131681687,516.824191157175,902.032421028511,1720.52353843424,1688.6449138203,1457.80898073697,680.289931192332,330.476306880949,1099.2771465666,641.793109928351,582.994170914508,1201.4280985701,798.343788902169,1495.35386869301,1818.60054549819,1676.99017431626,1073.04037610159,236.24385153252,608.590703645386,1740.81106231333,1832.82685701336,1484.55027089873,1757.57482985529,1948.4292885136,375.627788646214,1371.08042437871,341.061131681687,516.824191157175,902.032421028511,1720.52353843424,1688.6449138203,1457.80898073697,680.289931192332,330.476306880949,1099.2771465666,641.793109928351,582.994170914508,1201.4280985701,798.343788902169,1495.35386869301,1818.60054549819,1676.99017431626,1073.04037610159,236.24385153252,608.590703645386,1740.81106231333,1832.82685701336,1484.55027089873,1757.57482985529,1948.4292885136,375.627788646214,1371.08042437871,341.061131681687,516.824191157175,902.032421028511,1720.52353843424,1688.6449138203,1457.80898073697,680.289931192332,330.476306880949,1099.2771465666,641.793109928351,582.994170914508,1201.4280985701,798.343788902169,1495.35386869301,1818.60054549819,1676.99017431626,1073.04037610159,236.24385153252,608.590703645386,1740.81106231333,1832.82685701336,1484.55027089873,1757.57482985529,1948.4292885136,375.627788646214,1371.08042437871],"Archive505_field9":[272.626252534057,272.670617354137,251.711747143342,252.522213449037,253.03234180939,253.079865679692,252.716062984572,241.587965748259,252.651327932161,271.573450880508,271.910754814063,254.7782595125,247.016835677864,253.613536973201,252.793461706597,254.062119544457,253.050379626232,255.164413896603,252.915278070883,253.047041826985,253.231650348466,253.405042897249,253.036021536055,253.176992087747,251.133598482906,254.155955456169,247.204681346528,247.927934042324,253.379770430723,253.105390511637,252.993018954569,252.985817238996,253.062583361207,256.149836990525,253.073555954913,248.961682078596,248.258290480011,252.587950109381,254.346645149747,252.863175998549,253.052823409796,252.739683522415,252.986063293609,252.472178120416,253.036701980852,252.988450012361,252.945859405044,252.897364139199,252.996567666672,252.958654936939,253.280515698241,252.728345210067,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive505_field10":[-0.000298833937898396,8.87923603554086,6.04685822302677e-09,4.79907912303853e-16,1.47224242993862e-24,-4.02260425475793e-20,2.04409681039455e-16,4.23785849092242e-08,3.61311821070929e-08,-0.000560928815590364,-0.000262222458629826,-3.33674105818803e-12,5.80173392292999e-08,-5.38558858271853e-12,6.2496273680054e-16,-2.12646855917179e-12,1.42081644257101e-16,-2.49634484275247e-12,-1.54108853700781e-12,-1.23357980212943e-20,-2.33621947884394e-20,5.21185785399641e-16,8.89324886151981e-17,-2.65742842083827e-20,3.18617057769313e-08,-3.97861059732031e-12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive505_field11":[-462.65937715415,-610.197834167439,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-231.835682952193,-355.997057306683,-124.864774752957,-28.1732220450353,-403.946231878857,-258.611335401375,-133.609441877792,-147.83483117918,-25.9875900678296,29.046584949239,106.577688898879,-127.385224665895,12.5939094002324,58.3159975289764,-84.8702727817822,-12.1887839955331,116.309850787864,50.2069106518014,-462.65937715415,-610.197834167439,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-231.835682952193,-355.997057306683,-124.864774752957,-28.1732220450353,-403.946231878857,-258.611335401375,-133.609441877792,-147.83483117918,-25.9875900678296,29.046584949239,106.577688898879,-127.385224665895,12.5939094002324,58.3159975289763,-84.8702727817822,-12.1887839955331,116.309850787864,50.2069106518014,-462.65937715415,-610.197834167439,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-231.835682952193,-355.997057306683,-124.864774752957,-28.1732220450353,-403.946231878857,-258.611335401375,-133.609441877792,-147.83483117918,-25.9875900678296,29.046584949239,106.577688898879,-127.385224665895,12.5939094002324,58.3159975289764,-84.8702727817822,-12.1887839955331,116.309850787864,50.2069106518014],"Archive505_field12":[-1111.18961814651,-2223.73214732912,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-321.302723726717,-863.046710589226,1.73281974410524,-7.15734520064289,-40.9951131782944,-96.3286650400555,12.6887514366138,-185.003031231137,-14.5363472600491,-147.027732205933,-104.224392816003,8.9412919093974,-498.58295923785,-54.4399657294322,-98.6192779955115,-61.4896283921478,-170.269546673015,-235.615181447407,-1111.18961814651,-2223.73214732912,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-321.302723726717,-863.046710589226,1.73281974410524,-7.15734520064289,-40.9951131782944,-96.3286650400555,12.6887514366138,-185.003031231137,-14.5363472600491,-147.027732205933,-104.224392816003,8.9412919093974,-498.58295923785,-54.4399657294322,-98.6192779955115,-61.4896283921478,-170.269546673015,-235.615181447407,-1111.18961814651,-2223.73214732912,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-321.302723726717,-863.046710589226,1.73281974410524,-7.15734520064289,-40.9951131782944,-96.3286650400555,12.6887514366138,-185.003031231137,-14.5363472600491,-147.027732205933,-104.224392816003,8.9412919093974,-498.58295923785,-54.4399657294322,-98.6192779955115,-61.4896283921478,-170.269546673015,-235.615181447407],"Archive505_field13":[0,12.854084469739,0,0,0,0,0,0,5.06869654663647,1.71959089635065,0,0,-0.846985687656198,0.111962049902695,0,0.133206882463032,0,0,-1.19802334425689,0,0,-0.793355559200729,0.55652182653769,-0.788664257699042,-3.67461509747244,0.306828609643763,0,-8.45694341076289,0,0,0,0,0,0,6.69220225072652,-4.1950412832072,0,0,-0.7669210140472,-3.37642817098128,0,2.04459833650936,0,0,-4.88088718276811,0,0,3.05917799459797,-3.25874439846012,17.180023979186,-3.86412725519952,3.15323338153281,0,-29.7679712912647,0,0,0,0,0,0,8.31570795481655,-10.109673462765,0,0,-0.686856340438198,-6.86481839186526,0,3.95598979055568,0,0,-8.56375102127933,0,0,6.91171154839666,-7.07401062345793,35.148712216071,-4.05363941292661,5.99963815342186],"Archive505_field14":[1203.65944799401,2305.96862237437,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,396.243505749682,933.587963966306,124.876797838399,29.0681618049719,406.022012874158,275.969286410612,134.210608268926,236.814857258913,29.7768404838104,149.869470322788,149.073683421401,127.69863806709,498.741991210237,79.7815445417337,130.111624810981,62.6910108899638,206.235793960806,240.905254715392,1203.65944799401,2305.94830379596,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942435,396.267598643999,933.595805389714,124.876797838399,29.0681618049719,406.021853748625,275.989917884106,134.210608268926,236.823645898891,29.7768404838104,149.869470322788,149.14875423074,127.69863806709,498.741991210237,79.8362324162655,130.151237448841,64.9976467190897,206.239257645032,240.925694948569,1203.65944799401,2306.12492983411,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,396.298341105418,933.641116793506,124.876797838399,29.0681618049719,406.02171041123,276.054632705258,134.210608268926,236.847859879942,29.7768404838104,149.869470322788,149.3146532007,127.69863806709,498.741991210237,80.0764459310574,130.302597137244,71.8677453767848,206.242895409804,240.979756958265],"Archive505_field15":[3068107.49654817,4649231.55408598,8114476.19211565,15477434.0313406,15190661.2563972,13114114.2946442,6119731.75432204,2972888.84715043,9888844.3767694,5773423.20450017,5244481.47288761,10807770.8462739,7181717.10589246,13451859.4713725,16359712.2291762,15085817.900409,9652824.4241234,2125195.35230069,5474741.99413205,15659935.9300264,16487688.8555151,13354672.7904427,15810738.9271673,17527621.740732,3379061.19226995,12333924.1492133,1534053.74827409,2324615.77704299,4057238.09605782,7738717.01567028,7595330.62819861,6557057.14732209,3059865.87716102,1486444.42357522,4944422.1883847,2886711.60225008,2622240.7364438,5403885.42313696,3590858.55294623,6725929.73568627,8179856.11458811,7542908.95020448,4826412.2120617,1062597.67615035,2737370.99706603,7829967.9650132,8243844.42775755,6677336.39522133,7905369.46358366,8763810.87036598,1689530.59613498,6166962.07460664,0,1.91756370782059e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive505_field16":[-273.792124853197,-448.482024132617,-279.145284437359,-877.43625447038,-930.029659946747,-718.893496575918,123.792981737429,-239.902579783931,-793.504477175478,-586.003592538296,-427.129454949491,-411.754747153084,-408.509030839481,-880.079137928074,-1041.59541759197,-1081.30437401166,-212.047518130282,158.707732814923,43.2381266279682,-991.738957652349,-1079.71540204242,-821.023721179278,-1069.65228339388,-1238.25389968396,-20.3236618007238,-925.888441446204,-273.792124853197,-448.482024132617,-279.145284437359,-877.43625447038,-930.029659946747,-718.893496575918,123.792981737429,-239.902579783931,-793.504477175478,-586.003592538296,-427.129454949491,-411.754747153084,-408.509030839481,-880.079137928074,-1041.59541759197,-1081.30437401166,-212.047518130282,158.707732814923,43.2381266279682,-991.738957652349,-1079.71540204242,-821.023721179278,-1069.65228339388,-1238.25389968396,-20.3236618007238,-925.888441446204,-273.792124853197,-448.482024132617,-279.145284437359,-877.43625447038,-930.029659946747,-718.893496575918,123.792981737429,-239.902579783931,-793.504477175478,-586.003592538296,-427.129454949491,-411.754747153084,-408.509030839481,-880.079137928074,-1041.59541759197,-1081.30437401166,-212.047518130282,158.707732814923,43.2381266279682,-991.738957652349,-1079.71540204242,-821.023721179278,-1069.65228339388,-1238.25389968396,-20.3236618007238,-925.888441446204],"Archive505_field17":[82.2540250106642,51.8419787983178,608.969113322552,834.45825851786,791.031600270795,754.175197204351,800.621466715965,90.3511092103919,316.973494771379,42.6785939709165,146.544217266395,770.921123218145,404.369107188216,613.106585153839,773.667022528974,600.111902743638,857.321191981137,396.212507753587,648.750753564746,755.472284219501,792.70251326254,667.654559713674,685.627648933668,727.717734241422,359.847380234767,444.461329954675,82.2540250106642,51.8419787983178,608.969113322552,834.45825851786,791.031600270795,754.175197204351,800.621466715965,90.3511092103919,316.973494771379,42.6785939709165,146.544217266395,770.921123218145,404.369107188216,613.106585153839,773.667022528974,600.111902743638,857.321191981136,396.212507753587,648.750753564746,755.472284219501,792.70251326254,667.654559713674,685.627648933668,727.717734241422,359.847380234767,444.461329954675,82.2540250106642,51.8419787983178,608.969113322552,834.45825851786,791.031600270795,754.175197204351,800.621466715965,90.3511092103919,316.973494771379,42.6785939709165,146.544217266395,770.921123218145,404.369107188216,613.106585153839,773.667022528974,600.111902743638,857.321191981137,396.212507753587,648.750753564746,755.472284219501,792.70251326254,667.654559713674,685.627648933668,727.717734241422,359.847380234767,444.461329954675],"Archive505_field18":[356.046149863861,500.324002930935,888.114397759911,1711.89451298824,1721.06126021754,1473.06869378027,676.828484978536,330.253688994323,1110.47797194686,628.682186509213,573.673672215886,1182.67587037123,812.878138027696,1493.18572308191,1815.26244012095,1681.41627675529,1069.36871011142,237.504774938665,605.512626936777,1747.21124187185,1872.41791530496,1488.67828089295,1755.27993232755,1965.97163392538,380.171042035491,1370.34977140088,356.046149863861,500.324002930935,888.114397759911,1711.89451298824,1721.06126021754,1473.06869378027,676.828484978536,330.253688994323,1110.47797194686,628.682186509213,573.673672215886,1182.67587037123,812.878138027697,1493.18572308191,1815.26244012095,1681.41627675529,1069.36871011142,237.504774938665,605.512626936777,1747.21124187185,1872.41791530496,1488.67828089295,1755.27993232755,1965.97163392538,380.171042035491,1370.34977140088,356.046149863861,500.324002930935,888.114397759911,1711.89451298824,1721.06126021754,1473.06869378027,676.828484978536,330.253688994323,1110.47797194686,628.682186509213,573.673672215886,1182.67587037123,812.878138027696,1493.18572308191,1815.26244012095,1681.41627675529,1069.36871011142,237.504774938665,605.512626936777,1747.21124187185,1872.41791530496,1488.67828089295,1755.27993232755,1965.97163392538,380.171042035491,1370.34977140088],"Archive505_field19":[272.685663106755,272.614720913223,251.792403479115,252.548853531222,253.074900083344,253.158563049564,252.699093317155,240.976693786391,252.746068741287,272.544818990701,272.564551057707,254.73880720233,246.98805566521,253.717621155341,252.800278519189,254.084937268534,253.050470636135,255.343691637008,252.973452065275,253.064850231593,253.390258466144,253.400253994302,253.059263133563,253.165162864093,251.261521003064,254.193248590745,247.792760181939,248.002022954849,253.358409704727,253.091681392001,252.982992532168,252.970449313297,253.056909731149,256.216380636406,253.057792365667,249.251643871798,248.716934829283,252.660777891259,254.203059547397,252.845251078298,253.050866886155,252.73150243904,252.985284663538,252.478387956475,253.028629293571,252.983961273055,252.916456138566,252.898721662,252.99255105903,252.966551080733,253.104867395439,252.735236077741,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive505_field20":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive506.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive506.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive506.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive506_field1":[-462.65937715415,-1534.83393213803,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-234.989745517706,-319.035545252911,-124.864774752957,-28.1732220450353,-425.383062709281,-283.846535048072,-133.609441877792,-154.581234607247,-25.9875900678296,29.046584949239,109.040633333024,-127.385224665895,12.5939094002324,67.6338049038024,-91.6160444933478,-25.3141574226215,113.528075281868,60.5650438505198,-462.65937715415,-1534.21145605728,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-236.962493070595,-319.232988580766,-124.864774752957,-28.1732220450353,-433.49761466675,-297.62883583964,-133.609441877792,-158.899288696113,-25.9875900678296,29.046584949239,110.469195817633,-127.385224665895,12.5939094002324,70.8924440739341,-95.461494879494,-28.2796327735564,113.940394748278,61.3056144344792],"Archive506_field2":[-1111.18961814651,-4911.69352337864,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-336.071751685085,-791.442222858358,1.73281974410524,-7.15734520064289,-33.8627892944867,-97.7661086128608,12.6887514366138,-188.643655412165,-14.5363472600491,-147.027732205933,-106.698668052228,8.9412919093974,-498.58295923785,-38.860442060941,-87.109799960915,-18.5391394399648,-168.157960484911,-246.17201652742,-1111.18961814651,-4911.44430597549,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-341.217810627244,-793.686466485437,1.73281974410524,-7.15734520064289,-35.2369781372615,-101.301899023332,12.6887514366138,-194.51965199174,-14.5363472600491,-147.027732205933,-108.044431436315,8.9412919093974,-498.58295923785,-42.9675379013612,-87.27544291007,-26.8036968496954,-169.150417205362,-250.174902604662],"Archive506_field3":[0,20.9675800228477,0,0,0,0,0,0,5.31466840618913,0.00453623517709693,0,0,-0.678518052405489,0.0795969465605404,0,0.171992056470729,0,0,-1.28389198490005,0,0,-0.989390696952359,0.489617614972899,-0.809857487401068,-3.27991894143862,0.0582967715320973,0,-96.1202997657539,0,0,0,0,0,0,13.3238189678632,-25.4660794469945,0,0,2.78603397831949,-8.74149060699204,0,4.38475113753973,0,0,-9.31121648622037,0,0,6.85291055559278,-9.74737024655328,36.8082447098851,-1.07417680521733,4.28907791556618],"Archive506_field4":[1203.65944799401,5145.95842445836,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,410.112970386728,853.325536520722,124.876797838399,29.0681618049719,426.729304038847,300.211714940926,134.210608268926,243.888942761315,29.7768404838104,149.869470322788,152.565113510315,127.69863806709,498.741991210237,78.0092585331291,126.419367911909,31.3872924340668,202.9198891679,253.512898402242,1203.65944799401,5146.38990697591,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,415.642083484541,855.86005239335,124.876797838399,29.0681618049719,434.93630399788,314.517745647245,134.210608268926,251.209285261625,29.7768404838104,149.869470322788,154.802264652182,127.69863806709,498.741991210237,83.179987516011,129.710875282298,53.6005846352478,203.949579680739,257.612609248474],"Archive506_field5":[2880851.51218263,4892658.50172371,8242113.96332349,15569348.5080002,14879115.8572858,12977694.282484,6150165.22353762,2980782.32721449,9755542.79744514,5930644.45879585,5406373.73295309,11002013.6948064,7017669.5208221,13474571.9746154,16395641.6258048,15041788.8272108,9686621.709677,2115241.36460238,5505040.61223867,15610213.4678266,16102266.4918056,13322155.289457,15853330.4379555,17362664.5431186,3324095.27882402,12354841.9898433,-1.27837580521373e-10,6.39187902606864e-11,0,0,0,0,0,0,0,-5.11350322085491e-10,2.55675161042745e-10,0,0,0,0,0,0,0,0,0,1.02270064417098e-09,0,0,0,0,0],"Archive506_field6":[-273.792124853197,-439.626099269283,-279.145284437359,-877.43625447038,-930.029659946747,-718.893496575918,123.792981737429,-239.902579783931,-793.504477175478,-586.003592538296,-427.129454949491,-411.754747153084,-408.509030839481,-880.079137928074,-1041.59541759197,-1081.30437401166,-212.047518130282,158.707732814923,43.2381266279682,-991.738957652349,-1079.71540204242,-821.023721179278,-1069.65228339388,-1238.25389968396,-20.3236618007238,-925.888441446204,-273.792124853197,-439.626099269283,-279.145284437359,-877.43625447038,-930.029659946747,-718.893496575918,123.792981737429,-239.902579783931,-793.504477175478,-586.003592538296,-427.129454949491,-411.754747153084,-408.509030839481,-880.079137928074,-1041.59541759197,-1081.30437401166,-212.047518130282,158.707732814923,43.2381266279682,-991.738957652349,-1079.71540204242,-821.023721179278,-1069.65228339388,-1238.25389968396,-20.3236618007238,-925.888441446204],"Archive506_field7":[72.6572331442912,50.8182841031014,625.427500567458,843.326201402003,758.376085671911,738.78685839807,804.304477340441,93.7783223706653,307.284160483604,41.9531275283382,130.55259160875,786.547941030031,397.308625091628,614.304172716966,776.975450429612,595.967881704563,860.870011357327,393.953846153011,651.810765026598,748.951149539326,752.987516668206,663.597440345656,687.822839740868,710.214500535081,357.013172301401,444.59678594628,72.6572331442912,50.8182841031014,625.427500567458,843.326201402003,758.376085671911,738.78685839807,804.304477340441,93.7783223706653,307.284160483604,41.9531275283382,130.55259160875,786.547941030031,397.308625091628,614.304172716966,776.975450429612,595.967881704563,860.870011357327,393.953846153011,651.810765026598,748.951149539326,752.987516668206,663.597440345656,687.822839740868,710.214500535081,357.013172301401,444.59678594628],"Archive506_field8":[346.449357997488,490.444383372384,904.572785004817,1720.76245587238,1688.40574561866,1457.68035497399,680.511495603013,333.680902154597,1100.78863765908,627.956720066635,557.68204655824,1198.30268818311,805.817655931109,1494.38331064504,1818.57086802158,1677.27225571622,1072.91752948761,235.246113338088,608.57263839863,1740.69010719167,1832.70291871062,1484.62116152493,1757.47512313475,1948.46840021904,377.336834102124,1370.48522739248,346.449357997488,490.444383372384,904.572785004817,1720.76245587238,1688.40574561866,1457.68035497399,680.511495603013,333.680902154597,1100.78863765908,627.956720066635,557.68204655824,1198.30268818311,805.817655931109,1494.38331064504,1818.57086802158,1677.27225571622,1072.91752948761,235.246113338088,608.57263839863,1740.69010719167,1832.70291871062,1484.62116152493,1757.47512313475,1948.46840021904,377.336834102124,1370.48522739248],"Archive506_field9":[272.499818950394,272.670731046021,251.745576583237,252.490791412357,253.011649805508,253.03961526718,252.707633970158,241.920728359907,252.189847719815,270.407052126313,271.053671033815,254.668433873262,247.338520056402,253.628810575374,252.838592680166,253.457405105634,253.068081725104,255.053785015077,252.930654137332,253.025578740608,253.113833477844,253.142685467329,253.042414919379,253.079794315879,251.219240525022,253.764203215753,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive506_field10":[-0.000662291335271929,19.6786252978148,1.34013620905738e-08,1.06359690697296e-15,3.26286034185166e-24,-8.915105030875e-20,4.53023379975534e-16,9.39216267866061e-08,8.00758073562443e-08,-0.00124315965208796,-0.000581151068334424,-7.39505929756677e-12,1.28581048515855e-07,-1.19358218773888e-11,1.38507496290986e-15,-4.71279035899363e-12,3.14888739058348e-16,-5.53252944037387e-12,-3.41544066957411e-12,-2.73392379748568e-20,-5.17765127017774e-20,1.15507907891787e-15,1.97096812524825e-16,-5.88953125472968e-20,7.06135715757285e-08,-8.81760399624431e-12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive506_field11":[-462.65937715415,-564.412314929779,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-235.260948007782,-370.685970103529,-124.864774752957,-28.1732220450353,-413.703331367146,-256.952491396222,-133.609441877792,-146.778940898854,-25.9875900678296,29.046584949239,106.411252935965,-127.385224665895,12.5939094002324,58.6456980198334,-84.4141432264519,-11.2984414624159,121.499196023226,49.7666487715342,-462.65937715415,-564.213030499198,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-238.017647076294,-370.903508743316,-124.864774752957,-28.1732220450353,-421.861890614251,-267.728297058821,-133.609441877792,-151.228704159573,-25.9875900678296,29.046584949239,107.743889811172,-127.385224665895,12.5939094002324,61.6027867428293,-88.1936089897521,-13.7670717253966,122.029090389505,50.5174040861306],"Archive506_field12":[-1111.18961814651,-2846.24516699452,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-322.068198888489,-965.419097693929,1.73281974410524,-7.15734520064289,-43.9154110308468,-94.4813266675858,12.6887514366138,-185.583283650662,-14.5363472600491,-147.027732205933,-104.08190220385,8.9412919093974,-498.58295923785,-53.8213003518008,-99.5193746682953,-58.6415017665984,-170.106726494637,-235.387227256912,-1111.18961814651,-2846.00775741919,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-327.96006193526,-967.702634693748,1.73281974410524,-7.15734520064289,-45.7812953721864,-97.2197804348471,12.6887514366138,-191.343147606536,-14.5363472600491,-147.027732205933,-105.328287033647,8.9412919093974,-498.58295923785,-58.2632491230512,-99.8747330699362,-69.7393462871321,-171.370187071066,-238.885746604249],"Archive506_field13":[0,17.2794526014262,0,0,0,0,0,0,5.07104395929549,1.9208532582367,0,0,-0.803655743877082,0.164291718206529,0,0.107899367965787,0,0,-1.16492382177569,0,0,-0.826382184788378,0.524110914822047,-0.776638111096092,-3.95508230793381,0.317806903553124,0,-36.1119591907805,0,0,0,0,0,0,7.41473328311602,-12.8605463209368,0,0,-0.463449697116611,-7.10665808387787,0,4.15078350501434,0,0,-8.59618746036955,0,0,6.80904177827521,-7.10668352145346,35.1643984031189,-4.77854034551632,6.46533557548512],"Archive506_field14":[1203.65944799401,2901.71869611206,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,398.875110629421,1034.14013184916,124.876797838399,29.0681618049719,416.028431207336,273.772407147545,134.210608268926,236.611969909016,29.7768404838104,149.869470322788,148.854809009599,127.69863806709,498.741991210237,79.6036002659904,130.499533345049,59.7250673978457,209.078922201819,240.590870747155,1203.65944799401,2901.62033572139,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,405.29641105489,1036.42809477696,124.876797838399,29.0681618049719,424.339011339056,284.922149617992,134.210608268926,243.925296149181,29.7768404838104,149.869470322788,150.919476145189,127.69863806709,498.741991210237,85.0639323261953,133.430056295808,79.3072733076986,210.432113437792,244.254393226354],"Archive506_field15":[3116578.74119307,4411924.8706098,8137328.72216278,15479583.2776631,15188509.754264,13112957.2068644,6121724.89680071,3001716.64917526,9902441.40299444,5648954.22367383,5016779.42396722,10779655.373277,7248950.29469539,13443128.5544013,16359445.2574225,15088355.4398043,9651719.32423874,2116219.92898337,5474579.48332724,15658847.8455717,16486573.9350494,13355310.5062112,15809841.9884419,17527973.5806385,3394435.37211087,12328569.8940205,0,-2.55675161042745e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive506_field16":[-273.792124853197,-422.887147347872,-279.145284437359,-877.43625447038,-930.029659946747,-718.893496575918,123.792981737429,-239.902579783931,-793.504477175478,-586.003592538296,-427.129454949491,-411.754747153084,-408.509030839481,-880.079137928074,-1041.59541759197,-1081.30437401166,-212.047518130282,158.707732814923,43.2381266279682,-991.738957652349,-1079.71540204242,-821.023721179278,-1069.65228339388,-1238.25389968396,-20.3236618007238,-925.888441446204,-273.792124853197,-422.887147347872,-279.145284437359,-877.43625447038,-930.029659946747,-718.893496575918,123.792981737429,-239.902579783931,-793.504477175478,-586.003592538296,-427.129454949491,-411.754747153084,-408.509030839481,-880.079137928074,-1041.59541759197,-1081.30437401166,-212.047518130282,158.707732814923,43.2381266279682,-991.738957652349,-1079.71540204242,-821.023721179278,-1069.65228339388,-1238.25389968396,-20.3236618007238,-925.888441446204],"Archive506_field17":[85.2594791140241,48.8833561819787,611.069291862729,834.597659173169,790.460448916929,753.952028029981,800.836756165797,95.1332777024638,317.376221481341,26.0090398659754,119.699026588231,766.858467038959,412.814708550436,612.053585102349,773.474394526157,600.636847006841,857.123830926033,395.132512593054,648.781049261625,755.231318041498,792.415368226051,667.654815796494,685.546695854711,727.839326392154,360.847874846345,444.320494560387,85.2594791140241,48.8833561819787,611.069291862729,834.597659173169,790.460448916929,753.952028029981,800.836756165797,95.1332777024638,317.376221481341,26.0090398659754,119.699026588231,766.858467038959,412.814708550436,612.053585102349,773.474394526157,600.636847006841,857.123830926033,395.132512593054,648.781049261625,755.231318041498,792.415368226051,667.654815796494,685.546695854711,727.839326392154,360.847874846345,444.320494560387],"Archive506_field18":[359.051603967221,471.770503529851,890.214576300087,1712.03391364355,1720.49010886368,1472.8455246059,677.043774428368,335.035857486395,1110.88069865682,612.012632404272,546.828481537722,1178.61321419204,821.323739389917,1492.13272303042,1815.06981211813,1681.9412210185,1069.17134905631,236.424779778131,605.542922633657,1746.97027569385,1872.13077026847,1488.67853697577,1755.1989792486,1966.09322607612,381.171536647068,1370.20893600659,359.051603967221,471.770503529851,890.214576300087,1712.03391364355,1720.49010886368,1472.8455246059,677.043774428368,335.035857486395,1110.88069865682,612.012632404272,546.828481537722,1178.61321419204,821.323739389917,1492.13272303042,1815.06981211813,1681.9412210185,1069.17134905631,236.424779778131,605.542922633657,1746.97027569385,1872.13077026847,1488.67853697577,1755.1989792486,1966.09322607612,381.171536647068,1370.20893600659],"Archive506_field19":[272.627989539969,272.606951983208,251.722505330422,252.474370724488,253.029706708773,253.078283532737,252.669197992922,241.073747927902,252.162500317669,272.435124313842,272.269024500658,254.738053630807,246.940563842972,253.721393244408,252.828025472652,253.464485625247,253.073457240899,255.313892575826,252.960469243769,253.034304130657,253.188991929773,253.135546193092,253.056798811784,253.078196500924,251.038326359173,253.824040262714,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive506_field20":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive507.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive507.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive507.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive507_field1":[-462.53263176934,-27586.2191435265,-65.6019401502259,-153.196523535047,-116.926213299944,155.187623621572,22.5606732283788,44.0573113392088,-825.619324389932,540.524503692021,-124.861461227786,-28.1733966848546,8.54097355822927,-220.547259360993,-133.609361472993,-186.992674706423,-25.9864517699754,29.0488482191167,200.739950427856,-127.377145745373,12.5847263900791,125.212273284082,-97.9885465085778,64.7085429330885,407.89686826645,415.022047709691,-462.65937715415,35232.6194224508,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-892.968471940196,993.608433610789,-124.864774752957,-28.1732220450353,-7.45636259575065,-231.523257209619,-133.609441877792,-169.039594425959,-25.9875900678296,29.046584949239,208.161772218843,-127.385224665895,12.5939094002324,112.974958149904,-107.515869676805,84.5306162467995,396.389363712358,421.438801136463],"Archive507_field2":[-1111.13567202234,189845.691264319,4.06575029434675,5.6977785779395,-196.816808439133,-246.446217902221,10.8402300096611,-26.731658480588,105.833618002914,-1161.97304868467,1.7328196202817,-7.15656338028912,-158.482450895943,41.5576362095348,12.6887479454427,-349.902196362147,-14.5356342121298,-147.026074398316,52.8758668198597,8.94123094963332,-498.582372349947,-320.395726990087,-227.723347023082,-356.609385054375,-317.607172052974,-183.323422399933,-1111.18961814651,-209832.475124271,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,198.668688376737,-3232.55248907457,1.73281974410524,-7.15734520064289,-41.4834098034475,17.2517700929968,12.6887514366138,-360.227380188126,-14.5363472600491,-147.027732205933,48.138895546525,8.9412919093974,-498.58295923785,-334.823677188967,-228.108559107198,-413.20027060549,-227.103637223697,-227.155543743109],"Archive507_field3":[15.3996640620685,-14527034.2730013,-0.0304056219843544,-0.363472497207624,-5.5197226554477,-2.47366518333176,0.0799508230936914,-0.687375534336933,1.7488018514155,-6.12604313650075,-0.909656307583454,0.036749717780266,1.58978031854318,-0.806501685465371,-0.146881828190549,-1.11619283263613,0.282651120989933,-0.59665651476776,-3.76191210134477,-1.43502440984392,-0.903570660208887,-1.4891136692364,0.805087215785751,1.55500360816162,-10.1633052037811,-8.76698326563553,0,-14526769.6179335,0,0,0,0,0,0,-2.56521570973713,-59.7260275813833,0,0,9.2832941689551,-20.6772547905844,0,28.2597314319762,0,0,-18.5598368148709,0,0,1.30814329482916,-0.591460141222027,27.9089035142239,-26.4881665339237,37.2731795104431],"Archive507_field4":[1203.65944799401,14528300.9039231,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,832.376766743035,1281.55594234726,124.876797838399,29.0681618049719,158.720392113832,224.429902606444,134.210608268926,396.735495386229,29.7768404838104,149.869470322788,207.621138067365,127.69863806709,498.741991210238,343.996733580414,247.91193233018,362.436017903304,517.066208191688,453.7925046551,1203.65944799401,14528327.7268103,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,914.805181419618,3382.33950281981,124.876797838399,29.0681618049719,43.1584311891364,233.084085827342,134.210608268926,398.919493559165,29.7768404838104,149.869470322788,214.460122680938,127.69863806709,498.741991210237,353.372250203937,252.177569968902,422.680488793699,457.604865217635,480.207865478466],"Archive507_field5":[-16703106.3179626,-3772800.89866601,33565506.1463972,9545159.50151275,18583480.6575678,8920005.67387854,1201347.98877887,1018845.80241553,-5505220.17187601,33324717.7283294,-15020086.5068988,-13846238.6077525,-2126209.01648186,40609592.4207795,-2955539.211863,4442969.02425195,27530486.5406048,28915504.3640893,-7463151.11304396,19021082.5928567,43040295.6785909,1795157.30417692,36091888.274819,4339354.15265631,-12170950.3874323,38661757.8235366,17385324.9517453,10911713.9012453,-31410623.0624765,17347905.4282664,-5720674.80545606,11951757.4841205,16586386.3110461,21752091.8436169,14611185.3375055,-29668887.4960404,16449753.7309014,5999131.88290162,13900102.0544721,-25343103.7851078,8308841.39222546,12507397.4349267,-25815335.7274623,-23866075.3877442,12128628.8771927,10100334.329153,-5252880.47443496,10338803.6170601,-19263512.4287517,6871336.1828062,12266782.8883685,-25012376.9063148],"Archive507_field6":[-273.792124853197,-411.583346904005,-279.145284437359,-877.43625447038,-930.029659946747,-718.893496575918,123.792981737429,-239.902579783931,-793.504477175478,-586.003592538296,-427.129454949491,-411.754747153084,-408.509030839481,-880.079137928074,-1041.59541759197,-1081.30437401166,-212.047518130282,158.707732814923,43.2381266279682,-991.738957652349,-1079.71540204242,-821.023721179278,-1069.65228339388,-1238.25389968396,-20.3236618007238,-925.888441446204,-273.792124853197,-411.583346904005,-279.145284437359,-877.43625447038,-930.029659946747,-718.893496575918,123.792981737429,-239.902579783931,-793.504477175478,-586.003592538296,-427.129454949491,-411.754747153084,-408.509030839481,-880.079137928074,-1041.59541759197,-1081.30437401166,-212.047518130282,158.707732814923,43.2381266279682,-991.738957652349,-1079.71540204242,-821.023721179278,-1069.65228339388,-1238.25389968396,-20.3236618007238,-925.888441446204],"Archive507_field7":[21.9172014889384,47.5767009507356,634.346803547129,855.09993154949,734.204303963792,724.256946057696,804.569251213656,100.084279947622,295.748119642666,2.42256782198524,169.289257148937,807.47522172062,390.593967084488,596.742624508341,778.708139642627,624.341117466234,863.108244384129,391.983400204618,647.163050011159,752.215653941608,716.723013784535,664.281917919815,697.515359913574,702.157966866492,339.853826267835,473.181386528044,21.9172014889384,47.5767009507356,634.346803547129,855.09993154949,734.204303963792,724.256946057696,804.569251213656,100.084279947622,295.748119642666,2.42256782198524,169.289257148937,807.47522172062,390.593967084488,596.742624508341,778.708139642627,624.341117466234,863.108244384129,391.983400204618,647.163050011159,752.215653941608,716.723013784535,664.281917919815,697.515359913574,702.157966866492,339.853826267835,473.181386528044],"Archive507_field8":[295.709326342135,459.160047854741,913.492087984488,1732.53618601987,1664.23396391054,1443.15044263361,680.776269476227,339.986859731554,1089.25259681814,588.426160360281,596.418712098428,1219.2299688737,799.102997923969,1476.82176243642,1820.3035572346,1705.64549147789,1075.15576251441,233.275667389695,603.924923383191,1743.95461159396,1796.43841582695,1485.30563909909,1767.16764330746,1940.41186655045,360.177488068559,1399.06982797425,295.709326342135,459.160047854741,913.492087984488,1732.53618601987,1664.23396391054,1443.15044263361,680.776269476227,339.986859731554,1089.25259681814,588.426160360281,596.418712098428,1219.2299688737,799.102997923969,1476.82176243642,1820.3035572346,1705.64549147789,1075.15576251441,233.275667389695,603.924923383191,1743.95461159396,1796.43841582695,1485.30563909909,1767.16764330746,1940.41186655045,360.177488068559,1399.06982797425],"Archive507_field9":[272.499818950394,272.670731046021,251.745576583237,252.490791412357,253.011649805508,253.03961526718,252.707633970158,241.920728359907,252.189847719815,270.407052126313,271.053671033815,254.668433873262,247.338520056402,253.628810575374,252.838592680166,253.457405105634,253.068081725104,255.053785015077,252.930654137332,253.025578740608,253.113833477844,253.142685467329,253.042414919379,253.079794315879,251.219240525022,253.764203215753,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive507_field10":[-0.000662291335271929,19.6786252978148,1.34013620905738e-08,1.06359690697296e-15,3.26286034185166e-24,-8.915105030875e-20,4.53023379975534e-16,9.39216267866061e-08,8.00758073562443e-08,-0.00124315965208796,-0.000581151068334424,-7.39505929756677e-12,1.28581048515855e-07,-1.19358218773888e-11,1.38507496290986e-15,-4.71279035899363e-12,3.14888739058348e-16,-5.53252944037387e-12,-3.41544066957411e-12,-2.73392379748568e-20,-5.17765127017774e-20,1.15507907891787e-15,1.97096812524825e-16,-5.88953125472968e-20,7.06135715757285e-08,-8.81760399624431e-12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive507_field11":[-462.561798526724,1869.03652185441,-65.6019319393141,-153.19651231039,-116.92621484476,155.187617063586,22.5606728534326,44.0569338249859,-718.989596366408,404.511695792135,-124.86259526953,-28.1733937561208,-55.1890825488506,-201.589337465303,-133.609361970982,-211.939211160531,-25.9864532269835,29.0488510283864,204.957312215187,-127.377143525907,12.5847320211927,97.0042733259136,-74.2914943401326,28.2154580489131,246.101417770195,461.621683920881,-462.65937715415,-1005.85627409555,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-742.936161003028,385.34092928817,-124.864774752957,-28.1732220450353,-47.2311208563589,-221.86163971834,-133.609441877792,-189.076307318655,-25.9875900678296,29.046584949239,212.134554794604,-127.385224665895,12.5939094002324,86.6732988343379,-88.6273599939488,47.3203040028894,252.961497270738,453.188934446189],"Archive507_field12":[-1111.13117897867,-14239.4919866668,4.06574865637339,5.69777994736375,-196.816807203879,-246.446217901641,10.8402306641297,-26.7315858606907,1.47988303051978,-1558.10906327757,1.73281946763046,-7.15655278478677,-36.5810144097619,37.7477100906609,12.688747887735,-358.570378690173,-14.5356337074272,-147.026110332,41.4884010454525,8.94123095926624,-498.582373130497,-310.145578059664,-201.879676709368,-324.902119314505,-392.897194154155,-134.814383607271,-1111.18961814651,6473.55480777366,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-39.3919389806773,-1448.32302185134,1.73281974410524,-7.15734520064289,-51.7730566549125,32.0496110848909,12.6887514366138,-356.083070786239,-14.5363472600491,-147.027732205933,43.7187969707737,8.9412919093974,-498.58295923785,-330.642937780322,-220.209793594112,-401.26095859157,-403.137369264318,-147.542034015005],"Archive507_field13":[14.8375331654734,857290.845902805,-0.0448901375115666,-0.368151881236936,-5.51973397653853,-2.47407662807353,0.0799678873712565,-0.713885145740229,2.72415996007317,-5.92464641604228,-0.737751734933452,0.0408316196191185,0.0246458013491312,-0.732662013346037,-0.14643313763149,-1.22084862967838,0.282543100416113,-0.587596295221929,-3.79378110170858,-1.43522134288985,-0.903061387220491,-0.990100320498724,0.69581721202769,1.39467236844685,-7.48918976742169,-10.1112553212138,0,857172.331075763,0,0,0,0,0,0,2.9169271810125,-23.8078977355899,0,0,0.0239997426443699,-17.5132019669235,0,26.0315938722324,0,0,-18.9953772303489,0,0,4.8710175902168,-4.6130770872353,28.7709816278542,-18.7537869365358,26.1767128233064],"Archive507_field14":[1203.65944799401,857411.132945162,65.7278160403314,153.302875433579,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,718.996280090796,1609.77286178376,124.876797838399,29.0681618049719,66.2118271553246,205.094337782432,134.210608268926,416.524232395594,29.7768404838104,149.869470322788,209.14870314403,127.69863806709,498.741991210237,324.96321165956,215.116512990429,326.127956972385,463.670358084362,481.01115847507,1203.65944799401,857197.365733557,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,743.985465346437,1498.89760270802,124.876797838399,29.0681618049719,70.0801594513626,224.847675087685,134.210608268926,404.008226610975,29.7768404838104,149.869470322788,217.424071580402,127.69863806709,498.741991210237,341.849001530196,237.420392162238,405.064608975633,476.299235904562,477.319685745299],"Archive507_field15":[4732339.66108258,4509340.03203824,4535178.647862,21094595.0768943,14059575.9477116,17733252.9765629,14791405.6803812,10578362.523493,9928427.97937593,3036043.46515594,6018512.93383285,2689613.36604077,9303313.97221916,13566505.5372351,11461498.8425161,16473166.1515646,3897742.61029624,-1936357.22314192,5641005.21136931,22562750.1249352,25976893.8449475,13294191.6502716,15711111.47443,14611628.874761,3152161.10961232,12196687.8563925,340214.702107449,554915.274938175,-2033111.3860767,5058051.71382357,-970331.54119761,4463707.8773135,8072825.19506967,7171747.35970906,-788560.779246327,-620503.349492702,-1052335.92712652,-9328908.67686813,1807615.64116992,1571241.474295,-5699947.56200781,678545.07300602,-4681785.8541838,-2870299.96148203,-317493.056545158,6726511.18623522,10593909.5213828,-737840.400112688,867031.887172701,-3203596.14445749,-816158.550476475,932423.19492634],"Archive507_field16":[-273.792124853197,-398.677703255919,-279.145284437359,-877.43625447038,-930.029659946747,-718.893496575918,123.792981737429,-239.902579783931,-793.504477175478,-586.003592538296,-427.129454949491,-411.754747153084,-408.509030839481,-880.079137928074,-1041.59541759197,-1081.30437401166,-212.047518130282,158.707732814923,43.2381266279682,-991.738957652349,-1079.71540204242,-821.023721179278,-1069.65228339388,-1238.25389968396,-20.3236618007238,-925.888441446204,-273.792124853197,-398.677703255919,-279.145284437359,-877.43625447038,-930.029659946747,-718.893496575918,123.792981737429,-239.902579783931,-793.504477175478,-586.003592538296,-427.129454949491,-411.754747153084,-408.509030839481,-880.079137928074,-1041.59541759197,-1081.30437401166,-212.047518130282,158.707732814923,43.2381266279682,-991.738957652349,-1079.71540204242,-821.023721179278,-1069.65228339388,-1238.25389968396,-20.3236618007238,-925.888441446204],"Archive507_field17":[24.8743570941684,46.0848817286014,631.93407134735,855.922382854217,744.427733345734,724.324873896679,801.060439068494,95.0031164787657,307.211726216056,-22.5869094065037,170.160893140819,804.465925016734,397.24168574031,580.211105370785,776.221916104431,654.151163853733,861.309422502316,392.81293269137,638.955391400014,761.133583875362,725.587110219851,672.163179939014,699.372337579075,711.844778414888,333.953700544425,486.870931166528,24.8743570941684,46.0848817286014,631.93407134735,855.922382854217,744.427733345734,724.324873896679,801.060439068494,95.0031164787657,307.211726216056,-22.5869094065037,170.160893140819,804.465925016734,397.24168574031,580.211105370785,776.221916104431,654.151163853733,861.309422502316,392.81293269137,638.955391400014,761.133583875362,725.587110219851,672.163179939014,699.372337579075,711.844778414888,333.953700544425,486.870931166528],"Archive507_field18":[298.666481947365,444.762584984521,911.079355784709,1733.3586373246,1674.45739329248,1443.2183704726,677.267457331065,334.905696262697,1100.71620339153,563.416683131793,597.29034809031,1216.22067216982,805.75071657979,1460.29024329886,1817.8173336964,1735.45553786539,1073.3569406326,234.105199876447,595.717264772046,1752.87254152771,1805.30251226227,1493.18690111829,1769.02462097296,1950.09867809885,354.277362345148,1412.75937261273,298.666481947365,444.762584984521,911.079355784709,1733.3586373246,1674.45739329248,1443.2183704726,677.267457331065,334.905696262697,1100.71620339153,563.416683131793,597.29034809031,1216.22067216982,805.75071657979,1460.29024329886,1817.8173336964,1735.45553786539,1073.3569406326,234.105199876447,595.717264772046,1752.87254152771,1805.30251226227,1493.18690111829,1769.02462097296,1950.09867809885,354.277362345148,1412.75937261273],"Archive507_field19":[253.090905424917,252.962516711112,252.973662341718,253.081154404708,253.043366801543,253.068908885127,253.039535068303,253.574549672471,253.724853722809,253.142753750109,253.164638278718,252.993887531103,253.087008278375,252.938251851038,253.003697329707,253.480210479053,252.965341146406,252.917400456803,253.035514922256,253.012350733919,253.176589542928,253.281750229718,253.025024481417,253.116569176814,253.390012376425,253.236179063828,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive507_field20":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive508.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive508.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive508.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive508_field1":[-462.65937715415,-1466.13441857682,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-174.531149703896,-140.018006188698,-124.864774752957,-28.1732220450353,-428.727511445028,-25.9875900678296,29.046584949239,117.258869623089,53.1608235534042,-27.0612754868743,-133.609441877792,-127.385224665895,-75.5925729498802,-92.0117938142977,-278.942239595428,-462.65937715415,-1466.13441857682,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-174.531149703896,-140.018006188698,-124.864774752957,-28.1732220450353,-428.727511445028,-25.9875900678296,29.046584949239,117.258869623089,53.1608235534043,-27.0612754868743,-133.609441877792,-127.385224665895,-75.5925729498802,-92.0117938142977,-278.942239595428,-462.65937715415,-1466.13441857682,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-174.531149703896,-140.018006188698,-124.864774752957,-28.1732220450353,-428.727511445028,-25.9875900678296,29.046584949239,117.258869623089,53.1608235534042,-27.0612754868743,-133.609441877792,-127.385224665895,-75.5925729498802,-92.0117938142977,-278.942239595428],"Archive508_field2":[-1111.18961814651,-4652.31503351624,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-336.002721387283,-611.333400690017,1.73281974410524,-7.15734520064289,-52.6695410695354,-14.5363472600491,-147.027732205933,-90.995872380579,-11.7708292267574,-477.273754695347,12.6887514366138,8.9412919093974,-49.8982077425436,-184.580291889242,-96.4071611785234,-1111.18961814651,-4652.31503351624,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-336.002721387283,-611.333400690017,1.73281974410524,-7.15734520064289,-52.6695410695354,-14.5363472600491,-147.027732205933,-90.995872380579,-11.7708292267574,-477.273754695347,12.6887514366138,8.9412919093974,-49.8982077425436,-184.580291889242,-96.4071611785234,-1111.18961814651,-4652.31503351624,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-336.002721387283,-611.333400690017,1.73281974410524,-7.15734520064289,-52.6695410695354,-14.5363472600491,-147.027732205933,-90.995872380579,-11.7708292267574,-477.273754695347,12.6887514366138,8.9412919093974,-49.8982077425436,-184.580291889242,-96.4071611785234],"Archive508_field3":[0,5.43061955337357,0,0,0,0,0,0,3.46980137740774,-9.03225126501204,0,0,5.64911550245868,0,0,-0.167908679251992,-0.760202837435845,0,0,0,-0.049856951389559,1.55537374818543,-0.683810937111808,0,-50.2275235261449,0,0,0,0,0,0,7.28428799951418,-16.2641746737785,0,0,7.5037012501408,0,0,-2.8369997931626,5.75132686600475,0,0,0,8.03907097685834,0.339055294954328,-2.85365543059638,0,-113.875221899978,0,0,0,0,0,0,11.6463324469545,-24.5342184502339,0,0,9.6245070791861,0,0,-5.88923072921361,13.1975666358931,0,0,0,17.28913963634,-1.05186193214714,-5.33497442900632],"Archive508_field4":[1203.65944799401,4877.86990355888,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,378.643619407778,627.228148618342,124.876797838399,29.0681618049719,431.987583307996,29.7768404838104,149.869470322788,148.424794050427,54.4536820602217,478.04032209843,134.210608268926,127.69863806709,90.5763253108482,206.248572218911,295.133158683352,1203.65944799401,4878.12547076603,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,378.697784319216,627.373965218591,124.876797838399,29.0681618049719,432.015815866472,29.7768404838104,149.869470322788,148.451809902788,54.7512862157712,478.04032209843,134.210608268926,127.69863806709,90.9323643334537,206.242986094887,295.146162276136,1203.65944799401,4879.1959245945,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,378.806795155642,627.642809829956,124.876797838399,29.0681618049719,432.057855805029,29.7768404838104,149.869470322788,148.541490278538,56.025006440611,478.04032209843,134.210608268926,127.69863806709,92.2116184136568,206.245389689968,295.180581524552],"Archive508_field5":[2880851.51218263,4892658.50172371,8242113.96332349,15569348.5080002,14879115.8572858,12977694.282484,6150165.22353762,2980782.32721449,9755542.79744514,5930644.45879585,5406373.73295309,11002013.6948064,7017669.5208221,9686621.709677,2115241.36460238,5505040.61223867,15542317.4697378,17262129.277202,16395641.6258048,15610213.4678266,15830611.943218,13704275.1841736,13447875.7669187,1536886.75989008,2610152.60250808,4397031.83942998,8305990.6006509,7937762.86741272,6923385.82266593,3281011.69505615,1590198.201274,5204421.15726234,3163900.98823011,2884211.20424147,5869392.81950934,3743810.92750744,5167652.89384434,1128446.3754837,2936848.35675434,8291569.98763568,9209061.21730057,8746804.3486598,8327791.38261939,8445370.3335985,7311004.74820705,7174219.88860693,-1.27837580521373e-10,6.39187902606864e-11,0,0,0,0,0,0,0,-5.11350322085491e-10,2.55675161042745e-10,0,0,0,0,0,-1.02270064417098e-09,1.02270064417098e-09,0,0,0,0,0],"Archive508_field6":[272.717390245059,272.579023677943,209.038796921891,271.624205308789,271.691847396445,271.878192013942,266.201107685173,238.679926559848,272.193961760247,272.565933227949,272.620175512373,272.071802677403,270.029695018999,267.253972143672,238.278362111784,252.32479019459,268.213680707971,271.458319112851,271.543229560012,271.620200126255,271.598605367571,271.806982606042,271.832113839961,250.810035534911,252.35190234068,251.813601689272,272.336013526776,271.377477999458,272.471516247158,257.219278834912,251.903595124335,272.639966782858,260.722244962923,257.728108637924,272.574801404456,272.783111962721,257.208551995038,244.857330052103,251.09336784318,256.1880428225,272.247521950567,272.292815750392,272.333878213415,261.899633653025,267.775772953861,272.446929762011,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive508_field7":[4.269317873907e-10,-1.74544988281596e-07,8.90063595289185e-07,0.0386167907453893,0.147190219575557,0.285342995542832,8.8719575948297e-10,4.10484608551102e-10,0.127890159760129,-8.65592080135038e-06,0.00799842679629352,-0.0507030609934937,-9.70058626571916e-06,-1.31181564943705e-05,1.08256793342538e-09,-7.56755028892243e-06,-4.02232306312629e-05,0.278144605089617,0.0382105264027922,-0.106131683282063,0.175626577551217,-0.0287808586415281,0.135350060352775,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive509.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive509.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive509.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive509_field1":[-462.65937715415,-837.854169356216,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-235.243823597882,-329.790152848034,-124.864774752957,-28.1732220450353,-421.264065846576,-281.715575975775,-133.609441877792,-154.852303570033,-25.9875900678296,29.046584949239,108.592427254021,-127.385224665895,12.5939094002324,68.4931988298836,-91.3998349558479,-25.2801959563985,114.580282575978,59.9381585022948,-462.65937715415,-837.723435816039,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-237.003343496162,-329.871003585826,-124.864774752957,-28.1732220450353,-427.001905688657,-292.951397173525,-133.609441877792,-158.705775602069,-25.9875900678296,29.046584949239,109.699616044863,-127.385224665895,12.5939094002324,71.2699471505616,-94.5487891272106,-27.7182199512515,114.926534871834,60.6513175033128,-462.65937715415,-837.578853997336,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-237.600606668028,-329.923785116715,-124.864774752957,-28.1732220450353,-428.699120617843,-295.913377063939,-133.609441877792,-159.862111282219,-25.9875900678296,29.046584949239,110.018155620752,-127.385224665895,12.5939094002324,72.0847997349928,-95.5319996470519,-28.4588083006179,115.041341969894,60.8545417885218],"Archive509_field2":[-1111.18961814651,-2553.9098952769,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-338.875380336486,-788.04617740036,1.73281974410524,-7.15734520064289,-32.8396780635467,-96.1769096141299,12.6887514366138,-190.178653729054,-14.5363472600491,-147.027732205933,-106.523681707915,8.9412919093974,-498.58295923785,-35.8635878999321,-87.4976566590581,-16.5393715331763,-168.169124648564,-247.685162659369,-1111.18961814651,-2553.60672537127,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-343.05758135471,-789.524122155869,1.73281974410524,-7.15734520064289,-33.7701064048233,-99.158854002831,12.6887514366138,-195.186730639038,-14.5363472600491,-147.027732205933,-107.619568074643,8.9412919093974,-498.58295923785,-39.2466478852322,-87.6631495483472,-23.231920511737,-169.01344026121,-250.904088332013,-1111.18961814651,-2553.37667914396,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-344.296439615812,-789.960390136862,1.73281974410524,-7.15734520064289,-34.0976884930371,-99.9116092975099,12.6887514366138,-196.647949396485,-14.5363472600491,-147.027732205933,-107.904732452292,8.9412919093974,-498.58295923785,-40.2834831060403,-87.7288462968853,-25.2897665957654,-169.266234076193,-251.905441283668],"Archive509_field3":[0,13.1243532488441,0,0,0,0,0,0,5.19743277176148,1.48044354541621,0,0,-0.965042095380924,0.0788605071294526,0,0.207533833192402,0,0,-1.27407588104151,0,0,-1.01768584575612,0.492663285711751,-0.80551172334,-3.50570279054777,0.16944599501725,0,-14.4591397984392,0,0,0,0,0,0,8.3684120262474,-5.17957591881046,0,0,-0.452258330394042,-3.96673176646574,0,2.26219365927522,0,0,-5.23548877383543,0,0,2.81579781426342,-4.69374130041126,18.0857156049228,-3.30173779890163,2.55521411071699,0,-42.0372307585684,0,0,0,0,0,0,11.6314251625803,-11.8157202679865,0,0,0.0926157605646317,-8.09955246673489,0,4.36929164751864,0,0,-9.20390321548546,0,0,6.68501143768091,-9.88054299306447,36.9831846422036,-3.11136468651637,4.99243149283066],"Archive509_field4":[1203.65944799401,2687.86673980483,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,412.55689698097,854.271920610727,124.876797838399,29.0681618049719,422.543239130804,297.680482916275,134.210608268926,245.249259581825,29.7768404838104,149.869470322788,152.122428625366,127.69863806709,498.741991210237,77.3210896682579,126.530677971375,30.2206546494742,203.523427625202,254.834360630959,1203.65944799401,2687.54477720847,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942435,417.048101869729,855.681042491543,124.876797838399,29.0681618049719,428.335443415479,309.303628161686,134.210608268926,251.576033332197,29.7768404838104,149.869470322788,153.764064513345,127.69863806709,498.741991210237,81.4102785549961,129.020667032661,40.4365547107042,204.412702342758,258.14331867348,1203.65944799401,2687.571009486,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,418.484619397717,856.169803962026,124.876797838399,29.0681618049719,430.053016448855,312.430246851941,134.210608268926,253.466765740505,29.7768404838104,149.869470322788,154.3766099064,127.69863806709,498.741991210237,82.8472494528971,130.078201705684,53.0776036633054,204.683289378452,259.199828273132],"Archive509_field5":[2880851.51218263,4892658.50172371,8242113.96332349,15569348.5080002,14879115.8572858,12977694.282484,6150165.22353762,2980782.32721449,9755542.79744514,5930644.45879585,5406373.73295309,11002013.6948064,7017669.5208221,13474571.9746154,16395641.6258048,15041788.8272108,9686621.709677,2115241.36460238,5505040.61223867,15610213.4678266,16102266.4918056,13322155.289457,15853330.4379555,17362664.5431186,3324095.27882402,12354841.9898433,1440425.75609131,2446329.25086186,4121056.98166174,7784674.25400008,7439557.92864288,6488847.14124202,3075082.61176881,1490391.16360724,4877771.39872257,2965322.22939793,2703186.86647654,5501006.84740321,3508834.76041105,6737285.98730771,8197820.81290242,7520894.41360537,4843310.8548385,1057620.68230119,2752520.30611934,7805106.7339133,8051133.24590279,6661077.6447285,7926665.21897775,8681332.27155932,1662047.63941201,6177420.99492165,-1.27837580521373e-10,6.39187902606864e-11,0,0,0,0,0,0,0,-5.11350322085491e-10,2.55675161042745e-10,0,0,0,0,0,0,0,0,0,1.02270064417098e-09,0,0,0,0,0],"Archive509_field6":[272.494411467125,272.594006778503,185.098390035444,-210.049583582807,271.691847808303,249.099791426748,252.707837379384,256.493910608819,-46.7064538834081,271.938920798417,272.496275706507,-198.845173961024,-205.669114905598,-258.130243671029,271.543224568122,271.675920122404,275.992251347442,249.865097035558,259.023787611054,271.620194847592,271.571979503263,271.844449704051,271.596347831065,271.448455708016,272.824277297991,271.939266078561,197.795519457151,175.316406537049,272.746140879399,-123.981637526061,272.420925313267,298.073022798456,244.323754620572,273.00397373735,-43.8057119241981,106.200639407131,56.461680891363,88.0419264624077,19.1612781521318,-41.8768178453473,-171.626543925542,-71.1433544089859,254.715780773537,235.689467534647,262.311923287395,272.385081967743,272.360997685567,272.497285569715,150.415995290556,263.120017223012,272.987173075223,192.674258707226,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive509_field7":[-6.18481664909202e-06,-4.15798204383632e-06,-2.60375763050692e-09,3.32896157954028e-05,-3070.3093235326,-5.09844275954116,-7.2735841360846,0.0572316930215721,-0.532585899788047,0.065798414857261,-4.58973749806012e-06,1.6929817532584e-05,4.4573844230787e-05,-0.309739996455211,-0.243809531563092,3860.67924538982,158857.957123801,0.0557212723060854,-12.4203656249842,0.0470473921712356,11516.2802338697,-30834.0465226431,1.28722880197848,1.01446655581731,-1157.8299007413,6470.90073367571,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive510.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive510.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive510.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive510_field1":[-238841.776078249,516547.610748178,-65.5998122745461,-153.196904915416,-116.929639638123,155.194092031888,22.5604984720281,44.057059977327,-929.523921982318,73.1965323239247,-1074.3403569874,-2219.54021987413,599.315719303496,-124.863687486754,2115.27380005023,-1399.22651865145,29.0497120323519,-1766.18130853741,-25.9880189407249,22.0591034564248,-2.06648991400929,525.39188977967,55.7401540910077,401.753333890381,-101.292639664903,923.521338130206,-14.8158176626756,6002.9286096223,339.942716700825,-28.1731796165705,872.604622841273,-34.4478810297505,-133.601201564416,-140.035526812772,-1239.51744240853,-368.467326940233,-385.399996366454,-306.969392858257,1302.88483482748,-548.766807466578,-3.7050032476595,-127.379032510562,-27.0433723220556,-130.925919194172,-1348.72409110023,-233.496209952945,82.4428892838241,63.1168111802485,42.9303458084362,274591.11708851,-139359.479927731,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,44723.1759451561,73.196314959522,30869.5194650206,751.865334853134,873.281811846677,-124.864774752957,-1247.00692478391,-234.402675402266,29.046584949239,-1809.46463220745,-25.9875900678296,22.0588725759823,-2.06688692183117,581.60412630901,67.4422134330026,404.172128993538,-86.2655299374003,916.048100941733,-14.8177109808074,-65744.8875833138,156.124731163387,-28.1732220450353,705.65460739267,-34.4491555534425,-133.609441877792,-184.555987884158,-1928.77844929921,-388.528673388601,-340.678059621513,-307.307195121799,1236.63526818776,-573.974320410409,-3.70458777395125,-127.385224665895,-27.0612754868743,-141.858984339276,-1320.67908264887,-222.661665665993,66.3234156455373,68.3935179493591,36.3689907797375],"Archive510_field2":[465220.573970544,532411.472496369,4.06566497287248,5.69753835047282,-196.848062015771,-246.445510362436,10.837706387868,-26.730262993688,2053.46854681868,-62.9214135080223,394575.010663501,-1277.26790149002,609.118557630292,1.73281874197888,-1275.70312838341,-1316.16653422113,-147.023299916125,-720.879423801842,-14.5320957336472,17.9625781086994,1.52934194638822,-7.07018237480176,-188.73626932303,48.0946631316926,-17.6854352222821,-245.890527174327,-27.1829790767729,-203.383131959936,-691.449214032568,-7.15714076252641,451.1063469977,5.77566983522718,12.6860798876513,-175.443104702427,528.514148729164,-535.920615765202,-155.575065310555,-71.6950361093169,-471.845243483247,-520.522534251205,-20.9805407525068,8.94071361317784,-477.26968453407,25.0279193926713,-571.739759478596,-12.136659712437,24.1647582941063,-340.157520907821,-346.235975265704,-717711.399911105,-1004022.73635044,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-177682.156457855,-62.9223766314668,-701481.365423259,3591.91690649168,-1669.97001905842,1.73281974410524,11595.2388915912,11153.9928956915,-147.027732205933,-1107.9164152097,-14.5363472600491,17.9650951959676,1.52939225288104,151.992343473631,-251.040581456358,38.4894883440868,-19.7812933266696,-247.416482610957,-27.1838170100698,-129034.889365438,-1077.53367487285,-7.15734520064289,296.981808660692,5.77661858898994,12.6887514366138,-165.120799775484,-1614.60772705132,-523.019216288517,9.05017850017487,-97.3706304532253,-1016.91306478939,-244.014815981297,-20.9808745633161,8.9412919093974,-477.273754695347,14.6050048986313,-575.312060819242,-36.3868985631231,34.4204719043129,-369.849304411652,-349.314606124719],"Archive510_field3":[-34701316.8800635,-35824981.6373829,-0.529904995565014,-0.134153962378052,-4.16684938021911,-2.11189101416926,-0.26264854490544,-0.754479377096173,8.60894521957708,0.298969080027505,-42059732.8609483,-21.9010099388531,-22.3660250362132,-0.521080406442624,-56.0525107866869,16.4079989658034,-1.05907858230806,6.01146471863694,0.31826769067281,-0.283279210713388,0.0423657541490524,2.44709915988517,-1.0477478857097,-12.0281577402054,1.53942860104393,-40.681802315029,0.31884392071686,46.3744646068019,-2.73938860712011,-0.07291857009307,-10.5314724882603,-0.314278829304446,1.50654888523718,-1.08124524139627,-26.442839018915,9.99983351723822,-4.56162239798798,-5.65699890891477,-25.1661699351322,6.63824255847514,-0.104540345065075,-1.26011148313335,2.20313190045231,0.604053414376906,-20.7676709028395,-3.05044250797791,-0.787468938113046,0.548381748134853,-2.05863406396204,-34703370.7847754,-35827165.0468727,0,0,0,0,0,0,-3092.5311815116,0,-42071021.5068392,-1168.63479466063,380.743587943408,0,-984.499505206112,-636.32533421318,0,130.572016119865,0,0,0,-70.2107472852587,33.2232125456516,0.793755675022648,-51.4879618039763,-56.6278262256138,0,-786.643473520655,138.493248863019,0,100.781967289288,0,0,-0.912905095491885,417.938451874575,-76.1730793817892,-108.339178275134,-67.625637662921,185.931467752956,-164.656386468615,0,0,0,58.3166060659387,52.533412077874,10.6971984704948,-17.8578400157031,22.4542168627447,40.8431677336948],"Archive510_field4":[34705257.0770917,35832660.9775082,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,2254.06785795122,96.524224962471,42061583.6474042,2560.90838064386,854.812837836327,124.876797838399,2470.81840791905,1921.04097268413,149.869470322788,1907.64244448373,29.7768404838104,28.4488752804676,2.57119859419868,525.445157575331,196.797972326182,404.800586082098,102.836488221365,956.560935003867,30.9600462846505,6006.55202104796,770.500207965017,29.0681618049719,982.367892399961,34.9301251166947,134.210608268926,224.480290557166,1347.74994682889,650.445289086643,415.641151168346,315.281442509925,1385.92213443988,756.394595369786,21.3054234413802,127.69863806709,478.04032209843,133.298004285482,1465.05096247111,233.83131477811,85.9149908002436,345.964118957818,348.89339795077,34711877.7043356,35841501.614966,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,183250.306791677,96.524224962471,42076880.5837861,3851.34727442048,1922.59893561195,124.876797838399,11703.5819516625,11174.5877804209,149.869470322788,2125.72107523408,29.7768404838104,28.4488752804676,2.57119859419868,605.222753412847,262.056496852382,406.001453958271,102.39165704189,950.560755454153,30.9600462846505,144820.619128797,1097.55825911268,29.0681618049719,772.206982965434,34.9301251166947,134.210608268926,247.642130054856,2549.86606869659,655.977109870966,357.604283514188,329.381205775015,1611.81558453997,645.059281395035,21.3054234413802,127.69863806709,478.04032209843,154.07175000275,1441.50510441514,225.868664934547,76.8275132946052,376.789560797789,353.569741200978],"Archive510_field5":[3695895.82523096,5978785.87209889,4532040.31785336,14850763.3409303,12877962.0551307,13351423.5149234,18109491.9842776,7491843.22492794,4637672.93017732,3589302.42727867,4139332.64847318,3651050.88785137,3915039.05578521,342097.53379924,2431777.46932542,6167467.84622602,-52208190.1143113,10969020.8665706,9946772.24598659,8312264.51712484,8754816.06043052,4784076.39350394,6148551.10237299,12459480.8331771,7588994.11697379,10872151.2116007,13989224.9600913,8038007.83014261,10601032.4194144,2931327.95708219,9101191.28911008,18463002.069844,13329589.1072162,12262555.4046726,8103624.1984364,11877417.9263205,11868827.7945071,11618030.4967789,13179497.680414,7471954.89437838,14123659.5307555,17697868.1873457,22020911.6639308,17572534.8441879,16354100.2712876,16628178.4557988,12621642.9911939,12840107.7546224,17272769.6114297,-378372.216133786,-213805.308583944,-3079689.70508031,-1222823.74319461,-2021276.20171997,463644.007962718,13112157.0687332,6166159.53280472,-577911.052605612,-1635254.29944634,612841.287442718,-680087.498419147,537812.893871319,-4850154.48069957,-3830960.923368,720575.081702594,-56737986.8680658,9446801.86662623,-664694.323400336,3206517.12205163,3469010.6505592,-4697057.04983918,714595.4516141,104716.03768982,-1336820.25553517,88450.6503955839,3171262.58097269,248989.064567257,3443605.39774937,-8416638.59340689,1718902.68652043,6360379.95393833,-3030082.77527479,-1002070.93151669,-8113.71561402916,-463599.667413257,121132.928677271,-6343.97251634102,-192602.241544259,384199.586277239,-59458.1872060522,1869053.26423461,4911170.64233957,52529.5493740003,196219.393598771,438131.99312975,928630.409166756,-1558716.30796701,-113725.987237957],"Archive510_field6":[252.969211936701,252.953021688622,257.277585165536,264.870099458748,240.514572586739,241.819294276749,251.5293039269,272.415799844065,253.104770753939,253.175966749373,253.000531681126,260.063230661002,252.514547456714,253.17015094694,266.535349346802,272.545588740649,252.091447026335,247.234659007715,254.088075536338,259.038568390663,252.087182507392,256.732250745849,253.401463596649,254.042781015508,253.238326199603,255.418532525397,248.893088659448,253.179308369003,246.34389284692,256.683658425508,249.303174462095,261.028745223376,256.079093862952,256.877793990318,248.416809814237,257.078360635959,255.486242571337,254.806296254387,260.082177216928,252.809650946808,255.643263893139,241.335189751409,248.356441566162,254.800217404959,261.053261546832,251.312396233153,252.719905531009,247.763024888667,246.838963921343,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive510_field7":[5.50877105542695e-07,7.77198400553681e-07,-2.53588347428766e-11,3.23862939977367e-15,-2.05004175128994e-19,-1.18837611746692e-19,-3.43372792848642e-11,105.115036490392,-0.010448182910844,-0.00244783095041545,5.01003963700404e-07,-0.00414479647175565,-0.00499202783205073,4.99830587122677e-07,-0.011450567276498,62.067418872389,-0.0035217052534256,-0.00642671009689909,6.46681070413719e-15,3.56775399540929e-07,-3.55450397219048e-11,6.80130707725039e-07,-7.94827375167358e-11,-1.704528797013e-11,-1.73745983411472e-11,2.63820359949492e-07,2.04430710712753e-15,-0.00395613355296796,2.06781562921039e-07,-5.41789323669697e-11,4.65518740187239e-07,-1.24060812335008e-11,2.54238863281585e-15,-3.63640619898057e-11,-0.00429207483370153,1.75234880877239e-07,4.87996567218361e-07,-4.09158482157189e-11,-0.00459712735631163,5.38162450799674e-07,2.24719081174974e-15,-5.1492903673557e-19,-2.19090932578688e-19,-2.67461771499426e-11,2.77924780987717e-07,4.00183622869539e-15,3.33157158741717e-15,1.02510962459216e-15,3.03412065866435e-15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive511.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive511.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive511.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive511_field1":[5000629.15237246,20351692.6676425,100000000,-290324.043380531,-44467870.1978848,-971865.007438959,-16697494.527744,-55901060.3646014,84033014.1164414,12891965.1943154,10458132.2677332,2500314.57618623,10175846.3338213,50000000,-145162.021690265,-22233935.0989424,-485932.50371948,-8348747.26387201,-27950530.1823007,42016507.0582207,6445982.59715768,5229066.13386661,0,0,0,0,0,0,0,0,0,0,0],"Archive511_field2":[0.0606100986897421,0.0531971266076578],"Archive511_field3":[190889904.062209,235855457.083032,381573028.48017,181026888.537149,102455505.122304,179782642.211302,153704706.94243,85827602.2898512,350347440.789383,209106000.132432,201021659.870897,190889904.062209,235855457.083032,381573028.48017,181026888.537149,102455505.122304,179782642.211302,153704706.94243,85827602.2898512,350347440.789383,209106000.132432,201021659.870897,190889904.062209,235855457.083032,381573028.48017,181026888.537149,102455505.122304,179782642.211302,153704706.94243,85827602.2898512,350347440.789383,209106000.132432,201021659.870897],"Archive511_field4":[5603389.60444871,3539096.58566677,1590749.40074957,6170321.15938628,3645200.32479078,2478494.35476837,4194369.1989708,9858991.4448849,10555872.9102771,2303260.04589461,5332731.09082159,7948953.45293974,4904263.73370599,2437427.09549897,6886148.27340947,4282962.66271809,3114794.53182786,5070926.31798706,-514049.609823502,134631.661854722,3570002.65230258,-4513756.31101205,2739832.02929654,-1282223.08831403,-4266640.42177697,50555.6753857911,-2630419.15563596,-3800861.97374024,-1603094.68675051,4215426.07530887,4815859.47832687,-2714775.58763251,743132.157164141],"Archive511_field5":[1203.65944799401,2552.7837419025,2665.32259652556,2609.67737576754,154.982866870647,351.1844252076,2326.1606057987,2291.64063120472,1875.00831557106,2572.00685739826,2142.04250904284,1203.65944799401,2567.55596140811,2665.32259652556,2609.67737576754,154.982866870647,351.1844252076,2326.45437686741,2292.84659284287,1881.20541547883,2572.00685739826,2142.04250904284,1203.65944799401,2579.23870040847,2665.32259652556,2609.67737576754,154.982866870647,351.1844252076,2326.58732840271,2294.96822657496,1885.65292854523,2572.00685739826,2142.04250904284],"Archive511_field6":[-462.378239865538,-642.064215053035,-974.558215437985,-781.335085735739,-154.964839064361,-194.132532902773,64.9702106559718,-543.566494774274,-420.562913310948,-1049.53505347761,-930.94629291049,-462.65937715415,-643.551666322379,-974.557002287534,-781.341621328147,-154.971194625595,-194.134482858372,69.1694008634889,-545.689150405314,-416.276979116789,-1049.43984509563,-930.929952622575,-462.65937715415,-644.548421121382,-974.557002287534,-781.341621328147,-154.971194625595,-194.134482858372,71.7228320428704,-548.286558823726,-410.457202411647,-1049.43984509563,-930.929952622575],"Archive511_field7":[-1111.1697430356,-2461.51437666408,-2480.75041628032,-2489.96303408864,1.9020592450263,-292.647061192534,-2324.66657918138,-2226.23115535344,-1818.07809853286,-2348.08680792491,-1929.1608737139,-1111.18961814651,-2477.01646571493,-2480.76262323546,-2489.9641114629,1.90206723345491,-292.647062301512,-2324.99875313564,-2226.87253979264,-1827.58356042649,-2348.16849608995,-1929.17483237177,-1111.18961814651,-2489.39709368595,-2480.76262323546,-2489.9641114629,1.90206723345491,-292.647062301512,-2325.14654600432,-2228.27218237574,-1835.21335344832,-2348.16849608995,-1929.17483237177]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive512.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive512.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive512.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive512_field1":[0,0,0.101365463917555,0.0710920015087917,-0.380445662075637,-0.463675051583619,0.12845245018326,0.137067743943241,-0.492099442892558,-0.0154158326206559,0,0.53245693781792,1.04865465881244,0.0528148614179258,0.381077805798576,-1.33928246585474,0.202828967054937,1.98990051391301,0.106492319536459,0.322751925270354,0.316885195116002,3,1.4348017712017,-2.03105121897392,0.0136475722001988,-1.64075184170593,-0.340511852274559,-0.257673723584567,0.871222386873146,0.394367856250849,1.25013390211199,0.174861995144237,0.0344430148644369,0.671178866298797,-0.0325390849712828,0.864706530763915,-0.277788982784813,-0.125151460617647,-1.91133965274481,0.847645101567953,0.112684955018747,-0.257794873995958,-0.980864461044715,-2.21075256714619,-1.43516451727538,-0.779973715138374,0.428069357908153,-1.61371186271492,-2.11293925771973,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive512_field2":[118.995708467923,112.417880655945],"Archive512_field3":[1,1,50.2003875974992,50.1400981294937,49.2449462050995,49.0746548383978,50.2603766189267,50.2729112730048,49.0482774498997,49.97022130909,1,51.0462182099534,52.1104023058969,50.1056101746326,50.7546986769183,47.417510076625,50.3999378801046,53.9551659424046,50.2097213848915,50.6483542650618,50.6377253902526,56,52.841966753132,46.054934261052,50.0122241559163,46.8170346738958,49.332280237475,49.5033866171347,51.7167580925498,50.7773781931066,52.4565764140217,50.3440378608705,50.0629960893932,51.3153276838846,49.9423906420605,51.6973488856674,49.4584275857424,49.7429932791373,46.3086931365013,51.6865209856758,50.2203206012389,49.4950813999578,48.0400220511514,45.7110294779513,47.2156387110646,48.4778582435818,50.830290281437,46.8299719913064,45.8762136783543,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"Archive512_field4":[2880851.51218263,4892658.50172371,8242113.96332349,15569348.5080002,14879115.8572858,12977694.282484,6150165.22353762,2980782.32721449,5123954.55542523,3646788.2954335,5791990.63346932,4317881.39608773,4391001.39044248,5406373.73295309,3921781.76970302,6572756.95927813,2115241.36460238,2679445.05067977,9686621.709677,5735250.17082337,5757378.04775961,7797820.13386029,6442605.73913329,12595753.5071235,8306399.69629558,10970537.0176863,11136018.9183313,5903538.42148905,6713665.91156207,11002013.6948064,8286041.17330408,12818145.9486863,16395641.6258048,13366902.9576708,7843818.7270751,11555372.3708106,12142531.980309,11397833.5739712,12659977.9257428,6974127.9150809,14307741.929095,15610213.4678266,17262129.277202,17228494.3195467,16414525.8979891,16401488.3363321,11719836.9049415,14011369.9025945,17467866.9779851,1440425.75609131,2446329.25086186,4121056.98166174,7784674.25400008,7439557.92864288,6488847.14124202,3075082.61176881,1490391.16360724,2561977.27771262,1823394.14771675,2895995.31673466,2158940.69804386,2195500.69522124,2703186.86647654,1960890.88485151,3286378.47963906,1057620.68230119,1339722.52533989,4843310.8548385,2867625.08541169,2878689.02387981,3898910.06693014,3221302.86956664,6297876.75356176,4153199.84814779,5485268.50884316,5568009.45916563,2951769.21074452,3356832.95578104,5501006.84740321,4143020.58665204,6409072.97434316,8197820.81290242,6683451.47883542,3921909.36353755,5777686.1854053,6071265.99015449,5698916.78698559,6329988.96287141,3487063.95754045,7153870.96454748,7805106.7339133,8631064.63860101,8614247.15977336,8207262.94899455,8200744.16816605,5859918.45247074,7005684.95129723,8733933.48899254,-1.27837580521373e-10,6.39187902606864e-11,0,0,0,0,0,0,-1.27837580521373e-10,-1.91756370782059e-10,2.55675161042745e-10,0,0,2.55675161042745e-10,0,2.55675161042746e-10,0,0,0,0,0,0,0,0,0,0,0,3.83512741564118e-10,0,0,0,0,0,0,0,0,0,0,1.02270064417098e-09,0,0,0,1.02270064417098e-09,1.02270064417098e-09,0,0,0,0,0],"Archive512_field5":[1478.60970342058,2608.40672679774,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,880.583090510057,96.524224962471,1876.48214475146,531.684162524018,154.446197765084,124.876797838399,272.865147889441,742.062815251367,149.869470322788,121.724114798484,29.7768404838104,28.4488752804676,2.57119859419868,122.504562336795,107.240679154357,82.6905893975125,112.608430986441,219.312301982095,30.9600462846505,1171.95783800326,447.680880380017,29.0681618049719,293.075109645058,34.9301251166947,134.210608268926,249.090869263449,466.746516572489,345.589869133159,323.053736171076,150.644869445817,567.396895621303,186.753735653818,21.3054234413802,127.69863806709,478.04032209843,152.453055071665,291.331177203993,120.075183164692,131.211219171691,62.9960105618473,78.5928039988386,1478.63307573672,2608.63572874543,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942435,881.078513510277,96.524224962471,1876.69080203168,533.41041527965,155.932716488162,124.876797838399,274.580318066219,743.773092827159,149.869470322788,122.319936681694,29.7768404838104,28.4488752804676,2.57119859419868,124.592083825066,109.434851656028,83.110315616053,114.733024602739,223.829590995534,30.9600462846505,1172.84087649304,455.864202904824,29.0681618049719,299.782592045172,34.9301251166947,134.210608268926,257.77453816693,471.63349599144,356.872451078525,330.009440747948,153.367754289063,575.442960806073,189.206593939346,21.3054234413802,127.69863806709,478.04032209843,154.854032996749,300.054984989476,122.75349137181,135.314641664554,70.6584149492743,84.4941343625298,1478.60477246685,2608.82646163745,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,881.218101717117,96.524224962471,1877.04750225912,534.004720376453,156.340886809909,124.876797838399,275.207762085803,744.357682933603,149.869470322788,122.516087838508,29.7768404838104,28.4488752804676,2.57119859419868,125.216548157262,110.254225902124,83.4788057719408,115.430390724154,225.179013867796,30.9600462846505,1173.21367096989,458.173125015111,29.0681618049719,301.52051596918,34.9301251166947,134.210608268926,260.271712461338,473.18531184858,360.060979918671,332.148840347372,154.195827160445,577.923743061987,189.851685610084,21.3054234413802,127.69863806709,478.04032209843,155.655924760825,302.696714296693,123.613035544747,136.72052971013,77.6200687645942,88.8815314897036],"Archive512_field6":[-871.555460926974,-743.367028519412,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-40.7148739920745,73.196314959522,-852.918448004814,-497.516617912817,123.440106673778,-124.864774752957,143.309954811408,-62.9266657497697,29.046584949239,30.0521378763869,-25.9875900678296,22.0588725759823,-2.06688692183117,58.8303787612705,94.4775840195665,55.6165675043454,112.374529747436,67.6274686652152,-14.8177109808074,-566.736149031998,-445.494910989498,-28.1732220450353,-279.554501710255,-34.4491555534425,-133.609441877792,-240.790208705222,-349.811819567981,-336.242229052582,-229.292754751894,-105.526027433772,-65.8947289386533,131.050807337087,-3.70458777395125,-127.385224665895,-27.0612754868743,-52.3983142483145,-131.557533036472,-96.9343841905514,-111.691463729624,7.98802129929479,-35.0051152390445,-871.744487749138,-743.06249310638,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-40.7592101035111,73.196314959522,-853.076001567335,-499.008832039057,124.476093228708,-124.864774752957,143.848367378671,-63.1216691054654,29.046584949239,30.1917587961643,-25.9875900678296,22.0588725759823,-2.06688692183117,59.9483384527408,96.3181115877345,56.5218460666993,114.447174112267,68.9492533328519,-14.8177109808074,-567.240926294037,-453.614170245121,-28.1732220450353,-285.94568255679,-34.4491555534425,-133.609441877792,-249.194387756255,-353.32589672971,-347.090237373102,-234.121026425606,-107.464219606842,-66.5668686121821,132.828401783199,-3.70458777395125,-127.385224665895,-27.0612754868743,-52.5711663968991,-135.26231650552,-99.7180623858509,-115.311707890771,9.3279936657437,-37.2441742373646,-871.791058193278,-742.935715656192,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-40.7898585561363,73.196314959522,-853.120629175969,-499.53758307075,124.759732337378,-124.864774752957,143.991586975084,-63.2197151512853,29.046584949239,30.2304153540324,-25.9875900678296,22.0588725759823,-2.06688692183117,60.2534774895023,96.8650897152545,56.8289670233035,115.083339035153,69.3474590205906,-14.8177109808074,-567.318660486457,-455.827396519854,-28.1732220450353,-287.548205436885,-34.4491555534425,-133.609441877792,-251.560004589822,-354.364573794334,-349.988088425419,-235.610081692027,-108.04530393745,-66.7889417957998,133.294841725829,-3.70458777395125,-127.385224665895,-27.0612754868743,-52.6459033881434,-136.3830543771,-100.592190063507,-116.35503258938,9.70532880170779,-37.9455048891935],"Archive512_field7":[-1194.32127357509,-2500.22731059803,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-879.641024703926,-62.9223766314668,-1671.42476441827,-187.451688187642,-92.8192921268304,1.73281974410524,-232.077106384439,-739.380438371931,-147.027732205933,-117.956047392759,-14.5363472600491,17.9650951959676,1.52939225288104,-107.452467839894,-50.7319607374915,-61.1894367026376,-7.16014148332339,-208.603619922783,-27.1838170100698,-1025.81405316671,-44.1846856313596,-7.15734520064289,-87.9495426005451,5.77661858898994,12.6887514366138,-63.7657797854804,-308.954156527426,-79.8191436020757,-227.570957352684,-107.493866504248,-563.536217550069,-132.959193998355,-20.9808745633161,8.9412919093974,-477.273754695347,-143.160054511362,-259.928408559475,-70.8637383026692,-68.84024031507,-62.4809878745938,-70.3559705697619,-1194.29783094219,-2500.50979339439,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-880.130366749443,-62.9223766314668,-1671.4983984511,-188.437901922282,-93.9075664595147,1.73281974410524,-233.605860447489,-741.056972320636,-147.027732205933,-118.534062676909,-14.5363472600491,17.9650951959676,1.52939225288104,-109.215063122938,-51.7614067342358,-60.7925265174962,-7.5838255901928,-212.925680515205,-27.1838170100699,-1026.4752108067,-45.0011410803188,-7.15734520064289,-90.0024434998173,5.77661858898994,12.6887514366138,-65.8608844433803,-312.245136898384,-82.8019119229037,-232.551177601145,-109.38141250305,-571.554782568531,-134.6254509354,-20.9808745633161,8.9412919093974,-477.273754695347,-145.653388965333,-267.812375789901,-71.5787001731359,-70.7145793179567,-67.9318805300831,-74.8841565574718,-1194.25809426266,-2500.46164723496,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-880.258723477765,-62.9223766314668,-1671.72881644684,-188.74081633315,-94.1989151933715,1.73281974410524,-234.039554679725,-741.597577625784,-147.027732205933,-118.722886447017,-14.5363472600491,17.9650951959676,1.52939225288104,-109.72578355598,-52.057956123584,-60.6885077262924,-7.70931845618275,-214.216695131509,-27.1838170100698,-1026.67160130414,-45.2847759419999,-7.15734520064289,-90.4681610095595,5.77661858898994,12.6887514366138,-66.4490430703621,-313.232523300655,-83.6245602651707,-233.999435716238,-109.932644201772,-574.021565829327,-135.043109994514,-20.9808745633161,8.9412919093974,-477.273754695347,-146.479994253985,-270.176040895581,-71.7981644197043,-71.2532538068635,-69.4962886430472,-76.2888359086061]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive513.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive513.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive513.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive513_field1":[-0.0263619981538069,0,0.105321706775154,0.0301241339730525,-0.219442514440729,-0.652162043755841,0.170732173161226,-0.0455165838471655,-1.38911803244865,-0.758323633696686,-0.00166404573074558,0.159856088272742,0.478057493466077,-0.113625298240848,-0.215338234026977,-1.98216663610397,-0.218189413371691,0.211396573068931,0.772081010304981,-0.135055395159261,-0.902625184325525,-3,-0.706453603465286,-0.906925764004824,-0.0306230834791263,-1.38997520041337,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive513_field2":[91.8945751061608,86.3712441958564],"Archive513_field3":[49.9476417597214,1,50.2079311114416,50.0570641542818,49.5485055967697,48.6680518615587,50.3380041087711,49.9091942695738,47.2519463890087,48.4963582371041,49.996240600804,50.3137642359872,50.9387112768567,49.7551838464533,49.5667483179225,46.0714425938918,49.5571555572285,50.4171036703805,51.5008623040136,49.7245679409787,48.1483820396956,44,48.5946477380443,48.1681208177108,49.9321972605678,47.2461293864312,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"Archive513_field4":[2880851.51218263,4892658.50172371,8242113.96332349,15569348.5080002,14879115.8572858,12977694.282484,6150165.22353762,2980782.32721449,9755542.79744514,5930644.45879585,5406373.73295309,11002013.6948064,7017669.5208221,13474571.9746154,16395641.6258048,15041788.8272108,9686621.709677,2115241.36460238,5505040.61223867,15610213.4678266,16102266.4918056,13322155.289457,15853330.4379555,17362664.5431186,3324095.27882402,12354841.9898433,1440425.75609131,2446329.25086186,4121056.98166174,7784674.25400008,7439557.92864288,6488847.14124202,3075082.61176881,1490391.16360724,4877771.39872257,2965322.22939793,2703186.86647654,5501006.84740321,3508834.76041105,6737285.98730771,8197820.81290242,7520894.41360537,4843310.8548385,1057620.68230119,2752520.30611934,7805106.7339133,8051133.24590279,6661077.6447285,7926665.21897775,8681332.27155932,1662047.63941201,6177420.99492165,-1.27837580521373e-10,6.39187902606864e-11,0,0,0,0,0,0,0,-5.11350322085491e-10,2.55675161042745e-10,0,0,0,0,0,0,0,0,0,1.02270064417098e-09,0,0,0,0,0],"Archive513_field5":[1203.65944799401,4560.79357836152,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,446.026426484481,889.245328431641,124.876797838399,29.0681618049719,405.360631493221,303.091447981886,134.210608268926,275.887144438376,29.7768404838104,149.869470322788,146.684446175032,127.69863806709,498.741991210237,101.377312510358,134.53586276617,43.193073149693,202.77279896984,278.248396420652,1203.65944799401,4561.00170516942,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942435,446.109672037139,889.509436876702,124.876797838399,29.0681618049719,405.35547996652,303.125999601791,134.210608268926,275.893323514731,29.7768404838104,149.869470322788,146.779218255156,127.69863806709,498.741991210237,101.413998942956,134.614193613735,46.6985669653839,202.770403319209,278.255053527769,1203.65944799401,4561.77208648149,65.7278160403314,153.30287543358,228.995770220813,291.247413487329,25.0300011049572,51.5373721942434,446.222018211221,889.916920969555,124.876797838399,29.0681618049719,405.356116810474,303.22492759224,134.210608268926,275.912714525663,29.7768404838104,149.869470322788,146.983020849374,127.69863806709,498.741991210237,101.589020865982,134.893419496286,56.4489935682944,202.771476862034,278.288670740399],"Archive513_field6":[-462.65937715415,-1388.47828974165,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-252.778830564172,-334.4353989893,-124.864774752957,-28.1732220450353,-403.952686615592,-287.249509409429,-133.609441877792,-173.268003866292,-25.9875900678296,29.046584949239,106.467033735561,-127.385224665895,12.5939094002324,79.1858194364596,-95.7839239873569,-25.02332812736,114.31537098824,58.965123426003,-462.65937715415,-1388.47828974165,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-252.778830564172,-334.4353989893,-124.864774752957,-28.1732220450353,-403.952686615592,-287.249509409429,-133.609441877792,-173.268003866292,-25.9875900678296,29.046584949239,106.467033735561,-127.385224665895,12.5939094002324,79.1858194364597,-95.7839239873569,-25.02332812736,114.31537098824,58.965123426003,-462.65937715415,-1388.47828974165,-65.6019456279979,-153.196949529759,-116.990564864307,155.20731383407,22.5607316064464,44.0616412994844,-252.778830564172,-334.4353989893,-124.864774752957,-28.1732220450353,-403.952686615592,-287.249509409429,-133.609441877792,-173.268003866292,-25.9875900678296,29.046584949239,106.467033735561,-127.385224665895,12.5939094002324,79.1858194364596,-95.7839239873569,-25.02332812736,114.31537098824,58.965123426003],"Archive513_field7":[-1111.18961814651,-4344.29773754359,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-367.382889384503,-823.820959030208,1.73281974410524,-7.15734520064289,-33.6888003843673,-96.7063551905608,12.6887514366138,-214.690268734674,-14.5363472600491,-147.027732205933,-100.890692420298,8.9412919093974,-498.58295923785,-63.2944614710778,-94.472248320015,-35.1967974685845,-167.474794748476,-271.927938503725,-1111.18961814651,-4344.29773754359,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-367.382889384504,-823.820959030208,1.73281974410524,-7.15734520064289,-33.6888003843673,-96.7063551905608,12.6887514366138,-214.690268734674,-14.5363472600491,-147.027732205933,-100.890692420298,8.9412919093974,-498.58295923785,-63.2944614710778,-94.472248320015,-35.1967974685845,-167.474794748476,-271.927938503725,-1111.18961814651,-4344.29773754359,4.06577560286499,5.6979181268305,-196.85596387144,-246.446232666421,10.8404033456348,-26.7333592854237,-367.382889384503,-823.820959030208,1.73281974410524,-7.15734520064289,-33.6888003843673,-96.7063551905608,12.6887514366138,-214.690268734674,-14.5363472600491,-147.027732205933,-100.890692420298,8.9412919093974,-498.58295923785,-63.2944614710778,-94.472248320015,-35.1967974685845,-167.474794748476,-271.927938503725],"Archive513_field8":[0,6.57806304263148,0,0,0,0,0,0,8.49991344776696,-15.1408554221337,0,0,-2.12914755016936,-0.161398748447869,0,-0.0617509967295749,0,0,-1.47161821797895,0,0,-0.881271289369531,0.576691584242044,-0.812444152322815,-0.998539854080745,-0.693246806760117,0,-44.0654178245923,0,0,0,0,0,0,12.104333570569,-26.4391690134768,0,0,-0.597363871996495,-4.57950263505071,0,1.84751368814596,0,0,-5.47520064459691,0,0,2.86641393808643,-4.62766952383253,17.7700493529523,-0.159818683390504,2.04579916217121,0,-94.7088986918159,0,0,0,0,0,0,15.7087536933711,-37.7374826048198,0,0,0.934419806176368,-8.99760652165354,0,3.75677837302148,0,0,-9.47878307121487,0,0,6.61409916554238,-9.83203063190711,36.3525428582274,0.678902487299732,4.78484513110256],"Archive513_field9":[272.701945716332,272.604959791427,272.342273048436,271.624205182958,271.691847739291,251.418631376199,251.100042680203,234.102019498471,272.193965372224,272.508976961331,272.620177899865,272.071804177872,272.46226919899,271.829499065781,271.543229748793,271.675906542894,260.021212373276,254.125349975282,255.340541607851,271.620200426748,271.571979072228,271.844437669639,271.596373784799,271.448465782846,260.420980258266,271.939228817966,250.516904588818,251.621218419425,249.896734040455,271.573707747744,272.420927237473,272.514091499707,253.55401034547,250.322969937418,271.619146073198,260.210078506019,255.136939340476,262.173652230219,265.250323287827,267.70683381361,272.346614481007,273.068833288903,254.940388116322,254.760781513618,251.638376092094,280.275432533638,313.009512449911,266.957495254544,260.22049030791,255.26848383321,252.403133591852,268.280012200888,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive513_field10":[1.60150985831619e-09,-5.14971030842934e-06,0.00207682819057706,-0.0151577399684249,-0.00769963555505949,-9.5889215237991e-06,2.08080415735133e-09,2.15537077410459e-09,0.241812836197715,-2.16630857279695e-05,0.174386755806828,0.0820744504805347,-0.0821269311912566,0.142004551228219,0.0913779004593268,-0.0519865317006316,-1.57730818651054e-05,1.83557688688545e-09,-1.72092980713381e-05,0.0535986988344853,-0.0865680830176399,0.176027479502178,-0.124977762413952,0.394930391402691,-1.80270743776141e-05,0.0414792681399826,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive514.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive514.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive514.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive514_field1":[-1630726.51545493,-1538422.88035631,-1512247.22264177,-1556332.54089783,-1611439.1887179,-1670678.83512448,-1612095.92335008,-1593485.68871801,-1575004.87697528,-1556640.80119276,-1531878.96592767,-1525335.05149904,-1518791.13707041,-1521064.28629299,-1529881.3499442,-1538698.41359541,-1547515.47724662,-1574701.42350452,-1593070.30611121,-1623287.11799922,-1635135.04728053,-1646982.97656185,-1658830.90584316,-1662688.37119057,-1654697.90725666,-1646707.44332275,-1638716.97938884,-1568915.22564537,-1635607.38998833,-1546895.52759227,-1596560.39395634,-1627466.03896653,-1601205.0970168,-1611576.95545119,-1540154.80362811,-1559845.58972727,-1550932.08946231,-1614084.30791831,-1586021.24743878,-1588432.16341909,-1568456.00342429,-1577273.06720244,-1583374.1603778,-1559245.32093644,-1626478.71152686,-1616516.87286144,-1607949.10119281,-1610856.16032961,-1565543.22355736,-1651089.73412799,-1594815.35027824,-1598438.70415635,-1563850.66254324,-1643348.5622396,-1551768.16464406,-1614335.56826382,-1567273.50673569,-1545543.44672665,-1543525.16570091,-1620166.59507791,-1584830.5504927,-1571331.02447659,-1585903.16198917,-1529472.9705256,-1598203.75306266,-1632712.65137734,-1534430.10873058,-1573612.41173268,-1639847.81414952],"Archive514_field2":[-324668.772108201,-314529.362758491,-243553.497310526,-148496.534657002,-151031.38699443,-235948.940298245,-325603.105291926,-324352.585804148,-321825.377594154,-318548.187783722,-296785.3963965,-279041.430034509,-261297.463672518,-224542.104779822,-205530.712249117,-186519.319718412,-167507.927187707,-149341.485436145,-150186.436215287,-168014.897655193,-184998.408315956,-201981.918976719,-218965.429637482,-253692.906660236,-271436.873022227,-289180.839384218,-306924.805746209,-204347.781246938,-264737.620425469,-277774.003896486,-185606.77297049,-202573.384580612,-243191.37565806,-273971.725429465,-231241.357567013,-181893.214264211,-201424.251560219,-189104.869167407,-284111.134795812,-203756.315631017,-276506.577861771,-185910.955240594,-233776.209817881,-237940.610138704,-287490.937978407,-258038.367853778,-203164.850196533,-305503.108545135,-224361.043977702,-234222.826655994,-167896.604700114,-294807.121851911,-257223.594000237,-249480.22363145,-298161.095928937,-222882.380210055,-165617.349881111,-216332.804654335,-254507.680731749,-239550.040217014,-259848.976759915,-301329.661560037,-218766.262815168,-246269.410780351,-266910.351185409,-228552.603523743,-266774.555422194,-245499.901999778,-215267.261425655],"Archive514_field3":[-324668.772108201,-314529.362758491,-243553.497310526,-148496.534657002,-151031.38699443,-235948.940298245,-325456.965356606,-325571.589584552,-325004.419604696,-323856.55698931,-322452.388121945,-320816.269009224,-318949.285275945,-316852.984306601,-305657.379577496,-296785.3963965,-287913.413215504,-279041.430034509,-270169.446853513,-261297.463672518,-252425.480491522,-234047.801045174,-224542.104779822,-215036.408514469,-205530.712249117,-196025.015983764,-186519.319718412,-177013.623453059,-167507.927187707,-158002.230922355,-148919.010046574,-149341.485436145,-149763.960825716,-150186.436215287,-150608.911604858,-159523.142324811,-168014.897655193,-176506.652985574,-184998.408315956,-193490.163646337,-201981.918976719,-210473.6743071,-218965.429637482,-227457.184967863,-244820.92347924,-253692.906660236,-262564.889841231,-271436.873022227,-280308.856203223,-289180.839384218,-298052.822565214,-306924.805746209,-315796.788927205,-242793.041716785,-271144.390170723,-279528.90167041,-204939.24688444,-183181.764161359,-185758.864180351,-196773.949655993,-233414.087968617,-315255.312251375,-290844.739333203,-169139.73845501,-194922.355302271,-194642.369316402,-263379.663811293,-241728.403743361,-274849.174338623,-209597.037950143,-297646.1264877,-251592.600598888,-270461.929829018,-202869.117441281,-166113.758403063,-188306.390766094,-204436.117023647,-239208.036266455,-203069.793169499,-176900.963508896,-159100.666979309,-271046.895836194,-204643.514003186,-182069.245684949,-185606.772989461,-197868.545097889,-170264.579255743,-176562.983125006,-267408.268583505,-307655.126753746,-275629.128833452,-210684.912140719,-270364.435675894,-279528.90167041,-202573.384560027,-160663.82602804,-243236.640857261,-270949.401501664,-176957.293512409,-270949.401501664,-280113.867677587,-297498.726621751,-219065.013131017,-171389.41987507,-176619.313128519,-211772.786149889,-310049.257299586,-186367.228581103,-279431.407335881,-311916.505306319,-195564.133851313,-247265.245448067,-230794.740628395,-292966.376480238,-280016.373343057,-301657.67026384,-185302.590607679,-200057.735618872,-223093.617903229,-311444.709236737,-172514.260675802,-193951.046051272,-212860.660340465,-186215.137571618,-279333.913001352,-306648.563722337,-191614.37294348,-195333.692762937,-251293.850038874,-206333.415559821,-303431.349367404,-221826.191735753,-279918.879008528,-203756.315722234,-185150.499598194,-201152.331060768,-227122.222494035,-315964.612791231,-308995.535214451,-173639.10129513,-193720.60478149,-251791.767578429,-279236.418848228,-255322.45462968,-207421.289750397,-270656.918498076,-279821.384673999,-231150.827084842,-271241.884505253,-279138.924513698,-259351.059220487,-270559.424163547,-235179.431675648,-252376.733404199,-222061.570860409,-249190.526129359,-226651.96710048,-266174.501098792,-288757.55016381,-233613.255129563,-240978.602816237,-245624.381398033,-224317.589496567,-178574.142209116,-215367.976424763,-231805.663919897,-219467.370843184,-256719.873364133,-160787.928180408,-239506.786826469,-259627.003131326,-264173.546612414,-215325.502709599,-223314.663099128,-241549.756979386,-290788.274908292,-161139.110886195,-248792.076252229,-257982.657186124,-231316.799598027,-231261.349773494,-166589.043442624,-284700.973042372,-261787.546837821,-237957.149554538,-289637.357626125,-227343.267689935,-212447.992452626,-293772.817251291,-221461.806889473,-252918.175177565,-212554.063997081,-299843.307553558,-237304.256659704,-288763.777811048,-288538.767093196,-302844.66146021,-244048.803517309,-297706.170948098,-288441.272940072,-311294.089606417,-295722.703760473,-218849.752046164,-310671.673543704,-250855.1258056,-287625.802715442,-257486.132477199,-263184.67532364,-260707.274984573,-169876.429939799,-252211.979753869,-234592.794561966,-234282.803216599,-259553.882607186,-211750.565258738,-245072.900105846,-181113.043149693,-237933.820457823,-264311.663238637,-228525.4443871,-233289.609037242,-212317.477800921,-261121.625770269,-239456.995217637,-233309.676464939,-192908.300081017,-223122.788979311,-298744.717202035,-305257.490730037,-293734.555225203,-299681.920787374,-303508.396955553,-260025.511420993,-257082.140302415,-227837.413085689,-245370.141554372,-242289.843647563,-252589.132093312,-212482.507187453,-159944.297670561,-244124.535734933,-212382.735126773,-220110.074196934,-298621.476362486,-251839.209261762],"Archive514_field4":[-324668.772108201,-314529.362758491,-243553.497310526,-148496.534657002,-151031.38699443,-235948.940298245,-325456.965356606,-325571.589584552,-325004.419604696,-323856.55698931,-322452.388121945,-320816.269009224,-318949.285275945,-316852.984306601,-305657.379577496,-296785.3963965,-287913.413215504,-279041.430034509,-270169.446853513,-261297.463672518,-252425.480491522,-234047.801045174,-224542.104779822,-215036.408514469,-205530.712249117,-196025.015983764,-186519.319718412,-177013.623453059,-167507.927187707,-158002.230922355,-148919.010046574,-149341.485436145,-149763.960825716,-150186.436215287,-150608.911604858,-159523.142324811,-168014.897655193,-176506.652985574,-184998.408315956,-193490.163646337,-201981.918976719,-210473.6743071,-218965.429637482,-227457.184967863,-244820.92347924,-253692.906660236,-262564.889841231,-271436.873022227,-280308.856203223,-289180.839384218,-298052.822565214,-306924.805746209,-315796.788927205,-242793.041716785,-271144.390170723,-279528.90167041,-204939.24688444,-183181.764161359,-185758.864180351,-196773.949655993,-233414.087968617,-315255.312251375,-290844.739333203,-169139.73845501,-194922.355302271,-194642.369316402,-263379.663811293,-241728.403743361,-274849.174338623,-209597.037950143,-297646.1264877,-251592.600598888,-270461.929829018,-202869.117441281,-166113.758403063,-188306.390766094,-204436.117023647,-239208.036266455,-203069.793169499,-176900.963508896,-159100.666979309,-271046.895836194,-204643.514003186,-182069.245684949,-185606.772989461,-197868.545097889,-170264.579255743,-176562.983125006,-267408.268583505,-307655.126753746,-275629.128833452,-210684.912140719,-270364.435675894,-279528.90167041,-202573.384560027,-160663.82602804,-243236.640857261,-270949.401501664,-176957.293512409,-270949.401501664,-280113.867677587,-297498.726621751,-219065.013131017,-171389.41987507,-176619.313128519,-211772.786149889,-310049.257299586,-186367.228581103,-279431.407335881,-311916.505306319,-195564.133851313,-247265.245448067,-230794.740628395,-292966.376480238,-280016.373343057,-301657.67026384,-185302.590607679,-200057.735618872,-223093.617903229,-311444.709236737,-172514.260675802,-193951.046051272,-212860.660340465,-186215.137571618,-279333.913001352,-306648.563722337,-191614.37294348,-195333.692762937,-251293.850038874,-206333.415559821,-303431.349367404,-221826.191735753,-279918.879008528,-203756.315722234,-185150.499598194,-201152.331060768,-227122.222494035,-315964.612791231,-308995.535214451,-173639.10129513,-193720.60478149,-251791.767578429,-279236.418848228,-255322.45462968,-207421.289750397,-270656.918498076,-279821.384673999,-231150.827084842,-271241.884505253,-279138.924513698,-259351.059220487,-270559.424163547,-235179.431675648,-252376.733404199,-222061.570860409,-249190.526129359,-226651.96710048,-266174.501098792,-288757.55016381,-233613.255129563,-240978.602816237,-245624.381398033,-224317.589496567,-178574.142209116,-215367.976424763,-231805.663919897,-219467.370843184,-256719.873364133,-160787.928180408,-239506.786826469,-259627.003131326,-264173.546612414,-215325.502709599,-223314.663099128,-241549.756979386,-290788.274908292,-161139.110886195,-248792.076252229,-257982.657186124,-231316.799598027,-231261.349773494,-166589.043442624,-284700.973042372,-261787.546837821,-237957.149554538,-289637.357626125,-227343.267689935,-212447.992452626,-293772.817251291,-221461.806889473,-252918.175177565,-212554.063997081,-299843.307553558,-237304.256659704,-288763.777811048,-288538.767093196,-302844.66146021,-244048.803517309,-297706.170948098,-288441.272940072,-311294.089606417,-295722.703760473,-218849.752046164,-310671.673543704,-250855.1258056,-287625.802715442,-257486.132477199,-263184.67532364,-260707.274984573,-169876.429939799,-252211.979753869,-234592.794561966,-234282.803216599,-259553.882607186,-211750.565258738,-245072.900105846,-181113.043149693,-237933.820457823,-264311.663238637,-228525.4443871,-233289.609037242,-212317.477800921,-261121.625770269,-239456.995217637,-233309.676464939,-192908.300081017,-223122.788979311,-298744.717202035,-305257.490730037,-293734.555225203,-299681.920787374,-303508.396955553,-260025.511420993,-257082.140302415,-227837.413085689,-245370.141554372,-242289.843647563,-252589.132093312,-212482.507187453,-159944.297670561,-244124.535734933,-212382.735126773,-220110.074196934,-298621.476362486,-251839.209261762],"Archive514_field5":[-324668.772108201,-314529.362758491,-243553.497310526,-148496.534657002,-151031.38699443,-235948.940298245,-324898.317040947,-325311.574867011,-325608.902787764,-325268.50292897,-324288.01172218,-322983.528419206,-321453.1681953,-319697.754342879,-317718.562887262,-315823.338196498,-314913.799923971,-313315.134024711,-312138.130933908,-311002.919003794,-309912.39334506,-308867.428348683,-307866.846752929,-306912.659896704,-305997.262683365,-305095.534109143,-304168.763445608,-303211.192633921,-302225.068883095,-301213.159650223,-300177.818594335,-299123.11650023,-298051.849816701,-296967.914875899,-295866.365917065,-294740.627357304,-293590.495433781,-292417.261587956,-291221.978470687,-290005.031313353,-288768.899109229,-287520.912075516,-286307.14182217,-285153.62825553,-284046.811802476,-282986.492038684,-281962.348665061,-280980.889290358,-280035.931828174,-279127.817765297,-278226.006227409,-277302.092814951,-276351.793272872,-275373.313409255,-274351.941873476,-273261.965979503,-272171.99008553,-271082.014191557,-269990.613713712,-268891.88535528,-267793.156996849,-266694.428638418,-265607.748891666,-264605.119788894,-263602.490686121,-262639.694166688,-261702.65614423,-260753.324971116,-259789.05030339,-258824.775635664,-257860.500967939,-256896.226300213,-255931.951632487,-254967.676964761,-254003.402297035,-253039.127629309,-252062.12014799,-251062.828464915,-250068.639421291,-249104.770447775,-248140.901474259,-247217.401918602,-246301.425766583,-245385.449614564,-244469.473462545,-242475.196230804,-241396.895151081,-240318.594071358,-239240.292991636,-238173.332866032,-237117.60419888,-236068.632738644,-235027.332887722,-233993.773722212,-232940.921347999,-231846.021340687,-230715.186058939,-229553.343358545,-228368.271973219,-227171.005381361,-225967.306779771,-224762.796179762,-223556.126825413,-222348.973216926,-221143.557941589,-219943.792608085,-218760.304948921,-217605.449857594,-216486.664684063,-215409.983875606,-214365.483933977,-213315.653796935,-212257.663126173,-211195.369191576,-210132.543278825,-209073.759129216,-208024.432612206,-206997.716042865,-205973.412347444,-204974.703840379,-203995.477661929,-203016.251483478,-202037.025305027,-201057.799126577,-200078.572948126,-199099.346769676,-198120.120591225,-197140.894412774,-196161.668234324,-195205.007388843,-194252.006285769,-193299.005182695,-192346.004079622,-191393.002976548,-190440.001873474,-189487.0007704,-188533.999667327,-187580.998564253,-186627.997461179,-185674.996358105,-184721.995255031,-183768.994151958,-182815.993048884,-181862.99194581,-180909.990842736,-179956.989739663,-179003.988636589,-178050.987533515,-177097.986430441,-176144.985327367,-175191.984224294,-174238.98312122,-173285.982018146,-172332.980915072,-171379.979811999,-170426.978708925,-169473.977605851,-168520.976502777,-167567.975399704,-166614.055201502,-165660.073197107,-164706.091192712,-163752.109188318,-162798.127183923,-161843.360274937,-160888.556273607,-159934.210097273,-158980.3886324,-158026.567167528,-157073.545079755,-156120.543921671,-155167.542763587,-154214.541605504,-153261.54044742,-152308.539289337,-151355.538131253,-150402.53697317,-149449.535815086,-148553.742427768,-148610.161856703,-148662.242783453,-148713.778659565,-148761.52663114,-148809.274602716,-148853.609333612,-148897.622027109,-148941.121286406,-148984.525914563,-149029.031728039,-149074.730870151,-149121.628444208,-149169.599389606,-149218.637802016,-149268.733591188,-149319.87333505,-149371.847185897,-149424.115626125,-149476.50392375,-149529.008859813,-149581.479186598,-149633.763521547,-149685.700288506,-149737.221583038,-149787.839007026,-149838.068019051,-149887.867673227,-149936.94448094,-149985.741606739,-150033.550171861,-150081.343428715,-150127.800113338,-150174.256797961,-150220.566574347,-150266.824151218,-150313.081728088,-150359.339304959,-150405.717330477,-150452.67813623,-150499.638941983,-150546.962739837,-150594.317163374,-150641.944617064,-150689.925253866,-150738.228367004,-150786.797683219,-150835.572020621,-150884.485524734,-150933.470060723,-150982.457793639,-151876.7445838,-152722.102173171,-153567.459762541,-154412.817351912,-155258.174941282,-156103.532530652,-156948.890120023,-157794.247709393,-158639.605298764,-159484.962888134,-160355.092140669,-161226.393090111,-162097.694039554,-162968.994988996,-163843.006669145,-164747.44449422,-165661.471159552,-166583.384663842,-167512.309756708,-168455.921230412,-169413.060921377,-170370.200612342,-171327.340303307,-172284.479994272,-173241.619685237,-174198.759376202,-175155.899067167,-176113.038758132,-177082.113315152,-178059.524200138,-179036.935085124,-180014.34597011,-180991.756855096,-181969.167740082,-182946.578625069,-183923.989510055,-184901.400395041,-185889.959215825,-186879.746381035,-187869.533546246,-188859.320711456,-189849.107876667,-190838.895041877,-191828.682207088,-192818.469372298,-193812.993160279,-194817.518939759,-195822.044719239,-196826.570498718,-197831.022277263,-198834.766026618,-199838.509775974,-200840.824542022,-201840.581098868,-202841.340405749,-203842.300792847,-204846.883604194,-205852.754455304,-206860.033132513,-207868.1487948,-208876.299532855,-209884.482480548,-210891.440198179,-211894.669601991,-212892.246373958,-213882.905164528,-214865.182835647,-215837.637060331,-216798.27824944,-217745.315323125,-218678.459135192,-219605.791837432,-220535.255643482,-221469.476458595,-222406.983896862,-223346.228919951,-224285.553628341,-225222.81887629,-226156.406767274,-227085.225692542,-228004.930993246,-228919.519683278,-229828.748952216,-230724.038572769,-231619.328193322,-232496.728983557,-233372.284044483,-234238.130796283,-235093.535547264,-236894.204153343,-237839.468008442,-238784.731863541,-239729.99571864,-240669.287691128,-241594.017444481,-242509.858882184,-243415.763103687,-244312.368345733,-245209.190290522,-246145.400984457,-247136.918245459,-248188.054697457,-249303.652831566,-250488.665833294,-251751.870467469,-253117.19128861,-254561.519475999,-255931.875897763,-257210.514897277,-258408.025183074,-259529.126619385,-260578.89522186,-261562.904130206,-262484.216885136,-263380.010306085,-264274.992783008,-265175.653337449,-266085.026334174,-267000.736674975,-267919.297473345,-268836.335265398,-269748.001453097,-270648.584260377,-271541.437629363,-272428.147948236,-273314.85826711,-274201.568585983,-275088.278904856,-275974.98922373,-276861.699542603,-277748.409861477,-278635.12018035,-279521.830499223,-280408.670886574,-281296.538185,-282186.298222669,-283076.478527239,-283966.733646436,-284856.712492933,-285744.774362139,-286632.836231346,-287520.898100553,-288408.95996976,-289300.817818096,-290217.894948936,-291134.972079775,-292052.049210614,-292969.126341454,-293886.203472293,-294803.280603132,-295720.357733972,-296637.434864811,-297554.51199565,-298478.875079168,-299411.908069895,-300344.941060622,-301277.97405135,-302211.007042077,-303121.705218521,-304022.933728845,-304924.162239169,-305825.390749493,-306726.619259816,-307624.791844753,-308522.10296893,-309419.414093108,-310316.725217286,-311214.036341463,-312119.29962831,-313023.624921868,-313924.318319165,-314820.665395318,-315711.003949319,-316611.016825314,-317537.527458152,-318497.210178574,-319480.347636673,-320488.785964502,-321518.504205635,-322559.113865134,-323613.942986667,-222772.19782462,-240495.287470328,-229495.434603171,-183760.527460875,-193453.26990111,-280679.254830531,-160290.766070411,-202468.444966483,-211042.638163985,-203857.185155224,-246995.04261047,-262506.166773568,-169101.116540815,-302514.452650386,-264036.488598856,-257928.872333043,-265844.406070304,-205788.523798825,-221296.349294552,-223807.132322622,-210831.503257849,-270473.215899891,-176728.432158597,-261555.896598655,-243982.427772783,-260749.853009005,-229382.835553074,-255912.205256414,-237099.503744441,-229700.019328313,-256778.565155944,-220723.50391279,-252256.216427215,-251073.843740539,-302305.315394451,-221273.619881966,-308147.149578435,-205320.089877206,-168702.718357212,-219093.853230801,-294867.297481676,-181032.453388504,-311407.861794311,-253944.017479567,-246981.014793544,-214703.853373716,-271036.46069601,-308431.805391829,-306067.832943364,-230695.770391237,-272112.930864415,-169933.621367028,-203191.629285778,-231975.481721871,-160540.847830672,-222237.348161676,-261294.674667915,-311236.368412407,-213595.396255141,-239965.796312649,-247594.574925403,-270246.296919361,-201971.932309421,-215155.495625477,-310774.588001674,-243669.714128706,-183374.549281313,-296853.925767984,-184540.542523572,-242688.314147241,-241226.009161005,-252868.55455005,-244535.779964846,-236556.74052132,-262495.946277142,-290224.225084236,-272502.037418385,-280964.880296642,-311826.170973752,-310599.123000433,-280373.373088013,-160525.015036934,-241414.649143637,-271301.255249912,-258148.432221412,-233682.012620521,-264293.824994853,-287957.977210213,-165505.202714268,-160497.91101751,-249819.575657325,-278521.296922163,-205770.739148756,-185745.788976508,-169441.176556984,-274083.385168666,-239009.106045072,-195081.59614688,-299504.433948078,-300011.008834547,-238182.657205534,-250682.44652616,-211997.858990045,-257240.10686049,-230088.981118985,-235299.670903617,-175717.60617461,-192938.685577654,-294761.201507454,-280203.238037979,-175931.443966002,-167324.579526973,-315648.57880953,-243556.769886212,-300030.286766859,-214331.09390104,-294789.485646196,-293228.031388607,-291117.334028302,-224376.10862833,-278662.304926912,-226309.78433932,-185060.955892924,-194127.316051867,-270774.148900171,-186925.394711471,-251971.335769128,-187316.737741381,-252124.143446964,-232973.316206843,-233728.149793143,-296918.176907979,-291304.870873842,-214918.323497465,-232432.100151226,-280008.919881558,-204180.74133173,-173773.575360388,-185039.793083558,-202655.917618788,-272127.300508739,-277418.243839176,-277687.939715152,-227851.72238315,-211288.430357591,-260259.532440659,-288933.987265883,-284866.974986746,-238233.029293376,-226943.821401259,-256091.124409172,-303186.819260076,-202632.348595546,-176779.374766835,-210939.485369027,-202633.784908579,-196047.576494882,-252449.782997156,-304010.62702976,-266504.806730868,-288336.24300827,-300502.085215273,-231050.680046163,-220091.583233906,-254426.598902841,-194453.959326933,-193403.622877225,-281103.254068081,-297844.922946743,-266871.568863867,-189465.412091858,-290602.512881199,-211428.039799763,-304778.458856674,-246183.067096573,-219597.034484391,-219475.075654006,-159660.989506441,-178105.241412627,-260861.452674742,-315566.711496801,-279052.873538855,-246918.704971864,-175379.284099189,-197044.398294681,-269571.688054021,-196047.506321315,-212473.807209935,-194358.636039435,-233059.13666919,-287243.500463703,-225854.028699408,-220286.56346299,-245144.492223056,-217883.328158867,-303469.184034074,-155321.541847615,-289768.93854554,-204388.16731933,-305849.302284015,-279802.387342981,-163015.865496465,-155087.62595419,-208609.588565525,-262288.773923346,-188774.4754372,-293777.058227969,-216300.421861087,-151668.141080978,-177507.01877795,-157593.922316508,-315738.692897415,-264806.173582104,-177933.821403744,-305290.88500447,-309840.976083859,-253715.729664013,-149911.409767636,-174463.788883091,-274054.486933993,-153831.07062148,-244112.615892009,-281527.852995722,-228969.306391428,-203371.266476719,-207155.457802227,-227207.522644786,-317978.021607693,-154025.244009407,-193120.386487939,-154833.058042595,-297753.13181537,-297088.674826022,-151632.343723399,-201459.588275255,-251132.947677821,-213680.800012482,-151752.932391827,-310401.354279308,-301457.204023016,-292052.551084999,-154185.308196697,-153201.083584769,-274259.448663584,-272388.425510262,-155573.86056728,-194598.362020794,-268699.658317238,-198447.58319018,-233749.076940401,-220854.132433162,-160493.627958683,-284066.002016507,-151432.73262425,-306313.411812316,-223881.783676653,-282670.287614605,-171930.746129714,-255608.208963642,-200320.420160774,-239091.907115487,-231683.082787119,-189877.219653983,-183870.557803971,-152066.910575708,-221137.854534562,-245268.873819498,-163536.343864203,-152039.92960175,-298282.920978512,-154828.087304173,-210576.933046999,-302529.984591892,-188349.231409159,-224127.106007471,-210164.296148942,-239940.791389208,-304502.374851581,-213751.888782013,-270414.272977322,-224402.224448455,-152377.364637968,-237577.112376836,-233009.45181285,-238625.473104309,-270875.269856546,-309815.398223664,-199307.689234899,-150480.387027564,-181108.635290472,-178429.625729854,-296764.420657706,-263820.288796231,-319937.846391117,-276248.086618097,-159453.050422761,-259377.453273342,-181331.508692465,-167880.624204984,-205911.486517686,-295162.182233832,-176740.45517731,-192509.678125422,-266964.014370903,-305141.137094653,-293201.974414848,-250140.504160708,-150604.979350961,-226352.547877815,-215495.850847825,-270366.952875183,-151067.576746529,-316946.069757079,-151482.988867916,-151127.255606035,-268334.902878893,-202698.704294342,-209551.794869645,-156291.384821886,-218206.879753708,-235404.029258641,-265268.136424397,-257020.280227356,-161911.107489252,-303216.289816076,-226312.785158401,-165185.416772346,-215589.122774025,-208224.93760535,-288360.652914562,-186035.120849602,-158710.965789748,-242074.181736597,-151017.770292226,-247955.857351883,-221355.003021363,-154527.918158232,-154549.311842617,-150206.375728907,-173348.163307797,-186687.916323356,-222085.387156337,-153181.167106977,-261599.784459111,-230158.444705547,-260788.85775295,-197002.347440508,-258400.615406371,-168493.301202719,-286998.063008946,-151460.870524824,-179160.695037029,-273951.745218241,-177409.06446357,-214038.466594664,-291558.47334509,-150663.413813916,-289615.352293287,-150375.186180078,-247498.645998405,-237247.60105357,-152169.539125613,-237351.655844636,-217056.459245585,-285814.471055737,-301359.925486027,-170611.492856845,-238949.414465041,-167282.843283383,-220066.485884627,-251698.004731225,-265813.627055286,-240639.106721078,-263081.366300882,-319542.609060402,-158558.974702634,-316303.669268695,-296597.096729688,-256590.447321689,-299824.239311948,-284140.779064391,-301423.284656853,-165081.803405264,-211771.64722181,-236370.147721923,-160657.980060799,-294574.877914767,-252530.941454066,-277283.931771947,-258552.832939576,-195239.347886548,-151638.723756543,-213304.462757699,-167096.104626199,-167614.262528058,-248273.411408905,-252862.179314544,-156429.345538457,-241488.483492441,-203882.605059593,-260326.630163063,-190850.004518667,-184178.662671575,-290958.76509413,-197192.065978228,-246891.157012771,-307682.103264049,-299343.047840543,-151888.663674486,-286496.736112734,-313440.444926733,-243029.361744999,-317862.619064948,-151952.942868472,-247843.536759543,-312354.537896787,-322294.487665929,-200340.401674015,-235639.815335086,-270966.33547256,-266569.304391057,-162750.962672384,-169725.229741455,-152202.734129148,-284441.157008368,-196430.503274396,-151422.998643464,-265330.116026817,-284846.609112012,-243340.245164375,-227762.007874675,-249619.768437862,-309523.189263377,-174857.71423348,-276286.189184115,-306929.773080401,-206662.544608254,-152843.378613938,-278670.84590543,-311590.189363177,-188333.903746689,-287511.736026081,-278247.64574476],"Archive514_field6":[-324668.772108201,-314529.362758491,-243553.497310526,-148496.534657002,-151031.38699443,-235948.940298245,-324898.317040947,-325311.574867011,-325608.902787764,-325268.50292897,-324288.01172218,-322983.528419206,-321453.1681953,-319697.754342879,-317718.562887262,-315823.338196498,-314913.799923971,-313315.134024711,-312138.130933908,-311002.919003794,-309912.39334506,-308867.428348683,-307866.846752929,-306912.659896704,-305997.262683365,-305095.534109143,-304168.763445608,-303211.192633921,-302225.068883095,-301213.159650223,-300177.818594335,-299123.11650023,-298051.849816701,-296967.914875899,-295866.365917065,-294740.627357304,-293590.495433781,-292417.261587956,-291221.978470687,-290005.031313353,-288768.899109229,-287520.912075516,-286307.14182217,-285153.62825553,-284046.811802476,-282986.492038684,-281962.348665061,-280980.889290358,-280035.931828174,-279127.817765297,-278226.006227409,-277302.092814951,-276351.793272872,-275373.313409255,-274351.941873476,-273261.965979503,-272171.99008553,-271082.014191557,-269990.613713712,-268891.88535528,-267793.156996849,-266694.428638418,-265607.748891666,-264605.119788894,-263602.490686121,-262639.694166688,-261702.65614423,-260753.324971116,-259789.05030339,-258824.775635664,-257860.500967939,-256896.226300213,-255931.951632487,-254967.676964761,-254003.402297035,-253039.127629309,-252062.12014799,-251062.828464915,-250068.639421291,-249104.770447775,-248140.901474259,-247217.401918602,-246301.425766583,-245385.449614564,-244469.473462545,-242475.196230804,-241396.895151081,-240318.594071358,-239240.292991636,-238173.332866032,-237117.60419888,-236068.632738644,-235027.332887722,-233993.773722212,-232940.921347999,-231846.021340687,-230715.186058939,-229553.343358545,-228368.271973219,-227171.005381361,-225967.306779771,-224762.796179762,-223556.126825413,-222348.973216926,-221143.557941589,-219943.792608085,-218760.304948921,-217605.449857594,-216486.664684063,-215409.983875606,-214365.483933977,-213315.653796935,-212257.663126173,-211195.369191576,-210132.543278825,-209073.759129216,-208024.432612206,-206997.716042865,-205973.412347444,-204974.703840379,-203995.477661929,-203016.251483478,-202037.025305027,-201057.799126577,-200078.572948126,-199099.346769676,-198120.120591225,-197140.894412774,-196161.668234324,-195205.007388843,-194252.006285769,-193299.005182695,-192346.004079622,-191393.002976548,-190440.001873474,-189487.0007704,-188533.999667327,-187580.998564253,-186627.997461179,-185674.996358105,-184721.995255031,-183768.994151958,-182815.993048884,-181862.99194581,-180909.990842736,-179956.989739663,-179003.988636589,-178050.987533515,-177097.986430441,-176144.985327367,-175191.984224294,-174238.98312122,-173285.982018146,-172332.980915072,-171379.979811999,-170426.978708925,-169473.977605851,-168520.976502777,-167567.975399704,-166614.055201502,-165660.073197107,-164706.091192712,-163752.109188318,-162798.127183923,-161843.360274937,-160888.556273607,-159934.210097273,-158980.3886324,-158026.567167528,-157073.545079755,-156120.543921671,-155167.542763587,-154214.541605504,-153261.54044742,-152308.539289337,-151355.538131253,-150402.53697317,-149449.535815086,-148553.742427768,-148610.161856703,-148662.242783453,-148713.778659565,-148761.52663114,-148809.274602716,-148853.609333612,-148897.622027109,-148941.121286406,-148984.525914563,-149029.031728039,-149074.730870151,-149121.628444208,-149169.599389606,-149218.637802016,-149268.733591188,-149319.87333505,-149371.847185897,-149424.115626125,-149476.50392375,-149529.008859813,-149581.479186598,-149633.763521547,-149685.700288506,-149737.221583038,-149787.839007026,-149838.068019051,-149887.867673227,-149936.94448094,-149985.741606739,-150033.550171861,-150081.343428715,-150127.800113338,-150174.256797961,-150220.566574347,-150266.824151218,-150313.081728088,-150359.339304959,-150405.717330477,-150452.67813623,-150499.638941983,-150546.962739837,-150594.317163374,-150641.944617064,-150689.925253866,-150738.228367004,-150786.797683219,-150835.572020621,-150884.485524734,-150933.470060723,-150982.457793639,-151876.7445838,-152722.102173171,-153567.459762541,-154412.817351912,-155258.174941282,-156103.532530652,-156948.890120023,-157794.247709393,-158639.605298764,-159484.962888134,-160355.092140669,-161226.393090111,-162097.694039554,-162968.994988996,-163843.006669145,-164747.44449422,-165661.471159552,-166583.384663842,-167512.309756708,-168455.921230412,-169413.060921377,-170370.200612342,-171327.340303307,-172284.479994272,-173241.619685237,-174198.759376202,-175155.899067167,-176113.038758132,-177082.113315152,-178059.524200138,-179036.935085124,-180014.34597011,-180991.756855096,-181969.167740082,-182946.578625069,-183923.989510055,-184901.400395041,-185889.959215825,-186879.746381035,-187869.533546246,-188859.320711456,-189849.107876667,-190838.895041877,-191828.682207088,-192818.469372298,-193812.993160279,-194817.518939759,-195822.044719239,-196826.570498718,-197831.022277263,-198834.766026618,-199838.509775974,-200840.824542022,-201840.581098868,-202841.340405749,-203842.300792847,-204846.883604194,-205852.754455304,-206860.033132513,-207868.1487948,-208876.299532855,-209884.482480548,-210891.440198179,-211894.669601991,-212892.246373958,-213882.905164528,-214865.182835647,-215837.637060331,-216798.27824944,-217745.315323125,-218678.459135192,-219605.791837432,-220535.255643482,-221469.476458595,-222406.983896862,-223346.228919951,-224285.553628341,-225222.81887629,-226156.406767274,-227085.225692542,-228004.930993246,-228919.519683278,-229828.748952216,-230724.038572769,-231619.328193322,-232496.728983557,-233372.284044483,-234238.130796283,-235093.535547264,-236894.204153343,-237839.468008442,-238784.731863541,-239729.99571864,-240669.287691128,-241594.017444481,-242509.858882184,-243415.763103687,-244312.368345733,-245209.190290522,-246145.400984457,-247136.918245459,-248188.054697457,-249303.652831566,-250488.665833294,-251751.870467469,-253117.19128861,-254561.519475999,-255931.875897763,-257210.514897277,-258408.025183074,-259529.126619385,-260578.89522186,-261562.904130206,-262484.216885136,-263380.010306085,-264274.992783008,-265175.653337449,-266085.026334174,-267000.736674975,-267919.297473345,-268836.335265398,-269748.001453097,-270648.584260377,-271541.437629363,-272428.147948236,-273314.85826711,-274201.568585983,-275088.278904856,-275974.98922373,-276861.699542603,-277748.409861477,-278635.12018035,-279521.830499223,-280408.670886574,-281296.538185,-282186.298222669,-283076.478527239,-283966.733646436,-284856.712492933,-285744.774362139,-286632.836231346,-287520.898100553,-288408.95996976,-289300.817818096,-290217.894948936,-291134.972079775,-292052.049210614,-292969.126341454,-293886.203472293,-294803.280603132,-295720.357733972,-296637.434864811,-297554.51199565,-298478.875079168,-299411.908069895,-300344.941060622,-301277.97405135,-302211.007042077,-303121.705218521,-304022.933728845,-304924.162239169,-305825.390749493,-306726.619259816,-307624.791844753,-308522.10296893,-309419.414093108,-310316.725217286,-311214.036341463,-312119.29962831,-313023.624921868,-313924.318319165,-314820.665395318,-315711.003949319,-316611.016825314,-317537.527458152,-318497.210178574,-319480.347636673,-320488.785964502,-321518.504205635,-322559.113865134,-323613.942986667,-222772.19782462,-240495.287470328,-229495.434603171,-183760.527460875,-193453.26990111,-280679.254830531,-160290.766070411,-202468.444966483,-211042.638163985,-203857.185155224,-246995.04261047,-262506.166773568,-169101.116540815,-302514.452650386,-264036.488598856,-257928.872333043,-265844.406070304,-205788.523798825,-221296.349294552,-223807.132322622,-210831.503257849,-270473.215899891,-176728.432158597,-261555.896598655,-243982.427772783,-260749.853009005,-229382.835553074,-255912.205256414,-237099.503744441,-229700.019328313,-256778.565155944,-220723.50391279,-252256.216427215,-251073.843740539,-302305.315394451,-221273.619881966,-308147.149578435,-205320.089877206,-168702.718357212,-219093.853230801,-294867.297481676,-181032.453388504,-311407.861794311,-253944.017479567,-246981.014793544,-214703.853373716,-271036.46069601,-308431.805391829,-306067.832943364,-230695.770391237,-272112.930864415,-169933.621367028,-203191.629285778,-231975.481721871,-160540.847830672,-222237.348161676,-261294.674667915,-311236.368412407,-213595.396255141,-239965.796312649,-247594.574925403,-270246.296919361,-201971.932309421,-215155.495625477,-310774.588001674,-243669.714128706,-183374.549281313,-296853.925767984,-184540.542523572,-242688.314147241,-241226.009161005,-252868.55455005,-244535.779964846,-236556.74052132,-262495.946277142,-290224.225084236,-272502.037418385,-280964.880296642,-311826.170973752,-310599.123000433,-280373.373088013,-160525.015036934,-241414.649143637,-271301.255249912,-258148.432221412,-233682.012620521,-264293.824994853,-287957.977210213,-165505.202714268,-160497.91101751,-249819.575657325,-278521.296922163,-205770.739148756,-185745.788976508,-169441.176556984,-274083.385168666,-239009.106045072,-195081.59614688,-299504.433948078,-300011.008834547,-238182.657205534,-250682.44652616,-211997.858990045,-257240.10686049,-230088.981118985,-235299.670903617,-175717.60617461,-192938.685577654,-294761.201507454,-280203.238037979,-175931.443966002,-167324.579526973,-315648.57880953,-243556.769886212,-300030.286766859,-214331.09390104,-294789.485646196,-293228.031388607,-291117.334028302,-224376.10862833,-278662.304926912,-226309.78433932,-185060.955892924,-194127.316051867,-270774.148900171,-186925.394711471,-251971.335769128,-187316.737741381,-252124.143446964,-232973.316206843,-233728.149793143,-296918.176907979,-291304.870873842,-214918.323497465,-232432.100151226,-280008.919881558,-204180.74133173,-173773.575360388,-185039.793083558,-202655.917618788,-272127.300508739,-277418.243839176,-277687.939715152,-227851.72238315,-211288.430357591,-260259.532440659,-288933.987265883,-284866.974986746,-238233.029293376,-226943.821401259,-256091.124409172,-303186.819260076,-202632.348595546,-176779.374766835,-210939.485369027,-202633.784908579,-196047.576494882,-252449.782997156,-304010.62702976,-266504.806730868,-288336.24300827,-300502.085215273,-231050.680046163,-220091.583233906,-254426.598902841,-194453.959326933,-193403.622877225,-281103.254068081,-297844.922946743,-266871.568863867,-189465.412091858,-290602.512881199,-211428.039799763,-304778.458856674,-246183.067096573,-219597.034484391,-219475.075654006,-159660.989506441,-178105.241412627,-260861.452674742,-315566.711496801,-279052.873538855,-246918.704971864,-175379.284099189,-197044.398294681,-269571.688054021,-196047.506321315,-212473.807209935,-194358.636039435,-233059.13666919,-287243.500463703,-225854.028699408,-220286.56346299,-245144.492223056,-217883.328158867,-303469.184034074,-155321.541847615,-289768.93854554,-204388.16731933,-305849.302284015,-279802.387342981,-163015.865496465,-155087.62595419,-208609.588565525,-262288.773923346,-188774.4754372,-293777.058227969,-216300.421861087,-151668.141080978,-177507.01877795,-157593.922316508,-315738.692897415,-264806.173582104,-177933.821403744,-305290.88500447,-309840.976083859,-253715.729664013,-149911.409767636,-174463.788883091,-274054.486933993,-153831.07062148,-244112.615892009,-281527.852995722,-228969.306391428,-203371.266476719,-207155.457802227,-227207.522644786,-317978.021607693,-154025.244009407,-193120.386487939,-154833.058042595,-297753.13181537,-297088.674826022,-151632.343723399,-201459.588275255,-251132.947677821,-213680.800012482,-151752.932391827,-310401.354279308,-301457.204023016,-292052.551084999,-154185.308196697,-153201.083584769,-274259.448663584,-272388.425510262,-155573.86056728,-194598.362020794,-268699.658317238,-198447.58319018,-233749.076940401,-220854.132433162,-160493.627958683,-284066.002016507,-151432.73262425,-306313.411812316,-223881.783676653,-282670.287614605,-171930.746129714,-255608.208963642,-200320.420160774,-239091.907115487,-231683.082787119,-189877.219653983,-183870.557803971,-152066.910575708,-221137.854534562,-245268.873819498,-163536.343864203,-152039.92960175,-298282.920978512,-154828.087304173,-210576.933046999,-302529.984591892,-188349.231409159,-224127.106007471,-210164.296148942,-239940.791389208,-304502.374851581,-213751.888782013,-270414.272977322,-224402.224448455,-152377.364637968,-237577.112376836,-233009.45181285,-238625.473104309,-270875.269856546,-309815.398223664,-199307.689234899,-150480.387027564,-181108.635290472,-178429.625729854,-296764.420657706,-263820.288796231,-319937.846391117,-276248.086618097,-159453.050422761,-259377.453273342,-181331.508692465,-167880.624204984,-205911.486517686,-295162.182233832,-176740.45517731,-192509.678125422,-266964.014370903,-305141.137094653,-293201.974414848,-250140.504160708,-150604.979350961,-226352.547877815,-215495.850847825,-270366.952875183,-151067.576746529,-316946.069757079,-151482.988867916,-151127.255606035,-268334.902878893,-202698.704294342,-209551.794869645,-156291.384821886,-218206.879753708,-235404.029258641,-265268.136424397,-257020.280227356,-161911.107489252,-303216.289816076,-226312.785158401,-165185.416772346,-215589.122774025,-208224.93760535,-288360.652914562,-186035.120849602,-158710.965789748,-242074.181736597,-151017.770292226,-247955.857351883,-221355.003021363,-154527.918158232,-154549.311842617,-150206.375728907,-173348.163307797,-186687.916323356,-222085.387156337,-153181.167106977,-261599.784459111,-230158.444705547,-260788.85775295,-197002.347440508,-258400.615406371,-168493.301202719,-286998.063008946,-151460.870524824,-179160.695037029,-273951.745218241,-177409.06446357,-214038.466594664,-291558.47334509,-150663.413813916,-289615.352293287,-150375.186180078,-247498.645998405,-237247.60105357,-152169.539125613,-237351.655844636,-217056.459245585,-285814.471055737,-301359.925486027,-170611.492856845,-238949.414465041,-167282.843283383,-220066.485884627,-251698.004731225,-265813.627055286,-240639.106721078,-263081.366300882,-319542.609060402,-158558.974702634,-316303.669268695,-296597.096729688,-256590.447321689,-299824.239311948,-284140.779064391,-301423.284656853,-165081.803405264,-211771.64722181,-236370.147721923,-160657.980060799,-294574.877914767,-252530.941454066,-277283.931771947,-258552.832939576,-195239.347886548,-151638.723756543,-213304.462757699,-167096.104626199,-167614.262528058,-248273.411408905,-252862.179314544,-156429.345538457,-241488.483492441,-203882.605059593,-260326.630163063,-190850.004518667,-184178.662671575,-290958.76509413,-197192.065978228,-246891.157012771,-307682.103264049,-299343.047840543,-151888.663674486,-286496.736112734,-313440.444926733,-243029.361744999,-317862.619064948,-151952.942868472,-247843.536759543,-312354.537896787,-322294.487665929,-200340.401674015,-235639.815335086,-270966.33547256,-266569.304391057,-162750.962672384,-169725.229741455,-152202.734129148,-284441.157008368,-196430.503274396,-151422.998643464,-265330.116026817,-284846.609112012,-243340.245164375,-227762.007874675,-249619.768437862,-309523.189263377,-174857.71423348,-276286.189184115,-306929.773080401,-206662.544608254,-152843.378613938,-278670.84590543,-311590.189363177,-188333.903746689,-287511.736026081,-278247.64574476],"Archive514_field7":[-324668.772108201,-314529.362758491,-243553.497310526,-148496.534657002,-151031.38699443,-235948.940298245,-324861.076233813,-325237.12984218,-325603.274805443,-325348.922715334,-324419.240267738,-323117.290169469,-321581.998522256,-319814.199385484,-317815.190739022,-315864.02692845,-314922.326472988,-313568.345470374,-312625.13386083,-311699.184202092,-310789.927847483,-309896.769477241,-309019.938874944,-308163.301584593,-307321.48389525,-306493.798160716,-305680.109073755,-304887.230950175,-304094.950863107,-303302.670776038,-302510.39068897,-301718.110601901,-300933.945009187,-300163.41687529,-299392.888741392,-298622.360607494,-297851.832473597,-297081.304339699,-296307.732881279,-295526.317267629,-294718.853814722,-293885.397692937,-293030.221213706,-292151.773071763,-291248.331374225,-290313.179068393,-289351.971874056,-288363.456039039,-287364.710503795,-286366.512156094,-285379.568016448,-284415.713318521,-283452.769490989,-282523.259218953,-281593.748946917,-280686.230767722,-279791.065786963,-278896.57175157,-278005.533823513,-277090.813112787,-276155.700526348,-275199.342138631,-274220.929553483,-273219.696355074,-272194.91491859,-271145.893536224,-270074.999456095,-269011.638228999,-267948.4018725,-266926.874355064,-265905.346837627,-264918.614900192,-263938.922527275,-262976.848765598,-262036.52639963,-261114.343274213,-260213.962911708,-259313.582549202,-258413.202186697,-257512.821824191,-256612.441461686,-255712.06109918,-254811.680736675,-253911.300374169,-253010.920011664,-252120.958331881,-251250.3638087,-250379.769285519,-249509.174762337,-248638.580239156,-247774.691335379,-246930.452530408,-246086.213725438,-245241.974920467,-244397.736115497,-242763.19902053,-241972.900730533,-241182.602440536,-240418.520818327,-239654.623909182,-238890.727000037,-238150.118732363,-237412.623748574,-236675.128764785,-235955.053889218,-235243.9614359,-234532.868982582,-233820.965172566,-233091.92032607,-232324.708664892,-231512.295039213,-230656.436774747,-229754.16441815,-228802.286067179,-227796.910272984,-226737.808757138,-225620.737976608,-224444.297545396,-223269.410248112,-222144.984215963,-221070.667180264,-220043.209906346,-219059.015853567,-218117.796029315,-217218.296904615,-216356.794806656,-215532.820602502,-214734.538849399,-213933.702347204,-213132.865845009,-212317.736600131,-211481.998521862,-210646.260443593,-209790.76836302,-208920.129977908,-208049.491592795,-207149.660276611,-206244.122707247,-205331.82519153,-204394.426499853,-203457.027808177,-202519.6291165,-201582.230424824,-200644.831733147,-199707.433041471,-198770.034349795,-197832.635658118,-196895.236966442,-195957.013662673,-195008.108322317,-194059.202981961,-193110.297641605,-192161.392301249,-191212.486960893,-190263.581620538,-189314.676280182,-188365.770939826,-187416.86559947,-186468.628620554,-185532.071769612,-184595.514918669,-183658.958067727,-182722.401216785,-181785.844365843,-180849.287514901,-179912.730663959,-178976.173813016,-178039.616962074,-177103.060111132,-176165.09372524,-175226.978524461,-174288.863323682,-173350.748122904,-172412.632922125,-171474.517721346,-170536.402520568,-169598.287319789,-168660.17211901,-167722.056918232,-166785.702100175,-165849.867942123,-164914.033784071,-163978.199626019,-163042.365467967,-162124.66440712,-161214.995742485,-160305.327077851,-159395.658413216,-158485.989748581,-157577.076967043,-156669.022736039,-155760.968505035,-154852.914274031,-153944.860043027,-153036.805812022,-152128.751581018,-151220.697350014,-150312.64311901,-149404.588888006,-148542.602932999,-148588.671208995,-148633.585250694,-148678.02173341,-148721.918909545,-148764.723558617,-148807.528207688,-148848.924497871,-148890.097268137,-148931.241024693,-148972.333648977,-149014.83833463,-149058.443113608,-149103.188455871,-149149.128478598,-149196.313989865,-149244.792783409,-149294.609899358,-149345.694809101,-149396.765531645,-149446.581422479,-149495.090844917,-149542.397376893,-149588.541247784,-149633.565005379,-149677.513722409,-149720.435228399,-149762.328936122,-149804.13023326,-149845.927784818,-149887.725336376,-149929.522887934,-149971.320439491,-150014.136104492,-150057.055893478,-150099.975682465,-150142.895471451,-150185.815260438,-150228.825968202,-150271.83801067,-150314.350822768,-150356.420863616,-150398.472610821,-150439.600644764,-150480.728678707,-150521.431516566,-150561.617537946,-150601.803559326,-150642.289054808,-150682.83890355,-150723.758940216,-150766.003365149,-150808.247790083,-150851.709339517,-150895.648286022,-150940.120155357,-150985.753574893,-151866.867608082,-152702.348221734,-153537.828835386,-154373.309449039,-155208.790062691,-156044.270676343,-156879.751289996,-157715.231903648,-158550.7125173,-159386.193130952,-160220.800501537,-161055.236670182,-161883.833840456,-162698.268211825,-163512.702583195,-164313.429987598,-165107.862413615,-165902.034600889,-166676.464922007,-167450.895243126,-168223.032895404,-168989.025589241,-169755.018283078,-170521.010976915,-171287.003670751,-172052.996364588,-172818.989058425,-173584.981752262,-174350.974446099,-175116.967139936,-175882.959833773,-176650.67524698,-177425.941269684,-178201.207292389,-178976.473315093,-179751.739337798,-180527.005360503,-181302.271383207,-182077.537405912,-182852.803428617,-183628.069451321,-184403.335474026,-185184.479342369,-185985.03430215,-186785.589261931,-187586.144221712,-188386.699181493,-189187.254141274,-190020.669887371,-190856.606215618,-191692.542543864,-192528.47887211,-193364.415200357,-194208.834098133,-195054.754950481,-195900.675802829,-196746.596655178,-197592.517507526,-198438.438359874,-199284.359212222,-200130.28006457,-200976.200916918,-201822.121769266,-202673.898999784,-203527.040172331,-204390.136786382,-205274.126745684,-206158.116704986,-207070.523212109,-207985.36130328,-208918.726837701,-209864.412469905,-210811.572214586,-211755.974092325,-212680.895262048,-213585.155399985,-214468.468226945,-215333.648629508,-216181.42454068,-217012.56360729,-217825.682998018,-218618.210158681,-219407.540094786,-220200.182951072,-221007.833092901,-221832.684570367,-222671.218263261,-223527.328483488,-224401.538126081,-225275.747768675,-226185.624897834,-227098.05990472,-228015.100792958,-228935.131122195,-229848.130190267,-230744.640199639,-231641.150209012,-232515.763999593,-233388.753476845,-234250.002867747,-235099.471582996,-236870.309131365,-237791.677964485,-238700.726237643,-239601.308479564,-240499.191145286,-241378.986668256,-242258.782191227,-243125.921955286,-243984.930622282,-244844.148347046,-245710.95958251,-246605.379356449,-247528.348994447,-248481.647689526,-249466.919992643,-250485.690558313,-251539.376810078,-252629.299880617,-253754.908960227,-254866.960348039,-255924.198300418,-256927.238171926,-257880.148454977,-258787.185065079,-259647.892692064,-260466.16504932,-261242.778941756,-261983.32187299,-262687.936813789,-263388.422285295,-264088.907756801,-264789.584831334,-265510.694696583,-266231.804561833,-266952.914427082,-267693.276561328,-268435.010579211,-269176.744597094,-269937.931047339,-270700.288996308,-271463.323680172,-272245.698536384,-273028.073392595,-273810.448248807,-274592.823105019,-275375.197961231,-276164.624414441,-276966.376977709,-277768.129540977,-278569.882104245,-279371.634667514,-280173.387230782,-280997.470618686,-281826.094316316,-282654.718013946,-283483.341711576,-284311.965409205,-285157.24807844,-286020.753195302,-286884.258312163,-287747.763429025,-288611.268545887,-289484.860354714,-290377.997640262,-291271.134925811,-292164.27221136,-293057.409496909,-293950.546782458,-294843.684068007,-295736.821353555,-296629.958639104,-297523.095924653,-298418.299422817,-299316.514742133,-300214.730061449,-301112.945380765,-302011.160700082,-302909.376019398,-303807.591338714,-304705.80665803,-305604.021977346,-306502.237296662,-307387.895836036,-308253.810045037,-309095.456180161,-309906.09283887,-310696.067346663,-311467.287473414,-312210.35664844,-312937.567955456,-313640.35554148,-314321.590727089,-314983.581126148,-315626.668777863,-316267.049069276,-316933.498861728,-317636.208343848,-318372.42309639,-319143.563740894,-319957.442599564,-320808.184501378,-321705.247650731,-322645.615246753,-323632.352867588,-260045.252188798,-185533.073909838,-298802.88301956,-278400.798727523,-270994.599829916,-247461.948363308,-203510.782083997,-229788.708394184,-279918.383723553,-287125.978702329,-294825.856110256,-267500.211296048,-204204.813087449,-252268.134880717,-235343.056314693,-196538.652821011,-262837.411241522,-187043.858211554,-253866.60098546,-176704.72691842,-169180.148117416,-278826.214615576,-303965.582666204,-255930.748341837,-277259.127852575,-224378.552980181,-165256.643665578,-166689.052262797,-202725.963842872,-309522.246659063,-280042.04044755,-229618.768941641,-184818.384630583,-212501.880241595,-252260.222142474,-196045.091522931,-214979.823638234,-197180.758498185,-212157.473886739,-211267.395170433,-253225.582711588,-307098.81588451,-294389.709940888,-205894.982759875,-204667.85629531,-178205.99322919,-189533.090055058,-284750.362765059,-160234.394141562,-294307.787738105,-300979.557545004,-233782.449416602,-202109.156919599,-160932.687256163,-220876.323840004,-261994.555203873,-222894.11938246,-170035.155319792,-299650.30034597,-308990.81936444,-233689.500933066,-192867.620505491,-300368.245018594,-272536.722176429,-184390.689966858,-214861.206098753,-205839.995662289,-264118.643563873,-243157.480151335,-219833.343600904,-185902.886289891,-211417.453918208,-226551.849125743,-243696.299134197,-249870.369291542,-241455.965945834,-240016.400242834,-176319.12046056,-237058.902826468,-187224.691819443,-232944.457766643,-193664.151399929,-302395.375072739,-280016.940281927,-187221.389513138,-230158.83172594,-238939.992822902,-236691.714913515,-271159.691970171,-307305.968996212,-202652.464397648,-262420.506040493,-317129.959555046,-211761.224619616,-227070.39128174,-277682.535411086,-290928.191299001,-268144.36636471,-287844.104950469,-280516.521662633,-261388.899397729,-250998.945843077,-260908.567541997,-229524.562212817,-196331.398064459,-220233.788251478,-203144.757490819,-290740.359194226,-178007.602890666,-250599.195470541,-224732.190797136,-240979.316622285,-308869.526627915,-219314.155316074,-265792.950482438,-211316.067826656,-160974.257583315,-306599.573846228,-288371.341943098,-310134.318280259,-212922.2090198,-205947.746605139,-258311.295162997,-269969.414781948,-232526.54368194,-256806.628560453,-175798.796258517,-225914.206891155,-272029.594477159,-287824.438751831,-172808.442929674,-232923.677942218,-176154.246117933,-297839.565688457,-286975.03813412,-296373.391080385,-246930.384594358,-274252.949705144,-301834.68479948,-195079.601206059,-246587.624036999,-303200.016486611,-228034.161065351,-278444.940055887,-316350.208121543,-159845.181994083,-160221.120096131,-212741.972623595,-279592.985626913,-256223.647094382,-194180.680737024,-194338.574898865,-193553.123633116,-252549.278835877,-232566.878521474,-251632.459778256,-257396.337505423,-211153.954259432,-244431.299651594,-246828.553093877,-181133.83111498,-221457.594283766,-246858.209674399,-260772.154915849,-289649.133574331,-238335.279652961,-271797.473875507,-292829.914426322,-220553.043640141,-264229.617825543,-215853.939200833,-222283.12802781,-251921.893378497,-243637.706123197,-240245.887795317,-269449.617464548,-230563.103768658,-270323.853747922,-296918.008511754,-230745.812077855,-238497.80915394,-280879.059831527,-242975.944386869,-270817.170160191,-168572.76834548,-257705.544828389,-183626.011036257,-219614.372852281,-169215.125517988,-181025.025733198,-310230.049933853,-163009.773357832,-280830.618458792,-272437.919700767,-160000.29183361,-260617.810977714,-210830.437249918,-208776.827188907,-202134.055284898,-305736.806852159,-267780.3248009,-170985.21276893,-285626.733400884,-268403.615122362,-155313.344850702,-154065.708937594,-251623.908796276,-233618.649773516,-305051.440616502,-150790.001124434,-162863.543281499,-200472.471661188,-303400.265468726,-236930.147364809,-284319.689444542,-278963.743808342,-249587.924305898,-203610.009409681,-244656.803547594,-218215.50289043,-214922.771113725,-185637.052699743,-292344.11267355,-275503.953485857,-247088.455951295,-166889.987357936,-271610.135603197,-151161.792723003,-152603.161567787,-159210.218168866,-172624.745668785,-218446.314285539,-216610.715997796,-221038.567426829,-176263.926960802,-157564.372057518,-179244.877149479,-286245.632232127,-281411.472616033,-209066.462862607,-300603.288029488,-151207.926218616,-219286.146743739,-156933.118022527,-299885.998595776,-313479.229965128,-207685.237984419,-194749.505573414,-309281.903386652,-173691.101629483,-163906.977868221,-165391.188286486,-150790.879649883,-251709.88268876,-230773.72819286,-184843.585523783,-267947.502189635,-262623.12947312,-154714.808856894,-296312.695670993,-153891.971512701,-230444.535199778,-244025.710774652,-157194.697428515,-153699.787945066,-315099.524089973,-306805.143950007,-165085.839574459,-182815.117912651,-187578.838444125,-251827.75869238,-153232.922026505,-294879.016050421,-264490.427020897,-237779.403959596,-213057.194451899,-298064.247346435,-224067.965733709,-215143.075946222,-273748.808731946,-190582.665067395,-301346.880991247,-254167.759002961,-215579.565992119,-172364.439360381,-277812.337994819,-198422.65487059,-280603.59855287,-309023.546343293,-183208.491910882,-226666.89395031,-279837.912546033,-292755.746811447,-153894.718231469,-287887.439868861,-316745.621480037,-247986.032031879,-177861.229380487,-199448.97475689,-270731.075362545,-276267.316709048,-151893.626977491,-301782.230532229,-241123.74228704,-316049.199248915,-221197.198946151,-215436.3751659,-297338.210980329,-193697.860369731,-258639.477124016,-256594.46262595,-223210.882706645,-149928.21237411,-206198.192161099,-195803.147008683,-230040.222038244,-152322.119812249,-258689.230382497,-291449.2762873,-160926.600481816,-275120.64673792,-155902.892312533,-211372.17308958,-262784.527799102,-308266.844080476,-311147.371481207,-316193.889547103,-239000.833054226,-151180.798146887,-187387.005224651,-298031.656521317,-242003.99583337,-294523.801460136,-266354.250175712,-320008.391091604,-225172.256819614,-150786.501747103,-259982.051879903,-291105.85927017,-300147.506317965,-176465.526620973,-204947.098541783,-312833.407123736,-233003.994966224,-174692.574815255,-242947.216084319,-219997.98359583,-151393.917264295,-191870.055432676,-245048.319288152,-154473.371739494,-157615.120099345,-263348.708452365,-305811.334280524,-153590.838451581,-322330.066083578,-240620.84812757,-213724.663406178,-192182.122030351,-227542.00619962,-259685.731347131,-316690.448521641,-304704.702401774,-291682.225157187,-284275.993702608,-151408.566379411,-200219.793270695,-252475.659716538,-204361.747358408,-151532.996005158,-206297.963213236,-247198.027040043,-308413.415017862,-311513.83414651,-296469.760465544,-150211.600446457,-287539.220692286,-151293.057507675,-189740.644094951,-213744.942141716,-247598.434897121,-260629.19017453,-202587.040590171,-225269.2497798,-151928.505395455,-177407.836174014,-152078.486382971,-170940.661229943,-210530.2138174,-228076.881039186,-154759.172020711,-293241.533008433,-317482.775139183,-149947.922582661,-181026.15018772,-220784.975146651,-273447.911431092,-195553.817919613,-151499.478903167,-168653.526195155,-202696.833141667,-150587.844941358,-150291.789577132,-206838.556506283,-151657.229262252,-167964.27803161,-159151.316417938,-296024.787772638,-169121.315486384,-277930.012058608,-151500.141157831,-246849.257988605,-285177.719878455,-150947.466318736,-151710.931405484,-197625.541519087,-289712.252081399,-277335.920185088,-245171.045649664,-160931.073511871,-256442.236478899,-162736.061833845,-154810.46574458,-265071.804196546,-248795.858916726,-308398.068979085,-282702.892329615,-284291.742031048,-258133.083192605,-234473.486232408,-150157.331221842,-301697.36640489,-212394.177691397,-314591.088725237,-219576.097880344,-269858.022769713,-264762.60651913,-166982.419809406,-235770.675694981,-216845.87247572,-275910.416752978,-286636.970320515,-310114.397229303,-286278.199545881,-293068.015738458,-150510.150499213,-295008.253136573,-156044.515513374,-226901.668078161,-264720.708735901,-237905.043472503,-151971.571024856,-178948.899242452,-250475.885433203,-254498.311629636,-216740.384260552,-283716.052357853,-266238.404154622,-150548.583113948,-237884.345125507,-261539.482945888,-312711.005304221,-298683.860066701,-185046.790022791,-224012.040899669,-288482.288270385,-228751.809300081,-153219.221075685,-243059.130670536,-169649.222718838,-238871.283257587,-187115.397959108,-240059.880314666,-153942.121993274,-149910.787739806,-222382.496247634,-196494.001765211,-234914.53598644,-224254.850713788,-322685.644291816,-248473.774339287,-150434.978618391,-178424.687931415,-155033.854868186,-256382.884653977,-237276.019120432,-302263.868213676,-303169.183599541,-169560.695899687,-189615.116868006,-202732.546203734,-320175.153851321,-152630.34800839,-265735.252969693,-288640.328308722,-152344.856924579,-311874.771931765,-303216.443327188,-289949.505269681,-256301.88864717,-153013.422305998,-158671.238166041,-151672.589763791,-237261.079803626,-236025.340218754,-149349.028038367,-313520.420571661],"Archive514_field8":[-324668.772108201,-314529.362758491,-243553.497310526,-148496.534657002,-151031.38699443,-235948.940298245,-324861.076233813,-325237.12984218,-325603.274805443,-325348.922715334,-324419.240267738,-323117.290169469,-321581.998522256,-319814.199385484,-317815.190739022,-315864.02692845,-314922.326472988,-313568.345470374,-312625.13386083,-311699.184202092,-310789.927847483,-309896.769477241,-309019.938874944,-308163.301584593,-307321.48389525,-306493.798160716,-305680.109073755,-304887.230950175,-304094.950863107,-303302.670776038,-302510.39068897,-301718.110601901,-300933.945009187,-300163.41687529,-299392.888741392,-298622.360607494,-297851.832473597,-297081.304339699,-296307.732881279,-295526.317267629,-294718.853814722,-293885.397692937,-293030.221213706,-292151.773071763,-291248.331374225,-290313.179068393,-289351.971874056,-288363.456039039,-287364.710503795,-286366.512156094,-285379.568016448,-284415.713318521,-283452.769490989,-282523.259218953,-281593.748946917,-280686.230767722,-279791.065786963,-278896.57175157,-278005.533823513,-277090.813112787,-276155.700526348,-275199.342138631,-274220.929553483,-273219.696355074,-272194.91491859,-271145.893536224,-270074.999456095,-269011.638228999,-267948.4018725,-266926.874355064,-265905.346837627,-264918.614900192,-263938.922527275,-262976.848765598,-262036.52639963,-261114.343274213,-260213.962911708,-259313.582549202,-258413.202186697,-257512.821824191,-256612.441461686,-255712.06109918,-254811.680736675,-253911.300374169,-253010.920011664,-252120.958331881,-251250.3638087,-250379.769285519,-249509.174762337,-248638.580239156,-247774.691335379,-246930.452530408,-246086.213725438,-245241.974920467,-244397.736115497,-242763.19902053,-241972.900730533,-241182.602440536,-240418.520818327,-239654.623909182,-238890.727000037,-238150.118732363,-237412.623748574,-236675.128764785,-235955.053889218,-235243.9614359,-234532.868982582,-233820.965172566,-233091.92032607,-232324.708664892,-231512.295039213,-230656.436774747,-229754.16441815,-228802.286067179,-227796.910272984,-226737.808757138,-225620.737976608,-224444.297545396,-223269.410248112,-222144.984215963,-221070.667180264,-220043.209906346,-219059.015853567,-218117.796029315,-217218.296904615,-216356.794806656,-215532.820602502,-214734.538849399,-213933.702347204,-213132.865845009,-212317.736600131,-211481.998521862,-210646.260443593,-209790.76836302,-208920.129977908,-208049.491592795,-207149.660276611,-206244.122707247,-205331.82519153,-204394.426499853,-203457.027808177,-202519.6291165,-201582.230424824,-200644.831733147,-199707.433041471,-198770.034349795,-197832.635658118,-196895.236966442,-195957.013662673,-195008.108322317,-194059.202981961,-193110.297641605,-192161.392301249,-191212.486960893,-190263.581620538,-189314.676280182,-188365.770939826,-187416.86559947,-186468.628620554,-185532.071769612,-184595.514918669,-183658.958067727,-182722.401216785,-181785.844365843,-180849.287514901,-179912.730663959,-178976.173813016,-178039.616962074,-177103.060111132,-176165.09372524,-175226.978524461,-174288.863323682,-173350.748122904,-172412.632922125,-171474.517721346,-170536.402520568,-169598.287319789,-168660.17211901,-167722.056918232,-166785.702100175,-165849.867942123,-164914.033784071,-163978.199626019,-163042.365467967,-162124.66440712,-161214.995742485,-160305.327077851,-159395.658413216,-158485.989748581,-157577.076967043,-156669.022736039,-155760.968505035,-154852.914274031,-153944.860043027,-153036.805812022,-152128.751581018,-151220.697350014,-150312.64311901,-149404.588888006,-148542.602932999,-148588.671208995,-148633.585250694,-148678.02173341,-148721.918909545,-148764.723558617,-148807.528207688,-148848.924497871,-148890.097268137,-148931.241024693,-148972.333648977,-149014.83833463,-149058.443113608,-149103.188455871,-149149.128478598,-149196.313989865,-149244.792783409,-149294.609899358,-149345.694809101,-149396.765531645,-149446.581422479,-149495.090844917,-149542.397376893,-149588.541247784,-149633.565005379,-149677.513722409,-149720.435228399,-149762.328936122,-149804.13023326,-149845.927784818,-149887.725336376,-149929.522887934,-149971.320439491,-150014.136104492,-150057.055893478,-150099.975682465,-150142.895471451,-150185.815260438,-150228.825968202,-150271.83801067,-150314.350822768,-150356.420863616,-150398.472610821,-150439.600644764,-150480.728678707,-150521.431516566,-150561.617537946,-150601.803559326,-150642.289054808,-150682.83890355,-150723.758940216,-150766.003365149,-150808.247790083,-150851.709339517,-150895.648286022,-150940.120155357,-150985.753574893,-151866.867608082,-152702.348221734,-153537.828835386,-154373.309449039,-155208.790062691,-156044.270676343,-156879.751289996,-157715.231903648,-158550.7125173,-159386.193130952,-160220.800501537,-161055.236670182,-161883.833840456,-162698.268211825,-163512.702583195,-164313.429987598,-165107.862413615,-165902.034600889,-166676.464922007,-167450.895243126,-168223.032895404,-168989.025589241,-169755.018283078,-170521.010976915,-171287.003670751,-172052.996364588,-172818.989058425,-173584.981752262,-174350.974446099,-175116.967139936,-175882.959833773,-176650.67524698,-177425.941269684,-178201.207292389,-178976.473315093,-179751.739337798,-180527.005360503,-181302.271383207,-182077.537405912,-182852.803428617,-183628.069451321,-184403.335474026,-185184.479342369,-185985.03430215,-186785.589261931,-187586.144221712,-188386.699181493,-189187.254141274,-190020.669887371,-190856.606215618,-191692.542543864,-192528.47887211,-193364.415200357,-194208.834098133,-195054.754950481,-195900.675802829,-196746.596655178,-197592.517507526,-198438.438359874,-199284.359212222,-200130.28006457,-200976.200916918,-201822.121769266,-202673.898999784,-203527.040172331,-204390.136786382,-205274.126745684,-206158.116704986,-207070.523212109,-207985.36130328,-208918.726837701,-209864.412469905,-210811.572214586,-211755.974092325,-212680.895262048,-213585.155399985,-214468.468226945,-215333.648629508,-216181.42454068,-217012.56360729,-217825.682998018,-218618.210158681,-219407.540094786,-220200.182951072,-221007.833092901,-221832.684570367,-222671.218263261,-223527.328483488,-224401.538126081,-225275.747768675,-226185.624897834,-227098.05990472,-228015.100792958,-228935.131122195,-229848.130190267,-230744.640199639,-231641.150209012,-232515.763999593,-233388.753476845,-234250.002867747,-235099.471582996,-236870.309131365,-237791.677964485,-238700.726237643,-239601.308479564,-240499.191145286,-241378.986668256,-242258.782191227,-243125.921955286,-243984.930622282,-244844.148347046,-245710.95958251,-246605.379356449,-247528.348994447,-248481.647689526,-249466.919992643,-250485.690558313,-251539.376810078,-252629.299880617,-253754.908960227,-254866.960348039,-255924.198300418,-256927.238171926,-257880.148454977,-258787.185065079,-259647.892692064,-260466.16504932,-261242.778941756,-261983.32187299,-262687.936813789,-263388.422285295,-264088.907756801,-264789.584831334,-265510.694696583,-266231.804561833,-266952.914427082,-267693.276561328,-268435.010579211,-269176.744597094,-269937.931047339,-270700.288996308,-271463.323680172,-272245.698536384,-273028.073392595,-273810.448248807,-274592.823105019,-275375.197961231,-276164.624414441,-276966.376977709,-277768.129540977,-278569.882104245,-279371.634667514,-280173.387230782,-280997.470618686,-281826.094316316,-282654.718013946,-283483.341711576,-284311.965409205,-285157.24807844,-286020.753195302,-286884.258312163,-287747.763429025,-288611.268545887,-289484.860354714,-290377.997640262,-291271.134925811,-292164.27221136,-293057.409496909,-293950.546782458,-294843.684068007,-295736.821353555,-296629.958639104,-297523.095924653,-298418.299422817,-299316.514742133,-300214.730061449,-301112.945380765,-302011.160700082,-302909.376019398,-303807.591338714,-304705.80665803,-305604.021977346,-306502.237296662,-307387.895836036,-308253.810045037,-309095.456180161,-309906.09283887,-310696.067346663,-311467.287473414,-312210.35664844,-312937.567955456,-313640.35554148,-314321.590727089,-314983.581126148,-315626.668777863,-316267.049069276,-316933.498861728,-317636.208343848,-318372.42309639,-319143.563740894,-319957.442599564,-320808.184501378,-321705.247650731,-322645.615246753,-323632.352867588,-260045.252188798,-185533.073909838,-298802.88301956,-278400.798727523,-270994.599829916,-247461.948363308,-203510.782083997,-229788.708394184,-279918.383723553,-287125.978702329,-294825.856110256,-267500.211296048,-204204.813087449,-252268.134880717,-235343.056314693,-196538.652821011,-262837.411241522,-187043.858211554,-253866.60098546,-176704.72691842,-169180.148117416,-278826.214615576,-303965.582666204,-255930.748341837,-277259.127852575,-224378.552980181,-165256.643665578,-166689.052262797,-202725.963842872,-309522.246659063,-280042.04044755,-229618.768941641,-184818.384630583,-212501.880241595,-252260.222142474,-196045.091522931,-214979.823638234,-197180.758498185,-212157.473886739,-211267.395170433,-253225.582711588,-307098.81588451,-294389.709940888,-205894.982759875,-204667.85629531,-178205.99322919,-189533.090055058,-284750.362765059,-160234.394141562,-294307.787738105,-300979.557545004,-233782.449416602,-202109.156919599,-160932.687256163,-220876.323840004,-261994.555203873,-222894.11938246,-170035.155319792,-299650.30034597,-308990.81936444,-233689.500933066,-192867.620505491,-300368.245018594,-272536.722176429,-184390.689966858,-214861.206098753,-205839.995662289,-264118.643563873,-243157.480151335,-219833.343600904,-185902.886289891,-211417.453918208,-226551.849125743,-243696.299134197,-249870.369291542,-241455.965945834,-240016.400242834,-176319.12046056,-237058.902826468,-187224.691819443,-232944.457766643,-193664.151399929,-302395.375072739,-280016.940281927,-187221.389513138,-230158.83172594,-238939.992822902,-236691.714913515,-271159.691970171,-307305.968996212,-202652.464397648,-262420.506040493,-317129.959555046,-211761.224619616,-227070.39128174,-277682.535411086,-290928.191299001,-268144.36636471,-287844.104950469,-280516.521662633,-261388.899397729,-250998.945843077,-260908.567541997,-229524.562212817,-196331.398064459,-220233.788251478,-203144.757490819,-290740.359194226,-178007.602890666,-250599.195470541,-224732.190797136,-240979.316622285,-308869.526627915,-219314.155316074,-265792.950482438,-211316.067826656,-160974.257583315,-306599.573846228,-288371.341943098,-310134.318280259,-212922.2090198,-205947.746605139,-258311.295162997,-269969.414781948,-232526.54368194,-256806.628560453,-175798.796258517,-225914.206891155,-272029.594477159,-287824.438751831,-172808.442929674,-232923.677942218,-176154.246117933,-297839.565688457,-286975.03813412,-296373.391080385,-246930.384594358,-274252.949705144,-301834.68479948,-195079.601206059,-246587.624036999,-303200.016486611,-228034.161065351,-278444.940055887,-316350.208121543,-159845.181994083,-160221.120096131,-212741.972623595,-279592.985626913,-256223.647094382,-194180.680737024,-194338.574898865,-193553.123633116,-252549.278835877,-232566.878521474,-251632.459778256,-257396.337505423,-211153.954259432,-244431.299651594,-246828.553093877,-181133.83111498,-221457.594283766,-246858.209674399,-260772.154915849,-289649.133574331,-238335.279652961,-271797.473875507,-292829.914426322,-220553.043640141,-264229.617825543,-215853.939200833,-222283.12802781,-251921.893378497,-243637.706123197,-240245.887795317,-269449.617464548,-230563.103768658,-270323.853747922,-296918.008511754,-230745.812077855,-238497.80915394,-280879.059831527,-242975.944386869,-270817.170160191,-168572.76834548,-257705.544828389,-183626.011036257,-219614.372852281,-169215.125517988,-181025.025733198,-310230.049933853,-163009.773357832,-280830.618458792,-272437.919700767,-160000.29183361,-260617.810977714,-210830.437249918,-208776.827188907,-202134.055284898,-305736.806852159,-267780.3248009,-170985.21276893,-285626.733400884,-268403.615122362,-155313.344850702,-154065.708937594,-251623.908796276,-233618.649773516,-305051.440616502,-150790.001124434,-162863.543281499,-200472.471661188,-303400.265468726,-236930.147364809,-284319.689444542,-278963.743808342,-249587.924305898,-203610.009409681,-244656.803547594,-218215.50289043,-214922.771113725,-185637.052699743,-292344.11267355,-275503.953485857,-247088.455951295,-166889.987357936,-271610.135603197,-151161.792723003,-152603.161567787,-159210.218168866,-172624.745668785,-218446.314285539,-216610.715997796,-221038.567426829,-176263.926960802,-157564.372057518,-179244.877149479,-286245.632232127,-281411.472616033,-209066.462862607,-300603.288029488,-151207.926218616,-219286.146743739,-156933.118022527,-299885.998595776,-313479.229965128,-207685.237984419,-194749.505573414,-309281.903386652,-173691.101629483,-163906.977868221,-165391.188286486,-150790.879649883,-251709.88268876,-230773.72819286,-184843.585523783,-267947.502189635,-262623.12947312,-154714.808856894,-296312.695670993,-153891.971512701,-230444.535199778,-244025.710774652,-157194.697428515,-153699.787945066,-315099.524089973,-306805.143950007,-165085.839574459,-182815.117912651,-187578.838444125,-251827.75869238,-153232.922026505,-294879.016050421,-264490.427020897,-237779.403959596,-213057.194451899,-298064.247346435,-224067.965733709,-215143.075946222,-273748.808731946,-190582.665067395,-301346.880991247,-254167.759002961,-215579.565992119,-172364.439360381,-277812.337994819,-198422.65487059,-280603.59855287,-309023.546343293,-183208.491910882,-226666.89395031,-279837.912546033,-292755.746811447,-153894.718231469,-287887.439868861,-316745.621480037,-247986.032031879,-177861.229380487,-199448.97475689,-270731.075362545,-276267.316709048,-151893.626977491,-301782.230532229,-241123.74228704,-316049.199248915,-221197.198946151,-215436.3751659,-297338.210980329,-193697.860369731,-258639.477124016,-256594.46262595,-223210.882706645,-149928.21237411,-206198.192161099,-195803.147008683,-230040.222038244,-152322.119812249,-258689.230382497,-291449.2762873,-160926.600481816,-275120.64673792,-155902.892312533,-211372.17308958,-262784.527799102,-308266.844080476,-311147.371481207,-316193.889547103,-239000.833054226,-151180.798146887,-187387.005224651,-298031.656521317,-242003.99583337,-294523.801460136,-266354.250175712,-320008.391091604,-225172.256819614,-150786.501747103,-259982.051879903,-291105.85927017,-300147.506317965,-176465.526620973,-204947.098541783,-312833.407123736,-233003.994966224,-174692.574815255,-242947.216084319,-219997.98359583,-151393.917264295,-191870.055432676,-245048.319288152,-154473.371739494,-157615.120099345,-263348.708452365,-305811.334280524,-153590.838451581,-322330.066083578,-240620.84812757,-213724.663406178,-192182.122030351,-227542.00619962,-259685.731347131,-316690.448521641,-304704.702401774,-291682.225157187,-284275.993702608,-151408.566379411,-200219.793270695,-252475.659716538,-204361.747358408,-151532.996005158,-206297.963213236,-247198.027040043,-308413.415017862,-311513.83414651,-296469.760465544,-150211.600446457,-287539.220692286,-151293.057507675,-189740.644094951,-213744.942141716,-247598.434897121,-260629.19017453,-202587.040590171,-225269.2497798,-151928.505395455,-177407.836174014,-152078.486382971,-170940.661229943,-210530.2138174,-228076.881039186,-154759.172020711,-293241.533008433,-317482.775139183,-149947.922582661,-181026.15018772,-220784.975146651,-273447.911431092,-195553.817919613,-151499.478903167,-168653.526195155,-202696.833141667,-150587.844941358,-150291.789577132,-206838.556506283,-151657.229262252,-167964.27803161,-159151.316417938,-296024.787772638,-169121.315486384,-277930.012058608,-151500.141157831,-246849.257988605,-285177.719878455,-150947.466318736,-151710.931405484,-197625.541519087,-289712.252081399,-277335.920185088,-245171.045649664,-160931.073511871,-256442.236478899,-162736.061833845,-154810.46574458,-265071.804196546,-248795.858916726,-308398.068979085,-282702.892329615,-284291.742031048,-258133.083192605,-234473.486232408,-150157.331221842,-301697.36640489,-212394.177691397,-314591.088725237,-219576.097880344,-269858.022769713,-264762.60651913,-166982.419809406,-235770.675694981,-216845.87247572,-275910.416752978,-286636.970320515,-310114.397229303,-286278.199545881,-293068.015738458,-150510.150499213,-295008.253136573,-156044.515513374,-226901.668078161,-264720.708735901,-237905.043472503,-151971.571024856,-178948.899242452,-250475.885433203,-254498.311629636,-216740.384260552,-283716.052357853,-266238.404154622,-150548.583113948,-237884.345125507,-261539.482945888,-312711.005304221,-298683.860066701,-185046.790022791,-224012.040899669,-288482.288270385,-228751.809300081,-153219.221075685,-243059.130670536,-169649.222718838,-238871.283257587,-187115.397959108,-240059.880314666,-153942.121993274,-149910.787739806,-222382.496247634,-196494.001765211,-234914.53598644,-224254.850713788,-322685.644291816,-248473.774339287,-150434.978618391,-178424.687931415,-155033.854868186,-256382.884653977,-237276.019120432,-302263.868213676,-303169.183599541,-169560.695899687,-189615.116868006,-202732.546203734,-320175.153851321,-152630.34800839,-265735.252969693,-288640.328308722,-152344.856924579,-311874.771931765,-303216.443327188,-289949.505269681,-256301.88864717,-153013.422305998,-158671.238166041,-151672.589763791,-237261.079803626,-236025.340218754,-149349.028038367,-313520.420571661],"Archive514_field9":[-324668.772108201,-314529.362758491,-243553.497310526,-148496.534657002,-151031.38699443,-235948.940298245,-324788.985496402,-324898.853468004,-324998.91133022,-325089.669073205,-325171.61139078,-325245.197655987,-325310.541959189,-325368.286688207,-325418.953694442,-325463.082791154,-325501.431234478,-325533.94258169,-325560.616832789,-325581.453987776,-325596.45404665,-325605.617009411,-325608.94287606,-325606.431646595,-325598.083321019,-325583.89789933,-325563.680096351,-325537.047284017,-325503.352472386,-325462.358193858,-325413.679810896,-325356.879633369,-325291.492621304,-325216.869968242,-325132.508764956,-325038.006276284,-324935.128414995,-324824.115512943,-324704.641643488,-324578.153809368,-324448.568362668,-324316.103843194,-324180.760250945,-324042.537585921,-323901.435848122,-323758.264752759,-323612.624197082,-323464.151109116,-323312.845488863,-323158.707336322,-323001.736651493,-322841.933434377,-322679.297684973,-322513.829403282,-322346.351844814,-322176.554420191,-322003.967712314,-321828.591721182,-321650.426446795,-321469.471889154,-321285.728048258,-321099.194924108,-320909.872516704,-320718.287881889,-320524.440833544,-320327.83416078,-320128.467863597,-319926.341941995,-319721.456395975,-319513.811225536,-319303.406430678,-319090.242011402,-318874.968247789,-318658.19737932,-318438.977215452,-318223.964384637,-318010.543051135,-317798.536165961,-317587.929028093,-317378.691655112,-317171.862580064,-316966.989567334,-316760.609632432,-316551.474147138,-316340.308829331,-316127.113679014,-315911.888696184,-315693.58086511,-315465.140889191,-315234.49909057,-315001.655469246,-314766.61002522,-313568.345470374,-312625.13386083,-311699.184202092,-310789.927847483,-309896.769477241,-309019.938874944,-308163.301584593,-307321.48389525,-306493.798160716,-305680.109073755,-304887.230950175,-304094.950863107,-303302.670776038,-302510.39068897,-301718.110601901,-300933.945009187,-300163.41687529,-299392.888741392,-298622.360607494,-297851.832473597,-297081.304339699,-296307.732881279,-295526.317267629,-294718.853814722,-293885.397692937,-293030.221213706,-292151.773071763,-291248.331374225,-290313.179068393,-289351.971874056,-288363.456039039,-287364.710503795,-286366.512156094,-285379.568016448,-284415.713318521,-283452.769490989,-282523.259218953,-281593.748946917,-280686.230767722,-279791.065786963,-278896.57175157,-278005.533823513,-277090.813112787,-276155.700526348,-275199.342138631,-274220.929553483,-273219.696355074,-272194.91491859,-271145.893536224,-270074.999456095,-269011.638228999,-267948.4018725,-266926.874355064,-265905.346837627,-264918.614900192,-263938.922527275,-262976.848765598,-262036.52639963,-261114.343274213,-260213.962911708,-259313.582549202,-258413.202186697,-257512.821824191,-256612.441461686,-255712.06109918,-254811.680736675,-253911.300374169,-253010.920011664,-252120.958331881,-251250.3638087,-250379.769285519,-249509.174762337,-248638.580239156,-247774.691335379,-246930.452530408,-246086.213725438,-245241.974920467,-244397.736115497,-242763.19902053,-241972.900730533,-241182.602440536,-240418.520818327,-239654.623909182,-238890.727000037,-238150.118732363,-237412.623748574,-236675.128764785,-235955.053889218,-235243.9614359,-234532.868982582,-233820.965172566,-233091.92032607,-232324.708664892,-231512.295039213,-230656.436774747,-229754.16441815,-228802.286067179,-227796.910272984,-226737.808757138,-225620.737976608,-224444.297545396,-223269.410248112,-222144.984215963,-221070.667180264,-220043.209906346,-219059.015853567,-218117.796029315,-217218.296904615,-216356.794806656,-215532.820602502,-214734.538849399,-213933.702347204,-213132.865845009,-212317.736600131,-211481.998521862,-210646.260443593,-209790.76836302,-208920.129977908,-208049.491592795,-207149.660276611,-206244.122707247,-205331.82519153,-204394.426499853,-203457.027808177,-202519.6291165,-201582.230424824,-200644.831733147,-199707.433041471,-198770.034349795,-197832.635658118,-196895.236966442,-195957.013662673,-195008.108322317,-194059.202981961,-193110.297641605,-192161.392301249,-191212.486960893,-190263.581620538,-189314.676280182,-188365.770939826,-187416.86559947,-186468.628620554,-185532.071769612,-184595.514918669,-183658.958067727,-182722.401216785,-181785.844365843,-180849.287514901,-179912.730663959,-178976.173813016,-178039.616962074,-177103.060111132,-176165.09372524,-175226.978524461,-174288.863323682,-173350.748122904,-172412.632922125,-171474.517721346,-170536.402520568,-169598.287319789,-168660.17211901,-167722.056918232,-166785.702100175,-165849.867942123,-164914.033784071,-163978.199626019,-163042.365467967,-162124.66440712,-161214.995742485,-160305.327077851,-159395.658413216,-158485.989748581,-157577.076967043,-156669.022736039,-155760.968505035,-154852.914274031,-153944.860043027,-153036.805812022,-152128.751581018,-151220.697350014,-150312.64311901,-149404.588888006,-148542.602932999,-148588.671208995,-148633.585250694,-148678.02173341,-148721.918909545,-148764.723558617,-148807.528207688,-148848.924497871,-148890.097268137,-148931.241024693,-148972.333648977,-149014.83833463,-149058.443113608,-149103.188455871,-149149.128478598,-149196.313989865,-149244.792783409,-149294.609899358,-149345.694809101,-149396.765531645,-149446.581422479,-149495.090844917,-149542.397376893,-149588.541247784,-149633.565005379,-149677.513722409,-149720.435228399,-149762.328936122,-149804.13023326,-149845.927784818,-149887.725336376,-149929.522887934,-149971.320439491,-150014.136104492,-150057.055893478,-150099.975682465,-150142.895471451,-150185.815260438,-150228.825968202,-150271.83801067,-150314.350822768,-150356.420863616,-150398.472610821,-150439.600644764,-150480.728678707,-150521.431516566,-150561.617537946,-150601.803559326,-150642.289054808,-150682.83890355,-150723.758940216,-150766.003365149,-150808.247790083,-150851.709339517,-150895.648286022,-150940.120155357,-150985.753574893,-151866.867608082,-152702.348221734,-153537.828835386,-154373.309449039,-155208.790062691,-156044.270676343,-156879.751289996,-157715.231903648,-158550.7125173,-159386.193130952,-160220.800501537,-161055.236670182,-161883.833840456,-162698.268211825,-163512.702583195,-164313.429987598,-165107.862413615,-165902.034600889,-166676.464922007,-167450.895243126,-168223.032895404,-168989.025589241,-169755.018283078,-170521.010976915,-171287.003670751,-172052.996364588,-172818.989058425,-173584.981752262,-174350.974446099,-175116.967139936,-175882.959833773,-176650.67524698,-177425.941269684,-178201.207292389,-178976.473315093,-179751.739337798,-180527.005360503,-181302.271383207,-182077.537405912,-182852.803428617,-183628.069451321,-184403.335474026,-185184.479342369,-185985.03430215,-186785.589261931,-187586.144221712,-188386.699181493,-189187.254141274,-190020.669887371,-190856.606215618,-191692.542543864,-192528.47887211,-193364.415200357,-194208.834098133,-195054.754950481,-195900.675802829,-196746.596655178,-197592.517507526,-198438.438359874,-199284.359212222,-200130.28006457,-200976.200916918,-201822.121769266,-202673.898999784,-203527.040172331,-204390.136786382,-205274.126745684,-206158.116704986,-207070.523212109,-207985.36130328,-208918.726837701,-209864.412469905,-210811.572214586,-211755.974092325,-212680.895262048,-213585.155399985,-214468.468226945,-215333.648629508,-216181.42454068,-217012.56360729,-217825.682998018,-218618.210158681,-219407.540094786,-220200.182951072,-221007.833092901,-221832.684570367,-222671.218263261,-223527.328483488,-224401.538126081,-225275.747768675,-226185.624897834,-227098.05990472,-228015.100792958,-228935.131122195,-229848.130190267,-230744.640199639,-231641.150209012,-232515.763999593,-233388.753476845,-234250.002867747,-235099.471582996,-236870.309131365,-237791.677964485,-238700.726237643,-239601.308479564,-240499.191145286,-241378.986668256,-242258.782191227,-243125.921955286,-243984.930622282,-244844.148347046,-245710.95958251,-246605.379356449,-247528.348994447,-248481.647689526,-249466.919992643,-250485.690558313,-251539.376810078,-252629.299880617,-253754.908960227,-254866.960348039,-255924.198300418,-256927.238171926,-257880.148454977,-258787.185065079,-259647.892692064,-260466.16504932,-261242.778941756,-261983.32187299,-262687.936813789,-263388.422285295,-264088.907756801,-264789.584831334,-265510.694696583,-266231.804561833,-266952.914427082,-267693.276561328,-268435.010579211,-269176.744597094,-269937.931047339,-270700.288996308,-271463.323680172,-272245.698536384,-273028.073392595,-273810.448248807,-274592.823105019,-275375.197961231,-276164.624414441,-276966.376977709,-277768.129540977,-278569.882104245,-279371.634667514,-280173.387230782,-280997.470618686,-281826.094316316,-282654.718013946,-283483.341711576,-284311.965409205,-285157.24807844,-286020.753195302,-286884.258312163,-287747.763429025,-288611.268545887,-289484.860354714,-290377.997640262,-291271.134925811,-292164.27221136,-293057.409496909,-293950.546782458,-294843.684068007,-295736.821353555,-296629.958639104,-297523.095924653,-298418.299422817,-299316.514742133,-300214.730061449,-301112.945380765,-302011.160700082,-302909.376019398,-303807.591338714,-304705.80665803,-305604.021977346,-306502.237296662,-307387.895836036,-308253.810045037,-309095.456180161,-309906.09283887,-310696.067346663,-311467.287473414,-312210.35664844,-312937.567955456,-313640.35554148,-314321.590727089,-314983.581126148,-315626.668777863,-316267.049069276,-316933.498861728,-317636.208343848,-318372.42309639,-319143.563740894,-319957.442599564,-320808.184501378,-321705.247650731,-322645.615246753,-323632.352867588,-204125.090241426,-264204.031996703,-280013.809473212,-183279.952792786,-261307.348203557,-235411.792461285,-307539.314412849,-229779.41667443,-289439.222233096,-161265.701079057,-194157.37676009,-214737.753384951,-297814.411700271,-305077.373007975,-257772.74934865,-185909.829380233,-252112.127316455,-159835.687281748,-280597.835400612,-299106.350398452,-285064.951285549,-194299.776471481,-184355.23099248,-293339.108533669,-193523.856843729,-169775.825522234,-287724.852189948,-204156.152472738,-211124.6140152,-312440.700481825,-175958.901368565,-189360.524480289,-256019.882368388,-271011.01933841,-271831.074907821,-233039.421130521,-270633.062956413,-267075.195335935,-267167.913614907,-265672.3972871,-202708.261431428,-232970.088730293,-178042.352183128,-280231.119399622,-300009.464744896,-238335.999502568,-308689.956230526,-242909.040203119,-290246.946101491,-294634.068990002,-219440.747312504,-166081.759093895,-173764.146698222,-204221.176568353,-213292.8872204,-192833.290824401,-290272.567201264,-237072.459347214,-280543.793161528,-277598.716267944,-287247.01678963,-308299.693857182,-165913.042546405,-288153.855742342,-205656.295167891,-159167.788554887,-233991.053468531,-260956.67239911,-176320.567130225,-238475.88896931,-227157.977149307,-279999.119819587,-240969.634648788,-224229.997873282,-271886.64951006,-294358.140533846,-160115.605117223,-211138.916382037,-246869.526742005,-239884.445762165,-231018.787026868,-211905.801295576,-229750.587174273,-224592.373775858,-276910.145670271,-225802.248681417,-306074.924492844,-315207.74407409,-299575.342805906,-222206.865447935,-241719.808692446,-296814.323667378,-316851.764129066,-203485.785160923,-250601.369101818,-256075.663016879,-176048.587236686,-253185.724041328,-278317.639539909,-169484.182110409,-180911.236771992,-249995.749208122,-270320.331779416,-262416.383792307,-247271.308251658,-177362.333022663,-305032.212195893,-256806.380189477,-177132.915588453,-228081.529069244,-222751.701181,-246866.340857039,-243560.376915608,-230714.290442125,-202662.967747343,-271514.918025861,-291053.99244463,-278655.388460641,-231555.715909248,-212114.153721193,-303753.399684238,-261864.986540719,-244390.532561404,-226455.255141956,-269294.870668565,-309533.66295994,-278184.360942373,-203373.144861504,-169526.177903302,-270155.435327854,-196927.750070099,-246372.494148528,-220792.284604058,-211078.636639394,-211377.158099263,-240384.139150126,-271088.414977015,-299238.085197134,-220111.212192767,-169214.318811409,-258234.003468631,-214872.314860115,-194571.220555185,-160914.555210478,-256719.48302775,-185991.299790106,-242714.949106762,-236576.707635903,-185289.187440028,-196285.516560145,-253871.437955076,-205803.854390699,-195879.610865767,-303037.791800485,-202089.54007475,-251568.773919679,-219772.34048604,-251132.691180793,-238929.102464102,-259985.771084655,-229484.536835826,-186658.573424449,-211495.732354867,-252142.613942195,-274250.31031924,-233840.270048959,-232636.895317347,-243119.483657718,-222440.018226297,-230045.753259456,-219879.761763448,-260154.140303829,-262645.193446294,-312010.154486186,-212465.06143547,-246805.393895882,-298586.721867408,-252426.416570507,-263758.589460047,-215387.715300877,-187133.60982954,-219484.134200817,-250986.43119537,-194892.07320213,-289009.913269581,-184936.526910952,-297105.607733245,-295336.104966735,-193549.177872075,-244517.237499164,-317234.455406179,-324508.619281368,-281266.821681977,-245365.965211591,-322052.870841427,-322176.405590201,-320943.888885618,-281439.902571348,-324558.940234127,-323094.936119702,-205118.354277126,-181871.386358951,-284504.932127689,-320754.979549047,-208267.327247569,-268595.745761775,-289369.944012353,-319679.390132272,-268821.025629441,-249844.26827984,-250443.537080729,-282988.531744958,-279992.075026289,-319096.401667184,-317459.519167687,-314579.096356425,-314097.550444819,-150471.62347276,-158238.998289518,-240123.985312884,-260731.067643814,-278742.875048015,-159713.295294504,-300437.194535014,-151365.931638236,-161841.574651031,-302473.775563249,-153716.307501469,-278008.032681742,-313249.202962686,-315746.711897222,-188532.051531919,-305896.6840758,-306767.755990892,-218596.735712881,-310813.778708908,-212934.026050946,-219896.038020255,-154343.239013832,-313425.780385669,-211162.109837138,-151039.547755912,-216882.236887429,-310240.968716004,-323111.120449943,-313448.409244373,-202450.706827992,-320703.712028902,-315232.340200865,-201716.407248737,-198871.529586103,-247087.845680236,-293264.949845218,-222451.362752836,-151966.263995325,-291875.343200814,-224049.042633819,-153939.79862069,-270597.562851627,-154789.648415172,-187756.738801843,-187037.034789338,-324125.825485553,-158365.935652187,-191292.541903089,-157815.342494838,-220592.256625908,-320459.78545851,-246847.502740301,-324325.035138007,-248275.075297505,-273715.442559094,-321605.226427229,-155625.309380052,-275645.868020593,-200972.991433494,-152616.189740346,-277023.506364648,-150533.899378039,-317652.255780698,-284401.569007859,-151207.091064623,-315955.932323168,-315061.076429215,-208225.911513569,-315465.897510324,-150751.635899441,-322243.798364226,-256219.038409022,-152908.317794057,-252024.002493406,-319231.066031121,-250919.855275069,-165334.720323083,-230900.248676047,-165203.282625286,-184513.508874786,-163117.728037735,-190482.578371288,-186441.742474298,-165157.58245495,-196806.858788822,-194419.843556847,-304171.232086168,-227778.777462051,-319277.872490127,-226290.914571511,-253183.937338048,-323289.21459531,-228753.756605587,-215921.308007091,-151848.352216051,-292364.400335882,-216470.289660082,-323038.298877835,-291939.362111318,-256606.601575384,-152171.603564827,-257282.860864255,-293638.396805776,-233254.55003799,-303605.681157825,-274720.669873096,-324037.428780347,-302411.356275088,-192822.226433673,-170964.812264065,-186319.186665533,-321613.283047029,-320302.004556948,-155817.629505414,-153937.26490899,-316540.029606829,-263171.807889911,-276894.826691076,-225523.623466913,-223259.408010329,-173473.686560791,-271186.767254576,-220605.308841254,-269710.216763641,-156382.109993564,-197344.003356676,-163530.754762484,-200084.398276024,-155879.550528597,-314638.389977645,-158528.667133398,-295101.493571561,-318807.307224951,-315493.951396517,-238296.435716022,-298144.025969493,-308835.628354412,-296579.335145782,-262672.534140035,-213091.761200708,-261125.174870846,-272590.381795984,-290634.834952844,-253796.634536373,-150947.774312645,-151735.810713164,-154126.600138441,-316607.011937226,-151527.123697273,-224448.532686626,-237970.307393282,-192536.419561744,-237439.596963191,-239779.247338205,-284190.137961774,-259080.422697221,-287047.791970322,-161855.038926767,-264342.565846828,-259014.857218826,-205473.336879314,-323134.935243387,-281321.946985234,-206618.132914237,-151170.573107527,-169285.532666027,-171993.811970676,-149745.097620429,-151589.532896114,-154178.948456983,-154994.425762588,-151410.612223913,-179599.230815394,-241278.542582344,-182463.60867555,-153466.365694254,-321617.800802566,-295138.851770595,-318540.871245209,-196409.164180784,-237901.079000098,-323875.049585735,-230832.230779448,-323051.680665445,-287592.965671805,-313324.942188263,-323941.487138709,-228313.292387564,-316792.124438036,-168418.791349496,-313762.052742639,-310535.092490659,-304037.0871611,-151521.822495865,-220797.311975016,-323971.052247961,-318640.656431855,-166652.499776094,-169109.251996854,-316068.86175022,-151612.21980799,-324280.475225191,-179480.403421184,-211945.60253959,-233163.294875839,-211891.503461979,-209660.984042031,-215904.275469497,-300825.074886826,-322987.749937973,-219109.622704084,-319415.477592877,-167249.018615414,-247093.946312799,-268168.05596745,-149868.985893932,-318465.751793502,-149966.288077628,-204547.722886171,-209415.628340384,-315052.93252057,-177372.746984087,-298976.235288304,-178488.486924992,-214493.36159368,-308197.61540792,-306907.015120331,-272360.683364048,-269724.346089418,-321086.097309867,-174685.674367335,-321193.398090396,-266522.394883599,-278608.308701324,-277275.459653198,-175100.371064516,-245030.718742735,-161913.270014152,-285002.489015196,-235341.490203707,-149749.073604225,-305660.490008597,-317706.600235378,-176905.479704458,-299482.535146035,-150105.369102871,-151715.569183905,-265620.882995342,-154769.910549195,-309921.690208447,-243382.164986367,-260966.469127309,-303185.689713605,-150272.771590248,-200059.115579707,-246659.735264338,-283622.448275011,-215121.881990006,-324288.960928385,-285297.601160142,-286145.709174666,-274209.992925811,-296735.2053659,-184139.84372005,-306267.303689298,-311788.564296449,-280124.171818507,-291223.491562517,-291440.661988123,-266634.771079433,-319358.28603853,-313822.091764777,-207104.417305661,-194920.550250879,-251525.639909585,-196493.120449724,-276432.750213182,-215404.517028174,-324511.083728587,-297355.817724525,-296103.914694847,-217601.068542164,-237834.501406726,-286032.394673354,-321008.20615132,-167659.261201595,-202494.262927217,-301107.78538091,-281463.596925856,-285678.760542142,-221118.04533147,-225463.433715074,-242027.268354118,-177021.907338409,-259749.108243575,-265085.363936222,-265055.046186695,-247956.971355102,-203602.537801812,-202976.797012649,-242762.209245686,-165276.519114016,-316540.058108897,-152716.576235133,-288714.898495953,-153965.915526563,-309622.158853535,-181741.592860813,-235256.631689447,-299970.22734303,-213466.519241225,-183158.969781407,-318513.240207096,-154921.264218661,-177970.639581106,-170600.421352135,-236475.909453624,-322435.063348425,-151710.727136557,-151635.128512447,-252125.575950787,-157485.842250283,-312312.622003316,-150595.747357775,-152224.689578766,-324153.494221663,-226616.850013337,-159865.016445064,-150588.152650557,-264365.954100665,-288955.301010638,-243436.54088247,-154502.322980252,-323395.169215314,-255147.463841734,-152418.445890981,-150421.537245789,-189917.747123081,-288587.405477409,-320831.345089166,-313896.141528129,-313872.377677799,-256982.876139888,-247895.572286456,-248996.048705239,-159637.369333143,-236430.374116864,-150363.919959691,-240466.779879122,-163296.217884269,-318763.268468353,-151754.959959507,-151915.11362091,-149237.233535106],"Archive514_field10":[-324668.772108201,-314529.362758491,-243553.497310526,-148496.534657002,-151031.38699443,-235948.940298245,-324788.985496402,-324898.853468004,-324998.91133022,-325089.669073205,-325171.61139078,-325245.197655987,-325310.541959189,-325368.286688207,-325418.953694442,-325463.082791154,-325501.431234478,-325533.94258169,-325560.616832789,-325581.453987776,-325596.45404665,-325605.617009411,-325608.94287606,-325606.431646595,-325598.083321019,-325583.89789933,-325563.680096351,-325537.047284017,-325503.352472386,-325462.358193858,-325413.679810896,-325356.879633369,-325291.492621304,-325216.869968242,-325132.508764956,-325038.006276284,-324935.128414995,-324824.115512943,-324704.641643488,-324578.153809368,-324448.568362668,-324316.103843194,-324180.760250945,-324042.537585921,-323901.435848122,-323758.264752759,-323612.624197082,-323464.151109116,-323312.845488863,-323158.707336322,-323001.736651493,-322841.933434377,-322679.297684973,-322513.829403282,-322346.351844814,-322176.554420191,-322003.967712314,-321828.591721182,-321650.426446795,-321469.471889154,-321285.728048258,-321099.194924108,-320909.872516704,-320718.287881889,-320524.440833544,-320327.83416078,-320128.467863597,-319926.341941995,-319721.456395975,-319513.811225536,-319303.406430678,-319090.242011402,-318874.968247789,-318658.19737932,-318438.977215452,-318223.964384637,-318010.543051135,-317798.536165961,-317587.929028093,-317378.691655112,-317171.862580064,-316966.989567334,-316760.609632432,-316551.474147138,-316340.308829331,-316127.113679014,-315911.888696184,-315693.58086511,-315465.140889191,-315234.49909057,-315001.655469246,-314766.61002522,-313568.345470374,-312625.13386083,-311699.184202092,-310789.927847483,-309896.769477241,-309019.938874944,-308163.301584593,-307321.48389525,-306493.798160716,-305680.109073755,-304887.230950175,-304094.950863107,-303302.670776038,-302510.39068897,-301718.110601901,-300933.945009187,-300163.41687529,-299392.888741392,-298622.360607494,-297851.832473597,-297081.304339699,-296307.732881279,-295526.317267629,-294718.853814722,-293885.397692937,-293030.221213706,-292151.773071763,-291248.331374225,-290313.179068393,-289351.971874056,-288363.456039039,-287364.710503795,-286366.512156094,-285379.568016448,-284415.713318521,-283452.769490989,-282523.259218953,-281593.748946917,-280686.230767722,-279791.065786963,-278896.57175157,-278005.533823513,-277090.813112787,-276155.700526348,-275199.342138631,-274220.929553483,-273219.696355074,-272194.91491859,-271145.893536224,-270074.999456095,-269011.638228999,-267948.4018725,-266926.874355064,-265905.346837627,-264918.614900192,-263938.922527275,-262976.848765598,-262036.52639963,-261114.343274213,-260213.962911708,-259313.582549202,-258413.202186697,-257512.821824191,-256612.441461686,-255712.06109918,-254811.680736675,-253911.300374169,-253010.920011664,-252120.958331881,-251250.3638087,-250379.769285519,-249509.174762337,-248638.580239156,-247774.691335379,-246930.452530408,-246086.213725438,-245241.974920467,-244397.736115497,-242763.19902053,-241972.900730533,-241182.602440536,-240418.520818327,-239654.623909182,-238890.727000037,-238150.118732363,-237412.623748574,-236675.128764785,-235955.053889218,-235243.9614359,-234532.868982582,-233820.965172566,-233091.92032607,-232324.708664892,-231512.295039213,-230656.436774747,-229754.16441815,-228802.286067179,-227796.910272984,-226737.808757138,-225620.737976608,-224444.297545396,-223269.410248112,-222144.984215963,-221070.667180264,-220043.209906346,-219059.015853567,-218117.796029315,-217218.296904615,-216356.794806656,-215532.820602502,-214734.538849399,-213933.702347204,-213132.865845009,-212317.736600131,-211481.998521862,-210646.260443593,-209790.76836302,-208920.129977908,-208049.491592795,-207149.660276611,-206244.122707247,-205331.82519153,-204394.426499853,-203457.027808177,-202519.6291165,-201582.230424824,-200644.831733147,-199707.433041471,-198770.034349795,-197832.635658118,-196895.236966442,-195957.013662673,-195008.108322317,-194059.202981961,-193110.297641605,-192161.392301249,-191212.486960893,-190263.581620538,-189314.676280182,-188365.770939826,-187416.86559947,-186468.628620554,-185532.071769612,-184595.514918669,-183658.958067727,-182722.401216785,-181785.844365843,-180849.287514901,-179912.730663959,-178976.173813016,-178039.616962074,-177103.060111132,-176165.09372524,-175226.978524461,-174288.863323682,-173350.748122904,-172412.632922125,-171474.517721346,-170536.402520568,-169598.287319789,-168660.17211901,-167722.056918232,-166785.702100175,-165849.867942123,-164914.033784071,-163978.199626019,-163042.365467967,-162124.66440712,-161214.995742485,-160305.327077851,-159395.658413216,-158485.989748581,-157577.076967043,-156669.022736039,-155760.968505035,-154852.914274031,-153944.860043027,-153036.805812022,-152128.751581018,-151220.697350014,-150312.64311901,-149404.588888006,-148542.602932999,-148588.671208995,-148633.585250694,-148678.02173341,-148721.918909545,-148764.723558617,-148807.528207688,-148848.924497871,-148890.097268137,-148931.241024693,-148972.333648977,-149014.83833463,-149058.443113608,-149103.188455871,-149149.128478598,-149196.313989865,-149244.792783409,-149294.609899358,-149345.694809101,-149396.765531645,-149446.581422479,-149495.090844917,-149542.397376893,-149588.541247784,-149633.565005379,-149677.513722409,-149720.435228399,-149762.328936122,-149804.13023326,-149845.927784818,-149887.725336376,-149929.522887934,-149971.320439491,-150014.136104492,-150057.055893478,-150099.975682465,-150142.895471451,-150185.815260438,-150228.825968202,-150271.83801067,-150314.350822768,-150356.420863616,-150398.472610821,-150439.600644764,-150480.728678707,-150521.431516566,-150561.617537946,-150601.803559326,-150642.289054808,-150682.83890355,-150723.758940216,-150766.003365149,-150808.247790083,-150851.709339517,-150895.648286022,-150940.120155357,-150985.753574893,-151866.867608082,-152702.348221734,-153537.828835386,-154373.309449039,-155208.790062691,-156044.270676343,-156879.751289996,-157715.231903648,-158550.7125173,-159386.193130952,-160220.800501537,-161055.236670182,-161883.833840456,-162698.268211825,-163512.702583195,-164313.429987598,-165107.862413615,-165902.034600889,-166676.464922007,-167450.895243126,-168223.032895404,-168989.025589241,-169755.018283078,-170521.010976915,-171287.003670751,-172052.996364588,-172818.989058425,-173584.981752262,-174350.974446099,-175116.967139936,-175882.959833773,-176650.67524698,-177425.941269684,-178201.207292389,-178976.473315093,-179751.739337798,-180527.005360503,-181302.271383207,-182077.537405912,-182852.803428617,-183628.069451321,-184403.335474026,-185184.479342369,-185985.03430215,-186785.589261931,-187586.144221712,-188386.699181493,-189187.254141274,-190020.669887371,-190856.606215618,-191692.542543864,-192528.47887211,-193364.415200357,-194208.834098133,-195054.754950481,-195900.675802829,-196746.596655178,-197592.517507526,-198438.438359874,-199284.359212222,-200130.28006457,-200976.200916918,-201822.121769266,-202673.898999784,-203527.040172331,-204390.136786382,-205274.126745684,-206158.116704986,-207070.523212109,-207985.36130328,-208918.726837701,-209864.412469905,-210811.572214586,-211755.974092325,-212680.895262048,-213585.155399985,-214468.468226945,-215333.648629508,-216181.42454068,-217012.56360729,-217825.682998018,-218618.210158681,-219407.540094786,-220200.182951072,-221007.833092901,-221832.684570367,-222671.218263261,-223527.328483488,-224401.538126081,-225275.747768675,-226185.624897834,-227098.05990472,-228015.100792958,-228935.131122195,-229848.130190267,-230744.640199639,-231641.150209012,-232515.763999593,-233388.753476845,-234250.002867747,-235099.471582996,-236870.309131365,-237791.677964485,-238700.726237643,-239601.308479564,-240499.191145286,-241378.986668256,-242258.782191227,-243125.921955286,-243984.930622282,-244844.148347046,-245710.95958251,-246605.379356449,-247528.348994447,-248481.647689526,-249466.919992643,-250485.690558313,-251539.376810078,-252629.299880617,-253754.908960227,-254866.960348039,-255924.198300418,-256927.238171926,-257880.148454977,-258787.185065079,-259647.892692064,-260466.16504932,-261242.778941756,-261983.32187299,-262687.936813789,-263388.422285295,-264088.907756801,-264789.584831334,-265510.694696583,-266231.804561833,-266952.914427082,-267693.276561328,-268435.010579211,-269176.744597094,-269937.931047339,-270700.288996308,-271463.323680172,-272245.698536384,-273028.073392595,-273810.448248807,-274592.823105019,-275375.197961231,-276164.624414441,-276966.376977709,-277768.129540977,-278569.882104245,-279371.634667514,-280173.387230782,-280997.470618686,-281826.094316316,-282654.718013946,-283483.341711576,-284311.965409205,-285157.24807844,-286020.753195302,-286884.258312163,-287747.763429025,-288611.268545887,-289484.860354714,-290377.997640262,-291271.134925811,-292164.27221136,-293057.409496909,-293950.546782458,-294843.684068007,-295736.821353555,-296629.958639104,-297523.095924653,-298418.299422817,-299316.514742133,-300214.730061449,-301112.945380765,-302011.160700082,-302909.376019398,-303807.591338714,-304705.80665803,-305604.021977346,-306502.237296662,-307387.895836036,-308253.810045037,-309095.456180161,-309906.09283887,-310696.067346663,-311467.287473414,-312210.35664844,-312937.567955456,-313640.35554148,-314321.590727089,-314983.581126148,-315626.668777863,-316267.049069276,-316933.498861728,-317636.208343848,-318372.42309639,-319143.563740894,-319957.442599564,-320808.184501378,-321705.247650731,-322645.615246753,-323632.352867588,-204125.090241426,-264204.031996703,-280013.809473212,-183279.952792786,-261307.348203557,-235411.792461285,-307539.314412849,-229779.41667443,-289439.222233096,-161265.701079057,-194157.37676009,-214737.753384951,-297814.411700271,-305077.373007975,-257772.74934865,-185909.829380233,-252112.127316455,-159835.687281748,-280597.835400612,-299106.350398452,-285064.951285549,-194299.776471481,-184355.23099248,-293339.108533669,-193523.856843729,-169775.825522234,-287724.852189948,-204156.152472738,-211124.6140152,-312440.700481825,-175958.901368565,-189360.524480289,-256019.882368388,-271011.01933841,-271831.074907821,-233039.421130521,-270633.062956413,-267075.195335935,-267167.913614907,-265672.3972871,-202708.261431428,-232970.088730293,-178042.352183128,-280231.119399622,-300009.464744896,-238335.999502568,-308689.956230526,-242909.040203119,-290246.946101491,-294634.068990002,-219440.747312504,-166081.759093895,-173764.146698222,-204221.176568353,-213292.8872204,-192833.290824401,-290272.567201264,-237072.459347214,-280543.793161528,-277598.716267944,-287247.01678963,-308299.693857182,-165913.042546405,-288153.855742342,-205656.295167891,-159167.788554887,-233991.053468531,-260956.67239911,-176320.567130225,-238475.88896931,-227157.977149307,-279999.119819587,-240969.634648788,-224229.997873282,-271886.64951006,-294358.140533846,-160115.605117223,-211138.916382037,-246869.526742005,-239884.445762165,-231018.787026868,-211905.801295576,-229750.587174273,-224592.373775858,-276910.145670271,-225802.248681417,-306074.924492844,-315207.74407409,-299575.342805906,-222206.865447935,-241719.808692446,-296814.323667378,-316851.764129066,-203485.785160923,-250601.369101818,-256075.663016879,-176048.587236686,-253185.724041328,-278317.639539909,-169484.182110409,-180911.236771992,-249995.749208122,-270320.331779416,-262416.383792307,-247271.308251658,-177362.333022663,-305032.212195893,-256806.380189477,-177132.915588453,-228081.529069244,-222751.701181,-246866.340857039,-243560.376915608,-230714.290442125,-202662.967747343,-271514.918025861,-291053.99244463,-278655.388460641,-231555.715909248,-212114.153721193,-303753.399684238,-261864.986540719,-244390.532561404,-226455.255141956,-269294.870668565,-309533.66295994,-278184.360942373,-203373.144861504,-169526.177903302,-270155.435327854,-196927.750070099,-246372.494148528,-220792.284604058,-211078.636639394,-211377.158099263,-240384.139150126,-271088.414977015,-299238.085197134,-220111.212192767,-169214.318811409,-258234.003468631,-214872.314860115,-194571.220555185,-160914.555210478,-256719.48302775,-185991.299790106,-242714.949106762,-236576.707635903,-185289.187440028,-196285.516560145,-253871.437955076,-205803.854390699,-195879.610865767,-303037.791800485,-202089.54007475,-251568.773919679,-219772.34048604,-251132.691180793,-238929.102464102,-259985.771084655,-229484.536835826,-186658.573424449,-211495.732354867,-252142.613942195,-274250.31031924,-233840.270048959,-232636.895317347,-243119.483657718,-222440.018226297,-230045.753259456,-219879.761763448,-260154.140303829,-262645.193446294,-312010.154486186,-212465.06143547,-246805.393895882,-298586.721867408,-252426.416570507,-263758.589460047,-215387.715300877,-187133.60982954,-219484.134200817,-250986.43119537,-194892.07320213,-289009.913269581,-184936.526910952,-297105.607733245,-295336.104966735,-193549.177872075,-244517.237499164,-317234.455406179,-324508.619281368,-281266.821681977,-245365.965211591,-322052.870841427,-322176.405590201,-320943.888885618,-281439.902571348,-324558.940234127,-323094.936119702,-205118.354277126,-181871.386358951,-284504.932127689,-320754.979549047,-208267.327247569,-268595.745761775,-289369.944012353,-319679.390132272,-268821.025629441,-249844.26827984,-250443.537080729,-282988.531744958,-279992.075026289,-319096.401667184,-317459.519167687,-314579.096356425,-314097.550444819,-150471.62347276,-158238.998289518,-240123.985312884,-260731.067643814,-278742.875048015,-159713.295294504,-300437.194535014,-151365.931638236,-161841.574651031,-302473.775563249,-153716.307501469,-278008.032681742,-313249.202962686,-315746.711897222,-188532.051531919,-305896.6840758,-306767.755990892,-218596.735712881,-310813.778708908,-212934.026050946,-219896.038020255,-154343.239013832,-313425.780385669,-211162.109837138,-151039.547755912,-216882.236887429,-310240.968716004,-323111.120449943,-313448.409244373,-202450.706827992,-320703.712028902,-315232.340200865,-201716.407248737,-198871.529586103,-247087.845680236,-293264.949845218,-222451.362752836,-151966.263995325,-291875.343200814,-224049.042633819,-153939.79862069,-270597.562851627,-154789.648415172,-187756.738801843,-187037.034789338,-324125.825485553,-158365.935652187,-191292.541903089,-157815.342494838,-220592.256625908,-320459.78545851,-246847.502740301,-324325.035138007,-248275.075297505,-273715.442559094,-321605.226427229,-155625.309380052,-275645.868020593,-200972.991433494,-152616.189740346,-277023.506364648,-150533.899378039,-317652.255780698,-284401.569007859,-151207.091064623,-315955.932323168,-315061.076429215,-208225.911513569,-315465.897510324,-150751.635899441,-322243.798364226,-256219.038409022,-152908.317794057,-252024.002493406,-319231.066031121,-250919.855275069,-165334.720323083,-230900.248676047,-165203.282625286,-184513.508874786,-163117.728037735,-190482.578371288,-186441.742474298,-165157.58245495,-196806.858788822,-194419.843556847,-304171.232086168,-227778.777462051,-319277.872490127,-226290.914571511,-253183.937338048,-323289.21459531,-228753.756605587,-215921.308007091,-151848.352216051,-292364.400335882,-216470.289660082,-323038.298877835,-291939.362111318,-256606.601575384,-152171.603564827,-257282.860864255,-293638.396805776,-233254.55003799,-303605.681157825,-274720.669873096,-324037.428780347,-302411.356275088,-192822.226433673,-170964.812264065,-186319.186665533,-321613.283047029,-320302.004556948,-155817.629505414,-153937.26490899,-316540.029606829,-263171.807889911,-276894.826691076,-225523.623466913,-223259.408010329,-173473.686560791,-271186.767254576,-220605.308841254,-269710.216763641,-156382.109993564,-197344.003356676,-163530.754762484,-200084.398276024,-155879.550528597,-314638.389977645,-158528.667133398,-295101.493571561,-318807.307224951,-315493.951396517,-238296.435716022,-298144.025969493,-308835.628354412,-296579.335145782,-262672.534140035,-213091.761200708,-261125.174870846,-272590.381795984,-290634.834952844,-253796.634536373,-150947.774312645,-151735.810713164,-154126.600138441,-316607.011937226,-151527.123697273,-224448.532686626,-237970.307393282,-192536.419561744,-237439.596963191,-239779.247338205,-284190.137961774,-259080.422697221,-287047.791970322,-161855.038926767,-264342.565846828,-259014.857218826,-205473.336879314,-323134.935243387,-281321.946985234,-206618.132914237,-151170.573107527,-169285.532666027,-171993.811970676,-149745.097620429,-151589.532896114,-154178.948456983,-154994.425762588,-151410.612223913,-179599.230815394,-241278.542582344,-182463.60867555,-153466.365694254,-321617.800802566,-295138.851770595,-318540.871245209,-196409.164180784,-237901.079000098,-323875.049585735,-230832.230779448,-323051.680665445,-287592.965671805,-313324.942188263,-323941.487138709,-228313.292387564,-316792.124438036,-168418.791349496,-313762.052742639,-310535.092490659,-304037.0871611,-151521.822495865,-220797.311975016,-323971.052247961,-318640.656431855,-166652.499776094,-169109.251996854,-316068.86175022,-151612.21980799,-324280.475225191,-179480.403421184,-211945.60253959,-233163.294875839,-211891.503461979,-209660.984042031,-215904.275469497,-300825.074886826,-322987.749937973,-219109.622704084,-319415.477592877,-167249.018615414,-247093.946312799,-268168.05596745,-149868.985893932,-318465.751793502,-149966.288077628,-204547.722886171,-209415.628340384,-315052.93252057,-177372.746984087,-298976.235288304,-178488.486924992,-214493.36159368,-308197.61540792,-306907.015120331,-272360.683364048,-269724.346089418,-321086.097309867,-174685.674367335,-321193.398090396,-266522.394883599,-278608.308701324,-277275.459653198,-175100.371064516,-245030.718742735,-161913.270014152,-285002.489015196,-235341.490203707,-149749.073604225,-305660.490008597,-317706.600235378,-176905.479704458,-299482.535146035,-150105.369102871,-151715.569183905,-265620.882995342,-154769.910549195,-309921.690208447,-243382.164986367,-260966.469127309,-303185.689713605,-150272.771590248,-200059.115579707,-246659.735264338,-283622.448275011,-215121.881990006,-324288.960928385,-285297.601160142,-286145.709174666,-274209.992925811,-296735.2053659,-184139.84372005,-306267.303689298,-311788.564296449,-280124.171818507,-291223.491562517,-291440.661988123,-266634.771079433,-319358.28603853,-313822.091764777,-207104.417305661,-194920.550250879,-251525.639909585,-196493.120449724,-276432.750213182,-215404.517028174,-324511.083728587,-297355.817724525,-296103.914694847,-217601.068542164,-237834.501406726,-286032.394673354,-321008.20615132,-167659.261201595,-202494.262927217,-301107.78538091,-281463.596925856,-285678.760542142,-221118.04533147,-225463.433715074,-242027.268354118,-177021.907338409,-259749.108243575,-265085.363936222,-265055.046186695,-247956.971355102,-203602.537801812,-202976.797012649,-242762.209245686,-165276.519114016,-316540.058108897,-152716.576235133,-288714.898495953,-153965.915526563,-309622.158853535,-181741.592860813,-235256.631689447,-299970.22734303,-213466.519241225,-183158.969781407,-318513.240207096,-154921.264218661,-177970.639581106,-170600.421352135,-236475.909453624,-322435.063348425,-151710.727136557,-151635.128512447,-252125.575950787,-157485.842250283,-312312.622003316,-150595.747357775,-152224.689578766,-324153.494221663,-226616.850013337,-159865.016445064,-150588.152650557,-264365.954100665,-288955.301010638,-243436.54088247,-154502.322980252,-323395.169215314,-255147.463841734,-152418.445890981,-150421.537245789,-189917.747123081,-288587.405477409,-320831.345089166,-313896.141528129,-313872.377677799,-256982.876139888,-247895.572286456,-248996.048705239,-159637.369333143,-236430.374116864,-150363.919959691,-240466.779879122,-163296.217884269,-318763.268468353,-151754.959959507,-151915.11362091,-149237.233535106],"Archive514_field11":[-324668.772108201,-314529.362758491,-243553.497310526,-148496.534657002,-151031.38699443,-235948.940298245,-324812.754738928,-324938.839043616,-325048.007071172,-325147.433639064,-325231.014114355,-325306.25227335,-325370.66096643,-325425.645729404,-325472.985541198,-325514.029542028,-325548.240771759,-325575.288328148,-325594.658319779,-325605.966517668,-325608.832370887,-325602.878342129,-325587.731440153,-325563.023443512,-325528.520346199,-325484.738507123,-325433.070505159,-325372.471569539,-325305.491851985,-325230.171234476,-325148.333426304,-325060.244513121,-324964.488856809,-324854.642220381,-324728.523918441,-324585.595655532,-324427.881808102,-324254.530575587,-324076.313929428,-323893.231869626,-323695.566674623,-323493.793848941,-323291.544462707,-323086.80386858,-322885.014700172,-322687.120970452,-322495.154823357,-322305.490946567,-322110.305697131,-321909.560345892,-321703.383155458,-321491.344649788,-321275.034990014,-321052.57341684,-320825.821502192,-320535.680186785,-320088.560232324,-319446.371139231,-318627.303056603,-317697.100681352,-316665.162984691,-315830.118500409,-315237.554207654,-314820.953336602,-313315.134024711,-312138.13093391,-311002.919003796,-309912.393345062,-308867.428348686,-307866.846752932,-306912.659896706,-305997.262683367,-305095.534109145,-304168.76344561,-303211.192633923,-302225.068883097,-301213.159650225,-300177.818594337,-299123.116500232,-298051.849816703,-296967.914875902,-295866.365917068,-294740.627357307,-293590.495433784,-292417.261587959,-291221.97847069,-290005.031313356,-288768.899109232,-287520.912075518,-286307.141822172,-285153.628255532,-284046.811802477,-282986.492038684,-281962.348665061,-280980.889290358,-280035.931828174,-279127.817765297,-278226.006227408,-277302.092814951,-276351.793272871,-275373.313409254,-274351.941873475,-273261.965979502,-272171.99008553,-271082.014191558,-269990.613713713,-268891.885355282,-267793.156996851,-266694.42863842,-265607.748891669,-264605.119788897,-263602.490686125,-262639.694166691,-261702.656144233,-260753.324971119,-259789.050303393,-258824.775635667,-257860.500967942,-256896.226300216,-255931.95163249,-254967.676964764,-254003.402297038,-253039.127629312,-252062.120147992,-251062.828464918,-250068.639421293,-249104.770447777,-248140.90147426,-247217.401918603,-246301.425766584,-245385.449614565,-244469.473462545,-242475.196230804,-241396.895151082,-240318.594071359,-239240.292991637,-238173.332866034,-237117.604198882,-236068.632738647,-235027.332887727,-233993.773722218,-232940.921348007,-231846.021340696,-230715.186058949,-229553.343358555,-228368.271973229,-227171.005381368,-225967.306779774,-224762.796179761,-223556.126825407,-222348.973216917,-221143.557941577,-219943.792608073,-218760.304948909,-217605.449857584,-216486.664684053,-215409.983875598,-214365.483933969,-213315.653796926,-212257.663126164,-211195.369191567,-210132.543278816,-209073.759129208,-208024.432612198,-206997.716042859,-205973.412347439,-204974.703840375,-203995.477661924,-203016.251483474,-202037.025305024,-201057.799126574,-200078.572948123,-199099.346769673,-198120.120591223,-197140.894412773,-196161.668234322,-195205.007388842,-194252.006285768,-193299.005182694,-192346.004079621,-191393.002976547,-190440.001873473,-189487.000770399,-188533.999667326,-187580.998564252,-186627.997461178,-185674.996358104,-184721.995255031,-183768.994151957,-182815.993048883,-181862.991945809,-180909.990842736,-179956.989739662,-179003.988636588,-178050.987533514,-177097.986430441,-176144.985327367,-175191.984224293,-174238.983121219,-173285.982018146,-172332.980915072,-171379.979811998,-170426.978708925,-169473.977605851,-168520.976502777,-167567.975399703,-166614.055201502,-165660.073197107,-164706.091192712,-163752.109188317,-162798.127183922,-161843.360274937,-160888.556273606,-159934.210097273,-158980.3886324,-158026.567167527,-157073.545079754,-156120.543921671,-155167.542763587,-154214.541605504,-153261.54044742,-152308.539289337,-151355.538131253,-150402.53697317,-149449.535815086,-148553.742427768,-148610.161856703,-148662.242783453,-148713.778659565,-148761.52663114,-148809.274602716,-148853.609333611,-148897.622027109,-148941.121286406,-148984.525914563,-149029.031728039,-149074.73087015,-149121.628444208,-149169.599389606,-149218.637802016,-149268.733591188,-149319.87333505,-149371.847185896,-149424.115626125,-149476.503923749,-149529.008859812,-149581.479186598,-149633.763521546,-149685.700288505,-149737.221583038,-149787.839007026,-149838.068019051,-149887.867673227,-149936.94448094,-149985.741606739,-150033.550171861,-150081.343428716,-150127.800113338,-150174.256797961,-150220.566574347,-150266.824151218,-150313.081728088,-150359.339304959,-150405.717330477,-150452.67813623,-150499.638941983,-150546.962739837,-150594.317163374,-150641.944617064,-150689.925253866,-150738.228367004,-150786.797683219,-150835.572020621,-150884.485524734,-150933.470060723,-150982.457793639,-151876.744583801,-152722.102173172,-153567.459762544,-154412.817351915,-155258.174941287,-156103.532530658,-156948.89012003,-157794.247709401,-158639.605298772,-159484.962888144,-160355.09214068,-161226.393090123,-162097.694039566,-162968.994989009,-163843.00666916,-164747.444494236,-165661.471159569,-166583.384663861,-167512.309756728,-168455.921230433,-169413.060921399,-170370.200612365,-171327.340303332,-172284.479994298,-173241.619685264,-174198.75937623,-175155.899067196,-176113.038758162,-177082.113315181,-178059.524200164,-179036.935085148,-180014.345970131,-180991.756855115,-181969.167740098,-182946.578625082,-183923.989510065,-184901.400395048,-185889.959215828,-186879.746381034,-187869.53354624,-188859.320711445,-189849.107876651,-190838.895041857,-191828.682207063,-192818.469372269,-193812.993160246,-194817.518939724,-195822.044719202,-196826.57049868,-197831.022277223,-198834.766026578,-199838.509775934,-200840.824541983,-201840.58109883,-202841.340405712,-203842.300792811,-204846.883604159,-205852.75445527,-206860.03313248,-207868.148794768,-208876.299532824,-209884.482480518,-210891.44019815,-211894.669601964,-212892.246373932,-213882.905164503,-214865.182835623,-215837.637060309,-216798.27824942,-217745.315323106,-218678.459135174,-219605.791837416,-220535.255643467,-221469.476458582,-222406.983896849,-223346.228919939,-224285.553628331,-225222.81887628,-226156.406767265,-227085.225692534,-228004.930993239,-228919.519683272,-229828.74895221,-230724.038572764,-231619.328193317,-232496.728983554,-233372.28404448,-234238.130796282,-235093.535547263,-236894.204153338,-237839.468008431,-238784.731863524,-239729.995718617,-240669.287691101,-241594.01744445,-242509.858882151,-243415.763103652,-244312.368345698,-245209.190290486,-246145.40098442,-247136.918245419,-248188.054697415,-249303.65283152,-250488.665833245,-251751.870467418,-253117.191288557,-254561.519475945,-255931.875897714,-257210.514897232,-258408.025183034,-259529.12661935,-260578.895221829,-261562.904130181,-262484.216885114,-263380.010306067,-264274.992782993,-265175.653337436,-266085.026334163,-267000.736674965,-267919.297473336,-268836.335265389,-269748.001453089,-270648.584260369,-271541.437629356,-272428.14794823,-273314.858267103,-274201.568585977,-275088.278904851,-275974.989223724,-276861.699542598,-277748.409861471,-278635.120180345,-279521.830499219,-280408.67088657,-281296.538184996,-282186.298222665,-283076.478527235,-283966.733646432,-284856.712492929,-285744.774362136,-286632.836231343,-287520.89810055,-288408.959969757,-289300.817818094,-290217.894948933,-291134.972079773,-292052.049210612,-292969.126341452,-293886.203472291,-294803.280603131,-295720.35773397,-296637.43486481,-297554.511995649,-298478.875079167,-299411.908069894,-300344.941060622,-301277.97405135,-302211.007042077,-303121.705218521,-304022.933728845,-304924.162239169,-305825.390749493,-306726.619259817,-307624.791844754,-308522.102968931,-309419.414093109,-310316.725217287,-311214.036341465,-312119.299628312,-313023.62492187,-313924.318319167,-314820.66539532,-315711.003949321,-316611.016825317,-317537.527458154,-318497.210178577,-319480.347636676,-320488.785964506,-321518.504205639,-322559.113865136,-323613.942986668,-279918.87909489,-178574.142344913,-288763.777833836,-192908.300140086,-194922.355472293,-160663.826179174,-251293.850129233,-233613.255286722,-252918.175241093,-212317.477920819,-233414.088149993,-210684.912187276,-279333.913075198,-249190.526203721,-227343.267862278,-237933.820474346,-204939.246905014,-176562.98321464,-172514.260744459,-270559.424231364,-284700.9731669,-259553.882642439,-251839.209380861,-182069.245708767,-185302.590624767,-231150.827179007,-257982.657348192,-169876.430068895,-244124.535756396,-176900.963557381,-195564.134007507,-255322.454682989,-241549.757077129,-287625.80272103,-188306.390943556,-310049.257371094,-173639.101340169,-259627.003304179,-295722.703875076,-260025.511582001,-251592.600743605,-219065.013154851,-201152.331146672,-219467.370939017,-244048.80357765,-305257.490906354,-241728.403855642,-176957.293614505,-221826.191876938,-224317.589624635,-237304.256718877,-233309.676640944,-169139.738594443,-195333.692897719,-288757.550328334,-221461.806961673,-233289.609165826,-196773.949697811,-275629.129009589,-186215.137731611,-222061.570972923,-289637.357761127,-181113.043283942,-279528.901748429,-170264.579371596,-311444.70940832,-259351.059236746,-166589.043461817,-234282.803394281,-298621.476502522,-204643.514059755,-301657.67030107,-279821.384758275,-248792.076350722,-260707.275013636,-159944.297812946,-203069.79319093,-311916.505457392,-279236.418920026,-223314.663127078,-250855.125977351,-245370.141731147,-166113.758434734,-211772.786200009,-308995.535389,-239506.786900892,-311294.089670551,-303508.397044978,-297646.126521375,-297498.726680832,-185150.499742699,-231805.664025026,-302844.661481524,-298744.717315908,-263379.663971946,-270949.401577826,-303431.349400499,-245624.381521203,-299843.307566111,-239456.995343515,-290844.739386217,-279528.901748429,-191614.373026481,-266174.501198218,-293772.817324212,-228525.444438148,-185758.864359632,-307655.126792689,-212860.660394185,-252376.73353714,-237957.149578708,-245072.900182775,-271144.390251056,-197868.545105387,-223093.618071494,-279138.924583411,-231261.349888242,-234592.794617982,-220110.074292002,-271046.895914441,-280016.373431506,-270656.918567979,-161139.111024813,-263184.675480159,-212482.50736095,-239208.03628652,-279431.407411814,-251791.767698891,-215325.502789768,-310671.673702266,-227837.413220544,-202869.117532531,-176619.313271764,-315964.612833941,-160787.928305089,-288441.272992866,-299681.920968121,-209597.0379931,-280113.867768121,-203756.315886865,-215367.976547356,-288538.767148038,-194642.369386911,-243236.64102172,-206333.415592015,-240978.602903303,-212554.064160738,-261121.625853529,-315255.312259147,-306648.563803515,-226651.967213357,-212447.992624656,-264311.663278832,-183181.764291595,-267408.268707146,-193951.046057547,-235179.431732764,-261787.546904536,-211750.565352847,-242793.041844553,-185606.773114677,-200057.735739096,-271241.884587672,-231316.799762708,-252211.979891204,-159100.667139359,-230794.740765917,-207421.289786191,-290788.275060867,-257486.132539219,-252589.132263264,-204436.117187956,-186367.228613679,-193720.604947759,-264173.546634606,-218849.752156735,-257082.14031156,-270461.929894749,-171389.419967306,-227122.222625251,-256719.873386847,-297706.171090841,-293734.555234292,-274849.174498109,-270949.401577826,-324074.616026687,-215338.240489822,-157121.111120744,-299415.598670668,-159559.873727757,-282362.508743672,-316493.586644398,-177489.553549085,-236985.559289347,-295749.498914118,-239805.973887001,-291622.771503291,-180116.417776525,-208108.852697995,-152994.885401331,-239288.280059121,-268432.441700005,-199638.864051726,-279522.598580967,-274940.549469578,-152137.797785461,-257474.347599243,-218276.227604379,-240238.110730823,-237793.556627157,-153952.440306373,-174670.40669751,-284951.701298501,-170930.412966813,-277149.623776089,-171952.483754709,-192284.015121799,-166129.530052377,-267805.454987268,-310747.104866163,-250576.735143655,-186593.864670793,-235107.043195746,-311966.731753514,-260844.496415388,-188067.840395772,-226668.48873719,-152151.030463517,-245375.81311217,-302488.824008983,-247562.778159302,-213476.988387058,-152839.666613915,-240235.322669243,-290034.966986163,-286752.797788347,-178930.426712915,-202714.086720633,-280105.38999972,-261413.95880956,-306295.302829376,-268805.960483546,-291887.532841888,-269681.931836818,-290989.961178393,-224137.543009139,-311767.351420614,-229397.671522335,-282016.388117531,-287321.238836779,-175538.041989793,-171365.560140562,-155003.18625137,-304515.656051608,-296868.872615684,-322912.78326446,-199988.492163119,-318735.197226741,-294175.973459996,-277310.906225482,-318529.123985635,-158774.910829984,-194700.101458341,-271035.867956953,-313000.096313698,-182546.269146496,-293808.093579083,-215810.009503805,-285228.653829182,-230794.381507689,-184368.372081829,-298555.95669251,-278966.151676923,-268944.443825184,-256556.804444267,-236738.338098668,-279846.308569992,-323171.134202457,-243074.724608566,-284457.265267669,-297224.978806121,-310827.337752152,-247623.053162076,-321462.671357982,-269145.382758173,-166502.07974592,-183402.020974956,-157364.980504735,-264007.011394459,-267232.769611329,-262846.954601694,-154965.81414206,-301037.721420726,-210356.444748386,-318980.622307724,-190964.449853223,-179333.168975963,-226571.311201011,-314660.600362087,-224218.75242431,-162317.592865688,-208299.496523992,-175095.411358293,-180277.75048578,-297062.945361878,-200995.410418763,-304152.672424875,-213898.474857418,-166316.657865274,-215182.355986024,-314607.749666466,-229302.524158031,-179681.769935423,-238772.072435355,-191054.503915652,-316852.304896172,-280305.177854832,-292883.859693223,-183894.625514601,-292031.385823927,-288762.281650328,-309459.238874326,-303193.571620792,-259052.731567287,-289122.987979072,-290958.276961469,-301120.569815479,-236360.252199546,-245636.848870368,-218322.865309982,-151985.540882545,-212322.701499162,-306652.162917761,-268341.597450918,-243263.822716966,-212185.343651861,-263046.480270877,-174647.649503216,-162634.841468476,-313511.214808791,-250251.994555269,-156626.696137363,-316774.332071035,-278932.073130922,-209946.636892082,-237542.46216103,-154336.463945649,-255664.199797936,-155182.579488644,-174262.67600696,-192034.814200553,-172946.616590645,-295474.511417077,-299437.683979499,-237829.467934451,-256426.06275455,-320083.43112045,-225568.582658367,-153100.245678699,-203789.116344504,-159300.517955383,-250101.751675751,-225334.080297613,-237141.641929501,-273857.090522733,-240424.312092957,-264102.383204434,-253798.278245428,-313595.803247183,-281385.058371996,-293972.818194051,-206232.114206847,-156598.212403207,-209839.466170978,-322238.143850905,-235967.542676118,-315300.881806574,-189261.555511279,-174263.116551898,-243917.470381962,-322848.404734373,-165733.759213384,-267724.776294479,-291661.431136027,-273983.312272191,-283460.030654256,-270645.605381232,-316441.647339726,-262915.566572675,-318018.063915364,-248772.89105414,-304064.622587892,-257386.909589909,-152986.420333978,-232929.232882898,-151509.084274464,-252443.849324613,-317242.574185304,-220009.638755451,-165088.881985234,-184551.523922228,-235467.415668359,-300794.913844386,-286044.687483238,-186899.996771641,-251124.33177569,-160024.787985887,-197975.012732737,-181391.65402722,-264854.064637718,-279506.040405537,-151947.374231933,-299088.148767203,-300339.405256969,-269617.623888271,-182695.901287027,-162497.126177382,-304095.044683486,-186685.139122535,-167512.651367431,-251761.841307074,-250438.881229689,-253136.467435145,-252722.692859965,-222990.964931883,-215712.754128344,-163374.738687559,-260191.15230545,-222972.759611912,-215095.952023477,-277828.938445581,-321978.563995747,-193369.643589165,-295148.631181758,-201623.303079142,-151075.924089024,-194030.092484166,-313877.536996833,-279946.839182963,-188522.488577878,-285940.5260034,-164596.323350807,-288978.119638931,-156632.992772857,-198867.643688383,-305075.377467387,-221400.196715819,-153118.274454097,-264953.543059546,-182709.956085806,-321251.880040262,-231066.01556505,-302525.78750742,-295922.25059171,-256483.112598234,-239380.242000473,-153320.972300853,-272006.873453754,-265278.302518061,-247492.100090624,-299634.584341966,-281921.513462882,-290329.649091828,-265726.245816687,-213974.632884174,-181500.834417077,-186351.381878406,-192950.115439033,-286253.520662173,-315239.061086203,-232659.218027772,-151112.71322021,-163830.67330443,-322876.275915106,-215333.858990992,-171712.011719737,-158580.982694299,-283730.451217158,-199835.312619755,-296742.823781929,-292172.066265505,-181634.242419752,-203362.857545908,-151493.495914806,-241226.629703341,-267006.340944192,-201480.770280368,-279523.534103907,-275033.661218702,-154418.967597658,-262688.258992984,-209004.118213977,-152373.44904677,-170724.361680376,-275719.489711617,-172993.059062988,-193111.411496692,-167459.034980032,-266887.465299717,-310823.398612695,-253758.613959759,-202166.728505421,-234626.459109803,-308737.612294892,-250488.901768826,-297847.40620535,-243572.802392878,-245962.80694497,-207499.612797379,-151716.801938458,-213938.450318774,-151274.028147998,-240751.153797645,-291212.523646379,-286241.996819465,-180096.806631933,-200384.468214767,-280669.220386119,-263797.692491142,-307375.914745488,-266203.245848198,-292952.031663597,-268154.79061166,-222632.262828585,-311841.928529725,-229842.832565575,-285682.65135472,-174223.889000852,-156914.358554989,-303328.065381667,-295766.47386538,-156694.843975745,-320904.630290913,-197239.542554817,-271047.058306418,-226807.139551224,-275092.910339648,-316444.57057675,-158701.167998313,-194504.935151875,-311930.186663902,-182374.250500843,-294316.875988478,-214347.798578567,-283150.279117484,-229079.095659983,-298771.061104843,-280070.427642189,-233944.530383096,-279859.554674871,-319992.359341152,-246406.199639378,-296521.666412788,-249862.367757745,-317006.39147584,-271707.245559821,-163952.59393455,-181318.045463776,-154580.086929299,-266483.657781591,-265287.200691166,-263126.431012146,-299782.70759794,-210807.265741706,-321223.734335438,-202126.228127876,-182023.624087041,-320651.045512071,-232244.424465618,-221268.354570975,-177912.890199318,-202360.42221604,-176322.391971256,-179571.272083954,-199015.590944114,-303344.083036763,-216756.1316508,-166220.28974877,-218198.596074558,-313747.81284254,-226845.323438974,-285546.116898245,-221947.98531513,-192547.712112536,-318396.64334094,-280801.595430667,-293799.47718781,-186419.171910109,-291306.514308056,-286360.109130927,-310059.436898545,-303052.23816388,-259556.790638205,-289510.538880948,-283906.949704045,-293182.463338321,-301665.788448356,-237701.618273468,-247258.258002946,-221320.227467308,-153754.045211946,-209325.113626061,-305155.683112239,-228073.211451128,-157572.893401988,-262221.78178012,-161133.264550765,-251856.131169164,-159901.094833733,-318560.103475813,-262145.656050315,-278478.13167144,-210063.169918891,-238109.712214004,-155584.918584125,-212325.973833575,-153118.199336467,-174886.250492307,-315774.466707599,-190235.199378731,-179566.419557669,-248590.586010786,-298951.507803365,-237176.100055408,-258027.539043124,-317591.638370146,-223706.948979818,-151667.702406778,-206500.294123358,-158939.48248804,-251241.719220173,-322773.801134504,-309355.902781195,-254279.743784134,-316215.145006508,-278272.843355129,-172789.74104218,-208321.830954816,-212464.617389868,-317875.928477964,-233739.698941641,-275658.527582121,-262683.603877282,-174928.30584107,-255905.27821725,-320969.345217341,-156564.148009802,-319570.021537658,-323459.318270288,-268518.470800178,-291940.853657745,-263071.933353428,-285731.133252558,-270634.291831597,-318058.693117829,-258874.000054637,-248752.897245103,-305941.655380477,-258487.068963927,-154591.756834065,-231396.378363257,-153313.89563954,-251122.419723567,-319125.560866519,-220533.709961204,-165309.588285711,-185149.439205153,-185091.046860647,-234830.060363993,-300079.300485623,-286951.050993918,-189705.96211224,-254600.256374932,-163590.419546048,-193721.740784378,-177202.097977105,-265122.789429208,-279494.949850025,-153253.782665856,-299393.124528311,-300974.167551571,-254842.402952421,-184207.720874544,-304981.641733897,-168560.007402594,-247995.011531092,-253157.020634645,-253904.166160638,-226743.920626861,-150395.692766721,-164462.021557207,-260319.084160362,-221525.905887251,-275917.300557814,-323434.320973933,-196267.465089526,-204799.081763116,-153301.210195229,-197077.755148026,-312198.129615138,-279933.336154018,-284255.248922883,-167413.630727678,-277753.201549303,-197251.502769261,-305612.897087577,-207105.871404486,-151414.193834226,-262011.767403677,-181715.957336652,-193141.295249275,-257721.659511696,-231611.691980003,-151921.05149045,-270526.08778948,-264277.528303886,-249314.901583621,-316776.867926081,-178393.230062243,-301575.944497557,-213397.334668879,-282549.078799098,-197669.433127497,-185712.701128911,-309056.699828054,-189830.056798969,-315362.14349937,-190539.995692169,-322527.62505867,-287757.974004473,-313577.783181076,-233416.25295298,-272707.099673756,-165353.290779015,-321643.760729556,-215329.603232541,-155096.416846018,-174210.071711679,-157733.935620121,-285062.214572672,-238200.081806766,-297733.518806935,-241418.431683514,-292713.540629297,-198485.135284189,-284279.804404195,-203402.906129015,-279524.646897196,-275128.524986738,-264271.539396652,-218811.431823436,-272242.292285876,-199175.053333263,-150995.522823422,-166657.258071425,-281584.994829375,-168716.574859913,-274220.956146559,-174454.679933803,-193903.836986207,-265942.633397801,-310900.416500432,-257008.701034947,-200845.29763427,-234165.945764963,-306192.400749215,-249508.801958443,-298205.443499483,-243101.958196667,-157258.535376385,-246559.570061356,-240856.102016712,-153248.105841526,-214401.048449997,-178037.292795751,-241262.973390613,-292370.792675853,-285730.989549267,-181657.83661314,-197988.154689019,-264115.799140475,-308487.091916155,-263302.278479578,-293963.737488735,-266559.928303348,-288032.370721317,-220898.807223844,-312329.517425334,-230281.745781636,-284028.107001153,-284124.089550115,-173130.245809023,-155782.553792967,-294376.789374258,-278177.897030277,-318969.195355871,-195509.54544557,-230157.940497368,-272874.914635257,-314094.511910716,-254074.584292742,-194357.639278486,-273955.763335201,-310659.478699868,-182215.518240537,-151636.072078588,-228385.582488422,-190771.850247207,-298985.372790309,-172650.302400254,-281199.136795815,-257873.170500181,-233579.03358176,-279873.37994756,-247811.640143997,-288073.42722334,-295819.142573121,-252130.220883522,-274304.935660399,-161486.036715982,-179049.17915722,-152304.671054941,-268791.254665312,-263238.385492429,-263422.7392149,-317632.015366077,-218999.298474466,-323513.213354978,-252864.031215853,-179373.92918067,-200033.176628913,-177065.844213802,-262235.817708769,-302497.607146878,-219255.291372096,-201158.128449518,-224221.641005616,-236447.472658065,-193974.717182999,-319872.451645769,-281311.464142593,-294576.287645465,-188623.28609431,-290032.618017973,-284022.099042346,-310661.706463768,-302940.75979147,-256961.578149294,-289926.149483405,-295433.131401205,-189692.044303341,-239282.083399023,-308381.366755809,-296689.799807718,-155798.668701805,-209116.06398497,-303520.912476684,-229494.455507455,-154924.287156913,-174480.251317548,-159913.895494698,-321322.813400013,-305397.291528161,-320468.430200247,-278018.052702457,-210182.700393135,-238664.725895451,-217657.675113592,-151447.707727902,-175525.872389493,-287333.320074071,-254180.580166864,-236519.976774624,-155169.083354554,-259588.099266981,-221755.873610819,-209441.101959334,-158607.630219736,-320964.251915466,-171164.452102185,-308040.132041567,-254764.098811363,-318789.568419305,-275567.088379635,-171097.538261383,-210408.195170323,-217595.161823192,-313429.544889892,-231482.567133754,-261133.914662242,-243953.188996206,-254204.987408796,-319090.285700309,-158578.944176022,-317482.674261,-269323.86260862,-292208.906382328,-186097.978180226,-287930.545145734,-270623.243189545,-319649.924922161,-256666.441346095,-321507.910859593,-246618.335090912,-307692.83330246,-259587.228337944,-156611.607654683,-229673.709033196,-155406.698197954,-249807.882074301,-321039.318196386,-185700.35462115,-186657.976660305,-250433.322162223,-299354.032878484,-287857.414504599,-195533.364991846,-172743.38003799,-265388.766983917,-184598.673661527,-279483.901933747,-154855.788951037,-282508.01286201,-301607.676615578,-260658.288884174,-297721.324530311,-300303.22940498,-169760.615739986,-254714.83507327,-254681.5361902,-316282.095680351,-228637.463875222,-165525.532600234,-260422.730521962,-219956.403036619,-274225.513101302,-213822.806909688,-156071.909260352,-200185.468187546,-272903.874295843,-282569.972023809,-228973.666252623,-275372.165751857,-301185.48070094,-306137.3685578,-210850.51172304,-180694.008297378,-260686.220485609,-189308.171262212,-258721.336536728,-232084.842686614,-169422.289202953,-269017.984347297,-193789.893158848,-151179.970352208,-180145.573214701,-206337.877107451,-289192.014911451,-200027.08556896,-183318.606113442,-307254.225637337,-313611.054484726,-188107.277877004,-316975.190805975,-289216.608677352,-234174.117982427,-288810.125955534,-273711.388993813,-167111.280636173,-320375.44146985,-153768.44584213,-197168.324873023,-156984.848285263,-286360.733296737,-310084.936974975,-298717.011248805,-242705.549402154,-293247.132178087,-184204.191253178,-194235.781972165,-152745.927070111,-281063.592839677,-205385.985599916,-279525.946214453,-275225.149664421,-265893.205816183,-151511.166520637,-270601.814706363,-160231.782053006,-203851.759548485,-319971.750257039,-272646.016158526,-206527.354432869,-191461.289648198,-264903.861819846,-310978.068896261,-261214.33516086,-233728.265094934,-303825.193853329,-287847.825938788,-242640.173113989,-247159.130492943,-191318.648527625,-238412.942306724,-214863.400543766,-241768.63551529,-293508.989331233,-285216.038240636,-270492.232781931,-262199.586153611,-309602.154518989,-260185.259018966,-294922.086390749,-264902.801463743,-286376.173054128,-212726.136876568,-312744.819755201,-282658.333943697,-317104.285714038,-166987.304432082,-293496.354691115,-235302.492372705,-293135.596469515,-271248.601264983,-253608.693323985,-275433.840228727,-309128.736727473,-211732.844668597,-229427.286375578,-322996.631594613,-299198.640449591,-171080.822230065,-282349.801163247,-257181.7941893,-297195.555920154,-279887.833740704,-248963.099052732,-295119.500782791,-254418.114630771,-277032.842353062,-159208.758505032,-167226.985373178,-307039.725794911,-261567.345561458,-263719.04723621,-316553.329654686,-217538.583006963,-156578.298429331,-252809.887009169,-178943.935910941,-308084.581537964,-174535.299838882,-261939.81287963,-196238.306022479,-301596.709441679,-278338.849070966,-174114.924710262,-193290.526036674,-231232.367365769,-313356.402273482,-180585.489632146,-281835.609377314,-295305.639728345,-190720.11978406,-226924.460224481,-281744.429276217,-268414.927861401,-290369.440750868,-236629.928662453,-241122.071587905,-307184.700642415,-299553.965344105,-210587.376118645,-230915.699745226,-152806.990445107,-311131.085503318,-292763.153827666,-277550.745385354,-210308.25334167,-222583.366695123,-176203.998240849,-287040.837064225,-176672.866698251,-252230.217508127,-235849.704344416,-152860.697917168,-226879.606653299,-219697.571636102,-293965.358686849,-158304.472160105,-308978.173418647,-170939.483874177,-306711.285572553,-255250.801718121,-318768.700233804,-273206.814804658,-219769.278671149,-229593.967496339,-223007.221185246,-259679.34541353,-251160.582019534,-317266.758977445,-313579.08340555,-270136.119152309,-292469.543690491,-186615.408189185,-290081.550984475,-270612.24299292,-321172.997275724,-253939.986564714,-244760.477252626,-260687.387711962,-227750.534238785,-248481.030032782,-323027.721765356,-212955.078899752,-248581.16074417,-298207.366256775,-286615.022257995,-247819.507354855,-197144.129375713,-265653.347604739,-182975.278266414,-279473.123098252,-285190.058064575,-302226.169048551,-296901.818409607,-301574.865089882,-254083.853880793,-157443.465363568,-255473.965671474,-313808.500810833,-226456.070959492,-275418.307027908,-260508.110961447,-218230.374279241,-272587.457430285,-265280.600500614,-216978.119849953,-203278.602963648,-274760.852677246,-280919.785218525,-273095.809455582,-300734.595476604,-200503.747752582,-214360.882472913,-258507.383020828,-306395.496320232,-189830.512948052,-232570.369839172,-169707.621341074,-267501.494039931,-195988.166130865,-321319.570096568,-203320.502089515,-289422.496120264,-202492.719421305,-189706.862979463,-185646.485845774,-290622.495533103,-234931.955069568,-287159.68512928,-274701.187869128,-201887.109480339,-218287.528997296,-296839.686332105,-196559.632024709,-156312.922178545,-288596.187680893,-209773.491844875,-309116.478219833,-299789.284200831,-244164.905676029,-297115.274407294,-190634.203723218,-154220.060469535,-283832.501782742,-238125.84744452,-275324.25340532,-267548.964208539,-153321.024012265,-199247.187304981,-295554.265654982,-317804.288939917,-165695.436339875,-270774.923827748,-204333.122208698,-188491.927315082,-263865.090241891,-311056.539783941,-202454.207665062,-179626.55738912,-301592.033822855,-290870.797401562,-242191.446886447,-247801.311107062,-238886.351570393,-157208.890606838,-242266.741786239,-294626.465859047,-270515.746232939,-203322.655643003,-260458.022018091,-257519.057104247,-295842.17864615,-216542.201722562,-284494.200460911,-210121.236572225,-313161.81531627,-229681.414033521,-281288.708218403,-262954.574032695,-151524.655034098,-163871.186927354,-241411.653678283,-292507.799067,-271841.640796848,-258894.529122145,-276923.944833698,-185924.975203318,-210606.656854533,-221430.767958011,-230452.037810473,-234984.528156558,-169703.928601957,-283517.817340193,-256525.753465331,-298642.709026671,-279903.155378344,-294424.268615043,-274239.380831781,-283663.3279905,-159297.746768053,-283461.143991875,-307430.887604863,-261949.992769968,-177444.473173467,-252755.742802485,-176774.828356496,-218327.881135461,-312679.612028093,-171981.405130706,-261586.34179386,-197229.676017488,-300641.34365306,-275766.086773864,-314445.845591474,-196055.186479031,-194966.678865424,-229155.058090593,-315374.179012888,-178083.578500867,-282374.868133925,-295990.368854794,-192722.836890311,-218344.570857464,-310123.143543169,-264821.055519997,-296319.926406529,-189681.841914003,-237615.766987973,-302328.47599387,-211915.065340701,-232336.943801553,-151052.935191317,-249211.204962157,-309954.382897888,-294692.503146062,-267780.011339782,-277077.141069869,-210433.806471649,-279385.595818691,-286748.354054379,-262771.508740869,-151166.953773419,-233756.575913387,-150963.629764973,-226423.387714386,-217553.320214931,-298760.587820285,-154839.361596407,-307659.789166134,-170714.515827612,-305377.109199276,-250813.527322002,-255739.325773784,-205540.449582166,-162755.356818307,-221634.393525636,-228001.589694549,-258328.68072059,-315483.341076946,-154111.586257972,-310755.112695772,-272594.245414911,-292722.931784526,-187159.967456204,-270601.439662546,-320661.49484608,-242943.346414878,-287162.345636045,-225629.553134266,-247150.15321045,-215902.92964854,-245893.590041196,-179413.284105088,-246817.837716765,-297793.255829585,-284666.298760283,-184730.482420758,-241740.430478425,-156506.632763414,-198663.649790353,-173920.14197546,-181780.141177811,-279462.456939202,-291908.70059069,-287952.536829693,-206468.344817408,-253428.670477595,-256274.064227249,-311171.51620654,-224475.08371416,-275987.439376264,-173014.123933297,-270962.709917842,-219391.865020377,-315706.503941638,-276563.934159522,-236058.274430205,-279402.132583782,-271156.322886081,-316011.019017574,-300325.411241779,-207322.109113228,-217478.80189353,-262162.242893825,-214152.411273859,-256482.386279706,-307503.899219029,-194232.999172448,-233068.261643846,-169990.257046608,-266014.224853307,-319463.140581903,-266956.003604617,-207422.179041027,-289666.7819172,-164187.671652799,-205228.425283495,-182242.179737127,-181322.755375431,-187966.52195491,-184688.29697697,-291976.833369257,-317277.391387995,-235689.510556319,-275670.601198784,-199152.560320776,-219701.463055906,-196010.418549204,-155709.567036567,-289534.336109667,-321508.934019768,-308109.640343682,-301334.023272956,-245866.102069238,-296565.692057054,-155891.863733518,-197671.701353308,-238940.601558666,-234483.283275091,-275423.73400447,-269235.682313725,-154490.911416536,-296507.384991016,-154583.680600238,-164389.013753355,-268566.634264588,-202685.317212886,-311135.06220159,-172412.434443102,-182758.329117514,-299482.107348025,-294012.253860848,-241761.870211107,-248452.657160634,-239378.059597461,-209726.157396042,-242756.278296908,-296894.214473339,-241048.64954843,-270534.11412633,-207357.518547664,-258794.75585455,-262260.772728777,-296706.88616532,-213169.404374927,-282339.612019288,-313579.975563483,-228111.094686916,-176124.070905798,-261510.916436156,-279132.785440918,-162896.703520598,-291849.003848507,-272439.25742369,-263090.143753818,-187835.773370338,-231446.982424849,-231431.969422686,-190144.122881901,-255904.959420934,-300004.193017017,-252670.704746978,-197170.18140342,-150950.494340659,-272778.153149138,-278482.300881318,-306114.481268481,-307822.049596258,-262293.848617725,-266028.010752745,-310897.244141414,-252701.598595801,-174605.720802051,-217176.113772692,-316692.417203344,-169333.307653344,-198280.083933153,-193697.019645105,-196623.004813201,-226865.613908214,-175772.474131893,-282930.096644535,-294041.926050252,-215100.32699034,-308329.781628946,-273958.821566226,-289934.665536395,-298666.556696697,-173338.279910567,-235263.721333629,-304885.886170816,-213142.446399578,-233758.18785788,-308574.279170504,-224849.902540732,-263684.023913647,-296509.827221191,-269446.39615505,-276601.574442398,-274923.853941382,-222536.940008368,-192505.491650143,-286455.871044533,-181252.74683345,-258441.815309719,-152891.743452798,-233184.966134809,-150967.332483485,-225979.918087913,-215362.562816173,-302527.084284467,-305875.333408533,-170489.547599604,-304036.469080996,-248580.944826346,-256229.169286938,-278569.669216329,-169307.522529097,-202166.586072235,-157568.604257924,-196229.163263469,-204071.371744359,-262213.156498113,-254144.889857813,-163942.035915855,-152488.155299923,-307350.41630205,-274176.997092076,-187721.541954953,-270590.7522746,-241094.170106099,-223794.089784618,-245825.572297839,-241965.946484509,-180669.444106775,-245140.211747838,-297379.145402394,-282895.456530748,-168661.011220342,-153640.272122968,-201944.713996953,-318837.370085277,-228392.857830421,-180813.48905609,-279451.959341208,-311375.200561874,-227117.466626934,-206619.891731715,-252746.652843548,-256359.923314817,-308363.660405599,-222657.736232813,-276556.571724619,-214479.251164111,-281053.225336708,-270975.716335793,-171974.469813918,-178850.09893195,-219307.158825122,-202806.616580293,-278310.298565584,-277884.479949039,-273463.5147878,-271171.719097021,-299975.048828341,-209946.212314177,-220455.464063525,-266340.449649927,-270525.010740571,-303665.340997662,-317048.113331359,-254108.530203509,-160589.882308051,-198533.680142939,-233578.399980886,-264565.472503345,-317520.775410492,-265856.64022345,-180041.609871219,-289923.007969791,-209358.410876138,-183574.652718363,-183974.194135755,-186085.19384918,-186194.829480902,-169670.33795766,-293278.697730929,-319064.353243901,-236446.502116519,-276631.165889423,-196447.941363346,-221071.401408435,-195512.569565208,-290441.663448482,-307072.791885907,-247824.358429591,-296046.727942885,-198614.216039655,-239721.640739684,-275526.253964516,-150276.272247267,-150999.510771194,-152385.002101889,-274162.621319658,-203537.730298593,-239331.935014216,-264955.237197966,-311214.553890679,-171149.192518238,-186114.096355048,-299648.92055969,-241347.961549144,-249104.003214206,-239889.982794696,-206572.102041018,-178737.331947453,-295138.139389958,-270548.362525376,-307335.864892277,-257148.214613059,-315760.155529085,-264524.194277304,-209482.65906411,-313998.867753974,-226437.33546147,-177406.933228874,-307207.165894039,-164843.479766138,-243459.949585582,-291145.965616377,-273038.957022479,-319445.824879654,-266278.710579152,-322660.228722091,-189732.751163645,-229459.141875213,-226066.580970404,-193106.591267359,-253546.059555069,-301263.439010593,-281646.173421025,-319350.524558438,-252423.233889976,-194176.386426275,-271240.988982312,-322538.236966099,-276948.22833113,-159433.299252038,-303237.951805753,-153572.895782558,-262607.97312548,-267664.417464785,-182751.446963686,-226483.421034352,-248188.446503209,-252647.454389117,-216013.962395593,-167943.268077196,-199529.706886643,-191325.557353655,-314665.776946551,-198171.082083748,-196049.51165058,-283502.536345908,-165526.701822466,-209462.040726376,-306521.01461305,-293623.788120596,-300827.373188153,-176411.980268094,-231766.638602094,-307106.835957634,-257924.472575107,-276115.351816715,-219798.758711835,-192951.05078053,-286163.388216131,-240906.300189084,-259294.801394155,-154936.420468504,-232575.694300128,-225546.234074946,-215357.343229588,-249475.94307598,-293402.702603101,-304872.800824921,-302688.006568414,-246277.534208196,-289346.193845885,-284870.460312152,-170329.25782787,-198952.704968664,-198036.951572859,-260114.64953595,-167802.846374119,-226326.299448434,-151091.439689819,-275686.114985143,-219840.131288521,-270580.173934228,-249405.295852706,-183333.625284686,-239200.695080512,-313600.473241256,-261383.382486949,-224301.48360653,-154476.83883629,-244517.733362972,-243000.90484483,-181925.604289907,-243544.753034579,-296965.034975204,-281287.647499414,-167399.755013682,-151279.236303639,-203877.692186337,-230559.375278199,-279441.674032168,-222525.55878029,-311456.138900383,-227582.966040512,-206789.825953873,-304847.825664679,-252030.263450723,-255645.075103501,-220999.115931354,-277125.704072974,-219553.67093441,-270988.407949185,-172848.808356689,-177157.49878978,-219212.100549601,-200663.09964261,-319830.318094836,-168623.486517007,-276366.827314296,-271191.414431419,-311987.109678545,-304012.895572173,-210181.405974854,-263506.034686558,-302298.786022997,-318899.759812619,-257304.395414174,-161856.087024633,-192215.168544308,-150536.935320415,-234100.556412863,-245733.991932272,-263159.046760252,-183160.783248206,-264602.951664349,-309150.720427916,-290194.016954124,-213765.640579246,-181110.046199394,-186272.15618556,-184077.219960417,-187745.46891581,-320851.31528125,-301572.57944549,-193601.015867248,-222343.595395139,-291315.568522614,-306018.502892721,-306486.789823547,-249681.927591191,-295543.223544898,-236483.471239706,-160260.642101084,-199602.323316759,-240481.572955489,-276983.43962921,-302390.106561401,-216876.805400849,-150633.292368863,-151277.407534105,-272456.068894315,-205770.620885396,-237118.87312282,-267917.015372162,-323697.041798374,-189762.025447346,-294491.126571232,-299996.930920397,-149967.319787887,-249804.423034475,-203464.672053435,-245519.319355586,-293340.345354155,-264325.406901923,-273225.910468126,-305929.086422924,-255524.420949355,-317683.323065754,-266486.321372896,-298782.261615146,-205950.259434349,-157766.679467373,-314417.770286747,-224663.295652264,-271862.782962109,-311889.658344051,-167307.286663385,-242504.853422077,-290412.805759171,-273640.959321354,-321012.447858271,-237704.432100031,-230480.957734922,-258995.380345868,-224976.133362367,-191561.823164266,-251624.65764558,-282509.820584092,-323104.822935682,-252175.763214417,-191082.977126083,-269622.372447402,-181749.686422378,-275425.744943328,-300378.088114479,-151818.847060736,-262906.917340119,-269227.41139097,-252915.74534908,-246581.359798645,-252593.310363876,-214842.20394544,-306192.741318757,-169187.491814987,-230058.575114871,-315217.939424063,-199675.424201152,-194193.760734789,-279995.040387631,-162764.677029108,-207074.808994606,-304690.425562913,-214174.92805545,-179555.644532489,-228201.100303918,-232828.296562151,-258827.540708044,-246337.807577979,-176140.479208855,-224377.264230704,-180817.335477893,-216642.824871743,-193396.609910917,-320913.329057558,-285870.905206285,-322313.049554283,-224271.267449364,-231935.034908728,-225125.448883904,-215352.313251512,-250183.952135589,-295362.352994244,-306549.104614704,-321935.958147255,-173507.262461308,-239278.848079094,-301337.462535435,-242452.901597801,-289928.609495047,-199532.552828715,-195872.581328045,-200059.080780127,-258048.638750595,-259937.008680476,-229524.373189982,-235580.233275607,-151041.265105108,-169049.399484198,-277128.528060377,-189880.389965342,-270569.799173518,-315107.401110683,-249705.692522958,-236704.495066394,-313246.820893381,-261248.66101442,-224839.234567246,-152929.643925723,-300492.580627131,-244079.287182608,-316729.066985883,-230349.369611047,-242027.417563161,-296550.924729457,-210392.925425538,-205812.162567471,-225195.330778287,-254829.290752881,-223986.644392634,-311535.135792913,-228042.643837807,-206979.261365832,-150318.756528581,-305811.193658157,-155172.216521765,-254941.705736893,-312337.346895934,-152160.758559418,-277723.784832416,-225969.595038614,-271000.77459718,-175417.743827892,-219105.375453854,-274110.938394722,-271215.219825098,-306518.851080167,-207434.548410675,-250394.277324831,-314077.932324948,-219077.300330571,-320827.7270755,-259291.833340574,-190473.782042024,-234634.387830024,-264496.686346556,-310266.571584415,-320779.8657146,-290487.320088813,-217800.007417243,-178401.078402972,-174544.419554561,-317385.3637267,-208329.519262334,-189582.158098077,-166552.224573889,-224902.394159568,-322638.277318599,-190108.14063018,-223593.513557284,-239407.182738685,-292155.555446842,-305052.252849905,-151966.761112297,-251369.032715468,-295071.089466494,-234878.883557147,-160540.488112046,-200638.524383951,-241214.500746396,-274225.259624663,-162265.920645921,-151279.961170619,-270533.384541818,-235783.549663424,-171352.650976354,-322293.858270065,-193351.398351613,-294730.562926424,-300828.222162521,-239739.529440661,-246665.255304121,-291477.714280415,-267619.042969173,-276161.997868721,-253934.497534458,-268209.897376373,-299580.672927356,-204814.48486891,-314836.541817278,-222798.751619183,-315876.520902054,-168092.848506314,-236146.828135924,-286139.433675854,-240026.319477702,-253765.426620708,-231476.292271486,-257136.872939675,-223842.735707425,-186768.257323846,-249598.078716707,-302864.916932159,-283373.46774716,-251928.292357414,-151245.528265366,-188011.933102118,-267925.631400548,-273998.62665209,-150330.934838172,-270722.687681429,-190840.549492535,-228334.112033881,-254638.426835859,-244930.274484904,-252539.166157192,-173141.457205939,-213664.337561085,-170355.526680619,-228444.972953892,-182921.326208449,-192277.321850706,-319742.470204523,-279983.586582132,-313436.141995904,-281790.010617475,-159666.478707874,-289764.928361932,-152413.743667329,-215913.858356407,-293481.283264129,-182700.101886639,-225039.432847666,-302825.598840782,-150401.090893758,-234492.261646245,-259783.906794951,-200207.93960825,-320202.270476215,-175774.586497695,-295640.938698313,-179837.223329348,-182982.385591687,-154098.609233876,-175838.924384427,-322976.451443051,-193875.606547246,-285578.422196439,-320422.534417318,-226845.371884402,-224715.914644472,-208532.191706994,-215347.458910792,-292816.741002654,-308619.274811985,-174968.114555804,-299979.469700422,-241347.157935664,-290501.169493494,-240154.374169896,-201996.840551368,-235788.160144013,-202283.06321443,-256158.003679443,-258993.51202164,-223448.639048062,-237538.886090115,-317414.891849927,-278509.10154511,-170195.641709444,-190667.389566957,-313518.137968861,-250001.385269193,-236146.611129439,-261113.939360447,-225411.282169109,-151581.161272908,-301190.97045697,-245197.210968771,-234625.59652717,-240583.600296298,-296136.814302266,-287764.389122605,-208837.449249934,-207721.590472806,-310871.14729715,-256937.11103099,-225369.98362139,-311613.890276861,-228498.172384015,-306645.264978344,-254253.004448261,-150345.968887787,-278325.49065253,-271012.808840593,-182943.32515015,-218985.445803801,-234125.030244577,-276842.752292777,-248715.413910898,-309041.886413795,-247986.176863229,-256653.253847482,-215247.261246735,-322908.300157241,-261257.621241219,-188734.945728826,-259142.557192288,-262304.450908646,-176287.807016309,-176512.010822643,-205645.961364898,-302597.774691307,-193580.446337829,-227427.050509866,-316021.02091179,-233845.323945148,-224843.43171943,-198532.850220144,-294363.919401857,-294620.014452205,-233136.381177034,-241918.996696001,-317120.14061427,-268430.602588188,-236381.705177608,-231864.929113004,-167454.147435142,-294978.126319637,-239108.831481565,-253058.122650732,-192730.53445145,-207250.252387253,-247812.051657967,-289574.502449638,-278214.077962685,-300518.27285228,-202087.603332301,-205515.70630678,-220853.157659811,-265932.501952891,-151477.293005846,-318815.45007152,-168946.154475728,-231417.846945464,-282720.549122345,-282332.876108961,-242629.479012632,-255054.291640728,-232442.856393085,-255407.029513115,-247503.305681347,-284237.114910227,-251662.743735256,-266155.122664257,-298431.640644651,-299039.131066563,-266552.685984074,-272155.242565738,-269193.394535775,-243254.150142792,-252485.021950508,-174776.510167657,-211098.442357996,-171468.878452226,-287255.042605215,-318644.477085042,-196946.523923613,-190313.161680143,-279971.95006298,-279366.421590167,-159383.887637453,-289480.130030733,-201877.659718843,-303965.401634461,-217698.952250971,-289293.436593693,-184641.167559349,-300462.769089081,-256585.757572886,-236143.23265055,-260775.462769598,-321963.364106728,-293794.806830849,-177001.795910974,-179163.587842952,-194361.635391218,-323658.502825598,-285285.939186592,-229142.686543622,-227207.592541009,-161356.371167956,-215342.770772363,-280960.461414869,-318189.13288548,-176292.467938205,-240502.31739649,-291065.759584034,-204246.186616552,-155764.492539174,-237464.25708815,-247194.210970224,-204706.399490874,-254267.368608291,-258228.821448752,-243001.143987428,-319210.413305275,-278513.56433065,-171087.993786354,-191454.389168571,-250291.924111407,-235619.154368498,-260979.217887918,-226017.646915241,-244803.552677024,-239719.208488904,-288839.042069668,-287258.694700977,-278833.17678,-259045.25391573,-254429.527248584,-312324.821121946,-259257.786910081,-225466.064512756,-311690.718193202,-228952.510479095,-289029.374357091,-305612.631091334,-297787.692951804,-275190.557814619,-322888.402876173,-278927.196291201,-271024.506687665,-182734.687567361,-293273.526589772,-150987.386168893,-232478.937168654,-298340.153903955,-277888.639360965,-252993.243336449,-279833.598267914,-245400.5678185,-297926.424508218,-229736.530233299,-266337.580301637,-261565.240634841,-269139.832762885,-262573.36966329,-212695.788991386,-173831.833944306,-178431.783187616,-203105.14147889,-303325.705708307,-198656.265582224,-231634.947055396,-182091.069557443,-189504.866230581,-291223.5788204,-308878.057948517,-295979.877970212,-234536.625319843,-308039.145170102,-269297.521541338,-236967.910093855,-153252.476453744,-172867.299813137,-193721.775258652,-169288.070510499,-295226.318959079,-299913.565048641,-238472.380310405,-236128.008266652,-254759.288561425,-322717.133592378,-248958.065990116,-235781.142814741,-276373.820874463,-253320.25596096,-297798.085675426,-204150.178121162,-206365.389392844,-175276.572762956,-191685.358641975,-173705.752632155,-322922.089322664,-321262.484689949,-265713.173897615,-256262.1589902,-151702.38624846,-233379.210708043,-149953.559834877,-253838.24681193,-219446.880337542,-164888.002565729,-183901.565548922,-236264.591712885,-301502.644388147,-285138.323972557,-251393.537755473,-195626.610283422,-181272.644295963,-264583.523051968,-279517.471167705,-151936.50195301,-298768.06020998,-299690.084113408,-268129.661768731,-273529.440668476,-246952.121184566,-219765.436241103,-162256.924856186,-283625.461266074,-320395.578619291,-190317.816432959,-199329.493546408,-279959.575975799,-314405.968291078,-277341.314168479,-161822.966682015,-289218.650461613,-200405.725778125,-304526.399687054,-219527.187071055,-242178.50760261,-183675.561822577,-298163.380711534,-237769.134143967,-273450.29009326,-321279.330453404,-181453.732760319,-291985.811740411,-182619.876076949,-225223.008903084,-312132.621417512,-280657.385367723,-195825.312743221,-285891.515016172,-237941.381045605,-245550.13246203,-309333.730742347,-198300.910386638,-246437.608606437,-224627.125787913,-226975.756856101,-256899.936332262,-221793.702413542,-290243.993946809,-269117.279329697,-256309.40489458,-274186.245269788,-294006.955164875,-284269.302633,-212148.147179907,-257409.827543188,-314055.83286352,-241623.378341622,-195055.603623202,-258298.268967278,-205056.275635599,-198583.585102535,-267156.588722685,-212631.914148592,-308492.131147852,-299875.738786127,-288801.051600742,-194160.780648036,-219931.427150603,-233681.727364727,-229250.823995957,-192651.628462138,-206096.411487602,-248674.126794123,-306118.905950877,-251247.649339697,-277070.903040641,-318771.9195867,-178630.694307497,-241737.703200435,-216654.990661729,-230316.236385938,-229286.843987937,-222661.014917751,-160095.988430544,-250669.550595462,-195069.489679479,-238881.353163494,-281857.725168661,-250452.666403353,-243934.061035787,-312026.212759316,-185455.081226974,-274402.229139005,-199592.868656288,-287575.941307886,-257290.686265357,-243294.23356306,-307159.857935965,-259628.312237944,-225187.969613489,-259217.216313883,-204732.45297013,-293355.461597697,-209545.328758849,-314524.276198686,-270554.977231412,-209840.467920814,-228758.559844411,-236904.588472443,-316728.509409856,-273404.041402627,-310217.269561733,-277366.219654398,-226854.319773039,-195712.695086765,-237504.148178256,-309344.288761042,-264862.772113653,-310334.099974519,-196340.621677088,-271104.785478871,-187181.748121315,-292638.472715386,-277046.374957305,-303991.497390063,-174872.70954166,-283388.779586849,-218403.874955805,-260509.503903575,-291149.70208339,-267793.699622591,-223870.226763923,-158704.580044259,-249131.436390212,-273910.285961097,-240351.492627509,-320561.674040274,-293494.592148476,-258267.392899923,-289094.55758932,-239446.007485051,-277813.111850543,-177771.18224292,-298025.312512737,-232193.898061865,-246198.628218885,-241181.148337479,-277247.637404143,-256875.758979307,-273435.766081462,-276603.283277746,-256339.169983082,-261072.792318092,-315724.514754124,-223434.492801735,-163106.352651175,-221006.373673329,-257303.781590646,-279775.756786025,-235213.747969815,-283389.330268021,-270591.621207758,-175628.889141977,-293556.243944903,-315580.217053945,-268504.99571354,-290914.757181819,-183646.400215321,-185001.20200263,-286951.948595157,-231290.919017711,-267218.466960661,-238231.482245979,-262075.67182177,-256526.577219045,-221702.148720177,-194364.585663331,-198718.920217148,-170831.706950175,-197608.095228411,-278950.056545432,-173355.84836368,-318908.881705621,-201734.720849406,-270834.971118867,-231372.066923519,-276718.796773251,-233183.974182924,-236075.376936282,-196326.406119325,-301190.725326735,-292282.912307145,-245653.321948773,-274973.413251017,-224332.395055377,-259825.292435573,-277937.51571708,-152292.830774682,-258370.952712951,-252123.846408745,-260730.812959523,-315368.881768464,-274193.169155632,-160195.562110235,-225502.123696543,-207349.589101669,-195304.985443666,-279960.28505719,-265439.287762919,-202257.359739781,-272519.276750621,-251809.517232666,-267169.854786354,-245118.924246294,-236936.900484048,-317290.066127138,-194680.700062492,-189950.221418418,-189415.089413895,-179836.731254442,-206925.889020007,-232051.3973786,-234863.033011561,-235953.924430519,-197864.067622919,-265128.760010644,-276281.847502169,-234136.18267234,-195436.280173322,-236768.238181171,-269298.251670181,-230246.760743662,-294643.622253859,-289252.430532976,-155029.690254959,-244673.780803078,-284159.222646026,-318063.03832795,-203675.903553206,-282817.622509926,-315046.768664116,-178301.348137497,-226718.363577157,-213496.105823751,-166797.929259382,-213046.186423429,-241797.161525793,-260363.455091702,-274532.655116946,-249769.057327935,-308181.459873729,-313212.640557549,-213910.391162523,-191531.896772448,-315271.327918364,-212866.805161429,-204161.824075379,-234663.471053668,-270844.384410209,-227103.846204013,-245817.4443526,-269739.898151869,-277524.69916384,-193409.899562248,-298736.137757676,-238603.367674688,-271563.495637718,-318917.939367606,-292812.579776292,-276652.469176556,-228101.469106621,-274077.094092343,-242397.936903386,-281778.006130805,-193534.995454483,-251711.003909077,-230494.473827802,-215387.433464931,-196010.240734526,-183719.455013052,-228016.715010269,-226358.985415194,-296038.002141152,-166109.188597499,-262916.369641824,-169390.133595687,-254096.965717446,-301584.035791198,-261894.807803084,-175894.030241923,-312523.771070746,-284229.914504413,-292704.773095548,-287432.964698191,-292870.165422777,-189536.161432535,-227243.185414874,-272939.940555928,-254883.83903435,-180875.624762463,-249762.237772131,-245661.694298472,-291601.032570196,-273725.609087665,-299284.919397532,-282077.900746756,-153235.76060387,-284786.729013088,-238827.032956568,-243832.630462811,-161569.179049285,-299380.493335621,-276179.441488671,-243373.917945199,-283249.650306174,-200972.095829885,-269297.389994765,-244405.285719122,-298007.982839335,-243816.704436708,-189078.245814991,-224053.123676136,-285474.583867563,-163024.002500409,-296510.869432939,-201524.382777672,-267886.139304807,-289803.254864312,-221337.970106228,-235310.266684465,-152205.670918309,-274002.924324,-311951.137406219,-222323.935079345,-171889.470950218,-315821.047802814,-289637.75457817,-293005.854896643,-238035.164861636,-288837.838917492,-290118.63659442,-220954.545230666,-297047.058709025,-192000.406153066,-276437.423007602,-162377.727068268,-219735.410055334,-251383.393609514,-238996.362245932,-247151.161129367,-276011.540885815,-192998.640157549,-277077.261729829,-243295.157110726,-285072.293217509,-204358.67145633,-237119.571317598,-211970.453342916,-181152.635355079,-309291.800589633,-196756.626919265,-287687.98578417,-208828.953881509,-274782.480929776,-277583.255896201,-264779.370134631,-282404.972340421,-211291.265683909,-181308.252955416,-275763.070456299,-282053.838247567,-321478.031098768,-228246.025726745,-252635.203683549,-274828.39485706,-254475.953391008,-304983.898165877,-270523.77565433,-272124.141508381,-288347.258743528,-232365.474529588,-288339.283029427,-272691.838093931,-224738.601075782,-286630.251359425,-296688.318865468,-293567.355729311,-187171.281731613,-292587.922723971,-302252.198758702,-204444.335310638,-217635.981904271,-155639.344209754,-246371.604705035,-250031.608502657,-170319.387480228,-247536.821208014,-186724.255267242,-257868.329041952,-164941.554177781,-245532.341559126,-252907.308768364,-287586.667706195,-244537.85146084,-199505.188601259,-265025.89458208,-184415.131173166,-232753.462710418,-173464.893396649,-187926.193948737,-283922.137799234,-263648.36445,-285805.643227556,-239343.136976067,-274872.062150315,-276489.365396815,-164275.478173983,-228971.403288675,-221797.463375434,-313673.925037474,-257448.355992238,-231302.220047741,-301745.355799406,-274790.356487037,-169218.673251836,-300230.195473257,-297325.533551084,-291672.901452888,-286561.28031166,-229017.752136147,-276417.86956206,-237053.365106638,-250995.624793936,-193655.875505847,-315175.590681081,-287674.162870247,-266535.946002208,-174959.621546145,-166852.080723808,-267536.298541574,-294575.976832665,-312760.624214126,-252730.921687816,-299153.317483947,-297918.78319458,-241338.466245317,-242835.258496632,-309439.09483003,-166172.772767727,-289175.372546215,-239529.405109428,-248042.60290399,-220233.031327676,-246785.537498991,-273175.666753423,-169768.426703343,-227397.773141625,-279011.764407915,-267153.34596357,-279023.759459521,-219843.510130298,-218388.907133086,-284504.449844129,-258028.810780962,-179314.275259166,-190063.997410494,-193967.631086622,-297263.858348439,-273017.382295797,-287374.429376168,-282788.516424395,-303340.254577871,-274608.880459259,-230212.808482371,-255921.701398679,-272083.90150233,-303737.896644189,-305730.798198748,-262134.521041133,-193032.453251638,-296053.578706979,-203506.557026705,-312967.838372271,-268484.988114793,-252010.26419838,-270358.323632172,-300850.716082225,-290756.340814732,-238199.434416182,-237992.645017386,-237083.775045515,-284214.093352682,-190972.416313702,-215620.295394555,-257386.176739413,-172209.821874814,-281405.011719122,-259632.503402491,-154798.171914818,-284597.821057528,-243696.171486853,-162037.5605122,-228232.493485388,-236523.665159096,-195002.201883522,-269488.647462846,-212986.16834472,-255237.552347258,-279836.897093086,-307376.074052925,-304803.347681645,-222140.692880058,-291059.577257976,-304241.874246953,-190915.923864602,-227365.488165109,-305617.790801547,-274206.303309842,-303414.005937388,-228891.140645944,-306909.060855815,-276603.169694084,-172361.015881417,-165294.454986474,-255218.429285814,-261756.179306606,-284145.267822643,-251079.658922284,-301856.485618757,-276493.73383171,-218841.373275068,-239203.711942408,-285628.512591342,-278953.371156192,-280837.855291019,-159408.993799937,-194928.844075063,-214646.461737149,-177963.626351814,-223631.026829676,-242371.239843861,-283210.927712526,-253187.830837992,-275961.158911127,-266445.133142855,-295907.410323806,-256053.407642305,-284314.063305085,-309207.359301961,-305354.375048312,-281175.892425591,-290516.334726795,-286460.938762867,-195828.068144962,-166830.811003731,-231364.758195906,-265344.787244869,-230930.037233054,-221566.415155529,-272707.768111792,-300058.742387147,-154143.963044924,-272460.590830453,-240570.406991492,-250354.586004073,-190493.788007779,-294543.397373269,-248081.92371702,-296901.083563232,-190801.66958733,-308623.41934554,-292693.977022916,-225276.939913598,-282524.19327197,-265334.153019883,-203203.895578069,-189564.201174326,-203757.66364955,-297961.915955139,-258419.646173968,-157459.993419369,-292631.071633006,-280343.999879544,-291685.538633216,-273419.736088205,-180668.943322579,-283606.996118941,-235646.440938115,-245631.243716241,-294523.664117169,-219863.767213925,-224142.2133661,-296821.359444956,-285000.892640618,-267574.747881236,-263506.714555538,-233218.750197929,-164700.919750832,-276798.847489915,-283694.322359049,-272423.907299413,-218600.206492745,-245687.799126252,-235377.25019959,-260655.500822594,-241479.961912763,-277577.251747709,-252800.846947208,-257192.93827066,-264167.912268067,-150472.979735241,-307333.946852516,-295459.772031787,-221843.26752937,-285656.468687657,-200287.079296854,-297152.467976151,-270727.512265407,-199628.653315984,-265211.755193228,-187231.260074184,-210936.904254642,-254675.812009104,-258560.047736811,-289214.194933815,-314230.628502697,-313969.019564326,-185568.729301348,-278056.342008909,-177886.14033972,-315540.788826334,-252796.037967375,-305794.400513331,-297542.780811735,-249503.055096903,-267743.317829346,-261350.014292443,-268339.650561633,-185585.376928447,-228474.179377706,-298135.979832481,-236076.435296506,-236244.540386242,-264179.358271493,-206838.076148299,-299429.886987295,-296479.653703259,-159112.232351197,-312251.399445357,-243658.599789639,-159698.946942374,-311484.632613934,-223047.185578546,-247716.318412442,-288866.991452572,-232363.844622184,-216231.208386139,-257158.299971308,-289213.646611408,-311889.284026008,-321804.020200217,-297629.047602958,-250846.250847576,-319009.955016248,-301702.233562572,-248716.687826058,-175486.706166366,-244363.240349754,-240277.699898863,-313889.651438294,-264658.572821525,-278866.062516108,-283831.2625233,-244519.66863987,-227680.449671957,-251273.537886767,-223667.533634698,-203823.450000136,-266687.726797251,-272725.114659444,-271418.449301455,-290921.683063542,-206243.652746483,-249636.596823474,-203011.291617408,-165785.787606839,-255841.212314399,-202454.635327508,-212791.469618282,-292392.994652886,-237391.031007708,-254668.196097562,-236875.495995179,-230829.617663536,-157766.159087274,-172298.022854273,-250141.709174196,-293582.99779626,-316247.963245616,-248788.776074002,-228512.956041531,-212965.073717669,-319108.425337715,-160901.788124084,-183413.048025226,-247579.305670772,-247993.486498059,-197519.807881822,-246201.052667591,-311913.725742215,-198626.807677651,-244231.23617582,-167516.653830686,-260355.068770849,-291936.404661914,-224886.242599132,-215277.214492197,-272946.745414804,-295967.406992176,-229544.211683341,-313497.486245514,-260779.185446901,-226261.753808838,-200212.087044902,-308528.932798643,-282505.737922788,-187614.759523045,-196204.791403029,-205872.685059246,-304062.663360446,-205168.760293934,-278980.011786773,-256900.103260328,-290446.469343775,-218237.945011339,-230093.230469916,-314374.988619456,-247875.076437732,-272735.966435245,-197044.11805418,-282956.798603036,-250449.178514004,-302830.670913761,-262401.601409735,-256306.131290062,-317045.427422497,-277537.237638876,-295029.957121066,-319138.554764864,-224056.964110302,-256060.912873282,-224973.4870082,-267215.373711032,-178217.601960062,-254077.980190212,-256173.079642518,-217565.942335443,-289527.666244792,-167633.659336498,-195760.306781341,-152833.997773102,-317470.09931581,-272541.312706807,-219801.621346713,-228135.509549477,-263241.975353054,-297384.068328776,-233056.254435522,-224165.723732568,-258585.235548892,-268829.02032568,-267981.984501002,-162417.877804093,-280754.827448596,-305477.750311368,-265032.905197941,-270657.154626037,-266247.224317141,-187787.319233362,-198081.790447113,-185009.900406387,-191563.183265112,-296686.573015636,-239285.181910516,-173711.421291525,-260006.089320145,-239635.112306862,-272369.56531926,-154118.011355499,-283081.87453648,-201191.548173992,-226881.65968706,-278291.981294943,-240861.647838799,-259970.266557303,-208699.663014412,-318584.85400894,-317141.871926736,-274209.341219189,-161443.087939182,-205270.724673832,-247228.880114979,-263703.916114297,-202896.404102149,-268894.021207141,-169990.724626635,-281559.915339092,-237696.955355692,-232804.332042479,-220864.485543486,-158351.474385798,-296198.283566482,-230847.937837273,-168068.678411101,-237063.64587959,-253458.102617184,-285252.186150319,-245125.814383638,-276258.379049161,-248417.678473184,-232233.095130395,-316958.081586486,-256129.540811295,-315104.964323814,-261196.428134085,-202447.372868,-247787.952325739,-265744.726749409,-308274.001527221,-316111.788228812,-219446.66859292,-187120.42764081,-281848.526162151,-215855.674127652,-271118.477934882,-237493.779586626,-155161.493026553,-300931.323467699,-277967.80572177,-251448.467975613,-283534.709916084,-218736.423060121,-272655.59619649,-244745.517957754,-212211.32981556,-232036.436995066,-211558.13031613,-225291.49839967,-165605.767844988,-198140.768854284,-267011.358039776,-230984.020862197,-218910.421436341,-249447.137279524,-281848.00215318,-295740.488608899,-189497.975186019,-231535.502382069,-229379.501583857,-226380.295052851,-214509.180640469,-300105.272315281,-258654.583999241,-280697.149628788,-240823.406433444,-275997.655736755,-277965.368934902,-258126.57673857,-200507.52740316,-236022.798405986,-266241.244119197,-163353.303309522,-201130.853673731,-178797.685696727,-312942.254468921,-319038.551608292,-218787.235418908,-314053.481536564,-286897.069904985,-171974.935942396,-175859.734507993,-236132.700033952,-230626.865383714,-173029.913513852,-298291.52086364,-177090.838969947,-192680.978044912,-301333.283346162,-223231.084422038,-246482.792041992,-246915.24568625,-171865.794200015,-193415.944172652,-154347.39392362,-273627.834965096,-165187.551894606,-217282.15899946,-285646.984270444,-196415.368435917,-233213.809852967,-313406.137039029,-269079.927542064,-278261.627966454,-208849.777976228,-272867.179878191,-286561.52108725,-230024.466812128,-283090.290069744,-273205.30229123,-260821.451088738,-167293.306982236,-286209.420263165,-185890.526331032,-222714.21725097,-283326.587088645,-184998.14812625,-254542.372616695,-288308.135522523,-268829.746099878,-307873.208693667,-177646.780553706,-183368.328903715,-152978.933065913,-188913.678693024,-270694.410974363,-242967.260311799,-255473.246429244,-228541.098661815,-285318.719141111,-284189.03690573,-278267.012848113,-174491.162788277,-277090.00541752,-227285.454504138,-290097.560293168,-257748.49755286,-233318.815226752,-253824.9163358,-277929.119053945,-152856.493870129,-293493.909739287,-285922.028377871,-277813.877905208,-233328.787727114,-269555.91511857,-190914.391755271,-205391.276856703,-299352.265618313,-307739.085440521,-274177.142428359,-237960.461649258,-252295.763627454,-217911.890771655,-249807.460580936,-171311.008955997,-278980.458863679,-281062.91260781,-217727.414574789,-185002.022853248,-278431.949752034,-196384.027691633,-254142.926638609,-267771.633365332,-306026.234928134,-237494.379620444,-283968.12339672,-289296.924301599,-304367.814577466,-275434.435000682,-257161.788767876,-272581.01455129,-305597.87519468,-262660.294005936,-188914.934282386,-267852.655712204,-268002.127456637,-298747.241740011,-238348.690061347,-307295.05206894,-226325.779975552,-188348.34105506,-321005.585663233,-279422.477848974,-156885.703175235,-303789.7265384,-288825.717399732,-189662.208814742,-235396.639620165,-308240.98732908,-306950.874340327,-197974.626439421,-289941.07158235,-302913.857337847,-209352.445738009,-274678.538996633,-302472.608943306,-274191.650291681,-253172.474726077,-249518.034169122,-283898.85460009,-234049.046040741,-216822.538175439,-238704.098601337,-185207.432010963,-155289.045845889,-201750.036317966,-272048.865297275,-295741.245047056,-277966.554487054,-297258.727669194,-257274.073112532,-230641.478847181,-283476.633283355,-282862.366126316,-267228.39845478,-163865.30797491,-298370.899513398,-275355.298215176,-200814.235405834,-306500.203400823,-244009.159976546,-237879.898898897,-264623.817309641,-258360.033258706,-309713.260932122,-273769.669931979,-297627.683873241,-189533.687812626,-257433.425184003,-178072.336802878,-192230.148705189,-153153.753744299,-304286.81400382,-269804.83716108,-276696.039034626,-173456.614490377,-281636.745795643,-274288.927984698,-222078.285008361,-295454.107727062,-309517.3606865,-262327.622520007,-248247.774733543,-150544.030126083,-240261.555777613,-288773.963348924,-286688.413270623,-244242.818080464,-213011.580783916,-274233.117037569,-284219.761830608,-317984.876620077,-311991.905231555,-217141.638409649,-152205.356113751,-317493.306852994,-298855.622871032,-243151.724351948,-291492.549467899,-267551.130644518,-251134.105051034,-267681.180489981,-279726.007142107,-299888.990515757,-263697.958959684,-227344.703080753,-234323.402658561,-244157.72849499,-265504.761849158,-297115.202918535,-270384.632402502,-183705.285179063,-157861.442171353,-313679.40027802,-242289.644316817,-292084.096445127,-246526.314724738,-290600.52562237,-260439.268738601,-300826.977096885,-322356.160178729,-305502.799137691,-265225.512061699,-234982.283881295,-181347.596811777,-225834.633879157,-255007.765885796,-288420.506415752,-286083.987793147,-200717.711973651,-197853.086296424,-235278.611679953,-247830.514264891,-309161.644962581,-181417.690087895,-254274.825938171,-181118.440140875,-237543.377543737,-283187.161329211,-245277.907443028,-275775.51204048,-308153.123834622,-258986.51374394,-293432.225464465,-267545.555972907,-269363.334019796,-257946.947987569,-227679.642248163,-178355.9390582,-184830.462715444,-252723.296885541,-229691.694443585,-255218.316790813,-288118.56801966,-224671.032042323,-278487.418496628,-217040.168100536,-237076.492082886,-234567.501205754,-248308.374883157,-258277.55228714,-317449.382635673,-259546.185807074,-268358.850373698,-222649.9479499,-232519.936878847,-206122.663103214,-307792.66553921,-322292.0627047,-173638.853851167,-315603.198875353,-266958.269108775,-187113.804406926,-185142.783311431,-247047.073859941,-271113.671495259,-234861.388588673,-299065.231721142,-294667.426014546,-278042.40478555,-225198.641397289,-161047.831311208,-280618.331095267,-200071.085811129,-265298.773342189,-186542.219486114,-208176.986202336,-239559.885811288,-172226.567844317,-202817.132141198,-181970.162289546,-181052.091496729,-273832.264690532,-234811.863027538,-221294.557922603,-184322.960390289,-187027.486448622,-242787.991181913,-281816.885491679,-257147.248789046,-226582.622936211,-254570.02406929,-207212.949770823,-273750.51439214,-164287.704384671,-150121.796108299,-234430.264744187,-269969.345858225,-203480.442038086,-272081.058281911,-300948.869240368,-239961.006331892,-188776.647081224,-317979.820695574,-310366.048917582,-230365.633847927,-209235.202722592,-283466.660964437,-173124.209000691,-244103.969311517,-175236.365598187,-286562.748189974,-180433.548078119,-287213.739521408,-272256.904479239,-279810.840166403,-282416.741131921,-198743.640630647,-205278.803992199,-295066.11990912,-295482.610512791,-314200.799908952,-237548.390103232,-171744.329174648,-289198.070952799,-230110.834123077,-242112.784575822,-177586.173146349,-308929.586646437,-190429.638096564,-156000.274984169,-237561.564175022,-317744.05566916,-184671.459922805,-227372.057147371,-275228.112274696,-230785.410575721,-317299.096935477,-269616.427812394,-271135.006353569,-214279.630055621,-261542.544042693,-221516.402599908,-195362.627156208,-273794.898387416,-215991.481176937,-246214.121502123,-249368.491298818,-258816.573897032,-190090.437001623,-267169.312270142,-155583.941510612,-238124.413133262,-223218.579876946,-222790.708589526,-192171.392022036,-231373.675057697,-306146.006903743,-305706.261950452,-290001.072061034,-238335.773095067,-313449.463399856,-176545.328757285,-173444.140972132,-270613.897939534,-181864.961319615,-245771.020206056,-268726.532299699,-265204.501987341,-278645.386153817,-223003.49016154,-276093.387893619,-293429.738780621,-292341.758079081,-313230.825192955,-237822.757244777,-285235.497698421,-272171.396122052,-302831.531500516,-259884.788501189,-272579.376116039,-236538.400189741,-251378.172208494,-215906.312844962,-167419.294306628,-186205.4816688,-154074.352771534,-242233.657732332,-269357.056980205,-276479.497952269,-291989.051233542,-317569.102355539,-281861.105824873,-290827.842092794,-188114.419132221,-187552.443643227,-239693.939208669,-244084.358711257,-282308.171843938,-289863.598452747,-303943.653810632,-209431.107504303,-254458.933804632,-304138.185064674,-288736.020781095,-271094.646050445,-299342.274247823,-201280.896965345,-274471.880418637,-301214.534167841,-238773.721212888,-266207.60593669,-251106.942951692,-205977.233921062,-264410.163901372,-236326.7684255,-224118.918191682,-194005.59306891,-320950.410312858,-260328.669278745,-206379.681882672,-248130.059239123,-231907.727835989,-276963.743931925,-309900.179359164,-282158.141434817,-197182.017510477,-269017.506062101,-296835.818499963,-302831.130873159,-276220.347755436,-238601.365082233,-240739.041896393,-293929.282628812,-220694.947956927,-251342.516736605,-198465.089400853,-263822.139106324,-200025.860099227,-302743.126034176,-179406.370198638,-277696.708192985,-216697.599594762,-279510.483958062,-313543.059058925,-212712.469096881,-292593.003869128,-270784.621078244,-273447.882337359,-265544.487825634,-174065.508196701,-151920.43911847,-313059.930227203,-149515.911461799,-290642.069481767,-204199.350411706,-312934.945015534,-255648.211536695,-296034.712751045,-310459.456238247,-301080.391137347,-267863.211372133,-281728.229270354,-274797.764645714,-208444.438711658,-300083.356837613,-272563.073594571,-253762.020380955,-243376.353824849,-311831.010708471,-209365.351273346,-264038.243091171,-178241.061885223,-161552.03989161,-321461.193500272,-256225.871731872,-282273.011350052,-203995.126624699,-320665.59873628,-233616.510383998,-275656.965897491,-210280.334078396,-313687.578301678,-266052.303322354,-270543.912077997,-262240.850408498,-258964.103651156,-168468.011712743,-221419.822738782,-190258.387864343,-311271.153028586,-262396.714227732,-261014.957005283,-288170.348561227,-282266.101253917,-280389.003867428,-304682.732719306,-211561.670098335,-207325.680103723,-280299.256263154,-250039.979037921,-169814.983122235,-312387.042651117,-272199.238090374,-247370.7477417,-224856.044041991,-168756.816861843,-201394.645559444,-231933.868952479,-268947.311359039,-307306.745561367,-252821.452765337,-308776.207515168,-285880.353516232,-221784.421757435,-274397.577833616,-239505.71837983,-246798.652964514,-159000.936329554,-221610.898400427,-291732.126804729,-171969.28996347,-199143.726923018,-200251.141680245,-220706.443675885,-165651.914020016,-315992.67961082,-267908.749348383,-278473.908935715,-284265.890587054,-217070.811012929,-288838.052839437,-275254.638051511,-248531.187198912,-303109.045054651,-203383.341252529,-250609.487518754,-231505.31217133,-192518.240055366,-273022.921585916,-229163.758671673,-285342.640114331,-166651.220900206,-273147.249790493,-243372.703362079,-195667.615618365,-203946.140132349,-295017.874432226,-279185.34074644,-235650.705224413,-241373.080412677,-257350.256904272,-270802.390389366,-195290.204507803,-255467.763930956,-275349.481860757,-250482.225371983,-230859.353176739,-224199.62954431,-217556.476425472,-189325.27122808,-252584.059283067,-288243.201230844,-273467.669663637,-197883.275962831,-275455.684580525,-263932.935795319,-294572.176497523,-301366.574427159,-283346.933805385,-246659.809275987,-232860.592062393,-304190.712065003,-286835.327749671,-246532.331211392,-176742.502736625,-296613.067330685,-282584.396604542,-294474.649501069,-200044.251761723,-259376.914216759,-306117.845231887,-268321.774017374,-293040.916322351,-265166.631271158,-250408.420849506,-293634.977018512,-187128.68041921,-299993.029702642,-245283.575558068,-194516.974475707,-268939.624684512,-295374.70022778,-242979.514464794,-315358.189662986,-306077.109159171,-244958.889221303,-220607.092264542,-287393.35811157,-236221.02058471,-229305.391691886,-307778.855144892,-314119.583054596,-280015.349182669,-196656.456108853,-274573.842621212,-315529.0223936,-306950.547197607,-305119.050022506,-297681.050957203,-240685.749748617,-229812.518610336,-209398.229570268,-261211.403395989,-206454.699536721,-313904.205751164,-205949.363466102,-305079.294289288,-261733.214178005,-243892.662512673,-266792.716385447,-204982.080283717,-267199.126892733,-248187.776795068,-240524.465484788,-288894.266772689,-282986.462264594,-233310.193392173,-272455.439103755,-300430.32335358,-152973.42371398,-291821.235546266,-300771.517061581,-274985.811651633,-267845.968247305,-170050.81310544,-285024.993605839,-195003.282379858,-222642.620896488,-248907.644642178,-311484.967558726,-240043.239451569,-295867.276099344,-236753.148246943,-227227.961212419,-278003.88704167,-177841.416863563,-184273.56800872,-220469.403101319,-291484.139015055,-235753.488277606,-289937.848963469,-245048.507819214,-213175.870297253,-207633.846549648,-237204.174815804,-317048.208770666,-202039.613509369,-217581.738629409,-302049.504359372,-235551.049895124,-244684.865370953,-260075.049662741,-287123.076897314,-210855.01079729,-242511.511674566,-237146.284888486,-181468.908335902,-228271.555378474,-186563.34296269,-253828.832250483,-294203.793836535,-161574.990141841,-155220.068810487,-228620.528841541,-283025.032808547,-318108.887842774,-252727.1093774,-272694.046987701,-294732.88866984,-264635.095477783,-177774.719303472,-237866.060199386,-153944.69194104,-272054.056578666,-302407.115079721,-282025.388443355,-226569.296814726,-300098.762483617,-293924.944857877,-242446.695502638,-258431.848615551,-319785.188366572,-315479.569046998,-262916.794401173,-277090.210811618,-201257.000487004,-167108.433968327,-221817.811362279,-298456.301544665,-235137.071014507,-157357.552750154,-282443.06931671,-272644.094127007,-240871.231868521,-270960.049592521,-304153.221835942,-304009.555740759,-204806.401558785,-314906.91850822,-185694.554415207,-241589.381445218,-319505.371023691,-214681.404135889,-222258.768177036,-265581.451142627,-177107.366118529,-189990.964748876,-275590.111570173,-246881.573755243,-309732.119811758,-259660.453511169,-265814.605377809,-200152.65666185,-268633.580765229,-198486.031433879,-234845.220516874,-270233.412449471,-256018.828856438,-227105.430206199,-293261.483818512,-280221.686605583,-254671.799022122,-314842.020323808,-276925.403821279,-233248.507121472,-167342.304361198,-287067.5918228,-276118.517825208,-302609.265511289,-276384.541103691,-299518.977040146,-229920.512540824,-313013.09311514,-156938.157779587,-263575.566213448,-298155.487191362,-157766.401677299,-281953.126372491,-176689.825682481,-240222.768408618,-276173.462197945,-253702.475869911,-177708.758585634,-231950.488637272,-188773.681023522,-191587.646573101,-249967.093164134,-281566.620766903,-211039.015785259,-238399.256564125,-183784.083753793,-290436.759573673,-301982.313091383,-280275.681847113,-228468.688533015,-293777.091771348,-298947.23444489,-229229.126794879,-287313.255864937,-281357.473146297,-176845.81088745,-290001.296143817,-259968.574777649,-298785.020827202,-250629.148378878,-317815.306373679,-239258.920134065,-219105.50663754,-259131.940204439,-314286.255284623,-206644.960698272,-232039.051778056,-284677.3568374,-262826.857369833,-235956.765473616,-272150.265387734,-182076.369726847],"Archive514_field12":[-324668.772108201,-314529.362758491,-243553.497310526,-148496.534657002,-151031.38699443,-235948.940298245,-324812.754738928,-324938.839043616,-325048.007071172,-325147.433639064,-325231.014114355,-325306.25227335,-325370.66096643,-325425.645729404,-325472.985541198,-325514.029542028,-325548.240771759,-325575.288328148,-325594.658319779,-325605.966517668,-325608.832370887,-325602.878342129,-325587.731440153,-325563.023443512,-325528.520346199,-325484.738507123,-325433.070505159,-325372.471569539,-325305.491851985,-325230.171234476,-325148.333426304,-325060.244513121,-324964.488856809,-324854.642220381,-324728.523918441,-324585.595655532,-324427.881808102,-324254.530575587,-324076.313929428,-323893.231869626,-323695.566674623,-323493.793848941,-323291.544462707,-323086.80386858,-322885.014700172,-322687.120970452,-322495.154823357,-322305.490946567,-322110.305697131,-321909.560345892,-321703.383155458,-321491.344649788,-321275.034990014,-321052.57341684,-320825.821502192,-320535.680186785,-320088.560232324,-319446.371139231,-318627.303056603,-317697.100681352,-316665.162984691,-315830.118500409,-315237.554207654,-314820.953336602,-313315.134024711,-312138.13093391,-311002.919003796,-309912.393345062,-308867.428348686,-307866.846752932,-306912.659896706,-305997.262683367,-305095.534109145,-304168.76344561,-303211.192633923,-302225.068883097,-301213.159650225,-300177.818594337,-299123.116500232,-298051.849816703,-296967.914875902,-295866.365917068,-294740.627357307,-293590.495433784,-292417.261587959,-291221.97847069,-290005.031313356,-288768.899109232,-287520.912075518,-286307.141822172,-285153.628255532,-284046.811802477,-282986.492038684,-281962.348665061,-280980.889290358,-280035.931828174,-279127.817765297,-278226.006227408,-277302.092814951,-276351.793272871,-275373.313409254,-274351.941873475,-273261.965979502,-272171.99008553,-271082.014191558,-269990.613713713,-268891.885355282,-267793.156996851,-266694.42863842,-265607.748891669,-264605.119788897,-263602.490686125,-262639.694166691,-261702.656144233,-260753.324971119,-259789.050303393,-258824.775635667,-257860.500967942,-256896.226300216,-255931.95163249,-254967.676964764,-254003.402297038,-253039.127629312,-252062.120147992,-251062.828464918,-250068.639421293,-249104.770447777,-248140.90147426,-247217.401918603,-246301.425766584,-245385.449614565,-244469.473462545,-242475.196230804,-241396.895151082,-240318.594071359,-239240.292991637,-238173.332866034,-237117.604198882,-236068.632738647,-235027.332887727,-233993.773722218,-232940.921348007,-231846.021340696,-230715.186058949,-229553.343358555,-228368.271973229,-227171.005381368,-225967.306779774,-224762.796179761,-223556.126825407,-222348.973216917,-221143.557941577,-219943.792608073,-218760.304948909,-217605.449857584,-216486.664684053,-215409.983875598,-214365.483933969,-213315.653796926,-212257.663126164,-211195.369191567,-210132.543278816,-209073.759129208,-208024.432612198,-206997.716042859,-205973.412347439,-204974.703840375,-203995.477661924,-203016.251483474,-202037.025305024,-201057.799126574,-200078.572948123,-199099.346769673,-198120.120591223,-197140.894412773,-196161.668234322,-195205.007388842,-194252.006285768,-193299.005182694,-192346.004079621,-191393.002976547,-190440.001873473,-189487.000770399,-188533.999667326,-187580.998564252,-186627.997461178,-185674.996358104,-184721.995255031,-183768.994151957,-182815.993048883,-181862.991945809,-180909.990842736,-179956.989739662,-179003.988636588,-178050.987533514,-177097.986430441,-176144.985327367,-175191.984224293,-174238.983121219,-173285.982018146,-172332.980915072,-171379.979811998,-170426.978708925,-169473.977605851,-168520.976502777,-167567.975399703,-166614.055201502,-165660.073197107,-164706.091192712,-163752.109188317,-162798.127183922,-161843.360274937,-160888.556273606,-159934.210097273,-158980.3886324,-158026.567167527,-157073.545079754,-156120.543921671,-155167.542763587,-154214.541605504,-153261.54044742,-152308.539289337,-151355.538131253,-150402.53697317,-149449.535815086,-148553.742427768,-148610.161856703,-148662.242783453,-148713.778659565,-148761.52663114,-148809.274602716,-148853.609333611,-148897.622027109,-148941.121286406,-148984.525914563,-149029.031728039,-149074.73087015,-149121.628444208,-149169.599389606,-149218.637802016,-149268.733591188,-149319.87333505,-149371.847185896,-149424.115626125,-149476.503923749,-149529.008859812,-149581.479186598,-149633.763521546,-149685.700288505,-149737.221583038,-149787.839007026,-149838.068019051,-149887.867673227,-149936.94448094,-149985.741606739,-150033.550171861,-150081.343428716,-150127.800113338,-150174.256797961,-150220.566574347,-150266.824151218,-150313.081728088,-150359.339304959,-150405.717330477,-150452.67813623,-150499.638941983,-150546.962739837,-150594.317163374,-150641.944617064,-150689.925253866,-150738.228367004,-150786.797683219,-150835.572020621,-150884.485524734,-150933.470060723,-150982.457793639,-151876.744583801,-152722.102173172,-153567.459762544,-154412.817351915,-155258.174941287,-156103.532530658,-156948.89012003,-157794.247709401,-158639.605298772,-159484.962888144,-160355.09214068,-161226.393090123,-162097.694039566,-162968.994989009,-163843.00666916,-164747.444494236,-165661.471159569,-166583.384663861,-167512.309756728,-168455.921230433,-169413.060921399,-170370.200612365,-171327.340303332,-172284.479994298,-173241.619685264,-174198.75937623,-175155.899067196,-176113.038758162,-177082.113315181,-178059.524200164,-179036.935085148,-180014.345970131,-180991.756855115,-181969.167740098,-182946.578625082,-183923.989510065,-184901.400395048,-185889.959215828,-186879.746381034,-187869.53354624,-188859.320711445,-189849.107876651,-190838.895041857,-191828.682207063,-192818.469372269,-193812.993160246,-194817.518939724,-195822.044719202,-196826.57049868,-197831.022277223,-198834.766026578,-199838.509775934,-200840.824541983,-201840.58109883,-202841.340405712,-203842.300792811,-204846.883604159,-205852.75445527,-206860.03313248,-207868.148794768,-208876.299532824,-209884.482480518,-210891.44019815,-211894.669601964,-212892.246373932,-213882.905164503,-214865.182835623,-215837.637060309,-216798.27824942,-217745.315323106,-218678.459135174,-219605.791837416,-220535.255643467,-221469.476458582,-222406.983896849,-223346.228919939,-224285.553628331,-225222.81887628,-226156.406767265,-227085.225692534,-228004.930993239,-228919.519683272,-229828.74895221,-230724.038572764,-231619.328193317,-232496.728983554,-233372.28404448,-234238.130796282,-235093.535547263,-236894.204153338,-237839.468008431,-238784.731863524,-239729.995718617,-240669.287691101,-241594.01744445,-242509.858882151,-243415.763103652,-244312.368345698,-245209.190290486,-246145.40098442,-247136.918245419,-248188.054697415,-249303.65283152,-250488.665833245,-251751.870467418,-253117.191288557,-254561.519475945,-255931.875897714,-257210.514897232,-258408.025183034,-259529.12661935,-260578.895221829,-261562.904130181,-262484.216885114,-263380.010306067,-264274.992782993,-265175.653337436,-266085.026334163,-267000.736674965,-267919.297473336,-268836.335265389,-269748.001453089,-270648.584260369,-271541.437629356,-272428.14794823,-273314.858267103,-274201.568585977,-275088.278904851,-275974.989223724,-276861.699542598,-277748.409861471,-278635.120180345,-279521.830499219,-280408.67088657,-281296.538184996,-282186.298222665,-283076.478527235,-283966.733646432,-284856.712492929,-285744.774362136,-286632.836231343,-287520.89810055,-288408.959969757,-289300.817818094,-290217.894948933,-291134.972079773,-292052.049210612,-292969.126341452,-293886.203472291,-294803.280603131,-295720.35773397,-296637.43486481,-297554.511995649,-298478.875079167,-299411.908069894,-300344.941060622,-301277.97405135,-302211.007042077,-303121.705218521,-304022.933728845,-304924.162239169,-305825.390749493,-306726.619259817,-307624.791844754,-308522.102968931,-309419.414093109,-310316.725217287,-311214.036341465,-312119.299628312,-313023.62492187,-313924.318319167,-314820.66539532,-315711.003949321,-316611.016825317,-317537.527458154,-318497.210178577,-319480.347636676,-320488.785964506,-321518.504205639,-322559.113865136,-323613.942986668,-279918.87909489,-178574.142344913,-288763.777833836,-192908.300140086,-194922.355472293,-160663.826179174,-251293.850129233,-233613.255286722,-252918.175241093,-212317.477920819,-233414.088149993,-210684.912187276,-279333.913075198,-249190.526203721,-227343.267862278,-237933.820474346,-204939.246905014,-176562.98321464,-172514.260744459,-270559.424231364,-284700.9731669,-259553.882642439,-251839.209380861,-182069.245708767,-185302.590624767,-231150.827179007,-257982.657348192,-169876.430068895,-244124.535756396,-176900.963557381,-195564.134007507,-255322.454682989,-241549.757077129,-287625.80272103,-188306.390943556,-310049.257371094,-173639.101340169,-259627.003304179,-295722.703875076,-260025.511582001,-251592.600743605,-219065.013154851,-201152.331146672,-219467.370939017,-244048.80357765,-305257.490906354,-241728.403855642,-176957.293614505,-221826.191876938,-224317.589624635,-237304.256718877,-233309.676640944,-169139.738594443,-195333.692897719,-288757.550328334,-221461.806961673,-233289.609165826,-196773.949697811,-275629.129009589,-186215.137731611,-222061.570972923,-289637.357761127,-181113.043283942,-279528.901748429,-170264.579371596,-311444.70940832,-259351.059236746,-166589.043461817,-234282.803394281,-298621.476502522,-204643.514059755,-301657.67030107,-279821.384758275,-248792.076350722,-260707.275013636,-159944.297812946,-203069.79319093,-311916.505457392,-279236.418920026,-223314.663127078,-250855.125977351,-245370.141731147,-166113.758434734,-211772.786200009,-308995.535389,-239506.786900892,-311294.089670551,-303508.397044978,-297646.126521375,-297498.726680832,-185150.499742699,-231805.664025026,-302844.661481524,-298744.717315908,-263379.663971946,-270949.401577826,-303431.349400499,-245624.381521203,-299843.307566111,-239456.995343515,-290844.739386217,-279528.901748429,-191614.373026481,-266174.501198218,-293772.817324212,-228525.444438148,-185758.864359632,-307655.126792689,-212860.660394185,-252376.73353714,-237957.149578708,-245072.900182775,-271144.390251056,-197868.545105387,-223093.618071494,-279138.924583411,-231261.349888242,-234592.794617982,-220110.074292002,-271046.895914441,-280016.373431506,-270656.918567979,-161139.111024813,-263184.675480159,-212482.50736095,-239208.03628652,-279431.407411814,-251791.767698891,-215325.502789768,-310671.673702266,-227837.413220544,-202869.117532531,-176619.313271764,-315964.612833941,-160787.928305089,-288441.272992866,-299681.920968121,-209597.0379931,-280113.867768121,-203756.315886865,-215367.976547356,-288538.767148038,-194642.369386911,-243236.64102172,-206333.415592015,-240978.602903303,-212554.064160738,-261121.625853529,-315255.312259147,-306648.563803515,-226651.967213357,-212447.992624656,-264311.663278832,-183181.764291595,-267408.268707146,-193951.046057547,-235179.431732764,-261787.546904536,-211750.565352847,-242793.041844553,-185606.773114677,-200057.735739096,-271241.884587672,-231316.799762708,-252211.979891204,-159100.667139359,-230794.740765917,-207421.289786191,-290788.275060867,-257486.132539219,-252589.132263264,-204436.117187956,-186367.228613679,-193720.604947759,-264173.546634606,-218849.752156735,-257082.14031156,-270461.929894749,-171389.419967306,-227122.222625251,-256719.873386847,-297706.171090841,-293734.555234292,-274849.174498109,-270949.401577826,-324074.616026687,-215338.240489822,-157121.111120744,-299415.598670668,-159559.873727757,-282362.508743672,-316493.586644398,-177489.553549085,-236985.559289347,-295749.498914118,-239805.973887001,-291622.771503291,-180116.417776525,-208108.852697995,-152994.885401331,-239288.280059121,-268432.441700005,-199638.864051726,-279522.598580967,-274940.549469578,-152137.797785461,-257474.347599243,-218276.227604379,-240238.110730823,-237793.556627157,-153952.440306373,-174670.40669751,-284951.701298501,-170930.412966813,-277149.623776089,-171952.483754709,-192284.015121799,-166129.530052377,-267805.454987268,-310747.104866163,-250576.735143655,-186593.864670793,-235107.043195746,-311966.731753514,-260844.496415388,-188067.840395772,-226668.48873719,-152151.030463517,-245375.81311217,-302488.824008983,-247562.778159302,-213476.988387058,-152839.666613915,-240235.322669243,-290034.966986163,-286752.797788347,-178930.426712915,-202714.086720633,-280105.38999972,-261413.95880956,-306295.302829376,-268805.960483546,-291887.532841888,-269681.931836818,-290989.961178393,-224137.543009139,-311767.351420614,-229397.671522335,-282016.388117531,-287321.238836779,-175538.041989793,-171365.560140562,-155003.18625137,-304515.656051608,-296868.872615684,-322912.78326446,-199988.492163119,-318735.197226741,-294175.973459996,-277310.906225482,-318529.123985635,-158774.910829984,-194700.101458341,-271035.867956953,-313000.096313698,-182546.269146496,-293808.093579083,-215810.009503805,-285228.653829182,-230794.381507689,-184368.372081829,-298555.95669251,-278966.151676923,-268944.443825184,-256556.804444267,-236738.338098668,-279846.308569992,-323171.134202457,-243074.724608566,-284457.265267669,-297224.978806121,-310827.337752152,-247623.053162076,-321462.671357982,-269145.382758173,-166502.07974592,-183402.020974956,-157364.980504735,-264007.011394459,-267232.769611329,-262846.954601694,-154965.81414206,-301037.721420726,-210356.444748386,-318980.622307724,-190964.449853223,-179333.168975963,-226571.311201011,-314660.600362087,-224218.75242431,-162317.592865688,-208299.496523992,-175095.411358293,-180277.75048578,-297062.945361878,-200995.410418763,-304152.672424875,-213898.474857418,-166316.657865274,-215182.355986024,-314607.749666466,-229302.524158031,-179681.769935423,-238772.072435355,-191054.503915652,-316852.304896172,-280305.177854832,-292883.859693223,-183894.625514601,-292031.385823927,-288762.281650328,-309459.238874326,-303193.571620792,-259052.731567287,-289122.987979072,-290958.276961469,-301120.569815479,-236360.252199546,-245636.848870368,-218322.865309982,-151985.540882545,-212322.701499162,-306652.162917761,-268341.597450918,-243263.822716966,-212185.343651861,-263046.480270877,-174647.649503216,-162634.841468476,-313511.214808791,-250251.994555269,-156626.696137363,-316774.332071035,-278932.073130922,-209946.636892082,-237542.46216103,-154336.463945649,-255664.199797936,-155182.579488644,-174262.67600696,-192034.814200553,-172946.616590645,-295474.511417077,-299437.683979499,-237829.467934451,-256426.06275455,-320083.43112045,-225568.582658367,-153100.245678699,-203789.116344504,-159300.517955383,-250101.751675751,-225334.080297613,-237141.641929501,-273857.090522733,-240424.312092957,-264102.383204434,-253798.278245428,-313595.803247183,-281385.058371996,-293972.818194051,-206232.114206847,-156598.212403207,-209839.466170978,-322238.143850905,-235967.542676118,-315300.881806574,-189261.555511279,-174263.116551898,-243917.470381962,-322848.404734373,-165733.759213384,-267724.776294479,-291661.431136027,-273983.312272191,-283460.030654256,-270645.605381232,-316441.647339726,-262915.566572675,-318018.063915364,-248772.89105414,-304064.622587892,-257386.909589909,-152986.420333978,-232929.232882898,-151509.084274464,-252443.849324613,-317242.574185304,-220009.638755451,-165088.881985234,-184551.523922228,-235467.415668359,-300794.913844386,-286044.687483238,-186899.996771641,-251124.33177569,-160024.787985887,-197975.012732737,-181391.65402722,-264854.064637718,-279506.040405537,-151947.374231933,-299088.148767203,-300339.405256969,-269617.623888271,-182695.901287027,-162497.126177382,-304095.044683486,-186685.139122535,-167512.651367431,-251761.841307074,-250438.881229689,-253136.467435145,-252722.692859965,-222990.964931883,-215712.754128344,-163374.738687559,-260191.15230545,-222972.759611912,-215095.952023477,-277828.938445581,-321978.563995747,-193369.643589165,-295148.631181758,-201623.303079142,-151075.924089024,-194030.092484166,-313877.536996833,-279946.839182963,-188522.488577878,-285940.5260034,-164596.323350807,-288978.119638931,-156632.992772857,-198867.643688383,-305075.377467387,-221400.196715819,-153118.274454097,-264953.543059546,-182709.956085806,-321251.880040262,-231066.01556505,-302525.78750742,-295922.25059171,-256483.112598234,-239380.242000473,-153320.972300853,-272006.873453754,-265278.302518061,-247492.100090624,-299634.584341966,-281921.513462882,-290329.649091828,-265726.245816687,-213974.632884174,-181500.834417077,-186351.381878406,-192950.115439033,-286253.520662173,-315239.061086203,-232659.218027772,-151112.71322021,-163830.67330443,-322876.275915106,-215333.858990992,-171712.011719737,-158580.982694299,-283730.451217158,-199835.312619755,-296742.823781929,-292172.066265505,-181634.242419752,-203362.857545908,-151493.495914806,-241226.629703341,-267006.340944192,-201480.770280368,-279523.534103907,-275033.661218702,-154418.967597658,-262688.258992984,-209004.118213977,-152373.44904677,-170724.361680376,-275719.489711617,-172993.059062988,-193111.411496692,-167459.034980032,-266887.465299717,-310823.398612695,-253758.613959759,-202166.728505421,-234626.459109803,-308737.612294892,-250488.901768826,-297847.40620535,-243572.802392878,-245962.80694497,-207499.612797379,-151716.801938458,-213938.450318774,-151274.028147998,-240751.153797645,-291212.523646379,-286241.996819465,-180096.806631933,-200384.468214767,-280669.220386119,-263797.692491142,-307375.914745488,-266203.245848198,-292952.031663597,-268154.79061166,-222632.262828585,-311841.928529725,-229842.832565575,-285682.65135472,-174223.889000852,-156914.358554989,-303328.065381667,-295766.47386538,-156694.843975745,-320904.630290913,-197239.542554817,-271047.058306418,-226807.139551224,-275092.910339648,-316444.57057675,-158701.167998313,-194504.935151875,-311930.186663902,-182374.250500843,-294316.875988478,-214347.798578567,-283150.279117484,-229079.095659983,-298771.061104843,-280070.427642189,-233944.530383096,-279859.554674871,-319992.359341152,-246406.199639378,-296521.666412788,-249862.367757745,-317006.39147584,-271707.245559821,-163952.59393455,-181318.045463776,-154580.086929299,-266483.657781591,-265287.200691166,-263126.431012146,-299782.70759794,-210807.265741706,-321223.734335438,-202126.228127876,-182023.624087041,-320651.045512071,-232244.424465618,-221268.354570975,-177912.890199318,-202360.42221604,-176322.391971256,-179571.272083954,-199015.590944114,-303344.083036763,-216756.1316508,-166220.28974877,-218198.596074558,-313747.81284254,-226845.323438974,-285546.116898245,-221947.98531513,-192547.712112536,-318396.64334094,-280801.595430667,-293799.47718781,-186419.171910109,-291306.514308056,-286360.109130927,-310059.436898545,-303052.23816388,-259556.790638205,-289510.538880948,-283906.949704045,-293182.463338321,-301665.788448356,-237701.618273468,-247258.258002946,-221320.227467308,-153754.045211946,-209325.113626061,-305155.683112239,-228073.211451128,-157572.893401988,-262221.78178012,-161133.264550765,-251856.131169164,-159901.094833733,-318560.103475813,-262145.656050315,-278478.13167144,-210063.169918891,-238109.712214004,-155584.918584125,-212325.973833575,-153118.199336467,-174886.250492307,-315774.466707599,-190235.199378731,-179566.419557669,-248590.586010786,-298951.507803365,-237176.100055408,-258027.539043124,-317591.638370146,-223706.948979818,-151667.702406778,-206500.294123358,-158939.48248804,-251241.719220173,-322773.801134504,-309355.902781195,-254279.743784134,-316215.145006508,-278272.843355129,-172789.74104218,-208321.830954816,-212464.617389868,-317875.928477964,-233739.698941641,-275658.527582121,-262683.603877282,-174928.30584107,-255905.27821725,-320969.345217341,-156564.148009802,-319570.021537658,-323459.318270288,-268518.470800178,-291940.853657745,-263071.933353428,-285731.133252558,-270634.291831597,-318058.693117829,-258874.000054637,-248752.897245103,-305941.655380477,-258487.068963927,-154591.756834065,-231396.378363257,-153313.89563954,-251122.419723567,-319125.560866519,-220533.709961204,-165309.588285711,-185149.439205153,-185091.046860647,-234830.060363993,-300079.300485623,-286951.050993918,-189705.96211224,-254600.256374932,-163590.419546048,-193721.740784378,-177202.097977105,-265122.789429208,-279494.949850025,-153253.782665856,-299393.124528311,-300974.167551571,-254842.402952421,-184207.720874544,-304981.641733897,-168560.007402594,-247995.011531092,-253157.020634645,-253904.166160638,-226743.920626861,-150395.692766721,-164462.021557207,-260319.084160362,-221525.905887251,-275917.300557814,-323434.320973933,-196267.465089526,-204799.081763116,-153301.210195229,-197077.755148026,-312198.129615138,-279933.336154018,-284255.248922883,-167413.630727678,-277753.201549303,-197251.502769261,-305612.897087577,-207105.871404486,-151414.193834226,-262011.767403677,-181715.957336652,-193141.295249275,-257721.659511696,-231611.691980003,-151921.05149045,-270526.08778948,-264277.528303886,-249314.901583621,-316776.867926081,-178393.230062243,-301575.944497557,-213397.334668879,-282549.078799098,-197669.433127497,-185712.701128911,-309056.699828054,-189830.056798969,-315362.14349937,-190539.995692169,-322527.62505867,-287757.974004473,-313577.783181076,-233416.25295298,-272707.099673756,-165353.290779015,-321643.760729556,-215329.603232541,-155096.416846018,-174210.071711679,-157733.935620121,-285062.214572672,-238200.081806766,-297733.518806935,-241418.431683514,-292713.540629297,-198485.135284189,-284279.804404195,-203402.906129015,-279524.646897196,-275128.524986738,-264271.539396652,-218811.431823436,-272242.292285876,-199175.053333263,-150995.522823422,-166657.258071425,-281584.994829375,-168716.574859913,-274220.956146559,-174454.679933803,-193903.836986207,-265942.633397801,-310900.416500432,-257008.701034947,-200845.29763427,-234165.945764963,-306192.400749215,-249508.801958443,-298205.443499483,-243101.958196667,-157258.535376385,-246559.570061356,-240856.102016712,-153248.105841526,-214401.048449997,-178037.292795751,-241262.973390613,-292370.792675853,-285730.989549267,-181657.83661314,-197988.154689019,-264115.799140475,-308487.091916155,-263302.278479578,-293963.737488735,-266559.928303348,-288032.370721317,-220898.807223844,-312329.517425334,-230281.745781636,-284028.107001153,-284124.089550115,-173130.245809023,-155782.553792967,-294376.789374258,-278177.897030277,-318969.195355871,-195509.54544557,-230157.940497368,-272874.914635257,-314094.511910716,-254074.584292742,-194357.639278486,-273955.763335201,-310659.478699868,-182215.518240537,-151636.072078588,-228385.582488422,-190771.850247207,-298985.372790309,-172650.302400254,-281199.136795815,-257873.170500181,-233579.03358176,-279873.37994756,-247811.640143997,-288073.42722334,-295819.142573121,-252130.220883522,-274304.935660399,-161486.036715982,-179049.17915722,-152304.671054941,-268791.254665312,-263238.385492429,-263422.7392149,-317632.015366077,-218999.298474466,-323513.213354978,-252864.031215853,-179373.92918067,-200033.176628913,-177065.844213802,-262235.817708769,-302497.607146878,-219255.291372096,-201158.128449518,-224221.641005616,-236447.472658065,-193974.717182999,-319872.451645769,-281311.464142593,-294576.287645465,-188623.28609431,-290032.618017973,-284022.099042346,-310661.706463768,-302940.75979147,-256961.578149294,-289926.149483405,-295433.131401205,-189692.044303341,-239282.083399023,-308381.366755809,-296689.799807718,-155798.668701805,-209116.06398497,-303520.912476684,-229494.455507455,-154924.287156913,-174480.251317548,-159913.895494698,-321322.813400013,-305397.291528161,-320468.430200247,-278018.052702457,-210182.700393135,-238664.725895451,-217657.675113592,-151447.707727902,-175525.872389493,-287333.320074071,-254180.580166864,-236519.976774624,-155169.083354554,-259588.099266981,-221755.873610819,-209441.101959334,-158607.630219736,-320964.251915466,-171164.452102185,-308040.132041567,-254764.098811363,-318789.568419305,-275567.088379635,-171097.538261383,-210408.195170323,-217595.161823192,-313429.544889892,-231482.567133754,-261133.914662242,-243953.188996206,-254204.987408796,-319090.285700309,-158578.944176022,-317482.674261,-269323.86260862,-292208.906382328,-186097.978180226,-287930.545145734,-270623.243189545,-319649.924922161,-256666.441346095,-321507.910859593,-246618.335090912,-307692.83330246,-259587.228337944,-156611.607654683,-229673.709033196,-155406.698197954,-249807.882074301,-321039.318196386,-185700.35462115,-186657.976660305,-250433.322162223,-299354.032878484,-287857.414504599,-195533.364991846,-172743.38003799,-265388.766983917,-184598.673661527,-279483.901933747,-154855.788951037,-282508.01286201,-301607.676615578,-260658.288884174,-297721.324530311,-300303.22940498,-169760.615739986,-254714.83507327,-254681.5361902,-316282.095680351,-228637.463875222,-165525.532600234,-260422.730521962,-219956.403036619,-274225.513101302,-213822.806909688,-156071.909260352,-200185.468187546,-272903.874295843,-282569.972023809,-228973.666252623,-275372.165751857,-301185.48070094,-306137.3685578,-210850.51172304,-180694.008297378,-260686.220485609,-189308.171262212,-258721.336536728,-232084.842686614,-169422.289202953,-269017.984347297,-193789.893158848,-151179.970352208,-180145.573214701,-206337.877107451,-289192.014911451,-200027.08556896,-183318.606113442,-307254.225637337,-313611.054484726,-188107.277877004,-316975.190805975,-289216.608677352,-234174.117982427,-288810.125955534,-273711.388993813,-167111.280636173,-320375.44146985,-153768.44584213,-197168.324873023,-156984.848285263,-286360.733296737,-310084.936974975,-298717.011248805,-242705.549402154,-293247.132178087,-184204.191253178,-194235.781972165,-152745.927070111,-281063.592839677,-205385.985599916,-279525.946214453,-275225.149664421,-265893.205816183,-151511.166520637,-270601.814706363,-160231.782053006,-203851.759548485,-319971.750257039,-272646.016158526,-206527.354432869,-191461.289648198,-264903.861819846,-310978.068896261,-261214.33516086,-233728.265094934,-303825.193853329,-287847.825938788,-242640.173113989,-247159.130492943,-191318.648527625,-238412.942306724,-214863.400543766,-241768.63551529,-293508.989331233,-285216.038240636,-270492.232781931,-262199.586153611,-309602.154518989,-260185.259018966,-294922.086390749,-264902.801463743,-286376.173054128,-212726.136876568,-312744.819755201,-282658.333943697,-317104.285714038,-166987.304432082,-293496.354691115,-235302.492372705,-293135.596469515,-271248.601264983,-253608.693323985,-275433.840228727,-309128.736727473,-211732.844668597,-229427.286375578,-322996.631594613,-299198.640449591,-171080.822230065,-282349.801163247,-257181.7941893,-297195.555920154,-279887.833740704,-248963.099052732,-295119.500782791,-254418.114630771,-277032.842353062,-159208.758505032,-167226.985373178,-307039.725794911,-261567.345561458,-263719.04723621,-316553.329654686,-217538.583006963,-156578.298429331,-252809.887009169,-178943.935910941,-308084.581537964,-174535.299838882,-261939.81287963,-196238.306022479,-301596.709441679,-278338.849070966,-174114.924710262,-193290.526036674,-231232.367365769,-313356.402273482,-180585.489632146,-281835.609377314,-295305.639728345,-190720.11978406,-226924.460224481,-281744.429276217,-268414.927861401,-290369.440750868,-236629.928662453,-241122.071587905,-307184.700642415,-299553.965344105,-210587.376118645,-230915.699745226,-152806.990445107,-311131.085503318,-292763.153827666,-277550.745385354,-210308.25334167,-222583.366695123,-176203.998240849,-287040.837064225,-176672.866698251,-252230.217508127,-235849.704344416,-152860.697917168,-226879.606653299,-219697.571636102,-293965.358686849,-158304.472160105,-308978.173418647,-170939.483874177,-306711.285572553,-255250.801718121,-318768.700233804,-273206.814804658,-219769.278671149,-229593.967496339,-223007.221185246,-259679.34541353,-251160.582019534,-317266.758977445,-313579.08340555,-270136.119152309,-292469.543690491,-186615.408189185,-290081.550984475,-270612.24299292,-321172.997275724,-253939.986564714,-244760.477252626,-260687.387711962,-227750.534238785,-248481.030032782,-323027.721765356,-212955.078899752,-248581.16074417,-298207.366256775,-286615.022257995,-247819.507354855,-197144.129375713,-265653.347604739,-182975.278266414,-279473.123098252,-285190.058064575,-302226.169048551,-296901.818409607,-301574.865089882,-254083.853880793,-157443.465363568,-255473.965671474,-313808.500810833,-226456.070959492,-275418.307027908,-260508.110961447,-218230.374279241,-272587.457430285,-265280.600500614,-216978.119849953,-203278.602963648,-274760.852677246,-280919.785218525,-273095.809455582,-300734.595476604,-200503.747752582,-214360.882472913,-258507.383020828,-306395.496320232,-189830.512948052,-232570.369839172,-169707.621341074,-267501.494039931,-195988.166130865,-321319.570096568,-203320.502089515,-289422.496120264,-202492.719421305,-189706.862979463,-185646.485845774,-290622.495533103,-234931.955069568,-287159.68512928,-274701.187869128,-201887.109480339,-218287.528997296,-296839.686332105,-196559.632024709,-156312.922178545,-288596.187680893,-209773.491844875,-309116.478219833,-299789.284200831,-244164.905676029,-297115.274407294,-190634.203723218,-154220.060469535,-283832.501782742,-238125.84744452,-275324.25340532,-267548.964208539,-153321.024012265,-199247.187304981,-295554.265654982,-317804.288939917,-165695.436339875,-270774.923827748,-204333.122208698,-188491.927315082,-263865.090241891,-311056.539783941,-202454.207665062,-179626.55738912,-301592.033822855,-290870.797401562,-242191.446886447,-247801.311107062,-238886.351570393,-157208.890606838,-242266.741786239,-294626.465859047,-270515.746232939,-203322.655643003,-260458.022018091,-257519.057104247,-295842.17864615,-216542.201722562,-284494.200460911,-210121.236572225,-313161.81531627,-229681.414033521,-281288.708218403,-262954.574032695,-151524.655034098,-163871.186927354,-241411.653678283,-292507.799067,-271841.640796848,-258894.529122145,-276923.944833698,-185924.975203318,-210606.656854533,-221430.767958011,-230452.037810473,-234984.528156558,-169703.928601957,-283517.817340193,-256525.753465331,-298642.709026671,-279903.155378344,-294424.268615043,-274239.380831781,-283663.3279905,-159297.746768053,-283461.143991875,-307430.887604863,-261949.992769968,-177444.473173467,-252755.742802485,-176774.828356496,-218327.881135461,-312679.612028093,-171981.405130706,-261586.34179386,-197229.676017488,-300641.34365306,-275766.086773864,-314445.845591474,-196055.186479031,-194966.678865424,-229155.058090593,-315374.179012888,-178083.578500867,-282374.868133925,-295990.368854794,-192722.836890311,-218344.570857464,-310123.143543169,-264821.055519997,-296319.926406529,-189681.841914003,-237615.766987973,-302328.47599387,-211915.065340701,-232336.943801553,-151052.935191317,-249211.204962157,-309954.382897888,-294692.503146062,-267780.011339782,-277077.141069869,-210433.806471649,-279385.595818691,-286748.354054379,-262771.508740869,-151166.953773419,-233756.575913387,-150963.629764973,-226423.387714386,-217553.320214931,-298760.587820285,-154839.361596407,-307659.789166134,-170714.515827612,-305377.109199276,-250813.527322002,-255739.325773784,-205540.449582166,-162755.356818307,-221634.393525636,-228001.589694549,-258328.68072059,-315483.341076946,-154111.586257972,-310755.112695772,-272594.245414911,-292722.931784526,-187159.967456204,-270601.439662546,-320661.49484608,-242943.346414878,-287162.345636045,-225629.553134266,-247150.15321045,-215902.92964854,-245893.590041196,-179413.284105088,-246817.837716765,-297793.255829585,-284666.298760283,-184730.482420758,-241740.430478425,-156506.632763414,-198663.649790353,-173920.14197546,-181780.141177811,-279462.456939202,-291908.70059069,-287952.536829693,-206468.344817408,-253428.670477595,-256274.064227249,-311171.51620654,-224475.08371416,-275987.439376264,-173014.123933297,-270962.709917842,-219391.865020377,-315706.503941638,-276563.934159522,-236058.274430205,-279402.132583782,-271156.322886081,-316011.019017574,-300325.411241779,-207322.109113228,-217478.80189353,-262162.242893825,-214152.411273859,-256482.386279706,-307503.899219029,-194232.999172448,-233068.261643846,-169990.257046608,-266014.224853307,-319463.140581903,-266956.003604617,-207422.179041027,-289666.7819172,-164187.671652799,-205228.425283495,-182242.179737127,-181322.755375431,-187966.52195491,-184688.29697697,-291976.833369257,-317277.391387995,-235689.510556319,-275670.601198784,-199152.560320776,-219701.463055906,-196010.418549204,-155709.567036567,-289534.336109667,-321508.934019768,-308109.640343682,-301334.023272956,-245866.102069238,-296565.692057054,-155891.863733518,-197671.701353308,-238940.601558666,-234483.283275091,-275423.73400447,-269235.682313725,-154490.911416536,-296507.384991016,-154583.680600238,-164389.013753355,-268566.634264588,-202685.317212886,-311135.06220159,-172412.434443102,-182758.329117514,-299482.107348025,-294012.253860848,-241761.870211107,-248452.657160634,-239378.059597461,-209726.157396042,-242756.278296908,-296894.214473339,-241048.64954843,-270534.11412633,-207357.518547664,-258794.75585455,-262260.772728777,-296706.88616532,-213169.404374927,-282339.612019288,-313579.975563483,-228111.094686916,-176124.070905798,-261510.916436156,-279132.785440918,-162896.703520598,-291849.003848507,-272439.25742369,-263090.143753818,-187835.773370338,-231446.982424849,-231431.969422686,-190144.122881901,-255904.959420934,-300004.193017017,-252670.704746978,-197170.18140342,-150950.494340659,-272778.153149138,-278482.300881318,-306114.481268481,-307822.049596258,-262293.848617725,-266028.010752745,-310897.244141414,-252701.598595801,-174605.720802051,-217176.113772692,-316692.417203344,-169333.307653344,-198280.083933153,-193697.019645105,-196623.004813201,-226865.613908214,-175772.474131893,-282930.096644535,-294041.926050252,-215100.32699034,-308329.781628946,-273958.821566226,-289934.665536395,-298666.556696697,-173338.279910567,-235263.721333629,-304885.886170816,-213142.446399578,-233758.18785788,-308574.279170504,-224849.902540732,-263684.023913647,-296509.827221191,-269446.39615505,-276601.574442398,-274923.853941382,-222536.940008368,-192505.491650143,-286455.871044533,-181252.74683345,-258441.815309719,-152891.743452798,-233184.966134809,-150967.332483485,-225979.918087913,-215362.562816173,-302527.084284467,-305875.333408533,-170489.547599604,-304036.469080996,-248580.944826346,-256229.169286938,-278569.669216329,-169307.522529097,-202166.586072235,-157568.604257924,-196229.163263469,-204071.371744359,-262213.156498113,-254144.889857813,-163942.035915855,-152488.155299923,-307350.41630205,-274176.997092076,-187721.541954953,-270590.7522746,-241094.170106099,-223794.089784618,-245825.572297839,-241965.946484509,-180669.444106775,-245140.211747838,-297379.145402394,-282895.456530748,-168661.011220342,-153640.272122968,-201944.713996953,-318837.370085277,-228392.857830421,-180813.48905609,-279451.959341208,-311375.200561874,-227117.466626934,-206619.891731715,-252746.652843548,-256359.923314817,-308363.660405599,-222657.736232813,-276556.571724619,-214479.251164111,-281053.225336708,-270975.716335793,-171974.469813918,-178850.09893195,-219307.158825122,-202806.616580293,-278310.298565584,-277884.479949039,-273463.5147878,-271171.719097021,-299975.048828341,-209946.212314177,-220455.464063525,-266340.449649927,-270525.010740571,-303665.340997662,-317048.113331359,-254108.530203509,-160589.882308051,-198533.680142939,-233578.399980886,-264565.472503345,-317520.775410492,-265856.64022345,-180041.609871219,-289923.007969791,-209358.410876138,-183574.652718363,-183974.194135755,-186085.19384918,-186194.829480902,-169670.33795766,-293278.697730929,-319064.353243901,-236446.502116519,-276631.165889423,-196447.941363346,-221071.401408435,-195512.569565208,-290441.663448482,-307072.791885907,-247824.358429591,-296046.727942885,-198614.216039655,-239721.640739684,-275526.253964516,-150276.272247267,-150999.510771194,-152385.002101889,-274162.621319658,-203537.730298593,-239331.935014216,-264955.237197966,-311214.553890679,-171149.192518238,-186114.096355048,-299648.92055969,-241347.961549144,-249104.003214206,-239889.982794696,-206572.102041018,-178737.331947453,-295138.139389958,-270548.362525376,-307335.864892277,-257148.214613059,-315760.155529085,-264524.194277304,-209482.65906411,-313998.867753974,-226437.33546147,-177406.933228874,-307207.165894039,-164843.479766138,-243459.949585582,-291145.965616377,-273038.957022479,-319445.824879654,-266278.710579152,-322660.228722091,-189732.751163645,-229459.141875213,-226066.580970404,-193106.591267359,-253546.059555069,-301263.439010593,-281646.173421025,-319350.524558438,-252423.233889976,-194176.386426275,-271240.988982312,-322538.236966099,-276948.22833113,-159433.299252038,-303237.951805753,-153572.895782558,-262607.97312548,-267664.417464785,-182751.446963686,-226483.421034352,-248188.446503209,-252647.454389117,-216013.962395593,-167943.268077196,-199529.706886643,-191325.557353655,-314665.776946551,-198171.082083748,-196049.51165058,-283502.536345908,-165526.701822466,-209462.040726376,-306521.01461305,-293623.788120596,-300827.373188153,-176411.980268094,-231766.638602094,-307106.835957634,-257924.472575107,-276115.351816715,-219798.758711835,-192951.05078053,-286163.388216131,-240906.300189084,-259294.801394155,-154936.420468504,-232575.694300128,-225546.234074946,-215357.343229588,-249475.94307598,-293402.702603101,-304872.800824921,-302688.006568414,-246277.534208196,-289346.193845885,-284870.460312152,-170329.25782787,-198952.704968664,-198036.951572859,-260114.64953595,-167802.846374119,-226326.299448434,-151091.439689819,-275686.114985143,-219840.131288521,-270580.173934228,-249405.295852706,-183333.625284686,-239200.695080512,-313600.473241256,-261383.382486949,-224301.48360653,-154476.83883629,-244517.733362972,-243000.90484483,-181925.604289907,-243544.753034579,-296965.034975204,-281287.647499414,-167399.755013682,-151279.236303639,-203877.692186337,-230559.375278199,-279441.674032168,-222525.55878029,-311456.138900383,-227582.966040512,-206789.825953873,-304847.825664679,-252030.263450723,-255645.075103501,-220999.115931354,-277125.704072974,-219553.67093441,-270988.407949185,-172848.808356689,-177157.49878978,-219212.100549601,-200663.09964261,-319830.318094836,-168623.486517007,-276366.827314296,-271191.414431419,-311987.109678545,-304012.895572173,-210181.405974854,-263506.034686558,-302298.786022997,-318899.759812619,-257304.395414174,-161856.087024633,-192215.168544308,-150536.935320415,-234100.556412863,-245733.991932272,-263159.046760252,-183160.783248206,-264602.951664349,-309150.720427916,-290194.016954124,-213765.640579246,-181110.046199394,-186272.15618556,-184077.219960417,-187745.46891581,-320851.31528125,-301572.57944549,-193601.015867248,-222343.595395139,-291315.568522614,-306018.502892721,-306486.789823547,-249681.927591191,-295543.223544898,-236483.471239706,-160260.642101084,-199602.323316759,-240481.572955489,-276983.43962921,-302390.106561401,-216876.805400849,-150633.292368863,-151277.407534105,-272456.068894315,-205770.620885396,-237118.87312282,-267917.015372162,-323697.041798374,-189762.025447346,-294491.126571232,-299996.930920397,-149967.319787887,-249804.423034475,-203464.672053435,-245519.319355586,-293340.345354155,-264325.406901923,-273225.910468126,-305929.086422924,-255524.420949355,-317683.323065754,-266486.321372896,-298782.261615146,-205950.259434349,-157766.679467373,-314417.770286747,-224663.295652264,-271862.782962109,-311889.658344051,-167307.286663385,-242504.853422077,-290412.805759171,-273640.959321354,-321012.447858271,-237704.432100031,-230480.957734922,-258995.380345868,-224976.133362367,-191561.823164266,-251624.65764558,-282509.820584092,-323104.822935682,-252175.763214417,-191082.977126083,-269622.372447402,-181749.686422378,-275425.744943328,-300378.088114479,-151818.847060736,-262906.917340119,-269227.41139097,-252915.74534908,-246581.359798645,-252593.310363876,-214842.20394544,-306192.741318757,-169187.491814987,-230058.575114871,-315217.939424063,-199675.424201152,-194193.760734789,-279995.040387631,-162764.677029108,-207074.808994606,-304690.425562913,-214174.92805545,-179555.644532489,-228201.100303918,-232828.296562151,-258827.540708044,-246337.807577979,-176140.479208855,-224377.264230704,-180817.335477893,-216642.824871743,-193396.609910917,-320913.329057558,-285870.905206285,-322313.049554283,-224271.267449364,-231935.034908728,-225125.448883904,-215352.313251512,-250183.952135589,-295362.352994244,-306549.104614704,-321935.958147255,-173507.262461308,-239278.848079094,-301337.462535435,-242452.901597801,-289928.609495047,-199532.552828715,-195872.581328045,-200059.080780127,-258048.638750595,-259937.008680476,-229524.373189982,-235580.233275607,-151041.265105108,-169049.399484198,-277128.528060377,-189880.389965342,-270569.799173518,-315107.401110683,-249705.692522958,-236704.495066394,-313246.820893381,-261248.66101442,-224839.234567246,-152929.643925723,-300492.580627131,-244079.287182608,-316729.066985883,-230349.369611047,-242027.417563161,-296550.924729457,-210392.925425538,-205812.162567471,-225195.330778287,-254829.290752881,-223986.644392634,-311535.135792913,-228042.643837807,-206979.261365832,-150318.756528581,-305811.193658157,-155172.216521765,-254941.705736893,-312337.346895934,-152160.758559418,-277723.784832416,-225969.595038614,-271000.77459718,-175417.743827892,-219105.375453854,-274110.938394722,-271215.219825098,-306518.851080167,-207434.548410675,-250394.277324831,-314077.932324948,-219077.300330571,-320827.7270755,-259291.833340574,-190473.782042024,-234634.387830024,-264496.686346556,-310266.571584415,-320779.8657146,-290487.320088813,-217800.007417243,-178401.078402972,-174544.419554561,-317385.3637267,-208329.519262334,-189582.158098077,-166552.224573889,-224902.394159568,-322638.277318599,-190108.14063018,-223593.513557284,-239407.182738685,-292155.555446842,-305052.252849905,-151966.761112297,-251369.032715468,-295071.089466494,-234878.883557147,-160540.488112046,-200638.524383951,-241214.500746396,-274225.259624663,-162265.920645921,-151279.961170619,-270533.384541818,-235783.549663424,-171352.650976354,-322293.858270065,-193351.398351613,-294730.562926424,-300828.222162521,-239739.529440661,-246665.255304121,-291477.714280415,-267619.042969173,-276161.997868721,-253934.497534458,-268209.897376373,-299580.672927356,-204814.48486891,-314836.541817278,-222798.751619183,-315876.520902054,-168092.848506314,-236146.828135924,-286139.433675854,-240026.319477702,-253765.426620708,-231476.292271486,-257136.872939675,-223842.735707425,-186768.257323846,-249598.078716707,-302864.916932159,-283373.46774716,-251928.292357414,-151245.528265366,-188011.933102118,-267925.631400548,-273998.62665209,-150330.934838172,-270722.687681429,-190840.549492535,-228334.112033881,-254638.426835859,-244930.274484904,-252539.166157192,-173141.457205939,-213664.337561085,-170355.526680619,-228444.972953892,-182921.326208449,-192277.321850706,-319742.470204523,-279983.586582132,-313436.141995904,-281790.010617475,-159666.478707874,-289764.928361932,-152413.743667329,-215913.858356407,-293481.283264129,-182700.101886639,-225039.432847666,-302825.598840782,-150401.090893758,-234492.261646245,-259783.906794951,-200207.93960825,-320202.270476215,-175774.586497695,-295640.938698313,-179837.223329348,-182982.385591687,-154098.609233876,-175838.924384427,-322976.451443051,-193875.606547246,-285578.422196439,-320422.534417318,-226845.371884402,-224715.914644472,-208532.191706994,-215347.458910792,-292816.741002654,-308619.274811985,-174968.114555804,-299979.469700422,-241347.157935664,-290501.169493494,-240154.374169896,-201996.840551368,-235788.160144013,-202283.06321443,-256158.003679443,-258993.51202164,-223448.639048062,-237538.886090115,-317414.891849927,-278509.10154511,-170195.641709444,-190667.389566957,-313518.137968861,-250001.385269193,-236146.611129439,-261113.939360447,-225411.282169109,-151581.161272908,-301190.97045697,-245197.210968771,-234625.59652717,-240583.600296298,-296136.814302266,-287764.389122605,-208837.449249934,-207721.590472806,-310871.14729715,-256937.11103099,-225369.98362139,-311613.890276861,-228498.172384015,-306645.264978344,-254253.004448261,-150345.968887787,-278325.49065253,-271012.808840593,-182943.32515015,-218985.445803801,-234125.030244577,-276842.752292777,-248715.413910898,-309041.886413795,-247986.176863229,-256653.253847482,-215247.261246735,-322908.300157241,-261257.621241219,-188734.945728826,-259142.557192288,-262304.450908646,-176287.807016309,-176512.010822643,-205645.961364898,-302597.774691307,-193580.446337829,-227427.050509866,-316021.02091179,-233845.323945148,-224843.43171943,-198532.850220144,-294363.919401857,-294620.014452205,-233136.381177034,-241918.996696001,-317120.14061427,-268430.602588188,-236381.705177608,-231864.929113004,-167454.147435142,-294978.126319637,-239108.831481565,-253058.122650732,-192730.53445145,-207250.252387253,-247812.051657967,-289574.502449638,-278214.077962685,-300518.27285228,-202087.603332301,-205515.70630678,-220853.157659811,-265932.501952891,-151477.293005846,-318815.45007152,-168946.154475728,-231417.846945464,-282720.549122345,-282332.876108961,-242629.479012632,-255054.291640728,-232442.856393085,-255407.029513115,-247503.305681347,-284237.114910227,-251662.743735256,-266155.122664257,-298431.640644651,-299039.131066563,-266552.685984074,-272155.242565738,-269193.394535775,-243254.150142792,-252485.021950508,-174776.510167657,-211098.442357996,-171468.878452226,-287255.042605215,-318644.477085042,-196946.523923613,-190313.161680143,-279971.95006298,-279366.421590167,-159383.887637453,-289480.130030733,-201877.659718843,-303965.401634461,-217698.952250971,-289293.436593693,-184641.167559349,-300462.769089081,-256585.757572886,-236143.23265055,-260775.462769598,-321963.364106728,-293794.806830849,-177001.795910974,-179163.587842952,-194361.635391218,-323658.502825598,-285285.939186592,-229142.686543622,-227207.592541009,-161356.371167956,-215342.770772363,-280960.461414869,-318189.13288548,-176292.467938205,-240502.31739649,-291065.759584034,-204246.186616552,-155764.492539174,-237464.25708815,-247194.210970224,-204706.399490874,-254267.368608291,-258228.821448752,-243001.143987428,-319210.413305275,-278513.56433065,-171087.993786354,-191454.389168571,-250291.924111407,-235619.154368498,-260979.217887918,-226017.646915241,-244803.552677024,-239719.208488904,-288839.042069668,-287258.694700977,-278833.17678,-259045.25391573,-254429.527248584,-312324.821121946,-259257.786910081,-225466.064512756,-311690.718193202,-228952.510479095,-289029.374357091,-305612.631091334,-297787.692951804,-275190.557814619,-322888.402876173,-278927.196291201,-271024.506687665,-182734.687567361,-293273.526589772,-150987.386168893,-232478.937168654,-298340.153903955,-277888.639360965,-252993.243336449,-279833.598267914,-245400.5678185,-297926.424508218,-229736.530233299,-266337.580301637,-261565.240634841,-269139.832762885,-262573.36966329,-212695.788991386,-173831.833944306,-178431.783187616,-203105.14147889,-303325.705708307,-198656.265582224,-231634.947055396,-182091.069557443,-189504.866230581,-291223.5788204,-308878.057948517,-295979.877970212,-234536.625319843,-308039.145170102,-269297.521541338,-236967.910093855,-153252.476453744,-172867.299813137,-193721.775258652,-169288.070510499,-295226.318959079,-299913.565048641,-238472.380310405,-236128.008266652,-254759.288561425,-322717.133592378,-248958.065990116,-235781.142814741,-276373.820874463,-253320.25596096,-297798.085675426,-204150.178121162,-206365.389392844,-175276.572762956,-191685.358641975,-173705.752632155,-322922.089322664,-321262.484689949,-265713.173897615,-256262.1589902,-151702.38624846,-233379.210708043,-149953.559834877,-253838.24681193,-219446.880337542,-164888.002565729,-183901.565548922,-236264.591712885,-301502.644388147,-285138.323972557,-251393.537755473,-195626.610283422,-181272.644295963,-264583.523051968,-279517.471167705,-151936.50195301,-298768.06020998,-299690.084113408,-268129.661768731,-273529.440668476,-246952.121184566,-219765.436241103,-162256.924856186,-283625.461266074,-320395.578619291,-190317.816432959,-199329.493546408,-279959.575975799,-314405.968291078,-277341.314168479,-161822.966682015,-289218.650461613,-200405.725778125,-304526.399687054,-219527.187071055,-242178.50760261,-183675.561822577,-298163.380711534,-237769.134143967,-273450.29009326,-321279.330453404,-181453.732760319,-291985.811740411,-182619.876076949,-225223.008903084,-312132.621417512,-280657.385367723,-195825.312743221,-285891.515016172,-237941.381045605,-245550.13246203,-309333.730742347,-198300.910386638,-246437.608606437,-224627.125787913,-226975.756856101,-256899.936332262,-221793.702413542,-290243.993946809,-269117.279329697,-256309.40489458,-274186.245269788,-294006.955164875,-284269.302633,-212148.147179907,-257409.827543188,-314055.83286352,-241623.378341622,-195055.603623202,-258298.268967278,-205056.275635599,-198583.585102535,-267156.588722685,-212631.914148592,-308492.131147852,-299875.738786127,-288801.051600742,-194160.780648036,-219931.427150603,-233681.727364727,-229250.823995957,-192651.628462138,-206096.411487602,-248674.126794123,-306118.905950877,-251247.649339697,-277070.903040641,-318771.9195867,-178630.694307497,-241737.703200435,-216654.990661729,-230316.236385938,-229286.843987937,-222661.014917751,-160095.988430544,-250669.550595462,-195069.489679479,-238881.353163494,-281857.725168661,-250452.666403353,-243934.061035787,-312026.212759316,-185455.081226974,-274402.229139005,-199592.868656288,-287575.941307886,-257290.686265357,-243294.23356306,-307159.857935965,-259628.312237944,-225187.969613489,-259217.216313883,-204732.45297013,-293355.461597697,-209545.328758849,-314524.276198686,-270554.977231412,-209840.467920814,-228758.559844411,-236904.588472443,-316728.509409856,-273404.041402627,-310217.269561733,-277366.219654398,-226854.319773039,-195712.695086765,-237504.148178256,-309344.288761042,-264862.772113653,-310334.099974519,-196340.621677088,-271104.785478871,-187181.748121315,-292638.472715386,-277046.374957305,-303991.497390063,-174872.70954166,-283388.779586849,-218403.874955805,-260509.503903575,-291149.70208339,-267793.699622591,-223870.226763923,-158704.580044259,-249131.436390212,-273910.285961097,-240351.492627509,-320561.674040274,-293494.592148476,-258267.392899923,-289094.55758932,-239446.007485051,-277813.111850543,-177771.18224292,-298025.312512737,-232193.898061865,-246198.628218885,-241181.148337479,-277247.637404143,-256875.758979307,-273435.766081462,-276603.283277746,-256339.169983082,-261072.792318092,-315724.514754124,-223434.492801735,-163106.352651175,-221006.373673329,-257303.781590646,-279775.756786025,-235213.747969815,-283389.330268021,-270591.621207758,-175628.889141977,-293556.243944903,-315580.217053945,-268504.99571354,-290914.757181819,-183646.400215321,-185001.20200263,-286951.948595157,-231290.919017711,-267218.466960661,-238231.482245979,-262075.67182177,-256526.577219045,-221702.148720177,-194364.585663331,-198718.920217148,-170831.706950175,-197608.095228411,-278950.056545432,-173355.84836368,-318908.881705621,-201734.720849406,-270834.971118867,-231372.066923519,-276718.796773251,-233183.974182924,-236075.376936282,-196326.406119325,-301190.725326735,-292282.912307145,-245653.321948773,-274973.413251017,-224332.395055377,-259825.292435573,-277937.51571708,-152292.830774682,-258370.952712951,-252123.846408745,-260730.812959523,-315368.881768464,-274193.169155632,-160195.562110235,-225502.123696543,-207349.589101669,-195304.985443666,-279960.28505719,-265439.287762919,-202257.359739781,-272519.276750621,-251809.517232666,-267169.854786354,-245118.924246294,-236936.900484048,-317290.066127138,-194680.700062492,-189950.221418418,-189415.089413895,-179836.731254442,-206925.889020007,-232051.3973786,-234863.033011561,-235953.924430519,-197864.067622919,-265128.760010644,-276281.847502169,-234136.18267234,-195436.280173322,-236768.238181171,-269298.251670181,-230246.760743662,-294643.622253859,-289252.430532976,-155029.690254959,-244673.780803078,-284159.222646026,-318063.03832795,-203675.903553206,-282817.622509926,-315046.768664116,-178301.348137497,-226718.363577157,-213496.105823751,-166797.929259382,-213046.186423429,-241797.161525793,-260363.455091702,-274532.655116946,-249769.057327935,-308181.459873729,-313212.640557549,-213910.391162523,-191531.896772448,-315271.327918364,-212866.805161429,-204161.824075379,-234663.471053668,-270844.384410209,-227103.846204013,-245817.4443526,-269739.898151869,-277524.69916384,-193409.899562248,-298736.137757676,-238603.367674688,-271563.495637718,-318917.939367606,-292812.579776292,-276652.469176556,-228101.469106621,-274077.094092343,-242397.936903386,-281778.006130805,-193534.995454483,-251711.003909077,-230494.473827802,-215387.433464931,-196010.240734526,-183719.455013052,-228016.715010269,-226358.985415194,-296038.002141152,-166109.188597499,-262916.369641824,-169390.133595687,-254096.965717446,-301584.035791198,-261894.807803084,-175894.030241923,-312523.771070746,-284229.914504413,-292704.773095548,-287432.964698191,-292870.165422777,-189536.161432535,-227243.185414874,-272939.940555928,-254883.83903435,-180875.624762463,-249762.237772131,-245661.694298472,-291601.032570196,-273725.609087665,-299284.919397532,-282077.900746756,-153235.76060387,-284786.729013088,-238827.032956568,-243832.630462811,-161569.179049285,-299380.493335621,-276179.441488671,-243373.917945199,-283249.650306174,-200972.095829885,-269297.389994765,-244405.285719122,-298007.982839335,-243816.704436708,-189078.245814991,-224053.123676136,-285474.583867563,-163024.002500409,-296510.869432939,-201524.382777672,-267886.139304807,-289803.254864312,-221337.970106228,-235310.266684465,-152205.670918309,-274002.924324,-311951.137406219,-222323.935079345,-171889.470950218,-315821.047802814,-289637.75457817,-293005.854896643,-238035.164861636,-288837.838917492,-290118.63659442,-220954.545230666,-297047.058709025,-192000.406153066,-276437.423007602,-162377.727068268,-219735.410055334,-251383.393609514,-238996.362245932,-247151.161129367,-276011.540885815,-192998.640157549,-277077.261729829,-243295.157110726,-285072.293217509,-204358.67145633,-237119.571317598,-211970.453342916,-181152.635355079,-309291.800589633,-196756.626919265,-287687.98578417,-208828.953881509,-274782.480929776,-277583.255896201,-264779.370134631,-282404.972340421,-211291.265683909,-181308.252955416,-275763.070456299,-282053.838247567,-321478.031098768,-228246.025726745,-252635.203683549,-274828.39485706,-254475.953391008,-304983.898165877,-270523.77565433,-272124.141508381,-288347.258743528,-232365.474529588,-288339.283029427,-272691.838093931,-224738.601075782,-286630.251359425,-296688.318865468,-293567.355729311,-187171.281731613,-292587.922723971,-302252.198758702,-204444.335310638,-217635.981904271,-155639.344209754,-246371.604705035,-250031.608502657,-170319.387480228,-247536.821208014,-186724.255267242,-257868.329041952,-164941.554177781,-245532.341559126,-252907.308768364,-287586.667706195,-244537.85146084,-199505.188601259,-265025.89458208,-184415.131173166,-232753.462710418,-173464.893396649,-187926.193948737,-283922.137799234,-263648.36445,-285805.643227556,-239343.136976067,-274872.062150315,-276489.365396815,-164275.478173983,-228971.403288675,-221797.463375434,-313673.925037474,-257448.355992238,-231302.220047741,-301745.355799406,-274790.356487037,-169218.673251836,-300230.195473257,-297325.533551084,-291672.901452888,-286561.28031166,-229017.752136147,-276417.86956206,-237053.365106638,-250995.624793936,-193655.875505847,-315175.590681081,-287674.162870247,-266535.946002208,-174959.621546145,-166852.080723808,-267536.298541574,-294575.976832665,-312760.624214126,-252730.921687816,-299153.317483947,-297918.78319458,-241338.466245317,-242835.258496632,-309439.09483003,-166172.772767727,-289175.372546215,-239529.405109428,-248042.60290399,-220233.031327676,-246785.537498991,-273175.666753423,-169768.426703343,-227397.773141625,-279011.764407915,-267153.34596357,-279023.759459521,-219843.510130298,-218388.907133086,-284504.449844129,-258028.810780962,-179314.275259166,-190063.997410494,-193967.631086622,-297263.858348439,-273017.382295797,-287374.429376168,-282788.516424395,-303340.254577871,-274608.880459259,-230212.808482371,-255921.701398679,-272083.90150233,-303737.896644189,-305730.798198748,-262134.521041133,-193032.453251638,-296053.578706979,-203506.557026705,-312967.838372271,-268484.988114793,-252010.26419838,-270358.323632172,-300850.716082225,-290756.340814732,-238199.434416182,-237992.645017386,-237083.775045515,-284214.093352682,-190972.416313702,-215620.295394555,-257386.176739413,-172209.821874814,-281405.011719122,-259632.503402491,-154798.171914818,-284597.821057528,-243696.171486853,-162037.5605122,-228232.493485388,-236523.665159096,-195002.201883522,-269488.647462846,-212986.16834472,-255237.552347258,-279836.897093086,-307376.074052925,-304803.347681645,-222140.692880058,-291059.577257976,-304241.874246953,-190915.923864602,-227365.488165109,-305617.790801547,-274206.303309842,-303414.005937388,-228891.140645944,-306909.060855815,-276603.169694084,-172361.015881417,-165294.454986474,-255218.429285814,-261756.179306606,-284145.267822643,-251079.658922284,-301856.485618757,-276493.73383171,-218841.373275068,-239203.711942408,-285628.512591342,-278953.371156192,-280837.855291019,-159408.993799937,-194928.844075063,-214646.461737149,-177963.626351814,-223631.026829676,-242371.239843861,-283210.927712526,-253187.830837992,-275961.158911127,-266445.133142855,-295907.410323806,-256053.407642305,-284314.063305085,-309207.359301961,-305354.375048312,-281175.892425591,-290516.334726795,-286460.938762867,-195828.068144962,-166830.811003731,-231364.758195906,-265344.787244869,-230930.037233054,-221566.415155529,-272707.768111792,-300058.742387147,-154143.963044924,-272460.590830453,-240570.406991492,-250354.586004073,-190493.788007779,-294543.397373269,-248081.92371702,-296901.083563232,-190801.66958733,-308623.41934554,-292693.977022916,-225276.939913598,-282524.19327197,-265334.153019883,-203203.895578069,-189564.201174326,-203757.66364955,-297961.915955139,-258419.646173968,-157459.993419369,-292631.071633006,-280343.999879544,-291685.538633216,-273419.736088205,-180668.943322579,-283606.996118941,-235646.440938115,-245631.243716241,-294523.664117169,-219863.767213925,-224142.2133661,-296821.359444956,-285000.892640618,-267574.747881236,-263506.714555538,-233218.750197929,-164700.919750832,-276798.847489915,-283694.322359049,-272423.907299413,-218600.206492745,-245687.799126252,-235377.25019959,-260655.500822594,-241479.961912763,-277577.251747709,-252800.846947208,-257192.93827066,-264167.912268067,-150472.979735241,-307333.946852516,-295459.772031787,-221843.26752937,-285656.468687657,-200287.079296854,-297152.467976151,-270727.512265407,-199628.653315984,-265211.755193228,-187231.260074184,-210936.904254642,-254675.812009104,-258560.047736811,-289214.194933815,-314230.628502697,-313969.019564326,-185568.729301348,-278056.342008909,-177886.14033972,-315540.788826334,-252796.037967375,-305794.400513331,-297542.780811735,-249503.055096903,-267743.317829346,-261350.014292443,-268339.650561633,-185585.376928447,-228474.179377706,-298135.979832481,-236076.435296506,-236244.540386242,-264179.358271493,-206838.076148299,-299429.886987295,-296479.653703259,-159112.232351197,-312251.399445357,-243658.599789639,-159698.946942374,-311484.632613934,-223047.185578546,-247716.318412442,-288866.991452572,-232363.844622184,-216231.208386139,-257158.299971308,-289213.646611408,-311889.284026008,-321804.020200217,-297629.047602958,-250846.250847576,-319009.955016248,-301702.233562572,-248716.687826058,-175486.706166366,-244363.240349754,-240277.699898863,-313889.651438294,-264658.572821525,-278866.062516108,-283831.2625233,-244519.66863987,-227680.449671957,-251273.537886767,-223667.533634698,-203823.450000136,-266687.726797251,-272725.114659444,-271418.449301455,-290921.683063542,-206243.652746483,-249636.596823474,-203011.291617408,-165785.787606839,-255841.212314399,-202454.635327508,-212791.469618282,-292392.994652886,-237391.031007708,-254668.196097562,-236875.495995179,-230829.617663536,-157766.159087274,-172298.022854273,-250141.709174196,-293582.99779626,-316247.963245616,-248788.776074002,-228512.956041531,-212965.073717669,-319108.425337715,-160901.788124084,-183413.048025226,-247579.305670772,-247993.486498059,-197519.807881822,-246201.052667591,-311913.725742215,-198626.807677651,-244231.23617582,-167516.653830686,-260355.068770849,-291936.404661914,-224886.242599132,-215277.214492197,-272946.745414804,-295967.406992176,-229544.211683341,-313497.486245514,-260779.185446901,-226261.753808838,-200212.087044902,-308528.932798643,-282505.737922788,-187614.759523045,-196204.791403029,-205872.685059246,-304062.663360446,-205168.760293934,-278980.011786773,-256900.103260328,-290446.469343775,-218237.945011339,-230093.230469916,-314374.988619456,-247875.076437732,-272735.966435245,-197044.11805418,-282956.798603036,-250449.178514004,-302830.670913761,-262401.601409735,-256306.131290062,-317045.427422497,-277537.237638876,-295029.957121066,-319138.554764864,-224056.964110302,-256060.912873282,-224973.4870082,-267215.373711032,-178217.601960062,-254077.980190212,-256173.079642518,-217565.942335443,-289527.666244792,-167633.659336498,-195760.306781341,-152833.997773102,-317470.09931581,-272541.312706807,-219801.621346713,-228135.509549477,-263241.975353054,-297384.068328776,-233056.254435522,-224165.723732568,-258585.235548892,-268829.02032568,-267981.984501002,-162417.877804093,-280754.827448596,-305477.750311368,-265032.905197941,-270657.154626037,-266247.224317141,-187787.319233362,-198081.790447113,-185009.900406387,-191563.183265112,-296686.573015636,-239285.181910516,-173711.421291525,-260006.089320145,-239635.112306862,-272369.56531926,-154118.011355499,-283081.87453648,-201191.548173992,-226881.65968706,-278291.981294943,-240861.647838799,-259970.266557303,-208699.663014412,-318584.85400894,-317141.871926736,-274209.341219189,-161443.087939182,-205270.724673832,-247228.880114979,-263703.916114297,-202896.404102149,-268894.021207141,-169990.724626635,-281559.915339092,-237696.955355692,-232804.332042479,-220864.485543486,-158351.474385798,-296198.283566482,-230847.937837273,-168068.678411101,-237063.64587959,-253458.102617184,-285252.186150319,-245125.814383638,-276258.379049161,-248417.678473184,-232233.095130395,-316958.081586486,-256129.540811295,-315104.964323814,-261196.428134085,-202447.372868,-247787.952325739,-265744.726749409,-308274.001527221,-316111.788228812,-219446.66859292,-187120.42764081,-281848.526162151,-215855.674127652,-271118.477934882,-237493.779586626,-155161.493026553,-300931.323467699,-277967.80572177,-251448.467975613,-283534.709916084,-218736.423060121,-272655.59619649,-244745.517957754,-212211.32981556,-232036.436995066,-211558.13031613,-225291.49839967,-165605.767844988,-198140.768854284,-267011.358039776,-230984.020862197,-218910.421436341,-249447.137279524,-281848.00215318,-295740.488608899,-189497.975186019,-231535.502382069,-229379.501583857,-226380.295052851,-214509.180640469,-300105.272315281,-258654.583999241,-280697.149628788,-240823.406433444,-275997.655736755,-277965.368934902,-258126.57673857,-200507.52740316,-236022.798405986,-266241.244119197,-163353.303309522,-201130.853673731,-178797.685696727,-312942.254468921,-319038.551608292,-218787.235418908,-314053.481536564,-286897.069904985,-171974.935942396,-175859.734507993,-236132.700033952,-230626.865383714,-173029.913513852,-298291.52086364,-177090.838969947,-192680.978044912,-301333.283346162,-223231.084422038,-246482.792041992,-246915.24568625,-171865.794200015,-193415.944172652,-154347.39392362,-273627.834965096,-165187.551894606,-217282.15899946,-285646.984270444,-196415.368435917,-233213.809852967,-313406.137039029,-269079.927542064,-278261.627966454,-208849.777976228,-272867.179878191,-286561.52108725,-230024.466812128,-283090.290069744,-273205.30229123,-260821.451088738,-167293.306982236,-286209.420263165,-185890.526331032,-222714.21725097,-283326.587088645,-184998.14812625,-254542.372616695,-288308.135522523,-268829.746099878,-307873.208693667,-177646.780553706,-183368.328903715,-152978.933065913,-188913.678693024,-270694.410974363,-242967.260311799,-255473.246429244,-228541.098661815,-285318.719141111,-284189.03690573,-278267.012848113,-174491.162788277,-277090.00541752,-227285.454504138,-290097.560293168,-257748.49755286,-233318.815226752,-253824.9163358,-277929.119053945,-152856.493870129,-293493.909739287,-285922.028377871,-277813.877905208,-233328.787727114,-269555.91511857,-190914.391755271,-205391.276856703,-299352.265618313,-307739.085440521,-274177.142428359,-237960.461649258,-252295.763627454,-217911.890771655,-249807.460580936,-171311.008955997,-278980.458863679,-281062.91260781,-217727.414574789,-185002.022853248,-278431.949752034,-196384.027691633,-254142.926638609,-267771.633365332,-306026.234928134,-237494.379620444,-283968.12339672,-289296.924301599,-304367.814577466,-275434.435000682,-257161.788767876,-272581.01455129,-305597.87519468,-262660.294005936,-188914.934282386,-267852.655712204,-268002.127456637,-298747.241740011,-238348.690061347,-307295.05206894,-226325.779975552,-188348.34105506,-321005.585663233,-279422.477848974,-156885.703175235,-303789.7265384,-288825.717399732,-189662.208814742,-235396.639620165,-308240.98732908,-306950.874340327,-197974.626439421,-289941.07158235,-302913.857337847,-209352.445738009,-274678.538996633,-302472.608943306,-274191.650291681,-253172.474726077,-249518.034169122,-283898.85460009,-234049.046040741,-216822.538175439,-238704.098601337,-185207.432010963,-155289.045845889,-201750.036317966,-272048.865297275,-295741.245047056,-277966.554487054,-297258.727669194,-257274.073112532,-230641.478847181,-283476.633283355,-282862.366126316,-267228.39845478,-163865.30797491,-298370.899513398,-275355.298215176,-200814.235405834,-306500.203400823,-244009.159976546,-237879.898898897,-264623.817309641,-258360.033258706,-309713.260932122,-273769.669931979,-297627.683873241,-189533.687812626,-257433.425184003,-178072.336802878,-192230.148705189,-153153.753744299,-304286.81400382,-269804.83716108,-276696.039034626,-173456.614490377,-281636.745795643,-274288.927984698,-222078.285008361,-295454.107727062,-309517.3606865,-262327.622520007,-248247.774733543,-150544.030126083,-240261.555777613,-288773.963348924,-286688.413270623,-244242.818080464,-213011.580783916,-274233.117037569,-284219.761830608,-317984.876620077,-311991.905231555,-217141.638409649,-152205.356113751,-317493.306852994,-298855.622871032,-243151.724351948,-291492.549467899,-267551.130644518,-251134.105051034,-267681.180489981,-279726.007142107,-299888.990515757,-263697.958959684,-227344.703080753,-234323.402658561,-244157.72849499,-265504.761849158,-297115.202918535,-270384.632402502,-183705.285179063,-157861.442171353,-313679.40027802,-242289.644316817,-292084.096445127,-246526.314724738,-290600.52562237,-260439.268738601,-300826.977096885,-322356.160178729,-305502.799137691,-265225.512061699,-234982.283881295,-181347.596811777,-225834.633879157,-255007.765885796,-288420.506415752,-286083.987793147,-200717.711973651,-197853.086296424,-235278.611679953,-247830.514264891,-309161.644962581,-181417.690087895,-254274.825938171,-181118.440140875,-237543.377543737,-283187.161329211,-245277.907443028,-275775.51204048,-308153.123834622,-258986.51374394,-293432.225464465,-267545.555972907,-269363.334019796,-257946.947987569,-227679.642248163,-178355.9390582,-184830.462715444,-252723.296885541,-229691.694443585,-255218.316790813,-288118.56801966,-224671.032042323,-278487.418496628,-217040.168100536,-237076.492082886,-234567.501205754,-248308.374883157,-258277.55228714,-317449.382635673,-259546.185807074,-268358.850373698,-222649.9479499,-232519.936878847,-206122.663103214,-307792.66553921,-322292.0627047,-173638.853851167,-315603.198875353,-266958.269108775,-187113.804406926,-185142.783311431,-247047.073859941,-271113.671495259,-234861.388588673,-299065.231721142,-294667.426014546,-278042.40478555,-225198.641397289,-161047.831311208,-280618.331095267,-200071.085811129,-265298.773342189,-186542.219486114,-208176.986202336,-239559.885811288,-172226.567844317,-202817.132141198,-181970.162289546,-181052.091496729,-273832.264690532,-234811.863027538,-221294.557922603,-184322.960390289,-187027.486448622,-242787.991181913,-281816.885491679,-257147.248789046,-226582.622936211,-254570.02406929,-207212.949770823,-273750.51439214,-164287.704384671,-150121.796108299,-234430.264744187,-269969.345858225,-203480.442038086,-272081.058281911,-300948.869240368,-239961.006331892,-188776.647081224,-317979.820695574,-310366.048917582,-230365.633847927,-209235.202722592,-283466.660964437,-173124.209000691,-244103.969311517,-175236.365598187,-286562.748189974,-180433.548078119,-287213.739521408,-272256.904479239,-279810.840166403,-282416.741131921,-198743.640630647,-205278.803992199,-295066.11990912,-295482.610512791,-314200.799908952,-237548.390103232,-171744.329174648,-289198.070952799,-230110.834123077,-242112.784575822,-177586.173146349,-308929.586646437,-190429.638096564,-156000.274984169,-237561.564175022,-317744.05566916,-184671.459922805,-227372.057147371,-275228.112274696,-230785.410575721,-317299.096935477,-269616.427812394,-271135.006353569,-214279.630055621,-261542.544042693,-221516.402599908,-195362.627156208,-273794.898387416,-215991.481176937,-246214.121502123,-249368.491298818,-258816.573897032,-190090.437001623,-267169.312270142,-155583.941510612,-238124.413133262,-223218.579876946,-222790.708589526,-192171.392022036,-231373.675057697,-306146.006903743,-305706.261950452,-290001.072061034,-238335.773095067,-313449.463399856,-176545.328757285,-173444.140972132,-270613.897939534,-181864.961319615,-245771.020206056,-268726.532299699,-265204.501987341,-278645.386153817,-223003.49016154,-276093.387893619,-293429.738780621,-292341.758079081,-313230.825192955,-237822.757244777,-285235.497698421,-272171.396122052,-302831.531500516,-259884.788501189,-272579.376116039,-236538.400189741,-251378.172208494,-215906.312844962,-167419.294306628,-186205.4816688,-154074.352771534,-242233.657732332,-269357.056980205,-276479.497952269,-291989.051233542,-317569.102355539,-281861.105824873,-290827.842092794,-188114.419132221,-187552.443643227,-239693.939208669,-244084.358711257,-282308.171843938,-289863.598452747,-303943.653810632,-209431.107504303,-254458.933804632,-304138.185064674,-288736.020781095,-271094.646050445,-299342.274247823,-201280.896965345,-274471.880418637,-301214.534167841,-238773.721212888,-266207.60593669,-251106.942951692,-205977.233921062,-264410.163901372,-236326.7684255,-224118.918191682,-194005.59306891,-320950.410312858,-260328.669278745,-206379.681882672,-248130.059239123,-231907.727835989,-276963.743931925,-309900.179359164,-282158.141434817,-197182.017510477,-269017.506062101,-296835.818499963,-302831.130873159,-276220.347755436,-238601.365082233,-240739.041896393,-293929.282628812,-220694.947956927,-251342.516736605,-198465.089400853,-263822.139106324,-200025.860099227,-302743.126034176,-179406.370198638,-277696.708192985,-216697.599594762,-279510.483958062,-313543.059058925,-212712.469096881,-292593.003869128,-270784.621078244,-273447.882337359,-265544.487825634,-174065.508196701,-151920.43911847,-313059.930227203,-149515.911461799,-290642.069481767,-204199.350411706,-312934.945015534,-255648.211536695,-296034.712751045,-310459.456238247,-301080.391137347,-267863.211372133,-281728.229270354,-274797.764645714,-208444.438711658,-300083.356837613,-272563.073594571,-253762.020380955,-243376.353824849,-311831.010708471,-209365.351273346,-264038.243091171,-178241.061885223,-161552.03989161,-321461.193500272,-256225.871731872,-282273.011350052,-203995.126624699,-320665.59873628,-233616.510383998,-275656.965897491,-210280.334078396,-313687.578301678,-266052.303322354,-270543.912077997,-262240.850408498,-258964.103651156,-168468.011712743,-221419.822738782,-190258.387864343,-311271.153028586,-262396.714227732,-261014.957005283,-288170.348561227,-282266.101253917,-280389.003867428,-304682.732719306,-211561.670098335,-207325.680103723,-280299.256263154,-250039.979037921,-169814.983122235,-312387.042651117,-272199.238090374,-247370.7477417,-224856.044041991,-168756.816861843,-201394.645559444,-231933.868952479,-268947.311359039,-307306.745561367,-252821.452765337,-308776.207515168,-285880.353516232,-221784.421757435,-274397.577833616,-239505.71837983,-246798.652964514,-159000.936329554,-221610.898400427,-291732.126804729,-171969.28996347,-199143.726923018,-200251.141680245,-220706.443675885,-165651.914020016,-315992.67961082,-267908.749348383,-278473.908935715,-284265.890587054,-217070.811012929,-288838.052839437,-275254.638051511,-248531.187198912,-303109.045054651,-203383.341252529,-250609.487518754,-231505.31217133,-192518.240055366,-273022.921585916,-229163.758671673,-285342.640114331,-166651.220900206,-273147.249790493,-243372.703362079,-195667.615618365,-203946.140132349,-295017.874432226,-279185.34074644,-235650.705224413,-241373.080412677,-257350.256904272,-270802.390389366,-195290.204507803,-255467.763930956,-275349.481860757,-250482.225371983,-230859.353176739,-224199.62954431,-217556.476425472,-189325.27122808,-252584.059283067,-288243.201230844,-273467.669663637,-197883.275962831,-275455.684580525,-263932.935795319,-294572.176497523,-301366.574427159,-283346.933805385,-246659.809275987,-232860.592062393,-304190.712065003,-286835.327749671,-246532.331211392,-176742.502736625,-296613.067330685,-282584.396604542,-294474.649501069,-200044.251761723,-259376.914216759,-306117.845231887,-268321.774017374,-293040.916322351,-265166.631271158,-250408.420849506,-293634.977018512,-187128.68041921,-299993.029702642,-245283.575558068,-194516.974475707,-268939.624684512,-295374.70022778,-242979.514464794,-315358.189662986,-306077.109159171,-244958.889221303,-220607.092264542,-287393.35811157,-236221.02058471,-229305.391691886,-307778.855144892,-314119.583054596,-280015.349182669,-196656.456108853,-274573.842621212,-315529.0223936,-306950.547197607,-305119.050022506,-297681.050957203,-240685.749748617,-229812.518610336,-209398.229570268,-261211.403395989,-206454.699536721,-313904.205751164,-205949.363466102,-305079.294289288,-261733.214178005,-243892.662512673,-266792.716385447,-204982.080283717,-267199.126892733,-248187.776795068,-240524.465484788,-288894.266772689,-282986.462264594,-233310.193392173,-272455.439103755,-300430.32335358,-152973.42371398,-291821.235546266,-300771.517061581,-274985.811651633,-267845.968247305,-170050.81310544,-285024.993605839,-195003.282379858,-222642.620896488,-248907.644642178,-311484.967558726,-240043.239451569,-295867.276099344,-236753.148246943,-227227.961212419,-278003.88704167,-177841.416863563,-184273.56800872,-220469.403101319,-291484.139015055,-235753.488277606,-289937.848963469,-245048.507819214,-213175.870297253,-207633.846549648,-237204.174815804,-317048.208770666,-202039.613509369,-217581.738629409,-302049.504359372,-235551.049895124,-244684.865370953,-260075.049662741,-287123.076897314,-210855.01079729,-242511.511674566,-237146.284888486,-181468.908335902,-228271.555378474,-186563.34296269,-253828.832250483,-294203.793836535,-161574.990141841,-155220.068810487,-228620.528841541,-283025.032808547,-318108.887842774,-252727.1093774,-272694.046987701,-294732.88866984,-264635.095477783,-177774.719303472,-237866.060199386,-153944.69194104,-272054.056578666,-302407.115079721,-282025.388443355,-226569.296814726,-300098.762483617,-293924.944857877,-242446.695502638,-258431.848615551,-319785.188366572,-315479.569046998,-262916.794401173,-277090.210811618,-201257.000487004,-167108.433968327,-221817.811362279,-298456.301544665,-235137.071014507,-157357.552750154,-282443.06931671,-272644.094127007,-240871.231868521,-270960.049592521,-304153.221835942,-304009.555740759,-204806.401558785,-314906.91850822,-185694.554415207,-241589.381445218,-319505.371023691,-214681.404135889,-222258.768177036,-265581.451142627,-177107.366118529,-189990.964748876,-275590.111570173,-246881.573755243,-309732.119811758,-259660.453511169,-265814.605377809,-200152.65666185,-268633.580765229,-198486.031433879,-234845.220516874,-270233.412449471,-256018.828856438,-227105.430206199,-293261.483818512,-280221.686605583,-254671.799022122,-314842.020323808,-276925.403821279,-233248.507121472,-167342.304361198,-287067.5918228,-276118.517825208,-302609.265511289,-276384.541103691,-299518.977040146,-229920.512540824,-313013.09311514,-156938.157779587,-263575.566213448,-298155.487191362,-157766.401677299,-281953.126372491,-176689.825682481,-240222.768408618,-276173.462197945,-253702.475869911,-177708.758585634,-231950.488637272,-188773.681023522,-191587.646573101,-249967.093164134,-281566.620766903,-211039.015785259,-238399.256564125,-183784.083753793,-290436.759573673,-301982.313091383,-280275.681847113,-228468.688533015,-293777.091771348,-298947.23444489,-229229.126794879,-287313.255864937,-281357.473146297,-176845.81088745,-290001.296143817,-259968.574777649,-298785.020827202,-250629.148378878,-317815.306373679,-239258.920134065,-219105.50663754,-259131.940204439,-314286.255284623,-206644.960698272,-232039.051778056,-284677.3568374,-262826.857369833,-235956.765473616,-272150.265387734,-182076.369726847],"Archive514_field13":[-324668.772108201,-314529.362758491,-243553.497310526,-148496.534657002,-151031.38699443,-235948.940298245,-324832.338855431,-325005.666970621,-325179.525236042,-325337.215650872,-325463.164576231,-325551.313669239,-325599.283771047,-325607.336394187,-325576.963676572,-325509.473897982,-325410.405609679,-325284.456950478,-325136.131872151,-324968.276765706,-324778.110619606,-324565.14886595,-324345.12187202,-324119.63136931,-323886.18781933,-323643.235972957,-323385.117554683,-323109.296009203,-322817.688291038,-322506.123681448,-322168.235368315,-321789.254194849,-321362.586384407,-320881.715378028,-320305.284650223,-319546.977589507,-318524.237206451,-317047.022883242,-315617.313242499,-314889.187975613,-313315.13402471,-312138.130933907,-311002.919003792,-309912.393345058,-308867.428348682,-307866.846752928,-306912.659896703,-305997.262683365,-305095.534109144,-304168.763445611,-303211.192633925,-302225.0688831,-301213.159650229,-300177.818594342,-299123.116500238,-298051.849816711,-296967.914875911,-295866.365917077,-294740.627357317,-293590.495433795,-292417.261587971,-291221.978470703,-290005.031313369,-288768.899109245,-287520.912075531,-286307.141822184,-285153.628255544,-284046.811802488,-282986.492038695,-281962.348665071,-280980.889290367,-280035.931828182,-279127.817765304,-278226.006227416,-277302.092814958,-276351.793272878,-275373.313409261,-274351.941873482,-273261.965979509,-272171.990085536,-271082.014191564,-269990.613713718,-268891.885355287,-267793.156996856,-266694.428638424,-265607.748891673,-264605.1197889,-263602.490686128,-262639.694166695,-261702.656144237,-260753.324971123,-259789.050303397,-258824.775635671,-257860.500967946,-256896.22630022,-255931.951632494,-254967.676964768,-254003.402297042,-253039.127629316,-252062.120147996,-251062.828464921,-250068.639421296,-249104.770447779,-248140.901474262,-247217.401918604,-246301.425766585,-245385.449614565,-244469.473462546,-242475.196230804,-241396.895151081,-240318.594071359,-239240.292991637,-238173.332866033,-237117.604198881,-236068.632738646,-235027.332887726,-233993.773722216,-232940.921348005,-231846.021340693,-230715.186058946,-229553.343358552,-228368.271973226,-227171.005381366,-225967.306779773,-224762.796179762,-223556.12682541,-222348.973216921,-221143.557941582,-219943.792608078,-218760.304948914,-217605.449857588,-216486.664684057,-215409.983875601,-214365.483933972,-213315.65379693,-212257.663126168,-211195.369191571,-210132.543278821,-209073.759129213,-208024.432612202,-206997.716042862,-205973.412347441,-204974.703840377,-203995.477661926,-203016.251483476,-202037.025305025,-201057.799126574,-200078.572948124,-199099.346769673,-198120.120591223,-197140.894412772,-196161.668234322,-195205.007388841,-194252.006285767,-193299.005182693,-192346.00407962,-191393.002976546,-190440.001873472,-189487.000770399,-188533.999667325,-187580.998564251,-186627.997461177,-185674.996358104,-184721.99525503,-183768.994151956,-182815.993048882,-181862.991945809,-180909.990842735,-179956.989739661,-179003.988636588,-178050.987533514,-177097.98643044,-176144.985327366,-175191.984224293,-174238.983121219,-173285.982018145,-172332.980915071,-171379.979811998,-170426.978708924,-169473.97760585,-168520.976502777,-167567.975399703,-166614.055201501,-165660.073197107,-164706.091192712,-163752.109188317,-162798.127183922,-161843.360274937,-160888.556273606,-159934.210097272,-158980.3886324,-158026.567167527,-157073.545079754,-156120.543921671,-155167.542763587,-154214.541605504,-153261.54044742,-152308.539289337,-151355.538131253,-150402.536973169,-149449.535815086,-148553.742427768,-148610.161856703,-148662.242783453,-148713.778659565,-148761.52663114,-148809.274602716,-148853.609333612,-148897.622027109,-148941.121286406,-148984.525914563,-149029.031728039,-149074.73087015,-149121.628444208,-149169.599389606,-149218.637802016,-149268.733591188,-149319.87333505,-149371.847185897,-149424.115626125,-149476.50392375,-149529.008859813,-149581.479186598,-149633.763521547,-149685.700288506,-149737.221583038,-149787.839007026,-149838.068019051,-149887.867673227,-149936.94448094,-149985.741606739,-150033.550171861,-150081.343428715,-150127.800113338,-150174.256797961,-150220.566574347,-150266.824151218,-150313.081728088,-150359.339304959,-150405.717330477,-150452.67813623,-150499.638941983,-150546.962739837,-150594.317163374,-150641.944617064,-150689.925253866,-150738.228367004,-150786.797683219,-150835.572020621,-150884.485524734,-150933.470060723,-150982.457793639,-151876.744583801,-152722.102173172,-153567.459762543,-154412.817351914,-155258.174941285,-156103.532530656,-156948.890120027,-157794.247709398,-158639.605298769,-159484.96288814,-160355.092140674,-161226.393090115,-162097.694039556,-162968.994988998,-163843.006669146,-164747.444494218,-165661.471159546,-166583.384663832,-167512.309756692,-168455.921230392,-169413.060921354,-170370.200612316,-171327.340303279,-172284.479994241,-173241.619685203,-174198.759376166,-175155.899067128,-176113.038758091,-177082.113315106,-178059.524200089,-179036.935085072,-180014.345970055,-180991.756855038,-181969.167740021,-182946.578625004,-183923.989509987,-184901.40039497,-185889.95921575,-186879.746380957,-187869.533546164,-188859.320711372,-189849.107876579,-190838.895041786,-191828.682206993,-192818.469372201,-193812.993160178,-194817.518939659,-195822.044719139,-196826.570498619,-197831.022277164,-198834.766026521,-199838.509775877,-200840.824541926,-201840.581098773,-202841.340405656,-203842.300792755,-204846.883604104,-205852.754455218,-206860.033132432,-207868.148794724,-208876.299532785,-209884.482480487,-210891.440198125,-211894.669601946,-212892.24637392,-213882.905164495,-214865.182835618,-215837.637060307,-216798.27824942,-217745.315323108,-218678.459135177,-219605.791837419,-220535.255643471,-221469.476458585,-222406.983896852,-223346.228919942,-224285.553628333,-225222.818876282,-226156.406767267,-227085.225692535,-228004.93099324,-228919.519683273,-229828.748952211,-230724.038572765,-231619.328193318,-232496.728983555,-233372.284044481,-234238.130796282,-235093.535547263,-236894.20415334,-237839.468008436,-238784.731863532,-239729.995718627,-240669.287691113,-241594.017444464,-242509.858882167,-243415.763103669,-244312.368345715,-245209.190290504,-246145.400984439,-247136.918245438,-248188.054697432,-249303.652831535,-250488.665833257,-251751.870467425,-253117.191288557,-254561.51947594,-255931.875897704,-257210.514897218,-258408.025183016,-259529.126619329,-260578.895221806,-261562.904130156,-262484.216885088,-263380.010306038,-264274.992782962,-265175.653337403,-266085.026334128,-267000.736674931,-267919.297473302,-268836.335265355,-269748.001453055,-270648.584260336,-271541.437629324,-272428.147948198,-273314.858267072,-274201.568585946,-275088.27890482,-275974.989223694,-276861.699542569,-277748.409861443,-278635.120180317,-279521.830499191,-280408.670886543,-281296.538184969,-282186.298222639,-283076.47852721,-283966.733646407,-284856.712492905,-285744.774362113,-286632.83623132,-287520.898100528,-288408.959969735,-289300.817818072,-290217.894948911,-291134.97207975,-292052.049210589,-292969.126341428,-293886.203472267,-294803.280603106,-295720.357733945,-296637.434864784,-297554.511995623,-298478.875079139,-299411.908069866,-300344.941060592,-301277.974051319,-302211.007042045,-303121.705218491,-304022.933728815,-304924.162239139,-305825.390749463,-306726.619259787,-307624.791844724,-308522.102968903,-309419.414093082,-310316.72521726,-311214.036341439,-312119.299628288,-313023.624921847,-313924.318319147,-314820.665395302,-315711.003949305,-316611.016825303,-317537.527458142,-318497.210178567,-319480.347636667,-320488.785964498,-321518.504205632,-322559.113865131,-323613.942986666,-221826.191760553,-224317.589511965,-288763.777884776,-192908.300238782,-194922.355433405,-160663.826104487,-191614.372986352,-288757.550250432,-252918.175234719,-212317.477922291,-233414.088135283,-210684.9121886,-212860.660343724,-222061.570864273,-289637.357691066,-237933.820568042,-204939.246992005,-176562.983296467,-223093.61795489,-259351.059327706,-166589.043599298,-259553.882653232,-182069.245731176,-280016.373520381,-279821.384679699,-248792.07635852,-169876.430018695,-244124.535815598,-176900.963687533,-195564.133991105,-279236.418883422,-223314.663139281,-287625.802767435,-242289.843675167,-188306.390902184,-310049.257443548,-308995.535289603,-239506.786953815,-295722.703934751,-260025.511600912,-251592.600684274,-219065.013136148,-185150.499685544,-231805.663987698,-244048.803550754,-305257.490809389,-241728.403832234,-176957.29363175,-206333.41569691,-245624.381431476,-237304.256686915,-233309.676600935,-169139.73859767,-306648.563750603,-266174.501172185,-221461.807019989,-233289.609113874,-196773.949804912,-275629.128959653,-252376.733567995,-237957.149656797,-181113.043218011,-279528.901781561,-170264.579308855,-200057.735688927,-279138.924644524,-231261.349912406,-234282.803299661,-298621.476390983,-204643.514104462,-292966.376525549,-270656.918602648,-161139.110927364,-260707.275080184,-159944.297828159,-203069.793282782,-311916.505362173,-251791.767590277,-215325.50278588,-250855.125978062,-245370.141611549,-166113.758413538,-211772.786266162,-315964.612838977,-160787.928270827,-311294.089752182,-303508.397024909,-297646.126664667,-297498.726799042,-203756.315804714,-215367.976547598,-302844.661624427,-298744.717252069,-263379.663965006,-270949.401682229,-251293.850053106,-240978.602862609,-299843.307658028,-290844.739460218,-279528.901781561,-279333.913122321,-226651.967160578,-293772.817342355,-185758.86424431,-307655.12676563,-172514.260731225,-235179.431685348,-261787.546918684,-271144.390341468,-197868.545220545,-185302.590734515,-231316.799681399,-234592.794626654,-271046.895921127,-230794.740739565,-207421.289774472,-290788.275067467,-263184.675487209,-212482.507238597,-239208.036322648,-279431.40736122,-193720.604898687,-310671.673597865,-227837.413134222,-202869.117504967,-176619.313240683,-227122.22259219,-256719.873384716,-299681.92079021,-209597.038111038,-280113.86775928,-279918.87910004,-178574.142313617,-288538.767103665,-194642.369354175,-243236.640959948,-195333.692831872,-212554.064159749,-261121.625867667,-315255.312267695,-186215.137572664,-249190.526293417,-212447.992612389,-264311.663383221,-183181.764170673,-267408.268602306,-311444.709306396,-270559.424182307,-284700.973060283,-211750.565425246,-242793.041719353,-185606.773013898,-301657.670309126,-231150.82722949,-257982.65720361,-159100.667022607,-247265.245597248,-255322.454690406,-241549.757111123,-257486.132596803,-204436.117170018,-186367.228621634,-173639.101442411,-259627.003241685,-218849.75214181,-257082.140334061,-270461.929943409,-171389.42002004,-201152.33110456,-219467.370969203,-297706.171089852,-293734.555394174,-274849.174504137,-270949.401682229,-217292.720356838,-291283.705578913,-199835.31263386,-170852.249498393,-302492.228832395,-301066.1110914,-301003.20714003,-257575.466480995,-154735.054342009,-167786.280038079,-279485.465288502,-183831.86057475,-300639.656488417,-208819.377082614,-287193.620039981,-286367.947276602,-239872.582406061,-152093.774235297,-287790.643384043,-298341.28038334,-285358.604569877,-228625.504356983,-304648.069532317,-164962.696972176,-192606.152105849,-154399.846203517,-304959.821209758,-266340.732723294,-151525.313130639,-151427.524229904,-248285.140245904,-236909.997155396,-301977.298021633,-156245.802264352,-295375.842864171,-323271.842967892,-248352.459588753,-198310.920271852,-289841.320472458,-262270.998991063,-241263.4956783,-310511.953093529,-204121.369159111,-249084.559256659,-193728.31509575,-164418.46617877,-230904.661034985,-321401.501462881,-188522.488525661,-273216.022712731,-173076.68126826,-305070.805844049,-281831.018132372,-251143.769744566,-304555.21676165,-273621.252772913,-262282.62035224,-280466.934872603,-164247.519493969,-273024.005710843,-243200.147345663,-285209.774578274,-309885.851670409,-314891.044375789,-253152.638419138,-255293.535373113,-257079.471321993,-153003.366471644,-246189.371368911,-260265.57317876,-150693.965405299,-263049.605332394,-249638.129777881,-313002.109055778,-166667.440340159,-237337.437895741,-150582.517005213,-305965.632691951,-242836.024788813,-207506.234939161,-151335.435693013,-243878.235535443,-234095.079397332,-292565.180828612,-154819.827681108,-215458.477466842,-249923.633508842,-320099.679486857,-280275.000063948,-254644.770571997,-175324.289352704,-208912.571145714,-151694.041868225,-223019.41542769,-169885.907098118,-251995.758132297,-287565.376769689,-299387.384512767,-273847.203423671,-297453.140399525,-302504.030546937,-197502.104379046,-291182.07264761,-297381.616137936,-259138.483130892,-292583.353153806,-258692.726907602,-202509.978978877,-293478.076761201,-270228.223009315,-248968.484629469,-212028.980579494,-200557.518994357,-278569.990883411,-312907.823618947,-233696.121061905,-228309.964533115,-171905.446014816,-315966.767100043,-295252.941662541,-152001.036135985,-228242.187593499,-256961.578101469,-295106.634077856,-304588.746702033,-317106.379550143,-309248.521708077,-298538.462676563,-266185.062730542,-233055.874782037,-317499.478759964,-261282.290777701,-308586.51853453,-305641.874814815,-221181.278066245,-313054.241883262,-264452.283667888,-265556.620161078,-182609.955460804,-292830.081455679,-241717.518218435,-283489.808406523,-313460.910778636,-317901.088326142,-254035.376874112,-201870.757664962,-219416.04882465,-255978.572429254,-307200.012851764,-235416.753125858,-170377.978392064,-303300.727927439,-180130.29700788,-311815.269607445,-252784.372633834,-220235.321220886,-314899.966605525,-284551.745710664,-184095.641886015,-296422.446866355,-287337.659599455,-312774.652980607,-238167.729084216,-278982.933862286,-264729.277949703,-292562.688722511,-176276.443713031,-286208.05984561,-270148.017110105,-232773.325834319,-317003.264056122,-301390.41093584,-287036.525908838,-311244.499653123,-248685.034459254,-254343.838826346,-229070.809333977,-245660.168329106,-155002.113947634,-272378.758163224,-270998.669540266,-299608.72762495,-193789.893068861,-237397.039420963,-266001.777988597,-269828.498988577,-296296.153061894,-151034.653274141,-275749.579605404,-190170.45868658,-308919.884492225,-286967.787326534,-316138.006995143,-304693.671717289,-289762.146252555,-173124.296552408,-311174.135350347,-250539.150874795,-275828.406726728,-300027.500335825,-158846.585420119,-214322.620685047,-204301.277446564,-297503.099551647,-199442.340070567,-281611.304732385,-193328.102995986,-200184.915111872,-300346.324804524,-220917.994631873,-216546.578346925,-300902.318302438,-225089.873143337,-301470.957220273,-200331.384724278,-300948.163256829,-282016.545134761,-246638.570273028,-196764.413938276,-298787.859446177,-291948.517656322,-194093.919852436,-152431.951128068,-270637.228152099,-319611.964978619,-236242.326821896,-218526.954274386,-182012.260962721,-223735.842134183,-228430.206339104,-212128.192167082,-279938.460866821,-294881.477417364,-165440.121359315,-277610.898724687,-278451.893359176,-279861.046634482,-268055.962351197,-151735.561789261,-265547.834738624,-305661.137606531,-320412.198119703,-271501.658018923,-253874.139151631,-320426.420996518,-215357.550526427,-288722.547545199,-305583.647168545,-151722.419218214,-245205.191766846,-184986.140434606,-264381.106867761,-270901.815247361,-277509.934951542,-157200.395023943,-320604.078858637,-241260.384854921,-175397.812742434,-191158.424439209,-227532.46625818,-316661.79707526,-261374.040925231,-254842.403022864,-194064.346436672,-185660.635891011,-225118.685228398,-229796.426622948,-253442.829886046,-273977.237655308,-294474.271272177,-151836.5790878,-316579.840804913,-224690.588756604,-264089.8472517,-297798.954005342,-158768.400966419,-299613.745766809,-317137.188041716,-251725.19070816,-256392.084591735,-288064.580549316,-151888.129849294,-245668.204396031,-265801.933759546,-288356.586980719,-308354.803470898,-275761.623182155,-315264.037814284,-281805.631309705,-282003.380790672,-300017.215113659,-275764.747069358,-283906.006999505,-259607.879253112,-308114.101765614,-303902.961741899,-303752.321503295,-259308.458919461,-276842.658165776,-151509.778428042,-186285.167477802,-290391.789423844,-181045.261923787,-150832.320023502,-229648.630487958,-252853.615624946,-232675.897458873,-307451.241097096,-281940.625621756,-206721.93748753,-177178.692083748,-275207.459345537,-154758.563602686,-251033.319638456,-226955.763875675,-294619.723902078,-311505.533206485,-288615.861272286,-154393.534742962,-175537.75098656,-286298.039481941,-321058.719208839,-232260.651617921,-318130.220199781,-192494.894582765,-271520.488071429,-234522.109352951,-150548.33931683,-312231.152854202,-285084.00586701,-275434.140481855,-268039.578862846,-300545.157494332,-251994.068725678,-313454.580629553,-253846.47232858,-275148.229413566,-282455.221127671,-263890.977366279,-254369.527749971,-318110.290064327,-176928.178901404,-240926.779756648,-241602.876075968,-193249.568540635,-154831.285744471,-237049.355329394,-296442.369562686,-151767.292006279,-222976.408589327,-305044.895379721,-313704.661072687,-310343.267176258,-261450.032470716,-173762.026957271,-214150.549604069,-310800.865938545,-250286.699165944,-298885.043600669,-266192.427643447,-293001.351833038,-219770.077399221,-210133.466716279,-300231.320503791,-217557.802425922,-261320.104382658,-207050.883880579,-271783.998852647,-243960.503704616,-184016.627335088,-224824.469377557,-306947.037682694,-255210.19034557,-204017.088444457,-296857.822066095,-153971.171113132,-317072.036749526,-254593.159027428,-186909.678198761,-178492.010770283,-308468.701701095,-319255.666564418,-310649.434975631,-300617.934613047,-175779.779395871,-291945.010745021,-255316.180606907,-224970.236627915,-250845.694622027,-222027.065854492,-246808.482012565,-290854.185150172,-266511.272796535,-279230.871838084,-319203.885008679,-313456.643625285,-253866.29686478,-152088.499534426,-259881.187540355,-310513.329694111,-237563.445700734,-303079.255991424,-258339.188407919,-198933.721446129,-218841.181909588,-292391.997689512,-265385.86707491,-155417.106132647,-241530.581955902,-151784.27915222,-277306.03150169,-286927.760310413,-313975.673211206,-212232.283637712,-230231.950968026,-304879.056650578,-294596.933877556,-262876.290829274,-279871.371773892,-274959.138164199,-245048.802537939,-258258.492252379,-237433.650791117,-160979.316031801,-270863.031834823,-271030.820521321,-157496.397352882,-302551.559646127,-238077.315620024,-261601.487928302,-235295.912561213,-264684.231158744,-291842.830584596,-152979.41757696,-304239.3060703,-283828.22788727,-214374.782724695,-285410.155875696,-318365.498240298,-306605.272955483,-288468.045904442,-202975.012509245,-236963.472653804,-214968.55226907,-293896.48368497,-179175.192763243,-304580.71625981,-299767.010745629,-210543.012919156,-168277.980464544,-279508.37361322,-300153.40585437,-285327.226168929,-186921.158942376,-154604.03125138,-211917.468130375,-243196.163060415,-293480.520240842,-216603.082656919,-246884.152042797,-153431.92017732,-301906.804713583,-245119.147607861,-195145.45127547,-249908.259563873,-312062.89060404,-208279.8057202,-245792.384945322,-204098.853293475,-227247.070303776,-275418.980275582,-178093.950209954,-231752.485872756,-312263.480922665,-280396.040396254,-276555.402067817,-259501.24704992,-161706.191621158,-246051.74832492,-308477.613588636,-256006.704469636,-177230.544220431,-215336.320903249,-262628.919315452,-182515.529406409,-314165.156919656,-240318.912167566,-243442.414351225,-236732.41241441,-290950.091227097,-232477.689292487,-256905.593078527,-290579.009461692,-276836.860367571,-224026.632904072,-293520.155160764,-291238.357412765,-255734.35492201,-282623.867127698,-294762.184553122,-247207.888872658,-204153.469699285,-277622.277135004,-171132.207272668,-284270.678055572,-320305.879629758,-231600.573544172,-305716.379261531,-297439.632948583,-263656.870352538,-307161.069044483,-226242.400636195,-289585.843036534,-228113.748055747,-160342.530214078,-300823.479205941,-187083.744779041,-209746.403538032,-285568.921632139,-178982.596416995,-320183.660105785,-162615.005834137,-256954.406968638,-227345.081108097,-254829.180435888,-236386.277837666,-182224.941125811,-311713.190510223,-250024.809206262,-292288.338413765,-297571.419547219,-237131.518080756,-194490.938935588,-276925.454694103,-266448.271410802,-285837.737415045,-160155.946130499,-233578.896999539,-264355.39762263,-320009.604412026,-304136.633839125,-250525.436761396,-275464.046662278,-243073.23173941,-269794.357951481,-270982.254481004,-166525.962923404,-297665.71568913,-238559.268255576,-268522.918985501,-228761.06331659,-272728.814064836,-219379.434007098,-280035.345641986,-309974.379226278,-287830.789244685,-303427.658956263,-164240.716506991,-311052.009269013,-248272.396847294,-271573.781764935,-297779.213113912,-213363.744442323,-207478.280893398,-223564.622742031,-209868.569173726,-200202.817451346,-304783.17289102,-220930.183725121,-249000.348932137,-221971.156674313,-200605.033578186,-299920.681791682,-150545.912166971,-249270.051785064,-321322.748188457,-297212.945461795,-320990.709297674,-295174.98927318,-244156.427697452,-171530.510602415,-270614.720269912,-313675.409172177,-233337.812995925,-223491.155417884,-225507.16038842,-279958.039367647,-291894.888657968,-276230.036614412,-279880.610257062,-269011.217737034,-268177.436511365,-307313.054312758,-245031.551575306,-173512.93809476,-304252.899524758,-272344.372905174,-256369.675232563,-268417.803456128,-222368.585272097,-289882.995163533,-303172.519002491,-246223.952221455,-273265.472194228,-258869.338575052,-242259.11030059,-189695.409012557,-228422.662887255,-320140.281129846,-318848.278251447,-250165.786024492,-260611.195544691,-266392.147403275,-300606.014961194,-314089.31651537,-258429.028515338,-262634.489948253,-265429.366165464,-305798.294707423,-282990.3351855,-314339.517073119,-282782.136458784,-284067.799571673,-237370.606947952,-281809.51017714,-206641.022331477,-302331.585695403,-258431.059395832,-168646.478495629,-301140.968442838,-206811.053641302,-163963.837440857,-230634.027747397,-269185.724314204,-249668.49990554,-295009.706119492,-321224.999930735,-277226.608706225,-199276.246596833,-272576.499660742,-150972.877166348,-174694.542033698,-282833.193516549,-238962.212690671,-233266.064834888,-321237.077618585,-268861.18659928,-237777.106376483,-308597.223613523,-273191.771172763,-265129.756043463,-317594.486517464,-303526.416757367,-240286.178213312,-254580.36627659,-263470.291349337,-252007.561298375,-237594.783095786,-242219.537070953,-185236.912534708,-234088.49922115,-294143.94229096,-259084.131811869,-218704.061097099,-252480.840824081,-214773.100932688,-268845.900472247,-295224.549615749,-213972.802835362,-261569.643402814,-206688.579372738,-291782.82299214,-247234.04972697,-239227.671433382,-308337.307924426,-225103.72170527,-206839.084981365,-296043.093159402,-320251.211875858,-229190.119616653,-305886.267050721,-318220.580864346,-299578.198554084,-268602.651502489,-315009.143714445,-258255.627645818,-302539.056476748,-246311.849266316,-202126.228206089,-187510.352700529,-291854.559178005,-281383.201090655,-315658.784517617,-252526.260296942,-232630.87098942,-234392.261462265,-190771.850247197,-303191.737159471,-266131.91346488,-255556.750766728,-220835.458835725,-295168.829679593,-295153.059646701,-283415.895460782,-240346.440913243,-278144.482681988,-286568.450321617,-151883.306031834,-303124.918415146,-289653.992113726,-261900.582573533,-302193.968638999,-246860.964115931,-243404.14841132,-272920.934125789,-271014.744940073,-156672.304949469,-301557.953042637,-320372.252389606,-236272.09456206,-263561.702018853,-233042.308362439,-154962.860418831,-267032.627561902,-294037.88689194,-303525.086968826,-286161.526137324,-305783.20109037,-198681.180104921,-297314.290081732,-178383.854454149,-308040.767438465,-275283.671705957,-296097.050023481,-163211.08005501,-203407.076392178,-283461.231651757,-191637.4908766,-196566.025599967,-301046.187306417,-218938.330682887,-214234.891655494,-228120.350186413,-205093.015109537,-300334.424385524,-323124.630350428,-237548.926710548,-192854.146510115,-313644.495988561,-242500.210815427,-227530.858500469,-277653.949472018,-278991.76065352,-259372.399449073,-259345.460934277,-307069.375688304,-308086.413169521,-317742.628118055,-244209.351975013,-268538.158300494,-240242.471734532,-289287.947178708,-229636.321280094,-259130.072567644,-185711.254584864,-255582.134141997,-154574.980388624,-216774.800107408,-319533.924226996,-245625.681100642,-295746.103423008,-294676.721552917,-320463.236126057,-285340.916513425,-305357.281559895,-276686.06118576,-168169.117068871,-284049.005626128,-296999.741112718,-285838.556988635,-306894.246583574,-306028.465336609,-301304.000808307,-260215.042484285,-172909.057512555,-274525.127226984,-305326.602980806,-289990.928124544,-228867.906355406,-234777.945499742,-278925.437790227,-178410.432987984,-260036.306675144,-253630.076051544,-303508.684973389,-294207.980073493,-311610.132896205,-195442.822221542,-290483.319119324,-208482.56281939,-289926.667531214,-236155.475064494,-315023.362780977,-274168.272693001,-268372.437871546,-285466.00971606,-277676.509790948,-267419.168187141,-298402.804649614,-185008.39974123,-290227.122628688,-311325.858434907,-314318.259144986,-275303.87073848,-239611.500589122,-267102.38385248,-270965.828172337,-290452.329730061,-232933.679571294,-240103.578777865,-297162.035190621,-284277.673189646,-312574.685189541,-310969.405250666,-263814.434599946,-167686.436487947,-204544.817267875,-310927.615888236,-249279.54809734,-267323.192255039,-294160.063414155,-210409.082945975,-298390.538080625,-308067.531768925,-177420.593120763,-222919.358138862,-219664.679001743,-200878.682432094,-251939.572615926,-320189.850544515,-240842.419016695,-229264.406332948,-227687.172068055,-320681.933813635,-203661.619764599,-222513.15282784,-279977.539485521,-277053.374581918,-279899.8930074,-269975.821741345,-265391.281304692,-310309.964401281,-241439.001275215,-257680.145460876,-273184.033396514,-258784.430243092,-220577.78431842,-261330.656687473,-291108.555426908,-242763.466307728,-276467.580321393,-260676.045824575,-195983.220596669,-287276.781629645,-184652.249383715,-229322.51985219,-293266.594115422,-246706.73731298,-259434.843807814,-239671.931848686,-268684.073607538,-301594.722267346,-241031.35622179,-262105.7846039,-265056.798571383,-289706.895888339,-304997.486395146,-284570.867884817,-286227.528392573,-303014.903588434,-298962.772997791,-215116.066806051,-305057.82584505,-289468.833438632,-262594.237944031,-236613.653534024,-179725.160208895,-308282.25369903,-293056.082910202,-153697.405954891,-213236.704911173,-236076.148977623,-298096.864197088,-197156.695570369,-169296.048173532,-189886.133240076,-222163.492469825,-316404.317063797,-318228.820872098,-307655.846727553,-310313.022425032,-267628.932758462,-273208.19748143,-205099.057491581,-308424.249314184,-298573.57279547,-319299.305002442,-296468.397601441,-268935.530651252,-297855.587683495,-285067.466338525,-253580.660499705,-156432.387799466,-242613.389083702,-302709.941108379,-262737.673483031,-268165.590887855,-288973.738232033,-244907.861282345,-288284.714531899,-234439.22065208,-285784.143253559,-237193.396884731,-213484.689154686,-218444.576877118,-270328.695074594,-252185.95472643,-292245.91708879,-226670.229481013,-292472.899963182,-300920.356360541,-222345.570440915,-283697.907884456,-292477.05607402,-268539.017609885,-225452.97309298,-232736.612493752,-315230.246415955,-292715.641439619,-308572.630781121,-281885.821967785,-263119.977437177,-278420.885462828,-227732.809815662,-282986.464301513,-265196.476990541,-301864.781835277,-308866.642509693,-245397.2254614,-283091.845643441,-293765.501237353,-277997.577790184,-249325.987455778,-224778.010060497,-309914.10237387,-247688.991633804,-225568.870995645,-282354.903469548,-233028.293418176,-267005.705739772,-297951.387253956,-321745.041055901,-308067.482598138,-160367.846637243,-286930.543268067,-302669.731561589,-259490.086188582,-207456.506581285,-288165.190510528,-298742.322943215,-275221.496970053,-274968.304796331,-250785.999109841,-320426.784969204,-301351.005721511,-220818.41997881,-320853.690637041,-298972.892200511,-274702.467928457,-256542.520526628,-316981.522947898,-238461.791616553,-302576.700614862,-300648.038383826,-277606.437428377,-265475.842538073,-201864.181299063,-276403.190178463,-303358.283512479,-248631.796468446,-242343.693488456,-296471.351477475,-235755.179138518,-308100.257376847,-207203.349425872,-242550.633551902,-314797.944299654,-265657.409568445,-284840.034032257,-251482.483887149,-231887.940866088,-207339.230082176,-255963.213181088,-268025.895594589,-247202.104138278,-256889.341498522,-232493.293124491,-290631.910333232,-287771.777768902,-212002.303885529,-299378.378819704,-313724.996368164,-306887.353419913,-274338.26825875,-259170.954538549,-278724.743142442,-307092.540572034,-263919.410963293,-252975.185767941,-256043.683441316,-307675.436477783,-272526.095068469,-309581.296346239,-231054.967420279,-282148.493398234,-305761.17511818,-150495.062497431,-260355.912796051,-270146.692764825,-256563.38254828,-288722.514885636,-258313.397876764,-255220.217194304,-280140.898083736,-273758.478096003,-260552.034197802,-220857.925530574,-311743.477174555,-247243.69210007,-231837.129662256,-297739.134931142,-223941.564903138,-243404.98685488,-249346.839498119,-313250.062091264,-314321.360714821,-186064.037015663,-240419.726976815,-271566.849772683,-309220.912946472,-253695.547407452,-191174.152014669,-273894.762823678,-267070.48707169,-211873.738064133,-265915.227787827,-293512.533325964,-153009.831250704,-255636.266460506,-318969.658243208,-243687.752807249,-291961.278110481,-153142.906631985,-254846.173569416,-297529.864970759,-238168.18740675,-317798.424804184,-318854.986888577,-271211.144855319,-246356.830556706,-235710.858841395,-282361.381130991,-279579.431387383,-207465.641823948,-196684.338132992,-216818.236056141,-252425.98763644,-257968.583835018,-294816.794427019,-196256.173076117,-202190.699453601,-317240.928422044,-300591.080650231,-314735.959170657,-259578.354100925,-179062.016853715,-271334.37265258,-164924.955762583,-296148.499358887,-274635.354340855,-286849.06110571,-314402.142329551,-268591.866226125,-261596.24280248,-290381.709049716,-295999.459257429,-282014.283822905,-239154.870182879,-323192.582018706,-287226.799434387,-223795.573571889,-293228.213141278,-285208.784449189,-290903.349949144,-273208.824907924,-292746.051121638,-231070.808396999,-295480.072956502,-309268.129602509,-264171.56637733,-288102.483060862,-222086.832129065,-198311.880825889,-171357.073625933,-283931.303101164,-261866.326502199,-300224.947171509,-305054.487493382,-277993.965642513,-283328.969675037,-295191.186239137,-314187.315888844,-313354.072820197,-272471.293773245,-305328.734743062,-244823.809356704,-296592.611898947,-284291.77540752,-257459.94996945,-230473.226211525,-299591.248589702,-155899.025745752,-212377.881239785,-304764.777573587,-262074.579117195,-306573.901267891,-227170.562011427,-300003.995611198,-211188.862128504,-298387.890660157,-259493.301522562,-320227.448596357,-277358.526305997,-295599.961132001,-303617.211068353,-248714.585739092,-301556.604202684,-284386.709499561,-152830.26117117,-262233.237459964,-266767.224521891,-218641.18780943,-252373.076241262,-197509.045987726,-229837.270853913,-309399.208395838,-276854.098266379,-284358.471859925,-249551.321748005,-239405.886866819,-304593.497579801,-228516.539535222,-318418.351029704,-280826.317075322,-248657.033420008,-260836.65684633,-243518.556675027,-286507.405062267,-301436.091685205,-257580.610362172,-202264.587178901,-157466.872926463,-273012.758664547,-257752.613220953,-283082.994720418,-193178.15622877,-282589.068726176,-226626.114213369,-252395.967147547,-239456.061209173,-305794.754410791,-295969.285994358,-304234.828444209,-152526.445041776,-318036.463666429,-283111.617561456,-244428.520686066,-233635.623031678,-216474.441537087,-252817.896405188,-303634.29328991,-288632.880714906,-262080.682282314,-315472.550617132,-167785.582937851,-256650.116368371,-307110.080753242,-205966.050226893,-259037.829623596,-283834.37786443,-312967.907054165,-272782.493141186,-279880.489416679,-309605.988790309,-269994.507366005,-298184.926172742,-187589.585707644,-247015.356031117,-225755.199608864,-189110.532848637,-304383.396796423,-244060.674576147,-226376.688413032,-301750.663153029,-251075.778884813,-247730.442606873,-323319.016622171,-315832.691973249,-315572.508294293,-212762.219521823,-273593.233770907,-291363.44517214,-218419.495784249,-277640.890727183,-269832.184075938,-303873.439311342,-239305.231726545,-288826.575511124,-231555.858792105,-266837.811816905,-201347.848304395,-274087.577988998,-237633.564331019,-233892.731994217,-288489.544243247,-300558.704318191,-296438.589218265,-249090.813018652,-289384.016916333,-299104.215214794,-266097.944253375,-306403.729521944,-265237.998725997,-304109.28780556,-233804.118616273,-214323.063222127,-267155.429696192,-272627.454748095,-245652.183428829,-239489.497706917,-271900.675504448,-253926.915372506,-256631.059694786,-308667.830685717,-260165.103472227,-250339.251668812,-294181.489176153,-239970.954461437,-288458.797804845,-290174.200165547,-229635.061891056,-244678.864583008,-282251.698524612,-264817.312709054,-297191.061377262,-276478.75188781,-290506.809691474,-306102.973412164,-253784.172397685,-248103.901988467,-263893.447699338,-279533.205949084,-298516.725197179,-274996.415426555,-269813.271104431,-301267.465825241,-267330.780341624,-319844.78647567,-270447.202657787,-281662.294475162,-292730.846462071,-280766.251602863,-292296.795970495,-274394.34128107,-246284.673062478,-272113.051026392,-316130.807557357,-239234.107181719,-314879.80966755,-321796.318747159,-274382.680728417,-297346.782355221,-260453.800219801,-306890.765437039,-292267.686501969,-310666.580883337,-278461.507971648,-315013.217269164,-282630.055752008,-255740.987172051,-285870.514008174,-309068.019923787,-218723.041927921,-312017.373878259,-298030.508855674,-267880.402684561,-320993.133000134,-293199.010048671],"Archive514_field14":[-324668.772108201,-314529.362758491,-243553.497310526,-148496.534657002,-151031.38699443,-235948.940298245,-324832.338855431,-325005.666970621,-325179.525236042,-325337.215650872,-325463.164576231,-325551.313669239,-325599.283771047,-325607.336394187,-325576.963676572,-325509.473897982,-325410.405609679,-325284.456950478,-325136.131872151,-324968.276765706,-324778.110619606,-324565.14886595,-324345.12187202,-324119.63136931,-323886.18781933,-323643.235972957,-323385.117554683,-323109.296009203,-322817.688291038,-322506.123681448,-322168.235368315,-321789.254194849,-321362.586384407,-320881.715378028,-320305.284650223,-319546.977589507,-318524.237206451,-317047.022883242,-315617.313242499,-314889.187975613,-313315.13402471,-312138.130933907,-311002.919003792,-309912.393345058,-308867.428348682,-307866.846752928,-306912.659896703,-305997.262683365,-305095.534109144,-304168.763445611,-303211.192633925,-302225.0688831,-301213.159650229,-300177.818594342,-299123.116500238,-298051.849816711,-296967.914875911,-295866.365917077,-294740.627357317,-293590.495433795,-292417.261587971,-291221.978470703,-290005.031313369,-288768.899109245,-287520.912075531,-286307.141822184,-285153.628255544,-284046.811802488,-282986.492038695,-281962.348665071,-280980.889290367,-280035.931828182,-279127.817765304,-278226.006227416,-277302.092814958,-276351.793272878,-275373.313409261,-274351.941873482,-273261.965979509,-272171.990085536,-271082.014191564,-269990.613713718,-268891.885355287,-267793.156996856,-266694.428638424,-265607.748891673,-264605.1197889,-263602.490686128,-262639.694166695,-261702.656144237,-260753.324971123,-259789.050303397,-258824.775635671,-257860.500967946,-256896.22630022,-255931.951632494,-254967.676964768,-254003.402297042,-253039.127629316,-252062.120147996,-251062.828464921,-250068.639421296,-249104.770447779,-248140.901474262,-247217.401918604,-246301.425766585,-245385.449614565,-244469.473462546,-242475.196230804,-241396.895151081,-240318.594071359,-239240.292991637,-238173.332866033,-237117.604198881,-236068.632738646,-235027.332887726,-233993.773722216,-232940.921348005,-231846.021340693,-230715.186058946,-229553.343358552,-228368.271973226,-227171.005381366,-225967.306779773,-224762.796179762,-223556.12682541,-222348.973216921,-221143.557941582,-219943.792608078,-218760.304948914,-217605.449857588,-216486.664684057,-215409.983875601,-214365.483933972,-213315.65379693,-212257.663126168,-211195.369191571,-210132.543278821,-209073.759129213,-208024.432612202,-206997.716042862,-205973.412347441,-204974.703840377,-203995.477661926,-203016.251483476,-202037.025305025,-201057.799126574,-200078.572948124,-199099.346769673,-198120.120591223,-197140.894412772,-196161.668234322,-195205.007388841,-194252.006285767,-193299.005182693,-192346.00407962,-191393.002976546,-190440.001873472,-189487.000770399,-188533.999667325,-187580.998564251,-186627.997461177,-185674.996358104,-184721.99525503,-183768.994151956,-182815.993048882,-181862.991945809,-180909.990842735,-179956.989739661,-179003.988636588,-178050.987533514,-177097.98643044,-176144.985327366,-175191.984224293,-174238.983121219,-173285.982018145,-172332.980915071,-171379.979811998,-170426.978708924,-169473.97760585,-168520.976502777,-167567.975399703,-166614.055201501,-165660.073197107,-164706.091192712,-163752.109188317,-162798.127183922,-161843.360274937,-160888.556273606,-159934.210097272,-158980.3886324,-158026.567167527,-157073.545079754,-156120.543921671,-155167.542763587,-154214.541605504,-153261.54044742,-152308.539289337,-151355.538131253,-150402.536973169,-149449.535815086,-148553.742427768,-148610.161856703,-148662.242783453,-148713.778659565,-148761.52663114,-148809.274602716,-148853.609333612,-148897.622027109,-148941.121286406,-148984.525914563,-149029.031728039,-149074.73087015,-149121.628444208,-149169.599389606,-149218.637802016,-149268.733591188,-149319.87333505,-149371.847185897,-149424.115626125,-149476.50392375,-149529.008859813,-149581.479186598,-149633.763521547,-149685.700288506,-149737.221583038,-149787.839007026,-149838.068019051,-149887.867673227,-149936.94448094,-149985.741606739,-150033.550171861,-150081.343428715,-150127.800113338,-150174.256797961,-150220.566574347,-150266.824151218,-150313.081728088,-150359.339304959,-150405.717330477,-150452.67813623,-150499.638941983,-150546.962739837,-150594.317163374,-150641.944617064,-150689.925253866,-150738.228367004,-150786.797683219,-150835.572020621,-150884.485524734,-150933.470060723,-150982.457793639,-151876.744583801,-152722.102173172,-153567.459762543,-154412.817351914,-155258.174941285,-156103.532530656,-156948.890120027,-157794.247709398,-158639.605298769,-159484.96288814,-160355.092140674,-161226.393090115,-162097.694039556,-162968.994988998,-163843.006669146,-164747.444494218,-165661.471159546,-166583.384663832,-167512.309756692,-168455.921230392,-169413.060921354,-170370.200612316,-171327.340303279,-172284.479994241,-173241.619685203,-174198.759376166,-175155.899067128,-176113.038758091,-177082.113315106,-178059.524200089,-179036.935085072,-180014.345970055,-180991.756855038,-181969.167740021,-182946.578625004,-183923.989509987,-184901.40039497,-185889.95921575,-186879.746380957,-187869.533546164,-188859.320711372,-189849.107876579,-190838.895041786,-191828.682206993,-192818.469372201,-193812.993160178,-194817.518939659,-195822.044719139,-196826.570498619,-197831.022277164,-198834.766026521,-199838.509775877,-200840.824541926,-201840.581098773,-202841.340405656,-203842.300792755,-204846.883604104,-205852.754455218,-206860.033132432,-207868.148794724,-208876.299532785,-209884.482480487,-210891.440198125,-211894.669601946,-212892.24637392,-213882.905164495,-214865.182835618,-215837.637060307,-216798.27824942,-217745.315323108,-218678.459135177,-219605.791837419,-220535.255643471,-221469.476458585,-222406.983896852,-223346.228919942,-224285.553628333,-225222.818876282,-226156.406767267,-227085.225692535,-228004.93099324,-228919.519683273,-229828.748952211,-230724.038572765,-231619.328193318,-232496.728983555,-233372.284044481,-234238.130796282,-235093.535547263,-236894.20415334,-237839.468008436,-238784.731863532,-239729.995718627,-240669.287691113,-241594.017444464,-242509.858882167,-243415.763103669,-244312.368345715,-245209.190290504,-246145.400984439,-247136.918245438,-248188.054697432,-249303.652831535,-250488.665833257,-251751.870467425,-253117.191288557,-254561.51947594,-255931.875897704,-257210.514897218,-258408.025183016,-259529.126619329,-260578.895221806,-261562.904130156,-262484.216885088,-263380.010306038,-264274.992782962,-265175.653337403,-266085.026334128,-267000.736674931,-267919.297473302,-268836.335265355,-269748.001453055,-270648.584260336,-271541.437629324,-272428.147948198,-273314.858267072,-274201.568585946,-275088.27890482,-275974.989223694,-276861.699542569,-277748.409861443,-278635.120180317,-279521.830499191,-280408.670886543,-281296.538184969,-282186.298222639,-283076.47852721,-283966.733646407,-284856.712492905,-285744.774362113,-286632.83623132,-287520.898100528,-288408.959969735,-289300.817818072,-290217.894948911,-291134.97207975,-292052.049210589,-292969.126341428,-293886.203472267,-294803.280603106,-295720.357733945,-296637.434864784,-297554.511995623,-298478.875079139,-299411.908069866,-300344.941060592,-301277.974051319,-302211.007042045,-303121.705218491,-304022.933728815,-304924.162239139,-305825.390749463,-306726.619259787,-307624.791844724,-308522.102968903,-309419.414093082,-310316.72521726,-311214.036341439,-312119.299628288,-313023.624921847,-313924.318319147,-314820.665395302,-315711.003949305,-316611.016825303,-317537.527458142,-318497.210178567,-319480.347636667,-320488.785964498,-321518.504205632,-322559.113865131,-323613.942986666,-221826.191760553,-224317.589511965,-288763.777884776,-192908.300238782,-194922.355433405,-160663.826104487,-191614.372986352,-288757.550250432,-252918.175234719,-212317.477922291,-233414.088135283,-210684.9121886,-212860.660343724,-222061.570864273,-289637.357691066,-237933.820568042,-204939.246992005,-176562.983296467,-223093.61795489,-259351.059327706,-166589.043599298,-259553.882653232,-182069.245731176,-280016.373520381,-279821.384679699,-248792.07635852,-169876.430018695,-244124.535815598,-176900.963687533,-195564.133991105,-279236.418883422,-223314.663139281,-287625.802767435,-242289.843675167,-188306.390902184,-310049.257443548,-308995.535289603,-239506.786953815,-295722.703934751,-260025.511600912,-251592.600684274,-219065.013136148,-185150.499685544,-231805.663987698,-244048.803550754,-305257.490809389,-241728.403832234,-176957.29363175,-206333.41569691,-245624.381431476,-237304.256686915,-233309.676600935,-169139.73859767,-306648.563750603,-266174.501172185,-221461.807019989,-233289.609113874,-196773.949804912,-275629.128959653,-252376.733567995,-237957.149656797,-181113.043218011,-279528.901781561,-170264.579308855,-200057.735688927,-279138.924644524,-231261.349912406,-234282.803299661,-298621.476390983,-204643.514104462,-292966.376525549,-270656.918602648,-161139.110927364,-260707.275080184,-159944.297828159,-203069.793282782,-311916.505362173,-251791.767590277,-215325.50278588,-250855.125978062,-245370.141611549,-166113.758413538,-211772.786266162,-315964.612838977,-160787.928270827,-311294.089752182,-303508.397024909,-297646.126664667,-297498.726799042,-203756.315804714,-215367.976547598,-302844.661624427,-298744.717252069,-263379.663965006,-270949.401682229,-251293.850053106,-240978.602862609,-299843.307658028,-290844.739460218,-279528.901781561,-279333.913122321,-226651.967160578,-293772.817342355,-185758.86424431,-307655.12676563,-172514.260731225,-235179.431685348,-261787.546918684,-271144.390341468,-197868.545220545,-185302.590734515,-231316.799681399,-234592.794626654,-271046.895921127,-230794.740739565,-207421.289774472,-290788.275067467,-263184.675487209,-212482.507238597,-239208.036322648,-279431.40736122,-193720.604898687,-310671.673597865,-227837.413134222,-202869.117504967,-176619.313240683,-227122.22259219,-256719.873384716,-299681.92079021,-209597.038111038,-280113.86775928,-279918.87910004,-178574.142313617,-288538.767103665,-194642.369354175,-243236.640959948,-195333.692831872,-212554.064159749,-261121.625867667,-315255.312267695,-186215.137572664,-249190.526293417,-212447.992612389,-264311.663383221,-183181.764170673,-267408.268602306,-311444.709306396,-270559.424182307,-284700.973060283,-211750.565425246,-242793.041719353,-185606.773013898,-301657.670309126,-231150.82722949,-257982.65720361,-159100.667022607,-247265.245597248,-255322.454690406,-241549.757111123,-257486.132596803,-204436.117170018,-186367.228621634,-173639.101442411,-259627.003241685,-218849.75214181,-257082.140334061,-270461.929943409,-171389.42002004,-201152.33110456,-219467.370969203,-297706.171089852,-293734.555394174,-274849.174504137,-270949.401682229,-217292.720356838,-291283.705578913,-199835.31263386,-170852.249498393,-302492.228832395,-301066.1110914,-301003.20714003,-257575.466480995,-154735.054342009,-167786.280038079,-279485.465288502,-183831.86057475,-300639.656488417,-208819.377082614,-287193.620039981,-286367.947276602,-239872.582406061,-152093.774235297,-287790.643384043,-298341.28038334,-285358.604569877,-228625.504356983,-304648.069532317,-164962.696972176,-192606.152105849,-154399.846203517,-304959.821209758,-266340.732723294,-151525.313130639,-151427.524229904,-248285.140245904,-236909.997155396,-301977.298021633,-156245.802264352,-295375.842864171,-323271.842967892,-248352.459588753,-198310.920271852,-289841.320472458,-262270.998991063,-241263.4956783,-310511.953093529,-204121.369159111,-249084.559256659,-193728.31509575,-164418.46617877,-230904.661034985,-321401.501462881,-188522.488525661,-273216.022712731,-173076.68126826,-305070.805844049,-281831.018132372,-251143.769744566,-304555.21676165,-273621.252772913,-262282.62035224,-280466.934872603,-164247.519493969,-273024.005710843,-243200.147345663,-285209.774578274,-309885.851670409,-314891.044375789,-253152.638419138,-255293.535373113,-257079.471321993,-153003.366471644,-246189.371368911,-260265.57317876,-150693.965405299,-263049.605332394,-249638.129777881,-313002.109055778,-166667.440340159,-237337.437895741,-150582.517005213,-305965.632691951,-242836.024788813,-207506.234939161,-151335.435693013,-243878.235535443,-234095.079397332,-292565.180828612,-154819.827681108,-215458.477466842,-249923.633508842,-320099.679486857,-280275.000063948,-254644.770571997,-175324.289352704,-208912.571145714,-151694.041868225,-223019.41542769,-169885.907098118,-251995.758132297,-287565.376769689,-299387.384512767,-273847.203423671,-297453.140399525,-302504.030546937,-197502.104379046,-291182.07264761,-297381.616137936,-259138.483130892,-292583.353153806,-258692.726907602,-202509.978978877,-293478.076761201,-270228.223009315,-248968.484629469,-212028.980579494,-200557.518994357,-278569.990883411,-312907.823618947,-233696.121061905,-228309.964533115,-171905.446014816,-315966.767100043,-295252.941662541,-152001.036135985,-228242.187593499,-256961.578101469,-295106.634077856,-304588.746702033,-317106.379550143,-309248.521708077,-298538.462676563,-266185.062730542,-233055.874782037,-317499.478759964,-261282.290777701,-308586.51853453,-305641.874814815,-221181.278066245,-313054.241883262,-264452.283667888,-265556.620161078,-182609.955460804,-292830.081455679,-241717.518218435,-283489.808406523,-313460.910778636,-317901.088326142,-254035.376874112,-201870.757664962,-219416.04882465,-255978.572429254,-307200.012851764,-235416.753125858,-170377.978392064,-303300.727927439,-180130.29700788,-311815.269607445,-252784.372633834,-220235.321220886,-314899.966605525,-284551.745710664,-184095.641886015,-296422.446866355,-287337.659599455,-312774.652980607,-238167.729084216,-278982.933862286,-264729.277949703,-292562.688722511,-176276.443713031,-286208.05984561,-270148.017110105,-232773.325834319,-317003.264056122,-301390.41093584,-287036.525908838,-311244.499653123,-248685.034459254,-254343.838826346,-229070.809333977,-245660.168329106,-155002.113947634,-272378.758163224,-270998.669540266,-299608.72762495,-193789.893068861,-237397.039420963,-266001.777988597,-269828.498988577,-296296.153061894,-151034.653274141,-275749.579605404,-190170.45868658,-308919.884492225,-286967.787326534,-316138.006995143,-304693.671717289,-289762.146252555,-173124.296552408,-311174.135350347,-250539.150874795,-275828.406726728,-300027.500335825,-158846.585420119,-214322.620685047,-204301.277446564,-297503.099551647,-199442.340070567,-281611.304732385,-193328.102995986,-200184.915111872,-300346.324804524,-220917.994631873,-216546.578346925,-300902.318302438,-225089.873143337,-301470.957220273,-200331.384724278,-300948.163256829,-282016.545134761,-246638.570273028,-196764.413938276,-298787.859446177,-291948.517656322,-194093.919852436,-152431.951128068,-270637.228152099,-319611.964978619,-236242.326821896,-218526.954274386,-182012.260962721,-223735.842134183,-228430.206339104,-212128.192167082,-279938.460866821,-294881.477417364,-165440.121359315,-277610.898724687,-278451.893359176,-279861.046634482,-268055.962351197,-151735.561789261,-265547.834738624,-305661.137606531,-320412.198119703,-271501.658018923,-253874.139151631,-320426.420996518,-215357.550526427,-288722.547545199,-305583.647168545,-151722.419218214,-245205.191766846,-184986.140434606,-264381.106867761,-270901.815247361,-277509.934951542,-157200.395023943,-320604.078858637,-241260.384854921,-175397.812742434,-191158.424439209,-227532.46625818,-316661.79707526,-261374.040925231,-254842.403022864,-194064.346436672,-185660.635891011,-225118.685228398,-229796.426622948,-253442.829886046,-273977.237655308,-294474.271272177,-151836.5790878,-316579.840804913,-224690.588756604,-264089.8472517,-297798.954005342,-158768.400966419,-299613.745766809,-317137.188041716,-251725.19070816,-256392.084591735,-288064.580549316,-151888.129849294,-245668.204396031,-265801.933759546,-288356.586980719,-308354.803470898,-275761.623182155,-315264.037814284,-281805.631309705,-282003.380790672,-300017.215113659,-275764.747069358,-283906.006999505,-259607.879253112,-308114.101765614,-303902.961741899,-303752.321503295,-259308.458919461,-276842.658165776,-151509.778428042,-186285.167477802,-290391.789423844,-181045.261923787,-150832.320023502,-229648.630487958,-252853.615624946,-232675.897458873,-307451.241097096,-281940.625621756,-206721.93748753,-177178.692083748,-275207.459345537,-154758.563602686,-251033.319638456,-226955.763875675,-294619.723902078,-311505.533206485,-288615.861272286,-154393.534742962,-175537.75098656,-286298.039481941,-321058.719208839,-232260.651617921,-318130.220199781,-192494.894582765,-271520.488071429,-234522.109352951,-150548.33931683,-312231.152854202,-285084.00586701,-275434.140481855,-268039.578862846,-300545.157494332,-251994.068725678,-313454.580629553,-253846.47232858,-275148.229413566,-282455.221127671,-263890.977366279,-254369.527749971,-318110.290064327,-176928.178901404,-240926.779756648,-241602.876075968,-193249.568540635,-154831.285744471,-237049.355329394,-296442.369562686,-151767.292006279,-222976.408589327,-305044.895379721,-313704.661072687,-310343.267176258,-261450.032470716,-173762.026957271,-214150.549604069,-310800.865938545,-250286.699165944,-298885.043600669,-266192.427643447,-293001.351833038,-219770.077399221,-210133.466716279,-300231.320503791,-217557.802425922,-261320.104382658,-207050.883880579,-271783.998852647,-243960.503704616,-184016.627335088,-224824.469377557,-306947.037682694,-255210.19034557,-204017.088444457,-296857.822066095,-153971.171113132,-317072.036749526,-254593.159027428,-186909.678198761,-178492.010770283,-308468.701701095,-319255.666564418,-310649.434975631,-300617.934613047,-175779.779395871,-291945.010745021,-255316.180606907,-224970.236627915,-250845.694622027,-222027.065854492,-246808.482012565,-290854.185150172,-266511.272796535,-279230.871838084,-319203.885008679,-313456.643625285,-253866.29686478,-152088.499534426,-259881.187540355,-310513.329694111,-237563.445700734,-303079.255991424,-258339.188407919,-198933.721446129,-218841.181909588,-292391.997689512,-265385.86707491,-155417.106132647,-241530.581955902,-151784.27915222,-277306.03150169,-286927.760310413,-313975.673211206,-212232.283637712,-230231.950968026,-304879.056650578,-294596.933877556,-262876.290829274,-279871.371773892,-274959.138164199,-245048.802537939,-258258.492252379,-237433.650791117,-160979.316031801,-270863.031834823,-271030.820521321,-157496.397352882,-302551.559646127,-238077.315620024,-261601.487928302,-235295.912561213,-264684.231158744,-291842.830584596,-152979.41757696,-304239.3060703,-283828.22788727,-214374.782724695,-285410.155875696,-318365.498240298,-306605.272955483,-288468.045904442,-202975.012509245,-236963.472653804,-214968.55226907,-293896.48368497,-179175.192763243,-304580.71625981,-299767.010745629,-210543.012919156,-168277.980464544,-279508.37361322,-300153.40585437,-285327.226168929,-186921.158942376,-154604.03125138,-211917.468130375,-243196.163060415,-293480.520240842,-216603.082656919,-246884.152042797,-153431.92017732,-301906.804713583,-245119.147607861,-195145.45127547,-249908.259563873,-312062.89060404,-208279.8057202,-245792.384945322,-204098.853293475,-227247.070303776,-275418.980275582,-178093.950209954,-231752.485872756,-312263.480922665,-280396.040396254,-276555.402067817,-259501.24704992,-161706.191621158,-246051.74832492,-308477.613588636,-256006.704469636,-177230.544220431,-215336.320903249,-262628.919315452,-182515.529406409,-314165.156919656,-240318.912167566,-243442.414351225,-236732.41241441,-290950.091227097,-232477.689292487,-256905.593078527,-290579.009461692,-276836.860367571,-224026.632904072,-293520.155160764,-291238.357412765,-255734.35492201,-282623.867127698,-294762.184553122,-247207.888872658,-204153.469699285,-277622.277135004,-171132.207272668,-284270.678055572,-320305.879629758,-231600.573544172,-305716.379261531,-297439.632948583,-263656.870352538,-307161.069044483,-226242.400636195,-289585.843036534,-228113.748055747,-160342.530214078,-300823.479205941,-187083.744779041,-209746.403538032,-285568.921632139,-178982.596416995,-320183.660105785,-162615.005834137,-256954.406968638,-227345.081108097,-254829.180435888,-236386.277837666,-182224.941125811,-311713.190510223,-250024.809206262,-292288.338413765,-297571.419547219,-237131.518080756,-194490.938935588,-276925.454694103,-266448.271410802,-285837.737415045,-160155.946130499,-233578.896999539,-264355.39762263,-320009.604412026,-304136.633839125,-250525.436761396,-275464.046662278,-243073.23173941,-269794.357951481,-270982.254481004,-166525.962923404,-297665.71568913,-238559.268255576,-268522.918985501,-228761.06331659,-272728.814064836,-219379.434007098,-280035.345641986,-309974.379226278,-287830.789244685,-303427.658956263,-164240.716506991,-311052.009269013,-248272.396847294,-271573.781764935,-297779.213113912,-213363.744442323,-207478.280893398,-223564.622742031,-209868.569173726,-200202.817451346,-304783.17289102,-220930.183725121,-249000.348932137,-221971.156674313,-200605.033578186,-299920.681791682,-150545.912166971,-249270.051785064,-321322.748188457,-297212.945461795,-320990.709297674,-295174.98927318,-244156.427697452,-171530.510602415,-270614.720269912,-313675.409172177,-233337.812995925,-223491.155417884,-225507.16038842,-279958.039367647,-291894.888657968,-276230.036614412,-279880.610257062,-269011.217737034,-268177.436511365,-307313.054312758,-245031.551575306,-173512.93809476,-304252.899524758,-272344.372905174,-256369.675232563,-268417.803456128,-222368.585272097,-289882.995163533,-303172.519002491,-246223.952221455,-273265.472194228,-258869.338575052,-242259.11030059,-189695.409012557,-228422.662887255,-320140.281129846,-318848.278251447,-250165.786024492,-260611.195544691,-266392.147403275,-300606.014961194,-314089.31651537,-258429.028515338,-262634.489948253,-265429.366165464,-305798.294707423,-282990.3351855,-314339.517073119,-282782.136458784,-284067.799571673,-237370.606947952,-281809.51017714,-206641.022331477,-302331.585695403,-258431.059395832,-168646.478495629,-301140.968442838,-206811.053641302,-163963.837440857,-230634.027747397,-269185.724314204,-249668.49990554,-295009.706119492,-321224.999930735,-277226.608706225,-199276.246596833,-272576.499660742,-150972.877166348,-174694.542033698,-282833.193516549,-238962.212690671,-233266.064834888,-321237.077618585,-268861.18659928,-237777.106376483,-308597.223613523,-273191.771172763,-265129.756043463,-317594.486517464,-303526.416757367,-240286.178213312,-254580.36627659,-263470.291349337,-252007.561298375,-237594.783095786,-242219.537070953,-185236.912534708,-234088.49922115,-294143.94229096,-259084.131811869,-218704.061097099,-252480.840824081,-214773.100932688,-268845.900472247,-295224.549615749,-213972.802835362,-261569.643402814,-206688.579372738,-291782.82299214,-247234.04972697,-239227.671433382,-308337.307924426,-225103.72170527,-206839.084981365,-296043.093159402,-320251.211875858,-229190.119616653,-305886.267050721,-318220.580864346,-299578.198554084,-268602.651502489,-315009.143714445,-258255.627645818,-302539.056476748,-246311.849266316,-202126.228206089,-187510.352700529,-291854.559178005,-281383.201090655,-315658.784517617,-252526.260296942,-232630.87098942,-234392.261462265,-190771.850247197,-303191.737159471,-266131.91346488,-255556.750766728,-220835.458835725,-295168.829679593,-295153.059646701,-283415.895460782,-240346.440913243,-278144.482681988,-286568.450321617,-151883.306031834,-303124.918415146,-289653.992113726,-261900.582573533,-302193.968638999,-246860.964115931,-243404.14841132,-272920.934125789,-271014.744940073,-156672.304949469,-301557.953042637,-320372.252389606,-236272.09456206,-263561.702018853,-233042.308362439,-154962.860418831,-267032.627561902,-294037.88689194,-303525.086968826,-286161.526137324,-305783.20109037,-198681.180104921,-297314.290081732,-178383.854454149,-308040.767438465,-275283.671705957,-296097.050023481,-163211.08005501,-203407.076392178,-283461.231651757,-191637.4908766,-196566.025599967,-301046.187306417,-218938.330682887,-214234.891655494,-228120.350186413,-205093.015109537,-300334.424385524,-323124.630350428,-237548.926710548,-192854.146510115,-313644.495988561,-242500.210815427,-227530.858500469,-277653.949472018,-278991.76065352,-259372.399449073,-259345.460934277,-307069.375688304,-308086.413169521,-317742.628118055,-244209.351975013,-268538.158300494,-240242.471734532,-289287.947178708,-229636.321280094,-259130.072567644,-185711.254584864,-255582.134141997,-154574.980388624,-216774.800107408,-319533.924226996,-245625.681100642,-295746.103423008,-294676.721552917,-320463.236126057,-285340.916513425,-305357.281559895,-276686.06118576,-168169.117068871,-284049.005626128,-296999.741112718,-285838.556988635,-306894.246583574,-306028.465336609,-301304.000808307,-260215.042484285,-172909.057512555,-274525.127226984,-305326.602980806,-289990.928124544,-228867.906355406,-234777.945499742,-278925.437790227,-178410.432987984,-260036.306675144,-253630.076051544,-303508.684973389,-294207.980073493,-311610.132896205,-195442.822221542,-290483.319119324,-208482.56281939,-289926.667531214,-236155.475064494,-315023.362780977,-274168.272693001,-268372.437871546,-285466.00971606,-277676.509790948,-267419.168187141,-298402.804649614,-185008.39974123,-290227.122628688,-311325.858434907,-314318.259144986,-275303.87073848,-239611.500589122,-267102.38385248,-270965.828172337,-290452.329730061,-232933.679571294,-240103.578777865,-297162.035190621,-284277.673189646,-312574.685189541,-310969.405250666,-263814.434599946,-167686.436487947,-204544.817267875,-310927.615888236,-249279.54809734,-267323.192255039,-294160.063414155,-210409.082945975,-298390.538080625,-308067.531768925,-177420.593120763,-222919.358138862,-219664.679001743,-200878.682432094,-251939.572615926,-320189.850544515,-240842.419016695,-229264.406332948,-227687.172068055,-320681.933813635,-203661.619764599,-222513.15282784,-279977.539485521,-277053.374581918,-279899.8930074,-269975.821741345,-265391.281304692,-310309.964401281,-241439.001275215,-257680.145460876,-273184.033396514,-258784.430243092,-220577.78431842,-261330.656687473,-291108.555426908,-242763.466307728,-276467.580321393,-260676.045824575,-195983.220596669,-287276.781629645,-184652.249383715,-229322.51985219,-293266.594115422,-246706.73731298,-259434.843807814,-239671.931848686,-268684.073607538,-301594.722267346,-241031.35622179,-262105.7846039,-265056.798571383,-289706.895888339,-304997.486395146,-284570.867884817,-286227.528392573,-303014.903588434,-298962.772997791,-215116.066806051,-305057.82584505,-289468.833438632,-262594.237944031,-236613.653534024,-179725.160208895,-308282.25369903,-293056.082910202,-153697.405954891,-213236.704911173,-236076.148977623,-298096.864197088,-197156.695570369,-169296.048173532,-189886.133240076,-222163.492469825,-316404.317063797,-318228.820872098,-307655.846727553,-310313.022425032,-267628.932758462,-273208.19748143,-205099.057491581,-308424.249314184,-298573.57279547,-319299.305002442,-296468.397601441,-268935.530651252,-297855.587683495,-285067.466338525,-253580.660499705,-156432.387799466,-242613.389083702,-302709.941108379,-262737.673483031,-268165.590887855,-288973.738232033,-244907.861282345,-288284.714531899,-234439.22065208,-285784.143253559,-237193.396884731,-213484.689154686,-218444.576877118,-270328.695074594,-252185.95472643,-292245.91708879,-226670.229481013,-292472.899963182,-300920.356360541,-222345.570440915,-283697.907884456,-292477.05607402,-268539.017609885,-225452.97309298,-232736.612493752,-315230.246415955,-292715.641439619,-308572.630781121,-281885.821967785,-263119.977437177,-278420.885462828,-227732.809815662,-282986.464301513,-265196.476990541,-301864.781835277,-308866.642509693,-245397.2254614,-283091.845643441,-293765.501237353,-277997.577790184,-249325.987455778,-224778.010060497,-309914.10237387,-247688.991633804,-225568.870995645,-282354.903469548,-233028.293418176,-267005.705739772,-297951.387253956,-321745.041055901,-308067.482598138,-160367.846637243,-286930.543268067,-302669.731561589,-259490.086188582,-207456.506581285,-288165.190510528,-298742.322943215,-275221.496970053,-274968.304796331,-250785.999109841,-320426.784969204,-301351.005721511,-220818.41997881,-320853.690637041,-298972.892200511,-274702.467928457,-256542.520526628,-316981.522947898,-238461.791616553,-302576.700614862,-300648.038383826,-277606.437428377,-265475.842538073,-201864.181299063,-276403.190178463,-303358.283512479,-248631.796468446,-242343.693488456,-296471.351477475,-235755.179138518,-308100.257376847,-207203.349425872,-242550.633551902,-314797.944299654,-265657.409568445,-284840.034032257,-251482.483887149,-231887.940866088,-207339.230082176,-255963.213181088,-268025.895594589,-247202.104138278,-256889.341498522,-232493.293124491,-290631.910333232,-287771.777768902,-212002.303885529,-299378.378819704,-313724.996368164,-306887.353419913,-274338.26825875,-259170.954538549,-278724.743142442,-307092.540572034,-263919.410963293,-252975.185767941,-256043.683441316,-307675.436477783,-272526.095068469,-309581.296346239,-231054.967420279,-282148.493398234,-305761.17511818,-150495.062497431,-260355.912796051,-270146.692764825,-256563.38254828,-288722.514885636,-258313.397876764,-255220.217194304,-280140.898083736,-273758.478096003,-260552.034197802,-220857.925530574,-311743.477174555,-247243.69210007,-231837.129662256,-297739.134931142,-223941.564903138,-243404.98685488,-249346.839498119,-313250.062091264,-314321.360714821,-186064.037015663,-240419.726976815,-271566.849772683,-309220.912946472,-253695.547407452,-191174.152014669,-273894.762823678,-267070.48707169,-211873.738064133,-265915.227787827,-293512.533325964,-153009.831250704,-255636.266460506,-318969.658243208,-243687.752807249,-291961.278110481,-153142.906631985,-254846.173569416,-297529.864970759,-238168.18740675,-317798.424804184,-318854.986888577,-271211.144855319,-246356.830556706,-235710.858841395,-282361.381130991,-279579.431387383,-207465.641823948,-196684.338132992,-216818.236056141,-252425.98763644,-257968.583835018,-294816.794427019,-196256.173076117,-202190.699453601,-317240.928422044,-300591.080650231,-314735.959170657,-259578.354100925,-179062.016853715,-271334.37265258,-164924.955762583,-296148.499358887,-274635.354340855,-286849.06110571,-314402.142329551,-268591.866226125,-261596.24280248,-290381.709049716,-295999.459257429,-282014.283822905,-239154.870182879,-323192.582018706,-287226.799434387,-223795.573571889,-293228.213141278,-285208.784449189,-290903.349949144,-273208.824907924,-292746.051121638,-231070.808396999,-295480.072956502,-309268.129602509,-264171.56637733,-288102.483060862,-222086.832129065,-198311.880825889,-171357.073625933,-283931.303101164,-261866.326502199,-300224.947171509,-305054.487493382,-277993.965642513,-283328.969675037,-295191.186239137,-314187.315888844,-313354.072820197,-272471.293773245,-305328.734743062,-244823.809356704,-296592.611898947,-284291.77540752,-257459.94996945,-230473.226211525,-299591.248589702,-155899.025745752,-212377.881239785,-304764.777573587,-262074.579117195,-306573.901267891,-227170.562011427,-300003.995611198,-211188.862128504,-298387.890660157,-259493.301522562,-320227.448596357,-277358.526305997,-295599.961132001,-303617.211068353,-248714.585739092,-301556.604202684,-284386.709499561,-152830.26117117,-262233.237459964,-266767.224521891,-218641.18780943,-252373.076241262,-197509.045987726,-229837.270853913,-309399.208395838,-276854.098266379,-284358.471859925,-249551.321748005,-239405.886866819,-304593.497579801,-228516.539535222,-318418.351029704,-280826.317075322,-248657.033420008,-260836.65684633,-243518.556675027,-286507.405062267,-301436.091685205,-257580.610362172,-202264.587178901,-157466.872926463,-273012.758664547,-257752.613220953,-283082.994720418,-193178.15622877,-282589.068726176,-226626.114213369,-252395.967147547,-239456.061209173,-305794.754410791,-295969.285994358,-304234.828444209,-152526.445041776,-318036.463666429,-283111.617561456,-244428.520686066,-233635.623031678,-216474.441537087,-252817.896405188,-303634.29328991,-288632.880714906,-262080.682282314,-315472.550617132,-167785.582937851,-256650.116368371,-307110.080753242,-205966.050226893,-259037.829623596,-283834.37786443,-312967.907054165,-272782.493141186,-279880.489416679,-309605.988790309,-269994.507366005,-298184.926172742,-187589.585707644,-247015.356031117,-225755.199608864,-189110.532848637,-304383.396796423,-244060.674576147,-226376.688413032,-301750.663153029,-251075.778884813,-247730.442606873,-323319.016622171,-315832.691973249,-315572.508294293,-212762.219521823,-273593.233770907,-291363.44517214,-218419.495784249,-277640.890727183,-269832.184075938,-303873.439311342,-239305.231726545,-288826.575511124,-231555.858792105,-266837.811816905,-201347.848304395,-274087.577988998,-237633.564331019,-233892.731994217,-288489.544243247,-300558.704318191,-296438.589218265,-249090.813018652,-289384.016916333,-299104.215214794,-266097.944253375,-306403.729521944,-265237.998725997,-304109.28780556,-233804.118616273,-214323.063222127,-267155.429696192,-272627.454748095,-245652.183428829,-239489.497706917,-271900.675504448,-253926.915372506,-256631.059694786,-308667.830685717,-260165.103472227,-250339.251668812,-294181.489176153,-239970.954461437,-288458.797804845,-290174.200165547,-229635.061891056,-244678.864583008,-282251.698524612,-264817.312709054,-297191.061377262,-276478.75188781,-290506.809691474,-306102.973412164,-253784.172397685,-248103.901988467,-263893.447699338,-279533.205949084,-298516.725197179,-274996.415426555,-269813.271104431,-301267.465825241,-267330.780341624,-319844.78647567,-270447.202657787,-281662.294475162,-292730.846462071,-280766.251602863,-292296.795970495,-274394.34128107,-246284.673062478,-272113.051026392,-316130.807557357,-239234.107181719,-314879.80966755,-321796.318747159,-274382.680728417,-297346.782355221,-260453.800219801,-306890.765437039,-292267.686501969,-310666.580883337,-278461.507971648,-315013.217269164,-282630.055752008,-255740.987172051,-285870.514008174,-309068.019923787,-218723.041927921,-312017.373878259,-298030.508855674,-267880.402684561,-320993.133000134,-293199.010048671]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive515.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive515.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive515.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive515_field1":[272.715466204484,272.670611893433,251.743677940878,252.493320021139,253.033447393945,253.096123341712,252.710854454345,241.043247721245,252.110129550579,271.58826341938,271.931467681316,254.760724766667,246.991111780191,253.708247473984,252.739735012331,254.158637271534,253.067535531402,255.220615822044,252.895819424523,253.06565185217,253.240691438222,253.376214890728,253.00961779805,253.182043308049,251.191162187135,254.259109960192,247.471829425494,247.729978997356,253.301226084449,253.121917920487,252.994793415698,252.977084565567,253.077300860234,256.07613617189,253.227673358242,248.396581700154,248.384322467924,252.566971697434,254.477114849035,252.82865561593,253.067727442002,252.71762099236,252.982666780937,252.416092108552,253.026377834195,252.983990991294,252.94109844337,252.91092617252,253.00269923806,252.955183088245,253.507198196836,252.676406308755,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive515_field2":[-0.000282208501629627,8.38524538018755,5.71044510770185e-09,4.53208540515638e-16,1.39033515774839e-24,-3.7988092228339e-20,1.93037478307929e-16,4.00208792633264e-08,3.41210467467611e-08,-0.000529721897324995,-0.000247633878748808,-3.15110358943724e-12,5.47895814229954e-08,-5.08596478368993e-12,5.90193332013038e-16,-2.00816383194877e-12,1.34177022251412e-16,-2.35746228349589e-12,-1.45535105539263e-12,-1.16495037360141e-20,-2.20624539247165e-20,4.92189945367924e-16,8.39847861149631e-17,-2.50958407906045e-20,3.00891000195868e-08,-3.75726312457614e-12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive515_field3":[272.842623315299,272.670525321655,251.722381982583,252.550007739263,253.076704257111,253.177791813416,252.741143511238,240.601937952197,252.673965868654,272.505538633733,272.599399907212,254.873426495546,246.698806383032,253.714688881929,252.629042056127,255.297334018166,253.046431182651,255.344419361182,252.851192960096,253.124252882811,253.450620036906,253.833534335576,252.961122620205,253.360955366181,251.325765347268,254.964628595469,246.825513839816,247.40253235276,253.293387418223,253.102332735145,252.988067991691,252.957573407749,253.075551320239,256.270710829943,253.085864684986,248.221654308598,248.358918365641,252.547797739042,254.521781207478,252.834160171392,253.097295547074,252.440953488474,252.986714344262,252.352666178095,253.038195705554,252.970160256211,252.88968905741,252.803187143789,253.019675894343,252.910513456279,253.531281560623,252.487847350177,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive515_field4":[-1.78766846298126e-05,0.531168927724002,3.61731931167043e-10,2.87087954599209e-17,8.80717023097628e-26,-2.40638088694263e-21,1.22280870403192e-17,2.53514912933858e-09,2.16142032720005e-09,-3.35555847726126e-05,-1.5686532221696e-05,-1.99608745941218e-13,3.47068235876103e-09,-3.22173811034519e-13,3.73861878933124e-17,-1.2720846927517e-13,8.49953242905432e-18,-1.4933501126073e-13,-9.21901774492389e-14,-7.37945537359694e-22,-1.39756077047441e-21,3.1178098393558e-17,5.32007195534412e-18,-1.58971267252045e-21,1.90601398873156e-09,-2.38006323556557e-13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive516.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive516.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive516.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive516_field1":[272.885575383382,272.462496293589,194.616746216113,517.440567954809,382.034535787765,279.256857352106,462.423096118843,506.019418453389,392.487825769376,272.821275850373,272.728828643694,445.659153898805,396.299671926535,557.062993085908,533.740247723088,448.308684320752,246.123290413344,343.175606178982,289.563719403036,365.323197486534,355.720700647207,295.78578777488,441.741230830556,443.936195075488,296.764520236647,332.89067406735,315.390256970289,149.384056540606,59.7371174469393,121.43671509754,218.10636087623,281.783785872173,310.398392726133,403.910845325761,195.60046283493,268.887227639389,59.8819148744631,-60.2209140454058,12.4536257454065,125.324859261419,151.082978495433,211.792842967369,327.279182634753,419.705871354004,305.946366296884,218.683023794075,267.550115330346,281.426329204125,197.448289677993,236.924923017231,273.783034299704,301.004485355967,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253],"Archive516_field2":[-3053996.13824439,244.585893530384,-328.540083369057,13978410.8141782,13440041.0819594,528107.375078448,13666567.492457,17158774.3034768,2938922.30197205,-2287847.53513447,94726.3105725106,7767216.5998209,2262136.04097604,1209922.23225641,6607445.2050326,2394978.47739759,-348.824722151749,717421.985403421,-2059302.04759519,3595969.90815563,4027027.40553282,-1225237.9088917,6641964.84405874,4991598.3328762,-2211234.29093196,2238786.83874321,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive530.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive530.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive530.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive530_field1":[-171.22455018187,-647.353678004003,138290.023756004,100385.753229015,12879.1503875,-5275.89372361186,-55948.3952559679,-11529.0422223586,6457.41049799731,1188.22667569938,905.361406933758,27355.1962440477,6579.78469354625,45113.3483638473,1549.76545933047,16365.8609631027,-7925.0512498484,-20646.822061654,33568.5964161714,-52975.2729885714,-27358.7595065944,-23560.0016089983,3674.76264388704,-6069.11098793303,2791.96653933688,10260.0518328792,1028.13401200437,-1507.40133303318,102626.492352653,118807.681512901,93050.4414752608,104857.098744929,58156.9878245317,85628.4935504232,62174.6908581227,93896.387583387,55792.1644907686,36729.9563917125,31356.2170662432,7509.37825667319,79796.6460447186,29252.1381943926,3353.50344431627,6550.79726912524,20109.0319933394,26687.5547536008,67172.2636625641,-1825.90846462015,10261.5887309841],"Archive530_field2":[2517.13491424264,7904.24287997969,15390.251697062,11342.6754153446,23998.2824989858,26027.1658127711,-13579.1448820489,17931.5506539984,8033.40775189197,4575.01821710785,2940.68809987684,38563.4213380059,55836.5640087932,15361.2164125436,37686.1984634044,48987.1949927699,34292.0290755778,34732.2189570953,37020.438970468,-9287.57838651502,30670.6194894508,59527.2758615629,58620.4527364134,38281.660924382,48176.9968567561,73863.848563713,36885.3325829221,11567.1202735946,27566.7789511034,33017.9496272341,57929.5844513912,12034.1353812755,16135.92241327,27752.209722082,63288.9329784955,39634.1656585595,64691.7426039082,40970.8139626052,94669.8416819828,74941.2063580715,27613.9072998727,23817.8377244507,24648.3765602949,49185.9127464676,72724.7061880331,33685.9162459316,28394.1837106665,26829.0309901748,28220.001674905],"Archive530_field3":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive531.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive531.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive531.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive531_field1":[6567.97498467421,4505.75895045378,138521.135988969,99479.7065593381,19895.7079190626,-16046.0131495942,-19248.6346199939,2695.1794510126,-5448.42502729559,1210.02793679873,3512.12245359574,48620.751988402,-41363.4002637979,51243.2845609632,-20703.0645300554,-2521.18889881799,7022.88048040874,-10707.4733309795,-53958.0543407964,-7744.76545592314,-29488.39229774,-33754.2735258979,-47182.8950746514,-17717.6464620888,-48904.7292511676,-15078.7085530549,-38301.1233704813,10653.6144506309,104222.873979512,121408.36762522,106199.069740944,104269.589367223,58081.3886803199,84108.3495850731,70918.4463461207,97023.9400554857,61192.6579908987,44565.3983235319,6921.98083209277,-43027.3629504254,81309.2734881371,36026.2398603101,3806.21468078176,16387.5188823661,31566.2782050694,35655.5928838885,67773.1080373462,-7978.44563007802,16195.9968111404],"Archive531_field2":[425.698035603598,-1693.98089696662,-10817.3087775479,729.103284143264,12241.7940533412,14246.3533304495,64503.5402729298,26220.2231763862,7247.55475979293,4338.44937386221,861.039055945001,16885.237861692,45677.5661039547,-1859.79629406393,35026.0620792571,41903.5560084666,33334.3761384379,33431.6366201519,262.738057560764,69520.2284948591,30267.6550737271,58707.2891813297,34115.7105008823,23742.6852200487,8083.68175469536,61602.9505355797,2277.49547411653,-806.506553142634,11322.067074014,7125.91376171722,31612.1705364811,-7915.54963415834,19552.226165598,25621.7385132361,54340.4503232009,27291.6039196422,60758.973387215,39534.6461045161,86553.1456475268,60360.1631844648,23833.8096354036,11495.181030443,19708.4676248965,40097.8364309362,65089.5828800813,23582.7290497527,29015.4912335754,17923.3262449807,19041.3355505032],"Archive531_field3":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive601.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive601.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive601.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive601_field1":[157.895073227876,200.713254591921,283.846969775688,38.1715374102282,488.118654937107,861.662712089849,1015.64346253628,1001.66176221174,532.485980921143,222.757199146409,132.572384984735,66.9019696520696,70.7801233008975,81.8329705169477,116.945860087366,104.588581309241,100.431041863169,661.576327830911,118.748648749182,85.5887439289069,96.2837059494247,80.0100827825513,114.074450272437,132.178685759449,154.705361189725,125.769736894107,116.167544797872,172.493699404866,93.5772258475271,195.695854098924,110.445792070752,125.829325212907,132.287650513563,154.74487974508,125.112635466321,142.070187112533,131.462382641395,174.148728821226,166.295173142801,212.319196346372,99.5005528273748,282.521388051916,111.529191183519,170.412142975982,271.352171100083,556.857337204745,345.461539129843,200.670930703234,456.776331472849,652.520445945161,667.483154392978,921.307888333501,558.912635095395,379.643372006501,994.486044176893,894.965130885563,801.271603184143,886.704632885897,805.0245070993,820.203426461903,231.223615805206,364.423485347911,368.292580626341,368.545836814793,656.26881016603,615.255331550389,718.406382666884,595.442244022677,799.477195990809,747.467568141711]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive602.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive602.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive602.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive602_field1":[172.592304981231,216.493754279599,297.830103716419,53.5136965233617,502.639689883807,874.15516869397,1025.12566037072,1001.22538736464,553.651963591754,241.544323788874,148.571005539636,80.8251673520048,87.544822730581,96.5704365482867,134.742129240944,121.582787864623,119.012546186367,679.908552208049,134.385345351906,101.498064144064,112.347736711353,94.2774696158537,129.915702002651,126.726590771903,145.521522922443,136.879582685593,111.482226993642,165.447048017564,109.182766931592,199.884254718065,108.551671313297,118.171826657817,134.653442093111,149.916330753768,142.226293883251,135.788753951089,149.349560235895,170.847866004068,169.979702361061,210.339804378405,119.084091902889,299.12215352905,128.162824846569,184.841449429748,272.583146601016,546.833080387017,341.783752442184,224.513896746052,452.360300167222,640.527031318146,680.241742460334,937.00119435257,531.274305676571,399.329320263657,1003.81688526869,899.589980303666,802.049309271449,882.955979749627,800.389515599297,827.564924725734,249.167786872371,356.546914869293,356.402963685695,343.795602596277,692.744844913471,642.702766803169,704.128331194494,589.744211978649,815.609949409073,744.078686253323]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive603.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive603.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive603.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive603_field1":[157.895073227876,200.713254591921,283.846969775688,38.1715374102282,488.118654937107,861.662712089849,1015.64346253628,1001.66176221174,532.485980921143,222.757199146409,132.572384984735,66.9019696520696,70.7801233008975,81.8329705169477,116.945860087366,104.588581309241,100.431041863169,661.576327830911,118.748648749182,85.5887439289069,96.2837059494247,80.0100827825513,114.074450272437,132.178685759449,154.705361189725,125.769736894107,116.167544797872,172.493699404866,93.5772258475271,195.695854098924,110.445792070752,125.829325212907,132.287650513563,154.74487974508,125.112635466321,142.070187112533,131.462382641395,174.148728821226,166.295173142801,212.319196346372,99.5005528273748,282.521388051916,111.529191183519,170.412142975982,271.352171100083,556.857337204745,345.461539129843,200.670930703234,456.776331472849,652.520445945161,667.483154392978,921.307888333501,558.912635095395,379.643372006501,994.486044176893,894.965130885563,801.271603184143,886.704632885897,805.0245070993,820.203426461903,231.223615805206,364.423485347911,368.292580626341,368.545836814793,656.26881016603,615.255331550389,718.406382666884,595.442244022677,799.477195990809,747.467568141711,157.895073227876,200.713254591921,283.846969775688,38.1715374102282,488.118654937107,861.662712089849,1015.64346253628,1001.66176221174,532.485980921143,222.757199146409,132.572384984735,66.9019696520696,70.7801233008975,81.8329705169477,116.945860087366,104.588581309241,100.431041863169,661.576327830911,118.748648749182,85.5887439289069,96.2837059494247,80.0100827825513,114.074450272437,132.178685759449,154.705361189725,125.769736894107,116.167544797872,172.493699404866,93.5772258475271,195.695854098924,110.445792070752,125.829325212907,132.287650513563,154.74487974508,125.112635466321,142.070187112533,131.462382641395,174.148728821226,166.295173142801,212.319196346372,99.5005528273748,282.521388051916,111.529191183519,170.412142975982,271.352171100083,556.857337204745,345.461539129843,200.670930703234,456.776331472849,652.520445945161,667.483154392978,921.307888333501,558.912635095395,379.643372006501,994.486044176893,894.965130885563,801.271603184143,886.704632885897,805.0245070993,820.203426461903,231.223615805206,364.423485347911,368.292580626341,368.545836814793,656.26881016603,615.255331550389,718.406382666884,595.442244022677,799.477195990809,747.467568141711,157.895073227876,200.713254591921,283.846969775688,38.1715374102282,488.118654937107,861.662712089849,1015.64346253628,1001.66176221174,532.485980921143,222.757199146409,132.572384984735,66.9019696520696,70.7801233008975,81.8329705169477,116.945860087366,104.588581309241,100.431041863169,661.576327830911,118.748648749182,85.5887439289069,96.2837059494247,80.0100827825513,114.074450272437,132.178685759449,154.705361189725,125.769736894107,116.167544797872,172.493699404866,93.5772258475271,195.695854098924,110.445792070752,125.829325212907,132.287650513563,154.74487974508,125.112635466321,142.070187112533,131.462382641395,174.148728821226,166.295173142801,212.319196346372,99.5005528273748,282.521388051916,111.529191183519,170.412142975982,271.352171100083,556.857337204745,345.461539129843,200.670930703234,456.776331472849,652.520445945161,667.483154392978,921.307888333501,558.912635095395,379.643372006501,994.486044176893,894.965130885563,801.271603184143,886.704632885897,805.0245070993,820.203426461903,231.223615805206,364.423485347911,368.292580626341,368.545836814793,656.26881016603,615.255331550389,718.406382666884,595.442244022677,799.477195990809,747.467568141711,157.895073227876,200.713254591921,283.846969775688,38.1715374102282,488.118654937107,861.662712089849,1015.64346253628,1001.66176221174,532.485980921143,222.757199146409,132.572384984735,66.9019696520696,70.7801233008975,81.8329705169477,116.945860087366,104.588581309241,100.431041863169,661.576327830911,118.748648749182,85.5887439289069,96.2837059494247,80.0100827825513,114.074450272437,132.178685759449,154.705361189725,125.769736894107,116.167544797872,172.493699404866,93.5772258475271,195.695854098924,110.445792070752,125.829325212907,132.287650513563,154.74487974508,125.112635466321,142.070187112533,131.462382641395,174.148728821226,166.295173142801,212.319196346372,99.5005528273748,282.521388051916,111.529191183519,170.412142975982,271.352171100083,556.857337204745,345.461539129843,200.670930703234,456.776331472849,652.520445945161,667.483154392978,921.307888333501,558.912635095395,379.643372006501,994.486044176893,894.965130885563,801.271603184143,886.704632885897,805.0245070993,820.203426461903,231.223615805206,364.423485347911,368.292580626341,368.545836814793,656.26881016603,615.255331550389,718.406382666884,595.442244022677,799.477195990809,747.467568141711,157.895073227876,200.713254591921,283.846969775688,38.1715374102282,488.118654937107,861.662712089849,1015.64346253628,1001.66176221174,532.485980921143,222.757199146409,132.572384984735,66.9019696520696,70.7801233008975,81.8329705169477,116.945860087366,104.588581309241,100.431041863169,661.576327830911,118.748648749182,85.5887439289069,96.2837059494247,80.0100827825513,114.074450272437,132.178685759449,154.705361189725,125.769736894107,116.167544797872,172.493699404866,93.5772258475271,195.695854098924,110.445792070752,125.829325212907,132.287650513563,154.74487974508,125.112635466321,142.070187112533,131.462382641395,174.148728821226,166.295173142801,212.319196346372,99.5005528273748,282.521388051916,111.529191183519,170.412142975982,271.352171100083,556.857337204745,345.461539129843,200.670930703234,456.776331472849,652.520445945161,667.483154392978,921.307888333501,558.912635095395,379.643372006501,994.486044176893,894.965130885563,801.271603184143,886.704632885897,805.0245070993,820.203426461903,231.223615805206,364.423485347911,368.292580626341,368.545836814793,656.26881016603,615.255331550389,718.406382666884,595.442244022677,799.477195990809,747.467568141711,157.895073227876,200.713254591921,283.846969775688,38.1715374102282,488.118654937107,861.662712089849,1015.64346253628,1001.66176221174,532.485980921143,222.757199146409,132.572384984735,66.9019696520696,70.7801233008975,81.8329705169477,116.945860087366,104.588581309241,100.431041863169,661.576327830911,118.748648749182,85.5887439289069,96.2837059494247,80.0100827825513,114.074450272437,132.178685759449,154.705361189725,125.769736894107,116.167544797872,172.493699404866,93.5772258475271,195.695854098924,110.445792070752,125.829325212907,132.287650513563,154.74487974508,125.112635466321,142.070187112533,131.462382641395,174.148728821226,166.295173142801,212.319196346372,99.5005528273748,282.521388051916,111.529191183519,170.412142975982,271.352171100083,556.857337204745,345.461539129843,200.670930703234,456.776331472849,652.520445945161,667.483154392978,921.307888333501,558.912635095395,379.643372006501,994.486044176893,894.965130885563,801.271603184143,886.704632885897,805.0245070993,820.203426461903,231.223615805206,364.423485347911,368.292580626341,368.545836814793,656.26881016603,615.255331550389,718.406382666884,595.442244022677,799.477195990809,747.467568141711]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive604.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive604.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive604.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive604_field1":[0.00317155104249515,-0.00769950542621739,-0.0251854614042457,-0.0338314643922744,-0.0317833559983583,-0.0255206180798814,-0.0133992614345151,-0.00750506016673074,0.0386518131224739,-0.0110929790518879,-0.00165614770892725,-0.00936536020276097,-0.0183361700526105,-0.00191111339742825,7.44258744073103e-05,-0.00302174911403451,0.00117142392964672,0.00728215084297929,0.00726646398860672,0.000154791673591065,-0.00270698280383741,0.00504014790121362,0.00559979597115624,0.000297647243265346,-0.000838467561033682,0.00991780955663963,0.00124156212447167,-0.000263634924305753,-0.00574491278371366,0.00195292451310863,0.00299666187818013,0.000898270005420197,-0.00199730305012891,0.000549176308611491,-0.0017426703266015,-0.000199764355300886,0.00162541135878537,-0.00129178730424632,-0.000530198439237272,-0.000379014677919653,0.00165949767918422,0.00135954498295521,0.00256772867917206,-0.00550621035652472,-0.000996674012257779,-0.0135538352441878,0.000576417026113763,0.00280516423383685,0.00406103366385396,-0.01842578502726,-0.00608259635059652,-0.00402334085583986,-0.0241683852231225,0.0088164440928147,-0.0143710185267156,-0.00168947834044276,-0.0117848201827861,0.000516113001586656,-0.00863772868582889,-0.0114626584146267,-0.0102089286795297,-0.00871832553401089,-0.0229781185766797,-0.00275220704021225,-0.0110693776960238,-0.0257659765887301,-0.0138130892053516,-0.0175207495435727,-0.0137374539888196,-0.00850788090706342],"Archive604_field2":[-0.00221525857341085,-0.0155127770833276,-0.0266159579505744,-0.0357692089033761,-0.0152852448609986,-0.0169053362688124,-0.016030521260203,-0.012678358706345,-0.0306641782274008,-0.0218757499402864,0.00325463386990159,0.0165816592872283,0.00285796630877669,-0.00510636261400813,-0.00218985514786717,-0.00591663799993463,-0.00309671348397262,-0.0323184643514105,-0.00234815143386077,0.000693694036499785,-0.00211829770383832,0.00689579438320769,0.000625412797532153,-0.00208330073977713,-0.00161438393831651,0.00150722366469468,-0.00073921804961466,-0.00121722669289309,0.00264372733485111,8.12480700182133e-05,-0.00029282997075889,-0.00118446476004652,0.000363470654761983,0.00204781558346775,0.00257525133326103,0.00044426233708384,-0.000144452755788535,-0.000624616826287577,-0.000495352856000469,0.000371092526234673,-0.00176442510100656,-0.00826249631613158,-0.00247565896014812,-0.00148856119006387,0.00058194296392488,-0.014629464524658,-0.00194525235748477,0.000107870456712652,-0.00493411679721441,-0.0219057411216002,0.00209438041519604,0.000795363347667863,-0.0113724932810204,0.00511145474215016,-0.0273603453733291,-0.00465716880222743,-0.021383675461586,-0.0134515834651708,-0.00203096812232826,-0.00923654541806116,-0.0169536033629541,-0.0210040757930752,-0.0143121360043001,-0.00553362704323652,-0.0112390421688864,-0.0151516039338713,-0.00886755087780847,-0.0251530673907081,-0.00886267805309431,-0.0152558863666345]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive605.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive605.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive605.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive605_field1":[0.00317155104249515,-0.00769950542621739,-0.0251854614042457,-0.0338314643922744,-0.0317833559983583,-0.0255206180798814,-0.0133992614345151,-0.00750506016673074,0.0386518131224739,-0.0110929790518879,-0.00165614770892725,-0.00936536020276097,-0.0183361700526105,-0.00191111339742825,7.44258744073103e-05,-0.00302174911403451,0.00117142392964672,0.00728215084297929,0.00726646398860672,0.000154791673591065,-0.00270698280383741,0.00504014790121362,0.00559979597115624,0.000297647243265346,-0.000838467561033682,0.00991780955663963,0.00124156212447167,-0.000263634924305753,-0.00574491278371366,0.00195292451310863,0.00299666187818013,0.000898270005420197,-0.00199730305012891,0.000549176308611491,-0.0017426703266015,-0.000199764355300886,0.00162541135878537,-0.00129178730424632,-0.000530198439237272,-0.000379014677919653,0.00165949767918422,0.00135954498295521,0.00256772867917206,-0.00550621035652472,-0.000996674012257779,-0.0135538352441878,0.000576417026113763,0.00280516423383685,0.00406103366385396,-0.01842578502726,-0.00608259635059652,-0.00402334085583986,-0.0241683852231225,0.0088164440928147,-0.0143710185267156,-0.00168947834044276,-0.0117848201827861,0.000516113001586656,-0.00863772868582889,-0.0114626584146267,-0.0102089286795297,-0.00871832553401089,-0.0229781185766797,-0.00275220704021225,-0.0110693776960238,-0.0257659765887301,-0.0138130892053516,-0.0175207495435727,-0.0137374539888196,-0.00850788090706342,0.00317155104249515,-0.00769950542621739,-0.0251854614042457,-0.0338314643922744,-0.0317833559983583,-0.0255206180798814,-0.0133992614345151,-0.00750506016673074,0.0386518131224739,-0.0110929790518879,-0.00165614770892725,-0.00936536020276097,-0.0183361700526105,-0.00191111339742825,7.44258744073103e-05,-0.00302174911403451,0.00117142392964672,0.00728215084297929,0.00726646398860672,0.000154791673591065,-0.00270698280383741,0.00504014790121362,0.00559979597115624,0.000297647243265345,-0.000838467561033681,0.00991780955663963,0.00124156212447167,-0.000263634924305753,-0.00574491278371366,0.00195292451310863,0.00299666187818013,0.000898270005420197,-0.00199730305012891,0.000549176308611491,-0.0017426703266015,-0.000199764355300886,0.00162541135878537,-0.00129178730424632,-0.000530198439237272,-0.000379014677919653,0.00165949767918422,0.00135954498295521,0.00256772867917206,-0.00550621035652472,-0.000996674012257779,-0.0135538352441878,0.000576417026113763,0.00280516423383685,0.00406103366385396,-0.01842578502726,-0.00608259635059652,-0.00402334085583986,-0.0241683852231225,0.0088164440928147,-0.0143710185267156,-0.00168947834044276,-0.0117848201827861,0.000516113001586656,-0.00863772868582889,-0.0114626584146267,-0.0102089286795297,-0.00871832553401089,-0.0229781185766797,-0.00275220704021225,-0.0110693776960238,-0.0257659765887301,-0.0138130892053516,-0.0175207495435727,-0.0137374539888196,-0.00850788090706342,0.00317155104249515,-0.00769950542621739,-0.0251854614042457,-0.0338314643922744,-0.0317833559983583,-0.0255206180798814,-0.0133992614345151,-0.00750506016673074,0.0386518131224739,-0.0110929790518879,-0.00165614770892725,-0.00936536020276097,-0.0183361700526105,-0.00191111339742825,7.44258744073103e-05,-0.00302174911403451,0.00117142392964672,0.00728215084297929,0.00726646398860672,0.000154791673591065,-0.00270698280383741,0.00504014790121362,0.00559979597115624,0.000297647243265345,-0.000838467561033681,0.00991780955663963,0.00124156212447167,-0.000263634924305753,-0.00574491278371366,0.00195292451310863,0.00299666187818013,0.000898270005420197,-0.00199730305012891,0.000549176308611491,-0.0017426703266015,-0.000199764355300886,0.00162541135878537,-0.00129178730424632,-0.000530198439237272,-0.000379014677919653,0.00165949767918422,0.00135954498295521,0.00256772867917206,-0.00550621035652472,-0.000996674012257779,-0.0135538352441878,0.000576417026113763,0.00280516423383685,0.00406103366385396,-0.01842578502726,-0.00608259635059652,-0.00402334085583986,-0.0241683852231225,0.0088164440928147,-0.0143710185267156,-0.00168947834044276,-0.0117848201827861,0.000516113001586656,-0.00863772868582889,-0.0114626584146267,-0.0102089286795297,-0.00871832553401089,-0.0229781185766797,-0.00275220704021225,-0.0110693776960238,-0.0257659765887301,-0.0138130892053516,-0.0175207495435727,-0.0137374539888196,-0.00850788090706342,0.00317155104249515,-0.00769950542621739,-0.0251854614042457,-0.0338314643922744,-0.0317833559983583,-0.0255206180798814,-0.0133992614345151,-0.00750506016673074,0.0386518131224739,-0.0110929790518879,-0.00165614770892725,-0.00936536020276097,-0.0183361700526105,-0.00191111339742825,7.44258744073103e-05,-0.00302174911403451,0.00117142392964672,0.00728215084297929,0.00726646398860672,0.000154791673591065,-0.00270698280383741,0.00504014790121362,0.00559979597115624,0.000297647243265345,-0.000838467561033681,0.00991780955663963,0.00124156212447167,-0.000263634924305753,-0.00574491278371366,0.00195292451310863,0.00299666187818013,0.000898270005420197,-0.00199730305012891,0.000549176308611491,-0.0017426703266015,-0.000199764355300886,0.00162541135878537,-0.00129178730424632,-0.000530198439237272,-0.000379014677919653,0.00165949767918422,0.00135954498295521,0.00256772867917206,-0.00550621035652472,-0.000996674012257779,-0.0135538352441878,0.000576417026113763,0.00280516423383685,0.00406103366385396,-0.01842578502726,-0.00608259635059652,-0.00402334085583986,-0.0241683852231225,0.0088164440928147,-0.0143710185267156,-0.00168947834044276,-0.0117848201827861,0.000516113001586656,-0.00863772868582889,-0.0114626584146267,-0.0102089286795297,-0.00871832553401089,-0.0229781185766797,-0.00275220704021225,-0.0110693776960238,-0.0257659765887301,-0.0138130892053516,-0.0175207495435727,-0.0137374539888196,-0.00850788090706342,0.00317155104249515,-0.00769950542621739,-0.0251854614042457,-0.0338314643922744,-0.0317833559983583,-0.0255206180798814,-0.0133992614345151,-0.00750506016673074,0.0386518131224739,-0.0110929790518879,-0.00165614770892725,-0.00936536020276097,-0.0183361700526105,-0.00191111339742825,7.44258744073103e-05,-0.00302174911403451,0.00117142392964672,0.00728215084297929,0.00726646398860672,0.000154791673591065,-0.00270698280383741,0.00504014790121362,0.00559979597115624,0.000297647243265346,-0.000838467561033682,0.00991780955663963,0.00124156212447167,-0.000263634924305753,-0.00574491278371366,0.00195292451310863,0.00299666187818013,0.000898270005420197,-0.00199730305012891,0.000549176308611491,-0.0017426703266015,-0.000199764355300886,0.00162541135878537,-0.00129178730424632,-0.000530198439237272,-0.000379014677919653,0.00165949767918422,0.00135954498295521,0.00256772867917206,-0.00550621035652472,-0.000996674012257779,-0.0135538352441878,0.000576417026113763,0.00280516423383685,0.00406103366385396,-0.01842578502726,-0.00608259635059652,-0.00402334085583986,-0.0241683852231225,0.0088164440928147,-0.0143710185267156,-0.00168947834044276,-0.0117848201827861,0.000516113001586656,-0.00863772868582889,-0.0114626584146267,-0.0102089286795297,-0.00871832553401089,-0.0229781185766797,-0.00275220704021225,-0.0110693776960238,-0.0257659765887301,-0.0138130892053516,-0.0175207495435727,-0.0137374539888196,-0.00850788090706342],"Archive605_field2":[-0.00221525857341085,-0.0155127770833276,-0.0266159579505744,-0.0357692089033761,-0.0152852448609986,-0.0169053362688124,-0.016030521260203,-0.012678358706345,-0.0306641782274008,-0.0218757499402864,0.00325463386990159,0.0165816592872283,0.00285796630877669,-0.00510636261400813,-0.00218985514786717,-0.00591663799993463,-0.00309671348397262,-0.0323184643514105,-0.00234815143386077,0.000693694036499785,-0.00211829770383832,0.00689579438320769,0.000625412797532153,-0.00208330073977713,-0.00161438393831651,0.00150722366469468,-0.00073921804961466,-0.00121722669289309,0.00264372733485111,8.12480700182133e-05,-0.00029282997075889,-0.00118446476004652,0.000363470654761983,0.00204781558346775,0.00257525133326103,0.00044426233708384,-0.000144452755788535,-0.000624616826287577,-0.000495352856000469,0.000371092526234673,-0.00176442510100656,-0.00826249631613158,-0.00247565896014812,-0.00148856119006387,0.00058194296392488,-0.014629464524658,-0.00194525235748477,0.000107870456712652,-0.00493411679721441,-0.0219057411216002,0.00209438041519604,0.000795363347667863,-0.0113724932810204,0.00511145474215016,-0.0273603453733291,-0.00465716880222743,-0.021383675461586,-0.0134515834651708,-0.00203096812232826,-0.00923654541806116,-0.0169536033629541,-0.0210040757930752,-0.0143121360043001,-0.00553362704323652,-0.0112390421688864,-0.0151516039338713,-0.00886755087780847,-0.0251530673907081,-0.00886267805309431,-0.0152558863666345,-0.00221525857341085,-0.0155127770833276,-0.0266159579505744,-0.0357692089033761,-0.0152852448609986,-0.0169053362688124,-0.016030521260203,-0.012678358706345,-0.0306641782274008,-0.0218757499402864,0.00325463386990159,0.0165816592872283,0.00285796630877669,-0.00510636261400813,-0.00218985514786717,-0.00591663799993463,-0.00309671348397262,-0.0323184643514105,-0.00234815143386077,0.000693694036499785,-0.00211829770383832,0.00689579438320769,0.000625412797532153,-0.00208330073977713,-0.00161438393831651,0.00150722366469468,-0.00073921804961466,-0.00121722669289309,0.00264372733485111,8.12480700182133e-05,-0.00029282997075889,-0.00118446476004652,0.000363470654761983,0.00204781558346775,0.00257525133326103,0.00044426233708384,-0.000144452755788535,-0.000624616826287578,-0.000495352856000469,0.000371092526234673,-0.00176442510100656,-0.00826249631613158,-0.00247565896014812,-0.00148856119006387,0.00058194296392488,-0.014629464524658,-0.00194525235748477,0.000107870456712652,-0.00493411679721441,-0.0219057411216002,0.00209438041519604,0.000795363347667863,-0.0113724932810204,0.00511145474215016,-0.0273603453733291,-0.00465716880222743,-0.021383675461586,-0.0134515834651708,-0.00203096812232826,-0.00923654541806116,-0.0169536033629541,-0.0210040757930752,-0.0143121360043001,-0.00553362704323652,-0.0112390421688864,-0.0151516039338713,-0.00886755087780847,-0.0251530673907081,-0.00886267805309431,-0.0152558863666345,-0.00221525857341085,-0.0155127770833276,-0.0266159579505744,-0.0357692089033761,-0.0152852448609986,-0.0169053362688124,-0.016030521260203,-0.012678358706345,-0.0306641782274008,-0.0218757499402864,0.00325463386990159,0.0165816592872283,0.00285796630877669,-0.00510636261400813,-0.00218985514786717,-0.00591663799993463,-0.00309671348397262,-0.0323184643514105,-0.00234815143386077,0.000693694036499785,-0.00211829770383832,0.00689579438320769,0.000625412797532153,-0.00208330073977713,-0.00161438393831651,0.00150722366469468,-0.00073921804961466,-0.00121722669289309,0.00264372733485111,8.12480700182133e-05,-0.00029282997075889,-0.00118446476004652,0.000363470654761983,0.00204781558346775,0.00257525133326103,0.00044426233708384,-0.000144452755788535,-0.000624616826287578,-0.000495352856000469,0.000371092526234673,-0.00176442510100656,-0.00826249631613158,-0.00247565896014812,-0.00148856119006387,0.00058194296392488,-0.014629464524658,-0.00194525235748477,0.000107870456712652,-0.00493411679721441,-0.0219057411216002,0.00209438041519604,0.000795363347667863,-0.0113724932810204,0.00511145474215016,-0.0273603453733291,-0.00465716880222743,-0.021383675461586,-0.0134515834651708,-0.00203096812232826,-0.00923654541806116,-0.0169536033629541,-0.0210040757930752,-0.0143121360043001,-0.00553362704323652,-0.0112390421688864,-0.0151516039338713,-0.00886755087780847,-0.0251530673907081,-0.00886267805309431,-0.0152558863666345,-0.00221525857341085,-0.0155127770833276,-0.0266159579505744,-0.0357692089033761,-0.0152852448609986,-0.0169053362688124,-0.016030521260203,-0.012678358706345,-0.0306641782274008,-0.0218757499402864,0.00325463386990159,0.0165816592872283,0.00285796630877669,-0.00510636261400813,-0.00218985514786717,-0.00591663799993463,-0.00309671348397262,-0.0323184643514105,-0.00234815143386077,0.000693694036499785,-0.00211829770383832,0.00689579438320769,0.000625412797532153,-0.00208330073977713,-0.00161438393831651,0.00150722366469468,-0.00073921804961466,-0.00121722669289309,0.00264372733485111,8.12480700182133e-05,-0.00029282997075889,-0.00118446476004652,0.000363470654761983,0.00204781558346775,0.00257525133326103,0.00044426233708384,-0.000144452755788535,-0.000624616826287578,-0.000495352856000469,0.000371092526234673,-0.00176442510100656,-0.00826249631613158,-0.00247565896014812,-0.00148856119006387,0.00058194296392488,-0.014629464524658,-0.00194525235748477,0.000107870456712652,-0.00493411679721441,-0.0219057411216002,0.00209438041519604,0.000795363347667863,-0.0113724932810204,0.00511145474215016,-0.0273603453733291,-0.00465716880222743,-0.021383675461586,-0.0134515834651708,-0.00203096812232826,-0.00923654541806116,-0.0169536033629541,-0.0210040757930752,-0.0143121360043001,-0.00553362704323652,-0.0112390421688864,-0.0151516039338713,-0.00886755087780847,-0.0251530673907081,-0.00886267805309431,-0.0152558863666345,-0.00221525857341085,-0.0155127770833276,-0.0266159579505744,-0.0357692089033761,-0.0152852448609986,-0.0169053362688124,-0.016030521260203,-0.012678358706345,-0.0306641782274008,-0.0218757499402864,0.00325463386990159,0.0165816592872283,0.00285796630877669,-0.00510636261400813,-0.00218985514786717,-0.00591663799993463,-0.00309671348397262,-0.0323184643514105,-0.00234815143386077,0.000693694036499785,-0.00211829770383832,0.00689579438320769,0.000625412797532153,-0.00208330073977713,-0.00161438393831651,0.00150722366469468,-0.00073921804961466,-0.00121722669289309,0.00264372733485111,8.12480700182133e-05,-0.00029282997075889,-0.00118446476004652,0.000363470654761983,0.00204781558346775,0.00257525133326103,0.00044426233708384,-0.000144452755788535,-0.000624616826287577,-0.000495352856000469,0.000371092526234673,-0.00176442510100656,-0.00826249631613158,-0.00247565896014812,-0.00148856119006387,0.00058194296392488,-0.014629464524658,-0.00194525235748477,0.000107870456712652,-0.00493411679721441,-0.0219057411216002,0.00209438041519604,0.000795363347667863,-0.0113724932810204,0.00511145474215016,-0.0273603453733291,-0.00465716880222743,-0.021383675461586,-0.0134515834651708,-0.00203096812232826,-0.00923654541806116,-0.0169536033629541,-0.0210040757930752,-0.0143121360043001,-0.00553362704323652,-0.0112390421688864,-0.0151516039338713,-0.00886755087780847,-0.0251530673907081,-0.00886267805309431,-0.0152558863666345]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive606.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive606.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive606.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive606_field1":[-0.00813678980376147,-0.011018453365537,-0.0121421555547476,-0.0253520276354858,-0.0133951834139183,-0.0117400580555678,-0.000491359149123805,-0.00428507949193387,-0.0183681658999074,0.0141742025616812,0.0115436454775544,0.00215763966892513,0.00573739117889234,0.00496968386663821,0.000648525616967031,0.00246466465138824,-0.00831958988004454,0.00809892227546504,-0.00926273367031117,0.00499165651938128,0.00731032626158785,-0.000951206158617628,-0.00843231525812733,0.000256073943306637,0.00135528421474711,-0.00025895607488828,0.00303530879642192,0.00238902456121854,-3.41129480475135e-05,0.000110632983864069,0.00112971070308894,0.00275657770868138,0.00618744618458104,0.00536412154975339,0.00302040797366053,0.00506164512986177,0.00149995662497723,0.00475624752096477,0.00575158372923381,0.0063140479739421,-0.0107274682554323,0.0134724987501785,-0.020181566358027,0.0150465411465028,0.00255264353064501,-0.00849452697452458,0.000667040743321903,-0.00969069558362774,0.00528829583437645,-0.0034001607181856,0.0133694801105137,-0.00819487960992969,-0.0343006140482567,0.0335184041003674,-0.00125146360291326,0.0111036284140975,-0.00888862314183549,-0.00533214141382071,-0.00117458361244012,0.00572395202769208,-0.00840172901921466,-0.0123896300685348,-0.037142807323551,-0.0174160352960407,-0.00192664225561371,-0.0219124900076859,-0.0116683777614268,-0.0206547970493786,-0.00829745552177109,0.0075964345807653],"Archive606_field2":[0.005529196236948,-0.00600773050892303,-0.0100374082736578,0.020902743234091,0.00364585351807836,-0.00759876237981623,-0.000460739528301147,0.0117345520087482,0.0055699042989953,-0.0228461245346143,-0.00341505040833289,-0.00499496566439162,-0.00440453154654813,0.00162008919175212,0.00566571113131657,0.00219721733582088,0.00806627429232511,0.00343685546725895,0.00915652578257999,-0.00322120942991565,0.00676091152406549,-0.00486487888618724,0.00565483869032297,-0.00222562106676824,0.0033164754694929,9.75894107044817e-05,-0.00336317634169501,0.00598760297985704,-0.00172190167567941,0.00376236366530117,-0.00157390364563232,-0.000348450114689982,-0.00191966952954969,-0.00538586622489588,-0.00160205982475743,0.000883535641149232,-0.000310812923434695,0.00394646089454825,-0.000269014136163117,0.000881492478485839,0.0205971809833586,-0.008279953924998,0.01093265868148,-0.0061321417399637,0.00373216058203686,0.00350251567776405,0.00565712692362669,0.0121726472800751,0.0127302216488993,-0.0133644741988553,0.0171709120192381,0.0244930600881248,0.0111021273534653,-0.00525610778003706,0.00905189190851764,0.0066590785799292,0.0222596420462387,9.31956328886207e-05,0.0178690380252387,0.0148787162900697,-0.00976873746413515,0.00624765648262062,0.0143418350212489,0.0219447339522993,-0.0144682642965382,0.0031438392541471,0.0109046209493304,-0.0193789417544448,0.00293803965118266,0.00156019277096648]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive607.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive607.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive607.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive607_field1":[-0.00813678980376147,-0.011018453365537,-0.0121421555547476,-0.0253520276354858,-0.0133951834139183,-0.0117400580555678,-0.000491359149123805,-0.00428507949193387,-0.0183681658999074,0.0141742025616812,0.0115436454775544,0.00215763966892513,0.00573739117889234,0.00496968386663821,0.000648525616967031,0.00246466465138824,-0.00831958988004454,0.00809892227546504,-0.00926273367031117,0.00499165651938128,0.00731032626158785,-0.000951206158617628,-0.00843231525812733,0.000256073943306637,0.00135528421474711,-0.00025895607488828,0.00303530879642192,0.00238902456121854,-3.41129480475135e-05,0.000110632983864069,0.00112971070308894,0.00275657770868138,0.00618744618458104,0.00536412154975339,0.00302040797366053,0.00506164512986177,0.00149995662497723,0.00475624752096477,0.00575158372923381,0.0063140479739421,-0.0107274682554323,0.0134724987501785,-0.020181566358027,0.0150465411465028,0.00255264353064501,-0.00849452697452458,0.000667040743321903,-0.00969069558362774,0.00528829583437645,-0.0034001607181856,0.0133694801105137,-0.00819487960992969,-0.0343006140482567,0.0335184041003674,-0.00125146360291326,0.0111036284140975,-0.00888862314183549,-0.00533214141382071,-0.00117458361244012,0.00572395202769208,-0.00840172901921466,-0.0123896300685348,-0.037142807323551,-0.0174160352960407,-0.00192664225561371,-0.0219124900076859,-0.0116683777614268,-0.0206547970493786,-0.00829745552177109,0.0075964345807653,-0.00813678980376147,-0.011018453365537,-0.0121421555547476,-0.0253520276354858,-0.0133951834139183,-0.0117400580555678,-0.000491359149123805,-0.00428507949193387,-0.0183681658999074,0.0141742025616812,0.0115436454775544,0.00215763966892513,0.00573739117889234,0.00496968386663821,0.000648525616967031,0.00246466465138824,-0.00831958988004454,0.00809892227546504,-0.00926273367031117,0.00499165651938128,0.00731032626158785,-0.000951206158617628,-0.00843231525812733,0.000256073943306637,0.00135528421474711,-0.00025895607488828,0.00303530879642192,0.00238902456121854,-3.41129480475135e-05,0.000110632983864069,0.00112971070308894,0.00275657770868138,0.00618744618458104,0.00536412154975339,0.00302040797366053,0.00506164512986177,0.00149995662497723,0.00475624752096477,0.00575158372923381,0.0063140479739421,-0.0107274682554323,0.0134724987501785,-0.020181566358027,0.0150465411465028,0.00255264353064501,-0.00849452697452458,0.000667040743321903,-0.00969069558362774,0.00528829583437645,-0.0034001607181856,0.0133694801105137,-0.00819487960992969,-0.0343006140482567,0.0335184041003674,-0.00125146360291326,0.0111036284140975,-0.00888862314183549,-0.00533214141382071,-0.00117458361244012,0.00572395202769208,-0.00840172901921466,-0.0123896300685348,-0.037142807323551,-0.0174160352960407,-0.00192664225561371,-0.0219124900076859,-0.0116683777614268,-0.0206547970493786,-0.00829745552177109,0.0075964345807653],"Archive607_field2":[0.005529196236948,-0.00600773050892303,-0.0100374082736578,0.020902743234091,0.00364585351807836,-0.00759876237981623,-0.000460739528301147,0.0117345520087482,0.0055699042989953,-0.0228461245346143,-0.00341505040833289,-0.00499496566439162,-0.00440453154654813,0.00162008919175212,0.00566571113131657,0.00219721733582088,0.00806627429232511,0.00343685546725895,0.00915652578257999,-0.00322120942991565,0.00676091152406549,-0.00486487888618724,0.00565483869032297,-0.00222562106676824,0.0033164754694929,9.75894107044817e-05,-0.00336317634169501,0.00598760297985704,-0.00172190167567941,0.00376236366530117,-0.00157390364563232,-0.000348450114689982,-0.00191966952954969,-0.00538586622489588,-0.00160205982475743,0.000883535641149232,-0.000310812923434695,0.00394646089454825,-0.000269014136163117,0.000881492478485839,0.0205971809833586,-0.008279953924998,0.01093265868148,-0.0061321417399637,0.00373216058203686,0.00350251567776405,0.00565712692362669,0.0121726472800751,0.0127302216488993,-0.0133644741988553,0.0171709120192381,0.0244930600881248,0.0111021273534653,-0.00525610778003706,0.00905189190851764,0.0066590785799292,0.0222596420462387,9.31956328886207e-05,0.0178690380252387,0.0148787162900697,-0.00976873746413515,0.00624765648262062,0.0143418350212489,0.0219447339522993,-0.0144682642965382,0.0031438392541471,0.0109046209493304,-0.0193789417544448,0.00293803965118266,0.00156019277096648,0.005529196236948,-0.00600773050892303,-0.0100374082736578,0.020902743234091,0.00364585351807836,-0.00759876237981623,-0.000460739528301147,0.0117345520087482,0.0055699042989953,-0.0228461245346143,-0.00341505040833289,-0.00499496566439162,-0.00440453154654813,0.00162008919175212,0.00566571113131657,0.00219721733582088,0.00806627429232511,0.00343685546725895,0.00915652578257999,-0.00322120942991565,0.00676091152406549,-0.00486487888618724,0.00565483869032297,-0.00222562106676824,0.0033164754694929,9.75894107044817e-05,-0.00336317634169501,0.00598760297985704,-0.00172190167567941,0.00376236366530117,-0.00157390364563232,-0.000348450114689982,-0.00191966952954969,-0.00538586622489588,-0.00160205982475743,0.000883535641149232,-0.000310812923434695,0.00394646089454825,-0.000269014136163117,0.000881492478485839,0.0205971809833586,-0.008279953924998,0.01093265868148,-0.0061321417399637,0.00373216058203686,0.00350251567776405,0.00565712692362669,0.0121726472800751,0.0127302216488993,-0.0133644741988553,0.0171709120192381,0.0244930600881248,0.0111021273534653,-0.00525610778003706,0.00905189190851764,0.0066590785799292,0.0222596420462387,9.31956328886207e-05,0.0178690380252387,0.0148787162900697,-0.00976873746413515,0.00624765648262062,0.0143418350212489,0.0219447339522993,-0.0144682642965382,0.0031438392541471,0.0109046209493304,-0.0193789417544448,0.00293803965118266,0.00156019277096648]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive608.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive608.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive608.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive608_field1":[157.895073227876,200.713254591921,283.846969775688,38.1715374102282,488.118654937107,861.662712089849,1015.64346253628,1001.66176221174,532.485980921143,222.757199146409,132.572384984735,66.9019696520696,70.7801233008975,81.8329705169477,116.945860087366,104.588581309241,100.431041863169,661.576327830911,118.748648749182,85.5887439289069,96.2837059494247,80.0100827825513,114.074450272437,1504.9167319252,1672.45276009348,125.769736894107,1461.99728949283,1692.2394391631,93.5772258475271,1769.98299127996,1450.24996211613,5896.11608316172,3231.84162327063,1761.15347745398,125.112635466321,6948.36475673628,131.462382641395,5449.83256162873,5452.65108872369,6077.50275458684,99.5005528273748,282.521388051916,111.529191183519,170.412142975982,5851.48061196451,2811.350727023,4882.85836109894,200.670930703234,3127.01078092176,1455.13705529776,667.483154392978,921.307888333501,1726.45434079576,379.643372006501,994.486044176893,894.965130885563,1676.32820301847,1265.57476101474,1156.82826557445,886.552407632358,231.223615805206,2305.27517165001,2304.2935261435,1758.01009223982,1678.69171238533,1494.70141024703,1359.46920238428,892.778849697446,799.477195990809,2367.91333850947]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive609.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive609.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive609.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive609_field1":[3236.68662854936,6614.85942611129,3271.48308165934,827.909681740566,1501.08548439221,1216.14391954187,1014.54873968209,999.297960293742,11809.8295585556,3020.98412770068,4604.9877214144,537.090825049912,1193.49538883842,6023.73694468842,4212.97693714989,3512.91736366994,2582.33058084034,-344.978486123866,395.348727487245,-1546.34213686819,5620.94855714706,-965.501571483892,1086.22270668795,964.761695676375,3024.40495499519,4396.49054900328,6475.94942668185,3359.47424089476,8751.20254304118,3582.93097598635,8359.60209825811,6049.89292171102,5724.47947813941,6616.06929615089,5637.11844464325,4832.63995351344,4775.13317901791,2561.82743393803,4953.93119507984,3254.69810308169,2542.9651037441,9273.99148353887,2504.36384612863,12941.1061018999,3229.94066758582,3421.86303138647,1646.66593263032,3570.47785002879,298.855963594032,1028.7702078721,1647.711406015,928.247114992631,1014.61776152758,6068.416220834,989.429588567779,764.085093943463,1485.27883722157,1131.13468936078,917.723383618302,1205.4699240535,7068.55847494124,810.189904949669,4451.467821043,1440.17569596583,729.317114543065,2789.0439254336,1044.66716896283,1014.81903281247,673.346040732526,2408.79120545854]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive610.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive610.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive610.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive610_field1":[157.895073227876,200.713254591921,283.846969775688,38.1715374102282,488.118654937107,861.662712089849,1015.64346253628,1001.66176221174,532.485980921143,222.757199146409,132.572384984735,66.9019696520696,70.7801233008975,81.8329705169477,116.945860087366,104.588581309241,100.431041863169,661.576327830911,118.748648749182,85.5887439289069,96.2837059494247,80.0100827825513,114.074450272437,1504.9167319252,1672.45276009348,125.769736894107,1461.99728949283,1692.2394391631,93.5772258475271,1769.98299127996,1450.24996211613,5896.11608316172,3231.84162327063,1761.15347745398,125.112635466321,6948.36475673628,131.462382641395,5449.83256162873,5452.65108872369,6077.50275458684,99.5005528273748,282.521388051916,111.529191183519,170.412142975982,5851.48061196451,2811.350727023,4882.85836109894,200.670930703234,3127.01078092176,1455.13705529776,667.483154392978,921.307888333501,1726.45434079576,379.643372006501,994.486044176893,894.965130885563,1676.32820301847,1265.57476101474,1156.82826557445,886.552407632358,231.223615805206,2305.27517165001,2304.2935261435,1758.01009223982,1678.69171238533,1494.70141024703,1359.46920238428,892.778849697446,799.477195990809,2367.91333850947,157.895073227876,200.713254591921,283.846969775688,38.1715374102282,488.118654937107,861.662712089849,1015.64346253628,1001.66176221174,532.485980921143,222.757199146409,132.572384984735,66.9019696520696,70.7801233008975,81.8329705169477,116.945860087366,104.588581309241,100.431041863169,661.576327830911,118.748648749182,85.5887439289069,96.2837059494247,80.0100827825513,114.074450272437,1504.9167319252,1672.45276009348,125.769736894107,1461.99728949283,1692.2394391631,93.5772258475271,1769.98299127996,1450.24996211613,5896.11608316172,3231.84162327063,1761.15347745398,125.112635466321,6948.36475673628,131.462382641395,5449.83256162873,5452.65108872369,6077.50275458684,99.5005528273748,282.521388051916,111.529191183519,170.412142975982,5851.48061196451,2811.350727023,4882.85836109895,200.670930703234,3127.01078092176,1455.13705529776,667.483154392978,921.307888333501,1726.45434079576,379.643372006501,994.486044176893,894.965130885563,1676.32820301847,1265.57476101474,1156.82826557445,886.552407632358,231.223615805206,2305.27517165001,2304.2935261435,1758.01009223982,1678.69171238533,1494.70141024703,1359.46920238428,892.778849697446,799.477195990809,2367.91333850947,157.895073227876,200.713254591921,283.846969775688,38.1715374102282,488.118654937107,861.662712089849,1015.64346253628,1001.66176221174,532.485980921143,222.757199146409,132.572384984735,66.9019696520696,70.7801233008975,81.8329705169477,116.945860087366,104.588581309241,100.431041863169,661.576327830911,118.748648749182,85.5887439289069,96.2837059494247,80.0100827825513,114.074450272437,1504.9167319252,1672.45276009348,125.769736894107,1461.99728949283,1692.2394391631,93.5772258475271,1769.98299127996,1450.24996211613,5896.11608316172,3231.84162327063,1761.15347745398,125.112635466321,6948.36475673628,131.462382641395,5449.83256162873,5452.65108872369,6077.50275458684,99.5005528273748,282.521388051916,111.529191183519,170.412142975982,5851.48061196451,2811.350727023,4882.85836109894,200.670930703234,3127.01078092176,1455.13705529776,667.483154392978,921.307888333501,1726.45434079576,379.643372006501,994.486044176893,894.965130885563,1676.32820301847,1265.57476101474,1156.82826557445,886.552407632358,231.223615805206,2305.27517165001,2304.2935261435,1758.01009223982,1678.69171238533,1494.70141024703,1359.46920238428,892.778849697446,799.477195990809,2367.91333850947]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive611.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive611.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive611.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive611_field1":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.66334164503373e-08,8.26563700670648e-09,0,4.97804473911045e-08,-4.36199939304837e-10,0,2.23944226166961e-08,2.12989406153486e-08,5.30333147168334e-08,8.31528761526193e-08,8.27446135632698e-08,0,8.86476434138312e-08,0,9.21677507664358e-08,1.50930638348441e-07,2.29552065301744e-07,0,0,0,0,2.75734644588011e-07,2.32370990625217e-07,3.04327890554674e-07,0,3.17097919837646e-07,2.64419355468839e-07,0,0,1.70117184937752e-07,0,0,0,7.41692809721956e-08,5.97143553963136e-08,2.46248553006821e-07,2.46216409273682e-07,0,9.04682384420423e-08,5.81827569649435e-08,1.2620357858639e-07,2.93409104832093e-07,1.4490052683558e-07,1.74618467647433e-07,2.46356730037719e-07,0,2.85214998910676e-07],"Archive611_field2":[2.80081765373894e+15,987883894816870],"Archive611_field3":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.52417332566304,0.480509615661067,0,2.9169135278099,-0.0893747560411125,0,1.36620535172794,1.26691518131763,3.31290930598275,5.17380130518529,5.08939995222629,0,5.55921438409105,0,5.80005965042139,9.48454802043522,14.4327000764046,0,0,0,0,17.3688495290548,15.0778205528442,19.1837165494994,0,20,16.7084645721115,0,0,10.7298770279456,0,0,0,4.57805085283383,3.6482107746231,15.5472481458957,15.580126653722,0,5.70760969536939,3.64523811785618,7.9533319520679,18.5318877606491,9.14319547430811,10.9776198608065,15.5765110772223,0,18.6474399034285],"Archive611_field4":[157.895073227876,200.713254591921,283.846969775688,38.1715374102282,488.118654937107,861.662712089849,1015.64346253628,1001.66176221174,532.485980921143,222.757199146409,132.572384984735,66.9019696520696,70.7801233008975,81.8329705169477,116.945860087366,104.588581309241,100.431041863169,661.576327830911,118.748648749182,85.5887439289069,96.2837059494247,80.0100827825513,114.074450272437,1148.48621281832,1088.26110510873,125.769736894107,953.026029319526,1038.68765065224,93.5772258475271,918.50089685226,942.044726173119,2747.1387406412,1538.32779016325,892.549734458931,125.112635466321,3104.20457640629,131.462382641395,2411.19504493744,2363.77439720686,2603.61990827008,99.5005528273748,282.521388051916,111.529191183519,170.412142975982,2559.57001927121,1175.52724367345,2235.7971027095,200.670930703234,1532.68151915845,978.112701455416,667.483154392978,921.307888333501,1025.36076990222,379.643372006501,994.486044176893,894.965130885563,1482.89016262103,1200.71537585115,918.468403586157,752.061107759716,231.223615805206,1151.67493431514,1300.7333535775,984.753018915536,916.765260936436,898.585642619347,1077.85732049806,630.064750823587,799.477195990809,1085.53774580746]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive613.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive613.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive613.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive613_field1":[2.04830620096347e-09,-1.65250366008399e-09,0,-1.01582543621876e-07,-1.83817610817682e-07,-1.86676418445393e-08,2.66248776930478e-09,0,2.075798645922e-08,1.78819703208284e-08,1.121798180751e-07,1.48445386860936e-09,1.87175953746331e-08,-2.62891873618932e-07,-1.90993853137303e-08,8.24438665991721e-08,2.9494417778838e-09,-1.17076443999405e-08,1.99661593126546e-08,3.25861626698928e-08,5.6981636568707e-09,-1.6663516282094e-08,-4.8062751581658e-09,-4.75952694076849e-10,1.74996470831211e-07,6.99268022135754e-08,1.58112328517005e-08,5.67829958067565e-08,2.23185911678018e-07,2.33115260973832e-07,4.86898276317084e-08,-1.73427978667984e-08,-1.36662283406999e-07],"Archive613_field2":[9.39320852218168e-09,1.8956343045384e-07,0,1.22270393679904e-07,-4.2308409334113e-08,-2.75630510275326e-08,-1.49788683992456e-08,0,1.02746003326717e-08,-3.09995165004758e-09,3.01925146017617e-07,2.83816719873547e-09,2.56909911131855e-08,1.67717243767029e-07,-4.07528645915727e-08,-3.21191174561355e-08,5.97109026479554e-10,-2.60186520327112e-08,-1.28869193744187e-08,6.45913623962341e-09,-2.6247272086506e-08,-1.92534974715432e-08,-3.78018573597205e-08,3.80755403510395e-08,1.02039388073619e-07,4.18405906663462e-08,1.08553750748968e-08,9.39050329590313e-09,-1.04572588644283e-07,-3.17097919837646e-07,-1.51999072919791e-08,-2.44047876575849e-07,-1.67389479899081e-07],"Archive613_field3":[501102198636209,426512622442067],"Archive613_field4":[23.6738719875555,68.8311647659587,17.1035688320689,28.1665143301059,-3.59428100251289,281.978399532207,108.253860669319,-11.0039653343167,-12.1506351521335,210.901740914534,62.5421174748961,582.514126361196,210.484478061357,2.84783226787765,291.808929422437,829.390200521534,-7.14438315735202,250.230277807518,188.784618739003,82.1726805558776,194.843128762258,337.04294824318,260.685006993219,30.483686841887,310.011572592213,117.356742582181,476.169069997645,668.127193301936,198.851335341781,255.063556343129,414.039174582316,218.862359537862,32.9812698164402],"Archive613_field5":[21.6081662932109,31.6462796064835,11.5757513664068,19.850336166178,29.8249966194614,313.456224676824,98.7396375682889,19.3280847163081,82.6812537358602,177.03357013971,46.1057352030071,979.981486527441,569.420383266709,44.5329161334196,175.576496085086,583.58830200113,1.42700144048709,260.995814085691,240.59582368632,308.090740708838,276.360268515404,413.789066196704,395.863449195328,14.9132209245938,102.912502953315,45.885520887423,1040.49469146753,974.618683366016,161.703068604532,228.360318815072,650.835767065115,113.719826110082,4.27101013811254],"Archive613_field6":[200.713254591921,283.846969775688,38.1715374102282,488.118654937107,861.662712089849,1015.64346253628,1001.66176221174,532.485980921143,222.757199146409,661.576327830911,2155.07989206043,414.422189723755,1433.5766109213,667.483154392978,921.307888333501,1657.47051203929,379.643372006501,994.486044176893,894.965130885563,1664.554364917,1260.98752052881,1143.83824712709,914.290749449321,231.223615805206,1893.58683445394,1894.21606971773,330.964945416615,1630.09480643153,1378.98837819767,1364.20886471131,953.518329639542,799.477195990809,1823.42972659298]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive701.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive701.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive701.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive701_field1":[0,98.9455375485853,186.871394190478,0,0.440210073042449,0.0753004645414338,-0.536512789883251,-1.28792042309304,-2.37103633108121,-3.80670194836118,-5.30543407618595,-5.82061835043704,-5.70194427885104,-4.35149702169902,-2.88329586539105,-0.89975930786503,1.45261378586885,4.12058319550366,6.95700607779025,9.93146508360996,13.0169109361431,16.1698051580206,19.6207562345992,23.1207652317277,26.7613938833035,30.6104390106271,34.5863265971109,38.5666253154773,42.7657238484675,47.02398865554,51.4118420870145,55.8634757020002,60.3936337086528,65.0360622915774,69.7387155204687,74.479325960753,79.2927158240615,84.1443345424869,89.0396182079978,93.9700074516306,121.001669614751,143.114152488946,165.321089472714,187.142418297875,187.092183574859,186.881201194693,186.534714845268,185.986352572517,185.375148026088,184.472798718892,183.350216830028,181.980313804868,180.342722645547,178.48317508864,176.190413170606,173.757475855806,170.774679464177,167.382030844131,163.792188602628,159.604754382739,155.048589381097,149.762686831733,143.894484925125,137.296548297127,130.165310326819,122.246449164239,113.799300273351,104.835147676559,95.5936165137095,86.1520973095658,76.6653294788062,67.3261259136618,58.3552878358826,49.6914671410483,41.3645730688336,33.160921123288,24.3044356572586,13.414745959689,0,0,0,0,0,0,0,0,0,0,0,28.6087562423995,0.227692809764535,64.3640844057317,109.840749546663,145.000324279548,22.2703492719803,19.1705827078657,119.557937943841,122.56985198085,162.237433658726,137.301456093076,165.326562586215,40.9742014633679,16.155012088611,147.919597829828,0.421629761603894,1.97217465300062,105.392450372102,40.3949702872702,95.1707508254776,2.50763438289937,6.59558815987409,0.255460417530111,136.633063082287,52.7325354392833,52.0459162764762,4.39878520894837,30.5279399533137,69.3898547279699,91.1714941507771,131.607371820751,164.027729361082,0.852411610150772,76.651932642362,-0.44009764219952,101.404004508872,106.00261220703,116.422091749062,152.520941194651,135.732207970241,57.9764914150718,48.3598269824556,126.774323641629,37.3880606939858,31.5893948802625,0.896045858915278,48.9310699626345,113.641149347192,67.4511515642414,73.9255937624835,62.3682511189389,101.993839247206,97.4160087938607,15.666847420469,34.033053249494,163.697328140669,73.6409233385593,93.4442822105527,158.947227816,37.3921786014636,0.462105605680726,135.241586382003,143.96702657173,25.3238289873617,19.0615997812312,131.747668980111,6.68937934113536,125.27630485984,52.1704651013153,73.2793080579808,1.97538364486802,0.061271626541645,117.396867649345,55.0185023258428,37.8482109255973,71.0477542133487,118.508612163051,0.272502114957424,44.611122856849,89.8090745452508,96.907889735128,93.1034577555578,133.579964949962,161.421372059585,47.3325491690476,54.4719312829129,55.3588398403957,50.8122357717789,2.04514839973665,163.374759050026,119.652452678058,1.60463806353497,61.0077237939563,80.6619700679951,81.7700035237281,81.2782662068058,109.565447074088,9.15582951302446,11.2659929909582,113.562748685088,51.71227244527,141.822133882947,0.443357038844624,82.0247927908929,141.14262050881,4.62254054267447,58.4508763952229,44.3607737239503,6.96310819586616,114.950161045075,11.9776240173044,144.967570257389,63.4128547885557,17.7572868538002,-0.0683907906723094,97.8997130203863,104.491078304807,9.05021907137438,62.3770209569711,76.6767808503247,161.57090234457,36.330990814613,59.7346903640382,113.35148116804,83.7704609603392,73.154548644191,140.347952579718,0.691402636630909,53.6422803967618,39.6714327530232,119.382525399063,1.66623205010956,1.18966973174946,132.224388650619,69.0181708692573,89.4019410203581,58.8427488757624,122.843724362148,66.4928869963682,14.478496428185,78.1948123632022,12.1720384972006,59.6634591996803,105.9862794353,0.845089511055444,97.6818783164184,17.8591810833227,73.7177834193733,0.249371543634594,28.266404047772,-0.393159286158575,45.6417428765766,116.700832407346,-0.0730939911389318,90.3309642063877,1.32361491854927,21.1654781156782,128.009554181637,94.5863919440818,24.3967857609209,64.0509672779152,160.591147838857,-0.94215319788275,45.3545354188449,28.5293389034132,157.397887975563,150.247767101725,97.0744672878847,-0.720654399652696,40.9785327768851,104.250540411885,146.099473787539,19.8855378017282,74.5127507826281,89.6540374178244,80.2065851474424,23.6586630578625,158.066419992224,97.8357698858442,83.2001173141529,38.4930894432438,40.0403559018472,137.799408298171,-0.244638856503008,49.0028139252424,62.060717155875,74.646764229332,11.8086541159534,100.873239253501,85.9781434794583,2.94743000588264,-1.06144547403455,32.537028962481,85.4070330685719,29.9985715583887,89.7358240252269,140.745008130005,34.2259213680867,54.5425025783261,89.2069325472555,123.894143957017,1.65929839695585,16.1570143598974,156.278375071094,81.6026144292996,0.500680842142443,0.369389027099797,104.89460433751,162.710823927141,0.926660349414668,142.739073371859,70.5939755795909,77.2352952151318,30.7964166339672,7.0818536505701,23.411133575687,112.492911346456,0.106436921892333,138.239135970078,72.7071633136924,122.481395001412,98.0472661301677,11.1415236937507,8.14681426361126,43.0254366400068,50.9023304810076,117.314931653657,44.7377673159525,4.91544079574643,31.6238332804156,34.5868030048675,6.20177673782134,4.20773990041814,45.6263379431252,3.49892249749649,38.1648716910297,37.7638806029952,11.7623317503534,28.6894635712358,79.9225844654873,104.072155919856,27.2865001251152,56.1518858756254,98.5789636863145,16.6025806204702,32.282142471218,62.1939882625702,63.59438416964,44.4602423822684,99.8303223805754,119.500214827933,21.3818995576211,148.113960076339,105.529717498008,15.7463836334149,35.5286646877138,120.943987515182,25.9350029850524,38.5254295537904,75.6763506234636,101.1168248215,4.64296533258742,101.166379935545,73.6840212534562,21.3951317443496,3.03721591717411,129.178138656802,99.5049906381225,1.10245750416387,13.96919525779,2.38948466718754,115.560604799461,9.11330576930155,1.21709891414726,20.2743693435211,8.26938692370105,17.5171854582838,4.73680496076028,68.9854686151173,5.51476511259558,11.6125128787639,176.224217374135,0.691577877184451,-0.0761988908778113],"Archive701_field2":[0,-546.321110450731,-547.118195428078,0,3.10081883590489,4.1494575098707,4.3499704851551,3.4091814333494,1.14943797150364,-2.51491143065061,-8.22880949955582,-15.4035462814336,-24.8269443044875,-35.372752057156,-47.0897311113293,-59.9627893215237,-73.5362961134101,-87.8277224936008,-102.654562534851,-118.132199373464,-134.200075362027,-150.939430819403,-168.18758881626,-186.011085439085,-204.449342056718,-223.253105153905,-242.432352972285,-262.072643000539,-282.486547428674,-302.995866219064,-323.839844619934,-345.024991583194,-366.606411354057,-388.407414679529,-410.386168012307,-432.634937820867,-455.07063056693,-477.672886073609,-500.415214901265,-523.303558125171,-546.395093880517,-546.499014717919,-546.817160688244,-523.819258745117,-500.484364736494,-477.408337531151,-454.582773551071,-432.055602168869,-409.732361947576,-387.773025918785,-366.178848309839,-344.991405980082,-324.182120459438,-303.88348335683,-284.056294033054,-264.679216151701,-245.937253009118,-227.946293086723,-210.518611609936,-193.711130658192,-177.631595574871,-162.542792930373,-148.477000810515,-135.429498620306,-123.406758762716,-112.573119594588,-102.805501974616,-94.2603187761013,-86.7812349517213,-80.2604974762023,-74.4568860227913,-69.2701590846653,-64.1946711550411,-59.3205918958989,-53.9607811086599,-47.8096320075541,-40.5773691561098,-32.1760906097697,0,0,0,0,0,0,0,0,0,0,0,-133.087621159898,2.19706128024326,-58.3840544463394,-175.094857563634,-192.537904262307,-99.804256707982,-85.0442366189266,-154.670661880755,-445.067556686033,-391.462862615347,-386.995961528432,-454.264324670594,-116.452030952311,-72.4003887276848,-207.768263151407,-6.31773729008147,-4.1330173682988,-379.755805292765,-68.7276404052269,-322.331790294131,3.67771582049453,-32.9747367467346,-0.65741290476473,-261.4807742204,-101.444334059639,-48.7099480919063,-23.5476901002185,-24.4574239231991,-301.966170866689,-221.391180732691,-143.647427267822,-431.62141942252,3.37331126044985,-184.252465172938,4.6449246511951,-99.4178911938745,-96.0035417566128,-409.282373159388,-243.600602539895,-477.053397554614,-59.1590423060367,-40.0154064312114,-131.379545581784,-167.037134104629,-43.9924342624643,0.864533252745064,-47.3579010528784,-500.136209083533,-58.1905333059961,-63.2337525566572,-278.391083430139,-357.980304957166,-112.40080165303,-14.339629391972,-147.536600482466,-413.714471432122,-64.1126422624594,-175.94323114628,-285.307613145923,-97.8306052990617,-2.0789786865954,-157.891434995042,-440.456982447928,-117.022311111198,-31.6958052223449,-205.465022004787,-6.57919307254335,-375.872701888379,-69.0893278704713,-322.8898102678,3.43808069514968,2.40877495298298,-260.817038110111,-56.419268834388,-30.3794568978144,-221.503561918927,-139.841919969481,1.5537093829457,-200.990930530793,-94.3597684071502,-90.56107335127,-409.691233285518,-242.210787907539,-477.055998165807,-57.0923046241605,-46.5557004044966,-166.472921282283,-219.324511506439,2.00181519765573,-365.462457749362,-332.676910235809,4.12815948687008,-51.0811569897441,-71.3025221214569,-274.937751565844,-362.102238351786,-114.786921931902,-12.6922702313093,-26.5844928401408,-230.143087468204,-144.971290340476,-417.921985035991,4.62502479970242,-70.7948344692622,-287.2192031493,-10.499979106221,-258.260950073053,-129.009809567891,-16.859866620024,-203.817287335464,-8.3869815406074,-372.275918756691,-70.491529618176,-34.3014952181542,3.94602805001099,-260.500221824198,-137.03882325987,-45.9291249977152,-197.972075774347,-90.9856516605546,-344.051137062216,-55.7685873625125,-53.8038895492419,-125.340445237599,-82.6805639447879,-166.492251084861,-329.362786553178,3.41327746144022,-44.7185453342801,-49.2075566601738,-117.044145107065,-13.0505825641652,-7.10947693297008,-228.594098921822,-143.086569059872,-78.2948501570059,-179.834008090186,-289.517858112328,-96.1603231865205,-24.1215023124729,-254.926865938862,-21.6663780133136,-127.197397047172,-158.262801921477,-4.22419937124307,-202.907283917233,-12.2422101423503,-73.086748621903,0.808412495260617,-36.066472921219,4.50228690096951,-40.8252433677088,-311.488125324272,2.14431082492104,-134.769280478336,4.28704166771069,-45.9597054229483,-187.744381863853,-240.79730551629,-56.1003430270596,-61.3644665979433,-326.504035207199,1.50961662360716,-39.6633116291157,-38.1579958852283,-302.455980287883,-227.782076068681,-427.444229001049,3.78146789190698,-182.528104189843,-292.282627698478,-463.162561911509,-22.3667803992403,-126.22938806547,-158.669358611503,-202.558417438515,-17.2928251876705,-530.978092344034,-86.3130882111563,-76.7680970667204,-39.2623943174279,-33.4672258331543,-308.452494408847,3.57254110925615,-86.7020577667475,-82.3596094200299,-240.825704340432,-57.4948992700796,-454.606604763881,-119.245921373825,2.68181222289398,-1.75066806376086,-29.496655774978,-295.377905115699,-23.3711512106003,-79.4381173517139,-175.938621449706,-86.4579621426452,-241.364753333172,-387.595586986871,-170.777262800456,1.03389275723828,-23.2780043537181,-265.714855116638,-104.577606491866,4.68321582859645,3.8993796015654,-472.660957504041,-500.19743898505,2.05888636217781,-350.645793583041,-110.920460894777,-344.148023172804,-72.2492862994419,-12.0688230487892,-19.50367451071,-105.269872623706,0.168268808580182,-500.045215367107,-65.9804603132881,-354.13333367911,-146.375601970531,-5.56555163867163,-3.28683778822063,-47.8545079084421,-77.6551721738756,-523.177200847376,-155.778538315364,1.5398402963731,-107.153430687934,-31.3580554858749,-0.358869912912104,0.302192311862331,-37.4608002461199,-1.95589400376861,-40.2872184240038,-31.8716038231231,-15.5921651751255,-29.3262619353504,-138.750167188445,-189.734207609948,-32.5955495990251,-114.19345302314,-340.089495883882,-17.934886285167,-45.8156955031796,-155.571831763662,-54.2728010678828,-48.4042446366102,-307.157800572489,-427.153337423592,-19.7921195926659,-515.482767144834,-216.415743591563,-9.67014018247467,-41.6453455061555,-392.466738604633,-21.4531597652011,-37.1361599184355,-81.4314227208413,-276.205207319654,-6.80511754500088,-124.326627137357,-67.4295967520704,-15.8621472307802,-2.67000564650096,-273.898548286711,-104.48408649933,-0.414964579794529,-8.93246841917052,-0.0702194907770167,-245.316111022954,-2.73340219316476,-1.80023889959101,-24.0546315478404,-9.03718862992397,-14.1947522119701,1.22566986292351,-58.5556324052814,-3.15195364808413,-9.63848928042053,-535.321069953533,-9.84180860205847,1.44161137920124],"Archive701_field3":[0,555.20894726661,578.151569863103,0,3.13191033739961,4.15014069474548,4.38293157549018,3.64434590313741,2.6349612774463,4.56242909289272,9.79085984562822,16.4665975849812,25.4733062647401,35.6394039572338,47.1779203779127,59.9695395182381,73.5506419611008,87.9243313553422,102.890034224837,118.548937268619,134.829893560343,151.803077620099,169.328199385232,187.442507695366,206.193369607275,225.341846840049,244.887034681628,264.895176999341,285.705366793233,306.62314076879,327.895444418252,349.518200862975,371.547644102927,393.814688878449,416.269498448145,438.999042617217,461.927065224954,485.02747873238,508.274965855398,531.673749819308,559.632917782948,564.927281807389,571.26182250138,556.245360033376,534.310850068105,512.682459329582,491.366154564791,470.385976309597,449.716081470114,429.416037308101,409.517094833828,390.046029094813,370.968387921108,352.422211625208,334.261933030104,316.617668297997,299.414634852345,282.800736882852,266.73201322941,250.99338589383,235.781782196044,221.018148351364,206.763252444802,192.850956105622,179.366206741393,166.183337277004,153.359877343969,140.980196780038,129.108954987313,117.745196615252,106.87095311779,96.597940817375,86.7542242378582,77.3832961918117,67.9911303261211,58.1842556233443,47.2993496810372,34.8605251838107,0,0,0,0,0,0,0,0,0,0,0,136.127792311994,2.20882826058583,86.8989825888732,206.695910472853,241.030990992642,102.25878013026,87.1781705672647,195.491979815065,461.636760482831,423.750112315232,410.630690626741,483.413848544913,123.450235716578,74.1808648069234,255.044816836356,6.33179090955759,4.57944379030878,394.109173007928,79.7197728307076,336.088165288373,4.45127216137307,33.6278909045917,0.705302596249198,295.026760166173,114.331418283247,71.2841949114541,23.9550207758288,39.1167573138699,309.836279810902,239.429104855488,194.820644897376,461.738178737327,3.47934396301912,199.560741881047,4.66572726913495,142.009468768362,143.014802816099,425.518700442422,287.408926550137,495.987072814279,82.8315510139061,62.768667483292,182.571394616102,171.170298978371,54.1592479751925,1.24511683242223,68.0956709330516,512.884527414698,89.0830848914568,97.2805267025847,285.291770089923,372.226600314392,148.74077780343,21.2385281786513,151.41102071978,444.92300357787,97.6392159330956,199.218107771454,326.595553168464,104.733005083138,2.12971687557747,207.8941844591,463.388452733816,119.731021929937,36.9860602783353,244.076470699493,9.38262103334729,396.200000737261,86.5742031697725,331.100719667342,3.9651657482094,2.40955410529359,286.020194920584,78.8046286330043,48.5324476167715,232.619026138302,183.303174379396,1.57742519610591,205.882263534727,130.266786881866,132.63652249456,420.137073438003,276.60381923398,503.626135882138,74.1613204988844,71.656294474691,175.43612703412,225.133570690079,2.86179944484425,400.317523871812,353.540147700257,4.42905904950258,79.5690075464722,107.658734323468,286.839852029582,371.112095702845,158.684040278616,15.6500139838963,28.8731338382209,256.636588580642,153.918270989628,441.330152193951,4.64622641094421,108.351166213932,320.025170856626,11.4724645259746,264.792793111908,136.423638751248,18.2411616459133,233.99791909561,14.6220701838829,399.505889959671,94.8169072494175,38.6253001361698,3.94662066478682,278.288913505246,172.331147868722,46.8122952683974,207.566460512941,118.986207308513,380.100435935349,66.5588178228977,80.3933564637933,168.993448084084,117.701171547848,181.855045733242,358.018704761906,3.48259969487105,69.8372575562563,63.2076435974468,167.187078670876,13.1565206080067,7.20832687459958,264.08057674867,158.862437836839,118.839347942151,189.216118660745,314.501463877537,116.910700008373,28.1331429568685,266.649837160885,24.8513673143578,140.495217638352,190.47363570997,4.30790396941555,225.195726464984,21.6522991420398,103.807439118721,0.846000549212704,45.8233572184419,4.51942048972369,61.2361754916502,332.631833267047,2.14555625547646,162.241924468074,4.48672293698795,50.5991302932119,227.232037537011,258.708190602666,61.1755804485583,88.7024473737149,363.860415229227,1.77949290488941,60.2512420821978,47.6440534405177,340.959990542984,272.871885135154,438.328667902896,3.84952492929481,187.071507631933,310.318078156103,485.658949261134,29.9283724764946,146.581064399796,182.246568657691,217.860066960904,29.3048484155234,554.0060718787,130.46757093509,113.206008004585,54.9841208206766,52.1851061675066,337.83371388061,3.58090744748259,99.5917797490353,103.124380617395,252.129251141105,58.6950402854178,465.663586178303,147.009628665835,3.98490406891318,2.04731657635565,43.9170918392016,307.477589635595,38.0279503056964,119.845452987884,225.30769146023,92.9859823379499,247.450659201162,397.728822020969,210.984910352513,1.95504613848626,28.3357477352839,308.265007330572,132.647889019255,4.709903587432,3.91683667395592,484.16036472202,525.996473553057,2.25781143046515,378.585413908853,131.479496626818,352.70831104571,78.5390262752959,13.9931819437567,30.4708794542983,154.066223376226,0.199106027741273,518.801769585735,98.1822424895527,374.716039347359,176.179122621937,12.4542729720016,8.78486683404222,64.35248344254,92.8513490141741,536.168981455844,162.075355387819,5.15098693017393,111.722533714293,46.6859142135261,6.21215118297804,4.21857739800037,59.0345176077519,4.00848849286924,55.4943006040814,49.4156838306968,19.53120741413,41.0257840766761,160.122541831138,216.40259512118,42.509092471381,127.252422376697,354.088516182071,24.4398410248734,56.0465402765602,167.543090022555,83.6049199130634,65.7243033552343,322.97369508853,443.554139892793,29.136122368335,536.339657673,240.774366055647,18.4786419598245,54.7413994780831,410.679423671347,33.6580219820761,53.509841111628,111.16648168412,294.132502135475,8.23812793545278,160.286451843612,99.8803559576487,26.6338014021474,4.04395977723355,302.832307160916,144.285021722604,1.17796780557504,16.5809350824898,2.39051621027955,271.171989167471,9.51440116845946,2.17306002273731,31.4591060136786,12.249634216037,22.5464581861351,4.89280981126001,90.4862252855636,6.35196395194213,15.0914191171089,563.581070233309,9.8660770582721,1.44362378742299],"Archive701_field4":[8704279.94025008,2721036.60465058,-88727.1515018115,-1103880.25220818,8760725.70536882,8723620.49521411,8668816.50640647,8514821.45741335,8343999.80925106,8181975.38884251,8068176.66080714,7889607.76830372,7787181.50741161,7536637.84001272,7403489.81804856,7176150.63669265,6957014.62059881,6776894.49169908,6586108.3989713,6498523.77842865,6304372.37411065,6100381.93590129,5952033.49298736,5758474.91716339,5603550.885272,5386172.17438054,5221679.42286166,4985408.61227609,4906632.30326108,4624516.86216162,4496694.15785468,4315398.5036853,4148577.002012,3971594.74336969,3755965.35273,3615244.54343244,3436002.78925511,3235712.05846098,3066478.05379319,2861307.73870126,2007827.17594739,1263207.59705099,531208.905240296,-106270.078954265,-130591.945258076,-133616.195596662,-136818.850857261,-147162.627884853,-142244.805922528,-162938.376699245,-159758.758883092,-172406.458558254,-171771.08092629,-187145.738133845,-196299.563908099,-196955.172602737,-206186.490762815,-212699.554114151,-217929.114194567,-227049.582051397,-229006.641474324,-243118.600607394,-254365.805743257,-262945.984735177,-267906.412148945,-280428.326422711,-284565.814971494,-288994.50462562,-288274.903423477,-289564.246399877,-285495.716066397,-283481.585263926,-273365.964173933,-271515.504626981,-272289.835468477,-233328.883530498,-286738.317302891,-144960.643958679,137264.917495235,835811.838206295,1641117.94239749,2377808.2189049,3239453.05399882,3987318.97508778,4767702.49703122,5588188.46005813,6460672.47990159,7343922.55724734,8178395.91518827,5321228.20064496,6130028.99495956,2626651.42154968,1917052.23920295,469228.332836216,5610922.74783967,5776725.11678487,1272887.6167968,1945967.97517418,605991.485419061,1435782.58784852,554780.629855177,4758780.62999969,5946983.31838454,468622.115820334,7086054.22946401,2393527.76051169,2500205.61163859,4596960.59355342,2841719.68418934,5914506.46825711,6436432.21155197,2715286.71190635,1227229.1878948,4152164.70889141,3352612.94013675,6668088.87306252,3917932.74823899,3711735.05182351,2843682.12146887,443747.133033329,592836.708521355,5945974.15485863,3333778.06957782,7841620.16071942,1224471.65003066,475525.12818549,2151387.87497242,537509.327950226,1510638.64157701,3280193.46306246,2454982.07371919,440050.888325352,4931262.15667637,213562.629177951,4239772.88081479,1146630.08397634,2208418.48136393,1192759.31235596,1195127.62386343,3979907.18888112,2616042.09336065,1865601.79449106,5295544.54652313,5054215.88001844,573465.980288117,1903059.63490205,2626533.64353024,484055.602686372,4852144.68577485,1979374.81158489,513756.624201775,1240050.30772082,5446804.01299611,574187.042089998,1169995.35362269,6340715.9598959,1837116.21643168,3913362.63530295,3552802.30732906,5455951.63281898,7028147.02256295,1958725.50794596,416500.980860294,3214883.99818388,3638263.5386828,1126250.70595928,5345923.93180701,4645840.8377401,1979057.45186706,1224609.18889076,2880337.49688492,1291101.57246803,704263.207328851,3965851.75416293,1774345.04346166,4229883.54739589,4363517.05844853,4746891.66568828,530453.628283613,1983126.9076268,6440127.81507129,1939387.4210063,460343.733874084,3277978.64776027,3275061.28310524,1160001.57424824,6002069.18432905,167376.823612198,2020089.27532186,4290481.16128826,1302362.09108055,6949685.6339463,1160924.77789853,1150756.70548734,1550531.09251176,4107941.58546688,4667571.68721159,999768.343213479,1842874.91676508,5492666.42287392,1154531.33271601,3198496.60496261,5666096.7188282,7497288.00575632,2666164.72982165,1824103.32638317,6333827.14948828,3974985.51284902,2751339.81015673,546636.257445175,4715264.71803739,1086409.8469495,1166995.0917342,2041703.76673968,3454804.52867746,1271520.61606292,7005584.08332121,2684162.22995208,264035.559191032,464178.373107944,6852416.59141358,428880.179042467,1267970.83046168,3547881.1910395,445882.378036918,4042040.09032025,1815360.74974022,3403212.14698717,1132512.94213772,3383454.38291508,6020955.43723661,3930404.58469837,1964383.70538252,1265547.98432768,2558392.58476035,4717962.72131214,2504798.40077496,4556515.64567152,4943136.91126445,8020073.18618516,1810314.43735189,2050361.77603381,7768889.78460699,2521488.61709084,6208629.50487794,5569927.61741018,1204834.36906278,2756625.18251062,5447709.29293868,403918.107144209,543371.229666551,7650815.78091654,3439107.07570978,784887.677831368,588399.146954217,529736.465369007,2731669.49663915,7889068.74247196,4758729.33354933,2475770.10127688,1164630.85718038,5274151.64245076,3219728.90616836,2693581.10804555,3238807.43374886,4009072.78659836,811166.957884888,434253.078548033,1795049.81699676,4167067.78782182,2517300.69473364,1310963.78126641,8233600.7438079,4244472.52869937,3495238.95920697,3511684.8577213,6167926.79727956,2637676.88297855,2607844.27267382,6203224.30919398,7474066.41833577,4266336.95893898,3156350.30322954,3272648.9885653,1134436.28854997,474017.552234614,5067024.90848543,4282957.6243951,3016749.5713758,1229474.77257799,6867768.84264612,1544187.16042275,493151.609640497,2660503.65179715,7057014.96491435,6732726.06951196,2485962.57826227,662082.608606803,5035593.57722518,1214379.48425202,3303733.69515148,3434502.69545455,5137595.92483945,1954531.37335819,4619072.67433687,485762.677413308,3763162.20005961,1423027.70602405,457936.936537471,1897462.39531568,2259884.36177601,5217560.98518187,4141902.25425963,4089975.97623633,4082016.05951541,2097963.48002945,4661038.1205713,5395263.17791981,5192454.87231397,2266397.66026263,5656014.49279804,4421587.319228,2934724.20168051,6425683.05079174,1284688.16848864,3683415.4019094,2214195.14639215,2032109.36176535,3021711.5630942,2231985.39450059,1420937.30434652,3997599.10115627,2706175.1383397,2477030.01572481,4825657.10881971,3854141.76641711,2274171.02181418,699225.646162095,2679940.51578834,2011276.53608561,2747358.48401087,1109436.86302618,2274547.11948573,4155715.64679011,891573.215322296,1959460.10186875,3003026.06469172,1743260.39108799,2596181.16352282,2579156.61602761,2605031.89752022,1850599.23500801,2202720.4766525,3570969.15075131,3302547.79269953,1524897.19416994,1594180.69864266,3612918.19764401,3822047.07665213,4025469.69228791,1971772.48193912,4935661.68341691,2944605.69206445,1955353.730257,2901544.6006338,3311782.53427203,4898871.26187421,1746760.34091404,3718954.82318884,3305413.01903317,222597.0409375,-211043.013160925,8423329.33471546],"Archive701_field5":[0,98.7486066305935,186.383417526647,0,0.438056832473678,0.0778740464081772,-0.520738942544119,-1.26737030553046,-2.33888553926914,-3.79533770281043,-5.31082671742928,-5.8455676947227,-5.68151758262649,-4.2948301170539,-2.81669121101818,-0.821571869598078,1.51177882570277,4.17354093769928,6.99510644057829,9.97678272314308,13.0680600380593,16.2129904528259,19.6587974085158,23.1569159247374,26.7863880171038,30.6277717287701,34.5912681604445,38.5560860010625,42.7430598447246,46.9955441694646,51.3681289876356,55.8055334374707,60.3218330583075,64.9487161417755,69.635981049459,74.3620047916327,79.1598823667937,83.9960601869851,88.8751776033479,93.7891877841728,120.732879997011,142.772176194008,164.90177341361,186.651226009855,186.604642460102,186.39587667341,186.051128377807,185.501641747388,184.888693752139,183.989550459613,182.868315233128,181.501407393016,179.862905300014,178.00707500297,175.718011923823,173.2905874206,170.314537697496,166.931091167435,163.345241528959,159.162177548183,154.616853377629,149.335942713103,143.484739983986,136.890013449169,129.784922661556,121.876297155233,113.458766399446,104.515544989628,95.3004875524125,85.8812346390133,76.4148915659688,67.0934816082733,58.1574713291029,49.5090995088478,41.2184868292575,32.9572714110566,24.1232453624261,13.0592049210591,0,0,0,0,0,0,0,0,0,0,0,28.6071114992507,0.221512073221396,64.1743012452013,109.576718424972,144.615638194167,22.2756186508232,19.1826034567318,119.253124444914,122.293988302539,161.828616683749,136.978884348294,164.911355196039,40.929537986693,16.1658392133732,147.531286896408,0.411305040870605,1.95265694670137,105.173138207482,40.3132714613811,94.9835114769918,2.50443312397343,6.60341494681785,0.24514936908667,136.294448209751,52.6474808595107,51.888776641276,4.40193478516299,30.4228790233185,69.2874254424788,90.9816811245263,131.246353470359,163.614117597484,0.853823789500509,76.5041212757737,-0.428526768296042,101.111832142776,105.688397110344,116.169677888645,152.123596536997,135.413999706096,57.8164614045075,48.1988445368331,126.421282008737,37.3725084903066,31.4319788158552,0.889122870334758,48.7422695490648,113.394683593264,67.2371523217239,73.7021166730615,62.2876863041779,101.786265664857,97.1628519132327,15.6302520177054,34.0211236831163,163.282734767307,73.4247338305059,93.2430939986591,158.536659490889,37.3502189327463,0.459736654102942,134.87661648868,143.621145260961,25.3311730317758,18.9093534356147,131.417628407737,6.68044937167573,124.992521168974,52.0374976742337,73.1673448692658,1.9616331098849,0.0586588234582993,117.127218463607,54.8134440952308,37.7189660214571,70.9249879277562,118.198749127778,0.261496121531724,44.5799721496211,89.5678518688024,96.6300795296558,92.9275470368959,133.250767745694,161.018049404174,47.202900027141,54.2859994766918,55.2867396188376,50.7606699352845,2.02997709228349,162.962235457835,119.384372920315,1.60637298728498,60.8124521581356,80.4072172033029,81.6232893829792,81.1403799010406,109.271260460515,9.14466645402256,11.0296952686742,113.296541693425,51.6456509150233,141.484807801553,0.447513138590008,81.7809423802235,140.792768000918,4.56891132833143,58.3795781149598,44.3169437345452,6.89420904569115,114.676456138483,11.9390992706691,144.616079216521,63.2482951718327,17.7284188016778,-0.0621451637475031,97.6942800894601,104.231655368194,9.0665424754336,62.2817375383532,76.4807819612086,161.160694324207,36.2434187638387,59.5369900901897,113.043679965018,83.5451209492137,73.0209356480572,140.008383072973,0.686979646925705,53.4730293642656,39.4955322854198,119.043550806665,1.66171640241203,1.230021418379,131.893273200258,68.8971715916169,89.1286998567735,58.7581693263416,122.557434854788,66.3516090701302,14.370716617221,78.0564519684153,12.1241131124082,59.5567254445791,105.736196953267,0.791599213250729,97.4659207774667,17.8029709646833,73.5124811325245,0.240659176266681,28.1872305330601,-0.382119830663131,45.4619156085945,116.440002409762,-0.0591020546007347,90.1295253182856,1.31665552749265,21.1118881943185,127.68560136717,94.3887933129014,24.3579480972491,63.829006149508,160.181796929835,-0.932739553081646,45.2113613429415,28.3385335806777,156.996959894177,149.856218726181,96.8842582950133,-0.704144275958526,40.9529693582991,104.030233202094,145.745504971072,19.8067676752868,74.3594638856719,89.4598593602563,80.0515896947635,23.5706654059344,157.676432088694,97.5445913694555,82.9626803447312,38.3708480093331,39.8851228079029,137.467200195479,-0.238461444660993,48.9134800877897,61.9160772659045,74.5164376112881,11.8263713236888,100.668508944568,85.7794837903596,2.92682827980287,-1.05149038162509,32.436296529008,85.2501201393985,29.8776912725509,89.4716303712958,140.370237586789,34.19371423963,54.4777493190247,89.0421047412303,123.577427784249,1.65572544508877,16.0399100802264,155.872215598083,81.4096085483766,0.504781097288289,0.372789379494137,104.678667060629,162.305328373148,0.922696239140679,142.395947351075,70.449182920868,77.1095946913879,30.7485632588087,7.0211281230626,23.3262417359707,112.170948553044,0.108502921684018,137.91273643415,72.4650398448567,122.204882004109,97.8204956056415,11.0984544882893,8.09745138801241,42.8965524558139,50.796947758738,117.058053451699,44.6877438145613,4.9058994208503,31.6070146299213,34.4320045435198,6.18863424893122,4.19293854900958,45.468779945849,3.47972365513086,37.987127481103,37.63371422508,11.6795126263653,28.5373347787866,79.7608442369235,103.835617168263,27.1402319678078,56.0613463282667,98.3822822914017,16.507338976961,32.1888179272621,62.0898548132228,63.4002738946654,44.2720130412627,99.6250658328,119.234950785331,21.2676213349073,147.754690742618,105.290054302074,15.6751845130187,35.3566278680656,120.673931494848,25.8193309188732,38.3596661064596,75.4731147541801,100.904046855196,4.61093170509723,100.914979623666,73.4748804789162,21.2995070693104,3.00514041162773,128.868130121259,99.2372471445322,1.09051333672072,13.9111438106399,2.37044208441183,115.292488901243,9.073412720523,1.20245528059887,20.153211742718,8.21330240756262,17.4311677177447,4.71755699087782,68.7742122623327,5.47512205317021,11.5463315725585,175.770464041698,0.554790844873912,-0.0824777375497096],"Archive701_field6":[0,-544.444583883456,-545.237451461614,0,3.09373897202798,4.15022532884111,4.35717183356925,3.42290542322931,1.17161166983101,-2.47105058309307,-8.17907363261325,-15.3164582639048,-24.6937775343543,-35.1749454049379,-46.8647031594374,-59.67250667636,-73.2044727443858,-87.4547651314766,-102.240967387524,-117.680104061278,-133.69136280411,-150.379788632985,-167.573480459614,-185.335983476625,-203.714385444507,-222.452324564012,-241.563890111457,-261.130336354385,-281.481738547477,-301.920347760488,-322.699566654381,-343.812227533776,-365.324250614794,-387.052678863003,-408.956427846707,-431.135908515287,-453.49441627093,-476.021398415321,-498.689750122332,-521.500095896782,-544.516308658915,-544.619481199862,-544.936832238449,-522.013020267957,-498.760385414602,-475.758019875082,-453.011345615909,-430.557372474316,-408.306875473891,-386.424467575788,-364.903863730954,-343.79165006067,-323.050663040658,-302.826321342947,-283.066289683591,-263.756876530075,-245.082330051918,-227.153257048547,-209.787877709454,-193.041074761944,-177.022432369556,-161.993233728038,-147.987119070441,-134.989570692142,-123.01905603215,-112.22866137118,-102.494003985619,-93.9858134392492,-86.5360092656947,-80.0435292630065,-74.2572266906831,-69.0990111404601,-64.0205889208084,-59.1490920765579,-53.7945491467661,-47.6170753751704,-40.4844190278272,-31.7299586750115,0,0,0,0,0,0,0,0,0,0,0,-132.585155808239,2.18027900479477,-58.1979936691444,-174.474137335261,-191.859762315565,-99.4030534159001,-84.6776402911831,-154.125033313862,-443.525063055759,-390.098048494995,-385.648512856177,-452.691167212611,-116.020281645516,-72.0693589588355,-207.034657693474,-6.23031306512162,-4.09709070189773,-378.431458773905,-68.4485731499348,-321.19951039994,3.68399495488972,-32.807310978601,-0.638608428517194,-260.564313687407,-101.058352506425,-48.5410042510803,-23.4210554750388,-24.3565433895239,-300.894782488867,-220.606651618868,-143.158132036164,-430.11934476739,3.36979597163708,-183.591455866313,4.65805925032807,-99.0953002321264,-95.7017009608098,-407.857643238645,-242.746823692788,-475.40492084738,-58.9545628348005,-39.8877504661993,-130.932972178822,-166.425577605575,-43.8220099068608,0.862642237108266,-47.2223860235917,-498.409924504685,-58.0269824119727,-63.0501624002048,-277.400594191282,-356.728647023821,-112.015736901194,-14.2805173402946,-146.992112851559,-412.27388637383,-63.9159632120743,-175.314869749616,-284.305707144538,-97.4423164546685,-2.04839015683557,-157.345115271464,-438.927859165285,-116.573315328012,-31.4820611447265,-204.743078555444,-6.52232956853857,-374.557418655859,-68.8335997977039,-321.749062962508,3.44547176211347,2.38924650849614,-259.895533329124,-56.2707899343604,-30.2650845998382,-220.714320783743,-139.35912954466,1.54133743791727,-200.264416268109,-94.0446953862753,-90.2735542120527,-408.263952503599,-241.361256344499,-475.408286612469,-56.8815884871503,-46.4083955230672,-165.877949421628,-218.538111470433,2.00949213577677,-364.186294629964,-331.507568775095,4.13745223086009,-50.9202464889468,-71.0920124294825,-273.962371677595,-360.83249477242,-114.401070679153,-12.6268927102219,-26.4033917331605,-229.330696693146,-144.439630861513,-416.468703964594,4.61774068424533,-70.5823677616333,-286.210506148682,-10.4338803768485,-257.337902654201,-128.532233837528,-16.736920049603,-203.093722423076,-8.31377039437311,-370.978430966262,-70.2404872501184,-34.1665729237735,3.94749437265691,-259.57708070908,-136.553834078911,-45.702978337282,-197.269903000626,-90.6631671692225,-342.846979727457,-55.5377605092313,-53.6610556773301,-124.919600719452,-82.4107286211757,-165.893692674659,-328.209727265853,3.4275566840119,-44.5704012662559,-49.0520302876618,-116.665145028571,-12.9667631310814,-7.01819347743437,-227.791619082247,-142.571398612749,-78.0602956233239,-179.192553548968,-288.498896575175,-95.803583448385,-23.9878810504546,-254.018479930999,-21.590387054029,-126.725284856108,-157.701317088437,-4.17097681509834,-202.191083318551,-12.1632604588398,-72.8428457202152,0.806516636040418,-35.9394297086105,4.49815365890517,-40.6894351494103,-310.388834421858,2.13137312337284,-134.290193835056,4.28308080775153,-45.7655491652357,-187.084283164257,-239.941501475552,-55.8525708547591,-61.1973039209189,-325.359342437027,1.54423759170619,-39.5298644232784,-37.9966536886734,-301.396197360278,-226.982027970683,-425.959456063323,3.800532890495,-181.868645787267,-291.2499010264,-461.559659898552,-22.250667339,-125.768382240239,-158.09865356489,-201.828448538393,-17.2049895653399,-529.15204490247,-86.047606442538,-76.5196684372635,-39.1244023665768,-33.3564463453095,-307.370264706422,3.57457902537723,-86.3539161825051,-82.0559631982543,-239.964420230635,-57.2199995687493,-453.031708958367,-118.816930283335,2.7157122470201,-1.68760097297262,-29.3745871990763,-294.333367227503,-23.2593755641611,-79.1959663910364,-175.324328492623,-86.1011730515995,-240.496305934011,-386.241190061526,-170.17239959803,1.07590913165838,-23.1536317000064,-264.78208748814,-104.201759603751,4.68965114891434,3.90188786465167,-471.025885174502,-498.471568857074,2.05337672598128,-349.41933392523,-110.514422402835,-342.937651146577,-71.938447570715,-11.9687230371079,-19.4096050819809,-104.928030124754,0.170397290437451,-498.321518020925,-65.7915406023269,-352.891825938806,-145.857635190524,-5.50601554057737,-3.24601996869735,-47.6800498090464,-77.3558948022467,-521.375174412624,-155.21652619651,1.55331468152009,-106.747724728316,-31.2452776255739,-0.317145419174311,0.315850056736695,-37.3218020654794,-1.89793195846694,-40.144985241839,-31.747819377411,-15.5097971529893,-29.2114082087279,-138.249216225839,-189.060199635171,-32.456834696023,-113.766940762919,-338.894793981366,-17.8388830729207,-45.6258941117893,-155.0055614705,-54.1097483837419,-48.2648941261552,-306.072217123473,-425.671526177215,-19.7030801732432,-513.708201458709,-215.647495315135,-9.59632444780375,-41.5050189195667,-391.096214742401,-21.3510224786683,-37.0106706082778,-81.1527441873931,-275.228066868182,-6.76700576567667,-123.887697222645,-67.2164983854821,-15.7844596684674,-2.63462191185431,-272.932056767432,-104.132220608105,-0.405388965534276,-8.87472687507918,-0.0571990049438771,-244.45052042515,-2.69073078979825,-1.7813603605422,-23.949355961526,-8.97843762178985,-14.1213181518032,1.24942098170539,-58.3768571757212,-3.12367135650208,-9.58849871670916,-533.477486869681,-9.68032063630011,1.42165517010664],"Archive701_field7":[0,553.327382506517,576.214072029891,0,3.12459831266703,4.1509558715142,4.38817905668526,3.65000123667281,2.61592420966023,4.52887174278307,9.75203188624145,16.3940402409999,25.3389481028293,35.4361729024836,46.9492721093779,59.6781621146056,73.2200812960582,87.5542939447312,102.479983052554,118.102256902136,134.328532641351,151.251254172402,168.72267088005,186.777058351375,205.467908491901,224.5508786556,244.028008307915,263.961406899334,284.7085146261,305.556013790595,326.762444284247,348.311793317392,370.27088952654,392.46415370514,414.842777126298,437.501862130818,460.35146634418,483.375330231295,506.547395680898,529.866739629473,557.740476124787,563.022445021138,569.340623884357,554.379178451226,532.525318315087,510.968801705455,489.728804163479,468.818205792995,448.216837743322,427.990681930765,408.161304488778,388.7614429661,369.746393618614,351.269554116514,333.171643555833,315.590426986431,298.449979485322,281.894645898275,265.880840911846,250.194834693136,235.038960409616,220.324831917962,206.126315687835,192.252594202946,178.823416523976,165.677711963431,152.898373195689,140.558999257665,128.727090495202,117.399118565682,106.552200206426,96.3130760328479,86.4923538653132,77.1347264703656,67.7703266511053,57.9099957360274,47.1266288931906,34.31228804216,0,0,0,0,0,0,0,0,0,0,0,135.636242829952,2.19150271214336,86.6334081484944,206.029808085309,240.257884794841,101.868396545156,86.8232402105635,194.873891488504,460.076407929766,422.332793679794,409.252966055817,481.793573997112,123.028179019723,73.8601845259685,254.222009471179,6.24387481665598,4.53861447702688,392.774436528341,79.4378185890132,334.94923933883,4.45466094109397,33.4652766701023,0.684046005862758,294.057712329042,113.949760211092,71.0540233556948,23.8311323570172,38.9716919565116,308.769197708368,238.631433467458,194.216003633456,460.187168682844,3.47628249053188,198.893698339818,4.6777292750557,141.575001774198,142.579286190337,424.079298255566,286.47444744041,494.314464771471,82.5735047601914,62.5632580029172,182.004900341482,170.570153521087,53.9290074501411,1.23882650431587,67.8657688570224,511.146561283534,88.8142181194773,96.9913654960161,284.307659979121,370.965997748369,148.284001515438,21.1716308687696,150.877825067925,443.430951624796,97.3470178865684,198.568824677409,325.520517813372,104.35537307861,2.09934752381463,207.241856233785,461.827564051228,119.293780951607,36.7244308502295,243.290610736779,9.33644401301454,394.862495330105,86.2900088382563,329.963512941159,3.96475473659065,2.38996647171681,285.069243429472,78.5551745807869,48.3600635190153,231.830035395721,182.734537739358,1.56336218423675,205.166299230813,129.872263469492,132.237237040041,418.706321796263,275.700966935214,501.936102719986,73.9163640866742,71.4192475051987,174.848842381085,224.35585969023,2.85637281161693,398.984144273576,352.34911189437,4.43834937076026,79.3159872912179,107.328443618888,285.863153387963,369.843007956313,158.20181204767,15.5904888977473,28.6145639969324,255.790294588075,153.395176657698,439.845577698118,4.63937463847717,108.027742619365,318.965605279386,11.3903823660375,263.876810810165,135.957811975759,18.101232309224,233.233251660528,14.5485693305303,398.16931902163,94.5202247737347,38.4922269888768,3.94798351611745,277.352543149772,171.788205597604,46.5936092329936,206.8681451086,118.613320881562,378.836139911835,66.3176314871973,80.1508707713451,168.474865258711,117.351248081526,181.253342899247,356.82484835369,3.49572393895811,69.612395005679,62.9761760180017,166.679701983164,13.0728056475883,7.12516612973854,263.22016875534,158.345899712371,118.479259328203,188.580204979162,313.451652034695,116.536958205314,27.9631173759871,265.740847143138,24.7616423507257,140.022503075551,189.867977177743,4.24543012031845,224.45676618567,21.5613237107311,103.489927311207,0.841656654064655,45.6745287102563,4.51435509282422,61.0116046632199,331.510939027576,2.13219240311332,161.73183822104,4.48088863773766,50.4003701724998,226.504176128343,257.839423737736,60.9329082400813,88.4265346670514,362.652602057018,1.80407117750977,60.0556190194123,47.4006136778858,339.834832233615,271.988469080204,436.838663255826,3.86521272546537,186.422504059344,309.271392579349,484.023833984381,29.7892638843867,146.106180022241,181.654206380661,217.124341454553,29.1819796042346,552.144676566465,130.073586403712,112.863040840351,54.8000076413967,51.9949568149548,336.710128679373,3.58252411984297,99.2447851242256,102.794852596765,251.268029106175,58.4293711187571,464.081757899253,146.54549723992,3.99267038309811,1.98837347262234,43.7604810946346,306.43060233479,37.863900847807,119.48712790049,224.593908558449,92.6424421869531,246.589331356351,396.371988562375,210.309358428775,1.97459039020762,28.1668133852818,307.255108094287,132.232866824091,4.71673953644816,3.91965570296418,482.5173653269,524.229839457034,2.25116066253077,377.32012501689,131.059242074911,351.499818161263,78.2343555055288,13.8761151357092,30.3454497900987,153.597569007946,0.202010199253387,517.053438431111,97.8759869147908,373.452371796007,175.622604194065,12.3891847658233,8.72383886935138,64.1365836507335,92.5433107375147,534.354433285338,161.521405552787,5.14593389263068,111.328702985746,46.4954869937304,6.19675520606936,4.20481806195121,58.8245430001701,3.96366275495878,55.2688130353189,49.236373562598,19.415581961824,40.8373094830387,159.607763158455,215.697924141158,42.3088443443139,126.829773171332,352.88632001898,24.3046906869771,55.8376415427321,166.978663779275,83.3514223038243,65.4943596329845,321.87785856916,442.055677134476,28.9917761711533,534.534905204879,239.978827754918,18.379359412795,54.5230018406402,409.290174482918,33.503790979274,53.3034119233797,110.823999836868,293.141800949219,8.18859317720524,159.787341912852,99.5822058231115,26.510717991429,3.9965111675086,301.825947480084,143.84557897134,1.1634257823096,16.5009302533996,2.37113209284453,270.274702725153,9.46397646764386,2.14921926195331,31.3005366490529,12.1684295850551,22.4333955153604,4.88020458092751,90.2094769191073,6.30351364244913,15.0085669010667,561.688067370338,9.69620546931291,1.42404564529452],"Archive701_field8":[8682950.6381603,2722350.51585094,-85522.614175833,-1159294.4908245,8773491.97969181,8712531.74227312,8685941.70695602,8522628.22551805,8353665.74901808,8191655.60474768,8083327.69688965,7905653.14063909,7834534.75761865,7544825.56205423,7436983.34695973,7178696.47323756,6965674.72480008,6781897.55805073,6585225.02538212,6526110.50753612,6317164.47967097,6105077.8440408,5968783.55398411,5769514.4941707,5614229.16457153,5391904.27888061,5233033.56400749,4978390.58668416,4923743.64920201,4614748.63299401,4506197.44786216,4315732.92345911,4152997.75934895,3975475.70414808,3750901.35315959,3627001.56740216,3436821.21773633,3234999.72693038,3071364.53773002,2854322.38521489,2005721.14569531,1259489.57951664,528478.448682783,-108645.654526481,-135642.533915717,-136746.574027846,-140024.721948601,-149763.462745793,-141626.360984836,-165412.394449435,-159739.710980209,-173194.206090153,-171476.783395116,-188258.858510134,-197772.148166555,-198090.218420046,-206716.603892495,-212891.423920444,-218696.36621375,-227276.962389574,-230152.591791599,-244255.792654535,-255852.640660524,-264342.391231199,-269863.050074445,-282551.784260514,-286801.428717263,-291950.206920883,-289887.003374814,-291138.105577648,-285819.279726207,-283304.782989182,-272126.094484917,-269851.279022893,-276898.584557867,-220752.308524607,-298643.326018646,-95384.405025162,198922.965973503,816360.211361287,1658788.6180635,2367991.69264998,3250034.56589913,3980731.17933143,4758526.03933363,5576667.01060394,6454808.27237111,7339041.98810993,8196338.95518915,5321072.32236771,6135959.73166717,2627561.5628323,1919182.79321391,469686.455391711,5600932.12796,5777273.32351129,1272260.76587196,1953318.55078992,606347.247085925,1438058.19973266,557063.972681861,4757151.19043841,5945790.49385818,469015.979886069,7080485.81753622,2403632.02176469,2502637.08242106,4596338.46817276,2845466.19519507,5919345.1382293,6424550.64842207,2713934.97844649,1226168.38463023,4155655.41931154,3352590.74678942,6652252.67431487,3917187.83151396,3714773.10633121,2841840.10006962,444344.016518074,596145.885952541,5941270.74683528,3330345.00424473,7830023.72869898,1222820.19010739,477239.433517919,2156951.99971681,538489.65838634,1509899.14501395,3280577.64529589,2453957.90403966,441860.433545629,4922092.13871895,212296.2562168,4236709.41388021,1148109.07837389,2208939.31767642,1192479.13992016,1193699.37789998,3978606.43595663,2618388.89102058,1863416.79702668,5290590.63490144,5043437.75983198,574434.137665399,1906052.85577757,2628094.73831812,485384.474165094,4849471.63900951,1977199.27629661,515577.291246799,1239064.98511075,5430040.94774984,569791.848191695,1171039.94056331,6366792.2433439,1836586.68191738,3915104.78028375,3544873.97655767,5459459.90632996,7033515.34574168,1961787.87576336,415367.074885074,3215322.08295408,3639065.22008608,1125092.41471895,5354003.15180913,4641976.01456793,1978836.54448701,1223910.26003011,2878084.03851744,1291649.33831057,709837.603550744,3964057.19626392,1773430.52769244,4236854.63975975,4353162.17090058,4749829.19567188,532405.885555172,1983252.22413838,6435828.80908724,1941075.40451135,461944.663867327,3278509.36442639,3268464.17434921,1159188.87064528,5988912.21737047,159363.754998853,2021620.74580907,4288572.50142701,1300711.50775338,6955285.50713378,1158726.4790548,1151500.09410802,1542732.6489736,4107155.63048382,4675238.32667101,1017794.02702991,1842148.88479122,5498269.24690718,1153203.01262969,3198498.57942737,5654352.4017644,7496539.53955305,2665225.76107474,1824050.54583885,6329130.02098173,3984566.66145065,2753739.36320656,545977.554656633,4713283.15101024,1085966.39511275,1167169.24596895,2043100.1159884,3457098.86330516,1273142.38873517,7003654.90366063,2685452.33462742,265936.814112135,465181.336986312,6830421.62601574,423168.392789868,1267166.63710493,3550717.54034437,448272.383425128,4039650.29224703,1817808.27682567,3402432.65972462,1126025.270851,3384110.946846,6040971.14093159,3930073.4483243,1964794.73894045,1261802.54093589,2562547.42426695,4718821.54837611,2506182.93483928,4562576.73669898,4942757.82364153,8018605.85072237,1810294.59215672,2047760.15180738,7766402.82690721,2519267.72449721,6210989.90779867,5573554.95430401,1205014.32771553,2756767.85876601,5448870.4458965,404137.367667965,543888.05616077,7639902.95147096,3441550.23718872,787162.343950244,588265.211375775,529860.821914705,2721350.55557679,7889814.28969357,4749025.91176549,2475446.38835823,1157936.68887667,5278506.49598441,3219993.28578342,2690101.42656343,3235293.48908028,4012388.10751209,814860.930346948,437199.826379962,1795274.12000963,4164021.14925284,2519865.92396329,1310460.6399283,8236849.20788237,4242319.15818672,3495689.39934539,3512292.01284626,6165211.39422948,2639054.14968127,2610546.18044549,6195708.08899652,7467600.84871038,4264967.4863013,3156852.79104099,3270112.26313174,1132654.29509715,474347.463223197,5075589.75980179,4283782.98313527,3016030.15872672,1228298.04660382,6892299.78553835,1546861.692224,494373.960128564,2660034.45947639,7055573.51722836,6727356.8399735,2481636.10150018,663943.554013255,5031232.28207671,1214007.56051674,3302701.78673055,3434806.41272124,5135328.15216427,1955942.45238367,4617036.52679203,488420.219671697,3764231.16731759,1419629.14510768,459257.849312496,1897655.1393305,2263029.85716855,5220136.78985879,4141971.10439307,4091026.94129848,4082202.31984811,2102522.61833155,4671510.85732547,5397859.99152266,5206752.20138642,2266586.01194711,5646423.53472677,4422326.83129994,2930940.90539064,6412701.7028441,1285413.22242596,3685250.90900716,2213588.34950595,2034550.5650275,3021101.94803682,2230928.04437357,1419863.77418427,3995677.61046256,2704606.4961275,2475289.17849306,4826024.68660827,3845054.65897948,2271047.15752322,698803.83871405,2680984.8989,2011053.29462816,2746396.20106964,1108187.15410401,2274292.98876976,4150160.30233895,887990.5401976,1955645.33729372,3000195.54464469,1740583.88570973,2593472.21814402,2578628.27591542,2600851.13773314,1852139.96974188,2200182.44115327,3573333.57915464,3303504.62677314,1522397.82534856,1599056.71160168,3614895.76941583,3818287.76900118,4025342.90645455,1970586.70771268,4941831.38174343,2940172.79952723,1952511.45308834,2903834.49778763,3314820.0687578,4892237.19470036,1748596.43552112,3717123.31311722,3305639.05489544,221305.277383799,-241149.223724981,8417345.59687304],"Archive701_field9":[0,101.77793780038,193.708255599927,0,0.548731532598466,0.109645290155831,-0.603289670778847,-1.53214520148859,-2.65117762379359,-4.02660774228931,-5.32602501605659,-6.11905061825282,-6.01613730893825,-4.9996186522602,-3.32841978644633,-1.18125553073077,1.28639156736883,3.99896958368273,6.87860963142728,9.91058700938436,13.0827436001947,16.3900498006957,19.8517043206195,23.4560292372434,27.2051412764305,31.1025702823581,35.1409503944592,39.3139345844435,43.6196164525966,48.021472186012,52.5296017547534,57.1308786055384,61.8251934245864,66.5954525049755,71.4396792174512,76.3558334902673,81.3312084618811,86.364728663378,91.4466659305637,96.5817483912548,124.856176225252,148.049738222921,171.305993169842,194.14097454035,194.015130160495,193.76088747175,193.355061029988,192.786113789259,192.026290424443,191.055653303213,189.855470251151,188.405944652733,186.686921223255,184.677365716458,182.358204776798,179.70791617041,176.703738433221,173.316224920788,169.508730592942,165.234095864132,160.435085932637,155.048271320832,149.016825074953,142.297967429821,134.876822451882,126.776492230795,118.064268186738,108.848986586468,99.2790565663575,89.5289541248687,79.7883118212012,70.2344918260468,61.0405697796118,52.2064130680529,43.7368942951681,35.4038250770156,27.2066899293051,17.2800168912715,0,0,0,0,0,0,0,0,0,0,0,29.3264877472256,0.320155979403873,66.9372396517558,113.503450643877,150.046803410612,22.7877269817525,19.6490281689634,123.785562676532,126.530711254741,167.854987166883,141.907989220148,171.215358236242,42.1462318357253,16.5987770830809,153.093734381791,0.476315451062047,2.47950574921213,108.609994154403,41.8097647045629,98.0540636606368,2.67905797084566,6.88980123055957,0.297983237142183,141.152958642229,54.4311864503695,54.0825860024401,4.57296524682425,32.2079483379455,71.2916423336709,94.0180370031291,136.170166978177,169.828039759231,0.962404310267604,78.9519334180823,-0.450241346748927,105.197253903505,109.944977216937,120.117356456613,157.648707614277,140.322590680052,60.2275300295365,50.6504413807818,131.200659189427,38.3487793810081,34.111322127505,0.968116742898537,51.4379066098169,117.211365608865,70.2569573719967,76.89039413046,63.9765312144277,105.104292794901,100.830819077614,16.3717201061249,34.8384691669108,169.497422247985,76.5228377215133,96.3314785098081,164.382847940643,38.5855852555038,0.837599930000075,139.84431071343,148.89301397913,25.9952427655315,21.4161636662152,136.110539708493,6.77450509788149,129.373684333594,54.2379211931838,75.3095093865332,2.24323197027092,0.0647045147770965,121.235020176875,57.7151306802167,39.7569294779322,73.1674306495831,122.545957407389,0.409973625166163,45.7363737032561,92.8488944452488,100.388488123323,95.7935440015518,138.038696999126,167.140261050739,49.3852113403357,56.9310887911685,56.8845579428612,52.1790739680166,2.1917870567433,169.034529190387,123.479027451217,1.71021040754032,63.572254264569,83.8470544788074,84.2000330473879,83.5276228484111,113.316829745534,9.51229769911229,14.6046476266474,117.185666616312,53.1625866086901,146.583846523545,0.514925053558276,85.2016618096297,145.871744274616,5.80280442620603,59.978228866784,45.5585392206213,8.95443883806039,118.643994758302,12.7162675396455,149.881481543212,65.8484374285014,18.5368312553822,-0.107143429045311,101.002208673696,108.211704253903,9.4368780278728,64.1557127891099,79.5727834633435,167.144119872311,37.7217945428069,62.4106546105257,117.244404056031,86.8694999564878,75.271313374658,145.022498422047,0.767839346568676,55.874106451145,42.2120389434322,123.671300699027,1.78380751861169,2.38607724760079,136.608224519412,71.1295318321008,92.8374367213751,60.4534220453521,126.903265315616,68.7129222692824,16.6318643801529,80.4944372422271,12.8728894351511,61.4871644240596,109.455603920411,1.44247341570457,100.780785530277,18.7441901967499,76.5573012540431,0.350519729412524,29.5365406807433,-0.375353830159947,48.0142850320279,120.417028883781,-0.11092580619184,93.2451406231492,1.43964724284425,22.0428938976891,132.293834071272,97.5430680690622,25.2844107082918,66.8985173584651,166.121641876231,-1.0139956686568,47.3837345229346,31.120144779965,162.754681277401,155.358493202415,99.9209673822284,-0.806916226788568,42.0146202512211,107.550891020344,151.12784139668,21.1763104794049,76.9556245276832,92.4890572454805,82.6081229176758,25.065119221183,163.721955081765,101.536160234275,86.3017064471284,40.0880826167874,42.092156764802,142.385581488181,-0.210674853211207,50.6351143576032,64.272804827061,76.8520129191311,12.1896808776413,103.888826060089,88.9541294048894,3.14188973747951,-1.17313177963462,34.0710038559289,87.8967969263188,31.705446714824,93.1207384878046,145.674384172991,35.2784526827501,56.0090026549107,91.7776444573554,128.19353520576,1.82574761873878,18.1121708462523,161.652330555893,84.4182214773449,0.454035131057506,0.428218120470154,108.065410938794,168.539651603202,1.04460447856102,147.517060751637,72.9151999675897,79.3658757203041,31.8435252558991,8.32691792089592,24.7220525514409,116.541445637467,0.126032661732616,142.92993718443,75.7224035616693,126.461435603252,101.255123832599,11.7396420821987,8.69612351725429,44.8688202726533,52.7614257464333,121.036959716246,45.953644942766,5.24431240013681,32.4985983197557,36.7249848563065,6.54842613462661,4.51802080143203,47.7721352901471,3.86751761496039,40.5531482862208,39.7104381016135,13.1841105578844,30.8118417339443,82.4868102808608,107.353586203135,29.4129427580015,57.9546654921104,101.577665124382,18.1922106279971,33.7230887215698,64.054323010719,66.1426547004854,46.9146454026326,102.915263296765,123.325757765811,23.1392091214239,153.258912455299,108.909381355832,16.8399429271978,37.9717285146027,124.831341147171,27.7122419808347,40.8315048042744,78.429033547552,104.284912626082,5.28079509500503,104.66485549196,76.5270147202113,22.7499304328973,3.40942041735279,133.473188558504,102.951004662189,0.990820843106597,14.8876305502778,2.52689522866614,119.264628832284,9.73453386571049,1.47785353271574,22.1817686535164,9.15342902804679,18.7212972753989,5.1707019021689,71.838190204613,6.06268642008737,12.6540949583719,182.758794356904,4.36672375304867,-0.0478459393781864],"Archive701_field10":[0,-569.03049364088,-569.677557821881,0,3.0462138197604,4.20101932888945,4.21647282033376,3.09421096114823,0.691332544182492,-3.24229575026533,-8.99550735483113,-16.817701165718,-26.4625390218908,-37.6031737627761,-49.9354400361703,-63.2032855316837,-77.2450507410081,-92.0019951516177,-107.406740069133,-123.438126870314,-140.092545836572,-157.36391128448,-175.237944693015,-193.696663479117,-212.714887029944,-232.260983200248,-252.310019162015,-272.828071149324,-293.772022341261,-315.127048388771,-336.845343834922,-358.91014862716,-381.292940616068,-403.972069489454,-426.919201266812,-450.111262285915,-473.532286503458,-497.157945102268,-520.976617350095,-544.957547023178,-569.073563597937,-569.25226581442,-569.545095602549,-545.486656843497,-521.075049860765,-496.934922264143,-473.079530796599,-449.516630388611,-426.269476968116,-403.372083613659,-380.857938139805,-358.76120300011,-337.117562725946,-315.961919618178,-295.331239413879,-275.260879462902,-255.78752786373,-236.953458492442,-218.804312500231,-201.397894521367,-184.804005123162,-169.1025069903,-154.382789525835,-140.729436185005,-128.214685482567,-116.88677734322,-106.759444131184,-97.8108536862174,-89.9700108808293,-83.1210311977383,-77.0914818036711,-71.6526794111354,-66.5296219688811,-61.4083811185173,-55.9758961795028,-49.8785901248408,-42.7146623837366,-31.0521971659945,0,0,0,0,0,0,0,0,0,0,0,-138.957658075998,2.3063310679718,-60.893931169756,-182.269314540631,-200.268289077379,-104.470431748246,-89.1370167356572,-160.824070179364,-463.102496092033,-407.218212713292,-402.443563578922,-472.721719632087,-121.717659271287,-76.0893736024088,-215.935660187529,-7.25915802709013,-4.82370266589935,-394.97104599011,-72.0085730329634,-335.216052841457,3.5269092512935,-35.1375670478581,-0.716440777366805,-271.998653784252,-105.972745424247,-51.0965624366615,-25.0307752702695,-26.0467858955446,-314.030883723852,-230.387757505898,-149.46357760505,-449.085247377576,3.41576458465523,-191.828714833517,4.52129073278412,-103.382071848154,-99.853367771371,-425.71091029744,-253.49370893176,-496.507495946343,-61.772094486747,-41.8780125584373,-136.684727229759,-174.031936089908,-45.9831569687086,0.88187499106519,-49.3201686105401,-520.663026835959,-60.5127577848061,-65.7047799861845,-289.659756382762,-372.25439955682,-117.108210164421,-15.3045884051989,-153.895126212024,-430.318125300775,-66.7395644407435,-183.17378712357,-296.701774563107,-102.239088850699,-2.6754501384805,-164.425875400822,-458.262888319166,-122.290527547658,-33.8150335406479,-213.739962588703,-7.37480932351086,-390.905694692549,-72.2337112455378,-335.832148331611,3.23824013270159,2.58472433138877,-271.191136014735,-58.553693528443,-32.1055186636814,-230.421851680487,-145.526137113753,1.60717654402317,-209.115006933085,-98.5004034282062,-94.3516595192649,-426.163752468707,-251.855658699187,-496.565697802379,-59.5582623797057,-48.6400437648998,-173.413942831749,-228.162902472682,1.92009292782488,-380.09959439216,-345.934069405565,3.94187259406216,-53.2799346256184,-74.0095590838049,-285.968156599119,-376.607109041667,-119.545697596782,-13.7894759075713,-28.7624432484924,-239.408444075479,-151.126646366821,-434.768446345073,4.62148973497847,-73.5401191929965,-298.619444603128,-11.9768006751401,-268.700384696107,-134.550709563131,-18.8240081696351,-212.176574255977,-9.66277880393198,-387.17809197485,-73.6337128591468,-36.3811810626015,3.93822860716945,-270.895123761485,-142.514269209954,-48.7858683953203,-206.049841037991,-94.8162271050001,-357.805185779711,-58.6607615547625,-55.9583141318595,-130.427684997944,-85.9810430362959,-173.437705171396,-342.474261664414,3.06822063601309,-46.9197043662873,-51.116986268471,-121.674268059687,-14.4150482999321,-9.64811331239413,-237.815740207185,-149.134697592249,-81.2800459252235,-187.152517310612,-301.044394729522,-100.447340400663,-26.2172179905885,-265.079019282557,-23.1769419646729,-132.745075661216,-164.69719920213,-5.38144190692596,-211.206816764397,-13.450884347988,-76.2077786633694,0.796837120312556,-38.1268756972249,4.48586840729494,-42.7550746344338,-323.986192594407,2.3635775006445,-140.363007571399,4.18445349624153,-48.61503871549,-195.416146703883,-250.395777089979,-59.0702262054028,-63.6759281799359,-339.519065333614,1.01672480312026,-41.5994315119289,-40.1911588770292,-314.486248561317,-236.975560767207,-444.696351299028,3.50967467940768,-190.129293800144,-303.941647496259,-482.009894040944,-24.2446765976378,-131.667422875473,-165.259527235163,-210.801801085364,-18.6957000763496,-552.914928970929,-89.6830606402253,-79.9373316542671,-41.3624423315756,-35.3603657966974,-320.708210809044,3.61530544812093,-90.8500309071068,-86.0968855133671,-250.513320462199,-60.7039190506136,-473.018495854785,-124.31144592588,2.16242023839478,-2.60665597025052,-31.5676270494851,-307.279780064051,-25.1857946381948,-82.5869327312486,-182.993572608981,-90.4053246794908,-251.160388449934,-403.101548326012,-177.759514070697,0.449697683742686,-25.3237319287961,-276.235786393826,-109.096839739849,4.52659953843954,3.91801036054249,-491.901418521505,-520.701248890787,2.06596750701291,-364.641110531163,-115.665525595907,-357.983658128821,-75.7635266088968,-13.6378765124588,-21.0845580326636,-109.494088928021,0.10665007693039,-520.567059171552,-68.4902505037372,-368.249958194033,-152.380378904497,-6.47159777807605,-4.14013406877667,-50.1133038542993,-81.1585483453059,-544.805642256362,-162.345708700665,1.1003041017419,-112.020802520721,-33.1259724451541,-1.19641125652848,-0.041342716089264,-39.3857676859941,-2.78648608939644,-42.2504188018714,-33.6217442408461,-17.1640561478437,-31.1209480511453,-144.450831360398,-197.511229533805,-34.5278220542261,-119.126192829751,-353.620790561397,-19.606150207154,-48.0289473819074,-162.116464394941,-56.5939365052861,-50.4002746613384,-319.430737091228,-444.331069740368,-21.4354925390143,-536.695577839132,-225.185223636913,-10.8971098050302,-43.6898592728909,-408.191568603707,-23.1480614531704,-38.9874830854747,-84.9938264948503,-287.286780465382,-7.63827063623896,-129.482194246355,-70.2281330852958,-17.2928481731294,-3.31540353224511,-284.808334368872,-108.84648622657,-0.460321267486153,-10.0827241650702,-0.209113957100399,-255.137349863565,-3.54176809944937,-2.20456719204731,-25.8306762945425,-10.167966579997,-15.3479073827247,0.729709808524928,-60.8709548301284,-3.77896884806132,-10.8214791489469,-557.516805109293,-15.1883075643002,1.74576049991914],"Archive701_field11":[0,578.060940832437,601.710402248016,0,3.09524230563087,4.20244993918502,4.25941327784494,3.45276851099727,2.73983274663795,5.16972452287865,10.4539798661793,17.8963083614508,27.1377943025054,37.9340857765356,50.0462441136272,63.2143232711418,77.2557613854496,92.0888639826201,107.626776792487,123.835337848784,140.702095148155,158.215151952078,176.358803082424,195.111718639657,214.447529423942,234.334236071717,254.745426188896,275.646044520089,296.992713799423,318.764989321491,340.91662429952,363.428716638918,386.272780694726,409.424458504783,432.855209252453,456.541741513975,480.466015271697,504.60369473024,528.941517122038,553.44987323138,582.60946227095,588.189482329229,594.749829105333,579.004672511174,556.022551987411,533.37378870686,511.067923161531,489.113163455959,467.525147140604,446.330931594419,425.555952406248,405.223889669124,385.35731166555,365.974950039992,347.095168250949,328.730112549796,310.888196281098,293.573594371706,276.782472197806,260.506081222065,244.7282924138,229.424550364565,214.569475595196,200.133669690054,186.09342494594,172.437808209303,159.175218968498,146.33887036508,133.981095422461,122.166032325144,110.947155303608,100.334392452728,90.2892117494769,80.6008612672919,71.0367290609948,61.1662045816624,50.6433249250674,35.5364310616362,0,0,0,0,0,0,0,0,0,0,0,142.018567876015,2.32844644478673,90.4912421480862,214.72106634231,250.242743798344,106.926851682165,91.2770072938281,202.946414297476,480.0770175475,440.456546644731,426.730241804595,502.772834496736,128.80797116806,77.8788300879048,264.699642703927,7.27476815240097,5.42365708442012,409.631856672234,83.2663858642521,349.262654005508,4.4290450977622,35.8066750626101,0.775939042123597,306.44318460997,119.134280671632,74.4028547943893,25.4450726424468,41.4220592393487,322.021574120454,248.833096855138,202.192174441459,480.124069903438,3.54875608547651,207.440747263242,4.54365350358958,147.493440560777,148.521355604228,442.332407210234,298.51662513239,515.955543614049,86.2736751897027,65.7208882160965,189.463261952321,178.207024719047,57.2541092158048,1.30956234206192,71.2624534251547,533.693256226718,92.7245054658863,101.13975886154,296.640811443658,386.807769251504,154.535390651387,22.4112392670696,157.789191029388,462.496556864032,101.537747437557,206.95987543743,339.195612775244,109.277988078711,2.80349907904951,215.852495330124,481.844377805131,125.022900999471,40.0263483162436,253.3986002865,10.0140766863134,411.758196446789,90.3297356116011,344.172564358441,3.93932593592924,2.585534092505,297.056496933243,82.2166122827821,51.1016415604946,241.759596789302,190.250803572927,1.65864246207257,214.058174345546,135.363387499073,137.76822638666,436.797375210276,287.203681536324,523.940224737586,77.3697984798946,74.8799220645914,182.505475262546,234.053339700416,2.91387840405028,415.990833691922,367.311108729089,4.29688016889901,82.9468682108564,111.838022964246,298.106410789636,385.758704839474,164.717569547027,16.7521178757203,32.2579273035525,266.549964462484,160.204631197131,458.814151916598,4.65008765307638,112.54986586417,332.343404437036,13.3085045598982,275.313066660179,142.054475254597,20.8452694507664,243.095240914359,15.9709972873818,415.176267884948,98.7822877908714,40.8314149705874,3.93968580939082,289.11176772092,178.941582271929,49.6901964375113,215.8066089703,123.781843541495,394.919875137658,69.742517374371,83.8237599335308,175.378537159986,122.225405641788,189.067205491238,371.914163418333,3.16283972616312,72.9614585211513,66.2933067280016,173.491262386466,14.5249986834021,9.93878539462016,274.259244687644,165.228836238066,123.390581174585,196.674047532185,326.698892477201,121.70100196938,31.0477282892941,277.031118993417,26.5119203612911,146.29397288068,197.751603418551,5.57141333528875,234.019414108849,23.0709981551489,108.021506673937,0.87052482848879,48.2293052595291,4.50154483098665,64.2912744789899,345.640440106504,2.36617901605779,168.512403532557,4.42518194496419,53.378939299066,235.985442190553,268.724199343528,64.2541286519632,92.3581910516723,377.980946113247,1.43593751303275,63.0533980008659,50.8310206763998,354.105474134301,283.361390826374,455.783988947911,3.60124008534978,194.716143849953,322.409241868173,505.14667414384,32.1906891638592,152.507306031923,189.380403030903,226.410029178955,31.2696242848701,576.645295874962,135.471927722752,117.634865272548,57.6012673777521,54.9736767043001,350.895155703332,3.62143857838131,104.00789836272,107.441459108853,262.036553974286,61.9157016273108,484.292665235461,152.859977516565,3.81412275758114,2.85847748279244,46.4472645188724,319.603989565396,40.4914756824676,124.467157895044,233.89671613851,97.0447935444926,257.329650652076,413.41745764417,219.162102817072,1.88031443490015,31.1342597722406,320.058878425154,137.944034153784,4.54931327582917,3.94134189636186,503.631947541892,547.298277686815,2.31504217168131,393.350254483459,136.730172960071,366.675935556375,82.1834658854206,15.9790249336564,32.4921293514131,159.908924270811,0.165101395308053,539.832409214251,102.101894278319,389.359122667933,182.954584466838,13.4052517327848,9.63136928659619,67.2648069636195,96.8012294153011,558.088822188475,168.724232453572,5.35849621316828,116.639697745386,49.4576036938008,6.65682242030001,4.51820995332733,61.9145831480373,4.76678059369516,58.5632625872035,52.0321110471115,21.6431419772835,43.7936410753858,166.343369423073,224.800974781315,45.3573775420688,132.47563198722,367.92075990543,26.7461708189957,58.6858287795009,174.31208886442,87.0501259045155,68.856166312053,335.600278930289,461.128335786395,31.5420883765664,558.149117637089,250.139237809098,20.0581823676564,57.884850951451,426.852691700259,36.1081861167809,56.4556075330136,115.650611089781,305.628920803634,9.28600964612139,166.494356066516,103.867100944589,28.5762477005042,4.75563330839179,314.532795412411,149.821450149253,1.09252991374814,17.9806248498336,2.53553310838369,281.636501515527,10.3588257468181,2.65408507181133,34.0478295700557,13.68111133437,24.2083711286521,5.22193781710875,94.1594324207919,7.14400253239945,16.650241144998,586.707563351677,15.8035743742742,1.74641603204761],"Archive701_field12":[8676624.17101987,2707175.1534493,-75905.1640674763,-759034.499417522,8826848.19995501,8767076.25686587,8642923.51603447,8466528.67001555,8301201.98880268,8146331.25174997,7992981.4224336,7838536.42210573,7661863.36207196,7472941.91477806,7295006.17456703,7108294.08551643,6929839.77646015,6751804.67829109,6581029.87240282,6411387.3563866,6241895.44969358,6068464.66754816,5896227.13582107,5722743.57662892,5550130.17676046,5372083.01633793,5195858.47995234,5020661.97982954,4842429.86656549,4669393.92232036,4488982.23298326,4315230.68054772,4142277.69729857,3962149.27032293,3784262.48885974,3609576.7071404,3435677.10115148,3266467.38869052,3085039.75177973,2904451.236039,2018959.53329449,1275806.38100841,506192.345290185,-102713.266774736,-126731.457342297,-129002.663450738,-136029.288216404,-143028.663074248,-149978.647095725,-157026.406210818,-163986.90383742,-170932.402530214,-177875.584656755,-184721.141869914,-191499.938071064,-198253.801259207,-205035.134333827,-211949.075865262,-219108.787598332,-226629.072428116,-234566.700844678,-242827.212951386,-251165.980353969,-259382.411324326,-267065.755944919,-273828.505013581,-279392.386677704,-283397.18679214,-285803.011343618,-286363.086797215,-285290.391683343,-282021.495371733,-278526.452091333,-274612.588085541,-271483.081061112,-266745.870792188,-280062.765944069,-171594.621436081,6332.22187597441,851633.965041533,1629765.18989181,2410300.75090851,3231724.67842087,4027911.81146794,4813457.37896322,5636400.85063929,6486777.46312913,7348541.48171173,8175003.0372128,5348386.71991758,6110593.55755193,2625117.17656292,1905169.55909747,464070.29510157,5641850.22194576,5792186.36547731,1269225.16677057,1934031.47361677,601611.923164484,1429321.50197911,551511.493910143,4748579.02995301,5945849.45700801,470371.984548022,7162926.77580213,2356945.43266378,2494938.70206739,4599366.29021787,2822551.51485137,5884322.00895962,6513930.55181917,2713026.87559112,1230492.72307605,4139286.57455084,3352136.80572086,6699798.82770641,3924205.90315635,3718746.11032127,2850460.26354092,440236.868809901,579672.755196641,5966978.99954657,3342595.29820735,7901209.8649974,1227599.05389323,469986.766000382,2130744.57894567,533376.111186325,1509377.34924348,3275580.48891306,2460519.13219729,433187.051994276,4960088.36205296,220461.786074534,4249759.8137022,1142878.49956713,2199313.25474634,1192113.72212238,1195237.30836046,3980174.12181442,2601611.8186586,1873440.73951748,5344793.98561714,5099943.43863372,573923.81198869,1894067.13325932,2620671.96690144,473847.897928207,4880887.94843091,1998707.4768587,512931.296457824,1236961.45191174,5498314.05525449,601395.422684697,1160380.93130648,6185600.83580887,1823179.79303698,3896782.95792796,3584177.25258064,5437405.1489512,7017672.95672282,1947247.56201154,415842.971568609,3219550.30855646,3625828.89224822,1132493.76262077,5323740.82819955,4664159.62616136,1981885.32691896,1222530.83461265,2895406.63201746,1272954.78970977,688499.861610872,3994164.24429474,1772617.76568461,4190451.18448186,4409243.32869685,4743284.42133788,524771.58095997,1983359.87165286,6466118.07866594,1934845.21796207,452726.130374931,3271434.06976016,3303148.96591016,1158488.20386267,6083897.28060105,164362.615220803,2009862.86484408,4313866.61354284,1299640.08561892,6919924.08882787,1164619.33036023,1140393.34124888,1575400.41967936,4125147.09385629,4615855.11312539,967358.61392292,1851591.56084784,5457760.1072842,1159327.64541163,3195781.76998997,5702707.93366267,7521801.21003936,2666608.90501985,1825543.89145339,6348897.05782999,3941710.67070832,2737826.52149408,546668.985850709,4715396.07784943,1085605.52259224,1163965.99436068,2034036.21399301,3444857.36102306,1261089.78749371,7008661.14202354,2678879.42313679,258668.136021855,463287.301176822,6948175.47491533,501900.27876367,1267747.294161,3544952.77264285,437756.664757614,4065447.54682559,1808529.45394219,3399502.7066799,1162696.15300436,3388621.82365009,5950681.43667426,3912102.12703308,1963556.9980891,1295217.75233445,2544885.51362871,4716235.49766856,2495596.84575157,4535623.52321256,4938104.68089935,8024700.05063408,1810506.29671368,2063407.80609478,7784807.49177146,2519558.62567618,6193450.70582873,5572162.95746925,1196525.6060308,2758537.10182417,5438234.1506398,400326.247061563,540865.943131212,7690038.32867456,3425634.18630357,782411.097939782,590586.633226108,527427.417237615,2761599.17573507,7921992.32272426,4807686.21954968,2478849.26313989,1174270.1632036,5247187.10384654,3212789.46180921,2701058.50303475,3241619.12260866,3993151.14711281,796156.228134226,424087.28590663,1797291.4740098,4183288.66785077,2509239.15370845,1311921.01919563,8207406.81987117,4253281.30247937,3493012.6382942,3508467.97138505,6188924.5870073,2628345.5068398,2591964.18525194,6216133.26132132,7536545.71802223,4268058.08896734,3155857.20741978,3277037.08306984,1134685.10700058,478232.926516145,5013921.8578462,4269583.09434296,3023451.97878056,1232944.16680743,6752813.89771081,1540199.12150832,491735.587438679,2664952.06775289,7051242.74795873,6753026.60283198,2496103.0340369,657229.532998801,5038564.12390899,1210205.5227091,3305825.60378984,3445259.2079251,5147382.24605614,1948398.78852796,4633865.08727638,475552.763104268,3748097.66809975,1429284.15762882,451610.527797911,1903621.72900082,2241162.72643745,5206126.17580966,4138884.21627763,4090198.7105209,4075745.61515441,2082218.82548649,4630852.079903,5385135.76750831,5181002.50161488,2268441.53136707,5703869.59816585,4430917.02247106,2951376.38660017,6461565.36954272,1286653.45025974,3676842.08210356,2221922.53704386,2026952.6950449,3031460.51111645,2235556.96363277,1421628.61888848,4025095.57623044,2711603.34084642,2489471.36597102,4828698.53815267,3878826.17917254,2287940.88753492,697589.064953999,2650414.22245039,2030576.55735109,2753997.42879971,1108362.61554867,2277266.43274176,4175541.42029288,901713.557409938,1976073.94384887,3016565.19504408,1748146.83345114,2616987.2615243,2572583.0180607,2618623.94841268,1849499.4000268,2211452.76477047,3567221.37449478,3304247.54893237,1543447.37643936,1569761.21165752,3596939.30696041,3852639.74499035,4011447.39411678,1978535.44800759,4911855.1890833,2967697.75053098,1969456.14638889,2894805.85694558,3300926.91791157,4903548.14053592,1741046.52890797,3723007.60225937,3305403.42371562,227573.349334822,-59758.3032173346,8460675.8345091],"Archive701_field13":[0,110.344298600181,239.141060925968,0,-0.770233337295359,-3.01098479977064,-5.59495474627407,-8.40730698344247,-11.3282961751297,-14.0827595194,-16.3907512323815,-18.0166143185912,-18.863506983546,-18.9254244838672,-18.2793383396148,-17.0206510625976,-15.2533919715719,-13.0541610738537,-10.4797298302646,-7.56288658469927,-4.32388893600424,-0.773994581149669,3.07860334936408,7.22664532286442,11.66004300768,16.3680959954962,21.3366725155072,26.5487334536686,31.9979525501459,37.6571165762348,43.5186164215445,49.5654766423158,55.7838469873226,62.1600035077475,68.6812943808889,75.3369263857174,82.113974475136,89.0041091170151,95.9976970715014,103.097962326747,142.601340691769,175.010724257378,207.562756756684,239.859556310638,239.925215957031,239.770448594276,239.401885430918,238.834749468607,238.045629490888,237.008461245884,235.696377140347,234.082619684194,232.143444057781,229.847996046694,227.169571619785,224.077933497012,220.543166807933,216.529091013343,212.003760312612,206.925463313764,201.256060223609,194.946759511703,187.952182038248,180.225783447474,171.727273691237,162.428483795068,152.327466435868,141.460890390451,129.915938302257,117.851570938374,105.499644541386,93.161648563053,81.2413970291365,69.9534662994373,59.7670640680489,50.1486780670249,42.4791837924526,29.5917500537604,0,0,0,0,0,0,0,0,0,0,0,17.5045606859305,0.186105176968295,78.1531220023578,132.669722335833,184.820086716744,10.6138133963376,7.44400857505686,148.956591329809,145.315910574135,204.105444560419,167.46758673482,208.145553731993,35.5045504507239,4.38714922693501,188.357886887699,-7.94753041627815,3.58640608063879,120.760508911576,37.8595254211679,106.707121339597,1.92772077050316,-4.18219889949177,0.689223982022206,168.901357029643,52.9263548029479,59.9570956897058,-5.77365187808088,35.3002897952666,69.8237578293896,103.216347572235,168.793366702783,206.405671590543,0.719616323264824,83.3468260668626,-4.78089961128939,128.507450038663,138.804133242912,136.599977709644,193.233881318703,164.460634189056,66.3696424098344,62.1791351150275,163.134906667739,28.1991746017681,48.1460866273797,2.10153242120118,67.8284925847602,131.984537257786,90.0704152375717,97.6119841351128,60.140625705917,116.094796562182,118.933318877315,12.806909683026,24.2502356251038,206.142233816524,93.2282898259152,108.085086021589,201.428656329292,31.6525383768644,1.17864342105406,172.572198467706,176.77265284168,13.88298740739,31.5180012693991,163.832450272218,0.822976600635752,149.934589207653,55.3008330341485,75.0643790151523,2.5423262126382,-0.165886233140269,140.529250388054,76.7498475323631,46.6420908152791,74.1572344104832,148.501251254093,0.476439270931699,37.0665870012765,109.578081845528,123.30485986081,102.603305670139,165.087596379629,202.206289682024,50.1469687987812,72.3910540105022,53.4753773200629,45.3238209778966,3.42250372360372,206.184158097098,142.215559628812,-0.572168425267139,79.1024928269975,108.673190583019,88.2065038208463,85.974688585051,137.947543416061,2.67544886907496,26.5995522990545,135.694037845837,49.2095477012865,173.726838949779,-1.18665749644938,107.055411440392,174.903082922309,7.42918290477089,55.0588010056803,39.5463568504298,12.7395640474198,138.746992907033,9.76479776647463,178.925835959297,72.3624665611297,10.3705649831723,-1.1226595925462,111.980635379729,127.392235327785,-2.42313339048281,62.3983142773562,89.7308735642753,203.896539703222,33.5544487620371,81.2486556132161,142.290490790018,102.939616884667,78.865961789851,172.744757096773,-3.84662028446429,66.5543535411868,57.5956207574521,154.370291610685,-7.58778532419098,3.54922175590584,163.541796442684,74.039419291041,119.332603172982,57.9048777936875,147.861472744231,73.2536172959034,22.571656581357,83.4829784694155,4.99968441148567,61.3696105001056,127.738328375301,1.99327250729799,113.348019028143,18.8432149464389,88.7540519874789,0.699350225067391,25.3109019250876,-3.08083675118174,61.7522117546966,138.251273116592,-0.378575817402908,105.728564283604,0.644587248793713,13.5188629372284,159.208078570555,107.619403867467,16.802141167563,88.1922638027336,202.817620535591,-8.36262586443275,53.0334228026187,42.9446957162432,198.608307145221,190.619699164394,108.227388133251,-6.9598019528364,32.6018715672643,120.502792812054,179.739670551986,16.7112263396921,82.9837435667601,103.384199593467,87.8325694110357,28.1401720732384,197.05585463554,129.474836243319,104.151520801383,40.4757070835734,52.2980670246264,169.423692056361,-1.42860943987447,48.5862132509241,68.1974488466472,78.7595641452516,-0.0316515720320501,113.590239458854,100.596351939794,0.439714555260259,-9.34797613650627,34.6506824365456,92.9727601421832,37.8310867646511,115.958284503915,179.60018434643,27.8733312978772,49.9893322808677,97.1974844945047,154.254743028179,-3.6415181934992,23.7002019812148,198.161855909805,95.2740937056321,-2.53552030088203,-0.282931950554458,119.32562972479,204.034443869271,1.46047178584728,175.907278117488,78.1681185397191,80.4036822158686,24.201361926542,10.733730265307,24.1894914438005,146.2286686414,0.665275589475553,168.013561428507,98.9133072603096,146.107644993216,116.574665100809,10.7459967819195,11.4712788812409,45.3766623513374,52.2600466383964,137.274455606728,38.9625106530237,5.29481109368235,23.0495000964764,46.6916235398608,4.67996265569476,6.61902100299836,56.4755174417207,-1.85133970873053,53.8535754103182,43.9520248983576,17.1008195100615,39.8241876767745,90.1650805938099,123.187489661156,39.0195649162536,57.1191948629209,111.385473074563,23.4561292036519,29.4295600971871,63.7383227447113,79.7523918286432,62.9864190232958,113.739159369103,140.953555487014,29.2932379752657,182.45878312094,124.392481207017,19.5127811685451,51.3369015584612,143.367407278825,34.1688295275372,53.1129061883667,89.6097778128208,116.238832403833,7.523814464019,123.295308812974,90.9673961923423,27.3010205881638,5.81114726627877,157.577795740345,123.543797615797,2.47700272815452,18.3766477518084,4.6032914002925,138.171028203511,10.568855465271,2.86806473268801,28.7374762950073,12.5490523111443,23.4502122277509,6.50479974508651,89.1817797706005,9.00164990894928,16.6264024417848,223.755831021701,11.2747535238431,-0.208201410672458],"Archive701_field14":[0,-808.266723879993,-808.882464633494,0,-0.825691180725731,-2.20299317524078,-4.35145278868875,-7.71419004594586,-12.7644033991107,-19.8795439052207,-29.212651398127,-40.6882075894256,-54.1016088258709,-69.1871030768578,-85.7273277302474,-103.532025670122,-122.491471463865,-142.524607654833,-163.58973084756,-185.651736276788,-208.678553493622,-232.637416854217,-257.489883415793,-283.192626289295,-309.701746880498,-336.966955032502,-364.944120224449,-393.58485159396,-422.846183367995,-452.686691835301,-483.059133644296,-513.930106929724,-545.258405258828,-577.009340895641,-609.145945983789,-641.637621372853,-674.450773601621,-707.553897375077,-740.925765374573,-774.534070383215,-808.313176905729,-808.515537807781,-808.777143638833,-774.848057442012,-740.576005393095,-706.626629569113,-673.037894733152,-639.845359835595,-607.080927244735,-574.783846359416,-543.000281706769,-511.774074044299,-481.153930821174,-451.190733125229,-421.936859355965,-393.446481776716,-365.775780308901,-338.982035198107,-313.127387190361,-288.271894850693,-264.484810795583,-241.836065003702,-220.4042071108,-200.269951588198,-181.522110044342,-164.249016434166,-148.531537399081,-134.441849832214,-122.009390278903,-111.210294298675,-101.930934583887,-93.9538601818795,-86.9088003866271,-80.2241278215665,-73.3443037191693,-65.3813669474473,-57.2887743291753,-44.8628231908309,0,0,0,0,0,0,0,0,0,0,0,-206.231969799882,2.06348568297406,-90.2901893028786,-263.79028448858,-287.619467978225,-158.462254133519,-137.408879914842,-232.632581176878,-659.540137477452,-580.544850522611,-574.138570087537,-672.728001885251,-181.517709657803,-119.62115263078,-309.891002875814,-25.6556923235308,-10.134248834253,-563.972443054454,-112.116432803172,-480.117422282345,-1.33439472367019,-64.3805111944293,-3.60376429204069,-390.070441132493,-158.866999442022,-78.3774710455418,-50.7161603788447,-41.9952967901873,-450.764207039865,-332.583212293577,-214.909940935277,-639.47990747007,2.06675880682611,-278.658201263229,-2.6592730817055,-149.458741270462,-141.22127372911,-607.060574612558,-363.254918703222,-706.374709446692,-94.2122596702544,-59.2414248702921,-196.316967715621,-255.039144229805,-61.457217500792,-1.26985451977942,-65.346378227282,-740.411653215712,-82.3770060690889,-90.7150457426884,-416.665762290437,-532.089647086031,-171.215523104876,-32.626773412994,-226.918641465884,-613.065019559164,-96.0140862804134,-265.791743082626,-424.429318601724,-154.493969391519,-6.74085551806426,-236.57927855612,-652.57967530108,-183.100458520496,-47.1066250891464,-307.536677120937,-23.9994943705826,-558.046437660793,-111.134830928646,-481.309586862308,0.2543829487164,1.95950693349895,-389.461340971851,-76.8143629968321,-47.7241816736703,-333.21450617964,-210.598321176619,1.37830268664824,-304.050095610952,-144.48007812157,-135.839768447051,-607.901527195616,-361.607432690087,-706.307421023799,-93.2038049120237,-66.4916961115401,-253.491084615474,-330.614151731969,-0.937444660454019,-542.290504210993,-494.832359064759,-2.12149764620004,-74.7109950762383,-100.188461570195,-411.095791255473,-538.446869067051,-173.119596159656,-33.4276717358252,-43.3236111572164,-344.634458554625,-222.280640279877,-619.56359465014,0.926788340698616,-103.134587064127,-427.634859007273,-19.3168270505178,-387.341226283961,-199.336278596391,-28.5376495890732,-306.014365554793,-24.2159193140266,-552.548842342869,-111.440998625033,-64.6581430084722,1.50836800057095,-389.530302134786,-207.415362472073,-82.7815508648266,-299.18163384525,-140.961696026715,-510.849583928448,-93.6504389404984,-74.7883456420634,-188.945092297313,-126.122699511211,-252.846144545255,-489.607489266357,-6.05506910059495,-68.5114892606372,-67.6140472936386,-174.271755805328,-36.1030489796283,-16.3672602254112,-341.731298831489,-218.742317094689,-111.763690208757,-272.701614506617,-431.491118706665,-150.160371915782,-37.1958656908075,-381.797548850968,-46.7831113839911,-196.091507388056,-239.016436566089,-10.2606483303914,-305.274847878221,-26.4252129690876,-113.073233513659,0.120153321565426,-65.0042334510228,-0.744852091251567,-57.6783515652789,-463.968125537897,1.19049804552979,-205.292183394918,1.1148216959442,-81.3547788069316,-281.613566495146,-360.712075431956,-95.5356190331334,-83.960152185525,-485.027059350073,-11.8883195725919,-63.9584181869019,-54.4132299929773,-449.680420687336,-339.820316209366,-633.885263886329,-6.31811519157293,-277.509528491272,-435.958947824224,-685.944607004137,-45.7401547251058,-193.843891305768,-240.606699209172,-305.298489433532,-30.7255167213908,-785.523682235851,-125.085801566766,-116.102330839358,-67.0542952262662,-49.2205569364359,-458.935477903726,0.22709558370296,-137.894395181349,-130.028515504998,-361.3927328373,-98.8414239072979,-673.607835323388,-182.701737520887,-6.2909346184143,-18.4946147026974,-52.5031405857794,-440.994163178062,-37.1099796562832,-117.311860773854,-263.049081061249,-138.223040906102,-362.802175255028,-575.563435100192,-256.632868680862,-11.6894424111357,-35.3472600968823,-395.457760813938,-161.23473147243,-1.33863684560644,2.23198243593409,-700.088449039215,-740.240596265906,0.800379961332658,-520.826727315799,-171.45424451678,-512.350484463258,-118.130790407221,-20.9941877313779,-38.0587003343391,-156.016056802111,-1.33564341583472,-740.173945653557,-91.4513706117253,-526.205785225437,-221.933212634456,-17.7521880856837,-9.63253269619701,-79.7211303091847,-124.073432099784,-774.283691361224,-238.335475547141,-5.2550337228184,-168.443034357486,-45.0069152279965,-11.0099825057012,-4.29314695865536,-57.9039938191737,-17.1809777651528,-56.1851566716506,-52.6670923741185,-24.6223796210464,-41.8637077184909,-211.63248423132,-285.65959171805,-46.5686855530226,-177.12913497617,-505.941927466793,-27.2696009749395,-78.8842902097139,-237.312684301519,-81.9085419741675,-66.5023156099805,-457.843402718589,-633.194376159204,-29.8192999175309,-762.804463612177,-324.776997112326,-19.5963409648797,-58.3006449862918,-582.402845558939,-32.918213848381,-52.1574731767192,-126.434626923495,-412.562170054821,-13.3239596772018,-188.898718212286,-102.905331193937,-26.4772500281202,-7.80672033364495,-408.400821039316,-158.531709246943,-3.58733871121001,-17.1242245471182,-3.78173547074932,-366.822037599602,-11.4468660405088,-6.44280570077939,-35.2236584191758,-15.9465395013958,-22.7922469958025,-4.27793368910763,-85.8701394117338,-8.49476685009013,-16.8712019720566,-791.812480750608,-29.0496969885092,0.288367747788068],"Archive701_field15":[0,815.764035224196,843.492316866225,0,1.12917019080801,3.73084553346923,7.08792353126371,11.4101506904515,17.0663495911307,24.3622737354469,33.4968017528586,44.4986362526433,57.2958634917552,71.7288430414314,87.6544860797402,104.921794218139,123.437541080586,143.121189585981,163.92505841418,185.805716909031,208.723344893956,232.6387044071,257.508286973568,283.284817784594,309.921165175555,337.364259147874,365.567318671173,394.479239824142,424.055142353305,454.250260752402,485.015460137533,516.314721157142,548.104521136348,580.347865953607,613.005631055963,646.045269031714,679.431049346384,713.129896393619,747.118831002758,781.365609699018,820.795549650777,827.240067019059,834.986686160339,811.123984897004,778.470891566295,746.197736283959,714.348143760948,682.967145664325,652.083563620523,621.731035688156,591.947707260291,562.767603635919,534.228119592815,506.362695056382,479.204264957118,452.781464177552,427.119666939205,402.235835601597,378.145944041913,354.850437125876,332.349540270939,310.626659159494,289.661936134313,269.424175842471,249.881037624657,230.999462656422,212.756373894897,195.155821067082,178.225818391123,162.039261694938,146.697274765087,132.311830937607,118.967660210195,106.439645490003,94.6123080543119,82.3991083433969,71.3195956228871,53.7433212213013,0,0,0,0,0,0,0,0,0,0,0,206.973512827963,2.0718610717742,119.416199751395,295.273719479457,341.882176800812,158.817313350554,137.610368588696,276.235377758919,675.35909471167,615.379034390616,598.063951654793,704.192825907024,184.957433000468,119.701575741741,362.644629377269,26.8584770290005,10.7501306043137,576.756462501628,118.336123688518,491.832439885402,2.34450776232201,64.5162073380863,3.66907982605749,425.067779832525,167.451254233699,98.6807037421161,51.0437457440377,54.860873235173,456.140030588958,348.231542950472,273.27181222304,671.965663797394,2.18845598957404,290.855783072433,5.47071607893432,197.109309921146,198.015240724012,622.239580193357,411.452875614663,725.267213062721,115.242697407622,85.882426981981,255.251541790737,256.593371967579,78.0707066733151,2.45539589858009,94.1852087843089,752.083329354385,122.060029616477,133.256590722154,420.983672278831,544.607559922694,208.47035686459,35.0502964177486,228.210744209373,646.794665075358,133.829065558,286.927929123665,469.801820004294,157.703106386801,6.84312307571706,292.832577979486,676.09822023782,183.626020078228,56.6782015532183,348.45355434661,24.0136007405974,577.837527014964,124.133528024501,487.127888138727,2.55502118505209,1.96651612370098,414.039377748326,108.586304195557,66.731418028109,341.366668765351,257.690268552077,1.45832529804145,306.301146770547,181.333529704134,183.457164365534,616.499558070565,397.50955945124,734.681942462356,105.837931431904,98.2934908960957,259.070156442329,333.706407000953,3.54856791248175,580.164543907694,514.863408078425,2.19730038222019,108.806880098305,147.809303439586,420.45230039121,545.267528728244,221.359253949339,33.5345681995329,50.8376972945453,370.385990461501,227.662607004745,643.459448906678,1.5056867676693,148.652629198274,462.020195504372,20.6961968953757,391.234836316177,203.22122503518,31.2521029082371,335.999285663893,26.1105730240375,580.7965891327,132.873709744837,65.484533100376,1.88030279101065,405.30669742957,243.413052672266,82.8170075468436,305.619370549331,167.098262759778,550.037359006474,99.4801776509883,110.429347018045,236.530826051287,162.798955943695,264.860364608293,519.18806289256,7.17358692885448,95.5159993718105,88.8195638463883,232.810720980456,36.8917962662629,16.7476619967959,378.848518255987,230.93297057135,163.497378049679,278.781537098168,456.122352713416,167.075521070026,43.5087589493806,390.818085562493,47.0495096146747,205.470456179604,271.00910959757,10.4524657114154,325.638612828202,32.4554869009746,143.745740394039,0.709596757310104,69.7580971846027,3.16959930042804,84.4992774873537,484.127912884093,1.24924186846765,230.918621744815,1.28775779363021,82.4703564309039,323.501797701719,376.424145680399,97.0018889087151,121.76691894627,525.724486305801,14.5349803442781,83.0856376946819,69.3184426284186,491.586961194691,389.632797667441,643.058080825042,9.39986291371794,279.418003058387,452.306452820993,709.102498266786,48.6972980775427,210.859564385674,261.877598182652,317.681802909359,41.6644532198364,809.863238577671,180.028306035008,155.97208247495,78.3234407582207,71.8174842196888,489.209730390484,1.4465466932788,146.203571572292,146.827473156847,369.875352371529,98.8414289751224,683.1180412706,208.565459548666,6.30628315755574,20.722823911087,62.9066734511406,450.68812507717,52.9937894086119,164.94967845775,318.513807023242,141.005431225081,366.229916461868,583.712787950026,299.424372812331,12.2435174127717,42.5573538922127,442.329019764239,187.279981750362,2.86719580785827,2.24984356855378,710.184794534036,767.845163197078,1.66540863446748,549.730707147771,188.432515025564,518.621028346909,120.584366985668,23.5789924277673,45.095411822587,213.831320233299,1.49215781478189,759.003311355257,134.711527123463,546.113515974639,250.687062716879,20.7513042642267,14.9791830656584,91.7305843430711,134.630342150895,786.358385769546,241.499225962878,7.45991983507466,170.012750340246,64.851600806211,11.9633509199782,7.88939477062374,80.8848352320817,17.2804356335076,77.8265983754446,68.5973987248043,29.9783189341668,57.7800653171506,230.039236088994,311.089311853591,60.7549909093074,186.111076723538,518.057870880135,35.9697252498658,84.1951913674665,245.723185549718,114.321709446296,91.5961077932226,471.759661042491,648.693319530943,41.8005315593857,784.322546688947,347.783822559558,27.6543885874078,77.681675235803,599.789369683227,47.4459451823824,74.440464882713,154.969762098761,428.624556364832,15.3014929196037,225.575838505659,137.348368603884,38.0314408641973,9.73212797481233,437.746493230926,200.986001418234,4.35941986326516,25.1185240198179,5.95750072486193,391.981683632717,15.5798410773391,7.05234291628563,45.45930769641,20.2921372944648,32.7016662670915,7.78544387765268,123.802547169444,12.3770256895862,23.6870157288358,822.820561598119,31.1609525231116,0.355673706324159],"Archive701_field16":[8643508.26785819,2699078.12386803,-60820.4302023682,-1150753.32481006,8765317.0922276,8641615.73380806,8497525.8516703,8334210.11374564,8160307.60348757,7981618.29129977,7801394.33487621,7621832.82640838,7443378.02836663,7266744.38217465,7092091.21971238,6919123.96864558,6747469.83149629,6576811.97267821,6406815.08375924,6237235.2637256,6067902.37627762,5898689.48395347,5729524.98563667,5560370.19912861,5391199.11697731,5222014.8674909,5052811.68795264,4883595.90272628,4714371.24036566,4545139.80521321,4375905.36709013,4206666.9400332,4037423.30747306,3868168.5335878,3698902.29033115,3529652.78797255,3360514.93280938,3191864.10602966,3025158.75634137,2862259.92507544,1979373.93589391,1255088.41513706,498140.370545924,-106222.790562535,-137016.079888893,-148572.704261521,-157891.106777073,-166150.501331604,-174270.580417288,-182359.525187351,-190462.550297207,-198577.777235168,-206699.642606334,-214825.700286272,-222955.513172196,-231090.885465179,-239233.295740031,-247387.881369024,-255559.543500822,-263748.075835939,-271954.480927275,-280159.749363292,-288325.40741625,-296399.912436297,-304266.37631923,-311749.535658746,-318627.612113889,-324543.644276639,-329095.731222155,-331692.510198011,-332193.913404664,-328718.284071986,-323929.358011287,-314344.35943953,-298112.507010085,-281752.21050817,-280490.236190634,-218055.830349298,56787.6404121661,865310.070372424,1655826.6130264,2450548.77278466,3251499.26216983,4057556.39681807,4868169.76005036,5681939.39525532,6496443.2203182,7303669.04627136,8083168.00714837,5362010.65806399,6100775.06215984,2632778.43829346,1915457.58356345,443201.045984907,5660850.30773307,5811156.11957617,1264988.01289585,1950157.86485527,593943.195132286,1437924.73650588,546151.279666219,4786068.72999087,5962638.02972063,450329.181722892,7045135.57274835,2363498.23273006,2515332.82197176,4625056.38628017,2848369.44866402,5973382.13412538,6502650.90555939,2729507.83899707,1230249.91698131,4170714.69948566,3369672.90711851,6658322.16348348,3968223.23952569,3751809.3338156,2878042.6227506,418257.169682729,573253.823838967,5978432.36342668,3376543.10945087,7802974.49667446,1219772.74383719,447939.497007084,2149792.02084414,516779.045416665,1520919.19168071,3290183.50221742,2465681.54972695,411175.162196929,4979507.98127035,182372.456220923,4299466.40540014,1118210.34848365,2231781.44618752,1175442.14341112,1180818.01012937,4007873.92755714,2625438.11758287,1877172.53690666,5419687.65738925,5125599.48194691,566636.180684641,1892225.81709818,2644510.66326712,458197.682783969,4914591.11206126,1990484.67626375,492452.601408036,1244859.63645067,5511744.21626044,532751.193278066,1156214.72206821,6291003.78413828,1838902.39034636,3917357.3811168,3612136.15825778,5503381.62877143,6987046.2620789,1960921.38366708,380681.424552185,3244714.07338439,3659373.92865622,1124736.44866599,5327167.63458097,4684388.95600399,1985112.19624302,1214005.79843227,2924360.81165762,1272794.04169636,687044.573022855,4015601.08282719,1763426.72143599,4229450.35067004,4439532.0887316,4812755.10421791,514196.729860268,1999987.04281373,6538376.78695579,1930874.38703365,424889.429202429,3301379.9994668,3331430.08170889,1150222.14740938,6152393.64898839,65505.7641649501,2024165.36479898,4352434.66085543,1307487.81753178,6930222.51987692,1152030.48164407,1139353.51796754,1543395.53827048,4151764.36402496,4654239.82044558,899340.884516324,1862087.96453745,5539846.68097412,1162450.12120157,3209874.94755059,5739423.07147833,7481508.29422434,2691591.31836512,1831133.94076464,6348331.39335188,3977576.22708584,2750431.69458858,535632.429448532,4741477.66980741,1063997.28042997,1156266.71306716,2036562.0551871,3479333.04417786,1264423.82085844,7024268.65556586,2688367.29084873,220598.030299461,441968.789628921,6886831.5786188,435605.236005149,1266985.44403482,3579180.13223308,411843.557997529,4102490.91765111,1820510.35480719,3421599.69009464,1105538.78600999,3419936.1275821,6014725.77064222,3947262.05443682,1973937.73585339,1265077.27558085,2567945.37106374,4792413.98075792,2502662.50384249,4547176.38002294,4976133.49199092,7986349.73480197,1799392.1185461,2080537.3461912,7725724.33704175,2537446.11772686,6228561.21283217,5604162.20596947,1192446.37454886,2784813.99711733,5467700.21008739,367067.172210988,528860.491431565,7506052.90946679,3448027.74774294,734707.699269246,578498.886122346,509799.793653858,2789016.62245455,7757146.39213859,4831437.94366319,2501666.47071146,1181931.89809692,5301348.76086456,3240186.41811036,2725156.79056136,3273781.77899566,4048578.77625104,792990.890301286,399684.691786404,1795903.47632879,4214009.44396082,2515563.69432782,1315414.91243426,8167155.8515244,4281215.08446376,3512310.85730884,3540814.96649057,6193783.72433999,2657165.89498175,2608397.8743534,6326116.27841973,7354830.5342826,4309717.66407013,3182823.14745847,3308639.44004322,1123310.06738102,457231.634198953,5046687.57739616,4296812.74476647,3058100.52232631,1228697.52751566,6823261.28096956,1501898.54815839,475402.845528153,2679388.48215558,7074769.10571636,6740867.90471239,2522123.70853874,648301.651108781,5063555.86074573,1213434.1176746,3330874.48424924,3472460.84292637,5177205.98272703,1930880.08584053,4694308.96376149,454228.06341806,3779284.52332862,1438708.52523026,421565.871946954,1919439.4276188,2255674.98573861,5301285.1567812,4216479.95088932,4115091.44786267,4099397.42026838,2106105.79296576,4665963.13304125,5490847.39208079,5213175.89894625,2267779.75851912,5812481.68268257,4515243.06899212,2967275.82751496,6556635.3244462,1259075.71399035,3708629.26102444,2219395.83963422,2017117.76684398,3058332.56884618,2253293.33254401,1388158.89933605,4058951.85871109,2736902.93131555,2498818.94296401,4858995.65104279,3915886.21940963,2290815.05945302,662388.46370393,2675018.18515986,2049928.36951492,2772299.2762808,1116220.20361091,2296051.33594487,4246429.54559851,863965.309495982,1994329.54286109,3042043.13017058,1732978.88519677,2626571.12074682,2596628.8708724,2637939.98662864,1854116.81321189,2214535.51585547,3614065.70960926,3355569.73009358,1550137.24417745,1567666.45205507,3648642.53861732,3916167.97717205,4080835.83678537,1992541.58897432,5008837.59914975,3002519.0223601,1955722.05260683,2927091.76582782,3342380.65216948,5003249.58871956,1735490.59197376,3788888.97871702,3351950.67947538,222475.597052027,-162008.626976176,8397290.31848054],"Archive701_field17":[0,-680046.777699335,217106.618331726,0,-5672.74074792083,-121540.775085655,-262596.403739838,-402749.371879093,-531804.738574073,-646431.241068163,-746162.871613757,-832091.327271508,-905603.406277914,-968167.422043856,-1021084.1498218,-1065466.54272223,-1102227.14147273,-1132085.52534775,-1155612.94405316,-1173266.00954207,-1185432.69354959,-1192441.60657544,-1194594.60951247,-1192162.47519533,-1185422.36161333,-1174619.09802381,-1160009.38554169,-1141805.98317897,-1120314.84299016,-1095684.14680086,-1068172.03800328,-1037980.00058237,-1005314.25237321,-970367.811233203,-933322.689432384,-894351.73909732,-853642.195897117,-811389.49849528,-767931.78032119,-723906.859775826,-452159.88935646,-227159.900091619,-4693.28366384249,222961.250207663,228277.269062104,233068.164684009,237470.164699581,241573.545147266,245336.765088259,248732.652997825,251747.026990514,254357.927668749,256513.025225014,258146.710090139,259281.028632765,259837.077907391,259761.575558313,258972.635992097,257475.30244505,255175.941916019,252080.787488718,248115.099499989,243176.49016337,237201.996725822,230164.270448768,222092.725229597,212946.605514096,202810.979708487,191726.692198327,179784.452627389,167132.354209438,154039.174035046,140747.694103298,127289.239783703,113751.71744433,99541.6938754394,82406.6085653338,57667.8891466634,0,0,0,0,0,0,0,0,0,0,0,-1014313.63070469,-75115.0496569156,-259585.639789098,-266378.675539208,83895.0697904187,-979811.537063111,-957449.126536798,-100938.347631192,-411448.54834995,15622.5972059347,-236424.653086188,19868.7503411664,-837791.464624542,-936489.488927774,81123.7683654189,-645996.7251071,-48427.1169291375,-556329.518641613,-658874.258857722,-621135.556547957,-271456.154725341,-822111.575079215,-31472.1135576937,-135278.956939544,-665089.728837823,-358521.826041984,-774369.215090357,-345970.873580635,-865252.451519915,-548439.46239724,90631.262320199,15200.6456862371,-137974.499287289,-633759.415695407,-294888.468426425,-62631.6013153468,80144.2006119503,-459283.721103147,60298.8600325029,-287991.128447753,-378320.387369287,-176377.54075889,91483.3269776252,-1003186.63003789,68532.4760071499,-97245.6268275437,-7515.60611912455,-517893.895446849,-24610.4640185881,-30003.9062924777,-914635.894265431,-577612.592324442,-204465.618787719,-505839.12203945,-994966.745169137,20180.9331095078,-145066.939933784,-443616.04965375,70973.6275414236,-812386.792446887,-24040.7939826597,74085.2089226083,-192762.578818646,-1002577.17855218,35633.4451106278,-95842.1182810351,-555740.786699893,-352415.855732705,-524731.03483238,-843323.416358992,-193335.001608852,-72321.1618778733,-333346.988038907,69469.3165744581,-260179.627310837,-753667.760546529,-62982.6932786898,-69673.3179205834,-992588.654233378,-206288.610859764,-56192.5090425135,-695430.205695429,-139646.868753015,-27472.1879173609,-502623.076074084,-89976.0453727135,-816818.18448288,-957512.037170584,-153611.61683438,43595.2287151716,-381359.057066494,-314991.275328753,-125257.126791394,75815.1085658233,-712890.289626335,-790034.974232677,-57226.0822762444,-604487.106270598,44043.5283731673,-331762.976381035,-804854.482915335,-206039.421856472,-218841.773028181,-31713.1140171864,-118708.837760146,-22767.396218875,-931874.142263474,-839291.923236468,8364.5153724896,-273081.488753888,-471354.48625309,-149963.041876206,-395408.340466748,-702332.683460211,-133139.353369725,-532317.607325873,-216857.755510271,-878043.471358324,-804932.183307045,-351292.099229096,40623.5785078334,-632064.091974977,-5907.75342254899,-63413.6016964709,-200002.550521453,-634273.304926888,-167308.093827566,-406094.14314254,-228898.402188261,73302.927943765,84099.2138782469,-711962.057828517,14948.4168587356,-132943.871607624,-620774.310950206,80881.7211214334,-808226.446036196,-309648.708386969,-497090.070812863,-1061.24716133929,-726434.664804726,-661721.54644128,-675124.869273474,-267016.622693239,-8408.8025419844,-451142.511378771,-390649.928974593,-270022.312285656,-61800.4442018935,-581724.694406259,-190329.27223489,-81783.922747809,-394161.317097463,-60594.0103783168,-371648.929744719,-210537.935894424,-744116.609867786,-98144.9915562538,-541335.544694375,-767912.460509157,75696.5660051535,45290.2217061619,-515178.704583998,-336060.045327142,27982.5800180479,34893.0126500206,64056.5006741314,-662768.264047401,-405058.156606512,-997274.526575892,-502301.250448123,-178961.999223667,-554324.532891424,-515573.356649125,-443651.318299161,-630660.472616766,-312219.185776875,-74597.3088681063,85724.9598061785,-147891.141065747,-466173.475989275,-160659.669097097,-175079.949115909,-95556.9692962236,-648799.563512163,-483442.375121844,-744510.963665652,-911739.985292262,-634055.970879153,-366958.139813171,-380137.831291292,-597721.04435218,-434056.527111831,-697128.327803044,-235185.258330245,-32958.0861192454,81394.1888721144,-803506.148198133,-950380.152150072,-723907.194116318,-99853.5823862648,-482919.240166003,-26963.153066367,68695.8510050427,-360200.584923948,-296508.532565103,-142331.554883313,-599158.442790678,-20199.7127192607,-109837.520979732,-158916.988577554,-507754.783634623,-819159.275765178,-779299.33298093,-45166.9612447733,-433651.36139087,80466.1259412266,-46610.2109801159,-268646.954932298,73185.784564512,-367412.443756713,-321078.016279733,-399622.358794337,-212030.383571417,-485782.923201592,-585559.788009259,-485740.746806849,-902314.438793475,-301496.356416529,-905606.242117252,-117793.45434984,-396499.2232784,-187340.983694229,-247114.659896674,-523436.073852514,-17066.4409908775,-343772.538856529,-71235.2797849479,-81270.8816679228,-494220.296367344,-360569.762718007,-23485.3928028175,-671486.899024554,-600002.04894959,-102981.765997644,-608803.847408582,-721569.000094371,-190861.550436735,38223.9355992587,-561226.138719567,-435732.66749621,-140777.526457119,-172059.027760597,-392844.729484552,-283346.859211611,19047.5366084522,-405514.789596297,-184834.135594256,-65168.8287929553,-309698.85609628,-517912.48761829,-75978.4082719534,-210948.804771182,-206833.998668204,-235546.301269797,-103709.752787866,-227491.852471357,-134342.033862093,-82068.5963912155,-227966.242473484,-129486.457225865,-332834.625408271,-317927.502440139,-65890.9945160065,-64280.55471721,-110165.993502068,-184908.431780764,-240679.295542193,-109446.951093444,-153440.778439686,-158984.152784056,109195.704976969,24642.0039272128,-22929.0922608597],"Archive701_field18":[0,-5743559.6571288,-5747644.63806752,0,243047.832162566,351554.263642716,387551.785154776,368560.562935878,310316.054463715,224442.332221714,118721.791892372,-1477.87670054107,-132769.341820172,-272913.89382723,-420478.952756076,-574570.161100503,-734636.401860667,-900299.066096955,-1071297.95185568,-1247401.02958422,-1428392.99089621,-1614065.09095128,-1804193.40220479,-1998537.45558752,-2196872.87051995,-2398973.41556406,-2604606.68126216,-2813561.35596787,-3025538.75938562,-3240462.55349759,-3458041.80476116,-3678104.57747357,-3900457.41997546,-4124933.70679768,-4351354.53809494,-4579537.68771047,-4809307.19624963,-5040464.66679893,-5272837.62362238,-5506537.29048113,-5747633.09665356,-5747912.81235257,-5747660.785147,-5509435.36513294,-5271847.39981847,-5035706.53847273,-4801482.07927342,-4569386.30359665,-4339658.54792311,-4112541.78577332,-3888244.09255747,-3667054.430547,-3449247.54529345,-3235044.5877816,-3024796.28115357,-2818781.20837631,-2617297.15824016,-2420701.95547708,-2229317.23545734,-2043483.88837069,-1863592.41429953,-1689959.97788885,-1523049.95917355,-1363245.3095852,-1210956.26104573,-1066614.54049788,-930619.42851504,-803333.282287929,-685135.354422089,-576280.705518434,-476978.828001087,-387234.899616065,-306903.031815191,-235751.520571081,-173228.67845981,-118974.034936055,-72626.7322332016,-33521.9317072883,0,0,0,0,0,0,0,0,0,0,0,-1475638.01625807,15799.4187971748,-699132.259996713,-1955650.40033162,-2075868.62179711,-1115116.41963449,-952963.352087306,-1710054.70539548,-4719923.67443373,-4164906.58695581,-4128003.66114723,-4806420.72849384,-1339876.9645099,-812679.879126876,-2239117.34153172,-10298.0300076695,-47937.8119887647,-4057290.90550562,-858299.904986203,-3474431.47408757,13385.8775882475,-362332.98938965,-21328.4707590906,-2837942.24650544,-1206601.18735203,-629969.624128618,-245645.566604267,-361418.836977866,-3255272.90726498,-2448650.94650817,-1532306.15254849,-4575498.82262706,22526.8913166653,-2066948.00031919,248085.57198879,-1084201.35481034,-953634.937645499,-4356856.77338096,-2627704.76909882,-5043634.90738851,-748529.002619399,-428050.865814902,-1389463.44273382,-1843666.19745082,-135662.967445198,-28328.8383571686,-316112.279953264,-5276639.87782748,-508164.708927336,-589541.388428589,-3011684.89591314,-3836047.83999815,-1283610.45808657,-253200.741772486,-1637606.18759949,-4391453.12773614,-702413.961349094,-1979742.16192363,-3063185.54333462,-1142481.77572905,-26008.3279231788,-1700293.59523036,-4671036.27460131,-1301262.24106037,-88927.1527695542,-2248502.67836093,-110160.543906433,-4017830.58158039,-872224.785390839,-3470080.972009,-5064.93148592543,40739.5449846833,-2844351.55102734,-318437.03164348,-383449.703115674,-2442303.13149006,-1541367.60450199,-796.429523335956,-2202016.76398058,-1088538.18915182,-976728.208083237,-4356794.20747573,-2637324.11118031,-5040337.36052539,-741081.344532229,-423240.712317193,-1869630.69008027,-2398403.42468057,-30926.5044967912,-3896105.49101762,-3579458.29442146,64922.9179159101,-519832.912316512,-582961.723935671,-2990227.84296205,-3870922.06255521,-1261597.37851016,-192062.271639089,-45121.9776081546,-2530228.59387829,-1646447.11562295,-4442517.17908751,106054.280414129,-699305.158060904,-3101233.52410713,-56302.9529914051,-2803585.01538875,-1471918.82951467,-54255.7260648649,-2255065.24618739,-185064.71737139,-3975896.39535003,-875868.445948613,-451056.622230719,119780.464765306,-2846670.59356953,-1547322.25792409,-510461.52083923,-2196907.71851731,-1086435.82448208,-3675766.97377958,-722221.043617102,-412968.041953562,-1381473.30673627,-951171.282705199,-1884558.86380516,-3537823.09960477,113309.371530984,-524744.575316772,-189660.019252921,-1220055.74622422,-109133.685371349,-20362.1623617358,-2495975.2369662,-1643256.76104462,-692246.50447986,-2008274.44059382,-3137258.65687295,-1158003.75990363,-92830.8269487261,-2784857.15333636,-299799.376940642,-1475905.34382269,-1779599.20540206,-24780.2143576035,-2257557.71487643,-239061.9326093,-871054.444783338,-12578.4036751185,-508018.396972803,239924.858786529,-338774.451149869,-3365069.30089841,69313.0490029877,-1548658.3788221,42782.7232274469,-579318.610768021,-2063120.34110152,-2645435.93726177,-689767.543470591,-400025.712395841,-3493859.20775699,167986.456388487,-520629.488796115,-147390.948913148,-3245309.46157709,-2458608.17322599,-4537689.88133917,244425.064824306,-2009216.81721087,-3170304.49812473,-4901741.18741623,-353436.373997018,-1470658.46755711,-1802024.12617813,-2254588.8835362,-276160.614199772,-5588681.9896219,-810828.819197456,-859454.049321612,-547799.316234692,-341896.056447835,-3323818.26759019,189089.478586014,-1054412.03157446,-1012607.85066331,-2640781.50543363,-641399.541068144,-4813035.72520548,-1387374.5422879,16392.7064799014,95808.8700059617,-439940.091345365,-3199332.0688974,-299728.764615145,-818288.938373821,-1895436.1383276,-1019857.99237967,-2627896.30889616,-4131756.32852813,-1883550.73265421,47912.4345145908,-115977.715664652,-2857114.25805864,-1233174.07237243,134174.318531455,64214.0493778829,-4996777.36283423,-5274925.52733698,-10220.4815727423,-3755276.34046142,-1310822.92786276,-3687809.54793505,-869887.152447625,-79219.210408911,-326784.408906672,-1075547.98616605,-17876.7653419869,-5276922.40330416,-492473.705257582,-3797134.02852344,-1663176.96636032,-153881.566225153,-110896.497855851,-641639.548109641,-961355.77857992,-5510843.37807482,-1744557.79022815,-48692.4423649415,-1221253.89477262,-275902.680647255,-68350.1520984479,-65292.7787441717,-452493.736950948,-28208.7883627867,-239890.132989982,-439042.621194521,-115134.723318755,-216521.101080957,-1597388.66440924,-2116808.15495247,-173314.951622182,-1339055.8225516,-3654232.33554534,-154874.810167243,-612053.268845752,-1766447.79654138,-611966.739943561,-248887.496192758,-3321462.17634548,-4537724.19196493,-198669.98102798,-5432764.01459121,-2393102.14855856,-192525.79164745,-197320.660469118,-4186615.98724107,-246824.592690507,-273150.628807276,-975999.304324296,-3007322.6687144,-74732.0168454588,-1412946.89972497,-778832.721925132,-229494.377332951,-66316.5095415673,-2972554.24363681,-1174562.32973748,-38229.2158412887,-166134.071622129,-52341.7986002917,-2685862.88012307,-119551.772000987,-44474.9160549879,-157886.044000445,-106782.735268468,-185258.703491743,-60929.4609314751,-602362.894347229,-89027.4599218785,-138701.953155592,-5628526.59812988,-15032.2404882435,97046.7479365966],"Archive701_field19":[0,5783678.8599348,5751743.57644965,0,243114.024084412,371971.182074356,468138.075180549,545934.011672304,615720.986833944,684286.277753725,755548.737570928,832092.63969825,915284.233224588,1005897.68393758,1104271.42982519,1210516.34589852,1324611.38238274,1446428.72106335,1575792.04786462,1712472.61518383,1856221.21725231,2006769.31980728,2163832.27483914,2327101.91625766,2496292.56791737,2671105.29070372,2851244.94539145,3036420.32779045,3226296.65901459,3420690.18038332,3619260.23190484,3821760.8198893,4027930.58915696,4237533.69007884,4450323.30946963,4666050.8426706,4884479.57376367,5105353.75615802,5328464.67796446,5553917.00271887,5765391.12110273,5752399.78779435,5747662.70130983,5513945.02708104,5276787.42404346,5041097.21300891,4807350.85433821,4575767.5825168,4346587.9078728,4120056.78023968,3896385.33629653,3675865.36096772,3458772.55118387,3245327.90467549,3035888.53456272,2830731.85020249,2630155.98219356,2434515.30770362,2244136.55281409,2059354.55018395,1880564.12016599,1708076.64625038,1542341.07236588,1383727.77718623,1232635.65482955,1089491.51286342,954672.078532538,828538.868081525,711455.956739694,603673.670917785,505412.728554475,416748.046927713,337637.948596943,267920.379994299,207238.095586856,155123.724196389,109843.030594177,66703.1134507225,0,0,0,0,0,0,0,0,0,0,0,1790625.50424687,76758.6628289564,745768.477044201,1973708.71384286,2077563.21629378,1484424.2242366,1350869.34243381,1713031.12799147,4737823.27661335,4164935.88709495,4134768.53560533,4806461.79497304,1580242.01254808,1239944.01035284,2240586.42657272,646078.801905106,68141.1731065624,4095254.8181048,1082032.35436129,3529516.03590895,271785.992385692,898416.739091201,38018.3849829231,2841164.65392117,1377762.95955614,724844.55373082,812397.332388522,500319.319123878,3368302.76335644,2509318.09497121,1534984.09465627,4575524.07222287,139801.370830085,2161926.23209167,385364.320922277,1086008.88359898,956996.701765405,4380997.8863526,2628396.52755552,5051850.35101917,838702.559470066,462964.988534815,1392471.85171141,2098925.54949182,151990.595115973,101287.881899803,316201.609535101,5301994.19909343,508760.303422362,590304.398647949,3147507.70155532,3879291.08698564,1299793.05944272,565671.135042065,1916171.40403895,4391499.49825395,717237.610670187,2028835.68265359,3064007.65806821,1401869.07677398,35417.4095139141,1701906.85061272,4675012.00965667,1642694.25608148,95800.7354363825,2250544.37997407,566553.763940879,4033256.68878816,1017899.17730901,3571086.15646253,193401.334995526,83006.3912052837,2863818.42306146,325926.570054105,463386.570033168,2555945.94609772,1542653.85354617,69677.8697295514,2415390.25115287,1107912.62300434,978343.288696756,4411947.2953887,2641018.68894666,5040412.22808383,895450.454137955,432698.959212612,2040272.25237024,2582473.28908666,156693.897478052,3896349.38642627,3599716.1571309,321612.326884326,534710.767181194,587870.991171445,3074032.38725115,3950720.55135357,1262894.59970197,634265.384389349,63054.1454214456,2551886.24546168,1832642.58468803,4447292.56175559,243185.59171192,700023.875086595,3103504.65751355,60732.0084151645,2954399.83000467,1694389.55765486,54896.7114519829,2271539.73420282,506383.255377453,3978723.54662725,960985.582784209,834699.511629548,179090.611577216,2896013.72637676,1562444.70493911,1015643.29459337,2339726.33942612,1141818.2603632,3675991.44730499,959743.847183991,413010.296754767,1382927.97430125,971971.105155982,1988432.73371001,3541776.99500651,421605.819185908,572495.71862916,203332.835882814,1222950.81735517,720277.816588953,25260.1033772275,2499513.243923,1756602.83725564,696955.576616007,2164808.58664565,3152502.84737857,1260186.98868528,92836.8928687393,2878043.89937309,726467.529514318,1622988.03847592,1799519.7161082,26168.05273227,2302193.82363242,457993.422038732,911947.309283218,63067.5125763303,772325.262920275,306250.17507456,348506.440072367,3388075.34505137,92064.8296355244,1592628.55094221,214840.833775707,943037.423363101,2065453.45656454,2700254.70467244,1032215.48672294,407124.723742949,3494152.73962237,541875.029122774,619670.411323136,150023.720144465,3245497.03801029,2459442.4946992,4585835.93590484,473091.664001631,2243102.47200616,3209850.02095606,4905007.04031898,657413.840917162,1558413.36438183,1855833.35554586,2341132.98756953,416827.907897696,5589179.82709579,815347.866112932,872085.461695724,719306.471945804,377762.415664886,3328426.18433227,211863.081477189,1238032.95834261,1122092.32654378,2743724.3911258,1114748.03075097,4854620.4657328,1435084.10797545,380491.118956255,605350.961371401,618022.93865305,3274402.78409679,380984.826566079,818952.393064211,1897182.95597983,1298357.59897375,2794469.79656444,4194693.31227273,1886195.66864034,485290.216163096,119070.74432484,2857939.99299273,1284703.37204786,325453.618258103,156146.455781125,5032571.3957479,5274964.20341838,110312.008677895,3758637.38640586,1405728.16309362,3777692.57363712,1167908.86133206,91190.6666600161,542993.142811802,1078553.78538571,49920.8424077897,5283756.35669244,497882.02360846,3814868.11494158,1693885.68503593,428226.06888448,239279.996644381,804789.63597491,1125648.78996179,5532209.21610703,1964090.94237027,305403.023684943,1520389.33870868,299995.97843306,402347.334217906,198393.021872385,515573.697075096,524195.630610396,240496.443454048,557618.132503974,135390.064627084,231271.146969075,1672095.76475888,2147297.67816663,174898.931188564,1497987.03314513,3703163.02920745,185987.770975226,863279.403509815,1908140.36166187,641039.329707831,251805.589719125,3368543.56772711,4558596.69195106,243491.423497918,5435487.94012747,2425131.92938433,342566.23166121,198237.866460521,4206209.18039081,308360.239391706,280817.09752801,1023957.04182786,3051593.51464026,106572.007888233,1428607.13272642,805829.207553554,328861.261429985,123099.927949196,2981246.59736561,1182220.13538112,90535.7799848439,282080.01960654,139665.337452137,2706406.89821276,339662.366176179,79496.1717091246,170469.917008435,153424.569987057,261747.80870728,248271.872172597,612225.196794465,177397.748318062,210983.868211862,5629585.71902417,28865.1452732384,99718.6770719324],"Archive701_field20":[0.493748897921978,0.183834963747126,-0.000155746121870886,-0.532836011140252,2.91495077485998,4.88846122002623,5.99441458698407,5.64957705526447,5.6222991509032,5.15552813314583,5.50700887104366,5.69482622793545,5.7480639696845,5.04438220180541,4.81478258476763,4.0923556939459,4.17335113503084,3.64854837634683,3.43459169672113,3.14024930311211,2.68750806952639,2.5348785128391,2.50656709444031,2.07044759644578,1.92955509988397,1.8469970025462,1.72875935031715,1.80955219873244,0.850641898859583,1.2484606039237,1.05857482869762,0.904757040161924,0.747455025954869,0.77450671185513,0.637218815474378,0.510827217556423,0.471830140907157,0.346170342015788,0.369650983114044,0.319344330518042,0.0871107798238886,0.0635144873841831,0.000977119213118791,-0.00108215790190528,-0.00896103055361364,-0.0151800838968129,-0.0196696235551716,-0.0231765108442544,-0.0288854254116344,-0.035895645482802,-0.0391096963904913,-0.0439513462099951,-0.0552214667383944,-0.0593977476420102,-0.0662292484022471,-0.0796515526797945,-0.0862733017362827,-0.103492985388258,-0.105592870840904,-0.121935158827358,-0.142415938923333,-0.154994754031179,-0.160330656496407,-0.18945360839277,-0.206850515417948,-0.219749148974059,-0.248068620766075,-0.251291966527831,-0.26945515375826,-0.276007245972364,-0.287526429563,-0.281831454096737,-0.204276738236418,-0.378549213931042,-0.229501787150909,-0.312994727434658,-0.442410439605931,-0.490803587679324,-0.510192117518512,-0.066524322229265,0.478407140121971,0.792430255075211,1.20510064084279,1.47778238323255,1.85058782846315,2.06817865517806,2.26265310348366,2.01557230596199,1.37682845725469,4.42031869742878,4.55802804178855,1.36894298753623,0.85169200484131,-0.0424187902341214,5.78402976357142,6.13788173312013,0.46360598396291,0.534341332638163,0.0795801754048792,0.212106315984809,0.0374455503422535,4.50421664128116,7.23017965183965,-0.0523444118783024,9.48031228310348,0.999013377993021,0.839848192159595,4.04049248931827,1.18384897266896,6.30305918302311,8.88869264610088,1.79557519674879,0.348979163995544,3.44893465081528,3.35760861108928,7.85276132354583,3.39848986183364,1.61048378257487,1.58692363904537,-0.0953958977168188,0.0401180064366479,4.99081172336703,2.24875487419525,11.0031167273682,0.267185777173278,-0.163001621359339,0.534063998172257,0.0221964603309207,0.367198620168463,2.90803812507609,1.49707046346799,-0.116443954666817,3.43105845482234,-0.280355047505885,2.46866651511155,0.224727551088066,0.546895603648603,0.302062824910078,0.254530188231011,2.55716673257507,0.785026788896134,0.998582335037782,4.64094459024933,4.55477900381237,0.0205787409641699,0.975297137713938,1.21489915377619,0.00857069579898953,3.64175001258079,1.0096523572713,-0.0417996924781113,0.199888951876984,4.55203127231422,-0.429332013093802,0.265954404299673,5.93139409814179,0.390518600567502,3.02970373696035,1.66843297013641,5.66113314287322,4.85615465589259,0.481350251560192,-0.338521947381162,2.28544733838968,2.3792940921298,0.29343662306543,3.67406368352521,2.76604801883043,1.3375986725551,0.473578470921382,0.900579775745857,0.269219440636882,0.0792757278678535,2.68456423489656,0.932706141291396,2.2046201667637,3.25032606390203,3.68171487998122,0.0271592782621993,0.613338786182334,5.80975863589641,1.11450588126944,-0.209065012997255,1.49296734179353,1.20870252630707,0.236431161038665,7.09790554307752,-0.733984746334763,0.685152760214678,2.79299026736808,0.342668919203031,8.51221211437363,0.291059445067614,0.219098064641119,0.444744825110108,2.05111206761543,2.8814051367687,-0.126486869029727,0.706591850157592,7.3405307724845,0.205279630613645,2.48521793474221,7.91710998846584,6.9135340635643,1.02620880315878,0.582566261904463,7.98896682498275,3.06605454132899,1.497468952718,0.0275574290580996,4.95574396665045,0.248849970260041,0.271940679499854,0.744834789980633,2.42302222627247,0.292197040405895,9.14912327948986,1.92121307061732,-0.28884440346678,-0.126475351219688,11.2985910813211,-0.572488231792613,0.460129372447486,2.62039026917902,-0.203021182805971,1.98577973708343,0.536813491035999,2.67584677207341,0.116322223694705,1.21650349895909,8.1304041113518,2.75748972902656,0.650272689613339,0.288440127000229,1.15039789850716,5.05949085779834,1.38982936581535,2.87841190791408,6.15243085384866,10.529698516921,0.787312264204531,0.7060228380621,4.38964338606833,1.08901519948613,7.07034583737542,6.64731427530316,0.470170999931257,1.21304014396633,5.90045925324699,-0.255672731240489,0.0324648967595888,9.98713480118909,2.82975734579369,-0.052708795375832,0.0260204023465667,-0.0047541839881085,0.847033023035452,11.0990352882463,3.81304628571727,0.574648645910451,0.13778043400487,8.46241379731384,2.18492032505004,1.93517564973185,1.5262369910816,3.87750369816144,0.0251537092621744,-0.197614820734747,0.772034518181753,3.92898407264001,2.08161373500315,0.315025608041921,6.61834887910569,4.69794595500503,2.86156529071255,1.71553617026509,7.20370413868324,0.5723420283663,1.48804811317096,7.49900022546931,9.06516860973711,5.48346457342623,1.65771738295831,2.65277099613358,0.358398849529701,-0.0516981084106244,3.86678829739147,2.65875034692232,0.951580773788933,0.356769385146392,8.34154984327395,0.398464464860268,-0.0178243816878802,1.77403541888875,8.88932469490421,5.72217832945561,0.657416342410409,0.0484599103874767,3.69281655603313,0.251003886295826,2.30584424175974,1.47464344096804,5.61955627787326,0.649830279901725,5.0907711322225,-0.135476307889519,2.82475237641068,0.22005477955965,-0.229315353544028,0.51503848492832,0.965416840202536,4.70898013301973,4.07728685445109,3.31489592513752,1.51304212895721,0.442329830804003,1.82092088999299,5.19937869501421,1.90039805412843,1.26053612998476,9.02551294415692,2.61627764894898,1.43447948116126,8.61207102331454,0.290358464207958,2.01032108929383,0.908490448983257,1.03521168149979,1.18906518905941,1.08310302874769,0.359187048620688,2.25399212273051,0.68587863316711,1.32872604917726,3.60360879936832,1.57262560203626,1.45316515847995,-0.145906615414534,0.428084983451897,0.321588846408747,1.61547139598511,0.111007487186387,0.633315780176171,4.4055899675927,0.000103070182178338,0.303685499812353,1.87047846818188,0.469197680131516,1.52951769534296,0.996903870974128,1.21788184489221,0.769888617003899,1.03121116711308,2.3216772266246,1.90640697399281,0.360311462127553,0.288989518351394,1.56815273016766,3.12343122565484,2.51300716492853,0.658485849290808,6.61140970154986,1.60731154365589,0.568735971969462,1.79017242644605,1.45492923685879,6.03534895980675,0.514516987504661,2.67316724284806,2.66727322720006,0.000743451835232746,-0.9001392087934,2.90537223738116],"Archive701_field21":[0,101.717197070824,193.60838265808,0,0.540133615455731,0.112549903883627,-0.593002272967779,-1.49427073842857,-2.62573607864001,-4.02605199366576,-5.33946470407305,-6.07075522570067,-5.9011169080282,-4.92472818111381,-3.26529346509195,-1.1258480966763,1.33851260331259,4.04406526573945,6.92218505387474,9.95073806672341,13.1203678143502,16.4359081252214,19.8894871344791,23.4898926830694,27.2378793485659,31.1331276210978,35.1607005020459,39.3253934971836,43.6230230203227,48.0255636150131,52.5256842594074,57.1218359275607,61.807057448719,66.5693889753035,71.4089425119251,76.3172487390989,81.2881455085916,86.3150881567515,91.3916252183917,96.5252004864006,124.771303195387,147.948193142463,171.19714639959,193.973010854229,193.892448465258,193.627126054095,193.222196027552,192.651626922956,191.89157359933,190.919449486701,189.71781237517,188.266946787406,186.546349683958,184.534839881409,182.213946223434,179.562808411667,176.557200218403,173.168122903004,169.360119579086,165.084953630578,160.28543974941,154.898285808465,148.868376193725,142.152996880394,134.737201623838,126.644142763662,117.939077234011,108.731599288698,99.1703447891096,89.4305499453796,79.6975532434914,70.1578983571376,60.9619770749208,52.1490586560115,43.6711411849947,35.4218760044663,27.1088374337221,18.3789670884087,0,0,0,0,0,0,0,0,0,0,0,29.3413115408206,0.327201789611731,66.875703580319,113.421358938708,149.919879261531,22.8021375633183,19.6659336922229,123.683298437946,126.45197979697,167.740221865318,141.816488294409,171.100994309438,42.1513452222398,16.6184254498723,152.966275685348,0.471854795253583,2.46376914741946,108.547827116821,41.7882397515741,98.0030778799171,2.68676888772365,6.90653071176181,0.285743296901903,141.052221395746,54.4112478439443,54.0372695516998,4.59030458312651,32.1817936918703,71.2690177547629,93.9684622642818,136.042502737543,169.713662078394,0.969252298173127,78.916082389968,-0.474114672955848,105.097575890054,109.83250926449,120.044904309375,157.526021865465,140.231909276854,60.1760754570042,50.5957738631055,131.074265154522,38.3607311644939,34.0298717964127,0.972275616040699,51.3692170363382,117.140746518328,70.1803328453964,76.8079324930587,63.9632984912854,105.046078887472,100.745512584496,16.3761196740273,34.8502412306211,169.381794365093,76.448773818974,96.2720425654735,164.259502199727,38.5826368020014,0.83966399376632,139.718931613262,148.796767599375,26.0127977574757,21.4543074564093,136.004092976437,6.81471296321385,129.294014562068,54.1981498853907,75.2823627825913,2.26179377816285,0.0611986001576221,121.156660154953,57.6440047264468,39.7154005403099,73.1432161968682,122.439323891506,0.423593856282913,45.7422820356124,92.7664483801099,100.291469206568,95.7427119072618,137.939444743779,167.028264699958,49.3434517259608,56.8673371216615,56.8756179216227,52.1777223683745,2.20229600357605,168.916922950756,123.402292379982,1.72391529016623,63.5062461321317,83.755668519533,84.1639013969912,83.4891927998856,113.212449849885,9.52104978572619,14.6402103633133,117.109522641197,53.1539230695236,146.488038042629,0.520326843555816,85.114958818624,145.769396257079,5.78035408028626,59.9703804639775,45.5578747233176,9.01725405690914,118.561166657978,12.7091606677043,149.782229852873,65.7928023002506,18.5316095274249,-0.0897243934206147,100.947137381438,108.125051611182,9.45680981168007,64.1385539740587,79.5097183842638,167.026385406016,37.6967772966758,62.3400662661653,117.139185139811,86.7902072800945,75.2386086037491,144.925195937827,0.769241306807553,55.8178229081273,42.1469168780235,123.549456520498,1.79460649634563,2.17208755988616,136.507523961486,71.0988969062276,92.7382178956876,60.4412501431786,126.821740183364,68.6686790304732,16.6345610619444,80.4617032340821,12.8511316634133,61.4666276427935,109.374793481852,1.41392284855852,100.720160322633,18.7299879319651,76.48980766161,0.364525083336131,29.5190814641207,-0.385493150991278,47.9516888854555,120.343656183106,-0.123659170456749,93.1807190271455,1.44784295494056,22.0322736346855,132.190672690942,97.4900103097669,25.2794538809753,66.8196097074088,166.002778416156,-0.983248008356281,47.34072633063,31.0687501822785,162.63612270464,155.234098238272,99.8657899137209,-0.799895987233017,42.0215760004441,107.489541306499,151.029434169101,21.1664372115434,76.9116625605222,92.432970133105,82.5694195295636,25.043619343257,163.620145290195,101.42994333357,86.2200691395956,40.0567716930197,42.0411268636718,142.289037054662,-0.211613001466431,50.6140792830555,64.2275505723084,76.822954914664,12.2085343762671,103.828092167195,88.8901903185963,3.14398300215319,-1.13865025237884,34.0473439096554,87.8560913284652,31.6735121447391,93.0277528086793,145.54762317423,35.2803495979742,56.0018816103104,91.7316384330985,128.09050580263,1.82847300041991,18.0764138515052,161.528161554377,84.354495000304,0.459306057451749,0.430108959294904,108.000514385814,168.421681593963,1.04638601867908,147.418596163742,72.8721158914146,79.332089162861,31.8435976179303,8.31351367859505,24.7092030273342,116.424873290265,0.131722763682011,142.838104989514,75.6364377437716,126.383199410575,101.183047710445,11.7423442347268,8.69103816395053,44.8314378030474,52.7294300625788,120.957142220665,45.9556888508121,5.24635870735311,32.5074794509334,36.67859060256,6.55100930456439,4.51039713046582,47.723349939327,3.89183507925917,40.489999976828,39.675131303105,13.1688228451854,30.7647699397142,82.4394178742371,107.28266866192,29.3597199605337,57.934260998565,101.52146505727,18.1589947772738,33.6971711767295,64.0340976784146,66.0809494289268,46.8405407423596,102.859431234441,123.249376149433,23.111000281905,153.168173615145,108.840616879213,16.83010296062,37.9041775884836,124.754713748672,27.6812389566671,40.7701707125138,78.3618359039588,104.227544954573,5.25790573046733,104.578546574509,76.4566448521664,22.7225022691823,3.39463838152629,133.383022239246,102.858581499855,0.982563075521998,14.8742583466252,2.52470721828413,119.187184645258,9.73440785318049,1.44562198827061,22.1525553683665,9.13664677305879,18.6991066246146,5.16089955787052,71.7645493531806,6.05439318339131,12.6397967522938,182.634134532095,3.58081147234927,-0.0967891861622624],"Archive701_field22":[0,-568.399571642191,-569.079843244765,0,3.06833053932789,4.21473993088796,4.22970598846271,3.1217090764468,0.741812608329618,-3.20526570542786,-9.00066963510674,-16.810220092823,-26.4365865374342,-37.5481162880039,-49.8603477992137,-63.09382819931,-77.1168472770699,-91.8470434947087,-107.231243270368,-123.24600282715,-139.881493861386,-157.124006666496,-174.984806065566,-193.416071168818,-212.41316399571,-231.933591536009,-251.958985886024,-272.457565195184,-293.374850108359,-314.710129178621,-336.407099103181,-358.450120510573,-380.811742690583,-403.470913084246,-426.398159798229,-449.572575743167,-472.972021006558,-496.57961240732,-520.380535189601,-544.343915193714,-568.440854703122,-568.60955652669,-568.889891152004,-544.87033700627,-520.481524433575,-496.356256276624,-472.520701097363,-448.977619269747,-425.750369947704,-402.873653131586,-380.380742202266,-358.305419005321,-336.683743084766,-315.550405701695,-294.942624061145,-274.895071347961,-255.445620306083,-236.635074005633,-218.508880906721,-201.12592250325,-184.556099005084,-168.87920784131,-154.182088772756,-140.549372206242,-128.053047577766,-116.741151962769,-106.629042882646,-97.6929012004642,-89.8631679945814,-83.0242183647014,-77.0032693486542,-71.5744922671993,-66.4653659849716,-61.3449625837047,-55.9085338325266,-49.8228695058132,-42.346270243126,-31.64768582266,0,0,0,0,0,0,0,0,0,0,0,-138.730459611876,2.31484262996912,-60.8131665884581,-182.010117599278,-199.990333777995,-104.283321696103,-88.9718377803828,-160.599676721232,-462.548914649093,-406.714355278458,-401.943379302986,-472.1624080331,-121.52921513774,-75.9399810800855,-215.638420638383,-7.17256178603251,-4.77502427037,-394.473445967692,-71.8872266140687,-334.775857989632,3.53643577430596,-35.0273951167917,-0.703030529258621,-271.629509123528,-105.803228835823,-51.0213642149573,-24.9278433746847,-26.0016362505099,-313.6205329821,-230.062848841513,-149.262805172827,-448.545467152939,3.42345101595264,-191.549483282817,4.55319124545855,-103.247062009133,-99.7296980019284,-425.188640399888,-253.14950922417,-495.928503690255,-61.6849195726052,-41.8229476752382,-136.504605942607,-173.763180733647,-45.911973790037,0.887958193112043,-49.2654946760713,-520.073905166026,-60.4429766903314,-65.6273027568204,-289.268867431885,-371.77946730124,-116.943543125866,-15.2473682666982,-153.656862398852,-429.793827178215,-66.6540368473927,-182.90924291838,-296.308216923537,-102.071985006833,-2.63242740715692,-164.200307969419,-457.716081890146,-122.080297760921,-33.8072890748548,-213.442011891249,-7.44010698249755,-390.416860658943,-72.1238585205387,-335.399848551082,3.25107199488585,2.59939112985059,-270.820346406008,-58.4868761674381,-32.057636137862,-230.092547760527,-145.323983954635,1.60622610283323,-208.808520526727,-98.3655032722995,-94.2312227028727,-425.651884014327,-251.510443414903,-495.986670795633,-59.4706826870085,-48.5824431117693,-173.159250054175,-227.841460415176,1.93719830467314,-379.620724308519,-345.485124152294,3.94750660721554,-53.2131434787534,-73.9245147130548,-285.58008489262,-376.135533659117,-119.385923058443,-13.8011275364305,-28.6922349538076,-239.074557613749,-150.898878729223,-434.240443311614,4.62080797772891,-73.4519585428287,-298.220620490744,-11.9313266340712,-268.334739901048,-134.348004143383,-18.8461247205863,-211.877635112566,-9.63610523376461,-386.69146109248,-73.5291139544415,-36.338532693968,3.93624460523126,-270.52349689275,-142.310843484847,-48.6591064250228,-205.754266802803,-94.6809361320313,-357.347573149896,-58.5638356468458,-55.896504836447,-130.249193944909,-85.8657714172157,-173.183787476545,-342.029892314221,3.1194120567238,-46.8590707523062,-51.061136419552,-121.517628591868,-14.3115683824138,-9.38781396028814,-237.487926191866,-148.912716728705,-81.1842899243074,-186.880876666313,-300.640664069126,-100.29540533617,-26.1711268149642,-264.713158727049,-23.2112413783989,-132.541317809475,-164.461958149301,-5.29087536656556,-210.906022526999,-13.420403133273,-76.1041832452644,0.793700797913094,-38.0611234836407,4.50324152827982,-42.7027672292276,-323.559027038118,2.38568627468443,-140.157798278884,4.19672354225226,-48.5359040863241,-195.143691070745,-250.047585308579,-58.9650165428954,-63.605612998709,-339.079420888824,1.0045647546121,-41.5362695452666,-40.1017424072969,-314.072467704667,-236.652100498234,-444.169262962194,3.49894547765143,-189.844099805569,-303.535007887694,-481.443066988262,-24.1803292212935,-131.470259645981,-165.019884579998,-210.497872415555,-18.6628949661107,-552.296808942139,-89.5748088584796,-79.8326300594085,-41.2965408210212,-35.3153696644407,-320.285328592434,3.5899089929607,-90.7014248794532,-85.9682645172713,-250.162939011838,-60.5688139604918,-472.465467977296,-124.130985672901,2.15314458191776,-2.58712179747435,-31.5153744215197,-306.867018745462,-25.1477451005495,-82.4852611194472,-182.739301334528,-90.2491176367884,-250.805898936373,-402.609598689063,-177.511428804121,0.492299291793113,-25.3153498930824,-275.864794386412,-108.939634685529,4.52791326053637,3.92670110174883,-491.33327916772,-520.096661756709,2.07351239622855,-364.175646658364,-115.491250715349,-357.529117169001,-75.6263842780351,-13.635803949973,-21.0425462840595,-109.355139378124,0.11706923324047,-519.973028911146,-68.4131599854163,-367.780617309398,-152.160646579118,-6.44800608660996,-4.12480971916515,-50.0370545045812,-81.0317080552465,-544.193511713319,-162.101079566651,1.11285408552964,-111.835226930403,-33.0790320743558,-1.18251468273029,-0.0259040277895155,-39.3304984172335,-2.80189652714369,-42.1949804208427,-33.5662803911467,-17.1478281897791,-31.0745468871984,-144.236712431432,-197.229380822407,-34.4688624071513,-118.939760061512,-353.162696430675,-19.5750480791056,-47.9512839639414,-161.875720221915,-56.5186979569284,-50.3461855712435,-319.008792209983,-443.792004427188,-21.4067404243493,-536.09227444086,-224.86744933583,-10.8831441261952,-43.6302662367319,-407.686987363795,-23.1153623530189,-38.9326757859963,-84.8762786469924,-286.897268051586,-7.60823280286217,-129.297914649331,-70.1343020285585,-17.259166210715,-3.30098466571962,-284.424180504718,-108.700293680953,-0.467135285799559,-10.0628597354142,-0.207500923041985,-254.78499281092,-3.52150126928937,-2.19148606119713,-25.8054619173227,-10.1468257961147,-15.3119621137174,0.730947789290069,-60.7974185645725,-3.76325484292725,-10.8008370031814,-556.901497784966,-14.7102452320455,1.73453636874362],"Archive701_field23":[0,577.429182863987,601.112363724922,0,3.11550904686818,4.2162424225708,4.27107298516219,3.46091210487845,2.7285116639935,5.14614641242279,10.4652729160005,17.8728164702579,27.0871978711986,37.8696974431447,49.96715345176,63.1038722328578,77.1284626447601,91.9360313619882,107.45443768979,123.647055771427,140.495467458835,157.981304421864,176.111538668755,194.837243987497,214.152409069045,234.013808392291,254.400482366894,275.280968114028,296.600355383357,318.353451635386,340.483015485261,362.97299215476,385.794888148493,408.925740512358,432.336243854234,456.004192212584,479.906548460483,504.025402040524,528.344897358037,552.835791476421,581.973266908963,587.541909677598,594.09104621287,578.367714424985,555.423531054051,532.786070659617,510.500372187184,488.564787885079,466.996524108085,445.822180448545,425.067473903576,404.75574923802,384.909708162808,365.547761131923,346.688727371385,328.344487415405,310.523605998837,293.229188587018,276.457919291436,260.201227164657,244.44299105443,229.158604000612,214.321977241921,199.90397832371,185.880866404739,172.241793586624,158.994901568821,146.172718483449,133.828794538445,122.028046360673,110.820591423167,100.224940235442,90.1887328018272,80.5153945100206,70.9431654756293,61.1312328148965,50.2801717430622,36.5973011186153,0,0,0,0,0,0,0,0,0,0,0,141.799340573424,2.33785316319214,90.3913765791751,214.457659159113,249.94420137788,106.74712483917,91.1193550570112,202.706227026834,479.522263964487,439.946984102628,426.228103857151,502.208014485326,128.631590350269,77.7370747512197,264.38345249365,7.18806577058513,5.37317552238884,409.135589194351,83.1506484147748,348.825856791941,4.44129542384097,35.7018007268591,0.758881516966928,306.069141514403,118.974396926484,74.3182757264886,25.3469578347912,41.3733360140313,321.616404431902,248.513553588907,201.957786577185,479.578735141069,3.55801445698876,207.168898741328,4.57780900003838,147.327717254709,148.354955275819,441.810093791158,298.159557259527,515.373717948332,86.1753407889162,65.643669040146,189.245793689964,177.947151351599,57.1484165290459,1.31673445548528,71.1750337169181,533.103011930632,92.6209077340456,101.026735872212,296.25627625286,386.334894872864,154.354949984587,22.3754225577614,157.559419509251,461.966369060385,101.425714917265,206.698082537559,338.791592987942,109.120621267615,2.76309784053669,215.599445705233,481.294597589553,124.820930731054,40.0402310560883,253.090113885405,10.0893758321317,411.269093524375,90.2180160438588,343.74480731237,3.96045202102831,2.6001114427284,296.686023141254,82.1190962244949,51.0392503356467,241.438419913965,190.027493661986,1.66114239260319,213.760039788511,135.20867641935,137.615050512981,436.286824518347,286.853261377631,523.355728750164,77.2757292265241,74.7940359254466,182.260697335686,233.739696662059,2.93306068109672,415.505500786302,366.862503910063,4.30751579703189,82.8533761332952,111.713230571471,297.723944595726,385.290001161989,164.529807103543,16.7666785708767,32.211490281056,266.216611787204,159.986909275158,458.283217996302,4.65001143989646,112.42662686603,331.940138234347,13.2577919934798,274.954503819736,141.862278871503,20.8922781838348,242.793909520388,15.9492096654884,414.686631640732,98.6672358660417,40.7910469346831,3.93726707996637,288.744327938384,178.727174652568,49.5695459924335,215.519308678926,123.63767623335,394.455449268887,69.6474684696144,83.7299415681202,175.175458379641,122.087963292027,188.821271231155,371.467037103018,3.21285912665539,72.8793651589577,66.2087777774151,173.294553477891,14.4236473210223,9.63581939021239,273.924842219557,165.015303365493,123.252853877636,196.411829537938,326.295207864078,121.550630649688,31.0102644375777,276.671541887816,26.5313646719629,146.100469679087,197.510964575388,5.47654452791229,233.721845435073,23.041694125891,107.900590283552,0.873406831315793,48.1666408557036,4.51971118894617,64.2097406629329,345.214483417731,2.38888898688401,168.305837144171,4.43945241130765,53.3024864991354,235.702002772989,268.380507915254,64.1554671436838,92.2525568555799,377.533807906237,1.40567670256907,62.9794097880303,50.728857487529,353.683507360037,283.022688005883,455.257630529649,3.5892134299828,194.439180929533,322.005438624356,504.576373541709,32.1357493374645,152.314913942152,189.143903614214,226.112943753613,31.2327795485134,576.023712283144,135.320655432511,117.503826085107,57.5321583312235,54.9056616616488,350.469487655497,3.59614052007562,103.867865564064,107.311326320338,261.693069180025,61.786968983736,483.739486866727,152.676021493233,3.81059847116828,2.82660991157416,46.3944010871024,319.195958585386,40.442804739844,124.330129472209,233.61884098655,96.8999809183374,256.982119388057,412.927575303696,218.900628214846,1.89358710017907,31.1066500597553,319.675979324369,137.78071284535,4.5511493657485,3.95018673727474,503.063119623478,546.686747965789,2.32257989257647,392.881844978775,136.559782755713,366.224862611196,82.0570820113761,15.9702742320314,32.4550992659522,159.72882529169,0.176227386757957,539.23526872046,101.986426419194,388.889824451264,182.731692684519,13.3962468855938,9.62019748168217,67.1830680974227,96.6774560333229,557.473953153924,168.48942202532,5.36308902610238,116.463960961439,49.3917135921246,6.65688094255575,4.51047151561453,61.8417838938971,4.79551920369131,58.4795389075429,51.969329639853,21.6209598943723,43.7275489101349,166.133942445458,224.519486136089,45.2779817549776,132.299074527904,367.464961618872,26.7007789890174,58.6073799030834,174.080769939854,86.95432764489,68.7660865442461,335.181550955814,460.588484348801,31.501855018803,557.544093434567,249.823236816453,20.0423349871367,57.7955604743773,426.347766815167,36.0634297715493,56.3733985474091,115.518656515737,305.243220305908,9.24828519526886,166.296792321146,103.751813782138,28.5340310447381,4.73498358018774,314.146693564417,149.651734485397,1.08795476588794,17.9584160609105,2.53321992158582,281.284513518471,10.351795372865,2.62534456584136,34.0096688327736,13.654171084044,24.1684251106816,5.21240529094737,94.0557103422271,7.12865792641999,16.6259598793149,586.084042890971,15.1397993905939,1.73723474552297],"Archive701_field24":[8674383.37650468,2711494.53968711,-72839.7142972416,-842135.288542621,8821776.34107272,8773086.07411412,8629017.47845514,8465642.27388863,8311907.23986457,8157298.56554483,7993039.70042589,7817975.82055532,7638399.97669869,7466070.00311,7283837.25795772,7103459.01121161,6923483.88699506,6751537.14156332,6579393.1147031,6407128.93070813,6236243.52660061,6065061.52498711,5893888.53006115,5722767.52347321,5548113.2048513,5371492.19937626,5197488.06094279,5024573.95929188,4844346.52067476,4670413.75811641,4497266.91837941,4322874.07700235,4148453.24804936,3970303.74294477,3791923.62513319,3616745.97586729,3443896.49150362,3271271.31222487,3096941.63787908,2907409.6809358,2015071.12505066,1276504.57013568,510373.084880379,-97614.6530551152,-124814.694454726,-129813.923252377,-135984.549098298,-143028.190849276,-150023.49570335,-157085.77126409,-164012.733489589,-170993.009178305,-177907.023843768,-184762.00466748,-191540.920883829,-198269.105733339,-205075.068826898,-211964.62113331,-219108.357672118,-226657.360571038,-234557.902993798,-242824.084516205,-251144.295747227,-259321.743295599,-266990.295600289,-273750.3993847,-279287.351334334,-283310.420661799,-285690.172341706,-286263.078485056,-285032.483014932,-282084.087975214,-278204.121286574,-274308.128802631,-271200.816804058,-268912.497799116,-265298.416242025,-197584.05793544,39124.1111095533,843084.189297047,1626254.38237723,2410450.98158515,3236200.46521653,4023160.47978383,4813480.26971343,5637940.28889198,6488073.13212351,7347793.88769225,8168633.42123301,5353633.5674264,6110113.45046486,2625025.62647265,1905186.867684,464089.610897084,5644247.13578494,5793038.35803875,1269253.01024336,1931680.56776971,601619.2088077,1429219.18795121,551640.172793617,4749032.19213287,5947181.05663645,470366.849056196,7159906.62636804,2357663.31779985,2491893.40243794,4598878.1202331,2821658.46540816,5884444.65370235,6520224.25623812,2711066.110985,1230448.5825987,4139016.92154992,3352199.16639352,6703611.23221038,3924144.85563938,3715264.67465469,2850513.61107513,440287.192340629,579569.619201306,5967677.13749491,3342669.9581701,7904889.71708631,1227627.64954819,470049.194809926,2129435.88173755,533380.20944489,1508076.07082857,3275402.50866006,2460090.09046345,433223.716003011,4960697.90364556,221072.210747049,4250311.1683097,1142848.2268087,2194600.95680789,1192197.25150325,1195239.25902868,3979383.57715887,2600801.41259048,1873441.36575598,5346195.5762206,5100808.8521074,573879.463421285,1894005.38925887,2620730.43937693,473826.591282872,4880326.09223123,1996939.75256703,512915.075460516,1237123.16109469,5502580.82639563,596333.139409504,1160365.59587858,6195856.82371085,1823668.48058691,3896583.97197597,3579289.93552714,5438670.11392832,7019734.17116466,1947253.17216372,415964.941341782,3219733.78481745,3625090.73116401,1132503.69171027,5323257.1123209,4665171.065945,1981887.19585083,1222609.27000173,2890793.71029824,1272913.24822306,688150.380042228,3994011.59680447,1772506.36502476,4190750.86558662,4408114.00086749,4743552.70354691,524748.212894121,1983510.27155181,6467939.6418837,1934886.32619995,452819.28839906,3271069.56010268,3299703.33282184,1158490.03130493,6086261.20812924,189978.181919275,2009854.6228796,4313630.04577747,1299755.02447439,6924250.11569034,1164695.71259928,1140360.34488659,1577566.12451512,4123487.22022385,4616032.87598241,966845.470053607,1851609.75722302,5450940.16496162,1159231.65069041,3195648.61175872,5700974.70534863,7516686.17577795,2666561.33313965,1825659.78101925,6356704.66817584,3941199.22964585,2737736.07234432,546666.999340706,4714739.29407691,1085625.78219172,1164026.05304016,2034085.08283121,3444640.17817378,1261066.91323227,7006930.10680335,2679072.77008598,258604.580340475,463350.755431269,6955209.59790346,496933.36312067,1267732.36849931,3544998.72715927,437847.41204873,4065283.74737647,1808507.55327521,3399487.03129938,1163311.7114559,3388603.35039996,5959802.72305859,3911740.10580954,1963604.73322144,1295296.25264332,2544823.50330778,4716367.98096565,2495582.23132132,4534512.05183395,4937962.58345199,8031917.95761502,1810571.82766036,2063480.63076837,7789052.36344066,2519548.08928326,6189822.69882798,5573381.44217129,1196489.87395818,2758591.60986134,5438921.93151297,400234.040727418,540846.771260835,7686585.34410478,3425486.15656697,782443.248387866,590582.179146225,527406.032952836,2757440.03087774,7918909.87358744,4809206.90475354,2479042.3585329,1174922.54888452,5244740.72149442,3212797.50626822,2701087.90636701,3241618.08099631,3992959.28321153,788207.212180813,424183.063025364,1797327.24993751,4183022.95061393,2509003.12910886,1311951.3091089,8201759.10418177,4252829.42491303,3492949.87966733,3507821.65052278,6193020.84724506,2624380.26806603,2591977.17099777,6219980.92804854,7537742.55682702,4268460.0910359,3153977.41609171,3277323.8140011,1134737.82637845,478255.3445042,5014563.76674863,4269520.54956553,3020326.29117545,1232928.0952124,6755577.45206641,1539322.99608177,491745.876695837,2664824.23952879,7053221.89605462,6752817.35053292,2491192.0852202,657751.361742493,5038743.45055209,1210159.93303046,3305855.13865369,3441678.03047638,5147815.73709918,1948870.64251215,4633775.47107508,475625.790536275,3747829.65917705,1428674.41297144,451727.727538716,1903592.90256079,2241089.86299961,5207189.84832944,4138439.58144027,4090092.6982881,4075728.65323241,2082744.60120909,4631167.53539741,5384198.15670763,5182386.1083357,2268227.00640862,5702330.55678741,4431398.79951156,2951368.08868691,6456999.60546257,1286133.25903446,3676657.1700433,2222531.27130153,2027324.58132749,3031482.91749672,2235624.24830648,1421335.50711032,4024949.76038517,2711615.15952715,2489167.2242513,4827858.12737591,3878343.51931417,2288131.02433758,697901.868750792,2650970.58491302,2030765.46921382,2753762.19563299,1110327.71725903,2277250.79196407,4175403.36348543,901638.074714016,1976628.01409167,3016313.35161369,1747923.35333016,2616953.04211163,2572820.67449411,2617903.12562831,1849432.32778805,2211656.59816432,3566921.49950791,3304090.58916049,1543490.97677675,1569732.23287988,3598205.85954101,3853084.30557103,4011786.11401743,1978486.72254512,4911367.99532893,2969698.76428976,1969372.64184614,2894989.80402323,3300485.63017636,4904604.65498422,1741017.13582264,3723083.35703436,3305856.19588755,229520.418539865,-73281.0087254175,8460901.80700758],"Archive701_field25":[0,-680280.737571114,217137.629335292,0,-9982.99767325759,-122224.619789721,-262917.686313634,-402882.315490532,-532002.200455011,-646546.783885863,-746280.346956573,-832217.344907252,-905742.628337871,-968294.532526157,-1021217.72764533,-1065599.0292662,-1102358.15188973,-1132218.18497763,-1155747.46078069,-1173402.55930134,-1185570.5111791,-1192576.23612003,-1194732.53856236,-1192299.73271871,-1185561.31069135,-1174749.74820908,-1160137.96628143,-1141933.1736342,-1120436.90403119,-1095798.30412267,-1068282.42614323,-1038085.36828106,-1005415.14082047,-970460.773022891,-933409.984385128,-894433.402840101,-853723.969699121,-811472.741265276,-768013.077055409,-723992.762406328,-452116.370952092,-227137.585214082,-4679.70724425616,223001.213914147,228312.210441336,233123.898428578,237520.651529342,241625.909385296,245385.588188786,248781.657111468,251794.997064911,254401.947473704,256571.050236015,258202.141964208,259336.44088187,259894.475024902,259817.211628654,259025.54840112,257523.315648853,255223.565025382,252125.706054468,248150.885017737,243204.483364344,237200.609477826,230153.249176184,222054.830623489,212911.441827706,202784.954749708,191724.453119211,179807.347595687,167187.357587049,154121.272765204,140825.813054088,127364.508300131,113816.561159424,99576.7374704127,82403.4626033462,57532.6534383423,0,0,0,0,0,0,0,0,0,0,0,-1014436.18353638,-75163.6934609589,-259642.112931131,-266402.602162801,83933.5413780723,-979932.944209706,-957569.057508713,-100951.476780821,-411475.730961937,15646.1351846119,-236430.696545535,19891.4998415543,-837895.014788196,-936609.93997251,81161.0098145609,-646138.234686964,-48424.7335714265,-556374.680064229,-658970.505504526,-621192.943905927,-271587.774591636,-822244.842746717,-31476.9432615489,-135273.30572971,-665176.980603959,-358589.541833471,-774491.455077251,-346038.64201821,-865340.907255881,-548493.484187198,90643.874087012,15223.4102835586,-138017.970570057,-633828.752852869,-295177.441650889,-62692.7539897953,80086.8615035844,-459317.187996981,60331.7887607674,-288001.664783427,-378389.768638785,-176406.417443671,91500.1190124303,-1003304.43344861,68586.4588119978,-97278.1728198373,-7487.28261827022,-517929.373850399,-24628.1685975627,-30027.6011398769,-914732.123517775,-577664.334680583,-204514.443989239,-505954.248546596,-995087.073149834,20203.0820984923,-145113.020539554,-443665.4848742,71006.2887673539,-812493.140408893,-24042.7642948997,74105.5736738087,-192766.030879466,-1002698.31736081,35659.3330009417,-95830.0075793702,-555855.292339028,-352436.213570061,-524810.240395988,-843409.83042045,-193402.558611565,-72417.2129570424,-333368.510932583,69541.0596278251,-260230.260657666,-753748.178874668,-63000.2484695459,-69692.2938116963,-992699.758449319,-206346.848593033,-56274.2432555272,-695493.105028217,-139640.050776069,-27455.6939816816,-502708.736944727,-89984.658044909,-816913.203482992,-957621.213059869,-153654.721970327,43617.4502117569,-381386.552442776,-315103.006499157,-125280.528248774,75830.7283023573,-712965.244543908,-790110.012988442,-57266.8109369809,-604631.20575781,44072.7730647186,-331784.44636499,-804954.834397109,-206043.64289718,-219025.19230896,-31757.3688750614,-118700.893681451,-22821.2301591114,-931981.680116034,-839393.738786198,8395.45278817567,-273107.398335647,-471468.971820197,-149960.404326233,-395474.53341467,-702447.163067849,-133288.629828763,-532366.107990455,-216895.924270558,-878169.228863763,-805024.429451616,-351355.26082245,40644.1152950372,-632166.894856852,-5902.5301089474,-63452.0210524614,-200059.81157682,-634343.34963252,-167306.771304994,-406267.834600983,-228943.574054738,73349.4377572077,84086.7369758942,-712116.854718323,15054.3221075029,-132939.311599755,-620852.348671049,80876.5732825505,-808325.428854808,-309667.568718534,-497167.430869266,-1051.69176036226,-726515.129612395,-661827.458572754,-675209.633564173,-267047.452734838,-8502.87430498593,-451185.745438808,-390732.925721943,-270081.814045911,-61813.5204846058,-581814.02963388,-190760.320183434,-81784.544857421,-394191.471200766,-60945.5015266482,-371704.471599877,-210656.248363891,-744231.359316555,-98147.15724271,-541387.727365081,-768018.876838677,75716.9353449086,45315.4309171414,-515370.907406428,-336117.975027254,28003.8388313778,34919.7863015307,64086.1356166467,-662826.192847293,-405296.897932546,-997392.548560815,-502344.441723513,-178963.089070506,-554417.386412772,-515644.665719975,-443703.494447011,-630725.80370336,-312286.12928504,-74582.5720810443,85690.9418556792,-147945.973722393,-466257.148560157,-160683.373812429,-175080.0713561,-96314.5711438604,-648891.180970632,-483520.245588481,-744591.331423684,-911862.941072293,-634107.541629948,-367014.235172197,-380283.952305599,-597890.497129772,-434131.234780997,-697197.463262469,-235234.139465005,-33025.6265701725,81427.7297061416,-803604.858662678,-950485.715253889,-723972.88890256,-99864.9970912144,-483084.980334394,-26990.3361733899,68728.9915461497,-360265.733586669,-296640.892076644,-142392.44043848,-599207.415024933,-20181.4340517452,-109877.960619925,-158916.906369364,-507831.802287911,-819241.09606125,-779403.372132385,-45184.5456382042,-433744.449892763,80446.5973357226,-46615.6781644724,-268662.634749521,73195.0275605832,-367438.272206439,-321118.586196818,-399703.158030886,-212087.391792306,-485864.302487933,-585642.091451188,-485760.600064367,-902420.874222657,-301598.806165638,-905722.045935725,-117801.007146108,-396624.861387015,-187396.916028576,-247158.995557448,-523588.89949395,-17049.3100869888,-343838.258332037,-71246.2974955356,-81271.0431371195,-494285.81018134,-360604.781898083,-23467.6834713255,-671577.85906431,-600057.402122644,-102998.991029946,-608904.682583438,-721662.055348095,-190907.013939348,38286.9334272631,-561274.212065287,-435765.815957971,-140803.466131912,-172054.021225169,-392883.551181615,-283410.522835158,19097.1122886644,-405544.298495182,-184871.263187396,-65161.3493600195,-309764.000723033,-517958.923837037,-75989.7651249475,-210990.119344465,-206891.093868989,-235596.991296511,-103730.743442734,-227504.861957019,-134388.240849913,-82081.8583162042,-228021.72861533,-129519.187832556,-332858.301766273,-318021.655996641,-65914.803712835,-64282.7113434749,-110187.213033925,-184947.156366459,-240745.557050331,-109475.392083655,-153476.098362388,-159019.257530667,109217.585360427,24426.5837477501,-25736.5718500832],"Archive701_field26":[0,-5744305.11723336,-5748419.90625926,0,245234.905955799,351855.531119853,387611.169678548,368483.490896213,310183.805910252,224309.352477378,118600.418026477,-1617.44546814441,-132933.5843715,-273097.97217398,-420665.403455111,-574772.042000828,-734849.835923569,-900528.314794611,-1071537.91668272,-1247653.27815074,-1428664.42158466,-1614359.93654608,-1804504.36158743,-1998874.72026935,-2197235.86254495,-2399363.99568952,-2605018.12894059,-2814002.92305642,-3026023.10965873,-3240959.14950101,-3458567.69989315,-3678656.06996389,-3901037.6827265,-4125541.5552795,-4351988.69234918,-4580196.92209566,-4809989.05390877,-5041179.94697848,-5273596.38829898,-5507341.82667191,-5748463.87293889,-5748680.53393049,-5748437.30510671,-5510195.00800127,-5272569.46887136,-5036414.11570795,-4802169.04261333,-4570045.65680856,-4340291.31199321,-4113144.73979577,-3888819.38107768,-3667607.60588097,-3449764.26280635,-3235542.49982597,-3025255.02441314,-2819209.43196909,-2617710.16558565,-2421080.54596942,-2229669.87664433,-2043808.85300019,-1863892.01234561,-1690245.2528035,-1523310.25479567,-1363480.41528368,-1211192.77980181,-1066838.1899642,-930829.999614024,-803535.376097029,-685331.920721935,-576466.695801776,-477141.42199852,-387374.179090326,-307023.761086468,-235833.47334633,-173294.923248018,-119061.962505211,-72681.7089776521,-33714.3950556373,0,0,0,0,0,0,0,0,0,0,0,-1475905.36799738,15843.4834391695,-699311.250834345,-1955967.42629228,-2076181.18773974,-1115348.8537966,-953183.23683851,-1710361.96140897,-4720596.17434527,-4165510.23205862,-4128603.38063174,-4807104.79524119,-1340128.37591379,-812891.526060159,-2239450.56877194,-10435.7161972906,-47954.0262186959,-4057883.91708508,-858500.501816191,-3474952.55512894,13352.7664413778,-362507.408178395,-21333.3594117866,-2838359.21516852,-1206837.83206103,-630140.075637022,-245821.650064018,-361544.714352979,-3255765.98713374,-2449034.80421202,-1532534.85106137,-4576154.42269756,22562.1297799821,-2067281.92811527,247971.272379718,-1084452.48965763,-953823.099242242,-4357489.58441454,-2628096.28417593,-5044347.54625404,-748713.554997397,-428189.208938326,-1389656.83434405,-1843977.15632047,-135711.641215867,-28337.896262607,-316232.545809127,-5277381.55319692,-508359.626953401,-589756.572688427,-3012150.62344079,-3836610.4163291,-1283846.67893414,-253313.24509495,-1637892.06473083,-4392085.28494013,-702610.74665376,-1980059.44592649,-3063637.91435828,-1142709.44054433,-26030.421663235,-1700565.90682732,-4671700.41653077,-1301512.63296571,-88957.0802436838,-2248848.76605664,-110322.317439489,-4018417.59126723,-872424.879376974,-3470601.59237415,-5063.91184916323,40859.2848081894,-2844787.02226914,-318526.106139657,-383576.516623386,-2442687.37382964,-1541639.94951283,-753.283819707958,-2202375.00554607,-1088760.19965997,-976984.782199424,-4357424.28309623,-2637732.83174074,-5041050.12941002,-741270.904894336,-423388.152055767,-1869940.00548765,-2398784.02697527,-30926.2726503602,-3896671.5067316,-3579990.41926715,64922.9340840598,-520002.748550484,-583093.637370083,-2990678.78913538,-3871494.93788001,-1261853.01500642,-192187.668831127,-45178.8198433298,-2530623.97882003,-1646729.25762191,-4443155.43054545,106058.835016616,-699539.136386324,-3101706.02011788,-56333.1942083568,-2804015.05362988,-1472183.37371152,-54283.5122941551,-2255415.81312341,-185176.758265021,-3976474.3325081,-876072.250473897,-451228.568543898,120089.733548184,-2847106.7515575,-1547588.1190148,-510647.440808365,-2197255.66935539,-1086650.12764278,-3676304.52213182,-722402.280703235,-413136.473302714,-1381745.75513825,-951383.978622051,-1884872.37475215,-3538348.59561021,113245.398760253,-524905.865097787,-189725.011250686,-1220258.51020035,-109287.4070272,-20388.7706327964,-2496359.65584443,-1643537.33394,-692404.816698755,-2008595.16605743,-3137729.53619553,-1158225.11191154,-92872.5350398914,-2785280.17442857,-299952.979344745,-1476165.60804813,-1779893.44444473,-24756.212020189,-2257909.15667154,-239164.593242967,-871248.222784232,-12565.5252537674,-508193.866255749,239984.897388938,-338889.715299829,-3365573.32273836,69545.4499046473,-1548921.15812676,42796.5850467452,-579503.981552452,-2063454.80306382,-2645844.68328158,-689966.214024617,-400176.383026336,-3494373.2334741,167845.481862945,-520787.882575794,-147446.181045302,-3245793.37822035,-2458976.01891252,-4538340.65277489,244358.547779646,-2009546.20710197,-3170783.64465134,-4902433.87741707,-353583.120343778,-1470911.98437497,-1802321.60959944,-2254947.52466129,-276272.957868783,-5589462.43460687,-810993.468243692,-859660.96036647,-547970.299798618,-342014.642370912,-3324314.15694961,189555.088667493,-1054629.9215853,-1012817.00216075,-2641190.40125832,-641592.425452909,-4813719.52654736,-1387619.76410308,16328.8545939013,95668.208870832,-440093.454354691,-3199814.25263754,-299840.723882128,-818529.100267668,-1895715.82815,-1020085.90420574,-2628307.91158571,-4132358.39874186,-1883855.50442008,47779.9209371215,-116052.084136078,-2857533.97679268,-1233399.69198561,134239.939439569,64322.5804563508,-4997484.66822635,-5275664.86980888,-10219.6757664767,-3755826.69292219,-1311056.50828576,-3688358.50802535,-870100.658911751,-79244.5945854872,-326907.286247307,-1075709.88761981,-17866.8195207574,-5277659.51211342,-492627.821089012,-3797691.36025654,-1663461.38208764,-154005.019084972,-110956.411112451,-641823.217560818,-961566.282215859,-5511577.00687408,-1744853.35192835,-48750.767979526,-1221490.92410482,-276001.594628778,-68397.3783014329,-65320.9399772594,-452637.745227781,-28301.1264412053,-239993.741980964,-439186.161675452,-115181.39539875,-216604.857042844,-1597661.16616047,-2117138.82903006,-173383.517138337,-1339302.11965105,-3654774.5982094,-154925.531967403,-612229.07582488,-1766736.36751792,-612135.834854896,-248978.178942948,-3321962.62655233,-4538371.75670277,-198742.030576833,-5433495.75095764,-2393478.14086195,-192606.913154822,-197358.344664945,-4187220.30232609,-246911.251802346,-273248.854521742,-976203.838069411,-3007779.12878865,-74759.0160016516,-1413196.79606247,-779011.889564052,-229584.235579213,-66333.0299353364,-2972999.10316941,-1174778.8801396,-38227.4531622754,-166182.300432012,-52354.0869568909,-2686275.38126072,-119647.256486342,-44504.3043883228,-157945.389558749,-106815.595161855,-185323.587517705,-60973.3282260546,-602546.517436872,-89054.9556026982,-138753.972439173,-5629288.52281274,-15083.9972805757,97015.2515822099],"Archive701_field27":[0,5784446.65994801,5752519.46270077,0,245438.015274109,372479.76114465,468367.514496988,545980.075825183,615824.922147474,684351.831561787,755645.694363223,832218.916688583,915445.818518087,1006069.9797358,1104465.94737961,1210728.78525244,1324838.77373612,1446675.24487732,1576053.83790965,1712749.91421843,1856518.10292259,2007086.46641924,2164167.69906764,2327461.87938126,2496678.00428126,2671513.53257447,2851673.11466738,3036877.31461387,3226793.25586622,3421197.17818959,3619795.28105536,3822320.20020842,4028517.66875152,4238146.67470514,4450961.66881776,4666713.50709369,4885165.22905429,5106073.1749197,5329227.23790308,5554725.87224848,5766215.92652984,5753166.02957087,5748439.20994233,5514705.66463971,5277510.32869771,5041806.61042456,4808039.47298031,4576428.78076356,4347222.4189538,4120661.59292713,3896962.52216932,3676420.25638995,3459292.14908991,3245828.64832618,3036350.33425101,2831163.53456524,2630572.46516209,2434897.37869917,2244492.37399415,2059682.91145658,1880867.03552889,1708364.09361701,1542602.5259587,1383959.16558214,1232865.95700846,1089702.7444993,954869.504300245,828728.446785939,711644.649726447,603858.040948379,505584.364002398,416907.809167291,337780.253262422,268028.254341083,207329.062163734,155213.651335325,109877.028850134,66683.3310927399,0,0,0,0,0,0,0,0,0,0,0,1790915.24806489,76815.3421015635,745955.931909412,1974026.06850962,2077877.08098739,1484678.96894005,1351109.46369569,1713338.62376909,4738495.59653841,4165539.61629598,4135367.61955123,4807145.94995792,1580510.08213685,1240173.70267061,2240920.78384915,646222.502313976,68150.8873900187,4095848.46755276,1082250.08142459,3530039.08391333,271915.82462092,898609.037572954,38025.1256524319,2841580.88070269,1378012.32520583,725026.188793322,812567.103461538,500457.113293821,3368802.0198206,2509704.47950304,1535213.13882705,4576179.74434955,139849.954953464,2162265.81581799,385511.963478671,1086263.12821869,957179.403264388,4381630.71897561,2628788.69512831,5052562.431709,838898.566244664,463103.900616849,1392665.92872032,2099254.99623304,152058.38317526,101321.662401267,316321.169746711,5302735.7933731,508955.849759752,590520.509262307,3147981.29538441,3879855.09655282,1300034.01986657,565824.444296007,1916478.20203052,4392131.75060971,717439.649060091,2029156.09844866,3064460.6643483,1402116.24650763,35434.9737816457,1702179.79059585,4675675.72918341,1642966.53934507,95838.1456182936,2250889.63810915,566697.555797205,4033843.23225898,1018111.4666776,3571612.45868583,193468.842144455,83148.8658221046,2864253.43958113,326028.893300352,463519.937723165,2556336.81728829,1542926.68822636,69696.3647061224,2415762.50394764,1108141.5948731,978604.136054635,4412579.40915044,2641426.47738372,5041124.89652426,895655.41847489,432844.967609254,2040593.73863295,2582867.2431571,156736.109189372,3896915.61537287,3600248.20039241,321721.761891997,534881.359984015,588003.817416468,3074488.42243906,3951296.86136782,1263151.81950377,634440.694649142,63115.2524200786,2552281.06622853,1832940.13359065,4447930.32350596,243352.648128305,700259.61886574,3103976.50400197,60780.2378712981,2954841.83553958,1694669.8010368,54928.8934396841,2271890.87350444,506530.772205141,3979300.9737844,961198.571903824,834888.75784277,179408.48069504,2896451.36808841,1562713.29042821,1015845.4623255,2340084.78661101,1142041.60134983,3676529.18981408,959947.93510804,413178.636227348,1383201.89806775,972191.032146911,1988752.21038892,3542301.84199219,421755.941003491,572661.616764223,203410.225685366,1223152.24361141,720454.129080156,25344.3205084144,2499896.87625236,1756892.88430028,697112.222166248,2165143.07611358,3152973.30236554,1260420.90754622,92878.4895457214,2878473.53359737,726627.397459426,1623259.97660324,1799815.27262925,26175.7312225454,2302546.9238798,458117.803522525,912150.016161274,63077.7594688005,772507.974572935,306565.247102905,348618.632481878,3388579.45261662,92471.2050249941,1592897.03631468,214959.537277164,943241.846413374,2065787.6436754,2700665.61413866,1032427.4171466,407276.554481186,3494667.04896181,542014.093896763,619834.906869725,150081.948595219,3245981.21460591,2459810.98752834,4586488.24729265,473261.74084403,2243449.98928047,3210330.02342733,4905699.30893611,657571.031409392,1558676.19699005,1856134.68676538,2341495.9701937,416952.483855654,5589960.00593381,815508.027581609,872298.674720344,719490.91588764,377879.825097672,3328921.39370722,212620.855643013,1238266.54491046,1122314.62066563,2744139.75346198,1114959.57940167,4855305.14536577,1435335.5212453,380634.359817287,605496.038588725,618184.582126017,3274888.63232965,381103.08325701,819195.080548798,1897463.82739264,1298597.71323744,2794892.76592247,4195297.68663897,1886500.61732772,485442.086215688,119149.336880572,2858360.38714567,1284938.20823685,325601.25950734,156246.604604995,5033279.50101902,5275703.47051612,110352.199809363,3759187.24332759,1405973.79325983,3778246.21447552,1168137.30919357,91221.4280503719,543141.437946281,1078713.77915828,49922.3866669152,5284493.30940174,498035.824183866,3815425.34347735,1694172.63467982,428345.842098679,239358.281503311,804985.194293787,1125871.38447238,5532941.75491465,1964402.36559834,305513.464939161,1520648.71096662,300089.915729046,402479.169683076,198455.106602309,515721.337051179,524353.210566243,240598.576813055,557771.666992888,135435.55202688,231349.619725528,1672375.45545366,2147629.53744694,174964.499778585,1498247.97296282,3703707.09554074,186039.54581908,863475.161054111,1908442.69351732,641214.292015344,251904.789277636,3369045.03284536,4559244.46025818,243565.208501878,5436219.15138587,2425509.24458619,342664.482327432,198280.145013698,4206813.52549097,308451.860456547,280910.907491793,1024171.69927966,3052051.23390139,106599.037881586,1428860.39026289,806017.027614468,328960.276529644,123126.512155525,2981691.15262802,1182440.53402308,90547.0575994349,282153.266324526,139700.287894817,2706819.17996422,339784.107438171,79532.3484978914,170525.696188385,153462.677175804,261821.089178224,248346.874339977,612410.946299274,177442.097276661,211044.519315843,5630347.92477545,28708.6218329314,100370.962783835],"Archive701_field28":[0.522364401513378,0.187191530092788,-0.000137627366721375,-0.533139564973435,2.95053758973909,4.87488801917986,5.99058196243668,5.64724104742387,5.62111432939372,5.1546209329499,5.50681813686125,5.69456263827445,5.7477996438373,5.04424079204463,4.81481341935113,4.09236831274913,4.17349350465057,3.64868122401271,3.43473282275978,3.14048036426622,2.68769228625514,2.53500471467054,2.50681679817983,2.07063001267809,1.92963415468023,1.84704216009448,1.7289359248454,1.8098264402901,0.85055772897545,1.24837510600306,1.0586632547878,0.904818255201005,0.747438062694697,0.774469729516242,0.637268850609491,0.510863788168543,0.47196290942684,0.346341851054577,0.369564735297306,0.320083250745003,0.0867948787102957,0.0622098837513744,0.000989510540157792,-0.00093661005050355,-0.00875789550742401,-0.0151093750135268,-0.0196360485768145,-0.0232156093442557,-0.0289787010806169,-0.0361209709777673,-0.0393547551681684,-0.044053054223166,-0.0554074543621332,-0.0594204053522062,-0.0663749803955615,-0.0798430621905217,-0.086541034765293,-0.103715464643631,-0.105681074137737,-0.122160918853401,-0.142826258543552,-0.155195880637649,-0.160779747923813,-0.19013264507622,-0.207284139728235,-0.220343870722405,-0.248004218318665,-0.250973974567562,-0.268949037314658,-0.275568555551563,-0.287003817395335,-0.281455781164894,-0.204229075444315,-0.378812051941924,-0.229775675669526,-0.313291816561811,-0.443513349796379,-0.490251300488906,-0.510373175217761,-0.0661852151283497,0.47881027970508,0.792810583227133,1.2052602987697,1.47835663583327,1.85168828316667,2.06972235447126,2.26561836721577,2.02212361133959,1.38869168742381,4.42050430319619,4.56160143505667,1.3692735866642,0.851373521786736,-0.0424572562278282,5.78437550877122,6.1380639181447,0.463653688942887,0.534393837175811,0.0794600843045522,0.21211442390726,0.0374542820906999,4.50433556252973,7.23034107287856,-0.0522753880258347,9.47966376636989,0.999608644616654,0.839861321280402,4.04064969808163,1.18383349025432,6.30397477693389,8.8883146586765,1.79608776909977,0.349121464476146,3.44894823896201,3.35811169790098,7.8525454821981,3.39848191493984,1.61055096213998,1.58681817229619,-0.0956399008354936,0.0401345860029407,4.99406103653351,2.24876270247835,11.0007396585565,0.267098274583218,-0.162710388299986,0.534061211793848,0.0218170196512294,0.367203740019424,2.90836025123177,1.49759070546854,-0.11678454050796,3.43133095757472,-0.2799979580169,2.46934444851516,0.225216088315358,0.546736157550021,0.303497729380305,0.256071693853989,2.55716273371388,0.785086274684181,0.997939933304602,4.6407551030787,4.55506005382658,0.0205768290341937,0.976072069928643,1.21471699275509,0.00837911526473563,3.64176840717232,1.01012491681249,-0.0421282978939333,0.199957118973038,4.55229346260642,-0.430292576329199,0.266366129740722,5.93150888351641,0.390436630938703,3.02973148664702,1.66845796323425,5.66320505574983,4.86499892726795,0.481346519874058,-0.338150355364733,2.28587623307645,2.37940084730956,0.293157816981304,3.67584216424089,2.76620962695728,1.33713898980153,0.473921103252259,0.900572987272569,0.269239107605061,0.0794311448851525,2.68480213308518,0.933387431516205,2.20463966667609,3.25041541499761,3.68306925380508,0.0271059161928715,0.613441413033949,5.80975046967788,1.11524488214701,-0.207555310056931,1.49299165507445,1.20874744055427,0.236538463710153,7.09760188345769,-0.733457034329391,0.685173208764098,2.79309300187906,0.342678821497738,8.51488760339609,0.292737320124183,0.219053653707257,0.444148935210786,2.05129585047357,2.88159056444975,-0.125346533010836,0.706462574325978,7.34033163181585,0.20522624681365,2.48529804354929,7.91680372889256,6.92219625006608,1.02623004430062,0.582404559917452,7.98889368263544,3.06611202977344,1.49733849493368,0.0276337302052808,4.95587126014298,0.249649696880291,0.271832618615056,0.744947568372409,2.42309367425266,0.292362989869944,9.14746654464235,1.92167584160128,-0.289636103059716,-0.126832868992895,11.2980997375903,-0.573113219867922,0.460097202821853,2.62029629040436,-0.201390827408384,1.98591891314264,0.536797325430725,2.67578227762357,0.115901332076288,1.21661342819078,8.13015593620477,2.75755499990314,0.650225267972911,0.28765460937202,1.15028808395288,5.05985480953881,1.389929893691,2.8794401695086,6.15241923896378,10.5292548175339,0.787642088309818,0.706082808944571,4.40682622900975,1.08884616530584,7.07274484233254,6.64724756227788,0.470373991226047,1.21312690010502,5.90058054893185,-0.254826221162932,0.0326816344603017,9.98479358382114,2.83012270887016,-0.0532183495593817,0.0262522856214832,-0.0052610679040069,0.847064799937995,11.0957831226184,3.81320424606376,0.574675812229417,0.137825876913761,8.46215846458499,2.18469814200889,1.93497632013316,1.52632120811946,3.87771722845075,0.0250653026979671,-0.196236229726093,0.772415346892709,3.92919321254618,2.08205430564269,0.315262556254944,6.63691802856653,4.69794990153731,2.86159289635386,1.71554646718264,7.20370248861815,0.572485075892457,1.48778199788692,7.49895062416439,9.06392466923168,5.48365531437946,1.65769593809237,2.65294848510973,0.359704707673769,-0.0518340850536043,3.86704843450496,2.65892077412576,0.951610865548323,0.356675287362853,8.34084845525159,0.398942225236517,-0.0177523760556,1.77369454266434,8.88915702274508,5.72717072609268,0.657343985841963,0.0488388201675216,3.69443552450033,0.251077857745119,2.30570421181623,1.47462667647319,5.61971939883993,0.649731386841087,5.09091913651973,-0.135782361581465,2.82557949106879,0.219921634196303,-0.227711512665669,0.515060395105728,0.965282425117272,4.70875137838473,4.07751955263485,3.31500068370558,1.51301426695486,0.441873258258242,1.82097138506666,5.19940363943001,1.90043318444591,1.2607327631077,9.02565447245115,2.61683401756683,1.43476052186735,8.61097064696007,0.29028194412119,2.01050382511727,0.908400738391285,1.03544852687988,1.18912415109704,1.08292088671548,0.359181667118987,2.25406446750575,0.685973009013947,1.32881451869289,3.60378922310159,1.5725471689229,1.45371351766403,-0.145888614930793,0.428118336060209,0.321663915506192,1.61565705286458,0.110345559940875,0.633309054810413,4.40551119049763,-0.000555988862749615,0.303711671543461,1.8706006119689,0.469234612789068,1.52947715593216,0.996891505446147,1.21820608516484,0.769433144592671,1.03148388496428,2.32173034230018,1.90702975725449,0.360275814906126,0.288615181349604,1.56885640428418,3.12413946999537,2.51394610182797,0.658517735012704,6.6119185700982,1.6074161595233,0.568557558104199,1.79051755201071,1.45517613534748,6.03675828386478,0.51505740188991,2.67394894276104,2.66750357569241,0.000723194689114954,-0.899939443812523,2.94442354727178]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive702.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive702.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive702.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive702_field1":[800,85890.0638048293,-98597.6598833669,800,807.938934028889,877.223679024486,1068.32489909811,1437.8166470769,1938.01197882494,2579.55872732467,3313.15254087471,4074.11927980004,4849.67824970597,5594.10375647302,6268.80230809655,6926.54542992176,7522.95331969977,8049.36453711413,8509.75262243435,8914.42266680392,9290.8805964253,9662.71094005672,10065.4374669994,10628.8238145973,11237.2917098865,11982.5057995753,12922.1536789564,14099.9169228925,15581.0332032203,17345.7061887819,19617.6347959632,22501.7966440339,26132.2783588173,30712.0931552467,37187.5627580891,45126.6088336142,47632.4841035364,51029.4647149228,62694.9964481677,71652.2581154441,81134.6644363335,89246.7314219683,96120.4449591852,102112.42040033,106803.391277931,110538.118043554,114197.792782987,116347.4421947,117136.803828485,117805.120380693,117700.22705675,117066.64660396,116103.448046361,114875.741535178,113408.946961451,111773.420059063,110051.093874937,108223.287234945,106368.954792646,104492.7317883,102659.686098598,100797.304742076,98972.0648520308,97188.5412500139,95442.4461001405,93748.5420052248,92093.1811971514,90477.4539542529,88903.7701079617,87374.4438560482,39767.2148722282,-6353.77985878111,-52472.6796613958,-98750.2868362889,-98910.1715780068,-99073.0804192712,-99240.1122904916,-99409.0228508606,-99582.209443221,-99759.2590733572,-99939.6987767262,-100120.57957016,-100298.137919762,-100466.684981427,-100603.103368152,-100704.167004935,-100737.933940835,-100682.039691181,-100503.510452433,-100154.722609599,-99581.40410991,-98729.4946663409,-97547.6740391826,-95897.3135607536,-93891.9721799531,-91100.7868534366,-87713.7652105004,-83598.710118613,-78544.6246626229,-72897.8740791249,-66173.5748588021,-58434.9109612879,-49849.4045839395,-40266.5635994051,-30603.7712216655,-20260.8613033874,-10759.6263954307,-2408.18621670669,3777.42124293436,8290.0885582035,11245.0140858641,12812.5784906267,13472.0243827194,13690.7960746039,13743.5808298536,13679.5460358563,13444.5092384814,13062.7529485994,12558.3570600539,11959.7599204344,11360.104094821,10703.3314273422,10038.6561408684,9386.14041715105,8735.37947948538,8102.81138008464,7509.58326182635,6953.54663650826,6447.45946877404,6007.16648112725,5587.96498703084,5192.67295474349,4807.35439686039,4438.66876777478,4049.51268289,3675.34819369973,3228.28488171483,2724.97684792211,1947.49020385965,800,800,800,800,800,800,800,800,57766.5729787956,47893.031913481,12436.9476894695,27918.5966026617,20555.0493074937,-60712.9003201724,42836.4033222152,10248.8726183608,33103.5337726087,15258.2325295915,13130.7559211501,28912.5810922798,8325.41264911449,-48487.4591136511,2248.60580753339,15633.2184524572,38880.8230220829,11516.2303488043,-51115.819957574,12176.0071760421,12353.1481048357,4390.47827401083,2252.08265972924,10503.3286146087,5661.36708302058,15545.9711930673,60578.7082411107,6513.73810487635,80168.0728659727,12298.2489942001,70644.7506275787,18104.6398669134,66196.3096943475,10205.5269524039,75405.236765589,14541.0230309151,-21203.5017038434,22224.707873014,8440.33506805198,-17388.7332189343,1516.94074651154,12867.2748694638,69596.1216332225,17673.1811680672,11610.213170782,-2826.670443894,12293.2559390489,4100.08994016265,2480.83092659777,17115.5126801341,10282.9589858665,59155.9163442439,14274.0023023039,20371.9488649472,-2033.80628894025,5753.90723319499,866.911418673142,67900.6790258646,15316.9621706804,-20967.4844360663,875.26095171112,74696.1598864997,13697.7731012365,-54777.0361606317,15491.373166109,8451.71300816938,14848.6403036531,-68055.8212433852,1048.79597650762,11930.3618998222,-3141.98184962349,11729.5302243856,45460.3313200797,12505.2543605207,20077.7824916732,3752.04592334941,2786.1731236602,-6745.78160413507,-52076.6220734562,19346.5946825066,13410.1832200505,-19844.8050100968,49450.4684971633,5729.77436936453,1280.2990688405,911.729035272801,25752.7254979696,13353.6651138829,18420.3811178142,1462.61265427426,13239.0361330918,10677.8432550057,8375.68528204891,-37203.3117342496,842.815127437806,44513.074244427,-22268.9088012658,11917.7081953482,-60142.7661991446,12805.5743139144,23960.0272373029,3409.18142371004,3084.43290454833,-28911.5330329876,-5081.99339403967,-20469.5696383998,13318.9227228121,-60069.6696010799,36881.9825484377,5625.61653507283,2125.06975882618,1730.62939135524,-16403.9100119772,12833.9587894218,2448.6226832008,15494.454251334,-11203.6518105522,13281.5538276359,6749.43552009612,8230.24811247709,9904.5674566863,826.444608531647,17030.7571958605,69424.1451214436,12163.189648813,26176.7567101232,3076.34291242007,3388.70799551735,41911.0783657622,-60291.5768204993,24709.9101293565,5464.91278588514,3008.13600805257,10781.4707553673,-58591.1978733195,6514.73460415603,53793.4602610107,-53879.8490751375,8036.63758893758,82191.0345145708,10183.6757242481,890.248793518396,-10948.1578522116,12401.0430793399,64975.6844086394,2824.90904792496,3672.17930408112,12505.8329912104,5273.35034329183,10959.7196868664,2133.60575842242,6700.40224220022,7227.31831587313,48051.142371694,7798.99826192171,47237.6621373817,10451.431817861,961.637489691801,-38801.2222194604,23573.3939407982,6196.78359727152,3885.3220052229,851.367506291503,5060.03710288545,11137.3665334262,6839.53018340723,52535.0408925982,7480.42082261084,815.252374943871,81579.5307295416,13219.0975845115,12202.0133485039,10713.0319056767,1059.61886013137,-56104.919891687,-59429.2009643828,-17845.2794649731,6314.04944608595,53835.4092909366,-51955.5837771255,-22246.0973774086,62083.051919957,-10474.4230694158,11316.924566422,6926.02847397811,14593.0843800365,7680.57315022386,839.674404606259,-55113.9866427537,13316.603165017,-22790.8764082672,10953.9889220875,1207.87353663465,22631.4504675125,-13130.3181378503,-58143.0282961646,-18403.6185808091,-59293.0868075166,6341.70651229912,36085.0022600993,8749.60362185881,-60912.528591631,4339.71720659433,11541.9713495213,19058.7299748618,6941.36158761152,-23349.609800287,7821.67727522988,944.126357633712,14396.6455215841,-12188.2644587502,26959.9166585653,13253.279110863,-57196.9767104819,11154.5902416173,29978.3314666032,-15641.268647208,22586.5288381064,6294.27940900886,18139.7036077106,-56922.1661489978,8982.38672470778,8304.79617705588,15918.3484580134,4204.2805060951,11752.5722683976,19845.9350673513,6876.99632578981,-61294.0480430693,7892.55795553471,14431.4707141546,30955.5195806149,30662.3006808576,13057.6061924123,11288.7490514323,73026.7275466158,26847.4427233101,63571.5750441144,11500.2744452141,6175.23450149924,580.396505239816,-14005.8982298057,9199.06461622614,8534.2688024965,7819.62023084266,11914.9792997527,6711.90928706962,7873.43440503549,815.418296251582,73948.4295066718,3594.26243638662,12900.5490077571,10798.6646523336,76389.661897608,-58510.9409417152,9592.51975691116,6012.82088340496,-15499.0201705549,28965.6480174886,9386.31807275463,8734.35913791545,4281.38189422897,-10145.8175708137,3916.42846700444,12953.9152272233,10776.4667407245,46577.0045309704,9700.51811130261,66525.7538404191,5815.16616191997,71904.2347037358,9514.90563318436,8896.47866567614,34680.0756182129,4499.93214857646,-52325.8833640265,7255.89656047939,4271.84635520302,13222.25970555,15725.488963773,25397.1302324514,1547.92428852946,8993.52226666681,43209.4114994429,16705.0697954578,2675.50796085246,7439.41906005459,4605.95658249291,82241.5110133161,39986.8173366849,-15163.1083224293,14405.4953874564,57150.1058377428,1809.34974512854,9002.52114935731,14783.9003689102,8539.97604687233,4888.53705767362,32576.8935903039,-44544.8739085015,24404.7530525694,8991.2916970326,13460.5002697987,15020.9897196043,12765.6305297745,5095.09479443501,13612.0128337314,9293.21342209932,-57048.9138628915,9520.86214616196,-59577.4657575271,13223.6443898794,23446.5225021889,13969.2661616932,13085.5244554987,5192.6307507216,9100.07354866325,9785.11572506408,56444.1549441624,31259.0542418945,-19406.5870994357,10048.2430385754,17440.0737183836,38512.9870973503,-51922.6833014839,10290.2905213686,15759.0461754298,4691.61124869783,-17138.7274319783,73320.4514875585,-33429.2896386373,9634.71246525962,10494.613943119,4793.86984832663,24659.2276334079,35133.4325923984,9849.24689316167,3602.82329503037,9974.93941674726,61102.5651984333,17373.5594335518,17155.2102256494,12453.4428214078,-14846.1925363877,10012.5349220135,2990.88024104118,931.48159519398,43814.0483848151,-844.393823331163,1641.11141708966,7314.92600551776,3588.86435358908,22485.578412873,3076.89592130236,1280.87035951728,2574.21750901745,-21143.0885445839,11560.2221797982,-20718.5034823606,4874.16983890286,3904.56035675398,2095.54487940128,-18125.0425433953,12548.3753418245,-39229.7926731232,11947.2224534665,1849.11336407538,47821.66882547,21196.2277274165,1387.06229592673,7390.72438327279,1114.32331362311,7173.17397809027,2467.38623610846,45819.863068661,9414.74842687703,999.517916988149,3327.21989169052,2763.42648949696,1761.07271833863,2827.98225590108,1847.65513907703,14800.2502072842,13428.354002706,-27187.6253830659,11152.4389920227,5241.22404097007,32052.6302536579,10776.1713616237,5393.47426028681,-37232.7070722998,10158.0847960257,63302.6445661707,1422.95729093022,6978.44263510614,20559.046319551,-9018.67054919908,11382.1681743754,1740.76940353938,1265.68375390581,7443.33355651515,843.905269045356,-75611.3142865383,800.435653838863,63570.5964618872],"Archive702_field2":[-5.19209209517889e-18,1261865.98539187,1261855.0654097,0,1.04872333818966e-17,-3.98529786337092e-17,1.80272341069928e-16,-9.05164769272059e-16,4.55320734571757e-15,-2.26179463133584e-14,1.08416822123658e-13,-4.9754976447873e-13,2.21036125238971e-12,-9.51542952498303e-12,3.97951367679401e-11,-1.64100408426989e-10,6.65164234611797e-10,-2.65613207318017e-09,1.04797893441687e-08,-4.09709832777194e-08,1.59363034702874e-07,-6.18553470545864e-07,2.40468648615253e-06,-9.47673122166507e-06,3.73923325640464e-05,-0.000148804511382754,0.000598895292575448,-0.0024388219724819,0.0100579007541712,-0.0417879076447784,0.176381419459818,-0.755041688100444,3.27249173686513,-14.3535143208771,64.8660407746134,-293.745705937597,1157.21120935292,26716.196087919,44515.8137307053,62092.2111347681,82740.8888650275,106665.030978912,131559.447597824,160993.336378157,192265.687944657,225863.652984467,259551.211936162,295981.820006345,334598.049000069,372900.751957933,412863.486086486,453506.583823896,494665.088191386,536270.670411929,578184.886615743,620462.745266421,662814.035037792,705401.085350162,748022.63481114,790759.574876442,833479.461561571,876287.646488874,919106.451998903,961933.916266482,1004773.72008063,1047614.76296077,1090463.49840305,1133313.47615829,1176163.78472715,1219014.40833518,1261865.52964576,1261863.79120999,1261859.26495883,1218981.70205412,1176109.48011224,1133233.92323986,1090356.78005879,1047477.74161479,1004597.88811035,961717.370064835,918837.083603684,875959.77889014,833092.067750103,790236.64583012,747409.992262399,704635.085716537,661944.58177767,619368.055428818,576956.145608866,534803.986029957,492949.990386847,451535.170747877,410693.189205927,370594.864502175,331420.567358607,293121.673643607,256223.770783468,220885.013949762,187389.326950248,155945.433152169,126865.604932637,100683.291434674,77144.0162018614,56643.1689667214,39563.3069746532,24410.0198782523,13365.1900025082,4356.47525818228,-1416.45820996422,-5103.30991194214,-6831.85943000137,-7138.41743119052,-6824.52932248554,-6302.27246348377,-5729.49568532791,-5121.84858040999,-4644.97515024279,-4254.96881948676,-3966.56057299971,-3811.99191868881,-3668.38541527718,-3678.44078715204,-3751.13309282365,-3882.29226888554,-4071.36482002731,-4280.29589259068,-4538.778572505,-4815.28835188451,-5066.42699369629,-5238.23454155327,-5398.84307732113,-5466.5461029646,-5496.31414234585,-5379.68884342207,-5184.06226357672,-4919.38389106063,-4499.62661811322,-3916.38693890815,-3166.91663495844,0,0,0,0,0,0,0,0,953304.581042266,216610.701146996,-1630.04110598027,559942.72322692,-5845.52165029466,970323.694468152,91555.4351319969,-2556.86346899847,368862.723683503,-3247.070954944,270544.778499741,-9489.98628764523,-3719.44097204657,188601.221564648,-3052.04407770349,-10132.1837324763,58964.6330739135,-1305.69323350793,1047510.29336959,-2817.04475566384,-10213.3335639278,-4053.67662190442,-1183.13561089313,-894.364932461334,-4959.03020982893,-5260.53976382515,867617.578023972,-1759.60344582273,219816.60274429,-835.968883068358,568918.631703794,-7818.3865221964,97786.8326632121,-3120.98582079813,370482.137161446,-4398.19729833819,264300.334878671,-11086.2288644158,-3173.62428062109,192106.010887146,-1950.45550441414,-9672.66697776944,119986.63944662,52730.1559615591,-1867.21683019816,1047543.14147086,-3225.07476774729,-3459.6495077264,-1785.8895491228,76398.213615073,-452.281273625308,910459.450036367,-6075.76376990339,858965.173560472,3638.5303283279,-4409.9056558541,-525.362003859247,653826.827056863,-8707.75389235395,961791.225845552,-730.673769428372,402446.07120362,-5162.90004189041,259464.447538317,-11143.656166707,-2639.04577614068,197642.264386119,1204695.69518516,-971.538783909105,-8926.18157499877,49964.9684929757,-2323.40655687198,1047578.26599007,-3548.36352032635,-9969.74537567244,-2796.18632637291,-2411.61592716028,72782.1096335812,1143968.88798951,901822.561292246,-6315.89100063212,850326.939614805,31704.7075244016,-3806.13990133093,-1714.73315249649,-958.92117000801,644997.180082714,-8531.57622669846,961833.32542724,-2242.11263004312,-5507.99240385337,-9476.56088578647,-2115.20756717366,1233280.87105689,-292.296887546489,120088.761216128,51453.7099239806,-2712.87271855059,918878.596376563,-3863.89810372334,-7924.2418388502,-2091.53559402498,-3056.43579103684,73077.2634664274,1154701.98039524,893194.224950779,-6391.01302210932,841702.341434677,23268.5628786596,-3138.107301633,-3103.83808608438,-2827.65448991248,636292.583687107,-8152.3387651115,-3612.77657513259,1073268.70447914,384721.732444275,-5687.25315256661,-6505.49290243586,-1596.75944379072,-388.319845548039,-135.913693866502,117082.354850386,619798.181418576,-3071.53706472894,-4185.07866686679,-1366.30960727144,-3681.42832826796,1165433.69910609,884573.379612896,17001.3308143392,-2393.92372330256,-4192.41224280504,-565.651704974291,627724.409981067,-691.397664589762,1081866.25424196,376991.366956257,-1082.41779084652,324844.543012979,-797.825935263051,-238.08038395179,118017.058204471,-3481.54289561485,739218.765133621,-681.016455299978,-4284.96569328826,15005.1828349975,-1620.26034225543,-1075.84492821228,-594.858861594773,-1394.30494832747,-626.339776802113,253035.716718825,-549.164468453987,316403.827404865,-1211.79796898721,-294.729094062318,120770.20249756,730471.6230683,-4794.63123797078,-4782.6240268495,15302.7408409833,-812.557610106389,-1540.47782041236,-2080.90900704349,1124723.0392818,-1224.49111415726,-48.6305561002032,255375.556294638,-1011.62224498416,308927.793221692,-1624.41505631518,-309.661209447905,458934.988553459,790274.035780158,721784.016605291,-4236.39265349432,47566.5726118731,1176125.42190905,1021800.97186354,833362.775893538,18439.4255088181,-1951.77977090681,-2744.75093420784,1116132.44074847,-1797.68657166185,-46.8000036491685,417640.759043986,-1985.22310134344,302431.443544427,-2073.41338950725,-219.828785906556,-3318.37101965304,467105.969503504,585178.474430392,790333.15042776,713168.861473539,-3622.56205298948,37805.1837959669,-416.325437438683,1013199.29880653,-4991.97468846738,-2343.51391894578,-4977.26059349938,-3380.01601974189,1107540.78944481,-2360.61741543604,-135.132939010186,-2808.73638504591,425642.655970045,-8925.90894704053,-2941.85118407843,297112.064092913,-2567.80079070002,475770.784864027,593686.022289813,790420.712332927,-2962.3955804378,32473.7271136392,500685.232135401,-834.495172951962,-478.08299708952,-1749.51102666747,-4506.70650506365,-2754.67143375845,-2701.46562746284,-3988.78131694414,1098949.29525959,-2913.63466375803,-1454.08589537413,434205.381713346,-5608.31021100457,-3706.90537659577,-3097.6214740992,484921.58039706,602397.84395283,790544.333688134,-669.146412654335,-2257.67955565349,30747.9022825664,509022.200312704,-1263.2327668296,-946.927301773915,-3968.53809703003,-3230.40590668155,-4549.23377782211,-3461.12653293001,-72.0753763585343,443480.455288471,-802.270148785156,-4316.40760791318,-3062.22731595448,180685.744247224,661868.686221549,-3261.86170699253,-1518.50075870546,33241.704632611,517710.295995794,-1713.28551031488,-1411.6057780421,-830.090486334929,344341.385944911,-1637.36941306876,-4646.25519268296,-2525.03568443144,170936.198146535,-2671.41791154807,705034.198244133,-760.014606284722,526761.442589445,-2190.71916924484,-1891.83304945166,12007.338031756,-1655.14951113409,337139.282242778,-4266.38739623366,-2449.98015777986,-4922.11463126722,163848.336471765,1233298.54952361,-458.254028489267,-2392.49728718902,16503.3536020138,-6305.67551910351,-2420.86113037764,-3690.02347473511,-3223.37770283939,292944.575964945,199.943801083289,158730.23105271,4111.80109006833,1204731.38610507,-972.842511855208,-2916.11921340823,-7212.16552643011,-6154.08066153399,-3908.39118434407,-245.332151728288,156239.816187589,2983.67046293585,-3440.77563088949,-7298.31966059295,-7999.82259705426,-4165.25874564292,-4516.66196574308,-3641.3131055323,-781.6130198101,534368.168954266,-366.853723048601,755984.161978601,-7212.36497425981,-8256.16198702268,233327.844053786,-4387.60612504567,-5031.03249812948,-383.448461595061,-743.302673193601,1004729.80936488,-6361.63230293562,227422.796899551,-1146.49676750092,1004693.94711524,-4356.02166791576,223176.67650492,-1565.57158809152,-11393.0397533502,-4485.40834017229,678998.794331398,148526.502165511,93594.5433627224,-1167.37956925901,-2020.46747620186,-5034.3826262934,687699.38201807,-6400.61212579351,-1598.94278509407,-4697.59678976086,-8645.59598064955,72977.5247587931,-2114.16349898842,-4087.87667263964,-2426.98121845913,551227.232586015,-2062.0630258086,-3996.76887975489,-409.775593054833,764797.34166596,7160.43980991358,-1226.18526995747,-2260.51381563188,-3297.75884352303,338686.805099865,-2295.77753606474,-633.586943822651,-2863.1676911145,1193992.68096511,-2891.08351014929,927492.411732785,-2457.39207126913,-3936.34521204021,-1818.87416543911,756049.967520255,-3492.91696723729,816015.298575408,-1824.4577722152,-1933.02898230718,284245.667869147,-11045.1689783318,820365.654446471,-2864.90542071624,-636.047711859681,-1633.72522437482,-2444.78136633434,144333.238775246,-564.195693348444,-662.544332918478,-4155.6852357666,-1617.90670129802,137355.15343867,-3477.57148583357,-2233.11876691992,-2339.12468388789,-4451.83924668308,136497.113822444,-1970.97809783134,-3545.08031179766,401381.953548354,-1345.54147895411,-4191.14194097497,1077525.57546385,1194001.21169759,198066.826067164,-1518.60090617043,-994.036688475878,-8209.3007801304,94227.7929864641,-2403.96281987854,-1548.96120870982,-1037.38457190449,-3285.30645345922,-1093.392929755,1240420.5678587,-3.55729585204368,1240440.19772196],"Archive702_field3":[800,1264785.70048423,1265701.2699032,800,807.938934028889,877.223679024486,1068.32489909811,1437.8166470769,1938.01197882494,2579.55872732467,3313.15254087471,4074.11927980004,4849.67824970597,5594.10375647302,6268.80230809655,6926.54542992176,7522.95331969977,8049.36453711413,8509.75262243435,8914.42266680392,9290.8805964253,9662.71094005672,10065.4374669994,10628.8238145973,11237.2917098865,11982.5057995753,12922.1536789565,14099.9169228927,15581.0332032236,17345.7061888322,19617.6347967562,22501.7966567015,26132.278563721,30712.0965093548,37187.6193307673,45127.5648729441,47646.5390102649,57600.0121744752,76891.6136632768,94812.9146089647,115883.08100569,139076.985526855,162932.587874238,190645.746761327,219938.762270999,251461.856511278,283562.986819572,318028.245725938,354509.358417808,391066.51249973,429312.941329162,468372.524086028,508107.823324583,548436.566922117,589202.301728162,630450.089773364,671888.151633997,713654.65815976,755547.627045099,797633.647895669,839777.961127123,882065.834295988,924419.89362361,966831.149588219,1009296.53178946,1051801.06517414,1094345.37298443,1136919.34846586,1179519.02436675,1222141.73530238,1262491.9985041,1261879.78749377,1262949.79578496,1222975.06478791,1180261.29787072,1137556.41620333,1094863.69366584,1052184.28661646,1009521.43772847,966877.556702651,924256.203439774,881663.010841857,839107.925012221,796597.458697927,754150.303945428,711794.867412592,669566.098812867,627497.9372094,585644.388318629,544101.343441216,502907.694380285,462202.902997574,422118.993141258,382801.317060894,344463.778804307,306952.225802232,270821.574697996,236175.641676026,203184.689182672,172142.609967067,143086.769914334,116412.044021111,91848.5839473116,69497.0843611262,50018.4573108636,31723.0447973042,17158.0262260085,4977.77435501956,4034.26140788458,9734.95456384792,13157.6838791096,14666.9414330458,15101.9747530596,15071.7130864536,14890.0347492848,14606.9611017405,14224.2969179494,13738.2777032256,13169.8874265151,12552.5750243755,11937.7140441622,11317.7838055034,10716.6047139321,10157.3532571987,9637.57574021446,9163.86846202835,8774.6425395302,8458.06199657404,8199.90341918357,7970.26663570928,7769.99737900991,7539.69354223114,7302.06309534257,6974.44137419329,6578.22578827507,6140.72652155742,5537.91142759989,4771.1199394861,3717.80567901361,800,800,800,800,800,800,800,800,955053.19285885,221842.147386963,12543.3130327592,560638.298130837,21370.0766352758,972221.234242294,101080.933670959,10562.9986626187,370345.180705037,15599.9080033674,270863.238414767,30430.2018586363,9118.48325778878,194734.317640666,3790.93670877236,18629.5106315465,70629.6421654237,11590.0127811297,1048756.71238147,12497.6354526143,16028.4887181562,5975.6667937173,2543.95089968666,10541.3377053804,7526.15824114169,16411.9011373595,869729.867020988,6747.22078973775,233979.184435464,12326.6285859842,573287.964543954,19720.6782976928,118085.630198822,10672.0819369918,378077.986250704,15191.6256622098,265149.496513726,24836.3062969319,9017.26938355153,192891.387733957,2470.90791069324,16097.4298889346,138709.818657799,55613.0441562919,11759.4025597381,1047546.95518073,12709.2583906584,5364.69125241468,3056.78320592579,78291.9396737504,10292.9006531437,912379.21534801,15513.2861481327,859206.718834488,4168.36550353911,7249.46317610812,1013.67679411383,657343.153909295,17619.1460629583,962019.74902653,1140.16046718035,409319.382058825,14638.4604646633,265183.565152344,19083.0740535541,8854.15243719157,198199.260317843,1206616.47295351,1429.63653037342,14900.0084755203,50063.660737579,11957.4285410071,1048564.19216875,12998.933429082,22416.8055850668,4679.37031904056,3684.92225903608,73094.0562027126,1145153.61033118,902030.056473462,14823.072998781,850558.475662061,58741.2743630643,6878.73645899667,2139.97090866778,1323.17030047118,645511.088351879,15846.392803591,962009.696595075,2676.99548416542,14339.1093884598,14276.608238671,8638.6461321297,1233841.88343517,892.062110790145,128073.121103196,56065.9305116773,12222.579392932,920844.735666686,13375.8155663548,25236.4124616174,3999.62987298113,4342.29502537442,78588.5690037628,1154713.16359758,893428.747448057,14772.9059411144,843843.111474284,43608.56171833,6441.68291956746,3761.61299770531,3315.22367338085,636503.998666855,15204.3127286213,4364.39086546018,1073380.54301673,384884.831123306,14447.9936495615,9374.23691526828,8383.71186970709,9912.17679455405,837.545952859581,118314.515204078,623674.191878754,12545.0198235393,26509.1960517259,3366.10868180447,5003.62432793041,1166187.05425069,886625.703527302,29993.7478161612,5966.25029229596,5159.96149758543,10796.2990649658,630452.903359409,6551.32030152611,1083202.81038888,380822.174900447,8109.20292074785,335081.099556341,10214.8801989851,921.534146726854,118523.787433554,12880.4895244572,742068.879747727,2905.8380101853,5643.21112789332,19533.3399785022,5516.65364326796,11012.3974648687,2214.97869009865,6843.93720720845,7254.40773288625,257557.73375815,7818.30899254246,319910.579257162,10521.4486341492,1005.7891928568,126850.213468585,730851.898136636,7835.08874611759,6161.91688246989,15326.4054454091,5124.86344718757,11243.3982947801,7149.08073988071,1125949.30863377,7579.97850735739,816.701515756054,268089.340681139,13257.7494513731,309168.676541757,10835.4869243255,1103.93939751367,462351.690550188,792505.445757645,722004.58490653,7603.56778901845,71838.9178897014,1177272.43692629,1022043.10816609,835672.077779723,21206.7430722485,11483.9986901866,7450.06900056572,1116227.83669054,7888.14813032013,840.977613312291,421261.623149433,13463.7673262965,303288.974563572,11148.4939067572,1227.71461489038,22873.43735619,467290.479252691,588059.910788118,790547.393798712,715629.439807103,7303.43736304327,52262.4081913397,8759.5028631483,1015028.64749793,6614.60178117397,11777.4853055083,19697.926572873,7720.55755652922,1107786.89492242,8170.13769650839,953.748127329343,14668.074255158,425817.125503132,28399.1013373248,13575.8570845343,302567.468136233,11446.3306067536,476714.317057558,593892.029199917,790743.355185389,6956.56099331203,37196.6638238793,503910.542336212,9021.06720215999,8318.54571992894,16014.2001505903,6163.30902167937,12071.0881709924,20028.9554204378,7950.06005381904,1100657.30991851,8413.188339466,14504.5411083781,435307.428952618,31170.9773100905,13573.5856333969,11706.0289570381,490389.479975814,602995.810582295,793096.2669689,11519.7252240152,6575.00099806246,30753.3795684563,509214.852097236,9285.39427470345,8586.64167810151,8769.02247586255,12345.1307824364,8108.34472892767,8600.60266535716,818.597494339591,449603.474685609,3682.71093805252,13603.5120222387,11224.4551942683,196170.12672424,664449.913846427,10131.938466171,6201.6013682032,36677.3847640344,518519.970054313,9541.4000127222,8847.69237839387,4361.1100811302,344490.823809057,4244.92526813087,13761.9623248147,11068.3350428867,177168.284937992,10061.6363125413,708165.868012419,5864.6210186597,531646.345202563,9763.84553784523,9095.40350593795,36699.9156878298,4794.67509285034,341175.751924139,8417.24992566562,4924.53795355222,14108.6981739757,164601.240480485,1233560.02143433,1614.33155133823,9306.31430966301,46253.799003339,17855.5565755688,3608.17287018765,8304.28980679261,5621.8324285745,304269.930688254,39987.3172173503,159452.833477629,14980.8279331389,1206086.1690874,2054.30500487865,9463.04064830297,16449.2869662636,10526.3431290178,6258.85901855176,32577.8173587283,162465.768560198,24586.4649957713,9627.16278678461,15311.7777341969,17018.4398151182,13427.9820986202,6808.83442867197,14090.6371225076,9326.02458829182,537404.799536133,9527.92724890016,758328.113410401,15062.6352100792,24857.6673926096,233745.637837124,13801.5230240721,7230.1246262132,9108.14862163438,9813.30671164787,1006314.03272227,31899.8250411418,228249.302676837,10113.4387327046,1004845.30328867,38758.5487335636,229137.063734805,10408.7027727574,19446.0507862328,6490.77068513401,679215.060699834,165638.191404824,99385.3910442597,9705.1769353759,10687.3388005386,6951.70457877922,688141.349967804,35711.7056622819,9978.19033655198,5920.11412849322,13200.2176583722,95180.0535498328,17501.7214779465,17635.53156491,12687.7293453489,551427.122453425,10222.6689023438,4991.94612294922,1017.63156341014,766051.332911305,7210.05542282963,2048.60367068955,7656.24354215973,4873.92662424218,339432.398549867,3838.99505152411,1429.00710049756,3850.23700714306,1194179.86601327,11916.2536356422,927723.789825639,5458.59940006653,5544.40305243825,2774.81739422376,756267.195212498,13025.4440484508,816957.737060057,12085.725899391,2675.03668753192,288240.371411831,23901.3771074472,820366.827057993,7926.5686131612,1283.07175911791,7356.86638649295,3473.46379962611,151431.646847622,9431.63849613504,1199.1668188633,5323.5431797281,3202.20987084834,137366.442602551,4482.2970761401,2898.3872998838,14983.9551015408,14147.0690922289,139178.407290165,11325.2660071594,6327.56065674111,402659.712090086,10859.8504173246,6830.46377384257,1078168.65111848,1194044.42137721,207936.750954205,2081.09494354129,7048.88434785982,22137.4570551383,94658.4036923026,11633.262207529,2330.1413996551,1636.49690342712,8136.12026255053,1381.18941567069,1242722.92004897,800.443558466322,1242068.07577484],"Archive702_field4":[9755897.35940982,5906736.99677971,-150849.533148908,-4071978.74671935,10032875.7963981,9864620.33353295,10017697.0959848,10021999.8647776,10012572.5058973,10071924.104624,10157246.7854606,10166827.5258807,10169820.125957,10186888.8070075,10170706.8709609,10170124.6239212,10168807.4707233,10142484.6643171,10130091.9720329,10143683.1738611,10166833.6326116,10201581.0520265,10198165.7672235,10108042.5092192,10012042.3308415,9844543.99468965,9774058.66500432,9556965.33044808,9249008.22991676,8966443.06810999,8687908.94184574,8047245.28524404,7534248.91707302,7053595.43467804,6239788.98338319,5004660.3551635,-574387.861885598,5989972.87827777,5742422.31794057,6450605.94935241,5700343.08804245,5866154.90296513,5401040.36403219,5457848.39981969,5700139.05447005,5520952.84740541,5847369.9541944,5707486.42765449,5864481.34384741,5684866.22972863,5458362.36142999,5462083.906541,5532120.59419495,5487538.521216,5596309.04139778,5544469.84297216,5670599.86642016,5616913.46704,5843412.93294701,5782407.51936802,5918992.80178272,5895556.7041541,5831876.66854889,5907274.81289138,5876623.20024232,5928693.41243074,5899579.20184833,5901487.00887808,5930507.75140139,5936905.63733819,4384162.82315508,2794604.5895861,1163479.30342792,-213340.744462693,-228245.09965093,-239289.845623246,-230174.726154134,-193463.780511798,-131614.22331643,-25939.1381986463,241463.042643493,277194.165973643,350089.925865292,497451.417518446,598220.006009898,620400.073799759,698081.392044334,803334.014329071,857468.829856548,960372.448248654,1064631.8056816,1158165.93168656,1372962.45975159,1417398.22115005,1728653.97830703,1834901.1019055,1936584.74673858,2177488.78926078,2323595.11299848,2463598.5589506,2489786.66434633,2597374.10228467,2829438.05121462,2713565.46107909,3063518.09980987,3118395.71783926,3085099.82798212,2843108.66856986,2799463.91759693,2549834.01203759,2222097.92009805,1869090.4397792,1188895.4519551,522393.309021722,-234377.001441149,-529768.493349096,-744944.115758322,-851867.04420935,-876643.403728811,-946211.890117183,-958276.859123449,-981856.687529661,-982461.015449369,-944542.074118928,-955680.838198474,-893377.677272531,-905604.202874984,-869214.915089903,-877425.685579902,-772898.297787962,-800183.165456777,-716633.793622029,-713327.265334345,-778518.059311908,-721437.735612184,-791889.349293562,-768036.519917595,-903791.243945519,-601688.612473941,-865045.690106088,264388.711681178,1697994.61998281,2968390.39892497,4293311.75611832,5562723.47193814,6983841.63156585,8390152.20021067,4859195.81645246,3374024.39229009,7297343.71238212,3355872.02143829,5627355.39707568,1231414.89294914,4019933.68319159,1798079.7014174,3217961.18565865,6449884.9717093,3345810.33393986,4150602.5016354,463890.536493716,2606270.80664698,1694658.91506467,3407326.18454063,3349765.30413236,7354441.46282894,1469904.41852075,4808604.51999975,3556307.26893592,2833099.17084849,7551126.37617167,7440851.72929223,534110.904714516,5222194.40924403,4777299.43163604,4190412.78066512,5018796.35946509,8788189.75560275,4944168.78381801,4628683.68226493,4698277.93140342,473265.314036237,4719643.41209369,5422183.34890091,3793289.22393959,3784846.03861046,1891504.31012087,4012358.95484634,2441135.55140417,2930584.64576653,5335638.95585872,3433068.11025739,6060638.92735199,2954587.94757611,3422206.98990705,4062871.93995394,6389850.62113249,3508992.75510934,8871423.79407147,4852939.66470808,3663619.08895268,3644413.71848546,2797705.9839824,1955783.42818342,2276121.46758603,4980362.67076095,3538060.99057594,2436178.45181103,1046844.1435605,4775692.1084105,3917192.71763361,2582205.65228126,3471478.27658685,3289573.96960307,3635750.42192313,800571.916052373,3054773.966875,1678554.51123617,4607651.26073589,4812942.03468157,4442528.52566716,2042627.90323762,4534443.15849333,5239582.79797312,5190901.90486711,4860391.10746031,1336280.93540521,3508715.66639364,2831333.74692009,2434601.19326789,4992554.67713341,3304695.42612978,1647195.19073287,-365821.94852983,3368493.75754423,3143388.2238675,3525498.70753784,778093.465804598,2789166.86496881,3989669.01721804,4680750.97874605,1730970.46239628,3837066.83738745,3373480.93467586,2943940.47043811,3322724.18088485,1234938.04548966,510093.41434649,4922087.18116629,6442582.92958921,3981553.37662222,2963322.50273587,2833532.23110577,2404719.49073279,956560.420618098,1458018.90902234,3530921.09838233,4681734.65587288,970094.473486767,-185951.092710137,2830435.88040831,1234598.85009307,-88632.6261342113,3550511.53241694,3186834.0986555,1101269.45812751,2381812.29729984,6053224.41089218,8882227.99385142,5631100.92657786,3373197.41822892,5009521.94416047,1886866.2143314,6638757.9185068,7603198.00508419,2810684.16236588,4390265.50883847,1240815.52800636,2645762.14684822,6039563.43158876,166788.164416403,8899701.11595365,1937522.34745619,8772674.24376754,4738571.3415384,2543171.74588901,7427321.83875676,4615091.71898271,7457776.70292298,6407071.7368593,3989971.05080632,464801.643822533,4991185.04478159,8931888.84044777,1616533.31685359,4108330.16243572,7404751.78249243,7498414.8962385,8898401.35780432,7398300.9846038,8753160.11541483,3899160.35980318,8751418.67510575,3913866.68698794,6082425.82369985,7433135.61569018,2860074.5233473,3369942.35734275,546028.698267554,386766.897907941,4462770.20327861,8783947.81587235,6156434.7084441,6025201.65782396,4742974.8013822,7436972.47397258,7954362.91518684,4768426.92617258,8601583.67055324,3026714.00195486,4630289.8731295,8249316.88090146,2439178.49632986,1519533.66984524,2730569.13347608,1908432.75628561,5111905.24913275,1325122.86893011,2351720.4583699,4766189.48682131,2975542.10369825,4683048.23945448,4661344.37078398,3506456.56251796,6061144.42154205,9127667.12294728,2542733.47042338,7228508.55929707,3542207.3566085,3216131.93040525,9231510.08669141,7273412.52143094,3141927.95817211,2060624.60331873,2654483.96335179,1700348.69661056,3282518.41934384,4216464.4579524,8760150.58102708,1211591.28109811,457945.240047938,3264006.36789822,6138826.46379225,3278078.50820308,2290697.00813896,4693365.3452628,9082297.94440057,6743257.80333485,3161255.92365844,4909699.31402607,5911959.36007964,2437896.13194296,1812428.59215664,3317395.78591064,2860656.25187804,3501763.33620402,4671188.02737465,3918809.5428597,2326632.5722409,7427398.89278881,8756426.93705471,8089581.51714328,1650545.0944768,1811267.70589978,7490681.88053092,1912602.12909455,1077845.39256541,3309117.21462518,8323328.01612109,3060416.63324274,6263385.66813123,4749401.44484794,471458.798615207,4924783.26576371,3311968.48635556,4880819.70711443,8874573.88476119,6031566.25233386,5209335.55177909,3002485.55389855,6048762.98408208,7428403.38171478,512306.879154955,434817.954386831,551692.769712375,1894625.12735524,7114571.02682613,4996145.54404844,8757148.01197336,3584457.6740528,416171.876084084,5105628.62572546,1819186.03374801,454412.586287532,7423183.19633393,3129156.09268718,3276026.90238317,4642957.17019834,6052534.11280537,8762584.58744408,3635042.7062367,7368379.3195748,2329442.14416845,1815542.10704322,3383871.98799545,1812780.52104238,5021948.01893282,8803344.57336881,4969934.2185619,3249561.96799503,4667830.03762055,4170152.26594261,7386286.89737586,2694547.71883088,515941.804670516,6003324.01440646,859053.921446689,3192351.49731446,3830861.81444448,8844005.2537363,3270803.18443867,5709956.2540125,4939957.54458327,2643167.55488084,1895566.49850695,4644896.31359002,4909745.09082379,3326488.72064481,4285251.42108239,4685188.45593076,4849544.51006094,7553440.15367534,1861504.0415126,3529494.40129381,4455007.00840829,3303297.52513835,2254992.22125116,2752596.8261343,3385401.56729301,473531.857318352,2929241.9053219,3839727.51347406,2126285.5313441,1960466.8342072,5498901.17026475,7417462.32394769,2201455.06359991,8810700.84773671,1487014.77787942,1033588.06085926,3920674.5132397,3343155.55884414,581186.843664243,600785.414482412,8770200.88515794,7436496.0327574,4788834.69777151,4662153.64190284,3888065.96612357,6053532.40576395,3580999.53101164,5624336.85441297,2655959.86506982,4622948.84375272,3178038.62660481,1909048.47312317,2722688.43659406,5151050.25680164,2897961.4335396,6045871.32703096,3243580.18679544,532257.459785087,3355700.83550286,4531769.9761422,4640826.48510355,51958.117040735,2007755.48055167,5141396.94817539,7884900.06396353,6201222.50742958,6136252.91250368,2979177.43191215,3234811.86327216,887821.54971123,5255846.16613929,3936521.09631562,4435670.36944694,6285434.90652115,5374532.63282841,4007647.14595044,2989684.79613809,5782706.65778485,7488672.59653222,3521671.27154741,2287130.30995292,1100008.66319445,2423456.00381578,6003668.28051665,2852037.43987959,5563513.21874848,2632275.2757115,4123420.99599404,1884479.84040379,6912951.72498662,4231222.00200581,3751976.10851467,4209463.66811894,2956473.99854741,3986882.28179296,6276827.62357321,6730693.93995084,4532294.59175158,3773207.36279888,8137237.49786091,4176547.87418345,1307877.25017805,7046876.53893843,3824417.32323171,2343555.39924987,3111941.53353628,4451915.52100053,4180393.56190133,3937053.35822526,3962500.77365948,3971846.9097696,3608774.165325,6101669.48814568,2600770.43915777,1865917.2601342,3368009.07010408,4393698.49357647,3672074.7506412,8126025.84344499,5074545.72859256,4473572.82527381,2540889.67252734,5179698.94053532,4977319.34276548,2958932.07157483,-1420290.30758082,547846.22813069,9522536.53968576,5055303.42793064],"Archive702_field5":[800,85219.3395559734,-97299.9348949868,800,807.811802992438,876.520996414395,1065.89298516385,1436.27562880062,1934.69397684518,2574.82313737851,3308.44600374444,4069.61840727713,4845.55608405804,5591.48603662779,6267.60985591965,6926.63042898713,7524.71641366425,8052.87744105604,8514.59067102164,8920.21682540466,9297.52328023965,9669.08248311667,10070.6594931858,10634.4990612439,11242.015960236,11978.8476323102,12914.7280629424,14084.3981965363,15556.7189286732,17308.4899442187,19570.5669725893,22401.7295507322,26015.3294099291,30501.8578709928,36922.5351862134,44922.4181203961,47122.9082887043,50145.8891791457,61874.4132199109,70760.5469964644,80158.7719858317,88223.5898055007,95064.7696093183,100999.249799718,105668.971842875,109429.52740065,113129.42205321,115262.852581761,116088.564552241,116785.480303507,116681.738496955,116054.754624029,115105.694290594,113897.311824628,112442.203425835,110827.034500006,109120.965750245,107312.451863646,105476.47083864,103621.735172305,101809.645151223,99966.9017587929,98161.1862278115,96396.6631716936,94669.4146910034,92993.9038081791,91356.2280729445,89757.7585175949,88200.8813713531,86687.8762032446,39588.6033707465,-6040.29255030262,-51667.1361793291,-97451.0175672882,-97609.2582844238,-97770.4500125926,-97935.7109256616,-98102.7936217224,-98274.1044359287,-98449.2663991482,-98627.8498774378,-98806.8110925856,-98982.3027153976,-99148.9914356483,-99283.5226909045,-99384.2998111353,-99417.006338971,-99360.9323688162,-99184.2144934587,-98837.2906215241,-98268.3107048673,-97420.4073795959,-96246.4718362477,-94598.0347237496,-92609.5554382738,-89830.7979361937,-86456.6744154118,-82355.420661988,-77323.7358350323,-71727.6536130033,-65071.8053126657,-57351.2287142278,-48839.1279892917,-39302.1952247663,-29747.1791598181,-19604.6984709964,-10255.2447036815,-2065.56036039008,4046.25808999821,8465.43770392573,11331.0053552537,12844.8969521238,13479.4903306387,13692.051324117,13743.6857146037,13678.3000689937,13440.6106342585,13057.4559433812,12553.2603296006,11954.0237357866,11353.8777475351,10698.7161827072,10035.2909459197,9383.64421539027,8733.70739841905,8100.25115453036,7508.18513318203,6952.87721660174,6446.89837537796,6008.16945804097,5588.90589968741,5193.42038450128,4807.08881239209,4437.5249391047,4047.52052759331,3673.8258893855,3222.19074889512,2719.89061491917,1924.64404085955,800,800,800,800,800,800,800,800,57395.5226521048,47571.3987010212,12436.5593921065,27867.1239782498,20498.6950323785,-59819.5583407773,42460.4599036108,10248.6279193705,32997.0421506893,15241.8977726896,13238.5491068608,28737.9847827919,8324.32994986251,-47662.3262076359,2243.3863869913,15627.8109314544,38549.340800077,11516.7752655685,-50324.8339988738,12176.3909602592,12385.8079708587,4387.92226548709,2247.82432714504,10508.9269280636,5661.1382860132,15532.7268164645,60177.3576404273,6720.53888048276,79464.5841029386,12294.9129567772,70138.2266668591,18063.7124493363,65526.7958622235,10203.796633934,74817.9322241451,14526.775063701,-20716.8699590107,22170.1139446807,8440.70839647394,-16939.6997398355,1512.65268449222,12889.1168105142,68869.4144649423,17658.2009367458,11611.3764333472,-2550.93781623056,12296.8653968782,4096.95950644999,2476.54565869834,17119.9613583487,10287.6752824444,58769.9220873143,14275.2297541059,20399.8778164854,-1757.37976521989,5752.66824161575,866.973140019154,67423.0807696156,15308.5338221963,-20498.1808015347,868.625095712382,74125.5277204022,13697.9388193494,-53908.0851491536,15502.7500115093,8452.77144961471,14917.8836509429,-67084.0377273467,1046.93115034263,11985.4458950622,-2829.31668520005,11733.0388613785,45220.8684013729,12508.0423668791,20026.0048687204,3747.92533066062,2782.7006953769,-6415.08939655404,-51275.3391554152,19385.6028869392,13415.45653445,-19387.7840799096,48895.9045836604,5727.74847289046,1275.06092116435,917.808613631617,25722.2666227406,13374.5517837725,18469.2394930354,1456.67644624156,13242.4494642513,10772.1339623389,8377.66836449475,-36560.6818244472,841.406546621952,44146.1499122455,-21630.6730379889,11920.9808588928,-59255.4887360193,12805.4087814869,23839.93030679,3405.14141449546,3080.16999126135,-28255.3492086294,-4782.1001794042,-20005.7291568209,13332.7676475653,-59183.2747336145,36514.1747266966,5622.98308683963,2119.9061700575,1712.46350371539,-15984.756340715,12868.8517125606,2441.51766634866,15574.7347644391,-10837.5876037447,13290.4266060372,6909.16705749207,8232.57221877726,9910.71889131455,826.032181835271,17062.7757212612,68928.9138218327,12164.4493673336,26025.0369940858,3072.17468071064,3385.50680815394,41709.5836071004,-59402.6920871406,24598.3644020433,5461.87168887487,3001.0818744029,10784.761987939,-57719.9352785764,6513.88715072944,53465.1174305496,-53048.6393721275,8039.30106776582,81532.0147619815,10190.1958965276,890.23483830441,-10557.5486684963,12399.6484605078,64529.6414603607,2821.17978694601,3668.17401055965,12549.5995221211,5269.8389074037,10965.2408739493,2130.42849373524,6699.58863882303,7228.30883487725,47737.8363864487,7801.30675786965,46967.3384324488,10457.3845495364,959.731815546175,-38084.7177358529,23565.5212504343,6195.744423172,3882.55765196155,1134.94820876066,5056.19161053845,11142.334056997,6838.77539955758,52220.1665157285,7481.5799247645,814.821399231144,80891.4356297834,13207.0574146781,12322.0023857559,10717.4257679013,1058.24198752308,-55256.0818118036,-58550.1150445658,-17409.9650578154,6313.39134510061,53214.8153850738,-51155.5765581826,-21763.1657068662,61665.5830056902,-9959.53902118001,11320.8571384317,6925.58487449632,14683.0419702236,7681.87745446799,839.134625344139,-54275.2640683485,13305.1024162038,-22291.7837363089,10956.8061009476,1205.13759728185,22549.9292398658,-12746.4701206476,-57276.245890702,-17961.7173287782,-58415.1797654322,6340.58722294307,35738.4174471965,8754.88066232255,-60017.0389858593,4337.52120131135,11545.7702931779,19009.3047257851,6940.72207800002,-22854.8362641968,7822.64677709981,943.519944913776,14388.1791870713,-11812.0734263201,26808.1334984075,13247.6330548854,-56313.7562772282,11155.0385021408,29908.6774194628,-15230.75394991,22590.5184189323,6292.85773453982,18096.4314962512,-56064.4212996203,8987.51896460917,8308.66491475398,15889.2771554428,4201.93862789946,11753.2224531489,19777.2166479338,6876.34272377676,-60394.472670718,7893.21865028043,14412.7778047596,30881.95292452,30518.1973971663,13057.5046780422,11286.4870367823,72493.9646687972,26806.0325876942,63138.0945155245,11501.4945137449,6173.55471512257,812.065156923812,-13611.8562630739,9203.15831223004,8538.20315435448,7819.26376865157,11912.2587399114,6710.97497617668,7873.44263155253,814.985628435753,73395.3517119347,3589.89201302623,12900.7320046368,10797.1208909419,75692.5030680271,-57641.4072852918,9590.84043723095,6010.80897137605,-14928.901842283,28905.0535170387,9389.57602392184,8737.55109626088,4277.67190080732,-9790.43045837201,3911.72096877768,12956.9723586711,10776.5176548926,46253.7060011525,9700.62231693719,66061.8817278862,5812.97098923286,71384.786251132,9516.38803483617,8899.12428517451,34379.2147709386,4496.01549013675,-51507.2551145585,7255.45443404794,4268.27375444916,13225.6137535996,15774.8227045385,25371.8412876537,1545.1865371948,8994.97334431071,42879.4701917796,16688.8118147482,2944.30289689233,7439.52798681859,4602.4764529094,81563.5315072303,39749.6875358603,-14747.9624192261,14474.1383066969,56786.0274914555,1805.70827188163,9002.94144588059,14775.5260840573,8718.42447164686,4885.57564058698,32401.323924174,-43734.830477923,24318.585607284,8989.91647090085,13470.7600842302,15050.7495843552,12768.6234474961,5093.55599055684,13600.6538795554,9298.75420621354,-56193.3807798303,9527.13689028472,-58696.5039231435,13244.2259973096,23383.1768998238,14060.7083016509,13086.7813616685,5192.62875445239,9106.09554153917,9791.40067344519,56087.5074167729,31086.6686841247,-18932.5002815395,10053.4925055364,17499.4965140856,38190.7882543272,-51078.0381068164,10294.2486252625,15766.0540981534,4689.07793707968,-16711.6195478498,72591.0143986958,-32721.8718440601,9639.71841973054,10497.095005814,4793.30026970236,24640.1280453427,34791.7917055332,9853.20264368653,3599.19734914721,10060.9266716822,60397.5575186275,17327.6699616087,17117.1392095992,12452.7529024972,-14444.2184953094,10014.5439570518,2985.00479381656,930.620892770241,43590.3151515804,-548.974918671605,1638.01168081705,7315.13791808993,3584.30313872456,22497.9614570181,3072.4688934908,1278.9168446234,2569.46163333406,-20671.8116640442,11559.1664798037,-20251.954790525,4870.66075282682,3900.78309152305,2090.70352421202,-17686.3353524103,12548.6674005251,-38565.7493558197,11945.9175297261,1845.75641142429,47533.1314553616,21136.9361810546,1617.31554003093,7390.68177520265,1112.51151216531,7173.19617680347,2463.25137737023,45486.7081020058,9421.26222872104,998.25828532109,3323.13692013025,2759.16995926191,1977.59808921171,2822.29970565853,1843.70522361807,14850.3889522273,13425.9452101675,-26622.0059066177,11155.9458495099,5238.43111352847,31964.142706748,10781.2701333546,5391.53138613688,-36589.8190680159,10295.3887419306,62774.7429394966,1420.33064922105,6978.25064549871,20503.9605043553,-8629.61149534107,11383.7801551951,1738.10176996768,1262.70729308359,7443.39567509073,829.709568046898,-74558.859128005,800.313906645359,63138.004867734],"Archive702_field6":[-5.19209209517889e-18,1247412.03246675,1247401.1824691,0,1.04855831917731e-17,-3.98210551964881e-17,1.79861972633716e-16,-9.04194634828745e-16,4.54541195995505e-15,-2.25764239715603e-14,1.08262809354075e-13,-4.97000097689437e-13,2.2084824730656e-12,-9.51097684948973e-12,3.97875669332034e-11,-1.64102422184277e-10,6.65320123794887e-10,-2.65729126242885e-09,1.04857474174855e-08,-4.09976134234969e-08,1.59476974198732e-07,-6.18961341597467e-07,2.40593405595184e-06,-9.48179130997065e-06,3.7408052609832e-05,-0.000148759082504893,0.000598551142011559,-0.00243613774313293,0.010042205353416,-0.0416982492028698,0.175958234423298,-0.751683963904237,3.25784645934219,-14.2552593713353,64.4037547841194,-292.416553432003,1144.83127880685,25578.8195824583,43694.9194385445,60892.7982914891,81363.7704909747,104941.771714002,129468.988179492,158547.658750719,189411.754918282,222628.080578092,255889.921688652,291907.947400057,330093.558844661,367960.607615779,407488.447216015,447690.038411875,488402.49061987,529560.625622717,571021.861928978,612856.176217402,654749.464399937,696886.784830337,739048.857733304,781333.352011643,823596.648064762,865947.739849535,908309.657471559,950680.088287516,993062.930632471,1035446.70920521,1077838.31035653,1120231.11702723,1162624.24067979,1205017.65339367,1247411.56813691,1247409.87501186,1247405.34647884,1204985.23468451,1162570.42622866,1120152.29971672,1077732.59954071,1035311.01605241,992888.679956344,950465.651293866,908042.925818,865623.006045705,823212.679365993,780814.974734197,738444.95050271,696127.095350225,653893.630744191,611771.701338206,569812.947988539,528114.276531219,486706.959104394,445736.76711666,405339.936068468,365671.092559541,326934.21751161,289056.179761358,252575.040115726,217648.827491747,184555.140402565,153473.701042891,124813.872518982,98972.4442420962,75807.1400476129,55575.6100807942,38810.5588542514,23812.1116481854,13063.4714159349,4149.23094986397,-1544.2092253725,-5124.8984241374,-6797.82502531165,-7093.94316768794,-6784.0774133307,-6267.86860515,-5700.87198485021,-5096.64012481583,-4625.3676899309,-4239.76493697743,-3956.01281014272,-3804.72558584395,-3664.14265761198,-3677.58928279896,-3752.17943402238,-3884.81112841639,-4075.54714699879,-4285.08491089003,-4544.74218309339,-4822.37473832091,-5073.56965310968,-5244.07044265197,-5403.89937803487,-5470.58351924992,-5500.02140670602,-5381.97032672573,-5184.70348698312,-4919.94212184777,-4493.07095077643,-3918.06089724218,-3137.39903106977,0,0,0,0,0,0,0,0,942142.719251351,213395.267177514,-1617.63467129927,552980.916781073,-5763.68044764681,958980.19004879,89925.9916836501,-2558.86036425376,363946.546364232,-3217.47776620429,266702.141936867,-9365.08813390887,-3725.30806512659,185703.6839739,-3046.10507693054,-10022.0760220693,57817.0755189648,-1297.79378356517,1035343.24064743,-2801.37301797325,-10104.3911490396,-4055.26918442551,-1181.49214127749,-891.61028475346,-4964.42096777933,-5215.39320520209,857369.97671778,-1871.4167641858,216578.187892199,-832.478869115839,561855.416480163,-7721.72716243712,96070.3393098946,-3121.78814785728,365556.120764031,-4361.29128866071,260534.838843139,-10951.1071006625,-3179.7832500949,189181.960921733,-1942.8441177253,-9566.41397216709,118007.936494273,51617.7684265496,-1857.69490786249,1035375.74414096,-3207.4815377866,-3460.04335592538,-1784.64824682247,74945.8176690291,-450.528329393065,899754.653320306,-6035.99318379651,848809.962561849,3445.95544573157,-4414.77910106617,-519.885128314666,645859.838085672,-8621.96424423012,950538.74206271,-724.060583107432,397172.618150645,-5131.47709168297,255755.923388642,-11060.1121381969,-2644.79744344878,194636.832302166,1190851.71065586,-966.829595088725,-8849.24787328302,48919.2850643663,-2311.24807606822,1035410.55803905,-3530.46809924843,-9831.8076633312,-2796.08848490137,-2409.75032836747,71404.1254292963,1130772.78938962,891210.158110449,-6267.28950981378,840263.738983287,30884.5605023919,-3810.8065659807,-1710.28278388156,-950.127734678473,637125.890191331,-8423.3246838241,950580.493978939,-2232.07447189335,-5472.35151538989,-9395.99322877959,-2120.81532162808,1219131.89671463,-288.720093762965,118104.480808706,50383.9069842709,-2700.32431308033,908084.0039642,-3847.09913597068,-7807.21939147942,-2091.07936183385,-3054.1405150702,71696.66000324,1141391.38309246,882673.731563247,-6355.31105294493,831731.080545283,22678.4001719492,-3142.22645773341,-3096.31030167644,-2818.57426579627,628512.507758843,-8083.42242373603,-3603.45127325941,1060826.90602325,379632.612148345,-5657.05469409924,-6585.16460922882,-1601.07324049122,-387.224378410198,-134.151015714647,115057.570413584,612193.365642088,-3059.15375623484,-4138.84748158853,-1365.31361800024,-3680.34558124762,1152008.62677267,874144.685681512,16523.0150716386,-2397.10312034883,-4189.4009376527,-565.318071336501,620038.837690499,-692.884041173523,1069332.74092011,371989.915871919,-1085.84501736944,320407.234925628,-795.996446028919,-236.351463588831,116007.398507501,-3470.03120674085,730341.119578414,-681.147470978698,-4283.66506763278,14545.5475040469,-1622.16556339195,-1070.67089292787,-594.290194560381,-1397.0883936461,-628.068076183421,249402.529173457,-550.649707765186,312071.31199874,-1209.46562752401,-293.326876388674,118728.507731279,721688.335309016,-4801.35406092131,-4783.55805556572,14931.9213751054,-814.151641014864,-1533.60552554883,-2085.50325272128,1111732.30801155,-1227.96934658768,-47.6819807334293,251738.061354739,-1005.73329589029,304662.621646955,-1621.75706930235,-307.714767953472,453056.698118949,780851.61570116,713092.380868806,-4242.86127123569,46601.7256753521,1162586.24326058,1009908.17172278,823480.915347022,17953.4210840066,-1943.37887964758,-2750.1647463119,1103233.351697,-1802.29807543489,-46.422761935874,412201.045395677,-1966.94166396342,298241.706795892,-2070.63862865332,-219.33705775544,-3290.02323006433,461132.268219897,577948.077601067,780910.627882399,704570.134905901,-3628.05948371732,36927.0728832738,-417.406971978636,1001398.31275006,-4993.84951911288,-2335.59116859033,-4927.27196234373,-3386.44824555821,1094733.30305881,-2366.3883032591,-134.769031521015,-2791.49554032169,420114.823107166,-8800.23848483802,-2925.74223468265,292980.781789433,-2564.8042302345,469706.536326043,586361.403282849,780996.877489312,-2967.30681631359,31695.0458424112,494358.879698039,-836.985861085989,-479.607963040705,-1744.24791983852,-4507.41285062469,-2746.84522343586,-2677.49827374826,-3996.0082211376,1086233.48280547,-2919.94871085441,-1444.30116978762,428589.535101587,-5559.89568792757,-3681.74994335861,-3094.13448655119,478755.529010768,594983.338933708,781118.889359112,-663.81702313252,-2261.46352166714,30037.3616348387,502599.605181642,-1266.15431715381,-950.060849804846,-3975.13435151312,-3222.56655981251,-4555.74301365825,-3467.96497743872,-71.1655248690023,437762.383878822,-801.992870874806,-4292.20152276927,-3060.90428479333,177925.709618901,653818.297316337,-3264.19641209488,-1520.99789529427,32519.9872702868,511198.838307388,-1717.12168611622,-1415.47826226181,-830.730340087918,339691.087869708,-1638.11046012896,-4617.23037440259,-2524.49835359088,168286.046044432,-2675.75316360135,696520.986274544,-761.458834936315,520148.063401696,-2194.60390791317,-1896.63373097186,11596.3833235737,-1656.41928832787,332575.937527118,-4273.32383316767,-2450.94411443453,-4895.79096014811,161251.404067511,1219149.39096847,-457.811580688441,-2397.73025532744,15928.9067908196,-6237.3411375369,-2521.35350287201,-3696.86205587619,-3225.4181718475,288877.557395302,-31.3324302304409,156207.485200146,3888.96380059706,1190887.03244198,-971.124050827492,-2921.05272890479,-7150.67322100513,-6179.09314757364,-3910.88883629838,-371.276734379936,153753.00762297,2787.67776061809,-3444.99733313576,-7222.95313796266,-7996.53795343979,-4141.0913150089,-4519.36112682736,-3616.7302745764,-783.164906961272,527681.37634537,-366.704683313651,746927.777382605,-7160.08342824231,-8243.78291936449,229906.208338005,-4365.75568710955,-5035.74810928925,-384.197106429449,-743.091733331541,993019.207852791,-6338.42224286626,224081.467528628,-1146.56829694943,992983.731689683,-4258.79373251873,219872.998831487,-1565.96177323085,-11290.4286056082,-4487.45479465953,670764.081265265,146163.384554703,91916.7786754051,-1169.29789865682,-2020.93717537217,-5037.47778096935,679374.187313506,-6328.40911996129,-1601.38830001433,-4696.64690056952,-8610.80081211069,71639.181695143,-2097.48857193616,-4050.12753815914,-2411.61991758061,544355.653085669,-2064.25669344994,-3991.92324184049,-407.557407827657,755649.047296591,7006.11736892381,-1223.96393400184,-2265.85508878034,-3297.29470322757,334094.379371745,-2294.37675530429,-632.396455252413,-2859.22794040834,1180262.89514969,-2885.93961329563,916605.804816925,-2459.64742058426,-3936.22676970076,-1816.05093441901,746991.900154201,-3471.79290091387,806318.256393472,-1817.14618062073,-1928.9840329653,280261.91825238,-10897.9849841589,810621.940557739,-2870.95735598392,-633.055380724618,-1637.33613913524,-2442.10870969149,142002.390520165,-564.932167525971,-660.217398428512,-4152.27754888885,-1617.62299376478,135079.046763359,-3474.29240856317,-2228.66501251253,-2412.48456219681,-4420.99911022643,134294.00867125,-1965.7469606221,-3547.92366754643,396112.633222385,-1341.27736509948,-4195.71670856499,1065038.28018545,1180271.33681978,195134.350570643,-1513.74686881008,-996.648549844365,-8137.75167674515,92549.2872005064,-2398.37488852289,-1545.38919633317,-1033.38032605574,-3291.84892870363,-1079.90122278766,1226195.40020704,-3.49258516928135,1226214.84469975],"Archive702_field7":[800,1250319.60497194,1251190.228285,800,807.811802992438,876.520996414395,1065.89298516385,1436.27562880062,1934.69397684518,2574.82313737851,3308.44600374444,4069.61840727713,4845.55608405804,5591.48603662779,6267.60985591965,6926.63042898713,7524.71641366425,8052.87744105604,8514.59067102164,8920.21682540466,9297.52328023965,9669.08248311667,10070.6594931858,10634.4990612439,11242.015960236,11978.8476323102,12914.7280629424,14084.3981965365,15556.7189286765,17308.4899442689,19570.5669733803,22401.7295633435,26015.3296139158,30501.8612021408,36922.5913557107,44923.3698338004,47136.8128350079,56292.8611175442,75747.5345872668,93354.0995083067,114216.863355568,137099.151159455,160622.318875971,187984.596590892,216893.394347439,248068.707677964,279781.911774006,313840.365378004,349911.863775056,386049.034666186,423864.910924684,462487.920452059,501783.13413447,541670.613796614,581987.298754959,622796.374671434,663780.269590977,705100.810661959,746537.674881499,788174.644965105,829865.436410825,871698.841113013,913598.408677331,955554.784895663,997565.176955516,1039614.23314101,1081703.00160439,1123821.2539235,1165965.05972132,1208131.75310933,1248039.61388997,1247424.4992829,1248474.90618953,1208919.40038722,1166660.8604236,1124411.0616035,1082173.25765669,1039948.58434245,997740.312099363,955550.737713075,913383.494431315,871243.923659665,829142.093805265,787084.841215908,745089.365647413,703185.730749488,661408.059731074,619788.035895695,578380.760485749,537283.443904143,496528.272034368,456258.700008688,416609.946008152,377709.062781507,339797.752109109,302692.991851619,266962.370832357,232708.889862303,200098.875490334,169407.890030629,140758.099659785,114388.409178057,90177.5077552758,68068.4286974374,48899.4288979496,30844.1382321558,16607.9598195364,4634.93873505615,4330.91060431886,9895.8688035348,13213.7090718519,14673.6296592583,15090.4064201017,15058.5007990065,14879.141050795,14596.9734307943,14214.2196581029,13728.5382482683,13161.853298709,12544.9041550474,11930.4853766016,11313.1423968356,10713.8188744424,10156.0098594131,9637.82804726302,9163.84315994157,8776.53265845483,8461.54830429604,8203.87760070849,7974.85893568234,7774.18790893855,7543.13590831043,7304.67920749773,6975.47361710533,6577.50504896987,6140.26279143255,5529.03244618589,4769.59182232857,3680.69658681258,800,800,800,800,800,800,800,800,943889.373527872,218633.433006331,12541.3217582192,553682.644592419,21293.5790869699,960844.099979856,99446.3404832678,10563.2447947328,365439.315620455,15577.7922341114,267030.507051474,30225.4304374952,9119.88976327429,191722.600600454,3783.05942605187,18565.3031836656,69490.0417159622,11589.6670022167,1036565.58638194,12494.4862880757,15984.5850613576,5974.86987022383,2539.41683967117,10546.6826101508,7529.53931118574,16384.9299247749,859479.25591583,6976.23419542063,230696.188952747,12323.0639729839,566216.283647927,19644.9173534385,116289.600012588,10670.6619750972,373134.024728841,15167.3351468184,261357.209489081,24727.3269693735,9019.78823209779,189938.852701252,2462.26753414029,16051.342885938,136634.070876851,54554.6155486352,11759.0430328147,1035378.88661068,12708.2979349787,5362.55323725316,3052.58050909458,76876.320560955,10297.5355543257,901671.969129402,15498.8837742383,849055.067448028,3868.20275750527,7251.44581509819,1010.90205863745,649369.54215032,17569.5610421579,950759.735989241,1130.82858334551,404030.546454678,14627.5625119535,261375.54207084,19043.6692480426,8856.87860909783,195207.68361221,1192739.73057402,1425.06992793237,14898.3254504078,49001.0355412402,11958.5144809774,1036397.58328438,12996.7430093641,22309.3100057073,4676.00845803401,3681.07590319979,71691.7184916672,1131934.74265502,891420.970988759,14807.2074283958,840487.380762913,57833.0836328163,6879.63293003491,2133.27156112909,1321.02814635481,637644.912903966,15806.044228267,950759.900469458,2665.34476515007,14328.6112000166,14294.1791949677,8641.94334938088,1219679.98468552,889.564089450993,126085.490597326,54830.8681225826,12222.9921064321,910015.258773718,13370.81395514,25085.7519651953,3995.94806650432,4337.65160667155,77063.45317024,1141401.40085767,882900.416576458,14769.9922722948,833834.066438412,42983.6572470374,6441.391612576,3752.48446420708,3298.01336312729,628715.742481912,15197.0083398158,4352.68533136126,1060941.23159855,379787.274025401,14444.2967008606,9544.68346038638,8386.8158951297,9918.28068073768,836.854623243971,116315.875205369,616061.613880336,12543.2153020949,26352.0892723782,3361.89508228565,5000.65995099302,1152763.44734005,876160.722317789,29632.5759648618,5964.74188170108,5153.40398506414,10799.568308885,622719.640908449,6550.6346339077,1070668.4965878,375753.450615735,8112.30060216747,330618.005595331,10221.2378287416,921.075502698591,116486.816174045,12876.0397063666,733186.351191874,2902.24348866414,5639.6176274108,19211.0749402033,5513.8573816377,11017.3882379034,2211.76544919881,6843.70834483084,7255.54395760133,253930.152957415,7820.716222383,315585.859398109,10527.0935552528,1003.55658245238,124687.225781617,722072.979076841,7838.38310977414,6160.8994141905,14974.9919328492,5121.31980030994,11247.3798791411,7149.6973909883,1112958.07219662,7581.68496356833,816.215341641936,264415.347309663,13245.2959580776,304911.699958513,10839.4331531823,1102.07281182935,456413.854180213,783043.652496363,713304.879092003,7606.6275078607,70735.6869789802,1163711.16091225,1010142.63878624,825786.571741271,20530.8973533565,11486.4497482312,7451.65297002679,1103331.05640061,7890.47017472215,840.417748668603,415758.951936068,13449.7066813781,299073.635238336,11150.7463545825,1224.93484450687,22788.6717817717,461308.401499651,580779.259913869,781117.169206439,706987.558750752,7305.19417600519,51389.1349738123,8764.8253828451,1003195.20819594,6614.5765693179,11779.6348742067,19637.5068465591,7722.80096104265,1094971.84820739,8172.73492786053,953.096311139229,14656.4711875304,420280.846188586,28215.6024046708,13566.8621715082,298343.723989626,11446.0956104548,470657.794211878,586559.179559671,781323.527209114,6957.36790814591,36497.3528334736,497527.809546323,9026.40806028995,8322.49580738109,15984.7280029513,6162.22839877022,12069.9377262153,19957.6375191363,7953.12334609723,1087911.15055269,8415.99674044347,14484.9635801552,429700.691894983,31020.5224397179,13566.6396378217,11702.9251835736,484213.002171339,595586.884502837,783666.471333733,11520.6349256412,6574.72395469523,30048.3367892662,502783.895684486,9289.84766693277,8590.89801611919,8771.69191184499,12340.4555636742,8111.22552623002,8603.36445567026,818.086857544295,443872.484382832,3678.38513890587,13596.0244250856,11222.6090805249,193356.957889011,656354.247140568,10131.1005576471,6200.2628240958,35782.9803436792,512015.384930615,9545.29437963746,8851.46190584953,4357.58990600298,339832.146370331,4240.86863946043,13755.0699392506,11068.262045303,174526.784798522,10062.888667196,699646.808424288,5862.63177071231,525023.614296209,9766.16237537554,9098.99074361783,36282.3168286368,4791.438212718,336540.861637153,8420.38690486754,4921.91912723085,14102.6815990744,162021.172521073,1219413.37036672,1611.58086304737,9309.06310227688,45742.5298325129,17816.3089402404,3876.35692823733,8307.42834617514,5620.15230068275,300171.372450151,39749.6998846496,156902.137742201,14987.4854182996,1192240.15070653,2050.28395234351,9464.96189759878,16414.8804008515,10686.0711860909,6258.10680875456,32403.4510269005,159852.190319813,24477.8420869946,9627.3882636511,15285.0393941296,17043.1711336762,13423.3521157418,6809.47410771314,14073.3266795916,9331.6760048273,530664.989409713,9534.19160972697,749230.528074316,15055.7735426381,24793.8080727842,230335.772624016,13795.7844694546,7233.4053115926,9114.19680653366,9819.5576515487,994601.908128478,31726.2756466213,224879.84270871,10118.6624816942,993137.91780327,38427.5113888864,225727.937110125,10412.674537982,19391.8085779598,6490.35456921425,670972.228146252,163196.784146985,97567.4899699818,9710.37737616285,10689.8639199891,6953.55375827991,679820.875156079,35362.657310655,9982.48700600076,5917.1541864935,13242.6634828049,93701.8532803147,17454.1572299507,17589.7694071341,12684.1225742077,544547.254601715,10225.0792840044,4984.54659802215,1015.95191162558,756905.276937121,7027.5923365308,2044.79093753625,7658.02468290804,4870.25475208467,334851.030456101,3834.60947121727,1426.72827548812,3844.12766442368,1180443.91034246,11913.9824223224,916829.50601348,5456.48253023084,5541.65949058772,2769.31078475434,747201.248228469,13020.07678456,807240.018592231,12083.3342198568,2669.79327472165,284264.210565551,23781.0039282813,810623.553952851,7928.71825973094,1280.0160076205,7357.69073986032,3468.64559995215,149109.756647238,9438.18469496287,1196.83190858195,5318.3313015399,3198.39381784825,135093.522304736,4476.1683802958,2892.43784541588,15045.0700827637,14135.1065761473,136907.311577891,11327.8104199528,6326.84146173422,397400.207117899,10864.3826634785,6831.73838684054,1065666.62381807,1180316.23878844,204983.128875882,2075.75738850884,7049.06308691517,22059.814113372,92950.7437080647,11633.6861195285,2325.77417882908,1631.65701245254,8138.82107834831,1361.83869025918,1228460.08602778,800.321527463257,1227839.26188272],"Archive702_field8":[9713176.30316336,5920357.40191402,-149447.907781181,-4278784.75359561,10030205.5908118,9839193.20572292,10014849.4235695,10004567.4768664,9998406.93317033,10059619.3918499,10152377.0474342,10164877.3775297,10166131.6736399,10187672.85279,10170945.9770282,10170755.2874651,10173215.0481234,10143093.6384179,10129769.1933637,10145243.4079397,10167994.5919354,10204521.4919436,10185543.4693918,10101876.0332758,9983502.97588824,9811206.10394059,9756167.74510279,9521703.22109315,9217323.16766758,8904584.92208392,8648601.43846148,7937643.75525406,7466846.23944588,6953886.43671815,6082951.56251725,5304774.67828014,-1502165.04350496,6233041.03851913,5443006.18309642,6518508.86222339,5558953.44872305,5880973.87386594,5256003.20197848,5358757.81531131,5638956.31804989,5490412.6147252,5817686.17826989,5687324.20822736,5887337.47383866,5641529.83432896,5338100.70515675,5346373.89592256,5427665.05355996,5365180.09743078,5479072.34166201,5436269.19504901,5571438.69775206,5520613.51082043,5791654.50303998,5766777.00290595,5891773.6766079,5882420.88872277,5796796.38164862,5889298.45471554,5873850.61460794,5927661.62101251,5895869.25420011,5897668.58052991,5933113.76629053,5940800.33318297,4388865.69975307,2796430.64123246,1158897.59808939,-218570.002093317,-234083.283242368,-247382.325946629,-246606.786879781,-203336.494673101,-136026.177078989,-34279.7729184203,259067.676129079,285304.597493646,342552.001351581,541249.780014391,648902.525522955,662797.790177175,733641.390066972,840166.997644248,882931.941590168,982498.854787364,1089766.78541589,1149799.45392904,1405150.94793371,1419454.82417202,1777387.03354022,1887945.9911457,1973688.48146792,2249667.10815269,2429413.13269795,2557140.90141096,2621523.23394741,2656471.54835355,2985358.20532179,2806057.44712061,3199223.352795,3316726.57256031,3300477.65991094,3019785.22061424,3009314.01565223,2789254.36438567,2437228.4473963,2061768.36710133,1279676.90207196,572336.270387664,-249736.422226672,-513121.913312493,-743831.557657179,-853995.234363696,-882710.381453236,-947485.488777918,-964123.443515527,-990932.412898692,-994912.879191885,-951188.05408807,-959579.460183794,-890953.699541077,-906435.769068972,-874276.771391227,-880448.702127919,-769029.612840474,-793067.763128249,-703541.409921613,-707865.633074107,-782384.964153943,-706990.283205394,-813484.961666141,-716250.049335543,-961708.979187565,-435115.028425399,-653045.501220277,206361.477142094,1736373.14988985,2936553.50947936,4292167.17840251,5528712.85089449,6966376.99729692,8401378.55803422,4889266.0795809,3313655.24003819,7259376.26083543,3264151.40830952,5605615.17932791,1238804.83307579,4009754.81244508,1794435.08797985,3162287.32256718,6393242.69615078,3350206.26637302,4080184.10402737,460039.504282534,2523086.66406754,1692280.86825331,3365527.57216528,3244232.8912483,7328546.64874491,1483708.18061178,4808050.5479766,3688226.20323336,2826135.74027839,7542025.38450406,7430713.14133209,522216.955127877,5289569.56468708,4794800.47914896,4255107.03783379,5073712.04864815,8817450.43121818,5050997.81213836,4630201.18616806,4730578.14248117,483645.803984147,4731666.03771002,5465081.20707537,3842541.91395807,3825443.0308765,1891313.01511809,4030591.33297552,2458079.72911354,2989725.74571242,5411741.18441666,3383313.67566355,6039219.92521188,2952879.7872188,3417740.68114385,4059227.09142945,6388854.00471235,3539747.23869182,8865378.99528581,4874027.33020817,3607186.30280865,3657521.72526688,2575424.80210313,1962560.89224887,2269331.74302431,5082358.83356182,3487878.46659463,2439838.87388799,1040883.59606217,4858815.02703842,3900214.56359626,2542095.96160631,3317542.50534755,3289105.05276195,3716579.06426278,805413.596666298,3064985.49873917,1474034.89628467,4632139.90049605,4819051.05928203,4439784.85475192,2053366.46855355,4612239.97450589,5237306.52040454,5186448.77388265,4995532.01008862,1341932.38536351,3479345.52246159,2890879.93205853,2429266.74386185,5044343.95022606,3305975.59912452,1616181.36786353,-408532.734692922,3274109.94199365,3261881.29646895,3514849.13003382,838432.357429288,2805707.996459,4150150.79454797,4679153.17909244,1728105.86958921,3854279.10849109,3274513.75551424,2809774.83617638,3310326.45870681,1223903.14272363,508565.943666083,4754768.05961054,6443470.93944431,3972089.58522442,2874255.95294902,2831842.6587862,2414444.56145119,897953.216310663,1466971.19700601,3383701.82610621,4682644.0023671,956322.698626899,-201247.916393726,2902422.04619678,1050214.09530705,-116388.100657391,3557109.78405792,3186955.86412914,1085836.75605238,2213426.0214841,6050751.08444292,8887062.15639634,5639878.30999399,3381216.81334719,5116891.50023423,1880812.58549834,6694043.05480143,7591487.53292297,2805174.27309961,4392065.44220142,1227409.04535717,2584544.65179267,6038645.79538213,167535.753291768,8915132.02812698,1892020.03311412,8769864.45972279,4739213.92682319,2515996.1283207,7427456.16146135,4617523.3813602,7455790.33573321,6389647.43758404,4002974.99843238,465530.915782256,5075008.39799067,8939063.63024833,1610481.15724764,4038240.96751051,7405549.45202545,7504060.57500331,8908088.62659583,7395424.21085191,8747659.80960491,3917296.95435331,8746921.29696483,3938214.07880794,6086195.22923981,7440068.02249159,2762907.65030938,3288518.09896918,542950.830525882,381794.332339692,4494074.76237025,8783217.49818498,6163612.10787127,6024185.49923574,4746976.62734171,7438444.29035695,7933350.04451037,4788907.94769176,8622745.23251797,3029993.41929207,4628110.35318534,8231107.95363831,2421410.50363857,1511900.7443904,2805619.7509415,1904751.80287945,5174895.34445769,1326229.66105016,2344380.14537344,4764228.07372059,2846440.24169054,4676621.86386814,4661220.24295765,3503388.59741273,6059557.98256744,9137941.00546791,2537826.72735676,7216745.45826855,3549748.56692562,3213550.92892908,9243212.80297927,7419585.30823022,3207160.06597951,2024066.1472244,2670709.5621718,1658242.99604464,3280752.39658949,4286128.64271009,8755795.57978924,1215041.5127898,460677.033316811,3269186.40081057,6123516.87536243,3276940.13614813,2289570.86714422,4693685.96221259,9088940.4401222,6720776.0435079,3186577.69929993,4882770.58147728,5914417.6916419,2385278.85022352,1813652.6186976,3241634.4566976,2922657.39310373,3480232.71478222,4671245.34718575,3934817.79413478,2291420.61155348,7426790.94918547,8753523.81336378,8139906.11244763,1655097.13140974,1809542.96622968,7542986.2741304,1913305.09046083,1086448.23941322,3311149.57150519,8368141.8585126,2948274.27972709,6514849.88550566,4734418.16881676,472285.69893242,5019012.6780984,3219440.02727763,4919574.44729376,8905244.99073784,6029402.99959225,5366191.49229329,3050390.07401743,6047728.90468196,7429071.09810898,516924.424018159,440369.141434074,557029.958331718,1891522.94859626,7151228.59030425,5117428.33521917,8759673.74537033,3597727.66472167,420050.475945689,5173861.66146678,1772639.82761647,464029.663179945,7422991.35717793,3027733.29945675,3186664.27779594,4639392.80821976,6051250.39539112,8759502.98408281,3685496.29888777,7368906.24998094,2333216.1837122,1815607.51571652,3280370.59589108,1803912.66628582,5111562.11321463,8803906.65837702,5080414.16327983,3252141.90261877,4668199.48367603,4255640.28724054,7385723.36917315,2675589.16747305,517490.705078674,6003145.54230567,854310.332753876,3180183.41540681,3832732.48359012,8855173.90673231,3270808.18507689,5721421.29315847,4997616.83942784,2456211.50626549,1893146.53423591,4645350.17517343,4910164.08714368,3694863.70987548,4368526.94785205,4651869.84571941,4845776.68671915,7547523.14923828,1861725.25400859,3442035.88375731,4639014.01464163,3305125.64637161,2009736.63692175,2659255.75534961,3491309.56729218,478540.397485789,3025125.46354165,3742777.46423289,2117318.00092399,1966985.33781721,5518320.95617702,7416590.04479413,2172033.20661272,8800988.08628438,1424117.34630068,905890.775950293,4010904.39175878,3322594.17869083,562466.611330181,594489.672287758,8764662.1024522,7428691.14130705,4793333.27546701,4821162.89665628,3906846.46476284,6052664.75215426,3581685.29952223,5736380.92688801,2617698.92912219,4615264.58801168,3047490.06053443,1907096.19084586,2777485.65077526,5275057.22829979,2791135.72059362,6046697.23619089,3246363.63278608,525981.145754455,3272061.76156684,4386868.29427491,4639036.70407209,50163.6059073422,1792084.33381097,5197394.35824284,7951502.08405713,6152345.21272837,6154785.57056715,3035354.45898913,3239477.37376631,886619.105731714,5238373.74970513,3880063.53317228,4555031.69603482,6285375.93034049,5376017.66790272,4013045.1042307,2952323.75840407,5776377.76897077,7477030.02497639,3522909.10690104,2284722.61953619,1094779.59744861,2442010.55623374,5999375.82429935,2856260.37444641,5570659.83148092,2689551.25171271,4117000.5555038,1883219.74562435,6957933.08028469,4234915.09449594,3723958.2394029,4341561.29013792,2950227.69656785,3983491.55618979,6293726.03406258,6727023.60736387,4541085.60857796,3771993.10362743,8144601.97945153,4158577.04023828,1305519.22652627,7059392.86814742,3800050.02858552,2355506.67521223,3090591.13105096,4369188.69836375,4154901.02049939,4022689.96135201,3961787.73416486,3970804.95137914,3619216.57507067,6096320.86165534,2592108.82330541,1857602.53156495,3370819.06156315,4411072.03723315,3670078.50740301,8131304.72483335,5153433.34867064,4519582.36413231,2539758.30498398,5155511.89596685,4987742.36402284,2960426.47779446,-1515043.98445663,551493.675481703,9543127.69577746,5045111.23968483],"Archive702_field9":[800,91254.709132125,-106164.512089802,800,805.968237481042,880.067820560787,1091.87130128144,1474.6735268278,2021.9411475202,2699.07626391807,3461.7889962764,4265.65161175622,5075.07185509006,5858.94661381402,6596.69688872377,7273.25251818014,7880.72290578743,8415.1448236679,8878.43961685252,9280.07312415418,9640.94460975138,9995.57004337128,10386.0339450532,10849.3005305061,11416.6502936142,12124.2658513117,13010.5426281986,14124.9655174647,15531.4748419352,17303.3337991421,19535.8073017453,22357.1682707152,25948.7719461385,30485.1351696394,36000.3052368941,43502.6150294906,48691.2988888817,56337.9068434724,63835.1119430993,72606.4740505265,82187.9874877476,91667.463064911,99976.3210629687,106920.229535022,112456.059920414,116796.690216939,120077.27154978,122382.59774261,123821.13462112,124540.158120324,124616.284869141,124162.638885978,123294.356418684,122081.62748461,120595.860472199,118915.264402086,117095.500333486,115167.04595703,113191.516210775,111192.396969721,109190.904510276,107206.778492852,105259.44166476,103350.460247812,101482.09706584,99664.5391878506,97893.5672504225,96164.3172107288,94479.816045241,92843.0996480386,41899.55013854,-7453.55040883829,-56804.4328819319,-106324.520418787,-106495.434912592,-106670.451415965,-106849.153381354,-107030.739078704,-107215.646676964,-107404.734464217,-107597.920532034,-107791.341891314,-107978.735965656,-108150.138429153,-108290.098220445,-108380.173447667,-108395.12471083,-108302.082500895,-108060.29324788,-107624.014940478,-106938.456917263,-105932.580714168,-104537.452246698,-102682.476424267,-100279.696679219,-97254.8579349232,-93531.0909861116,-89003.3758413725,-83572.8352660275,-77215.6172113163,-69753.3942544996,-61154.3998447545,-51554.423043786,-41179.9920433051,-30258.0124874436,-19268.5143899825,-9131.04576144296,-789.295972671228,5512.36572779194,9922.48679145959,12617.1364833743,13930.4932686481,14368.4382385567,14454.8561585413,14464.2223732985,14313.6646166998,13991.189033026,13525.3574538714,12961.3447621519,12334.9524164448,11671.7213303859,10991.8612741266,10306.0929321038,9626.15795023712,8962.04925046034,8321.93195368138,7716.22279552136,7155.2560189706,6642.06869942778,6180.0714789094,5761.15779540206,5376.6916483835,5010.37009476462,4649.1476020894,4278.9738358523,3886.22571660721,3454.78217726872,2974.27584548827,2279.29552887049,800,800,800,800,800,800,800,800,61162.617283282,50133.3670918631,12600.4305280787,29244.6700324314,20547.1800705072,-65621.8165989107,44361.3615606061,10561.1503369742,34578.6873417262,15334.7948022245,13385.3521287829,29555.0282245164,8572.79496893331,-51741.9334197452,2422.91401109744,16158.8409057003,39741.4657365475,11764.3947854411,-55352.279159807,12500.8234477299,13261.0947458934,4598.36817776301,2349.0318442391,10801.4628279272,5864.28375854276,15702.3978915982,64174.0008751834,7600.34583931858,83734.2369920862,12421.9823906463,74894.3512607616,18146.5798077555,68551.3542565996,10491.237991792,79736.3656153586,14697.6609429674,-23171.2103947212,22692.6566731058,8712.46047525465,-19002.7656310161,1647.82901071377,13705.4786067878,72618.6472556068,18274.8283383111,11892.5080448517,-3678.64284410138,12649.1753284339,4305.42410374655,2620.85277734937,17787.014726909,10585.2442994104,62652.5805483448,14626.4594670337,21145.3196966527,-563.647655703143,5996.56782252893,906.026114974175,71996.0645891584,15722.5733352915,-23090.6810753857,949.015941139025,78917.9777233653,14051.6421051687,-58659.0185026047,16149.7318682899,8750.52624750679,15177.7924885742,-73479.4908881857,1103.68396810479,12832.6553187828,-3494.7446811535,12054.7444293046,47992.5368717131,12939.0454519788,20390.5583576454,3958.10986752623,2933.38336910627,-7530.19548802296,-56380.7537903525,20048.534005977,13924.1289723537,-21887.6979342489,48748.4907826358,5980.01150554197,1405.70082103228,1032.82952758973,26927.0651469369,14001.7519374857,19058.3263098377,1657.43471852108,13696.3299817477,11607.9586412107,8699.40201734688,-40464.6889674124,856.319725506886,46569.8921380495,-22801.1357345673,12292.6062201488,-65011.7342042158,13263.6002093535,23980.3673850777,3589.99720375691,3259.6974427916,-30232.1526602219,-6092.51098754108,-22557.6176850635,13864.9964401954,-64932.6883355168,36120.1734698517,5885.6227952417,2334.02631395654,2040.4048201343,-18198.7018600595,13515.7421070908,2669.3099755442,15926.2115046587,-12534.201205865,13844.2729027871,8320.95542209331,8576.44655245136,10238.4733534396,829.658457108053,17709.8883384168,73624.438175035,12570.1354365596,26016.9021584338,3237.94651961098,3573.64818660816,44193.9392606344,-65170.9433978602,25011.5724546063,5730.19836674326,3226.07689391747,11049.1678575932,-63312.0289983812,6833.80859028717,56909.3239549911,-57917.910283511,8397.3478525747,86660.5440896589,10509.1187977827,901.175745692153,-12168.1692518498,12809.1678362391,68874.8466813859,2932.74639093586,3854.89906318988,13380.9701810573,5532.23547960799,11236.1663312478,2215.06691696603,7019.0627876867,7580.19672019016,50482.8464674567,8167.30818954968,49629.5064294203,10788.7993849537,990.925036448406,-41070.9498123535,24574.7656049844,6415.46722238086,4090.01706719406,1793.50491530101,5309.22550887401,11432.3571993488,7148.79462331591,55562.5462381304,7825.99229206957,827.944655968052,85501.3357920681,13328.70894868,12422.1498109813,11060.6793148658,1093.17253866906,-60489.5667322278,-64247.4680715773,-19749.9123745405,6554.50451715967,53713.4307878206,-56251.3096819369,-24459.0856513065,65782.6651337859,-9247.89427482875,11658.9263192173,7216.94982185192,14961.5388199317,8011.55760799122,846.590484055384,-59338.8006919713,13456.2941640401,-24904.1923248549,11305.9639467681,1242.25173627905,22572.9546685119,-14646.5722635255,-62805.3761890386,-20346.9409897536,-64091.287204829,6600.35307336557,35791.1124010302,9125.91663513745,-65835.4146859398,4554.49000417939,11905.7980888257,19033.6297008646,7212.78618475898,-25640.2755851638,8133.52581059725,947.427844717693,14476.144803314,-13627.1402000251,27209.3361782536,13428.488158236,-61345.9669568386,11503.8581896172,31431.0614117018,-17376.8375310789,23522.7953449123,6564.27697341255,18798.5246192651,-61427.1268204139,9353.99580732475,8680.41998600117,15900.1714591755,4405.89992077264,12127.903035398,19839.2551729887,7122.72101513486,-66243.9911299024,8179.53342572292,14488.0061818758,32420.1728141117,30340.6187064849,13328.1346404073,11633.3633798631,77322.1664928164,28095.3283794409,67363.010790367,11696.0988464538,6460.23036385962,1339.48505332438,-15607.47146837,9560.46193695963,8903.82739289942,8053.09442167125,12281.7524957237,6934.22897898187,8133.73768808037,822.874751032342,78242.6470341741,3763.90061651279,13273.3195538042,11106.4697990027,80305.8064924124,-63241.0880218856,9871.48569547435,6301.35012763644,-14872.5012132251,30365.2333846857,9727.08530269058,9090.46574727076,4487.73013250164,-11366.9815970684,4118.09430154758,13400.9163839954,11108.2920813429,48330.2538909228,10000.5578990042,70538.7886603716,6098.0944781782,76192.3676126191,9832.49068707954,9229.36419186696,34584.3304848536,4729.7501351671,-56173.33591523,7480.85070052349,4489.97882164554,13798.4516688698,16002.0413061251,26522.3915153815,1622.82955058926,9301.27359557077,43154.7753207978,16841.7414211189,3955.47636241128,7698.16498917273,4837.82911833632,86598.8142590297,42115.7524974903,-16551.3962492774,15283.7644065552,60500.7392148362,1862.83044779684,9288.68824373318,15190.7807241548,9408.28951127544,5121.58111696574,33740.8506444296,-47384.4216912597,25101.5242556864,9254.04984384935,14049.633852461,15773.9911172459,13224.5916411356,5312.80576603507,13822.7539676803,9664.33184019368,-61594.5382496405,9877.93580748611,-64401.2837605433,13783.8238893317,23860.9690001459,14310.1673444955,13611.0278853467,5396.96280717061,9472.16226597426,10138.7139147476,59745.4432126321,32407.6998540295,-21201.9558748799,10400.6169100798,18008.710719364,39863.0264361139,-55466.3613031098,10640.0319761503,16327.1832745184,4906.81694998087,-18990.1523897437,76960.528090715,-35335.2546507501,9994.40992766014,10836.5794375241,4997.18120107913,25747.2332431605,35470.1533302142,10196.1843294637,3812.5108637819,11240.6564888653,62262.75909745,17379.3066368363,17221.3366382779,12688.7589772039,-16517.3312084466,10344.4692573999,3190.69973134068,948.917959788299,46229.1958313975,507.464368259893,1700.20840974356,7628.70339481586,3785.21150750544,23323.8601095248,3245.16000267852,1329.18537710498,2731.17961413032,-23279.6967549571,11920.410439338,-22823.9249422853,5114.48452485162,4094.00571685145,2215.5360939193,-20048.870261501,12886.6967759321,-42632.2610985019,12192.3330810091,1959.48626459682,50193.2301920531,21633.45709188,832.707072955458,7685.53652245609,1154.55782746853,7502.27218758972,2617.03182109707,47670.5502039119,9780.56776824854,1011.2792073375,3522.64518610787,2908.87515129686,1311.62055381892,3010.83769787239,1979.97635583785,15452.629834476,13725.5083836685,-29072.5226523504,11505.4536789463,5488.30174503799,33563.5654124262,11103.2836130417,5631.98793613524,-40496.19928026,10215.6350085174,66091.8479699794,1499.61816893886,7314.20683838298,20689.7015135652,-10030.2597837084,11740.7438167605,1823.31908689551,1302.00707248517,7720.18899782471,1201.86158237579,-81564.0422083557,801.487346050986,67371.1175887076],"Archive702_field10":[-5.19209209517889e-18,1336275.52261194,1336266.06420124,0,1.04616532869765e-17,-3.9982190275606e-17,1.84245631450921e-16,-9.28367692345481e-16,4.75039235365286e-15,-2.36658934670865e-14,1.13280676699494e-13,-5.20940554023689e-13,2.31308998329214e-12,-9.96592055159429e-12,4.1876652349421e-11,-1.72314427285792e-10,6.96797493889667e-10,-2.77683237770394e-09,1.09338286337776e-08,-4.26515249497421e-08,1.65367553104002e-07,-6.39861274829286e-07,2.48127868801276e-06,-9.67330975318924e-06,3.79891521522628e-05,-0.000150564955782704,0.000602991802099479,-0.00244315455565644,0.0100259097383737,-0.0416858274247122,0.175645711525038,-0.750188722229974,3.24951160436741,-14.2474438983832,62.7951146620101,-283.174532548755,1182.93467016523,19512.8495313404,40567.4654906062,60532.4515193177,81584.7525564778,105492.122641629,132354.276680787,162149.345539258,194659.241553579,229495.253546954,266322.700026655,304901.640009094,344984.122400288,386300.886665319,428644.52980706,471835.527894714,515693.902393261,560073.804223552,604863.735714042,649969.315761367,695300.595944598,740804.04754145,786424.227075784,832127.05537428,877883.614580422,923675.85508882,969491.543326443,1015322.13623285,1061162.8486766,1107010.00131982,1152860.9402838,1198713.83143263,1244567.32110856,1290420.93299381,1336275.15280334,1336272.89441399,1336268.27011759,1290386.29235769,1244509.0573805,1198629.49799545,1152747.55577224,1106863.62994707,1060978.43678478,1015092.67808221,969207.582518054,923326.224581811,877455.155679095,831604.349952233,785791.452551985,740040.613673844,694384.783528763,648872.144944859,603563.811527912,558535.93137595,513890.342292133,469746.009715855,426250.278587335,383573.837642571,341900.01826091,301444.165949299,262439.612773056,225143.382517923,189851.873887159,156878.898359166,126523.553552716,99214.8315577701,75235.1648524742,54546.8886447051,36920.3612987059,22302.1687917127,10847.652935695,2481.95815689429,-3099.33889035293,-6307.05217874732,-7620.11827806013,-7678.37359047777,-7126.51782850245,-6425.06171681127,-5729.13574099692,-5107.99833540072,-4591.28053515874,-4191.95175493427,-3907.72400766129,-3731.11794612026,-3650.75636108793,-3657.99345433656,-3743.34017423266,-3896.88438806368,-4107.18327754859,-4360.08495091008,-4637.63911715048,-4920.84743739158,-5186.41719146825,-5411.84854837468,-5577.15208228116,-5666.56375879135,-5672.0748593358,-5586.67929275955,-5403.96865196308,-5112.80153565336,-4688.54580021091,-4113.31716751449,-3061.30731347392,0,0,0,0,0,0,0,0,1006089.3717319,220540.066169136,-1552.8548909422,585299.905828638,-5874.11586624676,1024301.88742745,89330.6424224554,-2524.33745544451,381613.157995488,-3150.27383527756,277310.523370189,-10017.4110255071,-3785.41739473022,191092.414077498,-3265.11280395624,-10197.4783090219,55517.5450038301,-1200.88340984794,1106898.16069745,-2646.99123471043,-10727.612354285,-4254.65322225226,-1242.43546280713,-821.744264261161,-5137.13274949248,-5213.05078371192,914400.086742448,-3883.72156451119,224032.03103908,-771.939167499109,594935.836226644,-7696.86430281499,95637.3550604642,-3105.10821147304,383350.547757786,-4314.7742828787,270688.883035556,-12001.1321896045,-3230.04155463221,194556.96319727,-2125.63185834766,-9937.77449451007,118697.185318112,48730.5175335958,-1727.08627456991,1106933.45056195,-3048.14001230752,-3628.80643701297,-1896.74252339574,73330.5631920547,-414.664529503762,960240.651093078,-6023.44342596569,905139.8253554,1776.73155856023,-4580.99147137261,-624.915623489016,685686.450081394,-8553.7051471001,1015171.66657292,-885.817161846561,417595.062677064,-5083.77648185203,265781.665071124,-12088.7644291347,-2688.90507841759,200498.303407981,1275098.37742252,-1051.64223863086,-9090.05780644502,45951.07435953,-2170.70241014028,1106970.53586916,-3374.46717971285,-10154.2821947504,-2940.97331673901,-2564.736639054,69594.3376551771,1210116.68265758,950998.969223922,-6366.39251943114,895895.997921989,28054.0457221586,-3961.37779791632,-1864.6590770322,-1234.36886679942,676218.822204302,-8613.60393443047,1015215.64234655,-2439.88748192305,-5491.52729262724,-10708.7369683044,-2157.69864607025,1305687.38382988,-334.935069339737,118289.347921983,48542.7668082697,-2547.21836810302,969251.913541063,-3734.65019079886,-7697.01537295663,-2209.22430086262,-3234.22362515482,70618.3613318836,1221601.66957231,941766.780075184,-6431.2518075334,886666.915139594,18631.3609616397,-3268.23923911657,-3307.3579824358,-3000.91247961195,666928.170999761,-8222.01579995771,-3808.22843122169,1134461.6584084,398393.175562022,-5654.61385088926,-7799.2057074985,-1632.09774817756,-365.393712519614,-148.259976296592,116108.899896578,649307.142741631,-2925.74931950125,-4079.8426851186,-1457.75199291335,-3880.58712080144,1233085.34238995,932542.847855124,13439.7179962797,-2508.4676022171,-4377.55658989642,-499.757581865404,657777.774903248,-735.758459051914,1143661.53366923,390295.616215717,-1105.20785710375,334900.211831922,-741.619245690293,-259.959673904526,116433.616345019,-3371.9218716643,777003.041241921,-712.251402992901,-4471.23092832116,11517.6468470614,-1695.47484398096,-981.261957701614,-617.759447952963,-1461.32050803029,-645.628230705541,258784.489616184,-565.269932964561,325900.559074809,-1127.20544608726,-327.401727447257,119998.703546589,767647.948890885,-4929.15888424169,-4983.68396509972,12267.8841676148,-849.97153454956,-1420.04971890643,-2166.64925921634,1189521.95918387,-1262.90348501634,-62.7627778969428,261719.100398221,-958.13829388827,318016.609369997,-1531.6246186535,-335.897731215674,477560.959548797,831636.749354553,758368.239607392,-4375.57798588077,45783.8037919139,1244526.74231747,1079387.18124995,877744.08738993,15701.6441237419,-1815.63372743423,-2845.47907354443,1180328.99609364,-1854.84650069865,-56.3711101495891,433574.59229277,-1921.21597659041,311137.351615172,-1973.12071585281,-237.908868021018,-3249.31882220123,486222.160427755,612298.913661893,831701.681630901,749151.048866512,-3758.58371063896,34189.1821033687,-418.041104229372,1070182.15665632,-5192.61960007834,-2205.41378606146,-4997.51521828188,-3492.94049481946,1171135.69027015,-2428.74660963059,-131.548698404286,-2696.4504822811,441989.27659195,-9236.1827578595,-2809.25725327647,305637.688965901,-2466.40650282207,495423.347515044,621382.091802691,831796.388858372,-3084.78803650806,27960.2768507483,522093.787440337,-830.037294229286,-487.109925444387,-1694.49932320118,-4713.63800246521,-2639.30582648552,-2603.12775381375,-4103.34170679616,1161942.09001219,-2990.4669936461,-1363.50069181781,451125.238495748,-5024.52326085105,-3558.85854433622,-3023.04260974793,505294.202012883,630669.157345128,831935.750177506,-623.137797727997,-2360.64139599943,26544.4509335341,530941.124191881,-1256.61479250647,-956.426134816629,-4056.15093830854,-3144.19198362017,-4670.49147963178,-3543.89529844011,-79.5461543591294,461135.45255022,-858.078315296119,-4131.37684200823,-3025.22370115653,182423.021383797,694283.08864806,-3261.5999162505,-1594.94261228237,29951.9019059666,540186.853202705,-1708.52950681235,-1427.02019565915,-872.083983821227,355589.341767936,-1731.07426214673,-4535.71091354785,-2458.63762461531,172446.722140995,-2672.88484215915,740442.538988712,-801.394330937879,549931.628286698,-2192.46950897119,-1911.51552331249,8002.59193115624,-1745.55461306732,347925.400771628,-4370.51866033875,-2579.10443521736,-4818.04000182711,164936.135601403,1305706.05575323,-480.784965137638,-2416.60498039407,10569.5951045091,-6301.51218088537,-3943.57540111649,-3792.19250271655,-3369.52805465184,301067.379119488,-1552.82941298732,159459.937729355,1947.97912145978,1275137.04246769,-1026.99243785312,-2947.3299500748,-7135.98729560844,-8006.36481513407,-4079.99285111857,-2241.96980366163,156837.578834475,684.445112122553,-3482.28858080003,-7367.24405147276,-9694.10882631982,-3991.31030166213,-4701.76352385056,-3548.86607850443,-763.960770411911,558031.150046795,-346.903481765257,794955.928850515,-7259.51460796359,-9970.80998094991,238046.262212232,-4247.21769110142,-5231.77113336221,-374.907996915323,-706.947680877548,1061120.01068924,-8684.12816741091,231740.026627022,-1088.07685078633,1061081.00779484,-5914.85161645459,227510.428160118,-1500.19244234889,-11693.7367921639,-4699.58559809143,712605.462154119,149268.101516795,91642.2012972928,-1137.71481491276,-1954.0688834797,-5235.71651984804,721892.707355698,-5848.46576943233,-1565.72848992884,-4888.93248893603,-9252.61978161742,70862.9091841533,-2055.41198740186,-4066.12853970343,-2282.92889409852,576028.042691666,-2033.06670984694,-4195.80464107985,-445.818255137187,804374.136753562,4392.88732752315,-1279.74120271551,-2338.97240117258,-3480.46595671663,349495.51477167,-2434.32997026087,-674.118641351942,-3039.01070657529,1263645.79781939,-2794.36576066739,978469.336122578,-2573.8361339629,-4119.14384645267,-1943.30668287076,795024.221572688,-3311.3753121498,859180.768309611,-1675.41885770081,-2085.21742401012,291865.020293306,-11440.363347074,863837.784507385,-2956.321920886,-687.952931604593,-1699.30087925753,-2603.21411398361,144433.117590929,-539.221695087513,-701.761295190953,-4367.11059066859,-1719.93281025437,136983.23831422,-3672.03881203775,-2395.76297450548,-4974.24543070377,-4291.13015068308,135985.325326802,-1848.31860479864,-3706.16455345283,416133.379706477,-1238.68647646353,-4362.91096818465,1139017.36856625,1263655.09845489,200732.634969473,-1634.45627158264,-1036.19557246529,-7910.73062256104,91869.3917599298,-2291.67308803419,-1665.42894396211,-1099.77643254986,-3381.17961559451,-1649.35098458738,1313327.21604293,-2.72858479598438,1313348.25321171],"Archive702_field11":[800,1339387.80577942,1340476.74279084,800,805.968237481042,880.067820560787,1091.87130128144,1474.6735268278,2021.9411475202,2699.07626391807,3461.7889962764,4265.65161175622,5075.07185509006,5858.94661381402,6596.69688872377,7273.25251818014,7880.72290578743,8415.1448236679,8878.43961685252,9280.07312415418,9640.94460975138,9995.57004337128,10386.0339450532,10849.3005305061,11416.6502936142,12124.2658513117,13010.5426281986,14124.9655174649,15531.4748419384,17303.3337991923,19535.8073025349,22357.1682833014,25948.7721496033,30485.1384989612,36000.3600034217,43503.5366633558,48705.6662198588,59621.3975375997,75634.9176843576,94529.7718234225,115805.60062876,139755.18496354,165870.188186365,194227.561748151,224807.886283018,257506.384864943,292140.944909006,328546.055082792,366532.015091667,405880.063593972,446391.477727904,487898.684440543,530227.969170137,573224.729008382,616768.595459412,660757.861503833,705091.678378963,749702.664613287,794528.403692303,839523.189334126,884648.118958357,929876.539455038,975188.906131046,1020568.64441245,1066004.31867621,1111487.36537742,1157009.72257845,1202564.93611468,1248148.32949105,1293756.55571706,1336931.88169832,1336293.68170296,1337475.09633567,1294759.31630049,1249057.27313015,1203366.63518236,1157688.9344367,1112026.38206444,1066381.93824475,1020758.99314257,975161.858623125,929596.842930972,884074.067965216,838607.326048206,793218.098807857,747934.737716671,702794.230665963,657848.311968171,613160.910008881,568810.438749069,524899.149807819,481542.340091431,438881.964676166,397080.067352253,356302.736521749,316744.522567969,278608.354744655,242097.384543437,207432.284885618,174852.052580775,144477.491719751,116548.030534234,91204.1038865939,68345.8470245598,47735.3160471078,29473.0788960198,14179.1244761747,2604.43936866442,6323.92895866085,11757.3233055884,14739.6857365319,15906.4786707428,16038.6805496955,15818.4792135323,15557.5295340551,15197.7841066986,14725.2581474959,14160.0760510208,13537.6055845712,12886.9039045,12229.354063981,11584.5556833922,10964.8596518689,10385.01924971,9858.36098157557,9394.9397135296,9002.65465354791,8684.03294553275,8427.09913860491,8214.7056061051,8018.4515021552,7811.45043601023,7568.10687665157,7268.11935414946,6892.93074673671,6422.10945588742,5823.91462961546,5075.99201394411,3816.64650910428,800,800,800,800,800,800,800,800,1007946.76926157,226166.476918783,12695.755503524,586030.059372656,21370.3496943766,1026401.76315182,99739.1301100998,10858.6452207046,383176.57544997,15655.0361501839,277633.380600135,31206.5412534923,9371.3498724407,197973.580035265,4065.89152926283,19107.5038474079,68275.7782975887,11825.5277104982,1108281.28783427,12777.9947357927,17056.9135743654,6264.74771558161,2657.3664565675,10832.675701734,7796.1501323805,16545.1261107199,916649.235543741,8535.13620675713,239168.922262367,12445.9445841546,599631.397674827,19711.4200101157,117668.142899321,10941.1046793904,391555.271280749,15317.9148158821,271678.811080646,25670.6805658871,9291.93930121831,195482.779369874,2689.54480270779,16929.2500053857,139149.163603942,52044.5260319164,12017.2615265156,1106939.56311362,13011.2564352599,5630.71157762752,3235.19728619408,75456.9373282484,10593.3631840992,962282.41897118,15818.1916553881,905386.78363972,1863.99402117161,7546.14527497172,1100.63747778088,689455.829724828,17898.7481134057,1015434.23822765,1298.19232040476,424986.686356416,14943.0060285467,272177.83513664,20173.0529380352,9154.33886903064,201071.964864088,1277213.80656753,1524.48998013239,15725.9719399215,46083.7767026695,12248.6249109539,1108010.40197186,13371.8333056965,22779.0323988349,4931.121350482,3896.48713816115,70000.5405532746,1211429.39333836,951210.272852828,15310.5297540682,896163.327978499,56244.5093761666,7173.07825582843,2335.15487105447,1609.4729983398,676754.728347576,16439.0763140184,1015394.51459364,2949.60010350621,14756.2301071307,15793.091884504,8962.99385845334,1306314.2559682,919.491692711687,127126.412226404,53631.073084437,12553.7440271197,971429.769714338,13779.3578428458,25185.3541879964,4215.29974432476,4591.93095288373,76817.5501540594,1221616.86211021,942036.896394618,15283.9499507992,889041.322109181,40642.2753149364,6732.15741140758,4047.99896964208,3628.87414225377,667176.421962345,15820.1399652513,4650.57195728708,1134573.44346306,398590.301605874,14954.5494753106,11404.6441770158,8730.35958747755,10244.9914189443,842.801385868807,117451.763631512,653467.92079787,12906.13474182,26334.8498050935,3550.96304355645,5275.40688134838,1233877.04650192,934817.316350693,28393.7453759018,6255.20447576256,5437.88321161956,11060.4641849202,660817.686031904,6873.30199822102,1145076.58029831,394569.578615502,8469.76595689307,345930.920541922,10535.2540079244,937.921508805697,117067.721247664,13245.5516217918,780049.659063177,3017.99659618971,5903.57119053865,17655.2131643877,5786.21329959462,11278.9320794612,2299.59739567006,7169.56763303605,7607.64208733992,263662.53024153,8186.84635010326,329657.795772679,10847.5243390585,1043.61119148643,126832.613200828,768041.204975959,8090.41574874505,6447.11916082918,12398.2918916769,5376.83244239794,11520.2140751667,7469.91523237133,1190818.91483344,7927.23662873758,830.320130814252,275331.374774983,13363.1026048907,318259.129705835,11166.221423506,1143.61422041525,481376.627775613,834114.752315661,758625.365964003,7880.81291339865,70578.2497420733,1245797.34394655,1079664.26907516,880205.681633608,18222.6555887733,11799.452900416,7757.64886348356,1180423.81654357,8223.47316207185,848.465172975665,437616.293514539,13592.7526078379,312132.456443505,11476.8473948618,1264.82805383631,22805.6211332866,486442.711293019,615511.555496549,831950.530521683,751887.616012771,7595.49947027626,49496.503914928,9135.48645646764,1072205.27430732,6907.0020637964,12108.3391965882,19678.77582439,8014.0450365218,1171416.33450991,8488.4069297745,956.51690052935,14725.1354346881,442199.298475593,28734.2138781941,13719.1916865015,311733.419091195,11765.2842840276,496419.384074069,621625.014374156,832128.928963936,7252.97521117075,33692.1594652466,525694.982659343,9390.75074066289,8694.07655894718,15990.208891303,6452.15757170798,12411.7672908308,20009.3058330776,8220.13186160517,1163828.8907321,8709.0562004505,14552.0258817341,452288.678183682,30753.8449220766,13795.0950388687,12019.7308683801,511176.044058189,631294.648720518,834658.533560973,11712.6866662169,6878.02327377858,26578.225967338,531170.47218739,9642.69221663743,8955.04847524046,9016.91134472852,12677.8305555831,8360.44389935517,8872.25352798289,826.710618390659,467726.220575254,3860.47228278701,13901.413114791,11511.1098438942,199316.786265458,697157.401450263,10396.3582012953,6500.0657971699,33441.108237049,541039.632348266,9875.99420622894,9201.79081163672,4571.67936506932,355770.977244606,4467.13764926776,14147.6935725267,11377.1284572865,179091.276779006,10351.5927117897,743794.914105845,6150.52754960473,555184.719415508,10073.9662327841,9425.23500937672,35498.1322424459,5041.57686129189,352430.884245327,8663.9806419389,5178.00053172877,14615.4294469011,165710.573449878,1305975.39842156,1692.55130881405,9610.08169220884,44430.2934230891,17982.0274124382,5585.47940627172,8581.51899014297,5895.61785475522,313274.514445314,42144.3695837973,160316.625645783,15407.403320895,1276571.50858022,2127.1696558212,9745.07481366228,16783.3886236492,12353.857255165,6548.04816741895,33815.2544099588,163839.279642201,25110.8539295325,9887.55643586516,15864.0630452031,18514.7114939306,13813.7750813798,7094.53912117109,14271.0538396497,9694.48018080959,561420.209437401,9884.02538657592,797560.313809928,15578.6505627203,25860.4503692827,238476.002655702,14258.2936640852,7516.55750552505,9479.57878806319,10163.3308943768,1062800.63749972,33551.0520231018,232707.891731271,10457.3774601214,1061233.81908262,40299.4583870676,234174.106505838,10745.271416655,20082.8382915394,6794.33273945337,712858.45059147,167940.135210229,98218.4976460488,10058.957441116,11011.3504670024,7237.71700418221,722351.715546531,35949.0796700712,10315.7006831614,6199.74999236496,14558.960509729,94330.2871217333,17500.4290694582,17694.8534017743,12892.4927270518,576264.807356342,10542.3623758615,5271.18026268166,1048.42701749924,805701.489650637,4422.10121518797,2128.01461049741,7979.2172159631,5142.12693662992,350272.918302177,4056.72600098833,1490.35891963241,4085.94275037234,1263860.21641146,12243.556062136,978735.497099155,5725.6077755501,5807.60095369691,2947.03936979969,795276.976962128,13305.3432970643,860237.817303718,12306.9092101554,2861.41890091944,296149.540651213,24472.1960448851,863838.185856412,8234.51947219251,1343.9802874567,7692.31509072059,3691.28423125043,152096.702179169,9795.4206599694,1230.91614280634,5610.76501186235,3379.30814185712,136989.517582652,4748.58006987785,3108.05189784345,16233.5112161915,14380.6598722123,139058.334081808,11652.9715533517,6622.47021449378,417484.733408456,11172.1641224346,7124.20383124169,1139737.03460567,1263696.39037613,211333.203992829,2218.1753664504,7387.24054969412,22150.4719521537,92415.3193668027,11962.3087618244,2469.44245934669,1704.32702800651,8428.14889255319,2040.79149683406,1315857.54144605,801.491990636738,1315075.09355907],"Archive702_field12":[9976070.06937703,5867406.39237249,-165624.776484621,-2848945.65673916,10021711.7884503,10025253.3625968,10044336.0253368,10072435.8003523,10102551.5051393,10134708.9809911,10160350.0377201,10175937.7136917,10182177.6339759,10176059.5063982,10161282.2529445,10139475.3990752,10114576.8315686,10091280.3775348,10077619.6357172,10084086.9155865,10116688.0662032,10164703.0441459,10190895.65813,10175413.84332,10116983.1715243,10017582.2924942,9879202.57019227,9700099.10973319,9476283.1426445,9199316.73839899,8861149.43621887,8447257.1322485,7951370.61645368,7370104.45658997,6619353.29877741,5966877.5141404,1303444.41310492,4449530.13673945,6972898.10456225,6235397.58336153,6005543.87947116,5910746.66121527,5851104.38527161,5817073.85997149,5802544.77992125,5783945.48771998,5762864.28094552,5760706.20948727,5773699.65314041,5765581.0500157,5771243.94477003,5796452.47798967,5811345.83422444,5828185.38997959,5851443.45354092,5873963.12728872,5893628.61043007,5912405.49117183,5931235.06938088,5946098.86991849,5950955.60937126,5960129.50845358,5958532.31581532,5949956.06009116,5938082.04486209,5923153.88565436,5915346.1616578,5926509.84811679,5944446.53077379,5982700.89364882,4373919.65985569,2809028.54448374,1155430.32095386,-174031.080634131,-215283.69540726,-198364.368322631,-192404.390911729,-167813.475588785,-90814.0618521517,43200.2912930118,177474.801950467,269746.696638901,348838.296308804,425344.703364208,511603.840146023,600199.985627431,694691.697282643,792846.729171196,897023.009692131,1002386.16434495,1109850.89365041,1222960.51670167,1332127.03121055,1453808.85745753,1579359.08810062,1691592.55404865,1799013.81881321,1910886.88307322,2004673.3310834,2111269.71175219,2228149.50465223,2326616.48220594,2380265.53133617,2399094.51690504,2436370.67051169,2457654.17755938,2367159.57749933,2181233.86446853,1957199.47655721,1722203.42624656,1448786.66960459,1074636.67787095,530667.812560315,-63391.3977646295,-555470.595533852,-730374.805468775,-826132.267010637,-889770.164357855,-923791.893273913,-943524.254073539,-953369.826423453,-954263.009209978,-951955.890285927,-944540.69447265,-934175.576961744,-920438.383139883,-898524.636505707,-872416.05020517,-843251.967217285,-816467.980463812,-795128.043879628,-777379.200463935,-771513.074203628,-775907.710986278,-790585.337644844,-813226.96447209,-839104.75991613,-954083.959508912,-513697.563673704,-1319352.14241344,315206.292625643,1678021.01409306,3032753.51616904,4371479.56539363,5722317.65710502,7100875.61142525,8542327.75939065,4747395.21330759,3743676.87360548,7396002.07828734,3454968.99167511,5855193.17811322,1198271.36947412,3828775.48396416,1802566.00865031,3353387.2733981,6651830.89034642,3149377.03713165,4480686.61097073,474748.698880175,2950156.36016819,1719945.56392656,3596046.68551558,3774184.39344297,7454305.84319524,1440357.01401112,4772627.54868589,2953714.90638911,2852300.8377241,7589060.32445284,7453892.40385096,575325.057127732,5149037.51361932,4749782.1513623,4280986.32553179,4730768.60509304,8700855.34777273,4638023.93346981,4730331.60825405,4827741.9443677,419012.411926092,4557254.21084299,5310645.07611019,3708466.5205679,3854810.50107047,1879140.44575918,3987558.79116551,2413849.38975128,2781182.07111817,4773508.82384048,3425018.96325453,6112594.97699866,2977591.31971889,3407739.01293331,4046939.20439844,6380485.67013602,3370007.73200343,8837242.83081658,4749882.83418634,3893321.22420209,3568271.72651137,3408064.75847035,1927035.47421612,2380418.46748994,4677955.34792474,3681517.54268573,2405014.69340726,1145656.51636917,4584322.69543914,3981550.97226941,2735588.3529773,3486801.82314132,3280888.98527489,3198717.87777068,793511.445014242,3066088.39670201,2255662.63426264,4546180.09948318,4732838.23710391,4451113.76444305,1918430.80521364,4404069.74079085,5238392.19283271,5188940.74817579,4416212.28471914,1310352.57722763,3565474.43743858,2648947.92931308,2426615.49284324,4877659.77571437,3289034.89870994,1711818.22111601,-17197.276280729,3509357.72223702,2642226.82211206,3579818.26966765,706056.58713086,2651206.77571625,3477817.39759305,4672818.72603067,1738933.04581347,3751909.65769456,3841371.04498274,3458954.81820381,3288131.97465208,1252417.63671939,478480.172662583,5386023.29788992,6436218.3511374,4009631.57693921,3333456.26702868,2853486.27561837,2415199.9049173,1353627.02487297,1429312.1966741,3698855.08699501,4654324.91043061,1023718.78447407,-286094.991339301,2701193.11299691,1810051.20588387,49396.6802787489,3550368.91310923,3327668.04479842,1258439.05194701,2965773.13605483,6049591.25380955,8822044.53877467,5512866.88826134,3238601.40896463,4673628.46810774,1832369.86820267,6575521.62237164,7648492.86645391,2826033.03036439,4383922.56443246,1312173.8031374,2660834.56386285,6022501.44568244,143652.702742204,8832411.34596491,1982452.20391413,8781915.4908763,4733473.21971496,2643094.00485411,7410673.23970276,4721864.93683686,7440401.17795319,6492976.42701435,4275320.6668985,434702.59427282,4715444.0859778,8879235.07351439,1631506.76113785,5049905.29640033,7397714.67813804,7472942.23641928,8841295.39423063,7408102.82458376,8776680.11182659,3740758.29041462,8762325.75245335,3798604.06887485,6031050.91070069,7425653.93052504,3192394.94244256,3547406.39862437,547965.361836381,425190.198997284,4339718.38056642,8783712.84095533,6086493.95731669,6037612.79531043,4724582.16058711,7417199.76970276,8009860.10189395,4739688.29705333,8574332.23030798,3068764.30367711,4613990.95149304,8304851.2173088,2413183.71313856,1575214.80614479,2552703.83843266,1920369.16499826,4941314.82976812,1311525.6745166,2373634.37910569,4748696.31090061,3481204.30641957,4658606.66506055,4666051.73928193,3521071.19379812,6054742.77435094,9026527.13880181,2527511.50612074,7293699.29628301,3605979.04024633,3203360.29553159,9172828.94052445,7033970.59267279,3116699.09014519,2084953.43927874,2472265.3772459,1765430.21610529,3291877.19129499,3490803.23506477,8746973.8327837,1164983.37606978,436252.973137165,3210259.41778112,6104457.68292486,3289741.06493357,2292534.96729472,4681778.90092315,9043227.85683196,6793235.55036188,3244330.57486884,4916092.42844166,6030455.62526965,2616714.95995435,1803500.45227644,3399471.63262898,2801683.69372547,3577815.32430074,4662470.51556959,3547226.01801018,2307635.41076679,7399779.85794003,8750621.93059109,8015645.74793504,1641352.7501836,1797405.20811143,7430494.37061544,1909699.12891101,1034692.60284255,3295463.15583365,8222932.73990749,3373922.80145358,6047781.58523616,4772590.25257805,417620.219212606,4599304.9207578,3484789.08623913,4740469.87945255,8789026.08026137,6033066.24988505,4603947.46105457,3003196.8506453,6029793.55414973,7404254.27751266,484074.670008636,413093.594295575,529129.325034304,1897363.53066435,6981051.46824301,4578486.87207264,8755913.02616165,3526975.17112316,411200.121600259,4720267.62929356,1904039.04704756,431239.008711259,7407147.12946605,3601096.34982511,3428813.71814798,4641356.41092329,6040926.28604884,8769714.7296979,3502924.72138685,7373728.36452623,2239184.58086961,1789793.93540299,3752354.1588064,1819277.04056825,4711107.5769983,8787269.07404481,4619320.56948977,3242328.60424791,4659097.15284664,3205131.18235001,7380069.48949848,2717844.00317009,507420.652921898,6009207.34273987,744511.462219133,3241916.63776215,3816978.35641332,8800890.74016494,3262815.12562457,4465894.18144839,4947349.5850024,3255354.76140927,1894938.88830239,4654327.48633114,4729532.57513244,3060213.80131914,4038531.48381462,5032757.83925721,4856471.44236268,7569454.46030854,1859228.66915943,3785901.08224705,3999551.33201713,3302254.04503979,3669017.63369085,3094731.20568691,3681066.2612894,445890.412310346,2620225.69335145,3766809.17223914,2107785.75059996,1947818.97226991,5421785.40935255,7384098.07379675,2226594.62916985,8784270.40625074,1654909.07392917,1474141.73960152,3650689.31326281,3177459.58489061,560259.13996168,587157.948483913,8744875.08075204,7409366.44281661,4749940.21085493,3939787.34850137,3842719.43099657,6014873.17410324,3578934.29691974,4380113.74537688,2839660.82881731,4611109.0873808,3488126.22999429,1938103.91099067,2623283.41675858,4773414.05188825,3282675.99055656,6018631.70466919,3206690.24310779,586821.196012256,3532433.16473954,5238846.09273241,4623697.62417982,85250.8569992017,2653034.88031392,4868006.94224028,7787169.29864416,6393433.02329592,6098977.01975094,2909000.84439144,3222581.3696923,940749.610318801,5338717.74073471,4139480.8139196,3925105.69222934,6310073.91281547,5358501.56493066,4031956.77158296,3099690.25405963,5807238.66330312,7506901.35153812,3527314.81829482,2294042.08543362,1098924.88548617,2407671.69031864,6016598.0750758,2843291.33676912,5548528.40365376,2495329.78924002,4144120.43378773,1946726.75634469,6767409.06460093,4240351.22140445,3751913.77978253,4158303.14944314,3010780.41123786,3982508.12619036,6201265.60369407,6726682.89351685,4530723.93858317,3565688.38627325,8075692.81892986,4194193.75512485,1285008.3989022,7007853.88203265,3937809.03342224,2296630.91705339,3156511.72881245,4294194.2397697,4384473.42136822,3632510.25385125,3906951.2034856,3971614.62124087,3305888.49980301,6058478.85415949,2611837.04615929,1870566.70370853,3319464.42494542,4263330.86769285,3692890.70534559,8092318.61744349,5116005.65256109,4365393.85786609,2491773.57882893,5269364.81771321,4930171.71325679,2941996.06061388,-900043.391165413,521928.689841298,9327855.92114776,5115072.69485185],"Archive702_field13":[800,106836240.157035,-38064160.4818877,800,103.076193106408,337.455977684528,1133.89083756904,2328.23596807676,3838.71047583274,5426.82433487295,7031.90322859287,8610.6629027264,10175.3368823455,11655.1116214285,13082.2395728674,14378.2117352982,15631.53649698,16840.6586955335,18003.2806644948,19103.5808048314,20148.3404170316,21179.6487316966,22117.9903015322,23039.5720035373,23971.7625614023,25014.0840699402,26403.7981088829,28806.9085264645,33277.2328695903,41482.329851131,55571.6978712321,69034.344728836,-4122.11758987176,-862274.761914146,-8235924.50614799,-83433411.0845654,236257291.446466,216859512.886349,176566503.317456,171043941.498712,165042917.652211,161691071.706289,158785594.955183,156024144.358273,153302996.154619,150639129.911152,148042722.502413,145511752.066496,143084263.656149,140756551.953181,138511235.485294,136354509.112708,134287304.16873,132294074.025473,130367970.482737,128517148.913517,126730934.223024,124999496.712792,123329434.555121,121715960.291337,120150185.56931,118633239.077121,117165992.642077,115741486.076968,114356224.676041,113014114.44296,111710268.602673,110439575.790025,109203142.898196,108002030.155006,70611140.1428166,34386042.3519065,-1839053.68146745,-38180796.8999539,-38300980.8921931,-38424705.0750992,-38551862.1464194,-38682342.6542498,-38816661.1345335,-38955306.6029143,-39097885.2256769,-39244750.4947282,-39396596.7960357,-39553317.9151529,-39714801.2931469,-39881923.3574498,-40055124.1523085,-40233712.846034,-40418630.2717408,-40610842.1323078,-40809381.5280479,-41014796.8718115,-41228551.5608891,-41450708.8138282,-41682249.215699,-41928546.9385823,-42199086.8999253,-42506706.3291087,-42876359.3126666,-43331445.9753502,-43861757.9960557,-44355912.4325757,-44499806.7985771,-43348230.1051905,-39651024.7199587,-32569518.3448168,-21776507.4816988,-8613145.93598339,4550142.08029372,15634823.7562339,23453274.0260925,27832875.618135,29370639.6464133,28904879.6010722,27227193.8589947,24926897.5675804,22421964.7945564,19954167.4572741,17655111.0280656,15589372.4375457,13753490.6614378,12156868.1330931,10756295.5609863,9531491.23143027,8453386.94815241,7495063.46670065,6637109.2512925,5862832.27570117,5157664.06701016,4512729.72867104,3919782.79418759,3374413.31329072,2871976.94461073,2411095.33670236,1988553.33912279,1601802.79881363,1246539.11021298,918858.823513699,544929.175680265,800,800,800,800,800,800,800,800,84773614.0930996,86416239.3071712,5433703.71540796,61975883.7963737,33946770.8619709,-8292993.77069524,93378421.6374359,9351872.81539435,67873550.2357895,12349178.6687941,51707143.9544393,82818129.5295473,7130021.21545366,-10501395.1801291,719377.055348111,39172830.1577098,92912864.7437512,4547425.4596013,-758222.614243922,11046921.9216102,29520697.8163583,2145099.7410473,446718.765900848,3771104.30982908,3714225.47956884,21535990.5175605,87027267.861521,16549619.7651627,118520401.218066,2424266.82335931,96171968.0683574,36952732.9638344,128039803.711129,10277912.3672513,104313819.640381,16742516.0818901,20413889.4496798,61047406.9432003,6497027.20518614,21863283.4587322,373416.736707301,29669523.3818574,125482612.085813,56507143.7386165,7175389.35751649,37165891.8770423,13660827.1933761,1795920.16356287,697128.333431344,57849140.6825222,1792240.66692566,85883842.711856,23284505.4499053,55421294.5263583,-840376.827715683,3509011.45490508,53142.2106103214,93337921.0149978,33663091.4691986,22923422.0548201,63042.242810902,102516774.562958,19473833.2928182,-10899143.299409,41534474.0350329,5655371.46119303,54146843.9996296,-14071969.2619705,146266.315935944,23088390.4781298,23143001.1022714,9766495.75769047,75090002.9141101,16052699.766928,52074071.6338943,1424740.25151007,948453.636552008,23876117.4773899,-1517739.23083911,54601693.43876,23821703.0725856,23815329.9534602,144311009.663083,3111634.22503044,251069.3313916,77488.9989043928,59944883.0000557,28481702.6211985,53862776.9079021,310549.715831114,21400234.633711,25277715.7941766,4663082.00204894,10157039.7788862,31448.9528571948,91908735.3634269,-8866095.44577041,12207881.4845494,-7845097.28724603,18198313.2127135,53065804.4084797,1045767.50665586,1193390.70340721,-9621251.54306062,35389224.2123678,23319547.7832741,25118637.9004336,-7790628.53860271,95707043.3878426,2614830.87969921,634790.633409854,420222.09285715,26551945.3466221,25325422.5032526,763782.224910179,51553229.4403129,30531477.5691452,23673781.0630862,12194267.21633,3571592.77650747,1704078.1542231,16387.4166318517,58110121.9442219,94767080.7333314,14418050.9350538,35687038.3059379,672383.408666742,1428121.48873462,72296182.7617469,-7962597.21400603,59401850.5016914,2039804.52737098,1132377.44125165,1902046.73642738,-6840905.6895533,980470.145347178,81631749.5552441,-5460963.46584572,2420231.88209263,112248470.315088,3553067.29888632,43768.592460107,24321275.0141339,16295882.7749106,90687129.0670876,319714.638853923,1648282.85454644,33828038.7444466,1404557.62575659,4092388.8563136,218569.68380683,1888877.06422636,1113912.71025038,84695866.3598395,1232818.04836123,81421514.9389517,5526456.37430121,62344.2099872419,-9608881.40136708,58044819.2567041,4366355.36446104,1843241.4942726,12736270.2417274,724566.005688408,6430260.30307964,2730079.2866404,80641291.040193,2181521.55999723,5339.11902565572,116360898.262962,3014875.97189517,50592743.4371807,7543118.01956094,63328.5108052632,-5955590.27361093,-7299433.26029839,25402549.9374044,4058774.12098368,132984038.936425,-1424948.25541435,21915655.5333066,88240847.6722506,-8078373.36192946,8763516.91934332,3486667.11712884,50843004.7156558,3208752.58516799,-286.735353254142,-5713912.34970881,6687310.73982973,19754062.9916999,9502979.90581732,44733.2042335689,21942903.9471915,29104230.7414793,-6631685.44784682,24954425.8031703,-7239691.56361092,3609646.20244651,90412642.4022079,1448736.83066165,-8450500.03164993,2288681.45585935,10973386.060687,26241553.1249423,4134413.8056117,21044719.5155325,4173986.40393033,11653.6810734012,9975162.8248871,29802048.7772352,71442284.5647947,10410163.5869915,-11091697.4853815,11289412.0618261,64164797.1077399,27155337.8529447,57208278.1460801,3042562.0742111,52679856.389431,-6189374.92744485,2882224.53192744,1345049.53383339,6594597.57202695,2095690.16401946,12944116.0184396,14587984.018255,4645991.73733617,-8753570.27353033,5043666.97023663,4681671.31919073,65318813.857963,52061888.7457004,13760193.6660891,12765759.2337753,99226062.374837,60942516.800503,89462133.0066534,2094396.79055023,2380981.65456746,21555610.9731697,28430916.2684565,4313226.77275577,2654243.10904984,6420783.10495558,14545685.1920477,4994254.37476703,5775481.63896916,9536.50175741498,100836470.46568,483227.4323617,16657747.8851678,11542386.9411951,120719953.620113,-6697853.79744977,9152060.08537351,1645874.24384715,-7212226.83739793,63051703.1059644,5708158.00949228,3939507.81828614,596464.50467901,31294327.7545778,987780.644741247,19267473.9762525,10426289.9970403,88138116.0455335,8381162.50985254,92023272.2308444,853115.262637606,97672939.6084763,7009688.41618831,5173322.8696882,84778483.5006681,1166912.50885568,-5196396.47263075,5676171.71448752,1499659.01934808,21932806.9844319,55443103.1621597,59325074.3584114,130480.108762225,6308478.23721532,140031475.684869,28169528.1916045,4788108.86120233,5276431.80327133,1998222.0239666,114277859.481173,100856307.304517,22628628.5372855,31367276.7268684,84264109.4367748,315720.415655311,7282565.46112794,28075954.6197302,19877819.304334,2461503.18690517,62205209.707113,-10307010.728201,48575238.7126323,8144373.23339738,26303788.4435879,35793455.3897937,17853035.4993027,2864810.090636,13385460.0062253,3066297.88926718,-6029896.37823146,1626099.24545713,-7428668.33549723,25828281.4840313,53041850.0267243,52895237.9348729,20201113.1681768,3178998.01006404,1540906.60860933,3324101.313066,83721652.6039912,75228574.1852149,21119818.4867512,5094046.95089193,53087077.7385756,114898564.540258,-10699393.8311128,6878498.48716471,42668915.6118927,2503146.45211308,25966605.2843545,123068291.101293,-9375865.69231835,4695413.30698816,8592505.98172007,2740543.66336092,58977531.3651597,104533690.449919,6273067.12350194,1588779.5309178,18659799.0983804,130639348.006949,9243666.3554538,18579882.8721947,8655812.8458624,27780067.9263186,7767076.23893586,1146745.57460519,74238.1398854084,73947734.459787,4976938.93086824,359617.498115265,3397467.85674596,1488525.04455905,59230709.869873,1016670.30675309,165958.747302149,921759.038077665,22773130.8844142,12961218.8085663,23121485.8909654,1765850.61696791,1779895.01538539,607986.813661564,25178488.6889902,13628342.6705559,8581911.08809109,6351841.25995392,536063.313046057,83054492.8886055,59121658.2355095,40511821.6388755,4203019.94002203,151706.914310897,2503285.17871866,839019.483191278,90082976.4185115,2386044.5498337,107435.743643786,1395196.7066719,705153.331665449,40451084.4210918,1074411.77093353,542496.509832933,31523417.7430654,16492014.5973197,7066372.03628537,9214833.11914215,2564823.00244517,66595647.1544942,5939835.75460935,3008820.51732409,10143248.6318854,47357150.0656008,103596609.046083,328577.980003077,1545191.21279707,44321104.2855032,24304922.2882752,11223443.2649526,453819.68492097,235983.037000806,4776602.13237881,107363.95956681,-20009924.72516,-802.282414482923,89306586.4915242],"Archive702_field14":[-5.19209209517889e-18,1142136560.56645,1142136552.43326,0,1.33795271857229e-18,-1.53308969993086e-17,1.91336133772485e-16,-1.46572038732445e-15,9.01874958855633e-15,-4.75831855107574e-14,2.30106097476531e-13,-1.05157286888948e-12,4.63766238020264e-12,-1.98250511730652e-11,8.30476839827626e-11,-3.40641730005777e-10,1.38210867035328e-09,-5.5570863374917e-09,2.2171101468973e-08,-8.78006932085404e-08,3.45597022775231e-07,-1.35580431922311e-06,5.2841053906823e-06,-2.05422382709797e-05,7.97665612839524e-05,-0.000310636908504273,0.00122372096682877,-0.00498264790195696,0.0214811881349823,-0.0999359582044799,0.499643053521264,-2.3164287281384,-0.516204349502891,402.990218905066,-14365.8732976854,543098.780769929,5739771.73558566,78217697.0739955,77927448.8724437,108626421.924961,137662460.899717,169137721.761094,201560260.55927,234611279.019819,267969224.079033,301475335.029439,335039572.819272,368620493.747462,402210369.873604,435805949.367026,469404863.502855,503009073.427017,536618942.601932,570233688.975031,603852774.448921,637476544.015432,671104136.165721,704734808.216706,738368769.371655,772005612.070369,805644772.151075,839286224.792546,872929911.821155,906575460.050632,940222643.4903,973871592.225218,1007522051.5844,1041173772.31273,1074826766.17896,1108481040.61103,1142136560.13084,1142136558.15454,1142136554.20233,1108464691.73365,1074792847.12487,1041121013.25421,1007449189.61678,973777376.042168,940105575.438477,906433791.100574,872762023.55569,839090279.887381,805418571.795198,771746912.731926,738075323.48118,704403838.943013,670732502.553615,637061367.083481,603390517.888269,569720074.361879,536050234.884179,502381364.475429,468714133.456092,435049624.092406,401389312.697679,367734404.583255,334083345.573361,300425688.995012,266730782.734073,232926274.97249,198873729.952666,164365603.810103,129187324.516124,93261125.0834812,57082941.7072201,22493097.8989623,-7116569.72497481,-28438313.8441803,-40245607.4407818,-44006974.894069,-42153027.9192818,-37237561.1630306,-31244957.0040844,-25403636.5431308,-20326571.8845824,-16195128.0308117,-12986647.0630916,-10569492.3228267,-8780036.06068423,-7472751.91097307,-6513166.54640594,-5797091.57378669,-5256804.8023912,-4834371.11432541,-4493266.93779009,-4210022.26815956,-3965755.73055562,-3751848.94624355,-3562622.18157813,-3392639.83058697,-3238469.94663677,-3093791.41785109,-2952975.46974031,-2806977.67511826,-2644922.95533445,-2449372.65019484,-2193680.04714074,-1841313.56918867,-1253173.91210063,0,0,0,0,0,0,0,0,899812763.502778,301079242.258547,-950562.579557383,590198492.3183,-16749882.7915748,913191554.309087,168015729.484262,-2830964.72336277,435497910.456574,-4666557.61680323,351341566.205893,-63982559.0745986,-3266746.25191057,272598565.329997,-1297117.7495128,-47024260.6202517,125479609.163576,-513942.419238663,973800926.731012,-3312894.09764371,-54679230.6418435,-1536070.71461468,-180289.542411361,-244311.251122758,-2619540.16434539,-13388512.507076,832512659.836594,-30146543.7712173,301244901.668532,-209986.333637981,597025525.770375,-28083119.1109208,168864840.422385,-3981081.2898992,435649972.299,-8956756.21601228,345606732.248718,-66908253.232722,-2404059.23812144,278381178.979856,-823841.201386765,-48998376.5242655,195718767.51667,115380361.160065,-1259015.42779679,973824480.273056,-4864289.86378404,-1112644.73186954,-388060.502648684,149556329.00446,-43879.7680598331,866161966.684154,-18699140.8373865,825739107.203169,-20648510.9569503,-2047311.25485654,-275856.704787144,664295217.670849,-35927467.4847548,906490443.338225,-390470.702981263,462530130.800317,-12980831.4599023,339857602.732205,-62538161.7604246,-1657099.52113779,284121361.212173,1097240750.78299,-420114.969588557,-46979151.2629558,105532424.988181,-2292061.19526832,973848035.464093,-6543073.106476,-45129058.9718153,-740719.428952176,-664422.827107312,141766405.527563,1049547453.2149,859394027.897779,-22235090.9341979,818965570.928897,83958400.1831904,-1495008.76948011,-758686.725742917,-511227.419380863,657486428.350723,-39441724.7038959,906518776.401391,-995071.690641578,-16051927.1817881,-57105650.9607484,-1046521.90930809,1119688656.17709,-138408.245541235,200777238.611916,98063985.0404782,-3564100.14054846,872795582.702821,-8399242.90798592,-29412498.4228868,-433261.549235001,-1001511.60704458,134930450.758294,1057973892.6409,852626097.527825,-24095663.2259142,812192057.932387,69159113.0747224,-1002412.91403865,-1362918.22365807,-1222776.78016077,650677818.498516,-39365549.4849101,-1651955.97547991,994024180.815546,448787124.231987,-18227551.861603,-50346341.0482949,-579520.354664165,-37877.8775808419,-44385.7730132103,200173048.661889,637393005.676707,-5049448.81726066,-9681824.36798196,-201092.116262038,-1388238.83373844,1066400328.22943,845858180.087203,49442693.4187136,-589584.726773523,-1945681.07958035,-63119.8318849045,643869443.892781,-70371.3343959172,1000773115.01818,441918168.764575,-254212.389780374,396452333.678419,-212465.837217702,-62846.937222775,199598009.93823,-6771545.99334687,731575622.671358,-53246.8601030627,-1807158.15704446,34344187.8110397,-274265.695191494,-332637.354131673,-48337.6222494266,-272337.146020065,-66947.9800445611,334689351.752801,-63460.7937074355,390702341.871402,-596955.524617701,-60328.0681772919,199219783.029562,724782532.987818,-2744739.46075665,-2235079.20172912,25236424.6248731,-72328.6638280133,-872066.25501696,-597162.690817639,1034428856.00672,-263009.239920778,-2883.62001822034,334845717.773143,-371200.60558372,384962810.082187,-1236084.81405045,-41245.9909407075,509226857.691289,771798556.842618,717989524.859051,-2116820.32150252,104813726.446968,1074801329.02859,953611977.259736,805599472.729607,21266725.7055991,-1687752.62486288,-1034942.50360783,1027683940.18723,-587983.830589729,-2056.54773390055,475570589.690172,-1580760.07604974,379227017.506646,-2148836.53765211,-15190.9967007776,-5440182.28530278,516073701.91426,610207015.777617,771850245.9538,711196620.08519,-1534324.44620895,94742038.5065625,-52800.5623161899,946858776.318871,-2371664.9228473,-2761183.32917753,-12204347.4612831,-1571996.42964302,1020939023.93346,-1042189.95764043,-8979.62762541288,-3325230.10346302,482428467.718017,-47216650.9153453,-3554572.70918058,373485584.517248,-3338761.48906483,522921526.41173,617023967.204756,771901984.241533,-1020603.50996499,79964030.7967275,542885454.306855,-227455.62976102,-58738.5801067805,-1371949.33074719,-1925707.10912937,-4082237.99993107,-3422229.08355126,-2189244.50209596,1014194107.08945,-1622387.96616732,-829342.786023982,489287555.14153,-17064996.2793653,-6005380.32286745,-4800578.37659175,529770068.925401,623841271.593922,771953774.000632,-117494.847020055,-595331.696862923,67457224.3489259,549721680.525586,-552385.236201005,-242077.982862098,-3134087.21945193,-5653115.62374518,-2862422.06525815,-2318471.26945834,-10308.2611270177,496147980.811021,-70046.8481874664,-8597274.15613901,-4358859.45742317,262088421.675186,670806468.255576,-3699567.65830819,-274551.344851676,59799699.4533552,556558631.363508,-1051904.16205984,-566855.883958242,-71959.8628799075,415150913.940952,-263649.946943425,-11098810.1696747,-3081036.46448865,256300948.762472,-2661409.31066306,704668373.472237,-71722.3843447598,563396034.642641,-1739823.33670423,-1048205.34792038,44460416.6691075,-270998.303394026,408271830.720464,-2991327.17772478,-564793.78509387,-13524194.0364565,250523752.468538,1119699962.25319,-40156.2399135395,-1694003.80318506,64371055.8989012,-19575681.8033891,-39291968.4520577,-2265919.19961376,-958525.90040789,368455249.045706,33172051.4369284,244717526.780105,-1409401.48768366,1097263365.18876,-156802.539846436,-2499816.57035618,-26314085.6106755,-46400674.7575322,-1428341.58646392,-20672245.086805,238872022.168128,-2556660.86473995,-3477961.16978131,-30132791.3922884,-52924923.977811,-8789898.48511275,-1954725.83152648,-5892988.97715945,-219116.225782135,569821672.164361,-40405.4988045594,744861251.748083,-31307873.3579205,-62903215.5399034,317727818.157142,-10736169.1387357,-2516489.88706846,-47889.9986957669,-204270.695196774,940199224.115834,-76209479.4653284,311996275.174677,-549744.759578995,940175806.851527,-120144202.942159,306236789.293254,-1117948.84302201,-57682314.5797837,-1903243.37097241,684332983.368705,228707630.252924,164587081.649564,-542408.875974325,-1930976.44241903,-2428727.15642649,691133479.384734,-57324713.1587677,-1068339.36483188,-2224180.16817913,-51784958.6240721,138019978.091625,-2056187.91348117,-8045686.61270077,-2258105.82602022,583371783.444261,-1809897.6404073,-1776217.79647307,-142597.24286227,751738766.836546,-5770062.43385447,-292155.789853321,-803118.958526,-1065784.44841147,410228539.094163,-552555.57364015,-114603.529939932,-1017370.27978266,1088831273.33818,-4413846.70717997,879558266.803727,-579278.15157734,-1472640.14838213,-492985.746382739,744919870.70182,-5364820.48859966,792021145.099205,-1121505.45988091,-666069.783734618,362697353.38136,-56773940.1652151,795433761.825243,-1306112.96807648,-177773.016447347,-416528.63749872,-764962.770611735,228453296.619414,-109334.840081781,-260531.338882899,-1810492.11191706,-293667.323127119,222383154.141324,-1391686.55243153,-860681.741791826,-31933739.9684384,-8972671.16675091,219257049.323673,-1884589.26108028,-1216627.53403987,462392806.786094,-693553.317075925,-1729389.83126243,997369974.736656,1088836926.66362,281563693.650625,-580851.94835369,-153261.446048588,-29027430.4012767,170959852.656552,-3014931.42656,-462484.899998969,-347155.926903929,-1757216.18167982,-601376.48959828,1125300620.54804,2002.97769451647,1125308800.65333],"Archive702_field15":[800,1147122445.59744,1142770661.47033,800,103.076193106408,337.455977684528,1133.89083756904,2328.23596807676,3838.71047583274,5426.82433487295,7031.90322859287,8610.6629027264,10175.3368823455,11655.1116214285,13082.2395728674,14378.2117352982,15631.53649698,16840.6586955335,18003.2806644948,19103.5808048314,20148.3404170316,21179.6487316966,22117.9903015322,23039.5720035373,23971.7625614023,25014.0840699402,26403.7981088829,28806.9085264649,33277.2328695972,41482.3298512513,55571.6978734782,69034.3447676995,4122.11762219336,862274.856084308,8235937.03529141,83435178.6807685,236327003.834088,230534284.792661,192998490.619798,202622134.683342,214918863.313858,233990537.398549,256591901.27904,281755187.824548,308722065.430222,337015615.500976,366289725.546386,396301322.7332,426903136.718253,457972960.360591,489414229.703016,521162815.351666,553166312.803049,585378665.535677,617765312.183719,650302238.758808,682965219.661865,715734604.508325,748597748.467825,781541707.177414,814554826.875821,847629171.59596,880757912.700132,913933890.588001,947151500.792796,980407093.102966,1013696142.11563,1047014672.31964,1080360080.58126,1113730064.20394,1144317200.38623,1142654067.24071,1142138034.81173,1109122060.94374,1075475071.47683,1041829843.20837,1008186548.08248,974545382.075556,940906597.99586,907270485.335816,873637335.734997,840007528.68226,806381527.337852,772759834.793034,739143050.14226,705531952.592045,671927453.638183,638330586.044293,604742740.965543,571165653.405035,537601395.031752,504052823.555854,470523891.386298,437019835.572841,403547754.606063,370117002.260882,336737946.665768,303417887.88909,270154941.923778,236922484.755826,203653171.543657,170245407.23199,136636735.985404,102843115.982983,69502992.7074559,39581725.3073393,22909863.4380677,29714036.7034613,40502008.7307823,46701836.7220788,48238302.4712389,46489836.809189,42882185.245467,38481642.5632791,33977781.1225862,29725954.892636,25911339.3553794,22580588.2756679,19717808.6672997,17287873.0363067,15217747.6597386,13468322.5948996,11972129.7573045,10687397.6797842,9573358.7976964,8596526.26752633,7731651.68175774,6960544.00233431,6268474.72969304,5645771.39318593,5084524.04349499,4578013.82108909,4119261.54732418,3700338.41577769,3309072.65290315,2926636.05284457,2523111.55173805,2057847.71001824,1366525.76282965,800,800,800,800,800,800,800,800,903797308.586894,313235496.926793,5516222.01189301,593443569.774866,37854218.0672993,913229209.238911,192220745.450713,9770971.62109462,440755316.285184,13201476.1971813,355126068.995132,104654720.125312,7842756.76067995,272800764.516345,1483245.69908781,61202873.375734,156134341.996674,4576375.76264482,973801221.91529,11532985.3569817,62139277.9419641,2638364.2923861,481728.113058471,3779009.88395593,4545048.02897583,25358453.3188558,837049027.321363,34390464.02306,323721448.603849,2433344.17852374,604721858.265049,46412994.4357679,211918677.009041,11022000.3114536,447964587.140642,18987767.8168189,346209099.040018,90573176.1899887,6927543.81619675,279238399.891225,904518.868988103,57281074.7081466,232490261.933964,128474452.849287,7285007.36302931,974533438.060543,14501017.739669,2112654.14425758,797858.926746272,160354665.111423,1792777.74479357,870409436.3971,29863456.9683934,827596878.348187,20665605.1920059,4062590.89312687,280928.845305307,670820470.558079,49233998.8943794,906780241.923166,395527.109393668,473755011.546,23403678.5251135,340032324.139254,75074191.3692039,5893149.00431269,289234902.133505,1097330982.65643,444848.764019715,52346102.321551,108040229.655003,10031848.479111,976738708.516722,17334963.959692,68908206.3343223,1605786.42935485,1158025.04026036,143762939.320256,1049548550.60748,861126843.219249,32586389.8910341,819311769.906723,166957121.65493,3452146.97995367,799150.396974145,517066.74547685,660213444.624753,48650354.8992224,908117553.351165,1042405.29330922,26751344.0527259,62450126.4003684,4779073.32696357,1119734724.04348,141936.179565383,220813756.774189,98463967.0664993,12717514.7003124,872830839.703206,20043100.6886503,60671860.5367871,1131965.21502329,1557949.57236226,135273038.78856,1058565611.90135,852944935.79266,34807283.0923324,812229421.322247,118079723.387738,2800387.86236121,1503497.66632481,1292969.31959949,651219340.382085,46808370.0978485,1819978.52515147,995360139.603622,449824470.209183,29877944.318349,51802067.6218091,3618303.30440531,1704499.07283942,47314.3135831655,208437126.450562,644399443.882678,15276685.7048229,36977052.6968001,701810.150591349,1991667.15243413,1068848164.1888,845895657.73494,77286219.829425,2123302.3006458,2251211.56999794,1903093.77087185,643905784.078271,982992.284111009,1004096892.87371,441951909.155522,2433546.03453797,412036614.837979,3559414.13190428,76586.0770912204,201074339.460845,17646802.2755864,737175045.064208,324118.309276612,2445947.05035986,48206425.3154675,1431084.83173775,4105885.30777998,223850.915575849,1908408.78347977,1115922.73840503,345239557.344106,1234450.32816357,399096207.747896,5558603.77751698,86754.1141902636,199451378.917598,727103102.157308,5157388.28053428,2897087.8903151,28268174.817579,728167.104592345,6489125.29687177,2794626.30608236,1037567383.81659,2197318.86102506,6068.06858725245,354487677.297216,3037641.68648914,388273087.961133,7643725.21252243,75576.0018093923,509261682.879884,771833073.967597,718438756.854506,4577616.80776065,169324162.078377,1074802273.6109,953863773.885285,810417767.364548,22749367.8684029,8924558.1245431,3637025.37404423,1028940859.35357,3262179.96711666,2076.44064317218,475604914.369688,6871602.96794532,379741166.864571,9742901.29047382,47242.2050899958,22607224.8834968,516893724.139249,610243051.051058,772253537.088764,711233467.684511,3922205.65665174,130959916.64066,1449698.6941763,946896484.966997,3295884.90585741,11315446.7439076,28940718.84672,4423183.27574645,1021155899.36585,4302129.98501926,14711.9677423391,10514800.4557379,483348102.899012,85635344.0321149,11000295.1348032,373650247.685315,11772771.6780105,526843471.98447,617621233.831062,774019031.009222,3209176.76359228,95757054.5206517,542920735.337999,2891185.62461049,1346331.48565217,6735797.06516767,2846096.47301691,13572575.5325548,14984022.4778652,5135954.70320304,1014231882.68143,5298180.74620152,4754561.57786005,493628259.989425,54787355.820339,15013577.9396705,13638554.2329281,538982501.92714,626810914.469349,777120391.210988,2097689.90924383,2454280.64179232,70817522.41704,550456395.221037,4348454.28197078,2665259.50551258,7144855.37852341,15605597.5201717,5756390.95610751,6223463.44002868,14042.9738030078,506291233.025844,488277.90481229,18745497.7933803,12338004.3795518,288554410.775909,670839905.714479,9871524.94119764,1668616.33322921,60233049.6543691,560118761.879821,5804271.72240323,3980081.33629399,600789.586467402,416328735.851392,1022360.94245071,22235537.785447,10871996.5414772,271032292.977422,8793576.32226171,710651672.202409,856124.845896513,571799873.192373,7222376.12804714,5278447.11685623,95729409.8752505,1197966.97941399,408304898.692313,6416148.65916798,1602488.43802154,25767263.0784115,256585440.427096,1121270471.3482,136519.531154322,6531963.45325238,154118289.051045,34303493.0671081,39582632.1927209,5742396.92060305,2216227.235375,385770268.057211,106171463.772698,245761515.992333,31398924.5327516,1100494131.16315,352514.421497696,7699665.09538181,38479739.2056535,50479206.7910149,2845901.90041164,65550208.4789579,239094285.680026,48642474.554308,8855903.6390075,39998430.0138917,63892245.4355631,19899577.6818994,3468153.67765714,14625247.3026332,3074116.89207248,569853575.682843,1626601.16820623,744898294.714762,40586735.0080533,82281543.3710201,322100718.141212,22876850.7668566,4054472.80169802,1541650.61814634,3330371.75949521,943919433.078247,107085120.975403,312710285.177489,5123625.04859361,941673396.465963,166241720.49765,306423641.622174,6968755.34464667,71748768.4547682,3144531.36252077,684825449.816452,259717123.829948,164853918.071123,4726638.71183077,8806805.83793423,3661870.44707362,693645324.018246,119220028.425657,6363389.0447159,2733349.19437395,55044255.3050614,190042504.719585,9469597.47964477,20247101.5361278,8945509.37309347,584032850.01182,7975161.61404858,2114231.55623603,160764.657451713,755367090.226114,7619943.6751311,463335.462160518,3491101.24447371,1830738.457223,414482486.094431,1157124.09645388,201683.600921818,1372837.21193116,1089069399.6663,13692159.6455058,879862118.637109,1858437.94040609,2310128.84325111,782740.641415078,745345269.025757,14646263.1009071,792067638.199023,6450090.06822352,854992.88441378,372085230.745359,81967376.1590538,796464736.911784,4401284.77851642,233705.441157287,2537702.26619457,1135394.96810429,245572497.191147,2388548.24130617,281813.799435743,2285706.79169967,763859.750105692,226032204.512291,1758167.2598872,1017386.61473145,44871924.569553,18774860.1418186,219370889.800535,9405574.20345075,2838749.65265622,467163877.014745,5980189.37788451,3470416.4150638,997421551.801948,1089866300.29954,300017284.482128,667347.341981055,1552773.31087,52980675.7298113,172678894.10055,11621337.7125212,647954.156672233,419768.068505275,5089571.36114655,610885.17910931,1125478513.20819,2157.67854818994,1128847006.11669],"Archive702_field16":[11288603.2961387,5870551.21490882,-134340.951890172,-1196845.48421918,11295338.1457638,11326580.1094631,11355395.8401511,11371195.3003926,11371675.847947,11355944.4410617,11325914.601321,11282625.4952881,11231158.1506588,11171865.4255269,11109174.2736641,11041623.3156706,10971307.0105689,10899679.4209941,10826800.3833192,10753527.4541279,10680367.7548572,10607932.2041262,10537495.9195871,10469812.993734,10408426.4830479,10352475.9620236,10305450.0254614,10268330.4125882,10240835.2826314,10220743.5636456,10201013.8632477,10163823.5184715,10080613.8805634,9867311.86583734,9450675.35648612,8445423.47972293,-2801432.47607245,3854595.64718084,5875288.1746717,5311269.45460314,5220676.34430573,5185228.55300945,5162515.92743853,5141227.41558815,5144608.37791018,5157420.86924362,5174777.85683653,5210990.64214676,5250015.16916978,5294786.44544681,5344941.96464743,5398196.43636177,5453152.69004628,5505846.73030311,5564269.02697787,5620131.53253979,5672871.20070987,5723136.34171178,5775790.63127178,5815377.20751148,5851487.7988348,5892449.0171343,5922538.42244015,5946095.03539282,5956691.78174465,5962582.77511141,5962930.64993518,5953782.17468982,5937921.73990247,5913483.77592738,4330749.62844523,2765215.16516041,1138515.41369573,-164305.041937231,-216453.720704619,-196438.01040338,-156651.857513031,-105330.432948763,-42636.4526015263,31211.1165696444,111611.630527477,200482.072261464,300600.331979677,406018.464421232,516172.313593959,635722.474473132,758600.820221005,884339.211453912,1018487.23080073,1153034.97569243,1288734.72135615,1428449.34018471,1568320.02836667,1709426.02801223,1849462.99649741,1989287.53523056,2126714.09232708,2262934.11013326,2397878.5073393,2532247.47371199,2666239.70955215,2791918.61777252,2894529.96185174,3008928.54822124,3117354.10436608,3057459.88821553,2704212.7927266,2150937.16372102,1596165.33976142,1170435.4662121,847777.876869554,596367.392624899,416742.808705178,294632.9304042,212526.66444433,157054.567335561,118823.93495993,90136.616816042,66928.3358254571,45534.6150209944,25477.2804225448,6063.8587402475,-13873.2098683972,-33967.3990304406,-53788.1116934076,-73326.3310295405,-92271.1555626463,-109969.105009853,-125703.7738128,-139873.39132434,-151481.562940902,-159490.405307603,-163338.009650555,-162949.491728049,-162474.319337083,-159197.977413151,-159683.452736853,-180144.726556907,-166136.360220976,608440.59925199,1936584.54722201,3243022.45075307,4564427.70401983,5899252.51037625,7247605.3700345,8601732.02784208,9958777.06587499,4747238.78467249,4204858.02962164,7817571.02384855,3748294.09006002,7209110.69988022,1192989.81962655,4349858.18286531,2658572.21931114,3871127.31021887,7371393.13664371,3629438.34954075,6120481.59649971,1301865.96201328,2834164.48449411,2472360.54558887,4496443.9066185,4358642.56223955,7840506.96393908,1418024.96977875,5246259.55816466,3387936.86252029,3621513.42115355,8731984.9995734,7918898.06051392,1265758.95674042,5928900.3950891,4746768.06114198,3574627.76731522,4686074.0419894,9088133.55330969,4646709.32768618,5840093.61176603,4763654.19195504,1321722.39264371,4583981.16876136,5944938.00559177,3118700.52046626,5170928.12053259,2678053.6689567,3282470.72129062,3319448.53929697,3308695.87427508,4734942.62938581,3985820.69158398,6550813.5351339,2932652.56596512,3962137.48581038,4890945.54086337,7429497.90614123,3951434.932153,9229407.0264152,4747712.82731579,4531283.77229709,3611172.1553303,3078203.22648275,2668467.86594768,3612755.08159494,4680067.8316141,4527043.47405971,2394279.44535206,2373713.28624961,4589870.7784126,4522563.32741508,2616195.31080237,4305031.18797724,4055469.95107104,3741359.20252227,778041.245895127,4171500.11256075,2110075.0474557,3628230.70666958,5258220.76960714,4444255.99249096,2674434.18676081,5674026.95927447,6166111.96147775,6135915.88100078,3576314.15146695,1327498.98955936,3590665.54022821,3137119.20463384,2494457.9229698,4646104.74481007,4080692.92703815,2676086.78643298,1180141.4323957,3706816.80935005,3241837.33641728,3575687.75579074,1536652.36203102,3099801.80168611,3456359.44387031,5434383.2553679,1758516.47839303,5029653.55729649,4311889.39539025,3302179.02521898,3963183.0402574,1276579.45229941,1383928.92968286,6978890.19349725,7449923.82887237,4855318.84368627,3225817.7578235,2848391.62450834,2452141.80885635,1730730.81044265,1390833.87367616,4347726.72606486,5498489.52512709,1754736.38036793,484183.980141895,2749769.87636533,1943180.30642511,715597.716155454,3510945.19344504,3116639.45580346,1665875.57835029,2567172.13573992,6815159.16726891,9288614.73767235,6821848.405793,3891226.0704095,4676354.25392313,2665948.77242584,8467178.81547282,8742088.74898592,3584685.00633573,4382911.6560374,1321704.65080017,4153865.88355555,6921089.05739974,818962.166360063,9175876.23875557,1809694.71932037,9692242.35388879,4731583.06404782,2405095.99488696,8198107.65711744,4684497.45598277,7967874.81999985,7734776.0576162,3473854.13836087,1366937.5329394,4710745.7487163,10043209.1902334,2325909.81210961,3883037.92430436,8350304.97100391,7877829.82607427,10052356.9871404,8279584.73544547,9640271.40591463,4177407.23294045,9583483.24175391,4126510.5644801,6645930.81033945,8641761.81102079,3067924.22023329,3665979.96658357,1263945.50999397,1078258.38586726,3582869.90538526,9786789.5202071,6576677.15549506,6871343.88649905,4714799.76509853,8242151.48003192,9293671.93840905,4679213.99267188,9051304.85400663,3577382.86151835,5322992.86680719,9547259.29566248,2199575.39240827,1491542.51016222,2643930.56063151,2668355.30843926,4803831.87300062,1317802.91230165,2330385.46653664,4741903.2048281,3287399.19131892,5273259.05501063,5466948.17862399,3486249.28195061,6847704.39408464,10308847.6048033,2301518.11198464,7790335.98411783,3035720.21113878,3999133.09687635,10456071.6938602,8642426.45571453,2988586.41481615,1903435.53660785,2570257.3997296,1630643.73530454,4074585.24402507,4344210.07989528,9465667.99779284,1140341.83778497,1087076.7227049,3967785.13874328,7292789.55831106,4065895.80023231,2267676.86762334,5456072.85860331,10324244.51862,7408323.43962382,3051634.16006849,6604444.1143606,6526904.82521261,2505918.81651179,2674703.70784075,3793930.89769299,2807495.11970166,3651533.78573553,5484182.61036541,3998840.21861518,2098871.52495566,8105711.22221495,9525045.58921148,8814586.14328259,2339911.00497332,2661000.79888199,8731858.12708695,2667330.7844709,1054410.91085957,4066837.95679032,8841591.84282626,3819847.10531433,8085913.07802761,5261239.64537995,1349936.50346152,4615499.81606076,3726416.86014101,4732918.90834529,9130933.11550832,6898288.03608287,3664549.00927434,2925520.74381233,6746736.26131117,8152296.72194389,1285682.08548355,1353096.99248692,1270563.50529231,2679306.46568759,8281908.81454874,4601068.6709562,9859521.98447409,3992886.50373687,1331642.14057946,4692477.42429692,1745442.89432194,1312305.17103366,8317436.83359196,3348699.1083551,3770701.05501307,5388792.12531513,6781276.92356598,9825112.9310186,3181754.98376162,8405551.54938547,2722746.68830771,2658095.20904035,4243928.81644818,2659670.48890169,4709269.18597069,9741915.08468778,4630636.9288863,4031635.78528875,5411763.24840171,4240230.76602893,8377207.3154099,2507141.51617957,1277736.66364516,6962297.15105605,1445283.52462194,3798147.86545943,3837525.7738185,10048015.9927329,4043598.96177259,3959266.17396176,5898720.59130903,2841518.6044924,2666072.7345816,5528320.87458382,4687204.7959298,3290108.27114425,3362711.01999863,3979010.61450215,4899090.75149121,8736457.98137446,2676680.40537145,4536866.11435143,3514199.45068005,4100569.01227638,4545085.44403263,2940253.72507506,4268156.23937775,1303164.82130717,3185489.66812985,4160019.72789734,2689355.79500902,2679007.50924608,5954860.50239972,8054976.73846507,2028266.89860137,9346616.29851645,1545533.01878947,1821075.70661597,4777135.61723694,3684434.44810703,1406995.78492785,1259538.44114483,9404340.85225051,8012693.93142461,4754797.88473195,5321449.17271536,3200140.056216,6678509.21041395,3556843.4963083,5618486.04264507,2725441.18167597,5343887.48392984,4420722.49978616,2661765.78317441,2694373.0550671,4712215.77431211,3161493.59989459,6712338.04315926,4009000.72360973,1247894.05388975,3687100.88468871,7267684.63829302,5366018.64622133,739144.185029695,2329986.77975414,4787192.50419763,8773430.02492056,7352465.92773808,6543330.57875572,2865022.13872114,4020004.31907279,1616790.03513779,6537928.76492802,4193824.49993429,3395430.83995548,7398022.0932284,6157847.35809557,4875140.3739027,3714652.80772538,6792810.44957885,8694157.13615461,4355139.27903651,2311983.23062215,2004883.20209979,2422769.17989703,6943579.59480033,3605094.56098333,6549765.39155089,2604850.27452235,4611811.53991758,1992654.92852865,7183170.82001377,5176781.90564888,4154965.20955824,5455039.68209833,3087592.80055916,4761316.69332532,7346467.87141904,7557492.0263011,5436044.40292606,4277285.45572747,8701189.97926478,5348704.64291527,1970255.55466959,8085413.55652513,3636453.18929234,3034074.61344421,4030528.67629596,4048554.69647681,4891999.01419263,3214914.95263204,4635958.83576045,4798812.3586276,3844289.92729457,6610879.40748627,3378459.243502,1835649.3713625,3341029.45754584,4457097.20151804,4681615.12550266,8960507.08260276,6430974.2812525,3529036.39756742,3320787.41000737,6282769.15778405,6006882.25068466,3713124.10176035,138733.183393434,507824.64485877,10626015.3795307,5121465.07723109],"Archive702_field17":[800,386200.400895286,-502438.501904691,800,2420.78459636728,3921.59458659251,5326.9500432888,6655.95814523381,7919.49953398911,9129.29594404177,10294.6715995651,11420.1525924389,12509.2100196915,13566.4202560167,14592.4670038478,15583.9877676359,16541.5571143341,17463.6361162381,18344.7079902641,19182.9627252568,19981.8354830415,20751.2391943036,21517.5200049819,22335.1271279683,23266.1197203223,24387.1707664684,25800.7257493954,27656.9544498843,30198.2866276492,33830.5868692472,39280.4546827863,47599.8100722173,60370.1853479793,79831.6684649716,109658.29766498,158061.661166401,229023.046206621,352338.47306206,367106.190301914,394793.962494499,428631.747817516,460479.906209139,486928.863118195,508249.456381664,524787.879353582,537081.390131948,545451.934085264,550296.971984706,552181.096214618,551517.291826166,548616.647962463,543925.224504008,537827.766762839,530587.501204184,522472.324134944,513798.393578842,504731.623080366,495409.176883432,486026.670502268,476682.781733614,467420.896141555,458319.276960492,449435.710574525,440763.169006006,432301.734058134,424087.422488071,416096.860694003,408303.97693919,400719.636371143,393350.928893547,164038.145777933,-58116.8869730452,-280258.147635882,-503162.343273846,-503922.76399318,-504701.505408666,-505496.449893396,-506305.228758858,-507130.907001032,-507980.619238798,-508848.864211297,-509724.933920351,-510590.405021701,-511410.430916648,-512131.870283446,-512688.108142771,-512987.622619259,-512904.505888204,-512296.177642154,-510988.251655607,-508759.122669411,-505372.620530769,-500561.252321664,-494030.344460171,-485464.389210387,-474544.656368159,-460933.645924812,-444309.856671871,-424359.731877011,-400793.209252662,-373386.221905367,-341807.91457833,-305845.815284484,-263864.9325176,-213907.321469692,-156688.971146739,-99738.8789467333,-52876.1639666714,-20157.860176358,1111.70837267764,13949.4144143136,20838.6742916209,24013.5889926836,25230.6624623875,25594.9051585757,25670.6996171743,25695.8907612812,25662.202915285,25426.7956487177,24967.5498657936,24327.727019042,23556.850727087,22695.7280008246,21776.8250357681,20822.9256811717,19840.3293402031,18830.0209682727,17793.6158374743,16725.3271007071,15613.532762782,14453.0181454152,13236.8118665833,11950.1403292998,10584.1384612433,9133.55820970119,7590.76433816148,5955.222224932,4245.13597962881,2494.51769735564,800,800,800,800,800,800,800,800,250831.303270456,212819.411021511,25415.5843491471,108106.404120415,43522.9518189986,-319920.691969034,199155.457224334,22354.982111311,134655.897207314,29983.3797862558,38572.9205713289,86505.3681463914,19708.5855178935,-269468.320338841,6017.40072454369,32355.4565658331,185148.623301902,24104.0350232986,-273702.001991778,25166.7231255813,22926.1565576374,11574.876237971,8628.6795993016,22453.8974108434,14369.8505751681,30580.7252986508,264504.536889743,-4711.42646416221,374952.802719543,25035.8158238452,315008.361338763,37174.989045287,330331.124855889,22561.1078763029,343032.690275657,28639.0833546542,-130100.267011412,61035.6774997813,19485.4738421582,-112610.140464361,4841.95472038902,24770.5562802393,341986.237031775,66415.3563395907,24328.1491279073,-41105.6593452398,25149.6638203789,11319.8830635577,8896.02613423417,63270.1829680285,22009.6527011578,257586.35468335,28110.5370877849,70725.7707272885,-51963.7499175538,14491.5989234103,2397.55931598926,300819.597048583,30713.9995340154,-128472.447391591,2281.81211972401,337832.828414838,27160.8117793714,-296185.46020258,36083.1467315875,19179.3055156846,47834.7944533917,-355313.713985976,3579.30102053168,18282.7881438562,-49792.23492749,24492.3693847621,191488.579692507,25213.785786641,45888.0088228091,11000.7426066286,9101.30707407778,-65041.625715623,-278340.466334762,65757.8820059504,26276.6701517122,-123039.952644385,274353.242234338,14376.8007119708,3867.78745665177,2078.92148152802,97211.0067615856,26044.5480269811,61270.6905067694,3622.34708805656,26069.6684372246,15099.058405731,18796.444812148,-206709.317892283,2229.1989127867,205297.179598713,-158644.489904694,24653.6000692215,-317174.535831159,25383.8026791646,56474.2329538815,10619.1761603535,9241.37481926798,-187190.954226319,-51984.5097675385,-126062.856229838,25478.8784884504,-316819.420197177,187302.446747214,14174.0162011674,5205.73322405813,3214.85487265891,-106343.878557122,22820.2994100667,4832.5931004447,47138.5604536832,-80458.5914604886,25604.4944887483,-5006.21446463142,18341.1213793376,21338.9781968271,2110.85554884501,61875.6960646154,308540.442467944,24852.7204364974,61831.5280917304,10177.5898575125,9314.9575096729,174368.153273075,-317892.038175036,107896.425018042,13884.8360416551,6437.5094523275,22827.8793421234,-309723.733124997,15156.3398074477,231616.660182379,-287841.844229084,17815.1627365052,378055.467729133,21890.5112608835,3289.33073614056,-83725.7553973687,25108.194230653,286116.625880439,9679.55858235629,9321.3954794189,32010.5414450968,13510.2921907004,23233.3028096594,8440.78630581165,15635.6397376892,16267.7331719229,212301.955153392,17217.1359758304,205543.450918865,22393.6565664662,4323.07375437069,-228106.82391986,86354.4282530446,15667.3793643237,9260.61262714914,-37490.7821036017,13051.4909680716,23564.2116700256,16032.2212702625,225546.390499054,16870.7440950153,2609.18434130201,378841.799893952,26489.3957408627,33783.4538330561,22847.7051661901,5218.1374571105,-298117.079665397,-313741.161278247,-113378.170415577,15629.0100853077,283870.891757405,-277761.298864067,-134641.914960944,271824.594217331,-100210.825979556,23848.0437123002,16345.9990507339,42789.182453976,17396.7444853283,3326.81517250705,-293485.283736859,26763.9614185958,-137454.465611113,23258.3891823526,5991.23885109565,48939.1574934321,-90147.6814326979,-307593.721940027,-116088.473723785,-313077.382553375,15500.3770314645,174710.200240359,18986.2715926643,-320884.41010655,10688.3932020427,24114.4715593466,38794.5720057659,16575.3068466853,-139969.608846025,17847.0233921325,4467.29547758139,28447.7191534053,-85477.3336212658,71962.0567513407,26672.7204461401,-306537.363889919,23635.903276935,118725.563635313,-102606.964899046,81508.6286515311,15283.7880505081,69328.2292396637,-301916.155451896,19566.8502651056,18124.708496515,31065.4181296543,10726.1931781248,24384.4281341578,40446.5265298411,16717.2423562063,-322731.149022255,18220.205480117,28457.7914310396,123742.035650613,81240.9596625118,26343.4359073106,23989.5070014733,327806.482529318,102672.395792441,279076.503041015,23885.076468076,14981.2748509605,-32532.98849314,-94534.9102588944,20090.8181092624,18714.824423576,18844.3823279641,24667.4068267214,16768.2543493586,18512.4795524038,2222.20249514617,333241.574240496,10935.9418809809,25952.059908752,23363.241473406,364978.092618759,-309321.301164107,21694.0034777217,14594.184438646,-125674.911329256,113492.768952019,20557.6843136968,19239.8508972439,11942.9763144299,-75070.9499959885,11505.4618730092,25666.0457061959,23119.6105285911,207982.556196829,21525.5985578009,293823.977354033,14122.8746882591,321674.172829622,20964.4796129655,19700.6293371259,172889.403095912,12384.5156161113,-281012.05208529,17824.7060813954,11998.8292424847,25579.8243613929,52221.9284679334,94822.2105555461,7142.27215899879,20094.8567756459,245467.394119864,33313.9001470251,-27124.5699169396,17759.2584686096,12412.8444852718,380345.146491712,197104.079485457,-102325.344111791,39837.6799299625,247768.803057946,7586.10263485266,20417.9767137141,29289.9984959533,4666.0670665161,12744.7766206787,144382.113203048,-252754.852624314,98815.5213913398,20781.2930038488,26347.8734756261,38175.1395781995,25493.0176893043,12993.3521700055,27206.1926344366,20182.1475224988,-302404.359591225,20583.2534544149,-314441.962204193,24814.9130396401,75141.7218660234,43298.5851001037,25527.3781808618,13157.3026705102,19707.3296653415,21145.4153995988,244413.894171863,113268.244397055,-121827.392403648,21663.6437088569,56530.306182431,144816.890989487,-283884.000037041,22133.6054345446,34129.5549595903,12048.1603725486,-109936.410507316,355125.675268983,-205962.12184085,20897.8168299243,22555.5956917398,12041.5587828862,91747.5242102781,110129.844703617,21369.4194158097,8154.01672396679,9584.65363564148,310821.387082431,34199.3831429613,33986.4698120905,25553.3421035234,-98688.1446172757,21787.3730531081,7117.44046314433,3408.06106529693,183892.224791393,-45689.3573568978,6791.28223098494,16896.7335471881,10302.5294969427,83514.1287576333,9892.74940665735,6017.9234109346,7896.38838430266,-129350.614344353,24210.4152803548,-127266.392755602,12958.4647509387,10470.9242255741,7757.5572145214,-114734.778114394,25607.5395907801,-216432.595001748,24800.8100485052,6576.75726016717,209463.048438741,52605.8403950199,-20722.48914374,17240.0277338935,4862.09302439025,16473.3855865391,8173.18269900375,207418.063803131,20393.5480697062,3505.3526311311,8250.36591607942,9565.82297773523,-17260.5276637005,7738.69170790074,6045.21335554436,39065.248587418,26814.734237123,-165502.745476939,23553.837700725,13489.2428122141,129424.08138586,22976.0668960006,13712.3760541034,-206835.956948702,21420.8320049034,291810.505270598,5142.6929648363,15970.5699319349,45046.4112722427,-74882.4943579137,23888.5130769269,6710.2490904105,5024.81164049922,17523.113106106,1699.80818434557,-391711.910713617,1672.34733074602,278693.900484778],"Archive702_field18":[-5.19209209517889e-18,6237920.15355867,6237925.2145014,0,3.14223414173234e-17,-1.78161202218504e-16,8.98885494363111e-16,-4.19019965519484e-15,1.86062438450095e-14,-8.0046995384846e-14,3.36874190325345e-13,-1.39468038180709e-12,5.70138299942015e-12,-2.30761389977897e-11,9.26347955573191e-11,-3.69208400271639e-10,1.46257084281396e-09,-5.76265664063438e-09,2.2591570383777e-08,-8.81655351569047e-08,3.42741025294875e-07,-1.32837990305115e-06,5.1406498466799e-06,-1.99141504540495e-05,7.74185193832615e-05,-0.000302851598038929,0.00119577073452596,-0.00478374366126917,0.0194936603937237,-0.0815019823508284,0.353169096378661,-1.59719872678329,7.56003475822535,-37.309895837423,191.276305303552,-1028.88152779627,5564.0187837858,114489.114622482,232652.257298526,335105.923658515,449632.016835892,578129.441137761,718703.24679129,870071.976937343,1031061.33584556,1200439.24253533,1377032.90233775,1559769.56184084,1747708.99076268,1939922.03002303,2135602.12991673,2334096.66670776,2534768.69641731,2737106.58744654,2940701.9187689,3145216.40069547,3350380.24270275,3555990.73857112,3761902.05663488,3968002.63493035,4174218.9021406,4380504.67591829,4586832.24882826,4793184.24707151,4999552.72448156,5205934.36434411,5412324.30190992,5618718.37842061,5825115.91050173,6031516.06695047,6237918.89886622,6237914.16452842,6237914.0179493,6031413.23226089,5824906.0962716,5618391.42926502,5411871.02071695,5205346.96119796,4998823.07459118,4792302.01150426,4585784.92419256,4379277.98847126,4172796.63005407,3966368.54331181,3760039.04520097,3553881.54038394,3348002.38026942,3142550.65371652,2937729.90337783,2733805.58075389,2531116.40445334,2330085.17122051,2131222.9381801,1935139.93237422,1742540.7804143,1554223.20531571,1371102.65144436,1194172.37835235,1024504.22353691,863262.614230234,711643.511303464,570831.10769113,442129.697886761,326766.184596599,226460.424637799,144346.741786559,84001.3142510178,44585.1650782439,21125.4719788909,8106.40337058572,1565.03397908103,-1293.42808048585,-2366.23872257993,-2687.73760587519,-2720.20913706946,-2637.45089639792,-2462.4115106789,-2159.32955021448,-1759.88202154077,-1347.64158702794,-975.769889396019,-666.930258880817,-423.901140663714,-243.437301881508,-112.747235096602,-18.482320270026,48.7134128080019,97.5080088268519,136.608792221381,169.920280044189,196.937188910728,220.663491972307,239.38533209858,247.515387283014,241.038390789495,215.895652761753,166.430661876762,93.2993276652505,15.8136949524813,0,0,0,0,0,0,0,0,4751700.11144911,1198023.73711996,-1210.54634751878,2857728.78531788,-1455.25391580077,4833749.53873661,575322.421434076,-416.870071091764,1937798.44868315,-1886.89291657889,1464476.60412819,13299.9729502494,-9.94941375870788,1053152.47444715,161.248475679856,998.520314337727,406716.943421833,-939.17683707534,5205491.74762725,-1880.03352727613,5247.20260944717,231.441850585662,142.138396925241,-511.553027929298,198.146631034103,-2542.29838022565,4338951.39511149,71360.9717181622,1199124.2891285,-630.956289718241,2899167.82001833,-1685.17540914236,576569.754421861,-425.161840151009,1938782.96915731,-2448.44027553946,1433174.19106309,17588.9136906622,0.225980477898596,1082047.57421287,125.93861032645,1315.79552104907,692879.407197248,385884.534642899,-1281.90654481068,5205638.31302522,-2052.39193957448,220.867884409006,184.105551663211,508110.420421957,-273.031389076719,4545314.25338249,-2753.33565533976,4297404.83081528,77931.9952764723,191.52646597369,45.6983117120273,3308729.81833632,-1611.10420660762,4792649.74465424,25.1672382556854,2095109.40010479,-2707.92485184915,1402048.11488887,19627.2173904699,10.490252212903,1111188.27843045,5962578.50317994,93.7343735432023,1539.38665189037,365615.322321083,-1522.77790103584,5205786.29164986,-2133.23004353978,2246.84342928082,202.613953672543,211.049213213962,485684.737711385,5670072.78139184,4503799.92282011,-2735.60272485261,4255865.1328962,216302.328774397,183.514782684212,81.2140159754095,5.16418190707906,3267129.88576037,-1412.57074189699,4792825.59053182,59.1711134818887,-2752.16311817383,20368.5405315651,18.9886568677012,6100249.34605414,57.1432152971041,715979.743230443,345879.60922366,-1667.8876858901,4585990.62280828,-2157.91323523816,963.014816650257,174.201953822844,226.430132047478,463656.489929661,5721754.18056765,4462290.43041056,-2689.0920601439,4214329.67130575,202640.9946525,168.449829570515,127.119076630379,39.2841900349985,3225577.80880061,-1315.62513710644,112.163798439,5329532.90209348,2014812.42312404,-2723.37322597619,21138.4355702212,23.7803133730806,-190.066376542244,66.7677945085019,714908.747588584,3144625.23527461,-1738.30146759385,202.401109399642,132.87795582713,234.108314383538,5773435.40337526,4420783.69819866,191313.465932921,144.342242128876,176.54919003558,-383.489132643542,3184049.75735796,42.8471727113183,5370929.12358588,1974902.40549066,23.1064984299611,1714928.86952833,-377.037882287253,114.044780291904,713822.690899575,-1760.19033296519,3720256.22136389,75.8147752283762,237.525625382448,179385.290484377,109.31366468545,-716.294329949603,80.9537669565586,76.0613081463404,29.6181094387048,1374755.43277323,15.546346189962,1682414.62920995,-546.863969674151,127.032730330868,712718.368844165,3678634.53146149,167.453920829329,239.23458845935,167585.850006034,61.7870388435056,-977.480679255289,100.646417777224,5577349.66380171,49.6013183432401,78.4786302688924,1375787.81074225,-740.776189648757,1650153.4510612,-688.902751594626,106.360445783685,2370810.04363353,3966684.6986014,3637038.03804992,164.368351284295,315647.562822382,5824958.20233151,5081664.84576104,4173920.66407481,155856.888670616,-1162.0517025483,117.513464781323,5535979.8178749,61.3085875125465,58.9861370200214,2171530.83481462,-1411.65674092958,1618022.05703606,-799.113094747058,61.2228813072534,-743.196106202392,2411628.64894445,2979134.59809515,3967002.77853174,3595453.05869073,157.555230157284,296046.767557584,-28.4672865504441,5040243.35189044,245.296417783679,-1274.88135989238,-1849.70917146614,127.788117793862,5494609.86303593,65.9769539947381,65.3979459340305,-1767.19728441703,2211956.71490471,6089.84083172268,-1949.73002039865,1586047.9666309,-878.836173312377,2452534.41160789,3020580.03413471,3967323.90242487,144.610638650894,277591.321582375,2572151.03003642,-62.8114718705692,-2.76954828387746,-1039.80565196365,242.449327994976,-1331.11378433474,-1053.70923983655,132.951609584799,5453240.25038399,65.0846146708056,-950.219037445109,2252495.24945113,2625.50434937407,-2325.01529248032,-934.310129319615,2493570.0740179,3062059.75950766,3967657.01695448,-512.558117402186,123.744710674564,260041.174451452,2613258.87958796,-100.677292801143,-12.4430279358337,47.2287132981576,-1349.07304784446,135.053503545525,60.4701049273675,74.4659629651749,2293191.47715851,77.0862281394801,-2530.17962305388,-667.53454989436,1002146.23537306,3348453.85452281,-244.373817047315,93.52703627495,242953.724014167,2654431.19356598,-138.463321854068,-27.586971170684,70.5388067044593,1820853.278661,133.567342798533,-2610.28505447193,-655.900461215854,973717.922739236,-238.657686726131,3555534.82807031,52.719724283952,2695707.0134744,-173.037494172987,-46.0681337756307,139521.015311386,124.110228368263,1781612.31055271,96.2951974068309,172.945049348348,-2625.78561587334,945694.252651963,6100319.47502759,84.3124540739918,-65.4889603304523,126869.538945188,-2420.93051797496,44916.4960457748,95.2483632622007,198.495421179742,1558624.61506179,47391.780633227,917942.886431259,117132.886731832,5962718.78996725,144.431975978682,-83.8501510639332,-2537.00952796613,44352.839627145,213.156309332731,71283.3085308082,890457.076650852,106131.470805641,-113.279658496048,-2438.98810829924,43463.0653363984,-2449.75575522211,219.821039100225,-2272.38469130763,-115.047068635886,2734420.92321513,-117.048919591567,3801610.08045993,-2377.10791290572,40692.1394771662,1284479.85646119,-2464.46201621102,221.236443971448,-60.0262294233188,-236.679011972364,4999404.61304709,32423.440693841,1254168.11993289,-349.871317730007,4999257.40473934,18146.3867415296,1224063.57630177,-448.957401695573,7046.51423189228,232.505093064521,3431123.65277774,842619.916814748,571926.07591712,-204.420994890953,-529.154113986731,236.611568452269,3472711.18121227,8010.2899536073,-268.740126110875,223.720689826256,8082.22467041096,448241.005848077,-1097.80151888925,-1981.33775062458,-1687.57827680605,2816371.35597188,-323.507445081493,196.006761435878,115.697716819437,3843762.22743283,108470.606689057,179.294088018373,89.8997431861999,226.845405686913,1792825.64369869,196.446288156112,142.192882823849,215.553635385273,5911004.52170168,-1127.82445337305,4627467.41837116,159.583766421429,237.222458804885,199.707499184207,3801971.02743036,-2227.30880699141,4090654.08873525,-1289.83670943853,191.799632775369,1526748.37215192,7699.84745114696,4111577.90646429,98.3691046940366,154.667767053281,74.7310857689123,214.652178029251,841486.789552983,-126.146397557872,107.585227062295,222.876350794549,161.46779255979,814218.405890527,212.350551048447,172.636315006502,73868.3433223572,-2551.84411012584,800446.354318393,-983.543499920849,192.372397267614,2094222.75193656,-747.201167589862,203.056315604933,5350051.53091648,5911039.46806298,1098737.13749497,152.075250748312,51.7084044218635,-604.300587005684,595639.210807431,-1074.59031905492,191.823759764602,159.458898351233,98.1333369167689,-11.12111408021,6134665.03771272,25.5369052029616,6134717.99250433],"Archive702_field19":[800,6249863.88586385,6258127.15034686,800,2420.78459636728,3921.59458659251,5326.9500432888,6655.95814523381,7919.49953398911,9129.29594404177,10294.6715995651,11420.1525924389,12509.2100196915,13566.4202560167,14592.4670038478,15583.9877676359,16541.5571143341,17463.6361162381,18344.7079902641,19182.9627252568,19981.8354830415,20751.2391943036,21517.5200049819,22335.1271279683,23266.1197203223,24387.1707664684,25800.7257493954,27656.9544498847,30198.2866276555,33830.5868693454,39280.454684374,47599.8100990141,60370.1858213431,79831.6771834932,109658.464485904,158065.009815204,229090.623987073,370472.882903383,434619.405669012,517839.987730896,621203.771560517,739104.45454796,868121.002329698,1007642.17605453,1156931.19786445,1315108.66267577,1481127.07980041,1653997.53428496,1832864.06462931,2016796.66941215,2204943.69173602,2396635.53745412,2591198.76718059,2788059.46268679,2986754.94551161,3186906.80699137,3388185.61800122,3590334.29994254,3793168.72919638,3996532.42013818,4200307.81456998,4404415.71327862,4608798.38318303,4813407.04673174,5018208.07003264,5223179.37158695,5428295.39971104,5633534.26843096,5838882.73540014,6044328.83115595,6240075.37631579,6238184.88797629,6244206.58888258,6052364.65540375,5846663.08097641,5641014.61281572,5435427.72978638,5229912.23359641,5024481.45462802,4819149.6012253,4613930.05338842,4408842.84235319,4203918.9189958,3999202.42676259,3794755.9439305,3590671.6780169,3387074.87948676,3184131.85080872,2982063.77511064,2781151.19090839,2581740.90446586,2384260.55428593,2189217.38974247,1997206.18342643,1808901.33633603,1625054.58456921,1446506.93283624,1274150.27290955,1108913.92185494,951765.484618278,803650.270882234,665342.621493821,537606.112763303,420001.00238968,311513.508704631,213043.224589329,130399.634851672,69164.4826546442,29199.7413211232,8182.27786820547,14036.9332070057,20878.7763633708,24129.8889761593,25373.4164378581,25739.0502510462,25805.8320165443,25813.6063436247,25752.8903731541,25487.6268352193,25003.8933797914,24347.2879144696,23566.2897408241,22699.6863781082,21778.1856535021,20823.2309179585,19840.3379488326,18830.0839791589,17793.8830046564,16725.8849866834,15614.457346832,14454.3598186871,13238.6510176834,11952.5377735099,10587.032201411,9136.73820768848,7593.83395725674,5957.54739079235,4246.1611191854,2494.56782136076,800,800,800,800,800,800,800,800,4758315.90921051,1216779.75673924,25444.3972274468,2859772.85899532,43547.2743004464,4844324.91193421,608817.529927483,22358.8686174683,1942471.37388727,30042.6934259478,1464984.5030717,87521.8144157219,19708.5880292566,1087080.17648212,6019.56082705774,32370.8605446574,446876.587859544,24122.3248783301,5212682.33450972,25236.8476427495,23518.966595705,11577.1898686403,8629.8502276276,22459.7238504187,14371.2166374336,30686.2190705476,4347006.07995609,71516.3325673762,1256379.18840021,25043.7652880918,2916231.18362436,37213.1646958007,664493.290983921,22565.1135870506,1968895.83982804,28743.5550198251,1439067.17751667,63519.4758532756,19485.4738434686,1087891.53714668,4843.59226688916,24805.4787554225,772681.343916859,391558.263396753,24361.8990306447,5205800.60329497,25233.2697633839,11322.0375902478,8897.93098619733,512034.486528188,22011.3461234202,4552607.20819632,28245.0553654032,4297986.78622439,93667.6421891048,14492.8645113434,2397.99478927295,3322376.47486199,30756.2257785321,4794371.36073888,2281.95090648348,2122172.09913857,27295.4676369119,1432991.53636679,41075.7975034696,19179.3083845419,1112217.40576275,5973155.80258293,3580.52816332488,18347.4808509819,368990.285204128,24539.6619906533,5209306.93955369,25303.8665842452,45942.9826972293,11002.608341276,9103.75374376177,490020.486838569,5676900.45372297,4504279.94732125,26418.6849886611,4257643.34571936,349365.709476074,14377.9719149534,3868.64000990317,2078.92789560712,3268575.78622007,26082.8264961946,4793217.21172449,3622.83033649417,26214.5382232048,25354.6644254206,18796.4544035627,6103750.55405588,2229.9311962085,744831.474004367,380526.974410268,24709.9543849409,4596945.69020183,25475.3611944086,56482.4431595019,10620.6049095772,9244.14837369562,500017.793681439,5721990.32611024,4464070.75762185,25620.3915882867,4226221.6131507,275944.884481027,14175.0171293032,5207.28505650555,3215.09488193512,3227330.35512844,22858.1918503297,4833.89457809601,5329741.36317876,2016418.28133817,25748.9203609065,21723.1591077881,18341.1367955997,21339.8246410826,2111.91124019768,717581.437289287,3159725.47462026,24913.4382429831,61831.8593636608,10178.4572435554,9317.89891069199,5776067.91942604,4432198.53506069,219641.710016429,13885.5862889008,6439.92993481359,22831.1002619979,3199078.24977636,15156.4003720881,5375920.93764938,1995768.6335099,17815.1777212138,1756105.62444905,21893.7580334566,3291.30717248191,718716.102616304,25169.8169944174,3731242.29663553,9679.85548597757,9324.4212746124,182218.981463987,13510.7344195416,23244.3420430101,8441.17450197316,15635.8247409404,16267.7601342437,1391051.62380893,17217.1429946758,1694923.9200611,22400.3329131101,4324.93976840187,748331.608584519,3679647.95915856,15668.2742177062,9263.70225225473,171728.203464034,13051.6372202043,23584.4766765787,16032.5371841162,5581908.31585186,16870.8170107519,2610.36430834941,1426994.4672401,26499.7516229716,1650499.23774659,22858.0886856777,5219.22130836842,2389479.87147451,3979072.88377565,3638804.790003,15629.8743821424,424518.629865468,5831576.92207311,5083448.24404734,4182762.52254561,185293.22542821,23876.3387700706,16346.4214548933,5536145.18036271,17396.8525150587,3327.33805862639,2191273.55168651,26801.1642577388,1623850.08765331,23272.1131205564,5991.55165312571,48944.8003021692,2413312.93969044,2994971.92830659,3968700.99385303,3609058.06890315,15501.1777542257,343754.771093174,18986.2929340305,5050447.49016612,10691.207582591,24148.1481912866,38838.643657182,16575.799433657,5496392.36575885,17847.1453436616,4467.77414104065,28502.5562234876,2213607.66243141,72219.2756349639,26743.8864630851,1615398.80769876,23652.2361889134,2455406.44284839,3022322.27465224,3968161.11105589,15284.4721665377,286117.712117507,2589809.70077732,19566.9510802798,18124.7087081156,31082.8151775882,10728.9329278869,24420.7329811526,40460.2497705001,16717.7710274615,5462781.76600139,18220.3217245127,28473.6511419184,2255891.60647999,81283.3734534588,26445.837319186,24007.6942164691,2515024.61300598,3063780.60436022,3977459.72936719,23890.5754160413,14981.7859053399,262068.32649213,2614968.22562015,20091.0703601563,18714.8285601076,18844.4415113276,24704.2700285478,16768.7982089833,18512.5783134538,2223.44982157777,2317277.9500342,10936.2135636956,26075.1073330939,23372.7759267054,1066539.30315016,3362710.64518232,21695.3798181516,14594.4841202329,273533.718853761,2656856.33220551,20558.1506082895,19239.8706749592,11943.1846243071,1822400.15088449,11506.237141061,25798.4396865031,23128.9125643373,995682.347310517,21526.9215347442,3567654.75393698,14122.973087477,2714831.59255979,20965.1937128383,19700.6832001272,222164.037180595,12385.1374798381,1803638.04532122,17824.9661893979,12000.0755489455,25714.2404993854,947135.021690079,6101056.37976043,7142.76978371284,20094.9634893335,276315.257429193,33401.7491694496,52471.267472866,17759.513889901,12414.431466957,1604360.65806174,202721.481400954,923628.506921125,123722.083300979,5967864.33726482,7587.47743207211,20418.1488859691,29399.6671620265,44597.6071651884,12746.5590150129,161020.199627488,925634.280308762,145011.711124347,20781.6017475276,26460.5196411564,57847.8982353814,25610.4520492596,12995.2114989722,27300.9276371218,20182.4754291416,2751091.81635518,20583.5862574592,3814592.10813547,24928.5088040681,85452.4931188082,1285209.42617389,25646.0642169142,13159.1625541885,19707.4210815791,21146.7399231252,5005375.57398251,117817.548333082,1260071.26250695,21666.4687635818,4999577.00954373,145949.385978955,1256551.53666919,22138.1582856532,34849.3885822973,12050.403602409,3432884.43368053,914397.38049064,607881.429184295,20898.8166220056,22561.8018138087,12043.8832174689,3473922.93471162,110420.774492772,21371.1091762726,8157.08524423929,12537.4615029604,545463.045486624,34216.9983419636,34044.1746789401,25609.0064840487,2818099.88549499,21789.7747033402,7120.13886079006,3410.02436743055,3848158.57409465,117700.424345787,6793.64855662185,16896.9727030761,10305.0265828602,1794769.73409008,9894.69969059444,6019.60305965439,7899.32990104083,5912419.64317562,24236.6704818311,4629217.15226362,12959.4473524077,10473.611059834,7760.12738437994,3803701.8498732,25704.2212178286,4096375.70809437,24834.328213162,6579.55341632655,1541050.08371882,53166.3624337536,4111630.12714928,17240.3083715511,4864.55246615653,16473.5550934816,8176.00091663564,866673.104569437,20393.9382117588,3507.00322920578,8253.3757709769,9567.18564100234,814401.337367603,7741.60462090788,6047.67788587578,83562.1073955558,26935.8846257167,817377.223136301,23574.3637930769,13490.6144702938,2098218.17921095,22988.2134928825,13713.8794262038,5354048.23442493,5911078.28107884,1136827.45757521,5144.94099212682,15970.6536406596,45050.4644560685,600327.79163767,23912.6703105344,6712.99033294143,5027.34116236006,17523.3878882252,1699.84456429009,6147158.15201868,1672.54229488545,6141045.11770788],"Archive702_field20":[11917737.5640846,5784276.29793544,-0.183861436858523,-13.4818144908909,11853068.6470116,11788409.2777689,11723751.0157768,11656925.8666151,11588951.5503896,11520983.3199288,11451866.0153076,11380167.7181849,11308487.8601947,11236799.1035121,11161061.9928054,11085147.8623666,11009244.671077,10930366.4105002,10849637.688284,10768909.7914032,10686668.6994322,10600354.4593161,10514035.7596157,10427726.4449326,10335339.947508,10242461.9540231,10149580.7667327,10052160.5618628,9951434.09682445,9850699.79108946,9747708.46701338,9637375.17649593,9526983.23144806,9416502.86883443,9308803.02103665,9208090.42070675,9076418.31714985,8929180.48538029,8760981.46442027,8565104.64719165,8390823.91267377,8241500.26431401,8099688.25934469,7964256.01217271,7835530.95965052,7713552.61037895,7596266.34344335,7483816.18793962,7377195.32099065,7274454.66031486,7175479.98431826,7081076.34734002,6990252.91539713,6902386.47627998,6817925.73559485,6736731.14501972,6658110.10687665,6582001.78440077,6508821.45210648,6437907.17426249,6368921.76729436,6302521.3354445,6238103.64598052,6175392.17481036,6114634.31725821,6055767.07956564,5998427.48629764,5942575.59623008,5888399.36893481,5835632.91824202,4338207.22404377,2892138.00801069,1446068.63066221,165.544093382993,189.776909306782,73.0406365286162,128.403260333764,214.807754734102,147.884477749163,78.95894904559,237.851449023182,225.664601105498,14.7779339621232,243.150536698416,307.170385727542,146.063907024972,226.200884164665,397.286405104165,313.624823805704,181.400276120295,503.277041122217,528.62268758642,197.970190655438,629.529894313413,807.102982612798,542.854899414737,711.422146188776,1125.03858655057,1032.28287449071,809.527012909686,1536.07769781752,1632.43624008409,1017.85938109778,10782.0550492656,26284.1308473068,19659.2105163909,20767.4813755398,22626.6700616332,5870.48393770362,-636.434515933699,-4031.19517960581,-3867.46748357923,-787.799981683193,-2802.73851376363,-3575.45661123271,-1823.13363968925,-1524.62944092297,-2997.94467996477,-2260.67950972747,-351.142152041229,-2331.08282090979,-2341.58827837513,-660.817627264636,-1603.63114581541,-2180.12555040996,-1239.07139705665,-873.190843421711,-1886.4008827859,-1516.35664151889,-125.553761278864,-1493.1959039484,-1584.93041484439,-554.131591526395,-1037.53539018345,-1496.43559156197,-915.437670526894,-548.296432345871,-1360.75338173748,-1182.55663482153,1324170.19375845,2648357.21304668,3972547.77960978,5296741.94688478,6620936.82440969,7945134.29594245,9269326.92559575,10593524.5350595,4940360.19796485,5142394.35217387,7681443.16468098,4090691.33409668,6882553.61362653,1222912.64158543,5494239.30418758,2671154.24567483,4364881.85580919,7107068.92780429,3741906.27396062,6650147.59371741,1375280.17542225,1286767.8544187,2839779.35038363,4080629.51067884,5596559.95007147,7750928.0457177,1514102.79677933,5119722.86361853,2721596.43831721,3840694.28972876,9013274.69004796,7884942.88924433,1421181.41862195,5627709.78366594,5042017.24083508,2646162.44282269,6427520.22664269,8961950.493399,5454260.70597722,5505264.28538229,6867733.05273292,1335236.14559272,5819599.10796989,5684966.26341739,2494955.34364937,5321567.41370645,2751823.50725863,2571944.2395733,3785060.59526626,2719134.89962103,6749824.15655268,4200444.71098495,6458724.71160817,3027990.9268359,3839041.01256975,5120729.40450078,7725433.62091277,4121097.7236087,9199483.73464473,4990526.53738341,4220107.95622685,3781516.69531232,1334344.70431726,2825977.59734215,4237605.49368138,5326538.89163513,4128061.20457513,2470204.21659416,2979242.2574318,5740232.34538727,4262852.09212706,1248025.37677414,3992877.9180165,4128364.90417345,3857125.13984471,964172.379632191,4730342.08236194,1357782.23189222,2804260.82757279,5166529.18620203,4541878.92005187,2558361.41916983,5443471.90628767,6400773.27631053,6437619.2681129,2748049.07779968,1472154.37250631,3742950.82706595,2812488.97473806,2521016.56206564,7511126.31073971,4239731.6468935,3178507.04664386,1765091.92894035,3995008.43192816,2750813.16178455,3705266.3873163,1985970.96835023,2840710.29847839,2664276.15626204,5504906.92169939,1928154.96002941,5675609.76453954,5400208.58532008,1408126.82030416,3874330.93997573,1247811.11080993,1277680.85108999,6804171.36873842,7680824.56862573,5149791.70184064,1375017.73590814,2944236.09780868,2495376.3194112,1404859.80455139,1260516.43741942,6262660.85977118,5653461.53516415,2119397.95088936,881854.103287991,2663478.17024165,1373561.07177157,992697.737571769,3599142.36642823,2870526.6235824,1418575.46635594,1335350.29498583,6881369.79394221,9275007.83262517,7460596.38173425,4050596.77400249,5389421.09847272,2582132.16809431,8165482.44515825,8960856.40230818,3861962.88179701,4416317.75184913,1247801.32740563,5013799.58036952,7067230.13794187,1060306.1831853,9124196.63991348,1331953.03546675,9765704.37786685,4798784.93014755,1435694.62112349,8257320.6577809,6147404.57287406,7949674.25345212,8300294.05367471,2701047.8918778,1289932.37247997,5207075.19931435,10240917.5711562,2574118.09619616,3765668.01406486,8480956.3131014,7820687.76369546,10301143.0984458,8370395.61953552,9699378.93898123,5064338.33393766,9633271.32743758,4918068.54027711,6624339.09117974,9139966.41730547,1351796.0130213,3905343.10173302,1404441.9684007,1286302.33223403,2517402.18829196,9894711.78410121,6517187.21893069,6975072.8350742,4754024.37052084,8313630.29977416,9866722.2615532,6329963.47054833,8881153.79226296,3688776.59850633,5299002.27793781,9979702.84327458,1398539.72178773,1287777.34744915,2603612.84139913,2809070.97538151,7140635.13100479,1472242.17668798,2422395.4875834,5095138.06525218,1269183.12531681,5213674.30135542,5579750.05077075,3565497.95649277,6927877.08190157,10827557.1975138,1416463.32451265,7612750.75160002,2459454.91416824,3973670.66571752,10819374.1477866,8259663.81661592,2796415.00818454,1347620.2635479,2575308.34014604,1301886.64233463,4213687.85359413,5718186.01197798,9493215.60670376,1211271.75391555,1279154.80985515,3910167.66960162,6961439.88507423,4184427.86665758,2377041.42305083,5542123.67055068,10779071.6348428,7179062.89115379,2832549.61443629,6728326.47374604,6344362.19162729,1230165.45606113,2648342.77283171,4194302.9599194,2694872.419651,3862838.01804442,5618304.78244564,4295474.608709,1380922.15262758,8136813.33884522,9563776.68210335,8529352.74836643,2559383.43177955,2606658.74530467,8354390.5400146,2789094.73954104,1188584.78300974,4156372.88142487,8615574.23021203,4248656.81449072,8072304.62545083,5075515.47886964,1323000.06495215,5592197.47466816,4042132.94141051,5150363.5644416,9043031.85591773,7022921.55134158,2872845.2686154,2761250.47233966,6780406.09795476,8197208.03165509,1375383.70114957,1303141.19498279,1393778.56671381,2770613.09628295,8889771.52892446,5664757.12346228,10020156.471294,3806180.25170165,1322979.4791559,6529208.70838893,1331815.24844497,1344696.78764568,8427538.34874105,1450274.95958301,4141586.63721265,5423999.05753608,6830638.96414248,9957431.45536501,2910325.35916159,8588478.87506942,2536850.27939175,2648320.34318328,5223479.62019273,2690994.45988301,5265609.94295766,9832155.01703647,5521926.42732648,4067591.41693898,5464069.51918359,6383414.27459134,8534723.041235,1455717.28571116,1383961.61257454,7156797.59150404,1267514.87826685,3917868.38643616,3890891.71950284,10361499.8706004,4097499.63439321,7655635.60161942,5569700.73884794,1335705.15890472,2769872.15635044,5725101.78113066,6236545.10850799,7780014.24103141,2612192.71399134,3880584.49473825,4889645.65487243,9066134.151727,2730924.94694705,4177118.22183986,2647654.09629275,4293431.61556889,6487648.00985128,1306664.9268266,5173425.27251368,1354256.94885995,2784515.79805613,3959702.47121592,2536245.28413969,2861747.23929019,5743300.99337806,8076271.06906965,1380663.67911477,9350532.44245345,1287829.21688627,1391905.11625241,5271174.39958777,3798632.13666139,1267362.38942837,1430077.49153109,9422580.01460318,8014399.92520095,4891736.39324826,6583533.08350224,2532940.53574336,6678276.11984423,3668839.51559989,7895425.45773397,1267265.98075138,5342149.41503012,4035252.88453175,2862546.05155633,2632807.41050807,6636429.61829029,1375480.58436,6730814.28838876,4006022.30855513,1430979.32828667,3949088.67514982,7980948.37607197,5384789.36389759,946125.271242118,1345082.21984282,6991621.25370202,8442940.35154511,7036345.77525967,6400939.83804989,2727121.96022104,4038762.6380941,1893765.34119369,7110306.49019193,4534961.74989565,1924555.70307294,7791011.92835017,6253820.72758626,5135259.15975744,4026888.43995536,7059223.31577136,9104484.57573748,4696200.76333571,2436195.61358618,1964837.43770453,2482790.32114921,7112006.31027844,3851315.20600265,6904964.51860998,2589458.69914323,4457501.2741329,1917832.75608945,7070101.92342559,5586709.62284153,4990779.42015944,5386778.12025351,3191782.00403118,4863284.26741671,7835962.33337648,7644360.25799371,5775480.54660437,5311491.56200252,8714511.47879363,5920336.30051647,2233964.11742075,8343177.20954362,3331268.52104718,3351658.2414655,4449555.89499738,3916349.96344881,4669182.94193807,2003666.27310756,4593673.61931424,4973472.65987237,4306405.79932721,6570757.48892888,3550760.88918671,1945572.21172728,3417564.01922328,5836183.93910166,5158525.62808598,9034904.47043572,6155058.56318593,2724610.056094,3279255.91385024,6689089.41409229,6497248.44086592,3816573.80695232,661480.300344192,723116.903023764,11223281.0542572,5086920.13141651],"Archive702_field21":[800,90852.2963574133,-104862.331474465,800,805.839184389264,880.321894564762,1091.56719746325,1476.09000322622,2024.76384131464,2704.26925920945,3469.95305623312,4275.79240972904,5089.26989757703,5876.94167166011,6618.89328157594,7299.68473996547,7911.68696761664,8450.70149378571,8918.06723964878,9323.0820097523,9686.08823893078,10039.9997625971,10427.75228026,10886.7912815931,11448.6337100915,12147.004320963,13022.1735222256,14120.5816726281,15507.86299656,17255.3026397489,19454.0100504486,22232.1260095401,25758.8803292735,30219.7494784923,35772.3175983846,42390.5843931116,51249.134554738,52487.204227176,63666.0726036434,72038.615168244,81471.9534817258,90851.3137759969,99141.1864831148,106060.626527649,111622.691161233,115990.68973146,119279.867473365,121588.926304505,123045.37069702,123790.830534736,123885.72847076,123456.043337506,122605.8001122,121407.73461634,119936.441555881,118270.131812711,116467.03792161,114554.725294994,112596.368871085,110615.582968578,108631.783457589,106665.588129496,104735.378704074,102843.233341716,100991.19259084,99189.4168438547,97433.8132310268,95719.4401450534,94049.5359959564,92427.0041009141,41923.1604600071,-7003.97981502001,-55928.5979551281,-105021.801404777,-105190.799394167,-105364.450510235,-105541.677865661,-105721.714227738,-105905.004232929,-106092.448414653,-106283.946302473,-106475.551566354,-106661.148110854,-106830.856679688,-106969.404792996,-107057.723261671,-107069.863144877,-106974.337682664,-106730.630540067,-106291.236362562,-105604.055377706,-104600.623392475,-103212.858211629,-101368.755231699,-98980.9436466741,-95977.1682513766,-92263.1713350775,-87755.7789664563,-82382.1241910183,-76061.3077448977,-68667.1464279457,-60122.6316457657,-50599.4667390489,-40298.9849494374,-29442.5162151507,-18535.9709591016,-8519.61862566653,-265.835156378531,5920.2434558491,10208.1725978169,12796.1953788297,14032.2355527599,14428.8128817941,14512.4847282752,14521.3764328357,14358.6106291701,14026.4766604491,13555.4475641592,12987.89186645,12359.4920124858,11695.7427305141,11015.0298546145,10329.4369675013,9649.55268719627,8985.44662888975,8345.30733360634,7739.09643574341,7177.74396328017,6664.59635780738,6201.24385653703,5781.47559499252,5395.27027959316,5027.43455454987,4664.56937311043,4292.43662055737,3897.11850866319,3465.71374889951,2978.32021355956,2383.33464006067,800,800,800,800,800,800,800,800,61019.658624071,49980.3573588501,12623.8832558071,29369.6644344292,20465.8321595739,-64670.226755904,44112.4130487069,10593.377369933,34655.9322332198,15323.5023375562,13653.0300070553,29380.1237392078,8598.57751932591,-50843.6540826826,2426.56725571041,16200.2441546779,39427.3462533641,11798.3485731181,-54489.2070966584,12541.9019224828,13371.72168783,4611.36553480155,2353.65418677117,10844.7821497798,5884.21951612917,15704.1481801515,64004.5245971456,7914.6905291507,83248.1086918171,12442.1451272238,74629.437852153,18127.861341986,68014.1138628616,10518.86471741,79405.1677386944,14705.4285062688,-22549.0810550919,22690.258520981,8740.89201901486,-18426.9058476547,1651.64258998083,13801.9525763588,72087.5334186382,18345.138623421,11931.2295420684,-3261.64659402126,12694.6114434356,4316.74704538401,2626.69362957882,17907.0812490673,10627.7545332409,62496.437983123,14658.2627804235,21347.6771051453,-127.767154182954,6016.61430571866,905.254423659588,71756.0532515805,15756.604273906,-22506.2713382047,942.07979616211,78614.2493812344,14080.5063925583,-57729.0396427493,16246.3130054207,8781.4904433817,15398.233654054,-72459.9048830436,1104.94601080608,12951.1482098687,-3046.52349881804,12096.9531970221,47963.4948961783,12984.499294587,20348.5100941695,3967.70705146137,2940.11391144196,-7057.66383086966,-55508.8010490711,20260.2730769749,13977.9232719617,-21313.5231224905,48110.7117674205,5999.78608664372,1408.32722855773,1005.50958539531,27074.7454787572,14080.1567768824,19278.8725261327,1670.3236433086,13745.6636610773,11733.2860246354,8732.34461597367,-39729.9869914221,856.272497359559,46340.1344567958,-22136.2620836188,12336.7499642778,-64065.3909356762,13302.2935460058,23839.1243641911,3598.34307772322,3266.64817409484,-29527.9908347987,-5654.61520526478,-21977.7956320893,13928.6107226544,-63986.6990118158,35873.7254384014,5904.69181827971,2339.68369544726,2050.78216964901,-17658.1869070544,13592.8002278825,2678.81878078127,16173.9595437068,-12022.4319208287,13900.9009752747,8595.26612962965,8610.71802313759,10283.2640629169,829.825814007623,17888.7655936348,73371.0706644832,12610.8171293206,25817.6350992118,3245.14756053651,3582.2276904805,44197.7592650088,-64223.1486248472,24959.4462011546,5748.29728749955,3231.50073224574,11086.7327079043,-62375.134922523,6858.04471312843,56803.3283333571,-56994.6183921354,8431.83335295319,86233.2901244255,10553.9057165227,900.521239073824,-11713.2401076897,12843.1215766332,68662.3758124709,2938.94817515111,3864.63392488399,13518.8017569777,5548.94411487122,11276.3670847314,2218.65686034873,7044.55860300383,7608.8377805572,50364.3326875192,8200.62300200742,49542.9617901557,10833.0133241523,991.254399594845,-40333.3011959785,24744.4322887719,6437.38142399315,4101.47586638623,2105.95640732853,5324.64074632856,11474.5374735471,7174.58549026918,55468.2083732867,7856.17800276892,828.426663567026,85045.7731704233,13336.9698677973,12707.7337466582,11102.811460141,1094.07318106675,-59556.2808254871,-63307.4911033607,-19195.45054932,6576.75015236238,53255.1256421514,-55380.4826943987,-23862.7287699687,65599.1642979828,-8737.54294880679,11702.456748719,7242.50934228367,15217.6574674667,8042.15377631035,847.039036250373,-58406.8097732377,13467.4595709956,-24271.2732094371,11344.6137119266,1242.77484918913,22435.8517441747,-14130.6905070056,-61869.373627954,-19786.2489773259,-63151.5094710857,6622.67483149998,35551.794851807,9167.65978206467,-64881.8820509608,4568.28827174252,11947.504703752,18969.3205311141,7237.6442549763,-25033.6802096691,8163.51712990322,947.238216588942,14473.2508661796,-13113.4505824438,27020.4692704552,13448.1722482305,-60393.8191540501,11538.0624519762,31536.7897064882,-16843.7772568111,23703.5805136777,6586.62552742773,18847.6027063738,-60492.0258145566,9395.39525876703,8718.21671880924,15872.0295700606,4418.08687371523,12164.8268228556,19748.7524376118,7146.5312697287,-65286.9229771182,8208.16714695144,14479.6422501912,32523.7403428222,30066.559827542,13359.5138153132,11662.2928833203,77037.645474646,28230.4165872916,67164.7887642111,11725.593302163,6482.03601456913,1632.86245078681,-15086.2580689584,9600.21344980041,8942.18210106505,8077.79443145003,12312.6308520922,6957.2302294876,8160.65500693519,822.99600357288,77948.5232720982,3773.12941457999,13314.7974921321,11134.671849663,79831.4231790527,-62307.6657926689,9898.7089151706,6322.46214685872,-14292.9776597542,30479.8187035434,9764.55906153982,9127.84311050801,4499.49351115609,-10858.6861616096,4128.76083904842,13449.772987107,11141.5911991531,48178.2194056855,10031.8120176713,70312.1208557792,6117.82190034457,75916.5942970028,9867.09296197412,9264.80285924652,34337.6246870037,4742.96723749398,-55280.8596514861,7504.68403141434,4501.72085948162,13849.2797336672,16214.383734765,26678.7339732121,1624.44395445233,9334.15157621607,42446.8008389136,16831.1481031353,4356.32547302801,7723.86320097001,4851.66987976931,86163.2829393055,42425.776170344,-15990.5206321512,15385.1076383306,60363.8006049675,1864.76228212105,9318.75791285452,15220.9932188353,9634.81563192525,5136.92833464081,33757.574823571,-46537.3955924315,25167.971814944,9280.8153029975,14106.5354103255,15849.1154535213,13272.1933415028,5329.40692339496,13840.4000226015,9707.14124809357,-60665.1999537,9924.45183618266,-63459.4753429918,13851.6386143127,23862.3888589165,14557.1348525473,13657.6264146923,5414.89164696775,9516.36141370414,10184.2231661964,59614.8424468009,32284.579924856,-20606.2586887419,10444.5803709303,18238.4526496035,39519.258735226,-54561.7412104393,10681.2309661978,16389.452621788,4921.60523223731,-18442.1925318747,76431.201141859,-34600.930713396,10036.453671835,10873.9900468172,5013.083935508,25905.7950831598,35194.8570361813,10235.5877084224,3822.66133411618,11440.2264911698,61736.3823130862,17329.9517768536,17183.1268323886,12719.3637398413,-15990.1169986481,10380.4603983897,3196.98626550543,948.571817439328,46212.6477716725,864.531743416597,1702.83560216144,7656.67083384963,3794.88430719768,23512.7010514447,3252.58532044114,1331.12115497523,2738.0806483255,-22693.4181635474,11953.2526365424,-22241.8691017257,5129.59568969343,4104.96214852747,2220.82522138122,-19491.6000115159,12927.0828902433,-41878.7514386005,12223.9881721034,1962.74217168444,50098.0683103774,21589.2327056247,1210.48625868518,7712.96532359662,1154.97927013165,7530.13628037316,2623.3343076556,47496.4507533555,9825.72079381155,1010.83140765779,3529.90079382873,2915.59907501505,1684.65143079669,3018.70953119476,1984.00889574726,15547.0179355517,13755.7405160883,-28445.6745456002,11547.5174956435,5505.38799127344,33655.8296231516,11146.7610252987,5650.26397613043,-39761.3560038623,10512.7716840653,65771.5369826265,1502.14762725066,7341.08710650538,20616.8830652234,-9560.69207494441,11778.6711175453,1825.78158398399,1302.94537689582,7746.80942497464,1122.9272033725,-80474.7049662648,801.087489836121,67174.8788543318],"Archive702_field22":[-5.19209209517889e-18,1323517.7160214,1323507.93482497,0,1.04599781481323e-17,-3.99937330623477e-17,1.8419431606243e-16,-9.29259422549719e-16,4.75702405162994e-15,-2.37114264055157e-14,1.13547830543217e-13,-5.22178993867122e-13,2.31956109361268e-12,-9.99652969153639e-12,4.20175578120428e-11,-1.7294064686877e-10,6.99535273271225e-10,-2.78856537991547e-09,1.09826301862481e-08,-4.28491952194272e-08,1.66141885059823e-07,-6.42705420451877e-07,2.49124541993331e-06,-9.70673676049949e-06,3.80955776661973e-05,-0.000150847333018539,0.00060353085215679,-0.00244239629465603,0.0100106677711492,-0.0415701145427487,0.174910275503231,-0.745992963044381,3.22573186581733,-14.1234140154579,62.3974372032353,-275.935915848977,1245.07621411196,17378.0947776622,40037.9068602614,59231.0345368323,80122.1135607874,103768.97205269,130336.658951995,159804.401825116,191967.465482561,226453.903603854,262943.318102662,301149.321297777,340852.091382314,381788.171653107,423735.251385629,466540.494180817,510013.358367455,554009.257084741,598414.617643903,643131.797695134,688073.734992513,733185.646747854,778413.197088257,823721.933733628,869083.123097845,914479.779138769,959899.918759098,1005334.76937513,1050779.80651116,1096231.20297857,1141686.34574936,1187143.47199614,1232601.20820632,1278058.97520697,1323517.37183023,1323515.14541562,1323510.96007324,1278024.5283749,1232543.38857727,1187059.76760709,1141573.89049797,1096086.03020712,1050596.80324647,1005107.0757564,959618.106724584,914132.89341004,868657.874406672,823203.100714933,777786.037419037,732430.975733082,687170.833305936,642053.982154726,597140.352145925,552506.517724888,508253.298273221,464495.979509418,421381.587219999,379073.378839804,337762.552585659,297667.934463059,259019.746195867,222081.08342243,187130.273910077,154469.284475439,124442.597040973,97423.4881199483,73718.888980833,53292.4885552461,35909.5229198429,21517.1077215275,10266.1042984179,2083.67590743642,-3336.2979176551,-6414.42905448471,-7639.13337090375,-7644.52062457025,-7062.62301416853,-6362.41548415147,-5677.40329645378,-5062.96627080232,-4557.25087947384,-4167.25536185618,-3891.36229643427,-3721.94524109858,-3648.40254704862,-3660.76100035557,-3751.06410929145,-3908.9514319306,-4123.00353963604,-4379.60995933162,-4659.64129024704,-4943.7084813904,-5210.87819123925,-5437.70274562478,-5603.13091590905,-5692.13543150573,-5696.01411745634,-5609.04716341679,-5424.32343745107,-5130.3191059203,-4705.56098517877,-4096.97003906329,-3131.18798521068,0,0,0,0,0,0,0,0,996181.61895237,217550.509072149,-1532.70216477324,579033.791355178,-5781.09412248044,1014236.77468986,87727.9943631966,-2531.50122097781,377160.958137941,-3102.48594253761,273706.119508305,-9947.46455766436,-3804.3372593037,188319.999286514,-3275.96624674553,-10062.6315173015,54319.4990637279,-1186.3861485069,1096120.2319089,-2612.76951805158,-10630.7004828705,-4271.34489252972,-1247.61172728526,-815.567247936823,-5160.81872294583,-5141.57497526403,905283.896921828,-4219.35833991372,221007.022488778,-761.785785688049,588571.574821202,-7570.33945711353,93975.1690263629,-3112.8161712302,378831.91465813,-4257.86810838102,267241.188542268,-11925.7759226825,-3248.47755412151,191861.037206412,-2135.72051849828,-9826.04369701318,116770.199379037,47299.6432693273,-1705.54753441264,1096155.17032165,-3012.4084207705,-3642.77287191345,-1902.81261473682,71653.7875475858,-411.582842224783,950728.731383706,-5950.98072527681,896103.486302524,1338.68203433801,-4603.15363975692,-621.19666659104,678543.493585927,-8432.19037999541,1005185.35015124,-878.002764386737,412763.440533528,-5021.94145122122,262293.509632458,-12042.7254208507,-2706.04060985239,197586.706212308,1262868.61691517,-1053.92439760378,-9032.91347023073,45011.3318949691,-2145.39038680046,1096191.99896569,-3340.37414434731,-10028.2868649413,-2951.80978049578,-2572.9020985331,68293.6901039261,1198447.8355935,941566.546964223,-6297.4028906429,886939.201309637,26909.388627605,-3980.87057892417,-1867.47044359199,-1215.29879197445,669160.859914225,-8488.99129481374,1005228.98813934,-2455.06003976162,-5431.5946639329,-10768.5819127215,-2172.81075290913,1293193.61089734,-334.490266649494,116344.414476298,47261.7619145997,-2521.49623934238,959661.94290729,-3705.76081468086,-7575.71879547631,-2217.57625282782,-3243.98728070326,69048.1857550144,1209833.75533476,932414.041463593,-6365.67021596155,877789.281469527,17704.9120996752,-3283.95094378418,-3315.06375565115,-3008.44373711398,659940.404567815,-8142.99815339414,-3815.27346771335,1123445.82481415,393711.079233279,-5598.03617325011,-7881.2743046938,-1644.49687863684,-363.270350216732,-148.208812630505,114003.455843328,642475.92642321,-2903.70770560155,-4013.54277834964,-1463.56364467454,-3893.04260978126,1221218.26446558,923269.520994141,12701.0429347826,-2520.76814488638,-4388.79825656954,-493.617926590091,650882.674242694,-740.431601319068,1132566.33812306,385749.857599541,-1114.07658183307,330842.447011616,-737.620092877961,-259.735107378132,114499.275482292,-3353.17846791036,769073.262348803,-714.921258271264,-4486.96646355636,10828.1084237048,-1703.57657823553,-970.905523991575,-619.873288395841,-1470.51072055114,-650.40263558338,255431.866798161,-569.8962644908,321900.837650179,-1122.22357830436,-327.993329321783,117919.385755148,759797.915985451,-4953.17935325901,-5001.68461514295,11584.3682223331,-853.917672683264,-1404.69884881761,-2180.07486075034,1178030.94594721,-1271.96859220237,-62.3894222751201,258337.410346207,-946.128750010307,314054.657088683,-1526.70387165268,-336.57466961674,472246.252569938,823234.202307878,750596.142752315,-4398.2652683072,44674.9047137365,1232560.85873588,1068846.63518836,868944.532765269,14988.7687825336,-1798.86000520751,-2862.55483661799,1168917.29207367,-1867.85558933316,-56.1919364335875,428648.428050938,-1894.88489568397,307300.265144459,-1969.59817029401,-238.344707056841,-3190.58004806606,480782.391610059,605799.953339101,823298.655529296,741462.199657682,-3778.53104439636,33251.976973977,-421.582404900768,1059721.04033681,-5213.07895826827,-2190.55871667484,-4915.29747832159,-3512.71514909211,1159803.36750173,-2444.96784489342,-131.579716140469,-2657.49902679928,436932.515323677,-9128.28716803387,-2770.67037530611,301792.407562972,-2463.99574116312,489950.363092333,614783.981418769,823393.004523578,-3101.6965564876,26786.6345742866,516385.991775736,-836.43697658582,-491.452968907737,-1671.47373347939,-4731.85534121871,-2626.81773561936,-2561.04088168167,-4125.91331926705,1150689.04848765,-3009.27604565458,-1344.04224539871,446048.179974743,-4956.85964789522,-3513.75441582138,-3020.83647863412,499698.02133717,624006.430397399,823531.856978565,-615.683789910621,-2373.60287751606,25752.3789525876,525117.770415568,-1265.48082694012,-964.505514817062,-4077.52133839531,-3133.74774108881,-4694.22018071694,-3564.2006178624,-79.4164053703488,455921.157754494,-861.75109908464,-4081.48571363469,-3027.97027316448,179798.295108749,687070.29168334,-3273.73990823509,-1603.80012790887,28970.2945126489,534317.292231454,-1719.00463214284,-1438.00648421052,-875.387290751284,351282.830005612,-1737.82648338068,-4484.83530721783,-2460.57064260675,169927.204334551,-2684.32740446596,732827.631793452,-805.768379531188,543952.765882773,-2204.15861873572,-1924.7159689315,7264.17049113803,-1752.36003342679,343727.961174573,-4393.5863659136,-2589.17044101277,-4765.76394057207,162355.896343843,1293212.17091902,-482.022914268628,-2431.32236367126,10085.8555470323,-6204.1526742431,-4203.8710729283,-3813.54693608474,-3383.69171884292,297322.605460115,-1844.54222533073,157100.390149593,1407.10490329309,1262906.97510561,-1029.99029132987,-2963.06141231743,-7041.01338825524,-8206.08158040051,-4097.31005182142,-2581.8766119621,154408.901006876,216.7006249385,-3498.12256289584,-7274.06558203146,-9908.47463905555,-3944.35464521441,-4722.70545979648,-3502.83198847052,-769.42162938102,552006.776551042,-346.966234700754,786870.487599657,-7177.64599906104,-10076.1212829472,234792.832532647,-4206.83040790463,-5254.82705252194,-377.132115378156,-707.933699034505,1050737.24546811,-8760.25514022181,228674.601603654,-1089.09567878941,1050698.46481538,-5933.58917601679,224378.689102231,-1501.92176775735,-11550.6212229851,-4718.92424487932,705226.256899532,146978.023686283,89826.6637725014,-1143.48536391844,-1956.66833358052,-5257.57688189598,714438.890761167,-5877.22751662493,-1572.42534699747,-4905.60556502706,-9217.97128187466,69461.1879414804,-2024.7579115049,-4003.06859744001,-2253.01303037424,569817.742960867,-2040.77078232251,-4206.52384951934,-445.415940904023,796208.182419358,3864.00293606233,-1282.79119929876,-2354.10820973107,-3492.38726107017,345294.727434253,-2443.0243159004,-676.577466379829,-3047.37056861149,1251514.93563561,-2787.73687632274,968799.865281657,-2585.17916542798,-4134.00717317377,-1949.70004359941,786937.083442126,-3270.40576871052,850540.517740579,-1653.84149525766,-2092.71525756654,288194.74140272,-11316.2058232413,855157.568572703,-2974.61415871185,-688.587239929299,-1710.58963398563,-2610.753171168,142266.843910893,-541.751557491776,-703.2181753204,-4381.09025558538,-1725.71063415711,134646.499017878,-3683.70080119783,-2405.16287053726,-5374.07170057296,-4236.98163093072,133799.606021582,-1838.7858965217,-3722.92765389409,411370.527526142,-1227.92693542623,-4383.06655164099,1127962.22256752,1251524.17485601,197922.923433362,-1640.30088270275,-1043.14465006587,-7771.33767863798,90320.7359865736,-2283.50838743204,-1669.70437956307,-1103.06519940758,-3401.37937696508,-1614.48883289968,1300767.36912057,-2.50832628998022,1300788.36524345],"Archive702_field23":[800,1326632.30941204,1327655.58866255,800,805.839184389264,880.321894564762,1091.56719746325,1476.09000322622,2024.76384131464,2704.26925920945,3469.95305623312,4275.79240972904,5089.26989757703,5876.94167166011,6618.89328157594,7299.68473996547,7911.68696761664,8450.70149378571,8918.06723964878,9323.0820097523,9686.08823893078,10039.9997625971,10427.75228026,10886.7912815931,11448.6337100915,12147.004320963,13022.1735222256,14120.5816726283,15507.8629965632,17255.302639799,19454.0100512349,22232.1260220559,25758.8805312494,30219.752778831,35772.3720180793,42391.4824678163,51264.2566257289,55289.2827380378,75209.0605347744,93262.412190881,114268.247057423,137920.124621814,163757.807520888,191797.558227733,222061.101919886,254431.150926539,288733.225173864,324768.811184193,362381.444681794,401355.674855486,441473.936926715,482598.61929665,524543.428072837,567156.146894538,610315.332121835,653916.15157111,697861.043266338,742080.843092234,786514.492990508,831115.895233237,875846.07051164,920679.539332065,965596.889797191,1010581.3817594,1055621.81805444,1100709.49427978,1145836.40194892,1190996.15210324,1236184.06950289,1281396.69704357,1324181.17526242,1323533.67765153,1324692.14140616,1282332.35703471,1237023.97268716,1191726.71334611,1146442.32006384,1101172.85948867,1055921.1679445,1010690.77434505,965485.985395595,920312.98474789,875181.754428783,830106.123917657,785107.364355841,740213.813923576,695462.227400048,650904.620450174,606603.682527925,562637.786729583,519108.497058009,476127.929651799,433837.91460436,392392.980419184,351967.000064447,312758.39882097,274961.309467673,238790.879968414,204461.619380961,172180.377459855,142130.70377951,114481.731614569,89413.537156543,66813.9021788581,46436.5760732866,28400.1433816182,13340.7945412857,2100.56507102203,6795.59904437231,12056.1887792884,14902.9854335176,15979.4346016253,16064.5972566414,15845.8999044356,15591.769678093,15225.0887241881,14748.2399995588,14181.5434955293,13558.3197947499,12907.7464797088,12251.5810883202,11607.4137429391,10989.4381120054,10411.2327973285,9886.22320749827,9424.70890204151,9033.59676958804,8715.51845568445,8459.91111870758,8247.66855044585,8051.12017773365,7842.78950122112,7597.34657801946,7295.17768926801,6917.2463376392,6442.6474992146,5844.09753294277,5065.13127129788,3935.05047048203,800,800,800,800,800,800,800,800,998048.704561638,223217.965493975,12716.5877648899,579778.154745539,21266.6719360794,1016296.44954705,98194.2257974917,10891.654719721,378749.814498282,15634.421732598,274046.428702634,31018.4416445629,9402.58035532711,195062.808581626,4076.78592721054,19071.0373006862,67120.2176033198,11857.8472391141,1097473.75207339,12811.1618672015,17082.585684061,6285.62481273702,2663.87369313283,10875.4057309183,7826.75470454412,16524.4081071129,907543.670131017,8969.13100432964,236165.940791892,12465.4439531921,593284.123908299,19645.0858061297,116005.396762753,10969.7830178653,387064.336031047,15309.4437645968,268190.816229626,25633.4149716143,9325.00936770087,192743.893436442,2699.8565477027,16942.4033022376,137229.340657905,50732.6360887955,12052.5155373336,1096160.02288051,13047.1362449135,5648.37138033435,3243.48813324044,73857.4899978009,10635.7212663193,952780.628182086,15820.2035174192,896357.730753366,1344.7654199701,7575.53107940201,1097.8938337285,682327.050516127,17870.9936167232,1005437.27820696,1287.79004368243,420183.124419402,14949.2660759774,268571.270268036,20223.0047676428,9188.97329353908,198185.801891795,1264945.68318362,1526.97816705438,15790.0527457846,45114.3137417373,12285.7224680814,1097240.81014108,13407.2861293908,22685.422643144,4945.28868989938,3906.92910364273,68657.4011069503,1199732.65423287,941784.498188032,15331.0019947792,887195.250825696,55124.9107308057,7200.33080154152,2338.98085507059,1577.33974783381,669708.368085605,16441.2222193185,1005413.8419186,2969.39402441475,14779.9015584247,15925.8392980369,8998.6081734945,1293803.76685649,919.285770703336,125233.505266388,52188.9666338295,12591.7966536204,961798.013608022,13808.8260471241,25013.9034482726,4226.78569862543,4603.74236580216,75096.9653101836,1209846.96975301,932673.02320766,15314.3055331159,880118.355855176,40004.850821957,6756.45759773865,4057.55683863746,3640.93960767418,660176.604512744,15845.2717541007,4661.80026317129,1123562.24494225,393894.596028333,14985.7618065085,11661.6072865187,8766.34672242849,10289.6785729694,842.957136356742,115398.42234054,646651.861548248,12940.7970043864,26127.7401960004,3559.91590233099,5290.38145959417,1222017.79503752,925500.524697874,28005.186060791,6276.7183898713,5450.15110977417,11097.7160169994,653864.59843451,6897.8994080445,1133989.91545746,389937.609321968,8505.1149505555,341896.044244909,10579.6507160997,937.230402850753,115096.846524091,13273.6422156784,772132.245610843,3024.65349779974,5921.84628460109,17320.6793452211,5804.56320043779,11318.0878317025,2303.6234843479,7196.40241304022,7636.5853599111,260349.773541389,8220.40141193444,325691.041238207,10890.9854210243,1044.10962489373,124626.468786679,760200.736690729,8122.42976599511,6468.30373992334,11774.2362597397,5392.67785698192,11560.1984882486,7498.49340572203,1179336.09787432,7958.48207328128,830.772638524294,271976.103947644,13370.4870841017,314311.651289077,11207.2854443508,1144.67402947614,475986.841889683,825664.817149968,750841.551085477,7911.91379736887,69512.2688332266,1233804.3882039,1069112.97783622,871417.151184922,17349.5777008692,11839.9067257295,7787.69296812036,1169016.34411484,8256.21716432084,848.900855608072,432609.327567526,13600.1123548408,308257.275114573,11514.3205281623,1265.42385197967,22661.5808038562,480990.004570254,608951.067704764,823536.381615858,744146.697009188,7624.77008028769,48678.7848026517,9177.34807032009,1061705.39320049,6931.48252243917,12146.6627572093,19595.7972716738,8045.03959469763,1160073.50474579,8521.78852664076,956.33334181456,14715.2061389845,437129.254950127,28520.7185431522,13730.6209308493,307776.007275855,11798.2269921447,490964.283221601,615014.680021047,823734.11949945,7280.39541282544,32752.9528377774,519917.087321969,9432.55420786237,8732.05753398208,15959.7978406554,6473.78919906378,12445.2072319521,19914.1194442467,8252.0342890293,1152539.66032463,8742.411007911,14541.8874033235,447232.347381837,30472.4215879226,13813.8727182586,12047.179268484,505601.534163574,624644.684278987,826266.197002095,11741.7462422285,6902.95454963479,25804.0938903281,525334.434421294,9683.26081467817,8994.04756584713,9048.58790872003,12705.1664060205,8392.77996680159,8905.04442361671,826.818835863624,462536.565439425,3870.2868803155,13926.3188921945,11539.0433388061,196724.383467851,689889.723746021,10426.0160739397,6522.70668118243,32304.2903424893,535185.937899861,9914.71586035767,9240.42112128447,4583.85697483512,351450.619179862,4479.58781054675,14177.8045245934,11410.0596990684,176625.014078014,10384.7419790894,736192.999327783,6170.65697359592,549224.854500572,10110.2838108921,9462.61610664633,35097.5874109581,5056.33304902801,348144.919160162,8696.19937479053,5193.19692186867,14646.3324787682,163163.547759636,1293487.33038228,1694.45101759737,9645.60594695143,43628.6073989761,17938.2010490181,6053.93290553803,8614.01201421381,5915.0714509993,309555.880326105,42465.8547503422,157912.093695327,15449.3197666398,1264348.77157922,2130.30945382474,9778.4958951545,16770.6441170702,12655.8068555655,6570.84335348153,33856.1655361087,161269.457426624,25168.9047127336,9918.18502314781,15871.5585679058,18691.5042287092,13845.9037141479,7120.85142487341,14276.7820157443,9737.5870139475,555330.305173141,9930.51508315313,789425.277823132,15600.849156035,25902.5447043877,235243.670231143,14290.8425701276,7545.47936849061,9523.83132928585,10208.7987354595,1052427.04661837,33451.9980127674,229601.157043551,10501.208907663,1050856.74814431,39962.2233051601,230917.257317747,10786.3090976351,20050.7109070653,6818.39013924075,705467.354231156,165663.115854776,96260.3445388143,10101.3841172577,11048.6293496486,7264.51135407575,714908.412911009,35682.2051599872,10355.6640158266,6219.14026493786,14691.8268681171,92931.3592462157,17447.8329080798,17643.2538363467,12917.3635723946,570042.054619347,10579.1636469296,5283.51815350392,1047.9426765103,797548.166925112,3959.5370720923,2131.94801742136,8010.39535360439,5157.31671378639,346094.345380895,4067.88385709693,1493.19811051164,4096.77348887806,1251720.66586238,12274.0264577121,969055.147920331,5744.20605976878,5825.86727867151,2955.23178852937,787178.439597661,13334.3551003877,851570.90259148,12335.3588728971,2869.11379728312,292516.709643418,24375.2227282455,855158.425301511,8266.68999516814,1344.66705969444,7721.98609794729,3701.06944145698,149985.891704961,9840.64448438137,1231.37968832054,5626.20222191292,3388.03706577592,134657.037499771,4762.58950849972,3117.86781827185,16449.6326199482,14393.4850014441,136789.952013606,11693.0019193293,6646.01288372112,412744.988806356,11214.1912732869,7150.99681135933,1128662.81101608,1251568.32758643,208565.046682002,2224.19299518954,7414.83045431657,22032.9198391978,90825.3388769249,11997.9791569567,2474.14452034378,1707.1670947269,8460.64051552359,1966.60613637601,1303254.35994216,801.0914168013,1302521.72170057],"Archive702_field24":[10020530.5023713,5886446.36662888,-146346.762622694,-3139882.70329007,10026868.0433387,10029090.3412183,10041573.3621502,10069653.0698929,10101152.5662832,10133483.8378502,10159239.7311596,10174171.5733134,10180462.2064089,10173785.9516555,10159472.3080343,10137475.3981469,10112174.9658075,10088165.0027906,10073708.2033937,10079397.1709119,10107068.9591899,10155344.2142592,10184217.6409601,10170210.269989,10113867.2865222,10017797.074928,9880777.20861038,9704719.7933491,9482548.40703357,9210072.62987994,8876708.9589211,8464187.30984444,7974677.15437705,7403666.40525622,6692456.90194466,5786120.33052746,2120413.11992959,3972207.50846613,6751424.7990642,6270971.46456067,6016932.64637494,5923023.42772961,5858453.99014041,5820376.00860228,5797504.02089577,5785034.59910218,5768605.07047043,5762593.29123977,5771380.23925034,5772449.30828324,5782014.75243264,5801233.15081194,5818978.89118432,5835447.18187252,5855437.06366877,5879718.1998052,5896536.87373648,5916638.42715738,5932789.37469383,5949430.06439057,5952483.69724554,5959993.61089176,5958474.87985511,5948997.84837155,5939358.27266548,5924898.82903989,5916530.90350618,5930500.55524059,5955013.92047962,5974701.59877459,4364633.4499378,2799944.24483147,1166020.98307057,-183892.995638628,-210009.128854266,-199872.15361189,-190250.073780595,-162935.040548043,-94033.6142777157,37360.4419563023,174038.581961153,264495.904587618,343277.693759309,431960.16284143,521674.354064313,613938.432046091,714296.503184773,813325.362339767,915519.636785703,1024670.68085438,1130812.7704097,1240923.51739229,1351812.71480819,1461760.68388241,1571079.18936613,1677677.36905838,1785799.30722541,1891313.91905386,1993561.30646327,2096020.6049241,2203911.40091589,2303022.7549613,2356900.18834229,2388674.32644097,2432141.77055707,2447620.39657578,2366998.43950416,2183199.20861236,1946474.6339775,1691158.45581386,1393443.6874345,1013830.43244816,480251.359382939,-67318.3321599963,-577970.693525281,-731869.47696569,-832484.340999848,-891830.875380646,-925756.425033696,-943931.685240626,-952892.805977101,-954612.614719569,-951795.704114903,-944957.758857339,-933759.621215689,-919405.965521075,-898917.000539163,-872639.982819581,-843929.59595329,-816855.040985152,-794295.908453917,-777996.383947863,-772766.094030118,-777427.317566858,-791486.700732752,-814192.842880996,-843024.125646247,-872670.701820427,-647598.35736769,-1219475.19384016,283563.352104683,1672384.23064238,3023738.3825104,4363002.9677193,5716299.18462173,7103350.36486153,8494461.82182977,4747790.01352583,3770547.36689527,7395705.78405332,3477238.18539202,5863846.43259603,1202499.91613523,3847583.78882672,1801431.75346464,3359182.87711165,6657186.07517684,3130668.59718931,4511616.27295907,474508.754328823,2985600.6121288,1717011.28952023,3592110.06771883,3790943.14511075,7450848.42524315,1439742.9135849,4766953.35947122,2939787.51293346,2850875.13526482,7588081.16868121,7445335.89404388,573561.447034572,5158059.50968621,4748053.89543424,4237793.65550249,4728386.47523839,8701059.16120279,4633479.33573512,4741921.23754177,4820992.03194704,418664.778734419,4548653.41513322,5311115.96606157,3724079.85691658,3888803.64688702,1878043.31851411,3976727.76793471,2415818.78511836,2784593.70495437,4777815.34842946,3416037.40827488,6107081.92469946,2974120.83641955,3397654.71539052,4044924.71609196,6378845.00704667,3400380.6589601,8829885.4336801,4750213.36630296,3896945.00817598,3566890.82256841,3415170.46741487,1925681.1437365,2372090.33442022,4675600.1871138,3680057.86990726,2405098.80283974,1138000.30722098,4547269.48743824,3983326.82435285,2762045.47616077,3495348.60489084,3279674.56769731,3197294.97085323,795722.675485149,3068472.15834545,2224704.20849121,4534955.98245836,4726419.70971474,4452854.40235032,1911899.26086942,4401542.07923459,5236585.45846598,5187850.2865651,4402045.79261875,1309828.9149947,3567498.05090633,2640520.5139576,2427480.46425348,4964537.91535411,3287407.31620399,1719225.44295912,-26617.0664098509,3525195.70258196,2649325.38603856,3582316.15830911,699731.9339041,2649303.46510185,3461397.04139306,4670943.00306702,1732698.98259819,3749135.97716205,3821707.75422721,3491806.87479387,3278321.8093391,1256106.53240248,474422.497576547,5411900.55969905,6434909.3484878,4007538.58027113,3385906.15827493,2853849.82511114,2414975.66769218,1342478.8110265,1426796.57505589,3577185.21778848,4651825.08678666,1025489.40166925,-185527.472173843,2698977.69101229,1809878.72589212,14356.9242552473,3548733.12716949,3337076.72403233,1243465.77999152,2933047.17235706,6047088.44704163,8813916.2703693,5511977.18995326,3297914.92875168,4669655.17173193,1828390.79314278,6607583.75675953,7645764.42477129,2824286.87849629,4382635.21796781,1313449.24478062,2688826.86815454,6021440.79174249,145226.440446775,8827908.91788206,1962101.92926972,8780062.70347072,4733654.91471488,2618161.67748461,7407822.89036287,4723835.44139024,7432739.63666716,6494298.14932104,4202289.56364065,432030.386722384,4714016.65921489,8877970.50295254,1629267.62913097,5087308.21510702,7395643.24893172,7467578.36421645,8840481.04922446,7406516.9716627,8774127.39649765,3765079.23765649,8759592.64261705,3771191.04567341,6026285.91084636,7424906.04689195,3231155.201908,3552849.28247227,547053.540192245,423130.205248113,4388075.15608764,8782207.90123014,6079671.29899221,6035608.874687,4723437.33932911,7414785.73444568,8015856.58720437,4725809.21424612,8576382.82319709,3066235.44751674,4612220.92233519,8303818.97447755,2389957.99024049,1577570.68986206,2542973.86338612,1918442.88808483,4898517.40589197,1310459.2287034,2372752.25853039,4749519.23056233,3475097.419672,4650372.7920109,4663924.34124178,3519947.24588751,6052314.5413409,9027013.19867444,2500684.93022776,7294749.81641608,3609012.10703748,3200324.5775906,9172429.95045675,7058231.5801531,3115263.22219855,2067938.63726065,2471971.00611224,1761278.58507803,3289957.67443598,3567875.32726582,8742008.95519533,1162833.50239017,434592.168361155,3206158.3396922,6125332.51483212,3287705.75079411,2291694.76473007,4679726.73487969,9041303.84709934,6802285.90353122,3228958.81134742,4951191.545946,6026514.4438554,2650128.46982087,1801822.57284638,3414845.24634036,2790569.43427705,3580309.71329346,4660353.64198573,3514873.38796751,2278613.04444086,7395891.94873257,8747125.75180283,8026009.84852259,1639283.28109161,1794371.08144746,7443236.96823194,1908321.95122905,1037595.21194278,3293817.88959675,8227155.36480869,3383720.32455169,6052318.29868488,4775141.47638697,416520.879533851,4587927.5696777,3501937.82313873,4738613.20819558,8786993.84437335,6030934.95742688,4536642.79879569,3004692.86886378,6026929.27134781,7400775.17597029,484098.423479628,412415.025441037,528032.742668969,1897087.03292439,6976957.34769868,4566513.48824302,8754878.24713825,3524716.38370449,410144.41845998,4728728.76544188,1890691.71134402,430816.070934345,7405442.55798503,3597411.06304041,3448657.64343038,4639177.87633383,6038131.31452494,8768912.36385082,3480171.41140507,7372626.32536039,2223775.93874087,1789001.93360926,3749083.94755616,1818375.8764087,4710759.77561099,8785909.44449769,4609891.48866422,3240942.91695751,4656991.99334564,3237332.98953644,7379152.58221283,2719444.12608536,506282.216617676,6007657.58186967,730978.865927368,3301473.68495345,3826568.80153546,8800153.56776594,3261434.37671131,3977431.23281673,4957487.88569633,3231811.41791545,1893638.60341176,4652916.68023001,4730371.97199342,3376055.08171857,4011393.55634957,4981453.8859584,4851997.92536255,7568740.14419482,1858237.88573938,3780553.79878315,3953590.03640854,3300441.73005164,3782735.42206814,3095845.91578631,3690840.91559195,445709.615561527,2620834.318779,3756970.53178563,2089228.64837193,1945899.7471617,5422432.40997967,7379202.81030954,2201623.84005428,8776900.12252745,1654588.13918545,1472853.77782747,3639351.97696223,3157168.79692682,556298.5400458,585956.467251138,8739774.52161779,7404789.65038884,4749831.27168512,3968457.37531201,3851659.39801195,6011360.88555188,3579732.72188483,4520506.3797773,2874332.96971584,4608383.60303961,3509860.78524983,1937413.73548437,2611968.54102457,4746101.85905311,3327571.64182316,6015040.10079314,3205314.3491798,585394.792709035,3538183.81243404,5335854.86773369,4621399.92658187,83844.7590339792,2627078.06614061,4860183.05603912,7796805.98472528,6399275.14701319,6098617.54307177,2890348.83414045,3220942.40322531,933785.670946124,5335192.79161581,4141159.63215558,3922529.66062609,6306071.59408234,5356384.27968697,4030487.13915064,3160370.57877038,5806321.32318469,7505478.81249558,3524202.53736632,2295862.1724331,1097118.65795079,2403364.89481812,6016228.53210848,2842113.78441286,5549030.18921414,2496063.72617252,4134688.78956053,1950448.07037662,6764234.65010063,4238400.21503206,3761748.97130889,4163097.14419502,3010118.06475673,3980722.7763174,6198205.36332831,6724395.92228149,4529491.15462136,3676795.32000956,8068059.93133495,4189281.82088552,1284749.4918626,7007102.8515327,3969972.48577731,2292597.29640583,3154992.14444336,4292511.70838619,4383637.48484521,3636268.05246017,3901501.80260895,3970206.2506754,3344260.33008249,6048818.34748195,2610673.89623586,1867810.67452366,3319051.63388099,4243221.61519774,3692012.63420735,8090409.15924775,5123031.31872971,4313616.48923209,2489151.16956747,5269046.13278382,4930708.42881314,2940802.17304207,-943602.329210117,521396.725850318,9297893.29143543,5103930.77225448]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive703.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive703.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive703.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive703_field1":[800,90880.2205545352,-105565.57963186,800,805.9787117511,880.125918797049,1091.97328573764,1474.77586765917,2021.99250629929,2699.03885096593,3461.64453224484,4265.40046268763,5074.72488393768,5858.52736057657,6596.22902684379,7272.76064481493,7880.23662252564,8414.71221356041,8878.14959399939,9280.07334461172,9641.3779326818,9996.40389891642,10386.9918425123,10850.0498288665,11416.8728932196,12123.5382168327,13008.2988292118,14120.4216382302,15523.5396172265,17290.5297370203,19516.1139702869,22327.7860902576,25905.7998742334,30423.4515204897,35914.0806139865,43381.2428702327,48543.97163638,56149.6449632669,63604.9540321301,72327.1285040185,81854.0107220876,91279.7941077009,99542.5460184206,106449.049365637,111956.078223012,116274.939218037,119539.826728783,121834.93832366,123268.078975892,123985.526460855,124063.42799479,123614.164520056,122752.217335197,121547.357681558,120070.59502359,118399.72705455,116590.132830239,114672.153548898,112707.116175008,110718.414880894,108727.20242214,106753.144028467,104815.602788478,102916.162777672,101057.094859029,99248.5496102493,97486.3363637009,95765.6229470367,94089.4277628781,92460.7795850642,41768.419384052,-7341.32333866012,-56448.8497772129,-105724.805174442,-105894.915898962,-106069.105775953,-106246.957628142,-106427.669049822,-106611.675161077,-106799.831372075,-106992.05748699,-107184.489560817,-107370.874075258,-107541.269798386,-107680.274045144,-107769.504066064,-107783.818154592,-107690.487182605,-107448.941126087,-107013.664710829,-106330.151503749,-105327.750977042,-103937.931332383,-102090.513537609,-99698.0820371463,-96686.884565874,-92980.5854858134,-88474.8494949617,-83071.4509307442,-76746.7479175246,-69323.6602421311,-60770.916680944,-51223.7465745849,-40906.9057742924,-30044.6379899101,-19113.8541643999,-9029.61968491719,-730.275107412966,5540.85463399808,9930.28788958996,12612.6439124554,13920.3263862646,14356.6545554398,14442.7615164297,14452.1819326768,14302.3072206537,13980.9996803766,13516.5951723924,12954.0377733724,12329.0071805337,11666.9885226261,10988.1727564585,10303.2980152814,9624.12295561085,8960.65776916274,8321.07732416712,7715.80158335903,7155.1565216169,6642.17255861432,6180.2662857228,5761.35971523806,5376.84957579137,5010.45356972845,4649.13260276936,4278.85723157078,3886.02167876275,3454.51461249063,2973.99511999641,2279.05918752337,800,800,800,800,800,800,800,800,60936.3413730667,49951.4384387666,12598.4668865967,29173.6748116111,20521.4825964425,-65222.8965876876,44209.8594541721,10559.5833579291,34478.3352819366,15326.1691410799,13391.4418641765,29492.1215636944,8572.28967339199,-51402.906206169,2422.6779911233,16145.5352016109,39615.7509960398,11763.8336846608,-55003.9735624559,12498.034068161,13257.7352780645,4598.07404432444,2348.97903114854,10801.8085442966,5864.43563195772,15691.6157491605,63932.6343671978,7626.00404131304,83380.7834745567,12420.6389646506,74596.2245069003,18127.6734738955,68278.2759725686,10489.0482318949,79407.8899226631,14689.8462776643,-22979.0610492872,22655.9542374384,8712.26633091893,-18831.1715248001,1647.71364298418,13699.7450562367,72322.9613433647,18256.1622777206,11891.3478586565,-3585.10497038683,12645.2375591217,4305.08553272136,2620.69310967306,17770.5951572931,10586.0380847302,62418.8603296094,14617.7889500081,21116.2345662595,-501.787804780117,5996.62832481543,906.029288653141,71714.0340443043,15710.5227453468,-22901.468628259,949.013194199814,78594.7592426959,14044.6775337295,-58286.0170541481,16137.7295176641,8750.55557500452,15174.5001554013,-73041.734515333,1103.66582044178,12828.9957522692,-3404.51808783608,12052.6697988275,47831.3083315592,12933.3650267493,20363.256869128,3957.79585436972,2933.12484280831,-7418.1752464999,-56027.3399761873,20024.9416898504,13916.5242581273,-21704.4773656977,48591.9613933877,5979.91039230882,1405.62413137315,1032.8119803942,26868.3825248794,13994.3514460335,19039.693715264,1657.30047833863,13689.3682383621,11613.189719095,8699.51906365402,-40189.6953588916,856.326982547121,46406.3534822573,-22616.525638993,12289.1445321544,-64615.8235539977,13256.3189276986,23941.3483491908,3589.75081070198,3259.37757904379,-30006.4398801036,-5987.03035932378,-22371.0680166983,13856.3587419879,-64537.1450770294,36022.0366100147,5885.34868554936,2333.79971332474,2040.20924768882,-18033.8081088478,13508.8590493051,2669.04668072464,15923.0993556165,-12396.9947023758,13835.5941399736,8338.84561809593,8576.46586500513,10239.2485138083,829.668478454235,17693.6724979384,73333.7171379611,12565.2918682933,25972.0737817444,3237.78263500542,3573.31450463589,44051.4849334808,-64774.2435463861,24962.5616816341,5729.80847433335,3225.80156144709,11049.6746291429,-62923.5722929292,6833.30520025904,56704.1512569267,-57551.8444139558,8397.1151174071,86295.3272844472,10509.488004641,901.19605702012,-12031.6434777052,12803.056656023,68609.3974941345,2932.65887872118,3854.60119761272,13385.293976383,5531.8119267785,11236.2524283921,2215.07794470309,7018.59639970277,7579.69711381474,50299.6894069252,8166.86549746139,49451.9687734603,10788.5320025298,990.957000852346,-40786.9341889658,24528.2853350198,6415.68567685102,4089.80009428174,1849.91952828524,5308.82675990947,11431.7358595258,7148.47734500754,55364.0290969328,7825.6112206074,827.962278524282,85139.6754810548,13325.6471977714,12433.2999251594,11059.6513314192,1093.22885386503,-60112.5319296624,-63855.2395810443,-19577.327065166,6554.65900589154,53525.2417536746,-55898.5162280574,-24263.1007372559,65533.2034438045,-9140.62989068502,11657.2414580598,7216.8520926375,14963.2004746136,8011.41648353533,846.622384711279,-58966.5955479575,13452.565610964,-24703.7144912164,11304.0856046795,1242.3485268324,22541.5733758367,-14499.0914365597,-62418.9591669637,-20171.3633314814,-63699.5830350831,6600.35588947906,35688.4925485747,9125.84320437772,-65435.4353420269,4554.34927033676,11902.9601139311,19013.3886764515,7212.87378364589,-25438.434619613,8133.58739361696,947.490314560885,14469.8214227064,-13484.620112721,27156.8356304806,13424.2821005255,-60960.3343766293,11501.0598417518,31348.1231441087,-17215.9969770692,23481.7764677436,6564.07410991405,18777.5847766347,-61046.2488763577,9354.1639490306,8680.11279243236,15890.7900163646,4405.64683970785,12123.9935311593,19817.657665165,7122.90187989935,-65841.9718741979,8179.64602131839,14482.2865505509,32331.6880284713,30277.5335702608,13323.537461496,11629.6026632002,77009.6536595748,28030.4805000253,67105.4794933408,11695.8760327436,6459.84934288977,1403.16116261081,-15455.3058524476,9560.63728255198,8903.7970457573,8052.8837664237,12276.8027528535,6934.40939844358,8133.75775890977,822.887858318714,77924.2087865451,3763.68957795753,13268.1120680681,11103.5003811866,79969.481048381,-62853.2755755239,9869.94795401311,6300.88364663151,-14732.4397521518,30288.1643046614,9727.04421806069,9090.60764580417,4487.42341540432,-11235.4655290964,4117.81275104058,13394.4251163335,11106.0629675473,48157.2416540243,9999.53154810935,70264.7196630002,6097.62862288811,75886.7028135952,9832.0756243253,9229.45255232285,34496.6256013302,4729.40000884285,-55815.0304716321,7480.8877211368,4489.64917176525,13789.5878068905,15994.4863931799,26467.0789812986,1622.90289968057,9301.1295132798,43030.153348176,16827.3319809381,3994.68741358427,7698.28571348233,4837.50499824024,86232.7597166611,41997.3017860742,-16392.2314059371,15277.4161094374,60277.8875266776,1862.8234176093,9288.18830948258,15180.3813893786,9424.87713199049,5121.33871116048,33658.7994031274,-47067.6110758313,25054.7889649535,9253.0525814312,14041.7632353325,15764.3095178308,13218.3851601428,5312.69997419548,13817.2959970488,9664.60324774304,-61213.4127118623,9878.48888920495,-64008.2163351386,13775.6245771881,23819.3521134296,14311.4034225713,13602.7364031107,5397.00432939984,9472.360975341,10139.0634818567,59526.2294571949,32331.7281377613,-21019.4250312828,10400.5586747261,17995.2904933068,39756.3246213143,-55108.8139264544,10639.4225086798,16313.7719833341,4906.62350935634,-18821.3402129671,76641.5763065634,-35081.732642431,9994.5123714353,10835.2998190341,4997.12465723444,25694.702373042,35384.3494239992,10195.9094668603,3812.27327657767,11244.499452513,62025.171307353,17365.6421047687,17207.1088495192,12686.1819981834,-16360.7134735469,10343.677691044,3190.41618313725,948.930763906611,46075.8868189734,566.441784423506,1700.15020160528,7628.57820077447,3784.86666422883,23280.0030337184,3244.91010201941,1329.20725636554,2730.90750692644,-23089.4598465695,11916.5419270563,-22636.0441259488,5114.11614410381,4093.67214391281,2215.37773462812,-19874.7890814976,12882.7679241397,-42346.7066048446,12190.9140839449,1959.33678529882,50012.137168839,21601.1646101068,903.781759098542,7685.60278463676,1154.56596373405,7501.91887577712,2616.7887390163,47501.0128479045,9780.9433799914,1011.27892883513,3522.35190962853,2908.72604200265,1379.30562786215,3010.54141234565,1979.80851325559,15444.622117303,13719.6830084994,-28849.4342350197,11503.5698619323,5488.05776333888,33468.8381671303,11102.8556078336,5631.89581836984,-40221.1261571726,10240.7197950116,65828.1649060565,1499.5420190548,7313.71809731794,20662.3852524404,-9904.94336600827,11737.8772361982,1823.21549270982,1301.97827774464,7720.32246245475,1201.81943640707,-81086.3927649075,801.489997274313,67114.391651334],"Archive703_field2":[-5.19209209517889e-18,1329632.44691006,1329622.98385682,0,1.04617892454134e-17,-3.99848297252968e-17,1.8426284061331e-16,-9.28432120111846e-16,4.75051301708153e-15,-2.36655654248775e-14,1.13275949379813e-13,-5.20909882570217e-13,2.31293184257611e-12,-9.96520741240206e-12,4.1873682304014e-11,-1.72302774056784e-10,6.96754497712515e-10,-2.77668962487216e-09,1.09334714696459e-08,-4.26515259629723e-08,1.65374985731779e-07,-6.39914653663091e-07,2.48150753480482e-06,-9.67397783267674e-06,3.79898928572913e-05,-0.000150555919668312,0.000602887810095972,-0.00244236861396769,0.0100207873757202,-0.0416549808878459,0.175468649519723,-0.749202811127686,3.24413029974887,-14.2186156079453,62.6447135738376,-282.384476492608,1179.35541640077,19420.4693075413,40368.5563343048,60234.5289465732,81183.2383273093,104971.898756447,131699.260076457,161343.725152504,193688.631016332,228347.749267858,264988.393869557,303372.022259283,343252.020089974,384360.627763152,426491.516294632,469466.14201889,513105.399905884,557264.142545706,601831.383993253,646713.149842148,691819.867904773,737098.206994172,782492.935825932,827970.084083815,873500.826069369,919067.161507824,964656.888430991,1010261.48456546,1055876.17622686,1101497.29048269,1147122.17779245,1192749.00683608,1238376.42402678,1284003.95197219,1329632.0762398,1329629.81672122,1329625.19115888,1283969.41021532,1238318.37492978,1192665.01533274,1147009.27224668,1101351.54417823,1055692.54849364,1010032.98750279,964374.091930318,918718.936432181,873074.065224136,827449.43575455,781862.652082936,736337.799318809,690907.727307164,645620.455134536,600536.868299377,555732.811230976,511309.685414752,467385.917967923,424108.149760134,381646.244187167,340182.581939786,299931.3477541,261124.59733564,224017.901322491,188905.964135061,156100.841607582,125899.638780867,98728.6874979695,74868.5279628884,54281.9088239402,36741.5274403668,22194.9078089653,10795.7610480568,2468.94122390099,-3088.14036803525,-6283.0279811993,-7591.79828391314,-7651.29828541033,-7103.06073748274,-6405.4891232367,-5713.19458624226,-5095.13293440424,-4580.93816083416,-4183.64981694044,-3901.09386961359,-3725.87651893046,-3646.68543810341,-3654.91062319828,-3741.0822753774,-3895.30459038507,-4106.14761459562,-4359.47408929153,-4637.34942246675,-4920.79188359502,-5186.52149489879,-5412.0471291009,-5577.37034943216,-5666.72253113325,-5672.11536448609,-5586.57494328671,-5403.72932377165,-5112.45869351788,-4688.14397404967,-4112.91052363535,-3060.98148714519,0,0,0,0,0,0,0,0,1001074.15816923,219437.06577159,-1550.12504124087,582362.648181428,-5852.52159919763,1019196.80021295,88898.1200988444,-2523.5605495355,379693.454099522,-3141.79278291129,275918.128667085,-9971.75964755277,-3785.30721363401,190139.95055674,-3264.75991705129,-10157.0863530586,55256.3415671722,-1199.32374777307,1101385.9186357,-2642.29604282557,-10683.5041723294,-4254.35981961179,-1242.28733074285,-821.537571568652,-5137.277375002,-5197.20266398907,909836.949366621,-3862.41437873035,222911.71414384,-770.668838917159,591951.508521781,-7668.58381377048,95170.8440238734,-3103.64790985476,381423.23812316,-4303.02128017951,269330.242920161,-11946.5700670697,-3230.29763781024,193586.528343415,-2125.45911391076,-9898.88461615486,118113.789684827,48504.7797611761,-1724.7480054391,1101421.05293903,-3042.71380922297,-3628.46176048345,-1896.52844019365,72980.0886588027,-414.575571774083,955451.484493667,-6005.07626696242,900622.22215245,1770.52534432029,-4581.02978609557,-624.990204492056,682252.428900826,-8522.4316430612,1010111.59642295,-885.872474181819,415495.619652791,-5069.81374376876,264448.660079222,-12034.2285132438,-2689.37845587985,199497.434692756,1268756.89756575,-1051.6597348624,-9055.23108787435,45738.7931537549,-2167.72986310655,1101457.98276697,-3368.46678311148,-10112.4629160047,-2940.62879483403,-2564.45973068071,69262.6403969997,1204095.59762504,946255.279010045,-6346.96481432695,891423.909640613,27922.4943726631,-3961.28714004023,-1864.5439902112,-1234.38085441825,672831.106806836,-8582.40250666443,1010155.38327392,-2439.67187953509,-5476.36979991052,-10661.0319038174,-2158.22873567377,1299195.10695795,-335.015385069938,117709.019693106,48313.6921031054,-2543.75872903306,964418.19613049,-3727.67601793319,-7665.48460006471,-2208.92863102263,-3233.88896744023,70279.3838888967,1215523.98174957,937068.558563234,-6411.65086941695,882240.331882801,18550.9242801272,-3268.05592580354,-3307.00223626267,-3000.60937648909,663586.274232289,-8192.67726639342,-3807.83292763108,1128813.56698865,396388.88676401,-5638.97791483954,-7765.81424555035,-1632.52085822075,-365.571956362121,-148.325528124682,115540.004746497,646053.218844396,-2921.53124168258,-4063.36910163378,-1457.54357839578,-3880.2166002392,1226951.05112055,927890.092968423,13387.6591500344,-2508.26182454733,-4377.13675824675,-499.359266920293,654481.336347648,-735.72618157498,1137968.10724279,388332.666268006,-1105.42401331844,333217.457170349,-741.822757351955,-260.031773810536,115862.994311833,-3366.61993797466,773117.753230588,-712.149413681015,-4470.86265847551,11474.4584069431,-1695.31087817959,-980.422739453906,-617.682045992842,-1461.29001383694,-645.634364303547,257486.65631997,-565.325809707339,324262.261943586,-1127.25898612507,-327.46880455809,119409.340743421,763808.516898129,-4929.37294824825,-4983.36135616885,12217.3444140705,-849.883847397517,-1418.8092040275,-2166.6871108611,1183602.44404617,-1262.98959310901,-62.8062411662523,260407.131855918,-956.224495717158,316417.76240651,-1531.27570347252,-335.94238279345,475160.453494959,827481.536088777,754574.504163563,-4375.74904654477,45565.8718926255,1238336.00757894,1074010.5634437,873361.721702052,15630.5148700649,-1814.05895463632,-2845.63682585124,1174454.78907635,-1855.1035001742,-56.4079028474477,431394.274021912,-1917.18124634485,309573.447017465,-1972.12563658095,-237.9144859387,-3237.29289479684,483777.902834669,609227.808809596,827546.12717258,745402.892374769,-3758.66474121658,34034.5148254931,-418.306263956332,1064850.90305756,-5192.41725196748,-2203.29521585502,-4980.32924763969,-3493.19972629222,1165306.79097617,-2429.16397970812,-131.58548405109,-2689.82725523864,439766.225676378,-9195.82880600865,-2803.09796899241,304102.416447273,-2464.57217890445,492933.341085678,618265.71369842,827640.453062833,-3084.76152817831,27838.2120281338,519471.049488261,-830.561770062224,-487.249639276329,-1689.93755606582,-4713.35557146421,-2636.34403359385,-2594.3758289912,-4103.62914536475,1156158.49842784,-2990.92491328869,-1360.28955063183,448856.619202451,-5002.63722847805,-3550.77449514828,-3020.18077875507,502755.932749138,627506.916842178,827779.351664334,-622.345390496846,-2360.54319556467,26428.1881681137,528273.915115093,-1257.22330733325,-956.801887313376,-4056.22169058132,-3140.18159281781,-4670.72300297816,-3544.24228965198,-79.5959751082739,458817.804054966,-857.956888619254,-4121.72602288404,-3023.0767134306,181514.736508396,690806.040530685,-3260.69535321658,-1594.8394551277,29813.4399821476,537473.800782003,-1709.02245363534,-1427.57371658975,-871.973609726975,353800.608941034,-1730.84037195631,-4524.88564011376,-2457.30407543522,171589.387897178,-2672.54569063208,736737.820722356,-801.334501463306,547170.966855274,-2192.67495594921,-1912.07432205217,7972.43507183836,-1745.34224967775,346176.024547703,-4370.70908663083,-2578.79219636281,-4806.36119504672,164117.228926568,1299213.70619812,-480.750234268357,-2416.99419188919,10524.6334678028,-6280.38275952826,-3925.21142395757,-3792.54322758972,-3369.20050776956,299555.790717086,-1541.14333209607,158669.08735803,1946.57487253945,1268795.42021104,-1026.91289687905,-2947.39010216857,-7112.12766617691,-7968.01203967234,-4079.73654900549,-2226.61678625505,156060.056116298,688.412984148059,-3481.82017876994,-7342.74989866886,-9647.46657134511,-3982.77430027274,-4701.64720086531,-3540.3152750274,-764.554167272766,555229.514914359,-347.288897370415,790981.673273969,-7235.55000149116,-9922.73067124998,236853.706591445,-4238.03688747295,-5231.81303385609,-375.286576581014,-707.474753086986,1055833.49829936,-8641.80731074047,230579.71291203,-1088.4849114995,1055794.6519059,-5885.90139707217,226372.205477799,-1500.25761946921,-11644.1592052892,-4699.3892861143,709037.732413465,148528.93095438,91197.1219172068,-1138.28085369392,-1953.60367016641,-5235.64364975518,718279.217484163,-5821.76893134558,-1566.05984281998,-4888.56235957316,-9215.01163310946,70520.8563764958,-2049.28791697969,-4053.47219499119,-2278.6823866,573136.654253812,-2032.99026283914,-4195.38848554007,-445.893013956098,800353.582895842,4376.47061040355,-1279.68405556283,-2339.18840112852,-3480.11854456179,347737.590505093,-2434.03482569963,-674.138867940386,-3038.68978307651,1257360.81585579,-2791.48015156275,973590.188931882,-2573.56431505696,-4118.8023908483,-1943.13603816215,791049.588227243,-3304.60291791502,854889.700303044,-1672.79034987555,-2085.03897497904,290399.134438501,-11390.7873956368,859523.782722492,-2956.66694778576,-687.998814797112,-1699.37090997591,-2602.94735006508,143719.094603412,-539.758497559968,-701.819526052036,-4366.70974997195,-1719.70381169577,136307.491790288,-3671.65439010641,-2395.5351066716,-4946.97039625711,-4280.34413059401,135314.539086249,-1847.16640841456,-3705.93009033646,414040.15524749,-1238.2011439884,-4362.79744544157,1133346.79795745,1257370.08118688,199730.872497795,-1634.3688441956,-1036.18930385223,-7879.95566729197,91424.3129643409,-2289.751656177,-1665.31861923035,-1099.77267953305,-3381.56721486172,-1649.28915762016,1306797.23549037,-2.7335514044664,1306818.22495674],"Archive703_field3":[800,1332734.65414691,1333807.09654857,800,805.9787117511,880.125918797049,1091.97328573764,1474.77586765917,2021.99250629929,2699.03885096593,3461.64453224484,4265.40046268763,5074.72488393768,5858.52736057657,6596.22902684379,7272.76064481493,7880.23662252564,8414.71221356041,8878.14959399939,9280.07334461172,9641.3779326818,9996.40389891642,10386.9918425123,10850.0498288665,11416.8728932196,12123.5382168327,13008.2988292118,14120.4216382304,15523.5396172297,17290.5297370705,19516.1139710757,22327.7861028272,25905.8000773613,30423.4548430749,35914.1352493424,43382.1619327423,48558.2954955367,59413.275095942,75333.9931103172,94124.4495073006,115285.720089699,139108.232469822,165086.079281433,193295.622705054,223717.342278282,256247.060638468,290703.661930693,326922.523063213,364714.914131921,403863.223067241,444169.728411463,485467.733399545,527584.361285742,570365.746452721,613692.074699154,657462.085253093,701575.362096724,745964.791095106,790568.206199802,835340.066997566,880241.613246281,925246.281333793,970334.593315766,1015490.03134314,1060701.20012415,1105959.56324833,1151257.08534667,1196587.33398231,1241945.6461545,1287328.68547301,1330287.96094064,1329650.08349659,1330822.91143692,1288314.86089304,1242837.93428668,1197372.32889304,1151919.5660397,1106481.84467851,1061062.11233162,1015663.74348252,970291.033428489,924950.26837203,879651.537807264,834408.589026007,789242.832175623,744182.518413535,699264.498676096,654540.306717434,610073.60632627,565942.472265093,522248.691255175,479107.014601748,436658.695393346,395064.967640188,354491.038838931,315130.396840174,277184.856388268,240856.428409311,206364.554237243,173946.934628097,143723.654679803,115932.989478034,90714.7655702593,67969.8504161764,47461.7752575267,29290.8407811455,14074.1780669773,2574.67910613823,6343.31782333085,11751.0449825822,14721.2155627864,15884.5161132613,16017.7090079886,15799.4826221736,15540.468300391,15182.7656062133,14712.3535335472,14149.2498332996,13528.6964639427,12879.6961878753,12223.6220438774,11580.0825640124,10961.461881649,10382.5401764978,9856.66454176594,9393.89919947901,9002.14439674339,8683.91948433952,8427.24519136925,8214.98298781264,8018.74839255435,7811.67431512228,7568.19249771329,7268.02955106072,6892.67073149118,6421.71304098374,5823.43241819887,5075.49800011712,3816.24402323545,800,800,800,800,800,800,800,800,1002927.07005752,225050.598836233,12693.4729501486,583092.923382628,21339.7107999421,1021281.61826383,99284.3765658334,10856.9405699868,381255.655288993,15644.8816688316,276242.908401913,31132.3180119356,9370.84312888294,196965.63041343,4065.46749644589,19074.7138937901,67990.2273151681,11824.8112210019,1102758.53153655,12774.2938727292,17026.5911474791,6264.33255756887,2657.25051526944,10833.0047451821,7796.35967032581,16529.9038215556,912080.400057961,8548.34384375979,237995.771717432,12444.5250110028,596633.208220843,19682.9805488142,117129.895936105,10938.5905472032,389601.462474574,15307.1086688207,270308.743843295,25612.7468026432,9291.84628853201,194500.275005081,2689.33759394065,16901.8026035636,138497.213153137,51826.6448922817,12015.7775269785,1101426.88764846,13006.1577820453,5630.23056289327,3234.94242600254,75112.4982469037,10594.1528795874,957488.20010797,15803.1862217407,900869.736641805,1840.25840465586,7546.21661278508,1100.68243722172,686011.136513092,17873.2304310863,1010371.17659475,1298.22805518844,422863.744167166,14931.7104988998,270795.778404562,20130.7965538937,9154.50595882668,200073.716174706,1270857.64745768,1524.48891145271,15702.8768722978,45865.3239667221,12246.0565913674,1102496.04165175,13364.8232081111,22735.9657051478,4930.66382284102,3896.11024661549,69658.7588085797,1205398.38686005,946467.142242169,15295.5421538875,891688.101870084,56043.2369162229,7172.94389395951,2335.01680724813,1609.47093189039,673367.365014385,16416.4400885667,1010334.80010046,2949.34632678085,14744.1320175468,15764.6369037129,8963.2350864165,1299816.5784281,919.527709898846,126526.530659116,53345.2910444108,12549.6526566958,966580.395870488,13770.4596875898,25138.5722532353,4214.93494373128,4591.46818093134,76417.1331187004,1215538.72613786,937335.557915085,15267.8729513302,884597.674819106,40518.1923730594,6731.82877713607,4047.57765738484,3628.51352548523,663831.274936935,15799.0263499139,4650.09696550929,1128925.86741147,396582.696329104,14940.6069866696,11394.9206727748,8730.4576676211,10245.7724444184,842.822784714575,116886.948558361,650201.965275771,12900.4614076988,26288.0121915007,3550.72804850856,5274.90828487217,1227741.5913663,930148.228647432,28325.9404650029,6254.76478638676,5437.38189887646,11060.9524493772,657499.198157311,6872.79804549371,1139379.99537972,392574.164313276,8469.5634211102,344210.338709056,10535.6366263752,937.961010159626,116486.024465077,13238.2925464013,776156.11173579,3017.88748735741,5903.09777181338,17630.3514022512,5785.76029290213,11278.9448700925,2299.58722623256,7169.10482044029,7607.14480403398,262353.648606745,8186.40857304022,328011.450617722,10847.2639679972,1043.66258699686,126183.060104411,764202.255471413,8090.7193973758,6446.73213475974,12356.6057958142,5376.42484563842,11519.4446185309,7469.62257336057,1184896.58674076,7926.8741435952,830.340989346277,273971.966928087,13359.9116211778,316661.944845559,11165.1552990815,1143.68116688174,478947.77696585,829941.675173499,754828.426908197,7881.03637866572,70293.6710246695,1239596.99571394,1074284.59378604,875816.931606132,18107.0182498887,11797.545859305,7757.61581103672,1174550.10491372,8223.3936467264,848.499448319126,435405.648848759,13588.4916546549,310557.551200963,11474.8259631413,1264.9241735148,22772.8477697659,483995.126962655,612417.055192317,827791.928262766,748119.71558001,7595.54201519849,49315.481340005,9135.42524031323,1066859.52305864,6906.75714027549,12105.1629184429,19654.8372767802,8014.23686613855,1165584.41609824,8488.58536682739,956.583836263003,14717.7071131354,439972.91760429,28671.5362143426,13713.8144999216,310152.288491285,11762.1636406141,493929.128092835,618505.362375243,827973.497988995,7252.78033626917,33579.2158777872,523045.710964452,9390.96459578208,8693.77767718515,15980.3972506191,6451.77842298389,12407.3175588868,19986.7541455767,8220.43206609974,1158031.79522292,8709.31919675705,14546.030777976,450019.558077895,30688.0337971989,13788.5695415907,12015.3714066721,508619.715181415,628132.659970677,830494.912940384,11712.4220363842,6877.63169346543,26465.4112210161,528499.948789043,9642.94538473722,8955.05844110483,9016.75503485997,12672.0411247889,8360.72287997707,8872.41053425632,826.728460028925,465387.966789893,3860.23953427185,13893.5748912414,11507.6806320951,198349.987317519,693659.512934303,10394.6143171075,6499.58826511499,33254.8640745967,538326.536057808,9876.03903228099,9202.01684883542,4571.35722572403,353978.963460687,4466.78746369539,14138.0767522734,11374.6638613313,178219.072948582,10350.5135935445,740080.905923161,6150.05787012609,552408.235486451,10073.6058362882,9425.43487742767,35405.8879122248,5041.17486427053,350646.770408913,8664.10866830585,5177.5591621491,14603.2133388921,164894.779861332,1299483.26678063,1692.6117716537,9610.04012199901,44298.5553579249,17961.1332939456,5600.42964914439,8581.78227756582,5895.16468553288,311720.645130364,42025.5693605768,159513.587300568,15400.9284367956,1270226.45306779,2127.12509810075,9744.61648741346,16763.8402243338,12341.698619618,6547.69887087991,33732.367239386,163003.377656439,25064.2447026655,9886.45810348783,15845.7278416467,18482.0741752432,13805.3684256812,7094.38280734986,14263.6426244018,9694.79752294907,558593.677128436,9884.59166138806,793567.299738146,15560.2383116618,25803.5291981099,237285.681392768,14247.6452198984,7516.61648301861,9479.79232165585,10163.7162895948,1057510.164549,33466.7219483784,231535.786079042,10457.362007169,1055947.99941713,40189.665122409,232983.597674307,10744.6770190163,20043.0935716605,6794.05725064296,709287.493780512,167136.993359357,97712.0412803708,10059.1232642144,11010.0086043766,7237.62525053364,718738.653475448,35860.0777697101,10315.4793047975,6199.31201656633,14538.0606456263,93916.5217615135,17486.1404168443,17678.1003446289,12889.2050612143,573370.122516527,10541.570925863,5270.67737261789,1048.47039757126,801678.766714178,4412.97533404243,2127.93373723907,7979.16084192478,5141.637944293,348515.982978597,4056.34898682377,1490.38758168563,4085.52217093002,1257572.79884925,12239.1312165472,973853.298232382,5725.15652354744,5807.12362161384,2946.80779317052,791299.221707898,13299.8537522912,855937.87347243,12305.1458242786,2861.18649608982,294674.177943751,24420.49037193,859524.257881678,8234.70519225462,1344.01076401023,7691.98597947327,3690.92376131686,151365.53232226,9795.82526581022,1230.94911310494,5610.26888979163,3379.06324110475,136314.47025967,4748.09493964009,3107.76932806401,16217.5481638788,14371.8839311351,138355.752839572,11650.9288603413,6622.13680379719,415390.675491907,11171.6849544452,7124.06148618351,1134060.27327905,1257411.78354819,210299.236146091,2218.05946398833,7386.75576152709,22113.9744423917,91959.3002587862,11959.1272532332,2469.29156569498,1704.30260880109,8428.42664753696,2040.71670821043,1309310.51236019,801.494658768266,1308540.49025845],"Archive703_field4":[9976020.23802991,5867412.81322635,-165625.082994238,-2849215.66745032,10021600.7222822,10025162.6523422,10044254.7614046,10072356.7598138,10102477.3748497,10134634.2509342,10160273.5536927,10175857.7118756,10182093.9349483,10175974.2177961,10161198.9840102,10139399.3528864,10114517.1778387,10091257.9360461,10077660.9528925,10084152.9358698,10116613.8899036,10164414.7316722,10190609.3044224,10175207.2009669,10116828.8105115,10017475.2436201,9879123.10501858,9700045.95014715,9476260.76661803,9199327.44254728,8861192.81753311,8447338.34209119,7951499.71698948,7370223.19324378,6619468.52317617,5966558.74524976,1302772.36256797,4449388.31242282,6973018.00905303,6235381.66334154,6005561.76109561,5910748.04868735,5851097.7289056,5817070.04710131,5802543.79830466,5783945.85721013,5762865.22037147,5760705.09227774,5773698.52299037,5765582.54307932,5771243.56894734,5796451.62537202,5811344.8567826,5828184.9057639,5851441.98206983,5873963.60121711,5893627.01227582,5912404.09679529,5931232.81367027,5946096.40678885,5950956.33783061,5960129.6868336,5958533.88437043,5949955.77622721,5938081.99615278,5923153.79000192,5915345.28085864,5926517.91324594,5944461.01757166,5982701.33223469,4373916.86200714,2809023.27696733,1155427.47411699,-174030.066629161,-215282.410231579,-198369.157318052,-192405.447320546,-167807.479757748,-90797.4655201619,43219.2147054119,177483.598632185,269748.403531868,348839.467323537,425346.247823058,511606.858103071,600202.047272497,694692.718061478,792847.34847847,897022.123118647,1002385.7313639,1109850.3571027,1222960.40772391,1332128.48227403,1453808.9169031,1579357.99152665,1691592.689713,1799012.77001776,1910884.84362215,2004671.43483439,2111269.53240224,2228155.41592375,2326625.69947008,2380252.23697784,2399069.8992618,2436381.56595797,2457673.71357109,2367159.68407106,2181262.31174213,1957249.15467114,1722241.36349501,1448826.99142507,1074729.20867773,530821.371260767,-63154.4268134353,-555337.863307286,-730417.006413808,-826161.560790095,-889811.216456183,-923850.681217773,-943587.896531121,-953438.514833066,-954334.180453127,-952028.121624849,-944613.150274328,-934247.8136443,-920509.93639855,-898593.729026223,-872483.634697998,-843321.227827035,-816541.913424676,-795206.980655797,-777462.435764821,-771602.145000106,-775998.869329556,-790670.399326491,-813306.288277309,-839180.708262022,-954171.345754171,-513688.306062246,-1319590.61290286,315000.842665518,1677818.73050174,3032564.10350604,4371308.57093661,5722170.36820524,7100751.75559735,8542177.32288531,4747394.58279055,3743673.72783759,7395857.37541865,3454966.50902146,5855262.29539267,1198258.26207104,3828788.5206932,1802496.03361957,3353380.61972188,6651767.26620374,3149385.43327947,4480857.35530932,474677.400908078,2950155.34709318,1719848.55453664,3595869.72448796,3774181.41034272,7454121.59647978,1440358.18475673,4772427.8795104,2953472.44285384,2852223.49355518,7588972.27067057,7453699.95385749,575235.362962496,5148944.76394912,4749780.28853707,4281167.83504082,4730769.02607792,8700736.44749041,4638022.65386439,4730299.32791617,4827751.04118918,418940.302198845,4557254.01074226,5310535.4024605,3708463.16184922,3854877.56109604,1879062.00426093,3987559.58280404,2413736.12892419,2780974.85072,4773506.58384335,3425055.67109633,6112389.26090346,2977585.15249308,3407572.67768217,4046858.55269081,6380387.01209161,3370024.1727058,8836981.92639162,4749882.09253705,3893170.63542177,3568272.96969586,3408107.39325743,1926948.83688687,2380275.84879068,4677953.19634517,3681375.04638926,2405011.60698613,1145507.88546598,4584320.71435679,3981399.47815386,2735587.59681549,3486382.36704129,3280789.64627559,3198720.52499996,793511.069445162,3065964.09309214,2255706.34757515,4546169.87521184,4732641.39356282,4451116.91722932,1918493.11100984,4404078.72002385,5238305.62156915,5188840.40272557,4416182.48651949,1310354.9586823,3565478.19711986,2648771.19267228,2426614.25362569,4877691.55892383,3288962.10885293,1711697.15450419,-17352.672554561,3509356.82357223,2642032.94313858,3579821.54261635,705956.216947659,2651058.64241492,3477644.80355271,4672697.11421705,1738932.27663023,3751770.54565873,3841385.26395993,3458988.43910597,3288150.3188383,1252408.41660779,478436.807594111,5386163.8341056,6436127.71001472,4009540.87458842,3333458.53340903,2853494.11416424,2415199.86505051,1353446.52721849,1429312.86076022,3698824.16130457,4654262.10255433,1023624.75676204,-286188.079765436,2701202.84140185,1810048.45611077,49318.3082967886,3550363.85086609,3327677.37098647,1258332.32712101,2965825.33263878,6049483.08785715,8821831.16899832,5512737.82008405,3238601.30884747,4673627.3305432,1832345.83440306,6575685.29392105,7648402.30635303,2825951.09373496,4383908.22889804,1312173.81651803,2660610.40221536,6022431.11871661,143570.392752023,8832206.82679265,1982448.9684284,8781835.89828012,4733478.50902283,2643088.9118559,7410623.61328308,4721864.33729521,7440324.08990013,6492866.15525732,4275320.82449957,434658.715138639,4715443.71191535,8879151.99479676,1631427.70897561,5050144.27205196,7397629.52804553,7472715.73397302,8841213.23433428,7408041.09804317,8776618.63959793,3740752.73207412,8762289.58780449,3798606.3640518,6031064.22268255,7425554.99815917,3192391.66952169,3547409.83085087,547880.336237535,425108.455186159,4339703.14989461,8783624.12726212,6086291.42651337,6037558.75480669,4724587.60383801,7417155.71532032,8009759.16731478,4739688.63809664,8574243.54444818,3068767.11962966,4613981.4140427,8304754.86944131,2413179.32265183,1575212.37108169,2552707.40475296,1920273.50730158,4941330.81617802,1311522.68007261,2373627.54906669,4748694.39958403,3481182.60706633,4658590.40195886,4665972.3809963,3521059.66173487,6054666.25760362,9026430.11096186,2527507.17864087,7293587.00709702,3605977.88905543,3203308.12231765,9172746.63490587,7034081.71528101,3116711.22026004,2084950.59582838,2472270.70399671,1765425.8720176,3291790.73818876,3490736.98573959,8746959.00740037,1164980.26803158,436170.922924832,3210258.51152483,6104493.78321561,3289637.86711357,2292535.49393848,4681664.90900818,9043131.93718761,6793147.24689896,3244340.85187726,4916225.24050939,6030309.29209507,2616713.8115127,1803440.85573261,3399467.48541609,2801691.00740403,3577813.73199663,4662405.9277914,3547185.41333905,2307631.8173032,7399662.33866503,8750609.32881442,8015618.86760849,1641278.33507792,1797360.40132453,7430554.56321701,1909600.50769941,1034699.86592439,3295353.53962592,8222870.08343358,3373917.3176856,6047991.09061733,4772427.87124111,417552.974915589,4599304.65093367,3484787.09805974,4740471.76962071,8788870.22385616,6033006.68707776,4604004.12079099,3003204.79073453,6029673.59629601,7404171.7260889,484002.735372643,413033.941286684,529049.198819761,1897276.52072546,6980931.0122104,4578486.76536635,8755826.13472395,3526793.756556,411129.870660531,4720268.21141686,1904035.64781366,431166.358181472,7407071.88546003,3601087.14325136,3428810.20097968,4641262.85685432,6040797.80946994,8769626.31896785,3502928.49281331,7373637.78257661,2239016.19465773,1789729.48093229,3752347.17691959,1819206.11071758,4711106.24878829,8787182.21333663,4619320.04158144,3242253.83858058,4658984.39011369,3204841.01730822,7379980.10937403,2717843.69306779,507345.945448805,6009122.46831294,744611.009099093,3241926.26613759,3816989.55827691,8800808.47765343,3262728.8549361,4465684.68412741,4947285.77667091,3255444.20363199,1894846.23521659,4654255.98339527,4729532.53555243,3059900.23914331,4038534.18302647,5032697.54782385,4856464.35779109,7569363.08836947,1859155.88848731,3785770.94425021,3999514.15706887,3302185.15459342,3669219.28172902,3094730.66775982,3681591.33289324,445818.46384219,2620054.26272676,3766269.7595586,2107705.39094211,1947736.90053316,5421648.1937187,7383986.20950389,2226591.94358611,8784167.69893967,1654906.08907706,1474069.63890761,3650738.02649269,3177465.50798831,560288.920591898,587070.29772912,8744840.05127354,7409327.48008062,4749942.45689428,3940052.2126277,3842718.04588599,6014836.83673896,3578936.94802676,4380280.25805942,2839661.30658007,4611055.46592906,3487845.1220183,1938026.61764057,2623290.87978556,4773413.61382264,3282667.73605229,6018538.95718149,3206628.66709324,586736.145869019,3532435.1896394,5238961.88497369,4623623.48331211,85168.783072569,2653094.5159646,4867989.63041218,7787177.45025388,6393416.29075923,6098804.75023725,2909008.85245097,3222515.45084766,940664.280729885,5338604.08643288,4139481.73915739,3925109.59151235,6309974.74611966,5358420.80882199,4031867.07160918,3099685.27783035,5807143.25363074,7506805.26075786,3527221.05255386,2294039.00260927,1098866.10464348,2407669.83154655,6016519.82663751,2843212.4068874,5548426.51351278,2495330.24166404,4143915.29463505,1946722.99613193,6767230.76946408,4240248.75682397,3751909.83391528,4158323.4776559,3010783.1915261,3982399.90635682,6201166.2395202,6726632.12575766,4530626.39070788,3565686.01790634,8075608.48606055,4194074.26739004,1284924.42375654,7007762.47908024,3937815.61384806,2296541.18373452,3156406.1009342,4293233.29509451,4384308.96995299,3632509.84300424,3906963.03614717,3971549.63192147,3305886.79408086,6058422.34612386,2611762.16499715,1870561.61371712,3319473.58006824,4263328.81322289,3692780.95340515,8092258.41426809,5116051.26785651,4365386.66108732,2491725.73112193,5269266.20239833,4930065.82420156,2941889.84723956,-900197.554589779,521929.413058406,9327729.95097154,5115063.80745088],"Archive703_field5":[-909.090909090909,-583.224406428205,-583.226328267278,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-899.676062304377,-882.33833192524,-865.033704236191,-848.207927913743,-833.796748383388,-819.376956362826,-804.948007909953,-792.296733836714,-780.05985726084,-767.817372526958,-756.337895000622,-745.782702023992,-735.225065596102,-724.796391631397,-715.569863510825,-706.343116492304,-697.114378746497,-688.686956799671,-680.532399861311,-672.376966705453,-664.569141717853,-657.293612938943,-650.018079328722,-642.775491277517,-636.231256111495,-629.687624019551,-623.143482583323,-617.028504989367,-611.10086934061,-605.173160809313,-599.42777867671,-594.025204828593,-588.620398264257,-583.224854966321,-583.225282706963,-583.225710008554,-588.620467084209,-594.014292398683,-599.500166561588,-605.1610096019,-611.070297957992,-617.059704216538,-623.214602110076,-629.688972287206,-636.237549403618,-642.93102236201,-649.991813703931,-657.320395643417,-664.737223462706,-672.466830719174,-680.550160094109,-688.842710152003,-697.341506159584,-706.377768596398,-715.703817141625,-725.180754416223,-735.340982934821,-745.986202316661,-756.763367117987,-768.185781221287,-780.356013777237,-792.787242434859,-805.689441354943,-819.72698092183,-834.465741940035,-849.536747949487,-866.01158942788,-884.094866253986,-899.96147158189,-907.918165021485,-910.498499587947,-909.025001376344,-909.07854865339,-909.09413337868,-909.092725238386,-909.090856742805,-909.09085878298,-909.090912030826,-909.090909677269,-909.090908938605,-909.090909058698,-909.090909102192,-909.090909090837,-909.090909090911,-909.09090909091,-909.090909090908,-909.090909090912,-909.090909090905,-909.090909090905,-909.090909090908,-909.090909090905,-909.090909090905,-909.090909090908,-909.09090909091,-909.090909090908,-909.090909090908,-909.090909090909,-909.090909090912,-909.090909090905,-909.090909090903,-909.090909090907,-909.09090909091,-909.090909090909,-909.090909090909,-909.09090909091,-909.09090909091,-909.09090909091,-909.09090909091,-909.09090909091,-909.090909090909,-624.433740826214,-780.131622455201,-909.090909056673,-692.095635465208,-909.091973136841,-621.943728136501,-833.93957040509,-909.090909090908,-735.274531656513,-909.090911431023,-762.178912402583,-909.05236028999,-909.090909090905,-790.628243926808,-909.090909090904,-909.092745050867,-854.001788751818,-909.090909097459,-611.067214142356,-909.090909056186,-909.086565007894,-909.090909090909,-909.09090909091,-909.090909090904,-909.09090909091,-909.090858295325,-637.534274525098,-908.839824847505,-780.099241426602,-909.090909076872,-690.373014029508,-909.092759372784,-833.867182305799,-909.090909090908,-735.249837832589,-909.090911509729,-764.167486767013,-909.048248314111,-909.090909090906,-788.486848365926,-909.090909090906,-909.093412198152,-821.834262550847,-856.951229792636,-909.090909101824,-611.07345491407,-909.090909057597,-909.09090909091,-909.09090909091,-841.481850228863,-909.090909090906,-630.991973714582,-909.09085834474,-638.841932856117,-908.64132638361,-909.09090909091,-909.09090909091,-673.994826975824,-909.092757799773,-623.184513658137,-909.09090909091,-726.887857374202,-909.090911624747,-766.169775406067,-909.043459058395,-909.090909090906,-786.364870648558,-590.41819334902,-909.09090909091,-909.094073728962,-859.944796812003,-909.090909101903,-611.087240279999,-909.090909057931,-909.089484390636,-909.09090909091,-909.090909090911,-844.119988043,-598.112950184243,-632.296496214518,-909.090858442106,-640.188164532487,-885.251781654872,-909.09090909091,-909.090909090909,-909.09090909091,-675.621294812303,-909.092750766659,-623.172870053819,-909.090909090909,-909.090911742853,-909.038332000453,-909.090909090907,-586.823184184228,-909.090909090911,-819.458462876519,-862.966392767943,-909.090909101976,-629.682967657929,-909.090909058309,-909.090843806268,-909.090909090911,-909.090909090912,-846.812585287641,-596.730222236115,-633.602131122814,-909.090858587973,-641.543577373122,-888.175359561634,-909.090909090909,-909.090909090905,-909.090909090909,-677.249548934271,-909.092738268867,-909.090909090905,-607.523205610825,-731.109637269944,-909.090911879872,-909.031804361189,-909.090909090908,-909.09090909091,-909.09090909091,-819.499006264025,-680.527868567499,-909.090909102049,-909.091417670394,-909.090909090911,-909.090909090912,-595.363127478289,-634.91701860706,-891.19747872003,-909.090909090909,-909.090909090903,-909.090909090982,-678.900472217074,-909.090909090908,-606.347391633532,-733.218643386907,-909.090909090908,-747.565475764,-909.09090909091,-909.09090909091,-819.56309713476,-909.09090910212,-658.744024547575,-909.09090909091,-909.090909090912,-893.576219704831,-909.090909090909,-909.090909090981,-909.09090909091,-909.090909090908,-909.090909090908,-767.966936186928,-909.090909090909,-749.351663691258,-909.09090909091,-909.090909090907,-819.621081202461,-660.195514442059,-909.090909090908,-909.090909090912,-896.027996421081,-909.090909090909,-909.09090909096,-909.090909090908,-600.570986282931,-909.090909090908,-909.09090909091,-767.890547140221,-909.090909021221,-751.167265516891,-909.090909090912,-909.090909090908,-713.806384242872,-649.980797410217,-661.696524231065,-909.090909090909,-868.106632980614,-594.015540778144,-614.638249227623,-642.820738594407,-898.231839844692,-909.090909090937,-909.090909090907,-601.708593777734,-909.090909090907,-909.090909090909,-723.192976837359,-909.090909005593,-753.013669807283,-909.090909090912,-909.090909090908,-909.091460128227,-711.929226714841,-687.140336275888,-649.994514427112,-663.205791694244,-909.090909090909,-871.292710548443,-909.090909090909,-615.850789293932,-909.09090909091,-909.090909090913,-909.091168012926,-909.090909090906,-602.85377563283,-909.090909090907,-909.090909090908,-909.090909892254,-721.22407804884,-909.07655036739,-909.090909027516,-754.879724229722,-909.090909090914,-710.057905595606,-685.467332853345,-650.004979249984,-909.09090909091,-874.550256210241,-704.513857596314,-909.090909090909,-909.090909090908,-909.090908516592,-909.09090909091,-909.090909090888,-909.090993173308,-909.090909090906,-603.999858381713,-909.090909090907,-909.09090952929,-719.321136465798,-909.082132702575,-909.090909022226,-909.090909090914,-708.199412813979,-683.809370203221,-650.012832761784,-909.090909094142,-909.09090909091,-877.761037936234,-702.641338196208,-909.090909090909,-909.090909090907,-909.090909090908,-909.090909090861,-909.090909090905,-909.090909090908,-909.09090909091,-717.422948449993,-909.090909090909,-909.090909090886,-909.09090909091,-794.443224300446,-672.451182886197,-909.090909090912,-909.09090909091,-880.953173533956,-700.800505422305,-909.09090909091,-909.090909090906,-909.090909090908,-741.643216533103,-909.09090909091,-909.090909293697,-909.09090909091,-796.635670743255,-909.090909090912,-664.612249009396,-909.090909090909,-698.958147791368,-909.09090909091,-909.090909090906,-899.393881961127,-909.090909090908,-743.805677585494,-909.090909090906,-909.090909090908,-909.090909485998,-798.840724429794,-586.821975354393,-909.090909090909,-909.090909090905,-899.564251846094,-909.090884426057,-910.492853408412,-909.090909090905,-909.090909090908,-756.417239103121,-908.653535208709,-801.088641744754,-903.948383147944,-590.419530365122,-909.090909090909,-909.090909090905,-909.090877561539,-910.459531138276,-909.090909090908,-908.222920405285,-803.354271260103,-905.696694120668,-909.090909090905,-909.090870637536,-910.432847446196,-909.0909089488,-909.090909090907,-909.090909635523,-909.090909090909,-697.318278677694,-909.090909090909,-655.843376784863,-909.090863696526,-910.38554648783,-774.067465061365,-909.090908940171,-909.090909090907,-909.090909090909,-909.090909090909,-617.034193059243,-909.970889463234,-776.152674659423,-909.090909090908,-617.048152268728,-909.52582340418,-778.247913268684,-909.090909090908,-909.080050964508,-909.090909090908,-669.3085826898,-807.387714211154,-834.354268527661,-909.090909090909,-909.090909090908,-909.090909090908,-667.729615655586,-909.113665587413,-909.090909090909,-909.090909090906,-909.078238911678,-848.473695222071,-909.09087417641,-909.090852454765,-909.090909033075,-693.842166090405,-909.090909090909,-909.090909090904,-909.09090909091,-654.378878407833,-904.386787466566,-909.090909090906,-909.090909090906,-909.090909090912,-743.206371208674,-909.090909090912,-909.090909090907,-909.090909090906,-591.765089950307,-909.090909090891,-628.383897324214,-909.090909090908,-909.090909090911,-909.090909090907,-655.837168518756,-909.090908985499,-645.73246798886,-909.090909074037,-909.090909090905,-758.363760876957,-909.076074393361,-644.986259538965,-909.090909090905,-909.090909090906,-909.090909090907,-909.090909090907,-807.532960850322,-909.090909090909,-909.09090909091,-909.090909090907,-909.090909090911,-810.064846175356,-909.090909090904,-909.090909090904,-908.22687301757,-909.090910160549,-811.387072907395,-909.090909090904,-909.090909090909,-726.983837338732,-909.090909090908,-909.090909090909,-606.940746774357,-591.765434931586,-787.307292820997,-909.090909090905,-909.090909090908,-909.091366842019,-831.801657221001,-909.090909090898,-909.090909090905,-909.090909090905,-909.090909090905,-909.090909090909,-585.92370715976,-909.09090909091,-585.922471257894],"Archive703_field6":[415.723081572452,59.7849810160211,59.7843828709445,415.726246641185,408.555825770487,401.379623211857,394.083081527808,386.702594124563,379.235176101337,371.641753841636,363.886217275727,355.97864646863,348.000166603378,340.024177325633,331.608421864057,323.214934551974,314.703566062573,305.937148463884,297.031251771285,288.029525935893,278.801856660596,269.300241118842,259.693071586044,250.075678704307,239.821416009911,229.553569238116,219.144117986284,208.281320936809,197.196459523679,185.953656236211,174.429382947361,162.334579615499,150.073119318262,137.563009976486,124.276138878446,109.769541941145,98.5591585978925,90.6333908171513,87.2578454350932,86.491946697849,84.9810283110973,83.4733533170445,82.0623082983442,80.6928019450032,79.4270709032375,78.2424563638638,77.0773119152938,75.9701452563488,74.9397862463408,73.93695041391,72.9648440043806,72.0554779226949,71.192353440436,70.3351749029045,69.5258877484644,68.7547258996152,68.0026720629453,67.2719004842424,66.580622969132,65.9093740226908,65.2473336741426,64.6245430730406,64.0261102216336,63.4295254207504,62.8645674881636,62.3172331181038,61.7808537112975,61.2583549367829,60.7587694095473,60.2735235416755,59.7848434567308,59.7846997390198,59.7845561060793,60.2739783455188,60.7645340927734,61.2548434434586,61.7795429523572,62.3224521830381,62.8653821160149,63.4272857144694,64.0319383208343,64.6366451756931,65.2413753235451,65.9165655270003,66.5947447663824,67.2729797859136,68.0055536096155,68.7723183935757,69.5393215583216,70.3355563933383,71.211017577059,72.0870766268815,72.9638007004727,73.9648518872596,74.9774963820074,75.9913500178008,77.1045773658688,78.2917411013937,79.4809682788544,80.7233355373398,82.1389314398793,83.5577292443039,84.9798312622715,86.6679752200652,88.3942816408607,90.1234206313583,98.1892732647714,111.709702966527,125.21700020122,138.502906863414,150.713088635049,162.927016652265,175.143462452228,186.496200953724,197.658926846449,208.823063953828,219.586439812843,229.884820979975,240.184251782812,250.405375757678,259.979083039434,269.553589673881,279.128730369381,288.236268373288,297.192954963623,306.150195463927,314.892037928104,323.314965440203,331.738406972304,340.138108734549,348.094626957817,356.051619364956,364.009035690993,371.677537592662,379.222855405744,386.768570959694,394.185966028022,401.364865063977,408.544497784283,415.725184385333,415.724657236747,415.724385499203,415.724254909657,415.723908196621,415.723422974562,415.723178887977,415.723384696485,63.5458970660833,78.2551089574293,227.071188931663,69.847861653754,162.525209568138,63.3120150638114,83.4973094922648,279.030844118174,73.9475185985984,197.345112348942,76.5274893951305,124.562653082066,307.234699643367,79.273212692191,395.17694660695,150.46050691933,85.5029529761165,239.912802982831,62.3202815993083,229.720641482439,141.822235457142,366.545273643341,379.248403597534,259.766470520604,349.079042500472,186.177095388446,64.7472998897565,101.744561357467,78.248965388699,228.313365009912,69.6858581730781,162.619957831579,83.4852014094083,279.079771455238,73.9422004955808,197.410962895844,76.7173322541289,124.716620790815,308.31607299391,79.0658597780621,400.365273248006,150.547664218268,82.3071027560593,85.7731368909471,239.959327802922,62.3184000528811,229.76157487172,367.39818500825,379.254067026565,84.238022626286,259.72985003459,64.1471998018869,186.257213728224,64.8693999469258,99.8227957620902,348.070956418253,409.987639679403,68.1525041495116,162.696345924373,63.4278307580663,410.344227849448,73.1584794777499,197.473496700152,76.9095710024692,124.865389166655,309.38759334247,78.859459107196,60.4370684922842,405.483378620216,150.63478095167,86.0496754208683,240.004250383664,62.317749801481,229.802713249187,145.07754167869,368.250108367198,379.251286343087,84.4842222252679,61.1307508792627,64.2686495138091,186.337105952269,64.9930554799666,87.5655049980816,348.060150370296,404.25005580434,410.94039338401,68.3040523401483,162.772973376241,63.4286279619865,404.962418304811,197.535939397494,125.003776101706,310.45588181609,60.1108430743791,410.604037263771,82.083572818917,86.3455344626875,240.04920441194,64.0301738700814,229.843792728875,146.749364771187,369.100526688922,379.245714905906,84.7306411029935,61.0062508868051,64.3908158854179,186.41676880472,65.1160544188677,87.8505559386885,348.049304078454,398.512577148194,406.153340967473,68.4578294983939,162.849839596069,399.584057054566,61.9946176265554,73.5537573301598,197.598506989839,125.111663431347,311.521394639076,268.140304020646,410.941302726805,82.0936571544179,68.7568829301459,240.094188368702,148.413290028344,369.950314933448,379.241487539179,60.8818453357962,64.5136662542282,88.0565315303026,348.037021398182,392.6999991104,250.11676432544,68.6149456411456,331.624743299686,61.8874487613642,73.7569287049676,312.584380149581,75.1134455133827,266.977844559779,406.161754815862,82.1078485346001,240.139204458746,66.7179793815082,370.796112308203,379.237943324702,88.5645054860403,348.024738017017,250.157710370043,378.405006096869,331.641487701678,322.178885134568,77.0891983312554,313.64504721372,75.2866683952062,265.813503304137,401.379685477857,82.1222084058497,66.8545361747308,340.123870480904,379.230396691645,88.9832550231758,348.012453507704,250.198835513269,331.658102954199,61.3614365477935,321.140067951614,408.554147829426,77.0830385103419,217.870792098525,75.4610074587104,264.647353359402,396.517679558537,71.9065225898982,65.9136359903841,66.9936981364861,340.109631241865,86.7250001143797,60.7631783032359,62.6449627919709,65.2484970357066,89.4584680662256,250.239969055768,331.674579448107,61.464371735902,320.099861766718,404.970350537244,72.7806814577986,216.593731408497,75.6372782405683,263.47985101661,391.633379300497,160.690530951328,71.7265313779353,69.380680317461,65.9123524394594,67.1326871966432,340.095390710762,86.9818717634368,295.938610902865,62.7554950092325,371.673384440944,250.281257173553,171.23359596705,331.690911589086,61.5681827890242,319.058490818067,399.565946228604,205.276929056371,72.597855703177,134.104590955288,215.312919415929,75.8140819138092,262.312053943654,71.5466189124309,69.2236526154907,65.9111075002808,340.081148982212,87.2510393833863,71.0307394153371,294.845617637727,304.855600448752,195.677792080667,371.669208308421,250.322624904869,172.838505837353,331.70693006911,61.6726048524122,318.016150407641,206.781864404128,72.4179948746698,135.841057211172,214.041500859177,261.144670868258,71.3685466698284,69.0669458227139,65.9103984813912,238.587502227065,340.066906701231,87.5868131437691,70.8509836608485,293.752588348208,303.771190794342,314.861215529516,250.364067220725,331.722662952755,316.972860672819,410.345433471895,72.2362587384629,362.916844188341,212.753307920287,269.528531125841,79.6387787508903,68.0049293144476,288.209770438412,340.052664165372,87.9659244410716,70.6775488912359,292.647835952947,302.683934220381,355.988816090468,74.5580533712082,361.946791555069,211.440179047077,269.50401406027,79.8522489751598,288.18320930465,67.2735586244768,340.038421121981,70.5057316307056,291.542603489556,301.593863548969,90.7805730780106,355.998320918293,74.7674348317352,323.302946769268,360.976317692505,210.130908144217,80.0659519501866,60.1106454220555,385.878493653647,300.499557048025,90.6949732232029,174.720234653645,111.3339412416,323.289245416494,360.003294825532,75.9753228035359,98.6631183940265,80.282252774035,93.642311434421,60.4357046127123,385.054619983221,299.401139504924,174.825805211324,110.94929407324,359.026910695977,98.7674583156325,80.4990045813266,94.5735584137524,297.176080170514,174.931533787124,110.528152263401,219.461778083836,358.034382118364,208.48649383433,288.085785017774,70.3369766405824,277.665945729683,66.4565965922956,175.037419370225,110.145489230808,77.6760326075964,219.524988254999,357.043455001893,288.057220392458,276.528290227878,62.8649543945753,110.022964756073,77.87943197129,275.380827307821,62.8659894876111,109.896281916021,78.0846660360706,274.229445490291,138.024870677143,363.966167250611,67.7102212657113,80.9237176507933,83.5458964886307,284.683570072124,273.073764961116,363.988294022689,67.5638742118325,122.426302366573,283.574771337859,384.625820265209,138.328586357151,84.9916335514312,186.032604974777,182.865107733333,225.825142121282,70.0110696848571,282.463530385416,389.949623945228,405.935588546941,66.3153736049212,95.0582395969981,390.4272274714,325.887197529908,373.35027476037,74.7038368229089,374.186722143572,393.281054445759,386.386046271445,60.5587031263743,255.734345823457,63.9091728753806,354.515740229127,372.932943421016,386.092771396194,66.4538721099581,221.982400202444,65.5132283050012,233.51229694519,392.537902884258,76.160975821547,135.138147072168,65.4459843599635,325.375167200896,399.576442129841,326.398417001925,384.599077997196,80.933320660282,282.872466747004,405.709440863157,384.614604636308,374.602869559828,81.1752339802316,387.286513160518,395.168341462839,101.237936960139,205.776862743174,81.3021021265253,256.858847026278,353.533724133089,73.1625023440887,258.004229422471,353.046319046984,61.9418856534656,60.5581262887342,78.9484634636654,399.071512223217,326.908734859778,154.679587284851,83.297278020067,256.296321799157,391.481346692558,399.324001215896,324.332659739964,412.13571958814,60.0292302768569,412.139302441571,60.0293210591207],"Archive703_field7":[1324.81722425369,642.999575310998,642.999575310998,1324.81722425369,1317.62958582482,1310.44194739594,1303.25430896707,1295.82589360673,1288.2701540081,1280.71441440947,1273.03121189311,1265.06191446867,1257.09261704423,1249.12331961979,1240.70305060362,1232.26512165065,1223.82719269768,1215.05864939139,1206.08437561136,1197.11010183133,1187.96782052144,1178.37250782509,1168.77719512874,1159.18188243239,1148.91238078897,1138.58792500775,1128.26346922653,1117.43520380759,1106.24021536394,1095.0452269203,1083.60317853605,1071.34712983738,1059.09108113871,1046.83503244004,1033.40304129116,1019.81893574152,1006.23651921946,989.662166399393,970.607893004991,951.59497773885,933.107878657702,917.283148300299,901.449326397946,885.608823086898,871.729602005076,858.306745940563,844.879766493597,832.295107741468,820.729229668796,809.160744028552,797.735299425189,787.635216770725,777.533435901635,767.430299541915,758.210340414232,749.28991170468,740.368548505076,731.830179422027,723.877763384579,715.92469206123,708.007874177697,700.860373161943,693.712403328805,686.564041811007,679.888306281754,673.418285433532,666.947974623616,660.678593255464,654.78580978381,648.892801732417,642.999575310998,642.999575310998,642.999575310998,648.895662244247,654.791746988614,660.687829481715,666.961981948789,673.436397869187,679.91081088023,686.594131641375,693.748058084244,700.90198059286,708.055898390624,715.985802281984,723.947065919653,731.908322963899,740.466972085173,749.399824769285,758.33266803072,767.584216198065,777.703846468136,787.823463028824,797.943062399303,809.423162986089,821.017975759548,832.612762040213,845.285843499284,858.753024269986,872.220162864561,886.246712917712,902.151297562713,918.055813006972,933.960234503822,952.756560310415,971.937959099879,991.114533402417,1007.27046283695,1020.79841442441,1034.31009512117,1047.59919611594,1059.81046823015,1072.02437871905,1084.24039509458,1095.59243368967,1106.75445886488,1117.91804245712,1128.68098954439,1138.97899717663,1149.27817867906,1159.49925861779,1169.07290898283,1178.64746081877,1188.22278058392,1197.33051633562,1206.28744881694,1215.24499352668,1223.98716999309,1232.41040651957,1240.83413655366,1249.23411866679,1257.19081584201,1265.14791576302,1273.10537088165,1280.77380811393,1288.31896056693,1295.86440926594,1303.28140868335,1310.45976022454,1317.63836664559,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,688.000845335006,858.45550624253,1136.11119139288,761.832404494661,1071.54063031329,685.158372651176,917.540703596184,1188.15904081604,809.265712295633,1106.38714220908,838.367761432795,1033.66219986583,1216.34348493327,869.901260498528,1304.30764551821,1059.50215986416,939.285280002398,1149.00383096526,673.431870078305,1138.78346109343,1050.88259258573,1275.7241284057,1288.28100010207,1168.85112413365,1258.17470335234,1095.27974484594,702.299478639777,1010.85574100682,858.381125668617,1137.34955863851,760.021372339064,1071.63737998468,917.411926237618,1188.1909105933,809.213228500599,1106.46060551906,840.673789141478,1033.79177890203,1217.4419763802,867.582357417762,1309.4350400173,1059.60492960846,904.217075140466,942.65309947565,1149.0495553858,673.427341846417,1138.83234578048,1276.55584296502,1288.28642334104,925.621691948156,1168.81415969138,695.150319189531,1095.35791655531,703.738583543157,1009.06310187709,1257.16626652719,1319.07444158944,742.174804003489,1071.73412965607,686.582095778889,1319.43327054496,799.956856364472,1106.53406882904,842.979816850161,1033.92135793823,1218.5404672119,865.263455260361,650.861023365472,1314.56243500914,1059.70769935276,946.020920263906,1149.09527980633,673.42281361453,1138.88122975976,1054.1659882423,1277.38755752434,1288.29184606204,928.401205941027,659.212324730598,696.588234653944,1095.43608903214,705.177688446536,973.537413189771,1257.15399158292,1313.33165867882,1320.03140306337,743.981059576597,1071.83087932747,686.576077953454,1314.04931658986,1106.60753290648,1034.05093697443,1219.63895865882,646.930299439297,1319.68982950823,901.683317825569,949.388741052161,1149.14100493466,693.740927207272,1138.93011373903,1055.80768607059,1278.21927156568,1288.29726878303,931.180721024391,657.736819716402,698.026150118357,1095.51426150898,706.616793349916,976.466934169637,1257.14171663865,1307.5888757682,1315.24558162668,745.787314537245,1071.92762899886,1308.66536263475,669.543344053302,804.690010022603,1106.68099621646,1034.18051601063,1220.72867260835,1177.21005842714,1320.02546549878,901.800312411872,749.311894673343,1149.18672935519,1057.44938389887,1279.050986125,1288.30269202201,656.261315106454,699.464065582771,979.3964538345,1257.12944169438,1301.84609285757,1159.22155473333,747.593570110354,1240.71943676336,668.24565959694,807.056586454179,1221.7615124593,822.709818898248,1176.04760848238,1315.23370649749,901.917308088668,1149.23245448352,725.483875492604,1279.88270016634,1288.308114743,982.325973499362,1257.1171667501,1159.26122668253,1287.43722699419,1240.73582213113,1231.23037793684,845.015125641043,1222.79435288871,824.690407818855,1174.88515853763,1310.4419474962,902.034302674971,727.089987361604,1249.22026918024,1288.31353798198,985.255494479228,1257.10489235216,1159.30089863173,1240.75220807735,661.859656732467,1230.19563380605,1317.62958624451,844.947446834955,1127.02857409102,826.670995944483,1173.72270859288,1305.65018849491,785.765458239448,715.973580416308,728.696099230603,1249.20641916634,954.985475356552,654.790262890737,677.313801069374,708.01747912943,988.185014144091,1159.34057058093,1240.76859402358,663.071245778883,1229.16089025371,1314.03576662398,795.881493360714,1125.79367853795,828.651584865091,1172.56025864812,1300.85842949363,1069.69903581701,783.707452485331,756.524117145617,715.961358408657,730.302211099603,1249.19256915244,958.375972061893,1204.99014323343,678.612305854384,1280.76720920601,1159.38024318793,1080.29495060124,1240.78497939134,664.368157847883,1228.12614612292,1308.64503793231,1114.38356310062,793.819924779051,1043.36368499388,1124.55878369267,830.632173785699,1171.39780870337,781.649447425046,754.715566069089,715.949136401007,1249.17871968488,961.766468767233,775.64913725938,1203.89591099328,1213.9622493573,1104.71910404115,1280.76060963698,1159.41991513712,1081.94906498744,1240.80136533757,665.665069916883,1227.09140199213,1115.90938381546,791.758355503556,1045.17440279705,1123.27411786277,1170.23535941642,779.591441670928,752.9070143801,715.936914393357,1147.67070810024,1249.16486967098,965.156965472574,773.594427901304,1202.80167875312,1212.86584967739,1223.96717292609,1159.45958708632,1240.81775128379,1226.0566584398,1319.4264958084,789.696786228061,1272.04580012858,1121.9350989606,1178.61309233308,874.055876402024,740.447287627447,1197.30296467423,1249.15101965708,968.547463492918,771.539718543227,1201.70744651297,1211.76944938225,1265.07266477718,816.27508335065,1271.06038838473,1120.59608005842,1178.57872291386,876.382150688707,1197.27541302654,731.845808472055,1249.13716964318,769.485009185151,1200.6132136576,1210.67304970234,990.077129012359,1265.08341491419,818.646529830671,1232.39224605132,1270.07497609454,1119.25706192372,878.708424975391,646.928320238085,1294.99179008057,1209.5766494072,989.86964779004,1083.87627139008,1020.65848961409,1232.37408539959,1269.08956435069,832.348050213383,1006.3842259494,881.034699262074,998.696929687111,650.857064963047,1294.15768660261,1208.48024911206,1083.96730262236,1020.51856381058,1268.1041520605,1006.53193208239,883.499381415043,1000.86705323393,1206.26206492908,1084.05833385465,1020.37863800707,1128.57660994288,1267.11874031665,1117.6421354219,1197.16520582055,767.553433506079,1186.80277586907,722.342591363389,1084.14936424672,1020.23871313478,851.816395975119,1128.62879999268,1266.13332802647,1197.13765417286,1185.63773090128,679.892807355338,1020.09878733127,854.128605598324,1184.47268593348,679.897308509277,1019.95886152776,856.440815221529,1183.30764096569,1047.27169740104,1273.08683155272,736.858756162495,888.365902996538,917.927035671882,1193.83417144055,1182.1425959979,1273.09610113521,735.05464787727,1031.60238114866,1192.74219461742,1293.70894543314,1047.49003069986,933.249938317162,1095.12339989227,1092.01295911141,1134.87282485504,763.643436650259,1191.65021717906,1299.09892964534,1315.0099499917,720.71650649265,1001.24448628274,1299.6146097447,1234.96474242787,1282.42655613302,817.968354517548,1283.25555907285,1302.46084168746,1295.49114555725,652.333559982098,1164.82763727677,692.304123684359,1263.60220916762,1282.01341047285,1295.21251797877,722.328729092553,1131.07811696004,711.192188121345,1142.58037374323,1301.73105143489,834.332424034521,1044.45098021892,710.385320007781,1234.45556333559,1308.65019745421,1235.4739209417,1293.68860958194,888.470351465777,1192.10569760049,1314.78619299316,1293.70352219417,1283.668705251,891.276181225445,1296.39580345775,1304.30119697814,1009.72793592025,1114.9040933459,892.708344751855,1165.95041461452,1262.62293489591,800.003858771319,1167.09302858468,1262.13636622295,668.900014185044,652.332570381492,866.255691783959,1308.14674371476,1235.98310003398,1063.72253344774,915.159257560094,1165.38902594565,1300.69748760581,1308.39847083086,1233.41482523527,1321.22779572088,645.947619165189,1321.22340537229,645.946188529345],"Archive703_field8":[800,72052.585761062,-73812.9384937215,800,805.928413397833,879.803892321102,1091.39321862175,1474.36707271877,2022.51695679278,2701.47894746786,3467.10822204906,4275.10437713889,5090.00208215805,5880.8791760509,6627.34791616661,7314.56355009826,7934.80715450791,8484.08975851856,8963.90800601026,9382.40153394543,9757.60966763787,10119.68739281,10506.4758941725,10952.3768140099,11486.2955929775,12139.6001311895,12943.9157801306,13938.594648136,15172.7427087773,16699.8038931515,18586.2844036683,20916.5143483853,23807.7138920298,27367.0771726152,31616.6550067502,37388.2975889887,41292.7634292055,47071.3766623195,52745.5724578914,59344.0183176321,66515.4791897647,73583.8409321499,79749.866423471,84866.3558208969,88906.5802591669,92035.8991100029,94360.8505366759,95953.7252912666,96906.8372546053,97330.9506043926,97287.7103782176,96862.1328971782,96141.74735356,95177.6324553501,94021.4889139812,92731.3261103683,91347.0479139832,89890.2333857116,88404.6584712079,86907.2492535189,85411.9465296531,83932.3733954117,82482.2344750273,81061.3656782201,79670.6815861978,78317.4838038243,76998.5850371571,75710.2931843339,74455.1817285414,73234.9413704545,35585.8096437418,-878.614215411486,-37340.6549638062,-73920.8903452565,-74039.1809225932,-74160.2424659016,-74283.7915749938,-74409.2203249184,-74536.7613605526,-74666.6273310725,-74799.5696733972,-74934.4190607428,-75067.1955612711,-75191.4697812082,-75297.1634957466,-75372.3653972721,-75399.8288069134,-75357.1199269383,-75216.1859178378,-74944.9422098575,-74504.0889962879,-73842.7992636125,-72910.8286300428,-71655.9918003098,-70011.2642708201,-67918.3292334724,-65317.879461614,-62127.0094147451,-58267.1523359037,-53710.9888897307,-48317.0444293298,-42044.1874297206,-34983.6654114684,-27298.0670213127,-19166.4146656447,-10971.4371447248,-3405.90735375715,2820.53364063844,7532.98141061112,10832.6768309083,12840.1138432847,13804.394978721,14115.1875167498,14177.2320109828,14175.4748360133,14029.51183918,13727.5093572908,13294.616266835,12768.8455022876,12181.1073384261,11554.2906317002,10906.5462313892,10248.5763113927,9591.9273059003,8946.87538109576,8321.96182393083,7727.93975336697,7175.46237191799,6667.98220832896,6209.23564817986,5791.58391310248,5406.72859318642,5038.78873225176,4674.99140094163,4301.59053879456,3905.17533543775,3469.80351620928,2985.26803916962,2285.80729929574,800,800,800,800,800,800,800,800,49885.7974484586,42106.1182386865,12594.1155392166,26426.0566194862,19428.3582126499,-43792.2597177757,37819.4745395866,10555.8864490749,30430.822905737,15030.3847828581,14688.7740624573,26568.3450619046,8584.27170913216,-34315.1466691354,2430.46702478925,15863.5671377357,34317.044873333,11824.7446064255,-36226.4764946934,12515.1003543258,13538.5338739651,4617.88942111969,2351.37254609254,10907.1336026234,5893.34422797977,15375.2852318219,52133.9745647904,9531.57130126706,67265.9547841882,12420.6083748634,60205.4067105623,17457.8621483499,56096.9137628523,10457.7743504615,64004.5913380512,14493.7922145379,-12641.1352229308,21176.8954981499,8737.02193260317,-9706.51002410819,1651.08010605957,13830.722746721,59123.9005470613,18042.9594464206,11947.6944283619,1953.91415499816,12639.7264327351,4321.37185024729,2625.17173761134,17747.4188953909,10701.8831610791,50999.2977745234,14462.1915759843,20340.2666746646,3235.34305687357,6025.11496942384,906.292996267408,57993.2588859561,15453.7006728091,-12364.7499724331,949.558555317449,63365.246035945,13940.6623722604,-39205.4094193091,16004.9503913769,8788.54908651755,15947.455479459,-49650.7618808791,1104.46355716682,13067.3764087829,1439.06215006147,12092.9198662217,40134.2961621919,12868.2542486284,19311.5096084766,3970.2636291402,2940.29349491174,-1487.21464602798,-37002.6695041894,19519.5656683258,13845.3555718341,-11452.1518199222,41227.3681984733,6007.88380048461,1408.12165941693,1033.81853291253,24664.4189695328,14002.5982346781,18779.4335073419,1661.3902751817,13620.3079142952,12392.2319170663,8749.62852279568,-25262.9085643765,856.365200385522,39479.5810893628,-13275.1739645612,12290.1860820752,-43333.7875149851,13111.7469789726,22197.5393354863,3598.56182588797,3269.65826544463,-18750.8042505026,150.196130218347,-11960.3272935595,13748.3138576067,-43255.3680447134,31572.0305936208,5911.99696248473,2341.58554254091,2046.23820787466,-8699.21991362875,13534.8781129571,2679.00101569202,16434.044553553,-4559.85398824947,13710.3618550656,9794.4794539422,8635.50212003913,10359.8826218023,829.620257746098,17753.9204303107,59219.9669493961,12505.9690962528,23844.7305939895,3243.53170025644,3586.91550696583,37300.6545638318,-43443.954807815,23094.051624293,5753.99610055985,3239.37807687225,11147.3141223841,-42068.9368721443,6868.08259931085,46715.0121778772,-38329.8000040303,8459.89420824072,69234.2789472569,10617.4660713754,901.071146925039,-4812.29352431054,12678.6506134222,55648.2776321886,2936.24713292057,3871.47653914474,14178.8576687503,5552.7558862334,11327.3980365668,2216.33363768465,7056.4222860898,7627.17300908789,42349.2098088045,8227.58915329799,41655.3938130773,10874.075825436,990.738339962802,-26653.6906587696,22904.6834405109,6444.69252144586,4109.72977419103,5293.76589846753,5326.57251002617,11509.1416345059,7187.54940634596,45722.9387511062,7876.67083597667,827.854250711052,68514.9813772426,13239.7428409134,13958.5565929786,11113.4701629348,1092.87743669728,-40105.2311833009,-42747.6198406135,-9848.79562689099,6584.82559633171,44945.2020547059,-36916.1563122491,-13393.7601380154,53340.6278706765,-3209.17310519164,11706.7064637377,7254.71412287129,15725.8763150007,8062.06028394683,846.435611390628,-39304.0486023923,13366.6715758969,-13869.8773102676,11319.037379142,1241.84001632188,21087.5055284485,-6086.20419198054,-41708.4229961049,-10307.1081136289,-42623.9806199517,6631.95258848445,31295.8457828279,9216.70270412921,-43962.7967709706,4577.54286723304,11908.2113292179,18181.3898641559,7247.55924699032,-14280.065823926,8179.37569136232,947.110074284632,14277.3610465795,-5342.27501990087,24749.2076779573,13355.4429730324,-41082.5609437392,11473.0946925706,28058.140976384,-8084.9733164084,22111.7131390771,6596.28476619037,18389.2675197265,-40755.0120480277,9440.66704745141,8755.59899987217,15504.4425503993,4426.06340970672,12076.6877865326,18844.9065734417,7153.705555302,-44283.1498270089,8217.44272298309,14271.4099757254,28811.1657085278,27239.0527939038,13276.5382829154,11557.9042094156,62070.7682102696,25545.8537438293,54512.5285746777,11753.5947350943,6491.06016911338,5029.41807702876,-6790.97021732947,9634.42376812089,8978.68628443016,8071.6607955686,12176.7775222361,6961.94963876378,8162.30362161612,822.812007656459,62798.526296754,3771.09167965295,13229.3598164322,11051.7387134885,64794.9984454126,-42004.112483301,9855.86096925803,6329.5573804804,-7367.53057263364,27249.5493448792,9782.29520001916,9157.52939034196,4499.05520198833,-3724.81699065834,4128.43435401073,13327.898800429,11088.7791692124,40810.027656023,10007.224133396,56900.7951213925,6123.03094605582,61190.7698776958,9865.50954369434,9282.78904310479,30333.8449666972,4743.99339603614,-37118.7400688049,7505.12681654867,4504.35804256295,13636.759640228,16548.4292765907,24230.1591635151,1622.87112829735,9337.6948863931,36938.9839688485,16357.5393951045,6583.44252955878,7728.36155852773,4856.46688266261,69260.1436174759,36158.3147118818,-7951.3320721427,15353.0202561694,49341.5290428321,1863.84491159699,9306.92422444212,14972.156117076,10852.5671611034,5143.93171651824,29689.4270192202,-31196.707218436,22921.8686153099,9252.92772357885,13989.8770342781,15835.8871141431,13153.3263391453,5338.03706853286,13715.8886060142,9758.82553227205,-40841.4218528338,9994.7649350099,-42856.9454049346,13707.6668609245,22168.6459822212,15323.6341140629,13447.1986375775,5424.57142415546,9575.92493745465,10243.5744918353,48831.4834922048,28786.1683673236,-11267.0315255398,10483.9672433671,17993.3779312524,34547.0930934638,-36961.1566624781,10694.6403327698,16070.5177665512,4929.69164037644,-9270.89748046456,62332.5448351097,-22480.3227734093,10073.8232523311,10857.509967279,5022.80239999487,23813.5000548631,31203.3843283843,10251.7019714494,3830.43369063336,11930.1334446593,51398.2730823411,16775.1211084066,16656.0783979863,12684.9230204205,-7434.92369204151,10372.2355298038,3203.42545935986,948.9399183952,38901.1027305019,3994.65670870628,1701.43755750933,7672.10937054265,3798.09892406417,22070.5761820081,3252.81420381211,1329.22870348225,2738.8102822142,-12558.6739713291,11853.8256647891,-12163.2118345661,5133.25376895352,4110.43303693865,2218.95835547255,-10078.8117012079,12872.513672617,-26772.2697650137,12224.9294443846,1962.79479370678,42126.6097336002,20324.8523929898,5345.31712516723,7724.95728582888,1154.69968338019,7546.52006664613,2623.08859509126,40309.7568029963,9887.13153442152,1011.56689955821,3537.39890688377,2913.70280531639,5447.94796492137,3021.31483843884,1984.21340867601,15579.6626382937,13640.1910666688,-17494.9642352049,11535.3353253124,5512.33498242549,29684.8572345286,11187.1442255926,5658.26981287411,-25255.0573636106,12189.4992261892,54092.7305262172,1501.57047407927,7356.14778629775,19543.4885674586,-3292.20996205381,11723.691042869,1825.44294930879,1302.80754893029,7755.37198668019,1203.58093030957,-55630.5218463685,801.476947786064,54410.2124371533],"Archive703_field9":[-5.20459999651734e-18,993405.945492768,993395.256319343,0,1.0486337543909e-17,-4.00664891804655e-17,1.84608617109729e-16,-9.30410766961411e-16,4.76319226519169e-15,-2.37440231251345e-14,1.13728054353133e-13,-5.23352710244469e-13,2.32548349918029e-12,-1.00273253536675e-11,4.21725797018402e-11,-1.737106167878e-10,7.0326963869737e-10,-2.80632712774054e-09,1.10656767197945e-08,-4.32257114728735e-08,1.67771861642518e-07,-6.49367168069131e-07,2.5160997002277e-06,-9.78873794857551e-06,3.83129736599626e-05,-0.000151118558353178,0.00060134907357095,-0.00241672649685971,0.00981793508176571,-0.0403287704656719,0.167511156183948,-0.703538742539948,2.9885735447067,-12.8210093617923,55.2815950057296,-243.960485452152,1005.60707126628,15193.9654037674,31342.2481084776,46575.3738124167,62571.3111825596,80667.1431046662,100934.276442794,123353.960686198,147760.497526943,173859.224264931,201398.137019691,230191.021488675,260054.551005616,290793.486510442,322251.795326661,354302.499506411,386816.807058639,419691.484382478,452848.290765152,486221.360751353,519747.828307196,553390.784993591,587112.320258405,620889.4049448,654702.701074663,688540.250595027,722394.178977522,756258.79155065,790130.711148045,824007.200871796,857886.214053376,891766.306643866,925646.298936636,959525.882890996,993405.47919354,993402.793934868,993397.648210892,959495.690354389,925599.112025699,891700.21944283,857798.943839656,823895.832221149,789991.471134066,756086.463769792,722181.902346425,688279.363329369,654382.717909118,620498.370787497,586637.784687213,552816.642693302,519056.883317629,485390.98179107,451860.290517545,418517.010860562,385431.657679355,352687.928888485,320389.448104323,288657.855158306,257625.792547374,227450.823836941,198305.743811885,170381.118083754,143897.216554459,119089.98208945,96194.0855381561,75536.1393832327,57347.8552776442,41616.7329792513,28174.2210456857,16971.9159310631,8130.30215105681,1618.11062653603,-2771.00224754736,-5325.78166573897,-6402.20623219808,-6494.9083137931,-6107.58875116107,-5593.50273143657,-5070.06945440903,-4596.43116705038,-4202.13471580514,-3901.29057170959,-3695.37641975909,-3580.5351803643,-3548.96812600508,-3594.7075212761,-3710.21491083552,-3887.1106874534,-4115.107255425,-4380.92254659809,-4667.41420404632,-4956.19298585058,-5224.56766795999,-5450.63102401184,-5614.9426285546,-5702.28200418496,-5704.98471537633,-5616.36662649387,-5430.22851305021,-5135.59105268819,-4707.86083108708,-4129.18678350581,-3072.38000812902,0,0,0,0,0,0,0,0,749436.321946937,167297.925527633,-1413.35481660208,438419.78142033,-4785.41495899889,762891.535137478,68554.217390197,-2532.57344856707,287417.576189638,-2738.43219799699,209725.481140125,-7697.68064304604,-3819.55979730264,145014.06578937,-3274.85879116136,-8197.32367344759,42887.6434090719,-1117.41637044033,823922.741204846,-2428.37109557287,-8584.30309497907,-4277.20849133687,-1245.60300273239,-801.450536117072,-5174.31342617421,-4461.26989632503,681687.563625276,-2906.31522753632,169860.657956997,-704.154872625124,445533.805954143,-6289.76450265274,73291.8709769173,-3095.71751210481,288676.932919123,-3760.33139665209,204744.275628264,-9242.97461238018,-3272.81657739827,147754.404049486,-2130.23414455037,-8060.81377607329,90712.0893280581,37642.7410014736,-1609.73734959979,823949.704059208,-2808.19509381343,-3646.96594052012,-1902.20574929831,56362.7162024082,-403.916422953047,715558.779402412,-5179.83657383716,674845.582935319,1316.47487425811,-4617.03959868665,-625.205865460124,512657.455598252,-7028.88292337942,756145.897894267,-887.080872696035,314116.968121513,-4448.64274338256,200959.923375557,-9370.61985965121,-2735.45649046392,152257.715697482,948201.629444332,-1052.60298636809,-7466.2148138469,35428.502140884,-2030.83661275338,823977.751536393,-3126.90875020109,-8039.8385159653,-2954.61164885648,-2573.09211793381,53446.1794008046,900189.686119289,708729.984928055,-5506.3546938123,668014.798038893,21841.6763915794,-3994.2125291748,-1868.59355559134,-1237.29056437365,505666.761125319,-7134.33069366788,756179.166338462,-2446.701539141,-4828.11759588431,-8390.40351998658,-2203.06624251258,970804.07653269,-334.665238567748,90439.7652247351,37235.5097459441,-2397.01438765552,722215.449227014,-3474.55043261165,-6086.63671215254,-2218.58704350728,-3246.00285572045,54041.0584082474,908676.911497412,701907.947658865,-5590.35141461772,661193.960486506,14649.9808370481,-3296.0767227992,-3317.77389344039,-3010.9257697634,498792.884920051,-6873.49769447461,-3821.77029023048,844290.601106178,299868.647898232,-4992.1146729582,-6277.98055876335,-1671.28482879191,-365.384081014769,-147.926258356236,88758.5584552615,485755.779206526,-2767.37079533461,-3229.98182617875,-1463.35982789692,-3896.09097538707,917162.528345797,695091.570020491,10611.8288406926,-2529.84754571916,-4394.14002578732,-474.496849870397,492011.501317335,-746.184892694073,851088.746308,293779.453509241,-1133.65225611565,252626.224892857,-739.272148216219,-259.563284893647,88935.9404031715,-3193.69245550079,580158.352927075,-714.748455154161,-4490.45822170612,9105.15405284709,-1709.62684344652,-932.387308090298,-619.265012108624,-1482.30832874845,-658.250909862945,195904.849693745,-579.824426389413,245964.742737319,-1121.82826475319,-327.071647136904,91472.7783626786,573248.437778623,-4969.46851912075,-5006.48576902712,9567.72666991988,-856.824843874624,-1353.35194467886,-2197.1417130898,884974.548042205,-1288.30751042399,-62.5504676210508,198047.28614442,-859.470416502803,240083.141209402,-1521.32200086373,-335.730897421154,358570.729747843,620530.145310449,566387.813114746,-4415.65819094472,35412.677760237,925614.257273437,803595.269403067,654602.486190449,12077.1979404379,-1739.51768484345,-2883.20915468558,878181.611461832,-1891.16509355723,-56.2045889433899,325932.274804719,-1719.52143705371,234925.278398036,-1952.64231096973,-237.942404195631,-2636.97133475736,365039.51054076,458368.123973166,620581.021113768,559568.926345359,-3796.24860423347,26602.920736954,-434.693341668715,796792.885270006,-5219.29828597729,-2123.52591728208,-4144.85569568255,-3534.93953797571,871388.158157408,-2472.37243828379,-131.36822498462,-2372.9352272843,332236.305933227,-7173.910541153,-2512.08109910693,230719.148679358,-2428.18706839343,371868.999505707,465108.706897309,620652.395960572,-3117.64038095181,21757.4143303911,391580.993528059,-860.016743215681,-503.263493168141,-1468.33382379748,-4737.04011108748,-2545.40976404334,-2165.5374437139,-4146.59745675681,864594.084181932,-3037.03983405515,-1202.2961951187,339026.94094998,-3900.57067924578,-3183.65252187387,-2957.96032305303,379159.45512112,471983.657492381,620753.350207272,-578.486193586915,-2386.49342431648,20564.5245729409,398171.690107336,-1294.74133759397,-986.864558996582,-4095.00458997238,-3027.64729077687,-4712.30519383267,-3589.00795328347,-79.2936201767657,346425.124937139,-862.172671395084,-3700.72376610587,-2989.8264377083,138668.337280991,519006.996652667,-3271.58001072485,-1612.36748568286,23032.3611752118,405026.697800655,-1749.16117754502,-1467.36520122392,-877.429430412493,268048.01716378,-1740.11607455436,-4070.5133114877,-2443.75892521201,131224.427463459,-2697.42551283596,553136.392492014,-809.925644234401,412221.757605578,-2229.76591667056,-1956.40997585201,6420.01981419946,-1756.74810075756,262255.503628515,-4412.07765515655,-2593.78094736266,-4332.40222136481,125554.465713539,970819.277953502,-481.39318042678,-2460.53409684974,8372.15999273925,-5276.58540717337,-3194.34432112216,-3837.24074623364,-3390.079878576,227416.116179268,-1001.98854298896,121375.491458526,1747.39918297406,948233.209022342,-1028.69947088499,-2984.76174376568,-6005.52359791957,-6177.61172872825,-4105.99238151575,-1502.70393464902,119260.706765417,776.716040729612,-3506.15238659689,-6241.19502757931,-7369.13033886159,-3627.62340597013,-4732.20152300174,-3144.3816662119,-791.126523726615,418199.953151326,-356.398826208916,593423.260546758,-6192.79799186089,-7525.30838381792,180382.181035412,-3879.58712050556,-5265.42911126306,-390.277254124363,-722.198778129473,790098.726720825,-6532.81309875273,175621.739490647,-1105.6887590004,790069.355540523,-4466.01281190599,172324.551282242,-1515.64209022039,-9222.48826958757,-4726.51916135092,532562.715421215,113745.761871654,70005.1771612398,-1168.82775971985,-1961.37307799621,-5265.95164976905,539431.305606251,-4490.36200310581,-1597.00123589975,-4910.01063308586,-7507.52744276376,54519.3373727762,-1752.3159341899,-3449.40825585262,-2075.76667379986,431551.290672617,-2058.47290089302,-4211.1768908209,-445.496736787979,600388.15837021,3530.35524367796,-1281.3603038719,-2376.54904288798,-3495.41925588153,263531.183453605,-2443.33397277996,-674.351556634828,-3048.19925506317,939741.748276443,-2718.21397504624,729026.784298688,-2591.77216117352,-4138.18931261904,-1947.61270260391,593477.765985211,-3003.70416994114,640885.096223565,-1542.01676484781,-2089.25828950379,220600.655582707,-8928.3947350072,644327.784400326,-2999.58966237927,-687.966312859418,-1727.84825543571,-2610.58321411947,110156.221167672,-557.687541798805,-701.825471536612,-4384.40962358472,-1725.65367208525,104496.268370802,-3684.5591697785,-2401.15712708719,-3633.85216739177,-3796.41239822957,103625.331414084,-1804.74479713919,-3733.24428448295,313059.439372744,-1206.08508956229,-4394.59572716142,847655.897946075,939749.282504261,152433.071544529,-1636.9620445677,-1053.56062714348,-6353.98737902253,70361.8491206632,-2236.22439900304,-1668.01552826824,-1100.62227924155,-3426.47838839771,-1654.55047774549,976446.532677658,-2.70971385149557,976465.947461007],"Archive703_field10":[800,996015.535850338,996133.768711237,800,805.928413397833,879.803892321102,1091.39321862175,1474.36707271877,2022.51695679278,2701.47894746786,3467.10822204906,4275.10437713889,5090.00208215805,5880.8791760509,6627.34791616661,7314.56355009826,7934.80715450791,8484.08975851856,8963.90800601026,9382.40153394543,9757.60966763787,10119.68739281,10506.4758941725,10952.3768140099,11486.2955929775,12139.6001311895,12943.9157801306,13938.5946481362,15172.7427087805,16699.8038932002,18586.2844044232,20916.5143602172,23807.7140796071,27367.0801758272,31616.7033365373,37389.0935076158,41305.0064423444,49462.8252890677,61354.9666319202,75438.5707436839,91320.7421944693,109186.856457161,128638.133364846,149728.080089512,172445.773049934,196717.148685595,222407.688061827,249389.301637563,277523.520814765,306649.907455478,336617.168578628,367304.415908495,398585.59658778,430348.374904534,462505.799776091,494985.161891834,527714.021220439,560643.928865693,593730.797785174,626942.200801255,660250.579253395,693637.023228467,727087.799942071,760590.760398302,794137.241415944,827720.662638027,861334.742339213,894974.409779016,928635.905412515,962316.619712701,994042.652978104,993403.182479572,994099.196249578,962338.962028495,928555.607647949,894778.756406852,861009.355200736,827249.100586239,793500.002053363,759764.335786371,726045.229789458,692346.480560891,658674.293826287,625037.587092006,591450.381057639,557931.20893554,524504.701888861,491205.762107675,458077.71913795,425174.355697164,392566.45554431,360335.307993451,328580.868871138,297418.793127602,266969.335524627,237374.760052474,208785.999066381,181354.5993304,155246.481356121,130641.854555033,107646.824732121,86448.9563242301,67176.1367642349,49770.8441456078,34075.4777320378,20209.3632604227,8814.87481305639,3251.72139299817,8026.47259937547,12071.0744208633,14347.7095087721,15255.9875043576,15379.8946350851,15240.7736122489,15054.889275547,14763.2781562607,14356.2686421048,13855.2116478711,13292.8259728698,12696.4407677145,12087.0512020589,11483.6698342015,10899.4959101339,10349.6231302493,9847.87727424082,9404.65474955108,9028.05672245157,8720.72870600877,8471.01493610326,8262.20224241381,8066.59934200695,7858.03627731708,7611.5860693383,7307.47006029257,6927.55821826063,6451.71991495,5848.37499190863,5095.29280402674,3829.41691695545,800,800,800,800,800,800,800,800,751094.796573922,172515.277813241,12673.1731643164,439215.48379936,20009.0304404999,764147.404887045,78294.2742250851,10855.4441179599,289024.044130323,15277.8099747247,210239.238780288,27661.0058857366,9395.67761374226,149018.819508437,4078.21898144702,17856.3399872626,54927.3112943102,11877.4241463424,824718.764836673,12748.5184651653,16030.66308931,6294.3955376234,2660.91707704951,10936.539049778,7842.51398607291,16009.4448700676,683678.203327623,9964.81408120329,182694.695584224,12440.5524992408,449583.21059084,18556.3490021507,92296.0567143255,10906.3518776868,295687.266063223,14973.64701637,205134.143189931,23106.1351728208,9329.8917785836,148072.888311355,2695.174025408,16008.2981740471,108278.893447248,41743.5544208828,12055.6483230147,823952.020811759,12947.9204499912,5654.61008730252,3241.89965369332,59090.8339352364,10709.5028675527,717373.887978482,15361.8258065938,675152.047509083,3492.92868381433,7590.72230098137,1101.02196585222,515927.208874166,16977.1039825806,756246.987395128,1299.45139373496,320444.416501595,14633.2665401682,204748.516309266,18546.3460979387,9204.41835518951,153090.604955642,949500.673109945,1525.71714155036,15049.939862183,35457.716562384,12262.2595078786,824954.602845153,13242.7159502659,20918.2553460149,4949.01235403913,3907.18938414731,53466.8673100113,900949.870162586,708998.734117347,14900.1279499402,668112.956153561,46655.7040046227,7214.45780972779,2339.75393657465,1612.3488145192,506267.920048343,15715.324742697,756412.3205813,2957.45939415966,14450.7268744482,14965.5031026211,9022.72132761609,971132.724997784,919.435793482581,98681.2467335956,39531.1703574491,12521.7551448134,723514.32068935,13564.3064529433,23016.904635858,4227.50229856313,4607.29852648335,57201.649048994,908676.923910448,702009.840682913,14841.4339895503,662607.334888858,34805.3882944926,6768.73916228181,4060.86769804573,3640.43469854788,498868.738721894,15180.1810295053,4667.22343512363,844450.52959698,299903.314854484,14590.9297546387,11633.7813143409,8795.74271134338,10366.3240092224,842.70513821501,90516.7575076675,489352.308176867,12808.4973418157,24062.5011105949,3558.35915507006,5295.79906554285,917920.716746575,696447.893185768,25415.4703235975,6285.58666552608,5459.12418718852,11157.4082744892,493806.756614458,6908.49842476941,852369.841356968,296269.37214727,8535.5127234643,261941.586780265,10643.1719466489,937.711208574146,89066.041027771,13074.7027835265,582821.10915313,3021.98818325444,5928.95822502033,16850.6330776252,5809.98467088619,11365.7068575212,2301.2222727834,7210.43226589792,7655.52495723802,200429.952115343,8247.99488608622,249467.085010344,10931.7895933342,1043.33039859533,95276.9038493647,573705.844435231,8138.16189679908,6477.25084988557,10934.5942319811,5395.04620162304,11588.4383179651,7515.86975512904,886154.917500626,7981.33320315224,830.213961229254,209563.904865065,13267.6101800724,240488.577681214,11217.1136970593,1143.28313515298,360806.593343535,622000.820128916,566473.435935177,7928.30154530984,57220.004665228,926350.125959255,803706.880533956,656772.135149137,12496.299536727,11835.2396682113,7806.64921936748,878322.404300138,8280.90100370015,848.299593332758,328293.551560061,13476.8194686423,235334.357727461,11486.2273695502,1264.42999563152,21251.7412753092,365090.243826515,460261.805523228,620666.609577374,561189.974122122,7641.6162296369,41074.8749845841,9226.94787227032,798004.780384696,6942.25995619306,12096.067930641,18647.8622402264,8063.67860072429,871505.159168261,8544.87051827201,956.177338858776,14473.2118082778,332279.254366782,25767.9699072148,13589.6434263159,234348.250219676,11727.2330182275,372926.01420178,465178.9720368,621046.153252352,7295.93409109597,28487.720832955,393696.13345759,9479.75859921792,8770.05062642847,15573.8159426886,6483.0229307628,12342.021664228,18968.9234323372,8268.60167382254,865727.398065346,8760.70635617617,14321.9642101225,340248.952914458,27516.9120493719,13652.915884812,11930.4098415261,384206.549493834,472674.47951353,623142.309240158,11767.8220360867,6915.86675575492,21170.6097480595,398229.597191651,9721.03268562591,9032.75755525509,9051.00936860713,12547.5319861471,8406.81646121202,8916.51156563931,826.623903685582,352071.046939047,3868.39426269457,13737.2237932434,11449.0170197637,153059.790891715,520703.954315628,10384.6632690674,6531.69392590324,24182.0215872059,405942.315940087,9937.44756994212,9274.34661681025,4583.81719922296,268073.896094058,4480.17568498139,13935.6365141129,11354.865967862,137423.828793983,10364.3928550264,556055.365215125,6176.36523495378,416738.632432436,10114.3529006986,9486.71241328626,31005.786635374,5058.81777010695,264869.307485298,8705.93807510769,5197.78231349708,14308.421383683,126640.334696867,971121.604671242,1692.76403944039,9656.4369118807,37875.8709417337,17187.5375962233,7317.48257134164,8628.55659562391,5922.66090245969,237728.957832182,36172.195175905,121635.659280164,15452.1401395084,949516.090006427,2128.88244294631,9773.82428666255,16131.7008551257,12487.6379134399,6581.73282208171,29727.4317061668,123273.479384089,22935.0244958547,9894.9368879146,15318.9155884645,17466.5223396936,13644.3997801148,7133.6085538338,14071.6998374539,9790.8404616697,420189.50790653,10001.1172490591,594968.80920548,15041.6381334642,23411.0899138979,181031.889449218,13995.6545907671,7559.80944611043,9583.87472491439,10269.0013849892,791606.285817589,29518.1492687996,175982.787172832,10542.1115907475,790274.223427282,34834.5648981663,176243.802944825,10801.504654119,18528.7838556047,6829.48336639125,532643.403598422,129705.221519351,73526.1160498312,10141.4039092769,11033.245535229,7277.27907442744,539956.679978059,31524.8242574609,10375.3460789934,6227.39324881249,14095.7813657573,74927.5691812666,16866.3955644033,17009.5080738806,12853.6407028535,431615.331715068,10574.5250753608,5291.11949207905,1048.31021706965,601647.102963873,5331.1059234437,2129.97042008616,8031.76490858766,5161.73529071036,264453.767198471,4068.25283716026,1490.50292455161,4097.87755558044,939825.661357245,12161.4912780197,729128.24382753,5750.44147800059,5832.68982016283,2952.45176466366,593563.342166703,13218.3148317868,641444.043537594,12321.7983924123,2866.62931026367,224586.955300541,22199.4562397579,644349.956285714,8286.88742595996,1344.10900094736,7741.79725322906,3700.77539112281,117299.912853581,9902.84733666182,1231.18909383546,5633.49259108458,3386.37632783037,104638.187295324,4764.90499680419,3114.90905166287,15997.8364005106,14158.6566959109,105091.784094999,11675.6612168306,6657.548335994,314463.675691504,11251.9703682277,7164.39033557412,848032.039044048,939828.334249749,161746.29762774,2221.34162703127,7431.2112235436,20550.4525740715,70438.8277735598,11935.0589119343,2472.75509578388,1705.48436261158,8478.59356249257,2046.00692550457,978029.951555228,801.481528409496,977980.683739908],"Archive703_field11":[9976371.93208066,5852229.61858117,-166680.065302443,-2852223.29896708,10022200.7813265,10025779.3865707,10044964.753976,10073275.1074028,10103641.2815145,10136107.6763974,10162094.6885798,10178028.4520595,10184578.89488,10178688.8680572,10163905.1092335,10141733.0435319,10115846.7027657,10090337.6936629,10072129.6994797,10070066.8199235,10089982.9101529,10125588.0239056,10146847.1704164,10132503.4747279,10078796.981939,9986880.72179295,9857987.37108875,9690906.72817751,9482413.19001052,9225010.88772168,8911669.62604343,8528986.00439542,8070077.40550663,7534528.11557625,6841343.75267868,6202755.8828052,1929747.95106087,4868099.64137319,7147516.84431896,6464538.82505465,6245037.67392869,6147061.91616572,6082932.04807908,6041683.87315737,6018777.15188898,5993667.19591146,5967081.12188722,5956586.47658951,5958419.03351592,5942978.89483794,5939200.86641324,5953052.63186942,5957451.52508774,5963200.87954389,5975060.36226161,5985928.19984356,5993923.59291197,6000850.06178868,6007995.15628354,6010827.33564191,6004796.62024078,6001515.08765025,5988862.29878109,5971166.11308669,5953217.69515627,5934368.4598967,5924963.97750885,5938723.74459355,5956657.63414278,5984366.81595252,4370170.93589661,2803825.25689462,1146256.18135218,-175797.547876617,-218658.729128631,-200458.552635676,-193829.351070262,-176863.855785059,-127933.594563711,-29802.5970214151,108719.166604675,211286.910342625,287096.577681069,355627.535600375,430983.267916276,506223.54930212,588792.202746932,675111.749690329,767168.820553028,861691.933363539,958329.604586914,1060893.60957522,1159712.17516667,1270924.66165622,1387228.86895195,1491308.99423354,1590650.60416755,1695146.98048811,1784545.70220392,1884784.30818114,1994575.91741712,2088596.62258985,2143362.50527506,2165469.42745896,2201965.88629835,2222196.14394196,2141368.02768875,1975032.94685863,1775216.19473459,1565524.10821837,1319379.71588455,969615.55240487,452072.957195228,-105345.738279876,-541327.56386685,-704793.943665539,-801555.98004409,-864411.000144557,-900129.697520718,-922125.067508496,-934521.082951791,-938311.72022886,-938454.491146946,-933289.051779759,-924930.672363214,-912951.72509227,-892690.913280494,-868141.488563058,-840493.959372266,-815091.80282893,-794970.357628252,-778381.92761632,-773419.513433901,-778395.640911139,-793330.025770279,-816004.535323243,-841769.21652841,-956427.916092955,-515521.896862615,-1323594.22117618,311665.535781246,1675041.94730775,3030532.80883617,4370028.38534619,5721586.33992473,7100649.10378747,8542613.09880532,4764779.8990368,3898908.97941482,7366724.5937764,3537649.65229299,5913246.09576851,1181793.1500787,4000264.21915933,1810412.56365216,3465270.26889974,6650939.56934834,3166564.87103243,4641289.71625644,480082.418313543,2763666.26361815,1718478.23341079,3584870.75347935,3952635.34411833,7417774.49041529,1408342.43141997,4736679.53769466,2861970.91031124,2851907.68982988,7589822.14012631,7417970.11647121,574476.369158733,5151906.26478638,4782746.35737087,4128106.8702645,4914924.09497479,8671910.89810544,4739074.03610806,4755569.75198156,5031295.60265323,430139.27079495,4704065.51698826,5298971.59759552,3542482.09768408,3941082.72915495,1881928.40324331,3806078.85671316,2411976.73454235,2712138.48770632,4974140.27954774,3442533.36026074,6075347.32798116,2967986.79661603,3370424.77502995,4047035.75711756,6380923.35283678,3395500.72170413,8796631.73994478,4774691.02645865,3878696.64564171,3584142.25918014,3208420.02576398,1925793.80976366,2378120.67379228,4759450.51477038,3670537.78669939,2401179.6320648,1143008.81967311,4720221.36178435,3957219.0051341,2561906.55966375,3456749.02393004,3281182.30719447,3223354.92092214,789980.120477658,3064164.66357917,2134628.352453,4357192.00732118,4696809.17983996,4455387.95245133,1907768.48191649,4449951.50957038,5238989.78911828,5188941.55604946,4225772.06316414,1304111.90007012,3578859.69021872,2618852.60260239,2418224.39500099,5129444.10383788,3287900.75238063,1709629.24261246,-19886.6283182331,3571724.27217584,2592118.95842237,3588287.45337178,703885.013699272,2615949.41556455,3352258.81467675,4671129.49968906,1733102.56951015,3750119.55583284,4001045.49067099,3252803.23064447,3267262.14625156,1222705.05128848,493236.544873052,5479238.49974706,6437201.78953666,4009108.16251623,3134761.67818665,2832647.66262184,2407865.38936041,1309775.08170678,1355098.65114992,3932963.12022323,4653902.47975779,1021707.11722707,-288192.953560631,2627514.85231406,1712457.15509731,47218.5096311404,3542210.90716607,3206593.11524239,1206971.21874782,2805884.18255571,6046984.16145331,8786645.09549801,5511826.83393879,3276130.66231287,4763044.2076304,1836416.63341418,6693433.46447538,7649723.0075192,2824919.81667546,4361417.96381912,1253963.08739844,2853548.04162104,6023061.93219377,141797.146339745,8791873.71088592,1882135.01309763,8783898.75585269,4736756.48522947,2495049.36578371,7408598.04293388,4884600.69870535,7412000.74337255,6492363.45191151,4092672.50321048,450975.498182818,4777485.38215777,8880594.8992067,1629763.43659641,4866739.13948957,7399207.63362256,7433771.95094048,8842306.52120403,7408904.2656084,8777828.93819114,3893803.76775097,8762052.31972273,3924199.12096063,6013142.41089624,7425532.59278767,2995403.07898675,3588902.20807238,548057.581546602,422884.593791549,4167824.08593173,8785840.12298672,6050771.25372909,6037045.06594753,4722250.08482415,7416588.19092014,8009737.91603747,4912600.43853185,8555010.59448372,3097286.52383328,4607024.20606213,8305296.70820443,2281647.09146203,1494982.08814938,2506819.92284417,1919377.16399555,5149732.17366963,1307975.37594708,2361240.95966511,4790093.52395975,3269603.1539089,4634154.71463381,4664601.24837603,3504891.63265939,6052729.989346,9026835.87894752,2387341.13147811,7273290.00643106,3442540.14759503,3205322.05947342,9173584.61344738,7117233.93471506,3004138.25083661,1978580.82847061,2446433.16550952,1676853.49626223,3290514.25280342,3715679.13852671,8739178.89754403,1130003.5107915,434134.962022873,3205483.76363899,6147628.34119772,3288354.89825467,2266305.84972216,4679646.31419428,9043698.78373338,6783097.76443345,3124099.58420607,5043047.53701013,6006753.11605838,2450092.02149722,1812580.17257508,3497723.12937483,2713229.27623456,3607143.46335512,4661550.71716162,3517130.13237714,2184368.57324444,7392086.77233535,8747515.36995273,8023807.20519829,1639786.32144755,1805407.6015303,7483786.73064686,1909257.95466693,1022727.77620554,3294521.02903527,8215888.10559435,3478361.07587082,6206304.25887398,4744538.30620148,432208.891529001,4718625.25677303,3556857.22848956,4791371.96919343,8753106.09632605,6033211.84485958,4432176.45379306,2896564.44082961,6024486.42114796,7399638.36082134,488012.042620081,429497.019109495,530239.304536124,1898539.00708477,6980600.33068943,4707256.3086926,8757610.24789653,3492673.37635401,424024.70776264,4912314.86145375,1808362.61621585,440232.486052638,7408481.83419542,3389135.83838567,3519092.20784154,4639541.69497342,6036867.08334847,8771619.83771234,3367278.82722031,7375124.04772255,2197449.81613951,1798525.05445523,3914517.23110328,1825383.96270909,4781708.8323804,8789470.17682356,4729212.01748075,3244287.2866635,4657111.27004167,3484843.98929607,7381512.5181399,2564015.43818262,509763.144489145,6010034.96816422,726406.407726835,3255234.90435161,3808415.19086639,8801712.85980906,3263694.7007283,4745367.33725951,4963448.59461602,3075222.65688797,1895317.80731689,4654340.16576903,4898774.66833075,3450539.2249047,3872296.8670465,4899665.26374585,4837553.02128075,7570142.78817717,1863208.71527623,3775365.13050585,3855305.20627849,3301396.89924645,3899674.61721546,2897031.43625099,3769963.99158591,453011.788590249,2585969.34831933,3708195.99155774,2070268.57207342,1946410.82331837,5400468.44553922,7373620.31636329,2110968.73842619,8759521.29527688,1566195.31058501,1408916.0513074,3758547.20623943,3196481.71407266,568400.408848512,585743.547478391,8731226.67218804,7391599.09929044,4760398.94825622,4158824.74469523,3668247.9662659,6004737.13450168,3580432.95110412,4670280.77034776,2660404.43706775,4608145.20013316,3473986.3542541,1936944.18986919,2562894.96331441,4963347.71858822,3086438.53233919,6012126.53703803,3209948.01804275,585157.647596068,3585068.90843596,5455204.91393283,4622276.48912474,82781.0278608951,2515024.2389439,5076517.54892353,7811634.97136951,6415149.11596994,6067711.15960351,2810000.33639528,3226126.59111102,939198.617556069,5337656.50766132,4187592.47483488,3711490.39821851,6310414.41120379,5356834.27379899,4031676.45597527,3201467.89165977,5807744.04631774,7507386.75092764,3526600.156547,2286953.00172827,1111491.32500917,2402803.43180764,6017295.73255508,2842338.42387034,5548641.49467628,2472514.60480958,4108078.90531954,1896243.52422425,6733416.60871926,4240004.64482904,3896149.00512074,4221942.37039861,3020318.64314249,3980842.29010419,6200773.40726942,6726101.5402324,4530412.31088449,3764258.1935847,8059822.1827116,4192692.93158874,1283200.11352451,7008703.24859672,3795860.48850171,2295406.35898153,3155444.37670622,4200361.88149903,4357702.61153299,3462086.72868772,3900256.53739532,3970995.62585961,3424945.06162991,6030070.90063723,2610671.05810476,1841537.66037681,3300133.29225469,4427539.66780037,3691495.27203045,8093256.97265158,5169371.37308331,4168481.62211752,2496477.80112018,5269445.86330296,4929219.30085977,2941084.19446224,-902185.476440204,516851.571754902,9328198.29698447,5102442.42575454],"Archive703_field12":[-909.090909090909,-582.238142109814,-582.238857602667,-909.09090909091,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-899.663089332098,-882.313571723619,-864.993397399729,-848.152884122734,-833.722516605236,-819.283476818044,-804.832986995175,-792.156117123614,-779.893418434169,-767.62376920576,-756.11509020504,-745.52932955386,-734.941161401166,-724.481196539631,-715.221312597757,-705.962304112454,-696.700760874428,-688.23934177265,-680.051258933447,-671.862303506989,-664.02052995449,-656.710760899779,-649.401458712763,-642.125099547644,-635.546291706955,-628.968895418534,-622.390872044342,-616.241622098911,-610.279972313186,-604.318400946172,-598.538890007909,-593.10254280607,-587.662348747079,-582.238167824802,-582.238352539108,-582.238536991426,-587.663693327223,-593.090816194227,-598.61154661699,-604.306277418735,-610.249497706895,-616.273006964169,-622.462072603601,-628.970382329632,-635.55297290556,-642.280633596332,-649.375520143657,-656.73793910595,-664.188842037894,-671.952488797702,-680.069513934246,-688.39566408691,-696.928145472092,-705.997557382618,-715.356203186268,-724.865802240837,-735.05789977699,-745.733747011153,-756.541264599411,-767.992916019302,-780.190488746669,-792.647771369027,-805.574852308051,-819.634950412254,-834.392512523072,-849.481678643585,-865.972198713779,-884.069706691718,-899.952709531516,-907.919721404356,-910.495959751333,-909.02516414196,-909.07858099829,-909.094125339057,-909.092720284563,-909.090856907787,-909.090858916051,-909.090912022157,-909.090909675554,-909.090908939083,-909.090909058795,-909.090909102155,-909.090909090835,-909.090909090912,-909.090909090913,-909.090909090915,-909.090909090915,-909.090909090913,-909.090909090912,-909.090909090908,-909.090909090907,-909.090909090911,-909.090909090905,-909.090909090906,-909.090909090908,-909.090909090915,-909.090909090915,-909.090909090913,-909.09090909091,-909.090909090908,-909.090909090911,-909.090909090912,-909.090909090911,-909.090909090911,-909.09090909091,-909.090909090911,-909.090909090911,-909.09090909091,-909.09090909091,-909.090909090909,-623.687953595523,-779.965487170441,-909.090909056776,-691.661795782951,-909.091970248114,-621.184366132346,-833.865840503737,-909.090909090914,-734.990933586386,-909.090911423856,-761.97132075079,-909.052468965286,-909.090909090912,-790.484341488655,-909.090909090909,-909.092740195314,-853.952149488252,-909.090909097437,-610.246391861078,-909.090909056289,-909.086576445831,-909.090909090915,-909.09090909091,-909.090909090906,-909.090909090906,-909.090858430031,-636.85626415861,-908.840817792584,-779.932949370334,-909.090909076914,-689.932303554588,-909.092754329375,-833.793207134868,-909.090909090914,-734.966084443576,-909.090911502389,-763.964849486335,-909.048368785816,-909.090909090911,-788.338468871816,-909.090909090912,-909.093405831722,-821.744378460245,-856.904230691725,-909.090909101788,-610.252605503754,-909.090909057695,-909.090909090914,-909.090909090911,-841.417579249221,-909.090909090908,-630.280029434831,-909.090858479238,-638.170871454143,-908.643296720689,-909.090909090906,-909.09090909091,-673.486972446664,-909.0927527631,-622.431939464364,-909.09090909091,-726.579108635349,-909.090911617123,-765.972045018861,-909.043588805456,-909.09090909091,-786.211970358667,-589.472251004466,-909.090909090912,-909.094065846301,-859.90033696992,-909.090909101866,-610.266366967189,-909.090909058029,-909.089488323097,-909.090909090913,-909.090909090911,-844.058870910908,-597.21573710302,-631.591365843445,-909.090858576263,-639.524010555311,-885.228635639111,-909.090909090906,-909.090909090913,-909.090909090911,-675.120242794398,-909.092745748869,-622.420284412636,-909.090909090913,-909.090911734939,-909.038471047531,-909.09090909091,-585.855958922612,-909.09090909091,-819.36545918985,-862.924448475439,-909.09090910194,-628.964346121164,-909.090909058407,-909.090843963747,-909.090909090913,-909.090909090911,-846.754518123658,-595.824468178678,-632.903843398745,-909.090858721656,-640.886320700739,-888.153727931375,-909.090909090907,-909.09090909091,-909.090909090912,-676.755307845615,-909.092733282396,-909.090909090911,-606.682038085258,-730.81377295158,-909.0909118716,-909.031954825145,-909.090909090909,-909.09090909091,-909.09090909091,-819.40629266645,-680.046819620522,-909.090909102012,-909.091416317131,-909.090909090912,-909.090909090912,-594.448867369315,-634.225585210996,-891.17755803711,-909.090909090907,-909.090909090908,-909.090909090981,-678.413024438272,-909.090909090909,-605.499428989327,-732.929179057985,-909.090909090909,-747.317383297411,-909.09090909091,-909.090909090911,-819.470639439976,-909.090909102084,-658.168073375605,-909.09090909091,-909.090909090912,-893.559414222835,-909.090909090908,-909.090909090979,-909.09090909091,-909.090909090908,-909.090909090908,-767.773529688118,-909.090909090909,-749.108850867925,-909.090909090911,-909.090909090911,-819.528898721403,-659.626480562867,-909.090909090905,-909.090909090912,-896.015083359347,-909.090909090908,-909.090909090957,-909.090909090909,-599.68895180815,-909.090909090908,-909.09090909091,-767.697046019334,-909.090909021431,-750.92969289305,-909.090909090913,-909.090909090909,-713.452120959475,-649.364454550948,-661.134388649134,-909.090909090906,-868.068890044418,-593.09212906209,-613.837844207596,-642.170325806596,-898.221146047472,-909.090909090934,-909.09090909091,-600.833399976353,-909.090909090908,-909.09090909091,-722.871419723508,-909.090909005861,-752.781292857585,-909.090909090914,-909.090909090909,-909.091458633974,-711.568296900182,-686.68647872001,-649.378091233234,-662.650539813449,-909.090909090906,-871.257288930831,-909.09090909091,-615.057239406377,-909.090909090915,-909.09090909091,-909.09116732336,-909.09090909091,-601.985419632646,-909.090909090908,-909.09090909091,-909.090909889881,-720.895879013192,-909.076590133286,-909.090909027728,-754.65250315868,-909.090909090915,-709.690323706756,-685.006651508744,-649.388481744513,-909.090909090906,-874.517060399112,-704.126976901267,-909.090909090911,-909.09090909091,-909.090908517638,-909.090909090915,-909.090909090885,-909.090992947382,-909.090909090911,-603.138332892382,-909.090909090908,-909.090909528023,-718.9861842836,-909.082156708984,-909.090909022458,-909.090909090915,-707.82519460012,-683.341864937558,-649.396267053563,-909.090909094131,-909.090909090907,-877.730328826547,-702.247808573216,-909.090909090912,-909.09090909091,-909.090909090909,-909.090909090858,-909.090909090911,-909.090909090908,-909.09090909091,-717.081232552623,-909.09090909091,-909.090909090908,-909.090909090913,-794.307151444974,-671.936765110114,-909.090909090915,-909.090909090908,-880.925251101441,-700.400290785088,-909.090909090913,-909.090909090911,-909.090909090909,-741.378221401154,-909.090909090911,-909.090909293115,-909.090909090913,-796.504057252735,-909.090909090914,-664.063681552199,-909.090909090908,-698.551242639013,-909.090909090913,-909.090909090912,-899.379403961789,-909.090909090909,-743.546969926066,-909.090909090908,-909.090909090911,-909.090909484847,-798.713512221711,-585.854593209585,-909.090909090909,-909.090909090913,-899.550611896093,-909.090884515692,-910.4903210655,-909.090909090907,-909.090909090911,-756.194546525234,-908.651538723024,-800.965725169829,-903.937073779171,-589.472980414194,-909.09090909091,-909.090909090913,-909.090877669837,-910.456862262311,-909.090909090911,-908.21940523589,-803.235597045061,-905.691894170844,-909.090909090914,-909.090870764666,-910.430090503731,-909.090908949247,-909.09090909091,-909.090909633931,-909.090909090912,-696.904809948908,-909.09090909091,-655.254075527127,-909.090863842555,-910.382500651541,-773.888049055085,-909.090908940645,-909.090909090909,-909.09090909091,-909.090909090911,-616.247356751305,-909.968452794503,-775.977922621777,-909.090909090912,-616.261355447265,-909.524435053374,-778.077793058686,-909.090909090912,-909.080081323509,-909.090909090915,-668.780530394707,-807.276637799815,-834.280867911427,-909.090909090912,-909.090909090912,-909.090909090915,-667.194710529,-909.113627325317,-909.090909090913,-909.09090909091,-909.078272022164,-848.418451716324,-909.090874269329,-909.090852608048,-909.09090903325,-693.415162320993,-909.090909090913,-909.090909090908,-909.090909090912,-653.78264194225,-904.367970028231,-909.090909090909,-909.090909090908,-909.090909090914,-742.945809866311,-909.090909090912,-909.090909090909,-909.09090909091,-590.827217350392,-909.09090909089,-627.658459410234,-909.090909090909,-909.090909090914,-909.09090909091,-655.247803182277,-909.090908985827,-645.09567267857,-909.090909074086,-909.090909090908,-758.146124180832,-909.076116058097,-644.346062866808,-909.090909090908,-909.090909090911,-909.090909090909,-909.09090909091,-807.421880589958,-909.090909090911,-909.090909090912,-909.09090909091,-909.090909090911,-809.957585734016,-909.09090909091,-909.090909090909,-908.225387879132,-909.090910157366,-811.281685526635,-909.090909090904,-909.090909090909,-726.675101481783,-909.09090909091,-909.090909090908,-606.096185628154,-590.827503284047,-787.156180709111,-909.090909090911,-909.090909090909,-909.091365603392,-831.724951737922,-909.090909090899,-909.090909090908,-909.090909090911,-909.090909090908,-909.090909090911,-584.951436125926,-909.090909090909,-584.950040903793],"Archive703_field13":[415.722362906461,60.7784300833363,60.777942535066,415.726177909551,408.553278662266,401.375602021318,394.078490586493,386.697626931113,379.229916673844,371.636357448919,363.88076577629,355.97323508175,347.994846566731,340.019042122597,331.603566298479,323.210372665098,314.699329338008,305.933249576283,297.027658783245,288.02619696071,278.798763056858,269.29732682902,259.690240977803,250.07285555582,239.818580841444,229.550557675448,219.140846089636,208.277700024634,197.192429418985,185.949095526883,174.424297178453,162.329156630233,150.067914925691,137.558943525701,124.274320500443,109.771417386825,98.5672636395651,90.6519144375931,87.2871415962671,86.5335333684675,85.0388732742219,83.5495808764476,82.1587271042896,80.8123985386328,79.5715261855023,78.413198872295,77.2759575344971,76.1979219369641,75.1977591014216,74.2257805802886,73.285477044115,72.4083697820987,71.5779084742355,70.7537943280226,69.9778450601095,69.240151198599,68.5217428843793,67.8247227206284,67.1672333935311,66.5297978146345,65.901659433331,65.3127397677215,64.7481751590382,64.1854901282747,63.6544230021258,63.1409696876838,62.6384848944019,62.1498762694003,61.6841475046144,61.2328176947204,60.7783200745094,60.7781987889756,60.7780775722232,61.2331453880611,61.6899332047944,62.1463153383665,62.6370972476531,63.1460922124415,63.6551218907441,64.1831125295408,64.7538288576019,65.3246369679978,65.8954836560652,66.5367298088094,67.1810587056364,67.8254790090757,68.5242544766286,69.2573353761557,69.9908146791676,70.7536982906968,71.5960162802418,72.4393433857912,73.2837951680448,74.2530212135275,75.2346566511295,76.218357814063,77.3023939791423,78.4616188844108,79.624399027992,80.8419803869566,82.2346284239212,83.6328417815985,85.0368299963614,86.709230744202,88.4221549754864,90.1403588624652,98.1966429945471,111.711986904365,125.21506387557,138.498568171564,150.707793892278,162.921704573228,175.138413260925,186.491669346081,197.654925876045,208.819474026665,219.583161619946,229.881822100007,240.181428115541,250.40253927495,259.976257677815,269.550683460447,279.125617582293,288.232936356373,297.189360890949,306.146285469853,314.887785828676,323.310399370213,331.733550025629,340.132970877187,348.089311213787,356.046198079071,364.003578115082,371.672147607453,379.217633911899,386.763619482065,394.18141339057,401.360863177268,408.541526857785,415.724984690047,415.724374393465,415.724033098402,415.723839156277,415.723422127284,415.722861318859,415.722552447241,415.722715632816,64.2950491480851,78.4255447872331,227.068122049282,70.2862664221683,162.519770599399,64.0746485223605,83.5732500861244,279.02773402426,74.2360856985231,197.341091115672,76.7401176089404,124.560803104999,307.230749466593,79.4211257954534,395.172450313396,150.455297459578,85.5547775942809,239.909972459931,63.1439460732235,229.717627296774,141.817593090446,366.539836424034,379.243141457904,259.763638532425,349.07370861585,186.172546263003,65.4286782097126,101.749339523558,78.4195577537062,228.31032583958,70.1310320665468,162.614503486242,83.5612724415034,279.076659762789,74.2308980003566,197.406946762606,76.9249868988913,124.714723342561,308.312081385181,79.2183039070383,400.361149328841,150.542420856475,82.3997805296516,85.8221806996708,239.956500681002,63.1420892243452,229.758565193576,367.392752279979,379.248803772208,84.3043017666612,259.727018934543,64.8624483474307,186.252668989099,65.543961379636,99.8290171570658,348.065638759757,409.985370909635,68.6647512637512,162.690925649776,64.1837123365133,410.342050940531,73.472569816465,197.469484471161,77.1122899947975,124.863450713079,309.383560488054,79.0164845977615,61.3849572411895,405.479987721406,150.629504730218,86.0960605721306,240.001423994635,63.1414626318085,229.799707049716,145.072646376296,368.244680709495,379.24602742499,84.5473034332665,62.0307093648585,64.977081101948,186.332565595732,65.660799366761,87.5931093297429,348.054831049368,404.246375435878,410.938392080362,68.8094772270531,162.767588199059,64.1845362288752,404.95882607444,197.531931296621,125.001807210714,310.451807915904,61.0814782720718,410.601961720308,82.1796243117664,86.3893313438793,240.046378732524,64.752101192618,229.840790128786,146.744354163675,369.095105053782,379.240461820448,84.7906554034477,61.9146910333118,65.0924335411181,186.412232827271,65.7769815109453,87.8767022404516,348.043983212183,398.508292514931,406.149927864186,68.9564449646753,162.844490526133,399.579875858716,62.8386525706166,73.854788129973,197.594502308628,125.109710212066,311.517279957273,268.137405116833,410.939337643967,82.1894773524907,69.2422268818624,240.091363379812,148.408182000832,369.944899707776,379.236240503904,61.7987516857331,65.2084709752829,88.0812454468943,348.031700734476,392.695349769791,250.113941186547,69.1067613492526,331.619887177402,62.7382821963695,74.0515209290547,312.580224954899,75.3661818244185,266.974960869811,406.158595871631,82.2036243010802,240.136380140734,67.2977632523498,370.79070640976,379.232702398049,88.5870146747965,348.019417555928,250.154885897381,378.399722928541,331.636631470965,322.174361078482,77.2875613906502,313.640851316908,75.534158590744,265.810634852308,401.375670341681,82.2179426440361,67.4274945573229,340.118732448156,379.225165352566,89.0033288741576,348.007133258491,250.196009304829,331.653246586377,62.2461669751585,321.135582590728,408.551554970028,77.2815404263306,217.867483150966,75.7033371958361,264.644498305783,396.51327191547,72.2654145044474,66.5338535998657,67.5598355890255,340.104493610681,86.7641130448607,61.6885589488405,63.4483017574776,65.9027770266114,89.4770770951792,250.237141099736,331.669722927916,62.3423117938115,320.095415137043,404.967000191283,73.1072064303253,216.59038387021,75.8744623074086,263.477008180463,391.628649180021,160.685101913957,72.0920672846186,69.8389443707212,66.5326215970516,67.6920039449658,340.090253483451,87.0187487925376,295.935052376045,63.5520341585877,371.667993809095,250.278427307792,171.228398500799,331.686054909121,62.4393285115853,319.054082919242,399.561731870678,205.273201498773,72.930941249872,134.101018295885,215.309531343347,76.0461575954661,262.309217082002,71.9188116083938,69.6887010924466,66.5314281903365,340.076012160953,87.2857689850045,71.4224400688754,294.842093425766,304.851740939221,195.673697574503,371.66381704989,250.319793081853,172.833360925238,331.702073273735,62.5369548489126,318.011781264028,206.77819113349,72.7576727543852,135.837224572097,214.038074617525,261.141840925463,71.7474129307648,69.5387851930687,66.5307702422861,238.584656375463,340.061770285461,87.6192708680782,71.2493899077774,293.749098276766,303.76737034882,314.856964760262,250.361233414636,331.717806080892,316.968530409671,410.343317292968,72.5825341899529,362.911392160236,212.74984256711,269.525621825632,79.778790120924,68.5237068207583,288.206438813959,340.047528154499,87.9960279286283,71.082682535364,292.644377189212,302.680152524976,355.98340495115,74.8278421741525,361.941339114703,211.436670817543,269.501101167977,79.9878464427773,288.179878080845,67.8263147168246,340.03328551537,70.9176028621883,291.539175545314,301.590120339204,90.7989886574503,355.992910473612,75.030893506574,323.298381599835,360.970864647061,210.127358203165,80.1972075504137,61.0813044933264,385.873495094153,300.495851786413,90.7133820286928,174.715163598744,111.335873074118,323.284681330031,359.997842452946,76.202970140874,98.6711325829079,80.4092373345384,93.6539253143017,61.3836695209982,385.04959013547,299.397471700902,174.820739243381,110.95102082364,359.021461347397,98.7753817878448,80.6217587771484,94.581499147446,297.172485266341,174.926473155595,110.529753586904,219.45850113512,358.028942523613,208.482877206585,288.082454283521,70.7552166729839,277.662877491408,67.0497308717557,175.032364329012,110.147281102748,77.8600818976892,219.521710553657,357.03802484277,288.053890517826,276.525246574722,63.6547863341097,110.024778598892,78.0587306630186,275.377806231462,63.6557976570487,109.898128597692,78.259239503085,274.226446196121,138.020724004744,363.960715060108,68.2425684720711,81.0391626990654,83.6213246416894,284.680326055775,273.070786516912,363.982838803193,68.103046834853,122.42488778506,283.571556070506,384.620778579365,138.32430806459,85.0493598228584,186.028047448659,182.860403643323,225.822045879648,70.4427155148905,282.46034249164,389.944829731584,405.932350838296,66.9154243796767,95.0730553358569,390.422432972702,325.882541718623,373.344911773854,74.9691875538961,374.181374033115,393.276411169284,386.381076809635,61.4981495489122,255.731515436698,64.6379160066987,354.510346365578,372.927572992311,386.08779231312,67.0470663934055,221.979195868206,66.1538273324341,233.509347925382,392.53324159413,76.3835785631188,135.134433139566,66.0900222938018,325.370529226169,399.572223886047,326.393743551177,384.594031676503,81.0486650776285,282.869267699821,405.706125796669,384.60956637776,374.597529701157,81.2865113435054,387.281584460216,395.163832466572,101.243099194953,205.773149412593,81.4113634369724,256.856019628877,353.528341914058,73.4764612533784,258.001401358895,353.040941167378,62.789289959411,61.4975846802753,79.1037140352745,399.067246969604,326.904044049445,154.674372802815,83.3763296970747,256.293493308547,391.476620617424,399.319759086059,324.32805866823,412.134123439393,61.005568341168,412.137644752096,61.005678893744],"Archive703_field14":[1324.81722425369,642.999575310998,642.999575310998,1324.81722425369,1317.62958582482,1310.44194739594,1303.25430896707,1295.82589360673,1288.2701540081,1280.71441440947,1273.03121189311,1265.06191446867,1257.09261704423,1249.12331961979,1240.70305060362,1232.26512165065,1223.82719269768,1215.05864939139,1206.08437561136,1197.11010183133,1187.96782052144,1178.37250782509,1168.77719512874,1159.18188243239,1148.91238078897,1138.58792500775,1128.26346922653,1117.43520380759,1106.24021536394,1095.0452269203,1083.60317853605,1071.34712983738,1059.09108113871,1046.83503244004,1033.40304129116,1019.81893574152,1006.23651921946,989.662166399393,970.607893004991,951.59497773885,933.107878657702,917.283148300299,901.449326397946,885.608823086898,871.729602005076,858.306745940563,844.879766493597,832.295107741468,820.729229668796,809.160744028552,797.735299425189,787.635216770725,777.533435901635,767.430299541915,758.210340414232,749.28991170468,740.368548505076,731.830179422027,723.877763384579,715.92469206123,708.007874177697,700.860373161943,693.712403328805,686.564041811007,679.888306281754,673.418285433532,666.947974623616,660.678593255464,654.78580978381,648.892801732417,642.999575310998,642.999575310998,642.999575310998,648.895662244247,654.791746988614,660.687829481715,666.961981948789,673.436397869187,679.91081088023,686.594131641375,693.748058084244,700.90198059286,708.055898390624,715.985802281984,723.947065919653,731.908322963899,740.466972085173,749.399824769285,758.33266803072,767.584216198065,777.703846468136,787.823463028824,797.943062399303,809.423162986089,821.017975759548,832.612762040213,845.285843499284,858.753024269986,872.220162864561,886.246712917712,902.151297562713,918.055813006972,933.960234503822,952.756560310415,971.937959099879,991.114533402417,1007.27046283695,1020.79841442441,1034.31009512117,1047.59919611594,1059.81046823015,1072.02437871905,1084.24039509458,1095.59243368967,1106.75445886488,1117.91804245712,1128.68098954439,1138.97899717663,1149.27817867906,1159.49925861779,1169.07290898283,1178.64746081877,1188.22278058392,1197.33051633562,1206.28744881694,1215.24499352668,1223.98716999309,1232.41040651957,1240.83413655366,1249.23411866679,1257.19081584201,1265.14791576302,1273.10537088165,1280.77380811393,1288.31896056693,1295.86440926594,1303.28140868335,1310.45976022454,1317.63836664559,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,688.000845335006,858.45550624253,1136.11119139288,761.832404494661,1071.54063031329,685.158372651176,917.540703596184,1188.15904081604,809.265712295633,1106.38714220908,838.367761432795,1033.66219986583,1216.34348493327,869.901260498528,1304.30764551821,1059.50215986416,939.285280002398,1149.00383096526,673.431870078305,1138.78346109343,1050.88259258573,1275.7241284057,1288.28100010207,1168.85112413365,1258.17470335234,1095.27974484594,702.299478639777,1010.85574100682,858.381125668617,1137.34955863851,760.021372339064,1071.63737998468,917.411926237618,1188.1909105933,809.213228500599,1106.46060551906,840.673789141478,1033.79177890203,1217.4419763802,867.582357417762,1309.4350400173,1059.60492960846,904.217075140466,942.65309947565,1149.0495553858,673.427341846417,1138.83234578048,1276.55584296502,1288.28642334104,925.621691948156,1168.81415969138,695.150319189531,1095.35791655531,703.738583543157,1009.06310187709,1257.16626652719,1319.07444158944,742.174804003489,1071.73412965607,686.582095778889,1319.43327054496,799.956856364472,1106.53406882904,842.979816850161,1033.92135793823,1218.5404672119,865.263455260361,650.861023365472,1314.56243500914,1059.70769935276,946.020920263906,1149.09527980633,673.42281361453,1138.88122975976,1054.1659882423,1277.38755752434,1288.29184606204,928.401205941027,659.212324730598,696.588234653944,1095.43608903214,705.177688446536,973.537413189771,1257.15399158292,1313.33165867882,1320.03140306337,743.981059576597,1071.83087932747,686.576077953454,1314.04931658986,1106.60753290648,1034.05093697443,1219.63895865882,646.930299439297,1319.68982950823,901.683317825569,949.388741052161,1149.14100493466,693.740927207272,1138.93011373903,1055.80768607059,1278.21927156568,1288.29726878303,931.180721024391,657.736819716402,698.026150118357,1095.51426150898,706.616793349916,976.466934169637,1257.14171663865,1307.5888757682,1315.24558162668,745.787314537245,1071.92762899886,1308.66536263475,669.543344053302,804.690010022603,1106.68099621646,1034.18051601063,1220.72867260835,1177.21005842714,1320.02546549878,901.800312411872,749.311894673343,1149.18672935519,1057.44938389887,1279.050986125,1288.30269202201,656.261315106454,699.464065582771,979.3964538345,1257.12944169438,1301.84609285757,1159.22155473333,747.593570110354,1240.71943676336,668.24565959694,807.056586454179,1221.7615124593,822.709818898248,1176.04760848238,1315.23370649749,901.917308088668,1149.23245448352,725.483875492604,1279.88270016634,1288.308114743,982.325973499362,1257.1171667501,1159.26122668253,1287.43722699419,1240.73582213113,1231.23037793684,845.015125641043,1222.79435288871,824.690407818855,1174.88515853763,1310.4419474962,902.034302674971,727.089987361604,1249.22026918024,1288.31353798198,985.255494479228,1257.10489235216,1159.30089863173,1240.75220807735,661.859656732467,1230.19563380605,1317.62958624451,844.947446834955,1127.02857409102,826.670995944483,1173.72270859288,1305.65018849491,785.765458239448,715.973580416308,728.696099230603,1249.20641916634,954.985475356552,654.790262890737,677.313801069374,708.01747912943,988.185014144091,1159.34057058093,1240.76859402358,663.071245778883,1229.16089025371,1314.03576662398,795.881493360714,1125.79367853795,828.651584865091,1172.56025864812,1300.85842949363,1069.69903581701,783.707452485331,756.524117145617,715.961358408657,730.302211099603,1249.19256915244,958.375972061893,1204.99014323343,678.612305854384,1280.76720920601,1159.38024318793,1080.29495060124,1240.78497939134,664.368157847883,1228.12614612292,1308.64503793231,1114.38356310062,793.819924779051,1043.36368499388,1124.55878369267,830.632173785699,1171.39780870337,781.649447425046,754.715566069089,715.949136401007,1249.17871968488,961.766468767233,775.64913725938,1203.89591099328,1213.9622493573,1104.71910404115,1280.76060963698,1159.41991513712,1081.94906498744,1240.80136533757,665.665069916883,1227.09140199213,1115.90938381546,791.758355503556,1045.17440279705,1123.27411786277,1170.23535941642,779.591441670928,752.9070143801,715.936914393357,1147.67070810024,1249.16486967098,965.156965472574,773.594427901304,1202.80167875312,1212.86584967739,1223.96717292609,1159.45958708632,1240.81775128379,1226.0566584398,1319.4264958084,789.696786228061,1272.04580012858,1121.9350989606,1178.61309233308,874.055876402024,740.447287627447,1197.30296467423,1249.15101965708,968.547463492918,771.539718543227,1201.70744651297,1211.76944938225,1265.07266477718,816.27508335065,1271.06038838473,1120.59608005842,1178.57872291386,876.382150688707,1197.27541302654,731.845808472055,1249.13716964318,769.485009185151,1200.6132136576,1210.67304970234,990.077129012359,1265.08341491419,818.646529830671,1232.39224605132,1270.07497609454,1119.25706192372,878.708424975391,646.928320238085,1294.99179008057,1209.5766494072,989.86964779004,1083.87627139008,1020.65848961409,1232.37408539959,1269.08956435069,832.348050213383,1006.3842259494,881.034699262074,998.696929687111,650.857064963047,1294.15768660261,1208.48024911206,1083.96730262236,1020.51856381058,1268.1041520605,1006.53193208239,883.499381415043,1000.86705323393,1206.26206492908,1084.05833385465,1020.37863800707,1128.57660994288,1267.11874031665,1117.6421354219,1197.16520582055,767.553433506079,1186.80277586907,722.342591363389,1084.14936424672,1020.23871313478,851.816395975119,1128.62879999268,1266.13332802647,1197.13765417286,1185.63773090128,679.892807355338,1020.09878733127,854.128605598324,1184.47268593348,679.897308509277,1019.95886152776,856.440815221529,1183.30764096569,1047.27169740104,1273.08683155272,736.858756162495,888.365902996538,917.927035671882,1193.83417144055,1182.1425959979,1273.09610113521,735.05464787727,1031.60238114866,1192.74219461742,1293.70894543314,1047.49003069986,933.249938317162,1095.12339989227,1092.01295911141,1134.87282485504,763.643436650259,1191.65021717906,1299.09892964534,1315.0099499917,720.71650649265,1001.24448628274,1299.6146097447,1234.96474242787,1282.42655613302,817.968354517548,1283.25555907285,1302.46084168746,1295.49114555725,652.333559982098,1164.82763727677,692.304123684359,1263.60220916762,1282.01341047285,1295.21251797877,722.328729092553,1131.07811696004,711.192188121345,1142.58037374323,1301.73105143489,834.332424034521,1044.45098021892,710.385320007781,1234.45556333559,1308.65019745421,1235.4739209417,1293.68860958194,888.470351465777,1192.10569760049,1314.78619299316,1293.70352219417,1283.668705251,891.276181225445,1296.39580345775,1304.30119697814,1009.72793592025,1114.9040933459,892.708344751855,1165.95041461452,1262.62293489591,800.003858771319,1167.09302858468,1262.13636622295,668.900014185044,652.332570381492,866.255691783959,1308.14674371476,1235.98310003398,1063.72253344774,915.159257560094,1165.38902594565,1300.69748760581,1308.39847083086,1233.41482523527,1321.22779572088,645.947619165189,1321.22340537229,645.946188529345],"Archive703_field15":[800,59520.9641869234,-53122.7144860658,800,805.899057996952,879.588141038864,1090.93404832732,1473.86478575986,2022.41995454923,2702.43379356475,3469.89898391203,4280.63879611609,5099.30044744271,5895.11851343979,6647.85718543993,7342.85195825503,7972.52506948959,8532.9030966808,9025.23696575348,9456.789568709,9843.51091458047,10212.083159431,10596.7745986939,11029.8820964859,11538.7042270773,12151.2459550568,12894.5128409384,13800.9824183952,14909.8642603474,16261.7993454215,17905.2079855699,19897.5050634184,22316.3237820281,25227.5961687839,28647.5721097555,33284.4226977027,36352.5768444357,40913.441896602,45384.7345770286,50557.9985039666,56153.6955582268,61650.503824882,66423.7435129406,70355.6410853602,73431.3804552101,75783.3804609033,77500.1973943787,78643.2157676529,79293.0106428436,79537.5950499013,79426.8893380135,79029.0866183329,78412.4741144681,77616.0270400035,76679.3354768053,75647.1517873364,74549.1835353429,73401.4347114289,72236.3986348755,71066.4841819837,69901.152423113,68750.2109341608,67623.4987366858,66520.0026965529,65439.9196598178,64388.8218453597,63364.1389272355,62362.9564957473,61387.6559651644,60438.9949255269,31359.5121573819,3200.68551740106,-24955.6067975527,-53200.2473142058,-53287.6556476338,-53377.0172017313,-53468.0937574086,-53560.4380204868,-53654.1907949931,-53749.3865954962,-53846.3008558158,-53945.61772365,-54044.9355820919,-54139.7957462951,-54223.4798335225,-54287.9214474583,-54320.9962804764,-54306.6578213899,-54224.7537019107,-54051.8259682456,-53758.4590677927,-53306.8836114106,-52658.8425033619,-51774.0196104578,-50599.2295377314,-49086.9563936742,-47189.557860182,-44839.6065232178,-41972.1637981819,-38558.8819969787,-34484.4707527748,-29704.403669746,-24282.3703354766,-18338.5081621888,-12017.6708255217,-5634.71332709682,263.938615368781,5120.1990547263,8802.75754023668,11383.5935303684,12947.6802681459,13688.754383464,13920.1781800329,13966.7176557184,13956.7295283744,13813.4454280393,13526.0520924677,13117.0921891357,12619.4926990788,12060.5849661339,11461.2134456275,10837.9787003393,10201.4501161996,9562.96088862585,8932.92364734614,8320.10083701869,7735.4521227761,7189.8332625654,6686.97919706355,6230.86067015087,5814.20807766818,5429.00655354045,5059.72997500497,4693.83889056045,4317.86064109581,3918.5805084312,3480.20904894795,2992.68705490042,2290.04515467819,800,800,800,800,800,800,800,800,42443.9613330687,36723.5604241833,12587.4716502732,24395.1901346821,18632.8720461137,-29906.1068287052,33416.559085016,10548.6900211754,27555.9426130036,14804.2097308055,15320.1452212683,24521.2895573325,8591.27209767325,-23152.9434591053,2435.51629926524,15623.3350359595,30641.1915801168,11868.2281428393,-24072.4730231447,12520.0361770601,13675.2503361566,4631.44002856426,2352.41434043107,10984.6662729735,5914.73508731176,15129.5475288119,44192.426931086,10708.9201896446,56402.1961220635,12418.9886206592,50524.3674709388,16956.8953363857,47839.0753458564,10429.0789267646,53638.5530086515,14337.7948938598,-6006.33802577318,20103.754306989,8754.05645107462,-3834.48635605747,1653.11565115558,13874.9557584806,50188.4470811214,17762.7748251958,11985.5447731297,5413.98512373106,12624.6406757676,4332.08437003702,2627.55228757462,17576.1098112917,10788.8800194838,43309.7760786518,14329.8603510377,19638.1522586324,5632.30569602448,6045.7892136877,906.451118673794,48772.6128884293,15239.4275838221,-5633.49757809354,949.902002290303,53106.4144877833,13849.1895857045,-26769.0031413353,15842.2396676032,8815.77138148142,16271.9408755048,-34456.6775948544,1104.91386822298,13183.2238495452,4548.44019012562,12115.8419063655,34900.2223720774,12806.7554369107,18539.4130703986,3978.09307585821,2944.48879991036,2323.11669970572,-24682.7673640673,18998.4943520363,13772.5648084008,-4914.77063130183,36187.6925551914,6027.60370256645,1409.65372288536,1034.45316031502,23013.637966538,13972.6275989175,18419.1816237956,1663.94957950554,13552.4696705175,12842.7583901904,8785.89486617872,-15626.2199399165,856.378812298775,34718.1885274487,-7165.79303045164,12281.0168081124,-29545.5392716484,12991.4570890063,20952.2250854982,3603.76039396222,3276.06727847402,-11384.161281445,4007.69000622268,-5312.62376683235,13649.4424577122,-29475.4779644817,28465.8115427315,5930.14775300234,2346.57149101502,2050.04567610915,-2768.65064997103,13517.8401113459,2685.48427942726,16593.5318691516,398.026130041629,13600.3508210087,10698.3631866822,8678.01033495267,10450.0997084055,829.582264870904,17634.9521299746,49735.5174566713,12450.9142392223,22335.8849225868,3246.61366446493,3595.80523105265,32696.1950471708,-29626.2659158904,21688.5711175682,5769.91221647575,3248.6081870985,11220.543633811,-28565.1577778831,6891.23656500076,39977.8067928178,-25852.6812697402,8504.44175857366,57765.9634125355,10696.94573278,900.954015254253,-160.066963372719,12574.9114188137,46932.8599389367,2937.90360039394,3882.92911650646,14561.6585611905,5566.10218681096,11394.1843046169,2216.6499893614,7081.98788446711,7659.66809464105,36889.1779589844,8270.02393876314,36306.5982742889,10935.1197885239,990.521153375218,-17396.1468238277,21638.2077839957,6466.23375709706,4123.67360402169,7446.82287801273,5337.5710677401,11563.2647550994,7214.51369092761,39205.8679383649,7912.17386460104,827.779755586689,57315.9347010045,13172.9732348085,14760.4717061628,11149.2812037958,1092.54590510258,-27135.872457815,-29078.9158139449,-3662.36225482541,6606.89903864412,39100.2232080668,-24619.5146671883,-6435.70426293532,45130.152844885,621.687950760845,11737.2402238616,7281.47345463461,16041.1299552897,8097.95890039407,846.308759272954,-26556.6350876146,13298.0262814896,-6913.47073578183,11324.5313723291,1241.36702036055,20040.0739669387,-759.05131698934,-28299.2437035979,-4023.29285187885,-28982.366603734,6654.54052547941,28237.4370649643,9282.41336858487,-30043.1141302773,4594.09711576235,11904.0442312511,17568.6672805318,7272.59234758398,-7130.68369118703,8212.33265090769,946.825019294066,14127.9210864271,-193.631207230145,23050.0530498603,13297.0817564055,-28141.3422523151,11445.4279275433,25682.3483403228,-2293.22077997753,21016.26289501,6618.65699845346,17986.9171645717,-27605.7523717993,9503.78719447412,8809.30837710055,15214.0915647859,4440.23652249772,12032.5382451067,18133.1588056717,7176.25999741831,-30300.2877491787,8244.77670776525,14110.7057879403,26279.1758612468,25112.7370841237,13231.7408566598,11496.5471214681,52026.7652638933,23704.1491174725,46043.5325959494,11796.1923480579,6512.1146033649,7315.61155797396,-1297.52117911315,9688.18796695276,9032.6970245245,8084.42280202965,12092.6867586865,6982.24758959838,8182.72513572241,822.759268058856,52626.6165169843,3775.13625275866,13188.0651009781,11006.4547711054,54540.4527348158,-28508.4031508847,9841.22757535441,6348.42527537684,-2581.50993724346,25043.8713314337,9821.89916616389,9206.14937747908,4505.87577268433,1027.32342871183,4134.70477005846,13263.5930139749,11070.1530583712,35741.8324263165,10009.649893594,47910.2849661922,6139.4246582546,51313.8759109937,9888.21555785257,9321.33578799887,27486.6710452342,4752.93145240806,-24973.80986683,7522.58726019405,4513.58751758241,13507.4281256979,16721.1669963008,22593.5352679978,1622.5580037936,9363.41079196356,32793.7331259885,15999.5759186888,8219.42129702872,7750.19169367671,4868.95598171307,57835.6350285085,32187.5411829433,-2530.24144049604,15452.5648714795,41989.3418545944,1864.1370752449,9318.76684965017,14797.7643203069,11699.7891042055,5159.44760805878,26983.5148202871,-20823.265806561,21538.0294476303,9249.83247610552,13925.3364006598,15761.6585762601,13090.3750683166,5356.07893557334,13631.3049796827,9827.9371483204,-27651.5231719476,10081.0377241047,-29161.7468477019,13633.09777179,20924.7357314028,15802.1128333756,13317.2422156943,5444.76247511291,9651.78336343229,10320.4892691511,41622.7706805599,26287.1726789606,-4991.40478953224,10544.1504577422,17806.602319825,30953.872958597,-25116.2998024098,10732.6860047536,15843.4986944069,4945.9142346483,-3212.4910962908,52661.7314592951,-14226.6546309918,10131.4883126056,10869.8097917338,5041.38739735782,22347.8396744462,28310.4176368091,10291.1110780834,3843.01806083441,12332.6623441109,44168.2469628903,16336.1202365965,16243.4821229275,12678.3183168068,-1791.77461648749,10390.4257335986,3212.20730687012,948.895629655837,33989.5240476423,6322.86913701763,1701.98810726458,7702.88470748984,3806.5725193627,21068.441782386,3257.45742786454,1329.04984350292,2743.72337533526,-5811.51958550126,11798.7547686568,-5473.61035317575,5145.56399377136,4121.6291550177,2220.89362630535,-3843.28924624419,12854.897093054,-16742.5387517074,12246.6620402828,1964.82884053035,36695.0849675732,19392.144175733,8062.16949261988,7753.27763972401,1154.65088729462,7577.39086428492,2626.82218620963,35360.9791464052,9965.42198634197,1011.69257397767,3547.55203120104,2916.35790242918,7981.55379590235,3028.3302081032,1986.90795112619,15597.2122915067,13569.2325277843,-10106.9887207309,11552.7889168543,5528.94350524854,26966.9130880161,11246.7069676465,5676.97145682137,-15602.8988990024,13300.1295125387,46124.1624699182,1502.71274089815,7384.99148352882,18729.1784820398,967.162273927151,11705.7305103642,1826.63855958533,1303.18035274853,7780.79558880073,1204.68831267615,-39077.7383469734,801.469327958449,45899.0925116564],"Archive703_field16":[-5.21432382074411e-18,771718.653806915,771707.192243001,0,1.05055466380719e-17,-4.0131502217301e-17,1.84875710339254e-16,-9.31831501639405e-16,4.7718625264108e-15,-2.37967924812393e-14,1.14032247584865e-13,-5.25009279333761e-13,2.33408433839158e-12,-1.00703840041538e-11,4.23821241687216e-11,-1.74708227807903e-10,7.07932787869389e-10,-2.82774663811525e-09,1.11622010894342e-08,-4.36498244540423e-08,1.69565053358033e-07,-6.56520382643786e-07,2.5424657749347e-06,-9.8764265071653e-06,3.85596918885446e-05,-0.000151546137878151,0.00060017312988332,-0.00239733739082438,0.00966585762025858,-0.0393443930035356,0.16167436696587,-0.67051418577374,2.80659371261134,-11.8407799993703,50.183749548796,-217.588264403992,886.952195050863,12343.5922921159,25254.7889251401,37382.2299642893,50069.7765400468,64369.6897116777,80334.7906991786,97950.8635037295,117086.483419263,137507.881095105,159016.631321389,181464.472374073,204709.177075628,228601.066574528,253020.784701333,277873.631215369,303062.715679306,328511.881815434,354163.859170254,379970.179266744,405885.005880761,431882.081314933,457934.322225481,484025.442140273,510142.064285188,536276.134813802,562422.197665178,588576.169903823,614735.546561626,640898.209141068,667062.524052023,693227.290068479,719391.495748618,745554.994713958,771718.129746064,771715.153427052,771709.677328728,745527.755301144,719351.586759738,693173.084204435,666992.239607405,640809.650239885,614625.801072407,588441.209475766,562256.865542212,536073.796184559,509894.230518504,483722.456188797,457566.04630079,431435.775846926,405346.892886252,379322.05261029,353390.403669383,327589.341069963,301969.705275975,276592.705810219,251534.329228173,226885.170585454,202745.300821181,179234.872819712,156487.415047411,134650.527478549,113895.320430627,94406.8897168638,76375.9276646005,60061.19582183,45657.3256744167,33166.5931465728,22462.3457971202,13502.9426681608,6384.18952172235,1100.46256441193,-2495.34755468316,-4615.57518874338,-5535.46896558645,-5653.01657414183,-5378.04161398061,-4991.61727205712,-4587.81965200194,-4217.81663105571,-3910.7540400755,-3681.13648531604,-3532.66039305881,-3463.76081162318,-3468.9635288839,-3544.03289221704,-3682.72532404888,-3877.69564982181,-4119.45578849619,-4395.34915366704,-4688.82849365018,-4981.96736904226,-5252.53199625061,-5479.06910590278,-5642.54997806472,-5728.17052970875,-5728.55367792349,-5637.29545382956,-5448.39931549455,-5151.03871284486,-4720.66730086637,-4139.4758937525,-3079.36453118367,0,0,0,0,0,0,0,0,583307.109988451,132492.607847818,-1309.00977682169,343045.359989244,-4044.67266382471,593697.20958933,54901.1523142684,-2537.55659158682,226070.60636162,-2441.41690011718,165616.898437696,-6174.84973975906,-3844.66811829313,114905.421597297,-3280.8553690543,-6845.02717420471,34565.3619472158,-1054.4717816117,640831.735222222,-2264.07910247995,-7134.41697428873,-4292.78860962264,-1247.34013155314,-786.73883052109,-5201.38249653269,-3927.43746452964,530984.730912046,-2258.32986895659,134454.537320836,-653.43093147516,348532.776420362,-5329.65338029985,58612.7859185317,-3086.75430094424,227019.400145411,-3359.54011388393,161708.530089054,-7426.55675196034,-3304.95785076361,117154.061967804,-2132.67541982964,-6780.58016883825,72352.4464421424,30349.8598086208,-1521.18775970666,640853.315495881,-2627.69131866699,-3659.2503430974,-1905.34162736472,45215.8777522874,-396.180973656441,557143.399192394,-4578.05922236382,525701.144395135,1038.50406187629,-4643.18214609304,-625.180530828253,400420.465823642,-5983.00847072843,588488.101272236,-887.672110811913,246764.962711899,-3987.68948851413,158671.816912344,-7569.81623068072,-2770.81507869301,120711.889839431,736807.322274038,-1052.85929465914,-6342.43109251099,28523.9571174013,-1925.22551062929,640875.425791136,-2940.00943133411,-6626.22870674421,-2963.63063113598,-2578.10539597224,42851.7855946772,699730.778408148,551869.438019875,-4888.95939583453,520425.621654679,17724.3746896893,-4017.83467480091,-1870.69396990555,-1238.96463031646,395026.177827666,-6111.18936829845,588514.315672435,-2450.71385076694,-4344.32976685606,-6838.35061992485,-2237.68471176897,754263.139304725,-334.343218058583,72169.5651902146,29831.2897275008,-2283.14180484502,562283.141104904,-3277.13795076121,-5012.20614225394,-2224.6299907448,-3253.3424656486,43188.4674448659,706286.185376678,546600.520001446,-4982.94358984491,515157.078239362,12003.6549671354,-3315.92114682985,-3324.1081660654,-3017.13067510429,389712.010384397,-5930.16200724804,-3830.32720310867,656562.606486568,235727.014657732,-4507.14585677102,-5232.57707202836,-1701.14411463909,-366.001938618204,-147.631133936535,70823.9122869113,379629.58841098,-2645.9752917613,-2663.04321681364,-1466.88769389149,-3906.06018727579,712839.796044353,541335.773539772,8745.82001989613,-2544.96514471435,-4405.03708013972,-455.550011373065,384462.410371887,-753.763912546442,661813.003122808,230951.587905366,-1155.13835914077,198994.174216511,-738.362120459474,-259.16779192956,70917.2099506941,-3056.5780475355,452569.598397633,-716.282267525239,-4503.16041697159,7517.20680732467,-1719.57132775779,-895.662741007587,-620.076054687592,-1497.63550612471,-667.545460344811,154841.306332304,-590.708634877126,193845.609214394,-1118.33369006798,-326.689721127106,72804.4337204226,447235.501349713,-4999.13281126431,-5021.92536662572,7805.88118123238,-861.617815139677,-1303.21209193362,-2219.55883646368,687982.240681878,-1307.16076808388,-62.3764211135111,156472.499887136,-786.499576624167,189267.00745036,-1513.2618563596,-335.475812964414,281212.410018158,483751.679352226,441935.057992224,-4445.14504855801,28574.0142879726,719365.042910194,625133.403065511,510066.94944306,9721.48267826723,-1681.95614760508,-2911.13907341653,682735.951015781,-1918.36538198078,-56.06533344851,255908.342961851,-1570.56530026247,185231.824704961,-1935.86984247583,-237.87956841682,-2221.54139002639,286254.162940757,358453.239883089,483792.550133615,436664.067750835,-3823.85185414507,21592.4280369802,-447.532510825494,619879.329197146,-5237.81870186822,-2060.45125706135,-3556.50268161056,-3566.16078580878,677488.989203274,-2505.24042416356,-131.183473648725,-2137.1116433306,260835.354737319,-5813.35127179544,-2292.69576274116,181881.864568739,-2397.11484595828,291548.974632644,363677.213799414,483848.215066483,-3141.55480562354,17674.2015369704,306780.211211679,-883.215511756735,-515.497620616616,-1305.6681223066,-4753.01118562463,-2472.10953758092,-1862.63671011749,-4178.75595416268,672241.162811488,-3072.14470019259,-1084.63512663271,266106.419780172,-3160.07897199768,-2906.3720871453,-2905.96842744491,297172.769487115,368994.719448949,483924.4806274,-544.866096754637,-2405.17142493107,16646.6084231368,311905.18323754,-1324.11090040111,-1010.1167995834,-4123.78484005269,-2936.6284457086,-4743.25315771092,-3622.83470850693,-79.0843863980871,271815.563594039,-864.869553942149,-3381.94246303192,-2960.62423937149,110033.435565029,405325.416331995,-3277.69276502993,-1624.88257716751,18508.164698602,317214.683293915,-1780.15128424979,-1498.2688673219,-881.053457412842,211012.135228088,-1746.14242556705,-3725.69911938158,-2430.63617050933,104236.17063693,-2715.12898424194,431695.600228988,-816.028418918093,322764.250041963,-2257.76832725134,-1990.6678985273,5374.95559604664,-1764.38823122945,206448.54787405,-4442.89086288364,-2603.69254136393,-3972.64939408938,99774.2830183449,754276.107555673,-481.628704516692,-2493.75182372968,6923.68688648297,-4563.99760478066,-2658.59980269554,-3870.93733601817,-3404.16543313168,179370.07594611,-648.205635331553,96452.5597004852,1598.69878992202,736834.259569531,-1029.50275135222,-3012.60120374294,-5215.93893103478,-4949.99334621363,-4124.09908370992,-1026.64445803682,94688.3231745471,831.641483872615,-3523.13115892228,-5448.84589206515,-5836.79870110844,-3356.03569478568,-4753.75637859459,-2847.79991662349,-812.407775356577,327383.36330492,-364.301040043363,462815.121925326,-5435.25602715393,-5929.16610199643,142712.381483321,-3604.23851490274,-5289.59373268933,-402.406202508393,-734.663090297963,614710.782193478,-5138.71150344234,138964.993710918,-1119.58796085124,614687.812127304,-3530.01901738775,136293.861691789,-1527.19844270706,-7570.34387275179,-4745.3540399677,415804.977684723,90472.857775291,55840.55764428,-1193.01133947996,-1965.94218810704,-5287.36936007971,421113.128653875,-3601.97388658536,-1620.87081127149,-4924.11371473759,-6306.13992478472,43760.2965301875,-1537.64121599049,-3015.00494403402,-1920.8276977938,337729.538153237,-2077.33410254622,-4221.18903459091,-445.074424528386,468196.810668932,2899.4515489608,-1282.07161191585,-2404.53535195457,-3505.13589447693,207511.96016235,-2448.93624302904,-674.26737729785,-3053.75980913636,730275.895342516,-2657.95409551905,567543.991537584,-2604.18191162047,-4150.86328667553,-1949.97490624329,462859.555417955,-2773.92591327998,499473.099114029,-1441.66912857329,-2091.4992563407,174098.282700564,-7263.56935670656,502132.712438848,-3031.97939748202,-687.671683576408,-1748.94107106416,-2614.91587497586,87692.5572094056,-572.508766350119,-701.574183985808,-4395.69147595717,-1729.10323470905,83211.2979977953,-3692.43257386511,-2404.19929001422,-2761.18083692417,-3433.910742707,82442.9116180408,-1771.04032881433,-3752.33158688065,245971.206055207,-1181.9682097111,-4417.20623445101,659160.798458411,730282.266481775,120841.377185463,-1638.07617451422,-1066.29907400997,-5304.52577609979,56257.0568837664,-2192.40789552509,-1669.34321969857,-1100.75091516569,-3460.43306283764,-1657.73031436503,758618.522673006,-2.6958756911787,758636.862153596],"Archive703_field17":[800,774010.610916477,773533.459750736,800,805.899057996952,879.588141038864,1090.93404832732,1473.86478575986,2022.41995454923,2702.43379356475,3469.89898391203,4280.63879611609,5099.30044744271,5895.11851343979,6647.85718543993,7342.85195825503,7972.52506948959,8532.9030966808,9025.23696575348,9456.789568709,9843.51091458047,10212.083159431,10596.7745986939,11029.8820964859,11538.7042270773,12151.2459550568,12894.5128409384,13800.9824183954,14909.8642603505,16261.7993454691,17905.2079862998,19897.505074716,22316.3239585125,25227.5989475675,28647.6160647332,33285.1339034734,36363.39543314,42734.9271498222,51938.2180699407,62877.2003975217,75234.4339223486,89130.4750096142,104239.111176917,120599.701051281,138207.858803496,157008.082968195,176897.059424317,197772.875087253,219529.562282138,242042.716612861,265194.54790925,288893.321931371,313042.370505444,337556.371806832,362369.645019464,387427.191489624,412674.47069647,438075.225022614,463596.743689866,489214.752243915,514908.823835086,540665.038886668,566473.005542117,592323.238221668,618208.844397671,644124.549181959,670065.23943318,696026.733709688,722005.93381241,748000.750167096,772355.028974055,771721.79081371,772113.080055923,747423.507951587,721322.590536421,695225.165418257,669131.888902743,643044.110743198,616963.246501575,590890.898194154,564829.360927005,538781.258608083,512750.408462177,486742.778174236,460767.699055167,434837.908991068,408970.505305019,383189.812860693,357526.364509867,332018.638442413,306717.581540091,281682.709351815,256987.300219409,232717.489111185,208963.965876615,185835.05837891,163447.74528656,141920.241204024,121382.892327942,101977.684847564,83800.1255949373,67005.2150278127,51712.9084160714,37898.8625497514,25475.1131652049,14631.454301545,6389.64313885778,5237.12289484333,9149.60653420992,12283.7183290561,14081.3295180216,14810.0841644579,14922.9585594,14831.9063193257,14691.4392857709,14443.0347131976,14080.0597431302,13623.8347509726,13104.6283974323,12548.1213209576,11974.686701996,11402.7168451262,10845.831009457,10319.2414697028,9837.02398506228,9409.73815367892,9045.56975467146,8747.21105322684,8503.22192781049,8297.21778417869,8102.06059131751,7892.15115008633,7643.11419912162,7335.61337342046,6951.90445971504,6472.130485573,5864.85761036431,5107.97772934912,3837.55035489791,800,800,800,800,800,800,800,800,584849.27495614,137487.857734944,12655.3525886183,343911.680976173,19066.8114178626,594449.957439486,64271.3228937826,10849.6108049253,227743.823262019,15004.170827935,166323.972709056,25286.8030969347,9412.30201364568,117214.822882062,4086.04351379657,17057.051171332,46191.4155227078,11914.9800666513,641283.710088892,12723.1033972526,15424.4084917241,6314.92444809066,2662.65105352706,11012.8039624817,7876.45040791304,15630.9940011622,532820.56553759,10944.451810173,145805.453716765,12436.1670277571,352175.819652094,17774.7434469046,75657.3578912068,10876.2925381346,233270.020386771,14726.1288937449,161820.038314303,21431.6280862157,9357.14971259546,117216.797094831,2698.35057070816,15443.1429678624,88055.4184964083,35165.7526564347,12081.6925846083,640876.183998893,12895.2050723687,5670.72024196023,3245.66753394544,48511.8051303843,10796.151695799,558824.215623875,15043.3880467039,526067.819052342,5727.24699484869,7623.03795465691,1101.13774191591,403379.867145582,16371.8216287427,588515.064916748,1300.1059919362,252414.813515279,14411.8603808666,160914.029877588,17557.8664834898,9240.9545638348,121803.67978211,737612.562791275,1526.21995483666,14629.5530769217,28884.3285848658,12267.8489706558,641825.00489198,13139.8873768832,19687.9847589576,4960.67848565078,3913.64813512133,42914.710762775,700165.98121904,552196.359466464,14614.5634685309,520448.828075362,40295.1926488701,7243.96313279032,2342.35342070439,1614.04048773906,395695.980143328,15250.6051523615,588802.484712051,2962.21649807667,14231.7474434269,14549.8962975628,9066.37642439526,754424.9876982,919.331310037915,80086.1957791235,30679.8702174792,12491.4414837588,563058.850975322,13398.4174604247,21543.3968177219,4235.09947614126,4617.01786999798,44663.6636240042,706297.55573209,546626.337123578,14530.5542298281,515999.63087327,30893.2057151138,6794.26121255521,4068.91789818216,3647.70678437688,389721.844992386,14761.3963671504,4677.95172034997,656772.260023464,235727.350691953,14327.7320685697,11909.4432148977,8843.17559886246,10456.5071288021,842.615977712104,72986.4239996084,382873.668582436,12728.9610981054,22494.0782084898,3562.61979346389,5309.15449448277,713589.248794513,542145.861688552,23385.5400823293,6306.24567977232,5473.37252803874,11229.7874089903,385522.130658976,6932.3373713821,663019.363320857,232394.055614263,8582.53309074482,207209.043965483,10722.3983618858,937.489243659043,70917.3905937294,12941.0612606419,454996.63156538,3023.96062341737,5946.05686693235,16387.5043321667,5825.6689834961,11429.3327763788,2301.74531365502,7238.60929356906,7688.70159790904,159174.877405902,8291.09357316836,197216.351477128,10992.1569781234,1043.00447226936,74853.9343900344,447758.646710069,8173.34129142305,6498.03188515293,10788.2784535815,5406.6671954673,11636.4708375472,7548.22159353486,689098.442586006,8019.42420235352,830.126581715156,166639.609911868,13196.4315414816,189841.701515244,11251.5080236929,1142.89132284769,282518.627920829,484624.876188804,441950.232922074,7963.0665832678,48428.315554538,719786.208164364,625166.529748375,512059.589901363,9741.34084056045,11857.1406567984,7841.84840298006,682924.371112691,8322.08291783096,848.163803540813,257282.597282943,13390.4510135236,185360.796721269,11488.8033689272,1263.95362585382,20162.8324088649,286255.169315447,359568.592033396,483809.279003781,437624.822923311,7674.94316641475,35546.9520568218,9293.19553724815,620606.93798293,6967.09932918259,12081.0483171912,17925.0322548756,8099.88285127491,677526.513976817,8585.95580887927,955.869615020665,14288.6458560765,260835.426608403,23771.8320415289,13493.2885945948,184046.048049837,11693.7581653334,292677.958899572,363684.443849954,484304.42753406,7326.38976986028,25217.1883653711,308019.764877346,9544.73890046543,8824.37827156765,15270.0147801925,6504.36897065315,12283.8634877531,18228.572730348,8304.25847833485,672923.686918379,8798.54624468326,14152.3302389301,267400.863372142,25310.7815558031,13547.1755287491,11858.1300472479,301692.623755481,369755.310531968,486109.977108486,11808.7693251995,6942.08082570805,18183.1720131668,311907.882060799,9778.25422862227,9089.00167706302,9075.43351300781,12444.1496162597,8440.98524584583,8948.85031565206,826.551361591466,276863.253932281,3872.93855776577,13614.7932753639,11397.690227197,122808.867459814,406326.743120507,10372.7060139505,6553.07155970588,18687.3313789493,318201.745420298,9981.91573923098,9327.27162460945,4591.20590626065,211014.636001733,4488.29554573999,13776.9275808695,11333.8555191582,110193.728742802,10371.3555716404,434346.044833619,6193.41888740513,326817.800871004,10142.6980995245,9531.52975942769,28007.2710703558,5069.85435903151,207953.58640468,8736.62396505245,5210.7280804922,14079.5084352847,101165.730252606,754614.414297291,1692.53085191648,9689.80184613776,33516.6581335403,16637.8034522088,8638.69430926585,8663.11878875702,5940.96580094416,188463.749363277,32194.0674340685,96485.7419234721,15535.0442203484,738029.695137506,2129.52646152717,9793.62964436231,15690.1194326758,12703.8379716701,6605.15653656751,27003.0381790618,96950.9512302905,21554.0794293026,9898.07324679836,14953.4248728181,16807.6797968028,13513.7298705383,7161.40916797255,13925.6037504391,9861.4580557236,328549.042461807,10087.6179964647,463732.945305769,14676.6264153551,21748.5534253226,143584.576465022,13796.3573273448,7591.12905089249,9660.16836532602,10346.6046899893,616118.333426335,26784.7307876914,139054.60653588,10603.4233187961,614945.673587536,31154.506662762,138588.76307488,10840.7972013151,17559.2299726208,6854.22881009487,415817.38728249,104683.312683154,57624.3488467651,10201.4867291289,11046.1619395812,7305.6048100173,421705.694842706,28538.6398178013,10417.9743428501,6246.25357246776,13851.4245204172,62175.5385355431,16408.3260844502,16520.9251039527,12823.0002100479,337734.291118736,10596.0494477437,5304.40502300308,1048.09072095369,469428.952308595,6955.96818628588,2130.83812978616,8069.46237835459,5174.55041369952,208578.744961126,4075.33036903403,1490.30533200525,4105.2974231178,730299.018949229,12094.4340117588,567570.385715033,5767.02629114932,5849.5720284618,2955.46453782519,462875.511248908,13150.7811268143,499753.62864358,12331.2262571565,2869.65529495331,177923.414142329,20707.8414020415,502197.430776107,8325.03532877787,1343.9162979602,7776.6089769387,3706.47808993443,94553.6008627772,9981.853618112,1231.14913795077,5648.64841939036,3390.41906131712,83593.2133338273,4775.44156721141,3118.97057253725,15839.7332957511,13996.9930478642,83060.1282027729,11687.750664849,6682.0063320931,247445.041594593,11308.6456512208,7193.03245086781,659345.439567442,730403.369504008,129344.798131315,2222.93480227576,7461.57442682359,19465.870654081,56265.3699186937,11909.2728225376,2474.53333227046,1705.85216505648,8515.59610227498,2049.23003244225,759624.33648277,801.473861959272,760024.088639069],"Archive703_field18":[9976857.47794623,5840672.06344177,-166977.838850901,-2854155.08704008,10022793.2909133,10026398.8725083,10045655.7613814,10074114.9823243,10104661.3366081,10137349.5632718,10163587.5743408,10179775.2734751,10186554.6101894,10180834.4753565,10166050.3281082,10143614.373057,10117009.6757335,10089912.8401427,10068488.0343578,10060373.3703346,10071011.7972712,10096913.9254647,10113645.5575519,10099670.1977636,10049325.0632731,9963098.31094453,9841534.07059292,9683779.25379749,9487150.92488565,9244846.69269049,8950541.56948359,8591716.35940531,8160872.62098654,7658780.70403854,7008110.25022786,6372578.06389974,2394797.87818925,5185209.90120903,7277430.44262209,6635695.11497659,6424081.0183721,6323686.18937842,6256024.82225888,6209350.07750708,6180310.95290607,6150306.81836733,6119395.99266269,6102591.24873274,6096228.14159662,6075301.22034234,6064623.60201611,6069655.80792275,6066246.57352835,6063709.84668214,6067002.50501355,6069071.53510321,6068234.95806173,6066185.59761822,6064450.41204337,6058106.83056324,6043459.18795762,6030809.70747182,6010426.46592737,5987023.65909296,5965207.36427626,5944014.76651354,5935871.64963332,5950441.14951328,5970734.18738377,5984152.10585306,4366292.61047869,2799101.50349264,1139367.81090969,-177020.409367419,-221360.695413587,-202994.387577298,-195424.510010537,-180837.656259073,-150083.265127508,-75348.4882167604,40468.475599256,159525.588171966,241678.280074967,305924.079169589,372750.008273333,438186.119640641,511334.829861156,588524.841888019,671125.465623832,757169.383640611,845444.615510018,939859.54773032,1030804.56055273,1134120.84485012,1243436.39464631,1341372.79101531,1434601.90716348,1533500.19650221,1619758.21257147,1715217.73233474,1819535.20729758,1910138.33917708,1965678.67257331,1990585.67196752,2026709.46921388,2046420.57457469,1972506.23050853,1820309.95407172,1639008.31740841,1448844.69180243,1223296.38673415,890526.974498812,391086.654279227,-137523.743231109,-532415.415196538,-687969.557569766,-784106.729379722,-846059.904174318,-882828.394021414,-906305.164865213,-920476.963797354,-926324.485200053,-928235.095300952,-924717.424866087,-917847.192953582,-907187.244804752,-888176.636978889,-864810.780945799,-838316.424069296,-813962.589240757,-794761.600722569,-779042.588286528,-774747.223832162,-780140.47647681,-795241.831505752,-817921.036395101,-843586.155079778,-957971.98560919,-516816.325102863,-1326324.89483489,309379.34084431,1673132.07165447,3029159.56408041,4369215.69447223,5721306.23180384,7100742.16355366,8543063.02000262,4777535.94840058,4014728.82483452,7344360.31047779,3599141.14673791,5958652.59096108,1161209.00532975,4128587.21753615,1816182.00634814,3551478.56476608,6650488.61752497,3183903.41515966,4761358.62123472,484127.817967543,2624339.10227153,1717398.20226151,3577955.69986955,4085438.65802793,7389978.05738169,1385682.42082007,4709632.30469073,2792131.69768497,2851467.89586891,7590681.55524398,7391863.49434488,573963.163445266,5154401.41736452,4806543.08266284,4015003.64779938,5052488.11875199,8649648.79481721,4814140.5599304,4776398.89094629,5183552.03094791,438456.972082264,4813563.79037747,5290345.84704069,3415696.68216259,4006446.45045438,1883974.84469561,3668129.83489561,2410881.88505698,2660939.29545941,5124438.60169635,3458794.2589624,6047305.65555536,2957501.40064891,3343786.37855812,4047102.50499207,6381573.67698686,3418617.73077105,8766351.87973285,4792555.3327274,3868004.82601205,3596873.25644753,3057978.31581405,1925037.76177179,2376706.29742654,4820180.31853966,3663853.03232267,2397155.13601751,1141347.75404327,4820369.11737761,3939014.67613541,2432254.65647403,3435108.42412821,3281266.02372066,3245525.65975701,787370.173679246,3063022.8639263,2041633.26935795,4213184.40589692,4670753.19317742,4459393.70536856,1901510.30019549,4485504.03750648,5239523.08542464,5189277.37145922,4081066.57872562,1300079.69693911,3590330.6663625,2596481.51430623,2416385.99513825,5316040.41004413,3287292.67426719,1708279.47795153,-21569.0064166123,3617200.90770024,2555904.79911298,3593834.0388565,702516.327790459,2589254.07291734,3255947.65323161,4669695.80951294,1728496.76375138,3749067.58263174,4120473.12857598,3098799.30735133,3253562.08254374,1209001.31977124,503829.835392254,5550635.25533682,6438083.73431352,4009047.82488591,2986163.75323071,2819791.8923303,2404539.88195148,1276385.71640954,1294713.05493866,4105123.63598398,4653864.55595294,1020477.99229474,-289537.01664696,2579282.43232156,1637229.21483488,45840.8072777923,3532796.88517678,3113567.78271646,1168741.6288779,2686530.86904255,6044967.26671618,8760847.75428223,5511317.83488202,3307886.33883212,4829679.40655322,1839569.4588436,6783501.96641549,7650828.12197919,2824406.08528928,4340060.2912092,1219542.30462909,2994027.36253203,6023740.13182235,140300.550733729,8761051.63305991,1803699.27161172,8785593.94326271,4739662.7538926,2384670.59563725,7407244.75256514,5006217.81450429,7391742.42295892,6492181.06815544,3953491.94479802,462987.646017557,4823269.12052961,8881813.49318046,1628755.25824406,4727246.52105517,7400540.9503334,7404395.42173173,8843311.48701589,7409777.91773473,8778972.14144585,4007448.10764827,8762106.14886767,4017123.62130864,6000642.33682311,7425711.14926816,2848346.70012251,3618420.11042783,548239.585693297,421389.609712598,4038544.07440746,8787621.85162574,6024768.81443378,6036933.83742379,4718203.12439584,7416520.92152013,8009899.55700254,5041896.3958169,8540040.97094095,3123531.63389534,4602293.53300349,8305811.55869457,2183513.81433943,1426376.8522046,2480948.52287966,1918778.80021847,5305735.95308244,1305493.50328319,2349093.07138881,4820184.19545565,3108989.63694989,4617451.13456479,4663780.49857077,3489385.72045446,6051594.47028008,9027311.2240477,2282749.03502679,7257448.83042069,3317241.56081428,3206997.28637528,9174303.6681825,7181360.85695394,2917501.95901647,1896858.30323792,2436011.42336095,1605134.70314497,3289702.02111597,3881503.94772838,8733822.00870217,1102611.18087145,432709.841480308,3202477.57450996,6181414.79023702,3287500.97039945,2247894.12600889,4678323.4413447,9044282.48276039,6775383.12563611,3030821.4663706,5138988.54448982,5988275.42675147,2325787.94817632,1819473.39238517,3572944.33627146,2651934.13832655,3628176.70011453,4661134.97749346,3505470.68628503,2091877.64327371,7386595.89184788,8745556.86444241,8030173.31634693,1638813.74397955,1811456.86732389,7524782.96653662,1909066.04027583,1016124.02001556,3294030.35382974,8210436.49326934,3558812.06791067,6325812.21132521,4722873.5485235,443136.105068782,4807485.46243765,3609977.88393415,4828582.89770634,8725534.30946011,6033599.55087242,4300167.57114479,2816235.65745983,6020713.35220387,7396466.0149648,491028.513038163,441639.982353102,531192.045139808,1899601.11047303,6980518.84893275,4803091.77429768,8759041.16941243,3466101.86230251,433731.77878166,5055701.26823399,1732419.26466946,447091.872420298,7409712.07838855,3229204.79856568,3587598.8393816,4638371.07426631,6033984.46783092,8773240.71559003,3262872.50732897,7376333.8038946,2165828.39162799,1805220.70704749,4034516.55994714,1830057.79516279,4833819.037871,8791308.61377139,4811128.94433479,3245935.65873041,4655765.12472888,3696944.54130863,7382807.9064261,2449349.77671731,511678.611870167,6010856.43471714,714615.605667887,3269902.56789571,3802482.81727794,8802526.5427531,3264522.28994462,4956365.9016532,4976854.64002029,2938508.42866629,1895782.34037769,4654611.44566601,5025115.9181608,3738627.13532606,3745334.88434925,4791744.17058162,4823865.95261582,7570851.7723996,1866379.03818578,3768714.50741669,3744286.69203234,3301058.81208065,4072717.55586028,2748742.06934341,3831632.76562053,458526.018242588,2561803.69479071,3665329.18081086,2043847.34322969,1945595.42690932,5384106.01546302,7365981.90276114,2023263.15854517,8741704.06043833,1493532.62207168,1360306.73191406,3842298.14784493,3214645.5523761,574330.129206887,584848.239749486,8721539.05971675,7378791.19168312,4768638.32776145,4320484.48531729,3535505.60424405,5997430.54359108,3581401.40900915,4885661.31167491,2526676.79445296,4606103.69623139,3464569.53814032,1936144.47360908,2524613.73177225,5105819.21141202,2939729.97948717,6007191.35241964,3212571.39680929,583984.056188579,3622327.98194143,5616133.78807134,4621029.39712005,81167.9810655815,2410594.57313771,5231843.45344926,7830496.36266234,6431894.63890243,6044025.54217038,2737486.85638481,3228451.76694011,937927.923188251,5337148.19410067,4222266.64017862,3569027.53419139,6310675.14716617,5355906.42763432,4031725.20274494,3279450.27616676,5808378.97971718,7507841.11491766,3526202.63333886,2282221.1065386,1120883.78992207,2401328.94229907,6018069.349654,2841879.30255409,5548850.64184584,2460913.36648866,4080574.52755588,1869507.84070682,6707554.50913209,4239615.66531738,4002706.30244868,4270353.90916201,3027188.27471579,3979832.83197005,6200665.88600835,6726025.35567573,4530376.35249237,3912498.02633274,8048158.35769487,4191862.58492923,1282048.24691467,7009585.61136179,3687758.56084386,2294596.25605919,3154687.58762131,4125339.76770836,4337433.68505104,3334587.46809177,3895868.32860082,3970804.87011564,3517355.95175503,6010133.73673806,2610033.23483057,1819779.71827188,3288187.74679493,4550262.9010078,3690724.02889908,8094250.79524506,5211067.46519985,4019599.34739106,2500136.19480102,5269375.99378771,4928775.01327747,2940602.40682221,-903493.797515083,513202.802272094,9328684.21583331,5093671.25375993],"Archive703_field19":[-909.090909090909,-581.472340407309,-581.472056560826,-909.090909090915,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-899.652705547337,-882.294012363388,-864.961384035393,-848.109195727815,-833.663559064911,-819.209373119737,-804.741961905016,-792.044947161019,-779.762036435911,-767.471169554169,-755.939693353583,-745.330101338338,-734.718202803041,-724.233948372071,-714.948143637375,-705.664148820671,-696.377211889191,-687.889456065411,-679.675442307771,-671.460576814819,-663.592558860664,-656.256316215892,-648.92093173006,-641.618493145465,-635.012952749358,-628.409485541435,-621.80529688511,-615.629561636635,-609.64163809582,-603.653918035257,-597.8480396115,-592.385619466876,-586.918015507945,-581.472015856919,-581.47199924937,-581.471982526216,-586.92041604808,-592.373216727389,-597.920916028142,-603.64181308375,-609.611238653476,-615.661092725343,-621.87655556179,-628.411079189648,-635.019942906319,-641.774019706464,-648.895248113947,-656.283806553163,-663.76104413389,-671.551006539914,-679.694082647482,-688.046222928951,-696.604785330196,-705.699871633758,-715.083775435035,-724.618725724693,-734.83558494554,-745.535243847739,-756.366405007121,-767.840884257343,-780.05982906738,-792.537511472642,-805.484143863794,-819.561988249041,-834.334354113257,-849.438022179785,-865.941576209895,-884.050600502273,-899.94427505219,-907.917828948999,-910.497205932314,-909.025105362453,-909.078569955089,-909.09412822528,-909.092721906524,-909.090856861041,-909.090858871088,-909.090912024775,-909.090909676073,-909.090908938948,-909.090909058764,-909.090909102162,-909.090909090841,-909.090909090913,-909.090909090907,-909.090909090904,-909.090909090906,-909.090909090907,-909.090909090905,-909.090909090908,-909.090909090908,-909.090909090901,-909.090909090906,-909.090909090909,-909.09090909091,-909.090909090907,-909.090909090907,-909.090909090908,-909.090909090903,-909.090909090902,-909.090909090906,-909.090909090913,-909.090909090915,-909.090909090914,-909.090909090914,-909.090909090913,-909.090909090912,-909.090909090911,-909.090909090911,-909.09090909091,-623.107646331137,-779.834344655039,-909.090909056745,-691.322582017725,-909.091971198324,-620.593571502907,-833.807275339198,-909.090909090905,-734.768212285003,-909.090911425943,-761.807799087628,-909.05243443664,-909.090909090906,-790.370606985939,-909.090909090903,-909.092741839884,-853.912840433537,-909.090909097441,-609.608115876485,-909.090909056258,-909.086572574161,-909.090909090907,-909.090909090909,-909.090909090905,-909.09090909091,-909.090858384633,-636.328302146378,-908.839919317047,-779.801683872264,-909.090909076902,-689.587765593547,-909.092755981898,-833.734452431672,-909.090909090904,-734.743242850087,-909.090911504544,-763.805188270759,-909.048330529111,-909.090909090906,-788.221227549686,-909.090909090906,-909.093408073014,-821.673112888861,-856.867100566386,-909.090909101794,-609.614308550483,-909.090909057664,-909.090909090907,-909.090909090908,-841.366511061004,-909.090909090907,-629.725858819568,-909.090858433884,-637.648282437076,-908.642062715594,-909.090909090909,-909.090909090913,-673.090509358612,-909.092754414208,-621.846388722214,-909.090909090913,-726.336874988682,-909.09091161938,-765.816213279894,-909.043546307323,-909.090909090906,-786.091190134322,-588.737311222481,-909.09090909091,-909.094068679235,-859.865386305696,-909.090909101872,-609.628051641415,-909.090909057998,-909.089487056525,-909.090909090907,-909.090909090908,-844.010318622269,-596.518464944968,-631.042458257206,-909.090858530995,-639.006760231805,-885.210716237854,-909.09090909091,-909.090909090909,-909.090909090914,-674.729035957111,-909.09274739368,-621.834725427174,-909.09090909091,-909.0909117373,-909.038424026966,-909.090909090907,-585.104658780381,-909.090909090912,-819.291742916689,-862.89166995492,-909.090909101945,-628.405018663503,-909.090909058376,-909.090843910153,-909.090909090907,-909.090909090908,-846.708427141937,-595.120597802846,-632.360221308026,-909.090858676519,-640.374400873687,-888.137463841936,-909.090909090911,-909.090909090904,-909.090909090911,-676.369365132893,-909.092734916021,-909.090909090905,-606.028051200445,-730.581527949859,-909.090911874083,-909.031902068475,-909.090909090908,-909.090909090909,-909.090909090912,-819.332799801602,-679.671075344432,-909.090909102018,-909.091416772995,-909.090909090908,-909.090909090908,-593.738427693557,-633.687258035485,-891.162967061473,-909.09090909091,-909.090909090902,-909.090909090982,-678.032334125619,-909.090909090907,-604.840195129336,-732.701905453179,-909.090909090908,-747.122269025207,-909.090909090909,-909.09090909091,-819.397345985484,-909.09090910209,-657.718964960379,-909.090909090909,-909.090909090908,-893.546480191526,-909.09090909091,-909.090909090981,-909.090909090909,-909.090909090906,-909.090909090908,-767.621079546487,-909.090909090908,-748.9178487819,-909.09090909091,-909.090909090908,-819.455816902196,-659.182721975121,-909.090909090907,-909.090909090908,-896.003842079837,-909.090909090909,-909.090909090959,-909.090909090904,-599.003401391992,-909.090909090908,-909.090909090911,-767.544525119759,-909.090909021369,-750.742774929398,-909.090909090911,-909.090909090908,-713.174538002181,-648.884144502839,-660.695960429019,-909.090909090906,-868.039161628499,-592.374583617954,-613.215340064048,-641.663707037517,-898.211444387971,-909.090909090938,-909.090909090903,-600.153133697814,-909.090909090909,-909.09090909091,-722.619214344926,-909.090909005785,-752.598422874626,-909.090909090913,-909.090909090908,-909.091459126091,-711.285546349129,-686.331765922554,-648.897719194265,-662.217431336486,-909.090909090907,-871.229769205086,-909.090909090909,-614.440031169635,-909.090909090907,-909.090909090915,-909.091167554621,-909.090909090902,-601.310433529912,-909.090909090909,-909.090909090908,-909.090909890595,-720.63851635805,-909.076577303646,-909.090909027672,-754.473652071085,-909.090909090914,-709.402417689491,-684.646659770042,-648.90805151042,-909.090909090907,-874.491705567572,-703.824125072432,-909.090909090908,-909.090909090909,-909.090908517122,-909.090909090906,-909.09090909089,-909.090993022485,-909.090909090901,-602.468622699016,-909.090909090908,-909.090909528414,-718.723577800201,-909.082148881344,-909.090909022396,-909.090909090915,-707.532146352244,-682.976595397711,-648.915783228097,-909.090909094133,-909.090909090908,-877.707096680827,-701.939806249474,-909.090909090909,-909.090909090909,-909.090909090908,-909.090909090865,-909.090909090901,-909.090909090908,-909.090909090912,-716.813375024007,-909.090909090908,-909.090909090906,-909.090909090908,-794.199550517334,-671.535224146109,-909.090909090907,-909.090909090908,-880.904109842268,-700.087113437292,-909.090909090909,-909.090909090908,-909.090909090909,-741.169963875197,-909.090909090908,-909.090909293293,-909.090909090908,-796.3999596116,-909.090909090907,-663.635745327797,-909.090909090908,-698.232886539183,-909.090909090908,-909.090909090908,-899.369825663228,-909.090909090909,-743.34360262901,-909.090909090908,-909.090909090907,-909.090909485196,-798.612878048153,-585.103163730703,-909.090909090908,-909.090909090908,-899.540632972974,-909.090884493669,-910.491557833039,-909.090909090908,-909.090909090907,-756.019241497352,-908.650918121141,-800.868468309741,-903.931782912025,-588.737538524448,-909.090909090908,-909.090909090908,-909.090877641683,-910.458073242616,-909.090909090908,-908.218168500861,-803.141679855066,-905.687908004985,-909.090909090907,-909.090870730328,-910.431280180106,-909.090908949121,-909.090909090909,-909.090909634415,-909.09090909091,-696.581365631923,-909.090909090909,-654.794654750728,-909.090863802019,-910.383656048694,-773.746529239589,-909.090908940511,-909.09090909091,-909.090909090909,-909.090909090907,-615.635333733914,-909.969238579717,-775.840047680895,-909.090909090906,-615.64936416369,-909.524822888435,-777.943539437647,-909.090909090906,-909.080071631244,-909.090909090907,-668.368451987648,-807.188698990472,-834.222580681708,-909.090909090908,-909.090909090906,-909.090909090907,-666.777337204514,-909.113647545707,-909.090909090907,-909.090909090904,-909.078260702679,-848.374693552536,-909.090874238125,-909.090852557434,-909.090909033199,-693.081244703858,-909.090909090906,-909.090909090902,-909.09090909091,-653.317862715686,-904.363157737198,-909.090909090906,-909.090909090906,-909.090909090907,-742.741003313644,-909.090909090908,-909.090909090907,-909.090909090905,-590.098486639945,-909.090909090894,-627.093867494979,-909.090909090909,-909.090909090907,-909.090909090906,-654.788333183982,-909.090908985734,-644.599565476655,-909.09090907407,-909.090909090905,-757.974775485468,-909.076102804134,-643.847330402579,-909.090909090906,-909.090909090907,-909.090909090907,-909.090909090906,-807.333944324024,-909.090909090909,-909.09090909091,-909.090909090904,-909.090909090908,-809.872647723357,-909.090909090904,-909.090909090904,-908.223983659985,-909.090910158317,-811.198219374847,-909.090909090906,-909.090909090909,-726.432884738791,-909.09090909091,-909.090909090909,-605.439576930677,-590.098724014781,-787.036805080949,-909.090909090905,-909.090909090908,-909.091366014677,-831.664066918069,-909.090909090901,-909.090909090905,-909.090909090906,-909.090909090907,-909.090909090914,-584.196273679481,-909.09090909091,-584.194746916171],"Archive703_field20":[415.721643163389,61.5501735317534,61.5497611102231,415.726109035101,408.550725886498,401.371570789442,394.073887076172,386.692644343924,379.22464006838,371.630939350043,363.875292016551,355.967800088646,347.989500177926,340.013879644278,331.598683804043,323.205786351828,314.695071876586,305.929335828445,297.024060962112,288.022876276495,278.795695139549,269.294460855449,259.687487153531,250.070142857955,239.81590074205,229.547757368152,219.137855029843,208.274448410822,197.188867812764,185.945127452011,174.419942690423,162.324582122195,150.063560101198,137.555551882554,124.272909592238,109.773076209944,98.5745651219256,90.6660467506308,87.3100668399501,86.5670337018308,85.0850610597372,83.6102253294073,82.2353135882615,80.90724000033,79.6858913404039,78.5481696166848,77.4327467616661,76.3774464233489,75.4008058953695,74.4528368661592,73.5372316997892,72.6851509902653,71.8800055301465,71.0814937344117,70.3313391167487,69.6195294014222,68.9271290299848,68.2561891249972,67.6248049028566,67.013489756773,66.4115341548139,65.8487738164054,65.3103660917405,64.7738605833348,64.2689666524336,63.7816789510861,63.3053695341554,62.8429327930473,62.4033524631646,61.9782106271137,61.5500822363144,61.5499761903165,61.5498702023997,61.978450490711,62.4091489037469,62.8393337835175,63.3039226696406,63.7867271427701,64.2695758996994,64.7713762444757,65.315885419207,65.8605131887187,66.4051897996167,67.0202212316676,67.6384010361406,68.2566956721283,68.9293544188977,69.6363974169754,70.343949854917,71.081026511853,71.8976829415698,72.7156412155116,73.535053180916,74.4795621476561,75.4370737980744,76.3972803234404,77.4585352649245,78.5959126264921,79.7379639829597,80.9360721702649,82.3106528331271,83.6926048389125,85.0822471998379,86.742141798367,88.4444562191325,90.1537237386914,98.2030124637236,111.713821054756,125.21350075476,138.494952554949,150.703363875672,162.917218232806,175.134077866237,186.487723593197,197.651390487556,208.816247448696,219.580161780061,229.879032022961,240.178757771251,250.399812953425,259.973507132303,269.547824207404,279.122530055549,288.229612493476,297.18576201835,306.142361246277,314.883512950592,323.305808480827,331.728666293984,340.127805754817,348.083969074598,356.040752078995,363.998097994262,371.666737588719,379.212395011003,386.758653160115,394.176848381484,401.356851300145,408.538549115229,415.724784636285,415.724091066032,415.723680114633,415.723422733614,415.722935290246,415.722298786749,415.721925042726,415.722045562691,64.8781584313568,78.560275657736,227.065281783648,70.6292757132041,162.515183223144,64.668168767027,83.6336679708425,279.024652402186,74.4629362314497,197.337536320696,76.9078238426976,124.559333398603,307.226783848383,79.5382057423414,395.167942319139,150.450940777065,85.5962057917068,239.907296251607,63.7845997753732,229.714824358463,141.813708283542,366.534375809249,379.237862127774,259.760883128878,349.068348503917,186.168587292946,65.9594462517556,101.75448365502,78.5544109558849,228.307505550109,70.4792787691363,162.609903670194,83.6217934545209,279.073575194497,74.457850554726,197.403397009917,77.0888111707635,124.713215364005,308.308073351125,79.3389358404188,400.357016302819,150.538033540589,82.4734160860281,85.861381768698,239.953827364643,63.7827618822972,229.755766155099,367.387296232956,379.243523300723,84.3570982186805,259.724264511776,65.4193751003588,186.248713293675,66.0694645306795,99.8347162693532,348.060294687311,409.983097063519,69.0648638138498,162.686353868095,64.7720184214768,410.339869129954,73.7192454909345,197.465938763057,77.2722604061067,124.861905891328,309.379510692703,79.140706426233,62.1215507487165,405.4765891923,150.625087297954,86.133102448583,239.998751312345,63.7821535618465,229.796910984407,145.068561150364,368.239229979635,379.240751807461,84.5975655263461,62.7302811812297,65.5287432707061,186.32861319453,66.1810369322645,87.6145365096216,348.049485347972,404.242686739514,410.936386245031,69.2043169036769,162.763044698291,64.7728629781237,404.955225613383,197.528389645587,125.000232885356,310.447716457547,61.8356238698925,410.599881589525,82.2559213328514,86.4242755795896,240.043706662401,65.3141859671344,229.83799705061,146.740168491266,369.08966069756,379.235192348857,84.8384759714982,62.6208129994759,65.6388332817984,186.408283741516,66.2919540383624,87.8966579018793,348.038635998231,398.503998121488,406.146506812699,69.3460206762683,162.83997555276,399.575685077037,63.4950374648719,74.0913241512946,197.590963915449,125.108141875985,311.513146934526,268.134557712137,410.937368282891,82.2655926849788,69.6215420690962,240.088691903573,148.403910717368,369.939462173528,379.230977239489,62.5114133010632,65.7496089651404,88.0997194698464,348.02635372369,392.690694609069,250.111228336345,69.4910798749213,331.615004123489,63.3999172347223,74.283053588759,312.576050427497,75.5651522303648,266.972131922284,406.155429715117,82.279706655358,240.133709239835,67.7500609593642,370.785278514589,379.227445290775,88.6041670406846,348.014070748358,250.152171647843,378.39442219491,331.631748333006,322.169812956931,77.4441295362149,313.636635315681,75.7290456248518,265.807824303211,401.371645430098,82.2939947694223,67.8745192553791,340.113567142699,379.219917349776,89.0191545238508,348.001786659949,250.193293288711,331.648363331352,62.9339790577223,321.131073609456,408.548956337301,77.43821739518,217.864464705172,75.8942035903608,264.641704287484,396.508852476351,72.5468490047419,67.0173860581341,68.0015899756418,340.099328706628,86.7955565121464,62.4077629934722,64.0732583693201,66.4126164621606,89.4916293310706,250.234423305463,331.664839537585,63.0248797651562,320.090945394366,404.96364196519,73.3635334629043,216.587337061394,76.0613189598267,263.474229384421,391.623905723722,160.680529279433,72.3786518358792,70.1973172669519,67.0161939360122,68.1284883106602,340.085088983006,87.0482737712508,295.931490462884,64.1717393009416,371.662583433211,250.275707587924,171.22396670723,331.681171374474,63.1166496671042,319.049652479418,399.557506683785,205.269869639683,73.1923597803041,134.098052128387,215.306455193345,76.2290320844407,262.306447843505,72.2105553603683,70.0523212359973,67.0150404068582,340.070848066203,87.3134086889975,71.7292974411441,294.838567285585,304.847867569824,195.670086842837,371.658406326471,250.317071392471,172.828964700123,331.697189643567,63.2090281946516,318.007390164877,206.774900108986,73.0242051804963,135.834036169197,214.034970320021,261.139082096759,72.0443278891243,69.907657109114,67.0144219957361,238.581971607062,340.056606595807,87.6450821279871,71.5614405528541,293.74560773913,303.76353713399,314.852694190958,250.358509731642,331.712922399525,316.964178838187,410.34119649701,72.8541843149787,362.905917785833,212.746708926506,269.522760036539,79.8896687492543,68.9288657241746,288.203115696861,340.042364869312,88.0200590768336,71.3999421962127,292.64092041613,302.676359270112,355.977970222866,75.0400858884822,361.93586429758,211.433505399501,269.498236258585,80.0952608254021,288.176555716826,68.2577300085483,340.028122633982,71.2400786749285,291.535751958859,301.586366865743,90.8129675576978,355.987476456169,75.2382123381428,323.293791653286,360.965389270152,210.12416184643,80.3012121677618,61.8354673592587,385.868481073611,300.492137717907,90.727429552501,174.710822799375,111.337640093137,323.280092618447,359.992367837754,76.3823935588927,98.6783661182385,80.5098855951441,93.6645791383179,62.1203169105783,385.044544681565,299.393796634185,174.816400100782,110.952716775292,359.015989881866,98.7825476659063,80.719083054682,94.5911913405518,297.168885855439,174.922135468297,110.53136268684,219.455504612743,358.023479796777,208.479629272066,288.079131838518,71.0826207341495,277.659837391442,67.512342116,175.028027891872,110.148820417221,78.005464027896,219.518712367948,357.032570794158,288.050568888861,276.522233468479,64.2693117783741,110.026354215799,78.2003965820409,275.374818963508,64.2703047473499,109.899745816613,78.3972082589011,274.223484189801,138.017262780242,363.955240347947,68.6582133926415,81.1307383263022,83.6813395988542,284.677097682158,273.067849091309,363.977361114319,68.5239653229459,122.423820972588,283.56835819213,384.615721238717,138.320767915807,85.0954428620441,186.024081716626,182.856328254908,225.819184329151,70.7804945282344,282.457174415273,389.940024124709,405.929105764493,67.3833783152619,95.0826869139893,390.417625195407,325.877860556908,373.339529531647,75.1779744649513,374.176006516577,393.271754875581,386.376091965181,62.2282213203691,255.728775644953,65.2052642555594,354.504928446209,372.92218352588,386.082798354867,67.5097239175854,221.9762534369,66.6531005708549,233.506589428525,392.528566943485,76.5590666534745,135.131341720754,66.5919514816112,325.365866001301,399.567994991195,326.389044654714,384.588969821037,81.140160426984,282.86608570677,405.70280322515,384.604512151117,374.592170274564,81.3748031367029,387.276640516671,395.159312063455,101.248879471592,205.769828887979,81.498066332382,256.853278666935,353.522935226576,73.7230352494284,257.998655795519,353.035538537438,63.448276880555,62.2276651413264,79.2265391016829,399.062971908441,326.899327703584,154.669994858741,83.4392078951896,256.290753298737,391.471881108657,399.315506661926,324.323432653892,412.132523679152,61.7641130049846,412.135983656261,61.7642377273008],"Archive703_field21":[1324.81722425369,642.999575310998,642.999575310998,1324.81722425369,1317.62958582482,1310.44194739594,1303.25430896707,1295.82589360673,1288.2701540081,1280.71441440947,1273.03121189311,1265.06191446867,1257.09261704423,1249.12331961979,1240.70305060362,1232.26512165065,1223.82719269768,1215.05864939139,1206.08437561136,1197.11010183133,1187.96782052144,1178.37250782509,1168.77719512874,1159.18188243239,1148.91238078897,1138.58792500775,1128.26346922653,1117.43520380759,1106.24021536394,1095.0452269203,1083.60317853605,1071.34712983738,1059.09108113871,1046.83503244004,1033.40304129116,1019.81893574152,1006.23651921946,989.662166399393,970.607893004991,951.59497773885,933.107878657702,917.283148300299,901.449326397946,885.608823086898,871.729602005076,858.306745940563,844.879766493597,832.295107741468,820.729229668796,809.160744028552,797.735299425189,787.635216770725,777.533435901635,767.430299541915,758.210340414232,749.28991170468,740.368548505076,731.830179422027,723.877763384579,715.92469206123,708.007874177697,700.860373161943,693.712403328805,686.564041811007,679.888306281754,673.418285433532,666.947974623616,660.678593255464,654.78580978381,648.892801732417,642.999575310998,642.999575310998,642.999575310998,648.895662244247,654.791746988614,660.687829481715,666.961981948789,673.436397869187,679.91081088023,686.594131641375,693.748058084244,700.90198059286,708.055898390624,715.985802281984,723.947065919653,731.908322963899,740.466972085173,749.399824769285,758.33266803072,767.584216198065,777.703846468136,787.823463028824,797.943062399303,809.423162986089,821.017975759548,832.612762040213,845.285843499284,858.753024269986,872.220162864561,886.246712917712,902.151297562713,918.055813006972,933.960234503822,952.756560310415,971.937959099879,991.114533402417,1007.27046283695,1020.79841442441,1034.31009512117,1047.59919611594,1059.81046823015,1072.02437871905,1084.24039509458,1095.59243368967,1106.75445886488,1117.91804245712,1128.68098954439,1138.97899717663,1149.27817867906,1159.49925861779,1169.07290898283,1178.64746081877,1188.22278058392,1197.33051633562,1206.28744881694,1215.24499352668,1223.98716999309,1232.41040651957,1240.83413655366,1249.23411866679,1257.19081584201,1265.14791576302,1273.10537088165,1280.77380811393,1288.31896056693,1295.86440926594,1303.28140868335,1310.45976022454,1317.63836664559,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,688.000845335006,858.45550624253,1136.11119139288,761.832404494661,1071.54063031329,685.158372651176,917.540703596184,1188.15904081604,809.265712295633,1106.38714220908,838.367761432795,1033.66219986583,1216.34348493327,869.901260498528,1304.30764551821,1059.50215986416,939.285280002398,1149.00383096526,673.431870078305,1138.78346109343,1050.88259258573,1275.7241284057,1288.28100010207,1168.85112413365,1258.17470335234,1095.27974484594,702.299478639777,1010.85574100682,858.381125668617,1137.34955863851,760.021372339064,1071.63737998468,917.411926237618,1188.1909105933,809.213228500599,1106.46060551906,840.673789141478,1033.79177890203,1217.4419763802,867.582357417762,1309.4350400173,1059.60492960846,904.217075140466,942.65309947565,1149.0495553858,673.427341846417,1138.83234578048,1276.55584296502,1288.28642334104,925.621691948156,1168.81415969138,695.150319189531,1095.35791655531,703.738583543157,1009.06310187709,1257.16626652719,1319.07444158944,742.174804003489,1071.73412965607,686.582095778889,1319.43327054496,799.956856364472,1106.53406882904,842.979816850161,1033.92135793823,1218.5404672119,865.263455260361,650.861023365472,1314.56243500914,1059.70769935276,946.020920263906,1149.09527980633,673.42281361453,1138.88122975976,1054.1659882423,1277.38755752434,1288.29184606204,928.401205941027,659.212324730598,696.588234653944,1095.43608903214,705.177688446536,973.537413189771,1257.15399158292,1313.33165867882,1320.03140306337,743.981059576597,1071.83087932747,686.576077953454,1314.04931658986,1106.60753290648,1034.05093697443,1219.63895865882,646.930299439297,1319.68982950823,901.683317825569,949.388741052161,1149.14100493466,693.740927207272,1138.93011373903,1055.80768607059,1278.21927156568,1288.29726878303,931.180721024391,657.736819716402,698.026150118357,1095.51426150898,706.616793349916,976.466934169637,1257.14171663865,1307.5888757682,1315.24558162668,745.787314537245,1071.92762899886,1308.66536263475,669.543344053302,804.690010022603,1106.68099621646,1034.18051601063,1220.72867260835,1177.21005842714,1320.02546549878,901.800312411872,749.311894673343,1149.18672935519,1057.44938389887,1279.050986125,1288.30269202201,656.261315106454,699.464065582771,979.3964538345,1257.12944169438,1301.84609285757,1159.22155473333,747.593570110354,1240.71943676336,668.24565959694,807.056586454179,1221.7615124593,822.709818898248,1176.04760848238,1315.23370649749,901.917308088668,1149.23245448352,725.483875492604,1279.88270016634,1288.308114743,982.325973499362,1257.1171667501,1159.26122668253,1287.43722699419,1240.73582213113,1231.23037793684,845.015125641043,1222.79435288871,824.690407818855,1174.88515853763,1310.4419474962,902.034302674971,727.089987361604,1249.22026918024,1288.31353798198,985.255494479228,1257.10489235216,1159.30089863173,1240.75220807735,661.859656732467,1230.19563380605,1317.62958624451,844.947446834955,1127.02857409102,826.670995944483,1173.72270859288,1305.65018849491,785.765458239448,715.973580416308,728.696099230603,1249.20641916634,954.985475356552,654.790262890737,677.313801069374,708.01747912943,988.185014144091,1159.34057058093,1240.76859402358,663.071245778883,1229.16089025371,1314.03576662398,795.881493360714,1125.79367853795,828.651584865091,1172.56025864812,1300.85842949363,1069.69903581701,783.707452485331,756.524117145617,715.961358408657,730.302211099603,1249.19256915244,958.375972061893,1204.99014323343,678.612305854384,1280.76720920601,1159.38024318793,1080.29495060124,1240.78497939134,664.368157847883,1228.12614612292,1308.64503793231,1114.38356310062,793.819924779051,1043.36368499388,1124.55878369267,830.632173785699,1171.39780870337,781.649447425046,754.715566069089,715.949136401007,1249.17871968488,961.766468767233,775.64913725938,1203.89591099328,1213.9622493573,1104.71910404115,1280.76060963698,1159.41991513712,1081.94906498744,1240.80136533757,665.665069916883,1227.09140199213,1115.90938381546,791.758355503556,1045.17440279705,1123.27411786277,1170.23535941642,779.591441670928,752.9070143801,715.936914393357,1147.67070810024,1249.16486967098,965.156965472574,773.594427901304,1202.80167875312,1212.86584967739,1223.96717292609,1159.45958708632,1240.81775128379,1226.0566584398,1319.4264958084,789.696786228061,1272.04580012858,1121.9350989606,1178.61309233308,874.055876402024,740.447287627447,1197.30296467423,1249.15101965708,968.547463492918,771.539718543227,1201.70744651297,1211.76944938225,1265.07266477718,816.27508335065,1271.06038838473,1120.59608005842,1178.57872291386,876.382150688707,1197.27541302654,731.845808472055,1249.13716964318,769.485009185151,1200.6132136576,1210.67304970234,990.077129012359,1265.08341491419,818.646529830671,1232.39224605132,1270.07497609454,1119.25706192372,878.708424975391,646.928320238085,1294.99179008057,1209.5766494072,989.86964779004,1083.87627139008,1020.65848961409,1232.37408539959,1269.08956435069,832.348050213383,1006.3842259494,881.034699262074,998.696929687111,650.857064963047,1294.15768660261,1208.48024911206,1083.96730262236,1020.51856381058,1268.1041520605,1006.53193208239,883.499381415043,1000.86705323393,1206.26206492908,1084.05833385465,1020.37863800707,1128.57660994288,1267.11874031665,1117.6421354219,1197.16520582055,767.553433506079,1186.80277586907,722.342591363389,1084.14936424672,1020.23871313478,851.816395975119,1128.62879999268,1266.13332802647,1197.13765417286,1185.63773090128,679.892807355338,1020.09878733127,854.128605598324,1184.47268593348,679.897308509277,1019.95886152776,856.440815221529,1183.30764096569,1047.27169740104,1273.08683155272,736.858756162495,888.365902996538,917.927035671882,1193.83417144055,1182.1425959979,1273.09610113521,735.05464787727,1031.60238114866,1192.74219461742,1293.70894543314,1047.49003069986,933.249938317162,1095.12339989227,1092.01295911141,1134.87282485504,763.643436650259,1191.65021717906,1299.09892964534,1315.0099499917,720.71650649265,1001.24448628274,1299.6146097447,1234.96474242787,1282.42655613302,817.968354517548,1283.25555907285,1302.46084168746,1295.49114555725,652.333559982098,1164.82763727677,692.304123684359,1263.60220916762,1282.01341047285,1295.21251797877,722.328729092553,1131.07811696004,711.192188121345,1142.58037374323,1301.73105143489,834.332424034521,1044.45098021892,710.385320007781,1234.45556333559,1308.65019745421,1235.4739209417,1293.68860958194,888.470351465777,1192.10569760049,1314.78619299316,1293.70352219417,1283.668705251,891.276181225445,1296.39580345775,1304.30119697814,1009.72793592025,1114.9040933459,892.708344751855,1165.95041461452,1262.62293489591,800.003858771319,1167.09302858468,1262.13636622295,668.900014185044,652.332570381492,866.255691783959,1308.14674371476,1235.98310003398,1063.72253344774,915.159257560094,1165.38902594565,1300.69748760581,1308.39847083086,1233.41482523527,1321.22779572088,645.947619165189,1321.22340537229,645.946188529345],"Archive703_field22":[800,75206.5831902603,-78697.8080624431,800,805.983155042252,880.134060341558,1092.03701104881,1475.12419965463,2023.07508329627,2701.51240939754,3466.32164954305,4273.23332993935,5086.78324772742,5876.04466576272,6620.57616456809,7305.4678396448,7922.96249941252,8469.11667611291,8945.63463589173,9361.13631223804,9734.32639647213,10095.8800531271,10483.8973693924,10933.1600194009,11473.1358209943,12135.9567040289,12954.3326098012,13969.2260161472,15232.1247672042,16799.6993953513,18743.1365421006,21154.0307187292,24160.440285639,27880.53656043,32336.7587827984,38386.7644081988,42496.3075740038,48568.9430399849,54507.8398884584,61430.2269915115,68960.4420774542,76390.1099819348,82880.1817598097,88275.4030141827,92548.5226202744,95868.6780908403,98347.6751813548,100057.224128371,101092.288646385,101569.283029866,101551.278344297,101128.619989449,100391.938044911,99395.9305689339,98195.942537347,96852.5026361922,95407.9342912211,93885.3400365897,92331.3324814089,90763.4621129174,89197.018579216,87646.7555035344,86126.9167201613,84637.9583934553,83181.0385615499,81763.7916190744,80382.8300518219,79034.3637281093,77720.9713189509,76444.8904292564,36729.9142645592,-1744.54056949832,-40216.6047304828,-78822.7728924812,-78957.524155626,-79095.2964103072,-79235.7866768603,-79378.4342605647,-79523.46420712,-79671.2107002998,-79822.3284782132,-79974.9911450959,-80124.7998853295,-80264.6917961797,-80383.6387770456,-80468.6619217733,-80501.234735973,-80457.1479439139,-80306.2602715677,-80014.3113415212,-79539.5588988762,-78827.8788486353,-77825.9283470931,-76478.7200314522,-74715.8770883203,-72476.9007259017,-69699.6748325535,-66298.4208313292,-62191.8265072185,-57353.8685136839,-51638.9317598204,-45009.5854480414,-37564.4720838684,-29474.874343642,-20922.293131208,-12299.6857048951,-4336.82270675525,2221.58393143065,7188.51614230375,10668.4521615904,12788.720144272,13811.4894265828,14144.3626411512,14210.559581448,14211.2084304515,14065.7693460673,13762.0065097915,13325.3242610829,12794.6851516721,12201.7548360736,11569.8583068325,10917.5481715073,10255.5854786839,9595.61089905647,8947.88765954503,8320.89840356462,7725.32478174355,7171.71016339437,6663.38274982602,6204.02152726819,5785.97406987628,5400.97385051303,5033.10251083561,4669.53166610414,4296.50174797406,3900.60147757203,3465.86966137516,2982.16341326798,2283.77493028993,800,800,800,800,800,800,800,800,51747.158264183,43344.176996614,12592.08030837,26881.0998008935,19607.5195490904,-47096.5087108947,38827.0329825118,10554.7171758735,31080.2110461108,15076.5906483809,14451.2931748806,27054.11251067,8581.6383575097,-37024.3858962799,2428.24214151316,15900.5985226962,35146.4208448128,11811.640403977,-39089.3611567815,12506.6821728449,13479.3046184674,4613.06276909701,2351.16435984234,10886.2971027471,5887.88711758683,15421.6653792425,54096.2207537581,9204.61168698907,69813.6762949337,12419.0346701479,62519.5618138963,17563.0830087439,58025.8197922329,10461.1225271949,66458.2118022568,14520.6631413551,-14295.1261427435,21417.5601771475,8732.36371451019,-11160.2413470414,1650.06945827334,13796.7293523664,61210.6922274084,18064.8518804699,11934.2661758838,1196.18902821357,12633.81356302,4317.26448989201,2624.11098899109,17733.0196097508,10679.7304363802,52909.0974263062,14479.1956581037,20548.6347916669,2604.12014740165,6019.54400749222,906.273147485109,60225.0643233191,15486.8350714396,-13938.5978395234,949.462139553259,65783.7655084796,13949.9130672822,-42232.8823359241,16017.0319423044,8781.53497449462,15813.1733239179,-53217.9625990424,1104.29392702222,13014.7957368992,663.267748644456,12081.0277316162,41479.5450181912,12871.6727193694,19480.1042310753,3967.15059266796,2938.26606947914,-2440.8982508593,-39889.4109329338,19693.3806052161,13846.814053105,-13002.0083981042,42411.5738793132,6002.02840005623,1407.40674127288,1033.5854824274,25064.1936148588,13989.5812143058,18921.5731653921,1660.15711041289,13622.2161157328,12250.072850323,8740.14956422765,-27479.4888840406,856.401089491623,40573.5507430273,-14768.490029024,12283.9213536876,-46621.3909436692,13128.945451732,22485.4460720161,3596.52552155403,3266.69551192552,-20544.6362704943,-684.771676076294,-13523.7144081957,13755.4035549038,-46561.572924164,32269.3366995321,5906.04774504568,2339.28161883957,2044.4488840144,-10137.3280198134,13518.7295956452,2676.14553077794,16480.4929753864,-5800.57387220753,13720.7214788377,9538.4244959442,8623.78131868802,10336.5619459558,829.679780651829,17740.2155344795,61506.7098272138,12509.9247141877,24199.8718883433,3242.46174433996,3583.13108524725,38518.4130448485,-46745.9791134855,23349.3634075702,5748.40500107946,3235.85761903779,11128.5641938842,-45341.3972030284,6860.33168113019,48431.1800153156,-41373.5095307091,8446.70714578106,71945.0823869955,10596.0710552235,901.213646850284,-5955.90110571237,12693.9625689811,57772.1864110464,2935.89651817635,3867.05780006944,14006.3844212785,5547.93245318408,11309.1270607471,2216.62411422537,7047.95003212294,7616.71134199392,43599.1592178963,8214.40126335078,42894.8002749454,10856.273808397,990.980818766699,-28887.8490017863,23224.902553337,6439.56607900179,4104.90202074873,4691.2495789729,5322.62921478475,11492.3143903069,7179.05523231753,47381.2644488795,7865.59384032455,827.956848254121,71142.7941822454,13252.9437779402,13712.6167572857,11101.0225886168,1093.29173234384,-43267.2480103234,-46031.1973843261,-11339.5870762054,6579.28690106812,46323.858280373,-39787.8466095778,-15004.7497512206,55351.9398412296,-4202.35476286914,11693.7016489321,7246.98770297288,15728.6870147861,8051.62309501299,846.618611458023,-42421.0778428872,13378.3718181568,-15593.912876269,11313.2477363461,1242.50798393813,21329.8817038919,-7407.31583313608,-44967.6252025156,-11802.019782112,-45921.5017493937,6625.70862847969,31991.115901034,9197.78600318081,-47262.5976660825,4572.26181894462,11902.4322484046,18316.8065229535,7241.00163357699,-15924.7635258484,8170.53705216991,947.49587889203,14306.3533256881,-6630.60466098366,25147.3160391127,13362.4345096944,-44237.581995485,11474.6178743815,28600.7338318459,-9502.51988581971,22403.0691160312,6589.40662429751,18426.1089358626,-43955.424518088,9423.39261122482,8739.4998861781,15568.2241413146,4421.06557942281,12080.0370773848,19006.7429599578,7148.25072662438,-47579.6963238633,8210.52935612104,14305.6363224821,29380.9001978186,27745.9675669422,13278.0890090443,11566.7721187507,64466.4024462691,25979.3568633409,56587.2174939889,11741.9589664669,6484.0379215768,4424.75078266035,-8142.243396659,9620.08929594178,8963.40498419917,8068.13476718282,12189.274173575,6957.20410114467,8157.21351234873,822.88775822111,65218.4150503478,3769.6978783642,13228.0258593883,11057.9381487669,67183.6920595177,-45272.723702633,9856.82201433825,6323.0161030275,-8571.64966126522,27761.7076228339,9771.60633182324,9144.5032165219,4496.57705351271,-4915.8478740057,4126.08071628833,13330.0236117742,11089.1868697138,41951.3371883132,10004.6871953737,59075.7763207643,6117.34269978034,63556.0285464128,9858.75769268007,9272.6911141208,31051.048912044,4740.65533565089,-40081.8230843515,7500.89695583619,4500.8623857708,13652.6283180041,16433.5615208438,24741.9782234005,1623.48015075183,9330.75283606966,37964.2848093479,16428.9594752041,6131.49252361506,7723.07167655295,4851.91761177934,71944.7674027799,37152.0048826505,-9309.43420609603,15479.930269998,51231.0975778936,1863.97531931023,9303.03298539044,14997.1504304971,10583.2551076687,5138.7009967783,30389.2649538803,-33717.1040488851,23408.263635476,9251.9602279872,13987.3677365792,15780.4953103268,13155.6627372427,5332.53066586014,13727.2824907245,9740.16229968134,-44056.7284816664,9971.82645410299,-46155.2830609368,13707.7450933182,22392.1015509654,15156.4599271529,13464.7133482342,5418.97826187355,9554.88777772309,10222.8888100967,50642.2680019662,29342.772548349,-12816.2927662556,10467.1202217888,18103.5775077049,35400.7754198116,-39836.5250073276,10682.8175534362,16098.6544127691,4924.37499920364,-10750.1017892786,64594.7591324808,-24478.0083043048,10058.2209745157,10851.4284502241,5017.27266064623,24141.1728418536,31900.9444804592,10240.4801649076,3825.92510520469,11801.341818311,53077.6294593819,16873.095369974,16744.6134640839,12680.8909846249,-8840.57467059737,10365.8054167723,3199.98003819041,949.036054537644,40109.732598956,3559.38441999341,1701.26899884427,7663.17265051961,3794.50442313559,22265.2090068698,3250.79912067251,1329.52248735867,2736.48428189706,-14083.2729483942,11860.5737762029,-13730.9828225253,5128.75432929636,4106.02740942623,2218.00339388654,-11570.9075864775,12867.6269469136,-29175.9891931377,12215.773982224,1961.8510896287,43354.9532555887,20528.7930775797,4711.59021958033,7717.43115294809,1154.82164032444,7536.82861414427,2621.24065956106,41437.2424811293,9866.059345186,1011.56332369633,3533.39106095575,2912.70962058986,4791.73514028653,3018.25681095725,1982.92467242711,15571.4876238256,13646.2773610627,-19297.1898623364,11525.841438593,5506.86332500169,30280.4082910353,11169.2424491217,5652.68001706256,-27506.944975673,12029.2625638387,55940.0014554902,1501.0075001279,7346.71996419581,19725.3047239302,-4345.23761058243,11722.1000737225,1824.93422986137,1302.66346051225,7748.99484261333,1203.12799362914,-59519.2766144164,801.490798726718,56587.1910974925],"Archive703_field23":[-5.19209209517889e-18,1046791.36114667,1046781.58808815,0,1.04618469203555e-17,-3.99851996022246e-17,1.84273593813053e-16,-9.2865140944261e-16,4.75305644694101e-15,-2.36872539451723e-14,1.13428999439512e-13,-5.21866467537085e-13,2.31842774121427e-12,-9.9950039071084e-12,4.20282409625946e-11,-1.73077657306217e-10,7.00532232863837e-10,-2.79464202810145e-09,1.10165795286334e-08,-4.30240940602231e-08,1.66969296314814e-07,-6.46282568506581e-07,2.5046587800126e-06,-9.74807944083344e-06,3.81771089731215e-05,-0.000150710138406049,0.000600386670149327,-0.00241621674319458,0.00983267265947604,-0.0404725111305646,0.168518838423129,-0.709817767739574,3.02556249050132,-13.0301662856706,56.4048127426038,-249.873577944268,1032.42995628472,15865.1336076266,32758.7591162052,48724.9390224032,65507.3824805977,84506.794200316,105796.530383461,129359.829548191,155022.642420331,182475.873105378,211454.64936071,241767.236241806,273219.698247593,305602.530104077,338755.496780814,372542.1087627,406824.68094882,441493.302687801,476464.603850016,511667.78151473,547035.792390786,582529.187059152,618107.225159211,653744.936028418,689421.420059477,725123.846217505,760843.554307372,796574.434343411,832312.91769369,868056.176846571,903802.132054295,939549.294363198,975296.530124694,1011043.60941689,1046790.98145786,1046788.58119648,1046783.83146375,1011013.94104382,975248.857584508,939481.523889261,903711.920367425,867940.521647724,832167.887118091,796394.590543992,760621.673522849,724850.95967802,689086.789756689,653336.144268198,617611.496401356,581929.983994488,546315.341441034,510802.503487175,475436.057114815,440272.115318594,405386.193926354,370867.492160639,336826.735080192,303393.507409522,270708.238639247,238937.26974471,208262.690087742,178885.584289779,151038.015435285,124967.860236353,100917.627265011,79229.1302240848,60139.1690085176,43632.3040484162,29534.7820145075,17801.1869631508,8553.99335466896,1752.61910404893,-2825.09747184663,-5484.04654005373,-6598.25849288911,-6685.48468092305,-6271.19942682061,-5726.26102014742,-5174.44079416153,-4676.44116600754,-4261.78575745115,-3944.54739131704,-3725.70513534513,-3600.84957529889,-3561.57054183481,-3601.40841726406,-3712.44318503329,-3885.99588506587,-4111.55128414694,-4375.6718647272,-4661.07401608904,-4949.28019775751,-5217.49845650581,-5443.70660429238,-5608.29399319124,-5695.88372810164,-5698.79413964114,-5610.37292547874,-5424.49985367273,-5130.23173361998,-4703.0075363671,-4125.00311897152,-3069.39599123709,0,0,0,0,0,0,0,0,789376.596652743,175545.419372101,-1436.90048625328,461237.218964694,-4963.77780403911,803574.495525643,71785.506087937,-2529.27787179621,302026.335587549,-2806.09491634073,220200.189086417,-8075.56546652149,-3812.60967096685,152166.750535581,-3272.28869487102,-8524.67021855562,44858.8866561433,-1131.8303272131,867968.345634273,-2464.4082670002,-8934.27477159096,-4272.23249984902,-1244.69137726388,-805.524534243954,-5167.43759001261,-4583.84331914761,717893.920799506,-3066.87614590323,178251.218782088,-715.738534133709,468743.470848966,-6520.13114568751,76758.8429372934,-3094.66276263085,303358.245747539,-3850.90272673009,214967.593408311,-9692.91262158574,-3264.82881238729,155011.854565491,-2129.10466345569,-8367.30398153548,95052.161565199,39387.3430049736,-1629.63828325417,867996.360839239,-2847.14734617799,-3642.65760643007,-1900.69379867794,59013.2311150849,-406.131759132146,753632.07229069,-5316.52636634974,710675.26265868,1388.97060291651,-4609.94231768323,-625.645014824739,539552.711172884,-7278.11031745585,796456.858912381,-887.288998921378,330167.973926279,-4551.62496257065,211016.17510695,-9813.69511780515,-2727.09635766601,159734.742630441,999096.700908501,-1052.79359336586,-7730.47924296501,37089.0139800882,-2054.10602908103,868025.534051993,-3166.1590325583,-8386.31594434385,-2951.14531701706,-2570.84804387714,55974.5013479573,948438.058588252,746427.426379238,-5644.69343418716,703468.43826271,22794.3772795328,-3987.2966700695,-1867.78299714338,-1237.0381291617,532176.404956671,-7375.35202347648,796491.521373535,-2444.97133813656,-4934.77918808127,-8768.07533455392,-2194.97191869742,1022944.32663133,-335.169903957865,94763.2933645106,39012.001921486,-2421.34143636407,760656.869737694,-3514.27840158442,-6350.64490355689,-2216.05469936311,-3242.91018059486,56638.0696498322,957392.413671409,739229.785075802,-5724.78988781932,696272.168990072,15268.1581460897,-3289.87066760102,-3314.85818323286,-3008.25943758585,524926.707942524,-7092.39643534354,-3818.08204593213,889457.872285723,315153.973933206,-5097.83441775512,-6525.7696873498,-1664.09465685352,-365.931103048522,-148.323719230023,93009.1823078744,511172.513970918,-2791.65756052266,-3369.50113126133,-1461.76832016697,-3892.13687473896,966345.283333696,732038.073381901,11070.5809305775,-2524.90193889424,-4389.96360149141,-479.097985577491,517777.198264305,-743.90094287761,896630.332104955,308757.567460412,-1128.09086096023,265378.309375179,-740.444169829279,-260.043480384159,93212.4700906639,-3219.74531230621,610769.070090558,-714.024337561904,-4485.75449841245,9504.19103322739,-1706.29549714341,-941.104344847993,-618.816101115362,-1477.78925267335,-655.530380839329,205645.814118433,-576.805773011422,258354.5290651,-1123.2888374406,-327.541599095681,95913.2819967774,603478.396124657,-4962.0893212848,-5001.20277894942,10008.9327459303,-855.201777096967,-1365.00224437817,-2190.81378105894,932383.394293207,-1283.03306184724,-62.79970346202,207910.278608674,-876.151961109613,252165.130825663,-1522.84219436025,-336.092104807437,377046.589249143,653367.416901688,596241.185814372,-4408.04226176573,37023.5659736588,975263.923358127,846520.611014629,689315.843274896,12656.7429518262,-1752.39226074286,-2875.74730627614,925216.391923178,-1884.04705285457,-56.4137220949027,342641.532051088,-1753.36029257509,246742.346059964,-1954.81136348953,-238.071044331571,-2737.33537272167,383853.049478248,482288.498450175,653420.164778998,589048.810425522,-3788.75326928144,27794.604992435,-431.687768685571,839343.749773036,-5213.62215252098,-2136.30289062971,-4284.3455315472,-3526.9740330421,918048.925603004,-2464.23455254107,-131.610958758599,-2426.43603763925,349269.593652274,-7511.89217566455,-2561.49940043613,242342.278353392,-2432.21984475503,391050.19970927,489392.508710259,653494.665003687,-3110.76562878744,22746.8674520443,411851.665740101,-854.802838775186,-500.062322984462,-1505.63441343399,-4731.78402486187,-2558.78351094055,-2237.29758976285,-4138.59517412398,910880.93305101,-3028.5386342862,-1229.17173492633,356423.214160367,-4084.87115797712,-3245.33261070549,-2965.41732586362,398741.489016009,496642.25945577,653601.006739315,-586.296097826512,-2380.85135417513,21525.2576233751,418790.955362858,-1288.04350774963,-981.191290753135,-4087.52550294813,-3043.46677055569,-4704.62454450374,-3580.70075661286,-79.5838156575116,364226.384650596,-861.075946338288,-3770.65248421692,-2992.60426598166,145444.890089793,546255.667931615,-3267.71032360884,-1608.4737723887,24127.6676848968,426016.915841514,-1741.72971836341,-1460.0977939096,-876.068401391816,281624.316745432,-1737.73389313557,-4145.19417165211,-2443.95069914744,137611.185837459,-2691.66574661815,582258.909386927,-808.007254867787,433608.347086338,-2222.45686937491,-1948.29388306625,6683.38117849357,-1753.92547417536,275547.354786102,-4404.30852465539,-2590.03191258505,-4409.52776298151,131661.476975049,1022959.67462685,-481.305247014535,-2452.32764518341,8725.91634192548,-5444.04525815339,-3307.87506720854,-3828.9825360374,-3385.07960699024,238828.212023777,-1088.08259264454,127286.785685152,1777.09544207918,999128.455178351,-1028.37860256033,-2977.26611728058,-6189.54338409859,-6465.73100429423,-4100.09710530416,-1616.99776115411,125099.522831283,772.28617749342,-3500.40436467575,-6423.6192058091,-7743.75379077961,-3685.91506172516,-4725.88325595015,-3210.93328342934,-786.743453582189,439922.635788835,-355.381469351381,624767.12322333,-6364.71643398171,-7925.8316427638,189318.440271694,-3937.24779014756,-5259.01275588911,-387.88405026037,-720.321818247001,832279.635667335,-6890.28349319407,184321.267201073,-1103.00321797857,832249.084995906,-4709.07065165823,180886.949667038,-1512.5858106439,-9626.50034594751,-4720.81669623863,560553.918771188,119251.087022176,73383.3348160683,-1163.63068734304,-1958.81149286856,-5259.95964658057,567798.777181456,-4712.01839605676,-1591.29117519258,-4904.91411802192,-7790.65550157911,57052.2236932842,-1802.14138067002,-3550.44561817777,-2110.28493861877,453995.626695839,-2053.17225977954,-4207.29618394438,-446.032921220806,632113.364747033,3595.81642119854,-1281.31593885692,-2369.16222816992,-3491.65425659436,276860.068760067,-2440.88449769441,-674.679423297542,-3045.80129452544,990169.557228786,-2727.96059085439,767843.298060935,-2587.39638924825,-4133.62189924133,-1946.65847413446,624823.357492161,-3053.96318769823,674843.652777667,-1564.59916070907,-2088.49765729633,231642.10636433,-9339.91015643669,678475.435157476,-2991.46085830952,-688.399240822274,-1721.93341140336,-2608.68678076049,115470.508553593,-555.126144073707,-702.286058020342,-4380.03477561113,-1724.00954800593,109540.163403454,-3681.28291065187,-2399.87028308325,-3852.07315844073,-3877.06209868317,108655.18427016,-1811.54790330255,-3727.12158690298,329050.283190044,-1212.17963304013,-4387.942580348,893009.072256238,990177.128909772,159914.299740188,-1636.56205233151,-1049.82582535408,-6609.22733352853,73714.2818026245,-2243.75633192003,-1667.72947429827,-1100.79217326679,-3418.1428398503,-1653.59472802351,1028898.79791457,-2.73554177351001,1028917.51426855],"Archive703_field24":[800,1049489.48728725,1049735.69919013,800,805.983155042252,880.134060341558,1092.03701104881,1475.12419965463,2023.07508329627,2701.51240939754,3466.32164954305,4273.23332993935,5086.78324772742,5876.04466576272,6620.57616456809,7305.4678396448,7922.96249941252,8469.11667611291,8945.63463589173,9361.13631223804,9734.32639647213,10095.8800531271,10483.8973693924,10933.1600194009,11473.1358209943,12135.9567040289,12954.3326098012,13969.2260161474,15232.1247672074,16799.6993954,18743.1365428581,21154.0307306381,24160.4404750815,27880.5396053001,32336.8079760479,38387.5776591271,42508.8469502405,51094.4683151625,63594.3465108289,78407.8597524861,95114.4559516441,113915.965382674,134395.05336774,156609.425891462,180547.081677266,206126.775806675,233206.633588838,261654.055233769,291322.251697789,322039.167899208,353649.471557045,386024.119171756,419028.474275344,452543.796037297,486478.120631083,520753.613436431,555293.464829484,590046.363305107,624965.292437757,660015.490301192,695167.607530908,730401.633420657,765702.788237575,801058.308396173,836459.131180933,871898.413682129,907369.656354581,942867.597909849,978388.405008987,1013929.48542562,1047435.1748263,1046790.03489007,1047556.09162946,1014081.95847842,978439.893320317,942805.175868017,907178.893551035,871562.783133712,835958.954560623,800369.818060492,764798.623401209,729249.554648342,693729.477082994,658248.082531481,622820.592040887,587467.200636177,552214.542626187,517100.135586942,482170.654274694,447483.883002022,413115.610520739,379152.385229602,345700.917829081,312884.347572551,280829.864430834,249687.644892351,219616.467402485,190776.13286631,163341.070741359,137500.663000356,113362.016416854,91121.4456550681,70907.0462787357,52654.9729289355,36194.5534371218,21637.109921065,9590.55960314875,2829.68353146922,7723.72578834825,11995.4423835729,14390.5655923418,15344.4760614192,15472.2634664535,15320.9030050041,15123.9307914979,14822.7854762827,14406.7914893621,13896.8960845705,13326.0964609279,12721.986430726,12105.6352978539,11496.216797935,10906.8450026894,10352.6186322515,9847.31169050764,9401.2687712994,9022.54143614101,8713.71339577156,8463.03490565409,8253.71581194941,8057.9437483359,7849.43373613528,7603.18193459738,7299.37054434793,6919.90794251192,6444.68537071272,5842.13423303218,5090.08343300569,3825.80967681915,800,800,800,800,800,800,800,800,791070.90689235,180817.344140546,12673.7985426562,462019.875854698,20226.0701312893,804953.446475041,81613.0956068099,10853.5386494653,303621.288626331,15335.5063254644,220673.884155149,28233.6636188799,9390.44777432001,156606.274202391,4074.8292234646,18041.5918287466,56987.6355907964,11865.7443475941,868848.103628443,12747.1725131111,16171.3610649111,6287.47315257848,2660.30646197536,10916.0585553829,7833.87681522503,16088.4860270884,719929.220563193,9702.09284652368,191435.227675351,12439.6424300532,472894.424869798,18734.2999583383,96223.2598264721,10909.2631347584,310552.602917731,15022.619940458,215442.374771533,23508.8161980018,9322.72938664898,155413.081955018,2693.6621698118,16135.7217607973,113056.013821359,43332.4550707061,12045.0168157247,867997.185075133,12950.6560897893,5648.69251361458,3240.15360729651,61619.9759097829,10687.4498922578,755487.043552453,15424.4143976276,710972.274668137,2951.38629763531,7581.98379255074,1101.25505784428,542903.47807576,17111.7781169295,796578.817580727,1299.52303636833,336657.681942739,14673.6963436152,215200.9351912,18784.4064081363,9195.23849893343,160515.558291979,1000513.05304301,1525.72586905065,15137.543307919,37094.9441584911,12254.4107418833,869016.041521193,13255.358222772,21208.6009904453,4944.44562181216,3904.18585107821,56027.6965921634,949276.522454458,746687.17150544,14953.1542955733,703588.58422672,48148.9899632601,7205.75323267657,2338.67634780836,1612.00567073586,532766.308801682,15814.6830515776,796716.241550894,2955.33525603505,14488.5063943406,15064.6417119901,9011.55459002158,1023313.35264256,919.65302728886,103083.921099196,41713.84172741,12520.2882624577,762084.265401583,13591.1501116866,23365.0588646512,4224.44011174959,4603.01705482829,60249.0913885525,957392.658561687,739353.478381357,14899.1391099599,697827.280480859,35699.1140534576,6760.52135388246,4057.15704246046,3637.22367791315,525024.584310828,15266.2417469477,4662.56425278752,889610.540191469,315207.350712414,14637.1484125388,11557.1281846816,8782.87055919196,10343.0371958511,842.83359218098,94685.9189150594,514859.606488136,12817.6272488268,24433.3243191711,3556.72950691389,5290.32681653675,967112.648435938,733529.091068626,25840.8694451105,6278.47830747764,5453.67352828388,11138.872290191,519758.664519175,6900.54631083169,897937.376239745,311517.259160642,8521.70467671644,274957.709414557,10621.9103449417,937.981155972494,93402.5553097127,13095.9324058583,613495.299494624,3021.47631466321,5922.51040092844,16926.5605411352,5804.39478573477,11348.2171403271,2301.38128756732,7201.21244865186,7644.86832767329,210216.763244373,8234.62767920434,261891.249527503,10914.2319388588,1043.70804457074,100169.18430008,603925.136658345,8129.59665163279,6470.1043141605,11053.8028444861,5390.8952723671,11573.0947102671,7505.89761800302,933586.513492187,7969.55082164262,830.33508014886,219745.264147362,13281.8734010004,252537.698299989,11204.9877671466,1143.78525734741,379520.99443219,654986.910251967,596349.006787457,7919.46037985413,59301.3008574512,976075.198405181,846653.581689511,691534.647746566,13336.1511577221,11824.2774362642,7796.71426541942,925350.076175797,8269.11529497059,848.496070295975,345257.537689866,13492.7797291897,247234.616221045,11480.8911592597,1265.11023721221,21504.81012343,383924.513311669,484380.308284388,653526.739629489,590836.090118606,7632.47444574831,42378.9046965455,9207.91082113318,840673.351202003,6934.51037134103,12092.6293033556,18811.1939502255,8054.29391611815,918187.033176892,8534.05692802776,956.592852253631,14510.6628836928,349332.526353036,26245.3048759168,13605.731704113,246346.795266998,11729.5587613642,392094.708799264,489484.755090393,653878.562650664,7286.778606324,29273.5626358861,414190.625096055,9462.08307924131,8753.79463931931,15640.861162389,6475.77029514599,12348.0633642224,19137.9669361995,8259.87036617212,912122.744863952,8751.27639645152,14358.3457872089,357632.136264125,28045.0510536723,13668.9367357601,11940.850772187,403919.165312898,497321.28534818,656046.026734679,11756.5872379921,6907.32950850932,21975.3301509061,418870.099698303,9705.93499564826,9016.94877770836,9044.48248152848,12563.4825928983,8398.5820832883,8908.50998733528,826.727189794054,370019.325086303,3866.79116057564,13754.9441399584,11455.7267946965,160211.936296832,548128.519837154,10384.3570326411,6524.39426426756,25605.0293073115,426920.513671165,9925.61900920836,9260.33609782923,4581.12442988556,281667.217373005,4477.08176837084,13959.6620378559,11355.3053878483,143863.661706072,10360.4454715419,585248.139602643,6170.47465195951,438241.448778569,10106.1574190792,9475.15960565775,31762.1665274142,5054.70746734136,278447.297116318,8698.35551828187,5192.88239072053,14347.0622457029,132683.105418552,1023258.84379227,1693.32292864915,9647.63491054428,38954.1851036775,17307.4648117718,6966.86716016656,8620.14752672214,5916.06866568973,249429.277381614,37167.9349780009,127626.765904709,15581.6016305853,1000441.05039033,2128.84159608028,9767.83170720962,16224.2093286113,12402.0549141619,6573.96715896983,30432.2543725685,129563.628067672,23420.9998157187,9891.99670321912,15391.8595335176,17578.1044203139,13662.2630591835,7125.29689565346,14097.8146225146,9771.88451046614,442123.196410122,9978.15708532926,626469.686748841,15113.3017844675,23753.4212082845,189924.169353009,14028.5575064273,7551.32707338667,9562.75768182633,10248.234928291,833818.943929037,30140.9075417567,184766.303483291,10525.0758589309,832445.961606578,35712.606271823,185221.58968248,10789.3700795999,18757.2967885113,6821.69915873364,560656.990091281,135621.91807873,77358.1716386368,10125.307182931,11026.8056061095,7269.12652489445,568311.752117565,32247.0677133614,10363.379835368,6220.60169242544,14140.9328496002,77924.2643685264,16969.0618750761,17116.8847676561,12855.2829096097,454081.693992892,10567.1868662722,5285.94489417455,1048.62519501733,633384.63554224,5059.55661933463,2129.80908571575,8021.04386816696,5156.54082353559,277753.914834604,4065.17060577414,1490.91326663005,4094.53925989268,990269.706009221,12170.2497626798,767966.060621409,5744.45306755752,5826.34457381702,2951.10458476342,624930.48731051,13225.0714325765,675474.051344463,12315.563507955,2865.42879206753,235664.41694218,22553.6087345772,678491.794493141,8276.93069122194,1344.43539663545,7731.03099413597,3698.12781221129,122680.411680371,9881.66443665065,1231.44876675293,5627.57114794694,3384.68407026304,109644.918368842,4760.43254811444,3113.09614887595,16040.8757378434,14186.3489429838,110355.473835082,11667.335885863,6649.5848745472,330440.602822534,11234.8278291223,7155.89487511726,893432.613661401,990250.195543444,169416.25371916,2220.66631139659,7421.34950638317,20803.1135265412,73842.2401581179,11934.9098285406,2472.18659141314,1705.48394893625,8469.39322174073,2044.96760209086,1030618.88234146,801.495467006761,1030472.39718727],"Archive703_field25":[9975701.23088959,5859569.56257607,-165704.739186537,-2853475.23660837,10021251.9164787,10024915.7120286,10044131.0209713,10072416.0938652,10102755.8830862,10135157.2509678,10161060.7971482,10176897.9862261,10183352.6984179,10177384.418341,10162582.7845593,10140482.2920834,10114832.1028953,10089898.553186,10072883.8043996,10072841.3855704,10095308.0623437,10133202.5995278,10155635.947582,10141307.647865,10086713.5670068,9993249.91744201,9862288.98206916,9692557.89940179,9480687.76922537,9218969.21265136,8900152.71250902,8510558.36418703,8043541.88636067,7497950.18645814,6792608.99218086,6149675.06789182,1791649.56594047,4776267.83712598,7109498.92445911,6414051.1070203,6192522.60296638,6095277.74715953,6032029.44359206,5992377.21217848,5971489.10036176,5947818.71692653,5922402.98787565,5913760.01148656,5918311.34951173,5904380.7645416,5902777.65708603,5919235.96726134,5926038.31632072,5934359.50134915,5948843.89757554,5962410.91284089,5973142.8841017,5982880.71565305,5992841.81108346,5998616.54656121,5995275.40704133,5995161.40086126,5985211.75221259,5969784.61357508,5953340.6509399,5935396.91399651,5927106.51873753,5940833.66264562,5959905.71232493,5990535.55067367,4377908.21500615,2812332.21195096,1156326.47218075,-173270.81903152,-213903.444291657,-195989.236923535,-190508.025537597,-173259.8574179,-118923.525763665,-12828.3700201049,125815.842871454,224215.473035629,300012.768562224,370361.224953375,448292.940192721,526853.896768721,612217.754687201,701300.377461585,796164.50940916,893027.730998527,992043.160950451,1096903.46583673,1197954.23623905,1311351.97641386,1429536.06465069,1535322.94036467,1636411.98555633,1742469.84529074,1832712.22655835,1934311.04682281,2045632.66859521,2140615.52177715,2194938.48855263,2216251.50634588,2253029.40356022,2273748.0639481,2190554.47304196,2019778.77702199,1814920.69946905,1599633.74825531,1347459.61644957,992327.224362731,468896.105179053,-96408.3686427901,-544961.710354941,-710895.460894624,-807573.261178686,-870648.27256377,-906024.848137353,-927527.813815514,-939365.713383074,-942516.899821116,-942110.315555809,-936437.204789328,-927620.573267956,-915235.469981035,-894584.525023924,-869667.850622048,-841670.759510995,-815959.216609154,-795568.016866993,-778722.319949665,-773573.080210613,-778430.908171609,-793293.153924197,-815954.524165298,-841737.566808399,-956553.55388683,-515197.306297265,-1324362.42504162,311006.903095216,1674327.61468825,3029744.11946636,4369165.70892273,5720675.44308225,7099741.59559105,8541510.85159088,4764360.18192282,3864907.85162343,7372704.59590448,3519772.60071061,5900191.39797643,1189593.92383844,3962650.21658293,1807821.03615109,3441329.85830075,6650772.39558542,3164454.89989666,4605495.96083453,478198.447508055,2804377.99239342,1717942.59128123,3586381.10236363,3912791.14943714,7425154.22033318,1419323.08350724,4743856.15272769,2880831.67099735,2851017.53806631,7589031.00594301,7425081.29321606,574069.141001247,5150681.39238053,4778278.1504841,4162726.20402529,4874699.59739127,8677878.33433376,4717852.25244858,4749535.3693329,4986733.77152327,426897.71567218,4672395.74520487,5301102.17702894,3579521.83029827,3920711.78663059,1880522.52724548,3846194.378273,2411684.57063381,2726137.62765687,4930351.93691664,3438016.37882518,6082744.90842887,2974691.21016344,3377759.28265943,4046130.05019212,6380209.16584229,3389523.35473198,8804684.36517524,4772323.55623304,3881164.83071477,3583833.91433532,3250878.82755647,1925467.28969281,2377616.93466364,4743182.02816602,3672183.79242056,2405671.883715,1142521.53608464,4690703.80226209,3962015.91936047,2599811.31122014,3461780.87959321,3280188.64495918,3218684.58593721,793972.202970706,3063739.53335294,2160744.53473382,4397915.93181237,4703787.11354206,4458720.58671254,1909411.36427732,4439276.60200777,5238032.81514693,5188350.02507336,4267200.0609904,1308588.95298357,3579058.27246733,2624663.63864176,2423631.49607365,5071781.90470805,3287566.60353618,1709291.44508665,-20429.3949419147,3559563.5095152,2602089.96185161,3589925.24773586,703632.560634687,2623104.55551083,3378815.41780825,4670457.56696592,1739668.6013311,3749533.76646286,3966317.3458197,3297809.6355585,3271123.46961703,1231838.1128111,489327.973793304,5458478.07499828,6436206.99422059,4008693.42897407,3177609.61387468,2840612.61972638,2413129.00323253,1318586.70382514,1375606.98987964,3877589.54669384,4653401.32319846,1021563.24216776,-288434.855906618,2650019.21427944,1733274.3318799,47190.5838098173,3548605.72752378,3237248.68946787,1217391.95724173,2840736.10310181,6046552.31418491,8793612.50742555,5511133.26081764,3267456.48607212,4744855.29071109,1834775.79572561,6667295.38288092,7648719.66212756,2824689.37128305,4370509.92105367,1270266.67040022,2807372.67843039,6022281.19404812,141314.652359945,8800102.18267534,1904537.97086288,8782720.87182445,4740355.54333058,2527219.57175525,7408313.99028405,4849255.90939577,7417701.59712948,6491703.50998269,4132800.38181992,446692.746036802,4765847.71703231,8879614.59280513,1629693.72834739,4910170.28792186,7398155.85356646,7441555.92974,8841444.86723813,7408061.41161794,8776908.08093764,3859879.29963185,8761428.0471561,3896979.91026156,6016655.55972616,7424830.4747922,3038553.65260535,3582006.54075306,547440.333837189,422897.522019029,4203296.35645598,8784640.9957125,6057715.66100655,6036576.71980913,4726863.66669586,7416187.06270762,8008986.16255223,4874892.51373268,8558786.48739145,3092750.11176049,4608017.35971666,8304396.22533394,2310068.53605399,1515841.3840593,2522104.04275689,1918960.22245767,5104001.42127539,1312074.67487043,2368241.57527735,4783291.37644788,3313209.42653155,4638851.61482328,4664301.30109001,3512940.11064103,6052626.38533861,9026006.08752722,2417478.7782327,7277094.07187549,3479397.89330468,3204252.84552606,9172649.02055178,7098652.11453215,3034626.8827579,2001744.51920162,2456707.01251172,1697738.04130125,3290184.72832043,3664322.12898049,8740405.50045846,1141979.28870718,434052.660016385,3205804.49726455,6137752.51943276,3287998.14078546,2275905.92801978,4679500.46449969,9042837.2303348,6784813.3228145,3155563.83227427,5014908.66554784,6010960.73888349,2486482.78833993,1809918.16371867,3476433.09687968,2739469.19773363,3603439.7428985,4661150.19936873,3526647.94309328,2211069.87646556,7393096.09014381,8747632.08436335,8021668.1138421,1639590.79619171,1802909.05156219,7471685.41592801,1908714.57643747,1028214.93686673,3294124.47382299,8216986.77927416,3455559.24765647,6171200.45532143,4749520.9172406,428310.30983175,4693428.8882815,3542057.00330094,4782458.93155768,8760489.3218542,6032545.95107223,4467749.38163404,2926634.52211915,6025020.82030316,7399983.14314913,486470.797239548,425162.220509818,529403.693807418,1897706.37102301,6979828.22819207,4679876.53626013,8756501.66052546,3499042.44025775,420561.917914219,4870036.56776194,1830207.27518584,437592.466983165,7407476.76997526,3433976.26533827,3499834.70347234,4639385.21422896,6037016.50924958,8770491.16608004,3400637.912789,7374054.90594527,2205371.83281772,1796014.82725828,3878215.40733163,1823398.04311426,4767758.26845476,8788236.87136623,4706238.40271741,3243323.41561677,4656886.6702459,3425875.9344901,7380480.0197879,2597575.21087841,508688.088861491,6009135.95882152,729231.539583938,3253318.5486615,3815265.51332944,8800823.6843072,3262929.5357685,4685875.5065905,4959077.58139263,3112248.63233184,1894649.21944599,4653726.85451587,4861796.04127951,3361734.64622436,3908350.90136439,4925530.22516302,4846114.89433687,7569245.50200256,1861787.19863824,3776668.49340629,3884174.33248704,3301067.1340662,3850973.31121058,2940048.18332685,3745000.65471421,450850.783908323,2592362.02974184,3720063.68017219,2077381.22947715,1946183.39338064,5404364.56789595,7375204.30819629,2135825.49231699,8764283.85271014,1588557.93888807,1422244.23783135,3733780.28087929,3193500.71226307,565804.964042766,585507.255950409,8733700.88126218,7394924.25418517,4761611.36414857,4107072.45002062,3707157.79760398,6006376.43473419,3584188.64953921,4605490.12947102,2699628.18412997,4608203.54550602,3475303.68837082,1936493.89387536,2581766.17315266,4922075.19334559,3129050.09841206,6012701.05591295,3208670.8875223,584883.058644797,3574531.51384576,5407197.51484398,4621665.40635667,82824.3999379236,2544600.11115483,5029956.87276996,7805886.33840453,6409843.82022138,6074034.97035852,2838401.62046344,3224278.03822314,938642.299605405,5337087.48571133,4179243.63507201,3776636.92924336,6309377.7783608,5356617.38807873,4031119.11453125,3179122.15398459,5806960.53182419,7506395.74503276,3526030.72090241,2292309.83712703,1108014.71330268,2407417.64921874,6016475.65554177,2841999.37832814,5547794.16603083,2481762.79923814,4115168.35855271,1911538.27632851,6740283.87202684,4239002.43302485,3863665.9141304,4207032.11456747,3021420.14093744,3980577.30279426,6200153.87274583,6725669.84925352,4529777.06303916,3720042.25504355,8062467.92980457,4192195.75267392,1283029.80003928,7007841.34926601,3828689.00739681,2294965.00161413,3154775.93428818,4215235.58762395,4362756.2924756,3498889.03988171,3901112.06168854,3970560.87686361,3398610.04822037,6035712.57060678,2610367.68556997,1852625.92115026,3308069.54573613,4391420.18023428,3691070.76089934,8092397.60631949,5157255.33733386,4211623.53134982,2494731.14424307,5268343.42162245,4928690.28266705,2940667.55527079,-902810.291243779,521813.907923908,9327216.94281518,5109982.86079081],"Archive703_field26":[-909.090909090909,-583.505684792306,-583.507869659202,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-899.67929386164,-882.344845421345,-865.044093768022,-848.222174947559,-833.815929294387,-819.401322257301,-804.978220217474,-792.33384777786,-780.104091254644,-767.869160493752,-756.39782521946,-745.851205253728,-735.302236225083,-724.882492072315,-715.66544829272,-706.44799609253,-697.228730465407,-688.811099887198,-680.666258085291,-672.520564658246,-664.722598401607,-657.457009415967,-650.191316654864,-642.958577418432,-636.424378097326,-629.890599197591,-623.356339590606,-617.251332334847,-611.333608831626,-605.415779311802,-599.680335208348,-594.28762234843,-588.893028010185,-583.506225518175,-583.506706248574,-583.50718650135,-588.892817475381,-594.276884718357,-599.752660634426,-605.403616882473,-611.303009326766,-617.282481917758,-623.427431830993,-629.891905075707,-636.430570093435,-643.114093730935,-650.164959158646,-657.483682958882,-664.890608110416,-672.610333076014,-680.683879294715,-688.966697897042,-697.45576915664,-706.482478255176,-715.799151713193,-725.266760417812,-735.417926438918,-746.054464558342,-756.823088993443,-768.237355757178,-780.400001126943,-792.824072635054,-805.719500295801,-819.750934352529,-834.484730717257,-849.55094104847,-866.021561518386,-884.101096158193,-899.964208272977,-907.918731257632,-910.498095523447,-909.025020361393,-909.078552217922,-909.094132447528,-909.09272471448,-909.090856757909,-909.090858797493,-909.090912029977,-909.0909096771,-909.090908938649,-909.090909058708,-909.090909102189,-909.090909090838,-909.090909090911,-909.09090909091,-909.090909090908,-909.090909090912,-909.090909090905,-909.090909090905,-909.090909090908,-909.090909090905,-909.090909090905,-909.090909090908,-909.09090909091,-909.090909090908,-909.090909090908,-909.090909090909,-909.090909090912,-909.090909090905,-909.090909090903,-909.090909090907,-909.09090909091,-909.090909090909,-909.090909090909,-909.09090909091,-909.09090909091,-909.09090909091,-909.09090909091,-909.09090909091,-909.090909090909,-624.644609150982,-780.175771442167,-909.090909056683,-692.215804710718,-909.091972829905,-622.15854874065,-833.958662279212,-909.090909090908,-735.351617635154,-909.090911430348,-762.234588748366,-909.052371421107,-909.090909090905,-790.666286203172,-909.090909090904,-909.092744520356,-854.01458503512,-909.090909097457,-611.299932046531,-909.090909056197,-909.086566259337,-909.090909090909,-909.09090909091,-909.090909090904,-909.09090909091,-909.090858309979,-637.72537721839,-908.840077409514,-780.143434239566,-909.090909076876,-690.495165411892,-909.092758839018,-833.886314680503,-909.090909090908,-735.326966216381,-909.09091150903,-764.221782309044,-909.048260644841,-909.090909090906,-788.526116866666,-909.090909090906,-909.093411475111,-821.857648480903,-856.963315133304,-909.09090910182,-611.306180443817,-909.090909057607,-909.09090909091,-909.09090909091,-841.498467716636,-909.090909090906,-631.19296811979,-909.090858359379,-639.031017410341,-908.641678866548,-909.09090909091,-909.09090909091,-674.136445217257,-909.092757266463,-623.397357130529,-909.09090909091,-726.972110883135,-909.090911624015,-766.22270386065,-909.043472761796,-909.090909090906,-786.405380044118,-590.687349439466,-909.09090909091,-909.094072815013,-859.956173084699,-909.090909101899,-611.319972719647,-909.090909057941,-909.089484800648,-909.09090909091,-909.090909090911,-844.135782485181,-598.367943095849,-632.495503193465,-909.090858456717,-640.375240764675,-885.257722200823,-909.09090909091,-909.090909090909,-909.09090909091,-675.760935816024,-909.092750235381,-623.385718023839,-909.090909090909,-909.090911742087,-909.038347170443,-909.090909090907,-587.09864603543,-909.090909090911,-819.482677991657,-862.977063681381,-909.090909101973,-629.88590982686,-909.090909058319,-909.090843824329,-909.090909090911,-909.090909090912,-846.827575321995,-596.987702596268,-633.799144558069,-909.090858602542,-641.728647638142,-888.180724515357,-909.090909090909,-909.090909090905,-909.090909090909,-677.387212909416,-909.092737741199,-909.090909090905,-607.761859504717,-731.190214182682,-909.090911879067,-909.031821393289,-909.090909090908,-909.09090909091,-909.09090909091,-819.523135590704,-680.661700217249,-909.090909102045,-909.091417523298,-909.090909090911,-909.090909090912,-595.623087673568,-635.112035969796,-891.20225979762,-909.090909090909,-909.090909090903,-909.090909090983,-679.036164630255,-909.090909090908,-606.58802755064,-733.297399968544,-909.090909090908,-747.632491948181,-909.09090909091,-909.09090909091,-819.587160651708,-909.090909102117,-658.90541522682,-909.09090909091,-909.090909090912,-893.580449391093,-909.090909090909,-909.090909090981,-909.09090909091,-909.090909090908,-909.090909090908,-768.018664258337,-909.090909090909,-749.417191700304,-909.09090909091,-909.090909090907,-819.645075324226,-660.354895814183,-909.090909090908,-909.090909090912,-896.031662612703,-909.090909090909,-909.09090909096,-909.090909090908,-600.821546900112,-909.090909090908,-909.09090909091,-767.942303711202,-909.090909021241,-751.231324443803,-909.090909090912,-909.090909090908,-713.903625188202,-650.153957483875,-661.853903417286,-909.090909090909,-868.116296538889,-594.278119624653,-614.865017715759,-643.003824901359,-898.234993930448,-909.090909090938,-909.090909090907,-601.957162686862,-909.090909090907,-909.090909090909,-723.280865522952,-909.090909005618,-753.076271014502,-909.090909090912,-909.090909090908,-909.091459969268,-712.028380544896,-687.266293297829,-650.167695961257,-663.361171783861,-909.090909090909,-871.301669862203,-909.090909090909,-616.075562126561,-909.09090909091,-909.090909090913,-909.091167938235,-909.090909090906,-603.100353913534,-909.090909090907,-909.090909090908,-909.090909892023,-721.313861663731,-909.076554510814,-909.090909027534,-754.940879862491,-909.090909090914,-710.158970831437,-685.595264318002,-650.178181164272,-909.09090909091,-874.558516825496,-704.620488970208,-909.090909090909,-909.090909090908,-909.090908516757,-909.09090909091,-909.090909090888,-909.090993149053,-909.090909090906,-604.244447155245,-909.090909090907,-909.090909529163,-719.412845381367,-909.082135233986,-909.090909022245,-909.090909090914,-708.302388801145,-683.939277369364,-650.186053739029,-909.090909094141,-909.09090909091,-877.768610932898,-702.749887572201,-909.090909090909,-909.090909090907,-909.090909090908,-909.090909090861,-909.090909090905,-909.090909090908,-909.09090909091,-717.516585070327,-909.090909090909,-909.090909090886,-909.09090909091,-794.479107660447,-672.594707489124,-909.090909090912,-909.09090909091,-880.960066849315,-700.910984961646,-909.09090909091,-909.090909090906,-909.090909090908,-741.71502474373,-909.09090909091,-909.090909293639,-909.09090909091,-796.670344385779,-909.090909090912,-664.765691312981,-909.090909090909,-699.070560472099,-909.09090909091,-909.090909090906,-899.396917389354,-909.090909090908,-743.875706722256,-909.090909090906,-909.090909090908,-909.090909485884,-798.874205763233,-587.097472248991,-909.090909090909,-909.090909090905,-899.567383489959,-909.090884433175,-910.492452151972,-909.090909090905,-909.090909090908,-756.477134871642,-908.65372283037,-801.120959213645,-903.950053892166,-590.688820638826,-909.090909090909,-909.090909090905,-909.090877570637,-910.45913864244,-909.090909090908,-908.223295124262,-803.385437686624,-905.697928704769,-909.090909090905,-909.090870648631,-910.432462204728,-909.090908948841,-909.090909090907,-909.090909635366,-909.090909090909,-697.432573093928,-909.090909090909,-656.008655930173,-909.090863709623,-910.385172960838,-774.115296283913,-909.090908940215,-909.090909090907,-909.090909090909,-909.090909090909,-617.257008214964,-909.970635810675,-776.199213740545,-909.090909090908,-617.270956812539,-909.525698408584,-778.293170607806,-909.090909090908,-909.080054095562,-909.090909090908,-669.456066063171,-807.416854879855,-834.373301025392,-909.090909090909,-909.090909090908,-909.090909090908,-667.879089239939,-909.113659037229,-909.090909090909,-909.090909090906,-909.078242565444,-848.487956398947,-909.090874186483,-909.090852471103,-909.090909033092,-693.9603629785,-909.090909090909,-909.090909090904,-909.09090909091,-654.546177266275,-904.3883055213,-909.090909090906,-909.090909090906,-909.090909090912,-743.276926762601,-909.090909090912,-909.090909090907,-909.090909090906,-592.031862676231,-909.090909090891,-628.588827091999,-909.090909090908,-909.090909090911,-909.090909090907,-656.00246606071,-909.090908985529,-645.911582853447,-909.090909074042,-909.090909090905,-758.422239748578,-909.076078673469,-645.166367839845,-909.090909090905,-909.090909090906,-909.090909090907,-909.090909090907,-807.562093091856,-909.090909090909,-909.09090909091,-909.090909090907,-909.090909090911,-810.092933705933,-909.090909090904,-909.090909090904,-908.227290693493,-909.09091016024,-811.414645847158,-909.090909090904,-909.090909090909,-727.068077814931,-909.090909090909,-909.090909090909,-607.180388828533,-592.03222094429,-787.347314538458,-909.090909090905,-909.090909090908,-909.091366709559,-831.821559892863,-909.090909090899,-909.090909090905,-909.090909090905,-909.090909090905,-909.090909090909,-586.200685500276,-909.09090909091,-586.199484929528],"Archive703_field27":[415.72307986248,59.5021196160184,59.5014809936884,415.726246520083,408.555818601074,401.37961140587,394.083066883318,386.702576860359,379.235156151887,371.641730968065,363.886191667091,355.978618671132,348.000136938739,340.024146946196,331.608391989622,323.214907167429,314.703543144442,305.937132576205,297.031246292362,288.029534623188,278.801883588136,269.300291668637,259.693153096764,250.075797144223,239.821583185687,229.55379826571,219.144425221358,208.28173037988,197.196985536778,185.954326818637,174.430212679214,162.335554356193,150.07410071637,137.563753970538,124.2764033026,109.769558636434,98.5569657771707,90.6288266301802,87.2504903072864,86.4812688539489,84.9661829395585,83.453709503553,82.0373200763624,80.6615730963593,79.3890850270758,78.197266612391,77.0243952982,75.9090967670079,74.8702456427531,73.8586888703474,72.8775235893563,71.9589307170079,71.0864266613476,70.2197144185795,69.4007849044631,68.6199265587724,67.8581019443916,67.1175152850286,66.4164037665312,65.7353079018891,65.0633838742504,64.4307201392927,63.8224134397864,63.2159424568331,62.6411014782241,62.0838878658171,61.5376234336417,61.0052411626248,60.4957837808994,60.0006437156644,59.501971974231,59.501820046156,59.5016682086609,60.001143785912,60.5015381311311,61.0017439268225,61.53633545146,62.0891350505668,62.6419498229685,63.2137425531323,63.8282926361043,64.4428825214327,65.0574885482769,65.7425743498492,66.4306119351336,67.1186878823992,67.8610910013089,68.6376365701537,69.4143542219394,70.2202318364129,71.1052507913869,71.990710342298,72.8766617512723,73.8867747689314,74.9081890733378,75.9305147076287,77.0518905101856,78.2467889569522,79.4432677548193,80.6923630624046,82.1141303124549,83.5383870308171,84.9652347156401,86.6574718228495,88.3872029422645,90.1190774778008,98.1872958267275,111.709766196472,125.217205948987,138.503774946838,150.714069578574,162.9279685559,175.144275858033,186.496862686993,197.659447167213,208.823465986076,219.586744829969,229.885047896174,240.184417214797,250.405493844015,259.979162782925,269.553639402029,279.12875679641,288.236276490135,297.192949216728,306.150179593753,314.89201497411,323.314938045809,331.738377313816,340.138078362618,348.09459735287,356.051591475258,364.009010117118,371.677514758756,379.222835456526,386.768553833172,394.185951626516,401.364853290178,408.544489498108,415.725183939532,415.724656587052,415.724384679912,415.724253936424,415.723907051811,415.723421644853,415.723177400576,415.723383107098,63.3343007970179,78.2100039148903,227.071435036695,69.7266807248996,162.526187665221,63.0964871138132,83.4777402065943,279.030870740527,73.869330317701,197.345636037792,76.4706778553247,124.562914945995,307.234682659365,79.2342862344894,395.176932474942,150.461482318324,85.4896767454903,239.912969355273,62.086957358707,229.720870729708,141.823144313676,366.545248962431,379.248383655831,259.766551847627,349.079013048234,186.177763158146,64.5554645309521,101.743136989368,78.2038170065467,228.313602552273,69.5627192156912,162.620939482226,83.4655987732471,279.079797979847,73.8639759823225,197.41148564623,76.6619074483837,124.716876982222,308.316054993277,79.0256917516305,400.365261028709,150.548643283602,82.2831121111953,85.7605886887366,239.959493659018,62.08506860565,229.761803422669,367.398160616933,379.25404709476,84.2209910473151,259.72993143872,63.9454905749248,186.257879975283,64.6795515872711,99.8211026549372,348.070926792559,409.987633355412,68.0099171797292,162.697320189475,63.2142718771221,410.344221793489,73.0730258503785,197.474018759749,76.8555205741442,124.865639878533,309.387574420319,78.8180334723101,60.1675216547636,405.483368930599,150.635763586937,86.0378304301443,240.004416150578,62.0844114700718,229.802941254242,145.078469180167,368.250084269911,379.251266410214,84.4680300157887,60.8751762118961,64.0689280286568,186.337770685778,64.8051943499504,87.558622851658,348.060120728673,404.250045221753,410.940387835461,68.163447942684,162.773940214502,63.215061472985,404.962408029282,197.53646077082,125.004021011482,310.45586201522,59.8346513058954,410.604031506155,82.0586840534526,86.3343712183523,240.049370092222,63.8265172618781,229.844020189111,146.750312444643,369.100502890312,379.245694968439,84.7152537377184,60.7482028302508,64.1930809511655,186.417432033482,64.9301802111269,87.8441354277691,348.049274421879,398.512564235994,406.153331285635,68.319202232431,162.850798966236,399.584044569192,61.7553526236223,73.4720274993062,197.599027791963,125.11188888468,311.521374000106,268.140357925049,410.941297295375,82.0688324165632,68.6221070035739,240.094353964277,148.414254546422,369.950291436235,379.241467599808,60.6213295300576,64.3179174633962,88.0505715144784,348.036991739568,392.699984138932,250.116882588161,68.4782912940117,331.62471342234,61.6462009875973,73.6770281191557,312.584358712414,75.045381892724,266.977901841688,406.161745807269,82.0830329279687,240.13936997155,66.5557476642788,370.796089121603,379.237923384674,88.5589664516553,348.024708356364,250.157828563722,378.404985837703,331.641457856339,322.178858168483,77.0363600883519,313.645025017295,75.2200850563852,265.813563972996,401.379673689405,82.0974010385781,66.6942914168471,340.123840101658,379.230376747016,88.9781331532184,348.012423845055,250.19895366893,331.658073138225,61.1103031383123,321.140041482856,408.554140543925,77.0301618498109,217.871110241587,75.3958746228587,264.647417566771,396.517665851678,71.8082565207121,65.739629422619,66.8354383123115,340.109600862732,86.7149853444327,60.5001897381125,62.4175650669618,65.0645605478864,89.4537466815758,250.240087173383,331.674549660014,61.2152185239658,320.09983582011,404.970340899121,72.6916791034602,216.59406074843,75.5735910731444,263.479918859591,391.633363779871,160.691515722682,71.6263584732612,69.2537529672809,65.738331024654,66.9764121437948,340.095360331697,86.9724708948625,295.938606948187,62.5300800771035,371.673361602673,250.281375264732,171.234465864669,331.690881828185,61.3210111775681,319.058465418234,399.565933623438,205.277369145952,72.5069786178567,134.105234233847,215.313260258659,75.7518276222196,262.312125734236,71.4445343309829,69.0947596639671,65.7370712317314,340.081118603179,87.242241419289,70.9230427715405,294.845615218828,304.855585645755,195.678335960533,371.669185465789,250.322742972597,172.839356153819,331.706900339557,61.4274153238232,318.016125578882,206.782288944426,72.3252314303573,135.841751118655,214.041852757724,261.144746540231,71.2645439420024,68.9360846209227,65.7363475211813,238.587675999931,340.066876322179,87.5786021851508,70.7413558164868,293.752587475522,303.771177124367,314.86119261937,250.364185265867,331.722633258717,316.972836453247,410.34542759521,72.1416069133232,362.916818276473,212.75367164609,269.528580989891,79.6020063834865,67.8604442447081,288.209778615245,340.052633786248,87.9582865896769,70.5659808648146,292.647836871224,302.683921727463,355.988788297817,74.4851781261436,361.946765339071,211.440555732177,269.504064093088,79.8166810041355,288.183217541532,67.1191925783822,340.038390742731,70.3922194528546,291.542606241999,301.5938522732,90.7760602453623,355.998293133312,74.6963490996363,323.302919392901,360.976291170394,210.131297565148,80.0315651802439,59.8344457710508,385.878476097288,300.499547054714,90.6904370653388,174.721056656663,111.334003005315,323.289218087706,360.003268004464,75.9143101008015,98.6609505141696,80.2490252484863,93.6389051300906,60.1661316379611,385.054602134097,299.401130856938,174.826624997493,110.949354810312,359.026883591572,98.7653152645232,80.4669228748781,94.5704749033237,297.176074482112,174.932351401055,110.528214100242,219.462083931353,358.034354752424,208.486901663385,288.085793617345,70.2216240045424,277.665975176142,66.2904778531825,175.038234857247,110.145549943482,77.6271669094041,219.525293657451,357.043427377237,288.057229042421,276.528322264253,62.6414952589433,110.023010492653,77.8318795921166,275.380862113517,62.6425372958379,109.896313069346,78.0384186035693,274.229483144284,138.025659181845,363.966141690084,67.5617908607573,80.8936109305655,83.5264649944337,284.683585161343,273.073805554963,363.988268454072,67.4134590771111,122.426516486529,283.57478850833,384.625802332541,138.329419601206,84.9768217526747,186.033274615279,182.865819570065,225.825397070373,69.891842673318,282.463549707555,389.949607954939,405.93557930757,66.1472403188248,95.0551966638886,390.427211548408,325.887169315961,373.350252552308,74.6322104320723,374.186700257881,393.281039521512,386.38602894401,60.2916167304657,255.734442645503,63.7035284693118,354.515712094177,372.932921053376,386.092753929268,66.2877357591811,221.98268604695,65.3332800729388,233.512503235245,392.537887756319,76.1013737657208,135.138828798331,65.2650336395024,325.375139139345,399.576429535941,326.398388653512,384.599060006824,80.9032393911555,282.872485842587,405.709431396668,384.614586684154,374.602847837902,81.1462467436827,387.286496179575,395.168327294988,101.236312214971,205.777298532613,81.2736552487257,256.858939280143,353.533695768702,73.0770861145766,258.004317295857,353.046290555756,61.7016380649765,60.2910359443472,78.9075163678833,399.071499438101,326.908706399037,154.680547548563,83.2768836874238,256.296416300377,391.481331167623,399.323988525207,324.332632037935,412.135715196271,59.7513713181933,412.139297941587,59.7514554873747],"Archive703_field28":[1324.81722425369,642.999575310998,642.999575310998,1324.81722425369,1317.62958582482,1310.44194739594,1303.25430896707,1295.82589360673,1288.2701540081,1280.71441440947,1273.03121189311,1265.06191446867,1257.09261704423,1249.12331961979,1240.70305060362,1232.26512165065,1223.82719269768,1215.05864939139,1206.08437561136,1197.11010183133,1187.96782052144,1178.37250782509,1168.77719512874,1159.18188243239,1148.91238078897,1138.58792500775,1128.26346922653,1117.43520380759,1106.24021536394,1095.0452269203,1083.60317853605,1071.34712983738,1059.09108113871,1046.83503244004,1033.40304129116,1019.81893574152,1006.23651921946,989.662166399393,970.607893004991,951.59497773885,933.107878657702,917.283148300299,901.449326397946,885.608823086898,871.729602005076,858.306745940563,844.879766493597,832.295107741468,820.729229668796,809.160744028552,797.735299425189,787.635216770725,777.533435901635,767.430299541915,758.210340414232,749.28991170468,740.368548505076,731.830179422027,723.877763384579,715.92469206123,708.007874177697,700.860373161943,693.712403328805,686.564041811007,679.888306281754,673.418285433532,666.947974623616,660.678593255464,654.78580978381,648.892801732417,642.999575310998,642.999575310998,642.999575310998,648.895662244247,654.791746988614,660.687829481715,666.961981948789,673.436397869187,679.91081088023,686.594131641375,693.748058084244,700.90198059286,708.055898390624,715.985802281984,723.947065919653,731.908322963899,740.466972085173,749.399824769285,758.33266803072,767.584216198065,777.703846468136,787.823463028824,797.943062399303,809.423162986089,821.017975759548,832.612762040213,845.285843499284,858.753024269986,872.220162864561,886.246712917712,902.151297562713,918.055813006972,933.960234503822,952.756560310415,971.937959099879,991.114533402417,1007.27046283695,1020.79841442441,1034.31009512117,1047.59919611594,1059.81046823015,1072.02437871905,1084.24039509458,1095.59243368967,1106.75445886488,1117.91804245712,1128.68098954439,1138.97899717663,1149.27817867906,1159.49925861779,1169.07290898283,1178.64746081877,1188.22278058392,1197.33051633562,1206.28744881694,1215.24499352668,1223.98716999309,1232.41040651957,1240.83413655366,1249.23411866679,1257.19081584201,1265.14791576302,1273.10537088165,1280.77380811393,1288.31896056693,1295.86440926594,1303.28140868335,1310.45976022454,1317.63836664559,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,688.000845335006,858.45550624253,1136.11119139288,761.832404494661,1071.54063031329,685.158372651176,917.540703596184,1188.15904081604,809.265712295633,1106.38714220908,838.367761432795,1033.66219986583,1216.34348493327,869.901260498528,1304.30764551821,1059.50215986416,939.285280002398,1149.00383096526,673.431870078305,1138.78346109343,1050.88259258573,1275.7241284057,1288.28100010207,1168.85112413365,1258.17470335234,1095.27974484594,702.299478639777,1010.85574100682,858.381125668617,1137.34955863851,760.021372339064,1071.63737998468,917.411926237618,1188.1909105933,809.213228500599,1106.46060551906,840.673789141478,1033.79177890203,1217.4419763802,867.582357417762,1309.4350400173,1059.60492960846,904.217075140466,942.65309947565,1149.0495553858,673.427341846417,1138.83234578048,1276.55584296502,1288.28642334104,925.621691948156,1168.81415969138,695.150319189531,1095.35791655531,703.738583543157,1009.06310187709,1257.16626652719,1319.07444158944,742.174804003489,1071.73412965607,686.582095778889,1319.43327054496,799.956856364472,1106.53406882904,842.979816850161,1033.92135793823,1218.5404672119,865.263455260361,650.861023365472,1314.56243500914,1059.70769935276,946.020920263906,1149.09527980633,673.42281361453,1138.88122975976,1054.1659882423,1277.38755752434,1288.29184606204,928.401205941027,659.212324730598,696.588234653944,1095.43608903214,705.177688446536,973.537413189771,1257.15399158292,1313.33165867882,1320.03140306337,743.981059576597,1071.83087932747,686.576077953454,1314.04931658986,1106.60753290648,1034.05093697443,1219.63895865882,646.930299439297,1319.68982950823,901.683317825569,949.388741052161,1149.14100493466,693.740927207272,1138.93011373903,1055.80768607059,1278.21927156568,1288.29726878303,931.180721024391,657.736819716402,698.026150118357,1095.51426150898,706.616793349916,976.466934169637,1257.14171663865,1307.5888757682,1315.24558162668,745.787314537245,1071.92762899886,1308.66536263475,669.543344053302,804.690010022603,1106.68099621646,1034.18051601063,1220.72867260835,1177.21005842714,1320.02546549878,901.800312411872,749.311894673343,1149.18672935519,1057.44938389887,1279.050986125,1288.30269202201,656.261315106454,699.464065582771,979.3964538345,1257.12944169438,1301.84609285757,1159.22155473333,747.593570110354,1240.71943676336,668.24565959694,807.056586454179,1221.7615124593,822.709818898248,1176.04760848238,1315.23370649749,901.917308088668,1149.23245448352,725.483875492604,1279.88270016634,1288.308114743,982.325973499362,1257.1171667501,1159.26122668253,1287.43722699419,1240.73582213113,1231.23037793684,845.015125641043,1222.79435288871,824.690407818855,1174.88515853763,1310.4419474962,902.034302674971,727.089987361604,1249.22026918024,1288.31353798198,985.255494479228,1257.10489235216,1159.30089863173,1240.75220807735,661.859656732467,1230.19563380605,1317.62958624451,844.947446834955,1127.02857409102,826.670995944483,1173.72270859288,1305.65018849491,785.765458239448,715.973580416308,728.696099230603,1249.20641916634,954.985475356552,654.790262890737,677.313801069374,708.01747912943,988.185014144091,1159.34057058093,1240.76859402358,663.071245778883,1229.16089025371,1314.03576662398,795.881493360714,1125.79367853795,828.651584865091,1172.56025864812,1300.85842949363,1069.69903581701,783.707452485331,756.524117145617,715.961358408657,730.302211099603,1249.19256915244,958.375972061893,1204.99014323343,678.612305854384,1280.76720920601,1159.38024318793,1080.29495060124,1240.78497939134,664.368157847883,1228.12614612292,1308.64503793231,1114.38356310062,793.819924779051,1043.36368499388,1124.55878369267,830.632173785699,1171.39780870337,781.649447425046,754.715566069089,715.949136401007,1249.17871968488,961.766468767233,775.64913725938,1203.89591099328,1213.9622493573,1104.71910404115,1280.76060963698,1159.41991513712,1081.94906498744,1240.80136533757,665.665069916883,1227.09140199213,1115.90938381546,791.758355503556,1045.17440279705,1123.27411786277,1170.23535941642,779.591441670928,752.9070143801,715.936914393357,1147.67070810024,1249.16486967098,965.156965472574,773.594427901304,1202.80167875312,1212.86584967739,1223.96717292609,1159.45958708632,1240.81775128379,1226.0566584398,1319.4264958084,789.696786228061,1272.04580012858,1121.9350989606,1178.61309233308,874.055876402024,740.447287627447,1197.30296467423,1249.15101965708,968.547463492918,771.539718543227,1201.70744651297,1211.76944938225,1265.07266477718,816.27508335065,1271.06038838473,1120.59608005842,1178.57872291386,876.382150688707,1197.27541302654,731.845808472055,1249.13716964318,769.485009185151,1200.6132136576,1210.67304970234,990.077129012359,1265.08341491419,818.646529830671,1232.39224605132,1270.07497609454,1119.25706192372,878.708424975391,646.928320238085,1294.99179008057,1209.5766494072,989.86964779004,1083.87627139008,1020.65848961409,1232.37408539959,1269.08956435069,832.348050213383,1006.3842259494,881.034699262074,998.696929687111,650.857064963047,1294.15768660261,1208.48024911206,1083.96730262236,1020.51856381058,1268.1041520605,1006.53193208239,883.499381415043,1000.86705323393,1206.26206492908,1084.05833385465,1020.37863800707,1128.57660994288,1267.11874031665,1117.6421354219,1197.16520582055,767.553433506079,1186.80277586907,722.342591363389,1084.14936424672,1020.23871313478,851.816395975119,1128.62879999268,1266.13332802647,1197.13765417286,1185.63773090128,679.892807355338,1020.09878733127,854.128605598324,1184.47268593348,679.897308509277,1019.95886152776,856.440815221529,1183.30764096569,1047.27169740104,1273.08683155272,736.858756162495,888.365902996538,917.927035671882,1193.83417144055,1182.1425959979,1273.09610113521,735.05464787727,1031.60238114866,1192.74219461742,1293.70894543314,1047.49003069986,933.249938317162,1095.12339989227,1092.01295911141,1134.87282485504,763.643436650259,1191.65021717906,1299.09892964534,1315.0099499917,720.71650649265,1001.24448628274,1299.6146097447,1234.96474242787,1282.42655613302,817.968354517548,1283.25555907285,1302.46084168746,1295.49114555725,652.333559982098,1164.82763727677,692.304123684359,1263.60220916762,1282.01341047285,1295.21251797877,722.328729092553,1131.07811696004,711.192188121345,1142.58037374323,1301.73105143489,834.332424034521,1044.45098021892,710.385320007781,1234.45556333559,1308.65019745421,1235.4739209417,1293.68860958194,888.470351465777,1192.10569760049,1314.78619299316,1293.70352219417,1283.668705251,891.276181225445,1296.39580345775,1304.30119697814,1009.72793592025,1114.9040933459,892.708344751855,1165.95041461452,1262.62293489591,800.003858771319,1167.09302858468,1262.13636622295,668.900014185044,652.332570381492,866.255691783959,1308.14674371476,1235.98310003398,1063.72253344774,915.159257560094,1165.38902594565,1300.69748760581,1308.39847083086,1233.41482523527,1321.22779572088,645.947619165189,1321.22340537229,645.946188529345],"Archive703_field29":[800,64692.9958977454,-61144.8375231209,800,805.914601681878,879.721146269329,1091.28484764455,1474.4529974382,2023.16757312504,2703.16929927399,3470.37410128629,4280.53200426198,5098.22519095271,5892.60681612517,6643.36637979645,7335.75640467264,7962.13695967401,8518.52730226745,9006.28263448163,9433.02866110901,9815.55734302324,10181.9396708838,10567.9148659079,11006.7288162936,11526.3947118778,12156.3021618149,12925.3227234341,13868.6892077561,15029.5500794281,16453.5824683219,18196.2473520368,20325.2790496864,22933.4454500934,26102.4526155742,29850.4985070111,34934.899034588,38332.5659552487,43377.2976849222,48329.4294504053,54070.3675041165,60293.5105525203,66416.8307165154,71746.5717943879,76154.6764730284,79619.0996532099,82286.0949964464,84250.6066741696,85579.5594859527,86357.3989394469,86680.555996031,86604.1306896495,86202.6293782992,85551.6685744199,84695.2289544081,83677.5718504336,82548.6550382799,81342.4683088898,80077.285925116,78790.0699263893,77495.1150898147,76203.7391650748,74927.3945528932,73677.3094360588,72452.9112795588,71254.7629068011,70088.9795898927,68952.8146498702,67843.0821589115,66762.1304962743,65711.3397530867,33233.0364497706,1775.44664174477,-29679.6898631557,-61240.085186479,-61344.9700388121,-61452.1383898556,-61561.3914677742,-61672.217236745,-61784.7832497366,-61899.1699608095,-62015.9497843155,-62134.9688327964,-62253.1364874674,-62365.2759725808,-62463.2584153715,-62537.4315168096,-62573.5863398016,-62553.1275063024,-62452.6983947431,-62245.3413170738,-61897.6955968651,-61366.7342634397,-60609.5084157182,-59581.0432531482,-58222.7837576216,-56483.0190745841,-54309.6719807248,-51629.1302792575,-48371.2048976254,-44507.998251996,-39913.6537953609,-34544.7141047225,-28476.0158146906,-21844.9775247113,-14810.1524054888,-7713.8441968473,-1160.09877895574,4234.29787034913,8320.93343929827,11183.5187559545,12921.103702854,13749.2636358389,14011.4589549612,14064.1143737462,14057.5013626107,13913.0982229288,13619.5931188195,13200.6106857819,12691.1434500712,12120.0015284309,11508.8910241895,10875.068382186,10229.1831970118,9582.67579544372,8945.91906486071,8327.59445339639,7738.58545380081,7189.66918108193,6684.4617606385,6226.83628789449,5809.36572117845,5423.91310910429,5054.79834212065,4689.37923830583,4314.06765516019,3915.56390466053,3478.00858455141,2991.28035339802,2289.38497543046,800,800,800,800,800,800,800,800,45556.1328429282,38917.7741200208,12600.7193815507,25309.6878360959,18969.5575373666,-35262.4221625917,35201.3878976074,10560.2486819755,28779.2154781778,14909.0326942733,15139.2490124071,25357.7449538699,8595.25767156826,-27517.9924853608,2434.61846496972,15736.4309173811,32131.1621653442,11860.2181851695,-28731.1078401801,12528.8779331476,13638.232951372,4628.80576069408,2352.94931443406,10961.7436012873,5910.32019940476,15242.7491430703,47492.6772284975,10269.8984929033,60768.3330310414,12429.8640724368,54478.5401841842,17174.3639105476,51149.2296129084,10449.4109086893,57833.8863343936,14413.8587779386,-8568.93077360174,20552.7669124263,8753.94122915845,-6103.1656430074,1652.86140725853,13873.3849006801,53771.6493453064,17910.7780744992,11980.1746447206,4208.15947250361,12641.9357331263,4330.27491263693,2627.75706645301,17685.5083012498,10761.7037750641,46515.0969800428,14396.6733738786,20061.8742367568,4711.94842877505,6041.62589844988,906.454119250917,52554.8879297644,15340.8519760356,-8149.29604888397,949.860892346394,57264.9513128637,13898.818027573,-31632.1960851248,15928.3003306686,8811.38540139918,16202.7886163731,-40303.2394314301,1104.92437810696,13153.2030869154,3354.49022334024,12116.9152383,37147.2961771558,12843.0460103884,18866.6271941303,3977.10817016771,2944.21502957394,855.374991805416,-29395.2732354668,19355.6080941308,13814.8954048375,-7367.59720037009,38211.7106165288,6023.64892539459,1409.44113112583,1034.35288563307,23787.8615656408,13999.3388338369,18719.8353310195,1663.50888614458,13592.3509508924,12685.1667644077,8777.60734119992,-19262.1331073118,856.407043000595,36649.9070296469,-9545.42745832761,12295.4013844724,-34869.5108780352,13051.6767546943,21469.3268138259,3603.50530464145,3275.18279307038,-14259.0576650888,2657.46829740634,-7803.86166732764,13702.0175089123,-34806.0155150202,29723.4415588752,5926.58827549385,2345.64417578598,2049.38298809741,-5007.06794042883,13538.9734156836,2684.21825972773,16701.7635892014,-1484.793864123,13657.2951298707,10361.7995519234,8666.87418893343,10421.2177731056,829.61446556004,17730.2193614279,53618.2702886005,12484.0787381712,22959.2237951708,3246.91469342088,3594.21175913979,34708.0891619606,-34966.308786521,22273.2175613174,5766.98147572736,3246.68069539461,11199.473299507,-33813.0115088943,6885.98007343095,42826.1540872813,-30720.5923335845,8492.09386520668,62390.6819538276,10672.8551536687,901.058568855943,-1954.63555994401,12627.96955239,50525.0040741264,2938.53547918293,3880.58480404525,14440.567948471,5563.9240451925,11376.1295182604,2217.36699982139,7076.06163621199,7651.25691910167,39119.7624760972,8258.12279910895,38503.0968897591,10918.9427161227,990.716894017354,-21014.2386412289,22270.3151574991,6462.29292572382,4120.58559843373,6626.45313051044,5336.06435429521,11550.7730717005,7208.31556798508,41972.217787361,7902.93864788027,827.825264919425,61821.5044501717,13211.2545373433,14517.1452692722,11143.7402680381,1092.84635101931,-32190.838746139,-34371.9164882497,-5991.84617484839,6602.69611385279,41446.2824523849,-29318.7801153339,-9033.99898697626,48533.0176007298,-861.675924378248,11734.6854678567,7275.61630959714,16092.8974327725,8088.94301156808,846.38599053178,-31527.778484925,13337.3107126315,-9599.25109008375,11331.6407104002,1241.81052413027,20478.8445343149,-2778.42194288819,-33514.6168927732,-6382.91852899925,-34274.3927516651,6649.99163921076,29478.6614603807,9262.0918533747,-35407.309211323,4590.38384790426,11915.8286914268,17831.5826293914,7267.62498620256,-9794.20552795876,8204.83281900377,947.022758195392,14200.952950747,-2147.17175082623,23748.1492852573,13332.3224893091,-33201.1114542598,11466.2770141655,26722.8127804965,-4481.68685108954,21587.7666438189,6613.98163804108,18179.5095144055,-32727.5839320814,9484.930249989,8793.35411082605,15345.2424405016,4437.26757788454,12060.7546218611,18436.5199449089,7172.39893419896,-35678.8281635544,8239.7931751503,14188.2017009334,27375.9144606796,25981.5592042425,13261.579280391,11531.2636828956,56113.0482599093,24548.934051035,49543.9157277113,11788.2965183947,6507.70850541314,6444.91553089779,-3377.85934974671,9673.50617984702,9017.03974762521,8085.58265780037,12137.262750447,6979.30356032542,8180.68243229485,822.793291901253,56757.3560847154,3775.35775143774,13216.6187604717,11034.1283147993,58658.3627308156,-33748.849393828,9855.24281354369,6344.61625977525,-4439.9391228555,26022.3003784185,9813.29813676319,9193.06081348945,4505.47232749467,-778.733632862698,4134.34406080564,13301.6882351498,11086.9176790466,37804.2153159348,10016.7331730216,51607.5355394982,6136.32470263846,55339.9323909735,9886.74254562313,9312.65283621314,28640.8171594897,4751.9350904502,-29713.8155108232,7521.30636736567,4512.39180879229,13571.9727058616,16707.3468511872,23435.2346649229,1623.16515902583,9360.17910631161,34461.111093748,16158.8325371119,7596.84112243181,7747.16693106358,4866.81546311706,62437.6463169511,33785.365449818,-4624.35226406056,15440.8486446999,45097.6886998386,1864.66167209912,9321.31860867237,14882.2506648423,11388.8707123067,5156.43315306362,28081.5840621512,-24879.2649343103,22113.1159280512,9258.56572647658,13964.9786846253,15815.027647549,13127.7203920552,5352.33977487732,13677.6418165516,9807.00435762216,-32785.6833036998,10053.311562839,-34469.6582543999,13676.306894584,21442.8900455724,15676.7875376667,13381.7592040489,5440.37612134372,9627.76862244158,10296.9593713513,44648.7198137585,27303.1157593947,-7415.91785958175,10527.8174240473,18043.74375868,32402.9535494035,-29748.475222463,10725.720820548,15953.0627046243,4942.54128720759,-5496.44088996459,56541.9820466033,-17450.2440451068,10115.6988041965,10873.6252154076,5037.26357393497,23053.7717378392,29482.5579173617,10283.0902238693,3840.24234257284,12191.4454953176,47066.8606024823,16528.3609573558,16424.9495511594,12691.821112479,-3926.40902504443,10391.3188541597,3210.41701594571,949.0006578594,36073.7492526372,5431.69025814271,1702.31837055717,7695.68434951821,3805.25656228688,21544.5684734979,3257.20579545574,1329.43173588809,2743.06419233619,-8304.47912211093,11831.1848924167,-7977.17435615537,5143.60253154405,4119.52380666764,2221.01939893209,-6188.00269666093,12873.3748038714,-20586.8303098778,12248.0459542005,1964.76371393591,38919.1952518837,19784.2404934837,7123.08462607753,7747.32736713398,1154.87979441342,7569.832642017,2626.52711960945,37371.2859434885,9940.85176913939,1011.77027490955,3545.46942880015,2916.63074059604,7029.29440524359,3027.07214217724,1986.6101518328,15616.0191717456,13610.1326340217,-12982.7324350061,11555.2893215724,5525.73997382425,28132.6288826649,11231.5728447691,5673.18969143321,-19264.158547543,13045.868989817,49339.7507220593,1502.70190316761,7377.90751769695,19073.1807539948,-675.464350821948,11722.8825766291,1826.80280303039,1303.33860551024,7776.19640367157,1204.51980186852,-45459.6071830286,801.473257844542,49472.007186363],"Archive703_field30":[-5.20226474277049e-18,859714.410841932,859703.771775496,0,1.04814527950339e-17,-4.00447451486824e-17,1.84507462334679e-16,-9.30047499767708e-16,4.76258663380919e-15,-2.3748219700582e-14,1.13784104949555e-13,-5.23782031853142e-13,2.32819530623795e-12,-1.00428136939801e-11,4.22555437036325e-11,-1.74135749233352e-10,7.05375268641661e-10,-2.81645393281676e-09,1.11129983997458e-08,-4.34394563630314e-08,1.68692486462361e-07,-6.53068658588835e-07,2.52967760553112e-06,-9.83290139619894e-06,3.84294751141415e-05,-0.000151258573130043,0.000600215844488469,-0.00240352710251796,0.0097209147650463,-0.0397163359064962,0.163922316285621,-0.683345462077578,2.87753524777053,-12.2230674699073,52.1700587105999,-227.849659070022,933.098206415676,13476.2433118144,27669.5702700637,41027.4914352448,55024.7906420759,70827.625348285,88496.7590953725,108014.953860268,129238.26195292,151909.383167406,175809.332533334,200773.208318078,226642.935712518,253252.698688439,280465.894434083,308175.843731454,336273.366260223,364671.302206596,393303.79200876,422115.599436297,451053.976439388,480088.197290154,509186.874312452,538331.063445304,567504.950489818,596698.823765335,625906.335634027,655122.792167015,684345.353758084,713571.684164847,742800.003222538,772029.028316921,801257.716141114,830485.887619195,859713.959385686,859711.27299508,859706.15341599,830458.24340726,801215.631417377,771970.774328685,742723.615845009,713474.714374381,684224.57571927,654973.730993876,625723.161425167,596474.059089212,567229.306753998,537994.027532006,508777.370494834,479592.009244563,450455.847812547,421395.580122306,392445.243829181,363648.141808382,335063.07241598,306760.342906957,278826.963371231,251365.843384124,224490.131377565,198334.951382209,173049.325417125,148797.768840173,125770.773043206,104173.447053824,84214.1563106785,66178.3084532504,50275.6482081983,36502.003999252,24713.5883204474,14865.8400812368,7064.67893983797,1293.76093657561,-2616.34297778182,-4908.43694745915,-5889.96503636414,-5997.27857861862,-5677.4002134447,-5239.95931245491,-4788.06746156365,-4376.18257191728,-4033.71605868713,-3775.08416296695,-3603.15833951325,-3515.48405104433,-3505.66719130382,-3568.7833242898,-3698.06448272607,-3885.74172929379,-4121.9941524468,-4393.8996029918,-4684.65467910829,-4976.13029188341,-5245.8893459507,-5472.27821188433,-5636.08546854139,-5722.32787662269,-5723.51167641021,-5633.12139608904,-5445.08157306478,-5148.50161968885,-4718.80391651256,-4138.15564343605,-3078.60138250709,0,0,0,0,0,0,0,0,649237.028506649,146275.841080402,-1353.07364126994,380869.618779691,-4342.73157200674,660844.898365718,60305.3480715107,-2538.49858014521,250381.37488489,-2564.10071648786,183087.166037169,-6776.97629676251,-3838.32091575889,126823.419186214,-3280.60105684715,-7386.92778777114,37859.6503637893,-1081.40483982312,713498.55565952,-2333.64748059972,-7715.2067462158,-4289.59979430222,-1247.41675041833,-793.644066449513,-5194.66935828935,-4146.37217891319,590787.663469787,-2518.53352404556,148478.266338821,-674.887086149362,387003.554639254,-5716.33268276283,64426.7148865615,-3093.94799158042,251455.334425472,-3525.2088190797,178752.841738892,-8146.02227381221,-3295.20074704867,129267.574598319,-2133.03997478029,-7295.31432284936,79622.896567563,33232.3478001649,-1559.08991080828,713522.128173569,-2704.26984416133,-3656.86245637816,-1905.29253279685,49623.8507506545,-399.777650857499,620009.611028211,-4825.24363980442,584885.349178459,1141.40871340605,-4636.32387813612,-625.563062159214,444943.547203966,-6405.01335121043,655025.455734804,-887.976985415523,273461.591143366,-4178.47404018375,175419.509376634,-8285.04411865198,-2759.20296204439,133200.951977748,820715.418662197,-1053.39124579711,-6796.79459265989,31250.2266821169,-1970.54715248564,713546.438603302,-3019.64233022193,-7189.95919710207,-2962.01531459386,-2577.76909499991,47039.0280098015,779295.437774276,614118.369252741,-5143.08300262453,578992.240334437,19356.523911733,-4011.41753108318,-1871.02524634436,-1239.07028799001,438915.195911723,-6525.24912685552,655054.341291244,-2450.68063674961,-4544.88241610122,-7457.55126201319,-2225.82771742288,840215.15439243,-334.665891325512,79401.3077129069,32754.1377788731,-2332.32902122029,625752.328064307,-3361.48285351441,-5440.38632412219,-2223.66994967026,-3252.56233702903,47476.1122367218,786617.90077458,608232.754501571,-5233.43739637099,573107.203611343,13051.2445901446,-3310.41748576947,-3323.75201704475,-3016.62425091309,432981.627399463,-6313.47322671268,-3829.45892565078,731070.814546652,261146.713802265,-4708.45159967182,-5655.01737494457,-1690.6696830262,-366.172148541949,-147.833211270503,77919.8376588971,421725.187870442,-2698.75641905417,-2889.04311612945,-1466.41393878903,-3904.72059059592,793938.70233279,602351.794392971,9482.59598374734,-2540.73754730263,-4403.67772698988,-463.810161701377,427123.61642487,-751.282727611948,736935.792250141,255849.880472849,-1147.50598703197,220245.98134352,-739.614832915978,-259.474147915739,78044.8230186516,-3116.21777899199,503191.230763154,-716.116211569335,-4501.20145000419,8143.73672345557,-1716.79336297126,-911.685614922505,-620.128674714435,-1492.62418949376,-664.337264384628,171105.592926169,-586.829050617801,214495.176012665,-1121.14967535686,-327.030598014073,80187.9065596599,497231.41880343,-4991.36924781193,-5019.31017505922,8498.58241974423,-860.288722911863,-1325.1877863079,-2212.29877562762,766169.738297457,-1300.6500154696,-62.4818490716622,172941.818792655,-817.098031649226,209398.11995063,-1518.47345098408,-335.772223302973,311880.629178153,538024.299490835,491311.37693245,-4436.91740381179,31283.7206943317,801229.468519983,695961.656649271,567420.224086691,10647.1461880392,-1707.47995712523,-2902.27327643866,760309.279200532,-1909.05560519682,-56.1535857665232,283663.84783276,-1632.9363133289,204917.245339893,-1945.16402781863,-238.042654664961,-2388.51589775985,317488.974842326,398081.604001681,538069.071785826,485425.563105486,-3815.80248180063,23575.9432918755,-442.82010823703,690092.764489547,-5234.22579117901,-2088.78147660813,-3794.82610432478,-3556.57487222564,754448.234269697,-2494.21551594502,-131.332680130437,-2235.05987158523,289137.446237803,-6352.72221343561,-2384.47165392588,201227.704882774,-2412.77133011352,323393.315453535,403907.927821991,538130.780094134,-3134.37955860197,19286.8452258093,340404.513019179,-874.787759252965,-511.047611830555,-1372.78563807637,-4750.00801757543,-2505.12456306111,-1985.53234060847,-4169.37348993547,748586.466709386,-3060.78161375753,-1133.56546671701,295012.129859938,-3453.52377485647,-3022.32224384319,-2930.69456546134,329680.009646888,409843.97789901,538216.54750494,-559.238383402044,-2399.4796012181,18191.6694981526,346111.512033318,-1313.65848960713,-1001.71693319183,-4116.07471096295,-2977.35783507064,-4734.90525757147,-3612.54624896544,-79.2131107103117,301393.531193221,-864.348053048192,-3515.24390381481,-2976.04153912854,121373.768265091,450422.852790733,-3278.81768426628,-1621.04818348721,20291.7288038715,352034.831608021,-1769.53359909204,-1487.28011613161,-880.186687818663,233611.403637922,-1744.8869135305,-3869.92287488324,-2438.94662382019,114921.120084334,-2710.95820498369,479874.981932386,-814.162899473697,358238.634438476,-2248.88243572566,-1978.83225061368,5788.32772970124,-1762.52577435756,228559.998674645,-4434.48969119106,-2601.49878378107,-4123.17414070634,109978.344288224,840228.732456869,-481.819797081235,-2482.86607614602,7496.88276017318,-4853.59248345114,-2878.50260209566,-3860.81461279372,-3400.91503296291,198405.656198409,-787.773138808651,106315.673017465,1656.51245094144,820743.633586416,-1029.80571382535,-3004.44594782345,-5537.3098277139,-5439.77082593877,-4119.83410852238,-1214.45350074765,104411.842110679,809.921459469317,-3519.94256507417,-5772.119343629,-6444.26882010291,-3470.32469192195,-4748.67445509961,-2971.30505510463,-804.727117262699,363397.337569125,-361.540969830071,514636.73516293,-5745.26734968983,-6560.30870320521,157629.27605164,-3720.4191342012,-5283.98503859123,-397.970013189061,-730.503299619667,684317.935405169,-5689.15678399621,153479.596863057,-1115.32506040578,684292.579292828,-3899.13568004395,150559.852701674,-1524.38969099775,-8228.96078446178,-4741.2772818027,462124.364295813,99688.9102789469,61439.6775696912,-1184.59946000382,-1966.49649148425,-5282.75434653198,468052.196234565,-3952.64236352785,-1613.07407131376,-4921.92091584663,-6790.90857255284,48022.5662829563,-1625.61004793214,-3192.59040113888,-1986.17770851096,374937.142303646,-2072.08936254969,-4220.04189685556,-445.501118827114,520646.911744693,3143.65460723041,-1282.56686695144,-2395.27502977531,-3503.619878629,229708.026935892,-2448.2896288868,-674.699240926765,-3053.52487206344,813417.72013125,-2685.83448242695,631628.89659083,-2601.03245833346,-4148.67019408924,-1950.2525325911,514685.077018446,-2870.61495469815,555586.188044386,-1484.29251010211,-2091.91350609187,192519.722777741,-7924.87929678047,558556.707351702,-3021.53829009076,-688.193583650879,-1741.86441309845,-2614.86396983246,96585.1745091365,-567.193570009145,-702.088426313732,-4394.18905998405,-1728.82195571629,91634.0280286493,-3691.74042548243,-2404.50578105094,-3107.19968706486,-3584.70153565551,90823.3260596982,-1787.04027682573,-3747.42646947654,272561.03297505,-1193.21963132252,-4411.47151472996,733973.840018009,813424.414908068,133351.989839424,-1638.63854895789,-1062.00828759768,-5724.81159206989,61834.7869680882,-2213.06518786378,-1669.84207709159,-1101.3599588383,-3449.78872030364,-1657.52178244999,845082.063387181,-2.70309305838593,845100.184076002],"Archive703_field31":[800,862145.029520855,861875.435524614,800,805.914601681878,879.721146269329,1091.28484764455,1474.4529974382,2023.16757312504,2703.16929927399,3470.37410128629,4280.53200426198,5098.22519095271,5892.60681612517,6643.36637979645,7335.75640467264,7962.13695967401,8518.52730226745,9006.28263448163,9433.02866110901,9815.55734302324,10181.9396708838,10567.9148659079,11006.7288162936,11526.3947118778,12156.3021618149,12925.3227234341,13868.6892077563,15029.5500794312,16453.5824683699,18196.2473527751,20325.2790611736,22933.4456306204,26102.4554774388,29850.5440960814,34935.6420582761,38343.9210954789,45422.4513676396,55689.6657372954,67873.8513383416,81627.4157373071,97096.590645106,113926.497947719,132161.889386265,151795.024233996,172764.180674311,194954.061590884,218251.557108178,242537.874691718,267676.013457983,293532.610442554,320005.068665054,346985.395732803,374377.40377952,402106.71324818,430111.450366174,458329.88863085,486720.709337956,515246.686637663,543880.34229317,572598.357221874,601384.736036274,630227.805569186,659117.058776049,688044.914556587,717005.588194268,745993.522381758,775004.196350439,804034.27149847,833081.50243946,860356.046456515,859713.1062893,860218.317761073,832713.181159467,803560.634536442,774412.836754606,745270.53776017,716135.204015625,687008.463892136,657892.161021755,628788.877741612,599701.640416477,570635.206978284,541596.714638526,512597.377460618,483652.174265719,454781.183137501,426013.061662943,397383.453280242,368936.923547059,340732.427598311,312838.271403218,285338.374589218,258330.578784908,231917.467290421,206220.960097569,181371.468257761,157500.295571806,134751.849023061,113283.136341979,93194.0120523595,74651.8973791729,57779.9643426077,42539.38573859,28811.4918382641,16748.0325296478,7159.29589414523,4427.5383471916,8722.56750496208,12213.2651257544,14200.2327103995,15000.3200258314,15117.9977255649,15008.5471220234,14850.5533424275,14585.1045955666,14204.3719313564,13729.7990850217,13192.720420364,12619.5509096922,12030.971492895,11445.6684703407,10877.1259897285,10340.5350048901,9849.88851245759,9415.6881374337,9046.08723638395,8743.75294797372,8497.13975755356,8289.71163458076,8094.0836103358,7884.40674640055,7636.0704678198,7329.55212163267,6946.94847185647,6468.28490555411,5862.05203974748,5106.08365402748,3836.54402269821,800,800,800,800,800,800,800,800,650833.373778378,151364.509797495,12673.15813881,381709.636776107,19460.3039716744,661785.024092241,69827.4495878511,10861.0693426828,252029.911186722,15127.9168547161,183712.022546651,26247.7167935117,9413.35019496275,129774.49504624,4085.30419481318,17383.9569764554,49656.4669279241,11909.4169390201,714076.792429179,12744.3592552714,15669.2633257835,6310.82476111581,2663.15959445166,10990.4364646985,7868.70221837389,15796.6389996301,592693.527633313,10574.2056990716,160432.49631653,12448.172293084,390819.219900989,18100.6970880113,82262.0524972986,10897.8301745457,258020.432562162,14838.6799307915,178958.109635557,22108.2316489123,9353.60010941831,129411.570090924,2698.48297486113,15674.5787717434,96079.1128764386,37751.6213101515,12081.1980311553,713534.537355751,12927.93929714,5667.79708915914,3245.80449747442,52681.1519160013,10769.1267200434,621752.018102408,15183.7801754905,585229.314441356,4848.22357637052,7615.55924406051,1101.35744199827,448036.57935905,16624.2574384488,655076.14724296,1300.2841387315,279393.121746986,14513.3313842163,178248.702938077,17954.1835646177,9233.2937610446,134182.800562237,821704.417378008,1526.59457553636,14805.5114123239,31429.7513884882,12276.1024340918,714512.730227201,13193.2585295453,20190.2237466128,4958.92368575111,3913.22062341311,47046.8045937607,779849.640266884,614423.315816009,14741.1884805292,579039.114271219,42834.6804142022,7237.11385740814,2342.49007992931,1614.05733188047,439559.337928444,15445.3994429442,655321.770033109,2961.9414912556,14332.0605827778,14714.9083132172,9055.42377053303,840435.919890707,919.475003530668,87451.6057702859,34116.6927910604,12514.6575609768,626723.111801993,13477.6048719162,22147.9072870228,4234.37817461379,4615.84056096872,49571.1807264073,786622.389686919,608282.815724307,14667.4520894487,574163.152376783,32462.5624905929,6788.46908494908,4068.0921904755,3646.91547792104,433010.577693949,14938.6661163239,4676.51401463763,731261.570704283,261150.934791627,14446.1492007677,11804.4953922294,8830.23624734381,10427.6489160721,842.683107592065,79911.5872661358,425120.045390829,12772.4511410396,23140.2793285559,3562.69909846834,5307.08969776868,794696.995410923,603365.831779184,24207.7641909524,6301.85866436688,5471.13453143266,11209.0732022084,428459.920477003,6926.84252083849,738179.139080244,257687.632864477,8569.27232650213,228912.405720253,10698.4516277946,937.674452006303,78069.2961424967,13006.7839323253,505721.45569832,3024.53520245496,5943.04239551652,16578.6142513591,5822.76826190202,11412.6023972051,2302.44999622141,7231.77538717381,7680.04403912837,175520.596360661,8278.94682310571,217923.539349944,10976.3512440393,1043.29716578204,82895.7090812985,497729.897416748,8165.47590933087,6494.05114758673,10776.6313955724,5404.96803690357,11626.5421008528,7540.16440141059,767318.535517541,8009.25275758611,830.179890567298,183659.388814713,13236.498617225,209900.738792477,11246.7199121716,1143.26555658694,313537.520810095,539121.113930514,491347.912709358,7954.98787052091,51927.5024394957,801765.708977545,696020.287537436,569492.02321018,10681.9570935354,11858.260025548,7833.12088861176,760479.573286629,8311.16672604572,848.246703596837,285410.545326346,13436.9021001369,205141.958309802,11497.3798878144,1264.41989990692,20617.6643113252,317501.131926996,399489.916005424,538106.929579436,486634.063044063,7666.99011227279,37746.7426885746,9272.67141381647,691000.507341646,6961.94969129653,12097.5196408376,18230.9090346828,8091.20496352816,754511.805510416,8575.56952206571,956.085967583591,14375.7628437207,289145.418714262,24583.1583405376,13543.8741882562,203948.285146473,11717.379146251,324495.524164712,403932.791036437,538563.615697708,7319.09067615141,26504.2820115672,341974.161646543,9525.18532475328,8808.19199268153,15406.5247854888,6500.14766945923,12318.1756411084,18543.1282785464,8296.20285250277,749436.239395699,8789.91329060586,14233.4127381209,296279.593386138,26210.079075559,13601.6144907774,11897.8574861398,334421.265690133,410578.538629488,540492.045819151,11801.5542355686,6935.97666865225,19299.5796671955,346127.994672168,9762.29585901059,9072.51027139105,9072.96632542802,12497.1119364214,8433.86068093071,8942.8214484564,826.597555105327,306691.144500206,3873.038046308,13676.1087727087,11428.4211906139,134805.026394152,451685.433849211,10386.359146523,6548.43131574209,20771.7913831362,352995.30136005,9971.56304093373,9312.59197347096,4590.64369116504,233612.701571963,4487.47491961001,13853.202263833,11352.0132247897,120979.43022304,10377.1016111764,482642.037134218,6190.10032900036,362487.830583844,10139.2874687105,9520.571407426,29219.8758633528,5068.2723100803,230483.369956197,8731.25124441252,5208.59633280121,14184.4636177489,111240.153052686,840555.490773736,1693.16728362402,9683.88232344389,35267.1437592474,16872.0250402209,8123.90129615953,8655.89307536355,5937.34922448296,207998.230975943,33794.5484523167,106416.196901687,15529.4507426585,821981.699065557,2130.132146047,9793.55278015974,15879.017128881,12621.3106585795,6600.13908518283,28107.8327294216,107335.038997603,22127.9431673606,9905.10146201985,15110.8567387536,17077.5788716811,13578.6669507483,7155.23934933342,13996.6617231528,9839.96545744333,364873.301273222,10059.8103984309,515789.808467882,14834.0644192432,22423.9867951232,158406.913788714,13889.3123634426,7584.07477743613,9635.99028531413,10322.8391136361,685772.954335618,27889.5434721294,153658.655763177,10586.731776353,684530.430853195,32636.7072140587,153470.651994482,10833.5059445388,17950.3761868626,6848.97252430538,462157.050079588,114607.480411893,63869.7502508144,10184.823914917,11050.0151029837,7299.41900421497,468619.605641228,29746.337640196,10408.8401136621,6242.81721272839,13955.2062867616,67241.7745108979,16608.1101864294,16732.3519335321,12846.2922682365,374957.700769909,10595.8983505509,5302.40804045577,1048.36706143115,521895.125570673,6275.81256491647,2131.39991623769,8059.83250915828,5172.55543795827,230716.159099205,4074.74069124222,1490.8413081524,4104.68212016315,813460.110759594,12132.2150832213,631679.268552687,5763.85433991964,5846.53237167348,2955.74222680373,514722.274515935,13189.5492363874,555967.472005242,12337.6559342426,2869.91264127827,196414.224071151,21312.4349564412,558602.12464881,8315.69449727608,1344.38006089149,7767.65459207378,3706.23235790362,103563.067490444,9957.01975702878,1231.50608912593,5646.17135459419,3390.51032022563,91903.2429927849,4774.10862078846,3119.01714430564,15922.1463586924,14074.2955566306,91746.5416134321,11692.6568518982,6676.60148596969,274009.05369034,11294.7776275555,7186.52643495158,734226.603737107,813529.024353915,142187.074642701,2223.34192240293,7453.95069359969,19913.806563268,61838.4761412996,11929.9469165277,2474.99111990028,1706.36610360898,8507.07192418219,2048.96227695621,846303.887350147,801.477816132191,846546.986658355],"Archive703_field32":[9976335.8360001,5848362.66786117,-166475.279409226,-2853976.47578313,10022243.2150897,10025844.23482,10045079.9724609,10073488.4881777,10103970.7999291,10136577.1990376,10162719.1631701,10178806.4062839,10185493.2663808,10179703.3945542,10164918.0474628,10142590.5360656,10116283.0308966,10089841.8414937,10069735.0649988,10064070.9572083,10078454.3446043,10108364.7418394,10127141.8372973,10113182.4181656,10061540.2926224,9972989.79504587,9848367.76943436,9686689.07999923,9485051.91824873,9236368.42396558,8934022.44811073,8565129.57456032,8122407.35387644,7606178.02157378,6937516.38324725,6301611.60048124,2196707.97055911,5050954.48252703,7222541.87388004,6563208.69091159,6348195.61209372,6248792.52694728,6182673.67760936,6138279.63113164,6111821.45218737,6083920.4408192,6054915.58357646,6040867.43453066,6037920.5857664,6019478.17102537,6011719.3112442,6020662.7401587,6020633.65441136,6021691.48220154,6028742.02180692,6034691.46166468,6037757.26424585,6039705.15004528,6041932.36750225,6039750.201932,6029073.34985144,6020719.70503819,6003870.74840519,5982919.96842141,5962878.99635156,5942886.65580185,5934729.58780658,5949754.11315243,5970225.18808582,5989626.18677518,4373656.02459023,2807370.61041832,1148789.7355502,-174867.518263436,-216885.536043522,-198755.394783632,-192132.395111894,-177314.380819718,-139529.610308989,-54679.3824393059,73384.007374038,182807.582119082,260762.532730581,326506.197597586,397160.057119826,467014.699518015,544350.860517103,625520.116028826,712233.806017144,801926.693445887,893778.602178689,991641.785113758,1085923.9901274,1192546.42209698,1304742.85908139,1405241.49122911,1501019.74120564,1602231.56474307,1689752.9661218,1787169.33993557,1893770.87179987,1985752.26255238,2040910.81577899,2064548.70890764,2100776.67702937,2120663.24464052,2043777.21329835,1885623.85198268,1696521.12035773,1498067.34281519,1263848.54843601,923906.077110373,416704.079003979,-124531.222986139,-536280.206016216,-695178.399427115,-791730.613699643,-854079.95733998,-890424.849661014,-913287.407064194,-926712.876335855,-931691.447671343,-932849.443330436,-928626.927269395,-921119.065848488,-909892.529597015,-890344.177572713,-866471.829617718,-839488.147071188,-814692.519572557,-795106.1491214,-779025.605809664,-774453.453801631,-779672.09160299,-794700.281611877,-817372.74328668,-843074.750671752,-957579.252309745,-516428.248748242,-1325776.99795687,309837.143095987,1673458.46676896,3029290.22761854,4369136.95158889,5721030.97262544,7100335.47902203,8542539.31235661,4774832.56064142,3965670.86213296,7353546.95286897,3573918.82520701,5939141.49507138,1173596.95264978,4074108.27600998,1813455.6359619,3515067.93846366,6650462.07199067,3176844.32404528,4710375.56255503,482145.472744976,2683472.26372941,1717591.58034069,3580072.53244011,4029042.71172164,7401357.58364068,1398099.3074271,4720585.91175044,2820602.51685175,2851408.93942767,7590062.20748161,7402287.46940394,573912.89873989,5153069.16028288,4798732.73977994,4062793.46406015,4994220.5802064,8658852.43089141,4783188.74608701,4767041.93093583,5118994.9707259,434650.824483998,4767426.6550813,5293700.40446357,3470289.98793974,3978136.9736592,1882825.78083306,3727138.75289857,2411042.58663316,2681644.97134919,5060558.61797535,3450405.35772369,6058683.42410742,2965665.74507464,3354311.66425665,4046835.98946621,6381049.06257698,3407607.79175895,8778589.21019434,4787447.93138721,3872156.60630594,3593878.28640349,3121399.47356407,1925084.40649611,2376914.90101545,4795561.07080473,3665999.40785009,2401870.51297285,1141649.70457097,4778436.68601565,3946333.31087268,2487415.05070271,3442743.83543014,3280927.66801099,3235883.86285381,791076.182048431,3063156.0711555,2080661.72002392,4274182.16313993,4681100.69859533,4461075.79794889,1903616.89541714,4469858.85325704,5239061.75827598,5188890.72435638,4142369.65986182,1304472.69504078,3587936.386737,2605526.16410942,2419671.64629677,5236931.61663711,3287281.42414627,1708522.19168677,-21256.3087572982,3599279.09120313,2570356.89762797,3594647.64370389,702798.006065572,2600134.93970946,3295904.05004146,4669979.79960389,1734930.33722209,3749130.27700511,4069801.70221143,3163848.6524495,3258733.68003685,1216248.65007104,499066.728508171,5520102.83917595,6437472.70061111,4008832.28169642,3048974.70604722,2827879.02067837,2408720.78987028,1290130.92419445,1323899.29191126,4031674.66298047,4653625.91038987,1020734.01498978,-289247.915665325,2603242.25426942,1668502.33806145,46176.7078296964,3540659.4022887,3155412.05495732,1184267.79490284,2736833.39128958,6045494.22058725,8771134.71867982,5511171.95800396,3293587.69147757,4802433.48292623,1837904.81444296,6745268.51634588,7650118.36933955,2824381.84309971,4352170.64199112,1235937.47712893,2933744.74348393,6023212.32233495,140680.154565366,8773671.04247731,1838105.84891357,8784646.69299566,4741987.65773245,2431701.34369112,7407519.00134794,4954878.75666335,7399755.99032368,6491929.28523236,4012790.83845343,457607.224543825,4805381.56420432,8881051.98689746,1628933.9966823,4786137.23412211,7399746.07288291,7416303.93231178,8842628.52387824,7409162.69015016,8778248.2345003,3959343.8502617,8761826.32923497,3978207.94663848,6005492.98260498,7425332.52749964,2910613.20017963,3607907.79986508,547895.312284651,421765.126438198,4093001.71292046,8786641.99418816,6035137.81950658,6036711.79368317,4723763.65046286,7416280.14056,8009513.08092041,4987135.75910971,8546204.11177672,3112828.66398033,4603953.46069604,8305305.29905422,2225435.10407674,1459161.07944389,2494929.18054517,1918749.5182295,5239504.46713034,1309016.4945081,2357871.74682711,4809488.97713026,3176727.34360449,4623915.71572068,4663837.15171701,3499631.44878636,6051772.1562575,9026809.78984959,2327390.51439112,7263920.9396984,3371467.46727597,3205981.51264644,9173719.03326502,7154109.31774974,2957478.53623116,1932311.67782919,2442981.39247274,1637674.75557923,3289761.4187127,3811361.69983748,8735746.05275967,1117226.10889428,433052.203784775,3203374.28854744,6166887.8266274,3287564.94717319,2258860.17265485,4678566.74419811,9043743.75719978,6778424.3939391,3073242.86512053,5098113.97691411,5995790.95821005,2378747.83495324,1816262.47373364,3541547.18603342,2681484.96653885,3621500.5230238,4661039.58324987,3507756.5172798,2131503.43672481,7388558.88575202,8746097.32076328,8027341.10326185,1638974.89246164,1808584.00845646,7507335.76548283,1908860.94311354,1021451.33360119,3293932.3924846,8212588.62035048,3525090.53497369,6275207.87767716,4731657.14446013,438219.085957073,4770404.89630106,3588579.29371141,4814612.68831528,8736908.59549189,6033183.79842753,4356173.94624915,2853713.57566645,6021972.7288036,7397475.64936453,489484.691519896,436210.140889782,530522.579665114,1898866.56134689,6980217.11552791,4762977.54334827,8758199.73138946,3476916.32231334,429332.609314769,4994906.50319513,1766160.88110267,443907.814762859,7408956.62851547,3296683.56951856,3559198.14828687,4638555.18115868,6034865.63409218,8772325.27172903,3309118.46911436,7375587.5861621,2178576.68400024,1802099.39751616,3983731.98280026,1827797.47587882,4813091.17222846,8790304.86315154,4777143.34121946,3244945.89375523,4656015.45671982,3606868.25243885,7382028.60307327,2498253.25348292,510602.323153427,6010274.22265622,718934.621959585,3262950.9387397,3809036.95197719,8801911.5513933,3263874.30288771,4866545.22961211,4970784.88806033,2996179.44395577,1895300.00064526,4654256.87712165,4971651.8908663,3616009.00137677,3799605.34347025,4836585.31187183,4833308.62982775,7570286.44851293,1864755.33625021,3770991.23528587,3790746.57310984,3300952.09563237,3999335.42711639,2811640.13977989,3804541.83311894,455916.946396975,2571368.30293614,3681662.87523623,2054212.55633521,1945679.44915734,5390714.14994373,7368840.05733875,2061019.81614034,8748702.2379172,1527454.61318219,1380190.28971661,3805892.85524454,3207049.93000634,571511.183058072,584962.537523298,8725228.30774095,7383784.55092099,4768154.38640089,4251775.23307576,3592423.65614923,6000175.40848573,3584199.36956337,4794602.99023348,2583513.62439153,4606661.41639918,3467455.45147429,1936229.2203222,2544289.45353993,5045280.59058896,3001826.55999457,6008948.19254803,3211170.43101777,584218.076244254,3608162.67377105,5548115.75802945,4621251.79976053,81593.3175989533,2454598.53248481,5165905.2813696,7822388.75899598,6424616.31602318,6053694.95475459,2771747.2380806,3227178.1582926,938215.222786456,5337025.50853164,4209485.40878763,3629137.32687254,6310291.31734669,5356002.09226517,4031467.42113309,3246891.20365439,5807869.98062587,7507366.99223845,3526119.29883738,2287143.74587126,1116614.01000538,2404580.98084424,6017505.29206971,2841831.79632916,5548502.53909168,2468610.39721817,4091751.3212293,1883046.27377691,6718131.13852771,4239505.45246471,3957776.14902096,4249284.84937062,3026888.81207913,3979953.73253964,6200406.93002719,6725787.38849348,4530139.71847904,3849783.40481325,8052667.50245551,4191868.8768657,1282286.09458068,7008966.29470049,3733123.024223,2294690.27996921,3154729.07520533,4154723.58138265,4345622.24195642,3388760.74940468,3897359.70320123,3970632.70884209,3478186.13183217,6017975.82655374,2610039.91611579,1832225.53045918,3296512.0341306,4498366.42290346,3690744.73274598,8093586.41381101,5192982.21853694,4082601.18560463,2498277.18578976,5269130.18018829,4928654.78700793,2940506.78531079,-903291.387479064,517878.046702545,9328170.39057506,5101727.2396576],"Archive703_field33":[-909.090909090909,-582.652365642082,-582.653469387561,-909.090909090906,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-899.667878660416,-882.323223514448,-865.008789972024,-848.173985572794,-833.750915207895,-819.319538062453,-804.877684574623,-792.211004923183,-779.958813947451,-767.700306816751,-756.203633712148,-745.630509756394,-735.055111335023,-724.608299402682,-715.362381209007,-706.117056170523,-696.869453731342,-688.422442992051,-680.248654509857,-672.074027782363,-664.24675685858,-656.951608821012,-649.656781492978,-642.394908334172,-635.830861080238,-629.267957018082,-622.70446763611,-616.569881876592,-610.622810857904,-604.675769485436,-598.910875364326,-593.48903132771,-588.063858775836,-582.652527434207,-582.652790366222,-582.653052979421,-588.064791036296,-593.477562776468,-598.983439896683,-604.663629452002,-610.592294875761,-616.601193759879,-622.775628061276,-629.269381512613,-635.837393395084,-642.550420538703,-649.630707875259,-656.978626418156,-664.414962919187,-672.164072455522,-680.266704922405,-688.578536627835,-697.096707807351,-706.152059079805,-715.496903464119,-724.992766067559,-735.171515189181,-745.834571274353,-756.629501522608,-768.069139055635,-780.255519849722,-792.702239963342,-805.619323624929,-819.67040329013,-834.420625533751,-849.502699785325,-865.986973429718,-884.078939554491,-899.956766481906,-907.920563327213,-910.49536632739,-909.025191988769,-909.078586226137,-909.094123974216,-909.092719516602,-909.090856929922,-909.090858937334,-909.090912020911,-909.090909675304,-909.090908939145,-909.090909058803,-909.090909102152,-909.090909090835,-909.090909090907,-909.09090909091,-909.09090909091,-909.090909090914,-909.090909090912,-909.090909090907,-909.090909090908,-909.090909090908,-909.090909090912,-909.090909090913,-909.090909090906,-909.090909090907,-909.090909090908,-909.090909090907,-909.09090909091,-909.090909090909,-909.090909090907,-909.090909090908,-909.090909090907,-909.090909090907,-909.090909090907,-909.090909090907,-909.090909090907,-909.090909090907,-909.090909090907,-909.090909090908,-909.090909090908,-623.998624274048,-780.030757127332,-909.090909056789,-691.839049563933,-909.091969798189,-621.500849752571,-833.894106814918,-909.09090909091,-735.104758854107,-909.090911422866,-762.053592585646,-909.052485284661,-909.090909090907,-790.540599164023,-909.090909090908,-909.092739417967,-853.971104324791,-909.090909097435,-610.589198643519,-909.090909056301,-909.086578281312,-909.090909090908,-909.090909090908,-909.090909090903,-909.090909090906,-909.090858451521,-637.137863584636,-908.841195335395,-779.998284050289,-909.090909076919,-690.112474080592,-909.092753546964,-833.821533698586,-909.09090909091,-735.079972186041,-909.090911501364,-764.045085267076,-909.048386862946,-909.090909090907,-788.3965363585,-909.090909090908,-909.093404772048,-821.778991897238,-856.922133420459,-909.090909101783,-610.595423502383,-909.090909057706,-909.090909090908,-909.090909090908,-841.442186481341,-909.090909090906,-630.576177689567,-909.090858500707,-638.449502623627,-908.643822082344,-909.090909090907,-909.090909090906,-673.695784391143,-909.092751981355,-622.745515148289,-909.090909090906,-726.703491376742,-909.090911616049,-766.050264800502,-909.043608896551,-909.090909090906,-786.271869147277,-589.868651193985,-909.090909090909,-909.094064506687,-859.917190250914,-909.090909101863,-610.609195134788,-909.090909058038,-909.089488924243,-909.090909090908,-909.090909090908,-844.082260801644,-597.591305729399,-631.884590987377,-909.09085859769,-639.79968788505,-885.237438881817,-909.090909090907,-909.090909090909,-909.090909090906,-675.326146027006,-909.092744970102,-622.733866717744,-909.090909090908,-909.090911733815,-909.038493291522,-909.090909090906,-586.261631869476,-909.090909090906,-819.401298186826,-862.940257697126,-909.090909101937,-629.263359099844,-909.090909058415,-909.090843990334,-909.090909090908,-909.090909090909,-846.776718130949,-596.203695340981,-633.194136430038,-909.090858743021,-641.159047646526,-888.161678683365,-909.090909090908,-909.090909090907,-909.090909090908,-676.958302527609,-909.092732508919,-909.090909090908,-607.033575490679,-730.932740708379,-909.090911870417,-909.031979803717,-909.090909090907,-909.090909090909,-909.090909090907,-819.442005240305,-680.244176084316,-909.090909102009,-909.091416101671,-909.090909090908,-909.090909090909,-594.831741827845,-634.512942411337,-891.184643848049,-909.090909090908,-909.090909090907,-909.090909090981,-678.6131184938,-909.090909090909,-605.853881548279,-733.045465373738,-909.090909090908,-747.416371973623,-909.090909090909,-909.090909090909,-819.50625487017,-909.090909102081,-658.405970914216,-909.090909090909,-909.090909090909,-893.565683119268,-909.090909090909,-909.090909090979,-909.090909090909,-909.09090909091,-909.090909090908,-767.849979101373,-909.090909090908,-749.205646429622,-909.090909090908,-909.090909090909,-819.564411728453,-659.861422538418,-909.090909090913,-909.09090909091,-896.020517104568,-909.090909090909,-909.090909090957,-909.09090909091,-600.058001572592,-909.090909090908,-909.090909090909,-767.773537403759,-909.09090902146,-751.024323008012,-909.090909090909,-909.090909090909,-713.595627965956,-649.619663781556,-661.366385459108,-909.090909090913,-868.083207876823,-593.478855742717,-614.171900606157,-642.440134801194,-898.225821241857,-909.090909090934,-909.090909090911,-601.199520340284,-909.090909090908,-909.090909090909,-723.001156127674,-909.090909005897,-752.873774298346,-909.09090909091,-909.090909090909,-909.091458400965,-711.714620085883,-686.872248956823,-649.633332007979,-662.879595997933,-909.090909090912,-871.270564016246,-909.09090909091,-615.388360619268,-909.090909090906,-909.09090909091,-909.091167213865,-909.090909090912,-602.348612179461,-909.090909090908,-909.090909090909,-909.090909889541,-721.028405856751,-909.076596206484,-909.090909027755,-754.742853697925,-909.09090909091,-709.83946080267,-685.195326894511,-649.643752477913,-909.090909090912,-874.529300895429,-704.284307234082,-909.090909090911,-909.090909090909,-909.09090851788,-909.090909090906,-909.090909090885,-909.090992911823,-909.090909090912,-603.498599278125,-909.090909090908,-909.090909527837,-719.121546045016,-909.082160418558,-909.090909022487,-909.09090909091,-707.977144499624,-683.533447249655,-649.651565812054,-909.09090909413,-909.090909090912,-877.74155101953,-702.4079620355,-909.090909090912,-909.090909090908,-909.090909090908,-909.090909090858,-909.090909090912,-909.090909090908,-909.090909090908,-717.219432742967,-909.090909090909,-909.090909090907,-909.09090909091,-794.360222650506,-672.148381478338,-909.090909090914,-909.090909090911,-880.935466605239,-700.563285011184,-909.090909090913,-909.090909090909,-909.090909090909,-741.484270765007,-909.090909090908,-909.090909293028,-909.090909090909,-796.555342616896,-909.090909090913,-664.289887284584,-909.09090909091,-698.71708189969,-909.090909090913,-909.090909090909,-899.383903820574,-909.090909090909,-743.650397861966,-909.090909090908,-909.090909090908,-909.090909484678,-798.763037224378,-586.260317864962,-909.090909090909,-909.09090909091,-899.555253678907,-909.09088452612,-910.489731817508,-909.090909090908,-909.090909090908,-756.283039299671,-908.651817785248,-801.013531670356,-903.939553736416,-589.869578638552,-909.090909090909,-909.090909090911,-909.090877683167,-910.456286010042,-909.090909090908,-908.219962088234,-803.281703892848,-905.693726146591,-909.090909090912,-909.090870780924,-910.429525023058,-909.090908949305,-909.090909090908,-909.090909633699,-909.090909090911,-697.073418494772,-909.090909090909,-655.49769266852,-909.090863861749,-910.381952584213,-773.958751043908,-909.090908940706,-909.090909090908,-909.09090909091,-909.090909090909,-616.575598610298,-909.968080874693,-776.046718428169,-909.09090909091,-616.589581709943,-909.524251909944,-778.144697904363,-909.090909090909,-909.080085913269,-909.090909090908,-668.99797034149,-807.319752698511,-834.309045534591,-909.090909090911,-909.090909090909,-909.090909090908,-667.415078150457,-909.113617706001,-909.09090909091,-909.090909090909,-909.078277380889,-848.439573932915,-909.0908742841,-909.090852632009,-909.090909033273,-693.589513662361,-909.09090909091,-909.090909090907,-909.090909090909,-654.029229854921,-904.370226803868,-909.090909090909,-909.090909090908,-909.090909090906,-743.050013255135,-909.090909090907,-909.090909090909,-909.090909090908,-591.220112633572,-909.090909090888,-627.96039572521,-909.090909090908,-909.090909090906,-909.090909090909,-655.491447373796,-909.09090898587,-645.359640334915,-909.090909074093,-909.090909090908,-758.23252794545,-909.076122331803,-644.611491714983,-909.090909090908,-909.090909090909,-909.090909090908,-909.090909090908,-807.464983007903,-909.09090909091,-909.090909090909,-909.090909090909,-909.090909090907,-809.999145071024,-909.090909090908,-909.090909090908,-908.226010381266,-909.090910156911,-811.32248471477,-909.090909090901,-909.090909090907,-726.799465004025,-909.090909090907,-909.090909090907,-606.449176410208,-591.220418171488,-787.215359384928,-909.090909090908,-909.090909090909,-909.091365409285,-831.754415829875,-909.090909090895,-909.090909090909,-909.090909090908,-909.090909090908,-909.090909090907,-585.359338770271,-909.090909090909,-585.357995684291],"Archive703_field34":[415.722359930063,60.3618693369191,60.3613254286672,415.726177695277,408.553266173944,401.375581463076,394.078465189508,386.697597136814,379.229882431155,371.636318474463,363.880722403884,355.973188189353,347.994796668082,340.018991028674,331.603515968909,323.210326230246,314.699289925011,305.933221214973,297.027646734733,288.026207053782,278.798801609656,269.29740213608,259.690364276232,250.073035975757,239.818836357164,229.550908084614,219.141315986518,208.278325259988,197.19323138693,185.950115580245,174.425556156152,162.330631057394,150.06939720625,137.560092077673,124.27477826645,109.771309621553,98.5641010842817,90.6452206937575,87.2762189574389,86.517735024189,85.0168962151873,83.5205081936014,82.1217522436201,80.7662036447123,79.5153536631725,78.3463935305385,77.1977532254314,76.1077261552817,75.095045931981,74.1102163843644,73.1565695774676,72.265875096868,71.4216050053083,70.5834584642981,69.7933197334414,69.0413585006926,68.3085756148777,67.5971169714511,66.9251622301145,66.2732429201784,65.6305673954736,65.0271262437673,64.4480393555587,63.8708140686908,63.3252112866919,62.7972278782895,62.2802045472914,61.7770594534721,61.29681060566,60.8309298089438,60.3617452909138,60.3616125717263,60.361479929378,60.8313208557067,61.3025829352239,61.7735193069514,62.2788504031111,62.8023917452599,63.3259597744507,63.8684950262489,64.4537682020685,65.0391121041645,65.6244842858211,66.2802852184979,66.9391146281758,67.598010497722,68.3112453702521,69.058715708976,69.8064886608096,70.5835625558269,71.4399483653356,72.2971150066577,73.1551548797626,74.1377290573278,75.1322869874657,76.1284764068675,77.2245285964723,78.3951642274746,79.5686474559416,80.7961640638214,82.1979304986341,83.6042138796411,85.0152243674781,86.6936752085597,88.411698050101,90.1338510606507,98.1940334969563,111.71179117974,125.215479183291,138.499864344613,150.709286680499,162.923145627199,175.139648301403,186.492675958659,197.655719166993,208.820088074959,219.583628087871,229.882169242594,240.181680938485,250.40271911739,259.976378258642,269.550757495952,279.125655340536,288.23294555953,297.189348423737,306.146257129533,314.887746350926,323.310352919696,331.733500037947,340.132919795754,348.089261410204,356.046151044325,364.003534793295,371.672108698978,379.217599692021,386.763589908663,394.181388383084,401.360842672932,408.54151245011,415.724983912655,415.724373261791,415.724031671769,415.723837461772,415.723420134403,415.722859004556,415.722549858602,415.722712866275,63.9832950520828,78.3588644243149,227.06849859038,70.1075122563176,162.521250016464,63.7571118541605,83.5442876635906,279.027772090034,74.1206295639675,197.341889592223,76.6561691005689,124.561263939767,307.230719378506,79.3635645669533,395.172425776128,150.4567733733,85.5351224401393,239.910226749665,62.8002351620583,229.717977994791,141.818958376019,366.539794539964,379.243107225859,259.763761544972,349.073659061229,186.173562002203,65.1459880058767,101.747370392375,78.3528134563923,228.310689279421,69.9493965473206,162.615988231535,83.5322606443067,279.076697674679,74.1153884168812,197.407743806967,76.843083412172,124.715182168063,308.312049700149,79.1589101044453,400.36112805467,150.543904977123,82.3642801789637,85.8036022387164,239.956754185225,62.7983677177676,229.758914831804,367.392710861854,379.248769554779,84.2790924578293,259.727142067492,64.5652357873487,186.25368242762,65.2641936525448,99.8267581137373,348.065588923279,409.98535990417,68.4545014188109,162.692399581687,63.8690717044247,410.342040403679,73.3464117596095,197.470280452684,77.0324134605172,124.863907904664,309.383527355406,78.9552347121196,60.9879688567162,405.479970851159,150.630996891006,86.0785218919812,240.001677356001,62.7977310003189,229.800055854592,145.074051414227,368.24463976444,379.245993208837,84.5233361735784,61.6542731111731,64.6827920616953,186.333576746355,65.3839544685111,87.58289021605,348.054781187592,404.246357013381,410.938382428609,68.6021439877984,162.769051234588,63.8698843999189,404.958808189417,197.532726222049,125.002261986706,310.45177340264,60.6747208931684,410.601951698867,82.1427963677704,86.3728005558837,240.04663195489,64.4520244791521,229.841138101927,146.745788434021,369.095064589414,379.240427600906,84.7678793225503,61.534616989345,64.801066287918,186.413241702353,65.503058992946,87.8671682913146,348.043933326648,398.508270042264,406.149911017215,68.7520204862719,162.845942582333,399.57985412245,62.4862042050803,73.7341147560497,197.595296350393,125.110145191741,311.51724412703,268.137485631671,410.939328187945,82.152743890179,69.043468649899,240.091616466096,148.409640322296,369.94485972846,379.2362062851,61.4150476553572,64.92002492058,88.0723903595366,348.031650845625,392.69532380573,250.114121333,68.9052395620202,331.619836843302,62.3829176521117,73.933542356281,312.580187870164,75.2656453635112,266.975046628061,406.158580182254,82.1669045234221,240.136633093868,67.0586155217906,370.790666931007,379.232668181852,88.5787786706282,348.019367663764,250.155065933598,378.399688178965,331.636581187537,322.17431530022,77.2094726971532,313.640813038645,75.435803647842,265.810725868812,401.375649813099,82.1812352376496,67.1912694995212,340.118681355136,379.225131134519,88.9956987901913,348.007083363081,250.196189278053,331.653196349446,61.8762628843425,321.135537593555,408.551542280923,77.2033950502529,217.867969661606,75.6071203435401,264.644594812591,396.513248114614,72.1203889810491,66.2773863507573,67.3265303120873,340.104442517754,86.7492949236472,61.3012187040144,63.113307398591,65.6317045706902,89.470023823274,250.237321009933,331.669672735135,61.9753201915412,320.095370959946,404.9669834035,72.9758217873902,216.590887426965,75.7803764814364,263.47711032616,391.628622305054,160.686591079148,71.9442343764065,69.6517342395608,66.2761324919514,67.4616182127494,340.090202390547,87.0048400778648,295.935042712408,63.219956032757,371.667954893656,250.278607172591,171.229717453009,331.686004759399,62.0752513675875,319.054039600861,399.561709938329,205.273873225409,72.7967957733077,134.102021210986,215.310052403509,75.9541841220611,262.309325343663,71.7681642835874,69.4985987815718,66.2749172203479,340.075961068014,87.2727546921639,71.263531398474,294.842086164998,304.851714279942,195.674526552375,371.663778127498,250.319972905757,172.834650666321,331.70202317363,62.1757928755763,318.011738842459,206.778839279343,72.6207495604293,135.838301640551,214.038612514995,261.141955201784,71.5939418114282,69.3457868751258,66.274237646882,238.584922033309,340.061719192404,87.6071289289493,71.0876385344923,293.749093435162,303.76734546692,314.856925352532,250.36141319891,331.717756036969,316.968488944806,410.343307059361,72.4428303334932,362.911348300349,212.750398452337,269.525696069461,79.724409061266,68.3106646872972,288.206448110936,340.047477061242,87.9847384305835,70.9180754967087,292.644375146079,302.680129489115,355.983358066542,74.7202147724465,361.941294766089,211.437246374991,269.501175670241,79.9352434744771,288.179887471746,67.5987371507668,340.033234421827,70.7501344166561,291.539176367528,301.590099211915,90.7923732783715,355.992863601304,74.9259030645165,323.298335177965,360.970819806672,210.127953099174,80.1463486781784,60.6745358883927,385.873464815895,300.495832669281,90.7067304050225,174.716411158703,111.335710535184,323.284634983384,359.99779713234,76.1128271575297,98.6680058972238,80.3600903442458,93.648990894133,60.9866442151424,385.049559372276,299.397454691682,174.821983574873,110.950893955243,359.021415571499,98.7722908122531,80.5743039730077,94.5770696975592,297.172472889879,174.927714323613,110.529671251345,219.45896886825,358.028896328583,208.483499972618,288.082464239849,70.5850396241196,277.662919968595,66.8048657016072,175.03360239978,110.147234011568,77.7878530081074,219.522177609749,357.03797823281,288.053900552467,276.525293085112,63.3255847291903,110.024711374868,77.9884393977429,275.377857052206,63.3266062648369,109.898041036378,78.1908736116594,274.226501448966,138.021925015688,363.960671761161,68.0237224696106,80.9946252902305,83.5925652261501,284.68034613868,273.070846342895,363.982795490532,67.8812812030623,122.425259144908,283.57157940093,384.620747671767,138.325561359927,85.0274322353095,186.0290660814,182.861485749129,225.822435943742,70.2668367625624,282.460369178227,389.944802060461,405.932334748806,66.6675960479058,95.0686652841845,390.422405416386,325.882493985948,373.344873878008,74.863400877709,374.18133665839,393.27638529483,386.381046909565,61.104780616552,255.731662412853,64.3349157112144,354.510298929874,372.927534838446,386.087762188155,66.8021753237562,221.979633071244,65.8886209043684,233.509663413076,392.533215378413,76.2955155564452,135.135487865999,65.8233413743606,325.370481731837,399.572201967955,326.393695608446,384.594000677304,81.0041653944785,282.869294028158,405.706109313361,384.609535441777,374.597492591261,81.2436280725687,387.281555134056,395.163807868375,101.240781398307,205.773814580435,81.3692786942431,256.85615954544,353.528294109141,73.3503582815927,258.001534500523,353.040893158791,62.4353964283663,61.1042101010511,79.0431710192958,399.06722471968,326.903995931619,154.675825924057,83.3461470579821,256.293636698918,391.476593733184,399.319737000041,324.328011736953,412.134115801878,60.5963604139009,412.137636914808,60.5964615962711],"Archive703_field35":[1324.81722425369,642.999575310998,642.999575310998,1324.81722425369,1317.62958582482,1310.44194739594,1303.25430896707,1295.82589360673,1288.2701540081,1280.71441440947,1273.03121189311,1265.06191446867,1257.09261704423,1249.12331961979,1240.70305060362,1232.26512165065,1223.82719269768,1215.05864939139,1206.08437561136,1197.11010183133,1187.96782052144,1178.37250782509,1168.77719512874,1159.18188243239,1148.91238078897,1138.58792500775,1128.26346922653,1117.43520380759,1106.24021536394,1095.0452269203,1083.60317853605,1071.34712983738,1059.09108113871,1046.83503244004,1033.40304129116,1019.81893574152,1006.23651921946,989.662166399393,970.607893004991,951.59497773885,933.107878657702,917.283148300299,901.449326397946,885.608823086898,871.729602005076,858.306745940563,844.879766493597,832.295107741468,820.729229668796,809.160744028552,797.735299425189,787.635216770725,777.533435901635,767.430299541915,758.210340414232,749.28991170468,740.368548505076,731.830179422027,723.877763384579,715.92469206123,708.007874177697,700.860373161943,693.712403328805,686.564041811007,679.888306281754,673.418285433532,666.947974623616,660.678593255464,654.78580978381,648.892801732417,642.999575310998,642.999575310998,642.999575310998,648.895662244247,654.791746988614,660.687829481715,666.961981948789,673.436397869187,679.91081088023,686.594131641375,693.748058084244,700.90198059286,708.055898390624,715.985802281984,723.947065919653,731.908322963899,740.466972085173,749.399824769285,758.33266803072,767.584216198065,777.703846468136,787.823463028824,797.943062399303,809.423162986089,821.017975759548,832.612762040213,845.285843499284,858.753024269986,872.220162864561,886.246712917712,902.151297562713,918.055813006972,933.960234503822,952.756560310415,971.937959099879,991.114533402417,1007.27046283695,1020.79841442441,1034.31009512117,1047.59919611594,1059.81046823015,1072.02437871905,1084.24039509458,1095.59243368967,1106.75445886488,1117.91804245712,1128.68098954439,1138.97899717663,1149.27817867906,1159.49925861779,1169.07290898283,1178.64746081877,1188.22278058392,1197.33051633562,1206.28744881694,1215.24499352668,1223.98716999309,1232.41040651957,1240.83413655366,1249.23411866679,1257.19081584201,1265.14791576302,1273.10537088165,1280.77380811393,1288.31896056693,1295.86440926594,1303.28140868335,1310.45976022454,1317.63836664559,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,688.000845335006,858.45550624253,1136.11119139288,761.832404494661,1071.54063031329,685.158372651176,917.540703596184,1188.15904081604,809.265712295633,1106.38714220908,838.367761432795,1033.66219986583,1216.34348493327,869.901260498528,1304.30764551821,1059.50215986416,939.285280002398,1149.00383096526,673.431870078305,1138.78346109343,1050.88259258573,1275.7241284057,1288.28100010207,1168.85112413365,1258.17470335234,1095.27974484594,702.299478639777,1010.85574100682,858.381125668617,1137.34955863851,760.021372339064,1071.63737998468,917.411926237618,1188.1909105933,809.213228500599,1106.46060551906,840.673789141478,1033.79177890203,1217.4419763802,867.582357417762,1309.4350400173,1059.60492960846,904.217075140466,942.65309947565,1149.0495553858,673.427341846417,1138.83234578048,1276.55584296502,1288.28642334104,925.621691948156,1168.81415969138,695.150319189531,1095.35791655531,703.738583543157,1009.06310187709,1257.16626652719,1319.07444158944,742.174804003489,1071.73412965607,686.582095778889,1319.43327054496,799.956856364472,1106.53406882904,842.979816850161,1033.92135793823,1218.5404672119,865.263455260361,650.861023365472,1314.56243500914,1059.70769935276,946.020920263906,1149.09527980633,673.42281361453,1138.88122975976,1054.1659882423,1277.38755752434,1288.29184606204,928.401205941027,659.212324730598,696.588234653944,1095.43608903214,705.177688446536,973.537413189771,1257.15399158292,1313.33165867882,1320.03140306337,743.981059576597,1071.83087932747,686.576077953454,1314.04931658986,1106.60753290648,1034.05093697443,1219.63895865882,646.930299439297,1319.68982950823,901.683317825569,949.388741052161,1149.14100493466,693.740927207272,1138.93011373903,1055.80768607059,1278.21927156568,1288.29726878303,931.180721024391,657.736819716402,698.026150118357,1095.51426150898,706.616793349916,976.466934169637,1257.14171663865,1307.5888757682,1315.24558162668,745.787314537245,1071.92762899886,1308.66536263475,669.543344053302,804.690010022603,1106.68099621646,1034.18051601063,1220.72867260835,1177.21005842714,1320.02546549878,901.800312411872,749.311894673343,1149.18672935519,1057.44938389887,1279.050986125,1288.30269202201,656.261315106454,699.464065582771,979.3964538345,1257.12944169438,1301.84609285757,1159.22155473333,747.593570110354,1240.71943676336,668.24565959694,807.056586454179,1221.7615124593,822.709818898248,1176.04760848238,1315.23370649749,901.917308088668,1149.23245448352,725.483875492604,1279.88270016634,1288.308114743,982.325973499362,1257.1171667501,1159.26122668253,1287.43722699419,1240.73582213113,1231.23037793684,845.015125641043,1222.79435288871,824.690407818855,1174.88515853763,1310.4419474962,902.034302674971,727.089987361604,1249.22026918024,1288.31353798198,985.255494479228,1257.10489235216,1159.30089863173,1240.75220807735,661.859656732467,1230.19563380605,1317.62958624451,844.947446834955,1127.02857409102,826.670995944483,1173.72270859288,1305.65018849491,785.765458239448,715.973580416308,728.696099230603,1249.20641916634,954.985475356552,654.790262890737,677.313801069374,708.01747912943,988.185014144091,1159.34057058093,1240.76859402358,663.071245778883,1229.16089025371,1314.03576662398,795.881493360714,1125.79367853795,828.651584865091,1172.56025864812,1300.85842949363,1069.69903581701,783.707452485331,756.524117145617,715.961358408657,730.302211099603,1249.19256915244,958.375972061893,1204.99014323343,678.612305854384,1280.76720920601,1159.38024318793,1080.29495060124,1240.78497939134,664.368157847883,1228.12614612292,1308.64503793231,1114.38356310062,793.819924779051,1043.36368499388,1124.55878369267,830.632173785699,1171.39780870337,781.649447425046,754.715566069089,715.949136401007,1249.17871968488,961.766468767233,775.64913725938,1203.89591099328,1213.9622493573,1104.71910404115,1280.76060963698,1159.41991513712,1081.94906498744,1240.80136533757,665.665069916883,1227.09140199213,1115.90938381546,791.758355503556,1045.17440279705,1123.27411786277,1170.23535941642,779.591441670928,752.9070143801,715.936914393357,1147.67070810024,1249.16486967098,965.156965472574,773.594427901304,1202.80167875312,1212.86584967739,1223.96717292609,1159.45958708632,1240.81775128379,1226.0566584398,1319.4264958084,789.696786228061,1272.04580012858,1121.9350989606,1178.61309233308,874.055876402024,740.447287627447,1197.30296467423,1249.15101965708,968.547463492918,771.539718543227,1201.70744651297,1211.76944938225,1265.07266477718,816.27508335065,1271.06038838473,1120.59608005842,1178.57872291386,876.382150688707,1197.27541302654,731.845808472055,1249.13716964318,769.485009185151,1200.6132136576,1210.67304970234,990.077129012359,1265.08341491419,818.646529830671,1232.39224605132,1270.07497609454,1119.25706192372,878.708424975391,646.928320238085,1294.99179008057,1209.5766494072,989.86964779004,1083.87627139008,1020.65848961409,1232.37408539959,1269.08956435069,832.348050213383,1006.3842259494,881.034699262074,998.696929687111,650.857064963047,1294.15768660261,1208.48024911206,1083.96730262236,1020.51856381058,1268.1041520605,1006.53193208239,883.499381415043,1000.86705323393,1206.26206492908,1084.05833385465,1020.37863800707,1128.57660994288,1267.11874031665,1117.6421354219,1197.16520582055,767.553433506079,1186.80277586907,722.342591363389,1084.14936424672,1020.23871313478,851.816395975119,1128.62879999268,1266.13332802647,1197.13765417286,1185.63773090128,679.892807355338,1020.09878733127,854.128605598324,1184.47268593348,679.897308509277,1019.95886152776,856.440815221529,1183.30764096569,1047.27169740104,1273.08683155272,736.858756162495,888.365902996538,917.927035671882,1193.83417144055,1182.1425959979,1273.09610113521,735.05464787727,1031.60238114866,1192.74219461742,1293.70894543314,1047.49003069986,933.249938317162,1095.12339989227,1092.01295911141,1134.87282485504,763.643436650259,1191.65021717906,1299.09892964534,1315.0099499917,720.71650649265,1001.24448628274,1299.6146097447,1234.96474242787,1282.42655613302,817.968354517548,1283.25555907285,1302.46084168746,1295.49114555725,652.333559982098,1164.82763727677,692.304123684359,1263.60220916762,1282.01341047285,1295.21251797877,722.328729092553,1131.07811696004,711.192188121345,1142.58037374323,1301.73105143489,834.332424034521,1044.45098021892,710.385320007781,1234.45556333559,1308.65019745421,1235.4739209417,1293.68860958194,888.470351465777,1192.10569760049,1314.78619299316,1293.70352219417,1283.668705251,891.276181225445,1296.39580345775,1304.30119697814,1009.72793592025,1114.9040933459,892.708344751855,1165.95041461452,1262.62293489591,800.003858771319,1167.09302858468,1262.13636622295,668.900014185044,652.332570381492,866.255691783959,1308.14674371476,1235.98310003398,1063.72253344774,915.159257560094,1165.38902594565,1300.69748760581,1308.39847083086,1233.41482523527,1321.22779572088,645.947619165189,1321.22340537229,645.946188529345],"Archive703_field36":[800,56302.6367371926,-47517.6234800201,800,805.891754882669,879.546195949755,1090.88672772601,1473.93762694969,2022.81813774723,2703.4159464969,3471.75336435892,4283.67772016918,5103.8590440707,5901.56924972948,6656.61153003947,7354.37053488322,7987.30844201723,8551.45406608489,9047.98352320476,9483.89821138084,9874.52730972357,10245.5062332639,10629.999647276,11059.6471149055,11561.3219562048,12162.09800232,12887.703360726,13768.7061571145,14841.5802729902,16143.4824660505,17717.9794547533,19615.347933238,21902.6369842624,24634.7189324774,27826.4458296834,32149.8090771287,34989.2551758071,39219.4256142379,43367.7444034991,48157.441010042,53330.5866273205,58407.775472873,62811.4183321653,66433.1250568744,69258.6714361106,71412.2283792819,72976.5453026816,74010.831147122,74591.2182251174,74799.0635651424,74681.2504134518,74301.1602668167,73721.538928666,72978.2444411906,72107.5865120643,71150.8172676512,70135.1165473358,69075.1081565066,68000.3793028985,66922.2377318819,65849.0659319143,64789.8210338803,63753.221466481,62738.1714302644,61744.8032559412,60778.161728634,59835.8835877011,58915.3182570139,58018.7006239355,57146.7197956678,30346.9847747584,4393.9136563471,-21556.5965599702,-47591.5629493072,-47674.9275498211,-47760.0429754049,-47846.7132675433,-47934.5389302332,-48023.6329523243,-48114.0430606819,-48205.7984837236,-48299.902383293,-48394.4372033625,-48485.4082356951,-48566.8893311482,-48631.6891003731,-48668.9482496575,-48664.2086207864,-48599.2689215965,-48452.8348639236,-48198.0451117488,-47800.5479494485,-47225.3493811193,-46435.368538773,-45381.3862374718,-44019.0663911307,-42304.1919346239,-40173.7406036476,-37566.7897638364,-34455.1074419161,-30730.8742746896,-26349.1136366801,-21366.5532369945,-15891.8656347433,-10060.7189995959,-4169.70255803832,1274.53616585492,5756.27899690385,9156.31861027841,11539.5232357953,12981.7588028669,13661.679344851,13871.6102725565,13913.8590538884,13901.2484513614,13758.2944717413,13474.6622035049,13072.1889872327,12582.3658173969,12031.4916815764,11439.8038284672,10823.4438283396,10192.92363233,9559.50227995401,8933.62107950142,8324.09814170629,7741.94910345645,7198.08692542664,6696.32734495133,6240.71051334565,5824.0761014399,5438.49254807317,5068.53816320722,4701.74145628772,4324.71087729295,3924.28835376075,3484.72608730691,2996.00806027428,2292.0310018685,800,800,800,800,800,800,800,800,40546.7885392318,35280.6592577726,12593.109551902,23894.6993775927,18414.4903261238,-26137.2348700097,32218.9647307856,10552.3275144069,26807.6434655543,14746.6416007054,15500.8882738259,23954.8458245588,8598.01836096606,-20134.7394938911,2437.81711015492,15560.5708403176,29636.2481410432,11888.330790284,-20755.8243545762,12528.8594194494,13716.6233272863,4637.46920956704,2353.3255488373,11014.2365678644,5924.14194232667,15066.4810483173,42154.0974600036,11032.6291391997,53482.3466659594,12426.0502417988,47989.57668923,16821.5730141822,45594.030968211,10426.2113625927,50886.4893686148,14300.4006475879,-4212.83579291623,19807.3805526618,8763.83473844529,-2244.78798429942,1654.11042667734,13891.678404732,47765.1688295604,17684.3739763239,12003.9234221967,6421.58873820274,12627.3531049423,4337.01318284552,2629.01862263967,17528.222861285,10821.2587873299,41342.621139142,14299.1412055946,19521.549040172,6292.04487799908,6054.9193644436,906.542237137472,46371.3649841008,15184.7677550543,-3765.70380159057,950.07047863893,50389.7896352714,13830.2629644307,-23415.2501723712,15798.6979561556,8828.55845839195,16365.1319800635,-30317.0919886935,1105.17525252463,13219.3947746465,5396.47854776997,12129.6439184142,33598.7591408851,12795.7422713566,18327.6654634339,3981.89806564276,2946.68791063662,3360.15116278142,-21312.4589187817,18934.2445678393,13758.7833812714,-3109.62218311966,34804.6821524561,6036.29516260932,1410.38892231653,1034.74953911054,22623.4188716193,13969.7257482687,18403.5888478027,1665.12398003134,13540.2507998797,12968.5664981543,8801.27518964885,-12959.8286391508,856.403769564452,33427.5913471041,-5498.42205320034,12285.1898842998,-25807.8945489946,12963.2911753639,20608.2300750548,3606.52770744584,3279.14261887519,-9378.01730534791,5131.57966098764,-3473.90069288606,13628.2659373156,-25747.7907001903,27611.7016235517,5938.17781517727,2348.81712103355,2051.78716908615,-1145.05953586225,13518.3700724212,2688.3651083948,16727.1102991917,1744.55928955491,13575.9226035457,10949.7652752452,8695.06992846281,10483.1007616896,829.580362398677,17602.9524268264,47259.8823852459,12441.5677444708,21917.9970298376,3248.52801115628,3599.84668807005,31573.7950284475,-25884.2771668229,21300.2495532062,5777.05977791153,3252.6324291562,11249.1568656141,-24928.8467212141,6901.00732910974,38280.553056153,-22495.4915517654,8521.86108163942,54708.8429936989,10726.8368368211,900.951687403049,1102.47828700151,12551.2540961002,44675.7060333258,2939.21712159468,3887.95642630573,14664.9540796939,5572.26179178801,11420.9005080134,2217.26235012831,7092.70377599865,7672.74102707075,35431.1678975216,8286.52528507217,34888.529819887,10959.5515199197,990.517923812988,-14883.866489779,21358.9105574242,6476.05226653986,4129.64843002109,8035.95133218428,5342.82106870984,11586.134818071,7225.85857341222,37571.4037093036,7926.43139415642,827.76512283642,54314.6880968578,13161.1868023926,14990.0166441827,11166.224687342,1092.5413815392,-23648.3362847949,-25385.6417444365,-1962.90396203739,6616.81465843836,37501.28836172,-21252.1991152059,-4501.65841752273,43016.8991109487,1672.15239037822,11752.9917812313,7292.94115916206,16220.3860518641,8112.59528173023,846.283591757822,-23128.1754394354,13285.7433144907,-5033.86036687891,11332.4812071948,1241.36854367105,19750.5070317675,690.708398292311,-24690.621286607,-2291.39634706288,-25303.0746679546,6664.49178997818,27398.2143517791,9306.78720987984,-26260.9819083024,4601.16579444281,11909.4759825506,17401.5143283819,7283.68319711815,-5137.2080715868,8226.30337799785,946.783569404696,14092.3670502713,1205.99182983059,22579.8858367638,13287.7835275614,-24655.3715468811,11443.5370335593,25080.3846330726,-710.239969726368,20788.376278636,6628.37719651902,17874.4895321207,-24069.6341087248,9527.65306730658,8829.63769683853,15138.0312254177,4446.41680912561,12026.1427484476,17937.5937127423,7186.6904615108,-26492.7765871175,8257.21023800145,14071.8360790082,25630.6058543935,24523.8830359549,13226.3137868468,11484.6333098785,49382.3356106627,23258.6577061707,43857.2248341581,11816.039417174,6521.24158157681,7939.78122586565,199.401638305866,9709.44714412322,9053.39890238988,8092.60327678879,12074.456354377,6992.02277111158,8193.15990506174,822.750012323093,49940.9298660603,3777.54054477926,13183.5399247433,10998.9990379597,51775.3895524217,-24871.8787095472,9842.21417888922,6356.68320615957,-1272.34941884149,24492.0398495997,9839.04348183734,9225.46728328129,4509.45632484944,2316.99152592506,4138.00564394761,13252.2380023289,11070.710478116,34376.1238424324,10015.8292537472,45576.2419832988,6146.72563258336,48720.6890393738,9900.36809777857,9337.79519092584,26702.4787881147,4757.34083867666,-21703.9063367334,7531.8434508607,4518.04449585208,13477.160467706,16771.2341634278,22266.1402533961,1622.74938285922,9376.1153177832,31652.5598947104,15904.6618074217,8671.31798047376,7760.77463410296,4874.67441719982,54783.0978418283,31092.5978027061,-1061.23529424051,15478.0061720715,40141.299642514,1864.62095023148,9327.33940356056,14754.8765532996,11933.5768115578,5166.34573234571,26236.9810680845,-18013.9081647393,21155.4418868803,9253.93144903969,13913.4619257329,15740.9899675896,13079.1690303381,5363.97260966879,13614.4410903102,9853.90927558079,-24103.5598121081,10112.4484787019,-25464.55525906,13618.3965709031,20580.5928247042,15939.0871421141,13286.569266452,5453.48965564388,9679.58904763918,10349.2685504571,39792.5895084086,25596.5185370325,-3293.90081162898,10568.0269388417,17841.3617529378,29961.2056100412,-21917.9963913328,10750.0143780808,15783.359174541,4953.00355074381,-1551.06169725816,50046.5010231915,-11982.742064663,10154.2813056644,10879.4956747041,5049.35789005731,22011.2490811895,27509.8075549558,10308.5363688059,3848.41487364331,12446.9098718521,42197.0069279669,16217.6748478007,16132.7934245409,12683.9549490631,-251.80879886837,10401.5581929505,3216.06515753788,948.935067544046,32745.4629039826,6962.22174991607,1702.50180692298,7715.77196266222,3810.54516209636,20817.6289761776,3259.91851025268,1329.18216499794,2746.09490625488,-3916.26152274559,11788.9370261816,-3620.31757276004,5151.28147806819,4126.6565518749,2222.06403091552,-2127.5214910521,12857.2062512261,-14013.3434366339,12260.4889343293,1965.93952785047,35249.605560261,19135.2153217364,8849.72564648062,7765.6053895998,1154.76384614127,7590.08555564596,2628.75037807876,34023.5099778348,9994.29174215394,1011.81162981893,3552.00558815393,2918.01724952926,8669.29790133165,3031.52038039616,1988.24890031732,15600.6173538124,13556.2506645277,-8103.86633853041,11564.4734205336,5536.33261754839,26264.5978974774,11270.9308663679,5685.20413677739,-12947.7119166549,13698.4847978762,43980.3274812588,1503.3527767891,7396.83298528705,18505.7616246248,2124.73550055525,11706.9171439728,1827.41570459744,1303.48901029949,7792.37706536932,1205.20907596848,-34573.856382964,801.46736911262,43746.6785579992],"Archive703_field37":[-5.21086263462401e-18,712520.290285896,712509.018581734,0,1.04984780826742e-17,-4.01029510691272e-17,1.84744978863728e-16,-9.31258988857168e-16,4.7696339214086e-15,-2.37896393376194e-14,1.14017455337407e-13,-5.25033255207454e-13,2.33462021481819e-12,-1.00747116496701e-11,4.24097661607127e-11,-1.7486613842073e-10,7.08774714465966e-10,-2.8320132100243e-09,1.11829055300776e-08,-4.3745893039178e-08,1.69986434826051e-07,-6.58231890598344e-07,2.5487444630677e-06,-9.8965053255515e-06,3.86096296420687e-05,-0.000151580797078452,0.000599458008569593,-0.00239014316134869,0.00961520340089467,-0.0390322066375612,0.159877599629998,-0.660567175159471,2.75273830195962,-11.5548331754089,48.7129747387138,-210.031514471254,853.122381614953,11562.005528377,23586.4861734598,34865.9153264777,46652.1777305116,59920.6692111107,74720.0075480622,91036.2449371561,108748.401652821,127639.879278782,147527.381424169,168271.800398401,189742.34708231,211803.216350902,234342.464932751,257274.578159536,280511.306316969,303983.230559079,327638.245032865,351432.400623638,375324.045501402,399289.497192857,423304.34266818,447354.011828752,471426.570579223,495514.835282493,519613.926117622,543720.162289376,567831.274638658,591945.304274808,616060.729975241,640176.43320246,664291.503495523,688405.834523545,712519.791768404,712516.878043045,712511.482756481,688379.970939128,664254.077076404,640125.886846027,615995.418343709,591863.257918709,567729.842886137,543595.64757137,519461.591734916,495328.613828379,471198.566403476,447075.221145563,422965.191458666,398878.065746428,374827.454148373,350833.652369962,326922.811785892,303128.645034186,279497.102630919,256083.723857131,232957.399438222,210200.621759935,187904.981375865,166180.818687033,145151.041344528,124951.606556143,105740.32432664,87688.3071203155,70974.056625602,55837.3743197527,42462.2763733721,30854.1991611885,20897.4236399059,12551.8305813856,5906.39765593032,961.481593117653,-2414.24770527114,-4413.3510292946,-5289.42475086915,-5413.84497620519,-5170.39508622314,-4819.80176994169,-4449.8745649418,-4109.44223403593,-3827.47756620172,-3618.53906735077,-3486.88504305799,-3431.56362904933,-3447.73187228947,-3531.62412687215,-3677.35169953855,-3877.85258537764,-4123.85867597938,-4402.88632007308,-4698.55405312337,-4993.06583911204,-5264.31791424559,-5490.9887870609,-5654.17081476911,-5739.18486652296,-5738.74278849829,-5646.52726741479,-5456.60460256193,-5158.19234831399,-4726.74913564863,-4144.47352991068,-3082.8400676936,0,0,0,0,0,0,0,0,538863.840574604,123029.452624528,-1278.81357631723,317396.280323541,-3837.69558371623,548440.253084258,51160.1052628568,-2541.18856049021,209488.514372706,-2356.36206319972,153651.424444154,-5755.02952314805,-3855.09328490057,106713.981218505,-3284.08374027136,-6467.96221513236,32276.9703942847,-1036.36007525423,591883.959343171,-2216.67210870348,-6730.08624650366,-4299.58829175644,-1248.36317345053,-783.067490668449,-5212.51040831281,-3775.63528117672,490638.138057379,-2081.42988581323,124834.140746176,-638.751456752773,322452.512094445,-5061.07383500584,54597.5274394853,-3086.5593931452,210357.47762538,-3244.74467847585,150032.578316567,-6925.31383415613,-3317.15388271941,108824.872608964,-2134.27841411965,-6422.43254041201,67337.6057792253,28341.7160804672,-1495.77548784875,591904.017280316,-2575.79999949719,-3664.68760675581,-1907.073358133,42156.0052296112,-394.238587099974,514748.678445566,-4406.78763451122,485768.488161915,962.047299647295,-4653.67690502869,-625.400029191951,370290.296450423,-5689.86672718985,543639.144077184,-888.192331071947,228582.281770292,-3855.59287756111,147201.778366804,-7071.91485213729,-2783.61142882033,112126.162172484,680342.865593797,-1053.33040091617,-6026.27381783165,26623.8950353696,-1895.0747330401,591924.432939073,-2886.50269900426,-6233.72665111608,-2967.70719770776,-2580.71658804705,39944.2080678161,646170.348363897,509887.759611548,-4712.98984544796,480906.091934177,16591.2521922047,-4027.16824328117,-1872.08465607952,-1239.9737566335,365319.554130148,-5823.52357964297,543663.372466038,-2452.96057496151,-4205.60931458381,-6407.55996347404,-2249.86280840317,696431.721529254,-334.357933520059,67174.6489319455,27798.7100654318,-2250.83628545804,519485.890088795,-3220.79687005993,-4714.23132921511,-2227.43695557982,-3256.99073672231,40215.324240337,652212.542767717,505031.374883172,-4809.57001294396,476049.905555955,11270.9770021344,-3323.68677134679,-3327.46659551612,-3020.32402605885,360420.10129498,-5663.80099953299,-3834.62554210001,606383.154817949,218398.599507118,-4368.10551937336,-4940.13847633729,-1711.46448370333,-366.603274007264,-147.586908966156,65918.9309495062,351123.343701624,-2611.66105724158,-2505.89900808801,-1468.57992930358,-3910.8468514589,658252.950324385,500178.763559222,8227.38420296024,-2550.85843188876,-4410.35067712158,-450.216520652399,355578.539602706,-756.49287268118,611222.396711531,213977.917416605,-1162.49363795588,184480.260443088,-738.86658797621,-259.130627905574,65991.0467332718,-3017.93119858106,418361.344532976,-717.042533969895,-4509.10888730456,7074.41293079818,-1723.45001255001,-885.346712718085,-620.564140862899,-1503.15736463125,-670.787383747088,143694.461499657,-594.425664670803,179733.105634059,-1118.36668299531,-326.681096445703,67706.8859135281,413445.640440655,-5011.09944903214,-5029.01739325281,7317.07183919669,-863.493354268029,-1289.23751183761,-2227.67854253405,635342.20766469,-1313.73340668129,-62.3415865638385,145192.77971871,-765.408792928157,175502.699922205,-1512.18900425865,-335.511657800234,260361.438348145,447103.266411335,408559.802752412,-4456.69026337715,26695.1861086561,664266.857965702,577415.034687466,471358.099860919,9072.41783560722,-1666.07891868848,-2921.37593496315,630506.765438622,-1927.90565553856,-56.0397100877939,237013.21703774,-1527.53623618281,171769.675035489,-1932.45460611416,-237.943284410288,-2105.60434094449,265020.211373807,331598.683332923,447141.256086083,403700.39476758,-3834.42212267557,20210.1030166896,-451.830066787097,572572.242140438,-5246.04038841058,-2043.16446186297,-3391.13008985637,-3577.82739249229,625670.619155291,-2516.93157723213,-131.169439207639,-2069.29440517771,241569.613324443,-5437.44057573191,-2229.35909835432,168654.091104043,-2389.72196955208,269905.977193096,336418.122196106,447192.533585665,-3150.57644188697,16545.4807012306,283946.721135514,-891.058647734572,-519.616473600422,-1259.11420828101,-4760.1524106274,-2452.04571462068,-1777.33960181767,-4191.11207574972,620833.565687242,-3084.92796068187,-1050.76664851346,246435.234679711,-2955.73822075117,-2826.36860729467,-2892.67916778372,275088.008389505,341321.378555736,447262.222234603,-535.177131178662,-2412.16044232108,15564.6005825772,288679.269119738,-1334.20657393805,-1017.99193055145,-4135.39683130679,-2911.64570406536,-4755.61277701057,-3635.61930691731,-79.0438665257087,251696.688766404,-866.065033419588,-3290.04116826415,-2954.24108088071,102238.701842523,374811.952120601,-3282.15506504855,-1629.55299657701,17263.356581543,293577.205969274,-1791.09448077011,-1508.87299276519,-882.557268636621,195583.004704278,-1748.75801481309,-3626.4305533481,-2428.70485275313,96881.374754646,-2722.72036289362,399120.329133261,-818.308680675623,298690.6727271,-2268.15196474458,-2002.67715049027,5082.48054936818,-1767.53674943126,191352.556298469,-4455.17898066087,-2607.91460720736,-3869.37270060775,92744.9414023593,696443.881963664,-481.877704260771,-2505.81552887232,6522.09120357226,-4363.1465159982,-2509.04450139216,-3883.72861134337,-3410.08353340338,166353.00210116,-553.770766573411,89656.578885161,1552.77854742893,680368.13536317,-1030.13878496838,-3023.39631510231,-4993.1318543027,-4611.14160398334,-4131.65535542229,-899.70872016631,87992.060910091,841.681459024598,-3530.986713009,-5224.74100634672,-5415.81518147368,-3277.89783173659,-4762.7563236904,-2762.39437307975,-819.660897193464,302948.681074396,-367.111433524254,427805.417500579,-5220.31771845533,-5491.41926932558,132477.335967349,-3525.25823451403,-5299.7543183429,-406.492233933305,-739.220646660519,567808.588688949,-4756.56858878614,129004.045244198,-1124.89468334211,567787.443628489,-3272.69681266843,126506.585598532,-1532.09227087003,-7111.60378098307,-4753.44182228492,384473.583444626,84127.1627825063,51965.9835548072,-1201.48146492238,-1969.03044306575,-5296.59118024889,389366.948289095,-3357.15729986626,-1629.5708614269,-4930.71752352109,-5969.11595196606,40811.7457048128,-1476.58386794275,-2891.79361678414,-1876.0155180664,312493.631589943,-2084.84273190032,-4226.13108704841,-445.096111126168,432766.115862238,2723.67218334669,-1282.77319806827,-2414.55416500763,-3509.66663912608,192354.408418466,-2451.68774777342,-674.482147842463,-3056.74617719306,674323.320762648,-2641.9667803225,524334.930495677,-2609.21890538224,-4156.6433795816,-1951.47231000501,427846.882781683,-2707.57968471248,461594.054365312,-1412.67812249677,-2093.01534608957,161491.296431978,-6802.75210066756,464045.527409201,-3043.76895987699,-687.823445374984,-1756.42610684673,-2617.320906883,81561.2621394054,-577.608938272979,-701.746804504362,-4401.12600663021,-1730.86950572821,77398.1892848715,-3696.44398359968,-2406.10348203729,-2524.31626164969,-3329.62840968329,76661.1993008032,-1762.39298593426,-3760.04302076007,227855.816782125,-1175.80211208491,-4426.39485779915,608777.720843733,674329.277309311,112246.387263047,-1639.04981128246,-1070.809277453,-5012.28690604696,52393.8181397709,-2181.00365556692,-1670.39508398517,-1101.19581792821,-3473.00809345944,-1659.39591204199,700445.544698276,-2.6923629469074,700463.101038224],"Archive703_field38":[800,714741.317521702,714091.749078153,800,805.891754882669,879.546195949755,1090.88672772601,1473.93762694969,2022.81813774723,2703.4159464969,3471.75336435892,4283.67772016918,5103.8590440707,5901.56924972948,6656.61153003947,7354.37053488322,7987.30844201723,8551.45406608489,9047.98352320476,9483.89821138084,9874.52730972357,10245.5062332639,10629.999647276,11059.6471149055,11561.3219562048,12162.09800232,12887.703360726,13768.7061571147,14841.5802729933,16143.4824660977,17717.9794554746,19615.3479443607,21902.6371572454,24634.7216423553,27826.4884681164,32150.4951273366,34999.654220517,40888.1806558933,49366.8267631011,59453.9416371092,70856.0311971633,83677.6842078991,97613.2870099186,112698.52704042,128930.130036149,146258.829286976,164590.110377831,183828.729899347,203877.434044601,224623.02278887,245954.630031789,267788.8552277,290036.994663894,312620.582532328,335479.244724335,358562.645859755,381820.735037592,405220.277300331,428731.405552565,452331.955318571,476003.2677747,499732.601392623,523510.368056568,547327.774769743,571178.410995092,595057.331856442,618959.736963842,642881.700123086,666820.344049604,690773.726041649,713165.754328269,712530.425998376,712837.498954066,690023.145448116,665962.7449261,641905.111924984,617850.84234866,593801.175560139,569757.355218392,545720.7978428,521693.534841315,497677.924211411,473677.221885243,449696.662400485,425744.40210644,401831.746528777,377973.923580819,354192.683204968,330515.376050355,306976.632085591,283622.428470797,260506.748489944,237695.989821427,215268.541221412,193307.403486516,171912.0202471,151190.176462105,131251.032053277,112215.328194785,94214.6147604541,77341.4723649669,61742.1101061736,47534.9819820935,34706.3826872093,23193.110648952,13226.2946574738,6042.34852586735,5836.02559488052,9469.25353316394,12354.685905244,14017.9911474832,14695.2781514305,14803.8696596983,14725.0114727631,14596.098524955,14358.9060253915,14007.7159458043,13563.7734388286,13056.5805962472,12511.2917408259,11948.0528412379,11385.0474429722,10835.9866969562,10316.0954102977,9839.50181521211,9416.79445566509,9056.16840118558,8760.31745199371,8517.8543667399,8312.48612456054,8117.23536913586,7906.67086247894,7656.58199880528,7347.76448339448,6962.58988889019,6481.27976449615,5872.43333677892,5113.97351746748,3841.52430637936,800,800,800,800,800,800,800,800,540387.158192769,127988.167932641,12657.8739268954,318294.447676307,18810.1398549873,549062.716135211,60460.0534140534,10853.9972024722,211196.797803044,14933.7162378472,154431.336751953,24636.4567925399,9422.72062468134,108596.876207331,4090.00712415991,16851.2877873746,43819.0600276982,11933.4174143368,592247.773801124,12723.4411064707,15278.7373950871,6323.96870234913,2663.93538803738,11042.0379399739,7890.86322968554,15532.3621177132,492445.682739812,11227.2550560088,135808.409536133,12442.4566720247,326004.021488738,17566.4392246933,71131.6080405577,10873.4875851711,216424.821111568,14663.8953457132,150091.713767732,20983.1431406145,9370.6087958265,108848.022358938,2700.22696316805,15304.4558425525,82558.2491662388,33406.4358068965,12096.7566659833,591938.850283117,12887.3888772826,5677.9942412163,3247.87125845328,45654.8723970824,10828.4378285108,516406.249269034,14962.794407236,486160.585576454,6365.16800669968,7636.67186975527,1101.33737983758,373182.538626649,16215.7872195006,543652.186143029,1300.5843038251,234070.481775896,14357.6380405276,149052.465578347,17309.2702557246,9256.99395267726,113314.137636286,681018.017992938,1526.73418520943,14528.1923973849,27165.304481469,12276.7898829999,592877.230905396,13117.2755595947,19358.7879088641,4966.16534324986,3917.0228172061,40085.2887478901,646521.724313951,510239.191966904,14543.6031785815,480916.145507224,38556.9131160526,7256.37260274257,2343.90654073954,1615.00511634771,366019.392534454,15134.9484427434,543974.77390374,2964.73497149255,14178.3476269471,14465.1492112099,9084.2901550184,696552.295172843,919.359910063522,75032.2418857328,28337.2709761731,12489.681920579,520126.559043469,13357.4118217361,21140.5563751701,4238.92881464849,4621.77076173393,41294.3036305838,652232.729977075,505043.322500567,14452.0447054251,476745.698780571,29823.4972652553,6805.06058155907,4072.95664257993,3651.32685603671,360421.920225205,14656.9086500955,4683.12502546754,606613.820041985,218405.567130935,14261.3470740265,12012.5903846071,8861.90452102911,10489.5090228404,842.606357307909,68228.8017751072,354289.569385378,12712.7251766948,22060.7824802002,3565.06118433054,5315.41336804344,659009.750415922,500848.072093805,22833.9764791851,6315.16416390747,5480.03748293616,11258.1625988729,356451.322377745,6942.34712635747,612419.969452396,215157.14322816,8600.78529862526,192421.474879648,10752.2533619056,937.476733232958,66000.2553580376,12908.9847820903,420739.983016846,3025.41687762154,5953.84481914175,16282.1434852717,5832.69932552494,11455.1650889745,2302.46654312748,7250.2364731718,7702.00691915353,147998.195679065,8307.81819558901,183087.953655769,11016.4655654801,1042.99870381979,69323.5305058324,413996.981461922,8188.42907077092,6507.30451855567,10868.121001958,5412.14908748039,11657.6435605334,7561.4538160212,636452.143697332,8034.56346730169,830.10937351634,155019.445959224,13183.4247700574,176141.69943252,11268.1537685997,1142.89752073204,261433.208272694,447823.359866881,408564.518059332,7977.73929931315,46032.3754564618,664606.73676909,577432.58239524,473316.925445961,9225.22948226718,11870.494293541,7856.29862622226,630715.373355957,8338.52639390253,848.136997651467,238138.987882572,13373.2696963527,171843.420042755,11496.0650274829,1263.96711500416,19862.4292988672,265021.111450972,332516.636527628,447147.127231585,404492.588712268,7688.83891322678,34045.7106492321,9317.74857888083,573174.154721335,6977.94141740855,12083.4655292747,17728.8596420416,8114.979344795,625691.708895792,8602.7328118062,955.826631286628,14243.4823134959,241572.623651801,23225.3526219927,13473.5011435316,170446.73593896,11690.3939595808,271068.740761274,336418.871918281,447675.461336746,7339.04054870298,24356.7302335245,284965.064051257,9569.22977489093,8844.91397002079,15190.3047359563,6513.80636900397,12273.5747682828,18025.4321519236,8319.4915842896,621398.57056098,8814.66400024146,14111.0127625236,247764.510872941,24701.3608449172,13524.9301622017,11843.3270253802,279485.290185491,342112.917934241,449407.333727866,11828.1529441391,6953.06477495968,17472.7478437071,288679.337986839,9800.68727316927,9110.45219824253,9087.99949097022,12420.5546156263,8456.01769845647,8963.57054832175,826.538272321968,256603.428682975,3875.54914941912,13587.8657572179,11388.8331360593,114601.235236577,375636.273279083,10375.0528583787,6562.23013556552,17310.1806317881,294597.073781665,10000.7397764631,9348.04494550543,4595.00856127036,195596.728446272,4492.35409375923,13739.4618027282,11333.9859604666,102799.40984646,10379.3083495354,401714.115959052,6200.95678900654,302638.106514429,10156.8598398662,9550.13794647876,27181.8686253249,5075.08404028256,192579.490995881,8750.84484595606,5216.69863658854,14021.6225654703,94249.1297099957,696799.728563669,1692.78518466863,9705.18675333486,32317.5218968897,16492.2804587033,9027.01832436679,8678.30460677101,5949.04365242778,175141.397497039,31097.5288436679,89662.8594109113,15555.699800396,681551.262602122,2130.25754413364,9805.11017925794,15576.8336903737,12793.4703036094,6615.26297301297,26252.4027728543,89817.056679524,21172.1786575599,9904.70163260721,14862.1109315676,16646.6158494643,13483.6670353231,7173.28724896263,13891.8619656959,9887.94073595534,303906.046271429,10119.1098936134,428562.619482132,14584.6646256952,21300.6217422822,133432.751016869,13746.2856252966,7604.46876902055,9688.12056424901,10375.6352429106,569201.232929727,26034.7211614889,129046.090494536,10627.7270113932,568067.685519405,30139.4158210609,128391.256577732,10858.6424499292,17311.5376315988,6864.94379667657,384476.712115494,97887.8530896384,53329.6311088567,10225.1154783267,11056.2428980927,7317.77925552379,389988.609456836,27713.8957356548,10436.5426870877,6254.77995907426,13804.1990208061,58704.2245596788,16284.7559818395,16389.9205001423,12821.9400783925,312493.733044268,10608.4391904791,5310.67406855723,1048.1356355713,434003.198581859,7476.02313114004,2131.67058436765,8084.75162237901,5180.54189734728,193477.626908663,4078.95103011428,1490.52051160217,4109.10384706245,674334.692885277,12081.3502836233,524347.428750475,5774.40249398087,5857.21593268949,2957.33202975331,427852.172430734,13139.2062292832,461806.718032208,12341.6063940879,2871.52075843644,165293.597926341,20308.4687151039,464129.905470981,8340.81270309388,1344.0910059823,7790.66309185799,3709.54138403335,88373.2918532778,10010.9689597391,1231.34534224519,5655.67448006987,3392.74725177254,77882.195851676,4780.56627824022,3121.29262580185,15803.5260119032,13959.1675047646,77088.339765948,11697.9944661937,6692.45114812927,229364.562093113,11332.0957109101,7205.17296905366,608915.393662837,674468.400091699,120555.052399162,2224.0849478706,7473.93943786742,19172.5385209149,52436.8828231685,11908.3452234742,2475.81661154682,1706.37505531291,8531.29096597511,2050.88364118944,701298.305026366,801.471891316559,701827.847695532],"Archive703_field39":[9976791.51054806,5839672.58266603,-166904.586805823,-2855132.70677285,10022772.4398026,10026389.839931,10045674.1975218,10074186.4476671,10104795.1435881,10137558.2363964,10163878.561365,10180147.3549689,10186998.1371116,10181329.359557,10166542.4759811,10144022.6205729,10117194.8827054,10089612.2625681,10067217.3012756,10057299.1393509,10065165.23105,10088084.93519,10103327.7830077,10089425.0970105,10040107.2367488,9955642.90604871,9836347.19445148,9681465.38868579,9488475.37189996,9250786.50815695,8962278.88563307,8610705.3478696,8188342.79353585,7696093.26429706,7057850.05166254,6422237.68871363,2531441.08923491,5280766.47144421,7315927.59958646,6686555.53053461,6477200.55746614,6376033.74081883,6307330.79203464,6258996.34286751,6228112.52378063,6196663.35142506,6164478.65541059,6145852.22809717,6136978.67597379,6114602.9985472,6101883.87482937,6104376.22388865,6098717.68921736,6093787.96749189,6094625.89937613,6094187.69787171,6090837.71682297,6086270.27425129,6082020.86933562,6073117.13088879,6056078.13077295,6040978.29773677,6018730.35424271,5993942.39946026,5971275.23544373,5949915.24831011,5943589.62836789,5958240.25934374,5980387.7544703,5987774.23267285,4369583.85768715,2802772.35560343,1142710.73642463,-176114.477780427,-219481.410677348,-201274.831918594,-193916.327297439,-180208.163827153,-154247.560507565,-86562.8948684873,19439.0137650078,141853.68395569,227491.367025481,291330.267671102,355746.162724944,418666.063188627,489062.26617969,563576.728463785,643384.538677102,726852.901280376,812569.114888823,904447.678500261,993019.992937917,1093942.77222412,1201087.49076377,1297157.9779118,1388513.13971091,1485664.90700212,1570973.36232126,1664935.43715425,1767519.66103175,1857010.70144552,1912760.11784722,1938523.86789823,1974501.39182601,1993979.54969387,1922021.02384285,1774011.95591984,1598337.07741427,1414171.61467958,1194800.85368616,866621.449991517,371922.344396295,-147443.240142169,-530505.798847327,-683660.181971604,-779387.100695907,-840995.366272392,-878021.530116737,-901891.42109283,-916557.570446353,-922987.630431982,-925402.916104122,-922359.75065644,-915922.448154727,-905649.293331848,-887008.02127,-863995.232709403,-837847.611291431,-813808.801526324,-794884.241801008,-779426.039001126,-775328.304476443,-780842.22612516,-795988.200049221,-818663.041436222,-844293.368201717,-958598.374806349,-517308.598665182,-1327526.00895912,308369.722522863,1672250.21509688,3028456.17190874,4368696.41577532,5720963.80961926,7100527.65676633,8542978.59779055,4783531.45726161,4048962.00424101,7337343.65192934,3617812.61998605,5972399.29076705,1156015.1494917,4166507.3413038,1817681.69676086,3577787.84262103,6650196.85210362,3190378.3336648,4796974.01778297,485142.275888482,2583159.75187169,1716904.3066503,3575656.68611877,4124684.49419455,7381301.52577579,1381935.48365722,4701169.34784035,2770220.43166463,2851177.52076742,7590770.03709222,7383843.90763524,573627.363424808,5155010.11531918,4815196.79268582,3981061.09104521,5093212.18664371,8642664.80032551,4836959.04235771,4782672.4331629,5228690.90904437,440720.536262225,4846060.89839846,5287544.47498552,3378033.2052731,4025797.13816171,1884379.6000437,3626923.47670184,2410358.15898294,2645124.13916,5168854.48747663,3463205.51872284,6038571.21422815,2956318.04651971,3335641.77673997,4046967.96384023,6381603.96522744,3425445.87301024,8756973.68473079,4799676.32847415,3864607.4393395,3603005.77865844,3012931.04777065,1924635.0603527,2376031.17255699,4838948.80400869,3661742.63613165,2397827.37737239,1140594.27438375,4850139.70110119,3933285.43139239,2394095.9731859,3427793.01419311,3281075.74934341,3252845.16612802,788689.56052624,3062453.89114746,2012794.10361852,4169765.89480872,4662767.55869229,4463497.07898832,1899534.04474523,4495921.51405727,5239529.02019564,5189216.93010743,4037415.2319769,1301124.52020861,3596045.69143145,2589544.57303745,2418558.75650859,5371613.71352262,3286943.58814179,1707664.41172459,-22325.2756457451,3631294.1420979,2544856.82264336,3597874.35211737,701916.697033433,2580883.73230838,3225780.98891399,4669053.93357152,1730847.00592535,3748503.41519185,4155709.46692931,3052867.61717032,3249410.81119801,1207936.68263846,506612.90653358,5572037.79318583,6438192.07655014,4008871.20743025,2942004.02381922,2818720.18932451,2406298.60635053,1265929.78560244,1279903.87455001,4156015.31896645,4653695.0266016,1019940.52515575,-290116.833543496,2569828.95430097,1613678.14198403,45270.9042475512,3532046.02278428,3086905.02011358,1156872.99364687,2650811.09093397,6044167.69249874,8752893.1718055,5510928.04265399,3317643.64904112,4850094.94412671,1840242.80994297,6810654.04271257,7651000.03253397,2824093.86758398,4335645.62529452,1214004.31449316,3035048.77779115,6023790.84294155,139690.339617351,8751442.38938482,1780327.90445059,8785950.79290519,4743332.73815686,2352289.86319738,7406664.26632778,5042365.64454928,7385497.10075002,6491909.34763683,3911702.66250203,466258.762067169,4837819.08577011,8882016.37858044,1628291.91443942,4683535.20676499,7400791.45629262,7395280.6547752,8843442.02904753,7409884.63533677,8779156.6138307,4040980.53377294,8761955.87430604,4044772.54506579,5996724.47254052,7425563.8511876,2804683.17753921,3628345.94747738,548107.447561321,420775.076027022,4000041.02719981,8788007.85218945,6016787.89207682,6036738.48898495,4718889.33649309,7416336.69148252,8009737.04874193,5080226.93460446,8535304.5630574,3132847.32883386,4600673.52987077,8305774.62275362,2154752.24576268,1406793.80604022,2478028.97067709,1918415.21723841,5351984.25948979,1306745.45267318,2347454.8055024,4830616.09950284,3060930.3855187,4612374.73651933,4663361.18893987,3487141.63717083,6051077.19323148,9027254.18292831,2252176.29539213,7252438.67920699,3280118.27247744,3207270.7745521,9174332.76522985,7200772.3854028,2893934.85101033,1872547.71050785,2437354.13587127,1584055.12068821,3289283.47456475,3930674.81313526,8732029.02863895,1097155.07889823,432112.136985229,3201385.63364982,6191624.77976639,3287059.24444764,2245527.44054256,4677731.80703746,9044263.7298506,6772867.29418449,3004418.6814327,5167527.24973574,5982450.62283155,2289315.98656736,1821290.22164271,3595829.94005869,2638401.44500331,3635987.82203678,4660846.29832742,3501231.94774631,2064588.65327188,7384732.63008255,8744794.13069101,8031973.75364128,1638359.14427551,1813008.26643243,7537145.00322041,1908816.22535217,1016577.38709226,3293678.06802198,8208622.15222652,3583469.65180772,6361581.43676086,4716084.70124528,446141.945024414,4834146.53848168,3626255.17646054,4840796.29583707,8716912.34658434,6033559.97370314,4260415.05941349,2795573.47355061,6019346.13561722,7395322.85954977,491738.133824128,444975.643048769,531287.641122827,1899715.93172126,6980272.60325362,4831731.01317612,8759314.89993263,3457729.46037751,436393.254211952,5098161.0446812,1709884.83085094,448932.73618373,7409930.2091052,3181370.98346556,3608351.46621499,4637783.79513163,6032902.95081991,8773575.90438483,3232494.683887,7376543.23959696,2155966.23612227,1806987.13529178,4069923.14284485,1831237.2327894,4850156.37943775,8791711.4182464,4835875.00547353,3246201.11984088,4655134.39614249,3759785.43731659,7383045.72581944,2415764.13571917,512060.494467199,6010950.49608598,710991.812108931,3274799.26542156,3804143.81997121,8802590.80909124,3264547.04719671,5018696.18701467,4980934.86767746,2897651.70494886,1895723.08256086,4654538.85308584,5062553.7916097,3823818.35649287,3707350.74145604,4757701.38858899,4823537.86522323,7570888.55078865,1867115.64401896,3766713.25407696,3710258.00611783,3300798.33065282,4123921.30134873,2704726.50540765,3850063.94213283,459973.38406441,2554586.06916791,3651083.64011268,2035818.22312871,1945182.97665167,5378930.91953706,7363456.75647549,1997255.98629766,8736163.71532831,1472918.70215977,1345443.81573014,3867142.42435875,3221106.07733631,575737.891329156,584402.4345834,8718435.8103862,7374730.53287026,4773785.6206925,4368521.30088265,3496007.90466959,5995010.72385694,3584216.81893162,4949592.07047182,2487249.42676901,4605260.02004338,3461421.63986175,1935740.27977025,2518127.15675897,5147959.28033859,2896168.38543007,6005467.16157447,3213124.27704599,583458.386957845,3634250.49520263,5663959.32098654,4620417.7836958,80519.2835678495,2378944.19076807,5277868.05445144,7836108.6650497,6436845.70562805,6036608.21308756,2719979.97701818,3228917.50535806,937386.03843085,5336773.90321622,4233826.24022395,3526504.42622064,6310572.34740455,5355453.1332544,4031584.6377592,3303521.90515957,5808411.2589271,7507790.49571406,3525918.25162317,2283256.35229273,1123425.28701067,2403127.99287714,6018149.46835173,2841584.00552422,5548741.79108468,2460954.0651871,4071928.30550832,1866273.9265444,6699460.93294892,4239318.41762597,4034281.61553137,4284559.76975213,3031273.68170358,3979340.25317064,6200432.52479503,6725839.72545567,4530199.47854216,3956513.54983082,8044435.50109322,4191388.41271542,1281541.4489798,7009687.95180637,3654494.33990371,2294191.38058186,3154278.88120311,4100759.30176578,4331085.27475269,3296895.70031129,3894370.15039432,3970588.65783151,3545602.35538555,6004044.41341344,2609674.89551539,1816374.89534781,3287860.18159381,4586768.74533471,3690293.3796581,8094392.20726842,5223565.053058,3974813.41826997,2500992.61078659,5269173.28646024,4928439.32437974,2940260.55112663,-904105.682847833,514652.105960724,9328626.0226493,5094688.70331928],"Archive703_field40":[-909.090909090909,-581.945426769753,-581.945587203631,-909.090909090912,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-909.090909090909,-899.658201706125,-882.305086994213,-864.979043036673,-848.133399025921,-833.696122806468,-819.250711448422,-804.793186574,-792.107832863191,-779.836942497614,-767.558816559834,-756.041065532386,-745.445915908546,-734.848606742818,-724.379376453807,-715.109520647875,-705.841149906697,-696.570127725182,-688.098818339671,-679.901119486501,-671.702606520969,-663.851138533719,-656.531580197049,-649.212712811082,-641.926803551277,-635.338105213171,-628.751174325166,-622.163569279349,-616.004566128624,-610.033277430484,-604.062136545655,-598.272936341893,-592.827064394165,-587.376601668994,-581.945257933706,-581.945330831363,-581.945403548299,-587.378530423393,-592.814956991366,-598.345707495272,-604.050012758255,-610.002830766348,-616.036013989899,-622.234782147916,-628.752696679483,-635.344925634357,-642.082305042059,-649.186875176344,-656.55888725194,-664.019502756999,-671.792875772587,-679.91952630098,-688.255324137517,-696.797552179613,-705.876586710767,-715.244731970459,-724.763994998086,-734.965606822155,-745.650651053613,-756.467427207305,-767.928171772126,-780.134317949202,-792.5999173208,-805.535109811218,-819.602630980868,-834.36658962383,-849.462133043954,-865.9585270619,-884.061195104947,-899.948931172708,-907.918797186139,-910.496525657484,-909.025137276348,-909.07857594612,-909.094126661448,-909.092721026523,-909.090856886405,-909.090858895487,-909.09091202336,-909.090909675793,-909.090908939022,-909.090909058775,-909.090909102155,-909.090909090843,-909.090909090916,-909.090909090918,-909.090909090909,-909.090909090907,-909.090909090908,-909.090909090909,-909.090909090903,-909.090909090899,-909.090909090909,-909.090909090912,-909.09090909091,-909.09090909091,-909.09090909091,-909.090909090908,-909.090909090909,-909.090909090912,-909.090909090912,-909.09090909091,-909.090909090909,-909.090909090912,-909.090909090912,-909.090909090912,-909.090909090911,-909.090909090911,-909.09090909091,-909.09090909091,-909.09090909091,-623.462581336172,-779.909106998463,-909.090909056762,-691.525269908218,-909.09197068276,-620.955139194306,-833.839687090951,-909.090909090909,-734.898473841113,-909.090911424814,-761.902002127646,-909.05245313799,-909.090909090908,-790.435059702797,-909.090909090911,-909.092740949233,-853.934583496716,-909.090909097438,-609.999718960286,-909.090909056273,-909.086574677547,-909.090909090911,-909.090909090909,-909.090909090907,-909.09090909091,-909.090858409264,-636.650065855941,-908.840354047515,-779.876520293967,-909.090909076908,-689.793782771836,-909.09275508534,-833.76693346618,-909.090909090909,-734.873575779521,-909.090911503378,-763.897063657853,-909.048351244527,-909.090909090908,-788.287750728633,-909.09090909091,-909.093406858857,-821.712793711566,-856.887637600556,-909.09090910179,-610.005924431934,-909.090909057678,-909.090909090911,-909.090909090909,-841.394730972202,-909.090909090908,-630.064223342194,-909.090858458493,-637.966659314497,-908.642667535422,-909.09090909091,-909.09090909091,-673.329215512075,-909.092753518415,-622.204638390684,-909.09090909091,-726.479196223956,-909.090911618159,-765.905783795904,-909.043569330867,-909.090909090907,-786.15980822812,-589.190066188467,-909.090909090909,-909.094067144313,-859.884720269318,-909.090909101868,-610.019679130775,-909.09090905801,-909.089487745406,-909.090909090911,-909.090909090909,-844.037143750536,-596.947450144335,-631.377487401981,-909.090858555559,-639.321766697848,-885.22081755775,-909.09090909091,-909.09090909091,-909.09090909091,-674.964422668641,-909.092746501298,-622.192982660201,-909.09090909091,-909.090911736023,-909.038449518265,-909.090909090908,-585.567992636277,-909.090909090911,-819.332827276259,-862.909806937525,-909.090909101941,-628.74665189435,-909.090909058388,-909.090843940642,-909.09090909091,-909.090909090909,-846.73388884438,-595.553757498067,-632.691904805905,-909.090858701012,-640.686040863354,-888.146587257349,-909.09090909091,-909.090909090911,-909.090909090909,-676.60143246297,-909.0927340297,-909.090909090911,-606.429616199807,-730.717664143386,-909.09091187274,-909.03193069444,-909.090909090907,-909.090909090911,-909.090909090911,-819.373739701438,-679.89670787087,-909.090909102013,-909.091416526151,-909.09090909091,-909.090909090909,-594.175749018669,-634.015591648302,-891.171098236529,-909.09090909091,-909.090909090912,-909.090909090982,-678.261091014559,-909.090909090909,-605.245086412707,-732.834978533233,-909.090909090908,-747.235579254178,-909.090909090913,-909.09090909091,-819.438174743145,-909.090909102085,-657.990862257997,-909.09090909091,-909.090909090909,-893.553674187169,-909.09090909091,-909.090909090982,-909.090909090909,-909.090909090909,-909.090909090908,-767.708625804645,-909.090909090908,-749.028652917951,-909.090909090915,-909.09090909091,-819.496528482742,-659.451246665501,-909.090909090912,-909.090909090909,-896.010077904205,-909.090909090909,-909.090909090961,-909.090909090909,-599.424948516039,-909.090909090906,-909.09090909091,-767.632119327386,-909.090909021403,-750.851104184931,-909.090909090917,-909.090909090909,-713.338699508771,-649.17579609463,-660.961124304291,-909.090909090912,-868.055588352259,-592.816301095407,-613.596958686649,-641.972017643081,-898.216809862048,-909.09090909094,-909.09090909091,-600.571338287986,-909.090909090905,-909.090909090909,-722.76765020386,-909.090909005827,-752.704296431471,-909.090909090919,-909.090909090909,-909.091458859088,-711.452923502702,-686.544174584451,-649.189406757547,-662.479239572305,-909.090909090912,-871.245000106294,-909.090909090909,-614.818300676096,-909.090909090908,-909.090909090917,-909.091167429149,-909.09090909091,-601.725297388544,-909.090909090903,-909.090909090909,-909.090909890209,-720.790139053665,-909.07658426277,-909.090909027703,-754.577090129297,-909.090909090919,-709.573007825801,-684.862384269009,-649.199773239419,-909.090909090912,-874.505749944513,-704.004069564967,-909.090909090908,-909.090909090909,-909.090908517403,-909.090909090908,-909.090909090893,-909.090992981737,-909.090909090909,-602.880147720885,-909.090909090902,-909.090909528202,-718.878437904574,-909.082153131739,-909.090909022431,-909.090909090919,-707.705948092068,-683.195637701157,-649.20753692071,-909.090909094132,-909.090909090911,-877.719973137425,-702.122973839474,-909.090909090908,-909.090909090909,-909.090909090903,-909.090909090866,-909.090909090909,-909.090909090902,-909.09090909091,-716.97147652284,-909.090909090909,-909.090909090908,-909.090909090917,-794.260357722013,-671.777130694234,-909.090909090907,-909.09090909091,-880.915831621302,-700.27352403105,-909.090909090907,-909.090909090908,-909.09090909091,-741.291341404191,-909.09090909091,-909.090909293198,-909.090909090917,-796.458723466404,-909.090909090907,-663.89430082377,-909.09090909091,-698.422544917394,-909.090909090908,-909.090909090908,-899.374989737531,-909.09090909091,-743.46198493616,-909.090909090899,-909.09090909091,-909.090909485008,-798.669627529925,-585.566556739676,-909.090909090909,-909.090909090909,-899.545959865316,-909.090884505618,-910.490882361545,-909.0909090909,-909.09090909091,-756.120555728086,-908.651238569222,-800.923251204579,-903.93462984556,-589.190520070627,-909.090909090909,-909.090909090908,-909.090877656958,-910.457412701577,-909.09090909091,-908.218807864203,-803.194517670375,-905.690011324595,-909.090909090908,-909.090870748959,-910.430632035032,-909.09090894919,-909.09090909091,-909.090909634155,-909.090909090908,-696.774185207237,-909.09090909091,-655.073078685048,-909.090863824013,-910.383027912472,-773.827503741813,-909.090908940584,-909.09090909091,-909.090909090908,-909.09090909091,-616.010317795046,-909.968812359348,-775.918842245308,-909.090909090912,-616.024330442984,-909.524613022624,-778.020171367364,-909.090909090913,-909.080076890744,-909.090909090911,-668.617004281388,-807.238112214515,-834.254890179072,-909.090909090908,-909.090909090914,-909.090909090911,-667.029230465947,-909.113636521875,-909.090909090908,-909.090909090912,-909.078266843702,-848.398920531263,-909.090874255054,-909.090852584893,-909.090909033227,-693.280619559896,-909.090909090908,-909.090909090912,-909.090909090909,-653.599676543535,-904.365748757544,-909.090909090909,-909.090909090904,-909.090909090909,-742.860271457772,-909.090909090909,-909.090909090909,-909.09090909091,-590.547242902091,-909.090909090896,-627.438836332984,-909.09090909091,-909.090909090909,-909.090909090909,-655.066787975937,-909.090908985785,-644.901210796586,-909.090909074079,-909.09090909091,-758.073701762147,-909.07610999318,-644.150643034921,-909.090909090902,-909.09090909091,-909.090909090906,-909.09090909091,-807.383343240176,-909.090909090909,-909.090909090909,-909.090909090911,-909.090909090909,-809.920280364047,-909.090909090911,-909.09090909091,-908.224699266433,-909.090910157804,-811.24498185433,-909.090909090908,-909.09090909091,-726.57518399078,-909.090909090912,-909.09090909091,-605.842800270492,-590.547502702261,-787.104599047948,-909.09090909091,-909.090909090907,-909.091365792265,-831.697849942142,-909.090909090903,-909.090909090909,-909.09090909091,-909.090909090901,-909.09090909091,-584.662150997384,-909.090909090909,-584.660683878859],"Archive703_field41":[415.721639475313,61.07441203426,61.0739380380904,415.726108768874,408.550710428746,401.371545352732,394.073855703568,386.692607605976,379.224597926473,371.630891503067,363.875238875216,355.967742703386,347.989439162112,340.013817149623,331.598622180361,323.205729325198,314.695023177365,305.929300252197,297.024044743332,288.022886305758,278.795738879999,269.294548066467,259.687631002117,250.070354033853,239.816200203546,229.548168095399,219.138405484544,208.275179886422,197.189804895338,185.946317362473,174.421408865575,162.326296394335,150.065282551875,137.556897666578,124.273468934105,109.772906953715,98.5709740166226,90.6583958771785,87.2975274879165,86.5489202055627,85.0598609208086,83.5768956488934,82.1929318605494,80.8543022740685,79.6215347165356,78.4716482487525,77.3431892068421,76.2741794600691,75.2832329379076,74.3205797741565,73.3897329885736,72.5221349893125,71.7012221945944,70.8866905857809,70.1203392750129,69.3922454295435,68.6834403170167,67.996023771552,67.3481329018052,66.7202907587132,66.1017477268281,65.5224179396177,64.967440051788,64.4143439726648,63.8928646931405,63.3889979581586,62.8960999296346,62.4170767900636,61.9609281301916,61.51918438471,61.0743054042598,61.0741868651261,61.0740683928781,61.5194937571459,61.9667108941317,62.413501333303,62.8946912933874,63.3940933092126,63.8935305401745,64.4119264590432,64.9730451253581,65.5342584732357,66.0955090848266,66.7271481550061,67.361874086233,67.9966869232578,68.6858462096287,69.4093110334881,70.1331774305107,70.8864518895952,71.7191685850394,72.5529292491725,73.3878595555062,74.3476161421574,75.3198931075579,76.2943728021516,77.3693652877103,78.5197924389099,79.6740887267027,80.8835677226612,82.2685885348974,83.6597840850399,85.0574740085135,86.7243007902121,88.4324729181095,90.1462312133841,98.2001465989061,111.713489393239,125.214028838652,138.496453716349,150.7051028336,162.918894315834,175.13551659339,186.488897939864,197.652317451364,208.816965947613,219.58070819193,229.879438897951,240.179054061064,250.40002342682,259.973647789871,269.547909918145,279.122572846662,288.229621467552,297.185745302185,306.142325691319,314.883464170569,323.305751436297,331.728605078539,340.127743275658,348.08390817254,356.040694526158,363.998044911517,371.666689821938,379.212352905714,386.758616688135,394.17681747811,401.356825930233,408.53853128786,415.724783672925,415.724089663833,415.723678346979,415.723420634013,415.722932820967,415.722295919284,415.721921835328,415.722042134675,64.5219758119234,78.4838972307856,227.065723100005,70.4248632163841,162.516903242323,64.3053881800283,83.6004646517712,279.024695558991,74.3308027058341,197.338469367876,76.8116985900926,124.559898992291,307.226746218989,79.4722599403304,395.167911996422,150.452656903191,85.5736667635306,239.907594280263,63.3919540337745,229.715235387872,141.815292379305,366.534324458255,379.237819997954,259.761026639303,349.068287904981,186.169772178386,65.6364259541098,101.752283674647,78.4779594132069,228.307931531675,70.2715773547009,162.611629843278,83.588533524584,279.07361816832,74.3256559054732,197.404328386203,76.9950240098203,124.713781176102,308.308033825623,79.2708934108997,400.356989983422,150.539760201207,82.4327230463924,85.8400766333286,239.954124477151,63.3901040543254,229.756175947992,367.387245443145,379.243481187893,84.3281948853737,259.724408164897,65.0797845186558,186.249895522978,65.749778851894,99.8322253103044,348.060233745998,409.983083443298,68.8245044457774,162.688067658086,64.412542239915,410.339856090159,73.5748871059849,197.466868893115,77.1807908118258,124.862472386266,309.379469448661,79.0705406169478,61.6681126957242,405.476568315286,150.626824291788,86.1129888771903,239.999048252634,63.3894841811612,229.797319802965,145.070195791795,368.239179759527,379.240709697381,84.5700855659395,62.3002953283411,65.1924884640765,186.329792782105,65.8646862841993,87.6028052999125,348.049424376467,404.242663943382,410.936374301011,68.9672859695805,162.76474600093,64.4133740159409,404.955203482302,197.529318537082,125.000799041521,310.447673574531,61.3710428617578,410.599869186248,82.2137077970685,86.4053170178393,240.044003434956,64.9713273549965,229.838404896702,146.741836494276,369.089611056318,379.235150236331,84.8123612518032,62.1866763817017,65.3059122843163,186.409460701284,65.9789379121443,87.8857132058048,348.03857499836,398.503970325357,406.14648596614,69.1123093553159,162.841664263851,399.575658188007,63.0924222057369,73.9532305078643,197.591891767068,125.108688828889,311.513102488133,268.134651074632,410.937356578442,82.2234872395295,69.3942974466787,240.08898851179,148.405606025308,369.939413116369,379.230935129414,62.0731343978665,65.4200211121152,88.0895522485172,348.02629271979,392.690662538278,250.111439190369,69.2606813442513,331.61494249449,62.9939745955562,74.1480384976272,312.576004491948,75.4500666926148,266.972231478457,406.155410297725,82.2376170123431,240.134005687128,67.4767248585781,370.785230060315,379.227403185351,88.5947083390858,348.014009740431,250.152382369481,378.394379439605,331.6316867645,322.169756707545,77.3547041996171,313.636587963379,75.6164529566928,265.807930070764,401.371620029854,82.2519194242794,67.6045181983149,340.11350464969,379.219875244409,89.0103862978006,348.001725648074,250.193503933109,331.648301818362,62.5114465657631,321.131018285681,408.548940631205,77.3487272268379,217.865034547896,75.7840545672871,264.641816538293,396.508823060839,72.3809429524262,66.7242871093989,67.734920733424,340.099266213648,86.7785663243257,61.9653356845838,63.6905583402445,66.1028523796483,89.4835165802109,250.234633872589,331.664778077313,62.6056705221936,320.090891042574,404.96362118916,73.2132053528253,216.587926790757,75.9536055635748,263.47434829253,391.623872544743,160.682260451756,72.2095401255579,69.9832529121436,66.7230700338884,67.8651506158533,340.085026489973,87.0323265977416,295.93147707242,63.7923667330438,371.662535658062,250.275918098318,171.225502077399,331.681109965621,62.7007658400122,319.049599145545,399.557479556069,205.270655224936,73.0388785410959,134.099231872123,215.307065336232,76.1237331328523,262.306573967677,72.0382300454769,69.8349558745387,66.7218915419459,340.070785573045,87.2984878815364,71.5475397731345,294.838556744802,304.847834013892,195.671055285082,371.658358542969,250.31728185136,172.83046638304,331.697128293946,62.7964705992258,318.007337894198,206.775658255494,72.8675517403529,135.835300835738,214.03560011042,261.139215318354,71.8687783883924,69.6869864318521,66.7212484421305,238.582282975498,340.056544102429,87.6311629948931,71.3764373755254,293.745600067396,303.763505687674,314.852645494782,250.358720140463,331.712861116957,316.964127701934,410.341183829768,72.6943553378177,362.905864057292,212.74735968811,269.522845991687,79.8273619878253,68.6853198359728,288.203124782343,340.042302375615,88.0071190750534,71.2116789314297,292.640916061321,302.676330014803,355.977912846968,74.9168974029532,361.935809980416,211.434179067743,269.49832251671,80.0349886985906,288.176564913838,67.9975968230016,340.028060139862,71.0485488548723,291.535750999947,301.586339875592,90.805407525769,355.987419095021,75.1180369253853,323.293734642879,360.965334360774,210.1248580373,80.2429359892109,61.3708738590277,385.868443747781,300.492113113152,90.7198272431181,174.712275851986,111.337360407798,323.280035697631,359.992312350016,76.279186980054,98.6748157653254,80.4535686776952,93.6589642782809,61.6668380399855,385.044506766669,299.393774530521,174.81784945912,110.952492618673,359.015933845516,98.7790378851738,80.6647029679544,94.5861663294305,297.168869246649,174.923581206739,110.531206450854,219.456052502183,358.023423255557,208.480357856922,288.079141705998,70.8879989592832,277.659885776703,67.2324819517703,175.029470086277,110.148719075574,77.9227395543066,219.519259467563,357.032513752959,288.050578848827,276.522286626118,63.893221355304,110.026230553957,78.1198881760383,275.374877220089,63.8942259766268,109.899599291533,78.3189019991483,274.22354768858,138.01866354568,363.955187293099,68.4080442824409,81.0796979458526,83.6483684945306,284.677119545156,273.067917998158,363.977308042768,68.2704644500212,122.424276279922,283.568383901956,384.615683146176,138.322223249959,85.0702993501828,186.02526997961,182.857589991717,225.819641467164,70.5793642626596,282.45720409986,389.939989971909,405.929085852543,67.1001369777891,95.0776993948028,390.417591182834,325.877801997955,373.339482985832,75.0568896499565,374.17596059882,393.271722917236,386.376055098527,61.7789137194311,255.728947398002,64.8590698089409,354.504870404746,372.92213666907,386.0827612174,67.2298342040005,221.976765649246,66.3500298551807,233.506959180843,392.528534569498,76.4582378554386,135.132579001003,66.2871983089144,325.365807723721,399.567967879137,326.388985848088,384.588931618652,81.08916333378,282.866114964254,405.702782826419,384.604474025619,374.592124675968,81.3256567248297,387.276604347304,395.159281665792,101.246259239252,205.770606812362,81.4498343070433,256.853442103527,353.522876739307,73.5787397854415,257.998811247141,353.03547980464,63.0440126616392,61.7783512350849,79.1571824995301,399.062944387108,326.899268690958,154.671684654322,83.4046067000031,256.290920828182,391.471847917912,399.315479342754,324.323375041855,412.132514228042,61.2967371859524,412.135973953318,61.2968515246523],"Archive703_field42":[1324.81722425369,642.999575310998,642.999575310998,1324.81722425369,1317.62958582482,1310.44194739594,1303.25430896707,1295.82589360673,1288.2701540081,1280.71441440947,1273.03121189311,1265.06191446867,1257.09261704423,1249.12331961979,1240.70305060362,1232.26512165065,1223.82719269768,1215.05864939139,1206.08437561136,1197.11010183133,1187.96782052144,1178.37250782509,1168.77719512874,1159.18188243239,1148.91238078897,1138.58792500775,1128.26346922653,1117.43520380759,1106.24021536394,1095.0452269203,1083.60317853605,1071.34712983738,1059.09108113871,1046.83503244004,1033.40304129116,1019.81893574152,1006.23651921946,989.662166399393,970.607893004991,951.59497773885,933.107878657702,917.283148300299,901.449326397946,885.608823086898,871.729602005076,858.306745940563,844.879766493597,832.295107741468,820.729229668796,809.160744028552,797.735299425189,787.635216770725,777.533435901635,767.430299541915,758.210340414232,749.28991170468,740.368548505076,731.830179422027,723.877763384579,715.92469206123,708.007874177697,700.860373161943,693.712403328805,686.564041811007,679.888306281754,673.418285433532,666.947974623616,660.678593255464,654.78580978381,648.892801732417,642.999575310998,642.999575310998,642.999575310998,648.895662244247,654.791746988614,660.687829481715,666.961981948789,673.436397869187,679.91081088023,686.594131641375,693.748058084244,700.90198059286,708.055898390624,715.985802281984,723.947065919653,731.908322963899,740.466972085173,749.399824769285,758.33266803072,767.584216198065,777.703846468136,787.823463028824,797.943062399303,809.423162986089,821.017975759548,832.612762040213,845.285843499284,858.753024269986,872.220162864561,886.246712917712,902.151297562713,918.055813006972,933.960234503822,952.756560310415,971.937959099879,991.114533402417,1007.27046283695,1020.79841442441,1034.31009512117,1047.59919611594,1059.81046823015,1072.02437871905,1084.24039509458,1095.59243368967,1106.75445886488,1117.91804245712,1128.68098954439,1138.97899717663,1149.27817867906,1159.49925861779,1169.07290898283,1178.64746081877,1188.22278058392,1197.33051633562,1206.28744881694,1215.24499352668,1223.98716999309,1232.41040651957,1240.83413655366,1249.23411866679,1257.19081584201,1265.14791576302,1273.10537088165,1280.77380811393,1288.31896056693,1295.86440926594,1303.28140868335,1310.45976022454,1317.63836664559,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,1324.81722425369,688.000845335006,858.45550624253,1136.11119139288,761.832404494661,1071.54063031329,685.158372651176,917.540703596184,1188.15904081604,809.265712295633,1106.38714220908,838.367761432795,1033.66219986583,1216.34348493327,869.901260498528,1304.30764551821,1059.50215986416,939.285280002398,1149.00383096526,673.431870078305,1138.78346109343,1050.88259258573,1275.7241284057,1288.28100010207,1168.85112413365,1258.17470335234,1095.27974484594,702.299478639777,1010.85574100682,858.381125668617,1137.34955863851,760.021372339064,1071.63737998468,917.411926237618,1188.1909105933,809.213228500599,1106.46060551906,840.673789141478,1033.79177890203,1217.4419763802,867.582357417762,1309.4350400173,1059.60492960846,904.217075140466,942.65309947565,1149.0495553858,673.427341846417,1138.83234578048,1276.55584296502,1288.28642334104,925.621691948156,1168.81415969138,695.150319189531,1095.35791655531,703.738583543157,1009.06310187709,1257.16626652719,1319.07444158944,742.174804003489,1071.73412965607,686.582095778889,1319.43327054496,799.956856364472,1106.53406882904,842.979816850161,1033.92135793823,1218.5404672119,865.263455260361,650.861023365472,1314.56243500914,1059.70769935276,946.020920263906,1149.09527980633,673.42281361453,1138.88122975976,1054.1659882423,1277.38755752434,1288.29184606204,928.401205941027,659.212324730598,696.588234653944,1095.43608903214,705.177688446536,973.537413189771,1257.15399158292,1313.33165867882,1320.03140306337,743.981059576597,1071.83087932747,686.576077953454,1314.04931658986,1106.60753290648,1034.05093697443,1219.63895865882,646.930299439297,1319.68982950823,901.683317825569,949.388741052161,1149.14100493466,693.740927207272,1138.93011373903,1055.80768607059,1278.21927156568,1288.29726878303,931.180721024391,657.736819716402,698.026150118357,1095.51426150898,706.616793349916,976.466934169637,1257.14171663865,1307.5888757682,1315.24558162668,745.787314537245,1071.92762899886,1308.66536263475,669.543344053302,804.690010022603,1106.68099621646,1034.18051601063,1220.72867260835,1177.21005842714,1320.02546549878,901.800312411872,749.311894673343,1149.18672935519,1057.44938389887,1279.050986125,1288.30269202201,656.261315106454,699.464065582771,979.3964538345,1257.12944169438,1301.84609285757,1159.22155473333,747.593570110354,1240.71943676336,668.24565959694,807.056586454179,1221.7615124593,822.709818898248,1176.04760848238,1315.23370649749,901.917308088668,1149.23245448352,725.483875492604,1279.88270016634,1288.308114743,982.325973499362,1257.1171667501,1159.26122668253,1287.43722699419,1240.73582213113,1231.23037793684,845.015125641043,1222.79435288871,824.690407818855,1174.88515853763,1310.4419474962,902.034302674971,727.089987361604,1249.22026918024,1288.31353798198,985.255494479228,1257.10489235216,1159.30089863173,1240.75220807735,661.859656732467,1230.19563380605,1317.62958624451,844.947446834955,1127.02857409102,826.670995944483,1173.72270859288,1305.65018849491,785.765458239448,715.973580416308,728.696099230603,1249.20641916634,954.985475356552,654.790262890737,677.313801069374,708.01747912943,988.185014144091,1159.34057058093,1240.76859402358,663.071245778883,1229.16089025371,1314.03576662398,795.881493360714,1125.79367853795,828.651584865091,1172.56025864812,1300.85842949363,1069.69903581701,783.707452485331,756.524117145617,715.961358408657,730.302211099603,1249.19256915244,958.375972061893,1204.99014323343,678.612305854384,1280.76720920601,1159.38024318793,1080.29495060124,1240.78497939134,664.368157847883,1228.12614612292,1308.64503793231,1114.38356310062,793.819924779051,1043.36368499388,1124.55878369267,830.632173785699,1171.39780870337,781.649447425046,754.715566069089,715.949136401007,1249.17871968488,961.766468767233,775.64913725938,1203.89591099328,1213.9622493573,1104.71910404115,1280.76060963698,1159.41991513712,1081.94906498744,1240.80136533757,665.665069916883,1227.09140199213,1115.90938381546,791.758355503556,1045.17440279705,1123.27411786277,1170.23535941642,779.591441670928,752.9070143801,715.936914393357,1147.67070810024,1249.16486967098,965.156965472574,773.594427901304,1202.80167875312,1212.86584967739,1223.96717292609,1159.45958708632,1240.81775128379,1226.0566584398,1319.4264958084,789.696786228061,1272.04580012858,1121.9350989606,1178.61309233308,874.055876402024,740.447287627447,1197.30296467423,1249.15101965708,968.547463492918,771.539718543227,1201.70744651297,1211.76944938225,1265.07266477718,816.27508335065,1271.06038838473,1120.59608005842,1178.57872291386,876.382150688707,1197.27541302654,731.845808472055,1249.13716964318,769.485009185151,1200.6132136576,1210.67304970234,990.077129012359,1265.08341491419,818.646529830671,1232.39224605132,1270.07497609454,1119.25706192372,878.708424975391,646.928320238085,1294.99179008057,1209.5766494072,989.86964779004,1083.87627139008,1020.65848961409,1232.37408539959,1269.08956435069,832.348050213383,1006.3842259494,881.034699262074,998.696929687111,650.857064963047,1294.15768660261,1208.48024911206,1083.96730262236,1020.51856381058,1268.1041520605,1006.53193208239,883.499381415043,1000.86705323393,1206.26206492908,1084.05833385465,1020.37863800707,1128.57660994288,1267.11874031665,1117.6421354219,1197.16520582055,767.553433506079,1186.80277586907,722.342591363389,1084.14936424672,1020.23871313478,851.816395975119,1128.62879999268,1266.13332802647,1197.13765417286,1185.63773090128,679.892807355338,1020.09878733127,854.128605598324,1184.47268593348,679.897308509277,1019.95886152776,856.440815221529,1183.30764096569,1047.27169740104,1273.08683155272,736.858756162495,888.365902996538,917.927035671882,1193.83417144055,1182.1425959979,1273.09610113521,735.05464787727,1031.60238114866,1192.74219461742,1293.70894543314,1047.49003069986,933.249938317162,1095.12339989227,1092.01295911141,1134.87282485504,763.643436650259,1191.65021717906,1299.09892964534,1315.0099499917,720.71650649265,1001.24448628274,1299.6146097447,1234.96474242787,1282.42655613302,817.968354517548,1283.25555907285,1302.46084168746,1295.49114555725,652.333559982098,1164.82763727677,692.304123684359,1263.60220916762,1282.01341047285,1295.21251797877,722.328729092553,1131.07811696004,711.192188121345,1142.58037374323,1301.73105143489,834.332424034521,1044.45098021892,710.385320007781,1234.45556333559,1308.65019745421,1235.4739209417,1293.68860958194,888.470351465777,1192.10569760049,1314.78619299316,1293.70352219417,1283.668705251,891.276181225445,1296.39580345775,1304.30119697814,1009.72793592025,1114.9040933459,892.708344751855,1165.95041461452,1262.62293489591,800.003858771319,1167.09302858468,1262.13636622295,668.900014185044,652.332570381492,866.255691783959,1308.14674371476,1235.98310003398,1063.72253344774,915.159257560094,1165.38902594565,1300.69748760581,1308.39847083086,1233.41482523527,1321.22779572088,645.947619165189,1321.22340537229,645.946188529345]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive801.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive801.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive801.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive801_field1":[0,377.507073332476,664.156876847796,0,348.059108259688,0,716.191716367374,0,0,769.536212500655,128.301347421114,138.4979922562,848.730818782033,737.895839621902,524.429275486643,415.214510515878,672.102208047477,611.96988277022,0,361.391791669618,481.119210514659,520.075308211827,372.395883609411,498.261919038379,637.040851040879,596.357230712065,627.00273064704,566.893723803985,646.212955664591,694.714115426681,596.685738985087,661.407460674914,718.89176934475,845.558869385189,799.057833874928,768.212471870667,756.118093323321,900.874455275586,717.03840763959,818.154035387447,868.421519324063,762.687643583917,1263.99267449916,791.184587548256,1003.66097030558,980.271985970028,797.926585432073,757.048243479596,752.971580175691,772.8443255821,690.869336380359,688.056020149626,1177.73416569659,795.691304058982,725.03676436443,991.398972064338,873.763141972771,438.33407047101,658.85873956519,863.316424519098,806.017716255591,742.071212034335,837.180764599355,860.564172701491,747.190167651999,740.275009942312,712.768563700986,734.835580384572,500.049088894134,605.937970682617,675.698380029862,613.974737782497,674.848069524609,635.419194583455,693.095269747947,731.40942041395,519.614781557872,602.974995183288,572.525095926234,478.570253315165,517.503089091258,217.849064262526,418.594687384601,471.385041818178,410.802829634921,463.610068532283,669.671909107807,696.917407005873,648.852330678567,555.749162812174,525.325855688996,567.59875515388,558.035626054149,0,0,610.569670541615,324.710783547938,482.195130155425,414.066011813446,299.405048484719,258.14859682643,203.61685858174,312.317427527088,0,455.522478289078,0,172.835566241347,344.668414347487,252.903457690353,166.609335302124,196.014885656611,152.284759823102,215.266568412243,131.452917707884,223.388222300963,122.394051166518,142.136862082905,143.354307782976,418.106660336297,418.781364118239,211.742121367624,0,0,171.776033532292,405.764570837725,264.014181006693,550.130118262177,331.974242178233,277.937546232583,735.892517107225,1015.80251557304,971.448695728964,2023.03331350347,115.890452993819,164.550579198109,768.316257027919,617.479923094145,453.776304275926,436.612523342301,439.489349357836,578.156427344154,609.273386632658,579.742772785469,620.536516078435,480.31844924609,515.762986900103,479.617896396091,351.91946223698,305.221601249905,627.428803616866,493.356928182885,547.96600140209,356.445807809811,267.432234110501,533.2720531132,362.169521816375,429.255607059981,278.714348484868,358.610274860928,279.648977841003,202.557053529397,238.477471264804,221.392523604023,218.703511885954,161.078020049888,206.016800130631,185.202116524838,224.597028337168,154.767465434165,180.449745986037,164.349629859729,132.17268160216,147.223263102596,0,131.928345241329,143.605191552603,151.301402435559,412.287194720231,261.122866676581,409.462614065124,312.786061937951,344.554077742216,114.909565727893,342.103237583556,280.685668357357,374.129979226839,376.928577064538,335.065162858213,414.845078135109,292.192340554107,349.1094736435,368.936505238192,377.321145594565,450.115251595043,425.519580965575,396.511357901965,259.491020321939,206.756296481823,128.077080261848,224.121424349787,0,168.038808824585,136.819093127243,123.73502237531,142.870960207064,0,107.177489652687,169.370851681749,115.347562719659,264.385444007931,269.198324887426,261.931646506577,188.555588348271,158.073194582976,109.740046825282,179.803271181163,155.749462038376,191.653009748266,129.422964765891,175.646341793628,138.331126175827,117.666331198506,146.130005116962,130.777124672347,150.241643226419,0,192.919245946719,172.888984835381,150.821494168896,0,190.410363822963,0,154.970059679808,162.039848543455,175.956933711869,0,166.941839394289,199.348383388728,124.270931088914,0,214.643217423416,218.457023353725,180.49914660523,288.917557685414,232.880734378125,248.115574917746,92.8608233080181,105.040100963114,0,101.269455686375,91.991370879225,748.849314291922,766.504714235985,771.712906800239,119.168371534721,0,84.6705423632156,94.0299817210416,101.516875396677,85.0195742279465,105.110565473057,258.899716125836,832.782997105438,386.077641426761,116.364465535365,90.7404686388002,107.338411946701,101.781621736725,0,91.7639763254674,84.7373492085687,122.130046012109,93.8561019982752,0,102.591126894732,75.4179897360679,107.527448862677,115.089525488597,113.173829803923,137.932842134648,75.5802040384069,0,81.1725029241737,74.4010193359342,72.2042969661534,0,0,71.21893411629,0,116.457092161088,140.196148038168,140.148077154803,86.0569981230572,0,69.9000305964904,106.504823389496,83.0081426430211,109.2021640848,106.386896004091,0,0,115.118845251914,117.774320984149,107.366086716386,124.504106669782,122.250332214333,116.121667959347,0,0,117.467030743132,117.75279402623,107.435349644544,97.0937325701813,98.8666140703139,123.365711358498,121.599570758625,122.544488960794,113.765360971543,0,105.561459324488,114.295169661859,114.969053245916,48.6443549248213,139.016626592568,142.855141596105,177.11100710545,348.619395391119,344.252018760931,0,96.9196046695289,92.2252639075012,83.4599013998163,0,0,639.034708793192,667.748523411654,657.519545215504,651.144320421642,689.317649169454,670.794208480088],"Archive801_field2":[0,39.8505390834254,51.7312162435721,0,25.4783352027336,0,64.3173231163878,0,0,60.2593379088169,9.93534670472469,9.7107425239791,72.8848489079795,59.6125175556589,36.0754823631911,62.3678826455486,52.6685104813454,47.8794447516952,0,13.7716874301972,-16.6154869155016,35.2086289051488,19.1748505735494,32.8386759919066,48.8316513228304,44.5347393460214,63.5954525793116,41.4334725630709,50.3070928448025,55.8555249191724,44.3923621122916,55.5799826021998,56.6557738022207,18.7380175334939,59.0554983005077,61.8092914989986,60.1688758227141,71.3221000738435,57.0993353338107,65.1768135073034,67.5552158840576,64.0320332938005,91.8584230941171,65.8762747667141,77.1325888604193,77.0056938567404,64.8850779249799,62.1720272608126,61.155073361036,63.6460569098631,54.7514696074106,54.2407671288552,84.4261179737615,68.6790271322956,58.0464332472209,77.6648947302096,73.3219687362214,63.3242587992391,71.0195506871259,70.7512756164307,67.8212115976153,65.5216283151138,68.1035382077946,72.1139592066313,68.7953863930184,59.4204979002814,56.8264761238778,70.4738147102418,51.6379962634063,65.3077763108246,67.5069919691026,59.8510419992063,64.050239463826,63.5746108261891,66.0605049762291,66.2412901922318,55.0495915906663,59.8206014463857,60.2347521726057,56.8283640009944,57.595148305074,24.9983525413553,44.9020445791942,51.0965441684623,43.2129267017231,48.6726526547065,62.6920939992257,64.0231435864941,61.9710452122093,56.1215799988935,54.1084743659659,57.1868805982175,57.2954961983478,0,0,96.6415506911735,19.9315476909607,15.6257216865317,15.78928386477,18.5091556430378,5.59946715328582,14.6906970843967,19.4645353468594,0,53.6862342461765,0,6.24423699154016,25.6554447835427,18.0441573522761,11.6873120172953,13.1570820372019,10.7455920289247,14.8978854205299,6.27893948176895,15.1866394391086,8.39135139095793,9.63256509225325,9.85768011497566,31.2396074176292,24.6648475828083,14.5564383053261,0,0,12.2707465423081,28.5288278914275,18.5278323627734,8.75079928931918,24.2934156443988,20.3075622616959,64.5037553666197,106.548304116958,79.8419235964681,126.849475434515,8.07902618537525,11.4846357469784,49.1702889347009,63.8025926922516,19.2231963702416,27.6364544601489,38.085978599224,94.4652612271792,76.8717586268203,74.3635500985963,92.1961680643514,34.5638779363123,69.8887814186154,40.7695596640085,24.5927442329115,23.0410116059257,69.7321467694154,77.3607367675218,65.0188911358934,26.4341879752739,19.986539468413,122.616169503398,37.0296518147163,2.55195402779084,26.6121001775044,33.1256916008923,20.7098692410065,15.1125590127765,17.3865612241017,16.1093436868758,16.3547940684337,11.9300382883152,15.4233003966111,13.6247114806879,16.7989061109767,11.4393349109031,13.4890998643273,12.0823169809542,9.71535827649987,10.8448669101229,0,9.92028144162851,10.7409105082603,11.3953609284745,48.7893443506576,23.8103703953752,45.1223742820752,27.466218920966,35.7265324960362,-24.4886466339665,36.2835660864794,29.6786825300313,39.4986133739973,39.8081342566294,35.3738493091592,43.7696946713403,31.3927312599732,36.9448080745289,38.9848466166471,39.8297351005124,47.0517145857297,44.7165051261318,41.7895946625134,18.7382140971146,14.6062562421881,9.8703937410399,18.2183451152774,0,12.2190317273499,10.3304614466741,9.22009560068617,10.8037033798352,0,7.73132535297933,12.8271590238178,7.99706122245004,22.8955651779174,25.2431867346473,25.1723795222428,21.092414677385,8.17474081294363,19.1945158604433,12.8655518253826,11.1638457300728,13.6750939318381,9.32575868680966,12.6763064066833,9.88237999015765,8.39926683350646,10.4726992367876,9.54699188871173,11.5647167077762,0,14.9840665236799,13.0034628926575,11.7993444177865,0,22.5431707275061,0,13.6711435396062,15.0662739808232,14.6688623452315,0,13.3354305307186,14.4358003457429,8.87919629541351,0,16.9644948428094,16.7718480951543,14.9609220006616,21.9596073948695,18.0121800221908,19.0359277164982,6.42090443706882,7.30221512649126,0,7.4064176222728,6.82154113865987,64.767195175453,65.0374038344029,66.05054037157,5.53936363352873,0,4.90160528791094,7.26638165805345,3.87950990660503,3.72678864477388,7.91799372900359,18.6830516687489,60.0612744274154,40.7162315502038,8.65959175093564,6.71800426633882,8.38459209824428,7.32077534217834,0,7.75510845899029,6.55361213450632,9.53278215744536,7.47787427343166,0,7.24107351008245,6.08013683543916,9.19985103844814,10.2846131093918,9.73338029552042,10.4334276238151,5.85590623446783,0,8.51149065290145,6.15152389801683,5.70448572271753,0,0,7.64129594764126,0,12.4395062906269,9.77914990632934,10.9095719779053,5.92601697314482,0,7.46672717662564,8.38507665851456,9.91059469661899,8.92857817304899,9.5891379204437,0,0,9.66764311613848,8.48828470168002,9.43200537998965,9.1481938306947,8.43384387761837,9.80019922843817,0,0,8.61859638093113,9.90686731718892,8.82850116419843,10.7970282486374,6.92221935632582,8.65263816666294,8.99930819081138,9.1198566792077,8.89894775187382,0,6.14025245375006,7.18879105446989,8.96937687180082,21.0430951605263,10.2567552973926,10.3631560304935,13.616313298864,31.1104259461262,26.0572811070923,0,5.92418235313058,6.04537630950057,5.99989329855243,0,0,49.1140091339141,52.1166757183791,51.0305205455648,50.3614828789095,54.3740391385836,52.4319119415795],"Archive801_field3":[0,0,0,0,348.990384405118,0,0,0,0,0,128.685457081274,138.838007690134,0,0,0,419.872412202361,0,0,0,361.654097807355,481.406033543087,3586.41396630727,0,5675.47276260764,0,0,5896.83031896396,0,0,0,0,0,0,845.766465933146,7173.16790338945,0,0,0,0,0,0,0,13252.0524607711,0,0,0,0,0,0,0,0,0,8599.49761190795,0,0,0,7862.07142039193,442.884543744932,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,618.170617148122,325.321932162086,482.448242533676,414.366943208619,299.976618923468,258.209318336607,204.146128250138,312.923383072289,0,458.675200958324,0,172.94832596349,345.621928841114,253.546347885923,167.018753054875,196.455959967388,152.663406952786,215.781469236786,131.60279121254,223.903845166263,122.681369975717,142.462885949398,143.692837042023,419.272098390984,419.507074599483,212.241880545283,0,0,172.213753564553,406.766248560499,264.663500212435,550.19971238393,332.86193461176,278.678446764011,738.71410653297,1021.37519636749,5857.4280877979,2027.00630905847,116.171716692216,164.950871391072,4292.10021825769,4950.01663230662,454.18329515847,437.486307390825,441.136520778811,585.822959654259,4502.94168009948,13216.7246903581,627.348149907619,481.560457621019,520.47660891177,481.34757040896,352.777707586619,306.090042447285,0,6531.38606790702,0,357.424649680322,268.17804086326,547.187177897338,364.057629567382,429.263192763825,279.981949288167,2129.8778381294,280.414781157302,203.120036861028,239.110428070494,221.977837771656,219.314170541418,161.519207392659,206.593320635466,185.702602911784,225.22439562448,155.189647657694,180.953216720717,164.793152826985,132.529264497871,147.622153950125,0,132.300794638568,144.006313053999,151.729920021257,0,0,0,5554.68518619421,0,117.490008552797,0,0,0,0,0,0,0,0,0,0,0,0,0,260.166697129495,207.271582365485,128.456853304925,224.860670085537,0,168.482479823688,137.208537190156,124.07806383525,143.27885844467,0,107.455980196383,169.855884231378,115.624449030304,265.374960966718,270.379282857834,263.13843530062,4387.0873922018,1993.51625095481,0,180.262971103936,156.149051795804,192.140272560474,129.758520274693,176.103168993633,138.683675691634,117.96572884129,146.50479795825,131.125136383874,150.686077764025,0,193.500278310489,173.377308563172,151.28234408558,0,191.740191920324,0,155.571911227072,162.738763445133,176.567318730807,0,167.473614183811,199.870383727358,124.587737922149,0,215.312574809618,219.099899454785,181.118113705743,289.750892139854,233.576272497115,248.844740874288,93.0825468024642,105.293614032831,0,101.539931440839,92.2439469003011,0,0,0,119.297046584154,0,84.8123014572743,94.3103269258457,101.590976899624,85.1012159460964,105.408375372919,259.572955890431,834.946032360033,0,116.686234700688,90.988813763625,107.66538935003,102.044560241927,0,92.0910910906785,84.9904005338513,122.501518662346,94.1535261472447,0,102.846353669488,75.6626806276866,107.920292429391,115.548137778159,113.591612562127,138.326878629293,75.8067205484719,0,81.6175269418855,74.6548921671844,72.4292872927599,0,0,71.627690039676,0,117.119578343549,140.53679837548,140.57205373377,86.2607941252449,0,70.2976976302955,106.834390136308,83.5976771943144,109.566564922863,106.818178263077,0,0,115.524074787704,118.079810553939,107.779586667785,124.839745385853,122.540905207473,116.534482770457,0,0,117.782781064065,118.168805194197,107.79748042534,97.6922142415236,99.1086499683327,123.668778946958,121.932125203308,122.883373816442,114.112876697049,0,105.739890272836,114.52102219618,115.318398036613,53.0008030126616,139.394488766264,143.23053614141,177.633647785997,350.004773460904,345.236780079514,0,97.1004928198148,92.4231890681755,83.6752882353033,0,0,0,0,0,0,0,0],"Archive801_field4":[4497885,4497885,4497885,4497885,8995770,4497885,8995770,4497885,8995770,7871298.75,7871298.75,7871298.75,8995770,7871298.75,4497885,6465709.6875,6465709.6875,6465709.6875,4497885,5552076.796875,5552076.796875,6026463.10546875,4497885,5301706.24511719,4497885,5552076.796875,7058692.57324219,5813398.00994873,6424362.76116103,7238783.671875,4497885,7069949.09699671,7552860.57983978,7748809.40440409,8220793.41669313,8109463.98521509,7834189.59295337,8656992.48588036,7392944.87533169,8333523.7408863,8347757.88451305,8714652.1875,8732919.59689139,8755173.78361078,8617597.6258377,8891197.79149865,8498981.6162286,8363254.921875,8134846.69921875,8519780.08330749,7042679.58860458,6465709.6875,8961406.55860475,8978688.53810902,7535813.31642531,8966886.83493223,8995757.46915095,8993229.565522,8872168.80252451,8871415.49110469,8891962.18710428,8987217.36775315,8705690.15528142,8973590.30799432,8978994.97080258,7791062.92193595,7238783.671875,8951743.86360458,7871298.75,8665314.32274517,8872407.93292389,8714652.1875,8911107.61924746,8776742.43805529,8926585.64896621,8991735.21082796,8151067.46119872,8654342.92828399,8499540.59348858,8009718.03631726,8194441.4619544,4497885,7284443.99861907,7803966.7893475,6465709.6875,7521498.51938046,8925490.546875,8975415.51505327,8854438.89242292,8363254.921875,8134846.69921875,8449406.09339957,8399530.97521212,4497885,4497885,7168320.92286435,6974974.47743194,7359653.19704895,6744153.09401383,6265072.35569413,5516393.47689994,6500180.29954669,8009493.28588366,4497885,7979408.3127146,4497885,5661013.85822132,7584091.63104652,7236176.1268072,7209355.41952925,7037225.03879418,6438114.00515706,7928342.360184,5519864.30472687,7536627.89339564,6596420.08478296,6737695.96794518,7373443.20780777,8741888.36433575,8310744.97963721,5786487.58506402,4497885,7871298.75,8061536.51890088,8399772.84236341,8534998.86742833,8575394.3804354,8600285.50837027,8905118.58888261,8902198.00288345,8664701.74501549,8530124.64113434,8850565.08831266,7129980.72286276,7635041.74828717,7813391.84610416,8944633.90073837,8732023.68883659,8899056.98898285,8974513.29352146,8554315.34311493,8794173.81947627,8588684.52639528,8720847.58524146,8277604.60579911,8986009.75841626,8903836.82862062,8889075.11176448,8851153.7175097,8756413.90432745,8127846.6936193,8412934.92117438,8954235.31710937,8972993.77239382,8201659.47870175,7359291.86222649,7876487.57392743,7797822.50504194,7500171.11240129,8990257.0578066,8969396.05648018,8964780.44533589,8769056.2468977,8990409.00126023,8965214.96459595,8719768.76091207,8992591.52791747,8906299.75864804,8915064.89120058,8870718.6560871,8991098.13929634,8995161.99881054,8994163.8040432,7871298.75,8797906.42194242,8926754.08196867,8720498.56643877,7678497.51615296,6431991.97260478,7464615.73862767,7100419.87773734,6713673.18079141,6670577.53055171,4497885,5635891.37364367,6139258.24383318,6643327.35877706,5916385.09316725,6895642.08804367,4497885,5378247.68735993,4497885,5548455.19221379,7238783.671875,6869816.54296875,6283143.23431494,8758471.71523781,8414798.54194536,8398591.97759517,6152708.99308908,4497885,8619799.64967709,8649846.16249492,8592439.79585931,8468921.91860137,8714652.1875,8056039.42222479,8552675.41449997,8825764.36520671,6667885.46600869,7157344.5394451,5677427.93583664,5484927.43829301,6086192.46825551,4497885,8418772.7467779,8246823.07900011,8684944.10017805,8438375.58584846,8862108.85890889,8250386.46248917,7795940.18058919,8619603.50247808,8838169.71007025,8174400.63393667,4497885,8125567.37878474,8271062.20909632,7569072.21833856,4497885,5307031.83371452,4497885,5750996.01794653,5305409.50670216,6166101.61346516,4497885,6981678.51465011,8867271.49189755,7609265.39422204,6465709.6875,7289130.93296382,7864992.01751786,6732413.34130215,8444380.80823543,8285405.15606632,8656804.5398984,6849068.91231869,7219862.33111909,4497885,7773704.3695246,6131810.95814701,8925490.546875,8837641.23046875,8914599.80447121,5635615.38033652,4497885,5310694.95802181,5671456.39710335,5490496.77860428,5967775.34267065,6300566.52401312,8192993.89218697,8974624.32475771,5552076.796875,7967808.41394903,6949704.82514333,7287941.65240088,7571157.35628321,6465709.6875,7426987.26840721,6011487.53220686,7211416.75208677,6680363.70365165,4497885,6631685.22432406,5950979.22054858,5653431.61635042,6528032.81909474,5770762.62071373,7702492.61901913,6519344.61088082,4497885,5208595.72841275,5192754.51686616,5343315.68006016,4497885,5599705.48953532,5369671.59394657,4497885,5232766.98186821,6326585.8427348,6868643.85057301,7019064.17591711,7238783.671875,6085415.08614521,5245575.66149562,6974573.71266665,8502874.24447803,8670754.10011292,8925490.546875,8363254.921875,8878249.00165456,8985923.07486605,8134846.69921875,8936442.78315656,8963334.79190305,8981402.62143199,8714652.1875,8925490.546875,8985835.38098601,8822741.71471257,8429333.98692595,7782602.73091805,7836283.06121511,8927130.28759653,8846517.24564643,8633694.52399208,8234422.62034372,8363254.921875,8134846.69921875,8549693.01316112,8499184.63637252,5314241.14194684,8959864.06028019,8810784.83108073,7585693.28746049,8220135.81491658,8693047.95185494,7238783.671875,7572611.07421875,6953977.83314938,6386363.29966675,4497885,5552076.796875,5552076.796875,5733426.92761492,4497885,5204587.46087332,6638302.31322828,5552076.796875],"Archive801_field5":[499.635224603964,1,1,500.428715492794,997.570999363627,499.946714196988,1,500.397741945235,997.206186089963,1,874.745970617993,874.727328509054,1,1,1,718.939374475248,1,1,498.39351881802,616.501824104687,616.724293255682,712.124812009061,640.357710869022,705.736434989562,1,1,786.506339395429,1,1,1,1,1,1,858.237549179708,882.216821086612,1,1,1,1,1,1,1,957.552218482813,1,1,1,1,1,1,1,1,1,980.227684348367,1,1,1,945.72521374873,997.720218790409,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,500.336932682185,500.11122833775,796.112385124008,774.091414163892,813.921144018212,748.436370085924,695.108871134688,612.542012929707,722.071662835722,888.809362744793,500.123710857948,884.213897191031,499.879353159837,629.180005735396,841.969253706759,803.475772213111,801.045554118088,781.802483477358,715.330395084239,880.760039125155,613.448745234848,837.138527400172,733.101240190912,748.754264458963,819.394652026852,968.79751685116,922.226405150157,642.489454063419,500.006233976103,872.430598140557,895.754296077888,932.472797947474,947.804470467293,951.481762954443,954.528178591054,988.762615620408,975.680074441136,952.544770249621,919.587992068293,973.035074630317,792.438086219274,848.373931547877,854.92421067637,957.7211867654,968.487742003426,988.025121990078,997.117548734174,951.113535568354,948.385612452647,908.092317810437,967.970321195571,917.739889403584,998.151689385084,987.643196243476,986.498714888155,982.674931477896,1,879.345418699749,1,993.481874729272,996.544021873095,910.493695210534,818.219727454861,874.22472847207,865.616688732847,821.420480221237,998.424444613193,996.512738225083,995.746527993089,974.139775900903,998.680431287515,996.226322692974,968.729142090819,999.175885061721,989.288846278494,990.709029680782,985.628996584715,999.063716009743,999.599757826626,999.532767996424,872.919382902126,977.762060628044,992.059293966257,969.048379650339,1,1,1,783.24841983389,1,742.290860888535,1,1,1,1,1,1,1,1,1,1,1,1,1,972.622116190898,934.804224231642,933.380911977201,682.951829338973,499.960076960356,957.821556102553,961.287187449229,954.825439509331,941.114474916618,966.080143932813,895.405588850681,950.321772216261,981.082638816049,741.945378818649,794.39882197544,632.180245783585,686.556008345564,695.135336821813,622.545666601442,935.425672096463,916.419059251564,964.947946822608,937.84131162372,984.718501616248,916.891700903843,866.393059832382,957.878364581683,982.251125495321,908.353152302231,500.128032561819,902.719893395519,918.993018080552,841.053868328888,499.468387264868,589.41031456775,499.910076344345,638.951766751206,589.10299822508,685.200070473983,499.777551165485,775.701574792354,985.145316619137,845.696886621393,717.466119626647,809.610989341945,873.588492940247,747.904811755351,937.54136234076,920.17929399256,961.340865969717,761.377856339904,802.388769514576,500.157177248242,864.334525197381,681.518243429041,1,1,1,626.39313150076,500.09371102022,590.332964382757,630.082191870622,610.302291439558,663.54317646252,700.209503998871,909.896225166818,987.845536412878,1,885.520937851049,772.376394003463,809.979826220014,841.458268084503,716.980958987945,825.346725204556,668.094745701217,801.399586826008,742.498322728434,499.804616485756,736.999969203641,661.439983060242,628.280704306194,725.504120189169,641.404514972306,855.937571425051,724.781684241884,499.857689476862,578.933998853832,577.144417451375,593.977159594814,500.063407038896,621.159655428105,596.535873154867,499.66169288231,581.667460181305,702.820165909644,763.228790943272,780.336333460475,802.982595410492,675.968940223477,582.742479190942,774.57684473089,945.403524852506,963.244188592496,989.117283343522,927.234275739397,986.009054281135,999.129901179014,903.732471047162,993.099938816708,996.451080847269,997.012177533469,966.340672120978,988.554715382762,998.408446075431,980.427999119275,935.870902239011,864.066319163106,871.3536468877,991.237890649769,983.222275606012,959.48212716948,915.266662625366,927.2253066764,903.55870543713,949.123907214353,945.162563832925,591.567708628381,995.712233578177,979.146672236023,842.766306981967,911.816613211054,964.810845261138,802.568990995055,840.723905820895,772.517727964876,709.599646372077,499.873351038256,616.456717976156,1,1,1,1,1,1],"Archive801_field6":[999.635224603964,0.103616813294233,0.103616813294233,910.790396822217,347.693189001945,394.888063170595,0.103616813294233,305.700772248266,952.387026754674,0.103616813294233,674.807065437152,629.969263992925,0.103616813294233,0.103616813294233,0.103616813294233,165.432531855502,0.103616813294233,0.103616813294233,152.431886364452,234.587417946329,159.177555719025,129.01256555256,218.763747037155,161.172632906229,0.103616813294233,0.103616813294233,95.6509928350678,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,178.394565921328,91.4124956355629,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,99.2185094420119,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,107.900994147756,0.103616813294233,0.103616813294233,0.103616813294233,97.9930329006505,207.144280333276,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,230.007631606916,607.943584153977,161.552309586514,284.313410576046,226.902873938846,223.61095781445,270.695759565378,307.288087497707,370.032808490543,336.378995726225,456.691403917577,254.863094179232,380.814714841166,424.861890563201,295.602755780709,356.215628011142,494.011837255037,423.439739765544,471.039423811734,440.843801297794,512.119154132733,406.625953303581,580.386478869772,524.553087056797,574.478605564281,297.714432735297,194.85586440855,365.37450147517,532.20625841403,930.201859137625,538.075204952261,297.857678772044,406.214468626033,242.45736179202,346.789099216653,407.949929733251,204.743142778874,159.178403941466,95.2847772817586,135.607381372349,665.842318046517,528.152880470787,108.65156203121,115.862741672305,275.412369912419,224.127977524551,285.143892829586,170.332304610143,116.434420461427,94.0936321484911,213.865090337138,255.591925206609,262.996954459667,278.692143873727,342.844326125322,377.147726459216,0.103616813294233,103.50389318587,0.103616813294233,341.757774233564,422.496829428341,191.733786467942,256.383342760538,238.293772660031,357.081028152294,154.69432936026,408.874975071996,524.173631521822,461.708484896185,477.768257255946,493.676981895955,632.988254679605,503.04591031718,566.069937732698,478.38703649842,651.078951723418,568.843486079562,623.212479949332,750.534234460682,684.5260081323,975.509803234482,734.112810498868,693.460317313414,648.425779295359,0.103616813294233,0.103616813294233,0.103616813294233,113.239057409086,0.103616813294233,203.935340057294,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,421.461687998885,483.803324120742,718.868739362023,332.169906445066,243.636763177365,587.950270671791,701.194303842021,758.578133893505,661.32009638709,963.715774431346,814.126211322921,578.811083239485,840.145956656802,275.476547185312,333.592851222198,258.40948587309,199.437939720499,183.681854137193,290.590021440151,543.080172043463,599.222756082525,531.337240462831,717.887560031595,581.563222805273,662.136268222055,719.782273536186,659.762048234953,745.280815860561,611.83210334108,697.598707048623,494.982816671305,550.70280945375,564.378225580242,318.777404860176,352.356933803957,546.116088074551,463.473531453323,414.103340012316,401.454413197517,470.351231517392,478.026198373911,525.407698687296,669.716040182489,920.282590789892,407.180716227391,431.902220210279,426.570896135683,375.813957273198,434.813759356379,431.264299925154,794.992502585876,737.154217868794,759.254195821067,824.926188570067,707.472536585672,0.103616813294233,0.103616813294233,0.103616813294233,596.321462411217,683.558398214746,725.510376119111,831.384016540676,661.236649064527,771.677134602641,641.559906292749,394.950145516453,173.669606733476,0.103616813294233,744.376588986919,811.016214440308,729.834954793213,793.86564118086,987.026169154123,895.50689242444,732.083824159398,644.139373192525,754.133074497723,848.539953729158,685.874045976786,822.230216853977,641.361924683446,608.995622129469,552.419599939371,620.748445488192,896.519380358299,772.960695341965,731.522755540246,807.21239027345,871.071461148928,924.431075660597,992.80305316771,934.017569979669,621.500035990815,511.839503296871,503.389689331439,546.256550266728,865.488827528771,981.487910659758,942.876059850007,595.567726033878,932.3649919672,841.130428485415,897.073015434867,957.713018925145,969.534801154842,900.031248555433,839.614635966199,899.149214424032,785.982364183581,806.967128074348,902.192190260667,941.566722951868,945.945661130562,872.088650440781,861.824389451176,916.727183543514,924.425667601533,864.958959983519,894.947755120083,804.341435763088,773.410498023386,786.117852321086,935.911462590378,875.984339558079,874.843544202604,820.169849121919,199.0392483229,715.734542172067,687.743038436014,494.593623816177,323.386017317824,339.4596593785,925.050357075211,879.12739163632,862.808079570622,832.611699247336,834.602700989381,915.23329422249,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive801_field7":[-666644.966366031,332090.142801773,330857.598470892,-666685.301587097,-166835.475364578,-166686.843251043,331306.465398368,-166719.142316886,-666569.577236473,82489.2208626064,-416822.216123067,-416701.364518484,82594.7295637252,331402.991792807,82966.4036107034,-42114.1039765465,207678.637729152,82764.3796937088,-41664.5832843928,-104474.027570724,-41836.393410878,20362.4022825338,20713.7967439153,50998.4205422968,207545.64914438,125907.74788664,20184.5900250795,83474.7328288509,145137.007966932,117072.843556094,145109.227965446,69707.5386096528,43869.1312128392,-47723.7612609,12713.2107691483,207387.264118177,149178.181430804,122879.476878741,211542.48483785,152800.583212503,91686.3171506456,331153.512854481,34140.0128175506,226635.621150247,75183.4601325864,88542.2602950989,202721.600085015,331182.964212269,274263.959923129,260827.662793857,167920.712010786,331544.466132505,15519.7349598934,176598.488590664,276713.548497589,61548.8234225017,35257.0409968495,-49372.1055608135,57669.2041571695,147468.666786605,197136.509373804,256212.205064131,171776.741890916,122600.550356024,144632.131359681,237184.176633283,331484.90606003,96678.3022149958,331999.844604629,136589.32443991,137664.276365416,331598.023583099,230404.669144338,189532.842159353,182006.100294564,212873.506537403,207720.694839196,259020.001494026,183835.173022479,105994.689247359,154371.49373653,83218.6371752959,171384.756570791,176559.118082931,331990.155954121,256367.640275031,331554.163776591,279877.212100424,284469.913100044,331686.990733554,274436.567019827,288558.189749898,240445.712838322,-104181.974879549,-416683.257971444,-35622.0354589663,-138538.194005332,-90935.1800679275,-89603.1346077861,-131467.001382696,-164585.863834859,-211243.241430171,-174193.239741553,-291642.919419783,-108245.187738425,-229138.870642719,-260682.943177896,-143590.81944003,-195821.70418753,-309332.828402789,-252340.686770023,-294822.29681809,-260467.695986526,-333342.075236608,-235189.983448415,-384300.873999826,-337412.805818055,-374695.612384228,-134987.89313014,-54638.4610382976,-211342.464949938,-354183.423336297,-666605.398674703,-339319.503931704,-138093.843302016,-226002.361920074,-90901.7794233665,-176583.955902766,-220899.414552962,-63545.627702136,-28406.8028522357,10930.2377625697,-7137.31398508743,-451611.359794779,-334614.506215165,2038.95546967123,118.149217367482,-98254.726108976,-58484.6213411517,-111330.599038511,-6940.28078664095,9452.52545719688,60193.1643021983,-46550.0412162749,-76123.6581625261,-97612.2131657304,-115145.201510558,-168075.174819315,-183941.91169551,93195.9751423676,33143.1752072571,105548.886060901,-157996.225418113,-224831.115158532,-21806.7415113571,-67129.2491913568,-57471.8944325971,-154391.859116565,5579.50633743944,-217625.521047936,-314085.611342687,-262821.775488925,-281183.760193853,-284783.440304739,-397819.080235838,-284546.271568631,-344695.955462543,-268200.923426336,-420694.237455304,-341779.326672633,-393923.415078124,-497558.147106009,-442711.375720125,-666595.965058439,-476688.773762169,-446198.808991102,-404392.903893982,60940.480539924,65019.8098378098,115248.555327858,47951.693956324,126436.291302942,-18675.3909761836,208098.649531955,118199.62745012,219522.430440681,180282.464829048,168463.124626446,235531.294969608,145637.508050225,206521.781422131,270785.848130144,267981.480639799,332052.784633218,289658.430843647,268312.858933141,-235069.053037322,-291044.412485138,-458269.939824824,-123375.776833157,-41667.5499902571,-374453.237067738,-446827.131023475,-493515.011339774,-411488.848285139,-666578.386838031,-533370.202731614,-344562.388296033,-564468.424966648,-78035.1691715048,-130574.075258899,-58537.1457472348,53959.0386443778,15736.5062043235,20835.8251927765,-339917.98909769,-388049.237258938,-326763.357295961,-483897.973975893,-364864.710888313,-439946.044038247,-491622.3333998,-433569.699504261,-500455.949542621,-367534.269919205,-416669.205349415,-270669.680702723,-318091.257688374,-323306.837805177,-104153.639026068,-135501.711969427,-291660.635460797,-229304.433516859,-186671.912005838,-180096.783923629,-229133.336520529,-248042.549153511,-318389.795635638,-451575.477330807,-666589.968021156,-191810.313720182,-216443.758520062,-204104.026702749,-176247.268919224,-222925.181059584,-224448.928428389,-559936.088058165,-510061.89074635,-541662.355764474,-578229.129462811,-491721.684259352,331137.898128656,282687.175918732,242625.652765558,-402272.705357942,-479158.052752825,-510538.668437759,-596574.66754522,-456586.758578326,-545365.692309613,-436421.276458491,-220312.271231744,-32054.5530868808,332407.967891144,-475032.259080264,-522791.002295992,-457844.859229577,-512802.553428113,-666622.490716954,-595750.456770477,-452347.910351663,-386604.143805548,-474142.23656464,-541654.005068447,-417530.065184411,-526470.780544468,-375664.915524816,-353390.746519634,-302735.331349455,-370790.993895552,-590701.625748515,-479166.332732625,-447978.192203176,-510478.514862549,-563873.762601487,-604169.334552205,-666621.414590482,-616276.38856875,-354177.642159207,-266625.767787867,-265230.666604139,-303714.358433286,-568018.676212287,-666589.745545809,-627164.189514085,-335998.171544445,-623665.066733707,-560107.942700185,-609329.915214252,-666596.427409779,-666605.680773877,-615975.286139106,-569357.948548782,-604704.274866927,-522884.419960596,-547383.624244057,-622009.605030904,-666556.853975912,-666642.005227099,-600282.294382175,-597228.239267641,-622759.145690278,-622992.132521268,-573177.389606628,-622432.287341962,-549041.275129039,-527276.065358106,-542411.061216095,-666606.193627072,-618081.856938456,-613108.43765548,-567230.133820346,-7665.33410226459,-472525.107307702,-453594.981615543,-265833.192059624,-130962.227914109,-149812.859883032,-666599.472157961,-625623.157783875,-615785.261498484,-593979.612486344,-604166.849013569,-666629.214478905,190567.079314468,270365.646994759,270834.514985881,233935.241475187,270412.136210467,331626.279854524],"Archive801_field8":[0,321.679858924889,671.964305272729,0,344.651229489467,0,855.084710611935,0,0,867.011251742942,128.422456117416,138.655615058242,1079.14595394574,821.568002852557,416.847780191333,325.848464785163,685.851487641968,559.120902426287,0,328.111741680619,-161.437499089398,324.381791601713,213.384259389694,357.228251504823,619.666239714972,538.82437543349,617.653693917265,475.975785048422,632.88164009153,726.616665281724,543.864389760004,665.392134074125,774.567680924698,921.2329390925,962.123570824133,872.926031959967,843.321791608617,1094.8980730989,773.454113905528,956.420551463898,1034.87698676197,892.84436464717,1606.07719191621,938.712494650455,1241.88368602293,1230.36792066927,933.874287687214,867.065104405424,852.023078127491,897.570808888442,720.605373598547,718.97745327256,1531.08984134103,974.092447600092,792.575702211508,1266.07468628076,1129.48340648416,582.42536513374,857.428303284846,1057.37401581294,973.608658918198,890.949923660304,1004.13845275676,1073.2300091771,929.245477894214,821.018673823643,768.666696978979,933.724291547829,541.484935202231,749.043055954876,842.662991486114,719.257794414667,813.695678118304,769.437921379887,849.226748471723,888.495117020322,587.428067706356,707.926047479887,678.744299842031,552.749025030323,601.040175945066,-12.7349597729932,415.492629281305,511.607623719833,384.63808758321,482.783760676957,796.928984907805,834.659387546734,770.756906077286,631.994811371465,586.005514881738,652.080979249433,643.034437467587,0,0,641.622901075559,327.062456235708,486.865696860966,383.487548107453,302.174935386249,257.753420113864,205.087131139703,316.202624317494,0,472.659462249349,0,173.389216190225,353.683600056782,254.280132309055,167.026732733055,196.783212515483,152.649813451344,216.176954316601,131.489135832229,224.881782528189,122.520292569839,142.148170858348,143.546820793936,424.294542788484,530.425049648332,212.951794914479,0,0,172.124658729248,409.561805530534,266.309718684308,598.77909144976,336.631022948454,280.467901735202,846.257462826003,1386.75270086827,1237.71743481542,2596.4096624926,115.969277789637,164.863274390018,860.70990482085,803.91965080233,471.338581139164,518.577082334831,466.5782773981,979.990711987453,829.492891631553,778.798770906518,722.282911206755,464.386421199236,567.503258616847,516.316365013675,359.088252422597,308.85383018974,805.390367059787,616.743594900512,678.545870674201,359.67998269418,270.912528276489,654.935553711299,382.356310567176,450.013713742572,277.668016525349,380.156169467599,282.588612159995,203.274453749685,239.845256381108,222.529622459307,219.56984163458,161.345130682581,206.909071859513,185.698461907121,225.63115056956,155.04166578624,180.897590195978,164.634684285339,132.536120759213,147.482373726817,0,132.117228086011,143.76104774431,151.539208485373,453.627303515307,132.811694797625,420.348227086784,280.20841966696,281.084355615026,84.8312644500145,252.370431022505,132.129174601332,318.109123635716,330.619450609408,243.094569234919,396.102315868573,149.854084045134,267.570219495327,305.18858765786,321.829841798706,455.432832488452,412.337974057788,358.834159808626,261.486757381137,207.534489657731,128.257630663826,223.491940336133,0,168.361229624938,137.039512289976,124.102308814364,143.08926248595,0,106.697488819504,169.684455785142,114.393996969832,260.194092573475,267.670918735824,259.896937037153,-74.8438979586721,-60.1039563324036,-261.155797592109,180.25483962786,155.989119436063,192.222204181546,129.547081230918,176.032143795716,138.509065227728,117.877801342377,146.32083392824,130.939053045194,150.453277932028,0,193.593273105293,173.257600619944,151.06663494474,0,188.480573924759,0,155.446411531758,162.049445212812,176.866565895561,0,167.323414161045,200.01542356715,124.402845337205,0,216.334332544399,219.517990474868,181.315039260264,293.06439540496,234.414975484324,249.684177603824,92.3357766152451,105.196175856985,0,100.18480874109,91.9627715241728,888.821229747074,907.437723532557,923.308974798128,119.238989720501,0,84.666027712903,93.3762643326177,101.533876059288,84.947107532614,105.195797023554,261.56238617146,1150.66695574166,338.171130191919,116.402557932098,90.7144803101549,107.438203785796,101.869810256877,0,90.7834304059646,84.7887564986905,122.231758628764,93.8616966606492,0,102.619062012065,75.4083050871529,107.60920454326,115.165115946509,113.27453516944,138.095280547562,75.0023134059629,0,81.1425166553339,74.3735221822024,72.0833013994821,0,0,70.6544825176801,0,116.550371146337,140.456894509822,140.420356811747,85.5744113650219,0,68.9002644411856,106.383491696961,81.8893899010389,108.413847331683,104.364963070534,0,0,112.963636111317,116.366052159972,106.054600059824,124.660585394791,121.416583932417,113.736748937529,0,0,115.525433281259,116.104037482146,105.543779992721,95.6559236246053,98.0367179341105,120.428626741123,121.104526632601,122.466171563492,113.526069001371,0,103.561683643688,112.52714691167,113.71429224976,-550.433794682173,139.235021841615,143.064482916241,177.519263696748,352.614527539469,350.476923225283,0,95.1367323545907,91.0774933759784,82.8469508544913,0,0,622.406208902389,678.818987405579,659.002339545788,646.501215519551,721.001228475486,684.92627099967],"Archive801_field9":[0,116.497554650364,29.3806753444982,0,25.5945845998649,0,79.7515727256096,0,0,39.5073437495989,10.000923606722,9.62546985160954,82.7947867129169,45.5414942328154,5.94095219559469,44.6190835787979,30.3415838084915,19.3625081463414,0,26.0282621159599,-100.977970292187,-3.68333112360501,-10.8511736593276,0.137132333853848,24.4554458123794,16.9612790545392,35.0054701955629,11.2247441954726,25.3866401793293,32.8438329889503,17.4794386747438,30.0401021659891,34.9704251008307,17.5972197873221,43.0127887774075,46.9029517775665,41.1307093609683,54.0556910496197,38.1181931780069,48.700542295238,46.1549601543151,61.4599830481711,30.8742286487669,61.8296882854651,48.0445087137508,61.987836429542,53.9711671661791,53.0477226650301,48.7464403472418,55.7534558885135,32.8646239872201,33.9569526371754,76.8431161637245,75.2182139100562,41.287438677922,73.4759129358354,83.8405654584548,30.009191073892,104.362582378772,64.7939478689604,67.4982767822643,76.6646749898138,58.437922114779,73.9710670475915,87.7925734635046,43.325270843177,39.1175460569277,94.1494411136792,107.196943215469,108.146917200817,98.9459642368926,96.1898435974106,91.0738510537105,99.0054084240444,92.0619014772393,83.0289266782867,107.596774812997,98.6916104320474,105.652492885524,113.990343686532,111.120872413618,137.093391716051,111.900111068296,110.375713332983,113.746550649574,109.989644700733,88.5441507951641,84.8667706079851,92.3068094277651,102.520750438886,105.594019846468,101.727477379663,103.763421107568,0,0,59.3512503803602,15.9282890130022,5.37913562497253,-4.54250312938174,16.638614678329,2.43193246878637,14.5390262377262,19.449247361196,0,52.0897825542576,0,5.78169373819723,23.2086419560615,17.1882105605949,11.5195762925646,12.8926463865526,10.4049666394127,14.5883140555968,6.06715425386771,14.6515142263306,8.26849141942267,9.51986713195048,9.71179976769908,30.2327614252736,-7.708476812668,14.176141874713,0,0,12.1505063227117,29.5902263590349,18.1977116344734,-23.5123169667078,23.3959680003916,20.523860220149,94.9955418634855,171.122828200575,72.4693307029079,-66.1864412282453,8.04705840295063,11.3454641165506,33.8119951643343,75.4688842375824,22.7729679938269,21.8023203824988,43.5334103106725,218.510091851575,123.893096875535,134.388641858195,109.850458168719,22.4663939985302,74.6156516938935,42.0328027552995,23.8052521362638,23.3953801602798,112.339237142605,133.61054353504,118.246628249272,27.8777707941951,20.1199467207788,159.85323725308,40.5523065349916,-1.75384944022606,28.706241683998,77.5247099811981,21.3148512106164,15.114682922577,17.4508824661838,16.0027632356284,16.3139179279259,11.954362678254,15.6124151067268,13.658382895085,16.9686797427593,11.4287412835003,13.5706609339625,12.0748013411843,9.71033935033893,10.8576518161406,0,9.95434775141711,10.7656962740864,11.4488606893079,107.06879871858,113.313259869557,109.869957328763,95.1095867137901,113.810385191274,43.0851200044039,119.839390052713,125.115966235312,116.269985594764,114.78983594658,119.410996518492,113.027289765849,125.597662167127,118.851330522493,117.253917167291,116.42397768387,110.841654622611,112.589425615918,114.754901518763,18.6042548851686,14.4107628859185,9.90483470907623,19.6716150248147,0,12.15263403058,10.3608887000255,9.3087837186486,10.8710555351735,0,7.81859085096997,12.9278263950539,8.11408744610438,19.8290382033446,26.8129384815216,3.68516920758472,140.72127735805,115.126398070921,158.050998407483,12.7633152766497,11.0838760393854,13.5797336260802,9.28939816651116,12.6223177794496,9.81212846488445,8.34527265675758,10.4231434883281,9.52741863752874,11.657446776392,0,15.2342380453606,13.1413299296024,11.9368347714396,0,25.631722013422,0,13.9339222818056,15.1367752272468,14.9962750462701,0,13.4958620850073,14.3841250478744,8.82238658719461,0,17.6881507267627,17.3632507178145,15.3384346803655,22.9914938204216,18.4947719381706,19.3444329229056,6.33916366513887,7.21756629000134,0,7.2067722055519,6.70309713018391,70.4738112139194,65.7164330948575,69.4613901656891,5.37223600326572,0,4.82581873213619,7.05023445790533,3.69898756661287,3.69853954302761,7.82288820653021,18.3685507515331,218.50348562941,115.741192133436,8.74940325572463,6.80667682657797,8.44432080889158,7.39032058740612,0,7.84819139413934,6.61685468477855,9.61537147386034,7.51796674647917,0,7.26971555030416,6.14865058992738,9.21238236657204,10.4156497120265,9.795665544174,10.5191462746562,5.92995423957166,0,8.62415398381775,6.15316831631001,5.73765527931379,0,0,7.96540869598336,0,12.6242529956582,9.9828267404693,11.0802391996269,6.10236980172093,0,7.62372074262891,8.32204323060536,9.93057194103346,8.97409861862291,9.60063896349698,0,0,9.74595358779338,8.48619617945625,9.58376275916434,9.23820096737581,8.61890791959995,9.81146247041099,0,0,8.63244063952535,9.71410832678008,8.68802057427139,10.9448621547397,7.02551467870195,8.52646377648776,8.96758249440669,8.99594869746203,8.68556803374837,0,6.1151441969696,7.10709010580179,8.88867498023324,222.041824375791,10.2117865979511,10.3213667782561,13.7873270322782,32.453098778602,27.0780725044303,0,5.86336530041766,5.84329756827506,5.94342410952892,0,0,24.6367132908156,29.9980207909703,28.1413730636212,26.9485504462798,34.0095777986925,30.6199776253753],"Archive801_field10":[0,0,0,0,345.600278861926,0,0,0,0,0,128.811279429316,138.989313463459,0,0,0,328.889167687626,0,0,0,329.142500229712,190.416954593253,2772.74131331954,0,3178.42920986806,0,0,5605.97381965504,0,0,0,0,0,0,921.400993169233,9569.11178172039,0,0,0,0,0,0,0,14276.0418987724,0,0,0,0,0,0,0,0,0,12088.4240097825,0,0,0,10221.7394904946,583.197957386752,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,644.362101699292,327.450088822429,486.895411644006,383.514450690122,302.63267350717,257.76489263654,205.601835213247,316.800209671943,0,475.52109595726,0,173.485585203909,354.444255152444,254.860393685221,167.423505176064,197.205104038315,153.00401588683,216.668628288884,131.629036320435,225.358565362358,122.798982250473,142.466593798631,143.874976332836,425.370284462239,530.481058954236,213.423124229195,0,0,172.552985910294,410.629338997362,266.930745652213,599.240543860763,337.443057314857,281.217838591515,851.572572575375,1397.27093854299,8740.36723450647,2597.25312214412,116.248133490351,165.253196031479,4948.16824219724,6766.62671027676,471.888404330439,519.035192927192,468.60478737744,1004.05600233386,6021.32001025304,14508.0286140156,730.58861678867,464.929550634859,572.387494638418,518.024463986403,359.876455269285,309.738651504324,0,8606.50653885978,0,360.758728314838,271.658628122146,674.161432429515,384.500764363155,450.017131389729,279.147945922483,2252.24828476048,283.391331209412,203.835613147171,240.479272095056,223.104283470885,220.175065058679,161.787385113989,207.497256664347,186.200081036446,226.268319036395,155.462324236766,181.405901163376,165.076891469286,132.891361631219,147.881503789545,0,132.491701612921,144.163584392202,151.971076588463,0,0,0,5660.69033690868,0,95.1455253492364,0,0,0,0,0,0,0,0,0,0,0,0,0,262.147749533605,208.034214696643,128.639517933303,224.356011358943,0,168.799259935292,137.430622291135,124.450940162685,143.501626775525,0,106.983571090533,170.176212293024,114.681406329959,260.948570730334,269.010509844679,259.923062373046,4330.92991032327,1902.00505803032,0,180.706141085788,156.382408507143,192.701284234867,129.879710400609,176.484102840571,138.856181048128,118.172837932533,146.691609717918,131.285213631494,150.904224280954,0,194.191754203012,173.755260999196,151.53750762728,0,190.215435547119,0,156.069667290784,162.754860628063,177.501184212816,0,167.866802018524,200.531974303699,124.715285482921,0,217.056246428347,220.203611726997,181.962663863758,293.964876545089,235.143439883746,250.432417292185,92.5531233352708,105.443485707199,0,100.443683067236,92.2067397620363,0,0,0,119.359949686822,0,84.8034478964004,93.642044758892,101.60123275158,85.0275853644499,105.486270629465,262.206570315123,1171.22936108517,0,116.730919427831,90.969488221947,107.769542017407,102.137530223502,0,91.1220354493558,85.0465519260699,122.609372341843,94.1622956602954,0,102.876239493959,75.6585644867397,108.002818904421,115.635157672295,113.697297159194,138.495339083514,75.2363700182943,0,81.5995345642225,74.6276241221399,72.311292539636,0,0,71.1020649175199,0,117.232080839876,140.811207100406,140.856836212728,85.7917175353597,0,69.3207584928706,106.708498767293,82.4893231723986,108.784634665353,104.805619053662,0,0,113.383273434954,116.675077119724,106.486744257082,125.002423608847,121.722111498052,114.159155807525,0,0,115.847506517049,116.509705262008,105.900761076826,96.2800380767611,98.2881270540496,120.730090380503,121.436089803239,122.796132961857,113.857838706753,0,103.742071059263,112.751361507756,114.061162561006,593.531746497478,139.608996460676,143.436316476207,178.053866484641,354.104798968069,351.521401516346,0,95.3172434334689,91.2647463488658,83.0598673008345,0,0,0,0,0,0,0,0],"Archive801_field11":[4494603.5644356,8995.77,8995.77,4501741.62596861,8973919.26894533,4497405.65317184,8995.77,4501462.99505869,8970637.49264251,8995.77,7869013.56010622,7868845.85998189,8995.77,8995.77,8995.77,6467413.2567232,8995.77,8995.77,4483433.46477758,5545908.61422622,5547909.89554067,6406111.02012675,5760510.68470422,6348642.64978605,8995.77,8995.77,7075230.13274322,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,7720507.59778434,7936219.61262631,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8613919.52046113,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8817902.79603051,8995.77,8995.77,8995.77,8507526.50608441,8975261.6125882,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,4500915.96891442,4498885.58454388,7161643.910727,6963548.32079311,7321847.40972471,6732761.44492785,6253039.52968729,5510287.06365267,6495590.6023877,7995524.60109873,4498997.87442461,7954184.84993416,4496799.68877467,5659958.6201943,7574161.75341765,7227883.24740154,7206021.56436887,7032915.32679112,6434947.70818694,7923114.7371609,5518443.81892129,7530705.65063065,6594810.1434722,6735621.14959201,7371085.82886359,8715079.63816416,8296136.62865762,5779687.35618009,4497941.07941521,7848185.00183488,8057999.62402859,8388310.82159195,8526231.02129556,8559311.09873269,8586715.95312405,8894681.07471959,8776993.54325533,8568873.66786843,8272402.07140819,8753199.73330717,7128590.76286876,7631776.76220045,7690701.56667617,8615439.52026859,8712292.97488216,8888046.75164468,8969840.13137642,8555998.60985973,8531458.84093315,8168989.6297896,8707638.37630149,8255776.96490008,8979143.02281965,8884611.03547118,8874315.54442942,8839917.66834091,8995.77,7910389.13717664,8995.77,8937134.44423334,8964680.81564534,8190591.86856407,7360516.47764662,7864324.58564719,7786888.64000228,7389309.7133598,8981596.66611802,8964399.39514306,8957506.74412439,8763137.37185607,8983899.46336329,8961822.86689178,8714464.55454632,8988356.45156168,8899414.92468669,8912190.56793149,8866491.75860688,8987347.40456896,8992169.51346403,8991566.88835919,7852581.99712946,8795722.61213594,8924337.23488284,8717336.34220713,8995.77,8995.77,8995.77,7045922.63768912,8995.77,6677477.85765525,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8749484.8541666,8409283.79621628,8396480.00653714,6143677.57781265,4497525.86151766,8616342.41974067,8647518.44224015,8589390.04397485,8466049.36002067,8690634.77638648,8054862.73401529,8548876.08884988,8825593.76978225,6674369.98041544,7146229.090762,5686948.0896126,6176099.94319477,6253277.60892156,5600277.63124325,8414874.1982752,8243895.08064344,8680449.79158841,8436604.73586531,8858301.15528439,8248146.85623976,7793872.69584835,8616853.45575297,8836105.20719704,8171336.03688584,4499036.75147864,8120660.5354106,8267049.82225848,7565927.15709696,4493102.73410568,5302199.62547913,4497076.06747617,5747863.1347875,5299435.07834323,6163902.23796774,4495883.90144794,6978032.95546981,8862140.68488294,7607694.68176213,6454160.1949538,7283074.24959259,7858601.15713709,6727979.66844443,8433906.46110413,8277721.28751945,8648001.3218644,6849180.07872682,7218104.82113613,4499298.93037442,7775354.59173484,6130781.36869167,8995.77,8995.77,8995.77,5634888.54056059,4498728.00278436,5310499.57100548,5668074.47916398,5490139.04426323,5969081.80052624,6298923.64978793,8185217.1654689,8886431.24109687,8995.77,7965942.68709233,6948120.39388453,7286392.22131522,7569565.04428653,6449795.80143499,7424629.31019339,6010026.67053664,7209206.3611818,6679344.13665077,4496127.37484407,6629882.21296304,5950161.95641384,5651868.71137653,6526468.19927412,5769927.49365242,7699817.52689833,6519969.33165261,4496604.80726527,5207957.09886934,5191858.43617656,5343281.91296824,4498455.39513829,5587809.39351048,5366299.51165035,4494841.6669799,5232546.68827518,6322408.563885,6865830.66070376,7019726.17845374,7223446.74231584,6080861.11339415,5242217.3120315,6967915.1425248,8504632.66676243,8665123.17441472,8897871.58398316,8341186.2806682,8869910.67023061,8987942.79112914,8129769.45107193,8933698.63660917,8963844.73955344,8968892.23629025,8692978.42804573,8892810.85199879,8981452.74695198,8819704.7816372,8418879.38623463,7772941.87193789,7838496.99606297,8916948.07957047,8844841.45022829,8631280.53512739,8233528.38564539,8341105.59704036,8128206.29561017,8538100.37080166,8502465.03685131,5321607.04624793,8957198.23945556,8808178.25970065,7581331.86135917,8202492.53462561,8679216.45747478,7219726.05212358,7562958.89026643,6949391.80169459,6383395.21084454,4496745.69506942,5545502.84986837,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77],"Archive801_field12":[499.271703783071,1,1,500.854476313195,995.085477919724,500.19838907208,1,501.088534750464,994.481570407931,1,874.491895001571,874.454502682759,1,1,1,721.002067814989,1,1,498.863124417352,619.269414152469,618.085016573833,708.373617015045,637.374176994276,698.204911952543,1,1,785.431796596524,1,1,1,1,1,1,854.201239701662,876.238321249362,1,1,1,1,1,1,1,952.495937817627,1,1,1,1,1,1,1,1,1,981.866134554822,1,1,1,939.618197624817,991.767746304118,927.037051104163,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,499.487391254937,500.219836016892,795.121577624137,773.160229088384,809.864297887131,746.577051798833,693.587596277696,611.748018410194,721.550762596998,887.381459527824,500.248586231219,880.431793948418,499.728518541697,629.048852399129,840.898048262201,802.412070603653,800.66497998555,781.336975885016,714.971276476759,880.170856436393,613.288716735171,836.466522875624,732.924314233428,748.52280755317,819.131386567538,965.557620664597,919.472421500153,641.796142154757,500.010109677437,869.925313901518,895.356745342627,930.513772734446,946.783610567166,947.663351629385,953.12835211747,987.575940883108,957.445560245308,936.268679721947,915.668951095547,960.288527618006,792.283188422548,848.008715614229,851.952513088745,955.671486638627,966.133198207452,985.500868489869,995.928301708078,948.773310889317,947.401193609787,913.75687389772,962.571175797892,912.406023154233,994.584862114358,985.452998828982,984.573252027917,981.439267242718,1,879.383310356257,1,991.367205729017,995.672611104169,906.155286643688,818.504746728355,872.65750991855,864.158515830647,821.23481574491,997.547922373845,995.958252005663,994.903495519655,973.475353004775,997.910363136216,995.844309603022,968.137262491552,998.706360807675,988.480571492276,990.389063807347,985.165300096897,998.643189283988,999.260870419528,999.247430591224,870.874615952066,977.516630594596,991.793541377964,968.694467868411,1,1,1,784.055974248034,1,743.709883866328,1,1,1,1,1,1,1,1,1,1,1,1,1,971.601470378977,934.188839951405,933.144373875001,681.637818810046,504.354685901979,957.435096515759,961.03033667729,954.484253145069,940.796252298902,963.474629867998,895.265766632052,949.892752233185,981.034668216817,742.072194289616,793.172767607456,635.402179380433,678.562735939042,698.570970921205,619.932228324894,934.987934197265,916.092248606787,964.440179974331,937.643818665469,984.29191781882,916.643211460566,866.160773076328,957.571905261341,982.018044035289,908.011343777152,500.253533960844,902.1618857101,918.541320771503,840.706549354656,497.451329960401,588.726244907622,499.821328473384,638.592731452591,588.408038190171,685.070076690629,499.525965033089,775.277493547023,984.570846042365,845.523518964302,716.197827339321,808.995281070532,872.942027629915,747.390651046134,936.319810412376,919.28589709022,960.360083317802,761.378872440315,802.189387004923,500.309209613413,864.49115248011,681.404438493754,1,1,1,626.31173077317,500.187083843378,590.308030586046,629.705864646903,610.261050372588,663.682699010632,700.026744059442,908.94107773653,975.163978421417,1,885.310051137954,772.197842685417,809.808009784957,841.277171423454,715.245702200503,825.07509837391,667.932469775823,801.151550667148,742.384206358036,499.611905241588,736.799438061862,661.348206342148,628.107371858182,725.327106003929,641.306741169878,855.638150857779,724.836480270958,499.71442945037,578.862184769551,577.044370241003,593.967548054787,500.121498551131,619.856705030698,596.159076367133,499.326587906275,581.642807789184,702.358513270356,762.92009956254,780.394323663988,801.305237917354,675.464834708311,582.368530647332,773.841863455222,945.56860518049,962.608150531332,986.121673895988,924.828780773584,985.087255048813,999.311705054876,903.16954282811,992.786377962459,996.477507050963,995.644025388362,963.979633408168,985.039626449,997.911021861908,980.07177506048,934.723581611667,863.002492137053,871.575712738128,990.112000220116,983.020301121678,959.204345147273,915.149785136911,924.814131365578,902.820738521011,947.856468908875,945.48566025579,597.413309459716,995.413282939781,978.857182401252,842.249187186052,910.532766563597,963.015119774107,800.493420036183,839.664298515075,772.006417241026,709.266909261478,499.74745658533,615.731090788282,1,1,1,1,1,1],"Archive801_field13":[999.271703783071,0.103616813294233,0.103616813294233,911.216157642618,345.207667558043,395.139738045687,0.103616813294233,306.391565053495,949.662411072643,0.103616813294233,674.552989820731,629.696438166629,0.103616813294233,0.103616813294233,0.103616813294233,167.495225195243,0.103616813294233,0.103616813294233,152.901491963784,237.355007994112,160.538279037176,125.261370558544,215.780213162409,153.641109869209,0.103616813294233,0.103616813294233,94.5764500361621,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,174.358256443282,90.793022534147,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,98.6945937523642,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,109.53944435421,0.103616813294233,0.103616813294233,0.103616813294233,97.3602433511541,201.191807846984,96.0566250410961,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,229.158090179668,608.052191833119,160.561502086643,283.382225500539,222.846027807766,221.751639527359,269.174484708385,306.494092978193,369.511908251819,334.951092509257,456.816279290848,251.08099093662,380.663880223026,424.730737226935,294.531550336151,355.151926401683,493.631263122499,422.974232173201,470.680305204254,440.254618609032,511.959125633056,405.953948779032,580.209552912288,524.321630151004,574.215340104967,294.474536548733,192.101880758547,364.681189566508,532.210134115365,927.696574898586,537.677654217,295.898653559016,405.193608725906,238.638950466961,345.389272743069,406.763254995952,186.508628583046,142.902313413793,94.8786987449932,122.860834360038,665.687420249791,527.78766453714,105.679864443586,113.813041545532,273.057826116445,221.603724024342,283.954645803491,167.992079931106,115.450001618567,94.6805753989818,208.465944939459,250.258058957259,259.430127188941,276.501946459233,340.918863265085,375.912062224038,0.103616813294233,103.541784842378,0.103616813294233,339.64310523331,421.625418659414,187.395377901096,256.668362034033,236.726554106511,355.622855250094,154.508664883934,407.998452832649,523.619145302402,460.865452422751,477.103834359817,492.906913744656,632.606241589653,502.454030717913,565.600413478651,477.578761712202,650.758985849983,568.379789591744,622.791953223577,750.195347053584,684.2406707271,973.465036284422,733.86738046542,693.194564725121,648.071867513431,0.103616813294233,0.103616813294233,0.103616813294233,114.046611823229,0.103616813294233,205.354363035088,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,420.441042186964,483.187939840506,718.632201259823,330.85589591614,248.031372118988,587.563811084997,700.937453070082,758.236947529243,661.001873769375,961.110260366532,813.986389104293,578.382063256409,840.09798605757,275.603362656279,332.366796854214,261.631419469938,191.444667313977,187.117488236585,287.976583163603,542.642434144265,598.895945437748,530.829473614554,717.690067073344,581.136639007845,661.887778778778,719.549986780132,659.455588914611,745.047734400529,611.490294816002,697.724208447648,494.424808985887,550.251112144701,564.030906606009,316.760347555709,351.672864143829,546.027340203589,463.114496154708,413.408379977407,401.324419414163,470.099645384996,477.60211712858,524.833228110524,669.542672525398,919.014298502566,406.565007955978,431.255754899947,426.056735426466,374.592405344815,433.920362454038,430.283517273239,794.993518686287,736.954835359142,759.406228186238,825.082815852796,707.358731650385,0.103616813294233,0.103616813294233,0.103616813294233,596.240061683628,683.651771037904,725.4854423224,831.007689316957,661.195407997558,771.816657150753,641.377146353319,393.994998086166,160.988048742016,0.103616813294233,744.165702273824,810.837663122261,729.663138358155,793.684544519812,985.290912366681,895.235265593794,731.921548234003,643.891337033665,754.018958127325,848.34724248499,685.673514835007,822.138440135883,641.188592235434,608.818607944229,552.321826136943,620.44902492092,896.574176387373,772.817435315472,731.450941455964,807.112343063078,871.061849608902,924.489167172832,991.500102770304,933.640773191935,621.164931014779,511.814850904749,502.92803669215,545.947858885996,865.546817732284,979.810553166621,942.37195433484,595.193777490267,931.630010691532,841.295508813399,896.436977373703,954.717409477611,967.129306189029,899.109449323111,839.796439842061,898.586286204979,785.668803329333,806.993554278042,900.82403811556,939.205684239057,942.430572196801,871.591226227258,861.468165392381,915.579862916171,923.36184057548,865.181025833948,893.821864690431,804.139461278755,773.132716001179,786.000974832631,933.500287279557,875.24637264196,873.576105897126,820.492945544784,204.884849154235,715.43559153367,687.453548601243,494.076504020262,322.102170670367,337.66393389147,922.974786116339,878.0677843305,862.296768846773,832.278962136737,834.476806536454,914.507667034616,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive801_field14":[-666623.369650876,331275.902268645,328537.128473245,-666703.797407323,-166995.748748856,-166705.209173852,328969.386119477,-166782.364881018,-666475.009431941,81542.2672612548,-416977.623089834,-416736.519479335,81613.2662604618,329337.51372705,82676.7009642622,-42520.2464633819,207017.948189107,82274.5178154922,-41783.0729937374,-104893.015012037,-41595.8809691944,20205.7679022916,20783.4057687192,50521.5364152544,206841.971894626,125579.215458746,19512.8999341492,83041.557797335,144480.970395081,116408.003261897,144528.156801221,69032.6776839924,42952.035256145,-48630.7511276095,12072.5101348459,206322.307704993,148367.88651928,121866.835485542,210661.155511577,151702.116732815,90355.9998476842,328731.982240714,32178.0802994454,225517.115244838,73320.4983795008,87340.0082733711,201833.061037174,328807.7979581,273739.267667558,260464.351212862,167223.92975161,329726.752559356,13422.7385543023,175925.670699601,276248.894603678,60599.2222765016,33895.6381846822,-49404.7396118403,56770.8520824899,146036.934379643,196316.841815553,255813.204496299,170843.555073766,121181.237366923,143751.908311478,236479.548076376,329558.687670931,95632.9750855378,330579.762720927,135869.947991969,136814.449420092,329637.956099008,229523.826193927,188889.17192122,181125.687924375,211792.63742654,207104.611451739,258285.150894815,183432.398331797,105395.867337041,153711.438838618,83261.640236729,171162.579449071,176081.570851078,330788.872284931,256014.721557096,329539.186298379,279285.939047826,284082.610694712,329900.808574215,274117.593546265,288432.113467615,239428.775623025,-104145.036168059,-416699.679090993,-36212.4208080316,-138929.619572987,-91222.8257733431,-89794.7674924009,-131923.832034306,-164763.413363159,-211359.38079038,-174459.868852446,-291619.40946403,-108598.146151502,-229109.512524156,-260948.231601813,-143916.694171067,-196011.211653109,-309446.597009588,-252591.467207815,-294836.659170091,-260776.434110365,-333459.661808359,-235382.407587409,-384453.808414011,-337582.100455016,-374863.708779154,-135364.89029131,-55203.8616442204,-211508.783842023,-354199.895211413,-666545.732714178,-339450.165970134,-138143.619147275,-226325.715716337,-91289.8274948835,-177033.872907405,-221130.014832027,-63706.9649529268,-29233.9293501856,10037.0685004145,-9743.91916028498,-451674.254366755,-334772.507740919,1384.34468673201,-590.753384241924,-98754.1820542631,-58881.8493499,-111819.55521821,-7865.08370551118,8502.06798429083,59046.5705258801,-46948.0691536907,-76360.9321387969,-98167.0635618837,-115625.395015684,-168435.721354221,-184494.478221766,92572.5003789058,32759.863498832,104627.314192574,-158223.440644137,-225064.098913906,-22432.6024294016,-67524.541657074,-58059.6059343891,-154465.778844021,5122.52322925394,-217945.868533644,-314378.850801095,-263024.484167095,-281359.645629293,-284951.655684023,-397961.994585485,-284742.62621251,-344868.852466433,-268332.992558454,-420797.136836253,-341935.65795176,-393970.248458841,-497718.063028068,-442877.662677988,-666526.533884596,-476960.31806081,-446373.980959732,-404483.282811557,60531.6401746687,65079.5705249204,114802.245520383,47771.1981310611,126081.314316214,-18815.840485253,208226.765330409,118167.793150005,219207.831915042,180053.446500109,168227.49550581,234959.670931632,145716.814963537,206141.271884107,270863.959150412,267677.135673211,330833.603334662,289549.666800848,268285.464595747,-235188.140125182,-291136.040358524,-458454.497364558,-123533.500828611,-41576.1718140696,-374680.247512904,-446931.918403339,-493639.855152394,-411560.435837777,-666492.250980444,-533456.610380205,-344752.589122996,-564515.021047657,-78298.6508867906,-130796.242548267,-58914.2936258875,53936.1145434691,15859.1360280242,20567.0542307311,-340092.273140857,-388201.369204009,-326961.98300057,-484019.786171586,-365072.613997988,-440104.639211784,-491784.204710935,-433634.348459794,-500577.170230758,-367679.153685686,-416671.652133597,-270805.645666244,-318261.146176087,-323463.31824564,-104157.753642576,-135576.336745088,-291654.352827864,-229441.66568771,-186806.365637727,-180285.469902855,-229100.20025943,-248171.809117388,-318533.040629453,-451675.80730809,-666514.249743536,-192063.982160169,-216626.68487858,-204232.671291298,-176604.008266785,-223210.052554577,-224538.903630441,-560002.374660638,-510192.418502646,-541657.870894744,-578274.48770968,-491825.780200457,328665.289089718,282427.138186356,241056.20339142,-402349.446504007,-479149.524274058,-510660.205616037,-596632.044083949,-456683.737891127,-545437.568353871,-436520.730780067,-220552.064397436,-32859.4057668065,331591.270648856,-475134.164186333,-522882.246494013,-457921.274589581,-512940.978320764,-666579.155895693,-595802.178387017,-452423.253657112,-386700.462317497,-474236.543590941,-541641.524750508,-417624.948454598,-526538.258048154,-375775.890364661,-353480.557205185,-302916.575536438,-370893.848909718,-590750.821604336,-479165.905891319,-448039.63564644,-510540.354335002,-563957.574916347,-604171.673735034,-666576.880244224,-616318.995696799,-354188.656163354,-266803.111797118,-265288.229263839,-303894.822530586,-568101.913367627,-666514.125118219,-627203.15648261,-336012.454874268,-623732.47246533,-560217.105360891,-609447.120037258,-666527.932328707,-666545.912150725,-616075.90675997,-569465.643558894,-604780.479776786,-522923.622718497,-547479.331155973,-622082.44384002,-666449.416623622,-666618.326531336,-600415.835647221,-597389.406668142,-622810.085785473,-623078.451815794,-573251.528374582,-622460.493775939,-549163.349704779,-527364.210437978,-542542.052815607,-666547.063640049,-618127.023711029,-613207.49634361,-567355.288924779,-6860.46513788398,-472699.618170681,-453773.91271159,-265949.679502024,-131138.425620956,-150106.87284431,-666533.632974431,-625705.668723717,-615861.145382945,-594095.45227893,-604167.039182064,-666592.032669958,190028.860395684,269886.919818277,270828.414172359,232900.329064931,269958.605858663,329916.398392053],"Archive801_field15":[0,757.850004128575,1035.30630712683,0,343.44114182829,0,1712.52093541675,0,0,1220.77378201519,128.552992843134,138.830467266335,2550.60016542219,1356.15847798797,613.930068876884,323.443777880579,1048.06229184315,786.253596364546,0,317.493466488388,-109.444125168056,446.133536307216,324.54972420374,517.745762658855,940.596816296916,795.730488554082,752.021220123065,685.980603283559,937.816177825791,1050.61917021343,812.081875781062,898.863080701179,1003.61002230351,931.272166159441,1228.34633885483,1416.67939016236,1286.04349491966,1776.58756347182,1209.98921646131,1520.25721773838,1528.44897132649,1612.0605245022,2175.48847598486,1687.20648507733,1831.49357044006,2164.3750455102,1579.88787529554,1490.5217363296,1424.01147929255,1558.55385029023,1087.2966226633,1125.95199127395,2455.27398560522,1952.28953626051,1275.66485885026,2456.04307784006,3149.41850749468,670.940679902933,2859.33075050025,1932.05336884964,1824.21002661375,1766.32612454957,1736.48701584631,2173.96616833328,2120.94447669484,1324.02144936826,1230.1168813915,2451.85006668789,1188.88884290306,1752.71947122065,2024.00142565027,1539.67739294154,1754.8552250156,1729.10333786745,1901.15726762527,1855.69525943933,1280.02465439212,1537.2492398263,1512.76603880231,1102.45250822393,1289.88821453124,201.377505766255,900.074229866128,1099.04321241398,875.533071364602,1064.39110649645,1662.72119604479,1722.32001890838,1638.14812649079,1373.65099610112,1280.8924962169,1417.13465854762,1405.82238663996,0,0,628.840889547704,331.59275945273,502.913077492998,383.225823274451,300.743899617943,255.538393535568,206.517118551255,320.57121859761,0,495.305297565607,0,173.957620225312,362.435742821373,255.090180130318,167.409895755415,197.765834080228,152.834087498002,217.210104441936,131.552135681474,226.318962202949,122.6039014177,142.397357784997,143.762204578658,434.37551269701,546.558204119763,213.818315924321,0,0,172.488341010494,419.816420030722,268.386789267916,683.036488632796,342.434983487922,283.444343153957,1074.0691256574,1740.4253718267,1622.02666176034,3090.48930003464,116.015289078524,165.191896500916,1020.89894765072,5715.80663781397,494.153203353299,634.193645281005,479.459411510975,877.266539118207,2576.30944583977,1672.39431353069,757.213752326734,501.563215617651,638.9635912711,568.003068316556,366.795363881916,312.306936393663,2082.26092152137,927.597902405835,1464.98284658555,362.425375859395,274.160133258223,658.03020190179,381.077930782256,462.712581620555,278.353023556051,527.829828908492,285.96310514536,204.060855592511,241.157000825267,223.707751049467,220.342069624761,161.631820199362,207.853329531259,186.249133943039,226.579352553531,155.282106116781,181.428190431075,164.930952059278,132.939328213163,147.648461793068,0,132.298815719516,143.857681513704,151.788518286,783.924222769248,348.957990913757,845.498439191064,501.05140914637,634.938245587466,67.4436664982242,633.182821349758,416.747648118046,745.28087022441,753.380478252062,607.177813532464,889.494421491303,458.635386651961,657.478071668404,727.610808783265,757.092138936063,1014.33700302364,927.721520435651,824.849706965901,263.508847099867,208.447902703519,128.397581926579,219.706832571826,0,168.685969918845,137.180042503854,124.480728586868,143.298988455034,0,106.452922918383,170.01037010813,113.658988119575,255.096224577319,266.629124834088,242.341439301419,92.877129607943,29.5022937386617,-156.563559854381,180.756442800152,156.234341942507,192.819689984232,129.62891725466,176.420111640874,138.648370515415,118.109928865732,146.515433450878,131.108182950626,150.681199784003,0,194.333048862873,173.659480431792,151.344785999566,0,187.157695092558,0,155.7331503345,162.080439663556,178.113777615311,0,167.679338194998,200.726018317094,124.48285760136,0,217.64893229229,220.953980328145,181.887535605645,295.271711219659,235.847036813316,251.401867752835,91.8521974187078,105.369349273691,0,99.2241241938015,92.0376340770415,1690.6912606072,1678.77018031402,1749.27052830297,119.321901434039,0,84.6234961953491,92.8035265203138,101.545901070404,84.7350887336829,105.237657671121,263.620379784833,1222.26565480106,788.089199473885,116.445716818945,90.7301085862141,107.500518139542,101.984607067243,0,89.8166392004676,84.8224021503284,122.330368101956,93.8847439536467,0,102.661416628212,75.4113152780031,107.719531519403,115.198062570697,113.350909510121,138.265489161897,74.4095207263248,0,81.1066931992304,74.3562628993396,71.9818427086995,0,0,70.0860184143954,0,116.704633795526,140.826010897465,140.754114578596,85.12288403208,0,67.8812533775325,106.217511153461,80.7685809777331,107.739483947401,102.276555700104,0,0,110.607866387057,115.192258585439,104.606595064263,124.89801867412,120.718336492297,111.027288827107,0,0,113.433388843443,114.164829634159,103.487241066273,94.1776430305692,97.1762774793229,117.83750429701,120.752910336945,122.608398186356,113.385372640994,0,101.570028574789,110.622261195203,112.481559045006,-499.948722908043,139.493151588991,143.239008229174,177.947976316419,358.9027218154,356.427205781304,0,93.1888055262305,89.9211533122188,82.1626458530052,0,0,941.031911211006,1046.94777760205,1011.02220653918,987.516564844382,1126.26595981479,1059.59040771447],"Archive801_field16":[0,104.766280847697,19.3243525072892,0,24.6101012573053,0,63.6059845549138,0,0,26.4506019703034,10.072496637007,9.53806959536353,59.7480025161017,34.8399763975883,-1.4814409182527,31.2686449063262,20.0222467837688,8.61269392452845,0,22.9205931561076,-94.9652677278329,-11.2339760741101,-14.5450362883544,-6.70588961648251,14.7493281424166,7.74982920309184,17.8732003854984,2.37239894252914,15.0191723060492,20.9570441589679,8.45019737904315,16.5188130423217,19.5536201076691,8.43338977695866,16.8971656934925,36.7515023358664,30.3533169297358,50.199771648431,27.5345043042093,40.088212885454,38.3763259656276,49.2544963735457,69.5906068027546,50.6847506393448,51.6243090629025,65.0616722996964,44.2218147983183,41.8771531759749,38.0227760757787,44.7660568173934,22.026496261573,23.6663521181979,118.741689043967,60.6935513155303,30.7658593364866,76.1183159381828,45.423542553576,-11.4178865779387,42.9989261893632,57.0012316911469,55.8911865020428,61.1601086287766,50.1695579752456,61.9957145465894,63.9840295712787,32.8586883238065,28.6503641899774,58.0837409714105,91.3415200096561,81.0050784823499,70.1353018094402,78.0160534816277,71.1312166149234,76.3379279784974,69.3236230747876,64.9446288865866,90.1891937723439,79.700513497647,84.5702144122521,99.1747766035481,92.802854411691,128.178530073015,99.4645700954409,95.287862315037,100.970423064619,95.3454822670857,70.7618173411518,67.386182225384,73.7752415156887,85.0713319158499,88.7210691379025,83.7964525825798,85.3426499001838,0,0,30.5554340118741,13.0418876813971,-6.30549384447915,-18.2279871726567,12.3960598494752,1.16992475973071,14.3621669547772,18.6979343816445,0,53.1421838290031,0,5.29191135298823,20.0668228979616,16.4801688258029,11.3416770695292,12.5698347529558,10.1097503521126,14.2767994569177,5.84963265242026,14.1725358175715,8.14934305428267,9.35160009343416,9.56842029549182,32.5131626580808,-40.4357466443168,13.8179485270946,0,0,12.024155804219,31.6164417572793,17.9034085277047,-67.7387726218836,22.2995831442324,20.8582212952778,131.868425591121,26.5889484253237,33.0819908284345,125.891188924602,8.01691360391163,11.1963840869008,15.750208500028,-94.8128891732833,23.1377545586738,53.5522817677495,52.0442180489885,189.222201552936,66.2478142135598,102.002367105644,152.884979710313,38.4036474254389,109.722816008848,45.7352293765195,22.8722700705122,23.5345689670313,74.4327062268633,124.541915522695,94.7815186912452,28.3212308689019,20.4044057918123,167.81181633865,48.3110469378989,14.5996563642244,28.9311076001312,79.6544369727262,22.0770195163932,15.109217680458,17.5384956296715,15.8328910779642,16.2623945216684,11.9840367143942,15.8119939049673,13.6936699447199,17.1644230546937,11.4130133647696,13.6625453461672,12.0688722973343,9.69998222994134,10.8632640809321,0,9.98721460900064,10.7820783413469,11.5076957545145,99.964192794801,107.906707823367,99.3629153815379,92.3292911823776,104.647690217959,53.3763840904326,109.088252903835,116.187984581477,104.80435761334,103.638254575353,109.173213254756,100.267925630548,115.915225668109,108.003686752878,105.776294891573,104.726449343269,96.7155976075012,99.3329578707315,102.484415108835,18.4234147159353,14.2096275418952,9.93756659780474,21.7260692488536,0,12.0874408277059,10.373385299914,9.40400616925128,10.943564032225,0,7.90125674413821,13.0229650140221,8.22123482370654,22.8871985758309,27.6554029847177,7.97072799555098,132.80108208504,112.608802185448,148.206193063035,12.6592026245553,11.0013015102986,13.4919052951788,9.26468989396706,12.5671024382011,9.74703585005171,8.29352101141044,10.3728136531363,9.50284207927812,11.7557938643309,0,15.4822942718927,13.2825090674974,12.0862037771715,0,24.3178875251354,0,14.1107551197856,15.6455697642198,15.5592782558031,0,13.6809742151941,14.331149515388,8.7766468416179,0,18.4351380757768,18.0009611384751,15.7502262023943,23.797231226761,19.0069632086047,19.6043392747082,6.25444445680585,7.13723234183452,0,6.98318538832089,6.56829366790995,56.5088824218624,52.997225472105,56.2568066417189,5.20984972063933,0,4.74593676786889,6.8386460828149,3.5366619344382,3.64695921969459,7.74156281707332,18.0249621678105,232.243268377493,103.756266803821,8.81193580625985,6.9098678595584,8.48584093606999,7.46146854235557,0,7.93922198794012,6.67243189413913,9.69643263451509,7.56238961315938,0,7.30305047139074,6.21900289109471,9.2400426353161,10.5315386928311,9.84831127903243,10.6051708944882,6.00003205102356,0,8.72876914979896,6.15830124508831,5.75873339563394,0,0,8.2889144508519,0,12.8266710070011,10.2174586231487,11.2696527417806,6.28474225332163,0,7.76063983042611,8.23336859757469,9.95263088078146,9.0065751892669,9.63941685471861,0,0,9.83554670013447,8.46510152216662,9.72878327325495,9.32048706921801,8.75691223872776,9.80543098648384,0,0,8.60737648219531,9.64970676966893,8.57720722614752,11.0713317838468,7.15434319831711,8.45742585522389,8.91122734817755,8.85399956473843,8.46597552765833,0,6.09316016643003,7.07235718221735,8.76375302469869,207.885263787154,10.1718378085479,10.2843704922898,14.0025502961024,36.1289424736729,28.7334936827824,0,5.86028899114564,5.67653996819449,5.88243508105444,0,0,14.8206740096731,19.8886003601541,18.1581535784026,17.0319665934576,23.6810909313048,20.4905514361759],"Archive801_field17":[0,0,0,0,344.321760834564,0,0,0,0,0,128.946993595932,139.157728542094,0,0,0,324.95169733968,0,0,0,318.319736826734,144.901409960083,2807.01441413482,0,3215.49529154268,0,0,5679.55490490153,0,0,0,0,0,0,931.310350810312,10077.812391704,0,0,0,0,0,0,0,17015.7907021944,0,0,0,0,0,0,0,0,0,12584.7284257812,0,0,0,11936.3228046307,671.037826119003,33657.3902636777,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,629.58279750546,331.84913583701,502.952604890462,383.659081921368,300.999261555903,255.541071639536,207.015922320845,321.116052142052,0,498.147999593163,0,174.038093416992,362.990833294311,255.62197863925,167.793643609013,198.16489566814,153.168095090097,217.678791972047,131.682127126369,226.762283954189,122.874441748712,142.704099199904,144.080276694165,435.590624069,548.051931934652,214.264341238131,0,0,172.906934815688,421.005256400443,268.983272138716,686.38719839471,343.160296836304,284.210768729091,1082.13389576259,1740.62846325012,9342.58640344984,3093.05232821519,116.291952446014,165.570896253511,5110.16133661253,5716.59295427195,494.694596766878,636.450647416861,482.275779942121,897.441709648586,5111.33750553254,15166.8267320592,772.493678766212,503.031310552629,648.31594714535,569.841378651239,367.507795432214,313.192430393934,0,8623.43508921812,0,363.530253465586,274.918385059791,679.090974993621,384.128034105195,462.94285085301,279.85248741036,2254.34209091575,286.814037827829,204.619454705712,241.793916126915,224.267336720034,220.941379379467,162.075483762755,208.453893579566,186.751858065956,227.22856427478,155.700961314077,181.941895748149,165.371934214089,133.292740391322,148.047555793235,0,132.675246735903,144.261171989753,152.224115517344,0,0,0,5654.56514719051,0,86.0098048439425,0,0,0,0,0,0,0,0,0,0,0,0,0,264.152105253197,208.931667433099,128.781575834738,220.778428211975,0,169.118487082947,137.571694704759,124.83544016644,143.716254077134,0,106.745747718604,170.508426659975,113.955931317296,256.120884842005,268.059529813881,242.472484433724,4386.65259797379,1904.17748493395,0,181.199191567882,156.621193448169,193.291138840117,129.959573204312,176.867147472533,138.990558508274,118.400750789152,146.882155152971,131.452119207712,151.139083819267,0,194.948801782061,174.166702302616,151.826613513566,0,188.730926151609,0,156.371121129058,162.833819505589,178.79208292382,0,168.236528474019,201.236965480666,124.791872196802,0,218.428276658144,221.686030287791,182.56819338023,296.22912021043,236.611684884824,252.165083284764,92.0648914956648,105.610794201457,0,99.4695516235728,92.2717105520825,0,0,0,119.435583876608,0,84.7564748212718,93.0551536179087,101.607470206864,84.8135341455314,105.522018493557,264.235886849328,1244.13434427835,0,116.778658915624,90.9928506966496,107.83492429015,102.257193348285,0,90.1668449211836,85.08443602642,122.714056920125,94.1888256849135,0,102.920848278174,75.6673144027051,108.115104673963,115.678463541321,113.777932490533,138.671609000833,74.6510358892271,0,81.575039641943,74.6108471107316,72.2118320641565,0,0,70.5744718716089,0,117.407389198762,141.196181980989,141.204553197568,85.3545744007293,0,68.3234373453383,106.536134874976,81.3794724399569,108.115284756098,102.729801923179,0,0,111.044306858063,115.502876075859,105.058026608711,125.245305492575,121.035533119098,111.459433612093,0,0,113.759485909589,114.571921368794,103.842079848726,94.8261716735488,97.4392812542132,118.140617363566,121.081275710546,122.92767228788,113.700991510945,0,101.752628002904,110.848107372443,112.822446757164,541.447142791647,139.863524997165,143.607735707029,178.498049540894,360.716598191389,357.583510078815,0,93.3728893333892,90.1001493839498,82.37295318276,0,0,0,0,0,0,0,0],"Archive801_field18":[4491333.41474063,8995.77,8995.77,4505571.67238395,8951560.08970592,4499669.66246295,8995.77,4507677.20825218,8946127.47662856,8995.77,7866727.95429829,7866391.58159848,8995.77,8995.77,8995.77,6485968.77158804,8995.77,8995.77,4487657.92873988,5570805.21775036,5560150.64954439,6372366.13273543,5733671.5001798,6280890.80079532,8995.77,8995.77,7065563.79286911,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,7684197.88607102,7882438.40314538,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8568434.38254168,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8832641.91724423,8995.77,8995.77,8995.77,8452589.1936474,8921714.53917019,8339412.0932113,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,4493273.68962943,4499862.59424568,7152730.83434388,6955171.59402641,7285352.95500412,6716035.44526039,6239354.49096701,5503144.47157387,6490904.7036472,7982679.51217662,4500121.22456122,7920161.91904736,4495442.81524184,5658778.79494652,7564525.43561566,7218314.43237422,7202598.00700461,7028727.72755715,6431717.15979133,7917814.58520481,5517004.23934475,7524660.45248885,6593218.55825165,6733539.01650258,7368717.55334266,8685934.27724596,8271362.42515843,5773450.4817115,4497975.944333,7825648.04103586,8054423.34905085,8370687.88135135,8517047.6004318,8524961.54868707,8574123.43612777,8884006.02171804,8612960.04748793,8422457.7009823,8237147.28019679,8638534.72809023,7127197.3379159,7628491.36366102,7663968.85866834,8597000.88935916,8691112.04043865,8865339.14773511,8959141.93865648,8534946.48689879,8522603.23543912,8219946.6735029,8659068.90610741,8207794.73091016,8947056.66506247,8864908.52327579,8856994.52339518,8828801.91708403,8995.77,7910730.0018035,8995.77,8918111.36828092,8956841.80479255,8151564.54293069,7363080.44547654,7850226.24799999,7773771.25195386,7387639.51843359,8973711.67365297,8959411.36464498,8949923.01789084,8757160.37629976,8976972.10738988,8958386.36499758,8709140.14180363,8984132.71936286,8892143.87061307,8909312.22852622,8862320.45165267,8983564.44286522,8989120.96029388,8989000.05868962,7834187.74394312,8793514.78000395,8921946.58572165,8714152.63321661,8995.77,8995.77,8995.77,7053187.21146123,8995.77,6690243.06198819,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8740303.35919109,8403747.94076965,8394352.16417352,6131857.04131685,4537058.75279645,8612865.91818357,8645207.87177146,8586320.80991481,8463186.7025429,8667196.17112764,8053604.92549562,8545016.72375672,8825162.2373048,6675510.7832247,7135199.78766012,5715931.86320512,6104194.30307836,6284183.78308385,5576767.74159823,8410936.40881373,8240955.16724947,8675882.03780769,8434828.13463626,8854463.70555701,8245911.50236061,7791783.09761684,8614096.61819281,8834008.45999133,8168261.20601019,4500165.73319894,8115640.82661435,8262986.45715666,7562802.75548813,4474957.75051787,5296045.89215264,4496277.71204101,5744633.33581928,5293183.37771,6162732.84379126,4493620.69046571,6974218.0181255,8856972.87970253,7606135.1061935,6442750.92924424,7277535.47959586,7852785.70389236,6723354.39696128,8422917.66091334,8269684.49446729,8639178.42670778,6849189.21933241,7216311.22193728,4500666.57856405,7776763.574746,6129757.60566896,8995.77,8995.77,8995.77,5634156.27833736,4499567.96322574,5310275.27230504,5664689.12601467,5489768.04911022,5970336.91327887,6297279.58340761,8176624.87886995,8772350.86216403,8995.77,7964045.59872528,6946514.18729419,7284846.60018322,7567935.94037597,6434185.83048422,7422185.81769907,6008566.87363525,7206975.08494501,6678317.57202943,4494393.78881512,6628078.28093375,5949336.35416651,5650309.45254067,6524875.82037696,5769047.94301376,7697124.00834188,6520462.26412708,4495316.07301675,5207311.07588438,5190958.43448291,5343195.44976481,4498977.97302131,5576088.35141401,5362909.93441116,4491827.13968963,5232324.9210257,6318255.64292207,6863053.74404171,7020247.8449868,7208357.6200998,6076326.29612398,5238853.35694135,6961303.42001458,8506117.6914245,8659401.52230524,8870923.77038331,8319547.00121958,8861618.37635046,8989578.2569815,8124705.47828682,8930877.91528335,8964082.46360384,8956584.65426787,8671739.06682419,8861189.92042112,8976978.0331347,8816500.27193582,8408558.35375479,7763371.92869174,7840494.64937827,8906819.82822012,8843024.53422136,8628781.67194548,8232476.98264107,8319415.21851453,8121567.71496515,8526698.78731639,8505371.53795923,5374192.72683843,8954508.94827119,8805574.07572971,7576679.97061267,8190943.34546981,8663062.52401032,7201054.69315889,7553426.90665295,6944792.16802431,6380401.98432713,4495613.17752661,5538975.2745805,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77],"Archive801_field19":[498.909377334113,1,1,501.278092980067,990.374255512742,500.402634293814,1,501.694760238822,991.83139152964,1,874.235805000542,874.180216424313,1,1,1,721.847421589407,1,1,498.933180671151,621.864970830488,618.642760412819,706.617816996269,635.691444091685,696.318037447699,1,1,781.253106574011,1,1,1,1,1,1,849.764696476429,867.142441834425,1,1,1,1,1,1,1,944.453865643836,1,1,1,1,1,1,1,1,1,946.127532752168,1,1,1,932.320381065835,948.800565308737,1001.87074907544,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,498.758516498603,500.325870282315,793.17820637828,772.071026798604,806.389688066375,745.0932723533,692.099792615988,611.003639856775,721.035393266219,885.740020617226,500.368965343392,877.147806345879,499.579039528119,628.902983889907,839.46211992058,801.394549973439,800.277806305842,780.847510022541,714.608515081358,879.564441422616,613.127648342954,835.807160858448,732.745913032091,748.291781325027,818.865782141231,961.953718356459,913.63206353482,641.130799091045,500.012068648332,867.486447716629,894.957895539541,928.643538848176,945.738141258129,940.672112793152,951.604753510158,986.212623522294,939.419080886166,919.266746026469,899.957812201856,944.20330300386,792.129247992086,847.641793109873,844.219052033796,925.135198923748,966.314339993354,943.900614821121,1004.77387569459,940.010822486304,918.744751181809,900.406862933355,953.343846002003,909.576904272601,995.552069564421,980.509932015494,982.975592240177,980.46801185864,1,866.779434731242,1,986.977273884439,995.474757882187,901.774982225517,818.277763671745,870.363735312939,862.956567669637,817.921993514483,996.929729970611,995.421118147989,994.026301163956,972.835014034424,997.00011419936,995.448081351535,967.557208544308,998.251744098008,987.508307212584,990.069566151238,984.737731293171,998.212717429206,998.919939619526,998.966901105194,868.86769590771,977.271378360432,991.531678606127,968.33243024672,1,1,1,780.973791946158,1,744.036596513184,1,1,1,1,1,1,1,1,1,1,1,1,1,970.462820256732,933.556723290469,932.907406153369,680.39448022454,508.274689716735,957.046924697218,960.77495040271,954.145050227792,940.480175039917,960.938612141474,895.116736294807,949.448521905466,980.956601387551,742.651482080582,791.959411060048,638.473704232803,680.123908264636,698.995760883901,622.991088254782,934.546904217342,915.762976270838,963.92111226331,937.447701514166,983.860316122525,916.394453146707,865.92806755491,957.264019286906,981.785988357455,907.670842958263,500.376087471884,901.598327280906,918.080602665244,840.356031330684,495.604781333018,588.137138721278,499.728027267682,638.224171778043,587.712375433464,684.948043818183,499.281453676143,774.845620150741,983.984801263336,845.351103863163,714.944897612585,808.358396627235,872.220255470836,746.879579471907,935.209025271305,918.375491310372,959.334157534756,761.367833140345,801.987503401694,500.456587412041,864.619271918931,681.290676640456,1,1,1,626.229557599527,500.279999436209,590.27960770685,629.329951524784,610.218511957275,663.815175681541,699.845560739624,907.98589558136,949.832170696292,1,885.098329046111,772.017096260373,809.636770354285,841.09265430974,713.544128404363,824.793828662584,667.770083397325,800.902378701393,742.26986735493,499.421899607568,736.598760415022,661.255339504277,627.934434588633,725.147986468972,641.20400446225,855.337026908313,724.875990398343,499.570345558635,578.789469734787,576.94424155118,593.952012909191,500.174261941343,618.573497000588,595.780387194069,498.995739011464,581.61392104529,701.897959175885,762.608879170563,780.436297362624,799.65515406413,674.963033518489,581.995822568201,773.112046218272,945.699817762825,961.958325568258,983.211083979661,922.475462314676,984.165178702306,999.445381563472,902.605247808615,992.468671535896,996.473332142292,994.297001200031,961.67136256364,981.621981450382,997.399651719175,979.698167535456,933.590151540133,861.949812056915,871.770779887123,988.994224448925,982.79532651714,958.920137075922,915.016100191459,922.454593397776,902.081634773602,946.612995873519,945.760746324928,601.895325557685,995.112790126083,978.566542626715,841.735830868765,907.955535321494,960.991240955601,798.464485555481,838.615724678296,771.492396873228,708.9334202944,499.621838803214,615.009475236654,1,1,1,1,1,1],"Archive801_field20":[998.909377334113,0.103616813294233,0.103616813294233,911.63977430949,340.496445151061,395.343983267421,0.103616813294233,306.997790541852,947.012232194352,0.103616813294233,674.296899819701,629.422151908184,0.103616813294233,0.103616813294233,0.103616813294233,168.340578969661,0.103616813294233,0.103616813294233,152.971548217584,239.95056467213,161.096022876162,123.505570539768,214.097480259818,151.754235364365,0.103616813294233,0.103616813294233,90.397760013649,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,169.921713218049,89.8505364950626,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,97.8612998614336,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,98.0347199137144,0.103616813294233,0.103616813294233,0.103616813294233,96.6040668553065,158.224626851603,103.810654351903,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,228.429215423334,608.158226098542,158.618130840786,282.293023210759,219.37141798701,220.267860081826,267.686681046678,305.749714424775,368.99653892104,333.309653598658,456.936658403021,247.797003334081,380.514401209449,424.584868717712,293.09562199453,354.13440577147,493.244089442791,422.484766310727,470.317543808853,439.648203595254,511.79805724084,405.294586761856,580.03115171095,524.090603922861,573.94973567866,290.870634240595,186.261522793215,364.015846502795,532.21209308626,925.257708713697,537.278804413914,294.028419672746,404.148139416869,231.647711630729,343.865674135757,405.399937635138,168.482149223904,125.900379718315,93.2507605996058,106.775609745892,665.533479819329,527.420742032783,97.9464033886372,95.8595611788048,273.238967902347,180.003470355594,292.80021979,159.229591528093,95.1974033482618,93.2972898054112,199.238615143569,247.428940075626,260.397334639004,271.558879645745,339.321203477344,374.940806839959,0.103616813294233,90.9379092173637,0.103616813294233,335.253173388732,421.427565437432,183.015073482924,256.441378977422,234.4327795009,354.420907089084,151.195842653507,407.380260429414,523.082011444729,459.988258067053,476.463495389466,491.996664807799,632.210013338167,501.873976770669,565.145796768984,476.60649743251,650.439488193874,567.952220788018,622.361481368795,749.854416253582,683.96014124107,971.458116240066,733.622128231256,692.932701953284,647.70982989174,0.103616813294233,0.103616813294233,0.103616813294233,110.964429521354,0.103616813294233,205.681075681944,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,419.302392064718,482.55582317957,718.395233538191,329.612557330633,251.951375933744,587.175639266456,700.682066795501,757.897744611967,660.68579651039,958.574242640008,813.837358767047,577.937832928689,840.019919228304,276.182650447244,331.153440306807,264.702944322308,193.005839639571,187.542278199281,291.035443093492,542.201404164342,598.566673101799,530.310405903533,717.493949922042,580.70503731155,661.639020464919,719.317281258714,659.147702940177,744.815678722696,611.149793997112,697.846761958688,493.861250556692,549.790394038442,563.680388582038,314.913798928326,351.083757957485,545.934038997887,462.74593648016,412.7127172207,401.202386541716,469.855134028049,477.170243732298,524.247183331495,669.37025742426,917.761368775831,405.928123512682,430.533982740868,425.545663852239,373.481620203744,433.00995667419,429.257591490193,794.982479386318,736.752951755912,759.553605984866,825.210935291618,707.244969797087,0.103616813294233,0.103616813294233,0.103616813294233,596.157888509985,683.744686630735,725.457019443203,830.631776194838,661.152869582244,771.949133821662,641.195963033502,393.039815930995,135.65624101689,0.103616813294233,743.953980181981,810.656916697218,729.491898927483,793.500027406097,983.589338570541,894.953995882468,731.759161855506,643.64216506791,753.90461912422,848.15723685097,685.472837188167,822.045573298012,641.015654965885,608.639488409272,552.219089429315,620.147900971454,896.613686514758,772.673351423737,731.378226421201,807.012214373255,871.046314463306,924.541930563044,990.216894740193,933.262084018871,620.834082119968,511.785964160856,502.467482597679,545.636638494019,865.58879143092,978.160469313397,941.870153145018,594.821069411137,930.900193454581,841.426721395734,895.787152410629,951.806819561283,964.775987730121,898.187372976604,839.930116350657,898.021991185484,785.35109690277,806.989379369371,899.477013927229,936.897413394529,939.012927198182,871.079856084525,861.094557867357,914.446432844636,922.309160495342,865.376092982942,892.704088919239,803.914486674216,772.848507929829,785.867289887179,931.140749311755,874.507268894552,872.33263286177,820.768031613922,209.366865252204,715.135098719973,687.162908826706,493.563147702975,319.524939428264,335.640055072964,920.945851635638,877.019210493721,861.782748478975,831.945473169658,834.351188754338,913.786051482988,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive801_field21":[-666601.877081724,328996.896940376,325283.058972033,-666722.199984646,-167062.505723451,-166720.509836636,324558.623988507,-166844.197051731,-666383.110240731,80318.7377764364,-417132.829010072,-416772.101338311,79006.4686090518,326137.576167594,82267.1314414436,-42886.5372919352,206027.212542604,81626.049387481,-41913.2821922006,-105309.813487615,-41309.5219553569,19980.287592077,20910.5636389533,49766.4222007703,205835.265456795,125088.339446606,18773.1287414231,82448.3340803919,143535.52270163,115467.80227272,143707.984128085,68136.6179900421,41824.1370105619,-49528.7748255395,11346.2682651048,204650.419866226,147157.105679236,120189.243171461,209324.046378287,149986.519487273,88522.783272622,324722.14753769,29636.7502697871,223618.341850218,70713.2860663779,85327.1492564634,200355.156498121,324979.404956616,272807.593576609,259733.051880381,166194.344931448,327001.91625809,10896.4027041446,174507.903658404,275441.416477738,58644.550499533,30129.3059306584,-47855.2485032398,52250.4185742941,143513.507965884,194675.171628744,254845.634644158,169252.347171566,118425.339225444,141582.406216023,235340.303320457,326639.19000311,92632.5150383256,327578.514268433,134148.954345131,134727.720944137,325681.595362561,227655.668593648,187416.576762098,179047.809170679,209571.6902473,205817.055558344,256667.001364731,182451.610983596,104328.925024145,152323.962350262,83534.978577166,170692.644242575,175084.138832434,328191.912497799,255220.383347527,325692.328430137,277884.50606052,283144.06843823,326390.711034976,273366.375806952,287873.359791602,237298.11626728,-104103.140009631,-416715.935431195,-36754.6768701001,-139320.025313065,-91545.278065848,-90001.2170170083,-132373.686303073,-164940.384515694,-211478.299368444,-174723.820132683,-291595.855580185,-108986.914177526,-229080.359537471,-261212.392300157,-144238.206641358,-196203.572343109,-309561.012141697,-252840.875778179,-294851.416184039,-261084.774612031,-333577.446600498,-235576.876986822,-384606.531749927,-337751.450467333,-375031.443919981,-135756.095223317,-55681.5228707697,-211678.160007112,-354216.100960019,-666487.734495263,-339581.208448262,-138202.789218924,-226649.783120798,-91652.495324039,-177483.499276926,-221356.590528422,-64121.440122046,-30339.6915375668,9012.32803563792,-12599.0537980446,-451737.604483038,-334930.450334249,708.200170331473,-5073.13679163241,-99343.947038551,-58162.0555047965,-112706.756617154,-8318.35489462296,6432.61372559491,57099.8883075176,-47254.2194223758,-76746.0281436553,-99010.7738754851,-116069.387582749,-168818.456641588,-185055.397982543,90836.9911848516,32449.0654840843,102682.911798443,-158377.665951032,-225324.327835599,-23089.698840081,-67882.0851638234,-58620.0170202318,-154554.065866624,4566.15192713993,-218279.642267534,-314672.427712635,-263228.242095286,-281536.867202656,-285115.602549553,-398105.030000098,-284939.831049945,-345042.365408018,-268461.398274035,-420901.04198325,-342093.424401967,-394017.705929703,-497877.864280403,-443044.146349237,-666458.443586884,-477230.790463836,-446549.366401211,-404573.640024076,59850.3930896286,65053.922999916,113948.275081216,47542.8396289073,125299.452288286,-18883.5149136645,207975.019168119,117717.270183442,218435.079577426,179483.857860437,167757.273269453,233659.55626997,145534.321965313,205376.688430827,270793.123918226,266973.868659547,328146.699402203,289208.977980572,268188.310955406,-235305.357979152,-291228.237944806,-458638.687730874,-123692.045394255,-41491.2494698825,-374906.408696999,-447037.63687456,-493764.900276781,-411632.977641713,-666408.392372044,-533542.338899303,-344942.107506101,-564560.800820989,-78583.7662398485,-131018.315561294,-59255.6896557646,53949.1318600936,15878.3117756981,20239.59899433,-340267.056022664,-388353.522580727,-327161.523339894,-484141.72172586,-365279.765400394,-440263.244496535,-491945.894668871,-433699.926339764,-500698.650069345,-367824.064721079,-416673.986765016,-270942.750566374,-318431.232091466,-323619.548924196,-104166.080293595,-135659.789361182,-291647.719904855,-229579.103665311,-186939.559087485,-180474.040453372,-229067.999949764,-248301.517651535,-318677.552259601,-451776.709479698,-666439.507255308,-192316.817605349,-216807.272993756,-204361.893671194,-176963.946195218,-223495.519070655,-224629.442628007,-560068.001767886,-510322.422505331,-541653.235057842,-578318.55347412,-491929.7982515,324408.152909004,281695.941845774,238288.925281813,-402426.321015493,-479141.072969485,-510781.22895091,-596688.818002585,-456780.808794137,-545509.354777155,-436620.254145994,-220794.576603515,-33250.0313916139,329770.505047086,-475236.367016217,-522973.266760879,-457997.970680473,-513078.872663105,-666536.659060019,-595852.648764848,-452498.653681468,-386796.839657796,-474330.898949009,-541629.23044276,-417719.745037948,-526605.59578721,-375886.919176095,-353570.544964353,-303097.327752165,-370997.434803167,-590799.201956962,-479165.393932957,-448100.986308332,-510602.210497593,-564040.830791977,-604173.680001239,-666533.073799731,-616361.034193234,-354199.747636981,-266979.948659389,-265346.79138967,-304075.071473741,-568184.21894867,-666439.795219895,-627241.269434997,-336027.048151698,-623798.625335682,-560324.646227441,-609561.083635785,-666461.428990341,-666487.499068216,-616173.710262059,-569571.323021389,-604855.109398784,-522963.018869545,-547573.39427315,-622152.807837119,-666344.51218959,-666595.22562377,-600545.74239513,-597546.569049649,-622859.51492489,-623163.05153206,-573324.626510774,-622487.66000611,-549284.915673321,-527452.532281075,-542671.833004625,-666489.307618911,-618170.513681933,-613304.386968529,-567478.486568657,-6239.53635004617,-472873.991986778,-453952.324204451,-266067.306143217,-131280.163085014,-150405.460307657,-666469.246194148,-625786.013137647,-615935.698082866,-594209.844948672,-604167.212341569,-666555.054355805,189225.203262882,269124.842923487,270750.574772123,231368.193096519,269219.345788913,327375.462565013]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive802.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive802.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive802.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive802_field1":[0,725.546380335695,962.667557222098,0,348.059108259689,0,1195.28571918168,0,0,1027.52504764611,128.301347421114,138.4979922562,1032.38280327662,1117.07295981098,716.748165624286,415.214510515886,995.54825589025,899.598003682357,0,361.391791669618,481.119210514665,710.321158468977,593.335461902406,742.433622098145,875.987478888848,872.228920085138,838.989527538391,841.115838812635,956.632463047565,993.973034927293,810.987373200778,935.109949938832,952.231137717962,845.558869385199,982.125430500143,1067.18871194471,1043.78849607769,1080.14129226078,1040.99389976916,1066.47166282574,1083.52060998348,1164.17261075051,1314.93593215018,1091.83962532208,1140.34437937567,1084.42004167214,1076.57587760624,1142.34080810205,1095.12892942734,1101.89591919126,1007.3821395973,1058.13200597745,1201.11971261009,1065.39328789295,1073.15001653563,1079.43462833891,1029.00825498192,438.334070471022,901.247622774235,1062.35097628313,1078.55567307276,1118.79689871245,1070.99551252997,1049.13895613086,1035.51126256637,1066.29604469702,1089.66778146128,993.024964514681,1088.71375894749,974.481907576682,1008.66521902415,1178.0639518947,1091.41946073576,1041.84589353657,1053.80589303009,1085.71708558537,987.191946384878,1091.30717907972,1003.64208465929,844.573895675338,934.77422228904,347.486343256648,846.847232800573,915.187881296081,932.525445848068,965.311320549546,1195.64967862993,1140.43530405051,1135.57046631418,1143.72040106061,1051.00072681383,1100.11392107742,1046.90366349201,0,0,610.569670541636,324.710783547938,482.195130155426,414.066011813447,299.40504848472,258.148596826429,203.616858581741,312.317427527088,0,455.52247828908,0,172.835566241347,344.668414347488,252.903457690352,166.609335302124,196.014885656612,152.284759823102,215.266568412243,131.452917707884,223.388222300964,122.394051166518,142.136862082904,143.354307782976,418.106660336298,418.781364118253,211.742121367624,0,0,171.776033532292,405.764570837726,264.014181006693,550.130118262178,331.974242178234,277.937546232583,735.892517107229,1015.80251557308,1111.57187948185,2023.03331350356,115.890452993819,164.550579198109,924.126715725236,768.384245037456,453.776304275927,436.612523342309,439.489349357842,578.156427344185,749.551802154629,829.023796995177,620.536516078442,480.318449246092,515.762986900107,479.617896396088,351.919462236979,305.221601249905,930.39472446169,701.074627340453,895.982789023033,356.445807809812,267.432234110501,533.272053113217,362.169521816376,429.255607059984,278.714348484868,560.187348144156,279.648977841005,202.557053529397,238.477471264804,221.392523604023,218.703511885954,161.078020049888,206.016800130631,185.202116524837,224.597028337168,154.767465434166,180.449745986036,164.349629859729,132.17268160216,147.223263102596,0,131.928345241329,143.605191552603,151.30140243556,717.434127412813,536.022901275713,792.722621905072,603.877139023157,712.945758328845,114.909565727915,579.142106035676,558.555861679241,771.410422843891,780.874409779267,678.009756284656,874.027083123965,480.28722312398,672.166883006469,657.768665142391,762.754217873862,1018.0922717142,928.160287745919,840.883791980203,259.491020321939,206.756296481822,128.077080261848,224.121424349786,0,168.038808824585,136.819093127241,123.73502237531,142.870960207064,0,107.177489652686,169.370851681749,115.34756271966,264.385444007928,269.198324887426,261.931646506576,374.210257986535,286.284634369456,165.519170766185,179.803271181163,155.749462038378,191.653009748265,129.422964765891,175.646341793627,138.331126175826,117.666331198506,146.130005116962,130.777124672348,150.241643226419,0,192.919245946719,172.88898483538,150.821494168896,0,190.410363822963,0,154.970059679808,162.039848543454,175.956933711869,0,166.941839394289,199.348383388728,124.270931088915,0,214.643217423416,218.457023353725,180.499146605231,288.917557685414,232.880734378125,248.115574917747,92.8608233080179,105.040100963114,0,101.269455686375,91.9913708792251,1184.26506362002,1131.97127540555,1107.09257562638,119.168371534721,0,84.6705423632156,94.0299817210411,101.516875396677,85.0195742279467,105.110565473057,258.899716125835,832.782997105467,833.118313119626,116.364465535365,90.7404686387993,107.338411946701,101.781621736725,0,91.7639763254665,84.7373492085688,122.130046012109,93.8561019982754,0,102.591126894732,75.4179897360677,107.527448862677,115.089525488597,113.173829803923,137.932842134648,75.5802040384069,0,81.1725029241735,74.4010193359343,72.2042969661533,0,0,71.2189341162897,0,116.457092161087,140.196148038168,140.148077154803,86.0569981230558,0,69.9000305964897,106.504823389495,83.0081426430225,109.202164084799,106.386896004091,0,0,115.118845251914,117.774320984148,107.366086716384,124.504106669783,122.250332214332,116.121667959345,0,0,117.46703074313,117.75279402623,107.435349644543,97.0937325701811,98.8666140703137,123.365711358497,121.599570758629,122.544488960793,113.765360971543,0,105.561459324488,114.295169661858,114.969053245916,48.6443549248359,139.016626592572,142.85514159611,177.11100710545,348.619395391119,344.25201876093,0,96.9196046695287,92.2252639075007,83.4599013998162,0,0,932.270165470872,991.586661797647,924.918561446402,940.23427836667,1033.33802149048,1018.04051273659,0,620.063099307025,898.637754254617,0,348.059108259689,0,997.607953380992,0,0,877.765752987535,128.301347421114,138.4979922562,930.611673396013,1015.56569739686,599.450464742622,415.214510515886,895.976564795392,731.057625864363,0,361.391791669618,481.119210514665,562.895357826657,375.452955262386,565.353655564674,797.688477170581,744.732262828446,666.541461249476,682.746618199257,827.417481625234,847.980248996698,718.229630883646,763.697385513887,788.604503426998,845.558869385199,833.008630983021,969.415231786475,925.963723733087,1012.64794261088,940.91169770412,970.882508484375,971.300606995382,1018.46085613832,1298.40767956975,981.73558866905,1078.68796730043,1056.37974588407,979.761795924494,1020.38607214475,993.793344504244,992.785477114687,889.076689624066,978.838250419682,1202.66555906507,950.358334474914,981.938539683981,1049.38387042802,916.125995704241,438.334070471022,724.518744499887,987.705776365495,971.922411288004,965.412676037319,985.871565467416,968.208701398467,890.088186453414,969.869377740586,1002.47812746426,837.104097360625,882.728615046621,766.275850386049,825.56483366468,956.164171075852,910.356701898133,847.741309664392,881.376951235494,931.413822458894,780.411743535955,892.089792982585,795.597273375014,616.163204607242,714.717126054658,235.539877659856,641.437843425202,702.292860478148,768.341502143634,778.475667376309,980.072005962663,958.053388638664,937.795872747194,923.300498641648,851.783008396304,894.211770404291,844.038542906213,0,0,610.569670541636,324.710783547938,482.195130155426,414.066011813447,299.40504848472,258.148596826429,203.616858581741,312.317427527088,0,455.52247828908,0,172.835566241347,344.668414347488,252.903457690352,166.609335302124,196.014885656612,152.284759823102,215.266568412243,131.452917707884,223.388222300964,122.394051166518,142.136862082904,143.354307782976,418.106660336298,418.781364118253,211.742121367624,0,0,171.776033532292,405.764570837726,264.014181006692,550.130118262178,331.974242178234,277.937546232583,735.892517107229,1015.80251557308,995.380086090681,2023.03331350356,115.890452993819,164.550579198109,793.390027963303,636.63312479363,453.776304275927,436.612523342309,439.489349357842,578.156427344185,627.504654755394,644.112138710682,620.536516078442,480.318449246092,515.762986900107,479.617896396088,351.919462236979,305.221601249905,732.115458606291,533.476073921827,675.789461783384,356.445807809812,267.432234110501,533.272053113217,362.169521816376,429.255607059984,278.714348484868,372.747853877945,279.648977841005,202.557053529397,238.477471264804,221.392523604023,218.703511885954,161.078020049888,206.016800130631,185.202116524837,224.597028337168,154.767465434166,180.449745986036,164.349629859729,132.17268160216,147.223263102596,0,131.928345241329,143.605191552603,151.30140243556,492.291539738683,328.326500931472,563.219144846925,367.444100687053,501.336673398773,114.909565727915,470.317932834033,387.021408090052,611.504171713967,594.066746221694,510.452978998609,697.321304026754,364.931334778799,532.355022739383,554.250402484758,627.683817085353,830.431263511514,757.263115328959,685.820310728995,259.491020321939,206.756296481822,128.077080261848,224.121424349786,0,168.038808824585,136.819093127241,123.73502237531,142.870960207064,0,107.177489652686,169.370851681749,115.34756271966,264.385444007928,269.198324887426,261.931646506576,216.634002979992,165.648889929961,98.4305146311099,179.803271181163,155.749462038378,191.653009748265,129.422964765891,175.646341793627,138.331126175826,117.666331198506,146.130005116962,130.777124672348,150.241643226419,0,192.919245946719,172.88898483538,150.821494168896,0,190.410363822963,0,154.970059679808,162.039848543454,175.956933711869,0,166.941839394289,199.348383388728,124.270931088915,0,214.643217423416,218.457023353725,180.49914660523,288.917557685414,232.880734378125,248.115574917747,92.8608233080179,105.040100963114,0,101.269455686375,91.9913708792251,1010.91112573207,994.428915831435,975.830338699764,119.168371534721,0,84.6705423632156,94.0299817210411,101.516875396677,85.0195742279467,105.110565473057,258.899716125835,832.782997105467,697.691565978092,116.364465535365,90.7404686387994,107.338411946701,101.781621736725,0,91.7639763254666,84.7373492085687,122.130046012109,93.8561019982754,0,102.591126894732,75.4179897360677,107.527448862677,115.089525488597,113.173829803923,137.932842134648,75.5802040384069,0,81.1725029241735,74.4010193359343,72.2042969661533,0,0,71.2189341162897,0,116.457092161087,140.196148038168,140.148077154803,86.0569981230558,0,69.9000305964897,106.504823389495,83.0081426430224,109.202164084799,106.386896004091,0,0,115.118845251914,117.774320984148,107.366086716384,124.504106669783,122.250332214332,116.121667959345,0,0,117.46703074313,117.75279402623,107.435349644543,97.0937325701811,98.8666140703138,123.365711358497,121.599570758629,122.544488960793,113.765360971543,0,105.561459324488,114.295169661858,114.969053245916,48.6443549248359,139.016626592572,142.85514159611,177.11100710545,348.619395391119,344.25201876093,0,96.9196046695287,92.2252639075008,83.4599013998162,0,0,833.276226921929,911.243375282935,855.723432117996,857.226727852318,948.173875920527,944.041829510482,0,334.360869255894,689.777139602057,0,348.059108259689,0,752.808889370642,0,0,741.648719466971,128.301347421114,138.4979922562,847.071908718058,784.726171460245,394.737193886053,415.214510515886,627.351862830913,527.33103338435,0,361.391791669618,481.119210514665,456.520150186403,274.947504712242,390.158582956827,573.209228264255,491.640557921314,588.482444026932,461.729835018274,568.040597957833,640.494807750277,491.670696241909,602.231579509638,683.225329012641,845.558869385199,781.755799403851,779.172897559913,736.944273666467,933.074121745982,699.985220699969,830.312011519864,872.426773926236,817.091723721961,1301.52585032824,826.123969183599,1033.1228034646,1018.28389833206,824.242145508776,809.924499646951,782.960915396104,808.884525493225,643.054186875341,719.144884859508,1189.13262108232,816.085372203471,742.145350985642,1012.46981036137,858.630210584376,438.334070471022,624.518586582195,898.453292596985,838.024348098978,765.50512179429,870.466214076775,882.825459613552,738.097730771613,747.896278893117,751.774476330452,711.761314851613,482.082731846395,550.774992611467,641.359299686122,620.458071129443,661.870548583971,595.696960540644,673.49423448674,736.484503446586,444.001797358457,572.924731663373,509.626689267879,393.765135715754,435.004386524569,86.4093784562821,301.344240052848,372.278295212718,377.350799316831,387.939249913676,691.612884816889,709.095810153972,644.959495430147,549.309969529741,478.361475246621,540.065098810237,506.768005439307,0,0,610.569670541636,324.710783547938,482.195130155426,414.066011813447,299.40504848472,258.148596826429,203.616858581741,312.317427527088,0,455.52247828908,0,172.835566241347,344.668414347488,252.903457690352,166.609335302124,196.014885656612,152.284759823102,215.266568412243,131.452917707884,223.388222300964,122.394051166518,142.136862082904,143.354307782976,418.106660336298,418.781364118253,211.742121367624,0,0,171.776033532292,405.764570837726,264.014181006693,550.130118262178,331.974242178234,277.937546232583,735.892517107229,1015.80251557308,971.919580147376,2023.03331350356,115.890452993819,164.550579198109,750.165937940507,593.046953793668,453.776304275927,436.612523342309,439.489349357842,578.156427344185,589.884057440746,540.26752024456,620.536516078442,480.318449246092,515.762986900107,479.617896396088,351.919462236979,305.221601249905,582.613402502635,454.135975565795,482.191951941468,356.445807809812,267.432234110501,533.272053113217,362.169521816376,429.255607059984,278.714348484868,324.166520812381,279.648977841005,202.557053529397,238.477471264804,221.392523604023,218.703511885954,161.078020049888,206.016800130631,185.202116524837,224.597028337168,154.767465434166,180.449745986036,164.349629859729,132.17268160216,147.223263102596,0,131.928345241329,143.605191552603,151.30140243556,337.135648379151,158.377929054923,299.691818400892,231.757245353059,210.991607412942,114.909565727915,205.979228246867,134.085834923953,253.6273197601,247.611092755312,190.727205588746,315.148832586122,135.985887221267,214.131771204574,272.099286576911,284.227971723018,422.759985092582,361.441943690507,309.483464285761,259.491020321939,206.756296481822,128.077080261848,224.121424349786,0,168.038808824585,136.819093127241,123.73502237531,142.870960207064,0,107.177489652686,169.370851681749,115.34756271966,264.385444007928,269.198324887426,261.931646506576,89.741702883356,114.812707377218,49.0884002548,179.803271181163,155.749462038378,191.653009748265,129.422964765891,175.646341793627,138.331126175826,117.666331198506,146.130005116962,130.777124672348,150.241643226419,0,192.919245946719,172.88898483538,150.821494168896,0,190.410363822963,0,154.970059679808,162.039848543454,175.956933711869,0,166.941839394289,199.348383388728,124.270931088915,0,214.643217423416,218.457023353725,180.499146605231,288.917557685414,232.880734378125,248.115574917747,92.8608233080179,105.040100963114,0,101.269455686375,91.9913708792251,797.451323261784,807.829829560302,804.210931414733,119.168371534721,0,84.6705423632156,94.0299817210411,101.516875396677,85.0195742279467,105.110565473057,258.899716125835,832.782997105467,346.538168082318,116.364465535365,90.7404686387993,107.338411946701,101.781621736725,0,91.7639763254665,84.7373492085688,122.130046012109,93.8561019982754,0,102.591126894732,75.4179897360677,107.527448862677,115.089525488597,113.173829803923,137.932842134648,75.5802040384069,0,81.1725029241735,74.4010193359343,72.2042969661533,0,0,71.2189341162897,0,116.457092161087,140.196148038168,140.148077154803,86.0569981230558,0,69.9000305964897,106.504823389495,83.0081426430225,109.202164084799,106.386896004091,0,0,115.118845251914,117.774320984148,107.366086716384,124.504106669783,122.250332214332,116.121667959345,0,0,117.46703074313,117.75279402623,107.435349644543,97.0937325701811,98.8666140703137,123.365711358497,121.599570758629,122.544488960793,113.765360971543,0,105.561459324488,114.295169661858,114.969053245916,48.6443549248359,139.016626592572,142.85514159611,177.11100710545,348.619395391119,344.25201876093,0,96.9196046695287,92.2252639075007,83.4599013998162,0,0,567.642927756716,652.956466525243,639.219277716359,607.948504300363,685.373597179692,697.080061485184],"Archive802_field2":[0,73.1618060781269,82.1197673901315,0,25.4783352027325,0,103.906814479474,0,0,84.6649058127953,9.93534670472473,9.71074252397888,88.4962942327975,97.7714735190719,58.9125313751261,62.3678826455459,85.0255711355047,77.839836831823,0,13.7716874301969,-16.6154869155039,65.8856075209296,35.6254597269124,64.7947661221773,73.7537891855786,74.407517683665,78.1054598638245,72.870419815122,81.5718680948751,83.709742392589,67.6328797999715,78.8371710134628,75.4555191781774,18.7380175334945,77.0307833055559,92.302462387017,88.6088454696808,91.52707284007,89.3959055173334,91.1739768041227,89.7451104245872,102.34079331846,98.7866787737947,95.6005790581317,92.5527980367483,90.5196047981555,93.583716666268,100.392208375786,95.6049085224324,96.4935227340476,85.698521096357,91.4381339951527,89.3131081363173,93.3250530423448,93.1010208434912,88.6321126054017,85.4532547592505,63.3242587992349,85.1347510963532,91.9956314025462,94.3816855444654,98.0612205180299,92.8544563775891,90.7508338491851,91.3002678032074,92.3045084223568,94.7601533708642,88.46194984749,97.0561590326406,89.5458379470816,90.3273383258419,101.700210451249,95.9236641936365,92.8655173650712,93.1215726750044,95.3350659616117,91.4267253914884,96.3391890981836,91.5188440993378,87.6388154801486,89.3032399667433,35.8154864316619,84.7867373026714,88.5363447039095,89.1688955265669,90.6569106720609,103.268511507171,99.548900317642,99.0884757123028,99.6442095215712,94.741921548239,97.1405684723315,94.1679942046726,0,0,96.6415506911691,19.9315476909607,15.6257216865314,15.7892838647691,18.509155643038,5.59946715328537,14.6906970843963,19.464535346859,0,53.6862342461765,0,6.24423699154011,25.655444783543,18.0441573522762,11.6873120172954,13.1570820372021,10.745592028925,14.89788542053,6.27893948176886,15.1866394391089,8.39135139095783,9.63256509225366,9.85768011497537,31.2396074176302,24.66484758281,14.5564383053253,0,0,12.2707465423084,28.5288278914263,18.5278323627736,8.75079928931978,24.2934156443985,20.307562261696,64.5037553666208,106.548304116962,93.13783953612,126.849475434516,8.07902618537533,11.4846357469784,62.0946870579771,74.1932794577594,19.2231963702431,27.6364544601472,38.0859785992225,94.4652612271822,83.5611227845719,86.9503139923546,92.1961680643498,34.5638779363116,69.8887814186154,40.7695596640107,24.5927442329104,23.0410116059259,87.4883231717977,93.6029605217234,87.6935802886362,26.4341879752718,19.9865394684138,122.616169503397,37.0296518147168,2.55195402779257,26.6121001775042,67.3442271438764,20.7098692410062,15.1125590127766,17.3865612241005,16.1093436868757,16.3547940684339,11.9300382883151,15.4233003966112,13.6247114806872,16.7989061109769,11.4393349109031,13.4890998643273,12.0823169809546,9.71535827649967,10.8448669101229,0,9.92028144162818,10.7409105082602,11.3953609284744,83.881219001034,53.5860705123999,84.141270579818,66.4345733424184,74.2509157289763,-24.4886466339644,59.8151951519027,56.9494454290974,77.6171951418496,79.0962533766778,69.4465398554766,85.3630733032861,49.8032966252594,68.7446733503243,67.3246227815904,76.623868858249,93.739837005891,88.6484192488888,82.8104818453506,18.7382140971162,14.6062562421883,9.87039374103986,18.2183451152773,0,12.2190317273498,10.330461446675,9.22009560068666,10.8037033798356,0,7.73132535297964,12.8271590238175,7.99706122245043,22.8955651779171,25.2431867346474,25.1723795222432,35.2760850312132,16.3278411315331,24.6175676988275,12.8655518253834,11.1638457300727,13.6750939318383,9.32575868680943,12.6763064066829,9.88237999015762,8.39926683350644,10.4726992367879,9.54699188871153,11.564716707776,0,14.9840665236799,13.0034628926574,11.7993444177864,0,22.543170727506,0,13.6711435396062,15.0662739808234,14.6688623452318,0,13.3354305307187,14.4358003457437,8.87919629541312,0,16.9644948428094,16.7718480951544,14.9609220006615,21.9596073948693,18.0121800221909,19.0359277164983,6.42090443706883,7.30221512649161,0,7.40641762227278,6.82154113865982,103.59402366321,99.3245103535164,97.1081960416974,5.53936363352867,0,4.90160528791088,7.26638165805337,3.87950990660497,3.72678864477387,7.91799372900359,18.6830516687478,60.061274427415,82.3685634060559,8.65959175093502,6.71800426633935,8.38459209824427,7.32077534217806,0,7.75510845899132,6.55361213450646,9.53278215744539,7.47787427343176,0,7.24107351008252,6.08013683543912,9.19985103844808,10.2846131093918,9.73338029552041,10.4334276238151,5.85590623446847,0,8.51149065290184,6.15152389801672,5.70448572271749,0,0,7.64129594764134,0,12.4395062906269,9.77914990632968,10.9095719779053,5.92601697314821,0,7.46672717662563,8.38507665851445,9.91059469662125,8.92857817305032,9.58913792044524,0,0,9.66764311613813,8.48828470168042,9.43200537999095,9.14819383069121,8.43384387761935,9.80019922843755,0,0,8.61859638093101,9.90686731718907,8.82850116420222,10.7970282486371,6.92221935632479,8.65263816666243,8.99930819081203,9.11985667920807,8.89894775187438,0,6.14025245374991,7.1887910544701,8.96937687180149,21.0430951605277,10.2567552973939,10.3631560304936,13.6163132988638,31.110425946126,26.0572811070927,0,5.9241823531301,6.04537630950035,5.99989329855246,0,0,79.3113715885842,84.8883176149195,78.4557953222386,79.9863240424013,88.9335870527232,87.5054010801347,0,63.781132206865,75.8139006803258,0,25.4783352027325,0,88.7578982342611,0,0,70.6164780687664,9.93534670472473,9.71074252397888,80.0973502180158,87.3810086128652,44.458580578157,62.3678826455459,75.6147547320187,61.0865527718136,0,13.7716874301969,-16.6154869155039,39.5088836293046,21.4542854928565,40.2822020891602,65.8837901573314,61.1615044800302,68.1181201248839,54.9867998447723,69.5171632375669,71.1433195139054,57.9061929511846,66.0546899337057,63.7121284071935,18.7380175334945,62.1931489314784,81.7687038886728,76.7985583972462,82.2830763697819,79.4531925505738,80.1976350295744,77.3961574229012,88.7027267464089,95.1178612734937,84.3935714062324,84.3470518571946,84.2649161648525,82.8727933584493,88.2416199170574,85.1122447239045,85.3261054316741,74.7475955086662,83.6837329750824,86.5856110817274,82.8461439982249,83.7574097483086,82.9670982280382,77.1025513219715,63.3242587992349,76.9849936900149,82.7984983917484,83.6374454481323,85.5168407081568,82.752781311244,82.0781297412729,81.0544597464679,82.3067721343672,85.9541301938759,79.1899082179921,85.370913297382,79.0460186777147,80.0297572421539,88.0630735634826,83.7922657889858,81.3377872666001,81.8800600056306,83.6173628755351,78.7912331874987,84.1221951801042,79.6479985939759,71.3398278187204,76.1695478934581,26.3445852442184,67.8190850768783,73.7690673643889,77.3656220857579,78.2816772864962,88.5283514585047,86.2926942773317,86.0687120789141,87.1326126504075,82.8738683442292,84.9434261809879,82.090459089253,0,0,96.6415506911691,19.9315476909607,15.6257216865314,15.7892838647691,18.509155643038,5.59946715328537,14.6906970843963,19.464535346859,0,53.6862342461765,0,6.24423699154011,25.655444783543,18.0441573522762,11.6873120172954,13.1570820372021,10.745592028925,14.89788542053,6.27893948176886,15.1866394391089,8.39135139095783,9.63256509225366,9.85768011497537,31.2396074176302,24.66484758281,14.5564383053253,0,0,12.2707465423084,28.5288278914263,18.5278323627736,8.75079928931978,24.2934156443985,20.307562261696,64.5037553666208,106.548304116962,81.9071455840083,126.849475434516,8.07902618537532,11.4846357469784,52.0953636030484,65.8550826532653,19.2231963702431,27.6364544601472,38.0859785992225,94.4652612271821,79.2693418586348,80.9182012346219,92.1961680643498,34.5638779363116,69.8887814186154,40.7695596640106,24.5927442329104,23.0410116059259,78.8507994891775,82.5641589336652,77.224252393034,26.4341879752718,19.9865394684138,122.616169503397,37.0296518147168,2.55195402779257,26.6121001775042,34.468511113639,20.7098692410062,15.1125590127766,17.3865612241005,16.1093436868757,16.3547940684339,11.9300382883151,15.4233003966112,13.6247114806872,16.7989061109769,11.4393349109031,13.4890998643273,12.0823169809546,9.71535827649968,10.8448669101229,0,9.92028144162818,10.7409105082602,11.3953609284744,58.4748146737011,30.5272384386911,62.1988992666533,33.7772462218065,52.4846486383759,-24.4886466339644,49.2033474104074,39.8647126865665,63.3161485373849,62.0961303849618,53.0573353228104,71.5603847487066,38.3817077896228,55.3538323633805,57.6126473467858,64.6554749661677,82.0902915749086,76.4130382679465,70.1745309146399,18.7382140971162,14.6062562421883,9.87039374103986,18.2183451152773,0,12.2190317273498,10.330461446675,9.22009560068666,10.8037033798356,0,7.73132535297963,12.8271590238175,7.99706122245043,22.8955651779171,25.2431867346474,25.1723795222431,23.4225897675985,9.08823010584369,17.8278621669113,12.8655518253834,11.1638457300727,13.6750939318383,9.32575868680943,12.6763064066829,9.88237999015762,8.39926683350644,10.4726992367879,9.54699188871153,11.564716707776,0,14.9840665236799,13.0034628926574,11.7993444177864,0,22.543170727506,0,13.6711435396062,15.0662739808234,14.6688623452318,0,13.3354305307187,14.4358003457437,8.87919629541312,0,16.9644948428094,16.7718480951544,14.9609220006615,21.9596073948693,18.0121800221909,19.0359277164983,6.42090443706883,7.30221512649161,0,7.40641762227278,6.82154113865982,88.8325972016987,86.6680584574757,85.1457227933074,5.53936363352867,0,4.90160528791088,7.26638165805337,3.87950990660497,3.72678864477387,7.91799372900359,18.6830516687478,60.061274427415,71.083233125687,8.65959175093502,6.71800426633935,8.38459209824427,7.32077534217807,0,7.75510845899132,6.55361213450646,9.53278215744539,7.47787427343176,0,7.24107351008251,6.08013683543912,9.19985103844808,10.2846131093918,9.73338029552041,10.4334276238151,5.85590623446847,0,8.51149065290184,6.15152389801672,5.70448572271749,0,0,7.64129594764134,0,12.4395062906269,9.77914990632968,10.9095719779053,5.92601697314821,0,7.46672717662563,8.38507665851445,9.91059469662125,8.92857817305032,9.58913792044524,0,0,9.66764311613813,8.48828470168042,9.43200537999095,9.14819383069121,8.43384387761935,9.80019922843755,0,0,8.61859638093101,9.90686731718907,8.82850116420222,10.7970282486371,6.92221935632479,8.65263816666243,8.99930819081203,9.11985667920807,8.89894775187438,0,6.14025245374991,7.1887910544701,8.9693768718015,21.0430951605277,10.2567552973939,10.3631560304936,13.6163132988638,31.110425946126,26.0572811070927,0,5.9241823531301,6.04537630950035,5.99989329855246,0,0,69.7227479277068,77.0919802710661,71.5679349064321,71.8627845054408,80.5758790581545,80.338839587552,0,36.3171904070069,54.3044975033606,0,25.4783352027325,0,68.7704648992624,0,0,56.7903993747356,9.93534670472473,9.71074252397888,73.3432436162835,63.5505958209268,21.1431660690037,62.3678826455459,47.9912876617468,39.2837098204075,0,13.7716874301969,-16.6154869155039,28.7668973368207,7.95262059893806,19.7014820504545,41.9022079040035,32.8382184720969,61.9411065132936,29.4028356876838,42.164771696843,50.6393680434975,32.6262843023611,50.6177431117806,53.1804489965057,18.7380175334945,56.7858957775905,61.6734102159757,57.4298843833672,72.4618292889401,54.8896339337938,64.7654890070572,66.4851233218131,68.6577956163437,93.8764486495737,68.1315494490785,78.1949498840768,78.9116837842373,65.9606829913644,66.5055582379903,63.1421225366694,66.0413789918334,49.8285066982512,57.2237608757764,84.8332458447108,70.5764003088941,59.1267836375847,78.7219472789643,72.7450980673482,63.3242587992349,70.5009287627741,72.6390313448988,70.0091837003461,68.3497862900127,69.6282692831782,73.6621617038566,69.7387171988708,59.3278445134902,60.3132592546435,70.6235881610863,52.6925304024978,64.6431746758226,67.7798737851025,63.2481421483454,65.5835916153095,63.6932164408458,67.0087404725257,68.1587414933069,51.5167188323805,60.5347586867453,58.5728049466084,51.4838210844404,53.6682626380703,12.757795341199,34.6879178774178,44.2256101781723,41.320747329349,43.9074432724086,66.7604597474361,66.9355762608773,64.3213441035085,58.5774583001271,52.9870259787833,57.9893344073193,56.2235183135647,0,0,96.6415506911691,19.9315476909607,15.6257216865314,15.7892838647691,18.509155643038,5.59946715328537,14.6906970843963,19.464535346859,0,53.6862342461765,0,6.24423699154011,25.655444783543,18.0441573522762,11.6873120172954,13.1570820372021,10.745592028925,14.89788542053,6.27893948176886,15.1866394391089,8.39135139095783,9.63256509225366,9.85768011497537,31.2396074176302,24.66484758281,14.5564383053253,0,0,12.2707465423084,28.5288278914263,18.5278323627736,8.75079928931978,24.2934156443985,20.307562261696,64.5037553666208,106.548304116962,79.6455918136909,126.849475434516,8.07902618537533,11.4846357469784,46.3250320274312,62.4017464485494,19.2231963702431,27.6364544601472,38.0859785992225,94.4652612271822,76.2723071726606,74.3476301872435,92.1961680643498,34.5638779363116,69.8887814186154,40.7695596640107,24.5927442329104,23.0410116059259,69.5675989325862,76.0930127570146,63.2358116358822,26.4341879752718,19.9865394684138,122.616169503397,37.0296518147168,2.55195402779257,26.6121001775042,28.0865623097803,20.7098692410062,15.1125590127766,17.3865612241005,16.1093436868757,16.3547940684339,11.9300382883151,15.4233003966112,13.6247114806872,16.7989061109769,11.4393349109031,13.4890998643273,12.0823169809546,9.71535827649967,10.8448669101229,0,9.92028144162818,10.7409105082602,11.3953609284744,41.4849307126037,12.3003500750441,34.7583639652961,17.3277288737259,21.9174006480983,-24.4886466339644,23.2746424673538,15.2077926327495,28.3158165909504,27.5432291523307,21.284080047093,35.472614140973,16.3380579952358,24.0429316635044,30.0803280109791,31.4653025401793,46.4786182652994,40.1872788312789,34.397144371083,18.7382140971162,14.6062562421883,9.87039374103986,18.2183451152773,0,12.2190317273498,10.330461446675,9.22009560068666,10.8037033798356,0,7.73132535297964,12.8271590238175,7.99706122245043,22.8955651779171,25.2431867346474,25.1723795222432,11.4479588763415,2.29530444281445,13.7312553606275,12.8655518253834,11.1638457300727,13.6750939318383,9.32575868680943,12.6763064066829,9.88237999015762,8.39926683350644,10.4726992367879,9.54699188871153,11.564716707776,0,14.9840665236799,13.0034628926574,11.7993444177864,0,22.543170727506,0,13.6711435396062,15.0662739808234,14.6688623452318,0,13.3354305307187,14.4358003457437,8.87919629541312,0,16.9644948428094,16.7718480951544,14.9609220006615,21.9596073948693,18.0121800221909,19.0359277164983,6.42090443706883,7.30221512649161,0,7.40641762227278,6.82154113865982,69.4081739869639,68.4787138074085,68.8031297163895,5.53936363352867,0,4.90160528791088,7.26638165805337,3.87950990660497,3.72678864477387,7.91799372900359,18.6830516687478,60.061274427415,37.7484944579581,8.65959175093502,6.71800426633935,8.38459209824427,7.32077534217806,0,7.75510845899132,6.55361213450646,9.53278215744539,7.47787427343176,0,7.24107351008252,6.08013683543912,9.19985103844808,10.2846131093918,9.73338029552041,10.4334276238151,5.85590623446847,0,8.51149065290184,6.15152389801672,5.70448572271749,0,0,7.64129594764134,0,12.4395062906269,9.77914990632968,10.9095719779053,5.92601697314821,0,7.46672717662563,8.38507665851445,9.91059469662125,8.92857817305032,9.58913792044524,0,0,9.66764311613813,8.48828470168042,9.43200537999095,9.14819383069121,8.43384387761935,9.80019922843755,0,0,8.61859638093101,9.90686731718907,8.82850116420222,10.7970282486371,6.92221935632479,8.65263816666243,8.99930819081203,9.11985667920807,8.89894775187438,0,6.14025245374991,7.1887910544701,8.96937687180149,21.0430951605277,10.2567552973939,10.3631560304936,13.6163132988638,31.110425946126,26.0572811070927,0,5.9241823531301,6.04537630950035,5.99989329855246,0,0,41.4700691186745,50.5098778223897,49.0486650662979,45.7392262257114,53.7495605202943,55.0686492568336],"Archive802_field3":[0,0,0,0,348.990647921578,0,0,0,0,0.0238585490122619,128.685566142312,138.838102708245,0.0380315324107109,0,0,419.872586136528,0.000968938377613881,0.0570750275344404,0,361.654332488112,481.406456250669,3586.41690534263,0,5675.47609016156,0,0.00714572236629881,5896.83537498207,0.0353619593140903,0.00502407856225644,0.00114323395232337,0,0.0241931843970738,0.0670688484642648,845.767057617066,7173.17247526926,0.000655433823005597,0.00435095742199975,0.000128807237583999,0.000840666555593181,0.000355750906927291,0.00294388598302938,0,13252.0617971735,0.000105746352101647,0.056487410990519,0.0538155447754396,2.90656504878758e-05,0,3.52967913952777e-05,6.07943116994243e-05,0.000131835550706365,0,8599.50347449154,0.0052406131397816,0.000100722450017714,0.187019254580088,7862.0770548541,442.884899512138,0.0773872783660238,0.00673380890958593,0.000346567510605368,0.000519396417767624,0.0010272542239732,0.0273618802196902,0.000920209874635246,0.000320507139100707,0,0.0889151030110769,0,0.00164019056522651,0.00638166206639328,0,0.000191592452687823,0.000855958577328542,0.00146141715476001,0.000954903588966713,0.000925277911382013,0.000276523667674195,0.00101237526908333,0.0474038330368291,0.00454125465211423,0,0.00192255632146285,0.00922262642913355,0,0.00133848211883514,0,0.000279927830085051,4.45700899741395e-05,0,0.000489782071306208,1.57656260303133e-05,7.04200073607498e-05,0,0,618.170888505566,325.322140116908,482.448585428833,414.367232570003,299.976795619935,258.209500493542,204.146253755706,312.923600790987,0,458.675468858541,0,172.948438133684,345.622152827092,253.546506816293,167.01885853021,196.456083866799,152.663504219546,215.781611081124,131.602876316057,223.903988024085,122.681441570864,142.462977005192,143.692929349107,419.272380612863,419.50735959458,212.242006263515,0,0,172.213864574361,406.766544659733,264.663685153433,550.200085519523,332.862158575189,278.678651163833,738.714645403204,1021.37596461708,5857.43187380083,2027.00762388786,116.171792478302,164.950973717332,4292.10339441529,4950.01991660567,454.183645264985,437.486681881563,441.136849325732,585.823518585777,4502.9453713968,13216.7365898128,627.348706697447,481.560861788091,520.476973242798,481.347907216372,352.777957700513,306.090272618076,0.0528689147082186,6531.38874998092,0.063689787067843,357.424910133693,268.178244643743,547.187614201632,364.057958960992,429.263498866802,279.982200402882,2129.87985813761,280.41497507519,203.120183958392,239.110601451895,221.977994701764,219.31433890867,161.519328812157,206.593480231424,185.702735312604,225.224566110062,155.189755040556,180.953359237592,164.793275810123,132.529362729407,147.622263766647,0,132.300892320789,144.006419515305,151.730038557896,0.061305311311694,0.0488573784767296,0.00504372160433993,5554.69035897853,0.0187423065798621,117.490059342693,0,0.000842120083724755,0.000885768947671351,0.00305826407389168,0.00307784462434696,0.000566418588599601,0,0.000421697173767797,0,0.000210198662637872,0,0.000393059033902395,0.000118146520594357,260.166870626987,207.271723706999,128.456955540362,224.860878349646,0,168.482598509714,137.208642871226,124.078167645739,143.27897602448,0,107.456068143742,169.856016111746,115.624539621847,265.375192950834,270.379523921411,263.138688649617,4387.09126263245,1993.51794369392,0,180.263092827269,156.149157233656,192.140402127269,129.758609712874,176.103298828236,138.683770619364,117.965804277497,146.50489731385,131.125223721676,150.686201454198,0,193.500444782655,173.377439152909,151.282470198612,0,191.740385290267,0,155.572059737704,162.738921754403,176.567472721895,0,167.473763423143,199.870519120068,124.587818002026,0,215.312757445838,219.100068917738,181.118269454697,289.751120664309,233.576470845399,248.844949274066,93.0826040953743,105.293681830249,0,101.539998443422,92.2440015909306,0,0.000225875743650072,0.00119498162576341,119.2971210823,0,84.8123537848305,94.3103827403699,101.591042400724,85.1012703691555,105.408441355445,259.573116937079,834.946729034742,0,116.68632855199,90.9888920940839,107.665480512366,102.044644711399,0,92.0911705438151,84.9904754054654,122.501625501637,94.153611269561,0,102.846441392571,75.6627506826025,107.920393449274,115.548241797328,113.591714388013,138.326992853474,75.8067873068324,0,81.6176070575543,74.6549615443641,72.4293540374802,0,0,71.6277618276558,0,117.119689771952,140.536924194589,140.572175753746,86.2608661101763,0,70.2977619817707,106.834492956981,83.5977580438017,109.566647901316,106.818262737234,0,0,115.524161434919,118.079898076451,107.779675892331,124.839842691691,122.540994183272,116.53456969915,0,0,117.782865847679,118.168883631595,107.797569173029,97.6923022567115,99.1087311746928,123.668870258574,121.932215811701,122.88345676745,114.112948545387,0,105.739962907957,114.521099382192,115.318477225565,53.0009228008478,139.394586858366,143.230640627233,177.633802606091,350.005063977525,345.237029604997,0,97.1005538749691,92.4232447311025,83.6753393671635,0,0,0.000520586270486359,0.000105052319599777,0,0.000148098101987692,8.78723756946913e-06,0,0,0,0,0,348.994605644596,0,0,0,0,9.42219602831908,128.68566384428,138.838203750856,20.330869996597,0,0,420.021013398245,0.0254498829213574,12.6573840832168,0,361.658830406424,481.484865858124,3586.42242276007,0,5675.47410112491,0,1.89387014209596,5896.83089031935,13.2286245946739,3.01156791086781,3.94830534534018,0,6.76766930960531,29.9748306406498,845.792150063445,7173.168410087,0.64726854351771,3.14537569566477,14.1944109255335,0.178287918861096,0.0267941886033047,13.3195826061049,0,13252.0526301102,0.172104700564685,46.6723881015582,23.9699115525265,0.625595643636042,0,0.0804528175086043,0.00142040807588835,1.96271752633088,0,8599.55263578694,2.53657918210561,0.00777160992165475,51.6510574237169,7862.07274941901,443.365254486772,35.2254583533367,0.228864161877946,0.941493361270053,0.292644023055753,2.77357659968492,14.4722000121753,1.07559029645372,0.181198669914212,0,4.63376007054998,0,10.2500224768656,5.28634252340214,0,0.336662855865883,1.93100243158025,0.979745432811531,0.347852231059234,0.725242772998374,0.651686204136266,2.37187737407467,6.59339456718782,6.10266780184499,0,1.12302043500034,1.02364817754136,0,0.179668264697869,0,0.13923072861297,0.179455012737581,0,0.133977207113168,0.255190587565156,0.579483192973453,0,0,618.406560769383,325.324916596083,482.449064550946,414.379882520912,299.980954821094,258.210206795494,204.146161991657,312.926629100765,0,458.680817026773,0,172.948528161598,345.625798927914,253.546394777381,167.018971850733,196.456523283574,152.663673745158,215.781892950567,131.602915027219,223.904123791555,122.681507700507,142.463059637436,143.693027383061,419.276747161077,419.854369189403,212.24230695283,0,0,172.213988925841,406.767659753129,264.664035757985,550.211188872986,332.863333146158,278.679512718714,738.787648106399,1021.7987387564,5857.4497780147,2027.87503295082,116.171838972057,164.951100160555,4292.11850128974,4950.03136946823,454.188016151058,437.586280804828,441.15202282642,587.882725366865,4502.98058374031,13216.7319091481,627.3490869418,481.641181187077,520.487856639508,481.373480155832,352.77770770742,306.090837160068,33.9769504837718,6531.40139728393,37.6166721883784,357.427679540501,268.178267363879,547.290879357392,364.058458178079,429.268305953951,279.981996258956,2129.90178821868,280.415448110726,203.120396040635,239.110873984563,221.978197322238,219.314690846302,161.519477514266,206.593697760864,185.702905278852,225.224900415123,155.18987557504,180.953532663418,164.793435867393,132.529523370973,147.622363278351,0,132.300974310555,144.006507713171,151.730170705842,23.9450421615839,9.54534188379599,4.55259763573237,5554.68834000355,3.83353866176517,118.077248128747,0,4.4529884110052,0.237302821228599,0.334555823793475,1.53745065363285,0.228602930453198,0,0.233777737560938,0,0.0792567228510994,0,0.0769485412355752,0.0432102436625773,260.167633525318,207.272025137471,128.457030354916,224.863826801023,0,168.482743910939,137.208739471012,124.078342530161,143.279098129687,0,107.456105863697,169.856182314495,115.624519944342,265.384618894465,270.380992523196,263.140024157582,4387.08921163521,1993.53288771137,0,180.263246300282,156.149281418685,192.140586083791,129.758679803351,176.10345698779,138.683854255654,117.96590598357,146.505009321055,131.125314039319,150.686323168556,0,193.500656326497,173.3776115817,151.282611746152,0,191.740989128627,0,155.572287532797,162.739269871456,176.567334740754,0,167.473933342713,199.870762828888,124.587876039963,0,215.313089615366,219.100638534423,181.118404432213,289.751484271946,233.576773413044,248.845609677625,93.0825904598986,105.293768424393,0,101.539933808245,92.2440527547331,0,0.113371763929582,0.350582395372858,119.297147726944,0,84.8123362597787,94.3107342263508,101.59104969797,85.101228159527,105.408506452439,259.573195766187,835.312899442434,0,116.686403781196,90.9889703544633,107.66553823474,102.044720696907,0,92.091352618156,84.9905251326656,122.501713574209,94.1536443530301,0,102.846516512034,75.662789569746,107.920467367191,115.548295372323,113.591737343903,138.327098872285,75.8067377739197,0,81.6176237411633,74.6550246614084,72.4293347299061,0,0,71.6281742194592,0,117.119699979891,140.537102726008,140.572304674464,86.2608147130147,0,70.298390645803,106.834702606811,83.5988530983903,109.566567742781,106.818769295082,0,0,115.525506154899,118.07981378606,107.780415912766,124.839981852351,122.540937272702,116.536885768366,0,0,117.783186645452,118.16905627591,107.799463806926,97.6939770718895,99.1086500246458,123.671317388243,121.93231125,122.88356755605,114.112972331203,0,105.740827404992,114.523156286605,115.318401469174,53.6468233300927,139.39470428769,143.230737408693,177.63394338441,350.012939500251,345.236869540711,0,97.1021386977225,92.4238405773861,83.675572999015,0,0,0.785365863624121,0.09052022250003,0,0.161443827187398,0.0247956577483218,0,0,0,0,0,349.034980859433,0,0,0,0,37.6172084662394,128.686142856906,138.838724081272,81.2093853891556,0,0,422.123954342762,0.104706346818285,50.8007614154705,0,361.757210373461,482.531394551406,3586.45607205966,0,5675.47347613132,0,7.55404340128484,5896.84417339531,52.8084125007531,12.0613438791581,15.7966510832176,0,26.9980976852305,120.100529107992,846.089121499838,7173.25368558568,2.5871078726018,12.568449910393,56.7772572804209,0.710629675777592,0.106109501692477,53.2694987664704,0,13252.1090204375,0.688736041315037,186.520090173261,96.0410928444319,2.5022953775927,0,0.32170537966023,0.00586401523865344,7.85126561197566,0,8599.99969094369,10.1620385678417,0.0313886070366724,207.165287458608,7862.07771933545,450.208783732154,140.669671578248,0.935658074240495,3.76493374254838,1.17213428147631,11.0973881614115,57.9708856893601,4.30512181543879,0.723833158239542,0,18.8017855912331,0,41.0050104791582,21.1645150798076,0,1.3472262008216,7.72657760205304,3.9233659827104,1.39427363500382,2.89819525825933,2.6075743875481,9.49054662210596,26.2313667696408,24.4242949713363,0,4.48631407103696,4.06692483087801,0,0.714657612434974,0,0.557762697942132,0.717953761220248,0,0.534439482238747,1.02071505338254,2.31814403191595,0,0,621.746479380967,325.352646244094,482.477221863076,414.6229404399,300.026572785842,258.215518020997,204.146235865928,312.957101384532,0,458.796892041887,0,172.948956245186,345.6635187976,253.546456657161,167.019557152964,196.459747614606,152.664684864843,215.78364150773,131.603074574025,223.904800676551,122.68183473587,142.463466245803,143.693532032124,419.321526072885,424.796487943697,212.24427774511,0,0,172.214639077907,406.807004523329,264.666180286614,550.436310588664,332.872894817205,278.686138899283,740.045568443171,1027.70759572256,5857.59171624451,2040.06741319817,116.172044864269,164.951780627769,4292.23844187798,4950.11501440512,454.23112461397,438.940161026119,441.441573053312,617.187516685764,4503.3097423744,13216.7248491167,627.350818130965,482.990747757864,520.708385970758,481.694145103866,352.779828617568,306.094564778012,135.749195190962,6531.50158631153,150.657758114718,357.454150447318,268.178342727448,548.686986831949,364.061313411859,429.317730110494,279.982354332186,2130.11227569908,280.418566518778,203.121591032258,239.112449861982,221.979302036439,219.316907267919,161.520275657384,206.594903038574,185.703830371312,225.226966017726,155.190506147236,180.954461747855,164.794310585679,132.530463356386,147.6228527429,0,132.301369027071,144.006930779512,151.730860651777,95.5962527124003,38.3279396706141,18.1952593781164,5554.68526485182,15.2779277273211,126.43782102226,0,17.8094272837696,0.946553978071391,1.32904850295225,6.14056908065833,0.912712466047,0,0.933845858722447,0,0.316396295416484,0,0.306614987840595,0.172486535088529,260.173567278776,207.273934843572,128.457377283584,224.893590081392,0,168.483524411322,137.209215781347,124.079375023801,143.279722614386,0,107.456259303321,169.857081982708,115.624475350402,265.567432823308,270.393399252074,263.181360717416,4387.08764881363,1993.67030637314,0,180.264077175302,156.149940333191,192.141617843071,129.759010911505,176.104304551066,138.684262390493,117.966467685604,146.505596025352,131.125775389175,150.686936061997,0,193.501804248756,173.378557967206,151.28335223017,0,191.745264477792,0,155.573595085993,162.741495515418,176.567769145063,0,167.474825987677,199.872230538356,124.588144476712,0,215.315096288818,219.104756205723,181.119060065735,289.753594465853,233.578507297749,248.850305046994,93.0825606548882,105.29423903189,0,101.540270073315,92.2443066963002,0,0.454164682949276,1.40591452636872,119.297252053861,0,84.8123050525511,94.313727398528,101.591073901514,85.1012824095113,105.408834492868,259.57352616585,840.421777457216,0,116.686761371379,90.9893661610085,107.665795922,102.045093673227,0,92.0925310040065,84.9907498877636,122.502135459022,94.1537761180076,0,102.846880175284,75.6629575330854,107.920810129057,115.548522630865,113.591820200436,138.327623898004,75.8067831216201,0,81.6176832529344,74.6553354611804,72.429296538118,0,0,71.6316084606912,0,117.119733287559,140.538103881798,140.572967321095,86.2608474690425,0,70.3042964772197,106.8360131846,83.6098184582103,109.566989723512,106.823032309901,0,0,115.539303509157,118.080246310587,107.787129161049,124.840764062264,122.540937103207,116.562740944586,0,0,117.785582918822,118.170160368287,107.819942011434,97.7117563610992,99.1094330468138,123.698657881028,121.932801360401,122.884177702712,114.113064060183,0,105.749276143293,114.546119210581,115.319561340452,62.3626182598164,139.395330353834,143.231216410657,177.634636502488,350.101066795161,345.236871388248,0,97.1197666273019,92.4295435880993,83.6774086141968,0,0,3.13990169568503,0.362396046958921,0,0.645331014443628,0.099208992705996,0],"Archive802_field4":[4497885,4497885,4497885,4497885,8995770,4497885,8995770,4497885,8995770,7871298.75,7871298.75,7871298.75,8995770,7871298.75,4497885,6465709.6875,6465709.6875,6465709.6875,4497885,5552076.796875,5552076.796875,6026463.10546875,4497885,5301706.24511719,4497885,5552076.796875,7058692.57324219,5813398.00994873,6424362.76116103,7238783.671875,4497885,7069949.09699671,7552860.57983978,7748809.40440409,8220793.41669313,8109463.98521509,7834189.59295337,8656992.48588036,7392944.87533169,8333523.7408863,8347757.88451305,8714652.1875,8732919.59689139,8755173.78361078,8617597.6258377,8891197.79149865,8498981.6162286,8363254.921875,8134846.69921875,8519780.08330749,7042679.58860458,6465709.6875,8961406.55860475,8978688.53810902,7535813.31642531,8966886.83493223,8995757.46915095,8993229.565522,8872168.80252451,8871415.49110469,8891962.18710428,8987217.36775315,8705690.15528142,8973590.30799432,8978994.97080258,7791062.92193595,7238783.671875,8951743.86360458,7871298.75,8665314.32274517,8872407.93292389,8714652.1875,8911107.61924746,8776742.43805529,8926585.64896621,8991735.21082796,8151067.46119872,8654342.92828399,8499540.59348858,8009718.03631726,8194441.4619544,4497885,7284443.99861907,7803966.7893475,6465709.6875,7521498.51938046,8925490.546875,8975415.51505327,8854438.89242292,8363254.921875,8134846.69921875,8449406.09339957,8399530.97521212,4497885,4497885,7168320.92286435,6974974.47743194,7359653.19704895,6744153.09401383,6265072.35569413,5516393.47689994,6500180.29954669,8009493.28588366,4497885,7979408.3127146,4497885,5661013.85822132,7584091.63104652,7236176.1268072,7209355.41952925,7037225.03879418,6438114.00515706,7928342.360184,5519864.30472687,7536627.89339564,6596420.08478296,6737695.96794518,7373443.20780777,8741888.36433575,8310744.97963721,5786487.58506402,4497885,7871298.75,8061536.51890088,8399772.84236341,8534998.86742833,8575394.3804354,8600285.50837027,8905118.58888261,8902198.00288345,8664701.74501549,8530124.64113434,8850565.08831266,7129980.72286276,7635041.74828717,7813391.84610416,8944633.90073837,8732023.68883659,8899056.98898285,8974513.29352146,8554315.34311493,8794173.81947627,8588684.52639528,8720847.58524146,8277604.60579911,8986009.75841626,8903836.82862062,8889075.11176448,8851153.7175097,8756413.90432745,8127846.6936193,8412934.92117438,8954235.31710937,8972993.77239382,8201659.47870175,7359291.86222649,7876487.57392743,7797822.50504194,7500171.11240129,8990257.0578066,8969396.05648018,8964780.44533589,8769056.2468977,8990409.00126023,8965214.96459595,8719768.76091207,8992591.52791747,8906299.75864804,8915064.89120058,8870718.6560871,8991098.13929634,8995161.99881054,8994163.8040432,7871298.75,8797906.42194242,8926754.08196867,8720498.56643877,7678497.51615296,6431991.97260478,7464615.73862767,7100419.87773734,6713673.18079141,6670577.53055171,4497885,5635891.37364367,6139258.24383318,6643327.35877706,5916385.09316725,6895642.08804367,4497885,5378247.68735993,4497885,5548455.19221379,7238783.671875,6869816.54296875,6283143.23431494,8758471.71523781,8414798.54194536,8398591.97759517,6152708.99308908,4497885,8619799.64967709,8649846.16249492,8592439.79585931,8468921.91860137,8714652.1875,8056039.42222479,8552675.41449997,8825764.36520671,6667885.46600869,7157344.5394451,5677427.93583664,5484927.43829301,6086192.46825551,4497885,8418772.7467779,8246823.07900011,8684944.10017805,8438375.58584846,8862108.85890889,8250386.46248917,7795940.18058919,8619603.50247808,8838169.71007025,8174400.63393667,4497885,8125567.37878474,8271062.20909632,7569072.21833856,4497885,5307031.83371452,4497885,5750996.01794653,5305409.50670216,6166101.61346516,4497885,6981678.51465011,8867271.49189755,7609265.39422204,6465709.6875,7289130.93296382,7864992.01751786,6732413.34130215,8444380.80823543,8285405.15606632,8656804.5398984,6849068.91231869,7219862.33111909,4497885,7773704.3695246,6131810.95814701,8925490.546875,8837641.23046875,8914599.80447121,5635615.38033652,4497885,5310694.95802181,5671456.39710335,5490496.77860428,5967775.34267065,6300566.52401312,8192993.89218697,8974624.32475771,5552076.796875,7967808.41394903,6949704.82514333,7287941.65240088,7571157.35628321,6465709.6875,7426987.26840721,6011487.53220686,7211416.75208677,6680363.70365165,4497885,6631685.22432406,5950979.22054858,5653431.61635042,6528032.81909474,5770762.62071373,7702492.61901913,6519344.61088082,4497885,5208595.72841275,5192754.51686616,5343315.68006016,4497885,5599705.48953532,5369671.59394657,4497885,5232766.98186821,6326585.8427348,6868643.85057301,7019064.17591711,7238783.671875,6085415.08614521,5245575.66149562,6974573.71266665,8502874.24447803,8670754.10011292,8925490.546875,8363254.921875,8878249.00165456,8985923.07486605,8134846.69921875,8936442.78315656,8963334.79190305,8981402.62143199,8714652.1875,8925490.546875,8985835.38098601,8822741.71471257,8429333.98692595,7782602.73091805,7836283.06121511,8927130.28759653,8846517.24564643,8633694.52399208,8234422.62034372,8363254.921875,8134846.69921875,8549693.01316112,8499184.63637252,5314241.14194684,8959864.06028019,8810784.83108073,7585693.28746049,8220135.81491658,8693047.95185494,7238783.671875,7572611.07421875,6953977.83314938,6386363.29966675,4497885,5552076.796875,5552076.796875,5733426.92761492,4497885,5204587.46087332,6638302.31322828,5552076.796875,3373413.75,3373413.75,3373413.75,3373413.75,6746827.5,3373413.75,6746827.5,3373413.75,6746827.5,5903474.0625,5903474.0625,5903474.0625,6746827.5,5903474.0625,3373413.75,4849282.265625,4849282.265625,4849282.265625,3373413.75,4164057.59765625,4164057.59765625,4519847.32910156,3373413.75,3976279.68383789,3373413.75,4164057.59765625,5294019.42993164,4360048.50746155,4818272.07087077,5429087.75390625,3373413.75,5302461.82274753,5664645.43487984,5811607.05330307,6165595.06251985,6082097.98891131,5875642.19471503,6492744.36441027,5544708.65649877,6250142.80566472,6260818.41338479,6535989.140625,6549689.69766854,6566380.33770808,6463198.21937827,6668398.34362398,6374236.21217145,6272441.19140625,6101135.02441406,6389835.06248062,5282009.69145343,4849282.265625,6721054.91895356,6734016.40358176,5651859.98731898,6725165.12619917,6746818.10186322,6744922.1741415,6654126.60189338,6653561.61832852,6668971.64032821,6740413.02581486,6529267.61646107,6730192.73099574,6734246.22810193,5843297.19145197,5429087.75390625,6713807.89770344,5903474.0625,6498985.74205888,6654305.94969291,6535989.140625,6683330.7144356,6582556.82854147,6694939.23672466,6743801.40812097,6113300.59589904,6490757.196213,6374655.44511643,6007288.52723795,6145831.0964658,3373413.75,5463332.99896431,5852975.09201062,4849282.265625,5641123.88953534,6694117.91015625,6731561.63628995,6640829.16931719,6272441.19140625,6101135.02441406,6337054.57004968,6299648.23140909,3373413.75,3373413.75,5376240.69214826,5231230.85807395,5519739.89778671,5058114.82051037,4698804.2667706,4137295.10767495,4875135.22466002,6007119.96441275,3373413.75,5984556.23453595,3373413.75,4245760.39366599,5688068.72328489,5427132.0951054,5407016.56464694,5277918.77909563,4828585.5038678,5946256.770138,4139898.22854515,5652470.92004673,4947315.06358722,5053271.97595889,5530082.40585582,6556416.27325181,6233058.73472791,4339865.68879802,3373413.75,5903474.0625,6046152.38917566,6299829.63177255,6401249.15057124,6431545.78532655,6450214.1312777,6678838.94166196,6676648.50216259,6498526.30876162,6397593.48085076,6637923.8162345,5347485.54214707,5726281.31121538,5860043.88457812,6708475.42555377,6549017.76662744,6674292.74173714,6730884.9701411,6415736.50733619,6595630.3646072,6441513.39479646,6540635.68893109,6208203.45434933,6739507.3188122,6677877.62146546,6666806.33382336,6638365.28813228,6567310.42824559,6095885.02021447,6309701.19088078,6715676.48783203,6729745.32929536,6151244.60902631,5519468.89666987,5907365.68044557,5848366.87878145,5625128.33430097,6742692.79335495,6727047.04236014,6723585.33400192,6576792.18517328,6742806.75094517,6723911.22344697,6539826.57068405,6744443.6459381,6679724.81898603,6686298.66840044,6653038.99206533,6743323.60447226,6746371.49910791,6745622.8530324,5903474.0625,6598429.81645682,6695065.5614765,6540373.92482907,5758873.13711472,4823993.97945358,5598461.80397075,5325314.908303,5035254.88559355,5002933.14791378,3373413.75,4226918.53023275,4604443.68287489,4982495.51908279,4437288.81987544,5171731.56603275,3373413.75,4033685.76551995,3373413.75,4161341.39416034,5429087.75390625,5152362.40722656,4712357.4257362,6568853.78642836,6311098.90645902,6298943.98319638,4614531.74481681,3373413.75,6464849.73725782,6487384.62187119,6444329.84689448,6351691.43895103,6535989.140625,6042029.56666859,6414506.56087498,6619323.27390504,5000914.09950651,5368008.40458383,4258070.95187748,4113695.57871976,4564644.35119163,3373413.75,6314079.56008343,6185117.30925009,6513708.07513354,6328781.68938634,6646581.64418167,6187789.84686688,5846955.1354419,6464702.62685856,6628627.28255269,6130800.4754525,3373413.75,6094175.53408856,6203296.65682224,5676804.16375392,3373413.75,3980273.87528589,3373413.75,4313247.0134599,3979057.13002662,4624576.21009887,3373413.75,5236258.88598758,6650453.61892316,5706949.04566653,4849282.265625,5466848.19972286,5898744.0131384,5049310.00597661,6333285.60617657,6214053.86704974,6492603.4049238,5136801.68423902,5414896.74833932,3373413.75,5830278.27714345,4598858.21861026,6694117.91015625,6628230.92285156,6685949.85335341,4226711.53525239,3373413.75,3983021.21851636,4253592.29782752,4117872.58395321,4475831.50700299,4725424.89300984,6144745.41914023,6730968.24356828,4164057.59765625,5975856.31046177,5212278.6188575,5465956.23930066,5678368.01721241,4849282.265625,5570240.45130541,4508615.64915514,5408562.56406508,5010272.77773874,3373413.75,4973763.91824304,4463234.41541143,4240073.71226282,4896024.61432106,4328071.9655353,5776869.46426435,4889508.45816062,3373413.75,3906446.79630956,3894565.88764962,4007486.76004512,3373413.75,4199779.11715149,4027253.69545993,3373413.75,3924575.23640116,4744939.3820511,5151482.88792975,5264298.13193783,5429087.75390625,4564061.31460891,3934181.74612172,5230930.28449998,6377155.68335852,6503065.57508469,6694117.91015625,6272441.19140625,6658686.75124092,6739442.30614954,6101135.02441406,6702332.08736742,6722501.09392729,6736051.96607399,6535989.140625,6694117.91015625,6739376.53573951,6617056.28603443,6322000.49019446,5836952.04818854,5877212.29591133,6695347.7156974,6634887.93423482,6475270.89299406,6175816.96525779,6272441.19140625,6101135.02441406,6412269.75987084,6374388.47727939,3985680.85646013,6719898.04521014,6608088.62331055,5689269.96559537,6165101.86118743,6519785.96389121,5429087.75390625,5679458.30566406,5215483.37486203,4789772.47475007,3373413.75,4164057.59765625,4164057.59765625,4300070.19571119,3373413.75,3903440.59565499,4978726.73492121,4164057.59765625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-5.11350322085491e-10,0,5.11350322085491e-10,0,0,0,0,0,0,0,-5.11350322085491e-10,0,0,0,0,0,-1.02270064417098e-09,1.02270064417098e-09,0,0,0,5.11350322085491e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5.11350322085491e-10,0,0,0,0,-5.11350322085491e-10,0,1.02270064417098e-09,5.11350322085491e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.02270064417098e-09,0,0,0,0,0,0,0,-5.11350322085491e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-5.11350322085491e-10,0,0,0,0,0,0,-5.11350322085491e-10,5.11350322085491e-10,0,0,0,0,0,5.11350322085491e-10,5.11350322085491e-10,0,0,-5.11350322085491e-10,0,0,0,0,1.02270064417098e-09,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.02270064417098e-09,-1.02270064417098e-09,0,0,0,0,0,0,0,0,1.02270064417098e-09,0,0,0,0,0,0,0,0,0,0,1.02270064417098e-09,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.02270064417098e-09,0,0,0,0,0,-5.11350322085491e-10,0,1.02270064417098e-09,5.11350322085491e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive802_field5":[499.934998334028,1,1,500.728939830467,997.859254955593,500.247775101189,1,500.678715097834,997.505347180219,1,875.045892856982,875.027222218785,1,1,1,720.093602179857,1,1,498.966334233292,616.549727761471,617.645700563307,816.788590372659,732.230065287868,829.276849703825,1,1,873.340563216335,1,1,1,1,1,1,859.005293939256,928.185245262192,1,1,1,1,1,1,1,980.541096472819,1,1,1,1,1,1,1,1,1,985.742720926903,1,1,1,958.230819832387,997.869219937446,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,500.67065926103,500.411184771871,797.316194200129,774.435627941083,814.033388844276,748.492977107504,695.479473740157,612.865555801403,722.351960406207,889.121786534728,500.423407928391,884.410196723966,500.17528811817,629.483531875553,842.315244946114,803.760183263596,801.344070554177,782.109144453753,715.632461353782,881.060455779873,613.747796900665,837.437746806412,733.401302007598,749.054137123924,819.694682607493,969.108229313797,922.766827955611,642.787217704931,500.306550342542,872.729718702366,896.053963364245,932.752083197675,948.104625811302,951.731666641212,954.827340336456,989.062222057995,975.901748627897,952.992860760566,947.019442002955,973.72952955211,792.73798398186,848.673929309177,907.35010640253,964.331162039613,968.809624654304,988.268574635997,997.443229521693,951.590251149748,959.376498815652,952.235687124112,968.207069973673,917.96670309742,998.488185561804,987.958425799904,986.796350475413,982.976055683226,1,934.393956097184,1,993.773815687964,996.846257394535,911.120816683083,818.570649551426,874.591087541296,865.894550331655,891.999614391591,998.726170463747,996.812673679438,996.046065608388,974.439436116387,998.979693031966,996.526175340027,969.029280034021,999.475815529394,989.587989503715,991.008935777545,985.928977314715,999.363566545803,999.899657053614,999.832688600174,873.218667814856,978.061989732112,992.35921922168,969.348265560395,1,1,1,892.922250998522,1,743.041019008876,1,1,1,1,1,1,1,1,1,1,1,1,1,972.922327009774,935.104268178001,933.680839935815,683.269817932709,500.222510253962,958.121436942868,961.587102667733,955.125335465438,941.414390673128,966.379315795604,895.705545422878,950.621565112661,981.382632486986,742.139284035607,794.706350588932,632.495577735711,795.670293549476,781.367303580047,671.414558317062,935.725521049422,916.718983962967,965.247762818359,938.141243474741,985.018357496463,917.191618641965,866.692977987627,958.178263503111,982.551051549263,908.653038854372,500.428090051981,903.019544269926,919.292823780122,841.353907429563,499.771510242814,589.70323318169,500.210154646506,639.25227792799,589.404611898391,685.495698578925,500.076563872475,776.001352746757,985.44521149499,845.996802631112,717.765578561148,809.913005167278,873.891745547658,748.20343123248,937.845641040951,920.477715705025,961.640500272162,761.677854053422,802.688702173567,500.457250156352,864.634587020898,681.818195394175,1,1,1,626.693193719457,500.393780053143,590.632944291645,630.382004467825,610.602269933414,663.843239249961,700.509378599852,910.193425175062,988.091805807467,1,885.820867463622,772.67632623545,810.279770917753,841.758209104589,717.280224571639,825.646634231078,668.394677755638,801.699459448023,742.798281573087,500.104505278967,737.299897558452,661.739949099784,628.580633382127,725.804047764475,641.704445321995,856.237443726846,725.081719706258,500.157601149092,579.233966883455,577.444368757543,594.277154912861,500.363434902426,621.459009071335,596.835691444323,499.961480357185,581.967457315419,703.12006404812,763.528786997087,780.636361651957,803.28196354344,676.268722493304,583.042270776268,774.876562465724,945.703590308243,963.543997158605,989.416356035661,927.533484107134,986.308774203415,999.429968504969,904.032286981397,993.399848710884,996.751098079572,997.311760030968,966.639928007778,988.853615993586,998.708301257311,980.72789445413,936.170531062456,864.365952394616,871.653735073158,991.537548742092,983.522216825068,959.78204700779,915.566628325801,927.524511693399,903.858458957083,949.423498888262,945.462677737718,592.380636457276,996.012142910255,979.446587851163,843.065181056571,912.115568912947,965.106296342777,802.868198548151,841.023521738446,772.817526706804,709.899505939959,500.173266194814,616.756354144253,1,1,1,1,1,1,499.934998334028,1,1,500.728939830467,997.859254955593,500.247775101189,1,500.678715097834,997.505347180219,1,875.045892856982,875.027222218786,1,1,1,720.093602179857,1,1,498.966334233292,616.549727761471,617.645700563307,816.788590372659,732.230065287868,829.276849703824,1,1,873.340563216335,1,1,1,1,1,1,859.005293939256,928.185245262192,1,1,1,1,1,1,1,980.541096472819,1,1,1,1,1,1,1,1,1,985.742720926903,1,1,1,958.230819832387,997.869219937446,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,500.67065926103,500.411184771871,797.316194200129,774.435627941083,814.033388844276,748.492977107504,695.479473740157,612.865555801404,722.351960406206,889.121786534727,500.423407928391,884.410196723966,500.17528811817,629.483531875553,842.315244946114,803.760183263596,801.344070554177,782.109144453753,715.632461353782,881.060455779873,613.747796900665,837.437746806412,733.401302007598,749.054137123925,819.694682607493,969.108229313797,922.766827955611,642.787217704931,500.306550342542,872.729718702366,896.053963364245,932.752083197675,948.104625811302,951.731666641212,954.827340336456,989.062222057995,975.901748627897,952.992860760566,947.019442002955,973.72952955211,792.73798398186,848.673929309177,907.350106402531,964.331162039613,968.809624654304,988.268574635997,997.443229521693,951.590251149748,959.376498815652,952.235687124112,968.207069973673,917.96670309742,998.488185561804,987.958425799905,986.796350475413,982.976055683226,1,934.393956097184,1,993.773815687964,996.846257394535,911.120816683083,818.570649551425,874.591087541296,865.894550331655,891.999614391591,998.726170463747,996.812673679438,996.046065608388,974.439436116386,998.979693031966,996.526175340027,969.029280034021,999.475815529394,989.587989503716,991.008935777545,985.928977314715,999.363566545803,999.899657053614,999.832688600174,873.218667814856,978.061989732112,992.35921922168,969.348265560395,1,1,1,892.922250998522,1,743.041019008875,1,1,1,1,1,1,1,1,1,1,1,1,1,972.922327009774,935.104268178001,933.680839935815,683.269817932709,500.222510253962,958.121436942868,961.587102667733,955.125335465438,941.414390673128,966.379315795604,895.705545422879,950.621565112661,981.382632486986,742.139284035607,794.706350588932,632.495577735711,795.670293549476,781.367303580047,671.414558317062,935.725521049421,916.718983962967,965.247762818359,938.141243474741,985.018357496463,917.191618641965,866.692977987627,958.178263503111,982.551051549263,908.653038854372,500.428090051981,903.019544269926,919.292823780122,841.353907429563,499.771510242814,589.70323318169,500.210154646506,639.25227792799,589.404611898391,685.495698578925,500.076563872475,776.001352746756,985.44521149499,845.996802631112,717.765578561148,809.913005167278,873.891745547658,748.20343123248,937.845641040951,920.477715705025,961.640500272162,761.677854053422,802.688702173566,500.457250156352,864.634587020898,681.818195394175,1,1,1,626.693193719456,500.393780053143,590.632944291645,630.382004467825,610.602269933414,663.843239249961,700.509378599852,910.193425175062,988.091805807467,1,885.820867463622,772.67632623545,810.279770917753,841.758209104589,717.28022457164,825.646634231078,668.394677755638,801.699459448023,742.798281573087,500.104505278967,737.299897558452,661.739949099784,628.580633382127,725.804047764475,641.704445321995,856.237443726846,725.081719706258,500.157601149092,579.233966883455,577.444368757543,594.277154912861,500.363434902426,621.459009071335,596.835691444323,499.961480357185,581.967457315419,703.12006404812,763.528786997087,780.636361651957,803.28196354344,676.268722493304,583.042270776268,774.876562465724,945.703590308243,963.543997158605,989.416356035661,927.533484107134,986.308774203415,999.429968504969,904.032286981397,993.399848710884,996.751098079572,997.311760030968,966.639928007778,988.853615993586,998.708301257311,980.72789445413,936.170531062456,864.365952394616,871.653735073158,991.537548742092,983.522216825068,959.78204700779,915.566628325801,927.524511693399,903.858458957083,949.423498888262,945.462677737718,592.380636457276,996.012142910255,979.446587851163,843.065181056572,912.115568912947,965.106296342777,802.868198548151,841.023521738446,772.817526706804,709.899505939959,500.173266194814,616.756354144253,1,1,1,1,1,1,499.934998334028,1,1,500.728939830467,997.859254955593,500.247775101189,1,500.678715097834,997.505347180219,1,875.045892856982,875.027222218785,1,1,1,720.093602179857,1,1,498.966334233292,616.549727761471,617.645700563307,816.788590372659,732.230065287868,829.276849703825,1,1,873.340563216335,1,1,1,1,1,1,859.005293939256,928.185245262192,1,1,1,1,1,1,1,980.541096472819,1,1,1,1,1,1,1,1,1,985.742720926903,1,1,1,958.230819832387,997.869219937446,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,500.67065926103,500.411184771871,797.316194200129,774.435627941083,814.033388844276,748.492977107504,695.479473740157,612.865555801403,722.351960406207,889.121786534728,500.423407928391,884.410196723966,500.17528811817,629.483531875553,842.315244946114,803.760183263596,801.344070554177,782.109144453753,715.632461353782,881.060455779873,613.747796900665,837.437746806412,733.401302007598,749.054137123924,819.694682607493,969.108229313797,922.766827955611,642.787217704931,500.306550342542,872.729718702366,896.053963364245,932.752083197675,948.104625811302,951.731666641212,954.827340336456,989.062222057995,975.901748627897,952.992860760566,947.019442002955,973.72952955211,792.73798398186,848.673929309177,907.35010640253,964.331162039613,968.809624654304,988.268574635997,997.443229521693,951.590251149748,959.376498815652,952.235687124112,968.207069973673,917.96670309742,998.488185561804,987.958425799904,986.796350475413,982.976055683226,1,934.393956097184,1,993.773815687964,996.846257394535,911.120816683083,818.570649551426,874.591087541296,865.894550331655,891.999614391591,998.726170463747,996.812673679438,996.046065608388,974.439436116387,998.979693031966,996.526175340027,969.029280034021,999.475815529394,989.587989503715,991.008935777545,985.928977314715,999.363566545803,999.899657053614,999.832688600174,873.218667814856,978.061989732112,992.35921922168,969.348265560395,1,1,1,892.922250998522,1,743.041019008876,1,1,1,1,1,1,1,1,1,1,1,1,1,972.922327009774,935.104268178001,933.680839935815,683.269817932709,500.222510253962,958.121436942868,961.587102667733,955.125335465438,941.414390673128,966.379315795604,895.705545422878,950.621565112661,981.382632486986,742.139284035607,794.706350588932,632.495577735711,795.670293549476,781.367303580047,671.414558317062,935.725521049422,916.718983962967,965.247762818359,938.141243474741,985.018357496463,917.191618641965,866.692977987627,958.178263503111,982.551051549263,908.653038854372,500.428090051981,903.019544269926,919.292823780122,841.353907429563,499.771510242814,589.70323318169,500.210154646506,639.25227792799,589.404611898391,685.495698578925,500.076563872475,776.001352746757,985.44521149499,845.996802631112,717.765578561148,809.913005167278,873.891745547658,748.20343123248,937.845641040951,920.477715705025,961.640500272162,761.677854053422,802.688702173567,500.457250156352,864.634587020898,681.818195394175,1,1,1,626.693193719457,500.393780053143,590.632944291645,630.382004467825,610.602269933414,663.843239249961,700.509378599852,910.193425175062,988.091805807467,1,885.820867463622,772.67632623545,810.279770917753,841.758209104589,717.280224571639,825.646634231078,668.394677755638,801.699459448023,742.798281573087,500.104505278967,737.299897558452,661.739949099784,628.580633382127,725.804047764475,641.704445321995,856.237443726846,725.081719706258,500.157601149092,579.233966883455,577.444368757543,594.277154912861,500.363434902426,621.459009071335,596.835691444323,499.961480357185,581.967457315419,703.12006404812,763.528786997087,780.636361651957,803.28196354344,676.268722493304,583.042270776268,774.876562465724,945.703590308243,963.543997158605,989.416356035661,927.533484107134,986.308774203415,999.429968504969,904.032286981397,993.399848710884,996.751098079572,997.311760030968,966.639928007778,988.853615993586,998.708301257311,980.72789445413,936.170531062456,864.365952394616,871.653735073158,991.537548742092,983.522216825068,959.78204700779,915.566628325801,927.524511693399,903.858458957083,949.423498888262,945.462677737718,592.380636457276,996.012142910255,979.446587851163,843.065181056571,912.115568912947,965.106296342777,802.868198548151,841.023521738446,772.817526706804,709.899505939959,500.173266194814,616.756354144253,1,1,1,1,1,1],"Archive802_field6":[999.934998334028,0.103616813294233,0.103616813294233,911.09062115989,347.981444593912,395.189124074796,0.103616813294233,305.981745400864,952.68618784493,0.103616813294233,675.106987676142,630.269157702656,0.103616813294233,0.103616813294233,0.103616813294233,166.586759560111,0.103616813294233,0.103616813294233,153.004701779724,234.635321603113,160.09896302665,233.676343916158,310.636101456001,284.713047620491,0.103616813294233,0.103616813294233,182.485216655973,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,179.162310680876,128.148612686501,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,104.216022185232,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,113.416030726291,0.103616813294233,0.103616813294233,0.103616813294233,99.288823951352,207.293281480313,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,230.341358185761,608.243540588098,162.756118662635,284.657624353238,227.015118764911,223.66756483603,271.066362170847,307.611630369403,370.313106061028,336.69141951616,456.991100988019,255.059393712168,381.1106497995,425.165416703358,295.948747020065,356.500039061627,494.310353691126,423.746400741939,471.341490081276,441.144217952511,512.418205798551,406.925172709821,580.686540686458,524.852959721758,574.778636144922,298.025145197933,195.396287214005,365.672265116682,532.506574780469,930.500979699434,538.374872238618,298.136964022246,406.514623970042,242.707265478788,347.088260962055,408.249536170838,204.964816965635,159.626494452411,118.797483346684,136.301836294141,666.142215809103,528.452878232087,161.077457757371,122.472716946519,275.734252563296,224.37143017047,285.469573617106,170.809020191537,127.425306824432,98.6676274048445,214.101839115239,255.818738900446,263.333450636387,279.007373430155,343.14196171258,377.448850664546,0.103616813294233,158.552430583306,0.103616813294233,342.049715192256,422.799064949781,192.360907940491,256.734264857103,238.660131729257,357.358889751102,225.273463530615,409.17670092255,524.473566976177,462.008022511484,478.067917471429,493.976243640406,633.288107326659,503.346048260382,566.36986820037,478.686179723642,651.378857820181,569.143466809563,623.512330485392,750.834133687669,684.82592873605,975.809088147212,734.412739602936,693.760242568838,648.725665205415,0.103616813294233,0.103616813294233,0.103616813294233,222.912888573718,0.103616813294233,204.685498177636,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,421.761898817761,484.103368067101,719.168667320637,332.487895038802,243.89919647097,588.250151512105,701.494219060525,758.878029849612,661.6200121436,964.014946294138,814.426167895119,579.110876135884,840.445950327739,275.670452402269,333.90037983569,258.724817825216,308.552224924411,269.913820895427,339.458913155772,543.380020996422,599.522680793928,531.637056458583,718.187491882617,581.863078685488,662.436185960177,720.08219169143,660.061947156381,745.580741914504,612.131989893222,697.898764538784,495.282467545712,551.00261515332,564.678264680917,319.080527838122,352.649852417897,546.416166376711,463.774042630107,414.404953685627,401.750041302459,470.650244224381,478.325976328314,525.707593563148,670.015956192208,920.582049724394,407.482732052724,432.205472817689,426.869515612812,376.11823597339,435.112181068843,431.563934227599,795.292500299395,737.454150527785,759.554268729177,825.226250393584,707.772488550806,0.103616813294233,0.103616813294233,0.103616813294233,596.621524629914,683.858467247669,725.810356027999,831.683829137879,661.536627558383,771.977197390082,641.85978089373,395.247345524697,173.915876128066,0.103616813294233,744.676518599492,811.316146672295,730.134899490951,794.165582200946,987.325434737817,895.806801450962,732.383756213819,644.43924581454,754.433033342377,848.839842522368,686.173974331597,822.530182893519,641.661853759379,609.295549704775,552.71953028906,621.048317789987,896.819415822673,773.260607014195,731.822723569868,807.512341579618,871.371456466976,924.731103524127,993.10240681094,934.317388269126,621.79982346569,512.139500430985,503.689587469915,546.556546320543,865.788855720253,981.787278792707,943.175842119834,595.867517619203,932.664709702033,841.430493941152,897.372824000976,958.012091617284,969.834009522579,900.330968477713,839.914703292154,899.449030358267,786.282274077758,807.267145306652,902.491772758166,941.865978838668,946.244561741386,872.388505622661,862.124284786031,917.026812366959,924.725300833043,865.259048168978,895.247413212407,804.641376982144,773.710417861696,786.417818021521,936.210667607377,876.284093078033,875.143135876513,820.469963026712,199.852176151795,716.034451504144,688.042954051153,494.892497890781,323.684973019717,339.755110460139,925.349564628307,879.427007553872,863.107878312551,832.911558815217,834.902616145938,915.532930390587,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,999.934998334028,0.103616813294233,0.103616813294233,911.09062115989,347.981444593912,395.189124074796,0.103616813294233,305.981745400864,952.686187844931,0.103616813294233,675.106987676141,630.269157702656,0.103616813294233,0.103616813294233,0.103616813294233,166.586759560111,0.103616813294233,0.103616813294233,153.004701779724,234.635321603113,160.09896302665,233.676343916158,310.636101456001,284.713047620491,0.103616813294233,0.103616813294233,182.485216655973,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,179.162310680876,128.148612686501,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,104.216022185232,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,113.416030726291,0.103616813294233,0.103616813294233,0.103616813294233,99.288823951352,207.293281480313,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,230.341358185761,608.243540588098,162.756118662635,284.657624353238,227.015118764911,223.66756483603,271.066362170847,307.611630369403,370.313106061028,336.69141951616,456.991100988019,255.059393712168,381.1106497995,425.165416703358,295.948747020065,356.500039061627,494.310353691126,423.746400741939,471.341490081277,441.144217952511,512.418205798551,406.925172709821,580.686540686458,524.852959721758,574.778636144922,298.025145197933,195.396287214005,365.672265116682,532.506574780469,930.500979699434,538.374872238618,298.136964022246,406.514623970042,242.707265478788,347.088260962055,408.249536170838,204.964816965635,159.626494452411,118.797483346684,136.301836294141,666.142215809103,528.452878232087,161.077457757371,122.472716946519,275.734252563296,224.37143017047,285.469573617106,170.809020191537,127.425306824432,98.6676274048445,214.101839115239,255.818738900446,263.333450636387,279.007373430155,343.14196171258,377.448850664546,0.103616813294233,158.552430583306,0.103616813294233,342.049715192256,422.799064949781,192.360907940491,256.734264857103,238.660131729257,357.358889751102,225.273463530614,409.17670092255,524.473566976177,462.008022511484,478.067917471429,493.976243640406,633.288107326659,503.346048260382,566.36986820037,478.686179723642,651.378857820181,569.143466809563,623.512330485392,750.83413368767,684.82592873605,975.809088147212,734.412739602936,693.760242568838,648.725665205416,0.103616813294233,0.103616813294233,0.103616813294233,222.912888573718,0.103616813294233,204.685498177635,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,421.761898817761,484.103368067101,719.168667320637,332.487895038802,243.89919647097,588.250151512105,701.494219060524,758.878029849612,661.6200121436,964.014946294137,814.426167895119,579.110876135884,840.445950327739,275.670452402269,333.90037983569,258.724817825216,308.552224924411,269.913820895427,339.458913155772,543.380020996422,599.522680793928,531.637056458583,718.187491882617,581.863078685488,662.436185960177,720.08219169143,660.061947156381,745.580741914503,612.131989893222,697.898764538784,495.282467545712,551.00261515332,564.678264680917,319.080527838122,352.649852417897,546.416166376711,463.774042630107,414.404953685627,401.750041302459,470.650244224381,478.325976328314,525.707593563148,670.015956192208,920.582049724393,407.482732052724,432.205472817689,426.869515612812,376.11823597339,435.112181068843,431.563934227599,795.292500299395,737.454150527785,759.554268729177,825.226250393584,707.772488550806,0.103616813294233,0.103616813294233,0.103616813294233,596.621524629914,683.858467247669,725.810356027999,831.683829137879,661.536627558383,771.977197390082,641.85978089373,395.247345524697,173.915876128065,0.103616813294233,744.676518599491,811.316146672295,730.134899490951,794.165582200947,987.325434737817,895.806801450962,732.383756213819,644.43924581454,754.433033342376,848.839842522368,686.173974331597,822.530182893519,641.661853759379,609.295549704775,552.71953028906,621.048317789987,896.819415822672,773.260607014195,731.822723569868,807.512341579618,871.371456466976,924.731103524127,993.10240681094,934.317388269126,621.79982346569,512.139500430985,503.689587469915,546.556546320542,865.788855720252,981.787278792707,943.175842119833,595.867517619203,932.664709702033,841.430493941152,897.372824000976,958.012091617284,969.834009522579,900.330968477713,839.914703292153,899.449030358267,786.282274077758,807.267145306652,902.491772758166,941.865978838668,946.244561741386,872.388505622661,862.124284786031,917.026812366959,924.725300833043,865.259048168978,895.247413212407,804.641376982144,773.710417861696,786.417818021521,936.210667607377,876.284093078033,875.143135876513,820.469963026711,199.852176151795,716.034451504144,688.042954051153,494.892497890781,323.684973019717,339.755110460139,925.349564628307,879.427007553871,863.107878312551,832.911558815217,834.902616145938,915.532930390587,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,999.934998334028,0.103616813294233,0.103616813294233,911.09062115989,347.981444593912,395.189124074796,0.103616813294233,305.981745400864,952.68618784493,0.103616813294233,675.106987676142,630.269157702656,0.103616813294233,0.103616813294233,0.103616813294233,166.586759560111,0.103616813294233,0.103616813294233,153.004701779724,234.635321603113,160.09896302665,233.676343916158,310.636101456001,284.713047620491,0.103616813294233,0.103616813294233,182.485216655973,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,179.162310680876,128.148612686501,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,104.216022185232,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,113.416030726291,0.103616813294233,0.103616813294233,0.103616813294233,99.288823951352,207.293281480313,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,230.341358185761,608.243540588098,162.756118662635,284.657624353238,227.015118764911,223.66756483603,271.066362170847,307.611630369403,370.313106061028,336.69141951616,456.991100988019,255.059393712168,381.1106497995,425.165416703358,295.948747020065,356.500039061627,494.310353691126,423.746400741939,471.341490081276,441.144217952511,512.418205798551,406.925172709821,580.686540686458,524.852959721758,574.778636144922,298.025145197933,195.396287214005,365.672265116682,532.506574780469,930.500979699434,538.374872238618,298.136964022246,406.514623970042,242.707265478788,347.088260962055,408.249536170838,204.964816965635,159.626494452411,118.797483346684,136.301836294141,666.142215809103,528.452878232087,161.077457757371,122.472716946519,275.734252563296,224.37143017047,285.469573617106,170.809020191537,127.425306824432,98.6676274048445,214.101839115239,255.818738900446,263.333450636387,279.007373430155,343.14196171258,377.448850664546,0.103616813294233,158.552430583306,0.103616813294233,342.049715192256,422.799064949781,192.360907940491,256.734264857103,238.660131729257,357.358889751102,225.273463530615,409.17670092255,524.473566976177,462.008022511484,478.067917471429,493.976243640406,633.288107326659,503.346048260382,566.36986820037,478.686179723642,651.378857820181,569.143466809563,623.512330485392,750.834133687669,684.82592873605,975.809088147212,734.412739602936,693.760242568838,648.725665205415,0.103616813294233,0.103616813294233,0.103616813294233,222.912888573718,0.103616813294233,204.685498177636,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,421.761898817761,484.103368067101,719.168667320637,332.487895038802,243.89919647097,588.250151512105,701.494219060525,758.878029849612,661.6200121436,964.014946294138,814.426167895119,579.110876135884,840.445950327739,275.670452402269,333.90037983569,258.724817825216,308.552224924411,269.913820895427,339.458913155772,543.380020996422,599.522680793928,531.637056458583,718.187491882617,581.863078685488,662.436185960177,720.08219169143,660.061947156381,745.580741914504,612.131989893222,697.898764538784,495.282467545712,551.00261515332,564.678264680917,319.080527838122,352.649852417897,546.416166376711,463.774042630107,414.404953685627,401.750041302459,470.650244224381,478.325976328314,525.707593563148,670.015956192208,920.582049724394,407.482732052724,432.205472817689,426.869515612812,376.11823597339,435.112181068843,431.563934227599,795.292500299395,737.454150527785,759.554268729177,825.226250393584,707.772488550806,0.103616813294233,0.103616813294233,0.103616813294233,596.621524629914,683.858467247669,725.810356027999,831.683829137879,661.536627558383,771.977197390082,641.85978089373,395.247345524697,173.915876128066,0.103616813294233,744.676518599492,811.316146672295,730.134899490951,794.165582200946,987.325434737817,895.806801450962,732.383756213819,644.43924581454,754.433033342377,848.839842522368,686.173974331597,822.530182893519,641.661853759379,609.295549704775,552.71953028906,621.048317789987,896.819415822673,773.260607014195,731.822723569868,807.512341579618,871.371456466976,924.731103524127,993.10240681094,934.317388269126,621.79982346569,512.139500430985,503.689587469915,546.556546320543,865.788855720253,981.787278792707,943.175842119834,595.867517619203,932.664709702033,841.430493941152,897.372824000976,958.012091617284,969.834009522579,900.330968477713,839.914703292154,899.449030358267,786.282274077758,807.267145306652,902.491772758166,941.865978838668,946.244561741386,872.388505622661,862.124284786031,917.026812366959,924.725300833043,865.259048168978,895.247413212407,804.641376982144,773.710417861696,786.417818021521,936.210667607377,876.284093078033,875.143135876513,820.469963026712,199.852176151795,716.034451504144,688.042954051153,494.892497890781,323.684973019717,339.755110460139,925.349564628307,879.427007553872,863.107878312551,832.911558815217,834.902616145938,915.532930390587,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive802_field7":[-666644.966368153,331616.121029431,330288.604589086,-666685.301586155,-166834.989231817,-166686.803060874,330744.680572765,-166719.500497731,-666569.577239183,82434.8327761212,-416822.215327597,-416701.36426626,82559.6499782899,330905.441897178,82970.3517400477,-42108.5880372651,207554.853334675,82726.4703584391,-41670.8121800271,-104475.273156362,-41827.6378722582,20358.036449766,20729.5474077828,50965.9943811784,207450.333144763,125871.500970412,20170.4497899197,83432.6098251463,145049.475774012,116995.552260274,145061.639497803,69654.6580942333,43815.99860865,-47721.0282794165,12709.6278722224,207225.705666651,149089.015018969,122810.739483926,211390.567257461,152694.683256829,91611.6208228553,330642.801084913,34124.8812463536,226475.125142304,75105.741123532,88507.6311239697,202606.504714487,330657.489326915,274187.458258325,260798.058181312,167816.139135946,331050.058515512,15509.7211596375,176539.762366654,276635.335606754,61529.7017149163,35234.2282454766,-49360.6880636968,57625.5478940981,147353.231779122,197053.197956703,256193.137267855,171690.321298017,122511.330222924,144561.261328639,237042.902333509,330990.023728164,96613.9408788755,331354.467966136,136502.359122869,137577.410720915,330961.460807225,230227.95887154,189440.899942506,181888.402272321,212719.845238406,207561.265072293,258865.758514046,183783.341683196,105937.6188836,154257.41145366,83249.6849766854,171342.194112585,176455.46708051,331307.288046753,256288.553640232,330987.793195912,279774.229354233,284409.328068336,330997.597229572,274373.461022213,288526.647048375,240160.837903181,-104180.414797287,-416683.258287373,-35614.4749067329,-138537.86078472,-90936.4931131309,-89605.0476634286,-131466.511738184,-164585.95069869,-211243.344144754,-174193.077473995,-291642.930298099,-108246.24936642,-229138.811251955,-260682.940851658,-143590.437398982,-195821.841695403,-309332.836509869,-252340.639548619,-294822.284069393,-260467.689009951,-333342.075808793,-235189.993936241,-384300.873831897,-337412.806889193,-374695.61134163,-134987.664570325,-54634.3785594756,-211342.442637885,-354183.421346991,-666605.398675876,-339319.506777478,-138094.218790824,-226002.367822682,-90903.2704877911,-176583.918769637,-220899.362219591,-63548.7058182817,-28399.2175111538,10939.0812372757,-7128.94124282236,-451611.360001996,-334614.505885685,2041.5526810764,112.685951960131,-98254.4680700034,-58480.8880116985,-111332.851050586,-6925.83370189443,9449.16065884556,60154.0182621294,-46549.2306379613,-76126.9046408576,-97614.4269339724,-115144.170494428,-168075.443564678,-183941.908923186,93152.1363258201,33151.4627298312,105461.352853347,-157995.9357244,-224831.238466485,-21804.9261836775,-67124.8798189389,-57468.7955944099,-154393.160884778,5565.83287923863,-217625.548482112,-314085.61402927,-262821.781181748,-281183.772977752,-284783.420239881,-397819.078761845,-284546.259469829,-344695.95810899,-268200.909008445,-420694.23750853,-341779.333004891,-393923.414239576,-497558.147010256,-442711.37603049,-666595.965056182,-476688.773679061,-446198.80937383,-404392.902642331,60908.3450615225,65024.5100709223,115175.69215561,47953.8106469398,126353.606999908,-18668.1992166958,208076.758972753,118176.3372686,219396.666636485,180223.359103163,168416.058631852,235292.477152132,145664.136564661,206447.356062394,270851.546701626,267881.910442103,331390.117662463,289627.595071482,268349.922645459,-235068.99945506,-291044.404830493,-458269.939931238,-123375.424876046,-41671.9896749084,-374453.237010135,-446827.131187003,-493515.011326783,-411488.848266822,-666578.386841688,-533370.202678822,-344562.388835939,-564468.424986095,-78037.7151341336,-130574.258005022,-58535.8337788877,53968.1937713092,15728.7058127701,20842.6919681925,-339917.990223414,-388049.236678113,-326763.357000491,-483897.973961497,-364864.711061487,-439946.04413255,-491622.333369095,-433569.6995499,-500455.949552159,-367534.271037436,-416669.205555219,-270669.687692532,-318091.260641516,-323306.827573873,-104153.168826162,-135502.158271597,-291660.633378657,-229304.448970726,-186671.834588062,-180096.751954272,-229133.359672025,-248042.585675562,-318389.791101528,-451575.477522803,-666589.968022899,-191810.069621514,-216443.559463899,-204104.027154853,-176247.028560385,-222925.251268959,-224448.933149546,-559936.088069891,-510061.890697842,-541662.355762245,-578229.129474271,-491721.684244526,330596.241915115,282660.215338928,242371.833975777,-402272.705611668,-479158.05271825,-510538.66846073,-596574.66754216,-456586.758483652,-545365.692306462,-436421.276419047,-220312.308024101,-32047.8051318745,331986.44195191,-475032.25932157,-522791.002348658,-457844.85880305,-512802.553462124,-666622.490717039,-595750.45676593,-452347.910576286,-386604.147385529,-474142.236722305,-541654.005087906,-417530.064503333,-526470.78047484,-375664.914815566,-353390.747888037,-302735.335242675,-370790.995482762,-590701.625754794,-479166.332677991,-447978.192299179,-510478.514816067,-563873.762615807,-604169.334544157,-666621.41459165,-616276.38856786,-354177.642368257,-266625.761832901,-265230.66056587,-303714.345393188,-568018.676193668,-666589.745546606,-627164.189509537,-335998.172669892,-623665.066736823,-560107.942709739,-609329.915209395,-666596.427411439,-666605.680771895,-615975.286132407,-569357.948567412,-604704.274874884,-522884.41991009,-547383.624264391,-622009.605029187,-666556.853976758,-666642.005227377,-600282.294374715,-597228.239265461,-622759.145687356,-622992.132520799,-573177.389608753,-622432.287339619,-549041.275123938,-527276.065358903,-542411.061223343,-666606.193627508,-618081.856935359,-613108.437656155,-567230.133820821,-7667.10034069714,-472525.107259143,-453594.98160871,-265833.26296108,-130962.068454663,-149813.022419857,-666599.472159484,-625623.157782583,-615785.261493743,-593979.61248599,-604166.849015008,-666629.214479349,190492.554622805,270284.186845448,270875.823049805,233727.39414692,270329.162739289,331181.797070042,-666644.966368153,331616.121029431,330288.604589086,-666685.301586155,-166834.989231817,-166686.803060874,330744.680572765,-166719.500497731,-666569.577239184,82434.8327761212,-416822.215327597,-416701.36426626,82559.6499782899,330905.441897178,82970.3517400477,-42108.5880372651,207554.853334675,82726.4703584391,-41670.8121800271,-104475.273156362,-41827.6378722582,20358.036449766,20729.5474077828,50965.9943811784,207450.333144763,125871.500970412,20170.4497899197,83432.6098251463,145049.475774012,116995.552260274,145061.639497803,69654.6580942333,43815.99860865,-47721.0282794165,12709.6278722224,207225.705666651,149089.015018969,122810.739483926,211390.567257461,152694.683256829,91611.6208228553,330642.801084913,34124.8812463536,226475.125142304,75105.741123532,88507.6311239697,202606.504714487,330657.489326915,274187.458258325,260798.058181312,167816.139135946,331050.058515512,15509.7211596375,176539.762366654,276635.335606753,61529.7017149163,35234.2282454766,-49360.6880636968,57625.5478940981,147353.231779122,197053.197956703,256193.137267855,171690.321298017,122511.330222924,144561.261328639,237042.902333509,330990.023728164,96613.9408788755,331354.467966136,136502.359122869,137577.410720915,330961.460807225,230227.95887154,189440.899942506,181888.402272321,212719.845238406,207561.265072293,258865.758514046,183783.341683196,105937.6188836,154257.41145366,83249.6849766854,171342.194112585,176455.46708051,331307.288046753,256288.553640232,330987.793195912,279774.229354233,284409.328068336,330997.597229572,274373.461022213,288526.647048375,240160.837903181,-104180.414797287,-416683.258287373,-35614.4749067329,-138537.86078472,-90936.4931131309,-89605.0476634286,-131466.511738184,-164585.95069869,-211243.344144754,-174193.077473995,-291642.930298099,-108246.24936642,-229138.811251955,-260682.940851658,-143590.437398982,-195821.841695403,-309332.836509869,-252340.639548619,-294822.284069393,-260467.689009951,-333342.075808793,-235189.993936241,-384300.873831897,-337412.806889193,-374695.611341629,-134987.664570325,-54634.3785594756,-211342.442637885,-354183.421346991,-666605.398675876,-339319.506777478,-138094.218790824,-226002.367822682,-90903.2704877911,-176583.918769637,-220899.362219591,-63548.7058182817,-28399.2175111538,10939.0812372757,-7128.94124282236,-451611.360001996,-334614.505885685,2041.5526810764,112.685951960131,-98254.4680700034,-58480.8880116985,-111332.851050586,-6925.83370189443,9449.16065884556,60154.0182621294,-46549.2306379613,-76126.9046408576,-97614.4269339724,-115144.170494428,-168075.443564678,-183941.908923186,93152.1363258201,33151.4627298312,105461.352853347,-157995.9357244,-224831.238466485,-21804.9261836775,-67124.8798189389,-57468.7955944099,-154393.160884778,5565.83287923863,-217625.548482112,-314085.61402927,-262821.781181748,-281183.772977752,-284783.420239881,-397819.078761845,-284546.259469829,-344695.95810899,-268200.909008445,-420694.23750853,-341779.333004891,-393923.414239576,-497558.147010256,-442711.37603049,-666595.965056182,-476688.773679062,-446198.80937383,-404392.902642331,60908.3450615226,65024.5100709223,115175.69215561,47953.8106469398,126353.606999908,-18668.1992166958,208076.758972753,118176.3372686,219396.666636486,180223.359103163,168416.058631852,235292.477152132,145664.136564661,206447.356062394,270851.546701626,267881.910442103,331390.117662463,289627.595071482,268349.922645459,-235068.99945506,-291044.404830493,-458269.939931238,-123375.424876046,-41671.9896749084,-374453.237010135,-446827.131187003,-493515.011326783,-411488.848266823,-666578.386841688,-533370.202678822,-344562.388835939,-564468.424986095,-78037.7151341336,-130574.258005022,-58535.8337788877,53968.1937713092,15728.7058127701,20842.6919681925,-339917.990223414,-388049.236678113,-326763.357000491,-483897.973961497,-364864.711061487,-439946.04413255,-491622.333369095,-433569.6995499,-500455.949552159,-367534.271037436,-416669.205555219,-270669.687692532,-318091.260641515,-323306.827573873,-104153.168826162,-135502.158271597,-291660.633378657,-229304.448970726,-186671.834588062,-180096.751954272,-229133.359672025,-248042.585675562,-318389.791101528,-451575.477522803,-666589.968022899,-191810.069621514,-216443.559463899,-204104.027154853,-176247.028560385,-222925.251268959,-224448.933149546,-559936.088069891,-510061.890697843,-541662.355762245,-578229.129474271,-491721.684244526,330596.241915115,282660.215338928,242371.833975777,-402272.705611668,-479158.05271825,-510538.66846073,-596574.66754216,-456586.758483652,-545365.692306462,-436421.276419047,-220312.308024101,-32047.8051318745,331986.44195191,-475032.25932157,-522791.002348658,-457844.85880305,-512802.553462124,-666622.490717039,-595750.45676593,-452347.910576286,-386604.147385529,-474142.236722305,-541654.005087906,-417530.064503333,-526470.78047484,-375664.914815566,-353390.747888037,-302735.335242675,-370790.995482762,-590701.625754794,-479166.332677991,-447978.192299179,-510478.514816067,-563873.762615807,-604169.334544157,-666621.41459165,-616276.38856786,-354177.642368257,-266625.761832901,-265230.66056587,-303714.345393188,-568018.676193668,-666589.745546606,-627164.189509537,-335998.172669892,-623665.066736823,-560107.942709739,-609329.915209395,-666596.427411439,-666605.680771895,-615975.286132407,-569357.948567412,-604704.274874884,-522884.41991009,-547383.624264391,-622009.605029187,-666556.853976758,-666642.005227377,-600282.294374715,-597228.239265461,-622759.145687356,-622992.132520799,-573177.389608753,-622432.287339619,-549041.275123938,-527276.065358903,-542411.061223343,-666606.193627508,-618081.856935359,-613108.437656155,-567230.133820821,-7667.10034069714,-472525.107259143,-453594.98160871,-265833.26296108,-130962.068454663,-149813.022419857,-666599.472159484,-625623.157782583,-615785.261493743,-593979.61248599,-604166.849015008,-666629.214479349,190492.554622805,270284.186845448,270875.823049806,233727.39414692,270329.162739289,331181.797070042,-666644.966368153,331616.121029431,330288.604589086,-666685.301586155,-166834.989231817,-166686.803060874,330744.680572765,-166719.500497731,-666569.577239183,82434.8327761212,-416822.215327597,-416701.36426626,82559.6499782899,330905.441897178,82970.3517400477,-42108.5880372651,207554.853334675,82726.4703584391,-41670.8121800271,-104475.273156362,-41827.6378722582,20358.036449766,20729.5474077828,50965.9943811784,207450.333144763,125871.500970412,20170.4497899197,83432.6098251463,145049.475774012,116995.552260274,145061.639497803,69654.6580942333,43815.99860865,-47721.0282794165,12709.6278722224,207225.705666651,149089.015018969,122810.739483926,211390.567257461,152694.683256829,91611.6208228553,330642.801084913,34124.8812463536,226475.125142304,75105.741123532,88507.6311239697,202606.504714487,330657.489326915,274187.458258325,260798.058181312,167816.139135946,331050.058515512,15509.7211596375,176539.762366654,276635.335606754,61529.7017149163,35234.2282454766,-49360.6880636968,57625.5478940981,147353.231779122,197053.197956703,256193.137267855,171690.321298017,122511.330222924,144561.261328639,237042.902333509,330990.023728164,96613.9408788755,331354.467966136,136502.359122869,137577.410720915,330961.460807225,230227.95887154,189440.899942506,181888.402272321,212719.845238406,207561.265072293,258865.758514046,183783.341683196,105937.6188836,154257.41145366,83249.6849766854,171342.194112585,176455.46708051,331307.288046753,256288.553640232,330987.793195912,279774.229354233,284409.328068336,330997.597229572,274373.461022213,288526.647048375,240160.837903181,-104180.414797287,-416683.258287373,-35614.4749067329,-138537.86078472,-90936.4931131309,-89605.0476634286,-131466.511738184,-164585.95069869,-211243.344144754,-174193.077473995,-291642.930298099,-108246.24936642,-229138.811251955,-260682.940851658,-143590.437398982,-195821.841695403,-309332.836509869,-252340.639548619,-294822.284069393,-260467.689009951,-333342.075808793,-235189.993936241,-384300.873831897,-337412.806889193,-374695.61134163,-134987.664570325,-54634.3785594756,-211342.442637885,-354183.421346991,-666605.398675876,-339319.506777478,-138094.218790824,-226002.367822682,-90903.2704877911,-176583.918769637,-220899.362219591,-63548.7058182817,-28399.2175111538,10939.0812372757,-7128.94124282236,-451611.360001996,-334614.505885685,2041.5526810764,112.685951960131,-98254.4680700034,-58480.8880116985,-111332.851050586,-6925.83370189443,9449.16065884556,60154.0182621294,-46549.2306379613,-76126.9046408576,-97614.4269339724,-115144.170494428,-168075.443564678,-183941.908923186,93152.1363258201,33151.4627298312,105461.352853347,-157995.9357244,-224831.238466485,-21804.9261836775,-67124.8798189389,-57468.7955944099,-154393.160884778,5565.83287923863,-217625.548482112,-314085.61402927,-262821.781181748,-281183.772977752,-284783.420239881,-397819.078761845,-284546.259469829,-344695.95810899,-268200.909008445,-420694.23750853,-341779.333004891,-393923.414239576,-497558.147010256,-442711.37603049,-666595.965056182,-476688.773679061,-446198.80937383,-404392.902642331,60908.3450615225,65024.5100709223,115175.69215561,47953.8106469398,126353.606999908,-18668.1992166958,208076.758972753,118176.3372686,219396.666636485,180223.359103163,168416.058631852,235292.477152132,145664.136564661,206447.356062394,270851.546701626,267881.910442103,331390.117662463,289627.595071482,268349.922645459,-235068.99945506,-291044.404830493,-458269.939931238,-123375.424876046,-41671.9896749084,-374453.237010135,-446827.131187003,-493515.011326783,-411488.848266822,-666578.386841688,-533370.202678822,-344562.388835939,-564468.424986095,-78037.7151341336,-130574.258005022,-58535.8337788877,53968.1937713092,15728.7058127701,20842.6919681925,-339917.990223414,-388049.236678113,-326763.357000491,-483897.973961497,-364864.711061487,-439946.04413255,-491622.333369095,-433569.6995499,-500455.949552159,-367534.271037436,-416669.205555219,-270669.687692532,-318091.260641516,-323306.827573873,-104153.168826162,-135502.158271597,-291660.633378657,-229304.448970726,-186671.834588062,-180096.751954272,-229133.359672025,-248042.585675562,-318389.791101528,-451575.477522803,-666589.968022899,-191810.069621514,-216443.559463899,-204104.027154853,-176247.028560385,-222925.251268959,-224448.933149546,-559936.088069891,-510061.890697842,-541662.355762245,-578229.129474271,-491721.684244526,330596.241915115,282660.215338928,242371.833975777,-402272.705611668,-479158.05271825,-510538.66846073,-596574.66754216,-456586.758483652,-545365.692306462,-436421.276419047,-220312.308024101,-32047.8051318745,331986.44195191,-475032.25932157,-522791.002348658,-457844.85880305,-512802.553462124,-666622.490717039,-595750.45676593,-452347.910576286,-386604.147385529,-474142.236722305,-541654.005087906,-417530.064503333,-526470.78047484,-375664.914815566,-353390.747888037,-302735.335242675,-370790.995482762,-590701.625754794,-479166.332677991,-447978.192299179,-510478.514816067,-563873.762615807,-604169.334544157,-666621.41459165,-616276.38856786,-354177.642368257,-266625.761832901,-265230.66056587,-303714.345393188,-568018.676193668,-666589.745546606,-627164.189509537,-335998.172669892,-623665.066736823,-560107.942709739,-609329.915209395,-666596.427411439,-666605.680771895,-615975.286132407,-569357.948567412,-604704.274874884,-522884.41991009,-547383.624264391,-622009.605029187,-666556.853976758,-666642.005227377,-600282.294374715,-597228.239265461,-622759.145687356,-622992.132520799,-573177.389608753,-622432.287339619,-549041.275123938,-527276.065358903,-542411.061223343,-666606.193627508,-618081.856935359,-613108.437656155,-567230.133820821,-7667.10034069714,-472525.107259143,-453594.98160871,-265833.26296108,-130962.068454663,-149813.022419857,-666599.472159484,-625623.157782583,-615785.261493743,-593979.61248599,-604166.849015008,-666629.214479349,190492.554622805,270284.186845448,270875.823049805,233727.39414692,270329.162739289,331181.797070042],"Archive802_field8":[268.15,268.15,268.150000000001,268.15,268.15,268.15,268.150000000002,268.15,268.15,268.150000000001,268.15,268.15,268.150000000001,268.150000000001,268.15,268.15,268.150000000001,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.150000000001,268.15,268.15,268.15,268.15,268.15,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000002,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.15,268.150000000001,268.150000000001,268.150000000001,268.15,268.15,268.15,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.15,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.15,268.150000000001,268.15,268.15,268.150000000001,268.15,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.150000000001,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.150000000001,268.150000000001,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.150000000002,268.150000000001,268.150000000001,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.150000000001,268.15,268.150000000001,268.150000000001,268.150000000001,268.15,268.15,268.15,268.15,268.15,268.15,268.150000000001,268.15,268.15,268.15,268.15,268.15,268.15,268.150000000001,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.150000000001,268.15,268.15,268.15,268.15,268.15,268.150000000001,268.15,268.150000000001,268.15,268.15,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.15,268.150000000001,268.15,268.15,268.150000000001,268.15,268.15,268.15,268.15,268.15,268.15,268.150000000001,268.150000000001,268.15,268.15,268.150000000001,268.150000000001,268.15,268.150000000001,268.15,268.15,268.150000000001,268.150000000001,268.15,268.150000000001,268.15,268.15,268.150000000001,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.150000000001,268.150000000001,268.150000000001,268.150000000001,268.15,268.150000000001,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.149999999999,268.150000000001,268.150000000001,268.150000000001,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.150000000001,268.150000000001,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.149999999999,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.149999999999,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.149999999999,268.15,268.15,268.15,268.15,268.15,268.149999999999,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15],"Archive802_field9":[0,-305.016019171736,533.372292460979,0,344.328202060745,0,2001.75105892184,0,0,762.761145205284,128.405308265075,138.632010895806,1088.86357444876,1682.89064438805,-419.122620355842,-426.465878020202,789.936779015036,-120.065068508836,0,440.120547042355,-1125.60098168164,-294.979388178446,-548.090416462654,-372.322710470708,-57.4880836299852,-77.7786333162566,199.27500276396,-310.846347446536,449.121568046676,732.601070774276,-301.45697790971,142.325266741376,488.774704941202,658.356188760362,901.114178923485,1389.59324377089,1139.65472860194,1311.89280455709,1192.75349586673,1426.38415553253,1058.35105799071,1900.05563409392,1546.93627153902,1507.28871682751,1349.50607702857,1375.74414062863,1425.82644461301,1794.28619025977,1563.28657784884,1584.77402378314,874.074028888087,1328.52904066432,1435.55938224187,1316.76118952653,1446.60027921339,1329.0996358653,1143.27766774676,558.217734067912,711.299944032778,1243.37482287796,1407.83637266765,1668.18886834858,1355.31297593011,1209.53345839173,1131.60892578367,1389.60378240786,1550.48315559537,901.035853568961,1437.51352259313,805.120602362143,951.347918354746,1874.86719450438,1489.04467173274,1192.93966694916,1263.52321041468,1460.34774469467,881.882996215937,1483.05422372075,965.89344115021,245.146401037979,567.079851243688,-868.66049523613,101.590019921793,483.34899097732,575.317634152498,763.408171801433,1966.44925891888,1756.05196426525,1711.75036453476,1706.02141012775,1255.90045781717,1515.8081253244,1228.22422756609,0,0,46.5436521464908,323.436027921049,428.191498293027,339.928901834543,308.232732334369,258.289412248528,204.816458922456,315.093833967727,0,469.075015917356,0,173.353506276125,344.875059024589,254.77800073028,166.958587868254,196.680050610625,152.570412229324,216.185221706851,131.466018775793,224.987576296037,122.50677595041,142.126536610262,143.516453696054,423.753343964408,322.501518802641,212.570968792686,0,0,172.076617793387,399.140778302764,266.078683745286,596.465857739176,334.969112372327,280.32124668373,855.618685522042,1169.43999076319,1203.20165202514,2241.95989021276,115.95981380258,164.817566693015,690.362883405539,758.413370680801,466.218605390888,503.641114723745,462.167040028341,474.944913242758,640.804126892198,503.350847770923,652.74029224219,430.747080988724,561.349404885946,514.459754139524,358.933834488929,308.56181885582,573.631629600984,277.550070200588,407.099698062555,358.358987622614,270.913566624725,234.147344312486,321.409272821453,330.307239111604,289.419106330255,37.1141144014729,282.539256698831,203.210777328154,239.766935327132,222.453453818228,219.529739534061,161.306927006666,206.887921873915,185.644139014132,225.631554868644,155.012190314339,180.844963520012,164.597203983968,132.517662614326,147.460002023903,0,132.100353619872,143.740699544223,151.507328374633,33.1982563955085,-511.736401490242,-137.171328163693,-182.807238264901,-302.201895631091,-778.61700733917,-724.190486153822,-710.851836380863,-171.256808882099,-155.555667973639,-449.852653155648,272.015589447821,-864.618688373843,-489.166659235639,-552.775274962702,-189.945914111523,1050.69959495328,565.317930925397,127.395152954162,261.323030437395,207.505376919021,128.242304302639,228.458339030927,0,168.320780412524,137.021494348309,124.090277188075,143.064665249219,0,106.691279978021,169.647741335943,114.377520989241,293.972256153737,268.835151648199,245.390227852688,-760.182029359895,-745.146079801461,-1072.15459872419,180.211534219189,155.9545361077,192.168539618537,129.533303832858,175.986866691211,138.489173185913,117.866475226271,146.296266766791,130.923171385124,150.422587004677,0,193.592373151087,173.227618774893,151.020826239484,0,189.599751113852,0,155.277798719235,161.917240972726,176.413888376117,0,167.225271867671,199.95573749223,124.390200645116,0,216.164447629204,220.164683713077,181.2395475958,290.720171964648,234.279103485206,249.690580688423,92.3393936607248,105.189238087994,0,100.18262574912,91.9651571856695,1981.15253091202,1742.48907592584,1602.97851795703,119.235899341827,0,84.6743112110073,93.3885853673585,101.538733909521,84.9521316998111,105.191579242162,261.491416262728,1130.91869754815,96.6308402462828,116.393111543042,90.7157034216164,107.433429308948,101.866733309757,0,90.786333585312,84.7930818222775,122.218064236204,93.8625148138915,0,102.614904371124,75.4156140443193,107.609427983596,115.150771361305,113.256640600279,138.067556596545,75.0089098797737,0,81.1517999683668,74.3847486150845,72.09553834737,0,0,70.6672019315775,0,116.511893550827,140.409314203906,140.385163139034,85.5781280735789,0,68.9112386657629,106.38124950391,81.8934174383026,108.401435002147,104.376082783771,0,0,112.967333267355,116.348948457156,106.056517110265,124.645476494819,121.404556535458,113.74649962477,0,0,115.525857291712,116.101933189017,105.548521315015,95.6566329094549,98.0362133780251,120.420193814379,121.089245456082,122.446630566547,113.515697716005,0,103.560540669434,112.52411049578,113.711587359867,-1269.17040427017,139.213161403373,143.043958547414,177.392409743658,346.624373940327,349.355791192644,0,95.1415433921191,91.0807334565346,82.8512794864008,0,0,262.876366159654,767.023069896851,229.690875099633,348.615178555346,1141.62031872935,980.922240963583,0,-305.834448669608,532.357342373115,0,344.328202060745,0,2000.86659816247,0,0,761.687184540942,128.405308265075,138.632010895806,1087.97832714374,1682.33003776297,-419.501496760217,-426.465878020202,788.848379056172,-122.723963755226,0,440.120547042355,-1125.60098168164,-495.467582242063,-412.772843729647,-463.683470609947,-58.3491023183871,-78.5658867084895,48.3139936329251,-311.937648770465,447.911239517199,731.147535488189,-302.110112255361,140.400409200267,485.188248326078,658.356188760362,778.016909252314,1389.12034350743,1138.84765858954,1311.53988241166,1191.94501053033,1426.05150496138,1055.46272678634,1899.25435113961,1558.267031858,1506.55018302992,1351.00203466386,1377.77671709942,1425.69357239762,1793.59141531517,1562.75825595412,1584.11691725763,873.118086868606,1327.69712391551,1472.09021001483,1315.97701295711,1445.97783265017,1331.87884942807,1097.52391489043,558.217734067912,708.034354151753,1243.18146452288,1406.98550665618,1667.26931979562,1355.14576871532,1209.2442819261,1130.81512857285,1388.98235339989,1549.82720832306,901.269103125889,1436.29115438472,803.802423031869,949.840868456766,1873.89817813638,1488.06083655493,1191.81223830378,1262.41359231888,1459.34661099418,880.646620534312,1481.9757135089,964.583850738875,244.539937878488,565.946333465317,-869.149782231655,100.433490906475,481.914831696644,574.087767286789,762.136226708936,1965.54739210651,1755.12658175074,1710.79317133095,1704.95428538166,1254.68586431394,1514.72161477202,1227.05506016055,0,0,46.5436521464908,323.436027921049,428.191498293027,339.928901834543,308.232732334369,258.289412248529,204.816458922456,315.093833967727,0,469.075015917356,0,173.353506276125,344.87505902459,254.77800073028,166.958587868254,196.680050610625,152.570412229324,216.18522170685,131.466018775793,224.987576296037,122.50677595041,142.126536610262,143.516453696054,423.753343964408,322.501518802641,212.570968792686,0,0,172.076617793387,399.140778302764,266.078683745286,596.465857739176,334.969112372327,280.32124668373,855.618685522042,1169.43999076319,1096.10154303322,2241.95989021276,115.95981380258,164.817566693015,579.816911059396,701.46528491291,466.218605390888,503.641114723745,462.167040028341,474.944913242758,617.626389836915,467.02702166186,652.74029224219,430.747080988724,561.349404885946,514.459754139524,358.933834488929,308.56181885582,572.475085001455,214.049643799141,405.243607482902,358.358987622614,270.913566624725,234.147344312486,321.409272821453,330.307239111604,289.419106330255,-57.4677836807624,282.539256698831,203.210777328154,239.766935327132,222.453453818228,219.529739534061,161.306927006666,206.887921873915,185.644139014132,225.631554868644,155.012190314339,180.844963520012,164.597203983968,132.517662614326,147.460002023904,0,132.100353619872,143.740699544223,151.507328374633,29.9363849803157,-515.000976078932,-138.4382889738,-329.542228495036,-302.452481732863,-778.617007339171,-724.736435494687,-711.287122017359,-172.119288374188,-156.482110889634,-450.632775475476,270.845716847135,-864.949116360343,-489.801284437044,-553.501360138914,-190.783030144791,1049.4179160456,564.100339588447,126.331765686396,261.323030437395,207.505376919021,128.242304302639,228.458339030927,0,168.320780412524,137.021494348309,124.090277188075,143.064665249219,0,106.691279978021,169.647741335943,114.377520989241,293.972256153737,268.835151648199,245.390227852688,-891.246672979798,-805.607048959138,-973.76224992121,180.211534219189,155.9545361077,192.168539618537,129.533303832858,175.986866691211,138.489173185913,117.866475226271,146.296266766791,130.923171385124,150.422587004677,0,193.592373151087,173.227618774893,151.020826239484,0,189.599751113852,0,155.277798719235,161.917240972726,176.413888376117,0,167.225271867671,199.95573749223,124.390200645116,0,216.164447629204,220.164683713077,181.2395475958,290.720171964648,234.279103485206,249.690580688423,92.3393936607248,105.189238087994,0,100.18262574912,91.9651571856695,1980.26795488041,1741.66056456745,1602.08621741737,119.235899341827,0,84.6743112110073,93.3885853673585,101.538733909521,84.9521316998111,105.191579242162,261.491416262728,1130.91869754815,95.7218891609007,116.393111543042,90.7157034216164,107.433429308948,101.866733309757,0,90.786333585312,84.7930818222774,122.218064236204,93.8625148138915,0,102.614904371124,75.4156140443193,107.609427983596,115.150771361305,113.256640600279,138.067556596545,75.0089098797737,0,81.1517999683668,74.3847486150845,72.09553834737,0,0,70.6672019315775,0,116.511893550827,140.409314203906,140.385163139034,85.578128073579,0,68.9112386657629,106.38124950391,81.8934174383026,108.401435002147,104.376082783771,0,0,112.967333267355,116.348948457156,106.056517110265,124.645476494819,121.404556535458,113.74649962477,0,0,115.525857291712,116.101933189017,105.548521315015,95.6566329094549,98.0362133780251,120.420193814379,121.089245456082,122.446630566547,113.515697716005,0,103.560540669434,112.52411049578,113.711587359867,-1269.17040427017,139.213161403373,143.043958547414,177.392409743658,346.624373940327,349.355791192644,0,95.1415433921192,91.0807334565345,82.8512794864009,0,0,261.81340423947,765.986280417569,228.673895904762,347.61716455241,1140.77110120904,979.956737755723,0,-308.306458086226,529.331131137727,0,344.328202060745,0,1998.2000455841,0,0,762.778810124609,128.405308265075,138.632010895806,1078.90627800356,1680.64699215107,-420.717173997771,-426.465878020202,785.498484376111,-133.804289070218,0,440.120547042355,-1125.60098168164,-687.16116160187,-514.884174683347,-606.14620148147,-60.7899430010976,-80.0575084719342,-225.684093883331,-320.653797152524,445.362535061904,726.903044512909,-304.277280103796,130.6051943744,472.687695086452,658.356188760362,641.426862157781,1387.35156088157,1136.97007517868,1310.76118952627,1189.52922421467,1426.90005886904,1036.41530944446,1896.83500100263,1764.07872656052,1504.39081843438,1360.65521927662,1386.49856937577,1425.03368190717,1791.47292347785,1561.21207110382,1582.23448420207,869.910608694994,1325.17765562551,1520.35010321719,1313.39144971566,1444.0901233357,1331.81167719052,1079.73629964493,558.217734067912,700.568550085921,1241.81516523491,1404.70365774666,1664.54818743482,1354.35426421354,1210.40826042391,1128.54525309898,1387.19355333613,1547.86471817879,906.887047150413,1432.66176656726,800.331538952288,944.507780290365,1870.9908363191,1485.08811539582,1188.44029087768,1259.20756265978,1456.34995269303,876.973379030797,1478.73382115895,960.684914901633,246.491422155134,561.870981876531,-868.833134024773,97.4386490455682,478.034681554367,570.401009860502,758.182563198637,1962.84255568864,1752.34560489106,1707.92490138752,1701.73185081071,1251.06469118953,1511.46309295186,1223.52551775733,0,0,46.5436521464908,323.436027921049,428.191498293027,339.928901834543,308.232732334369,258.289412248528,204.816458922456,315.093833967727,0,469.075015917356,0,173.353506276125,344.875059024589,254.77800073028,166.958587868254,196.680050610625,152.570412229324,216.185221706851,131.466018775793,224.987576296037,122.50677595041,142.126536610262,143.516453696054,423.753343964408,322.501518802641,212.570968792686,0,0,172.076617793387,399.140778302764,266.078683745286,596.465857739176,334.969112372327,280.32124668373,855.618685522042,1169.43999076319,1068.1105938345,2241.95989021276,115.95981380258,164.817566693015,472.339293152776,651.704090937071,466.218605390888,503.641114723745,462.167040028341,474.944913242758,529.640391037336,377.685724701446,652.74029224219,430.747080988724,561.349404885946,514.459754139524,358.933834488929,308.56181885582,568.216541270708,233.263772478896,398.857216868493,358.358987622614,270.913566624725,234.147344312486,321.409272821453,330.307239111604,289.419106330255,-116.739156333574,282.539256698831,203.210777328154,239.766935327132,222.453453818228,219.529739534061,161.306927006666,206.887921873915,185.644139014132,225.631554868644,155.012190314339,180.844963520012,164.597203983968,132.517662614326,147.460002023903,0,132.100353619872,143.740699544223,151.507328374633,13.407403539219,-524.699146239216,-148.034776247812,-524.381017816784,-300.227757785699,-778.61700733917,-726.448006644722,-715.370550307684,-174.579240308158,-159.980545156699,-452.900234266361,267.376341756971,-865.438656359004,-491.81854385562,-555.639816355623,-193.291714102922,1045.60946018344,560.468492828219,123.120996650528,261.323030437395,207.505376919021,128.242304302639,228.458339030927,0,168.320780412524,137.021494348309,124.090277188075,143.064665249219,0,106.691279978021,169.647741335943,114.377520989241,293.972256153737,268.835151648199,245.390227852688,-1155.61764890879,-913.843135336463,-1019.13321665979,180.211534219189,155.9545361077,192.168539618537,129.533303832858,175.986866691211,138.489173185913,117.866475226271,146.296266766791,130.923171385124,150.422587004677,0,193.592373151087,173.227618774893,151.020826239484,0,189.599751113852,0,155.277798719235,161.917240972726,176.413888376117,0,167.225271867671,199.95573749223,124.390200645116,0,216.164447629204,220.164683713077,181.2395475958,290.720171964648,234.279103485206,249.690580688423,92.3393936607248,105.189238087994,0,100.18262574912,91.9651571856695,1977.6131813809,1739.14882993712,1599.40362889369,119.235899341827,0,84.6743112110073,93.3885853673585,101.538733909521,84.9521316998111,105.191579242162,261.491416262728,1130.91869754815,92.9940708688513,116.393111543042,90.7157034216164,107.433429308948,101.866733309757,0,90.786333585312,84.7930818222775,122.218064236204,93.8625148138915,0,102.614904371124,75.4156140443193,107.609427983596,115.150771361305,113.256640600279,138.067556596545,75.0089098797737,0,81.1517999683668,74.3847486150845,72.09553834737,0,0,70.6672019315775,0,116.511893550827,140.409314203906,140.385163139034,85.5781280735789,0,68.9112386657629,106.38124950391,81.8934174383026,108.401435002147,104.376082783771,0,0,112.967333267355,116.348948457156,106.056517110265,124.645476494819,121.404556535458,113.74649962477,0,0,115.525857291712,116.101933189017,105.548521315015,95.6566329094549,98.0362133780251,120.420193814379,121.089245456082,122.446630566547,113.515697716005,0,103.560540669434,112.52411049578,113.711587359867,-1269.17040427017,139.213161403373,143.043958547414,177.392409743658,346.624373940327,349.355791192644,0,95.1415433921191,91.0807334565346,82.8512794864008,0,0,258.360963951087,762.928725654282,225.591323565844,344.646072948196,1138.22780414746,977.052641575532],"Archive802_field10":[0,104.608255741654,56.0411828984072,0,25.3493294423938,0,157.861017375713,0,0,29.4003342685591,9.99900079817351,9.62572054818758,113.520543256548,140.65768818913,19.7437244216655,151.351798218722,56.7503938359235,52.6337994542239,0,39.9066093939587,-83.6870684493244,57.0632867953842,2.17820569563549,36.5535149714124,41.7889320515187,49.1064071913214,68.5403266507309,38.7492170807265,54.6103721195809,41.3823188339591,36.992357985544,60.2156547834499,45.5865381163007,25.497491074863,14.7861465174036,101.681522830436,61.494393002946,87.5244908810421,75.9431638548295,78.6725474399716,18.8140277298926,158.364226169857,2.57769776397618,135.812214447637,13.3372528377131,49.1485078701106,119.46208739489,153.418616722407,129.116346248977,138.107622960826,53.7353121728319,91.2887649525601,77.5884303967666,130.219177745558,107.518512423465,80.2164032293615,105.859557088941,46.285446674342,160.863155304812,125.681530928646,133.836708990685,143.581265887073,119.787178105636,109.171726179933,124.923541516149,101.523352568772,117.789933699916,138.104336855282,138.065364770533,134.920459148253,127.633555348025,147.198716534992,134.903576955808,125.873304509316,126.007690040073,134.581070505295,141.127088557484,135.667504917191,131.115926987352,205.069370102547,137.467253485537,50.5488646163677,146.176915247072,152.385257885879,147.532960663485,145.182037436415,154.124341377072,146.085548098185,143.099692828839,139.709471106188,136.953515737585,137.213485303996,134.867916387904,0,0,110.430410508308,18.2098250440793,-17.7201239391155,-8.64791707693868,25.9947397969182,1.67135474531095,13.8371872350486,18.7996830098593,0,61.1879556880353,0,5.79373183160704,22.7366868596915,17.1903563935729,11.4970702393407,12.792186460892,10.4986872762077,14.6001733441305,6.07053261961799,14.7202154423459,8.26721470193643,9.51832168124826,9.71169374931276,30.8362686670296,-33.5263296735235,14.1196900857188,0,0,12.1448610581756,29.1268219681227,18.1897700199561,-37.3080730600656,22.5977273169417,20.4907169493243,87.1589226068212,33.4726889890826,17.0483731547255,-58.1397765623676,8.04670374871282,11.3340909304952,27.7656694866262,114.324507768647,24.5232056968237,36.3626750917444,43.2568442088126,335.521753759254,187.786342660524,218.005766441428,152.963069772735,21.7803610486581,79.1116990155359,43.6335252218484,23.737904988372,23.3744292036396,194.475200495511,247.904446697403,216.928119805716,27.53656083606,20.1617975024896,334.497579807219,16.578362622772,14.2595897311289,28.1976827877573,146.840736682304,21.3003183852108,15.1091586124927,17.4272989339716,15.9893020124701,16.3016729404082,11.9519585067285,15.6225932582934,13.6537421109092,16.9832680653767,11.4270550122273,13.5634781314585,12.0731805960849,9.70911215290723,10.8566529910116,0,9.95295808582111,10.764479297116,11.4449633336734,167.451332432525,73.0042510125319,139.414634286759,116.161119698558,109.581993976743,-24.7083287151925,67.8834162550727,64.6358498675655,119.864975297745,126.088735046262,92.7959866257752,144.051709921999,50.8549140851017,90.967847433686,86.8739643074181,115.903675393701,143.767073532412,146.316008015536,135.981580847738,18.5463853414721,14.4150473477924,9.90278231108998,23.8987317281835,0,12.1503036802087,10.3593234049939,9.30812050847455,10.8684432900277,0,7.82023947885492,12.9233026756096,8.11378715225518,15.1678653236229,21.2915431699844,1.71057009426352,54.8614341914264,31.2580070430099,45.2667627534498,12.7605437731804,11.0812569384999,13.5789457341933,9.28788631957558,12.6200135798626,9.8109028681107,8.3452922410901,10.4215895608026,9.52689242796703,11.6552956669688,0,15.2082478969808,13.1354879323238,11.9421296772895,0,27.6179913089122,0,13.8798482673818,14.8552579804115,15.0284014610037,0,13.5373062820019,14.3808068448816,8.8214424971675,0,18.3119268040795,17.0362404028027,16.0676418055519,22.5085995086455,18.4293005483193,19.4413197746504,6.33861231587389,7.21833620689904,0,7.20747628298636,6.70361534191199,158.966782869804,148.427632501789,141.313152800493,5.37242837277631,0,4.82654418134557,7.05169666957991,3.69950774221046,3.69876175062616,7.82267025289625,18.3894727208573,185.400909682888,133.140937153904,8.74875871179603,6.80638220669983,8.44373495436936,7.38992855223465,0,7.84843788166519,6.6173174328343,9.61342472277609,7.51806688833854,0,7.26896537280364,6.14895521527707,9.21157443134719,10.4132544542805,9.79184828914889,10.5181738655106,5.93046954600934,0,8.62492603999606,6.15371852899506,5.73879669158276,0,0,7.96625993882542,0,12.6035148245164,9.90928177598249,11.069271313865,6.10283012561663,0,7.62466356740186,8.3210969980545,9.93058492811218,8.97112966687047,9.59897605005152,0,0,9.74665695746324,8.48388341119185,9.58323104704719,9.23713520428514,8.6172851564474,9.80919631986754,0,0,8.63462075349261,9.71267838906691,8.69229208873142,10.9441582278127,7.02524943731046,8.52755373373979,8.96740064620934,8.99659320196971,8.68680492374257,0,6.11387496982003,7.10617120295438,8.88748430357957,42.4221154789525,10.2105912274747,10.3197828208321,13.7579651990031,37.7839891211507,27.0505588252844,0,5.8619347875813,5.84418163148496,5.9439436168567,0,0,49.1800535775875,60.5398890291652,46.0717049444172,50.121906549187,76.6654205845738,70.7621957529743,0,104.547530390309,56.0078865279317,0,25.3493294423938,0,157.820042378509,0,0,29.349852287533,9.99900079817351,9.62572054818758,113.589604152989,140.581995428563,19.6619160760975,151.351798218722,56.7252045275265,52.6139484348517,0,39.9066093939587,-83.6870684493245,36.1584878437381,-0.568570140373009,19.2679516181965,41.7712532350431,49.0800287795823,78.3227471369072,38.7228796036451,54.6112137495248,41.3879923563689,36.967613582745,60.3656893318537,46.0014331527286,25.497491074863,12.9769698951483,101.583978202046,61.4096408169319,87.3420010457249,75.8627456405199,78.4914832429624,18.6650199118275,158.321596540394,-5.19544507053341,135.765671623664,12.7928899702282,48.6310432489979,119.365420777645,153.366106805861,129.036411560463,138.047839177561,53.6998298777996,91.2259350233547,73.2273594410491,130.175121627564,107.433059869253,80.0664621191995,101.310624491837,46.285446674342,160.839690257091,125.558630880074,133.824492413566,143.543619486532,119.70692162259,109.083004311545,124.908072087115,101.435400032331,117.708360280967,138.08900486958,138.07443462947,135.046712646145,127.750155781564,147.163340690528,134.861209855888,125.84957723261,125.970491681877,134.547665054789,141.155336770388,135.647786733793,131.102780313639,205.375558623373,137.547938273043,50.5304879590309,146.14784479296,152.384513774057,147.520790766531,145.200980909814,154.083810453977,146.045437282171,143.062879539414,139.690754043615,136.962154761048,137.194242791783,134.878001393725,0,0,110.430410508308,18.2098250440793,-17.7201239391155,-8.64791707693868,25.9947397969181,1.67135474531095,13.8371872350486,18.7996830098593,0,61.1879556880353,0,5.79373183160704,22.7366868596915,17.1903563935729,11.4970702393407,12.792186460892,10.4986872762077,14.6001733441305,6.07053261961799,14.7202154423459,8.26721470193643,9.51832168124826,9.71169374931276,30.8362686670296,-33.5263296735235,14.1196900857188,0,0,12.1448610581756,29.1268219681228,18.1897700199561,-37.3080730600656,22.5977273169417,20.4907169493243,87.1589226068212,33.4726889890826,13.0794150652107,-58.1397765623676,8.04670374871282,11.3340909304952,34.2006355852816,107.236016524741,24.5232056968237,36.3626750917444,43.2568442088126,335.521753759253,190.890936886141,239.84947685376,152.963069772735,21.7803610486581,79.1116990155359,43.6335252218484,23.737904988372,23.3744292036396,194.879194335814,247.815563240172,217.568549216793,27.53656083606,20.1617975024896,334.497579807219,16.578362622772,14.2595897311289,28.1976827877573,93.2198987525708,21.3003183852108,15.1091586124927,17.4272989339716,15.9893020124701,16.3016729404082,11.9519585067285,15.6225932582934,13.6537421109092,16.9832680653767,11.4270550122273,13.5634781314585,12.0731805960849,9.70911215290722,10.8566529910116,0,9.95295808582111,10.764479297116,11.4449633336734,166.232977500866,72.6263009850306,139.249667674039,77.4120507449854,109.530385898502,-24.7083287151925,67.8227945375086,64.5947575952818,119.79823801466,126.002528939161,92.7126847713005,144.024214145391,50.8167651802786,90.9065986548776,86.8139293512008,115.839150604881,143.782234342387,146.309046700611,135.936471865282,18.5463853414721,14.4150473477924,9.90278231108998,23.8987317281835,0,12.1503036802087,10.3593234049939,9.30812050847455,10.8684432900277,0,7.82023947885492,12.9233026756096,8.11378715225518,15.1678653236229,21.2915431699844,1.71057009426352,43.1776307143409,23.9357939341189,35.4798087054653,12.7605437731804,11.0812569384999,13.5789457341933,9.28788631957559,12.6200135798626,9.8109028681107,8.3452922410901,10.4215895608026,9.52689242796704,11.6552956669688,0,15.2082478969808,13.1354879323238,11.9421296772895,0,27.6179913089122,0,13.8798482673818,14.8552579804115,15.0284014610037,0,13.5373062820019,14.3808068448816,8.8214424971675,0,18.3119268040795,17.0362404028027,16.0676418055519,22.5085995086455,18.4293005483193,19.4413197746504,6.33861231587389,7.21833620689904,0,7.20747628298636,6.70361534191199,158.925808425461,148.386567162025,141.277060389896,5.37242837277631,0,4.82654418134557,7.05169666957991,3.69950774221046,3.69876175062616,7.82267025289625,18.3894727208573,185.400909682888,133.089446940897,8.74875871179603,6.80638220669983,8.44373495436936,7.38992855223465,0,7.84843788166519,6.6173174328343,9.61342472277609,7.51806688833854,0,7.26896537280364,6.14895521527707,9.21157443134719,10.4132544542805,9.7918482891489,10.5181738655106,5.93046954600934,0,8.62492603999606,6.15371852899506,5.73879669158276,0,0,7.96625993882541,0,12.6035148245164,9.90928177598248,11.069271313865,6.10283012561663,0,7.62466356740186,8.3210969980545,9.93058492811218,8.97112966687047,9.59897605005152,0,0,9.74665695746324,8.48388341119185,9.5832310470472,9.23713520428514,8.6172851564474,9.80919631986754,0,0,8.63462075349261,9.71267838906691,8.69229208873142,10.9441582278127,7.02524943731046,8.52755373373979,8.96740064620934,8.99659320196971,8.68680492374257,0,6.11387496982003,7.10617120295438,8.88748430357957,42.4221154789525,10.2105912274747,10.3197828208321,13.7579651990031,37.7839891211507,27.0505588252844,0,5.8619347875813,5.84418163148496,5.9439436168567,0,0,49.1668122956515,60.5048876860643,46.046410582669,50.0990004714523,76.6015274141911,70.7222281363391,0,104.364350741257,55.9105873872079,0,25.3493294423938,0,157.697354001386,0,0,28.5767541103724,9.99900079817351,9.62572054818758,114.579826260124,140.353984802467,19.1791816345943,151.351798218722,56.6477229327305,52.5291520190013,0,39.9066093939587,-83.6870684493244,23.7133932244429,-8.4067482774498,2.63751790713994,41.734111145081,49.1746722543021,86.4988922238668,37.887938291765,54.7046076477645,41.357703989276,36.8846050841603,61.7294085785438,47.8441133875554,25.497491074863,5.49195736483002,101.284781557332,61.2383094113183,86.9263725640578,75.613516675448,77.8708471305767,18.4536771008684,158.194726674603,-33.2923686696726,135.631283819465,10.9516400402175,46.2228650477443,119.096009956914,153.208639041689,128.797109790531,137.865471487667,53.5712374977056,91.0352808903103,67.1234876316555,130.044250034133,107.17759872366,80.4166738627284,77.9841887474937,46.285446674342,160.678826868095,125.349794554373,133.759362613263,143.430404837856,119.432173052357,108.67270679498,124.873511373251,101.174719448902,117.463535855087,137.228032689061,138.111599063977,135.366957211855,128.120096538535,147.057800817895,134.736685280477,125.777000114292,125.855959481307,134.445503439839,141.296869635674,135.580727269858,131.125173128092,208.15925709873,137.470597468934,50.5839728413574,146.263415368532,152.303444077733,147.479949163466,145.233539736368,153.961747335503,145.924935100745,142.953949768571,139.632258302402,136.984522967289,137.144097271334,134.883893415117,0,0,110.430410508308,18.2098250440793,-17.7201239391155,-8.64791707693868,25.9947397969182,1.67135474531095,13.8371872350486,18.7996830098593,0,61.1879556880353,0,5.79373183160704,22.7366868596915,17.1903563935729,11.4970702393407,12.792186460892,10.4986872762077,14.6001733441305,6.07053261961799,14.7202154423459,8.26721470193643,9.51832168124826,9.71169374931276,30.8362686670296,-33.5263296735235,14.1196900857188,0,0,12.1448610581756,29.1268219681227,18.1897700199561,-37.3080730600656,22.5977273169417,20.4907169493243,87.1589226068212,33.4726889890826,1.20075990829885,-58.1397765623676,8.04670374871282,11.3340909304952,31.4020056270759,92.3276692482399,24.5232056968237,36.3626750917444,43.2568442088126,335.521753759254,210.086772399729,298.132114760749,152.963069772735,21.7803610486581,79.1116990155359,43.6335252218484,23.737904988372,23.3744292036396,196.860468386467,281.067581097013,219.564023827577,27.53656083606,20.1617975024896,334.497579807219,16.578362622772,14.2595897311289,28.1976827877573,54.5008172426314,21.3003183852108,15.1091586124927,17.4272989339716,15.9893020124701,16.3016729404082,11.9519585067285,15.6225932582934,13.6537421109092,16.9832680653767,11.4270550122273,13.5634781314585,12.0731805960849,9.70911215290723,10.8566529910116,0,9.95295808582111,10.764479297116,11.4449633336734,161.632419681065,72.0181568379422,137.465341187657,-3.00156855507487,109.51209748692,-24.7083287151925,67.640263505301,64.3883245195623,119.613262504911,125.679485950123,92.4635257631703,143.912878655487,50.7102965976936,90.7197790278642,86.6352904111965,115.643198502017,143.831945861164,146.297563168253,135.801858264766,18.5463853414721,14.4150473477924,9.90278231108998,23.8987317281835,0,12.1503036802087,10.3593234049939,9.30812050847455,10.8684432900277,0,7.82023947885492,12.9233026756096,8.11378715225518,15.1678653236229,21.2915431699844,1.71057009426352,0.56248019774701,-8.11348209228001,14.1806629261747,12.7605437731804,11.0812569384999,13.5789457341933,9.28788631957558,12.6200135798626,9.8109028681107,8.3452922410901,10.4215895608026,9.52689242796703,11.6552956669688,0,15.2082478969808,13.1354879323238,11.9421296772895,0,27.6179913089122,0,13.8798482673818,14.8552579804115,15.0284014610037,0,13.5373062820019,14.3808068448816,8.8214424971675,0,18.3119268040795,17.0362404028027,16.0676418055519,22.5085995086455,18.4293005483193,19.4413197746504,6.33861231587389,7.21833620689904,0,7.20747628298636,6.70361534191199,158.803156997685,148.262463826234,141.173163976966,5.37242837277631,0,4.82654418134557,7.05169666957991,3.69950774221046,3.69876175062616,7.82267025289625,18.3894727208573,185.400909682888,132.935208819601,8.74875871179603,6.80638220669983,8.44373495436936,7.38992855223465,0,7.84843788166519,6.6173174328343,9.61342472277609,7.51806688833854,0,7.26896537280364,6.14895521527707,9.21157443134719,10.4132544542805,9.79184828914889,10.5181738655106,5.93046954600934,0,8.62492603999606,6.15371852899506,5.73879669158276,0,0,7.96625993882542,0,12.6035148245164,9.90928177598249,11.069271313865,6.10283012561663,0,7.62466356740186,8.3210969980545,9.93058492811218,8.97112966687047,9.59897605005152,0,0,9.74665695746324,8.48388341119185,9.58323104704719,9.23713520428514,8.6172851564474,9.80919631986754,0,0,8.63462075349261,9.71267838906691,8.69229208873142,10.9441582278127,7.02524943731046,8.52755373373979,8.96740064620934,8.99659320196971,8.68680492374257,0,6.11387496982003,7.10617120295438,8.88748430357957,42.4221154789525,10.2105912274747,10.3197828208321,13.7579651990031,37.7839891211507,27.0505588252844,0,5.8619347875813,5.84418163148496,5.9439436168567,0,0,49.0851778604356,60.406516947454,45.9662407811616,50.0357209165051,76.4113434954258,70.6018626770834],"Archive802_field11":[0,0,0,0,345.261944814363,0,0,0,0,3.52437078906402,128.794143595359,138.965880370117,11.0351010421549,0,0,452.563312490282,0.220679017286459,5.64476506865548,0,441.927153575548,1128.71218495478,2560.21996896901,0,3239.47717342505,0,1.43352518461202,4129.52420561557,6.76008608882316,1.86074678829294,1.60919796266414,0,0.195266871581407,19.5417499452557,658.849965286955,6790.36130419175,0.0435383528105069,1.80348121388323,5.93049519554127,0.191319136184635,0.489840906254354,6.44015567922626,0,11039.8170452721,0.226906857972855,26.380862806502,0.510988066180319,0.476187426122535,0,0.425395477494167,0.407180858374511,0.52987143641141,0,10208.4658887512,0.869786691535692,0.38134577052667,45.1252637047374,9393.87384183221,560.384571169217,33.114496409299,2.08392598073801,1.18743762023129,0.524871282047094,0.505619243238547,9.1217978233344,0.418028087090688,0.355483146802844,0,1.95302281246173,0,4.9170303263922,0.922861073178912,0,0.322308717518311,0.335251066895178,0.241995897943747,0.45983643513462,0.0535868782305773,0.598035202690807,0.86125448694053,0.985683510198319,3.29789127200848,0,0.399645538845595,0.117824327581612,0,0.437611922076485,0,0.324202834408735,0.34827310980888,0,0.392374252005387,0.318230569979296,0.536007376114696,0,0,120.15672032491,323.949010685331,428.55810116033,340.044635378278,309.328224711737,258.295197934798,205.283358740399,315.655107269879,0,473.050629020574,0,173.450434869081,345.624628304118,255.357299410356,167.354071375706,197.095831097788,152.931318067184,216.677842114018,131.60617934893,225.468708251121,122.785483061774,142.444995494151,143.84476503819,424.874761000171,324.427166035674,213.039507723518,0,0,172.504769593786,400.20313973898,266.699866502932,597.634581614386,335.730966008123,281.069527332583,860.095723992694,1170.03597464385,5645.85300926073,2243.03593595273,116.238743256496,165.206916317961,3273.07126877397,6251.3286614543,466.864589928127,505.022055633863,464.196941164833,582.44199560315,5281.47805741644,10603.7053301415,670.423777065624,431.333461373115,566.906773896931,516.317713415351,359.71797354874,309.446129746899,8.93439651661216,5881.85803537339,20.6869268185706,359.416541779235,271.662801566688,408.339683700994,321.836552240908,330.617317209633,290.789531397217,1734.293089182,283.341213735393,203.771847229303,240.399597447412,223.027475250698,220.134372307186,161.749231920022,207.477084589311,186.145690899164,226.27000671272,155.43291218052,181.353021281769,165.039517710692,132.872961761089,147.859228575702,0,132.47486831978,144.143308346508,151.93911275216,15.1939552338196,6.75597801687637,0.16350533809173,4923.29651008053,0.545328310336109,779.036489669213,0,0.666703778463799,0.236031788536428,0.212776978308406,0.510445015046351,0.249255809787668,0,0.414595452777205,0,0.406604062717207,0,0.380555763713298,0.408544615692941,261.980646157985,208.005636414844,128.624181444294,229.706035691136,0,168.758867460706,137.412643480415,124.438996764706,143.47701969578,0,106.977587066564,170.139395159171,114.66504032555,294.365175027909,269.677651643925,245.396525148203,4438.01307803156,1831.84341280321,0,180.662866781177,156.347833780323,192.647826792175,129.865949772513,176.43890595662,138.83634679435,118.161617218516,146.667093638279,131.269423092725,150.873581637876,0,194.188982059251,173.725056342595,151.49238757221,0,191.601057118763,0,155.897093536627,162.597430295323,177.052877059124,0,167.772477922267,200.472352738398,124.702685547325,0,216.938866634256,220.823085837512,181.950510734495,291.590394131987,235.003031044062,250.446598241047,92.5567511357503,105.436684994947,0,100.44162264417,92.2092117447982,0,0.359360842684668,0.367917949284098,119.356947031887,0,84.8118117470567,93.6544966564305,101.606172037749,85.03266884813,105.48211418334,262.137311076234,1146.212775832,0,116.721545210688,90.9707643435924,107.764827652076,102.134517619926,0,91.1250279604008,85.0509752074955,122.59567408863,94.1632043734391,0,102.87212716227,75.6659442355754,108.003073525538,115.620759846581,113.679243189815,138.467735508141,75.2430530806444,0,81.6089279265854,74.6389270584361,72.3236482335728,0,0,71.1148718688206,0,117.191700473412,140.758675112831,140.821011736686,85.7955295204769,0,69.3318338301587,106.706293436071,82.4934030465666,108.772102199201,104.816622734213,0,0,113.38710250099,116.657936970343,106.488694115969,124.987374728507,121.710087702792,114.168760885762,0,0,115.848175195041,116.507566426111,105.905924134007,96.2807499096266,98.2876855686298,120.721844617625,121.42092715327,122.776774641676,113.847663846534,0,103.740926449898,112.748349183954,114.058451432762,1269.88949985036,139.587205450135,143.415835967914,177.925263078663,348.680107364871,350.401492467613,0,95.3220172438818,91.2680915438329,83.064272791494,0,0,0.0615324693859601,0.465772510963705,0,0.498480083475297,0.387269851352259,0,0,0,0,0,345.270547876789,0,0,0,0,6.62191147438329,128.794241576668,138.965982441022,15.3721806634853,0,0,452.681905515482,0.18820128276422,10.6117503875313,0,441.961006420709,1128.7438725634,2560.21410480396,0,3239.45424701637,0,2.06303871546526,4129.52928422506,11.3183719282912,3.04037659168734,2.64613052041365,0,0.0712175768297909,30.4461220083926,658.859886615666,6790.38660548369,0.295990837540146,2.91551057767968,9.3262031364739,0.126387213189212,0.730584598930736,11.3022478344861,0,11039.8754947306,0.222453672152416,40.18768833589,0.964744962406688,0.582635107112855,0,0.452674931614316,0.429094818512935,1.16971018067048,0,10208.3367653235,1.54150564493493,0.377488211884596,71.8679737433492,9393.86957527627,561.560249338563,52.612427238959,3.14391428756669,1.64263515643174,0.598768487501816,1.06632166443258,14.1264553466599,0.342013395101835,0.426409441272235,0,1.2365148044549,0,7.46565010244854,1.58778748616778,0,0.35687294596839,0.719614176785979,0.170391956019078,0.596853694291395,0.178503312377496,0.761934177663362,1.55333856160822,0.673781175303784,5.36115939208207,0,0.634551275696528,0.0393506315948969,0,0.417113900928408,0,0.287209823617771,0.313443419022042,0,0.425989708040088,0.248589505388032,0.714972218101393,0,0,121.512564985578,323.95220560763,428.562878261556,340.09486170079,309.338230144142,258.297460399795,205.283371060424,315.659303648273,0,473.064124981184,0,173.450575967835,345.628821401007,255.35727878964,167.354180187601,197.09638912478,152.931527336313,216.678150379109,131.606210602416,225.468819207787,122.785550252954,142.445076741361,143.844864646155,424.880166616627,325.291822665541,213.03966000835,0,0,172.504890735493,400.209472306892,266.700212927448,597.651841359594,335.732374899021,281.070625703953,860.262135564956,1170.59471805921,5645.82742598506,2244.49637702155,116.238789385955,165.207042883784,3273.05143883099,6251.30682047253,466.867245726413,505.360441295282,464.252332127439,586.056873005946,5281.45433538107,10603.6605325307,670.431784774384,431.551493575216,566.950803054613,516.365046061941,359.71834684244,309.446584421007,14.0363907854235,5881.80733909625,32.9104758221392,359.422288754246,271.662776332063,408.577367507892,321.837711737516,330.621689141502,290.789511089053,1734.29764402797,283.341566823597,203.772053215702,240.399874999678,223.027662338557,220.134807462195,161.749385845472,207.477296556901,186.145854480947,226.270420666076,155.43303256356,181.353181306734,165.039681412653,132.87312602678,147.859325840719,0,132.474951455941,144.143394535181,151.939247444977,26.5284231818505,12.8882757574585,1.03852586945084,4923.28487968131,0.275190263341051,779.201342088365,0,2.34220211261729,0.167767948202743,0.259271369807127,0.990208873359242,0.20515315322364,0,0.340918629075692,0,0.431037919661858,0,0.391758671842771,0.41916367481591,261.981572381692,208.005960948043,128.624256705799,229.716282226234,0,168.759013964452,137.412738887287,124.439173581798,143.477140852528,0,106.97762874843,170.139567689632,114.665028885373,294.412039471292,269.681080770824,245.422414329449,4437.99950023934,1831.84005536138,0,180.663020350152,156.347959526448,192.648014227725,129.866019811688,176.439065536484,138.836430059874,118.161720296961,146.667205926399,131.269514475207,150.87370280978,0,194.189191149186,173.725234649662,151.492529183573,0,191.603084892799,0,155.897459309181,162.597736452111,177.053122489222,0,167.772689273001,200.472607755438,124.702742713066,0,216.939064164284,220.82376609419,181.950619084691,291.590642950425,235.00335082306,250.447324224608,92.5567400937168,105.436773743681,0,100.441560018534,92.209263067527,0,0.336071642555125,0.432730709469057,119.356975444023,0,84.811795221001,93.6548480377951,101.606179536435,85.032627217129,105.482178778454,262.137381087992,1147.12507791511,0,116.721621865572,90.9708440733414,107.764884992951,102.134595741614,0,91.125214102788,85.0510249587678,122.595763582467,94.1632375905036,0,102.872202566447,75.6659836078123,108.003146729636,115.620814354698,113.679270795345,138.467842220557,75.2430060777489,0,81.6089452285499,74.6389902257406,72.3236308559009,0,0,71.1152861695774,0,117.19170180774,140.758839557229,140.821135693435,85.795480843366,0,69.332457155292,106.706506615292,82.4944859167953,108.772024367585,104.817134283514,0,0,113.38842832423,116.657856250803,106.489425439621,124.987519044143,121.710037251671,114.171030152621,0,0,115.848499708217,116.50774714738,105.907786330709,96.2824072239327,98.2876048469919,120.724255466129,121.421029287103,122.776891442957,113.847693930151,0,103.74178413276,112.750366943201,114.058374838166,1269.95730582059,139.587324243623,143.415932903966,177.925419206912,348.691898098607,350.401491318577,0,95.3235753638792,91.2686847457171,83.0645073872847,0,0,0.347186770338552,0.502120982342676,0,0.556348291318048,0.399854978785548,0,0,0,0,0,345.337983355363,0,0,0,0,15.9145335303411,128.794721749072,138.966506426731,28.3834195274764,0,0,453.530172187009,0.0907680791974955,25.5127063441585,0,442.346025656148,1129.02124769881,2560.25276227468,0,3239.44655640909,0,3.95157930802496,4129.54534099265,24.9932294466954,6.57926600187061,5.75692819366215,0,0.30093030742499,63.1592381978032,658.97841950514,6790.47625718032,1.05334829172905,6.25159866906902,19.5133269592718,0.0684085557970561,1.45281567695984,25.8885243002652,0,11040.0701109253,0.209094114691093,81.6081649240542,5.39194404816733,0.901978150083823,0,0.534513293974762,0.494836698928203,3.08922641344771,0,10208.1398533836,3.55666250513261,0.365915535958377,152.096103859185,9393.85701171805,570.773285874862,111.106219727938,6.3238792080528,3.00822776503309,0.820460103865986,2.74842892801466,29.1404279166365,0.113969319135301,0.63918832468041,0,0.913009219565714,0,15.1115094306175,3.58256672513434,0,0.460565631318628,1.87270350645837,0.0444198697549328,1.00790547176171,0.874773884201708,1.25363110258103,3.6295907856113,5.65217523181014,11.5509637523028,0,1.33926848624932,0.510875509124427,0,0.355619837484176,0,0.17623079124488,0.208954346661533,0,0.526836076144186,0.0396663116142468,1.25186674406151,0,0,131.516689939458,323.976663745707,428.620288722026,340.555375936191,309.427425327423,258.316489132953,205.284594809187,315.692056945781,0,473.186168072152,0,173.451294277231,345.661956270015,255.357327056612,167.35474906134,197.100141154825,152.932794475241,216.680022900726,131.606335304913,225.469401228591,122.785882569079,142.44547487466,143.845377564761,424.925307429164,332.024255239497,213.040494379636,0,0,172.505533472247,400.263148913486,266.702419343091,597.794680641819,335.742213191375,281.078287063816,861.46625589986,1175.026046944,5645.79348095185,2255.9142618968,116.23899338424,165.207727332594,3273.10791396888,6251.28185612765,466.883267537935,508.050972215341,464.709368839548,612.545668798948,5281.43863827437,10603.5413767408,670.600158862714,433.38563806694,567.292181305187,516.731818047445,359.72167912585,309.449372352228,29.3423735918571,5881.75483218846,69.5811228328452,359.468532656438,271.662793385256,410.64764301199,321.857173745959,330.648035759539,290.789493201479,1734.47706797311,283.343710164953,203.773209123407,240.401558249949,223.028716817823,220.137555703509,161.750215940239,207.47847951393,186.146746075184,226.273059886443,155.433661698523,181.354028976629,165.040578378469,132.874092578629,147.859801642341,0,132.475353006401,144.143805599942,151.939953320391,60.531827025943,31.2851689792049,3.66358746352813,4923.25750595399,2.73674598437253,780.586790092361,0,7.36869711507777,0.0370235727983123,0.39875454430327,2.42950044829792,0.0728451835315607,0,0.119888157971153,0,0.504339490495814,0,0.425367396231191,0.451020852184816,261.988026953097,208.007958490604,128.624606115925,229.811752361993,0,168.759800463483,137.413207440436,124.440219967915,143.477759416857,0,106.977802260844,170.140505766015,114.664999232874,294.930025432494,269.708709125555,245.747398175779,4437.97470853552,1832.01571578173,0,180.663858123858,156.348625811821,192.649072298042,129.866350431695,176.43992448186,138.836836192492,118.162291176145,146.667794456821,131.269982705695,150.874313532998,0,194.190330529204,173.726217490426,151.493265278472,0,191.619652338807,0,155.899711834021,162.5996068967,177.059293251289,0,167.773846560516,200.47412119462,124.703006238725,0,216.940095870821,220.828355469504,181.951144946352,291.59203724734,235.005252070862,250.452124369069,92.5567140923612,105.437259002018,0,100.4418336549,92.2095176658199,0,0.266204042166499,0.627168990023929,119.357087716062,0,84.8117643317606,93.65784102712,101.606204462615,85.0326757697028,105.482503706422,262.13773619969,1154.28743002052,0,116.721988058049,90.9712492517739,107.765140417107,102.134981996098,0,91.1264292514998,85.0512496993526,122.596194416902,94.1633699817429,0,102.872567758459,75.6661540914803,108.003485401526,115.621046432753,113.679373267753,138.468371765549,75.2430328737444,0,81.609007238157,74.6393013625734,72.3235944116882,0,0,71.118734897458,0,117.191705861019,140.759740759746,140.821764658302,85.7954954045857,0,69.3383092849277,106.70784203036,82.5053264310381,108.772367051861,104.821467787624,0,0,113.402039992455,116.658185723573,106.496055441453,124.98833870563,121.710012200231,114.196361970158,0,0,115.850942503728,116.508923506522,105.927914408678,96.2999985302479,98.2883033919073,120.751225589547,121.421564913456,122.777544965264,113.84781567217,0,103.750186043703,112.772882287151,114.059384579848,1270.54055983981,139.587959338903,143.416412696964,177.926230734618,348.785468431744,350.401488576335,0,95.3409128274943,91.2743677795197,83.0663558910744,0,0,1.20414967319633,0.611166396479594,0,0.729952914846304,0.437610361085414,0],"Archive802_field12":[4497300.2599633,6388984.03530792,7195349.73325513,4504442.37505872,8976512.34995188,4500113.92782202,11290051.8842815,4503990.56491564,8973328.6770034,7645687.82819648,7871711.59158606,7871543.63481908,8568567.65370968,10367172.0587683,4473865.50268328,6477796.42368149,7701636.59322581,6340894.47793988,4488586.38050582,5546339.54450481,5556198.66375638,7347642.29761665,6586973.25441465,7459983.80626017,5834607.61796921,5945414.54556612,7856370.83836461,5732418.43566114,6982379.44206232,7437788.44356776,5154236.56032625,6765529.61015802,6933987.86192643,7727414.05305994,8349740.98377227,9221977.66331222,8336501.05081009,8779586.96008943,8611073.95496273,8827295.42498127,8176668.76957455,11109729.7840249,8820722.17941729,9991717.90264383,8235135.40499096,8592319.76195319,9513651.1557863,10808730.3745216,9967226.96506883,10158811.7910107,7809285.06133471,9062378.70851173,8867514.7966326,9597244.60495076,9447732.67494023,8342157.47727875,8949931.66999021,8976601.99263668,8106253.69932692,9222212.18164241,9771732.33015074,10462529.0998761,9351998.50413128,9014680.24884932,9201940.36807809,9254240.52188415,9785054.83676503,8638636.75207495,9963989.20979472,8714767.12995711,8977213.6320063,10908138.3595381,10037638.4820939,9422199.82138162,9531207.08886769,9972408.32071735,8909046.25730179,10035233.7409849,9035928.3006067,7645913.37113586,8376344.42090648,3667499.80473607,7569372.66457302,8188760.7185124,8457604.43505132,8750705.28194005,11169374.5750348,10665626.2243706,10548290.1794708,10506343.2377914,9614256.43455799,10116529.6007663,9545769.42894066,4503918.09646059,4501583.92363525,7172473.10029969,6966644.78876356,7322857.13836368,6733270.66867437,6256373.38548749,5513197.58091159,6498112.09486334,7998335.0936555,4501693.88033998,7955950.71538355,4499461.85159479,5662689.07154015,7577274.21102891,7230441.74379716,7208706.94956915,7035673.97840274,6437665.02687251,7925817.21629091,5521134.0189251,7533397.35958872,6597509.43056089,6738318.73511529,7373784.83496001,8717874.73601417,8300998.14791825,5782365.96941349,4500642.65637493,7850875.82161118,8060695.36201318,8390823.20746715,8528931.14973454,8561559.17482101,8589407.14337848,8897376.26532265,8778987.67325437,8572904.58704407,8519169.08578692,8759446.89005898,7131288.5741645,7634475.47306162,8162312.86667269,8674901.33754109,8715188.55717644,8890236.79565326,8972769.88083436,8560287.03358537,8630330.32675088,8683318.8995786,8709768.11385707,8257817.32872268,8982170.0650313,8887446.76805801,8876993.00571621,8842626.5124335,8348608.72693355,8405593.11844037,8090566.76487115,8939760.67795131,8967399.65688204,8196233.30909318,7363673.29211523,7867620.26757136,7789388.21903699,8024223.37115544,8984310.92247266,8967097.54550528,8960201.31561797,8765833.04623271,8986591.55318617,8964520.27233856,8717164.52645165,8991054.55706485,8902105.94833784,8914888.45419957,8869190.3162584,8990044.79102574,8994867.33793318,8994264.90512879,7855274.29536885,8798420.70537244,8927035.29349782,8720034.04688024,6793308.18377277,5501809.66013806,7154373.37120868,8032523.19786498,6473590.19056535,6684226.10756947,5028241.92002199,5243588.66980557,6877807.80486054,6982987.23413151,6085041.7128112,7856766.27966209,4347870.86237903,5934910.1117921,5708612.97766496,6782113.80982487,9281076.27554802,8412544.0817014,7556545.517084,8752185.48164472,8411982.92254762,8399178.08946941,6146538.13006453,4499886.65106728,8619040.07880754,8650216.41056531,8592087.83901992,8468747.3331856,8693326.05765462,8057561.07434877,8551572.95679352,8828292.44384746,6676114.30714899,7148995.54743739,5689784.74332757,7157666.95660357,7029000.54852628,6039890.94127188,8417571.57049076,8246593.13436454,8683146.86732851,8439302.85381277,8860998.58981596,8250844.84723083,7796570.69059175,8619551.27747338,8838803.27299531,8174033.747335,4501735.99964691,8123356.12575707,8269746.80537651,7568626.23983764,4495829.558697,5304834.65395885,4499775.5028644,5750566.46421628,5302148.32557719,6166561.64040534,4498573.75098709,6980729.68899869,8864838.47021028,7610392.65720488,6456854.05865302,7285791.11449364,7861329.14784526,6730665.98057821,8436643.68230696,8280405.82060779,8650696.76313331,6851878.78915815,7220802.94635191,4501998.31723901,7778053.87888498,6133479.66758106,11270170.2872782,10657630.6748477,10290490.7572597,5637587.83126568,4501427.35478866,5313198.12127045,5670771.52433152,5492837.58179891,5971781.09634762,6301621.25272719,8187890.70838707,8888646.62392864,7493573.68830462,7968640.78490323,6950818.51525907,7289090.45482879,7572263.24471679,6452487.92579482,7427327.22281691,6012724.79031384,7211903.94631874,6682042.49742673,4498825.10545337,6632580.2994594,5952860.38191337,5654566.80435994,6529166.27875823,5772625.59809424,7702515.10915465,6522668.38168196,4499302.74368897,5210655.54227117,5194556.72913804,5345980.60185047,4501154.3767922,5590502.31003364,5368996.6080241,4497538.48615276,5235245.39349433,6325106.37856216,6868529.35620479,7022425.16305782,7226139.78918517,6083557.88574359,5244914.16818103,6970611.33433228,8507331.98658718,8667820.18331946,8900561.97313492,8343877.89032643,8872606.88171585,8990642.12777794,8132466.52625864,8936396.55703791,8966543.62557128,8971587.21153378,8695670.46517453,8895499.69314662,8984150.17520148,8822402.57109363,8421574.77821571,7775637.30357292,7841196.52035907,8919643.73484765,8847539.65244844,8633978.54501127,8236226.80809439,8343797.17655613,8130902.80933236,8540795.42859406,8505164.79251263,5328919.95802327,8959896.15482778,8810876.23159385,7584020.46379327,8205181.87136002,8681874.26745146,7222417.6544535,7565654.16614906,6952088.72222327,6386092.6785495,4499443.66283732,5548198.30792024,6651097.02648449,7690708.02483113,6514978.67561217,6798477.67549259,8544104.17050486,8199143.67400843,3372975.19497248,6386735.09280792,7193100.79075513,3378331.78129404,6732384.26246391,3375085.44586651,11287802.9417815,3377992.92368673,6729996.50775255,7643438.88569648,5903783.69368954,5903657.72611431,8566318.71120968,10364923.1162683,4471616.56018329,4858347.31776112,7699387.65072581,6338645.53543988,3366439.78537936,4159754.65837861,4167148.99781728,5510731.72321249,4940229.94081099,5594987.85469513,5832358.67546921,5943165.60306612,5892278.12877346,5730169.49316114,6980130.49956232,7435539.50106776,5151987.61782625,6763280.66765802,6931738.91942643,5795560.53979496,6262305.7378292,9219728.72081222,8334252.1083101,8777338.01758943,8608825.01246273,8825046.48248127,8174419.82707455,11107480.8415249,6615541.63456297,9989468.96014383,8232886.46249096,8590070.81945318,9511402.2132863,10806481.4320216,9964978.02256883,10156562.8485107,7807036.11883471,9060129.76601173,6650636.09747445,9594995.66245076,9445483.73244024,8339908.53477875,6794925.65445931,6732451.49447751,8104004.75682692,9219963.23914241,9769483.38765074,10460280.1573761,9349749.56163128,9012431.30634931,9199691.42557809,9251991.57938415,9782805.89426503,8636387.80957495,9961740.26729472,8712518.18745711,8974964.6895063,10905889.4170381,10035389.5395939,9419950.87888162,9528958.14636769,9970159.37821735,8906797.31480179,10032984.7984849,9033679.3581067,7643664.42863586,8374095.47840648,3665250.86223607,7567123.72207303,8186511.7760124,8455355.49255132,8748456.33944005,11167125.6325348,10663377.2818706,10546041.2369708,10504094.2952914,9612007.49205799,10114280.6582663,9543520.48644066,3377938.57234544,3376187.94272644,5379354.82522477,5224983.59157267,5492142.85377275,5049953.00150578,4692280.03911562,4134898.18568369,4873584.07114751,5998751.32024163,3376270.41025498,5966963.03653767,3374596.38869609,4247016.80365511,5682955.65827168,5422831.30784787,5406530.21217686,5276755.48380205,4828248.77015438,5944362.91221818,4140850.51419382,5650048.01969154,4948132.07292067,5053739.05133646,5530338.62622,6538406.05201063,6225748.61093868,4336774.47706011,3375481.9922812,5888156.86620839,6045521.52150988,6293117.40560036,6396698.3623009,6421169.38111576,6442055.35753386,6673032.19899199,6584240.75494078,6429678.44028306,6389376.81434019,6569585.16754423,5348466.43062337,5725856.60479621,6121734.65000452,6506176.00315582,6536391.41788233,6667677.59673995,6729577.41062577,6420215.27518903,6472747.74506316,6541795.59278847,6532326.0853928,6193362.99654201,6736627.54877348,6665585.0760435,6657744.75428716,6631969.88432512,8346359.78443355,6304194.83883028,8088317.82237115,6704820.50846348,6725549.74266153,6147174.98181988,5522754.96908642,5900715.20067852,5842041.16427774,6018167.52836658,6738233.19185449,6725323.15912896,6720150.98671347,6574374.78467453,6739943.66488963,6723390.20425392,6537873.39483874,6743290.91779864,6676579.46125338,6686166.34064968,6651892.7371938,6742533.5932693,6746150.50344989,6745698.67884659,5891455.72152664,6598815.52902933,6695276.47012336,6540025.53516018,6791059.24127277,5499560.71763806,7152124.42870868,6024392.39839873,6471341.24806535,5013169.5806771,5025992.97752199,5241339.72730557,6875558.86236054,6980738.29163151,6082792.7703112,7854517.33716209,4345621.91987903,5932661.1692921,5706364.03516496,6779864.86732487,9278827.33304802,8410295.1392014,7554296.57458399,6564139.11123354,6308987.19191071,6299383.56710205,4609903.5975484,3374914.98830046,6464280.05910566,6487662.30792398,6444065.87926494,6351560.4998892,6519994.54324097,6043170.80576158,6413679.71759514,6621219.33288559,5007085.73036174,5361746.66057805,4267338.55749568,5368250.21745268,5271750.41139471,4529918.20595391,6313178.67786807,6184944.85077341,6512360.15049638,6329477.14035958,6645748.94236197,6188133.63542312,5847428.01794381,6464663.45810504,6629102.45474648,6130525.31050125,3376301.99973518,6092517.0943178,6202310.10403238,5676469.67987823,3371872.16902275,3978625.99046914,3374831.6271483,4312924.84816221,3976611.24418289,4624921.23030401,3373930.31324032,5235547.26674902,6648628.85265771,5707794.49290366,4842640.54398976,5464343.33587023,5895996.86088394,5047999.48543366,6327482.76173022,6210304.36545584,6488022.57234998,5138909.09186861,5415602.20976393,3376498.73792926,5833540.40916374,4600109.75068579,11267921.3447782,10655381.7323477,10288241.8147597,4228190.87344926,3376070.5160915,3984898.59095284,4253078.64324864,4119628.18634918,4478835.82226071,4726215.9395454,6140918.0312903,6666484.96794648,7491324.74580462,5976480.58867742,5213113.88644431,5466817.84112159,5679197.43353759,4839365.94434611,5570495.41711268,4509543.59273538,5408927.95973906,5011531.87307005,3374118.82909003,4974435.22459455,4464645.28643502,4240925.10326995,4896874.70906868,4329469.19857068,5776886.33186599,4892001.28626147,3374477.05776673,3907991.65670338,3895917.54685353,4009485.45138785,3375865.78259415,4192876.73252523,4026747.45601808,3373153.86461457,3926434.04512075,4743829.78392162,5151397.01715359,5266818.87229337,5419604.84188888,4562668.4143077,3933685.62613577,5227958.50074921,6380498.98994039,6500865.1374896,6675421.47985119,6257908.41774483,6654455.16128689,6742981.59583346,6099349.89469398,6702297.41777844,6724907.71917846,6728690.40865034,6521752.8488809,6671624.76985996,6738112.63140111,6616801.92832022,6316181.08366178,5831727.97767969,5880897.3902693,6689732.80113574,6635654.73933633,6475483.90875845,6177170.10607079,6257847.88241709,6098177.10699927,6405596.57144554,6378873.59438447,3996689.96851745,6719922.11612084,6608157.17369539,5688015.34784496,6153886.40352001,6511405.7005886,5416813.24084012,5674240.6246118,5214066.54166745,4789569.50891213,3374582.74712799,4161148.73094018,6648848.08398449,7688459.08233113,6512729.73311217,6796228.7329926,8541855.22800486,8196894.73150843,0,6379988.26530792,7186353.96325513,0,0,0,11281056.1142815,0,0,7636692.05819648,0,0,8559571.88370968,10358176.2887683,4464869.73268328,0,7692640.82322581,6331898.70793988,0,0,0,0,0,0,5825611.84796921,5936418.77556612,0,5723422.66566114,6973383.67206232,7428792.67356776,5145240.79032625,6756533.84015802,6924992.09192643,0,0,9212981.89331222,8327505.28081009,8770591.19008943,8602078.18496273,8818299.65498127,8167672.99957455,11100734.0140249,0,9982722.13264383,8226139.63499096,8583323.99195319,9504655.3857863,10799734.6045216,9958231.19506883,10149816.0210107,7800289.29133471,9053382.93851173,0,9588248.83495076,9438736.90494023,8333161.70727875,329907.607866613,0,8097257.92932692,9213216.41164241,9762736.56015074,10453533.3298761,9343002.73413128,9005684.47884932,9192944.59807809,9245244.75188415,9776059.06676503,8629640.98207495,9954993.43979472,8705771.35995711,8968217.8620063,10899142.5895381,10028642.7120939,9413204.05138162,9522211.31886769,9963412.55071735,8900050.48730179,10026237.9709849,9026932.5306067,7636917.60113586,8367348.65090648,3658504.03473607,7560376.89457302,8179764.9485124,8448608.66505132,8741709.51194005,11160378.8050348,10656630.4543706,10539294.4094708,10497347.4677914,9605260.66455799,10107533.8307663,9536773.65894066,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117225.672418118,0,0,0,0,0,0,8339612.95693355,0,8081570.99487115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6784312.41377277,5492813.89013806,7145377.60120868,0,6464594.42056535,0,5019246.15002199,5234592.89980557,6868812.03486054,6973991.46413151,6076045.9428112,7847770.50966209,4338875.09237903,5925914.3417921,5699617.20766496,6773118.03982487,9272080.50554802,8403548.3117014,7547549.74708399,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11261174.5172782,10648634.9048477,10281494.9872597,0,0,0,0,0,0,0,0,0,7484577.91830462,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6642101.25648449,7681712.25483114,6505982.90561217,6789481.90549259,8535108.40050486,8190147.90400843],"Archive802_field13":[499.87096800605,1,1,501.455205092495,995.91756468291,501.407131721609,1,502.903120516943,995.078848023433,1,875.091948202381,875.054500406918,1,1,1,730.930366237113,1,1,508.229094386075,625.14755531909,628.151634888853,727.994251071494,659.518088543248,700.695549161743,1,1,809.0221066477,1,1,1,1,1,1,859.530457120574,903.912203244214,1,1,1,1,1,1,1,965.614553318607,1,1,1,1,1,1,1,1,1,989.891324677639,1,1,1,963.736851926506,993.089855040153,960.550481340679,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,496.372120342749,500.822341627713,801.162983707576,773.170400642764,814.36510447561,753.1474601935,692.06043867621,611.728639090021,722.612135064362,887.740931369852,500.870481938972,882.905814766586,500.328263684264,629.574820476406,841.301429149079,803.211246868713,801.289286121729,781.804998628121,715.513102081849,880.753533058763,613.906302201265,837.093418513708,733.52072818122,749.126458271275,819.728563762473,965.921301043819,921.4063967419,642.464697960255,500.601245580616,870.52264553192,895.960825759409,931.812646895317,947.381752873784,949.761849359886,953.790843196782,988.163845300156,962.045023621333,940.644265750762,932.47150463783,963.68858995943,792.884121258318,848.607016437793,877.201759683788,971.047725339736,965.973532831299,987.939537976943,996.551789206741,955.225504210924,964.686610234883,941.347347018208,968.324966695418,917.832365035291,994.798989150363,985.228288860644,985.29915645171,982.006461060272,1,905.40175605902,1,992.169228971842,996.228059898107,911.060186927555,823.455116778203,875.836823062007,864.456529451372,857.138944475508,998.091010212663,996.555374194768,995.512086273741,974.080922729665,998.519927229499,996.44527175572,968.732053657772,999.30488622063,989.099674015863,990.988800528676,985.760809446647,999.243718482244,999.860597284888,999.847189587091,871.472479161237,978.116467875008,992.393309112296,969.295007330165,1,1,1,813.622223307335,1,753.666532049749,1,1,1,1,1,1,1,1,1,1,1,1,1,972.177153093031,934.782399826822,933.744363683708,680.055210613569,511.49184540958,958.034916049011,961.63029104345,955.083854524676,941.395769969166,964.071834902487,895.865707577021,950.493975442476,981.634806479988,748.886895415213,792.848433900058,640.661792197035,694.176413060483,735.399473922732,635.453607791295,935.587792841233,916.691465326242,965.040178204239,938.24362121592,984.892397505233,917.24320593833,866.760539764652,958.171913553451,982.617749279208,908.611228527976,500.853342158165,902.766111034752,919.139888082714,841.306026918283,495.127135241407,589.173357657243,500.417279590946,639.11695612673,588.799040336858,686.307577875803,500.122823418969,775.841237991557,985.167658826268,846.123781096522,716.796147961124,809.731089253586,873.446708307052,748.039392044958,936.994164776676,919.914973512492,960.930589638212,761.979002570015,802.789091291292,500.90946967109,865.091470534202,682.004030727348,1,1,1,626.910012665681,500.78682128492,590.908145873907,630.305245967743,610.860826314824,664.282931128156,700.627442906119,909.597192453973,977.724757837516,1,885.909862624421,772.797653880006,810.408037474702,841.877031080434,715.843348667481,825.674842827272,668.532204347323,801.750593117084,742.984123145313,500.211522537717,737.399371316289,661.948148307738,628.707743853464,725.92695500363,641.903221635868,856.238542159361,725.436628988156,500.314218703687,579.462101387793,577.644240831932,594.56754942264,500.721590042547,620.454534287433,596.758464939843,499.926920960825,582.258112771041,702.965229621419,763.525161893309,780.994446391548,801.903319388415,676.0641287271,582.966309339096,774.440970127122,946.169036675972,963.207874743474,986.718657776439,925.426266869574,985.686716874255,999.912217138007,903.769047050625,993.386054896328,997.077644599305,996.242945878005,964.577483187759,985.636771512361,998.510733333807,980.671521650342,935.322556184123,863.60137899919,872.176023400375,990.711066285208,983.620375987326,959.804183320096,915.749771752914,925.411865173337,903.420022668147,948.455216749599,946.086223204784,609.366116140412,996.013205433756,979.457172867185,842.844787675081,911.121433052013,963.854604908229,801.09095186046,840.263154458855,772.605767606895,709.866458718959,500.347195196942,616.329894618068,1,1,1,1,1,1,499.87096800605,1,1,501.455205092495,995.91756468291,501.407131721609,1,502.903120516943,995.078848023433,1,875.091948202381,875.054500406919,1,1,1,730.930366237113,1,1,508.229094386075,625.14755531909,628.151634888853,727.994251071494,659.518088543248,700.695549161743,1,1,809.0221066477,1,1,1,1,1,1,859.530457120574,903.912203244214,1,1,1,1,1,1,1,965.614553318607,1,1,1,1,1,1,1,1,1,989.891324677639,1,1,1,963.736851926506,993.089855040153,960.550481340679,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,496.372120342749,500.822341627713,801.162983707576,773.170400642764,814.36510447561,753.1474601935,692.06043867621,611.728639090021,722.612135064362,887.740931369852,500.870481938972,882.905814766586,500.328263684264,629.574820476406,841.301429149079,803.211246868713,801.289286121729,781.804998628121,715.513102081849,880.753533058763,613.906302201265,837.093418513708,733.52072818122,749.126458271276,819.728563762472,965.921301043819,921.4063967419,642.464697960255,500.601245580616,870.52264553192,895.960825759409,931.812646895317,947.381752873784,949.761849359886,953.790843196782,988.163845300156,962.045023621333,940.644265750762,932.47150463783,963.68858995943,792.884121258318,848.607016437793,877.201759683788,971.047725339736,965.973532831299,987.939537976943,996.551789206741,955.225504210924,964.686610234883,941.347347018208,968.324966695418,917.832365035291,994.798989150363,985.228288860644,985.29915645171,982.006461060272,1,905.40175605902,1,992.169228971842,996.228059898107,911.060186927555,823.455116778203,875.836823062007,864.456529451372,857.138944475508,998.091010212663,996.555374194768,995.512086273741,974.080922729665,998.519927229499,996.44527175572,968.732053657772,999.30488622063,989.099674015863,990.988800528676,985.760809446647,999.243718482244,999.860597284888,999.847189587091,871.472479161237,978.116467875008,992.393309112296,969.295007330164,1,1,1,813.622223307335,1,753.666532049749,1,1,1,1,1,1,1,1,1,1,1,1,1,972.177153093031,934.782399826821,933.744363683708,680.055210613569,511.49184540958,958.034916049011,961.63029104345,955.083854524676,941.395769969166,964.071834902487,895.865707577021,950.493975442476,981.634806479989,748.886895415213,792.848433900059,640.661792197035,694.176413060483,735.399473922732,635.453607791295,935.587792841233,916.691465326242,965.040178204239,938.24362121592,984.892397505233,917.24320593833,866.760539764652,958.171913553451,982.617749279208,908.611228527976,500.853342158165,902.766111034752,919.139888082714,841.306026918283,495.127135241407,589.173357657243,500.417279590946,639.11695612673,588.799040336858,686.307577875803,500.122823418969,775.841237991557,985.167658826268,846.123781096522,716.796147961124,809.731089253586,873.446708307052,748.039392044958,936.994164776676,919.914973512492,960.930589638212,761.979002570015,802.789091291292,500.90946967109,865.091470534202,682.004030727348,1,1,1,626.910012665681,500.78682128492,590.908145873907,630.305245967743,610.860826314824,664.282931128156,700.627442906119,909.597192453973,977.724757837516,1,885.90986262442,772.797653880006,810.408037474702,841.877031080434,715.843348667481,825.674842827272,668.532204347323,801.750593117084,742.984123145313,500.211522537717,737.399371316289,661.948148307738,628.707743853464,725.92695500363,641.903221635868,856.238542159361,725.436628988156,500.314218703687,579.462101387794,577.644240831932,594.56754942264,500.721590042548,620.454534287433,596.758464939843,499.926920960825,582.258112771041,702.965229621419,763.525161893309,780.994446391548,801.903319388415,676.0641287271,582.966309339096,774.440970127122,946.169036675972,963.207874743474,986.718657776439,925.426266869574,985.686716874255,999.912217138008,903.769047050625,993.386054896328,997.077644599305,996.242945878005,964.577483187759,985.636771512361,998.510733333807,980.671521650342,935.322556184123,863.60137899919,872.176023400375,990.711066285208,983.620375987326,959.804183320096,915.749771752913,925.411865173337,903.420022668147,948.455216749599,946.086223204783,609.366116140412,996.013205433756,979.457172867185,842.844787675081,911.121433052013,963.854604908229,801.09095186046,840.263154458855,772.605767606895,709.866458718959,500.347195196942,616.329894618068,1,1,1,1,1,1,499.87096800605,1,1,501.455205092495,995.91756468291,501.407131721609,1,502.903120516943,995.078848023433,1,875.091948202381,875.054500406918,1,1,1,730.930366237113,1,1,508.229094386075,625.14755531909,628.151634888853,727.994251071494,659.518088543248,700.695549161743,1,1,809.0221066477,1,1,1,1,1,1,859.530457120574,903.912203244214,1,1,1,1,1,1,1,965.614553318607,1,1,1,1,1,1,1,1,1,989.891324677639,1,1,1,963.736851926506,993.089855040153,960.550481340679,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,496.372120342749,500.822341627713,801.162983707576,773.170400642764,814.36510447561,753.1474601935,692.06043867621,611.728639090021,722.612135064362,887.740931369852,500.870481938972,882.905814766586,500.328263684264,629.574820476406,841.301429149079,803.211246868713,801.289286121729,781.804998628121,715.513102081849,880.753533058763,613.906302201265,837.093418513708,733.52072818122,749.126458271275,819.728563762473,965.921301043819,921.4063967419,642.464697960255,500.601245580616,870.52264553192,895.960825759409,931.812646895317,947.381752873784,949.761849359886,953.790843196782,988.163845300156,962.045023621333,940.644265750762,932.47150463783,963.68858995943,792.884121258318,848.607016437793,877.201759683788,971.047725339736,965.973532831299,987.939537976943,996.551789206741,955.225504210924,964.686610234883,941.347347018208,968.324966695418,917.832365035291,994.798989150363,985.228288860644,985.29915645171,982.006461060272,1,905.40175605902,1,992.169228971842,996.228059898107,911.060186927555,823.455116778203,875.836823062007,864.456529451372,857.138944475508,998.091010212663,996.555374194768,995.512086273741,974.080922729665,998.519927229499,996.44527175572,968.732053657772,999.30488622063,989.099674015863,990.988800528676,985.760809446647,999.243718482244,999.860597284888,999.847189587091,871.472479161237,978.116467875008,992.393309112296,969.295007330165,1,1,1,813.622223307335,1,753.666532049749,1,1,1,1,1,1,1,1,1,1,1,1,1,972.177153093031,934.782399826822,933.744363683708,680.055210613569,511.49184540958,958.034916049011,961.63029104345,955.083854524676,941.395769969166,964.071834902487,895.865707577021,950.493975442476,981.634806479988,748.886895415213,792.848433900058,640.661792197035,694.176413060483,735.399473922732,635.453607791295,935.587792841233,916.691465326242,965.040178204239,938.24362121592,984.892397505233,917.24320593833,866.760539764652,958.171913553451,982.617749279208,908.611228527976,500.853342158165,902.766111034752,919.139888082714,841.306026918283,495.127135241407,589.173357657243,500.417279590946,639.11695612673,588.799040336858,686.307577875803,500.122823418969,775.841237991557,985.167658826268,846.123781096522,716.796147961124,809.731089253586,873.446708307052,748.039392044958,936.994164776676,919.914973512492,960.930589638212,761.979002570015,802.789091291292,500.90946967109,865.091470534202,682.004030727348,1,1,1,626.910012665681,500.78682128492,590.908145873907,630.305245967743,610.860826314824,664.282931128156,700.627442906119,909.597192453973,977.724757837516,1,885.909862624421,772.797653880006,810.408037474702,841.877031080434,715.843348667481,825.674842827272,668.532204347323,801.750593117084,742.984123145313,500.211522537717,737.399371316289,661.948148307738,628.707743853464,725.92695500363,641.903221635868,856.238542159361,725.436628988156,500.314218703687,579.462101387793,577.644240831932,594.56754942264,500.721590042547,620.454534287433,596.758464939843,499.926920960825,582.258112771041,702.965229621419,763.525161893309,780.994446391548,801.903319388415,676.0641287271,582.966309339096,774.440970127122,946.169036675972,963.207874743474,986.718657776439,925.426266869574,985.686716874255,999.912217138007,903.769047050625,993.386054896328,997.077644599305,996.242945878005,964.577483187759,985.636771512361,998.510733333807,980.671521650342,935.322556184123,863.60137899919,872.176023400375,990.711066285208,983.620375987326,959.804183320096,915.749771752914,925.411865173337,903.420022668147,948.455216749599,946.086223204784,609.366116140412,996.013205433756,979.457172867185,842.844787675081,911.121433052013,963.854604908229,801.09095186046,840.263154458855,772.605767606895,709.866458718959,500.347195196942,616.329894618068,1,1,1,1,1,1],"Archive802_field14":[999.87096800605,0.103616813294233,0.103616813294233,911.816886421918,346.039754321229,396.348480695216,0.103616813294233,308.206150819974,950.259688688145,0.103616813294233,675.153043021541,630.29643589079,0.103616813294233,0.103616813294233,0.103616813294233,177.423523617367,0.103616813294233,0.103616813294233,162.267461932507,243.233149160732,170.604897352196,144.882004614994,237.924124711381,156.13174707841,0.103616813294233,0.103616813294233,118.166760087338,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,179.687473862194,103.875570668523,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.053902885408,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,117.564634477027,0.103616813294233,0.103616813294233,0.103616813294233,99.8593414508403,202.513916583019,99.5291798847624,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,226.04281926748,608.65469744394,166.602908170082,283.392397054919,227.346834396244,228.322047922026,267.6473271069,306.47471365802,370.573280719183,335.310564351284,457.438174998601,253.555011754788,381.263625365593,425.256705304211,294.934931223029,355.951102666744,494.255569258678,423.442254916306,471.222130809344,440.837295231402,512.576711099151,406.580844417117,580.80596686008,524.925280869109,574.812517299901,294.838216927955,194.035856000294,365.349745372006,532.801270018544,928.293906528988,538.281734633782,297.197527719887,405.791751032524,240.737448197463,346.051763822381,407.351159413,191.108091959071,147.277899442607,104.249545981558,126.260896701462,666.288353085561,528.385965360703,130.929111038629,129.189280246641,272.898160740292,224.042393511416,284.578133302154,174.444273252714,132.735418243662,97.5394123010069,214.219735836985,255.684400838317,259.644254224946,276.277236490895,341.644767688877,376.479256041592,0.103616813294233,129.560230545141,0.103616813294233,340.445128476134,422.180867453353,192.300278184962,261.618732083881,239.905867249968,355.920868870819,190.412793614532,408.541540671466,524.216267491507,461.474043176838,477.709404084707,493.516477837939,633.207203742351,503.048821884133,566.198938891607,478.197864235789,651.358722571311,568.975298941494,623.392482421833,750.795073918944,684.840429722968,974.062899493593,734.467217745832,693.794332459454,648.672406975185,0.103616813294233,0.103616813294233,0.103616813294233,143.612860882531,0.103616813294233,215.311011218509,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,421.016724901017,483.781499715922,719.23219106853,329.273287719662,255.168531626589,588.163630618249,701.537407436241,758.83654890885,661.601391439638,961.707465401021,814.586330049261,578.9832864657,840.698124320741,282.418063781875,332.042463146817,266.89103228654,207.058344435418,223.945991238112,303.497962630005,543.242292788233,599.495162157203,531.429471844463,718.289869623796,581.737118694258,662.487773256542,720.149753468456,660.055597206722,745.647439644448,612.090179566825,698.324016644968,495.029034310539,550.849679455912,564.630384169637,314.436152836715,352.11997689345,546.623291321151,463.638720828847,413.799382124095,402.561920599336,470.696503770875,478.165861573114,525.430040894427,670.142934657618,919.612619124369,407.300816139032,431.760435577083,426.70547642529,375.266759709114,434.54943887631,430.854023593649,795.593648815988,737.55453964551,760.006488243915,825.683133906888,707.958323883979,0.103616813294233,0.103616813294233,0.103616813294233,596.838343576139,684.251508479446,726.085557610261,831.607070637798,661.795183939794,772.416889268277,641.977845199997,394.651112803609,163.548828158115,0.103616813294233,744.765513760291,811.43747431685,730.263166047901,794.284404176792,985.888558833659,895.835010047155,732.521282805504,644.490379483601,754.618874914603,848.946859781119,686.273448089434,822.738382101473,641.788964230716,609.41845694393,552.918306602933,621.049416222502,897.174325104571,773.417224568789,732.050858074207,807.712213654007,871.661850976754,925.089258664249,992.097932027038,934.240161764645,621.765264069329,512.430155886607,503.534753043213,546.552921216765,866.146940459844,980.408634637682,942.971248353629,595.791556182032,932.229117363432,841.895940308881,897.036701585845,955.314393358062,967.726792285018,899.708911148553,840.396951925192,899.185790427495,786.268480263201,807.593691826384,901.422958605202,939.803534018649,943.027717260162,872.190937699157,862.067911982243,916.178837488626,923.960727437617,865.781336496195,894.420930755523,804.739536144403,773.732554174002,786.600961448633,934.098021087315,875.845656789097,874.17485373785,821.093508493777,216.837655834931,716.035514027646,688.053539067176,494.672104509291,322.690837158783,338.503419025592,923.572317940616,878.666640274281,862.896119212643,832.878511594218,835.076545148066,915.106470864403,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,999.87096800605,0.103616813294233,0.103616813294233,911.816886421918,346.039754321229,396.348480695216,0.103616813294233,308.206150819974,950.259688688145,0.103616813294233,675.153043021541,630.29643589079,0.103616813294233,0.103616813294233,0.103616813294233,177.423523617367,0.103616813294233,0.103616813294233,162.267461932507,243.233149160732,170.604897352196,144.882004614994,237.924124711381,156.13174707841,0.103616813294233,0.103616813294233,118.166760087338,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,179.687473862194,103.875570668523,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.053902885408,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,117.564634477027,0.103616813294233,0.103616813294233,0.103616813294233,99.8593414508403,202.513916583019,99.5291798847624,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,226.04281926748,608.65469744394,166.602908170082,283.392397054919,227.346834396244,228.322047922026,267.6473271069,306.47471365802,370.573280719183,335.310564351284,457.438174998601,253.555011754788,381.263625365593,425.256705304211,294.934931223029,355.951102666744,494.255569258678,423.442254916306,471.222130809344,440.837295231402,512.576711099151,406.580844417116,580.80596686008,524.925280869109,574.812517299901,294.838216927955,194.035856000294,365.349745372006,532.801270018544,928.293906528988,538.281734633782,297.197527719887,405.791751032523,240.737448197463,346.051763822381,407.351159413,191.108091959071,147.277899442607,104.249545981558,126.260896701462,666.288353085561,528.385965360703,130.929111038629,129.189280246641,272.898160740292,224.042393511416,284.578133302154,174.444273252714,132.735418243662,97.5394123010069,214.219735836985,255.684400838317,259.644254224946,276.277236490894,341.644767688877,376.479256041592,0.103616813294233,129.560230545141,0.103616813294233,340.445128476134,422.180867453353,192.300278184962,261.618732083881,239.905867249968,355.920868870819,190.412793614532,408.541540671466,524.216267491507,461.474043176838,477.709404084707,493.516477837939,633.207203742351,503.048821884133,566.198938891607,478.197864235789,651.358722571311,568.975298941494,623.392482421833,750.795073918944,684.840429722968,974.062899493593,734.467217745832,693.794332459454,648.672406975185,0.103616813294233,0.103616813294233,0.103616813294233,143.612860882531,0.103616813294233,215.311011218509,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,421.016724901017,483.781499715922,719.23219106853,329.273287719662,255.168531626589,588.163630618249,701.537407436241,758.83654890885,661.601391439638,961.707465401021,814.586330049261,578.9832864657,840.698124320741,282.418063781875,332.042463146817,266.89103228654,207.058344435418,223.945991238112,303.497962630005,543.242292788233,599.495162157203,531.429471844463,718.289869623797,581.737118694258,662.487773256542,720.149753468456,660.055597206722,745.647439644448,612.090179566825,698.324016644968,495.029034310539,550.849679455912,564.630384169637,314.436152836715,352.11997689345,546.623291321151,463.638720828847,413.799382124095,402.561920599336,470.696503770875,478.165861573114,525.430040894427,670.142934657618,919.612619124369,407.300816139032,431.760435577083,426.70547642529,375.266759709114,434.54943887631,430.854023593649,795.593648815988,737.55453964551,760.006488243915,825.683133906889,707.958323883979,0.103616813294233,0.103616813294233,0.103616813294233,596.838343576139,684.251508479446,726.085557610261,831.607070637798,661.795183939794,772.416889268277,641.977845199997,394.651112803609,163.548828158115,0.103616813294233,744.765513760291,811.437474316851,730.263166047901,794.284404176792,985.888558833659,895.835010047155,732.521282805504,644.490379483601,754.618874914603,848.946859781119,686.273448089434,822.738382101473,641.788964230716,609.41845694393,552.918306602933,621.049416222502,897.17432510457,773.417224568789,732.050858074207,807.712213654007,871.661850976755,925.089258664248,992.097932027038,934.240161764645,621.765264069329,512.430155886607,503.534753043213,546.552921216765,866.146940459844,980.408634637682,942.971248353629,595.791556182032,932.229117363432,841.895940308881,897.036701585845,955.314393358061,967.726792285018,899.708911148553,840.396951925192,899.185790427496,786.268480263201,807.593691826385,901.422958605202,939.803534018649,943.027717260162,872.190937699157,862.067911982243,916.178837488626,923.960727437617,865.781336496194,894.420930755523,804.739536144403,773.732554174002,786.600961448633,934.098021087315,875.845656789097,874.17485373785,821.093508493777,216.837655834931,716.035514027646,688.053539067176,494.67210450929,322.690837158783,338.503419025592,923.572317940616,878.666640274281,862.896119212643,832.878511594218,835.076545148066,915.106470864403,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,999.87096800605,0.103616813294233,0.103616813294233,911.816886421918,346.039754321229,396.348480695216,0.103616813294233,308.206150819974,950.259688688145,0.103616813294233,675.153043021541,630.29643589079,0.103616813294233,0.103616813294233,0.103616813294233,177.423523617367,0.103616813294233,0.103616813294233,162.267461932507,243.233149160732,170.604897352196,144.882004614994,237.924124711381,156.13174707841,0.103616813294233,0.103616813294233,118.166760087338,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,179.687473862194,103.875570668523,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.053902885408,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,117.564634477027,0.103616813294233,0.103616813294233,0.103616813294233,99.8593414508403,202.513916583019,99.5291798847624,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,226.04281926748,608.65469744394,166.602908170082,283.392397054919,227.346834396244,228.322047922026,267.6473271069,306.47471365802,370.573280719183,335.310564351284,457.438174998601,253.555011754788,381.263625365593,425.256705304211,294.934931223029,355.951102666744,494.255569258678,423.442254916306,471.222130809344,440.837295231402,512.576711099151,406.580844417117,580.80596686008,524.925280869109,574.812517299901,294.838216927955,194.035856000294,365.349745372006,532.801270018544,928.293906528988,538.281734633782,297.197527719887,405.791751032524,240.737448197463,346.051763822381,407.351159413,191.108091959071,147.277899442607,104.249545981558,126.260896701462,666.288353085561,528.385965360703,130.929111038629,129.189280246641,272.898160740292,224.042393511416,284.578133302154,174.444273252714,132.735418243662,97.5394123010069,214.219735836985,255.684400838317,259.644254224946,276.277236490895,341.644767688877,376.479256041592,0.103616813294233,129.560230545141,0.103616813294233,340.445128476134,422.180867453353,192.300278184962,261.618732083881,239.905867249968,355.920868870819,190.412793614532,408.541540671466,524.216267491507,461.474043176838,477.709404084707,493.516477837939,633.207203742351,503.048821884133,566.198938891607,478.197864235789,651.358722571311,568.975298941494,623.392482421833,750.795073918944,684.840429722968,974.062899493593,734.467217745832,693.794332459454,648.672406975185,0.103616813294233,0.103616813294233,0.103616813294233,143.612860882531,0.103616813294233,215.311011218509,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,421.016724901017,483.781499715922,719.23219106853,329.273287719662,255.168531626589,588.163630618249,701.537407436241,758.83654890885,661.601391439638,961.707465401021,814.586330049261,578.9832864657,840.698124320741,282.418063781875,332.042463146817,266.89103228654,207.058344435418,223.945991238112,303.497962630005,543.242292788233,599.495162157203,531.429471844463,718.289869623796,581.737118694258,662.487773256542,720.149753468456,660.055597206722,745.647439644448,612.090179566825,698.324016644968,495.029034310539,550.849679455912,564.630384169637,314.436152836715,352.11997689345,546.623291321151,463.638720828847,413.799382124095,402.561920599336,470.696503770875,478.165861573114,525.430040894427,670.142934657618,919.612619124369,407.300816139032,431.760435577083,426.70547642529,375.266759709114,434.54943887631,430.854023593649,795.593648815988,737.55453964551,760.006488243915,825.683133906888,707.958323883979,0.103616813294233,0.103616813294233,0.103616813294233,596.838343576139,684.251508479446,726.085557610261,831.607070637798,661.795183939794,772.416889268277,641.977845199997,394.651112803609,163.548828158115,0.103616813294233,744.765513760291,811.43747431685,730.263166047901,794.284404176792,985.888558833659,895.835010047155,732.521282805504,644.490379483601,754.618874914603,848.946859781119,686.273448089434,822.738382101473,641.788964230716,609.41845694393,552.918306602933,621.049416222502,897.174325104571,773.417224568789,732.050858074207,807.712213654007,871.661850976754,925.089258664249,992.097932027038,934.240161764645,621.765264069329,512.430155886607,503.534753043213,546.552921216765,866.146940459844,980.408634637682,942.971248353629,595.791556182032,932.229117363432,841.895940308881,897.036701585845,955.314393358062,967.726792285018,899.708911148553,840.396951925192,899.185790427495,786.268480263201,807.593691826384,901.422958605202,939.803534018649,943.027717260162,872.190937699157,862.067911982243,916.178837488626,923.960727437617,865.781336496195,894.420930755523,804.739536144403,773.732554174002,786.600961448633,934.098021087315,875.845656789097,874.17485373785,821.093508493777,216.837655834931,716.035514027646,688.053539067176,494.672104509291,322.690837158783,338.503419025592,923.572317940616,878.666640274281,862.896119212643,832.878511594218,835.076545148066,915.106470864403,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive802_field15":[-666623.365995969,331018.574865665,328360.700769386,-666703.800334787,-167002.924805186,-166665.82305893,325723.175207877,-166786.162443862,-666475.002822536,81759.7128609811,-416977.601921185,-416736.499073413,81629.9266864425,326940.096860009,83590.5657275733,-41462.8112989779,206885.956742627,82783.6728067526,-41568.7061171665,-104983.179188172,-39932.3188013794,20703.8403722845,21193.2256433815,50497.7937087486,207451.15060156,125806.947273878,20067.5086769303,83644.1696447731,144864.876586147,116550.99419618,145188.723457056,69731.4723888375,43245.5346784993,-48450.3842964229,12303.4178109827,205575.403585838,148181.558922529,121649.426490175,210119.636454588,151222.887299922,90474.2566877991,325997.903956875,32303.7602474919,224835.141704296,73122.9558394695,87199.7556626736,201281.391611012,326088.017128739,273345.587452265,260349.008785423,167027.780514573,327889.044301554,13572.6867556688,175811.038528007,275892.810268037,60536.8403072278,33894.9566666777,-49413.9583603939,56922.2877772888,145726.019754136,196030.627849596,255786.840066372,170532.154450259,120966.865723061,143681.746801134,235823.308575147,327369.821033265,95673.1584281629,327915.672906645,135869.722003958,136792.505285788,326325.797056816,228708.746292522,188658.787230473,180736.281088238,211175.882934577,206742.753396404,257666.893202035,183442.778814087,105860.622204347,153743.599956892,84078.2731335661,171529.942996904,176269.152869071,329788.833209047,256174.79368681,326455.657735133,278688.499491473,283695.400287476,326731.156357885,273969.538829172,288210.100309662,238358.28513015,-104167.725354806,-416699.758062099,-35942.9911633869,-138887.455356038,-91280.6172224134,-90056.9264933068,-131880.015055718,-164740.821650389,-211373.399970101,-174444.753745659,-291619.435797539,-108678.189138709,-229114.783876117,-260945.036678453,-143902.678702631,-196022.89424901,-309447.37616592,-252586.378474839,-294835.151874808,-260775.617713989,-333460.401952674,-235383.786729961,-384453.671917852,-337582.068894742,-374863.609217016,-135350.943120978,-55023.9368902092,-211510.148198896,-354199.668833533,-666545.730623625,-339450.354885888,-138179.226650525,-226325.461938146,-91341.4643297454,-177031.005929571,-221129.228181506,-63845.9012335781,-29124.3438723764,10308.3943301938,-9421.74045320162,-451674.284560115,-334772.452101443,1779.94877589248,-513.794103548926,-98705.5187794608,-58939.9494760432,-111814.325555863,-7518.91002580002,8704.37402768852,59563.2255522698,-47074.9625310765,-76548.7796091683,-98150.1016212451,-115596.277196357,-168440.764858121,-184491.429319606,92724.3588160288,33098.8707669761,105078.002197158,-158232.550190537,-225062.349648899,-22059.5034745091,-67592.5907510718,-58073.988430805,-154478.916308502,5652.41838904215,-217943.870886585,-314378.672819783,-263024.777838985,-281359.774185947,-284951.947842978,-397962.004249757,-284742.317539067,-344868.776359834,-268334.070370617,-420797.113875505,-341935.431586125,-393970.265274108,-497718.041711865,-442877.632127213,-666526.533237667,-476960.285064748,-446373.951907104,-404483.292760721,61085.8366599402,65738.8618670253,115390.35509299,48129.9141617799,126372.652860562,-17391.5746720409,208503.528145592,118629.629199802,219462.819530788,180367.975746024,168856.710391635,235071.758181344,146431.842115167,206896.777288699,271140.532386589,267908.434126934,328802.555893021,289699.080342097,268691.04341266,-235187.836927004,-291135.622815315,-458454.483084868,-123553.520193235,-41229.7424412235,-374680.18768959,-446931.906394493,-493639.839289282,-411560.408421492,-666492.241594569,-533456.608635084,-344752.624224241,-564515.016731392,-78494.6277471118,-130768.766631483,-58654.9549344287,54765.2147423991,16335.8246665645,21679.6358057168,-340092.261343952,-388201.3055374,-326961.980259837,-484019.771230942,-365072.586429048,-440104.625526379,-491784.189516204,-433634.350340479,-500577.15374138,-367679.141204525,-416671.652596752,-270805.861865823,-318261.130204163,-323463.110706089,-104313.715153237,-135606.126465066,-291653.567763871,-229439.754791531,-186807.608078383,-180282.515650698,-229105.558755763,-248170.512878452,-318532.882182878,-451675.811543669,-666514.245412803,-192064.749590536,-216622.403071766,-204238.385486966,-176602.001112951,-223211.384697122,-224537.922706521,-560002.382608584,-510192.409467138,-541657.872011921,-578274.493857066,-491825.773046834,325621.532112514,282181.81073458,239854.618737817,-402349.349407892,-479149.507704135,-510660.223399799,-596632.052327785,-456683.744379769,-545437.574681258,-436520.768154619,-220555.499212971,-32874.08500266,332084.408978807,-475134.158713817,-522882.251129957,-457921.272902248,-512940.976153233,-666579.151680033,-595802.182536039,-452423.264872376,-386700.466116492,-474236.542703849,-541641.523697714,-417624.959514459,-526538.266170083,-375775.863079482,-353480.515353052,-302916.657033356,-370893.875173361,-590750.827997658,-479165.903663423,-448039.654341753,-510540.362205266,-563957.590068246,-604171.674185158,-666576.871741013,-616319.003627536,-354188.712744437,-266802.670283484,-265287.701687332,-303894.905606392,-568101.91826278,-666514.122705633,-627203.163345544,-336012.716826856,-623732.475400822,-560217.101954803,-609447.137955759,-666527.925903536,-666545.907287652,-616075.916665658,-569465.636714526,-604780.483800443,-522923.617269766,-547479.326453821,-622082.457786614,-666449.419284231,-666618.332805015,-600415.838218088,-597389.403598713,-622810.092665362,-623078.452025026,-573251.529429641,-622460.491590688,-549163.339611471,-527364.195646327,-542542.045586441,-666547.065448218,-618127.024524164,-613207.492297861,-567355.291046888,-5669.61541510053,-472699.596505013,-453773.889803918,-265950.395233454,-131125.358793061,-150117.914616138,-666533.630586372,-625705.672374088,-615861.145976982,-594095.458695014,-604167.039311517,-666592.026685575,190461.717098571,270012.38001346,271462.948743891,233065.501692994,269786.190863249,328928.986470909,-666623.365995969,331018.574865665,328360.700769386,-666703.800334787,-167002.924805186,-166665.82305893,325723.175207877,-166786.162443862,-666475.002822536,81759.7128609811,-416977.601921185,-416736.499073413,81629.9266864425,326940.096860009,83590.5657275733,-41462.811298978,206885.956742627,82783.6728067527,-41568.7061171665,-104983.179188172,-39932.3188013794,20703.8403722845,21193.2256433815,50497.7937087486,207451.15060156,125806.947273878,20067.5086769303,83644.1696447731,144864.876586147,116550.99419618,145188.723457056,69731.4723888374,43245.5346784993,-48450.3842964229,12303.4178109827,205575.403585838,148181.558922529,121649.426490175,210119.636454588,151222.887299922,90474.2566877991,325997.903956875,32303.760247492,224835.141704296,73122.9558394695,87199.7556626736,201281.391611012,326088.017128739,273345.587452265,260349.008785423,167027.780514573,327889.044301554,13572.6867556688,175811.038528007,275892.810268037,60536.8403072278,33894.9566666777,-49413.9583603939,56922.2877772888,145726.019754136,196030.627849596,255786.840066372,170532.154450259,120966.865723061,143681.746801134,235823.308575147,327369.821033265,95673.1584281629,327915.672906645,135869.722003958,136792.505285788,326325.797056816,228708.746292522,188658.787230473,180736.281088238,211175.882934577,206742.753396404,257666.893202035,183442.778814087,105860.622204347,153743.599956892,84078.2731335661,171529.942996904,176269.152869071,329788.833209047,256174.79368681,326455.657735133,278688.499491473,283695.400287476,326731.156357885,273969.538829173,288210.100309662,238358.28513015,-104167.725354806,-416699.758062099,-35942.9911633869,-138887.455356038,-91280.6172224134,-90056.9264933068,-131880.015055718,-164740.821650389,-211373.399970101,-174444.753745659,-291619.435797539,-108678.189138709,-229114.783876117,-260945.036678453,-143902.678702631,-196022.89424901,-309447.37616592,-252586.378474839,-294835.151874808,-260775.617713989,-333460.401952674,-235383.786729961,-384453.671917852,-337582.068894742,-374863.609217016,-135350.943120978,-55023.9368902092,-211510.148198896,-354199.668833533,-666545.730623625,-339450.354885888,-138179.226650525,-226325.461938146,-91341.4643297454,-177031.005929571,-221129.228181505,-63845.9012335781,-29124.3438723764,10308.3943301938,-9421.74045320162,-451674.284560115,-334772.452101443,1779.94877589248,-513.794103548926,-98705.5187794608,-58939.9494760433,-111814.325555863,-7518.91002580002,8704.37402768852,59563.2255522698,-47074.9625310765,-76548.7796091683,-98150.1016212451,-115596.277196357,-168440.764858121,-184491.429319606,92724.3588160288,33098.8707669761,105078.002197158,-158232.550190537,-225062.349648899,-22059.5034745091,-67592.5907510717,-58073.988430805,-154478.916308502,5652.41838904215,-217943.870886585,-314378.672819783,-263024.777838985,-281359.774185947,-284951.947842978,-397962.004249756,-284742.317539067,-344868.776359834,-268334.070370617,-420797.113875505,-341935.431586125,-393970.265274108,-497718.041711865,-442877.632127213,-666526.533237667,-476960.285064748,-446373.951907104,-404483.292760721,61085.8366599402,65738.8618670253,115390.35509299,48129.9141617799,126372.652860562,-17391.5746720409,208503.528145592,118629.629199802,219462.819530788,180367.975746024,168856.710391635,235071.758181344,146431.842115167,206896.7772887,271140.532386589,267908.434126934,328802.555893021,289699.080342097,268691.04341266,-235187.836927004,-291135.622815315,-458454.483084868,-123553.520193235,-41229.7424412235,-374680.18768959,-446931.906394493,-493639.839289282,-411560.408421492,-666492.241594569,-533456.608635084,-344752.624224241,-564515.016731392,-78494.6277471118,-130768.766631483,-58654.9549344287,54765.214742399,16335.8246665645,21679.6358057168,-340092.261343952,-388201.3055374,-326961.980259837,-484019.771230942,-365072.586429048,-440104.625526379,-491784.189516204,-433634.350340479,-500577.15374138,-367679.141204525,-416671.652596752,-270805.861865823,-318261.130204163,-323463.110706089,-104313.715153237,-135606.126465066,-291653.567763871,-229439.754791531,-186807.608078383,-180282.515650698,-229105.558755764,-248170.512878452,-318532.882182878,-451675.811543668,-666514.245412803,-192064.749590536,-216622.403071766,-204238.385486966,-176602.001112951,-223211.384697122,-224537.922706521,-560002.382608584,-510192.409467139,-541657.872011921,-578274.493857066,-491825.773046834,325621.532112514,282181.81073458,239854.618737817,-402349.349407892,-479149.507704135,-510660.223399799,-596632.052327785,-456683.744379769,-545437.574681258,-436520.768154619,-220555.499212971,-32874.08500266,332084.408978807,-475134.158713818,-522882.251129957,-457921.272902248,-512940.976153233,-666579.151680033,-595802.182536039,-452423.264872376,-386700.466116492,-474236.542703849,-541641.523697714,-417624.959514459,-526538.266170083,-375775.863079482,-353480.515353052,-302916.657033356,-370893.875173361,-590750.827997658,-479165.903663424,-448039.654341753,-510540.362205266,-563957.590068246,-604171.674185158,-666576.871741013,-616319.003627536,-354188.712744437,-266802.670283484,-265287.701687332,-303894.905606392,-568101.91826278,-666514.122705633,-627203.163345544,-336012.716826856,-623732.475400822,-560217.101954803,-609447.137955759,-666527.925903536,-666545.907287652,-616075.916665658,-569465.636714526,-604780.483800443,-522923.617269766,-547479.326453821,-622082.457786614,-666449.419284231,-666618.332805015,-600415.838218088,-597389.403598713,-622810.092665362,-623078.452025026,-573251.529429642,-622460.491590688,-549163.339611471,-527364.195646327,-542542.045586441,-666547.065448218,-618127.024524164,-613207.492297861,-567355.291046888,-5669.61541510053,-472699.596505013,-453773.889803918,-265950.395233454,-131125.358793061,-150117.914616138,-666533.630586372,-625705.672374088,-615861.145976982,-594095.458695014,-604167.039311517,-666592.026685575,190461.717098571,270012.38001346,271462.948743891,233065.501692994,269786.190863249,328928.986470909,-666623.365995969,331018.574865665,328360.700769386,-666703.800334787,-167002.924805186,-166665.82305893,325723.175207877,-166786.162443862,-666475.002822536,81759.7128609811,-416977.601921185,-416736.499073413,81629.9266864425,326940.096860009,83590.5657275733,-41462.8112989779,206885.956742627,82783.6728067526,-41568.7061171665,-104983.179188172,-39932.3188013794,20703.8403722845,21193.2256433815,50497.7937087486,207451.15060156,125806.947273878,20067.5086769303,83644.1696447731,144864.876586147,116550.99419618,145188.723457056,69731.4723888375,43245.5346784993,-48450.3842964229,12303.4178109827,205575.403585838,148181.558922529,121649.426490175,210119.636454588,151222.887299922,90474.2566877991,325997.903956875,32303.7602474919,224835.141704296,73122.9558394695,87199.7556626736,201281.391611012,326088.017128739,273345.587452265,260349.008785423,167027.780514573,327889.044301554,13572.6867556688,175811.038528007,275892.810268037,60536.8403072278,33894.9566666777,-49413.9583603939,56922.2877772888,145726.019754136,196030.627849596,255786.840066372,170532.154450259,120966.865723061,143681.746801134,235823.308575147,327369.821033265,95673.1584281629,327915.672906645,135869.722003958,136792.505285788,326325.797056816,228708.746292522,188658.787230473,180736.281088238,211175.882934577,206742.753396404,257666.893202035,183442.778814087,105860.622204347,153743.599956892,84078.2731335661,171529.942996904,176269.152869071,329788.833209047,256174.79368681,326455.657735133,278688.499491473,283695.400287476,326731.156357885,273969.538829172,288210.100309662,238358.28513015,-104167.725354806,-416699.758062099,-35942.9911633869,-138887.455356038,-91280.6172224134,-90056.9264933068,-131880.015055718,-164740.821650389,-211373.399970101,-174444.753745659,-291619.435797539,-108678.189138709,-229114.783876117,-260945.036678453,-143902.678702631,-196022.89424901,-309447.37616592,-252586.378474839,-294835.151874808,-260775.617713989,-333460.401952674,-235383.786729961,-384453.671917852,-337582.068894742,-374863.609217016,-135350.943120978,-55023.9368902092,-211510.148198896,-354199.668833533,-666545.730623625,-339450.354885888,-138179.226650525,-226325.461938146,-91341.4643297454,-177031.005929571,-221129.228181506,-63845.9012335781,-29124.3438723764,10308.3943301938,-9421.74045320162,-451674.284560115,-334772.452101443,1779.94877589248,-513.794103548926,-98705.5187794608,-58939.9494760432,-111814.325555863,-7518.91002580002,8704.37402768852,59563.2255522698,-47074.9625310765,-76548.7796091683,-98150.1016212451,-115596.277196357,-168440.764858121,-184491.429319606,92724.3588160288,33098.8707669761,105078.002197158,-158232.550190537,-225062.349648899,-22059.5034745091,-67592.5907510718,-58073.988430805,-154478.916308502,5652.41838904215,-217943.870886585,-314378.672819783,-263024.777838985,-281359.774185947,-284951.947842978,-397962.004249757,-284742.317539067,-344868.776359834,-268334.070370617,-420797.113875505,-341935.431586125,-393970.265274108,-497718.041711865,-442877.632127213,-666526.533237667,-476960.285064748,-446373.951907104,-404483.292760721,61085.8366599402,65738.8618670253,115390.35509299,48129.9141617799,126372.652860562,-17391.5746720409,208503.528145592,118629.629199802,219462.819530788,180367.975746024,168856.710391635,235071.758181344,146431.842115167,206896.777288699,271140.532386589,267908.434126934,328802.555893021,289699.080342097,268691.04341266,-235187.836927004,-291135.622815315,-458454.483084868,-123553.520193235,-41229.7424412235,-374680.18768959,-446931.906394493,-493639.839289282,-411560.408421492,-666492.241594569,-533456.608635084,-344752.624224241,-564515.016731392,-78494.6277471118,-130768.766631483,-58654.9549344287,54765.2147423991,16335.8246665645,21679.6358057168,-340092.261343952,-388201.3055374,-326961.980259837,-484019.771230942,-365072.586429048,-440104.625526379,-491784.189516204,-433634.350340479,-500577.15374138,-367679.141204525,-416671.652596752,-270805.861865823,-318261.130204163,-323463.110706089,-104313.715153237,-135606.126465066,-291653.567763871,-229439.754791531,-186807.608078383,-180282.515650698,-229105.558755763,-248170.512878452,-318532.882182878,-451675.811543669,-666514.245412803,-192064.749590536,-216622.403071766,-204238.385486966,-176602.001112951,-223211.384697122,-224537.922706521,-560002.382608584,-510192.409467138,-541657.872011921,-578274.493857066,-491825.773046834,325621.532112514,282181.81073458,239854.618737817,-402349.349407892,-479149.507704135,-510660.223399799,-596632.052327785,-456683.744379769,-545437.574681258,-436520.768154619,-220555.499212971,-32874.08500266,332084.408978807,-475134.158713817,-522882.251129957,-457921.272902248,-512940.976153233,-666579.151680033,-595802.182536039,-452423.264872376,-386700.466116492,-474236.542703849,-541641.523697714,-417624.959514459,-526538.266170083,-375775.863079482,-353480.515353052,-302916.657033356,-370893.875173361,-590750.827997658,-479165.903663423,-448039.654341753,-510540.362205266,-563957.590068246,-604171.674185158,-666576.871741013,-616319.003627536,-354188.712744437,-266802.670283484,-265287.701687332,-303894.905606392,-568101.91826278,-666514.122705633,-627203.163345544,-336012.716826856,-623732.475400822,-560217.101954803,-609447.137955759,-666527.925903536,-666545.907287652,-616075.916665658,-569465.636714526,-604780.483800443,-522923.617269766,-547479.326453821,-622082.457786614,-666449.419284231,-666618.332805015,-600415.838218088,-597389.403598713,-622810.092665362,-623078.452025026,-573251.529429641,-622460.491590688,-549163.339611471,-527364.195646327,-542542.045586441,-666547.065448218,-618127.024524164,-613207.492297861,-567355.291046888,-5669.61541510053,-472699.596505013,-453773.889803918,-265950.395233454,-131125.358793061,-150117.914616138,-666533.630586372,-625705.672374088,-615861.145976982,-594095.458695014,-604167.039311517,-666592.026685575,190461.717098571,270012.38001346,271462.948743891,233065.501692994,269786.190863249,328928.986470909],"Archive802_field16":[268.149279984775,268.175202855652,268.202251558637,268.150843758268,268.175724610942,268.147417678356,268.30138550986,268.147441256534,268.147710362351,268.199438917025,268.159356914809,268.160052910707,268.221889239852,268.277616585242,268.169280277822,268.181635629372,268.20981566787,268.182398897497,268.152886120717,268.178831507725,268.177049684568,268.178241438812,268.165801489392,268.173310961109,268.180098648568,268.181729801964,268.184308984003,268.177544089323,268.194361443572,268.200407070469,268.173911766661,268.186189018101,268.189456904864,268.20601582299,268.200607232919,268.251072318947,268.228497122474,268.245424374988,268.233982759084,268.246274813473,268.211844293073,268.295705653074,268.237678390841,268.267320216492,268.222792644347,268.230139397995,268.257947273244,268.288066412162,268.267924589099,268.271983738301,268.211997917231,268.243805227241,268.232407487105,268.256192262343,268.255263538944,268.225775502978,268.219351577906,268.188430606222,268.213713089753,268.246325072119,268.261682108036,268.278943649995,268.254136444025,268.244791917124,268.243096806075,268.250910396221,268.26321974982,268.220197007846,268.261924015837,268.222365952911,268.229025208836,268.291790257856,268.266754104009,268.246316349423,268.251395163738,268.265636826709,268.229759708707,268.265578350688,268.233112066196,268.197888503549,268.215151127712,268.157428462985,268.190878030428,268.209058189101,268.214094776275,268.223845221127,268.298583455608,268.284569154369,268.281251015121,268.279611786628,268.251203965102,268.267573037839,268.249511308884,268.142674310241,268.148188338727,268.186192120654,268.173376661094,268.187035883494,268.181904909677,268.172359274554,268.170697607159,268.164868395846,268.172747725697,268.147572371318,268.185523788989,268.146080335351,268.163537615665,268.174719399767,268.168767276065,268.162135575936,268.164183598641,268.161121843406,268.165725114728,268.160138525121,268.166334113497,268.158901394961,268.160258966172,268.160419249246,268.18031018639,268.174383359856,268.166922360271,268.147856627876,268.148386170572,268.162515566867,268.181087671076,268.169382495055,268.190595978601,268.174483636843,268.170409333649,268.204561717723,268.213007953996,268.213130087322,268.297663473917,268.158360493953,268.161994438378,268.196068642362,268.205410287269,268.180204705347,268.18163498453,268.182666732417,268.247538290858,268.214513806317,268.215060598399,268.18700395515,268.19763791597,268.186408429427,268.185104957749,268.175994170904,268.172372043256,268.216950223085,268.197579158212,268.209737383999,268.176137177632,268.169618016294,268.184213502978,268.172511656815,268.174701243089,268.171676995517,268.175864691677,268.170428026719,268.164806078957,268.167464400098,268.166151137746,268.16596478365,268.161741905679,268.165024154683,268.163527621478,268.166411049947,268.161277939415,268.16316078098,268.161964111471,268.159564848895,268.160736829377,268.148486606243,268.159613895964,268.160477572427,268.161016147464,268.181521808095,268.164843409282,268.177401378407,268.171807592964,268.171818592912,268.150228631071,268.16057148901,268.16187796252,268.179281089656,268.179939464117,268.168620261779,268.199148297624,268.157332251151,268.167772567655,268.165333459307,268.179062626471,268.239757540059,268.213796459156,268.192579737621,268.16905419882,268.165090018961,268.159327850404,268.166702963475,268.15015993617,268.162278227364,268.159965820474,268.158936220561,268.160398776818,268.147952892695,268.157893230141,268.162373019956,268.158584415868,268.167211530605,268.169656551114,268.166895004902,268.159837116499,268.157898758386,268.154717166862,268.16311598195,268.161354240149,268.16397242275,268.159441987647,268.162812965802,268.160071547639,268.158530191553,268.160630568325,268.159512110594,268.160946463441,268.148359647697,268.164102103297,268.162626121275,268.161003722095,268.146251764108,268.164653498598,268.148367738846,268.162298242621,268.162290252153,268.162990101759,268.147347513028,268.162157373782,268.164543423195,268.159062061577,268.148295527959,268.165543332604,268.165765622933,268.163084703402,268.171101713727,268.167127035261,268.168124019138,268.156883122325,268.157602155551,268.148467818473,268.157608595707,268.156742756282,268.300477590867,268.284159396801,268.274622312504,268.159440970189,268.148514349563,268.156528725694,268.157508895355,268.157888132312,268.156778118269,268.157778904972,268.168961740155,268.200934527291,268.191238593764,268.158478436271,268.156590400094,268.157816480064,268.157380916827,268.148817278652,268.156774882331,268.156213267504,268.158877639532,268.156787900307,268.148742281527,268.157403829659,268.155524372393,268.158562781068,268.158309962508,268.158455941583,268.160046467338,268.155600860857,268.148803077823,268.1560610684,268.155693638234,268.155799257964,268.148849148951,268.14888769754,268.155391882416,268.148341652065,268.1584357268,268.160302132146,268.16018484659,268.156464286572,268.148390463641,268.15518148229,268.157981662501,268.155986026438,268.158212660384,268.157644296207,268.14828738993,268.148368695417,268.15860345338,268.158906370831,268.158218867345,268.159023042814,268.159168269002,268.158611452847,268.147724651253,268.148818232495,268.158719725582,268.158915325044,268.158014867649,268.157058712429,268.157652470574,268.159178350419,268.158954582662,268.158926498375,268.158340378658,268.148369656299,268.157722540788,268.158311195799,268.158897526972,268.152742955601,268.160104035482,268.160407072753,268.162978109391,268.175050550004,268.175781150751,268.148600415618,268.156957946542,268.156849385096,268.156115685009,268.149175056911,268.149172038567,268.190120241137,268.210899151042,268.188465444681,268.193707540159,268.231238856217,268.222526649997,268.150102718091,268.175170484135,268.202205188717,268.149874484611,268.146752071931,268.150691513442,268.301325034453,268.150668047257,268.150233570835,268.199387288697,268.148849942997,268.14876032087,268.221777367313,268.277562842351,268.169255771771,268.164778619363,268.209762377774,268.18237162127,268.150660170283,268.149276789,268.154735529012,268.166743008622,268.157593992084,268.164599714646,268.180073823002,268.181709507829,268.173865796838,268.177524000934,268.194325595712,268.200346133812,268.173892468633,268.186167314907,268.189349700907,268.145723984642,268.182568471624,268.251024321326,268.228423553189,268.245325075237,268.233922824778,268.246212530753,268.211683173637,268.295647998628,268.205393685845,268.267266064527,268.222731516151,268.230230482894,268.257907215153,268.288011282201,268.26787209743,268.271929937056,268.211937881465,268.243747891958,268.198929017742,268.256147160324,268.255207054482,268.225755984798,268.19833021899,268.181586458723,268.213585476483,268.246258931481,268.261618151056,268.278881862005,268.254116087957,268.244708236622,268.243020163858,268.250853166571,268.2631620573,268.2201574616,268.261851881407,268.222304736739,268.228935216771,268.291724199631,268.266687640381,268.246236429229,268.251317397464,268.265573553662,268.229695251963,268.26550731055,268.233040472537,268.197853003404,268.215095904282,268.15741855263,268.190824683584,268.208984700817,268.214032478409,268.223777730517,268.298521767652,268.284507998431,268.281186684013,268.279540626895,268.251131492956,268.267502688093,268.249438529423,268.150353161769,268.150264431175,268.169062298816,268.147404514222,268.144458511681,268.149540910034,268.147154525171,268.147503451103,268.148277421774,268.147226278884,268.15036564084,268.146449301292,268.150567561871,268.148367950969,268.147498426418,268.147664246805,268.148512506243,268.14828223784,268.148621343111,268.14808164132,268.148783715385,268.148042733499,268.148904759702,268.148743148546,268.148725362572,268.146155407746,268.170734487455,268.147978577187,268.15031567263,268.150206050461,268.14846380127,268.147359504749,268.147629839103,268.144552561419,268.147050848069,268.147575454712,268.136639202914,268.17500195852,268.189140621951,268.208569545357,268.148972098523,268.148533364903,268.172154780208,268.187936430716,268.144038493303,268.164688699219,268.148910046206,268.219329567517,268.193161671054,268.200722056401,268.150246743157,268.157862049832,268.144534142159,268.149848207546,268.146494826834,268.14718728391,268.216973317662,268.179873838533,268.209688241385,268.147135311603,268.147607334253,268.163217901019,268.148034472215,268.143920416578,268.147958133306,268.162076493739,268.147624747624,268.148194231741,268.147840229442,268.148006434897,268.148027099602,268.148552937186,268.148152149045,268.148339839794,268.148026477214,268.148607676927,268.148380636905,268.148521662066,268.148822847774,268.148675815291,268.150190157545,268.148821772457,268.148708056352,268.14864142768,268.181295272545,268.164784471705,268.177339378883,268.16339479588,268.171799062373,268.153771194288,268.160557760156,268.161867886661,268.179244941504,268.179899729618,268.168598771558,268.199092878091,268.157322585562,268.167752130577,268.165306589722,268.179029691298,268.239685608061,268.213734443583,268.192530613971,268.147782415273,268.14815276985,268.148852988495,268.147689299798,268.150439867906,268.148493189254,268.148767177667,268.148904257038,268.1487167886,268.150221018251,268.149021988532,268.148483526551,268.14892599776,268.150589307727,268.147336223214,268.150527106529,268.155914896969,268.155662915594,268.152435544975,268.148386387194,268.148603732444,268.148284215662,268.14883458898,268.148425398635,268.148758127465,268.148955960146,268.148687191278,268.148824764897,268.148654118647,268.150242795927,268.148273136628,268.148451902815,268.148649195866,268.149736435309,268.14801715752,268.150274181963,268.14848357963,268.148539158326,268.148621064387,268.150385275362,268.148513909175,268.148219452414,268.148881695797,268.150230827685,268.148079803745,268.147996635347,268.148454665737,268.147298365011,268.147966084171,268.147746588145,268.149146048131,268.149069784385,268.150219936385,268.149051080824,268.149171980329,268.300417396823,268.284101170556,268.274563476309,268.148858860767,268.150228801328,268.149218591246,268.1491307265,268.149050125922,268.149161349551,268.14904352508,268.147710897707,268.168552133988,268.191199669289,268.148955503689,268.149194113171,268.149037130765,268.14909620252,268.150152088328,268.149184074698,268.149234899298,268.148913458927,268.149167353095,268.150198962981,268.149092378803,268.149323461471,268.148968531631,268.148981615593,268.148962140353,268.148764124537,268.149298333849,268.150198676182,268.149281666261,268.149320543076,268.149298791368,268.150156310847,268.150143909074,268.149425954875,268.150249728821,268.149010563699,268.148738762228,268.148758722837,268.14919371605,268.150208001139,268.149487716848,268.14907362429,268.149407165238,268.148984906383,268.149075212931,268.150129247401,268.150156179695,268.149224407326,268.148900689739,268.149173187873,268.148886461423,268.148864322791,268.149390966378,268.150247508415,268.150202230132,268.148953762649,268.148923506183,268.14938213578,268.149308255135,268.14903200553,268.149133862941,268.148888837121,268.148900413927,268.148961204936,268.150187850739,268.14916802311,268.149273524407,268.148896932001,268.151915705966,268.14875538782,268.148716740706,268.14843453814,268.146979501032,268.147422854349,268.150165361333,268.14940493073,268.149258007998,268.149272227118,268.150120945066,268.150125113744,268.190087468287,268.210850136612,268.188425096231,268.19366983704,268.231180414632,268.222477875857,268.15,268.175073230489,268.202066376751,268.15,268.15,268.15,268.301142466899,268.15,268.15,268.198966307118,268.15,268.15,268.2213101482,268.277400970071,268.169153059604,268.15,268.209604801785,268.182187863683,268.15,268.15,268.15,268.143109609863,268.142488654079,268.141210364893,268.180001559292,268.181666093736,268.144326871888,268.177382058261,268.194242035138,268.200182492719,268.173835518403,268.186294278931,268.188240360144,268.15,268.143415611917,268.250856597114,268.228299109748,268.245243526072,268.233733648623,268.24606280167,268.210754064111,268.295474859961,268.148369946059,268.267105407503,268.221710828445,268.230458859689,268.257791298593,268.287844317847,268.267717055276,268.27177160342,268.211731589013,268.243575437164,268.14631811161,268.255976915609,268.255037966704,268.224136865923,268.147536253033,268.15,268.212803027616,268.245995237068,268.261454078997,268.278701160157,268.254014200982,268.244719458257,268.242794090534,268.250688891573,268.262988516049,268.219884411529,268.261635834968,268.222104517588,268.228635947244,268.291526073056,268.266485860128,268.246003919488,268.251086200118,268.265388938614,268.22949768527,268.265293224762,268.232823611244,268.197778155978,268.214956844423,268.157407009081,268.190675810063,268.208771349093,268.21384568453,268.223573311151,268.298337034597,268.284323186169,268.280994371349,268.279326649803,268.250915303715,268.267291342864,268.249221665397,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.145063827938,268.15,268.15,268.15,268.141854158956,268.148541600692,268.15,268.15,268.15,268.15,268.150292313389,268.157880510622,268.15,268.15,268.15,268.15,268.15,268.15,268.217374821148,268.149068032901,268.209361703277,268.15,268.15,268.15,268.15,268.15,268.15,268.143747119437,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.180206808204,268.164675733005,268.17706063112,268.142667511869,268.171764292336,268.15,268.160515993627,268.161806430454,268.179137999363,268.179773560789,268.168536769729,268.198926081412,268.15729916875,268.167689413741,268.165226534709,268.178931098459,268.239470450565,268.213549081846,268.192383420991,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.144784909659,268.146232443409,268.146677671944,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.300235810226,268.283924959399,268.274389188117,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.191082974297,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.189982372987,268.210703699136,268.188303550666,268.193558061037,268.231006365178,268.222331693757],"Archive802_field17":[0,78.9567609143879,511.598595635518,0,345.841941442446,0,1216.49639445394,0,0,875.917448387661,128.522361273582,138.785094808752,2063.00726995361,885.502635336641,25.3639333680492,185.553008628126,529.810388283215,193.771320627321,0,288.43734362187,-193.085672139481,161.365159313403,32.3346226420328,112.150359738576,397.780277408083,215.930546313956,423.880315554173,65.0666000492312,394.213489827051,556.841510862975,244.559591308865,347.570812251563,606.876925482412,758.796069999869,1035.73529348798,971.809296772963,852.066447610675,1424.09578501053,729.141431650351,1106.80523030995,1127.85114258683,1152.34224520576,2011.53323287449,1245.85827762865,1587.63977485932,1850.19567471735,1149.17543324482,1030.729169589,963.790195926546,1108.69059048887,586.277562403342,620.037180546864,2026.0133012304,1497.12547280458,797.432298177412,1924.12936961247,2552.4277131784,618.227749668406,2315.9076914609,1531.44243676019,1386.22219785619,1285.69810152915,1329.51681098134,1738.09113375078,1631.4377639236,857.967183671874,742.370102130162,1979.76119390398,568.179260534591,1165.52115526725,1485.3587688429,981.174272929813,1228.10743763608,1175.11796969722,1380.9344079338,1363.18938192562,669.609827854516,971.251578951564,928.399120517172,579.579156755986,696.043425807437,-379.249881509744,218.084847800629,454.976588989998,210.581072085126,423.064749439007,1136.86561947465,1212.46476517422,1099.05135918554,782.779953919284,673.311695938585,832.444327259139,815.49517884813,0,0,425.50110947805,312.922165416353,453.482882620875,323.79926400105,282.884670430343,251.364553354173,210.574208943227,317.27422336647,0,479.877224524786,0,173.467722396856,349.534593687373,255.705243724757,167.42944331153,197.335400164915,152.294471829656,216.959822719579,131.603289066379,226.16497852916,122.561428640262,142.283204726279,143.694092238523,431.583541442925,445.807855035185,214.015840804578,0,0,172.410153696674,411.06043692737,267.957615246908,657.861920602919,341.053472225003,283.023685131768,1028.02320433575,1474.94962043312,1451.26668104678,2455.28422682422,116.000200783091,165.122038980735,839.215616185538,3306.62370086411,469.433325668232,653.081687542191,479.734738756603,573.629831586622,2000.29490541939,1332.04947878222,661.04651587492,445.814232100831,623.392166181894,554.374725313072,367.327681394093,311.478026747606,1464.13342257929,737.75338215452,850.931280197198,363.649928459144,273.414878643846,457.624578869242,323.944433232959,382.665162885727,280.933279698029,300.28950040672,285.246463466292,203.908127651227,240.984878593144,223.519759882262,220.230236706816,161.567159766289,207.695305310132,186.136668305738,226.49725884851,155.222837772874,181.307531073041,164.861519823971,132.909490681467,147.600416820218,0,132.268306528738,143.813709370813,151.735365960723,245.835308112537,-166.37501542246,50.652493566707,78.27252438031,-5.47902455370133,-207.678683264976,-57.34835340603,-358.954274435359,62.820016652499,77.9184801535691,-102.415552640905,224.420480939941,-235.664960232923,-34.7637618308194,45.4649371262637,77.4574779819342,368.045087526598,269.160067803296,153.069205550744,262.911174192088,208.250144375603,128.369835508839,207.736885116584,0,168.604170191446,137.143570828896,124.458521260832,143.252077770601,0,106.443851638406,169.934488099449,113.641960952763,237.901847317507,256.518247761783,203.934015946853,-482.431624430584,-301.465857806004,-534.107205678094,180.652665392103,156.168618307796,192.699145893663,129.600238669608,176.330863319735,138.607517128161,118.09103969746,146.466248436648,131.079658311814,150.624369611053,0,194.227992110808,173.577348592966,151.268722695179,0,185.506320212448,0,155.376485726336,161.400839813589,180.629902518459,0,167.565075254625,200.57625330427,124.457655142769,0,217.792581786429,221.244774398508,182.752045812073,293.791268986026,235.552682497367,250.904585136035,91.8556573253102,105.360820417151,0,99.2190135981525,92.0407857942297,1218.31205840223,1219.35826059351,1290.4380134482,119.312947168868,0,84.6407686014145,92.826620449689,101.554762580959,84.7468963153042,105.231382275878,263.640218238169,1045.45184227745,112.448584702512,116.428378303053,90.733412037214,107.491309894723,101.979705572373,0,89.8209136749742,84.8305261928578,122.303203840623,93.8858242570599,0,102.654300798264,75.4269031183402,107.723645584375,115.176648492545,113.32178576776,138.218865824652,74.4220148851354,0,81.125101372597,74.3791297607902,72.007151888245,0,0,70.1107606064243,0,116.710626348453,140.755894633014,140.722706106448,85.1296572874666,0,67.8978838281939,106.212684904231,80.7773670064677,107.727639367334,102.273075770026,0,0,110.598733529845,115.17235334707,104.603627039094,124.875798383218,120.697589369398,111.020981135213,0,0,113.421871483122,114.154010912996,103.483597068173,94.1793962493526,97.1759667883615,117.823402766449,120.730203581667,122.584440221661,113.370958601256,0,101.564380713172,110.612142198289,112.469772591531,-624.551884079959,139.454896879804,143.195305248948,177.777983108302,348.502192078196,356.68863797705,0,93.1907354638026,89.9263753152761,82.1721781659231,0,0,397.471135429269,525.858521320313,482.397956029583,454.012729432142,621.437194320575,540.799235241453,0,78.7827001739657,515.272692379803,0,345.841941442446,0,1219.79152030127,0,0,869.649740832241,128.522361273582,138.785094808752,2057.20237485957,889.725024902738,25.4323360000971,185.553008628126,533.291626931875,194.782121546127,0,288.43734362187,-193.085672139481,116.288878636684,19.326013432979,82.5925096151419,401.329270698158,220.427102272928,414.229048404691,72.51511106302,397.247798603649,558.719035210648,247.739627000738,350.922737961953,609.88479773989,758.796069999869,995.494335896088,977.066927342583,855.485797160821,1428.62084420621,732.905160820538,1116.84074150514,1157.04519119846,1156.24934867331,1937.46313472781,1249.78240056946,1584.22172286079,1846.89209698905,1154.72580204772,1034.98329700137,968.22158115837,1113.12795181402,589.326979103997,623.82284729848,1982.32808417637,1498.56041415589,801.550508821125,1929.82967803508,2424.20022182641,618.227749668406,2183.52961495586,1532.95116156608,1388.88353780977,1288.69187604289,1333.76587236236,1737.20081482534,1631.76124761621,862.3716462726,746.368198104247,1977.65190586547,571.363885208011,1172.6557147298,1487.72619588143,984.96406671667,1231.36149350126,1179.44125037078,1383.42199135429,1365.58024459787,675.143780266732,975.383221114688,934.457749327569,587.092355876148,704.426900392099,-392.166693785459,220.846267359553,460.834351956632,211.346420404026,425.844844493424,1140.33046481024,1215.69105379861,1102.65836793331,786.640859036313,677.254450650704,836.51600598921,820.253206859963,0,0,425.50110947805,312.922165416353,453.482882620875,323.79926400105,282.884670430343,251.364553354173,210.574208943227,317.27422336647,0,479.877224524786,0,173.467722396856,349.534593687373,255.705243724757,167.42944331153,197.335400164915,152.294471829656,216.959822719579,131.603289066379,226.16497852916,122.561428640262,142.283204726279,143.694092238523,431.583541442925,445.807855035185,214.015840804578,0,0,172.410153696674,411.06043692737,267.957615246908,657.861920602919,341.053472225003,283.023685131768,1028.02320433575,1474.94962043312,1387.77744327858,2455.28422682422,116.000200783091,165.122038980735,792.913042168876,3306.62370086411,469.433325668232,653.081687542191,479.734738756603,573.629831586622,1697.5189992122,1238.17147996952,661.04651587492,445.814232100831,623.392166181894,554.374725313072,367.327681394093,311.478026747606,1466.80962453169,622.746463960776,868.556878867655,363.649928459144,273.414878643846,457.624578869242,323.944433232959,382.665162885727,280.933279698029,244.398494893193,285.246463466292,203.908127651227,240.984878593144,223.519759882262,220.230236706816,161.567159766289,207.695305310132,186.136668305738,226.49725884851,155.222837772874,181.307531073041,164.861519823971,132.909490681467,147.600416820218,0,132.268306528738,143.813709370813,151.735365960723,256.333704390814,-169.877153972904,64.3296168645536,61.1764947413793,-19.1495338833838,-207.678683264976,-58.3819764064219,-355.43718718703,62.1990518374623,75.3684310598501,-103.237720913707,225.182115055661,-237.958709595259,-35.6060494116279,45.067775719613,77.2464899877565,369.996643786945,270.39067393432,153.341657260294,262.911174192088,208.250144375603,128.369835508839,207.736885116583,0,168.604170191446,137.143570828896,124.458521260832,143.252077770601,0,106.443851638406,169.934488099449,113.641960952763,237.901847317507,256.518247761783,203.934015946853,-424.680845076279,-308.917874770422,-463.934999397979,180.652665392103,156.168618307796,192.699145893663,129.600238669608,176.330863319735,138.607517128161,118.09103969746,146.466248436648,131.079658311814,150.624369611053,0,194.227992110808,173.577348592966,151.268722695179,0,185.506320212448,0,155.376485726336,161.400839813589,180.629902518459,0,167.565075254625,200.57625330427,124.457655142769,0,217.792581786429,221.244774398508,182.752045812073,293.791268986026,235.552682497367,250.904585136035,91.8556573253102,105.360820417151,0,99.2190135981525,92.0407857942296,1221.80557677224,1222.9938230861,1293.62370466808,119.312947168868,0,84.6407686014145,92.826620449689,101.554762580959,84.7468963153042,105.231382275878,263.640218238169,1045.45184227744,112.497624628318,116.428378303053,90.733412037214,107.491309894723,101.979705572373,0,89.8209136749742,84.8305261928578,122.303203840623,93.8858242570599,0,102.654300798264,75.4269031183402,107.723645584375,115.176648492545,113.32178576776,138.218865824652,74.4220148851354,0,81.125101372597,74.3791297607902,72.007151888245,0,0,70.1107606064243,0,116.710626348453,140.755894633014,140.722706106448,85.1296572874666,0,67.8978838281939,106.212684904231,80.7773670064677,107.727639367334,102.273075770026,0,0,110.598733529846,115.17235334707,104.603627039094,124.875798383218,120.697589369398,111.020981135213,0,0,113.421871483122,114.154010912996,103.483597068173,94.1793962493526,97.1759667883614,117.823402766449,120.730203581667,122.584440221661,113.370958601256,0,101.564380713172,110.612142198289,112.469772591531,-624.551884079959,139.454896879804,143.195305248948,177.777983108302,348.502192078196,356.68863797705,0,93.1907354638026,89.9263753152761,82.1721781659231,0,0,401.142118657727,529.530626408563,486.049497040182,457.654406380537,625.187317747422,544.495887719425,0,78.2662367346505,518.40144130662,0,345.841941442446,0,1210.24275028387,0,0,850.225199764142,128.522361273582,138.785094808752,2015.23503297635,890.610864330073,22.5322630064021,185.553008628126,536.353002629197,190.99693708456,0,288.43734362187,-193.085672139481,54.6593206772513,-21.4106575799984,16.7868829318619,404.716920883559,226.508064027811,374.644908384819,85.3177342925689,399.879901963834,562.867228016647,250.868123304291,368.45806841909,613.784669163749,758.796069999869,891.609736690079,980.983940763233,858.574351597121,1421.76610409346,735.720566506341,1133.63079111202,1232.82424866029,1151.12480783341,1801.05330265572,1243.30293433528,1550.87035574259,1805.23134019913,1155.83498821182,1033.47025202774,968.710160580838,1110.93043522954,592.504609344306,626.528778593732,1854.35477690194,1479.01316908661,803.624365420091,1919.49171183764,2144.58809540613,618.227749668406,1902.20675157097,1513.86887981918,1375.63119109333,1277.25008061853,1327.30504050166,1708.2278322491,1603.18330003472,864.921600822042,748.494638567541,1923.70280916809,571.709621772132,1175.98213636813,1468.78769837196,979.918860362442,1220.45192524608,1172.33962098412,1366.97566412039,1350.21593771626,679.62221842159,971.298709531738,936.008621354356,581.873440907086,713.094211369725,-412.983870441327,228.688550763904,470.929066297769,211.228208129593,427.778508930061,1132.02396982394,1205.56462198983,1095.15640869526,785.085434821627,677.760926675685,834.648189792053,820.381569091673,0,0,425.50110947805,312.922165416353,453.482882620875,323.79926400105,282.884670430343,251.364553354173,210.574208943227,317.27422336647,0,479.877224524786,0,173.467722396856,349.534593687373,255.705243724757,167.42944331153,197.335400164915,152.294471829656,216.959822719579,131.603289066379,226.16497852916,122.561428640262,142.283204726279,143.694092238523,431.583541442925,445.807855035185,214.015840804578,0,0,172.410153696674,411.06043692737,267.957615246908,657.861920602919,341.053472225003,283.023685131768,1028.02320433575,1474.94962043312,1278.7652197116,2455.28422682422,116.000200783091,165.122038980735,713.15911579379,3306.62370086411,469.433325668232,653.081687542191,479.734738756603,573.629831586622,1545.37062304518,998.294510694494,661.04651587492,445.814232100831,623.392166181894,554.374725313072,367.327681394093,311.478026747606,1461.99789740584,452.508630512855,903.875867182689,363.649928459144,273.414878643846,457.624578869242,323.944433232959,382.665162885727,280.933279698029,177.380714780893,285.246463466292,203.908127651227,240.984878593144,223.519759882262,220.230236706816,161.567159766289,207.695305310132,186.136668305738,226.49725884851,155.222837772874,181.307531073041,164.861519823971,132.909490681467,147.600416820218,0,132.268306528738,143.813709370813,151.735365960723,263.972576403997,-189.651121328752,117.795757858274,-2.48869988916258,-59.2223546119314,-207.678683264976,-58.8109328919237,-339.805987047016,60.5206867076446,67.9205732938238,-103.333084433872,225.055673890541,-237.815937538739,-36.1790376007449,44.5125097413369,76.6128620003089,370.480322286747,270.612817833877,152.804226352862,262.911174192088,208.250144375603,128.369835508839,207.736885116584,0,168.604170191446,137.143570828896,124.458521260832,143.252077770601,0,106.443851638406,169.934488099449,113.641960952763,237.901847317507,256.518247761783,203.934015946853,-379.613817611154,-299.764636406181,-418.091484250976,180.652665392103,156.168618307796,192.699145893663,129.600238669608,176.330863319735,138.607517128161,118.09103969746,146.466248436648,131.079658311814,150.624369611053,0,194.227992110808,173.577348592966,151.268722695179,0,185.506320212448,0,155.376485726336,161.400839813589,180.629902518459,0,167.565075254625,200.57625330427,124.457655142769,0,217.792581786429,221.244774398508,182.752045812073,293.791268986026,235.552682497367,250.904585136035,91.8556573253102,105.360820417151,0,99.2190135981525,92.0407857942297,1213.5982654063,1215.62344837859,1283.37375805656,119.312947168868,0,84.6407686014145,92.826620449689,101.554762580959,84.7468963153042,105.231382275878,263.640218238169,1045.45184227745,112.019963727964,116.428378303053,90.733412037214,107.491309894723,101.979705572373,0,89.8209136749742,84.8305261928578,122.303203840623,93.8858242570599,0,102.654300798264,75.4269031183402,107.723645584375,115.176648492545,113.32178576776,138.218865824652,74.4220148851354,0,81.125101372597,74.3791297607902,72.007151888245,0,0,70.1107606064243,0,116.710626348453,140.755894633014,140.722706106448,85.1296572874666,0,67.8978838281939,106.212684904231,80.7773670064677,107.727639367334,102.273075770026,0,0,110.598733529845,115.17235334707,104.603627039094,124.875798383218,120.697589369398,111.020981135213,0,0,113.421871483122,114.154010912996,103.483597068173,94.1793962493526,97.1759667883615,117.823402766449,120.730203581667,122.584440221661,113.370958601256,0,101.564380713172,110.612142198289,112.469772591531,-624.551884079959,139.454896879804,143.195305248948,177.777983108302,348.502192078196,356.68863797705,0,93.1907354638026,89.9263753152761,82.1721781659231,0,0,404.877013693076,532.619072648624,489.28522851619,461.017427392082,627.933724764005,547.51765409705],"Archive802_field18":[0,100.537116257951,14.3616302931975,0,25.0528837972279,0,115.786416095196,0,0,17.8735034990095,10.0695929620417,9.53564625729504,184.344787810842,47.2102174483821,-23.8364344883067,48.97124146722,15.5432212752486,-4.85480196354159,0,35.8064749269799,-102.13397903108,-1.50965941111441,-29.206829907297,-11.4273158674687,5.21739576479325,-9.62609026605952,32.772360935363,-22.8196058550276,5.73238411331828,17.2341599031477,-7.00042575131579,14.6991111610058,18.9929053602991,6.66057025919043,3.38696297630255,48.2190135654956,31.7883024593316,70.5612338167032,30.1245367808074,48.7042614274897,26.2830518178952,82.3740535798242,79.8570932860909,85.6359589734603,61.0025884081211,109.825786013958,65.8482226967564,63.7725715535551,53.982420582192,70.1451786201082,19.1160660307801,23.2130484033327,156.86530113465,124.486280003881,37.7952008275302,145.610303644612,226.965585048621,19.4356245354167,244.49923880561,103.155071473087,102.735571933624,114.62979475753,80.2405301348292,136.884447020655,159.907598801736,41.4719849686357,33.6132316470691,201.10731024947,118.106857395639,162.1381406188,169.733817769001,128.060525878735,136.445123219263,147.06401653614,149.340891557749,131.060891697534,126.462343926166,131.872593413087,141.59181533886,139.928943858048,136.156119872056,95.664569024233,99.3441701243964,115.628190624475,104.426812978041,112.49210676104,125.524520979597,124.249094323131,129.515580285119,125.189812745408,122.844626267906,127.356228214724,129.903830757017,0,0,53.104159672541,13.7117495539174,-25.0337891688825,-26.1588325423895,13.125865157312,2.43292564571174,14.4680520885018,19.5467665653308,0,43.3391942126569,0,5.15940993962377,19.6674310251686,15.1242912495579,11.3564427360037,12.846611159749,10.1197579169607,14.2467310400774,5.86439125529243,14.1673884545943,8.15157800901312,9.31023927315925,9.5617484561061,29.2204032470398,-51.1904493325942,14.1414646381354,0,0,12.0220999503758,30.6732342516103,17.8140232977056,-67.894814767344,21.7420387795483,20.7643634000449,108.246024138026,3.87070772319045,22.8595343113727,125.905438452583,8.01551308840865,11.1972160301573,9.94256716146975,300.128466405254,35.5668557675113,52.0282189445245,47.6520380337795,153.195399604851,229.40760111259,197.821234769822,151.662902099062,46.4018243440617,111.127803343318,44.4465896169419,22.9253267232338,23.5884882982542,189.44428917931,176.928360195268,157.191972083737,27.8382313817536,20.4614567084544,190.199803174118,46.244489238828,30.7088460371249,29.0574227834083,88.8299065526743,21.9033132644667,15.0994127693499,17.5236150236333,15.8226732343129,16.2733283914792,11.9794930576968,15.81319441745,13.6828684472591,17.1379931144374,11.4083981736894,13.6521216086997,12.0637244110824,9.69765562746321,10.8596933998681,0,9.98481084453303,10.7786828116003,11.5027317878248,98.5432947074865,78.557950063507,82.5122162778187,58.8404575158448,79.7028399765776,22.8167032714197,97.5839070086328,94.4656517824947,98.6271715856466,94.6006702913263,94.7026534012709,103.354971033883,95.9044212014511,97.4004524661088,99.6770263652587,100.262767780809,110.262284148742,106.302438119726,102.19090083156,18.308675999383,14.2195317886226,9.93514805490893,21.5163387444286,0,12.0825761965663,10.3705816369168,9.40247720920338,10.93926108664,0,7.90101243363081,13.0167922525754,8.22026825822907,17.1652969922122,26.141620471049,2.87246516320051,98.1547228651701,66.3272422382385,116.989106088821,12.6509286906669,10.9975982775192,13.4830134280736,9.26256472398478,12.5613279083581,9.74410332278426,8.29261680920967,10.3697695255196,9.50092509589082,11.7516976381235,0,15.3921433370421,13.2725459112179,12.0904359976435,0,22.8921764238706,0,14.0037994679386,15.9780278025092,16.4996600385705,0,13.5541087719365,14.317230297909,8.77445421892933,0,19.2523875054663,17.9412871271208,16.1748213702925,23.6060335484069,18.9099818892122,19.6512925657737,6.25456794815771,7.13739557168034,0,6.98328888387821,6.56880778873758,100.381231927927,92.2350619091412,101.961753823648,5.21210011320429,0,4.74751994350404,6.84146328544143,3.53691070808715,3.64803570844645,7.74176229326512,17.9888901876514,122.662597202998,101.397206150643,8.8106575118021,6.90986538851011,8.48497048508152,7.46074941721198,0,7.93946258552325,6.67302629966974,9.69158983706039,7.56223395287025,0,7.30178659896151,6.22028684482344,9.23988329465995,10.5294733454499,9.84162334104515,10.6023492437343,6.00088962619403,0,8.73001219533524,6.15960621160307,5.76023692765094,0,0,8.29134593756357,0,12.8250582307077,10.1843974198607,11.2727990866893,6.28543817437774,0,7.761847310701,8.22853158816587,9.9527913540219,9.00524582798758,9.63820414158254,0,0,9.83465134480704,8.46381826386752,9.72789316778105,9.3189277902665,8.75554476672395,9.80413112003835,0,0,8.60726906796801,9.6481000106831,8.57736201480165,11.0705321213073,7.15463090191644,8.4571196243835,8.9102175594342,8.85279597850324,8.46549883024691,0,6.09326539678978,7.07198021949434,8.76291332560424,135.961328781347,10.169049596018,10.2814486822916,13.9369183105311,37.6251400688365,29.0057307649912,0,5.8608078235541,5.67787065832952,5.88384294422024,0,0,5.15785596750652,15.4748451669486,12.0009097625108,9.71234473438312,23.1361321676762,16.7223508238843,0,100.140111398852,15.0566938885997,0,25.0528837972279,0,116.167025236506,0,0,18.0997958207553,10.0695929620417,9.53564625729504,183.862733553019,47.8951665912842,-23.9801772865174,48.97124146722,16.200375237006,-4.30467724340894,0,35.8064749269799,-102.13397903108,-11.9516439153087,-24.2474651274804,-17.6116784051152,5.91580209708413,-8.63832888447838,29.939340476428,-21.0711582105456,6.38861787343642,17.4015629938424,-6.36582671715262,14.0633515068484,18.73402557437,6.66057025919043,5.40811835659236,49.0045752553184,32.4403536164018,71.3308519676022,30.765426588893,49.9101371545396,29.1003410232984,82.9767526067991,78.2507159651007,86.2795682114364,60.8164344316041,110.725167843989,66.6599302205706,64.4405621939828,54.6806465104799,70.8325519408968,19.6426782227118,23.8948174218135,151.600191022763,124.889452313944,38.4788426875202,146.199021043772,212.878094193395,19.4356245354167,233.488394067697,103.775396333213,103.290682827246,115.048870421976,80.9782051636427,137.20509040461,160.089655771831,42.1756813660996,34.2952052555131,201.22280867909,118.041536467753,162.48710582187,169.899527446188,128.22110525188,136.691275525261,147.270652258632,149.562285912984,131.384954065758,126.467892764598,132.016142224093,141.725910293221,138.749044280382,136.140981078236,96.185091468408,99.2395989634529,115.561255094922,104.130257156617,112.358482722821,125.792127952842,124.564634266788,129.737220261554,125.24135108897,122.840806696148,127.433544301344,129.975425805381,0,0,53.104159672541,13.7117495539174,-25.0337891688825,-26.1588325423895,13.125865157312,2.43292564571174,14.4680520885019,19.5467665653308,0,43.3391942126569,0,5.15940993962377,19.6674310251686,15.1242912495579,11.3564427360037,12.846611159749,10.1197579169607,14.2467310400774,5.86439125529243,14.1673884545943,8.15157800901312,9.31023927315925,9.56174845610609,29.2204032470398,-51.1904493325942,14.1414646381354,0,0,12.0220999503758,30.6732342516103,17.8140232977056,-67.894814767344,21.7420387795483,20.7643634000449,108.246024138026,3.87070772319045,22.5410678155747,125.905438452583,8.01551308840865,11.1972160301573,12.3422947668822,300.128466405254,35.5668557675113,52.0282189445245,47.6520380337795,153.195399604851,208.250365140825,189.184095394834,151.662902099062,46.4018243440617,111.127803343319,44.4465896169419,22.9253267232338,23.5884882982542,189.356373615795,163.272226766815,158.390966089078,27.8382313817536,20.4614567084544,190.199803174118,46.244489238828,30.7088460371249,29.0574227834083,79.6017275774481,21.9033132644667,15.0994127693499,17.5236150236333,15.8226732343129,16.2733283914792,11.9794930576968,15.81319441745,13.6828684472591,17.1379931144374,11.4083981736894,13.6521216086997,12.0637244110824,9.69765562746321,10.8596933998681,0,9.98481084453303,10.7786828116003,11.5027317878248,99.273385655447,77.1805132262464,82.8917485037732,66.7590206159696,79.3145723282632,22.8167032714197,97.1026163210686,93.3066327862824,98.2048335280901,94.2398688173661,94.0436013693723,103.097375113679,95.4213572828871,96.8984251078545,99.256269350727,99.8604543028804,110.076269388368,106.053699637171,101.850722177063,18.308675999383,14.2195317886226,9.93514805490893,21.5163387444286,0,12.0825761965663,10.3705816369168,9.40247720920338,10.93926108664,0,7.90101243363081,13.0167922525754,8.22026825822907,17.1652969922122,26.141620471049,2.87246516320052,98.7074843791692,71.5107660187453,104.529486538423,12.6509286906669,10.9975982775192,13.4830134280736,9.26256472398478,12.5613279083581,9.74410332278426,8.29261680920967,10.3697695255196,9.50092509589082,11.7516976381235,0,15.3921433370421,13.2725459112179,12.0904359976435,0,22.8921764238706,0,14.0037994679386,15.9780278025092,16.4996600385705,0,13.5541087719365,14.317230297909,8.77445421892933,0,19.2523875054663,17.9412871271208,16.1748213702925,23.6060335484069,18.9099818892122,19.6512925657737,6.2545679481577,7.13739557168034,0,6.98328888387821,6.56880778873757,100.881003322017,92.7999758970396,102.483196970362,5.21210011320429,0,4.74751994350404,6.84146328544143,3.53691070808715,3.64803570844645,7.74176229326512,17.9888901876514,122.662597202998,101.023953446976,8.8106575118021,6.90986538851011,8.48497048508152,7.46074941721198,0,7.93946258552325,6.67302629966974,9.69158983706039,7.56223395287025,0,7.30178659896151,6.22028684482344,9.23988329465995,10.5294733454499,9.84162334104515,10.6023492437343,6.00088962619403,0,8.73001219533524,6.15960621160307,5.76023692765094,0,0,8.29134593756358,0,12.8250582307077,10.1843974198607,11.2727990866893,6.28543817437774,0,7.76184731070099,8.22853158816587,9.9527913540219,9.00524582798759,9.63820414158255,0,0,9.83465134480704,8.46381826386752,9.72789316778105,9.3189277902665,8.75554476672395,9.80413112003835,0,0,8.60726906796801,9.64810001068309,8.57736201480165,11.0705321213073,7.15463090191644,8.4571196243835,8.9102175594342,8.85279597850324,8.46549883024691,0,6.09326539678978,7.07198021949434,8.76291332560425,135.961328781347,10.169049596018,10.2814486822916,13.9369183105311,37.6251400688365,29.0057307649912,0,5.8608078235541,5.67787065832952,5.88384294422024,0,0,5.89675292047151,16.1657147106883,12.7006524383114,10.4200934642986,23.8110018471623,17.412735338888,0,100.898375948896,16.2578941298699,0,25.0528837972279,0,116.485985420306,0,0,22.6597546508682,10.0695929620417,9.53564625729504,179.186395453801,49.72511825487,-24.9245812008592,48.97124146722,17.3264963756031,-6.44491134692823,0,35.8064749269799,-102.13397903108,-22.4169136626347,-28.5260216853007,-27.0197121045055,6.91098259691383,-7.41732331403437,24.9465961392456,-18.5275285305924,6.83301773358605,17.8895457779715,-5.70104491915472,11.4332831943034,17.8425229306014,6.66057025919043,5.68948438321958,51.6552460817182,35.4240413641949,73.9973232475372,32.514561086757,54.4112581198632,39.9405735969466,84.4152931687045,75.9642795879595,87.9270398005634,60.259941015075,113.719900551764,69.2545423828432,66.2362312168062,56.6672875101177,72.746137227154,20.7629922728283,25.2965196111771,141.134508503299,124.982644193775,40.2766471833124,146.158084030537,183.64210754502,19.4356245354167,209.0693272599,105.25138110497,104.382834019552,115.44971849712,83.193957936728,136.784046794201,158.342099774171,44.2423948540863,35.9405796823744,197.265654200148,118.344593924232,161.716808772501,168.230471068009,128.047440098809,136.198265453236,146.417369545122,148.523607181056,131.109282460143,126.165270078875,131.675463324171,140.82552331936,129.843716720777,134.185892458488,97.5989894664648,101.653196375985,116.081211120724,104.958500516776,113.019153427246,125.725783378248,124.557595112174,129.5085058692,125.19386189212,122.892720109029,127.279284753715,129.647693540141,0,0,53.104159672541,13.7117495539174,-25.0337891688825,-26.1588325423895,13.125865157312,2.43292564571174,14.4680520885018,19.5467665653308,0,43.3391942126569,0,5.15940993962377,19.6674310251686,15.1242912495579,11.3564427360037,12.846611159749,10.1197579169607,14.2467310400774,5.86439125529243,14.1673884545943,8.15157800901312,9.31023927315925,9.5617484561061,29.2204032470398,-51.1904493325942,14.1414646381354,0,0,12.0220999503758,30.6732342516103,17.8140232977056,-67.894814767344,21.7420387795483,20.7643634000449,108.246024138026,3.87070772319045,19.8757174473411,125.905438452583,8.01551308840865,11.1972160301573,12.5300158481318,300.128466405254,35.5668557675113,52.0282189445245,47.6520380337795,153.195399604851,194.907783597253,166.666542971367,151.662902099062,46.4018243440617,111.127803343318,44.4465896169419,22.9253267232338,23.5884882982542,188.161059804797,142.904131637421,158.895202900424,27.8382313817536,20.4614567084544,190.199803174118,46.244489238828,30.7088460371249,29.0574227834083,66.5766184432384,21.9033132644667,15.0994127693499,17.5236150236333,15.8226732343129,16.2733283914792,11.9794930576968,15.81319441745,13.6828684472591,17.1379931144374,11.4083981736894,13.6521216086997,12.0637244110824,9.69765562746321,10.8596933998681,0,9.98481084453303,10.7786828116003,11.5027317878248,98.005109247171,75.7649308528092,89.8812362008972,71.6564144824215,82.6682548329089,22.8167032714197,97.6473463051032,91.9791931380676,99.1624892392717,96.0090092457962,94.5283862728419,104.272391594409,95.546332841341,97.5190710454529,99.9784242567174,100.648111574521,110.745255867129,106.898446379783,102.742611166969,18.308675999383,14.2195317886226,9.93514805490893,21.5163387444286,0,12.0825761965663,10.3705816369168,9.40247720920338,10.93926108664,0,7.90101243363081,13.0167922525754,8.22026825822907,17.1652969922122,26.141620471049,2.87246516320051,93.9683705393509,69.1900329836844,94.7906600545439,12.6509286906669,10.9975982775192,13.4830134280736,9.26256472398478,12.5613279083581,9.74410332278426,8.29261680920967,10.3697695255196,9.50092509589082,11.7516976381235,0,15.3921433370421,13.2725459112179,12.0904359976435,0,22.8921764238706,0,14.0037994679386,15.9780278025092,16.4996600385705,0,13.5541087719365,14.317230297909,8.77445421892933,0,19.2523875054663,17.9412871271208,16.1748213702925,23.6060335484069,18.9099818892122,19.6512925657737,6.25456794815771,7.13739557168034,0,6.98328888387821,6.56880778873758,101.774143008,94.0220341260706,103.43609125337,5.21210011320429,0,4.74751994350404,6.84146328544143,3.53691070808715,3.64803570844645,7.74176229326512,17.9888901876514,122.662597202998,101.818327641075,8.8106575118021,6.90986538851011,8.48497048508152,7.46074941721198,0,7.93946258552325,6.67302629966974,9.69158983706039,7.56223395287025,0,7.30178659896151,6.22028684482344,9.23988329465995,10.5294733454499,9.84162334104515,10.6023492437343,6.00088962619403,0,8.73001219533524,6.15960621160307,5.76023692765094,0,0,8.29134593756357,0,12.8250582307077,10.1843974198607,11.2727990866893,6.28543817437774,0,7.761847310701,8.22853158816587,9.9527913540219,9.00524582798758,9.63820414158254,0,0,9.83465134480704,8.46381826386752,9.72789316778105,9.3189277902665,8.75554476672395,9.80413112003835,0,0,8.60726906796801,9.6481000106831,8.57736201480165,11.0705321213073,7.15463090191644,8.4571196243835,8.9102175594342,8.85279597850324,8.46549883024691,0,6.09326539678978,7.07198021949434,8.76291332560424,135.961328781347,10.169049596018,10.2814486822916,13.9369183105311,37.6251400688365,29.0057307649912,0,5.8608078235541,5.67787065832952,5.88384294422024,0,0,6.92472170094763,17.3861923900402,13.8510466171638,11.5248314995453,25.2096256426155,18.664741642576],"Archive802_field19":[0,0,0,0,346.748288954663,0,0,0,0,4.41948276285946,128.91633777561,139.112394250812,2.7615953308008,0,0,192.06207262048,0.222330662645461,6.77834328042343,0,290.654144830506,218.477023274121,2681.61088549301,0,3328.5697544212,0,1.44682004084228,4951.59977782027,6.98920700915503,2.03797218631204,1.87373232487055,0,0.0673382030905662,23.7609929842732,758.825702540018,7962.51872412734,0.104849184585696,2.09775559182878,7.1399099812126,0.168144546967608,0.491661662651081,7.60505411094417,0,13750.5730228592,0.22633727771762,33.046716526969,0.6501843641181,0.535900967435104,0,0.431536271028219,0.413166803175584,0.674020910808616,0,10161.3875641426,1.56126269270677,0.381416149934821,52.518753953644,10501.8115795408,618.549081672008,26732.8554171224,1.97896518140791,1.33838701318761,0.66818694994812,0.765413373157348,7.78783117445918,5.57035725554195,0.374289046048004,0,63.4201462265524,0,12.2414201361548,24.2743677948427,0,1.68410487560367,4.41607164299502,4.59676819879977,0.167789394487505,0.339177827500713,1.23184018383176,1.09243003977514,0.440323170552384,1.21765528972091,0,0.366998657890321,0.211093844343261,0,0.360148746380622,0,0.18669891404922,0.0309427348042043,0,0.384784580719828,0.206080680020811,0.419619424676735,0,0,428.948418671506,313.223398017418,454.173571424289,324.863525035438,283.19070388225,251.376706566159,211.070668768648,317.876937207369,0,481.833035056054,0,173.544575986809,350.088612230394,256.152144487162,167.814241271265,197.753352905524,152.63044025384,217.427250064335,131.733965678628,226.608369825017,122.832283838995,142.587576409356,144.011965885811,432.572750743664,448.938500676457,214.482662290187,0,0,172.828896052883,412.204856739642,268.549272342922,661.361254634243,341.746274722243,283.784690885462,1033.76334074759,1475.10192524653,7044.48608143443,2458.86255807845,116.276879131369,165.501355504278,4048.36750672784,3320.95481813591,470.799971888926,655.404910388045,482.108188156317,594.161384284015,3553.79509819636,11796.5928260493,678.280312197239,448.233218707029,633.226017220925,556.167436564467,368.042403196993,312.370649067663,80.4519663820056,6735.82513238645,16.4125019097758,364.714868756356,274.179938955778,495.658162878792,327.228661314197,383.896182974083,282.432216502554,1977.88491271958,286.086498410768,204.466575645104,241.621315631237,224.079229753319,220.830796480299,162.010782511453,208.296587563674,186.639037503638,227.144789140254,155.641622361165,181.820957563461,165.302433750673,133.262911225457,147.999488947152,0,132.644740947801,144.217176625537,152.170856131176,16.7575719422489,7.04973802803723,0.17724090983673,5415.91692460116,0.464137345048983,209.081465854937,0,0.646886232181402,0.228741947543758,0.23187288539573,0.51863250714904,0.267587456190623,0,0.413881948919151,0,0.408632510619407,0,0.395515809030343,0.404424411794383,263.548192346022,208.735210996084,128.753827872036,208.849460659594,0,169.03666896914,137.53522161873,124.813285276135,143.669271176636,0,106.736770864432,170.43242199253,113.938968288622,238.523661254318,257.847466912023,203.954904443419,4509.41208452004,1859.75227805325,0,181.095208974689,156.555479563634,193.170396909001,129.930905771049,176.777842780544,138.949694816974,118.381920656619,146.832977581361,131.423618208419,151.082232781061,0,194.837108216129,174.084178694494,151.751254511005,0,186.913847285321,0,156.006465387267,162.189956442781,181.381943191265,0,168.112529329265,201.08673655112,124.76665782956,0,218.642013711733,221.971198262978,183.466581010649,294.73852600555,236.310664753291,251.673247767069,92.0684085742833,105.602364201307,0,99.4645268838822,92.2749461186314,0,0.321845670989639,0.47757316445287,119.426812768379,0,84.7738614102198,93.0784478653156,101.616401037228,84.8254314443662,105.515840653902,264.253280208505,1052.93497892078,0,116.761367595803,90.9962231210916,107.825767508902,102.252337252026,0,90.1712023173751,85.0926569150584,122.686702767985,94.1899753171222,0,102.913748548707,75.6830253989555,108.119291072311,115.657054944805,113.748442983434,138.625021004457,74.6636247672624,0,81.5935558479048,74.6338130276291,72.2372473025659,0,0,70.59940109056,0,117.413276435897,141.123983751967,141.173617447919,85.3614524615159,0,68.340160891859,106.531052572677,81.3882914252293,108.103452610481,102.726305061269,0,0,111.035214029746,115.483015990491,105.055076458938,125.223128240995,121.014829295743,111.453119218628,0,0,113.748075252527,114.561081736017,103.838546665481,94.8279057910898,97.4390728211739,118.126617256559,121.058646166693,122.90377296861,113.686653913359,0,101.747066307084,110.838059568888,112.810708183168,639.209761613333,139.825267085998,143.564040399045,178.323600891479,350.527536188135,357.866125061533,0,93.37490650856,90.1054994442923,82.3826120792202,0,0,0.0921563330394679,0.468438597894699,0,0.504988861239825,0.390860563731122,0,0,0,0,0,346.748992105619,0,0,0,0,8.07674283432975,128.916435093994,139.112497946275,4.48092631141012,0,0,192.546913845877,0.213601519646682,11.2899681613072,0,290.677746753106,218.658724429262,2681.60682375592,0,3328.55602688444,0,1.95410705376583,4951.61044221649,10.7169383444919,3.05471603025608,2.92868981338393,0,0.120020549514877,35.8540537287271,758.845338897174,7962.5498724888,0.385749215075354,3.38705814887565,11.4468086276396,0.0738587558701957,0.678801747707314,13.0231374158048,0,13750.6075351446,0.226328743644277,50.8328463084258,1.86731053558983,0.69407814848419,0,0.461287437703793,0.435173386100566,1.32651236668489,0,10161.2833339346,2.6590777637587,0.380156848118854,83.1492065823997,10501.7360032219,618.619308611061,26732.8637758107,2.88493516465907,1.87398564922114,0.821680236150353,1.51980854737861,12.5797287214065,8.05128310343718,0.457678460837427,0,95.1605565651476,0,18.1044255003236,36.361289165346,0,2.38265400808486,6.76416823201354,7.05102466392049,0.173663157418244,0.24476594859454,1.68850549009535,1.81893472989664,2.52086748453452,2.04013269090927,0,0.490829999746548,0.665432145210834,0,0.29499119267243,0,0.0783627569992923,0.246405814855527,0,0.417795735894933,0.087221264115147,0.526066546847542,0,0,429.525175498506,313.226305549786,454.177751946096,324.904482142785,283.196427883036,251.377506988814,211.070656426654,317.882054804659,0,481.853279209541,0,173.544685987778,350.094110936889,256.152142314482,167.814356754545,197.753931436368,152.630621785501,217.427576660914,131.734003774372,226.608463820906,122.832350174889,142.58765802451,144.012066581497,432.579552719369,449.862815306184,214.482913544568,0,0,172.82901651164,412.212983514576,268.549659720615,661.38149217483,341.747673311449,283.785642718661,1033.94935442887,1475.77235214911,7044.45549323213,2460.49374372487,116.276924974952,165.501480411127,4048.34382981183,3323.99424900112,470.858608675037,655.938460250245,482.134965696794,596.59194862499,3555.09328645089,11796.6145464827,678.367673860074,448.335415415861,633.241465466661,556.226353011769,368.042530431098,312.372445455882,121.282847358164,6735.76183276836,24.2102931638469,364.716583781255,274.180903734457,496.021593951547,327.228694602001,383.899056791826,282.432195614725,1977.88604271046,286.08723409529,204.466808176499,241.621594450617,224.079433800414,220.831060881611,162.010926316747,208.296844383403,186.639217679399,227.144916445063,155.641743837227,181.821175358473,165.302593774824,133.263075489743,147.999586820831,0,132.644823234551,144.217264238999,152.170985201344,28.8146286655781,12.3998351736115,0.587962182813762,5415.90943845929,0.44353612875265,209.82818529357,0,2.00853802398978,0.155768283849137,0.325272077171764,0.944275781769961,0.247463487015711,0,0.349812728507571,0,0.432464561527888,0,0.413013966435419,0.411424233113442,263.549067927489,208.735538543874,128.75390255897,208.855837426164,0,169.036817039153,137.535316717584,124.813461592752,143.669395950384,0,106.736816670722,170.432579252726,113.938966156984,238.560472084547,257.849346148375,203.972686088947,4509.40240338737,1859.74670251974,0,181.095365091725,156.555606124374,193.17058637982,129.930974864512,176.778001588068,138.949778138149,118.382024123864,146.833090828046,131.423708741888,151.082359204894,0,194.837346296118,174.08434907366,151.751390221301,0,186.914931750545,0,156.006772326158,162.190295557907,181.381993347879,0,168.112732790396,201.086988101732,124.766714214961,0,218.642226691107,221.971611138673,183.466727949725,294.739406369251,236.310925377209,251.67394548017,92.0684004376706,105.602454371236,0,99.4644667313681,92.2749975578472,0,0.276540610319088,0.613124582971162,119.426840616525,0,84.7738459167091,93.078798614696,101.616408981407,84.8253905992458,105.515905111252,264.253336478383,1053.97034417024,0,116.761445010512,90.996304173104,107.825824507661,102.252417061214,0,90.1713928131778,85.0927067648587,122.68679446359,94.1900085151689,0,102.913823753917,75.6830652992628,108.119364243572,115.657110754471,113.7484714707,138.625128749781,74.6635806164193,0,81.5935737099734,74.6338760871156,72.2372319394066,0,0,70.5998172655221,0,117.413283683776,141.124152251395,141.173739782243,85.3614067780033,0,68.3407787645717,106.531264101499,81.3893623059692,108.103377941712,102.726825407703,0,0,111.036526736697,115.482940236772,105.055801717918,125.22327454347,121.014785972825,111.455344499691,0,0,113.748405585042,114.561269746175,103.840377314273,94.8295440965537,97.4389928443636,118.128987040636,121.058758557318,122.903894255759,113.686690261906,0,101.747918554625,110.840033771995,112.810631093777,639.35765374741,139.825385980557,143.564137903894,178.323789561514,350.529669060298,357.866449414733,0,93.3764414112348,90.1060907275178,82.3828464314594,0,0,0.335555650031376,0.495496576650427,0,0.55527116097209,0.405855655514389,0,0,0,0,0,346.754925177793,0,0,0,0,19.0485230487406,128.91691181099,139.11303186287,9.63891925323811,0,0,195.945092138208,0.18741409065034,24.8248428039585,0,290.892554961671,220.052379771302,2681.6051600671,0,3328.53408126975,0,3.47596809253645,4951.64536979177,21.9001323505026,6.10494756208824,6.09356227892406,0,0.682096807331126,72.1332359620893,759.081470693312,7962.66086404968,1.22844930654432,7.25496582001623,24.3675045669205,0.208998617422037,1.24022200287597,29.2773873303865,0,13750.7167636499,0.226303141424241,104.191235652796,9.41979523471305,1.16860969163145,0,0.550540937730513,0.50119313487551,3.28398673431368,0,10161.0805761492,5.95252297691445,0.376378942670954,175.040564468667,10501.5853927022,619.165893517822,26732.8890290505,5.60284511441266,3.48078155732176,1.28216009475705,3.78299407004238,26.9554213622484,15.4940606471229,0.707846705205697,0,190.381787580934,0,35.6934415928297,72.6220532768559,0,4.47830140552842,13.8084579990691,14.4137940592827,0.191284446210455,0.0384696881239737,3.05850140888615,3.99844880026113,11.4044394497952,4.50756489447439,0,0.862324025315231,2.02844704781355,0,0.0995185315478562,0,0.246645714150488,0.892795055009495,0,0.516829201420232,0.269356983601843,0.845407913359942,0,0,433.858000672268,313.246693656999,454.221512334637,325.222734521399,283.237982633677,251.382561340769,211.070763306128,317.921879589404,0,482.032255354843,0,173.545203016654,350.137949777157,256.152575992129,167.814972910421,197.757754790708,152.631668022395,217.429573260662,131.734162679947,226.608945075781,122.832676691063,142.588057893034,144.012585862907,432.636537773771,457.07194464181,214.484498420681,0,0,172.829655793039,412.278666592234,268.552184321775,661.534917928751,341.757372972911,283.792247579986,1035.28233405649,1481.02503086497,7044.40970093554,2473.31827564979,116.277127368404,165.502153738119,4048.37848408246,3347.1354349782,471.259382206096,659.293953392426,482.304324256895,616.423834667918,3564.1364827917,11796.6836655954,678.863634851237,449.290594855936,633.343345449399,556.680576725374,368.043621824061,312.384408064581,243.77549028664,6735.69160560858,47.6036669260608,364.726899279935,274.186851359559,498.850000843789,327.228831613877,383.920171588871,282.432139704614,1978.01929720459,286.091989072478,204.46813167534,241.623297741598,224.080596103476,220.832672679359,162.011696778093,208.298308099035,186.64021121668,227.145656409969,155.642379288483,181.822374448041,165.303469672007,133.26404214233,148.000065002539,0,132.645219662361,144.217682527564,152.171658528448,64.9857988355656,28.4501266103344,1.82012600174485,5415.88971200214,3.16655655015754,215.705239198761,0,6.09349339941494,0.0631527072347293,0.605469652499885,2.22120560563272,0.187091579490969,0,0.157605067272833,0,0.503960714253334,0,0.465508438650646,0.432423697070621,263.555166281066,208.737554999193,128.754248632067,208.907158967873,0,169.037613358022,137.535782957156,124.81450298176,143.67003549196,0,106.737011665226,170.433425796611,113.938959916217,238.914262571617,257.862530822273,204.171425337838,4509.38089275924,1859.84987666915,0,181.096219702059,156.55627750283,193.171660394136,129.931299744895,176.778856549238,138.950184497611,118.382597269116,146.833685482189,131.424171131277,151.083000008936,0,194.838667315459,174.085284672015,151.752092233277,0,186.922450510704,0,156.008568687441,162.192420683268,181.384354809343,0,168.113834585269,201.088480033297,124.76697317104,0,218.643413411012,221.974357485704,183.467482258884,294.744978279707,236.312442546047,251.678587756703,92.0683798016767,105.602949202,0,99.4646773695858,92.2752525218223,0,0.14062542830744,1.01977883852604,119.426950061664,0,84.7738156022543,93.0817852001547,101.616435520739,84.825432122857,105.516228973538,264.25361710587,1061.40122339085,0,116.761815503478,90.9967177030301,107.826077970702,102.252813848782,0,90.1726474615258,85.0929319215117,122.687237538179,94.1901407699206,0,102.914187809773,75.6832385430724,108.119702636887,115.657349511443,113.7485776422,138.62566429862,74.6635901724853,0,81.5936380009028,74.634186535016,72.2371978861241,0,0,70.6032801164093,0,117.413306855935,141.125085285782,141.174360162303,85.3614049827728,0,68.346577087325,106.532588357701,81.4000802456853,108.10363734856,102.731271097785,0,0,111.050027555437,115.483160471041,105.062379359838,125.22410890712,121.01474346239,111.480199736107,0,0,113.7509170084,114.562514414767,103.860170063915,94.8469309035181,97.4395990284642,118.155516033183,121.059365394658,122.90458014164,113.686843757231,0,101.756290169809,110.862050978164,112.811468778934,640.539761381847,139.826021836102,143.564621221641,178.324787888072,350.550547738981,357.869055738553,0,93.393540709437,90.1117634406768,82.3846963483004,0,0,1.0657536010071,0.576670512917614,0,0.706118060168885,0.450840930864192,0],"Archive802_field20":[4496724.25785978,8995.77,8995.77,4510975.69031491,8959045.35084758,4510543.2333273,8995.77,4524000.8044527,8951500.44868376,8995.77,7872125.89488054,7871789.02312555,8995.77,8995.77,8995.77,6575281.46068483,8995.77,8995.77,4571912.04040542,5623683.62371281,5650707.6325841,6548868.84396141,5932873.03537469,6303296.00028273,8995.77,8995.77,7277776.79631818,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,7732138.30025154,8131386.2805782,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8783280.71148351,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8904834.68179536,8995.77,8995.77,8995.77,8669555.0604549,8933607.92527455,8640891.20353004,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,4465249.42901569,4505282.59614433,7207077.9339471,6955263.09499016,7325841.17588855,6775141.32798488,6225616.53243029,5502970.13966684,6500452.56624793,7985913.23818897,4505715.65531215,7942417.64130281,4500837.98460299,5663510.28279704,7568154.15729641,7225503.63824416,7208214.12141527,7032937.95250889,6436591.29831483,7923056.21008403,5522559.89615308,7530299.86146306,6598583.76095077,6738969.31952299,7374089.62203754,8689205.86229095,8288760.02161888,5779464.65596992,4503293.66695674,7831021.49899668,8059857.51754172,8382372.25456149,8522428.3510494,8543839.15161619,8580083.05350431,8889294.67463579,8654335.76214208,8461819.46651273,8388299.18727585,8669120.90689934,7132603.19149194,7633873.54026061,7891105.27371063,8735321.99617944,8689675.72743782,8887276.85754684,8964750.68879233,8592988.93401551,8678098.86775265,8468144.22388599,8710828.68564964,8256608.85441352,8948982.90262916,8862887.08408391,8863524.5926336,8833904.26221216,8995.77,8144785.95510305,8995.77,8925326.18490803,8961838.4943896,8195687.89775729,7407612.83585986,7878826.61779651,7776452.11394277,7710624.80254445,8978597.16694077,8964782.93852007,8955397.76033874,8762607.94226384,8982455.60577331,8963792.48230195,8714490.74633298,8989516.91631696,8897713.17452168,8914707.32213185,8867677.51679586,8988966.66541102,8994515.96523748,8994395.35267187,7839565.98386428,8798910.77821596,8927341.95831312,8719554.94809048,8995.77,8995.77,8995.77,7319158.38776143,8995.77,6779810.77901717,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8745482.0684797,8409087.46889013,8399749.53449499,6117620.26198123,4601262.99818014,8618261.75674621,8650604.92325993,8591714.68601744,8468579.82561552,8672568.49026075,8059001.85625014,8550425.18946617,8830560.94308848,6736814.26716931,7132282.15622513,5763246.13039232,6244651.3513171,6615484.52552989,5716394.5013607,8416332.59920738,8246345.58303785,8681279.48388435,8440223.82042554,8859865.48270565,8251308.91468385,7797178.46079867,8619494.15478673,8839403.27043342,8173657.63125511,4505561.46978615,8121076.29866309,8268371.03101784,7568195.51777069,4454049.82939059,5300068.01561229,4501638.75122584,5749349.14041615,5296700.7430911,6173865.11982781,4498989.89122766,6979289.3334873,8862341.67023958,7611534.92627465,6448133.28394424,7284154.64077473,7857325.69518733,6729190.32177627,8428983.99767308,8275343.52127447,8644310.57034974,6854587.85194927,7221706.02376546,4506066.3799831,7782163.89788746,6135151.39949615,8995.77,8995.77,8995.77,5639538.28463756,4504963.06331025,5315673.77140812,5670081.02251925,5495163.49553811,5975736.46335473,6302683.33207158,8182527.13596168,8795387.04481199,8995.77,7969441.36490088,6951909.95084414,7290244.3112738,7573332.13988244,6439562.12064247,7427580.98086029,6013961.94790152,7212363.93304487,6683714.28546692,4499787.80809912,6633475.14250593,5954733.2941023,5655710.26092467,6530271.924013,5774413.74409529,7702524.99040092,6525861.06395278,4500711.63918806,5212707.78780127,5196354.73234867,5348592.9240697,4504376.25805705,5581466.28590687,5368301.89615189,4497227.59777176,5237860.06312235,6323713.52367147,6868496.74560498,7025646.4110157,7213737.82345473,6081717.40727938,5244230.83656336,6966692.84584046,8511519.03505861,8664796.5033811,8876294.10006556,8324921.84871731,8867010.99705591,8994980.32556357,8130098.48038661,8936272.47105474,8969481.16295709,8961972.40524098,8677117.18593595,8866561.70006775,8982372.89960226,8821895.4543165,8413946.59124445,7768759.37715954,7845894.90602439,8912208.88875649,8848422.66969551,8634177.67818542,8237874.32424171,8324792.29437035,8126958.73731744,8532084.98517954,8510774.0641189,5481717.42659243,8959905.71304482,8810971.45196344,7582037.85562386,8196238.85380631,8670614.3391953,7206429.95201777,7558814.07698634,6950183.78606508,6385795.39335025,4501008.28813679,5544361.97610838,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,3372543.19339484,6746.8275,6746.8275,3383231.76773618,6719284.01313569,3382907.42499547,6746.8275,3393000.60333953,6713625.33651282,6746.8275,5904094.4211604,5903841.76734416,6746.8275,6746.8275,6746.8275,4931461.09551363,6746.8275,6746.8275,3428934.03030406,4217762.71778461,4238030.72443807,4911651.63297106,4449654.77653102,4727472.00021205,6746.8275,6746.8275,5458332.59723864,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,5799103.72518866,6098539.71043365,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6611669.10390678,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6678626.01134652,6746.8275,6746.8275,6746.8275,6502166.29534118,6700205.94395591,6480668.40264753,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,3348937.07176177,3378961.94710825,5405308.45046033,5216447.32124262,5494380.88191641,5081355.99598866,4669212.39932272,4127227.60475013,4875339.42468595,5989434.92864173,3379286.74148411,5956813.23097711,3375628.48845224,4247632.71209778,5676115.6179723,5419127.72868312,5406160.59106145,5274703.46438167,4827443.47373613,5942292.15756302,4141919.92211481,5647724.89609729,4948937.82071308,5054226.98964224,5530567.21652815,6516904.39671822,6216570.01621416,4334598.49197744,3377470.25021756,5873266.12424751,6044893.13815629,6286779.19092111,6391821.26328705,6407879.36371214,6435062.29012823,6666971.00597684,6490751.82160656,6346364.59988455,6291224.39045688,6501840.68017451,5349452.39361896,5725405.15519546,5918328.95528297,6551491.49713458,6517256.79557837,6665457.64316013,6723563.01659425,6444741.70051163,6508574.15081448,6351108.16791449,6533121.51423723,6192456.64081014,6711737.17697187,6647165.31306294,6647643.4444752,6625428.19665912,6746.8275,6108589.46632729,6746.8275,6693994.63868102,6721378.8707922,6146765.92331797,5555709.62689489,5909119.96334738,5832339.08545708,5782968.60190833,6733947.87520557,6723587.20389005,6716548.32025405,6571955.95669788,6736841.70432999,6722844.36172646,6535868.05974973,6742137.68723772,6673284.88089126,6686030.49159888,6650758.1375969,6741724.99905827,6745886.97392811,6745796.5145039,5879674.48789821,6599183.08366197,6695506.46873484,6539666.21106786,6746.8275,6746.8275,6746.8275,5489368.79082107,6746.8275,5084858.08426288,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6559111.55135977,6306815.6016676,6299812.15087124,4588215.19648592,3450947.24863511,6463696.31755966,6487953.69244495,6443786.01451308,6351434.86921164,6504426.36769556,6044251.3921876,6412818.89209962,6622920.70731637,5052610.70037698,5349211.61716885,4322434.59779424,4683488.51348783,4961613.39414742,4287295.87602052,6312249.44940554,6184759.18727839,6510959.61291326,6330167.86531916,6644899.11202924,6188481.68601289,5847883.845599,6464620.61609005,6629552.45282506,6130243.22344133,3379171.10233961,6090807.22399732,6201278.27326338,5676146.63832801,3340537.37204295,3975051.01170922,3376229.06341938,4312011.85531212,3972525.55731833,4630398.83987086,3374242.41842074,5234467.00011548,6646756.25267968,5708651.19470599,4836099.96295818,5463115.98058105,5892994.2713905,5046892.7413322,6321737.99825481,6206507.64095586,6483232.9277623,5140940.88896195,5416279.5178241,3379549.78498733,5836622.9234156,4601363.54962211,6746.8275,6746.8275,6746.8275,4229653.71347817,3378722.29748268,3986755.32855609,4252560.76688944,4121372.62165358,4481802.34751605,4727012.49905368,6136895.35197126,6596540.283609,6746.8275,5977081.02367567,5213932.4631331,5467683.23345535,5679999.10491183,4829671.59048185,5570685.73564522,4510471.46092614,5409272.94978365,5012785.71410019,3374840.85607434,4975106.35687945,4466049.97057673,4241782.69569351,4897703.94300975,4330810.30807147,5776893.74280069,4894395.79796459,3375533.72939105,3909530.84085095,3897266.0492615,4011444.69305227,3378282.19354279,4186099.71443015,4026226.42211392,3372920.69832882,3928395.04734176,4742785.1427536,5151372.55920373,5269234.80826177,5410303.36759104,4561288.05545954,3933173.12742252,5225019.63438034,6383639.27629395,6498597.37753583,6657220.57504916,6243691.38653798,6650258.24779194,6746235.24417268,6097573.86028995,6702204.35329105,6727110.87221782,6721479.30393073,6507837.88945196,6649921.27505082,6736779.6747017,6616421.59073738,6310459.94343334,5826569.53286966,5884421.1795183,6684156.66656737,6636317.00227163,6475633.25863906,6178405.74318128,6243594.22077776,6095219.05298808,6399063.73888465,6383080.54808917,4111288.06994432,6719929.28478362,6608228.58897258,5686528.3917179,6147179.14035473,6502960.75439647,5404822.46401333,5669110.55773975,5212637.83954881,4789346.54501269,3375756.21610259,4158271.48208129,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96834.2811765852,0,0,0,0,0,0,0,0,0,0,0,0,0,3.83512741564118e-10,0,-2.55675161042745e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive802_field21":[499.807830353322,1,1,502.17959779523,992.586165070175,501.980284338487,1,503.699885170231,992.726409875928,1,875.136437396057,875.08018694854,1,1,1,733.996570551493,1,1,509.709624763174,628.047528089232,630.789799763806,718.855698710421,651.70208513662,692.467853707609,1,1,793.077474311145,1,1,1,1,1,1,857.636778309028,899.881525011209,1,1,1,1,1,1,1,967.829102351982,1,1,1,1,1,1,1,1,1,968.921846984958,1,1,1,966.41842876823,970.890114234494,1003.29037526473,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,496.051567904944,501.229663335712,801.504011424658,772.643775680914,812.637473435004,752.843102401462,691.231996279168,611.486669808267,722.42329452591,886.418855216468,501.296551965955,880.964326839946,500.475099323322,629.713705849448,840.215742707651,802.681555585406,801.21777656255,781.537677102464,715.436300085502,880.439223850934,614.052621153565,836.735350412139,733.640894183378,749.198550927015,819.760842609978,962.871405235832,917.910408476674,642.086690090519,500.899880124,868.381288471473,895.865889448055,930.516816652534,946.636563263316,944.08195005844,952.601788106403,987.133293544525,948.456566790233,929.140410948569,927.073775512488,953.015631284191,793.030883648516,848.538720905648,873.987194018769,948.88613312163,965.108996832593,965.192308798667,999.639600823779,951.836136348438,947.072811986683,949.480249254812,964.054133580838,916.997336156299,994.49397622418,980.626295189359,983.938574918252,981.097587483951,1,923.122700270976,1,989.536004073955,995.936537067345,910.694753430635,825.22115016121,875.362598820866,863.566779870193,851.659872941229,997.605661173317,996.305608370967,994.952445010139,973.738619404062,997.979454910463,996.355161097661,968.439418536591,999.142111413929,988.536074670055,990.968639543663,985.609313323192,999.116763930745,999.819915719715,999.86560500315,869.763483554225,978.17149742163,992.430224331048,969.236560521312,1,1,1,806.721057500519,1,757.884241688239,1,1,1,1,1,1,1,1,1,1,1,1,1,971.347098581885,934.448032694795,933.807667485738,678.926378939353,517.067959246214,957.946475397477,961.674781032179,955.044467135548,941.378104776198,961.833511649333,896.016649030007,950.357079782552,981.856748664201,751.397542585225,791.936037475679,645.092464146762,653.918263271316,717.962805059707,629.188384979076,935.447380148631,916.661730988514,964.822937097538,938.347539012323,984.762958434365,917.294628643261,866.827687701745,958.164084367776,982.685576967639,908.569481677168,501.275802493639,902.501906595553,918.980938308186,841.256539039984,493.09554980567,589.037461050958,500.617394946151,639.00797833938,588.330345031243,686.652420810935,500.201692835252,775.681490842737,984.880413880845,846.251861952364,715.841457322407,809.455264405839,873.002947592589,747.851340490813,936.124330020239,919.336420924583,960.194113834786,762.268076739235,802.886960829417,501.357110048637,865.519854984272,682.189948838044,1,1,1,627.126559800165,501.179667476972,591.1797970763,630.228688197542,611.118332921532,664.715693414671,700.746727239393,908.967448313078,960.555624942419,1,885.997928042671,772.916761016612,810.536876127486,841.992458204604,714.439358133682,825.693301290013,668.669600595281,801.800315102138,743.169718563981,500.321127358907,737.498893021605,662.155262683299,628.834942792384,726.047278605364,642.098725333954,856.237956746348,725.776259154751,500.46987650884,579.689387831084,577.843986311315,594.851997765302,501.0744393344,619.469022696537,596.679100085757,499.896430238784,582.536293204758,702.805291750603,763.518968806654,781.336549414571,800.551300481681,675.861568856348,582.893198130418,774.01023726598,946.600557195097,962.857616582392,984.10557175042,923.370722153396,985.064028769976,1000.34611382112,903.504256969852,993.368409169335,997.373524854423,995.194926628677,962.56726266008,982.516465484415,998.299104111909,980.597693927814,934.488122332208,862.847599607627,872.671402309775,989.892442994692,983.695445869569,959.8198850488,915.916091103896,923.350232761055,902.980239972518,947.510633916235,946.6617101094,617.182155204219,996.013057170892,979.466786235568,842.625207937811,909.634626868539,962.42331020162,799.359641050848,839.513472344714,772.391106238715,709.832513116149,500.521307744336,615.906996665203,1,1,1,1,1,1,499.807830353322,1,1,502.17959779523,992.586165070175,501.980284338487,1,503.699885170231,992.726409875929,1,875.136437396057,875.08018694854,1,1,1,733.996570551493,1,1,509.709624763174,628.047528089232,630.789799763806,718.855698710421,651.70208513662,692.467853707609,1,1,793.077474311145,1,1,1,1,1,1,857.636778309028,899.881525011209,1,1,1,1,1,1,1,967.829102351982,1,1,1,1,1,1,1,1,1,968.921846984958,1,1,1,966.418428768231,970.890114234494,1003.29037526473,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,496.051567904944,501.229663335712,801.504011424658,772.643775680914,812.637473435004,752.843102401462,691.231996279167,611.486669808267,722.42329452591,886.418855216468,501.296551965956,880.964326839946,500.475099323322,629.713705849448,840.215742707651,802.681555585406,801.21777656255,781.537677102464,715.436300085501,880.439223850934,614.052621153565,836.735350412139,733.640894183378,749.198550927015,819.760842609978,962.871405235832,917.910408476674,642.086690090519,500.899880123999,868.381288471473,895.865889448055,930.516816652534,946.636563263316,944.08195005844,952.601788106403,987.133293544525,948.456566790233,929.140410948569,927.073775512488,953.015631284191,793.030883648517,848.538720905648,873.98719401877,948.88613312163,965.108996832593,965.192308798667,999.639600823779,951.836136348438,947.072811986682,949.480249254812,964.054133580838,916.997336156299,994.49397622418,980.626295189359,983.938574918252,981.097587483951,1,923.122700270976,1,989.536004073955,995.936537067344,910.694753430635,825.22115016121,875.362598820866,863.566779870193,851.659872941229,997.605661173317,996.305608370967,994.952445010139,973.738619404062,997.979454910463,996.355161097661,968.439418536591,999.142111413928,988.536074670055,990.968639543663,985.609313323192,999.116763930745,999.819915719715,999.86560500315,869.763483554225,978.17149742163,992.430224331047,969.236560521312,1,1,1,806.721057500519,1,757.88424168824,1,1,1,1,1,1,1,1,1,1,1,1,1,971.347098581885,934.448032694795,933.807667485738,678.926378939353,517.067959246214,957.946475397477,961.674781032178,955.044467135548,941.378104776198,961.833511649333,896.016649030007,950.357079782552,981.856748664201,751.397542585225,791.936037475679,645.092464146762,653.918263271316,717.962805059707,629.188384979076,935.447380148631,916.661730988515,964.822937097537,938.347539012323,984.762958434365,917.294628643261,866.827687701745,958.164084367776,982.685576967639,908.569481677168,501.275802493639,902.501906595553,918.980938308186,841.256539039983,493.09554980567,589.037461050958,500.617394946151,639.00797833938,588.330345031243,686.652420810935,500.201692835252,775.681490842737,984.880413880845,846.251861952364,715.841457322407,809.455264405839,873.002947592589,747.851340490813,936.124330020239,919.336420924583,960.194113834786,762.268076739235,802.886960829417,501.357110048637,865.519854984272,682.189948838044,1,1,1,627.126559800165,501.179667476971,591.1797970763,630.228688197542,611.118332921532,664.715693414671,700.746727239393,908.967448313079,960.555624942418,1,885.997928042671,772.916761016611,810.536876127486,841.992458204604,714.439358133682,825.693301290013,668.669600595281,801.800315102139,743.169718563981,500.321127358907,737.498893021605,662.155262683299,628.834942792384,726.047278605364,642.098725333954,856.237956746348,725.776259154751,500.46987650884,579.689387831084,577.843986311315,594.851997765302,501.0744393344,619.469022696537,596.679100085757,499.896430238784,582.536293204758,702.805291750603,763.518968806654,781.336549414571,800.551300481681,675.861568856348,582.893198130418,774.01023726598,946.600557195097,962.857616582392,984.10557175042,923.370722153396,985.064028769977,1000.34611382112,903.504256969852,993.368409169335,997.373524854423,995.194926628676,962.56726266008,982.516465484415,998.299104111909,980.597693927814,934.488122332209,862.847599607627,872.671402309775,989.892442994692,983.695445869569,959.8198850488,915.916091103896,923.350232761055,902.980239972518,947.510633916235,946.6617101094,617.182155204219,996.013057170892,979.466786235568,842.625207937811,909.634626868539,962.423310201621,799.359641050848,839.513472344714,772.391106238715,709.832513116149,500.521307744336,615.906996665203,1,1,1,1,1,1,499.807830353322,1,1,502.17959779523,992.586165070175,501.980284338487,1,503.699885170231,992.726409875928,1,875.136437396057,875.08018694854,1,1,1,733.996570551493,1,1,509.709624763174,628.047528089232,630.789799763806,718.855698710421,651.70208513662,692.467853707609,1,1,793.077474311145,1,1,1,1,1,1,857.636778309028,899.881525011209,1,1,1,1,1,1,1,967.829102351982,1,1,1,1,1,1,1,1,1,968.921846984958,1,1,1,966.41842876823,970.890114234494,1003.29037526473,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,496.051567904944,501.229663335712,801.504011424658,772.643775680914,812.637473435004,752.843102401462,691.231996279168,611.486669808267,722.42329452591,886.418855216468,501.296551965955,880.964326839946,500.475099323322,629.713705849448,840.215742707651,802.681555585406,801.21777656255,781.537677102464,715.436300085502,880.439223850934,614.052621153565,836.735350412139,733.640894183378,749.198550927015,819.760842609978,962.871405235832,917.910408476674,642.086690090519,500.899880124,868.381288471473,895.865889448055,930.516816652534,946.636563263316,944.08195005844,952.601788106403,987.133293544525,948.456566790233,929.140410948569,927.073775512488,953.015631284191,793.030883648516,848.538720905648,873.987194018769,948.88613312163,965.108996832593,965.192308798667,999.639600823779,951.836136348438,947.072811986683,949.480249254812,964.054133580838,916.997336156299,994.49397622418,980.626295189359,983.938574918252,981.097587483951,1,923.122700270976,1,989.536004073955,995.936537067345,910.694753430635,825.22115016121,875.362598820866,863.566779870193,851.659872941229,997.605661173317,996.305608370967,994.952445010139,973.738619404062,997.979454910463,996.355161097661,968.439418536591,999.142111413929,988.536074670055,990.968639543663,985.609313323192,999.116763930745,999.819915719715,999.86560500315,869.763483554225,978.17149742163,992.430224331048,969.236560521312,1,1,1,806.721057500519,1,757.884241688239,1,1,1,1,1,1,1,1,1,1,1,1,1,971.347098581885,934.448032694795,933.807667485738,678.926378939353,517.067959246214,957.946475397477,961.674781032179,955.044467135548,941.378104776198,961.833511649333,896.016649030007,950.357079782552,981.856748664201,751.397542585225,791.936037475679,645.092464146762,653.918263271316,717.962805059707,629.188384979076,935.447380148631,916.661730988514,964.822937097538,938.347539012323,984.762958434365,917.294628643261,866.827687701745,958.164084367776,982.685576967639,908.569481677168,501.275802493639,902.501906595553,918.980938308186,841.256539039984,493.09554980567,589.037461050958,500.617394946151,639.00797833938,588.330345031243,686.652420810935,500.201692835252,775.681490842737,984.880413880845,846.251861952364,715.841457322407,809.455264405839,873.002947592589,747.851340490813,936.124330020239,919.336420924583,960.194113834786,762.268076739235,802.886960829417,501.357110048637,865.519854984272,682.189948838044,1,1,1,627.126559800165,501.179667476972,591.1797970763,630.228688197542,611.118332921532,664.715693414671,700.746727239393,908.967448313078,960.555624942419,1,885.997928042671,772.916761016612,810.536876127486,841.992458204604,714.439358133682,825.693301290013,668.669600595281,801.800315102138,743.169718563981,500.321127358907,737.498893021605,662.155262683299,628.834942792384,726.047278605364,642.098725333954,856.237956746348,725.776259154751,500.46987650884,579.689387831084,577.843986311315,594.851997765302,501.0744393344,619.469022696537,596.679100085757,499.896430238784,582.536293204758,702.805291750603,763.518968806654,781.336549414571,800.551300481681,675.861568856348,582.893198130418,774.01023726598,946.600557195097,962.857616582392,984.10557175042,923.370722153396,985.064028769976,1000.34611382112,903.504256969852,993.368409169335,997.373524854423,995.194926628677,962.56726266008,982.516465484415,998.299104111909,980.597693927814,934.488122332208,862.847599607627,872.671402309775,989.892442994692,983.695445869569,959.8198850488,915.916091103896,923.350232761055,902.980239972518,947.510633916235,946.6617101094,617.182155204219,996.013057170892,979.466786235568,842.625207937811,909.634626868539,962.42331020162,799.359641050848,839.513472344714,772.391106238715,709.832513116149,500.521307744336,615.906996665203,1,1,1,1,1,1],"Archive802_field22":[999.807830353322,0.103616813294233,0.103616813294233,912.541279124654,342.708354708494,396.921633312094,0.103616813294233,309.002915473262,947.90725054064,0.103616813294233,675.197532215216,630.322122432411,0.103616813294233,0.103616813294233,0.103616813294233,180.489727931747,0.103616813294233,0.103616813294233,163.747992309606,246.133121930874,173.243062227149,135.743452253921,230.108121304753,147.904051624275,0.103616813294233,0.103616813294233,102.222127750783,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,177.793795050648,99.8448924355183,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.28336739913,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.396594115743,0.103616813294233,0.103616813294233,0.103616813294233,100.137197897783,180.314175777361,103.957751493706,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,225.722266829675,609.062019151939,166.943935887165,282.865772093069,225.619203355638,228.017690129988,266.818884709858,306.232744376266,370.384440180731,333.9884881979,457.864245025584,251.613523828147,381.410461004652,425.395590677253,293.849244781601,355.421411383436,494.184059699499,423.174933390649,471.145328812996,440.522986023572,512.72303005145,406.222776315547,580.926132862238,524.997373524849,574.844796147407,291.788321119968,190.539867735068,364.97173750227,533.099904561927,926.152549468541,538.186798322428,295.901697477104,405.046561422056,235.057548896017,344.862708732001,406.320607657368,177.519635127971,135.774044640414,98.8518168562168,115.587938026223,666.435115475759,528.317669828558,127.71454537361,107.027688028536,272.033624741586,201.295164333141,287.665944919192,171.054905390228,115.121619995463,98.3821177135973,209.948902722404,254.849371959325,259.339241298763,271.675242819609,340.284186155419,375.57038246527,0.103616813294233,147.281174757097,0.103616813294233,337.811903578248,421.88934462259,191.934844688043,263.384765466888,239.431643008828,355.03111928964,184.933722080252,408.05619163212,523.966501667706,460.914401913236,477.367100759104,492.976005518903,633.117093084293,502.756186762952,566.036164084905,477.634264889981,651.338561586298,568.82380281804,623.265527870334,750.754392353771,684.858845139027,972.353903886581,734.522247292454,693.831247678206,648.613960166332,0.103616813294233,0.103616813294233,0.103616813294233,136.711695075715,0.103616813294233,219.528720856999,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,420.186670389871,483.447132583896,719.29549487056,328.144456045446,260.744645463223,588.075189966715,701.58189742497,758.797161519722,661.58372624667,959.469142147867,814.737271502247,578.846390805775,840.920066504954,284.928710951887,331.130066722438,271.321704236267,166.800194646251,206.509322375087,297.232739817786,543.101880095631,599.465427819476,531.212230737761,718.393787420199,581.60767962339,662.539195961473,720.216901405549,660.047768021047,745.715267332879,612.048432716018,698.746476980443,494.76482987134,550.690729681384,564.580896291337,312.404567400978,351.984080287165,546.823406676357,463.529743041497,413.330686818479,402.906763534469,470.775373187158,478.006114424294,525.142795949004,670.271015513461,918.657928485653,407.024991291286,431.31667486262,426.517424871145,374.396924952677,433.970886288401,430.117547790223,795.882722985208,737.652409183635,760.454128621462,826.111518356958,708.144241994675,0.103616813294233,0.103616813294233,0.103616813294233,597.054890710623,684.644354671497,726.357208812653,831.530512867596,662.052690546502,772.849651554792,642.097129533271,394.021368662713,146.379695263017,0.103616813294233,744.853579178541,811.556581453456,730.392004700684,794.399831300961,984.48456829986,895.853468509896,732.658679053461,644.540101468655,754.804470333271,849.056464602309,686.37296979475,822.945496477034,641.916163169636,609.538780545665,553.113810301019,621.04883080949,897.513955271166,773.572882373943,732.278144517497,807.91195913339,871.946299319417,925.442107956101,991.112420436142,934.160796910559,621.734773347289,512.708336320324,503.374815172398,546.546728130109,866.489043482866,979.056615730947,942.768688482877,595.718444973353,931.79838450229,842.327460828006,896.686443424763,952.701307332042,965.67124756884,899.086223044274,840.830848608304,898.921000346722,786.250834536209,807.889572081502,900.374939355875,937.79331349097,939.907411232216,871.979308477259,861.994084259714,915.344403636712,923.206948046054,866.276715405594,893.602307465007,804.814606026646,773.748255902706,786.767280799616,932.036388675034,875.405874093468,873.230270904486,821.668995398393,224.653694898738,716.035365764781,688.063152435559,494.45252477202,321.204030975309,337.072124318983,921.841007131004,877.916958160139,862.681457844462,832.844565991408,835.25065769546,914.683572911537,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,999.807830353322,0.103616813294233,0.103616813294233,912.541279124654,342.708354708494,396.921633312094,0.103616813294233,309.002915473262,947.90725054064,0.103616813294233,675.197532215216,630.322122432411,0.103616813294233,0.103616813294233,0.103616813294233,180.489727931747,0.103616813294233,0.103616813294233,163.747992309606,246.133121930874,173.243062227149,135.743452253921,230.108121304753,147.904051624275,0.103616813294233,0.103616813294233,102.222127750783,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,177.793795050648,99.8448924355183,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.28336739913,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.396594115743,0.103616813294233,0.103616813294233,0.103616813294233,100.137197897783,180.314175777361,103.957751493706,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,225.722266829675,609.062019151939,166.943935887165,282.865772093069,225.619203355638,228.017690129988,266.818884709857,306.232744376266,370.384440180731,333.9884881979,457.864245025584,251.613523828147,381.410461004652,425.395590677253,293.849244781601,355.421411383436,494.184059699499,423.174933390649,471.145328812996,440.522986023572,512.72303005145,406.222776315547,580.926132862238,524.997373524849,574.844796147407,291.788321119968,190.539867735068,364.97173750227,533.099904561927,926.15254946854,538.186798322428,295.901697477104,405.046561422056,235.057548896017,344.862708732001,406.320607657368,177.519635127971,135.774044640414,98.8518168562168,115.587938026223,666.435115475759,528.317669828558,127.71454537361,107.027688028536,272.033624741586,201.295164333141,287.665944919192,171.054905390228,115.121619995463,98.3821177135973,209.948902722404,254.849371959325,259.339241298763,271.675242819609,340.284186155419,375.57038246527,0.103616813294233,147.281174757097,0.103616813294233,337.811903578248,421.88934462259,191.934844688043,263.384765466887,239.431643008828,355.03111928964,184.933722080252,408.05619163212,523.966501667706,460.914401913236,477.367100759104,492.976005518902,633.117093084293,502.756186762952,566.036164084905,477.634264889981,651.338561586298,568.82380281804,623.265527870334,750.754392353771,684.858845139027,972.35390388658,734.522247292454,693.831247678206,648.613960166332,0.103616813294233,0.103616813294233,0.103616813294233,136.711695075715,0.103616813294233,219.528720856999,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,420.186670389871,483.447132583896,719.29549487056,328.144456045446,260.744645463223,588.075189966715,701.58189742497,758.797161519722,661.58372624667,959.469142147867,814.737271502247,578.846390805775,840.920066504954,284.928710951887,331.130066722438,271.321704236267,166.800194646251,206.509322375087,297.232739817786,543.101880095631,599.465427819476,531.212230737761,718.393787420199,581.60767962339,662.539195961473,720.216901405549,660.047768021046,745.71526733288,612.048432716018,698.746476980443,494.76482987134,550.690729681384,564.580896291337,312.404567400977,351.984080287165,546.823406676357,463.529743041497,413.33068681848,402.906763534469,470.775373187158,478.006114424294,525.142795949004,670.271015513461,918.657928485653,407.024991291286,431.31667486262,426.517424871145,374.396924952677,433.970886288401,430.117547790223,795.882722985208,737.652409183635,760.454128621462,826.111518356958,708.144241994675,0.103616813294233,0.103616813294233,0.103616813294233,597.054890710623,684.644354671497,726.357208812653,831.530512867596,662.052690546502,772.849651554792,642.097129533271,394.021368662714,146.379695263017,0.103616813294233,744.853579178541,811.556581453456,730.392004700684,794.399831300961,984.48456829986,895.853468509896,732.658679053461,644.540101468655,754.804470333271,849.056464602309,686.372969794751,822.945496477034,641.916163169636,609.538780545665,553.113810301019,621.04883080949,897.513955271166,773.572882373943,732.278144517497,807.91195913339,871.946299319417,925.442107956101,991.112420436142,934.16079691056,621.734773347289,512.708336320324,503.374815172398,546.546728130109,866.489043482867,979.056615730948,942.768688482877,595.718444973353,931.79838450229,842.327460828006,896.686443424763,952.701307332042,965.671247568841,899.086223044275,840.830848608304,898.921000346722,786.250834536209,807.889572081502,900.374939355875,937.79331349097,939.907411232216,871.979308477259,861.994084259714,915.344403636711,923.206948046054,866.276715405594,893.602307465007,804.814606026646,773.748255902706,786.767280799616,932.036388675034,875.405874093468,873.230270904486,821.668995398393,224.653694898738,716.035365764781,688.063152435559,494.45252477202,321.204030975309,337.072124318983,921.841007131004,877.91695816014,862.681457844462,832.844565991408,835.25065769546,914.683572911537,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,999.807830353322,0.103616813294233,0.103616813294233,912.541279124654,342.708354708494,396.921633312094,0.103616813294233,309.002915473262,947.90725054064,0.103616813294233,675.197532215216,630.322122432411,0.103616813294233,0.103616813294233,0.103616813294233,180.489727931747,0.103616813294233,0.103616813294233,163.747992309606,246.133121930874,173.243062227149,135.743452253921,230.108121304753,147.904051624275,0.103616813294233,0.103616813294233,102.222127750783,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,177.793795050648,99.8448924355183,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.28336739913,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.396594115743,0.103616813294233,0.103616813294233,0.103616813294233,100.137197897783,180.314175777361,103.957751493706,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,225.722266829675,609.062019151939,166.943935887165,282.865772093069,225.619203355638,228.017690129988,266.818884709858,306.232744376266,370.384440180731,333.9884881979,457.864245025584,251.613523828147,381.410461004652,425.395590677253,293.849244781601,355.421411383436,494.184059699499,423.174933390649,471.145328812996,440.522986023572,512.72303005145,406.222776315547,580.926132862238,524.997373524849,574.844796147407,291.788321119968,190.539867735068,364.97173750227,533.099904561927,926.152549468541,538.186798322428,295.901697477104,405.046561422056,235.057548896017,344.862708732001,406.320607657368,177.519635127971,135.774044640414,98.8518168562168,115.587938026223,666.435115475759,528.317669828558,127.71454537361,107.027688028536,272.033624741586,201.295164333141,287.665944919192,171.054905390228,115.121619995463,98.3821177135973,209.948902722404,254.849371959325,259.339241298763,271.675242819609,340.284186155419,375.57038246527,0.103616813294233,147.281174757097,0.103616813294233,337.811903578248,421.88934462259,191.934844688043,263.384765466888,239.431643008828,355.03111928964,184.933722080252,408.05619163212,523.966501667706,460.914401913236,477.367100759104,492.976005518903,633.117093084293,502.756186762952,566.036164084905,477.634264889981,651.338561586298,568.82380281804,623.265527870334,750.754392353771,684.858845139027,972.353903886581,734.522247292454,693.831247678206,648.613960166332,0.103616813294233,0.103616813294233,0.103616813294233,136.711695075715,0.103616813294233,219.528720856999,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,420.186670389871,483.447132583896,719.29549487056,328.144456045446,260.744645463223,588.075189966715,701.58189742497,758.797161519722,661.58372624667,959.469142147867,814.737271502247,578.846390805775,840.920066504954,284.928710951887,331.130066722438,271.321704236267,166.800194646251,206.509322375087,297.232739817786,543.101880095631,599.465427819476,531.212230737761,718.393787420199,581.60767962339,662.539195961473,720.216901405549,660.047768021047,745.715267332879,612.048432716018,698.746476980443,494.76482987134,550.690729681384,564.580896291337,312.404567400978,351.984080287165,546.823406676357,463.529743041497,413.330686818479,402.906763534469,470.775373187158,478.006114424294,525.142795949004,670.271015513461,918.657928485653,407.024991291286,431.31667486262,426.517424871145,374.396924952677,433.970886288401,430.117547790223,795.882722985208,737.652409183635,760.454128621462,826.111518356958,708.144241994675,0.103616813294233,0.103616813294233,0.103616813294233,597.054890710623,684.644354671497,726.357208812653,831.530512867596,662.052690546502,772.849651554792,642.097129533271,394.021368662713,146.379695263017,0.103616813294233,744.853579178541,811.556581453456,730.392004700684,794.399831300961,984.48456829986,895.853468509896,732.658679053461,644.540101468655,754.804470333271,849.056464602309,686.37296979475,822.945496477034,641.916163169636,609.538780545665,553.113810301019,621.04883080949,897.513955271166,773.572882373943,732.278144517497,807.91195913339,871.946299319417,925.442107956101,991.112420436142,934.160796910559,621.734773347289,512.708336320324,503.374815172398,546.546728130109,866.489043482866,979.056615730947,942.768688482877,595.718444973353,931.79838450229,842.327460828006,896.686443424763,952.701307332042,965.67124756884,899.086223044274,840.830848608304,898.921000346722,786.250834536209,807.889572081502,900.374939355875,937.79331349097,939.907411232216,871.979308477259,861.994084259714,915.344403636712,923.206948046054,866.276715405594,893.602307465007,804.814606026646,773.748255902706,786.767280799616,932.036388675034,875.405874093468,873.230270904486,821.668995398393,224.653694898738,716.035365764781,688.063152435559,494.45252477202,321.204030975309,337.072124318983,921.841007131004,877.916958160139,862.681457844462,832.844565991408,835.25065769546,914.683572911537,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive802_field23":[-666601.865249779,330966.699871447,326690.034584177,-666722.208069553,-167116.531436683,-166669.655772917,322748.094960226,-166835.337039061,-666383.109263031,80852.3381996178,-417132.794514404,-416772.076524502,79544.7060791436,324903.196857081,83667.756496071,-41733.4500325816,206411.949493553,82638.8700486675,-41630.7212417883,-105352.046502378,-39732.9915066298,20637.7134140735,21121.9220477232,50431.7330485577,207053.450826614,125750.715789548,19587.3918896291,83598.2921636936,144541.054641374,116093.551422366,145034.411827214,69402.5298803851,42511.2402343997,-49222.3299630034,11728.985654859,204425.230487988,147372.178432512,120241.222945824,209306.478911194,149941.381931784,89014.7424578969,323260.377748552,30173.2388344499,223445.841698636,70862.2145538005,85450.2825054063,200181.668863733,323497.378272345,272667.658747973,259766.651993043,166488.539047982,326397.536968876,11495.4283343857,174673.514087584,275377.400812109,59032.0870360195,31094.9755105713,-48706.7922222029,54098.65124044,143671.719883687,194730.591505437,254985.523422875,169269.792828041,118743.748159152,141965.85932105,235077.215187437,325636.431036834,93373.672472766,326521.372334508,134746.690111846,135231.164083984,323927.238178023,227431.005303673,187623.970429832,179252.019552249,209557.996435344,206074.182651658,256622.701053132,182835.447916979,105279.404209786,152981.942221825,84313.5195511394,171504.36104471,175904.131133643,329208.41813981,255895.416682487,323970.842536187,277674.038825326,282966.209556732,324816.517600674,273532.274278762,287898.098481765,237158.915140477,-104159.325908814,-416716.096840725,-36368.7729603074,-139262.25844207,-91607.4055973394,-90256.4002632277,-132314.88201962,-164924.370118774,-211502.860428524,-174703.329153732,-291596.048442949,-109094.622505935,-229086.827888352,-261207.439550959,-144210.41746399,-196224.00334485,-309562.772695267,-252831.112641164,-294847.731162482,-261083.188826478,-333578.880136995,-235578.56728111,-384606.230807552,-337751.477467373,-375031.161870817,-135738.406564055,-55451.5994908599,-211677.479476001,-354215.645400806,-666487.73249001,-339581.554481124,-138255.544913263,-226649.058197637,-91718.6674297977,-177478.62600443,-221356.987387562,-64335.2233659581,-30148.8570402151,9438.48907349559,-11768.4184070707,-451737.680908065,-334930.265587835,1257.61691328635,-3161.40566559539,-99222.2235135894,-58819.455885355,-112477.975407272,-7851.91426143622,7388.47246947648,58184.1494471835,-47446.4051513708,-76956.4233011645,-98890.2136438533,-116030.367582503,-168820.337171002,-185043.608298197,91481.6034997617,32906.8977109452,103876.758713736,-158439.545944366,-225307.151624502,-22569.7567437939,-67995.1854690476,-58609.8631137205,-154577.691257444,5377.98264994889,-218270.464727405,-314671.578513155,-263228.959683693,-281536.624145766,-285118.466458663,-398105.199687373,-284938.763740814,-345041.862683856,-268466.195360452,-420900.955527091,-342092.268705009,-394017.855160152,-497877.825154986,-443044.019443361,-666458.443507592,-477230.7119089,-446549.246741131,-404573.741616178,60806.6699159047,65955.8050442672,115403.841019718,48117.971428359,126425.053908788,-17090.1349202914,208346.580491444,118889.73430155,219484.269212964,180428.095239259,168906.275501673,234796.042165224,146416.541320286,206929.067591617,271237.943666995,267870.541490577,327900.721536033,289638.281881587,268683.651799755,-235305.645834906,-291227.608219275,-458638.648446909,-123708.642924166,-41053.2260600565,-374906.24014783,-447037.592299338,-493764.865215401,-411632.871827427,-666408.386216664,-533542.336681191,-344942.351008169,-564560.792961931,-78839.5304938486,-130972.70948851,-58920.3256168988,55175.2109658806,16645.9807153568,21839.4524435161,-340266.945083216,-388353.374869715,-327161.471976823,-484141.683978299,-365279.709562127,-440263.191305327,-491945.858318856,-433699.920154963,-500698.609035356,-367823.95918332,-416673.978254311,-270942.967572486,-318431.226469424,-323619.246044393,-104361.168090684,-135705.301836464,-291646.449908641,-229574.940815688,-186938.330597601,-180476.896119511,-229075.974943055,-248298.613277823,-318677.281960084,-451776.720956373,-666439.493537043,-192320.08037886,-216801.544622978,-204372.099992295,-176955.591790522,-223497.974347937,-224628.508476442,-560068.019178882,-510322.399845172,-541653.23687929,-578318.564772241,-491929.781765979,322658.166680396,281567.400842186,237837.74536669,-402426.122819202,-479141.03881734,-510781.279736846,-596688.841328227,-456780.828440723,-545509.376510519,-436620.334422763,-220799.454156547,-33352.2179387512,331857.397216176,-475236.345556485,-522973.279823641,-457997.972335068,-513078.868195275,-666536.647995078,-595852.658613993,-452498.676035827,-386796.794282593,-474330.89825044,-541629.22645095,-417719.770161236,-526605.622962552,-375886.904375147,-353570.448063338,-303097.361986452,-370997.462712589,-590799.218294856,-479165.392550505,-448101.028336712,-510602.238736131,-564040.874872804,-604173.681451475,-666533.051037153,-616361.057800324,-354199.856657197,-266979.617376389,-265345.913619432,-304075.374219681,-568184.233246687,-666439.787882323,-627241.285355825,-336027.393122217,-623798.635229466,-560324.636629414,-609561.098968493,-666461.425947846,-666487.495061628,-616173.714908266,-569571.299796261,-604855.11253149,-522963.019940879,-547573.377061246,-622152.821876857,-666344.524199882,-666595.236381182,-600545.73485722,-597546.552120824,-622859.521924189,-623163.052711336,-573324.630029081,-622487.655374596,-549284.88762863,-527452.501405269,-542671.815141422,-666489.314019746,-618170.513479964,-613304.373623118,-567478.478803492,-4693.82275345628,-472873.94282978,-453952.254168638,-266067.877781507,-131287.990515933,-150423.982254406,-666469.243099394,-625786.017325842,-615935.700525135,-594209.865213159,-604167.213055223,-666555.037472336,190159.1939381,269653.729021311,271471.488701725,232345.103380402,269382.149667568,327624.917211587,-666601.865249779,330966.699871447,326690.034584177,-666722.208069553,-167116.531436683,-166669.655772917,322748.094960226,-166835.337039061,-666383.109263031,80852.3381996178,-417132.794514404,-416772.076524502,79544.7060791436,324903.196857081,83667.756496071,-41733.4500325816,206411.949493553,82638.8700486675,-41630.7212417883,-105352.046502378,-39732.9915066298,20637.7134140735,21121.9220477232,50431.7330485577,207053.450826614,125750.715789548,19587.3918896291,83598.2921636936,144541.054641374,116093.551422366,145034.411827214,69402.5298803851,42511.2402343997,-49222.3299630034,11728.985654859,204425.230487988,147372.178432512,120241.222945824,209306.478911194,149941.381931784,89014.7424578969,323260.377748552,30173.2388344499,223445.841698636,70862.2145538005,85450.2825054063,200181.668863733,323497.378272345,272667.658747973,259766.651993043,166488.539047982,326397.536968876,11495.4283343857,174673.514087584,275377.400812109,59032.0870360195,31094.9755105713,-48706.7922222029,54098.65124044,143671.719883687,194730.591505437,254985.523422875,169269.792828041,118743.748159152,141965.85932105,235077.215187437,325636.431036834,93373.672472766,326521.372334508,134746.690111846,135231.164083985,323927.238178023,227431.005303673,187623.970429832,179252.019552249,209557.996435344,206074.182651658,256622.701053132,182835.447916979,105279.404209786,152981.942221825,84313.5195511394,171504.36104471,175904.131133643,329208.41813981,255895.416682487,323970.842536187,277674.038825326,282966.209556732,324816.517600674,273532.274278762,287898.098481765,237158.915140477,-104159.325908814,-416716.096840725,-36368.7729603074,-139262.25844207,-91607.4055973394,-90256.4002632276,-132314.88201962,-164924.370118774,-211502.860428524,-174703.329153732,-291596.048442949,-109094.622505935,-229086.827888352,-261207.439550959,-144210.41746399,-196224.003344849,-309562.772695267,-252831.112641164,-294847.731162482,-261083.188826478,-333578.880136995,-235578.56728111,-384606.230807552,-337751.477467373,-375031.161870817,-135738.406564055,-55451.5994908599,-211677.479476001,-354215.645400806,-666487.73249001,-339581.554481124,-138255.544913263,-226649.058197637,-91718.6674297977,-177478.62600443,-221356.987387562,-64335.2233659581,-30148.8570402151,9438.48907349559,-11768.4184070707,-451737.680908065,-334930.265587835,1257.61691328635,-3161.40566559539,-99222.2235135894,-58819.455885355,-112477.975407272,-7851.91426143622,7388.47246947648,58184.1494471835,-47446.4051513708,-76956.4233011645,-98890.2136438533,-116030.367582503,-168820.337171002,-185043.608298197,91481.6034997617,32906.8977109452,103876.758713736,-158439.545944366,-225307.151624502,-22569.7567437939,-67995.1854690476,-58609.8631137205,-154577.691257444,5377.98264994889,-218270.464727405,-314671.578513155,-263228.959683693,-281536.624145766,-285118.466458663,-398105.199687373,-284938.763740814,-345041.862683856,-268466.195360452,-420900.955527091,-342092.268705009,-394017.855160152,-497877.825154986,-443044.019443361,-666458.443507592,-477230.711908899,-446549.246741131,-404573.741616178,60806.6699159047,65955.8050442672,115403.841019718,48117.9714283591,126425.053908788,-17090.1349202913,208346.580491444,118889.73430155,219484.269212964,180428.095239259,168906.275501673,234796.042165224,146416.541320286,206929.067591617,271237.943666995,267870.541490577,327900.721536033,289638.281881587,268683.651799755,-235305.645834906,-291227.608219275,-458638.648446908,-123708.642924166,-41053.2260600565,-374906.24014783,-447037.592299338,-493764.865215401,-411632.871827427,-666408.386216664,-533542.336681191,-344942.351008169,-564560.792961931,-78839.5304938486,-130972.70948851,-58920.3256168988,55175.2109658806,16645.9807153568,21839.4524435161,-340266.945083216,-388353.374869715,-327161.471976823,-484141.683978299,-365279.709562127,-440263.191305327,-491945.858318856,-433699.920154963,-500698.609035355,-367823.95918332,-416673.978254311,-270942.967572486,-318431.226469424,-323619.246044393,-104361.168090684,-135705.301836464,-291646.449908641,-229574.940815688,-186938.330597601,-180476.896119511,-229075.974943055,-248298.613277823,-318677.281960084,-451776.720956373,-666439.493537042,-192320.08037886,-216801.544622978,-204372.099992295,-176955.591790522,-223497.974347937,-224628.508476442,-560068.019178882,-510322.399845172,-541653.23687929,-578318.564772241,-491929.781765979,322658.166680396,281567.400842186,237837.74536669,-402426.122819202,-479141.03881734,-510781.279736846,-596688.841328227,-456780.828440723,-545509.376510519,-436620.334422763,-220799.454156547,-33352.2179387513,331857.397216176,-475236.345556485,-522973.279823641,-457997.972335068,-513078.868195275,-666536.647995078,-595852.658613993,-452498.676035828,-386796.794282593,-474330.89825044,-541629.22645095,-417719.770161236,-526605.622962552,-375886.904375147,-353570.448063338,-303097.361986452,-370997.462712589,-590799.218294856,-479165.392550505,-448101.028336712,-510602.238736131,-564040.874872804,-604173.681451475,-666533.051037153,-616361.057800324,-354199.856657197,-266979.617376389,-265345.913619432,-304075.374219681,-568184.233246687,-666439.787882323,-627241.285355825,-336027.393122217,-623798.635229466,-560324.636629414,-609561.098968493,-666461.425947846,-666487.495061628,-616173.714908266,-569571.299796261,-604855.11253149,-522963.019940879,-547573.377061246,-622152.821876857,-666344.524199882,-666595.236381182,-600545.73485722,-597546.552120824,-622859.521924189,-623163.052711336,-573324.630029081,-622487.655374596,-549284.88762863,-527452.50140527,-542671.815141422,-666489.314019746,-618170.513479964,-613304.373623118,-567478.478803493,-4693.82275345628,-472873.94282978,-453952.254168639,-266067.877781507,-131287.990515933,-150423.982254406,-666469.243099394,-625786.017325842,-615935.700525135,-594209.865213159,-604167.213055223,-666555.037472336,190159.1939381,269653.729021311,271471.488701725,232345.103380402,269382.149667568,327624.917211587,-666601.865249779,330966.699871447,326690.034584177,-666722.208069553,-167116.531436683,-166669.655772917,322748.094960226,-166835.337039061,-666383.109263031,80852.3381996178,-417132.794514404,-416772.076524502,79544.7060791436,324903.196857081,83667.756496071,-41733.4500325816,206411.949493553,82638.8700486675,-41630.7212417883,-105352.046502378,-39732.9915066298,20637.7134140735,21121.9220477232,50431.7330485577,207053.450826614,125750.715789548,19587.3918896291,83598.2921636936,144541.054641374,116093.551422366,145034.411827214,69402.5298803851,42511.2402343997,-49222.3299630034,11728.985654859,204425.230487988,147372.178432512,120241.222945824,209306.478911194,149941.381931784,89014.7424578969,323260.377748552,30173.2388344499,223445.841698636,70862.2145538005,85450.2825054063,200181.668863733,323497.378272345,272667.658747973,259766.651993043,166488.539047982,326397.536968876,11495.4283343857,174673.514087584,275377.400812109,59032.0870360195,31094.9755105713,-48706.7922222029,54098.65124044,143671.719883687,194730.591505437,254985.523422875,169269.792828041,118743.748159152,141965.85932105,235077.215187437,325636.431036834,93373.672472766,326521.372334508,134746.690111846,135231.164083984,323927.238178023,227431.005303673,187623.970429832,179252.019552249,209557.996435344,206074.182651658,256622.701053132,182835.447916979,105279.404209786,152981.942221825,84313.5195511394,171504.36104471,175904.131133643,329208.41813981,255895.416682487,323970.842536187,277674.038825326,282966.209556732,324816.517600674,273532.274278762,287898.098481765,237158.915140477,-104159.325908814,-416716.096840725,-36368.7729603074,-139262.25844207,-91607.4055973394,-90256.4002632277,-132314.88201962,-164924.370118774,-211502.860428524,-174703.329153732,-291596.048442949,-109094.622505935,-229086.827888352,-261207.439550959,-144210.41746399,-196224.00334485,-309562.772695267,-252831.112641164,-294847.731162482,-261083.188826478,-333578.880136995,-235578.56728111,-384606.230807552,-337751.477467373,-375031.161870817,-135738.406564055,-55451.5994908599,-211677.479476001,-354215.645400806,-666487.73249001,-339581.554481124,-138255.544913263,-226649.058197637,-91718.6674297977,-177478.62600443,-221356.987387562,-64335.2233659581,-30148.8570402151,9438.48907349559,-11768.4184070707,-451737.680908065,-334930.265587835,1257.61691328635,-3161.40566559539,-99222.2235135894,-58819.455885355,-112477.975407272,-7851.91426143622,7388.47246947648,58184.1494471835,-47446.4051513708,-76956.4233011645,-98890.2136438533,-116030.367582503,-168820.337171002,-185043.608298197,91481.6034997617,32906.8977109452,103876.758713736,-158439.545944366,-225307.151624502,-22569.7567437939,-67995.1854690476,-58609.8631137205,-154577.691257444,5377.98264994889,-218270.464727405,-314671.578513155,-263228.959683693,-281536.624145766,-285118.466458663,-398105.199687373,-284938.763740814,-345041.862683856,-268466.195360452,-420900.955527091,-342092.268705009,-394017.855160152,-497877.825154986,-443044.019443361,-666458.443507592,-477230.7119089,-446549.246741131,-404573.741616178,60806.6699159047,65955.8050442672,115403.841019718,48117.971428359,126425.053908788,-17090.1349202914,208346.580491444,118889.73430155,219484.269212964,180428.095239259,168906.275501673,234796.042165224,146416.541320286,206929.067591617,271237.943666995,267870.541490577,327900.721536033,289638.281881587,268683.651799755,-235305.645834906,-291227.608219275,-458638.648446909,-123708.642924166,-41053.2260600565,-374906.24014783,-447037.592299338,-493764.865215401,-411632.871827427,-666408.386216664,-533542.336681191,-344942.351008169,-564560.792961931,-78839.5304938486,-130972.70948851,-58920.3256168988,55175.2109658806,16645.9807153568,21839.4524435161,-340266.945083216,-388353.374869715,-327161.471976823,-484141.683978299,-365279.709562127,-440263.191305327,-491945.858318856,-433699.920154963,-500698.609035356,-367823.95918332,-416673.978254311,-270942.967572486,-318431.226469424,-323619.246044393,-104361.168090684,-135705.301836464,-291646.449908641,-229574.940815688,-186938.330597601,-180476.896119511,-229075.974943055,-248298.613277823,-318677.281960084,-451776.720956373,-666439.493537043,-192320.08037886,-216801.544622978,-204372.099992295,-176955.591790522,-223497.974347937,-224628.508476442,-560068.019178882,-510322.399845172,-541653.23687929,-578318.564772241,-491929.781765979,322658.166680396,281567.400842186,237837.74536669,-402426.122819202,-479141.03881734,-510781.279736846,-596688.841328227,-456780.828440723,-545509.376510519,-436620.334422763,-220799.454156547,-33352.2179387512,331857.397216176,-475236.345556485,-522973.279823641,-457997.972335068,-513078.868195275,-666536.647995078,-595852.658613993,-452498.676035827,-386796.794282593,-474330.89825044,-541629.22645095,-417719.770161236,-526605.622962552,-375886.904375147,-353570.448063338,-303097.361986452,-370997.462712589,-590799.218294856,-479165.392550505,-448101.028336712,-510602.238736131,-564040.874872804,-604173.681451475,-666533.051037153,-616361.057800324,-354199.856657197,-266979.617376389,-265345.913619432,-304075.374219681,-568184.233246687,-666439.787882323,-627241.285355825,-336027.393122217,-623798.635229466,-560324.636629414,-609561.098968493,-666461.425947846,-666487.495061628,-616173.714908266,-569571.299796261,-604855.11253149,-522963.019940879,-547573.377061246,-622152.821876857,-666344.524199882,-666595.236381182,-600545.73485722,-597546.552120824,-622859.521924189,-623163.052711336,-573324.630029081,-622487.655374596,-549284.88762863,-527452.501405269,-542671.815141422,-666489.314019746,-618170.513479964,-613304.373623118,-567478.478803492,-4693.82275345628,-472873.94282978,-453952.254168638,-266067.877781507,-131287.990515933,-150423.982254406,-666469.243099394,-625786.017325842,-615935.700525135,-594209.865213159,-604167.213055223,-666555.037472336,190159.1939381,269653.729021311,271471.488701725,232345.103380402,269382.149667568,327624.917211587],"Archive802_field24":[268.148582620949,268.14577038903,268.148982586633,268.151660620629,268.141943991647,268.141238667364,268.154396621571,268.141173305644,268.145570481569,268.144363365573,268.168662791813,268.170044645668,268.168991456418,268.149163453675,268.150411483933,268.184223028154,268.148795887581,268.149090828612,268.147551338447,268.189171592196,268.284225615861,268.205387515137,268.179777503478,268.198137628124,268.149173656515,268.149457655201,268.194737997371,268.149633128593,268.148901257342,268.148273211076,268.149546868352,268.150276054259,268.144737622637,268.233855282205,268.23047177343,268.148045192723,268.146820469431,268.145041359997,268.148374493386,268.145976206891,268.141138660965,268.151346657495,268.413204449604,268.150999706754,268.139788213563,268.145070669368,268.148694625987,268.149944977925,268.149216985278,268.150007977782,268.148428055091,268.148875509002,268.752460984451,268.156782349739,268.148785588525,268.156638303237,269.856102577852,267.185965258692,270.041972152594,268.150919207011,268.152802612053,268.154775576054,268.148863360443,268.157626132786,268.168011308222,268.148525551494,268.148877476309,268.19518087903,268.148944728533,268.154517177621,268.163314945604,268.153232418542,268.15677536267,268.156515895424,268.160679958012,268.157669313681,268.149220772853,268.153306069413,268.152445089315,268.135775596181,268.149122056327,268.139684367709,268.143904416808,268.145983127015,268.146230972775,268.147286607919,268.154556831747,268.155206453009,268.154561730303,268.151123781553,268.149853081354,268.151645492115,268.151288240245,268.146148589241,268.146388763553,268.175933614666,268.196808856619,268.212389703916,268.192740341875,268.201533747678,268.193297039591,268.178270457298,268.1968880365,268.145091007801,268.21793032519,268.142021006713,268.177295665381,268.199888799095,268.187199875349,268.17415480614,268.178771070561,268.172323242961,268.181577627876,268.17008674346,268.182448668912,268.167765663736,268.17044146079,268.170793156951,268.213218930074,268.186270977223,268.18343961276,268.145775106003,268.146876849674,268.174983444871,268.20432814408,268.189434978378,268.240372621264,268.197585661915,268.187633637002,268.261678408913,268.212735824728,268.271012800038,268.486601977951,268.166658525977,268.173912069463,268.210010520303,272.299988105869,268.277758885352,267.514319254411,268.48273955141,268.087982081559,269.954826871745,269.017346662253,268.050579297478,268.275695363609,268.422888378855,268.197984227617,268.215628223931,268.201139834226,268.138944858059,268.423545096995,268.164239775871,268.150770678381,268.205274057773,268.199149702486,268.181794128709,268.187325396938,268.197780320694,268.244277017855,268.197391936534,268.180060078339,268.184835006441,268.183045024778,268.179330149715,268.173275937845,268.180519510882,268.177380026328,268.1797683689,268.172548449908,268.177024236265,268.173758760392,268.169121816557,268.171502189445,268.147047972495,268.169213236853,268.170967658581,268.17189713874,268.125115526614,268.139359064451,268.140467617282,268.226602059683,268.140082641744,268.189052005269,268.145484336555,268.148438327678,268.145394693766,268.143977821936,268.145685019488,268.145693520221,268.145116779577,268.145536798057,268.145679485877,268.145724093859,268.147229619373,268.146446204315,268.14587564008,268.185670179794,268.17995970674,268.168631472667,268.190577567661,268.124252480269,268.174547802526,268.169921484714,268.167871853169,268.170802857266,268.146034356637,268.1656688465,268.174493101119,268.16698084423,268.178437709804,268.190253820854,268.156323375132,268.236316722674,268.219862739541,268.211158741056,268.176268230625,268.172660976315,268.177886689905,268.168851288973,268.175574983189,268.170121505546,268.167040609086,268.171216466437,268.16900069019,268.171904176404,268.146742421338,268.178266324578,268.175151550253,268.171917677569,268.157832269213,268.181139677748,268.146740460262,268.174703239533,268.174945643517,268.173824396449,268.144986077668,268.1743055177,268.178909014136,268.168081196455,268.146649247441,268.180479704986,268.180537930674,268.176285857659,268.195469032195,268.183991123982,268.185615010031,268.16364015559,268.165176402148,268.146966459855,268.165007951942,268.163428554148,268.153008806236,268.152149654777,268.153115285074,268.16878698812,268.147045269064,268.162985306215,268.164817510621,268.165695295219,268.163485629251,268.165501875425,268.1880636223,267.886824227861,268.145861292184,268.166913269833,268.163128660206,268.165586555728,268.16473242242,268.147696215083,268.163341102309,268.162372117817,268.167701605129,268.163524532495,268.147500714982,268.164747163805,268.160993367286,268.167021501304,268.166550890738,268.166881540511,268.170044624515,268.161074864662,268.147624792135,268.162036631424,268.161310854709,268.161514039772,268.147727264551,268.147828903312,268.160622550233,268.146719651954,268.166711938719,268.170462741847,268.170281241834,268.162817471656,268.146851753318,268.160157621138,268.165818328279,268.161753731936,268.16627155028,268.164959102933,268.146714855144,268.146843208409,268.16677604401,268.167570917992,268.166141053168,268.168001028926,268.1681743782,268.166731137616,268.145569032844,268.147740777322,268.167085675491,268.167532027205,268.165622024918,268.163850017687,268.165144382908,268.167841751535,268.167799116863,268.167795935869,268.166600440388,268.146839554985,268.165080815259,268.166271529752,268.16757461081,268.358985634808,268.170182299662,268.170799536456,268.176154225822,268.177391793171,268.199838664913,268.147281424293,268.163584110859,268.163462571195,268.162089015402,268.14837159759,268.148372799259,268.149114545184,268.148947817604,268.149020717546,268.149056916793,268.148820252249,268.148944455721,268.150203283846,268.148024850634,268.150573298922,268.149755234276,268.105269218683,268.15133167613,268.161220770749,268.151417578597,268.150460740503,268.145503050558,268.147705889259,268.147535384242,268.18062466753,268.152513009222,268.150205826946,268.167523965682,268.150376754379,268.149890194049,268.151224772764,268.150907948024,268.14963777836,268.185861665726,268.163674216359,268.183504052472,268.150329667111,268.149964020103,268.180837161603,268.149649778172,268.149985828971,268.149237945056,268.150146498636,268.149935808469,268.146248602242,268.144311462129,268.203619578457,268.151466770944,268.14908431988,268.150637908329,268.150676244083,268.149595425707,268.143476177117,268.15663645142,268.310645382154,268.156604215602,268.146475410837,268.152298554853,268.153241418715,268.154227836462,268.152955028283,268.154689891853,268.149995673827,268.150909444674,268.547879549725,268.164490745007,268.151593299631,268.171403404078,269.342871868627,267.640387958759,269.503485269624,268.157816402729,268.159399612065,268.161675227773,268.154451231527,268.166582997275,268.176944229527,268.151530084047,268.151468083037,268.204134646305,268.153914936083,268.164880365284,268.173168147643,268.160042164073,268.164573097286,268.165019298262,268.169254889669,268.165388143145,268.155324289772,268.160360765887,268.1604581673,268.144705681671,268.156785043403,268.143504626054,268.146102706785,268.150500488577,268.149123516944,268.151406536895,268.161634256876,268.162388801464,268.161747781577,268.157219532225,268.155510792235,268.158042803262,268.15792304008,268.150592275643,268.150523465483,268.169568798056,268.144794409335,268.142922929125,268.151038825609,268.144682961081,268.145037826156,268.146587726259,268.144693037618,268.150719791775,268.144653209077,268.151152238408,268.146781643419,268.144203675654,268.145476312983,268.147061031244,268.146592631228,268.147268427705,268.146212251634,268.147605909731,268.145993826769,268.147830616301,268.147505170841,268.147474170425,268.143115740016,268.180451705916,268.146012894094,268.150623985162,268.150401022093,268.146974970705,268.144242867755,268.14568963499,268.146324010813,268.142667860262,268.142667530228,268.142012309588,268.166547693703,268.221460008196,268.307670648845,268.147960871158,268.147075573462,268.18543511292,270.084901795696,268.170360207188,267.831094070669,268.312731846846,268.132728076041,268.883464571808,268.721436272033,268.072960336331,268.197381368725,268.267738393654,268.130655959232,268.15260499995,268.147940040169,268.152558452227,268.307117344311,268.175002238831,268.112904394168,268.15566181156,268.177039526445,268.148753256415,268.138450531983,268.147252248265,268.196351969548,268.14936360725,268.146698614398,268.145635598596,268.146562052807,268.144289990793,268.146993346892,268.146615933647,268.146936349752,268.144102283378,268.147239108187,268.14726776218,268.146972900698,268.147648595983,268.147390047552,268.150371650579,268.147654719055,268.147455850887,268.147230931275,268.133336967351,268.142240534879,268.139074390406,268.196697443174,268.141099273352,268.155180431816,268.147231132194,268.148168155616,268.147403346819,268.14576162551,268.146772427386,268.148503796186,268.146636198307,268.147230779072,268.14778908973,268.147938811621,268.151017475156,268.149641333667,268.14842844328,268.143710348867,268.146134140126,268.147716120866,268.145969546342,268.151887116125,268.147009385256,268.147545370147,268.147819346527,268.147478715366,268.150444305586,268.148068319048,268.146836818473,268.147884020141,268.153808999243,268.144240237234,268.153061105719,268.200574299532,268.185268390121,268.159497684996,268.146825972798,268.147211789757,268.146538861954,268.147680694954,268.146852612718,268.147530639882,268.147925453191,268.147388127843,268.147661105938,268.147355776183,268.150479581027,268.146593311547,268.14686886078,268.147303254078,268.149451408974,268.146323669993,268.150536937599,268.146985171316,268.147099409646,268.147360207798,268.150775965875,268.147032251305,268.146301243126,268.147777347799,268.150447084977,268.146079073328,268.145404150838,268.147067006319,268.146242217266,268.145795049918,268.144967751458,268.148317383283,268.148153959374,268.150433057711,268.148135813263,268.148362168182,268.159183078405,268.157981091539,268.159492511017,268.147748631933,268.150451408098,268.14846351363,268.148299687421,268.148126645198,268.148343629304,268.148104874646,268.145590205264,267.999624822943,268.148260611538,268.147928646454,268.148403455347,268.148089982663,268.148205309038,268.150294785341,268.148398647438,268.148488802979,268.147854697739,268.148351935869,268.150391479799,268.148201742488,268.148664083811,268.147970031178,268.147986511409,268.147958663682,268.147539880346,268.148622125524,268.150391326003,268.148589292013,268.148664300235,268.148621246586,268.15030951731,268.150280653509,268.148872341238,268.150490354618,268.148060237959,268.147482522824,268.147530074145,268.148411873808,268.150401619251,268.148996281282,268.148183109695,268.148842164645,268.147993595607,268.148207628008,268.150282850983,268.150323698737,268.148430967228,268.147836203904,268.148348697861,268.147781022362,268.147762781705,268.148739240919,268.150474259263,268.150374098222,268.147950134839,268.14789892789,268.148730536394,268.148650878587,268.148099381961,268.148339618466,268.147796167248,268.147814358663,268.147943499701,268.150365545056,268.148374997116,268.148569999612,268.147828872646,268.134964103204,268.147516893236,268.147443379429,268.147013860688,268.132839023442,268.144716122186,268.150324343805,268.148824094517,268.148545698486,268.14857164853,268.150237419425,268.150243071027,268.150256213067,268.150587184592,268.150496405023,268.150421481162,268.150835086666,268.150650192821,268.15,268.146773060702,268.150551383293,268.15,268.15,268.15,268.159934557303,268.15,268.15,268.145268395386,268.15,268.15,268.183379387527,268.152503625114,268.150058998978,268.15,268.150340784243,268.149802150682,268.15,268.15,268.15,268.137422518681,268.138281828043,268.13555196614,268.150301164229,268.149970154464,268.143856056195,268.149770457421,268.149921915033,268.148975256049,268.150106080063,268.149224056735,268.147645242965,268.15,268.138485522051,268.151635691804,268.149173770752,268.151246470849,268.150681309553,268.150182867117,268.145144652194,268.156335511968,268.120456688377,268.156574468612,268.144837809765,268.157778407563,268.15349193474,268.154143682776,268.152965152604,268.154663370405,268.149915965167,268.150895642609,268.091197219862,268.163959051133,268.151606201078,268.167453961445,268.01928551316,268.15,268.010320397507,268.159029628885,268.159417373073,268.160625131219,268.154936827629,268.16761028785,268.173271097488,268.15158593638,268.151466365455,268.190876783556,268.151762892132,268.161644362189,268.17087181389,268.15787556397,268.162423264003,268.162337537776,268.16670821564,268.163764919157,268.152510222613,268.157975390506,268.157258247148,268.149468424461,268.152303016716,268.150133936435,268.144401250301,268.148209245452,268.147554757501,268.149388473326,268.159818161817,268.160761769619,268.159693318094,268.154917741766,268.153155099671,268.155675898626,268.155302198334,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.134516566358,268.15,268.15,268.15,268.13772188624,268.15,268.15,268.15,268.15,268.15,268.112962614193,268.049499833633,268.15,268.15,268.15,268.15,268.15,268.15,268.166114089437,268.099805240174,268.154138350257,268.15,268.15,268.15,268.15,268.15,268.15,268.123032223485,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.141108162123,268.146667050386,268.137461963794,268.126358748902,268.140385001584,268.15,268.146469038428,268.146125993526,268.146050992327,268.14441284742,268.145376141604,268.14686473099,268.147138104666,268.14618993599,268.146635085357,268.146656613685,268.149161598492,268.147946859011,268.146956550068,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.116853025423,268.126771544668,268.129038009325,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.158465201525,268.15758033624,268.159022666903,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.146911036047,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.15,268.150229859594,268.150565242983,268.15047279569,268.150396577912,268.150820392638,268.150629970895]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive803.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive803.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive803.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive803_field1":[0,701.046835398835,926.198169189548,0,348.10609339004,0,1142.33636262289,0,0,986.184666282482,128.312690489083,138.489636305311,989.359193905976,1068.3757534734,696.599411954077,411.76190579816,956.636804609256,868.908505211608,0,361.448266011209,473.999454711837,691.491906751067,579.543765277888,721.712275025735,845.74860050489,842.765287603622,814.112428740669,814.164760460845,921.111065331816,955.615364482002,785.087250053321,902.243039744048,919.05569475081,839.964274781582,945.007112570812,1022.12560712634,1000.70801021741,1033.69848324153,998.222869022056,1021.28898293437,1037.06664878919,1112.67108092288,1250.1718661677,1045.11859509271,1089.2657865525,1037.50285429166,1030.77121907886,1092.0447914106,1048.1133371299,1054.44517725837,967.575995130998,1014.12463798478,1146.65320287747,1020.48776098519,1027.80573230262,1033.06737674091,986.323450553531,436.103427348594,866.988644387045,1017.3596154823,1032.72377449859,1070.64887620935,1025.46553771691,1005.02103108865,992.609663770236,1021.4356923109,1043.01304201124,952.749679183782,1043.50614669372,935.840696716668,967.65549620987,1126.67316133559,1045.31280657388,998.986841035273,1009.97441384825,1039.75416721603,948.221208351158,1045.50449302825,963.414445091796,814.576166433588,899.009082284643,337.500499293155,816.584865957486,880.799528024441,897.298411782299,927.911515190074,1142.90930148322,1091.11259770889,1086.76214856778,1094.75128324316,1008.05817127091,1053.88757683252,1004.06874945931,0,0,601.071616844806,324.16531620232,486.921664549033,416.061863417294,299.35195290146,258.049084087077,203.484995248028,312.146532313171,0,457.157630358695,0,172.811751821762,344.082913896822,252.91398144634,166.678674528044,195.953263327469,152.528563554131,215.302878703971,131.553057668595,223.443938055769,122.427786197677,141.850286503005,143.3573234082,418.207687647954,418.307436302157,211.926487281532,0,0,171.821291637026,406.152315826222,264.036786576802,554.618174034405,331.659284573888,277.974474919634,752.369213392672,975.969768189915,1063.7336816247,1902.43280216778,115.933124477949,164.600033198198,896.502421334512,743.476139377424,454.958928678101,436.288769444353,438.843664897673,559.881446309004,725.001441887881,799.152396953048,609.933209483673,484.995238690736,519.342159143477,478.937085614419,351.664648908332,305.174037445089,894.324807847622,681.007333716636,862.322149305988,357.11588946582,267.300614806302,530.616500155053,362.337818682714,429.917635060097,278.325516914743,547.855226048761,279.612290998521,202.610442629032,238.52548403496,221.437891747704,218.750649741599,161.094912008087,206.012470127492,185.256435764441,224.684277247066,154.83282176671,180.48274445449,164.392261846943,132.082707509755,147.3361659244,0,131.942100567364,143.696010394584,151.311293520841,695.558088420897,520.415083546782,765.939995103151,587.080658443012,689.829095872625,110.718170697639,561.108801618783,541.619155499724,744.910606397216,754.053845587556,656.055746768883,842.057740056104,466.087583805907,650.321213899675,636.463905623724,736.624889005093,977.506414920192,893.069192418374,810.735950643639,259.571241581853,206.821481786075,128.126340171522,224.060034006269,0,168.110928649391,136.906706677613,123.606530558505,142.898328518876,0,107.149178929941,169.428155761206,115.520513204157,266.115437616619,269.227467978433,260.182703453111,363.356150176006,277.680229310152,159.692324356651,179.840094738455,155.761030109166,191.667501422361,129.496390263762,175.682279980566,138.395737869513,117.592893537218,146.157708985166,130.811416155807,150.25363245403,0,192.979674924184,172.909456861172,150.859029385527,0,190.553242651564,0,154.874107407475,161.938867317765,175.938754630706,0,166.981551233834,199.379862239883,124.334573402604,0,214.682754180971,218.557545364472,180.500199910907,288.799724312021,232.896759696,248.113203721918,92.8286479202705,105.011363540958,0,101.349360145366,91.8528972749171,1131.76341275702,1082.72492414846,1059.53029082035,119.05474271446,0,84.5934253407487,94.194229900786,101.535239575706,84.8622510070653,105.151503633177,258.918218277919,814.147477919504,803.52259551697,116.378257201528,90.6689315334706,107.385212338865,101.763437656499,0,91.6411618697402,84.8011668026288,122.125457062204,93.8098931481128,0,102.537375775651,75.4770043267464,107.37058584267,115.250785600099,113.393067562637,137.91637145874,75.5241758540262,0,81.2251778702961,74.3616130277248,72.1874276847156,0,0,71.1865127097626,0,116.49586022182,140.107302960941,140.072878761091,86.0727040196148,0,69.6247034704489,106.301199980598,82.8930683261099,109.583110030474,105.6932197799,0,0,114.802412707095,118.07366625454,107.260774729068,124.428531242561,122.286411625244,115.45944792945,0,0,116.876700614755,117.226030847403,107.046605497292,96.8398926133536,98.9221891442731,123.837978936982,121.636207009181,122.394336454512,113.845737044037,0,105.294658825776,114.034723051653,115.155341344327,44.9644751415607,138.992001780564,142.891796279446,177.138024533381,347.378415146175,344.90353482129,0,96.4990527028118,92.1004866901894,83.2725078814633,0,0,898.291681913324,952.999614734208,891.288450506943,905.522351593484,991.318321580013,977.418869930962,0,600.320594662241,866.761363252011,0,348.409926213535,0,957.263656173065,0,0,848.99370698377,128.376137736309,138.558125148412,894.813733008967,974.658341216621,584.926911947035,411.871024752541,864.529424540918,710.895032576158,0,361.515718977895,474.337789122656,551.65734892821,367.762144156556,552.374890761657,772.488168197116,723.028194392255,652.230675678342,664.650367092252,800.86192316379,820.502808705388,697.808272006877,742.674727559836,768.098903409792,840.724870339524,808.917384386805,931.887476897756,892.317396222711,971.715790942251,905.956449881506,933.34488692129,934.517309945599,976.773170330804,1236.60362937441,942.553763578285,1033.37451033704,1011.9858479148,941.087598627712,978.796382407499,954.318705338462,953.055849785071,858.222991175595,941.287494480223,1149.78104122141,912.922299034741,943.734736011399,1005.89705136782,882.229810233741,436.539589024781,701.836959724267,947.981971952904,933.218937299649,927.072570208524,946.537478061614,929.655718448185,856.45146600581,932.465506117473,962.899402724297,807.016671908175,850.208366706231,740.171611496165,795.918149992433,918.807372771184,875.491584036546,816.693580588546,848.25377215464,895.173880228151,753.370509238364,858.51257299488,767.682629938371,598.466878197538,691.438106825861,228.841228111097,621.423620471458,679.447188449097,742.094526275127,751.592284495788,940.999928317457,920.239304738651,901.363891351581,888.185059627332,820.797035615875,860.666600310554,813.359778127825,0,0,601.451351373058,324.3421376866,487.1931521915,416.118007120416,299.491494183182,258.170432645714,203.555345240929,312.367458581363,0,457.330749753471,0,172.88882897398,344.29570406431,253.034690134169,166.756025994747,196.044021461978,152.579008468318,215.414787107692,131.598784217328,223.554207328237,122.46265631383,141.902460900261,143.421555295014,418.547136477187,418.5860900886,212.025898917668,0,0,171.91031460357,406.331312249355,264.202431150299,554.93354034046,331.894737415607,278.171846761193,752.834431580485,977.36994125937,957.659205607385,1906.03712246144,115.981886577879,164.678633813513,777.796692806279,621.13324503925,455.210267627169,436.375589642596,438.900915311489,560.370052775683,611.323918555792,625.378375452381,610.286189939099,485.127312969809,519.575149890083,479.374782086393,351.904058835875,305.377270424035,708.292857739904,523.132576460382,655.025045145064,357.412225619792,267.481418562095,530.892489708526,362.523944050725,430.149924618473,278.468593604139,367.528615199878,279.801609093751,202.737335575067,238.686426349681,221.577843947525,218.896697235322,161.19405480899,206.138870096581,185.372244805601,224.83539797453,154.924865598438,180.594269845321,164.496555441834,132.168065488722,147.422753355392,0,132.013599379507,143.778641519207,151.400595815144,480.846848235478,319.613153138269,547.305086751651,358.973249666386,486.979750367558,110.993007240353,456.53564632047,376.072490793195,592.369034538938,575.838404350514,495.321582059955,674.437569807721,354.745634731347,516.319388788855,537.278787453493,607.748718585334,800.917140500887,731.472380769184,663.392451265054,259.750459366975,206.946520721224,128.192171732395,224.12073538841,0,168.207024647096,136.984381298919,123.685849746574,142.980593793641,0,107.195954271068,169.526455946855,115.569466799995,266.164938618829,269.354169099685,260.271417495972,210.225340378667,160.706826946208,94.6683952760315,179.940053064542,155.843984065101,191.780582820022,129.562941264915,175.787651195552,138.465362537575,117.650804264039,146.240756432067,130.885428744797,150.333436437763,0,193.088313091477,173.007061960225,150.931750785433,0,190.629313804323,0,154.93171976736,162.005799043271,175.988961111287,0,167.053544101559,199.505860792621,124.387501939315,0,214.797492693242,218.683398990482,180.572761083285,288.987569840416,233.03896230298,248.284717469276,92.8528193636328,105.057932305554,0,101.371083042053,91.877471564863,969.661238423699,954.304089039723,936.867405044772,119.102908225472,0,84.627997136797,94.2671400944724,101.587102839347,84.8694671437489,105.185460833399,259.067546754829,815.389169588966,674.708771147741,116.437626396337,90.7115435942731,107.430834887698,101.808467786124,0,91.6898066934668,84.8253096958011,122.181344344631,93.845432547399,0,102.579770032324,75.4942586725836,107.410600692536,115.283104374025,113.405817160929,137.983625859334,75.539781518574,0,81.2664853491228,74.3850682674255,72.2029142245276,0,0,71.2422467429159,0,116.549482982943,140.168756084854,140.137796119515,86.093545286975,0,69.6546458114208,106.341942758619,82.9608982624675,109.604280139493,105.784727975318,0,0,114.913430920011,118.099695194499,107.332256741434,124.506625730093,122.328982042189,115.628786027442,0,0,116.964866653168,117.296140822217,107.175832328735,96.9660350549543,98.9381448210404,124.041071779764,121.695564158049,122.461049253735,113.894761058659,0,105.368624191019,114.201024385742,115.168099723361,44.9956129531836,139.075284176028,142.972243313015,177.224499510955,347.655500305692,345.14082463767,0,96.5947785456004,92.1516383441478,83.3221655392067,0,0,806.054325552861,878.606887725629,826.768492954047,828.266984131285,912.805394110923,909.103277867007,0,325.84394994241,671.008950237061,0,348.781135218317,0,728.09484704362,0,0,723.74417446027,128.451784111898,138.640758256332,818.210842787417,760.424581211706,388.993131369739,411.967475261687,612.904461442929,518.8610007827,0,361.606512575566,474.722449721908,450.748620493768,271.32837918442,384.931845071287,560.8055861668,483.262220013341,579.584065309407,454.853081998753,556.968302514185,627.019596128401,482.816616826328,591.784595413826,670.882654987685,841.659473502948,762.510943753883,755.948793808509,717.431210796059,899.527365414204,681.742565654481,804.148758722707,844.448742794549,789.81472444021,1241.88954830163,798.609409556215,993.041699368217,978.448434611821,797.6374137484,783.671420722213,758.896457889316,782.809216735564,628.426176456262,698.938143408528,1139.50634476908,788.400081424555,720.85165685984,973.493479766002,830.203297805511,436.967757178357,608.817388736923,866.308528346865,809.400734083845,740.459682473876,840.577454109417,851.380105105045,714.811143696176,726.456468563541,729.649554907451,690.509820324689,469.302390142819,537.072880372025,623.25060460879,601.980007118644,641.981848142707,579.27826234271,653.327875104827,712.930829798834,433.770322519218,556.979731151538,497.104935641438,386.943595033493,425.862931416611,84.0134672374532,295.750182676258,364.785433185993,367.832936992031,378.997096630891,669.81697231689,686.689242034398,625.580532167468,533.931930609842,466.17088399548,525.332069919272,493.780003856193,0,0,601.851178431192,324.560775275945,487.544388422017,416.199135147071,299.662764972917,258.322452102325,203.642942113709,312.639661443575,0,457.555455053556,0,172.985832366333,344.558057963431,253.185978905688,166.851137537156,196.156229739644,152.641155733575,215.552396705566,131.652893838503,223.690678958626,122.504457174793,141.967287394678,143.499735250853,418.966945868506,418.839526354506,212.149898451928,0,0,172.018373028447,406.561149451643,264.406604042138,555.359138128837,332.185571578929,278.41383163574,753.543698812743,978.898216925981,937.425212926843,1909.5832181165,116.040953421302,164.774459179414,738.928468001728,581.14937454347,455.485789656131,436.454864172689,438.982952705008,560.741882270044,576.764542291884,527.705159817401,610.742764141631,485.336567062756,519.900479155986,479.893772754188,352.205616650144,305.627055244334,568.034130727128,448.143640640238,471.921968591462,357.783801184189,267.704262829877,531.239390608408,362.759462712937,430.437698654485,278.646541535816,322.014430044047,280.034771180482,202.890967371545,238.883520491873,221.748994484632,219.074417284349,161.312247799966,206.292902584595,185.511717115829,225.019936560656,155.034283336249,180.728580448833,164.621079044576,132.268020588381,147.5250019322,0,132.09693409588,143.875627818844,151.507364372279,332.878063893192,155.620473807739,295.011147907921,228.807680354334,207.479723313832,111.377926035395,201.551366528869,131.360162659373,248.330398896813,242.918492160134,187.020091400672,308.371773080062,133.064124156978,209.657400140497,265.788457861663,277.709785629802,411.942510342239,352.852415472824,302.427923193886,259.970122250222,207.099303014969,128.27113082948,224.195598703756,0,168.322517107531,137.075641185246,123.783607577259,143.078982470585,0,107.240152687037,169.644869130947,115.619065960143,266.223412330605,269.511904783323,260.388174656791,87.1429991804201,111.801855015137,46.6436232279984,180.061302074915,155.944066110113,191.917841544364,129.64148425761,175.914220573492,138.548354434914,117.719483561955,146.339530623826,130.971390423835,150.429818884955,0,193.221207997621,173.125757487728,151.020247168629,0,190.723885048864,0,155.001784871787,162.086947540095,176.050163727414,0,167.142343607979,199.658678361318,124.450857287852,0,214.939733976718,218.838649256036,180.661635204489,289.219470607182,233.214494666827,248.495239918248,92.8805572610124,105.113627917096,0,101.39550231758,91.9069115429864,770.726691425649,780.964042870123,777.386309595979,119.159718636041,0,84.6684597843105,94.3489882378905,101.651344482668,84.8777763561452,105.227198814415,259.252837252869,816.675410252097,337.786539423214,116.509874393403,90.76225165225,107.485213879843,101.862431053189,0,91.7353767230064,84.8551625604134,122.249505461653,93.888604082602,0,102.631942900214,75.5136806916942,107.45691059743,115.320649329777,113.420266235457,138.065139741062,75.5595443514524,0,81.315063797255,74.4105113031578,72.2177758386846,0,0,71.2928896271605,0,116.614447312456,140.245698545832,140.217914593016,86.1196475506736,0,69.6815605492455,106.386984625792,83.0218711630445,109.619450819757,105.878285964007,0,0,114.976096604,118.119748434467,107.371875833925,124.59909217106,122.376743789772,115.730448518255,0,0,117.036239571898,117.350736549047,107.256334561317,97.0707671001237,98.9623949618185,124.210947537578,121.762315003131,122.536947943308,113.951311334085,0,105.434251974803,114.309716764787,115.181351114882,45.0727410152906,139.172469913003,143.067349861819,177.330651083352,347.999543590717,345.442097062122,0,96.6678497676754,92.1959673727273,83.3781288816176,0,0,555.832621902076,636.610703711036,623.426212689813,593.925508660286,667.411422697023,678.028987979282],"Archive803_field2":[0,69.8263677655562,80.0700632628433,0,25.2144601466402,0,100.595981452331,0,0,82.4130573540518,9.92486116494817,9.72627204681185,85.582314969081,94.4440002547101,58.4881896365818,63.0046673480191,82.7421942860765,76.4088519153081,0,13.2655899684681,-14.6755297149223,65.5393471460321,36.0068011495887,64.3187098047604,72.3404532049983,73.0856799990861,77.2571837693738,71.7962324324183,79.6590019791682,81.5752954730151,66.6524731073819,77.2419450392824,73.8739805933172,19.0973645145653,75.3037788132625,89.3559291477031,85.9823892662834,88.6773190711521,86.7030717044996,88.3320374540835,87.1517335359363,98.8773931817574,96.1566903833992,92.4567747905921,89.8940817053206,87.6632270980407,90.5451694726099,96.9548767445085,92.4411442516499,93.288640463992,83.35496883135,88.5952190190525,86.3213781555964,90.2900062873114,90.1096677597788,85.7493738905661,82.6411089685628,64.3251082106345,82.2175949521674,89.0189302560207,91.2980438113903,94.8906043154384,89.8520854711678,87.8006899028128,88.3167694545837,89.3708694048135,91.6313520050122,85.5088964394851,94.0842381798344,86.5207776264988,87.3453432073379,98.6418147871178,92.8825028831242,89.8745112181507,90.1183904123877,92.2685999860484,88.3743522347361,93.3303808226496,88.5043437777984,84.1836971320286,86.1602009716077,32.0661961086177,81.5113487427327,85.364724352551,86.0426225537215,87.576634757973,100.087585221758,96.4006585297828,96.010859722351,96.66347742983,91.7377088091255,94.1412265150149,91.1616046441034,0,0,97.2474182605171,20.0378494883729,14.8980063513742,15.6891916174808,18.4900326712066,5.72757315646783,14.7235560633935,19.4306055984968,0,54.1672582977176,0,6.30243383073332,25.7477621758979,18.0638120975495,11.7114742917296,13.1871414891749,10.6904961974916,14.910074405113,6.34166466644466,15.1928648235341,8.3969983873435,9.70672626660233,9.87016745132077,31.6234825118093,23.4490377212626,14.6373979087482,0,0,12.2852956131957,28.6930564141699,18.5448044469141,6.71073097576352,24.3047947297607,20.3101399722918,65.4376928591273,105.608498820492,91.2526757741747,123.642087626045,8.08809629608879,11.4993893700155,60.960474344577,72.3377619177925,18.9854172528295,28.4944869879795,38.2055811116942,87.9297812087577,80.4720541796645,83.4181134893692,91.405523199107,38.0349671542962,72.4732296616531,40.7874480641806,24.6365853951054,23.0288886929669,84.4169256449578,89.0186108209838,84.4608310274446,26.3435682035172,19.9732291248821,115.837543176291,38.5835692518486,4.03005478855961,26.1768333854356,63.9167905333963,20.69871185844,15.1311040269747,17.3943793629343,16.1219381029067,16.3674127676561,11.9217656727124,15.4090340323638,13.6262309730012,16.7938075195792,11.4557719904906,13.4884858765083,12.0835432946855,9.71724815469114,10.8512321178176,0,9.90688145257791,10.7482148450246,11.3833081310294,80.0266528564062,50.0400714570734,80.6562171404695,62.9059377062555,70.821020869193,-28.0068251081769,56.3420852264842,53.4442210638212,74.310594441743,75.7739994139204,66.0437882847679,82.1666640155224,46.2284635728987,65.3489901194861,63.9265459228121,73.3171644532295,90.7092024997372,85.5189568368627,79.5823107213424,18.7431433404119,14.6097683099162,9.88760716219863,18.306828663532,0,12.2354712446343,10.3458896568241,9.15709051902915,10.7881034757135,0,7.64824827974923,12.8259050347178,7.99848781870581,23.5172957429128,24.9513510147335,27.7401246205098,31.5315556008916,12.4493888323846,20.053561448965,12.8845195776466,11.1793057354898,13.6810230751706,9.33168226584352,12.6819084018643,9.89273572352113,8.44494350989052,10.4769089623344,9.53939487118138,11.5517418037788,0,14.9779995505463,12.9796169644564,11.8046754534278,0,22.0852045270811,0,13.597047652014,14.9957207278852,14.6799772416428,0,13.3423982471688,14.4476750612278,8.88332217977786,0,16.948156975973,16.7921553591912,14.9793914589544,22.0130670597483,18.0041511232298,19.0186965473377,6.30438146909457,7.33132127213093,0,7.2789445539892,6.88378612300356,100.187095655202,96.0360323834684,93.9293034280983,5.57993254494104,0,4.92830905696589,7.2670624421278,3.89365528181964,3.70370153902396,7.90715095057591,18.7356105117872,56.6108183053548,79.1304079593785,8.65266440839993,6.68909028449902,8.39421090538435,7.32559248491074,0,7.67295011012984,6.56409851459164,9.50611538418642,7.44995641022985,0,7.21721358219911,6.12485206435108,9.09232827913545,10.3283172286819,9.79258885736758,10.4016165313639,5.84379846193696,0,8.52641171954925,6.09144390788614,5.57910792710342,0,0,7.69506633844312,0,12.4104285302098,9.75535867908773,10.8737442855323,5.95355239253318,0,7.38567696343977,8.27056236280893,9.79381778024961,9.17390590499592,9.60473752564114,0,0,9.5732185213427,8.60889975143288,9.35253942099311,9.13291910873228,8.4147782026843,9.86172814455107,0,0,8.43263849096178,10.345870393278,8.45950619661472,10.6068223498407,7.04189234001868,8.70252839107922,8.94629548875257,9.12226227369615,8.77191060139482,0,6.26871804684382,7.28000408590395,8.72973398528883,15.95370173165,10.2609339375821,10.3676159371492,13.6006834606331,30.9980675190224,26.2124862035689,0,6.20992865826481,6.2330945948044,6.03712255261366,0,0,77.5315344802977,82.6238118735095,76.6999772284296,78.1229210177558,86.3033934438575,85.027149439545,0,60.358447194006,74.2310641466336,0,25.2362420124523,0,85.8607981209929,0,0,69.4906669900267,9.92963228369937,9.73124733821438,77.5648581612319,84.8259195610891,44.5565094207521,63.0139296682468,74.0927414882885,60.6736751427513,0,13.2687817966063,-14.6669044238075,40.068553789336,21.872047893777,40.5354794755473,64.9646201731499,60.593826125942,68.2033514901958,54.7698839418715,68.4860027846497,70.0526345301757,57.4526904236369,65.5430517247068,63.2158902764323,19.1270942752684,61.2916193904274,79.6324377056652,75.1460378482199,80.2046534847143,77.5809957023274,78.2307258146632,75.7879482135169,85.9232993611474,93.09312678884,81.8768857915441,82.4887544109121,81.9617266720155,80.5797708081761,85.5582071488749,82.6874289953978,82.8107294162192,73.3050473616644,81.5258038403093,83.8500258658049,80.2261816612145,81.5125912361385,80.5020122444202,74.84934076674,64.3460577425263,74.1915760411151,80.4043088091518,81.0979628296745,82.7507120588648,80.4448588437804,79.5672917109824,78.2848748259258,80.1562964767167,83.5712726410125,76.4167391570918,82.2233751409957,75.7853810689823,77.0346291458406,85.0654761869964,80.8812460886462,78.2985717085828,78.9842920818487,80.8305559433988,75.5184861329167,81.0917259747333,76.4364124948417,67.6231925562789,72.7188843745008,22.463873871272,64.3447649412828,70.3461482922538,74.0644164647866,75.0045869584902,85.5846819619078,83.4181238929565,83.1182094290539,84.0621477566875,79.7193838759719,81.8691571512854,78.949696574853,0,0,97.2905504001574,20.0494241817504,14.9102242432057,15.6916083840356,18.4989741269552,5.73139287903471,14.729272382812,19.4459018474424,0,54.1896820366093,0,6.30566740463172,25.7645848267885,18.0730069230787,11.7172252588822,13.1936531106944,10.6942722589601,14.9181661199831,6.34406539436435,15.200694715037,8.39959831885644,9.71048672337199,9.87478441461475,31.6497778189884,23.4679632088987,14.6449554782481,0,0,12.2918606771867,28.7062153586146,18.5568025302682,6.71073203453606,24.3223663717919,20.3246695937929,65.4875340401892,105.735347840702,80.6709366454191,123.895946284622,8.09164829836219,11.505117052862,51.8690068952411,64.5311562414877,18.9970396801032,28.5019263282667,38.2135099144619,88.0043358215074,76.3188942127131,76.8799697342714,91.4496257053086,38.0413990091104,72.5194418423724,40.8227245839127,24.6538128945555,23.0441498903301,75.5635241130023,77.8233777987565,73.5521707611098,26.3646139536144,19.9867926437377,115.864659354748,38.6026613988612,4.03439849304711,26.1898456108329,32.0151937405189,20.7127561774408,15.1406211490735,17.4062162025642,16.1322900760431,16.3782992535111,11.9290599196855,15.4183184961514,13.634725127622,16.8049430870417,11.4626321270289,13.496738727028,12.0912313796059,9.72353825738687,10.8576124498343,0,9.91217553883707,10.75434218781,11.3899368197407,54.8012311453882,26.9054134630563,58.6060437204079,30.3839738544398,48.9171917241714,-28.0143675869099,45.6480840315838,36.1866876394296,59.8649033119243,58.6087213310329,49.5080201736151,68.1847819183968,34.7069990453304,51.8402756836081,54.1369737991787,61.2315541909286,78.8628654525744,73.1068960437013,66.7980934028121,18.7563268598459,14.6188512812274,9.89256102454879,18.3106315469134,0,12.2425966078454,10.3516711265796,9.16294965556119,10.7941845521737,0,7.65151861443777,12.8331961573547,8.00173666315394,23.5234074813181,24.9619344912854,27.7502265415732,19.4535812262259,5.40257947258218,13.925985071433,12.8918703058806,11.1854151383827,13.6892424233768,9.33658041470553,12.6896009396773,9.89784866151238,8.44920466094658,10.4829654953382,9.54486969769783,11.5577075202624,0,14.9861821759883,12.9867424908522,11.810130473671,0,22.093098113315,0,13.6018437933542,15.0011134647166,14.6840727659236,0,13.3477771960526,14.456914405245,8.88724320897067,0,16.9568510270416,16.8014004702323,14.9850672573685,22.0271889959796,18.0147638693843,19.0315633540692,6.3060583066336,7.33469363934936,0,7.28061627524101,6.88581216145684,85.9919470954504,83.9664303593231,82.4844388881567,5.58237743922853,0,4.93040664211883,7.27314114411296,3.89591844356627,3.70347368960241,7.90987116186369,18.7467545655711,56.6561421467662,67.7189334828228,8.65693216140059,6.69217478340237,8.39761445466624,7.32881612419654,0,7.67692661505603,6.56584757694098,9.51028601280965,7.45262948113806,0,7.22007950566457,6.12625931654659,9.09550948265506,10.3311237055182,9.79368619972228,10.4065096083549,5.84480845624454,0,8.53043218404178,6.09318722260088,5.58016595151644,0,0,7.70045859826029,0,12.4156960469736,9.75939896543146,10.8785708109711,5.95458623955324,0,7.38879100889355,8.27326707401224,9.80134042020667,9.17568346906359,9.61279374278612,0,0,9.58249247719289,8.61061626829706,9.35867842907519,9.13866204767792,8.41764061980017,9.87580991210645,0,0,8.43900574920228,10.3522072521185,8.4697674654907,10.6197206850207,7.04247640705948,8.71711854363414,8.95059963109975,9.12729342991811,8.77580927446947,0,6.27328920917496,7.291241820796,8.73087769933178,15.9586377828345,10.2670890417033,10.3735227863717,13.6070169019165,31.0205993058774,26.2296437839695,0,6.21640001664695,6.23676191968856,6.0408227146951,0,0,68.614529055603,75.4376072878004,70.2772935696727,70.5760392596039,78.6424501014537,78.4511411580246,0,32.717026421135,53.9932781728564,0,25.2639854983795,0,66.4610571346018,0,0,56.6112691503352,9.93524341249642,9.73734555739988,71.2360805996119,62.634112442221,21.9492673203875,63.0286548566197,48.1020380417561,39.9545411988023,0,13.2718279354927,-14.6480167878612,29.7924148295719,8.72045047591184,20.6019848977559,42.187775287895,33.4940864475526,62.5045292542854,30.2087603214498,42.5916120434371,50.8444701178546,33.2194954649714,51.0564866986595,53.3589538152808,19.1675822131187,56.2138951830101,60.9742301518162,57.133769772884,71.2186423541922,54.6500368477017,63.9623174000418,65.7291895696748,67.0697930281919,92.2219496709459,66.6596868137246,76.9662183248117,77.1360206888314,64.8806645531613,65.2714895139948,62.233025771762,64.8223723502444,49.9313631009565,56.7735340437118,82.3370612330417,68.5643155136637,58.5577396016139,76.6517846098201,70.8883054068328,64.3854358549585,68.0186432572359,70.9848164085866,68.2901052400431,66.2322944623859,68.2931522756074,71.6898720058076,67.3436518316576,58.7620219527748,59.6616474776684,68.1946742180379,49.3191755251436,61.3765430204565,64.9646176864576,60.2924196511612,62.8998753771413,60.7153827419688,64.3619732192135,65.8241524057325,48.0951625769502,57.4894727142921,55.2768232000317,47.7955236016071,50.1153690709465,9.00514640088317,31.1447995602091,40.7011671159183,37.7736419595171,40.4183235643444,64.1096045626535,64.4640544415657,61.5395423097792,55.3727881380008,49.6531206180134,54.8112906401216,52.9638388432413,0,0,97.3502623193262,20.0646592115575,14.9254071926126,15.6931955548775,18.5102397520346,5.73751084452476,14.7361803688139,19.4648392447294,0,54.2181402315902,0,6.31034546971482,25.7859328831617,18.0846957718713,11.7244629159659,13.202064010604,10.6988821786007,14.9282580356147,6.34716199485535,15.2105534881361,8.40269745062221,9.71524474841909,9.88054493837535,31.681154005616,23.478389618066,14.6547961752649,0,0,12.2999308856759,28.7247220365208,18.5716956694864,6.71828235920011,24.3442544965245,20.3425850786753,65.554312765369,105.863999433001,78.6958552849032,124.195129723765,8.09612427924492,11.5122294926975,46.3701900321371,61.4029068551138,19.0122289622515,28.5053510860273,38.2212979070666,88.0570116010636,73.6054883114975,70.3367823888786,91.4896959672461,38.0533480895435,72.5722684225293,40.8659544525833,24.6753983525394,23.0629800818126,66.3863263671423,71.4146664739544,59.510677920598,26.3906282686576,20.0033937886492,115.9361193426,38.6257610295144,4.03579421479713,26.2066099324332,26.0500333380114,20.7299136532815,15.1521507453847,17.4207653736789,16.145009030671,16.3915636993975,11.9377331399554,15.4295471705163,13.6449346110765,16.8184687747377,11.4708092802861,13.5066353481079,12.1004243288714,9.7308783121515,10.8651538351414,0,9.91827851122917,10.7615158406918,11.3978103359939,38.0730580640265,8.87804621839308,31.2689765304028,14.2309968669492,18.3934971720803,-28.0250096945953,19.5907530158826,11.5013866771222,24.6909740566208,23.956637164833,17.621137649856,31.9105758420896,12.6007085968684,20.3720054315785,26.439857603216,27.8410817009326,42.9980280429284,36.6479342471984,30.8055452771863,18.7726369699522,14.6300584207244,9.89841430803765,18.3150871323432,0,12.2512259680675,10.3584207689796,9.17011575428877,10.8013905386589,0,7.65457618422529,12.8419066299335,8.00503112731393,23.5310028069536,24.9746535308855,27.7637076498701,7.62700649136598,-1.10368496306721,10.0336015767271,12.9008869476957,11.1928710426517,13.6992917657079,9.34243811477691,12.6988902912733,9.90402472434868,8.4543438305147,10.4902284509595,9.55125840373242,11.5648147085768,0,14.9960791864077,12.9953127599071,11.8166492420207,0,22.1020459851597,0,13.6074844746323,15.0070802781097,14.689191432578,0,13.3542207465702,14.4681778345486,8.89200567668981,0,16.9673614771764,16.8124984945748,14.9918608013553,22.0443884718718,18.0277592606055,19.0472902909253,6.30811386584343,7.33879895672119,0,7.28258673299007,6.8882707262714,67.4617340404785,66.7862329496613,66.9877833127662,5.58552927788208,0,4.93310625016021,7.28030550315705,3.89905409457323,3.70302586256294,7.91316473511294,18.7607875218282,56.7168611894175,34.161177105943,8.6620346411582,6.69575750059405,8.4015824107568,7.3325991946147,0,7.68067841485546,6.56805945930119,9.5152594780621,7.45574863731175,0,7.22355341571948,6.1278085733364,9.09902848765475,10.3343144620395,9.79496981962549,10.4123544994274,5.84606178119845,0,8.53483762125746,6.09493307899472,5.58112173671608,0,0,7.70511405741687,0,12.4216136480551,9.76443806991045,10.8843749834752,5.95582514445885,0,7.39173055018494,8.27591999220163,9.80821269232555,9.17690833950048,9.62081820591414,0,0,9.58792398599966,8.61188547515044,9.36216021172417,9.14542132473722,8.42087204991271,9.88425983817037,0,0,8.4441771511553,10.357196654807,8.47629823288508,10.630572197457,7.04343255118899,8.729319653822,8.95556198464652,9.13304630324198,8.78035318861864,0,6.27736850961319,7.29848608199558,8.73217542221319,15.9637099660043,10.2742792964131,10.3805501151532,13.614702865547,31.048133008334,26.2507978335421,0,6.22129588067157,6.23996130023008,6.04498882910852,0,0,41.8181547481225,50.4342419058066,49.0220141897768,45.8796293933004,53.5198326291594,54.732459598788],"Archive803_field3":[0,0,0,0,349.018343523222,0,0,0,0,0.298429259900827,128.696066317446,138.830854331206,0.260930114035048,0,0,416.554407262038,0.262319230456842,0.413516750601659,0,361.691865890342,474.226931562489,3636.96559854177,0,5703.53539194481,0,0.417702710463023,5930.3236662897,0.329814785005633,0.258321202063855,0.290375098825206,0,0.268655196366597,0.421189711839022,840.181935586024,7219.14122615657,0.282119275127552,0.302223025098096,0.297096760873736,0.283213761771377,0.301247404812357,0.312474707755297,0,13744.9631345407,0.271146654136756,0.249794521532433,0.345948455102346,0.291092216520953,0,0.390486403892207,0.37947651383579,0.319463783079865,0,8778.72752550647,0.29712072525483,0.385218608044281,0.49860034899739,7906.75191932126,440.822189187496,0.292131986576175,0.29407791638193,0.312742000100457,0.390651807512318,0.305384600833356,0.272935456679177,0.302877372020229,0.26231987569824,0,0.389524509622213,0,0.297343954138595,0.296470429978152,0,0.266880960560536,0.298968943856058,0.312618182593192,0.2735853860462,0.271652500178277,0.322120938925721,0.306310349677729,0.242080144059616,0.298247186944288,0,0.294748147719129,0.30151197840888,0,0.36653815783481,0,0.380225365915642,0.407527456756995,0,0.38985597442128,0.421471445703316,0.262557644612806,0,0,608.887865864572,324.784238447038,487.149874646468,416.35787065453,299.922618009026,258.112820211061,204.017102093737,312.750925091338,0,460.355780054609,0,172.926750224901,345.045144935083,253.558404111281,167.089719763979,196.396615564876,152.902842389653,215.81867644727,131.705907663381,223.959998083196,122.71548391374,142.18210197898,143.696795060402,419.40189447576,418.96440627079,212.431501793907,0,0,172.260044763243,407.164882370883,264.687423965591,554.659158274158,332.548872694554,278.715669405751,755.210140995019,981.667753060496,5894.35547414707,1906.44766038734,116.214991589871,165.001335359061,4272.94187184564,4942.05409951092,455.355235833781,437.218640661264,440.503943728763,566.744604531829,4495.61133909613,13489.9754823333,616.744822169098,486.484788682766,524.374901322067,480.671061840497,352.526827036591,306.041931531199,0.219945046008597,6520.53272415756,0.383829454197757,358.086481331082,268.046000037157,543.113843195468,364.386647101008,429.936824161151,279.554039492462,2142.10461178374,280.377564745339,203.17480550348,239.1590558115,222.024157586656,219.362286734609,161.53556393578,206.588097787489,185.757019755486,225.311192047151,155.256145697782,180.986220253839,164.835883051939,132.439769556401,147.735329238253,0,132.313604941927,144.097530263932,151.738997084404,0.297878783313558,0.374511960746941,0.299226242393454,5484.04340498658,0.264921185154574,114.205508022145,0,0.390620936055226,0.239295875075338,0.321182326534188,0.330734203054206,0.264883259753844,0,0.444661972066009,0,0.400520043917483,0,0.394510023157018,0.404761102212182,260.247238587377,207.33699448689,128.507393211447,224.806874368605,0,168.555721119556,137.297169708683,123.945360652513,143.30509126752,0,107.42188388509,169.913062016482,115.797175254629,267.152805822838,270.381450225491,261.657586923776,4361.8515684006,2036.00417928725,0,180.301177033535,156.161801709741,192.155279176316,129.832271118474,176.139547121985,138.748956175519,117.895816095712,146.532831306412,131.158871512998,150.697160199106,0,193.560222914271,173.396066929439,151.320306934178,0,191.829007067614,0,155.469980616213,162.631853601524,176.550281601952,0,167.513904049614,199.902773711028,124.651592577112,0,215.350884949518,219.201850646765,181.120845906317,289.637684320741,233.591829698,248.841267500038,93.0425375342747,105.267036690127,0,101.610479231411,92.110538456238,0,0.392280463828537,0.26637758657934,119.185507194017,0,84.7369145645127,94.4741960437646,101.60993424223,84.943088444337,105.448450342348,259.595359613292,816.113973974931,0,116.699568385348,90.9154183987719,107.712888069426,102.026853294363,0,91.9619012580694,85.0549118706412,122.494978107096,94.1053341042131,0,102.791145641911,75.7251783031475,107.754975866594,115.712755715421,113.815226667224,138.308173040203,75.749991558735,0,81.6715514508594,74.6107600209699,72.4027677416949,0,0,71.601284465968,0,117.155154807877,140.44664002885,140.494426723539,86.2784306387472,0,70.0154020170815,106.622554603755,83.4697136583643,109.966526306046,106.128815655822,0,0,115.200956547862,118.387180919134,107.667836275451,124.763351556633,122.575677763783,115.879928596563,0,0,117.180596899545,117.681764273568,107.380435554584,97.4191282949928,99.1725964331382,124.143472738406,121.964852332523,122.733897614429,114.18325060141,0,105.481170200442,114.266942380017,115.485840026546,47.7108542476164,139.37033642344,143.267521995613,177.659543452635,348.759007478907,345.898419005521,0,96.6987181010291,92.3112199764554,83.4911128257221,0,0,0.353178863540114,0.413702207814275,0,0.414293051136334,0.370566198128452,0,0,0,0,0,349.326735976078,0,0,0,0,9.08866032700167,128.759789781659,138.899624156893,20.0072093432488,0,0,416.816024057187,0.234577926946177,12.3884886768938,0,361.764022262782,474.644370833003,3639.92513182246,0,5704.81568422038,0,2.32449206832287,5936.42556324503,12.9992679130707,3.30162839691691,4.25762582248469,0,6.54901010148956,29.713108571327,840.96734775723,7230.39119342447,0.361124188415166,3.45365386752066,14.9241603344334,0.105248930337426,0.218756063052603,13.0465539101268,0,13760.0598549569,0.451792078443789,47.718634339733,24.7991119650212,0.942292972327392,0,0.471256109838678,0.373754187105107,1.65354642548748,0,8800.49929943511,2.30042736587166,0.377441732882882,52.6336778831381,7917.41619456635,441.737762797801,35.0993178534686,0.626155462024585,1.25996330157735,0.688045859837706,2.55528644955315,15.127113579058,1.30009174008946,0.442365887893039,0,4.26588012329033,0,10.7348769754385,5.72259881878501,0,0.607151712954325,1.67652269502366,0.674908223869689,0.646977422815238,0.450522329703448,0.986239263580449,2.09702537120449,6.24183570950516,6.43765531832588,0,1.38847917486785,1.29393452179321,0,0.193942881935178,0,0.235583264737966,0.225721524729823,0,0.521382282276433,0.163285231608302,0.847019146367683,0,0,609.506810215308,324.964277547944,487.422063178395,416.426872264373,300.066673513642,258.234938625001,204.08758590802,312.97537923878,0,460.535565053509,0,173.003984922586,345.262300368675,253.679345459037,167.167397312228,196.488047453886,152.953598953227,215.931157723556,131.751735504091,224.070682111018,122.750515234544,142.234495206653,143.761289905457,419.746657451186,419.5880945312,212.531497619671,0,0,172.349433752915,407.345372730587,264.853848498603,554.985848226208,332.786162016892,278.914441235202,755.760941990865,983.52985083225,5906.524097924,1911.03710947413,116.263929767283,165.080271042294,4281.0027960692,4955.08052471273,455.611338198429,437.403156668128,440.576747897253,569.417758567802,4507.78813049725,13503.3900600572,617.100460506676,486.698033028001,524.622415381443,481.138004791404,352.766604683514,306.246308404849,34.602571664577,6538.61520386785,37.6895934652532,358.386314409672,268.227341338705,543.48778606351,364.574362790908,430.174451168737,279.697485084654,2146.27225245081,280.567899290976,203.302268053533,239.320701534998,222.164694483988,219.509086268277,161.63512246231,206.715056039815,185.873310727123,225.463052721399,155.348565504524,181.098225435903,164.940619058172,132.52551767011,147.822251954517,0,132.385382820383,144.180477577655,151.82867642449,23.8357779234684,9.25744454083113,4.18178037219349,5495.15798572948,3.4068790460576,115.06854960376,0,4.02888300260896,0.00938666452868415,0.632515014402136,1.83593385036841,0.0441334069847289,0,0.215504045756153,0,0.477879413427369,0,0.468608123623364,0.446492475571608,260.427714203603,207.462665073268,128.573487083721,224.870596532399,0,168.65222646262,137.37515648348,124.02506687952,143.387702677688,0,107.468810292441,170.011798113585,115.846216899514,267.212161955022,270.510067638022,261.747987001229,4369.63017852304,2039.88044372341,0,180.401558445696,156.245104456672,192.268842453294,129.899073085129,176.245356621537,138.818851782135,117.953984800634,146.616211063869,131.233177006917,150.777308622862,0,193.66937964755,173.494103845385,151.393374632438,0,191.906044669387,0,155.528018306058,162.699351703282,176.600516999565,0,167.586267006455,200.029354972496,124.704724441636,0,215.466290457906,219.328624104141,181.193760217673,289.82642670274,233.734725915752,249.013927202449,93.0667536157498,105.313813117609,0,101.632201548112,92.135247213752,0,0.276444942249607,0.628074474166592,119.233761337957,0,84.7715321136436,94.5477082982889,101.661853377162,84.9502456661306,105.482581363748,259.745180440217,817.729620856968,0,116.759165836436,90.9582198960883,107.75869526924,102.072074756927,0,92.0108916567889,85.079166878435,122.551108113592,94.1410065424414,0,102.833712133629,75.7425290220369,107.795190581088,115.745250529307,113.828046417532,138.375711283762,75.7655798153722,0,81.713069172395,74.6343428221128,72.4182709003278,0,0,71.6576864511853,0,117.209043750062,140.508403821307,140.559650886489,86.2992420726037,0,70.0461329849888,106.663595339196,83.5390510373321,109.987690927918,106.221193097824,0,0,115.313711783651,118.413181925428,107.740322056989,124.841793393606,122.618287645136,116.052168478618,0,0,117.269313402498,117.752330848865,107.511963390711,97.5475990566783,99.1884720171081,124.349529392794,122.024462332832,122.800908193682,114.232452857398,0,105.556145789448,114.43567059795,115.49857195751,48.4261165559596,139.453963982749,143.348282017325,177.746388482278,349.044998602676,346.136161913517,0,96.7962471866554,92.3630977606454,83.5411397997753,0,0,0.438995589512952,0.505372497971265,0,0.57704555526542,0.395510509991569,0,0,0,0,0,349.737439597763,0,0,0,0,37.3782318949013,128.836120167885,138.983000340133,80.9826880772369,0,0,419.0938677153,0.152749447217457,50.9002668954077,0,361.957122419569,476.102694636681,3643.98318865901,0,5706.86449316817,0,8.04927220375994,5945.22853774501,53.0261397943437,12.4489531002872,16.1955104509898,0,27.0310765581559,120.459201563869,842.1922511504,7246.73694894598,2.30113894087992,12.955065500604,58.965723015845,0.432909739614304,0.0207863146737558,53.3285470399921,0,13786.2913534679,0.994842458511015,192.189076618588,100.415975161263,2.90167267247557,0,0.714653221740501,0.357189723008052,7.59260165089245,0,8834.59438734138,10.1220309337279,0.354187704268339,212.985199437359,7932.95577035893,449.080042593737,141.906243757974,1.60093583449772,4.11711284166817,1.58333462687497,11.1669031098853,59.8889573731011,4.28729248934045,0.985713352982035,0,18.2569136595268,0,42.1516280365169,22.0379176977641,0,1.62962873717495,7.61971040273639,3.64197198523645,1.77345691266255,2.63160182115245,2.9855928519738,9.33671584077174,25.8862732296819,24.9535054064855,0,4.68068149783028,4.29822772805408,0,0.326975090261075,0,0.20001745130043,0.3212032686898,0,0.918704697921899,0.614609737994213,2.60886453206628,0,0,613.302260464854,325.212059711363,487.801874252133,416.756485675927,300.285030463948,258.392466955785,204.175553019418,313.278594762252,0,460.877786380097,0,173.101529020009,345.564181207507,253.831171423928,167.263367147868,196.603819216008,153.016939711575,216.070881690647,131.806091406576,224.208196659285,122.792750449167,142.299910499373,143.840182934775,420.21182011697,424.799503182084,212.657844456692,0,0,172.45844405718,407.613931853215,265.060676497446,555.643479734139,333.087489552402,279.163774168929,757.904319272278,991.499049436861,5923.48219052137,1928.46398412011,116.323373665856,165.177043908956,4291.8338396487,4972.18489019965,455.93164988369,438.827335359734,440.950957109447,600.986991194773,4523.97837776453,13526.190265857,617.55816897796,488.285274027425,525.166431834031,482.012350243421,353.071458672082,306.500597327663,139.335599953454,6562.52938448082,152.381142619295,358.78521087919,268.450901990584,545.199019884174,364.814788658353,430.517685355948,279.876833303703,2151.49482405064,280.805017131642,203.457536903444,239.519880781391,222.337421673005,219.689479643487,161.754426298319,206.870706765556,186.014088234121,225.650122147739,155.458920795749,181.233840414831,165.066352787451,132.626671929682,147.925273838685,0,132.469343484473,144.278158169936,151.936420807835,96.6543901488757,38.2799776910323,17.6659316572168,5509.02096852771,14.4850736557086,124.002341242642,0,17.3345466664722,0.684069138866771,1.57431590393143,6.37118571105893,0.620688145060981,0,0.474880869242984,0,0.711064419883076,0,0.692007737353225,0.572255161326451,260.654038708922,207.617778071844,128.653017518018,224.975135763773,0,168.768823043459,137.467146485107,124.124094858549,143.486977995338,0,107.513265927418,170.131429663044,115.895880968884,267.45805296523,270.680882648679,261.90334444923,4378.44473511907,2044.46847934547,0,180.523973119202,156.346123495467,192.407499635261,129.978170352739,176.373112688979,138.902480917774,118.023417704794,146.715838094206,131.319840376469,150.874567179176,0,193.803787706418,173.6140544384,151.482856328756,0,192.004949212149,0,155.599607939241,162.782985013617,176.662346941238,0,167.676193671839,200.184063267143,124.768528805212,0,215.610977487577,219.488506358852,181.283530356741,290.061092022511,233.912446137245,249.229778228481,93.0945374693531,105.370126713029,0,101.657024749843,92.1650481226514,0,0.0722378929154807,1.71650986998468,119.290762512674,0,84.8120520468443,94.6328470980283,101.726192048291,84.9585828364999,105.524778997141,259.931323260489,824.287438158316,0,116.831951310847,91.0094491989083,107.813478019073,102.126545886055,0,92.0578034392767,85.1093233944055,122.619869207917,94.1844205847726,0,102.886367320757,75.7621821535588,107.841975667909,115.78316199197,113.842636323046,138.457961149687,75.7854205510631,0,81.7618998110916,74.6601580364812,72.4331240617685,0,0,71.7119569195968,0,117.274301910483,140.586512909826,140.640635943067,86.3254012026823,0,70.0791042322978,106.710030000053,83.6113635682541,110.003307769723,106.31945001426,0,0,115.390484795253,118.433678588142,107.786815734386,124.935274166706,122.666157145914,116.180083302522,0,0,117.343261789367,117.80823539129,107.613236302235,97.6706727055223,99.2135063976772,124.547093511393,122.091903577453,122.877622406277,114.289277384164,0,105.630409039488,114.567477207697,115.513024872075,57.7890121339061,139.552047202768,143.444125200878,177.853499277162,349.480627360352,346.438196381726,0,96.8871450739529,92.4132441913946,83.5990741847729,0,0,2.81922538749186,0.78048700677482,0,1.0661455197889,0.470869302644979,0],"Archive803_field4":[4497885,4497885,4497885,4497885,8995770,4497885,8995770,4497885,8995770,7871298.75,7871298.75,7871298.75,8995770,7871298.75,4497885,6465709.6875,6465709.6875,6465709.6875,4497885,5552076.796875,5552076.796875,6026463.10546875,4497885,5301706.24511719,4497885,5552076.796875,7058692.57324219,5813398.00994873,6424362.76116103,7238783.671875,4497885,7069949.09699671,7552860.57983978,7748809.40440409,8220793.41669313,8109463.98521509,7834189.59295337,8656992.48588036,7392944.87533169,8333523.7408863,8347757.88451305,8714652.1875,8732919.59689139,8755173.78361078,8617597.6258377,8891197.79149865,8498981.6162286,8363254.921875,8134846.69921875,8519780.08330749,7042679.58860458,6465709.6875,8961406.55860475,8978688.53810902,7535813.31642531,8966886.83493223,8995757.46915095,8993229.565522,8872168.80252451,8871415.49110469,8891962.18710428,8987217.36775315,8705690.15528142,8973590.30799432,8978994.97080258,7791062.92193595,7238783.671875,8951743.86360458,7871298.75,8665314.32274517,8872407.93292389,8714652.1875,8911107.61924746,8776742.43805529,8926585.64896621,8991735.21082796,8151067.46119872,8654342.92828399,8499540.59348858,8009718.03631726,8194441.4619544,4497885,7284443.99861907,7803966.7893475,6465709.6875,7521498.51938046,8925490.546875,8975415.51505327,8854438.89242292,8363254.921875,8134846.69921875,8449406.09339957,8399530.97521212,4497885,4497885,7168320.92286435,6974974.47743194,7359653.19704895,6744153.09401383,6265072.35569413,5516393.47689994,6500180.29954669,8009493.28588366,4497885,7979408.3127146,4497885,5661013.85822132,7584091.63104652,7236176.1268072,7209355.41952925,7037225.03879418,6438114.00515706,7928342.360184,5519864.30472687,7536627.89339564,6596420.08478296,6737695.96794518,7373443.20780777,8741888.36433575,8310744.97963721,5786487.58506402,4497885,7871298.75,8061536.51890088,8399772.84236341,8534998.86742833,8575394.3804354,8600285.50837027,8905118.58888261,8902198.00288345,8664701.74501549,8530124.64113434,8850565.08831266,7129980.72286276,7635041.74828717,7813391.84610416,8944633.90073837,8732023.68883659,8899056.98898285,8974513.29352146,8554315.34311493,8794173.81947627,8588684.52639528,8720847.58524146,8277604.60579911,8986009.75841626,8903836.82862062,8889075.11176448,8851153.7175097,8756413.90432745,8127846.6936193,8412934.92117438,8954235.31710937,8972993.77239382,8201659.47870175,7359291.86222649,7876487.57392743,7797822.50504194,7500171.11240129,8990257.0578066,8969396.05648018,8964780.44533589,8769056.2468977,8990409.00126023,8965214.96459595,8719768.76091207,8992591.52791747,8906299.75864804,8915064.89120058,8870718.6560871,8991098.13929634,8995161.99881054,8994163.8040432,7871298.75,8797906.42194242,8926754.08196867,8720498.56643877,7678497.51615296,6431991.97260478,7464615.73862767,7100419.87773734,6713673.18079141,6670577.53055171,4497885,5635891.37364367,6139258.24383318,6643327.35877706,5916385.09316725,6895642.08804367,4497885,5378247.68735993,4497885,5548455.19221379,7238783.671875,6869816.54296875,6283143.23431494,8758471.71523781,8414798.54194536,8398591.97759517,6152708.99308908,4497885,8619799.64967709,8649846.16249492,8592439.79585931,8468921.91860137,8714652.1875,8056039.42222479,8552675.41449997,8825764.36520671,6667885.46600869,7157344.5394451,5677427.93583664,5484927.43829301,6086192.46825551,4497885,8418772.7467779,8246823.07900011,8684944.10017805,8438375.58584846,8862108.85890889,8250386.46248917,7795940.18058919,8619603.50247808,8838169.71007025,8174400.63393667,4497885,8125567.37878474,8271062.20909632,7569072.21833856,4497885,5307031.83371452,4497885,5750996.01794653,5305409.50670216,6166101.61346516,4497885,6981678.51465011,8867271.49189755,7609265.39422204,6465709.6875,7289130.93296382,7864992.01751786,6732413.34130215,8444380.80823543,8285405.15606632,8656804.5398984,6849068.91231869,7219862.33111909,4497885,7773704.3695246,6131810.95814701,8925490.546875,8837641.23046875,8914599.80447121,5635615.38033652,4497885,5310694.95802181,5671456.39710335,5490496.77860428,5967775.34267065,6300566.52401312,8192993.89218697,8974624.32475771,5552076.796875,7967808.41394903,6949704.82514333,7287941.65240088,7571157.35628321,6465709.6875,7426987.26840721,6011487.53220686,7211416.75208677,6680363.70365165,4497885,6631685.22432406,5950979.22054858,5653431.61635042,6528032.81909474,5770762.62071373,7702492.61901913,6519344.61088082,4497885,5208595.72841275,5192754.51686616,5343315.68006016,4497885,5599705.48953532,5369671.59394657,4497885,5232766.98186821,6326585.8427348,6868643.85057301,7019064.17591711,7238783.671875,6085415.08614521,5245575.66149562,6974573.71266665,8502874.24447803,8670754.10011292,8925490.546875,8363254.921875,8878249.00165456,8985923.07486605,8134846.69921875,8936442.78315656,8963334.79190305,8981402.62143199,8714652.1875,8925490.546875,8985835.38098601,8822741.71471257,8429333.98692595,7782602.73091805,7836283.06121511,8927130.28759653,8846517.24564643,8633694.52399208,8234422.62034372,8363254.921875,8134846.69921875,8549693.01316112,8499184.63637252,5314241.14194684,8959864.06028019,8810784.83108073,7585693.28746049,8220135.81491658,8693047.95185494,7238783.671875,7572611.07421875,6953977.83314938,6386363.29966675,4497885,5552076.796875,5552076.796875,5733426.92761492,4497885,5204587.46087332,6638302.31322828,5552076.796875,3373413.75,3373413.75,3373413.75,3373413.75,6746827.5,3373413.75,6746827.5,3373413.75,6746827.5,5903474.0625,5903474.0625,5903474.0625,6746827.5,5903474.0625,3373413.75,4849282.265625,4849282.265625,4849282.265625,3373413.75,4164057.59765625,4164057.59765625,4519847.32910156,3373413.75,3976279.68383789,3373413.75,4164057.59765625,5294019.42993164,4360048.50746155,4818272.07087077,5429087.75390625,3373413.75,5302461.82274753,5664645.43487984,5811607.05330307,6165595.06251985,6082097.98891131,5875642.19471503,6492744.36441027,5544708.65649877,6250142.80566472,6260818.41338479,6535989.140625,6549689.69766854,6566380.33770808,6463198.21937827,6668398.34362398,6374236.21217145,6272441.19140625,6101135.02441406,6389835.06248062,5282009.69145343,4849282.265625,6721054.91895356,6734016.40358176,5651859.98731898,6725165.12619917,6746818.10186322,6744922.1741415,6654126.60189338,6653561.61832852,6668971.64032821,6740413.02581486,6529267.61646107,6730192.73099574,6734246.22810193,5843297.19145197,5429087.75390625,6713807.89770344,5903474.0625,6498985.74205888,6654305.94969291,6535989.140625,6683330.7144356,6582556.82854147,6694939.23672466,6743801.40812097,6113300.59589904,6490757.196213,6374655.44511643,6007288.52723795,6145831.0964658,3373413.75,5463332.99896431,5852975.09201062,4849282.265625,5641123.88953534,6694117.91015625,6731561.63628995,6640829.16931719,6272441.19140625,6101135.02441406,6337054.57004968,6299648.23140909,3373413.75,3373413.75,5376240.69214826,5231230.85807395,5519739.89778671,5058114.82051037,4698804.2667706,4137295.10767495,4875135.22466002,6007119.96441275,3373413.75,5984556.23453595,3373413.75,4245760.39366599,5688068.72328489,5427132.0951054,5407016.56464694,5277918.77909563,4828585.5038678,5946256.770138,4139898.22854515,5652470.92004673,4947315.06358722,5053271.97595889,5530082.40585582,6556416.27325181,6233058.73472791,4339865.68879802,3373413.75,5903474.0625,6046152.38917566,6299829.63177255,6401249.15057124,6431545.78532655,6450214.1312777,6678838.94166196,6676648.50216259,6498526.30876162,6397593.48085076,6637923.8162345,5347485.54214707,5726281.31121538,5860043.88457812,6708475.42555377,6549017.76662744,6674292.74173714,6730884.9701411,6415736.50733619,6595630.3646072,6441513.39479646,6540635.68893109,6208203.45434933,6739507.3188122,6677877.62146546,6666806.33382336,6638365.28813228,6567310.42824559,6095885.02021447,6309701.19088078,6715676.48783203,6729745.32929536,6151244.60902631,5519468.89666987,5907365.68044557,5848366.87878145,5625128.33430097,6742692.79335495,6727047.04236014,6723585.33400192,6576792.18517328,6742806.75094517,6723911.22344697,6539826.57068405,6744443.6459381,6679724.81898603,6686298.66840044,6653038.99206533,6743323.60447226,6746371.49910791,6745622.8530324,5903474.0625,6598429.81645682,6695065.5614765,6540373.92482907,5758873.13711472,4823993.97945358,5598461.80397075,5325314.908303,5035254.88559355,5002933.14791378,3373413.75,4226918.53023275,4604443.68287489,4982495.51908279,4437288.81987544,5171731.56603275,3373413.75,4033685.76551995,3373413.75,4161341.39416034,5429087.75390625,5152362.40722656,4712357.4257362,6568853.78642836,6311098.90645902,6298943.98319638,4614531.74481681,3373413.75,6464849.73725782,6487384.62187119,6444329.84689448,6351691.43895103,6535989.140625,6042029.56666859,6414506.56087498,6619323.27390504,5000914.09950651,5368008.40458383,4258070.95187748,4113695.57871976,4564644.35119163,3373413.75,6314079.56008343,6185117.30925009,6513708.07513354,6328781.68938634,6646581.64418167,6187789.84686688,5846955.1354419,6464702.62685856,6628627.28255269,6130800.4754525,3373413.75,6094175.53408856,6203296.65682224,5676804.16375392,3373413.75,3980273.87528589,3373413.75,4313247.0134599,3979057.13002662,4624576.21009887,3373413.75,5236258.88598758,6650453.61892316,5706949.04566653,4849282.265625,5466848.19972286,5898744.0131384,5049310.00597661,6333285.60617657,6214053.86704974,6492603.4049238,5136801.68423902,5414896.74833932,3373413.75,5830278.27714345,4598858.21861026,6694117.91015625,6628230.92285156,6685949.85335341,4226711.53525239,3373413.75,3983021.21851636,4253592.29782752,4117872.58395321,4475831.50700299,4725424.89300984,6144745.41914023,6730968.24356828,4164057.59765625,5975856.31046177,5212278.6188575,5465956.23930066,5678368.01721241,4849282.265625,5570240.45130541,4508615.64915514,5408562.56406508,5010272.77773874,3373413.75,4973763.91824304,4463234.41541143,4240073.71226282,4896024.61432106,4328071.9655353,5776869.46426435,4889508.45816062,3373413.75,3906446.79630956,3894565.88764962,4007486.76004512,3373413.75,4199779.11715149,4027253.69545993,3373413.75,3924575.23640116,4744939.3820511,5151482.88792975,5264298.13193783,5429087.75390625,4564061.31460891,3934181.74612172,5230930.28449998,6377155.68335852,6503065.57508469,6694117.91015625,6272441.19140625,6658686.75124092,6739442.30614954,6101135.02441406,6702332.08736742,6722501.09392729,6736051.96607399,6535989.140625,6694117.91015625,6739376.53573951,6617056.28603443,6322000.49019446,5836952.04818854,5877212.29591133,6695347.7156974,6634887.93423482,6475270.89299406,6175816.96525779,6272441.19140625,6101135.02441406,6412269.75987084,6374388.47727939,3985680.85646013,6719898.04521014,6608088.62331055,5689269.96559537,6165101.86118743,6519785.96389121,5429087.75390625,5679458.30566406,5215483.37486203,4789772.47475007,3373413.75,4164057.59765625,4164057.59765625,4300070.19571119,3373413.75,3903440.59565499,4978726.73492121,4164057.59765625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-5.11350322085491e-10,0,5.11350322085491e-10,0,0,0,0,0,0,0,-5.11350322085491e-10,0,0,0,0,0,-1.02270064417098e-09,1.02270064417098e-09,0,0,0,5.11350322085491e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5.11350322085491e-10,0,0,0,0,-5.11350322085491e-10,0,1.02270064417098e-09,5.11350322085491e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.02270064417098e-09,0,0,0,0,0,0,0,-5.11350322085491e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-5.11350322085491e-10,0,0,0,0,0,0,-5.11350322085491e-10,5.11350322085491e-10,0,0,0,0,0,5.11350322085491e-10,5.11350322085491e-10,0,0,-5.11350322085491e-10,0,0,0,0,1.02270064417098e-09,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.02270064417098e-09,-1.02270064417098e-09,0,0,0,0,0,0,0,0,1.02270064417098e-09,0,0,0,0,0,0,0,0,0,0,1.02270064417098e-09,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.02270064417098e-09,0,0,0,0,0,-5.11350322085491e-10,0,1.02270064417098e-09,5.11350322085491e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive803_field5":[499.932670808958,1,1,500.731146275725,997.921445563745,500.255294386039,1,500.688039056014,997.519377121202,1,875.046762213745,875.027697168872,1,1,1,720.157345106257,1,1,499.023601512372,616.581844247639,617.685072185966,816.913170639535,732.35954031726,829.364540866195,1,1,873.465215809558,1,1,1,1,1,1,859.181965765478,928.665056705051,1,1,1,1,1,1,1,979.145294961941,1,1,1,1,1,1,1,1,1,984.912989810067,1,1,1,958.70364152077,998.032088230844,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,500.642160854218,500.413189775305,797.457048650679,774.379690474596,814.101511494649,748.541440415418,695.458741964279,612.866166646664,722.36288952566,889.127863842796,500.426009593807,884.395444303433,500.175909332679,629.481974851865,842.251332013202,803.784705730276,801.343489188856,782.10646514739,715.6304716236,881.060884885808,613.746908959662,837.433325248124,733.404276802104,749.0508146997,819.695647813294,969.129365894204,922.905529153626,642.785855806567,500.306275144584,872.738465179554,896.053175584311,932.676191002518,948.108362584212,951.688134071291,954.821726435106,989.060854274137,976.972423004258,954.171731380922,947.377885576962,974.786988855437,792.736485684119,848.67250220616,907.565736955764,964.659030037832,968.858789508345,988.387962004439,997.407917991442,951.674836728165,959.395002537317,952.11032797778,968.504561783416,918.062309095086,998.324163333049,987.577083623055,986.837039392738,982.967303021433,1,934.530683979158,1,993.766048300723,996.833764673589,911.337814556896,818.566373149411,874.610450056803,865.903398893303,892.118043898962,998.706232735323,996.810662501826,996.048516327539,974.437392852738,998.984014374758,996.527444324889,969.029054344395,999.473989671995,989.592208692349,991.008269572752,985.926062780566,999.364181998645,999.902123813691,999.830343863764,873.217659911079,978.058753560532,992.356726388939,969.349353452788,1,1,1,892.967890495701,1,743.09774773106,1,1,1,1,1,1,1,1,1,1,1,1,1,972.918305428979,935.10241954235,933.677501865865,683.259981550664,500.243364708257,958.120743554371,961.585320335201,955.131220348118,941.414728685942,966.393651854144,895.706658968237,950.621383224357,981.38200069484,742.17923115278,794.688086889029,632.523248857775,795.73810241998,781.423637412252,671.527215246351,935.725060950324,916.718588016785,965.247733910804,938.13902600478,985.018323660257,917.191550568094,866.692809406138,958.178326996846,982.549766241178,908.652227054265,500.429368960635,903.019467767863,919.292345720777,841.35284823398,499.746056043207,589.709267539287,500.209914709418,639.251837698235,589.399303822903,685.499378641432,500.078850481686,775.998089969029,985.444044139958,845.995789611122,717.766232959122,809.919513139899,873.888975890086,748.20474013683,937.866107999492,920.476481561854,961.634342159248,761.676820054413,802.689709126464,500.458680505474,864.631382786083,681.816138623412,1,1,1,626.692331709642,500.392675410158,590.633949746252,630.382900591215,610.602361626468,663.843708751946,700.508483256682,910.196574493344,989.075347896366,1,885.820631166316,772.676517647013,810.27882991845,841.757344754386,717.28415285747,825.644520153274,668.395918544691,801.699985059446,742.798585287082,500.107549492394,737.298828144493,661.739324645407,628.579998200912,725.801947507096,641.703551678831,856.236489579416,725.078451872961,500.156790239676,579.235102513039,577.442917196958,594.276018942791,500.363855323413,621.461480197274,596.836889794342,499.964802784723,581.968130236658,703.121276329635,763.531201321709,780.637371457018,803.284886998755,676.269919695358,583.039697858268,774.876184556084,945.696682571836,963.533651799783,989.426082973616,927.542504248685,986.301368323074,999.421922006455,904.030664226337,993.403713676467,996.749971693378,997.309568900865,966.645460900775,988.817493543822,998.707438809026,980.732000592355,936.166710232258,864.365902663374,871.652936486478,991.536688879976,983.51710867641,959.785876112271,915.566360354567,927.526936191497,903.853045603728,949.426709753393,945.459911818865,592.367406257178,996.010250338498,979.447035108381,843.062781746579,912.018969119519,965.097997396562,802.875747085648,841.020957660791,772.816772736436,709.902705014244,500.172240324363,616.752967124187,1,1,1,1,1,1,499.932670808958,1,1,500.731146275725,997.921445563745,500.255294386039,1,500.688039056014,997.519377121202,1,875.046762213745,875.027697168872,1,1,1,720.157345106257,1,1,499.023601512372,616.581844247639,617.685072185966,816.913170639535,732.35954031726,829.364540866195,1,1,873.465215809558,1,1,1,1,1,1,859.181965765479,928.665056705051,1,1,1,1,1,1,1,979.145294961941,1,1,1,1,1,1,1,1,1,984.912989810067,1,1,1,958.70364152077,998.032088230844,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,500.642160854218,500.413189775305,797.457048650679,774.379690474595,814.101511494649,748.541440415418,695.458741964279,612.866166646664,722.362889525659,889.127863842796,500.426009593807,884.395444303433,500.175909332679,629.481974851865,842.251332013202,803.784705730276,801.343489188855,782.10646514739,715.6304716236,881.060884885808,613.746908959662,837.433325248124,733.404276802105,749.050814699699,819.695647813294,969.129365894204,922.905529153626,642.785855806567,500.306275144584,872.738465179554,896.053175584311,932.676191002517,948.108362584212,951.688134071291,954.821726435106,989.060854274137,976.972423004258,954.171731380922,947.377885576962,974.786988855437,792.736485684119,848.67250220616,907.565736955764,964.659030037832,968.858789508345,988.387962004439,997.407917991442,951.674836728165,959.395002537317,952.11032797778,968.504561783416,918.062309095086,998.324163333049,987.577083623055,986.837039392738,982.967303021433,1,934.530683979159,1,993.766048300723,996.833764673589,911.337814556896,818.566373149411,874.610450056803,865.903398893303,892.118043898962,998.706232735323,996.810662501826,996.048516327539,974.437392852738,998.984014374758,996.52744432489,969.029054344394,999.473989671995,989.592208692349,991.008269572752,985.926062780566,999.364181998645,999.902123813691,999.830343863764,873.217659911079,978.058753560532,992.356726388939,969.349353452788,1,1,1,892.967890495701,1,743.09774773106,1,1,1,1,1,1,1,1,1,1,1,1,1,972.918305428979,935.102419542349,933.677501865865,683.259981550664,500.243364708257,958.120743554372,961.585320335201,955.131220348118,941.414728685941,966.393651854144,895.706658968237,950.621383224357,981.38200069484,742.17923115278,794.688086889029,632.523248857775,795.73810241998,781.423637412252,671.527215246351,935.725060950324,916.718588016785,965.247733910804,938.13902600478,985.018323660257,917.191550568093,866.692809406138,958.178326996847,982.549766241178,908.652227054266,500.429368960635,903.019467767863,919.292345720777,841.35284823398,499.746056043207,589.709267539287,500.209914709418,639.251837698235,589.399303822903,685.499378641432,500.078850481686,775.998089969029,985.444044139958,845.995789611122,717.766232959122,809.919513139899,873.888975890086,748.20474013683,937.866107999492,920.476481561854,961.634342159248,761.676820054413,802.689709126464,500.458680505474,864.631382786083,681.816138623412,1,1,1,626.692331709642,500.392675410158,590.633949746252,630.382900591215,610.602361626468,663.843708751946,700.508483256682,910.196574493344,989.075347896367,1,885.820631166316,772.676517647013,810.27882991845,841.757344754386,717.28415285747,825.644520153274,668.395918544691,801.699985059446,742.798585287082,500.107549492394,737.298828144493,661.739324645407,628.579998200912,725.801947507097,641.703551678831,856.236489579416,725.078451872961,500.156790239676,579.235102513039,577.442917196958,594.276018942791,500.363855323413,621.461480197274,596.836889794342,499.964802784723,581.968130236658,703.121276329635,763.531201321709,780.637371457018,803.284886998755,676.269919695358,583.039697858268,774.876184556084,945.696682571836,963.533651799783,989.426082973616,927.542504248685,986.301368323074,999.421922006455,904.030664226337,993.403713676467,996.749971693378,997.309568900865,966.645460900775,988.817493543822,998.707438809026,980.732000592355,936.166710232258,864.365902663374,871.652936486478,991.536688879976,983.51710867641,959.785876112271,915.566360354567,927.526936191496,903.853045603728,949.426709753393,945.459911818865,592.367406257178,996.010250338498,979.447035108381,843.062781746579,912.018969119519,965.097997396562,802.875747085648,841.020957660791,772.816772736436,709.902705014244,500.172240324362,616.752967124187,1,1,1,1,1,1,499.932670808958,1,1,500.731146275725,997.921445563745,500.255294386039,1,500.688039056014,997.519377121202,1,875.046762213745,875.027697168872,1,1,1,720.157345106257,1,1,499.023601512372,616.581844247639,617.685072185966,816.913170639535,732.35954031726,829.364540866195,1,1,873.465215809558,1,1,1,1,1,1,859.181965765478,928.665056705051,1,1,1,1,1,1,1,979.145294961941,1,1,1,1,1,1,1,1,1,984.912989810067,1,1,1,958.70364152077,998.032088230844,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,500.642160854218,500.413189775305,797.457048650679,774.379690474596,814.101511494649,748.541440415418,695.458741964279,612.866166646664,722.36288952566,889.127863842796,500.426009593807,884.395444303433,500.175909332679,629.481974851865,842.251332013202,803.784705730276,801.343489188856,782.10646514739,715.6304716236,881.060884885808,613.746908959662,837.433325248124,733.404276802104,749.0508146997,819.695647813294,969.129365894204,922.905529153626,642.785855806567,500.306275144584,872.738465179554,896.053175584311,932.676191002518,948.108362584212,951.688134071291,954.821726435106,989.060854274137,976.972423004258,954.171731380922,947.377885576962,974.786988855437,792.736485684119,848.67250220616,907.565736955764,964.659030037832,968.858789508345,988.387962004439,997.407917991442,951.674836728165,959.395002537317,952.11032797778,968.504561783416,918.062309095086,998.324163333049,987.577083623055,986.837039392738,982.967303021433,1,934.530683979158,1,993.766048300723,996.833764673589,911.337814556896,818.566373149411,874.610450056803,865.903398893303,892.118043898962,998.706232735323,996.810662501826,996.048516327539,974.437392852738,998.984014374758,996.527444324889,969.029054344395,999.473989671995,989.592208692349,991.008269572752,985.926062780566,999.364181998645,999.902123813691,999.830343863764,873.217659911079,978.058753560532,992.356726388939,969.349353452788,1,1,1,892.967890495701,1,743.09774773106,1,1,1,1,1,1,1,1,1,1,1,1,1,972.918305428979,935.10241954235,933.677501865865,683.259981550664,500.243364708257,958.120743554371,961.585320335201,955.131220348118,941.414728685942,966.393651854144,895.706658968237,950.621383224357,981.38200069484,742.17923115278,794.688086889029,632.523248857775,795.73810241998,781.423637412252,671.527215246351,935.725060950324,916.718588016785,965.247733910804,938.13902600478,985.018323660257,917.191550568094,866.692809406138,958.178326996846,982.549766241178,908.652227054265,500.429368960635,903.019467767863,919.292345720777,841.35284823398,499.746056043207,589.709267539287,500.209914709418,639.251837698235,589.399303822903,685.499378641432,500.078850481686,775.998089969029,985.444044139958,845.995789611122,717.766232959122,809.919513139899,873.888975890086,748.20474013683,937.866107999492,920.476481561854,961.634342159248,761.676820054413,802.689709126464,500.458680505474,864.631382786083,681.816138623412,1,1,1,626.692331709642,500.392675410158,590.633949746252,630.382900591215,610.602361626468,663.843708751946,700.508483256682,910.196574493344,989.075347896366,1,885.820631166316,772.676517647013,810.27882991845,841.757344754386,717.28415285747,825.644520153274,668.395918544691,801.699985059446,742.798585287082,500.107549492394,737.298828144493,661.739324645407,628.579998200912,725.801947507096,641.703551678831,856.236489579416,725.078451872961,500.156790239676,579.235102513039,577.442917196958,594.276018942791,500.363855323413,621.461480197274,596.836889794342,499.964802784723,581.968130236658,703.121276329635,763.531201321709,780.637371457018,803.284886998755,676.269919695358,583.039697858268,774.876184556084,945.696682571836,963.533651799783,989.426082973616,927.542504248685,986.301368323074,999.421922006455,904.030664226337,993.403713676467,996.749971693378,997.309568900865,966.645460900775,988.817493543822,998.707438809026,980.732000592355,936.166710232258,864.365902663374,871.652936486478,991.536688879976,983.51710867641,959.785876112271,915.566360354567,927.526936191497,903.853045603728,949.426709753393,945.459911818865,592.367406257178,996.010250338498,979.447035108381,843.062781746579,912.018969119519,965.097997396562,802.875747085648,841.020957660791,772.816772736436,709.902705014244,500.172240324363,616.752967124187,1,1,1,1,1,1],"Archive803_field6":[999.932670808958,0.103616813294233,0.103616813294233,911.092827605148,348.043635202064,395.196643359646,0.103616813294233,305.991069359044,952.700217785913,0.103616813294233,675.107857032904,630.269632652743,0.103616813294233,0.103616813294233,0.103616813294233,166.650502486511,0.103616813294233,0.103616813294233,153.061969058804,234.667438089281,160.138334649309,233.800924183035,310.765576485393,284.800738782861,0.103616813294233,0.103616813294233,182.609869249196,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,179.338982507098,128.628424129361,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,102.820220674354,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,112.586299609455,0.103616813294233,0.103616813294233,0.103616813294233,99.3378162279586,207.45614977371,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,230.312859778949,608.245545591531,162.896973113185,284.60168688675,227.083241415284,223.716028143944,271.045630394969,307.612241214663,370.324035180481,336.697496824228,456.993702653436,255.044641291635,381.111271014008,425.16385967967,295.884834087153,356.524561528306,494.309772325804,423.743721435575,471.339500351095,441.144647058447,512.417317857548,406.920751151533,580.689515480964,524.849637297533,574.779601350723,298.04628177834,195.53498841202,365.670903218318,532.506299582512,930.509726176621,538.374084458683,298.061071827088,406.518360742952,242.663732908868,347.082647060705,408.248168386981,206.035491341996,160.805365072768,119.155926920691,137.359295597469,666.140717511361,528.45145112907,161.293088310605,122.800584944737,275.783417417338,224.490817538912,285.434262086855,170.893605769954,127.443810546097,98.6546380895843,214.399330924983,255.914344898111,263.169428407632,278.626031253306,343.182650629905,377.440098002752,0.103616813294233,158.68915846528,0.103616813294233,342.041947805015,422.786572228835,192.577905814304,256.729988455089,238.679494244764,357.36773831275,225.391893037986,409.156763194126,524.471555798565,462.010473230635,478.06587420778,493.980564983198,633.289376311521,503.345822570755,566.368042342972,478.690398912275,651.378191615388,569.140552275413,623.512945938234,750.836600447747,684.823583999641,975.808080243435,734.409503431356,693.757749736096,648.726753097808,0.103616813294233,0.103616813294233,0.103616813294233,222.958528070897,0.103616813294233,204.74222689982,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,421.757877236965,484.10151943145,719.165329250687,332.478058656757,243.920050925266,588.249458123609,701.492436727993,758.883914732292,661.620350156414,964.029282352677,814.427281440477,579.110694247581,840.445318535593,275.710399519443,333.882116135788,258.752488947281,308.620033794915,269.970154727632,339.571570085061,543.379560897324,599.522284847746,531.637027551027,718.185274412656,581.863044849281,662.436117886306,720.082023109942,660.062010650117,745.579456606419,612.131178093115,697.900043447439,495.28239104365,551.002137093975,564.677205485334,319.055073638515,352.655886775494,546.415926439624,463.773602400352,414.399645610139,401.753721364966,470.652530833592,478.322713550586,525.706426208117,670.014943172218,920.582704122367,407.489240025345,432.202703160117,426.870824517162,376.138702931931,435.110946925672,431.557776114685,795.291466300386,737.455157480682,759.555699078299,825.223046158769,707.770431780043,0.103616813294233,0.103616813294233,0.103616813294233,596.6206626201,683.857362604684,725.811361482605,831.684725261269,661.536719251437,771.977666892068,641.858885550559,395.250494842979,174.899418216965,0.103616813294233,744.676282302186,811.316338083858,730.133958491649,794.164717850743,987.329363023648,895.804687373158,732.384997002872,644.439771425963,754.433337056372,848.842886735796,686.172904917638,822.529558439141,641.661218578164,609.293449447397,552.718636645896,621.047363642557,896.816147989376,773.259796104779,731.823859199453,807.510890019033,871.370320496906,924.731523945114,993.104877936879,934.318586619144,621.803145893227,512.140173352223,503.69079975143,546.558960645164,865.789865525314,981.790202248022,943.177039321887,595.864944701203,932.664331792394,841.423586204745,897.362478642154,958.021818555238,969.843029664129,900.323562597372,839.90665679364,899.447407603207,786.286139043341,807.266018920457,902.489581628063,941.871511731665,946.208439291623,872.387643174376,862.128390924256,917.022991536761,924.725251101801,865.258249582297,895.246553350291,804.636268833487,773.714246966177,786.417550050287,936.213092105475,876.278679724678,875.146346741644,820.467197107859,199.838945951697,716.032558932387,688.043401308372,494.890098580788,323.588373226289,339.746811513925,925.357113165805,879.424443476217,863.107124342183,832.914757889502,834.901590275487,915.529543370521,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,999.932670808958,0.103616813294233,0.103616813294233,911.092827605148,348.043635202064,395.196643359646,0.103616813294233,305.991069359044,952.700217785913,0.103616813294233,675.107857032904,630.269632652743,0.103616813294233,0.103616813294233,0.103616813294233,166.650502486511,0.103616813294233,0.103616813294233,153.061969058804,234.667438089281,160.138334649309,233.800924183035,310.765576485393,284.800738782861,0.103616813294233,0.103616813294233,182.609869249196,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,179.338982507098,128.628424129361,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,102.820220674354,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,112.586299609455,0.103616813294233,0.103616813294233,0.103616813294233,99.3378162279586,207.45614977371,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,230.312859778949,608.245545591531,162.896973113185,284.60168688675,227.083241415284,223.716028143944,271.045630394969,307.612241214663,370.324035180481,336.697496824228,456.993702653436,255.044641291635,381.111271014008,425.16385967967,295.884834087153,356.524561528306,494.309772325804,423.743721435575,471.339500351095,441.144647058447,512.417317857548,406.920751151533,580.689515480964,524.849637297533,574.779601350723,298.04628177834,195.53498841202,365.670903218318,532.506299582512,930.509726176621,538.374084458683,298.061071827088,406.518360742952,242.663732908868,347.082647060705,408.248168386981,206.035491341996,160.805365072768,119.155926920691,137.359295597469,666.140717511361,528.45145112907,161.293088310605,122.800584944737,275.783417417338,224.490817538912,285.434262086855,170.893605769954,127.443810546097,98.6546380895842,214.399330924983,255.914344898111,263.169428407632,278.626031253306,343.182650629905,377.440098002752,0.103616813294233,158.68915846528,0.103616813294233,342.041947805015,422.786572228835,192.577905814304,256.729988455089,238.679494244764,357.36773831275,225.391893037986,409.156763194126,524.471555798565,462.010473230635,478.06587420778,493.980564983198,633.289376311521,503.345822570755,566.368042342972,478.690398912275,651.378191615388,569.140552275413,623.512945938234,750.836600447747,684.823583999641,975.808080243435,734.409503431356,693.757749736096,648.726753097808,0.103616813294233,0.103616813294233,0.103616813294233,222.958528070897,0.103616813294233,204.74222689982,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,421.757877236965,484.10151943145,719.165329250687,332.478058656757,243.920050925266,588.249458123609,701.492436727993,758.883914732292,661.620350156414,964.029282352678,814.427281440477,579.110694247581,840.445318535593,275.710399519442,333.882116135788,258.752488947281,308.620033794915,269.970154727631,339.571570085061,543.379560897324,599.522284847746,531.637027551027,718.185274412657,581.863044849281,662.436117886306,720.082023109942,660.062010650117,745.579456606419,612.131178093115,697.900043447439,495.28239104365,551.002137093975,564.677205485334,319.055073638515,352.655886775494,546.415926439624,463.773602400352,414.399645610139,401.753721364966,470.652530833592,478.322713550586,525.706426208117,670.014943172218,920.582704122367,407.489240025345,432.202703160117,426.870824517162,376.138702931931,435.110946925672,431.557776114685,795.291466300386,737.455157480682,759.555699078299,825.22304615877,707.770431780043,0.103616813294233,0.103616813294233,0.103616813294233,596.6206626201,683.857362604684,725.811361482605,831.684725261269,661.536719251437,771.977666892068,641.858885550559,395.250494842979,174.899418216965,0.103616813294233,744.676282302186,811.316338083858,730.133958491649,794.164717850743,987.329363023647,895.804687373158,732.384997002872,644.439771425963,754.433337056372,848.842886735796,686.172904917638,822.529558439142,641.661218578164,609.293449447397,552.718636645896,621.047363642557,896.816147989376,773.259796104779,731.823859199453,807.510890019034,871.370320496906,924.731523945114,993.10487793688,934.318586619144,621.803145893228,512.140173352223,503.69079975143,546.558960645164,865.789865525314,981.790202248021,943.177039321887,595.864944701203,932.664331792394,841.423586204745,897.362478642154,958.021818555238,969.843029664129,900.323562597372,839.90665679364,899.447407603207,786.286139043341,807.266018920457,902.489581628064,941.871511731664,946.208439291623,872.387643174376,862.128390924256,917.022991536761,924.725251101801,865.258249582297,895.246553350291,804.636268833487,773.714246966177,786.417550050287,936.213092105475,876.278679724678,875.146346741644,820.467197107859,199.838945951697,716.032558932387,688.043401308372,494.890098580788,323.588373226289,339.746811513925,925.357113165805,879.424443476216,863.107124342183,832.914757889503,834.901590275487,915.529543370521,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,999.932670808958,0.103616813294233,0.103616813294233,911.092827605148,348.043635202064,395.196643359646,0.103616813294233,305.991069359044,952.700217785913,0.103616813294233,675.107857032904,630.269632652743,0.103616813294233,0.103616813294233,0.103616813294233,166.650502486511,0.103616813294233,0.103616813294233,153.061969058804,234.667438089281,160.138334649309,233.800924183035,310.765576485393,284.800738782861,0.103616813294233,0.103616813294233,182.609869249196,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,179.338982507098,128.628424129361,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,102.820220674354,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,112.586299609455,0.103616813294233,0.103616813294233,0.103616813294233,99.3378162279586,207.45614977371,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,230.312859778949,608.245545591531,162.896973113185,284.60168688675,227.083241415284,223.716028143944,271.045630394969,307.612241214663,370.324035180481,336.697496824228,456.993702653436,255.044641291635,381.111271014008,425.16385967967,295.884834087153,356.524561528306,494.309772325804,423.743721435575,471.339500351095,441.144647058447,512.417317857548,406.920751151533,580.689515480964,524.849637297533,574.779601350723,298.04628177834,195.53498841202,365.670903218318,532.506299582512,930.509726176621,538.374084458683,298.061071827088,406.518360742952,242.663732908868,347.082647060705,408.248168386981,206.035491341996,160.805365072768,119.155926920691,137.359295597469,666.140717511361,528.45145112907,161.293088310605,122.800584944737,275.783417417338,224.490817538912,285.434262086855,170.893605769954,127.443810546097,98.6546380895843,214.399330924983,255.914344898111,263.169428407632,278.626031253306,343.182650629905,377.440098002752,0.103616813294233,158.68915846528,0.103616813294233,342.041947805015,422.786572228835,192.577905814304,256.729988455089,238.679494244764,357.36773831275,225.391893037986,409.156763194126,524.471555798565,462.010473230635,478.06587420778,493.980564983198,633.289376311521,503.345822570755,566.368042342972,478.690398912275,651.378191615388,569.140552275413,623.512945938234,750.836600447747,684.823583999641,975.808080243435,734.409503431356,693.757749736096,648.726753097808,0.103616813294233,0.103616813294233,0.103616813294233,222.958528070897,0.103616813294233,204.74222689982,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,421.757877236965,484.10151943145,719.165329250687,332.478058656757,243.920050925266,588.249458123609,701.492436727993,758.883914732292,661.620350156414,964.029282352677,814.427281440477,579.110694247581,840.445318535593,275.710399519443,333.882116135788,258.752488947281,308.620033794915,269.970154727632,339.571570085061,543.379560897324,599.522284847746,531.637027551027,718.185274412656,581.863044849281,662.436117886306,720.082023109942,660.062010650117,745.579456606419,612.131178093115,697.900043447439,495.28239104365,551.002137093975,564.677205485334,319.055073638515,352.655886775494,546.415926439624,463.773602400352,414.399645610139,401.753721364966,470.652530833592,478.322713550586,525.706426208117,670.014943172218,920.582704122367,407.489240025345,432.202703160117,426.870824517162,376.138702931931,435.110946925672,431.557776114685,795.291466300386,737.455157480682,759.555699078299,825.223046158769,707.770431780043,0.103616813294233,0.103616813294233,0.103616813294233,596.6206626201,683.857362604684,725.811361482605,831.684725261269,661.536719251437,771.977666892068,641.858885550559,395.250494842979,174.899418216965,0.103616813294233,744.676282302186,811.316338083858,730.133958491649,794.164717850743,987.329363023648,895.804687373158,732.384997002872,644.439771425963,754.433337056372,848.842886735796,686.172904917638,822.529558439141,641.661218578164,609.293449447397,552.718636645896,621.047363642557,896.816147989376,773.259796104779,731.823859199453,807.510890019033,871.370320496906,924.731523945114,993.104877936879,934.318586619144,621.803145893227,512.140173352223,503.69079975143,546.558960645164,865.789865525314,981.790202248022,943.177039321887,595.864944701203,932.664331792394,841.423586204745,897.362478642154,958.021818555238,969.843029664129,900.323562597372,839.90665679364,899.447407603207,786.286139043341,807.266018920457,902.489581628063,941.871511731665,946.208439291623,872.387643174376,862.128390924256,917.022991536761,924.725251101801,865.258249582297,895.246553350291,804.636268833487,773.714246966177,786.417550050287,936.213092105475,876.278679724678,875.146346741644,820.467197107859,199.838945951697,716.032558932387,688.043401308372,494.890098580788,323.588373226289,339.746811513925,925.357113165805,879.424443476217,863.107124342183,832.914757889502,834.901590275487,915.529543370521,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive803_field7":[-666644.858881341,331662.268195974,330380.584240013,-666685.42334435,-166837.315248664,-166687.195813856,330841.095052828,-166719.86561181,-666570.009301726,82459.313497932,-416822.360262012,-416701.382408731,82589.7076589808,330993.077528485,82976.5947544515,-42108.6476620586,207579.343022419,82739.5265630797,-41672.6150950203,-104476.272244824,-41828.6919356359,20365.31553923,20728.134963052,50988.1614426059,207472.640705751,125882.405340609,20183.1742557873,83444.8529767671,145070.930623753,117016.324046815,145078.399487969,69672.1734798989,43836.6251567013,-47721.027451888,12719.1900500618,207265.219869395,149115.788125288,122846.618925913,211423.253401772,152733.102151558,91654.0609241488,330741.82946891,34208.1806964177,226517.029100162,75172.2275620858,88549.253971852,202639.097239845,330756.322046254,274206.930054122,260810.569481924,167839.997429999,331128.483978951,15582.5160935856,176562.446100037,276653.082856632,61558.6285598597,35267.1009013365,-49372.1954573144,57646.7325658013,147403.587823031,197082.221300786,256205.61750637,171723.501465173,122559.098470952,144588.710515756,237070.928733541,331072.584922798,96644.2812431935,331422.112747385,136523.291775075,137602.841327176,331045.996418487,230260.524622709,189461.538867224,181917.945341345,212758.298489716,207583.577879195,258892.341416699,183795.181805133,105950.489609855,154277.90460667,83246.6708738755,171349.232120318,176471.178763857,331370.271974236,256301.058943049,331072.379237069,279796.355660197,284423.22618002,331077.22747567,274384.613175082,288532.153076512,240200.361450993,-104179.435280046,-416683.364592238,-35611.7500217017,-138535.743050772,-90943.6727160439,-89608.4049609507,-131466.109054391,-164586.043100412,-211243.702451329,-174193.426283155,-291643.045714707,-108247.683928556,-229138.832165154,-260683.041660091,-143588.14645985,-195822.792045483,-309332.93874152,-252340.670888433,-294822.424561964,-260467.999403138,-333342.161256809,-235190.047375454,-384301.069089683,-337412.527146723,-374695.771690759,-134989.452009038,-54639.8717513278,-211342.641720913,-354183.414745029,-666605.647730847,-339319.602785857,-138091.658824982,-226002.784223859,-90906.3224267071,-176583.919858581,-220899.639832265,-63596.7552544996,-28402.2258138883,10960.2260900684,-7029.53952051962,-451611.384519673,-334614.610667014,2047.80159967378,119.265310214158,-98257.1847216027,-58484.0264701741,-111330.217249459,-6911.86945363409,9465.43330721959,60178.9057413238,-46549.0699682097,-76135.3013049649,-97612.3617043746,-115133.856218995,-168076.515152603,-183942.291210975,93167.6998448475,33152.9291665057,105483.720523466,-157996.864397778,-224830.845947427,-21808.027490222,-67125.2352419639,-57471.3521234765,-154393.038010717,5569.4741282142,-217625.264226809,-314085.891619134,-262822.088482824,-281183.906745656,-284783.776686735,-397819.256835298,-284546.431971397,-344696.112388209,-268201.266644511,-420694.363092721,-341779.408201849,-393923.494041053,-497558.279197074,-442711.575304318,-666595.946359673,-476688.932136,-446198.965106157,-404393.008749725,60915.3311967707,65025.4269590985,115188.336093964,47958.1603660065,126366.998467074,-18668.2798212123,208075.325542717,118187.483028815,219411.978252359,180233.090214085,168425.36342046,235318.50693073,145665.365074139,206463.821689864,270847.65297354,267895.560029211,331452.942594052,289632.697444663,268349.362548232,-235069.183592943,-291044.496111526,-458270.017317594,-123375.338459919,-41672.4986566404,-374453.48841168,-446827.252418544,-493515.195725683,-411488.936105143,-666578.813278683,-533370.250677637,-344562.603804019,-564468.594564097,-78040.6793604184,-130573.782303068,-58536.0259330819,53974.5411608055,15735.7633432685,20836.3470518323,-339918.154867905,-388049.351084197,-326763.540270869,-483898.075406463,-364864.932201284,-439946.227590132,-491622.359491098,-433569.762886188,-500456.048191421,-367534.375030575,-416669.299475791,-270669.848078436,-318091.409987316,-323306.929044407,-104151.513105153,-135502.840215757,-291660.638842193,-229304.44505958,-186671.529210672,-180096.867224861,-229133.459752553,-248042.58847387,-318389.921240151,-451575.561422288,-666590.015570333,-191810.536537907,-216443.761267878,-204104.14605321,-176247.813842054,-222925.500119684,-224448.792834201,-559936.05572532,-510061.973212591,-541662.429323359,-578229.092915868,-491721.481729182,330696.880013972,282669.871692499,242431.073636443,-402272.61004401,-479157.984348297,-510538.706870959,-596574.966943361,-456586.844086891,-545365.583352464,-436421.331997541,-220312.60198566,-32062.1786281302,332028.819448922,-475032.354004256,-522790.997517989,-457844.913754005,-512802.566621153,-666622.591022815,-595750.299415272,-452348.070901666,-386604.227073269,-474142.258997355,-541654.178277692,-417530.01416939,-526470.819992988,-375664.760080555,-353390.862905987,-302735.5714174,-370791.017101262,-590701.456583934,-479166.288548986,-447978.355661146,-510478.428041553,-563873.70203283,-604169.340804539,-666621.496835441,-616276.499365179,-354177.789319971,-266625.89062051,-265230.667725361,-303714.487251402,-568018.771190859,-666589.8435884,-627164.011511991,-335997.914106661,-623665.044298613,-560108.112045337,-609329.037876602,-666596.643090315,-666605.900535716,-615974.912751823,-569358.037549469,-604704.193865983,-522884.471391052,-547383.681395058,-622009.071502349,-666557.081680554,-666641.249417762,-600281.817544189,-597227.956128277,-622758.800409506,-622992.006561139,-573177.469791076,-622432.759627864,-549041.238608951,-527276.065995583,-542411.234234318,-666606.277381959,-618081.507663733,-613108.412172053,-567230.310704108,-7663.81187571081,-472525.16209642,-453595.185135503,-265833.276655292,-130958.09704243,-149813.780698888,-666599.687547161,-625622.786714643,-615785.148282073,-593979.599929298,-604166.798250142,-666629.021727825,190510.616189289,270301.477399264,270872.811507229,233766.711550295,270346.185021519,331253.817864578,-666644.858881341,331662.268195974,330380.584240013,-666685.42334435,-166837.315248664,-166687.195813856,330841.095052828,-166719.86561181,-666570.009301726,82459.313497932,-416822.360262012,-416701.382408731,82589.7076589808,330993.077528485,82976.5947544515,-42108.6476620586,207579.343022419,82739.5265630797,-41672.6150950203,-104476.272244824,-41828.6919356359,20365.31553923,20728.134963052,50988.1614426059,207472.640705751,125882.405340609,20183.1742557873,83444.8529767671,145070.930623753,117016.324046815,145078.399487969,69672.1734798989,43836.6251567013,-47721.027451888,12719.1900500618,207265.219869395,149115.788125288,122846.618925913,211423.253401772,152733.102151558,91654.0609241488,330741.82946891,34208.1806964177,226517.029100162,75172.2275620858,88549.253971852,202639.097239845,330756.322046254,274206.930054122,260810.569481924,167839.997429999,331128.483978951,15582.5160935856,176562.446100037,276653.082856632,61558.6285598597,35267.1009013365,-49372.1954573144,57646.7325658013,147403.587823031,197082.221300786,256205.61750637,171723.501465173,122559.098470952,144588.710515756,237070.928733541,331072.584922798,96644.2812431934,331422.112747385,136523.291775075,137602.841327176,331045.996418487,230260.524622709,189461.538867224,181917.945341345,212758.298489716,207583.577879195,258892.341416699,183795.181805133,105950.489609855,154277.90460667,83246.6708738755,171349.232120318,176471.178763857,331370.271974236,256301.058943049,331072.379237069,279796.355660197,284423.22618002,331077.22747567,274384.613175082,288532.153076512,240200.361450993,-104179.435280046,-416683.364592237,-35611.7500217017,-138535.743050772,-90943.6727160439,-89608.4049609506,-131466.109054391,-164586.043100412,-211243.70245133,-174193.426283155,-291643.045714707,-108247.683928556,-229138.832165154,-260683.041660091,-143588.14645985,-195822.792045483,-309332.93874152,-252340.670888433,-294822.424561964,-260467.999403138,-333342.161256809,-235190.047375454,-384301.069089683,-337412.527146723,-374695.771690759,-134989.452009038,-54639.8717513278,-211342.641720913,-354183.414745029,-666605.647730847,-339319.602785857,-138091.658824982,-226002.784223859,-90906.3224267071,-176583.919858581,-220899.639832265,-63596.7552544996,-28402.2258138883,10960.2260900684,-7029.53952051962,-451611.384519673,-334614.610667014,2047.80159967378,119.265310214158,-98257.1847216027,-58484.0264701741,-111330.217249459,-6911.86945363409,9465.43330721959,60178.9057413238,-46549.0699682097,-76135.3013049649,-97612.3617043746,-115133.856218995,-168076.515152603,-183942.291210975,93167.6998448475,33152.9291665057,105483.720523466,-157996.864397778,-224830.845947427,-21808.027490222,-67125.2352419639,-57471.3521234765,-154393.038010717,5569.4741282142,-217625.264226809,-314085.891619134,-262822.088482824,-281183.906745656,-284783.776686735,-397819.256835298,-284546.431971397,-344696.112388209,-268201.266644511,-420694.363092721,-341779.408201849,-393923.494041053,-497558.279197074,-442711.575304318,-666595.946359673,-476688.932136,-446198.965106157,-404393.008749725,60915.3311967707,65025.4269590985,115188.336093964,47958.1603660065,126366.998467074,-18668.2798212123,208075.325542717,118187.483028815,219411.978252359,180233.090214085,168425.36342046,235318.50693073,145665.365074139,206463.821689864,270847.65297354,267895.560029211,331452.942594052,289632.697444663,268349.362548232,-235069.183592942,-291044.496111526,-458270.017317594,-123375.338459919,-41672.4986566404,-374453.48841168,-446827.252418544,-493515.195725683,-411488.936105143,-666578.813278683,-533370.250677637,-344562.603804019,-564468.594564097,-78040.6793604184,-130573.782303068,-58536.0259330819,53974.5411608055,15735.7633432685,20836.3470518323,-339918.154867905,-388049.351084197,-326763.540270869,-483898.075406463,-364864.932201284,-439946.227590132,-491622.359491098,-433569.762886188,-500456.048191421,-367534.375030575,-416669.299475791,-270669.848078436,-318091.409987316,-323306.929044407,-104151.513105153,-135502.840215757,-291660.638842193,-229304.44505958,-186671.529210672,-180096.867224861,-229133.459752553,-248042.58847387,-318389.921240151,-451575.561422288,-666590.015570333,-191810.536537907,-216443.761267878,-204104.14605321,-176247.813842054,-222925.500119684,-224448.792834201,-559936.05572532,-510061.973212591,-541662.429323359,-578229.092915868,-491721.481729182,330696.880013972,282669.871692499,242431.073636443,-402272.61004401,-479157.984348297,-510538.706870959,-596574.966943361,-456586.844086891,-545365.583352464,-436421.331997541,-220312.60198566,-32062.1786281302,332028.819448922,-475032.354004256,-522790.997517989,-457844.913754005,-512802.566621153,-666622.591022815,-595750.299415272,-452348.070901666,-386604.227073269,-474142.258997355,-541654.178277692,-417530.01416939,-526470.819992988,-375664.760080555,-353390.862905987,-302735.5714174,-370791.017101262,-590701.456583934,-479166.288548986,-447978.355661146,-510478.428041553,-563873.70203283,-604169.340804539,-666621.496835441,-616276.499365179,-354177.789319971,-266625.89062051,-265230.667725361,-303714.487251402,-568018.771190859,-666589.8435884,-627164.011511991,-335997.914106661,-623665.044298613,-560108.112045337,-609329.037876602,-666596.643090315,-666605.900535716,-615974.912751823,-569358.037549469,-604704.193865983,-522884.471391052,-547383.681395058,-622009.071502349,-666557.081680554,-666641.249417762,-600281.817544189,-597227.956128277,-622758.800409506,-622992.006561139,-573177.469791076,-622432.759627864,-549041.238608951,-527276.065995583,-542411.234234318,-666606.277381959,-618081.507663733,-613108.412172053,-567230.310704108,-7663.81187571081,-472525.16209642,-453595.185135503,-265833.276655292,-130958.09704243,-149813.780698888,-666599.687547161,-625622.786714643,-615785.148282073,-593979.599929298,-604166.798250142,-666629.021727825,190510.616189289,270301.477399264,270872.811507229,233766.711550295,270346.185021519,331253.817864578,-666644.858881341,331662.268195974,330380.584240013,-666685.42334435,-166837.315248664,-166687.195813856,330841.095052828,-166719.86561181,-666570.009301726,82459.313497932,-416822.360262012,-416701.382408731,82589.7076589808,330993.077528485,82976.5947544515,-42108.6476620586,207579.343022419,82739.5265630797,-41672.6150950203,-104476.272244824,-41828.6919356359,20365.31553923,20728.134963052,50988.1614426059,207472.640705751,125882.405340609,20183.1742557873,83444.8529767671,145070.930623753,117016.324046815,145078.399487969,69672.1734798989,43836.6251567013,-47721.027451888,12719.1900500618,207265.219869395,149115.788125288,122846.618925913,211423.253401772,152733.102151558,91654.0609241488,330741.82946891,34208.1806964177,226517.029100162,75172.2275620858,88549.253971852,202639.097239845,330756.322046254,274206.930054122,260810.569481924,167839.997429999,331128.483978951,15582.5160935856,176562.446100037,276653.082856632,61558.6285598597,35267.1009013365,-49372.1954573144,57646.7325658013,147403.587823031,197082.221300786,256205.61750637,171723.501465173,122559.098470952,144588.710515756,237070.928733541,331072.584922798,96644.2812431935,331422.112747385,136523.291775075,137602.841327176,331045.996418487,230260.524622709,189461.538867224,181917.945341345,212758.298489716,207583.577879195,258892.341416699,183795.181805133,105950.489609855,154277.90460667,83246.6708738755,171349.232120318,176471.178763857,331370.271974236,256301.058943049,331072.379237069,279796.355660197,284423.22618002,331077.22747567,274384.613175082,288532.153076512,240200.361450993,-104179.435280046,-416683.364592238,-35611.7500217017,-138535.743050772,-90943.6727160439,-89608.4049609507,-131466.109054391,-164586.043100412,-211243.702451329,-174193.426283155,-291643.045714707,-108247.683928556,-229138.832165154,-260683.041660091,-143588.14645985,-195822.792045483,-309332.93874152,-252340.670888433,-294822.424561964,-260467.999403138,-333342.161256809,-235190.047375454,-384301.069089683,-337412.527146723,-374695.771690759,-134989.452009038,-54639.8717513278,-211342.641720913,-354183.414745029,-666605.647730847,-339319.602785857,-138091.658824982,-226002.784223859,-90906.3224267071,-176583.919858581,-220899.639832265,-63596.7552544996,-28402.2258138883,10960.2260900684,-7029.53952051962,-451611.384519673,-334614.610667014,2047.80159967378,119.265310214158,-98257.1847216027,-58484.0264701741,-111330.217249459,-6911.86945363409,9465.43330721959,60178.9057413238,-46549.0699682097,-76135.3013049649,-97612.3617043746,-115133.856218995,-168076.515152603,-183942.291210975,93167.6998448475,33152.9291665057,105483.720523466,-157996.864397778,-224830.845947427,-21808.027490222,-67125.2352419639,-57471.3521234765,-154393.038010717,5569.4741282142,-217625.264226809,-314085.891619134,-262822.088482824,-281183.906745656,-284783.776686735,-397819.256835298,-284546.431971397,-344696.112388209,-268201.266644511,-420694.363092721,-341779.408201849,-393923.494041053,-497558.279197074,-442711.575304318,-666595.946359673,-476688.932136,-446198.965106157,-404393.008749725,60915.3311967707,65025.4269590985,115188.336093964,47958.1603660065,126366.998467074,-18668.2798212123,208075.325542717,118187.483028815,219411.978252359,180233.090214085,168425.36342046,235318.50693073,145665.365074139,206463.821689864,270847.65297354,267895.560029211,331452.942594052,289632.697444663,268349.362548232,-235069.183592943,-291044.496111526,-458270.017317594,-123375.338459919,-41672.4986566404,-374453.48841168,-446827.252418544,-493515.195725683,-411488.936105143,-666578.813278683,-533370.250677637,-344562.603804019,-564468.594564097,-78040.6793604184,-130573.782303068,-58536.0259330819,53974.5411608055,15735.7633432685,20836.3470518323,-339918.154867905,-388049.351084197,-326763.540270869,-483898.075406463,-364864.932201284,-439946.227590132,-491622.359491098,-433569.762886188,-500456.048191421,-367534.375030575,-416669.299475791,-270669.848078436,-318091.409987316,-323306.929044407,-104151.513105153,-135502.840215757,-291660.638842193,-229304.44505958,-186671.529210672,-180096.867224861,-229133.459752553,-248042.58847387,-318389.921240151,-451575.561422288,-666590.015570333,-191810.536537907,-216443.761267878,-204104.14605321,-176247.813842054,-222925.500119684,-224448.792834201,-559936.05572532,-510061.973212591,-541662.429323359,-578229.092915868,-491721.481729182,330696.880013972,282669.871692499,242431.073636443,-402272.61004401,-479157.984348297,-510538.706870959,-596574.966943361,-456586.844086891,-545365.583352464,-436421.331997541,-220312.60198566,-32062.1786281302,332028.819448922,-475032.354004256,-522790.997517989,-457844.913754005,-512802.566621153,-666622.591022815,-595750.299415272,-452348.070901666,-386604.227073269,-474142.258997355,-541654.178277692,-417530.01416939,-526470.819992988,-375664.760080555,-353390.862905987,-302735.5714174,-370791.017101262,-590701.456583934,-479166.288548986,-447978.355661146,-510478.428041553,-563873.70203283,-604169.340804539,-666621.496835441,-616276.499365179,-354177.789319971,-266625.89062051,-265230.667725361,-303714.487251402,-568018.771190859,-666589.8435884,-627164.011511991,-335997.914106661,-623665.044298613,-560108.112045337,-609329.037876602,-666596.643090315,-666605.900535716,-615974.912751823,-569358.037549469,-604704.193865983,-522884.471391052,-547383.681395058,-622009.071502349,-666557.081680554,-666641.249417762,-600281.817544189,-597227.956128277,-622758.800409506,-622992.006561139,-573177.469791076,-622432.759627864,-549041.238608951,-527276.065995583,-542411.234234318,-666606.277381959,-618081.507663733,-613108.412172053,-567230.310704108,-7663.81187571081,-472525.16209642,-453595.185135503,-265833.276655292,-130958.09704243,-149813.780698888,-666599.687547161,-625622.786714643,-615785.148282073,-593979.599929298,-604166.798250142,-666629.021727825,190510.616189289,270301.477399264,270872.811507229,233766.711550295,270346.185021519,331253.817864578],"Archive803_field8":[94184.9999999999,94185,94185.0000000002,94184.9999999997,94184.9999999999,94184.9999999999,94185.0000000005,94184.9999999999,94184.9999999999,94185.0000000001,94185.0000000001,94184.9999999999,94185.0000000002,94185.0000000004,94185,94184.9999999999,94185.0000000002,94185,94184.9999999999,94184.9999999998,94185.0000000001,94185,94184.9999999999,94185,94185.0000000001,94185.0000000001,94185,94185,94185.0000000001,94185.0000000002,94185,94185.0000000001,94185.0000000001,94184.9999999998,94185,94185.0000000004,94185.0000000003,94185.0000000003,94185.0000000003,94185.0000000003,94185.0000000002,94185.0000000004,94185.0000000001,94185.0000000004,94185.0000000003,94185.0000000002,94185.0000000003,94185.0000000004,94185.0000000003,94185.0000000004,94185.0000000002,94185.0000000003,94185.0000000001,94185.0000000003,94185.0000000003,94185.0000000002,94185.0000000001,94184.9999999998,94185.0000000001,94185.0000000003,94185.0000000004,94185.0000000004,94185.0000000003,94185.0000000002,94185.0000000002,94185.0000000004,94185.0000000003,94185.0000000001,94185.0000000003,94185.0000000002,94185.0000000001,94185.0000000004,94185.0000000003,94185.0000000002,94185.0000000003,94185.0000000004,94185.0000000002,94185.0000000003,94185.0000000003,94185.0000000001,94185.0000000002,94185,94185.0000000001,94185.0000000001,94185.0000000001,94185.0000000002,94185.0000000004,94185.0000000004,94185.0000000004,94185.0000000004,94185.0000000003,94185.0000000004,94185.0000000003,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999998,94185.0000000001,94185.0000000001,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000002,94184.9999999998,94184.9999999999,94184.9999999999,94185.0000000001,94184.9999999998,94185.0000000001,94184.9999999999,94184.9999999998,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185,94184.9999999999,94184.9999999998,94184.9999999999,94185,94185.0000000001,94184.9999999999,94185.0000000001,94184.9999999999,94185.0000000001,94185.0000000001,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94185.0000000001,94185,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999998,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999999,94185.0000000001,94185,94185.0000000001,94185,94185.0000000001,94184.9999999999,94185,94185,94185,94185,94185,94185.0000000001,94185,94185,94185,94185,94185.0000000002,94185.0000000001,94185,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999997,94184.9999999998,94184.9999999999,94184.9999999999,94185,94185,94185,94184.9999999999,94184.9999999999,94185.0000000001,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94185.0000000001,94185.0000000004,94185.0000000004,94185.0000000004,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94185,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999998,94185.0000000001,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94185.0000000001,94185.0000000001,94185.0000000001,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94185.0000000001,94185.0000000001,94184.9999999998,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94185.0000000002,94185.0000000001,94185.0000000001,94185.0000000003,94185.0000000003,94184.9999999998,94185,94185.0000000001,94184.9999999998,94185.0000000001,94185.0000000001,94185.0000000003,94185.0000000001,94184.9999999999,94185,94184.9999999999,94185,94185,94185.0000000003,94184.9999999999,94185,94185.0000000001,94185,94184.9999999999,94185.0000000001,94185,94185,94185,94185,94185,94185,94184.9999999999,94185,94185.0000000001,94185,94185,94184.9999999999,94184.9999999999,94185,94184.9999999999,94185.0000000001,94185.0000000001,94185,94185.0000000001,94185.0000000001,94185,94185.0000000004,94184.9999999999,94185.0000000002,94185,94185,94185.0000000002,94185.0000000004,94185.0000000003,94185.0000000003,94185,94185.0000000002,94185,94185.0000000001,94185.0000000003,94185,94185,94185,94185,94185,94185.0000000001,94185.0000000002,94185.0000000002,94185,94185.0000000001,94185.0000000002,94185.0000000003,94185,94185.0000000001,94185,94185.0000000001,94185.0000000003,94185.0000000002,94185.0000000001,94185.0000000002,94185.0000000002,94185.0000000001,94185.0000000002,94185.0000000001,94185,94185,94184.9999999999,94185,94185.0000000001,94185,94185,94185.0000000003,94185.0000000002,94185.0000000002,94185.0000000002,94185.0000000001,94185.0000000002,94185.0000000001,94184.9999999998,94185.0000000001,94185,94185,94185,94185,94185,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94185,94184.9999999998,94185,94185,94185,94184.9999999998,94185,94185,94185,94184.9999999999,94185,94184.9999999998,94185,94184.9999999999,94185,94185,94184.9999999999,94185.0000000001,94184.9999999999,94185,94184.9999999998,94185,94185,94184.9999999999,94185,94185,94184.9999999998,94184.9999999999,94185,94185,94185,94184.9999999999,94185,94184.9999999999,94185,94185,94185,94185,94185,94185,94185,94185,94185,94184.9999999998,94185,94185.0000000001,94185,94185,94185,94185,94185,94185,94185,94184.9999999999,94185,94185,94185,94184.9999999998,94184.9999999999,94184.9999999999,94185,94184.9999999998,94185,94185,94185,94184.9999999999,94185,94185.0000000002,94185,94184.9999999999,94184.9999999998,94184.9999999999,94185,94184.9999999999,94185,94185,94185,94185,94185,94185,94185,94185,94185,94185,94185,94184.9999999999,94185,94185,94185,94185,94185,94185,94184.9999999998,94184.9999999999,94185,94185,94184.9999999999,94185,94185,94185,94185,94184.9999999999,94184.9999999999,94185,94185.0000000001,94185,94184.9999999999,94185,94184.9999999999,94185,94184.9999999999,94185,94185,94184.9999999998,94184.9999999999,94184.9999999999,94185,94185,94184.9999999999,94185,94185,94184.9999999999,94185,94185,94184.9999999999,94184.9999999999,94185,94184.9999999999,94185,94185,94185,94185.0000000001,94185,94185,94185,94184.9999999999,94185,94185,94185,94185,94185,94185,94184.9999999998,94185,94185.0000000001,94184.9999999999,94184.9999999999,94185.0000000004,94185.0000000003,94185.0000000002,94185,94184.9999999999,94185,94184.9999999999,94185,94185,94185,94185,94185,94185,94185,94185,94184.9999999999,94184.9999999999,94184.9999999999,94185,94185,94184.9999999999,94185,94184.9999999998,94185,94185,94185,94185,94185,94184.9999999999,94185,94185.0000000001,94185,94185,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999998,94184.9999999999,94185,94185,94184.9999999999,94185,94185.0000000001,94185,94185,94184.9999999997,94185,94185,94184.9999999998,94184.9999999998,94185,94184.9999999999,94185.0000000001,94185,94185,94185,94185.0000000001,94184.9999999999,94185,94185,94185,94185,94185,94185,94185,94184.9999999998,94185,94184.9999999999,94185.0000000001,94185,94184.9999999998,94185,94185,94185,94185,94185,94185,94185.0000000001,94185,94185,94185,94185.0000000001,94184.9999999999,94185.0000000001,94185.0000000001,94185.0000000001,94185.0000000001,94185.0000000002,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94185,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999998,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999998,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999998,94184.9999999998,94184.9999999999,94184.9999999998,94184.9999999999,94185,94185,94184.9999999999,94185,94184.9999999999,94185,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94185,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185,94185,94185,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185,94184.9999999999,94184.9999999998,94184.9999999999],"Archive803_field9":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive803_field10":[0,-316.474146200297,503.57071961133,0,345.196076953906,0,1931.97194461486,0,0,732.199715562906,128.425001192588,138.640681628294,1043.70257614049,1620.93832823169,-428.710176367383,-445.057877007884,754.351854488469,-135.055285639374,0,447.96126024124,-1126.41930499716,-308.538991361322,-556.215894849367,-384.087846951577,-73.3703659639418,-93.8070376089278,182.689163164246,-323.408409370419,424.242467445748,702.21851735665,-313.139004144329,124.966353970007,467.426984936476,651.737891171293,866.36191039382,1334.28054048236,1090.49378385677,1258.82231587348,1143.68787632722,1368.14367233009,1015.79059821727,1833.19050456505,1483.93112076928,1450.47235256302,1294.59572524929,1319.2071624868,1370.14153180752,1730.03485412115,1504.36054524629,1525.76871896216,836.427952706813,1276.52265295609,1376.50717512087,1265.41710075406,1390.38185788197,1274.44779572894,1096.34250548358,543.199687493732,680.927429497791,1193.5350056429,1353.80440904151,1607.43542094519,1301.61861744097,1159.94022845857,1085.53437490523,1334.75042685498,1491.59289338882,863.027221433916,1384.20860882972,770.552246432,912.312197636849,1808.3993329192,1433.33068532401,1146.04512216993,1214.162466593,1405.31089259141,844.517331230292,1427.85818486071,925.96188711779,227.020650415823,537.398946310913,-873.76849569168,84.4392005764783,457.36628120098,546.386964599566,729.407342744721,1897.53010523549,1692.9336766786,1649.89758315201,1644.50927416075,1207.70955089026,1459.81132120873,1180.66695185911,0,0,35.2446994454009,324.764386328267,429.374063249831,346.602797619482,304.032672704783,256.816127822861,204.92569279132,315.65681008355,0,469.644658311672,0,173.404550861716,345.11932645344,254.663239780987,166.981913688989,196.593707410798,152.618368063815,216.168658234971,131.587367595494,224.874887184861,122.502327450974,142.062874991283,143.533301351245,424.468427018859,315.180912726715,212.582371516704,0,0,172.121968091393,398.723771000262,266.144923151962,594.936439498303,335.268402655339,280.404913552514,851.441975274674,1117.51560178638,1153.60507737611,2150.9572356838,115.981887909493,164.86189895622,667.631569275965,729.517703856889,467.827471431781,493.048257761634,464.370824310011,441.563156786034,612.727173593338,476.982898689825,636.187461156073,429.113712176955,561.142010381223,512.110511817648,359.416272043601,308.437466560898,545.868307755295,260.771347812186,383.594832852166,359.233466030141,270.583615608356,229.93563946591,320.296767993078,329.240699039981,289.507260512293,27.8952545859533,282.29836325434,203.258379979019,239.794184171656,222.461831361247,219.569677325988,161.341942504264,206.85652245998,185.697597907195,225.678464984006,155.046413493528,180.874939807109,164.651097925592,132.447495065428,147.504392509298,0,132.127882236684,143.79891008447,151.52560036705,20.8911062683794,-520.207108076723,-148.266644961375,-193.014835099223,-312.130122126571,-787.934539940274,-730.021941871797,-717.433356376924,-184.050628222924,-168.313374436979,-458.620372890033,250.463794571754,-869.609181864295,-497.537026137146,-560.127381580694,-202.805359488546,1008.69919108186,536.478574211048,108.728838949854,261.32145773858,207.530810590401,128.264634332135,224.778524154688,0,168.382904575287,137.054658256346,123.979406323177,143.081085130577,0,106.814353384392,169.704529609436,114.584621966409,302.844680703282,268.494414150634,242.868782059857,-766.546786989206,-752.769386310274,-1075.62829214954,180.254798002984,155.968735150321,192.185466151569,129.581049446656,176.017619577245,138.52107878778,117.819426026237,146.3270132787,130.943727707385,150.44251765815,0,193.632355892706,173.241927005963,151.067244961949,0,188.764692142646,0,155.20590788478,162.003286677754,176.154346226696,0,167.235038318347,199.981394018438,124.417553476634,0,215.928187949223,219.985857429584,181.094747291676,290.784568801557,234.23295409268,249.628308520537,92.3516780650689,105.160303759441,0,100.321642781067,91.908734514567,1912.00754279073,1679.6884666989,1543.87440678483,119.13486749216,0,84.5751821648977,93.6020485495037,101.550950219371,84.7028721107382,105.19299967003,261.400691913872,1083.31904657418,78.4898288862464,116.407036424717,90.677113244356,107.449126530313,101.857489572393,0,90.6866985553462,84.8352509086712,122.21342035348,93.8371270736634,0,102.586073100216,75.467367992097,107.496155029365,115.258186686186,113.430800514107,138.067296842382,74.9532085974673,0,81.1937366094496,74.3493542490747,72.0860403926243,0,0,70.6224415209556,0,116.613784267228,140.430038748399,140.357699080772,85.6096412071404,0,68.6614979387839,106.161039349116,81.7502580173717,108.745973674091,103.774385993271,0,0,112.56990498841,116.728242418804,105.863308309655,124.588489706077,121.578822478235,112.918241122888,0,0,114.961905231437,115.550622218829,105.074601692774,95.3342282025734,98.0885669545319,120.674031823764,121.120235805879,122.413453384407,113.582240673248,0,103.314978251327,112.133409937983,113.937883126034,-1268.57283593,139.219701168708,143.057353937424,177.418395780561,346.995305425077,350.227964411877,0,94.6413230560724,90.9339718975463,82.615836533688,0,0,240.571468944435,731.501395965512,207.916741738123,323.835857532718,1094.97899535542,939.31755485272,0,-317.279229079513,502.582825695643,0,345.506296736564,0,1931.11130624984,0,0,731.194494406993,128.488738426697,138.709548307497,1042.85381254731,1620.39013832454,-429.079209268771,-445.7809190098,753.297008053726,-137.678562893018,0,448.33308521571,-1128.27274638738,-506.723062237111,-418.216869357557,-472.838325041789,-74.2150471120252,-94.5814425086407,33.0524474211217,-324.485258583704,423.057751659068,700.806865029306,-313.780512711882,123.065478172015,463.959188932586,652.049621359906,749.731084953377,1333.81481047701,1089.71954175737,1258.48543476087,1142.90413358099,1367.81731261562,1013.02377130976,1832.40976848157,1496.14231883991,1449.75179181387,1296.0168330725,1321.15401823932,1370.00489306166,1729.3567100646,1503.8437681096,1525.12738872724,835.512806263728,1275.716073297,1413.47704481685,1264.65170965743,1389.77624252711,1277.11774434882,1054.46213082456,543.957049441046,677.842119327591,1193.34191111067,1352.97660088403,1606.54095693069,1301.44956323222,1159.65789539377,1084.76381850969,1334.14622125821,1490.95563152239,863.246579077,1383.02211194534,769.272039004565,910.857769111016,1807.45797514245,1432.3742783209,1144.953389088,1213.08583034256,1404.33701950568,843.316295316802,1426.81133937871,924.688838963759,226.445997234773,536.297043811211,-874.249714680047,83.3080812966525,455.969704957142,545.187869601804,728.170519176471,1896.6529679743,1692.03366210647,1648.96724871186,1643.473997206,1206.53072123256,1458.75664036111,1179.53305845978,0,0,35.2240270471546,324.88479448555,429.593632991434,346.793696194708,304.123758057333,256.933826863757,205.011432217754,315.87113228888,0,469.836516156999,0,173.481071311889,345.310792086638,254.794794393806,167.060753163018,196.681857187142,152.667652831939,216.282330965413,131.633495505101,224.98798436828,122.537282671998,142.115149057941,143.597972732968,424.816261741644,315.435386411147,212.679249647375,0,0,172.211614403611,398.963947930963,266.315425115496,595.388508491604,335.492051910145,280.60999172871,852.031829095732,1118.97464873592,1052.40609868763,2154.32399394782,116.030459606069,164.940779453756,562.490475351333,676.639779617521,468.067530074872,493.417722656089,464.461904112201,442.312125317379,591.700817535481,442.014293296456,636.825716717599,429.316765058511,561.460277803083,512.636127454006,359.672550697634,308.640889306433,544.732469862592,200.555214378945,381.803206192057,359.549199823029,270.761530618115,230.010848843595,320.392402546887,329.286361401137,289.622929617778,-65.2085188747704,282.484998678358,203.386153711365,239.958934069544,222.602963277418,219.720612487201,161.442122077235,206.985522086183,185.813912109103,225.83481023899,155.138707486702,180.98643947641,164.756245974051,132.535309003855,147.590313859823,0,132.199719129891,143.880704528394,151.615675624003,17.7099467839095,-523.451009407516,-149.514449954964,-338.831621553193,-312.37484893159,-789.564233473998,-730.563631363824,-717.865389968214,-184.898297219127,-169.224704046754,-459.393080728177,249.320621573182,-869.937260303533,-498.164181896238,-560.842867823356,-203.62902658641,1007.45415031378,535.291873035775,107.68788417946,261.508147010193,207.657429299476,128.330558551405,224.834230707402,0,168.479527066887,137.131828631728,124.061103523994,143.163645250957,0,106.861489924238,169.803557296271,114.636385415685,303.013304617672,268.604766484586,242.959328845507,-896.812070872479,-812.663020099782,-977.24342114217,180.355618673696,156.052084833746,192.299973873884,129.647333449263,176.123674657548,138.590747032262,117.878148289829,146.410515352781,131.018536648983,150.522539976107,0,193.742382164207,173.340386990343,151.140568519671,0,188.829599479731,0,155.262989623016,162.070574007618,176.209137630644,0,167.30667013805,200.108940537756,124.470122866711,0,216.055181970124,220.124432719051,181.167550084961,290.991655644854,234.373642813677,249.799556771857,92.3763108566161,105.208088043323,0,100.344859826529,91.9336075267733,1911.14669405658,1678.88145445833,1543.00584857069,119.18296450615,0,84.6096059279964,93.6734830696314,101.602902909046,84.7098217725713,105.227031927199,261.558322698151,1085.43973860194,77.5979574764096,116.466799624637,90.7201992119007,107.494631622993,101.90338582668,0,90.7353675471731,84.8595540689376,122.269512485204,93.8727056046979,0,102.628572764712,75.4847188543869,107.536134611703,115.29040886736,113.443606527117,138.134754978416,74.9694981535331,0,81.2351526536253,74.3727197717808,72.1019353482821,0,0,70.6772888298242,0,116.667831316441,140.492420014994,140.423395278538,85.6316099347481,0,68.6910696620636,106.201900829103,81.8154504788053,108.768062897499,103.8658368054,0,0,112.670368144824,116.757400598146,105.9271392402,124.669488715673,121.622747994131,113.075512982501,0,0,115.046872157826,115.615091560417,105.195419346523,95.4553664270456,98.1062652558979,120.862047686487,121.184059327246,122.482847363567,113.634510243236,0,103.386855466402,112.289606502087,113.95337025202,-1271.72040661093,139.303983821775,143.138013836722,177.502937879081,347.184790489814,350.490040683857,0,94.7327162724613,90.9827351016718,82.6648042897514,0,0,239.531203914556,730.493054958331,206.924889065003,322.862057059897,1094.15662323612,938.378700349358,0,-319.711109489943,499.637650238898,0,345.881154568655,0,1928.51692152935,0,0,732.541108668633,128.564784691342,138.792636293748,1034.17843119059,1618.74472475293,-430.235733189043,-446.380156912083,750.045827330262,-148.667392574631,0,448.749260891661,-1129.92170934404,-695.070666094937,-517.997183733117,-610.757046308007,-76.6083498475927,-96.0521547058138,-235.4543591773,-333.090307510167,420.578815966886,696.69637248026,-315.913020794036,113.310784556964,451.8737013481,652.44903477326,621.928351905819,1332.08781995161,1087.8805121526,1257.7401311475,1140.56897300548,1368.61504181362,994.77716180748,1830.05287507098,1697.44255924043,1447.64487895122,1305.23494792445,1329.51112629766,1369.3419930511,1727.28981069067,1502.33028433218,1523.28795998018,832.438979898551,1273.27295658155,1464.07178339263,1262.13459526248,1387.93900471772,1277.09946172076,1042.38997350164,544.647336615208,670.800381072332,1192.0104227947,1350.75208402381,1603.89310293848,1300.66418782275,1160.75209759851,1082.55005253878,1332.40316181011,1489.049514244,868.674239018099,1379.5003620399,765.914863971121,905.712285958559,1804.63354634056,1429.48482245836,1141.68446445363,1209.97683952036,1401.42261723887,839.75145098991,1423.66501500612,920.901115990802,228.542426375707,532.309523541466,-873.917095299412,80.3932076071369,452.193294011945,541.593138896706,724.322663239315,1894.02232615211,1689.32887928303,1646.17934160766,1640.34734054469,1203.01636526859,1455.59382995972,1176.10850596049,0,0,35.3008491467535,325.037542034257,429.862692057531,347.010740772463,304.245073329551,257.085227528553,205.115431295886,316.134921129254,0,470.085209652415,0,173.577765600121,345.548787846042,254.958763134938,167.157478711067,196.79149166296,152.728665834553,216.422100500228,131.687924965765,225.127984255957,122.579193418861,142.180059346213,143.676715620052,425.248397171472,315.708686029835,212.799457478017,0,0,172.320372551704,399.270415544099,266.525438624594,595.975685807522,335.768233742522,280.861210452114,852.921963765539,1120.55226350608,1027.99529066843,2157.52456116089,116.089213398741,165.036920653789,461.778725338179,632.33595156685,468.360949861386,493.780042779848,464.615102415602,442.953158508111,508.762965238217,356.205586804905,637.645134317095,429.591550645179,561.903697868205,513.261178754946,359.994830427845,308.892793748381,540.524639385696,222.591618786448,375.607784718199,359.933995135788,270.98257060373,230.288027391026,320.500256874916,329.353920893511,289.76256379963,-122.019776658661,282.715139936691,203.540834921649,240.160619857693,222.775533584481,219.903991097354,161.56156022565,207.142766938023,185.953957856778,226.025013995503,155.248322010055,181.120773110304,164.881826921353,132.638124995601,147.691545648796,0,132.283585543662,143.976817452024,151.723333411522,1.46775388266424,-533.076706316147,-159.050260798351,-531.28021718709,-310.155257527332,-790.787160043568,-732.26179198216,-721.920010175669,-187.314577927804,-172.673891747448,-461.638265261634,245.929688250342,-870.423889124239,-500.158314508005,-562.949832309379,-206.097499709295,1003.75534418471,531.752774597115,104.544537432496,261.736804743709,207.812103091275,128.409594863623,224.910613985831,0,168.595615785252,137.222575941569,124.160215950464,143.262369156357,0,106.907876302857,169.922781163997,114.692457164501,303.186499163973,268.748829311938,243.065641053582,-1159.91914920998,-920.900544703118,-1022.81767263462,180.477891429503,156.15261642877,192.438923581834,129.72549284218,176.251031656007,138.673778863397,117.947792029121,146.509883601768,131.105580834404,150.619158943318,0,193.876926928347,173.46009143634,151.229766583641,0,188.911105589508,0,155.332894504153,162.152438961742,176.273309913255,0,167.395206591995,200.263578880765,124.53296971965,0,216.211778369352,220.295552938408,181.256174582876,291.249477512677,234.546924935494,250.00984168258,92.404617938809,105.265368106635,0,100.371500623045,91.9635288693594,1908.56322318802,1676.43538812285,1540.39418874674,119.23966529972,0,84.6498573131369,93.7531687992759,101.667218441435,84.7178940885863,105.268831492989,261.753787801625,1087.67851745599,74.9213120677098,116.539260414707,90.7715743198377,107.548882122826,101.958413089372,0,90.7835630358687,84.8895544286054,122.337907612325,93.9158469432203,0,102.680876345365,75.5044869774617,107.582418999266,115.327809678014,113.458168871249,138.216489109334,74.9898738503126,0,81.2838745115482,74.398128370515,72.1180272062841,0,0,70.7293246930403,0,116.733312904307,140.570441454869,140.504403764617,85.659109784341,0,68.7191207016937,106.247395194457,81.8761485749737,108.787868483494,103.962195068678,0,0,112.742949008397,116.786488368444,105.969620919195,124.764574613647,121.670811296617,113.183743664146,0,0,115.126285125939,115.667313825631,105.28359423912,95.5586594778957,98.1315553324803,121.011576852372,121.259279298836,122.562340026881,113.695770949483,0,103.456440713512,112.397540423068,113.9707890579,-1274.09628394862,139.40306006145,143.233280581877,177.606710197144,347.412852874193,350.817688985212,0,94.8104441910978,91.0279848489289,82.7197403655558,0,0,236.151048823894,727.520645431954,203.918003452393,319.962803830994,1091.69321373942,935.554477438482],"Archive803_field11":[0,101.026887727247,57.2443113258099,0,25.4586717703086,0,149.930214000441,0,0,30.9600597108155,9.99354017536799,9.63794882433302,110.070679086323,134.376910912036,23.1011110963677,155.547066440349,57.4336138329016,55.5645992194022,0,40.5015569502987,-78.2581585031243,60.4841303236762,5.88309848878244,40.0400141352877,44.7516187718923,52.0287696201689,70.4372508015028,42.1102947085734,56.2810793482005,42.4696553192729,40.3562665555913,62.4251844046171,46.9875980342588,23.7791080924843,16.7000447482157,98.2609538520289,61.4420639414755,84.2844669344041,74.6163506078842,76.3270542843427,20.5234931058381,150.646824660997,4.30861837982708,130.252962001086,14.9848218816798,48.2265979886592,114.884596416536,146.195851527905,123.752248899544,132.199677410821,54.3005632035895,88.7365264865158,73.9117306581614,125.524951229499,103.700160604605,77.1887705477467,102.258173818582,43.0939484082094,157.485129568904,120.888920689513,128.635743676123,137.227908946144,115.237217337997,105.768206937596,121.396197382951,98.1689632657462,113.143869606463,134.706004910357,132.946798702042,131.302534434119,124.136172955765,140.187583285947,129.52540811426,121.605211428351,121.646234332993,129.243761840281,137.272882233075,130.36276560204,127.209583194277,202.407722951434,133.750731077016,46.1524257046483,143.101240180375,149.103206156239,144.044986391615,141.474973276855,146.479477201384,139.403512191059,136.739678582629,133.59717028972,132.294374545486,131.757638836604,130.290502511981,0,0,112.225209520349,18.0886979238138,-16.4180260209059,-10.3916314359947,25.594981471671,2.3199075913713,13.7835310146986,18.55874491828,0,63.385659421494,0,5.8139586181557,22.934937824594,17.2239150471078,11.530244527881,12.8459116647395,10.5069544438813,14.6155071723265,6.12872570329363,14.7452231161757,8.27771107429588,9.54348082115288,9.72882692137063,30.5638762943918,-31.5521254580382,14.0781412047935,0,0,12.1593345583262,28.4618538247681,18.190037723222,-37.5024796485784,22.6840489070482,20.4870324949873,85.6320953653085,38.3133272806563,19.7524978184708,-55.1771311194324,8.05448413590533,11.3490903751987,28.5984213420508,111.24054805801,25.4368684747743,36.0843148929986,44.5714155592299,331.240095535621,184.112601395337,214.751659574093,147.540727393463,20.9895974258262,78.6351462410397,43.2212784734251,23.7317593208661,23.3247899839674,191.197619478437,245.761930870957,213.851352947276,27.5545372698835,20.1625722893,334.809431144885,17.0476828891482,14.2533414691268,28.2599461353019,144.971288251077,21.2728663640937,15.1262506720188,17.4512953258234,16.0055118478819,16.3206906402673,11.9492660549434,15.6067486484589,13.6529370770128,16.9729888053875,11.4367821740195,13.5636324253521,12.076432929278,9.7029893675064,10.8578277569081,0,9.94590476638409,10.7675464305684,11.4361640480236,165.037982618026,69.1512736040377,136.500051087025,113.250070078384,106.24957731204,-29.8854252475988,63.7620932972847,60.384554036896,116.537422942706,122.834698289224,89.1405637567678,140.813116371353,46.3835675445879,87.2468620799122,83.109313071431,112.498338534463,139.517701289553,142.814749115127,132.71936027674,18.5558339756577,14.4148998117134,9.91577658061413,23.3815916413,0,12.1679304196931,10.3619516245598,9.26290566782488,10.8545207313273,0,7.74886033397723,12.9215165659148,8.09706299095382,17.6720649728996,21.065433660601,3.82775520713568,50.5325701104744,26.608797070159,40.4197252355311,12.7778395110572,11.096268600872,13.5834545801062,9.29880813344427,12.6244501939194,9.82654190849287,8.38460994249684,10.426111855571,9.52953347211332,11.6444953553885,0,15.201692260874,13.109130456036,11.9469601730517,0,26.2061893180597,0,13.8091296032165,15.0120501086517,15.1377894777153,0,13.5325364544951,14.3864619254344,8.83349854970832,0,18.25071190878,16.988225596708,16.0448710749612,22.4865299821825,18.4098738879363,19.4081813965696,6.2547562866454,7.24972545802379,0,7.09544662962935,6.75008511285257,151.023768354542,141.626888008575,135.252627279799,5.41563951885367,0,4.85518906324416,7.05278995665115,3.72472710893946,3.67082324460261,7.82230517634402,18.4405368715665,173.445280137245,129.850742335248,8.72372084064224,6.7858965966563,8.43806051323863,7.38951894866387,0,7.77924541850102,6.62128860951869,9.58782454720332,7.4963040020898,0,7.25308193206283,6.18067029606206,9.12171991254643,10.4410738210351,9.83414966578622,10.4897374161665,5.91688666150821,0,8.63486370871173,6.09173906066585,5.62350265932082,0,0,8.0155516657835,0,12.6109132586996,9.90182621492384,11.0431831159604,6.12522157063999,0,7.54164085341068,8.18957811498703,9.83453497923884,9.12621581923665,9.63140692092869,0,0,9.68612937143531,8.56375697351999,9.52609460610006,9.21281094212226,8.55379651218495,9.84364128889073,0,0,8.47227179845065,10.1425271357494,8.43651675102155,10.7709023187129,7.15733422468346,8.58622785627679,8.91109145440471,8.98927673874404,8.59815395939465,0,6.21423807684619,7.22262147568577,8.67826223692951,37.2177205383402,10.2218224897353,10.3279040888774,13.7415578185647,38.1488969270135,27.1346928702219,0,6.12302903995047,6.00959369903415,5.96786459431496,0,0,51.3941381703364,61.0700824127846,48.4555098783394,52.0589708356473,75.3859920448217,70.2291352922342,0,100.96550689266,57.2149946724543,0,25.4803429049823,0,149.893633917902,0,0,30.9070360416655,9.99836291959689,9.64289752878257,110.136832407726,134.306811497821,23.0191970848659,155.851280458149,57.4124644624102,55.5505847192547,0,40.517046952157,-78.2779441359049,40.0773257662112,2.07216684845656,22.7320178804427,44.7356901932428,52.0038988934555,80.6678079880025,42.0864492570253,56.2847579932115,42.4788605500019,40.3326239262932,62.5794857925422,47.3990031182374,23.795182864748,14.7852325654601,98.1710494604608,61.3634048133336,84.1109467491374,74.5428346783545,76.1577701910433,20.3902814471982,150.608357910982,-2.89605418647467,130.210573985956,14.4843019188763,47.7355176763673,114.793033476179,146.147792224537,123.677911124563,132.144513357952,54.2681906157601,88.6794183282713,69.447099082725,125.48533129346,103.621248526763,77.0259474777083,97.3941150193445,43.0942721296306,157.465241755828,120.771267197533,128.625110177502,137.194492138507,115.160095723242,105.684316445132,121.384216141135,98.0875145491434,113.068590435331,134.689384767942,132.958976717814,131.429895890268,124.254817244795,140.156834290616,129.487442182672,121.584775189564,121.613980840696,129.215533730546,137.303041189172,130.347090381959,127.198134119342,202.718579326549,133.832652880448,46.1340316540537,143.072478495214,149.103862922557,144.034001769284,141.495866873498,146.443503724818,139.367810719224,136.707527982633,133.582639563794,132.306098927838,131.742329561961,130.303774117574,0,0,112.32654124548,18.0996384806666,-16.4279311666391,-10.4102573733111,25.6084217038108,2.32291194536159,13.788706110063,18.5723106221556,0,63.4183305076492,0,5.81708361399514,22.9481419141942,17.2330270264001,11.5359338257675,12.8523646757436,10.5107494507769,14.6235288082719,6.13103341164227,14.7530737771773,8.28029390087692,9.5471700495676,9.7334138964457,30.588914678905,-31.5755972637416,14.0852460409938,0,0,12.1658709744522,28.4825544701373,18.2020788392931,-37.5328151157962,22.6992603615328,20.5020459621897,85.7081928494599,38.3595288880076,15.8987968701519,-55.1868605334258,8.05800012590293,11.3547724145792,34.815192081773,104.292895478364,25.448649105913,36.1175157744116,44.5887503502847,331.662987341219,187.323505144135,236.822678379001,147.680525071844,20.9689779382939,78.7005963085587,43.2615803098919,23.7495561014101,23.3400702704378,191.601297879906,246.201032120093,214.497839755777,27.5778915684814,20.1760082148293,335.103048466185,17.0513587900301,14.2479917009131,28.2717952540206,91.2284437131796,21.2870458886773,15.1358026698685,17.4633892470961,16.0158418411832,16.3318490182097,11.9566417143983,15.6162943259609,13.6614664552483,16.98455474823,11.4436395041497,13.5719202118467,12.0841671133702,9.70944671094323,10.8641532643364,0,9.95123782759673,10.7736166487075,11.4428707112723,163.819302785598,68.7645787051247,136.333460572576,74.1612698629695,106.198043225208,-29.9647557766923,63.7002459774456,60.3424368998273,116.470098973171,122.747655228075,89.0556709765208,140.786088921315,46.344769444131,87.1846118295838,83.0484912373906,112.43309114244,139.535444397887,142.809063412398,132.674340345256,18.5693145153211,14.423930641513,9.92074585007222,23.387585339439,0,12.1750435290732,10.3676974680837,9.26899779539688,10.8606549911853,0,7.75221340944473,12.9289050457048,8.10058713671965,17.6834401521556,21.0734887020094,3.82836434349284,38.7196801147521,19.5056092591732,31.2563150833714,12.785180419711,11.1023545043413,13.5916997923183,9.30366336514565,12.6321436155831,9.83162038410025,8.3888956345124,10.4321660632864,9.53505237216903,11.6505176769684,0,15.2100511014561,13.1163862656487,11.9525251616165,0,26.2149961015734,0,13.8139825257462,15.017477807933,15.1421899144887,0,13.5379988976085,14.3957430873952,8.83737023379352,0,18.2608052789588,16.9986157677087,16.050935076291,22.5016499424428,18.4206164733049,19.4213294497631,6.25646857653289,7.25314746395217,0,7.09718716811981,6.75209358426458,150.987145409028,141.590048721606,135.220964366934,5.41801926859399,0,4.85725548813453,7.05863063856577,3.72690827682246,3.67058850703209,7.8249992713996,18.4521264240643,173.633590466015,129.798963038661,8.72805293915695,6.78905796224206,8.4414716435021,7.39283145346963,0,7.78332450716261,6.62306452927634,9.59204580616487,7.49899677544367,0,7.25596993532194,6.18210261492284,9.1249052699225,10.4439049529682,9.83525397106963,10.4946822705887,5.91797141588504,0,8.63894621983883,6.09347474818082,5.62458482408533,0,0,8.02114357991331,0,12.6163000327657,9.90598271252591,11.0481298350303,6.12640049436156,0,7.5448244250028,8.19225833004277,9.84191286558472,9.12803864921966,9.63964327870978,0,0,9.69478578146159,8.56568464732344,9.53177679418016,9.21881493817641,8.55684879556667,9.85705387863646,0,0,8.47852824299978,10.148353922467,8.44621311237921,10.7836759635153,7.15806173748412,8.59990259458121,8.9157462747921,8.99444404629714,8.60222524171061,0,6.218730541231,7.23323619288763,8.67962795004572,37.222092052324,10.2280216901861,10.3337985565778,13.7478067981041,38.1741865010409,27.1538652041811,0,6.12926173484226,6.01302319783029,5.97149796443797,0,0,51.3835055450785,61.0393446207992,48.4334993701897,52.0389776276119,75.327751334762,70.1934973718622,0,100.780317034445,57.1295730689766,0,25.5086872553206,0,149.784076968952,0,0,30.1045999555148,10.0040388928558,9.64896395480778,111.096045723413,134.095589441,22.5321729015775,156.126633978558,57.347552175922,55.4973791057263,0,40.5464960395719,-78.3226371751866,27.8814184015938,-5.7602762677278,5.93075294275049,44.7033841101616,52.1018761705546,89.3230243441822,41.2724655489043,56.3830954670096,42.4579080633162,40.2538413795637,63.9748918390479,49.2285239234024,23.8100620426871,7.3622770066688,97.8944325638689,61.2128413935894,83.7094825426036,74.3137666367749,75.5724638405683,20.2321601300404,150.493876635289,-30.1210875599613,130.08786078456,12.7814010131615,45.4771842847494,114.538531664332,146.003643233978,123.455417839077,131.976223311069,54.149304337853,88.5059703361937,62.740281422476,125.368593317202,103.385492478158,77.3152386003779,73.5977204957125,43.1319150445959,157.31934125137,120.56728383504,128.566131392142,137.094019839234,114.898628387579,105.285116409579,121.366015011868,97.8465701955074,112.842607995275,133.805271255483,133.005639420171,131.753281559553,124.63232854049,140.065208351164,129.376509382649,121.521786236066,121.51297400829,129.127824768459,137.451113235174,130.29201224357,127.226499909343,205.546687142029,133.753695140017,46.1947321398573,143.192341279127,149.026497005376,143.99664748271,141.53374384457,146.335099651114,139.260674241154,136.612505045705,133.536619160764,132.337681981957,131.704067534444,130.318825231714,0,0,112.468117040278,18.1133456915247,-16.4407936694471,-10.4254459842579,25.6226883908511,2.32740093601211,13.7954042347172,18.5887907201766,0,63.4620027000357,0,5.82155698876083,22.9651169506973,17.2446849842721,11.5431100827529,12.8605971620384,10.5153262363885,14.6335199219601,6.13403065967185,14.7630163892471,8.2833696271098,9.55184344593454,9.73913810929581,30.6190582394921,-31.6171027021254,14.0945709525099,0,0,12.1739065554091,28.5102016614385,18.216989978398,-37.5625711014649,22.7183447934193,20.5206140300825,85.8085675985049,38.3873503955147,4.58715685507758,-55.2208254844726,8.06242731729898,11.3618269045373,31.860501732203,89.5706215266487,25.4662478648676,36.1450055887527,44.6062770835929,332.068630325511,206.66880095024,295.491857832545,147.831150301787,20.9526381877881,78.7715800948339,43.3116846724678,23.7715491002747,23.3590212354884,193.58809406435,280.442353775149,216.511685797343,27.6064282295946,20.192394129754,335.532295597998,17.060130334944,14.2438625658976,28.2847141211233,52.9086507929014,21.3042524264231,15.1473664137801,17.4782535923694,16.028521466345,16.34545980676,11.9654155865633,15.6278728291513,13.6717117224406,16.9985867693338,11.4518052420183,13.5818506473441,12.0934198460285,9.71698555575805,10.8716111090696,0,9.95740288598309,10.7807277859382,11.4508374846414,159.201633888881,68.1393959915308,134.518956960798,-6.32498955131906,106.185943655364,-29.984154993523,63.5139382319126,60.1252464999566,116.283673607724,122.420116346698,88.8023769672079,140.675841820724,46.2373008799179,86.9944639235328,82.8675850672848,112.234965198639,139.592996008506,142.801539825049,132.539961499861,18.5860320281757,14.4350781512564,9.92661808009102,23.3950601164917,0,12.1836559190865,10.3744092380294,9.27633339414612,10.8679223995902,0,7.75547895976976,12.9377246321069,8.10441250454667,17.6923808818874,21.0834613425232,3.83296662744598,-4.08566083985381,-12.482920365016,10.1782473135635,12.7941834922513,11.1097801536774,13.6017802755351,9.30946264756914,12.6414331447338,9.83775581588742,8.39406195745042,10.4394307170894,9.54150198348897,11.6576904904473,0,15.2201509321764,13.1251051478524,11.9591856821923,0,26.2243849770783,0,13.8196780489696,15.0236051572495,15.1476278951196,0,13.5445267940619,14.4070557997966,8.84206973439592,0,18.2732489516734,17.011384200194,16.0581314824545,22.5209295484072,18.4336152470307,19.4372991286752,6.25856315563727,7.25732220329922,0,7.09926832024693,6.75454112311371,150.877506785026,141.478752083034,135.129982006602,5.42108924147328,0,4.85991425180728,7.06548264757572,3.72994169002951,3.67013578178879,7.82825890113352,18.4667449775829,173.878807259048,129.643836505084,8.73321704518712,6.7927409015389,8.44544901568004,7.39672530510189,0,7.78739976898702,6.62530509171457,9.59707624852665,7.50213329197233,0,7.25947195621339,6.18370244351451,9.12843117050988,10.4471206995234,9.83654593436658,10.5005856249379,5.91929794515104,0,8.6434246477779,6.09521517129292,5.62562123363255,0,0,8.02621254791515,0,12.6223640486543,9.91117432722877,11.0540863032717,6.12782213198806,0,7.547981939595,8.19490120457855,9.84887317775806,9.12961911248176,9.64815587883032,0,0,9.70120313606356,8.5675915414513,9.53565032003125,9.22582812448689,8.56021391607763,9.86633737828069,0,0,8.48437121342132,10.1531312239834,8.45340291995679,10.7947109508431,7.15911333043282,8.61075971537682,8.92134951070941,9.00039284751013,8.607046080066,0,6.22312061108849,7.24046392126799,8.68126523964289,37.2845035591332,10.2353174919628,10.3408067227825,13.7553112691268,38.2024933499323,27.1774017242226,0,6.1345437272542,6.01622841269432,5.97556370959927,0,0,51.310203353502,60.9535745238957,48.3632533075318,51.9844175302715,75.1545287547906,70.0861418332507],"Archive803_field12":[0,0,0,0,346.13546231585,0,0,0,0,3.52482252029227,128.813353375347,138.975377776332,10.868898123377,0,0,471.492223311696,0.219865584609319,5.71504708435689,0,449.789540920104,1129.13883156623,2605.53720447086,0,3192.01265009784,0,1.4303490360094,4136.15615699857,6.75002966885379,1.86936367109992,1.62006483670482,0,0.19655708373269,19.5548064144397,652.171766789083,6786.18560085227,0.0386839234966275,1.80137787414964,6.14868574413763,0.19167161520703,0.448958396214492,6.39984415511252,0,11671.5980945004,0.22674264536198,27.4942715475903,0.329851377818627,0.489105860117498,0,0.425174749160258,0.405025865571291,0.532953657026832,0,10618.2830421931,0.892491293262197,0.381454127052584,46.7272482627167,9413.80474223331,545.163908319407,33.543154804471,2.12609707078274,1.20629055284612,0.525869801983169,0.534596722925335,9.37125355695063,0.338293183175813,0.354235116530554,0,2.02105492179277,0,5.01883897106996,0.972569444190246,0,0.32148635589536,0.35626755862768,0.249464434877239,0.477214875763567,0.0525649811782492,0.604951009116373,0.881170577530608,1.02506500156048,3.33325764517942,0,0.394465533800938,0.128264099131948,0,0.439687830935784,0,0.321326706871648,0.347501235314755,0,0.391854438543906,0.31624926887262,0.539796684974139,0,0,117.952914798043,325.268523678963,429.687936589356,346.764199984682,305.10944413056,256.826981557522,205.388736232766,316.202843836717,0,473.904410477701,0,173.502127717897,345.881453574554,255.245061483951,167.379623990977,197.013165591833,152.979728646069,216.662349909908,131.730093684335,225.35789515385,122.781751857883,142.383160271351,143.862731910406,425.568289702228,316.945764642425,213.048136054594,0,0,172.551026782,399.739300575657,266.765969402819,596.12050298445,336.035396022523,281.152705169703,855.792109092666,1118.30462153249,5696.89910790762,2152.03408627472,116.261303169103,165.252173710063,3264.36018312446,6272.90491505512,468.519997015281,494.439388135866,466.514965079144,553.016619397013,5327.90417880964,10886.4045790086,653.072230074558,429.664131434621,566.635057087677,513.942740258263,360.198961302737,309.318386215028,9.30420726412133,5879.89709604956,21.0049745087404,360.289834185403,271.333819785727,406.194970920746,320.750136149881,329.551652197701,290.883306871267,1752.06028036908,283.098943465075,203.820586969163,240.428514411288,223.036993742884,220.175608511787,161.783952861009,207.444581795876,186.198946997174,226.316013082117,155.467758110988,181.382925411353,165.093505204752,132.802534421605,147.903585568769,0,132.501789529883,144.20158545299,151.95667038473,15.3653100012418,6.73385912444695,0.162157406650842,4824.05009895877,0.593135594161996,788.527623471093,0,0.664288588678512,0.238253156899213,0.204987969790236,0.502543345926307,0.250998267097122,0,0.415681532213272,0,0.406085360360307,0,0.379816611987082,0.408164328127428,261.9797505643,208.030998900648,128.647446139007,225.992407162695,0,168.822100075905,137.445911192776,124.325059829826,143.492338609461,0,107.095143364821,170.195883848839,114.870443192089,303.36162199072,269.32019500074,242.899225228669,4337.23261547164,1904.91319089316,0,180.707244744427,156.363061723806,192.665029138451,129.914354483275,176.469897428453,138.869278447478,118.117469981393,146.698083850351,131.29011691869,150.892618904924,0,194.228328822419,173.737332874513,151.539042822459,0,190.575474502847,0,155.819204053568,162.697510342204,176.803606423761,0,167.781827392526,200.498349200599,124.730823115895,0,216.698289468975,220.641093694038,181.804264932961,291.65289838959,234.955500047547,250.381944243427,92.5633026506598,105.409972739086,0,100.572316143212,92.1563304658857,0,0.359431218945096,0.369681108604025,119.257971960693,0,84.7144802890609,93.8674375857531,101.619301471695,84.7824314387756,105.483503630588,262.050399240174,1097.32853581138,0,116.733557125144,90.9307512580918,107.780032234076,102.125268509178,0,91.0198235563953,85.0933255065103,122.58903956863,94.1361621020523,0,102.842246522606,75.7201094088711,107.882578878848,115.730245674484,113.856402912287,138.46531929671,75.1864549877642,0,81.6516802178691,74.5985662572158,72.3051216063299,0,0,71.0759354532307,0,117.29379616369,140.778823963674,140.791584103853,85.8285579860201,0,69.0744992011097,106.476558304923,82.3397589951036,109.12833124785,104.220460571935,0,0,112.985945115143,117.042047229085,106.291134552988,124.928747766256,121.879444831852,113.346573184049,0,0,115.27375311142,115.994978089876,105.412831400203,95.9408362120141,98.3494296260898,120.979200309609,121.447688459656,122.743150689298,113.907287089467,0,103.501768937504,112.365852884755,114.267980677043,1269.12851340469,139.594549704575,143.4297812283,177.949902789664,349.088575380751,351.277557580249,0,94.8392469163346,91.1323897294148,82.8311549459218,0,0,0.0622582119982882,0.465992381160139,0,0.49859536377907,0.387287546206679,0,0,0,0,0,346.454848672888,0,0,0,0,6.60349425115442,128.877370577906,139.044523714373,15.0532156038967,0,0,472.391599046856,0.186674588749371,10.72832929785,0,450.19469931379,1131.02025423133,2613.57759720563,0,3205.35611717665,0,2.05954319442326,4147.46004248881,11.3132179292348,3.05647377815167,2.66044270460014,0,0.076172794902786,30.4899108521715,652.493723772802,6800.702463019,0.288624592155065,2.91346177783441,9.70972576862877,0.126808698188576,0.665060045034773,11.2629530901123,0,11684.9674525134,0.223092191749864,41.9956914948707,1.39988736122667,0.604843374768499,0,0.452408584180129,0.425455073355112,1.17467767202698,0,10635.5300020052,1.5866868151888,0.37764882188158,74.7780579113222,9423.77787148092,547.119238080344,53.286142015166,3.19810996245196,1.67312742284789,0.600916031813217,1.12111626597332,14.5898748291381,0.196120091668899,0.424524227229355,0,1.34350291086659,0,7.6365573796046,1.67180938313839,0,0.354736357407275,0.754851582041879,0.184718955210469,0.62930068451969,0.180871243101152,0.773807728869226,1.58824073770007,0.635137568862255,5.42961746138317,0,0.615011594945155,0.0171121042251822,0,0.422667197118579,0,0.281833686761861,0.312343713859479,0,0.424697438767036,0.245197471903301,0.721841980898849,0,0,119.414160780337,325.392609298076,429.912584933852,347.006001894406,305.211866735475,256.946996856149,205.474651115017,316.421749980126,0,474.112377445817,0,173.578854912175,346.077570138536,255.376910985084,167.458775511373,197.102110928272,153.029371965518,216.776610891155,131.776309622243,225.47137639238,122.816869145629,142.435645242417,143.927664937931,425.922214582926,318.073499364531,213.145418505553,0,0,172.641032137892,399.98641802424,266.937238657694,596.592082091156,336.260984254216,281.359446560467,856.583518285819,1120.39293750691,5706.94860558327,2157.09513588029,116.310048059688,165.331385416646,3272.59844114814,6285.26345825811,468.762966870072,495.157919153969,466.663323035955,557.814319771438,5339.5211762903,10900.2225157466,653.732620294081,430.093595646989,567.00457356351,514.521244440675,360.456287089446,309.522837344832,14.6441601352035,5902.14886551135,33.4644402095962,360.61232438901,271.512215867475,406.708106549848,320.846792068951,329.602299400787,290.999552094507,1756.25459639144,283.286495524182,203.948924428988,240.593979404093,223.178688493777,220.32738404839,161.884556849562,207.574146149551,186.315737848616,226.473197312973,155.560427091126,181.494893578369,165.199100700883,132.890746413436,147.989837889496,0,132.573907931963,144.283692270717,152.047129310792,26.8251910359318,12.8873926930349,0.978750968955701,4847.85265620267,0.182633619404039,790.319924162898,0,2.26022213026597,0.173377356786189,0.248883405035242,0.95856171830566,0.209271536537064,0,0.345652121066042,0,0.429297667288017,0,0.3898540649703,0.418319514481112,262.16788240487,208.158263784436,128.713633407228,226.058876619831,0,168.919130653239,137.523391199764,124.407156547819,143.575247353641,0,107.142439849491,170.295358878145,114.922315330208,303.576832528994,269.434337196351,243.013749745404,4365.13443306024,1911.63644215523,0,180.808485466013,156.446759043873,192.780020431247,129.980886681225,176.576390414586,138.939214751942,118.176450785426,146.781917357595,131.36522028627,150.972988551364,0,194.338879443389,173.836237742947,151.612719691118,0,190.642824801322,0,155.876857005412,162.765332295544,176.858828360431,0,167.853876602336,200.626489204941,124.783592391197,0,216.825887922089,220.780759770278,181.877422518735,291.860795672193,235.096912263427,250.554425600696,92.5879841493991,105.457966854611,0,100.595535760338,92.1813358386753,0,0.335794631752514,0.437354088007092,119.306156242108,0,84.7489491964922,93.9394590650474,101.671306617847,84.7893229959984,105.51770630138,262.208527041027,1100.43665106075,0,116.793553105939,90.9740323969195,107.825722415589,102.171362010643,0,91.0688508533373,85.1177425726325,122.645379115062,94.1718751083292,0,102.8849198358,75.7375588532542,107.922757868061,115.762646999404,113.86928464096,138.533065080458,75.202733164637,0,81.6933127442803,74.6220588537776,72.3210356066009,0,0,71.1314767414612,0,117.348110155956,140.841507108093,140.85758985277,85.8505061883602,0,69.1048636834559,106.517719186186,82.4064476106698,109.15041822307,104.312801628986,0,0,113.088113870576,117.071188449466,106.355951267839,125.010109941096,121.923426372589,113.506687595253,0,0,115.359277668702,116.059890654108,105.53589950639,96.0642991808459,98.3670531310215,121.170118481629,121.511785614252,122.812850768996,113.959744525228,0,103.574648570767,112.524418688542,114.283449535496,1272.33909528756,139.679178590574,143.5107530854,178.034826258256,349.291660305583,351.540330984039,0,94.9324121272688,91.1818665032062,82.8804894640787,0,0,0.348939178110114,0.502571144758926,0,0.556646750141155,0.399934612393135,0,0,0,0,0,346.896944418726,0,0,0,0,15.8774304880048,128.954108257008,139.128355837634,27.6066828678729,0,0,473.889653532445,0.0867291359756755,25.8238708861376,0,450.995071961067,1132.94395900187,2621.58735822128,0,3217.33487043591,0,3.9552115330549,4160.46807665232,25.0603028613308,6.63178974310957,5.79298924229742,0,0.289905066123885,63.4173735816167,653.012186875871,6820.34234506149,1.04179565904661,6.26331432093071,20.4191543376567,0.0685937458524493,1.31884111843664,25.9128632361248,0,11708.13408809,0.212171278039046,85.594278473637,6.59293188886989,0.952471152957701,0,0.534456485656953,0.487122572843082,3.10735146405338,0,10664.3291432683,3.67358270292739,0.366179343708738,159.195242473299,9439.12045866077,557.246156884059,112.714989293961,6.42443813070671,3.07751110670243,0.826423396343996,2.88536585750089,30.2873497399025,0.237962077950436,0.636326270929317,0,0.681628873182897,0,15.5109759881273,3.76979697831701,0,0.454185121836077,1.95301404425107,0.00791442061678626,1.0874789418809,0.88558003311891,1.28185003651649,3.71662050909138,5.66773908024828,11.7452489144686,0,1.28404988673652,0.463298490667839,0,0.369900895514657,0,0.16303926918205,0.206676424537505,0,0.524255952053256,0.0311902252341182,1.27019046635113,0,0,129.7313919901,325.570996120362,430.240935015029,347.690188302428,305.42915616085,257.117902369748,205.580308803996,316.718641620275,0,474.4878818026,0,173.67639196854,346.349545973572,255.541333482741,167.556324709027,197.215854763422,153.091864561891,216.918595393225,131.830941122775,225.612320102542,122.859226294662,142.501121107804,144.007127723854,426.398787964424,325.182492048881,213.266772053028,0,0,172.750730096473,400.346025614653,267.149963870735,597.334807063914,336.547799079202,281.619158806839,858.934327776211,1126.96690386733,5721.05938007739,2173.64802877735,116.369171827382,165.428473582175,3282.93259548648,6302.42833691917,469.072524275926,498.300440795408,467.284030688583,587.547208070627,5355.28535519585,10922.9182792583,654.727932297174,432.300301482279,567.808555646541,515.550046912683,360.783216342167,309.778256445399,30.6865011159583,5929.47494629528,70.9667720015273,361.046002540162,271.733878084654,409.241622055168,320.972361008664,329.702119564467,291.139830948457,1761.08423472567,283.519615451569,204.105203526824,240.797855040225,223.352768980787,220.513967923241,162.005143783998,207.733001848633,186.457055453838,226.666540910312,155.67097674947,181.6304491012,165.325917891551,132.994784080454,148.091826939919,0,132.658405876718,144.380486095618,152.155786116916,61.3742410601218,31.4543573325379,3.45945220329354,4872.0838160858,2.53739601640321,792.912662169427,0,7.09403177858129,0.0233401599988338,0.382546244966525,2.34056819262336,0.0827920767841429,0,0.133432270928443,0,0.499663887479678,0,0.420553074170673,0.449070335818677,262.403863848441,208.315340415741,128.793241140304,226.234328772936,0,169.036326434569,137.614859077601,124.507559906766,143.67485768197,0,107.189112491281,170.415844700399,114.978488687374,304.267830282147,269.60725511564,243.426624238447,4387.39871516392,1918.17999683634,0,180.931926355803,156.548231979723,192.920392976176,130.059594709947,176.704943139764,139.022879568633,118.246853355656,146.88214024077,131.452970003274,151.07048445795,0,194.47493189122,173.957241917882,151.702909039082,0,190.739914636515,0,155.949253895983,162.849393009581,176.929738785262,0,167.943804115113,200.783065855765,124.846880558894,0,216.984048872335,220.95712473298,181.966833033511,292.120801187162,235.27255005128,250.770156459188,92.6163426430683,105.515877465702,0,100.622518142926,92.2116169234007,0,0.264715957248085,0.640636135003723,119.363051787697,0,84.789255851876,94.0224120241253,101.735714804254,84.7974169898373,105.559955644257,262.404904059144,1110.45140162968,0,116.866560677673,91.0259430180728,107.880375033415,102.226913142996,0,91.1184451203915,85.1480497157413,122.714387268864,94.2152605648751,0,102.937707993399,75.7575635512064,107.969512736161,115.80042007349,113.884010337266,138.615542681435,75.2231721074415,0,81.7422957647248,74.6478382747008,72.3371231656712,0,0,71.1871887003249,0,117.413867375786,140.920598732596,140.939445206264,85.8780518251215,0,69.138935557364,106.564628843281,82.4783778531464,109.170604026131,104.413958870114,0,0,113.174690559611,117.10063658876,106.405264245664,125.106253567353,121.971580264471,113.640714619185,0,0,115.441370372322,116.113499880309,105.644523885156,96.1857759719623,98.3930348528201,121.34694944956,121.587768872452,122.893203173984,114.021315407891,0,103.652832632439,112.655027824155,114.301920866488,1275.2743607116,139.779158096387,143.606757358406,178.139652304324,349.61726982425,351.868815785471,0,95.0277143089861,91.2329222885696,82.9374003073427,0,0,1.21247242996629,0.612747155865865,0,0.731509088247746,0.43803110116093,0],"Archive803_field13":[4497279.3220831,6388984.03530792,7195349.73325513,4504462.22373278,8977071.80235897,4500181.5695791,11290051.8842815,4504074.44109891,8973454.88712559,7645687.82819648,7871719.41211954,7871547.90736082,8568567.65370968,10367172.0587683,4473865.50268328,6478369.84038651,7701636.59322581,6340894.47793988,4489101.54377695,5546628.45702759,5556552.84181835,7348762.99304401,6588137.9819998,7460772.65578789,5834607.61796921,5945414.54556612,7857492.18442315,5732418.43566114,6982379.44206232,7437788.44356776,5154236.56032625,6765529.61015802,6933987.86192643,7729003.35217412,8354057.2571556,9221977.66331222,8336501.05081009,8779586.96008943,8611073.95496273,8827295.42498127,8176668.76957455,11109729.7840249,8808165.87005978,9991717.90264383,8235135.40499096,8592319.76195319,9513651.1557863,10808730.3745216,9967226.96506883,10158811.7910107,7809285.06133471,9062378.70851173,8860050.7263437,9597244.60495076,9447732.67494023,8342157.47727875,8950372.39324233,8978067.11834438,8106253.69932692,9222212.18164241,9771732.33015074,10462529.0998761,9351998.50413128,9014680.24884932,9201940.36807809,9254240.52188415,9785054.83676503,8638636.75207495,9963989.20979472,8714767.12995711,8977213.6320063,10908138.3595381,10037638.4820939,9422199.82138162,9531207.08886769,9972408.32071735,8909046.25730179,10035233.7409849,9035928.3006067,7645913.37113586,8376344.42090648,3667499.80473607,7569372.66457302,8188760.7185124,8457604.43505132,8750705.28194005,11169374.5750348,10665626.2243706,10548290.1794708,10506343.2377914,9614256.43455799,10116529.6007663,9545769.42894066,4503661.73134755,4501601.96018499,7173740.19454032,6966141.58818065,7323469.95405822,6733706.63344581,6256186.8872,5513203.07593506,6498210.41070824,7998389.76372111,4501717.28432368,7955818.0060015,4499467.43989763,5662675.06491316,7576699.2649844,7230662.34226725,7208701.71974043,7035649.87597893,6437647.12771744,7925821.07642921,5521126.03121206,7533357.58426732,6597536.19112807,6738288.84735112,7373793.51772939,8718064.8758301,8302245.87199431,5782353.71808904,4500640.1807574,7850954.50290827,8060688.27532608,8390140.49873472,8528964.76488417,8561167.5658345,8589356.64201313,8897363.96105366,8788619.21368901,8583509.43600456,8522393.56173667,8768959.55073608,7131275.09582262,7634462.63517111,8164252.62953456,8677850.76264343,8715630.83289549,8891310.77696067,8972452.22642988,8561047.94599413,8630496.78197512,8683202.05068606,8712444.2817544,8258677.3782883,8980694.55878654,8884016.30154377,8877359.03385801,8842547.77550111,8348608.72693355,8406823.09101919,8090566.76487115,8939690.8043222,8967287.27523774,8198185.37205649,7363634.82258628,7867794.44830748,7789467.81866241,8025288.73576497,8984131.56725343,8967079.45341405,8960223.36172378,8765814.66550287,8986630.42699202,8964531.68783451,8717162.49619967,8991038.13207164,8902143.90318837,8914882.46117448,8869164.09777954,8990050.32749795,8994889.52833948,8994243.81241933,7855265.22849829,8798391.59351723,8927012.86854783,8720043.83330999,6793308.18377277,5501809.66013806,7154373.37120868,8032933.76028452,6473590.19056535,6684736.42610663,5028241.92002199,5243588.66980557,6877807.80486054,6982987.23413151,6085041.7128112,7856766.27966209,4347870.86237903,5934910.1117921,5708612.97766496,6782113.80982487,9281076.27554802,8412544.0817014,7556545.517084,8752149.30442885,8411966.29264648,8399148.06095989,6146449.64423402,4500074.2529416,8619033.84124411,8650200.37711179,8592140.77807099,8468750.37387113,8693455.02153995,8057571.0915467,8551571.32056818,8828286.76039062,6676473.66222725,7148831.25139373,5690033.66637731,7158276.94960659,7029507.31472401,6040904.37709667,8417567.4315451,8246589.57252376,8683146.60728279,8439282.90596302,8860998.28543323,8250844.23485394,7796569.17407145,8619551.84864842,8838791.71065941,8174026.44456795,4501747.50441501,8123355.43756211,8269742.50486459,7568616.7115578,4495600.5785718,5304888.93765189,4499773.34444555,5750562.50401065,5302100.57535096,6166594.74540124,4498594.32079763,6980700.33780069,8864827.96895291,7610383.54431004,6456859.94546668,7285849.65871851,7861304.23264276,6730677.75518069,8436827.79835859,8280394.71853968,8650641.3661659,6851869.48754089,7220812.00466857,4502011.18433073,7778025.05432556,6133461.16534433,11270170.2872782,10657630.6748477,10290490.7572597,5637580.07682365,4501417.41767444,5313207.16610884,5670779.58565143,5492838.40664853,5971785.3198795,6301613.19842596,8187919.03892999,8897494.3423457,7493573.68830462,7968638.65922701,6950820.23715347,7289081.9898155,7572255.46922116,6452523.26375064,7427308.20505922,6012735.95216678,7211908.67459822,6682045.22956798,4498852.4904972,6632570.67925738,5952854.76446541,5654561.09041582,6529147.38532591,5772617.55908588,7702506.52586382,6522638.98500523,4499295.44893437,5210665.75813373,5194543.67123288,5345970.38292499,4501158.1588027,5590524.53971423,5369007.38810525,4497568.37394673,5235251.44693902,6325117.28396784,6868551.07491379,7022434.2470319,7226166.08791679,6083568.65549791,5244891.02280247,6970607.93474408,8507269.84617924,8667727.11885094,8900649.47443156,8343959.03344519,8872540.26011966,8990569.74332801,8132451.92832736,8936431.32537935,8966533.49286014,8971567.50063134,8695720.23780737,8895174.74389671,8984142.41681507,8822439.50896869,8421540.40690604,7775636.8562021,7841189.33645696,8919635.99972582,8847493.70071799,8634012.99075448,8236224.3974868,8343818.98678338,8130854.11205065,8540824.31279828,8505139.91094279,5328800.94218613,8959879.12968755,8810880.25501692,7583998.88015242,8204312.88183629,8681799.61204007,7222485.55936066,7565631.10029622,6952081.93967925,6386121.45668598,4499434.43434269,5548167.83906675,6651097.02648449,7690708.02483113,6514978.67561217,6798477.67549259,8544104.17050486,8199143.67400843,3372959.49156233,6386735.09280792,7193100.79075513,3378346.66779958,6732803.85176923,3375136.17718432,11287802.9417815,3378055.83082419,6730091.16534419,7643438.88569648,5903789.55908966,5903660.93052062,8566318.71120968,10364923.1162683,4471616.56018329,4858777.38028988,7699387.65072581,6338645.53543988,3366826.15783271,4159971.34277069,4167414.63136376,5511572.24478301,4941103.48649985,5595579.49184092,5832358.67546921,5943165.60306612,5893119.13831736,5730169.49316114,6980130.49956232,7435539.50106776,5151987.61782625,6763280.66765802,6931738.91942643,5796752.51413059,6265542.9428667,9219728.72081222,8334252.1083101,8777338.01758943,8608825.01246273,8825046.48248127,8174419.82707455,11107480.8415249,6606124.40254483,9989468.96014383,8232886.46249096,8590070.81945318,9511402.2132863,10806481.4320216,9964978.02256883,10156562.8485107,7807036.11883471,9060129.76601173,6645038.04475778,9594995.66245076,9445483.73244024,8339908.53477875,6794303.02892151,6733550.33875829,8104004.75682692,9219963.23914241,9769483.38765074,10460280.1573761,9349749.56163128,9012431.30634931,9199691.42557809,9251991.57938415,9782805.89426503,8636387.80957495,9961740.26729472,8712518.18745711,8974964.6895063,10905889.4170381,10035389.5395939,9419950.87888162,9528958.14636769,9970159.37821735,8906797.31480179,10032984.7984849,9033679.3581067,7643664.42863586,8374095.47840648,3665250.86223607,7567123.72207303,8186511.7760124,8455355.49255132,8748456.33944005,11167125.6325348,10663377.2818706,10546041.2369708,10504094.2952914,9612007.49205799,10114280.6582663,9543520.48644066,3377746.29851066,3376201.47013874,5380305.14590524,5224606.19113549,5492602.46554366,5050279.97508436,4692140.1654,4134902.3069513,4873657.80803118,5998792.32279084,3376287.96324276,5966863.50450112,3374600.57992322,4247006.29868487,5682524.4487383,5422996.75670043,5406526.28980532,5276737.4069842,4828235.34578808,5944365.8073219,4140844.52340905,5650018.18820049,4948152.14334605,5053716.63551334,5530345.13829705,6538548.65687258,6226684.40399573,4336765.28856678,3375480.13556805,5888215.87718121,6045516.20649456,6292605.37405104,6396723.57366313,6420875.67437588,6442017.48150985,6673022.97079024,6591464.41026676,6437632.07700342,6391795.1713025,6576719.66305206,5348456.32186696,5725846.97637833,6123189.47215092,6508388.07198257,6536723.12467161,6668483.0827205,6729339.16982241,6420785.95949559,6472872.58648134,6541960.66940789,6534333.2113158,6194008.03371622,6735520.91908991,6663012.22615783,6658019.27539351,6631910.83162584,8346359.78443355,6305117.3182644,8088317.82237115,6704768.10324165,6725465.4564283,6148639.02904237,5522726.11693971,5900845.83623061,5842100.86399681,6018966.55182373,6738098.67544008,6725309.59006054,6720167.52129284,6574360.99912715,6739972.82024401,6723398.76587588,6537871.87214975,6743278.59905373,6676607.92739128,6686161.84588086,6651873.07333465,6742537.74562346,6746167.14625461,6745682.8593145,5891448.92137372,6598793.69513792,6695259.65141087,6540032.87498249,6791059.24127277,5499560.71763806,7152124.42870868,6024700.32021339,6471341.24806535,5013552.31957998,5025992.97752199,5241339.72730557,6875558.86236054,6980738.29163151,6082792.7703112,7854517.33716209,4345621.91987903,5932661.1692921,5706364.03516496,6779864.86732487,9278827.33304802,8410295.1392014,7554296.57458399,6564111.97832163,6308974.71948486,6299361.04571992,4609837.23317551,3375055.6897062,6464275.38093308,6487650.28283384,6444105.58355324,6351562.78040335,6520091.26615496,6043178.31866002,6413678.49042613,6621215.07029297,5007355.24667044,5361623.43854529,4267525.24978298,5368707.71220494,5272130.48604301,4530678.2828225,6313175.57365882,6184942.17939282,6512359.95546209,6329462.17947227,6645748.71407492,6188133.17614045,5847426.88055359,6464663.88648632,6629093.78299455,6130519.83342596,3376310.62831126,6092516.57817158,6202306.87864845,5676462.53366835,3371700.43392885,3978666.70323892,3374830.00833416,4312921.87800799,3976575.43151322,4624946.05905093,3373945.74059823,5235525.25335052,6648620.97671468,5707787.65823254,4842644.95910001,5464387.24403888,5895978.17448207,5048008.31638552,6327620.84876894,6210296.03890476,6487981.02462443,5138902.11565567,5415609.00350143,3376508.38824805,5833518.79074417,4600095.87400825,11267921.3447782,10655381.7323477,10288241.8147597,4228185.05761774,3376063.06325583,3984905.37458163,4253084.68923858,4119628.8049864,4478838.98990962,4726209.89881947,6140939.27919749,6673120.75675927,7491324.74580462,5976478.99442026,5213115.1778651,5466811.49236162,5679191.60191587,4839392.44781298,5570481.15379442,4509551.96412508,5408931.50594866,5011533.92217598,3374139.3678729,4974428.00944304,4464641.07334906,4240920.81781187,4896860.53899443,4329463.16931441,5776879.89439787,4891979.23875392,3374471.58670078,3907999.31860029,3895907.75342466,4009477.78719375,3375868.61910202,4192893.40478568,4026755.54107893,3373176.28046005,3926438.58520426,4743837.96297588,5151413.30618534,5266825.68527392,5419624.56593759,4562676.49162343,3933668.26710185,5227955.95105806,6380452.38463443,6500795.3391382,6675487.10582367,6257969.27508389,6654405.19508975,6742927.30749601,6099338.94624552,6702323.49403451,6724900.1196451,6728675.6254735,6521790.17835552,6671381.05792253,6738106.81261131,6616829.63172651,6316155.30517953,5831727.64215157,5880892.00234272,6689726.99979437,6635620.27553849,6475509.74306586,6177168.2981151,6257864.24008753,6098140.58403799,6405618.23459871,6378854.9332071,3996600.7066396,6719909.34726566,6608160.19126269,5687999.16011431,6153234.66137722,6511349.70903005,5416864.1695205,5674223.32522216,5214061.45475944,4789591.09251449,3374575.82575702,4161125.87930006,6648848.08398449,7688459.08233113,6512729.73311217,6796228.7329926,8541855.22800486,8196894.73150843,0,6379988.26530792,7186353.96325513,0,0,0,11281056.1142815,0,0,7636692.05819648,0,0,8559571.88370968,10358176.2887683,4464869.73268328,0,7692640.82322581,6331898.70793988,0,0,0,0,0,0,5825611.84796921,5936418.77556612,0,5723422.66566114,6973383.67206232,7428792.67356776,5145240.79032625,6756533.84015802,6924992.09192643,0,0,9212981.89331222,8327505.28081009,8770591.19008943,8602078.18496273,8818299.65498127,8167672.99957455,11100734.0140249,0,9982722.13264383,8226139.63499096,8583323.99195319,9504655.3857863,10799734.6045216,9958231.19506883,10149816.0210107,7800289.29133471,9053382.93851173,0,9588248.83495076,9438736.90494023,8333161.70727875,326094.935959037,0,8097257.92932692,9213216.41164241,9762736.56015074,10453533.3298761,9343002.73413128,9005684.47884932,9192944.59807809,9245244.75188415,9776059.06676503,8629640.98207495,9954993.43979472,8705771.35995711,8968217.8620063,10899142.5895381,10028642.7120939,9413204.05138162,9522211.31886769,9963412.55071735,8900050.48730179,10026237.9709849,9026932.5306067,7636917.60113586,8367348.65090648,3658504.03473607,7560376.89457302,8179764.9485124,8448608.66505132,8741709.51194005,11160378.8050348,10656630.4543706,10539294.4094708,10497347.4677914,9605260.66455799,10107533.8307663,9536773.65894066,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118236.525573382,0,0,0,0,0,0,8339612.95693355,0,8081570.99487115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6784312.41377277,5492813.89013806,7145377.60120868,0,6464594.42056535,0,5019246.15002199,5234592.89980557,6868812.03486054,6973991.46413151,6076045.9428112,7847770.50966209,4338875.09237903,5925914.3417921,5699617.20766496,6773118.03982487,9272080.50554802,8403548.3117014,7547549.74708399,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11261174.5172782,10648634.9048477,10281494.9872597,0,0,0,0,0,0,0,0,0,7484577.91830462,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6642101.25648449,7681712.25483114,6505982.90561217,6789481.90549259,8535108.40050486,8190147.90400843],"Archive803_field14":[499.866637392725,1,1,501.460122029553,995.957544599055,501.431563522223,1,502.948747502465,995.110142500344,1,875.092801123666,875.055054374527,1,1,1,731.177516628212,1,1,508.412495336992,625.207360695917,628.321018251219,728.005128116416,659.655180681466,700.857736500282,1,1,809.053069585702,1,1,1,1,1,1,859.853835369503,904.869823114555,1,1,1,1,1,1,1,965.919064392319,1,1,1,1,1,1,1,1,1,990.149845591318,1,1,1,964.615935468281,993.696664756764,961.025735538011,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,496.268147093205,500.826549184322,801.472154534533,773.072479244696,814.519777109157,753.360054262985,691.877703880188,611.716025255628,722.67489912282,887.744561277236,500.875766590865,882.927562948276,500.337879636434,629.563575883445,841.227699314767,803.222473856958,801.291372789651,781.795990733486,715.502764295091,880.756600807152,613.907014545822,837.086266715223,733.522908493587,749.122987425769,819.729524726529,965.973296041494,921.79196102151,642.473169711109,500.59977372102,870.540845520411,895.959273101962,931.684251846471,947.384716381506,949.972512958238,953.783312114716,988.153869658927,963.896180328515,942.608627326041,933.530730616098,965.219518559989,792.882353824294,848.604093080187,877.751009746211,971.607525659115,966.123544343644,988.301087641242,996.635764032395,955.550986113455,964.951711091265,941.193804831151,969.025426039999,918.167991853383,994.883656140744,984.721248611858,985.370624713488,981.993155007686,1,905.667519653011,1,992.079654738595,996.216581953685,911.452879588587,823.536263509866,875.868486226647,864.466634090786,857.269160028566,998.054128409993,996.551543135398,995.518513373966,974.079325003076,998.529103596945,996.447132333395,968.73193041941,999.3016276876,989.106275764799,990.987380807645,985.755824340219,999.244129784108,999.868205861294,999.842203418542,871.47342212656,978.111733098331,992.388031581986,969.296251071527,1,1,1,813.542647332604,1,753.898486011226,1,1,1,1,1,1,1,1,1,1,1,1,1,972.155998253619,934.780820588764,933.739206804433,679.940214898141,511.524428994264,958.033631632122,961.62692369595,955.09592563697,941.395735916531,964.100822277287,895.867946633264,950.493869503125,981.632890109229,749.00029493394,792.778389732645,640.733695942511,694.221914948226,735.429281420347,635.538016576161,935.586964153781,916.69054491812,965.039976568247,938.240044911115,984.892320934502,917.242741041227,866.761209985012,958.171530514809,982.616816587129,908.609915873819,500.85533496498,902.767407184021,919.139067988567,841.303669608432,495.072731081639,589.209217823549,500.41578967215,639.110488100701,588.781766060558,686.372776629194,500.127067365269,775.837167695115,985.165115276375,846.121548071689,716.797375694755,809.746625414629,873.440603386458,748.044128351669,937.010821376323,919.913887666744,960.920536874422,761.976488798471,802.791983869549,500.912627307527,865.084218286946,681.999622559377,1,1,1,626.908190775133,500.784616555948,590.909952312323,630.307555109965,610.861053226553,664.283091369575,700.627194067566,909.591809222286,979.365691763626,1,885.910600185316,772.798171293758,810.4063575463,841.87611707644,715.851157617463,825.670143247274,668.534105324088,801.75136784885,742.984904644037,500.217320461291,737.397509807241,661.946911552665,628.706929566063,725.92363374172,641.89973069212,856.236809171641,725.430009400048,500.312863087963,579.464082496442,577.641767994907,594.565484384397,500.722233481805,620.459368163205,596.760731569557,499.933947316209,582.259897470488,702.969542911852,763.528336045319,780.995764695177,801.909610074788,676.066344734504,582.961507272024,774.439990241863,946.15429448699,963.187501151606,986.74424605889,925.445967303766,985.669984371193,999.894313049547,903.764084458623,993.395118716983,997.074215290668,996.237574232798,964.591950943002,985.574589503339,998.504378531905,980.676167503354,935.315287417235,863.601122879678,872.17167419268,990.707583777403,983.60927568283,959.812592166732,915.749972627105,925.418856319958,903.409036930508,948.46134796608,946.077794354978,609.388321455719,996.011282403278,979.457357184121,842.84363356204,910.985645985426,963.818156000827,801.108334786608,840.257070749033,772.603100784385,709.873700061385,500.344813780063,616.322442160829,1,1,1,1,1,1,499.866637392725,1,1,501.460122029553,995.957544599055,501.431563522223,1,502.948747502465,995.110142500344,1,875.092801123666,875.055054374527,1,1,1,731.177516628212,1,1,508.412495336992,625.207360695917,628.321018251219,728.005128116416,659.655180681466,700.857736500283,1,1,809.053069585702,1,1,1,1,1,1,859.853835369503,904.869823114556,1,1,1,1,1,1,1,965.919064392319,1,1,1,1,1,1,1,1,1,990.149845591318,1,1,1,964.615935468281,993.696664756764,961.025735538011,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,496.268147093205,500.826549184322,801.472154534533,773.072479244696,814.519777109157,753.360054262985,691.877703880189,611.716025255628,722.67489912282,887.744561277235,500.875766590865,882.927562948276,500.337879636434,629.563575883445,841.227699314767,803.222473856958,801.291372789651,781.795990733486,715.502764295091,880.756600807152,613.907014545822,837.086266715223,733.522908493587,749.122987425769,819.729524726529,965.973296041494,921.79196102151,642.473169711109,500.59977372102,870.540845520411,895.959273101962,931.684251846471,947.384716381506,949.972512958239,953.783312114716,988.153869658927,963.896180328515,942.608627326041,933.530730616098,965.219518559989,792.882353824294,848.604093080187,877.751009746211,971.607525659115,966.123544343643,988.301087641242,996.635764032395,955.550986113455,964.951711091265,941.193804831151,969.025426039999,918.167991853383,994.883656140744,984.721248611858,985.370624713489,981.993155007686,1,905.66751965301,1,992.079654738595,996.216581953685,911.452879588587,823.536263509866,875.868486226647,864.466634090786,857.269160028566,998.054128409993,996.551543135398,995.518513373966,974.079325003076,998.529103596945,996.447132333395,968.73193041941,999.3016276876,989.106275764799,990.987380807645,985.755824340219,999.244129784108,999.868205861294,999.842203418542,871.47342212656,978.111733098331,992.388031581986,969.296251071528,1,1,1,813.542647332604,1,753.898486011226,1,1,1,1,1,1,1,1,1,1,1,1,1,972.155998253619,934.780820588764,933.739206804433,679.94021489814,511.524428994264,958.033631632122,961.62692369595,955.09592563697,941.395735916532,964.100822277287,895.867946633264,950.493869503125,981.632890109229,749.00029493394,792.778389732645,640.73369594251,694.221914948226,735.429281420347,635.538016576161,935.586964153781,916.69054491812,965.039976568247,938.240044911115,984.892320934502,917.242741041227,866.761209985013,958.171530514809,982.61681658713,908.609915873819,500.85533496498,902.767407184021,919.139067988567,841.303669608432,495.072731081639,589.20921782355,500.41578967215,639.110488100701,588.781766060558,686.372776629194,500.127067365269,775.837167695115,985.165115276375,846.12154807169,716.797375694755,809.746625414629,873.440603386458,748.044128351669,937.010821376323,919.913887666744,960.920536874422,761.976488798471,802.791983869549,500.912627307527,865.084218286946,681.999622559377,1,1,1,626.908190775133,500.784616555948,590.909952312323,630.307555109965,610.861053226553,664.283091369574,700.627194067566,909.591809222286,979.365691763626,1,885.910600185316,772.798171293758,810.4063575463,841.87611707644,715.851157617463,825.670143247274,668.534105324088,801.75136784885,742.984904644037,500.217320461291,737.397509807241,661.946911552665,628.706929566063,725.92363374172,641.89973069212,856.236809171641,725.430009400048,500.312863087963,579.464082496442,577.641767994907,594.565484384397,500.722233481805,620.459368163205,596.760731569557,499.933947316209,582.259897470488,702.969542911852,763.528336045319,780.995764695177,801.909610074788,676.066344734504,582.961507272024,774.439990241863,946.15429448699,963.187501151606,986.74424605889,925.445967303766,985.669984371193,999.894313049547,903.764084458623,993.395118716983,997.074215290668,996.237574232798,964.591950943002,985.574589503339,998.504378531905,980.676167503355,935.315287417235,863.601122879678,872.17167419268,990.707583777403,983.60927568283,959.812592166732,915.749972627105,925.418856319958,903.409036930508,948.46134796608,946.077794354978,609.388321455719,996.011282403278,979.457357184121,842.84363356204,910.985645985426,963.818156000827,801.108334786608,840.257070749033,772.603100784385,709.873700061385,500.344813780063,616.322442160829,1,1,1,1,1,1,499.866637392725,1,1,501.460122029553,995.957544599055,501.431563522223,1,502.948747502465,995.110142500344,1,875.092801123666,875.055054374527,1,1,1,731.177516628212,1,1,508.412495336992,625.207360695917,628.321018251219,728.005128116416,659.655180681466,700.857736500282,1,1,809.053069585702,1,1,1,1,1,1,859.853835369503,904.869823114555,1,1,1,1,1,1,1,965.919064392319,1,1,1,1,1,1,1,1,1,990.149845591318,1,1,1,964.615935468281,993.696664756764,961.025735538011,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,496.268147093205,500.826549184322,801.472154534533,773.072479244696,814.519777109157,753.360054262985,691.877703880188,611.716025255628,722.67489912282,887.744561277236,500.875766590865,882.927562948276,500.337879636434,629.563575883445,841.227699314767,803.222473856958,801.291372789651,781.795990733486,715.502764295091,880.756600807152,613.907014545822,837.086266715223,733.522908493587,749.122987425769,819.729524726529,965.973296041494,921.79196102151,642.473169711109,500.59977372102,870.540845520411,895.959273101962,931.684251846471,947.384716381506,949.972512958238,953.783312114716,988.153869658927,963.896180328515,942.608627326041,933.530730616098,965.219518559989,792.882353824294,848.604093080187,877.751009746211,971.607525659115,966.123544343644,988.301087641242,996.635764032395,955.550986113455,964.951711091265,941.193804831151,969.025426039999,918.167991853383,994.883656140744,984.721248611858,985.370624713488,981.993155007686,1,905.667519653011,1,992.079654738595,996.216581953685,911.452879588587,823.536263509866,875.868486226647,864.466634090786,857.269160028566,998.054128409993,996.551543135398,995.518513373966,974.079325003076,998.529103596945,996.447132333395,968.73193041941,999.3016276876,989.106275764799,990.987380807645,985.755824340219,999.244129784108,999.868205861294,999.842203418542,871.47342212656,978.111733098331,992.388031581986,969.296251071527,1,1,1,813.542647332604,1,753.898486011226,1,1,1,1,1,1,1,1,1,1,1,1,1,972.155998253619,934.780820588764,933.739206804433,679.940214898141,511.524428994264,958.033631632122,961.62692369595,955.09592563697,941.395735916531,964.100822277287,895.867946633264,950.493869503125,981.632890109229,749.00029493394,792.778389732645,640.733695942511,694.221914948226,735.429281420347,635.538016576161,935.586964153781,916.69054491812,965.039976568247,938.240044911115,984.892320934502,917.242741041227,866.761209985012,958.171530514809,982.616816587129,908.609915873819,500.85533496498,902.767407184021,919.139067988567,841.303669608432,495.072731081639,589.209217823549,500.41578967215,639.110488100701,588.781766060558,686.372776629194,500.127067365269,775.837167695115,985.165115276375,846.121548071689,716.797375694755,809.746625414629,873.440603386458,748.044128351669,937.010821376323,919.913887666744,960.920536874422,761.976488798471,802.791983869549,500.912627307527,865.084218286946,681.999622559377,1,1,1,626.908190775133,500.784616555948,590.909952312323,630.307555109965,610.861053226553,664.283091369575,700.627194067566,909.591809222286,979.365691763626,1,885.910600185316,772.798171293758,810.4063575463,841.87611707644,715.851157617463,825.670143247274,668.534105324088,801.75136784885,742.984904644037,500.217320461291,737.397509807241,661.946911552665,628.706929566063,725.92363374172,641.89973069212,856.236809171641,725.430009400048,500.312863087963,579.464082496442,577.641767994907,594.565484384397,500.722233481805,620.459368163205,596.760731569557,499.933947316209,582.259897470488,702.969542911852,763.528336045319,780.995764695177,801.909610074788,676.066344734504,582.961507272024,774.439990241863,946.15429448699,963.187501151606,986.74424605889,925.445967303766,985.669984371193,999.894313049547,903.764084458623,993.395118716983,997.074215290668,996.237574232798,964.591950943002,985.574589503339,998.504378531905,980.676167503354,935.315287417235,863.601122879678,872.17167419268,990.707583777403,983.60927568283,959.812592166732,915.749972627105,925.418856319958,903.409036930508,948.46134796608,946.077794354978,609.388321455719,996.011282403278,979.457357184121,842.84363356204,910.985645985426,963.818156000827,801.108334786608,840.257070749033,772.603100784385,709.873700061385,500.344813780063,616.322442160829,1,1,1,1,1,1],"Archive803_field15":[999.866637392725,0.103616813294233,0.103616813294233,911.821803358977,346.079734237374,396.37291249583,0.103616813294233,308.251777805495,950.290983165055,0.103616813294233,675.153895942826,630.296989858398,0.103616813294233,0.103616813294233,0.103616813294233,177.670674008466,0.103616813294233,0.103616813294233,162.450862883424,243.292954537559,170.774280714562,144.892881659916,238.061216849599,156.293934416949,0.103616813294233,0.103616813294233,118.19772302534,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,180.010852111123,104.833190538865,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.085455352479,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,117.823155390706,0.103616813294233,0.103616813294233,0.103616813294233,99.9504292860584,203.12072629963,99.5784242101947,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,225.938846017936,608.658905000549,166.912078997039,283.294475656851,227.501507029792,228.534641991511,267.464592310878,306.462099823628,370.63604477764,335.314194258668,457.443459650494,253.576759936478,381.273241317763,425.24546071125,294.861201388717,355.962329654989,494.2576559266,423.433247021672,471.211793022586,440.84036297979,512.577423443708,406.573692618632,580.808147172447,524.921810023603,574.813478263957,294.89021192563,194.421420279905,365.35821712286,532.799798158948,928.312106517479,538.280181976335,297.069132671041,405.794714540246,240.948111795815,346.044232740315,407.34118377177,192.959248666253,149.242261017887,105.308771959826,127.79182530202,666.286585651537,528.383042003097,131.478361101052,129.74908056602,273.048172252636,224.403943175716,284.662108127808,174.769755155244,133.000519100045,97.5235027488778,214.920195181565,256.020027656409,259.728921215327,275.770196242109,341.716235950656,376.465949989006,0.103616813294233,129.825994139132,0.103616813294233,340.355554242887,422.16938950893,192.692970845995,261.699878815543,239.937530414608,355.930973510233,190.54300916759,408.504658868796,524.212436432137,461.480470277063,477.707806358119,493.525654205384,633.209064320027,503.048698645771,566.195680358577,478.204465984725,651.35730285028,568.970313835067,623.392893723697,750.80268249535,684.835443554418,974.063842458916,734.462482969155,693.789054929144,648.673650716548,0.103616813294233,0.103616813294233,0.103616813294233,143.533284907799,0.103616813294233,215.542965179986,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,420.995570061606,483.779920477865,719.227034189255,329.158292004234,255.201115211273,588.162346201359,701.534040088742,758.848620021144,661.601357387004,961.736452775821,814.588569105504,578.983180526348,840.696207949982,282.531463300602,331.972418979403,266.962936032016,207.103846323162,223.975798735727,303.582371414871,543.241464100781,599.494241749081,531.42927020847,718.286293318991,581.737042123528,662.487308359439,720.150423688816,660.05521416808,745.64650695237,612.088866912669,698.326009451784,495.030330459808,550.848859361765,564.628026859786,314.381748676947,352.155837059757,546.621801402355,463.632252802818,413.782107847794,402.627119352728,470.700747717175,478.161791276673,525.427497344533,670.140701632786,919.613846858001,407.316352300075,431.754330656489,426.710212732001,375.283416308761,434.548353030562,430.843970829859,795.591135044444,737.557432223768,760.009645880352,825.675881659632,707.953915716007,0.103616813294233,0.103616813294233,0.103616813294233,596.83652168559,684.249303750474,726.087364048676,831.609379780019,661.795410851523,772.417049509696,641.977596361443,394.645729571921,165.189762084225,0.103616813294233,744.766251321186,811.437991730603,730.261486119498,794.283490172797,985.89636778364,895.830310467157,732.523183782269,644.491154215367,754.619656413326,848.952657704693,686.271586580386,822.7371453464,641.788149943315,609.41513568202,552.914815659185,621.047683234782,897.167705516463,773.415868953066,732.052839182856,807.709740816982,871.659785938511,925.089902103506,992.10276590281,934.24242839436,621.772290424713,512.431940586054,503.539066333647,546.556095368774,866.148258763473,980.414925324055,942.973464361034,595.78675411496,932.228137478173,841.881198119899,897.016327993977,955.339981640513,967.746492719211,899.692178645491,840.379047836732,899.180827835493,786.277544083856,807.590262517747,901.417586959996,939.818001773892,942.965535251139,872.184582897254,862.072557835255,916.171568721738,923.960471318105,865.776987288499,894.417448247718,804.728435839906,773.740963020638,786.601162322825,934.105012233936,875.834671051457,874.180984954331,821.085079643972,216.859861150238,716.033590997168,688.053723384112,494.670950396249,322.555050092196,338.46697011819,923.589700866765,878.660556564458,862.893452390132,832.885752936644,835.074163731187,915.099018407164,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,999.866637392725,0.103616813294233,0.103616813294233,911.821803358977,346.079734237374,396.37291249583,0.103616813294233,308.251777805495,950.290983165055,0.103616813294233,675.153895942825,630.296989858398,0.103616813294233,0.103616813294233,0.103616813294233,177.670674008466,0.103616813294233,0.103616813294233,162.450862883424,243.292954537559,170.774280714562,144.892881659916,238.061216849599,156.293934416949,0.103616813294233,0.103616813294233,118.19772302534,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,180.010852111123,104.833190538865,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.085455352479,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,117.823155390706,0.103616813294233,0.103616813294233,0.103616813294233,99.9504292860584,203.12072629963,99.5784242101947,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,225.938846017936,608.658905000549,166.912078997039,283.294475656851,227.501507029792,228.534641991511,267.464592310878,306.462099823628,370.63604477764,335.314194258668,457.443459650494,253.576759936478,381.273241317763,425.24546071125,294.861201388717,355.962329654989,494.2576559266,423.433247021672,471.211793022586,440.84036297979,512.577423443708,406.573692618632,580.808147172447,524.921810023603,574.813478263957,294.89021192563,194.421420279904,365.35821712286,532.799798158948,928.312106517479,538.280181976335,297.069132671041,405.794714540246,240.948111795815,346.044232740315,407.34118377177,192.959248666253,149.242261017887,105.308771959826,127.79182530202,666.286585651537,528.383042003097,131.478361101052,129.74908056602,273.048172252636,224.403943175716,284.662108127807,174.769755155244,133.000519100045,97.5235027488778,214.920195181565,256.020027656409,259.728921215327,275.770196242109,341.716235950655,376.465949989006,0.103616813294233,129.825994139132,0.103616813294233,340.355554242887,422.16938950893,192.692970845995,261.699878815543,239.937530414608,355.930973510233,190.54300916759,408.504658868796,524.212436432137,461.480470277063,477.707806358119,493.525654205384,633.209064320027,503.048698645771,566.195680358577,478.204465984725,651.35730285028,568.970313835067,623.392893723697,750.80268249535,684.835443554418,974.063842458916,734.462482969155,693.789054929143,648.673650716548,0.103616813294233,0.103616813294233,0.103616813294233,143.533284907799,0.103616813294233,215.542965179986,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,420.995570061606,483.779920477864,719.227034189255,329.158292004234,255.201115211273,588.162346201359,701.534040088742,758.848620021144,661.601357387004,961.736452775821,814.588569105504,578.983180526348,840.696207949982,282.531463300602,331.972418979403,266.962936032016,207.103846323161,223.975798735727,303.582371414871,543.241464100781,599.494241749081,531.42927020847,718.286293318991,581.737042123528,662.487308359439,720.150423688816,660.05521416808,745.64650695237,612.088866912669,698.326009451784,495.030330459808,550.848859361765,564.628026859786,314.381748676947,352.155837059757,546.621801402355,463.632252802818,413.782107847794,402.627119352728,470.700747717175,478.161791276673,525.427497344533,670.140701632786,919.613846858001,407.316352300075,431.754330656489,426.710212732001,375.283416308761,434.548353030562,430.843970829859,795.591135044444,737.557432223768,760.009645880352,825.675881659632,707.953915716007,0.103616813294233,0.103616813294233,0.103616813294233,596.83652168559,684.249303750474,726.087364048676,831.609379780019,661.795410851523,772.417049509696,641.977596361443,394.645729571921,165.189762084225,0.103616813294233,744.766251321186,811.437991730603,730.261486119498,794.283490172797,985.896367783641,895.830310467158,732.523183782269,644.491154215367,754.619656413326,848.952657704693,686.271586580386,822.7371453464,641.788149943315,609.41513568202,552.914815659185,621.047683234782,897.167705516462,773.415868953066,732.052839182856,807.709740816981,871.659785938511,925.089902103506,992.102765902811,934.242428394359,621.772290424713,512.431940586054,503.539066333647,546.556095368774,866.148258763473,980.414925324055,942.973464361034,595.78675411496,932.228137478173,841.881198119899,897.016327993978,955.339981640513,967.746492719211,899.692178645491,840.379047836732,899.180827835493,786.277544083856,807.590262517747,901.417586959996,939.818001773892,942.965535251139,872.184582897255,862.072557835255,916.171568721738,923.960471318105,865.776987288499,894.417448247717,804.728435839906,773.740963020639,786.601162322825,934.105012233936,875.834671051457,874.18098495433,821.085079643972,216.859861150238,716.033590997168,688.053723384112,494.670950396249,322.555050092196,338.46697011819,923.589700866765,878.660556564458,862.893452390132,832.885752936644,835.074163731187,915.099018407164,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,999.866637392725,0.103616813294233,0.103616813294233,911.821803358977,346.079734237374,396.37291249583,0.103616813294233,308.251777805495,950.290983165055,0.103616813294233,675.153895942826,630.296989858398,0.103616813294233,0.103616813294233,0.103616813294233,177.670674008466,0.103616813294233,0.103616813294233,162.450862883424,243.292954537559,170.774280714562,144.892881659916,238.061216849599,156.293934416949,0.103616813294233,0.103616813294233,118.19772302534,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,180.010852111123,104.833190538865,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.085455352479,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,117.823155390706,0.103616813294233,0.103616813294233,0.103616813294233,99.9504292860584,203.12072629963,99.5784242101947,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,225.938846017936,608.658905000549,166.912078997039,283.294475656851,227.501507029792,228.534641991511,267.464592310878,306.462099823628,370.63604477764,335.314194258668,457.443459650494,253.576759936478,381.273241317763,425.24546071125,294.861201388717,355.962329654989,494.2576559266,423.433247021672,471.211793022586,440.84036297979,512.577423443708,406.573692618632,580.808147172447,524.921810023603,574.813478263957,294.89021192563,194.421420279905,365.35821712286,532.799798158948,928.312106517479,538.280181976335,297.069132671041,405.794714540246,240.948111795815,346.044232740315,407.34118377177,192.959248666253,149.242261017887,105.308771959826,127.79182530202,666.286585651537,528.383042003097,131.478361101052,129.74908056602,273.048172252636,224.403943175716,284.662108127808,174.769755155244,133.000519100045,97.5235027488778,214.920195181565,256.020027656409,259.728921215327,275.770196242109,341.716235950656,376.465949989006,0.103616813294233,129.825994139132,0.103616813294233,340.355554242887,422.16938950893,192.692970845995,261.699878815543,239.937530414608,355.930973510233,190.54300916759,408.504658868796,524.212436432137,461.480470277063,477.707806358119,493.525654205384,633.209064320027,503.048698645771,566.195680358577,478.204465984725,651.35730285028,568.970313835067,623.392893723697,750.80268249535,684.835443554418,974.063842458916,734.462482969155,693.789054929144,648.673650716548,0.103616813294233,0.103616813294233,0.103616813294233,143.533284907799,0.103616813294233,215.542965179986,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,420.995570061606,483.779920477865,719.227034189255,329.158292004234,255.201115211273,588.162346201359,701.534040088742,758.848620021144,661.601357387004,961.736452775821,814.588569105504,578.983180526348,840.696207949982,282.531463300602,331.972418979403,266.962936032016,207.103846323162,223.975798735727,303.582371414871,543.241464100781,599.494241749081,531.42927020847,718.286293318991,581.737042123528,662.487308359439,720.150423688816,660.05521416808,745.64650695237,612.088866912669,698.326009451784,495.030330459808,550.848859361765,564.628026859786,314.381748676947,352.155837059757,546.621801402355,463.632252802818,413.782107847794,402.627119352728,470.700747717175,478.161791276673,525.427497344533,670.140701632786,919.613846858001,407.316352300075,431.754330656489,426.710212732001,375.283416308761,434.548353030562,430.843970829859,795.591135044444,737.557432223768,760.009645880352,825.675881659632,707.953915716007,0.103616813294233,0.103616813294233,0.103616813294233,596.83652168559,684.249303750474,726.087364048676,831.609379780019,661.795410851523,772.417049509696,641.977596361443,394.645729571921,165.189762084225,0.103616813294233,744.766251321186,811.437991730603,730.261486119498,794.283490172797,985.89636778364,895.830310467157,732.523183782269,644.491154215367,754.619656413326,848.952657704693,686.271586580386,822.7371453464,641.788149943315,609.41513568202,552.914815659185,621.047683234782,897.167705516463,773.415868953066,732.052839182856,807.709740816982,871.659785938511,925.089902103506,992.10276590281,934.24242839436,621.772290424713,512.431940586054,503.539066333647,546.556095368774,866.148258763473,980.414925324055,942.973464361034,595.78675411496,932.228137478173,841.881198119899,897.016327993977,955.339981640513,967.746492719211,899.692178645491,840.379047836732,899.180827835493,786.277544083856,807.590262517747,901.417586959996,939.818001773892,942.965535251139,872.184582897254,862.072557835255,916.171568721738,923.960471318105,865.776987288499,894.417448247718,804.728435839906,773.740963020638,786.601162322825,934.105012233936,875.834671051457,874.180984954331,821.085079643972,216.859861150238,716.033590997168,688.053723384112,494.670950396249,322.555050092196,338.46697011819,923.589700866765,878.660556564458,862.893452390132,832.885752936644,835.074163731187,915.099018407164,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive803_field16":[-666623.167647471,331032.676479026,328541.254754706,-666704.072366901,-167005.981315952,-166665.982067437,325974.580634157,-166788.178033985,-666475.966994431,81807.6262248318,-416977.870381137,-416736.540425762,81697.5156013117,327158.159700752,83620.5506824659,-41433.986666591,206944.277581573,82793.6416575948,-41570.469941767,-104992.730963524,-39925.4844370316,20721.0945080316,21210.384422238,50518.84036223,207462.868189384,125811.553479312,20089.9607405932,83672.6722546784,144898.83897147,116600.05580013,145227.882770259,69746.2712200644,43292.1564627889,-48447.4721407089,12323.7390897978,205680.397018556,148247.80022724,121735.787867483,210203.903457632,151322.634963649,90560.3299393614,326236.149154123,32461.4134765213,224934.393841738,73267.4380090289,87295.80336866,201365.808605333,326334.864720127,273405.65225694,260389.027064773,167084.822740354,328083.265349848,13718.8397124421,175865.604322632,275948.154649284,60610.0733078702,33972.5138461116,-49436.2704990569,56971.5633134225,145840.152748253,196106.055068313,255827.29897547,170613.269313121,121075.467207647,143747.844470112,235898.291576691,327577.569734954,95742.7224370486,328102.146717813,135918.539431677,136851.318624258,326557.0679966,228794.77194237,188711.516336819,180813.039754653,211269.468364566,206798.188500664,257741.242264497,183473.388287293,105893.272018732,153791.942818866,84089.8873907095,171533.837025412,176306.422168264,329940.029941821,256204.176271905,326676.032094827,278758.631480719,283746.354682124,326942.137164308,274003.92700125,288241.093200648,238461.605857903,-104164.140088499,-416699.980507927,-35933.9790849235,-138886.183334062,-91293.4709934435,-90066.7238442928,-131870.345981313,-164738.622593235,-211376.13267494,-174445.781062953,-291619.635120153,-108682.331552716,-229115.40450854,-260944.923378183,-143900.186918699,-196023.269754874,-309447.702193487,-252586.21397984,-294834.961991308,-260776.210489235,-333460.715183354,-235383.803117331,-384453.886074765,-337581.832927941,-374863.896209563,-135354.128557675,-55029.7259849225,-211510.911620358,-354199.617961638,-666546.245456839,-339450.568245896,-138175.380235823,-226326.218817795,-91351.9202218238,-177031.796769683,-221129.593315548,-63911.8170245299,-29106.8107767938,10354.9013326625,-9251.2192498704,-451674.364301953,-334772.663040834,1790.76102841841,-490.862167467227,-98712.042982932,-58940.3562807934,-111815.986199812,-7480.72587036838,8747.47512411237,59627.1769140221,-47074.0474158709,-76565.0832863971,-98155.3065950142,-115580.477090148,-168443.695274149,-184492.190872766,92758.9840674742,33106.9205879445,105127.559539922,-158232.709268627,-225061.689036102,-22061.2040840612,-67592.6025954743,-58076.5711707229,-154479.556383619,5660.74568414835,-217943.165906745,-314379.223490498,-263025.422254549,-281360.10408249,-284952.693538535,-397962.365641658,-284742.644469005,-344869.091203081,-268334.745569215,-420797.335673555,-341935.596992165,-393970.420620349,-497718.431915726,-442877.938840791,-666526.59062527,-476960.677729886,-446374.219277185,-404483.493575733,61101.3270874857,65754.5971977515,115395.814776236,48143.0386677128,126395.735081683,-17373.9073984895,208519.376600307,118641.13440877,219479.846985911,180369.916195744,168881.767075731,235125.383710557,146442.794104175,206921.024219778,271158.191602979,267921.645068255,328961.93454714,289709.911574013,268687.334909387,-235187.573274181,-291135.831502963,-458454.663015946,-123547.385184937,-41226.6061328166,-374680.6821719,-446932.093891464,-493640.243020573,-411560.556341634,-666493.096020561,-533456.855443305,-344753.061798535,-564515.361324688,-78508.4590735325,-130766.401848612,-58647.0024243482,54775.6249991193,16344.1575618609,21686.9943316241,-340092.597082965,-388201.530558883,-326962.34147676,-484019.970865365,-365073.019501806,-440104.946429064,-491784.316070758,-433634.473154332,-500577.378162711,-367679.36717573,-416671.807601837,-270806.21785911,-318261.425972609,-323463.30672172,-104314.069410549,-135608.789970641,-291653.508431326,-229439.583174798,-186806.953080432,-180284.234326775,-229105.840772963,-248170.586006065,-318533.130593114,-451675.931252148,-666514.339751493,-192065.366045117,-216622.363965566,-204238.694255254,-176603.070709152,-223211.883319025,-224537.616339883,-560002.336583926,-510192.615747084,-541658.03449023,-578274.442040358,-491825.440538426,325872.458537799,282226.191516304,239996.118121208,-402349.158396376,-479149.369901715,-510660.268991144,-596632.726745469,-456683.911396706,-545437.234251072,-436520.901597249,-220555.691614046,-32863.774228287,332135.883544009,-475134.394367035,-522882.280563747,-457921.359338486,-512941.042713051,-666579.350420531,-595801.863401112,-452423.533604235,-386700.611964022,-474236.612800225,-541641.854137839,-417624.899856101,-526538.340188783,-375775.622067566,-353480.720484372,-302917.029571226,-370893.944442464,-590750.486715932,-479165.831501913,-448039.954249162,-510540.214993983,-563957.487521321,-604171.676846829,-666577.033993743,-616319.204797165,-354189.034034106,-266803.010901179,-265287.859866119,-303895.174618191,-568102.100948373,-666514.339881053,-627202.824374685,-336012.19484739,-623732.392361298,-560217.361196192,-609445.492982231,-666528.504753199,-666546.409041805,-616075.041457077,-569465.840807647,-604780.165737952,-522923.775612364,-547479.507020197,-622081.203055747,-666450.000530509,-666616.997218034,-600414.768442815,-597388.673120768,-622809.343589178,-623078.128044529,-573251.600849226,-622461.212809787,-549163.265259496,-527364.32294325,-542542.398491478,-666547.293962754,-618126.337082184,-613207.28531604,-567355.624249148,-5663.01904694134,-472699.815700287,-453774.244589874,-265950.619468317,-131120.615480341,-150119.185770611,-666534.125289253,-625704.832433985,-615860.866170608,-594095.409069877,-604166.920074198,-666591.601858667,190487.578967938,270050.147130439,271447.689265746,233151.715256774,269831.589898314,329095.513641073,-666623.167647471,331032.676479026,328541.254754706,-666704.072366901,-167005.981315952,-166665.982067437,325974.580634157,-166788.178033985,-666475.966994431,81807.6262248318,-416977.870381137,-416736.540425762,81697.5156013117,327158.159700752,83620.5506824659,-41433.9866665909,206944.277581573,82793.6416575948,-41570.469941767,-104992.730963524,-39925.4844370316,20721.0945080316,21210.384422238,50518.84036223,207462.868189384,125811.553479312,20089.9607405931,83672.6722546784,144898.83897147,116600.05580013,145227.882770259,69746.2712200644,43292.1564627889,-48447.4721407089,12323.7390897978,205680.397018556,148247.80022724,121735.787867483,210203.903457632,151322.634963649,90560.3299393614,326236.149154123,32461.4134765213,224934.393841738,73267.4380090289,87295.80336866,201365.808605333,326334.864720127,273405.65225694,260389.027064773,167084.822740354,328083.265349848,13718.8397124421,175865.604322632,275948.154649284,60610.0733078702,33972.5138461116,-49436.2704990569,56971.5633134225,145840.152748253,196106.055068313,255827.29897547,170613.269313121,121075.467207647,143747.844470112,235898.291576691,327577.569734954,95742.7224370486,328102.146717813,135918.539431677,136851.318624258,326557.0679966,228794.77194237,188711.516336819,180813.039754653,211269.468364566,206798.188500664,257741.242264497,183473.388287293,105893.272018732,153791.942818866,84089.8873907095,171533.837025412,176306.422168264,329940.029941821,256204.176271905,326676.032094827,278758.631480719,283746.354682124,326942.137164308,274003.92700125,288241.093200648,238461.605857903,-104164.140088499,-416699.980507926,-35933.9790849235,-138886.183334062,-91293.4709934435,-90066.7238442928,-131870.345981313,-164738.622593235,-211376.13267494,-174445.781062953,-291619.635120153,-108682.331552717,-229115.40450854,-260944.923378183,-143900.186918699,-196023.269754874,-309447.702193487,-252586.21397984,-294834.961991308,-260776.210489235,-333460.715183354,-235383.803117331,-384453.886074764,-337581.832927941,-374863.896209563,-135354.128557675,-55029.7259849225,-211510.911620358,-354199.617961638,-666546.245456839,-339450.568245896,-138175.380235823,-226326.218817795,-91351.9202218238,-177031.796769683,-221129.593315548,-63911.8170245299,-29106.8107767938,10354.9013326625,-9251.2192498704,-451674.364301953,-334772.663040834,1790.76102841841,-490.862167467226,-98712.042982932,-58940.3562807934,-111815.986199812,-7480.72587036838,8747.47512411237,59627.1769140221,-47074.0474158709,-76565.0832863971,-98155.3065950142,-115580.477090148,-168443.695274149,-184492.190872766,92758.9840674742,33106.9205879445,105127.559539922,-158232.709268627,-225061.689036102,-22061.2040840612,-67592.6025954743,-58076.5711707229,-154479.556383619,5660.74568414834,-217943.165906745,-314379.223490497,-263025.422254549,-281360.10408249,-284952.693538535,-397962.365641658,-284742.644469005,-344869.091203081,-268334.745569215,-420797.335673555,-341935.596992165,-393970.42062035,-497718.431915726,-442877.938840791,-666526.59062527,-476960.677729886,-446374.219277185,-404483.493575733,61101.3270874857,65754.5971977515,115395.814776236,48143.0386677128,126395.735081683,-17373.9073984895,208519.376600307,118641.13440877,219479.846985911,180369.916195744,168881.767075731,235125.383710557,146442.794104175,206921.024219778,271158.191602979,267921.645068255,328961.93454714,289709.911574013,268687.334909388,-235187.573274181,-291135.831502963,-458454.663015946,-123547.385184937,-41226.6061328166,-374680.6821719,-446932.093891464,-493640.243020573,-411560.556341634,-666493.096020562,-533456.855443305,-344753.061798535,-564515.361324688,-78508.4590735325,-130766.401848612,-58647.0024243482,54775.6249991193,16344.1575618609,21686.9943316241,-340092.597082965,-388201.530558883,-326962.34147676,-484019.970865365,-365073.019501806,-440104.946429064,-491784.316070759,-433634.473154332,-500577.378162711,-367679.36717573,-416671.807601837,-270806.21785911,-318261.425972609,-323463.30672172,-104314.069410549,-135608.789970641,-291653.508431326,-229439.583174798,-186806.953080432,-180284.234326775,-229105.840772963,-248170.586006065,-318533.130593114,-451675.931252149,-666514.339751493,-192065.366045117,-216622.363965566,-204238.694255254,-176603.070709152,-223211.883319025,-224537.616339883,-560002.336583926,-510192.615747084,-541658.03449023,-578274.442040358,-491825.440538426,325872.458537799,282226.191516304,239996.118121208,-402349.158396376,-479149.369901715,-510660.268991144,-596632.726745469,-456683.911396706,-545437.234251072,-436520.901597249,-220555.691614046,-32863.774228287,332135.883544009,-475134.394367035,-522882.280563747,-457921.359338487,-512941.042713051,-666579.350420531,-595801.863401112,-452423.533604235,-386700.611964022,-474236.612800225,-541641.854137839,-417624.899856101,-526538.340188783,-375775.622067566,-353480.720484372,-302917.029571226,-370893.944442464,-590750.486715932,-479165.831501913,-448039.954249162,-510540.214993983,-563957.487521321,-604171.676846829,-666577.033993743,-616319.204797165,-354189.034034106,-266803.010901179,-265287.859866119,-303895.174618191,-568102.100948373,-666514.339881053,-627202.824374685,-336012.19484739,-623732.392361298,-560217.361196192,-609445.492982231,-666528.504753199,-666546.409041805,-616075.041457077,-569465.840807647,-604780.165737952,-522923.775612364,-547479.507020197,-622081.203055747,-666450.000530509,-666616.997218034,-600414.768442815,-597388.673120768,-622809.343589178,-623078.128044529,-573251.600849226,-622461.212809787,-549163.265259496,-527364.32294325,-542542.398491478,-666547.293962754,-618126.337082184,-613207.28531604,-567355.624249148,-5663.01904694134,-472699.815700286,-453774.244589874,-265950.619468317,-131120.615480341,-150119.185770611,-666534.125289253,-625704.832433985,-615860.866170608,-594095.409069877,-604166.920074198,-666591.601858667,190487.578967938,270050.147130439,271447.689265746,233151.715256774,269831.589898314,329095.513641073,-666623.167647471,331032.676479026,328541.254754706,-666704.072366901,-167005.981315952,-166665.982067437,325974.580634157,-166788.178033985,-666475.966994431,81807.6262248318,-416977.870381137,-416736.540425762,81697.5156013117,327158.159700752,83620.5506824659,-41433.986666591,206944.277581573,82793.6416575948,-41570.469941767,-104992.730963524,-39925.4844370316,20721.0945080316,21210.384422238,50518.84036223,207462.868189384,125811.553479312,20089.9607405932,83672.6722546784,144898.83897147,116600.05580013,145227.882770259,69746.2712200644,43292.1564627889,-48447.4721407089,12323.7390897978,205680.397018556,148247.80022724,121735.787867483,210203.903457632,151322.634963649,90560.3299393614,326236.149154123,32461.4134765213,224934.393841738,73267.4380090289,87295.80336866,201365.808605333,326334.864720127,273405.65225694,260389.027064773,167084.822740354,328083.265349848,13718.8397124421,175865.604322632,275948.154649284,60610.0733078702,33972.5138461116,-49436.2704990569,56971.5633134225,145840.152748253,196106.055068313,255827.29897547,170613.269313121,121075.467207647,143747.844470112,235898.291576691,327577.569734954,95742.7224370486,328102.146717813,135918.539431677,136851.318624258,326557.0679966,228794.77194237,188711.516336819,180813.039754653,211269.468364566,206798.188500664,257741.242264497,183473.388287293,105893.272018732,153791.942818866,84089.8873907095,171533.837025412,176306.422168264,329940.029941821,256204.176271905,326676.032094827,278758.631480719,283746.354682124,326942.137164308,274003.92700125,288241.093200648,238461.605857903,-104164.140088499,-416699.980507927,-35933.9790849235,-138886.183334062,-91293.4709934435,-90066.7238442928,-131870.345981313,-164738.622593235,-211376.13267494,-174445.781062953,-291619.635120153,-108682.331552716,-229115.40450854,-260944.923378183,-143900.186918699,-196023.269754874,-309447.702193487,-252586.21397984,-294834.961991308,-260776.210489235,-333460.715183354,-235383.803117331,-384453.886074765,-337581.832927941,-374863.896209563,-135354.128557675,-55029.7259849225,-211510.911620358,-354199.617961638,-666546.245456839,-339450.568245896,-138175.380235823,-226326.218817795,-91351.9202218238,-177031.796769683,-221129.593315548,-63911.8170245299,-29106.8107767938,10354.9013326625,-9251.2192498704,-451674.364301953,-334772.663040834,1790.76102841841,-490.862167467227,-98712.042982932,-58940.3562807934,-111815.986199812,-7480.72587036838,8747.47512411237,59627.1769140221,-47074.0474158709,-76565.0832863971,-98155.3065950142,-115580.477090148,-168443.695274149,-184492.190872766,92758.9840674742,33106.9205879445,105127.559539922,-158232.709268627,-225061.689036102,-22061.2040840612,-67592.6025954743,-58076.5711707229,-154479.556383619,5660.74568414835,-217943.165906745,-314379.223490498,-263025.422254549,-281360.10408249,-284952.693538535,-397962.365641658,-284742.644469005,-344869.091203081,-268334.745569215,-420797.335673555,-341935.596992165,-393970.420620349,-497718.431915726,-442877.938840791,-666526.59062527,-476960.677729886,-446374.219277185,-404483.493575733,61101.3270874857,65754.5971977515,115395.814776236,48143.0386677128,126395.735081683,-17373.9073984895,208519.376600307,118641.13440877,219479.846985911,180369.916195744,168881.767075731,235125.383710557,146442.794104175,206921.024219778,271158.191602979,267921.645068255,328961.93454714,289709.911574013,268687.334909387,-235187.573274181,-291135.831502963,-458454.663015946,-123547.385184937,-41226.6061328166,-374680.6821719,-446932.093891464,-493640.243020573,-411560.556341634,-666493.096020561,-533456.855443305,-344753.061798535,-564515.361324688,-78508.4590735325,-130766.401848612,-58647.0024243482,54775.6249991193,16344.1575618609,21686.9943316241,-340092.597082965,-388201.530558883,-326962.34147676,-484019.970865365,-365073.019501806,-440104.946429064,-491784.316070758,-433634.473154332,-500577.378162711,-367679.36717573,-416671.807601837,-270806.21785911,-318261.425972609,-323463.30672172,-104314.069410549,-135608.789970641,-291653.508431326,-229439.583174798,-186806.953080432,-180284.234326775,-229105.840772963,-248170.586006065,-318533.130593114,-451675.931252148,-666514.339751493,-192065.366045117,-216622.363965566,-204238.694255254,-176603.070709152,-223211.883319025,-224537.616339883,-560002.336583926,-510192.615747084,-541658.03449023,-578274.442040358,-491825.440538426,325872.458537799,282226.191516304,239996.118121208,-402349.158396376,-479149.369901715,-510660.268991144,-596632.726745469,-456683.911396706,-545437.234251072,-436520.901597249,-220555.691614046,-32863.774228287,332135.883544009,-475134.394367035,-522882.280563747,-457921.359338486,-512941.042713051,-666579.350420531,-595801.863401112,-452423.533604235,-386700.611964022,-474236.612800225,-541641.854137839,-417624.899856101,-526538.340188783,-375775.622067566,-353480.720484372,-302917.029571226,-370893.944442464,-590750.486715932,-479165.831501913,-448039.954249162,-510540.214993983,-563957.487521321,-604171.676846829,-666577.033993743,-616319.204797165,-354189.034034106,-266803.010901179,-265287.859866119,-303895.174618191,-568102.100948373,-666514.339881053,-627202.824374685,-336012.19484739,-623732.392361298,-560217.361196192,-609445.492982231,-666528.504753199,-666546.409041805,-616075.041457077,-569465.840807647,-604780.165737952,-522923.775612364,-547479.507020197,-622081.203055747,-666450.000530509,-666616.997218034,-600414.768442815,-597388.673120768,-622809.343589178,-623078.128044529,-573251.600849226,-622461.212809787,-549163.265259496,-527364.32294325,-542542.398491478,-666547.293962754,-618126.337082184,-613207.28531604,-567355.624249148,-5663.01904694134,-472699.815700287,-453774.244589874,-265950.619468317,-131120.615480341,-150119.185770611,-666534.125289253,-625704.832433985,-615860.866170608,-594095.409069877,-604166.920074198,-666591.601858667,190487.578967938,270050.147130439,271447.689265746,233151.715256774,269831.589898314,329095.513641073],"Archive803_field17":[94183.5078231127,94240.1266291589,94295.5954332382,94186.7704178703,94238.7195835837,94179.5416066256,94497.3834358519,94179.6172017406,94180.3689142075,94290.3387890574,94204.589719008,94206.0421274884,94339.0879587399,94449.6465233786,94226.2275594611,94253.3422918591,94311.4819677229,94254.3654610111,94190.7982294044,94245.1726704745,94239.4632289784,94245.4303709343,94218.6827710177,94234.987413552,94249.4631069821,94252.8858364785,94258.0349056906,94243.9640756566,94279.2911071143,94291.8199557764,94236.3493991528,94262.3923298747,94269.0776693406,94300.9793806207,94292.3575227986,94395.9864406393,94350.5940535199,94383.5103580228,94361.3141909632,94386.4997491212,94316.8553646343,94486.0267225633,94369.8479575529,94428.7445597064,94340.2748829696,94355.8246553975,94409.7084378252,94470.6450665927,94430.0246469706,94438.1623878728,94316.0608533836,94381.210715354,94358.2843523525,94406.421959829,94404.5025580713,94346.7428476309,94332.7938323794,94256.3693769389,94323.4394605199,94385.7794023054,94417.2825079669,94452.2271734796,94401.8014038161,94383.0396611629,94381.4360072542,94395.6575792053,94420.6668037817,94336.3179161756,94418.9773192475,94339.7519146128,94353.0038963392,94478.0487873302,94427.9350199083,94387.2938940018,94397.3341146673,94425.4633393483,94354.7423916615,94425.7914666839,94361.2188850388,94290.7996612243,94325.5298957141,94201.1610292995,94274.3120402187,94312.7999096086,94322.4067429721,94342.6395701264,94491.6876910206,94463.5407828948,94456.9635399613,94453.8777719543,94397.4492515514,94429.8806038228,94393.9386662312,94169.7927543069,94181.2113309795,94260.0914916788,94233.7946865642,94263.8709533072,94252.0764631184,94231.8536742291,94228.2975891706,94216.0715176316,94232.7652201637,94179.9131263214,94259.1253890602,94176.7965696217,94213.3355793917,94236.6839003984,94224.2279296821,94210.4239493769,94214.6898197776,94208.3505415392,94217.9383003962,94206.2527916067,94219.1809998091,94203.6416677995,94206.3901700269,94206.8113068304,94248.5744296772,94234.4017398867,94220.4802184525,94180.51392547,94181.6979905321,94211.209143073,94249.3047487724,94225.5756959755,94271.2135632228,94236.2432480495,94227.7401485314,94300.4525980873,94316.3495224428,94318.7230899115,94488.6014336825,94202.5135359738,94210.1206791129,94282.2429446962,94301.7871348246,94248.0932984696,94247.5384226537,94251.8465364951,94402.1160376873,94324.9334912207,94328.2752289477,94259.5324768345,94286.5096280654,94263.502250102,94258.6951740326,94239.278116998,94231.7630375403,94331.8601556113,94289.7003939638,94316.9084374199,94240.2400008819,94225.9968042863,94256.7959386849,94231.8428383915,94236.5888267252,94230.3395739471,94241.663647301,94227.792790876,94216.0118021046,94221.5662291428,94218.8240158272,94218.4308969672,94209.5849684257,94216.4448219204,94213.3347460821,94219.3935722284,94208.6284401108,94212.5585950349,94210.0575096393,94204.9996094961,94207.5089939577,94181.8972911496,94205.1262630445,94206.9592317897,94208.063176611,94254.6194565206,94217.5911446249,94245.4310755756,94233.0914267913,94233.0538691047,94185.6982233965,94208.3399714342,94210.969784377,94249.151009119,94250.6608810947,94225.9596686087,94291.4314782395,94201.0197836825,94224.1348761005,94218.9397772824,94248.5760415635,94374.6495361527,94321.7954356635,94277.4604534266,94224.9049250233,94216.6146953763,94204.5397549745,94220.038568256,94185.3318349677,94210.7243408348,94205.8883363259,94203.6685211094,94206.775778267,94180.8584706253,94201.5150433221,94210.9183838858,94203.027375431,94221.2216897103,94226.2092065008,94219.4958773906,94206.4744131207,94202.2627119153,94195.1162281395,94212.4665408181,94208.7718031804,94214.2516005796,94204.7856649979,94211.8323120505,94206.1023207426,94202.8338981837,94207.2614745701,94204.9219546761,94207.9170673286,94181.5700992958,94214.5379249307,94211.4367529328,94208.0441991891,94177.3681324078,94215.7372470168,94181.5890228886,94210.7143930609,94210.7026467594,94212.1453951466,94179.454979838,94210.4647780637,94215.4555394435,94203.9878470615,94181.4396180377,94217.5219162936,94218.0241840458,94212.3866444857,94229.1034678008,94220.8626860404,94222.9470142112,94199.3975742036,94200.9051872325,94181.7924944089,94200.9437854258,94199.0721831287,94495.5947003415,94462.7427758339,94443.526825883,94204.7286520282,94181.8912351875,94198.645608546,94200.7590354212,94201.5159147509,94199.1336647505,94201.2947354674,94224.6487849813,94291.2160373596,94274.5360845647,94202.7516235973,94198.7718665932,94201.3762949012,94200.4421907579,94182.5731452866,94199.1293049427,94198.024691175,94203.5811406437,94199.1941279273,94182.3683842476,94200.4811805504,94196.5814223825,94202.871088627,94202.4433181361,94202.7667723625,94206.024360469,94196.7112737009,94182.4931139812,94197.7027609134,94196.9054400134,94197.1241986877,94182.6109570006,94182.7109708038,94196.2233193624,94181.5425279051,94202.666271116,94206.5369196155,94206.2947772322,94198.5405232731,94181.6779416282,94195.6965582139,94201.6401921319,94197.4214656965,94202.2941961736,94200.8273209432,94181.6443103678,94181.7295199113,94202.621322094,94203.7121324262,94201.9792168582,94203.8679124776,94204.1986098958,94202.3673156664,94180.3545688629,94182.5202944624,94203.0587044268,94203.4977445806,94201.2960901715,94199.5988718325,94201.0575703043,94204.1569623705,94203.7573585376,94203.6402067902,94202.4875218232,94181.6885033565,94201.0217838496,94202.0549041366,94203.6624729058,94190.520980665,94206.1433415051,94206.7965879343,94212.1792543856,94237.1241542238,94239.1995774285,94182.1525978854,94199.2642842464,94199.2503116122,94197.7475545801,94183.2705535996,94183.2612824749,94270.4761790693,94313.6167369721,94267.0702285826,94277.9263356794,94355.5254347227,94337.5492869783,94185.2271065857,94240.0570041358,94295.4995074068,94184.7352335291,94178.171592384,94186.4456387917,94497.2617733308,94186.4891190515,94185.5974833022,94290.2248394943,94182.5930146657,94182.4065947357,94338.8615962364,94449.5382651269,94226.1746939487,94220.2667761978,94311.3715369831,94254.3054854554,94186.2664568395,94184.3790891686,94194.8355246876,94221.1923042043,94201.2713711894,94216.3068626313,94249.4108710759,94252.8428994006,94236.6239537753,94243.9213080966,94279.2166829388,94291.6937908125,94236.3084530915,94262.3482489178,94268.8481839539,94176.6416254431,94254.9505724515,94395.8899715209,94350.444292838,94383.3163783309,94361.1920524595,94386.3767972674,94316.5170193187,94485.9105083003,94304.8297936631,94428.6349421333,94340.1607785778,94356.0154375982,94409.6280977276,94470.5339575772,94429.9187348541,94438.0535495322,94315.9350896719,94381.0934773866,94291.3987044693,94406.3290958264,94404.3881621975,94346.7146640864,94289.1383306201,94254.0884713393,94323.1789391366,94385.6473368469,94417.1518005906,94452.1027950006,94401.7562570568,94382.8759639805,94381.2872354078,94395.5416336809,94420.5497676442,94336.2312060332,94418.8337833242,94339.6350066409,94352.8293364909,94477.9169165686,94427.8023670577,94387.1340217133,94397.1796665657,94425.3382091146,94354.6142000836,94425.6504235548,94361.0757072557,94290.7233269635,94325.4213547153,94201.1390148036,94274.198596943,94312.6464085579,94322.2779497106,94342.5023760318,94491.5638719877,94463.4176079289,94456.8349770167,94453.7367060768,94397.3051009643,94429.7406684073,94393.7943788108,94185.4703113883,94185.5531404248,94227.9697612682,94179.5649616367,94172.7844087233,94184.9408332447,94178.7821648372,94179.7307920687,94181.460759291,94179.2420678642,94185.7676937493,94177.2919805287,94186.1921713659,94181.5765017673,94179.9285928636,94180.0781394672,94181.8869614423,94181.4031689986,94182.0965185894,94180.9861157408,94182.4537762913,94180.9018393622,94182.7058796832,94182.3816189444,94182.3324707875,94176.9441208156,94229.8374157774,94180.7644286528,94185.65937951,94185.4591211399,94181.7834314527,94179.2576168704,94180.0364045605,94173.4034606827,94178.8716430617,94179.9335872654,94156.3433922679,94243.6851476138,94270.0566029347,94316.9382707954,94182.8478895709,94181.9289458262,94232.5152156381,94267.6297744985,94171.6189848229,94218.0724172415,94182.9875223869,94344.5967563054,94281.0207677407,94297.8699497165,94188.5501525282,94204.9774036083,94172.8592403072,94185.2878764794,94177.6279941595,94179.0659923863,94331.9303782148,94251.8519957401,94316.8170109634,94179.1068202792,94179.9858824568,94216.2791005519,94181.196880761,94171.5008990672,94180.9033101335,94211.722436082,94180.0484823556,94181.2207372371,94180.4763549585,94180.826526179,94180.8679642951,94181.9721470138,94181.1339565017,94181.5255719848,94180.8853756685,94182.0846320542,94181.6086037596,94181.9050956505,94182.543148879,94182.2250256101,94185.4350592475,94182.5328193027,94182.293037893,94182.1575542833,94254.1114903448,94217.4591174103,94245.2968534355,94214.5728070022,94233.0109211685,94193.1582788604,94208.3093174429,94210.9473887868,94249.0731746866,94250.5749702617,94225.9121987414,94291.3151066263,94200.9983967455,94224.0901200248,94218.8816603741,94248.5050573608,94374.5048929416,94321.6673017146,94277.3566763175,94180.3635366207,94181.1354878947,94182.5983294028,94180.2144474992,94185.889323195,94181.8448073747,94182.4174807988,94182.7140177072,94182.3140232224,94185.5383197468,94182.9531931746,94181.8254767071,94182.7501950366,94186.0072808544,94179.3670247304,94186.0605009894,94197.8654075068,94197.2582906078,94190.2037786755,94181.6221079802,94182.0782010129,94181.4092201547,94182.558448116,94181.7040793622,94182.3992872753,94182.8174764684,94182.2521656791,94182.5398329031,94182.1838342679,94185.507584006,94181.3858831819,94181.7602394167,94182.1710169045,94184.4609058297,94180.8390754478,94185.5733648588,94181.8273473685,94181.9480317904,94182.117007154,94185.8064042339,94181.8886656041,94181.2745898637,94182.6577664246,94185.4857043121,94180.9649257162,94180.7744378481,94181.7812235439,94179.3474911257,94180.7549094746,94180.2568273542,94183.2165801839,94183.0543902952,94185.4621035519,94183.0101725772,94183.2720526812,94495.4735479957,94462.6254052785,94443.4086280089,94182.616012684,94185.4779826218,94183.3681630476,94183.1706176058,94183.0122586032,94183.2498261209,94182.9972671716,94180.1968188789,94227.348181234,94274.4533088987,94182.8147160256,94183.3156930722,94182.9837514386,94183.1077878901,94185.3342565947,94183.2876661334,94183.3963934819,94182.7270189579,94183.2597357335,94185.4145211166,94183.1029331782,94183.5812910913,94182.8474316618,94182.8628447534,94182.8197373694,94182.4151021454,94183.5378236056,94185.4161003206,94183.4951960601,94183.5801474431,94183.5308197597,94185.3391822978,94185.3197538169,94183.7607027733,94185.5214638971,94182.9297018792,94182.3619911064,94182.4047486027,94183.3153858462,94185.4520259911,94183.898557275,94183.0668833625,94183.7316728651,94182.8490874659,94183.1206950841,94185.4284675282,94185.4299891545,94183.171538965,94182.6722565412,94183.1280860761,94182.6745452023,94182.62018567,94183.3547521695,94185.5952350523,94185.449716188,94182.8232447418,94182.7494560158,94183.4401496234,94183.5049342468,94182.9926949467,94183.0359218913,94182.6784151542,94182.703739826,94182.8279769832,94185.4498307057,94183.2359663689,94183.2920334301,94182.6802812547,94188.9637321517,94182.3968991282,94182.3137728896,94181.7317548451,94178.3697746293,94179.819797066,94185.3854412988,94183.6509629204,94183.4217615451,94183.484207407,94185.2552704731,94185.263778848,94270.4075927194,94313.5154486838,94266.9863795932,94277.8477752146,94355.405745127,94337.4486765524,94184.9999999999,94239.8477957634,94295.2123508548,94184.9999999999,94184.9999999999,94184.9999999999,94496.8944169576,94184.9999999999,94184.9999999999,94289.3214372613,94184.9999999999,94184.9999999999,94337.8983618516,94449.212183294,94225.9478840658,94184.9999999999,94311.0451669508,94253.939767861,94184.9999999999,94184.9999999999,94184.9999999999,94170.8229084289,94169.2317376313,94166.6291587429,94249.2587936725,94252.7537134198,94173.9289688256,94243.6155927056,94279.0407142447,94291.3486109456,94236.1877549177,94262.6431477827,94266.5955648898,94184.9999999999,94172.2351977001,94395.5516701091,94350.1925031835,94383.1231552079,94360.8061212388,94386.0876048272,94314.606326593,94485.5612765093,94184.6208169529,94428.3088966486,94338.3217747764,94356.5890029393,94409.3934533065,94470.1973003705,94429.6059334576,94437.7337732871,94315.5055581707,94380.7408255897,94179.0544230011,94405.9847488051,94404.0457555336,94343.6890952488,94181.2945200722,94184.9999999999,94321.8224583715,94385.116457957,94416.8138745111,94451.738802352,94401.5470438966,94382.8714013913,94380.8636252298,94395.2091202945,94420.1976830058,94335.6156017373,94418.4041815057,94339.2359874035,94352.2434730986,94477.5216641445,94427.4000822212,94386.6714601658,94396.7183659428,94424.9701227606,94354.2218874309,94425.2242417797,94360.6459761331,94290.5857268667,94325.1388905988,94201.1143477806,94273.8849323542,94312.2021821885,94321.891654632,94342.0858311238,94491.192852681,94463.0459376627,94456.4507317425,94453.3122552079,94396.8752486969,94429.320623321,94393.363554197,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94176.3680569235,94184.9999999999,94184.9999999999,94184.9999999999,94168.5748092074,94183.218920871,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94187.7037497154,94205.2660646436,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94332.8748478276,94184.4550130511,94316.2256941027,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94171.6083471191,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94251.7579813588,94217.2109503102,94244.6729920507,94168.9744748963,94232.9382637924,94184.9999999999,94208.2160156395,94210.810262043,94248.8432041572,94250.3007339873,94225.7749361505,94290.9645591537,94200.9467318064,94223.9527315379,94218.7085389567,94248.2925100318,94374.0724341471,94321.2844756522,94277.045654795,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94173.4513681714,94176.7063363984,94177.6809407293,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94495.1081565609,94462.2703387378,94443.0578765138,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94274.2051402593,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94270.1875026305,94313.2128352699,94266.7337725392,94277.6149050865,94355.0492729876,94337.1471308105],"Archive803_field18":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive803_field19":[0,76.6634583950899,505.126307320437,0,347.331758402937,0,1213.89798836498,0,0,863.287368085451,128.540122130042,138.791980475137,2072.49820504672,877.066506047135,22.6469797933289,181.49561731058,523.105331661466,190.12744353912,0,288.642324127202,-197.703741203522,157.361549161342,28.8952120153748,108.384866669647,392.122493120035,211.564935312263,420.09575153104,61.6925524854536,388.558644746013,549.665190419962,240.050960389602,343.717904358591,600.51539721438,754.84268773678,1012.0058343391,961.451341088183,841.338196919083,1405.67380996781,720.789288207599,1092.90586297569,1108.42436341854,1145.08506693975,1960.7405044433,1237.217404775,1559.22313185999,1829.33331768213,1138.2702921819,1022.37541270042,954.924112937333,1099.84342149198,578.932807825302,612.836465426581,2007.23606065508,1493.30099933524,789.084152240471,1915.56707989947,2565.7008348769,620.53092558175,2339.42257666343,1520.11547432426,1378.60540967626,1282.32659359761,1317.20171837177,1733.56193132965,1636.87393134549,848.938223865065,734.453405631781,1996.62529708872,568.118345379577,1172.15352211214,1494.00344936541,981.66692910169,1229.51366928316,1178.94837125897,1384.79209205228,1362.65171587258,670.614319574403,972.529461510783,931.46063851723,580.427744346828,697.781197816206,-383.787286163618,216.599030262607,454.91280997781,208.932828260331,422.495412142665,1136.35124622545,1211.39905174246,1099.45040262517,783.359693269314,673.786379644539,833.272777061447,816.799206237239,0,0,425.210737149876,312.626806108183,452.482299518178,323.243315455408,282.294143913199,251.322514774133,210.794746591116,317.615678359919,0,477.604971918482,0,173.440792710518,349.166943853506,255.878065557478,167.449134116825,197.29858909079,152.301052644356,217.010187409925,131.724821044798,226.198264121895,122.54943242551,142.200589046293,143.704508605317,432.166042977693,438.921660011133,213.984501504239,0,0,172.444603292107,410.206178207932,268.093441562555,646.473764995027,341.118788667544,283.127583792666,998.662420441523,1427.29814802015,1411.73319070935,2398.8918070192,116.026803226724,165.158560932487,826.435186983481,3347.77977954317,466.640465940157,651.964998851564,475.450832854905,567.611690620601,2019.24877345576,1339.89929109069,658.252633106858,444.095818110099,614.03361371451,549.849651810237,368.097696300269,311.676088380446,1477.08841103069,737.763836600207,854.746596311878,363.345293248969,273.519692122067,454.464267829831,322.416120622912,380.230043912827,281.160772432111,298.289277005794,285.046208413067,203.951656279881,241.075141259579,223.543781656091,220.330189547067,161.59268756771,207.70672405018,186.173724437467,226.645517665236,155.257094050314,181.314699316281,164.912623510756,132.817230920822,147.65973524927,0,132.294793079722,143.887782497296,151.744031552284,244.150399545489,-169.86032962411,48.1848159415863,75.7982140456592,-8.21055875466101,-210.741576049963,-60.3173027578492,-363.446097448812,60.4551996170955,75.6476281578668,-105.611593461632,222.871984980364,-239.520827248462,-37.6200518338118,43.0064350952612,75.1583987035874,367.131260782162,267.80241791317,151.146080007082,262.927714621153,208.303447864031,128.390678093281,206.952914739627,0,168.664506998522,137.187738998537,124.337021253551,143.262408943582,0,106.593446775605,169.993903776731,113.818479748423,238.11664709143,256.567886487762,202.861994896483,-487.062229518238,-305.187440694774,-539.178794676362,180.69392991561,156.180214580706,192.717272030704,129.659344395189,176.359794341802,138.642330793282,118.038961047825,146.49489449067,131.094919491625,150.639203006011,0,194.285160365643,173.586514332883,151.296569587727,0,185.406007845029,0,155.240838884743,161.265227277116,180.787441177741,0,167.605072115349,200.59972041091,124.492856859649,0,217.837908626386,221.224756498894,182.75782149181,294.041275368069,235.622693354635,251.072144959969,91.9060072163265,105.320708839858,0,99.3843167622342,91.987627204711,1213.12578849691,1212.69222793096,1284.43087852414,119.212887591753,0,84.5447521388178,93.0391014131573,101.567239905957,84.5012964109431,105.233721242898,263.674281907587,1036.29988259796,110.320481694918,116.448282735077,90.6940222384505,107.509700957318,101.967142084198,0,89.7380227288901,84.8738340594647,122.297528422261,93.8634022479643,0,102.625754429068,75.4826149804427,107.610805294242,115.279431101416,113.47991341675,138.215032807406,74.3869881932298,0,81.1650613665634,74.3441693473091,71.9935121776629,0,0,70.0585457453366,0,116.782495216087,140.743277800358,140.662997527088,85.1717158469776,0,67.6587057783884,105.987741793974,80.6150612184955,108.030630497741,101.767168794119,0,0,110.221701747401,115.533609410051,104.416768414361,124.797544926898,120.956119001093,110.234649603037,0,0,112.929353966838,113.676997779805,103.000506661074,93.7999127100855,97.2417169797253,117.800379729536,120.736529973326,122.513395204035,113.420570429695,0,101.307635944748,110.166411243445,112.767917149988,-629.544049555734,139.445222262328,143.211885871333,177.79644312728,347.300953332212,356.399142765491,0,92.693852600891,89.7570109798131,81.9320064864971,0,0,391.790617116042,519.275229722137,476.128657072456,447.941529921698,614.179390989506,534.123957568416,0,76.5021834555356,508.763531182893,0,347.65221060455,0,1217.18165227162,0,0,856.986981995425,128.604161856648,138.861222973836,2066.3694356867,881.230591358597,22.6838246893079,181.69860934588,526.548206762865,191.159418124575,0,288.746785853362,-197.80469885763,112.361095319557,16.661651126893,79.0354276361022,395.642427860012,216.051850231529,410.451371854263,69.1581039395531,391.571445129978,551.493112747989,243.209339946065,347.010243001576,603.421875204996,755.360415389425,974.716536073399,966.622627518478,844.670070500659,1410.13733524412,724.494027186841,1102.7737109866,1137.13134348791,1148.94919163745,1892.73683900229,1241.09852809159,1555.74659414406,1826.42059470956,1143.74081505706,1026.57396602764,959.292676304976,1104.22313478303,581.935380494562,616.577190179997,1964.66251162981,1494.72030103263,793.14397551514,1920.99790888189,2436.01116549761,621.59160304718,2205.6477935933,1521.66024183734,1381.25023702533,1285.30349562775,1321.40476432555,1732.64996743317,1637.14993937313,853.275156849448,738.398379949786,1994.44726833399,571.337155019179,1179.35419958502,1496.3622934817,985.477772604308,1232.77226375925,1183.2975872949,1387.27130029478,1365.0300492767,676.210017533712,976.689485100007,937.581757489183,588.106262455699,706.27906911011,-396.771358594339,219.389686640768,460.835209811938,209.717795950031,425.310033085185,1139.82094043111,1214.6220638304,1103.06956980716,787.253639825022,677.768747427867,837.378258989457,821.602416845417,0,0,425.322774280632,312.767291236151,452.651393198777,323.289004566185,282.360155615631,251.412732567059,210.874890927308,317.841232631011,0,477.779758466571,0,173.520223000029,349.386030621149,255.995641302562,167.527478978858,197.395051170877,152.353015200246,217.126453398062,131.770127418084,226.312283008156,122.584838580539,142.252369464821,143.76995222638,432.546685036215,439.371481845815,214.083401995329,0,0,172.534540906958,410.40033251775,268.268516729964,647.090950293734,341.358829103149,283.341363031049,999.441435193413,1429.1902169748,1352.7557852637,2401.66279364776,116.075041058419,165.238031997862,782.157944797115,3352.78147554955,466.979024089897,652.539142455512,475.681847642942,568.196049624423,1712.98149429256,1245.43174848667,658.705110360248,444.231149338493,614.409466749076,550.503786741437,368.367837034287,311.894779373727,1479.75435453493,622.174034537536,872.594440940332,363.624107784222,273.706330665555,454.824806411269,322.572892856175,380.357649218891,281.290634132409,242.366130631929,285.235649087369,204.080542958851,241.243442648099,223.68606636772,220.483996319532,161.693853863223,207.836641325369,186.290515219969,226.801948299743,155.349634283644,181.427139273294,165.018729234391,132.906225036988,147.745134658355,0,132.366813585744,143.969084437656,151.834776562486,254.714929980176,-173.372393501481,61.9166690662304,58.6561586296263,-21.9397834097405,-210.808394503807,-61.3448305262449,-359.901778469491,59.844595812403,73.0979498555215,-106.426501131164,223.653667473566,-241.81857419305,-38.4546813110155,42.6203802773055,74.9600241675739,369.110274236322,269.056010195378,151.434827876665,263.119770856906,208.432164740532,128.456669684827,206.970600017076,0,168.761691938916,137.264640894902,124.419337889647,143.345286210999,0,106.641926254163,170.093692106203,113.874472840386,238.187034409497,256.658120003185,202.903110886443,-429.206920738962,-312.793328249709,-468.67652586524,180.795657730219,156.264070203595,192.833195985936,129.72523062665,176.46656373425,138.712128246953,118.098140431676,146.578890778427,131.169775999212,150.719552335871,0,194.397013137526,173.686104347067,151.369790856188,0,185.453712306994,0,155.303728924937,161.335783147056,180.842256103297,0,167.679823184362,200.728817843669,124.545115822546,0,217.954839433684,221.356563366922,182.833579736384,294.244662751867,235.768144102097,251.25072539979,91.931516291694,105.369337475406,0,99.4100296166058,92.0129437627419,1216.59211949002,1216.29273805112,1287.59132908536,119.261278049633,0,84.5792701791491,93.1093561572224,101.619165569933,84.5083248055805,105.267600337162,263.833292761318,1037.93216714892,110.383986633766,116.508124036928,90.7374998729127,107.555088339413,102.013958264453,0,89.7878490089278,84.8982040794482,122.354085627804,93.8989196634318,0,102.668338158063,75.5002597120473,107.650824852407,115.311741695522,113.493361570267,138.282870623074,74.4042255278365,0,81.2065755098887,74.367552851226,72.010402956623,0,0,70.1129097841668,0,116.836305633896,140.805074467468,140.72859596815,85.1948630166766,0,67.6890104067198,106.029194860852,80.6793876968739,108.056819275722,101.861276777718,0,0,110.323599091752,115.569348759265,104.480769509399,124.880252731878,121.003308361219,110.386788828134,0,0,113.01803554704,113.743633856724,103.119635260376,93.9174930195621,97.2611671445278,117.978668709511,120.806141360041,122.585029293765,113.476043477734,0,101.381495116721,110.316183991331,112.787958883409,-630.565328992671,139.530270952627,143.292864269401,177.885098386309,347.512926266753,356.645375052623,0,92.7855153311091,89.8063258965495,81.9804505774885,0,0,395.434384684023,522.909359180137,479.745516787494,451.550799650959,617.884007916129,537.781545578292,0,76.0101834730963,511.959125298475,0,348.043954871705,0,1207.72446328207,0,0,837.947844141026,128.680666273332,138.944760176523,2022.05918378359,882.299152302135,19.7560989585137,181.94770291274,529.665752521161,187.245261019787,0,288.877047206446,-197.85573962235,51.028252630987,-23.4923995750411,13.9434564123785,399.072721019852,222.152581738412,371.505476871195,81.9950014261653,394.201385810022,555.598345208266,246.355441323618,364.140528326521,607.121565334408,756.009764161685,877.41073494916,970.756578889747,847.920877028223,1404.22688959408,727.425845669006,1119.76111856757,1212.3707466949,1144.06660042161,1768.33598816154,1234.97833430237,1523.69325525861,1788.27997971142,1145.18904959715,1025.28974228924,959.994595528958,1102.30154504383,585.155597661515,619.378282355503,1839.55053175231,1475.34837408532,795.368681777205,1910.07465109211,2155.54731715546,622.79457926191,1923.00161100757,1503.55611302703,1368.4311985212,1273.98566100493,1315.5600129387,1703.89462716295,1607.90811483215,855.996331893854,740.658642133046,1938.74615193856,571.738795359479,1182.66841404188,1476.84931873562,980.447698495665,1221.76720636965,1176.06392985167,1370.51003665641,1349.62025440582,680.817147937837,972.606317789392,939.196516029034,583.371028187089,715.25448250893,-417.673307985754,227.313052336962,471.101762760836,209.636046576474,427.312708198079,1131.53685698326,1204.52330681784,1095.56102329235,785.738426676901,678.337757342724,835.545933383195,821.789986716951,0,0,425.43379023471,312.941832525559,452.860940032079,323.354795172057,282.441112842125,251.525829349756,210.974179170234,318.117205705787,0,478.014279628872,0,173.620371193032,349.656455596731,256.142831936045,167.62372588193,197.514383899842,152.416963078795,217.269266080722,131.823606547787,226.453504215613,122.627293193765,142.316597224339,143.849629017495,433.016088538004,439.799540879697,214.206260400835,0,0,172.643638695076,410.653395046143,268.48394481701,647.900333939012,341.655141761606,283.603175479254,1000.57786565512,1431.24496587544,1251.49395889405,2404.12276486279,116.133318694648,165.334837463339,706.853882110798,3357.62023269149,467.38997305014,653.294083480312,475.969707288507,568.694963862133,1560.7992787702,1003.74282354594,659.27987050428,444.434555875387,614.917213993778,551.284104497292,368.706531719377,312.164304073891,1474.60535995628,451.212650876009,908.632131880289,363.970649480606,273.936384344616,455.306577742835,322.767532482373,380.522395427479,281.451312375509,175.323464957535,285.468591307348,204.236486786622,241.4494441285,223.859965186861,220.670954463454,161.814507500306,207.994890719087,186.431059788321,226.992534376983,155.459454081924,181.562482061872,165.145464183255,133.010492402311,147.845504278318,0,132.450823016879,144.064528737143,151.943218121695,262.500892752578,-193.243317683938,115.608968539024,-5.114257540387,-62.2216065109116,-210.660949889122,-61.7580390503144,-344.197217733174,58.1819567739391,65.6334641721013,-106.512326562584,223.56545314718,-241.664905021044,-39.0124715370581,42.0869649466046,74.3498955306636,369.643878099413,269.321339283476,150.927165566587,263.354914971873,208.589324518628,128.535442210826,206.993595203908,0,168.878406159098,137.355144729102,124.51811606894,143.444379306933,0,106.692271876457,170.213803206492,113.937540539451,238.262688738301,256.770968733081,202.953354968872,-384.425871076858,-303.915621950926,-422.929462414314,180.919005186777,156.365170696927,192.973840247801,129.802783799563,176.594733395706,138.795279895374,118.168319362097,146.678857322619,131.256824775462,150.816505923268,0,194.533776561131,173.807166597252,151.458841771779,0,185.508851405829,0,155.380908432713,161.422522172226,180.909774764607,0,167.771896641511,200.885281677838,124.607498141905,0,218.099568630792,221.518949287979,182.92682310871,294.496634802551,235.947354250578,251.469986260498,91.9609132525209,105.427721934635,0,99.439788567927,92.0434808376877,1208.57478163075,1209.17547244035,1277.60750383109,119.31832168397,0,84.6195769094753,93.1872992851107,101.683414396411,84.5164466781306,105.309186579222,264.030650671912,1039.60179548993,109.933401999588,116.580265329194,90.7894302485771,107.609213864328,102.069988389689,0,89.8390584018059,84.9282571662043,122.42299856748,93.9419187565693,0,102.72075027042,75.5205112043876,107.697158121408,115.349179133592,113.50864793645,138.365025011271,74.425595417753,0,81.2554229721215,74.3929809599278,72.0279760879307,0,0,70.1667203583131,0,116.901717889719,140.882224637935,140.809539146508,85.2237328367808,0,67.718802664113,106.075637673294,80.7406402085126,108.08314577419,101.962808625448,0,0,110.409429653008,115.60829963366,104.529756632279,124.976910907517,121.054483168817,110.507267058511,0,0,113.107969797952,113.799801535665,103.217622023536,94.020399983815,97.2874208598647,118.12268620012,120.889805546053,122.66726067275,113.54164750657,0,101.456019091582,110.427738555668,112.810892261839,-631.274172666365,139.63052839309,143.38843859823,177.993854003325,347.770543966636,356.953421287831,0,92.8704236976055,89.8538474316645,82.0347568202758,0,0,399.208039815866,526.066864304646,483.04114703285,454.966943782372,620.723176459508,540.8771035641],"Archive803_field20":[0,98.1505479812526,15.4477947847986,0,25.6867912882177,0,114.969926329655,0,0,19.6164139180988,10.0635972238557,9.54764379842768,182.233184065361,47.7662839168106,-22.6680909500187,51.4700296518626,16.6755628026659,-3.24070168977324,0,36.1877774483555,-100.358591136091,0.420937264873597,-27.6832593564366,-9.63515667843651,6.3903600019196,-8.29776596205598,34.4195077538913,-21.3350170302294,7.05157268031914,18.642590264824,-5.76273716232001,16.2896703930139,20.5025744213977,6.97560038411504,6.7951965821754,48.8385920950832,32.9122128617512,70.2891333204865,31.0805482277294,49.4408289255573,28.2270542078007,82.1872573223936,75.7368707817847,85.316208287751,60.6728048914287,107.131581582602,66.0131318918566,63.9832225465324,54.4124255726638,70.2116439039292,20.3090257907315,24.1873390391787,150.241330996108,123.349508620398,38.5493511243018,141.667817485469,224.422826254183,15.8196777979201,244.598872891275,102.001243687187,101.962408804447,113.831137466823,79.9013255834427,135.061898897773,158.791268130566,42.1881870275679,34.4231238540547,200.416806693054,116.428240044845,161.226112535926,168.871775913851,126.842161272421,135.397911411216,145.999637211305,148.317002782262,130.060579077669,124.983864513334,130.638259251092,140.387333166739,138.707258186118,134.831593664905,92.4505878563179,97.3372832576269,113.945658442704,102.258130491763,110.654727935217,124.497890791196,123.297470204439,128.411871502192,123.760031729435,121.305247724726,125.984042759426,128.538966607896,0,0,54.3344250011616,13.8968371414858,-24.892127376216,-26.303867166056,13.1328313384365,2.50317694353295,14.4569273664422,19.4110857517832,0,44.4490104279092,0,5.19768872553332,20.0475149676918,15.0694023315344,11.3905972132435,12.852144753651,10.115698582147,14.2577407166133,5.92363354089311,14.1768210469464,8.16487126574195,9.33589272103657,9.57865809879532,28.4284599793248,-47.4305402171377,14.2652306465386,0,0,12.0386732093982,30.3327823720915,17.8131383346698,-63.765160876479,21.8131427140646,20.7488970989597,103.330730067082,15.0944193772819,26.8733329570744,115.798452709244,8.02084381513595,11.2106256860892,11.9067506602144,301.647140979382,35.4509263890232,52.5603135414942,47.048417588737,151.005342453757,229.473785598191,196.952286402143,152.582678988938,45.8553249654716,108.088836791956,44.2241977266755,22.8491388653782,23.6463307224004,188.989771000039,175.740153833482,156.14936729445,27.736247688052,20.5022622075086,188.997203623883,47.1139128730175,30.6426630118582,29.0609055676572,87.4922701241008,21.825133529052,15.1177563779316,17.5388576512048,15.844370514424,16.2803369070986,11.9766475914969,15.8014203590734,13.6818844947559,17.1310762964887,11.418109262725,13.648667830432,12.0686393740551,9.68473938194045,10.8641949615117,0,9.97888649189693,10.7848165788411,11.4904926502892,96.9981836967043,75.8824162259113,80.4270513689103,56.6803073695898,77.4621149615794,19.4611721722822,94.9527869391628,91.2014753924458,96.2390719611929,92.3202570652441,92.0115832040244,101.245939083175,92.9231750483574,94.8190054502094,97.2326541707728,97.8777487253251,108.323016618087,104.229489492788,99.9380971852573,18.3066870250547,14.2207812592167,9.94750418036707,21.4494071436111,0,12.1004268946585,10.3765379318819,9.36021939252452,10.9225183529196,0,7.84302655693647,13.017325288372,8.19807321745869,18.0819936240231,25.9811346521986,4.49644540923068,94.0102594251146,62.7719940488789,112.826822426232,12.6699241105918,11.011871949352,13.488398395655,9.27012115245424,12.5660099965894,9.75917796429945,8.33417457422695,10.3745409401596,9.51520197751787,11.7404423651102,0,15.3938964846383,13.2449258533252,12.0929005828004,0,22.3771786026681,0,13.9089444086938,15.9418310359057,16.628581566121,0,13.5658380582579,14.3225373538358,8.78413470083292,0,19.2237570387316,17.9291605777623,16.1963339340524,23.6677371393212,18.9300233714503,19.6842758220098,6.18973561691647,7.17413913171113,0,6.89706417248646,6.61806587208759,99.8401760299071,91.8311418149139,101.334780942783,5.25502708574867,0,4.7809811356106,6.84182426714674,3.56053916503031,3.62802333294706,7.74125345459479,18.0448785781199,115.655198578524,99.0684417917323,8.78480457896881,6.8808863245804,8.48010983753444,7.45173595546131,0,7.88056998827968,6.6777972143306,9.66699066100861,7.5418042260581,0,7.28609115470212,6.24445998094062,9.14887697937879,10.5580551738126,9.87541809498122,10.5746828915582,5.99563248881527,0,8.74219645757788,6.09189171055537,5.65097397329188,0,0,8.33586980091154,0,12.8130418559638,10.1802295888991,11.2378156889165,6.30329092136495,0,7.67774912830471,8.09300914219896,9.87273695581277,9.09874333596877,9.66560011050419,0,0,9.79624277059506,8.51692701123824,9.68973121013519,9.2881393070548,8.67968643229249,9.81153382427469,0,0,8.48741250757382,10.0249800031012,8.39864032343017,10.9082231298506,7.28707455570218,8.50390096467584,8.85451924203395,8.85853846114011,8.41716467931479,0,6.16425501206333,7.18718320198443,8.58455007323065,131.338383249176,10.1822021610711,10.2889290585683,13.9178647894149,37.1127870640885,28.9524652787258,0,6.06361226395985,5.82541141524726,5.90226252465,0,0,6.3585624382519,16.5536567689287,13.1138930817812,10.8521778955212,24.1252913966564,17.7816964878159,0,97.7526378885345,16.1203723133702,0,25.7120576410009,0,115.312526265821,0,0,19.8793121183809,10.068473260395,9.55257088720108,181.732716717525,48.4043903955701,-22.7963443574281,51.4839940290135,17.3100533412769,-2.69413559481124,0,36.2010138285999,-100.41315483155,-10.1037826293839,-23.090604090486,-15.9708578343015,7.07356672104088,-7.31646506502075,31.5713415411992,-19.5909805329707,7.69412800217423,18.7986143582879,-5.13320802433354,15.6476274831698,20.2584652214178,6.98251724436033,8.4992593467014,49.5621448087202,33.5229103284482,70.9691785099429,31.6852942643277,50.5350128101083,30.7711465228909,82.7364111270564,75.1390052737211,85.8978725381049,60.456745453589,107.942964760044,66.7508280479572,64.5979258259776,55.0579236985099,70.8396399190246,20.8126867034085,24.8395615685164,145.360800414178,123.703842586858,39.1910112102398,142.175674551077,210.3836342664,15.8880250401871,233.517583383843,102.552175402691,102.458531336706,114.207204266616,80.5629605236087,135.329822592093,158.943690109248,42.8438368004458,35.067228063897,200.510293967724,116.358498625854,161.572717776395,169.021121079065,126.985233266622,135.61930509621,146.192010184905,148.514336251527,130.348600876738,124.989213320079,130.767696780717,140.517242299162,137.530812533914,134.821529037407,92.9195338792663,97.2398317801286,113.886148042048,101.960499584171,110.520245274269,124.738129289309,123.58069691129,128.610873537876,123.80213864741,121.296137325279,126.051164501234,128.60372515663,0,0,54.3501150377101,13.9031480303137,-24.9004769981818,-26.3107997299102,13.1361262121703,2.5045054060423,14.4629331449908,19.4251844340957,0,44.4712504082488,0,5.20057576338246,20.0595217180382,15.0773301688638,11.3962469727729,12.858812228231,10.1194192932587,14.2657018655161,5.92584767121174,14.1843775876147,8.16744718643973,9.33947644065328,9.58321989098359,28.4528657131975,-47.45449251078,14.272385201377,0,0,12.0451629851016,30.3536961572852,17.8251159579699,-63.8246448157256,21.8286646078146,20.7647640434056,103.413158750061,15.134024279614,26.6278337459724,115.981635412079,8.02431893364503,11.2162638479063,14.0775055983109,301.955424372423,35.4759374133446,52.6300405305073,47.0679913922971,151.143166520598,208.31613716691,188.310232461081,152.692009872603,45.8606401731768,108.167774976504,44.2775424544056,22.8658515835194,23.662665724493,188.895955709166,162.004492744083,157.368196294723,27.7580820696669,20.5158928770755,189.080809851957,47.136522560079,30.6544157543669,29.0730050623546,78.2508781209633,21.8395130562774,15.1273402619505,17.5512084519576,15.8545968102998,16.2917268860112,11.9841079464516,15.8111340458777,13.690434929082,17.1428053188669,11.4249630974071,13.657034097631,12.0764304949992,9.69126874271491,10.8704752666383,0,9.98424909057796,10.7908510557329,11.4972763332307,97.7489965766287,74.4904371879818,80.8528292360426,64.5780105700084,77.0441877071792,19.5177675604985,94.4700968834053,90.063737262583,95.8159993023849,91.9548960680528,91.3556585934131,100.987773875907,92.4347837038418,94.3167084286695,96.810967735833,97.4746680473141,108.135030873778,103.979627168989,99.5970631934206,18.3204775009316,14.2298077973343,9.95249167312698,21.4519801494093,0,12.1075297162155,10.3822643442115,9.36640935982413,10.9287068026729,0,7.84651773040407,13.0248155895232,8.20196447661154,18.0861659431116,25.9895783741404,4.49595495559164,94.9136105142003,68.1519725514857,100.979173192887,12.6772515607996,11.0179397631012,13.4966722889399,9.27492679906811,12.5737052995574,9.76422721832424,8.33846191735004,10.380595485526,9.52070915576582,11.746532796588,0,15.4024780176175,13.2523218870561,12.0985284710088,0,22.3827600091523,0,13.9142762109056,15.9479937211824,16.633327439901,0,13.5714838603654,14.3318684401355,8.78796260335209,0,19.23378808561,17.9396595715833,16.202731575842,23.6838877454587,18.9412897830825,19.6979714740547,6.1915057784639,7.17758401389101,0,6.89893057838804,6.62006512322205,100.292187774798,92.3427297849809,101.80389967683,5.25735071215128,0,4.78303077435077,6.84745436243687,3.56263536430774,3.62779613082857,7.74391158647257,18.0563620516052,115.826202756454,98.6943080412359,8.78917429763078,6.8841193935632,8.48352757930007,7.45514184845245,0,7.88484525645905,6.67959231068066,9.67127818031727,7.54450851572808,0,7.28899941078129,6.24593485991986,9.15207325973433,10.5609253728276,9.87657359840951,10.5796905938617,5.99681454119629,0,8.74633956256747,6.09362795231476,5.65211981549271,0,0,8.3417013781397,0,12.8185045656978,10.1844326905697,11.242846283733,6.3046206824351,0,7.68111710584161,8.09569339241207,9.88016034683761,9.10088476769633,9.6742889920223,0,0,9.80529881146906,8.51931762978308,9.69561729489688,9.29431566433627,8.68305046004248,9.82484239780898,0,0,8.49406682757177,10.0310180703264,8.40831581405742,10.9210046403829,7.28795524121584,8.5170623526187,8.85960466084784,8.86379894899365,8.42139726647543,0,6.1689328228439,7.19745291349358,8.5862522047175,131.51747697496,10.1884295886655,10.2948186525864,13.9244339413357,37.1357901611602,28.9718700085662,0,6.06994514233628,5.82883243032156,5.90584588333034,0,0,7.08206330221888,17.2211945573423,13.7930137441222,11.5410860124988,24.7706695937916,18.4477308826182,0,98.500226912784,17.2005406748178,0,25.7410074779505,0,115.507816167587,0,0,24.2236925466947,10.0742187897299,9.55861112881432,176.920623571428,50.0385917491298,-23.7319869531712,51.4967185622228,18.3097130247708,-4.85421429028288,0,36.2183433061242,-100.469552040814,-20.7290378186302,-27.7116443365624,-25.8279999435211,7.97555827605202,-6.1474990026518,26.5200118856901,-17.0734654201401,8.05022722278043,19.167126316207,-4.52315039641159,13.0089926290195,19.3969574118162,6.99172108450111,8.43824745213114,51.9507195356077,36.2447276834225,73.420708356123,33.2503422573114,54.5991602921459,40.5132783404933,83.9910544026794,74.3510674418901,87.3518124670199,59.9846881658089,111.030939214504,69.082692628628,66.1921951622645,56.8330134777685,72.5409156608642,21.7908483608825,26.0945072125819,135.28812204406,123.678034502321,40.799922453186,142.002413484574,181.32909413494,15.9148815416734,209.145552965501,103.910394298801,103.39875274877,114.475588611429,82.5667254175486,134.824436359623,157.08069977965,44.6976260517173,36.5390473613594,196.389004150638,116.632179018909,160.767451867666,167.261050838769,126.743492674225,135.036586824957,145.27226647659,147.380825395477,129.961166067226,124.666672407865,130.367014233908,139.581454827217,128.595611825793,132.858571160448,94.2760999481442,99.6596648267479,114.410604445626,102.773568890376,111.162650768846,124.577198237366,123.466708290931,128.299766515989,123.70949288866,121.314913980151,125.849023021571,128.236655172131,0,0,54.3744203843875,13.9118181629174,-24.9109275777172,-26.3189295667651,13.1400022511009,2.50713490846642,14.4702770565465,19.4424739640973,0,44.5005996684201,0,5.20483111903926,20.0749933796208,15.0874627010656,11.4033663510896,12.8673866886666,10.1239459564759,14.2756252434589,5.92871520651677,14.1939263682432,8.17051952786976,9.34401084301496,9.58891652427541,28.4824275764469,-47.496471947808,14.2817849286881,0,0,12.0531418891708,30.3822101554686,17.8399848753095,-63.8885665562905,21.8478764284753,20.7841417706131,103.527675916463,15.1365963275507,24.2908711968474,116.229623804275,8.02869056050991,11.223261456125,13.9586847864267,302.338292864703,35.5048263433207,52.7253478279201,47.0987684717879,151.277236302683,195.173500052768,165.755822602349,152.830867175737,45.8660195144652,108.279875763028,44.3397729530436,22.8875068314734,23.6827018301862,187.643106319715,141.663887114947,157.919170933232,27.7846847992829,20.5330386937573,189.22775780709,47.1657048104613,30.6677186954488,29.0876102508678,65.4468719501676,21.8573679298315,15.1389552089436,17.5663645813622,15.8671872198912,16.305504452131,11.9929800297163,15.8228892383373,13.7007158694048,17.1569985518367,11.4331185029407,13.6670736213158,12.0857477217654,9.69890154025074,10.8778612952574,0,9.99044760387542,10.7979119250625,11.505330412023,96.522848943869,73.0069878869116,87.9808084810908,69.5074616145239,80.2772128681998,19.6035994126131,95.0100940935808,88.7932160235382,96.7604475164687,93.6933922801339,91.8395134221015,102.146887809399,92.5633971329392,94.931493468664,97.5237564465669,98.2514095003312,108.783779896747,104.807656013734,100.475056953698,18.3374394431173,14.2409348522334,9.9583609554575,21.4546723850501,0,12.1161267784122,10.3889581421696,9.37378359986239,10.9360385165758,0,7.8501085001624,13.0337518388717,8.20635583637484,18.0897311923809,25.999783628591,4.49818577137534,90.8584814012983,66.2651475098457,91.8693548554705,12.6862407695981,11.0253406227808,13.5067840708671,9.28065628917479,12.582994039959,9.77032662537212,8.34362767909458,10.3878620325781,9.52713975867966,11.753782363399,0,15.4128318123294,13.2612168659525,12.1052605713823,0,22.3881697688968,0,13.9205726219694,15.9550049574731,16.6394049705419,0,13.5782428439145,14.3432310523422,8.79260448413865,0,19.2459918442562,17.9524642282768,16.2104138804754,23.7035467116294,18.9550580433004,19.7146658368598,6.19367086989767,7.18179272303128,0,6.90117050346829,6.62250870282388,101.030290918624,93.3927372680874,102.600878445066,5.26035863120081,0,4.78566602342713,6.85403463386296,3.56556204621298,3.62734757568254,7.74712314423424,18.0708563703841,115.959537124497,99.4766973790011,8.79435570495665,6.88789578636829,8.48751281207725,7.45914244578373,0,7.88928170141086,6.68185394550044,9.67638618536845,7.54765357815506,0,7.29252711308368,6.24759714581839,9.15561173327131,10.5641803351555,9.87792280400284,10.5856670971709,5.99824740746376,0,8.75088885385909,6.09536704723733,5.65325009090047,0,0,8.34723948645407,0,12.8246761865894,10.1896655655746,11.2489038265661,6.30622446210986,0,7.68456686513186,8.09835270915081,9.88730866009102,9.10299022859966,9.6835319271368,0,0,9.81306747120473,8.52192558800661,9.70021715473234,9.30150185976294,8.68673079807493,9.83546899954251,0,0,8.50079504110308,10.0361563951924,8.41637212491874,10.9323331084251,7.28910805971868,8.52769209089465,8.86583514137279,8.86986465956823,8.42645429913032,0,6.17369878948125,7.20500160518092,8.58830666693987,131.739310783115,10.1957810007065,10.3018174648033,13.9323603986142,37.1645406596103,28.9961929460081,0,6.0758099470686,5.83215696579624,5.90984515844539,0,0,8.01643976924194,18.3170104037955,14.8294142927441,12.5386792430379,26.0211679203034,19.5716670568915],"Archive803_field21":[0,0,0,0,348.280422108706,0,0,0,0,4.40918271815672,128.933576312235,139.120086593867,2.97010017954169,0,0,188.811837640903,0.221114673815404,6.80081226302013,0,290.904792452854,221.760028259302,2722.74772788704,0,3329.96837483472,0,1.45677847505872,4932.91539569571,7.05386706926068,2.0479676875141,1.87740949151645,0,0.079740539416851,23.5974373094659,754.875302349424,7941.31845108634,0.103775856357546,2.087983773253,7.04067778082268,0.169984496206205,0.499871987420593,7.56130455420793,0,13523.3763739678,0.227976104409403,32.4596798813105,0.617716185954983,0.530905745304765,0,0.431489926416797,0.413094936461516,0.674474341090546,0,10030.7474763855,1.50921317252254,0.381229650571422,51.6055663992781,10268.9423892322,620.749402931523,25102.5672789426,1.95520320626041,1.32106106700815,0.65876140425073,0.750044111697769,7.74363937101785,5.29237547051245,0.373659844697114,0,60.1639760227294,0,11.9826943778033,23.1740015901932,0,1.61969778664982,4.23576494482006,4.35954095611245,0.183108484723753,0.324926043160788,1.20690709166009,1.09966934642118,0.53723331028961,1.34702975967727,0,0.370077808651204,0.186908819420712,0,0.364753885685606,0,0.193598123006993,0.0141548023224942,0,0.384818546043107,0.209790466199323,0.428738035141115,0,0,428.812645219283,312.936481100334,453.166699584985,324.321094131362,282.601141155472,251.335361566228,211.289926811463,318.209434813876,0,479.671578046474,0,173.518800611323,349.743111591703,256.321432757339,167.83620149112,197.716978724647,152.636737652505,217.478227992826,131.858025403907,226.64218037538,122.821197051545,142.506815342461,144.023482912143,433.101224925825,441.678866924832,214.459587675743,0,0,172.86441572703,411.327712954433,268.684741498097,649.615973925157,341.815986663153,283.887179677465,1004.05088900015,1427.52491448738,6946.44429913222,2402.03666013349,116.303785817358,165.538701430409,3999.8006076217,3361.93949638765,468.005481798743,654.310588719089,477.784402206424,587.801623362135,3556.80366441976,11883.0455824495,675.762410072766,446.468227280488,623.480665391054,551.638777527518,368.806195655676,312.572497921848,77.3098344677818,6716.9798551679,16.9258760578103,364.40323188751,274.287489486411,492.2774839475,325.84034265693,381.46364793176,282.658849254607,1990.65517161229,285.880848758991,204.511340437339,241.712446701651,224.104724806744,220.930995605247,162.036030316268,208.307079462784,186.675921747618,227.292106873476,155.676498514361,181.827845607175,165.353760004095,133.169956307244,148.058977813595,0,132.67070664318,144.291501037892,152.178572442375,16.8929454037171,7.03444310544645,0.219560355454163,5380.95037052039,0.519837313108007,211.788444826175,0,0.69081157260382,0.230812476311495,0.219450484898756,0.519352663669082,0.267955500656892,0,0.41352630875576,0,0.408396819125718,0,0.39441934276229,0.404271307103093,263.564553185558,208.788475677101,128.775562233286,208.06276563668,0,169.098127981791,137.579713244987,124.688951463813,143.678298585799,0,106.881685605562,170.491705171402,114.11343125176,238.8055472048,257.880630035584,202.912473236123,4500.5373779696,1888.36825153911,0,181.137700481922,156.568050464195,193.188854823034,129.990399883029,176.807033489642,138.985480522936,118.332889591162,146.861889159387,131.439872236072,151.096146215488,0,194.894236043082,174.091214386524,151.779209447967,0,186.751879294243,0,155.862872879358,162.051439124236,181.550592384972,0,168.153341728454,201.110522004388,124.802453410913,0,218.68464774451,221.950269345273,183.474231823769,294.992666995519,236.382055966874,251.842872969152,92.1142631478387,105.564835051198,0,99.6234163989713,92.225444048748,0,0.324072715330156,0.469890429418165,119.328731163568,0,84.6798782770386,93.2903820484951,101.629695837586,84.5791984385298,105.518135991669,264.291082221273,1043.03506224578,0,116.779267628498,90.9547501333886,107.843719246226,102.239149928955,0,90.0834623619318,85.1362056256522,122.679104173764,94.1659872164068,0,102.884161394753,75.7405381608686,107.999116264788,115.762014504177,113.908903568562,138.619085878253,74.6282888502291,0,81.6345905421987,74.5934111304393,72.2150185268935,0,0,70.5527946223281,0,117.483404440996,141.111099183325,141.111309348903,85.40471271864,0,68.0930019289065,106.296378337561,81.217435777547,108.413200732068,102.225227119369,0,0,110.656262041391,115.847196136463,104.86548881924,125.142803041887,121.267229864584,110.670513177162,0,0,113.247929759001,114.118259972153,103.342436292406,94.4321405387981,97.5144536184979,118.107012562246,121.060868975406,122.833326621267,113.732540839461,0,101.495070088248,110.400680144912,113.094275865605,643.12789569034,139.816575359079,143.581114344132,178.340515612324,349.278479101314,357.573260957216,0,92.8920258759903,89.9459070961859,82.1443767455374,0,0,0.0951902049178854,0.469024920863495,0,0.505553616632013,0.390667510504018,0,0,0,0,0,348.602638403573,0,0,0,0,8.05206320215281,128.997898496163,139.189607387736,4.80315477938091,0,0,189.510100185732,0.211606706727425,11.3324199305633,0,291.034170160422,222.056008091777,2726.79088587162,0,3336.13428284965,0,1.97147688825121,4940.34218748297,10.8307863410236,3.07339383152207,2.93184331330157,0,0.106275935060647,35.6598805171935,755.411852426498,7953.00910794315,0.385927430481751,3.3772967678196,11.3029373107331,0.0761750423176547,0.698130506524653,13.0020092571412,0,13534.8216639744,0.229104309633906,49.9673605066647,1.89104833134093,0.685625615979637,0,0.461394201743041,0.435312381840106,1.32836023422521,0,10047.4199819242,2.57382849434981,0.379847681338505,81.798241426642,10278.466946704,621.890499329011,25111.8223814063,2.85780423132129,1.84870448349914,0.806118288476607,1.49761809403151,12.5235399060644,7.58721373385859,0.457238400519534,0,89.8305591062691,0,17.7136548882437,34.5925819173974,0,2.27866338536691,6.47796080888744,6.66589670486339,0.200606309928935,0.222097946287117,1.64989430182331,1.83557291549385,2.37033604068392,2.25531299706403,0,0.491454414450614,0.621755700663246,0,0.303583870970894,0,0.0892352578856935,0.219600672553801,0,0.41746446068432,0.0927908876936664,0.541657041667422,0,0,429.493253324548,313.079972169386,453.34000800793,324.408136088535,282.673010114231,251.426399814769,211.370281872511,318.440489614951,0,479.867718493012,0,173.598391931966,349.967896273178,256.43926689216,167.914864368469,197.814247665388,152.68901554619,217.595091134712,131.903423508899,226.756544401102,122.856762561027,142.558800910152,144.089185433985,433.489342955653,443.053467169506,214.558995050305,0,0,172.954707694697,411.531015802994,268.860611792897,650.257184200363,342.057929768527,284.102501349263,1005.02088911737,1430.09010926966,6956.154456468,2406.44281003227,116.352194578061,165.618497315557,4008.12959415964,3369.55461163094,468.400306885295,655.339879244054,478.038330806582,590.928853651592,3565.28954666058,11897.4205424796,676.310150057776,446.709512778828,623.8799815147,552.351803161658,369.076972039398,312.793525241582,116.338610716784,6736.07338651524,25.089724176875,364.684297740992,274.475541285212,493.001718179661,325.99879998863,381.595059175446,282.789215269265,1995.05887139109,286.071569720521,204.640815653258,241.881477859439,224.247580878362,221.085490010325,162.137614643492,208.437615336992,186.793205674873,227.449111504759,155.769413907826,181.940813068289,165.460311123103,133.259350617227,148.14470702178,0,132.743009699665,144.373115433849,152.269699432967,29.0655094836531,12.4132524214126,0.624798917899765,5396.50940268078,0.355570413788159,212.598445424361,0,2.04756405818854,0.159534974259555,0.307615704416362,0.938980112119724,0.248299181039689,0,0.350289222932387,0,0.431799538033698,0,0.410933809217929,0.411172365571967,263.757978646414,208.917836110993,128.841817397786,208.087013379135,0,169.195720315696,137.656923694856,124.771673278004,143.761531115812,0,106.93033541316,170.591931812462,114.169557503339,238.913299925847,257.973135658636,202.971004820324,4518.73346086889,1893.59903477186,0,181.239847759435,156.652251841784,193.30526268487,130.056531063172,176.914238516106,139.055543573277,118.392326767892,146.946216443503,131.515021608032,151.176852150493,0,195.006653561623,174.191249047171,151.852783137011,0,186.800960827244,0,155.92629469695,162.12260255967,181.605660839693,0,168.22850747281,201.2402082051,124.854909181787,0,218.802230380377,222.082926856083,183.550405098734,295.197555251494,236.528203394122,252.022678985808,92.1398257117789,105.61367423291,0,99.6491370047808,92.2508909207821,0,0.280207895678034,0.599998736457956,119.377205153494,0,84.714441291763,93.3612099012025,101.681670943178,84.5861699890232,105.552182996645,264.45056392679,1045.68585931554,0,116.839345003294,90.998428374689,107.889292214715,102.286169342018,0,90.1336639014615,85.1606908610863,122.735914562002,94.2016401554563,0,102.926919765338,75.7582844717893,108.039335939691,115.794508526824,113.922430287314,138.687215906982,74.6455221015732,0,81.6763271838812,74.6169215657072,72.2319322300236,0,0,70.6078819264636,0,117.537496521682,141.173205985697,141.17722232049,85.4278492704318,0,68.124109893415,106.338127932491,81.2832577673153,108.439402877427,102.320263505637,0,0,110.759880684677,115.882939886309,104.930487688002,125.225884352025,121.314496374323,110.825460848907,0,0,113.337196124289,114.185358859443,103.463787767024,94.5520486254268,97.5338352566997,118.28815381206,121.130779133275,122.905272028865,113.788210774388,0,101.569934080162,110.552772383477,113.1143114152,644.30910082122,139.901970099467,143.662404003804,178.429597528568,349.494003461564,357.820565497347,0,92.9854441314157,89.9959325201316,82.1931853416657,0,0,0.341062839274856,0.496499831720067,0,0.556311522635114,0.405663155166783,0,0,0,0,0,349.001941520943,0,0,0,0,19.0028317711205,129.075094776703,139.273895001498,10.3018017198456,0,0,193.266351665809,0.18334233695305,24.9402905609468,0,291.385507379901,223.52452342363,2731.67152848632,0,3342.92212200289,0,3.51543605745767,4950.13968538124,22.1622936218003,6.15145564672829,6.09919658284925,0,0.670052804326859,71.8735013202985,756.289463284118,7970.28286977538,1.23409216786005,7.25267200304587,24.1043276838935,0.205996252441547,1.29527616401896,29.3542909438046,0,13556.4415112735,0.232439575305235,102.538981857047,9.42504051933679,1.15011630143447,0,0.551268265596034,0.502157425610948,3.29267995351168,0,10074.8034652085,5.77085308889416,0.37572019433062,172.561164396276,10293.085346699,623.71984719775,25133.6970952643,5.57125425781952,3.43389074609393,1.24842193315938,3.74285427377857,26.8928244635102,14.4657688049554,0.708519386975761,0,178.829164727267,0,34.915914254181,68.8588722128794,0,4.25574710587522,13.2070886189982,13.5856326267305,0.25480298411981,0.0889511185344697,2.97964811788193,4.04582715444715,11.1515039357499,4.99020933833603,0,0.857921851807953,1.93544671824295,0,0.11888874239431,0,0.224192550879588,0.836080612262029,0,0.516084333494123,0.258641097544252,0.881316738843627,0,0,433.883983823366,313.274810853519,453.592192159666,324.793797486261,282.796147681674,251.544662790549,211.469954023931,318.75642480873,0,480.282285608048,0,173.699142435078,350.281593322759,256.587200736526,168.011987352222,197.93770796675,152.754181494861,217.740236599391,131.957136123948,226.898579401755,122.899654896517,142.623588191613,144.169582813914,434.015726534143,450.719462881298,214.68378245832,0,0,173.064738117433,411.851706871126,269.079069280831,651.231576624352,342.364611455997,284.371668684064,1007.50709166581,1437.43655425509,6970.18612128943,2421.77759715545,116.41083830855,165.716231931108,4019.0736608469,3394.59241101352,469.188961875348,658.875759842796,478.463957445479,612.121598729596,3582.90718787388,11920.5573746264,677.363106160615,447.907755726596,624.502529404461,553.571105362619,369.417388408483,313.075266006805,233.487534141576,6760.8395727434,49.597417733789,365.040080206398,274.711874880489,496.32455899668,326.195919828286,381.784725208039,282.950436259268,2000.38818054276,286.309977942685,204.798519616115,242.089728022702,224.423102819111,221.274579147173,162.259362254869,208.597762531253,186.935123872553,227.641016192424,155.880173989483,182.077722725469,165.588262754729,133.364842629729,148.245834249731,0,132.82764867616,144.469245798415,152.379112092966,65.6590924056515,28.5716730488518,1.84439516766871,5414.60879044019,3.00465229020557,218.324933546667,0,6.13514814255785,0.055763958684356,0.57525466467018,2.20501833866063,0.188718610793621,0,0.159529162135696,0,0.502430817369647,0,0.460833026428971,0.432054676387186,263.999843839307,209.077408922523,128.92115799001,208.161861816215,0,169.313548670001,137.748144782328,124.87174528978,143.861534671776,0,106.981000755306,170.713224170118,114.23277258269,239.349690523924,258.099668474456,203.216948282194,4535.75534387571,1899.21233620297,0,181.364377863343,156.754294955436,193.447342802365,130.134625060392,177.043599149283,139.139325152879,118.46326479416,147.04704146531,131.602770125551,151.274716512682,0,195.145117923512,174.313575551676,151.94279680593,0,186.863624882183,0,156.005527178847,162.211771147625,181.675830826289,0,168.321924929598,201.398582103987,124.917725702706,0,218.948723552315,222.248727750222,183.64471054733,295.455720873124,236.709468561737,252.247255733281,92.1692817851555,105.672696945265,0,99.6791790304306,92.2817853691775,0,0.14850840948172,0.990642920506929,119.434436345374,0,84.7548020855645,93.4423968397448,101.746009216798,84.594306891372,105.594214921792,264.648742101675,1054.65002254692,0,116.912039324572,91.0509071937009,107.94381891313,102.342738518502,0,90.186332882205,85.1910525180782,122.805456318146,94.2448843058437,0,102.979816860456,75.7787785320675,108.086140274062,115.8323275724,113.937885528197,138.770123463467,74.6669434183967,0,81.7254439537181,74.6427195078946,72.2495062048972,0,0,70.6654199908288,0,117.603213820542,141.25146314147,141.259011624894,85.4567567647839,0,68.1598948389099,106.385972542685,81.3556439389724,108.466052856649,102.426743066776,0,0,110.859657940798,115.922174655634,104.986297050609,125.323624924223,121.365759342091,110.971327381388,0,0,113.42993577335,114.24301677293,103.581927809198,94.6729817071586,97.560688388507,118.459073425263,121.215293428736,122.988395538438,113.854160871622,0,101.653042432303,110.68654817552,113.138143455534,646.213569195129,140.003130309267,143.758717591146,178.539612560367,349.775680918707,358.13208902301,0,93.0877160402925,90.04926175329,82.2494669625699,0,0,1.07898199521812,0.578899867417111,0,0.708661957691506,0.450744593731522,0],"Archive803_field22":[4496685.30065835,8995.77,8995.77,4511019.9219498,8959405.00097784,4510763.01618631,8995.77,4524411.25432025,8951781.96660032,8995.77,7872133.56756425,7871794.00649074,8995.77,8995.77,8995.77,6577504.76875857,8995.77,8995.77,4573561.87317765,5624221.61912751,5652231.36635377,6548966.69135582,5934106.28471891,6304755.00027715,8995.77,8995.77,7278055.33178697,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,7735047.33660191,8140000.80867922,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8783564.55022021,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8907160.27647501,8995.77,8995.77,8995.77,8677463.0938075,8939066.64591896,8645166.48098077,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,4464314.10957664,4505320.44635585,7209859.16359711,6954382.21661506,7327232.57532524,6777053.77533733,6223972.69223428,5502856.66851383,6501017.17728209,7985945.89200092,4505763.19482511,7942613.28294322,4500924.48749704,5663409.12902502,7567490.9006648,7225604.63364821,7208232.89259996,7032856.91956057,6436498.30196285,7923083.80684295,5522566.30424087,7530235.5255288,6598603.37453936,6738938.09659511,7374098.26664916,8689673.59733119,8292228.46919847,5779540.8658921,4503280.42644634,7831185.22190715,8059843.55019244,8381217.24223293,8522455.01008327,8545734.23289433,8580015.3056222,8889204.93606169,8670988.34211385,8479490.41144078,8397827.74055437,8682892.78847639,7132587.29206197,7633847.24240796,7896046.20094467,8740357.8310985,8691025.19650022,8890529.27517046,8965506.1070097,8595916.89434983,8680483.65408347,8466762.99368592,8717129.85680784,8259628.07607491,8949744.54740122,8858325.86662509,8864167.50467886,8833784.56402349,8995.77,8147176.70326897,8995.77,8924520.39570781,8961735.2414415,8199220.47061662,7408342.81319415,7879111.45234308,7776543.01295487,7711796.19171018,8978265.38672676,8964748.47519112,8955455.57705412,8762593.56948293,8982538.15426429,8963809.21963079,8714489.63770901,8989487.60330328,8897772.56233671,8914694.55064799,8867632.67192502,8988970.36538798,8994584.41024085,8994350.49824641,7839574.46656344,8798868.18525397,8927294.48286428,8719566.13650171,8995.77,8995.77,8995.77,7318442.54059522,8995.77,6781897.3835052,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8745291.76440996,8409073.26242779,8399703.14439511,6116585.78697425,4601556.11261373,8618250.20242729,8650574.63137632,8591823.27496729,8468579.51928586,8672829.25401735,8059021.99828512,8550424.23646013,8830543.7038579,6737834.38315788,7131652.05500523,5763892.95994876,6245060.67583381,6615752.66692271,5717153.82337533,8416325.14452566,8246337.30325807,8681277.67001334,8440191.64881006,8859864.79389297,8251304.73257644,7797184.48994687,8619490.7090592,8839394.88015,8173645.82292022,4505579.39661792,8121087.9585238,8268363.65363951,7568174.31195344,4453560.42208228,5300390.60542055,4501625.34825904,5749290.95554164,5296545.34767458,6174451.63281761,4499028.06879247,6979252.71803669,8862318.78904975,7611514.83849686,6448144.32835361,7284294.40050616,7857270.7767258,6729232.9285021,8429133.83661248,8275333.75325586,8644220.13799882,6854565.23863862,7221732.04473418,4506094.78535423,7782098.65833916,6135111.74463096,8995.77,8995.77,8995.77,5639521.89532922,4504943.2300755,5315690.02171262,5670101.79503157,5495165.53678383,5975737.90484968,6302681.09357719,8182478.70964757,8810148.50899647,8995.77,7969447.99982906,6951914.60537925,7290229.19902428,7573323.91771273,6439632.36816044,7427538.70451953,6013979.04865127,7212370.90235365,6683721.31564969,4499839.96488607,6633458.39679869,5954722.16853812,5655702.93578251,6530242.04670475,5774382.34036825,7702509.40084197,6525801.51566067,4500699.44438081,5212725.60939902,5196332.48727554,5348574.34746062,4504382.04628862,5581509.77034152,5368322.28623148,4497290.80524873,5237876.11786809,6323752.32504015,6868525.2995464,7025658.27017193,7213794.41302248,6081737.34197231,5244187.63827246,6966684.03101805,8511386.41771723,8664613.22723459,8876524.28636918,8325099.0692922,8866860.47530685,8994819.26450173,8130053.83805035,8936354.00710067,8969450.31368533,8961924.08315618,8677247.33453453,8866002.32501645,8982315.73326595,8821937.24734165,8413881.20308934,7768757.07316732,7845855.78155228,8912177.56091725,8848322.81390933,8634253.32223572,8237876.13125974,8324855.18511739,8126859.91214835,8532140.14019282,8510698.24012468,5481917.18050171,8959888.41390494,8810973.11003621,7582027.47348839,8195017.34458632,8670286.45320756,7206586.32482333,7558759.34933203,6950159.79594314,6385860.53480121,4500986.86545828,5544294.93551712,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,3372513.97549376,6746.8275,6746.8275,3383264.94146235,6719553.75073339,3383072.26213973,6746.8275,3393308.44074019,6713836.47495024,6746.8275,5904100.17567318,5903845.50486805,6746.8275,6746.8275,6746.8275,4933128.57656892,6746.8275,6746.8275,3430171.40488324,4218166.21434563,4239173.52476533,4911725.01851686,4450579.71353919,4728566.25020786,6746.8275,6746.8275,5458541.49884023,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,5801285.50245144,6105000.60650942,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6611268.11474809,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6680370.20735625,6746.8275,6746.8275,6746.8275,6508097.32035562,6704299.98443921,6483874.86073558,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,3348235.58218248,3378990.33476689,5407394.37269783,5215786.6624613,5495424.43149393,5082790.331503,4667979.51917571,4127142.50138537,4875762.88296156,5989459.41900069,3379322.39611883,5956959.96220741,3375693.36562278,4247556.84676876,5675618.1754986,5419203.47523616,5406174.66944997,5274642.68967043,4827373.72647214,5942312.85513222,4141924.72818065,5647676.6441466,4948952.53090452,5054203.57244633,5530573.69998687,6517255.19799839,6219171.35189885,4334655.64941908,3377460.31983475,5873388.91643036,6044882.66264433,6285912.9316747,6391841.25756245,6409300.67467075,6435011.47921665,6666903.70204627,6503241.25658539,6359617.80858059,6298370.80541578,6512169.59135729,5349440.46904648,5725385.43180597,5922034.6507085,6555268.37332387,6518268.89737516,6667896.95637784,6724129.58025727,6446937.67076237,6510362.7405626,6350072.24526444,6537847.39260588,6194721.05705618,6712308.41055092,6643744.39996882,6648125.62850914,6625338.42301762,6746.8275,6110382.52745172,6746.8275,6693390.29678086,6721301.43108112,6149415.35296247,5556257.10989561,5909333.58925731,5832407.25971616,5783847.14378263,6733699.04004507,6723561.35639334,6716591.6827906,6571945.17711219,6736903.61569821,6722856.91472309,6535867.22828176,6742115.70247746,6673329.42175253,6686020.91298599,6650724.50394376,6741727.77404099,6745938.30768064,6745762.87368481,5879680.84992258,6599151.13894048,6695470.86214821,6539674.60237629,6746.8275,6746.8275,6746.8275,5488831.90544641,6746.8275,5086423.0376289,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6558968.82330747,6306804.94682084,6299777.35829633,4587439.34023068,3451167.0844603,6463687.65182047,6487930.97353224,6443867.45622546,6351434.63946439,6504621.94051302,6044266.49871384,6412818.17734509,6622907.77789343,5053375.78736842,5348739.04125393,4322919.71996157,4683795.50687536,4961814.50019203,4287865.3675315,6312243.85839425,6184752.97744356,6510958.25251,6330143.73660754,6644898.59541973,6188478.54943233,5847888.36746015,6464618.0317944,6629546.1601125,6130234.36719017,3379184.54746344,6090815.96889285,6201272.74022963,5676130.73396508,3340170.31656171,3975292.95406541,3376219.01119428,4311968.21665623,3972409.01075594,4630838.7246132,3374271.05159435,5234439.53852752,6646739.09178732,5708636.12887265,4836108.24626521,5463220.80037962,5892953.08254435,5046924.69637657,6321850.37745936,6206500.3149419,6483165.10349912,5140923.92897897,5416299.03355063,3379571.08901567,5836573.99375437,4601333.80847322,6746.8275,6746.8275,6746.8275,4229641.42149691,3378707.42255663,3986767.51628447,4252576.34627368,4121374.15258787,4481803.42863726,4727010.82018289,6136859.03223567,6607611.38174735,6746.8275,5977085.99987179,5213935.95403444,5467671.89926821,5679992.93828454,4829724.27612033,5570654.02838964,4510484.28648845,5409278.17676524,5012790.98673727,3374879.97366455,4975093.79759901,4466041.62640359,4241777.20183688,4897681.53502856,4330786.75527619,5776882.05063148,4894351.1367455,3375524.58328561,3909544.20704927,3897249.36545666,4011430.76059547,3378286.53471647,4186132.32775614,4026241.71467361,3372968.10393655,3928407.08840107,4742814.24378011,5151393.9746598,5269243.70262895,5410345.80976686,4561303.00647923,3933140.72870434,5225013.02326353,6383539.81328792,6498459.92042594,6657393.21477689,6243824.30196915,6650145.35648013,6746114.4483763,6097540.37853776,6702265.5053255,6727087.735264,6721443.06236713,6507935.5009009,6649501.74376234,6736736.79994946,6616452.93550624,6310410.90231701,5826567.80487549,5884391.83616421,6684133.17068794,6636242.110432,6475689.99167679,6178407.0984448,6243641.38883804,6095144.93411126,6399105.10514461,6383023.68009351,4111437.88537628,6719916.3104287,6608229.83252715,5686520.60511629,6146263.00843974,6502714.83990567,5404939.74361749,5669069.51199902,5212619.84695736,4789395.4011009,3375740.14909371,4158221.20163784,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94378.8083317202,0,0,0,0,0,0,0,0,0,0,0,0,0,-3.83512741564118e-10,0,-2.55675161042745e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.27837580521373e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive803_field23":[499.801616307846,1,1,502.187226483989,992.675512020918,502.014542483733,1,503.750135385493,992.774411658452,1,875.137340318861,875.081013368877,1,1,1,734.281956510288,1,1,509.943209636465,628.137474856054,631.009162019948,719.097344993838,651.936096551935,692.684137880774,1,1,793.422233518804,1,1,1,1,1,1,858.006960383353,901.021877068217,1,1,1,1,1,1,1,968.834162261538,1,1,1,1,1,1,1,1,1,970.242545646528,1,1,1,967.931335323366,971.232939113062,1004.30239169381,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,495.93334805507,501.235818788281,801.829234395225,772.561343083756,812.796855660378,753.052858121952,691.047366458346,611.473685668783,722.488307728852,886.433849063269,501.303658071402,881.018423213896,500.48592902008,629.701944166517,840.172617758434,802.686483463988,801.220301327677,781.527612214586,715.423779456122,880.44325915263,614.053132974501,836.722809182384,733.642799666949,749.194773395225,819.762164983349,962.977630354085,918.523644714758,642.094165295996,500.8979173488,868.409052140451,895.863418893258,930.41458399173,946.640096510443,944.735373538659,952.587155312013,987.121011812546,950.488671049342,931.177914329211,928.710618980681,954.368307919099,793.028600609862,848.534372199204,874.725091375311,952.36318390191,965.306810520922,965.162881848943,999.830526684607,952.106636034311,947.2418198348,949.70744891248,964.685854927492,917.354699182791,994.642926330582,980.461141305175,983.985574240687,981.086552182623,1,923.398812047667,1,989.485420736017,995.901532036359,911.11842006335,825.316959058887,875.429631952203,863.59698122152,851.84792218021,997.547213431389,996.29878759609,994.96193793632,973.734488796089,997.994283756453,996.358363900984,968.437534950277,999.1363951547,988.542245588879,990.966240455254,985.601472502143,999.117639258164,999.832716791433,999.85748935017,869.767749643171,978.16490594992,992.422050145519,969.238444721256,1,1,1,806.892362898979,1,758.153730821941,1,1,1,1,1,1,1,1,1,1,1,1,1,971.322986106621,934.445175194537,933.800976022807,678.805003572506,517.161189264927,957.944428346808,961.669930172033,955.061706425754,941.377629362687,961.875378571212,896.020423005519,950.356948346807,981.85389029289,751.533421093691,791.868697570672,645.192017798193,653.937017039737,718.134501134297,629.289054296111,935.445972656994,916.660386696821,964.822898799425,938.342027656969,984.762906784252,917.293896658746,866.829342483312,958.163495629605,982.684431741802,908.567750171862,501.278504767729,902.503789674071,918.979702359691,841.252813990364,493.012073725549,589.07906533459,500.615104401583,639.000951355868,588.307941190934,686.723237672985,500.208294998809,775.676866967425,984.876304914237,846.248218746163,715.84361542787,809.46629000603,872.98754641574,747.854230825997,936.146455140762,919.331861276202,960.177735764554,762.264242105621,802.892158971806,501.361994409883,865.508631917633,682.183370363912,1,1,1,627.124020205807,501.176458320559,591.182435962884,630.232378979208,611.118692506312,664.715551071944,700.747096487057,908.957129212673,962.222980974582,1,885.999656634844,772.917827950119,810.534396466595,841.991627509217,714.45117753097,825.68570917344,668.67218465499,801.80161807841,743.170933646122,500.329641265722,737.496234832733,662.15351474958,628.83391015263,726.042951610252,642.093284796195,856.235697439343,725.76628851073,500.468028917194,579.692207723652,577.840530871409,594.84899621744,501.075248846679,619.476194268462,596.682486896248,499.90710856228,582.538714983187,702.811049731559,763.522773655879,781.338157247367,800.561548515753,675.864453419373,582.886453887397,774.008268763073,946.578997147891,962.828222173577,984.146350223105,923.400229951991,985.038633271524,1000.31973647498,903.495443798489,993.382256633503,997.367572806906,995.186170803639,962.591806019751,982.441736359087,998.284676972664,980.599085319317,934.477846288241,862.846564555629,872.662479744137,989.884694303124,983.680915800947,959.833015494058,915.917299043747,923.36371892261,902.963415644246,947.517962903578,946.647970668972,617.247916809699,996.011826457517,979.466845502162,842.625298013093,909.524544188199,962.415665234048,799.386873730685,839.503635775834,772.385716364276,709.843346711011,500.517591928408,615.895455103613,1,1,1,1,1,1,499.801616307846,1,1,502.187226483989,992.675512020918,502.014542483733,1,503.750135385493,992.774411658452,1,875.137340318861,875.081013368877,1,1,1,734.281956510288,1,1,509.943209636465,628.137474856054,631.009162019948,719.097344993838,651.936096551935,692.684137880774,1,1,793.422233518804,1,1,1,1,1,1,858.006960383353,901.021877068217,1,1,1,1,1,1,1,968.834162261538,1,1,1,1,1,1,1,1,1,970.242545646528,1,1,1,967.931335323366,971.232939113062,1004.30239169381,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,495.93334805507,501.235818788281,801.829234395225,772.561343083756,812.796855660378,753.052858121952,691.047366458346,611.473685668783,722.488307728852,886.43384906327,501.303658071402,881.018423213896,500.48592902008,629.701944166517,840.172617758434,802.686483463988,801.220301327677,781.527612214586,715.423779456122,880.44325915263,614.053132974501,836.722809182384,733.642799666949,749.194773395225,819.762164983349,962.977630354085,918.523644714758,642.094165295996,500.8979173488,868.409052140451,895.863418893258,930.41458399173,946.640096510443,944.735373538659,952.587155312013,987.121011812546,950.488671049342,931.17791432921,928.710618980681,954.368307919099,793.028600609862,848.534372199204,874.725091375311,952.36318390191,965.306810520922,965.162881848943,999.830526684607,952.106636034311,947.2418198348,949.707448912479,964.685854927492,917.354699182791,994.642926330582,980.461141305175,983.985574240687,981.086552182623,1,923.398812047667,1,989.485420736017,995.901532036359,911.11842006335,825.316959058886,875.429631952203,863.59698122152,851.84792218021,997.547213431389,996.29878759609,994.96193793632,973.734488796089,997.994283756454,996.358363900984,968.437534950277,999.1363951547,988.542245588879,990.966240455254,985.601472502143,999.117639258164,999.832716791433,999.85748935017,869.767749643171,978.16490594992,992.422050145519,969.238444721256,1,1,1,806.892362898979,1,758.153730821941,1,1,1,1,1,1,1,1,1,1,1,1,1,971.322986106621,934.445175194537,933.800976022807,678.805003572506,517.161189264927,957.944428346808,961.669930172033,955.061706425754,941.377629362687,961.875378571212,896.020423005519,950.356948346807,981.85389029289,751.533421093691,791.868697570672,645.192017798193,653.937017039737,718.134501134297,629.289054296112,935.445972656994,916.660386696821,964.822898799425,938.342027656969,984.762906784252,917.293896658746,866.829342483312,958.163495629605,982.684431741802,908.567750171861,501.278504767729,902.503789674071,918.979702359691,841.252813990364,493.01207372555,589.07906533459,500.615104401583,639.000951355868,588.307941190934,686.723237672984,500.208294998809,775.676866967425,984.876304914237,846.248218746163,715.84361542787,809.46629000603,872.98754641574,747.854230825997,936.146455140762,919.331861276202,960.177735764554,762.264242105621,802.892158971806,501.361994409883,865.508631917633,682.183370363912,1,1,1,627.124020205807,501.176458320559,591.182435962884,630.232378979208,611.118692506312,664.715551071945,700.747096487057,908.957129212673,962.222980974582,1,885.999656634844,772.917827950119,810.534396466595,841.991627509217,714.45117753097,825.685709173439,668.67218465499,801.80161807841,743.170933646122,500.329641265722,737.496234832733,662.15351474958,628.83391015263,726.042951610252,642.093284796195,856.235697439343,725.76628851073,500.468028917194,579.692207723652,577.840530871409,594.84899621744,501.075248846679,619.476194268462,596.682486896248,499.907108562281,582.538714983187,702.811049731559,763.522773655878,781.338157247367,800.561548515753,675.864453419373,582.886453887397,774.008268763073,946.578997147891,962.828222173577,984.146350223105,923.400229951991,985.038633271524,1000.31973647498,903.495443798489,993.382256633503,997.367572806906,995.186170803639,962.591806019751,982.441736359087,998.284676972664,980.599085319317,934.477846288241,862.846564555629,872.662479744137,989.884694303124,983.680915800947,959.833015494058,915.917299043746,923.36371892261,902.963415644246,947.517962903578,946.647970668972,617.247916809699,996.011826457517,979.466845502162,842.625298013093,909.524544188199,962.415665234049,799.386873730685,839.503635775834,772.385716364276,709.843346711011,500.517591928408,615.895455103612,1,1,1,1,1,1,499.801616307846,1,1,502.187226483989,992.675512020918,502.014542483733,1,503.750135385493,992.774411658452,1,875.137340318861,875.081013368877,1,1,1,734.281956510288,1,1,509.943209636465,628.137474856054,631.009162019948,719.097344993838,651.936096551935,692.684137880774,1,1,793.422233518804,1,1,1,1,1,1,858.006960383353,901.021877068217,1,1,1,1,1,1,1,968.834162261538,1,1,1,1,1,1,1,1,1,970.242545646528,1,1,1,967.931335323366,971.232939113062,1004.30239169381,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,495.93334805507,501.235818788281,801.829234395225,772.561343083756,812.796855660378,753.052858121952,691.047366458346,611.473685668783,722.488307728852,886.433849063269,501.303658071402,881.018423213896,500.48592902008,629.701944166517,840.172617758434,802.686483463988,801.220301327677,781.527612214586,715.423779456122,880.44325915263,614.053132974501,836.722809182384,733.642799666949,749.194773395225,819.762164983349,962.977630354085,918.523644714758,642.094165295996,500.8979173488,868.409052140451,895.863418893258,930.41458399173,946.640096510443,944.735373538659,952.587155312013,987.121011812546,950.488671049342,931.177914329211,928.710618980681,954.368307919099,793.028600609862,848.534372199204,874.725091375311,952.36318390191,965.306810520922,965.162881848943,999.830526684607,952.106636034311,947.2418198348,949.70744891248,964.685854927492,917.354699182791,994.642926330582,980.461141305175,983.985574240687,981.086552182623,1,923.398812047667,1,989.485420736017,995.901532036359,911.11842006335,825.316959058887,875.429631952203,863.59698122152,851.84792218021,997.547213431389,996.29878759609,994.96193793632,973.734488796089,997.994283756453,996.358363900984,968.437534950277,999.1363951547,988.542245588879,990.966240455254,985.601472502143,999.117639258164,999.832716791433,999.85748935017,869.767749643171,978.16490594992,992.422050145519,969.238444721256,1,1,1,806.892362898979,1,758.153730821941,1,1,1,1,1,1,1,1,1,1,1,1,1,971.322986106621,934.445175194537,933.800976022807,678.805003572506,517.161189264927,957.944428346808,961.669930172033,955.061706425754,941.377629362687,961.875378571212,896.020423005519,950.356948346807,981.85389029289,751.533421093691,791.868697570672,645.192017798193,653.937017039737,718.134501134297,629.289054296111,935.445972656994,916.660386696821,964.822898799425,938.342027656969,984.762906784252,917.293896658746,866.829342483312,958.163495629605,982.684431741802,908.567750171862,501.278504767729,902.503789674071,918.979702359691,841.252813990364,493.012073725549,589.07906533459,500.615104401583,639.000951355868,588.307941190934,686.723237672985,500.208294998809,775.676866967425,984.876304914237,846.248218746163,715.84361542787,809.46629000603,872.98754641574,747.854230825997,936.146455140762,919.331861276202,960.177735764554,762.264242105621,802.892158971806,501.361994409883,865.508631917633,682.183370363912,1,1,1,627.124020205807,501.176458320559,591.182435962884,630.232378979208,611.118692506312,664.715551071944,700.747096487057,908.957129212673,962.222980974582,1,885.999656634844,772.917827950119,810.534396466595,841.991627509217,714.45117753097,825.68570917344,668.67218465499,801.80161807841,743.170933646122,500.329641265722,737.496234832733,662.15351474958,628.83391015263,726.042951610252,642.093284796195,856.235697439343,725.76628851073,500.468028917194,579.692207723652,577.840530871409,594.84899621744,501.075248846679,619.476194268462,596.682486896248,499.90710856228,582.538714983187,702.811049731559,763.522773655879,781.338157247367,800.561548515753,675.864453419373,582.886453887397,774.008268763073,946.578997147891,962.828222173577,984.146350223105,923.400229951991,985.038633271524,1000.31973647498,903.495443798489,993.382256633503,997.367572806906,995.186170803639,962.591806019751,982.441736359087,998.284676972664,980.599085319317,934.477846288241,862.846564555629,872.662479744137,989.884694303124,983.680915800947,959.833015494058,915.917299043747,923.36371892261,902.963415644246,947.517962903578,946.647970668972,617.247916809699,996.011826457517,979.466845502162,842.625298013093,909.524544188199,962.415665234048,799.386873730685,839.503635775834,772.385716364276,709.843346711011,500.517591928408,615.895455103613,1,1,1,1,1,1],"Archive803_field24":[999.801616307846,0.103616813294233,0.103616813294233,912.548907813413,342.797701659236,396.95589145734,0.103616813294233,309.053165688523,947.955252323164,0.103616813294233,675.19843513802,630.322948852748,0.103616813294233,0.103616813294233,0.103616813294233,180.775113890542,0.103616813294233,0.103616813294233,163.981577182897,246.223068697696,173.462424483291,135.985098537338,230.342132720068,148.120335797441,0.103616813294233,0.103616813294233,102.566886958442,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,178.163977124973,100.985244492526,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.387508504128,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.533440702377,0.103616813294233,0.103616813294233,0.103616813294233,100.293960453838,180.657000655928,104.062613411089,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,225.604046979801,609.068174604507,167.269158857731,282.783339495911,225.778585581013,228.227445850477,266.634254889035,306.219760236783,370.449453383673,334.003482044702,457.87135113103,251.667620202098,381.421290701409,425.383828994322,293.806119832385,355.426339262018,494.186584464626,423.164868502771,471.132808183617,440.527021325268,512.723541872386,406.210235085793,580.928038345809,524.993595993059,574.846118520778,291.894546238221,191.153103973152,364.979212707747,533.097941786728,926.180313137518,538.184327767631,295.7994648163,405.050094669183,235.710972376235,344.848075937612,406.30832592539,179.55173938708,137.811548021056,100.48866032441,116.940614661131,666.432832437104,528.313321122114,128.452442730152,110.504738808816,272.231438429914,201.265737383417,287.856870780019,171.3254050761,115.29062784358,98.4056594181064,210.580624069058,255.206734985816,259.488191405165,271.510088935426,340.331185477854,375.559347163943,0.103616813294233,147.557286533788,0.103616813294233,337.76132024031,421.854339591604,192.358511320758,263.480574364564,239.498676140164,355.061320640967,185.121771319233,407.997743890192,523.959680892829,460.923894839417,477.362970151132,492.990834364893,633.120295887616,502.754303176638,566.030447825676,477.640435808805,651.33616249789,568.81596199699,623.266403197752,750.767193425489,684.850729486046,972.358169975527,734.515655820744,693.823073492677,648.615844366276,0.103616813294233,0.103616813294233,0.103616813294233,136.883000474174,0.103616813294233,219.798209990701,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,420.162557914607,483.444275083638,719.288803407629,328.023080678599,260.837875481935,588.073142916046,701.577046564825,758.814400809928,661.58325083316,959.511009069746,814.741045477759,578.846259370031,840.917208133643,285.064589460353,331.06272681743,271.421257887698,166.818948414672,206.681018449677,297.333409134821,543.100472603994,599.464083527782,531.212192439648,718.388276064845,581.607627973277,662.538463976958,720.218556187115,660.047179282875,745.714122107043,612.046701210711,698.749179254533,494.766712949858,550.689493732889,564.577171241718,312.321091320857,352.025684570798,546.821116131789,463.522716057985,413.30828297817,402.977580396518,470.781975350715,478.001490548982,525.138686982396,670.267372307259,918.660086591115,407.036016891476,431.301273685772,426.520315206329,374.419050073201,433.96632664002,430.101169719991,795.878888351593,737.657607326025,760.459012982708,826.10029529032,708.137663520543,0.103616813294233,0.103616813294233,0.103616813294233,597.052351116264,684.641145515085,726.359847699238,831.534203649263,662.053050131282,772.849509212066,642.097498780935,394.011049562308,148.047051295181,0.103616813294233,744.855307770714,811.557648386964,730.389525039793,794.399000605574,984.496387697148,895.845876393323,732.661263113171,644.541404444927,754.805685415411,849.064978509124,686.370311605878,822.943748543315,641.915130529882,609.534453550552,553.10836976326,621.046571502484,897.503984627145,773.571034782296,732.280964410066,807.908503693484,871.943297771555,925.44291746838,991.119592008067,934.16418372105,621.745451670785,512.710758098753,503.380573153354,546.550532979334,866.490651315663,979.06686376502,942.771573045902,595.711700730333,931.796415999383,842.3059007808,896.657049015948,952.742085804727,965.700755367435,899.060827545822,840.804471262163,898.912187175359,786.264682000377,807.883620033985,900.366183530837,937.817856850641,939.832682106888,871.964881338014,861.995475651218,915.334127592745,923.205912994056,866.267792839956,893.594558773438,804.800075958023,773.761386347964,786.768488739466,932.049874836589,875.389049765196,873.237599891829,821.655255957965,224.719456504218,716.034135051406,688.063211702153,494.452614847303,321.093948294968,337.064479351411,921.868239810841,877.907121591259,862.676067970023,832.855399586269,835.246941879532,914.672031349947,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,999.801616307846,0.103616813294233,0.103616813294233,912.548907813413,342.797701659236,396.95589145734,0.103616813294233,309.053165688523,947.955252323163,0.103616813294233,675.19843513802,630.322948852748,0.103616813294233,0.103616813294233,0.103616813294233,180.775113890542,0.103616813294233,0.103616813294233,163.981577182897,246.223068697696,173.462424483291,135.985098537338,230.342132720068,148.120335797441,0.103616813294233,0.103616813294233,102.566886958442,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,178.163977124973,100.985244492526,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.387508504128,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.533440702377,0.103616813294233,0.103616813294233,0.103616813294233,100.293960453838,180.657000655928,104.062613411089,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,225.604046979801,609.068174604507,167.269158857731,282.783339495911,225.778585581013,228.227445850477,266.634254889035,306.219760236783,370.449453383673,334.003482044702,457.87135113103,251.667620202098,381.421290701409,425.383828994322,293.806119832385,355.426339262018,494.186584464626,423.164868502772,471.132808183617,440.527021325268,512.723541872386,406.210235085793,580.928038345809,524.993595993059,574.846118520778,291.894546238221,191.153103973152,364.979212707747,533.097941786728,926.180313137518,538.184327767631,295.7994648163,405.050094669183,235.710972376235,344.848075937612,406.30832592539,179.55173938708,137.811548021056,100.48866032441,116.940614661131,666.432832437104,528.313321122114,128.452442730152,110.504738808816,272.231438429914,201.265737383417,287.856870780019,171.3254050761,115.29062784358,98.4056594181064,210.580624069058,255.206734985816,259.488191405165,271.510088935426,340.331185477854,375.559347163943,0.103616813294233,147.557286533788,0.103616813294233,337.76132024031,421.854339591604,192.358511320758,263.480574364564,239.498676140164,355.061320640967,185.121771319233,407.997743890192,523.959680892829,460.923894839417,477.362970151132,492.990834364893,633.120295887616,502.754303176638,566.030447825676,477.640435808805,651.33616249789,568.81596199699,623.266403197752,750.767193425489,684.850729486046,972.358169975527,734.515655820744,693.823073492677,648.615844366276,0.103616813294233,0.103616813294233,0.103616813294233,136.883000474174,0.103616813294233,219.798209990701,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,420.162557914607,483.444275083638,719.288803407629,328.023080678599,260.837875481935,588.073142916046,701.577046564825,758.814400809928,661.58325083316,959.511009069746,814.741045477759,578.846259370031,840.917208133643,285.064589460353,331.06272681743,271.421257887699,166.818948414672,206.681018449677,297.333409134821,543.100472603994,599.464083527782,531.212192439648,718.388276064845,581.607627973277,662.538463976958,720.218556187116,660.047179282875,745.714122107043,612.046701210711,698.749179254533,494.766712949857,550.689493732889,564.577171241718,312.321091320857,352.025684570797,546.821116131789,463.522716057985,413.30828297817,402.977580396518,470.781975350715,478.001490548982,525.138686982396,670.267372307259,918.660086591115,407.036016891476,431.301273685772,426.520315206329,374.419050073201,433.96632664002,430.101169719991,795.878888351593,737.657607326025,760.459012982708,826.10029529032,708.137663520543,0.103616813294233,0.103616813294233,0.103616813294233,597.052351116265,684.641145515085,726.359847699238,831.534203649263,662.053050131282,772.849509212066,642.097498780935,394.011049562308,148.047051295181,0.103616813294233,744.855307770714,811.557648386964,730.389525039793,794.399000605574,984.496387697148,895.845876393323,732.661263113171,644.541404444927,754.805685415411,849.064978509124,686.370311605878,822.943748543315,641.915130529882,609.534453550552,553.10836976326,621.046571502484,897.503984627145,773.571034782296,732.280964410065,807.908503693483,871.943297771555,925.44291746838,991.119592008067,934.16418372105,621.745451670785,512.710758098753,503.380573153354,546.550532979334,866.490651315663,979.06686376502,942.771573045902,595.711700730333,931.796415999384,842.3059007808,896.657049015948,952.742085804727,965.700755367435,899.060827545822,840.804471262163,898.912187175359,786.264682000376,807.883620033985,900.366183530837,937.817856850641,939.832682106888,871.964881338014,861.995475651218,915.334127592745,923.205912994056,866.267792839956,893.594558773438,804.800075958024,773.761386347965,786.768488739467,932.049874836589,875.389049765196,873.237599891829,821.655255957965,224.719456504218,716.034135051406,688.063211702153,494.452614847303,321.093948294968,337.064479351411,921.868239810841,877.907121591259,862.676067970023,832.855399586269,835.246941879532,914.672031349947,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,999.801616307846,0.103616813294233,0.103616813294233,912.548907813413,342.797701659236,396.95589145734,0.103616813294233,309.053165688523,947.955252323164,0.103616813294233,675.19843513802,630.322948852748,0.103616813294233,0.103616813294233,0.103616813294233,180.775113890542,0.103616813294233,0.103616813294233,163.981577182897,246.223068697696,173.462424483291,135.985098537338,230.342132720068,148.120335797441,0.103616813294233,0.103616813294233,102.566886958442,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,178.163977124973,100.985244492526,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.387508504128,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.533440702377,0.103616813294233,0.103616813294233,0.103616813294233,100.293960453838,180.657000655928,104.062613411089,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,225.604046979801,609.068174604507,167.269158857731,282.783339495911,225.778585581013,228.227445850477,266.634254889035,306.219760236783,370.449453383673,334.003482044702,457.87135113103,251.667620202098,381.421290701409,425.383828994322,293.806119832385,355.426339262018,494.186584464626,423.164868502771,471.132808183617,440.527021325268,512.723541872386,406.210235085793,580.928038345809,524.993595993059,574.846118520778,291.894546238221,191.153103973152,364.979212707747,533.097941786728,926.180313137518,538.184327767631,295.7994648163,405.050094669183,235.710972376235,344.848075937612,406.30832592539,179.55173938708,137.811548021056,100.48866032441,116.940614661131,666.432832437104,528.313321122114,128.452442730152,110.504738808816,272.231438429914,201.265737383417,287.856870780019,171.3254050761,115.29062784358,98.4056594181064,210.580624069058,255.206734985816,259.488191405165,271.510088935426,340.331185477854,375.559347163943,0.103616813294233,147.557286533788,0.103616813294233,337.76132024031,421.854339591604,192.358511320758,263.480574364564,239.498676140164,355.061320640967,185.121771319233,407.997743890192,523.959680892829,460.923894839417,477.362970151132,492.990834364893,633.120295887616,502.754303176638,566.030447825676,477.640435808805,651.33616249789,568.81596199699,623.266403197752,750.767193425489,684.850729486046,972.358169975527,734.515655820744,693.823073492677,648.615844366276,0.103616813294233,0.103616813294233,0.103616813294233,136.883000474174,0.103616813294233,219.798209990701,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,420.162557914607,483.444275083638,719.288803407629,328.023080678599,260.837875481935,588.073142916046,701.577046564825,758.814400809928,661.58325083316,959.511009069746,814.741045477759,578.846259370031,840.917208133643,285.064589460353,331.06272681743,271.421257887698,166.818948414672,206.681018449677,297.333409134821,543.100472603994,599.464083527782,531.212192439648,718.388276064845,581.607627973277,662.538463976958,720.218556187115,660.047179282875,745.714122107043,612.046701210711,698.749179254533,494.766712949858,550.689493732889,564.577171241718,312.321091320857,352.025684570798,546.821116131789,463.522716057985,413.30828297817,402.977580396518,470.781975350715,478.001490548982,525.138686982396,670.267372307259,918.660086591115,407.036016891476,431.301273685772,426.520315206329,374.419050073201,433.96632664002,430.101169719991,795.878888351593,737.657607326025,760.459012982708,826.10029529032,708.137663520543,0.103616813294233,0.103616813294233,0.103616813294233,597.052351116264,684.641145515085,726.359847699238,831.534203649263,662.053050131282,772.849509212066,642.097498780935,394.011049562308,148.047051295181,0.103616813294233,744.855307770714,811.557648386964,730.389525039793,794.399000605574,984.496387697148,895.845876393323,732.661263113171,644.541404444927,754.805685415411,849.064978509124,686.370311605878,822.943748543315,641.915130529882,609.534453550552,553.10836976326,621.046571502484,897.503984627145,773.571034782296,732.280964410066,807.908503693484,871.943297771555,925.44291746838,991.119592008067,934.16418372105,621.745451670785,512.710758098753,503.380573153354,546.550532979334,866.490651315663,979.06686376502,942.771573045902,595.711700730333,931.796415999383,842.3059007808,896.657049015948,952.742085804727,965.700755367435,899.060827545822,840.804471262163,898.912187175359,786.264682000377,807.883620033985,900.366183530837,937.817856850641,939.832682106888,871.964881338014,861.995475651218,915.334127592745,923.205912994056,866.267792839956,893.594558773438,804.800075958023,773.761386347964,786.768488739466,932.049874836589,875.389049765196,873.237599891829,821.655255957965,224.719456504218,716.034135051406,688.063211702153,494.452614847303,321.093948294968,337.064479351411,921.868239810841,877.907121591259,862.676067970023,832.855399586269,835.246941879532,914.672031349947,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive803_field25":[-666601.582727445,330983.134883501,326881.026640589,-666722.629999071,-167123.081954498,-166669.623048733,322993.116691914,-166837.237097432,-666384.590049609,80912.4153028309,-417133.185960508,-416772.152601196,79601.1474442521,325131.317883007,83699.5024282904,-41702.8542816626,206475.872735388,82651.6538897784,-41629.0607197872,-105362.240484937,-39720.0121391691,20657.5340900964,21133.9002457196,50453.0784221879,207069.147984868,125758.159824329,19614.9410322498,83630.1117218488,144580.160275747,116147.792171313,145075.052574758,69421.4660362274,42563.1844007066,-49217.2771590811,11759.520603993,204541.760998492,147449.857454597,120352.0658106,209399.134916562,150058.924148997,89128.2569991483,323500.353028842,30386.4016689286,223552.329712244,71051.5174479374,85570.5260724745,200277.205704071,323754.279802333,272738.057652457,259817.15984316,166552.55148663,326603.775443879,11654.2349916736,174733.798249965,275441.819601785,59119.7234222645,31147.419166506,-48717.6281202948,54111.3137824939,143801.345859629,194818.352399503,255033.523653503,169365.079651187,118853.292471976,142022.741464965,235159.800287634,325855.410705841,93421.9717845459,326703.945617096,134787.060223739,135277.643533358,324146.970121402,227512.642962756,187672.285188341,179323.038537734,209647.644747983,206128.498986786,256694.714637588,182864.178989841,105310.921634505,153028.252873904,84335.0076132127,171510.536259168,175941.003413014,329360.579327357,255925.855954908,324178.958046819,277748.531579301,283022.205871754,325015.263309059,273568.940099263,287934.216751907,237255.690258531,-104156.457093289,-416716.425476371,-36360.8678228262,-139261.36118714,-91619.5354266761,-90265.6380913821,-132304.716820975,-164922.213345046,-211506.076381459,-174705.235350725,-291596.327312615,-109098.209733032,-229087.545455565,-261207.437436466,-144208.822536814,-196224.525320538,-309563.215192878,-252831.018720319,-294847.418470874,-261084.11611048,-333579.347549978,-235578.582665503,-384606.475159323,-337751.257445982,-375031.587625647,-135742.557087088,-55459.0263322156,-211678.239182962,-354215.573318753,-666488.513741036,-339581.856551648,-138252.863466538,-226650.300414649,-91732.9911177632,-177479.79728553,-221357.636436056,-64377.5089318067,-30093.7548495621,9509.57320549415,-11555.9534977603,-451737.809359347,-334930.567569063,1271.66895293857,-3178.92896594391,-99227.5833382857,-58805.9787488753,-112480.253999013,-7805.02823169319,7423.80487388297,58243.0584759919,-47442.3178201435,-76972.1202479294,-98890.1271144214,-116019.544220357,-168824.017158062,-185045.235457632,91505.7228870536,32918.4740373818,103920.199204074,-158440.662216795,-225306.150029963,-22569.770657335,-67993.9978783342,-58610.8340266643,-154580.157034219,5388.297306172,-218269.212623728,-314672.367295739,-263229.991337873,-281537.079395674,-285119.663401109,-398105.756223035,-284939.217065737,-345042.292363573,-268467.098427258,-420901.26750438,-342092.49214929,-394018.106401241,-497878.460578484,-443044.431653904,-666458.614322565,-477231.32191193,-446549.634454656,-404574.041617721,60823.8505045403,65975.5134983528,115414.238977342,48131.1043809571,126446.167587974,-17068.7335927087,208357.50134085,118902.350394094,219503.320737071,180432.677632674,168931.133539889,234850.075174046,146436.805948158,206953.111378661,271253.765691713,267887.169529565,328057.188865141,289651.574742612,268681.498279989,-235305.323521331,-291227.89438065,-458638.937818719,-123702.716185738,-41044.8498567535,-374906.965950827,-447037.861147611,-493765.447380201,-411633.074915497,-666409.613239259,-533542.827175923,-344943.008459853,-564561.298125853,-78853.584834008,-130970.631162518,-58908.5620190876,55188.0553176498,16657.6538675397,21857.9860558614,-340267.45380685,-388353.711864559,-327162.03252894,-484141.975637921,-365280.353055238,-440263.655196353,-491946.086034845,-433700.110696605,-500698.941094385,-367824.302975265,-416674.193111186,-270943.506948053,-318431.672072215,-323619.51520121,-104363.001495903,-135708.57129309,-291646.35774705,-229574.721744076,-186937.483817424,-180478.756538624,-229076.415032077,-248298.804372407,-318677.642955032,-451776.875875411,-666439.647456647,-192320.622437929,-216801.2149074,-204372.481648029,-176957.125271237,-223498.79603803,-224628.310038418,-560067.998644087,-510322.740115579,-541653.488974331,-578318.529966764,-491929.332470756,322905.415333728,281626.043478752,237979.572186085,-402425.850092967,-479140.835863232,-510781.337938997,-596689.885933688,-456781.075742477,-545508.806046083,-436620.544930553,-220799.776349766,-33331.3965403563,331913.767019211,-475236.728707451,-522973.352951454,-457998.089802649,-513078.993912657,-666536.94924346,-595852.177747082,-452499.055920726,-386797.020832681,-474331.017054836,-541629.710877906,-417719.699917296,-526605.73945019,-375886.579329652,-353570.749964845,-303097.863115331,-370997.584440751,-590798.725455699,-479165.296538817,-448101.461355685,-510602.034450988,-564040.727293543,-604173.678524874,-666533.292862197,-616361.342981886,-354200.346268711,-266980.11866263,-265346.152022786,-304075.729154949,-568184.513623056,-666440.147545491,-627240.784136153,-336026.622923389,-623798.458966181,-560324.977719471,-609558.819628074,-666462.351947328,-666488.261914819,-616172.38207627,-569571.646576868,-604854.546744476,-522963.26057389,-547573.739953045,-622150.889327866,-666345.492737682,-666593.589032831,-600544.065220305,-597545.325593521,-622858.380636986,-623162.462459257,-573324.669142061,-622488.368000064,-549284.835073918,-527452.724589473,-542672.343431077,-666489.738489722,-618169.471546729,-613303.888005339,-567479.048994612,-4679.30106115745,-472874.340966457,-453952.764479622,-266068.293134794,-131283.251726122,-150426.198330568,-666470.019367226,-625784.713610878,-615935.209193823,-594209.756759806,-604167.025846964,-666554.380821561,190190.181105402,269697.608867436,271458.198803531,232438.587680561,269434.40741887,327803.780954067,-666601.582727445,330983.134883501,326881.026640589,-666722.629999071,-167123.081954498,-166669.623048733,322993.116691914,-166837.237097432,-666384.590049609,80912.4153028309,-417133.185960508,-416772.152601196,79601.147444252,325131.317883007,83699.5024282904,-41702.8542816626,206475.872735388,82651.6538897784,-41629.0607197872,-105362.240484937,-39720.0121391691,20657.5340900964,21133.9002457196,50453.0784221879,207069.147984868,125758.159824329,19614.9410322498,83630.1117218488,144580.160275747,116147.792171312,145075.052574758,69421.4660362274,42563.1844007066,-49217.2771590811,11759.520603993,204541.760998492,147449.857454597,120352.0658106,209399.134916562,150058.924148997,89128.2569991483,323500.353028842,30386.4016689286,223552.329712244,71051.5174479374,85570.5260724745,200277.205704071,323754.279802333,272738.057652457,259817.15984316,166552.55148663,326603.775443879,11654.2349916736,174733.798249965,275441.819601785,59119.7234222645,31147.419166506,-48717.6281202948,54111.3137824939,143801.345859629,194818.352399503,255033.523653503,169365.079651187,118853.292471976,142022.741464965,235159.800287634,325855.410705841,93421.9717845459,326703.945617096,134787.060223739,135277.643533358,324146.970121402,227512.642962756,187672.285188341,179323.038537733,209647.644747983,206128.498986786,256694.714637588,182864.178989841,105310.921634505,153028.252873904,84335.0076132127,171510.536259168,175941.003413014,329360.579327357,255925.855954908,324178.958046819,277748.531579301,283022.205871754,325015.263309059,273568.940099263,287934.216751907,237255.690258531,-104156.457093289,-416716.425476371,-36360.8678228262,-139261.36118714,-91619.5354266761,-90265.6380913821,-132304.716820975,-164922.213345046,-211506.076381459,-174705.235350725,-291596.327312615,-109098.209733033,-229087.545455565,-261207.437436466,-144208.822536814,-196224.525320538,-309563.215192878,-252831.018720319,-294847.418470874,-261084.116110481,-333579.347549978,-235578.582665503,-384606.475159323,-337751.257445982,-375031.587625647,-135742.557087088,-55459.0263322156,-211678.239182962,-354215.573318753,-666488.513741036,-339581.856551647,-138252.863466538,-226650.300414649,-91732.9911177633,-177479.79728553,-221357.636436056,-64377.5089318067,-30093.7548495621,9509.57320549415,-11555.9534977603,-451737.809359347,-334930.567569063,1271.66895293857,-3178.92896594391,-99227.5833382856,-58805.9787488753,-112480.253999013,-7805.0282316932,7423.80487388297,58243.0584759919,-47442.3178201435,-76972.1202479294,-98890.1271144214,-116019.544220357,-168824.017158062,-185045.235457632,91505.7228870535,32918.4740373818,103920.199204074,-158440.662216795,-225306.150029963,-22569.770657335,-67993.9978783342,-58610.8340266643,-154580.157034219,5388.297306172,-218269.212623728,-314672.367295739,-263229.991337873,-281537.079395674,-285119.663401109,-398105.756223035,-284939.217065737,-345042.292363573,-268467.098427258,-420901.26750438,-342092.49214929,-394018.106401241,-497878.460578484,-443044.431653904,-666458.614322565,-477231.32191193,-446549.634454656,-404574.041617721,60823.8505045403,65975.5134983528,115414.238977342,48131.1043809571,126446.167587974,-17068.7335927087,208357.50134085,118902.350394094,219503.320737071,180432.677632674,168931.133539889,234850.075174046,146436.805948158,206953.111378661,271253.765691713,267887.169529565,328057.188865141,289651.574742612,268681.498279989,-235305.323521331,-291227.89438065,-458638.937818719,-123702.716185738,-41044.8498567535,-374906.965950827,-447037.861147611,-493765.447380201,-411633.074915497,-666409.613239259,-533542.827175923,-344943.008459853,-564561.298125853,-78853.584834008,-130970.631162518,-58908.5620190876,55188.0553176498,16657.6538675397,21857.9860558614,-340267.45380685,-388353.711864559,-327162.03252894,-484141.975637921,-365280.353055238,-440263.655196353,-491946.086034845,-433700.110696604,-500698.941094385,-367824.302975265,-416674.193111186,-270943.506948053,-318431.672072215,-323619.51520121,-104363.001495903,-135708.57129309,-291646.35774705,-229574.721744076,-186937.483817424,-180478.756538624,-229076.415032077,-248298.804372407,-318677.642955032,-451776.875875411,-666439.647456647,-192320.622437929,-216801.2149074,-204372.481648029,-176957.125271237,-223498.79603803,-224628.310038418,-560067.998644087,-510322.740115578,-541653.488974331,-578318.529966764,-491929.332470756,322905.415333728,281626.043478752,237979.572186085,-402425.850092968,-479140.835863232,-510781.337938997,-596689.885933688,-456781.075742477,-545508.806046083,-436620.544930553,-220799.776349766,-33331.3965403563,331913.767019211,-475236.728707451,-522973.352951454,-457998.089802649,-513078.993912657,-666536.94924346,-595852.177747082,-452499.055920726,-386797.02083268,-474331.017054836,-541629.710877906,-417719.699917296,-526605.73945019,-375886.579329652,-353570.749964845,-303097.863115331,-370997.584440751,-590798.725455699,-479165.296538817,-448101.461355685,-510602.034450988,-564040.727293543,-604173.678524874,-666533.292862197,-616361.342981886,-354200.346268711,-266980.11866263,-265346.152022786,-304075.729154949,-568184.513623057,-666440.147545491,-627240.784136153,-336026.622923389,-623798.458966181,-560324.977719471,-609558.819628074,-666462.351947328,-666488.261914819,-616172.38207627,-569571.646576868,-604854.546744476,-522963.26057389,-547573.739953045,-622150.889327866,-666345.492737682,-666593.589032831,-600544.065220305,-597545.325593521,-622858.380636986,-623162.462459257,-573324.669142061,-622488.368000064,-549284.835073918,-527452.724589473,-542672.343431078,-666489.738489722,-618169.471546729,-613303.888005338,-567479.048994612,-4679.30106115745,-472874.340966457,-453952.764479622,-266068.293134794,-131283.251726122,-150426.198330568,-666470.019367226,-625784.713610878,-615935.209193823,-594209.756759806,-604167.025846964,-666554.380821561,190190.181105402,269697.608867436,271458.198803531,232438.587680561,269434.40741887,327803.780954067,-666601.582727445,330983.134883501,326881.026640589,-666722.629999071,-167123.081954498,-166669.623048733,322993.116691914,-166837.237097432,-666384.590049609,80912.4153028309,-417133.185960508,-416772.152601196,79601.1474442521,325131.317883007,83699.5024282904,-41702.8542816626,206475.872735388,82651.6538897784,-41629.0607197872,-105362.240484937,-39720.0121391691,20657.5340900964,21133.9002457196,50453.0784221879,207069.147984868,125758.159824329,19614.9410322498,83630.1117218488,144580.160275747,116147.792171313,145075.052574758,69421.4660362274,42563.1844007066,-49217.2771590811,11759.520603993,204541.760998492,147449.857454597,120352.0658106,209399.134916562,150058.924148997,89128.2569991483,323500.353028842,30386.4016689286,223552.329712244,71051.5174479374,85570.5260724745,200277.205704071,323754.279802333,272738.057652457,259817.15984316,166552.55148663,326603.775443879,11654.2349916736,174733.798249965,275441.819601785,59119.7234222645,31147.419166506,-48717.6281202948,54111.3137824939,143801.345859629,194818.352399503,255033.523653503,169365.079651187,118853.292471976,142022.741464965,235159.800287634,325855.410705841,93421.9717845459,326703.945617096,134787.060223739,135277.643533358,324146.970121402,227512.642962756,187672.285188341,179323.038537734,209647.644747983,206128.498986786,256694.714637588,182864.178989841,105310.921634505,153028.252873904,84335.0076132127,171510.536259168,175941.003413014,329360.579327357,255925.855954908,324178.958046819,277748.531579301,283022.205871754,325015.263309059,273568.940099263,287934.216751907,237255.690258531,-104156.457093289,-416716.425476371,-36360.8678228262,-139261.36118714,-91619.5354266761,-90265.6380913821,-132304.716820975,-164922.213345046,-211506.076381459,-174705.235350725,-291596.327312615,-109098.209733032,-229087.545455565,-261207.437436466,-144208.822536814,-196224.525320538,-309563.215192878,-252831.018720319,-294847.418470874,-261084.11611048,-333579.347549978,-235578.582665503,-384606.475159323,-337751.257445982,-375031.587625647,-135742.557087088,-55459.0263322156,-211678.239182962,-354215.573318753,-666488.513741036,-339581.856551648,-138252.863466538,-226650.300414649,-91732.9911177632,-177479.79728553,-221357.636436056,-64377.5089318067,-30093.7548495621,9509.57320549415,-11555.9534977603,-451737.809359347,-334930.567569063,1271.66895293857,-3178.92896594391,-99227.5833382857,-58805.9787488753,-112480.253999013,-7805.02823169319,7423.80487388297,58243.0584759919,-47442.3178201435,-76972.1202479294,-98890.1271144214,-116019.544220357,-168824.017158062,-185045.235457632,91505.7228870536,32918.4740373818,103920.199204074,-158440.662216795,-225306.150029963,-22569.770657335,-67993.9978783342,-58610.8340266643,-154580.157034219,5388.297306172,-218269.212623728,-314672.367295739,-263229.991337873,-281537.079395674,-285119.663401109,-398105.756223035,-284939.217065737,-345042.292363573,-268467.098427258,-420901.26750438,-342092.49214929,-394018.106401241,-497878.460578484,-443044.431653904,-666458.614322565,-477231.32191193,-446549.634454656,-404574.041617721,60823.8505045403,65975.5134983528,115414.238977342,48131.1043809571,126446.167587974,-17068.7335927087,208357.50134085,118902.350394094,219503.320737071,180432.677632674,168931.133539889,234850.075174046,146436.805948158,206953.111378661,271253.765691713,267887.169529565,328057.188865141,289651.574742612,268681.498279989,-235305.323521331,-291227.89438065,-458638.937818719,-123702.716185738,-41044.8498567535,-374906.965950827,-447037.861147611,-493765.447380201,-411633.074915497,-666409.613239259,-533542.827175923,-344943.008459853,-564561.298125853,-78853.584834008,-130970.631162518,-58908.5620190876,55188.0553176498,16657.6538675397,21857.9860558614,-340267.45380685,-388353.711864559,-327162.03252894,-484141.975637921,-365280.353055238,-440263.655196353,-491946.086034845,-433700.110696605,-500698.941094385,-367824.302975265,-416674.193111186,-270943.506948053,-318431.672072215,-323619.51520121,-104363.001495903,-135708.57129309,-291646.35774705,-229574.721744076,-186937.483817424,-180478.756538624,-229076.415032077,-248298.804372407,-318677.642955032,-451776.875875411,-666439.647456647,-192320.622437929,-216801.2149074,-204372.481648029,-176957.125271237,-223498.79603803,-224628.310038418,-560067.998644087,-510322.740115579,-541653.488974331,-578318.529966764,-491929.332470756,322905.415333728,281626.043478752,237979.572186085,-402425.850092967,-479140.835863232,-510781.337938997,-596689.885933688,-456781.075742477,-545508.806046083,-436620.544930553,-220799.776349766,-33331.3965403563,331913.767019211,-475236.728707451,-522973.352951454,-457998.089802649,-513078.993912657,-666536.94924346,-595852.177747082,-452499.055920726,-386797.020832681,-474331.017054836,-541629.710877906,-417719.699917296,-526605.73945019,-375886.579329652,-353570.749964845,-303097.863115331,-370997.584440751,-590798.725455699,-479165.296538817,-448101.461355685,-510602.034450988,-564040.727293543,-604173.678524874,-666533.292862197,-616361.342981886,-354200.346268711,-266980.11866263,-265346.152022786,-304075.729154949,-568184.513623056,-666440.147545491,-627240.784136153,-336026.622923389,-623798.458966181,-560324.977719471,-609558.819628074,-666462.351947328,-666488.261914819,-616172.38207627,-569571.646576868,-604854.546744476,-522963.26057389,-547573.739953045,-622150.889327866,-666345.492737682,-666593.589032831,-600544.065220305,-597545.325593521,-622858.380636986,-623162.462459257,-573324.669142061,-622488.368000064,-549284.835073918,-527452.724589473,-542672.343431077,-666489.738489722,-618169.471546729,-613303.888005339,-567479.048994612,-4679.30106115745,-472874.340966457,-453952.764479622,-266068.293134794,-131283.251726122,-150426.198330568,-666470.019367226,-625784.713610878,-615935.209193823,-594209.756759806,-604167.025846964,-666554.380821561,190190.181105402,269697.608867436,271458.198803531,232438.587680561,269434.40741887,327803.780954067],"Archive803_field26":[94182.0603767666,94184.8337475107,94186.5622680988,94188.4860234287,94290.36959683,94166.5915102197,94189.5078968096,94166.4230658016,94176.0216068984,94183.5701629841,94224.1074095907,94226.9631830337,94190.2550775167,94187.5835990154,94186.4735164771,94262.2122749831,94186.5210772142,94185.2554424387,94178.6904945323,94267.7231730514,94466.1863038944,94301.3990514377,94247.5211886719,94286.212156577,94186.3610047487,94185.9085482217,94275.0699171176,94185.3102475611,94186.1198698243,94186.6263760375,94186.1977250537,94188.4781367285,94179.6782804539,94359.3849354132,94317.019665646,94187.5831569795,94186.4491398885,94190.7927339106,94186.9027818513,94187.7877367754,94186.0689035813,94188.7490553007,94442.052435574,94189.0727909558,94195.1151750651,94191.9982623436,94188.4787779859,94188.160189909,94187.8236710421,94188.4471054733,94186.5642365008,94186.8021213833,94414.2093101008,94189.762795191,94187.243521045,94185.4761687265,94357.4253211506,94318.5941325614,94332.716741505,94190.2511162762,94189.6052688246,94189.5220682834,94189.5549972922,94190.0427188479,94189.3615071972,94187.3463185677,94187.1237423433,94186.6954487005,94188.0488639598,94193.2320947743,94190.5684423223,94189.5273179441,94189.9871178445,94190.776045254,94190.0748350995,94189.7570921778,94189.5335409914,94189.785504023,94191.1455212974,94192.5704914026,94191.8416614262,94167.1319750682,94185.7404093652,94188.2273264542,94185.8249532458,94187.3256758662,94189.6525107953,94189.6743130859,94189.7345502152,94189.0419779654,94188.7577276482,94189.3160146643,94189.6995217561,94177.5121830489,94177.4467374262,94238.764663273,94283.3392720248,94316.6174652948,94275.2985119532,94291.9989052919,94275.3023601215,94244.0505981421,94282.2428070544,94174.7066722194,94327.7601038666,94168.3060350248,94242.1680674421,94289.6507992226,94262.9390414089,94235.5521900583,94245.1409729578,94231.8442808562,94251.0442103657,94227.1059223032,94253.1939151133,94222.195437876,94227.6894054421,94228.5305034776,94315.3308803783,94252.118569259,94255.0330998167,94176.1593997291,94178.5998051157,94237.24480712,94301.2901545429,94266.361632467,94358.056864674,94288.8562825228,94271.161528576,94393.5632702892,94383.0686586918,94362.7853872814,94570.1518551097,94219.8898817206,94235.1209275288,94295.4439341201,94351.6789216897,94320.2016880722,94304.7851305427,94316.6845951364,94370.7673212177,94350.4498201041,94336.1431993695,94331.4126776852,94319.2979541373,94338.0569731072,94335.2833050235,94294.0509034299,94279.631839071,94193.7055212179,94298.7953540634,94198.0487150812,94293.885454525,94267.4748755093,94271.9468116309,94244.9198090463,94268.7067736404,94278.8166562921,94262.2177905984,94271.2302102088,94247.0590833253,94258.150062051,94252.6255017686,94251.9183569329,94234.1215182264,94247.9082721725,94241.6167604039,94253.6782172732,94232.1909855116,94240.062818042,94235.0119243715,94225.0105182687,94229.9733366632,94178.9423857027,94225.2422733466,94228.8541768269,94231.0442874627,94183.3433087983,94174.9461283655,94183.1313084233,94271.8091791033,94183.5913028393,94265.3105486689,94183.4820439699,94185.5160064849,94184.9878338929,94184.9609938727,94184.7160251361,94185.9511543231,94180.4102475117,94184.1196721462,94184.5474505705,94184.8910064667,94186.8532464797,94186.2341031977,94185.467633759,94265.0662552927,94248.2691944278,94224.0326076138,94268.3133336116,94130.7140631722,94236.4082460517,94226.727402617,94222.3398576498,94228.4595930642,94176.9426318399,94217.8285663175,94236.7704466002,94220.6647518995,94247.0345618846,94271.1647731871,94196.7372316483,94358.3102901793,94317.884154839,94311.5335153051,94239.8988081515,94232.4773534322,94243.5038125667,94224.4959922456,94238.6088530545,94227.1446765791,94220.6356185513,94229.4253041515,94224.7877210527,94230.7545966981,94178.1872389675,94244.0066820718,94237.8375006114,94230.98158603,94201.718780872,94250.0515707393,94178.2004391294,94236.7819309734,94237.2479927881,94234.4632751592,94174.472179123,94235.9706892315,94245.9562093598,94222.8753286669,94178.0010906373,94249.1941786698,94251.382751155,94239.5355872477,94273.2915148163,94256.8216954491,94261.2356025961,94213.5445152184,94216.7523349977,94178.648826768,94216.4663922957,94213.0503828621,94189.205470507,94189.0647916775,94189.3620064569,94224.2639030898,94178.8183951239,94212.1343314814,94216.1119359121,94217.8604764262,94213.0913867527,94217.4598479141,94264.1989421177,94371.3639426108,94185.1200444509,94220.4023385333,94212.4452992174,94217.6443380105,94215.8285574505,94180.2692987212,94212.8336083659,94210.9274231545,94222.0247322842,94213.2868673151,94179.7702338007,94215.8489431857,94208.0446920865,94220.5407202234,94219.7206952969,94220.4403242408,94226.9591460249,94208.1550478227,94180.0258833145,94210.223008766,94208.6521113268,94209.0759770311,94180.2781594004,94180.525988365,94207.1185427279,94178.155523867,94219.9951743187,94227.8555249137,94227.4714532524,94211.8517753436,94178.5042127604,94205.986080743,94217.9790446345,94209.3855448324,94219.2581501963,94215.9772030998,94178.5041476959,94178.6336324799,94219.4478327396,94221.9426411452,94218.3808396437,94222.6574670717,94223.088033715,94218.83638249,94175.9606034804,94180.2858020072,94220.402190004,94221.3590503339,94216.8551622593,94213.6244503471,94216.7659588973,94222.1622531916,94222.285757749,94222.1973686441,94219.8020934043,94178.5734992231,94216.3038269468,94218.3802861822,94221.8752674841,94625.7892981585,94227.2609808001,94228.5603127118,94239.2770764325,94289.1397304241,94292.5713560706,94179.4606853575,94212.8610608951,94213.0105719901,94210.1820092646,94181.5847107812,94181.5811115507,94186.3017283639,94186.5838369057,94186.5021611461,94186.4410688357,94186.7834853621,94186.6223750515,94185.4457063921,94185.1233895708,94187.2688239736,94184.4832651866,94171.8554096668,94187.7526396387,94190.4002246072,94188.0154024403,94186.1479803543,94185.6611892945,94180.21982872,94179.8456191324,94190.4972644618,94188.6631679093,94186.0498124252,94225.0427003986,94187.3081439001,94186.6981514023,94187.507503819,94187.4393684509,94183.8094947076,94260.8943439604,94213.8240841279,94255.6809963592,94186.8906551275,94186.1772391547,94248.6241879635,94185.3582117223,94186.9067485131,94187.2608928565,94186.4217829116,94187.6792371049,94182.4183927805,94175.3822824761,94276.975518199,94188.8911021286,94187.8523538418,94192.3439782798,94187.9305399855,94189.5217594592,94189.010179888,94189.8491638333,94369.7543745559,94190.2414134649,94196.8457409737,94192.5136015983,94189.8201878877,94189.2905221803,94188.9724499031,94189.630281784,94187.4235290016,94187.6467478262,94342.7090354739,94190.7368648798,94188.2831865727,94188.7598534001,94307.3329639232,94288.4156367051,94290.5318396031,94191.3092501226,94190.6857585325,94190.4727328113,94190.8637047061,94190.9353701668,94190.3399758971,94188.4802820059,94188.0950696678,94188.269404616,94188.3731089496,94193.7096382379,94191.4093686284,94190.1308604133,94190.7478069529,94191.4220632472,94190.8994499262,94190.6499256294,94189.8760870955,94190.3543489811,94191.6024984022,94192.8883826,94192.1532281461,94174.2372285696,94185.7612209271,94188.4526002342,94186.0240749002,94187.5499114238,94190.4069068066,94190.500446633,94190.4294069469,94189.4956887364,94189.131497753,94189.796221482,94190.1453400592,94186.0208321841,94186.0945575341,94226.7471965793,94174.0054621946,94169.5351910647,94187.9198357856,94173.7506232085,94174.6532267498,94177.9384450817,94173.0928570484,94186.5122160248,94173.826869141,94187.4123501028,94178.2525611352,94173.1167411672,94175.6316573564,94178.8263330194,94177.809311664,94179.2761578541,94177.0249379928,94179.9827256952,94176.8397412677,94180.4584575457,94179.7955935222,94179.712223232,94168.0816163823,94245.5564450277,94176.6429728414,94186.304855338,94185.8874481788,94178.6105210372,94174.9829447003,94175.107890862,94167.9273186717,94172.6665774468,94174.770687305,94155.1299031055,94264.3957175946,94302.992090218,94373.7192383483,94180.7314554429,94178.905154402,94251.2667924678,94248.0801356856,94158.3584352815,94252.1357631352,94184.4803873152,94313.3923226658,94272.6878298229,94296.8015538325,94198.3395936548,94220.6409022888,94167.4011526539,94180.3493199684,94170.9791996013,94173.2642528599,94194.1133751525,94264.5354183697,94198.2514839179,94173.1780258771,94174.9674053018,94229.5411309898,94179.864171026,94165.4501122468,94175.4910020369,94227.9278020247,94174.8970338393,94177.4715688401,94176.0067017099,94176.6967173829,94176.7974569583,94178.9703560123,94177.2894427124,94178.0731396026,94176.7557734458,94179.1914059574,94178.2536680051,94178.8384146704,94180.106197357,94179.4744510413,94185.8403277549,94180.0993477128,94179.6154890747,94179.3401971617,94185.4695138885,94178.9272420182,94183.4721689206,94243.3289547139,94182.6714114696,94193.8352828887,94184.0764572394,94184.9817893178,94185.0707026803,94184.7618163371,94184.5702834665,94186.0427607396,94182.1054394444,94184.4421659279,94184.8833644798,94185.1369082591,94187.0823909682,94186.4176811738,94185.6387498521,94175.56833355,94177.2872919342,94180.2275282177,94176.2045500221,94189.1103330982,94178.7253457784,94179.8530030969,94180.4471380898,94179.6544524642,94186.0457007026,94180.9511508214,94178.6903283508,94180.5636352866,94192.8553522319,94173.948833301,94191.0687349476,94289.5727989491,94256.0083364632,94204.9206598706,94178.2729438015,94179.1893093682,94177.8429299369,94180.1427603573,94178.4469861872,94179.8261900973,94180.6628085774,94179.5295916629,94180.1021567476,94179.3981106624,94186.0029295279,94177.7853938574,94178.5567169121,94179.3976515662,94183.7831775412,94177.4479696469,94186.1290895059,94178.7621800332,94178.9203212011,94179.3914434136,94186.6165020506,94178.8192473556,94177.5590240122,94180.3465528317,94185.9411312743,94177.1524352999,94176.821348524,94178.6182082308,94173.5366721981,94176.5149739289,94175.6619097118,94181.4836587119,94181.1388755608,94185.910246351,94181.0882643592,94181.579170467,94190.2185362206,94190.1433538939,94190.4085709542,94180.2967663465,94185.942924153,94181.7919808162,94181.4192388957,94181.0800010354,94181.5471268137,94181.0328920313,94175.4578879558,94266.5410100773,94185.3634146619,94180.6597524616,94181.66211725,94181.00078748,94181.244459214,94185.6460997548,94181.6417965852,94181.8327912019,94180.4959546768,94181.5542530372,94185.8160774375,94181.2438202788,94182.1992789934,94180.7630298931,94180.7736219089,94180.7034011911,94179.8592443703,94182.1272256427,94185.8194666106,94182.0451190389,94182.2085261583,94182.11195127,94185.6678223626,94185.6185963471,94182.5770848456,94186.0215222568,94180.9220806095,94179.7619595362,94179.8699190631,94181.6804486055,94185.874016678,94182.849450462,94181.2136268685,94182.5237497773,94180.7557736879,94181.3380635551,94185.8355967786,94185.8361407469,94181.4112460063,94180.4173934725,94181.3257336828,94180.3715687098,94180.2993162797,94181.7775114691,94186.1402143359,94185.844676343,94180.7457995909,94180.6028829611,94181.9337012926,94182.0849206457,94181.048816213,94181.22561733,94180.3989873997,94180.431069528,94180.6997829597,94185.8672001187,94181.5598606797,94181.6665336544,94180.4324655491,94152.0951887881,94179.8185449403,94179.6525175989,94178.447720909,94174.6914336523,94173.938130772,94185.7478844083,94182.360251541,94181.912190978,94182.025338528,94185.5015027292,94185.5128860403,94186.867637327,94187.3149422492,94187.1686641884,94187.0702770028,94187.6419241509,94187.3689837588,94184.9999999999,94184.4061832428,94187.1625594017,94184.9999999999,94184.9999999999,94184.9999999999,94190.2638239935,94184.9999999999,94184.9999999999,94185.5668550496,94184.9999999999,94184.9999999999,94189.7730539101,94188.5911476908,94185.7463850984,94184.9999999999,94187.1689570912,94186.4518053806,94184.9999999999,94184.9999999999,94184.9999999999,94159.6542870303,94161.0130231793,94155.5407174093,94186.7894851348,94186.1834918814,94175.2895338274,94185.6398300318,94186.7363849332,94186.7695306281,94186.3195602608,94186.4179899598,94185.0982713598,94184.9999999999,94174.9046652492,94188.8836706153,94187.7980979759,94191.6855388797,94187.8093690954,94189.7753941205,94190.7153358305,94189.7882079034,94171.4408521439,94190.1860173483,94193.7207701832,94192.8375475646,94189.8114842889,94189.2324921464,94188.9166720868,94189.5844962318,94187.1984197642,94187.5405283866,94171.0528259892,94190.8186131374,94188.1975782027,94193.2626863064,94174.0169602419,94184.9999999999,94176.2099766063,94191.282256255,94190.6605365278,94190.4021031285,94190.704241548,94191.1807325685,94190.6954109016,94188.4125278066,94188.002657305,94189.8266375209,94187.6667105878,94193.0220010812,94191.6205789014,94189.7187872322,94190.571079531,94191.0941640549,94190.9144204925,94190.6365915913,94189.1049752215,94189.8989768978,94190.8955954138,94191.525813607,94190.9907782461,94187.0096563803,94185.051599272,94187.6960688317,94185.1986702627,94186.76834601,94190.1591946777,94190.335281686,94190.1288925301,94188.9137086949,94188.4583517878,94189.2373080208,94189.5149023924,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94174.7583547775,94184.9999999999,94184.9999999999,94184.9999999999,94166.7090567226,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94182.4876669582,94182.9542102556,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94194.205760741,94177.8851246852,94195.9482117,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94167.4410910149,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94187.3872003706,94184.9890211553,94183.8941087207,94165.7900766581,94181.2155643031,94184.9999999999,94183.8147281948,94181.4880858407,94184.0445919181,94183.5950613584,94182.8444898532,94185.1490147568,94183.7267066872,94183.697368691,94184.2303269209,94184.348264905,94186.2921117651,94185.5847611794,94184.770963683,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94120.3651875508,94142.0525461436,94143.0126880663,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94190.1351837459,94190.081984301,94190.3562204536,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.5820395647,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94186.7721266449,94187.2057913697,94187.0636871718,94186.9674776529,94187.5299461641,94187.2614316315],"Archive803_field27":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive804.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive804.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive804.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive804_field1":[0,41.7884427749966,40.8311080431491,0,54.2674067183919,0,46.735848246402,0,0,44.9222869796946,47.4764197736745,47.4764197736745,49.9511022852645,43.9788469869946,34.2913258573465,38.992868798176,41.2058555404333,39.3779364523945,0,33.4808061037389,33.4808061037389,36.6388667987576,24.9887350633327,33.355456158967,39.6700660411776,38.0244501204458,41.8230371449992,36.9769868671647,40.286550323471,42.3879967085613,37.8652546672752,41.7555218114969,43.9516357406342,46.7369203323705,47.8756742474683,44.7709118126708,44.2345792969429,47.5887869993102,42.9588303338273,45.9027936761425,46.8280447277616,45.925710718332,50.4827794052816,46.4748380571242,48.5323617699716,49.3796017918518,45.913559498625,45.047744731928,44.5857174687779,45.5962436264874,42.0173017811277,41.8290660704203,52.2788545415861,47.8353185761819,43.3384431711912,50.5530830310018,51.3789537558453,54.2520592606538,50.1111309343403,47.9390424750947,47.250567537469,46.9578535955132,46.9528681214604,48.8555937539153,48.4223426829602,43.8672263245082,42.8578667816514,49.3670305516016,44.5168886157216,47.5625014516091,48.210103882905,46.1651083547907,47.0690115205549,47.1226180740927,47.66279063472,47.4130318166803,45.3133754147896,46.2206486775966,46.4122802368112,45.6623674410789,45.8289197428103,36.4167597219272,43.3402486791237,44.5720554905865,42.6347741491278,43.9207878009274,46.6290567775072,46.8508925348602,46.5706699894886,45.4483895473473,45.0555721663155,45.6767306440052,45.7389445445474,0,0,43.2329282268032,42.0660257841954,44.3877652648429,40.6730649709586,37.7822708478355,33.2655519202508,39.2008642629111,48.3107890680038,0,48.1291418005689,0,34.1379640572706,45.7425449856847,43.6424758541445,43.4805951232659,42.441716402039,38.8263583364071,47.8208217427912,33.2864890775734,45.456027888844,39.781587375374,40.6340992174641,44.4710021737642,52.7337600183992,50.1298458029654,34.8949013607389,0,0,48.6250226637338,50.6674818901993,51.4841585425575,51.7281332966576,51.878469856716,53.7197722102409,53.7021291727562,52.2675390174243,49.8238482772844,53.3902240048299,43.001526719235,46.0501146977381,45.920761057062,52.1124773879449,52.6741744028453,53.6831545833058,54.1389899263823,51.6008225772811,51.3028510499154,48.9991157421341,52.6066677960466,49.9297190050932,54.2084425729452,53.7120291901688,53.6228551873125,53.3937797514643,48.7714549673713,47.4883684731417,47.210203266272,54.0164875014431,54.1298102067732,49.4711181003125,44.3855842439204,47.5077470028293,47.0328196666063,44.4442933413291,54.2341015624038,54.1080757480006,54.0801920714208,52.8978640705154,54.2350194918028,54.0828170712239,52.6001514373319,54.2482047053563,53.7269075760083,53.7798573082356,53.5119668913827,54.2391827526677,54.2637336150574,54.2577032475184,0,53.0721327722542,53.8504715874222,52.604559637975,44.8056479432541,39.8190048717555,43.7893685508923,42.3597113215336,41.6301354886277,40.2290760004475,40.8070499980114,39.2002330486001,41.7973981390458,42.094973486599,40.7872976618908,42.8590241027888,39.2458103557841,41.0563401538661,41.5608629141057,41.8009873112887,43.5187431759552,43.0041474915839,42.3116786695488,52.8339292643514,50.7582241844564,50.6603505156829,37.1043304638068,0,51.9963322185301,52.1778111132486,51.8310833612596,51.0850891767272,0,48.5918311609513,51.5909179925519,53.24041085755,40.2128310589034,43.1666801164894,34.2369828112768,36.2806381861762,37.3653033649964,29.9666962385789,50.7822250895522,49.7438399551643,52.3898043756499,50.9006107859176,53.4599569770417,49.7653578434131,47.0214556667891,51.9951475133796,53.315347245652,49.3065178782439,0,49.0116483541029,49.8902114624765,45.6518789220161,0,32.0026464186584,0,34.6807911427745,31.9928604999437,37.1851331463223,0,42.1064851246405,53.4911432878241,45.8945101153563,0,43.9620984981134,47.4383433429751,40.6022210894402,50.9368778579862,49.9768243380842,52.219839700988,41.3061960246886,43.5440110786593,0,46.8872140468208,36.9782454611807,46.4964046686314,46.3857233771469,46.8243788687404,33.9847472693569,0,32.0247424927944,34.200959153536,33.1093352042664,35.9885893443967,37.9964285608801,49.4187914319355,54.1396606878016,42.0160226358874,48.0591045879619,41.9135225802293,43.9549202047779,45.6644660115279,0,44.7942004106539,36.2523081800108,43.4930365666053,40.2881296221272,0,39.9943865260229,35.887257982329,34.0922239394166,39.3689279555558,34.8000370133512,46.4573054125345,39.3165026417502,0,31.4088836298925,31.3133312436396,32.2215124562986,0,0,32.3804938211087,0,31.5546825114973,38.1534203174219,41.4243267963617,42.3321121767392,0,36.698326082211,31.6319436546407,42.0636071437163,51.2901411416289,52.3040955456137,0,0,53.5574563024295,54.2079188968383,49.0676790297515,53.9090013258077,54.0714586548644,54.1806097943069,0,0,54.2073891171164,53.2221521608842,50.8460064925952,46.940934894226,47.2650166323038,53.8527442503543,53.3657721389369,52.0802559134274,49.6689587265445,0,49.0676790297514,51.5729053749134,51.2678578980777,32.0461331963813,54.050491459823,53.1499254507177,45.7522135683521,49.5826872518604,52.4387526687352,0,45.6732414945,41.9393102234513,38.5141021876256,0,0,39.7988126761034,40.9848087008767,40.5522790667141,40.2872067041266,41.8815717210899,41.109937019584],"Archive804_field2":[0,3.09544020555531,3.02452652171474,0,4.01980790506611,0,3.46191468491867,0,0,3.3275768133107,3.51677183508695,3.51677183508693,3.70008165076033,3.257692369407,2.54009821165529,2.88836065171678,3.05228559558765,2.91688418165885,0,2.48005971138807,2.48005971138806,2.7139901332413,1.85101741209872,2.47077453029385,2.9385234104576,2.81662593484784,3.09800275148141,2.73903606423442,2.9841889128497,3.13985160804157,2.80483367905742,3.09300161566643,3.25567672152845,3.46199409869414,3.5463462405532,3.31636383797561,3.27663550347724,3.52509533328223,3.1821355802835,3.40020693897351,3.46874405390826,3.40190449765422,3.73946514113195,3.44258059682401,3.59498976073863,3.6577482808779,3.40100440730555,3.33686998014281,3.30264573842798,3.37749952788795,3.11239272452798,3.09844933854965,3.87250774382119,3.54335693156903,3.21025504971786,3.74467281711124,3.80584842635891,4.01867105634472,3.71193562476594,3.55104018334034,3.50004203981252,3.47835952559357,3.47799023121928,3.61893287066039,3.58684019873779,3.24942417218578,3.17465679864084,3.65681707789641,3.29754730486827,3.52314825567475,3.57111880614111,3.41963765591042,3.48659344596703,3.49056430178464,3.53057708405333,3.51207643086521,3.35654632702146,3.42375175389604,3.43794668420824,3.38239758822808,3.39473479576373,2.6975377571798,3.21038879104621,3.30163374004345,3.15813141845392,3.25339168895759,3.45400420574127,3.47043648406371,3.44967925848064,3.36654737387758,3.33744979009745,3.38346152918557,3.38806996626277,0,0,3.20243912791131,3.11600190994038,3.28798261221059,3.01281962747839,2.79868672946928,2.46411495705563,2.90376772317861,3.57857696800026,0,3.56512161485698,0,2.52873807831635,3.3883366656063,3.23277598919589,3.22078482394568,3.14383084459553,2.8760265434376,3.54228309205855,2.46566585759804,3.36711317695132,2.94678425002768,3.00993327536771,3.29414830916777,3.90620444580736,3.71332191133076,2.58480750820289,0,0,3.60185353064692,3.75314680668144,3.81364137352279,3.83171357753014,3.84284961901611,3.97924238594368,3.97793549427831,3.87166955684621,3.69065542794697,3.95483140776515,3.1852982754989,3.41111960723983,3.40153785607867,3.86018351021813,3.90179069650701,3.97652996913369,4.01029555010238,3.82228315387267,3.80021118888261,3.62956412904698,3.89679020711453,3.69849770408098,4.01544019058868,3.97866882890133,3.97206334720827,3.95509479640476,3.61270036795343,3.51765692393646,3.49705209379794,4.00122129640318,4.00961557087218,3.66452726668993,3.2878210551052,3.51909237057993,3.48391256789674,3.29216987713549,4.0173408564743,4.00800561096292,4.00594015343864,3.91836030151961,4.01740885124473,4.00613459786845,3.89630751387644,4.01838553373008,3.97977093155614,3.98369313394351,3.96384939936168,4.01771724093837,4.0195358233376,4.01908912944583,0,3.93126909424094,3.98892382129047,3.89663404725739,3.3189368846855,2.94955591642634,3.24365692969574,3.13775639418768,3.08371373989836,2.97993155558869,3.02274444429715,2.90372096656297,3.09610356585525,3.11814618419253,3.02128130828821,3.17474252613251,2.90709706339142,3.04121038176787,3.07858243808191,3.09636943046584,3.22361060562632,3.185492406784,3.13419841996658,3.91362438995198,3.75986845810789,3.75261855671728,2.74846892324495,0,3.85158016433555,3.86502304542588,3.83933950824143,3.78408067975758,0,3.59939490081122,3.82154948092977,3.94373413759628,2.97872822658544,3.19753186048072,2.53607280083532,2.6874546804575,2.76780024925899,2.21975527693178,3.76164630292976,3.68472888556774,3.88072625004815,3.77041561377165,3.95999681311425,3.68632280321576,3.48307079013255,3.85149240839848,3.94928498115943,3.6523346576477,0,3.63049247067428,3.69557121944276,3.3816206608901,0,2.37056640138209,0,2.56894749205739,2.36984151851434,2.75445430713501,0,3.11899889812153,3.96230691020914,3.39959334187825,0,3.25645174060095,3.51395135873891,3.00757193255112,3.77310206355452,3.70198698800625,3.86813627414725,3.05971822405105,3.22548230212296,0,3.47312696643119,2.73912929342079,3.44417812360233,3.43597950941828,3.46847250879558,2.51738868661905,0,2.37220314761437,2.53340438174337,2.45254334846415,2.66582143291827,2.8145502637688,3.66065121718043,4.01034523613349,3.11229797302871,3.55993367318234,3.10470537631332,3.25592001516872,3.382553037891,0,3.31808891930766,2.68535616148228,3.22170641234117,2.98430589793542,0,2.9625471500758,2.65831540609841,2.52534992143828,2.91621688559672,2.57778051950742,3.44128188240998,2.91233352901851,0,2.32658397258462,2.31950601804735,2.38677870046656,0,0,2.39855509785989,0,2.33738388974051,2.82617928277197,3.06846865158236,3.13571201309193,0,2.71839452460817,2.34310693738079,3.11582275138639,3.79926971419472,3.87437744782325,0,0,3.96721898536509,4.01540139976574,3.63464289109272,3.99325935746727,4.00529323369362,4.01337850328196,0,0,4.01536215682331,3.94238164154711,3.76637085130338,3.47710628846128,3.50111234313355,3.98909216669294,3.9530201584398,3.85779673432785,3.67918212789212,0,3.63464289109269,3.82021521295654,3.79761910356135,2.37378764417641,4.00374010813508,3.93703151486787,3.38905285691509,3.67279164828596,3.88435204953596,0,3.38320307366671,3.10661557210753,2.85289645834268,0,0,2.94806019822988,3.03591175562049,3.0038725234603,2.984237533639,3.10233864600665,3.04518051996918],"Archive804_field3":[0,0,0,0,54.4160848236346,0,0,0,0,0,47.6064924003671,47.6064924003671,0,0,0,39.0996987759005,0,0,0,33.5725345115351,33.5725345115351,36.442226779587,0,32.0581129794143,0,0,42.6879118804154,0,0,0,0,0,0,46.8649669293998,49.7225123059158,0,0,0,0,0,0,0,52.8239138462121,0,0,0,0,0,0,0,0,0,54.207919256847,0,0,0,54.4160089138916,54.4006953179884,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43.3513748274711,42.1812753858788,44.5093758085304,40.7844982344952,37.8857841126313,33.3566905894527,39.3082640922918,48.4431476422524,0,48.2610027101384,0,34.2314929011901,45.8678672615905,43.7620445052091,43.5997202646478,42.5579952950152,38.9327321202307,47.9518379382907,33.3776851089577,45.5805651849312,39.8905782299621,40.7454257253116,44.5928407642049,52.8782363439871,50.2671881036353,34.990504009376,0,0,48.7582421535566,50.806297169211,51.6252112960425,51.8698544753791,52.0206029171959,53.8669499441565,53.8492585694922,52.4107380228078,51.5956924097079,53.5364988652579,43.1193393419818,46.1762796319683,47.2559303476663,54.106316137746,52.8184874798655,53.8302319947678,54.2873162041383,51.7421949588575,53.1949275180561,51.9503434750069,52.7507959231126,50.0665130121388,54.3569591322812,53.859185710291,53.7697673946403,53.5400643536822,0,49.1597278043632,0,54.1644781554881,54.2781113345654,49.6066556641685,44.507188812197,47.6379054577078,47.1616769482623,45.3598933451857,54.3826884204728,54.2563173292187,54.2283572588613,53.0427899970886,54.3836088647516,54.2309894504582,52.7442617113268,54.3968302022455,53.8741048589078,53.9271996591666,53.6585752945907,54.3877835318321,54.4124016569845,54.4063547678596,0,53.2175361482201,53.9980074024942,52.7486819892547,0,0,0,42.9404391047296,0,40.3392928535662,0,0,0,0,0,0,0,0,0,0,0,0,0,52.9786800267439,50.8972880729593,50.7991462566456,37.2059863542068,0,52.1387881901954,52.3207642882968,51.9730865954811,51.225048587435,0,48.7249597149796,51.7322632382289,53.38627527023,40.3230034052495,43.2849452151451,34.3307829399622,33.1663580201046,36.8035726132831,0,50.9213547340828,49.8801247035844,52.5333383552452,51.0400647754295,53.6064228870667,49.9017015450622,47.1502818141407,52.1376002392712,53.4614169638896,49.4416044817423,0,49.1459270943774,50.0268972294764,45.7769527972819,0,32.0903250663036,0,34.7758071869754,32.0805123368024,37.2870104143495,0,42.2218455740397,53.6376946399565,46.0202487348633,0,44.0825428292956,47.568311650484,40.713460259787,51.0764312095257,50.1137474010784,52.3629080230678,41.4193638971024,43.6633099627102,0,47.015672408223,37.07955591257,0,0,0,34.077856340468,0,32.1124816777424,34.2946605870837,33.2000458816636,36.0871884040836,38.1005285602358,49.5541856347876,54.2879888032636,0,48.1907736143976,42.0283543641325,44.0753448693662,45.7895743720351,0,44.9169244773755,36.3516297584096,43.6121957941972,40.3985082662933,0,40.1039603930752,35.9855794213257,34.1856274677098,39.4767882342723,34.8953797591796,46.5845859398547,39.4242192892008,0,31.4949355271227,31.3991213530196,32.3097907380473,0,0,32.4692076690566,0,31.6411338584668,38.2579504319851,41.5378183153318,42.4480907836039,0,36.798869629755,31.7186066763716,42.178850118975,51.4306623395947,52.4473947060566,0,0,53.7041893343945,54.3564340214426,49.2021112790141,54.0566974966279,54.2195999150914,54.329050099312,0,0,54.3559027902667,53.3679665496439,50.9853108810232,47.0695404363078,47.3945100712223,54.0002862919119,53.511980007826,52.2229418134547,49.8050383205292,0,49.202111279014,51.7142012708606,51.4083180459469,32.1339309861065,54.1985752755724,53.2955419577089,45.8775623335751,49.7185304851976,52.5824207534944,0,45.7983738974714,42.0542126585643,38.619620473548,0,0,0,0,0,0,0,0],"Archive804_field4":[4497885,4497885,4497885,4497885,8995770,4497885,8995770,4497885,8995770,7871298.75,7871298.75,7871298.75,8995770,7871298.75,4497885,6465709.6875,6465709.6875,6465709.6875,4497885,5552076.796875,5552076.796875,6026463.10546875,4497885,5301706.24511719,4497885,5552076.796875,7058692.57324219,5813398.00994873,6424362.76116103,7238783.671875,4497885,7069949.09699671,7552860.57983978,7748809.40440409,8220793.41669313,8109463.98521509,7834189.59295337,8656992.48588036,7392944.87533169,8333523.7408863,8347757.88451305,8714652.1875,8732919.59689139,8755173.78361078,8617597.6258377,8891197.79149865,8498981.6162286,8363254.921875,8134846.69921875,8519780.08330749,7042679.58860458,6465709.6875,8961406.55860475,8978688.53810902,7535813.31642531,8966886.83493223,8995757.46915095,8993229.565522,8872168.80252451,8871415.49110469,8891962.18710428,8987217.36775315,8705690.15528142,8973590.30799432,8978994.97080258,7791062.92193595,7238783.671875,8951743.86360458,7871298.75,8665314.32274517,8872407.93292389,8714652.1875,8911107.61924746,8776742.43805529,8926585.64896621,8991735.21082796,8151067.46119872,8654342.92828399,8499540.59348858,8009718.03631726,8194441.4619544,4497885,7284443.99861907,7803966.7893475,6465709.6875,7521498.51938046,8925490.546875,8975415.51505327,8854438.89242292,8363254.921875,8134846.69921875,8449406.09339957,8399530.97521212,4497885,4497885,7168320.92286435,6974974.47743194,7359653.19704895,6744153.09401383,6265072.35569413,5516393.47689994,6500180.29954669,8009493.28588366,4497885,7979408.3127146,4497885,5661013.85822132,7584091.63104652,7236176.1268072,7209355.41952925,7037225.03879418,6438114.00515706,7928342.360184,5519864.30472687,7536627.89339564,6596420.08478296,6737695.96794518,7373443.20780777,8741888.36433575,8310744.97963721,5786487.58506402,4497885,7871298.75,8061536.51890088,8399772.84236341,8534998.86742833,8575394.3804354,8600285.50837027,8905118.58888261,8902198.00288345,8664701.74501549,8530124.64113434,8850565.08831266,7129980.72286276,7635041.74828717,7813391.84610416,8944633.90073837,8732023.68883659,8899056.98898285,8974513.29352146,8554315.34311493,8794173.81947627,8588684.52639528,8720847.58524146,8277604.60579911,8986009.75841626,8903836.82862062,8889075.11176448,8851153.7175097,8756413.90432745,8127846.6936193,8412934.92117438,8954235.31710937,8972993.77239382,8201659.47870175,7359291.86222649,7876487.57392743,7797822.50504194,7500171.11240129,8990257.0578066,8969396.05648018,8964780.44533589,8769056.2468977,8990409.00126023,8965214.96459595,8719768.76091207,8992591.52791747,8906299.75864804,8915064.89120058,8870718.6560871,8991098.13929634,8995161.99881054,8994163.8040432,7871298.75,8797906.42194242,8926754.08196867,8720498.56643877,7678497.51615296,6431991.97260478,7464615.73862767,7100419.87773734,6713673.18079141,6670577.53055171,4497885,5635891.37364367,6139258.24383318,6643327.35877706,5916385.09316725,6895642.08804367,4497885,5378247.68735993,4497885,5548455.19221379,7238783.671875,6869816.54296875,6283143.23431494,8758471.71523781,8414798.54194536,8398591.97759517,6152708.99308908,4497885,8619799.64967709,8649846.16249492,8592439.79585931,8468921.91860137,8714652.1875,8056039.42222479,8552675.41449997,8825764.36520671,6667885.46600869,7157344.5394451,5677427.93583664,5484927.43829301,6086192.46825551,4497885,8418772.7467779,8246823.07900011,8684944.10017805,8438375.58584846,8862108.85890889,8250386.46248917,7795940.18058919,8619603.50247808,8838169.71007025,8174400.63393667,4497885,8125567.37878474,8271062.20909632,7569072.21833856,4497885,5307031.83371452,4497885,5750996.01794653,5305409.50670216,6166101.61346516,4497885,6981678.51465011,8867271.49189755,7609265.39422204,6465709.6875,7289130.93296382,7864992.01751786,6732413.34130215,8444380.80823543,8285405.15606632,8656804.5398984,6849068.91231869,7219862.33111909,4497885,7773704.3695246,6131810.95814701,8925490.546875,8837641.23046875,8914599.80447121,5635615.38033652,4497885,5310694.95802181,5671456.39710335,5490496.77860428,5967775.34267065,6300566.52401312,8192993.89218697,8974624.32475771,5552076.796875,7967808.41394903,6949704.82514333,7287941.65240088,7571157.35628321,6465709.6875,7426987.26840721,6011487.53220686,7211416.75208677,6680363.70365165,4497885,6631685.22432406,5950979.22054858,5653431.61635042,6528032.81909474,5770762.62071373,7702492.61901913,6519344.61088082,4497885,5208595.72841275,5192754.51686616,5343315.68006016,4497885,5599705.48953532,5369671.59394657,4497885,5232766.98186821,6326585.8427348,6868643.85057301,7019064.17591711,7238783.671875,6085415.08614521,5245575.66149562,6974573.71266665,8502874.24447803,8670754.10011292,8925490.546875,8363254.921875,8878249.00165456,8985923.07486605,8134846.69921875,8936442.78315656,8963334.79190305,8981402.62143199,8714652.1875,8925490.546875,8985835.38098601,8822741.71471257,8429333.98692595,7782602.73091805,7836283.06121511,8927130.28759653,8846517.24564643,8633694.52399208,8234422.62034372,8363254.921875,8134846.69921875,8549693.01316112,8499184.63637252,5314241.14194684,8959864.06028019,8810784.83108073,7585693.28746049,8220135.81491658,8693047.95185494,7238783.671875,7572611.07421875,6953977.83314938,6386363.29966675,4497885,5552076.796875,5552076.796875,5733426.92761492,4497885,5204587.46087332,6638302.31322828,5552076.796875],"Archive804_field5":[499.84886343245,1,1,500.145506590109,999.998937672941,499.96904104946,1,500.036912926343,998.70351164976,1,874.99237862761,875.0008610241,1,1,1,718.777145746998,1,1,499.955686186722,617.220876614986,617.187177972993,713.753627563528,644.873640811935,706.174135408119,1,1,788.127306183431,1,1,1,1,1,1,861.385988517456,889.460025371298,1,1,1,1,1,1,1,935.628257690674,1,1,1,1,1,1,1,1,1,965.992868656349,1,1,1,950.517481507982,999.708478353934,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,500.0474354792,500.042241914649,796.872103317907,775.370725991728,818.13279402319,749.703577178858,696.45217207639,613.22032900887,722.590853345886,890.369590356713,500.047843869854,887.028501132428,500.006873621293,629.34346271125,843.073360557108,804.409206140528,801.428498126418,782.289620495678,715.677743705763,881.347977317643,613.62315249297,837.801553092264,733.287630712251,748.993330826144,819.662722834251,971.775321551258,923.854475978206,643.241243578572,500.004287490159,873.783988740747,896.154305359614,933.7445940327,948.778934300048,953.278908026613,956.046971270009,989.919442075534,989.608266392823,963.186428062411,922.995179607638,983.814039242074,792.604916594374,848.745232389466,854.23991247061,962.378884231597,970.675209011117,989.229517617589,997.641820478213,950.889534658392,947.376454558338,906.980081033805,969.436963728236,920.164945663345,998.913394304813,989.782782973564,988.145186315764,983.915998362217,1,878.341162224013,1,995.382069330928,997.467439450635,911.705527917281,818.073610400254,875.569782996916,866.824159792957,821.978121604862,999.387964263705,997.068115968637,996.558409211017,974.803882764748,999.400848231201,996.601267095489,969.31579013686,999.649252109003,990.052268185619,991.036603542702,986.093938245286,999.476561353949,999.891074512175,999.828779038852,874.01156459824,977.999082017118,992.338349157368,969.391940584807,1,1,1,786.931044370615,1,741.521875578498,1,1,1,1,1,1,1,1,1,1,1,1,1,973.622777371806,935.423637669679,933.611388612561,683.939186428564,499.820652703795,958.209738197337,961.551947571253,955.112228308493,941.427483989081,967.459990671075,895.535395492767,950.741857244538,981.15591483306,741.213254692582,795.627649262656,631.119128349722,689.6139727456,695.162340950375,624.83072730841,935.862585693475,916.75107370958,965.450302984595,938.054513852009,985.142273084521,917.145970309145,866.604975474759,958.186356163374,982.482106578363,908.68448604718,500.059661803619,903.260212013559,919.435325092699,841.397628692347,500.052777073155,589.959666273476,499.976130707687,639.296904183145,589.670836274691,685.447003600393,499.987923453025,776.100680790404,985.716793211307,845.888376737948,718.200279472965,810.276307313203,874.295462366009,748.387961771812,938.700841625321,921.018018068514,962.31294005886,761.404258405188,802.564821732991,500.051561907067,864.279979059037,681.631780917702,1,1,1,626.495031844155,500.052564063459,590.372470141219,630.303762835173,610.392897495119,663.461510504858,700.39087320952,910.767997350011,997.638381855989,1,885.723542908481,772.525506134062,810.149254173274,841.611997961648,717.830143681458,825.496402592884,668.249207620979,801.635031236968,742.605418782459,499.919736422595,737.192793237547,661.509807668357,628.441483933228,725.666555561632,641.496084875773,856.225843840569,724.776843227339,499.952783377676,579.026698145049,577.211831316721,593.991982092843,500.03524330111,621.836231676022,596.75146314971,499.890322938819,581.745269912451,703.259888663546,763.536286846221,780.339622424318,803.843245487367,676.222401845606,583.021593743645,774.93490055816,945.351450338428,963.574056012568,990.767029731488,928.561028761891,986.495150858546,999.061033414684,904.019644058624,993.365558745706,996.485209826447,997.750760647816,967.663605682685,990.633374487109,998.656781538436,980.599982069716,936.47027319284,864.627899014266,871.252935661478,991.858048282061,983.393902052825,959.71320235472,915.387124031514,928.558508226683,903.962413531544,949.819593480516,944.997912505716,590.691100771615,995.9979708891,979.432931575474,843.239653565302,913.768560830045,966.353056878799,803.701030010209,841.305513842922,772.795845513178,709.774249924358,499.95444737244,616.942039447342,1,1,1,1,1,1],"Archive804_field6":[999.84886343245,0.103616813294233,0.103616813294233,910.507187919532,350.12112731126,394.910390023066,0.103616813294233,305.339943229373,953.884352314471,0.103616813294233,675.053473446769,630.242796507971,0.103616813294233,0.103616813294233,0.103616813294233,165.270303127252,0.103616813294233,0.103616813294233,153.994053733154,235.306470456628,159.640440436336,130.641381107027,223.279676980068,161.610333324786,0.103616813294233,0.103616813294233,97.2719596230692,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,181.543005259076,92.1630133815813,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,96.9468184899428,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.093102715125,0.103616813294233,0.103616813294233,0.103616813294233,98.4895924143168,209.132539896801,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,229.718134403931,607.874597730876,162.312027780414,285.592722403883,231.114523943824,224.878164907384,272.03906050708,307.96640357687,370.551999000706,337.939223338146,456.615536929482,257.677698120629,380.942235302622,425.025347539055,296.706862631059,357.149061938558,494.394781263366,423.926876783864,471.386772433258,441.431739490282,512.293561390855,407.288978995672,580.57286939111,524.792153423978,574.74667637168,300.692237435394,196.4839352366,366.126290990323,532.204311928087,931.555249737815,538.475214233986,299.129474857271,407.188932458788,244.254506864189,348.307891895608,409.106756188378,218.671334730561,169.820061754257,95.6378191968814,146.386345984106,666.009148421617,528.524181312376,107.967263825451,120.520439138502,277.59983692011,225.332373152062,285.668164573626,170.108303700181,115.425262567118,93.9783857180678,215.331732869803,258.016981466371,263.758659379396,280.831730603815,344.490797552931,378.388793343537,0.103616813294233,102.499636710134,0.103616813294233,343.65796883522,423.420247005881,192.945619174689,256.237225705931,239.638827184877,358.288499212404,155.251970743886,409.838494722509,524.729009265376,462.520366114114,478.432364119791,494.397398839641,633.36319908212,503.632558363221,566.54330477998,479.150458405545,651.406525585338,569.308427740133,623.625325293538,750.825551146231,684.822019174729,976.601984930596,734.349831887942,693.739372504525,648.769340229828,0.103616813294233,0.103616813294233,0.103616813294233,116.92168194581,0.103616813294233,203.166354747258,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,422.462349179792,484.422737558779,719.099215997383,333.157263534657,243.497338920804,588.338452766575,701.459063964045,758.864922692668,661.633105459553,965.095621169609,814.256017965007,579.231168267761,840.219232673813,274.744423059244,334.821678509415,257.348368439228,202.495904120535,183.708858265755,292.87508214712,543.517085640475,599.554770540541,531.839596624818,718.100762259885,581.986994273546,662.390537627357,719.994189178563,660.070039816645,745.511796943604,612.163437086029,697.530336290423,495.523135289346,551.145116465897,564.721985943701,319.361794668462,352.906285509683,546.182142437892,463.818668885262,414.671178061927,401.701346323927,470.561603804932,478.425304371961,525.979175279466,669.907530299044,921.01675063621,407.846034198649,432.609189636041,427.054046152144,376.97343655776,435.652483432332,432.236374014297,795.018904651161,737.33027008721,759.148580479892,824.871642431724,707.586074074333,0.103616813294233,0.103616813294233,0.103616813294233,596.423362754613,683.517251257985,725.549881877572,831.605587505227,661.327255120088,771.59546864498,641.741275503398,395.821917699646,183.462452176587,0.103616813294233,744.579194044351,811.165326570907,730.004382746473,794.019371058005,987.875353847636,895.656569812767,732.23828607916,644.374817603484,754.240170551749,848.655073665996,686.066870010692,822.300041462092,641.52270431048,609.158057501932,552.511169842838,621.03671790371,896.514539343754,773.055789242779,731.615454831462,807.279804138796,871.086283646957,924.402911922811,993.479629415627,934.233159974512,621.728666047323,511.917313028017,503.82941208534,546.564046169676,865.492116492614,982.348560736634,943.129521472135,595.846840586581,932.72304779447,841.078353971338,897.402882854939,959.36276531311,970.861554177336,900.517345132844,839.545768201869,899.436387435494,786.24798411258,807.001257053525,902.930773375014,942.889656513574,948.02432023491,872.336985903786,861.996372401617,917.326554497343,924.987247452693,864.858248757297,895.567912752375,804.513062209901,773.641573208627,786.238313727233,937.244664140661,876.388047652494,875.539230468767,820.00519779471,198.162640466134,716.02027948299,688.029297775464,495.066970399512,325.337964936815,341.001870996162,926.182396090365,879.708999658347,863.086197118925,832.786302799617,834.683797323565,915.718615693676,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive804_field7":[-664172.051499939,331827.722179211,331787.283122236,-663294.751852431,-165487.314271201,-165834.031621127,332455.282490009,-165794.031765502,-664076.096682342,84233.6621234446,-415929.79195858,-415098.693646803,84470.5373614708,332683.305196502,84587.3763889339,-40818.8632788056,209305.220939528,84327.8619008327,-40902.0665713584,-103089.994115217,-40200.7956703808,21843.9923067942,22098.2734407314,51894.819695229,209198.334608048,127508.898767033,21695.9409796237,85049.5429404553,146690.786174821,118754.996587737,146664.151771111,71260.3452152424,45547.5229629481,-46035.5972718527,14371.9636353144,209089.760385457,150893.701832603,124792.999239516,213207.58506454,154578.689197377,93515.9635597283,332400.97802518,36626.4863167423,228376.681866295,77191.383573528,90571.9558307326,204517.959522805,332488.524103725,276053.15166759,262669.410438829,169562.973250216,332716.760899153,17907.9818695751,178456.379087299,278444.813423731,63510.548611281,36941.3675404236,-47983.1427976467,59229.2118988126,149304.524072593,198939.140597465,258049.508410707,173612.187167224,124425.078884881,146357.130388476,238968.050544741,332705.52079301,98348.3435961472,332679.119559264,138175.801916207,139301.779697186,332472.321039091,232030.640086007,191209.18342175,183612.008149625,214527.300479518,209194.542631077,260567.580844841,185480.760844496,107364.923342442,155850.902540039,84359.1618322572,172972.0518438,178008.761135832,332101.995376781,257873.324774123,332632.71826065,281556.256932911,286255.614385576,332372.617817716,276123.78617607,290284.491405006,241743.983487259,-103184.282166317,-415772.644774957,-34106.0331739198,-137504.46323414,-89588.7921503848,-88042.8149225497,-130714.095371642,-163319.594676211,-210052.609620557,-172974.686170272,-290488.997004075,-106994.466924424,-228057.162126647,-260026.724473237,-142295.650542911,-194575.61456933,-308096.391404695,-251452.750042959,-293116.631277835,-259685.58506525,-332261.128201988,-234039.665402318,-383497.497257081,-336403.7046432,-373817.329026435,-133664.766776057,-53479.599800155,-209992.450619596,-353274.578958106,-664160.64553032,-338192.816430338,-136405.938272667,-225107.381019331,-89437.3022900678,-175547.668964711,-219717.589409736,-62250.0913823609,-26773.8989658815,12787.7828407732,-4353.85011761961,-450224.542227459,-333590.812273321,3849.91045878398,1471.82480378836,-97020.2268034781,-57039.6686795353,-109997.851042809,-5408.62011473977,10945.1731401421,61645.1032853181,-44892.1072339673,-74752.6182312748,-96261.7738397011,-113724.513058952,-166943.107457923,-183301.186006147,94865.0156504476,34741.6253709708,106896.633104885,-156649.10696346,-223602.217936588,-20364.9981982449,-65876.5852245185,-56448.325605191,-152945.165901991,6744.13360486637,-216542.191446088,-313347.103680109,-261616.822163376,-279924.610313049,-283533.437352234,-396656.810150703,-283397.464766479,-343612.642072977,-266958.033093537,-419374.551494455,-340617.053741339,-392412.446843881,-496779.744597375,-441698.889624731,-663881.252125014,-476548.86861952,-445327.895449019,-403049.058517777,62331.7926997413,66544.0699678943,116542.336310773,49242.9262025309,127455.245368667,-17386.9620948019,209214.432981783,119196.249438222,220776.316908797,181667.418558146,169884.761004283,236603.536353292,146864.566725969,207808.621901178,272378.316942108,269353.603634913,332441.137201454,291327.87030841,270142.691789545,-233687.721386768,-289625.644741495,-457566.34178056,-122156.819569754,-40719.2929504645,-373669.956306346,-445519.86175488,-492608.925687613,-410076.862795499,-664206.598415503,-532214.592074696,-343649.776832307,-562935.12077247,-76751.8345168139,-129450.375983024,-57370.3971660985,55141.1575581357,16422.1985062036,21681.38183625,-338754.113648356,-387003.528437505,-325671.420503183,-482797.849177773,-363954.284769403,-438962.655102349,-490986.683673805,-432147.729279534,-499379.15613652,-366486.618094038,-415671.498018485,-269416.499848923,-316998.386754395,-322260.525598882,-103306.420498757,-134003.348350416,-290722.516137433,-228136.153456335,-185511.241178238,-179026.733662192,-227976.390238774,-246867.190151102,-317087.76117227,-450381.463075365,-664144.770333123,-190821.577596572,-215230.945529009,-202930.087208678,-175190.415584975,-222004.146672512,-223039.87141746,-558615.003414312,-509276.055382791,-540162.832943822,-576568.478626131,-490815.193300963,332402.253184206,284543.324317029,244277.878667368,-400895.337478193,-478045.529324006,-509986.340622495,-595769.373450903,-455463.003405459,-544036.781795033,-435370.756938664,-219162.157728478,-30547.572490937,332959.164272515,-473965.750970376,-521864.679717924,-456605.906265981,-512091.964860246,-664239.232389705,-594709.58118732,-451319.120850634,-385472.373295903,-473084.452428547,-540690.364521959,-416430.792145946,-525414.751604413,-374786.549587409,-352223.793733599,-302122.218658597,-369529.011534664,-589267.355177927,-478274.280063834,-446726.433299202,-509330.795765568,-562869.746398652,-603242.319436237,-663917.199415951,-615768.377452891,-353449.795824238,-266059.746255458,-263706.268458912,-302927.695105981,-566849.432727295,-663866.479257501,-626274.253174804,-334262.079823918,-623231.91776213,-558838.350409856,-608651.568731724,-663942.291041929,-663938.628300659,-615449.421853449,-568061.700329541,-604122.076383325,-521378.708854819,-546056.784574754,-621475.68559052,-663982.334754274,-663685.426430096,-599650.161517454,-596670.781303383,-622026.907118705,-622667.740456474,-571619.579019586,-621662.143566063,-548026.265776515,-526042.816274619,-541549.474674634,-664074.559998707,-617102.652755434,-612859.415110104,-566007.097218516,-6445.05203487506,-471725.847422409,-452685.62878789,-264536.800131481,-129464.996541519,-148590.272156356,-663920.997680925,-625179.768215632,-615181.669010793,-593638.601682762,-604053.170054273,-664045.339823414,192152.796895364,272048.42044877,272784.219975279,235390.952710011,272135.91709745,332680.615322049],"Archive804_field8":[0,21.9783403448094,30.9027596188538,0,54.4169309550069,0,39.6848867470399,0,0,39.7287873621413,47.4938876273978,47.4886595887127,46.8420889783446,36.4441287091068,20.1018158586035,28.422133713431,31.5845739633195,27.5069138948158,0,46.280273488907,-12.621855321938,17.5591082693701,9.96420438851445,17.6596526848117,28.8389627618387,25.6918536859821,33.3307234193649,23.2859995523864,29.7854642122038,34.1009972274454,25.7156667061257,33.0395121025906,38.5495091148452,50.6277667191487,47.4448053393086,38.0876117103065,37.5380356330766,43.2696416862923,34.8367439248973,40.3927337566277,42.7750656414983,39.3886210894765,48.2338530528705,40.5211915568647,45.3210016560558,46.1106088412121,39.9417744685832,38.1597045943826,37.5078224829796,39.1245674836395,33.1754990475548,32.693241405257,51.2725951136586,42.4988511182806,35.3967032793989,48.1797704675875,50.1175254333195,53.5500251378872,47.035814440843,43.295864637523,41.7419916203556,40.4547144671575,41.7323928427929,44.7270458570394,43.1958916900001,36.3936070785437,34.5202901583859,45.2712906037975,31.1682199439058,40.2338718017727,42.2183470917574,36.7910109945465,39.6406967761142,39.3435833227591,41.1175983199943,41.0505381647811,33.7734804405402,36.8005788829101,37.0901205693619,35.5480198155035,35.430828724039,3.85929742067952,27.542231840784,31.5216862732999,24.8678532187273,29.2177001216055,38.6636132724182,39.536745629846,38.2113377603017,34.278325113408,32.9432755798725,35.0192175074119,35.1436424638051,0,0,37.6758188677722,42.3052764710318,44.907728628363,40.8025971091397,35.5325358830387,31.4927397808517,39.8212380383461,48.7232468148818,0,46.0964069959811,0,33.984217162415,45.9424083216397,43.3926463136453,43.5092813461923,42.3491704733204,38.7422481261948,47.8328628749349,33.3140697617167,45.4409272049854,39.7734755971467,40.6441781111396,44.4786486090107,53.1741452839383,57.1020298042907,35.214430906248,0,0,48.6198492374464,49.8221998603667,51.4944652023472,50.502922698208,51.8998052118312,53.7387643019408,53.9016908204188,52.980813857945,49.2910052763886,50.5784354338485,42.9830089419393,46.0364625329552,44.6978433399273,53.116067343059,50.1220436034823,66.1956358183364,52.3529089518562,42.2854872231706,50.0036366139942,43.0175048927024,61.8039903055897,49.5874260602388,54.1809655251627,53.8301856009419,53.5213033785384,53.2250037320508,43.2347554550049,42.970168196592,39.2337809617321,54.8654660165204,53.9847646506855,55.8616934537515,47.0678342964909,45.0672473120947,46.9402258259754,36.2934594478007,54.243721350161,54.1021919407485,54.0758365763016,52.8952594384022,54.2490722075209,54.1019424642454,52.5950398741821,54.2440497903841,53.7819489779107,53.7736239178535,53.4968458178435,54.2499594437883,54.3626717383159,54.2207176851061,0,53.0392863058173,53.7963211600437,52.6242035508225,34.3599262627749,15.678820818631,29.6957844965023,26.5453698941047,21.8520267604737,23.1212706795003,18.6065028336564,12.8226973824709,22.0409427696396,23.1864036454437,18.5239261246307,25.690227573093,13.233299527319,19.4652776758175,21.198541764149,22.0257063407459,27.8448760254496,26.127126615855,23.7798974823425,52.8442399215745,50.7707754300956,50.6121635808392,35.7047293685438,0,51.9952475405085,52.1552680343392,51.9481568640491,51.0941448388792,0,48.6517117358421,51.5872541665019,53.2097727448067,42.1346048349418,42.6498093712125,40.0932226083018,1.09583316415643,6.32715488116637,-12.7263609379738,50.7825645158381,49.7411371656421,52.3849664277113,50.8523990944376,53.4622732116612,49.7622887076415,47.0734000484211,52.004362675826,53.283612671226,49.2991375264508,0,49.0130705703177,49.8901802995365,45.6532734509106,0,30.7478885751984,0,34.61951650473,32.1000569939824,37.7611648007187,0,42.0896996628427,53.4893680541427,45.8609832646656,0,44.0726054218456,47.4673083320842,40.5644740351013,50.7518273920248,50.0024385638942,52.2202589068974,41.3002081308048,43.6006780688704,0,46.7868898019408,36.9993209568564,39.9112397310533,40.0448464942421,40.7005184264288,33.993758851615,0,32.0075721088065,34.1018093250572,33.1027588201449,35.9366505969939,37.9961760124898,49.3289521931364,56.7859758329219,22.7581389254698,48.0400392767451,41.9654528411452,43.9318988555696,45.7396471997694,0,44.5194881251497,36.2402036933062,43.493953561485,40.2585466210183,0,40.0012978648243,35.9277307600457,34.1223494795928,39.357904004832,34.7807832434778,46.4517281850613,39.2424636065949,0,31.3847951999131,31.3012617520732,32.2196611286668,0,0,32.2434238988915,0,31.5586819707133,38.1773295227333,41.4331607043332,42.2819751559732,0,36.3279564863149,31.5769972401632,41.5696442748979,51.1941692705488,51.6580819207619,0,0,52.7492523059061,54.0314986414079,48.5937428125647,54.0417194757918,54.0899860288943,53.331019933075,0,0,53.5977452332675,52.7170075135693,50.1953032075884,46.3419209178994,47.1517184909192,53.0919532113437,53.4390450493047,52.2316601187683,49.7491464932514,0,48.4633865294832,50.8634738345983,51.0731296602014,-31.5004509392475,54.067159280153,53.1635975962102,45.7278230010931,50.5440637391497,52.7070723496531,0,44.9923927329069,41.5553885648312,38.3212665648136,0,0,29.018177532404,31.1794578666233,30.4020788664579,29.9220462836765,32.7967574877001,31.4034403712498],"Archive804_field9":[0,8.87789957779361,1.51571355985537,0,3.83559652587355,0,3.91319438676861,0,0,2.44443539275512,3.51454444072877,3.51571408292806,3.04115436817177,2.27260398656974,0.0929268058053863,7.81757702879172,1.60062616435426,1.1631670133022,0,3.29907237406184,-9.90591241764635,-0.122733602843683,-1.25007023789995,-0.240968637202179,1.24931975331219,0.850508124690277,2.50699085301774,0.553062834476963,1.38679629108241,1.92801837054793,0.843146835343517,1.94646223756128,2.39160912931986,1.52975080060215,3.59284694817832,2.36128097099629,2.23557166919961,2.45326766745541,1.99470256402388,2.44924277580328,2.51677290044731,2.94762302116495,0.18575196082006,2.89541215065924,2.1782532312184,2.19533212267939,2.59759735816348,2.58762210266421,2.41129243750791,2.68638914894097,1.79407154773824,1.74756421778392,1.74056779143046,3.2968863137686,2.09718806092095,2.3361657348577,2.81316932849731,-2.69944488247798,3.819338437305,2.74997433384254,3.0407549787593,3.64363358856092,2.67551663256415,2.9293830490898,3.74502631712602,2.20004939209389,1.9902790801861,3.69152464353183,6.8262615262459,5.03106282121146,4.33039130806143,5.25072402865725,4.48047344030712,4.87889445133155,4.26158107944266,3.86790851796267,6.37796595612363,5.36431369843585,5.6112665188356,6.49695957443131,6.21845742716572,12.3405145728381,7.85120775081932,6.99632662348187,8.26806564103958,7.33677712375109,4.5357929417956,4.20182942513448,4.8010475911072,6.02281644378714,6.42295937084416,5.84591441567856,5.91829641867465,0,0,3.16361969678107,3.26506679477401,3.75741463038038,1.70317405413257,2.80667616618963,2.48077707099378,2.87490586958016,3.45724345565714,0,4.15147017123508,0,2.52611432716936,3.17355542091034,3.26019364874826,3.22401336858628,3.15126848227447,2.86739226468538,3.53501500101306,2.45745101249557,3.37738564081779,2.94476566452268,3.01357862581927,3.29092303308226,4.14135244053286,1.76890630661281,2.60520769021617,0,0,3.60427053401473,4.29300633550135,3.81296764059946,1.84968901521757,3.7647104475041,3.98215525958779,2.93151821256773,16.1140288362868,5.88331022815009,-10.52495825815,3.19943571564343,3.40889374451582,2.57914529481184,2.5988269283469,3.43777742127755,5.06842639816007,5.0584221161467,4.27283063181907,3.90886192201942,4.87503943360392,4.59856947009137,3.62948031173562,3.75015695125146,4.57501897013118,3.88874639617729,3.94737447895469,4.52664954220539,6.110918998825,5.59005555677448,3.94444714763279,4.04063729614568,6.70060548697186,1.88175861895244,-0.773710169555703,4.43368758955145,5.88407481545141,4.06203265835241,4.01120937587295,3.99762702848359,3.9150732721962,4.00417521027683,3.99877807561146,3.87760387565425,4.01978854296109,3.97245643953155,3.9904398820206,3.96754069124278,4.01364237234822,3.97731589932924,4.03057567957632,0,3.92131653574656,4.00408884192712,3.89422667426378,6.89504370015816,10.4069431062101,7.5919904924363,8.35002751117748,9.07095994456234,10.2391888019894,9.56733858983912,10.7798235096288,8.89024988456868,8.70851402777918,9.62753004179814,8.12894051787865,10.6221767835103,9.40532210820117,9.03982052536337,8.87260158679658,7.60692508611777,8.00123478674993,8.50878531222083,3.95082611958564,3.75341429569595,3.76560845018265,3.94385611260098,0,3.84895604422781,3.8491474828341,3.8485564754172,3.7799756315981,0,3.61714855342091,3.8242785647525,3.96179068779485,3.07292283736894,3.13050663408567,-3.72707132407795,13.1657006154098,12.3920406180256,14.6700653919175,3.75934910653485,3.68433004872459,3.8811912745288,3.76294652053587,3.95658219905276,3.69141676888592,3.49085223680044,3.85072955383277,3.99785125905036,3.65052448822149,0,3.63201430412145,3.69828407816579,3.37344653237708,0,3.74039297183484,0,2.64141506161628,2.18370535380772,2.27241028061912,0,3.11297745063543,3.96104121651904,3.38491701469807,0,3.10413118003358,3.38244700080841,3.12935149850098,3.45555173870098,3.773590559234,3.90259635104025,3.09903549699693,3.23945127722721,0,3.43997651850648,2.70649881760811,3.38552240242829,3.11999524812869,3.24922506700336,2.51108533152834,0,2.38490130915165,2.51109844830816,2.43313448237003,2.69712377790464,2.806938664999,3.69563242150003,12.2150424070548,8.71597863022385,3.55311788865299,3.08352013876188,3.26544530179242,3.34285587592179,0,3.28926808274386,2.69171642321123,3.22062142227185,2.98403462252899,0,2.95972115218335,2.66300639410529,2.51460565209109,2.9211159511179,2.57382350457797,3.44415984158466,2.9077011643173,0,2.34807604434716,2.30577646196758,2.35728754967454,0,0,2.49387751709301,0,2.32164801761576,2.81400795742544,3.06417361023654,3.24199688693633,0,2.72712308288183,2.30919774767092,3.17168844175579,3.72766887748757,3.85043931905869,0,0,4.03940509256703,3.98512633068349,3.68133472092174,3.99663167654004,4.07690394994057,3.96418761410493,0,0,4.06005752837792,3.96975577778222,3.77268317855888,3.55014415136744,3.53720810160358,3.87831582605102,3.8879506765424,3.82706393764594,3.68984189511957,0,3.55776339108623,3.79149224393243,3.81255814037224,20.7156284642153,3.97150839378287,3.92140122530961,3.4390019992154,4.39395910708072,3.89942210905861,0,3.35410983681666,3.09555371958496,2.90085554167333,0,0,1.27442875320461,1.55090977740548,1.45116481604177,1.38953442402529,1.75808578370707,1.58026230366897],"Archive804_field10":[0,0,0,0,54.551940160468,0,0,0,0,0,47.6237481157221,47.618620675588,0,0,0,29.4776558672029,0,0,0,46.3977110721782,16.0448849355181,41.7471535404786,0,98.6659192185652,0,0,73.3657534552992,0,0,0,0,0,0,50.6508726527044,63.9408203981933,0,0,0,0,0,0,0,79.9736812826992,0,0,0,0,0,0,0,0,0,96.1529897779894,0,0,0,76.3404758396907,53.6180211770435,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37.808409341614,42.4310862277266,45.0646452916617,40.8381284182986,35.6432116591826,31.5902977792298,39.9248804965722,48.8457501989229,0,46.2829714098154,0,34.0779733807061,46.0518874358245,43.514947049588,43.6285666216865,42.4662540474873,38.8482139650103,47.963309955316,33.4045851578393,45.5662660201116,39.8823395238516,40.7557464716822,44.6002282112269,53.3351715729319,57.1294218182863,35.3106676680019,0,0,48.7532614904314,50.0068145588476,51.6354400456121,50.5367841330865,52.0361684386885,53.8861053446156,53.9813493007597,55.3771483771682,68.9119929171686,51.6619093459754,43.1019192913885,46.1625003559122,69.4171103110837,87.354863778607,50.2398006423954,66.3893903236608,52.5967176735057,42.5008177722398,90.9686186534065,73.7069697335444,61.9748340769435,49.7200759312868,54.3105947527542,54.0242508546756,53.6623915221017,53.37117937196,0,87.238453168226,0,55.0070724953658,54.1357697289778,56.2621267764821,47.1054353643178,45.0738883137009,47.149150429624,72.4488634591201,54.3956010650809,54.2506863869083,54.2234001450088,53.0399497528282,54.3966474563591,54.2495198550412,52.7377856112986,54.3927903089352,53.9284567369266,53.9214821727923,53.6437684320815,54.3982299780589,54.5079729974519,54.3703206409229,0,53.1840447427984,53.9451285827424,52.7680945339979,0,0,0,72.5926441699083,0,25.2870351199485,0,0,0,0,0,0,0,0,0,0,0,0,0,52.9917231265047,50.9093287782144,50.7520532523928,35.9218833069461,0,52.1375126893215,52.297111966899,52.0905211004491,51.2337764818468,0,48.7859899816022,51.7288111112182,53.3570585865439,42.2465120378135,42.7645450249014,40.2660844852539,103.498819810489,53.6082113280722,0,50.9215235878706,49.8773998363904,52.5285479843287,50.9914332037879,53.6084806691643,49.8990173769412,47.2026592625655,52.1467338902026,53.4333808960908,49.4341105906743,0,49.147457865451,50.027066628407,45.7777404235992,0,30.9745571625579,0,34.7201381988754,32.1742479024634,37.8294781300311,0,42.2046614287624,53.6358307696498,45.9857309303476,0,44.1817856028086,47.58766970557,40.6850020836374,50.8693308531645,50.1446293040916,52.3658829638397,41.4163157784398,43.720855122502,0,46.9131804057967,37.0981790269845,0,0,0,34.0863783703104,0,32.0962992657228,34.1941371386916,33.1920590640891,36.0377209712789,38.099715172704,49.4671934060098,58.0848888464404,0,48.1712572022142,42.0785851545478,44.0530914928226,45.8616398678302,0,44.6408345289994,36.3400289080142,43.613030148732,40.3689860990483,0,40.1106442253061,36.0262881882297,34.2148794472959,39.4661567175402,34.8758863752953,46.579236666064,39.3500403554545,0,31.4725091286114,31.3860732230772,32.3057791708848,0,0,32.3397249492613,0,31.6439639938856,38.2808977202967,41.5463110981561,42.4060840788824,0,36.4301746191365,31.6613194441281,41.6904657291462,51.3297037061562,51.8013832892704,0,0,52.9036899689804,54.1782620366136,48.7329874506083,54.1893025297253,54.2434118988013,53.4781494681881,0,0,53.7513010188961,52.866263742778,50.3368811356793,46.4777060304866,47.2842087572685,53.2334183520287,53.580292050761,52.3716787695923,49.8857946716094,0,48.5938011916442,51.0045917928833,51.2152337968056,37.7016667011334,54.2128268175284,53.3080246955524,45.8569572820734,50.7346947946071,52.8511207871335,0,45.1172412346939,41.6705264138209,38.4309046732595,0,0,0,0,0,0,0,0],"Archive804_field11":[4496525.41019973,8995.77,8995.77,4499193.9438181,8995760.44355011,4497606.5004015,8995.77,4498217.06019541,8984107.08899356,8995.77,7871230.1898869,7871306.49557477,8995.77,8995.77,8995.77,6465953.88439647,8995.77,8995.77,4497486.36312793,5552377.04522679,5552073.89999411,6420763.47022715,5801134.95180678,6352580.1020803,8995.77,8995.77,7089811.97714572,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,7748830.23392568,8001377.81243437,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8416696.61168604,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8689849.66807273,8995.77,8995.77,8995.77,8550636.64462506,8993147.53832197,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,4498311.71866072,4498264.99854854,7168478.16086413,6975056.71575461,7359734.44448999,6744160.94847826,6265123.55599962,5516389.03908813,6500261.12080332,8009560.04984321,4498315.39244912,7979504.37963206,4497946.83351622,5661429.04155398,7584094.04469882,7236280.20432277,7209466.44059068,7037297.4993664,6438072.37649599,7928403.69391474,5520012.74650168,7536670.07726079,6596486.86973234,6737771.7356459,7373497.33219067,8741867.28435116,8310782.37937047,5786450.28174681,4497923.56927535,7860359.79239435,8061598.01552485,8399751.60666155,8534997.07380834,8575477.80245856,8600378.66274161,8905087.61943983,8902288.35456856,8664603.573971,8303052.346859,8850164.81979267,7130091.53055217,7635116.89917218,7684545.77740574,8657339.09540407,8731970.92496593,8898881.21769878,8974556.3594033,8553983.54919392,8522380.68862226,8158984.20356147,8720831.95519756,8277592.21324995,8985995.14508541,8903858.2655901,8889126.82270376,8851082.02058688,8995.77,7901355.07689991,8995.77,8954228.15782508,8972987.66778684,8201493.23687244,7359202.04223029,7876424.38679017,7797750.77194069,7394326.12698937,8990264.26728451,8969395.44558718,8964810.24082819,8769111.52445864,8990380.16849279,8965195.78049958,8719741.90543946,8992614.75264461,8906282.49257615,8915137.34705133,8870674.2668488,8991061.26633101,8994790.13136439,8994229.73561434,7862407.01246591,8797854.80203713,8926847.55119937,8720426.93735459,8995.77,8995.77,8995.77,7079050.68101785,8995.77,6670560.24267279,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8758486.57199797,8414855.89703977,8398553.32133922,6152559.61509849,4496271.63297322,8619834.41658346,8649900.16340305,8591969.9300507,8468865.11764446,8703047.56027914,8056030.44471197,8552655.0771447,8826252.9439778,6667783.96016589,7157283.33840752,5677402.52123458,6203608.68760569,6253520.53185115,5620833.51179918,8418804.57250379,8246881.80634442,8684968.87207973,8438522.65407449,8862113.30594555,8250434.2053279,7795779.04022658,8619624.0771838,8838183.05989444,8174316.63904864,4498421.70386314,8125521.11742521,8271028.71440915,7569019.54626175,4498359.77041137,5307141.46707295,4497670.27733629,5750967.91174361,5304543.21883478,6166123.59157831,4497776.36216102,6981623.22123389,8867281.55686648,7609417.28280793,6460764.52807451,7289059.29703889,7864960.89148828,6732325.97486801,8444336.87006782,8285266.2564002,8656745.87679329,6849417.58563364,7219688.54640099,4498348.83905673,7774863.90721992,6131802.72582604,8995.77,8995.77,8995.77,5635805.2126127,4498357.85422514,5310854.95572227,5670067.68059976,5490954.11549966,5968347.15235429,6300555.205492,8193059.42752131,8974525.42634865,8995.77,7967765.27558983,6949461.77231561,7287916.35621432,7570947.96290345,6457434.87162535,7425975.77355298,6011416.17444058,7211324.36495057,6680307.54812068,4497162.96731829,6631616.81362253,5950790.08252878,5653315.04792202,6527929.43052466,5770751.23544293,7702410.75924568,6519925.7829992,4497460.2501254,5208791.00037228,5192464.87580402,5343415.25275133,4498202.04063082,5593895.71782421,5368238.90965826,4496898.37038334,5233246.64672033,6326364.20864286,6868596.82312263,7019755.76521601,7231188.95245789,6083141.19585065,5244728.16235127,6971136.13039408,8504164.21641092,8668090.58585618,8912712.32304762,8353121.44570536,8874283.48323878,8987323.27256081,8132352.79343324,8936088.09239786,8964151.75600045,8975536.3601128,8704879.23409212,8911509.9912099,8983686.71566002,8821251.90070329,8424271.18947995,7777993.71511557,7837591.02103545,8922526.87499431,8846385.36226974,8633359.23434652,8234612.02874897,8353098.77155035,8131837.96077466,8544358.60444422,8500983.87138155,5313721.28358827,8959768.66658504,8810753.3828787,7585589.97835314,8220051.80645809,8693089.8384786,7229909.61473494,7568190.90226274,6951893.68319208,6384965.90424204,4497475.21903958,5549868.69019921,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77],"Archive804_field12":[499.697301752583,1,1,500.290889726781,1000.01775793817,499.980521913255,1,500.146849122027,997.430768247832,1,874.984079095103,875.002358281946,1,1,1,719.151512928906,1,1,500.073627008236,617.497109683311,617.465572477983,713.66902250662,644.669024486764,705.781032020985,1,1,788.072068885889,1,1,1,1,1,1,861.34137601117,889.531250024255,1,1,1,1,1,1,1,935.252041547532,1,1,1,1,1,1,1,1,1,966.462806911603,1,1,1,950.286637726583,999.589099021982,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,499.920252637402,500.084896644308,796.902897109122,775.40231093287,818.184216935918,749.670990139087,696.323247007771,613.15510215469,722.642535779611,890.424256845569,500.098787151261,886.943732600639,500.026816671448,629.373609644869,843.087318592397,804.393378381108,801.443678034076,782.2937636336,715.664794055295,881.357774199896,613.64422959956,837.801417027376,733.293914503745,749.002925566648,819.667818155502,971.807009683859,923.916491761189,643.264886438288,500.006509002961,872.589986527187,896.160118738707,933.684430778165,948.780781121798,953.291342211683,956.058851887454,989.920442396868,989.628728980638,963.013786332217,923.424668527317,983.748771585137,792.617754650878,848.752513476433,854.378811532105,962.742128469253,970.502611700638,989.179555337292,997.611147635252,951.059628943316,947.592437091636,906.679396618162,969.493645604632,920.105739283306,998.844778658314,989.801665325071,988.134782940967,983.878624252243,1,878.500786457301,1,995.456652487442,997.446625663157,911.657863241817,818.235653327425,875.509225615967,866.798370978871,822.10519884904,999.389770048837,997.067881920234,996.56064043486,974.807982757369,999.399496371334,996.59899317355,969.311117570594,999.652145478083,990.061903586873,991.045020548065,986.087167344464,999.471941233081,999.853102309167,999.836487721904,873.039046568362,977.996138287557,992.348424532363,969.383828361085,1,1,1,786.900227944688,1,741.730501237493,1,1,1,1,1,1,1,1,1,1,1,1,1,973.62861599749,935.43225430663,933.608154350809,683.810757107469,500.14277959202,958.213858710729,961.557394608288,955.064169235067,941.420584982228,966.193310688536,895.533272274284,950.740602972235,981.199848869609,741.200793690904,795.587556630899,631.372174961934,688.945825720266,695.457484339135,624.603913431162,935.865568217884,916.757934211029,965.452858191118,938.072205917452,985.142922755311,917.150374902338,866.589543665914,958.188338282986,982.488062735623,908.675151886779,500.118610852082,903.252949974837,919.431997389372,841.392690258545,499.931408123493,589.923824883626,499.951925762614,639.278855111048,589.578362201197,685.510815181392,499.972614891873,776.094604356105,985.718737664224,845.905275320028,717.655235991292,810.276510789386,874.301952982129,748.371528796445,938.673660992002,921.006996608979,962.30366220857,761.439679913035,802.547159292574,500.102565890515,864.398677059645,681.631270535542,1,1,1,626.515459770038,500.105277384,590.389725164765,630.150069914112,610.443267001316,663.52357131448,700.390325524089,910.760683217685,997.702198432801,1,885.719303182742,772.499516818166,810.14690710224,841.589779985798,716.923969355076,825.380236079066,668.241066162921,801.624579945599,742.599647622186,499.840797230391,737.184521696156,661.49003918165,628.428868133277,725.655749574872,641.493104148221,856.217046599108,724.833830649085,499.905452679687,579.048099319712,577.179884559031,594.001597143926,500.069064267993,621.196582050782,596.592108578905,499.781859735443,581.80113486431,703.239888697263,763.530767941903,780.410217846073,803.010172803965,675.968873085166,582.927362842279,774.55287129309,945.483417418728,963.269900409383,989.376149456959,927.44937273923,986.051258694308,999.199654048539,903.740577173211,993.329437330198,996.567874194482,997.103296095623,966.593900690386,989.106298670835,998.410487691154,980.424180669115,935.912184723279,864.115769647885,871.385706062759,991.347362255333,983.375343391813,959.678415116694,915.405481129249,927.448087874509,903.624741356804,949.233632686994,945.179084402819,591.182775935941,995.988132140998,979.426880321576,843.22490368114,913.823074933236,966.409303144146,802.731544193285,840.814194158935,772.560142337114,709.61843365919,499.909006892507,616.69671365393,1,1,1,1,1,1],"Archive804_field13":[999.697301752583,0.103616813294233,0.103616813294233,910.652571056205,350.139947576485,394.921870886862,0.103616813294233,305.449879425057,952.611608912543,0.103616813294233,675.045173914262,630.244293765817,0.103616813294233,0.103616813294233,0.103616813294233,165.64467030916,0.103616813294233,0.103616813294233,154.111994554668,235.582703524953,159.918834941326,130.55677605012,223.075060654897,161.217229937652,0.103616813294233,0.103616813294233,97.2167223255271,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,181.49839275279,92.1703934531486,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,96.9078361720805,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.14179621958,0.103616813294233,0.103616813294233,0.103616813294233,98.4656731173194,209.013160564848,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,229.590951562133,607.917252460535,162.342821571628,285.624307345024,231.165946856552,224.845577867613,271.910135438461,307.901176722689,370.603681434431,337.993889827001,456.66648021089,257.59292958884,380.962178352778,425.055494472674,296.720820666347,357.133234179138,494.409961171025,423.931019921785,471.37382278279,441.441536372534,512.314638497446,407.288842930785,580.579153182604,524.801748164481,574.75177169293,300.723925567995,196.545951019583,366.149933850039,532.206533440889,930.361247524255,538.48102761308,299.069311602735,407.190779280538,244.266941049259,348.319772513053,409.107756509712,218.691797318376,169.647420024063,95.6823214700837,146.321078327169,666.02198647812,528.531462399343,108.106162886946,120.883683376158,277.427239609631,225.282410871765,285.637491730665,170.278397985105,115.641245100416,93.9472297571117,215.388414746198,257.957775086332,263.690043732897,280.850612955322,344.480394178134,378.351419233562,0.103616813294233,102.659260943422,0.103616813294233,343.732551991734,423.399433218402,192.897954499225,256.399268633102,239.578269803929,358.262710398318,155.379047988064,409.84030050764,524.728775216973,462.522597337956,478.436464112411,494.396046979773,633.360925160182,503.627885796955,566.546198149059,479.160093806799,651.414942590701,569.301656839311,623.620705172669,750.787578943223,684.82972785778,975.629466900717,734.346888158381,693.749447879521,648.761228006105,0.103616813294233,0.103616813294233,0.103616813294233,116.890865519883,0.103616813294233,203.374980406253,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,422.468187805476,484.431354195731,719.095981735631,333.028834213562,243.819465809029,588.342573279967,701.464511001079,758.816863619241,661.6262064527,963.82894118707,814.253894746524,579.229913995459,840.263166710361,274.731962057566,334.781585877657,257.60141505144,201.827757095201,184.004001654515,292.648268269871,543.520068164884,599.56163104199,531.842151831341,718.118454325328,581.987643944336,662.394942220551,719.978757369718,660.072021936257,745.517753100863,612.154102925628,697.589285338886,495.515873250624,551.14178876257,564.717047509899,319.2404257188,352.870444119834,546.15793749282,463.800619813165,414.578703988433,401.765157904926,470.546295243779,478.419227937662,525.981119732383,669.924428881125,920.471707154537,407.846237674832,432.61568025216,427.037613176777,376.94625592444,435.641461972797,432.227096164007,795.054326159007,737.312607646792,759.19958446334,824.990340432331,707.585563692172,0.103616813294233,0.103616813294233,0.103616813294233,596.443790680495,683.569964578526,725.567136901118,831.451894584166,661.377624626285,771.657529454601,641.740727817967,395.81460356732,183.526268753399,0.103616813294233,744.574954318612,811.13933725501,730.002035675438,793.997153082155,986.969179521253,895.54040329895,732.230144621101,644.364366312116,754.234399391475,848.576134473793,686.058598469302,822.280272975385,641.510088510529,609.147251515172,552.508189115286,621.027920662249,896.5715267655,773.008458544789,731.636856006126,807.247857381106,871.09589869804,924.436732889694,992.839979790387,934.073805403707,621.620202843947,511.973177979876,503.809412119058,546.558527265358,865.562711914369,981.515488053232,942.875992711695,595.752609685215,932.3410185294,841.210321051638,897.098727251755,957.971885038582,969.749898154675,900.073452968606,839.684388835724,899.15732055008,786.211862697072,807.083921421561,902.283308822821,941.819951521276,946.497244418635,872.090692056504,861.820571001016,916.768466027782,924.475118086312,864.991019158579,895.057226725648,804.49450354889,773.6067859706,786.256670824969,936.134243788488,876.050375477753,874.953269675245,820.186369691812,198.65431563046,716.010440734888,688.023246521567,495.052220515349,325.392479040005,341.058117261508,925.212910273441,879.217679974361,862.850493942861,832.630486534449,834.638356843631,915.473289900265,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive804_field14":[-661788.18912403,330407.005674262,330353.88015092,-660177.026153553,-164331.301145911,-164973.869312408,331619.564688116,-164897.848798412,-661620.5847274,85143.1540681219,-415170.587110344,-413555.30273874,85591.3329727097,332060.260837295,85837.6065592789,-39929.8220136749,210309.501234868,85328.0431057181,-40082.7498934086,-102013.95083,-38708.8505739649,22862.1564483926,23295.3690394163,51787.8938986086,210061.701669187,128723.779019517,22564.2214355894,86125.5606971617,147561.012281534,119809.167436895,147516.51690568,72161.2159435757,46361.1160865316,-45201.145373841,15495.7535038326,209886.034372803,151882.336229605,125900.713766904,214082.529820031,155438.645695854,94246.2617099412,331515.326374625,37587.5722929445,229219.892440997,77719.4905331337,91656.9250348883,205571.057741722,331681.438514588,277342.690148213,264192.688751882,170533.149554607,332119.392715867,18769.7109290772,179781.428940824,279721.777195179,64784.4906357147,37559.9329713469,-46710.3137267124,60107.9953417357,150005.166382014,200059.448188598,259545.910280434,174678.910461343,125132.066382909,147393.421475507,240157.559651732,332104.427548374,99231.4758181375,332048.263749835,139217.20363953,140276.101116511,331645.150564222,232971.341405058,192369.663763547,184516.185740881,215330.486055071,210170.997959092,261511.38035365,186782.749524474,108249.280543573,156801.473483004,85388.1850603052,174346.846007148,179042.683362061,330930.161813244,259033.253022923,331965.987653209,282715.305928889,287678.763686582,331467.276282098,277497.28785651,291818.063111024,242229.046549505,-102217.08839392,-414863.011829378,-33142.9700779681,-136827.441915989,-88532.9573222456,-86743.2796079392,-130387.245395352,-162249.541160468,-208992.230788534,-172001.793827962,-289340.592198234,-106123.912797449,-226952.984980753,-259589.593666507,-141315.105453918,-193540.623657973,-306990.133939186,-250789.674808591,-291472.138450414,-259187.657619527,-331298.811070929,-233076.473723161,-382835.660855181,-335527.818844742,-373094.236615392,-132710.447315657,-52785.1010058618,-208817.335083945,-352368.767466604,-661796.265422514,-337206.075713622,-134837.580696115,-224517.892632156,-88379.5610078413,-174922.527729865,-218772.302685053,-61142.1701431668,-25821.2653944542,13990.7560926102,-3691.75531672954,-448928.242533528,-332724.438504408,5072.33928711581,2323.9885411561,-96249.8454121263,-55970.6536305917,-109124.584974275,-4468.91009651566,11750.0279097619,62339.581857057,-43685.8807429993,-73752.107032152,-95479.3354336322,-112744.215313322,-166160.543567906,-183155.105218519,96064.1851928999,36048.8091193946,107517.739839993,-155550.808865873,-222598.218562361,-19487.2264183121,-64998.3033054435,-55979.505443332,-151601.525521142,7513.43830463108,-215759.386689821,-312869.202193811,-260620.551412264,-278841.72409848,-282458.672532141,-395640.691511368,-282432.860215533,-342696.992091136,-265872.841900635,-418171.879732916,-339607.245296763,-390985.394259719,-496153.674024928,-440833.398069186,-661276.249730623,-476619.432720474,-444617.85953502,-401807.079182248,63360.2358585924,67973.5377853994,117422.651826273,50376.2108610927,128053.492344197,-16172.644506094,210127.055555031,119893.300885264,221669.57223077,182747.631268083,171060.160984171,237124.810869905,147897.821880804,208737.362805769,273854.819890892,270390.035426756,331582.234980141,292786.511403309,271905.327494863,-232459.190454762,-288320.365527933,-457019.964352551,-121107.914251168,-39741.0354920521,-373083.134347933,-444320.413111912,-491826.27311202,-408766.155274543,-661873.62825112,-531159.196688876,-342917.402091156,-561492.237811652,-75754.1942194837,-128551.633523282,-56534.7565507649,56235.1810603748,16915.3834340991,22554.8632867454,-337753.147186711,-386111.628349742,-324771.466750776,-481820.971314264,-363240.917401625,-438119.709180062,-490486.140781198,-430825.204311407,-498442.563949782,-365580.554408212,-414696.05449809,-268317.129378193,-316069.9174779,-321361.437994125,-102440.966972456,-132626.389971541,-289781.163642971,-227108.78534865,-184470.176355334,-178127.591749824,-226810.051597407,-245830.542914889,-315938.167387177,-449291.360459238,-661739.630434483,-190066.036163967,-214192.429174719,-201888.593267069,-174464.580477427,-221351.491489034,-221756.103845633,-557398.982695612,-508590.746707738,-538738.770568957,-575010.268510501,-489997.769911397,331527.931640773,286140.465932276,244680.763701692,-399618.160849032,-476943.161637303,-509505.744761593,-595002.562821573,-454435.835469387,-542820.478785823,-434420.886853925,-218263.400036873,-29611.6099850981,332569.313332189,-473017.470226561,-521015.606146107,-455457.27508521,-511489.128492483,-661965.763488084,-593719.768764317,-450365.474110418,-384446.900479625,-472123.708126653,-539709.678716604,-415418.284330234,-524421.014592733,-374008.864082144,-351175.899173785,-301657.634643436,-368391.984390227,-587918.906051601,-477358.917236581,-445554.418711045,-508249.651653472,-561958.322808006,-602319.73846285,-661330.573972813,-615227.624609453,-352671.293239333,-265625.717507703,-262266.173793397,-302293.158265864,-565790.766805321,-661216.911743009,-625372.626886274,-332628.669033625,-622777.990632243,-557702.456722047,-608039.029560548,-661384.743313418,-661351.852139086,-614954.457008073,-566891.660479503,-603557.252354439,-519951.298394945,-544854.930837775,-620949.202889112,-661439.391853548,-660884.343790095,-599102.235464663,-596238.667409525,-621294.250569852,-622310.247601949,-570204.075900994,-620874.292082434,-547127.580638348,-524897.843485548,-540817.631441848,-661619.745581486,-616137.029083384,-612622.702123479,-564941.308612068,-5191.4986066871,-471078.22861689,-451917.361021967,-263370.734563327,-128143.059528056,-147664.666696856,-661356.133776758,-624720.710594744,-614587.796013399,-593338.56154966,-603828.900375194,-661521.15380925,193177.997963002,273230.923042801,274615.489780787,235911.554876196,273396.263542924,332037.947420852],"Archive804_field15":[0,22.0190555691045,30.9157658442635,0,54.4254336748332,0,39.656833955693,0,0,39.7110106784077,47.5113856122272,47.5007147143793,46.7847987405676,36.4363056669616,20.1494476808308,28.4994811343468,31.5954165684988,27.5350839814199,0,46.0709513115372,-12.4020671932408,17.6390871886898,10.0251620302058,17.718208559075,28.8592603659664,25.7239473879434,33.3331747325817,23.3282865853259,29.8034078713869,34.1030066057728,25.7465339649749,33.0443452767909,38.5301187713246,50.5129708927034,47.407400113728,38.0748440246796,37.5280936900394,43.2423482007654,34.835764203764,40.3736558385199,42.7514085243639,39.3672129308094,48.2049117575631,40.4965436095238,45.2941565677809,46.0715743183484,39.9217115101104,38.1445944522119,37.4959853155494,39.1059133922348,33.1808207016651,32.6997361125144,51.223612049509,42.4624777301621,35.3932032529597,48.1295717829741,50.0439587582317,53.4187352814772,46.9536693354474,43.2624171375809,41.7115704422966,40.4248736666845,41.706153863481,44.6839834452873,43.1497330287857,36.3866575998457,34.5199654568782,45.2104737780715,31.1676201560409,40.1912282032197,42.1707030447876,36.7692116028543,39.608420932125,39.3089445561446,41.0783683172779,41.0158889955338,33.7595702534051,36.7775611879789,37.0622601324866,35.5184463144268,35.4069138937134,3.98935326606247,27.5544809985563,31.5159617847132,24.8950358100883,29.2247769116127,38.6366373967108,39.5074896027407,38.1848186754954,34.2652312950011,32.9348623677191,35.0029980310837,35.1256933062158,0,0,37.6386281113718,42.3415352045385,44.9751807482121,40.6126831096517,35.5169738696038,31.4889315323696,39.8547218127199,48.7737987996655,0,46.1195170740008,0,33.9741861604243,45.9295287033892,43.3624549713982,43.5157826941436,42.3453739325756,38.7249763336549,47.849419679623,33.3120282778117,45.433125274482,39.769915267889,40.6552886080381,44.4866121793599,53.1440837320367,57.0326088060793,35.2700962147331,0,0,48.6124745015353,49.8245741079414,51.4997675918419,50.5710522728202,51.912821892253,53.7525660839091,53.9509306012496,53.0081780510918,49.2725926981852,50.5393030662687,42.9651782182869,46.024524512723,44.6451765296563,52.9841321223926,50.2119372566786,65.9136753761507,52.4935069279293,42.2895266164116,49.8920024996128,42.9621714731697,61.518917133994,49.5522834901305,54.1927924079902,53.8321325839375,53.4997039804345,53.1434390387749,43.1769102689836,42.8871523287252,39.1915973098892,54.9050546544225,53.9525966181162,55.6491789662098,46.9928270548178,45.0945702129031,46.9160359713907,36.2623126693844,54.244502209454,54.096784223722,54.0727677921341,52.8920459455074,54.255797621869,54.1209774904339,52.591494536537,54.2404140628899,53.822075772724,53.7663708933089,53.4808799393037,54.2605689836058,54.4556734718849,54.1866478572879,0,53.0078727578885,53.7468920437427,52.6429277465991,34.3314830136693,15.7441276164939,29.6944436640869,26.5545118345582,21.8900896370874,23.1197437382297,18.6633527616023,12.9073510712174,22.0809530339314,23.2199709536564,18.5806016286005,25.7129937718527,13.3164813811526,19.5178270045343,21.2429505862953,22.0661269372023,27.8586321320246,26.1484308478415,23.8119965059206,52.8459294042174,50.7795630613081,50.5677012057384,35.716532955772,0,51.9946323444174,52.1364257861809,52.0590874085166,51.1024865617975,0,48.705576373236,51.583956332984,53.1690933579567,41.9922795309619,42.6486035456349,39.8632471479295,1.24100779713125,6.43245173238571,-12.5152617398392,50.7827698057038,49.7390229810653,52.3808860045,50.8089507589998,53.4645954873823,49.7602164893053,47.1232531152724,52.0116320233119,53.2553482715718,49.290093523898,0,49.0098450547538,49.8931594721261,45.6564365263097,0,30.7459288694122,0,34.6387074745371,32.0594520612822,37.8162245242303,0,42.0901695543518,53.4891985262279,45.8296446356908,0,44.0976126565337,47.4908465166871,40.5214974461916,50.6812140765108,50.0202176159109,52.2205515068294,41.2909430250325,43.6544535419365,0,46.6825866610567,37.0200175498294,39.8853597880629,40.0201107196143,40.6725014813054,34.0068348121401,0,31.990271340629,34.0032486250732,33.0958944249116,35.8851448952668,37.9950810705167,49.286697867726,56.7493622805901,22.7951605519136,48.021896647647,42.0141233911566,43.9105997676873,45.8106285327097,0,44.2477209469557,36.2288348808967,43.4947300604238,40.2309833110412,0,40.0073570996175,35.9661749767454,34.1520991419636,39.3479774926514,34.7623025327151,46.444872795787,39.1661987236657,0,31.3606139491726,31.289666938222,32.2166520152274,0,0,32.1074310093051,0,31.5521392502084,38.1931725273198,41.4388617289575,42.2289049758091,0,35.9650071372416,31.5245234419057,41.0866698815494,51.0936555668804,51.0278771306322,0,0,51.9650447208969,53.8495431759418,48.1298335053633,54.1643436673334,54.0990266224268,52.5086549276449,0,0,53.0038246313374,52.224498797092,49.5611405917077,45.7581165917907,47.0344089038026,52.3513246417575,53.4951953883092,52.3675899644016,49.8196466801863,0,47.8738158843199,50.1775450408065,50.8756836551541,-31.1562283751414,54.0836913110921,53.1801142653912,45.7119175994708,50.6108726901459,52.7629365753367,0,44.3284173246171,41.1782267102536,38.1300097276245,0,0,29.0380990639821,31.1914957124838,30.416888906462,29.9385996202242,32.8029484150117,31.4146427820649],"Archive804_field16":[0,8.85798164434062,1.50435937550194,0,3.88877978321586,0,3.90744159534859,0,0,2.43214213735994,3.51318460122744,3.51571088028823,3.04385086229983,2.2652223373934,0.0836804802478315,7.68238063906065,1.58862409248,1.14409888242197,0,3.30321510703229,-9.82639633484822,-0.142739973800834,-1.24693734019656,-0.250455832674864,1.23744638961042,0.83748768579309,2.46209556379365,0.538738110783665,1.3725379415429,1.91177653503561,0.831329939305769,1.92184161382088,2.37046615582223,1.54902534226097,3.57794986724716,2.35522683721437,2.22626671735377,2.45909047823963,1.98464884778097,2.44656872408026,2.5161740373261,2.94330532443391,0.238891185479498,2.89319267760695,2.19312547755531,2.20986548890994,2.5947540179743,2.58208731255779,2.40497462522612,2.68214450531875,1.78123401650464,1.73707223509272,1.75590195173913,3.29630511141277,2.08859284083421,2.34705310496464,2.81708599563973,-2.58785484521194,3.81271591226522,2.75398995717845,3.04033973778444,3.63932886811673,2.67650874489542,2.933511100872,3.7413628372264,2.19217656836318,1.98111718755577,3.68744905203181,6.81126558157086,5.01665002309043,4.3213128820622,5.24018392422007,4.4725509905174,4.86825278829782,4.2544109235199,3.8632311230915,6.3631018714044,5.3530418096503,5.59745119393721,6.47906326683425,6.2019388331303,12.3050659998808,7.8348942651555,6.98048844118196,8.24980664701598,7.32063655790096,4.52782640063641,4.19519586698867,4.79203690986832,6.00982949351516,6.40874848471754,5.83330686715444,5.90497909356126,0,0,3.08309275937892,3.35867427193943,3.73583389986788,1.59706619113364,2.77199740399523,2.46237319380468,2.88485390998808,3.45476945216195,0,4.1311401611355,0,2.51469212345167,3.13480589119412,3.23775997185405,3.23328993038578,3.13503558151803,2.85941106374312,3.53014077279341,2.45062486092401,3.39370534267852,2.94189315284466,3.01597709352134,3.28738687408653,4.18068171207018,1.75040565992108,2.63645918494376,0,0,3.6063844283389,4.3383545015741,3.82790071459653,1.85169437809093,3.75005975719035,3.98547303915301,3.0250832409732,16.0055056299175,5.86261450795316,-10.3155356243465,3.2134610765486,3.40362253612165,2.56700937461899,2.60913350213417,3.45646311775852,5.01996479503105,5.04447426224054,4.19095384552282,3.90085060948742,4.84641167349884,4.681102297057,3.61322598240812,3.66123347825349,4.51888476508558,3.88470921305709,3.94759870608131,4.51162127695549,6.07442303455642,5.5696435913774,3.91505040249912,4.02271047045882,6.62412251406693,1.92261587522032,-0.65050353209922,4.43698237421567,5.90097952790627,4.05023524124621,4.01182903637224,3.99713361560314,3.9102640715185,4.00447995158943,3.9923399041735,3.86974837340372,4.01944714128999,3.98009728396201,3.99753010650079,3.96503770438629,4.01022927683542,3.93841852535664,4.04091411491412,0,3.91061820043649,4.01825333413377,3.89347073476381,6.88366613677531,10.392392576665,7.57795932765867,8.34966144065496,9.05436270829182,10.2779375550667,9.5452288318417,10.7545202373155,8.87067528015049,8.69031323400932,9.60606907829078,8.11133670052747,10.5959305179145,9.38397227794389,9.01942569532105,8.85276552746204,7.59020299105429,7.98365936062112,8.48999923420583,3.94542978653933,3.75215045201641,3.77720712060259,3.99659575498975,0,3.84672992316988,3.83363918019952,3.85819481973193,3.77562015866836,0,3.63374133936166,3.82771102654427,3.97833009055415,3.02952790765686,3.07039176903381,-3.62191114830534,13.1293341610629,12.3784012517896,14.6133613729413,3.75658881321105,3.68410034949123,3.88049154006389,3.75664473346757,3.95331637831354,3.69582407990453,3.49879236103504,3.84934904052875,4.04216739455983,3.64766399160421,0,3.62901578926979,3.69833940502976,3.37281376189912,0,3.70389827675749,0,2.63119029500627,2.1586161668954,2.25769620249194,0,3.09660280213715,3.95969657773421,3.37051196867977,0,3.10058706647715,3.3932132706275,3.16477215536299,3.42316562181209,3.78769490260119,3.90060421806628,3.1363484613725,3.25296449220596,0,3.4075157778129,2.67491454583921,3.38113328983699,3.1163854172951,3.24639540895229,2.50441671634143,0,2.39720681389097,2.48908975295016,2.41413136539769,2.72778420355343,2.79966010306341,3.6835659762569,12.0525567705754,8.69653759336019,3.54657940365692,3.06313859075477,3.27480165068016,3.30499380242218,0,3.2646156997598,2.69795275434499,3.21738041878663,2.98355316209779,0,2.95687133084766,2.66732883517024,2.5049065754053,2.92678161367052,2.56231080541511,3.44581031287645,2.90454634445186,0,2.36928807572316,2.29174212939375,2.32924831832716,0,0,2.58874907680447,0,2.32527747951073,2.82863377766932,3.06520574089402,3.34484900000778,0,2.73675175116659,2.27290853792519,3.22557614825811,3.66100686682098,3.83028234655398,0,0,4.10787472978477,3.95734654729062,3.72558619572207,4.00003983465116,4.14375830612846,3.91657605178226,0,0,4.10021119043123,3.99738001033364,3.78085984969538,3.62135845271352,3.57228632761432,3.77259529217206,3.82606298590889,3.79932479977003,3.69812688865176,0,3.48251027910867,3.7628212479216,3.82510839197071,20.6218690823597,3.94104602998672,3.90653900724368,3.43873627311789,4.38347206884698,3.91792915641393,0,3.32518445526118,3.08293036508872,2.94537000486237,0,0,1.26214664343994,1.53958608663815,1.43961570363192,1.37777973856192,1.74745904240512,1.56910304737197],"Archive804_field17":[0,0,0,0,54.5641864128479,0,0,0,0,0,47.6410981069502,47.6306426722402,0,0,0,29.5167646806082,0,0,0,46.1892171918225,15.8230634074182,41.8105797230473,0,98.5594817880975,0,0,73.4441690622648,0,0,0,0,0,0,50.5367164338768,64.0198987140296,0,0,0,0,0,0,0,79.8688024776166,0,0,0,0,0,0,0,0,0,96.2319706143028,0,0,0,76.3792220676847,53.4813824781337,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37.7646896858571,42.4745370350538,45.1300713301203,40.6440727509419,35.624982841566,31.5850611966453,39.9589943923926,48.8960006679262,0,46.3041701596087,0,34.0671249409003,46.0363835991808,43.4831644522553,43.6357365843395,42.4612663681506,38.8304007663273,47.9794628726962,33.4020476945756,45.5596982887255,39.878576902114,40.7670039324883,44.6079093396753,53.3082707963348,57.0594636077274,35.3684973391634,0,0,48.7460632852273,50.0130933338369,51.6418327123907,50.6049414588157,52.0480933848617,53.9001146190881,54.0356737845996,55.3718624462422,68.8861076007238,51.5813089174879,43.0851815757999,46.1502058824296,69.4372523458992,87.2964955856916,50.3307637569018,66.1045584520154,52.7353296204259,42.4966840538823,90.9724205790065,73.8167983425323,61.6967574841234,49.6838424549291,54.3163270072435,54.02146627087,53.6405564071079,53.2898550233742,0,87.2655101683388,0,55.0444606319222,54.1023555990522,56.0420388520494,47.0321405679953,45.0992618291222,47.1253779174017,72.5122183500355,54.3955000478982,54.245339298091,54.2203033359556,53.0363902373708,54.4033770575677,54.2680291002954,52.7336728292281,54.3891392930185,53.9690375574241,53.9147742830222,53.6276611748025,54.4085589340265,54.5979075950482,54.3371124821133,0,53.1519285541558,53.8968901163974,52.7867119273034,0,0,0,72.649417846022,0,25.3013547247427,0,0,0,0,0,0,0,0,0,0,0,0,0,52.993005866775,50.9179993490703,50.7085761865266,35.9394421772173,0,52.1367348779433,52.2771812851641,52.2018605901608,51.2417743680021,0,48.8409382175498,51.7257761920102,53.3177231210835,42.1014201607227,42.7589837345101,40.0274495008504,103.449431393817,53.901033381152,0,50.9215246104301,49.8752744603583,52.5244270145704,50.9476383837756,53.6105556865107,49.8972770869527,47.2529632102757,52.1538814832053,53.4085314979924,49.4248800928263,0,49.1440196553939,50.0300417395969,45.7808482769094,0,30.9682257239177,0,34.7384976341103,32.1320414886081,37.8835588271448,0,42.2039254338775,53.6355624186597,45.9534185710347,0,44.2064823545426,47.6119144665649,40.6448955968283,50.7966881119574,50.1634209660612,52.3660263237857,41.4098859883438,43.7754850576512,0,46.8067843495268,37.1165309157149,0,0,0,34.0989283853507,0,32.0799635435521,34.0942294949862,33.1838252471635,35.9886708675862,38.0980876455475,49.4241564926095,58.0151208217445,0,48.1526819928416,42.1256380646454,44.0325458928884,45.9296926899796,0,44.367989865068,36.3291539385651,43.6135653184686,40.3414626364035,0,40.1164767915068,36.0649467706914,34.2438378800335,39.4566772977189,34.8566078963452,46.5725221319306,39.273750927671,0,31.4499862202641,31.3734814627338,32.300744028562,0,0,32.211624420385,0,31.6377054575907,38.2977753498789,41.5520727235798,42.3611665359768,0,36.0689831923406,31.6063552384807,41.2130899526307,51.2246484660063,51.1714305771611,0,0,52.1271571029959,53.9947580043932,48.2738113862552,54.3118444134592,54.2574917812615,52.6545193718439,0,0,53.162177883865,52.3772595842363,49.7051461918588,45.9011924798359,47.1698722760256,52.4870809531755,53.6318439698424,52.5052316213712,49.9567146420095,0,48.0003138028269,50.3184344953813,51.0192771566752,37.362709363936,54.2270920264398,53.3234057454621,45.8410767519358,50.8003470641345,52.9082001671544,0,44.4529575412809,41.2934718162209,38.2435987623325,0,0,0,0,0,0,0,0],"Archive804_field18":[4495161.99618684,8995.77,8995.77,4500501.77707749,8995929.74632742,4497709.7796116,8995.77,4499206.02092645,8972657.7820808,8995.77,7871155.52920136,7871319.96456198,8995.77,8995.77,8995.77,6469321.60546047,8995.77,8995.77,4498547.33163188,5554861.97437584,5554578.27293027,6420002.38259438,5799294.2704073,6349043.83442342,8995.77,8995.77,7089315.07512161,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,7748428.91008001,8002018.53303069,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8413312.25779204,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8694077.12453119,8995.77,8995.77,8995.77,8548560.02706166,8992073.62930897,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,4497167.61106796,4498648.71068597,7168755.17472733,6975340.84662058,7360197.03318562,6743867.80296349,6263963.7757351,5515802.2733101,6500726.04409015,8010051.81700366,4498773.6664917,7978741.82141685,4498126.23660852,5661700.23643503,7584219.60797392,7236137.82143942,7209602.9955486,7037334.77008223,6437955.8844188,7928491.8244142,5520202.35130484,7536668.85325237,6596543.39727535,6737858.04772468,7373543.16852872,8742152.34350377,8311340.25909055,5786662.96747496,4497943.55349357,7849618.82310168,8061650.3113461,8399210.39186129,8535013.68739204,8575589.65752759,8600485.5380436,8905096.61810048,8902472.43130215,8663050.52867377,8306915.93039798,8849577.68696243,7130207.01875573,7635182.39815589,7685795.28141616,8660606.75701986,8730418.27925825,8898431.76851655,8974280.43356277,8555513.67825941,8524323.61781583,8156279.31571577,8721341.85232078,8277059.60627259,8985377.8945111,8904028.12688132,8889033.23633686,8850745.8116896,8995.77,7902791.01978899,8995.77,8954899.09074696,8972800.43174185,8201064.45641484,7360659.74313324,7875879.62651935,7797518.7817006,7395469.28465023,8990280.51171223,8969393.34014158,8964830.3124047,8769148.40704926,8990368.00747235,8965175.32482083,8719699.87210802,8992640.78072737,8906369.17042969,8915213.06449567,8870613.35738231,8991019.70478631,8994448.54215973,8994299.08115407,7853658.46394827,8797828.32092306,8926938.18695549,8720353.9616558,8995.77,8995.77,8995.77,7078773.46353799,8995.77,6672436.99111721,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8758539.09493174,8414933.41032396,8398524.22666438,6151404.29446466,4499169.4123705,8619871.48377422,8649949.1636954,8591537.60167974,8468803.05576557,8691652.79849261,8056011.34472684,8552643.79399955,8826648.16446576,6667671.86386082,7156922.67431354,5679678.87035732,6197598.1906396,6256175.57389346,5618793.14632664,8418831.40260739,8246943.52183755,8684991.85812991,8438681.80782604,8862119.15023454,8250473.82803521,7795640.21922352,8619641.90787594,8838236.64011523,8174232.67108853,4498951.99594484,8125455.78979514,8270998.77915539,7568975.12124712,4497267.96325507,5306819.04617338,4497452.53521755,5750805.54644231,5303711.34333866,6166697.62588431,4497638.64986586,6981568.55902852,8867299.0487177,7609569.29856565,6455861.44227338,7289061.12746384,7865019.27957805,6732178.1476012,8444092.35934202,8285167.10988515,8656662.41538599,6849736.22937128,7219529.65914936,4498807.65916092,7775931.68713284,6131798.13454551,8995.77,8995.77,8995.77,5635988.97753551,4498832.05113266,5311010.17794543,5668685.09443127,5491407.22799243,5968905.43712366,6300550.27863984,8192993.63126915,8975099.50559584,8995.77,7967727.13599222,6949227.97840735,7287895.24250311,7570748.09510284,6449283.13580531,7424930.76631298,6011342.93575642,7211230.34753723,6680255.63209023,4496452.84850124,6631542.40473863,5950612.24976911,5653201.55908729,6527832.22235314,5770724.42150344,7702331.62128486,6520438.42873812,4497034.47405235,5208983.52041729,5192177.49011959,5343501.74753941,4498506.28627008,5588141.57691496,5366805.39259085,4495922.66035231,5233749.19497831,6326184.29354618,6868547.17632873,7020390.82539317,7223694.82220473,6080860.50943334,5243880.48283569,6967699.48299225,8505351.36191287,8665354.47200572,8900200.28400043,8343121.24380638,8870290.3314245,8988570.27190022,8129842.37191745,8935763.15245188,8964895.3856425,8969711.91791813,8695256.41401356,8897772.76839413,8981471.11285745,8819670.4317378,8419250.75396813,7773386.71712536,7838785.39302819,8917932.86095566,8846218.41282377,8633046.2963543,8234777.16497806,8343109.68545888,8128800.33955529,8539087.43591668,8502613.65209835,5318144.28028126,8959680.15947003,8810698.94719042,7585457.29178769,8220542.20279215,8693595.81694501,7221188.34330763,7563771.10338913,6949773.35163194,6383564.21695833,4497066.4469334,5547661.79578662,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77],"Archive804_field19":[499.545334374352,1,1,500.436141130724,1000.03518715016,499.991626382622,1,500.255101347879,996.180956101174,1,874.975103402091,875.004097121334,1,1,1,719.520286781813,1,1,500.190165834967,617.770363084306,617.741814485078,713.880192452752,644.839251200017,705.953070596006,1,1,788.179006734283,1,1,1,1,1,1,861.298795852623,889.535168997435,1,1,1,1,1,1,1,935.22503285541,1,1,1,1,1,1,1,1,1,966.464204928435,1,1,1,950.305489735888,999.474242133543,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,499.795333043712,500.127310257659,796.934687250455,775.434394969504,818.237187337059,749.639411196627,696.198928908884,613.091177566627,722.693277394826,890.478654669965,500.149689991014,886.861310290623,500.046847915029,629.403227815576,843.098552931725,804.377200112367,801.45895555364,782.298271701004,715.652011606173,881.367606446475,613.665496924068,837.801549566857,733.300064508917,749.012813211419,819.672368353801,971.836303531798,923.97745565554,643.288491094332,500.008679458664,871.417362938462,896.165765174655,933.625844528175,948.782916095955,953.303026358724,956.070524306589,989.921454932884,989.64799796787,962.847138458578,923.372674604237,983.684636492176,792.630864494746,848.759735372442,854.389080967764,962.73079890636,970.336675500252,989.133978144957,997.583371848665,951.225171555045,947.656368740225,906.780331769093,969.549960489817,920.04977820385,998.778183421902,989.818633950811,988.125688507705,983.842374685662,1,878.571740523796,1,995.525949071859,997.426628542217,911.613820690443,818.39480767518,875.45162745197,866.772062281633,822.219331761878,999.391851783476,997.067881732411,996.562625837038,974.811777604806,999.397811245832,996.596240500253,969.30575764181,999.655463263822,990.072043513574,991.0538040477,986.080473028363,999.466760869193,999.818187995432,999.844609422742,872.082005554188,977.995732497187,992.358294253553,969.375392355713,1,1,1,787.074979917724,1,741.937406483037,1,1,1,1,1,1,1,1,1,1,1,1,1,973.634228747808,935.441248247137,933.605915529406,683.686493079236,500.46061682354,958.218153836038,961.562337048364,955.019999580354,941.413252200895,964.949255014029,895.529942400278,950.739755271959,981.23375984156,741.190238151887,795.548698494951,631.62340490575,689.269520206537,695.752910249692,624.997578453129,935.868278011753,916.764991868923,965.45532951641,938.091111364478,985.143668203366,917.154027671032,866.576407058966,958.190090398429,982.49796686316,908.666048778969,500.176933085798,903.245444553667,919.428664906355,841.3878913652,499.811904965651,589.888422353106,499.927567064239,639.26074392375,589.486475256163,685.572782822712,499.957915462696,776.08934773363,985.720880506201,845.922211885956,717.114779295574,810.276510860733,874.309186768732,748.354848333786,938.646396383476,920.996837287127,962.295095995086,761.471786778177,802.531072609333,500.153009468924,864.507465508157,681.631243927254,1,1,1,626.535890097493,500.158267784308,590.4064307746,629.997044220666,610.493180991648,663.584115732568,700.390113918122,910.752874657407,997.764912107383,1,885.715600506224,772.474475086257,810.144973716005,841.568512719689,716.031146576102,825.260455945109,668.23274761141,801.614063421907,742.594314968761,499.763155972336,737.175704110425,661.471447514325,628.416424128166,725.645292853193,641.489630670848,856.20863941928,724.883422083349,499.858002649485,579.069220522704,577.148180376471,594.009769522854,500.101469940745,620.563005854119,596.432656948895,499.674441398269,581.856180864359,703.220103832756,763.525146495698,780.474652331844,802.187988805108,675.714658780643,582.833755700809,774.170999391714,945.604290704779,962.958179071356,988.013758879618,926.352143201818,985.604611733516,999.321911384592,903.459766064544,993.296222099197,996.642596694704,996.460511558923,965.540327649304,987.60555979438,998.157189503387,980.238776685638,935.358668400716,863.604030784831,871.506309203814,990.837695398833,983.35290964653,959.64570073977,915.42110672714,926.355628504833,903.284057361383,948.65455204796,945.342324391737,591.669320240543,995.979034489458,979.418588592685,843.209504501483,913.875547255412,966.461613897311,801.778587683476,840.323043199097,772.320615789793,709.462137735865,499.863680631315,616.451537107235,1,1,1,1,1,1],"Archive804_field20":[999.545334374352,0.103616813294233,0.103616813294233,910.797822460148,350.157376788482,394.932975356229,0.103616813294233,305.558131650909,951.361796765885,0.103616813294233,675.03619822125,630.246032605205,0.103616813294233,0.103616813294233,0.103616813294233,166.013444162067,0.103616813294233,0.103616813294233,154.2285333814,235.855956925948,160.195076948421,130.767945996251,223.24528736815,161.389268512672,0.103616813294233,0.103616813294233,97.3236601739207,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,181.455812594243,92.1707995246609,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,96.9050376174716,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.141941077629,0.103616813294233,0.103616813294233,0.103616813294233,98.4676265024478,208.898303676409,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,229.466031968443,607.959666073885,162.374611712961,285.656391381658,231.218917257694,224.813998925153,271.785817339574,307.837252134626,370.654423049647,338.048287651397,456.717383050642,257.510507278825,380.982209596359,425.085112643382,296.732055005675,357.117055910398,494.425238690589,423.935527989189,471.361040333668,441.451368619113,512.335905821954,407.288975470266,580.585303187777,524.811635809253,574.75632189123,300.753219415934,196.606914913933,366.173538506082,532.208703896592,929.188623935529,538.486674049028,299.010725352745,407.192914254695,244.278625196301,348.331444932188,409.108769045727,218.711066305608,169.480772150424,95.6769340254635,146.256943234208,666.035096321988,528.538684295352,108.116432322605,120.872353813265,277.261303409245,225.23683367943,285.609715944078,170.443940596834,115.705176749005,93.9576883358005,215.444729631383,257.901814006875,263.623448496485,280.867581581062,344.471299744872,378.315169666982,0.103616813294233,102.730215009918,0.103616813294233,343.801848576151,423.379436097463,192.853911947851,256.558422980857,239.520671639931,358.23640170108,155.493180900902,409.842382242279,524.72877502915,462.524582740134,478.440258959848,494.394361854271,633.358172486885,503.622525868171,566.549515934799,479.170233733501,651.423726090336,569.29496252321,623.615524808781,750.752664629488,684.837849558619,974.672425886544,734.346482368011,693.75931760071,648.752792000734,0.103616813294233,0.103616813294233,0.103616813294233,117.065617492919,0.103616813294233,203.581885651797,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,422.473800555795,484.440348136237,719.093742914228,332.904570185329,244.137303040549,588.346868405276,701.469453441156,758.772693964528,661.618873671367,962.584885512563,814.250564872518,579.229066295182,840.297077682313,274.721406518549,334.74272774171,257.852644995256,202.151451581472,184.299427565072,293.041933291839,543.522777958753,599.568688699884,531.844623156634,718.137359772354,581.988389392391,662.398594989244,719.96562076277,660.0737740517,745.527657228401,612.144999817818,697.647607572602,495.508367829454,551.138456279554,564.712248616554,319.120922560959,352.835041589313,546.133578794445,463.782508625867,414.486817043399,401.827125546246,470.531595814602,478.413971315187,525.98326257436,669.941365447052,919.931250458819,407.846237746179,432.622914038763,427.020932714118,376.918991315915,435.631302650946,432.218529950523,795.086433024149,737.296520963552,759.250028041749,825.099128880843,707.585537083884,0.103616813294233,0.103616813294233,0.103616813294233,596.46422100795,683.622954978834,725.583842510953,831.298868890721,661.427538616618,771.71807387269,641.740516211999,395.806795007043,183.588982427982,0.103616813294233,744.571251642094,811.114295523102,730.000102289203,793.975885816046,986.07635674228,895.420623164992,732.221826069591,644.353849788424,754.22906673805,848.498493215738,686.04978088357,822.26168130806,641.497644505418,609.136794793494,552.504715637913,621.019513482421,896.621118199764,772.961008514588,731.657977209118,807.216153198546,871.104071076968,924.469138562446,992.206403593724,933.914353773697,621.512784506773,512.028223979925,503.78962725455,546.552905819153,865.62714640014,980.693304054375,942.621778407172,595.659002543744,931.959146628024,841.331194337689,896.787005913727,956.609494461241,968.652668617262,899.626806007815,839.806646171776,898.876509441414,786.178647466071,807.158643921783,901.640524286121,940.766378480194,944.99650554218,871.837393868737,861.635167017539,916.214949705219,923.963379223258,865.111622299634,894.547559869148,804.472069803606,773.574071593677,786.27229642286,935.041784418812,875.709691482333,874.374189036211,820.34960968073,199.140859935062,716.001343083348,688.014954792676,495.036821335692,325.444951362182,341.110428014674,924.259953763632,878.726529014522,862.61096739554,832.474190611123,834.593030582439,915.228113353569,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive804_field21":[-659505.49374163,329106.447179826,329042.737532017,-657280.877424434,-163196.876478789,-164090.999129707,330829.367178181,-163985.57003708,-659287.359279539,86054.8438093705,-414391.362689574,-412035.832278715,86692.2572165014,331467.031505858,87065.9542605314,-39025.2627248074,211333.286627839,86322.3817020042,-39221.7472724263,-100936.496738152,-37262.1451775681,23872.8745576662,24435.1652200537,51772.6242666035,210921.887698888,129931.479793606,23431.6047967541,87197.7560013935,148435.530797803,120862.039347627,148382.602462848,73070.9958778109,47184.2870371092,-44350.2373669332,16604.7444588827,210713.840567074,152859.016018348,126993.42344473,214981.283360028,156298.810107851,94988.0382334612,330678.282320827,38539.9974876683,230117.084923626,78284.1530409894,92725.772958392,206629.158471872,330916.00273757,278561.973372474,265654.133637634,171496.481004005,331546.009248619,19650.9487620805,181085.841891024,280932.169606677,66038.7525191562,38197.7638439934,-45460.9889375836,60991.1252420057,150735.906738591,201132.213717437,260969.297118171,175737.85797572,125865.519892591,148422.059073467,241371.646369168,331533.261995743,100121.804754608,331446.720335143,140271.515469285,141253.226835115,330857.30835668,233950.565174049,193515.718968709,185420.446305525,216170.642236633,211170.048161376,262450.912193978,188050.603271887,109139.46495685,157759.023459391,86406.601837606,175700.453225852,180076.313289406,329833.572230917,260159.927520155,331335.777586938,283807.044204298,289005.009937081,330622.249040831,278788.716548586,293225.535848387,242794.402490901,-101254.084417176,-413939.274905752,-32177.7041843567,-136130.783171637,-87485.5966950763,-85469.3346728504,-130014.823918926,-161192.264900601,-207948.349849196,-171020.278150127,-288218.314873768,-105256.436854488,-225854.317574138,-259108.595480777,-140334.189281895,-192521.276608082,-305899.259236841,-250102.948254248,-289870.834547157,-258666.678203632,-330337.551517098,-232109.622956247,-382161.795945296,-334620.124096073,-372358.630864757,-131757.651188025,-52069.8086916383,-207655.690001547,-351451.007287375,-659556.961438793,-336227.903926953,-133302.807040847,-223911.459669346,-87324.9136049949,-174268.4565494,-217833.65114464,-60049.1801498769,-24864.4511647393,15171.8601609695,-3014.72124383457,-447658.157344499,-331857.149583362,6280.27091995422,3174.39477792336,-95461.4003310841,-54908.5904459726,-108236.604088925,-3533.43128060924,12559.6450979871,63042.8785603582,-42496.6938211405,-72752.6216177462,-94677.9909044816,-111760.342268499,-165365.557452,-182956.101678379,97250.0678764388,37336.1335549878,108151.792443818,-154470.750962999,-221591.244155048,-18594.80924371,-64122.355483775,-55490.5208980499,-150275.593333205,8296.84281614732,-214963.146758458,-312360.461895446,-259630.884431634,-277760.181356388,-281390.12511503,-394627.764354873,-281458.315220337,-341776.483091261,-264811.27574641,-416983.478901322,-338594.468071982,-389593.483961223,-495519.510836406,-439950.868970306,-658830.424912981,-476631.291241305,-443894.479841622,-400576.225185637,64378.9784580477,69352.6920230278,118312.468367546,51501.7121580869,128683.432990011,-14983.0641450241,211070.887185793,120616.716252333,222596.069753605,183790.583854917,172216.77583323,237721.133923354,148919.575234463,209685.001025308,275246.694721225,271412.190968202,330769.223599466,294118.309153243,273574.94227572,-231262.812935572,-287036.909048511,-456447.737647668,-120063.173526012,-38756.8847722525,-372467.197275726,-443125.255516882,-491042.096964972,-407483.958691274,-659655.207434582,-530116.216884607,-342174.603313865,-560088.981384511,-74746.0363081765,-127652.622691979,-55695.5034922653,57317.6338798968,17458.0645015608,23448.5349510246,-336742.683609845,-385220.72019907,-323865.946117816,-480845.148412264,-362516.534156998,-437260.371308329,-489960.151688394,-429535.479018292,-497521.73021731,-364671.167773848,-413735.798178896,-267234.628344544,-315136.85106905,-320454.08252745,-101562.588339749,-131280.731193237,-288842.780874264,-226083.42702292,-183418.119429171,-177217.82143938,-225664.397574628,-244802.086287617,-314798.530702233,-448205.021891694,-659440.780392218,-189295.017357683,-213148.714124558,-200850.456926516,-173716.405867954,-220682.832051059,-220506.200694248,-556216.742348269,-507877.885122233,-537384.726540958,-573502.860848596,-489166.461455432,330710.883141292,287612.026410588,245183.060460333,-398362.859358655,-475857.164491747,-508980.57981011,-594217.214155598,-453408.280719893,-541640.611500341,-433472.433651923,-217373.702743135,-28683.8049022304,332169.868804966,-472083.225130307,-520154.01689114,-454321.588578425,-510858.160731305,-659827.022823449,-592728.550795272,-449411.366114094,-383430.450610398,-471164.843023575,-538725.49537854,-414399.498360114,-523423.167405722,-373221.617467832,-350154.323725883,-301162.166674117,-367275.344330309,-586602.138491406,-476424.002462135,-444399.994204659,-507172.42211761,-561053.058123405,-601397.654832321,-658888.286012244,-614620.395869075,-351841.289611869,-265150.155571036,-260852.319939345,-301632.565747829,-564754.62459572,-658702.247074429,-624427.225825706,-331073.747463528,-622245.378760452,-556587.263096408,-607377.290760961,-658976.694096774,-658893.480543431,-614394.667105303,-565736.704298767,-602938.364496831,-518560.585663727,-543678.558916991,-620362.086915151,-659025.636808383,-658243.864868981,-598506.209870913,-595769.100891535,-620514.977552241,-621847.451166863,-568847.631059956,-620045.762891195,-546224.030693936,-523754.816121389,-540082.734822797,-659288.438465632,-615143.116209768,-612306.452021888,-563901.642782428,-3964.11045591209,-470408.899511916,-451115.576593458,-262216.963755094,-126846.448888348,-146741.511956333,-658951.059125288,-624173.164939192,-613934.322069041,-592969.764424861,-603507.351928965,-659088.313173818,194193.274146106,274370.190504271,276320.127409888,236531.803629222,274605.166139359,331410.504602284]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive805.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive805.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive805.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive805_field1":[0,701.046835398908,926.198169189589,0,348.10609338997,0,1142.33636262293,0,0,986.184666282524,128.312690489125,138.489636305355,989.359193906021,1068.37575347344,696.599411954144,411.761905797586,956.636804609296,868.908505211648,0,361.448266010998,473.99945471261,691.491906751042,579.543765278112,721.712275025756,845.748600504942,842.765287603666,814.112428740773,814.164760460878,921.111065331857,955.615364482048,785.087250053381,902.243039744112,919.055694750889,839.964274781857,945.007112570865,1022.12560712637,1000.70801021744,1033.69848324156,998.222869022094,1021.2889829344,1037.06664878922,1112.67108092292,1250.17186616768,1045.11859509275,1089.26578655251,1037.50285429169,1030.7712190789,1092.04479141064,1048.11333712994,1054.44517725841,967.575995131039,1014.12463798481,1146.65320287749,1020.48776098523,1027.80573230265,1033.06737674095,986.323450553571,436.103427348434,866.988644387107,1017.35961548234,1032.72377449864,1070.64887620939,1025.46553771695,1005.02103108869,992.609663770285,1021.43569231094,1043.01304201127,952.749679183835,1043.50614669377,935.84069671673,967.655496209924,1126.67316133563,1045.31280657393,998.986841035325,1009.9744138483,1039.75416721608,948.221208351221,1045.5044930283,963.414445091855,814.576166433673,899.009082284714,337.50049929319,816.584865957563,880.799528024513,897.298411782371,927.911515190141,1142.90930148326,1091.11259770893,1086.76214856782,1094.7512832432,1008.05817127097,1053.88757683257,1004.06874945936,0,0,601.071616844942,324.165316202351,486.921664549192,416.061863417046,299.351952901333,258.049084086993,203.484995248013,312.146532313232,0,457.157630358727,0,172.811751821792,344.082913896932,252.91398144633,166.678674528171,195.953263327532,152.528563554093,215.302878704006,131.55305766844,223.443938055767,122.427786197661,141.850286503054,143.357323408195,418.207687647883,418.307436302379,211.926487281506,0,0,171.82129163697,406.152315826282,264.036786576673,554.618174034253,331.659284573951,277.97447491962,752.369213392621,975.969768189841,1063.73368162469,1902.43280216764,115.933124478071,164.600033198351,896.502421334623,743.476139377449,454.958928678331,436.288769444396,438.843664897438,559.881446309312,725.001441887977,799.152396953147,609.933209483699,484.995238691047,519.342159143256,478.937085614624,351.664648908335,305.174037444952,894.324807847688,681.007333716759,862.322149306067,357.115889465825,267.30061480626,530.616500155181,362.337818682702,429.917635059883,278.325516914622,547.855226048817,279.612290998519,202.610442628975,238.525484035009,221.437891747741,218.7506497417,161.094912008096,206.012470127269,185.25643576444,224.684277247108,154.832821766696,180.482744454432,164.392261846891,132.082707509744,147.336165924381,0,131.942100567416,143.696010394655,151.311293520754,695.558088420989,520.415083546849,765.939995103236,587.080658443086,689.829095872705,110.718170697695,561.108801618847,541.61915549979,744.910606397292,754.053845587633,656.055746768957,842.057740056178,466.087583805961,650.321213899747,636.463905623795,736.624889005168,977.506414920255,893.069192418444,810.735950643714,259.571241581755,206.821481785982,128.1263401715,224.060034006206,0,168.110928649355,136.90670667762,123.606530558537,142.898328518907,0,107.149178929981,169.428155761161,115.520513204191,266.115437616791,269.227467978424,260.182703453203,363.356150176049,277.680229310195,159.692324356634,179.840094738361,155.761030109104,191.667501422349,129.496390263743,175.682279980605,138.395737869484,117.592893537202,146.157708985075,130.811416155824,150.253632454061,0,192.979674924273,172.909456861249,150.859029385542,0,190.553242651675,0,154.874107407423,161.938867317861,175.938754630476,0,166.981551233806,199.379862239925,124.334573402611,0,214.68275418084,218.557545364461,180.500199910612,288.799724312065,232.896759696046,248.113203721846,92.8286479203227,105.011363540994,0,101.349360145272,91.8528972748461,1131.76341275706,1082.7249241485,1059.53029082039,119.05474271432,0,84.5934253407664,94.1942299007684,101.535239575713,84.8622510070891,105.15150363314,258.91821827796,814.147477919626,803.522595517046,116.378257201592,90.6689315334881,107.385212338793,101.763437656562,0,91.6411618697438,84.8011668025192,122.125457062144,93.8098931481612,0,102.537375775726,75.4770043267054,107.370585842792,115.250785600194,113.393067562643,137.916371458732,75.5241758540389,0,81.2251778702218,74.3616130276964,72.1874276847267,0,0,71.1865127097646,0,116.495860221828,140.107302960944,140.072878761147,86.0727040196418,0,69.6247034704615,106.301199980705,82.8930683260874,109.583110030456,105.693219779905,0,0,114.802412707138,118.073666254515,107.260774729051,124.428531242588,122.286411625199,115.459447929436,0,0,116.876700614732,117.226030847386,107.046605497287,96.8398926133597,98.9221891442566,123.837978936946,121.636207009125,122.394336454484,113.845737044157,0,105.294658825798,114.034723051655,115.155341344334,44.9644751415033,138.99200178051,142.891796279438,177.138024533485,347.378415146358,344.903534821334,0,96.4990527027758,92.100486690187,83.2725078814962,0,0,898.291681913367,952.999614734247,891.288450506988,905.522351593527,991.31832158005,977.418869930997,0,600.320594662309,866.761363252061,0,348.409926213465,0,957.263656173116,0,0,848.993706983839,128.376137736352,138.558125148457,894.813733009008,974.658341216659,584.926911947152,411.871024751966,864.529424540967,710.89503257623,0,361.515718977684,474.33778912343,551.657348928334,367.76214415671,552.374890761786,772.488168197182,723.028194392327,652.23067567839,664.650367092335,800.861923163847,820.502808705448,697.808272006959,742.674727559906,768.098903409882,840.724870339798,808.917384386904,931.887476897799,892.317396222762,971.715790942285,905.956449881551,933.344886921332,934.517309945645,976.773170330846,1236.60362937438,942.553763578329,1033.37451033706,1011.98584791482,941.087598627754,978.796382407539,954.318705338502,953.055849785112,858.222991175647,941.287494480261,1149.78104122142,912.922299034789,943.73473601144,1005.89705136784,882.229810233767,436.539589024621,701.836959724344,947.981971952942,933.218937299693,927.072570208575,946.537478061654,929.655718448224,856.451466005865,932.465506117515,962.899402724334,807.016671908236,850.208366706303,740.171611496247,795.918149992503,918.807372771245,875.491584036606,816.693580588614,848.253772154701,895.173880228205,753.370509238439,858.512572994945,767.682629938446,598.466878197625,691.438106825944,228.84122811111,621.423620471532,679.447188449174,742.094526275204,751.592284495864,940.999928317513,920.239304738706,901.36389135164,888.185059627399,820.797035615946,860.666600310621,813.359778127896,0,0,601.451351373194,324.342137686631,487.193152191659,416.118007120167,299.491494183055,258.170432645629,203.555345240914,312.367458581425,0,457.330749753504,0,172.88882897401,344.29570406442,253.034690134159,166.756025994875,196.044021462042,152.57900846828,215.414787107726,131.598784217173,223.554207328235,122.462656313814,141.902460900309,143.421555295009,418.547136477117,418.586090088821,212.025898917642,0,0,171.910314603514,406.331312249414,264.20243115017,554.933540340308,331.89473741567,278.171846761179,752.834431580435,977.369941259296,957.659205607406,1906.0371224613,115.981886578001,164.678633813666,777.796692806427,621.133245039273,455.210267627399,436.37558964264,438.900915311255,560.370052775991,611.323918555905,625.378375452514,610.286189939126,485.127312970121,519.575149889862,479.374782086599,351.904058835878,305.377270423898,708.292857739995,523.132576460497,655.025045145161,357.412225619798,267.481418562054,530.892489708655,362.523944050713,430.149924618259,278.468593604017,367.528615199901,279.801609093749,202.737335575009,238.68642634973,221.577843947562,218.896697235423,161.194054808999,206.138870096358,185.372244805599,224.835397974573,154.924865598424,180.594269845263,164.496555441783,132.168065488711,147.422753355373,0,132.013599379559,143.778641519278,151.400595815057,480.84684823555,319.613153138308,547.305086751725,358.973249666436,486.97975036762,110.993007240409,456.535646320523,376.072490793238,592.369034539007,575.838404350583,495.321582060014,674.437569807795,354.745634731386,516.319388788916,537.278787453555,607.748718585403,800.917140500963,731.47238076926,663.392451265127,259.750459366877,206.946520721131,128.192171732373,224.120735388347,0,168.207024647059,136.984381298925,123.685849746606,142.980593793672,0,107.195954271108,169.52645594681,115.56946680003,266.164938619001,269.354169099676,260.271417496064,210.225340378677,160.706826946225,94.6683952760082,179.940053064447,155.843984065039,191.78058282001,129.562941264896,175.787651195591,138.465362537547,117.650804264022,146.240756431976,130.885428744814,150.333436437793,0,193.088313091566,173.007061960303,150.931750785448,0,190.629313804434,0,154.931719767307,162.005799043367,175.988961111057,0,167.053544101531,199.505860792664,124.387501939322,0,214.797492693111,218.683398990471,180.57276108299,288.98756984046,233.038962303026,248.284717469204,92.8528193636849,105.057932305589,0,101.371083041959,91.8774715647919,969.661238423745,954.304089039769,936.867405044818,119.102908225331,0,84.6279971368146,94.2671400944548,101.587102839354,84.8694671437726,105.185460833362,259.067546754869,815.389169589088,674.708771147815,116.4376263964,90.7115435942906,107.430834887627,101.808467786187,0,91.6898066934705,84.8253096956915,122.181344344571,93.8454325474473,0,102.579770032399,75.4942586725425,107.410600692657,115.28310437412,113.405817160935,137.983625859325,75.5397815185866,0,81.2664853490486,74.3850682673972,72.2029142245387,0,0,71.2422467429179,0,116.54948298295,140.168756084856,140.137796119572,86.0935452870021,0,69.6546458114335,106.341942758726,82.9608982624451,109.604280139474,105.784727975323,0,0,114.913430920054,118.099695194475,107.332256741417,124.50662573012,122.328982042144,115.628786027428,0,0,116.964866653145,117.296140822199,107.175832328731,96.9660350549603,98.9381448210239,124.041071779729,121.695564157993,122.461049253706,113.894761058779,0,105.368624191041,114.201024385744,115.168099723368,44.9956129531262,139.075284175974,142.972243313007,177.22449951106,347.655500305875,345.140824637714,0,96.5947785455643,92.1516383441453,83.3221655392397,0,0,806.054325552918,878.606887725676,826.768492954103,828.26698413134,912.805394110965,909.103277867049,0,325.843949942448,671.008950237154,0,348.781135218247,0,728.09484704368,0,0,723.744174460365,128.45178411194,138.640758256377,818.210842787452,760.424581211777,388.993131369919,411.967475261112,612.904461443036,518.861000782828,0,361.606512575356,474.722449722682,450.748620493898,271.328379184632,384.931845071477,560.805586166923,483.262220013489,579.584065309468,454.853081998912,556.968302514307,627.019596128503,482.816616826477,591.784595413926,670.882654987795,841.659473503222,762.510943753994,755.948793808582,717.431210796145,899.527365414245,681.742565654571,804.148758722772,844.448742794613,789.814724440268,1241.8895483016,798.609409556271,993.041699368241,978.44843461184,797.637413748461,783.671420722276,758.896457889386,782.809216735626,628.426176456365,698.938143408614,1139.50634476909,788.400081424604,720.85165685992,973.49347976602,830.20329780553,436.967757178196,608.817388736999,866.308528346905,809.400734083894,740.459682473934,840.577454109466,851.380105105082,714.811143696233,726.45646856362,729.649554907529,690.50982032475,469.302390142882,537.072880372112,623.250604608864,601.980007118711,641.981848142774,579.278262342783,653.327875104893,712.930829798893,433.770322519285,556.979731151607,497.104935641514,386.943595033568,425.862931416687,84.013467237439,295.750182676304,364.785433186054,367.832936992078,378.997096630946,669.816972316954,686.68924203446,625.580532167535,533.93193060991,466.170883995545,525.33206991934,493.780003856263,0,0,601.851178431327,324.560775275976,487.544388422177,416.199135146822,299.66276497279,258.32245210224,203.642942113694,312.639661443636,0,457.555455053589,0,172.985832366364,344.558057963541,253.185978905678,166.851137537283,196.156229739708,152.641155733537,215.552396705601,131.652893838348,223.690678958625,122.504457174777,141.967287394727,143.499735250848,418.966945868435,418.839526354727,212.149898451902,0,0,172.018373028391,406.561149451701,264.40660404201,555.359138128685,332.185571578991,278.413831635725,753.543698812692,978.898216925908,937.425212926868,1909.58321811636,116.040953421424,164.774459179567,738.928468001891,581.149374543487,455.485789656361,436.454864172732,438.982952704774,560.741882270352,576.764542291993,527.705159817539,610.742764141659,485.336567063067,519.900479155765,479.893772754393,352.205616650147,305.627055244197,568.034130727224,448.143640640349,471.921968591561,357.783801184195,267.704262829836,531.239390608536,362.759462712924,430.437698654271,278.646541535695,322.014430044051,280.03477118048,202.890967371487,238.883520491922,221.748994484669,219.07441728445,161.312247799974,206.292902584373,185.511717115827,225.019936560698,155.034283336235,180.728580448774,164.621079044525,132.26802058837,147.525001932182,0,132.096934095931,143.875627818915,151.507364372193,332.878063893245,155.620473807753,295.011147907969,228.807680354361,207.479723313857,111.377926035451,201.551366528888,131.360162659376,248.330398896843,242.918492160165,187.020091400689,308.371773080105,133.06412415698,209.657400140518,265.788457861693,277.709785629835,411.942510342294,352.852415472872,302.427923193925,259.970122250124,207.099303014876,128.271130829458,224.195598703693,0,168.322517107494,137.075641185252,123.783607577292,143.078982470616,0,107.240152687078,169.644869130902,115.619065960177,266.223412330776,269.511904783315,260.388174656883,87.1429991804075,111.801855015151,46.6436232279658,180.061302074821,155.944066110051,191.917841544352,129.641484257591,175.914220573531,138.548354434885,117.719483561938,146.339530623735,130.971390423852,150.429818884985,0,193.221207997711,173.125757487806,151.020247168643,0,190.723885048975,0,155.001784871734,162.086947540191,176.050163727184,0,167.14234360795,199.658678361361,124.450857287859,0,214.939733976586,218.838649256025,180.661635204194,289.219470607227,233.214494666872,248.495239918176,92.8805572610642,105.113627917132,0,101.395502317486,91.9069115429155,770.726691425707,780.96404287018,777.386309596034,119.1597186359,0,84.6684597843279,94.3489882378729,101.651344482675,84.8777763561689,105.227198814379,259.25283725291,816.675410252219,337.786539423255,116.509874393467,90.7622516522676,107.485213879771,101.862431053251,0,91.73537672301,84.8551625603039,122.249505461593,93.8886040826503,0,102.631942900289,75.5136806916531,107.456910597552,115.320649329872,113.420266235463,138.065139741053,75.5595443514649,0,81.3150637971809,74.4105113031295,72.2177758386956,0,0,71.2928896271627,0,116.614447312464,140.245698545835,140.217914593073,86.1196475507009,0,69.6815605492583,106.386984625898,83.0218711630221,109.619450819738,105.878285964012,0,0,114.976096604043,118.119748434443,107.371875833908,124.599092171087,122.376743789727,115.730448518242,0,0,117.036239571876,117.350736549029,107.256334561312,97.0707671001294,98.962394961802,124.210947537543,121.762315003076,122.53694794328,113.951311334205,0,105.434251974825,114.309716764788,115.18135111489,45.0727410152332,139.172469912949,143.06734986181,177.330651083456,347.9995435909,345.442097062166,0,96.6678497676388,92.1959673727248,83.3781288816508,0,0,555.8326219022,636.610703711137,623.426212689918,593.925508660399,667.411422697116,678.028987979372],"Archive805_field2":[0,69.8263677655631,80.0700632628644,0,25.2144601466532,0,100.595981452345,0,0,82.4130573540662,9.92486116495428,9.72627204681398,85.5823149690926,94.444000254721,58.4881896366081,63.0046673480693,82.742194286096,76.4088519153409,0,13.2655899685443,-14.6755297149941,65.5393471460727,36.0068011495913,64.3187098047942,72.3404532050228,73.0856799991144,77.257183769432,71.7962324324511,79.6590019791924,81.5752954730357,66.652473107408,77.2419450393125,73.8739805933406,19.097364514586,75.3037788132683,89.3559291477161,85.9823892662977,88.6773190711645,86.7030717045148,88.3320374540963,87.1517335359484,98.8773931817687,96.1566903834099,92.4567747906047,89.8940817053319,87.6632270980523,90.5451694726225,96.9548767445192,92.4411442516621,93.2886404640042,83.3549688313685,88.5952190190673,86.3213781555973,90.2900062873244,90.1096677597921,85.7493738905754,82.6411089685732,64.3251082106736,82.2175949521832,89.0189302560334,91.2980438114032,94.8906043154516,89.8520854711805,87.8006899028252,88.3167694545969,89.370869404827,91.6313520050243,85.5088964394983,94.0842381798491,86.5207776265129,87.3453432073514,98.6418147871326,92.8825028831379,89.8745112181644,90.1183904124012,92.2685999860617,88.3743522347494,93.3303808226638,88.5043437778121,84.1836971320378,86.1602009716206,32.0661961086192,81.5113487427417,85.3647243525626,86.042622553733,87.5766347579855,100.087585221772,96.4006585297964,96.010859722365,96.6634774298451,91.7377088091394,94.1412265150293,91.1616046441174,0,0,97.2474182606704,20.0378494883361,14.8980063513461,15.6891916173958,18.4900326712317,5.72757315647906,14.7235560633759,19.4306055985029,0,54.1672582976892,0,6.30243383072556,25.7477621759117,18.0638120975172,11.7114742917357,13.1871414891917,10.6904961975164,14.9100744050821,6.34166466644769,15.1928648235259,8.39699838734851,9.70672626659271,9.87016745131436,31.6234825117746,23.4490377212549,14.6373979087508,0,0,12.2852956131981,28.6930564141994,18.5448044469317,6.71073097577761,24.3047947297668,20.3101399722952,65.4376928590373,105.608498820463,91.2526757741743,123.642087626063,8.08809629607183,11.4993893700247,60.9604743445922,72.3377619178207,18.9854172528156,28.4944869880795,38.2055811116919,87.9297812088178,80.4720541796842,83.4181134893867,91.4055231990476,38.0349671542738,72.4732296616601,40.7874480642366,24.6365853950929,23.0288886929441,84.4169256449726,89.0186108209783,84.4608310274591,26.3435682034598,19.9732291248891,115.837543176209,38.583569251821,4.03005478852817,26.1768333854589,63.9167905333803,20.6987118584471,15.1311040269679,17.3943793629275,16.1219381029139,16.367412767669,11.9217656727235,15.4090340323972,13.6262309730055,16.793807519555,11.4557719905044,13.4884858765256,12.0835432946795,9.71724815468785,10.8512321178288,0,9.90688145258793,10.7482148450396,11.3833081310294,80.0266528564049,50.0400714570755,80.6562171404752,62.9059377062526,70.8210208691979,-28.0068251081548,56.3420852264882,53.4442210638248,74.3105944417506,75.7739994139278,66.0437882847734,82.1666640155324,46.2284635729014,65.3489901194917,63.9265459228176,73.3171644532371,90.7092024997506,85.5189568368742,79.5823107213517,18.7431433404246,14.6097683099387,9.88760716219682,18.3068286635696,0,12.2354712446321,10.3458896568034,9.15709051904597,10.7881034757067,0,7.64824827973961,12.8259050346979,7.99848781870309,23.5172957428547,24.9513510147404,27.7401246205214,31.5315556008946,12.4493888323925,20.053561448962,12.8845195776506,11.1793057354787,13.6810230751726,9.33168226583369,12.6819084018785,9.89273572353517,8.44494350990491,10.4769089623249,9.53939487118934,11.5517418037738,0,14.977999550563,12.9796169644355,11.8046754534146,0,22.085204527129,0,13.5970476519698,14.9957207278738,14.6799772416552,0,13.3423982471914,14.4476750612147,8.88332217977028,0,16.948156975954,16.7921553592056,14.9793914589358,22.0130670597611,18.0041511232597,19.0186965473106,6.30438146907466,7.33132127212523,0,7.27894455399549,6.88378612301162,100.187095655214,96.0360323834807,93.9293034281111,5.57993254493963,0,4.92830905697603,7.26706244211952,3.89365528181776,3.70370153903937,7.90715095056819,18.7356105117768,56.6108183053124,79.1304079593876,8.65266440840601,6.68909028448976,8.39421090537165,7.32559248492304,0,7.67295011012616,6.56409851459495,9.50611538418361,7.44995641023745,0,7.21721358217011,6.12485206436127,9.09232827913783,10.3283172287089,9.7925888573753,10.4016165313548,5.84379846194686,0,8.5264117195664,6.09144390787446,5.57910792709725,0,0,7.69506633844767,0,12.4104285302082,9.75535867906537,10.8737442855525,5.95355239253867,0,7.38567696344074,8.27056236279707,9.79381778024102,9.17390590498679,9.60473752564658,0,0,9.57321852133566,8.60889975143842,9.35253942099304,9.13291910873575,8.41477820268554,9.86172814454507,0,0,8.43263849096198,10.3458703932779,8.45950619662089,10.6068223498391,7.04189234001645,8.70252839108088,8.94629548874829,9.12226227368248,8.77191060140248,0,6.26871804683399,7.28000408590896,8.7297339853106,15.9537017316425,10.2609339375811,10.3676159371212,13.6006834606586,30.998067519025,26.2124862035818,0,6.20992865827132,6.23309459482306,6.03712255260719,0,0,77.5315344803216,82.6238118735293,76.6999772284526,78.1229210177785,86.303393443874,85.0271494395633,0,60.3584471940109,74.2310641466569,0,25.2362420124653,0,85.8607981210062,0,0,69.4906669900526,9.92963228370547,9.73124733821653,77.5648581612436,84.8259195611057,44.5565094207691,63.013929668297,74.0927414883132,60.6736751427828,0,13.2687817966824,-14.6669044238793,40.068553789349,21.872047893778,40.535479475561,64.9646201731748,60.5938261259684,68.2033514902619,54.7698839418969,68.4860027846779,70.0526345302056,57.4526904236611,65.5430517247474,63.2158902764718,19.1270942752892,61.2916193904416,79.632437705683,75.1460378482417,80.2046534847281,77.5809957023488,78.2307258146803,75.7879482135336,85.9232993611616,93.0931267888486,81.8768857915586,82.4887544109238,81.961726672026,80.579770808192,85.55820714889,82.6874289954145,82.8107294162345,73.3050473616899,81.5258038403301,83.8500258658039,80.2261816612274,81.5125912361572,80.5020122444281,74.8493407667522,64.3460577425653,74.191576041134,80.4043088091648,81.0979628296881,82.7507120588782,80.4448588437948,79.5672917109943,78.2848748259385,80.1562964767354,83.5712726410311,76.4167391571059,82.2233751410065,75.7853810689937,77.0346291458533,85.065476187009,80.8812460886586,78.2985717085945,78.9842920818611,80.8305559434116,75.5184861329255,81.091725974745,76.4364124948519,67.6231925562799,72.7188843745079,22.4638738712717,64.344764941287,70.3461482922599,74.0644164647943,75.0045869584985,85.5846819619208,83.4181238929694,83.1182094290665,84.0621477566994,79.7193838759823,81.8691571512969,78.9496965748636,0,0,97.2905504003108,20.0494241817136,14.9102242431775,15.6916083839506,18.4989741269804,5.73139287904594,14.7292723827944,19.4459018474485,0,54.1896820365809,0,6.30566740462396,25.7645848268023,18.0730069230464,11.7172252588883,13.1936531107112,10.694272258985,14.9181661199521,6.34406539436738,15.2006947150288,8.39959831886144,9.71048672336236,9.87478441460832,31.6497778189537,23.4679632088909,14.6449554782506,0,0,12.2918606771891,28.7062153586441,18.5568025302859,6.71073203455018,24.322366371798,20.3246695937963,65.4875340400991,105.735347840673,80.6709366454195,123.895946284639,8.09164829834524,11.5051170528712,51.8690068952762,64.531156241524,18.9970396800893,28.5019263283668,38.2135099144595,88.0043358215677,76.3188942127344,76.8799697342876,91.4496257052493,38.0413990090879,72.5194418423793,40.8227245839688,24.653812894543,23.0441498903073,75.5635241130169,77.8233777987376,73.5521707611178,26.364613953557,19.9867926437447,115.864659354666,38.6026613988334,4.03439849301564,26.1898456108561,32.0151937405063,20.7127561774479,15.1406211490667,17.4062162025574,16.1322900760504,16.378299253524,11.9290599196966,15.4183184961848,13.6347251276263,16.8049430870175,11.4626321270427,13.4967387270452,12.0912313795999,9.72353825738357,10.8576124498455,0,9.91217553884708,10.7543421878251,11.3899368197407,54.8012311453814,26.905413463058,58.6060437204083,30.3839738544387,48.9171917241733,-28.0143675868878,45.6480840315862,36.1866876394312,59.8649033119287,58.6087213310366,49.508020173618,68.184781918403,34.7069990453316,51.8402756836114,54.1369737991824,61.2315541909336,78.8628654525837,73.1068960437089,66.7980934028181,18.7563268598586,14.6188512812499,9.89256102454698,18.3106315469511,0,12.2425966078433,10.3516711265589,9.16294965557802,10.7941845521669,0,7.65151861442817,12.8331961573348,8.00173666315121,23.5234074812599,24.9619344912922,27.7502265415847,19.4535812262262,5.40257947258791,13.9259850714296,12.8918703058845,11.1854151383716,13.6892424233788,9.33658041469569,12.6896009396914,9.89784866152643,8.44920466096098,10.4829654953287,9.54486969770581,11.5577075202575,0,14.986182176005,12.9867424908312,11.8101304736578,0,22.0930981133628,0,13.6018437933099,15.0011134647053,14.6840727659359,0,13.3477771960752,14.456914405232,8.88724320896308,0,16.9568510270226,16.8014004702467,14.9850672573499,22.0271889959924,18.0147638694141,19.0315633540421,6.30605830661368,7.33469363934366,0,7.28061627524731,6.8858121614649,85.991947095464,83.9664303593371,82.4844388881704,5.58237743922712,0,4.93040664212897,7.27314114410468,3.89591844356438,3.70347368961782,7.90987116185598,18.7467545655608,56.6561421467238,67.7189334828291,8.65693216140667,6.6921747833931,8.39761445465354,7.32881612420882,0,7.67692661505235,6.5658475769443,9.51028601280683,7.45262948114567,0,7.22007950563556,6.12625931655678,9.09550948265744,10.3311237055452,9.79368619973001,10.4065096083458,5.84480845625444,0,8.53043218405895,6.09318722258919,5.58016595151026,0,0,7.70045859826485,0,12.415696046972,9.75939896540909,10.8785708109914,5.95458623955874,0,7.38879100889452,8.27326707400037,9.80134042019807,9.17568346905444,9.61279374279154,0,0,9.58249247718583,8.6106162683026,9.35867842907511,9.13866204768139,8.41764061980141,9.87580991210046,0,0,8.43900574920248,10.3522072521183,8.46976746549688,10.6197206850191,7.04247640705724,8.7171185436358,8.95059963109547,9.12729342990442,8.77580927447714,0,6.27328920916513,7.29124182080102,8.73087769935356,15.958637782827,10.2670890417023,10.3735227863438,13.607016901942,31.02059930588,26.2296437839824,0,6.21640001665346,6.23676191970723,6.04082271468864,0,0,68.6145290556291,75.4376072878239,70.277293569697,70.5760392596287,78.6424501014754,78.4511411580471,0,32.7170264211354,53.993278172879,0,25.2639854983925,0,66.4610571346141,0,0,56.6112691503646,9.93524341250254,9.73734555740204,71.2360805996243,62.6341124422425,21.9492673203895,63.0286548566699,48.1020380417797,39.9545411988271,0,13.2718279355688,-14.648016787933,29.7924148295795,8.72045047590147,20.6019848977557,42.1877752879137,33.4940864475665,62.504529254355,30.2087603214612,42.5916120434599,50.8444701178864,33.2194954649839,51.0564866987012,53.3589538153224,19.1675822131395,56.2138951830236,60.9742301518381,57.13376977291,71.2186423542063,54.6500368477265,63.9623174000615,65.7291895696929,67.0697930282085,92.2219496709534,66.6596868137405,76.966218324823,77.1360206888411,64.8806645531796,65.2714895140139,62.2330257717828,64.8223723502627,49.9313631009831,56.7735340437352,82.3370612330401,68.5643155136763,58.5577396016369,76.6517846098275,70.8883054068466,64.3854358549976,68.0186432572571,70.9848164085995,68.2901052400571,66.2322944623988,68.2931522756228,71.6898720058192,67.3436518316703,58.7620219527976,59.6616474776915,68.1946742180533,49.3191755251469,61.3765430204657,64.9646176864701,60.2924196511691,62.8998753771515,60.7153827419778,64.3619732192248,65.8241524057444,48.0951625769524,57.4894727142991,55.2768232000371,47.7955236016024,50.1153690709474,9.00514640088115,31.1447995602073,40.7011671159176,37.7736419595179,40.4183235643452,64.1096045626638,64.4640544415769,61.5395423097884,55.3727881380062,49.6531206180169,54.8112906401272,52.9638388432459,0,0,97.3502623194796,20.0646592115206,14.9254071925844,15.6931955547925,18.5102397520598,5.737510844536,14.7361803687963,19.4648392447354,0,54.2181402315618,0,6.31034546970706,25.7859328831755,18.084695771839,11.7244629159721,13.2020640106209,10.6988821786256,14.9282580355837,6.34716199485839,15.2105534881278,8.40269745062721,9.71524474840946,9.88054493836892,31.6811540055812,23.4783896180584,14.6547961752675,0,0,12.2999308856783,28.7247220365503,18.5716956695041,6.71828235921421,24.3442544965306,20.3425850786787,65.5543127652789,105.863999432973,78.695855284902,124.195129723783,8.09612427922798,11.5122294927067,46.3701900321711,61.402906855153,19.0122289622376,28.5053510861274,38.2212979070643,88.0570116011239,73.60548831152,70.3367823888952,91.4896959671869,38.053348089521,72.5722684225362,40.8659544526394,24.6753983525269,23.0629800817899,66.3863263671575,71.4146664739322,59.5106779206024,26.3906282686002,20.0033937886562,115.936119342518,38.6257610294867,4.03579421476561,26.2066099324565,26.0500333379952,20.7299136532887,15.152150745378,17.4207653736721,16.1450090306783,16.3915636994104,11.9377331399664,15.4295471705497,13.6449346110808,16.8184687747134,11.4708092802999,13.5066353481252,12.1004243288655,9.73087831214819,10.8651538351526,0,9.91827851123919,10.7615158407069,11.3978103359939,38.0730580640157,8.87804621839331,31.2689765303984,14.2309968669462,18.3934971720786,-28.0250096945732,19.5907530158815,11.5013866771209,24.6909740566199,23.9566371648316,17.6211376498547,31.9105758420892,12.6007085968669,20.3720054315773,26.4398576032156,27.8410817009322,42.9980280429301,36.6479342471989,30.8055452771861,18.7726369699649,14.6300584207469,9.89841430803584,18.3150871323809,0,12.2512259680653,10.3584207689589,9.17011575430562,10.8013905386521,0,7.65457618421569,12.8419066299137,8.00503112731121,23.5310028068955,24.9746535308924,27.7637076498816,7.62700649136507,-1.10368496306046,10.0336015767231,12.9008869476997,11.1928710426406,13.69929176571,9.34243811476706,12.6988902912874,9.90402472436275,8.45434383052909,10.49022845095,9.55125840374042,11.5648147085718,0,14.9960791864245,12.9953127598861,11.8166492420075,0,22.1020459852076,0,13.607484474588,15.0070802780984,14.6891914325904,0,13.3542207465928,14.4681778345356,8.89200567668221,0,16.9673614771573,16.8124984945893,14.9918608013367,22.0443884718846,18.0277592606353,19.0472902908982,6.30811386582351,7.33879895671549,0,7.28258673299637,6.88827072627946,67.4617340404928,66.7862329496766,66.9877833127803,5.58552927788066,0,4.93310625017035,7.28030550314877,3.89905409457134,3.70302586257834,7.91316473510523,18.7607875218179,56.716861189375,34.1611771059435,8.66203464116428,6.69575750058478,8.40158241074407,7.332599194627,0,7.68067841485178,6.5680594593045,9.51525947805929,7.45574863731937,0,7.22355341569045,6.12780857334657,9.09902848765713,10.3343144620665,9.79496981963321,10.4123544994183,5.84606178120835,0,8.53483762127465,6.09493307898304,5.5811217367099,0,0,7.70511405742144,0,12.4216136480535,9.76443806988808,10.8843749834955,5.95582514446436,0,7.39173055018592,8.27591999218976,9.80821269231695,9.17690833949131,9.62081820591953,0,0,9.5879239859926,8.61188547515598,9.36216021172408,9.1454213247407,8.42087204991396,9.88425983816441,0,0,8.44417715115554,10.3571966548069,8.47629823289127,10.6305721974553,7.04343255118674,8.72931965382367,8.95556198464222,9.13304630322828,8.78035318862631,0,6.27736850960337,7.29848608200059,8.73217542223497,15.9637099659968,10.2742792964121,10.3805501151252,13.6147028655725,31.0481330083366,26.2507978335549,0,6.22129588067805,6.23996130024875,6.04498882910206,0,0,41.818154748142,50.4342419058293,49.0220141897985,45.8796293933213,53.5198326291831,54.7324595988111],"Archive805_field3":[0,0,0,0,349.018343523153,0,0,0,0,0.298429259900796,128.696066317488,138.830854331251,0.260930114035084,0,0,416.554407261478,0.262319230456843,0.413516750601665,0,361.691865890134,474.226931563264,3636.96559853858,0,5703.53539194178,0,0.417702710463021,5930.32366629349,0.329814785005648,0.258321202063851,0.290375098825211,0,0.268655196366597,0.421189711839043,840.181935586299,7219.14122615728,0.282119275127553,0.302223025098098,0.297096760873738,0.283213761771377,0.301247404812352,0.312474707755318,0,13744.9631345393,0.271146654136756,0.249794521532423,0.345948455102329,0.291092216520954,0,0.390486403892207,0.37947651383579,0.319463783079864,0,8778.72752550665,0.297120725254831,0.385218608044281,0.498600348997454,7906.75191932128,440.822189187342,0.292131986576176,0.294077916381935,0.312742000100455,0.390651807512318,0.305384600833357,0.272935456679167,0.302877372020227,0.26231987569824,0,0.389524509622197,0,0.297343954138591,0.296470429978156,0,0.266880960560536,0.298968943856057,0.312618182593191,0.2735853860462,0.271652500178277,0.322120938925721,0.306310349677731,0.242080144059622,0.298247186944287,0,0.29474814771913,0.301511978408881,0,0.36653815783481,0,0.380225365915642,0.407527456756995,0,0.389855974421281,0.421471445703316,0.262557644612805,0,0,608.887865864731,324.784238447066,487.149874646626,416.357870654279,299.922618008901,258.112820210977,204.017102093721,312.7509250914,0,460.355780054638,0,172.926750224931,345.045144935194,253.558404111268,167.089719764107,196.396615564941,152.902842389617,215.818676447303,131.705907663226,223.959998083193,122.715483913724,142.182101979028,143.696795060397,419.401894475686,418.96440627101,212.431501793881,0,0,172.260044763187,407.164882370944,264.687423965464,554.659158274006,332.548872694617,278.715669405737,755.210140994961,981.667753060419,5894.35547414591,1906.4476603872,116.214991589991,165.001335359215,4272.94187184528,4942.05409951123,455.35523583401,437.218640661314,440.503943728528,566.744604532142,4495.61133909578,13489.9754823352,616.744822169115,486.484788683075,524.37490132185,480.671061840707,352.526827036593,306.04193153106,0.219945046008656,6520.53272415729,0.383829454197756,358.086481331084,268.046000037116,543.113843195576,364.386647100993,429.936824160937,279.554039492343,2142.1046117839,280.377564745338,203.174805503421,239.159055811548,222.024157586693,219.362286734711,161.535563935789,206.58809778727,185.757019755484,225.311192047191,155.256145697769,180.986220253782,164.835883051887,132.43976955639,147.735329238235,0,132.313604941979,144.097530264004,151.738997084318,0.297878783313564,0.374511960746936,0.299226242393445,5484.0434049865,0.264921185154584,114.205508022194,0,0.390620936055222,0.239295875075337,0.321182326534189,0.330734203054206,0.264883259753844,0,0.444661972066009,0,0.400520043917483,0,0.394510023157018,0.404761102212182,260.247238587281,207.336994486799,128.507393211425,224.806874368545,0,168.555721119519,137.297169708688,123.945360652546,143.30509126755,0,107.42188388513,169.913062016436,115.797175254663,267.152805823004,270.381450225482,261.657586923869,4361.85156840181,2036.00417928742,0,180.301177033441,156.161801709679,192.155279176304,129.832271118454,176.139547122025,138.748956175492,117.895816095697,146.532831306321,131.158871513016,150.697160199136,0,193.560222914361,173.396066929514,151.320306934192,0,191.82900706773,0,155.469980616157,162.631853601619,176.550281601724,0,167.513904049588,199.90277371107,124.651592577119,0,215.350884949386,219.201850646756,181.120845906021,289.637684320786,233.591829698049,248.841267499965,93.0425375343253,105.267036690163,0,101.610479231318,92.1105384561678,0,0.392280463828538,0.26637758657934,119.185507193876,0,84.7369145645309,94.4741960437463,101.609934242237,84.9430884443615,105.448450342311,259.595359613332,816.11397397505,0,116.699568385412,90.9154183987887,107.712888069354,102.026853294427,0,91.9619012580728,85.0549118705322,122.494978107036,94.1053341042619,0,102.791145641983,75.7251783031075,107.754975866715,115.712755715518,113.815226667231,138.308173040194,75.7499915587485,0,81.6715514507874,74.6107600209408,72.4027677417054,0,0,71.6012844659705,0,117.155154807884,140.446640028851,140.494426723598,86.2784306387746,0,70.015402017094,106.62255460386,83.4697136583409,109.966526306026,106.128815655827,0,0,115.200956547905,118.38718091911,107.667836275434,124.763351556661,122.575677763738,115.879928596549,0,0,117.180596899523,117.681764273551,107.38043555458,97.4191282949986,99.1725964331216,124.143472738371,121.964852332468,122.7338976144,114.18325060153,0,105.481170200463,114.266942380019,115.485840026555,47.7108542475597,139.370336423386,143.267521995603,177.659543452741,348.759007479089,345.898419005565,0,96.6987181009936,92.3112199764543,83.4911128257544,0,0,0.353178863540115,0.413702207814274,0,0.414293051136334,0.370566198128452,0,0,0,0,0,349.326735976009,0,0,0,0,9.08866032700021,128.759789781702,138.899624156938,20.0072093432485,0,0,416.816024056627,0.234577926946284,12.3884886768945,0,361.764022262574,474.644370833779,3639.92513181927,0,5704.81568421735,0,2.32449206832119,5936.42556324883,12.9992679130602,3.30162839691564,4.25762582248622,0,6.54901010149916,29.7131085713367,840.967347757505,7230.39119342517,0.36112418841514,3.45365386752024,14.9241603344317,0.105248930337481,0.218756063053021,13.0465539101273,0,13760.0598549554,0.451792078443771,47.7186343397261,24.7991119650181,0.942292972327253,0,0.471256109838673,0.373754187105122,1.65354642548749,0,8800.49929943529,2.30042736587152,0.37744173288288,52.6336778831373,7917.41619456637,441.737762797648,35.0993178534686,0.626155462024336,1.25996330157732,0.688045859837689,2.55528644955288,15.1271135790574,1.30009174008933,0.442365887893021,0,4.26588012328959,0,10.7348769754401,5.72259881878566,0,0.60715171295437,1.67652269502397,0.674908223869734,0.646977422815236,0.450522329703422,0.986239263580545,2.0970253712048,6.24183570950362,6.43765531832631,0,1.38847917486783,1.2939345217929,0,0.193942881935214,0,0.235583264737966,0.225721524729794,0,0.521382282276413,0.163285231608276,0.847019146367743,0,0,609.506810215467,324.964277547973,487.422063178554,416.426872264121,300.066673513517,258.234938624916,204.087585908004,312.975379238842,0,460.535565053538,0,173.003984922617,345.262300368786,253.679345459025,167.167397312356,196.48804745395,152.953598953191,215.931157723588,131.751735503937,224.070682111015,122.750515234528,142.234495206702,143.761289905452,419.746657451112,419.58809453142,212.531497619645,0,0,172.34943375286,407.345372730648,264.853848498476,554.985848226056,332.786162016955,278.914441235188,755.760941990807,983.529850832173,5906.52409792284,1911.037109474,116.263929767404,165.080271042448,4281.00279606884,4955.08052471305,455.611338198657,437.403156668178,440.576747897019,569.417758568115,4507.7881304969,13503.3900600592,617.100460506694,486.69803302831,524.622415381226,481.138004791613,352.766604683515,306.24630840471,34.6025716645826,6538.61520386757,37.6895934652583,358.386314409674,268.227341338664,543.487786063618,364.574362790893,430.174451168523,279.697485084535,2146.27225245097,280.567899290975,203.302268053475,239.320701535046,222.164694484025,219.509086268378,161.635122462319,206.715056039596,185.873310727121,225.463052721439,155.348565504511,181.098225435846,164.94061905812,132.525517670098,147.8222519545,0,132.385382820436,144.180477577727,151.828676424403,23.8357779234685,9.25744454083195,4.18178037219354,5495.15798572939,3.40687904605704,115.068549603809,0,4.02888300261081,0.00938666452867032,0.632515014401949,1.83593385036871,0.0441334069847585,0,0.215504045756103,0,0.477879413427382,0,0.468608123623351,0.446492475571606,260.427714203507,207.462665073177,128.573487083699,224.870596532338,0,168.652226462583,137.375156483485,124.025066879554,143.387702677718,0,107.46881029248,170.011798113539,115.846216899548,267.212161955188,270.510067638014,261.747987001322,4369.63017852425,2039.88044372358,0,180.401558445602,156.24510445661,192.268842453282,129.899073085109,176.245356621577,138.818851782108,117.953984800618,146.616211063777,131.233177006935,150.777308622892,0,193.669379647641,173.494103845461,151.393374632452,0,191.906044669503,0,155.528018306001,162.699351703377,176.600516999336,0,167.586267006429,200.029354972538,124.704724441642,0,215.466290457773,219.328624104132,181.193760217377,289.826426702785,233.7347259158,249.013927202376,93.0667536158003,105.313813117644,0,101.632201548019,92.1352472136818,0,0.276444942249613,0.628074474166569,119.233761337816,0,84.7715321136617,94.5477082982706,101.661853377169,84.9502456661551,105.482581363711,259.745180440257,817.729620857086,0,116.7591658365,90.9582198961051,107.758695269168,102.072074756991,0,92.0108916567923,85.0791668783261,122.551108113532,94.1410065424901,0,102.833712133702,75.7425290219968,107.79519058121,115.745250529404,113.82804641754,138.375711283753,75.7655798153856,0,81.713069172323,74.6343428220836,72.4182709003384,0,0,71.6576864511878,0,117.209043750069,140.508403821308,140.559650886547,86.2992420726311,0,70.0461329850015,106.663595339301,83.5390510373088,109.987690927899,106.22119309783,0,0,115.313711783694,118.413181925404,107.740322056972,124.841793393633,122.618287645091,116.052168478604,0,0,117.269313402475,117.752330848848,107.511963390707,97.5475990566841,99.1884720170914,124.349529392758,122.024462332776,122.800908193652,114.232452857518,0,105.556145789469,114.435670597952,115.498571957519,48.4261165559041,139.453963982695,143.348282017314,177.746388482384,349.044998602858,346.136161913563,0,96.7962471866198,92.3630977606443,83.5411397998078,0,0,0.438995589512491,0.505372497971196,0,0.57704555526533,0.395510509991552,0,0,0,0,0,349.737439597694,0,0,0,0,37.3782318948956,128.836120167927,138.983000340178,80.9826880772357,0,0,419.093867714743,0.152749447217885,50.9002668954104,0,361.957122419361,476.102694637453,3643.98318865582,0,5706.86449316514,0,8.04927220375319,5945.22853774881,53.0261397943015,12.4489531002822,16.1955104509959,0,27.0310765581942,120.459201563908,842.192251150675,7246.73694894668,2.30113894087981,12.9550655006023,58.9657230158384,0.432909739614082,0.0207863146721092,53.3285470399941,0,13786.2913534665,0.994842458510945,192.18907661856,100.415975161251,2.90167267247501,0,0.714653221740484,0.357189723008111,7.59260165089249,0,8834.59438734157,10.1220309337273,0.354187704268327,212.985199437355,7932.95577035895,449.080042593586,141.906243757974,1.60093583449672,4.11711284166805,1.5833346268749,11.1669031098842,59.8889573730987,4.28729248933997,0.985713352981964,0,18.2569136595239,0,42.1516280365233,22.0379176977667,0,1.62962873717513,7.61971040273759,3.64197198523664,1.77345691266253,2.63160182115234,2.98559285197418,9.33671584077295,25.8862732296758,24.9535054064872,0,4.68068149783023,4.29822772805286,0,0.326975090260926,0,0.200017451300426,0.321203268689917,0,0.918704697921832,0.614609737994314,2.60886453206648,0,0,613.302260465014,325.212059711392,487.801874252292,416.756485675675,300.285030463823,258.392466955701,204.175553019402,313.278594762313,0,460.877786380126,0,173.101529020039,345.564181207617,253.831171423916,167.263367147996,196.603819216073,153.016939711538,216.070881690679,131.806091406422,224.208196659283,122.792750449151,142.299910499422,143.84018293477,420.211820116897,424.799503182302,212.657844456667,0,0,172.458444057124,407.613931853276,265.06067649732,555.643479733987,333.087489552465,279.163774168915,757.90431927222,991.499049436783,5923.48219052021,1928.46398411997,116.323373665976,165.17704390911,4291.83383964835,4972.18489019996,455.931649883919,438.827335359784,440.950957109214,600.986991195076,4523.97837776419,13526.1902658589,617.558168977979,488.285274027732,525.166431833813,482.01235024363,353.071458672084,306.500597327524,139.335599953476,6562.52938448054,152.381142619315,358.785210879191,268.450901990544,545.199019884282,364.814788658337,430.517685355734,279.876833303584,2151.49482405081,280.805017131639,203.457536903386,239.519880781439,222.337421673042,219.689479643589,161.754426298328,206.870706765337,186.01408823412,225.650122147779,155.458920795736,181.233840414774,165.066352787399,132.62667192967,147.925273838667,0,132.469343484525,144.278158170008,151.936420807748,96.6543901488759,38.2799776910356,17.665931657217,5509.02096852761,14.4850736557064,124.002341242687,0,17.3345466664796,0.684069138866835,1.57431590393075,6.37118571106013,0.62068814506087,0,0.474880869243181,0,0.711064419883129,0,0.692007737353171,0.572255161326444,260.654038708825,207.617778071753,128.653017517995,224.975135763713,0,168.768823043422,137.467146485112,124.124094858583,143.486977995368,0,107.513265927458,170.131429662998,115.895880968918,267.458052965395,270.680882648671,261.903344449323,4378.44473512028,2044.46847934564,0,180.523973119108,156.346123495405,192.407499635249,129.978170352719,176.373112689019,138.902480917747,118.023417704778,146.715838094115,131.319840376487,150.874567179206,0,193.803787706509,173.614054438476,151.48285632877,0,192.004949212265,0,155.599607939184,162.782985013712,176.66234694101,0,167.676193671813,200.184063267185,124.768528805218,0,215.610977487444,219.488506358842,181.283530356445,290.061092022556,233.912446137293,249.229778228408,93.0945374694034,105.370126713064,0,101.65702474975,92.1650481225813,0,0.0722378929154601,1.71650986998459,119.290762512533,0,84.8120520468623,94.6328470980101,101.726192048298,84.9585828365242,105.524778997105,259.931323260529,824.287438158434,0,116.831951310911,91.0094491989252,107.813478019001,102.126545886118,0,92.0578034392801,85.1093233942966,122.619869207857,94.1844205848213,0,102.88636732083,75.7621821535187,107.841975668031,115.783161992067,113.842636323053,138.457961149677,75.7854205510763,0,81.7618998110198,74.660158036452,72.433124061779,0,0,71.7119569195995,0,117.27430191049,140.586512909827,140.640635943125,86.3254012027099,0,70.0791042323106,106.710030000158,83.6113635682309,110.003307769704,106.319450014266,0,0,115.390484795295,118.433678588119,107.786815734369,124.935274166734,122.666157145869,116.180083302509,0,0,117.343261789345,117.808235391273,107.613236302231,97.6706727055277,99.2135063976606,124.547093511358,122.091903577397,122.877622406248,114.289277384284,0,105.630409039509,114.567477207699,115.513024872084,57.7890121338638,139.552047202714,143.444125200867,177.853499277268,349.480627360534,346.438196381771,0,96.8871450739167,92.4132441913934,83.5990741848055,0,0,2.81922538749001,0.780487006774546,0,1.06614551978853,0.47086930264491,0],"Archive805_field4":[4497885,4497885,4497885,4497885,8995770,4497885,8995770,4497885,8995770,7871298.75,7871298.75,7871298.75,8995770,7871298.75,4497885,6465709.6875,6465709.6875,6465709.6875,4497885,5552076.796875,5552076.796875,6026463.10546875,4497885,5301706.24511719,4497885,5552076.796875,7058692.57324219,5813398.00994873,6424362.76116103,7238783.671875,4497885,7069949.09699671,7552860.57983978,7748809.40440409,8220793.41669313,8109463.98521509,7834189.59295337,8656992.48588036,7392944.87533169,8333523.7408863,8347757.88451305,8714652.1875,8732919.59689139,8755173.78361078,8617597.6258377,8891197.79149865,8498981.6162286,8363254.921875,8134846.69921875,8519780.08330749,7042679.58860458,6465709.6875,8961406.55860475,8978688.53810902,7535813.31642531,8966886.83493223,8995757.46915095,8993229.565522,8872168.80252451,8871415.49110469,8891962.18710428,8987217.36775315,8705690.15528142,8973590.30799432,8978994.97080258,7791062.92193595,7238783.671875,8951743.86360458,7871298.75,8665314.32274517,8872407.93292389,8714652.1875,8911107.61924746,8776742.43805529,8926585.64896621,8991735.21082796,8151067.46119872,8654342.92828399,8499540.59348858,8009718.03631726,8194441.4619544,4497885,7284443.99861907,7803966.7893475,6465709.6875,7521498.51938046,8925490.546875,8975415.51505327,8854438.89242292,8363254.921875,8134846.69921875,8449406.09339957,8399530.97521212,4497885,4497885,7168320.92286435,6974974.47743194,7359653.19704895,6744153.09401383,6265072.35569413,5516393.47689994,6500180.29954669,8009493.28588366,4497885,7979408.3127146,4497885,5661013.85822132,7584091.63104652,7236176.1268072,7209355.41952925,7037225.03879418,6438114.00515706,7928342.360184,5519864.30472687,7536627.89339564,6596420.08478296,6737695.96794518,7373443.20780777,8741888.36433575,8310744.97963721,5786487.58506402,4497885,7871298.75,8061536.51890088,8399772.84236341,8534998.86742833,8575394.3804354,8600285.50837027,8905118.58888261,8902198.00288345,8664701.74501549,8530124.64113434,8850565.08831266,7129980.72286276,7635041.74828717,7813391.84610416,8944633.90073837,8732023.68883659,8899056.98898285,8974513.29352146,8554315.34311493,8794173.81947627,8588684.52639528,8720847.58524146,8277604.60579911,8986009.75841626,8903836.82862062,8889075.11176448,8851153.7175097,8756413.90432745,8127846.6936193,8412934.92117438,8954235.31710937,8972993.77239382,8201659.47870175,7359291.86222649,7876487.57392743,7797822.50504194,7500171.11240129,8990257.0578066,8969396.05648018,8964780.44533589,8769056.2468977,8990409.00126023,8965214.96459595,8719768.76091207,8992591.52791747,8906299.75864804,8915064.89120058,8870718.6560871,8991098.13929634,8995161.99881054,8994163.8040432,7871298.75,8797906.42194242,8926754.08196867,8720498.56643877,7678497.51615296,6431991.97260478,7464615.73862767,7100419.87773734,6713673.18079141,6670577.53055171,4497885,5635891.37364367,6139258.24383318,6643327.35877706,5916385.09316725,6895642.08804367,4497885,5378247.68735993,4497885,5548455.19221379,7238783.671875,6869816.54296875,6283143.23431494,8758471.71523781,8414798.54194536,8398591.97759517,6152708.99308908,4497885,8619799.64967709,8649846.16249492,8592439.79585931,8468921.91860137,8714652.1875,8056039.42222479,8552675.41449997,8825764.36520671,6667885.46600869,7157344.5394451,5677427.93583664,5484927.43829301,6086192.46825551,4497885,8418772.7467779,8246823.07900011,8684944.10017805,8438375.58584846,8862108.85890889,8250386.46248917,7795940.18058919,8619603.50247808,8838169.71007025,8174400.63393667,4497885,8125567.37878474,8271062.20909632,7569072.21833856,4497885,5307031.83371452,4497885,5750996.01794653,5305409.50670216,6166101.61346516,4497885,6981678.51465011,8867271.49189755,7609265.39422204,6465709.6875,7289130.93296382,7864992.01751786,6732413.34130215,8444380.80823543,8285405.15606632,8656804.5398984,6849068.91231869,7219862.33111909,4497885,7773704.3695246,6131810.95814701,8925490.546875,8837641.23046875,8914599.80447121,5635615.38033652,4497885,5310694.95802181,5671456.39710335,5490496.77860428,5967775.34267065,6300566.52401312,8192993.89218697,8974624.32475771,5552076.796875,7967808.41394903,6949704.82514333,7287941.65240088,7571157.35628321,6465709.6875,7426987.26840721,6011487.53220686,7211416.75208677,6680363.70365165,4497885,6631685.22432406,5950979.22054858,5653431.61635042,6528032.81909474,5770762.62071373,7702492.61901913,6519344.61088082,4497885,5208595.72841275,5192754.51686616,5343315.68006016,4497885,5599705.48953532,5369671.59394657,4497885,5232766.98186821,6326585.8427348,6868643.85057301,7019064.17591711,7238783.671875,6085415.08614521,5245575.66149562,6974573.71266665,8502874.24447803,8670754.10011292,8925490.546875,8363254.921875,8878249.00165456,8985923.07486605,8134846.69921875,8936442.78315656,8963334.79190305,8981402.62143199,8714652.1875,8925490.546875,8985835.38098601,8822741.71471257,8429333.98692595,7782602.73091805,7836283.06121511,8927130.28759653,8846517.24564643,8633694.52399208,8234422.62034372,8363254.921875,8134846.69921875,8549693.01316112,8499184.63637252,5314241.14194684,8959864.06028019,8810784.83108073,7585693.28746049,8220135.81491658,8693047.95185494,7238783.671875,7572611.07421875,6953977.83314938,6386363.29966675,4497885,5552076.796875,5552076.796875,5733426.92761492,4497885,5204587.46087332,6638302.31322828,5552076.796875,3373413.75,3373413.75,3373413.75,3373413.75,6746827.5,3373413.75,6746827.5,3373413.75,6746827.5,5903474.0625,5903474.0625,5903474.0625,6746827.5,5903474.0625,3373413.75,4849282.265625,4849282.265625,4849282.265625,3373413.75,4164057.59765625,4164057.59765625,4519847.32910156,3373413.75,3976279.68383789,3373413.75,4164057.59765625,5294019.42993164,4360048.50746155,4818272.07087077,5429087.75390625,3373413.75,5302461.82274753,5664645.43487984,5811607.05330307,6165595.06251985,6082097.98891131,5875642.19471503,6492744.36441027,5544708.65649877,6250142.80566472,6260818.41338479,6535989.140625,6549689.69766854,6566380.33770808,6463198.21937827,6668398.34362398,6374236.21217145,6272441.19140625,6101135.02441406,6389835.06248062,5282009.69145343,4849282.265625,6721054.91895356,6734016.40358176,5651859.98731898,6725165.12619917,6746818.10186322,6744922.1741415,6654126.60189338,6653561.61832852,6668971.64032821,6740413.02581486,6529267.61646107,6730192.73099574,6734246.22810193,5843297.19145197,5429087.75390625,6713807.89770344,5903474.0625,6498985.74205888,6654305.94969291,6535989.140625,6683330.7144356,6582556.82854147,6694939.23672466,6743801.40812097,6113300.59589904,6490757.196213,6374655.44511643,6007288.52723795,6145831.0964658,3373413.75,5463332.99896431,5852975.09201062,4849282.265625,5641123.88953534,6694117.91015625,6731561.63628995,6640829.16931719,6272441.19140625,6101135.02441406,6337054.57004968,6299648.23140909,3373413.75,3373413.75,5376240.69214826,5231230.85807395,5519739.89778671,5058114.82051037,4698804.2667706,4137295.10767495,4875135.22466002,6007119.96441275,3373413.75,5984556.23453595,3373413.75,4245760.39366599,5688068.72328489,5427132.0951054,5407016.56464694,5277918.77909563,4828585.5038678,5946256.770138,4139898.22854515,5652470.92004673,4947315.06358722,5053271.97595889,5530082.40585582,6556416.27325181,6233058.73472791,4339865.68879802,3373413.75,5903474.0625,6046152.38917566,6299829.63177255,6401249.15057124,6431545.78532655,6450214.1312777,6678838.94166196,6676648.50216259,6498526.30876162,6397593.48085076,6637923.8162345,5347485.54214707,5726281.31121538,5860043.88457812,6708475.42555377,6549017.76662744,6674292.74173714,6730884.9701411,6415736.50733619,6595630.3646072,6441513.39479646,6540635.68893109,6208203.45434933,6739507.3188122,6677877.62146546,6666806.33382336,6638365.28813228,6567310.42824559,6095885.02021447,6309701.19088078,6715676.48783203,6729745.32929536,6151244.60902631,5519468.89666987,5907365.68044557,5848366.87878145,5625128.33430097,6742692.79335495,6727047.04236014,6723585.33400192,6576792.18517328,6742806.75094517,6723911.22344697,6539826.57068405,6744443.6459381,6679724.81898603,6686298.66840044,6653038.99206533,6743323.60447226,6746371.49910791,6745622.8530324,5903474.0625,6598429.81645682,6695065.5614765,6540373.92482907,5758873.13711472,4823993.97945358,5598461.80397075,5325314.908303,5035254.88559355,5002933.14791378,3373413.75,4226918.53023275,4604443.68287489,4982495.51908279,4437288.81987544,5171731.56603275,3373413.75,4033685.76551995,3373413.75,4161341.39416034,5429087.75390625,5152362.40722656,4712357.4257362,6568853.78642836,6311098.90645902,6298943.98319638,4614531.74481681,3373413.75,6464849.73725782,6487384.62187119,6444329.84689448,6351691.43895103,6535989.140625,6042029.56666859,6414506.56087498,6619323.27390504,5000914.09950651,5368008.40458383,4258070.95187748,4113695.57871976,4564644.35119163,3373413.75,6314079.56008343,6185117.30925009,6513708.07513354,6328781.68938634,6646581.64418167,6187789.84686688,5846955.1354419,6464702.62685856,6628627.28255269,6130800.4754525,3373413.75,6094175.53408856,6203296.65682224,5676804.16375392,3373413.75,3980273.87528589,3373413.75,4313247.0134599,3979057.13002662,4624576.21009887,3373413.75,5236258.88598758,6650453.61892316,5706949.04566653,4849282.265625,5466848.19972286,5898744.0131384,5049310.00597661,6333285.60617657,6214053.86704974,6492603.4049238,5136801.68423902,5414896.74833932,3373413.75,5830278.27714345,4598858.21861026,6694117.91015625,6628230.92285156,6685949.85335341,4226711.53525239,3373413.75,3983021.21851636,4253592.29782752,4117872.58395321,4475831.50700299,4725424.89300984,6144745.41914023,6730968.24356828,4164057.59765625,5975856.31046177,5212278.6188575,5465956.23930066,5678368.01721241,4849282.265625,5570240.45130541,4508615.64915514,5408562.56406508,5010272.77773874,3373413.75,4973763.91824304,4463234.41541143,4240073.71226282,4896024.61432106,4328071.9655353,5776869.46426435,4889508.45816062,3373413.75,3906446.79630956,3894565.88764962,4007486.76004512,3373413.75,4199779.11715149,4027253.69545993,3373413.75,3924575.23640116,4744939.3820511,5151482.88792975,5264298.13193783,5429087.75390625,4564061.31460891,3934181.74612172,5230930.28449998,6377155.68335852,6503065.57508469,6694117.91015625,6272441.19140625,6658686.75124092,6739442.30614954,6101135.02441406,6702332.08736742,6722501.09392729,6736051.96607399,6535989.140625,6694117.91015625,6739376.53573951,6617056.28603443,6322000.49019446,5836952.04818854,5877212.29591133,6695347.7156974,6634887.93423482,6475270.89299406,6175816.96525779,6272441.19140625,6101135.02441406,6412269.75987084,6374388.47727939,3985680.85646013,6719898.04521014,6608088.62331055,5689269.96559537,6165101.86118743,6519785.96389121,5429087.75390625,5679458.30566406,5215483.37486203,4789772.47475007,3373413.75,4164057.59765625,4164057.59765625,4300070.19571119,3373413.75,3903440.59565499,4978726.73492121,4164057.59765625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-5.11350322085491e-10,0,5.11350322085491e-10,0,0,0,0,0,0,0,-5.11350322085491e-10,0,0,0,0,0,-1.02270064417098e-09,1.02270064417098e-09,0,0,0,5.11350322085491e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5.11350322085491e-10,0,0,0,0,-5.11350322085491e-10,0,1.02270064417098e-09,5.11350322085491e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.02270064417098e-09,0,0,0,0,0,0,0,-5.11350322085491e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-5.11350322085491e-10,0,0,0,0,0,0,-5.11350322085491e-10,5.11350322085491e-10,0,0,0,0,0,5.11350322085491e-10,5.11350322085491e-10,0,0,-5.11350322085491e-10,0,0,0,0,1.02270064417098e-09,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.02270064417098e-09,-1.02270064417098e-09,0,0,0,0,0,0,0,0,1.02270064417098e-09,0,0,0,0,0,0,0,0,0,0,1.02270064417098e-09,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.02270064417098e-09,0,0,0,0,0,-5.11350322085491e-10,0,1.02270064417098e-09,5.11350322085491e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive805_field5":[499.932670808958,1,1,500.731146275725,997.921445563747,500.255294386039,1,500.688039056012,997.519377121202,1,875.046762213745,875.027697168871,1,1,1,720.157345106254,1,1,499.023601512366,616.581844247636,617.685072185963,816.913170639534,732.35954031726,829.364540866204,1,1,873.465215809552,1,1,1,1,1,1,859.181965765476,928.665056705054,1,1,1,1,1,1,1,979.145294961937,1,1,1,1,1,1,1,1,1,984.912989810067,1,1,1,958.703641520771,998.032088230842,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,500.642160854221,500.413189775305,797.457048650681,774.379690474596,814.101511494647,748.541440415423,695.45874196428,612.866166646666,722.36288952566,889.127863842797,500.426009593806,884.395444303432,500.17590933268,629.481974851864,842.251332013202,803.784705730275,801.343489188856,782.106465147391,715.630471623601,881.060884885809,613.746908959662,837.433325248124,733.404276802105,749.050814699698,819.695647813294,969.129365894205,922.905529153624,642.785855806568,500.306275144584,872.738465179553,896.053175584311,932.676191002519,948.10836258421,951.688134071291,954.821726435104,989.060854274138,976.97242300426,954.171731380921,947.377885576963,974.786988855437,792.736485684118,848.672502206159,907.565736955766,964.659030037831,968.858789508345,988.387962004436,997.407917991444,951.674836728164,959.395002537316,952.110327977785,968.504561783417,918.062309095087,998.32416333305,987.577083623056,986.837039392736,982.967303021432,1,934.530683979159,1,993.766048300722,996.83376467359,911.337814556895,818.566373149412,874.610450056803,865.903398893304,892.118043898961,998.706232735325,996.810662501825,996.048516327538,974.437392852739,998.984014374758,996.527444324891,969.029054344395,999.473989671994,989.59220869235,991.008269572751,985.926062780566,999.364181998645,999.902123813691,999.830343863764,873.217659911079,978.058753560532,992.35672638894,969.349353452789,1,1,1,892.967890495701,1,743.097747731061,1,1,1,1,1,1,1,1,1,1,1,1,1,972.918305428978,935.10241954235,933.677501865865,683.259981550661,500.243364708257,958.120743554372,961.585320335202,955.131220348118,941.414728685942,966.393651854143,895.706658968236,950.621383224358,981.382000694839,742.17923115278,794.688086889026,632.523248857777,795.738102419979,781.423637412252,671.527215246351,935.725060950324,916.718588016786,965.247733910803,938.139026004782,985.018323660256,917.191550568094,866.692809406138,958.178326996847,982.549766241177,908.652227054265,500.429368960634,903.019467767863,919.292345720777,841.352848233979,499.746056043207,589.709267539286,500.209914709419,639.251837698236,589.399303822902,685.499378641431,500.078850481685,775.998089969032,985.444044139957,845.995789611122,717.766232959122,809.9195131399,873.888975890088,748.204740136831,937.866107999492,920.476481561853,961.634342159248,761.676820054414,802.689709126463,500.458680505474,864.631382786083,681.816138623412,1,1,1,626.692331709643,500.392675410158,590.633949746252,630.382900591215,610.602361626468,663.843708751947,700.508483256682,910.196574493343,989.075347896366,1,885.820631166317,772.676517647014,810.27882991845,841.757344754386,717.28415285747,825.644520153274,668.395918544691,801.699985059446,742.798585287082,500.107549492395,737.298828144492,661.739324645407,628.579998200912,725.801947507097,641.703551678832,856.236489579416,725.078451872961,500.156790239676,579.235102513038,577.44291719696,594.276018942791,500.363855323413,621.461480197274,596.836889794342,499.964802784723,581.968130236658,703.121276329637,763.531201321708,780.637371457017,803.284886998755,676.269919695358,583.039697858268,774.876184556084,945.696682571835,963.533651799783,989.426082973615,927.542504248684,986.301368323074,999.421922006455,904.030664226338,993.403713676467,996.749971693379,997.309568900866,966.645460900775,988.817493543823,998.707438809026,980.732000592355,936.166710232259,864.365902663374,871.652936486477,991.536688879976,983.51710867641,959.785876112271,915.566360354567,927.526936191496,903.853045603728,949.426709753393,945.459911818865,592.367406257178,996.010250338498,979.447035108382,843.06278174658,912.018969119515,965.097997396558,802.875747085649,841.020957660793,772.816772736435,709.902705014243,500.172240324363,616.752967124187,1,1,1,1,1,1,499.932670808958,1,1,500.731146275725,997.921445563747,500.255294386039,1,500.688039056012,997.519377121202,1,875.046762213745,875.027697168871,1,1,1,720.157345106254,1,1,499.023601512366,616.581844247636,617.685072185963,816.913170639534,732.35954031726,829.364540866204,1,1,873.465215809552,1,1,1,1,1,1,859.181965765476,928.665056705054,1,1,1,1,1,1,1,979.145294961937,1,1,1,1,1,1,1,1,1,984.912989810067,1,1,1,958.703641520771,998.032088230841,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,500.642160854221,500.413189775305,797.457048650681,774.379690474596,814.101511494647,748.541440415423,695.45874196428,612.866166646665,722.36288952566,889.127863842797,500.426009593806,884.395444303432,500.17590933268,629.481974851864,842.251332013202,803.784705730275,801.343489188856,782.106465147391,715.630471623601,881.060884885809,613.746908959662,837.433325248124,733.404276802105,749.050814699698,819.695647813294,969.129365894205,922.905529153624,642.785855806568,500.306275144584,872.738465179553,896.05317558431,932.676191002519,948.10836258421,951.688134071291,954.821726435104,989.060854274138,976.97242300426,954.171731380921,947.377885576963,974.786988855437,792.736485684119,848.672502206159,907.565736955766,964.659030037831,968.858789508345,988.387962004436,997.407917991444,951.674836728163,959.395002537315,952.110327977785,968.504561783417,918.062309095087,998.32416333305,987.577083623056,986.837039392736,982.967303021432,1,934.530683979159,1,993.766048300723,996.833764673589,911.337814556895,818.566373149412,874.610450056803,865.903398893304,892.118043898961,998.706232735326,996.810662501826,996.048516327537,974.437392852739,998.984014374757,996.527444324891,969.029054344394,999.473989671994,989.59220869235,991.008269572751,985.926062780566,999.364181998645,999.902123813691,999.830343863764,873.217659911079,978.058753560532,992.35672638894,969.349353452789,1,1,1,892.967890495701,1,743.097747731061,1,1,1,1,1,1,1,1,1,1,1,1,1,972.918305428978,935.10241954235,933.677501865865,683.259981550661,500.243364708257,958.120743554372,961.585320335202,955.131220348118,941.414728685942,966.393651854143,895.706658968236,950.621383224358,981.382000694839,742.17923115278,794.688086889026,632.523248857777,795.738102419979,781.423637412252,671.527215246351,935.725060950324,916.718588016786,965.247733910803,938.139026004782,985.018323660256,917.191550568093,866.692809406138,958.178326996847,982.549766241177,908.652227054265,500.429368960634,903.019467767863,919.292345720777,841.352848233979,499.746056043206,589.709267539286,500.209914709419,639.251837698236,589.399303822902,685.499378641431,500.078850481685,775.998089969032,985.444044139957,845.995789611122,717.766232959122,809.9195131399,873.888975890088,748.204740136831,937.866107999492,920.476481561853,961.634342159248,761.676820054413,802.689709126463,500.458680505474,864.631382786083,681.816138623412,1,1,1,626.692331709643,500.392675410158,590.633949746252,630.382900591215,610.602361626468,663.843708751947,700.508483256682,910.196574493343,989.075347896366,1,885.820631166317,772.676517647014,810.27882991845,841.757344754386,717.28415285747,825.644520153274,668.395918544691,801.699985059446,742.798585287082,500.107549492395,737.298828144492,661.739324645407,628.579998200912,725.801947507097,641.703551678832,856.236489579416,725.078451872961,500.156790239676,579.235102513038,577.44291719696,594.276018942791,500.363855323413,621.461480197275,596.836889794342,499.964802784723,581.968130236658,703.121276329637,763.531201321708,780.637371457017,803.284886998755,676.269919695358,583.039697858268,774.876184556084,945.696682571835,963.533651799783,989.426082973615,927.542504248684,986.301368323074,999.421922006455,904.030664226337,993.403713676467,996.749971693378,997.309568900866,966.645460900775,988.817493543823,998.707438809026,980.732000592355,936.166710232259,864.365902663374,871.652936486477,991.536688879976,983.51710867641,959.785876112271,915.566360354568,927.526936191496,903.853045603728,949.426709753393,945.459911818865,592.367406257178,996.010250338498,979.447035108383,843.06278174658,912.018969119516,965.097997396558,802.875747085649,841.020957660793,772.816772736435,709.902705014243,500.172240324362,616.752967124187,1,1,1,1,1,1,499.932670808958,1,1,500.731146275725,997.921445563747,500.255294386039,1,500.688039056012,997.519377121202,1,875.046762213745,875.027697168871,1,1,1,720.157345106254,1,1,499.023601512366,616.581844247636,617.685072185963,816.913170639534,732.35954031726,829.364540866204,1,1,873.465215809552,1,1,1,1,1,1,859.181965765476,928.665056705054,1,1,1,1,1,1,1,979.145294961937,1,1,1,1,1,1,1,1,1,984.912989810067,1,1,1,958.703641520771,998.032088230842,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,500.642160854221,500.413189775305,797.457048650681,774.379690474596,814.101511494647,748.541440415423,695.45874196428,612.866166646666,722.36288952566,889.127863842797,500.426009593806,884.395444303432,500.17590933268,629.481974851864,842.251332013202,803.784705730275,801.343489188856,782.106465147391,715.630471623601,881.060884885809,613.746908959662,837.433325248124,733.404276802105,749.050814699698,819.695647813294,969.129365894205,922.905529153624,642.785855806568,500.306275144584,872.738465179553,896.053175584311,932.676191002519,948.10836258421,951.688134071291,954.821726435104,989.060854274138,976.97242300426,954.171731380921,947.377885576963,974.786988855437,792.736485684118,848.672502206159,907.565736955766,964.659030037831,968.858789508345,988.387962004436,997.407917991444,951.674836728164,959.395002537316,952.110327977785,968.504561783417,918.062309095087,998.32416333305,987.577083623056,986.837039392736,982.967303021432,1,934.530683979159,1,993.766048300722,996.83376467359,911.337814556895,818.566373149412,874.610450056803,865.903398893304,892.118043898961,998.706232735325,996.810662501825,996.048516327538,974.437392852739,998.984014374758,996.527444324891,969.029054344395,999.473989671994,989.59220869235,991.008269572751,985.926062780566,999.364181998645,999.902123813691,999.830343863764,873.217659911079,978.058753560532,992.35672638894,969.349353452789,1,1,1,892.967890495701,1,743.097747731061,1,1,1,1,1,1,1,1,1,1,1,1,1,972.918305428978,935.10241954235,933.677501865865,683.259981550661,500.243364708257,958.120743554372,961.585320335202,955.131220348118,941.414728685942,966.393651854143,895.706658968236,950.621383224358,981.382000694839,742.17923115278,794.688086889026,632.523248857777,795.738102419979,781.423637412252,671.527215246351,935.725060950324,916.718588016786,965.247733910803,938.139026004782,985.018323660256,917.191550568094,866.692809406138,958.178326996847,982.549766241177,908.652227054265,500.429368960634,903.019467767863,919.292345720777,841.352848233979,499.746056043207,589.709267539286,500.209914709419,639.251837698236,589.399303822902,685.499378641431,500.078850481685,775.998089969032,985.444044139957,845.995789611122,717.766232959122,809.9195131399,873.888975890088,748.204740136831,937.866107999492,920.476481561853,961.634342159248,761.676820054414,802.689709126463,500.458680505474,864.631382786083,681.816138623412,1,1,1,626.692331709643,500.392675410158,590.633949746252,630.382900591215,610.602361626468,663.843708751947,700.508483256682,910.196574493343,989.075347896366,1,885.820631166317,772.676517647014,810.27882991845,841.757344754386,717.28415285747,825.644520153274,668.395918544691,801.699985059446,742.798585287082,500.107549492395,737.298828144492,661.739324645407,628.579998200912,725.801947507097,641.703551678832,856.236489579416,725.078451872961,500.156790239676,579.235102513038,577.44291719696,594.276018942791,500.363855323413,621.461480197274,596.836889794342,499.964802784723,581.968130236658,703.121276329637,763.531201321708,780.637371457017,803.284886998755,676.269919695358,583.039697858268,774.876184556084,945.696682571835,963.533651799783,989.426082973615,927.542504248684,986.301368323074,999.421922006455,904.030664226338,993.403713676467,996.749971693379,997.309568900866,966.645460900775,988.817493543823,998.707438809026,980.732000592355,936.166710232259,864.365902663374,871.652936486477,991.536688879976,983.51710867641,959.785876112271,915.566360354567,927.526936191496,903.853045603728,949.426709753393,945.459911818865,592.367406257178,996.010250338498,979.447035108382,843.06278174658,912.018969119515,965.097997396558,802.875747085649,841.020957660793,772.816772736435,709.902705014243,500.172240324363,616.752967124187,1,1,1,1,1,1],"Archive805_field6":[999.932670808958,0.103616813294233,0.103616813294233,911.092827605148,348.043635202065,395.196643359646,0.103616813294233,305.991069359042,952.700217785914,0.103616813294233,675.107857032905,630.269632652742,0.103616813294233,0.103616813294233,0.103616813294233,166.650502486509,0.103616813294233,0.103616813294233,153.061969058798,234.667438089278,160.138334649306,233.800924183034,310.765576485393,284.80073878287,0.103616813294233,0.103616813294233,182.609869249191,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,179.338982507096,128.628424129364,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,102.820220674351,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,112.586299609455,0.103616813294233,0.103616813294233,0.103616813294233,99.3378162279587,207.456149773708,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,230.312859778953,608.245545591531,162.896973113187,284.601686886751,227.083241415282,223.716028143949,271.04563039497,307.612241214665,370.324035180481,336.697496824229,456.993702653435,255.044641291633,381.111271014009,425.163859679669,295.884834087152,356.524561528305,494.309772325805,423.743721435576,471.339500351096,441.144647058447,512.417317857547,406.920751151532,580.689515480964,524.849637297532,574.779601350723,298.046281778341,195.534988412018,365.670903218319,532.506299582512,930.509726176621,538.374084458683,298.061071827089,406.51836074295,242.663732908868,347.082647060703,408.248168386982,206.035491341998,160.805365072766,119.155926920692,137.359295597469,666.140717511361,528.451451129069,161.293088310607,122.800584944736,275.783417417337,224.49081753891,285.434262086857,170.893605769953,127.443810546096,98.6546380895848,214.399330924983,255.914344898112,263.169428407633,278.626031253307,343.182650629903,377.440098002752,0.103616813294233,158.68915846528,0.103616813294233,342.041947805015,422.786572228835,192.577905814302,256.729988455089,238.679494244764,357.36773831275,225.391893037985,409.156763194129,524.471555798564,462.010473230634,478.065874207782,493.980564983197,633.289376311522,503.345822570755,566.368042342971,478.690398912276,651.378191615387,569.140552275413,623.512945938234,750.836600447747,684.823583999641,975.808080243435,734.409503431356,693.757749736097,648.726753097809,0.103616813294233,0.103616813294233,0.103616813294233,222.958528070896,0.103616813294233,204.742226899821,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,421.757877236965,484.10151943145,719.165329250687,332.478058656754,243.920050925266,588.249458123609,701.492436727993,758.883914732292,661.620350156414,964.029282352676,814.427281440476,579.110694247581,840.445318535592,275.710399519442,333.882116135785,258.752488947282,308.620033794914,269.970154727632,339.571570085061,543.379560897324,599.522284847747,531.637027551026,718.185274412658,581.863044849281,662.436117886306,720.082023109942,660.062010650117,745.579456606418,612.131178093115,697.900043447438,495.28239104365,551.002137093975,564.677205485333,319.055073638514,352.655886775493,546.415926439624,463.773602400353,414.399645610139,401.753721364965,470.652530833592,478.322713550589,525.706426208116,670.014943172218,920.582704122368,407.489240025346,432.20270316012,426.870824517163,376.138702931931,435.110946925671,431.557776114685,795.291466300386,737.455157480681,759.555699078299,825.223046158769,707.770431780044,0.103616813294233,0.103616813294233,0.103616813294233,596.620662620101,683.857362604684,725.811361482606,831.684725261269,661.536719251438,771.977666892068,641.85888555056,395.250494842978,174.899418216964,0.103616813294233,744.676282302187,811.316338083859,730.133958491649,794.164717850743,987.329363023648,895.804687373157,732.384997002871,644.439771425963,754.433337056372,848.842886735796,686.172904917637,822.529558439142,641.661218578164,609.293449447397,552.718636645898,621.047363642558,896.816147989376,773.259796104779,731.823859199452,807.510890019035,871.370320496906,924.731523945114,993.10487793688,934.318586619144,621.803145893227,512.140173352224,503.690799751432,546.558960645163,865.789865525313,981.790202248022,943.177039321887,595.864944701204,932.664331792394,841.423586204744,897.362478642154,958.021818555237,969.843029664129,900.323562597372,839.90665679364,899.447407603208,786.28613904334,807.266018920458,902.489581628064,941.871511731664,946.208439291624,872.387643174376,862.128390924256,917.022991536762,924.725251101801,865.258249582296,895.246553350291,804.636268833487,773.714246966177,786.417550050287,936.213092105475,876.278679724678,875.146346741644,820.467197107858,199.838945951697,716.032558932387,688.043401308373,494.89009858079,323.588373226285,339.746811513921,925.357113165805,879.424443476218,863.107124342182,832.914757889502,834.901590275487,915.529543370521,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,999.932670808958,0.103616813294233,0.103616813294233,911.092827605148,348.043635202065,395.196643359646,0.103616813294233,305.991069359042,952.700217785914,0.103616813294233,675.107857032905,630.269632652742,0.103616813294233,0.103616813294233,0.103616813294233,166.650502486509,0.103616813294233,0.103616813294233,153.061969058798,234.667438089278,160.138334649306,233.800924183034,310.765576485393,284.80073878287,0.103616813294233,0.103616813294233,182.609869249191,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,179.338982507096,128.628424129364,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,102.820220674351,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,112.586299609455,0.103616813294233,0.103616813294233,0.103616813294233,99.3378162279587,207.456149773708,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,230.312859778953,608.245545591531,162.896973113187,284.601686886751,227.083241415282,223.716028143949,271.04563039497,307.612241214665,370.324035180481,336.697496824229,456.993702653435,255.044641291633,381.111271014009,425.163859679669,295.884834087152,356.524561528305,494.309772325805,423.743721435576,471.339500351096,441.144647058447,512.417317857547,406.920751151532,580.689515480964,524.849637297532,574.779601350723,298.046281778341,195.534988412018,365.670903218319,532.506299582512,930.509726176621,538.374084458683,298.061071827089,406.51836074295,242.663732908868,347.082647060703,408.248168386982,206.035491341998,160.805365072766,119.155926920692,137.359295597469,666.140717511361,528.451451129069,161.293088310607,122.800584944736,275.783417417337,224.49081753891,285.434262086857,170.893605769953,127.443810546096,98.6546380895848,214.399330924983,255.914344898112,263.169428407633,278.626031253307,343.182650629903,377.440098002752,0.103616813294233,158.68915846528,0.103616813294233,342.041947805015,422.786572228835,192.577905814302,256.729988455089,238.679494244764,357.36773831275,225.391893037985,409.156763194129,524.471555798564,462.010473230634,478.065874207782,493.980564983197,633.289376311522,503.345822570755,566.368042342971,478.690398912276,651.378191615387,569.140552275413,623.512945938234,750.836600447747,684.823583999641,975.808080243435,734.409503431356,693.757749736097,648.726753097809,0.103616813294233,0.103616813294233,0.103616813294233,222.958528070896,0.103616813294233,204.742226899821,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,421.757877236965,484.10151943145,719.165329250687,332.478058656754,243.920050925266,588.249458123609,701.492436727993,758.883914732292,661.620350156414,964.029282352676,814.427281440476,579.110694247581,840.445318535592,275.710399519442,333.882116135785,258.752488947282,308.620033794914,269.970154727632,339.571570085061,543.379560897324,599.522284847747,531.637027551026,718.185274412657,581.863044849281,662.436117886306,720.082023109942,660.062010650117,745.579456606418,612.131178093115,697.900043447438,495.28239104365,551.002137093975,564.677205485333,319.055073638514,352.655886775493,546.415926439624,463.773602400353,414.399645610139,401.753721364965,470.652530833592,478.322713550589,525.706426208116,670.014943172218,920.582704122368,407.489240025346,432.20270316012,426.870824517163,376.13870293193,435.110946925671,431.557776114685,795.291466300386,737.455157480681,759.555699078299,825.22304615877,707.770431780043,0.103616813294233,0.103616813294233,0.103616813294233,596.620662620101,683.857362604684,725.811361482606,831.684725261269,661.536719251438,771.977666892068,641.85888555056,395.250494842978,174.899418216964,0.103616813294233,744.676282302187,811.316338083859,730.133958491649,794.164717850743,987.329363023647,895.804687373157,732.384997002871,644.439771425963,754.433337056372,848.842886735796,686.172904917637,822.529558439142,641.661218578163,609.293449447397,552.718636645898,621.047363642558,896.816147989376,773.259796104779,731.823859199452,807.510890019035,871.370320496906,924.731523945114,993.10487793688,934.318586619144,621.803145893227,512.140173352224,503.690799751431,546.558960645163,865.789865525313,981.790202248021,943.177039321887,595.864944701203,932.664331792394,841.423586204744,897.362478642154,958.021818555237,969.843029664129,900.323562597372,839.906656793639,899.447407603208,786.286139043341,807.266018920458,902.489581628064,941.871511731664,946.208439291624,872.387643174376,862.128390924256,917.022991536762,924.725251101801,865.258249582296,895.246553350291,804.636268833486,773.714246966177,786.417550050287,936.213092105475,876.278679724678,875.146346741644,820.467197107858,199.838945951697,716.032558932387,688.043401308373,494.89009858079,323.588373226285,339.746811513921,925.357113165805,879.424443476218,863.107124342182,832.914757889502,834.901590275487,915.529543370521,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,999.932670808958,0.103616813294233,0.103616813294233,911.092827605148,348.043635202065,395.196643359646,0.103616813294233,305.991069359042,952.700217785914,0.103616813294233,675.107857032905,630.269632652742,0.103616813294233,0.103616813294233,0.103616813294233,166.650502486509,0.103616813294233,0.103616813294233,153.061969058798,234.667438089278,160.138334649306,233.800924183034,310.765576485393,284.80073878287,0.103616813294233,0.103616813294233,182.609869249191,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,179.338982507096,128.628424129364,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,102.820220674351,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,112.586299609455,0.103616813294233,0.103616813294233,0.103616813294233,99.3378162279587,207.456149773708,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,230.312859778953,608.245545591531,162.896973113187,284.601686886751,227.083241415282,223.716028143949,271.04563039497,307.612241214665,370.324035180481,336.697496824229,456.993702653435,255.044641291633,381.111271014009,425.163859679669,295.884834087152,356.524561528305,494.309772325805,423.743721435576,471.339500351096,441.144647058447,512.417317857547,406.920751151532,580.689515480964,524.849637297532,574.779601350723,298.046281778341,195.534988412018,365.670903218319,532.506299582512,930.509726176621,538.374084458683,298.061071827089,406.51836074295,242.663732908868,347.082647060703,408.248168386982,206.035491341998,160.805365072766,119.155926920692,137.359295597469,666.140717511361,528.451451129069,161.293088310607,122.800584944736,275.783417417337,224.49081753891,285.434262086857,170.893605769953,127.443810546096,98.6546380895848,214.399330924983,255.914344898112,263.169428407633,278.626031253307,343.182650629903,377.440098002752,0.103616813294233,158.68915846528,0.103616813294233,342.041947805015,422.786572228835,192.577905814302,256.729988455089,238.679494244764,357.36773831275,225.391893037985,409.156763194129,524.471555798564,462.010473230634,478.065874207782,493.980564983197,633.289376311522,503.345822570755,566.368042342971,478.690398912276,651.378191615387,569.140552275413,623.512945938234,750.836600447747,684.823583999641,975.808080243435,734.409503431356,693.757749736097,648.726753097809,0.103616813294233,0.103616813294233,0.103616813294233,222.958528070896,0.103616813294233,204.742226899821,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,421.757877236965,484.10151943145,719.165329250687,332.478058656754,243.920050925266,588.249458123609,701.492436727993,758.883914732292,661.620350156414,964.029282352676,814.427281440476,579.110694247581,840.445318535592,275.710399519442,333.882116135785,258.752488947282,308.620033794914,269.970154727632,339.571570085061,543.379560897324,599.522284847747,531.637027551026,718.185274412658,581.863044849281,662.436117886306,720.082023109942,660.062010650117,745.579456606418,612.131178093115,697.900043447438,495.28239104365,551.002137093975,564.677205485333,319.055073638514,352.655886775493,546.415926439624,463.773602400353,414.399645610139,401.753721364965,470.652530833592,478.322713550589,525.706426208116,670.014943172218,920.582704122368,407.489240025346,432.20270316012,426.870824517163,376.138702931931,435.110946925671,431.557776114685,795.291466300386,737.455157480681,759.555699078299,825.223046158769,707.770431780044,0.103616813294233,0.103616813294233,0.103616813294233,596.620662620101,683.857362604684,725.811361482606,831.684725261269,661.536719251438,771.977666892068,641.85888555056,395.250494842978,174.899418216964,0.103616813294233,744.676282302187,811.316338083859,730.133958491649,794.164717850743,987.329363023648,895.804687373157,732.384997002871,644.439771425963,754.433337056372,848.842886735796,686.172904917637,822.529558439142,641.661218578164,609.293449447397,552.718636645898,621.047363642558,896.816147989376,773.259796104779,731.823859199452,807.510890019035,871.370320496906,924.731523945114,993.10487793688,934.318586619144,621.803145893227,512.140173352224,503.690799751432,546.558960645163,865.789865525313,981.790202248022,943.177039321887,595.864944701204,932.664331792394,841.423586204744,897.362478642154,958.021818555237,969.843029664129,900.323562597372,839.90665679364,899.447407603208,786.28613904334,807.266018920458,902.489581628064,941.871511731664,946.208439291624,872.387643174376,862.128390924256,917.022991536762,924.725251101801,865.258249582296,895.246553350291,804.636268833487,773.714246966177,786.417550050287,936.213092105475,876.278679724678,875.146346741644,820.467197107858,199.838945951697,716.032558932387,688.043401308373,494.89009858079,323.588373226285,339.746811513921,925.357113165805,879.424443476218,863.107124342182,832.914757889502,834.901590275487,915.529543370521,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive805_field7":[-664183.78961967,332425.019198703,333190.336159122,-663281.919603159,-165930.96181448,-165819.243507414,333258.954456386,-165751.972207927,-664124.724112264,83504.4995653986,-415998.335137672,-415260.226815994,83522.3990650858,333281.367637308,83930.68745343,-41176.8713323648,208522.21552419,83642.5192107105,-40928.4309599389,-103473.844278211,-40909.3952168556,21287.2212043882,21547.1956648056,51941.3933602526,208676.88516163,126678.551787225,21100.0951757276,84415.3532975986,146041.652585552,117957.887576162,146197.78767492,70598.0115371591,45004.7833301691,-46804.3030866675,13321.0608986109,208426.355950135,150047.113408057,123761.592574554,212509.299598335,153830.700361928,92857.3001080295,333279.142623958,35136.8490906636,227688.509914277,76603.9090259575,89475.847079137,203582.038625859,333300.99832146,274840.5838331,261219.404693506,168800.926394441,333258.180317426,16835.0255066947,177279.727116197,277249.879155768,62339.1059248228,36340.3846064656,-48736.7580185534,58609.9731094281,148737.522692919,197892.980965367,256653.010881372,172632.431544577,123874.614935797,145498.133710879,237952.311004062,333255.784643761,97651.3208109005,333151.117772408,137468.675884035,138573.867292265,333173.623577183,231313.518396476,190348.652414515,182878.838489641,213891.57819207,208584.344608293,259813.47704953,184526.935775589,106865.6729277,155291.1373032,84115.9566801228,172236.924588272,177396.321293724,332807.211236008,257072.171238775,333226.955220011,280484.068990769,285033.729595484,333099.163839665,275100.993359437,289004.572926977,241451.303650257,-103169.72245597,-415762.417207038,-34716.6225904214,-137758.135022125,-90228.6809037722,-88571.5822951931,-130849.061170967,-163612.747626961,-210294.611130818,-173305.516198767,-290505.543184093,-107480.448387215,-228081.724589096,-260102.174626725,-142629.649693559,-194833.224043538,-308261.033564532,-251574.994110746,-293333.188019034,-259790.887998951,-332372.63349168,-234250.541132094,-383561.79146509,-336494.210848987,-373906.113820572,-134065.542883093,-53831.9345591209,-210215.777906753,-353264.301685425,-664191.941318774,-338351.445015495,-137028.141735759,-225281.720552288,-90163.0664802423,-175754.849083567,-219988.475808933,-63244.9962764272,-27821.5031154259,11493.2378463164,-5570.3245338672,-450331.706313564,-333719.94418758,2913.93559429298,797.639417015231,-97412.6465562592,-57503.251662455,-110340.682525742,-5903.85922857263,10457.5486486554,61253.5573989719,-45620.9334710011,-75302.0891148774,-96744.0780134186,-114218.977164399,-167244.226199554,-183369.555539996,94046.8923361363,34043.5233573895,106525.455107935,-157064.817084621,-223860.619194516,-20806.0157651678,-66178.1086190393,-56714.8534899471,-153345.748534535,6453.33116791366,-216750.752440945,-313442.573948662,-261830.691367783,-280136.597710162,-283740.382474531,-396778.199281728,-283567.410891463,-343757.985318372,-267201.712692534,-419511.500805614,-340768.990240213,-392601.970929878,-496844.550846245,-441786.268143299,-663916.103586695,-476553.481680978,-445404.148417742,-403189.553816388,61869.8585734915,66124.9543602491,116112.409430569,48783.5221729048,127185.967393315,-17490.987095258,208749.538700421,118968.435851056,220351.809299941,181129.886054468,169428.308636843,236321.651506983,146513.490239144,207457.646432617,271584.9213462,268836.067076071,332979.995591969,290377.149043864,269135.237537872,-234006.122951057,-289871.518307707,-457616.979400364,-122400.874691569,-40706.7891251389,-373753.670122988,-445627.291623628,-492682.374856225,-410215.004439932,-664248.751708173,-532286.338850272,-343759.412805917,-563033.690021549,-76944.9959563278,-129724.049753847,-57508.9754908523,54911.1014255545,16380.1140808317,21545.2172123008,-338894.195722226,-387114.985818922,-325810.571111279,-482884.310280283,-364060.731050775,-439043.68526919,-491036.147457694,-432293.767486711,-499461.947876939,-366594.283461801,-415669.341595764,-269603.846187323,-317127.276365045,-322368.301487089,-103328.052143629,-134250.587017346,-290727.902624774,-228271.246561613,-185670.689801987,-179163.69959381,-228002.114775783,-247021.519709154,-317278.417548069,-450478.361493255,-664184.990251236,-190974.234812751,-215442.278807181,-203116.358107424,-175385.376812681,-222154.146162454,-223364.853379661,-558679.99311448,-509328.346027956,-540163.982122183,-576652.215830105,-490866.66708153,333292.242245994,282959.126916202,244089.075131992,-401011.227328687,-478051.333724371,-510019.028891918,-595849.871150188,-455537.463327662,-544090.701380617,-435443.882475345,-219388.208523837,-31330.4197198603,333158.157555775,-474042.801609297,-521916.63150775,-456689.96212373,-512132.733290626,-664259.092826286,-594776.624336463,-451376.984948633,-385572.050319057,-473138.974071797,-540697.331775875,-416501.781832652,-525460.333953589,-374861.712684602,-352314.235759373,-302157.118342851,-369642.74236704,-589316.641572329,-478276.022279556,-446790.091509476,-509381.572311336,-562904.598074923,-603241.836258397,-663940.820258082,-615822.077374734,-353446.761419615,-266106.083328513,-263871.017543924,-303006.513477614,-566893.967136981,-663903.815846199,-626322.204224881,-334394.712466941,-623281.464058893,-558897.434224825,-608701.300212231,-663978.574467021,-663972.504690321,-615519.715133934,-568131.949808331,-604196.798907089,-521498.717395698,-546140.354583444,-621559.132646447,-664037.553795975,-663710.520080841,-599705.694305937,-596711.400586814,-622111.242031116,-622725.488663883,-571681.811290548,-621780.311754908,-548096.741761572,-526134.127910782,-541606.279795145,-664107.186843013,-617191.011759634,-612930.401513427,-566064.389765781,-6464.65088905593,-471795.33224365,-452761.285505482,-264715.531973872,-129938.367363576,-148932.072183344,-663954.018003196,-625240.738383672,-615241.880127295,-593667.808086684,-604054.050493,-664072.31791331,191368.092136629,271053.678766517,271329.297160615,235105.878761696,271032.336188257,333155.281118545,-664183.78961967,332425.019198703,333190.336159122,-663281.919603159,-165930.96181448,-165819.243507414,333258.954456386,-165751.972207927,-664124.724112264,83504.4995653986,-415998.335137672,-415260.226815994,83522.3990650858,333281.367637308,83930.68745343,-41176.8713323648,208522.21552419,83642.5192107105,-40928.4309599389,-103473.844278211,-40909.3952168555,21287.2212043882,21547.1956648056,51941.3933602526,208676.88516163,126678.551787225,21100.0951757276,84415.3532975986,146041.652585552,117957.887576162,146197.78767492,70598.0115371591,45004.7833301691,-46804.3030866675,13321.0608986109,208426.355950135,150047.113408057,123761.592574554,212509.299598335,153830.700361928,92857.3001080295,333279.142623958,35136.8490906636,227688.509914277,76603.9090259575,89475.847079137,203582.038625859,333300.99832146,274840.5838331,261219.404693505,168800.926394441,333258.180317426,16835.0255066947,177279.727116197,277249.879155768,62339.1059248228,36340.3846064656,-48736.7580185535,58609.9731094281,148737.522692919,197892.980965367,256653.010881372,172632.431544577,123874.614935797,145498.133710879,237952.311004062,333255.784643761,97651.3208109005,333151.117772408,137468.675884035,138573.867292265,333173.623577183,231313.518396476,190348.652414515,182878.838489641,213891.57819207,208584.344608293,259813.47704953,184526.935775589,106865.6729277,155291.1373032,84115.9566801228,172236.924588272,177396.321293724,332807.211236008,257072.171238775,333226.955220011,280484.068990769,285033.729595484,333099.163839665,275100.993359437,289004.572926977,241451.303650257,-103169.72245597,-415762.417207038,-34716.6225904214,-137758.135022125,-90228.6809037723,-88571.5822951931,-130849.061170967,-163612.747626961,-210294.611130818,-173305.516198767,-290505.543184093,-107480.448387215,-228081.724589096,-260102.174626725,-142629.649693559,-194833.224043538,-308261.033564532,-251574.994110746,-293333.188019034,-259790.887998951,-332372.63349168,-234250.541132094,-383561.791465089,-336494.210848987,-373906.113820572,-134065.542883093,-53831.9345591208,-210215.777906753,-353264.301685425,-664191.941318774,-338351.445015495,-137028.141735759,-225281.720552288,-90163.0664802423,-175754.849083567,-219988.475808933,-63244.9962764272,-27821.5031154259,11493.2378463164,-5570.3245338672,-450331.706313564,-333719.94418758,2913.93559429298,797.639417015231,-97412.6465562592,-57503.251662455,-110340.682525742,-5903.85922857263,10457.5486486554,61253.5573989719,-45620.9334710011,-75302.0891148774,-96744.0780134186,-114218.977164399,-167244.226199554,-183369.555539996,94046.8923361363,34043.5233573895,106525.455107935,-157064.817084621,-223860.619194516,-20806.0157651678,-66178.1086190393,-56714.8534899471,-153345.748534535,6453.33116791366,-216750.752440945,-313442.573948662,-261830.691367783,-280136.597710162,-283740.382474531,-396778.199281728,-283567.410891463,-343757.985318372,-267201.712692534,-419511.500805614,-340768.990240213,-392601.970929878,-496844.550846245,-441786.268143299,-663916.103586695,-476553.481680978,-445404.148417743,-403189.553816388,61869.8585734914,66124.9543602491,116112.409430569,48783.5221729048,127185.967393315,-17490.987095258,208749.538700421,118968.435851056,220351.809299941,181129.886054468,169428.308636843,236321.651506983,146513.490239144,207457.646432616,271584.9213462,268836.067076071,332979.995591969,290377.149043864,269135.237537872,-234006.122951056,-289871.518307707,-457616.979400364,-122400.874691569,-40706.7891251389,-373753.670122988,-445627.291623628,-492682.374856225,-410215.004439932,-664248.751708173,-532286.338850272,-343759.412805917,-563033.690021549,-76944.9959563278,-129724.049753847,-57508.9754908523,54911.1014255545,16380.1140808317,21545.2172123008,-338894.195722226,-387114.985818922,-325810.571111279,-482884.310280283,-364060.731050775,-439043.68526919,-491036.147457694,-432293.767486711,-499461.947876939,-366594.283461801,-415669.341595764,-269603.846187323,-317127.276365045,-322368.301487089,-103328.052143629,-134250.587017346,-290727.902624774,-228271.246561613,-185670.689801987,-179163.69959381,-228002.114775782,-247021.519709154,-317278.417548069,-450478.361493255,-664184.990251236,-190974.234812751,-215442.278807181,-203116.358107424,-175385.376812681,-222154.146162454,-223364.853379661,-558679.99311448,-509328.346027957,-540163.982122183,-576652.215830105,-490866.66708153,333292.242245994,282959.126916202,244089.075131992,-401011.227328687,-478051.333724371,-510019.028891918,-595849.871150188,-455537.463327662,-544090.701380617,-435443.882475345,-219388.208523837,-31330.4197198603,333158.157555775,-474042.801609297,-521916.63150775,-456689.96212373,-512132.733290626,-664259.092826286,-594776.624336463,-451376.984948633,-385572.050319057,-473138.974071797,-540697.331775875,-416501.781832652,-525460.333953589,-374861.712684602,-352314.235759373,-302157.118342851,-369642.74236704,-589316.641572329,-478276.022279556,-446790.091509476,-509381.572311336,-562904.598074923,-603241.836258397,-663940.820258082,-615822.077374734,-353446.761419615,-266106.083328513,-263871.017543923,-303006.513477614,-566893.967136981,-663903.815846199,-626322.204224881,-334394.712466941,-623281.464058893,-558897.434224825,-608701.300212231,-663978.574467021,-663972.504690321,-615519.715133934,-568131.949808331,-604196.798907089,-521498.717395698,-546140.354583444,-621559.132646447,-664037.553795976,-663710.520080841,-599705.694305936,-596711.400586814,-622111.242031116,-622725.488663883,-571681.811290548,-621780.311754908,-548096.741761572,-526134.127910783,-541606.279795145,-664107.186843013,-617191.011759634,-612930.401513427,-566064.389765781,-6464.65088905593,-471795.33224365,-452761.285505482,-264715.531973872,-129938.367363577,-148932.072183344,-663954.018003196,-625240.738383672,-615241.880127295,-593667.808086684,-604054.050493,-664072.31791331,191368.092136629,271053.678766517,271329.297160615,235105.878761696,271032.336188257,333155.281118545,-664183.78961967,332425.019198703,333190.336159122,-663281.919603159,-165930.96181448,-165819.243507414,333258.954456386,-165751.972207927,-664124.724112264,83504.4995653986,-415998.335137672,-415260.226815994,83522.3990650858,333281.367637308,83930.68745343,-41176.8713323648,208522.21552419,83642.5192107105,-40928.4309599389,-103473.844278211,-40909.3952168556,21287.2212043882,21547.1956648056,51941.3933602526,208676.88516163,126678.551787225,21100.0951757276,84415.3532975986,146041.652585552,117957.887576162,146197.78767492,70598.0115371591,45004.7833301691,-46804.3030866675,13321.0608986109,208426.355950135,150047.113408057,123761.592574554,212509.299598335,153830.700361928,92857.3001080295,333279.142623958,35136.8490906636,227688.509914277,76603.9090259575,89475.847079137,203582.038625859,333300.99832146,274840.5838331,261219.404693506,168800.926394441,333258.180317426,16835.0255066947,177279.727116197,277249.879155768,62339.1059248228,36340.3846064656,-48736.7580185534,58609.9731094281,148737.522692919,197892.980965367,256653.010881372,172632.431544577,123874.614935797,145498.133710879,237952.311004062,333255.784643761,97651.3208109005,333151.117772408,137468.675884035,138573.867292265,333173.623577183,231313.518396476,190348.652414515,182878.838489641,213891.57819207,208584.344608293,259813.47704953,184526.935775589,106865.6729277,155291.1373032,84115.9566801228,172236.924588272,177396.321293724,332807.211236008,257072.171238775,333226.955220011,280484.068990769,285033.729595484,333099.163839665,275100.993359437,289004.572926977,241451.303650257,-103169.72245597,-415762.417207038,-34716.6225904214,-137758.135022125,-90228.6809037722,-88571.5822951931,-130849.061170967,-163612.747626961,-210294.611130818,-173305.516198767,-290505.543184093,-107480.448387215,-228081.724589096,-260102.174626725,-142629.649693559,-194833.224043538,-308261.033564532,-251574.994110746,-293333.188019034,-259790.887998951,-332372.63349168,-234250.541132094,-383561.79146509,-336494.210848987,-373906.113820572,-134065.542883093,-53831.9345591209,-210215.777906753,-353264.301685425,-664191.941318774,-338351.445015495,-137028.141735759,-225281.720552288,-90163.0664802423,-175754.849083567,-219988.475808933,-63244.9962764272,-27821.5031154259,11493.2378463164,-5570.3245338672,-450331.706313564,-333719.94418758,2913.93559429298,797.639417015231,-97412.6465562592,-57503.251662455,-110340.682525742,-5903.85922857263,10457.5486486554,61253.5573989719,-45620.9334710011,-75302.0891148774,-96744.0780134186,-114218.977164399,-167244.226199554,-183369.555539996,94046.8923361363,34043.5233573895,106525.455107935,-157064.817084621,-223860.619194516,-20806.0157651678,-66178.1086190393,-56714.8534899471,-153345.748534535,6453.33116791366,-216750.752440945,-313442.573948662,-261830.691367783,-280136.597710162,-283740.382474531,-396778.199281728,-283567.410891463,-343757.985318372,-267201.712692534,-419511.500805614,-340768.990240213,-392601.970929878,-496844.550846245,-441786.268143299,-663916.103586695,-476553.481680978,-445404.148417742,-403189.553816388,61869.8585734915,66124.9543602491,116112.409430569,48783.5221729048,127185.967393315,-17490.987095258,208749.538700421,118968.435851056,220351.809299941,181129.886054468,169428.308636843,236321.651506983,146513.490239144,207457.646432617,271584.9213462,268836.067076071,332979.995591969,290377.149043864,269135.237537872,-234006.122951057,-289871.518307707,-457616.979400364,-122400.874691569,-40706.7891251389,-373753.670122988,-445627.291623628,-492682.374856225,-410215.004439932,-664248.751708173,-532286.338850272,-343759.412805917,-563033.690021549,-76944.9959563278,-129724.049753847,-57508.9754908523,54911.1014255545,16380.1140808317,21545.2172123008,-338894.195722226,-387114.985818922,-325810.571111279,-482884.310280283,-364060.731050775,-439043.68526919,-491036.147457694,-432293.767486711,-499461.947876939,-366594.283461801,-415669.341595764,-269603.846187323,-317127.276365045,-322368.301487089,-103328.052143629,-134250.587017346,-290727.902624774,-228271.246561613,-185670.689801987,-179163.69959381,-228002.114775783,-247021.519709154,-317278.417548069,-450478.361493255,-664184.990251236,-190974.234812751,-215442.278807181,-203116.358107424,-175385.376812681,-222154.146162454,-223364.853379661,-558679.99311448,-509328.346027956,-540163.982122183,-576652.215830105,-490866.66708153,333292.242245994,282959.126916202,244089.075131992,-401011.227328687,-478051.333724371,-510019.028891918,-595849.871150188,-455537.463327662,-544090.701380617,-435443.882475345,-219388.208523837,-31330.4197198603,333158.157555775,-474042.801609297,-521916.63150775,-456689.96212373,-512132.733290626,-664259.092826286,-594776.624336463,-451376.984948633,-385572.050319057,-473138.974071797,-540697.331775875,-416501.781832652,-525460.333953589,-374861.712684602,-352314.235759373,-302157.118342851,-369642.74236704,-589316.641572329,-478276.022279556,-446790.091509476,-509381.572311336,-562904.598074923,-603241.836258397,-663940.820258082,-615822.077374734,-353446.761419615,-266106.083328513,-263871.017543924,-303006.513477614,-566893.967136981,-663903.815846199,-626322.204224881,-334394.712466941,-623281.464058893,-558897.434224825,-608701.300212231,-663978.574467021,-663972.504690321,-615519.715133934,-568131.949808331,-604196.798907089,-521498.717395698,-546140.354583444,-621559.132646447,-664037.553795975,-663710.520080841,-599705.694305937,-596711.400586814,-622111.242031116,-622725.488663883,-571681.811290548,-621780.311754908,-548096.741761572,-526134.127910782,-541606.279795145,-664107.186843013,-617191.011759634,-612930.401513427,-566064.389765781,-6464.65088905593,-471795.33224365,-452761.285505482,-264715.531973872,-129938.367363576,-148932.072183344,-663954.018003196,-625240.738383672,-615241.880127295,-593667.808086684,-604054.050493,-664072.31791331,191368.092136629,271053.678766517,271329.297160615,235105.878761696,271032.336188257,333155.281118545],"Archive805_field8":[94184.9999999999,94185,94185.0000000002,94184.9999999997,94184.9999999999,94184.9999999999,94185.0000000004,94184.9999999999,94184.9999999999,94185.0000000001,94185.0000000001,94184.9999999999,94185.0000000002,94185.0000000003,94185,94184.9999999999,94185.0000000002,94185,94184.9999999999,94184.9999999998,94185.0000000001,94185,94184.9999999999,94185,94185.0000000001,94185.0000000001,94185,94185,94185.0000000001,94185.0000000002,94185,94185.0000000001,94185.0000000001,94184.9999999998,94185,94185.0000000004,94185.0000000002,94185.0000000003,94185.0000000003,94185.0000000003,94185.0000000002,94185.0000000004,94185.0000000001,94185.0000000004,94185.0000000003,94185.0000000002,94185.0000000003,94185.0000000004,94185.0000000003,94185.0000000004,94185.0000000002,94185.0000000003,94185.0000000001,94185.0000000003,94185.0000000003,94185.0000000001,94185.0000000001,94184.9999999998,94185,94185.0000000003,94185.0000000004,94185.0000000004,94185.0000000003,94185.0000000002,94185.0000000002,94185.0000000004,94185.0000000003,94185.0000000001,94185.0000000003,94185.0000000001,94185.0000000001,94185.0000000003,94185.0000000003,94185.0000000002,94185.0000000002,94185.0000000004,94185.0000000002,94185.0000000003,94185.0000000003,94185.0000000001,94185.0000000002,94185,94185.0000000001,94185.0000000001,94185.0000000001,94185.0000000001,94185.0000000004,94185.0000000004,94185.0000000004,94185.0000000004,94185.0000000003,94185.0000000003,94185.0000000003,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999998,94185.0000000001,94185.0000000001,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000002,94184.9999999998,94184.9999999999,94184.9999999999,94185.0000000001,94184.9999999998,94185.0000000001,94184.9999999999,94184.9999999998,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185,94184.9999999999,94184.9999999998,94184.9999999999,94185,94185,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94185,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94185.0000000001,94185,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999998,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999999,94185.0000000001,94185,94185.0000000001,94185,94185,94184.9999999999,94185,94185,94185,94185,94185,94185.0000000001,94185,94185,94185,94184.9999999999,94185.0000000002,94185.0000000001,94185,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999997,94184.9999999998,94184.9999999999,94184.9999999999,94185,94185,94185,94184.9999999999,94184.9999999998,94185.0000000001,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94185.0000000001,94185.0000000004,94185.0000000004,94185.0000000004,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94185,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999998,94185.0000000001,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94185.0000000001,94185.0000000001,94185.0000000001,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94185.0000000001,94185.0000000001,94185.0000000001,94184.9999999998,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999998,94184.9999999999,94184.9999999999,94185.0000000001,94185.0000000002,94185.0000000001,94185.0000000001,94185.0000000003,94185.0000000003,94184.9999999998,94185,94185.0000000001,94184.9999999998,94185.0000000001,94185.0000000001,94185.0000000002,94185.0000000001,94184.9999999999,94185,94184.9999999999,94185,94185,94185.0000000003,94184.9999999999,94185,94185.0000000001,94185,94184.9999999999,94185.0000000001,94185,94185,94185,94185,94185,94185,94184.9999999999,94185,94185.0000000001,94185,94185,94184.9999999999,94184.9999999999,94185,94184.9999999999,94185.0000000001,94185.0000000001,94185,94185.0000000001,94185.0000000001,94185,94185.0000000004,94184.9999999999,94185.0000000002,94185,94185,94185.0000000002,94185.0000000004,94185.0000000003,94185.0000000003,94185,94185.0000000002,94185,94185,94185.0000000003,94185,94185,94185,94185,94185,94185.0000000001,94185.0000000002,94185.0000000002,94185,94185.0000000001,94185.0000000002,94185.0000000003,94185,94185.0000000001,94185,94185.0000000001,94185.0000000003,94185.0000000001,94185.0000000001,94185.0000000002,94185.0000000001,94185.0000000001,94185.0000000002,94185,94185,94185,94184.9999999999,94185,94185.0000000001,94185,94185,94185.0000000003,94185.0000000002,94185.0000000002,94185.0000000002,94185.0000000001,94185.0000000002,94185.0000000001,94184.9999999998,94185.0000000001,94185,94185,94185,94185,94185,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94185,94184.9999999998,94185,94185,94185,94184.9999999998,94185,94185,94185,94184.9999999999,94185,94184.9999999998,94185,94184.9999999999,94185,94185,94184.9999999999,94185.0000000001,94184.9999999999,94185,94184.9999999998,94185,94185,94184.9999999999,94185,94185,94184.9999999998,94184.9999999999,94185,94185,94185,94184.9999999999,94185,94184.9999999999,94185,94185,94185,94185,94185,94185,94185,94185,94185,94184.9999999998,94185,94185.0000000001,94185,94185,94185,94185,94185,94185,94185,94184.9999999999,94185,94185,94185,94184.9999999998,94184.9999999999,94184.9999999998,94185,94184.9999999998,94185,94185,94185,94184.9999999999,94185,94185.0000000002,94185,94184.9999999999,94184.9999999998,94184.9999999999,94185,94184.9999999999,94185,94185,94185,94185,94185,94185,94184.9999999999,94185,94185,94185,94184.9999999999,94184.9999999999,94185,94185,94185,94185,94185,94185,94184.9999999998,94184.9999999999,94185,94185,94184.9999999999,94185,94185,94185,94185,94184.9999999999,94184.9999999999,94185,94185.0000000001,94185,94184.9999999999,94185,94184.9999999999,94185,94184.9999999999,94185,94185,94184.9999999998,94184.9999999999,94184.9999999999,94185,94185,94184.9999999999,94185,94185,94184.9999999999,94185,94185,94184.9999999999,94184.9999999999,94185,94184.9999999999,94185,94185,94185,94185.0000000001,94185,94185,94185,94184.9999999999,94185,94185,94185,94185,94185,94185,94184.9999999998,94185,94185.0000000001,94184.9999999999,94184.9999999999,94185.0000000004,94185.0000000003,94185.0000000002,94185,94184.9999999999,94185,94184.9999999999,94185,94185,94185,94185,94185,94185,94185,94185,94184.9999999999,94184.9999999999,94184.9999999999,94185,94185,94184.9999999999,94185,94184.9999999998,94185,94185,94185,94185,94185,94184.9999999999,94185,94185.0000000001,94185,94185,94184.9999999999,94185.0000000001,94184.9999999999,94184.9999999998,94184.9999999999,94185,94185,94184.9999999999,94185,94185.0000000001,94185,94185,94184.9999999997,94185,94185,94184.9999999998,94184.9999999998,94185,94184.9999999999,94185.0000000001,94185,94185,94185,94185.0000000001,94184.9999999999,94185,94185,94185,94185,94185,94185,94185,94184.9999999998,94185,94184.9999999999,94185.0000000001,94185,94184.9999999998,94185,94185,94185,94185,94185,94185,94185.0000000001,94185,94185,94185,94185.0000000001,94184.9999999999,94185.0000000001,94185.0000000001,94185.0000000001,94185.0000000001,94185.0000000002,94185.0000000001,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94185,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999998,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999998,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999998,94184.9999999998,94184.9999999998,94184.9999999998,94184.9999999999,94184.9999999998,94184.9999999999,94185,94185,94184.9999999999,94185,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999998,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94185,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185,94184.9999999999,94185,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185,94185,94185,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999998,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185,94184.9999999999,94184.9999999998,94184.9999999999],"Archive805_field9":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive805_field10":[0,-316.47414618024,503.570719616511,0,345.196076953798,0,1931.9719447932,0,0,732.199715563144,128.425001192599,138.640681628331,1043.70257614093,1620.93832834634,-428.710176367274,-445.057877007889,754.351854492871,-135.055285639289,0,447.961260241435,-1126.41930499683,-308.538991361232,-556.215894849212,-384.087846951468,-73.37036596777,-93.8070376100479,182.689163164294,-323.408409370315,424.242467445161,702.218517357375,-313.139004146997,124.966353970078,467.426984936598,651.737891171336,866.361910394083,1334.28054052412,1090.49378386563,1258.82231588544,1143.68787635337,1368.14367235033,1015.79059821769,1833.19050472907,1483.9311207698,1450.47235264822,1294.59572524978,1319.20716248737,1370.1415318631,1730.03485426398,1504.36054533268,1525.76871905921,836.427952712962,1276.52265299807,1376.50717512117,1265.41710080925,1390.38185794051,1274.4477957293,1096.34250548383,543.199687493674,680.927429497799,1193.53500567285,1353.80440911072,1607.4354210635,1301.61861748338,1159.94022847655,1085.53437493389,1334.75042690356,1491.59289346388,863.027221434254,1384.20860890243,770.55224644463,912.312197655929,1808.39933305954,1433.33068541177,1146.04512221798,1214.16246664578,1405.31089267404,844.517331266756,1427.85818494598,925.961887149796,227.0206504159,537.398946326061,-873.768495691865,84.4392005880565,457.366281221202,546.386964635132,729.407342790885,1897.53010540072,1692.93367680968,1649.89758327213,1644.50927426648,1207.70955095435,1459.81132129517,1180.66695191856,0,0,35.2446994453168,324.764386328306,429.374063249705,346.602797619337,304.032672704627,256.816127822515,204.925692791184,315.656810083483,0,469.644658311798,0,173.404550861823,345.119326453556,254.663239781018,166.98191368899,196.59370741079,152.618368064088,216.168658235092,131.587367595455,224.874887184904,122.502327451111,142.062874991422,143.533301351401,424.468427018646,315.1809127269,212.582371516572,0,0,172.121968091423,398.723771000321,266.144923152029,594.936439498169,335.268402655381,280.404913552513,851.441975275005,1117.51560178651,1153.60507737643,2150.95723568462,115.981887909612,164.861898956228,667.63156927612,729.517703856963,467.827471431841,493.048257761869,464.370824309936,441.563156785737,612.727173593314,476.982898689825,636.187461156164,429.113712176716,561.14201038106,512.11051181781,359.416272043565,308.437466560914,545.868307755411,260.771347812147,383.594832852258,359.233466030339,270.58361560827,229.935639465893,320.296767993407,329.240699039576,289.507260511846,27.8952545859076,282.298363254336,203.258379979019,239.794184171571,222.461831361239,219.56967732612,161.341942504303,206.856522459985,185.697597907264,225.678464983958,155.04641349357,180.874939807281,164.651097925608,132.447495065398,147.504392509273,0,132.127882236705,143.798910084467,151.525600367017,20.8911062683327,-520.207108076762,-148.266644961298,-193.014835099222,-312.130122126543,-787.934539940142,-730.02194186135,-717.433356376992,-184.050628210463,-168.313374428754,-458.620372884354,250.463794595775,-869.609181861157,-497.537026123132,-560.127381561014,-202.805359471109,1008.69919113828,536.47857424748,108.728838970444,261.321457738622,207.530810590403,128.264634332029,224.778524154773,0,168.382904575269,137.054658256335,123.979406323156,143.08108513054,0,106.81435338434,169.70452960947,114.584621966403,302.844680703243,268.494414151047,242.868782059841,-766.546786989318,-752.769386310304,-1075.62829214982,180.254798002889,155.968735150287,192.185466151664,129.581049446646,176.017619577248,138.521078787765,117.819426026311,146.327013278703,130.943727707407,150.442517658168,0,193.632355892634,173.241927005954,151.06724496197,0,188.764692142783,0,155.205907884901,162.003286677929,176.154346226824,0,167.235038318393,199.981394018415,124.417553476756,0,215.928187949382,219.985857429478,181.094747291493,290.784568801481,234.232954092569,249.628308520621,92.3516780649668,105.160303759379,0,100.321642781043,91.9087345145919,1912.00754296709,1679.68846683092,1543.87440689078,119.134867492205,0,84.5751821648698,93.6020485495496,101.550950219415,84.7028721107225,105.192999670009,261.400691914028,1083.31904657403,78.4898289073131,116.407036424625,90.6771132443329,107.449126530298,101.857489572415,0,90.6866985553398,84.8352509087132,122.213420353458,93.837127073627,0,102.586073100159,75.4673679922045,107.496155029238,115.258186686179,113.430800513973,138.067296842392,74.9532085974956,0,81.1937366095436,74.3493542490896,72.0860403926889,0,0,70.6224415209737,0,116.613784267178,140.430038748282,140.357699080676,85.6096412071743,0,68.6614979388226,106.161039349103,81.7502580173941,108.74597367409,103.774385993264,0,0,112.569904988362,116.728242418781,105.863308309696,124.588489706078,121.578822478164,112.918241122861,0,0,114.961905231437,115.550622218855,105.07460169278,95.3342282025614,98.0885669545317,120.674031823812,121.120235805879,122.413453384434,113.582240673283,0,103.314978251356,112.13340993802,113.93788312611,-1268.57283593039,139.219701168801,143.057353937413,177.418395780531,346.995305424833,350.227964412041,0,94.641323056044,90.9339718974411,82.6158365336659,0,0,240.571468942781,731.501395973329,207.916741734103,323.8358575322,1094.97899538034,939.317554871429,0,-317.279229059453,502.582825700794,0,345.506296736455,0,1931.11130642802,0,0,731.194494407226,128.488738426709,138.709548307533,1042.85381254768,1620.39013843903,-429.079209268659,-445.780919009806,753.297008058097,-137.678562892929,0,448.333085215905,-1128.27274638705,-506.723062236985,-418.216869357446,-472.838325041664,-74.2150471158552,-94.5814425097593,33.0524474211548,-324.485258583599,423.057751658476,700.806865030023,-313.78051271455,123.065478172087,463.959188932707,652.049621359948,749.731084953569,1333.81481051866,1089.71954176618,1258.48543477276,1142.90413360706,1367.81731263576,1013.02377131015,1832.40976864542,1496.14231884037,1449.75179189892,1296.01683307297,1321.15401823982,1370.0048931171,1729.35671020728,1503.84376819585,1525.12738882415,835.51280626984,1275.71607333891,1413.47704481713,1264.65170971246,1389.77624258554,1277.11774434915,1054.46213082468,543.957049440988,677.842119327635,1193.34191114047,1352.97660095307,1606.54095704883,1301.44956327448,1159.65789541165,1084.76381853821,1334.1462213067,1490.95563159734,863.246579077266,1383.022112018,769.272039017116,910.857769129982,1807.45797528264,1432.37427840851,1144.95338913592,1213.08583039518,1404.33701958815,843.316295353201,1426.81133946385,924.68883899567,226.445997234824,536.297043826309,-874.249714680228,83.3080813081873,455.969704977313,545.187869637321,728.170519222582,1896.65296813936,1692.03366223739,1648.96724883183,1643.47399731159,1206.53072129657,1458.75664044742,1179.53305851913,0,0,35.2240270470705,324.884794485589,429.593632991309,346.793696194563,304.123758057177,256.933826863412,205.011432217618,315.871132288814,0,469.836516157126,0,173.481071311995,345.310792086755,254.794794393837,167.060753163019,196.681857187134,152.667652832211,216.282330965534,131.633495505062,224.987984368323,122.537282672135,142.11514905808,143.597972733125,424.816261741431,315.435386411333,212.679249647242,0,0,172.211614403642,398.963947931022,266.315425115563,595.388508491469,335.492051910186,280.60999172871,852.031829096064,1118.97464873605,1052.40609868788,2154.32399394863,116.030459606188,164.940779453763,562.490475351433,676.639779617593,468.067530074932,493.417722656324,464.461904112126,442.312125317081,591.700817535463,442.014293296353,636.825716717691,429.316765058272,561.46027780292,512.636127454168,359.672550697597,308.640889306449,544.732469862673,200.555214378877,381.803206192103,359.549199823227,270.761530618029,230.010848843577,320.392402547216,329.286361400732,289.62292961733,-65.2085188747574,282.484998678354,203.386153711365,239.958934069459,222.602963277411,219.720612487333,161.442122077275,206.985522086187,185.813912109172,225.834810238942,155.138707486744,180.986439476582,164.756245974067,132.535309003825,147.590313859798,0,132.199719129911,143.880704528391,151.615675623971,17.7099467838834,-523.451009407551,-149.51444995491,-338.831621553189,-312.374848931571,-789.564233473866,-730.563631353398,-717.865389968283,-184.898297206677,-169.224704038549,-459.393080722506,249.320621597154,-869.937260300403,-498.164181882231,-560.842867803679,-203.62902656897,1007.45415037015,535.291873072156,107.68788420002,261.508147010235,207.657429299478,128.330558551299,224.834230707488,0,168.479527066869,137.131828631718,124.061103523973,143.16364525092,0,106.861489924186,169.803557296305,114.636385415679,303.013304617633,268.604766485,242.959328845491,-896.812070872656,-812.663020099866,-977.243421142436,180.355618673601,156.052084833712,192.29997387398,129.647333449254,176.12367465755,138.590747032247,117.878148289904,146.410515352783,131.018536649005,150.522539976125,0,193.742382164135,173.340386990335,151.140568519692,0,188.829599479869,0,155.262989623137,162.070574007793,176.209137630773,0,167.306670138096,200.108940537732,124.470122866833,0,216.055181970283,220.124432718944,181.167550084779,290.991655644778,234.373642813566,249.799556771941,92.3763108565142,105.208088043261,0,100.344859826506,91.9336075267981,1911.14669423278,1678.88145459018,1543.00584867648,119.182964506195,0,84.6096059279686,93.6734830696774,101.60290290909,84.7098217725558,105.227031927178,261.558322698306,1085.43973860179,77.5979574974667,116.466799624545,90.7201992118775,107.494631622978,101.903385826702,0,90.7353675471667,84.8595540689795,122.269512485182,93.8727056046616,0,102.628572764654,75.4847188544945,107.536134611577,115.290408867352,113.443606526982,138.134754978426,74.9694981535613,0,81.2351526537193,74.3727197717958,72.1019353483468,0,0,70.6772888298423,0,116.66783131639,140.492420014878,140.423395278442,85.631609934782,0,68.6910696621024,106.201900829091,81.8154504788278,108.768062897497,103.865836805392,0,0,112.670368144776,116.757400598123,105.927139240241,124.669488715674,121.622747994059,113.075512982474,0,0,115.046872157826,115.615091560444,105.195419346529,95.4553664270336,98.1062652558978,120.862047686534,121.184059327247,122.482847363594,113.634510243271,0,103.386855466431,112.289606502124,113.953370252095,-1271.72040661133,139.303983821868,143.138013836711,177.502937879051,347.184790489569,350.49004068402,0,94.7327162724328,90.9827351015665,82.6648042897294,0,0,239.531203912898,730.493054966114,206.924889060964,322.862057059366,1094.15662326097,938.378700368027,0,-319.711109469877,499.637650243957,0,345.881154568546,0,1928.51692170702,0,0,732.541108668856,128.564784691353,138.792636293785,1034.1784311908,1618.74472486696,-430.235733188925,-446.380156912089,750.045827334543,-148.667392574534,0,448.749260891856,-1129.92170934371,-695.070666094811,-517.99718373301,-610.757046307892,-76.6083498514281,-96.0521547069277,-235.454359177316,-333.090307510056,420.578815966283,696.696372480952,-315.913020796704,113.310784557037,451.873701348216,652.449034773303,621.928351905959,1332.08781999293,1087.88051216128,1257.74013115913,1140.56897303134,1368.61504183349,994.777161807779,1830.05287523435,1697.442559241,1447.64487903581,1305.23494792489,1329.51112629802,1369.34199310614,1727.28981083288,1502.33028441801,1523.28796007663,832.438979904556,1273.27295662324,1464.0717833929,1262.13459531702,1387.93900477583,1277.09946172103,1042.38997350177,544.647336615151,670.8003810724,1192.01042282407,1350.75208409236,1603.89310305613,1300.6641878646,1160.75209761606,1082.55005256687,1332.40316185831,1489.04951431862,868.674239018196,1379.50036211238,765.914863983429,905.712285977177,1804.63354648028,1429.48482254551,1141.68446450114,1209.97683957251,1401.42261732086,839.751451026117,1423.66501509085,920.901116022426,228.542426375691,532.309523556406,-873.917095299585,80.39320761854,452.193294031963,541.593138932076,724.322663285264,1894.02232631668,1689.32887941348,1646.17934172717,1640.34734064986,1203.01636533237,1455.59383004566,1176.10850601953,0,0,35.3008491466693,325.037542034297,429.862692057406,347.010740772318,304.245073329395,257.085227528208,205.115431295749,316.134921129187,0,470.085209652542,0,173.577765600227,345.548787846159,254.95876313497,167.157478711067,196.791491662951,152.728665834825,216.422100500349,131.687924965727,225.127984256,122.579193418998,142.180059346352,143.676715620209,425.24839717126,315.708686030019,212.799457477884,0,0,172.320372551734,399.270415544158,266.525438624661,595.975685807388,335.768233742562,280.861210452113,852.92196376587,1120.55226350622,1027.99529066866,2157.52456116171,116.089213398859,165.036920653796,461.778725338231,632.335951566894,468.360949861446,493.780042780082,464.615102415527,442.953158507815,508.76296523813,356.205586804707,637.645134317188,429.591550644939,561.903697868042,513.261178755107,359.994830427808,308.892793748398,540.524639385698,222.591618786352,375.607784718155,359.933995135985,270.982570603644,230.288027391008,320.500256875245,329.353920893107,289.762563799183,-122.019776658662,282.715139936687,203.540834921649,240.160619857608,222.775533584473,219.903991097485,161.561560225689,207.142766938027,185.953957856848,226.025013995455,155.248322010097,181.120773110476,164.881826921368,132.638124995571,147.691545648771,0,132.283585543682,143.97681745202,151.723333411489,1.46775388267058,-533.076706316177,-159.050260798358,-531.280217187059,-310.155257527336,-790.787160043435,-732.261791971801,-721.920010175743,-187.314577915385,-172.673891739305,-461.638265255988,245.92968827417,-870.423889121134,-500.158314494018,-562.949832289709,-206.097499691849,1003.75534424093,531.752774633343,104.544537452968,261.736804743751,207.812103091278,128.409594863516,224.910613985916,0,168.595615785235,137.222575941559,124.160215950443,143.262369156321,0,106.907876302805,169.922781164031,114.692457164495,303.186499163934,268.748829312351,243.065641053565,-1159.91914921028,-920.900544703238,-1022.81767263492,180.477891429408,156.152616428735,192.43892358193,129.725492842171,176.251031656009,138.673778863381,117.947792029196,146.50988360177,131.105580834427,150.619158943335,0,193.876926928276,173.460091436332,151.229766583662,0,188.911105589645,0,155.332894504273,162.152438961918,176.273309913384,0,167.395206592041,200.263578880741,124.532969719772,0,216.211778369511,220.295552938301,181.256174582695,291.249477512601,234.546924935382,250.009841682663,92.4046179387072,105.265368106573,0,100.371500623021,91.9635288693841,1908.56322336373,1676.43538825422,1540.39418885205,119.239665299765,0,84.6498573131095,93.753168799322,101.667218441479,84.7178940885711,105.268831492968,261.753787801781,1087.67851745584,74.9213120887383,116.539260414615,90.7715743198144,107.548882122811,101.958413089394,0,90.7835630358623,84.8895544286472,122.337907612303,93.9158469431841,0,102.680876345308,75.5044869775696,107.582418999139,115.327809678007,113.458168871114,138.216489109344,74.9898738503409,0,81.283874511642,74.3981283705304,72.118027206349,0,0,70.7293246930581,0,116.733312904256,140.570441454753,140.504403764521,85.6591097843748,0,68.7191207017324,106.247395194444,81.8761485749963,108.787868483493,103.96219506867,0,0,112.74294900835,116.786488368421,105.969620919237,124.764574613648,121.670811296546,113.18374366412,0,0,115.126285125939,115.667313825658,105.283594239125,95.5586594778839,98.1315553324801,121.01157685242,121.259279298837,122.562340026908,113.695770949518,0,103.456440713541,112.397540423105,113.970789057976,-1274.09628394901,139.403060061543,143.233280581866,177.606710197115,347.412852873949,350.817688985375,0,94.8104441910688,91.0279848488237,82.7197403655339,0,0,236.151048822221,727.520645439636,203.918003448297,319.962803830423,1091.69321376406,935.55447745703],"Archive805_field11":[0,101.026887725914,57.2443113264151,0,25.4586717702889,0,149.930214018478,0,0,30.9600597108422,9.99354017536422,9.63794882433198,110.070679086348,134.376910923665,23.1011110963745,155.547066440326,57.4336138333766,55.5645992194149,0,40.5015569502658,-78.2581585031164,60.4841303236832,5.88309848878847,40.0400141352944,44.7516187717208,52.0287696202188,70.4372508015316,42.1102947085817,56.2810793481611,42.4696553193197,40.3562665556291,62.4251844046371,46.987598034285,23.7791080925207,16.7000447482383,98.2609538563642,61.4420639424318,84.2844669357609,74.6163506104021,76.3270542864865,20.5234931058736,150.646824677732,4.30861837985556,130.252962010038,14.9848218817152,48.226597988692,114.884596422388,146.195851542499,123.75224890842,132.199677420883,54.3005632041733,88.7365264907268,73.9117306581514,125.524951235556,103.700160610527,77.1887705477506,102.258173818581,43.0939484082432,157.485129568896,120.888920692854,128.635743683523,137.227908958524,115.237217342587,105.768206939635,121.39619738626,98.1689632706813,113.143869614055,134.70600491038,132.946798710801,131.302534435872,124.136172958107,140.1875833004,129.525408123816,121.605211434077,121.646234338995,129.243761849227,137.272882238447,130.362765611579,127.20958319865,202.407722951421,133.750731079581,46.1524257046477,143.101240182301,149.103206159862,144.044986397334,141.474973284131,146.479477218168,139.403512204692,136.739678595275,133.597170301001,132.294374553537,131.757638846294,130.290502519276,0,0,112.225209520399,18.0886979238585,-16.4180260209293,-10.3916314359559,25.5949814717387,2.31990759137198,13.7835310146659,18.5587449182861,0,63.385659421458,0,5.81395861819226,22.9349378245618,17.2239150470997,11.5302445278759,12.8459116647051,10.5069544438961,14.61550717231,6.12872570328386,14.7452231161698,8.27771107430017,9.54348082118315,9.72882692137546,30.563876294329,-31.5521254580899,14.0781412047974,0,0,12.1593345583273,28.4618538248155,18.1900377232249,-37.5024796486098,22.6840489070562,20.4870324949825,85.63209536533,38.3133272807306,19.7524978185114,-55.17713111941,8.05448413589731,11.3490903751805,28.5984213420768,111.240548058013,25.4368684748126,36.0843148930086,44.5714155591598,331.240095535581,184.112601395332,214.751659574079,147.540727393516,20.9895974258048,78.6351462410038,43.2212784734574,23.7317593208368,23.3247899839814,191.197619478441,245.761930870904,213.851352947272,27.5545372698449,20.1625722892711,334.80943114475,17.0476828892193,14.2533414692012,28.2599461352478,144.971288251053,21.2728663641288,15.1262506719989,17.4512953258476,16.0055118478917,16.3206906402926,11.9492660549398,15.6067486484601,13.6529370770003,16.9729888053658,11.4367821740269,13.5636324253578,12.0764329292662,9.70298936751698,10.8578277569038,0,9.94590476637744,10.7675464305716,11.4361640480328,165.03798261799,69.1512736040264,136.500051087015,113.250070078366,106.249577312028,-29.8854252475996,63.762093295191,60.384554036881,116.537422943402,122.834698289912,89.140563756172,140.813116375232,46.3835675438999,87.2468620779281,83.1093130681352,112.498338534155,139.51770129751,142.814749120921,132.719360279404,18.5558339756603,14.4148998117211,9.91577658060242,23.3815916412557,0,12.1679304196804,10.3619516245428,9.26290566784039,10.8545207313334,0,7.74886033397241,12.9215165659232,8.09706299096315,17.6720649728634,21.0654336606246,3.82775520715404,50.5325701104687,26.6087970701549,40.4197252355362,12.7778395110601,11.0962686008851,13.5834545801162,9.29880813344549,12.6244501939225,9.82654190849206,8.38460994252297,10.4261118555703,9.5295334720854,11.644495355406,0,15.2016922608711,13.1091304560307,11.9469601730467,0,26.2061893180269,0,13.8091296031944,15.0120501086597,15.137789477763,0,13.5325364545282,14.3864619254347,8.83349854972484,0,18.2507119087285,16.9882255966975,16.0448710749114,22.486529982239,18.4098738879423,19.4081813965635,6.25475628664248,7.24972545803959,0,7.09544662963627,6.75008511282747,151.023768372432,141.626888022193,135.252627290897,5.41563951884223,0,4.85518906324022,7.05278995665813,3.72472710893736,3.67082324459366,7.82230517634288,18.440536871535,173.445280137177,129.850742337053,8.72372084064925,6.78589659664608,8.43806051325536,7.38951894866659,0,7.77924541849694,6.62128860951541,9.58782454719741,7.49630400209464,0,7.25308193208833,6.18067029607121,9.12171991255354,10.4410738210123,9.83414966575373,10.48973741617,5.91688666150542,0,8.63486370871935,6.09173906064411,5.62350265932259,0,0,8.01555166578754,0,12.6109132587211,9.90182621492424,11.0431831159502,6.12522157064852,0,7.5416408534017,8.18957811498894,9.83453497923502,9.12621581925611,9.63140692092845,0,0,9.68612937143081,8.56375697350664,9.52609460610229,9.21281094212224,8.55379651218203,9.84364128889551,0,0,8.47227179844353,10.1425271357743,8.43651675101873,10.7709023187149,7.15733422466767,8.58622785628525,8.91109145440123,8.98927673873443,8.59815395941578,0,6.21423807682761,7.22262147568863,8.67826223693702,37.2177205383513,10.2218224897378,10.3279040888862,13.7415578185479,38.1488969270198,27.1346928702426,0,6.12302903993455,6.00959369903658,5.9678645943244,0,0,51.3941381703119,61.0700824136002,48.4555098780716,52.0589708357112,75.3859920473047,70.2291352941224,0,100.96550689132,57.2149946730566,0,25.4803429049626,0,149.893633935924,0,0,30.9070360416917,9.99836291959312,9.64289752878152,110.136832407742,134.306811509434,23.0191970848725,155.851280458125,57.4124644628824,55.5505847192677,0,40.5170469521241,-78.277944135897,40.0773257662152,2.07216684845999,22.7320178804476,44.7356901930713,52.0038988935056,80.6678079880272,42.0864492570338,56.2847579931719,42.4788605500477,40.3326239263312,62.5794857925626,47.3990031182638,23.7951828647844,14.7852325654745,98.1710494647846,61.363404814285,84.1109467504855,74.5428346808651,76.1577701931775,20.3902814472301,150.608357927701,-2.89605418645107,130.210573994892,14.484301918909,47.7355176763925,114.793033482017,146.147792239115,123.677911133425,132.144513367999,54.2681906163405,88.6794183324748,69.4470990827107,125.4853312995,103.621248532674,77.025947477708,97.3941150193316,43.0942721296645,157.465241755825,120.771267200858,128.625110184885,137.194492150871,115.160095727817,105.68431644716,121.384216144427,98.0875145540681,113.068590442912,134.689384767956,132.958976726571,131.429895892011,124.254817247124,140.156834305055,129.487442192214,121.584775195276,121.613980846682,129.215533739477,137.303041194539,130.347090391485,127.198134123705,202.718579326531,133.832652883006,46.1340316540524,143.072478497133,149.103862926172,144.034001774995,141.495866880768,146.443503741586,139.367810732842,136.707527995265,133.582639575063,132.306098935884,131.74232957164,130.303774124861,0,0,112.32654124553,18.0996384807114,-16.4279311666625,-10.4102573732722,25.6084217038786,2.32291194536227,13.7887061100303,18.5723106221618,0,63.4183305076132,0,5.81708361403172,22.9481419141621,17.233027026392,11.5359338257623,12.8523646757092,10.5107494507917,14.6235288082554,6.13103341163252,14.7530737771714,8.2802939008812,9.54717004959788,9.73341389645053,30.5889146788421,-31.5755972637933,14.0852460409977,0,0,12.1658709744532,28.4825544701847,18.2020788392959,-37.5328151158276,22.6992603615408,20.5020459621848,85.7081928494814,38.359528888082,15.898796870184,-55.1868605334032,8.05800012589491,11.354772414561,34.8151920818002,104.292895478371,25.4486491059513,36.1175157744216,44.5887503502145,331.662987341179,187.323505144134,236.822678378969,147.680525071897,20.9689779382725,78.7005963085227,43.2615803099242,23.7495561013807,23.3400702704518,191.601297879906,246.201032120027,214.497839755766,27.5778915684427,20.1760082148003,335.10304846605,17.0513587901012,14.2479917009875,28.2717952539665,91.2284437131797,21.2870458887124,15.1358026698486,17.4633892471203,16.015841841193,16.3318490182351,11.9566417143948,15.6162943259621,13.6614664552359,16.9845547482083,11.4436395041571,13.5719202118524,12.0841671133583,9.70944671095382,10.8641532643321,0,9.95123782759007,10.7736166487108,11.4428707112816,163.819302785566,68.7645787051136,136.333460572562,74.1612698629586,106.198043225195,-29.9647557766931,63.7002459753555,60.3424368998128,116.47009897386,122.747655228757,89.0556709759244,140.786088925185,46.3447694434443,87.1846118275979,83.0484912340905,112.433091142124,139.535444405842,142.809063418185,132.674340347912,18.5693145153237,14.4239306415207,9.9207458500605,23.3875853393947,0,12.1750435290605,10.3676974680667,9.26899779541239,10.8606549911915,0,7.75221340943989,12.9289050457132,8.100587136729,17.6834401521194,21.073488702033,3.82836434351119,38.7196801147529,19.5056092591748,31.2563150833773,12.7851804197139,11.1023545043544,13.5916997923283,9.30366336514687,12.6321436155862,9.83162038409943,8.38889563453855,10.4321660632857,9.5350523721411,11.6505176769858,0,15.2100511014532,13.1163862656434,11.9525251616114,0,26.2149961015406,0,13.813982525724,15.017477807941,15.1421899145364,0,13.5379988976416,14.3957430873955,8.83737023381006,0,18.2608052789072,16.9986157676982,16.0509350762412,22.5016499424992,18.4206164733108,19.421329449757,6.25646857652996,7.25314746396797,0,7.09718716812673,6.75209358423948,150.987145426903,141.590048735209,135.220964378017,5.41801926858253,0,4.8572554881306,7.05863063857276,3.72690827682036,3.67058850702314,7.82499927139846,18.4521264240328,173.633590465947,129.798963040459,8.72805293916395,6.78905796223183,8.44147164351884,7.39283145347235,0,7.78332450715853,6.62306452927305,9.59204580615895,7.49899677544852,0,7.25596993534745,6.18210261493201,9.12490526992961,10.4439049529454,9.83525397103713,10.4946822705921,5.91797141588225,0,8.63894621984645,6.09347474815907,5.62458482408711,0,0,8.02114357991735,0,12.6163000327871,9.90598271252632,11.0481298350201,6.1264004943701,0,7.54482442499381,8.19225833004466,9.8419128655809,9.12803864923913,9.63964327870954,0,0,9.69478578145709,8.56568464731009,9.5317767941824,9.21881493817638,8.55684879556374,9.85705387864125,0,0,8.47852824299265,10.148353922492,8.44621311237639,10.7836759635172,7.15806173746833,8.59990259458969,8.91574627478862,8.99444404628752,8.60222524173175,0,6.21873054121242,7.23323619289049,8.67962795005323,37.2220920523352,10.2280216901886,10.3337985565866,13.7478067980873,38.1741865010472,27.1538652042019,0,6.12926173482631,6.01302319783272,5.97149796444743,0,0,51.3835055450538,61.0393446216115,48.4334993699203,52.0389776276747,75.327751337238,70.1934973737465,0,100.780317033085,57.1295730695701,0,25.5086872553009,0,149.784076986928,0,0,30.1045999555397,10.0040388928521,9.64896395480673,111.096045723411,134.095589452566,22.5321729015834,156.126633978535,57.3475521763858,55.49737910574,0,40.546496039539,-78.3226371751786,27.8814184015932,-5.76027626772759,5.93075294274964,44.7033841099903,52.1018761706052,89.3230243442049,41.2724655489128,56.3830954669693,42.4579080633595,40.2538413796019,63.9748918390691,49.2285239234291,23.8100620427236,7.3622770066799,97.8944325681584,61.2128413945259,83.7094825439238,74.313766639264,75.5724638426737,20.2321601300634,150.493876651961,-30.1210875599301,130.087860793449,12.7814010131906,45.4771842847579,114.538531670128,146.00364324851,123.455417847895,131.97622332107,54.1493043384231,88.5059703403747,62.7402814224561,125.368593323191,103.385492484035,77.315238600371,73.5977204957054,43.1319150446298,157.31934125137,120.567283838319,128.566131399476,137.094019851551,114.89862839211,105.285116411571,121.366015015112,97.8465702004011,112.842608002821,133.805271255477,133.00563942892,131.753281561265,124.632328542778,140.065208365561,129.376509392146,121.521786241737,121.512974014228,129.127824777341,137.451113240525,130.292012253059,127.226499913677,205.546687141997,133.753695142553,46.1947321398544,143.192341281022,149.026497008965,143.996647488397,141.533743851823,146.335099667836,139.260674254727,136.612505058295,133.536619171998,132.337681989989,131.704067544092,130.318825238973,0,0,112.468117040328,18.1133456915695,-16.4407936694706,-10.425445984219,25.6226883909189,2.3274009360128,13.7954042346845,18.5887907201828,0,63.4620026999998,0,5.82155698879742,22.9651169506652,17.2446849842641,11.5431100827478,12.8605971620039,10.5153262364033,14.6335199219436,6.13403065966209,14.7630163892412,8.28336962711409,9.55184344596484,9.73913810930065,30.6190582394292,-31.6171027021772,14.0945709525139,0,0,12.1739065554102,28.5102016614859,18.2169899784008,-37.5625711014964,22.7183447934273,20.5206140300777,85.8085675985264,38.387350395589,4.58715685511067,-55.2208254844499,8.06242731729097,11.3618269045191,31.8605017322275,89.5706215266575,25.4662478649059,36.1450055887627,44.6062770835227,332.068630325471,206.668800950236,295.491857832499,147.83115030184,20.9526381877666,78.771580094798,43.3116846725002,23.7715491002453,23.3590212355024,193.588094064338,280.442353775068,216.511685797316,27.6064282295559,20.1923941297251,335.532295597863,17.0601303350151,14.243862565972,28.2847141210692,52.908650792912,21.3042524264582,15.1473664137602,17.4782535923936,16.0285214663548,16.3454598067853,11.9654155865597,15.6278728291524,13.6717117224282,16.998586769312,11.4518052420257,13.5818506473498,12.0934198460166,9.71698555576866,10.8716111090653,0,9.95740288597642,10.7807277859415,11.4508374846507,159.201633888855,68.1393959915202,134.518956960773,-6.32498955130467,106.185943655349,-29.9841549935239,63.5139382298335,60.1252464999439,116.283673608391,122.420116347365,88.8023769666096,140.675841824567,46.2373008792352,86.9944639215418,82.867585063972,112.2349651983,139.592996016451,142.801539830813,132.539961502492,18.5860320281783,14.4350781512642,9.92661808007928,23.3950601164474,0,12.1836559190738,10.3744092380123,9.27633339416163,10.8679223995964,0,7.75547895976492,12.9377246321153,8.10441250455605,17.6923808818511,21.0834613425468,3.83296662746434,-4.08566083983657,-12.4829203650045,10.1782473135772,12.7941834922543,11.1097801536905,13.6017802755451,9.30946264757036,12.6414331447369,9.83775581588658,8.39406195747659,10.4394307170887,9.54150198346104,11.6576904904647,0,15.2201509321736,13.1251051478471,11.9591856821873,0,26.2243849770454,0,13.8196780489475,15.0236051572575,15.1476278951673,0,13.544526794095,14.4070557997969,8.84206973441247,0,18.2732489516219,17.0113842001834,16.0581314824047,22.5209295484637,18.4336152470366,19.437299128669,6.25856315563434,7.25732220331502,0,7.09926832025386,6.75454112308861,150.877506802855,141.478752096588,135.129982017636,5.42108924146181,0,4.85991425180335,7.06548264758273,3.7299416900274,3.67013578177985,7.82825890113237,18.4667449775513,173.87880725898,129.643836506858,8.73321704519409,6.79274090152867,8.44544901569679,7.39672530510459,0,7.78739976898294,6.62530509171127,9.59707624852071,7.50213329197719,0,7.25947195623891,6.18370244352369,9.12843117051697,10.4471206995006,9.83654593433406,10.5005856249414,5.91929794514825,0,8.64342464778551,6.09521517127119,5.62562123363434,0,0,8.02621254791917,0,12.6223640486757,9.9111743272292,11.0540863032615,6.12782213199661,0,7.547981939586,8.19490120458042,9.84887317775424,9.12961911250121,9.64815587883006,0,0,9.70120313605909,8.56759154143794,9.53565032003346,9.22582812448683,8.56021391607469,9.86633737828549,0,0,8.4843712134142,10.1531312240084,8.45340291995391,10.7947109508451,7.15911333041703,8.61075971538531,8.92134951070593,9.00039284750051,8.60704608008715,0,6.2231206110699,7.24046392127088,8.68126523965039,37.2845035591445,10.2353174919653,10.3408067227912,13.75531126911,38.2024933499387,27.1774017242433,0,6.13454372723821,6.01622841269675,5.97556370960875,0,0,51.3102033534768,60.9535745246985,48.3632533072573,51.9844175303308,75.1545287572457,70.0861418351231],"Archive805_field12":[0,0,0,0,346.13546231574,0,0,0,0,3.52482252029013,128.813353375359,138.975377776368,10.8688981233776,0,0,471.492223311694,0.219865584609293,5.7150470843568,0,449.789540920295,1129.1388315659,2605.53720447039,0,3192.01265009842,0,1.43034903600945,4136.15615699922,6.75002966885412,1.86936367109995,1.62006483670471,0,0.196557083734357,19.5548064144383,652.171766789127,6786.18560085017,0.038683923496533,1.80137787414917,6.14868574413745,0.191671615207088,0.44895839621441,6.39984415511154,0,11671.5980945001,0.226742645361979,27.49427154759,0.329851377818511,0.489105860117489,0,0.42517474916025,0.40502586557128,0.532953657026718,0,10618.2830421924,0.892491293262206,0.381454127052581,46.7272482627154,9413.80474223381,545.163908319352,33.5431548044746,2.12609707078267,1.2062905528461,0.525869801983171,0.534596722925293,9.37125355695054,0.338293183175924,0.354235116530521,0,2.02105492179277,0,5.01883897106962,0.972569444190249,0,0.321486355895363,0.356267558627641,0.249464434877211,0.477214875763553,0.0525649811782834,0.604951009116351,0.881170577530501,1.0250650015607,3.33325764517907,0,0.394465533800939,0.128264099131922,0,0.439687830935776,0,0.321326706871649,0.347501235314759,0,0.391854438543904,0.31624926887263,0.53979668497411,0,0,117.952914798065,325.268523679004,429.687936589232,346.764199984536,305.10944413041,256.826981557177,205.388736232628,316.202843836651,0,473.904410477821,0,173.502127718005,345.881453574668,255.245061483982,167.379623990977,197.013165591822,152.979728646341,216.662349910027,131.730093684296,225.357895153892,122.78175185802,142.383160271491,143.862731910562,425.568289702011,316.945764642614,213.048136054463,0,0,172.55102678203,399.739300575718,266.765969402885,596.120502984318,336.035396022565,281.152705169702,855.792109092999,1118.30462153263,5696.8991079078,2152.03408627553,116.26130316922,165.252173710069,3264.36018312327,6272.90491505486,468.519997015343,494.439388136101,466.514965079063,553.016619396751,5327.90417881126,10886.4045790084,653.072230074658,429.664131434381,566.635057087511,513.942740258428,360.198961302699,309.318386215045,9.30420726412111,5879.89709604854,21.0049745087384,360.289834185596,271.333819785638,406.194970920625,320.750136150213,329.551652197299,290.883306870816,1752.06028036919,283.098943465074,203.820586969162,240.428514411205,223.036993742877,220.175608511921,161.783952861048,207.444581795881,186.198946997242,226.316013082067,155.467758111031,181.382925411525,165.093505204766,132.802534421576,147.903585568744,0,132.501789529903,144.201585452987,151.956670384698,15.3653100012406,6.73385912444721,0.16215740665097,4824.05009895866,0.593135594162133,788.52762347096,0,0.664288588678603,0.238253156899218,0.204987969790205,0.502543345926305,0.250998267097128,0,0.415681532213272,0,0.406085360360307,0,0.379816611987083,0.408164328127426,261.979750564342,208.030998900651,128.647446138901,225.992407162775,0,168.822100075886,137.445911192764,124.325059829806,143.492338609424,0,107.095143364769,170.195883848873,114.870443192084,303.361621990678,269.320195001154,242.899225228653,4337.23261547188,1904.91319089331,0,180.707244744332,156.363061723772,192.665029138546,129.914354483265,176.469897428456,138.869278447463,118.117469981469,146.698083850353,131.290116918711,150.892618904944,0,194.228328822347,173.737332874504,151.53904282248,0,190.575474502978,0,155.819204053686,162.697510342379,176.803606423893,0,167.781827392574,200.498349200576,124.730823116018,0,216.698289469129,220.641093693931,181.804264932775,291.652898389519,234.955500047437,250.38194424351,92.5633026505578,105.409972739025,0,100.572316143189,92.1563304659086,0,0.359431218945097,0.36968110860403,119.257971960738,0,84.7144802890328,93.8674375857994,101.619301471739,84.7824314387596,105.483503630567,262.050399240327,1097.32853581122,0,116.733557125052,90.930751258068,107.780032234062,102.1252685092,0,91.0198235563885,85.0933255065519,122.589039568608,94.1361621020164,0,102.842246522551,75.720109408979,107.882578878723,115.730245674475,113.856402912151,138.465319296719,75.1864549877922,0,81.6516802179635,74.5985662572289,72.3051216063944,0,0,71.0759354532491,0,117.293796163642,140.778823963558,140.791584103757,85.8285579860545,0,69.0744992011472,106.476558304911,82.3397589951255,109.12833124785,104.220460571928,0,0,112.985945115094,117.042047229061,106.29113455303,124.928747766258,121.87944483178,113.346573184022,0,0,115.273753111419,115.994978089904,105.412831400209,95.9408362120025,98.3494296260884,120.979200309657,121.447688459657,122.743150689325,113.907287089504,0,103.501768937531,112.365852884793,114.267980677119,1269.12851340508,139.594549704668,143.429781228289,177.949902789633,349.088575380508,351.277557580414,0,94.8392469163052,91.13238972931,82.8311549459005,0,0,0.0622582119982968,0.465992381160146,0,0.49859536377907,0.387287546206672,0,0,0,0,0,346.454848672779,0,0,0,0,6.60349425115081,128.877370577917,139.04452371441,15.053215603898,0,0,472.391599046854,0.186674588749325,10.7283292978499,0,450.194699313981,1131.020254231,2613.57759720516,0,3205.35611717723,0,2.0595431944233,4147.46004248946,11.313217929235,3.05647377815169,2.66044270460001,0,0.0761727949056518,30.4899108521689,652.493723772846,6800.7024630169,0.288624592154893,2.91346177783357,9.70972576862831,0.12680869818868,0.665060045034607,11.2629530901103,0,11684.9674525131,0.223092191749859,41.99569149487,1.39988736122651,0.60484337476848,0,0.452408584180114,0.425455073355093,1.17467767202678,0,10635.5300020045,1.58668681518881,0.377648821881574,74.7780579113186,9423.77787148143,547.119238080289,53.2861420151719,3.19810996245186,1.67312742284784,0.600916031813221,1.12111626597321,14.5898748291377,0.1961200916692,0.424524227229294,0,1.34350291086643,0,7.63655737960397,1.67180938313834,0,0.354736357407282,0.754851582041795,0.184718955210409,0.629300684519644,0.180871243101091,0.773807728869182,1.58824073769987,0.635137568861769,5.42961746138256,0,0.615011594945139,0.0171121042252077,0,0.422667197118569,0,0.281833686761866,0.312343713859486,0,0.424697438767034,0.24519747190332,0.721841980898795,0,0,119.414160780359,325.392609298118,429.912584933728,347.00600189426,305.211866735325,256.946996855804,205.474651114879,316.42174998006,0,474.112377445937,0,173.578854912283,346.077570138651,255.376910985115,167.458775511374,197.102110928261,153.029371965791,216.776610891274,131.776309622204,225.471376392422,122.816869145767,142.435645242558,143.927664938087,425.922214582709,318.07349936472,213.145418505421,0,0,172.641032137923,399.986418024303,266.93723865776,596.592082091024,336.260984254258,281.359446560466,856.583518286151,1120.39293750705,5706.94860558346,2157.09513588111,116.310048059805,165.331385416652,3272.59844114695,6285.26345825785,468.762966870134,495.157919154204,466.663323035873,557.814319771179,5339.52117629191,10900.2225157464,653.732620294182,430.09359564675,567.004573563344,514.521244440839,360.456287089407,309.522837344849,14.6441601352027,5902.14886551033,33.4644402095928,360.612324389203,271.512215867387,406.708106549727,320.846792069284,329.602299400385,290.999552094056,1756.25459639154,283.286495524181,203.948924428987,240.59397940401,223.17868849377,220.327384048523,161.884556849601,207.574146149555,186.315737848685,226.473197312923,155.560427091168,181.494893578541,165.199100700898,132.890746413407,147.989837889471,0,132.573907931983,144.283692270714,152.047129310761,26.8251910359299,12.8873926930354,0.978750968955891,4847.85265620256,0.18263361940371,790.319924162765,0,2.26022213026628,0.173377356786196,0.248883405035176,0.958561718305674,0.20927153653708,0,0.345652121066039,0,0.429297667288017,0,0.3898540649703,0.418319514481109,262.167882404912,208.158263784439,128.713633407122,226.058876619912,0,168.91913065322,137.523391199752,124.407156547799,143.575247353605,0,107.142439849439,170.29535887818,114.922315330203,303.576832528952,269.434337196765,243.013749745388,4365.13443306048,1911.63644215539,0,180.808485465918,156.44675904384,192.780020431343,129.980886681215,176.576390414589,138.939214751927,118.176450785502,146.781917357597,131.36522028629,150.972988551383,0,194.338879443318,173.836237742938,151.612719691139,0,190.642824801454,0,155.87685700553,162.76533229572,176.858828360563,0,167.853876602385,200.626489204918,124.78359239132,0,216.825887922242,220.780759770171,181.877422518549,291.860795672121,235.096912263317,250.554425600779,92.5879841492972,105.457966854549,0,100.595535760315,92.1813358386982,0,0.335794631752517,0.437354088007099,119.306156242152,0,84.7489491964643,93.9394590650938,101.671306617891,84.7893229959826,105.51770630136,262.20852704118,1100.4366510606,0,116.793553105847,90.9740323968957,107.825722415575,102.171362010665,0,91.0688508533306,85.117742572674,122.645379115038,94.1718751082934,0,102.884919835745,75.7375588533622,107.922757867935,115.762646999394,113.869284640823,138.533065080467,75.2027331646649,0,81.6933127443745,74.6220588537908,72.3210356066656,0,0,71.1314767414796,0,117.348110155908,140.841507107977,140.857589852673,85.8505061883946,0,69.1048636834934,106.517719186174,82.4064476106917,109.150418223071,104.312801628978,0,0,113.088113870527,117.071188449442,106.355951267881,125.010109941098,121.923426372517,113.506687595226,0,0,115.359277668701,116.059890654137,105.535899506396,96.0642991808341,98.3670531310202,121.170118481677,121.511785614252,122.812850769022,113.959744525264,0,103.574648570795,112.52441868858,114.283449535572,1272.33909528795,139.679178590667,143.510753085389,178.034826258225,349.29166030534,351.540330984203,0,94.9324121272393,91.1818665031013,82.8804894640573,0,0,0.348939178110117,0.502571144758936,0,0.556646750141153,0.399934612393123,0,0,0,0,0,346.896944418617,0,0,0,0,15.8774304879967,128.95410825702,139.128355837671,27.6066828678766,0,0,473.889653532442,0.0867291359755741,25.8238708861377,0,450.995071961258,1132.94395900154,2621.58735822081,0,3217.33487043649,0,3.95521153305488,4160.46807665297,25.0603028613307,6.63178974310956,5.7929892422972,0,0.289905066117318,63.4173735816108,653.012186875915,6820.34234505939,1.0417956590462,6.26331432092875,20.4191543376554,0.0685937458522061,1.31884111843622,25.9128632361199,0,11708.1340880897,0.212171278039028,85.5942784736349,6.59293188886904,0.952471152957657,0,0.534456485656918,0.487122572843037,3.10735146405293,0,10664.3291432676,3.67358270292737,0.366179343708725,159.195242473289,9439.12045866128,557.246156884005,112.714989293973,6.42443813070648,3.07751110670232,0.826423396344007,2.88536585750059,30.2873497399014,0.237962077949568,0.636326270929173,0,0.681628873183541,0,15.5109759881258,3.76979697831685,0,0.4541851218361,1.95301404425086,0.00791442061694786,1.08747894188076,0.885580033118766,1.28185003651639,3.71662050909094,5.66773908024697,11.7452489144672,0,1.28404988673646,0.463298490667859,0,0.36990089551464,0,0.163039269182065,0.206676424537519,0,0.524255952053243,0.0311902252341609,1.27019046635101,0,0,129.731391990122,325.570996120404,430.240935014905,347.690188302282,305.429156160701,257.117902369404,205.580308803857,316.718641620209,0,474.48788180272,0,173.676391968648,346.349545973687,255.541333482772,167.556324709028,197.215854763411,153.091864562163,216.918595393345,131.830941122736,225.612320102585,122.859226294799,142.501121107945,144.00712772401,426.398787964208,325.182492049061,213.266772052896,0,0,172.750730096504,400.346025614716,267.149963870801,597.334807063782,336.547799079243,281.619158806838,858.934327776542,1126.96690386747,5721.05938007757,2173.64802877817,116.3691718275,165.428473582181,3282.9325954853,6302.42833691891,469.072524275988,498.300440795642,467.284030688501,587.54720807038,5355.28535519746,10922.9182792581,654.727932297276,432.30030148204,567.808555646375,515.550046912847,360.783216342129,309.778256445417,30.686501115956,5929.47494629426,70.9667720015195,361.046002540355,271.733878084566,409.241622055045,320.972361008997,329.702119564067,291.139830948007,1761.08423472577,283.519615451567,204.105203526822,240.797855040143,223.35276898078,220.513967923374,162.005143784037,207.733001848637,186.457055453906,226.666540910262,155.670976749513,181.630449101372,165.325917891565,132.994784080425,148.091826939894,0,132.658405876738,144.380486095615,152.155786116885,61.3742410601173,31.4543573325391,3.45945220329393,4872.08381608569,2.53739601640232,792.912662169295,0,7.09403177858225,0.0233401599988149,0.382546244966332,2.34056819262343,0.0827920767841877,0,0.13343227092843,0,0.499663887479679,0,0.42055307417067,0.449070335818668,262.403863848483,208.315340415744,128.793241140197,226.234328773016,0,169.036326434551,137.614859077589,124.507559906746,143.674857681934,0,107.189112491229,170.415844700434,114.978488687369,304.267830282106,269.607255116054,243.426624238431,4387.39871516416,1918.1799968365,0,180.931926355709,156.548231979689,192.920392976271,130.059594709937,176.704943139767,139.022879568617,118.246853355732,146.882140240772,131.452970003295,151.070484457969,0,194.474931891149,173.957241917873,151.702909039103,0,190.739914636647,0,155.949253896101,162.849393009757,176.929738785395,0,167.943804115161,200.783065855741,124.846880559017,0,216.984048872489,220.957124732872,181.966833033326,292.120801187091,235.27255005117,250.770156459271,92.6163426429665,105.515877465641,0,100.622518142903,92.2116169234235,0,0.264715957248092,0.640636135003738,119.363051787742,0,84.7892558518484,94.0224120241717,101.735714804298,84.7974169898218,105.559955644236,262.404904059297,1110.45140162952,0,116.866560677581,91.0259430180488,107.880375033401,102.226913143018,0,91.1184451203848,85.1480497157828,122.71438726884,94.2152605648394,0,102.937707993343,75.7575635513146,107.969512736036,115.80042007348,113.884010337129,138.615542681445,75.2231721074695,0,81.7422957648188,74.6478382747143,72.3371231657361,0,0,71.1871887003431,0,117.413867375738,140.920598732481,140.939445206167,85.8780518251559,0,69.1389355574014,106.564628843268,82.4783778531684,109.170604026131,104.413958870106,0,0,113.174690559563,117.100636588736,106.405264245706,125.106253567354,121.9715802644,113.640714619159,0,0,115.441370372321,116.113499880338,105.644523885161,96.1857759719507,98.3930348528188,121.346949449609,121.587768872452,122.89320317401,114.021315407927,0,103.652832632467,112.655027824193,114.301920866564,1275.27436071199,139.779158096479,143.606757358395,178.139652304293,349.617269824008,351.868815785635,0,95.0277143089562,91.2329222884647,82.9374003073216,0,0,1.21247242996627,0.612747155865885,0,0.731509088247737,0.438031101160901,0],"Archive805_field13":[4497279.3220831,6388984.03530792,7195349.73325513,4504462.22373278,8977071.80235899,4500181.5695791,11290051.8842815,4504074.4410989,8973454.8871256,7645687.82819648,7871719.41211954,7871547.90736082,8568567.65370968,10367172.0587683,4473865.50268328,6478369.84038649,7701636.59322581,6340894.47793988,4489101.5437769,5546628.45702755,5556552.84181832,7348762.993044,6588137.98199979,7460772.65578797,5834607.61796921,5945414.54556612,7857492.1844231,5732418.43566114,6982379.44206232,7437788.44356776,5154236.56032625,6765529.61015802,6933987.86192643,7729003.3521741,8354057.25715563,9221977.66331222,8336501.05081009,8779586.96008943,8611073.95496273,8827295.42498127,8176668.76957455,11109729.7840249,8808165.87005975,9991717.90264383,8235135.40499096,8592319.76195319,9513651.1557863,10808730.3745216,9967226.96506883,10158811.7910107,7809285.06133471,9062378.70851173,8860050.7263437,9597244.60495076,9447732.67494023,8342157.47727875,8950372.39324234,8978067.11834436,8106253.69932692,9222212.18164241,9771732.33015074,10462529.0998761,9351998.50413128,9014680.24884932,9201940.36807809,9254240.52188415,9785054.83676503,8638636.75207495,9963989.20979472,8714767.12995711,8977213.6320063,10908138.3595381,10037638.4820939,9422199.82138162,9531207.08886769,9972408.32071735,8909046.25730179,10035233.7409849,9035928.3006067,7645913.37113586,8376344.42090648,3667499.80473607,7569372.66457302,8188760.7185124,8457604.43505132,8750705.28194005,11169374.5750348,10665626.2243706,10548290.1794708,10506343.2377914,9614256.43455799,10116529.6007663,9545769.42894066,4503661.73134758,4501601.96018499,7173740.19454033,6966141.58818066,7323469.9540582,6733706.63344585,6256186.88720001,5513203.07593507,6498210.41070825,7998389.76372112,4501717.28432368,7955818.00600148,4499467.43989764,5662675.06491315,7576699.2649844,7230662.34226724,7208701.71974044,7035649.87597894,6437647.12771744,7925821.07642921,5521126.03121206,7533357.58426732,6597536.19112807,6738288.84735111,7373793.51772939,8718064.87583011,8302245.8719943,5782353.71808905,4500640.1807574,7850954.50290827,8060688.27532607,8390140.49873473,8528964.76488416,8561167.5658345,8589356.64201312,8897363.96105367,8788619.21368903,8583509.43600455,8522393.56173668,8768959.55073607,7131275.09582262,7634462.6351711,8164252.62953457,8677850.76264342,8715630.83289548,8891310.77696065,8972452.22642989,8561047.94599411,8630496.78197511,8683202.05068606,8712444.28175441,8258677.37828831,8980694.55878655,8884016.30154378,8877359.03385799,8842547.77550111,8348608.72693355,8406823.0910192,8090566.76487115,8939690.80432219,8967287.27523774,8198185.37205647,7363634.82258629,7867794.44830748,7789467.81866241,8025288.73576496,8984131.56725346,8967079.45341405,8960223.36172377,8765814.66550289,8986630.42699201,8964531.68783452,8717162.49619967,8991038.13207164,8902143.90318838,8914882.46117447,8869164.09777953,8990050.32749795,8994889.52833948,8994243.81241934,7855265.22849829,8798391.59351723,8927012.86854783,8720043.83330999,6793308.18377277,5501809.66013806,7154373.37120868,8032933.76028451,6473590.19056535,6684736.42610664,5028241.92002199,5243588.66980557,6877807.80486054,6982987.23413151,6085041.7128112,7856766.27966209,4347870.86237903,5934910.1117921,5708612.97766496,6782113.80982487,9281076.27554802,8412544.0817014,7556545.517084,8752149.30442884,8411966.29264648,8399148.06095989,6146449.64423399,4500074.2529416,8619033.84124411,8650200.3771118,8592140.77807099,8468750.37387113,8693455.02153994,8057571.09154669,8551571.32056819,8828286.76039062,6676473.66222725,7148831.25139369,5690033.66637732,7158276.94960657,7029507.31472401,6040904.37709667,8417567.4315451,8246589.57252376,8683146.60728278,8439282.90596304,8860998.28543322,8250844.23485394,7796569.17407146,8619551.84864842,8838791.7106594,8174026.44456795,4501747.50441501,8123355.43756211,8269742.50486459,7568616.71155778,4495600.5785718,5304888.93765188,4499773.34444555,5750562.50401066,5302100.57535095,6166594.74540123,4498594.32079763,6980700.33780072,8864827.96895291,7610383.54431004,6456859.94546669,7285849.65871852,7861304.23264278,6730677.7551807,8436827.79835859,8280394.71853967,8650641.3661659,6851869.48754089,7220812.00466856,4502011.18433073,7778025.05432556,6133461.16534434,11270170.2872782,10657630.6748477,10290490.7572597,5637580.07682366,4501417.41767444,5313207.16610884,5670779.58565143,5492838.40664854,5971785.3198795,6301613.19842596,8187919.03892998,8897494.34234569,7493573.68830462,7968638.65922702,6950820.23715348,7289081.9898155,7572255.46922116,6452523.26375064,7427308.20505922,6012735.95216677,7211908.67459821,6682045.22956798,4498852.4904972,6632570.67925738,5952854.76446541,5654561.09041581,6529147.38532592,5772617.55908589,7702506.52586383,6522638.98500523,4499295.44893437,5210665.75813371,5194543.67123289,5345970.382925,4501158.1588027,5590524.53971424,5369007.38810525,4497568.37394673,5235251.44693902,6325117.28396786,6868551.07491378,7022434.24703189,7226166.08791679,6083568.65549791,5244891.02280247,6970607.93474409,8507269.84617923,8667727.11885094,8900649.47443155,8343959.03344519,8872540.26011966,8990569.74332801,8132451.92832736,8936431.32537935,8966533.49286015,8971567.50063134,8695720.23780736,8895174.74389672,8984142.41681507,8822439.50896869,8421540.40690605,7775636.8562021,7841189.33645695,8919635.99972583,8847493.70071799,8634012.99075448,8236224.39748681,8343818.98678338,8130854.11205065,8540824.31279828,8505139.91094279,5328800.94218614,8959879.12968755,8810880.25501693,7583998.88015243,8204312.88183626,8681799.61204004,7222485.55936067,7565631.10029623,6952081.93967925,6386121.45668598,4499434.43434269,5548167.83906675,6651097.02648449,7690708.02483113,6514978.67561217,6798477.67549259,8544104.17050486,8199143.67400843,3372959.49156233,6386735.09280792,7193100.79075513,3378346.66779958,6732803.85176924,3375136.17718432,11287802.9417815,3378055.83082417,6730091.1653442,7643438.88569648,5903789.55908966,5903660.93052062,8566318.71120968,10364923.1162683,4471616.56018329,4858777.38028987,7699387.65072581,6338645.53543988,3366826.15783268,4159971.34277067,4167414.63136374,5511572.244783,4941103.48649985,5595579.49184097,5832358.67546921,5943165.60306612,5893119.13831732,5730169.49316114,6980130.49956232,7435539.50106776,5151987.61782625,6763280.66765802,6931738.91942643,5796752.51413057,6265542.94286672,9219728.72081222,8334252.1083101,8777338.01758943,8608825.01246273,8825046.48248127,8174419.82707455,11107480.8415249,6606124.40254481,9989468.96014383,8232886.46249096,8590070.81945318,9511402.2132863,10806481.4320216,9964978.02256883,10156562.8485107,7807036.11883471,9060129.76601173,6645038.04475778,9594995.66245076,9445483.73244024,8339908.53477875,6794303.02892151,6733550.33875827,8104004.75682692,9219963.23914241,9769483.38765074,10460280.1573761,9349749.56163128,9012431.30634931,9199691.42557809,9251991.57938415,9782805.89426503,8636387.80957495,9961740.26729472,8712518.18745711,8974964.6895063,10905889.4170381,10035389.5395939,9419950.87888162,9528958.14636769,9970159.37821735,8906797.31480179,10032984.7984849,9033679.3581067,7643664.42863586,8374095.47840648,3665250.86223607,7567123.72207303,8186511.7760124,8455355.49255132,8748456.33944005,11167125.6325348,10663377.2818706,10546041.2369708,10504094.2952914,9612007.49205799,10114280.6582663,9543520.48644066,3377746.29851068,3376201.47013874,5380305.14590525,5224606.19113549,5492602.46554365,5050279.97508439,4692140.16540001,4134902.3069513,4873657.80803119,5998792.32279084,3376287.96324276,5966863.50450111,3374600.57992323,4247006.29868486,5682524.4487383,5422996.75670043,5406526.28980533,5276737.40698421,4828235.34578808,5944365.80732191,4140844.52340904,5650018.18820049,4948152.14334605,5053716.63551333,5530345.13829705,6538548.65687259,6226684.40399572,4336765.28856679,3375480.13556805,5888215.8771812,6045516.20649456,6292605.37405105,6396723.57366312,6420875.67437588,6442017.48150984,6673022.97079025,6591464.41026677,6437632.07700341,6391795.17130251,6576719.66305206,5348456.32186696,5725846.97637832,6123189.47215093,6508388.07198256,6536723.12467161,6668483.08272049,6729339.16982242,6420785.95949558,6472872.58648133,6541960.66940788,6534333.21131581,6194008.03371623,6735520.91908992,6663012.22615783,6658019.27539349,6631910.83162583,8346359.78443355,6305117.3182644,8088317.82237115,6704768.10324165,6725465.4564283,6148639.02904236,5522726.11693971,5900845.83623061,5842100.86399681,6018966.55182372,6738098.67544009,6725309.59006054,6720167.52129283,6574360.99912717,6739972.82024401,6723398.76587589,6537871.87214975,6743278.59905373,6676607.92739128,6686161.84588085,6651873.07333465,6742537.74562346,6746167.14625461,6745682.8593145,5891448.92137372,6598793.69513792,6695259.65141088,6540032.87498249,6791059.24127277,5499560.71763806,7152124.42870868,6024700.32021338,6471341.24806535,5013552.31957998,5025992.97752199,5241339.72730557,6875558.86236054,6980738.29163151,6082792.7703112,7854517.33716209,4345621.91987903,5932661.1692921,5706364.03516496,6779864.86732487,9278827.33304802,8410295.1392014,7554296.57458399,6564111.97832163,6308974.71948486,6299361.04571992,4609837.2331755,3375055.6897062,6464275.38093308,6487650.28283385,6444105.58355324,6351562.78040335,6520091.26615496,6043178.31866002,6413678.49042614,6621215.07029296,5007355.24667043,5361623.43854527,4267525.24978299,5368707.71220493,5272130.48604301,4530678.2828225,6313175.57365882,6184942.17939282,6512359.95546209,6329462.17947228,6645748.71407491,6188133.17614045,5847426.88055359,6464663.88648632,6629093.78299455,6130519.83342596,3376310.62831126,6092516.57817158,6202306.87864845,5676462.53366834,3371700.43392885,3978666.70323891,3374830.00833416,4312921.878008,3976575.43151321,4624946.05905092,3373945.74059822,5235525.25335054,6648620.97671468,5707787.65823254,4842644.95910001,5464387.24403889,5895978.17448209,5048008.31638553,6327620.84876894,6210296.03890475,6487981.02462442,5138902.11565567,5415609.00350142,3376508.38824804,5833518.79074417,4600095.87400825,11267921.3447782,10655381.7323477,10288241.8147597,4228185.05761774,3376063.06325583,3984905.37458163,4253084.68923857,4119628.8049864,4478838.98990963,4726209.89881947,6140939.27919748,6673120.75675927,7491324.74580462,5976478.99442026,5213115.17786511,5466811.49236162,5679191.60191587,4839392.44781298,5570481.15379441,4509551.96412508,5408931.50594866,5011533.92217598,3374139.3678729,4974428.00944303,4464641.07334906,4240920.81781186,4896860.53899444,4329463.16931442,5776879.89439787,4891979.23875392,3374471.58670078,3907999.31860029,3895907.75342467,4009477.78719375,3375868.61910202,4192893.40478568,4026755.54107893,3373176.28046005,3926438.58520427,4743837.96297589,5151413.30618534,5266825.68527392,5419624.56593759,4562676.49162343,3933668.26710186,5227955.95105806,6380452.38463442,6500795.3391382,6675487.10582366,6257969.27508389,6654405.19508975,6742927.307496,6099338.94624552,6702323.49403451,6724900.11964511,6728675.62547351,6521790.17835552,6671381.05792254,6738106.81261131,6616829.63172652,6316155.30517954,5831727.64215157,5880892.00234271,6689726.99979437,6635620.27553849,6475509.74306586,6177168.29811511,6257864.24008753,6098140.58403799,6405618.23459871,6378854.93320709,3996600.7066396,6719909.34726566,6608160.1912627,5687999.16011432,6153234.6613772,6511349.70903003,5416864.1695205,5674223.32522217,5214061.45475943,4789591.09251448,3374575.82575702,4161125.87930006,6648848.08398449,7688459.08233113,6512729.73311217,6796228.7329926,8541855.22800486,8196894.73150843,0,6379988.26530792,7186353.96325513,0,0,0,11281056.1142815,0,0,7636692.05819648,0,0,8559571.88370968,10358176.2887683,4464869.73268328,0,7692640.82322581,6331898.70793988,0,0,0,0,0,0,5825611.84796921,5936418.77556612,0,5723422.66566114,6973383.67206232,7428792.67356776,5145240.79032625,6756533.84015802,6924992.09192643,0,0,9212981.89331222,8327505.28081009,8770591.19008943,8602078.18496273,8818299.65498127,8167672.99957455,11100734.0140249,0,9982722.13264383,8226139.63499096,8583323.99195319,9504655.3857863,10799734.6045216,9958231.19506883,10149816.0210107,7800289.29133471,9053382.93851173,0,9588248.83495076,9438736.90494023,8333161.70727875,326094.935959033,0,8097257.92932692,9213216.41164241,9762736.56015074,10453533.3298761,9343002.73413128,9005684.47884932,9192944.59807809,9245244.75188415,9776059.06676503,8629640.98207495,9954993.43979472,8705771.35995711,8968217.8620063,10899142.5895381,10028642.7120939,9413204.05138162,9522211.31886769,9963412.55071735,8900050.48730179,10026237.9709849,9026932.5306067,7636917.60113586,8367348.65090648,3658504.03473607,7560376.89457302,8179764.9485124,8448608.66505132,8741709.51194005,11160378.8050348,10656630.4543706,10539294.4094708,10497347.4677914,9605260.66455799,10107533.8307663,9536773.65894066,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118236.525573341,0,0,0,0,0,0,8339612.95693355,0,8081570.99487115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6784312.41377277,5492813.89013806,7145377.60120868,0,6464594.42056535,0,5019246.15002199,5234592.89980557,6868812.03486054,6973991.46413151,6076045.9428112,7847770.50966209,4338875.09237903,5925914.3417921,5699617.20766496,6773118.03982487,9272080.50554802,8403548.3117014,7547549.74708399,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11261174.5172782,10648634.9048477,10281494.9872597,0,0,0,0,0,0,0,0,0,7484577.91830462,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6642101.25648449,7681712.25483114,6505982.90561217,6789481.90549259,8535108.40050486,8190147.90400843],"Archive805_field14":[499.866637393843,1,1,501.460122029689,995.968089960944,501.431565223307,1,502.948746746627,995.110142465447,1,875.092799938844,875.055054608963,1,1,1,731.177526246011,1,1,508.412497016163,625.207356350619,628.321016946361,728.005128573015,659.655180848032,700.857737001871,1,1,809.053051472215,1,1,1,1,1,1,859.854081295762,904.87042494594,1,1,1,1,1,1,1,965.901978346821,1,1,1,1,1,1,1,1,1,990.282226538353,1,1,1,963.570968982637,993.92846312045,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,496.26814800214,500.826549141064,801.472087713976,773.072480503212,814.519711517232,753.360073661653,691.877701633798,611.716026445362,722.67489700372,887.744390832178,500.87576680908,882.927711954295,500.337879384569,629.563575760729,841.227711555938,803.222498768256,801.291368456212,781.795980358582,715.502766999558,880.756592317485,613.907014102609,837.086307432869,733.522908535285,749.122987771958,819.729524604545,965.972243810177,921.790642835053,642.473169922287,500.599773814983,870.540845516929,895.959264997326,931.684777509325,947.384577498164,949.971147552501,953.783828022714,988.154638610931,963.887507499526,942.619757871606,933.530428465431,965.174218869104,792.88235383578,848.604097544424,877.751223138049,971.407869804727,966.142437507254,988.220663663173,996.617708793606,955.494008357687,965.482840852662,941.100483878109,968.952014959819,918.189043241717,994.827703302415,984.730109301524,985.367619494473,981.994159625957,1,905.704302185941,1,992.077547891484,996.215260614744,911.453247047934,823.536906037169,875.867375614116,864.467535463554,857.265340472099,998.052841361087,996.551478549113,995.518558035026,974.079159289488,998.529476746287,996.447148499592,968.731955368743,999.301565772905,989.106219008279,990.987377454798,985.755780010417,999.244151056096,999.868206864852,999.842198227388,871.473422122419,978.111733637048,992.388028719403,969.296257237048,1,1,1,813.543369086856,1,753.899026004105,1,1,1,1,1,1,1,1,1,1,1,1,1,972.156556319207,934.780877603671,933.739207513676,679.940304204686,511.524426023703,958.033630160862,961.626923372575,955.095925525537,941.395732927476,964.100822268608,895.86794649389,950.493875354865,981.632890003682,749.000101169602,792.778172871457,640.73366270164,694.221959037967,735.429012546955,635.537976175091,935.586951344503,916.69054838434,965.039991011328,938.240044978701,984.892323128436,917.242740463102,866.761210060341,958.171530363159,982.6168163195,908.609921897348,500.855334936624,902.767480090057,919.139048613307,841.303650829209,495.072748943392,589.209201428402,500.415788523837,639.110475223361,588.781765951846,686.372801529535,500.127070049585,775.837158054734,985.165149569719,846.121548140433,716.797375694613,809.74655664893,873.440187561287,748.044179494212,937.01212944553,919.913710637672,960.92058226351,761.976488803588,802.791983848436,500.912627306554,865.084218280252,681.999622564558,1,1,1,626.908190849157,500.784616565764,590.909952310791,630.307555110683,610.861053223921,664.283091367605,700.627194042179,909.591762522213,979.504430634035,1,885.910600393303,772.798171335227,810.406357152434,841.876117121413,715.851157616654,825.670143237771,668.534105440533,801.751371615709,742.984904808072,500.217320463807,737.397509172148,661.946911498933,628.706929415512,725.923634098069,641.899732307077,856.236811667595,725.430009405082,500.31286309257,579.464082515379,577.641767974955,594.56548439492,500.722233478143,620.459368164481,596.760731568468,499.933947712954,582.259900054256,702.969537977071,763.528329817785,780.99576467715,801.909610077643,676.066344731015,582.961506637937,774.439990245483,946.154294556743,963.18750115397,986.744246045248,925.445967306668,985.669984420865,999.894312885475,903.764084469704,993.395119050968,997.074214971718,996.237574246621,964.591950925844,985.574589495906,998.504378623302,980.676167535872,935.315287401336,863.601122876972,872.171674210664,990.707583818472,983.609275780001,959.812592197021,915.749972597871,925.418856320623,903.409036940119,948.461347965476,946.077794330985,609.388379862159,996.011283680839,979.457357578052,842.843706807454,910.978833016095,963.815572278995,801.108334787038,840.257070748933,772.603100784867,709.873700060633,500.344813780031,616.322442160591,1,1,1,1,1,1,499.866637393843,1,1,501.460122029689,995.968089960944,501.431565223307,1,502.948746746627,995.110142465446,1,875.092799938844,875.055054608963,1,1,1,731.177526246011,1,1,508.412497016163,625.207356350619,628.321016946361,728.005128573015,659.655180848032,700.857737001871,1,1,809.053051472215,1,1,1,1,1,1,859.854081295762,904.87042494594,1,1,1,1,1,1,1,965.901978346821,1,1,1,1,1,1,1,1,1,990.282226538353,1,1,1,963.570968982638,993.928463120451,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,496.26814800214,500.826549141064,801.472087713976,773.072480503211,814.519711517232,753.360073661653,691.877701633798,611.716026445362,722.674897003721,887.744390832178,500.87576680908,882.927711954295,500.337879384569,629.563575760729,841.227711555938,803.222498768256,801.291368456212,781.795980358581,715.502766999558,880.756592317485,613.907014102609,837.086307432869,733.522908535285,749.122987771958,819.729524604545,965.972243810177,921.790642835053,642.473169922287,500.599773814983,870.540845516929,895.959264997326,931.684777509325,947.384577498165,949.971147552501,953.783828022714,988.154638610931,963.887507499526,942.619757871605,933.530428465431,965.174218869104,792.88235383578,848.604097544424,877.751223138049,971.407869804727,966.142437507254,988.220663663173,996.617708793606,955.494008357687,965.482840852662,941.100483878109,968.952014959819,918.189043241717,994.827703302416,984.730109301524,985.367619494473,981.994159625957,1,905.704302185941,1,992.077547891483,996.215260614743,911.453247047934,823.536906037169,875.867375614116,864.467535463555,857.265340472099,998.052841361087,996.551478549113,995.518558035026,974.079159289488,998.529476746288,996.447148499592,968.731955368743,999.301565772905,989.106219008279,990.987377454798,985.755780010417,999.244151056096,999.868206864852,999.842198227389,871.473422122419,978.111733637048,992.388028719403,969.296257237048,1,1,1,813.543369086856,1,753.899026004105,1,1,1,1,1,1,1,1,1,1,1,1,1,972.156556319207,934.78087760367,933.739207513676,679.940304204686,511.524426023703,958.033630160862,961.626923372576,955.095925525537,941.395732927476,964.100822268608,895.867946493889,950.493875354865,981.632890003682,749.000101169602,792.778172871457,640.73366270164,694.221959037967,735.429012546955,635.537976175091,935.586951344503,916.69054838434,965.039991011328,938.240044978701,984.892323128436,917.242740463102,866.761210060341,958.171530363159,982.6168163195,908.609921897348,500.855334936624,902.767480090057,919.139048613307,841.303650829209,495.072748943392,589.209201428402,500.415788523837,639.110475223361,588.781765951846,686.372801529535,500.127070049585,775.837158054734,985.165149569718,846.121548140433,716.797375694613,809.74655664893,873.440187561287,748.044179494212,937.01212944553,919.913710637672,960.92058226351,761.976488803588,802.791983848436,500.912627306554,865.084218280252,681.999622564558,1,1,1,626.908190849157,500.784616565764,590.909952310791,630.307555110683,610.861053223921,664.283091367605,700.627194042179,909.591762522213,979.504430634036,1,885.910600393303,772.798171335227,810.406357152434,841.876117121412,715.851157616654,825.670143237771,668.534105440533,801.751371615709,742.984904808072,500.217320463807,737.397509172148,661.946911498933,628.706929415512,725.923634098069,641.899732307077,856.236811667595,725.430009405082,500.31286309257,579.464082515379,577.641767974955,594.56548439492,500.722233478143,620.459368164481,596.760731568468,499.933947712954,582.259900054256,702.96953797707,763.528329817785,780.99576467715,801.909610077643,676.066344731015,582.961506637937,774.439990245482,946.154294556743,963.187501153969,986.744246045248,925.445967306668,985.669984420865,999.894312885474,903.764084469703,993.395119050968,997.074214971718,996.237574246621,964.591950925844,985.574589495906,998.504378623302,980.676167535873,935.315287401336,863.601122876972,872.171674210664,990.707583818472,983.609275780001,959.812592197021,915.749972597871,925.418856320623,903.409036940119,948.461347965476,946.077794330984,609.388379862159,996.011283680839,979.457357578052,842.843706807454,910.978833016095,963.815572278995,801.108334787038,840.257070748933,772.603100784867,709.873700060633,500.344813780031,616.322442160591,1,1,1,1,1,1,499.866637393843,1,1,501.460122029689,995.968089960944,501.431565223307,1,502.948746746627,995.110142465447,1,875.092799938844,875.055054608963,1,1,1,731.177526246011,1,1,508.412497016163,625.207356350619,628.321016946361,728.005128573015,659.655180848032,700.857737001871,1,1,809.053051472215,1,1,1,1,1,1,859.854081295762,904.87042494594,1,1,1,1,1,1,1,965.901978346821,1,1,1,1,1,1,1,1,1,990.282226538353,1,1,1,963.570968982637,993.92846312045,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,496.26814800214,500.826549141064,801.472087713976,773.072480503212,814.519711517232,753.360073661653,691.877701633798,611.716026445362,722.67489700372,887.744390832178,500.87576680908,882.927711954295,500.337879384569,629.563575760729,841.227711555938,803.222498768256,801.291368456212,781.795980358582,715.502766999558,880.756592317485,613.907014102609,837.086307432869,733.522908535285,749.122987771958,819.729524604545,965.972243810177,921.790642835053,642.473169922287,500.599773814983,870.540845516929,895.959264997326,931.684777509325,947.384577498164,949.971147552501,953.783828022714,988.154638610931,963.887507499526,942.619757871606,933.530428465431,965.174218869104,792.88235383578,848.604097544424,877.751223138049,971.407869804727,966.142437507254,988.220663663173,996.617708793606,955.494008357687,965.482840852662,941.100483878109,968.952014959819,918.189043241717,994.827703302415,984.730109301524,985.367619494473,981.994159625957,1,905.704302185941,1,992.077547891484,996.215260614744,911.453247047934,823.536906037169,875.867375614116,864.467535463554,857.265340472099,998.052841361087,996.551478549113,995.518558035026,974.079159289488,998.529476746287,996.447148499592,968.731955368743,999.301565772905,989.106219008279,990.987377454798,985.755780010417,999.244151056096,999.868206864852,999.842198227388,871.473422122419,978.111733637048,992.388028719403,969.296257237048,1,1,1,813.543369086856,1,753.899026004105,1,1,1,1,1,1,1,1,1,1,1,1,1,972.156556319207,934.780877603671,933.739207513676,679.940304204686,511.524426023703,958.033630160862,961.626923372575,955.095925525537,941.395732927476,964.100822268608,895.86794649389,950.493875354865,981.632890003682,749.000101169602,792.778172871457,640.73366270164,694.221959037967,735.429012546955,635.537976175091,935.586951344503,916.69054838434,965.039991011328,938.240044978701,984.892323128436,917.242740463102,866.761210060341,958.171530363159,982.6168163195,908.609921897348,500.855334936624,902.767480090057,919.139048613307,841.303650829209,495.072748943392,589.209201428402,500.415788523837,639.110475223361,588.781765951846,686.372801529535,500.127070049585,775.837158054734,985.165149569719,846.121548140433,716.797375694613,809.74655664893,873.440187561287,748.044179494212,937.01212944553,919.913710637672,960.92058226351,761.976488803588,802.791983848436,500.912627306554,865.084218280252,681.999622564558,1,1,1,626.908190849157,500.784616565764,590.909952310791,630.307555110683,610.861053223921,664.283091367605,700.627194042179,909.591762522213,979.504430634035,1,885.910600393303,772.798171335227,810.406357152434,841.876117121413,715.851157616654,825.670143237771,668.534105440533,801.751371615709,742.984904808072,500.217320463807,737.397509172148,661.946911498933,628.706929415512,725.923634098069,641.899732307077,856.236811667595,725.430009405082,500.31286309257,579.464082515379,577.641767974955,594.56548439492,500.722233478143,620.459368164481,596.760731568468,499.933947712954,582.259900054256,702.969537977071,763.528329817785,780.99576467715,801.909610077643,676.066344731015,582.961506637937,774.439990245483,946.154294556743,963.18750115397,986.744246045248,925.445967306668,985.669984420865,999.894312885475,903.764084469704,993.395119050968,997.074214971718,996.237574246621,964.591950925844,985.574589495906,998.504378623302,980.676167535872,935.315287401336,863.601122876972,872.171674210664,990.707583818472,983.609275780001,959.812592197021,915.749972597871,925.418856320623,903.409036940119,948.461347965476,946.077794330985,609.388379862159,996.011283680839,979.457357578052,842.843706807454,910.978833016095,963.815572278995,801.108334787038,840.257070748933,772.603100784867,709.873700060633,500.344813780031,616.322442160591,1,1,1,1,1,1],"Archive805_field15":[999.866637393843,0.103616813294233,0.103616813294233,911.821803359112,346.090279599263,396.372914196914,0.103616813294233,308.251777049657,950.290983130158,0.103616813294233,675.153894758003,630.296990092834,0.103616813294233,0.103616813294233,0.103616813294233,177.670683626265,0.103616813294233,0.103616813294233,162.450864562595,243.292950192261,170.774279409704,144.892882116515,238.061217016165,156.293934918538,0.103616813294233,0.103616813294233,118.197704911853,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,180.011098037382,104.83379237025,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.083684950893,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,117.955536337741,0.103616813294233,0.103616813294233,0.103616813294233,99.8421531888168,203.352524663317,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,225.938846926871,608.658904957291,166.912012176482,283.294476915366,227.501441437866,228.534661390179,267.464590064488,306.462101013362,370.636042658541,335.31402381361,457.443459868709,253.576908942496,381.273241065898,425.245460588535,294.861213629888,355.962354566287,494.257651593161,423.433236646767,471.211795727052,440.840354490124,512.577423000495,406.573733336278,580.808147214145,524.921810369792,574.813478141974,294.889159694313,194.420102093447,365.358217334037,532.79979825291,928.312106513997,538.280173871699,297.069658333896,405.794575656904,240.946746390078,346.044748648313,407.341952723774,192.950575837264,149.253391563451,105.30846980916,127.746525611136,666.286585663023,528.383046467334,131.47857449289,129.549424711632,273.067065416247,224.323519197647,284.644052889019,174.712777399476,133.531648861442,97.51383312911,214.846784101385,256.041079044743,259.672968376999,275.779056931775,341.71323073164,376.466954607277,0.103616813294233,129.862776672063,0.103616813294233,340.353447395776,422.168068169989,192.693338305342,261.700521342846,239.936419802077,355.931874883001,190.539189611123,408.50337181989,524.212371845852,461.480514938123,477.70764064453,493.526027354727,633.209080486223,503.048723595104,566.195618443881,478.204409228206,651.357299497433,568.970269505265,623.392914995685,750.802683498908,684.835438363265,974.063842454775,734.462483507872,693.789052066561,648.673656882068,0.103616813294233,0.103616813294233,0.103616813294233,143.534006662052,0.103616813294233,215.543505172865,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,420.996128127194,483.779977492771,719.227034898498,329.158381310779,255.201112240712,588.1623447301,701.534039765367,758.848619909711,661.601354397948,961.736452767142,814.58856896613,578.983186378088,840.696207844435,282.531269536264,331.972202118216,266.962902791145,207.103890412902,223.975529862335,303.582331013801,543.241451291503,599.494245215301,531.429284651551,718.286293386577,581.737044317461,662.487307781314,720.150423764145,660.055214016429,745.64650668474,612.088872936198,698.326009423428,495.030403365843,550.848839986505,564.628008080563,314.3817665387,352.155820664609,546.621800254043,463.632239925478,413.782107739082,402.627144253068,470.700750401491,478.161781636291,525.427531637877,670.140701701529,919.613846857859,407.316283534376,431.753914831318,426.710263874544,375.284724377968,434.54817600149,430.844016218948,795.591135049561,737.557432202655,760.009645879379,825.675881652938,707.953915721189,0.103616813294233,0.103616813294233,0.103616813294233,596.836521759614,684.24930376029,726.087364047145,831.609379780737,661.79541084889,772.417049507726,641.977596336056,394.645682871848,165.328500954634,0.103616813294233,744.766251529173,811.437991772072,730.261485725632,794.28349021777,985.896367782832,895.830310457654,732.523183898713,644.491157982225,754.619656577361,848.952657707208,686.271585945294,822.737145292668,641.788149792764,609.415136038369,552.914817274142,621.047685730736,897.167705521497,773.415868957673,732.052839201793,807.70974079703,871.659785949035,925.089902099844,992.102765904086,934.24242839327,621.772290821459,512.431943169822,503.539061398865,546.55608914124,866.148258745446,980.414925326909,942.973464357544,595.786753480872,932.228137481792,841.881198189652,897.016327996341,955.339981626871,967.746492722113,899.692178695163,840.379047672659,899.180827846574,786.277544417842,807.590262198797,901.417586973819,939.818001756733,942.965535243707,872.184582988651,862.072557867773,916.171568705839,923.960471315399,865.776987306484,894.417448288787,804.728435937078,773.740963050928,786.60116229359,934.105012234602,875.834671061069,874.180984953727,821.085079619978,216.859919556678,716.033592274729,688.053723778042,494.671023641663,322.548237122865,338.464386396357,923.589700867194,878.660556564359,862.893452390614,832.885752935892,835.074163731155,915.099018406925,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,999.866637393843,0.103616813294233,0.103616813294233,911.821803359112,346.090279599263,396.372914196914,0.103616813294233,308.251777049657,950.290983130158,0.103616813294233,675.153894758003,630.296990092834,0.103616813294233,0.103616813294233,0.103616813294233,177.670683626265,0.103616813294233,0.103616813294233,162.450864562595,243.292950192261,170.774279409704,144.892882116515,238.061217016165,156.293934918538,0.103616813294233,0.103616813294233,118.197704911853,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,180.011098037382,104.83379237025,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.083684950893,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,117.955536337741,0.103616813294233,0.103616813294233,0.103616813294233,99.8421531888168,203.352524663317,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,225.938846926871,608.658904957291,166.912012176482,283.294476915366,227.501441437866,228.534661390179,267.464590064488,306.462101013362,370.636042658541,335.314023813611,457.443459868709,253.576908942496,381.273241065898,425.245460588535,294.861213629888,355.962354566287,494.257651593161,423.433236646767,471.211795727052,440.840354490124,512.577423000495,406.573733336278,580.808147214145,524.921810369792,574.813478141974,294.889159694313,194.420102093447,365.358217334037,532.79979825291,928.312106513997,538.280173871699,297.069658333896,405.794575656904,240.946746390078,346.044748648313,407.341952723774,192.950575837264,149.253391563451,105.30846980916,127.746525611136,666.286585663023,528.383046467334,131.47857449289,129.549424711632,273.067065416247,224.323519197647,284.644052889019,174.712777399476,133.531648861442,97.51383312911,214.846784101385,256.041079044743,259.672968376999,275.779056931775,341.71323073164,376.466954607277,0.103616813294233,129.862776672063,0.103616813294233,340.353447395776,422.168068169989,192.693338305342,261.700521342846,239.936419802077,355.931874883001,190.539189611123,408.50337181989,524.212371845852,461.480514938122,477.70764064453,493.526027354727,633.209080486223,503.048723595104,566.195618443881,478.204409228206,651.357299497433,568.970269505265,623.392914995685,750.802683498908,684.835438363265,974.063842454775,734.462483507872,693.78905206656,648.673656882068,0.103616813294233,0.103616813294233,0.103616813294233,143.534006662052,0.103616813294233,215.543505172865,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,420.996128127194,483.779977492771,719.227034898498,329.158381310779,255.201112240712,588.1623447301,701.534039765367,758.848619909711,661.601354397948,961.736452767142,814.58856896613,578.983186378088,840.696207844435,282.531269536264,331.972202118216,266.962902791145,207.103890412902,223.975529862335,303.582331013801,543.241451291503,599.494245215301,531.429284651551,718.286293386577,581.737044317461,662.487307781314,720.150423764145,660.055214016429,745.64650668474,612.088872936198,698.326009423428,495.030403365843,550.848839986505,564.628008080563,314.3817665387,352.155820664609,546.621800254043,463.632239925478,413.782107739082,402.627144253069,470.700750401491,478.161781636291,525.427531637877,670.140701701529,919.613846857858,407.316283534376,431.753914831318,426.710263874544,375.284724377968,434.54817600149,430.844016218948,795.59113504956,737.557432202655,760.009645879379,825.675881652938,707.953915721189,0.103616813294233,0.103616813294233,0.103616813294233,596.836521759614,684.24930376029,726.087364047145,831.609379780737,661.79541084889,772.417049507726,641.977596336056,394.645682871848,165.328500954634,0.103616813294233,744.766251529173,811.437991772072,730.261485725632,794.28349021777,985.896367782832,895.830310457654,732.523183898713,644.491157982225,754.619656577361,848.952657707208,686.271585945293,822.737145292668,641.788149792764,609.415136038369,552.914817274142,621.047685730736,897.167705521497,773.415868957673,732.052839201793,807.709740797029,871.659785949035,925.089902099845,992.102765904086,934.24242839327,621.772290821459,512.431943169822,503.539061398865,546.55608914124,866.148258745446,980.41492532691,942.973464357544,595.786753480872,932.228137481792,841.881198189652,897.016327996341,955.339981626871,967.746492722113,899.692178695163,840.379047672659,899.180827846574,786.277544417842,807.590262198797,901.417586973819,939.818001756733,942.965535243707,872.184582988651,862.072557867773,916.171568705839,923.960471315399,865.776987306483,894.417448288787,804.728435937077,773.740963050928,786.60116229359,934.105012234602,875.834671061069,874.180984953727,821.085079619978,216.859919556678,716.033592274729,688.053723778042,494.671023641663,322.548237122865,338.464386396357,923.589700867194,878.660556564358,862.893452390614,832.885752935892,835.074163731155,915.099018406925,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,999.866637393843,0.103616813294233,0.103616813294233,911.821803359112,346.090279599263,396.372914196914,0.103616813294233,308.251777049657,950.290983130158,0.103616813294233,675.153894758003,630.296990092834,0.103616813294233,0.103616813294233,0.103616813294233,177.670683626265,0.103616813294233,0.103616813294233,162.450864562595,243.292950192261,170.774279409704,144.892882116515,238.061217016165,156.293934918538,0.103616813294233,0.103616813294233,118.197704911853,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,180.011098037382,104.83379237025,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.083684950893,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,117.955536337741,0.103616813294233,0.103616813294233,0.103616813294233,99.8421531888168,203.352524663317,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,225.938846926871,608.658904957291,166.912012176482,283.294476915366,227.501441437866,228.534661390179,267.464590064488,306.462101013362,370.636042658541,335.31402381361,457.443459868709,253.576908942496,381.273241065898,425.245460588535,294.861213629888,355.962354566287,494.257651593161,423.433236646767,471.211795727052,440.840354490124,512.577423000495,406.573733336278,580.808147214145,524.921810369792,574.813478141974,294.889159694313,194.420102093447,365.358217334037,532.79979825291,928.312106513997,538.280173871699,297.069658333896,405.794575656904,240.946746390078,346.044748648313,407.341952723774,192.950575837264,149.253391563451,105.30846980916,127.746525611136,666.286585663023,528.383046467334,131.47857449289,129.549424711632,273.067065416247,224.323519197647,284.644052889019,174.712777399476,133.531648861442,97.51383312911,214.846784101385,256.041079044743,259.672968376999,275.779056931775,341.71323073164,376.466954607277,0.103616813294233,129.862776672063,0.103616813294233,340.353447395776,422.168068169989,192.693338305342,261.700521342846,239.936419802077,355.931874883001,190.539189611123,408.50337181989,524.212371845852,461.480514938123,477.70764064453,493.526027354727,633.209080486223,503.048723595104,566.195618443881,478.204409228206,651.357299497433,568.970269505265,623.392914995685,750.802683498908,684.835438363265,974.063842454775,734.462483507872,693.789052066561,648.673656882068,0.103616813294233,0.103616813294233,0.103616813294233,143.534006662052,0.103616813294233,215.543505172865,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,420.996128127194,483.779977492771,719.227034898498,329.158381310779,255.201112240712,588.1623447301,701.534039765367,758.848619909711,661.601354397948,961.736452767142,814.58856896613,578.983186378088,840.696207844435,282.531269536264,331.972202118216,266.962902791145,207.103890412902,223.975529862335,303.582331013801,543.241451291503,599.494245215301,531.429284651551,718.286293386577,581.737044317461,662.487307781314,720.150423764145,660.055214016429,745.64650668474,612.088872936198,698.326009423428,495.030403365843,550.848839986505,564.628008080563,314.3817665387,352.155820664609,546.621800254043,463.632239925478,413.782107739082,402.627144253068,470.700750401491,478.161781636291,525.427531637877,670.140701701529,919.613846857859,407.316283534376,431.753914831318,426.710263874544,375.284724377968,434.54817600149,430.844016218948,795.591135049561,737.557432202655,760.009645879379,825.675881652938,707.953915721189,0.103616813294233,0.103616813294233,0.103616813294233,596.836521759614,684.24930376029,726.087364047145,831.609379780737,661.79541084889,772.417049507726,641.977596336056,394.645682871848,165.328500954634,0.103616813294233,744.766251529173,811.437991772072,730.261485725632,794.28349021777,985.896367782832,895.830310457654,732.523183898713,644.491157982225,754.619656577361,848.952657707208,686.271585945294,822.737145292668,641.788149792764,609.415136038369,552.914817274142,621.047685730736,897.167705521497,773.415868957673,732.052839201793,807.70974079703,871.659785949035,925.089902099844,992.102765904086,934.24242839327,621.772290821459,512.431943169822,503.539061398865,546.55608914124,866.148258745446,980.414925326909,942.973464357544,595.786753480872,932.228137481792,841.881198189652,897.016327996341,955.339981626871,967.746492722113,899.692178695163,840.379047672659,899.180827846574,786.277544417842,807.590262198797,901.417586973819,939.818001756733,942.965535243707,872.184582988651,862.072557867773,916.171568705839,923.960471315399,865.776987306484,894.417448288787,804.728435937078,773.740963050928,786.60116229359,934.105012234602,875.834671061069,874.180984953727,821.085079619978,216.859919556678,716.033592274729,688.053723778042,494.671023641663,322.548237122865,338.464386396357,923.589700867194,878.660556564359,862.893452390614,832.885752935892,835.074163731155,915.099018406925,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive805_field16":[-661811.536459096,330360.790944285,332575.654109498,-660153.159978877,-165197.576400492,-164913.166687019,330854.281651518,-164773.607006897,-661713.905992471,83553.7585005536,-415311.110690576,-413875.457415066,83576.6989727351,331720.808707096,85812.005234166,-39487.1229743603,208560.844958649,84575.8986314197,-39793.9692987981,-102358.792727431,-37688.1028641057,22689.0799751702,23246.9002190048,51448.0789679484,209606.756964438,127862.63111019,21952.9096591656,85739.6491912596,146301.998192848,118088.190788908,147335.184077386,71190.5902580395,45521.5340466832,-46473.9385739926,13425.467398553,208049.584221496,150003.763040514,123539.049792068,212389.98203571,153561.844172182,92865.7907474879,331138.917237801,34404.1249193032,227216.597032331,76176.1180061101,89036.5180177054,203192.458064249,331371.745325854,274706.64807264,261275.637422513,168855.767467882,332742.67434125,16111.7672896909,177200.546940115,277251.945426514,62102.0143097737,36365.5528563004,-48450.6937417014,58863.6983974545,148471.024683765,197762.687377012,256810.603380645,172404.078224731,123646.301467076,145606.111236365,237565.376412888,332095.86717907,97769.5269499747,332606.835534603,137532.968845511,138548.254751704,331162.19611683,230850.186304585,190444.694794588,182881.567333265,213538.409316924,208646.656126332,259745.807873607,184604.218675562,107484.050632038,155630.191254667,85996.811510272,173289.946517276,177747.587634528,332018.202976329,257112.252246209,330993.823109171,280295.181386691,284917.285730236,331312.873466623,275419.628719029,289175.954167346,241296.344920277,-102412.495524658,-414846.136245848,-33613.8665077411,-137355.586309264,-89601.817869418,-87482.0378845693,-130795.817397807,-162865.852886359,-209450.51004705,-172685.939127783,-289372.822597202,-107051.824168366,-227002.156564997,-259752.617939909,-141995.573242633,-194049.24480939,-307315.367655309,-251049.135867405,-291900.540017197,-259407.444483992,-331518.653745572,-233499.948529114,-382966.036270321,-335718.167954445,-373274.480889665,-133521.525057982,-53470.8699274974,-209259.926022839,-352353.670996263,-661858.023400706,-337521.068558963,-136020.286510042,-224873.762894615,-89982.2805159214,-175356.874439276,-219316.085431685,-63075.4435722124,-27684.4803230075,11497.3747949128,-6564.10107825234,-449139.303001821,-332982.804952814,3448.48914113462,960.684772028261,-97084.0602153813,-56914.5150153993,-109843.709155637,-5265.16415279398,10915.6963588499,61864.8326757383,-45126.7685189932,-74741.3185330132,-96665.9375862974,-113787.629775973,-166783.852924871,-183315.461886277,94508.4520127823,34948.6011559809,106909.113044194,-156382.663054661,-223122.627318184,-20053.7023945228,-65311.8726124484,-56332.8850372571,-152426.618968549,7279.9215560789,-216185.787958099,-313069.464364921,-261048.064331742,-279269.495250416,-282873.542812119,-395883.550278641,-282779.835701224,-342989.61857881,-266352.687739385,-418444.203870888,-339913.58268118,-391356.644404641,-496283.99266138,-441013.253814981,-661343.718945812,-476636.973892188,-444773.12024072,-402086.588294872,62925.0684730125,68247.0688424769,117024.953967603,50195.0003952613,127906.884543152,-15078.3581696644,210176.358678056,120130.195025803,221302.233489585,182262.411392556,171079.781291571,236555.447574752,148350.256797634,208832.159161651,273429.632567536,269979.196765332,333024.356250659,290788.6955231,270533.681712602,-233084.687705876,-288807.485187407,-457126.209482031,-121719.232220449,-39166.9441212681,-373256.633536283,-444536.219405288,-491972.531370483,-409038.044192103,-661954.228478493,-531301.428614032,-343138.746761116,-561684.680145102,-75963.7631618554,-129131.050769198,-56309.0394092707,56833.8597545954,17454.1157834933,23329.0491341642,-338038.58003702,-386334.914956112,-325053.46775548,-481994.535840041,-363456.722779917,-438285.570455393,-490587.917635409,-431110.811124101,-498605.792753011,-365796.504568326,-414693.043116954,-268687.814604408,-316330.221550637,-321580.100653926,-102732.75491868,-133135.87192914,-289796.976396148,-227381.400277673,-184796.919246226,-178375.174168124,-226864.291331082,-246139.297387602,-316318.450652242,-449485.3700899,-661816.791334142,-190373.347105725,-214622.669666655,-202260.451304412,-174869.701021707,-221657.024176385,-222396.239628598,-557526.26984428,-508699.044046868,-538742.237475438,-575173.544412856,-490102.692602849,330834.099925183,282998.264566648,243195.457697751,-399846.425977719,-476955.843262725,-509572.405053496,-595160.323382533,-454584.208606103,-542926.568817698,-434567.285092664,-218714.458605605,-31129.850177258,332682.82057874,-473169.354882763,-521120.485119817,-455624.329703835,-511573.959418201,-662004.802103363,-593852.247705395,-450481.716946949,-384644.847455812,-472233.199604488,-539725.163294357,-415561.981481541,-524512.54669046,-374158.937366053,-351352.825180118,-301733.297224805,-368616.474023284,-588016.286524933,-477367.009841176,-445678.702809817,-508349.884254575,-562028.04873859,-602321.505151292,-661377.803544371,-615332.580664692,-352674.120548655,-265720.712360984,-262593.200798424,-302456.42939012,-565878.91213884,-661289.640929729,-625468.19350578,-332881.386452497,-622877.569674523,-557820.835887624,-608141.460254433,-661455.445032898,-661419.600335239,-615095.857989177,-567032.162744675,-603706.284183681,-520186.372480553,-545020.488076168,-621113.822942945,-661544.27848245,-660941.504444212,-599217.212704775,-596323.881463433,-621459.607824683,-622427.060239942,-570325.500266423,-621101.741904647,-547268.698880441,-525079.958325947,-540932.160926786,-661684.505740282,-616311.12578943,-612764.845860027,-565055.153147893,-3435.97806356629,-471220.349318355,-452076.247209029,-263726.113569899,-129044.429574885,-148356.596745559,-661419.56445928,-624844.278628968,-614709.17307541,-593401.405670424,-603833.256151699,-661575.471373835,191968.981535753,271154.546240256,272360.954863822,235502.020558917,271096.095077515,332877.856697429,-661811.536459096,330360.790944285,332575.654109498,-660153.159978877,-165197.576400492,-164913.166687019,330854.281651518,-164773.607006897,-661713.905992471,83553.7585005536,-415311.110690576,-413875.457415066,83576.698972735,331720.808707096,85812.005234166,-39487.1229743603,208560.844958649,84575.8986314197,-39793.9692987981,-102358.792727431,-37688.1028641057,22689.0799751702,23246.9002190048,51448.0789679485,209606.756964438,127862.63111019,21952.9096591656,85739.6491912596,146301.998192848,118088.190788908,147335.184077386,71190.5902580395,45521.5340466832,-46473.9385739926,13425.467398553,208049.584221496,150003.763040514,123539.049792068,212389.98203571,153561.844172182,92865.7907474879,331138.917237801,34404.1249193032,227216.597032331,76176.1180061101,89036.5180177055,203192.458064249,331371.745325854,274706.64807264,261275.637422513,168855.767467882,332742.67434125,16111.7672896909,177200.546940115,277251.945426514,62102.0143097737,36365.5528563004,-48450.6937417013,58863.6983974544,148471.024683765,197762.687377012,256810.603380645,172404.078224731,123646.301467076,145606.111236365,237565.376412888,332095.86717907,97769.5269499747,332606.835534603,137532.968845511,138548.254751704,331162.19611683,230850.186304585,190444.694794588,182881.567333265,213538.409316924,208646.656126332,259745.807873607,184604.218675563,107484.050632038,155630.191254667,85996.811510272,173289.946517276,177747.587634528,332018.202976329,257112.252246209,330993.823109171,280295.181386691,284917.285730236,331312.873466623,275419.628719029,289175.954167346,241296.344920277,-102412.495524658,-414846.136245848,-33613.8665077411,-137355.586309264,-89601.817869418,-87482.0378845693,-130795.817397807,-162865.852886359,-209450.51004705,-172685.939127783,-289372.822597202,-107051.824168366,-227002.156564997,-259752.617939909,-141995.573242633,-194049.24480939,-307315.367655309,-251049.135867405,-291900.540017197,-259407.444483992,-331518.653745572,-233499.948529114,-382966.036270321,-335718.167954445,-373274.480889666,-133521.525057982,-53470.8699274974,-209259.926022839,-352353.670996263,-661858.023400706,-337521.068558963,-136020.286510042,-224873.762894615,-89982.2805159214,-175356.874439276,-219316.085431685,-63075.4435722124,-27684.4803230075,11497.3747949128,-6564.10107825233,-449139.303001821,-332982.804952814,3448.48914113462,960.684772028261,-97084.0602153813,-56914.5150153993,-109843.709155637,-5265.16415279398,10915.6963588499,61864.8326757383,-45126.7685189932,-74741.3185330132,-96665.9375862974,-113787.629775973,-166783.852924871,-183315.461886277,94508.4520127823,34948.6011559809,106909.113044194,-156382.663054661,-223122.627318184,-20053.7023945228,-65311.8726124484,-56332.8850372571,-152426.618968549,7279.9215560789,-216185.787958099,-313069.464364921,-261048.064331742,-279269.495250416,-282873.542812119,-395883.550278642,-282779.835701224,-342989.61857881,-266352.687739385,-418444.203870888,-339913.58268118,-391356.644404641,-496283.99266138,-441013.253814981,-661343.718945812,-476636.973892188,-444773.12024072,-402086.588294872,62925.0684730125,68247.0688424769,117024.953967603,50195.0003952613,127906.884543152,-15078.3581696644,210176.358678056,120130.195025803,221302.233489585,182262.411392556,171079.781291571,236555.447574752,148350.256797634,208832.159161651,273429.632567536,269979.196765332,333024.356250659,290788.6955231,270533.681712602,-233084.687705876,-288807.485187407,-457126.209482031,-121719.232220449,-39166.9441212681,-373256.633536283,-444536.219405288,-491972.531370483,-409038.044192103,-661954.228478493,-531301.428614032,-343138.746761116,-561684.680145103,-75963.7631618554,-129131.050769198,-56309.0394092707,56833.8597545953,17454.1157834933,23329.0491341642,-338038.58003702,-386334.914956112,-325053.46775548,-481994.535840042,-363456.722779917,-438285.570455393,-490587.917635409,-431110.811124101,-498605.792753011,-365796.504568326,-414693.043116954,-268687.814604408,-316330.221550637,-321580.100653926,-102732.75491868,-133135.87192914,-289796.976396148,-227381.400277673,-184796.919246226,-178375.174168124,-226864.291331082,-246139.297387602,-316318.450652242,-449485.3700899,-661816.791334142,-190373.347105725,-214622.669666655,-202260.451304412,-174869.701021707,-221657.024176385,-222396.239628598,-557526.26984428,-508699.044046868,-538742.237475438,-575173.544412856,-490102.692602849,330834.099925183,282998.264566648,243195.457697751,-399846.425977719,-476955.843262725,-509572.405053496,-595160.323382533,-454584.208606102,-542926.568817698,-434567.285092664,-218714.458605605,-31129.850177258,332682.82057874,-473169.354882763,-521120.485119817,-455624.329703835,-511573.959418201,-662004.802103363,-593852.247705395,-450481.716946949,-384644.847455812,-472233.199604488,-539725.163294357,-415561.981481541,-524512.54669046,-374158.937366053,-351352.825180118,-301733.297224805,-368616.474023284,-588016.286524933,-477367.009841176,-445678.702809817,-508349.884254575,-562028.04873859,-602321.505151292,-661377.803544371,-615332.580664692,-352674.120548655,-265720.712360984,-262593.200798424,-302456.42939012,-565878.912138839,-661289.640929729,-625468.193505779,-332881.386452497,-622877.569674523,-557820.835887624,-608141.460254433,-661455.445032898,-661419.600335239,-615095.857989177,-567032.162744675,-603706.284183681,-520186.372480553,-545020.488076168,-621113.822942945,-661544.27848245,-660941.504444212,-599217.212704775,-596323.881463433,-621459.607824683,-622427.060239941,-570325.500266423,-621101.741904647,-547268.698880441,-525079.958325947,-540932.160926786,-661684.505740282,-616311.125789431,-612764.845860027,-565055.153147893,-3435.97806356629,-471220.349318355,-452076.247209029,-263726.113569899,-129044.429574885,-148356.596745559,-661419.56445928,-624844.278628968,-614709.17307541,-593401.405670424,-603833.256151699,-661575.471373835,191968.981535753,271154.546240256,272360.954863822,235502.020558917,271096.095077515,332877.856697429,-661811.536459096,330360.790944285,332575.654109498,-660153.159978877,-165197.576400492,-164913.166687019,330854.281651518,-164773.607006897,-661713.905992471,83553.7585005536,-415311.110690576,-413875.457415066,83576.6989727351,331720.808707096,85812.005234166,-39487.1229743603,208560.844958649,84575.8986314197,-39793.9692987981,-102358.792727431,-37688.1028641057,22689.0799751702,23246.9002190048,51448.0789679484,209606.756964438,127862.63111019,21952.9096591656,85739.6491912596,146301.998192848,118088.190788908,147335.184077386,71190.5902580395,45521.5340466832,-46473.9385739926,13425.467398553,208049.584221496,150003.763040514,123539.049792068,212389.98203571,153561.844172182,92865.7907474879,331138.917237801,34404.1249193032,227216.597032331,76176.1180061101,89036.5180177054,203192.458064249,331371.745325854,274706.64807264,261275.637422513,168855.767467882,332742.67434125,16111.7672896909,177200.546940115,277251.945426514,62102.0143097737,36365.5528563004,-48450.6937417014,58863.6983974545,148471.024683765,197762.687377012,256810.603380645,172404.078224731,123646.301467076,145606.111236365,237565.376412888,332095.86717907,97769.5269499747,332606.835534603,137532.968845511,138548.254751704,331162.19611683,230850.186304585,190444.694794588,182881.567333265,213538.409316924,208646.656126332,259745.807873607,184604.218675562,107484.050632038,155630.191254667,85996.811510272,173289.946517276,177747.587634528,332018.202976329,257112.252246209,330993.823109171,280295.181386691,284917.285730236,331312.873466623,275419.628719029,289175.954167346,241296.344920277,-102412.495524658,-414846.136245848,-33613.8665077411,-137355.586309264,-89601.817869418,-87482.0378845693,-130795.817397807,-162865.852886359,-209450.51004705,-172685.939127783,-289372.822597202,-107051.824168366,-227002.156564997,-259752.617939909,-141995.573242633,-194049.24480939,-307315.367655309,-251049.135867405,-291900.540017197,-259407.444483992,-331518.653745572,-233499.948529114,-382966.036270321,-335718.167954445,-373274.480889665,-133521.525057982,-53470.8699274974,-209259.926022839,-352353.670996263,-661858.023400706,-337521.068558963,-136020.286510042,-224873.762894615,-89982.2805159214,-175356.874439276,-219316.085431685,-63075.4435722124,-27684.4803230075,11497.3747949128,-6564.10107825234,-449139.303001821,-332982.804952814,3448.48914113462,960.684772028261,-97084.0602153813,-56914.5150153993,-109843.709155637,-5265.16415279398,10915.6963588499,61864.8326757383,-45126.7685189932,-74741.3185330132,-96665.9375862974,-113787.629775973,-166783.852924871,-183315.461886277,94508.4520127823,34948.6011559809,106909.113044194,-156382.663054661,-223122.627318184,-20053.7023945228,-65311.8726124484,-56332.8850372571,-152426.618968549,7279.9215560789,-216185.787958099,-313069.464364921,-261048.064331742,-279269.495250416,-282873.542812119,-395883.550278641,-282779.835701224,-342989.61857881,-266352.687739385,-418444.203870888,-339913.58268118,-391356.644404641,-496283.99266138,-441013.253814981,-661343.718945812,-476636.973892188,-444773.12024072,-402086.588294872,62925.0684730125,68247.0688424769,117024.953967603,50195.0003952613,127906.884543152,-15078.3581696644,210176.358678056,120130.195025803,221302.233489585,182262.411392556,171079.781291571,236555.447574752,148350.256797634,208832.159161651,273429.632567536,269979.196765332,333024.356250659,290788.6955231,270533.681712602,-233084.687705876,-288807.485187407,-457126.209482031,-121719.232220449,-39166.9441212681,-373256.633536283,-444536.219405288,-491972.531370483,-409038.044192103,-661954.228478493,-531301.428614032,-343138.746761116,-561684.680145102,-75963.7631618554,-129131.050769198,-56309.0394092707,56833.8597545954,17454.1157834933,23329.0491341642,-338038.58003702,-386334.914956112,-325053.46775548,-481994.535840041,-363456.722779917,-438285.570455393,-490587.917635409,-431110.811124101,-498605.792753011,-365796.504568326,-414693.043116954,-268687.814604408,-316330.221550637,-321580.100653926,-102732.75491868,-133135.87192914,-289796.976396148,-227381.400277673,-184796.919246226,-178375.174168124,-226864.291331082,-246139.297387602,-316318.450652242,-449485.3700899,-661816.791334142,-190373.347105725,-214622.669666655,-202260.451304412,-174869.701021707,-221657.024176385,-222396.239628598,-557526.26984428,-508699.044046868,-538742.237475438,-575173.544412856,-490102.692602849,330834.099925183,282998.264566648,243195.457697751,-399846.425977719,-476955.843262725,-509572.405053496,-595160.323382533,-454584.208606103,-542926.568817698,-434567.285092664,-218714.458605605,-31129.850177258,332682.82057874,-473169.354882763,-521120.485119817,-455624.329703835,-511573.959418201,-662004.802103363,-593852.247705395,-450481.716946949,-384644.847455812,-472233.199604488,-539725.163294357,-415561.981481541,-524512.54669046,-374158.937366053,-351352.825180118,-301733.297224805,-368616.474023284,-588016.286524933,-477367.009841176,-445678.702809817,-508349.884254575,-562028.04873859,-602321.505151292,-661377.803544371,-615332.580664692,-352674.120548655,-265720.712360984,-262593.200798424,-302456.42939012,-565878.91213884,-661289.640929729,-625468.19350578,-332881.386452497,-622877.569674523,-557820.835887624,-608141.460254433,-661455.445032898,-661419.600335239,-615095.857989177,-567032.162744675,-603706.284183681,-520186.372480553,-545020.488076168,-621113.822942945,-661544.27848245,-660941.504444212,-599217.212704775,-596323.881463433,-621459.607824683,-622427.060239942,-570325.500266423,-621101.741904647,-547268.698880441,-525079.958325947,-540932.160926786,-661684.505740282,-616311.12578943,-612764.845860027,-565055.153147893,-3435.97806356629,-471220.349318355,-452076.247209029,-263726.113569899,-129044.429574885,-148356.596745559,-661419.56445928,-624844.278628968,-614709.17307541,-593401.405670424,-603833.256151699,-661575.471373835,191968.981535753,271154.546240256,272360.954863822,235502.020558917,271096.095077515,332877.856697429],"Archive805_field17":[94183.5078231127,94240.1266272133,94295.5954337799,94186.7704178703,94238.7195835837,94179.5416066256,94497.3834487844,94179.6172017407,94180.3689142075,94290.338789062,94204.5897190081,94206.0421274884,94339.087958765,94449.6465317816,94226.2275594639,94253.3422918591,94311.4819680007,94254.3654610088,94190.7982294043,94245.1726704744,94239.4632289785,94245.4303709337,94218.682771018,94234.9874135522,94249.4631070865,94252.8858366847,94258.0349056901,94243.9640756562,94279.2911070474,94291.8199557321,94236.3493994968,94262.3923298715,94269.0776693418,94300.9793806207,94292.3575228021,94395.9864437964,94350.5940541479,94383.510358928,94361.3141929398,94386.4997506476,94316.855364646,94486.0267345662,94369.8479575584,94428.7445661164,94340.2748829795,94355.8246554175,94409.7084420248,94470.6450770728,94430.0246533885,94438.1623951054,94316.0608537839,94381.2107184289,94358.2843523561,94406.4219641043,94404.5025624452,94346.7428476407,94332.7938323873,94256.3693769389,94323.4394605206,94385.7794046144,94417.2825132278,94452.2271823454,94401.8014070487,94383.0396625744,94381.4360095597,94395.6575828588,94420.6668093342,94336.3179161983,94418.9773254403,94339.7519158063,94353.0038979624,94478.0487976982,94427.9350267058,94387.2938980138,94397.3341188948,94425.4633457107,94354.742395335,94425.7914734543,94361.2188880496,94290.7996612413,94325.5298974467,94201.1610292965,94274.3120414201,94312.7999120031,94322.4067468396,94342.6395750553,94491.687703063,94463.5407926567,94456.9635490048,94453.8777800265,94397.4492571904,94429.8806107077,94393.9386713461,94169.792754307,94181.2113309797,94260.0914916789,94233.7946865641,94263.8709533072,94252.0764631184,94231.8536742291,94228.2975891705,94216.0715176315,94232.7652201638,94179.9131263213,94259.1253890603,94176.7965696217,94213.3355793916,94236.6839003984,94224.2279296821,94210.4239493769,94214.6898197776,94208.3505415392,94217.9383003965,94206.2527916067,94219.1809998091,94203.6416677995,94206.390170027,94206.8113068304,94248.5744296772,94234.4017398867,94220.4802184525,94180.5139254699,94181.6979905321,94211.2091430729,94249.3047487724,94225.5756959755,94271.2135632228,94236.2432480494,94227.7401485314,94300.4525980873,94316.3495224428,94318.723089915,94488.6014336825,94202.513535974,94210.1206791131,94282.2429446978,94301.7871348264,94248.0932984699,94247.5384226536,94251.8465364949,94402.1160376874,94324.9334912224,94328.2752289569,94259.5324768345,94286.5096280653,94263.5022501019,94258.6951740326,94239.278116998,94231.7630375403,94331.8601556282,94289.7003939682,94316.9084374396,94240.2400008819,94225.9968042863,94256.7959386849,94231.8428383915,94236.5888267254,94230.3395739472,94241.6636473009,94227.7927908758,94216.0118021046,94221.5662291428,94218.8240158272,94218.4308969672,94209.5849684257,94216.4448219203,94213.3347460821,94219.3935722283,94208.6284401106,94212.5585950349,94210.0575096393,94204.9996094959,94207.5089939577,94181.8972911497,94205.1262630445,94206.9592317895,94208.0631766108,94254.619456519,94217.5911446233,94245.4310755848,94233.091426792,94233.0538691075,94185.6982233964,94208.3399691604,94210.9697843648,94249.1510091431,94250.6608813277,94225.9596678462,94291.4314807194,94201.019782905,94224.1348738013,94218.9397736026,94248.5760405989,94374.6495416717,94321.7954395491,94277.4604549513,94224.9049250234,94216.6146953763,94204.5397549745,94220.038568256,94185.3318349677,94210.7243408348,94205.888336326,94203.6685211094,94206.7757782667,94180.8584706254,94201.5150433222,94210.9183838859,94203.0273754311,94221.2216897104,94226.2092065006,94219.4958773906,94206.4744131165,94202.262711914,94195.1162281378,94212.4665408181,94208.7718031803,94214.2516005797,94204.7856649979,94211.8323120505,94206.1023207426,94202.8338981837,94207.2614745701,94204.9219546758,94207.9170673286,94181.5700992957,94214.5379249307,94211.4367529328,94208.0441991891,94177.368132408,94215.7372470168,94181.5890228887,94210.7143930608,94210.7026467596,94212.1453951466,94179.454979838,94210.4647780638,94215.4555394435,94203.9878470616,94181.4396180376,94217.5219162935,94218.0241840459,94212.3866444856,94229.1034678008,94220.8626860403,94222.9470142113,94199.3975742037,94200.9051872325,94181.7924944088,94200.9437854258,94199.0721831286,94495.5947131722,94462.7427856007,94443.5268338304,94204.7286520281,94181.8912351874,94198.645608546,94200.7590354212,94201.5159147509,94199.1336647507,94201.2947354676,94224.6487849813,94291.2160373595,94274.5360853806,94202.7516235973,94198.7718665932,94201.3762949012,94200.4421907579,94182.5731452866,94199.1293049428,94198.024691175,94203.5811406434,94199.1941279273,94182.3683842475,94200.4811805504,94196.5814223825,94202.871088627,94202.4433181361,94202.7667723625,94206.024360469,94196.711273701,94182.4931139812,94197.7027609134,94196.9054400134,94197.1241986877,94182.6109570007,94182.7109708036,94196.2233193623,94181.5425279053,94202.666271116,94206.5369196155,94206.2947772323,94198.540523273,94181.6779416282,94195.6965582139,94201.6401921319,94197.4214656965,94202.2941961735,94200.8273209432,94181.6443103678,94181.7295199111,94202.621322094,94203.7121324262,94201.979216858,94203.8679124776,94204.1986098958,94202.3673156663,94180.3545688629,94182.5202944623,94203.0587044267,94203.4977445805,94201.2960901716,94199.5988718325,94201.0575703044,94204.1569623705,94203.7573585377,94203.6402067901,94202.4875218232,94181.6885033565,94201.0217838496,94202.0549041366,94203.6624729058,94190.5209806649,94206.1433415051,94206.7965879343,94212.1792543855,94237.1241542238,94239.1995774283,94182.1525978855,94199.2642842465,94199.2503116119,94197.7475545799,94183.2705535997,94183.2612824749,94270.4761792327,94313.6167375997,94267.0702285469,94277.926335868,94355.5254365552,94337.5492883689,94185.2271065857,94240.057002184,94295.4995079466,94184.7352335292,94178.171592384,94186.4456387917,94497.2617862523,94186.4891190514,94185.5974833021,94290.2248394986,94182.5930146656,94182.4065947357,94338.8615962553,94449.5382735188,94226.1746939508,94220.2667761979,94311.3715372589,94254.3054854533,94186.2664568397,94184.3790891685,94194.8355246874,94221.1923042041,94201.2713711895,94216.3068626311,94249.4108711805,94252.842899607,94236.6239537752,94243.9213080963,94279.2166828719,94291.6937907676,94236.3084534356,94262.348248915,94268.848183955,94176.6416254431,94254.9505724519,94395.8899746697,94350.4442934622,94383.31637923,94361.1920544304,94386.3767987868,94316.517019328,94485.9105202917,94304.8297936625,94428.6349485321,94340.1607785859,94356.0154376129,94409.6281019172,94470.5339680461,94429.9187412617,94438.0535567539,94315.9350900692,94381.0934804561,94291.3987044705,94406.3291000893,94404.3881665635,94346.7146640934,94289.1383306186,94254.0884713391,94323.1789391405,94385.647339145,94417.1518058395,94452.1028038551,94401.7562602787,94382.8759653841,94381.2872377022,94395.5416373273,94420.5497731884,94336.2312060498,94418.8337895149,94339.6350078277,94352.8293381048,94477.9169269264,94427.8023738446,94387.1340257153,94397.1796707815,94425.3382154654,94354.6142037529,94425.650430316,94361.0757102594,94290.7233269774,94325.421356443,94201.1390147999,94274.1985981389,94312.6464109467,94322.277953572,94342.5023809563,94491.5638840191,94463.41761768,94456.8349860501,94453.7367141403,94397.3051065994,94429.7406752844,94393.7943839189,94185.4703113881,94185.5531404247,94227.9697612682,94179.5649616367,94172.7844087232,94184.9408332447,94178.7821648371,94179.7307920689,94181.460759291,94179.2420678642,94185.7676937493,94177.2919805287,94186.1921713659,94181.5765017673,94179.9285928637,94180.0781394672,94181.8869614423,94181.4031689986,94182.0965185894,94180.9861157407,94182.4537762913,94180.9018393622,94182.7058796832,94182.3816189445,94182.3324707875,94176.9441208156,94229.8374157772,94180.7644286528,94185.65937951,94185.4591211399,94181.7834314527,94179.2576168704,94180.0364045605,94173.4034606827,94178.8716430617,94179.9335872654,94156.3433922679,94243.6851476138,94270.056602935,94316.9382707954,94182.8478895709,94181.9289458261,94232.5152156385,94267.6297745003,94171.6189848228,94218.0724172415,94182.9875223872,94344.5967563055,94281.020767743,94297.8699497176,94188.5501525282,94204.9774036083,94172.8592403073,94185.2878764794,94177.6279941593,94179.0659923863,94331.9303782284,94251.85199574,94316.8170109781,94179.1068202792,94179.9858824565,94216.2791005519,94181.196880761,94171.5008990672,94180.9033101335,94211.7224360834,94180.0484823558,94181.2207372371,94180.4763549585,94180.826526179,94180.8679642949,94181.9721470137,94181.1339565017,94181.5255719849,94180.8853756687,94182.0846320543,94181.6086037595,94181.9050956504,94182.543148879,94182.2250256102,94185.4350592474,94182.5328193027,94182.2930378931,94182.1575542833,94254.1114903455,94217.4591174087,94245.296853442,94214.5728070013,94233.0109211708,94193.1582788603,94208.3093151731,94210.9473887751,94249.0731747048,94250.5749704912,94225.9121979786,94291.3151090998,94200.9983959695,94224.0901177244,94218.8816566906,94248.5050563895,94374.5048984579,94321.6673055945,94277.3566778359,94180.3635366209,94181.1354878948,94182.5983294028,94180.2144474993,94185.8893231951,94181.8448073747,94182.4174807988,94182.7140177072,94182.3140232225,94185.5383197467,94182.9531931746,94181.8254767072,94182.7501950365,94186.0072808544,94179.3670247303,94186.0605009894,94197.8654075041,94197.2582906071,94190.203778674,94181.6221079804,94182.0782010128,94181.4092201547,94182.558448116,94181.7040793622,94182.3992872753,94182.8174764686,94182.2521656791,94182.5398329031,94182.183834268,94185.5075840059,94181.3858831821,94181.7602394167,94182.1710169045,94184.4609058297,94180.8390754478,94185.5733648587,94181.8273473686,94181.9480317904,94182.1170071539,94185.8064042338,94181.8886656041,94181.2745898637,94182.6577664245,94185.4857043121,94180.9649257162,94180.7744378481,94181.7812235441,94179.3474911257,94180.7549094746,94180.2568273541,94183.2165801839,94183.0543902952,94185.462103552,94183.0101725772,94183.2720526812,94495.4735608153,94462.625415034,94443.4086359448,94182.616012684,94185.477982622,94183.3681630476,94183.1706176056,94183.0122586034,94183.2498261207,94182.9972671716,94180.1968188789,94227.348181234,94274.453309708,94182.8147160256,94183.3156930722,94182.9837514386,94183.1077878901,94185.3342565948,94183.2876661333,94183.3963934818,94182.7270189581,94183.2597357336,94185.4145211165,94183.1029331782,94183.5812910912,94182.8474316618,94182.8628447535,94182.8197373694,94182.4151021453,94183.5378236054,94185.4161003206,94183.4951960601,94183.5801474433,94183.5308197597,94185.3391822978,94185.319753817,94183.7607027732,94185.5214638971,94182.9297018792,94182.3619911064,94182.4047486026,94183.3153858464,94185.4520259913,94183.898557275,94183.0668833625,94183.7316728649,94182.849087466,94183.1206950841,94185.4284675282,94185.4299891546,94183.1715389651,94182.6722565412,94183.1280860761,94182.6745452023,94182.6201856701,94183.3547521696,94185.5952350523,94185.449716188,94182.8232447418,94182.7494560158,94183.4401496234,94183.5049342468,94182.9926949467,94183.0359218914,94182.6784151544,94182.703739826,94182.8279769832,94185.4498307056,94183.2359663689,94183.2920334301,94182.6802812547,94188.9637321517,94182.3968991281,94182.3137728896,94181.7317548451,94178.3697746293,94179.8197970661,94185.3854412988,94183.6509629204,94183.4217615451,94183.484207407,94185.255270473,94185.2637788482,94270.4075928831,94313.5154493093,94266.9863795565,94277.8477754026,94355.4057469543,94337.4486779402,94184.9999999999,94239.8477937931,94295.2123513889,94184.9999999999,94184.9999999999,94184.9999999999,94496.8944298458,94184.9999999999,94184.9999999999,94289.321437265,94184.9999999999,94184.9999999999,94337.898361858,94449.2121916526,94225.947884066,94184.9999999999,94311.0451672206,94253.9397678596,94184.9999999999,94184.9999999999,94184.9999999999,94170.8229084292,94169.2317376316,94166.6291587434,94249.2587937777,94252.7537136267,94173.9289688257,94243.6155927053,94279.0407141782,94291.3486108991,94236.187755262,94262.6431477809,94266.5955648907,94184.9999999999,94172.2351976993,94395.5516732331,94350.1925037966,94383.1231560878,94360.8061231931,94386.0876063256,94314.6063265962,94485.5612884665,94184.6208169531,94428.3089030137,94338.3217747815,94356.5890029423,94409.393457466,94470.197310806,94429.6059398346,94437.7337804759,94315.5055585592,94380.7408286428,94179.0544230002,94405.9847530314,94404.045759876,94343.6890952515,94181.2945200722,94184.9999999999,94321.8224583774,94385.1164602224,94416.8138797236,94451.7388111723,94401.5470470868,94382.8714027694,94380.8636274898,94395.2091239196,94420.1976885251,94335.6156017398,94418.40418769,94339.235988569,94352.243474684,94477.5216744716,94427.4000889764,94386.671464138,94396.7183701239,94424.9701290765,94354.2218910881,94425.2242485136,94360.6459791158,94290.5857268722,94325.138892311,94201.1143477752,94273.8849335339,94312.2021845598,94321.8916584752,94342.085836035,94491.1928646791,94463.0459473814,94456.4507407458,94453.3122632452,94396.8752543205,94429.3206301748,94393.3635592847,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94176.3680569226,94184.9999999999,94184.9999999999,94184.9999999999,94168.5748092068,94183.2189208698,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94187.7037497141,94205.2660646427,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94332.8748478342,94184.4550130502,94316.2256941073,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94171.6083471177,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94251.7579813629,94217.2109503082,94244.6729920502,94168.9744748963,94232.938263794,94184.9999999999,94208.2160133818,94210.8102620328,94248.8432041582,94250.3007342062,94225.7749353874,94290.9645616075,94200.9467310345,94223.9527292339,94218.7085352621,94248.2925090404,94374.0724396557,94321.2844795152,94277.0456562944,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94173.4513681738,94176.7063363991,94177.6809407313,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94495.1081693477,94462.2703484595,94443.0578844149,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94274.205141049,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94270.1875027953,94313.212835889,94266.7337724995,94277.6149052725,94355.0492747992,94337.14713219],"Archive805_field18":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive805_field19":[0,-43.6235812390028,424.807490286631,0,347.6696634586,0,766.871472030559,0,0,832.754120170452,128.54016093763,138.79197884766,1049.09854694801,695.643233994644,21.3818983370721,181.495536351877,445.924293908106,186.209111434203,0,288.642327646976,-197.703715536512,158.438947532271,29.060218249594,109.013790879361,333.813638559307,186.029444122027,423.898028079262,59.6140993192558,343.038842058971,503.807889783699,207.471836891071,337.829639734138,587.465708605977,754.843613274871,1029.99011635596,789.249544894643,740.659633826271,1196.55176533968,605.970389715824,936.486406296013,1054.36953459976,827.846726670754,2039.46372291135,910.608425057024,1457.07402178966,1509.67963091868,900.279696483633,779.442337428846,751.346177841777,835.093925537424,504.325444012484,508.73987435181,1629.96911510594,967.277435212105,642.23747400662,1375.39031464234,1230.95961558084,553.394061145736,673.781824858182,1132.43856063295,973.605716198958,826.697632982511,1030.39656873015,1130.05632120973,873.808308357054,693.967239240539,598.906992294862,892.868272926103,277.570768449637,548.491255685812,710.860583726984,548.086356706318,692.180157407638,610.694283780798,741.969862902336,818.151288082992,341.522552794415,527.174041021083,471.945936942832,356.465750886493,368.412658727318,-390.078616067787,78.9013468434972,223.462987576855,47.3523910115349,189.104359606954,671.441901572505,732.0965483151,628.100954266133,413.392641168573,342.888089069241,443.046712827785,426.368083871206,0,0,425.211143230384,312.626794423625,452.482592888587,323.243270786762,282.294118099487,251.322516286433,210.794754996207,317.616514302905,0,477.605823676681,0,173.440791969579,349.167282098771,255.877888407669,167.449143552755,197.298588804778,152.301055322821,217.010108418568,131.724821152434,226.198048548417,122.549432672725,142.200586792692,143.704510363511,432.043351236611,438.912998753556,213.984500985952,0,0,172.444617807816,410.178999216853,268.092213932554,647.209724933403,341.102935514059,283.123557255632,990.461334498963,1427.92847402247,1445.72696812899,2416.40763286738,116.026803435897,165.158580303732,833.607179484113,749.475399781598,460.05864128914,472.288061037641,465.722186814578,526.900684706327,590.679744104677,518.367686358481,604.39414061813,447.46975722494,598.351684959608,549.476244147183,367.986511167971,311.785803508691,564.398463743919,481.935929188865,449.348982867436,364.074972643289,273.495333093661,457.02350708546,322.447243141522,380.448066657638,281.098882402491,236.887313752888,285.053306750162,203.95177275542,241.081084404758,223.545020952487,220.335737241098,161.592582356882,207.707842560732,186.173217812434,226.629360264969,155.257093135026,181.314327933514,164.912625694058,132.817240823749,147.659714299932,0,132.29480093805,143.887743416576,151.744198694256,175.64311950588,-188.955206249302,3.94842859985232,45.5028852574077,-43.9092640642762,-210.513668718348,-141.819240881392,-371.424958140137,-49.5806406676094,-23.1133507848878,-168.08417114221,63.5131414934637,-277.7603193574,-123.255784843171,-67.2599077252229,-43.8101249853951,150.651753357606,87.4698054030853,9.74149901146667,262.937334511707,208.30347172647,128.390664659923,206.948404587373,0,168.664505111391,137.187774848679,124.337025647179,143.262296241972,0,106.593449770666,169.993075028116,113.818478881975,238.095432545028,256.555006344171,202.852283322102,-486.491162142624,-309.707254733793,-540.319451550029,180.69392999364,156.180222347946,192.717348898833,129.659344821839,176.359877178137,138.642331318636,118.038960778927,146.494887117654,131.094919378538,150.639193938413,0,194.285305047309,173.585803020513,151.296885402442,0,185.405829555308,0,155.240628636591,161.264880748822,180.790178080763,0,167.605745344224,200.600722857992,124.492856975098,0,217.849823351979,221.203272356757,182.7592282265,294.095911104013,235.629141090323,251.149432983915,91.9060072004779,105.320708826952,0,99.3843167574273,91.9876272087665,823.222757700659,854.946000845877,883.658687291876,119.212887520546,0,84.5447521361613,93.03910141445,101.567239897349,84.5012964129243,105.233721347473,263.675367586985,1145.36900281767,-19.9872547527827,116.448287599345,90.6940226556209,107.509698910326,101.967142348064,0,89.7380227814064,84.873833344875,122.297497755768,93.8634025608316,0,102.625757401937,75.4826150144534,107.610808180912,115.279440275562,113.479929313418,138.215094262381,74.3869880959884,0,81.1650615129149,74.3441695065488,71.993512111146,0,0,70.0585457151981,0,116.78252333859,140.743100703537,140.662960165251,85.1717158504488,0,67.6587057234414,105.987742689768,80.6150612284426,108.030632035467,101.767169201475,0,0,110.221701929148,115.533608886511,104.416769059779,124.79754970036,120.956118012966,110.234649502615,0,0,112.929353988686,113.676998083753,103.000507139973,93.7999130324932,97.2417176094055,117.800379665295,120.736530186703,122.513395578536,113.420570683273,0,101.307635994616,110.166411320061,112.767917285443,-629.533130162572,139.445228457739,143.211884624841,177.796414961958,347.76445068552,355.704658928403,0,92.6938525883719,89.7570109731131,81.9320064850655,0,0,335.500904424325,436.648879982603,401.844609371784,379.527942980228,511.786352908801,447.770371201477,0,-45.0749880311744,428.415849183491,0,347.989331183173,0,768.12510945593,0,0,826.993835873691,128.604205226433,138.861220861859,1058.02755211968,699.587807373616,21.4365154888856,181.698528590097,449.363024550705,187.512978792154,0,288.746790244372,-197.804673150327,112.280652166873,16.3775125359231,78.8871799404409,337.32833858402,190.530494744313,410.56775366292,67.070997532772,346.124045678539,505.738509395903,210.639133665085,341.123343424871,590.707968352696,755.361260523449,976.255616200926,794.268884802681,744.012644403717,1201.86992675495,609.619311768528,946.12349561502,1081.65197690567,831.029213187467,1897.70875566387,914.105592251575,1457.75293175951,1504.7330097246,905.569424861382,783.253228313068,755.459671733657,839.099373603001,507.354955788794,512.417281895217,1592.85533659656,968.601966208129,646.161756753884,1385.40458219035,1186.22853170944,554.293275974613,672.19256521138,1134.32583499618,976.016946957472,828.147897333067,1034.73511303756,1132.27302497309,872.219416598609,698.165897635883,602.731828454834,883.210339922947,277.219550183852,547.94266517187,708.101203935527,548.186359711919,692.075949240028,610.015743965011,741.000163569484,818.588101181247,341.735570468363,527.097451129091,471.668522859142,353.174607006431,368.305966490382,-402.118637963915,79.6101874921923,224.680598025308,46.1976604917062,188.712978776681,671.948261193652,732.792445044391,628.301034101741,413.27559293204,342.732135832958,442.964075358512,426.311237841533,0,0,425.3231854839,312.767278690271,452.651717585372,323.288953737062,282.360130549371,251.41273368701,210.874900128526,317.842159668762,0,477.780441477748,0,173.520222367804,349.386375998715,255.995451720137,167.527491419445,197.395056004143,152.353016697438,217.126374346977,131.770127729422,226.312042390148,122.584838829275,142.252366954283,143.76995394792,432.427653893246,439.363404542397,214.083401362195,0,0,172.534561292574,410.373260829047,268.267388837965,647.823756243583,341.342198681198,283.336906075802,991.253921247273,1429.82664323666,1353.97498329527,2419.15765555662,116.075041269817,165.238049620284,782.262690814742,724.977242620839,460.279793049663,472.574917968564,465.821046131021,527.432857749375,616.178117643442,525.187413974904,604.842176305078,447.601179961506,598.740569005375,550.108644306546,368.258175870989,311.999881546334,562.77938402468,428.636400581636,451.314714968785,364.386194287394,273.678727810709,457.375369708411,322.604250446388,380.573197657793,281.227403562427,194.260236702498,285.243290019763,204.08065049588,241.249317827624,223.687391845755,220.489698361046,161.693778198366,207.837649230373,186.290028721882,226.78705974068,155.349634294395,181.42658453251,165.018725826769,132.906236414826,147.745110947001,0,132.366822881308,143.969037415333,151.834968245028,181.503659559626,-191.484343721472,16.880020603985,25.2623430962991,-56.3300794115427,-210.58132165548,-143.528558068504,-367.790807481886,-51.299319322332,-26.4572695599204,-169.266310194368,62.3202451171716,-280.082430445103,-124.830262319224,-68.7783745015542,-45.2771955144416,149.907834111354,86.4749402678056,8.40065904585582,263.129157066188,208.4321488727,128.45665688246,206.96606005285,0,168.761689945396,137.264674977988,124.419342150654,143.345163653087,0,106.641929257445,170.092918570415,113.874471640595,238.165706658872,256.645305093325,202.893417335873,-433.572781296312,-317.570499160791,-470.670631767885,180.795665837889,156.264076095688,192.833265591118,129.725231040949,176.466649827169,138.712129175047,118.098140103697,146.578883053484,131.169775925896,150.719522849888,0,194.397013403057,173.685436734029,151.370136719227,0,185.453529103521,0,155.303526998336,161.335438065597,180.844990397899,0,167.680513973173,200.729827431188,124.545115960539,0,217.966867037535,221.335749874673,182.834959104683,294.296013984696,235.775195128886,251.327971280951,91.9315162739764,105.369337468037,0,99.4100296187996,92.0129437647298,825.468171372678,857.745369430385,885.980878102234,119.261277933261,0,84.5792701758048,93.1093561583923,101.619165568092,84.50832480851,105.267600447367,263.834458848558,1147.25142092286,-21.3716015607946,116.508127763015,90.7375002619653,107.555086471707,102.013958661088,0,89.7878490336976,84.8982032496298,122.35404942099,93.8989198233952,0,102.668342012891,75.5002597893974,107.650827818155,115.311750509603,113.493376561594,138.28293053189,74.4042254280518,0,81.2065756709622,74.3675530296421,72.0104028787419,0,0,70.1129097563022,0,116.836332627233,140.804897413176,140.728566207792,85.1948630024637,0,67.6890103551187,106.029196306831,80.6793877165609,108.056820885787,101.861277239017,0,0,110.323599454047,115.56934791848,104.480770138362,124.880258598098,121.003307167981,110.386788767895,0,0,113.018035721611,113.743634194004,103.119635701565,93.9174933619053,97.2611677442573,117.978668666933,120.806141598377,122.585029651799,113.476043745151,0,101.381495163435,110.31618406418,112.787959009938,-630.554437226655,139.530277204962,143.292862866214,177.884956603479,347.994298983876,355.954868399528,0,92.7855153169834,89.8063258883813,81.9804505765366,0,0,339.148496216891,440.252989965621,405.440364399374,383.123737922066,515.434917442843,451.391333967608,0,-49.2616844571572,429.669829704015,0,348.377578542672,0,757.855268092423,0,0,805.831448837987,128.680714508004,138.944757483286,1091.9663772806,697.391076982169,18.5015896484203,181.947622902523,450.461031083973,183.474815993422,0,288.877052512635,-197.855713905635,49.0574544236409,-24.704254968857,12.0795929806881,339.293920883334,195.937286324833,365.600256620174,79.8318322798379,347.419654389058,507.933750476634,212.945234223382,357.442325975948,594.32821872554,756.01053517529,848.994465265456,793.800355312328,743.173400137888,1184.79197358625,609.527012493213,955.403755136558,1143.37233242403,823.533629207268,1661.07243424988,904.594007555647,1416.9279337541,1427.44169267983,901.769621285547,778.689569542457,752.577800359209,833.532515990281,508.303407401985,512.823587205872,1519.75363547478,953.424879823362,645.230594052479,1392.01090640549,1078.67259982416,555.21907219616,665.28749610471,1109.37401297456,961.284847432615,816.85389926051,1022.37045124589,1116.50584271176,857.531503922476,697.270422255515,602.116448324994,847.062946109493,271.242196989686,543.991690117703,695.922377344076,539.639811693943,681.61021794128,601.005026769917,729.220910287957,806.2255834448,335.861405961117,518.817774866717,464.229477399974,320.639737629783,357.998728530297,-421.668639376388,80.2089838317833,223.11183774525,41.3117057421062,183.788385588815,662.174284939814,722.310747876273,618.858495955928,406.122090880363,336.367804813795,435.561761431187,419.240439585458,0,0,425.434204147639,312.941819160016,452.861299266635,323.3547374454,282.441088550492,251.52583002809,210.97418934786,318.118243922717,0,478.014744064266,0,173.620370696858,349.656811560978,256.142626688193,167.623741902658,197.5143950697,152.416963154577,217.269187324754,131.823607098599,226.453232860361,122.627293434853,142.316594420389,143.849630720183,432.901384922835,439.792073147768,214.206259610791,0,0,172.643666393737,410.626500605632,268.482940815967,648.628846143007,341.637530356351,283.59811465201,992.407606022494,1431.88923499539,1207.61525998922,2421.57436125868,116.133318907007,165.334852859556,693.412460059186,663.679526460811,460.540229984725,472.835572275038,465.969225602662,527.866234035995,601.581964436445,514.97254177583,605.41621259102,447.800570215864,599.262340289608,550.862781059143,368.599039597688,312.264121995327,569.457480145269,360.61247281063,449.113001128793,364.76884774693,273.905674588029,457.846923851293,322.799275862752,380.734542383561,281.386417529278,156.488826205948,285.477172786716,204.236602201149,241.455226682542,223.861412674966,220.676720251858,161.814458356695,207.995799140448,186.430612880522,226.979015275584,155.45945602212,181.561740403183,165.145449475567,133.010505031922,147.845478985235,0,132.450833622484,144.064474219588,151.943435041882,184.057206848993,-209.018668960294,60.3490638489201,-34.2996492291934,-95.5139428800303,-210.434998753898,-146.464664686249,-352.99770208754,-56.4939383707446,-37.2960202234126,-171.40490766662,56.9741820856287,-280.980272460458,-128.084314991363,-72.7199455799854,-49.573174323429,144.629161623823,81.4015660189538,3.52612869731221,263.363969132934,208.589257942809,128.535429816086,206.989020974297,0,168.878404485215,137.355176923991,124.518120233416,143.444247205021,0,106.69227490173,170.213083642947,113.93753905788,238.241218745033,256.758217873394,202.94367899921,-389.747425976558,-307.331990871597,-424.546773952076,180.919023451557,156.36517417564,192.973899647843,129.802784192124,176.594821812436,138.795281303335,118.168318968013,146.678849287401,131.256824810441,150.816454037643,0,194.533591480885,173.806547722931,151.459224980475,0,185.508658792382,0,155.380715876472,161.422179192025,180.912508553367,0,167.772609191691,200.886296420173,124.607498300417,0,218.111731105172,221.498968533936,182.928172550297,294.543798005354,235.955179852791,251.547032154471,91.9609132328354,105.427721934738,0,99.4397885771811,92.043480837146,815.886853286705,848.463272813961,874.576063107334,119.318321511713,0,84.6195769055188,93.1872992860479,101.683414402193,84.5164466821406,105.309186698674,264.031917658499,1149.25343372212,-25.8034233343291,116.580267915128,90.7894306038532,107.609212274006,102.069988901372,0,89.8390584072275,84.9282562166369,122.422955769135,93.9419187336307,0,102.720755130534,75.520511327358,107.697161183417,115.349187614717,113.508662006025,138.365082534721,74.4255953156157,0,81.2554231504667,74.3929811572553,72.0279759978274,0,0,70.1667203331078,0,116.901743846539,140.88204707725,140.809518231638,85.223732811268,0,67.7188026160988,106.075639661905,80.7406402361433,108.083147430751,101.962809133508,0,0,110.409430160167,115.608298558494,104.52975724893,124.97691777999,121.054481857798,110.507267035847,0,0,113.107970068857,113.799801896238,103.217622443073,94.0204003442629,97.2874214347176,118.122686177035,120.889805786769,122.667261006397,113.541647790577,0,101.456019134277,110.427738625833,112.81089238613,-631.263321256757,139.630534377844,143.388436909372,177.993575088681,348.274545280298,356.268936767716,0,92.8704236824214,89.8538474221963,82.0347568197982,0,0,341.469573435649,441.407058405907,406.917414791255,384.842099983626,515.858717027951,452.422244616776],"Archive805_field20":[0,91.9094455056128,13.1019692720915,0,26.0447192712773,0,94.9588002158843,0,0,20.0690378067511,10.0636063803076,9.54764190276169,141.093164897169,41.8735592522377,-22.6683903544904,51.4699826443218,14.4978043921365,-3.2322946263799,0,36.1878030464499,-100.358564514896,0.505961207330303,-27.646685581647,-9.57177028613777,4.72916631342054,-8.96941799056626,34.6669946262366,-21.3355635719112,5.87165659296427,17.736614857129,-6.65755938326826,16.3289353038537,20.6310167678913,6.9714083559094,9.11083858290645,43.8976791432093,30.6713343493241,67.560521627467,27.8067277970807,46.0602728727498,28.9286315525377,70.2511913890691,91.9962425788575,73.9650979576872,62.8909400929711,110.576101161519,58.897863037421,55.5517029878391,47.7702650141374,61.1644064990656,18.3578760830583,21.0719843284526,176.314345053279,102.642722137971,34.0240579911453,146.278749979844,155.633734873147,106.90194875043,125.672936074577,91.9997855221735,87.7019224608428,94.1669972494117,72.1127018204342,115.707895793201,120.492372549962,37.5314463954278,30.2351518406763,134.952555416372,101.409221560956,126.075257081169,125.20390156354,105.2617997957,108.765095537486,115.920870509239,115.36895498422,104.999013984942,107.596206354704,107.942027016224,115.622749857719,126.918270733887,117.075398287665,92.1370441567297,90.1458769876491,101.700243254862,93.8679559053706,98.4992632452074,102.310736169558,100.94090458835,105.291961954902,104.848008249103,104.164713865222,106.011646755778,108.197273158509,0,0,54.3351381083496,13.8968262673932,-24.8917263778535,-26.3038876751526,13.1328409871233,2.50317711600586,14.4569298100768,19.412975724987,0,44.4495941061094,0,5.19768842394475,20.0476166153069,15.0693487467195,11.3906203535407,12.8521321357853,10.1156950419288,14.2576802684204,5.9236341170661,14.176655293648,8.16487099921081,9.33589267506988,9.57865671536968,28.6368283693492,-47.4169466626393,14.265229736625,0,0,12.0386783436856,30.3388724353499,17.8144003475551,-63.5296478356122,21.814570581558,20.7410576123883,106.574813349496,13.4502691332007,31.6940020399012,129.480826616791,8.02084372799227,11.2106346200165,12.9127629719411,116.261081517151,26.9359240182969,41.8953250168168,51.0816329614384,164.247679952025,138.132003203156,159.53525434043,120.748072367025,40.6166549118149,108.115473513834,45.7769004102277,22.8277557623445,23.7884395147309,134.885882520429,166.388640854385,133.426077598882,28.3730543413462,20.4531898129902,189.537193707097,46.7713770365262,29.4746687296863,29.1990078595819,85.1746840658616,21.7915106325209,15.1181710982023,17.534573212244,15.8455696366029,16.2834571531678,11.9765865669855,15.796901966853,13.6818636021681,17.1070249086009,11.4181141230425,13.6503326492712,12.0686448442409,9.68474124358308,10.8641926492333,0,9.97888056784849,10.784799666172,11.490474964593,93.6228479849792,74.9291841788696,78.2513185810977,55.5592737071346,75.690693050371,19.4999767085719,90.7314324332041,90.8055882368077,90.5315759465791,87.2035368379646,88.7860932151124,92.9591520056733,90.9518761087901,90.3833579275022,91.5132822480045,91.7050442045203,97.0927414149297,94.8609497357868,92.5958048614089,18.3100450763167,14.2206780288736,9.94750392368834,21.4519727248349,0,12.1004350906262,10.376549457501,9.3602202559244,10.9224080949073,0,7.84302718403876,13.0176279524422,8.19807376447456,18.0530898422229,26.0071971539906,4.4961198661935,94.077166810475,62.6323060383547,112.782685420152,12.6698987637501,11.0118748577113,13.4882592331009,9.2701213137534,12.5660061218979,9.75917652401645,8.33417472434742,10.3745366348693,9.51520163373626,11.7403696327389,0,15.3951005802119,13.2448709795271,12.0929435690417,0,22.3773537561839,0,13.909041056955,15.9415892375068,16.6270080084351,0,13.5659343326063,14.3226408533373,8.78413447290307,0,19.2261548410577,17.9290111764795,16.1936032490193,23.6053453627599,18.9398083163255,19.7209830839933,6.18973561485738,7.17413922121037,0,6.89706411985449,6.61806587328914,83.8034443616809,78.0395005940794,85.6666733806423,5.25502694575378,0,4.78098113616071,6.84182426772678,3.56053915929738,3.62802333397897,7.74125338529583,18.0460397084979,243.720867565703,92.3056087632211,8.7848034415322,6.88088615385995,8.48011395557952,7.45173672073531,0,7.88057004795078,6.67779690883214,9.66699025866856,7.54180476172208,0,7.28609075590518,6.24446003880644,9.14887981385109,10.5580563352749,9.87541008300372,10.5746594007265,5.99563245642581,0,8.74219623561634,6.09189167645845,5.65097391981543,0,0,8.33586976304323,0,12.813043098824,10.1806017397233,11.2378296591912,6.30329080447471,0,7.67774909849154,8.09300791224999,9.87273701512913,9.09874361341254,9.66559985051265,0,0,9.79624284608642,8.51692677151452,9.68973129284727,9.2881408177701,8.67968597159085,9.81153380920869,0,0,8.48741245210567,10.0249800215083,8.39864018587752,10.9082231928714,7.28707509851524,8.50390116426886,8.85451885571514,8.85853840901633,8.41716453195189,0,6.16425501011719,7.18718319172323,8.58455011566608,131.339032462507,10.1822041895249,10.2889289295494,13.9162309429405,36.9613438336343,28.7431572659681,0,6.06361227108236,5.82541142271099,5.90226252950944,0,0,4.77638106664512,14.141599879109,10.9595766927893,8.88371840963474,21.0894955714974,15.2443618513938,0,91.4509601168349,13.8213948983476,0,26.0686231052596,0,95.2793903447689,0,0,20.3313544380911,10.0684826978432,9.55256889019353,141.097948879875,42.6011136356705,-22.7963327978547,51.483947082342,15.1790838308435,-2.6802203047113,0,36.2010396582528,-100.413128183894,-10.0536366930983,-23.0720061413484,-15.9301329202537,5.4470347300005,-7.97223760340278,31.7424282163151,-19.5896696160124,6.54337834753063,17.9227580901858,-6.00841082073493,15.6913201946905,20.4030497870502,6.97830166320941,10.1495815560786,44.7378461990215,31.3638028601837,68.5442713194775,28.4827443113846,47.330950289449,31.7051245543473,70.8888343000241,85.8666625490965,74.6806428329075,63.0488132737844,112.010010117099,59.7885435159488,56.2649128584231,48.5164143194717,61.9077030271666,18.9096145625684,21.7834378533804,170.935383037195,103.112208173361,34.7470190444158,146.971254905692,152.088038978542,106.96949343479,125.948130184019,92.8384813785469,88.3528601418511,94.5606444418918,72.9896794674275,116.279033177798,120.522808788126,38.2792378623048,30.9531721083704,134.483023295196,101.173763983413,126.04473578811,125.042662696549,105.25119256848,108.850231261356,115.869298813354,115.395546284699,105.251388614398,107.34420719137,107.883294707695,115.445778563837,125.110298653368,116.653299292515,92.654132833768,89.9445595615632,101.408155207037,93.4788314392605,98.212580246436,102.454161772522,101.159321197882,105.358880240812,104.709385276088,103.96342515168,105.889914607939,108.035889653241,0,0,54.3508296403051,13.9031372439969,-24.900068960041,-26.3108217948954,13.1361359945638,2.50450548929108,14.4629358049784,19.4271021383746,0,44.4717976671827,0,5.20057549199555,20.0596238523622,15.0772729233875,11.3962708510985,12.8588010409218,10.1194154332587,14.2656418503348,5.92584829946132,14.1842052306456,8.16744691759367,9.33947633918953,9.58321850669503,28.6620639137656,-47.4407276994361,14.2723842545554,0,0,12.0451695738525,30.3597734190922,17.8264068147839,-63.5896434099536,21.8299278314659,20.756788580352,106.668573138586,13.4878121672351,29.5723237780573,129.665483440606,8.02431884615155,11.2162722703372,14.7883597634004,115.066679529816,26.9467119480777,41.9248595330943,51.0975818519446,164.377961686596,134.10674062144,153.045600528898,120.842326485958,40.61857183078,108.207453474533,45.8276998357909,22.845046169114,23.8045144114072,134.477612896959,154.720682046238,134.017561767787,28.3974343873206,20.4667895576531,189.61826023246,46.7938369152687,29.485945777387,29.2110460368571,76.162672204498,21.8060672029143,15.1277615604305,17.5469112910289,15.8558220028572,16.2948153716054,11.9840468420962,15.8066069140309,13.6904218171154,17.1188081603813,11.4249683211273,13.6586946856256,12.076433557203,9.69127059560491,10.8704732920562,0,9.98424319222292,10.7908339656801,11.4972593635096,94.2063089885648,73.5886882846595,78.6246986078481,63.1839363119276,75.3409310319263,19.5566802036879,90.217307446771,89.6726229443657,90.0564474229211,86.8009101594509,88.1137850770544,92.606936583925,90.4636848876483,89.8468053636079,91.038553341236,91.2423711822908,96.7767985204763,94.5048336535349,92.1778664909247,18.3237480936208,14.2296942711575,9.95249139609979,21.4545456973844,0,12.1075380173491,10.3822758140292,9.36641022433509,10.9285962282263,0,7.84651836493111,13.0251206300104,8.20196501443733,18.0572332066525,26.0156612208368,4.49563045423869,94.7184614952992,67.9452370095437,100.884020516435,12.6772282346,11.0179421617858,13.4965311375473,9.27492695064145,12.5737014265628,9.76422586589901,8.33846205572721,10.3805911840409,9.52070883793816,11.7464586584683,0,15.4036705974616,13.2522703639078,12.09857406948,0,22.3829344356361,0,13.9143739894734,15.94775232621,16.6317519065031,0,13.5715814198304,14.3319685524717,8.78796237780496,0,19.2361981066451,17.9395715130876,16.199996763739,23.6211933307168,18.9511246388911,19.7346987524141,6.19150577602764,7.17758410484892,0,6.89893052693372,6.62006512388783,84.3026400287221,78.6365387216832,86.2222972934171,5.25735056040779,0,4.78303077476511,6.8474543629845,3.56263536013896,3.62779613208017,7.74391151941488,18.057540572775,243.980648544266,91.8633668924337,8.78917309787369,6.88411921963833,8.48353172783149,7.4551426175233,0,7.88484531543978,6.67959199542715,9.67127731057544,7.54450903665688,0,7.2889990848229,6.24593492179598,9.15207610531067,10.5609264936484,9.87656549447246,10.5796668721619,5.99681450852445,0,8.74633934105541,6.09362791983051,5.65211976093772,0,0,8.34170134042909,0,12.8185056499621,10.1848050689455,11.2428609975368,6.30462056555532,0,7.68111707645768,8.09569222526456,9.88016040637146,9.10088504535569,9.67428873418248,0,0,9.80529889026199,8.51931738469147,9.69561737598843,9.29431720496863,8.68305001275048,9.82484238365382,0,0,8.49406677049143,10.0310180874909,8.40831567628814,10.9210047046173,7.28795578201974,8.51706254725538,8.85960426810232,8.86379889358105,8.4213971230688,0,6.1689328192966,7.19745290343737,8.58625224837583,131.518131778756,10.1884315074583,10.294818477128,13.9227890431208,36.9857213531493,28.7627789148993,0,6.06994514941358,5.82883243751406,5.9058458882781,0,0,5.53379283230484,14.8574176024827,11.6822992738972,9.61305335440245,21.7939873680817,15.960490522798,0,91.9804463983857,15.0424101379428,0,26.0993093400488,0,95.8391632874884,0,0,24.7344659427634,10.0742284129444,9.55860906425045,140.968742393742,44.530820963794,-23.7326820107826,51.4966719197348,16.3171412379533,-4.83503190899747,0,36.2183690092639,-100.469525388071,-20.737763438558,-27.7249526817243,-25.8416261181977,6.4518061904916,-6.7582385553094,26.5314866881518,-17.0692907931308,6.98264995052062,18.382336455129,-5.34144549324081,13.0647842588227,19.5596950017567,6.98752508259939,8.51425876754113,47.4463363575855,34.3036270659044,71.2975569238913,30.2565702814779,51.7816002965246,42.0473493352998,72.574362720244,76.9644456765308,76.6332763066284,62.4168961140606,115.24164186486,62.5355576188893,58.2270356404041,50.6226344703095,64.0177739542854,20.0275805658555,23.2190374117165,168.111704142344,104.020198083086,36.6072970484812,148.314037177508,143.593407480346,107.082654109607,125.334846897935,94.8974940509896,89.9512663693619,95.3267990405347,75.4758181828022,117.435995467918,119.900081220199,40.4061602052945,32.655605570818,132.040141319653,101.080163143575,124.444587508885,123.647247687108,104.938035185186,108.512598807261,114.843028455409,114.745659276221,105.461662263966,106.345702745264,107.311157391975,113.854322707454,114.183914746842,113.389484593328,94.0795685063807,91.9384735799306,101.181168619775,94.007559628114,98.438065850529,102.471509239,101.359658212967,105.130916529609,104.329600424442,103.578203865184,105.405499141298,107.232884647464,0,0,54.3751327134191,13.9118068817857,-24.9105204169039,-26.3189509724605,13.1400120514979,2.50713500796063,14.4702797124186,19.4443863575471,0,44.501137279071,0,5.20483084708079,20.0750986611024,15.0874061414652,11.4033903792886,12.8673753501427,10.1239421009977,14.2755642651291,5.92871583716292,14.1937539500143,8.17051926368857,9.34401072018183,9.58891512174379,28.6922688484263,-47.4827983103033,14.2817839787537,0,0,12.0531486870559,30.3884075461066,17.8412788716869,-63.6547980179597,21.8490874255022,20.7761969989575,106.792363546294,13.4937363614403,24.2869161490054,129.879550171464,8.0286904738413,11.2232700017986,13.9501708680414,106.217409151086,26.9625975901247,41.9482757341697,51.1140282693441,164.486883871278,126.151687011315,137.638443565015,120.940458716685,40.6258692901738,108.311921297417,45.8904702176173,22.8665274285178,23.8244119948751,132.734748929152,138.056661048616,132.104363313304,28.4272621246568,20.4834161962829,189.760732479976,46.8228680665965,29.4984038998025,29.2257951326157,64.1942550567393,21.8237496321135,15.1393683809223,17.5620697253847,15.8684044447256,16.3086538898683,11.9929229228191,15.8183528819564,13.7006975444552,17.1330805082442,11.4331234336426,13.6687158874319,12.0857525373866,9.69890359832407,10.8778585876786,0,9.99044184852481,10.7978939562795,11.5053159016387,92.6917225059987,72.227189405414,85.2751092542528,67.9576421443357,78.6336562880574,19.6427865006427,90.6089825382525,88.3556825825786,90.792762330268,88.3408622724025,88.4787585366054,93.4543157333513,90.5304906420179,90.3032990488582,91.5503320619135,91.8015776357683,97.0829394528516,95.0162042023809,92.7975651867932,18.3407461526209,14.2408210257683,9.95836078601639,21.4572443064911,0,12.1161348008602,10.3889694680935,9.37378444334723,10.9359268134575,0,7.85010912405886,13.0340620934851,8.20635634618089,18.0607593925111,26.0258627228965,4.49785773510567,90.5844281390468,66.0868775622925,91.7833647819575,12.6862172817998,11.0253430787578,13.5066439668971,9.28065644218283,12.5829908762076,9.7703252784434,8.34362781528667,10.3878576864983,9.52713941788462,11.7537073686168,0,15.4140244876613,13.2611662541875,12.1053060613107,0,22.3883419793277,0,13.9206698942449,15.9547638353778,16.6378301202848,0,13.5783412662495,14.3433338651649,8.79260427031082,0,19.248398560889,17.9523656231875,16.2076807202658,23.6407705933271,18.9649186677025,19.751435468138,6.19367086754441,7.18179281302687,0,6.90117045242998,6.62250870363385,85.4812486478526,80.1595366519652,87.5570391103996,5.26035847782446,0,4.78566602376807,6.85403463443241,3.56556204248271,3.62734757689409,7.74712307614139,18.0720435039041,244.305290860632,92.410560734858,8.79435445394494,6.88789561443425,8.48751693419863,7.45914322704215,0,7.88928175823776,6.68185363153081,9.67638535061514,7.54765410526631,0,7.29252678220376,6.24759720671687,9.15561457062427,10.5641814693921,9.87791474697324,10.5856435783989,5.99824737495162,0,8.75088863389837,6.09536701437667,5.65325003675463,0,0,8.34723944860888,0,12.8246774058885,10.190037668657,11.2489183236324,6.30622434295685,0,7.68456683546678,8.09835149579902,9.88730872079369,9.10299051534259,9.68353167211546,0,0,9.81306756786954,8.52192531078216,9.70021723679341,9.30150350937741,8.68673031121718,9.83546899004093,0,0,8.50079500286994,10.0361564182311,8.41637198258218,10.9323331733172,7.28910860018398,8.52769229597683,8.86583475789149,8.86986460677431,8.42645415557003,0,6.17369878656873,7.20500159468333,8.58830670790928,131.739979912133,10.1957830496934,10.3018173206677,13.9307157812763,37.0144915861811,28.7867147263355,0,6.07580995389468,5.8321569728748,5.90984516340415,0,0,6.56809426185192,16.0983279259704,12.8492709417511,10.7311945442698,23.223501812718,17.2355493341344],"Archive805_field21":[0,0,0,0,348.645447875977,0,0,0,0,4.39573703023762,128.933616440405,139.120084851613,10.9855926961484,0,0,188.811743030667,0.221549064923802,6.80001367628364,0,290.904799026469,221.759994027494,2722.74743489193,0,3329.96839712236,0,1.45672076567913,4932.9182409891,7.05408369776737,2.04867578336013,1.87308003855277,0,0.0816302306983723,23.6000549573381,754.876187405111,7941.40279369259,0.101893307464383,2.09940021742688,7.18790192947515,0.167940910285958,0.483873861491623,7.63405930556356,0,13513.048358956,0.244142710689565,32.0734885724704,0.203584411696469,0.527882021031366,0,0.432487373932989,0.40623928049662,0.675968468660274,0,9968.06915090418,0.907141697875686,0.381391469791477,46.7099939826338,9268.18427371668,563.862908300219,31.9464099528795,2.20948611268615,1.2649643640522,0.529678288610891,0.727205244780022,9.47938811602096,0.361568751883341,0.37335566505596,0,1.82732318555331,0,5.41078700724129,0.996562509404682,0,0.326662155549002,0.404491068684926,0.248992766826904,0.474589454075801,0.0282274492879965,0.6291224344723,0.993483773449209,1.14027926163894,3.66569366482639,0,0.421817930453815,0.185032679477546,0,0.447489336265309,0,0.321157161291494,0.341361520279902,0,0.392316281712028,0.306593812959714,0.567202160708822,0,0,428.813148614898,312.93646852451,453.166969892745,324.321052188671,282.601115979416,251.335363058177,211.289935369911,318.210381994953,0,479.672487267134,0,173.518799856074,349.743456395489,256.321252784067,167.836212462778,197.716977506389,152.636740104001,217.478144871157,131.858025535691,226.641955160946,122.821197282948,142.506813093965,144.023484555917,432.992710786556,441.669112154759,214.459587099106,0,0,172.864430277222,411.301051874882,268.683596539252,650.325714940006,341.800267477458,283.882645343874,996.229599955913,1428.13744892445,6946.03975408952,2420.23526413562,116.303786022673,165.538721497269,3999.77943121721,5883.3240328182,460.848476383593,474.208491835896,468.524456888954,553.038365972712,5083.13704398082,11566.0865339394,616.339163650415,449.350305158384,608.048785671066,551.392071664906,368.693951852404,312.692238060603,9.60624043773236,6737.01097499129,23.2501408665959,365.179929744473,274.259102177103,494.812530228971,325.821743256274,381.590461148835,282.611357663862,1988.97889017431,285.885263682385,204.511478290081,241.718062709301,224.106037706288,220.93681624965,162.03592609194,208.307833604578,186.675408580837,227.27428597574,155.676497599927,181.827576438063,165.35376479014,133.169966609712,148.058955786928,0,132.670714253344,144.291459630287,152.178740799202,17.3697647006433,7.03891064012187,0.20023637296155,5381.1566961111,0.503704180505178,211.564570274398,0,0.687784244833798,0.234979965736549,0.216000523906877,0.521542174069476,0.242428900866352,0,0.412862699116057,0,0.406914933154718,0,0.379370675748035,0.409806778212225,263.574419423494,208.788494813662,128.775548968196,208.058504892174,0,169.098126505414,137.579749683179,124.688955878816,143.678176307985,0,106.881688641957,170.490909420605,114.113430376536,238.782142253902,257.870538802866,202.902751053219,4500.54568848163,1888.29804600225,0,181.137698313823,156.568058581813,193.188922361879,129.990400328244,176.80711651142,138.98548092685,118.332889334811,146.861881437048,131.439872067033,151.096129037813,0,194.894464715579,174.090505554976,151.779531379363,0,186.751728083472,0,155.862676234447,162.051070638757,181.553170789995,0,168.154021250781,201.111532888941,124.802453514214,0,218.696752784992,221.928941582686,183.475378976061,295.041900331044,236.38928881472,251.922823245699,92.1142631321308,105.564835043322,0,99.6234163906175,92.2254440527312,0,0.357240083513364,0.359073550828897,119.328731086282,0,84.6798782744111,93.2903820498331,101.629695828979,84.5791984405391,105.518136089736,264.29224419043,1171.19730747656,0,116.779272197053,90.9547505294099,107.843717571808,102.239150272869,0,90.0834624153572,85.1362048540362,122.679072595322,94.1659875355786,0,102.88416451438,75.7405382125704,107.999119423091,115.762023588759,113.908918160209,138.619145135173,74.6282887497385,0,81.6345906607037,74.5934112923151,72.2150184537594,0,0,70.5527945883665,0,117.483431679726,141.110951109445,141.11127523923,85.4047127094144,0,68.0930018713735,106.296379421842,81.2174357960305,108.413202302244,102.225227504697,0,0,110.656262247408,115.847195538129,104.865489466996,125.142808081029,121.267228780414,110.670513079208,0,0,113.247929799189,114.118260283222,103.342436754916,94.4321408686934,97.5144542811582,118.107012518359,121.060869176761,122.833326993646,113.732541079769,0,101.495070138917,110.400680219865,113.094275999685,643.11734056006,139.816581863311,143.581113137684,178.34034097635,349.725825009988,356.864083830623,0,92.8920258637519,89.9459070899584,82.1443767444218,0,0,0.0953566967035821,0.468924043992502,0,0.505617727310246,0.390959222131236,0,0,0,0,0,348.973532812816,0,0,0,0,8.03225511507946,128.997944453252,139.189605189403,15.3213988264804,0,0,189.51000202948,0.212237512007783,11.3312453382607,0,291.034177756175,222.055975452267,2726.79058778862,0,3336.13430620678,0,1.97139094206324,4940.34506733351,10.83110469527,3.07443999749099,2.92546204981377,0,0.10353313696574,35.6639455591223,755.412660661923,7953.09431378416,0.383542771405925,3.39410614688404,11.5010514106976,0.0732216140073558,0.678786494438905,13.112712488737,0,13524.5130805308,0.257390671130508,49.3339424714508,3.09360848831668,0.680080632688277,0,0.463044427043013,0.42457693428794,1.33056984261293,0,9984.84659715102,1.63069190263677,0.380045458616899,74.0781221719431,9277.68890244303,565.875209394519,50.7745010030579,3.18690120715711,1.74687168740391,0.608762975172938,1.4659642206733,14.7890249912712,0.232338339351447,0.456834640520208,0,1.09914435894044,0,8.28046556988886,1.74943899544667,0,0.36452925553526,0.839520678733534,0.17696894908199,0.629789355094149,0.216400234582013,0.81380272211028,1.76883349230299,0.55438806609665,5.95455427549325,0,0.620931992319721,0.0940463626093046,0,0.442345737052539,0,0.280259766228609,0.302182918250234,0,0.423159374148821,0.229932455944187,0.765305593385748,0,0,429.493755458806,313.079957378188,453.340308777022,324.408086857821,282.672986032413,251.426400900701,211.370291234168,318.441500096272,0,479.868470518959,0,173.59839127023,349.968255469333,256.439074141561,167.914878216318,197.814250766618,152.68901692993,217.595006832679,131.903423834182,226.756295407957,122.856762798675,142.558798419889,144.089187002237,433.385130740873,443.044095408309,214.558994365543,0,0,172.9547273495,411.504380153331,268.859552199606,650.965342859977,342.041494008124,284.097740391263,997.202842590393,1430.71192245081,6955.74205659092,2424.59681846211,116.352194790184,165.618516025163,4008.10815681183,5895.71169114336,461.073204655151,474.806764844435,468.674993026731,558.056399386181,5095.30576092081,11579.6048090857,616.79854003773,449.709628808164,608.481843717596,552.081702901421,368.966599110671,312.907452643722,15.4210256698179,6756.08773577973,36.9218829304028,365.497336401211,274.44298163875,495.454787649758,325.980349487222,381.721678302334,282.740413139191,1993.38948241478,286.076235318764,204.64092324019,241.887023917398,224.248958692255,221.091624401814,162.137551248459,208.438216291498,186.792697842212,227.43282163242,155.769413153203,181.940308934894,165.460315459579,133.259363106548,148.144680351935,0,132.74301915735,144.373063917838,152.269898570294,29.333071445137,12.41782382017,0.784659254573723,5396.71522193755,0.342100301034591,212.369664436142,0,2.04888240834815,0.171112175763588,0.28609234144754,0.938648766235374,0.198498701718712,0,0.349359375479821,0,0.428482252707484,0,0.386969753949363,0.420758507042766,263.767751889916,208.917823369646,128.841805046985,208.082569052404,0,169.195718345226,137.656958034767,124.771677481165,143.761395878434,0,106.930338456257,170.591207530304,114.169556240307,238.889228756817,257.963344250911,202.961213821227,4518.74172404879,1893.52902664618,0,181.239852309007,156.652258502149,193.305324524883,130.056531511897,176.914326193372,139.055544332069,118.392326457282,146.94620823989,131.515021413508,151.176809915483,0,195.006716602684,174.19059386601,151.853141178725,0,186.800815346506,0,155.926113548139,162.122235665708,181.60824777393,0,168.229207493173,201.241236154186,124.854909316069,0,218.814485931544,222.062515019331,183.551506266258,295.242913010479,236.536100019781,252.102667766578,92.1398256945023,105.613674227731,0,99.649137003409,92.2508909225212,0,0.330797052249959,0.427498451232237,119.3772050326,0,84.7144412884617,93.3612099024496,101.68167094135,84.586169991964,105.552183097767,264.451805432987,1173.88768189618,0,116.839348100283,90.998428733592,107.889290751806,102.286169869988,0,90.1336639145167,85.1606899287136,122.73587601352,94.2016402850002,0,102.926924036192,75.758284582087,108.039339223001,115.79451708302,113.922443484399,138.687273404735,74.6455219985533,0,81.6763273161845,74.6169217551325,72.2319321441149,0,0,70.6078818963634,0,117.53752203044,141.173060427172,141.177198729301,85.4278492416982,0,68.1241098407747,106.338130109421,81.2832578062553,108.439404515418,102.3202639649,0,0,110.759881211778,115.882938984722,104.93048830756,125.225890869337,121.314495050514,110.825460825598,0,0,113.337196403383,114.185359223861,103.463788157294,94.5520489944996,97.5338358942664,118.288153850413,121.130779397057,122.905272390934,113.788211025441,0,101.569934134938,110.552772446042,113.114311545166,644.298467105189,139.901977051997,143.662402731026,178.429278726758,349.969983392519,357.115062079022,0,92.9854441154497,89.9959325123249,82.1931853408603,0,0,0.341307036300945,0.496352971285916,0,0.556405281868324,0.406090928176928,0,0,0,0,0,349.422543998223,0,0,0,0,18.9638943781714,129.075152612646,139.273892429649,28.3091796603945,0,0,193.266245450882,0.184562676048992,24.9379854486966,0,291.385519107272,223.524500547575,2731.6712228034,0,3342.92214697096,0,3.51526523270246,4950.14260244963,22.1629178063336,6.15351790247099,6.0866479997289,0,0.664748355710624,71.8819350142424,756.290359331608,7970.36912909103,1.23022252764417,7.28568301671,24.4544751214228,0.211680130752894,1.26605856103571,29.5791578022123,0,13546.1662218013,0.297155179110534,101.161387911636,11.7705362194937,1.13696290098462,0,0.554880729493434,0.479777370212508,3.29703902272186,0,10012.6761061674,3.80353186795902,0.376024835300823,156.356388819485,9291.80541861925,575.595865878925,107.367448889206,6.124127498499,3.19452865709189,0.846125983578501,3.68473027439272,30.7426394221713,0.162988319020553,0.707821573897272,0,1.08244169238771,0,16.8978028058721,4.01023104664635,0,0.477845865274077,2.14580415096118,0.0380127337082826,1.09702769662358,0.952992436272707,1.36854337034748,4.09815609962242,5.68514277459322,12.8353303139058,0,1.22128747071601,0.185890384795004,0,0.42596492192231,0,0.157322818404876,0.184600315661479,0,0.516316509066127,0.000493641835625727,1.36074652347562,0,0,433.884340759506,313.274785500914,453.592544832379,324.79372007428,282.796126407157,251.544663421887,211.469964400337,318.757278370326,0,480.28286655607,0,173.699141818223,350.28202333726,256.586988731702,168.012003608697,197.937710324313,152.754182425163,217.740144547451,131.957136625366,226.898310164989,122.899655154583,142.623585518996,144.169584132618,433.919922725237,450.705898907296,214.683781686228,0,0,173.064759727239,411.824486254082,269.078014180789,651.946999057618,342.347759616824,284.367900561575,999.641515758962,1438.11106392521,6969.7643937126,2439.56115635799,116.410838545457,165.716251125629,4019.05191033499,5912.63380183214,461.353600687441,477.533700853234,469.241587105541,591.394209226058,5111.59986961991,11601.4600560322,617.483209473543,451.803077826465,609.277615353538,553.271199544159,369.3118177913,313.175820501941,32.8819921836626,6780.79314493863,77.9840072907758,365.92330293632,274.670509929684,498.405473368561,326.177527293373,381.919920197938,282.900762867788,1998.74558221586,286.313454975551,204.798495675455,242.095174259234,224.42445291265,221.281877684796,162.259394724464,208.597998754022,186.934559592228,227.627827615481,155.880170393903,182.076714853114,165.588289017867,133.364861010932,148.245795114126,0,132.827661746509,144.469174730951,152.37937371633,65.2929862642413,28.5765087913027,2.54420204667136,5414.81433219141,2.90186585071037,218.045560684129,0,6.14958329721812,0.0218866142489269,0.499296663550244,2.19707528369646,0.0659387862071037,0,0.15780169329453,0,0.493592368389485,0,0.410095661045988,0.453811863121225,264.010390399111,209.077405182457,128.921147608354,208.156228761662,0,169.313544592395,137.74817536235,124.871748875883,143.8613716494,0,106.981003806887,170.712653038921,114.232770879295,239.320458455838,258.091462818161,203.206306206999,4535.76355415114,1899.14341241682,0,181.36438331228,156.754302007235,193.447405564557,130.134625578741,177.043697700014,139.139326080171,118.463264454456,147.047032173332,131.602769642994,151.274625598178,0,195.144871216183,174.31302918538,151.943225840429,0,186.863537839265,0,156.00539755426,162.211406692416,181.678510188243,0,168.322665576037,201.39968321522,124.917725903227,0,218.961321647674,222.230750741276,183.645681068523,295.49310403222,236.718521941016,252.327593284441,92.1692817665801,105.672696928916,0,99.6791790365604,92.2817853676924,0,0.251393264840766,0.632927548577632,119.434436178321,0,84.7548020816643,93.4423968410396,101.746009222439,84.5943068957101,105.594215016022,264.650073348619,1182.06885058839,0,116.912039469347,91.0509074716305,107.943817864066,102.342739457141,0,90.1863327872151,85.1910512371428,122.805403614509,94.2448840918575,0,102.979823572868,75.7787787615002,108.086143880456,115.832335002366,113.93789577822,138.770177626478,74.6669433162411,0,81.7254441000321,74.6427197611516,72.2495061055305,0,0,70.6654199746225,0,117.603236337614,141.251330901805,141.259012701216,85.4567567462929,0,68.1598947989399,106.385978552377,81.3556440786319,108.466054382198,102.426743727157,0,0,110.859659800392,115.922174066145,104.986297571129,125.323634887386,121.365758047494,110.971327693517,0,0,113.429936799197,114.243017302212,103.581927873977,94.6729822543691,97.5606890801089,118.459074017693,121.215293929587,122.988395916693,113.854161122501,0,101.653042546016,110.68654815974,113.138143658749,646.201884914148,140.003139438125,143.758716570635,178.538986572737,350.355873730899,357.430129451545,0,93.0877160049837,90.0492617436046,82.2494669608448,0,0,1.07945962013409,0.578614993093951,0,0.708844751447478,0.451580865364585,0],"Archive805_field22":[4496685.30066841,8995.77,8995.77,4511019.92195102,8959499.86462797,4510763.03148887,8995.77,4524411.2475209,8951781.96628639,8995.77,7872133.55690585,7871794.00859967,8995.77,8995.77,8995.77,6577504.85527808,8995.77,8995.77,4573561.88828309,5624221.58003821,5652231.35461556,6548966.69546327,5934106.2862173,6304755.00478932,8995.77,8995.77,7278055.16884221,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,7735049.54889797,8140006.22261594,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8783548.62409474,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8908351.14502692,8995.77,8995.77,8995.77,8668062.81564494,8941151.85068505,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,4464314.11775321,4505320.44596671,7209858.56249476,6954382.22793638,7327231.98527537,6777053.94984329,6223972.67202627,5502856.6792164,6501017.15821916,7985944.35871638,4505763.19678812,7942614.62336709,4500924.48523132,5663409.1279211,7567491.01078356,7225604.85774452,7208232.85361734,7032856.82623032,6436498.32629161,7923083.73047186,5522566.30025383,7530235.89181538,6598603.37491446,6738938.09970935,7374098.26555183,8689664.13170028,8292216.61109628,5779540.86779181,4503280.42729161,7831185.22187583,8059843.477285,8381221.97097506,8522453.76072066,8545721.95001836,8580019.94661189,8889211.85337706,8670910.32333901,8479590.53926865,8397825.02247647,8682485.28287612,7132587.2921653,7633847.2825672,7896048.12056857,8738561.77295327,8691195.15505463,8889805.79956126,8965343.68623426,8595404.33556383,8685261.57525715,8465923.49985618,8716469.46761509,8259817.44952254,8949241.20853677,8858405.57535137,8864140.47041979,8833793.6013384,8995.77,8147507.59047523,8995.77,8924501.44299577,8961723.35498029,8199223.7761964,7408348.59322198,7879101.4615282,7776551.12149698,7711761.83185869,8978253.80873082,8964747.89418775,8955455.97881475,8762592.07876159,8982541.51102995,8963809.36505817,8714489.86214748,8989487.04633292,8897772.05176811,8914694.52048655,8867632.27314431,8988970.5567459,8994584.41926863,8994350.451548,7839574.46652619,8798868.19010015,8927294.45711314,8719566.19196532,8995.77,8995.77,8995.77,7318449.03333047,8995.77,6781902.24115694,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8745296.78463963,8409073.77532077,8399703.1507753,6116586.59035539,4601556.08589125,8618250.18919218,8650574.62846731,8591823.27396486,8468579.492397,8672829.25393927,8059021.99703134,8550424.28910103,8830543.70290842,6737832.64009847,7131650.10417187,5763892.66092153,6245061.07245497,6615750.24819952,5717153.4599366,8416325.02929634,8246337.33443939,8681277.79993997,8440191.64941805,8859864.81362909,8251304.72737576,7797184.49062452,8619490.70769499,8839394.87774246,8173645.87710651,4505579.39636284,8121088.61436973,8268363.47934413,7568174.14301987,4453560.5827625,5300390.45793358,4501625.33792908,5749290.83970005,5296545.34669664,6174451.85681534,4499028.09293995,6979252.63131404,8862319.09754479,7611514.83911526,6448144.32835233,7284293.78190575,7857267.0360582,6729233.38856865,8429145.60370221,8275332.16074305,8644220.54630862,6854565.23868465,7221732.04454425,4506094.78534548,7782098.65827894,6135111.74467758,8995.77,8995.77,8995.77,5639521.89599512,4504943.2301638,5315690.02169884,5670101.79503803,5495165.53676015,5975737.90483196,6302681.09334881,8182478.28954445,8811396.57196474,8995.77,7969448.00170006,6951914.6057523,7290229.19548115,7573323.91811729,6439632.36815317,7427538.70443405,6013979.04969878,7212370.93623944,6683721.31712531,4499839.9649087,6633458.39108554,5954722.16805475,5655702.93442818,6530242.04991039,5774382.35489603,7702509.423295,6525801.51570596,4500699.44442225,5212725.60956937,5196332.48709606,5348574.34755529,4504382.04625568,5581509.770353,5368322.28622167,4497290.80881776,5237876.14111108,6323752.28064799,6868525.24352493,7025658.27000977,7213794.41304816,6081737.34194092,5244187.63256836,6966684.0310506,8511386.41834471,8664613.22725585,8876524.28624646,8325099.06931831,8866860.47575369,8994819.26302577,8130053.83815003,8936354.01010513,8969450.31081613,8961924.08328053,8677247.33438018,8866002.32494959,8982315.73408814,8821937.24763418,8413881.20294632,7768757.07314298,7845855.78171407,8912177.5612867,8848322.81478346,8634253.3225082,8237876.13099675,8324855.18512337,8126859.91223482,8532140.14018739,8510698.23990884,5481917.70591262,8959888.42539758,8810973.11357991,7582028.13238729,8194956.0566812,8670263.21064021,7206586.32482719,7558759.34933113,6950159.79594748,6385860.53479444,4500986.86545799,5544294.93551498,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,3372513.97550131,6746.8275,6746.8275,3383264.94146326,6719624.89847097,3383072.27361665,6746.8275,3393308.43564068,6713836.47471479,6746.8275,5904100.16767939,5903845.50644975,6746.8275,6746.8275,6746.8275,4933128.64145856,6746.8275,6746.8275,3430171.41621231,4218166.18502866,4239173.51596167,4911725.02159745,4450579.71466298,4728566.25359199,6746.8275,6746.8275,5458541.37663165,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,5801287.16167348,6105004.66696195,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6611290.61415649,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6681263.35877019,6746.8275,6746.8275,6746.8275,6501047.1117337,6705863.88801379,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,3348235.58831491,3378990.33447503,5407393.92187107,5215786.67095228,5495423.98895653,5082790.46238247,4667979.50401971,4127142.5094123,4875762.86866437,5989458.26903729,3379322.39759109,5956960.96752532,3375693.36392349,4247556.84594082,5675618.25808767,5419203.64330839,5406174.640213,5274642.61967274,4827373.74471871,5942312.7978539,4141924.72519037,5647676.91886154,4948952.53118585,5054203.57478201,5530573.69916387,6517248.09877521,6219162.45832221,4334655.65084385,3377460.32046871,5873388.91640687,6044882.60796375,6285916.4782313,6391840.3205405,6409291.46251377,6435014.95995892,6666908.89003279,6503182.74250426,6359692.90445149,6298368.76685735,6511863.96215709,5349440.46912397,5725385.4619254,5922036.09042643,6553921.32971495,6518396.36629098,6667354.34967095,6724007.7646757,6446553.25167287,6513946.18144286,6349442.62489213,6537352.10071132,6194863.08714191,6711930.90640258,6643804.18151353,6648105.35281485,6625345.2010038,6746.8275,6110630.69285642,6746.8275,6693376.08224683,6721292.51623522,6149417.8321473,5556261.44491649,5909326.09614615,5832413.34112273,5783821.37389402,6733690.35654812,6723560.92064081,6716591.98411106,6571944.0590712,6736906.13327246,6722857.02379363,6535867.39661061,6742115.28474969,6673329.03882608,6686020.89036491,6650724.20485824,6741727.91755943,6745938.31445147,6745762.838661,5879680.84989464,6599151.14257511,6695470.84283486,6539674.64397399,6746.8275,6746.8275,6746.8275,5488836.77499785,6746.8275,5086426.68086771,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6558972.58847972,6306805.33149058,6299777.36308148,4587439.94276654,3451167.06441843,6463687.64189414,6487930.97135048,6443867.45547365,6351434.61929775,6504621.94045446,6044266.4977735,6412818.21682577,6622907.77718132,5053374.48007385,5348737.5781289,4322919.49569115,4683795.80434123,4961812.68614964,4287865.09495245,6312243.77197226,6184753.00082955,6510958.34995498,6330143.73706354,6644898.61022182,6188478.54553182,5847888.36796839,6464618.03077125,6629546.15830685,6130234.40782988,3379184.54727213,6090816.4607773,6201272.60950809,5676130.60726491,3340170.43707187,3975292.84345018,3376219.00344681,4311968.12977504,3972409.01002248,4630838.89261151,3374271.06970496,5234439.47348553,6646739.32315859,5708636.12933645,4836108.24626425,5463220.33642931,5892950.27704365,5046925.04142649,6321859.20277666,6206499.12055729,6483165.40973147,5140923.92901349,5416299.03340819,3379571.08900911,5836573.99370921,4601333.80850818,6746.8275,6746.8275,6746.8275,4229641.42199634,3378707.42262285,3986767.51627413,4252576.34627852,4121374.15257011,4481803.42862397,4727010.82001161,6136858.71715834,6608547.42897355,6746.8275,5977086.00127505,5213935.95431422,5467671.89661086,5679992.93858797,4829724.27611487,5570654.02832553,4510484.28727408,5409278.20217958,5012790.98784398,3374879.97368152,4975093.79331415,4466041.62604106,4241777.20082114,4897681.53743279,4330786.76617202,5776882.06747125,4894351.13677947,3375524.58331669,3909544.20717703,3897249.36532204,4011430.76066647,3378286.53469176,4186132.32776475,4026241.71466626,3372968.10661332,3928407.10583331,4742814.21048599,5151393.9326437,5269243.70250733,5410345.80978612,4561303.00645569,3933140.72442627,5225013.02328795,6383539.81375853,6498459.92044188,6657393.21468485,6243824.30198873,6650145.35681526,6746114.44726933,6097540.37861252,6702265.50757885,6727087.7331121,6721443.0624604,6507935.50078513,6649501.74371219,6736736.8005661,6616452.93572563,6310410.90220974,5826567.80485724,5884391.83628555,6684133.17096502,6636242.1110876,6475689.99188115,6178407.09824756,6243641.38884253,6095144.93417611,6399105.10514054,6383023.67993163,4111438.27943446,6719916.31904819,6608229.83518493,5686521.09929047,6146217.0425109,6502697.40798016,5404939.74362039,5669069.51199835,5212619.84696061,4789395.40109583,3375740.14909349,4158221.20163623,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,6746.8275,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94516.5843417508,0,0,0,0,0,0,0,0,0,0,0,0,0,5.11350322085491e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.27837580521373e-10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Archive805_field23":[499.801616151252,1,1,502.187226487707,993.81017020702,502.013740812874,1,503.750055514625,992.774404963433,1,875.137651062135,875.081102577122,1,1,1,734.288482617474,1,1,509.945624221233,628.135935735426,631.012326383143,719.110734320932,651.944181728818,692.68999832041,1,1,793.449181751301,1,1,1,1,1,1,858.028904152964,901.185794002537,1,1,1,1,1,1,1,970.184157541822,1,1,1,1,1,1,1,1,1,986.980603868759,1,1,1,973.890683785583,989.110339540192,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,495.933423523012,501.235816295797,801.846951377209,772.562030870134,812.791416602228,753.049761467343,691.047984381215,611.473822569224,722.488152655521,886.431269056777,501.303665151722,881.010468454129,500.485900524811,629.701956639177,840.17564387139,802.686111260173,801.219976755931,781.527422943523,715.423877398989,880.443198272411,614.053110307487,836.724796405842,733.642798360026,749.19481745592,819.762152489255,962.88066120782,918.576663171303,642.094166439708,500.897922643176,868.409051647031,895.862446021327,930.38650997169,946.627102709922,944.896794319557,952.643797907105,987.192968483798,949.7550315227,931.034743252918,929.131030083816,957.018328220167,793.028603910076,848.534645728483,874.850154219658,978.444867443026,964.389004678525,987.237304503544,995.503305556617,956.897799956188,967.12898498137,951.509977613909,968.218231945103,916.674722728772,991.537656291787,981.074275800834,983.717242957483,980.96422905221,1,927.881498866078,1,990.396070687658,995.592348312489,911.190520334293,825.436847126611,875.573563791061,863.513003021527,852.321878393279,997.425183745952,996.290325951561,994.963381522496,973.719665835695,998.045951110187,996.362104162295,968.429146926518,999.129498381075,988.605052210363,990.965863408718,985.586533761206,999.119984954619,999.832930079007,999.85668460321,869.767749292313,978.16505632041,992.421250522574,969.240433747119,1,1,1,806.804163065944,1,758.249031619245,1,1,1,1,1,1,1,1,1,1,1,1,1,971.370801645929,934.450909818877,933.801090431018,678.81622311777,517.166951626504,957.944292978829,961.66981177636,955.061684955184,941.376690043449,961.875375149904,896.020417768054,950.361252450161,981.853857530796,751.49357209365,791.866620074428,645.180059909605,653.941247573496,718.254831558622,629.332971698379,935.44480199156,916.660739149776,964.823872440909,938.342039837748,984.76339128782,917.293837353822,866.829350574053,958.163434369408,982.684398758939,908.566776223135,501.278499687245,902.501856595844,918.981220262564,841.253735114415,493.015547880526,589.079295447901,500.615125190276,639.001291890625,588.308335734872,686.721534177652,500.208216463171,775.675766749115,984.880354858999,846.248215392693,715.84361541778,809.477716383517,873.014158101542,747.85335894274,936.093474809835,919.336369584537,960.183485329681,762.264242579149,802.892157717083,501.361994337311,865.508631110899,682.183370135609,1,1,1,627.124024523803,501.17645885892,591.182435944713,630.232379011291,611.118692378424,664.715551031709,700.747095282562,908.949076449468,968.906217599959,1,885.999563848358,772.91782614031,810.534401057707,841.991642290868,714.451177130707,825.685706626255,668.672169220051,801.801292067061,743.170922958196,500.329640477698,737.496304251534,662.153519185824,628.833936081131,726.042852862078,642.093112896708,856.235717768593,725.766288163199,500.46802977551,579.692205241716,577.840533781295,594.848995263121,501.075249289467,619.476194284244,596.682486985627,499.907087695664,582.538662650428,702.811197088643,763.523664766675,781.3381544077,800.561548755013,675.864453581193,582.886490978929,774.00826963481,946.579008516687,962.828225075628,984.146346187602,923.400231564829,985.038646741629,1000.31969526329,903.495442758192,993.382363896793,997.367519459806,995.186174788043,962.591803134321,982.441735529881,998.284694971604,980.599091037574,934.477843915057,862.846565606514,872.662477749608,989.884700780973,983.68093023512,959.833018024824,915.917295196685,923.363719157455,902.963416951157,947.517962685923,946.647967167349,617.25071253366,996.011993434147,979.466893128249,842.619279041199,909.857580121212,962.525198014352,799.386873790199,839.503635740267,772.385716450284,709.843346614357,500.517591932469,615.895455092116,1,1,1,1,1,1,499.801616151252,1,1,502.187226487707,993.81017020702,502.013740812874,1,503.750055514625,992.774404963433,1,875.137651062135,875.081102577122,1,1,1,734.288482617474,1,1,509.945624221233,628.135935735426,631.012326383143,719.110734320932,651.944181728818,692.68999832041,1,1,793.449181751301,1,1,1,1,1,1,858.028904152964,901.185794002537,1,1,1,1,1,1,1,970.184157541821,1,1,1,1,1,1,1,1,1,986.980603868759,1,1,1,973.890683785583,989.110339540192,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,495.933423523012,501.235816295797,801.846951377208,772.562030870134,812.791416602228,753.049761467343,691.047984381215,611.473822569224,722.488152655521,886.431269056777,501.303665151722,881.010468454129,500.485900524811,629.701956639177,840.17564387139,802.686111260173,801.219976755931,781.527422943523,715.423877398989,880.443198272411,614.053110307488,836.724796405842,733.642798360026,749.19481745592,819.762152489255,962.88066120782,918.576663171303,642.094166439708,500.897922643176,868.409051647031,895.862446021327,930.386509971691,946.627102709922,944.896794319557,952.643797907105,987.192968483798,949.7550315227,931.034743252918,929.131030083816,957.018328220167,793.028603910076,848.534645728483,874.850154219659,978.444867443026,964.389004678525,987.237304503544,995.503305556617,956.897799956188,967.12898498137,951.509977613909,968.218231945103,916.674722728772,991.537656291787,981.074275800834,983.717242957483,980.96422905221,1,927.881498866078,1,990.396070687658,995.592348312489,911.190520334293,825.436847126611,875.573563791061,863.513003021527,852.321878393279,997.425183745952,996.290325951561,994.963381522496,973.719665835696,998.045951110187,996.362104162295,968.429146926518,999.129498381075,988.605052210363,990.965863408718,985.586533761206,999.119984954619,999.832930079007,999.85668460321,869.767749292313,978.16505632041,992.421250522573,969.240433747118,1,1,1,806.804163065944,1,758.249031619245,1,1,1,1,1,1,1,1,1,1,1,1,1,971.370801645929,934.450909818877,933.801090431018,678.816223117769,517.166951626504,957.944292978829,961.66981177636,955.061684955184,941.376690043449,961.875375149904,896.020417768054,950.361252450161,981.853857530796,751.49357209365,791.866620074429,645.180059909605,653.941247573497,718.254831558622,629.332971698379,935.44480199156,916.660739149775,964.823872440909,938.342039837748,984.763391287821,917.293837353822,866.829350574053,958.163434369408,982.684398758939,908.566776223135,501.278499687245,902.501856595844,918.981220262565,841.253735114415,493.015547880526,589.079295447901,500.615125190276,639.001291890625,588.308335734872,686.721534177652,500.208216463171,775.675766749116,984.880354858999,846.248215392693,715.84361541778,809.477716383517,873.014158101542,747.85335894274,936.093474809835,919.336369584537,960.183485329681,762.26424257915,802.892157717083,501.361994337311,865.508631110899,682.183370135609,1,1,1,627.124024523803,501.17645885892,591.182435944713,630.232379011291,611.118692378424,664.715551031709,700.747095282562,908.949076449469,968.906217599959,1,885.999563848358,772.91782614031,810.534401057707,841.991642290868,714.451177130707,825.685706626255,668.672169220051,801.801292067061,743.170922958196,500.329640477698,737.496304251534,662.153519185824,628.833936081131,726.042852862078,642.093112896709,856.235717768593,725.766288163199,500.46802977551,579.692205241715,577.840533781295,594.848995263121,501.075249289467,619.476194284244,596.682486985627,499.907087695664,582.538662650428,702.811197088643,763.523664766675,781.3381544077,800.561548755013,675.864453581193,582.886490978929,774.008269634809,946.579008516687,962.828225075628,984.146346187602,923.400231564829,985.038646741628,1000.31969526329,903.495442758192,993.382363896793,997.367519459807,995.186174788043,962.591803134321,982.441735529881,998.284694971604,980.599091037575,934.477843915057,862.846565606514,872.662477749608,989.884700780973,983.68093023512,959.833018024824,915.917295196685,923.363719157455,902.963416951157,947.517962685923,946.647967167349,617.25071253366,996.011993434147,979.466893128249,842.619279041199,909.857580121212,962.525198014352,799.386873790199,839.503635740267,772.385716450284,709.843346614357,500.517591932469,615.895455092116,1,1,1,1,1,1,499.801616151252,1,1,502.187226487707,993.81017020702,502.013740812874,1,503.750055514625,992.774404963433,1,875.137651062135,875.081102577122,1,1,1,734.288482617474,1,1,509.945624221233,628.135935735426,631.012326383143,719.110734320932,651.944181728818,692.68999832041,1,1,793.449181751301,1,1,1,1,1,1,858.028904152964,901.185794002537,1,1,1,1,1,1,1,970.184157541822,1,1,1,1,1,1,1,1,1,986.980603868759,1,1,1,973.890683785583,989.110339540192,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,495.933423523012,501.235816295797,801.846951377209,772.562030870134,812.791416602228,753.049761467343,691.047984381215,611.473822569224,722.488152655521,886.431269056777,501.303665151722,881.010468454129,500.485900524811,629.701956639177,840.17564387139,802.686111260173,801.219976755931,781.527422943523,715.423877398989,880.443198272411,614.053110307487,836.724796405842,733.642798360026,749.19481745592,819.762152489255,962.88066120782,918.576663171303,642.094166439708,500.897922643176,868.409051647031,895.862446021327,930.38650997169,946.627102709922,944.896794319557,952.643797907105,987.192968483798,949.7550315227,931.034743252918,929.131030083816,957.018328220167,793.028603910076,848.534645728483,874.850154219658,978.444867443026,964.389004678525,987.237304503544,995.503305556617,956.897799956188,967.12898498137,951.509977613909,968.218231945103,916.674722728772,991.537656291787,981.074275800834,983.717242957483,980.96422905221,1,927.881498866078,1,990.396070687658,995.592348312489,911.190520334293,825.436847126611,875.573563791061,863.513003021527,852.321878393279,997.425183745952,996.290325951561,994.963381522496,973.719665835695,998.045951110187,996.362104162295,968.429146926518,999.129498381075,988.605052210363,990.965863408718,985.586533761206,999.119984954619,999.832930079007,999.85668460321,869.767749292313,978.16505632041,992.421250522574,969.240433747119,1,1,1,806.804163065944,1,758.249031619245,1,1,1,1,1,1,1,1,1,1,1,1,1,971.370801645929,934.450909818877,933.801090431018,678.81622311777,517.166951626504,957.944292978829,961.66981177636,955.061684955184,941.376690043449,961.875375149904,896.020417768054,950.361252450161,981.853857530796,751.49357209365,791.866620074428,645.180059909605,653.941247573496,718.254831558622,629.332971698379,935.44480199156,916.660739149776,964.823872440909,938.342039837748,984.76339128782,917.293837353822,866.829350574053,958.163434369408,982.684398758939,908.566776223135,501.278499687245,902.501856595844,918.981220262564,841.253735114415,493.015547880526,589.079295447901,500.615125190276,639.001291890625,588.308335734872,686.721534177652,500.208216463171,775.675766749115,984.880354858999,846.248215392693,715.84361541778,809.477716383517,873.014158101542,747.85335894274,936.093474809835,919.336369584537,960.183485329681,762.264242579149,802.892157717083,501.361994337311,865.508631110899,682.183370135609,1,1,1,627.124024523803,501.17645885892,591.182435944713,630.232379011291,611.118692378424,664.715551031709,700.747095282562,908.949076449468,968.906217599959,1,885.999563848358,772.91782614031,810.534401057707,841.991642290868,714.451177130707,825.685706626255,668.672169220051,801.801292067061,743.170922958196,500.329640477698,737.496304251534,662.153519185824,628.833936081131,726.042852862078,642.093112896708,856.235717768593,725.766288163199,500.46802977551,579.692205241716,577.840533781295,594.848995263121,501.075249289467,619.476194284244,596.682486985627,499.907087695664,582.538662650428,702.811197088643,763.523664766675,781.3381544077,800.561548755013,675.864453581193,582.886490978929,774.00826963481,946.579008516687,962.828225075628,984.146346187602,923.400231564829,985.038646741629,1000.31969526329,903.495442758192,993.382363896793,997.367519459806,995.186174788043,962.591803134321,982.441735529881,998.284694971604,980.599091037574,934.477843915057,862.846565606514,872.662477749608,989.884700780973,983.68093023512,959.833018024824,915.917295196685,923.363719157455,902.963416951157,947.517962685923,946.647967167349,617.25071253366,996.011993434147,979.466893128249,842.619279041199,909.857580121212,962.525198014352,799.386873790199,839.503635740267,772.385716450284,709.843346614357,500.517591932469,615.895455092116,1,1,1,1,1,1],"Archive805_field24":[999.801616151252,0.103616813294233,0.103616813294233,912.548907817131,343.932359845339,396.955089786481,0.103616813294233,309.053085817656,947.955245628144,0.103616813294233,675.198745881294,630.323038060993,0.103616813294233,0.103616813294233,0.103616813294233,180.781639997728,0.103616813294233,0.103616813294233,163.983991767665,246.221529577068,173.465588846486,135.998487864431,230.35021789695,148.126196237077,0.103616813294233,0.103616813294233,102.593835190939,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,178.185920894584,101.149161426846,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.527390713033,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,114.653913668147,0.103616813294233,0.103616813294233,0.103616813294233,100.911449150803,198.534401083058,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,225.604122447743,609.068172112024,167.286875839715,282.784027282289,225.773146522863,228.224349195869,266.634872811905,306.219897137223,370.449298310342,334.000902038209,457.87135821135,251.659665442331,381.42126220614,425.383841466982,293.80914594534,355.425967058203,494.18625989288,423.164679231709,471.132906126484,440.52696044505,512.723519205373,406.21222230925,580.928037038886,524.993640053753,574.846106026684,291.797577091956,191.206122429697,364.979213851459,533.097947081103,926.180312644098,538.1833548957,295.771390796261,405.037100868662,235.872393157134,344.904718532704,406.380282596641,178.818099860438,137.668376944763,100.909071427545,119.590634962199,666.432835737319,528.313594651394,128.577505574499,136.586422349931,271.313632587518,223.340160038018,283.52964965203,176.116568997977,135.17779299015,98.5924316980199,214.113001086669,254.526758531797,256.382921366371,272.123223431085,340.06285419465,375.43702403353,0.103616813294233,152.0399733522,0.103616813294233,338.67197019195,421.545155867735,192.4306115917,263.600462432289,239.642607979022,354.977342440974,185.595727532302,407.875714204755,523.9512192483,460.925338425592,477.348147190738,493.042501718626,633.124036148927,502.745915152879,566.023551052052,477.703242430289,651.335785451353,568.801023256054,623.268748894207,750.767406713063,684.849924739087,972.358169624669,734.515806191233,693.822273869731,648.617833392139,0.103616813294233,0.103616813294233,0.103616813294233,136.794800641139,0.103616813294233,219.893510788005,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,420.210373453916,483.450009707977,719.28891781584,328.034300223863,260.843637843513,588.073007548066,701.576928169152,758.814379339358,661.582311513921,959.511005648438,814.741040240294,578.850563473384,840.917175371549,285.024740460312,331.060649321187,271.40929999911,166.823178948431,206.801348874002,297.377326537088,543.09930193856,599.464435980737,531.213166081133,718.388288245624,581.608112476846,662.538404672034,720.218564277857,660.047118022678,745.71408912418,612.045727261985,698.749174174049,494.76477987163,550.691011635763,564.578092365769,312.324565475834,352.025914684108,546.821136920481,463.523056592742,413.308677522108,402.975876901185,470.781896815077,478.000390330673,525.142736927157,670.267368953789,918.660086581026,407.047443268963,431.327885371573,426.519443323072,374.366069742273,433.970834948355,430.106919285118,795.878888825122,737.657606071301,760.459012910136,826.100294483585,708.13766329224,0.103616813294233,0.103616813294233,0.103616813294233,597.05235543426,684.641146053446,726.359847681067,831.534203681345,662.053050003393,772.84950917183,642.097497576439,394.002996799104,154.730287920558,0.103616813294233,744.855214984228,811.557646577155,730.389529630906,794.399015387225,984.496387296885,895.845873846138,732.661247678232,644.541078433577,754.805674727486,849.0649777211,686.370381024679,822.943752979558,641.915156458383,609.534354802378,553.108197863774,621.046591831735,897.503984279614,773.571035640613,732.280961928129,807.90850660337,871.943296817236,925.442917911168,991.119592023849,934.16418381043,621.745430804168,512.710705765994,503.380720510438,546.55142409013,866.490648475996,979.06686400428,942.771573207722,595.711737821864,931.79641687112,842.305912149596,896.657051918,952.742081769225,965.700756980274,899.060841015927,840.804430050471,898.912186135062,786.264789263667,807.883566686885,900.366187515241,937.817853965211,939.832681277682,871.964899336954,861.995481369475,915.334125219561,923.205914044941,866.267790845427,893.594565251287,804.800090392196,773.76138887873,786.768484892405,932.049875071433,875.389051072107,873.237599674174,821.655252456343,224.72225222818,716.034302028037,688.06325932824,494.446595875409,321.426984227982,337.174012131715,921.868239870356,877.907121555692,862.676068056031,832.855399489616,835.246941883593,914.67203133845,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,999.801616151252,0.103616813294233,0.103616813294233,912.548907817131,343.932359845339,396.955089786481,0.103616813294233,309.053085817656,947.955245628144,0.103616813294233,675.198745881294,630.323038060993,0.103616813294233,0.103616813294233,0.103616813294233,180.781639997728,0.103616813294233,0.103616813294233,163.983991767665,246.221529577068,173.465588846486,135.998487864431,230.35021789695,148.126196237077,0.103616813294233,0.103616813294233,102.593835190939,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,178.185920894584,101.149161426846,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.527390713033,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,114.653913668147,0.103616813294233,0.103616813294233,0.103616813294233,100.911449150803,198.534401083058,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,225.604122447743,609.068172112024,167.286875839715,282.784027282289,225.773146522862,228.224349195869,266.634872811905,306.219897137223,370.449298310342,334.000902038209,457.87135821135,251.659665442331,381.42126220614,425.383841466982,293.80914594534,355.425967058203,494.18625989288,423.164679231709,471.132906126484,440.52696044505,512.723519205373,406.21222230925,580.928037038886,524.993640053753,574.846106026684,291.797577091956,191.206122429697,364.979213851459,533.097947081103,926.180312644098,538.1833548957,295.771390796261,405.037100868662,235.872393157134,344.904718532704,406.380282596642,178.818099860438,137.668376944763,100.909071427545,119.590634962199,666.432835737319,528.313594651394,128.577505574499,136.586422349931,271.313632587518,223.340160038018,283.52964965203,176.116568997977,135.17779299015,98.5924316980199,214.113001086669,254.526758531797,256.382921366371,272.123223431085,340.06285419465,375.43702403353,0.103616813294233,152.0399733522,0.103616813294233,338.67197019195,421.545155867735,192.4306115917,263.600462432289,239.642607979022,354.977342440974,185.595727532303,407.875714204755,523.9512192483,460.925338425592,477.348147190738,493.042501718627,633.124036148927,502.745915152879,566.023551052052,477.703242430289,651.335785451353,568.801023256054,623.268748894207,750.767406713063,684.849924739087,972.358169624669,734.515806191233,693.822273869731,648.617833392139,0.103616813294233,0.103616813294233,0.103616813294233,136.794800641139,0.103616813294233,219.893510788005,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,420.210373453916,483.450009707977,719.28891781584,328.034300223863,260.843637843513,588.073007548066,701.576928169152,758.814379339358,661.582311513921,959.511005648438,814.741040240294,578.850563473384,840.917175371549,285.024740460312,331.060649321187,271.40929999911,166.823178948431,206.801348874002,297.377326537088,543.09930193856,599.464435980737,531.213166081133,718.388288245624,581.608112476846,662.538404672034,720.218564277857,660.047118022679,745.71408912418,612.045727261985,698.749174174048,494.764779871631,550.691011635763,564.578092365769,312.324565475834,352.025914684108,546.821136920481,463.523056592742,413.308677522108,402.975876901185,470.781896815077,478.000390330673,525.142736927157,670.267368953789,918.660086581025,407.047443268963,431.327885371573,426.519443323072,374.366069742274,433.970834948355,430.106919285118,795.878888825122,737.657606071301,760.459012910136,826.100294483585,708.13766329224,0.103616813294233,0.103616813294233,0.103616813294233,597.05235543426,684.641146053446,726.359847681067,831.534203681345,662.053050003393,772.84950917183,642.097497576439,394.002996799104,154.730287920558,0.103616813294233,744.855214984228,811.557646577155,730.389529630906,794.399015387225,984.496387296885,895.845873846138,732.661247678232,644.541078433577,754.805674727486,849.0649777211,686.370381024679,822.943752979558,641.915156458383,609.534354802378,553.108197863774,621.046591831735,897.503984279614,773.571035640613,732.280961928129,807.90850660337,871.943296817236,925.442917911168,991.119592023849,934.16418381043,621.745430804168,512.710705765994,503.380720510438,546.55142409013,866.490648475996,979.06686400428,942.771573207722,595.711737821864,931.79641687112,842.305912149597,896.657051917999,952.742081769225,965.700756980274,899.060841015927,840.804430050471,898.912186135061,786.264789263667,807.883566686885,900.366187515241,937.817853965211,939.832681277682,871.964899336954,861.995481369475,915.334125219561,923.205914044941,866.267790845427,893.594565251287,804.800090392196,773.76138887873,786.768484892405,932.049875071433,875.389051072107,873.237599674174,821.655252456343,224.72225222818,716.034302028036,688.063259328239,494.446595875409,321.426984227982,337.174012131715,921.868239870356,877.907121555692,862.676068056031,832.855399489616,835.246941883593,914.67203133845,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,999.801616151252,0.103616813294233,0.103616813294233,912.548907817131,343.932359845339,396.955089786481,0.103616813294233,309.053085817656,947.955245628144,0.103616813294233,675.198745881294,630.323038060993,0.103616813294233,0.103616813294233,0.103616813294233,180.781639997728,0.103616813294233,0.103616813294233,163.983991767665,246.221529577068,173.465588846486,135.998487864431,230.35021789695,148.126196237077,0.103616813294233,0.103616813294233,102.593835190939,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,178.185920894584,101.149161426846,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,100.527390713033,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,114.653913668147,0.103616813294233,0.103616813294233,0.103616813294233,100.911449150803,198.534401083058,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,225.604122447743,609.068172112024,167.286875839715,282.784027282289,225.773146522863,228.224349195869,266.634872811905,306.219897137223,370.449298310342,334.000902038209,457.87135821135,251.659665442331,381.42126220614,425.383841466982,293.80914594534,355.425967058203,494.18625989288,423.164679231709,471.132906126484,440.52696044505,512.723519205373,406.21222230925,580.928037038886,524.993640053753,574.846106026684,291.797577091956,191.206122429697,364.979213851459,533.097947081103,926.180312644098,538.1833548957,295.771390796261,405.037100868662,235.872393157134,344.904718532704,406.380282596641,178.818099860438,137.668376944763,100.909071427545,119.590634962199,666.432835737319,528.313594651394,128.577505574499,136.586422349931,271.313632587518,223.340160038018,283.52964965203,176.116568997977,135.17779299015,98.5924316980199,214.113001086669,254.526758531797,256.382921366371,272.123223431085,340.06285419465,375.43702403353,0.103616813294233,152.0399733522,0.103616813294233,338.67197019195,421.545155867735,192.4306115917,263.600462432289,239.642607979022,354.977342440974,185.595727532302,407.875714204755,523.9512192483,460.925338425592,477.348147190738,493.042501718626,633.124036148927,502.745915152879,566.023551052052,477.703242430289,651.335785451353,568.801023256054,623.268748894207,750.767406713063,684.849924739087,972.358169624669,734.515806191233,693.822273869731,648.617833392139,0.103616813294233,0.103616813294233,0.103616813294233,136.794800641139,0.103616813294233,219.893510788005,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,420.210373453916,483.450009707977,719.28891781584,328.034300223863,260.843637843513,588.073007548066,701.576928169152,758.814379339358,661.582311513921,959.511005648438,814.741040240294,578.850563473384,840.917175371549,285.024740460312,331.060649321187,271.40929999911,166.823178948431,206.801348874002,297.377326537088,543.09930193856,599.464435980737,531.213166081133,718.388288245624,581.608112476846,662.538404672034,720.218564277857,660.047118022678,745.71408912418,612.045727261985,698.749174174049,494.76477987163,550.691011635763,564.578092365769,312.324565475834,352.025914684108,546.821136920481,463.523056592742,413.308677522108,402.975876901185,470.781896815077,478.000390330673,525.142736927157,670.267368953789,918.660086581026,407.047443268963,431.327885371573,426.519443323072,374.366069742273,433.970834948355,430.106919285118,795.878888825122,737.657606071301,760.459012910136,826.100294483585,708.13766329224,0.103616813294233,0.103616813294233,0.103616813294233,597.05235543426,684.641146053446,726.359847681067,831.534203681345,662.053050003393,772.84950917183,642.097497576439,394.002996799104,154.730287920558,0.103616813294233,744.855214984228,811.557646577155,730.389529630906,794.399015387225,984.496387296885,895.845873846138,732.661247678232,644.541078433577,754.805674727486,849.0649777211,686.370381024679,822.943752979558,641.915156458383,609.534354802378,553.108197863774,621.046591831735,897.503984279614,773.571035640613,732.280961928129,807.90850660337,871.943296817236,925.442917911168,991.119592023849,934.16418381043,621.745430804168,512.710705765994,503.380720510438,546.55142409013,866.490648475996,979.06686400428,942.771573207722,595.711737821864,931.79641687112,842.305912149596,896.657051918,952.742081769225,965.700756980274,899.060841015927,840.804430050471,898.912186135062,786.264789263667,807.883566686885,900.366187515241,937.817853965211,939.832681277682,871.964899336954,861.995481369475,915.334125219561,923.205914044941,866.267790845427,893.594565251287,804.800090392196,773.76138887873,786.768484892405,932.049875071433,875.389051072107,873.237599674174,821.655252456343,224.72225222818,716.034302028037,688.06325932824,494.446595875409,321.426984227982,337.174012131715,921.868239870356,877.907121555692,862.676068056031,832.855399489616,835.246941883593,914.67203133845,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive805_field25":[-659540.388433385,328804.855082928,331706.633417481,-657247.721531833,-164480.703444611,-164039.856828184,330683.377525809,-163876.704605804,-659422.151691458,83764.0057304492,-414606.862538793,-412511.732859053,83554.5071534905,331518.621713316,86972.1464368298,-38682.0969598293,209089.113265853,85373.5510603132,-38860.4933751725,-101378.848108097,-36035.8928922023,23604.4568638684,24219.1550822238,51378.858988816,210144.394861129,128784.899603372,22539.5917636422,86704.8846653867,146801.950735595,118598.125126039,147898.160018936,71723.9575602581,45900.4342441676,-46295.8323894334,13354.2477660249,208230.100571741,150312.914204445,123215.597396845,212747.286924923,153626.841174081,92668.6814138576,330999.88521583,33298.711899387,227334.386893367,75409.906852887,88375.0830548024,203356.773424322,331221.22391269,275095.930221921,261580.202130678,169329.014803109,332432.379566253,15316.6981708009,177342.442241313,277728.817171421,61763.032956806,36370.5918636204,-48210.0949305688,59122.7629704955,148156.234227091,197859.297479901,257159.344779939,172312.553298744,123436.729053667,145876.621846536,237947.379176926,331844.122279499,97927.3148730282,332157.761064271,138004.428595327,138842.424843361,330791.695929081,231151.604881845,190968.153743097,183121.480535715,213739.974632272,209321.170954368,260227.157078388,185287.59436267,108097.993965873,156289.22853701,87268.1534164774,174504.90082854,178546.364303589,330898.461902847,258087.817968416,330753.404989652,280625.052029504,285549.502167902,330775.062937165,276400.705230608,290022.63268436,241561.600603556,-101464.256346516,-413919.287938808,-33050.6531746363,-136905.866977224,-89073.5968810151,-86552.2733200125,-130590.785473459,-162059.276383815,-208639.55841301,-172059.052571301,-288266.985210047,-106655.961539903,-225932.370319369,-259363.07463611,-141367.649286065,-193276.745055347,-306382.930874176,-250507.264524802,-290503.687444799,-259008.520455058,-330664.040564871,-232749.318929465,-382360.09538005,-334918.231451373,-372632.805941744,-132983.821156485,-53289.5899057139,-208325.662976316,-351435.616339329,-659648.83375104,-336697.6597753,-135078.17220128,-224455.738967599,-89924.1139471403,-174949.773958043,-218653.753064352,-62851.8772793151,-27616.215581208,11382.5290357439,-7923.69025633279,-447970.155038073,-332245.047811977,3727.68997110789,1059.84432840428,-96716.2957024083,-56350.587031207,-109348.461420202,-4787.81843257248,11265.1112794995,62316.300540874,-44619.6224067052,-74230.8070465937,-96651.3590496471,-113457.879352995,-166327.579737539,-183232.204071305,95001.3601758214,35705.8129515903,107308.000733745,-155716.758725181,-222389.979824466,-19548.4279830689,-64615.5824766981,-56038.327459636,-151484.76883877,7942.43743716359,-215616.726994357,-312674.150387687,-260272.160562635,-278406.729757149,-282013.735563798,-394992.343677286,-281988.47629008,-342218.307731534,-265520.244194473,-417389.723201861,-339057.553225866,-390139.578698095,-495716.177294013,-440227.635175173,-658929.080284233,-476669.387455673,-444131.322533286,-400993.420552139,63812.0283718711,69867.7002418656,117882.026918948,51316.200504219,128561.465365266,-13577.8852580018,210956.82976804,121150.264228782,222235.169246841,183348.861881955,172392.644738305,237009.246958711,149474.790850543,209944.119886989,274799.189922876,271068.873630408,332205.655174978,292173.548551418,272275.258523287,-232188.542360939,-287760.582295097,-456614.069545136,-120909.400842027,-37902.8468237081,-372736.066116236,-443450.241566002,-491260.643203453,-407885.648889837,-659771.250381814,-530327.873812821,-342509.936852034,-560371.292240136,-75040.8583843817,-128490.792108105,-55316.3081533859,58343.9497675972,18308.8442095624,24465.4688395232,-337178.189645061,-385556.38967766,-324294.623196612,-481106.458177838,-362844.507264405,-437514.469044977,-490116.879259991,-429954.983874743,-497763.724789316,-364996.093332173,-413733.581353498,-267785.600779587,-315530.819052592,-320786.45295332,-101962.268599038,-132005.535080892,-288873.835908844,-226491.682148616,-183901.911564918,-177614.789524454,-225745.530840959,-245264.589670198,-315367.778488277,-448496.43111308,-659552.248459937,-189768.936581277,-213803.318153808,-201407.262712348,-174350.389263935,-221149.20883489,-221453.967728106,-556404.187171667,-508045.425924717,-537391.710506514,-573742.139239854,-489326.611898026,330737.757387226,283255.560654925,243345.099570919,-398700.156899682,-475877.821641785,-509082.361349631,-594449.18971797,-453629.999699748,-541797.433243536,-433692.231697054,-218053.22075603,-30811.6357486756,332304.367535669,-472308.175665569,-520312.637513928,-454570.760283487,-510989.953678636,-659885.025059481,-592924.954509923,-449586.498992707,-383725.473973683,-471329.831626823,-538750.973985628,-414617.197844985,-523560.968071727,-373446.310453,-350414.539707628,-301283.667176827,-367608.204925394,-586746.676464984,-476442.44760026,-444582.15218765,-507320.960096107,-561157.753936558,-601404.148450083,-658959.232952478,-614774.306968807,-351857.369650978,-265296.915726734,-261340.457155002,-301885.577505402,-564885.781088148,-658808.919175252,-624569.790847186,-331435.648036766,-622395.070835664,-556765.34632788,-607534.733505703,-659080.509036545,-658995.118508991,-614607.429494998,-565947.681396804,-603161.02924943,-518906.238935228,-543924.728679161,-620605.344026678,-659175.476134694,-658338.777851792,-598683.634852867,-595902.054981932,-620758.071081915,-622023.807079571,-569025.858581939,-620374.780645907,-546436.093546011,-524027.055096495,-540256.006399558,-659385.223269463,-615400.217163667,-612519.30959718,-564071.773308507,-1445.85470725958,-470626.647012897,-451364.068446451,-262746.681468497,-128175.103112834,-147785.533583091,-659043.153073947,-624360.164569222,-614117.343206853,-593069.859123348,-603517.548849968,-659170.310272219,192615.566659134,271838.53007944,273496.765086431,235784.567510856,271732.83368155,332492.809966085,-659540.388433385,328804.855082928,331706.633417481,-657247.721531833,-164480.703444611,-164039.856828184,330683.377525809,-163876.704605804,-659422.151691458,83764.0057304492,-414606.862538793,-412511.732859053,83554.5071534905,331518.621713316,86972.1464368298,-38682.0969598293,209089.113265853,85373.5510603132,-38860.4933751725,-101378.848108097,-36035.8928922023,23604.4568638684,24219.1550822238,51378.858988816,210144.394861129,128784.899603372,22539.5917636422,86704.8846653867,146801.950735595,118598.125126039,147898.160018936,71723.9575602581,45900.4342441676,-46295.8323894334,13354.2477660249,208230.100571741,150312.914204445,123215.597396845,212747.286924923,153626.841174081,92668.6814138576,330999.88521583,33298.711899387,227334.386893367,75409.906852887,88375.0830548024,203356.773424322,331221.22391269,275095.930221921,261580.202130678,169329.014803109,332432.379566253,15316.6981708009,177342.442241313,277728.817171421,61763.032956806,36370.5918636204,-48210.0949305688,59122.7629704955,148156.234227091,197859.297479901,257159.344779939,172312.553298744,123436.729053667,145876.621846536,237947.379176926,331844.122279499,97927.3148730282,332157.761064271,138004.428595327,138842.424843361,330791.695929081,231151.604881845,190968.153743097,183121.480535715,213739.974632272,209321.170954368,260227.157078388,185287.59436267,108097.993965873,156289.22853701,87268.1534164774,174504.90082854,178546.364303589,330898.461902847,258087.817968416,330753.404989652,280625.052029504,285549.502167902,330775.062937165,276400.705230608,290022.63268436,241561.600603556,-101464.256346516,-413919.287938808,-33050.6531746363,-136905.866977224,-89073.5968810151,-86552.2733200126,-130590.785473459,-162059.276383815,-208639.55841301,-172059.052571301,-288266.985210047,-106655.961539903,-225932.370319369,-259363.07463611,-141367.649286065,-193276.745055347,-306382.930874175,-250507.264524802,-290503.687444799,-259008.520455058,-330664.040564871,-232749.318929465,-382360.09538005,-334918.231451373,-372632.805941744,-132983.821156485,-53289.5899057139,-208325.662976316,-351435.616339329,-659648.83375104,-336697.6597753,-135078.17220128,-224455.738967599,-89924.1139471403,-174949.773958043,-218653.753064352,-62851.8772793151,-27616.215581208,11382.5290357439,-7923.69025633279,-447970.155038073,-332245.047811977,3727.68997110789,1059.84432840428,-96716.2957024083,-56350.587031207,-109348.461420202,-4787.81843257248,11265.1112794995,62316.300540874,-44619.6224067052,-74230.8070465936,-96651.3590496471,-113457.879352995,-166327.579737539,-183232.204071305,95001.3601758214,35705.8129515903,107308.000733745,-155716.758725181,-222389.979824466,-19548.4279830689,-64615.5824766981,-56038.327459636,-151484.76883877,7942.43743716359,-215616.726994357,-312674.150387687,-260272.160562635,-278406.729757149,-282013.735563798,-394992.343677286,-281988.47629008,-342218.307731534,-265520.244194473,-417389.723201861,-339057.553225866,-390139.578698095,-495716.177294013,-440227.635175173,-658929.080284233,-476669.387455673,-444131.322533286,-400993.420552139,63812.0283718711,69867.7002418656,117882.026918948,51316.2005042191,128561.465365266,-13577.8852580018,210956.82976804,121150.264228782,222235.169246841,183348.861881955,172392.644738305,237009.246958711,149474.790850543,209944.119886989,274799.189922876,271068.873630408,332205.655174978,292173.548551418,272275.258523287,-232188.542360939,-287760.582295097,-456614.069545136,-120909.400842027,-37902.8468237081,-372736.066116236,-443450.241566002,-491260.643203452,-407885.648889838,-659771.250381814,-530327.873812821,-342509.936852034,-560371.292240136,-75040.8583843817,-128490.792108105,-55316.3081533859,58343.9497675972,18308.8442095624,24465.4688395232,-337178.189645061,-385556.38967766,-324294.623196612,-481106.458177838,-362844.507264406,-437514.469044977,-490116.879259991,-429954.983874743,-497763.724789316,-364996.093332173,-413733.581353498,-267785.600779587,-315530.819052592,-320786.45295332,-101962.268599038,-132005.535080892,-288873.835908844,-226491.682148616,-183901.911564918,-177614.789524454,-225745.530840959,-245264.589670198,-315367.778488277,-448496.43111308,-659552.248459937,-189768.936581277,-213803.318153808,-201407.262712348,-174350.389263935,-221149.20883489,-221453.967728106,-556404.187171667,-508045.425924717,-537391.710506514,-573742.139239854,-489326.611898026,330737.757387226,283255.560654925,243345.099570919,-398700.156899682,-475877.821641786,-509082.361349631,-594449.18971797,-453629.999699748,-541797.433243536,-433692.231697054,-218053.22075603,-30811.6357486756,332304.367535669,-472308.175665569,-520312.637513928,-454570.760283487,-510989.953678636,-659885.025059481,-592924.954509923,-449586.498992707,-383725.473973683,-471329.831626823,-538750.973985628,-414617.197844985,-523560.968071727,-373446.310453,-350414.539707628,-301283.667176827,-367608.204925395,-586746.676464984,-476442.44760026,-444582.15218765,-507320.960096107,-561157.753936558,-601404.148450083,-658959.232952478,-614774.306968807,-351857.369650978,-265296.915726734,-261340.457155002,-301885.577505402,-564885.781088148,-658808.919175252,-624569.790847186,-331435.648036766,-622395.070835664,-556765.34632788,-607534.733505703,-659080.509036545,-658995.118508991,-614607.429494998,-565947.681396804,-603161.02924943,-518906.238935228,-543924.728679161,-620605.344026678,-659175.476134694,-658338.777851792,-598683.634852867,-595902.054981932,-620758.071081915,-622023.807079571,-569025.858581939,-620374.780645907,-546436.093546011,-524027.055096495,-540256.006399558,-659385.223269463,-615400.217163667,-612519.30959718,-564071.773308507,-1445.85470725958,-470626.647012897,-451364.068446451,-262746.681468498,-128175.103112834,-147785.533583091,-659043.153073947,-624360.164569222,-614117.343206853,-593069.859123348,-603517.548849968,-659170.310272219,192615.566659133,271838.53007944,273496.765086431,235784.567510856,271732.83368155,332492.809966085,-659540.388433385,328804.855082928,331706.633417481,-657247.721531833,-164480.703444611,-164039.856828184,330683.377525809,-163876.704605804,-659422.151691458,83764.0057304492,-414606.862538793,-412511.732859053,83554.5071534905,331518.621713316,86972.1464368298,-38682.0969598293,209089.113265853,85373.5510603132,-38860.4933751725,-101378.848108097,-36035.8928922023,23604.4568638684,24219.1550822238,51378.858988816,210144.394861129,128784.899603372,22539.5917636422,86704.8846653867,146801.950735595,118598.125126039,147898.160018936,71723.9575602581,45900.4342441676,-46295.8323894334,13354.2477660249,208230.100571741,150312.914204445,123215.597396845,212747.286924923,153626.841174081,92668.6814138576,330999.88521583,33298.711899387,227334.386893367,75409.906852887,88375.0830548024,203356.773424322,331221.22391269,275095.930221921,261580.202130678,169329.014803109,332432.379566253,15316.6981708009,177342.442241313,277728.817171421,61763.032956806,36370.5918636204,-48210.0949305688,59122.7629704955,148156.234227091,197859.297479901,257159.344779939,172312.553298744,123436.729053667,145876.621846536,237947.379176926,331844.122279499,97927.3148730282,332157.761064271,138004.428595327,138842.424843361,330791.695929081,231151.604881845,190968.153743097,183121.480535715,213739.974632272,209321.170954368,260227.157078388,185287.59436267,108097.993965873,156289.22853701,87268.1534164774,174504.90082854,178546.364303589,330898.461902847,258087.817968416,330753.404989652,280625.052029504,285549.502167902,330775.062937165,276400.705230608,290022.63268436,241561.600603556,-101464.256346516,-413919.287938808,-33050.6531746363,-136905.866977224,-89073.5968810151,-86552.2733200125,-130590.785473459,-162059.276383815,-208639.55841301,-172059.052571301,-288266.985210047,-106655.961539903,-225932.370319369,-259363.07463611,-141367.649286065,-193276.745055347,-306382.930874176,-250507.264524802,-290503.687444799,-259008.520455058,-330664.040564871,-232749.318929465,-382360.09538005,-334918.231451373,-372632.805941744,-132983.821156485,-53289.5899057139,-208325.662976316,-351435.616339329,-659648.83375104,-336697.6597753,-135078.17220128,-224455.738967599,-89924.1139471403,-174949.773958043,-218653.753064352,-62851.8772793151,-27616.215581208,11382.5290357439,-7923.69025633279,-447970.155038073,-332245.047811977,3727.68997110789,1059.84432840428,-96716.2957024083,-56350.587031207,-109348.461420202,-4787.81843257248,11265.1112794995,62316.300540874,-44619.6224067052,-74230.8070465937,-96651.3590496471,-113457.879352995,-166327.579737539,-183232.204071305,95001.3601758214,35705.8129515903,107308.000733745,-155716.758725181,-222389.979824466,-19548.4279830689,-64615.5824766981,-56038.327459636,-151484.76883877,7942.43743716359,-215616.726994357,-312674.150387687,-260272.160562635,-278406.729757149,-282013.735563798,-394992.343677286,-281988.47629008,-342218.307731534,-265520.244194473,-417389.723201861,-339057.553225866,-390139.578698095,-495716.177294013,-440227.635175173,-658929.080284233,-476669.387455673,-444131.322533286,-400993.420552139,63812.0283718711,69867.7002418656,117882.026918948,51316.200504219,128561.465365266,-13577.8852580018,210956.82976804,121150.264228782,222235.169246841,183348.861881955,172392.644738305,237009.246958711,149474.790850543,209944.119886989,274799.189922876,271068.873630408,332205.655174978,292173.548551418,272275.258523287,-232188.542360939,-287760.582295097,-456614.069545136,-120909.400842027,-37902.8468237081,-372736.066116236,-443450.241566002,-491260.643203453,-407885.648889837,-659771.250381814,-530327.873812821,-342509.936852034,-560371.292240136,-75040.8583843817,-128490.792108105,-55316.3081533859,58343.9497675972,18308.8442095624,24465.4688395232,-337178.189645061,-385556.38967766,-324294.623196612,-481106.458177838,-362844.507264405,-437514.469044977,-490116.879259991,-429954.983874743,-497763.724789316,-364996.093332173,-413733.581353498,-267785.600779587,-315530.819052592,-320786.45295332,-101962.268599038,-132005.535080892,-288873.835908844,-226491.682148616,-183901.911564918,-177614.789524454,-225745.530840959,-245264.589670198,-315367.778488277,-448496.43111308,-659552.248459937,-189768.936581277,-213803.318153808,-201407.262712348,-174350.389263935,-221149.20883489,-221453.967728106,-556404.187171667,-508045.425924717,-537391.710506514,-573742.139239854,-489326.611898026,330737.757387226,283255.560654925,243345.099570919,-398700.156899682,-475877.821641785,-509082.361349631,-594449.18971797,-453629.999699748,-541797.433243536,-433692.231697054,-218053.22075603,-30811.6357486756,332304.367535669,-472308.175665569,-520312.637513928,-454570.760283487,-510989.953678636,-659885.025059481,-592924.954509923,-449586.498992707,-383725.473973683,-471329.831626823,-538750.973985628,-414617.197844985,-523560.968071727,-373446.310453,-350414.539707628,-301283.667176827,-367608.204925394,-586746.676464984,-476442.44760026,-444582.15218765,-507320.960096107,-561157.753936558,-601404.148450083,-658959.232952478,-614774.306968807,-351857.369650978,-265296.915726734,-261340.457155002,-301885.577505402,-564885.781088148,-658808.919175252,-624569.790847186,-331435.648036766,-622395.070835664,-556765.34632788,-607534.733505703,-659080.509036545,-658995.118508991,-614607.429494998,-565947.681396804,-603161.02924943,-518906.238935228,-543924.728679161,-620605.344026678,-659175.476134694,-658338.777851792,-598683.634852867,-595902.054981932,-620758.071081915,-622023.807079571,-569025.858581939,-620374.780645907,-546436.093546011,-524027.055096495,-540256.006399558,-659385.223269463,-615400.217163667,-612519.30959718,-564071.773308507,-1445.85470725958,-470626.647012897,-451364.068446451,-262746.681468497,-128175.103112834,-147785.533583091,-659043.153073947,-624360.164569222,-614117.343206853,-593069.859123348,-603517.548849968,-659170.310272219,192615.566659134,271838.53007944,273496.765086431,235784.567510856,271732.83368155,332492.809966085],"Archive805_field26":[94182.0603767363,94185.6041821812,94187.1178757078,94188.486023436,94290.8180339635,94166.5914992809,94192.7819583646,94166.4230247168,94176.0216044775,94183.7401189265,94224.1074878482,94226.9631838251,94196.8319014298,94188.8586588992,94186.4802336456,94262.2126841701,94187.0525178826,94185.2756473317,94178.6905853707,94267.7229344427,94466.1862279511,94301.3970199482,94247.521826231,94286.2114791507,94186.7626379018,94186.0817481796,94275.0609797091,94185.3210228,94186.429071287,94186.9292697869,94186.420507815,94188.5094027745,94179.7477661476,94359.3943942088,94317.0234948245,94188.7747584834,94187.1253025096,94192.1606086292,94187.6955505594,94188.8373519894,94186.3618724625,94191.0256706844,94442.1593843752,94191.3945842886,94195.7127124937,94193.8952174987,94190.1361814349,94189.8836736956,94189.2557630436,94190.32246569,94187.073173635,94187.5250204903,94421.4992155791,94193.5981261337,94188.2680742394,94189.3013492977,94376.9885106697,94322.1728805737,94193.8758262351,94192.9018818764,94192.4954321317,94192.866843701,94191.5331413486,94194.1876591361,94195.4514678436,94188.4243186691,94188.0695700875,94196.9469431195,94190.0316895158,94197.5741414,94196.7949077425,94192.6477052248,94193.9912159045,94194.9659727109,94195.0255739398,94193.836012944,94191.7082509768,94192.9803207151,94194.3079238838,94193.6472427534,94193.8004478233,94167.158701468,94186.5737336068,94189.6593661536,94186.8779671579,94188.869684165,94193.051132631,94193.2024341648,94193.1755255594,94191.6364608191,94191.0291795926,94192.0637414098,94192.405817842,94177.5122392812,94177.4467352936,94238.7630736273,94283.3393146191,94316.6147842218,94275.2992847385,94291.9988249079,94275.3024195416,94244.0504933989,94282.2357769418,94174.7066825829,94327.7662138329,94168.3060212327,94242.1680634127,94289.651292714,94262.9401515131,94235.5520352464,94245.1405292955,94231.8444012071,94251.0437848975,94227.1059013275,94253.1955113287,94222.1954409038,94227.6894165077,94228.5304952786,94315.320805035,94252.0807896914,94255.0331110199,94176.1594045606,94178.5998049451,94237.2445225856,94301.3161354886,94266.3567297528,94357.9599890172,94288.8716238754,94271.1911954608,94393.5154007999,94383.3595435404,94362.8178709181,94569.2877934245,94219.889882412,94235.1211176038,94295.4498795439,94339.3435654904,94320.2655503663,94304.7869372306,94315.1881388009,94370.0005558217,94340.4034016996,94341.1751095681,94330.746498092,94319.217018393,94336.3948567209,94335.4953900007,94293.9371301616,94279.6190844377,94200.2916551986,94300.3734610121,94199.9754038854,94294.1060931121,94267.3698518171,94271.8295649388,94244.8966114258,94268.7305396923,94278.8069923176,94262.5794443473,94271.1780286836,94247.0557076713,94258.1513695053,94252.6189171902,94251.9384566604,94234.1227846728,94247.9058703583,94241.6138111013,94253.6928998613,94232.1908200297,94240.0582118166,94235.0129344019,94225.0105923335,94229.9730278689,94178.9423855414,94225.2423215235,94228.853919352,94231.044887336,94183.5745755254,94175.0225413288,94183.3192466088,94272.0136359755,94183.7329285521,94265.2968294703,94183.9927647617,94185.5516208555,94185.6811887071,94185.5568438831,94185.0922483084,94186.9757801921,94180.6410611303,94184.6551111569,94185.2500323659,94185.6512144382,94188.2945669076,94187.4152432886,94186.3789899631,94265.0883760619,94248.271284373,94224.0326496888,94268.3096356114,94130.714435035,94236.4081664903,94226.7273727877,94222.339849408,94228.4592788767,94176.9426307831,94217.8285630496,94236.7717994751,94220.6647416341,94247.0458031739,94271.168873829,94196.7387185678,94358.3216458875,94317.9214624001,94311.5436153149,94239.8983263427,94232.4774883372,94243.5043803514,94224.495995398,94238.609026897,94227.144656016,94220.6356209701,94229.4252902763,94224.7877071512,94230.7543714142,94178.187239593,94244.0071946334,94237.8377412908,94230.981586744,94201.7179904035,94250.0521638365,94178.2004611106,94236.7821692719,94237.2478631412,94234.4631345558,94174.472163717,94235.9707761882,94245.9578188866,94222.8753330868,94178.0010906331,94249.1951610057,94251.3847917407,94239.5345243536,94273.2923076272,94256.820240924,94261.2436477038,94213.5445154445,94216.7523339651,94178.6488267272,94216.4663921466,94213.0503831205,94192.0365102073,94191.6426742081,94192.2603016717,94224.2639064247,94178.818395584,94212.1343314008,94216.1119359455,94217.8604763643,94213.0913866566,94217.4598464725,94264.1978808074,94373.4529063686,94185.9583319963,94220.4023136641,94212.4452994919,94217.6443313755,94215.8285630093,94180.2692985764,94212.8336073953,94210.9274210502,94222.0247016625,94213.2868674963,94179.7702336374,94215.8489507076,94208.0446922855,94220.5407240611,94219.7206879179,94220.4402916542,94226.9591918405,94208.1550478496,94180.0258832794,94210.2230080637,94208.6521119191,94209.075976938,94180.2781594611,94180.5259884001,94207.1185427392,94178.1555141312,94219.9951063319,94227.8556698294,94227.4715374574,94211.8517740396,94178.5042128701,94205.9860807113,94217.9790623813,94209.3855451943,94219.2581544806,94215.9772038623,94178.5041464199,94178.6336329948,94219.4478371767,94221.9426273724,94218.3808394608,94222.6575007457,94223.0880135099,94218.8363837791,94175.9606023554,94180.2858016565,94220.4021964937,94221.3590525177,94216.8551613618,94213.6244506716,94216.765958413,94222.1622557035,94222.2857634661,94222.1973701888,94219.8020922719,94178.5734993222,94216.3038273971,94218.3802861444,94221.8752659508,94625.7870537365,94227.2610499552,94228.5603328007,94239.2764016326,94289.1796251855,94292.5183071817,94179.4606854,94212.8610608575,94213.0105719831,94210.1820092357,94181.5847107787,94181.5811115392,94186.6886799535,94187.1554178088,94187.0154279572,94186.913157297,94187.4936619468,94187.2203234583,94185.4457064836,94185.854942369,94187.7911547077,94184.4832651843,94171.5301810111,94187.7527615302,94193.4169185003,94188.0154155591,94186.1479826422,94185.8279207714,94180.2196652471,94179.8456136611,94196.5928437871,94189.8565475392,94186.0564508168,94225.0424956366,94187.8083773812,94186.7172679486,94187.507466626,94187.4394573504,94183.8095382802,94260.8967988767,94213.8263542256,94255.6834575371,94187.268585178,94186.3407428689,94248.6305119288,94185.3691011509,94187.1984674932,94187.5488494392,94186.6317218626,94187.7106298569,94182.4870578048,94175.3796374599,94277.0339185142,94190.0133255745,94188.4947204107,94193.663221244,94188.6767252836,94190.524023633,94189.3228038454,94191.9639856407,94370.0709568361,94192.4064334321,94197.4234142772,94194.4896273851,94191.3782581165,94190.8983474651,94190.3126044133,94191.3811486274,94187.903857934,94188.3257215376,94348.2285753188,94194.2755448882,94189.2444421298,94192.2666421052,94324.8949114108,94284.608034427,94195.8056225932,94193.8212569081,94193.3764934054,94193.5540361294,94192.7309252615,94194.8028491865,94195.8330532914,94189.4930092364,94188.9822940048,94197.3147928943,94190.233189545,94197.7202054842,94196.9927145527,94193.0159509773,94194.4135335868,94195.2603746046,94195.3913930739,94194.3836443592,94191.9421256137,94193.309618841,94194.560272299,94194.0527501448,94194.1011085783,94174.2609141264,94186.5649655027,94189.8416956983,94187.0215416244,94189.0107974175,94193.5371420103,94193.7447047808,94193.59851838,94191.9116958791,94191.2600933172,94192.3520257769,94192.6745973334,94186.0208107921,94186.0945582764,94226.7476898406,94174.0054801461,94169.535932287,94187.9196158656,94173.7506353721,94174.6532095103,94177.9384760104,94173.0952902135,94186.5122120697,94173.8250796711,94187.4123537649,94178.2525638324,94173.1165221064,94175.6312845373,94178.8263915235,94177.8094737182,94179.2761152322,94177.0251170634,94179.9827331394,94176.8391272987,94180.4584561522,94179.7955883794,94179.7122293844,94168.0726542268,94245.5668706959,94176.6429691044,94186.3048536586,94185.8874483066,94178.610688911,94174.9758904467,94175.1104509739,94167.9678043504,94172.658816228,94174.7531436824,94155.0578066154,94264.3186326966,94303.1061310292,94373.9604691132,94180.7314546337,94178.905065709,94251.295080796,94296.2943203096,94159.1602013712,94246.117399399,94186.4119058048,94311.8008440138,94291.3791967689,94301.4389074552,94195.7125378988,94221.6068575994,94168.0797496911,94180.306265772,94171.0442692621,94173.3305034302,94199.9169934722,94265.5169085862,94200.4140491275,94172.7104556582,94175.0833055216,94229.6907203375,94179.9068133244,94165.37810567,94175.5394490953,94228.1897696043,94174.929599075,94177.47429604,94176.006526525,94176.7004751963,94176.7804775808,94178.9690108778,94177.2940398959,94178.0752474045,94176.7289039813,94179.1915244386,94178.2592960174,94178.8377031465,94180.1061224757,94179.4747203299,94185.8403278465,94180.0992936035,94179.6157800908,94179.3394753348,94185.7604138531,94179.002349394,94183.6564611573,94243.5070622646,94182.8143791397,94193.8657141112,94184.5625454368,94185.0170076227,94185.7309108934,94185.3333999941,94184.9303948791,94187.0164809825,94182.3252950312,94184.952121241,94185.550928438,94185.8590608791,94188.4422044295,94187.5358714884,94186.503651067,94175.5556247389,94177.286134436,94180.2274903668,94176.2109161433,94189.1100554207,94178.7254016234,94179.8530409056,94180.4471460763,94179.6548233863,94186.0457019695,94180.9511507574,94178.6884562457,94180.5636470754,94192.8408223451,94173.9357831705,94191.0662959118,94289.5981875986,94256.0416025921,94204.9321008922,94178.2731948531,94179.1892324777,94177.8426614328,94180.1427575551,94178.4468012018,94179.8262004999,94180.6628075068,94179.5296105133,94180.1021670848,94179.398683941,94186.0029278868,94177.7875378837,94178.5555943851,94179.3969245913,94183.7845167776,94177.4467606487,94186.1290085127,94178.7613273468,94178.920359128,94179.3929210187,94186.6166789768,94178.8187952996,94177.5578326133,94180.3465510664,94185.9411312749,94177.1482744422,94176.8021000648,94178.6214064664,94173.5880950541,94176.5095274383,94175.6538374301,94181.4836585945,94181.1388760631,94185.9102463638,94181.0882643951,94181.5791704384,94192.8365240345,94192.5344454465,94193.0933942965,94180.2967652143,94185.9429240137,94181.7919808403,94181.4192388846,94181.0800010056,94181.547126842,94181.0328927328,94175.4586136928,94266.2215876545,94186.1589563,94180.6597974025,94181.6621184299,94181.0007826017,94181.2444525912,94185.6460999363,94181.6417976657,94181.8327992431,94180.4961482122,94181.5542594204,94185.8160777767,94181.2437825897,94182.1992764535,94180.7630182437,94180.7736502435,94180.7035107196,94179.8592677068,94182.1272258133,94185.8194668676,94182.0451206055,94182.2085244575,94182.1119518559,94185.6678221143,94185.6185963508,94182.5770847823,94186.0215514721,94180.922266356,94179.7616188185,94179.8695334418,94181.6804498564,94185.8740166206,94182.8494503653,94181.2135801521,94182.5237493833,94180.7557698445,94181.3380624578,94185.8355982098,94185.8361401,94181.411241169,94180.4174081921,94181.3257343217,94180.3715294084,94180.2993343912,94181.777510037,94186.1402153405,94185.8446765804,94180.7457933484,94180.6028809469,94181.9337020519,94182.0849200779,94181.0488175649,94181.2256151697,94180.3989826229,94180.4310685863,94180.6997836948,94185.8672000023,94181.5598603539,94181.6665337078,94180.4324668377,94152.0993303903,94179.8184908093,94179.6525027192,94178.4515175025,94174.3652490847,94173.8947734902,94185.7478843708,94182.3602515824,94181.9121909892,94182.0253385442,94185.5015027301,94185.5128860443,94187.231920671,94187.8523007311,94187.6513172292,94187.5143368736,94188.3092046808,94187.9309921863,94184.9999999999,94185.0953523889,94187.6562102915,94184.9999999999,94184.9999999999,94184.9999999999,94192.9450964641,94184.9999999999,94184.9999999999,94185.7465533045,94184.9999999999,94184.9999999999,94195.677494467,94189.7041864808,94185.7530326909,94184.9999999999,94187.6436172564,94186.4718338973,94184.9999999999,94184.9999999999,94184.9999999999,94159.6639559347,94161.0187691049,94155.5498195472,94187.1475549872,94186.3395165878,94175.3194379781,94185.6512471141,94187.0153966608,94187.0514602535,94186.5190673146,94186.4538999544,94185.1682058916,94184.9999999999,94175.0491533495,94189.9493074631,94188.4242504361,94193.0176013067,94188.5172030775,94190.7644616509,94191.1159924491,94191.716821679,94172.0159945908,94192.1827708005,94194.347884294,94195.0856320334,94191.2823218702,94190.7175391989,94190.1659616201,94191.2051846194,94187.6579943731,94188.1804995514,94172.4204883833,94193.9922489348,94189.1006384364,94196.4255837802,94177.5444017136,94184.9999999999,94198.9132977223,94193.6987449357,94193.1318141944,94193.1423012908,94192.485261004,94194.8199542247,94195.2365770881,94189.367534571,94188.8357222766,94196.4430149669,94189.3779442178,94196.6816781473,94196.2350589408,94192.294721376,94193.7674667868,94194.4557507442,94194.7297135111,94193.8937154118,94191.0511103877,94192.5403043715,94193.6123839395,94192.8643798591,94192.9593349471,94187.0283907428,94185.8374930723,94189.0567534772,94186.1340897872,94188.1353734116,94192.9326665129,94193.2003394235,94192.9341960064,94191.1033609425,94190.4124451388,94191.5483507674,94191.8256081733,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94174.9739353454,94184.9999999999,94184.9999999999,94184.9999999999,94166.7750635316,94182.2537130756,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94179.1606137582,94184.9912657384,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94199.3848122018,94178.2165312318,94198.4532035102,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94167.4998882165,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94187.736984713,94185.0578158318,94184.1203007685,94165.903427489,94181.352477747,94184.9999999999,94184.274800151,94181.5265733841,94184.6695647289,94184.1424485517,94183.1884036313,94186.0682922815,94183.9358677503,94184.1804365245,94184.8600045547,94185.0290997802,94187.5573893268,94186.6323000687,94185.584956174,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94120.3865391588,94142.0657575891,94143.0183240356,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94192.4897309419,94192.2528297928,94192.7848763484,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94185.330700223,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94184.9999999999,94187.1177768006,94187.7136947466,94187.5201784668,94187.3878123742,94188.1596364639,94187.7922421161],"Archive805_field27":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive806.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive806.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive806.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive806_field1":[0,8144.60333307794,4752.87997712564,0,7557.32797059183,0,7768.39699353361,54.0118079056396,0,5357.93375852795,3863.50901919295,2535.47657347281,8468.50755039375,5834.09601670389,3320.70403845806,2507.33146179338,4795.49935993489,3968.64710217993,323.926971009561,1256.85009095646,1424.0994069363,2924.32522186525,2181.63613495004,3015.82439224923,4437.81422524563,3962.52717617751,3907.71003881724,3611.97523407289,4439.6643303082,4813.08065228611,4006.60012851163,4353.04618455805,4727.16097928323,4474.91156390997,5733.24166399776,5971.07555823424,5536.09950296446,6817.15940554008,5320.79499733026,6207.71783581778,6162.35230229294,6838.43039626851,7231.29381368992,6947.92851556629,6781.34002514064,7613.32767581772,6488.61610417645,6325.47888301275,6057.11341392964,6528.6985851241,4923.36958072972,5053.77164981413,8392.55949046526,7782.42852867648,5549.07092394167,8165.15844348919,8739.22822643919,9299.02691692592,9481.85675383995,7370.35644901815,7342.08339910938,7676.96547997571,6886.50892577948,7929.53948519141,8415.04487842016,5695.85909471133,5401.46250198863,8858.99285196701,8503.43062450546,9100.69227734666,8828.62497715397,8368.26968256779,8312.04368272781,8659.65374391257,8456.4323033167,8032.02166414728,8751.64220909016,8489.98782686128,8843.32082142925,9359.52742730376,9049.10054447395,6804.33064155789,8614.19993404713,8798.54320871418,8298.14848759852,8512.92883030787,8125.74598714636,8008.34735454416,8276.7267577375,8502.04431313532,8563.61768176811,8517.01367358079,8631.55303377085,198.619673191156,-718.410243952109,3523.21058410898,2848.11982106199,3606.61630772166,2719.82591971582,1978.50591430359,1049.61018725424,1968.54613393142,4301.2384349918,-306.849808851662,4616.55285730669,-110.545553457732,883.876913456963,3730.44798882497,2970.46908542347,2414.39599530985,2457.16633126544,1582.76054528608,3647.71112922379,501.576220443284,3204.42669126385,1428.15774611006,1758.97512512824,2273.37522225897,6351.78192087772,5685.12346485094,1177.68169193057,-520.386493708924,0,3316.32784327223,5345.83223412684,4990.88694811958,6174.79474468715,5566.55808728351,6104.84778137623,7791.85225244372,6990.80273934941,6529.99258993085,8054.03833332307,1592.83743923783,2800.68640244393,4885.45794624545,9553.96910046356,9737.80649087846,9990.55242374112,8717.14600366638,11812.9132767658,10291.6231689876,10057.7936911593,10750.4720687853,10420.9796590636,8161.00155860746,7276.02182895657,6612.14166026297,7986.98843307892,9411.94347366547,10440.0843299372,9480.17051085053,8127.48789175829,7040.79637132009,11708.0277018891,9796.44699943661,10701.2045162475,8273.50098059238,9876.37501410849,6714.98243612263,5314.05697758713,5925.39967409575,5049.26671010453,6074.51304895388,4544.66915744438,6421.11498211059,5199.17272817828,6556.43895799705,3783.2939227256,5474.67959813456,4387.22350643717,2956.07244471905,3796.1993661356,0,3395.63925248219,3850.92918856341,4511.14076293689,9563.99844386633,8061.30565509922,8966.78686884332,9080.41449031066,8345.33335080347,9789.02932861795,7940.12307103195,7605.4455789035,8177.54508395677,8311.26769743592,7981.166244953,8382.45317079996,7566.24876361643,8007.04875701513,8100.12106966917,8152.48154162967,8418.24270466205,8363.82833711745,8253.26669725717,5457.43507367821,4227.52967153423,3569.07923220226,5451.35694284718,0,3805.55391521653,3843.73332509133,3104.78381406387,4311.87265190754,0,2299.09400678969,5394.56850713387,1973.4027270573,7927.72402309887,7787.51325546228,5170.25396831407,6770.73877065887,7474.78566441702,5004.6514716785,3825.72320118647,3177.73735135468,4412.76747353848,2418.88039251426,4372.50840151045,2691.18496378224,1814.94805595684,3185.41385619979,2601.62431896637,4807.43950916756,0,6355.45771634221,5666.11603093468,4940.20676051812,0,2751.78726157549,0,3069.05726806511,2266.73183878564,4582.56356682322,0,5252.99782270537,4904.37731227499,2022.45096348672,0,6749.79350436656,7080.46637215218,5463.37091895011,8336.05403814763,7314.1502664164,7431.45828858782,743.835974462474,1304.54218813866,-895.577690495546,953.492489570194,638.150574550554,7327.19121242182,7102.61445701951,7344.21719432233,405.583779771471,-852.318518910307,-136.542905914642,95.4327931570765,127.921838250163,358.11371516834,966.904813809733,4347.49863039523,8777.80775400105,8189.08559648671,3102.23069575676,1891.71591669025,2869.18608846739,2354.61004323569,0,1177.88296279226,1806.54738211185,3676.76875032702,2210.93676562188,0,2746.85716539306,1252.08223392029,1898.65387885543,3236.25843491108,2509.84737879239,4356.433234546,978.353951943659,0,975.332252321303,742.700104640487,662.715671751373,0,0,364.131908862567,0,1653.7562272899,3862.76554894835,4317.51682844188,1403.98649737631,0,480.156101121661,1357.58937903693,687.200846286959,2003.19870203615,1159.54198149789,0,0,1024.94077808764,1831.13462241743,1196.73000496674,2634.97127535523,2079.61563347303,873.807807235537,0,0,1194.39355297648,1152.27666603577,869.526006367018,818.304285914284,1624.80554466106,777.615739476267,1905.64636791925,2032.09767027704,1579.62740956091,0,612.667635451707,776.883329651771,1398.11211740114,4628.40988014579,3175.60757263712,3184.01545681606,5854.62945432705,9191.39800377316,8780.28795361318,0,422.958364385883,360.480543575963,336.361547825243,-819.616005706235,0,4441.43084131156,4791.43579135932,4672.30987475398,4594.50073512956,5053.85530780727,4833.4500794973],"Archive806_field2":[0,5327.19127991081,10139.9740021642,0,8014.53659692864,0,8532.46216859713,8590.47411958604,0,10228.0924467033,4319.75126994561,4924.27362947277,9053.12453979482,9789.55256882565,10437.3238394649,10761.8871481039,10147.5075119241,10399.6484785905,10689.8854198197,9673.52121688209,10741.1980224473,10581.9699262039,10570.7309920577,10502.8544059979,10219.091549795,10337.1240210245,10577.3223879791,10422.0923499769,10256.8113844449,10240.6353716204,10314.3212354944,10398.1511426852,10410.6819342177,10630.8716371055,10384.9498394271,9823.19965745818,10041.3438793837,9772.06372537441,10013.3988567103,9861.42431684082,10069.0092921078,9294.57494249282,10299.83624193,9345.20884568427,10050.9822891576,9626.38802682965,9630.34692542147,9574.31630734433,9716.19389708765,9515.74640198711,10149.6253071098,10056.1637836675,9924.81119943909,8949.98243856781,9907.91200978584,9530.4623431601,9276.87664728042,9358.70908033191,8309.28232156477,9388.79859756062,9193.43221299954,8728.70182257477,9542.28743129484,9167.57743472965,8554.36883956616,9879.9470746037,9947.24685531529,8525.1479949757,6512.82851772128,7571.75500835827,8093.59358662789,7554.80557893646,8072.87596372278,7748.47291061565,8197.5477553384,8526.69723777042,6728.05877275101,7457.08067759755,7221.17934086952,6437.0714040485,6754.86098423774,3620.23029681769,5781.41096570509,6293.15580462442,5658.55171545627,6178.2592229083,8065.31460319955,8305.49307136965,7865.66411266556,7027.8521370461,6754.22120068811,7138.14376102004,7063.49346642066,9618.99927194939,4625.68631145905,10873.4826102063,9154.02330530763,9918.84131462612,9953.71366509789,9257.27274310448,8686.7959734576,7996.24612076941,8538.7534365529,6619.26595042908,9573.58887777441,7592.16900879432,7192.63895344579,9051.77083833627,8248.98468468297,6518.16873197755,7381.47121299775,6703.75108568899,7269.80365962873,6049.40584661552,7647.26251694552,5293.05406008679,6055.49258413155,5523.61508349881,8892.15065747275,10383.3974887686,7964.17241201283,5638.12894384128,0,6125.92580928322,9001.08743319864,7715.42841729505,9677.03199069504,8381.2409402903,7629.89918747018,9770.6033719911,10670.8040973055,10405.3175888874,10848.7643631203,4246.04824572635,6162.01304631317,10497.3809132384,8778.66480622749,7776.53581955215,8638.74346651174,8425.33923860493,7917.35406945157,8234.92662241642,7576.61595300979,8136.74235507082,6881.54020957141,8984.96139882092,8998.57542305813,8320.03986136821,7338.59985823528,7871.81629403675,6642.87033358417,7119.11998609736,7851.26182365479,7240.08304511238,6853.85927287117,5293.72209265253,6128.64208229122,5984.70724506434,5416.13229173302,7510.35303416624,6451.43326722535,7058.03775120817,6926.11132569858,6680.64408370408,5378.39562500322,6300.9203198728,6033.22950929797,6685.89457601534,5113.73087908426,5908.75453896315,5474.5344391127,4005.08716962738,4832.57673459352,0,4257.91585503421,4761.52660472406,5121.57861474748,5852.57623246326,4274.33214010312,5752.60682977653,4930.17865742839,5066.34947245688,3544.9200516358,4967.36150147888,4350.06282215506,5302.37960594816,5351.66044064039,4911.87736672474,5709.74588127992,4443.75740556435,5043.6309462703,5241.00302369635,5326.92975126276,6039.50051820689,5804.52309867237,5519.99509480668,7531.72340861514,6825.83054535052,4271.33323151706,3586.20739883716,0,5686.38385661056,4573.76161990164,3907.48106821531,4850.41386731851,0,3030.61531129829,5586.63277570551,2807.72820143351,4365.5352278532,5139.41752209456,2905.15001374332,3360.66727119486,3263.79548063687,2259.15869888847,6145.19986277386,5420.77566869364,6337.62685726624,4002.01586811281,5847.85453180482,4660.69255517834,3697.26832512277,4847.26881813044,3862.30523004722,5040.9071755529,0,5760.31217742177,5538.18631432721,4797.87094998238,0,1999.44372455846,0,2658.37897656823,1856.47394827894,3553.9280150648,0,4516.15341480921,6435.15410009928,4322.16843030984,0,5167.85650665392,5786.56275374848,4363.53484149243,6743.551048003,6265.49392462871,6693.15315043855,2213.52741110768,3224.90327470755,2433.7087429002,2022.86736863729,3415.23669254577,8945.87525857527,9156.51910076051,9043.84489088411,4947.53310057309,3563.65349663327,3032.02274446908,1415.48119364046,4005.77369513817,2388.86706603544,4412.7308131252,7836.15864999313,10022.8150085426,5413.37953612526,3746.64423693552,2407.69343781784,3391.48271536581,3008.72433383652,0,1671.62256169036,2103.44127722582,3947.1047827372,2654.34683949219,0,3076.9583587777,1555.97288062544,2031.90437670516,3356.51867397397,2460.80080170544,4545.96932892047,1290.49601547092,0,1083.80120952768,872.387195307833,795.154116252096,0,0,435.902275549163,0,1564.18899850128,3496.76915365451,4089.87746700608,1882.48599948082,0,645.274906574284,1433.98468412869,961.354155716273,2777.80661987559,1729.36447690522,0,0,1569.51388992273,2710.24420058767,1749.63332561658,3564.08565026597,3103.49686756095,1369.05565114667,0,0,1919.41552368923,1900.4384979685,1332.89016766325,1193.42439065449,2238.58163572883,1306.52639824597,2984.95460982578,3291.93285212422,2862.28413564639,0,1240.20002596405,1433.26484828908,2438.06903054199,1676.26504611647,4383.41431827043,4607.22935258549,5183.65809193064,6620.44352671053,7325.45720985212,0,972.984948181033,1105.97631875719,1506.89511304084,1304.7901860705,0,10224.9233066559,10131.4559945019,10161.4177521804,10182.2478718713,10061.3473842013,10118.530252148],"Archive806_field3":[0,0,0,0,11015.7161781973,0,0,8590.64391502004,0,0,5795.42517642855,5538.69228541814,0,0,0,11050.1097753744,0,0,10694.7921425066,9754.82879832369,10835.1923876903,12038.0401795386,11837.924053393,12470.8610183608,0,0,12384.2633253781,0,0,0,0,0,0,11534.3081833905,13069.1896155587,0,0,0,0,0,0,0,14166.7853325277,0,0,0,0,0,0,0,0,0,14262.3141208151,0,0,0,14871.7590741082,13193.0791421866,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9621.04967081771,4681.14164821307,11430.0322350568,9586.8623224307,10554.1979428026,10318.6175799045,9466.33954034818,8749.97747595198,8234.99398332119,9560.90802826252,6626.374463287,10628.5541954187,7592.97376378229,7246.74364889279,9790.34205260894,8767.52159481747,6950.95904467132,7779.70331361158,6888.06283091194,8133.62414498079,6070.16390239837,8291.50013102359,5482.34036071963,6305.78971480116,5973.15314485043,10927.7388734167,11837.8871518682,8050.77489287676,5662.09326046608,0,6965.98861504273,10468.8823307704,9188.9492430481,11479.2438029668,10061.3999343183,9771.61849668376,12497.1057359965,12756.856314295,13381.3659730814,13511.5958228903,4534.98145672874,6768.62239364615,12496.3163030344,14371.2047816539,12461.9173728031,13207.5367276309,12123.323625756,14220.738924031,14711.3772169708,15719.7123783969,13482.5526460881,12488.0908352944,12138.017868577,11572.1585410812,10627.4870326969,10846.5216594735,0,14728.3888178828,0,11300.3704211082,10099.0898620875,13566.6244733362,11135.2533607012,12331.9111199922,10211.1477946893,13222.9344836363,10074.5417670108,8358.24100887886,9215.54437867095,8571.23750725296,9029.43598211102,7041.3888722098,8996.23890805881,7964.37413544194,9364.191267351,6361.09710737325,8055.15343764155,7015.57249413516,4977.85973433775,6145.31752826352,0,5446.11911011406,6123.87060794271,6825.0244314632,0,0,0,13270.3463476048,0,10411.1264217198,0,0,0,0,0,0,0,0,0,0,0,0,0,9301.09967086121,8028.945743841,5566.20284757926,6525.19547797632,0,6842.30969529596,5974.41053411154,4990.80062019453,6489.89679814278,0,3804.00610109026,7766.06947874841,3431.85896800586,9050.23237337286,9330.53991848347,5930.54994913796,8688.65225769574,9538.04974472805,0,7238.75951842111,6283.53590938221,7722.56634529361,4676.22854038558,7301.7965149975,5381.87064162476,4118.71697422603,5800.24796284515,4656.80693040708,6965.78924364252,0,8577.47277265088,7923.15458187054,6886.59629202655,0,3401.48619586283,0,4060.30679847265,2929.9434720832,5799.16314481995,0,6927.45464015754,8090.99036664748,4771.94382193204,0,8500.96778166782,9144.25024538628,6992.05678687953,10722.1862352759,9630.84670417292,10001.2434921987,2335.16499559016,3478.76866891908,2593.26004191293,2236.32294599066,3474.34566816691,0,0,0,4964.1295293012,3664.16062717562,3035.09569670108,1418.6946209666,4007.81572597371,2415.56024395593,4517.42162611295,8961.36857456218,13323.1651517823,0,4864.27572490064,3061.95636807096,4442.33990357332,3820.55108233438,0,2044.92793584237,2772.73847496524,5394.2807314125,3454.53304020974,0,4124.66932356076,1997.1884051688,2780.92106104549,4662.57292342641,3514.95013485329,6296.37575646042,1619.43089424344,0,1458.04597464957,1145.71500119797,1035.11454930241,0,0,567.981373709415,0,2276.31212322312,5210.40806464253,5947.10427510758,2348.38915494351,0,804.319331173139,1974.67997315755,1181.71350836421,3424.76490540066,2082.12369969647,0,0,1874.53392853991,3270.85273777878,2119.75929739578,4432.35604891789,3735.83912795319,1624.14699455511,0,0,2260.6927946917,2222.47789632457,1591.43698423844,1447.02580507561,2766.08763378597,1520.42673864768,3541.38985460285,3868.62286148961,3269.23434862188,0,1383.27789541047,1630.27477231047,2810.4978367741,4922.60525773325,5412.83701408129,5600.40326553087,7819.65454873243,11327.4917680009,11434.8493598184,0,1060.9399075305,1163.2410927871,1543.97926558673,1540.85944410116,0,0,0,0,0,0,0],"Archive806_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3013582.95,2305166.0625,2738087.49375,2698731,2856156.975,2265809.56875,2541305.025,2147740.0875,2592960.42304688,3348113.146875,2726198.55292969,2955009.41828613,3385501.02023202,2187096.58125,3322927.19560207,3615980.34601032,3799167.9452572,4112200.35158438,3898623.64085212,3733030.99065731,4485478.86421688,3414206.87010484,4122522.05040609,4173938.73326062,4430416.725,4643870.35100453,4555932.94761107,4466196.89475058,4891029.29891033,4252941.13561,4036851.7875,3876991.84515651,4238798.42725105,3246545.83818484,2856156.975,5141493.13292764,5121889.11919143,3459159.47365463,5135963.29785533,5399307.90594477,5533309.43806479,5912631.0221011,4810327.00871025,4824594.46451495,5128643.26449753,4519219.18791027,5128426.122899,5528219.9585469,3648235.25385438,3249721.9125,5677564.86512607,6791806.35,6194490.73662038,5861762.23566151,6004676.475,5713860.061753,6002564.18869234,5702880.19552416,5387134.81461557,6660747.03311464,6131420.08887104,6357274.06282467,6834570.83499271,6658841.00895551,8523492.075,7261479.66421003,6936703.83122667,7578936.225,7068369.25808199,5611111.5375,5462723.64768089,5806256.38569117,6398241.4125,6631957.14019963,6343041.55480422,6421801.78081992,2344522.55625,2541305.025,3442629.38163948,3404054.09623172,3585600.67398266,3256063.71058696,3056701.62576213,2761783.78964475,3215148.89037133,4062622.79637184,2462592.0375,3998703.43082607,2423235.54375,2880403.72271276,3753784.40364893,3581351.99528222,3637928.64986634,3508555.96128351,3238857.14784761,4057461.39554185,2869471.15669081,3782135.41724658,3369764.76005313,3408956.53971162,3772376.83514852,4764191.04596779,4232822.86190721,2900891.08930985,2501948.53125,4272990.75,4206109.19810528,4368249.82989597,4561827.39907642,4521888.89538821,4604751.60282763,5119423.43001803,5013229.91404861,4590705.77370609,4407115.22282038,4864886.22038275,3683950.82308812,3906295.55248381,3811514.46771222,5762764.94463899,6251437.84992443,5925736.29175443,5713699.38715185,6417820.38899745,6087621.08214827,6336266.86634408,6234901.09444153,6733249.54286626,5341878.14305374,5049544.82020172,5048132.82520177,6107490.66184474,6094784.50337788,6789466.7589842,6493891.69918067,5829351.35712559,5792930.14949529,6763766.95030373,7368622.95968463,7033899.54592751,7149495.32447672,7239225.36588139,5454060.4662377,5383948.07471914,5331478.48184639,4897527.09931274,5715369.83372733,5937370.13379795,6386438.17091159,5728092.71006071,6040312.00106006,5270548.83617863,6167553.8067024,5574001.84298875,5777267.49087734,5765618.30076324,7421510.25,6387815.5984402,6098321.86481251,6460940.81343323,7092727.75459329,7763532.30548483,7191610.1705803,7440985.69477849,7590226.01891741,7702926.78999512,8444779.0875,8074018.79972712,7798065.90292917,7590739.53700952,7926366.06891991,7430146.94227047,8484135.58125,8120774.74692543,8405422.59375,8014884.04805915,7185371.2875,7409593.76518569,7703591.57922561,4852212.8046968,4479097.35957484,6863145.39444849,8008235.58506312,8602205.0625,4752810.65204325,6581908.59755113,6680965.88768445,6764088.10431517,6634380.375,7202401.02819808,6632512.86492612,6394982.12930457,7741478.84470464,7522443.7791873,8168440.78860561,8175085.83906968,7949677.46027186,8562848.56875,4513697.75320387,4386931.311909,4805410.75689738,4623716.87638132,5114317.06656005,4422666.91475049,4110766.90316788,4789902.48874186,5153150.63105187,7004256.46511376,8838344.025,6982685.39944847,6891459.89148701,7404179.70891763,8641561.55625,8364008.57912602,8759631.0375,8245958.45951919,8396827.67508923,8038034.62131828,8720274.54375,7690449.48701012,5095678.90825055,3963657.65869581,3485860.875,7487499.39971643,7142298.23148485,7789354.89594386,6640587.82188574,6818891.84356161,6433059.61982831,3604855.74098089,3770161.01676209,2620018.0125,4150377.10885406,3224639.64888892,4823981.6625,4659007.8833875,4850843.36880368,2959378.37304627,2580661.51875,2898987.08602779,3096295.15789866,2935423.92554563,3187492.33231429,3264963.18725819,4235881.91166776,5231399.03320627,7972501.1625,7231701.20623081,7880141.13422346,7655807.59744669,7522220.65687807,8208640.125,7662007.11345972,8276860.75076804,7653924.33989551,7984955.59387517,8917057.0125,7972929.01945311,8349410.18246656,8378045.55048367,7982047.14389744,8284012.64693771,7349166.02691922,8135609.47392747,8877700.51875,8598584.70750672,8643977.20540123,8619698.70745586,8956413.50625,8583087.252096,8642467.60879502,8798987.53125,8475078.82292903,8019874.41228339,7783788.46568247,7872322.52887251,7815075.1875,8355000.64905269,8513960.5473371,7930731.53965616,6822349.15318231,6657428.36969315,6240815.4375,7027945.3125,6324197.21892013,5933222.59490463,7185660.9892403,6118286.2281819,5504707.43780276,5997029.67949575,5060120.625,5453685.5625,5657390.33672125,5185887.12881306,6936889.01067805,7454861.69645119,7386915.51050341,5430430.76629135,5199564.60496077,4866111.01507227,4473553.49967188,4666555.6875,4439149.70601457,4821928.08811871,4738392.41123538,8280754.65373118,5443578.64805444,5074451.1152489,7357653.84823608,6817288.44662108,6338415.74190144,3879425.8125,4050309.82012275,3693832.9220485,3403273.22967356,2659374.50625,3092295.9375,2552139.77402344,2575469.60671997,2108383.59375,2388862.72378699,2977479.2438058,2462592.0375],"Archive806_field5":[955.102511237985,1,1,363.293891677067,548.11326136836,672.221293265627,1,329.450919030827,548.674645151271,483.89608259315,680.177032815967,453.086855799476,594.896904826518,1,1,381.476575245975,1,1,313.505731146354,353.406348886745,337.625455863567,360.518860854983,319.415107079499,337.745454722522,1,1,415.072911792052,1,1,1,1,1,456.808112876034,443.767726112739,486.552260882194,1,1,1,1,1,509.210055045176,1,534.86410513983,1,529.743681256111,554.943381242311,1,1,1,1,1,1,550.739599124637,1,1,565.133049851699,580.316999660528,547.134028284717,628.959510807025,1,1,1,1,1,1,1,1,621.96496526634,1,1,1,1,1,1,1,1,1,1,1,689.148597765264,1,1,1,1,1,1,1,1,1,1,1,1,1,331.381664080472,322.130909018378,414.717555948949,407.893826855416,426.739676537235,398.40849655305,378.345729471666,347.042481214842,389.479673097534,459.177308877421,325.348425466917,455.933339489145,323.854132279805,352.726452314859,436.630962793103,421.099176456556,422.138510080444,411.725351241509,384.254182684285,457.968538169465,346.386818658826,437.195733694571,392.207782648434,398.40823598405,427.429897279303,504.989395954385,474.630812383294,356.876058902163,322.465753146621,425.812828278242,465.53291462661,478.314833714324,494.341490607125,487.899187226333,497.455353145725,531.894110530489,512.804909169863,502.745066089976,510.967115320233,523.485270853899,412.782198430452,442.752077532398,455.181998634499,586.86812129498,568.062663397875,559.670961329216,548.11772651498,606.382615904726,612.426776124701,664.350770227934,570.366670441842,575.199395065433,530.90225358483,518.940673603305,523.608173891913,580.450460942789,657.751634079197,664.89861428388,683.741387395845,562.033952043848,569.944821706798,610.775646644129,611.410993077783,604.402582599441,613.646223132126,655.095326350364,550.312264579828,551.666451965322,546.365110888174,518.63692709422,570.920228258743,589.90024976422,609.778376288196,574.696250143755,588.094503515061,540.681618181454,601.980136811303,563.105982502224,572.116047082091,575.51680262981,692.090099021187,620.234170461662,600.178254570651,624.013730961813,681.851034916131,686.946001622775,703.613736517622,696.039043869555,703.882358948641,649.741070934013,1,1,1,1,1,1,1,1,1,1,1,1,1,514.446324570509,488.624282170488,656.519811872102,638.742776816457,580.633994765303,506.389264245236,634.75597194538,642.809757361633,646.575033703361,612.22454708212,680.802475741514,630.77562722459,613.274915415242,616.654961425485,625.329168481394,627.016390575856,618.824550867537,664.697700355478,544.633979949054,489.929197187712,477.599157933383,511.944224365619,484.79309120295,533.673160216819,475.304034201877,443.723661994139,504.450439248643,525.40919439329,657.2832709561,756.297587812341,639.598182179195,642.816752393451,672.355185472707,656.964530497423,639.700502858627,707.0242962189,673.595073908364,663.688982641914,658.626040938612,692.380941634212,666.394797300298,532.426599298438,437.433217803453,372.415330396163,643.507288027705,634.774465703029,657.120072176933,602.581062201992,622.314023988409,602.038909084104,394.826559557741,411.740316133277,316.182709374703,435.062008272276,370.504466733598,1,1,1,350.37913244938,319.557571839213,336.992605080119,341.843976650852,343.074173082872,361.908118468887,380.075952334758,471.107512419365,533.196020411457,1,683.121615029751,738.234028781579,710.95290998553,709.331441482529,793.107058844234,724.526451225957,749.771767628014,698.868869369362,738.430653661062,825.753789092496,722.439565983607,777.7718610763,725.687351997729,706.897245434071,704.126686525224,678.415310715754,775.174166040494,786.08858120939,754.740909783279,784.873183091452,821.09999548116,877.589735630946,863.839668598417,864.528476730024,738.38117776022,693.582827354842,680.815954423552,684.530486840088,742.845110720994,736.673715994836,812.369533831753,706.621612805905,756.518816058818,648.904277210526,624.112050355912,576.937885102533,649.844456030706,595.397083628591,574.499488197903,675.34746737115,596.31456330989,545.908103092738,568.787865098882,487.389913743436,514.14850065266,546.367850010692,510.570183292694,648.878170953139,698.960207986324,699.535694793826,522.333744796632,521.766574127864,499.11114786046,464.96982507512,456.647694605834,449.204257409875,478.642883881094,482.152989534182,580.184292721302,550.458234681557,523.770980175829,657.006633336148,595.03386508004,583.180445191418,397.519230335389,418.338175561872,392.602887941601,370.573332404087,318.992853328001,354.345778983595,1,1,1,1,1,1],"Archive806_field6":[98.9646785837991,0.103616813294233,0.103616813294233,37.6433553448378,56.7937494672983,69.6534282367121,0.103616813294233,34.1366543668306,56.8519182659187,50.139770043865,70.4777766163173,46.9474161434453,61.6413215167262,0.103616813294233,0.103616813294233,39.5273870733854,0.103616813294233,0.103616813294233,32.4844648108636,36.6188396695943,34.9836738235955,37.3558154942602,33.0967755136138,34.9961077229593,0.103616813294233,0.103616813294233,43.0085324046505,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,47.3330009431668,45.9817976226299,50.4149947737171,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,52.7627232011619,0.103616813294233,55.4209141200606,0.103616813294233,54.8903521145139,57.5014647230547,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,57.065882216238,0.103616813294233,0.103616813294233,58.5572857128838,60.1305982052943,56.6922844556989,65.1707802009234,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,64.4460276815562,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,71.4073815866256,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,34.3367120161584,33.3781782560587,42.9717115646028,42.2646585011477,44.2174053889999,41.2818188021733,39.2029788113358,35.9594359812056,40.356642569246,47.5784894829,33.7115670571781,47.2423597124627,33.5567331590023,36.5483909534458,45.2423089502141,43.6329547452541,43.7406471833109,42.6616688480938,39.8151939047255,47.4532405141381,35.8914983165548,45.3008287112654,40.6393205872278,41.2817918028439,44.2889238627625,52.3253919561728,49.1797322704098,36.9783599644471,33.4128737375776,44.1213683259957,48.2370370971854,49.5614588208391,51.2220899358311,50.5545589892388,51.5447384491172,55.1131727431396,53.1352105298197,52.0928416476417,52.9447841876292,54.2418755723493,42.771175985951,45.8765593533081,47.1645081674065,60.809404552559,58.8608429327221,57.9913215062531,56.794212131562,62.8314342970684,63.4577109181019,68.8379097205875,59.0995768004255,59.6003283254506,55.0103996871867,53.770978887537,54.2546103934924,60.1444270380603,68.1541282623606,68.8946755758468,70.8471036793349,58.2361670739471,59.055866178808,63.2866261429889,63.352458715782,62.6262695557583,63.5840661309925,67.8788901203701,57.0216031724944,57.1619197539826,56.6126116853826,53.7395056422164,59.1569346973869,61.1235840420404,63.1832921667144,59.5481940520411,60.9364783700846,56.0237062827313,62.3752634428134,58.3472474537984,59.2808416331395,59.6332170857867,71.7121705730654,64.2666882394293,62.1885581471056,64.6583142541077,70.651231379384,71.1791555933667,72.9062131680039,72.1213476541279,72.9340469682854,67.3240992365644,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,53.3052887629267,50.6296910166879,68.0264907707163,66.1844910484305,60.1634442278809,52.4704418475024,65.7713910324636,66.6058986122514,66.9960445479534,63.4367565891542,70.5425830191598,65.3589603966829,63.5455924086174,63.8958220049867,64.7946156979744,64.9694402747221,64.120627949129,68.8738575148394,56.433237414076,50.7649021523925,49.4873027770661,53.0460291131531,50.23271521751,55.2975122023293,49.2494893698914,45.9772318390799,52.2695469798203,54.4412263985228,68.1055979680808,78.3651459512298,66.2731254261923,66.6066234151572,69.6673017205347,68.0725710974847,66.2837275689291,73.2596044958,69.7957750090778,68.7693373998464,68.2447315146558,71.7423067577971,69.049705292113,55.1683475323894,45.3254360578358,38.5884897575691,66.6781745170447,65.7733072966971,68.08868783065,62.4375294168242,64.4821960339897,62.3813532384311,40.9106699052987,42.6632194624901,32.7618447641432,45.0797388825624,38.3904921542145,0.103616813294233,0.103616813294233,0.103616813294233,36.3051691492026,33.1115372580221,34.9180998421237,35.4207835043893,35.5482525384012,37.4997659410577,39.3822589906983,48.8146591558678,55.2480724962018,0.103616813294233,70.7828848417924,76.4934575277101,73.6666749349621,73.4986635358242,82.179226038601,75.0731220234129,77.6889612595987,72.4145651545966,76.5138311711364,85.5619761914024,74.8568856248899,80.5902417146509,75.1934108619348,73.2464398983495,72.9593634131709,70.2952325863831,80.3210768331304,81.4519937519016,78.2038479345334,81.3260580720371,85.0797649276666,90.9330517858067,89.508313657314,89.5796857608822,76.5087046359563,71.8668423261127,70.54397963724,70.9288676491196,76.9712431441109,76.3317828890055,84.1751423129676,73.217879723779,78.3880689171405,67.2373933375521,64.6685017964093,59.7804651230386,67.3348116708259,61.6931484502744,59.5278062062343,69.9773524353294,61.7882147711128,56.5652579939689,58.935986021976,50.5017896938458,53.2744291976363,56.6128955045291,52.9036553558412,67.2346882903546,72.4240293710169,72.4836594801031,54.12255811187,54.0637896945783,51.7163066209274,48.1786915522608,47.3163789132145,46.5451136710135,49.5954503337204,49.9591562958194,60.1168475351495,57.0367281292717,54.2714798618161,68.076933659464,61.6555129017441,60.4272993062466,41.189675870529,43.3468686310444,40.6802601386214,38.3976277955359,33.053022925482,36.7161804225426,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive806_field7":[-1.00000000083457,0.966755016134568,0.975752972151125,-1.00000001584391,-0.998146086579508,-0.996007580562991,0.929816028467394,-1.00556384790377,-0.999999987303184,0.431330415610733,-0.99999698792388,-0.999989543223691,0.27053764066379,0.942033079779324,0.837222573785424,-1.07142791735089,0.896806612213776,0.7182192501034,-1.06488865115253,-0.977519294997485,-1.04858932242266,0.169880916050369,0.0814522720229919,0.634929728577691,0.915384225888193,0.835158781060341,0.18892083026085,0.762751664956011,0.797843262241384,0.649552126002612,0.874929282542926,0.561667106596124,0.313695019701277,-1.03959101671252,-0.192900710511142,0.878878573375389,0.736328241392939,0.645734057542204,0.889406626942827,0.765357047958461,0.388004250970074,0.918307100920207,-0.296158422404796,0.831326986014599,0.195019951116829,0.499719992475721,0.831464181567941,0.927301610475762,0.923967475209047,0.891077402883003,0.808227909089797,0.970629587368147,-0.324535016807166,0.671674450681974,0.95069759485842,0.302947808473933,-0.0198362683528349,-0.996137928812057,-0.00936380278565209,0.649752542414494,0.753691100657585,0.841239120989676,0.751700425803401,0.495283182714296,0.531578378877875,0.914501865428593,0.963809187485947,0.276081759895409,0.949403810120211,0.47781856981475,0.391595394509781,0.917706524293449,0.802425112638986,0.72186230319188,0.610975364411933,0.733559524242796,0.741087410374866,0.865020146951292,0.732098856338047,0.461298294042495,0.650184603340577,0.992222381280088,0.747738043850516,0.661194881516377,1.00459842891623,0.905263711876378,0.919699662216164,0.88682457701343,0.891503426995047,0.918134043906486,0.882629841124398,0.8906036769678,0.811469920969178,-0.979430731645553,-1.0000196410122,-0.996682382961274,-1.00073369263695,-0.996571948616414,-0.996944323958902,-0.999286007967498,-1.00518015592415,-0.999885496903691,-1.00116562854285,-1.00036775010984,-0.993387916149873,-0.998419012407734,-1.00010263133151,-1.00056909053842,-1.00013537344229,-1.00005826771711,-0.99986463373879,-1.00003202959344,-0.999912815547342,-0.999953046940706,-0.999773023544143,-1.0000017065928,-1.00000015911178,-0.999991791290799,-1.00132258090074,-1.01660695252644,-0.999685002704607,-0.999919178739172,-0.999999996690943,-1.00002138073426,-0.996255965378983,-1.00003796258073,-1.01566873839289,-0.999420366497833,-1.00002974854491,-1.00348616935531,-0.927710230938204,-0.40174653779719,-0.89461758808319,-1.00000099484513,-1.00003320509701,-0.103525335381967,-0.335189043193211,-0.989788624293173,-0.918270605816032,-1.01272533938933,-0.941426336836967,-0.514983838760242,-0.221443426309197,-0.910325749645597,-1.02393334625442,-1.00646740038322,-0.998767437583413,-1.00034431973564,-1.00198839441275,0.0866218348331484,-0.17244447777269,0.348962237339396,-1.00490725666793,-0.999050154948057,-0.891178170797529,-0.899220921830523,-0.970452026888638,-1.02227779973465,-0.300547780201443,-1.00006220758897,-0.999978960894502,-1.00004570267374,-0.999993176217804,-1.00014283454439,-0.999991764944309,-1.00009742810369,-0.999978227122265,-0.999467898935312,-1.00000003451201,-1.00003595375123,-1.00000299136632,-1.00000030684721,-1.00000061033159,-0.999999981653398,-0.999999609684956,-0.999998215789138,-1.00000638885115,0.204129050313923,0.291579957315671,0.365385320822613,-0.0829785981252693,0.635843297735884,-0.886693890957375,1.03349771376105,0.705416680643503,0.946311074977448,0.806764012356806,0.836887282299967,0.905447743548783,1.1192379585657,1.05335879015075,0.998202322399524,1.03526827221202,0.979112240974524,0.970214726267732,0.993314525369346,-0.99992587745229,-0.999956613841783,-1.0000010859915,-1.02099036659042,-0.826499814420427,-1.00000243715787,-1.00000027481256,-0.999999774172035,-1.00000631678964,-1.00000000801262,-0.999999830940888,-0.999983624939975,-1.00000014384749,-1.02038262892671,-0.97648310593792,-0.904430411537632,0.254003859474296,-0.209100880209651,0.479446678789815,-1.00000581473653,-1.00000072512832,-0.999995798739918,-1.00000011262839,-1.00000434012726,-0.999998766920666,-1.00000034538679,-0.999998800567375,-0.999999993399968,-0.999965762682895,-0.999999591981976,-1.0001763681496,-1.00000155295348,-1.00014458717688,-1.04103670025521,-0.996687934510546,-0.999960871133779,-1.00007856109302,-1.00017738420447,-1.00281662309744,-1.00035395456754,-1.00073127273482,-0.99997839874076,-1.00000077100907,-1.00000011988544,-1.00480974131685,-0.998178874275322,-0.999500964418225,-0.994769061538865,-0.999829813927977,-1.001283210868,-0.999999963232994,-0.999999850454879,-1.00000131867012,-0.999999944900265,-1.00000021617587,0.909226431668325,0.883712677888531,0.817093966685524,-1.00001933641097,-0.999994473388327,-1.00000130448897,-0.999999534801813,-0.999994435146618,-0.999999961549413,-0.999999861934722,-1.00023719410089,-1.00757696081929,1.02391000493086,-1.00000051009661,-1.00000017618722,-0.999998286158974,-1.00000037727242,-0.999999995232901,-0.999999907100204,-1.0000004333864,-1.00000870800764,-0.999999742351153,-1.00000000541688,-1.00000157771815,-0.999999915688272,-0.999998511041914,-0.999995279908527,-1.00000599630691,-1.00000346289667,-0.999999999855977,-1.0000000461824,-1.00000020290046,-0.999999922740424,-1.00000000977006,-0.99999999660011,-1.00000000133745,-0.99999999925904,-1.00000454336522,-0.99996532783849,-0.999969859455272,-0.999981530773338,-0.999999966749423,-1.00000002450018,-0.999999997482294,-1.00001059962393,-1.00000000663288,-1.0000000279062,-0.999999993002337,-1.00000000810266,-0.99999998605087,-0.999999969735779,-0.9999999096085,-1.00000003687326,-1.00000036085662,-0.999999939653076,-1.00000001922501,-0.99999999346533,-0.999999995852935,-1.00000001701227,-1.00000001212659,-0.999999996229181,-1.00000002699344,-0.999999893859287,-1.00000001764403,-0.99999998379726,-0.999999998495849,-0.999999972373634,-0.99999999929339,-1.00000000707375,-0.999999999260892,-1.00000000032622,-0.842156512413526,-1.0000000925476,-0.999999701908275,-0.998631415953968,-1.02068709185622,-0.99304456433819,-0.999999979410809,-1.00000001347966,-1.00000000000865,-1.00000001988603,-0.999999830387044,-1.00000015824678,0.895810688893314,0.959461931114499,0.962009605049845,0.939251701219644,0.953212484148763,0.976537774901037],"Archive806_field8":[0,5.92786393323147e-11,-3.60694824422252e-12,0,2.8977705714937e-10,0,5.18420123654853e-12,-3.14461519112001e-11,0,-1.33022287115113e-10,5.95307703452088e-10,8.89648797270178e-11,-1.49835404556022e-10,-3.78228125356652e-11,-1.12316062316848e-11,-7.24636895148819e-11,-2.94588140962384e-11,-7.5491788986616e-11,-3.25630612210451e-11,-1.81266869337119e-11,-4.76403379141128e-11,-8.08304955748102e-11,-5.64038725598045e-11,-3.41683799112992e-11,1.00108849970602e-12,-1.11691100262613e-11,-1.2734157996973e-10,-3.08425614383002e-11,-4.05857582259448e-11,-8.05048846897854e-11,8.63500567895595e-13,-9.54046323015273e-11,-1.19892398444624e-10,-9.77833463768196e-12,-1.95583562545309e-10,-7.13837250871995e-11,-9.51941141461555e-11,-1.59187390489623e-10,-5.039597036297e-11,-1.10924445019824e-10,-1.83743114488729e-10,-3.02170084887566e-11,-3.53451619366767e-10,-6.73587221211921e-11,-2.47351623578318e-10,-1.93469218542447e-10,-8.16695083565502e-11,-4.07593837413602e-11,-4.76299819100402e-11,-5.03305668718208e-11,-5.56217305181499e-11,-2.13365484743692e-11,-2.01061033797962e-10,-8.34236088084455e-11,-3.91871279177469e-11,-1.91634268575525e-10,-1.28352694685269e-10,1.26887357012994e-10,-2.3200444832943e-10,-1.25071448828572e-10,-8.72456770051381e-11,-2.96465896174677e-11,-1.06714425592738e-10,-1.42017286516932e-10,-1.08955708739394e-10,-5.42281455272249e-11,-3.24101121247643e-11,-1.54399161985582e-10,9.77978687599591e-11,-7.75601692278942e-11,-1.09263553336212e-10,5.25889418519646e-11,-1.52608933232839e-11,-4.16281853045206e-11,-6.28105126595283e-11,-4.92359636090154e-11,5.4829489552957e-11,2.49127101213061e-11,1.22146737285672e-12,1.09499154116245e-11,-3.88163565990346e-12,7.96361751933613e-10,1.72034324835253e-10,8.75687702796405e-11,1.02333800615362e-10,1.10433880926481e-10,2.962459242418e-11,1.31933711162108e-13,2.70301969683863e-11,7.84385188700409e-11,7.75985698836106e-11,6.28770252040174e-11,4.47163968292973e-11,-2.88498309438672e-11,-3.6583679725673e-11,-5.5722259612219e-11,9.72685730974077e-12,2.69699467085244e-11,2.61265828720817e-12,-1.06458360615283e-11,-2.5691564956381e-11,-8.73850952094684e-12,6.10171330548412e-11,-4.05228075433047e-11,5.69554965358871e-11,-3.61224171239689e-11,-3.00079309648153e-11,3.39787792933506e-11,1.94695209293334e-11,1.97301338533174e-11,8.44904302417969e-12,-9.7888999318445e-12,5.67893532852801e-11,-3.01805939701122e-11,3.34476688904214e-11,3.12912193682663e-12,7.88119178195981e-13,4.05839169564783e-11,1.46538279686989e-10,-7.6600216106111e-11,-2.64325391591435e-11,-4.03119785104622e-11,0,8.55970468232869e-11,1.00192428554684e-10,1.18844510564215e-10,1.38117324577786e-10,1.19229391162732e-10,2.04930232136254e-10,2.14499246376621e-10,-1.7097229456251e-10,-3.19672562589652e-10,-1.21958834514101e-10,4.88818234541786e-11,5.10940244479508e-11,-1.30415654633115e-10,-1.72474655238084e-10,5.20253336448718e-10,1.40562752677552e-10,3.64743239563398e-10,-8.25520534176909e-11,-3.64775951291935e-10,-3.64378954526794e-10,2.31868336358765e-10,6.79753550434529e-10,2.78144712986993e-10,2.05527061587634e-10,1.96225732412396e-10,4.31279438243166e-10,-1.81873863896984e-10,-1.3659191693851e-10,-1.20332372647703e-10,3.90918283555238e-10,3.49326364340601e-10,3.24232918549812e-10,7.34926319460601e-10,6.62242025772017e-10,8.21871997660515e-10,1.45678562398573e-10,2.65461643479002e-10,2.64550417589639e-10,2.39966723537871e-10,1.68156285541033e-10,3.23477060690566e-10,3.69679725276303e-10,5.05328854799105e-10,3.26749703477881e-10,4.02987552819354e-10,2.69650448373244e-10,4.1220464685845e-10,2.9748548028784e-10,3.89751482941462e-10,3.43912898807906e-10,0,4.63048895234446e-10,4.14818046097863e-10,4.50709127875802e-10,9.12891991096535e-11,5.34687914739993e-10,1.37381885162769e-10,2.04744033755469e-10,2.98825279067403e-10,4.9367716827778e-10,2.23158989298274e-10,5.10159140563498e-10,1.96528456540392e-10,2.279186132694e-10,2.97359678210403e-10,1.54992537627093e-10,3.73852565465741e-10,2.11736229807161e-10,1.03007739918784e-10,1.24298765164878e-10,1.04026884619875e-10,1.16305192071621e-10,1.23254437636002e-10,1.57376343784436e-10,1.08433007352033e-10,5.27280808117517e-10,1.23784747225843e-09,0,1.64712604264593e-10,4.74265893725222e-10,5.01103011105308e-10,5.22046806604859e-10,0,5.48901761525237e-10,5.09790321111475e-10,4.94676239458815e-10,1.17634826320895e-09,1.0228101564708e-09,1.34510874801157e-09,1.01994386110298e-09,7.52108737579297e-10,1.87303889372902e-09,1.26909135702494e-10,1.26113767493836e-10,1.63225365755937e-10,2.15067302390629e-10,2.22262452986451e-10,1.45514678871169e-10,1.45865001594918e-10,1.93127427156258e-10,2.97397783972279e-10,5.80553712562383e-10,0,6.41266656462741e-10,5.82584840684493e-10,6.83929323880314e-10,0,1.39922964366155e-09,0,1.1574981647585e-09,1.29972763479018e-09,1.14987354614126e-09,0,8.89449124010856e-10,2.06076413152947e-10,8.75549642986012e-11,0,8.76288659322159e-10,7.24864401460395e-10,1.00298189391628e-09,6.38413095864328e-10,6.19626697957076e-10,5.1817972222214e-10,1.02452599716405e-10,9.89332981422142e-11,-4.1880428914907e-11,2.06598373492758e-10,7.11542988134915e-12,-1.81406377636189e-11,-3.29275958478445e-11,-5.79559158258043e-11,-2.8691455055715e-11,-3.32555943796156e-11,-2.27134618905589e-11,1.72222278964226e-11,-2.66736423008775e-11,1.89549521600886e-11,-6.45743952092561e-13,7.43238293841558e-11,1.18025487190136e-10,7.66234341675746e-11,5.69933545209507e-10,6.04521026012486e-10,6.31138398423402e-10,5.79013608637234e-10,0,5.65781624949216e-10,7.22518988576823e-10,7.01188860574705e-10,6.60188256371995e-10,0,7.3456917800487e-10,6.20195525792137e-10,9.11614649578106e-10,8.14423290744101e-10,9.56006879318806e-10,6.36510449624749e-10,5.46931722762395e-10,0,8.31798841726339e-10,7.06648779932031e-10,5.37194212938459e-10,0,0,3.69904750642504e-10,0,1.11977874019692e-09,1.00344649858291e-09,8.46394340736588e-10,5.65663888959665e-10,0,4.59762158614882e-10,1.11312646886957e-09,5.32470023483005e-10,5.42460527269145e-10,5.91118012836356e-10,0,0,5.76857963593787e-10,4.6408102328885e-10,5.89683058678677e-10,4.31905566221133e-10,3.93095359506511e-10,5.55401943164147e-10,0,0,4.84701023876306e-10,4.06438883652481e-10,6.02511731954891e-10,5.97350734746208e-10,5.6785128181553e-10,4.92187588475335e-10,3.33798665553928e-10,2.7952155855941e-10,2.41789296442533e-10,0,3.11021455055117e-10,3.89223470893152e-10,3.11543241902387e-10,1.67893720563859e-09,3.19348060027792e-10,2.58040765251356e-10,7.67503729750348e-10,6.69132239221013e-10,5.10447438066995e-10,0,2.61935834509805e-10,1.59954145548672e-10,7.82591052042987e-11,-1.92209391846184e-10,0,-8.89517252177504e-12,-1.14508059072924e-11,-2.15235438521071e-12,5.28507436464261e-13,-2.81013130107475e-11,-8.51036685053175e-12],"Archive806_field9":[0,7.01791363696164e-12,5.53643527586556e-11,0,2.88406392029375e-10,0,1.98228239158302e-10,7.84680195672062e-11,0,3.3010179779696e-10,9.8969725720704e-11,1.05534419069764e-10,2.6627220530696e-10,1.47109724521335e-10,4.44166862316737e-10,3.03474885541264e-10,2.01280511774944e-10,3.85812744622129e-10,3.69637042998399e-10,8.68536142134699e-11,4.94640021042394e-10,5.1838389030571e-10,7.42183549714498e-10,5.55932153826912e-10,1.63323345844918e-10,3.13184665367789e-10,4.48849029873409e-10,4.0026087510349e-10,2.92285012277493e-10,3.07362547244748e-10,2.7409996726349e-10,3.6964972531322e-10,3.78281769262762e-10,2.50007228594439e-10,3.31703186722688e-10,2.08252598261485e-10,2.59389787930812e-10,2.61931595598252e-10,1.99631506049784e-10,2.41923299637265e-10,2.9061888860791e-10,1.85507155769786e-10,3.21258358624332e-10,2.0844847577876e-10,2.94109536700292e-10,2.8526137696399e-10,2.16416566987413e-10,1.68500705110248e-10,1.72267502473938e-10,1.90520814049198e-10,2.50857563317317e-10,9.72439735407531e-11,3.55329150846997e-10,2.22959212659541e-10,1.54899732895186e-10,2.99692917407785e-10,3.04793300448082e-10,3.54022859754503e-10,2.7504773802249e-10,2.41574582409499e-10,2.23391133626773e-10,2.0328276546005e-10,2.31835218733959e-10,2.52829296787653e-10,2.29687605381843e-10,1.83846522804297e-10,1.24142892963507e-10,2.48878589951209e-10,1.33580301618584e-10,1.58691950227555e-10,1.99696582526349e-10,1.79453702127319e-10,1.85678619648661e-10,1.75294739122213e-10,1.963288906845e-10,2.01432750579802e-10,1.20642284585259e-10,1.71805560534382e-10,1.48784751412977e-10,9.09308604816628e-11,1.26985413029037e-10,-9.30688047098086e-11,5.19428734527761e-11,8.57480059848016e-11,7.07172185038335e-11,1.00542212740885e-10,1.94914202512929e-10,1.96450768279857e-10,1.89566654177502e-10,1.61283393334853e-10,1.39422754971704e-10,1.63846390869308e-10,1.46168789125237e-10,7.53300075096735e-11,8.25867094144774e-11,2.78337665366806e-10,1.18443468105601e-10,1.26591680013859e-10,1.05854093698074e-10,1.04454593009023e-10,9.19129673586548e-11,1.11033992174069e-10,1.57090600284955e-10,1.03877221874571e-10,1.57663456433757e-10,9.72060504528895e-11,1.05361529312905e-10,1.36486103404316e-10,1.28986997456648e-10,1.16704054877813e-10,1.20442516087854e-10,1.08619740221094e-10,1.35141161976436e-10,1.04272966746318e-10,1.36584575703875e-10,8.81314942611462e-11,1.00478641140359e-10,9.79314159039713e-11,2.29389887430704e-10,2.75983360840074e-10,1.01146034784462e-10,1.01552382427924e-10,0,1.24327388288973e-10,1.91143605410709e-10,1.83301929707948e-10,2.31700301855423e-10,1.98534124664891e-10,2.09061553013826e-10,2.74320445109759e-10,2.91431169003807e-10,3.22150087989507e-10,3.29794711084621e-10,7.28133904921394e-11,1.19787404175202e-10,3.96976584669508e-10,3.41395105808368e-10,4.10778359983517e-10,4.09682499233534e-10,3.56396782207111e-10,3.91412848740152e-10,3.89911282901244e-10,2.00812324742898e-10,4.98136324960546e-10,5.09831835299853e-10,3.22172489585918e-10,2.7065828793087e-10,2.41417474459896e-10,2.8082227455569e-10,1.99682585895435e-10,1.13917060041603e-10,1.39650380317448e-10,3.26000821285277e-10,2.5341279476741e-10,2.99601690037324e-10,3.85465454570078e-10,3.3787236701027e-10,3.07176570003572e-10,2.37404204840515e-10,2.39380789138182e-10,1.74352803781752e-10,1.97291599106248e-10,1.78509748612473e-10,2.02577675851119e-10,1.4355034953017e-10,1.97756418273564e-10,1.67953393387066e-10,2.28266324172894e-10,1.25957005629955e-10,1.70999955821831e-10,1.46910929404503e-10,9.97781371193929e-11,1.24552654768241e-10,0,9.30409256671943e-11,1.13462496360737e-10,1.36584384668559e-10,9.96886260538354e-11,-4.77291468270477e-11,5.82671355659076e-11,3.19217009432106e-11,-4.34378320691698e-12,2.5658838956513e-10,-3.53430806634969e-11,-6.27510310983415e-11,1.44173314533331e-11,2.12007958680289e-11,-2.12106175778241e-11,5.13756184022894e-11,-5.23371648233783e-11,-2.22586803597107e-11,-7.85312517227135e-12,1.06976312035759e-11,9.82355871235265e-11,8.09767523055362e-11,4.70222545454148e-11,2.05359770029053e-10,1.51152079187033e-10,9.56397866034964e-11,1.06275952107493e-10,0,1.33408619229741e-10,1.1179286067938e-10,8.57495402630761e-11,1.21832334567033e-10,0,7.05012472840991e-11,1.50811757300663e-10,7.74715781478329e-11,2.45725982771308e-10,2.09838925935388e-10,6.6340088706562e-11,-1.20072555795128e-10,-4.84425260674899e-11,-1.69903868244153e-10,1.34361142889161e-10,1.18885334541673e-10,1.52613811967183e-10,9.66896206371957e-11,1.41431996322323e-10,9.98083909745335e-11,8.84027566590928e-11,1.19744427422839e-10,9.07000257572148e-11,1.30048074777013e-10,0,1.82735575806159e-10,1.58800011836917e-10,1.2638917222618e-10,0,5.41177244681207e-11,0,4.7119968717244e-11,3.11294312515348e-11,7.02630621083748e-11,0,1.07985378858076e-10,1.70880669254051e-10,8.54538964181286e-11,0,1.80335448395649e-10,2.17653600236679e-10,1.11002751779209e-10,2.90305277020988e-10,2.23341977313063e-10,2.6127501138558e-10,4.45328884445109e-11,7.34901419990252e-11,4.46337189354842e-11,4.15818942900175e-11,7.29777232854178e-11,1.94445353464704e-10,1.96212911963151e-10,2.07073873804577e-10,8.55117440261953e-11,5.56557130945694e-11,5.04149903503711e-11,2.38112020540092e-11,6.9583659759514e-11,4.34948069161477e-11,6.90846754397768e-11,1.67910284039495e-10,3.31333984042524e-10,2.48619935469912e-11,7.99680924596569e-11,4.94927578095904e-11,6.96138414829466e-11,5.79087190051733e-11,0,3.52354583417213e-11,3.90667393238533e-11,8.60127371318666e-11,4.93669841699031e-11,0,5.57523684788139e-11,2.93998598314941e-11,2.64473983087888e-11,5.92071800387526e-11,4.0806981434111e-11,1.13304446382644e-10,2.85301822840544e-11,0,2.27835693941661e-11,1.69552541780354e-11,1.1572658901315e-11,0,0,6.40176131984888e-12,0,2.87075644816463e-11,6.80981663892455e-11,8.71177905855533e-11,4.25194368052422e-11,0,1.56559608515656e-11,1.06526783963948e-12,1.95718093752836e-11,5.95358953073874e-11,3.55438867301691e-11,0,0,3.1158573564587e-11,7.09586236142254e-11,3.63891346284779e-11,9.50552181991735e-11,6.98801774958367e-11,2.54252999977383e-11,0,0,4.85806117091344e-11,4.17323361550871e-11,3.40815692527575e-11,2.11320911615247e-11,4.48649996142082e-11,3.20129736659782e-11,6.96149636821411e-11,7.7283300393862e-11,6.53738897573146e-11,0,3.84184051034724e-11,3.46503390256843e-11,6.16056980801e-11,1.35474315684746e-10,1.04374579985188e-10,1.06874435071378e-10,1.52397724386102e-10,3.98152386619219e-10,3.32618222979556e-10,0,2.02532883262541e-11,4.13711169984222e-11,4.96897862307858e-11,5.08882568687868e-11,0,2.02097695779512e-10,1.18385969356618e-10,9.30744254157458e-11,1.36046854709748e-10,1.35082623086276e-10,6.49222100205987e-11],"Archive806_field10":[0,0.641537004388703,0,0,129.29562809972,0,3.47789895492263,0,0,0,90.5626749472815,14.6962999613319,0,0,0,0.0207822661325485,0,0,0,0,0,0,0,0,0.367175650570123,0.193385278113185,0,0,0,0,0.466393562960094,0,0,5.89217674877678,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.00531654128716294,0,0,0,0,94.4831667783158,0,0,0,0.882197884599207,0,0,0,0,0,0,19.9454752185073,0.309009887807641,0,14.1799445591854,1.72624456884312,0.78360366749407,0,0,9.37445451059075,7.89420301073527,2.80982420051193,4.10612339809496,3.1267085427694,0,12.1843105952253,10.8802037208234,11.365589451619,16.5044877971709,8.70198359896103,3.16345946769804,8.95093359292072,19.1957728608362,16.6535074099981,15.7760284999721,9.9045012740649,0,0,1.42592653611814,1.90581203020921,5.41388823431262,0.829775183934885,0,0,0.0865834605628813,15.2509328123851,0,14.1222254437277,0,0,7.25877479173295,3.98828648610649,3.68265692017566,1.61045886943866,0,11.9911062369627,0,7.23713090909895,0.776635707272274,0.583282369253087,6.22184523405757,52.2238423726218,13.0619273575313,0,0,0,16.4603493200087,29.9150770998072,33.6072863104698,49.9640844062608,37.1011626160993,66.3821167798894,91.6371426025997,29.705720596443,0,43.0192237487352,5.45196998578712,9.46441424214271,0,0,331.60830768493,144.530836447807,202.0653068938,199.794890679567,0,0,260.183438600681,535.27030310671,139.253438870419,86.4722764742074,73.5278866815254,186.871061940814,0,2.92871339268289,1.15028469593533,198.0643088445,136.586315694287,274.097445034403,410.741180615621,382.585596224958,388.096480410665,62.578035071554,97.9640538158032,71.412437318053,73.1884646894861,46.5432534196721,100.843443597681,81.8003142284781,153.924518132023,84.3216047975749,142.007753902406,52.5588294399386,108.493020339911,67.4211027829771,59.4923782042584,65.6774151099272,0,66.0489511680328,72.0881123809992,94.8084069500398,14.5265136980856,1.12916472363524,10.6716605536124,10.1697818572263,4.89158740377509,248.820911374398,0,0,5.38667753481357,8.42256244111818,1.60962719336417,11.8077655620414,0,0.631012988638821,0.28993293264958,2.68550407626086,15.6630748930103,14.5153003766139,8.7010361427874,50.0127476001959,25.443869161414,77.437324246555,208.108124221963,0,33.9600777350367,81.3862246621958,65.8334278443594,97.8196699037093,0,59.0432262319235,118.44303516026,56.591377178914,433.958650193375,328.863506456078,296.933359260866,0,148.684235716584,0,26.398456640651,23.3330644099619,38.572297184076,31.9594370195809,48.5969600494493,22.438960160872,19.7546228751603,35.7628007569334,41.586014161298,116.070716456158,0,180.097346345882,141.705233191514,132.675418088189,0,114.101401038012,0,82.5083258199488,63.8333332676125,121.275569894441,0,146.897741238482,54.4480676947126,11.6730781232319,0,242.621556844319,241.389361872648,171.000893789447,284.678308185942,213.890231011302,208.764735377073,7.99201441735349,11.4354715961668,0,13.6385939106801,0.787421492581472,0,0,0,0,0,0,0.379617357474836,0,1.12865512585328,0.287033951444018,19.577892791063,67.9995568234129,3.45400233509636,70.0954491366739,45.7602979686586,67.6083333923748,51.5634552833767,0,30.0715619941527,43.7851254137978,92.7632623854803,50.4272660898114,0,62.7270915070425,28.4612645307944,34.985342468909,74.0047275817468,58.5835179233636,110.978406774195,24.0538525063169,0,27.4355028888756,17.8217487968313,9.333608298545,0,0,4.09732413476775,0,49.1364493510277,104.22810236078,111.67374907221,36.9848121050608,0,11.0043047725555,4.61955631279618,15.9963273709497,48.3176752236965,31.5242936616848,0,0,25.5246655860482,48.2131341111305,30.6139331435813,63.1179965883898,40.2517529119938,20.3250314726224,0,0,34.2708584607205,25.2352821510967,29.4053959797099,19.0207680204599,39.1565474457706,22.1109613504722,34.9604298622985,33.3098305277472,24.1537362202613,0,17.0391311584434,19.107757366738,29.2631438064334,398.691042470991,51.1788162918343,42.4978438899227,179.902824752796,410.393568150708,262.081059903805,0,9.03688067671045,10.7251807770751,6.15566978992165,0,0,0.323066222036695,0.0757579273713999,0.0871151004107429,0.110817692682834,0,0],"Archive806_field11":[0,5698.28857354174,4623.77009758279,0,5030.30791689662,0,6272.84427567541,1799.13976290181,0,4968.06974977328,2248.30304328513,1861.92889832352,6838.06280084297,5237.13410420208,3819.72400610888,3285.07376846542,4647.1062854645,4169.9455877686,2210.36368945266,2523.32140607022,2772.18004718077,3578.01200316987,3199.82225458081,3646.72797812345,4445.44526108596,4175.68878735954,4103.0547722246,3975.76416268768,4443.16793164704,4651.66212170428,4202.42766881981,4378.08990773426,4584.72982784211,4285.25462998763,5210.18524134206,5319.99204419621,5071.74782440537,5826.56140388275,4946.50165127214,5463.8387087076,5448.72185627693,5796.90034012347,6156.71939878979,5870.8888652141,5826.83503082187,6291.94350541538,5616.69058814732,5513.41391622767,5364.27712746523,5631.03149201995,4718.51729212252,4794.50324675932,6544.73747952279,6359.73767545627,5076.16531749908,6578.61640825765,7023.87067370077,6171.9689348665,7762.95042135651,6137.01161422724,6101.83123621372,6251.15250325807,5851.76349529664,6475.70686195193,6763.83665651992,5160.66933118973,4992.01838905939,7147.60324284571,6280.91967165725,7065.70296807726,6999.86783711109,6462.82769224042,6563.37961737394,6750.68671030733,6712.54174454952,6462.30982962558,6520.06798662069,6530.23766040812,6737.89120335678,6810.25522872247,6737.4212767825,4280.55309033477,6156.69027950977,6427.30609908307,5899.22222460904,6195.52927940682,6417.0646269644,6391.84243002488,6478.30213243383,6420.24802268482,6391.07153654574,6461.88609569427,6527.70186648282,2010.61723037309,602.640630895553,3834.87904511237,3176.00087880743,3705.54257780783,3272.46402827428,2793.26272857372,2259.60590033317,2511.91223927822,3716.56848920079,1270.79747994187,4128.86673108082,1563.93090413881,1859.87112384267,3575.05810306571,3023.31853563432,2287.37422023865,2559.51135951381,2006.50275041296,3042.15846573592,1413.4581966463,2960.4479240299,1545.815127195,1888.71305437081,1934.89090044661,4767.99558443286,4842.58838087441,2162.06079714258,940.246429546991,0,2538.42605217341,4333.5721378655,3781.00115343076,4893.05929794092,4257.28325866591,4254.07431494808,5634.38018577733,5500.5268856067,5618.50866816441,6019.58659130883,1323.68421743192,2336.6856687786,4655.42754653522,6864.84527105378,5878.01375424905,6251.92179562871,5653.94968314587,6868.52966584839,7112.31140008769,7932.67085575457,6426.07113883402,5865.43417376618,5586.11878435387,5209.47153122505,4710.72044686562,4969.24219420968,7471.95112606237,7294.80959909049,7195.18432587542,5217.34122277011,4527.59604300945,6491.56244899714,5074.13302417269,5752.94496006768,4588.37654154675,6297.72487768732,4485.85854841979,3486.00507858411,3974.1503969311,3547.96424729129,3895.64453058647,2773.18908888193,3896.0847922446,3279.97365595646,4101.65851177399,2382.69754560834,3349.83653757991,2742.30868076202,1724.41278441965,2288.29019534808,0,1975.01834880148,2288.05372137463,2684.22418576871,6691.96027541016,5358.72738963771,6389.8213224729,6549.37104040958,5781.7262517633,4768.41919387397,5453.05628685099,5037.58780610842,5715.25600833147,5826.15990660247,5466.48963155283,5973.62801300782,5041.92762932847,5521.8005978732,5642.76715058757,5703.86185081588,6089.81467924818,5986.31089748742,5829.07411069098,3931.71157819691,3154.17706481627,2078.1850612216,2780.99081857239,0,2594.9225597496,2251.90734995284,1788.60293727538,2535.07796985124,0,1318.2093785907,3213.3725317111,1087.4484406585,3983.91455688671,4121.02891413491,2468.60012129887,4126.74693910915,4358.15176842544,2764.02869295812,2757.21520887697,2264.49515877651,3068.92463715859,1541.84862161916,2876.44682151076,1835.02722411313,1254.90471789112,2072.18223499787,1562.7322694601,2815.14824461063,0,3690.14240157139,3323.97021006308,2833.5583288216,0,1380.2561587703,0,1659.34161229099,1192.32205867179,2420.74058706231,0,2914.90454820552,3309.20604988875,1497.99489237071,0,3701.31721054893,4015.11019228628,2961.28914620527,4895.03049455483,4273.28241909444,4483.90683669957,564.882482437009,968.409453471221,118.225445180056,589.783056215903,777.081946680284,6055.93912107826,5944.3575366988,6082.72695107236,1078.87981641652,304.57037817877,441.49145941256,200.758636419861,743.59068582104,460.62698089615,1134.95468078467,3533.34311962533,6122.91540595931,5753.80999649591,1802.82656091533,1138.36361249143,1681.7498982376,1379.18003720759,0,695.705744243115,1093.02922239565,2126.79381824215,1320.88502516909,0,1607.3585742403,799.46704973348,1110.42543264205,1852.15607626096,1408.34985111592,2522.92319753665,627.814194070523,0,599.786045958081,489.661027294524,466.705649199025,0,0,280.202011386734,0,909.983446094248,2140.18725753361,2437.27947121023,853.113898353591,0,334.380491872336,779.64815550215,424.589729403799,1118.05208526928,624.825600590025,0,0,539.22182683887,1005.00838247325,660.306427760876,1499.13340792163,1176.25826312475,460.942990646925,0,0,645.514190259544,633.111950235077,466.435972556285,461.684333278417,933.705492022158,408.995681127069,1099.07321354526,1221.16522427498,971.239255873551,0,345.925420093544,436.081991536818,818.436826761778,2106.49310023209,1913.64213327041,1992.97683890691,3320.95391572685,5227.39886544778,5301.74636374042,0,246.131277923329,238.45916025579,298.910587624508,16.4172276065791,0,4446.91564520102,4645.56792549425,4578.08848964871,4533.94271250931,4794.47111858156,4669.45170551688],"Archive806_field12":[0,880.297610328362,3863.00116670507,0,2790.19451178677,0,2916.60903931941,2819.85532185911,0,4068.47792691627,1776.51454950994,1784.6206265264,3337.79449083394,3707.39578834765,3923.33314095314,3986.03874381905,3876.30094272328,3973.54544588808,3823.28328831356,3387.07351861095,3919.65795925234,3964.75609140909,3903.35998254719,3934.53117063453,3887.64533633328,3922.4112089435,4068.6877695882,3944.20220577509,3920.90373794327,3967.26482155034,3910.05827143982,4033.20527763932,4159.34659856442,3935.19364904847,4401.71760058298,3755.21901167445,3896.06515626473,3793.10574626838,3833.93897670038,3818.04744920328,4007.60666250032,3417.57157126963,4262.28295844849,3465.86240067661,4017.17307697153,3703.59460842207,3651.17742737006,3587.6279681102,3673.63915681384,3561.93716501393,3898.61795483998,3832.09636933778,3715.05238792936,3221.30469014003,3771.68436876188,3603.60432859892,3558.6201737407,3070.05576570166,2929.36669979049,3524.22750281978,3377.42202021118,3053.97943998421,3614.28484225174,3385.39866632728,2966.43705469744,3767.65269131997,3785.37486004654,2989.40813034853,1559.66276474734,2233.02973029799,2634.77052543903,2249.32722861138,2606.72233888468,2375.25792312852,2700.78669273677,2924.04250226303,1657.28690345205,2178.17810886431,1992.08785216207,1336.06013489362,1631.04958710368,268.749609194966,1023.99874118581,1343.19394277347,1051.50545083966,1336.35756875494,2598.64836954555,2764.24684303398,2461.74432912243,1893.30997840194,1706.46429858238,1963.76665721254,1901.56481923453,3288.93537583662,1285.75033318211,4062.47075616046,3244.85176734133,3596.0067553511,3589.00784024572,3240.75099577916,2932.90417207731,2741.12763919942,3049.54549810477,2019.83555182294,3451.67078142742,2393.88250810929,2358.56289455736,3232.3618733321,2898.53967894988,2286.59273270009,2568.88784100622,2267.06344280821,2611.38844778406,1928.52419764789,2707.33258982608,1780.04544349639,2071.4808252849,1949.74367427831,3155.01458449131,3777.67214898945,2664.72017658394,1658.29796003082,0,2237.71889398033,3218.52188796919,2793.1607667858,3463.65135997448,3002.16993685922,2758.21672525981,3391.501649706,3820.78710218556,4224.79456358379,3804.4671792448,1445.61454693313,2206.13695444206,4402.02482908033,2983.29152881885,2433.3821780265,2706.88095088736,2803.12191349035,2120.62132999429,2578.16830517568,2134.32107322675,2395.72012950037,1971.24045444137,3059.72153064794,3138.86315655625,2953.1651933541,2520.01690211084,2470.10345261783,1334.37694426262,1848.48633970357,2679.69358674052,2592.45130934725,1717.54669806753,1352.98425851932,1607.40396556771,1904.58528924268,798.491827970156,2695.65971685362,2437.27752864194,2598.49451543939,2561.88463171031,2489.70158474945,2142.10883494531,2337.96395820664,2325.40260217028,2461.06601426894,2004.58084537176,2285.78667406408,2153.73672638834,1642.06394749046,1951.35384353585,0,1789.31269984498,1953.4833401455,2071.39018361423,832.760875149103,48.4663993649258,869.607712849014,-176.56333311753,572.982510463259,495.945004146337,711.411847317897,408.216044280606,847.215195893781,822.566070467469,648.255517919523,1055.01708982801,503.046673577673,735.605889695798,837.786084829245,876.543390321728,1269.55989842033,1128.36228701429,971.833285348901,2739.68071685812,2506.29799222062,1805.50587113681,1035.93322661106,0,2149.20197485699,1904.35097276288,1675.72862663406,1978.30538854261,0,1371.77332927163,2167.55907265771,1217.46390358391,1133.69383445988,1541.51168108903,698.878961457591,107.484076135226,-313.260720501112,126.619454929478,2281.23486820855,2008.58555317096,2373.83964364135,1508.82326071961,2240.91136222436,1732.77331019232,1309.84044713252,1854.0601579805,1520.99242655009,1989.05585004286,0,2089.34115856514,2094.98790080111,1810.36469324246,0,609.935802364634,0,891.820745246227,595.658405222859,1139.47840398603,0,1571.17921157725,2423.04738900231,1528.91131570508,0,1703.37713598364,1982.20057848091,1449.23157191182,2245.98689050617,2182.86393650191,2355.77770030384,655.815884828556,1065.94226152627,485.788313074161,684.590125059165,1014.63742292931,3192.72607880253,3333.95171275557,3266.42530972685,1540.22294873093,893.898354798795,772.34630172938,273.462932279178,1168.6555345724,625.58266163429,1416.52246130486,2816.52602384741,3393.60793350183,922.809135827478,1617.16544329312,1122.77672275847,1455.8482391538,1363.1642765416,0,839.161108998809,899.140899110338,1574.77594805554,1166.92813805926,0,1266.05153081049,755.402257980734,795.637882606937,1289.00955850957,886.54238148027,1789.33546932953,689.514849054431,0,464.603156423249,420.946275319244,442.670982675862,0,0,289.884549138165,0,539.479084543524,1226.79846175476,1498.1991797478,930.970638960559,0,398.986427667934,529.444752126369,518.505272070911,1239.9047838191,773.620183930204,0,0,680.209299363826,1135.38983948714,828.964140493729,1498.75725231592,1255.03116023585,575.758417361581,0,0,788.873144090933,740.236466106533,619.130155962534,584.492740645421,1059.24943796718,522.210147478332,1177.99221101938,1264.68676405168,1046.68759628001,0,431.150075269987,535.410556986145,914.548012029297,112.191199123924,1755.56837044916,1798.07281319252,1852.78278058371,2063.94668888807,2408.36464132071,0,303.492444596236,303.199737712741,367.731871790527,163.826105824521,0,3893.17093168791,3861.0587581641,3870.36987621971,3877.57253544865,3836.84089075594,3855.63245719044],"Archive806_field13":[0,0,0,0,5752.31980616497,0,0,3344.91971841949,0,7508.62097985309,2865.46165897674,2579.07929366969,8554.22702546428,0,0,5165.28939474703,0,0,4416.24305743565,4223.67351233588,4800.90624065055,5586.83152465177,5072.57631136997,5616.03154996976,0,0,6123.52631805442,0,0,0,0,0,6804.87717349011,5818.00277581077,6820.64132500608,0,0,0,0,0,7905.52675838271,0,7488.14060854328,0,7908.67396320048,8312.91356053678,0,0,0,0,0,0,7525.63637979739,0,0,8097.80703486332,7873.91495901677,6893.3622375061,8297.26391687528,0,0,0,0,0,0,0,0,8873.37658643438,0,0,0,0,0,0,0,0,0,0,0,8569.7483634927,0,0,0,0,0,0,0,0,0,0,0,0,0,3854.82522995567,1419.9752284051,5586.58804059337,4540.48946416614,5163.55598211905,4856.95358158737,4278.40901358002,3702.39729194598,3717.99459819654,4807.55749626891,2386.34907158079,5381.59564315137,2859.46731674836,3003.65436175446,4819.66842432825,4188.31556098116,3234.28309655312,3626.33191243574,3027.47913966921,4009.24902642237,2391.03945065322,4011.72053648149,2357.56361279546,2803.26056785197,2746.87152812421,5717.33320014883,6141.78061247961,3431.50703190805,1906.30938530928,0,3383.93154050569,5398.03025347403,4700.820863568,5994.90700817111,5209.36513159697,5070.00076731788,6576.36096316486,6697.32857932995,7029.6890940301,7121.05281880537,1960.08707096981,3213.58680860346,6407.09202656546,7485.06038328561,6361.7917695786,6812.76233410018,6310.6766262767,7188.4445185218,7565.1784685908,8214.77895925129,6858.12403068426,6187.81924235108,6369.19295657006,6082.02725661687,5559.86256914288,5571.7011021445,8856.09622314196,7415.84849604969,8887.34437145404,5865.27127707104,5217.27224898328,6714.93482390354,5251.41812759192,5973.28412367023,4967.96179645296,6348.14365262609,5233.49866012195,4253.53419635216,4748.26759189036,4376.22019170091,4623.27376323231,3504.17008483387,4543.73768809698,4020.66218998174,4783.35117608959,3113.77455180675,4055.39462294784,3486.95265054986,2381.17060680621,3007.3333438128,0,2665.02109108523,3008.53568902254,3390.53340526813,7489.37480917169,5967.98297166176,8378.36971973673,6551.75057794153,7820.35623612168,4794.14049185497,0,0,0,0,0,0,0,0,0,0,0,0,0,4792.09832583304,4028.69241591141,2752.94471419136,2967.67039662102,0,3369.37564243386,2949.17604429349,2450.95224297639,3215.63563289777,0,1902.48207158581,3876.09021579944,1632.41001823083,4142.08122890729,4399.90199596194,2565.6224121341,4251.89483511934,4369.39573804418,0,3578.58466883109,3026.9380979018,3879.87281779729,2157.27717367924,3646.31732715703,2523.85186921721,1813.9646765937,2780.55359316295,2180.72238206395,3446.94108068647,0,4240.57748670502,3929.09051332365,3362.5099442787,0,1509.0158206028,0,1883.81496647945,1332.83188261234,2675.51789809026,0,3311.38530528263,4101.4635595079,2140.45754661469,0,4074.4622664221,4477.74820524013,3296.89331893817,5385.70150072832,4798.52452308231,5065.08727402105,865.555713838029,1440.15616322681,499.967539953807,903.608152203097,1278.02404197458,0,0,0,1880.49684659888,944.360833567314,889.625493412415,339.243283541308,1385.16528491242,776.872500521769,1815.11928280656,4518.55424267689,7000.47626057402,0,2421.86037576968,1598.90565181714,2224.35986649405,1939.16332985933,0,1090.04488413504,1415.33290693879,2646.35054969806,1762.51483089091,0,2046.09092291897,1099.90005681059,1366.04695442636,2256.55218702325,1664.15344764206,3093.03457505236,932.513479443045,0,758.682670083135,645.727255392146,643.250932294308,0,0,403.170210970761,0,1057.87879968618,2466.86764198509,2860.9320164904,1262.7389493362,0,520.577067116873,942.423997960609,670.167259331967,1669.55213704529,994.432109365385,0,0,868.012021506889,1516.29546476013,1059.80475785252,2119.82883179664,1720.08334528656,737.540640093306,0,0,1019.31810897989,974.053780488712,775.167508682297,744.838363312425,1412.02525390523,663.310564750733,1611.09514863493,1758.0321715333,1427.88676594338,0,552.77010019737,690.530207793209,1227.28843623112,2109.47861958501,2596.93021037324,2684.21730155392,3802.83301532015,5620.10452154199,5823.12070551509,0,390.753464346985,385.736765241494,473.892676588901,164.646646828636,0,0,0,0,0,0,0],"Archive806_field14":[8591882.51751933,8995.77,8995.77,3268108.29193181,4930700.83321965,6047148.14332013,8995.77,2963664.69388995,4935750.91261245,4353017.86290898,6118716.1464949,4075865.14479525,5351555.72953125,8995.77,8995.77,3431675.53130048,8995.77,8995.77,2820225.45107443,3179162.23112491,3037200.9470938,3243144.75291343,2873384.83781255,3038280.42922923,8995.77,8995.77,3733900.44771159,8995.77,8995.77,8995.77,8995.77,8995.77,4109340.71756684,3992032.39753319,4376912.23187621,8995.77,8995.77,8995.77,8995.77,8995.77,4580736.53687374,8995.77,4811514.47109373,8995.77,4765452.31553328,4992143.02067814,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,4954326.76361743,8995.77,8995.77,5083806.93586442,5220398.25603619,4921891.87762281,5657975.09853251,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,5595053.77559398,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,6199422.28131883,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,2981033.23228519,2897815.56742026,3730703.74827888,3669319.05081115,3838851.98000336,3583991.20103703,3403511.16280932,3121914.34123804,3503669.55886061,4130653.45988024,2926759.60536253,4101471.45737626,2913317.2875387,3173046.03794044,3927831.71616532,3788111.33859259,3797460.94482636,3703786.56293783,3456662.24896581,4119779.63660872,3116016.15168651,3932912.26529761,3528211.00491531,3583988.85701824,3845061.04704823,4542768.45844458,4269669.62311327,3210374.94439032,2900827.74818378,3830514.26624056,4187827.02741062,4302810.23168231,4446982.35095886,4389028.87147503,4474993.94216772,4784797.08268686,4613075.01776298,4522578.98318022,4596542.64698429,4709153.09498938,3713293.71717471,3982895.85650362,4094712.56785627,5279330.63950174,5110161.0655147,5034671.24379652,4930741.00065166,5454878.54467726,5509250.4198593,5976346.72829335,5130887.38296061,5174361.46214777,4775874.56573081,4668270.9433804,4710258.70245165,5221598.84303532,5916982.41730062,5981275.0074165,6150780.26049392,5055928.16477749,5127092.52876536,5494397.23881185,5500112.66919932,5437066.62047057,5520220.28466528,5893086.88392282,4950482.56033928,4962664.51859609,4914974.87357451,4665538.50964637,5135867.06176315,5306606.96982148,5485426.02406207,5169835.28615569,5290362.89188568,4863847.48038818,5415274.85532301,5065571.90421403,5146624.37285966,5177216.78759316,6225883.35007183,5579483.9436139,5399065.53711902,5613484.00057435,6133775.08436748,6179608.23301811,6329547.34255313,6261407.14967043,6331963.80815942,5844921.23367607,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,4627840.81318165,4395551.65882081,5905901.2280447,5745983.10940218,5223249.87108987,4555361.35161936,5710118.72974709,5782568.73098106,5816440.29093769,5507431.21390492,6124342.48720124,5674312.46411815,5516880.08584497,5547286.20234254,5625317.37394987,5640495.23585057,5566803.32995767,5979467.6319268,4899402.01780631,4407290.37418531,4296372.17696239,4605332.4952215,4361087.14605076,4800801.00448366,4275725.77175222,3991636.00685701,4537920.12787977,4726460.26864733,5912769.13036876,6803479.15151462,5753678.13930214,5782631.65667843,6048352.60681982,5909901.8145128,5754598.59260055,6360227.95319709,6059506.35801265,5970393.43938065,5924848.38029434,6228499.70332479,5994734.3257101,4789587.22917091,3935048.61771977,3350162.65671789,5788843.55642099,5710285.09533734,5911301.03168709,5420680.64192482,5598193.82757421,5415803.55717151,3551768.91967274,3703921.18366225,2844306.93151167,3913717.76215549,3332972.9667081,8995.77,8995.77,8995.77,3151930.08831416,2874666.41802404,3031507.96700158,3075149.78983643,3086216.35399371,3255642.19487886,3419075.84973445,4237974.82699675,4796508.76453677,8995.77,6145204.93083618,6640983.52909247,6395568.85906053,6380982.50134529,7134608.68673919,6517673.31414493,6744774.37407506,6286863.60900682,6642752.32128457,7428291.1633046,6498900.17448835,6996656.77471435,6528116.51048061,6359085.03355846,6334161.72284302,6102868.09967746,6973288.50764209,7071472.076186,6789475.63400113,7060538.63425859,7386426.70634955,7894595.41609679,7770902.97558758,7777099.33511364,6642307.24746005,6239311.59083387,6124463.73832475,6157878.81760146,6682463.7616706,6626947.31413487,7307889.48135767,6356605.50583098,6805469.26993744,5837393.62980214,5614368.4592302,5190000.51866881,5845851.26222735,5356055.22299357,5168065.26094605,6075270.48655337,5364308.65918621,4910863.73655856,5116684.81322057,4384447.56435579,4625161.65771618,4914999.51409068,4592971.93775892,5837158.78391512,6287685.27019713,6292862.21715545,4698794.2314292,4693692.09454222,4489889.09058869,4182761.60331602,4107897.63170432,4040938.18268003,4305761.29553103,4337337.39866191,5219204.4549335,4951795.67380131,4711723.27033632,5910280.56196632,5352787.79247107,5246157.1534396,3575991.56667418,3763274.00957422,3531765.28125842,3333592.46644072,2869586.34018243,3187613.12820725,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77],"Archive806_field15":[919.018763504752,1,1,363.975133420089,500.880104165487,591.130887746164,1,337.935314665149,500.763909320992,466.556444707745,619.179332113188,433.429328229845,534.996346221678,1,360.580606807007,383.437678115576,1,407.291486658948,327.853238780594,358.198846429677,346.141524112883,379.395056841401,341.484250643313,363.732572669782,1,1,418.276398274138,389.691456063959,1,452.540147505984,1,432.393159390681,444.245785071374,427.775344969053,456.053502576316,1,475.394571725938,509.087973099574,1,492.503093642337,487.560748407001,1,482.150102111053,1,498.184696278947,515.843696859537,1,1,1,1,1,1,486.230613817805,1,1,511.15362445539,501.521898894297,483.079309231988,523.308905487713,523.790604556126,1,1,1,533.855871160079,563.235463581288,1,1,550.693208472883,1,592.777264544022,580.581174447101,1,1,595.950911771276,581.932767478598,1,1,1,599.571004042302,578.060021880186,595.748229706104,482.310279445071,1,1,1,1,1,1,1,1,1,1,1,341.193825323426,323.034181411676,411.248183428546,401.565766652333,415.306959652675,394.868637911749,378.234420242561,351.948932931623,385.126512242792,439.511428735189,329.382133910882,435.942603112292,331.011904090184,352.868901134584,422.871284648509,410.866005851023,410.148507534576,402.627536260692,379.075332994226,438.961104033853,345.506816558494,422.946005579374,384.075347927669,390.149918641754,413.474536477422,470.288704171418,443.107057897149,357.959062462472,325.291366375349,400.516162241194,444.546700457659,452.91282024388,465.824209104401,457.163923288509,466.569111052411,492.77041125372,471.488380081583,458.053951600538,466.296635322279,468.697728352449,399.523307739081,426.372436765885,440.230790719153,490.451294077694,509.160639963216,494.855517220546,497.251844693927,498.437289829664,496.022104950886,535.592448482501,499.075442745155,513.836961253676,484.703325011487,478.236630107002,484.537741599671,525.383120733558,565.636345678918,538.837431098509,582.757954721362,510.025025819866,520.139509473234,512.198807369455,534.634871085873,523.623971412643,549.962916944982,528.194368912592,505.350935586757,510.249933335992,504.77149659437,484.82001143262,523.80858179353,541.935263081433,554.058507962751,528.584336805494,536.246101900337,502.839983875599,550.021218207981,520.189133466396,527.254225396134,530.491588407381,625.689946299445,568.265815683956,551.200243954144,570.125213840733,558.623906981895,607.687339122698,582.003875156838,564.800808418568,630.636501741454,534.4150279112,1,565.880677541949,1,1,1,1,1,1,1,1,1,1,1,480.334930415308,462.333950509527,599.98433437623,564.89995244129,480.306965410325,475.954033786174,580.513601925844,587.949377323718,589.728729304058,553.678424054391,621.453163174626,573.747570669471,560.643040908987,546.932752901326,556.553946140068,557.216373579175,532.500050145329,567.190425876247,431.453423182559,463.501607559652,453.416245913033,480.382522762607,456.982602829018,497.218951386214,450.529507755814,423.64741968414,473.88694987939,489.517617735922,597.472491146046,676.141528174566,577.194253656481,582.315163639509,606.945072446343,580.846837580513,561.61106182101,623.675100631322,597.572978231961,585.043099004304,584.823892696485,610.777227654341,596.996214983506,495.76750918039,419.834501706347,360.025079432924,574.231043240832,568.950840859758,585.684188520544,541.39968445103,560.15733231055,544.129764360946,382.04569169338,397.015566031763,316.956785231618,413.918238005307,363.443639186859,1,1,1,347.348178840482,320.134741745562,333.776788100888,336.609175069306,340.012353007502,354.440516187484,372.629922313239,448.676455335414,476.017791814139,1,623.699080663701,675.43946533904,647.9594516351,648.646397294711,722.405839438971,662.371016997367,680.10836316011,633.661082520674,673.394132290648,746.392036403523,655.482697374394,712.149703104821,651.166032335856,637.281058122671,628.885187520422,615.194990944304,713.677468653393,703.968865201154,678.722576426072,712.059539383637,754.864496817278,810.487782583573,800.61496668725,804.965251994123,656.362225722011,615.239509015686,607.896555730881,615.200357280438,680.517165046349,667.851330745299,750.096457514178,628.547330067654,692.343339803213,592.266926023883,567.939864601509,522.407160581007,585.972315069359,542.634892119454,527.304340873853,614.747692672316,547.140954423529,504.620619916617,520.074916724615,450.159267040193,470.553078423765,502.760822288763,473.621992024747,589.628709711378,634.596521842387,639.198184298727,480.851679960857,484.849507224185,467.303782953186,439.217404254979,425.067248176754,423.297302510276,447.0140860723,451.700699454964,488.985737514359,510.210161320611,489.069958783707,591.079639139886,531.700071591363,524.398966724793,378.539196949192,398.680851560607,378.311181455083,361.554399517052,319.240413328124,347.672261837255,1,1,1,1,1,1],"Archive806_field16":[95.2257956319684,0.103616813294233,0.103616813294233,37.7139434433328,51.899600236111,61.2510988280483,0.103616813294233,35.0157804051865,51.8875604966033,48.3430920225034,64.1573892512199,44.9105657794366,55.4346165195483,0.103616813294233,37.3622134130428,39.7305903032757,0.103616813294233,42.2022459294707,33.9711078306383,37.1154229927134,35.8660816773857,39.3117067694903,35.3835098418291,37.6888100713557,0.103616813294233,0.103616813294233,43.3404674653554,40.3785868453369,0.103616813294233,46.890767972272,0.103616813294233,44.8032012662876,46.0313325684904,44.3247180515343,47.2548106286309,0.103616813294233,49.2588705796183,52.7500734589979,0.103616813294233,51.03160110077,50.5194910372846,0.103616813294233,49.9588571102362,0.103616813294233,51.6203106603796,53.4500800265014,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,50.3816667298996,0.103616813294233,0.103616813294233,52.9641096698645,51.9661009606994,50.0551385909978,54.2236011551296,54.2735132775654,0.103616813294233,0.103616813294233,0.103616813294233,55.3164441280238,58.3606638705929,0.103616813294233,0.103616813294233,57.0610753647366,0.103616813294233,61.4216911453239,60.1579711548315,0.103616813294233,0.103616813294233,61.7505343575321,60.298018917626,0.103616813294233,0.103616813294233,0.103616813294233,62.1256367824868,59.8967373600193,61.729533087827,49.9754541751491,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,35.3534168956825,33.4717724629889,42.6122262399081,41.6089650685702,43.0327836981267,40.9150299302497,39.1914453037258,36.4678268726804,39.9055819137204,45.5407736519355,34.1295270718998,45.1709833136882,34.2983986642811,36.5631510462033,43.8165749489169,42.5726262172125,42.4982813281184,41.7189822518411,39.2785780033118,45.483750760106,35.8003153032262,43.8243172936595,39.7966636171387,40.4260912766627,42.8429138481005,48.7298168545165,45.9133412874857,37.0905773421525,33.7056547759404,41.5002084042684,46.0625124618885,46.9293831337745,48.2672201027044,47.3698688842443,48.3444044687737,51.059299699799,48.8541234493136,47.4620907816785,48.3161714019175,48.5649650101266,41.3973319846946,44.1793531741777,45.6153116483189,50.8190001683632,52.7576029678405,51.2753517354622,51.5236515518634,51.6464835991636,51.3962298385082,55.4963827362122,51.7126069706612,53.242148477898,50.2234139308091,49.5533556122603,50.2062567053423,54.4385247289904,58.6094356226445,55.8326174940782,60.3835221900923,52.8471678757632,53.8951984400418,53.0724081927295,55.397161617891,54.2562472822485,56.9854048838398,54.7298173066811,52.3628535407587,52.8704720758701,52.3028139188693,50.2355046059215,54.275376021617,56.1536049722698,57.4097769736575,54.7702245370307,55.5641122203673,52.1026767261129,56.9914458749227,53.9003403200763,54.6324026314665,54.9678478701685,64.831998345788,58.8818929252193,57.113612765532,59.0745578368697,57.8828290714378,62.9666255591457,60.305386868646,58.5228599143384,65.3445446574723,55.374382168707,0.103616813294233,58.6347525116781,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,49.7707748035412,47.9055706295307,62.1684647545263,58.53313290203,49.7678771588411,49.3168402554589,60.1509695055127,60.9214408566121,61.1058116385437,57.3703938902888,64.3929963797756,59.4498949080782,58.0920452945774,56.6714289418774,57.6683463253639,57.7369849456428,55.1759582750781,58.7704644602954,44.7058287950648,48.0265595320852,46.9815464973426,49.7757061709055,47.3510810360469,51.5202432521395,46.6824318886767,43.8969955879949,49.1026556082262,50.7222556011806,61.90819556352,70.0596304853412,59.8070292156275,60.3376415892356,62.8897142515272,60.1854983221255,58.1923485366833,64.6232264583775,61.9186077151397,60.6203015586082,60.5975880995381,63.2867899622289,61.8588453453096,51.3698494360912,43.5019131777837,37.3046514368426,59.4999907952377,58.9528730509622,60.6867292113173,56.0981100213188,58.0417177174177,56.380992201623,39.5863571060589,41.1374877804173,32.8420520376848,42.8888887864736,37.6588717046012,0.103616813294233,0.103616813294233,0.103616813294233,35.9911113950059,33.1713417644473,34.5848871345983,34.878370046282,35.230996499311,36.72599678971,38.6107250881753,46.4904245020077,49.3234466591386,0.103616813294233,64.6257111929152,69.9868849715917,67.1394935223075,67.2106726424627,74.8533909878113,68.6327739997272,70.4706612854073,65.657942079366,69.7749540789919,77.338764280326,67.9190282714426,73.7906828241554,67.4717491960907,66.0330324154478,65.1630790588121,63.7445445162231,73.9489850217592,72.9430104705008,70.3270704801209,73.7813403466916,78.2166536291608,83.9801612452188,82.9571715238011,83.40793422422,68.0101621960246,63.7491573369137,62.9883039173738,63.7451005588724,70.5130200341281,69.2006266461405,77.7226045909119,65.1280713462085,71.738410575895,61.3688114941658,58.8481189127663,54.1301652214925,60.716583966131,56.2260983036776,54.6375954375645,63.6981968946877,56.6930021201311,52.2871805583201,53.888505545268,46.6440687255723,48.7572104720617,52.0944742547496,49.0752015196708,61.0954479270831,65.7548693209121,66.2316789204937,49.8243187447223,50.2385608658491,48.4205288299489,45.5103077722657,44.044113691824,43.8607175621596,46.3181750964455,46.8037870402993,50.667143867568,52.8663510263781,50.6758706071094,61.24578861078,55.0930670466124,54.3365498268114,39.2230252948332,41.3100393601411,39.1993990559519,37.4631147104668,33.0786743037939,36.0246918423744,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive806_field17":[-0.999999996073305,1.01712128966973,0.915037132271346,-1.00000011543643,-0.999442933684566,-1.00086139405058,0.742017786302666,-1.00558229725613,-0.999999978734081,-0.017687225070413,-0.999994111261928,-0.999997823200828,-0.182675635296531,0.848486293540246,0.338507830889012,-1.0050138286406,0.72983695906486,0.29583061245865,-1.06601099445852,-0.996975291053235,-1.01099434093032,-0.319625930661948,-0.51957599723634,0.109098074756979,0.777515303622921,0.609149471780349,-0.341443756686172,0.374607683727639,0.566219749157779,0.322608135396962,0.648405236528652,0.12442990730824,-0.173686820880474,-0.985589804557871,-0.56959785483453,0.623215685331341,0.356408238003549,0.145673826149774,0.654103859187462,0.345196231198487,-0.124361485189615,0.786350596727062,-0.67802568147903,0.617548653516459,-0.332237543147112,-0.0532760754578547,0.577329475043296,0.81733698479175,0.791014304188793,0.745541932525624,0.552432978713733,0.885587141212212,-0.687757848495127,0.349831015225905,0.832947973288058,-0.240740424459776,-0.477184567768464,-0.946175114325794,-0.444692584874039,0.275932960521913,0.477504957160316,0.614362434659844,0.428960854200659,0.0863288385071082,0.125765530969019,0.728535938095149,0.888052566685106,-0.173878458413042,0.782718974860144,-0.0345228984598462,-0.0587732016193156,0.752814545887857,0.473042743601746,0.311695855431482,0.216979296465819,0.428618364381214,0.472893059471508,0.626747054389567,0.36496936170489,0.0298532827329748,0.239113696935509,0.67074061421249,0.415809040001759,0.358901755543619,0.90955686001666,0.689332942497686,0.748709870602355,0.653271088851361,0.680679351724191,0.76826399116867,0.69095799717526,0.722307784380121,0.572093047067602,-0.978955136541724,-1.00002523961898,-0.946045294435719,-0.998971389894619,-1.00430661544698,-1.01268703017793,-0.996182782263076,-1.00201221359687,-1.00080993197748,-0.999304564742747,-1.00027090096282,-1.00517076042271,-0.999121113855294,-0.9997476751053,-0.998698879959196,-1.00030702711018,-0.999982149766021,-0.999986046789448,-0.999842033698081,-0.999999553358207,-1.0000736993793,-1.00017489042663,-0.999993150043337,-0.999989604642391,-1.00000357990799,-1.0016859767316,-0.979617325433796,-1.00044764767169,-0.999918050985258,-0.999999999670815,-1.00000163360657,-1.00126124613622,-0.999978724943195,-1.00635268669446,-0.999799966637933,-1.00008487375186,-0.999130820635783,-0.928889420404852,-0.703720427197275,-0.921367749221973,-0.999999545412224,-1.00000709109293,-0.550376930681803,-0.674737612458531,-0.984644412144797,-0.931914074994592,-1.0069106426739,-0.949579185265511,-0.75955652646207,-0.632371016799024,-0.93384931968136,-1.01930875045412,-1.0158174705899,-0.997590683831089,-1.00030344283545,-1.00207732903743,-0.367229339557544,-0.534297019183078,-0.204605736683006,-1.00596396192792,-0.999053331061032,-0.91184287027486,-0.906906899157732,-0.96163405843241,-1.01801358795675,-0.612830724361834,-0.999905586437038,-0.999980005156081,-1.00007216760242,-0.999965158290599,-1.00014301856439,-1.0000079482472,-1.00027791721182,-0.99999432376902,-0.999636240207607,-1.00000078138748,-0.999956950698956,-0.999999820100719,-1.00000052182734,-0.999998039829891,-0.999999975095969,-0.999999296458546,-0.999998275454975,-1.00000453700235,-0.230516926222549,-0.128567014741804,0.0166486173066216,-0.428544730952377,0.197396531465516,-0.867196291628873,1.02071745690021,0.3260357838681,0.726062920897503,0.506405916682171,0.545243733850911,0.688509781362467,0.940730972889158,0.893897920057088,1.02681578409146,0.956737744713206,0.852036877459494,0.84172933072691,0.859698054263534,-0.999906841911143,-0.999997261281242,-1.00000225909688,-1.01772200738714,-0.761486098351294,-1.00000133498241,-1.00000151602268,-0.999999495960044,-1.00000196760032,-1.00000001306143,-0.999999757620839,-1.0000054056752,-1.00000026564801,-1.01060053261006,-0.97292926510353,-0.915167813971978,-0.128952333017395,-0.568834700028011,0.135541393323363,-1.00000098818841,-1.00000140281333,-1.0000006353641,-0.99999995897354,-1.00000331430025,-0.999998720936229,-1.00000028557708,-0.999999116037887,-0.999999898842259,-0.999979466722422,-0.999999536984811,-0.999828252678376,-1.00000905557832,-1.00007326065595,-1.03598859184671,-0.989282658963854,-1.00003422820387,-1.00099346569499,-0.998749724937225,-1.00736761752031,-0.999716772439098,-1.00138464222929,-0.999970005436373,-0.999998708749425,-1.00000009053276,-1.00412314621928,-1.00011675210849,-0.996798297575448,-0.996426574368935,-0.999398757332554,-1.00066089628732,-0.99999990443128,-1.00000042748626,-1.00000208071959,-0.999999876547734,-0.999999578268625,0.733334239428439,0.717155240308888,0.57941631710404,-0.999989102210953,-0.999992060236394,-1.00000011024827,-0.999999625774962,-1.00000107097717,-1.00000028038954,-1.00000303650181,-1.00002857084699,-0.988416571267269,0.998223607532818,-1.00000067708138,-1.00000005666579,-0.999998117299886,-1.00000046395616,-0.999999995565284,-0.999999882036758,-0.999999876607505,-1.00001274585176,-0.999999934862527,-0.999999946089722,-1.00000083425844,-0.999999980034696,-1.00000227814374,-0.999998678731203,-0.999985165014617,-1.00001224785195,-1.00000000817894,-1.00000016565844,-0.999999595893129,-1.00000010947665,-0.999999980660637,-1.00000001563038,-0.999999999917731,-1.0000000002959,-0.999998682275994,-1.00007002418236,-0.99979889024525,-1.00000980131721,-1.00000000888036,-1.00000003558261,-1.00000000474753,-0.999981249791555,-0.999999993875343,-1.00000004414195,-0.999999993158722,-1.00000002014577,-0.999999978122643,-0.99999993814078,-0.999999893059616,-1.00000005344427,-1.00000034585631,-0.999999828961211,-1.00000002428399,-0.999999982055978,-0.999999989005422,-1.00000002414022,-1.0000000328204,-0.999999993900334,-1.00000003663662,-0.999999847006804,-1.00000004326722,-0.999999982317204,-1.0000000140792,-1.00000004366917,-1.0000000041413,-0.999999994968099,-0.999999998070555,-1.00000000158288,-0.72984779347523,-1.00000059129334,-0.999999695029092,-0.998930960722153,-1.02247213263094,-0.991299989272037,-0.999999971278289,-1.0000000216437,-1.00000003573048,-0.999999971695821,-0.999999605319438,-1.00000019358504,0.76744711759255,0.869170139554971,0.890731912476208,0.845447358020826,0.828380969171405,0.910508869486432],"Archive806_field18":[0,3.55198989955261e-11,1.94315117964757e-12,0,2.42307810458255e-10,0,-2.92876204360303e-11,-8.4777437784863e-12,0,-1.28264577838175e-10,2.99531607465307e-10,1.24586140399609e-10,-2.07152946911581e-10,-4.66002721173625e-11,7.72366839028727e-11,-3.0182728683309e-12,-1.1814661067425e-11,-1.96374898079285e-11,-1.18044814265384e-11,1.63878689198564e-11,1.06845706363556e-11,4.84313302192534e-12,6.77127775816705e-11,7.46270353034243e-11,3.17403005095529e-11,4.66788204072553e-11,-7.24971365129084e-11,4.24400941901966e-11,-1.33571252756951e-12,-5.48132167970484e-11,5.59294790238137e-11,-7.04387369279699e-11,-1.31702460260405e-10,1.06979204699472e-10,-3.45844646459289e-11,-7.08359324283674e-11,-8.33054683496114e-11,-1.43954946967992e-10,-4.49372108774168e-11,-1.06540417383722e-10,-1.41103131713063e-10,-4.61834159802534e-11,-5.32097069575886e-12,-7.88836551751503e-11,-2.12497814905549e-10,-1.69343906396976e-10,-8.49899599975201e-11,-5.08938832770676e-11,-5.31272427291743e-11,-6.004120584881e-11,-3.7132376848381e-11,-2.29771201056773e-11,1.18015605914407e-10,-1.11087784831234e-10,-4.364994558739e-11,-1.51234439435363e-10,3.86380455018666e-11,2.89649764849332e-10,3.78137158938242e-11,-1.28932061215544e-10,-9.91687195352712e-11,-5.9002570975595e-11,-1.07696497220506e-10,-1.50814816785312e-10,-1.68773365192934e-10,-5.54598281538877e-11,-3.82603361988804e-11,-2.68773766311483e-10,2.02822974394814e-11,-1.75735972923145e-10,-2.0164297337981e-10,-4.66783368565268e-12,-7.34612005862366e-11,-1.18481271332094e-10,-1.30294213867585e-10,-9.82730277576243e-11,-3.2017817487565e-11,-3.95827654466714e-11,-8.17195537864722e-11,-5.86216500526108e-11,-9.05554239682636e-11,5.4521431086516e-10,3.55440123661166e-11,-2.09781674314364e-11,3.47863928057246e-11,1.96607669941865e-11,-1.40612287359742e-11,-4.19263822143441e-11,-2.39781697587227e-11,1.1230692769461e-11,1.01049795872433e-12,-3.73078705894055e-12,-3.13159744618677e-11,-7.63854982045914e-12,-2.74627854029514e-11,1.66177133457965e-11,5.66327528936987e-11,7.68845859504582e-11,4.87286611248544e-11,3.20459367223786e-11,1.07981630284391e-11,3.8146173037432e-11,1.10430156954306e-10,-1.19040362663313e-11,1.09553457382725e-10,-8.11641041219407e-12,1.40506714041966e-11,8.33874954497741e-11,6.89100289927242e-11,7.43050030564168e-11,6.04685850543275e-11,4.11118456846572e-11,1.09183710750986e-10,1.4506951170328e-11,8.51809383777032e-11,5.90929230065964e-11,5.77323414917013e-11,9.42048868146752e-11,1.76148174469214e-10,1.54542406622089e-10,1.63906217192557e-11,-1.80969063224294e-11,0,1.26408175462225e-10,1.46059838395215e-10,1.55203243110456e-10,1.73453059504831e-10,1.57797256672896e-10,2.0307812323657e-10,2.18468580243052e-10,2.06004567273947e-10,5.12861812838229e-13,2.39697439980712e-10,9.47402017446458e-11,1.02784986722437e-10,-3.86515283636533e-11,3.58627570128322e-10,3.19841813895991e-10,3.1996794673015e-10,2.70877286181249e-10,4.29962808113299e-10,4.09946482915254e-10,9.25450263458277e-11,3.60476222974025e-10,3.74934282119737e-10,2.41575466919353e-10,2.07114867695247e-10,2.02418130535231e-10,2.94592332437835e-10,-3.0914356887058e-10,1.86460762340576e-10,-1.79796783944588e-10,2.7871137034488e-10,2.65193779226164e-10,4.35115035338397e-10,4.36313001760517e-10,4.03613618212523e-10,3.92184900884092e-10,4.00261908564994e-10,2.31648133319371e-10,2.23980828585239e-10,2.17356136186371e-10,1.78962118888609e-10,2.50355376864986e-10,2.5053092750725e-10,3.06376476499847e-10,2.43963444144829e-10,2.78165250521776e-10,2.13312744465994e-10,2.73108769760449e-10,2.26332560715841e-10,2.47055891280166e-10,2.36883552048502e-10,0,2.70190699563925e-10,2.59084769034458e-10,2.72155476604987e-10,2.34215800251169e-11,2.22583707934342e-10,-4.8286094332525e-11,1.57067302953805e-10,6.76460422376963e-11,5.01922762059062e-10,1.67001890064542e-10,3.14034724130783e-10,1.03158646536682e-10,9.15647268243617e-11,1.69548856396526e-10,5.52207812449808e-11,2.65163526166583e-10,1.43566090234682e-10,6.98369570816072e-11,7.11051567984396e-11,2.65690224988e-11,3.64025238512492e-11,5.22531682693037e-11,1.76833076109402e-10,1.43654047539137e-10,2.80946413923096e-10,4.41794305340431e-10,0,1.71396244346217e-10,2.71477961727466e-10,2.76269273556977e-10,2.8926460535102e-10,0,2.79931630765499e-10,2.9687845968037e-10,2.69567496746023e-10,4.48069065228443e-10,4.13898633247067e-10,4.6087857531234e-10,6.49466815425973e-10,4.20848415362481e-10,1.0735764429429e-09,1.53150932949851e-10,1.50433979232521e-10,1.74332050102447e-10,1.82214785638259e-10,1.99810779498493e-10,1.547070259518e-10,1.51796912313886e-10,1.77640736866747e-10,2.1294945745194e-10,3.05660442216591e-10,0,3.38708050121904e-10,3.17404881644443e-10,3.34743449151942e-10,0,4.64047241047599e-10,0,4.24867236018464e-10,4.42259484980863e-10,4.2336086293588e-10,0,3.83387332585013e-10,1.96452060052154e-10,1.24038125792633e-10,0,3.90928442281891e-10,3.64851135811742e-10,4.04946958804786e-10,3.52689491739094e-10,3.47218396358341e-10,3.20389349749481e-10,1.13504148923574e-10,1.23416311835881e-10,-2.55854436385522e-11,1.53824840705754e-10,6.49543360502509e-11,-4.14393542072213e-11,-5.20072785452062e-11,-7.88222535715055e-11,1.59763067537942e-11,-3.24058117762905e-11,1.37219582233424e-11,5.55228911377266e-11,1.42496057353037e-11,6.60438103792825e-11,5.50600325543617e-11,1.23465961061504e-10,2.59238625430186e-10,3.63369310841285e-11,2.84654822260295e-10,2.83008926298427e-10,2.95561211584753e-10,2.8191208652583e-10,0,2.8987051802624e-10,3.10199909508987e-10,3.23867497867775e-10,2.96061060990138e-10,0,3.20140705723636e-10,2.82336266251679e-10,3.64496199007725e-10,3.41867698700854e-10,3.71509959246851e-10,3.13736244538628e-10,2.69188400694771e-10,0,3.51463881998499e-10,3.22758118912608e-10,2.77413479110941e-10,0,0,2.33095261476286e-10,0,4.05098762406887e-10,3.99903320538261e-10,3.68232864359856e-10,2.77601837132721e-10,0,2.65081788749177e-10,4.19693852061166e-10,2.8868987036573e-10,2.86747733761645e-10,3.07461623790652e-10,0,0,3.01843059962092e-10,2.63038393803241e-10,3.04298641960113e-10,2.55073844046581e-10,2.41626978099521e-10,2.95901729419383e-10,0,0,2.69367647214631e-10,2.36772035563377e-10,3.10200216338594e-10,3.17021251702608e-10,2.86106802683271e-10,2.66018265879538e-10,2.19459741733353e-10,2.01623300061929e-10,1.81594866287432e-10,0,1.89116955416195e-10,2.24505578893571e-10,2.08534471252543e-10,8.20137221411821e-10,2.25095266066384e-10,2.04274122325036e-10,3.62028704499886e-10,3.5665340028328e-10,3.15331031582267e-10,0,1.63875855430272e-10,1.25075354350459e-10,9.48680045794336e-11,-1.49678973283282e-11,0,2.44145850425751e-11,-2.32613115385516e-13,1.13482333230141e-11,2.47896817897433e-11,-2.75714676749462e-11,-5.42610573814409e-12],"Archive806_field19":[0,1.42177565738558e-11,2.49722739422271e-11,0,1.40479976308695e-10,0,1.62472078555351e-10,7.0805219701632e-11,0,1.95159477612228e-10,6.06893859306441e-11,6.57370583571025e-11,2.50889303634422e-10,1.04004187127826e-10,1.51088183022969e-10,1.58662872230523e-10,9.6607884634393e-11,1.64048416172729e-10,2.05813545470433e-10,6.91514292095463e-11,2.32817925464574e-10,2.15922992578272e-10,2.81922340898477e-10,1.96848004912363e-10,5.7104957133905e-11,1.12160059639922e-10,1.87564945552524e-10,1.48372888914496e-10,1.23419813582275e-10,1.51620628331866e-10,9.22383673392826e-11,1.74761298885529e-10,1.86746505794683e-10,1.06485714211951e-10,2.14654425633538e-10,1.39305528639656e-10,1.5562355599706e-10,2.03467417008903e-10,1.16404071774557e-10,1.72632664261678e-10,2.10471464770717e-10,1.41438863234279e-10,2.19647208705437e-10,1.61939166867663e-10,2.165192276116e-10,2.40283936458679e-10,1.58908928336297e-10,1.23224431250233e-10,1.19332497580915e-10,1.40687564849785e-10,1.27935930042307e-10,5.89606660710931e-11,2.32530030563237e-10,1.93270397336672e-10,1.01685845024327e-10,2.57441618158966e-10,2.59418347368843e-10,2.05282182971064e-10,3.15339558784862e-10,2.02179444901902e-10,1.80957537867927e-10,1.68074393780124e-10,1.79178369773249e-10,2.26510533616891e-10,2.21213928241641e-10,1.19119013945592e-10,8.26942999466253e-11,2.66788965548937e-10,1.28217464975889e-10,2.04045867960601e-10,2.21081725744582e-10,1.58667313875535e-10,1.75295964991377e-10,1.88648943959239e-10,1.96111118382548e-10,1.84360695474763e-10,1.51995030154536e-10,1.66334951914849e-10,1.75732969834591e-10,2.16687720260281e-10,1.87053171629601e-10,-3.74060797569389e-11,1.04657459751267e-10,1.53269557706031e-10,7.06919134938743e-11,1.16785871335265e-10,1.63321303608543e-10,1.67946967028998e-10,1.65724516122048e-10,1.46666052846164e-10,1.39944339224042e-10,1.53228462403562e-10,1.55821169530828e-10,7.01502112240898e-11,1.14351701890012e-10,1.27389346234761e-10,9.13806624096733e-11,9.65939450535225e-11,7.70270038205845e-11,8.05363069925271e-11,7.27206409444101e-11,8.74615811490811e-11,1.09600803599221e-10,1.00278059303361e-10,1.1365043866633e-10,8.85303012368255e-11,8.72290830221484e-11,1.02312280447078e-10,9.98184802391384e-11,9.05739700579093e-11,9.54166977412001e-11,8.94107969114924e-11,9.3840103580569e-11,9.30765392503488e-11,1.03501672253344e-10,7.00769074750901e-11,8.04780390710129e-11,6.63361743883095e-11,1.32127267747212e-10,1.33565327133515e-10,7.96331394937398e-11,1.11119773267343e-10,0,8.12204422648585e-11,1.22960025943198e-10,1.1027465439919e-10,1.43002951618835e-10,1.19183844125161e-10,1.14003455309221e-10,1.59881131426314e-10,1.57315849358156e-10,1.95347746548243e-10,1.85430417034525e-10,4.64285270113682e-11,8.2506757201943e-11,1.64675866355489e-10,2.65743383876953e-10,1.69566141238687e-10,2.18497309861534e-10,1.68219942145385e-10,2.95957783783337e-10,2.93607782816735e-10,3.12832875022781e-10,2.23129340535545e-10,1.98651392326907e-10,1.6761972405307e-10,1.45720676588338e-10,1.28899034501657e-10,1.20080364375697e-10,2.60868861723848e-10,2.78891701249869e-10,2.20361237331526e-10,1.42972489426077e-10,1.18465174310342e-10,2.74647562505365e-10,1.38601970787421e-10,1.89535480766158e-10,9.56960288879872e-11,3.13785149894627e-10,1.20509158956281e-10,9.06735691182968e-11,1.03790929348612e-10,1.04738322890328e-10,1.00325066244343e-10,7.78778147776981e-11,8.59311695974529e-11,8.66097634895315e-11,1.03247804760539e-10,6.73187118617934e-11,8.52903646095929e-11,8.0718059044683e-11,5.61460957187551e-11,6.95060173707974e-11,0,5.55248183793261e-11,6.41321550070124e-11,7.55078195972234e-11,3.78136938895618e-10,-4.46686764230501e-11,2.14954860617119e-10,2.73769084714354e-10,3.95749751412192e-11,1.88099430115283e-10,2.60067928008349e-12,-2.39444189385027e-11,4.12572353160613e-11,6.08206266560161e-11,1.6220621129895e-11,7.50130657355087e-11,-3.61585226360944e-12,1.11358770746306e-11,9.66468387905226e-12,2.68846213187175e-11,9.71119716259022e-11,8.46989740828255e-11,5.61008927398867e-11,1.19473572709462e-10,9.62709789741115e-11,6.11228903280727e-11,1.82473090055457e-11,0,7.66394773149761e-11,6.71793099476106e-11,5.48580218198583e-11,6.97134142332576e-11,0,5.31391983718026e-11,7.50050344262991e-11,5.18513537104061e-11,5.9530057258013e-11,5.94210578381291e-11,8.33971319796029e-12,-9.70847328207586e-11,4.27938248945324e-11,-2.39923849188399e-11,8.1190857592752e-11,6.80988521393503e-11,8.84918905598363e-11,4.72968172164342e-11,7.84674829835635e-11,5.27101849740666e-11,3.61378106314073e-11,6.69304262921827e-11,4.7557184022376e-11,6.71833338406689e-11,0,7.34799758468187e-11,7.33561889693892e-11,5.96535429157247e-11,0,1.31022206179394e-12,0,1.2868020697565e-11,6.13639774969227e-12,8.90869379934669e-12,0,3.63980587106324e-11,9.55906884052622e-11,4.55395147741237e-11,0,5.80085282042778e-11,7.62762774911418e-11,3.25552294057156e-11,1.02665363668916e-10,8.55325351664514e-11,1.05627610897671e-10,1.26099357848218e-11,2.93909448076188e-11,6.66924813839973e-11,2.0040319694449e-11,4.28127858782013e-11,1.53642865804329e-10,1.53663340690123e-10,1.69110271394377e-10,8.44118942985773e-11,9.73629410560582e-11,5.53477067397704e-11,9.87711397822978e-12,7.39487897090674e-11,2.3028018072973e-11,5.78246018993117e-11,1.10343822754885e-10,1.9919480370043e-10,2.97280544358405e-11,5.59237900786622e-11,4.56032590609409e-11,5.12375190758243e-11,4.79383808416622e-11,0,3.20289404518516e-11,3.46000086406387e-11,4.94798377873551e-11,4.3615788058868e-11,0,4.05490509212829e-11,3.25345013322863e-11,2.14533809471176e-11,3.52800776997015e-11,2.3135768608212e-11,6.15474419664688e-11,3.23660830092139e-11,0,1.74728930081455e-11,1.80656260803969e-11,1.7477040234343e-11,0,0,9.78945291665901e-12,0,1.19197052554416e-11,2.52912052987053e-11,3.98372557007073e-11,4.10795097353229e-11,0,1.84999873534325e-11,3.00391272319099e-12,2.01501103424437e-11,4.14284011096259e-11,2.51903167716708e-11,0,0,2.16707692117518e-11,4.26359584791472e-11,3.0533905256255e-11,5.82661223487299e-11,3.91322713619865e-11,1.41067637643352e-11,0,0,2.49951947119951e-11,2.20878981647149e-11,2.64270980287024e-11,1.95944661585788e-11,3.93357624884241e-11,2.01726653538452e-11,3.68654238390469e-11,3.82825026320498e-11,2.87067297648605e-11,0,1.74779154890195e-11,1.47849468713015e-11,2.59929006073699e-11,-5.38659796286052e-11,5.70341402248533e-11,5.60512923474598e-11,5.77710627408093e-11,1.4233854350233e-10,1.30771296298191e-10,0,5.40807948222261e-12,1.10763633125316e-11,5.62655022148325e-12,3.97484345599251e-11,0,7.68414596877107e-11,5.48069269992669e-11,3.71002352873475e-11,4.93581278192654e-11,7.91764570554336e-11,3.35305493566753e-11],"Archive806_field20":[0,0.77878622728808,0.0748307584532468,0,52.3723862459113,0,0,0,0,0,28.0369951643216,12.5353317845766,0,0,19.0362420742861,1.98202362477497,0.285015681058729,1.73794746099443,0,1.73493067898332,6.99522121864118,5.87030164108139,28.0660445283936,22.6671577600897,3.02614739922888,8.04055072761899,0.288829505170727,10.515716745001,2.06534496741113,0,8.29299700099949,0,0,17.5523212675898,15.2649364947666,0,0,0,0,0,0,0,28.3061726476984,0,0,0,0,0,0,0,0,0,51.6817094271712,0,0,0,61.4813944360809,92.5091683955937,104.731640314377,0,0,0,0,0,0,0,0,0,3.90505085415195,0,0,0.38790410148678,0,0,0,0,0.208577618069982,0,0,0,0,0,5.45929890014482,0.924615987130314,3.72451507115929,3.74850954776636,0,0,0,2.46084277536727,1.94704611616116,0.949366521510725,0,0,0,7.01196028104747,8.00749385633732,11.4985958884981,5.80984300012614,4.0028189590312,1.26720056858491,5.23883949312123,18.8716258337816,0,19.3294350887977,0,1.9445991990492,13.2068851841905,10.6648141068378,10.4029476339469,8.91752493263272,5.71855396141917,15.7973610152928,2.12821227474808,13.6633412567812,6.33218948961352,7.16916427914102,9.51783055207989,35.9158026868345,32.1245000901256,2.01660132806023,0,0,15.7595386853011,27.7832887555095,26.3865648182186,38.3671441136148,29.1129640633909,35.7326236960255,54.0773771273324,50.2515181408129,24.1002221972017,68.756010844268,6.69382995823357,13.0003290566162,10.0397813865893,147.897990759604,83.3204105040621,108.36652172387,70.3912822527579,199.149310210059,187.829363464512,130.633465046655,124.442867781662,115.216537777932,62.659033313663,46.6059206275577,40.2606803966255,54.4175085563022,0,114.170955793667,0,61.4550008101239,48.3701570950931,185.506163610163,95.4102171202684,118.89855604382,57.6975760402255,180.157417698898,42.8903791217682,31.3083680014588,34.7382158630404,28.8894082492634,38.5817046418521,30.0326841663796,40.4751171550948,32.5020971531282,44.2184462294205,22.1261828392219,35.8488941236646,28.0963435051637,21.2043513516275,25.2167416225014,0,22.9373189139931,25.3882480374571,31.6522336155713,50.462726048065,1.59591927604491,0.449854453992108,96.3058783117229,3.30510358477566,149.56288252691,0.547255981496626,1.05452086490324,5.94892202497624,8.0338627747425,3.58417498131247,6.0094066070188,0.885358894308899,2.00293285791253,0.809569653444447,2.83377484797768,3.85588702586944,4.73565721647865,4.38331618277207,32.5961965677777,21.3023802192781,26.3857678504518,18.1298100772569,0,20.2482804992993,28.0228088586949,23.1913729098899,31.0422221670807,0,22.7238489821502,34.3260845299343,20.626970064568,41.1863020783567,37.8390529926513,31.9711992818205,0,60.0655932760864,7.61169569387157,19.1536323977071,15.7713517180863,23.7417899813627,13.1946603006577,24.0917762510225,12.5265192152803,8.36340411209617,18.2507683892352,15.5254637527279,31.6286129161079,0,38.3599219094622,35.7774669825022,30.7828628625693,0,6.96673990312337,0,9.98700408623396,5.36340109600747,7.97858989666536,0,21.3215049176266,28.953315821055,8.60294816477882,0,34.9605596863797,42.6703131781929,20.3036312845341,55.3498394915013,45.844428718821,51.9986680434392,2.22778611078581,5.46769069810957,0,4.66852298301005,4.24759945341908,0,0,0,2.03571406744659,0,1.13799016709686,0.862794910728657,1.52067303379123,2.15838394415762,4.81423579136107,21.0965075783363,80.11462292747,1.71624653828181,24.5060346215599,19.7509026717764,23.3308600119014,20.7400109284557,0,13.7202913564589,16.5516904301994,24.6795686712225,19.9347484446692,0,19.9485086932823,14.2377582215903,11.4035750946583,18.4839223312024,12.9356866535975,29.7507391831873,13.3649019557928,0,8.90050213378617,8.33781422432529,7.01163432690553,0,0,3.67365599673844,0,8.41801615504583,15.5670490840205,22.3551273564976,17.4435136939494,0,6.99316886861781,3.61018775961588,8.42096082947342,17.7032707844282,12.0254469514205,0,0,9.28856425310168,16.3759140844832,13.0831237691169,22.8270669160649,13.8645440688301,6.26262417138586,0,0,10.2571282394628,8.24044087530911,11.5510878547801,9.22410217220605,17.1667240614309,7.65452396694773,12.2069480082858,11.8463921572221,7.91057847224635,0,4.83530065207061,4.79748324475212,8.27998820389063,26.1879328250147,19.6254150973636,17.5912205742638,32.2894480402212,77.5633502067594,63.4300699432571,0,1.42825291224164,2.15858979284075,1.13041346854899,0,0,2.88609357541648,0.580313387385837,0.915924953700828,1.88705452663483,0,0.0265764059547173],"Archive806_field21":[0,3796.8996107854,4393.82742584696,0,3637.5686481192,0,5281.77570123248,2556.36548769155,0,4790.49680514886,1497.37932426409,1529.56274080736,5485.50660846552,4778.52029062014,3858.16144117442,3490.36124102429,4413.96793256623,4082.28684823952,3153.94171923339,3025.34829149579,3305.02942533898,3657.13366340058,3468.49253700009,3738.11018761806,4275.60976827023,4093.63236733457,3984.41968986898,3954.38266677474,4278.46483553332,4444.03154194483,4112.81364625772,4221.48343594348,4363.2509729881,3898.5620925809,4490.60878197025,4856.49928992742,4744.25926025347,5159.5866196638,4616.72110469791,4985.75838560599,5112.39120510899,5080.90558472963,4899.14705840723,5135.41710633084,5133.56942940515,5403.75672049931,5020.64672888607,4934.20176855172,4857.19750379692,5005.77171036019,4472.76410396783,4505.24525186389,4908.64017698887,5383.3578263538,4686.32698865778,5252.62889644422,5094.02724820388,4476.35636312061,5289.68578122022,5285.47494469877,5254.66594813375,5303.1994135825,5147.49445018235,5412.96849802045,5634.0143677177,4746.04198131775,4630.54040122322,5671.80368751652,4669.7559941158,6059.36865937444,6136.51516752689,5180.21821641817,5451.86663857604,5610.73596757332,5651.9579362951,5435.76708272971,4932.53996910784,5227.40120080429,5388.46668877449,4835.20235158246,5063.14473121611,2254.17632051557,4250.83722089341,4649.05457876683,4062.37055593659,4470.36748448155,5288.07052641181,5330.57774823952,5293.75549930929,4970.5826019241,4848.27351610076,5048.18031327152,5087.40931439888,2864.84823794493,1018.46381480719,3747.72051892603,3138.3223200258,3512.72163840984,3343.60630044671,3028.32725397509,2716.88778537648,2615.75951243271,3210.2690522136,1847.4628698835,3621.43111482033,2227.00382495812,2178.90284235675,3273.23651977956,2862.65817512667,2121.9946624447,2461.47048419916,2079.39914816683,2607.8738722532,1696.29355958135,2680.4081034393,1523.42041326127,1852.9870241522,1719.37407335174,3748.46594608718,4098.81723453072,2491.5271317168,1432.08671174689,0,2097.12205471952,3584.44056362576,3021.87610991793,3976.83228474442,3398.92093356797,3193.41404038603,4320.80230375983,4432.92240315537,4627.84603973005,4683.50358834413,1173.82512428289,2036.99843633528,4223.05086532993,4826.28211631608,3982.74724717987,4369.88189144379,4031.66925620392,4533.13029437246,4831.62480316919,5155.28955915441,4351.25226239643,3805.23683307427,4133.58356887988,3967.25850696924,3578.601427594,3416.92733226267,5596.8869199563,4548.30556026749,5515.29276847852,3675.23811155091,3193.01645314189,4151.45827821701,3100.49786013504,3623.44483603043,2914.14454362266,3799.00466498269,3257.64277713535,2528.1725239963,2910.09847790657,2705.1192285906,2756.05614910064,1926.32779845548,2636.09347203419,2315.62285378858,2838.59073007067,1723.81092238986,2299.50918237626,1948.34536792544,1196.90787983267,1598.82182615382,0,1341.96357057628,1573.96408002847,1821.04581370064,4451.28661675212,3335.27592417635,4306.92084138374,3831.66390488346,3744.11305588069,2726.19977738048,3494.20522383553,2961.45058727643,3794.47177227865,3880.81320601747,3472.69993850601,4126.79263026124,3026.01834976347,3566.90450066213,3726.10329468393,3799.74956177186,4345.15402540642,4178.65845717712,3958.90477472189,3032.55992338258,2525.53245730772,1397.53046210266,1702.51082539203,0,1982.14680216126,1522.17932845043,1205.87042154931,1703.29064553361,0,884.632137824339,2158.54600077894,732.50954225645,2387.92208605989,2551.47629318492,1477.11098452452,1786.66778561175,2306.59781472312,1389.44913902658,2178.78002596424,1800.12905076474,2347.31722280703,1168.41298117806,2123.60741813532,1438.83388726258,1014.56735339914,1559.20400670955,1125.59872362938,1871.91036148808,0,2416.66369068103,2200.80703079291,1851.81476388875,0,845.638700546843,0,1052.20433056211,745.584204653366,1511.98300507006,0,1863.79347049235,2462.39869089721,1249.68378338185,0,2334.73624729186,2582.21386261734,1867.96263650597,3224.93989040312,2805.80620598382,3011.6154259848,489.950137280932,822.080951806647,308.884042221505,461.403227145283,788.020687670986,5200.86089037876,5157.60667612884,5230.90449104197,1267.32223037524,628.404263971336,568.158087513868,212.937103761946,904.199385984196,474.013932906551,1148.29493299529,2954.45024538502,4577.61468493484,3867.69592688687,1208.85991904168,776.552987151244,1128.50599499033,929.937353740779,0,471.773401991069,744.908746862846,1407.46873195164,895.895004007229,0,1074.48908477541,561.167188867894,740.203313033044,1217.59291282525,914.389024604597,1666.24136007445,440.87559152371,0,411.426081733923,348.370537578375,342.686140085953,0,0,214.633883416382,0,584.382949886434,1372.57887376489,1579.93120354771,584.684426260335,0,242.455906055594,513.246843549732,292.159188787996,748.846407317333,416.970608453329,0,0,359.483404495759,685.050801559269,439.478201262883,1022.97320599958,821.339529738756,310.733139146632,0,0,442.400044189133,446.093332263004,308.492223023367,308.71988550292,627.833576286887,281.182735393886,783.647324685863,895.773257461666,736.791989597773,0,258.002577403153,315.406388559789,601.812043561394,1180.89163482381,1358.47364814096,1457.724802082,2144.90637126337,3381.81778524152,3573.94970660265,0,191.393688000262,201.139839913747,276.976552599251,108.758336663379,0,4277.34776220887,4408.6369513576,4363.75360605256,4334.64635013608,4506.81488640516,4423.90124564137],"Archive806_field22":[0,202.732919590036,1698.7934253788,0,1412.45768721581,0,1166.78254423721,955.11146419671,0,2084.75678962021,1144.35322805355,1045.58207003238,1359.77590366679,1656.74342001977,1607.66238664691,1486.51030187304,1717.36508443429,1713.12219613477,1274.84424334535,1239.71565649156,1407.90834565067,1615.32902591636,1467.73968847853,1587.66718775226,1689.70675088085,1672.82378744214,1745.78360046531,1655.82188317004,1722.04336175223,1816.34825665081,1666.0473036037,1788.3544477177,1893.42686226586,1548.33197493994,1709.75147821046,1715.01174695837,1835.28224723673,1735.4806287364,1732.87903565107,1787.82682513541,1998.2166039862,1483.8906665387,1648.53822289523,1517.68815602969,1830.90982190054,1657.68508460384,1648.63468433257,1590.09076685007,1644.89671692358,1579.42744856903,1756.31814487084,1699.92525191958,1434.65631397389,1341.1383094031,1691.48697799833,1481.69330731993,1323.4401252881,1316.04834130689,1008.47684487675,1544.61327627106,1453.16260920484,1248.19371333044,1617.71111087576,1428.00901634373,1160.8909350687,1702.16901457402,1689.66685535383,1150.828643325,457.261935085447,510.446903108918,960.428499985512,781.427215862398,958.60029828972,779.152298924911,1001.99101638376,1155.79741907147,459.176849035058,727.382595029507,556.009120322523,305.703942177282,394.362820562515,39.5587290318301,240.973269457736,339.888698258082,262.889625091205,362.949860577324,975.505628352363,1069.77153210959,891.923680657166,602.063448131603,510.611031536594,629.515601298473,578.623576549484,1102.22566468523,482.20073721736,1552.39957797752,1330.00922795142,1437.73517554543,1388.85729454178,1261.44918217099,1104.30622103863,1173.71771001228,1387.05141772484,733.767153809544,1450.30820443769,837.777992329717,981.973186489573,1380.21465557063,1284.83036748254,1158.50563660567,1201.19008550523,1060.6191371076,1313.72053568301,847.495354061938,1286.78396742957,923.12535585368,1038.45766778899,1066.03312514567,1447.42123046049,1533.3433771337,1066.95968750386,622.964178794332,0,1238.49467979592,1438.99413786486,1408.12098008704,1484.74073006116,1432.69119473672,1440.43311140238,1447.50766160143,1542.50343018008,1652.96977083398,1513.48904639232,828.413894512678,1182.75863559685,1688.94535573349,1178.85577382208,1208.4236424084,1216.25830270293,1338.29200255517,919.192874994558,1018.53837438099,705.536841951776,1092.54167160325,1022.40720537469,1391.16352595789,1431.59998724641,1442.47081334816,1358.02758167782,781.189702814298,550.684493813244,312.043209201638,1373.48323829079,1424.27959166996,828.139988145091,801.080000006563,874.467551832882,1086.31482047672,487.389104474608,1437.22644453073,1419.11100604304,1438.34724647216,1406.35976904727,1439.5182700428,1343.72915487296,1388.92978530976,1402.05889808267,1425.57853708029,1247.6271602541,1398.67103987639,1334.43279475609,1067.74749356351,1245.08975946111,0,1168.7710937792,1257.7088638628,1317.59278941761,171.755346771175,-229.512485152731,203.556508015848,106.84733344771,71.5772613870022,483.927526443722,146.197270299547,38.0833359622217,187.973778943961,172.574187441672,117.777744580004,260.310694375776,83.4832704667352,152.107684541065,188.12748283116,200.820276693117,343.80708756917,289.946560628801,233.563501093605,1425.95772976085,1350.06577735846,1179.04675010241,597.868230623426,0,1268.63146298084,1234.61382934756,1103.96850056958,1267.26284750618,0,921.843756023666,1342.21682300136,812.955730635964,680.420723961288,895.579854999859,402.182247016042,-4.4497243271612,205.978061674326,70.0898123167616,1291.41862044517,1173.33643748928,1353.62777395309,946.295308608035,1338.37280706391,1052.12893055229,800.165333428777,1142.70927657123,976.725940812594,1251.35317228956,0,1251.80465483701,1284.32528686153,1118.38157158854,0,350.594048435557,0,525.732276595251,344.728633166959,662.73817146028,0,936.600954225088,1393.97254938278,906.283838953371,0,994.425171754612,1160.25916671256,849.355605265369,1253.37926741466,1265.87983322087,1344.48375594047,383.808714807243,633.986271233266,144.129046224496,432.194078484104,539.930980143312,1340.6555979233,1430.5528446821,1385.07489455541,721.189006521293,320.443163072281,351.282549196122,122.217461973137,550.062166585869,319.579290007079,740.125015651278,1375.19937478696,1400.89463198816,217.338356348913,1065.34467000511,758.643076704941,955.303046054128,914.056707365182,0,581.213746112492,586.378037841482,1001.22984395946,771.431003417414,0,815.279151283979,513.534623040569,500.098618154008,805.810362292227,538.698597539101,1128.9732765644,484.126047417062,0,301.132384285164,281.653087274545,311.610408315655,0,0,218.863927012324,0,321.015533674647,736.095684437633,916.400728812646,641.05991939292,0,292.71355757972,324.217603838118,365.693913088836,832.150779518382,521.698752431798,0,0,456.010096266664,753.316789764775,565.972273065659,986.386909069047,823.145729668751,383.569849221391,0,0,523.172792410587,485.648552119145,421.250702833943,402.272287909865,721.581865389051,345.897924847013,767.216936552673,813.158575666385,666.539183234605,0,277.943447609417,349.043457939706,590.987224411046,146.271570745944,1125.06917438344,1130.62131547215,1111.7767437511,1129.47588489408,1279.77568999974,0,189.597836789661,179.694457905282,200.673989286278,12.2673115762834,0,1695.53421693167,1701.04079294493,1697.54561198135,1696.40585440537,1704.92722100908,1700.04123877624],"Archive806_field23":[0,0,0,0,3902.17149648177,0,0,2728.96361567911,0,5224.46844301016,1884.59256904248,1852.78278360937,5651.5284003278,0,4735.17275227735,3793.72303554428,0,4611.0425198489,3401.84894037222,3269.49953262068,3592.41219963819,3997.98880613061,3766.25812609284,3952.07510561205,0,0,4350.09892354981,4444.92497001612,0,5272.42347421861,0,4730.55877990156,4756.36671589056,4194.77273452688,4805.08244985986,0,5778.09394446183,5861.86123642444,0,5966.38782008657,5489.026637804,0,5169.07343459607,0,5450.29961217317,5652.30099464453,0,0,0,0,0,0,5113.99913241823,0,0,5457.61169200572,5263.13664753882,4665.80641757746,5384.96065080293,6163.38860579012,0,0,0,6006.85914366294,6294.11023003419,0,0,5787.37968652682,0,6080.8309128854,6211.21898703241,0,0,6780.21885234802,6737.08707541343,0,0,0,6513.47204214695,5195.46857693296,5942.56172893998,0,0,0,0,0,0,0,0,0,0,0,0,3069.5694881118,1126.84785709721,4056.51988010462,3408.51749750651,3795.56263865495,3620.58388619693,3280.55178230251,2932.74128899099,2867.02129215649,3497.1043769114,1987.84639537564,3901.0456556221,2379.37344710958,2389.95584382114,3552.33300942782,3137.77005225444,2417.64278947303,2738.92215407808,2334.26942990646,2920.08009812336,1896.22261758311,2973.28111348672,1781.283295313,2124.13635142996,2023.0357950422,4018.21168772416,4376.23635493855,2710.3709013416,1561.71595305386,0,2435.52663386665,3862.50155766637,3333.84761473196,4244.95583681245,3688.5318992958,3503.24717680026,4556.8202706022,4693.62523690528,4914.19047562628,4921.97673253155,1436.70978385316,2355.47885146764,4548.26285803906,4968.16867686133,4162.03836292392,4535.98412740413,4247.98569624745,4625.38493611052,4937.81517056749,5203.34437396544,4486.31737120767,3940.19591510209,4361.40448443724,4217.65557918184,3858.38181430236,3676.90512613005,5651.14152597163,4581.52124095114,5524.11307690568,3923.49734069772,3496.27321948419,4233.25190317579,3202.31418619605,3727.47179452295,3110.03509792303,3830.14158794696,3560.59774704762,2899.22961466702,3246.15402477273,3048.85516889295,3109.35014862953,2348.69044975236,2979.61654274873,2707.00542198954,3176.45580769309,2127.93271208333,2691.47230296387,2361.51657975062,1603.95548031007,2026.44509940456,0,1779.57638060513,2014.74427942082,2247.72298433813,4454.59902164281,3343.16339284089,4942.04751063025,3833.15335365696,4536.36171943556,2768.81763159644,0,3435.72017775642,0,0,0,0,0,0,0,0,0,0,0,3351.08566526893,2863.73738253166,1828.45361752272,1804.43607029061,0,2353.36604339041,1959.92377800211,1634.8914104054,2123.00592270294,0,1277.64233249822,2541.82352601958,1094.28846721082,2482.97085175977,2704.0884880799,1530.88452223474,1786.6733266575,2315.7764228821,0,2532.75432183488,2148.76313141937,2709.65058538987,1503.55036685805,2510.16936421579,1782.47531305212,1292.13446490856,1933.1067288955,1490.29059249944,2251.65120816826,0,2721.63154885588,2548.14501731347,2163.32966961238,0,915.434868606712,0,1176.23483195647,821.421716753187,1650.85265591185,0,2085.89248239339,2829.5877405313,1543.71628066676,0,2537.69083354093,2830.90617404281,2051.99643166796,3459.94174585327,3078.14882968524,3298.10006579809,622.382733198466,1038.15012567335,340.855590396695,632.206184323441,955.249740913847,0,0,0,1458.15610231911,705.390487416101,667.984312523237,245.51846808271,1058.36898892746,571.681844377592,1366.15017180962,3258.82641036156,4787.17682707296,0,1611.30430700528,1085.62141637214,1478.55662405246,1303.94905811603,0,748.585039588918,948.012787052793,1727.26067281596,1182.25786156773,0,1348.77977736168,760.674978504824,893.308218088608,1460.09001138279,1061.2744542803,2012.69494191725,654.789521135646,0,509.855012328208,447.984924996287,463.179055201829,0,0,306.54383447992,0,666.749131966731,1557.50108229606,1826.46459142029,867.648372650715,0,380.08695475143,607.074441112697,468.069470979987,1119.48464107603,667.857826638899,0,0,580.666449870313,1018.224330125,716.565212150553,1421.06766713477,1162.82737987346,493.640469365752,0,0,685.147845225568,659.434437427204,522.129874939167,507.080823267034,956.480730580352,445.767994697979,1096.68817683997,1209.80849640068,993.54764290521,0,379.233292335574,470.438652190523,843.471182194515,1189.91614225765,1763.86827734988,1844.79434019215,2415.92029451139,3565.44629845032,3796.17469593267,0,269.404683555539,269.717135907975,342.032250914785,109.447990968745,0,0,0,0,0,0,0],"Archive806_field24":[8267281.42217314,8995.77,8995.77,3274236.58596644,4505802.21464876,5317677.50606031,8995.77,3039988.36560531,4504756.9525525,4197034.46860859,5569994.86044386,3899030.5480102,4812704.08145059,8995.77,3243700.20529627,3449317.16166176,8995.77,3663900.53694196,2949292.3298253,3222274.4367467,3113809.53836895,3412950.67048217,3071913.7774096,3272054.56524565,8995.77,8995.77,3762718.27530254,3505574.70971648,8995.77,4070947.0827299,8995.77,3889709.41145191,3996332.90597151,3848168.61501226,4102552.41687094,8995.77,4276540.22649504,4579638.31576995,8995.77,4430444.55469493,4385984.35369725,8995.77,4337311.42406754,8995.77,4481554.94524526,4640411.25289812,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,4374018.76886379,8995.77,8995.77,4598220.44026707,4511575.65241635,4345670.35760984,4707566.5527192,4711899.80674786,8995.77,8995.77,8995.77,4802444.6301057,5066736.68622064,8995.77,8995.77,4953909.4439841,8995.77,5332487.93306718,5222774.71165599,8995.77,8995.77,5361037.33358469,5234933.33170095,8995.77,8995.77,8995.77,5393602.85103362,5200095.00302912,5359214.05234328,4338752.34252359,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,3069301.17802972,2905941.19811771,3699494.07104102,3612393.27667806,3736005.88843474,3552147.44686738,3402509.85058542,3166051.65239831,3464509.52503834,3953743.72527315,2963045.91877149,3921639.39079947,2977706.95645736,3174327.47475946,3804052.81630252,3696056.08945446,3689601.63962432,3621944.71186785,3410074.50828947,3948793.13083462,3108099.8551924,3804724.98861077,3455053.49262728,3509698.93361993,3719521.8310075,4230609.01632412,3986089.17821944,3220117.39532803,2926246.31489838,3602951.27680446,3999039.871576,4074299.56096529,4190447.4455351,4112541.50620107,4197148.41213194,4432849.28244388,4241401.02488651,4120547.99618958,4194697.2831331,4216296.96378111,3594019.78605999,3835548.37548544,3960214.94022764,4411987.0377253,4580292.0101619,4451606.41614707,4473163.22694229,4483827.21873099,4462100.77105403,4818066.48028542,4489567.89558358,4622359.12093698,4360279.63003859,4302106.73001767,4358790.07975008,4726225.71600132,5088334.46936804,4847257.59755304,5242356.52634379,4588067.82651957,4679055.39513403,4607622.66536992,4809452.33426816,4710400.81331471,4947339.90936617,4751515.05803283,4546020.78582328,4590091.04280591,4540808.28591874,4361329.31424522,4712061.52584078,4875124.98157007,4984182.90417607,4755023.11950476,4823946.596092,4523432.8417486,4947864.3741188,4679501.801163,4743057.74319178,4772180.31624746,5628562.84822215,5111988.57675526,4958470.61855537,5128715.29491205,5025252.18371052,5466615.53465979,5235573.00001963,5080818.1683475,5673060.92327072,4807474.67563274,8995.77,5090532.42261154,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,4320982.55698211,4159049.88197509,5397321.07565166,5081710.04517278,4320730.99022924,4281573.01851265,5222166.84479645,5289057.37004739,5305064.01121157,4980763.75675577,5590449.72169141,5161301.18380131,5043415.84811784,4920081.25056716,5006631.29206844,5012590.33695234,4790247.97609585,5102314.61738476,3881255.76066297,4169553.85623689,4078828.26249708,4321410.68679218,4110910.3890512,4472867.32631157,4052859.82998452,3811034.74857199,4262978.00711652,4403587.90010027,5374725.11167687,6082413.67490692,5192306.75121536,5238373.27961339,5459938.27436064,5225164.55610165,5052123.94159758,5610437.76000623,5375629.07038973,5262913.15872995,5260941.22920226,5494411.46121609,5370440.64086218,4459810.48605967,3776734.6154149,3238702.80881031,5165650.39185458,5118150.90568098,5268680.25256745,4870307.03939404,5039046.52527928,4894866.21034527,3436795.17196455,3571460.71844156,2851270.33988304,3723513.267901,3269455.38608797,8995.77,8995.77,8995.77,3124664.32676784,2879858.50575248,3002579.21709432,3028058.71881321,3058672.92481429,3188465.36230388,3352093.07624776,4036190.19661266,4282146.57106788,8995.77,5610653.4788621,6076098.07911298,5828894.19623548,5835073.80139184,6498596.77824992,5958537.32357441,6118098.41006482,5700269.356307,6057698.73343624,6714371.08931772,5896571.58455965,6406334.93469925,5857739.85870593,5732833.82422818,5657306.50334059,5534152.64368704,6420078.36218814,6332741.99851058,6105632.19133637,6405523.84260114,6790587.39453396,7290961.67993183,7202148.09887617,7241282.26493117,5904483.61928329,5534553.11801804,5468497.59914719,5534200.91801264,6121775.897809,6007836.96557864,6747695.20961232,5654267.2154027,6228161.44590155,5327897.04511786,5109056.39578631,4699454.66293981,5271272.17273148,4881418.68348142,4743508.57050278,5530128.85131084,4921954.18357455,4539451.03402731,4678474.33362379,4049529.22966216,4232987.26629215,4522720.72232058,4260594.50719646,5304164.25796032,5708684.35329409,5750079.85036896,4325631.11704148,4361594.65160211,4203757.35157678,3951098.74867481,3823807.199131,3807885.17500287,4021235.90506661,4063395.60113598,4398803.22795954,4589733.26290312,4399560.86312771,5317216.48538541,4783051.55301943,4717372.49289389,3405251.55173964,3586441.24404336,3403200.37679819,3252460.22054351,2871813.33300474,3127579.70286772,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77],"Archive806_field25":[890.293060398307,1,1,357.092793883463,471.472670056658,548.070615744853,1,331.737824213699,470.278931551661,439.33900499128,582.598113220103,414.337440288317,471.721554250834,1,362.770094377777,376.568832250556,1,400.225253618955,331.971762772437,349.956818755127,347.415753989315,371.5790845521,336.437066584454,358.150121522526,1,383.722435964365,401.272353661582,379.334817389077,411.098864434552,434.23127286851,377.223269410608,417.807315549383,418.519152634643,409.563773772824,420.971095895345,471.254967240707,458.970821439932,471.9064962781,1,470.184765680261,448.996416580203,1,438.060757751563,1,449.304434154597,464.236599368133,479.004626154001,1,1,1,1,1,445.983275030384,501.530672454447,1,455.513306272438,450.796378770079,452.814008624895,459.157393692298,487.784940866313,495.504330295632,1,483.554721332614,485.482660671709,505.763588341799,1,1,470.95508987945,1,513.034820426049,497.450159605417,1,544.267362693226,547.480153622479,530.516309777548,519.971164182993,553.919768703552,559.698868432419,550.410744424866,521.186613536626,546.800393646066,440.340189100301,540.046503603613,542.236458015647,1,1,1,1,1,1,1,1,1,335.270445149997,315.453260505658,396.742021919898,388.325531051225,399.697684371838,383.457550084429,368.323314641738,345.453275736333,373.09623485137,419.836854338296,322.072573450958,416.29603629475,325.291296508845,344.201355106339,405.875402078004,395.808048920711,394.330828980166,388.31145030525,367.534659012295,419.349748511616,337.225930512762,405.706021699083,371.171236888831,376.866547295812,396.998811579639,444.884106660382,422.228173370395,349.555621838195,318.236332892391,382.434323843097,424.289634554234,430.549149034667,442.176990789366,433.16460010335,442.117763540659,464.982849219766,444.299610464018,432.018105227491,428.4890800614,438.11858471727,384.334212250885,408.309775440287,413.201479137282,452.705121347669,478.445267256125,462.722354965412,467.511121938881,462.3863221438,455.851075611154,466.360359140982,466.319982969367,483.289907632775,456.300696564593,451.196827748877,457.320783635488,493.752131660926,466.762382279241,478.239802988253,501.247585215283,479.720899507903,489.291074214686,475.693746125309,500.793970080694,489.584633749595,517.263289752229,483.830115129422,475.904630259694,481.351344030237,475.929704970523,458.806369096674,493.167760301683,510.363657730148,521.01883054912,497.899822601013,504.489391557882,475.3562652561,517.498632413721,490.578403121827,496.976768164968,500.014041106024,584.52410638872,534.804678245771,519.066927700182,536.442265030439,498.600713201947,535.240840800745,530.280600147683,500.61283106919,545.296919786358,498.148237299443,1,506.519811381341,1,546.554344396399,523.291650232449,1,1,1,1,1,1,1,1,454.456105795356,439.451513861752,564.737316651111,527.139059622595,433.521572240288,451.419305954674,546.347355303264,553.195293031833,554.873234164352,517.623841980025,584.520645304396,539.493091166922,526.959394425233,511.52316991641,521.888496251464,519.585263494189,481.854133209082,515.168459174113,426.678124396514,440.512269694018,431.832826139386,455.224043731394,434.69947330242,470.042608174786,429.073086886885,405.612373842261,449.735901799307,463.363277468044,562.049269879204,629.02964068097,542.38597380267,547.398222245636,569.948268009555,538.578907716436,521.670752357123,577.486960556837,556.828917984693,543.398754230947,545.55435088293,566.481722388465,559.442495379654,468.622617851841,402.270905945161,348.924933023358,538.316802683313,534.188574202476,547.83151305336,508.849486971996,526.082946605721,511.344179463186,369.038068922733,382.425279768847,311.23047042443,396.340079435223,352.682898875387,1,1,1,338.306217357916,313.050894810865,326.17585886122,329.897786815525,331.742870031179,344.327681498831,360.572881428665,427.732420820098,445.972003277257,1,587.163735875083,636.544365382943,609.917585023288,610.941137366857,676.174797799438,623.359246274489,638.033146807688,595.601427067888,633.792718969818,695.703409046995,615.818181050947,671.317949083298,608.116457819077,597.30820693226,586.769346111094,578.359256409904,674.407843950728,654.074285907792,633.80916676554,667.525816969771,712.382164925485,764.517091502916,755.931798254535,763.709937943619,608.96244779552,572.230967165297,568.064452747981,576.555651425653,641.458197255851,624.602130739103,709.221013723323,584.930680763925,651.510377381124,556.532904293014,532.775046333383,488.57666725725,546.663084950278,509.328164730661,496.371062525234,576.915314501899,514.972647533141,476.286335864709,488.933405641946,425.473491551416,442.581314476355,474.044392257545,448.081019038848,552.764088462215,594.55591631774,601.272049198943,453.558625072659,458.687168811043,443.379539633645,418.772930159588,403.265135109121,404.05330586206,424.614414164959,429.237862730536,453.550881501994,481.818764081755,463.152101537314,555.015668951286,500.019817174051,492.64658396997,363.91380381627,383.264439301257,365.842824451866,352.072232698762,316.016627441321,340.001930611396,1,1,1,1,1,1],"Archive806_field26":[92.2493298164424,0.103616813294233,0.103616813294233,37.0008173525387,48.8524956265941,56.7893306636896,0.103616813294233,34.3736161941859,48.7288042467997,45.5229076530555,60.3669599230996,42.9323251911648,48.8782842136739,0.103616813294233,37.5890811378732,39.0188623837331,0.103616813294233,41.4700653798721,34.3978561621489,36.2614103499936,35.9981133165859,38.5018406280768,34.8605367135407,37.1103742731064,0.103616813294233,39.7600960041278,41.5785625494894,39.3054649494058,42.5967542815861,44.9936607273334,39.086673076759,43.291862608245,43.3656208986042,42.4376930791,43.6196834456565,48.8299379545601,47.5570939126421,48.8974473171834,0.103616813294233,48.7190470792842,46.5235778665704,0.103616813294233,45.3904597474738,0.103616813294233,46.5554936660677,48.1027170410774,49.6329329152729,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,46.2113657411737,51.9670100490434,0.103616813294233,47.1988372090698,46.7100842127354,46.9191445886988,47.5764259348813,50.5427211454831,51.3425796787263,0.103616813294233,50.1043992778662,50.3041662084078,52.4056113042334,0.103616813294233,0.103616813294233,48.7988656180075,0.103616813294233,53.1590332015261,51.5442003110207,0.103616813294233,56.3952497023284,56.7281488601982,54.9704094197655,53.877755037534,57.3954012537405,57.9942131513552,57.0318073402109,54.0036960262779,56.6577142976373,45.626647159953,55.9578977340987,56.1848138315334,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,34.7396551181815,32.6862615968717,41.1091440112504,40.2370540483186,41.4154003356939,39.7326493733622,38.1644881251459,35.7947675738527,38.6590429073756,43.5021569500092,33.372133710461,43.1352686678823,33.7056475365959,35.6650475476754,42.0555157578382,41.0123687053718,40.8593038825979,40.2355950462918,38.0827701420364,43.4516845965115,34.9422762799148,42.0379651027398,38.4595807528994,39.0497106679922,41.1357517374798,46.0974734174003,43.7499378076851,36.2198396039577,32.9746346887522,39.6266259309563,43.9635398462843,44.6121307895159,45.8169706976274,44.8831354945798,45.8108337588562,48.1800410726248,46.0369097841505,44.7643393490851,44.3986730073396,45.3964515933828,39.8234863133859,42.3077577680063,42.8146205166685,46.9078620360243,49.5749739287872,47.9458158615187,48.4420126349183,47.910997211381,47.2338357915761,48.3227742609425,48.3185906107067,50.0769601261722,47.2804240819617,46.7515774598054,47.3861222535305,51.1610224399396,48.3644306173993,49.5536843761044,51.937677451437,49.7071508776517,50.6987818834377,49.2898700775002,51.8906752967288,50.729199586957,53.5971737182172,50.1329347054925,49.3117212194796,49.876092343309,49.3143193811099,47.5400538848949,51.1004717419143,52.8822558351864,53.9863108877876,51.5907929576807,52.2735830939741,49.254901385285,53.6215591748332,50.8321708024572,51.4951489985207,51.8098615417777,60.5665251976582,55.4147564946742,53.7840609347207,55.5844380187943,51.6634170082174,55.4599502686989,54.9459859390561,51.8719062495935,56.5019291274233,51.6165328971075,0.103616813294233,52.4839687257304,0.103616813294233,56.6322194584735,54.2218132205665,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,47.0892934646215,45.5345654636811,58.5162810997242,54.6204695210118,44.9201238098441,46.7746299425175,56.6107719082561,57.3203333933278,57.4941963063747,53.6345329910876,60.5661665711301,55.9005549009714,54.6018531858012,53.0024007929027,54.0764228764958,53.8377692379121,49.9281897557797,53.3801140493216,44.211027552327,45.6444776027037,44.7451413204056,47.1688647463614,45.0421741642781,48.704317171581,44.4591859335384,42.0282616102441,46.6002009684522,48.01222620881,58.2377542592333,65.1780468349783,56.2003061809219,56.7196593920209,59.0562232737174,55.8058301250657,54.0538609480499,59.8373585718717,57.6968380316496,56.3052472614666,56.5286033172928,58.6970308633209,57.9676485926132,48.5571822994088,41.6820293550216,36.154489638784,55.7786716367852,55.3509177570503,56.764555604747,52.7253622864434,54.5110384557248,52.9838543725296,38.238548686031,39.6256888128033,32.2487095454444,41.0674960118608,36.5438780848398,0.103616813294233,0.103616813294233,0.103616813294233,35.0542121602533,32.4373361192098,33.797303068709,34.1829573826448,34.3741390257136,35.6781370859004,37.3614129339575,44.3202703880062,46.2101977980344,0.103616813294233,60.8400351933126,65.9566986613802,63.1977165322273,63.3037737643078,70.0630777778499,64.5904986364573,66.110961448304,61.7143218662719,65.6715818287397,72.0865702433836,63.80911748915,69.5598265912313,63.0110894709894,61.8911729568128,60.7991697827722,59.9277430884163,69.8799916508086,67.7730931634662,65.6732860969182,69.1668979460368,73.8147697772252,79.2168247305074,78.3272440029137,79.133190050854,63.0987482564273,59.2927492859448,58.861028339478,59.7408592875066,66.4658542611146,64.7192823639736,73.487221363316,60.608653138784,67.507429132355,57.6661660362263,55.2044525037523,50.6247573111129,56.6434868081422,52.7749613503911,51.432387710337,59.7781264293268,53.3598246710782,49.3512723378877,50.6617214057148,44.0862073357283,45.8588654296125,49.118969285728,46.4287272904379,57.2756533499461,61.6059893740766,62.3018936608876,46.9962993721426,47.527702731154,45.9415749767022,43.3919165170247,41.7850482126753,41.8667159544266,43.9971924745705,44.4762594813654,46.9954970080267,49.9245249195171,47.9903448318233,57.5089549450991,51.81046003954,51.0464691112579,37.7075886652245,39.7126398493971,37.9074676362638,36.4806028016313,32.7446358834604,35.2299165638397,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive806_field27":[-0.999999994898996,1.0294013242252,0.830331608156378,-1.00000013488112,-1.00159292618543,-1.00390153387834,0.525030790007807,-1.00168060705945,-0.999999996044455,-0.308359565698916,-0.999995247487807,-0.999999976484808,-0.433685299129249,0.700612781685444,-0.101393049344655,-0.980351538619819,0.538396456964474,-0.0722129874228756,-1.03694122638301,-1.00557252134636,-0.937838014994606,-0.574239702031277,-0.788435348656164,-0.310803232551134,0.572459910876266,0.387591118232676,-0.604302260400885,0.0115956770392785,0.290076641412618,0.0311520175292031,0.340122408139477,-0.233937982978971,-0.48484952054186,-0.96721116227297,-0.706405577744217,0.313639259280478,0.0436761850378785,-0.230107422991749,0.413437775829676,-0.0255331406148242,-0.418707472499276,0.633941568307097,-0.814663231938807,0.370428121865743,-0.59669777851917,-0.392776903608112,0.284725720382705,0.669257324648898,0.590484401872283,0.553169564844222,0.309704828415549,0.759030001249314,-0.826289609217501,0.0898969137544719,0.653864889931275,-0.528178683741387,-0.667812762800428,-0.936560606198919,-0.641210178070732,-0.0575940944650388,0.202828303098729,0.396117017393296,0.100604597429309,-0.206365357428535,-0.157481840495941,0.494209950491724,0.753687775652558,-0.430671254793304,0.616387719531996,-0.348263348997992,-0.32281977673751,0.534819515686845,0.18179594360121,-0.0115177376495382,-0.0688636607224209,0.170527018600752,0.23081810824445,0.357316959004002,0.0508629309545833,-0.237604604787263,-0.0731619261395877,0.509957334263032,0.186623788048781,0.135433009826518,0.801057118082298,0.504900768592182,0.537510274651398,0.412478883944513,0.443044268331948,0.606229212627157,0.500753542345306,0.526780675060688,0.324663862749492,-0.989276400569913,-1.00001165303981,-0.928767788981604,-1.00041051397615,-1.00135087734393,-1.00933332440088,-0.998373371742872,-1.00027693501181,-1.00018707073804,-0.999867754883743,-1.00008123739131,-1.00516092296756,-1.00008355742502,-0.999843255551119,-0.999083839558999,-1.00009447011554,-0.999990009484529,-1.00008592929852,-0.999943674540847,-1.00002714822687,-1.00004768791743,-1.00006598094199,-0.999999772909457,-0.999977551324306,-1.00000260188523,-1.00104081852922,-0.971848083732412,-1.00022397600011,-0.999964965452468,-1.0000000102273,-0.999999033934434,-1.00006913689649,-0.999961727694032,-0.998903993627764,-1.00002749754136,-1.00008793474337,-0.998789348382222,-0.943426278814969,-0.806377651804029,-0.947974688536613,-0.99999897794381,-0.999996958452697,-0.746493150520163,-0.805654966725356,-0.986048071872015,-0.951271565302279,-1.00014310368462,-0.968172279262261,-0.847168548223822,-0.776068942496898,-0.950801195778219,-1.01441020650815,-1.01464837406905,-0.99843893427358,-0.999732760707431,-1.00157415148276,-0.576432281747815,-0.671871944677177,-0.491376184598204,-1.00420299800052,-0.999534478633201,-0.932692908769668,-0.921338075679871,-0.964745304271873,-1.01348476311027,-0.732675531379558,-0.9997321950484,-1.00000262888859,-1.00008699167349,-0.999963605444213,-1.00003846650018,-1.00001399999255,-1.00027565723766,-1.0000125653497,-0.999881519897992,-1.00000129253113,-0.999932335539555,-0.999995402916952,-1.0000000393188,-0.999997281123509,-0.999999985135443,-0.999999360810319,-1.00000082715669,-0.999995339207786,-0.453749743647568,-0.341259730938858,-0.200948975273301,-0.563723482163478,-0.0581935717474222,-0.88225927226891,0.955540307537676,0.137481025345858,0.54940508911653,0.27855531728133,0.350879645251692,0.492562903189794,0.799022342905511,0.749102079563366,1.01530225095862,0.85488659436583,0.704714118867011,0.700082865003019,0.729256601963718,-1.00005298268089,-1.00000609528246,-1.00000203421389,-1.01488498257253,-0.73516706684766,-1.00000082854921,-1.00000138677105,-0.999999519513012,-0.999999515302843,-1.00000000478121,-0.999999903362125,-1.00003013697029,-1.00000025683374,-1.00195865541568,-0.973888388274837,-0.926790860367139,-0.256799794059599,-0.683570605000444,0.0122251351787786,-1.00000076220323,-1.00000048134035,-1.00000111204272,-0.999999743337281,-0.999997980084503,-0.999999007276469,-1.00000013609031,-1.00000046758866,-0.99999988243602,-0.999991826425387,-0.999999038175825,-0.999682262741181,-1.00000527096785,-1.00001650549184,-1.02736181108286,-0.986647683227885,-1.00006672598745,-1.00173646088659,-0.99776690439854,-1.00864668430488,-0.999272164456604,-1.00153987564928,-0.999971640111076,-0.99999928918809,-1.00000004038352,-1.00338241311035,-1.00086357871942,-0.995525232236742,-0.997925789151651,-0.999351070658876,-1.00010180699282,-0.999999830697104,-1.00000026176908,-1.00000171190784,-0.999999949231195,-1.00000021686473,0.556182379316728,0.533483286612567,0.351707123113309,-0.999991778382046,-0.999995420218228,-0.999999320167206,-0.999999822171693,-1.00000261632806,-1.00000019988919,-0.999999875767621,-0.999922650185554,-0.985053040447175,0.932680512423969,-1.00000026156905,-0.999999882179071,-0.999999286105403,-1.00000030037849,-0.999999999569213,-0.999999904772173,-0.999999473320239,-1.0000047812873,-0.999999946109332,-0.999999928566963,-1.00000011618099,-1.0000000693271,-1.00000484049576,-1.00000763066368,-0.99995621613894,-1.00001130080975,-1.00000001008081,-1.00000024914461,-0.999999418989017,-1.00000017153164,-0.99999996667735,-1.00000002202782,-0.999999998070535,-1.00000000058828,-0.999996597434331,-1.00018736594066,-0.999572501837499,-1.00006059361258,-1.00000007934754,-1.00000003564986,-1.00000001044275,-0.999960989437816,-0.999999975488361,-0.999999999209421,-1.00000002060036,-1.00000003449798,-0.999999982948577,-0.999999915695142,-1.00000002631534,-1.00000002697676,-0.999999959145013,-0.999999890616566,-1.00000000140241,-0.999999984109936,-0.999999988402471,-0.999999984591278,-1.00000002682659,-1.00000000440754,-1.00000003164468,-0.999999865233397,-1.00000003658232,-0.999999972834255,-1.00000000638347,-1.0000000985021,-1.00000000757919,-0.999999972098783,-0.999999999752097,-1.00000001367061,-0.71413895631505,-1.00000068140141,-0.999999890413657,-0.999290430639374,-1.01957684126307,-0.991953742401746,-0.99999998502728,-1.00000000644855,-1.00000003532507,-0.999999986816943,-0.999999634774096,-1.00000011862332,0.620973549365293,0.763249035973069,0.788650844333939,0.725571279173703,0.675041871414836,0.827109453683174],"Archive806_field28":[0,3.81448647448784e-11,8.27240335120883e-12,0,1.97828020256238e-10,0,-2.14190228796246e-11,1.28956820464529e-10,0,5.10714682660655e-11,1.89148770308126e-10,1.41658851892458e-10,1.04781503566641e-10,-2.26429455632821e-11,1.30920530343174e-10,1.09566385696248e-10,1.42905937915389e-11,6.89311681809286e-11,1.22994815999752e-10,1.16657185182769e-10,1.18839742643211e-10,1.06425510527008e-10,1.42893982976051e-10,1.3969826136404e-10,4.59916825256719e-11,8.44861791223695e-11,1.02907415630197e-10,1.04856229437926e-10,4.21784254494796e-11,-1.2726663746199e-11,8.28578945400354e-11,4.3973848715796e-11,1.18674258350795e-10,1.44524869610087e-10,1.8871394130787e-10,-4.65559580738966e-11,-7.16891464650441e-11,-5.88518982117085e-11,-2.15748992459003e-11,-7.9451645927232e-11,3.9867111115014e-11,-2.26865487851425e-11,2.10598014469951e-10,-4.23853692974269e-11,1.19734976356992e-10,5.98614353492249e-11,-5.1640727161396e-11,-2.51188498756483e-11,-2.86239701941279e-11,-3.23331058747341e-11,-4.75320860009718e-12,-6.59302340161078e-12,2.10689873350329e-10,-5.6097181838859e-11,-2.0596478727341e-11,1.7991481783901e-10,2.37609254170937e-10,2.09661541603388e-10,2.82838340026295e-10,-6.28689788963087e-11,-5.10003679843433e-11,-3.79242983056605e-11,-5.52237067559542e-11,-7.29413281596324e-12,-6.61264932866266e-11,-3.04330022668662e-11,-1.68442009179086e-11,2.05563586420412e-10,1.35238035341934e-11,-4.10447684839347e-12,-1.5349380381172e-11,-1.58824599557848e-11,-9.87986279524336e-11,-2.12038125226957e-10,-1.87959377151942e-10,-8.21755552491787e-11,-1.89821789840162e-11,-6.4363533047502e-11,-1.28495481957672e-10,8.09580879255412e-11,-3.15600656336462e-11,4.68456576359411e-10,6.72131291256075e-11,2.8280308963045e-11,3.19657052355309e-11,2.59964878944959e-11,-1.67398297775761e-11,-4.15960259015584e-11,-3.4670015943676e-11,1.63586260438469e-12,-4.94832113219459e-12,-1.56586612812903e-11,-4.76113796718799e-11,1.23852546723413e-10,1.50616688736071e-10,1.26027316518262e-10,1.30066641783131e-10,1.32055381750058e-10,1.18597851935599e-10,1.25641819662669e-10,1.28688034156978e-10,1.34281994432693e-10,1.50808423583364e-10,1.57872784028473e-10,1.4775596328818e-10,1.43834105189224e-10,1.40768297293021e-10,1.38497347372893e-10,1.37996661478938e-10,1.39017778592306e-10,1.38348237463817e-10,1.37082898785792e-10,1.50264077247233e-10,1.43862185294445e-10,1.43658578573839e-10,1.34865823026351e-10,1.38126087563303e-10,1.40072535338517e-10,1.75353571608451e-10,1.66158176902526e-10,1.35562536814848e-10,1.58767661369846e-10,0,1.48886780650269e-10,1.63518081222828e-10,1.65804065595076e-10,1.73151153877303e-10,1.69075723456182e-10,1.82515128314589e-10,1.88141726885341e-10,1.85406075824809e-10,1.9765891004719e-10,1.94518112049814e-10,1.32734413966641e-10,1.44326905002138e-10,1.63647466183039e-10,2.33122159035631e-10,2.26731619909546e-10,2.22350559841158e-10,2.09142758215713e-10,2.56452910001971e-10,2.51599837940789e-10,3.02223424848937e-10,2.37043736684146e-10,2.41282932750492e-10,1.970953675685e-10,1.86666918613312e-10,1.85455098966803e-10,2.13619453953024e-10,3.41834180817381e-10,2.64688379978416e-10,2.08288868753504e-10,2.1110341317139e-10,2.02131151058442e-10,2.52633708524923e-10,2.51667792187056e-10,2.46213663006082e-10,2.40322931239564e-10,2.82595815812563e-10,1.91605532045775e-10,1.80695359414137e-10,1.83216588874153e-10,1.67931587563149e-10,1.90966768378626e-10,1.79312757355285e-10,2.04885739213953e-10,1.82855144641455e-10,1.99512513993887e-10,1.68796764920546e-10,1.91192773867419e-10,1.72643768256345e-10,1.77000477375709e-10,1.73512222796048e-10,0,1.84171435177282e-10,1.80761247181039e-10,1.83592123001e-10,1.70166241839948e-10,2.53873604892809e-10,6.07780296394909e-11,2.27301217748506e-10,1.14187096027626e-10,2.706251179857e-10,1.80470465669564e-10,3.44679055734351e-10,1.15947214370017e-10,1.08042871213302e-10,1.89456591930905e-10,6.6300202339652e-11,2.79229371090163e-10,1.57692528030451e-10,7.75428592058819e-11,7.79544708729315e-11,2.23352655547064e-11,3.50081818730663e-11,5.4740894582311e-11,1.71117657518289e-10,1.56031379258239e-10,1.83062322832479e-10,2.46807691904981e-10,0,1.59248617017117e-10,1.81241241202066e-10,1.83473146277138e-10,1.88249312064172e-10,0,1.81808025400413e-10,1.95166396943152e-10,1.80790633011393e-10,2.4419550601106e-10,2.37156536832088e-10,2.39406031458445e-10,3.83377173914304e-10,2.83565620563326e-10,4.85264787280542e-10,1.57399547619704e-10,1.52864773697588e-10,1.63668049372026e-10,1.57757668489872e-10,1.68907934738872e-10,1.49762436762249e-10,1.4901683313134e-10,1.55641843530376e-10,1.65503335368337e-10,1.93302515026133e-10,0,2.11649105954468e-10,2.01772714591098e-10,2.04826684590463e-10,0,2.64535352863099e-10,0,2.46335178440315e-10,2.53720645225662e-10,2.41946268321728e-10,0,2.23769198434168e-10,1.70653172059273e-10,1.40993178446492e-10,0,2.30008265458589e-10,2.24835120790889e-10,2.33552047370022e-10,2.28660690288124e-10,2.23632611499779e-10,2.17947759956278e-10,1.27705240069984e-10,1.38286408058741e-10,1.12400685583414e-10,1.36009977276385e-10,1.27587478639256e-10,-2.29649214477561e-11,-2.73216710872963e-11,-4.26367112002833e-11,1.35411287490697e-10,1.32481968852541e-10,1.14465708004615e-10,1.00139345916843e-10,1.26806928047776e-10,1.19586120567826e-10,1.30211919396448e-10,1.55095792515036e-10,1.99520980187804e-10,3.72575875413024e-11,1.82009743414305e-10,1.81156226221729e-10,1.85713361436999e-10,1.81391395103489e-10,0,1.89969621709008e-10,1.95091696432799e-10,1.98518694728412e-10,1.86301723732681e-10,0,1.97647671194927e-10,1.81158059104803e-10,2.23719503848536e-10,2.0625242081748e-10,2.20685931299402e-10,1.94249735900342e-10,1.76241974595377e-10,0,2.23243638036578e-10,2.09129051158108e-10,1.86638930329408e-10,0,0,1.67989047391568e-10,0,2.38481963012131e-10,2.34441233170763e-10,2.19541471303925e-10,1.80600150440869e-10,0,1.82225362911586e-10,2.52896778743211e-10,1.92555973618416e-10,1.89614931560806e-10,2.03934455249301e-10,0,0,2.01425239628859e-10,1.81413918594765e-10,1.99418983475148e-10,1.75918369679758e-10,1.74816504406797e-10,2.00577787829828e-10,0,0,1.86800445924198e-10,1.72583917935681e-10,2.03303402033523e-10,2.09437167103684e-10,1.86484165010716e-10,1.84765661164791e-10,1.6573627801974e-10,1.61083734510014e-10,1.53402813625858e-10,0,1.47933049241702e-10,1.66503009941853e-10,1.63120315041371e-10,3.35514992628187e-10,1.70218854511022e-10,1.65359393305254e-10,2.16149003650146e-10,2.34341005178365e-10,2.204004379802e-10,0,1.34809889648505e-10,1.20058851270387e-10,1.14255181830717e-10,8.3376738078142e-11,0,4.63489993318526e-11,1.40081357077337e-11,2.02988743036e-11,3.62192495964491e-11,-7.41597248619579e-12,3.6582842090758e-12],"Archive806_field29":[0,5.18425454148735e-12,6.35265675968148e-12,0,5.33265774358531e-11,0,9.55037401928545e-11,-4.31677339176554e-11,0,4.52971434300902e-11,4.17291795226349e-11,2.77015961992869e-11,1.39044893097903e-10,4.90473113109965e-11,3.85290812694883e-12,-1.53938549399525e-12,2.30941551652975e-11,1.43640908790964e-11,-4.18673300817951e-11,-2.21329811433254e-11,-2.37124621385446e-11,-1.93705810714507e-12,-1.66812165277334e-11,-8.48749731081071e-12,8.42039930220233e-12,1.04248481515165e-11,1.44224061884091e-11,9.00113953620745e-12,1.608260119418e-11,1.95353272166541e-11,9.07384555046458e-12,1.94622225590984e-12,1.09196324757179e-11,3.17920430803396e-11,5.68114236857335e-11,6.69203581864014e-11,6.40787059221913e-11,1.20371485586758e-10,4.13855224465008e-11,9.63905337070265e-11,1.02088854089465e-10,8.01146193528917e-11,8.74769857488723e-11,9.30889823586838e-11,1.07332605885162e-10,1.19140494713978e-10,8.78018809304503e-11,6.43879823533451e-11,5.78052849545058e-11,7.67009609750825e-11,3.00867727660125e-11,2.01229385258765e-11,9.61046501332555e-11,1.20084258578651e-10,4.32309487852755e-11,1.16984574682223e-10,1.15566295457074e-10,7.8048477381107e-11,1.36859044878008e-10,1.18886476345283e-10,1.07197776723225e-10,1.01404444308548e-10,1.0290544262489e-10,1.3631055456022e-10,1.51851981479475e-10,5.11022470667582e-11,3.33975723436666e-11,1.6550125366221e-10,4.85418706142493e-11,1.484603571094e-10,1.98001086854606e-10,7.97046702596787e-11,1.07884306435661e-10,1.32785136767878e-10,1.39503907338034e-10,1.1940299352889e-10,4.70995725168847e-11,8.469361551096e-11,6.21778383347469e-11,4.5021958736563e-11,2.52244705475288e-11,-1.95971115572229e-11,3.96851339937343e-11,3.77601680042434e-11,2.4725439977219e-11,3.95396675728439e-11,9.11402429662019e-11,9.93223984353541e-11,9.09913206524765e-11,6.40655422228854e-11,5.45427555109883e-11,6.907980703495e-11,6.16443751385862e-11,-4.14347402804356e-11,-4.24391283810194e-11,2.10983863359828e-11,1.02256092454037e-11,2.17025899741661e-11,4.18602537843585e-12,-7.91999409755974e-12,-2.99422504849935e-11,-4.33410966265343e-12,3.24564273263973e-11,-4.91581731081048e-11,3.4080827199092e-11,-4.45044134296708e-11,-2.54454888910918e-11,2.47625701555117e-11,1.75722069001604e-11,1.82863951854555e-11,1.23256435742837e-11,-1.10087684912461e-12,2.75095449211543e-11,-2.26475668110215e-11,2.50318231304878e-11,1.99483030877171e-12,4.31004724578014e-12,1.49407481915023e-11,4.79105506613418e-11,4.60857332791699e-11,-2.59868486396275e-11,-4.67207183564369e-11,0,3.03659081020099e-11,4.21558818955402e-11,4.04642259441114e-11,5.17677966862226e-11,4.23584151298904e-11,4.53088732503024e-11,6.14158335876236e-11,5.94069902407605e-11,6.67245425434737e-11,7.65363336563978e-11,9.1965251569876e-12,2.46463242003313e-11,3.09850550479372e-11,9.95416949870096e-11,5.34444944535172e-11,7.45659598804543e-11,5.8810674157229e-11,8.93471066572761e-11,9.95779281895984e-11,1.43463719998274e-10,6.82900700130691e-11,5.47594849875238e-11,6.30903289734942e-11,5.39952071744836e-11,4.76321702678108e-11,4.41988561646231e-11,2.01395980622502e-10,1.02166744913235e-10,9.49852943945552e-11,4.95216405193874e-11,4.80683551252522e-11,7.43225186448777e-11,2.58545073108589e-11,4.75571877830162e-11,2.66306024743345e-11,7.25634955839338e-11,4.85259650885432e-11,4.32035016763748e-11,4.52227295929276e-11,4.61269311115682e-11,4.69397210673787e-11,4.63996225444094e-11,4.1046354697007e-11,4.53257781438967e-11,4.59940482611482e-11,3.82764190244553e-11,4.58138927906404e-11,4.65040192048678e-11,3.59693525641007e-11,4.29480275312196e-11,0,3.67455359553303e-11,4.07488559087968e-11,4.73376188410069e-11,9.29740082164049e-11,5.74516753085572e-11,4.33201018002294e-11,8.30955627974765e-11,5.6527166966596e-11,3.40881364780325e-11,1.48138151844077e-12,-2.6913478941459e-11,1.46336292784005e-11,2.28439410246204e-11,4.25390617048931e-12,2.68966969117383e-11,-4.48982468956844e-12,3.94325221515238e-12,3.79609121501218e-12,9.62737580766515e-12,3.43408669813334e-11,2.93579178266204e-11,1.9621662727036e-11,4.84331684865865e-11,3.90225067914983e-11,4.21375736648582e-11,8.86204815743743e-12,0,3.73173406797432e-11,4.46419760109301e-11,3.80669930144468e-11,4.56928999316042e-11,0,3.92527259898337e-11,4.35120297201585e-11,3.67977380639699e-11,1.83333899135727e-11,2.18474986142694e-11,1.22860355907909e-11,-2.36180463116824e-11,2.61668641001814e-11,1.20200917744203e-11,3.50442733352802e-11,2.97764593941333e-11,4.05328536599025e-11,2.41229011581673e-11,4.00501323777921e-11,2.50747240225395e-11,1.09202853835439e-11,3.63556295751593e-11,2.87605912525297e-11,4.15760362954335e-11,0,3.57651705494302e-11,4.0712893095811e-11,3.63080912554525e-11,0,-1.1879814361521e-12,0,7.5294775065582e-12,3.71579419415998e-12,3.14041145975945e-12,0,2.03845911682229e-11,4.54811884837405e-11,1.4587756018051e-11,0,2.47615568752839e-11,3.10234271774845e-11,1.66332885874476e-11,3.49071784383891e-11,3.60568650406032e-11,4.16348240729673e-11,-6.98904564337618e-12,2.49517566900158e-12,-3.85857953643979e-11,9.99747403799435e-12,-9.60264142363078e-12,9.03142111625969e-11,8.96795622061383e-11,1.0079491762906e-10,-1.81608201498652e-11,-3.80644837878533e-11,-2.28051857621632e-11,-2.1656852144527e-11,-1.79760356372288e-11,-1.88503692222115e-11,-3.83592460963332e-12,3.64980466117592e-11,8.11669898965326e-11,1.03140767615451e-11,4.04510429122431e-11,3.61129066564357e-11,3.8115102357112e-11,3.66570418562035e-11,0,2.50758477261202e-11,2.70221820421733e-11,3.43156604931308e-11,3.41381687454801e-11,0,3.04863508952339e-11,2.69529511785017e-11,1.6383594789104e-11,2.54634573409463e-11,1.6991535962238e-11,4.03450937184085e-11,2.7201126356673e-11,0,1.26637545364899e-11,1.53322762577663e-11,1.56447345910157e-11,0,0,8.7902355608009e-12,0,8.41149376251352e-12,1.59413789675996e-11,2.58584838104598e-11,3.2973033117843e-11,0,1.62883032562377e-11,3.50375791731024e-12,1.70890118755415e-11,2.98877028410347e-11,1.81095057478421e-11,0,0,1.56997014006454e-11,2.94239670707631e-11,2.30458207440573e-11,3.96298845536462e-11,2.57717618212999e-11,9.2803254367092e-12,0,0,1.64756017299551e-11,1.42115326518251e-11,1.99081842842482e-11,1.52493516072924e-11,3.0081756806704e-11,1.44954674764442e-11,2.34418000040535e-11,2.26352313738601e-11,1.39581826674564e-11,0,1.03168766535615e-11,8.85104086020628e-12,1.39639799293139e-11,3.75972991358732e-11,3.49346228065466e-11,3.16059659658501e-11,3.02532734624697e-11,4.2104010311406e-11,4.32475010451617e-11,0,1.61615071715443e-15,-2.26499332394218e-12,-1.56122765297233e-11,-2.93140166160304e-11,0,1.1641107466313e-11,1.3736592547141e-11,7.89231922495417e-12,8.87699587544291e-12,2.67335126147579e-11,9.66592284957103e-12],"Archive806_field30":[0,0.304956477236971,0.0810405833546463,0,16.2227764471139,0,0,0,0,6.96995358491547,12.1806294560689,6.0061520779153,22.6688858657722,0,0.984112982379336,0.762445603836378,0.444786732232822,1.49551721011088,0,0,0,0.992982300467351,0,0.362421238764747,0.617192280017771,1.31105945366776,2.53956476184261,1.34502348898023,0.909436253166761,0.428804830345989,1.1290605192862,0.69215247220374,3.52002913808802,7.08057997313876,16.5463572233788,0,0,0.270752382562775,0.0413208276988011,0,10.8165556928448,0,28.6439069057001,0,18.7199037978824,16.2166058969171,0,0,0,0,0.164508220487937,0,31.3545863260889,0,0,30.9751968557396,42.9226678647337,25.2958368244288,60.0659093514476,0,0,0,0,4.98760556455881,1.42207773543066,0,0,52.2823201111978,0.923129990993948,46.1593734496711,44.323455294439,0,0,0,0,0,0.342488232675547,0,0,9.14860240441886,0.36564318173505,0,4.05245240799769,1.89716947763334,1.18178087843522,1.58072486820641,0,0,0,0.401469434252565,0.348842297036868,0.161055728230827,0,0,0,4.14648970516001,2.19532596660902,4.43418322550632,1.36851926233171,0.137376256165851,0,0.613559576132576,7.58862339713149,0,7.77235650344514,0,0,5.2945886879045,3.74404059390383,3.89280723303136,2.62388074004551,0.682204557084831,6.36021008115458,0,5.54685483433726,0.793599224170166,1.16168298221282,3.18524805354925,12.9368199259228,11.890173758468,0,0,0,6.90820042467733,10.6337362863367,10.3418511826153,13.8344906107087,11.0533051901617,12.7509650139817,17.8233553132227,17.0769834411483,20.4721025142891,22.9836298426856,1.87445691850689,5.44250883676075,7.81163718755795,35.8392919201797,18.6011869694596,25.511051535361,18.9186100324523,35.6775169036678,38.9381706223979,67.5078672808779,24.9160012771866,20.3603636383766,19.1596390841859,15.5349679884895,13.6028542648292,14.5303817502242,106.426590076144,42.9423853588473,50.6816918969348,16.0985041142916,14.9590766247394,28.9450477053685,10.0198742878103,18.0516808235612,9.82342465296885,31.8520454755995,14.3009529445304,12.0187656031438,12.7541563168735,11.9308457640056,13.7876371692013,12.7989186521163,12.9381378043403,12.7564038838513,14.1160398619838,9.93424767812466,13.4955978335193,12.326375334817,9.72313256048965,11.3930389007637,0,10.3291477852197,11.2139915786997,13.3755538910152,28.7907964781014,20.1120232516066,4.06126435530812,28.5980528098179,8.6210260366419,14.5598479533646,0.408540198940011,0.240102588247659,2.36209063618224,3.58672475394178,1.24638921277236,2.61300599082518,0.230205312676336,0.879567836614615,0.381819701858406,1.11835146951618,1.15187528542933,1.57692444646521,1.59813170742439,12.7774255563023,9.35733290959174,11.8411173052591,4.33230821592862,0,9.14992168046495,12.4245790253318,10.6732940723398,13.2348814011918,0,10.8797455830218,13.0883570205528,9.77432878632916,6.98940773535545,7.94210742165306,6.48232268696815,4.61611651489607,19.9056345922239,22.2978701882134,8.48057981068661,7.00306489235498,10.1977802338278,5.80904110176211,10.3800027366144,5.73492612655165,2.6158254928102,8.65193569943125,7.28589962485921,12.3823013004086,0,11.6995024520823,12.6696549841046,11.4755778461312,0,2.03204122483633,0,3.42140043620886,1.91125875075212,2.13226030747044,0,6.9715409257143,11.9492017101537,3.12032289806349,0,8.81603589316661,10.7440949968978,5.94564333473742,12.2517155853088,12.4428743182739,13.9363075304371,0,0.892292320747311,0,2.09455988741431,0,0,0,0,0,0,0,0,0,0,0.177553538029247,8.73643956933469,25.0358457636338,0.595028433112238,11.3319243885249,10.0062332513977,10.906563294919,10.1833313498533,0,6.98519831653021,8.11474174903558,10.4935271497108,9.81515853458452,0,9.273673075611,7.5518481415434,5.23594835994902,8.05696838269488,5.64737503458237,12.0912299558225,7.34452180348506,0,4.07634260152258,4.50898312158952,4.14735513941899,0,0,2.27711139912104,0,3.47604252252967,5.763731272917,8.67503708580834,9.09598322990394,0,4.14190093357341,1.92217400067848,4.68561425444963,8.40273652459067,5.78191298374841,0,0,4.52000853718516,7.75816034689574,6.42271457266766,10.7030713881515,6.59033651258577,3.02855898994793,0,0,4.88265339827371,3.9876218241865,5.66034253006909,4.72562104531719,8.54321873956764,3.83768781709269,5.84210207243887,5.57703980375026,3.29954198238545,0,2.42011323133782,2.16681827495659,3.47724041775642,19.2919887964903,9.06105234719518,8.01033259577347,10.108521207723,15.1190327822993,14.6665323484167,0,0.440932963836021,0.12396358976772,0,0,0,0.780193354866269,0.288111170391637,0.277187945267408,0.495735799105839,0.0751166891030538,0.0378431392737494]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive807.json
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive807.json	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Archives/Archive807.json	(revision 21239)
@@ -0,0 +1,1 @@
+{"Archive807_field1":[0,8144.60333307886,4752.87997712809,0,7557.32797059437,0,7768.39699353565,54.011807906552,0,5357.93375853067,3863.50901919309,2535.47657347432,8468.50755039601,5834.09601670633,3320.70403846034,2507.33146179611,4795.49935993736,3968.64710218244,323.926971010752,1256.85009095834,1424.0994069382,2924.32522186764,2181.63613495199,3015.82439225149,4437.81422524806,3962.52717617993,3907.71003882004,3611.97523407529,4439.66433031069,4813.08065228871,4006.60012851403,4353.04618456072,4727.16097928605,4474.91156391332,5733.24166400074,5971.07555823673,5536.09950296703,6817.15940554261,5320.79499733276,6207.71783582032,6162.35230229562,6838.43039627081,7231.29381369265,6947.92851556863,6781.3400251433,7613.3276758202,6488.61610417889,6325.47888301513,6057.11341393207,6528.69858512649,4923.36958073224,5053.77164981659,8392.55949046784,7782.42852867868,5549.07092394413,8165.15844349163,8739.22822644156,9299.02691692846,9481.8567538419,7370.35644902053,7342.08339911168,7676.96547997782,6886.50892578191,7929.53948519371,8415.04487842221,5695.85909471381,5401.46250199109,8858.99285196905,8503.43062450676,9100.69227734832,8828.62497715584,8368.26968256947,8312.04368272967,8659.65374391431,8456.43230331862,8032.02166414932,8751.64220909153,8489.98782686293,8843.32082143079,9359.52742730495,9049.1005444753,6804.33064155833,8614.19993404816,8798.54320871538,8298.14848759953,8512.92883030905,8125.74598714822,8008.34735454611,8276.72675773929,8502.0443131368,8563.61768176949,8517.01367358232,8631.55303377234,198.619673192277,-718.410243951991,3523.21058411212,2848.11982106483,3606.61630772488,2719.82591971876,1978.50591430595,1049.61018725585,1968.54613393344,4301.238434995,-306.849808851235,4616.55285731008,-110.545553457125,883.876913458112,3730.44798882808,2970.4690854261,2414.39599531175,2457.16633126754,1582.76054528755,3647.71112922646,501.576220444051,3204.42669126646,1428.15774611119,1758.9751251297,2273.37522226058,6351.7819208809,5685.12346485426,1177.68169193205,-520.386493708668,0,3316.32784327437,5345.83223413014,4990.88694812256,6174.79474469041,5566.55808728668,6104.84778137915,7791.85225244662,6990.80273935244,6529.99258993376,8054.03833332584,1592.83743923887,2800.68640244595,4885.45794624849,9553.96910046576,9737.80649088028,9990.55242374332,8717.14600366874,11812.9132767675,10291.6231689896,10057.793691161,10750.4720687873,10420.9796590646,8161.00155861025,7276.02182895962,6612.14166026607,7986.98843308078,9411.94347366724,10440.0843299384,9480.17051085199,8127.48789176053,7040.79637132228,11708.0277018901,9796.44699943712,10701.2045162483,8273.50098059294,9876.37501410919,6714.98243612524,5314.05697758942,5925.39967409841,5049.26671010721,6074.513048956,4544.66915744571,6421.11498211184,5199.17272818012,6556.43895799882,3783.29392272721,5474.67959813595,4387.22350643881,2956.07244471995,3796.19936613678,0,3395.63925248279,3850.92918856437,4511.14076293769,9563.99844386727,8061.30565509975,8966.7868688443,9080.41449031131,8345.33335080426,9789.02932861807,7940.12307103276,7605.44557890411,8177.54508395766,8311.26769743683,7981.16624495378,8382.45317080099,7566.24876361708,8007.04875701596,8100.12106967006,8152.48154163058,8418.24270466319,8363.82833711851,8253.26669725814,5457.43507368121,4227.5296715368,3569.07923220267,5451.35694284718,0,3805.5539152185,3843.73332509184,3104.78381406432,4311.87265190805,0,2299.09400678981,5394.56850713473,1973.40272705761,7927.72402309899,7787.51325546264,5170.25396831406,6770.73877065922,7474.78566441725,5004.65147167867,3825.72320118866,3177.73735135647,4412.76747354083,2418.88039251534,4372.50840151248,2691.18496378363,1814.94805595779,3185.4138562013,2601.62431896739,4807.43950916791,0,6355.45771634264,5666.11603093519,4940.20676051815,0,2751.7872615754,0,3069.05726806508,2266.73183878558,4582.56356682315,0,5252.99782270535,4904.37731227735,2022.45096348789,0,6749.79350436672,7080.46637215262,5463.37091895003,8336.05403814867,7314.15026641712,7431.45828858905,743.835974462913,1304.54218813939,-895.577690495508,953.492489570579,638.150574551026,7327.19121242401,7102.61445702178,7344.21719432456,405.583779772058,-852.318518910291,-136.542905914441,95.4327931571806,127.921838250522,358.113715168588,966.904813810498,4347.4986303983,8777.8077540038,8189.08559648765,3102.2306957569,1891.7159166902,2869.18608846739,2354.61004323569,0,1177.88296279226,1806.54738211186,3676.76875032702,2210.93676562185,0,2746.85716539306,1252.08223392038,1898.65387885542,3236.25843491108,2509.84737879241,4356.43323454603,978.353951943749,0,975.332252321294,742.700104640575,662.715671751468,0,0,364.131908862625,0,1653.7562272899,3862.76554894835,4317.51682844183,1403.98649737626,0,480.156101121733,1357.58937903696,687.200846287009,2003.19870203636,1159.54198149804,0,0,1024.94077808779,1831.13462241783,1196.73000496678,2634.97127535572,2079.61563347372,873.807807235671,0,0,1194.39355297678,1152.27666603613,869.526006367044,818.304285914294,1624.80554466106,777.615739476456,1905.64636791991,2032.0976702778,1579.6274095615,0,612.667635451906,776.883329652022,1398.11211740161,4628.40988014578,3175.60757263836,3184.01545681746,5854.62945432719,9191.39800377408,8780.28795361488,0,422.958364386039,360.480543576147,336.361547825485,-819.616005706175,0,4441.430841314,4791.43579136178,4672.30987475643,4594.50073513201,5053.85530780974,4833.45007949976],"Archive807_field2":[0,5327.19127991175,10139.974002167,0,8014.53659693091,0,8532.46216859894,8590.47411958843,0,10228.092446706,4319.75126994714,4924.27362947404,9053.12453979657,9789.55256882816,10437.3238394681,10761.8871481075,10147.5075119269,10399.6484785936,10689.8854198233,9673.52121688514,10741.198022451,10581.9699262072,10570.7309920611,10502.8544060012,10219.0915497979,10337.1240210275,10577.3223879823,10422.09234998,10256.8113844479,10240.6353716232,10314.3212354975,10398.1511426882,10410.6819342207,10630.8716371086,10384.9498394297,9823.19965746067,10041.3438793863,9772.06372537666,10013.398856713,9861.42431684324,10069.0092921103,9294.574942495,10299.8362419322,9345.20884568643,10050.9822891598,9626.38802683166,9630.34692542379,9574.31630734668,9716.1938970901,9515.7464019894,10149.6253071126,10056.1637836702,9924.81119944091,8949.9824385697,9907.91200978844,9530.46234316195,9276.87664728213,9358.70908033355,8309.28232156624,9388.79859756268,9193.43221300157,8728.70182257664,9542.28743129705,9167.57743473153,8554.36883956785,9879.94707460625,9947.24685531793,8525.14799497731,6512.82851772249,7571.75500835966,8093.59358662943,7554.80557893794,8072.8759637244,7748.47291061714,8197.54775534001,8526.69723777218,6728.05877275225,7457.080677599,7221.17934087086,6437.07140404962,6754.86098423896,3620.2302968183,5781.41096570612,6293.15580462555,5658.55171545728,6178.25922290943,8065.3146032012,8305.49307137137,7865.66411266714,7027.85213704744,6754.22120068937,7138.1437610214,7063.49346642199,9618.99927195241,4625.6863114597,10873.4826102098,9154.02330531057,9918.84131462923,9953.71366510114,9257.27274310741,8686.79597346011,7996.24612077171,8538.75343655567,6619.26595043044,9573.58887777736,7592.16900879615,7192.63895344752,9051.7708383392,8248.98468468556,6518.16873197916,7381.4712129998,6703.75108569054,7269.80365963095,6049.40584661669,7647.26251694786,5293.05406008782,6055.49258413287,5523.61508350011,8892.15065747529,10383.3974887714,7964.17241201503,5638.12894384225,0,6125.92580928493,9001.08743320138,7715.42841729768,9677.03199069771,8381.24094029296,7629.89918747281,9770.6033719932,10670.8040973078,10405.3175888898,10848.7643631221,4246.04824572711,6162.01304631474,10497.3809132414,8778.66480622903,7776.53581955372,8638.74346651321,8425.3392386068,7917.3540694526,8234.92662241776,7576.61595301104,8136.74235507214,6881.54020957265,8984.9613988229,8998.57542306036,8320.03986137076,7338.59985823733,7871.81629403816,6642.87033358525,7119.1199860986,7851.26182365691,7240.08304511471,6853.85927287222,5293.72209265359,6128.64208229239,5984.70724506576,5416.13229173397,7510.35303416875,6451.43326722779,7058.03775121077,6926.11132570101,6680.64408370656,5378.39562500543,6300.92031987502,6033.22950930041,6685.89457601773,5113.73087908622,5908.75453896551,5474.5344391149,4005.08716962906,4832.57673459553,0,4257.91585503606,4761.52660472609,5121.57861474955,5852.57623246426,4274.33214010384,5752.60682977753,4930.17865742924,5066.34947245776,3544.92005163638,4967.36150147975,4350.06282215581,5302.3796059491,5351.66044064134,4911.8773667256,5709.74588128094,4443.75740556512,5043.63094627119,5241.00302369728,5326.9297512637,6039.50051820798,5804.52309867341,5519.99509480766,7531.72340861781,6825.83054535274,4271.33323151875,3586.20739883785,0,5686.38385661249,4573.76161990353,3907.48106821698,4850.41386732038,0,3030.61531129952,5586.63277570765,2807.72820143468,4365.5352278541,5139.4175220958,2905.15001374373,3360.66727119542,3263.7954806374,2259.15869888883,6145.19986277575,5420.77566869528,6337.62685726842,4002.01586811398,5847.85453180696,4660.69255517971,3697.26832512351,4847.26881813209,3862.30523004864,5040.90717555471,0,5760.31217742355,5538.18631432915,4797.87094998382,0,1999.44372455874,0,2658.3789765688,1856.47394827931,3553.9280150656,0,4516.15341481038,6435.15410010164,4322.16843031076,0,5167.85650665516,5786.56275375003,4363.53484149344,6743.55104800475,6265.49392463042,6693.15315044058,2213.52741110776,3224.90327470795,2433.70874290018,2022.86736863758,3415.23669254608,8945.87525857726,9156.51910076259,9043.84489088612,4947.53310057391,3563.65349663357,3032.02274446922,1415.48119364028,4005.77369513866,2388.86706603548,4412.73081312589,7836.15864999573,10022.8150085444,5413.37953612621,3746.64423693694,2407.6934378187,3391.48271536698,3008.72433383767,0,1671.62256169096,2103.4412772265,3947.10478273844,2654.34683949313,0,3076.95835877868,1555.9728806259,2031.90437670569,3356.51867397493,2460.80080170602,4545.96932892204,1290.49601547126,0,1083.80120952803,872.387195308034,795.154116252265,0,0,435.902275549251,0,1564.18899850155,3496.76915365539,4089.87746700716,1882.48599948149,0,645.274906574432,1433.98468412905,961.354155716568,2777.80661987681,1729.36447690592,0,0,1569.51388992337,2710.24420058877,1749.63332561726,3564.08565026753,3103.49686756214,1369.05565114721,0,0,1919.41552368997,1900.43849796904,1332.89016766374,1193.42439065495,2238.5816357297,1306.52639824638,2984.9546098268,3291.93285212525,2862.28413564706,0,1240.20002596425,1433.26484828939,2438.0690305426,1676.2650461167,4383.41431827224,4607.22935258724,5183.65809193211,6620.44352671199,7325.45720985395,0,972.984948181135,1105.97631875717,1506.89511304071,1304.79018607031,0,10224.9233066588,10131.4559945048,10161.4177521833,10182.2478718742,10061.3473842041,10118.5302521508],"Archive807_field3":[0,0,0,0,11015.7161782007,0,0,8590.64391502243,0,0,5795.42517642979,5538.69228541995,0,0,0,11050.1097753785,0,0,10694.7921425103,9754.82879832696,10835.1923876942,12038.0401795432,11837.9240533974,12470.8610183657,0,0,12384.2633253826,0,0,0,0,0,0,11534.3081833947,13069.1896155624,0,0,0,0,0,0,0,14166.7853325307,0,0,0,0,0,0,0,0,0,14262.3141208181,0,0,0,14871.7590741109,13193.0791421896,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9621.04967082074,4681.14164821369,11430.032235061,9586.86232243436,10554.1979428066,10318.6175799084,9466.33954035154,8749.97747595467,8234.9939833239,9560.90802826643,6626.37446328834,10628.5541954228,7592.97376378412,7246.74364889464,9790.34205261284,8767.52159482081,6950.95904467349,7779.70331361419,6888.06283091378,8133.62414498397,6070.1639023996,8291.50013102675,5482.34036072092,6305.78971480284,5973.15314485224,10927.7388734206,11837.8871518722,8050.77489287914,5662.09326046703,0,6965.98861504525,10468.8823307744,9188.94924305193,11479.2438029708,10061.3999343222,9771.61849668764,12497.1057359999,12756.8563142985,13381.3659730847,13511.5958228934,4534.98145672982,6768.6223936484,12496.3163030385,14371.2047816565,12461.9173728055,13207.5367276335,12123.323625759,14220.738924033,14711.3772169732,15719.7123783987,13482.5526460905,12488.090835296,12138.0178685804,11572.1585410848,10627.4870327008,10846.5216594762,0,14728.388817884,0,11300.3704211113,10099.0898620907,13566.6244733376,11135.2533607022,12331.9111199934,10211.1477946906,13222.9344836372,10074.5417670144,8358.24100888221,9215.54437867465,8571.23750725651,9029.43598211429,7041.38887221234,8996.23890806125,7964.37413544499,9364.19126735395,6361.09710737579,8055.15343764422,7015.57249413791,4977.85973433964,6145.31752826584,0,5446.11911011588,6123.8706079449,6825.02443146528,0,0,0,13270.3463476052,0,10411.1264217201,0,0,0,0,0,0,0,0,0,0,0,0,0,9301.09967086513,8028.94574384424,5566.20284758082,6525.19547797669,0,6842.30969529865,5974.41053411332,4990.80062019611,6489.89679814451,0,3804.00610109131,7766.06947875055,3431.858968007,9050.2323733734,9330.53991848445,5930.54994913815,8688.65225769566,9538.04974472799,0,7238.75951842388,6283.53590938452,7722.56634529674,4676.22854038715,7301.79651500043,5381.87064162664,4118.71697422711,5800.24796284736,4656.80693040881,6965.78924364408,0,8577.4727726524,7923.15458187226,6886.59629202757,0,3401.48619586291,0,4060.306798473,2929.94347208339,5799.16314482038,0,6927.45464015829,8090.99036665078,4771.94382193337,0,8500.9677816687,9144.2502453876,6992.0567868801,10722.1862352778,9630.84670417458,10001.2434922009,2335.16499559038,3478.76866891973,2593.26004191289,2236.32294599108,3474.3456681673,0,0,0,4964.12952930206,3664.1606271759,3035.09569670121,1418.69462096643,4007.81572597421,2415.56024395601,4517.42162611379,8961.36857456594,13323.1651517855,0,4864.27572490182,3061.95636807161,4442.33990357422,3820.55108233529,0,2044.92793584286,2772.73847496577,5394.28073141341,3454.53304021044,0,4124.66932356149,1997.1884051692,2780.92106104587,4662.5729234271,3514.95013485372,6296.37575646158,1619.43089424376,0,1458.04597464982,1145.71500119818,1035.1145493026,0,0,567.981373709521,0,2276.31212322331,5210.40806464312,5947.10427510829,2348.38915494402,0,804.319331173301,1974.67997315784,1181.71350836448,3424.76490540177,2082.12369969713,0,0,1874.53392854053,3270.85273777992,2119.75929739636,4432.35604891943,3735.83912795457,1624.14699455564,0,0,2260.69279469249,2222.47789632521,1591.43698423887,1447.02580507599,2766.08763378668,1520.42673864813,3541.38985460407,3868.62286149089,3269.23434862274,0,1383.27789541074,1630.27477231086,2810.49783677485,4922.60525773332,5412.83701408348,5600.40326553311,7819.65454873351,11327.4917680025,11434.8493598209,0,1060.93990753066,1163.24109278714,1543.97926558666,1540.85944410097,0,0,0,0,0,0,0],"Archive807_field4":[8995770,8366066.1,2069027.1,2698731,5532398.55,8680918.05,5217546.6,2383879.05,5847250.5,3800712.825,7264084.275,4115564.775,5374972.575,3643286.85,2226453.075,3092295.9375,2934869.9625,3013582.95,2305166.0625,2738087.49375,2698731,2856156.975,2265809.56875,2541305.025,2147740.0875,2592960.42304688,3348113.146875,2726198.55292969,2955009.41828613,3385501.02023202,2187096.58125,3322927.19560207,3615980.34601032,3799167.9452572,4112200.35158438,3898623.64085212,3733030.99065731,4485478.86421688,3414206.87010484,4122522.05040609,4173938.73326062,4430416.725,4643870.35100453,4555932.94761107,4466196.89475058,4891029.29891033,4252941.13561,4036851.7875,3876991.84515651,4238798.42725105,3246545.83818484,2856156.975,5141493.13292764,5121889.11919143,3459159.47365463,5135963.29785533,5399307.90594477,5533309.43806479,5912631.0221011,4810327.00871025,4824594.46451495,5128643.26449753,4519219.18791027,5128426.122899,5528219.9585469,3648235.25385438,3249721.9125,5677564.86512607,6791806.35,6194490.73662038,5861762.23566151,6004676.475,5713860.061753,6002564.18869234,5702880.19552416,5387134.81461557,6660747.03311464,6131420.08887104,6357274.06282467,6834570.83499271,6658841.00895551,8523492.075,7261479.66421003,6936703.83122667,7578936.225,7068369.25808199,5611111.5375,5462723.64768089,5806256.38569117,6398241.4125,6631957.14019963,6343041.55480422,6421801.78081992,2344522.55625,2541305.025,3442629.38163948,3404054.09623172,3585600.67398266,3256063.71058696,3056701.62576213,2761783.78964475,3215148.89037133,4062622.79637184,2462592.0375,3998703.43082607,2423235.54375,2880403.72271276,3753784.40364893,3581351.99528222,3637928.64986634,3508555.96128351,3238857.14784761,4057461.39554185,2869471.15669081,3782135.41724658,3369764.76005313,3408956.53971162,3772376.83514852,4764191.04596779,4232822.86190721,2900891.08930985,2501948.53125,4272990.75,4206109.19810528,4368249.82989597,4561827.39907642,4521888.89538821,4604751.60282763,5119423.43001803,5013229.91404861,4590705.77370609,4407115.22282038,4864886.22038275,3683950.82308812,3906295.55248381,3811514.46771222,5762764.94463899,6251437.84992443,5925736.29175443,5713699.38715185,6417820.38899745,6087621.08214827,6336266.86634408,6234901.09444153,6733249.54286626,5341878.14305374,5049544.82020172,5048132.82520177,6107490.66184474,6094784.50337788,6789466.7589842,6493891.69918067,5829351.35712559,5792930.14949529,6763766.95030373,7368622.95968463,7033899.54592751,7149495.32447672,7239225.36588139,5454060.4662377,5383948.07471914,5331478.48184639,4897527.09931274,5715369.83372733,5937370.13379795,6386438.17091159,5728092.71006071,6040312.00106006,5270548.83617863,6167553.8067024,5574001.84298875,5777267.49087734,5765618.30076324,7421510.25,6387815.5984402,6098321.86481251,6460940.81343323,7092727.75459329,7763532.30548483,7191610.1705803,7440985.69477849,7590226.01891741,7702926.78999512,8444779.0875,8074018.79972712,7798065.90292917,7590739.53700952,7926366.06891991,7430146.94227047,8484135.58125,8120774.74692543,8405422.59375,8014884.04805915,7185371.2875,7409593.76518569,7703591.57922561,4852212.8046968,4479097.35957484,6863145.39444849,8008235.58506312,8602205.0625,4752810.65204325,6581908.59755113,6680965.88768445,6764088.10431517,6634380.375,7202401.02819808,6632512.86492612,6394982.12930457,7741478.84470464,7522443.7791873,8168440.78860561,8175085.83906968,7949677.46027186,8562848.56875,4513697.75320387,4386931.311909,4805410.75689738,4623716.87638132,5114317.06656005,4422666.91475049,4110766.90316788,4789902.48874186,5153150.63105187,7004256.46511376,8838344.025,6982685.39944847,6891459.89148701,7404179.70891763,8641561.55625,8364008.57912602,8759631.0375,8245958.45951919,8396827.67508923,8038034.62131828,8720274.54375,7690449.48701012,5095678.90825055,3963657.65869581,3485860.875,7487499.39971643,7142298.23148485,7789354.89594386,6640587.82188574,6818891.84356161,6433059.61982831,3604855.74098089,3770161.01676209,2620018.0125,4150377.10885406,3224639.64888892,4823981.6625,4659007.8833875,4850843.36880368,2959378.37304627,2580661.51875,2898987.08602779,3096295.15789866,2935423.92554563,3187492.33231429,3264963.18725819,4235881.91166776,5231399.03320627,7972501.1625,7231701.20623081,7880141.13422346,7655807.59744669,7522220.65687807,8208640.125,7662007.11345972,8276860.75076804,7653924.33989551,7984955.59387517,8917057.0125,7972929.01945311,8349410.18246656,8378045.55048367,7982047.14389744,8284012.64693771,7349166.02691922,8135609.47392747,8877700.51875,8598584.70750672,8643977.20540123,8619698.70745586,8956413.50625,8583087.252096,8642467.60879502,8798987.53125,8475078.82292903,8019874.41228339,7783788.46568247,7872322.52887251,7815075.1875,8355000.64905269,8513960.5473371,7930731.53965616,6822349.15318231,6657428.36969315,6240815.4375,7027945.3125,6324197.21892013,5933222.59490463,7185660.9892403,6118286.2281819,5504707.43780276,5997029.67949575,5060120.625,5453685.5625,5657390.33672125,5185887.12881306,6936889.01067805,7454861.69645119,7386915.51050341,5430430.76629135,5199564.60496077,4866111.01507227,4473553.49967188,4666555.6875,4439149.70601457,4821928.08811871,4738392.41123538,8280754.65373118,5443578.64805444,5074451.1152489,7357653.84823608,6817288.44662108,6338415.74190144,3879425.8125,4050309.82012275,3693832.9220485,3403273.22967356,2659374.50625,3092295.9375,2552139.77402344,2575469.60671997,2108383.59375,2388862.72378699,2977479.2438058,2462592.0375],"Archive807_field5":[955.102511231366,1,1,363.293891999962,548.098618800933,672.111407785757,1,330.056933440516,548.67464514938,1,680.177032698822,453.08685540549,1,1,1,380.581498506366,1,1,328.835694292663,350.11624209291,353.182675608021,363.129533345325,1,1,1,1,383.880714538231,1,1,1,1,1,1,443.909167814049,482.776296099544,1,1,1,1,1,1,1,527.741660546292,1,1,1,1,1,1,1,1,1,539.500173814186,1,1,1,562.937396895608,548.212354585839,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,328.593284916999,322.131880753203,413.144348969075,407.881194425604,426.988537036284,398.742633595604,378.485734220854,347.660281328917,389.398773858339,459.187061709352,325.381549567195,455.895750949162,323.699835747816,352.732742780718,436.595316996375,421.09885937822,422.137434955857,411.728227310644,384.271908347675,457.968599841893,346.385927215256,437.195278860541,392.20789843579,398.406324482439,427.430180663308,504.995090642064,474.525597855125,356.837498769566,322.460417020392,425.812828317476,465.53290732792,478.344594088896,494.341420011216,487.927533118487,497.453269288861,531.893778012148,512.955491615228,502.725603419926,506.477479636092,521.323309983289,412.782160955801,442.752052788632,457.472745798795,574.474935725564,568.022454275308,560.885397307015,548.087362578051,606.578508690461,604.085288867828,651.774046147319,570.895047355277,575.037978320189,531.031476611322,518.97494973096,523.607528871728,580.449771594049,1,647.385455796283,1,562.035383773603,569.946585170266,609.634313478578,611.841723069956,604.556387792283,613.605414303373,646.550927008857,550.311091109662,551.666484635815,546.365050579171,518.636966415958,570.920493239362,589.900249697516,609.778378567061,574.696245741656,588.094574725098,540.681617315647,601.980091074582,563.105976211255,572.116047049073,575.516803091347,692.090099020704,620.234170452072,600.17825452361,624.01373673457,1,1,1,693.43880399201,1,651.7826274589,1,1,1,1,1,1,1,1,1,1,1,1,1,514.446474880967,488.624330407997,656.51981190717,638.795280345301,584.721093669586,506.389264567183,634.755971786312,642.809757376544,646.575033253693,612.224547082412,680.802475733493,630.775629367561,613.274915415759,616.657272605711,625.310714914036,625.554295559991,1,673.714832707653,499.778784952581,489.929195526669,477.599159001324,511.944223985195,484.793090735969,533.673161077264,475.304038848153,443.723663622501,504.450438842986,525.409194483079,657.283270271261,756.297574412705,639.598131245371,642.816745212068,672.355185504291,657.386774822496,639.912917800893,707.023057203069,673.594338907833,663.679987681858,658.624670683186,692.391757863894,666.394502385983,532.4266158089,437.433168570172,372.415333590694,643.511378819953,634.773885883387,657.121980128055,602.579900921399,622.313818652076,602.039318924934,394.826555049925,411.74032014223,316.182748214582,435.062007808919,370.504491095667,1,1,1,350.379953996367,319.557359142074,336.992642118956,341.84396505273,343.073952299498,361.908117251157,380.075869592372,471.107225460257,533.216837429263,1,683.121615078188,738.234028697396,710.952910475978,709.331441464984,793.10705884446,724.526451228294,749.771767517419,698.868864461474,738.430653573173,825.753788839706,722.439566521719,777.77186110557,725.687352634061,706.897243520548,704.126688781501,678.415309128321,775.174166053495,786.088583103752,754.7409098182,784.873183039952,821.099995491883,877.589735667209,863.839668601781,864.528476725561,738.381295423787,693.582494456318,680.815690997622,684.530532365049,742.845110714728,736.673715994144,812.36953382796,706.621736119268,756.518816059761,648.904277208233,624.112050356007,576.937885103385,649.844456030139,595.397083626925,574.49948820646,675.347467372823,596.314563317104,545.908103066992,568.787865097736,487.389913746554,514.148500650775,546.367850013897,510.57018329391,648.87817095374,698.960207986343,699.535694794702,522.333744801391,521.766574114267,499.111147918017,464.969824898661,456.647694579272,449.204257486164,478.642883875453,482.152989535221,572.201326917908,550.458234777674,523.770980158304,657.006306825089,595.015846183306,583.175395306448,397.519229706511,418.338175633163,392.60288836309,370.573332370274,318.992849731026,354.34578236331,1,1,1,1,1,1],"Archive807_field6":[98.9646785831132,0.103616813294233,0.103616813294233,37.6433553782952,56.7922322511231,69.6420422534607,0.103616813294233,34.1994476487729,56.8519182657227,0.103616813294233,70.4777766041791,46.9474161026216,0.103616813294233,0.103616813294233,0.103616813294233,39.4346420739734,0.103616813294233,0.103616813294233,34.0729067400023,36.2779292882194,36.5956633572339,37.6263250582644,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,39.7764963255646,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,45.9964533609865,50.0237413358276,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,54.6829091084134,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,55.9012887823106,0.103616813294233,0.103616813294233,0.103616813294233,58.3297791504735,56.8040171907125,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,34.0477890529833,33.3782789441246,42.8087008706959,42.2633495690264,44.2431915208662,41.3164410177263,39.2174856572928,36.0234504602788,40.3482600478827,47.5795000402652,33.7149992708921,47.2384649077333,33.5407454440552,36.5490427514722,45.2386154463497,43.6329218906074,43.7405357823273,42.6619668572124,39.8170305814795,47.4532469044385,35.8914059480129,45.3007815828126,40.6393325847446,41.2815937391384,44.2889532261102,52.3259820215628,49.1688302762886,36.9743644863871,33.4123208251823,44.1213683300611,48.2370363409184,49.5645424960147,51.222082620908,50.5574961002538,51.5445225265096,55.1131382886488,53.1508134029464,52.090824987793,52.4795824451865,54.0178600764698,42.7711721029472,45.8765567894379,47.4018680886337,59.5252621572921,58.8566765915764,58.1171574922225,56.7910659171783,62.8517320832736,62.5933925904103,67.5347496496733,59.1543255324139,59.583602836696,55.023789365396,53.7745304706567,54.2545435585564,60.1443556099405,0.103616813294233,67.0800179026452,0.103616813294233,58.2363154252218,59.0560489032729,63.1683648374675,63.3970895849613,62.6422063597088,63.5798376502029,66.9935466890898,57.0214815812553,57.1619231391949,56.612605436356,53.7395097166096,59.1569621538342,61.1235840351288,63.1832924028431,59.5481935959096,60.9364857486417,56.0237061930191,62.3752587037202,58.3472468019482,59.2808416297183,59.6332171336097,71.7121705730153,64.2666882384357,62.1885581422314,64.6583148522624,0.103616813294233,0.103616813294233,0.103616813294233,71.851919084216,0.103616813294233,67.5356388178333,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,53.3053043376173,50.6296960149049,68.02649077435,66.1899312967761,60.586936391961,52.4704418808616,65.7713910159815,66.6058986137964,66.9960445013602,63.4367565891844,70.5425830183287,65.3589606187307,63.545592408671,63.8960614821167,64.7927035981308,64.8179426484449,0.103616813294233,69.8081840342241,51.78548504885,50.7649019802805,49.4873028877227,53.0460290737348,50.2327151691229,55.2975122914858,49.2494898513238,45.9772320078056,52.2695469377874,54.4412264078264,68.1055978971199,78.3651445628023,66.2731201485917,66.6066226710452,69.6673017238073,68.1163227088804,66.3057373283427,73.259476112928,69.795698850665,68.7684053707497,68.2445895331551,71.7434275010487,69.0496747340315,55.168349243151,45.3254309564402,38.5884900885763,66.6785983919013,65.7732472176335,68.0888855264651,62.4374090886298,64.4821747576932,62.3813957048319,40.9106694382131,42.663219877885,32.7618487886077,45.0797388345508,38.3904946785344,0.103616813294233,0.103616813294233,0.103616813294233,36.3052542752834,33.1115152190223,34.9181036799701,35.420782302629,35.5482296615316,37.4997658148805,39.382250417196,48.8146294220795,55.2502294892492,0.103616813294233,70.7828848468112,76.4934575189873,73.6666749857807,73.4986635340062,82.1792260386245,75.0731220236551,77.6889612481392,72.414564646057,76.5138311620297,85.5619761652091,74.8568856806474,80.5902417176838,75.1934109278695,73.2464397000764,72.9593636469591,70.2952324218984,80.3210768344776,81.4519939481894,78.2038479381517,81.3260580667008,85.0797649287777,90.9330517895642,89.5083136576626,89.5796857604198,76.5087168278801,71.8668078322285,70.5439523418846,70.928872366271,76.9712431434616,76.3317828889338,84.1751423125746,73.2178925011167,78.3880689172382,67.2373933373145,64.6685017964192,59.7804651231269,67.3348116707671,61.6931484501017,59.527806207121,69.9773524355027,61.7882147718603,56.5652579913012,58.9359860218573,50.5017896941688,53.274429197441,56.6128955048613,52.9036553559673,67.2346882904169,72.4240293710189,72.4836594801939,54.1225581123631,54.0637896931694,51.7163066268913,48.1786915339766,47.3163789104622,46.5451136789182,49.5954503331359,49.9591562959271,59.2896780579651,57.0367281392311,54.2714798600002,68.0768998274285,61.6536458410855,60.4267760532585,41.1896758053667,43.3468686384314,40.6802601822947,38.3976277920323,33.0530225527749,36.7161807727379,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive807_field7":[-0.999999996730779,1.00063816724335,0.999309347981155,-1.00000003385727,-1.0075396706955,-0.974688758376387,0.982176880170349,-0.964908132653435,-1.00000000000319,1.01806231044448,-0.999997230169759,-0.999999030559515,0.714167631203239,0.983538410230455,1.08872422877078,-0.0432144076113229,1.00405835971069,1.00541877760397,0.45567280176065,-1.10431278341383,0.245395974671754,0.980086511917319,1.04246836766846,1.11016093193994,1.00241438217331,1.0030885595173,1.00821818257671,1.02869936372484,1.00198521161336,1.00858237659619,1.01459173070308,1.00858896953638,1.01215328227212,-0.378588694535754,1.0298610572273,0.98716766419485,1.00673521815483,0.992765702215036,0.992148057021615,0.995210472416996,1.02690496363055,0.960878830228926,1.07044388862221,0.920761028707648,1.03275272756362,0.973112843803726,0.964570158305909,0.974289004433319,0.98033453261171,0.966256181235742,1.00365530402331,0.995568338520037,0.498596844854053,0.797135282765435,0.992563605112074,0.949616883660353,0.802921004602283,-0.821960876282313,0.485755000972803,0.912333436379108,0.873046392963685,0.948480458095446,0.95436545710131,0.826055638734434,0.721044948488661,0.989189943073738,0.992021997892992,0.568156169698595,0.998737983316497,0.972620219581216,0.895135647247235,0.993859165945978,0.983076444967162,0.988168661994375,0.939885697748361,0.919492667664032,0.991325834149486,0.988395815547171,0.971421921965477,0.89469899258383,0.952642074973952,0.947334458258438,1.00100089234675,0.986526058561828,0.99774747961462,0.999046602145652,0.996100713439259,0.983954956357015,0.992018794710842,0.997700225759373,0.996387877252705,0.995506803264335,0.98654388576208,-0.679499741644054,-0.999937904519317,0.189138990772357,-0.995246235568163,-1.03087138618001,-0.904612669245308,-1.00863074579651,-0.985656856863237,-1.00362651287599,-0.999039521908192,-0.999392398387375,-1.03754162368268,-0.996768311095416,-0.998971923835111,-1.00784939399309,-1.00237558149663,-1.00005325068922,-1.00063706132428,-0.999857058618297,-1.00000172535262,-0.999829244830789,-1.00002312890859,-1.00001859716677,-1.00001911060366,-1.00000116066079,-1.01189960470574,-0.818204500624944,-0.999459122242875,-0.999810973726503,-1.0000000097226,-1.00000447225172,-1.02256528268418,-1.0004696411202,-1.01508885405336,-1.00295548748017,-1.00074726321591,-1.08540867138197,-0.793410477935445,0.873359445316516,-0.150011074032699,-0.999996925456122,-1.00000028911638,1.01794527414113,0.376279451991644,-0.978043047056366,-1.00876076290236,-1.01674346595541,-0.659797006775039,0.129836940559463,0.999340842006836,-0.946970184822746,-1.07247721499553,-1.05231816017559,-1.03154378314064,-1.00279495369387,-0.999735530038375,0.994347799687867,0.934082668823925,0.958985882038729,-1.01086675354123,-0.998897843765415,-0.610486665752402,-1.03371642037978,-0.95871790308955,-1.00902614762596,0.645036156699534,-1.00074249607959,-0.999986389150571,-1.00010136797178,-0.999822367270595,-0.999986320481949,-1.00000059377431,-0.999914234872991,-1.00000050363483,-0.999745215604506,-0.999999257439376,-0.999987756602062,-0.999999390199125,-1.0000000545601,-1.00000034377237,-1.00000000839285,-1.00000000913474,-1.00000004855038,-1.00000078017234,0.885296511254418,1.02750553894154,1.00315605120102,1.04674223451187,1.01198175554911,-0.280062838522183,0.999242083150867,0.940584326920014,0.989799867287467,1.00242855933982,0.980887213465308,0.996504546996581,0.9700567011775,0.992842863324086,1.00046226329775,0.996441203383545,0.997992992300265,0.997237755468095,0.996260976209241,-0.999392778864878,-1.00002529686894,-1.00000008901886,-0.957833845417906,-0.497613513304545,-0.999998155910335,-1.00000013183921,-1.00000000783279,-1.00000112813926,-0.999999999851753,-1.00000001124445,-1.00000558611232,-0.999999998764192,-1.02815846138256,-0.981030057827843,-0.51488786377154,0.892868875149779,0.564395886612036,0.30576556883487,-1.00000214003839,-1.00000013988985,-0.999971344339797,-1.00000003165652,-0.999990080847012,-1.00000026715803,-0.999999932665573,-1.00000205508057,-0.999999984794749,-0.999993871134877,-1.00000159915204,-1.00011369679295,-1.00000880444302,-0.99996991641856,-1.02925426349171,-0.96845489491773,-1.00032099705681,-0.998340442841463,-0.991493448082707,-1.00362775915887,-0.994791464507408,-0.999815670085216,-0.999908449282157,-0.999999903121435,-1.00000033121406,-0.997800844313142,-1.00089770707145,-1.00100982987575,-0.997835081290025,-1.00029108488652,-0.999925232509743,-0.999999645002848,-0.999999357105597,-1.00000191886111,-1.00000013994466,-1.00000254950656,0.96267603013359,0.949778135583864,0.881935095706108,-1.00000811128707,-1.00000121242418,-1.00000479712902,-0.999998834311648,-1.00001414983365,-1.00000058295614,-1.00000325768742,-1.00022332247966,-0.631325617908906,0.998595714355805,-0.999999419903115,-1.00000009973211,-0.999997045871316,-0.99999960032325,-1.00000000260944,-1.00000009679372,-1.00000229377679,-0.999985165458098,-0.99999681229545,-0.999999948376469,-0.999985383972125,-0.999999865236798,-1.00001946467923,-0.999964025326755,-1.00004506899089,-0.999990645065618,-0.999999993372816,-1.00000015581145,-1.0000013770628,-1.0000001763245,-0.999999982412264,-1.00000001367762,-0.999999999319826,-1.00000000030104,-1.00005459186867,-1.0003861248445,-0.9993958522404,-0.999824183806232,-0.999999996769866,-0.999999973836326,-1.00000000352368,-1.00009015281404,-1.00000000092695,-0.999999999374257,-1.00000000013785,-0.999999999490932,-0.999999998987782,-1.00000000066543,-0.999999993550023,-1.00000000176707,-1.00000000464008,-1.00000001262092,-1.00000000130168,-1.00000000133573,-1.00000000104147,-1.00000000059374,-0.9999999975225,-1.00000000022268,-0.999999975377616,-1.00000009051458,-0.999999996907549,-1.00000000665197,-1.00000000664744,-0.999999986389557,-0.999999998553579,-1.00000000008731,-1.00000000057457,-0.999999997079216,0.115654207572858,-1.00000001855309,-1.00000031722403,-0.999896800031831,-1.01294238849133,-0.996502918319809,-0.999999957571182,-0.999999980251329,-1.00000000189189,-0.999999928630172,-0.999999620536255,-1.00000037819492,1.00283167408147,0.999134925006963,1.00035846699732,1.00164479280142,0.995642644481535,0.998306227123935],"Archive807_field8":[0,4898.17550208648,4313.33146655427,0,5176.82040836531,0,5388.33686538036,1527.41715013314,0,4605.59045969966,2348.82500196254,1868.24209361667,5845.23872760606,4747.50519383056,3731.48138506331,3196.7439934607,4332.24166321126,3982.93331449346,2707.9843098519,2311.94256871387,2910.73272443495,3517.10052187122,3308.80886099105,3600.99205174554,4184.30781565347,3987.37044608056,3937.36043891173,3838.61670894957,4184.96038638272,4347.7052668963,4007.81043941752,4147.59362461619,4324.56570787902,4226.99428872834,4835.50498946859,4819.72470278193,4656.21411156696,5221.37211393261,4550.42782140643,4943.24404485183,4970.01128878261,5116.63750913786,5562.59848514108,5181.5297697373,5274.69251326949,5575.86299786107,5025.83098106701,4934.17857270441,4837.49663713872,5018.56455622955,4388.68974998584,4436.11695850694,6035.62298898496,5491.364742405,4637.61244989418,5820.64327515042,6030.59588456959,6325.69049572256,6134.13516619037,5397.67160210648,5336.6548846508,5389.20018739268,5198.90053576073,5614.8092886745,5698.87291784871,4700.83479971922,4576.61916274314,5899.21126716158,5298.64715531704,5791.00769245477,5784.75132862586,5455.97583591141,5541.74567732564,5630.28965933731,5636.4861689386,5511.9515423616,5451.52817875873,5490.40009189083,5598.35179101239,5648.43993487406,5586.93073040145,3983.87236328527,5189.47229426514,5378.18823153296,5032.27542564606,5232.4247024311,5453.57037778783,5451.23016721943,5480.38807009146,5405.4241790411,5375.27631114802,5435.15788623936,5470.15699909287,1701.66292954664,499.126279143439,3750.31520496399,3099.08450577262,3638.24819904569,3184.07217378025,2656.91320390877,2064.4366480227,2406.68461602825,3722.37424586125,1080.9933750788,4115.19188710059,1331.78420574274,1714.17588919737,3540.26542262302,2973.68526592886,2250.16662590754,2502.08379812146,1919.63705701806,3050.72487586752,1296.48002549562,2937.3978037766,1495.73962330656,1831.02903593277,1915.36756899199,4847.30355683683,4848.61884913526,2004.79015714791,796.228156734263,0,2556.20448250898,4369.9906819146,3838.63010651913,4944.04818712375,4321.11948371184,4360.26391521389,5744.22720286791,5558.09013003009,5246.3075978436,6108.83956374581,1305.35191411959,2327.58917753056,4416.96142255168,6282.35258676537,6091.95509786408,6435.67058263673,5818.25545290759,7105.66826382054,6482.85162243591,6223.42848706815,6647.22117799081,6127.44879182959,5722.78931148814,5319.87239861591,4816.51791994645,5154.07833347333,6000.08810624171,6162.78309331628,5858.63025817932,5386.65769700025,4682.18064414424,6761.98735065187,5392.36741038588,6048.89529907508,4840.65468800468,5587.45951112253,4619.11390431261,3592.90120047349,4089.55590510616,3629.3969499306,4030.27853446734,2874.81300955813,4060.06248436992,3393.70076269398,4257.37962140285,2450.43633782473,3482.50970262968,2831.94305221061,1780.33309159367,2366.08090076005,0,2050.68391848377,2372.76473508548,2794.42860457571,5593.45307545513,4627.58901732661,5327.49890333195,5175.85781283575,4921.37971483853,5119.26845717812,4737.14596055672,4467.50595370943,4906.24480428623,4971.31462403627,4741.70566425552,5078.02384551348,4471.83534007936,4780.85036199417,4861.43839850057,4901.33450432626,5163.07971612443,5090.59670697201,4984.13205064435,4014.21010642266,3200.37950399561,2164.29736468526,3034.65548296639,0,2647.7061427141,2343.33589666459,1859.02256583141,2643.57619969784,0,1369.57750026305,3353.78564294646,1124.67090299305,4282.55243674372,4389.03541342752,2810.15711654957,3920.19192829959,4162.33439857472,2945.71699242308,2799.80263093811,2291.85500793216,3135.84713360308,1564.92928405462,2953.65489483182,1855.57243337719,1256.67217713685,2113.54298245773,1600.70912635579,2943.81952246878,0,3871.27752761228,3479.66635120685,2975.8965749852,0,1516.71282645243,0,1773.31782107339,1288.71522482772,2606.1763487638,0,3083.90787668105,3396.83258903076,1495.14564368902,0,3924.13482657113,4228.61805776609,3152.16533585898,5116.39158898005,4476.60752961782,4674.56942503298,556.383371887562,959.403543292821,90.7453146594341,590.878160827357,746.195515270487,5271.39042432513,5212.02696934965,5302.38626834673,1000.0167073935,241.532057798825,406.816768620119,192.709275764101,687.697818664812,441.309432082455,1090.85600661575,3561.15280884706,6258.22898934045,4934.91260567241,1878.24301312335,1181.60926590594,1752.91978428412,1433.91826202805,0,719.9324969592,1136.33047552829,2226.06971446988,1373.82423803274,0,1677.76114902735,826.61264106715,1161.12963819748,1942.53123612926,1484.76137654077,2642.49861165275,647.904154702229,0,622.990961722635,505.247653654541,479.758725195599,0,0,287.171823359957,0,965.935923873556,2266.47901830619,2568.12377931862,883.594511777979,0,343.590813704696,818.638559944826,438.08127495678,1159.12034271031,645.603232138235,0,0,555.977189600602,1035.61315961692,682.97339661934,1550.8981206687,1207.86386677629,474.029837788842,0,0,662.877653037804,645.994567595725,482.138756884668,477.194452296354,968.099542220901,418.154884643019,1124.00322749013,1243.73973669599,981.117508463804,0,348.503347927668,442.620641601931,830.473548794291,2770.9697910288,1969.65832989084,2041.57806917972,3498.1308237883,5477.65151251546,5511.0763307172,0,246.400074530191,235.964621098471,291.579911315557,6.09848735658872,0,4185.66468467326,4329.25897640806,4280.365896432,4248.48686698913,4436.77574215655,4346.29703667654],"Archive807_field9":[0,1492.75661518318,3821.01406425959,0,2913.59213991636,0,2938.83220771262,3086.91594192081,0,3897.10142026865,1808.2904865393,1803.93738495662,3147.44213112641,3627.53559929333,3961.51176632271,4424.10100476973,3827.69970603381,3973.7705861471,3914.96230994093,3737.10629126305,4019.5902023674,4080.87622472884,3974.97696542746,3997.01690018094,3862.39531804977,3925.24483571129,4088.43415508067,3972.22666571502,3889.6229029467,3891.27294237437,3909.58167769835,3985.89383746141,4015.92299914863,4307.32465926298,4020.64896870577,3647.39159158806,3776.4582966777,3605.42441007487,3755.27678817206,3668.23661112681,3791.76148333295,3350.366670758,3874.00911798736,3373.70893138084,3760.81223324479,3493.10288277624,3535.24435254858,3506.59257937261,3586.31941680209,3472.50095725984,3833.29710437952,3775.81055423254,3598.67894712304,3139.36547560404,3694.28897970879,3410.15445610277,3241.9234676844,3256.82073331337,2691.2463238227,3380.79765397549,3282.10601778334,3037.34172525582,3478.91020583554,3239.64622940261,2904.56756158785,3679.23439599261,3715.71493963776,2853.97892965419,1970.18374051169,2379.04653258025,2649.69610494041,2446.71347236174,2686.30346293884,2505.85019819985,2731.94173745241,2919.1832457277,2035.0495731682,2390.87880627048,2246.98273312652,1824.65141464576,2010.67764989544,936.273747377735,1626.98464901055,1833.22030809895,1618.38952171644,1820.16426429491,2698.11407328926,2817.24808360037,2594.91498440777,2198.39082353851,2069.82302200222,2245.67397532301,2199.43665311399,3645.69186960146,1336.02502824883,4169.17050675931,3522.56860590662,3930.52506678021,3950.27592716276,3535.91230487464,3184.22695081155,2922.5924485191,3251.73372789816,2147.64167361014,3734.00612100533,2579.79641018873,2495.78459003633,3486.45494891783,3093.31385188417,2367.88249295673,2702.8851070778,2364.65096488215,2729.62409755821,2006.74612632678,2853.8313265048,1817.21436517673,2136.35643891212,1988.86470551104,3354.52033745511,4104.32404428949,2856.15003395158,1740.15673061876,0,2295.6342170805,3441.221436194,2927.31533172696,3724.23118651386,3175.12298926795,2874.3065774316,3627.36732267152,4141.43460479951,3994.15511261156,4097.98797786184,1453.30678170827,2267.94107001288,4111.54395169103,2927.21347199093,2515.18788571846,2843.45516986422,2939.42290575385,2211.06216302038,2569.7033502163,2271.52191707082,2502.23280035967,1988.28901212378,3240.02574032087,3332.33677809067,3108.52269017628,2596.28430621569,2485.99453329454,1783.70603091736,2126.36885823243,2785.1705145807,2675.01902649449,1726.21165061721,1271.34778480988,1571.14968756293,1905.99799834004,1268.92102436985,2797.56608441835,2497.87764060447,2683.73268278814,2648.24991500427,2553.90761071202,2175.61823207278,2385.71887566584,2372.86993350414,2521.07232146022,2030.28822989898,2328.67332177033,2187.72835009806,1656.10837230728,1975.13844519943,0,1812.88887585241,1979.1747012024,2104.32530410082,1521.85973734896,1011.91940596166,1561.11803970057,1143.58301001898,1339.29725768056,251.185902041211,1362.34511796216,1135.1120404857,1476.24402862049,1477.28239997062,1330.0884975215,1628.712443105,1185.13196163234,1386.10125025842,1460.79926896172,1491.381380077,1771.27088611907,1674.11631405264,1562.86027486122,2857.03165114712,2594.51364901599,1834.33777833663,999.915676485159,0,2189.401318508,1932.89403013962,1699.65648675983,2010.54125688072,0,1394.36898723309,2205.6641277058,1229.0071176266,1026.2392544116,1506.22696734183,568.782416340979,826.393481771153,620.339402687099,610.044034831281,2338.13543759803,2041.70719691896,2436.16439172541,1512.97098538789,2284.89331067315,1746.1050565092,1309.3508607205,1872.11664034793,1527.45556061714,2023.59220126624,0,2122.92475852033,2131.12348920144,1841.80829880972,0,625.476570567195,0,910.823339939286,609.891174549722,1148.65968342612,0,1593.10366828901,2486.37753200817,1535.90027125929,0,1710.81063972511,2004.33362051723,1462.29582976825,2285.00328939231,2218.36070015139,2406.49187354475,651.063247408264,1062.91930546943,500.002138309231,677.440822899922,1017.74420887146,3159.60118389711,3272.55418113667,3207.31168510267,1579.01709569467,920.326040914611,779.866655534926,275.304511099857,1187.11891887617,626.632668078712,1434.21829423378,2965.04968600604,3622.70830827316,1524.71396140465,1645.16451366173,1144.93194085088,1483.92217732286,1388.2608247788,0,854.680401739835,918.369397953175,1605.27796174826,1190.58798942044,0,1292.40180046113,771.32840397224,815.126239344615,1316.14192664341,908.068034399968,1821.36396945652,703.916606252457,0,475.389862555425,430.379552374643,452.237692498888,0,0,295.888554840224,0,555.262960116864,1250.01997368419,1525.50986085325,949.350581382809,0,407.377138117378,543.551734490804,528.791029447261,1256.339353017,781.419129062554,0,0,684.68856867708,1141.10658391252,841.319487852443,1512.9322876255,1258.19015720682,577.612227282674,0,0,789.728749010371,737.030894090164,626.856345409308,594.117301069874,1077.42455399299,520.313144602628,1178.4229995756,1264.29085326528,1041.58475649582,0,425.785380439226,531.214265061639,909.717099381547,517.351062419322,1770.31919410507,1813.46382502211,1880.6060885673,2083.88251985866,2472.2306165046,0,299.522449097811,299.739052887329,365.771269667444,172.977103168396,0,3866.84499741929,3816.70621313795,3832.45117624796,3843.60904454958,3779.17065919928,3809.57695227122],"Archive807_field10":[0,0,0,0,5940.41149233368,0,0,3444.13315407603,0,0,2964.26945022764,2597.02110295726,0,0,0,5458.19034663794,0,0,4716.80922137485,4394.43305481255,5102.23064511868,5997.29082690939,0,0,0,0,6281.00267055044,0,0,0,0,0,0,6034.94212376863,7075.45803436747,0,0,0,0,0,0,0,7736.74982657525,0,0,0,0,0,0,0,0,0,7750.05756462069,0,0,0,8042.68023616702,7114.86061259211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4023.27303744992,1426.21524274524,5813.19706679066,4691.78157603685,5355.91983308626,5073.75556255554,4422.87955984206,3794.8912959364,3785.98434507697,4942.65538586311,2404.35260209297,5556.76218488463,2903.27378810344,3027.76149968395,4968.78731416971,4290.85010773633,3266.51455603662,3683.20665112411,3045.74795680717,4093.62553028576,2389.11918330514,4095.44369974387,2353.61531897927,2813.66063421127,2761.19824372931,5894.84168290573,6352.52552963957,3489.52383437035,1913.66787209647,0,3435.71212633274,5562.26784081291,4827.44820231546,6189.79082095704,5362.2271109579,5222.40746317088,6793.66910084329,6931.36685505599,7290.10010182039,7356.04691952725,1953.4697902591,3249.80431355621,6698.91258750114,7703.91456536946,6590.75769656699,7035.84345698818,6518.61208649198,7441.72811678893,7819.94252022777,8397.2300266383,7102.58533045012,6441.96568542755,6576.32756951969,6277.3808821969,5732.51761344926,5771.06711677148,0,7654.06842815486,0,6064.09564073174,5392.45235273401,6978.84514752279,5540.21222323954,6249.6116423264,5202.38081825792,6680.09098236015,5400.23974076169,4375.88068207939,4891.51189446105,4492.85542083046,4771.32991412677,3605.25512712376,4709.11477145082,4140.98014823033,4947.8365869104,3182.24897552002,4189.34282059068,3578.55512529662,2431.51822075216,3082.12762659925,0,2737.12816830293,3089.84546311703,3498.14468133466,0,0,0,6883.3585920086,0,5125.42719137079,0,0,0,0,0,0,0,0,0,0,0,0,0,4927.12011566212,4119.94296617386,2837.07211184639,3195.14714221094,0,3435.66965112342,3037.64752009614,2518.88806286726,3321.26049403361,0,1954.48392210942,4014.079269656,1665.93611378589,4403.79636004605,4640.29649240958,2867.14081566164,0,4757.24448944607,0,3647.70778664625,3069.39206608319,3970.9487769093,2176.71423634737,3734.27565652602,2547.94660930647,1814.83460327915,2823.45261227525,2212.55286871499,3572.25401922845,0,4415.15562875585,4080.4123862604,3499.74545282553,0,1640.62144879732,0,1993.55342319052,1425.74688339003,2848.08255308451,0,3471.09018750181,4209.57775430939,2143.46685047766,0,4280.85355765706,4679.59014666895,3474.83170791746,5603.45455271295,4996.11240568176,5257.64228974262,856.414507489666,1431.87031843754,508.170099913841,898.923283419694,1261.98693404535,0,0,0,1869.044783723,951.492383852912,879.597569144974,336.04975643118,1371.92551450509,766.434938888086,1801.92922798997,4633.93234396487,7231.14413975081,0,2496.87066011809,1645.31747892476,2296.68299912837,1995.84310500427,0,1117.48887658718,1461.04390786561,2744.50427366303,1817.9364118578,0,2117.82550910615,1130.59098048161,1418.67995783711,2346.4136835619,1740.43210162484,3209.38710999797,956.701825146366,0,783.653788230848,663.703059075078,659.308247269837,0,0,412.332017938601,0,1114.15850035226,2588.33480736778,2987.04537653218,1296.92165824156,0,532.926617765486,982.658424833624,686.684175070062,1709.37080202747,1013.6169831905,0,0,881.991537053079,1540.97983511149,1083.63791975459,2166.62158385663,1744.12659871808,747.221635273342,0,0,1031.0568752064,980.063018487349,790.82656674533,762.030125869685,1448.46829209179,667.517247715062,1628.51589532831,1773.50497441841,1430.90543725946,0,550.225202723911,691.448933600365,1231.77575725217,2566.22388986398,2648.31719881233,2730.69442765378,3971.59898790075,5860.65119667903,6040.1892804923,0,387.848803326805,381.47451059794,467.768603474969,173.084574034108,0,0,0,0,0,0,0],"Archive807_field11":[8591882.51745979,8995.77,8995.77,3268108.2948365,4930569.11205087,6046159.63881688,8995.77,2969116.26013619,4935750.91259544,8995.77,6118716.14544108,4075865.14125104,8995.77,8995.77,8995.77,3423623.62681862,8995.77,8995.77,2958130.27364711,3149565.18713214,3177150.11775437,3266629.76218187,8995.77,8995.77,8995.77,8995.77,3453302.61542159,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,3993304.77454659,4342944.52116339,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,4747442.59769252,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,4853219.47859244,8995.77,8995.77,8995.77,5064055.3468716,4931592.25301265,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,2955949.61465779,2897824.30892324,3716551.54012554,3669205.41237802,3841090.67181489,3586997.02102033,3404770.61333193,3127471.92897023,3502941.80791163,4130741.19411314,2927057.58215008,4101133.31951594,2911929.27142513,3173102.6255245,3927511.05477648,3788108.48622881,3797451.27325285,3703812.43539428,3456821.70495676,4119780.1913997,3116008.13246519,3932908.17371529,3528212.04651173,3583971.66158939,3845063.59630557,4542819.68654516,4268723.1374172,3210028.0663063,2900779.74561953,3830514.2665935,4187826.96175328,4303077.94916707,4446981.71589429,4389283.86460129,4474975.19627066,4784794.09142834,4614429.62280752,4522403.90147687,4556154.91698597,4689704.59224837,3713293.38006137,3982895.63391439,4115319.60247442,5167844.39255196,5109799.35349619,5045596.03053253,4930467.85365876,5456640.75112239,5434212.31903854,5863209.41111067,5135640.54014718,5172909.39423341,4777037.02635583,4668579.28354128,4710252.89999843,5221592.6418126,8995.77,5823730.66168853,8995.77,5055941.04428907,5127108.39247712,5484130.06816119,5503987.41714102,5438450.21661019,5519853.17782786,5816223.43265847,4950472.00407157,4962664.81249232,4914974.33104859,4665538.86337569,5135869.44546785,5306606.96922143,5485426.04456221,5169835.24655541,5290363.5324748,4863847.47259958,5415274.443886,5065571.84762192,5146624.37256264,5177216.79174504,6225883.35006748,5579483.94352764,5399065.53669586,5613484.05250475,8995.77,8995.77,8995.77,6238015.9897872,8995.77,5863286.60661595,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,4627842.16533996,4395552.09275435,5905901.22836016,5746455.41907185,5260016.47280005,4555361.35451553,5710118.72831615,5782568.73111519,5816440.28689258,5507431.21390755,6124342.48712908,5674312.48339582,5516880.08584962,5547306.99318828,5625151.36990224,5627342.5653697,8995.77,6060583.68062653,4495895.00031288,4407290.35924294,4296372.18656934,4605332.4917993,4361087.14184991,4800801.01222402,4275725.81354905,3991636.02150539,4537920.12423057,4726460.26945505,5912769.1242081,6803479.03097458,5753677.68111317,5782631.59207637,6048352.60710394,5913700.22734497,5756509.42856573,6360216.80729565,6059499.74611692,5970312.52278882,5924836.05379168,6228597.00363928,5994731.67272876,4789587.37769523,3935048.1748285,3350162.68545516,5788880.35624717,5710279.8794132,5911318.19517655,5420670.19531169,5598191.98041579,5415807.24400536,3551768.87912146,3703921.21972587,2844307.28090629,3913717.75798724,3332973.18586367,8995.77,8995.77,8995.77,3151937.4787619,2874664.50464949,3031508.30019444,3075149.6855024,3086214.36787726,3255642.18392445,3419075.10540297,4237972.24557862,4796696.02964105,8995.77,6145204.93127191,6640983.52833517,6395568.86347249,6380982.50118746,7134608.68674123,6517673.31416595,6744774.37308017,6286863.5648566,6642752.32049395,7428291.16103056,6498900.17932909,6996656.77497766,6528116.51620491,6359085.01634484,6334161.74313997,6102868.08539728,6973288.50775905,7071472.09322724,6789475.63431527,7060538.63379531,7386426.70644601,7894595.41642301,7770902.97561784,7777099.3350735,6642308.30593444,6239308.59615531,6124461.36860568,6157879.22713354,6682463.76161423,6626947.31412864,7307889.48132355,6356606.61512963,6805469.26994592,5837393.62978151,5614368.45923106,5190000.51867648,5845851.26222225,5356055.22297858,5168065.26102303,6075270.48656842,5364308.65925111,4910863.73632696,5116684.81321026,4384447.56438384,4625161.65769922,4914999.51411952,4592971.93776986,5837158.78392053,6287685.2701973,6292862.21716333,4698794.23147201,4693692.0944199,4489889.09110646,4182761.60172863,4107897.63146538,4040938.18336631,4305761.29548028,4337337.39867125,5147391.53064831,4951795.67466596,4711723.27017867,5910277.62474793,5352625.6986204,5246111.72583588,3575991.56101694,3763274.01021554,3531765.28505003,3333592.46613654,2869586.30782487,3187613.15861039,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77],"Archive807_field12":[918.256266515137,1,1,364.827728076376,498.933587049729,588.679221499998,1,340.350704295884,499.686939919117,1,616.772168639408,433.394965543015,1,1,1,387.039745820291,1,1,1,360.831747227589,1,1,1,1,1,1,1,1,1,1,1,1,1,433.100613451577,458.162824893743,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,495.530431432363,1,1,1,511.094734125643,496.457377287637,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,340.752414237922,324.408034919167,411.264377642914,402.15160989954,418.023715143841,393.140004096285,378.977254613407,353.818151203166,386.056070965937,439.359550013889,331.227716780368,435.339928702938,332.807221894766,354.265821101043,422.803750943188,411.229694658573,410.638699095225,403.243051760444,380.023848102534,438.936020624733,346.719582403302,423.197332449307,384.870538789989,390.932171979571,413.86081965887,469.198837406524,450.523187793833,359.359561317422,326.785160434953,400.389086661738,444.37461369033,450.968501281128,465.161472780567,455.374195906021,465.751050497244,491.451768763237,469.843739957211,461.587761548803,469.597503427762,471.743400322371,399.936414142062,426.579910696762,443.923822451312,513.207475653113,506.175886782756,502.506446778632,494.125615928732,502.528095292671,517.145543525434,1,503.490910449373,508.138430117141,482.012531405126,476.589551626465,483.082459502948,522.853514455088,1,1,1,507.625875726573,518.049595358308,518.137395642311,536.08714486659,533.685522351906,543.783843886702,548.579903234486,503.622853287543,508.75766817852,503.301948027691,483.828934611755,521.944901348142,540.080094491767,551.54763871045,526.806345331286,534.007506684751,501.608508631927,547.86429281821,518.662614747212,525.736036927419,528.874424197395,623.672030439053,566.332935987024,549.355191565178,567.951976907116,1,1,1,1,1,548.702231977806,1,1,1,1,1,1,1,1,1,1,1,1,1,479.308239820282,461.822554022329,597.796347483017,560.640525802618,516.67851938821,475.182844187472,578.38844961519,585.88891654627,587.417414870023,552.033524195725,619.380515477512,571.312360363505,558.878106043253,542.030393922164,552.710872187108,555.255392120295,1,580.45960864541,1,463.003797406467,453.046781261981,479.515931630716,456.472830424296,496.064736463095,450.198692885696,423.55617090674,473.12909884721,488.513237129884,594.908215334662,674.372577427006,574.186687744282,579.568309225908,604.117731234007,581.747194443087,557.27220477497,621.344099695958,594.226032089312,581.794337575303,581.561776999874,608.442030393537,593.831254772226,494.576539573109,419.936877007123,360.252415787789,571.070753492591,565.440875126781,582.481018066322,538.291727911905,557.141020299291,541.405915756713,382.307343249493,397.166121230369,317.682462200153,413.889733316664,364.00991510425,1,1,1,348.41754570738,321.254228424319,334.451373422326,336.860531714804,340.914714686171,354.944338915938,373.423225947612,448.397144318721,487.532140440471,1,621.472614013986,673.4445774063,645.726077087064,646.569841240003,720.565804938544,660.422833071847,678.109390837606,631.121290965398,671.315935417893,744.840009165413,653.245265740292,710.292389366106,648.960275146108,634.800781751688,626.346050980353,612.55270988597,711.86585382155,702.235932245234,676.72916429718,710.280537191905,753.24749625689,809.196315949004,799.155466268152,803.60460020489,654.523516567504,612.541169680736,604.936144600068,612.402068141208,678.576509472486,665.887189888713,748.518244135104,626.140493808256,690.480924078038,590.329365965741,566.268000610894,520.960457763211,584.108785583936,541.122668231451,525.85508077332,612.83619722146,545.433819223172,503.42618508619,518.73980417167,449.516641237547,469.66156582242,501.61380392757,472.859192027114,587.807460125584,632.681528796599,637.186246563359,479.905245746108,483.918701336935,466.62801378233,438.899736698368,424.7711841019,423.049378630614,446.540369654493,451.151041264325,514.549831987941,508.914539944661,488.071427103557,587.871653616924,526.476261425564,521.568673112209,378.621895838854,398.575910461486,378.410809987594,361.724975344327,319.498170283076,347.965232830698,1,1,1,1,1,1],"Archive807_field13":[95.1467881237581,0.103616813294233,0.103616813294233,37.8022865846489,51.6979083355535,60.9970649843595,0.103616813294233,35.2660553815872,51.7759683591656,0.103616813294233,63.9079666429885,44.907005227331,0.103616813294233,0.103616813294233,0.103616813294233,40.1038250801084,0.103616813294233,0.103616813294233,0.103616813294233,37.3882357831128,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,44.8765054016297,47.4733718853732,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,51.3452841953377,0.103616813294233,0.103616813294233,0.103616813294233,52.9580076415622,51.4413313709575,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,35.3076792856498,33.6141267853682,42.6139042327946,41.6696682789357,43.3142852446209,40.7359144029386,39.2684154340383,36.6615093133291,40.0018998263825,45.5250364628272,34.3207604875063,45.1085361119368,34.4844237740422,36.7078954415548,43.8095773215816,42.6103104924817,42.5490734155365,41.7827600064585,39.3768601161961,45.4811516971864,35.9259782353373,43.8503589830172,39.8790587602531,40.507145874716,42.8829392803912,48.6168883334228,46.6817770343561,37.2356925705246,33.8604369561144,41.4870412376776,46.0446813794477,46.7279189988265,48.1985494767743,47.1844230362055,48.2596396409656,50.9226661670607,48.6837110806104,47.8282529073051,48.6581968361122,48.8805478339896,41.440136753723,44.2008509617368,45.9979718277997,53.1769231859531,52.4483323548115,52.0681166750098,51.1997216895852,52.070359825047,53.5849732294193,0.103616813294233,52.1701236633759,52.6516848410723,49.9446024720854,49.3826905888615,50.0554650120357,54.1764149875263,0.103616813294233,0.103616813294233,0.103616813294233,52.5985755884816,53.6786481993946,53.6877457850293,55.5476415990797,55.2987931273725,56.3451490244286,56.842101410416,52.1837951598041,52.7158483156629,52.1505439794088,50.1328123840137,54.0822673928672,55.9613783148849,57.1496087031356,54.5859947264089,55.3321561178726,51.9750751857128,56.7679521395213,53.7421673149604,54.4750927803582,54.8002824681563,64.6229083348383,58.6816140905421,56.9224343166265,58.849373951275,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,56.8547767249731,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,49.6643923958455,47.8525813551973,61.941752525122,58.0917846872703,53.5365816765888,49.2369320467957,59.9307679953178,60.7079424769351,60.866320602368,57.1999546087457,64.178235230319,59.1975661764727,57.9091683681181,56.1634621268323,57.2701392491041,57.5337942959445,0.103616813294233,60.1453748938548,0.103616813294233,47.9749780303867,46.9432637475758,49.68591275939,47.2982600439642,51.4006471799492,46.6481539060447,43.8875406804638,49.0241294993199,50.6181848834484,61.6424934755368,69.8763374460045,59.4953948200331,60.0530212883151,62.5967541650095,60.278790431053,57.7427699962335,64.3816955696691,61.5718078215709,60.283675252182,60.2595780664581,63.044824263651,61.5309022540136,51.2464449606545,43.5125209802102,37.3282073054796,59.1725316424386,58.5891815869392,60.3548268964127,55.7760734688778,57.7291770789099,56.0987556893564,39.6134686064969,41.1530878303217,32.9172443726454,42.8859352214726,37.7175474106066,0.103616813294233,0.103616813294233,0.103616813294233,36.1019157819964,33.2873394066254,34.6547855159009,34.9044148208888,35.3244963408936,36.7782012952976,38.6929246827438,46.46148318454,50.5165267709579,0.103616813294233,64.3950118137659,69.780181041122,66.9080783687477,66.9955065214471,74.6627324765256,68.4309093896538,70.2635341434861,65.3947769719767,69.559617941639,77.1779481637671,67.6871927355533,73.5982338932622,67.2431956651881,65.7760340817976,64.8999818220112,63.4707597731308,73.7612712659671,72.7634494799559,70.120519467743,73.5970058087409,78.0491051839984,83.8463435880689,82.8059427413726,83.2669478218166,67.8196410128596,63.4695640138397,62.6815555499582,63.4551507555895,70.3119354878626,68.99710862972,77.5590751498739,64.8786826428887,71.5454329934233,61.1680476953749,58.6748856937974,53.9802624857286,60.5234909793717,56.0694064834153,54.4874277243127,63.5001338274436,56.5161142108077,52.1634170275036,53.7501654371428,46.5774818877615,48.6648347772987,51.9756238673728,48.9961626147352,60.9067358487898,65.5564438440269,66.0232083438085,49.7262522473973,50.1421137260167,48.3505077819423,45.4773920723627,44.0134364758567,43.8350284798095,46.2690901108273,46.7468332101842,53.3160138716733,52.7321028681662,50.572405936439,60.9133873737967,54.5517924839783,54.0432838219884,39.231594290243,41.2991656978666,39.2097222470039,37.480789234114,33.1053822580705,36.0550485631026,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive807_field14":[-0.999999704209522,1.0035316123857,1.01711018184662,-1.00001176021862,-0.987136057531456,-0.992708765001943,0.99241872564993,-0.502021510770178,-0.99999999829324,0.971629057822159,-0.999946530840411,-1.00002648184447,0.78867181388815,0.990535323433378,1.0742177059119,0.500403913676952,1.00298807645806,0.984826532767678,0.747509036993468,0.0311067761221799,0.621673902707749,0.950236009796851,1.07948531232319,1.04108359747704,1.03921506782368,1.02827428007773,0.938451684320728,1.0300449153439,0.996924207734739,0.987282105053485,1.05659721667598,0.983472352074961,0.96993482690313,0.322091138810417,0.89815276723664,0.987526529802766,0.986381994419215,0.990253024312207,0.99103629507227,0.987534841052546,0.983631595402249,0.971589080603772,0.968387543997074,0.964500199333545,0.99481736306393,0.960640991832281,0.980548179737183,0.984175276774658,0.986090495081891,0.976211184250391,0.994393916346627,1.00178088388824,0.654543728434024,0.914010134065758,0.992069232446821,0.880358829624116,0.758433821502613,-0.223967155397827,0.687955812356342,0.961635150521983,0.944946237377185,0.968337045125625,0.977254005833104,0.894141471360562,0.865960664397113,0.989582534679112,0.997888307694653,0.828061668710309,0.998291934846607,0.941560685810159,0.928189309877853,0.996262735170709,0.9858115056066,0.986436406312892,0.961864235602305,0.963124168657168,0.996250661268243,0.994007007346095,0.979688955850686,0.929714402982549,0.967728972827221,0.951597295196883,0.998162331038843,1.00217264847775,0.998461596346306,0.99571656089841,0.996014567068737,0.988275587152335,0.992994413524091,0.997869498520753,0.995886737666857,0.995983285531348,0.99497883175043,0.143517995937167,-0.990746441885311,0.637616604317947,-0.703035275708145,-0.113919258556784,-0.0276470417709769,-0.775193543652631,-0.852576975824367,-0.945792621582657,-1.02787516615859,-0.938463609285899,-0.744418348431937,-0.840776834642384,-0.995145163284958,-1.10924941909867,-0.952134911241866,-1.00300222322404,-1.00759885965243,-0.986196260018975,-0.999815578731747,-0.993204684621899,-0.998392049516625,-0.998860891638391,-0.9978211916525,-1.00110010612484,-1.00324527471107,-0.0623692093358227,-0.930858757282234,-0.977640778919374,-0.999999655731465,-0.999956832337269,-0.957258157452866,-0.999626218808336,-0.892815806795705,-0.996584838078048,-1.00236064406554,-0.643712407507788,0.207122644637696,0.826220152716521,0.443899095764099,-0.999708261467288,-1.00037954908049,0.952208718031776,0.315628231647499,-0.960471364139538,-0.62939240245134,-0.998374468766785,0.250966744003668,0.40225556785289,0.907130948074362,-0.509126187849485,-0.871985777205293,-0.876107774782978,-1.06251446732528,-1.01128348095619,-0.997859243587693,0.937549037707722,0.843653953421657,0.937463621465969,-0.999780726906891,-1.00332253830362,0.131453905834376,-0.329318773518103,-0.437201563475342,-0.987098211636138,0.589563371406278,-0.998944955288967,-0.999929941537626,-1.00012996100143,-0.99951654049486,-1.00000375446677,-0.99998652869759,-0.999600409149371,-1.00001027606528,-1.00061918921769,-0.999991672829006,-1.00013268368337,-1.0000113322907,-1.00000003929461,-0.999997173462193,-1.00000196981176,-0.999999259981819,-0.999997674516583,-0.999976944453409,0.925848304287923,0.959562915056344,0.983035182129387,0.957738968615441,0.997961400508403,0.432754587005104,0.993349970003343,0.959450537118692,0.996376210687663,0.999024381892176,0.986150698603579,0.99817360560068,0.965507218287704,0.996014454081005,0.997401424934093,0.996931835804716,0.99702937627384,0.996849634061326,0.997547511096191,-0.998995554685234,-0.999129243219275,-0.999994564063734,-0.605376509443938,0.302206803744337,-0.999958513045375,-0.999992534703967,-0.999998756025467,-0.999982272462359,-1.00000007136337,-0.999997881148531,-0.999817317329959,-1.00000004527909,-0.248441082210066,-0.972987606360706,-0.0787182496421676,0.863772535855381,0.67428361310188,0.782876870897705,-0.999977975871635,-0.999997166804418,-0.999893368280644,-0.99998873845335,-0.999917706776194,-0.999969972264621,-1.00006827158509,-0.999984290462087,-1.00000150397274,-0.99948456580588,-0.99983428495992,-0.998987052110248,-0.999863481567615,-0.997369420537596,-0.150961547690719,-0.595375898323751,-0.992245352969964,-0.970060702498992,-0.868814487531048,-0.797055499098015,-0.978069622660912,-0.987072804335717,-0.999725077306827,-1.00013566862443,-0.999997703712513,-0.978614555277556,-0.994111882203963,-0.934569243973383,-0.9931577662899,-0.998294758510503,-0.997398435093815,-0.999994094804986,-0.999869372931655,-1.000152144476,-1.00000099431822,-1.00001555879352,0.979524671338052,0.964563888343156,0.948656039135703,-0.99881224814185,-0.995775692478425,-1.00075963105445,-1.00000266717199,-0.997998635868801,-1.00002781274977,-0.999592190816495,-1.00410616960117,-0.0412582687152991,0.999978954204187,-0.999970200181605,-0.999981560417077,-0.999786563787091,-0.999895925621783,-1.00000136980649,-1.00002028032999,-1.0000797717283,-0.997979102320049,-0.99992438899658,-1.00000131201629,-0.999722147075154,-1.0000120426547,-1.00136530895064,-0.998512786666948,-0.99441587366725,-0.99898257714799,-1.00000377051221,-0.999970364010793,-0.999821453050329,-0.999978248556747,-0.999995509314084,-1.00000098051004,-0.999999439721791,-1.00000041982188,-1.00099354047267,-0.984376196485839,-0.979014660296674,-0.991013612024074,-1.00001144793828,-0.999996481427827,-1.00000112082276,-1.00221841198986,-0.999996206186508,-0.999999923860046,-1.00000000179071,-0.999999994371442,-0.999999117314817,-0.99999998710989,-0.999999998454241,-1.00000170767313,-0.999999785686907,-0.999999960362766,-1.00000000180503,-1.00000001459521,-0.999999995382956,-1.00000000392939,-1.00000003498411,-0.999999957844163,-0.999993029651074,-1.00002328113503,-1.00000000472639,-0.999999834888671,-1.00000046940857,-0.999996499860118,-0.999999894285821,-1.00000064677877,-0.999999936730132,-0.99999986786626,0.400643376657488,-0.999999770833229,-0.999998567351216,-0.995883798411391,-0.960250973549253,-0.985586380825692,-1.0000011976072,-0.999999826438118,-0.999997924959939,-1.00000304262245,-0.999968298718955,-1.00000807261256,1.01502850653919,1.00568755905099,1.01912610952946,1.01349861403036,1.0010430258516,1.00690676302291],"Archive807_field15":[0,3792.41582221131,3594.93737239484,0,4199.05000594441,0,4162.89796137762,1334.52213200554,0,3774.74098782198,1868.99757891488,1514.83429656037,4490.98486350338,3837.55737994322,3262.94588203552,2974.26154705976,3606.46663583003,3409.43636532282,2685.55330835449,2340.18370483389,2770.61416568667,3139.89305834387,3020.50192957677,3188.10505930984,3521.79103072545,3409.93709579591,3386.08562375063,3325.12984719318,3523.66301027832,3619.80759352355,3421.2257622889,3507.06676349035,3615.80793138003,3567.13748941856,3941.17539990722,3881.65950952328,3794.39020776779,4113.83526959819,3730.21153798553,3955.56798630162,3979.01290274301,4035.50744264725,4289.96141868608,4076.5705057672,4144.6601634313,4327.57884694106,3995.68458108581,3939.15529816009,3887.80972423491,3986.7608655648,3640.09993214892,3664.19839663043,4666.15198103262,4247.3057799838,3777.39967055043,4498.72064671976,4656.81458867223,5062.82312073181,4608.18329000341,4209.70377482853,4163.65141457789,4172.78645484149,4094.68421085267,4338.58446550911,4353.87311609023,3813.67634095758,3742.90016638806,4478.54291419172,4035.07171885977,4333.01995621704,4370.40270003115,4160.29597087717,4231.2446034547,4262.68847981589,4292.8906806489,4236.90829004007,4116.3879921572,4174.00001424903,4215.58114604566,4181.27418160756,4178.47060312384,3324.91091975772,3941.15044614483,4056.27995600431,3869.1254128674,3986.34954354397,4180.47617980767,4189.77314345899,4187.00336527661,4111.1559989803,4083.10191476335,4130.96187766547,4144.09165048148,2180.48297246785,536.159695177091,3268.06785262306,2722.2792718965,3187.35074006548,2800.91036010082,2347.52112346174,1805.33164104054,2113.38493661813,3195.79594588982,985.291843821156,3545.44869598771,1168.72949399544,1506.62807519054,3078.50616760065,2592.70321079247,1917.29974565728,2169.01284888844,1662.93483488085,2596.9810242988,1150.99746896367,2532.0298970886,1261.54244209053,1559.88117425469,1590.08522827439,4031.54592119694,4115.00265831666,1758.72802973066,774.602029757347,0,2127.99608878995,3700.82296322306,3222.44164477366,4142.64169784694,3626.37062311465,3593.01063945566,4688.72605709365,4296.3738776878,4147.08279244532,4514.08609585111,1053.76923159305,1952.46521508578,3681.28830645915,4836.59262738185,4798.31457680883,5090.9736241786,4664.47042691756,4782.76257715595,4798.50858168028,4515.65608395211,5181.30276348398,4782.15417148679,4636.12800413979,4363.31533561675,3970.84170639446,4125.16769628296,4464.56073426168,4397.37474204238,4324.45660645503,4328.34653629564,3787.45315148961,4634.00342552349,4263.92678323965,4715.45467150999,3837.91872582232,4135.17067538143,3768.61288176052,2933.43470695186,3349.74565921103,3005.59441718363,3271.67453226867,2310.52504967556,3257.44333941703,2748.0281491677,3433.78067819656,1973.17262176717,2803.18455759612,2285.39038862036,1403.11635560637,1890.11280602115,0,1624.16083292959,1891.75102983816,2235.44619332854,4118.1951538478,3583.86713962775,3995.32919190759,3855.96754948982,3776.03433647585,3541.31939426055,3703.57781582114,3550.30337638157,3793.20522503903,3821.37304652676,3699.31668052547,3890.85391829509,3563.88925599666,3725.61293486368,3771.78897672675,3793.52754263484,3948.15290848065,3902.73218107844,3840.03620797086,3336.41540465416,2676.91493254289,1718.3851770087,2509.2487208794,1959.24882720464,2165.14734978968,1864.30967509687,1467.63685337938,2108.87167963692,0,1074.57639027338,2685.89646816954,868.658675692145,3486.17236386405,3513.86762266016,2436.10413729666,3265.03523541418,3276.57168426874,2884.92309926539,2316.17521355924,1874.45674749848,2587.40953005329,1236.32402971254,2408.83237198057,1489.89635675953,989.991075191468,1699.15418049335,1258.70219121069,2349.99389678906,0,3087.77348324389,2780.54552287097,2371.29293007863,0,1248.41079043463,0,1426.24872819531,1045.30984682376,2115.85877625452,0,2461.95055620484,2789.06018191969,1198.12892545096,0,3134.67661917956,3366.23486921802,2528.0687800637,4056.80674755634,3563.87666022561,3734.11065761775,429.679442245249,752.166881610433,153.017655405271,447.790349882258,615.771861445629,4112.10510204882,4086.33532197224,4135.54399409508,884.740873775239,315.277565233549,378.296315022419,157.073784906494,619.479187450063,359.974234059822,913.802668495493,3029.63599008843,5049.35659591961,3813.04266769588,1488.37974700665,936.961581851566,1390.91732239913,1132.39353438214,0,561.041362059274,904.643271175362,1769.87433276295,1091.30857195763,0,1331.85264099695,663.155708476516,923.00172327901,1542.81885585997,1181.27904208076,2105.38411084005,516.419565226272,0,497.262516736112,407.708651654286,393.31524343403,0,0,242.369161767097,0,771.922872930154,1809.93218083253,2045.74466618722,697.91362474291,0,277.703501968124,650.885928593664,342.057943566863,900.0717128185,492.123290558855,0,0,419.100808593728,795.217114665556,521.528887482199,1213.69917020883,933.38776902928,356.623506065948,0,0,502.700049860634,487.171236958058,365.173320094605,365.025481799943,754.26481205008,310.629883260688,868.505592444576,967.096545364977,755.798489882798,0,258.487600555632,332.480891578892,634.203193210081,2738.13186821267,1563.41209502202,1630.10025132005,2788.91198691628,4313.34776242083,4368.98165831338,0,182.584776476496,176.723328939351,226.41996154216,46.0880832815687,0,3522.81635845205,3604.0208642119,3576.29758070434,3558.27423587624,3664.80979653019,3613.57716408535],"Archive807_field16":[0,996.298340621694,2368.21444395807,0,1867.58956656221,0,1821.97608157962,2073.34708273002,0,2425.83103518692,1259.01497544543,1091.30630050581,1929.24204051981,2245.74048841318,2454.81482053596,2645.55023916128,2373.00891923882,2465.63041394233,2448.11010667407,2404.11464898205,2495.67246083616,2516.36791520687,2468.44415967425,2475.10232521534,2394.02462942723,2432.84247096423,2555.42585480352,2461.09658909664,2412.3994329777,2417.61516436349,2423.10818027648,2481.79457095117,2508.17081008265,2680.79669617793,2539.58463483686,2257.3040569549,2341.90159108982,2216.58235304976,2327.38060317447,2267.42730883021,2345.4343517362,2071.83180518884,2326.82383118662,2083.31224667136,2300.65838960414,2133.03248959655,2184.17021817476,2169.34096359131,2219.36192836592,2146.88489756406,2377.86479290783,2339.78073515397,2187.27089675517,1934.64839696224,2288.112285075,2081.8637659914,1985.68786323194,2035.46549836463,1645.19370994778,2078.27088804087,2023.73926666421,1879.26783048159,2144.10059615482,1988.34523001869,1790.09012345276,2278.37452109464,2301.69803327834,1752.72691583199,1261.91192330672,1479.45902884227,1637.57365894104,1533.10775655931,1668.99800320204,1560.37043489241,1691.75795090955,1805.70130671254,1294.50249226995,1499.28943075179,1411.32952037794,1165.96322434248,1275.09123374327,680.192109249571,1069.30345769954,1181.17239628583,1066.00362831352,1177.43761275996,1679.40362074451,1748.78301484271,1618.32258579225,1390.66070247277,1317.14706499945,1417.04101164883,1388.9064700129,2332.65134534971,672.833842788807,2669.17673161235,2452.4942705593,2806.27433446875,2865.34622919194,2493.71881984254,2163.84704088188,1901.13477099324,2179.31166080108,1244.25842068284,2586.42268444326,1608.88224395358,1527.74534856546,2395.34308891344,2051.51984070377,1458.09423818004,1719.75570462944,1432.06162286233,1757.25548469054,1142.88052270892,1849.78770116968,1047.996787451,1274.21066979299,1193.84739798885,2221.63270843484,2838.32703007252,1850.49085583133,939.445231163679,0,1437.17748320909,2318.28381189822,1914.49861821112,2514.51404393637,2098.99152858673,1869.6248240481,2373.41977434296,2478.08891343606,2460.71980979872,2335.14667556432,833.422917503849,1400.25235833297,2580.36942869117,1787.72202553411,1502.00276767935,1710.28538834025,1842.27131254963,1317.12117860011,1545.68730731425,1395.18238541612,1423.88646566451,1093.86015440083,2075.47469627598,2174.91170204141,2031.11142705934,1637.97129092809,1531.72667177149,1118.27084873183,1329.68195506704,1761.31591965905,1722.44093675593,1068.2784378664,555.654805882123,774.306720761435,1125.14101225389,820.359490361451,1808.56324332875,1626.82569145086,1743.40955924249,1716.05843316515,1664.4117421673,1450.45467016188,1560.76000637027,1561.24432027638,1639.31381872029,1318.12768014615,1545.65461858355,1439.1909803942,1099.70819500803,1312.6496442464,0,1243.15773538104,1336.40210922971,1428.7845855535,995.010302666009,747.149565291767,1030.20735831413,823.695257056759,915.527634864263,554.887422899773,923.697331593532,798.687706607589,987.425293141468,988.534531739302,906.833884366223,1071.60141985613,824.131619557986,937.21047923681,978.541768368942,995.587947114568,1150.91257939802,1096.85809757041,1035.24145422819,1862.02563398387,1668.49819599147,1278.37962507266,543.968815700481,226.762802506965,1394.3149091666,1330.00128559757,1183.00211340039,1379.21842059117,0,1000.76424432442,1477.55191070569,844.680088766641,423.887636702812,830.433972066291,114.84879665397,622.358626602897,555.87612399287,476.530850633355,1484.01243703943,1271.88243858512,1566.74775447815,932.397311819101,1479.06100597664,1072.92623196421,769.568295277142,1181.23352601086,974.724829693385,1376.46413364855,0,1382.34711395829,1417.65148208859,1239.01033398611,0,404.31405830118,0,599.588033523825,396.393176036957,719.631472300308,0,1034.3421865905,1611.47893896444,905.292129414538,0,1053.22611113211,1260.67607867567,923.692558169007,1406.29518622078,1406.41757769893,1532.90520277387,343.243121966039,596.63420272768,187.973014122216,383.099352710868,533.487480262869,1954.96403494081,2023.02189336603,1981.58017829994,858.925005827177,418.649406602331,367.629031906207,110.375483137427,610.320379936511,305.227104770838,791.136537463193,1942.97073196017,2332.27430421557,1014.05491287444,1164.30399150483,839.168435800411,1056.87174688893,1004.08924233493,0,637.392880325547,656.331491597255,1113.70409181919,857.421059834044,0,911.597217377006,571.968955940472,570.717926991771,906.951247645502,617.796503003536,1247.04478975791,537.752933423075,0,340.166575042956,316.256520237054,347.612280094596,0,0,242.501858542788,0,375.917245054071,829.829065151757,1023.62697732257,708.370131690133,0,324.973770133318,374.76069050406,403.744220331456,885.623569977201,544.300867284311,0,0,465.154211455089,759.78481651508,608.050741604906,1023.58321082939,814.228272889744,382.378384039452,0,0,513.476769979601,457.136657096399,446.109113678338,436.010317885156,785.963527549568,328.147940067203,746.48831630978,785.415893629773,620.862081368274,0,243.323750899435,319.091692807546,550.203327556705,375.195788715533,1155.54543229534,1160.47050892676,1226.42817744162,1221.49886458761,1516.99825113461,0,161.658215358999,150.973601414222,173.424737185977,33.7513539736339,0,2396.97617599778,2365.56448276539,2375.38171716637,2382.37517339207,2342.01194230368,2361.04717074977],"Archive807_field17":[0,0,0,0,4595.64051483074,0,0,2465.70830518894,0,0,2253.50186562726,1866.99555102824,0,0,0,4379.72224009188,0,0,0,3410.43251960733,0,0,0,0,0,0,0,0,0,0,0,0,0,4807.44790659584,5522.21001282889,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5937.03688754491,0,0,0,6121.26070470663,5456.67460518303,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3027.96514494704,860.332841831779,4673.9979536235,3664.08686869232,4246.69052092261,4006.90751808231,3424.83415328916,2818.05896859441,2842.65884477964,3868.14051485586,1587.12918029398,4388.59758447772,1988.57504385525,2145.67798306636,3900.62414717961,3306.18263198735,2408.75011616218,2768.06365935624,2194.57347945684,3135.64304075624,1622.02683786311,3135.74392116912,1640.05688916676,2014.16039798435,1988.37688652357,4603.15265941802,4998.93460725317,2552.92786621081,1217.60652382466,0,2567.84860771591,4366.98184535137,3748.25761029093,4846.05624336877,4190.02736664902,4050.33608950399,5255.21393129825,5371.44305343362,5620.71588133181,5680.796411185,1343.51157526567,2402.67082288378,5302.78282134384,5836.39161214194,5027.90563675697,5370.57618432625,5015.10198825825,5563.73912663976,5827.26312572551,0,5373.39287545489,4905.66290701412,5079.49584955545,4875.32169499665,4460.15666612426,4438.46352608209,0,0,0,4672.98807050766,4160.72159070289,5282.06773754822,4299.97952043127,4778.60478140657,3999.44526696808,5052.31432315004,4180.11292403581,3354.34062228544,3776.27764771888,3460.99037078156,3670.71119710607,2728.06612005146,3612.05051279703,3160.56047817682,3805.02293583144,2372.94559070768,3201.0766726047,2700.79245897317,1782.72084790018,2301.21174775929,0,2045.32138458978,2316.18059668226,2653.04449174573,0,0,0,0,0,4178.55959352149,0,0,0,0,0,0,0,0,0,0,0,0,0,3820.83854854227,3154.32398242443,2141.75210572188,2567.53407293642,0,2575.26253268002,2290.09912107555,1885.06019365619,2519.83793385064,0,1468.4152993112,3065.48519594463,1211.632100604,3511.84829955949,3610.66285487044,2438.80987652723,0,3947.07990730603,0,2750.81088648309,2265.23134267205,3024.79529925133,1548.50310091137,2826.67558373828,1836.01793376923,1253.92092655579,2069.40512516522,1591.98608655334,2723.4398884805,0,3383.07975479339,3121.08460786083,2675.47692345968,0,1312.2497321065,0,1547.15585660389,1117.94464347542,2234.88877060546,0,2670.40526889799,3221.13661136808,1501.68797077894,0,3306.88414493182,3594.55718692641,2691.53110677725,4293.64031304514,3831.34796803441,4036.50600941281,549.945691741631,960.066346486563,242.380397111476,589.305787766556,814.729327412142,0,0,0,1233.09309436222,524.087081302409,527.502802892872,191.976355790685,869.623728890626,471.958721366333,1208.69033993771,3599.14288375621,5561.96956687657,0,1889.67670672357,1257.81583290619,1746.8912064356,1513.44320120816,0,849.139030919567,1117.65400502353,2091.12217670511,1387.84915357366,0,1613.95196460739,875.741959851544,1085.19635705517,1789.65096809484,1333.07640230507,2446.99059292023,745.565144540444,0,602.48096179646,515.988886727424,524.910638099604,0,0,342.855599301501,0,858.591111578605,1991.09788222072,2287.5496558405,994.420268836312,0,427.466005993485,751.064622511483,529.162576348938,1262.71857352111,733.790683531025,0,0,626.110156600516,1099.83781843682,801.073083335532,1587.69904744489,1238.62036465839,522.870494156433,0,0,718.585926273656,668.064171603683,576.510966951878,568.637494072978,1089.33652896389,451.853953114164,1145.22782471197,1245.85466809862,978.110976009401,0,354.996179405889,460.828657620031,839.605497797825,2648.5920978415,1944.10458179589,2000.97941804568,3046.66311645841,4482.97093407593,4624.85507066159,0,243.865904123615,232.43098613435,285.205432018358,57.1249972920992,0,0,0,0,0,0,0],"Archive807_field18":[8260422.17462887,8995.77,8995.77,3281906.33139762,4488291.79437434,5295622.88039304,8995.77,3061716.65518378,4495068.7835162,8995.77,5548340.57148133,3898721.42918289,8995.77,8995.77,8995.77,3481720.5342578,8995.77,8995.77,8995.77,3245959.40675753,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,3896073.50546929,4121527.39529439,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,4457677.78916631,8995.77,8995.77,8995.77,4597690.67640544,4466016.38088281,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,3065330.34542907,2918300.06828479,3699639.75046879,3617663.38778598,3760445.19597951,3536597.05464923,3409192.21773365,3182866.71004891,3472871.62151324,3952377.45922844,2979648.35778133,3916217.87042803,2993857.22250428,3186893.84548613,3803445.2986222,3699327.75031875,3694011.29015985,3627481.74773505,3418607.13204533,3948567.48625535,3119009.61779615,3806985.86732751,3462206.84673082,3516735.90472866,3722996.74566267,4220804.82557649,4052802.97706013,3232715.96091242,2939684.14268593,3601808.13411906,3997491.81859706,4056808.91476973,4184485.62199524,4096441.5303055,4189789.32753159,4420987.07788726,4226606.22059488,4152337.33770788,4224391.13341036,4243695.12831798,3597735.99624674,3837414.76324861,3993436.60429284,4616696.41325601,4553441.85704372,4520432.41873781,4445040.39200321,4520627.16379095,4652122.36607979,8995.77,4529288.42749316,4571096.44549488,4336073.86963829,4287289.99083481,4345698.69672284,4703469.95972965,8995.77,8995.77,8995.77,4566485.62408483,4660255.00843641,4661044.83959723,4822516.65517652,4800912.2114076,4891754.38932068,4934898.63611969,4530475.35491848,4576666.96867029,4527588.56500906,4352413.81511239,4695296.28520058,4858436.3116262,4961595.7018823,4739028.71714082,4803808.70840949,4512354.77369583,4928461.16940527,4665769.58986453,4729400.46891057,4757632.6789622,5610410.14126272,5094600.835564,4941872.95162629,5109165.35530173,8995.77,8995.77,8995.77,8995.77,8995.77,4935999.07735899,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77,4311746.6845281,4154449.47679745,5377638.4487973,5043393.22279942,4647921.12435688,4274635.57425633,5203049.46339484,5270521.93879944,5284271.9581653,4965966.61595417,5571804.65971714,5139394.59198721,5027538.90000071,4875980.75673319,4972059.88269462,4994949.79877398,8995.77,5221681.13366412,8995.77,4165075.67059518,4075504.64347309,4313615.03228565,4106324.59374597,4462484.27433261,4049883.89550036,3810213.89555773,4256160.55353676,4394552.7231759,5351657.47626109,6066500.60084054,5165251.38000938,5213663.20908515,5434504.16310294,5233263.95935529,5013092.58154854,5589468.61172191,5345520.71268807,5233688.04812978,5231595.98668215,5473404.56375327,5341969.38674235,4449096.79739559,3777655.56007436,3240747.87437132,5137221.15214605,5086576.06123924,5239865.26789048,4842348.57719808,5011912.47617775,4870363.09478676,3439148.92918349,3572815.07838052,2857798.36298627,3723256.84627805,3274549.47399736,8995.77,8995.77,8995.77,3134284.10514808,2889929.15043263,3008647.63149136,3030319.86538408,3066790.36293242,3192997.63568983,3359229.45328275,4033677.57894802,4385727.00301017,8995.77,5590624.6969686,6058152.52609427,5808803.2724775,5816393.58073159,6482044.25109201,5941011.90906273,6100116.11481522,5677421.9756278,6039003.75235422,6700409.40924994,5876444.16418855,6389626.96748794,5837897.3743511,5710521.82845839,5634465.01502753,5510383.29101091,6403781.49183229,6317152.93221371,6087699.91430964,6389520.34805482,6776041.22940285,7279343.94312458,7189018.76879106,7229042.15438514,5887943.01463245,5510279.47797887,5441866.42150895,5509028.15252263,6104318.2066173,5990168.00618519,6733497.96504324,5632615.86998549,6211407.58239349,5310467.20047363,5094016.69185546,4686440.45713256,5254508.2900924,4867815.06519644,4730471.35996821,5512933.4778789,4906597.18795324,4528706.1730128,4666463.96817339,4043748.31574549,4224967.42397835,4512402.40895751,4253732.53386175,5287780.71557393,5691457.51630258,5731980.92124727,4317117.21252546,4353221.33592576,4197678.28754267,3948241.08439908,3821143.87480835,3805654.90880392,4016974.4611268,4058451.00247438,4628771.94210216,4578078.15099798,4390578.30179537,5288358.18545752,4736059.35824425,4691911.82252262,3405995.49193029,3585497.21805213,3404096.6121621,3253994.68145323,2874132.05528739,3130215.20254141,8995.77,8995.77,8995.77,8995.77,8995.77,8995.77],"Archive807_field19":[886.424560580162,1,1,362.736518740309,462.498528810589,543.801354058587,1,334.544260095388,465.842294250371,1,572.099618774603,414.324945819413,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,417.433243825468,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,448.817513049177,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,324.107490323424,322.392337665644,1,389.931857818842,401.183994752211,386.688537240374,375.264501805906,349.989626633081,377.81773696155,418.120664681934,331.474017235133,416.567111954792,336.468579295495,350.962218542134,405.690166075025,397.39940114064,396.506070438431,390.978821744056,371.974739692536,418.974210927913,343.20666524458,406.619710551849,375.085043142348,380.53033640544,398.872581759485,439.160487659721,424.393356421876,356.26409974349,326.084517950646,382.648472334167,423.362653960484,425.422418490881,438.754132145773,428.543894470347,437.900095576032,458.876111677932,439.220096741446,1,1,1,386.656600866414,409.206733059011,1,1,465.120365375524,455.194779790813,456.836603105861,485.840569068958,1,1,467.578050271841,478.729760246913,446.644834800446,443.501603107527,450.656280532998,482.657326671932,1,1,1,469.137560747697,479.948606129908,486.921973926487,489.160407592066,482.378735913279,498.686260906778,1,467.971135911281,474.502314976642,469.145351845787,454.045091773967,484.74387664585,502.046331528831,510.004166779844,489.867942879114,494.546539292741,469.776931400454,507.896881605258,483.671546153758,490.220045713637,492.754551922965,575.695804054395,526.216793994042,510.818794017034,526.818186237226,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,449.457563282864,436.840363083436,555.076823528269,510.550509434667,426.918348326447,447.868970234146,536.920439666415,544.037835804076,544.695509913789,510.534351487896,575.344081532134,528.814659638948,519.166951087787,500.705897225599,505.086992010484,492.090851843149,1,1,1,438.132406309887,430.182588586105,451.115297733961,432.595822081534,464.751619706339,427.794320062733,405.59106651715,446.361408153859,458.965863131326,550.874603496281,621.261980797654,529.422621259536,535.4770277713,557.791146340643,479.896152660745,514.453398032153,567.738771863523,543.683649320204,529.678383501491,531.259099209361,556.490980638517,546.088334858558,463.052846791387,403.098423379765,351.087986806305,523.662328802647,519.345627666079,534.152583904207,495.250684858985,513.15375277031,499.560219777951,370.988098683302,383.672195127031,315.535922405804,396.842455335355,355.932008628784,1,1,1,343.53433065808,318.862140445353,329.913601349129,332.038771041444,336.23087031287,347.454714878826,364.655392628071,425.926893202543,441.790596678692,1,577.347483501035,627.740789470151,600.15632580465,601.771780046246,667.945590847293,614.711667880001,629.355479070269,584.669898170477,624.709789385563,688.772915665001,606.096796467526,663.123576930448,598.687897919583,586.666677430412,576.031691244838,566.93643698591,666.28202460139,646.487558071264,625.18900499723,659.702575287077,705.128539711629,758.571455095004,749.115991637799,757.385995413345,600.913892352698,561.139967574156,555.678733205806,564.638869530409,632.831872590654,615.965291198945,702.051286358483,574.840680444641,643.196149809684,547.953752267016,525.487012509963,482.379425693509,538.572317413965,502.76490434917,490.011413587026,568.493098800774,507.397153013947,471.070853924019,483.17629594755,423.051154456573,439.006564444217,469.146473708943,445.02669585003,544.766256622827,586.161731534372,592.340636356442,449.616644374522,454.717432031933,440.599691828579,417.753165794385,402.581068889141,403.582391255365,423.024254598654,427.123392190281,1,476.052097079534,458.70253772063,541.328052583643,483.799527857035,480.060493815936,365.279541324828,383.602199950378,367.16442925774,353.793066323293,318.211854051658,342.556435319721,1,1,1,1,1,1],"Archive807_field20":[91.8484881930568,0.103616813294233,0.103616813294233,37.5856021373146,47.9226237086241,56.3469633726395,0.103616813294233,34.664410136961,48.2690940278977,0.103616813294233,59.2791393842697,42.9310305541132,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,43.2531024882695,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,46.5050404527984,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,33.5829853121045,33.4052666593922,0.103616813294233,40.4034965090882,41.5694070808743,40.0674339662557,38.8837118195758,36.2648097977581,39.1482699099944,43.3243308468084,34.3462813557421,43.1633566639374,34.863801960237,36.3655866720099,42.0363221935021,41.1772595512296,41.0846954706487,40.5119795746529,38.5428371528923,43.4127725888161,35.5619809539838,42.1326386300059,38.8651168847398,39.429340820114,41.3299058323611,45.5044102560415,43.9742871756782,36.9149507065591,33.787838614632,39.6488153151728,43.8674890711743,44.0809153079506,45.4623049926216,44.4043527017173,45.3738124448284,47.5472803889158,45.5105867591332,0.103616813294233,0.103616813294233,0.103616813294233,40.0641248209579,42.4006976581185,0.103616813294233,0.103616813294233,48.194290058461,47.165832510094,47.3359530099915,50.3412515359819,0.103616813294233,0.103616813294233,48.4489475354987,49.6044521858971,46.2799144563512,45.9542228048855,46.695567679861,50.011414102859,0.103616813294233,0.103616813294233,0.103616813294233,48.6105390413058,49.7307451121899,50.4533032612,50.6852426243979,49.9825474162342,51.6722811887766,0.103616813294233,48.4896778168092,49.1664177786159,48.611346330062,47.0467055015059,50.2276157619356,52.0204409990774,52.8450065285078,50.758555176135,51.2433364272049,48.6767885908584,52.626656354015,50.1165042935468,50.7950389498001,51.0576564064852,59.6517646429774,54.5249072955704,52.9294156068481,54.5872216433489,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,46.5713604183613,45.2640063410012,57.5152915874844,52.9016168133673,44.2359187904237,46.4067554690317,55.6339849507723,56.3714668575093,56.439612952944,52.8999425784134,59.6153202760569,54.7940898550621,53.7944250393992,51.8815494681462,52.3355045484959,50.9888859192315,0.103616813294233,0.103616813294233,0.103616813294233,45.3978837427645,44.5741489639562,46.743129579472,44.8242005284874,48.156081807304,44.3266841902735,42.0260538131162,46.2505466904292,47.5565801485049,57.0798709390086,64.3731866711157,54.8570849007926,55.4844232099295,57.7965410675545,49.725310050869,53.3060216924812,58.8272823240796,56.3347671827387,54.883586169265,55.0473748936386,57.6618220407457,56.5839330351976,47.980060371346,41.7677740745407,36.3786183787569,54.260221752767,53.8129389370522,55.3471885570342,51.3162977468743,53.1713565920361,51.7628380219578,38.4406045556501,39.754890208666,32.6948267595457,41.1195506017083,36.8805404835299,0.103616813294233,0.103616813294233,0.103616813294233,35.5959325999574,33.0394788731256,34.1845960342206,34.4047993454478,34.839171312966,36.0021503198002,37.7844297346779,44.1331873699605,45.7769337712037,0.103616813294233,59.8229064038218,65.0445001797029,62.1862859582531,62.3536741787899,69.2103935775299,63.6944641205084,65.2118091705264,60.5816316774883,64.7304376098433,71.3684546045847,62.8018185978082,68.710751861806,62.0341321402501,60.7885315812548,59.6865682032775,58.7441469408665,69.0380201444255,66.9869806017146,64.7800924044051,68.3562785732455,73.0631722477348,78.6007568329134,77.6210118412578,78.4779232784111,62.2647825898202,58.1435352520631,57.5776595501617,58.506080322799,65.5720219888654,63.8243605738888,72.7443170615828,59.5631594595621,66.6459353663994,56.7772216425256,54.449289663789,49.9826188890636,55.8051472589251,52.0948972248407,50.7734211536899,58.9054432774996,52.5748760698713,48.8108607193998,50.0651880453962,43.8352124852363,45.488461222959,48.6114625739471,46.1122480548419,56.4469435014855,60.7362106966211,61.3764491239324,46.5878438941343,47.1163712564858,45.6535360056983,43.2862517831914,41.7141674508788,41.8179212835471,43.8324252076807,44.2571647821797,0.103616813294233,49.327001261418,47.5292952085892,56.0906877554899,50.1297653498003,49.7423385576629,37.8491020336576,39.7476375315152,38.0444081146827,36.6589100980148,32.9720982692823,35.4946062012615,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233,0.103616813294233],"Archive807_field21":[-0.999971048220338,1.00008987539077,1.0186423176519,-1.00000830184397,-0.954797117439648,-0.25154705445461,0.99188706441271,-0.227864573640926,-1.00000383775866,0.959858237146633,-0.981417647650572,-1.00345236397697,0.874587205156989,0.999914777631,1.05526770870332,0.765266498772163,1.02071246675032,1.01149893849712,0.840537872152155,0.492957903873917,0.830939202070092,0.977366096634024,1.00060757317103,1.03365718535995,1.04344203428575,1.03975389915104,0.9340674992654,1.02926617536677,1.02309627741639,0.996212422924941,1.05477596240469,0.984306999302717,0.956976603899727,0.636372249565757,0.876323084831116,0.990644944502464,0.983312053234233,0.968502740389466,1.00732014175545,0.98309509897181,0.982221053959957,0.984467673668005,0.897360457382639,0.975874847534873,0.959752069077464,0.95350414842014,0.981490556698875,0.994343723336231,0.996502046707771,0.985903216625132,1.00782566634305,1.01649106934522,0.771362981109946,0.955673086395421,1.00384534288516,0.891742481297943,0.757601622076446,0.089890957255341,0.840194936053236,0.962592035400546,0.962638634039868,0.982401681853875,0.974028101144876,0.939394202758013,0.945421203108499,1.00193711729407,1.00779178912476,0.907217526710576,0.997219189856879,0.966997091383444,0.958549305881992,0.997234919960863,0.988104616138522,0.986055972029557,0.974681031686386,0.976781887528292,0.996427091984954,0.994728385204219,0.990004180883726,0.968664097532256,0.98173395743529,0.936485188728371,0.994771900428667,0.997655381956378,0.99936394445257,0.995855725026138,0.993779679838757,0.992428421199455,0.995874858562153,0.997286252504843,0.996526297421086,0.996710740537937,0.995578938242051,0.485901863324048,-0.991386419047283,0.772520222370966,-0.155171891465953,0.341559846597911,0.438737859117784,0.0476403175696253,0.0982011180267051,-0.649086251313432,-0.837679960480448,-1.05232260579173,-0.0170135285727465,-0.860523855230305,-0.741094287263443,-0.0974070478380573,-0.704530889232848,-0.962396230237229,-0.856015182321179,-0.830782562307079,-0.983738256892097,-1.01657737819881,-0.915332858053007,-0.980176763686338,-0.941692575567776,-0.988136587483139,-0.77636694632473,0.337988420788141,-0.323378170240752,-0.993396202900272,-1.00005204461557,-1.00196721974275,-0.45840175324134,-0.9361521814118,0.0137995993473836,-0.744288959623615,-0.992744600159409,0.0712036859832636,0.554057152366965,0.870241518945255,0.667584657547365,-0.996393312160167,-0.992955710829288,0.942372252233811,0.566483692281202,-0.343100758283325,0.00679096499935821,-0.549509770303936,0.549289765507458,0.638790489873967,0.88811564476445,0.154084448566336,-0.0934657845620758,-0.37861399838681,-0.600805150106405,-1.02136034256836,-0.843029581701161,0.92453993120844,0.860814176125973,0.94111684759157,-0.881065359991513,-0.965130472018815,0.491482057313514,0.121887825426247,0.137975109746843,-0.556077454359093,0.751927771598352,-0.974560171039945,-0.997789772246062,-0.995041481228898,-0.991410259065301,-1.00044915036769,-0.998663388687914,-0.967293586597617,-0.999256236355395,-0.984995375304929,-0.999354503616634,-0.988116799560813,-0.999738634007778,-0.999929364880675,-0.99975913597869,-0.999779192373979,-0.997749653120981,-0.998844839514126,-0.991906205440121,0.935548439738749,0.934279536203228,0.983684703369648,0.918370245021324,0.979413338659075,0.634289564191299,0.994647128057584,0.981843184740455,0.995619091883542,0.992717600231682,0.990095849911383,0.995409777042199,0.983314176449484,0.996631541079858,0.997636620322541,0.998858700104141,0.997627167111964,0.99791786871008,0.998686315963459,-0.980186003088545,-0.993896215059323,-0.995085969219485,-0.0464496339396166,0.263939745324166,-0.998734094582663,-0.9931574591612,-0.997486218322252,-0.98427699511355,-0.999991778322978,-0.99722024023953,-0.976292700248991,-0.999721701661455,0.220320622287638,-0.211701317374906,0.43565808127858,0.95498220689951,0.783952509563428,0.732409901320526,-0.997707338314837,-0.999798706805111,-0.996221801610738,-1.00001144302672,-0.998569024156724,-1.00059653152878,-0.999711363655226,-0.999423296301674,-1.00001202149716,-0.975414247408076,-1.01585257448655,-0.928650111533468,-0.953889113314256,-0.932740621582022,-0.129520204881835,-0.127543528435184,-0.865696855673881,-0.697075428345155,-0.482945501571626,-0.456686493379111,-0.734286476120792,-0.794036004705066,-0.997212141638907,-1.00072212377095,-0.999857719290871,-0.687393212796539,-0.849625223616691,-0.613852139504162,-0.854766125709349,-0.901103479846256,-0.891842002975296,-0.999230241261879,-0.998406805170276,-0.998495238914336,-0.999500268615789,-0.996512706334132,0.985882694226076,0.979855218935518,0.974068248719898,-0.995336624262192,-0.995638431498942,-0.996997127592079,-1.00050432338712,-0.994320287433751,-0.998959131309507,-0.994148824754622,-0.996968305599227,0.364386482818248,1.00066619682254,-0.995556919225178,-0.994136253026654,-0.988592104872724,-0.994099009274166,-1.00002672547588,-0.998511905248606,-1.00137937504038,-0.971765000923763,-0.990610572783895,-1.00130111135489,-0.975541040324955,-0.997618561971649,-0.971298897055111,-0.931709254411466,-0.878755888270652,-0.968489320416959,-0.999654084144464,-1.00390556730342,-1.00659349095324,-1.00237325303983,-1.00054610347458,-1.00034671043173,-0.999910205925262,-0.999950580234387,-0.975079439453386,-0.816798186563419,-0.805083738450746,-0.88817113052505,-0.997805677329192,-1.00012084209918,-0.999772528358989,-0.880774882708793,-1.00011778306373,-0.99942804224185,-1.00002271965354,-0.999984318176603,-0.999934058629871,-1.00005412990557,-1.00001426505397,-0.999723633010185,-1.00012951541932,-0.999985183721629,-0.999991027838201,-0.999994015675368,-0.999999090564409,-0.999997950353385,-1.00000941502719,-0.999988013776041,-0.999648902218397,-0.996909370677414,-1.00000288587245,-0.999997938567254,-1.00000647738509,-1.00002799333135,-1.00007768974359,-0.999740652659,-0.999970787330957,-1.00002428249698,0.759075237442781,-0.999869052476902,-0.999614646906123,-0.887170113693745,-0.553621024601565,-0.67611157148097,-0.999998082966398,-0.999859521854323,-0.999981088388536,-0.999708207556782,-0.999975928284174,-1.00005562038031,1.03689328582558,1.02628957882926,1.02743523448779,1.03564395257481,1.01406302988309,1.01821282392148]}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Data/SquareShelfConstrained.data.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Data/SquareShelfConstrained.data.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Data/SquareShelfConstrained.data.js	(revision 21239)
@@ -0,0 +1,1974 @@
+var x =[ 0, //{{{
+    1000000.00,
+    1000000.00,
+             0,
+     500000.00,
+     500000.00,
+    1000000.00,
+     500000.00,
+             0,
+     750000.00,
+     250000.00,
+     250000.00,
+     750000.00,
+    1000000.00,
+     750000.00,
+     625000.00,
+     875000.00,
+     750000.00,
+     625000.00,
+     562500.00,
+     625000.00,
+     687500.00,
+     687500.00,
+     718750.00,
+     875000.00,
+     792968.75,
+     687500.00,
+     750651.04,
+     812500.00,
+     784376.26,
+     812500.00,
+     737044.20,
+     711415.45,
+     619808.98,
+     679903.16,
+     875000.00,
+     816565.05,
+     790340.66,
+     879033.53,
+     820390.62,
+     759468.98,
+    1000000.00,
+     702320.86,
+     894268.51,
+     743370.58,
+     756140.79,
+     870143.86,
+    1000000.00,
+     941365.26,
+     927759.20,
+     835259.33,
+    1000000.00,
+     683743.63,
+     843782.67,
+     943774.60,
+     728886.91,
+     703008.76,
+     617381.75,
+     725024.94,
+     815309.94,
+     864434.02,
+     923153.03,
+     839208.76,
+     790417.28,
+     811985.49,
+     904485.58,
+    1000000.00,
+     764145.24,
+    1000000.00,
+     803825.28,
+     805004.84,
+    1000000.00,
+     897809.81,
+     856709.28,
+     849378.44,
+     880439.03,
+     874923.01,
+     926298.65,
+     850818.89,
+     773165.13,
+     821586.23,
+     750000.00,
+     838262.90,
+     843656.20,
+    1000000.00,
+     923364.60,
+    1000000.00,
+     947000.54,
+     951408.71,
+    1000000.00,
+     941348.21,
+     955296.62,
+     908023.58,
+     562500.00,
+     250000.00,
+     631606.65,
+     528507.30,
+     576013.63,
+     577293.44,
+     535671.78,
+     502260.83,
+     455537.02,
+     492730.44,
+     375000.00,
+     558796.01,
+     437500.00,
+     406250.00,
+     523391.71,
+     471037.47,
+     357447.01,
+     414577.09,
+     371858.37,
+     406507.82,
+     333442.08,
+     431668.11,
+     282518.77,
+     329423.36,
+     292139.49,
+     532046.01,
+     612510.98,
+     455486.33,
+     312500.00,
+             0,
+     327477.57,
+     528654.71,
+     440987.54,
+     576170.41,
+     490525.44,
+     445996.32,
+     603292.83,
+     638938.30,
+     678235.71,
+     661669.03,
+     215117.76,
+     332210.28,
+     669283.27,
+     667292.83,
+     568893.78,
+     608536.87,
+     555812.71,
+     660330.04,
+     676819.27,
+     727629.11,
+     620541.50,
+     590910.90,
+     569641.27,
+     551966.23,
+     498954.02,
+     483275.96,
+     760325.72,
+     700090.45,
+     772962.54,
+     508900.23,
+     442063.96,
+     645432.38,
+     599915.31,
+     609769.65,
+     512359.02,
+     672668.03,
+     449356.47,
+     352874.69,
+     404046.43,
+     385658.72,
+     382051.86,
+     268990.07,
+     382316.37,
+     322143.60,
+     398597.44,
+     246074.32,
+     325043.39,
+     272789.22,
+     169268.75,
+     224121.33,
+             0,
+     190250.64,
+     220642.79,
+     262363.99,
+     727971.89,
+     731757.70,
+     782353.48,
+     714788.34,
+     793570.57,
+     648067.15,
+     875000.00,
+     785216.54,
+     886603.37,
+     847230.22,
+     835381.89,
+     902841.78,
+     812500.00,
+     873594.69,
+     937500.00,
+     934993.85,
+    1000000.00,
+     956423.95,
+     934982.86,
+     431714.85,
+     375712.88,
+     208581.66,
+     543451.44,
+     625000.00,
+     292441.32,
+     219943.28,
+     173276.46,
+     255248.48,
+             0,
+     133383.78,
+     322294.88,
+     102245.78,
+     588925.13,
+     536316.75,
+     608474.93,
+     720734.45,
+     682677.77,
+     687500.00,
+     326922.57,
+     278769.51,
+     340100.93,
+     182890.39,
+     302010.56,
+     226879.14,
+     175206.51,
+     233160.67,
+     166331.80,
+     299277.36,
+     250000.00,
+     396132.12,
+     348745.04,
+     343516.37,
+     562500.00,
+     531250.00,
+     375000.00,
+     437500.00,
+     480127.31,
+     486755.23,
+     437500.00,
+     418753.58,
+     348418.56,
+     215190.87,
+             0,
+     475106.46,
+     450403.05,
+     462691.02,
+     490774.65,
+     444026.71,
+     442305.62,
+     106797.52,
+     156735.92,
+     125000.00,
+      88484.21,
+     175049.24,
+    1000000.00,
+     949486.27,
+     910659.68,
+     264470.56,
+     187500.00,
+     156250.00,
+      70150.11,
+     210176.80,
+     121372.74,
+     230344.80,
+     446594.38,
+     635173.42,
+    1000000.00,
+     191736.12,
+     143967.18,
+     208897.91,
+     154003.12,
+             0,
+      70969.18,
+     214394.01,
+     280158.83,
+     192618.72,
+     125000.00,
+     249231.59,
+     140263.51,
+     291112.70,
+     313365.54,
+     364113.09,
+     295977.82,
+      76015.00,
+     187500.00,
+     218750.00,
+     156250.00,
+     102877.29,
+      62500.00,
+             0,
+      50433.46,
+     312500.00,
+     400218.61,
+     401492.48,
+     363132.76,
+      98732.17,
+             0,
+      39542.29,
+     330682.47,
+      43070.27,
+     106669.47,
+      57457.06,
+             0,
+             0,
+      50794.52,
+      97418.47,
+      62039.94,
+     143821.44,
+     119380.50,
+      44732.05,
+             0,
+             0,
+      66521.34,
+      69603.39,
+      43959.82,
+      43762.58,
+      93564.32,
+      44263.93,
+     117747.91,
+     139478.83,
+     124387.95,
+             0,
+      48631.61,
+      53659.39,
+      99563.52,
+     659034.30,
+     194316.29,
+     213251.06,
+     400950.40,
+     535853.28,
+     517149.04,
+             0,
+      41128.00,
+      50958.58,
+      72804.35,
+      62500.00,
+             0,
+     857793.90,
+     937500.00,
+     937500.00,
+     901657.70,
+     937500.00,
+    1000000.00]; //}}}
+var y=[ 0, //{{{
+             0,
+    1000000.00,
+    1000000.00,
+     500000.00,
+             0,
+     500000.00,
+    1000000.00,
+     500000.00,
+     750000.00,
+     250000.00,
+     750000.00,
+     500000.00,
+     750000.00,
+    1000000.00,
+     875000.00,
+     875000.00,
+     875000.00,
+    1000000.00,
+     937500.00,
+     937500.00,
+     906250.00,
+    1000000.00,
+     953125.00,
+    1000000.00,
+     937500.00,
+     828125.00,
+     920572.92,
+     878051.76,
+     812500.00,
+    1000000.00,
+     827170.23,
+     783194.86,
+     763264.44,
+     707543.97,
+     721951.29,
+     754091.69,
+     637221.80,
+     798475.65,
+     691856.09,
+     689783.04,
+     625000.00,
+     620870.45,
+     615640.57,
+     644980.88,
+     576238.43,
+     666169.59,
+     687500.00,
+     718750.00,
+     662653.98,
+     829478.44,
+     875000.00,
+     543703.29,
+     530812.60,
+     784862.85,
+     540067.13,
+     500834.56,
+     488117.17,
+     417114.77,
+     583137.43,
+     575959.28,
+     521802.97,
+     626976.87,
+     535111.03,
+     469465.03,
+     758765.61,
+     812500.00,
+     450532.37,
+     250000.00,
+     364474.06,
+     417194.98,
+     375000.00,
+     431402.06,
+     389664.51,
+     437988.85,
+     485024.68,
+     283320.55,
+     362242.64,
+     333923.92,
+     265892.28,
+     288956.91,
+             0,
+     191587.33,
+     242623.96,
+     125000.00,
+     213744.02,
+     437500.00,
+     466364.65,
+     411369.19,
+     312500.00,
+     281250.00,
+     325736.34,
+     317956.14,
+    1000000.00,
+    1000000.00,
+     818704.70,
+     835140.58,
+     801559.48,
+     853763.55,
+     889585.37,
+     939760.83,
+     872436.66,
+     734134.40,
+    1000000.00,
+     737678.54,
+    1000000.00,
+     930524.50,
+     780113.29,
+     812731.80,
+     815106.21,
+     829938.20,
+     877039.54,
+     743576.31,
+     939541.44,
+     784783.37,
+     865184.74,
+     854270.44,
+     800285.94,
+     618790.44,
+     695127.75,
+     922347.37,
+    1000000.00,
+     750000.00,
+     727873.35,
+     682006.93,
+     660032.60,
+     652856.74,
+     648262.24,
+     570982.80,
+     572117.19,
+     635651.50,
+     660876.82,
+     589837.26,
+     822030.59,
+     775011.93,
+     756356.32,
+     446687.43,
+     378923.73,
+     426682.39,
+     465627.29,
+     343357.76,
+     394146.07,
+     349578.94,
+     376385.08,
+     300208.01,
+     523291.43,
+     571482.87,
+     577008.32,
+     410345.02,
+     384657.84,
+     280362.49,
+     320014.02,
+     451952.45,
+     464419.94,
+     289909.55,
+     198407.22,
+     250577.47,
+     241961.37,
+     211680.91,
+     517504.82,
+     538287.18,
+     541502.43,
+     612254.76,
+     482738.10,
+     458789.56,
+     376142.77,
+     486708.47,
+     429481.16,
+     566975.56,
+     416629.96,
+     516114.28,
+     494186.76,
+     490551.45,
+     250000.00,
+     395130.61,
+     438064.38,
+     376306.64,
+     229415.05,
+     122509.49,
+     208273.89,
+     175428.37,
+     143850.07,
+     140502.99,
+             0,
+      67856.86,
+     101540.82,
+     138402.56,
+      86288.28,
+     158344.27,
+             0,
+      51593.97,
+             0,
+      62270.01,
+     187500.00,
+     156250.00,
+     111705.85,
+     614845.27,
+     679697.99,
+     317812.85,
+     102480.06,
+             0,
+     644558.17,
+     361338.44,
+     350274.35,
+     328876.94,
+     375000.00,
+     271457.22,
+     343067.08,
+     402793.01,
+     140294.94,
+     180339.60,
+      70536.35,
+      58255.14,
+      97856.74,
+             0,
+     679082.32,
+     704028.74,
+     631439.06,
+     676013.97,
+     586192.29,
+     703542.79,
+     758241.27,
+     644595.87,
+     593593.21,
+     286334.17,
+             0,
+     280074.28,
+     299300.04,
+     218400.54,
+             0,
+      47201.74,
+             0,
+      75323.67,
+      47102.18,
+     103417.45,
+             0,
+     165415.80,
+     584511.32,
+     777604.49,
+     875000.00,
+     192009.96,
+     249299.90,
+     145315.40,
+     324936.76,
+     301296.02,
+     362740.14,
+     845423.29,
+     814178.18,
+    1000000.00,
+     760623.21,
+     898978.26,
+     562500.00,
+     593750.00,
+     567168.26,
+     932160.89,
+    1000000.00,
+     952573.37,
+     929849.89,
+     941394.35,
+     910245.08,
+     887045.13,
+     711233.62,
+     534282.83,
+      62500.00,
+     260968.98,
+     162770.50,
+     191902.67,
+     218606.39,
+     125000.00,
+     204711.03,
+      92726.84,
+     185075.65,
+     141260.30,
+             0,
+     137508.90,
+      88618.69,
+      68986.34,
+     129647.50,
+      76619.17,
+     231890.83,
+     128996.12,
+             0,
+      41199.93,
+      40241.38,
+      49434.20,
+             0,
+      65536.00,
+      51062.77,
+             0,
+      42666.40,
+     114827.65,
+     156155.21,
+     168535.63,
+     187500.00,
+      97803.02,
+      43445.41,
+     164826.19,
+     334482.71,
+     365594.16,
+     437500.00,
+     312500.00,
+     419179.12,
+     476605.37,
+     281250.00,
+     442576.08,
+     542459.43,
+     471741.14,
+     625000.00,
+     562500.00,
+     523498.57,
+     598067.34,
+     322564.20,
+     240327.37,
+     246137.38,
+     561766.58,
+     591080.84,
+     641861.77,
+     705710.88,
+     687500.00,
+     718750.00,
+     657460.18,
+     666135.63,
+      47644.44,
+     544673.40,
+     601399.14,
+     220045.66,
+     292367.99,
+     370285.70,
+     812500.00,
+     781250.00,
+     836877.18,
+     880834.88,
+    1000000.00,
+     937500.00,
+     937500.00,
+     925824.50,
+    1000000.00,
+     959042.80,
+     861983.44,
+     937500.00]; //}}}
+var vx =[ 0, //{{{
+             0,
+             0,
+             0,
+          1.06,
+             0,
+             0,
+             0,
+             0,
+         98.52,
+         99.38,
+        -94.27,
+         -4.26,
+             0,
+             0,
+        106.36,
+        210.00,
+        192.06,
+             0,
+         48.30,
+         90.18,
+        158.39,
+             0,
+        122.10,
+             0,
+        204.38,
+        126.53,
+        201.33,
+        220.43,
+        160.49,
+             0,
+        151.85,
+        107.37,
+         54.44,
+         51.59,
+         97.47,
+        118.15,
+         45.15,
+        158.09,
+         74.73,
+         61.60,
+             0,
+         23.73,
+         47.66,
+         41.24,
+         17.36,
+         65.43,
+             0,
+         80.82,
+         58.32,
+        186.32,
+             0,
+          3.32,
+          1.41,
+        100.86,
+          5.30,
+         -1.51,
+         -1.87,
+        -22.02,
+         24.52,
+         24.83,
+         -2.09,
+         48.43,
+          2.90,
+        -11.16,
+        118.64,
+             0,
+        -15.04,
+             0,
+        -53.63,
+        -29.86,
+             0,
+        -34.85,
+        -45.14,
+        -26.83,
+         -9.00,
+        -95.11,
+        -51.45,
+        -72.33,
+        -95.02,
+        -92.08,
+             0,
+       -141.64,
+       -114.80,
+             0,
+       -108.28,
+             0,
+        -22.46,
+        -23.52,
+             0,
+        -63.36,
+        -45.08,
+        -68.59,
+             0,
+             0,
+         88.53,
+         24.42,
+         47.17,
+         65.40,
+         30.32,
+          2.87,
+        -32.11,
+         -1.11,
+             0,
+         19.72,
+             0,
+        -74.71,
+         13.31,
+        -12.68,
+        -85.39,
+        -52.31,
+        -98.96,
+        -31.91,
+       -126.23,
+        -33.15,
+       -168.78,
+       -127.85,
+       -113.05,
+          3.73,
+         25.88,
+        -28.14,
+             0,
+             0,
+        -54.29,
+          6.07,
+         -7.19,
+         11.34,
+         -0.16,
+         -0.22,
+          4.96,
+         16.50,
+         30.60,
+         11.89,
+       -167.77,
+        -80.40,
+         72.66,
+         -9.43,
+         -8.40,
+         -7.51,
+         -1.21,
+        -35.04,
+        -23.15,
+        -46.83,
+        -19.97,
+        -28.94,
+          0.88,
+          1.90,
+          1.58,
+          2.34,
+        -37.84,
+        -70.28,
+        -69.67,
+          0.93,
+          3.98,
+        -48.82,
+        -56.57,
+        -51.69,
+         -4.61,
+        -92.92,
+          1.22,
+         -1.98,
+         -0.14,
+         -6.83,
+          3.66,
+         13.06,
+         18.74,
+          5.90,
+          9.75,
+        -11.42,
+         18.20,
+          0.40,
+          4.48,
+          5.15,
+             0,
+         42.78,
+         23.87,
+         38.99,
+       -103.80,
+       -132.41,
+       -130.63,
+       -126.64,
+       -157.32,
+        -94.57,
+             0,
+       -125.29,
+       -139.68,
+       -152.66,
+       -151.02,
+       -127.20,
+             0,
+       -104.08,
+             0,
+        -69.03,
+             0,
+        -80.34,
+       -107.03,
+         -3.11,
+        -20.48,
+         74.88,
+        -27.50,
+             0,
+        -28.90,
+         51.47,
+         62.66,
+         59.36,
+             0,
+         99.89,
+         39.70,
+         45.08,
+        -58.14,
+        -21.77,
+        -58.26,
+        -97.48,
+       -107.06,
+             0,
+        -33.93,
+        -56.70,
+        -15.90,
+        -61.45,
+         -9.79,
+        -68.57,
+       -118.40,
+        -38.45,
+        -24.30,
+         67.95,
+             0,
+         37.44,
+         45.71,
+         81.87,
+             0,
+        -11.23,
+             0,
+         33.96,
+          6.22,
+          7.93,
+             0,
+         55.37,
+         -6.11,
+       -126.14,
+             0,
+         16.31,
+         20.66,
+         28.64,
+          0.85,
+         20.30,
+          8.57,
+       -180.75,
+       -174.45,
+             0,
+       -117.58,
+       -227.43,
+             0,
+         22.05,
+          6.36,
+       -175.77,
+             0,
+       -177.70,
+       -178.91,
+       -193.64,
+       -213.47,
+       -208.14,
+        -11.05,
+          2.37,
+             0,
+        104.62,
+        143.06,
+        136.85,
+        125.74,
+             0,
+         93.48,
+        147.01,
+        121.98,
+        154.33,
+             0,
+        148.01,
+        145.90,
+        112.62,
+        119.04,
+         78.25,
+         92.46,
+        118.43,
+             0,
+         93.51,
+        102.75,
+        109.77,
+             0,
+             0,
+         68.45,
+             0,
+         38.61,
+         64.65,
+         88.59,
+        123.38,
+             0,
+         75.40,
+         62.22,
+         79.75,
+         64.80,
+         44.90,
+             0,
+             0,
+         30.65,
+         16.75,
+         82.29,
+         29.52,
+         -7.98,
+         14.13,
+             0,
+             0,
+        -17.43,
+        -19.78,
+         39.27,
+         70.57,
+        103.88,
+         -7.47,
+        -23.11,
+        -49.25,
+        -87.42,
+             0,
+        -69.20,
+        -50.66,
+        -65.04,
+        -63.82,
+         -8.68,
+        -23.77,
+         53.60,
+        -14.42,
+         -1.64,
+             0,
+        -82.69,
+       -127.73,
+       -157.86,
+             0,
+             0,
+        220.71,
+        162.18,
+             0,
+        150.08,
+        150.12,
+             0]; //}}}
+var vy =[ 0, //{{{
+             0,
+             0,
+             0,
+       1619.49,
+             0,
+             0,
+             0,
+             0,
+       1392.27,
+       1188.56,
+       1395.65,
+       1452.44,
+             0,
+             0,
+       1298.38,
+        766.39,
+       1138.53,
+             0,
+        927.25,
+        877.20,
+       1081.21,
+             0,
+        638.61,
+             0,
+        705.43,
+       1382.70,
+        907.94,
+        979.15,
+       1227.77,
+             0,
+       1297.35,
+       1416.22,
+       1538.22,
+       1525.45,
+       1029.03,
+       1223.08,
+       1373.30,
+        909.03,
+       1262.65,
+       1419.06,
+             0,
+       1531.61,
+        995.93,
+       1462.65,
+       1455.20,
+       1092.03,
+             0,
+        616.34,
+        761.96,
+       1029.65,
+             0,
+       1552.90,
+       1226.70,
+        543.19,
+       1500.29,
+       1529.54,
+       1595.18,
+       1456.50,
+       1320.62,
+       1139.39,
+        816.26,
+       1233.00,
+       1380.17,
+       1306.29,
+        809.95,
+             0,
+       1405.50,
+             0,
+       1230.93,
+       1284.81,
+             0,
+        899.64,
+       1065.17,
+       1141.21,
+       1041.37,
+        838.78,
+        673.32,
+       1023.09,
+       1162.13,
+       1059.53,
+             0,
+        798.03,
+        892.42,
+             0,
+        495.54,
+             0,
+        580.56,
+        503.81,
+             0,
+        465.65,
+        395.83,
+        716.40,
+             0,
+             0,
+       1455.92,
+       1470.71,
+       1521.05,
+       1405.51,
+       1256.40,
+        917.14,
+       1352.49,
+       1600.45,
+             0,
+       1589.29,
+             0,
+        967.30,
+       1563.03,
+       1519.27,
+       1462.17,
+       1464.61,
+       1283.29,
+       1576.28,
+        852.51,
+       1551.33,
+       1237.14,
+       1332.92,
+       1407.55,
+       1619.57,
+       1588.68,
+       1029.47,
+             0,
+             0,
+       1524.91,
+       1613.84,
+       1611.70,
+       1609.22,
+       1619.00,
+       1616.90,
+       1605.97,
+       1585.52,
+       1547.54,
+       1573.97,
+       1205.85,
+       1491.46,
+       1506.09,
+       1546.38,
+       1582.85,
+       1584.62,
+       1611.28,
+       1486.20,
+       1509.30,
+       1393.33,
+       1547.02,
+       1494.59,
+       1614.65,
+       1618.48,
+       1621.38,
+       1602.99,
+       1364.42,
+       1345.20,
+       1256.72,
+       1614.07,
+       1610.59,
+       1432.10,
+       1265.45,
+       1397.92,
+       1424.33,
+       1236.84,
+       1616.96,
+       1586.97,
+       1607.97,
+       1601.76,
+       1597.01,
+       1476.70,
+       1554.73,
+       1549.11,
+       1591.19,
+       1462.44,
+       1529.48,
+       1500.68,
+       1250.40,
+       1407.74,
+             0,
+       1244.07,
+       1375.30,
+       1408.15,
+       1183.64,
+        803.25,
+       1006.75,
+       1054.70,
+        783.42,
+        997.80,
+             0,
+        449.58,
+        386.59,
+        619.74,
+        465.23,
+        474.56,
+             0,
+        247.34,
+             0,
+        167.10,
+             0,
+        235.10,
+        263.31,
+       1613.80,
+       1587.70,
+       1203.52,
+        837.02,
+             0,
+       1516.37,
+       1295.49,
+       1132.67,
+       1338.28,
+             0,
+        871.64,
+       1466.21,
+        907.04,
+       1032.52,
+       1232.40,
+        616.06,
+        456.63,
+        739.98,
+             0,
+       1546.05,
+       1474.90,
+       1573.91,
+       1287.44,
+       1540.92,
+       1386.17,
+       1191.36,
+       1429.80,
+       1258.43,
+       1353.32,
+             0,
+       1459.16,
+       1442.41,
+       1274.50,
+             0,
+        438.29,
+             0,
+        659.04,
+        435.91,
+        850.65,
+             0,
+       1151.04,
+       1584.37,
+       1284.45,
+             0,
+       1276.03,
+       1429.12,
+       1078.90,
+       1554.86,
+       1512.96,
+       1574.04,
+        745.50,
+       1027.16,
+             0,
+        780.09,
+        862.57,
+             0,
+        567.30,
+        891.65,
+        834.83,
+             0,
+        490.02,
+        361.35,
+        687.58,
+        615.29,
+       1042.57,
+       1603.74,
+       1590.74,
+             0,
+       1051.03,
+        666.22,
+        941.56,
+        841.37,
+             0,
+        453.67,
+        588.49,
+       1080.39,
+        738.85,
+             0,
+        849.76,
+        429.99,
+        548.42,
+        904.98,
+        639.96,
+       1232.98,
+        337.14,
+             0,
+        301.78,
+        239.88,
+        213.59,
+             0,
+             0,
+        113.54,
+             0,
+        393.37,
+        898.54,
+       1084.03,
+        510.41,
+             0,
+        162.78,
+        376.10,
+        250.47,
+        844.66,
+        556.31,
+             0,
+             0,
+        538.12,
+        938.17,
+        509.26,
+       1117.10,
+       1080.94,
+        497.80,
+             0,
+             0,
+        715.37,
+        751.00,
+        408.31,
+        337.32,
+        629.18,
+        528.73,
+       1065.63,
+       1144.69,
+       1037.25,
+             0,
+        541.72,
+        600.74,
+        924.29,
+        412.98,
+       1347.97,
+       1393.51,
+       1329.15,
+       1512.89,
+       1586.47,
+             0,
+        420.92,
+        435.64,
+        492.18,
+             0,
+             0,
+        584.82,
+        331.77,
+             0,
+        306.87,
+        481.10,
+             0]; //}}}
+var index=[[32,33,10], //{{{
+	[68,57,59],
+	[148,5,147],
+	[154,160,164],
+	[74,75,71],
+	[185,213,82],
+	[23,19,21],
+	[49,36,50],
+	[97,108,98],
+	[51,37,39],
+	[233,235,243],
+	[272,229,280],
+	[306,324,224],
+	[222,248,250],
+	[137,57,58],
+	[10,33,136],
+	[17,29,51],
+	[15,24,28],
+	[96,98,34],
+	[19,20,21],
+	[15,26,31],
+	[335,17,336],
+	[29,18,30],
+	[27,18,22],
+	[21,22,24],
+	[102,100,101],
+	[8,101,94],
+	[22,21,16],
+	[20,16,21],
+	[15,28,26],
+	[27,22,16],
+	[18,28,22],
+	[24,15,23],
+	[21,24,23],
+	[29,26,28],
+	[25,335,338],
+	[26,29,335],
+	[136,27,96],
+	[32,10,30],
+	[22,28,24],
+	[29,28,18],
+	[18,32,30],
+	[335,29,17],
+	[30,10,37],
+	[29,30,51],
+	[18,27,32],
+	[335,31,26],
+	[32,27,33],
+	[96,27,16],
+	[136,35,10],
+	[96,99,98],
+	[38,45,46],
+	[34,98,105],
+	[45,38,41],
+	[36,37,40],
+	[48,14,49],
+	[41,40,37],
+	[37,36,39],
+	[38,40,41],
+	[63,44,47],
+	[66,49,55],
+	[66,55,39],
+	[41,37,10],
+	[47,40,63],
+	[10,35,41],
+	[132,45,41],
+	[120,35,136],
+	[36,40,47],
+	[64,56,13],
+	[38,46,60],
+	[62,252,253],
+	[132,41,35],
+	[46,45,43],
+	[56,43,53],
+	[56,64,46],
+	[63,40,38],
+	[50,48,49],
+	[49,14,55],
+	[47,44,50],
+	[50,36,47],
+	[253,50,44],
+	[48,50,42],
+	[37,51,30],
+	[17,51,39],
+	[131,132,120],
+	[339,39,55],
+	[13,56,57],
+	[65,13,68],
+	[254,61,54],
+	[52,339,67],
+	[339,52,336],
+	[43,56,46],
+	[57,56,53],
+	[132,131,43],
+	[53,263,57],
+	[59,137,142],
+	[58,139,137],
+	[72,78,92],
+	[75,73,76],
+	[64,60,46],
+	[61,60,54],
+	[254,54,62],
+	[63,61,44],
+	[54,64,65],
+	[252,42,253],
+	[38,60,63],
+	[63,60,61],
+	[65,64,13],
+	[60,64,54],
+	[76,88,62],
+	[75,76,65],
+	[39,36,66],
+	[49,66,36],
+	[57,68,13],
+	[55,14,67],
+	[150,71,68],
+	[59,57,137],
+	[65,68,71],
+	[151,155,159],
+	[150,68,59],
+	[75,74,73],
+	[74,71,70],
+	[72,87,89],
+	[88,7,62],
+	[74,70,79],
+	[73,74,78],
+	[88,76,73],
+	[71,75,65],
+	[62,54,76],
+	[65,76,54],
+	[77,79,81],
+	[84,86,77],
+	[79,78,74],
+	[92,91,90],
+	[70,152,81],
+	[79,77,93],
+	[59,142,143],
+	[84,77,81],
+	[70,81,79],
+	[80,180,84],
+	[187,83,182],
+	[178,151,159],
+	[69,91,86],
+	[80,84,81],
+	[84,83,86],
+	[83,187,189],
+	[188,187,182],
+	[194,69,86],
+	[89,73,78],
+	[89,78,72],
+	[7,88,87],
+	[87,88,89],
+	[73,89,88],
+	[86,91,77],
+	[93,91,92],
+	[69,90,91],
+	[72,92,90],
+	[93,92,78],
+	[79,93,78],
+	[91,93,77],
+	[20,19,94],
+	[20,100,99],
+	[102,97,100],
+	[96,34,136],
+	[97,99,100],
+	[105,103,125],
+	[99,96,16],
+	[108,105,98],
+	[20,99,16],
+	[97,98,99],
+	[101,20,94],
+	[100,20,101],
+	[114,116,117],
+	[121,107,102],
+	[104,107,106],
+	[108,109,103],
+	[97,109,108],
+	[198,113,124],
+	[128,103,262],
+	[121,106,107],
+	[34,105,120],
+	[107,114,112],
+	[101,8,106],
+	[109,115,103],
+	[109,97,102],
+	[103,105,108],
+	[111,109,102],
+	[111,115,109],
+	[111,102,112],
+	[110,111,112],
+	[112,102,107],
+	[110,113,115],
+	[114,107,104],
+	[110,112,117],
+	[135,110,118],
+	[135,113,110],
+	[95,255,122],
+	[116,118,117],
+	[110,115,111],
+	[115,113,262],
+	[255,114,122],
+	[260,251,257],
+	[114,117,112],
+	[116,134,118],
+	[12,124,135],
+	[110,117,118],
+	[146,140,58],
+	[147,127,119],
+	[125,120,105],
+	[120,125,127],
+	[102,101,121],
+	[106,121,101],
+	[162,164,160],
+	[114,104,122],
+	[239,118,134],
+	[128,119,125],
+	[103,115,262],
+	[125,119,127],
+	[238,162,163],
+	[148,128,197],
+	[147,5,146],
+	[120,127,131],
+	[103,128,125],
+	[126,197,128],
+	[217,221,223],
+	[154,149,153],
+	[263,130,146],
+	[133,53,43],
+	[127,130,131],
+	[130,263,133],
+	[45,132,43],
+	[120,132,35],
+	[43,131,133],
+	[130,133,131],
+	[114,255,116],
+	[221,222,219],
+	[12,135,118],
+	[113,135,124],
+	[136,33,27],
+	[120,136,34],
+	[140,138,139],
+	[142,139,144],
+	[140,153,138],
+	[152,151,80],
+	[140,139,58],
+	[139,138,144],
+	[58,263,146],
+	[140,5,153],
+	[141,144,145],
+	[143,152,150],
+	[139,142,137],
+	[143,142,141],
+	[151,143,141],
+	[152,143,151],
+	[145,144,138],
+	[142,144,141],
+	[328,138,153],
+	[157,159,155],
+	[147,146,130],
+	[5,140,146],
+	[127,147,130],
+	[147,119,148],
+	[128,148,119],
+	[148,129,160],
+	[154,5,160],
+	[166,227,245],
+	[71,150,70],
+	[59,143,150],
+	[145,155,141],
+	[141,155,151],
+	[81,152,80],
+	[150,152,70],
+	[154,153,5],
+	[153,149,328],
+	[160,129,162],
+	[154,164,168],
+	[157,158,156],
+	[155,145,157],
+	[179,214,213],
+	[83,84,180],
+	[157,145,327],
+	[157,156,159],
+	[328,327,138],
+	[235,234,231],
+	[214,181,183],
+	[80,151,178],
+	[148,160,5],
+	[129,163,162],
+	[167,171,165],
+	[168,170,166],
+	[163,129,197],
+	[162,161,164],
+	[126,198,163],
+	[218,198,216],
+	[167,164,161],
+	[168,149,154],
+	[218,220,238],
+	[173,176,165],
+	[170,168,164],
+	[225,228,208],
+	[161,220,171],
+	[167,165,170],
+	[170,164,167],
+	[168,166,246],
+	[223,202,217],
+	[165,171,173],
+	[165,176,177],
+	[170,177,208],
+	[161,171,167],
+	[169,324,173],
+	[223,325,169],
+	[298,299,312],
+	[169,173,171],
+	[172,305,176],
+	[206,299,302],
+	[165,177,170],
+	[177,203,205],
+	[172,176,173],
+	[175,203,176],
+	[177,176,203],
+	[205,208,177],
+	[181,178,159],
+	[80,178,180],
+	[159,183,181],
+	[180,182,83],
+	[181,180,178],
+	[180,181,182],
+	[183,159,156],
+	[181,179,182],
+	[185,179,213],
+	[193,186,191],
+	[210,183,156],
+	[212,210,200],
+	[191,190,184],
+	[179,185,182],
+	[190,191,188],
+	[192,193,191],
+	[194,86,195],
+	[188,182,185],
+	[189,187,186],
+	[188,185,190],
+	[186,187,188],
+	[186,193,196],
+	[83,189,86],
+	[85,196,264],
+	[185,82,190],
+	[186,188,191],
+	[264,192,2],
+	[191,184,192],
+	[85,195,196],
+	[189,186,196],
+	[195,86,189],
+	[85,194,195],
+	[196,193,264],
+	[189,196,195],
+	[197,129,148],
+	[126,163,197],
+	[198,126,262],
+	[216,198,124],
+	[204,199,203],
+	[207,199,204],
+	[211,210,156],
+	[272,278,292],
+	[216,124,217],
+	[230,201,212],
+	[220,218,202],
+	[204,203,175],
+	[205,203,199],
+	[207,204,298],
+	[298,204,209],
+	[199,11,205],
+	[208,166,170],
+	[276,281,285],
+	[209,204,175],
+	[11,199,265],
+	[11,225,205],
+	[208,205,225],
+	[172,303,305],
+	[209,303,302],
+	[211,156,158],
+	[230,212,231],
+	[326,229,292],
+	[200,210,211],
+	[215,82,213],
+	[183,210,212],
+	[179,181,214],
+	[212,323,214],
+	[183,212,214],
+	[323,201,215],
+	[217,124,12],
+	[323,213,214],
+	[218,216,202],
+	[217,12,221],
+	[202,216,217],
+	[223,220,202],
+	[198,218,163],
+	[239,221,12],
+	[310,9,307],
+	[171,220,169],
+	[238,220,161],
+	[221,239,222],
+	[221,219,223],
+	[222,239,248],
+	[222,250,318],
+	[325,219,224],
+	[220,223,169],
+	[321,322,320],
+	[172,306,303],
+	[228,229,227],
+	[228,166,208],
+	[11,280,225],
+	[268,267,265],
+	[242,245,227],
+	[229,228,225],
+	[166,228,227],
+	[267,11,265],
+	[234,6,231],
+	[236,6,234],
+	[231,212,200],
+	[6,230,231],
+	[233,234,235],
+	[275,278,272],
+	[275,277,278],
+	[235,231,200],
+	[233,290,236],
+	[200,211,235],
+	[211,158,241],
+	[243,211,241],
+	[233,236,234],
+	[242,326,241],
+	[162,238,161],
+	[218,238,163],
+	[118,239,12],
+	[248,239,134],
+	[242,241,158],
+	[334,240,258],
+	[243,241,237],
+	[244,242,158],
+	[227,229,326],
+	[243,237,291],
+	[211,243,235],
+	[244,158,327],
+	[246,166,245],
+	[242,244,245],
+	[245,244,246],
+	[328,246,244],
+	[168,246,149],
+	[257,256,249],
+	[330,329,123],
+	[251,248,134],
+	[250,248,247],
+	[330,331,329],
+	[251,247,248],
+	[308,311,321],
+	[134,116,261],
+	[257,258,260],
+	[50,253,42],
+	[62,7,252],
+	[44,61,254],
+	[62,253,254],
+	[44,254,253],
+	[259,95,256],
+	[261,255,259],
+	[257,249,258],
+	[257,259,256],
+	[259,257,251],
+	[334,333,4],
+	[240,331,332],
+	[261,259,251],
+	[259,255,95],
+	[332,260,258],
+	[247,251,260],
+	[134,261,251],
+	[116,255,261],
+	[198,262,113],
+	[128,262,126],
+	[57,263,58],
+	[133,263,53],
+	[199,207,265],
+	[192,264,193],
+	[265,207,268],
+	[314,268,207],
+	[226,283,282],
+	[273,267,266],
+	[11,267,272],
+	[304,313,314],
+	[267,268,266],
+	[297,269,295],
+	[270,293,268],
+	[266,281,276],
+	[274,284,285],
+	[277,275,271],
+	[275,267,273],
+	[275,272,267],
+	[276,273,266],
+	[273,271,275],
+	[271,283,277],
+	[276,271,273],
+	[279,291,292],
+	[266,293,281],
+	[276,285,284],
+	[296,232,290],
+	[296,290,279],
+	[279,278,277],
+	[279,292,278],
+	[279,277,296],
+	[279,290,291],
+	[225,280,229],
+	[11,272,280],
+	[281,293,297],
+	[1,286,288],
+	[277,283,226],
+	[271,284,283],
+	[284,271,276],
+	[274,282,284],
+	[283,284,282],
+	[295,287,288],
+	[286,274,285],
+	[285,288,286],
+	[295,281,297],
+	[295,285,281],
+	[1,288,287],
+	[236,290,232],
+	[277,226,289],
+	[291,290,233],
+	[243,291,233],
+	[291,237,292],
+	[326,292,237],
+	[272,292,229],
+	[268,293,266],
+	[297,293,270],
+	[287,295,269],
+	[313,294,270],
+	[285,295,288],
+	[277,289,296],
+	[232,296,289],
+	[270,294,297],
+	[269,297,294],
+	[209,299,298],
+	[312,299,206],
+	[302,299,209],
+	[301,174,304],
+	[305,303,209],
+	[300,302,307],
+	[206,301,312],
+	[206,302,300],
+	[172,324,306],
+	[300,307,9],
+	[313,304,174],
+	[207,298,304],
+	[209,175,305],
+	[176,305,175],
+	[322,317,318],
+	[310,307,303],
+	[302,303,307],
+	[310,303,306],
+	[306,311,315],
+	[308,309,315],
+	[9,315,309],
+	[310,315,9],
+	[306,224,316],
+	[316,224,317],
+	[301,304,312],
+	[298,312,304],
+	[294,313,174],
+	[314,313,270],
+	[268,314,270],
+	[207,304,314],
+	[306,315,310],
+	[308,315,311],
+	[317,224,219],
+	[311,306,316],
+	[318,317,219],
+	[316,317,322],
+	[222,318,219],
+	[319,320,123],
+	[321,320,319],
+	[320,250,330],
+	[318,250,320],
+	[308,321,319],
+	[316,322,311],
+	[320,322,318],
+	[311,322,321],
+	[201,323,212],
+	[213,323,215],
+	[173,324,172],
+	[325,324,169],
+	[219,325,223],
+	[324,325,224],
+	[241,326,237],
+	[227,326,242],
+	[157,327,158],
+	[138,327,145],
+	[246,328,149],
+	[327,328,244],
+	[320,330,123],
+	[250,331,330],
+	[331,250,247],
+	[332,331,247],
+	[240,329,331],
+	[260,332,247],
+	[240,332,258],
+	[339,336,17],
+	[258,249,333],
+	[333,334,258],
+	[31,335,25],
+	[3,337,340],
+	[338,337,25],
+	[335,336,338],
+	[340,337,336],
+	[337,338,336],
+	[39,339,17],
+	[67,339,55],
+	[336,52,340]]; //}}}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Data/convertmattoarch.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Data/convertmattoarch.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Data/convertmattoarch.m	(revision 21239)
@@ -0,0 +1,47 @@
+function []=convertmattoarch(matfile,archfile);
+%    convertmattoarch -- function to convert mat-format file to arch-format file
+%
+%    usage:
+%        convertmattoarch(matfile,archfile);
+%    where:
+%        matfile		name of mat-format file
+%        archfile		name of arch-format file (optional)
+%
+
+	if ~exist('matfile','var') || isempty(matfile)
+		help convertmattoarch
+		error('convertmattoarch usage error.');
+	end
+
+	[pathstr,name,ext]=fileparts(matfile);
+	if isempty(ext)
+		ext='.mat';
+	end
+	matfile=fullfile(pathstr,[name ext]);
+
+	if ~exist('archfile','var') || isempty(archfile)
+		archfile=fullfile(pathstr,[name '.arch']);
+	end
+
+	if exist(archfile,'file')
+		delete(archfile);
+	end
+
+	a=load(matfile,'-mat');
+	disp(sprintf('mat-format file ''%s'' read.',matfile));
+	fnames=fieldnames(a);
+
+	for i=1:length(fnames)
+		if isstruct(a.(fnames{i})) || iscell(a.(fnames{i}))
+			warning('field ''%s'' is of class ''%s'' and will not be written.',fnames{i},class(a.(fnames{i})));
+		else
+			% matlab writes the dimensions reversed and matrices transposed into binary files, so compensate for that
+			archwrite(archfile,fnames{i},transpose(a.(fnames{i})));
+			disp(sprintf('field ''%s'' of class ''%s'' and size [%dx%d] written.',...
+			             fnames{i},class(a.(fnames{i})),size(a.(fnames{i}),1),size(a.(fnames{i}),2)));
+		end
+	end
+	disp(sprintf('arch-format  file ''%s'' written.',archfile));
+
+end
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Data/delta18o.data
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Data/delta18o.data	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Data/delta18o.data	(revision 21239)
@@ -0,0 +1,2 @@
+  -3.9010000e1  -3.9180000e1  -3.9280000e1  -3.9320000e1  -3.9050000e1  -3.8880000e1  -3.8680000e1  -3.8560000e1  -3.8500000e1  -3.8520000e1  -3.8560000e1
+   0.0000000e+00   2.0000000e+01   4.0000000e+01   6.0000000e+01   8.0000000e+01   1.0000000e+02   1.2000000e+02   1.4000000e+02   1.6000000e+02   1.8000000e+02   2.0000000e+02
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Data/loadarch.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Data/loadarch.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Data/loadarch.m	(revision 21239)
@@ -0,0 +1,67 @@
+function [s]=loadarch(archfile);
+%LOADARCH - Function to read the variables from an arch-formatted file
+%
+%	Usage:
+%		s=loadarch(archfile);
+%	where:
+%		archfile			name of an arch-format file
+	
+	if ~exist('archfile','var') || isempty(archfile)
+		help loadarch
+		error('loadarch usage error.');
+	end
+
+	[pathstr,name,ext]=fileparts(archfile);
+	if isempty(ext)
+		ext='.arch';
+	end
+	archfile=fullfile(pathstr,[name ext]);
+
+	% Fields for our structure 's'
+	variable_names={};
+	variable_sizes={};
+	variable_types={};
+	variable_data={};
+
+	% Read file and gather variable names and sizes
+	fid=fopen(archfile,'rb');
+	while ~feof(fid)
+		[reclen,count]=fread(fid,1,'int','ieee-be');
+		if count == 0, % reached eof
+			break;
+		end
+		% Read variable traits
+		fread(fid,1,'int','ieee-be');
+		variable_name_len=fread(fid,1,'int','ieee-be');
+		variable_names{end+1}=char(fread(fid,variable_name_len,'char','ieee-be')');
+		variable_reclen=fread(fid,1,'int','ieee-be');
+		variable_type=fread(fid,1,'int','ieee-be');
+		% set related data type
+		if variable_type==2
+			variable_types{end+1}='double';
+			variable_sizes{end+1}='1x1';
+			variable_data{end+1}=fread(fid,1,'double','ieee-be'); % read data
+		elseif variable_type==3
+			variable_types{end+1}='double vector / matrix';
+			rows=fread(fid,1,'int','ieee-be');
+			cols=fread(fid,1,'int','ieee-be');
+			variable_data{end+1}=fread(fid,[rows,cols],'double','ieee-be');
+			variable_size_cat=strcat(num2str(rows),'x',num2str(cols));
+			variable_sizes{end+1}=variable_size_cat;
+		else
+			fclose(fid);
+			error('Error: Encountered invalid data type while loading arch information.');
+		end
+	end
+	fclose(fid);
+	disp(sprintf('arch-format file ''%s'' read.',archfile));	
+
+	% Relate the variable fields to the structure
+	% Access fields by doing (for example): s(1).Name -> 'VelocityXObservation'
+	s=struct('FileName',archfile,'Name',variable_names,'Size',variable_sizes,'Type',variable_types,'Data',variable_data);
+	% Let user know data has been successfully read
+	for i=1:numel(variable_names)
+		disp(sprintf('field ''%s'' of class ''%s'' and size [%s] read.',...
+			variable_names{i},variable_types{i},variable_sizes{i}));
+	end
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Data/love_numbers_10k.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Data/love_numbers_10k.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Data/love_numbers_10k.txt	(revision 21239)
@@ -0,0 +1,10001 @@
+0 0 0 0 0 0 0 0 
+1	 -1.28740059	 -1.00000000	  -0.89858519	  1.28740059	  0.42519882	  0.89858519  0.00000000
+2	 -1.00025365	 -0.30922675	  0.02060926	  1.69102690	  0.46358648	  0.67016399  0.61829668
+3	 -1.06243501	 -0.19927948	  0.06801636	  1.86315553	  0.55741597	  0.73270416  0.56270589
+4	 -1.06779588	 -0.13649834	  0.05667027	  1.93129754	  0.63672498	  0.80683140  0.51132745
+5	 -1.10365923	 -0.10736896	  0.04401221	  1.99629027	  0.68737906	  0.84861883  0.48642259
+6	 -1.16440348	 -0.09295485	  0.03638747	  2.07144863	  0.72031283	  0.87065768  0.47898268
+7	 -1.23634156	 -0.08469861	  0.03202759	  2.15164295	  0.74355796	  0.88327380  0.47955214
+8	 -1.31140380	 -0.07921412	  0.02937593	  2.23218968	  0.76126493	  0.89140995  0.48323250
+9	 -1.38582399	 -0.07513541	  0.02762338	  2.31068858	  0.77552290	  0.89724121  0.48795424
+10	 -1.45807465	 -0.07187005	  0.02638627	  2.38620460	  0.78744212	  0.90174369  0.49291061
+11	 -1.52763314	 -0.06913154	  0.02547640	  2.45850160	  0.79766475	  0.90539206  0.49779422
+12	 -1.59437866	 -0.06676258	  0.02479080	  2.52761607	  0.80659635	  0.90844662  0.50248477
+13	 -1.65833071	 -0.06466619	  0.02426511	  2.59366452	  0.81451271	  0.91106870  0.50693175
+14	 -1.71954820	 -0.06277732	  0.02385464	  2.65677088	  0.82161167	  0.91336804  0.51111243
+15	 -1.77809640	 -0.06105001	  0.02352654	  2.71704639	  0.82804049	  0.91542346  0.51501712
+16	 -1.83403970	 -0.05945081	  0.02325609	  2.77458889	  0.83391153	  0.91729309  0.51864363
+17	 -1.88744242	 -0.05795502	  0.02302469	  2.82948740	  0.83931209	  0.91902029  0.52199490
+18	 -1.93837115	 -0.05654418	  0.02281843	  2.88182697	  0.84431095	  0.92063739  0.52507761
+19	 -1.98689666	 -0.05520447	  0.02262706	  2.93169219	  0.84896295	  0.92216847  0.52790108
+20	 -2.03309477	 -0.05392545	  0.02244322	  2.97916932	  0.85331225	  0.92363132  0.53047654
+21	 -2.07704643	 -0.05269926	  0.02226173	  3.02434717	  0.85739480	  0.92503902  0.53281639
+22	 -2.11883714	 -0.05151988	  0.02207909	  3.06731726	  0.86124014	  0.92640103  0.53493369
+23	 -2.15855611	 -0.05038274	  0.02189307	  3.10817337	  0.86487276	  0.92772419  0.53684176
+24	 -2.19629514	 -0.04928430	  0.02170238	  3.14701084	  0.86831322	  0.92901331  0.53855386
+25	 -2.23214747	 -0.04822179	  0.02150643	  3.18392568	  0.87157886	  0.93027178  0.54008294
+26	 -2.26620674	 -0.04719301	  0.02130509	  3.21901373	  0.87468453	  0.93150190  0.54144148
+27	 -2.29856595	 -0.04619619	  0.02109858	  3.25236976	  0.87764301	  0.93270523  0.54264140
+28	 -2.32931659	 -0.04522983	  0.02088735	  3.28408675	  0.88046543	  0.93388282  0.54369397
+29	 -2.35854794	 -0.04429270	  0.02067197	  3.31425524	  0.88316156	  0.93503533  0.54460979
+30	 -2.38634650	 -0.04338368	  0.02045310	  3.34296281	  0.88574004	  0.93616321  0.54539877
+31	 -2.41279547	 -0.04250179	  0.02023142	  3.37029367	  0.88820859	  0.93726678  0.54607015
+32	 -2.43797451	 -0.04164613	  0.02000761	  3.39632839	  0.89057416	  0.93834626  0.54663248
+33	 -2.46195951	 -0.04081583	  0.01978231	  3.42114367	  0.89284301	  0.93940185  0.54709369
+34	 -2.48482241	 -0.04001011	  0.01955614	  3.44481230	  0.89502085	  0.94043375  0.54746112
+35	 -2.50663126	 -0.03922817	  0.01932966	  3.46740309	  0.89711291	  0.94144217  0.54774153
+36	 -2.52745016	 -0.03846928	  0.01910337	  3.48898088	  0.89912397	  0.94242735  0.54794114
+37	 -2.54733938	 -0.03773269	  0.01887774	  3.50960670	  0.90105847	  0.94338957  0.54806571
+38	 -2.56635547	 -0.03701769	  0.01865317	  3.52933779	  0.90292050	  0.94432915  0.54812051
+39	 -2.58455138	 -0.03632358	  0.01843000	  3.54822780	  0.90471386	  0.94524642  0.54811044
+40	 -2.60197665	 -0.03564968	  0.01820854	  3.56632697	  0.90644209	  0.94614178  0.54803997
+41	 -2.61867756	 -0.03499532	  0.01798905	  3.58368224	  0.90810850	  0.94701563  0.54791326
+42	 -2.63469733	 -0.03435985	  0.01777176	  3.60033748	  0.90971616	  0.94786840  0.54773413
+43	 -2.65007629	 -0.03374263	  0.01755683	  3.61633367	  0.91126798	  0.94870054  0.54750610
+44	 -2.66485208	 -0.03314303	  0.01734443	  3.63170905	  0.91276665	  0.94951253  0.54723245
+45	 -2.67905981	 -0.03256047	  0.01713468	  3.64649934	  0.91421471	  0.95030485  0.54691620
+46	 -2.69273222	 -0.03199435	  0.01692767	  3.66073787	  0.91561457	  0.95107798  0.54656015
+47	 -2.70589990	 -0.03144411	  0.01672347	  3.67445580	  0.91696845	  0.95183242  0.54616691
+48	 -2.71859139	 -0.03090919	  0.01652215	  3.68768220	  0.91827849	  0.95256866  0.54573889
+49	 -2.73083334	 -0.03038907	  0.01632374	  3.70044427	  0.91954667	  0.95328719  0.54527835
+50	 -2.74265068	 -0.02988323	  0.01612826	  3.71276745	  0.92077487	  0.95398851  0.54478739
+51	 -2.75406669	 -0.02939118	  0.01593573	  3.72467551	  0.92196486	  0.95467309  0.54426797
+52	 -2.76510320	 -0.02891245	  0.01574615	  3.73619076	  0.92311833	  0.95534141  0.54372191
+53	 -2.77578063	 -0.02844656	  0.01555950	  3.74733406	  0.92423685	  0.95599393  0.54315095
+54	 -2.78611812	 -0.02799309	  0.01537578	  3.75812503	  0.92532192	  0.95663113  0.54255669
+55	 -2.79613364	 -0.02755161	  0.01519496	  3.76858203	  0.92637496	  0.95725343  0.54194065
+56	 -2.80584405	 -0.02712170	  0.01501701	  3.77872235	  0.92739730	  0.95786128  0.54130424
+57	 -2.81526521	 -0.02670298	  0.01484191	  3.78856223	  0.92839022	  0.95845511  0.54064880
+58	 -2.82441204	 -0.02629506	  0.01466961	  3.79811697	  0.92935491	  0.95903532  0.53997561
+59	 -2.83329857	 -0.02589759	  0.01450009	  3.80740098	  0.93029251	  0.95960232  0.53928586
+60	 -2.84193804	 -0.02551021	  0.01433329	  3.81642782	  0.93120412	  0.96015649  0.53858067
+61	 -2.85034293	 -0.02513260	  0.01416919	  3.82521033	  0.93209074	  0.96069821  0.53786112
+62	 -2.85852503	 -0.02476443	  0.01400773	  3.83376061	  0.93295337	  0.96122784  0.53712821
+63	 -2.86649548	 -0.02440538	  0.01384888	  3.84209010	  0.93379291	  0.96174574  0.53638291
+64	 -2.87426481	 -0.02405518	  0.01369258	  3.85020963	  0.93461026	  0.96225224  0.53562612
+65	 -2.88184299	 -0.02371352	  0.01353880	  3.85812947	  0.93540625	  0.96274768  0.53485873
+66	 -2.88923945	 -0.02338014	  0.01338749	  3.86585931	  0.93618168	  0.96323236  0.53408154
+67	 -2.89646316	 -0.02305478	  0.01323861	  3.87340838	  0.93693730	  0.96370661  0.53329534
+68	 -2.90352261	 -0.02273718	  0.01309211	  3.88078542	  0.93767383	  0.96417071  0.53250089
+69	 -2.91042585	 -0.02242710	  0.01294795	  3.88799874	  0.93839197	  0.96462494  0.53169888
+70	 -2.91718054	 -0.02212431	  0.01280609	  3.89505623	  0.93909236	  0.96506960  0.53089002
+71	 -2.92379397	 -0.02182859	  0.01266648	  3.90196538	  0.93977564	  0.96550493  0.53007493
+72	 -2.93027306	 -0.02153971	  0.01252908	  3.90873334	  0.94044240	  0.96593120  0.52925424
+73	 -2.93662439	 -0.02125748	  0.01239386	  3.91536691	  0.94109322	  0.96634866  0.52842854
+74	 -2.94285425	 -0.02098169	  0.01226077	  3.92187256	  0.94172863	  0.96675754  0.52759839
+75	 -2.94896860	 -0.02071215	  0.01212977	  3.92825645	  0.94234915	  0.96715808  0.52676434
+76	 -2.95497314	 -0.02044868	  0.01200082	  3.93452446	  0.94295529	  0.96755050  0.52592690
+77	 -2.96087331	 -0.02019110	  0.01187388	  3.94068220	  0.94354752	  0.96793501  0.52508656
+78	 -2.96667427	 -0.01993924	  0.01174893	  3.94673503	  0.94412630	  0.96831183  0.52424380
+79	 -2.97238097	 -0.01969293	  0.01162591	  3.95268804	  0.94469206	  0.96868116  0.52339906
+80	 -2.97799813	 -0.01945201	  0.01150481	  3.95854612	  0.94524521	  0.96904318  0.52255277
+81	 -2.98353025	 -0.01921634	  0.01138557	  3.96431391	  0.94578617	  0.96939809  0.52170535
+82	 -2.98898162	 -0.01898576	  0.01126817	  3.96999586	  0.94631531	  0.96974607  0.52085719
+83	 -2.99435636	 -0.01876014	  0.01115257	  3.97559622	  0.94683300	  0.97008729  0.52000868
+84	 -2.99965838	 -0.01853932	  0.01103875	  3.98111905	  0.94733959	  0.97042193  0.51916016
+85	 -3.00489143	 -0.01832319	  0.01092666	  3.98656824	  0.94783543	  0.97075015  0.51831198
+86	 -3.01005909	 -0.01811161	  0.01081628	  3.99194748	  0.94832084	  0.97107211  0.51746448
+87	 -3.01516479	 -0.01790446	  0.01070757	  3.99726033	  0.94879613	  0.97138796  0.51661796
+88	 -3.02021180	 -0.01770162	  0.01060052	  4.00251017	  0.94926160	  0.97169786  0.51577273
+89	 -3.02520323	 -0.01750298	  0.01049508	  4.00770025	  0.94971755	  0.97200194  0.51492908
+90	 -3.03014209	 -0.01730842	  0.01039123	  4.01283367	  0.95016424	  0.97230035  0.51408727
+91	 -3.03503122	 -0.01711783	  0.01028894	  4.01791339	  0.95060195	  0.97259323  0.51324758
+92	 -3.03987336	 -0.01693111	  0.01018819	  4.02294225	  0.95103094	  0.97288070  0.51241024
+93	 -3.04467112	 -0.01674816	  0.01008894	  4.02792295	  0.95145145	  0.97316290  0.51157550
+94	 -3.04942699	 -0.01656889	  0.00999117	  4.03285810	  0.95186373	  0.97343995  0.51074358
+95	 -3.05414335	 -0.01639319	  0.00989485	  4.03775017	  0.95226799	  0.97371196  0.50991471
+96	 -3.05882250	 -0.01622097	  0.00979997	  4.04260153	  0.95266447	  0.97397906  0.50908908
+97	 -3.06346660	 -0.01605215	  0.00970649	  4.04741445	  0.95305338	  0.97424136  0.50826689
+98	 -3.06807773	 -0.01588664	  0.00961439	  4.05219109	  0.95343492	  0.97449897  0.50744832
+99	 -3.07265789	 -0.01572436	  0.00952364	  4.05693353	  0.95380929	  0.97475200  0.50663356
+100	 -3.07720897	 -0.01556522	  0.00943423	  4.06164375	  0.95417670	  0.97500055  0.50582277
+101	 -3.08173279	 -0.01540916	  0.00934613	  4.06632364	  0.95453731	  0.97524472  0.50501611
+102	 -3.08623109	 -0.01525608	  0.00925931	  4.07097501	  0.95489131	  0.97548461  0.50421372
+103	 -3.09070551	 -0.01510592	  0.00917376	  4.07559959	  0.95523888	  0.97572032  0.50341576
+104	 -3.09515765	 -0.01495861	  0.00908946	  4.08019904	  0.95558018	  0.97595193  0.50262236
+105	 -3.09958899	 -0.01481408	  0.00900637	  4.08477492	  0.95591537	  0.97617955  0.50183364
+106	 -3.10400100	 -0.01467225	  0.00892449	  4.08932875	  0.95624461	  0.97640325  0.50104973
+107	 -3.10839504	 -0.01453308	  0.00884379	  4.09386196	  0.95656806	  0.97662313  0.50027073
+108	 -3.11277241	 -0.01439648	  0.00876425	  4.09837593	  0.95688585	  0.97683927  0.49949676
+109	 -3.11713438	 -0.01426240	  0.00868586	  4.10287198	  0.95719812	  0.97705174  0.49872791
+110	 -3.12148213	 -0.01413079	  0.00860858	  4.10735134	  0.95750503	  0.97726063  0.49796429
+111	 -3.12581680	 -0.01400157	  0.00853241	  4.11181522	  0.95780669	  0.97746601  0.49720597
+112	 -3.13013947	 -0.01387471	  0.00845733	  4.11626476	  0.95810324	  0.97766796  0.49645304
+113	 -3.13445117	 -0.01375013	  0.00838331	  4.12070104	  0.95839480	  0.97786656  0.49570558
+114	 -3.13875289	 -0.01362779	  0.00831034	  4.12512510	  0.95868150	  0.97806186  0.49496366
+115	 -3.14304556	 -0.01350764	  0.00823841	  4.12953792	  0.95896344	  0.97825395  0.49422734
+116	 -3.14733008	 -0.01338963	  0.00816748	  4.13394045	  0.95924075	  0.97844289  0.49349669
+117	 -3.15160728	 -0.01327370	  0.00809756	  4.13833358	  0.95951352	  0.97862874  0.49277177
+118	 -3.15587797	 -0.01315981	  0.00802862	  4.14271816	  0.95978188	  0.97881157  0.49205262
+119	 -3.16014293	 -0.01304792	  0.00796064	  4.14709501	  0.96004592	  0.97899144  0.49133930
+120	 -3.16440288	 -0.01293797	  0.00789361	  4.15146491	  0.96030574	  0.97916842  0.49063185
+121	 -3.16865852	 -0.01282993	  0.00782751	  4.15582858	  0.96056144	  0.97934256  0.48993030
+122	 -3.17291049	 -0.01272375	  0.00776233	  4.16018673	  0.96081312	  0.97951392  0.48923471
+123	 -3.17715942	 -0.01261940	  0.00769805	  4.16454003	  0.96106086	  0.97968255  0.48854509
+124	 -3.18140591	 -0.01251682	  0.00763466	  4.16888910	  0.96130476	  0.97984852  0.48786148
+125	 -3.18565052	 -0.01241598	  0.00757215	  4.17323454	  0.96154490	  0.98001187  0.48718390
+126	 -3.18989378	 -0.01231685	  0.00751049	  4.17757693	  0.96178137	  0.98017266  0.48651237
+127	 -3.19413619	 -0.01221938	  0.00744968	  4.18191681	  0.96201424	  0.98033094  0.48584692
+128	 -3.19837823	 -0.01212354	  0.00738970	  4.18625469	  0.96224360	  0.98048676  0.48518756
+129	 -3.20262035	 -0.01202930	  0.00733053	  4.19059105	  0.96246952	  0.98064017  0.48453431
+130	 -3.20686298	 -0.01193661	  0.00727217	  4.19492637	  0.96269208	  0.98079121  0.48388717
+131	 -3.21110653	 -0.01184546	  0.00721461	  4.19926107	  0.96291135	  0.98093994  0.48324615
+132	 -3.21535137	 -0.01175579	  0.00715782	  4.20359557	  0.96312741	  0.98108639  0.48261126
+133	 -3.21959786	 -0.01166759	  0.00710179	  4.20793027	  0.96334031	  0.98123062  0.48198250
+134	 -3.22384634	 -0.01158082	  0.00704652	  4.21226552	  0.96355014	  0.98137266  0.48135988
+135	 -3.22809714	 -0.01149545	  0.00699199	  4.21660169	  0.96375694	  0.98151256  0.48074338
+136	 -3.23235055	 -0.01141146	  0.00693819	  4.22093909	  0.96396080	  0.98165035  0.48013301
+137	 -3.23660685	 -0.01132880	  0.00688511	  4.22527805	  0.96416176	  0.98178609  0.47952876
+138	 -3.24086631	 -0.01124746	  0.00683273	  4.22961885	  0.96435989	  0.98191980  0.47893063
+139	 -3.24512918	 -0.01116741	  0.00678105	  4.23396177	  0.96455525	  0.98205153  0.47833860
+140	 -3.24939569	 -0.01108862	  0.00673005	  4.23830707	  0.96474789	  0.98218132  0.47775267
+141	 -3.25366606	 -0.01101107	  0.00667973	  4.24265499	  0.96493787	  0.98230920  0.47717282
+142	 -3.25794050	 -0.01093473	  0.00663007	  4.24700577	  0.96512525	  0.98243520  0.47659903
+143	 -3.26221918	 -0.01085957	  0.00658106	  4.25135961	  0.96531007	  0.98255937  0.47603130
+144	 -3.26650230	 -0.01078557	  0.00653269	  4.25571672	  0.96549239	  0.98268174  0.47546960
+145	 -3.27079000	 -0.01071272	  0.00648495	  4.26007729	  0.96567225	  0.98280233  0.47491391
+146	 -3.27508246	 -0.01064097	  0.00643784	  4.26444149	  0.96584971	  0.98292119  0.47436422
+147	 -3.27937980	 -0.01057032	  0.00639134	  4.26880948	  0.96602482	  0.98303834  0.47382051
+148	 -3.28368216	 -0.01050074	  0.00634544	  4.27318141	  0.96619761	  0.98315382  0.47328275
+149	 -3.28798965	 -0.01043222	  0.00630013	  4.27755743	  0.96636814	  0.98326765  0.47275091
+150	 -3.29230239	 -0.01036472	  0.00625541	  4.28193767	  0.96653645	  0.98337988  0.47222499
+151	 -3.29662047	 -0.01029823	  0.00621126	  4.28632224	  0.96670258	  0.98349051  0.47170494
+152	 -3.30094399	 -0.01023273	  0.00616768	  4.29071126	  0.96686657	  0.98359960  0.47119074
+153	 -3.30527303	 -0.01016819	  0.00612465	  4.29510483	  0.96702847	  0.98370715  0.47068237
+154	 -3.30960766	 -0.01010461	  0.00608218	  4.29950304	  0.96718831	  0.98381321  0.47017979
+155	 -3.31394795	 -0.01004197	  0.00604024	  4.30390598	  0.96734614	  0.98391779  0.46968299
+156	 -3.31829395	 -0.00998024	  0.00599883	  4.30831372	  0.96750198	  0.98402093  0.46919192
+157	 -3.32264573	 -0.00991940	  0.00595795	  4.31272633	  0.96765588	  0.98412265  0.46870656
+158	 -3.32700331	 -0.00985945	  0.00591759	  4.31714387	  0.96780788	  0.98422297  0.46822687
+159	 -3.33136675	 -0.00980035	  0.00587773	  4.32156640	  0.96795801	  0.98432191  0.46775284
+160	 -3.33573607	 -0.00974211	  0.00583838	  4.32599396	  0.96810630	  0.98441951  0.46728441
+161	 -3.34011130	 -0.00968470	  0.00579951	  4.33042660	  0.96825278	  0.98451579  0.46682157
+162	 -3.34449246	 -0.00962810	  0.00576113	  4.33486436	  0.96839750	  0.98461077  0.46636427
+163	 -3.34887956	 -0.00957230	  0.00572323	  4.33930726	  0.96854048	  0.98470447  0.46591248
+164	 -3.35327261	 -0.00951729	  0.00568581	  4.34375533	  0.96868175	  0.98479691  0.46546617
+165	 -3.35767163	 -0.00946304	  0.00564884	  4.34820858	  0.96882135	  0.98488812  0.46502531
+166	 -3.36207660	 -0.00940956	  0.00561233	  4.35266704	  0.96895930	  0.98497811  0.46458986
+167	 -3.36648753	 -0.00935681	  0.00557627	  4.35713071	  0.96909563	  0.98506691  0.46415977
+168	 -3.37090440	 -0.00930480	  0.00554066	  4.36159960	  0.96923037	  0.98515454  0.46373503
+169	 -3.37532721	 -0.00925350	  0.00550548	  4.36607371	  0.96936355	  0.98524102  0.46331559
+170	 -3.37975593	 -0.00920290	  0.00547073	  4.37055303	  0.96949520	  0.98532636  0.46290141
+171	 -3.38419056	 -0.00915300	  0.00543641	  4.37503756	  0.96962535	  0.98541059  0.46249246
+172	 -3.38863105	 -0.00910377	  0.00540251	  4.37952729	  0.96975401	  0.98549373  0.46208870
+173	 -3.39307740	 -0.00905520	  0.00536901	  4.38402220	  0.96988122	  0.98557578  0.46169009
+174	 -3.39752956	 -0.00900729	  0.00533593	  4.38852227	  0.97000699	  0.98565678  0.46129660
+175	 -3.40198751	 -0.00896002	  0.00530324	  4.39302749	  0.97013137	  0.98573674  0.46090819
+176	 -3.40645121	 -0.00891338	  0.00527095	  4.39753783	  0.97025435	  0.98581567  0.46052482
+177	 -3.41092063	 -0.00886736	  0.00523904	  4.40205326	  0.97037598	  0.98589360  0.46014645
+178	 -3.41539571	 -0.00882195	  0.00520752	  4.40657376	  0.97049628	  0.98597053  0.45977305
+179	 -3.41987643	 -0.00877713	  0.00517637	  4.41109929	  0.97061526	  0.98604649  0.45940458
+180	 -3.42436272	 -0.00873290	  0.00514560	  4.41562982	  0.97073295	  0.98612149  0.45904100
+181	 -3.42885456	 -0.00868925	  0.00511520	  4.42016531	  0.97084936	  0.98619555  0.45868227
+182	 -3.43335188	 -0.00864617	  0.00508515	  4.42470571	  0.97096453	  0.98626868  0.45832835
+183	 -3.43785464	 -0.00860364	  0.00505546	  4.42925100	  0.97107847	  0.98634090  0.45797921
+184	 -3.44236278	 -0.00856166	  0.00502613	  4.43380112	  0.97119120	  0.98641222  0.45763480
+185	 -3.44687625	 -0.00852021	  0.00499714	  4.43835604	  0.97130274	  0.98648265  0.45729509
+186	 -3.45139500	 -0.00847930	  0.00496849	  4.44291570	  0.97141311	  0.98655221  0.45696005
+187	 -3.45591895	 -0.00843890	  0.00494017	  4.44748005	  0.97152233	  0.98662092  0.45662962
+188	 -3.46044807	 -0.00839902	  0.00491219	  4.45204905	  0.97163042	  0.98668879  0.45630378
+189	 -3.46498227	 -0.00835964	  0.00488454	  4.45662264	  0.97173739	  0.98675583  0.45598249
+190	 -3.46952151	 -0.00832075	  0.00485721	  4.46120077	  0.97184326	  0.98682205  0.45566570
+191	 -3.47406572	 -0.00828234	  0.00483019	  4.46578338	  0.97194805	  0.98688746  0.45535338
+192	 -3.47861484	 -0.00824442	  0.00480349	  4.47037042	  0.97205179	  0.98695209  0.45504550
+193	 -3.48316880	 -0.00820696	  0.00477710	  4.47496184	  0.97215447	  0.98701594  0.45474201
+194	 -3.48772753	 -0.00816996	  0.00475102	  4.47955756	  0.97225612	  0.98707902  0.45444287
+195	 -3.49229097	 -0.00813342	  0.00472523	  4.48415755	  0.97235676	  0.98714134  0.45414806
+196	 -3.49685904	 -0.00809733	  0.00469975	  4.48876172	  0.97245640	  0.98720293  0.45385753
+197	 -3.50143169	 -0.00806167	  0.00467455	  4.49337002	  0.97255506	  0.98726378  0.45357123
+198	 -3.50600884	 -0.00802644	  0.00464964	  4.49798240	  0.97265275	  0.98732391  0.45328915
+199	 -3.51059042	 -0.00799164	  0.00462502	  4.50259878	  0.97274949	  0.98738333  0.45301123
+200	 -3.51517637	 -0.00795726	  0.00460068	  4.50721911	  0.97284528	  0.98744206  0.45273745
+201	 -3.51976660	 -0.00792329	  0.00457662	  4.51184331	  0.97294015	  0.98750009  0.45246776
+202	 -3.52436105	 -0.00788972	  0.00455283	  4.51647133	  0.97303411	  0.98755745  0.45220214
+203	 -3.52895964	 -0.00785655	  0.00452930	  4.52110309	  0.97312718	  0.98761414  0.45194053
+204	 -3.53356231	 -0.00782377	  0.00450605	  4.52573854	  0.97321936	  0.98767018  0.45168291
+205	 -3.53816898	 -0.00779138	  0.00448306	  4.53037760	  0.97331067	  0.98772556  0.45142923
+206	 -3.54277957	 -0.00775937	  0.00446032	  4.53502021	  0.97340111	  0.98778031  0.45117947
+207	 -3.54739402	 -0.00772773	  0.00443784	  4.53966629	  0.97349072	  0.98783443  0.45093359
+208	 -3.55201224	 -0.00769645	  0.00441562	  4.54431579	  0.97357949	  0.98788793  0.45069155
+209	 -3.55663417	 -0.00766554	  0.00439364	  4.54896864	  0.97366744	  0.98794082  0.45045331
+210	 -3.56125973	 -0.00763498	  0.00437190	  4.55362475	  0.97375458	  0.98799311  0.45021885
+211	 -3.56588885	 -0.00760478	  0.00435041	  4.55828407	  0.97384092	  0.98804481  0.44998812
+212	 -3.57052145	 -0.00757491	  0.00432916	  4.56294653	  0.97392648	  0.98809593  0.44976109
+213	 -3.57515745	 -0.00754539	  0.00430814	  4.56761206	  0.97401126	  0.98814646  0.44953772
+214	 -3.57979678	 -0.00751620	  0.00428736	  4.57228058	  0.97409528	  0.98819644  0.44931799
+215	 -3.58443937	 -0.00748734	  0.00426681	  4.57695203	  0.97417854	  0.98824585  0.44910185
+216	 -3.58908514	 -0.00745880	  0.00424648	  4.58162633	  0.97426107	  0.98829472  0.44888928
+217	 -3.59373401	 -0.00743059	  0.00422637	  4.58630343	  0.97434286	  0.98834304  0.44868023
+218	 -3.59838592	 -0.00740268	  0.00420649	  4.59098323	  0.97442393	  0.98839083  0.44847468
+219	 -3.60304078	 -0.00737509	  0.00418682	  4.59566569	  0.97450428	  0.98843809  0.44827259
+220	 -3.60769852	 -0.00734780	  0.00416737	  4.60035072	  0.97458394	  0.98848483  0.44807392
+221	 -3.61235907	 -0.00732081	  0.00414813	  4.60503826	  0.97466290	  0.98853106  0.44787865
+222	 -3.61702235	 -0.00729411	  0.00412910	  4.60972823	  0.97474118	  0.98857678  0.44768674
+223	 -3.62168828	 -0.00726771	  0.00411028	  4.61442057	  0.97481879	  0.98862201  0.44749816
+224	 -3.62635680	 -0.00724159	  0.00409166	  4.61911521	  0.97489573	  0.98866675  0.44731288
+225	 -3.63102782	 -0.00721575	  0.00407325	  4.62381207	  0.97497202	  0.98871100  0.44713086
+226	 -3.63570128	 -0.00719020	  0.00405503	  4.62851108	  0.97504766	  0.98875478  0.44695207
+227	 -3.64037709	 -0.00716491	  0.00403700	  4.63321218	  0.97512267	  0.98879808  0.44677649
+228	 -3.64505519	 -0.00713990	  0.00401918	  4.63791530	  0.97519704	  0.98884093  0.44660407
+229	 -3.64973550	 -0.00711515	  0.00400154	  4.64262036	  0.97527080	  0.98888331  0.44643478
+230	 -3.65441795	 -0.00709066	  0.00398409	  4.64732729	  0.97534394	  0.98892525  0.44626861
+231	 -3.65910247	 -0.00706643	  0.00396683	  4.65203604	  0.97541648	  0.98896674  0.44610551
+232	 -3.66378898	 -0.00704246	  0.00394975	  4.65674652	  0.97548842	  0.98900779  0.44594545
+233	 -3.66847740	 -0.00701873	  0.00393286	  4.66145867	  0.97555978	  0.98904841  0.44578841
+234	 -3.67316767	 -0.00699526	  0.00391614	  4.66617242	  0.97563055	  0.98908860  0.44563435
+235	 -3.67785972	 -0.00697202	  0.00389960	  4.67088770	  0.97570076	  0.98912838  0.44548324
+236	 -3.68255347	 -0.00694903	  0.00388324	  4.67560444	  0.97577039	  0.98916773  0.44533506
+237	 -3.68724885	 -0.00692627	  0.00386705	  4.68032258	  0.97583947	  0.98920668  0.44518977
+238	 -3.69194579	 -0.00690374	  0.00385103	  4.68504204	  0.97590800	  0.98924523  0.44504735
+239	 -3.69664421	 -0.00688145	  0.00383518	  4.68976277	  0.97597598	  0.98928338  0.44490776
+240	 -3.70134406	 -0.00685938	  0.00381949	  4.69448468	  0.97604342	  0.98932113  0.44477099
+241	 -3.70604525	 -0.00683753	  0.00380397	  4.69920772	  0.97611034	  0.98935850  0.44463698
+242	 -3.71074772	 -0.00681590	  0.00378861	  4.70393182	  0.97617673	  0.98939548  0.44450573
+243	 -3.71545140	 -0.00679449	  0.00377342	  4.70865691	  0.97624261	  0.98943209  0.44437720
+244	 -3.72015622	 -0.00677330	  0.00375838	  4.71338292	  0.97630797	  0.98946833  0.44425137
+245	 -3.72486211	 -0.00675231	  0.00374349	  4.71810980	  0.97637283	  0.98950420  0.44412820
+246	 -3.72956899	 -0.00673153	  0.00372877	  4.72283746	  0.97643720	  0.98953970  0.44400767
+247	 -3.73427682	 -0.00671096	  0.00371419	  4.72756585	  0.97650107	  0.98957485  0.44388975
+248	 -3.73898550	 -0.00669059	  0.00369976	  4.73229491	  0.97656446	  0.98960965  0.44377441
+249	 -3.74369498	 -0.00667042	  0.00368549	  4.73702457	  0.97662737	  0.98964409  0.44366163
+250	 -3.74840519	 -0.00665044	  0.00367136	  4.74175475	  0.97668980	  0.98967820  0.44355139
+251	 -3.75311607	 -0.00663066	  0.00365738	  4.74648541	  0.97675177	  0.98971196  0.44344364
+252	 -3.75782754	 -0.00661107	  0.00364354	  4.75121648	  0.97681327	  0.98974540  0.44333838
+253	 -3.76253955	 -0.00659167	  0.00362984	  4.75594788	  0.97687432	  0.98977850  0.44323557
+254	 -3.76725202	 -0.00657245	  0.00361628	  4.76067957	  0.97693492	  0.98981127  0.44313518
+255	 -3.77196489	 -0.00655341	  0.00360286	  4.76541147	  0.97699508	  0.98984372  0.44303720
+256	 -3.77667809	 -0.00653456	  0.00358958	  4.77014353	  0.97705479	  0.98987586  0.44294159
+257	 -3.78139156	 -0.00651589	  0.00357643	  4.77487568	  0.97711407	  0.98990768  0.44284833
+258	 -3.78610525	 -0.00649739	  0.00356342	  4.77960786	  0.97717292	  0.98993920  0.44275740
+259	 -3.79081907	 -0.00647906	  0.00355053	  4.78434001	  0.97723134	  0.98997040  0.44266877
+260	 -3.79553298	 -0.00646091	  0.00353778	  4.78907207	  0.97728935	  0.99000131  0.44258241
+261	 -3.80024690	 -0.00644292	  0.00352516	  4.79380398	  0.97734694	  0.99003192  0.44249831
+262	 -3.80496078	 -0.00642510	  0.00351266	  4.79853567	  0.97740413	  0.99006223  0.44241644
+263	 -3.80967455	 -0.00640745	  0.00350029	  4.80326710	  0.97746090	  0.99009226  0.44233677
+264	 -3.81438815	 -0.00638996	  0.00348804	  4.80799819	  0.97751728	  0.99012200  0.44225928
+265	 -3.81910152	 -0.00637262	  0.00347592	  4.81272889	  0.97757326	  0.99015145  0.44218395
+266	 -3.82381460	 -0.00635545	  0.00346392	  4.81745915	  0.97762886	  0.99018063  0.44211076
+267	 -3.82852732	 -0.00633843	  0.00345204	  4.82218889	  0.97768406	  0.99020953  0.44203968
+268	 -3.83323964	 -0.00632157	  0.00344027	  4.82691808	  0.97773889	  0.99023816  0.44197068
+269	 -3.83795149	 -0.00630485	  0.00342863	  4.83164664	  0.97779333	  0.99026652  0.44190376
+270	 -3.84266280	 -0.00628829	  0.00341709	  4.83637452	  0.97784741	  0.99029462  0.44183887
+271	 -3.84737353	 -0.00627187	  0.00340568	  4.84110166	  0.97790111	  0.99032245  0.44177601
+272	 -3.85208361	 -0.00625560	  0.00339437	  4.84582801	  0.97795446	  0.99035003  0.44171515
+273	 -3.85679299	 -0.00623948	  0.00338318	  4.85055351	  0.97800744	  0.99037735  0.44165627
+274	 -3.86150160	 -0.00622349	  0.00337210	  4.85527811	  0.97806006	  0.99040441  0.44159934
+275	 -3.86620939	 -0.00620765	  0.00336112	  4.86000175	  0.97811233	  0.99043123  0.44154435
+276	 -3.87091631	 -0.00619194	  0.00335026	  4.86472437	  0.97816426	  0.99045780  0.44149127
+277	 -3.87562229	 -0.00617637	  0.00333950	  4.86944592	  0.97821584	  0.99048413  0.44144009
+278	 -3.88032729	 -0.00616094	  0.00332885	  4.87416635	  0.97826708	  0.99051022  0.44139078
+279	 -3.88503124	 -0.00614564	  0.00331830	  4.87888561	  0.97831798	  0.99053607  0.44134332
+280	 -3.88973410	 -0.00613047	  0.00330785	  4.88360363	  0.97836855	  0.99056168  0.44129769
+281	 -3.89443580	 -0.00611543	  0.00329750	  4.88832037	  0.97841879	  0.99058707  0.44125387
+282	 -3.89913629	 -0.00610051	  0.00328726	  4.89303577	  0.97846870	  0.99061223  0.44121185
+283	 -3.90383552	 -0.00608573	  0.00327711	  4.89774979	  0.97851829	  0.99063716  0.44117159
+284	 -3.90853343	 -0.00607107	  0.00326707	  4.90246236	  0.97856756	  0.99066187  0.44113309
+285	 -3.91322998	 -0.00605653	  0.00325712	  4.90717345	  0.97861652	  0.99068635  0.44109632
+286	 -3.91792511	 -0.00604212	  0.00324726	  4.91188299	  0.97866516	  0.99071062  0.44106126
+287	 -3.92261876	 -0.00602782	  0.00323750	  4.91659094	  0.97871350	  0.99073468  0.44102790
+288	 -3.92731089	 -0.00601364	  0.00322784	  4.92129724	  0.97876153	  0.99075852  0.44099621
+289	 -3.93200144	 -0.00599958	  0.00321826	  4.92600186	  0.97880926	  0.99078215  0.44096618
+290	 -3.93669036	 -0.00598564	  0.00320878	  4.93070472	  0.97885669	  0.99080558  0.44093779
+291	 -3.94137761	 -0.00597181	  0.00319939	  4.93540580	  0.97890383	  0.99082880  0.44091101
+292	 -3.94606313	 -0.00595809	  0.00319009	  4.94010504	  0.97895067	  0.99085182  0.44088584
+293	 -3.95074687	 -0.00594449	  0.00318088	  4.94480238	  0.97899722	  0.99087463  0.44086225
+294	 -3.95542878	 -0.00593099	  0.00317175	  4.94949779	  0.97904349	  0.99089725  0.44084022
+295	 -3.96010882	 -0.00591761	  0.00316271	  4.95419121	  0.97908947	  0.99091968  0.44081975
+296	 -3.96478693	 -0.00590433	  0.00315376	  4.95888260	  0.97913517	  0.99094191  0.44080080
+297	 -3.96946306	 -0.00589116	  0.00314489	  4.96357191	  0.97918060	  0.99096395  0.44078336
+298	 -3.97413718	 -0.00587809	  0.00313611	  4.96825909	  0.97922575	  0.99098581  0.44076742
+299	 -3.97880922	 -0.00586512	  0.00312740	  4.97294410	  0.97927063	  0.99100747  0.44075296
+300	 -3.98347915	 -0.00585226	  0.00311878	  4.97762689	  0.97931524	  0.99102895  0.44073996
+301	 -3.98814692	 -0.00583950	  0.00311024	  4.98230742	  0.97935959	  0.99105026  0.44072841
+302	 -3.99281247	 -0.00582684	  0.00310178	  4.98698564	  0.97940367	  0.99107138  0.44071828
+303	 -3.99747577	 -0.00581428	  0.00309340	  4.99166150	  0.97944749	  0.99109232  0.44070956
+304	 -4.00213677	 -0.00580181	  0.00308510	  4.99633496	  0.97949105	  0.99111309  0.44070224
+305	 -4.00679542	 -0.00578944	  0.00307688	  5.00100598	  0.97953436	  0.99113368  0.44069630
+306	 -4.01145168	 -0.00577717	  0.00306873	  5.00567451	  0.97957741	  0.99115410  0.44069173
+307	 -4.01610551	 -0.00576499	  0.00306065	  5.01034052	  0.97962021	  0.99117436  0.44068850
+308	 -4.02075685	 -0.00575290	  0.00305266	  5.01500395	  0.97966277	  0.99119444  0.44068660
+309	 -4.02540567	 -0.00574091	  0.00304473	  5.01966476	  0.97970508	  0.99121436  0.44068602
+310	 -4.03005191	 -0.00572900	  0.00303688	  5.02432291	  0.97974715	  0.99123412  0.44068674
+311	 -4.03469555	 -0.00571719	  0.00302910	  5.02897837	  0.97978897	  0.99125371  0.44068875
+312	 -4.03933654	 -0.00570546	  0.00302139	  5.03363108	  0.97983056	  0.99127315  0.44069203
+313	 -4.04397482	 -0.00569382	  0.00301375	  5.03828100	  0.97987192	  0.99129242  0.44069657
+314	 -4.04861037	 -0.00568227	  0.00300619	  5.04292810	  0.97991304	  0.99131154  0.44070234
+315	 -4.05324314	 -0.00567080	  0.00299869	  5.04757234	  0.97995393	  0.99133051  0.44070935
+316	 -4.05787308	 -0.00565942	  0.00299126	  5.05221367	  0.97999459	  0.99134932  0.44071756
+317	 -4.06250017	 -0.00564812	  0.00298390	  5.05685205	  0.98003502	  0.99136799  0.44072698
+318	 -4.06712435	 -0.00563690	  0.00297660	  5.06148744	  0.98007523	  0.99138650  0.44073757
+319	 -4.07174558	 -0.00562577	  0.00296937	  5.06611981	  0.98011522	  0.99140486  0.44074934
+320	 -4.07636383	 -0.00561471	  0.00296221	  5.07074912	  0.98015498	  0.99142308  0.44076227
+321	 -4.08097906	 -0.00560374	  0.00295511	  5.07537532	  0.98019453	  0.99144116  0.44077633
+322	 -4.08559122	 -0.00559284	  0.00294807	  5.07999838	  0.98023386	  0.99145909  0.44079153
+323	 -4.09020028	 -0.00558202	  0.00294110	  5.08461826	  0.98027298	  0.99147688  0.44080784
+324	 -4.09480620	 -0.00557128	  0.00293419	  5.08923492	  0.98031189	  0.99149453  0.44082525
+325	 -4.09940894	 -0.00556061	  0.00292734	  5.09384833	  0.98035059	  0.99151204  0.44084375
+326	 -4.10400846	 -0.00555002	  0.00292056	  5.09845844	  0.98038908	  0.99152942  0.44086333
+327	 -4.10860473	 -0.00553950	  0.00291383	  5.10306522	  0.98042736	  0.99154666  0.44088396
+328	 -4.11319770	 -0.00552906	  0.00290717	  5.10766864	  0.98046544	  0.99156377  0.44090565
+329	 -4.11778734	 -0.00551869	  0.00290056	  5.11226865	  0.98050332	  0.99158075  0.44092838
+330	 -4.12237362	 -0.00550839	  0.00289401	  5.11686523	  0.98054100	  0.99159760  0.44095213
+331	 -4.12695649	 -0.00549816	  0.00288752	  5.12145833	  0.98057848	  0.99161431  0.44097689
+332	 -4.13153592	 -0.00548801	  0.00288109	  5.12604792	  0.98061577	  0.99163090  0.44100265
+333	 -4.13611188	 -0.00547792	  0.00287471	  5.13063396	  0.98065286	  0.99164737  0.44102940
+334	 -4.14068433	 -0.00546790	  0.00286839	  5.13521643	  0.98068975	  0.99166371  0.44105712
+335	 -4.14525323	 -0.00545795	  0.00286213	  5.13979528	  0.98072646	  0.99167992  0.44108581
+336	 -4.14981854	 -0.00544806	  0.00285592	  5.14437048	  0.98076298	  0.99169602  0.44111544
+337	 -4.15438025	 -0.00543824	  0.00284976	  5.14894200	  0.98079931	  0.99171199  0.44114602
+338	 -4.15893830	 -0.00542849	  0.00284366	  5.15350981	  0.98083545	  0.99172785  0.44117753
+339	 -4.16349267	 -0.00541880	  0.00283761	  5.15807386	  0.98087141	  0.99174358  0.44120995
+340	 -4.16804332	 -0.00540918	  0.00283162	  5.16263414	  0.98090719	  0.99175920  0.44124328
+341	 -4.17259021	 -0.00539962	  0.00282567	  5.16719060	  0.98094278	  0.99177471  0.44127750
+342	 -4.17713333	 -0.00539012	  0.00281978	  5.17174321	  0.98097820	  0.99179010  0.44131260
+343	 -4.18167262	 -0.00538069	  0.00281394	  5.17629194	  0.98101344	  0.99180537  0.44134857
+344	 -4.18620807	 -0.00537131	  0.00280815	  5.18083676	  0.98104851	  0.99182054  0.44138541
+345	 -4.19073963	 -0.00536200	  0.00280241	  5.18537763	  0.98108340	  0.99183560  0.44142309
+346	 -4.19526728	 -0.00535274	  0.00279671	  5.18991453	  0.98111811	  0.99185054  0.44146162
+347	 -4.19979098	 -0.00534355	  0.00279107	  5.19444743	  0.98115266	  0.99186538  0.44150097
+348	 -4.20431070	 -0.00533441	  0.00278548	  5.19897629	  0.98118704	  0.99188011  0.44154114
+349	 -4.20882641	 -0.00532534	  0.00277993	  5.20350108	  0.98122125	  0.99189474  0.44158211
+350	 -4.21333809	 -0.00531632	  0.00277443	  5.20802177	  0.98125529	  0.99190926  0.44162389
+351	 -4.21784569	 -0.00530735	  0.00276897	  5.21253834	  0.98128916	  0.99192367  0.44166645
+352	 -4.22234919	 -0.00529845	  0.00276357	  5.21705075	  0.98132288	  0.99193799  0.44170979
+353	 -4.22684856	 -0.00528959	  0.00275820	  5.22155897	  0.98135643	  0.99195220  0.44175389
+354	 -4.23134377	 -0.00528080	  0.00275289	  5.22606297	  0.98138982	  0.99196631  0.44179875
+355	 -4.23583479	 -0.00527206	  0.00274762	  5.23056273	  0.98142305	  0.99198033  0.44184436
+356	 -4.24032159	 -0.00526337	  0.00274239	  5.23505822	  0.98145612	  0.99199424  0.44189070
+357	 -4.24480413	 -0.00525473	  0.00273720	  5.23954940	  0.98148904	  0.99200806  0.44193777
+358	 -4.24928241	 -0.00524615	  0.00273206	  5.24403626	  0.98152180	  0.99202179  0.44198557
+359	 -4.25375637	 -0.00523762	  0.00272697	  5.24851875	  0.98155440	  0.99203541  0.44203406
+360	 -4.25822600	 -0.00522914	  0.00272191	  5.25299686	  0.98158685	  0.99204895  0.44208326
+361	 -4.26269127	 -0.00522071	  0.00271690	  5.25747055	  0.98161916	  0.99206239  0.44213315
+362	 -4.26715214	 -0.00521233	  0.00271193	  5.26193981	  0.98165131	  0.99207574  0.44218372
+363	 -4.27160860	 -0.00520401	  0.00270700	  5.26640459	  0.98168331	  0.99208900  0.44223496
+364	 -4.27606061	 -0.00519573	  0.00270211	  5.27086489	  0.98171516	  0.99210217  0.44228686
+365	 -4.28050816	 -0.00518750	  0.00269726	  5.27532066	  0.98174687	  0.99211524  0.44233942
+366	 -4.28495120	 -0.00517932	  0.00269245	  5.27977188	  0.98177844	  0.99212824  0.44239262
+367	 -4.28938971	 -0.00517119	  0.00268767	  5.28421853	  0.98180986	  0.99214114  0.44244646
+368	 -4.29382368	 -0.00516310	  0.00268294	  5.28866058	  0.98184113	  0.99215396  0.44250093
+369	 -4.29825306	 -0.00515506	  0.00267825	  5.29309800	  0.98187227	  0.99216669  0.44255601
+370	 -4.30267785	 -0.00514707	  0.00267359	  5.29753078	  0.98190326	  0.99217934  0.44261171
+371	 -4.30709800	 -0.00513912	  0.00266898	  5.30195888	  0.98193412	  0.99219190  0.44266801
+372	 -4.31151350	 -0.00513122	  0.00266440	  5.30638227	  0.98196483	  0.99220438  0.44272490
+373	 -4.31592431	 -0.00512337	  0.00265985	  5.31080095	  0.98199542	  0.99221678  0.44278238
+374	 -4.32033043	 -0.00511555	  0.00265535	  5.31521487	  0.98202586	  0.99222910  0.44284044
+375	 -4.32473181	 -0.00510779	  0.00265088	  5.31962403	  0.98205617	  0.99224134  0.44289907
+376	 -4.32912844	 -0.00510006	  0.00264644	  5.32402838	  0.98208635	  0.99225350  0.44295825
+377	 -4.33352030	 -0.00509238	  0.00264204	  5.32842792	  0.98211639	  0.99226558  0.44301800
+378	 -4.33790735	 -0.00508474	  0.00263768	  5.33282261	  0.98214630	  0.99227758  0.44307829
+379	 -4.34228957	 -0.00507715	  0.00263335	  5.33721243	  0.98217609	  0.99228950  0.44313911
+380	 -4.34666695	 -0.00506959	  0.00262906	  5.34159736	  0.98220574	  0.99230135  0.44320047
+381	 -4.35103946	 -0.00506208	  0.00262479	  5.34597738	  0.98223526	  0.99231313  0.44326235
+382	 -4.35540706	 -0.00505461	  0.00262057	  5.35035246	  0.98226466	  0.99232483  0.44332475
+383	 -4.35976976	 -0.00504718	  0.00261637	  5.35472258	  0.98229393	  0.99233645  0.44338766
+384	 -4.36412751	 -0.00503978	  0.00261221	  5.35908772	  0.98232308	  0.99234800  0.44345107
+385	 -4.36848029	 -0.00503243	  0.00260808	  5.36344786	  0.98235210	  0.99235949  0.44351497
+386	 -4.37282810	 -0.00502512	  0.00260399	  5.36780298	  0.98238100	  0.99237089  0.44357936
+387	 -4.37717089	 -0.00501785	  0.00259992	  5.37215304	  0.98240977	  0.99238223  0.44364422
+388	 -4.38150866	 -0.00501061	  0.00259589	  5.37649804	  0.98243843	  0.99239350  0.44370956
+389	 -4.38584137	 -0.00500341	  0.00259189	  5.38083796	  0.98246696	  0.99240470  0.44377537
+390	 -4.39016901	 -0.00499626	  0.00258792	  5.38517276	  0.98249538	  0.99241583  0.44384163
+391	 -4.39449156	 -0.00498913	  0.00258397	  5.38950243	  0.98252368	  0.99242689  0.44390835
+392	 -4.39880900	 -0.00498205	  0.00258006	  5.39382695	  0.98255186	  0.99243789  0.44397551
+393	 -4.40312130	 -0.00497500	  0.00257618	  5.39814630	  0.98257992	  0.99244881  0.44404311
+394	 -4.40742845	 -0.00496799	  0.00257233	  5.40246046	  0.98260787	  0.99245968  0.44411114
+395	 -4.41173042	 -0.00496101	  0.00256851	  5.40676940	  0.98263570	  0.99247047  0.44417960
+396	 -4.41602719	 -0.00495407	  0.00256472	  5.41107312	  0.98266342	  0.99248121  0.44424847
+397	 -4.42031875	 -0.00494717	  0.00256096	  5.41537158	  0.98269102	  0.99249187  0.44431776
+398	 -4.42460508	 -0.00494030	  0.00255722	  5.41966478	  0.98271852	  0.99250248  0.44438745
+399	 -4.42888615	 -0.00493346	  0.00255351	  5.42395268	  0.98274590	  0.99251302  0.44445755
+400	 -4.43316194	 -0.00492666	  0.00254984	  5.42823528	  0.98277317	  0.99252350  0.44452803
+401	 -4.43743244	 -0.00491989	  0.00254618	  5.43251255	  0.98280033	  0.99253392  0.44459891
+402	 -4.44169763	 -0.00491316	  0.00254256	  5.43678447	  0.98282738	  0.99254428  0.44467016
+403	 -4.44595749	 -0.00490646	  0.00253896	  5.44105103	  0.98285433	  0.99255458  0.44474179
+404	 -4.45021200	 -0.00489979	  0.00253539	  5.44531221	  0.98288117	  0.99256482  0.44481379
+405	 -4.45446115	 -0.00489316	  0.00253185	  5.44956799	  0.98290790	  0.99257500  0.44488616
+406	 -4.45870490	 -0.00488655	  0.00252833	  5.45381835	  0.98293452	  0.99258512  0.44495888
+407	 -4.46294326	 -0.00487998	  0.00252484	  5.45806327	  0.98296105	  0.99259518  0.44503195
+408	 -4.46717619	 -0.00487344	  0.00252137	  5.46230275	  0.98298746	  0.99260519  0.44510537
+409	 -4.47140368	 -0.00486693	  0.00251793	  5.46653675	  0.98301378	  0.99261514  0.44517912
+410	 -4.47562571	 -0.00486046	  0.00251451	  5.47076526	  0.98303999	  0.99262503  0.44525322
+411	 -4.47984227	 -0.00485401	  0.00251112	  5.47498827	  0.98306610	  0.99263487  0.44532764
+412	 -4.48405334	 -0.00484759	  0.00250775	  5.47920575	  0.98309211	  0.99264465  0.44540238
+413	 -4.48825891	 -0.00484121	  0.00250441	  5.48341770	  0.98311802	  0.99265438  0.44547744
+414	 -4.49245894	 -0.00483485	  0.00250109	  5.48762409	  0.98314383	  0.99266406  0.44555282
+415	 -4.49665344	 -0.00482852	  0.00249780	  5.49182492	  0.98316954	  0.99267368  0.44562850
+416	 -4.50084238	 -0.00482223	  0.00249453	  5.49602015	  0.98319515	  0.99268325  0.44570449
+417	 -4.50502575	 -0.00481596	  0.00249128	  5.50020979	  0.98322067	  0.99269277  0.44578077
+418	 -4.50920352	 -0.00480972	  0.00248805	  5.50439380	  0.98324609	  0.99270223  0.44585734
+419	 -4.51337569	 -0.00480350	  0.00248485	  5.50857219	  0.98327141	  0.99271164  0.44593420
+420	 -4.51754224	 -0.00479732	  0.00248167	  5.51274492	  0.98329664	  0.99272101  0.44601134
+421	 -4.52170315	 -0.00479117	  0.00247851	  5.51691199	  0.98332177	  0.99273032  0.44608876
+422	 -4.52585842	 -0.00478504	  0.00247538	  5.52107338	  0.98334681	  0.99273958  0.44616645
+423	 -4.53000801	 -0.00477894	  0.00247227	  5.52522907	  0.98337176	  0.99274880  0.44624440
+424	 -4.53415192	 -0.00477286	  0.00246917	  5.52937906	  0.98339661	  0.99275796  0.44632262
+425	 -4.53829014	 -0.00476682	  0.00246610	  5.53352332	  0.98342137	  0.99276708  0.44640109
+426	 -4.54242264	 -0.00476080	  0.00246306	  5.53766184	  0.98344605	  0.99277615  0.44647982
+427	 -4.54654942	 -0.00475480	  0.00246003	  5.54179461	  0.98347063	  0.99278517  0.44655879
+428	 -4.55067046	 -0.00474884	  0.00245702	  5.54592162	  0.98349512	  0.99279414  0.44663801
+429	 -4.55478574	 -0.00474290	  0.00245404	  5.55004285	  0.98351952	  0.99280307  0.44671746
+430	 -4.55889526	 -0.00473698	  0.00245107	  5.55415828	  0.98354383	  0.99281195  0.44679715
+431	 -4.56299899	 -0.00473109	  0.00244812	  5.55826790	  0.98356806	  0.99282079  0.44687706
+432	 -4.56709693	 -0.00472522	  0.00244520	  5.56237170	  0.98359219	  0.99282958  0.44695720
+433	 -4.57118906	 -0.00471938	  0.00244229	  5.56646967	  0.98361625	  0.99283832  0.44703756
+434	 -4.57527536	 -0.00471357	  0.00243940	  5.57056179	  0.98364021	  0.99284703  0.44711814
+435	 -4.57935583	 -0.00470778	  0.00243654	  5.57464806	  0.98366409	  0.99285569  0.44719893
+436	 -4.58343045	 -0.00470201	  0.00243369	  5.57872844	  0.98368788	  0.99286430  0.44727992
+437	 -4.58749921	 -0.00469627	  0.00243086	  5.58280295	  0.98371159	  0.99287287  0.44736112
+438	 -4.59156210	 -0.00469055	  0.00242805	  5.58687155	  0.98373522	  0.99288140  0.44744252
+439	 -4.59561910	 -0.00468485	  0.00242526	  5.59093424	  0.98375876	  0.99288989  0.44752411
+440	 -4.59967020	 -0.00467918	  0.00242248	  5.59499102	  0.98378222	  0.99289833  0.44760589
+441	 -4.60371538	 -0.00467353	  0.00241973	  5.59904185	  0.98380560	  0.99290674  0.44768785
+442	 -4.60775465	 -0.00466791	  0.00241699	  5.60308674	  0.98382890	  0.99291510  0.44777000
+443	 -4.61178797	 -0.00466230	  0.00241427	  5.60712567	  0.98385211	  0.99292343  0.44785233
+444	 -4.61581536	 -0.00465672	  0.00241157	  5.61115863	  0.98387525	  0.99293171  0.44793483
+445	 -4.61983678	 -0.00465116	  0.00240889	  5.61518561	  0.98389830	  0.99293995  0.44801750
+446	 -4.62385223	 -0.00464563	  0.00240622	  5.61920660	  0.98392128	  0.99294815  0.44810034
+447	 -4.62786170	 -0.00464011	  0.00240357	  5.62322158	  0.98394418	  0.99295632  0.44818334
+448	 -4.63186517	 -0.00463462	  0.00240093	  5.62723055	  0.98396700	  0.99296444  0.44826650
+449	 -4.63586264	 -0.00462915	  0.00239832	  5.63123349	  0.98398974	  0.99297253  0.44834982
+450	 -4.63985410	 -0.00462370	  0.00239572	  5.63523040	  0.98401240	  0.99298058  0.44843328
+451	 -4.64383953	 -0.00461827	  0.00239313	  5.63922126	  0.98403499	  0.99298859  0.44851690
+452	 -4.64781892	 -0.00461286	  0.00239057	  5.64320606	  0.98405750	  0.99299657  0.44860066
+453	 -4.65179227	 -0.00460748	  0.00238802	  5.64718479	  0.98407993	  0.99300451  0.44868455
+454	 -4.65575956	 -0.00460211	  0.00238548	  5.65115744	  0.98410229	  0.99301241  0.44876859
+455	 -4.65972078	 -0.00459677	  0.00238296	  5.65512401	  0.98412458	  0.99302027  0.44885276
+456	 -4.66367592	 -0.00459144	  0.00238046	  5.65908448	  0.98414679	  0.99302810  0.44893706
+457	 -4.66762497	 -0.00458614	  0.00237797	  5.66303884	  0.98416893	  0.99303590  0.44902148
+458	 -4.67156793	 -0.00458085	  0.00237549	  5.66698708	  0.98419099	  0.99304366  0.44910603
+459	 -4.67550478	 -0.00457558	  0.00237303	  5.67092920	  0.98421298	  0.99305138  0.44919070
+460	 -4.67943552	 -0.00457034	  0.00237059	  5.67486518	  0.98423490	  0.99305907  0.44927549
+461	 -4.68336012	 -0.00456511	  0.00236816	  5.67879501	  0.98425675	  0.99306673  0.44936038
+462	 -4.68727860	 -0.00455990	  0.00236575	  5.68271869	  0.98427852	  0.99307435  0.44944539
+463	 -4.69119092	 -0.00455472	  0.00236335	  5.68663621	  0.98430023	  0.99308194  0.44953051
+464	 -4.69509710	 -0.00454955	  0.00236096	  5.69054755	  0.98432186	  0.99308949  0.44961572
+465	 -4.69899711	 -0.00454440	  0.00235859	  5.69445271	  0.98434343	  0.99309701  0.44970104
+466	 -4.70289095	 -0.00453926	  0.00235623	  5.69835168	  0.98436492	  0.99310450  0.44978646
+467	 -4.70677861	 -0.00453415	  0.00235389	  5.70224446	  0.98438635	  0.99311196  0.44987197
+468	 -4.71066008	 -0.00452905	  0.00235156	  5.70613103	  0.98440771	  0.99311939  0.44995757
+469	 -4.71453535	 -0.00452398	  0.00234924	  5.71001138	  0.98442899	  0.99312678  0.45004326
+470	 -4.71840442	 -0.00451892	  0.00234694	  5.71388551	  0.98445021	  0.99313414  0.45012903
+471	 -4.72226728	 -0.00451387	  0.00234465	  5.71775341	  0.98447137	  0.99314147  0.45021488
+472	 -4.72612392	 -0.00450885	  0.00234237	  5.72161507	  0.98449245	  0.99314877  0.45030082
+473	 -4.72997433	 -0.00450384	  0.00234011	  5.72547048	  0.98451347	  0.99315604  0.45038683
+474	 -4.73381850	 -0.00449885	  0.00233786	  5.72931964	  0.98453443	  0.99316328  0.45047291
+475	 -4.73765643	 -0.00449388	  0.00233562	  5.73316254	  0.98455532	  0.99317049  0.45055907
+476	 -4.74148810	 -0.00448893	  0.00233340	  5.73699917	  0.98457614	  0.99317767  0.45064529
+477	 -4.74531352	 -0.00448399	  0.00233119	  5.74082953	  0.98459690	  0.99318483  0.45073158
+478	 -4.74913267	 -0.00447907	  0.00232899	  5.74465360	  0.98461759	  0.99319195  0.45081792
+479	 -4.75294555	 -0.00447416	  0.00232680	  5.74847138	  0.98463822	  0.99319904  0.45090433
+480	 -4.75675214	 -0.00446927	  0.00232462	  5.75228287	  0.98465878	  0.99320610  0.45099080
+481	 -4.76055246	 -0.00446440	  0.00232246	  5.75608805	  0.98467929	  0.99321314  0.45107732
+482	 -4.76434647	 -0.00445955	  0.00232031	  5.75988693	  0.98469973	  0.99322015  0.45116389
+483	 -4.76813419	 -0.00445471	  0.00231816	  5.76367948	  0.98472010	  0.99322713  0.45125051
+484	 -4.77191560	 -0.00444988	  0.00231604	  5.76746572	  0.98474042	  0.99323408  0.45133717
+485	 -4.77569070	 -0.00444507	  0.00231392	  5.77124562	  0.98476067	  0.99324101  0.45142388
+486	 -4.77945947	 -0.00444028	  0.00231181	  5.77501919	  0.98478086	  0.99324791  0.45151063
+487	 -4.78322192	 -0.00443550	  0.00230972	  5.77878642	  0.98480099	  0.99325478  0.45159742
+488	 -4.78697804	 -0.00443074	  0.00230763	  5.78254730	  0.98482106	  0.99326162  0.45168425
+489	 -4.79072783	 -0.00442600	  0.00230556	  5.78630183	  0.98484107	  0.99326844  0.45177111
+490	 -4.79447127	 -0.00442127	  0.00230350	  5.79005000	  0.98486102	  0.99327523  0.45185800
+491	 -4.79820836	 -0.00441655	  0.00230145	  5.79379181	  0.98488091	  0.99328200  0.45194492
+492	 -4.80193909	 -0.00441185	  0.00229941	  5.79752724	  0.98490074	  0.99328874  0.45203187
+493	 -4.80566347	 -0.00440716	  0.00229738	  5.80125630	  0.98492051	  0.99329546  0.45211884
+494	 -4.80938148	 -0.00440249	  0.00229536	  5.80497899	  0.98494022	  0.99330215  0.45220583
+495	 -4.81309312	 -0.00439783	  0.00229335	  5.80869528	  0.98495988	  0.99330881  0.45229285
+496	 -4.81679838	 -0.00439319	  0.00229135	  5.81240519	  0.98497947	  0.99331546  0.45237988
+497	 -4.82049726	 -0.00438856	  0.00228937	  5.81610870	  0.98499901	  0.99332207  0.45246692
+498	 -4.82418976	 -0.00438395	  0.00228739	  5.81980581	  0.98501850	  0.99332866  0.45255398
+499	 -4.82787587	 -0.00437935	  0.00228542	  5.82349652	  0.98503792	  0.99333523  0.45264105
+500	 -4.83155558	 -0.00437476	  0.00228346	  5.82718082	  0.98505729	  0.99334178  0.45272813
+501	 -4.83522889	 -0.00437019	  0.00228151	  5.83085870	  0.98507660	  0.99334830  0.45281521
+502	 -4.83889580	 -0.00436563	  0.00227957	  5.83453017	  0.98509586	  0.99335480  0.45290231
+503	 -4.84255630	 -0.00436109	  0.00227764	  5.83819521	  0.98511506	  0.99336127  0.45298940
+504	 -4.84621038	 -0.00435656	  0.00227572	  5.84185383	  0.98513421	  0.99336772  0.45307649
+505	 -4.84985805	 -0.00435204	  0.00227381	  5.84550601	  0.98515330	  0.99337415  0.45316358
+506	 -4.85349930	 -0.00434753	  0.00227191	  5.84915177	  0.98517233	  0.99338056  0.45325067
+507	 -4.85713412	 -0.00434304	  0.00227002	  5.85279108	  0.98519132	  0.99338694  0.45333775
+508	 -4.86076252	 -0.00433856	  0.00226813	  5.85642396	  0.98521024	  0.99339330  0.45342482
+509	 -4.86438448	 -0.00433410	  0.00226626	  5.86005038	  0.98522912	  0.99339964  0.45351189
+510	 -4.86800001	 -0.00432965	  0.00226439	  5.86367036	  0.98524794	  0.99340596  0.45359894
+511	 -4.87160909	 -0.00432521	  0.00226253	  5.86728389	  0.98526671	  0.99341226  0.45368598
+512	 -4.87521174	 -0.00432078	  0.00226069	  5.87089096	  0.98528542	  0.99341853  0.45377301
+513	 -4.87880793	 -0.00431637	  0.00225885	  5.87449157	  0.98530409	  0.99342479  0.45386001
+514	 -4.88239768	 -0.00431196	  0.00225701	  5.87808572	  0.98532270	  0.99343102  0.45394700
+515	 -4.88598098	 -0.00430758	  0.00225519	  5.88167340	  0.98534126	  0.99343723  0.45403397
+516	 -4.88955781	 -0.00430320	  0.00225338	  5.88525462	  0.98535976	  0.99344342  0.45412092
+517	 -4.89312819	 -0.00429883	  0.00225157	  5.88882936	  0.98537822	  0.99344960  0.45420784
+518	 -4.89669211	 -0.00429448	  0.00224977	  5.89239763	  0.98539662	  0.99345575  0.45429473
+519	 -4.90024957	 -0.00429014	  0.00224798	  5.89595942	  0.98541498	  0.99346188  0.45438160
+520	 -4.90380055	 -0.00428581	  0.00224620	  5.89951474	  0.98543328	  0.99346799  0.45446844
+521	 -4.90734507	 -0.00428150	  0.00224442	  5.90306357	  0.98545154	  0.99347408  0.45455524
+522	 -4.91088312	 -0.00427719	  0.00224266	  5.90660592	  0.98546974	  0.99348015  0.45464201
+523	 -4.91441469	 -0.00427290	  0.00224090	  5.91014179	  0.98548790	  0.99348620  0.45472875
+524	 -4.91793978	 -0.00426862	  0.00223915	  5.91367116	  0.98550600	  0.99349224  0.45481546
+525	 -4.92145840	 -0.00426435	  0.00223740	  5.91719405	  0.98552406	  0.99349825  0.45490212
+526	 -4.92497053	 -0.00426009	  0.00223566	  5.92071044	  0.98554206	  0.99350425  0.45498875
+527	 -4.92847618	 -0.00425584	  0.00223394	  5.92422034	  0.98556002	  0.99351022  0.45507533
+528	 -4.93197535	 -0.00425160	  0.00223221	  5.92772375	  0.98557793	  0.99351618  0.45516187
+529	 -4.93546803	 -0.00424738	  0.00223050	  5.93122065	  0.98559579	  0.99352212  0.45524837
+530	 -4.93895423	 -0.00424317	  0.00222879	  5.93471106	  0.98561361	  0.99352804  0.45533482
+531	 -4.94243393	 -0.00423896	  0.00222709	  5.93819497	  0.98563138	  0.99353395  0.45542123
+532	 -4.94590714	 -0.00423477	  0.00222540	  5.94167237	  0.98564910	  0.99353983  0.45550758
+533	 -4.94937386	 -0.00423059	  0.00222371	  5.94514327	  0.98566677	  0.99354570  0.45559389
+534	 -4.95283409	 -0.00422642	  0.00222203	  5.94860767	  0.98568439	  0.99355155  0.45568014
+535	 -4.95628782	 -0.00422226	  0.00222036	  5.95206556	  0.98570197	  0.99355738  0.45576634
+536	 -4.95973505	 -0.00421811	  0.00221869	  5.95551694	  0.98571951	  0.99356320  0.45585249
+537	 -4.96317579	 -0.00421397	  0.00221703	  5.95896181	  0.98573699	  0.99356900  0.45593858
+538	 -4.96661002	 -0.00420984	  0.00221538	  5.96240018	  0.98575444	  0.99357478  0.45602462
+539	 -4.97003776	 -0.00420573	  0.00221373	  5.96583204	  0.98577183	  0.99358054  0.45611059
+540	 -4.97345900	 -0.00420162	  0.00221209	  5.96925738	  0.98578918	  0.99358629  0.45619651
+541	 -4.97687374	 -0.00419752	  0.00221046	  5.97267622	  0.98580649	  0.99359202  0.45628236
+542	 -4.98028197	 -0.00419344	  0.00220883	  5.97608854	  0.98582375	  0.99359774  0.45636816
+543	 -4.98368371	 -0.00418936	  0.00220721	  5.97949435	  0.98584096	  0.99360343  0.45645388
+544	 -4.98707894	 -0.00418529	  0.00220559	  5.98289365	  0.98585814	  0.99360912  0.45653955
+545	 -4.99046767	 -0.00418123	  0.00220398	  5.98628643	  0.98587526	  0.99361478  0.45662514
+546	 -4.99384989	 -0.00417719	  0.00220238	  5.98967270	  0.98589235	  0.99362043  0.45671067
+547	 -4.99722561	 -0.00417315	  0.00220078	  5.99305246	  0.98590939	  0.99362607  0.45679613
+548	 -5.00059483	 -0.00416912	  0.00219919	  5.99642571	  0.98592638	  0.99363169  0.45688152
+549	 -5.00395754	 -0.00416511	  0.00219761	  5.99979244	  0.98594334	  0.99363729  0.45696684
+550	 -5.00731375	 -0.00416110	  0.00219603	  6.00315266	  0.98596025	  0.99364288  0.45705209
+551	 -5.01066346	 -0.00415710	  0.00219445	  6.00650636	  0.98597712	  0.99364845  0.45713726
+552	 -5.01400667	 -0.00415311	  0.00219288	  6.00985356	  0.98599394	  0.99365401  0.45722236
+553	 -5.01734337	 -0.00414913	  0.00219132	  6.01319424	  0.98601072	  0.99365955  0.45730738
+554	 -5.02067356	 -0.00414516	  0.00218976	  6.01652841	  0.98602746	  0.99366508  0.45739233
+555	 -5.02399726	 -0.00414120	  0.00218821	  6.01985606	  0.98604416	  0.99367059  0.45747719
+556	 -5.02731445	 -0.00413724	  0.00218666	  6.02317721	  0.98606082	  0.99367609  0.45756198
+557	 -5.03062515	 -0.00413330	  0.00218512	  6.02649184	  0.98607744	  0.99368157  0.45764669
+558	 -5.03392934	 -0.00412937	  0.00218359	  6.02979997	  0.98609401	  0.99368704  0.45773131
+559	 -5.03722703	 -0.00412544	  0.00218206	  6.03310159	  0.98611054	  0.99369250  0.45781585
+560	 -5.04051822	 -0.00412153	  0.00218053	  6.03639670	  0.98612704	  0.99369794  0.45790031
+561	 -5.04380292	 -0.00411762	  0.00217901	  6.03968530	  0.98614349	  0.99370337  0.45798469
+562	 -5.04708112	 -0.00411372	  0.00217750	  6.04296739	  0.98615990	  0.99370878  0.45806897
+563	 -5.05035282	 -0.00410983	  0.00217599	  6.04624299	  0.98617627	  0.99371418  0.45815318
+564	 -5.05361802	 -0.00410595	  0.00217448	  6.04951207	  0.98619260	  0.99371957  0.45823729
+565	 -5.05687674	 -0.00410208	  0.00217298	  6.05277466	  0.98620889	  0.99372494  0.45832131
+566	 -5.06012896	 -0.00409821	  0.00217148	  6.05603074	  0.98622514	  0.99373030  0.45840525
+567	 -5.06337469	 -0.00409436	  0.00216999	  6.05928033	  0.98624135	  0.99373565  0.45848909
+568	 -5.06661393	 -0.00409051	  0.00216851	  6.06252341	  0.98625753	  0.99374098  0.45857285
+569	 -5.06984668	 -0.00408668	  0.00216703	  6.06576000	  0.98627366	  0.99374630  0.45865651
+570	 -5.07307294	 -0.00408285	  0.00216555	  6.06899010	  0.98628975	  0.99375161  0.45874007
+571	 -5.07629272	 -0.00407902	  0.00216408	  6.07221370	  0.98630581	  0.99375690  0.45882355
+572	 -5.07950602	 -0.00407521	  0.00216261	  6.07543081	  0.98632182	  0.99376218  0.45890693
+573	 -5.08271283	 -0.00407141	  0.00216115	  6.07864143	  0.98633780	  0.99376745  0.45899021
+574	 -5.08591317	 -0.00406761	  0.00215969	  6.08184556	  0.98635374	  0.99377270  0.45907339
+575	 -5.08910703	 -0.00406382	  0.00215823	  6.08504321	  0.98636965	  0.99377795  0.45915648
+576	 -5.09229441	 -0.00406004	  0.00215678	  6.08823437	  0.98638551	  0.99378318  0.45923947
+577	 -5.09547532	 -0.00405627	  0.00215534	  6.09141905	  0.98640134	  0.99378840  0.45932235
+578	 -5.09864975	 -0.00405250	  0.00215390	  6.09459725	  0.98641713	  0.99379360  0.45940514
+579	 -5.10181772	 -0.00404874	  0.00215246	  6.09776897	  0.98643288	  0.99379880  0.45948783
+580	 -5.10497922	 -0.00404500	  0.00215102	  6.10093422	  0.98644859	  0.99380398  0.45957041
+581	 -5.10813425	 -0.00404125	  0.00214960	  6.10409300	  0.98646427	  0.99380915  0.45965289
+582	 -5.11128282	 -0.00403752	  0.00214817	  6.10724530	  0.98647991	  0.99381431  0.45973527
+583	 -5.11442494	 -0.00403379	  0.00214675	  6.11039114	  0.98649552	  0.99381946  0.45981755
+584	 -5.11756059	 -0.00403008	  0.00214533	  6.11353051	  0.98651108	  0.99382459  0.45989972
+585	 -5.12068979	 -0.00402637	  0.00214392	  6.11666343	  0.98652662	  0.99382971  0.45998178
+586	 -5.12381254	 -0.00402266	  0.00214251	  6.11978988	  0.98654211	  0.99383483  0.46006373
+587	 -5.12692884	 -0.00401897	  0.00214110	  6.12290987	  0.98655757	  0.99383993  0.46014558
+588	 -5.13003869	 -0.00401528	  0.00213970	  6.12602341	  0.98657300	  0.99384502  0.46022732
+589	 -5.13314210	 -0.00401160	  0.00213831	  6.12913050	  0.98658838	  0.99385010  0.46030896
+590	 -5.13623906	 -0.00400792	  0.00213691	  6.13223114	  0.98660374	  0.99385516  0.46039048
+591	 -5.13932959	 -0.00400426	  0.00213552	  6.13532533	  0.98661906	  0.99386022  0.46047189
+592	 -5.14241368	 -0.00400060	  0.00213413	  6.13841308	  0.98663434	  0.99386527  0.46055319
+593	 -5.14549135	 -0.00399695	  0.00213275	  6.14149440	  0.98664959	  0.99387030  0.46063438
+594	 -5.14856258	 -0.00399330	  0.00213137	  6.14456928	  0.98666480	  0.99387532  0.46071546
+595	 -5.15162739	 -0.00398967	  0.00213000	  6.14763772	  0.98667998	  0.99388034  0.46079643
+596	 -5.15468577	 -0.00398604	  0.00212862	  6.15069974	  0.98669512	  0.99388534  0.46087728
+597	 -5.15773774	 -0.00398241	  0.00212725	  6.15375533	  0.98671023	  0.99389033  0.46095802
+598	 -5.16078329	 -0.00397880	  0.00212589	  6.15680449	  0.98672531	  0.99389532  0.46103864
+599	 -5.16382243	 -0.00397519	  0.00212453	  6.15984724	  0.98674035	  0.99390029  0.46111915
+600	 -5.16685516	 -0.00397159	  0.00212317	  6.16288358	  0.98675535	  0.99390525  0.46119954
+601	 -5.16988149	 -0.00396799	  0.00212181	  6.16591350	  0.98677033	  0.99391020  0.46127982
+602	 -5.17290141	 -0.00396440	  0.00212046	  6.16893701	  0.98678527	  0.99391514  0.46135997
+603	 -5.17591494	 -0.00396082	  0.00211911	  6.17195412	  0.98680017	  0.99392007  0.46144001
+604	 -5.17892208	 -0.00395724	  0.00211776	  6.17496483	  0.98681505	  0.99392499  0.46151994
+605	 -5.18192282	 -0.00395368	  0.00211642	  6.17796914	  0.98682989	  0.99392990  0.46159974
+606	 -5.18491718	 -0.00395011	  0.00211508	  6.18096706	  0.98684470	  0.99393481  0.46167943
+607	 -5.18790516	 -0.00394656	  0.00211374	  6.18395860	  0.98685947	  0.99393970  0.46175899
+608	 -5.19088675	 -0.00394301	  0.00211241	  6.18694374	  0.98687421	  0.99394458  0.46183843
+609	 -5.19386198	 -0.00393947	  0.00211108	  6.18992251	  0.98688892	  0.99394945  0.46191776
+610	 -5.19683083	 -0.00393593	  0.00210975	  6.19289490	  0.98690360	  0.99395432  0.46199696
+611	 -5.19979332	 -0.00393241	  0.00210843	  6.19586092	  0.98691824	  0.99395917  0.46207604
+612	 -5.20274945	 -0.00392888	  0.00210710	  6.19882057	  0.98693285	  0.99396401  0.46215500
+613	 -5.20569922	 -0.00392537	  0.00210578	  6.20177385	  0.98694743	  0.99396885  0.46223383
+614	 -5.20864264	 -0.00392186	  0.00210447	  6.20472078	  0.98696198	  0.99397367  0.46231254
+615	 -5.21157971	 -0.00391835	  0.00210315	  6.20766135	  0.98697650	  0.99397849  0.46239113
+616	 -5.21451043	 -0.00391486	  0.00210184	  6.21059558	  0.98699098	  0.99398330  0.46246959
+617	 -5.21743482	 -0.00391137	  0.00210054	  6.21352345	  0.98700544	  0.99398810  0.46254793
+618	 -5.22035287	 -0.00390788	  0.00209923	  6.21644499	  0.98701986	  0.99399289  0.46262614
+619	 -5.22326459	 -0.00390440	  0.00209793	  6.21936019	  0.98703425	  0.99399767  0.46270423
+620	 -5.22616999	 -0.00390093	  0.00209663	  6.22226905	  0.98704861	  0.99400244  0.46278219
+621	 -5.22906906	 -0.00389747	  0.00209533	  6.22517159	  0.98706294	  0.99400720  0.46286003
+622	 -5.23196182	 -0.00389401	  0.00209404	  6.22806781	  0.98707724	  0.99401196  0.46293774
+623	 -5.23484826	 -0.00389055	  0.00209274	  6.23095771	  0.98709151	  0.99401670  0.46301532
+624	 -5.23772840	 -0.00388711	  0.00209145	  6.23384129	  0.98710574	  0.99402144  0.46309277
+625	 -5.24060224	 -0.00388366	  0.00209017	  6.23671857	  0.98711995	  0.99402617  0.46317009
+626	 -5.24346978	 -0.00388023	  0.00208888	  6.23958955	  0.98713413	  0.99403089  0.46324729
+627	 -5.24633103	 -0.00387680	  0.00208760	  6.24245423	  0.98714827	  0.99403560  0.46332436
+628	 -5.24918599	 -0.00387338	  0.00208632	  6.24531261	  0.98716239	  0.99404030  0.46340129
+629	 -5.25203467	 -0.00386996	  0.00208504	  6.24816471	  0.98717648	  0.99404500  0.46347810
+630	 -5.25487707	 -0.00386655	  0.00208377	  6.25101053	  0.98719053	  0.99404969  0.46355478
+631	 -5.25771320	 -0.00386314	  0.00208250	  6.25385007	  0.98720456	  0.99405436  0.46363133
+632	 -5.26054307	 -0.00385974	  0.00208123	  6.25668333	  0.98721856	  0.99405904  0.46370775
+633	 -5.26336668	 -0.00385634	  0.00207996	  6.25951033	  0.98723253	  0.99406370  0.46378403
+634	 -5.26618402	 -0.00385295	  0.00207869	  6.26233107	  0.98724646	  0.99406835  0.46386019
+635	 -5.26899512	 -0.00384957	  0.00207743	  6.26514555	  0.98726037	  0.99407300  0.46393621
+636	 -5.27179998	 -0.00384619	  0.00207617	  6.26795379	  0.98727425	  0.99407764  0.46401210
+637	 -5.27459860	 -0.00384282	  0.00207491	  6.27075577	  0.98728810	  0.99408227  0.46408786
+638	 -5.27739098	 -0.00383945	  0.00207365	  6.27355152	  0.98730193	  0.99408689  0.46416348
+639	 -5.28017713	 -0.00383609	  0.00207240	  6.27634104	  0.98731572	  0.99409151  0.46423898
+640	 -5.28295706	 -0.00383274	  0.00207115	  6.27912432	  0.98732949	  0.99409612  0.46431433
+641	 -5.28573078	 -0.00382939	  0.00206989	  6.28190139	  0.98734322	  0.99410072  0.46438956
+642	 -5.28849828	 -0.00382604	  0.00206865	  6.28467224	  0.98735693	  0.99410531  0.46446465
+643	 -5.29125958	 -0.00382271	  0.00206740	  6.28743687	  0.98737061	  0.99410989  0.46453961
+644	 -5.29401468	 -0.00381937	  0.00206616	  6.29019530	  0.98738426	  0.99411447  0.46461443
+645	 -5.29676358	 -0.00381604	  0.00206491	  6.29294754	  0.98739789	  0.99411904  0.46468912
+646	 -5.29950630	 -0.00381272	  0.00206367	  6.29569358	  0.98741148	  0.99412361  0.46476368
+647	 -5.30224283	 -0.00380940	  0.00206243	  6.29843343	  0.98742505	  0.99412816  0.46483809
+648	 -5.30497319	 -0.00380609	  0.00206120	  6.30116710	  0.98743859	  0.99413271  0.46491238
+649	 -5.30769738	 -0.00380279	  0.00205996	  6.30389459	  0.98745210	  0.99413725  0.46498652
+650	 -5.31041540	 -0.00379948	  0.00205873	  6.30661592	  0.98746559	  0.99414179  0.46506054
+651	 -5.31312727	 -0.00379619	  0.00205750	  6.30933108	  0.98747905	  0.99414631  0.46513441
+652	 -5.31583299	 -0.00379290	  0.00205627	  6.31204009	  0.98749248	  0.99415083  0.46520815
+653	 -5.31853255	 -0.00378961	  0.00205504	  6.31474294	  0.98750588	  0.99415535  0.46528175
+654	 -5.32122598	 -0.00378633	  0.00205382	  6.31743965	  0.98751926	  0.99415985  0.46535522
+655	 -5.32391328	 -0.00378306	  0.00205259	  6.32013023	  0.98753261	  0.99416435  0.46542855
+656	 -5.32659445	 -0.00377979	  0.00205137	  6.32281466	  0.98754593	  0.99416884  0.46550174
+657	 -5.32926950	 -0.00377652	  0.00205015	  6.32549298	  0.98755923	  0.99417333  0.46557479
+658	 -5.33193843	 -0.00377326	  0.00204893	  6.32816517	  0.98757249	  0.99417781  0.46564771
+659	 -5.33460126	 -0.00377000	  0.00204772	  6.33083125	  0.98758574	  0.99418228  0.46572049
+660	 -5.33725798	 -0.00376675	  0.00204650	  6.33349123	  0.98759895	  0.99418674  0.46579313
+661	 -5.33990861	 -0.00376351	  0.00204529	  6.33614511	  0.98761214	  0.99419120  0.46586563
+662	 -5.34255316	 -0.00376027	  0.00204408	  6.33879289	  0.98762531	  0.99419565  0.46593799
+663	 -5.34519162	 -0.00375703	  0.00204287	  6.34143458	  0.98763844	  0.99420010  0.46601022
+664	 -5.34782400	 -0.00375380	  0.00204166	  6.34407020	  0.98765155	  0.99420454  0.46608230
+665	 -5.35045032	 -0.00375058	  0.00204045	  6.34669974	  0.98766464	  0.99420897  0.46615425
+666	 -5.35307057	 -0.00374736	  0.00203925	  6.34932321	  0.98767770	  0.99421340  0.46622606
+667	 -5.35568477	 -0.00374414	  0.00203804	  6.35194063	  0.98769073	  0.99421781  0.46629773
+668	 -5.35829292	 -0.00374093	  0.00203684	  6.35455199	  0.98770374	  0.99422223  0.46636926
+669	 -5.36089503	 -0.00373773	  0.00203564	  6.35715730	  0.98771672	  0.99422663  0.46644065
+670	 -5.36349110	 -0.00373453	  0.00203444	  6.35975657	  0.98772968	  0.99423103  0.46651190
+671	 -5.36608114	 -0.00373133	  0.00203324	  6.36234981	  0.98774261	  0.99423543  0.46658301
+672	 -5.36866517	 -0.00372814	  0.00203205	  6.36493703	  0.98775552	  0.99423982  0.46665398
+673	 -5.37124318	 -0.00372495	  0.00203085	  6.36751823	  0.98776840	  0.99424420  0.46672482
+674	 -5.37381518	 -0.00372177	  0.00202966	  6.37009341	  0.98778125	  0.99424857  0.46679551
+675	 -5.37638118	 -0.00371859	  0.00202847	  6.37266259	  0.98779408	  0.99425294  0.46686606
+676	 -5.37894119	 -0.00371542	  0.00202728	  6.37522577	  0.98780689	  0.99425730  0.46693647
+677	 -5.38149521	 -0.00371225	  0.00202609	  6.37778296	  0.98781967	  0.99426166  0.46700674
+678	 -5.38404325	 -0.00370909	  0.00202490	  6.38033416	  0.98783243	  0.99426601  0.46707687
+679	 -5.38658532	 -0.00370593	  0.00202371	  6.38287939	  0.98784516	  0.99427036  0.46714686
+680	 -5.38912142	 -0.00370278	  0.00202253	  6.38541865	  0.98785786	  0.99427470  0.46721671
+681	 -5.39165157	 -0.00369963	  0.00202134	  6.38795194	  0.98787055	  0.99427903  0.46728642
+682	 -5.39417576	 -0.00369648	  0.00202016	  6.39047928	  0.98788320	  0.99428336  0.46735598
+683	 -5.39669401	 -0.00369334	  0.00201898	  6.39300067	  0.98789584	  0.99428768  0.46742541
+684	 -5.39920633	 -0.00369021	  0.00201780	  6.39551612	  0.98790845	  0.99429200  0.46749470
+685	 -5.40171272	 -0.00368707	  0.00201662	  6.39802564	  0.98792103	  0.99429631  0.46756384
+686	 -5.40421318	 -0.00368395	  0.00201544	  6.40052923	  0.98793359	  0.99430061  0.46763284
+687	 -5.40670773	 -0.00368082	  0.00201427	  6.40302690	  0.98794613	  0.99430491  0.46770170
+688	 -5.40919637	 -0.00367771	  0.00201309	  6.40551867	  0.98795864	  0.99430920  0.46777042
+689	 -5.41167912	 -0.00367459	  0.00201192	  6.40800452	  0.98797113	  0.99431349  0.46783900
+690	 -5.41415597	 -0.00367148	  0.00201075	  6.41048448	  0.98798360	  0.99431777  0.46790744
+691	 -5.41662693	 -0.00366838	  0.00200957	  6.41295855	  0.98799604	  0.99432205  0.46797574
+692	 -5.41909202	 -0.00366528	  0.00200840	  6.41542674	  0.98800846	  0.99432632  0.46804389
+693	 -5.42155124	 -0.00366218	  0.00200724	  6.41788906	  0.98802085	  0.99433058  0.46811190
+694	 -5.42400460	 -0.00365909	  0.00200607	  6.42034551	  0.98803323	  0.99433484  0.46817978
+695	 -5.42645210	 -0.00365600	  0.00200490	  6.42279610	  0.98804557	  0.99433910  0.46824751
+696	 -5.42889376	 -0.00365292	  0.00200374	  6.42524084	  0.98805790	  0.99434334  0.46831509
+697	 -5.43132958	 -0.00364984	  0.00200257	  6.42767973	  0.98807020	  0.99434759  0.46838254
+698	 -5.43375956	 -0.00364677	  0.00200141	  6.43011279	  0.98808248	  0.99435183  0.46844985
+699	 -5.43618372	 -0.00364370	  0.00200024	  6.43254002	  0.98809474	  0.99435606  0.46851701
+700	 -5.43860207	 -0.00364063	  0.00199908	  6.43496143	  0.98810697	  0.99436029  0.46858403
+701	 -5.44101460	 -0.00363757	  0.00199792	  6.43737703	  0.98811918	  0.99436451  0.46865091
+702	 -5.44342134	 -0.00363451	  0.00199676	  6.43978683	  0.98813137	  0.99436872  0.46871765
+703	 -5.44582228	 -0.00363146	  0.00199561	  6.44219082	  0.98814353	  0.99437294  0.46878424
+704	 -5.44821744	 -0.00362841	  0.00199445	  6.44458903	  0.98815567	  0.99437714  0.46885070
+705	 -5.45060682	 -0.00362536	  0.00199329	  6.44698145	  0.98816779	  0.99438134  0.46891701
+706	 -5.45299043	 -0.00362232	  0.00199214	  6.44936811	  0.98817989	  0.99438554  0.46898318
+707	 -5.45536828	 -0.00361929	  0.00199098	  6.45174899	  0.98819196	  0.99438973  0.46904921
+708	 -5.45774037	 -0.00361625	  0.00198983	  6.45412412	  0.98820402	  0.99439392  0.46911510
+709	 -5.46010672	 -0.00361323	  0.00198868	  6.45649350	  0.98821605	  0.99439810  0.46918084
+710	 -5.46246734	 -0.00361020	  0.00198753	  6.45885714	  0.98822805	  0.99440227  0.46924645
+711	 -5.46482222	 -0.00360718	  0.00198638	  6.46121504	  0.98824004	  0.99440644  0.46931191
+712	 -5.46717138	 -0.00360417	  0.00198523	  6.46356722	  0.98825200	  0.99441061  0.46937723
+713	 -5.46951483	 -0.00360115	  0.00198408	  6.46591367	  0.98826395	  0.99441477  0.46944241
+714	 -5.47185257	 -0.00359814	  0.00198293	  6.46825442	  0.98827587	  0.99441892  0.46950744
+715	 -5.47418461	 -0.00359514	  0.00198178	  6.47058947	  0.98828776	  0.99442308  0.46957234
+716	 -5.47651097	 -0.00359214	  0.00198064	  6.47291883	  0.98829964	  0.99442722  0.46963709
+717	 -5.47883164	 -0.00358914	  0.00197949	  6.47524250	  0.98831150	  0.99443136  0.46970170
+718	 -5.48114664	 -0.00358615	  0.00197835	  6.47756049	  0.98832333	  0.99443550  0.46976617
+719	 -5.48345598	 -0.00358316	  0.00197721	  6.47987281	  0.98833514	  0.99443963  0.46983050
+720	 -5.48575966	 -0.00358018	  0.00197606	  6.48217948	  0.98834693	  0.99444376  0.46989469
+721	 -5.48805769	 -0.00357720	  0.00197492	  6.48448049	  0.98835870	  0.99444788  0.46995873
+722	 -5.49035007	 -0.00357422	  0.00197378	  6.48677585	  0.98837045	  0.99445200  0.47002264
+723	 -5.49263683	 -0.00357125	  0.00197264	  6.48906558	  0.98838217	  0.99445611  0.47008640
+724	 -5.49491797	 -0.00356828	  0.00197150	  6.49134968	  0.98839388	  0.99446022  0.47015002
+725	 -5.49719348	 -0.00356532	  0.00197036	  6.49362817	  0.98840556	  0.99446432  0.47021350
+726	 -5.49946339	 -0.00356236	  0.00196923	  6.49590104	  0.98841723	  0.99446842  0.47027684
+727	 -5.50172771	 -0.00355940	  0.00196809	  6.49816831	  0.98842887	  0.99447251  0.47034004
+728	 -5.50398643	 -0.00355645	  0.00196695	  6.50042998	  0.98844049	  0.99447660  0.47040310
+729	 -5.50623957	 -0.00355350	  0.00196582	  6.50268607	  0.98845209	  0.99448068  0.47046602
+730	 -5.50848713	 -0.00355055	  0.00196468	  6.50493658	  0.98846367	  0.99448476  0.47052879
+731	 -5.51072913	 -0.00354761	  0.00196355	  6.50718152	  0.98847523	  0.99448884  0.47059143
+732	 -5.51296557	 -0.00354467	  0.00196242	  6.50942090	  0.98848677	  0.99449291  0.47065392
+733	 -5.51519647	 -0.00354174	  0.00196129	  6.51165473	  0.98849828	  0.99449698  0.47071627
+734	 -5.51742182	 -0.00353881	  0.00196016	  6.51388301	  0.98850978	  0.99450104  0.47077849
+735	 -5.51964164	 -0.00353588	  0.00195902	  6.51610576	  0.98852126	  0.99450510  0.47084056
+736	 -5.52185594	 -0.00353296	  0.00195789	  6.51832298	  0.98853271	  0.99450915  0.47090249
+737	 -5.52406473	 -0.00353004	  0.00195677	  6.52053469	  0.98854415	  0.99451320  0.47096428
+738	 -5.52626800	 -0.00352712	  0.00195564	  6.52274088	  0.98855556	  0.99451724  0.47102593
+739	 -5.52846578	 -0.00352421	  0.00195451	  6.52494157	  0.98856696	  0.99452128  0.47108744
+740	 -5.53065808	 -0.00352130	  0.00195338	  6.52713677	  0.98857834	  0.99452532  0.47114881
+741	 -5.53284489	 -0.00351840	  0.00195226	  6.52932649	  0.98858969	  0.99452935  0.47121004
+742	 -5.53502623	 -0.00351550	  0.00195113	  6.53151073	  0.98860103	  0.99453337  0.47127113
+743	 -5.53720210	 -0.00351260	  0.00195001	  6.53368950	  0.98861234	  0.99453740  0.47133208
+744	 -5.53937252	 -0.00350971	  0.00194888	  6.53586282	  0.98862364	  0.99454141  0.47139289
+745	 -5.54153750	 -0.00350682	  0.00194776	  6.53803068	  0.98863491	  0.99454543  0.47145356
+746	 -5.54369704	 -0.00350393	  0.00194663	  6.54019311	  0.98864617	  0.99454944  0.47151409
+747	 -5.54585115	 -0.00350105	  0.00194551	  6.54235010	  0.98865740	  0.99455344  0.47157449
+748	 -5.54799984	 -0.00349817	  0.00194439	  6.54450167	  0.98866862	  0.99455744  0.47163474
+749	 -5.55014311	 -0.00349529	  0.00194327	  6.54664782	  0.98867982	  0.99456144  0.47169485
+750	 -5.55228099	 -0.00349242	  0.00194215	  6.54878857	  0.98869099	  0.99456543  0.47175483
+751	 -5.55441347	 -0.00348955	  0.00194103	  6.55092392	  0.98870215	  0.99456942  0.47181466
+752	 -5.55654057	 -0.00348669	  0.00193991	  6.55305388	  0.98871329	  0.99457340  0.47187436
+753	 -5.55866229	 -0.00348383	  0.00193879	  6.55517846	  0.98872441	  0.99457738  0.47193391
+754	 -5.56077864	 -0.00348097	  0.00193767	  6.55729767	  0.98873551	  0.99458136  0.47199333
+755	 -5.56288964	 -0.00347811	  0.00193655	  6.55941152	  0.98874659	  0.99458533  0.47205261
+756	 -5.56499528	 -0.00347526	  0.00193544	  6.56152002	  0.98875765	  0.99458930  0.47211176
+757	 -5.56709558	 -0.00347242	  0.00193432	  6.56362317	  0.98876869	  0.99459326  0.47217076
+758	 -5.56919055	 -0.00346957	  0.00193321	  6.56572098	  0.98877972	  0.99459722  0.47222962
+759	 -5.57128020	 -0.00346673	  0.00193209	  6.56781347	  0.98879072	  0.99460118  0.47228835
+760	 -5.57336453	 -0.00346390	  0.00193098	  6.56990064	  0.98880171	  0.99460513  0.47234694
+761	 -5.57544356	 -0.00346106	  0.00192986	  6.57198250	  0.98881267	  0.99460907  0.47240539
+762	 -5.57751729	 -0.00345823	  0.00192875	  6.57405906	  0.98882362	  0.99461302  0.47246371
+763	 -5.57958573	 -0.00345541	  0.00192764	  6.57613032	  0.98883455	  0.99461696  0.47252188
+764	 -5.58164889	 -0.00345259	  0.00192652	  6.57819631	  0.98884546	  0.99462089  0.47257992
+765	 -5.58370679	 -0.00344977	  0.00192541	  6.58025702	  0.98885635	  0.99462482  0.47263782
+766	 -5.58575942	 -0.00344695	  0.00192430	  6.58231247	  0.98886722	  0.99462875  0.47269559
+767	 -5.58780679	 -0.00344414	  0.00192319	  6.58436266	  0.98887808	  0.99463267  0.47275321
+768	 -5.58984893	 -0.00344133	  0.00192208	  6.58640760	  0.98888891	  0.99463659  0.47281070
+769	 -5.59188583	 -0.00343852	  0.00192097	  6.58844731	  0.98889973	  0.99464051  0.47286806
+770	 -5.59391750	 -0.00343572	  0.00191986	  6.59048178	  0.98891053	  0.99464442  0.47292528
+771	 -5.59594396	 -0.00343292	  0.00191875	  6.59251104	  0.98892131	  0.99464833  0.47298236
+772	 -5.59796521	 -0.00343013	  0.00191764	  6.59453508	  0.98893207	  0.99465223  0.47303930
+773	 -5.59998126	 -0.00342733	  0.00191653	  6.59655393	  0.98894281	  0.99465613  0.47309611
+774	 -5.60199212	 -0.00342455	  0.00191543	  6.59856758	  0.98895354	  0.99466003  0.47315278
+775	 -5.60399781	 -0.00342176	  0.00191432	  6.60057605	  0.98896425	  0.99466392  0.47320932
+776	 -5.60599831	 -0.00341898	  0.00191321	  6.60257934	  0.98897493	  0.99466781  0.47326572
+777	 -5.60799366	 -0.00341620	  0.00191211	  6.60457746	  0.98898561	  0.99467169  0.47332198
+778	 -5.60998385	 -0.00341342	  0.00191100	  6.60657043	  0.98899626	  0.99467557  0.47337811
+779	 -5.61196890	 -0.00341065	  0.00190990	  6.60855825	  0.98900689	  0.99467945  0.47343411
+780	 -5.61394881	 -0.00340788	  0.00190879	  6.61054093	  0.98901751	  0.99468332  0.47348997
+781	 -5.61592360	 -0.00340512	  0.00190769	  6.61251848	  0.98902811	  0.99468719  0.47354569
+782	 -5.61789327	 -0.00340235	  0.00190659	  6.61449091	  0.98903869	  0.99469106  0.47360128
+783	 -5.61985783	 -0.00339960	  0.00190548	  6.61645823	  0.98904926	  0.99469492  0.47365674
+784	 -5.62181729	 -0.00339684	  0.00190438	  6.61842045	  0.98905980	  0.99469878  0.47371206
+785	 -5.62377166	 -0.00339409	  0.00190328	  6.62037757	  0.98907033	  0.99470263  0.47376724
+786	 -5.62572095	 -0.00339134	  0.00190218	  6.62232961	  0.98908084	  0.99470648  0.47382230
+787	 -5.62766517	 -0.00338859	  0.00190108	  6.62427658	  0.98909133	  0.99471033  0.47387721
+788	 -5.62960432	 -0.00338585	  0.00189998	  6.62621847	  0.98910181	  0.99471417  0.47393200
+789	 -5.63153842	 -0.00338311	  0.00189888	  6.62815531	  0.98911227	  0.99471801  0.47398665
+790	 -5.63346748	 -0.00338037	  0.00189778	  6.63008711	  0.98912271	  0.99472185  0.47404117
+791	 -5.63539150	 -0.00337764	  0.00189668	  6.63201386	  0.98913313	  0.99472568  0.47409555
+792	 -5.63731050	 -0.00337491	  0.00189558	  6.63393558	  0.98914354	  0.99472951  0.47414980
+793	 -5.63922447	 -0.00337218	  0.00189448	  6.63585229	  0.98915393	  0.99473333  0.47420392
+794	 -5.64113344	 -0.00336946	  0.00189338	  6.63776398	  0.98916430	  0.99473716  0.47425791
+795	 -5.64303741	 -0.00336674	  0.00189229	  6.63967067	  0.98917466	  0.99474097  0.47431176
+796	 -5.64493639	 -0.00336402	  0.00189119	  6.64157237	  0.98918499	  0.99474479  0.47436548
+797	 -5.64683039	 -0.00336131	  0.00189009	  6.64346908	  0.98919531	  0.99474860  0.47441907
+798	 -5.64871942	 -0.00335860	  0.00188899	  6.64536082	  0.98920562	  0.99475241  0.47447252
+799	 -5.65060348	 -0.00335589	  0.00188790	  6.64724759	  0.98921590	  0.99475621  0.47452585
+800	 -5.65248259	 -0.00335319	  0.00188680	  6.64912941	  0.98922617	  0.99476001  0.47457904
+801	 -5.65435676	 -0.00335049	  0.00188571	  6.65100628	  0.98923642	  0.99476381  0.47463210
+802	 -5.65622600	 -0.00334779	  0.00188461	  6.65287821	  0.98924666	  0.99476760  0.47468503
+803	 -5.65809030	 -0.00334509	  0.00188352	  6.65474521	  0.98925688	  0.99477139  0.47473783
+804	 -5.65994970	 -0.00334240	  0.00188243	  6.65660729	  0.98926708	  0.99477517  0.47479050
+805	 -5.66180418	 -0.00333971	  0.00188133	  6.65846447	  0.98927727	  0.99477896  0.47484303
+806	 -5.66365377	 -0.00333703	  0.00188024	  6.66031674	  0.98928744	  0.99478273  0.47489544
+807	 -5.66549846	 -0.00333434	  0.00187915	  6.66216412	  0.98929759	  0.99478651  0.47494772
+808	 -5.66733828	 -0.00333166	  0.00187805	  6.66400662	  0.98930772	  0.99479028  0.47499986
+809	 -5.66917323	 -0.00332899	  0.00187696	  6.66584424	  0.98931784	  0.99479405  0.47505187
+810	 -5.67100331	 -0.00332631	  0.00187587	  6.66767700	  0.98932794	  0.99479781  0.47510376
+811	 -5.67282855	 -0.00332364	  0.00187478	  6.66950490	  0.98933803	  0.99480158  0.47515552
+812	 -5.67464894	 -0.00332098	  0.00187369	  6.67132796	  0.98934810	  0.99480533  0.47520714
+813	 -5.67646450	 -0.00331831	  0.00187260	  6.67314618	  0.98935815	  0.99480909  0.47525864
+814	 -5.67827523	 -0.00331565	  0.00187151	  6.67495958	  0.98936819	  0.99481284  0.47531001
+815	 -5.68008115	 -0.00331299	  0.00187042	  6.67676816	  0.98937821	  0.99481659  0.47536125
+816	 -5.68188226	 -0.00331034	  0.00186933	  6.67857192	  0.98938821	  0.99482033  0.47541236
+817	 -5.68367858	 -0.00330769	  0.00186824	  6.68037089	  0.98939820	  0.99482407  0.47546334
+818	 -5.68547011	 -0.00330504	  0.00186715	  6.68216507	  0.98940817	  0.99482781  0.47551419
+819	 -5.68725686	 -0.00330239	  0.00186606	  6.68395447	  0.98941813	  0.99483154  0.47556492
+820	 -5.68903884	 -0.00329975	  0.00186498	  6.68573909	  0.98942807	  0.99483527  0.47561551
+821	 -5.69081606	 -0.00329711	  0.00186389	  6.68751895	  0.98943799	  0.99483900  0.47566598
+822	 -5.69258853	 -0.00329447	  0.00186280	  6.68929406	  0.98944790	  0.99484272  0.47571632
+823	 -5.69435627	 -0.00329184	  0.00186172	  6.69106443	  0.98945779	  0.99484644  0.47576654
+824	 -5.69611926	 -0.00328921	  0.00186063	  6.69283005	  0.98946767	  0.99485016  0.47581663
+825	 -5.69787754	 -0.00328658	  0.00185954	  6.69459096	  0.98947753	  0.99485388  0.47586659
+826	 -5.69963110	 -0.00328396	  0.00185846	  6.69634715	  0.98948737	  0.99485759  0.47591642
+827	 -5.70137996	 -0.00328133	  0.00185737	  6.69809863	  0.98949720	  0.99486129  0.47596613
+828	 -5.70312413	 -0.00327872	  0.00185629	  6.69984541	  0.98950701	  0.99486500  0.47601571
+829	 -5.70486360	 -0.00327610	  0.00185520	  6.70158750	  0.98951681	  0.99486870  0.47606516
+830	 -5.70659840	 -0.00327349	  0.00185412	  6.70332492	  0.98952659	  0.99487239  0.47611449
+831	 -5.70832854	 -0.00327088	  0.00185304	  6.70505766	  0.98953636	  0.99487609  0.47616370
+832	 -5.71005402	 -0.00326827	  0.00185195	  6.70678575	  0.98954611	  0.99487978  0.47621277
+833	 -5.71177484	 -0.00326567	  0.00185087	  6.70850918	  0.98955584	  0.99488347  0.47626172
+834	 -5.71349103	 -0.00326306	  0.00184979	  6.71022797	  0.98956556	  0.99488715  0.47631055
+835	 -5.71520259	 -0.00326047	  0.00184870	  6.71194212	  0.98957526	  0.99489083  0.47635925
+836	 -5.71690953	 -0.00325787	  0.00184762	  6.71365166	  0.98958495	  0.99489451  0.47640783
+837	 -5.71861185	 -0.00325528	  0.00184654	  6.71535658	  0.98959462	  0.99489818  0.47645628
+838	 -5.72030958	 -0.00325269	  0.00184546	  6.71705689	  0.98960428	  0.99490185  0.47650461
+839	 -5.72200271	 -0.00325010	  0.00184438	  6.71875261	  0.98961392	  0.99490552  0.47655282
+840	 -5.72369126	 -0.00324752	  0.00184330	  6.72044374	  0.98962355	  0.99490918  0.47660090
+841	 -5.72537523	 -0.00324494	  0.00184222	  6.72213029	  0.98963316	  0.99491284  0.47664886
+842	 -5.72705463	 -0.00324236	  0.00184114	  6.72381227	  0.98964276	  0.99491650  0.47669669
+843	 -5.72872948	 -0.00323979	  0.00184006	  6.72548970	  0.98965234	  0.99492016  0.47674440
+844	 -5.73039979	 -0.00323721	  0.00183898	  6.72716257	  0.98966190	  0.99492381  0.47679198
+845	 -5.73206555	 -0.00323464	  0.00183790	  6.72883091	  0.98967145	  0.99492746  0.47683945
+846	 -5.73372679	 -0.00323208	  0.00183682	  6.73049471	  0.98968099	  0.99493110  0.47688679
+847	 -5.73538351	 -0.00322952	  0.00183574	  6.73215399	  0.98969051	  0.99493474  0.47693401
+848	 -5.73703572	 -0.00322695	  0.00183466	  6.73380876	  0.98970002	  0.99493838  0.47698111
+849	 -5.73868343	 -0.00322440	  0.00183359	  6.73545903	  0.98970951	  0.99494202  0.47702808
+850	 -5.74032664	 -0.00322184	  0.00183251	  6.73710480	  0.98971898	  0.99494565  0.47707494
+851	 -5.74196538	 -0.00321929	  0.00183143	  6.73874609	  0.98972844	  0.99494928  0.47712167
+852	 -5.74359964	 -0.00321674	  0.00183036	  6.74038290	  0.98973789	  0.99495290  0.47716828
+853	 -5.74522943	 -0.00321419	  0.00182928	  6.74201524	  0.98974732	  0.99495653  0.47721477
+854	 -5.74685478	 -0.00321165	  0.00182820	  6.74364312	  0.98975674	  0.99496014  0.47726113
+855	 -5.74847567	 -0.00320911	  0.00182713	  6.74526656	  0.98976614	  0.99496376  0.47730738
+856	 -5.75009213	 -0.00320657	  0.00182605	  6.74688556	  0.98977552	  0.99496737  0.47735351
+857	 -5.75170417	 -0.00320404	  0.00182498	  6.74850013	  0.98978490	  0.99497098  0.47739952
+858	 -5.75331179	 -0.00320151	  0.00182390	  6.75011028	  0.98979425	  0.99497459  0.47744540
+859	 -5.75491499	 -0.00319898	  0.00182283	  6.75171602	  0.98980360	  0.99497819  0.47749117
+860	 -5.75651380	 -0.00319645	  0.00182176	  6.75331735	  0.98981293	  0.99498179  0.47753682
+861	 -5.75810822	 -0.00319393	  0.00182068	  6.75491429	  0.98982224	  0.99498539  0.47758234
+862	 -5.75969826	 -0.00319141	  0.00181961	  6.75650685	  0.98983154	  0.99498899  0.47762775
+863	 -5.76128392	 -0.00318889	  0.00181854	  6.75809504	  0.98984082	  0.99499258  0.47767304
+864	 -5.76286523	 -0.00318637	  0.00181746	  6.75967886	  0.98985009	  0.99499616  0.47771821
+865	 -5.76444218	 -0.00318386	  0.00181639	  6.76125832	  0.98985935	  0.99499975  0.47776327
+866	 -5.76601479	 -0.00318135	  0.00181532	  6.76283343	  0.98986859	  0.99500333  0.47780820
+867	 -5.76758306	 -0.00317884	  0.00181425	  6.76440421	  0.98987782	  0.99500691  0.47785302
+868	 -5.76914700	 -0.00317634	  0.00181318	  6.76597066	  0.98988703	  0.99501049  0.47789772
+869	 -5.77070663	 -0.00317384	  0.00181210	  6.76753279	  0.98989623	  0.99501406  0.47794230
+870	 -5.77226195	 -0.00317134	  0.00181103	  6.76909061	  0.98990542	  0.99501763  0.47798676
+871	 -5.77381298	 -0.00316884	  0.00180996	  6.77064413	  0.98991459	  0.99502119  0.47803110
+872	 -5.77535971	 -0.00316635	  0.00180889	  6.77219336	  0.98992374	  0.99502476  0.47807533
+873	 -5.77690216	 -0.00316386	  0.00180782	  6.77373830	  0.98993289	  0.99502832  0.47811945
+874	 -5.77844035	 -0.00316137	  0.00180675	  6.77527898	  0.98994201	  0.99503187  0.47816344
+875	 -5.77997427	 -0.00315889	  0.00180569	  6.77681538	  0.98995113	  0.99503543  0.47820732
+876	 -5.78150394	 -0.00315640	  0.00180462	  6.77834753	  0.98996023	  0.99503898  0.47825108
+877	 -5.78302936	 -0.00315393	  0.00180355	  6.77987544	  0.98996931	  0.99504253  0.47829473
+878	 -5.78455056	 -0.00315145	  0.00180248	  6.78139911	  0.98997839	  0.99504607  0.47833826
+879	 -5.78606752	 -0.00314897	  0.00180141	  6.78291855	  0.98998744	  0.99504961  0.47838168
+880	 -5.78758027	 -0.00314650	  0.00180035	  6.78443377	  0.98999649	  0.99505315  0.47842498
+881	 -5.78908882	 -0.00314403	  0.00179928	  6.78594478	  0.99000552	  0.99505669  0.47846816
+882	 -5.79059316	 -0.00314157	  0.00179821	  6.78745159	  0.99001453	  0.99506022  0.47851123
+883	 -5.79209332	 -0.00313911	  0.00179715	  6.78895421	  0.99002354	  0.99506375  0.47855419
+884	 -5.79358930	 -0.00313665	  0.00179608	  6.79045265	  0.99003253	  0.99506727  0.47859703
+885	 -5.79508110	 -0.00313419	  0.00179501	  6.79194692	  0.99004150	  0.99507080  0.47863976
+886	 -5.79656875	 -0.00313173	  0.00179395	  6.79343702	  0.99005046	  0.99507432  0.47868238
+887	 -5.79805224	 -0.00312928	  0.00179288	  6.79492296	  0.99005941	  0.99507784  0.47872487
+888	 -5.79953159	 -0.00312683	  0.00179182	  6.79640476	  0.99006834	  0.99508135  0.47876726
+889	 -5.80100681	 -0.00312438	  0.00179075	  6.79788243	  0.99007726	  0.99508486  0.47880954
+890	 -5.80247790	 -0.00312194	  0.00178969	  6.79935596	  0.99008617	  0.99508837  0.47885170
+891	 -5.80394487	 -0.00311950	  0.00178863	  6.80082538	  0.99009506	  0.99509187  0.47889374
+892	 -5.80540774	 -0.00311706	  0.00178756	  6.80229068	  0.99010394	  0.99509538  0.47893568
+893	 -5.80686651	 -0.00311462	  0.00178650	  6.80375189	  0.99011281	  0.99509888  0.47897750
+894	 -5.80832119	 -0.00311219	  0.00178544	  6.80520900	  0.99012166	  0.99510237  0.47901921
+895	 -5.80977179	 -0.00310976	  0.00178438	  6.80666204	  0.99013050	  0.99510587  0.47906081
+896	 -5.81121832	 -0.00310733	  0.00178331	  6.80811099	  0.99013933	  0.99510936  0.47910230
+897	 -5.81266079	 -0.00310490	  0.00178225	  6.80955589	  0.99014814	  0.99511284  0.47914367
+898	 -5.81409921	 -0.00310248	  0.00178119	  6.81099673	  0.99015694	  0.99511633  0.47918494
+899	 -5.81553358	 -0.00310006	  0.00178013	  6.81243352	  0.99016573	  0.99511981  0.47922609
+900	 -5.81696392	 -0.00309764	  0.00177907	  6.81386627	  0.99017450	  0.99512329  0.47926714
+901	 -5.81839023	 -0.00309523	  0.00177801	  6.81529500	  0.99018326	  0.99512676  0.47930807
+902	 -5.81981252	 -0.00309282	  0.00177695	  6.81671970	  0.99019200	  0.99513024  0.47934889
+903	 -5.82123081	 -0.00309041	  0.00177589	  6.81814040	  0.99020074	  0.99513370  0.47938960
+904	 -5.82264509	 -0.00308800	  0.00177483	  6.81955709	  0.99020946	  0.99513717  0.47943020
+905	 -5.82405539	 -0.00308560	  0.00177377	  6.82096980	  0.99021816	  0.99514063  0.47947070
+906	 -5.82546171	 -0.00308319	  0.00177271	  6.82237851	  0.99022686	  0.99514410  0.47951108
+907	 -5.82686405	 -0.00308079	  0.00177165	  6.82378326	  0.99023554	  0.99514755  0.47955135
+908	 -5.82826243	 -0.00307840	  0.00177059	  6.82518403	  0.99024421	  0.99515101  0.47959152
+909	 -5.82965686	 -0.00307600	  0.00176954	  6.82658086	  0.99025286	  0.99515446  0.47963157
+910	 -5.83104734	 -0.00307361	  0.00176848	  6.82797373	  0.99026150	  0.99515791  0.47967152
+911	 -5.83243389	 -0.00307122	  0.00176742	  6.82936266	  0.99027013	  0.99516135  0.47971136
+912	 -5.83381650	 -0.00306884	  0.00176637	  6.83074767	  0.99027875	  0.99516480  0.47975109
+913	 -5.83519520	 -0.00306645	  0.00176531	  6.83212875	  0.99028735	  0.99516824  0.47979072
+914	 -5.83656999	 -0.00306407	  0.00176425	  6.83350592	  0.99029594	  0.99517167  0.47983023
+915	 -5.83794088	 -0.00306169	  0.00176320	  6.83487918	  0.99030451	  0.99517511  0.47986964
+916	 -5.83930788	 -0.00305932	  0.00176214	  6.83624856	  0.99031308	  0.99517854  0.47990894
+917	 -5.84067099	 -0.00305695	  0.00176109	  6.83761404	  0.99032163	  0.99518197  0.47994814
+918	 -5.84203023	 -0.00305458	  0.00176003	  6.83897565	  0.99033017	  0.99518539  0.47998722
+919	 -5.84338560	 -0.00305221	  0.00175898	  6.84033340	  0.99033869	  0.99518881  0.48002620
+920	 -5.84473712	 -0.00304984	  0.00175793	  6.84168728	  0.99034721	  0.99519223  0.48006508
+921	 -5.84608479	 -0.00304748	  0.00175687	  6.84303731	  0.99035571	  0.99519565  0.48010385
+922	 -5.84742862	 -0.00304512	  0.00175582	  6.84438350	  0.99036419	  0.99519906  0.48014251
+923	 -5.84876862	 -0.00304276	  0.00175477	  6.84572586	  0.99037267	  0.99520247  0.48018107
+924	 -5.85010480	 -0.00304041	  0.00175371	  6.84706439	  0.99038113	  0.99520588  0.48021952
+925	 -5.85143717	 -0.00303805	  0.00175266	  6.84839911	  0.99038958	  0.99520929  0.48025787
+926	 -5.85276573	 -0.00303570	  0.00175161	  6.84973003	  0.99039802	  0.99521269  0.48029611
+927	 -5.85409050	 -0.00303336	  0.00175056	  6.85105714	  0.99040644	  0.99521609  0.48033425
+928	 -5.85541148	 -0.00303101	  0.00174951	  6.85238047	  0.99041485	  0.99521948  0.48037228
+929	 -5.85672868	 -0.00302867	  0.00174846	  6.85370002	  0.99042325	  0.99522288  0.48041021
+930	 -5.85804212	 -0.00302633	  0.00174741	  6.85501579	  0.99043164	  0.99522627  0.48044803
+931	 -5.85935180	 -0.00302399	  0.00174636	  6.85632781	  0.99044002	  0.99522965  0.48048575
+932	 -5.86065772	 -0.00302166	  0.00174531	  6.85763607	  0.99044838	  0.99523304  0.48052337
+933	 -5.86195991	 -0.00301932	  0.00174426	  6.85894058	  0.99045673	  0.99523642  0.48056088
+934	 -5.86325835	 -0.00301699	  0.00174321	  6.86024136	  0.99046507	  0.99523980  0.48059829
+935	 -5.86455308	 -0.00301467	  0.00174216	  6.86153841	  0.99047339	  0.99524317  0.48063560
+936	 -5.86584409	 -0.00301234	  0.00174111	  6.86283174	  0.99048171	  0.99524655  0.48067281
+937	 -5.86713139	 -0.00301002	  0.00174006	  6.86412137	  0.99049001	  0.99524992  0.48070991
+938	 -5.86841499	 -0.00300770	  0.00173902	  6.86540729	  0.99049829	  0.99525328  0.48074691
+939	 -5.86969490	 -0.00300538	  0.00173797	  6.86668952	  0.99050657	  0.99525665  0.48078381
+940	 -5.87097113	 -0.00300307	  0.00173692	  6.86796806	  0.99051483	  0.99526001  0.48082060
+941	 -5.87224368	 -0.00300076	  0.00173588	  6.86924293	  0.99052309	  0.99526337  0.48085730
+942	 -5.87351257	 -0.00299845	  0.00173483	  6.87051413	  0.99053133	  0.99526672  0.48089389
+943	 -5.87477781	 -0.00299614	  0.00173378	  6.87178167	  0.99053955	  0.99527008  0.48093038
+944	 -5.87603940	 -0.00299383	  0.00173274	  6.87304557	  0.99054777	  0.99527343  0.48096678
+945	 -5.87729735	 -0.00299153	  0.00173169	  6.87430582	  0.99055597	  0.99527677  0.48100307
+946	 -5.87855167	 -0.00298923	  0.00173065	  6.87556244	  0.99056416	  0.99528012  0.48103926
+947	 -5.87980237	 -0.00298694	  0.00172961	  6.87681543	  0.99057234	  0.99528346  0.48107535
+948	 -5.88104946	 -0.00298464	  0.00172856	  6.87806482	  0.99058051	  0.99528680  0.48111134
+949	 -5.88229294	 -0.00298235	  0.00172752	  6.87931059	  0.99058867	  0.99529013  0.48114723
+950	 -5.88353283	 -0.00298006	  0.00172648	  6.88055277	  0.99059681	  0.99529347  0.48118302
+951	 -5.88476913	 -0.00297777	  0.00172543	  6.88179135	  0.99060494	  0.99529680  0.48121871
+952	 -5.88600185	 -0.00297549	  0.00172439	  6.88302636	  0.99061306	  0.99530012  0.48125430
+953	 -5.88723100	 -0.00297320	  0.00172335	  6.88425779	  0.99062117	  0.99530345  0.48128980
+954	 -5.88845659	 -0.00297093	  0.00172231	  6.88548566	  0.99062927	  0.99530677  0.48132519
+955	 -5.88967862	 -0.00296865	  0.00172127	  6.88670998	  0.99063735	  0.99531009  0.48136049
+956	 -5.89089712	 -0.00296637	  0.00172022	  6.88793074	  0.99064542	  0.99531340  0.48139569
+957	 -5.89211207	 -0.00296410	  0.00171918	  6.88914797	  0.99065348	  0.99531671  0.48143079
+958	 -5.89332350	 -0.00296183	  0.00171814	  6.89036167	  0.99066153	  0.99532002  0.48146579
+959	 -5.89453141	 -0.00295956	  0.00171710	  6.89157185	  0.99066957	  0.99532333  0.48150069
+960	 -5.89573581	 -0.00295730	  0.00171607	  6.89277851	  0.99067760	  0.99532664  0.48153550
+961	 -5.89693670	 -0.00295504	  0.00171503	  6.89398167	  0.99068561	  0.99532994  0.48157021
+962	 -5.89813411	 -0.00295278	  0.00171399	  6.89518133	  0.99069361	  0.99533324  0.48160482
+963	 -5.89932802	 -0.00295052	  0.00171295	  6.89637751	  0.99070160	  0.99533653  0.48163934
+964	 -5.90051846	 -0.00294826	  0.00171191	  6.89757020	  0.99070958	  0.99533983  0.48167376
+965	 -5.90170544	 -0.00294601	  0.00171088	  6.89875943	  0.99071755	  0.99534312  0.48170809
+966	 -5.90288895	 -0.00294376	  0.00170984	  6.89994519	  0.99072550	  0.99534640  0.48174231
+967	 -5.90406901	 -0.00294151	  0.00170880	  6.90112750	  0.99073345	  0.99534969  0.48177645
+968	 -5.90524562	 -0.00293927	  0.00170777	  6.90230636	  0.99074138	  0.99535297  0.48181048
+969	 -5.90641881	 -0.00293702	  0.00170673	  6.90348178	  0.99074930	  0.99535625  0.48184443
+970	 -5.90758856	 -0.00293478	  0.00170569	  6.90465378	  0.99075721	  0.99535952  0.48187827
+971	 -5.90875490	 -0.00293254	  0.00170466	  6.90582235	  0.99076511	  0.99536280  0.48191202
+972	 -5.90991782	 -0.00293031	  0.00170363	  6.90698751	  0.99077300	  0.99536607  0.48194568
+973	 -5.91107735	 -0.00292807	  0.00170259	  6.90814927	  0.99078087	  0.99536933  0.48197924
+974	 -5.91223348	 -0.00292584	  0.00170156	  6.90930763	  0.99078874	  0.99537260  0.48201271
+975	 -5.91338622	 -0.00292362	  0.00170052	  6.91046261	  0.99079659	  0.99537586  0.48204608
+976	 -5.91453559	 -0.00292139	  0.00169949	  6.91161420	  0.99080443	  0.99537912  0.48207936
+977	 -5.91568159	 -0.00291917	  0.00169846	  6.91276243	  0.99081226	  0.99538238  0.48211255
+978	 -5.91682423	 -0.00291694	  0.00169743	  6.91390729	  0.99082008	  0.99538563  0.48214564
+979	 -5.91796352	 -0.00291472	  0.00169639	  6.91504879	  0.99082789	  0.99538888  0.48217864
+980	 -5.91909946	 -0.00291251	  0.00169536	  6.91618695	  0.99083569	  0.99539213  0.48221155
+981	 -5.92023207	 -0.00291029	  0.00169433	  6.91732177	  0.99084347	  0.99539537  0.48224436
+982	 -5.92136135	 -0.00290808	  0.00169330	  6.91845327	  0.99085124	  0.99539862  0.48227709
+983	 -5.92248731	 -0.00290587	  0.00169227	  6.91958144	  0.99085901	  0.99540186  0.48230971
+984	 -5.92360996	 -0.00290367	  0.00169124	  6.92070629	  0.99086676	  0.99540509  0.48234225
+985	 -5.92472930	 -0.00290146	  0.00169021	  6.92182784	  0.99087450	  0.99540833  0.48237470
+986	 -5.92584536	 -0.00289926	  0.00168918	  6.92294610	  0.99088223	  0.99541156  0.48240705
+987	 -5.92695812	 -0.00289706	  0.00168816	  6.92406106	  0.99088995	  0.99541479  0.48243931
+988	 -5.92806761	 -0.00289486	  0.00168713	  6.92517274	  0.99089766	  0.99541801  0.48247148
+989	 -5.92917382	 -0.00289267	  0.00168610	  6.92628115	  0.99090535	  0.99542123  0.48250356
+990	 -5.93027677	 -0.00289047	  0.00168507	  6.92738630	  0.99091304	  0.99542445  0.48253555
+991	 -5.93137647	 -0.00288828	  0.00168405	  6.92848819	  0.99092071	  0.99542767  0.48256745
+992	 -5.93247293	 -0.00288610	  0.00168302	  6.92958683	  0.99092837	  0.99543089  0.48259926
+993	 -5.93356614	 -0.00288391	  0.00168199	  6.93068223	  0.99093603	  0.99543410  0.48263098
+994	 -5.93465613	 -0.00288173	  0.00168097	  6.93177440	  0.99094367	  0.99543731  0.48266260
+995	 -5.93574289	 -0.00287955	  0.00167994	  6.93286334	  0.99095130	  0.99544051  0.48269414
+996	 -5.93682644	 -0.00287737	  0.00167892	  6.93394907	  0.99095892	  0.99544371  0.48272559
+997	 -5.93790678	 -0.00287519	  0.00167789	  6.93503159	  0.99096653	  0.99544692  0.48275695
+998	 -5.93898392	 -0.00287302	  0.00167687	  6.93611091	  0.99097412	  0.99545011  0.48278822
+999	 -5.94005788	 -0.00287085	  0.00167585	  6.93718703	  0.99098171	  0.99545331  0.48281940
+1000	 -5.94112865	 -0.00286868	  0.00167482	  6.93825997	  0.99098929	  0.99545650  0.48285049
+1001	 -5.94219625	 -0.00286651	  0.00167380	  6.93932974	  0.99099685	  0.99545969  0.48288150
+1002	 -5.94326068	 -0.00286435	  0.00167278	  6.94039634	  0.99100441	  0.99546288  0.48291241
+1003	 -5.94432196	 -0.00286218	  0.00167176	  6.94145977	  0.99101195	  0.99546606  0.48294324
+1004	 -5.94538008	 -0.00286002	  0.00167074	  6.94252006	  0.99101949	  0.99546924  0.48297398
+1005	 -5.94643506	 -0.00285787	  0.00166971	  6.94357720	  0.99102701	  0.99547242  0.48300463
+1006	 -5.94748691	 -0.00285571	  0.00166869	  6.94463120	  0.99103452	  0.99547559  0.48303520
+1007	 -5.94853563	 -0.00285356	  0.00166767	  6.94568207	  0.99104202	  0.99547877  0.48306568
+1008	 -5.94958124	 -0.00285141	  0.00166666	  6.94672983	  0.99104951	  0.99548194  0.48309607
+1009	 -5.95062373	 -0.00284926	  0.00166564	  6.94777447	  0.99105699	  0.99548510  0.48312637
+1010	 -5.95166312	 -0.00284711	  0.00166462	  6.94881600	  0.99106446	  0.99548827  0.48315659
+1011	 -5.95269941	 -0.00284497	  0.00166360	  6.94985444	  0.99107192	  0.99549143  0.48318672
+1012	 -5.95373262	 -0.00284283	  0.00166258	  6.95088979	  0.99107937	  0.99549459  0.48321676
+1013	 -5.95476275	 -0.00284069	  0.00166156	  6.95192206	  0.99108681	  0.99549775  0.48324672
+1014	 -5.95578980	 -0.00283855	  0.00166055	  6.95295125	  0.99109423	  0.99550090  0.48327660
+1015	 -5.95681380	 -0.00283642	  0.00165953	  6.95397738	  0.99110165	  0.99550405  0.48330638
+1016	 -5.95783474	 -0.00283429	  0.00165852	  6.95500045	  0.99110906	  0.99550720  0.48333609
+1017	 -5.95885262	 -0.00283216	  0.00165750	  6.95602047	  0.99111645	  0.99551034  0.48336571
+1018	 -5.95986747	 -0.00283003	  0.00165648	  6.95703744	  0.99112384	  0.99551348  0.48339524
+1019	 -5.96087929	 -0.00282791	  0.00165547	  6.95805138	  0.99113121	  0.99551662  0.48342469
+1020	 -5.96188808	 -0.00282578	  0.00165446	  6.95906230	  0.99113858	  0.99551976  0.48345405
+1021	 -5.96289385	 -0.00282366	  0.00165344	  6.96007019	  0.99114593	  0.99552290  0.48348333
+1022	 -5.96389662	 -0.00282154	  0.00165243	  6.96107507	  0.99115327	  0.99552603  0.48351252
+1023	 -5.96489638	 -0.00281943	  0.00165142	  6.96207695	  0.99116061	  0.99552916  0.48354163
+1024	 -5.96589315	 -0.00281732	  0.00165040	  6.96307584	  0.99116793	  0.99553228  0.48357066
+1025	 -5.96688693	 -0.00281520	  0.00164939	  6.96407173	  0.99117524	  0.99553540  0.48359961
+1026	 -5.96787774	 -0.00281310	  0.00164838	  6.96506464	  0.99118255	  0.99553852  0.48362846
+1027	 -5.96886557	 -0.00281099	  0.00164737	  6.96605458	  0.99118984	  0.99554164  0.48365724
+1028	 -5.96985044	 -0.00280888	  0.00164636	  6.96704156	  0.99119712	  0.99554476  0.48368594
+1029	 -5.97083235	 -0.00280678	  0.00164535	  6.96802557	  0.99120439	  0.99554787  0.48371455
+1030	 -5.97181132	 -0.00280468	  0.00164434	  6.96900664	  0.99121165	  0.99555098  0.48374308
+1031	 -5.97278734	 -0.00280258	  0.00164333	  6.96998476	  0.99121891	  0.99555409  0.48377153
+1032	 -5.97376044	 -0.00280049	  0.00164232	  6.97095995	  0.99122615	  0.99555719  0.48379989
+1033	 -5.97473060	 -0.00279840	  0.00164131	  6.97193221	  0.99123338	  0.99556029  0.48382818
+1034	 -5.97569785	 -0.00279631	  0.00164031	  6.97290155	  0.99124060	  0.99556339  0.48385638
+1035	 -5.97666219	 -0.00279422	  0.00163930	  6.97386797	  0.99124781	  0.99556648  0.48388450
+1036	 -5.97762362	 -0.00279213	  0.00163829	  6.97483149	  0.99125501	  0.99556958  0.48391254
+1037	 -5.97858216	 -0.00279005	  0.00163729	  6.97579212	  0.99126220	  0.99557267  0.48394050
+1038	 -5.97953782	 -0.00278796	  0.00163628	  6.97674985	  0.99126938	  0.99557576  0.48396837
+1039	 -5.98049059	 -0.00278589	  0.00163527	  6.97770470	  0.99127655	  0.99557884  0.48399617
+1040	 -5.98144049	 -0.00278381	  0.00163427	  6.97865668	  0.99128371	  0.99558192  0.48402389
+1041	 -5.98238752	 -0.00278173	  0.00163326	  6.97960579	  0.99129087	  0.99558500  0.48405152
+1042	 -5.98333170	 -0.00277966	  0.00163226	  6.98055204	  0.99129801	  0.99558808  0.48407908
+1043	 -5.98427302	 -0.00277759	  0.00163126	  6.98149543	  0.99130514	  0.99559115  0.48410655
+1044	 -5.98521150	 -0.00277552	  0.00163025	  6.98243598	  0.99131226	  0.99559422  0.48413395
+1045	 -5.98614715	 -0.00277346	  0.00162925	  6.98337369	  0.99131937	  0.99559729  0.48416127
+1046	 -5.98707997	 -0.00277139	  0.00162825	  6.98430858	  0.99132647	  0.99560036  0.48418851
+1047	 -5.98800996	 -0.00276933	  0.00162725	  6.98524063	  0.99133356	  0.99560342  0.48421567
+1048	 -5.98893715	 -0.00276727	  0.00162625	  6.98616988	  0.99134064	  0.99560648  0.48424275
+1049	 -5.98986153	 -0.00276521	  0.00162525	  6.98709631	  0.99134771	  0.99560954  0.48426975
+1050	 -5.99078310	 -0.00276316	  0.00162425	  6.98801995	  0.99135477	  0.99561259  0.48429667
+1051	 -5.99170189	 -0.00276111	  0.00162325	  6.98894079	  0.99136183	  0.99561565  0.48432352
+1052	 -5.99261789	 -0.00275906	  0.00162225	  6.98985884	  0.99136887	  0.99561870  0.48435028
+1053	 -5.99353112	 -0.00275701	  0.00162125	  6.99077411	  0.99137590	  0.99562174  0.48437697
+1054	 -5.99444158	 -0.00275496	  0.00162025	  6.99168662	  0.99138292	  0.99562479  0.48440358
+1055	 -5.99534927	 -0.00275292	  0.00161925	  6.99259635	  0.99138994	  0.99562783  0.48443012
+1056	 -5.99625421	 -0.00275088	  0.00161826	  6.99350334	  0.99139694	  0.99563087  0.48445657
+1057	 -5.99715640	 -0.00274884	  0.00161726	  6.99440757	  0.99140393	  0.99563390  0.48448295
+1058	 -5.99805585	 -0.00274680	  0.00161626	  6.99530906	  0.99141092	  0.99563694  0.48450926
+1059	 -5.99895257	 -0.00274476	  0.00161527	  6.99620781	  0.99141789	  0.99563997  0.48453548
+1060	 -5.99984656	 -0.00274273	  0.00161427	  6.99710383	  0.99142485	  0.99564299  0.48456163
+1061	 -6.00073784	 -0.00274070	  0.00161328	  6.99799714	  0.99143181	  0.99564602  0.48458771
+1062	 -6.00162640	 -0.00273867	  0.00161228	  6.99888773	  0.99143875	  0.99564904  0.48461370
+1063	 -6.00251225	 -0.00273665	  0.00161129	  6.99977561	  0.99144569	  0.99565206  0.48463962
+1064	 -6.00339541	 -0.00273462	  0.00161030	  7.00066079	  0.99145261	  0.99565508  0.48466547
+1065	 -6.00427588	 -0.00273260	  0.00160931	  7.00154328	  0.99145953	  0.99565809  0.48469124
+1066	 -6.00515367	 -0.00273058	  0.00160831	  7.00242309	  0.99146644	  0.99566111  0.48471693
+1067	 -6.00602878	 -0.00272856	  0.00160732	  7.00330021	  0.99147334	  0.99566411  0.48474255
+1068	 -6.00690122	 -0.00272655	  0.00160633	  7.00417467	  0.99148022	  0.99566712  0.48476810
+1069	 -6.00777100	 -0.00272454	  0.00160534	  7.00504646	  0.99148710	  0.99567012  0.48479357
+1070	 -6.00863812	 -0.00272252	  0.00160435	  7.00591560	  0.99149397	  0.99567313  0.48481896
+1071	 -6.00950260	 -0.00272052	  0.00160336	  7.00678208	  0.99150083	  0.99567612  0.48484429
+1072	 -6.01036444	 -0.00271851	  0.00160237	  7.00764593	  0.99150768	  0.99567912  0.48486953
+1073	 -6.01122364	 -0.00271651	  0.00160138	  7.00850713	  0.99151452	  0.99568211  0.48489471
+1074	 -6.01208022	 -0.00271450	  0.00160039	  7.00936571	  0.99152135	  0.99568510  0.48491980
+1075	 -6.01293417	 -0.00271250	  0.00159941	  7.01022167	  0.99152817	  0.99568809  0.48494483
+1076	 -6.01378552	 -0.00271051	  0.00159842	  7.01107501	  0.99153498	  0.99569107  0.48496978
+1077	 -6.01463426	 -0.00270851	  0.00159743	  7.01192575	  0.99154179	  0.99569406  0.48499466
+1078	 -6.01548040	 -0.00270652	  0.00159645	  7.01277388	  0.99154858	  0.99569704  0.48501947
+1079	 -6.01632394	 -0.00270453	  0.00159546	  7.01361942	  0.99155537	  0.99570001  0.48504420
+1080	 -6.01716491	 -0.00270254	  0.00159448	  7.01446237	  0.99156214	  0.99570299  0.48506886
+1081	 -6.01800329	 -0.00270055	  0.00159349	  7.01530274	  0.99156891	  0.99570596  0.48509345
+1082	 -6.01883911	 -0.00269856	  0.00159251	  7.01614055	  0.99157566	  0.99570893  0.48511797
+1083	 -6.01967236	 -0.00269658	  0.00159153	  7.01697578	  0.99158241	  0.99571189  0.48514241
+1084	 -6.02050306	 -0.00269460	  0.00159054	  7.01780845	  0.99158915	  0.99571486  0.48516678
+1085	 -6.02133120	 -0.00269262	  0.00158956	  7.01863858	  0.99159588	  0.99571782  0.48519108
+1086	 -6.02215680	 -0.00269065	  0.00158858	  7.01946615	  0.99160260	  0.99572077  0.48521531
+1087	 -6.02297987	 -0.00268867	  0.00158760	  7.02029119	  0.99160931	  0.99572373  0.48523947
+1088	 -6.02380040	 -0.00268670	  0.00158662	  7.02111370	  0.99161601	  0.99572668  0.48526355
+1089	 -6.02461841	 -0.00268473	  0.00158564	  7.02193368	  0.99162270	  0.99572963  0.48528757
+1090	 -6.02543391	 -0.00268276	  0.00158466	  7.02275115	  0.99162938	  0.99573258  0.48531151
+1091	 -6.02624690	 -0.00268080	  0.00158368	  7.02356610	  0.99163606	  0.99573552  0.48533539
+1092	 -6.02705738	 -0.00267883	  0.00158270	  7.02437855	  0.99164272	  0.99573847  0.48535919
+1093	 -6.02786537	 -0.00267687	  0.00158172	  7.02518850	  0.99164938	  0.99574141  0.48538292
+1094	 -6.02867087	 -0.00267491	  0.00158074	  7.02599596	  0.99165602	  0.99574434  0.48540659
+1095	 -6.02947389	 -0.00267296	  0.00157977	  7.02680093	  0.99166266	  0.99574728  0.48543018
+1096	 -6.03027443	 -0.00267100	  0.00157879	  7.02760343	  0.99166929	  0.99575021  0.48545370
+1097	 -6.03107251	 -0.00266905	  0.00157781	  7.02840346	  0.99167591	  0.99575314  0.48547716
+1098	 -6.03186812	 -0.00266710	  0.00157684	  7.02920102	  0.99168252	  0.99575606  0.48550054
+1099	 -6.03266127	 -0.00266515	  0.00157586	  7.02999612	  0.99168912	  0.99575899  0.48552386
+1100	 -6.03345198	 -0.00266320	  0.00157489	  7.03078878	  0.99169571	  0.99576191  0.48554710
+1101	 -6.03424025	 -0.00266126	  0.00157391	  7.03157899	  0.99170230	  0.99576483  0.48557028
+1102	 -6.03502608	 -0.00265932	  0.00157294	  7.03236676	  0.99170887	  0.99576774  0.48559339
+1103	 -6.03580948	 -0.00265738	  0.00157197	  7.03315210	  0.99171544	  0.99577065  0.48561643
+1104	 -6.03659046	 -0.00265544	  0.00157100	  7.03393502	  0.99172199	  0.99577356  0.48563940
+1105	 -6.03736903	 -0.00265350	  0.00157002	  7.03471552	  0.99172854	  0.99577647  0.48566231
+1106	 -6.03814518	 -0.00265157	  0.00156905	  7.03549361	  0.99173508	  0.99577938  0.48568514
+1107	 -6.03891894	 -0.00264964	  0.00156808	  7.03626930	  0.99174161	  0.99578228  0.48570791
+1108	 -6.03969029	 -0.00264771	  0.00156711	  7.03704258	  0.99174813	  0.99578518  0.48573061
+1109	 -6.04045926	 -0.00264578	  0.00156614	  7.03781348	  0.99175464	  0.99578807  0.48575324
+1110	 -6.04122585	 -0.00264386	  0.00156517	  7.03858199	  0.99176115	  0.99579097  0.48577581
+1111	 -6.04199006	 -0.00264193	  0.00156421	  7.03934813	  0.99176764	  0.99579386  0.48579831
+1112	 -6.04275190	 -0.00264001	  0.00156324	  7.04011189	  0.99177413	  0.99579675  0.48582075
+1113	 -6.04351138	 -0.00263809	  0.00156227	  7.04087328	  0.99178061	  0.99579964  0.48584311
+1114	 -6.04426850	 -0.00263618	  0.00156130	  7.04163232	  0.99178707	  0.99580252  0.48586541
+1115	 -6.04502327	 -0.00263426	  0.00156034	  7.04238901	  0.99179353	  0.99580540  0.48588765
+1116	 -6.04577570	 -0.00263235	  0.00155937	  7.04314335	  0.99179998	  0.99580828  0.48590981
+1117	 -6.04652579	 -0.00263044	  0.00155841	  7.04389535	  0.99180643	  0.99581115  0.48593191
+1118	 -6.04727354	 -0.00262853	  0.00155744	  7.04464502	  0.99181286	  0.99581403  0.48595395
+1119	 -6.04801898	 -0.00262662	  0.00155648	  7.04539236	  0.99181929	  0.99581690  0.48597592
+1120	 -6.04876210	 -0.00262472	  0.00155552	  7.04613738	  0.99182570	  0.99581977  0.48599782
+1121	 -6.04950290	 -0.00262282	  0.00155455	  7.04688009	  0.99183211	  0.99582263  0.48601966
+1122	 -6.05024140	 -0.00262092	  0.00155359	  7.04762049	  0.99183851	  0.99582549  0.48604144
+1123	 -6.05097760	 -0.00261902	  0.00155263	  7.04835858	  0.99184490	  0.99582835  0.48606315
+1124	 -6.05171151	 -0.00261712	  0.00155167	  7.04909439	  0.99185128	  0.99583121  0.48608479
+1125	 -6.05244313	 -0.00261523	  0.00155071	  7.04982791	  0.99185765	  0.99583407  0.48610637
+1126	 -6.05317248	 -0.00261334	  0.00154975	  7.05055914	  0.99186402	  0.99583692  0.48612789
+1127	 -6.05389955	 -0.00261145	  0.00154879	  7.05128810	  0.99187037	  0.99583977  0.48614934
+1128	 -6.05462435	 -0.00260956	  0.00154783	  7.05201479	  0.99187672	  0.99584261  0.48617073
+1129	 -6.05534689	 -0.00260767	  0.00154687	  7.05273922	  0.99188306	  0.99584546  0.48619205
+1130	 -6.05606718	 -0.00260579	  0.00154591	  7.05346139	  0.99188939	  0.99584830  0.48621331
+1131	 -6.05678521	 -0.00260391	  0.00154495	  7.05418131	  0.99189571	  0.99585114  0.48623450
+1132	 -6.05750101	 -0.00260203	  0.00154400	  7.05489898	  0.99190203	  0.99585398  0.48625564
+1133	 -6.05821457	 -0.00260015	  0.00154304	  7.05561442	  0.99190833	  0.99585681  0.48627671
+1134	 -6.05892590	 -0.00259827	  0.00154209	  7.05632763	  0.99191463	  0.99585964  0.48629772
+1135	 -6.05963501	 -0.00259640	  0.00154113	  7.05703861	  0.99192092	  0.99586247  0.48631866
+1136	 -6.06034190	 -0.00259453	  0.00154018	  7.05774737	  0.99192720	  0.99586529  0.48633954
+1137	 -6.06104657	 -0.00259266	  0.00153922	  7.05845392	  0.99193347	  0.99586812  0.48636036
+1138	 -6.06174905	 -0.00259079	  0.00153827	  7.05915826	  0.99193973	  0.99587094  0.48638112
+1139	 -6.06244932	 -0.00258893	  0.00153732	  7.05986040	  0.99194598	  0.99587376  0.48640181
+1140	 -6.06314740	 -0.00258706	  0.00153637	  7.06056034	  0.99195223	  0.99587657  0.48642244
+1141	 -6.06384330	 -0.00258520	  0.00153541	  7.06125810	  0.99195847	  0.99587938  0.48644301
+1142	 -6.06453701	 -0.00258334	  0.00153446	  7.06195367	  0.99196470	  0.99588220  0.48646352
+1143	 -6.06522855	 -0.00258148	  0.00153351	  7.06264707	  0.99197092	  0.99588500  0.48648397
+1144	 -6.06591793	 -0.00257963	  0.00153256	  7.06333830	  0.99197713	  0.99588781  0.48650436
+1145	 -6.06660514	 -0.00257778	  0.00153161	  7.06402736	  0.99198334	  0.99589061  0.48652468
+1146	 -6.06729019	 -0.00257592	  0.00153067	  7.06471427	  0.99198953	  0.99589341  0.48654494
+1147	 -6.06797309	 -0.00257408	  0.00152972	  7.06539902	  0.99199572	  0.99589621  0.48656515
+1148	 -6.06865385	 -0.00257223	  0.00152877	  7.06608163	  0.99200190	  0.99589900  0.48658529
+1149	 -6.06933248	 -0.00257038	  0.00152782	  7.06676209	  0.99200807	  0.99590179  0.48660537
+1150	 -6.07000896	 -0.00256854	  0.00152688	  7.06744043	  0.99201424	  0.99590458  0.48662539
+1151	 -6.07068333	 -0.00256670	  0.00152593	  7.06811663	  0.99202039	  0.99590737  0.48664535
+1152	 -6.07135557	 -0.00256486	  0.00152499	  7.06879071	  0.99202654	  0.99591015  0.48666525
+1153	 -6.07202570	 -0.00256302	  0.00152404	  7.06946268	  0.99203268	  0.99591294  0.48668509
+1154	 -6.07269372	 -0.00256119	  0.00152310	  7.07013254	  0.99203881	  0.99591572  0.48670487
+1155	 -6.07335964	 -0.00255935	  0.00152215	  7.07080029	  0.99204493	  0.99591849  0.48672460
+1156	 -6.07402346	 -0.00255752	  0.00152121	  7.07146594	  0.99205104	  0.99592127  0.48674426
+1157	 -6.07468520	 -0.00255569	  0.00152027	  7.07212950	  0.99205715	  0.99592404  0.48676386
+1158	 -6.07534484	 -0.00255387	  0.00151933	  7.07279098	  0.99206325	  0.99592681  0.48678341
+1159	 -6.07600241	 -0.00255204	  0.00151839	  7.07345037	  0.99206934	  0.99592957  0.48680289
+1160	 -6.07665791	 -0.00255022	  0.00151745	  7.07410769	  0.99207542	  0.99593234  0.48682232
+1161	 -6.07731134	 -0.00254840	  0.00151651	  7.07476294	  0.99208149	  0.99593510  0.48684169
+1162	 -6.07796271	 -0.00254658	  0.00151557	  7.07541613	  0.99208756	  0.99593786  0.48686100
+1163	 -6.07861202	 -0.00254476	  0.00151463	  7.07606726	  0.99209362	  0.99594061  0.48688025
+1164	 -6.07925928	 -0.00254294	  0.00151369	  7.07671634	  0.99209967	  0.99594336  0.48689944
+1165	 -6.07990450	 -0.00254113	  0.00151275	  7.07736337	  0.99210571	  0.99594612  0.48691858
+1166	 -6.08054769	 -0.00253932	  0.00151182	  7.07800837	  0.99211174	  0.99594886  0.48693766
+1167	 -6.08118884	 -0.00253751	  0.00151088	  7.07865133	  0.99211777	  0.99595161  0.48695668
+1168	 -6.08182796	 -0.00253570	  0.00150994	  7.07929226	  0.99212379	  0.99595435  0.48697564
+1169	 -6.08246507	 -0.00253390	  0.00150901	  7.07993117	  0.99212980	  0.99595709  0.48699454
+1170	 -6.08310016	 -0.00253210	  0.00150807	  7.08056806	  0.99213580	  0.99595983  0.48701339
+1171	 -6.08373324	 -0.00253029	  0.00150714	  7.08120294	  0.99214179	  0.99596257  0.48703218
+1172	 -6.08436431	 -0.00252849	  0.00150621	  7.08183582	  0.99214778	  0.99596530  0.48705092
+1173	 -6.08499339	 -0.00252670	  0.00150527	  7.08246669	  0.99215376	  0.99596803  0.48706960
+1174	 -6.08562048	 -0.00252490	  0.00150434	  7.08309558	  0.99215973	  0.99597076  0.48708821
+1175	 -6.08624558	 -0.00252311	  0.00150341	  7.08372247	  0.99216569	  0.99597348  0.48710678
+1176	 -6.08686870	 -0.00252132	  0.00150248	  7.08434738	  0.99217164	  0.99597620  0.48712529
+1177	 -6.08748985	 -0.00251953	  0.00150155	  7.08497032	  0.99217759	  0.99597892  0.48714374
+1178	 -6.08810902	 -0.00251774	  0.00150062	  7.08559128	  0.99218353	  0.99598164  0.48716214
+1179	 -6.08872624	 -0.00251595	  0.00149969	  7.08621028	  0.99218946	  0.99598436  0.48718048
+1180	 -6.08934149	 -0.00251417	  0.00149876	  7.08682732	  0.99219538	  0.99598707  0.48719876
+1181	 -6.08995479	 -0.00251239	  0.00149784	  7.08744241	  0.99220130	  0.99598978  0.48721699
+1182	 -6.09056615	 -0.00251061	  0.00149691	  7.08805554	  0.99220721	  0.99599248  0.48723517
+1183	 -6.09117556	 -0.00250883	  0.00149598	  7.08866673	  0.99221310	  0.99599519  0.48725329
+1184	 -6.09178304	 -0.00250705	  0.00149506	  7.08927599	  0.99221900	  0.99599789  0.48727135
+1185	 -6.09238859	 -0.00250528	  0.00149413	  7.08988331	  0.99222488	  0.99600059  0.48728936
+1186	 -6.09299221	 -0.00250351	  0.00149320	  7.09048871	  0.99223076	  0.99600329  0.48730732
+1187	 -6.09359392	 -0.00250174	  0.00149228	  7.09109218	  0.99223663	  0.99600598  0.48732522
+1188	 -6.09419371	 -0.00249997	  0.00149136	  7.09169374	  0.99224249	  0.99600867  0.48734306
+1189	 -6.09479159	 -0.00249820	  0.00149043	  7.09229339	  0.99224834	  0.99601136  0.48736085
+1190	 -6.09538757	 -0.00249644	  0.00148951	  7.09289113	  0.99225419	  0.99601405  0.48737859
+1191	 -6.09598165	 -0.00249468	  0.00148859	  7.09348698	  0.99226003	  0.99601673  0.48739628
+1192	 -6.09657385	 -0.00249292	  0.00148767	  7.09408093	  0.99226586	  0.99601942  0.48741390
+1193	 -6.09716415	 -0.00249116	  0.00148675	  7.09467299	  0.99227168	  0.99602210  0.48743148
+1194	 -6.09775257	 -0.00248940	  0.00148583	  7.09526317	  0.99227749	  0.99602477  0.48744900
+1195	 -6.09833912	 -0.00248765	  0.00148491	  7.09585148	  0.99228330	  0.99602745  0.48746647
+1196	 -6.09892380	 -0.00248589	  0.00148399	  7.09643791	  0.99228910	  0.99603012  0.48748389
+1197	 -6.09950662	 -0.00248414	  0.00148307	  7.09702248	  0.99229489	  0.99603279  0.48750125
+1198	 -6.10008757	 -0.00248239	  0.00148215	  7.09760518	  0.99230068	  0.99603545  0.48751856
+1199	 -6.10066667	 -0.00248065	  0.00148124	  7.09818603	  0.99230646	  0.99603812  0.48753582
+1200	 -6.10124393	 -0.00247890	  0.00148032	  7.09876503	  0.99231223	  0.99604078  0.48755302
+1201	 -6.10181934	 -0.00247716	  0.00147941	  7.09934218	  0.99231799	  0.99604344  0.48757018
+1202	 -6.10239291	 -0.00247542	  0.00147849	  7.09991749	  0.99232374	  0.99604609  0.48758728
+1203	 -6.10296465	 -0.00247368	  0.00147758	  7.10049097	  0.99232949	  0.99604875  0.48760432
+1204	 -6.10353456	 -0.00247194	  0.00147666	  7.10106262	  0.99233523	  0.99605140  0.48762132
+1205	 -6.10410265	 -0.00247020	  0.00147575	  7.10163245	  0.99234096	  0.99605405  0.48763826
+1206	 -6.10466892	 -0.00246847	  0.00147484	  7.10220045	  0.99234669	  0.99605669  0.48765516
+1207	 -6.10523338	 -0.00246674	  0.00147393	  7.10276665	  0.99235240	  0.99605934  0.48767200
+1208	 -6.10579604	 -0.00246501	  0.00147301	  7.10333103	  0.99235811	  0.99606198  0.48768879
+1209	 -6.10635689	 -0.00246328	  0.00147210	  7.10389362	  0.99236382	  0.99606462  0.48770552
+1210	 -6.10691595	 -0.00246155	  0.00147119	  7.10445440	  0.99236951	  0.99606725  0.48772221
+1211	 -6.10747322	 -0.00245983	  0.00147028	  7.10501339	  0.99237520	  0.99606989  0.48773885
+1212	 -6.10802871	 -0.00245811	  0.00146937	  7.10557060	  0.99238088	  0.99607252  0.48775543
+1213	 -6.10858241	 -0.00245639	  0.00146847	  7.10612603	  0.99238655	  0.99607515  0.48777197
+1214	 -6.10913434	 -0.00245467	  0.00146756	  7.10667967	  0.99239222	  0.99607777  0.48778845
+1215	 -6.10968450	 -0.00245295	  0.00146665	  7.10723155	  0.99239787	  0.99608040  0.48780488
+1216	 -6.11023289	 -0.00245123	  0.00146575	  7.10778166	  0.99240353	  0.99608302  0.48782127
+1217	 -6.11077953	 -0.00244952	  0.00146484	  7.10833001	  0.99240917	  0.99608564  0.48783760
+1218	 -6.11132441	 -0.00244781	  0.00146393	  7.10887660	  0.99241480	  0.99608825  0.48785388
+1219	 -6.11186754	 -0.00244610	  0.00146303	  7.10942144	  0.99242043	  0.99609087  0.48787012
+1220	 -6.11240893	 -0.00244439	  0.00146213	  7.10996454	  0.99242605	  0.99609348  0.48788630
+1221	 -6.11294858	 -0.00244269	  0.00146122	  7.11050589	  0.99243167	  0.99609609  0.48790243
+1222	 -6.11348649	 -0.00244098	  0.00146032	  7.11104551	  0.99243728	  0.99609869  0.48791852
+1223	 -6.11402268	 -0.00243928	  0.00145942	  7.11158340	  0.99244288	  0.99610130  0.48793455
+1224	 -6.11455714	 -0.00243758	  0.00145852	  7.11211956	  0.99244847	  0.99610390  0.48795053
+1225	 -6.11508989	 -0.00243588	  0.00145762	  7.11265400	  0.99245405	  0.99610650  0.48796647
+1226	 -6.11562092	 -0.00243419	  0.00145672	  7.11318673	  0.99245963	  0.99610909  0.48798236
+1227	 -6.11615024	 -0.00243249	  0.00145582	  7.11371775	  0.99246520	  0.99611169  0.48799820
+1228	 -6.11667786	 -0.00243080	  0.00145492	  7.11424706	  0.99247077	  0.99611428  0.48801399
+1229	 -6.11720378	 -0.00242911	  0.00145402	  7.11477467	  0.99247632	  0.99611687  0.48802973
+1230	 -6.11772800	 -0.00242742	  0.00145312	  7.11530058	  0.99248187	  0.99611945  0.48804543
+1231	 -6.11825054	 -0.00242574	  0.00145223	  7.11582481	  0.99248741	  0.99612204  0.48806107
+1232	 -6.11877140	 -0.00242405	  0.00145133	  7.11634735	  0.99249295	  0.99612462  0.48807667
+1233	 -6.11929057	 -0.00242237	  0.00145043	  7.11686820	  0.99249847	  0.99612720  0.48809222
+1234	 -6.11980807	 -0.00242069	  0.00144954	  7.11738739	  0.99250400	  0.99612978  0.48810772
+1235	 -6.12032390	 -0.00241901	  0.00144864	  7.11790490	  0.99250951	  0.99613235  0.48812317
+1236	 -6.12083807	 -0.00241733	  0.00144775	  7.11842074	  0.99251501	  0.99613492  0.48813858
+1237	 -6.12135058	 -0.00241565	  0.00144686	  7.11893493	  0.99252051	  0.99613749  0.48815394
+1238	 -6.12186144	 -0.00241398	  0.00144597	  7.11944746	  0.99252601	  0.99614006  0.48816925
+1239	 -6.12237064	 -0.00241231	  0.00144507	  7.11995834	  0.99253149	  0.99614262  0.48818451
+1240	 -6.12287820	 -0.00241064	  0.00144418	  7.12046757	  0.99253697	  0.99614518  0.48819973
+1241	 -6.12338412	 -0.00240897	  0.00144329	  7.12097516	  0.99254244	  0.99614774  0.48821490
+1242	 -6.12388841	 -0.00240730	  0.00144240	  7.12148111	  0.99254790	  0.99615030  0.48823002
+1243	 -6.12439107	 -0.00240563	  0.00144151	  7.12198543	  0.99255336	  0.99615285  0.48824510
+1244	 -6.12489210	 -0.00240397	  0.00144062	  7.12248813	  0.99255881	  0.99615540  0.48826013
+1245	 -6.12539151	 -0.00240231	  0.00143974	  7.12298920	  0.99256425	  0.99615795  0.48827512
+1246	 -6.12588931	 -0.00240065	  0.00143885	  7.12348866	  0.99256969	  0.99616050  0.48829005
+1247	 -6.12638549	 -0.00239899	  0.00143796	  7.12398650	  0.99257512	  0.99616304  0.48830495
+1248	 -6.12688007	 -0.00239734	  0.00143708	  7.12448273	  0.99258054	  0.99616559  0.48831979
+1249	 -6.12737305	 -0.00239568	  0.00143619	  7.12497736	  0.99258596	  0.99616813  0.48833460
+1250	 -6.12786443	 -0.00239403	  0.00143531	  7.12547040	  0.99259136	  0.99617066  0.48834935
+1251	 -6.12835422	 -0.00239238	  0.00143442	  7.12596184	  0.99259676	  0.99617320  0.48836406
+1252	 -6.12884242	 -0.00239073	  0.00143354	  7.12645169	  0.99260216	  0.99617573  0.48837872
+1253	 -6.12932904	 -0.00238908	  0.00143266	  7.12693996	  0.99260755	  0.99617826  0.48839334
+1254	 -6.12981408	 -0.00238744	  0.00143177	  7.12742664	  0.99261293	  0.99618079  0.48840792
+1255	 -6.13029755	 -0.00238580	  0.00143089	  7.12791176	  0.99261830	  0.99618331  0.48842244
+1256	 -6.13077945	 -0.00238416	  0.00143001	  7.12839530	  0.99262367	  0.99618583  0.48843693
+1257	 -6.13125979	 -0.00238252	  0.00142913	  7.12887728	  0.99262903	  0.99618835  0.48845136
+1258	 -6.13173857	 -0.00238088	  0.00142825	  7.12935769	  0.99263438	  0.99619087  0.48846576
+1259	 -6.13221579	 -0.00237924	  0.00142737	  7.12983655	  0.99263972	  0.99619339  0.48848011
+1260	 -6.13269147	 -0.00237761	  0.00142649	  7.13031386	  0.99264506	  0.99619590  0.48849441
+1261	 -6.13316560	 -0.00237598	  0.00142562	  7.13078962	  0.99265040	  0.99619841  0.48850867
+1262	 -6.13363819	 -0.00237434	  0.00142474	  7.13126384	  0.99265572	  0.99620092  0.48852289
+1263	 -6.13410924	 -0.00237272	  0.00142386	  7.13173652	  0.99266104	  0.99620342  0.48853706
+1264	 -6.13457876	 -0.00237109	  0.00142299	  7.13220767	  0.99266635	  0.99620593  0.48855119
+1265	 -6.13504676	 -0.00236946	  0.00142211	  7.13267729	  0.99267166	  0.99620843  0.48856528
+1266	 -6.13551323	 -0.00236784	  0.00142124	  7.13314539	  0.99267696	  0.99621092  0.48857932
+1267	 -6.13597818	 -0.00236622	  0.00142036	  7.13361197	  0.99268225	  0.99621342  0.48859332
+1268	 -6.13644163	 -0.00236460	  0.00141949	  7.13407703	  0.99268753	  0.99621591  0.48860727
+1269	 -6.13690356	 -0.00236298	  0.00141862	  7.13454058	  0.99269281	  0.99621840  0.48862118
+1270	 -6.13736399	 -0.00236136	  0.00141774	  7.13500263	  0.99269808	  0.99622089  0.48863505
+1271	 -6.13782292	 -0.00235975	  0.00141687	  7.13546317	  0.99270335	  0.99622338  0.48864888
+1272	 -6.13828035	 -0.00235814	  0.00141600	  7.13592222	  0.99270861	  0.99622586  0.48866266
+1273	 -6.13873630	 -0.00235652	  0.00141513	  7.13637977	  0.99271386	  0.99622834  0.48867640
+1274	 -6.13919076	 -0.00235492	  0.00141426	  7.13683584	  0.99271910	  0.99623082  0.48869010
+1275	 -6.13964373	 -0.00235331	  0.00141339	  7.13729042	  0.99272434	  0.99623330  0.48870375
+1276	 -6.14009523	 -0.00235170	  0.00141253	  7.13774353	  0.99272957	  0.99623577  0.48871736
+1277	 -6.14054526	 -0.00235010	  0.00141166	  7.13819516	  0.99273480	  0.99623824  0.48873093
+1278	 -6.14099381	 -0.00234850	  0.00141079	  7.13864532	  0.99274001	  0.99624071  0.48874446
+1279	 -6.14144091	 -0.00234689	  0.00140993	  7.13909401	  0.99274523	  0.99624318  0.48875794
+1280	 -6.14188654	 -0.00234530	  0.00140906	  7.13954125	  0.99275043	  0.99624564  0.48877139
+1281	 -6.14233072	 -0.00234370	  0.00140820	  7.13998702	  0.99275563	  0.99624811  0.48878479
+1282	 -6.14277345	 -0.00234210	  0.00140733	  7.14043134	  0.99276082	  0.99625057  0.48879815
+1283	 -6.14321473	 -0.00234051	  0.00140647	  7.14087422	  0.99276601	  0.99625302  0.48881147
+1284	 -6.14365457	 -0.00233892	  0.00140561	  7.14131565	  0.99277118	  0.99625548  0.48882475
+1285	 -6.14409297	 -0.00233733	  0.00140474	  7.14175564	  0.99277636	  0.99625793  0.48883798
+1286	 -6.14452994	 -0.00233574	  0.00140388	  7.14219420	  0.99278152	  0.99626038  0.48885118
+1287	 -6.14496548	 -0.00233415	  0.00140302	  7.14263132	  0.99278668	  0.99626283  0.48886433
+1288	 -6.14539959	 -0.00233257	  0.00140216	  7.14306702	  0.99279183	  0.99626527  0.48887745
+1289	 -6.14583228	 -0.00233098	  0.00140130	  7.14350130	  0.99279698	  0.99626772  0.48889052
+1290	 -6.14626356	 -0.00232940	  0.00140044	  7.14393416	  0.99280212	  0.99627016  0.48890355
+1291	 -6.14669342	 -0.00232782	  0.00139958	  7.14436560	  0.99280725	  0.99627259  0.48891654
+1292	 -6.14712188	 -0.00232625	  0.00139873	  7.14479564	  0.99281238	  0.99627503  0.48892949
+1293	 -6.14754894	 -0.00232467	  0.00139787	  7.14522427	  0.99281750	  0.99627746  0.48894240
+1294	 -6.14797459	 -0.00232309	  0.00139701	  7.14565150	  0.99282261	  0.99627989  0.48895527
+1295	 -6.14839885	 -0.00232152	  0.00139616	  7.14607733	  0.99282772	  0.99628232  0.48896810
+1296	 -6.14882172	 -0.00231995	  0.00139530	  7.14650177	  0.99283282	  0.99628475  0.48898089
+1297	 -6.14924320	 -0.00231838	  0.00139445	  7.14692482	  0.99283791	  0.99628717  0.48899364
+1298	 -6.14966330	 -0.00231681	  0.00139359	  7.14734649	  0.99284300	  0.99628959  0.48900634
+1299	 -6.15008202	 -0.00231525	  0.00139274	  7.14776677	  0.99284808	  0.99629201  0.48901902
+1300	 -6.15049937	 -0.00231368	  0.00139189	  7.14818569	  0.99285316	  0.99629443  0.48903165
+1301	 -6.15091535	 -0.00231212	  0.00139104	  7.14860323	  0.99285823	  0.99629684  0.48904424
+1302	 -6.15132996	 -0.00231056	  0.00139018	  7.14901940	  0.99286329	  0.99629926  0.48905679
+1303	 -6.15174321	 -0.00230900	  0.00138933	  7.14943421	  0.99286834	  0.99630166  0.48906930
+1304	 -6.15215510	 -0.00230744	  0.00138848	  7.14984766	  0.99287339	  0.99630407  0.48908178
+1305	 -6.15256564	 -0.00230589	  0.00138763	  7.15025975	  0.99287844	  0.99630648  0.48909421
+1306	 -6.15297483	 -0.00230433	  0.00138679	  7.15067050	  0.99288347	  0.99630888  0.48910661
+1307	 -6.15338268	 -0.00230278	  0.00138594	  7.15107989	  0.99288850	  0.99631128  0.48911897
+1308	 -6.15378918	 -0.00230123	  0.00138509	  7.15148795	  0.99289353	  0.99631368  0.48913128
+1309	 -6.15419435	 -0.00229968	  0.00138424	  7.15189467	  0.99289855	  0.99631607  0.48914356
+1310	 -6.15459818	 -0.00229814	  0.00138340	  7.15230005	  0.99290356	  0.99631847  0.48915581
+1311	 -6.15500069	 -0.00229659	  0.00138255	  7.15270410	  0.99290856	  0.99632086  0.48916801
+1312	 -6.15540187	 -0.00229505	  0.00138171	  7.15310682	  0.99291356	  0.99632324  0.48918017
+1313	 -6.15580173	 -0.00229350	  0.00138087	  7.15350822	  0.99291855	  0.99632563  0.48919230
+1314	 -6.15620027	 -0.00229196	  0.00138002	  7.15390831	  0.99292354	  0.99632801  0.48920439
+1315	 -6.15659750	 -0.00229042	  0.00137918	  7.15430708	  0.99292852	  0.99633040  0.48921644
+1316	 -6.15699342	 -0.00228889	  0.00137834	  7.15470454	  0.99293349	  0.99633278  0.48922846
+1317	 -6.15738804	 -0.00228735	  0.00137750	  7.15510069	  0.99293846	  0.99633515  0.48924043
+1318	 -6.15778136	 -0.00228582	  0.00137666	  7.15549554	  0.99294342	  0.99633753  0.48925237
+1319	 -6.15817338	 -0.00228429	  0.00137582	  7.15588909	  0.99294838	  0.99633990  0.48926427
+1320	 -6.15856410	 -0.00228276	  0.00137498	  7.15628135	  0.99295333	  0.99634227  0.48927613
+1321	 -6.15895354	 -0.00228123	  0.00137414	  7.15667231	  0.99295827	  0.99634464  0.48928796
+1322	 -6.15934170	 -0.00227970	  0.00137330	  7.15706199	  0.99296321	  0.99634700  0.48929975
+1323	 -6.15972857	 -0.00227818	  0.00137246	  7.15745039	  0.99296814	  0.99634936  0.48931151
+1324	 -6.16011416	 -0.00227665	  0.00137162	  7.15783751	  0.99297306	  0.99635172  0.48932322
+1325	 -6.16049848	 -0.00227513	  0.00137079	  7.15822335	  0.99297798	  0.99635408  0.48933490
+1326	 -6.16088154	 -0.00227361	  0.00136995	  7.15860793	  0.99298289	  0.99635644  0.48934654
+1327	 -6.16126332	 -0.00227209	  0.00136912	  7.15899123	  0.99298780	  0.99635879  0.48935815
+1328	 -6.16164385	 -0.00227057	  0.00136828	  7.15937328	  0.99299270	  0.99636114  0.48936972
+1329	 -6.16202312	 -0.00226906	  0.00136745	  7.15975406	  0.99299759	  0.99636349  0.48938125
+1330	 -6.16240113	 -0.00226754	  0.00136662	  7.16013359	  0.99300248	  0.99636584  0.48939275
+1331	 -6.16277790	 -0.00226603	  0.00136579	  7.16051186	  0.99300736	  0.99636818  0.48940421
+1332	 -6.16315341	 -0.00226452	  0.00136495	  7.16088889	  0.99301224	  0.99637052  0.48941563
+1333	 -6.16352769	 -0.00226301	  0.00136412	  7.16126468	  0.99301711	  0.99637286  0.48942702
+1334	 -6.16390073	 -0.00226151	  0.00136329	  7.16163922	  0.99302197	  0.99637520  0.48943837
+1335	 -6.16427253	 -0.00226000	  0.00136246	  7.16201253	  0.99302683	  0.99637753  0.48944969
+1336	 -6.16464310	 -0.00225850	  0.00136164	  7.16238461	  0.99303168	  0.99637987  0.48946098
+1337	 -6.16501245	 -0.00225700	  0.00136081	  7.16275545	  0.99303653	  0.99638220  0.48947222
+1338	 -6.16538057	 -0.00225549	  0.00135998	  7.16312507	  0.99304136	  0.99638453  0.48948343
+1339	 -6.16574747	 -0.00225400	  0.00135915	  7.16349348	  0.99304620	  0.99638685  0.48949461
+1340	 -6.16611316	 -0.00225250	  0.00135833	  7.16386066	  0.99305103	  0.99638918  0.48950575
+1341	 -6.16647763	 -0.00225100	  0.00135750	  7.16422663	  0.99305585	  0.99639150  0.48951685
+1342	 -6.16684090	 -0.00224951	  0.00135668	  7.16459139	  0.99306066	  0.99639382  0.48952792
+1343	 -6.16720296	 -0.00224802	  0.00135585	  7.16495494	  0.99306547	  0.99639613  0.48953896
+1344	 -6.16756382	 -0.00224653	  0.00135503	  7.16531729	  0.99307027	  0.99639845  0.48954996
+1345	 -6.16792348	 -0.00224504	  0.00135421	  7.16567845	  0.99307507	  0.99640076  0.48956093
+1346	 -6.16828195	 -0.00224355	  0.00135338	  7.16603840	  0.99307986	  0.99640307  0.48957186
+1347	 -6.16863923	 -0.00224206	  0.00135256	  7.16639717	  0.99308465	  0.99640538  0.48958276
+1348	 -6.16899533	 -0.00224058	  0.00135174	  7.16675475	  0.99308943	  0.99640768  0.48959363
+1349	 -6.16935024	 -0.00223910	  0.00135092	  7.16711114	  0.99309420	  0.99640998  0.48960445
+1350	 -6.16970397	 -0.00223762	  0.00135010	  7.16746636	  0.99309897	  0.99641228  0.48961525
+1351	 -6.17005653	 -0.00223614	  0.00134928	  7.16782039	  0.99310373	  0.99641458  0.48962601
+1352	 -6.17040791	 -0.00223466	  0.00134846	  7.16817326	  0.99310849	  0.99641688  0.48963673
+1353	 -6.17075813	 -0.00223318	  0.00134765	  7.16852495	  0.99311324	  0.99641917  0.48964743
+1354	 -6.17110719	 -0.00223171	  0.00134683	  7.16887548	  0.99311798	  0.99642146  0.48965809
+1355	 -6.17145508	 -0.00223024	  0.00134601	  7.16922484	  0.99312272	  0.99642375  0.48966871
+1356	 -6.17180182	 -0.00222876	  0.00134520	  7.16957305	  0.99312745	  0.99642604  0.48967931
+1357	 -6.17214740	 -0.00222729	  0.00134438	  7.16992010	  0.99313218	  0.99642832  0.48968987
+1358	 -6.17249183	 -0.00222583	  0.00134357	  7.17026601	  0.99313690	  0.99643061  0.48970039
+1359	 -6.17283512	 -0.00222436	  0.00134275	  7.17061076	  0.99314162	  0.99643289  0.48971088
+1360	 -6.17317726	 -0.00222289	  0.00134194	  7.17095437	  0.99314633	  0.99643517  0.48972134
+1361	 -6.17351827	 -0.00222143	  0.00134113	  7.17129683	  0.99315103	  0.99643744  0.48973177
+1362	 -6.17385813	 -0.00221997	  0.00134032	  7.17163816	  0.99315573	  0.99643971  0.48974217
+1363	 -6.17419687	 -0.00221851	  0.00133950	  7.17197836	  0.99316042	  0.99644199  0.48975252
+1364	 -6.17453448	 -0.00221705	  0.00133869	  7.17231743	  0.99316511	  0.99644425  0.48976285
+1365	 -6.17487096	 -0.00221559	  0.00133788	  7.17265537	  0.99316979	  0.99644652  0.48977314
+1366	 -6.17520632	 -0.00221414	  0.00133708	  7.17299218	  0.99317446	  0.99644879  0.48978341
+1367	 -6.17554056	 -0.00221269	  0.00133627	  7.17332788	  0.99317913	  0.99645105  0.48979364
+1368	 -6.17587369	 -0.00221123	  0.00133546	  7.17366246	  0.99318379	  0.99645331  0.48980384
+1369	 -6.17620571	 -0.00220978	  0.00133465	  7.17399593	  0.99318845	  0.99645557  0.48981400
+1370	 -6.17653662	 -0.00220833	  0.00133385	  7.17432829	  0.99319310	  0.99645782  0.48982414
+1371	 -6.17686642	 -0.00220689	  0.00133304	  7.17465954	  0.99319775	  0.99646007  0.48983424
+1372	 -6.17719513	 -0.00220544	  0.00133223	  7.17498969	  0.99320239	  0.99646233  0.48984431
+1373	 -6.17752273	 -0.00220400	  0.00133143	  7.17531874	  0.99320702	  0.99646457  0.48985434
+1374	 -6.17784925	 -0.00220255	  0.00133063	  7.17564669	  0.99321165	  0.99646682  0.48986435
+1375	 -6.17817467	 -0.00220111	  0.00132982	  7.17597356	  0.99321628	  0.99646906  0.48987432
+1376	 -6.17849900	 -0.00219967	  0.00132902	  7.17629933	  0.99322089	  0.99647131  0.48988427
+1377	 -6.17882225	 -0.00219823	  0.00132822	  7.17662402	  0.99322551	  0.99647355  0.48989418
+1378	 -6.17914442	 -0.00219680	  0.00132742	  7.17694762	  0.99323011	  0.99647578  0.48990406
+1379	 -6.17946552	 -0.00219536	  0.00132662	  7.17727015	  0.99323471	  0.99647802  0.48991391
+1380	 -6.17978554	 -0.00219393	  0.00132582	  7.17759161	  0.99323931	  0.99648025  0.48992373
+1381	 -6.18010448	 -0.00219250	  0.00132502	  7.17791199	  0.99324390	  0.99648248  0.48993351
+1382	 -6.18042237	 -0.00219107	  0.00132422	  7.17823130	  0.99324848	  0.99648471  0.48994327
+1383	 -6.18073919	 -0.00218964	  0.00132342	  7.17854955	  0.99325306	  0.99648694  0.48995299
+1384	 -6.18105494	 -0.00218821	  0.00132262	  7.17886673	  0.99325763	  0.99648916  0.48996269
+1385	 -6.18136964	 -0.00218679	  0.00132183	  7.17918286	  0.99326220	  0.99649139  0.48997235
+1386	 -6.18168329	 -0.00218536	  0.00132103	  7.17949793	  0.99326676	  0.99649361  0.48998198
+1387	 -6.18199589	 -0.00218394	  0.00132024	  7.17981195	  0.99327132	  0.99649582  0.48999158
+1388	 -6.18230744	 -0.00218252	  0.00131944	  7.18012492	  0.99327587	  0.99649804  0.49000115
+1389	 -6.18261795	 -0.00218110	  0.00131865	  7.18043684	  0.99328041	  0.99650025  0.49001070
+1390	 -6.18292741	 -0.00217968	  0.00131785	  7.18074773	  0.99328495	  0.99650246  0.49002020
+1391	 -6.18323584	 -0.00217827	  0.00131706	  7.18105757	  0.99328949	  0.99650467  0.49002969
+1392	 -6.18354323	 -0.00217685	  0.00131627	  7.18136638	  0.99329401	  0.99650688  0.49003913
+1393	 -6.18384960	 -0.00217544	  0.00131548	  7.18167416	  0.99329854	  0.99650908  0.49004855
+1394	 -6.18415493	 -0.00217403	  0.00131469	  7.18198091	  0.99330305	  0.99651129  0.49005794
+1395	 -6.18445924	 -0.00217262	  0.00131390	  7.18228663	  0.99330757	  0.99651349  0.49006730
+1396	 -6.18476253	 -0.00217121	  0.00131311	  7.18259133	  0.99331207	  0.99651568  0.49007664
+1397	 -6.18506481	 -0.00216980	  0.00131232	  7.18289501	  0.99331657	  0.99651788  0.49008594
+1398	 -6.18536606	 -0.00216840	  0.00131153	  7.18319767	  0.99332107	  0.99652007  0.49009521
+1399	 -6.18566631	 -0.00216699	  0.00131074	  7.18349932	  0.99332556	  0.99652226  0.49010445
+1400	 -6.18596555	 -0.00216559	  0.00130996	  7.18379996	  0.99333004	  0.99652445  0.49011367
+1401	 -6.18626378	 -0.00216419	  0.00130917	  7.18409959	  0.99333452	  0.99652664  0.49012285
+1402	 -6.18656101	 -0.00216279	  0.00130839	  7.18439822	  0.99333900	  0.99652882  0.49013200
+1403	 -6.18685724	 -0.00216139	  0.00130760	  7.18469585	  0.99334346	  0.99653101  0.49014113
+1404	 -6.18715248	 -0.00216000	  0.00130682	  7.18499249	  0.99334793	  0.99653319  0.49015022
+1405	 -6.18744673	 -0.00215860	  0.00130603	  7.18528812	  0.99335238	  0.99653537  0.49015929
+1406	 -6.18773998	 -0.00215721	  0.00130525	  7.18558277	  0.99335684	  0.99653754  0.49016833
+1407	 -6.18803225	 -0.00215582	  0.00130447	  7.18587643	  0.99336128	  0.99653972  0.49017734
+1408	 -6.18832353	 -0.00215443	  0.00130369	  7.18616911	  0.99336572	  0.99654189  0.49018632
+1409	 -6.18861384	 -0.00215304	  0.00130291	  7.18646080	  0.99337016	  0.99654406  0.49019527
+1410	 -6.18890316	 -0.00215165	  0.00130213	  7.18675152	  0.99337459	  0.99654622  0.49020420
+1411	 -6.18919152	 -0.00215026	  0.00130135	  7.18704125	  0.99337901	  0.99654839  0.49021309
+1412	 -6.18947890	 -0.00214888	  0.00130057	  7.18733002	  0.99338343	  0.99655055  0.49022196
+1413	 -6.18976532	 -0.00214750	  0.00129979	  7.18761782	  0.99338785	  0.99655271  0.49023080
+1414	 -6.19005077	 -0.00214612	  0.00129901	  7.18790465	  0.99339226	  0.99655487  0.49023961
+1415	 -6.19033526	 -0.00214474	  0.00129823	  7.18819052	  0.99339666	  0.99655703  0.49024839
+1416	 -6.19061879	 -0.00214336	  0.00129746	  7.18847543	  0.99340106	  0.99655918  0.49025714
+1417	 -6.19090136	 -0.00214198	  0.00129668	  7.18875938	  0.99340545	  0.99656134  0.49026588
+1418	 -6.19118298	 -0.00214061	  0.00129591	  7.18904238	  0.99340984	  0.99656349  0.49027457
+1419	 -6.19146366	 -0.00213923	  0.00129513	  7.18932442	  0.99341422	  0.99656563  0.49028324
+1420	 -6.19174338	 -0.00213786	  0.00129436	  7.18960552	  0.99341860	  0.99656778  0.49029189
+1421	 -6.19202217	 -0.00213649	  0.00129359	  7.18988568	  0.99342297	  0.99656992  0.49030051
+1422	 -6.19230001	 -0.00213512	  0.00129281	  7.19016489	  0.99342734	  0.99657207  0.49030909
+1423	 -6.19257691	 -0.00213375	  0.00129204	  7.19044316	  0.99343170	  0.99657421  0.49031766
+1424	 -6.19285288	 -0.00213239	  0.00129127	  7.19072050	  0.99343606	  0.99657634  0.49032619
+1425	 -6.19312792	 -0.00213102	  0.00129050	  7.19099690	  0.99344041	  0.99657848  0.49033470
+1426	 -6.19340203	 -0.00212966	  0.00128973	  7.19127237	  0.99344475	  0.99658061  0.49034317
+1427	 -6.19367521	 -0.00212830	  0.00128896	  7.19154692	  0.99344909	  0.99658274  0.49035163
+1428	 -6.19394748	 -0.00212694	  0.00128819	  7.19182054	  0.99345343	  0.99658487  0.49036006
+1429	 -6.19421882	 -0.00212558	  0.00128743	  7.19209324	  0.99345776	  0.99658700  0.49036845
+1430	 -6.19448924	 -0.00212422	  0.00128666	  7.19236502	  0.99346208	  0.99658912  0.49037683
+1431	 -6.19475875	 -0.00212286	  0.00128589	  7.19263589	  0.99346640	  0.99659124  0.49038517
+1432	 -6.19502735	 -0.00212151	  0.00128513	  7.19290584	  0.99347072	  0.99659336  0.49039349
+1433	 -6.19529504	 -0.00212016	  0.00128436	  7.19317489	  0.99347503	  0.99659548  0.49040178
+1434	 -6.19556183	 -0.00211880	  0.00128360	  7.19344302	  0.99347933	  0.99659760  0.49041005
+1435	 -6.19582771	 -0.00211745	  0.00128283	  7.19371026	  0.99348363	  0.99659971  0.49041829
+1436	 -6.19609270	 -0.00211611	  0.00128207	  7.19397659	  0.99348792	  0.99660182  0.49042650
+1437	 -6.19635678	 -0.00211476	  0.00128131	  7.19424203	  0.99349221	  0.99660393  0.49043469
+1438	 -6.19661998	 -0.00211341	  0.00128054	  7.19450656	  0.99349650	  0.99660604  0.49044285
+1439	 -6.19688228	 -0.00211207	  0.00127978	  7.19477021	  0.99350077	  0.99660815  0.49045099
+1440	 -6.19714369	 -0.00211073	  0.00127902	  7.19503297	  0.99350505	  0.99661025  0.49045909
+1441	 -6.19740422	 -0.00210938	  0.00127826	  7.19529484	  0.99350932	  0.99661235  0.49046717
+1442	 -6.19766387	 -0.00210804	  0.00127750	  7.19555583	  0.99351358	  0.99661445  0.49047523
+1443	 -6.19792264	 -0.00210671	  0.00127674	  7.19581593	  0.99351784	  0.99661655  0.49048326
+1444	 -6.19818053	 -0.00210537	  0.00127599	  7.19607516	  0.99352209	  0.99661864  0.49049127
+1445	 -6.19843754	 -0.00210403	  0.00127523	  7.19633351	  0.99352634	  0.99662074  0.49049925
+1446	 -6.19869369	 -0.00210270	  0.00127447	  7.19659099	  0.99353058	  0.99662283  0.49050720
+1447	 -6.19894896	 -0.00210137	  0.00127372	  7.19684760	  0.99353482	  0.99662492  0.49051513
+1448	 -6.19920337	 -0.00210004	  0.00127296	  7.19710334	  0.99353905	  0.99662700  0.49052303
+1449	 -6.19945692	 -0.00209871	  0.00127221	  7.19735822	  0.99354328	  0.99662909  0.49053091
+1450	 -6.19970961	 -0.00209738	  0.00127145	  7.19761223	  0.99354750	  0.99663117  0.49053876
+1451	 -6.19996144	 -0.00209605	  0.00127070	  7.19786539	  0.99355172	  0.99663325  0.49054659
+1452	 -6.20021242	 -0.00209473	  0.00126995	  7.19811769	  0.99355593	  0.99663533  0.49055439
+1453	 -6.20046254	 -0.00209340	  0.00126919	  7.19836914	  0.99356014	  0.99663741  0.49056217
+1454	 -6.20071181	 -0.00209208	  0.00126844	  7.19861973	  0.99356434	  0.99663948  0.49056992
+1455	 -6.20096024	 -0.00209076	  0.00126769	  7.19886948	  0.99356854	  0.99664155  0.49057765
+1456	 -6.20120782	 -0.00208944	  0.00126694	  7.19911839	  0.99357273	  0.99664362  0.49058536
+1457	 -6.20145457	 -0.00208812	  0.00126619	  7.19936645	  0.99357692	  0.99664569  0.49059304
+1458	 -6.20170047	 -0.00208680	  0.00126544	  7.19961367	  0.99358110	  0.99664776  0.49060069
+1459	 -6.20194554	 -0.00208549	  0.00126469	  7.19986005	  0.99358528	  0.99664982  0.49060832
+1460	 -6.20218978	 -0.00208417	  0.00126395	  7.20010560	  0.99358945	  0.99665188  0.49061593
+1461	 -6.20243318	 -0.00208286	  0.00126320	  7.20035032	  0.99359362	  0.99665394  0.49062351
+1462	 -6.20267576	 -0.00208155	  0.00126245	  7.20059421	  0.99359778	  0.99665600  0.49063106
+1463	 -6.20291751	 -0.00208024	  0.00126171	  7.20083727	  0.99360194	  0.99665805  0.49063859
+1464	 -6.20315844	 -0.00207893	  0.00126096	  7.20107951	  0.99360609	  0.99666011  0.49064611
+1465	 -6.20339855	 -0.00207762	  0.00126022	  7.20132093	  0.99361024	  0.99666216  0.49065358
+1466	 -6.20363785	 -0.00207632	  0.00125947	  7.20156153	  0.99361438	  0.99666421  0.49066104
+1467	 -6.20387633	 -0.00207501	  0.00125873	  7.20180131	  0.99361852	  0.99666626  0.49066848
+1468	 -6.20411399	 -0.00207371	  0.00125799	  7.20204028	  0.99362265	  0.99666830  0.49067589
+1469	 -6.20435085	 -0.00207241	  0.00125725	  7.20227844	  0.99362678	  0.99667034  0.49068328
+1470	 -6.20458690	 -0.00207111	  0.00125650	  7.20251579	  0.99363090	  0.99667238  0.49069064
+1471	 -6.20482215	 -0.00206981	  0.00125576	  7.20275234	  0.99363502	  0.99667442  0.49069799
+1472	 -6.20505660	 -0.00206852	  0.00125502	  7.20298808	  0.99363914	  0.99667646  0.49070530
+1473	 -6.20529024	 -0.00206722	  0.00125428	  7.20322302	  0.99364325	  0.99667850  0.49071260
+1474	 -6.20552310	 -0.00206593	  0.00125355	  7.20345717	  0.99364735	  0.99668053  0.49071987
+1475	 -6.20575515	 -0.00206463	  0.00125281	  7.20369052	  0.99365145	  0.99668256  0.49072711
+1476	 -6.20598642	 -0.00206334	  0.00125207	  7.20392308	  0.99365554	  0.99668459  0.49073434
+1477	 -6.20621690	 -0.00206205	  0.00125133	  7.20415485	  0.99365963	  0.99668662  0.49074154
+1478	 -6.20644659	 -0.00206076	  0.00125060	  7.20438583	  0.99366372	  0.99668864  0.49074872
+1479	 -6.20667550	 -0.00205947	  0.00124986	  7.20461602	  0.99366780	  0.99669066  0.49075587
+1480	 -6.20690362	 -0.00205819	  0.00124913	  7.20484543	  0.99367187	  0.99669268  0.49076300
+1481	 -6.20713097	 -0.00205690	  0.00124839	  7.20507407	  0.99367594	  0.99669470  0.49077011
+1482	 -6.20735754	 -0.00205562	  0.00124766	  7.20530192	  0.99368001	  0.99669672  0.49077720
+1483	 -6.20758334	 -0.00205434	  0.00124693	  7.20552900	  0.99368407	  0.99669873  0.49078426
+1484	 -6.20780837	 -0.00205306	  0.00124619	  7.20575531	  0.99368812	  0.99670075  0.49079130
+1485	 -6.20803263	 -0.00205178	  0.00124546	  7.20598085	  0.99369217	  0.99670276  0.49079832
+1486	 -6.20825612	 -0.00205050	  0.00124473	  7.20620562	  0.99369622	  0.99670477  0.49080531
+1487	 -6.20847885	 -0.00204923	  0.00124400	  7.20642963	  0.99370026	  0.99670677  0.49081228
+1488	 -6.20870082	 -0.00204795	  0.00124327	  7.20665287	  0.99370430	  0.99670878  0.49081924
+1489	 -6.20892203	 -0.00204668	  0.00124254	  7.20687536	  0.99370833	  0.99671078  0.49082617
+1490	 -6.20914249	 -0.00204540	  0.00124181	  7.20709708	  0.99371236	  0.99671278  0.49083307
+1491	 -6.20936219	 -0.00204413	  0.00124109	  7.20731805	  0.99371638	  0.99671478  0.49083996
+1492	 -6.20958114	 -0.00204286	  0.00124036	  7.20753827	  0.99372040	  0.99671678  0.49084681
+1493	 -6.20979934	 -0.00204160	  0.00123963	  7.20775774	  0.99372441	  0.99671877  0.49085365
+1494	 -6.21001679	 -0.00204033	  0.00123891	  7.20797646	  0.99372842	  0.99672076  0.49086047
+1495	 -6.21023350	 -0.00203906	  0.00123818	  7.20819444	  0.99373242	  0.99672275  0.49086727
+1496	 -6.21044947	 -0.00203780	  0.00123746	  7.20841167	  0.99373642	  0.99672474  0.49087404
+1497	 -6.21066470	 -0.00203654	  0.00123673	  7.20862816	  0.99374042	  0.99672673  0.49088079
+1498	 -6.21087920	 -0.00203528	  0.00123601	  7.20884392	  0.99374441	  0.99672871  0.49088752
+1499	 -6.21109295	 -0.00203402	  0.00123529	  7.20905894	  0.99374839	  0.99673070  0.49089423
+1500	 -6.21130598	 -0.00203276	  0.00123456	  7.20927322	  0.99375237	  0.99673268  0.49090092
+1501	 -6.21151828	 -0.00203150	  0.00123384	  7.20948678	  0.99375635	  0.99673466  0.49090759
+1502	 -6.21172985	 -0.00203024	  0.00123312	  7.20969960	  0.99376032	  0.99673663  0.49091423
+1503	 -6.21194069	 -0.00202899	  0.00123240	  7.20991170	  0.99376428	  0.99673861  0.49092085
+1504	 -6.21215082	 -0.00202774	  0.00123168	  7.21012308	  0.99376825	  0.99674058  0.49092745
+1505	 -6.21236022	 -0.00202648	  0.00123096	  7.21033373	  0.99377220	  0.99674255  0.49093403
+1506	 -6.21256890	 -0.00202523	  0.00123025	  7.21054367	  0.99377616	  0.99674452  0.49094059
+1507	 -6.21277687	 -0.00202398	  0.00122953	  7.21075289	  0.99378010	  0.99674649  0.49094712
+1508	 -6.21298413	 -0.00202274	  0.00122881	  7.21096139	  0.99378405	  0.99674845  0.49095364
+1509	 -6.21319067	 -0.00202149	  0.00122809	  7.21116918	  0.99378798	  0.99675042  0.49096013
+1510	 -6.21339651	 -0.00202025	  0.00122738	  7.21137627	  0.99379192	  0.99675238  0.49096661
+1511	 -6.21360164	 -0.00201900	  0.00122666	  7.21158264	  0.99379585	  0.99675434  0.49097306
+1512	 -6.21380607	 -0.00201776	  0.00122595	  7.21178831	  0.99379977	  0.99675629  0.49097950
+1513	 -6.21400979	 -0.00201652	  0.00122523	  7.21199328	  0.99380369	  0.99675825  0.49098591
+1514	 -6.21421282	 -0.00201528	  0.00122452	  7.21219754	  0.99380761	  0.99676020  0.49099230
+1515	 -6.21441515	 -0.00201404	  0.00122381	  7.21240111	  0.99381152	  0.99676215  0.49099867
+1516	 -6.21461678	 -0.00201280	  0.00122310	  7.21260398	  0.99381543	  0.99676410  0.49100502
+1517	 -6.21481773	 -0.00201157	  0.00122239	  7.21280616	  0.99381933	  0.99676605  0.49101135
+1518	 -6.21501798	 -0.00201033	  0.00122167	  7.21300765	  0.99382323	  0.99676799  0.49101767
+1519	 -6.21521754	 -0.00200910	  0.00122096	  7.21320844	  0.99382712	  0.99676994  0.49102395
+1520	 -6.21541642	 -0.00200787	  0.00122026	  7.21340855	  0.99383101	  0.99677188  0.49103022
+1521	 -6.21561461	 -0.00200664	  0.00121955	  7.21360798	  0.99383489	  0.99677382  0.49103647
+1522	 -6.21581213	 -0.00200541	  0.00121884	  7.21380672	  0.99383877	  0.99677575  0.49104269
+1523	 -6.21600896	 -0.00200418	  0.00121813	  7.21400478	  0.99384265	  0.99677769  0.49104891
+1524	 -6.21620512	 -0.00200295	  0.00121742	  7.21420217	  0.99384652	  0.99677962  0.49105509
+1525	 -6.21640060	 -0.00200173	  0.00121672	  7.21439887	  0.99385038	  0.99678156  0.49106126
+1526	 -6.21659541	 -0.00200050	  0.00121601	  7.21459491	  0.99385424	  0.99678349  0.49106741
+1527	 -6.21678955	 -0.00199928	  0.00121531	  7.21479027	  0.99385810	  0.99678541  0.49107353
+1528	 -6.21698302	 -0.00199806	  0.00121460	  7.21498497	  0.99386195	  0.99678734  0.49107964
+1529	 -6.21717583	 -0.00199684	  0.00121390	  7.21517899	  0.99386580	  0.99678926  0.49108574
+1530	 -6.21736797	 -0.00199562	  0.00121320	  7.21537235	  0.99386965	  0.99679119  0.49109180
+1531	 -6.21755945	 -0.00199440	  0.00121249	  7.21556505	  0.99387349	  0.99679311  0.49109786
+1532	 -6.21775028	 -0.00199319	  0.00121179	  7.21575709	  0.99387732	  0.99679502  0.49110388
+1533	 -6.21794044	 -0.00199197	  0.00121109	  7.21594847	  0.99388115	  0.99679694  0.49110989
+1534	 -6.21812995	 -0.00199076	  0.00121039	  7.21613919	  0.99388498	  0.99679885  0.49111588
+1535	 -6.21831881	 -0.00198955	  0.00120969	  7.21632926	  0.99388880	  0.99680077  0.49112186
+1536	 -6.21850702	 -0.00198833	  0.00120899	  7.21651868	  0.99389261	  0.99680268  0.49112781
+1537	 -6.21869457	 -0.00198712	  0.00120829	  7.21670745	  0.99389643	  0.99680459  0.49113374
+1538	 -6.21888149	 -0.00198592	  0.00120759	  7.21689557	  0.99390024	  0.99680649  0.49113965
+1539	 -6.21906775	 -0.00198471	  0.00120689	  7.21708304	  0.99390404	  0.99680840  0.49114555
+1540	 -6.21925338	 -0.00198350	  0.00120620	  7.21726987	  0.99390784	  0.99681030  0.49115142
+1541	 -6.21943836	 -0.00198230	  0.00120550	  7.21745606	  0.99391163	  0.99681220  0.49115728
+1542	 -6.21962271	 -0.00198110	  0.00120481	  7.21764161	  0.99391542	  0.99681410  0.49116312
+1543	 -6.21980642	 -0.00197989	  0.00120411	  7.21782653	  0.99391921	  0.99681600  0.49116895
+1544	 -6.21998950	 -0.00197869	  0.00120342	  7.21801081	  0.99392299	  0.99681789  0.49117474
+1545	 -6.22017194	 -0.00197749	  0.00120272	  7.21819445	  0.99392677	  0.99681979  0.49118052
+1546	 -6.22035376	 -0.00197630	  0.00120203	  7.21837746	  0.99393054	  0.99682168  0.49118629
+1547	 -6.22053495	 -0.00197510	  0.00120134	  7.21855985	  0.99393431	  0.99682357  0.49119203
+1548	 -6.22071551	 -0.00197390	  0.00120064	  7.21874161	  0.99393808	  0.99682545  0.49119776
+1549	 -6.22089545	 -0.00197271	  0.00119995	  7.21892274	  0.99394184	  0.99682734  0.49120347
+1550	 -6.22107477	 -0.00197152	  0.00119926	  7.21910325	  0.99394559	  0.99682922  0.49120916
+1551	 -6.22125347	 -0.00197032	  0.00119857	  7.21928314	  0.99394935	  0.99683111  0.49121482
+1552	 -6.22143155	 -0.00196913	  0.00119788	  7.21946242	  0.99395309	  0.99683299  0.49122047
+1553	 -6.22160902	 -0.00196794	  0.00119719	  7.21964107	  0.99395684	  0.99683486  0.49122611
+1554	 -6.22178587	 -0.00196676	  0.00119650	  7.21981911	  0.99396058	  0.99683674  0.49123173
+1555	 -6.22196211	 -0.00196557	  0.00119582	  7.21999654	  0.99396431	  0.99683861  0.49123732
+1556	 -6.22213774	 -0.00196438	  0.00119513	  7.22017336	  0.99396804	  0.99684049  0.49124290
+1557	 -6.22231277	 -0.00196320	  0.00119444	  7.22034957	  0.99397177	  0.99684236  0.49124846
+1558	 -6.22248719	 -0.00196202	  0.00119376	  7.22052517	  0.99397549	  0.99684423  0.49125400
+1559	 -6.22266101	 -0.00196083	  0.00119307	  7.22070017	  0.99397920	  0.99684609  0.49125953
+1560	 -6.22283422	 -0.00195965	  0.00119239	  7.22087457	  0.99398292	  0.99684796  0.49126504
+1561	 -6.22300684	 -0.00195848	  0.00119170	  7.22104836	  0.99398663	  0.99684982  0.49127053
+1562	 -6.22317886	 -0.00195730	  0.00119102	  7.22122156	  0.99399033	  0.99685168  0.49127600
+1563	 -6.22335028	 -0.00195612	  0.00119034	  7.22139416	  0.99399403	  0.99685354  0.49128145
+1564	 -6.22352111	 -0.00195495	  0.00118965	  7.22156617	  0.99399773	  0.99685540  0.49128689
+1565	 -6.22369135	 -0.00195377	  0.00118897	  7.22173758	  0.99400142	  0.99685726  0.49129231
+1566	 -6.22386100	 -0.00195260	  0.00118829	  7.22190841	  0.99400511	  0.99685911  0.49129771
+1567	 -6.22403007	 -0.00195143	  0.00118761	  7.22207864	  0.99400879	  0.99686096  0.49130310
+1568	 -6.22419854	 -0.00195026	  0.00118693	  7.22224829	  0.99401247	  0.99686281  0.49130846
+1569	 -6.22436644	 -0.00194909	  0.00118625	  7.22241735	  0.99401615	  0.99686466  0.49131381
+1570	 -6.22453375	 -0.00194792	  0.00118557	  7.22258583	  0.99401982	  0.99686651  0.49131914
+1571	 -6.22470048	 -0.00194675	  0.00118490	  7.22275373	  0.99402348	  0.99686835  0.49132446
+1572	 -6.22486664	 -0.00194559	  0.00118422	  7.22292105	  0.99402715	  0.99687019  0.49132975
+1573	 -6.22503222	 -0.00194442	  0.00118354	  7.22308780	  0.99403081	  0.99687204  0.49133503
+1574	 -6.22519722	 -0.00194326	  0.00118287	  7.22325396	  0.99403446	  0.99687387  0.49134030
+1575	 -6.22536166	 -0.00194210	  0.00118219	  7.22341956	  0.99403811	  0.99687571  0.49134554
+1576	 -6.22552552	 -0.00194094	  0.00118152	  7.22358458	  0.99404176	  0.99687755  0.49135077
+1577	 -6.22568881	 -0.00193978	  0.00118084	  7.22374904	  0.99404540	  0.99687938  0.49135598
+1578	 -6.22585154	 -0.00193862	  0.00118017	  7.22391292	  0.99404904	  0.99688121  0.49136117
+1579	 -6.22601370	 -0.00193746	  0.00117950	  7.22407624	  0.99405267	  0.99688304  0.49136635
+1580	 -6.22617531	 -0.00193631	  0.00117882	  7.22423900	  0.99405630	  0.99688487  0.49137152
+1581	 -6.22633635	 -0.00193515	  0.00117815	  7.22440119	  0.99405992	  0.99688670  0.49137666
+1582	 -6.22649683	 -0.00193400	  0.00117748	  7.22456283	  0.99406354	  0.99688852  0.49138179
+1583	 -6.22665675	 -0.00193285	  0.00117681	  7.22472390	  0.99406716	  0.99689034  0.49138690
+1584	 -6.22681612	 -0.00193170	  0.00117614	  7.22488442	  0.99407077	  0.99689216  0.49139199
+1585	 -6.22697494	 -0.00193055	  0.00117547	  7.22504439	  0.99407438	  0.99689398  0.49139707
+1586	 -6.22713320	 -0.00192940	  0.00117480	  7.22520380	  0.99407799	  0.99689580  0.49140214
+1587	 -6.22729092	 -0.00192825	  0.00117413	  7.22536266	  0.99408159	  0.99689762  0.49140718
+1588	 -6.22744808	 -0.00192711	  0.00117346	  7.22552098	  0.99408519	  0.99689943  0.49141221
+1589	 -6.22760470	 -0.00192596	  0.00117280	  7.22567874	  0.99408878	  0.99690124  0.49141723
+1590	 -6.22776078	 -0.00192482	  0.00117213	  7.22583596	  0.99409237	  0.99690305  0.49142222
+1591	 -6.22791631	 -0.00192368	  0.00117147	  7.22599264	  0.99409595	  0.99690486  0.49142719
+1592	 -6.22807131	 -0.00192253	  0.00117080	  7.22614877	  0.99409953	  0.99690667  0.49143216
+1593	 -6.22822576	 -0.00192139	  0.00117014	  7.22630437	  0.99410311	  0.99690847  0.49143711
+1594	 -6.22837968	 -0.00192026	  0.00116947	  7.22645942	  0.99410668	  0.99691027  0.49144204
+1595	 -6.22853306	 -0.00191912	  0.00116881	  7.22661394	  0.99411025	  0.99691207  0.49144696
+1596	 -6.22868591	 -0.00191798	  0.00116815	  7.22676793	  0.99411381	  0.99691387  0.49145186
+1597	 -6.22883823	 -0.00191685	  0.00116748	  7.22692138	  0.99411737	  0.99691567  0.49145674
+1598	 -6.22899002	 -0.00191571	  0.00116682	  7.22707430	  0.99412093	  0.99691747  0.49146161
+1599	 -6.22914128	 -0.00191458	  0.00116616	  7.22722670	  0.99412448	  0.99691926  0.49146647
+1600	 -6.22929201	 -0.00191345	  0.00116550	  7.22737856	  0.99412803	  0.99692105  0.49147130
+1601	 -6.22944222	 -0.00191232	  0.00116484	  7.22752990	  0.99413157	  0.99692284  0.49147613
+1602	 -6.22959190	 -0.00191119	  0.00116418	  7.22768071	  0.99413511	  0.99692463  0.49148093
+1603	 -6.22974107	 -0.00191006	  0.00116352	  7.22783101	  0.99413865	  0.99692642  0.49148571
+1604	 -6.22988971	 -0.00190893	  0.00116286	  7.22798078	  0.99414218	  0.99692820  0.49149049
+1605	 -6.23003784	 -0.00190781	  0.00116221	  7.22813003	  0.99414571	  0.99692998  0.49149525
+1606	 -6.23018545	 -0.00190669	  0.00116155	  7.22827877	  0.99414924	  0.99693176  0.49149999
+1607	 -6.23033255	 -0.00190556	  0.00116089	  7.22842699	  0.99415276	  0.99693354  0.49150472
+1608	 -6.23047913	 -0.00190444	  0.00116024	  7.22857469	  0.99415627	  0.99693532  0.49150944
+1609	 -6.23062521	 -0.00190332	  0.00115958	  7.22872189	  0.99415978	  0.99693710  0.49151413
+1610	 -6.23077077	 -0.00190220	  0.00115893	  7.22886857	  0.99416329	  0.99693887  0.49151881
+1611	 -6.23091583	 -0.00190108	  0.00115828	  7.22901475	  0.99416680	  0.99694064  0.49152348
+1612	 -6.23106038	 -0.00189996	  0.00115762	  7.22916042	  0.99417030	  0.99694241  0.49152813
+1613	 -6.23120443	 -0.00189885	  0.00115697	  7.22930558	  0.99417379	  0.99694418  0.49153277
+1614	 -6.23134798	 -0.00189773	  0.00115632	  7.22945024	  0.99417729	  0.99694595  0.49153739
+1615	 -6.23149102	 -0.00189662	  0.00115567	  7.22959440	  0.99418078	  0.99694772  0.49154200
+1616	 -6.23163357	 -0.00189551	  0.00115501	  7.22973806	  0.99418426	  0.99694948  0.49154659
+1617	 -6.23177562	 -0.00189439	  0.00115436	  7.22988122	  0.99418774	  0.99695124  0.49155116
+1618	 -6.23191717	 -0.00189328	  0.00115371	  7.23002389	  0.99419122	  0.99695300  0.49155572
+1619	 -6.23205823	 -0.00189218	  0.00115307	  7.23016606	  0.99419469	  0.99695476  0.49156028
+1620	 -6.23219880	 -0.00189107	  0.00115242	  7.23030773	  0.99419816	  0.99695652  0.49156481
+1621	 -6.23233888	 -0.00188996	  0.00115177	  7.23044891	  0.99420163	  0.99695827  0.49156932
+1622	 -6.23247846	 -0.00188886	  0.00115112	  7.23058961	  0.99420509	  0.99696002  0.49157383
+1623	 -6.23261756	 -0.00188775	  0.00115047	  7.23072981	  0.99420855	  0.99696177  0.49157832
+1624	 -6.23275618	 -0.00188665	  0.00114983	  7.23086953	  0.99421200	  0.99696352  0.49158279
+1625	 -6.23289431	 -0.00188555	  0.00114918	  7.23100876	  0.99421545	  0.99696527  0.49158725
+1626	 -6.23303196	 -0.00188444	  0.00114854	  7.23114751	  0.99421890	  0.99696702  0.49159170
+1627	 -6.23316912	 -0.00188334	  0.00114789	  7.23128578	  0.99422234	  0.99696876  0.49159612
+1628	 -6.23330581	 -0.00188225	  0.00114725	  7.23142357	  0.99422578	  0.99697050  0.49160053
+1629	 -6.23344202	 -0.00188115	  0.00114661	  7.23156087	  0.99422921	  0.99697225  0.49160494
+1630	 -6.23357776	 -0.00188005	  0.00114596	  7.23169771	  0.99423264	  0.99697398  0.49160932
+1631	 -6.23371302	 -0.00187896	  0.00114532	  7.23183406	  0.99423607	  0.99697572  0.49161370
+1632	 -6.23384781	 -0.00187786	  0.00114468	  7.23196994	  0.99423949	  0.99697746  0.49161806
+1633	 -6.23398212	 -0.00187677	  0.00114404	  7.23210535	  0.99424291	  0.99697919  0.49162241
+1634	 -6.23411597	 -0.00187568	  0.00114340	  7.23224029	  0.99424633	  0.99698092  0.49162674
+1635	 -6.23424935	 -0.00187459	  0.00114276	  7.23237476	  0.99424974	  0.99698265  0.49163105
+1636	 -6.23438226	 -0.00187350	  0.00114212	  7.23250876	  0.99425315	  0.99698438  0.49163535
+1637	 -6.23451471	 -0.00187241	  0.00114148	  7.23264230	  0.99425655	  0.99698611  0.49163964
+1638	 -6.23464669	 -0.00187132	  0.00114084	  7.23277537	  0.99425995	  0.99698783  0.49164392
+1639	 -6.23477821	 -0.00187024	  0.00114021	  7.23290797	  0.99426335	  0.99698956  0.49164818
+1640	 -6.23490927	 -0.00186915	  0.00113957	  7.23304012	  0.99426674	  0.99699128  0.49165242
+1641	 -6.23503988	 -0.00186807	  0.00113893	  7.23317181	  0.99427013	  0.99699300  0.49165666
+1642	 -6.23517002	 -0.00186698	  0.00113830	  7.23330304	  0.99427352	  0.99699472  0.49166087
+1643	 -6.23529971	 -0.00186590	  0.00113766	  7.23343381	  0.99427690	  0.99699644  0.49166508
+1644	 -6.23542895	 -0.00186482	  0.00113703	  7.23356413	  0.99428028	  0.99699815  0.49166927
+1645	 -6.23555773	 -0.00186374	  0.00113639	  7.23369399	  0.99428365	  0.99699986  0.49167345
+1646	 -6.23568606	 -0.00186267	  0.00113576	  7.23382340	  0.99428702	  0.99700157  0.49167762
+1647	 -6.23581395	 -0.00186159	  0.00113513	  7.23395236	  0.99429039	  0.99700328  0.49168176
+1648	 -6.23594138	 -0.00186051	  0.00113449	  7.23408087	  0.99429375	  0.99700499  0.49168591
+1649	 -6.23606837	 -0.00185944	  0.00113386	  7.23420893	  0.99429711	  0.99700670  0.49169003
+1650	 -6.23619491	 -0.00185836	  0.00113323	  7.23433655	  0.99430047	  0.99700840  0.49169415
+1651	 -6.23632102	 -0.00185729	  0.00113260	  7.23446372	  0.99430382	  0.99701011  0.49169823
+1652	 -6.23644667	 -0.00185622	  0.00113197	  7.23459045	  0.99430717	  0.99701181  0.49170232
+1653	 -6.23657189	 -0.00185515	  0.00113134	  7.23471674	  0.99431051	  0.99701351  0.49170640
+1654	 -6.23669667	 -0.00185408	  0.00113071	  7.23484259	  0.99431385	  0.99701521  0.49171044
+1655	 -6.23682101	 -0.00185301	  0.00113009	  7.23496800	  0.99431719	  0.99701690  0.49171449
+1656	 -6.23694492	 -0.00185195	  0.00112946	  7.23509297	  0.99432052	  0.99701860  0.49171853
+1657	 -6.23706839	 -0.00185088	  0.00112883	  7.23521751	  0.99432385	  0.99702029  0.49172254
+1658	 -6.23719143	 -0.00184981	  0.00112820	  7.23534161	  0.99432718	  0.99702198  0.49172655
+1659	 -6.23731403	 -0.00184875	  0.00112758	  7.23546528	  0.99433050	  0.99702367  0.49173054
+1660	 -6.23743621	 -0.00184769	  0.00112695	  7.23558852	  0.99433382	  0.99702536  0.49173452
+1661	 -6.23755795	 -0.00184663	  0.00112633	  7.23571133	  0.99433713	  0.99702705  0.49173848
+1662	 -6.23767927	 -0.00184557	  0.00112570	  7.23583371	  0.99434044	  0.99702873  0.49174243
+1663	 -6.23780017	 -0.00184451	  0.00112508	  7.23595566	  0.99434375	  0.99703041  0.49174639
+1664	 -6.23792064	 -0.00184345	  0.00112446	  7.23607719	  0.99434706	  0.99703209  0.49175031
+1665	 -6.23804068	 -0.00184239	  0.00112383	  7.23619829	  0.99435036	  0.99703377  0.49175422
+1666	 -6.23816031	 -0.00184134	  0.00112321	  7.23631897	  0.99435365	  0.99703545  0.49175813
+1667	 -6.23827952	 -0.00184028	  0.00112259	  7.23643923	  0.99435695	  0.99703713  0.49176201
+1668	 -6.23839830	 -0.00183923	  0.00112197	  7.23655907	  0.99436024	  0.99703880  0.49176589
+1669	 -6.23851667	 -0.00183817	  0.00112135	  7.23667850	  0.99436352	  0.99704048  0.49176975
+1670	 -6.23863462	 -0.00183712	  0.00112073	  7.23679750	  0.99436680	  0.99704215  0.49177361
+1671	 -6.23875216	 -0.00183607	  0.00112011	  7.23691609	  0.99437008	  0.99704382  0.49177744
+1672	 -6.23886929	 -0.00183502	  0.00111949	  7.23703427	  0.99437336	  0.99704548  0.49178127
+1673	 -6.23898600	 -0.00183398	  0.00111887	  7.23715203	  0.99437663	  0.99704715  0.49178508
+1674	 -6.23910231	 -0.00183293	  0.00111826	  7.23726938	  0.99437990	  0.99704881  0.49178889
+1675	 -6.23921820	 -0.00183188	  0.00111764	  7.23738632	  0.99438316	  0.99705048  0.49179268
+1676	 -6.23933369	 -0.00183084	  0.00111702	  7.23750286	  0.99438642	  0.99705214  0.49179645
+1677	 -6.23944877	 -0.00182979	  0.00111641	  7.23761898	  0.99438968	  0.99705380  0.49180022
+1678	 -6.23956345	 -0.00182875	  0.00111579	  7.23773470	  0.99439293	  0.99705546  0.49180397
+1679	 -6.23967773	 -0.00182771	  0.00111518	  7.23785002	  0.99439618	  0.99705711  0.49180771
+1680	 -6.23979160	 -0.00182667	  0.00111456	  7.23796493	  0.99439943	  0.99705877  0.49181144
+1681	 -6.23990507	 -0.00182563	  0.00111395	  7.23807944	  0.99440267	  0.99706042  0.49181516
+1682	 -6.24001814	 -0.00182459	  0.00111334	  7.23819355	  0.99440591	  0.99706207  0.49181886
+1683	 -6.24013082	 -0.00182355	  0.00111273	  7.23830726	  0.99440915	  0.99706372  0.49182255
+1684	 -6.24024309	 -0.00182251	  0.00111211	  7.23842058	  0.99441238	  0.99706537  0.49182623
+1685	 -6.24035498	 -0.00182148	  0.00111150	  7.23853350	  0.99441561	  0.99706702  0.49182990
+1686	 -6.24046647	 -0.00182045	  0.00111089	  7.23864602	  0.99441884	  0.99706866  0.49183355
+1687	 -6.24057756	 -0.00181941	  0.00111028	  7.23875815	  0.99442206	  0.99707031  0.49183719
+1688	 -6.24068827	 -0.00181838	  0.00110967	  7.23886989	  0.99442528	  0.99707195  0.49184083
+1689	 -6.24079858	 -0.00181735	  0.00110906	  7.23898123	  0.99442849	  0.99707359  0.49184446
+1690	 -6.24090851	 -0.00181632	  0.00110846	  7.23909219	  0.99443170	  0.99707523  0.49184806
+1691	 -6.24101805	 -0.00181529	  0.00110785	  7.23920276	  0.99443491	  0.99707686  0.49185165
+1692	 -6.24112720	 -0.00181426	  0.00110724	  7.23931294	  0.99443812	  0.99707850  0.49185524
+1693	 -6.24123597	 -0.00181324	  0.00110663	  7.23942274	  0.99444132	  0.99708013  0.49185881
+1694	 -6.24134436	 -0.00181221	  0.00110603	  7.23953215	  0.99444451	  0.99708176  0.49186237
+1695	 -6.24145237	 -0.00181118	  0.00110542	  7.23964118	  0.99444771	  0.99708339  0.49186593
+1696	 -6.24155999	 -0.00181016	  0.00110482	  7.23974983	  0.99445090	  0.99708502  0.49186947
+1697	 -6.24166723	 -0.00180914	  0.00110421	  7.23985810	  0.99445408	  0.99708665  0.49187299
+1698	 -6.24177410	 -0.00180812	  0.00110361	  7.23996598	  0.99445727	  0.99708828  0.49187651
+1699	 -6.24188059	 -0.00180710	  0.00110300	  7.24007349	  0.99446045	  0.99708990  0.49188001
+1700	 -6.24198671	 -0.00180608	  0.00110240	  7.24018063	  0.99446363	  0.99709152  0.49188351
+1701	 -6.24209245	 -0.00180506	  0.00110180	  7.24028739	  0.99446680	  0.99709314  0.49188699
+1702	 -6.24219781	 -0.00180404	  0.00110120	  7.24039377	  0.99446997	  0.99709476  0.49189046
+1703	 -6.24230281	 -0.00180302	  0.00110060	  7.24049978	  0.99447313	  0.99709638  0.49189392
+1704	 -6.24240743	 -0.00180201	  0.00110000	  7.24060543	  0.99447630	  0.99709800  0.49189737
+1705	 -6.24251169	 -0.00180100	  0.00109940	  7.24071070	  0.99447946	  0.99709961  0.49190081
+1706	 -6.24261558	 -0.00179998	  0.00109880	  7.24081560	  0.99448261	  0.99710122  0.49190424
+1707	 -6.24271910	 -0.00179897	  0.00109820	  7.24092013	  0.99448577	  0.99710283  0.49190765
+1708	 -6.24282226	 -0.00179796	  0.00109760	  7.24102430	  0.99448891	  0.99710444  0.49191105
+1709	 -6.24292505	 -0.00179695	  0.00109700	  7.24112810	  0.99449206	  0.99710605  0.49191444
+1710	 -6.24302748	 -0.00179594	  0.00109640	  7.24123154	  0.99449520	  0.99710766  0.49191782
+1711	 -6.24312955	 -0.00179493	  0.00109581	  7.24133462	  0.99449834	  0.99710926  0.49192119
+1712	 -6.24323126	 -0.00179392	  0.00109521	  7.24143733	  0.99450148	  0.99711087  0.49192455
+1713	 -6.24333261	 -0.00179292	  0.00109461	  7.24153969	  0.99450461	  0.99711247  0.49192789
+1714	 -6.24343360	 -0.00179191	  0.00109402	  7.24164168	  0.99450774	  0.99711407  0.49193123
+1715	 -6.24353423	 -0.00179091	  0.00109342	  7.24174332	  0.99451086	  0.99711567  0.49193456
+1716	 -6.24363451	 -0.00178991	  0.00109283	  7.24184460	  0.99451399	  0.99711726  0.49193787
+1717	 -6.24373444	 -0.00178891	  0.00109224	  7.24194553	  0.99451711	  0.99711886  0.49194119
+1718	 -6.24383401	 -0.00178790	  0.00109164	  7.24204610	  0.99452022	  0.99712045  0.49194448
+1719	 -6.24393323	 -0.00178690	  0.00109105	  7.24214632	  0.99452333	  0.99712204  0.49194776
+1720	 -6.24403210	 -0.00178591	  0.00109046	  7.24224619	  0.99452644	  0.99712364  0.49195103
+1721	 -6.24413062	 -0.00178491	  0.00108987	  7.24234571	  0.99452955	  0.99712522  0.49195429
+1722	 -6.24422879	 -0.00178391	  0.00108928	  7.24244488	  0.99453265	  0.99712681  0.49195755
+1723	 -6.24432661	 -0.00178292	  0.00108869	  7.24254370	  0.99453575	  0.99712840  0.49196079
+1724	 -6.24442409	 -0.00178192	  0.00108810	  7.24264217	  0.99453884	  0.99712998  0.49196402
+1725	 -6.24452123	 -0.00178093	  0.00108751	  7.24274030	  0.99454194	  0.99713157  0.49196723
+1726	 -6.24461802	 -0.00177993	  0.00108692	  7.24283808	  0.99454502	  0.99713315  0.49197045
+1727	 -6.24471446	 -0.00177894	  0.00108633	  7.24293552	  0.99454811	  0.99713473  0.49197365
+1728	 -6.24481057	 -0.00177795	  0.00108574	  7.24303262	  0.99455119	  0.99713630  0.49197684
+1729	 -6.24490634	 -0.00177696	  0.00108516	  7.24312938	  0.99455427	  0.99713788  0.49198002
+1730	 -6.24500177	 -0.00177597	  0.00108457	  7.24322579	  0.99455735	  0.99713946  0.49198318
+1731	 -6.24509686	 -0.00177499	  0.00108398	  7.24332187	  0.99456042	  0.99714103  0.49198634
+1732	 -6.24519161	 -0.00177400	  0.00108340	  7.24341761	  0.99456349	  0.99714260  0.49198949
+1733	 -6.24528603	 -0.00177301	  0.00108281	  7.24351302	  0.99456655	  0.99714417  0.49199263
+1734	 -6.24538012	 -0.00177203	  0.00108223	  7.24360809	  0.99456961	  0.99714574  0.49199575
+1735	 -6.24547387	 -0.00177105	  0.00108164	  7.24370283	  0.99457267	  0.99714731  0.49199887
+1736	 -6.24556729	 -0.00177006	  0.00108106	  7.24379723	  0.99457573	  0.99714887  0.49200198
+1737	 -6.24566038	 -0.00176908	  0.00108048	  7.24389130	  0.99457878	  0.99715044  0.49200507
+1738	 -6.24575314	 -0.00176810	  0.00107990	  7.24398504	  0.99458183	  0.99715200  0.49200817
+1739	 -6.24584557	 -0.00176712	  0.00107931	  7.24407845	  0.99458488	  0.99715356  0.49201123
+1740	 -6.24593768	 -0.00176614	  0.00107873	  7.24417153	  0.99458792	  0.99715512  0.49201431
+1741	 -6.24602946	 -0.00176517	  0.00107815	  7.24426429	  0.99459096	  0.99715668  0.49201737
+1742	 -6.24612091	 -0.00176419	  0.00107757	  7.24435672	  0.99459400	  0.99715824  0.49202041
+1743	 -6.24621204	 -0.00176321	  0.00107699	  7.24444883	  0.99459703	  0.99715979  0.49202344
+1744	 -6.24630285	 -0.00176224	  0.00107641	  7.24454061	  0.99460006	  0.99716135  0.49202647
+1745	 -6.24639333	 -0.00176127	  0.00107584	  7.24463206	  0.99460309	  0.99716290  0.49202949
+1746	 -6.24648350	 -0.00176029	  0.00107526	  7.24472320	  0.99460611	  0.99716445  0.49203250
+1747	 -6.24657334	 -0.00175932	  0.00107468	  7.24481402	  0.99460913	  0.99716600  0.49203550
+1748	 -6.24666287	 -0.00175835	  0.00107410	  7.24490451	  0.99461215	  0.99716755  0.49203848
+1749	 -6.24675208	 -0.00175738	  0.00107353	  7.24499469	  0.99461516	  0.99716909  0.49204146
+1750	 -6.24684097	 -0.00175641	  0.00107295	  7.24508455	  0.99461817	  0.99717064  0.49204443
+1751	 -6.24692955	 -0.00175545	  0.00107238	  7.24517410	  0.99462118	  0.99717218  0.49204739
+1752	 -6.24701781	 -0.00175448	  0.00107180	  7.24526333	  0.99462418	  0.99717372  0.49205033
+1753	 -6.24710576	 -0.00175351	  0.00107123	  7.24535225	  0.99462718	  0.99717526  0.49205328
+1754	 -6.24719340	 -0.00175255	  0.00107065	  7.24544085	  0.99463018	  0.99717680  0.49205621
+1755	 -6.24728073	 -0.00175158	  0.00107008	  7.24552914	  0.99463317	  0.99717834  0.49205913
+1756	 -6.24736775	 -0.00175062	  0.00106951	  7.24561712	  0.99463617	  0.99717987  0.49206204
+1757	 -6.24745446	 -0.00174966	  0.00106893	  7.24570479	  0.99463915	  0.99718141  0.49206494
+1758	 -6.24754086	 -0.00174870	  0.00106836	  7.24579216	  0.99464214	  0.99718294  0.49206783
+1759	 -6.24762695	 -0.00174774	  0.00106779	  7.24587921	  0.99464512	  0.99718447  0.49207072
+1760	 -6.24771274	 -0.00174678	  0.00106722	  7.24596596	  0.99464810	  0.99718600  0.49207359
+1761	 -6.24779823	 -0.00174582	  0.00106665	  7.24605241	  0.99465108	  0.99718753  0.49207645
+1762	 -6.24788341	 -0.00174487	  0.00106608	  7.24613854	  0.99465405	  0.99718905  0.49207931
+1763	 -6.24796829	 -0.00174391	  0.00106551	  7.24622438	  0.99465702	  0.99719058  0.49208216
+1764	 -6.24805287	 -0.00174296	  0.00106494	  7.24630991	  0.99465998	  0.99719210  0.49208499
+1765	 -6.24813715	 -0.00174200	  0.00106438	  7.24639515	  0.99466295	  0.99719362  0.49208783
+1766	 -6.24822113	 -0.00174105	  0.00106381	  7.24648008	  0.99466591	  0.99719514  0.49209064
+1767	 -6.24830481	 -0.00174010	  0.00106324	  7.24656471	  0.99466886	  0.99719666  0.49209345
+1768	 -6.24838819	 -0.00173915	  0.00106267	  7.24664905	  0.99467182	  0.99719818  0.49209625
+1769	 -6.24847128	 -0.00173819	  0.00106211	  7.24673309	  0.99467477	  0.99719970  0.49209904
+1770	 -6.24855407	 -0.00173725	  0.00106154	  7.24681683	  0.99467771	  0.99720121  0.49210182
+1771	 -6.24863657	 -0.00173630	  0.00106098	  7.24690027	  0.99468066	  0.99720272  0.49210459
+1772	 -6.24871878	 -0.00173535	  0.00106041	  7.24698343	  0.99468360	  0.99720424  0.49210735
+1773	 -6.24880069	 -0.00173440	  0.00105985	  7.24706629	  0.99468654	  0.99720575  0.49211010
+1774	 -6.24888231	 -0.00173346	  0.00105929	  7.24714886	  0.99468947	  0.99720725  0.49211286
+1775	 -6.24896365	 -0.00173251	  0.00105872	  7.24723113	  0.99469240	  0.99720876  0.49211559
+1776	 -6.24904469	 -0.00173157	  0.00105816	  7.24731312	  0.99469533	  0.99721027  0.49211832
+1777	 -6.24912545	 -0.00173063	  0.00105760	  7.24739482	  0.99469826	  0.99721177  0.49212104
+1778	 -6.24920591	 -0.00172969	  0.00105704	  7.24747623	  0.99470118	  0.99721327  0.49212375
+1779	 -6.24928610	 -0.00172875	  0.00105648	  7.24755735	  0.99470410	  0.99721478  0.49212645
+1780	 -6.24936599	 -0.00172781	  0.00105592	  7.24763819	  0.99470702	  0.99721628  0.49212915
+1781	 -6.24944561	 -0.00172687	  0.00105536	  7.24771874	  0.99470993	  0.99721777  0.49213183
+1782	 -6.24952494	 -0.00172593	  0.00105480	  7.24779901	  0.99471284	  0.99721927  0.49213451
+1783	 -6.24960399	 -0.00172499	  0.00105424	  7.24787899	  0.99471575	  0.99722077  0.49213717
+1784	 -6.24968275	 -0.00172406	  0.00105368	  7.24795870	  0.99471865	  0.99722226  0.49213983
+1785	 -6.24976124	 -0.00172312	  0.00105312	  7.24803812	  0.99472155	  0.99722375  0.49214248
+1786	 -6.24983945	 -0.00172219	  0.00105257	  7.24811726	  0.99472445	  0.99722524  0.49214512
+1787	 -6.24991738	 -0.00172126	  0.00105201	  7.24819612	  0.99472735	  0.99722673  0.49214776
+1788	 -6.24999503	 -0.00172032	  0.00105145	  7.24827471	  0.99473024	  0.99722822  0.49215038
+1789	 -6.25007241	 -0.00171939	  0.00105090	  7.24835302	  0.99473313	  0.99722971  0.49215299
+1790	 -6.25014951	 -0.00171846	  0.00105034	  7.24843105	  0.99473601	  0.99723119  0.49215561
+1791	 -6.25022634	 -0.00171753	  0.00104979	  7.24850880	  0.99473890	  0.99723268  0.49215820
+1792	 -6.25030289	 -0.00171660	  0.00104923	  7.24858628	  0.99474178	  0.99723416  0.49216079
+1793	 -6.25037917	 -0.00171568	  0.00104868	  7.24866349	  0.99474465	  0.99723564  0.49216338
+1794	 -6.25045518	 -0.00171475	  0.00104813	  7.24874043	  0.99474753	  0.99723712  0.49216595
+1795	 -6.25053092	 -0.00171382	  0.00104758	  7.24881709	  0.99475040	  0.99723860  0.49216851
+1796	 -6.25060639	 -0.00171290	  0.00104702	  7.24889349	  0.99475327	  0.99724008  0.49217106
+1797	 -6.25068159	 -0.00171198	  0.00104647	  7.24896961	  0.99475613	  0.99724155  0.49217362
+1798	 -6.25075652	 -0.00171105	  0.00104592	  7.24904547	  0.99475899	  0.99724303  0.49217616
+1799	 -6.25083119	 -0.00171013	  0.00104537	  7.24912106	  0.99476185	  0.99724450  0.49217869
+1800	 -6.25090559	 -0.00170921	  0.00104482	  7.24919638	  0.99476471	  0.99724597  0.49218121
+1801	 -6.25097972	 -0.00170829	  0.00104427	  7.24927143	  0.99476756	  0.99724744  0.49218373
+1802	 -6.25105359	 -0.00170737	  0.00104372	  7.24934622	  0.99477041	  0.99724891  0.49218624
+1803	 -6.25112720	 -0.00170645	  0.00104317	  7.24942075	  0.99477326	  0.99725037  0.49218873
+1804	 -6.25120055	 -0.00170554	  0.00104262	  7.24949501	  0.99477610	  0.99725184  0.49219122
+1805	 -6.25127363	 -0.00170462	  0.00104208	  7.24956901	  0.99477894	  0.99725330  0.49219371
+1806	 -6.25134646	 -0.00170370	  0.00104153	  7.24964275	  0.99478178	  0.99725477  0.49219618
+1807	 -6.25141902	 -0.00170279	  0.00104098	  7.24971623	  0.99478462	  0.99725623  0.49219865
+1808	 -6.25149133	 -0.00170188	  0.00104044	  7.24978945	  0.99478745	  0.99725769  0.49220112
+1809	 -6.25156338	 -0.00170096	  0.00103989	  7.24986241	  0.99479028	  0.99725915  0.49220356
+1810	 -6.25163517	 -0.00170005	  0.00103935	  7.24993512	  0.99479311	  0.99726060  0.49220600
+1811	 -6.25170670	 -0.00169914	  0.00103880	  7.25000756	  0.99479593	  0.99726206  0.49220844
+1812	 -6.25177798	 -0.00169823	  0.00103826	  7.25007975	  0.99479875	  0.99726351  0.49221087
+1813	 -6.25184901	 -0.00169732	  0.00103771	  7.25015169	  0.99480157	  0.99726496  0.49221329
+1814	 -6.25191978	 -0.00169641	  0.00103717	  7.25022337	  0.99480438	  0.99726642  0.49221570
+1815	 -6.25199031	 -0.00169551	  0.00103663	  7.25029480	  0.99480719	  0.99726787  0.49221811
+1816	 -6.25206057	 -0.00169460	  0.00103609	  7.25036598	  0.99481000	  0.99726931  0.49222050
+1817	 -6.25213059	 -0.00169369	  0.00103555	  7.25043690	  0.99481281	  0.99727076  0.49222289
+1818	 -6.25220036	 -0.00169279	  0.00103500	  7.25050757	  0.99481561	  0.99727221  0.49222527
+1819	 -6.25226988	 -0.00169189	  0.00103446	  7.25057800	  0.99481841	  0.99727365  0.49222765
+1820	 -6.25233916	 -0.00169098	  0.00103392	  7.25064817	  0.99482121	  0.99727509  0.49223001
+1821	 -6.25240818	 -0.00169008	  0.00103338	  7.25071810	  0.99482400	  0.99727653  0.49223237
+1822	 -6.25247696	 -0.00168918	  0.00103285	  7.25078778	  0.99482680	  0.99727797  0.49223472
+1823	 -6.25254550	 -0.00168828	  0.00103231	  7.25085722	  0.99482958	  0.99727941  0.49223706
+1824	 -6.25261379	 -0.00168738	  0.00103177	  7.25092640	  0.99483237	  0.99728085  0.49223939
+1825	 -6.25268183	 -0.00168648	  0.00103123	  7.25099535	  0.99483515	  0.99728229  0.49224172
+1826	 -6.25274963	 -0.00168559	  0.00103069	  7.25106405	  0.99483793	  0.99728372  0.49224404
+1827	 -6.25281720	 -0.00168469	  0.00103016	  7.25113251	  0.99484071	  0.99728515  0.49224636
+1828	 -6.25288452	 -0.00168379	  0.00102962	  7.25120072	  0.99484348	  0.99728659  0.49224866
+1829	 -6.25295160	 -0.00168290	  0.00102909	  7.25126870	  0.99484626	  0.99728802  0.49225097
+1830	 -6.25301844	 -0.00168200	  0.00102855	  7.25133643	  0.99484902	  0.99728945  0.49225325
+1831	 -6.25308504	 -0.00168111	  0.00102802	  7.25140393	  0.99485179	  0.99729087  0.49225553
+1832	 -6.25315140	 -0.00168022	  0.00102748	  7.25147118	  0.99485455	  0.99729230  0.49225780
+1833	 -6.25321753	 -0.00167933	  0.00102695	  7.25153820	  0.99485731	  0.99729372  0.49226008
+1834	 -6.25328342	 -0.00167844	  0.00102641	  7.25160498	  0.99486007	  0.99729515  0.49226233
+1835	 -6.25334907	 -0.00167755	  0.00102588	  7.25167153	  0.99486282	  0.99729657  0.49226459
+1836	 -6.25341450	 -0.00167666	  0.00102535	  7.25173784	  0.99486558	  0.99729799  0.49226684
+1837	 -6.25347968	 -0.00167577	  0.00102482	  7.25180391	  0.99486832	  0.99729941  0.49226907
+1838	 -6.25354464	 -0.00167489	  0.00102429	  7.25186975	  0.99487107	  0.99730083  0.49227131
+1839	 -6.25360936	 -0.00167400	  0.00102376	  7.25193536	  0.99487381	  0.99730224  0.49227354
+1840	 -6.25367385	 -0.00167312	  0.00102323	  7.25200074	  0.99487655	  0.99730366  0.49227575
+1841	 -6.25373811	 -0.00167223	  0.00102270	  7.25206588	  0.99487929	  0.99730507  0.49227796
+1842	 -6.25380215	 -0.00167135	  0.00102217	  7.25213080	  0.99488202	  0.99730649  0.49228016
+1843	 -6.25386595	 -0.00167047	  0.00102164	  7.25219548	  0.99488476	  0.99730790  0.49228236
+1844	 -6.25392952	 -0.00166958	  0.00102111	  7.25225994	  0.99488749	  0.99730931  0.49228455
+1845	 -6.25399287	 -0.00166870	  0.00102058	  7.25232417	  0.99489021	  0.99731072  0.49228673
+1846	 -6.25405599	 -0.00166782	  0.00102005	  7.25238817	  0.99489294	  0.99731212  0.49228892
+1847	 -6.25411889	 -0.00166694	  0.00101953	  7.25245194	  0.99489566	  0.99731353  0.49229108
+1848	 -6.25418156	 -0.00166607	  0.00101900	  7.25251549	  0.99489837	  0.99731493  0.49229324
+1849	 -6.25424401	 -0.00166519	  0.00101847	  7.25257882	  0.99490109	  0.99731634  0.49229539
+1850	 -6.25430623	 -0.00166431	  0.00101795	  7.25264192	  0.99490380	  0.99731774  0.49229754
+1851	 -6.25436823	 -0.00166344	  0.00101742	  7.25270479	  0.99490651	  0.99731914  0.49229968
+1852	 -6.25443001	 -0.00166256	  0.00101690	  7.25276745	  0.99490922	  0.99732054  0.49230182
+1853	 -6.25449157	 -0.00166169	  0.00101638	  7.25282988	  0.99491192	  0.99732194  0.49230394
+1854	 -6.25455291	 -0.00166082	  0.00101585	  7.25289209	  0.99491462	  0.99732333  0.49230606
+1855	 -6.25461403	 -0.00165994	  0.00101533	  7.25295408	  0.99491732	  0.99732473  0.49230817
+1856	 -6.25467493	 -0.00165907	  0.00101481	  7.25301586	  0.99492002	  0.99732612  0.49231027
+1857	 -6.25473561	 -0.00165820	  0.00101428	  7.25307741	  0.99492271	  0.99732751  0.49231238
+1858	 -6.25479608	 -0.00165733	  0.00101376	  7.25313874	  0.99492540	  0.99732890  0.49231446
+1859	 -6.25485633	 -0.00165647	  0.00101324	  7.25319986	  0.99492809	  0.99733029  0.49231656
+1860	 -6.25491636	 -0.00165560	  0.00101272	  7.25326076	  0.99493077	  0.99733168  0.49231863
+1861	 -6.25497618	 -0.00165473	  0.00101220	  7.25332145	  0.99493345	  0.99733307  0.49232070
+1862	 -6.25503579	 -0.00165386	  0.00101168	  7.25338192	  0.99493613	  0.99733445  0.49232277
+1863	 -6.25509518	 -0.00165300	  0.00101116	  7.25344218	  0.99493881	  0.99733584  0.49232483
+1864	 -6.25515436	 -0.00165214	  0.00101064	  7.25350222	  0.99494148	  0.99733722  0.49232688
+1865	 -6.25521333	 -0.00165127	  0.00101012	  7.25356206	  0.99494415	  0.99733860  0.49232894
+1866	 -6.25527209	 -0.00165041	  0.00100961	  7.25362168	  0.99494682	  0.99733998  0.49233097
+1867	 -6.25533063	 -0.00164955	  0.00100909	  7.25368108	  0.99494949	  0.99734136  0.49233301
+1868	 -6.25538897	 -0.00164869	  0.00100857	  7.25374028	  0.99495215	  0.99734274  0.49233504
+1869	 -6.25544710	 -0.00164783	  0.00100806	  7.25379927	  0.99495481	  0.99734412  0.49233704
+1870	 -6.25550502	 -0.00164697	  0.00100754	  7.25385805	  0.99495747	  0.99734549  0.49233906
+1871	 -6.25556273	 -0.00164611	  0.00100702	  7.25391662	  0.99496012	  0.99734687  0.49234107
+1872	 -6.25562024	 -0.00164525	  0.00100651	  7.25397499	  0.99496278	  0.99734824  0.49234308
+1873	 -6.25567754	 -0.00164440	  0.00100599	  7.25403314	  0.99496543	  0.99734961  0.49234506
+1874	 -6.25573464	 -0.00164354	  0.00100548	  7.25409110	  0.99496807	  0.99735098  0.49234706
+1875	 -6.25579153	 -0.00164268	  0.00100497	  7.25414884	  0.99497072	  0.99735235  0.49234904
+1876	 -6.25584821	 -0.00164183	  0.00100445	  7.25420638	  0.99497336	  0.99735372  0.49235101
+1877	 -6.25590470	 -0.00164098	  0.00100394	  7.25426372	  0.99497600	  0.99735508  0.49235297
+1878	 -6.25596098	 -0.00164012	  0.00100343	  7.25432086	  0.99497863	  0.99735645  0.49235495
+1879	 -6.25601706	 -0.00163927	  0.00100292	  7.25437779	  0.99498127	  0.99735781  0.49235690
+1880	 -6.25607294	 -0.00163842	  0.00100241	  7.25443452	  0.99498390	  0.99735917  0.49235884
+1881	 -6.25612862	 -0.00163757	  0.00100189	  7.25449105	  0.99498652	  0.99736053  0.49236079
+1882	 -6.25618410	 -0.00163672	  0.00100138	  7.25454738	  0.99498915	  0.99736189  0.49236272
+1883	 -6.25623938	 -0.00163587	  0.00100087	  7.25460351	  0.99499177	  0.99736325  0.49236466
+1884	 -6.25629447	 -0.00163503	  0.00100036	  7.25465944	  0.99499439	  0.99736461  0.49236658
+1885	 -6.25634936	 -0.00163418	  0.00099986	  7.25471518	  0.99499701	  0.99736596  0.49236850
+1886	 -6.25640405	 -0.00163333	  0.00099935	  7.25477071	  0.99499963	  0.99736732  0.49237042
+1887	 -6.25645854	 -0.00163249	  0.00099884	  7.25482605	  0.99500224	  0.99736867  0.49237232
+1888	 -6.25651284	 -0.00163164	  0.00099833	  7.25488119	  0.99500485	  0.99737002  0.49237422
+1889	 -6.25656694	 -0.00163080	  0.00099782	  7.25493614	  0.99500745	  0.99737137  0.49237612
+1890	 -6.25662085	 -0.00162996	  0.00099732	  7.25499089	  0.99501006	  0.99737272  0.49237800
+1891	 -6.25667457	 -0.00162912	  0.00099681	  7.25504545	  0.99501266	  0.99737407  0.49237989
+1892	 -6.25672809	 -0.00162828	  0.00099631	  7.25509982	  0.99501526	  0.99737542  0.49238176
+1893	 -6.25678143	 -0.00162744	  0.00099580	  7.25515399	  0.99501786	  0.99737676  0.49238364
+1894	 -6.25683457	 -0.00162660	  0.00099530	  7.25520797	  0.99502045	  0.99737811  0.49238550
+1895	 -6.25688752	 -0.00162576	  0.00099479	  7.25526176	  0.99502304	  0.99737945  0.49238736
+1896	 -6.25694028	 -0.00162492	  0.00099429	  7.25531536	  0.99502563	  0.99738079  0.49238921
+1897	 -6.25699285	 -0.00162408	  0.00099378	  7.25536877	  0.99502822	  0.99738213  0.49239105
+1898	 -6.25704524	 -0.00162325	  0.00099328	  7.25542199	  0.99503080	  0.99738347  0.49239289
+1899	 -6.25709743	 -0.00162241	  0.00099278	  7.25547502	  0.99503338	  0.99738481  0.49239473
+1900	 -6.25714944	 -0.00162158	  0.00099228	  7.25552786	  0.99503596	  0.99738615  0.49239656
+1901	 -6.25720127	 -0.00162074	  0.00099177	  7.25558052	  0.99503853	  0.99738748  0.49239838
+1902	 -6.25725290	 -0.00161991	  0.00099127	  7.25563299	  0.99504111	  0.99738881  0.49240020
+1903	 -6.25730435	 -0.00161908	  0.00099077	  7.25568527	  0.99504368	  0.99739015  0.49240201
+1904	 -6.25735562	 -0.00161825	  0.00099027	  7.25573737	  0.99504625	  0.99739148  0.49240381
+1905	 -6.25740670	 -0.00161742	  0.00098977	  7.25578929	  0.99504881	  0.99739281  0.49240561
+1906	 -6.25745761	 -0.00161659	  0.00098927	  7.25584102	  0.99505137	  0.99739414  0.49240741
+1907	 -6.25750832	 -0.00161576	  0.00098877	  7.25589256	  0.99505393	  0.99739547  0.49240919
+1908	 -6.25755886	 -0.00161493	  0.00098828	  7.25594393	  0.99505649	  0.99739679  0.49241098
+1909	 -6.25760921	 -0.00161411	  0.00098778	  7.25599511	  0.99505905	  0.99739812  0.49241276
+1910	 -6.25765939	 -0.00161328	  0.00098728	  7.25604611	  0.99506160	  0.99739944  0.49241453
+1911	 -6.25770938	 -0.00161245	  0.00098678	  7.25609693	  0.99506415	  0.99740076  0.49241630
+1912	 -6.25775920	 -0.00161163	  0.00098629	  7.25614757	  0.99506670	  0.99740209  0.49241806
+1913	 -6.25780883	 -0.00161080	  0.00098579	  7.25619803	  0.99506924	  0.99740341  0.49241981
+1914	 -6.25785829	 -0.00160998	  0.00098529	  7.25624831	  0.99507179	  0.99740472  0.49242156
+1915	 -6.25790757	 -0.00160916	  0.00098480	  7.25629841	  0.99507433	  0.99740604  0.49242330
+1916	 -6.25795667	 -0.00160834	  0.00098430	  7.25634834	  0.99507686	  0.99740736  0.49242504
+1917	 -6.25800560	 -0.00160752	  0.00098381	  7.25639808	  0.99507940	  0.99740867  0.49242678
+1918	 -6.25805435	 -0.00160670	  0.00098332	  7.25644766	  0.99508193	  0.99740999  0.49242849
+1919	 -6.25810293	 -0.00160588	  0.00098282	  7.25649705	  0.99508446	  0.99741130  0.49243022
+1920	 -6.25815133	 -0.00160506	  0.00098233	  7.25654627	  0.99508699	  0.99741261  0.49243193
+1921	 -6.25819956	 -0.00160424	  0.00098184	  7.25659532	  0.99508951	  0.99741392  0.49243365
+1922	 -6.25824762	 -0.00160342	  0.00098134	  7.25664419	  0.99509203	  0.99741523  0.49243535
+1923	 -6.25829550	 -0.00160261	  0.00098085	  7.25669289	  0.99509455	  0.99741654  0.49243704
+1924	 -6.25834321	 -0.00160179	  0.00098036	  7.25674142	  0.99509707	  0.99741784  0.49243875
+1925	 -6.25839075	 -0.00160098	  0.00097987	  7.25678978	  0.99509959	  0.99741915  0.49244043
+1926	 -6.25843812	 -0.00160017	  0.00097938	  7.25683796	  0.99510210	  0.99742045  0.49244213
+1927	 -6.25848532	 -0.00159935	  0.00097889	  7.25688597	  0.99510461	  0.99742176  0.49244379
+1928	 -6.25853235	 -0.00159854	  0.00097840	  7.25693381	  0.99510712	  0.99742306  0.49244547
+1929	 -6.25857922	 -0.00159773	  0.00097791	  7.25698149	  0.99510962	  0.99742436  0.49244714
+1930	 -6.25862591	 -0.00159692	  0.00097742	  7.25702899	  0.99511212	  0.99742566  0.49244880
+1931	 -6.25867244	 -0.00159611	  0.00097693	  7.25707633	  0.99511462	  0.99742696  0.49245046
+1932	 -6.25871879	 -0.00159530	  0.00097645	  7.25712350	  0.99511712	  0.99742825  0.49245210
+1933	 -6.25876499	 -0.00159449	  0.00097596	  7.25717050	  0.99511962	  0.99742955  0.49245376
+1934	 -6.25881101	 -0.00159368	  0.00097547	  7.25721733	  0.99512211	  0.99743084  0.49245539
+1935	 -6.25885688	 -0.00159288	  0.00097499	  7.25726400	  0.99512460	  0.99743214  0.49245702
+1936	 -6.25890257	 -0.00159207	  0.00097450	  7.25731050	  0.99512709	  0.99743343  0.49245866
+1937	 -6.25894810	 -0.00159127	  0.00097402	  7.25735684	  0.99512957	  0.99743472  0.49246028
+1938	 -6.25899347	 -0.00159046	  0.00097353	  7.25740301	  0.99513205	  0.99743601  0.49246190
+1939	 -6.25903868	 -0.00158966	  0.00097305	  7.25744902	  0.99513453	  0.99743730  0.49246352
+1940	 -6.25908372	 -0.00158886	  0.00097256	  7.25749487	  0.99513701	  0.99743858  0.49246513
+1941	 -6.25912861	 -0.00158805	  0.00097208	  7.25754055	  0.99513949	  0.99743987  0.49246673
+1942	 -6.25917333	 -0.00158725	  0.00097159	  7.25758607	  0.99514196	  0.99744115  0.49246833
+1943	 -6.25921789	 -0.00158645	  0.00097111	  7.25763144	  0.99514443	  0.99744244  0.49246993
+1944	 -6.25926229	 -0.00158565	  0.00097063	  7.25767664	  0.99514690	  0.99744372  0.49247152
+1945	 -6.25930653	 -0.00158485	  0.00097015	  7.25772168	  0.99514936	  0.99744500  0.49247309
+1946	 -6.25935061	 -0.00158406	  0.00096966	  7.25776656	  0.99515183	  0.99744628  0.49247468
+1947	 -6.25939453	 -0.00158326	  0.00096918	  7.25781128	  0.99515429	  0.99744756  0.49247625
+1948	 -6.25943830	 -0.00158246	  0.00096870	  7.25785584	  0.99515675	  0.99744884  0.49247782
+1949	 -6.25948191	 -0.00158167	  0.00096822	  7.25790024	  0.99515920	  0.99745011  0.49247939
+1950	 -6.25952536	 -0.00158087	  0.00096774	  7.25794449	  0.99516165	  0.99745139  0.49248095
+1951	 -6.25956866	 -0.00158008	  0.00096726	  7.25798858	  0.99516411	  0.99745266  0.49248251
+1952	 -6.25961180	 -0.00157928	  0.00096678	  7.25803252	  0.99516655	  0.99745393  0.49248405
+1953	 -6.25965478	 -0.00157849	  0.00096631	  7.25807629	  0.99516900	  0.99745521  0.49248560
+1954	 -6.25969761	 -0.00157770	  0.00096583	  7.25811992	  0.99517144	  0.99745648  0.49248715
+1955	 -6.25974029	 -0.00157691	  0.00096535	  7.25816339	  0.99517389	  0.99745774  0.49248867
+1956	 -6.25978282	 -0.00157612	  0.00096487	  7.25820670	  0.99517633	  0.99745901  0.49249021
+1957	 -6.25982519	 -0.00157533	  0.00096440	  7.25824986	  0.99517876	  0.99746028  0.49249174
+1958	 -6.25986741	 -0.00157454	  0.00096392	  7.25829287	  0.99518120	  0.99746154  0.49249325
+1959	 -6.25990947	 -0.00157375	  0.00096344	  7.25833572	  0.99518363	  0.99746281  0.49249477
+1960	 -6.25995139	 -0.00157296	  0.00096297	  7.25837843	  0.99518606	  0.99746407  0.49249628
+1961	 -6.25999315	 -0.00157217	  0.00096249	  7.25842098	  0.99518848	  0.99746533  0.49249779
+1962	 -6.26003477	 -0.00157139	  0.00096202	  7.25846338	  0.99519091	  0.99746659  0.49249929
+1963	 -6.26007624	 -0.00157060	  0.00096154	  7.25850563	  0.99519333	  0.99746785  0.49250079
+1964	 -6.26011755	 -0.00156982	  0.00096107	  7.25854773	  0.99519575	  0.99746911  0.49250228
+1965	 -6.26015872	 -0.00156903	  0.00096060	  7.25858969	  0.99519817	  0.99747037  0.49250377
+1966	 -6.26019974	 -0.00156825	  0.00096012	  7.25863149	  0.99520058	  0.99747163  0.49250524
+1967	 -6.26024061	 -0.00156747	  0.00095965	  7.25867315	  0.99520300	  0.99747288  0.49250672
+1968	 -6.26028134	 -0.00156669	  0.00095918	  7.25871465	  0.99520541	  0.99747414  0.49250819
+1969	 -6.26032192	 -0.00156591	  0.00095871	  7.25875601	  0.99520782	  0.99747539  0.49250967
+1970	 -6.26036235	 -0.00156513	  0.00095823	  7.25879723	  0.99521022	  0.99747664  0.49251114
+1971	 -6.26040264	 -0.00156435	  0.00095776	  7.25883830	  0.99521263	  0.99747789  0.49251259
+1972	 -6.26044279	 -0.00156357	  0.00095729	  7.25887922	  0.99521503	  0.99747914  0.49251404
+1973	 -6.26048279	 -0.00156279	  0.00095682	  7.25892000	  0.99521743	  0.99748039  0.49251549
+1974	 -6.26052264	 -0.00156201	  0.00095635	  7.25896063	  0.99521982	  0.99748163  0.49251694
+1975	 -6.26056235	 -0.00156124	  0.00095588	  7.25900112	  0.99522222	  0.99748288  0.49251838
+1976	 -6.26060192	 -0.00156046	  0.00095542	  7.25904146	  0.99522461	  0.99748412  0.49251982
+1977	 -6.26064135	 -0.00155969	  0.00095495	  7.25908167	  0.99522700	  0.99748537  0.49252125
+1978	 -6.26068064	 -0.00155891	  0.00095448	  7.25912173	  0.99522939	  0.99748661  0.49252269
+1979	 -6.26071978	 -0.00155814	  0.00095401	  7.25916164	  0.99523177	  0.99748785  0.49252410
+1980	 -6.26075879	 -0.00155737	  0.00095354	  7.25920142	  0.99523415	  0.99748909  0.49252552
+1981	 -6.26079765	 -0.00155659	  0.00095308	  7.25924106	  0.99523653	  0.99749033  0.49252694
+1982	 -6.26083637	 -0.00155582	  0.00095261	  7.25928055	  0.99523891	  0.99749157  0.49252834
+1983	 -6.26087496	 -0.00155505	  0.00095215	  7.25931991	  0.99524129	  0.99749280  0.49252975
+1984	 -6.26091341	 -0.00155428	  0.00095168	  7.25935912	  0.99524366	  0.99749404  0.49253116
+1985	 -6.26095171	 -0.00155351	  0.00095122	  7.25939820	  0.99524603	  0.99749527  0.49253255
+1986	 -6.26098988	 -0.00155274	  0.00095075	  7.25943714	  0.99524840	  0.99749651  0.49253394
+1987	 -6.26102792	 -0.00155198	  0.00095029	  7.25947594	  0.99525077	  0.99749774  0.49253533
+1988	 -6.26106581	 -0.00155121	  0.00094982	  7.25951460	  0.99525313	  0.99749897  0.49253672
+1989	 -6.26110357	 -0.00155044	  0.00094936	  7.25955313	  0.99525549	  0.99750020  0.49253810
+1990	 -6.26114120	 -0.00154968	  0.00094890	  7.25959152	  0.99525785	  0.99750143  0.49253947
+1991	 -6.26117869	 -0.00154891	  0.00094843	  7.25962977	  0.99526021	  0.99750265  0.49254085
+1992	 -6.26121604	 -0.00154815	  0.00094797	  7.25966789	  0.99526256	  0.99750388  0.49254220
+1993	 -6.26125326	 -0.00154739	  0.00094751	  7.25970587	  0.99526492	  0.99750510  0.49254357
+1994	 -6.26129035	 -0.00154662	  0.00094705	  7.25974372	  0.99526727	  0.99750633  0.49254493
+1995	 -6.26132730	 -0.00154586	  0.00094659	  7.25978144	  0.99526962	  0.99750755  0.49254628
+1996	 -6.26136412	 -0.00154510	  0.00094613	  7.25981902	  0.99527196	  0.99750877  0.49254763
+1997	 -6.26140081	 -0.00154434	  0.00094567	  7.25985647	  0.99527431	  0.99750999  0.49254897
+1998	 -6.26143736	 -0.00154358	  0.00094521	  7.25989378	  0.99527665	  0.99751121  0.49255032
+1999	 -6.26147379	 -0.00154282	  0.00094475	  7.25993097	  0.99527899	  0.99751243  0.49255166
+2000	 -6.26151008	 -0.00154206	  0.00094429	  7.25996802	  0.99528132	  0.99751365  0.49255299
+2001	 -6.26154624	 -0.00154131	  0.00094383	  7.26000494	  0.99528366	  0.99751486  0.49255432
+2002	 -6.26158228	 -0.00154055	  0.00094337	  7.26004173	  0.99528599	  0.99751608  0.49255564
+2003	 -6.26161818	 -0.00153979	  0.00094292	  7.26007839	  0.99528832	  0.99751729  0.49255696
+2004	 -6.26165395	 -0.00153904	  0.00094246	  7.26011492	  0.99529065	  0.99751851  0.49255828
+2005	 -6.26168960	 -0.00153828	  0.00094200	  7.26015132	  0.99529297	  0.99751972  0.49255958
+2006	 -6.26172512	 -0.00153753	  0.00094155	  7.26018759	  0.99529530	  0.99752093  0.49256090
+2007	 -6.26176051	 -0.00153677	  0.00094109	  7.26022373	  0.99529762	  0.99752214  0.49256219
+2008	 -6.26179577	 -0.00153602	  0.00094063	  7.26025975	  0.99529994	  0.99752334  0.49256349
+2009	 -6.26183090	 -0.00153527	  0.00094018	  7.26029563	  0.99530226	  0.99752455  0.49256478
+2010	 -6.26186591	 -0.00153452	  0.00093972	  7.26033139	  0.99530457	  0.99752576  0.49256609
+2011	 -6.26190080	 -0.00153377	  0.00093927	  7.26036703	  0.99530688	  0.99752696  0.49256738
+2012	 -6.26193555	 -0.00153302	  0.00093882	  7.26040254	  0.99530919	  0.99752817  0.49256866
+2013	 -6.26197019	 -0.00153227	  0.00093836	  7.26043792	  0.99531150	  0.99752937  0.49256993
+2014	 -6.26200470	 -0.00153152	  0.00093791	  7.26047317	  0.99531381	  0.99753057  0.49257121
+2015	 -6.26203908	 -0.00153077	  0.00093746	  7.26050831	  0.99531611	  0.99753177  0.49257249
+2016	 -6.26207334	 -0.00153003	  0.00093700	  7.26054331	  0.99531841	  0.99753297  0.49257375
+2017	 -6.26210748	 -0.00152928	  0.00093655	  7.26057820	  0.99532071	  0.99753417  0.49257501
+2018	 -6.26214149	 -0.00152853	  0.00093610	  7.26061296	  0.99532301	  0.99753537  0.49257629
+2019	 -6.26217539	 -0.00152779	  0.00093565	  7.26064760	  0.99532530	  0.99753656  0.49257754
+2020	 -6.26220916	 -0.00152705	  0.00093520	  7.26068211	  0.99532759	  0.99753776  0.49257879
+2021	 -6.26224280	 -0.00152630	  0.00093475	  7.26071650	  0.99532988	  0.99753895  0.49258003
+2022	 -6.26227633	 -0.00152556	  0.00093430	  7.26075077	  0.99533217	  0.99754014  0.49258128
+2023	 -6.26230974	 -0.00152482	  0.00093385	  7.26078492	  0.99533446	  0.99754133  0.49258252
+2024	 -6.26234303	 -0.00152408	  0.00093340	  7.26081895	  0.99533674	  0.99754253  0.49258376
+2025	 -6.26237620	 -0.00152333	  0.00093295	  7.26085286	  0.99533902	  0.99754372  0.49258498
+2026	 -6.26240924	 -0.00152259	  0.00093250	  7.26088665	  0.99534130	  0.99754490  0.49258622
+2027	 -6.26244217	 -0.00152186	  0.00093205	  7.26092032	  0.99534358	  0.99754609  0.49258745
+2028	 -6.26247499	 -0.00152112	  0.00093161	  7.26095387	  0.99534586	  0.99754728  0.49258868
+2029	 -6.26250768	 -0.00152038	  0.00093116	  7.26098730	  0.99534813	  0.99754846  0.49258989
+2030	 -6.26254025	 -0.00151964	  0.00093071	  7.26102061	  0.99535040	  0.99754965  0.49259110
+2031	 -6.26257271	 -0.00151890	  0.00093027	  7.26105381	  0.99535267	  0.99755083  0.49259230
+2032	 -6.26260505	 -0.00151817	  0.00092982	  7.26108689	  0.99535493	  0.99755201  0.49259351
+2033	 -6.26263728	 -0.00151743	  0.00092937	  7.26111985	  0.99535720	  0.99755319  0.49259471
+2034	 -6.26266939	 -0.00151670	  0.00092893	  7.26115269	  0.99535946	  0.99755437  0.49259592
+2035	 -6.26270138	 -0.00151596	  0.00092848	  7.26118542	  0.99536172	  0.99755555  0.49259711
+2036	 -6.26273326	 -0.00151523	  0.00092804	  7.26121803	  0.99536398	  0.99755673  0.49259829
+2037	 -6.26276503	 -0.00151450	  0.00092760	  7.26125053	  0.99536623	  0.99755790  0.49259950
+2038	 -6.26279668	 -0.00151377	  0.00092715	  7.26128291	  0.99536849	  0.99755908  0.49260067
+2039	 -6.26282822	 -0.00151304	  0.00092671	  7.26131518	  0.99537074	  0.99756025  0.49260186
+2040	 -6.26285964	 -0.00151231	  0.00092627	  7.26134733	  0.99537299	  0.99756143  0.49260303
+2041	 -6.26289095	 -0.00151158	  0.00092582	  7.26137937	  0.99537524	  0.99756260  0.49260421
+2042	 -6.26292215	 -0.00151085	  0.00092538	  7.26141130	  0.99537748	  0.99756377  0.49260538
+2043	 -6.26295323	 -0.00151012	  0.00092494	  7.26144311	  0.99537972	  0.99756494  0.49260653
+2044	 -6.26298421	 -0.00150939	  0.00092450	  7.26147481	  0.99538196	  0.99756611  0.49260770
+2045	 -6.26301507	 -0.00150866	  0.00092406	  7.26150640	  0.99538420	  0.99756728  0.49260887
+2046	 -6.26304582	 -0.00150794	  0.00092362	  7.26153788	  0.99538644	  0.99756844  0.49261002
+2047	 -6.26307646	 -0.00150721	  0.00092318	  7.26156925	  0.99538867	  0.99756961  0.49261117
+2048	 -6.26310699	 -0.00150649	  0.00092274	  7.26160050	  0.99539091	  0.99757078  0.49261231
+2049	 -6.26313741	 -0.00150576	  0.00092230	  7.26163165	  0.99539314	  0.99757194  0.49261347
+2050	 -6.26316772	 -0.00150504	  0.00092186	  7.26166269	  0.99539536	  0.99757310  0.49261461
+2051	 -6.26319793	 -0.00150431	  0.00092142	  7.26169361	  0.99539759	  0.99757426  0.49261575
+2052	 -6.26322802	 -0.00150359	  0.00092098	  7.26172443	  0.99539981	  0.99757542  0.49261688
+2053	 -6.26325801	 -0.00150287	  0.00092055	  7.26175513	  0.99540204	  0.99757658  0.49261801
+2054	 -6.26328788	 -0.00150215	  0.00092011	  7.26178573	  0.99540426	  0.99757774  0.49261913
+2055	 -6.26331765	 -0.00150143	  0.00091967	  7.26181623	  0.99540647	  0.99757890  0.49262025
+2056	 -6.26334732	 -0.00150071	  0.00091924	  7.26184661	  0.99540869	  0.99758006  0.49262138
+2057	 -6.26337687	 -0.00149999	  0.00091880	  7.26187688	  0.99541090	  0.99758121  0.49262250
+2058	 -6.26340633	 -0.00149927	  0.00091836	  7.26190705	  0.99541311	  0.99758236  0.49262361
+2059	 -6.26343567	 -0.00149855	  0.00091793	  7.26193712	  0.99541532	  0.99758352  0.49262472
+2060	 -6.26346491	 -0.00149784	  0.00091749	  7.26196707	  0.99541753	  0.99758467  0.49262583
+2061	 -6.26349404	 -0.00149712	  0.00091706	  7.26199692	  0.99541974	  0.99758582  0.49262693
+2062	 -6.26352307	 -0.00149640	  0.00091662	  7.26202667	  0.99542194	  0.99758697  0.49262803
+2063	 -6.26355200	 -0.00149569	  0.00091619	  7.26205631	  0.99542414	  0.99758812  0.49262913
+2064	 -6.26358082	 -0.00149498	  0.00091576	  7.26208585	  0.99542634	  0.99758927  0.49263021
+2065	 -6.26360954	 -0.00149426	  0.00091532	  7.26211528	  0.99542854	  0.99759042  0.49263131
+2066	 -6.26363815	 -0.00149355	  0.00091489	  7.26214460	  0.99543073	  0.99759156  0.49263239
+2067	 -6.26366666	 -0.00149284	  0.00091446	  7.26217383	  0.99543292	  0.99759271  0.49263348
+2068	 -6.26369507	 -0.00149212	  0.00091403	  7.26220295	  0.99543511	  0.99759385  0.49263456
+2069	 -6.26372338	 -0.00149141	  0.00091359	  7.26223197	  0.99543730	  0.99759499  0.49263563
+2070	 -6.26375159	 -0.00149070	  0.00091316	  7.26226088	  0.99543949	  0.99759613  0.49263671
+2071	 -6.26377969	 -0.00148999	  0.00091273	  7.26228970	  0.99544167	  0.99759728  0.49263778
+2072	 -6.26380769	 -0.00148928	  0.00091230	  7.26231841	  0.99544386	  0.99759841  0.49263884
+2073	 -6.26383560	 -0.00148857	  0.00091187	  7.26234702	  0.99544604	  0.99759955  0.49263991
+2074	 -6.26386340	 -0.00148787	  0.00091144	  7.26237553	  0.99544821	  0.99760069  0.49264097
+2075	 -6.26389110	 -0.00148716	  0.00091101	  7.26240394	  0.99545039	  0.99760183  0.49264203
+2076	 -6.26391870	 -0.00148645	  0.00091058	  7.26243225	  0.99545257	  0.99760296  0.49264308
+2077	 -6.26394621	 -0.00148575	  0.00091016	  7.26246046	  0.99545474	  0.99760410  0.49264413
+2078	 -6.26397361	 -0.00148504	  0.00090973	  7.26248857	  0.99545691	  0.99760523  0.49264518
+2079	 -6.26400092	 -0.00148434	  0.00090930	  7.26251658	  0.99545908	  0.99760636  0.49264622
+2080	 -6.26402813	 -0.00148363	  0.00090887	  7.26254449	  0.99546124	  0.99760750  0.49264726
+2081	 -6.26405524	 -0.00148293	  0.00090844	  7.26257231	  0.99546341	  0.99760863  0.49264830
+2082	 -6.26408225	 -0.00148223	  0.00090802	  7.26260002	  0.99546557	  0.99760976  0.49264934
+2083	 -6.26410916	 -0.00148152	  0.00090759	  7.26262764	  0.99546773	  0.99761088  0.49265036
+2084	 -6.26413598	 -0.00148082	  0.00090717	  7.26265516	  0.99546989	  0.99761201  0.49265140
+2085	 -6.26416271	 -0.00148012	  0.00090674	  7.26268258	  0.99547204	  0.99761314  0.49265242
+2086	 -6.26418933	 -0.00147942	  0.00090631	  7.26270991	  0.99547420	  0.99761426  0.49265345
+2087	 -6.26421586	 -0.00147872	  0.00090589	  7.26273714	  0.99547635	  0.99761539  0.49265447
+2088	 -6.26424230	 -0.00147802	  0.00090547	  7.26276428	  0.99547850	  0.99761651  0.49265547
+2089	 -6.26426864	 -0.00147733	  0.00090504	  7.26279132	  0.99548065	  0.99761763  0.49265649
+2090	 -6.26429489	 -0.00147663	  0.00090462	  7.26281826	  0.99548279	  0.99761875  0.49265751
+2091	 -6.26432104	 -0.00147593	  0.00090419	  7.26284511	  0.99548494	  0.99761987  0.49265851
+2092	 -6.26434710	 -0.00147523	  0.00090377	  7.26287186	  0.99548708	  0.99762099  0.49265951
+2093	 -6.26437306	 -0.00147454	  0.00090335	  7.26289852	  0.99548922	  0.99762211  0.49266051
+2094	 -6.26439893	 -0.00147384	  0.00090293	  7.26292509	  0.99549136	  0.99762323  0.49266151
+2095	 -6.26442471	 -0.00147315	  0.00090250	  7.26295156	  0.99549349	  0.99762435  0.49266249
+2096	 -6.26445040	 -0.00147246	  0.00090208	  7.26297794	  0.99549563	  0.99762546  0.49266350
+2097	 -6.26447599	 -0.00147176	  0.00090166	  7.26300423	  0.99549776	  0.99762658  0.49266448
+2098	 -6.26450150	 -0.00147107	  0.00090124	  7.26303043	  0.99549989	  0.99762769  0.49266547
+2099	 -6.26452691	 -0.00147038	  0.00090082	  7.26305653	  0.99550202	  0.99762880  0.49266646
+2100	 -6.26455222	 -0.00146969	  0.00090040	  7.26308254	  0.99550415	  0.99762991  0.49266744
+2101	 -6.26457745	 -0.00146900	  0.00089998	  7.26310846	  0.99550627	  0.99763102  0.49266841
+2102	 -6.26460259	 -0.00146831	  0.00089956	  7.26313428	  0.99550839	  0.99763213  0.49266939
+2103	 -6.26462764	 -0.00146762	  0.00089914	  7.26316002	  0.99551051	  0.99763324  0.49267035
+2104	 -6.26465259	 -0.00146693	  0.00089872	  7.26318567	  0.99551263	  0.99763435  0.49267132
+2105	 -6.26467746	 -0.00146624	  0.00089831	  7.26321122	  0.99551475	  0.99763545  0.49267230
+2106	 -6.26470224	 -0.00146555	  0.00089789	  7.26323669	  0.99551686	  0.99763656  0.49267325
+2107	 -6.26472693	 -0.00146486	  0.00089747	  7.26326207	  0.99551898	  0.99763766  0.49267421
+2108	 -6.26475153	 -0.00146418	  0.00089705	  7.26328735	  0.99552109	  0.99763877  0.49267517
+2109	 -6.26477604	 -0.00146349	  0.00089664	  7.26331255	  0.99552319	  0.99763987  0.49267611
+2110	 -6.26480047	 -0.00146281	  0.00089622	  7.26333766	  0.99552530	  0.99764097  0.49267707
+2111	 -6.26482481	 -0.00146212	  0.00089580	  7.26336268	  0.99552741	  0.99764207  0.49267802
+2112	 -6.26484906	 -0.00146144	  0.00089539	  7.26338762	  0.99552951	  0.99764317  0.49267897
+2113	 -6.26487322	 -0.00146076	  0.00089497	  7.26341246	  0.99553161	  0.99764427  0.49267991
+2114	 -6.26489730	 -0.00146007	  0.00089456	  7.26343722	  0.99553371	  0.99764537  0.49268085
+2115	 -6.26492129	 -0.00145939	  0.00089414	  7.26346189	  0.99553581	  0.99764646  0.49268179
+2116	 -6.26494519	 -0.00145871	  0.00089373	  7.26348648	  0.99553790	  0.99764756  0.49268272
+2117	 -6.26496901	 -0.00145803	  0.00089332	  7.26351098	  0.99553999	  0.99764865  0.49268365
+2118	 -6.26499274	 -0.00145735	  0.00089290	  7.26353539	  0.99554209	  0.99764975  0.49268458
+2119	 -6.26501639	 -0.00145667	  0.00089249	  7.26355972	  0.99554417	  0.99765084  0.49268549
+2120	 -6.26503995	 -0.00145599	  0.00089208	  7.26358396	  0.99554626	  0.99765193  0.49268643
+2121	 -6.26506343	 -0.00145531	  0.00089166	  7.26360811	  0.99554835	  0.99765302  0.49268735
+2122	 -6.26508682	 -0.00145463	  0.00089125	  7.26363219	  0.99555043	  0.99765411  0.49268826
+2123	 -6.26511013	 -0.00145396	  0.00089084	  7.26365617	  0.99555251	  0.99765520  0.49268918
+2124	 -6.26513336	 -0.00145328	  0.00089043	  7.26368008	  0.99555459	  0.99765629  0.49269008
+2125	 -6.26515650	 -0.00145261	  0.00089002	  7.26370389	  0.99555667	  0.99765738  0.49269099
+2126	 -6.26517956	 -0.00145193	  0.00088961	  7.26372763	  0.99555875	  0.99765846  0.49269190
+2127	 -6.26520254	 -0.00145126	  0.00088920	  7.26375128	  0.99556082	  0.99765955  0.49269281
+2128	 -6.26522543	 -0.00145058	  0.00088879	  7.26377485	  0.99556289	  0.99766063  0.49269370
+2129	 -6.26524824	 -0.00144991	  0.00088838	  7.26379834	  0.99556496	  0.99766171  0.49269460
+2130	 -6.26527098	 -0.00144924	  0.00088797	  7.26382174	  0.99556703	  0.99766280  0.49269550
+2131	 -6.26529363	 -0.00144856	  0.00088756	  7.26384506	  0.99556910	  0.99766388  0.49269640
+2132	 -6.26531619	 -0.00144789	  0.00088715	  7.26386830	  0.99557116	  0.99766496  0.49269728
+2133	 -6.26533868	 -0.00144722	  0.00088674	  7.26389146	  0.99557323	  0.99766604  0.49269817
+2134	 -6.26536109	 -0.00144655	  0.00088634	  7.26391454	  0.99557529	  0.99766711  0.49269905
+2135	 -6.26538341	 -0.00144588	  0.00088593	  7.26393753	  0.99557735	  0.99766819  0.49269994
+2136	 -6.26540566	 -0.00144521	  0.00088552	  7.26396045	  0.99557940	  0.99766927  0.49270083
+2137	 -6.26542783	 -0.00144454	  0.00088511	  7.26398329	  0.99558146	  0.99767034  0.49270168
+2138	 -6.26544992	 -0.00144387	  0.00088471	  7.26400604	  0.99558351	  0.99767142  0.49270256
+2139	 -6.26547192	 -0.00144321	  0.00088430	  7.26402872	  0.99558556	  0.99767249  0.49270344
+2140	 -6.26549385	 -0.00144254	  0.00088390	  7.26405131	  0.99558761	  0.99767356  0.49270431
+2141	 -6.26551570	 -0.00144187	  0.00088349	  7.26407383	  0.99558966	  0.99767463  0.49270518
+2142	 -6.26553748	 -0.00144121	  0.00088309	  7.26409627	  0.99559171	  0.99767571  0.49270604
+2143	 -6.26555917	 -0.00144054	  0.00088268	  7.26411863	  0.99559375	  0.99767678  0.49270690
+2144	 -6.26558079	 -0.00143988	  0.00088228	  7.26414091	  0.99559579	  0.99767784  0.49270776
+2145	 -6.26560233	 -0.00143922	  0.00088187	  7.26416311	  0.99559783	  0.99767891  0.49270862
+2146	 -6.26562379	 -0.00143855	  0.00088147	  7.26418524	  0.99559987	  0.99767998  0.49270947
+2147	 -6.26564518	 -0.00143789	  0.00088107	  7.26420729	  0.99560191	  0.99768104  0.49271032
+2148	 -6.26566648	 -0.00143723	  0.00088066	  7.26422926	  0.99560394	  0.99768211  0.49271118
+2149	 -6.26568772	 -0.00143657	  0.00088026	  7.26425115	  0.99560598	  0.99768317  0.49271202
+2150	 -6.26570887	 -0.00143590	  0.00087986	  7.26427297	  0.99560801	  0.99768424  0.49271286
+2151	 -6.26572995	 -0.00143524	  0.00087946	  7.26429471	  0.99561004	  0.99768530  0.49271371
+2152	 -6.26575096	 -0.00143458	  0.00087906	  7.26431637	  0.99561206	  0.99768636  0.49271455
+2153	 -6.26577189	 -0.00143393	  0.00087865	  7.26433796	  0.99561409	  0.99768742  0.49271537
+2154	 -6.26579274	 -0.00143327	  0.00087825	  7.26435948	  0.99561611	  0.99768848  0.49271621
+2155	 -6.26581352	 -0.00143261	  0.00087785	  7.26438092	  0.99561813	  0.99768954  0.49271704
+2156	 -6.26583423	 -0.00143195	  0.00087745	  7.26440228	  0.99562015	  0.99769059  0.49271787
+2157	 -6.26585486	 -0.00143130	  0.00087705	  7.26442357	  0.99562217	  0.99769165  0.49271871
+2158	 -6.26587542	 -0.00143064	  0.00087665	  7.26444478	  0.99562419	  0.99769271  0.49271954
+2159	 -6.26589591	 -0.00142998	  0.00087626	  7.26446592	  0.99562620	  0.99769376  0.49272035
+2160	 -6.26591632	 -0.00142933	  0.00087586	  7.26448699	  0.99562822	  0.99769482  0.49272117
+2161	 -6.26593666	 -0.00142867	  0.00087546	  7.26450798	  0.99563023	  0.99769587  0.49272198
+2162	 -6.26595692	 -0.00142802	  0.00087506	  7.26452890	  0.99563224	  0.99769692  0.49272279
+2163	 -6.26597711	 -0.00142737	  0.00087466	  7.26454975	  0.99563424	  0.99769797  0.49272362
+2164	 -6.26599724	 -0.00142671	  0.00087426	  7.26457052	  0.99563625	  0.99769902  0.49272441
+2165	 -6.26601728	 -0.00142606	  0.00087387	  7.26459122	  0.99563825	  0.99770007  0.49272522
+2166	 -6.26603726	 -0.00142541	  0.00087347	  7.26461185	  0.99564025	  0.99770112  0.49272604
+2167	 -6.26605717	 -0.00142476	  0.00087307	  7.26463241	  0.99564225	  0.99770217  0.49272683
+2168	 -6.26607700	 -0.00142411	  0.00087268	  7.26465289	  0.99564425	  0.99770321  0.49272764
+2169	 -6.26609676	 -0.00142346	  0.00087228	  7.26467331	  0.99564625	  0.99770426  0.49272843
+2170	 -6.26611646	 -0.00142281	  0.00087189	  7.26469365	  0.99564824	  0.99770530  0.49272921
+2171	 -6.26613608	 -0.00142216	  0.00087149	  7.26471392	  0.99565024	  0.99770635  0.49273003
+2172	 -6.26615563	 -0.00142151	  0.00087110	  7.26473412	  0.99565223	  0.99770739  0.49273081
+2173	 -6.26617512	 -0.00142087	  0.00087070	  7.26475425	  0.99565422	  0.99770843  0.49273160
+2174	 -6.26619453	 -0.00142022	  0.00087031	  7.26477431	  0.99565620	  0.99770947  0.49273238
+2175	 -6.26621387	 -0.00141957	  0.00086992	  7.26479430	  0.99565819	  0.99771051  0.49273317
+2176	 -6.26623315	 -0.00141893	  0.00086952	  7.26481422	  0.99566017	  0.99771155  0.49273396
+2177	 -6.26625235	 -0.00141828	  0.00086913	  7.26483407	  0.99566216	  0.99771259  0.49273473
+2178	 -6.26627149	 -0.00141764	  0.00086874	  7.26485385	  0.99566414	  0.99771362  0.49273551
+2179	 -6.26629056	 -0.00141699	  0.00086835	  7.26487356	  0.99566612	  0.99771466  0.49273628
+2180	 -6.26630956	 -0.00141635	  0.00086795	  7.26489321	  0.99566809	  0.99771570  0.49273706
+2181	 -6.26632849	 -0.00141571	  0.00086756	  7.26491278	  0.99567007	  0.99771673  0.49273783
+2182	 -6.26634735	 -0.00141506	  0.00086717	  7.26493229	  0.99567204	  0.99771776  0.49273859
+2183	 -6.26636615	 -0.00141442	  0.00086678	  7.26495173	  0.99567401	  0.99771880  0.49273935
+2184	 -6.26638488	 -0.00141378	  0.00086639	  7.26497110	  0.99567598	  0.99771983  0.49274013
+2185	 -6.26640355	 -0.00141314	  0.00086600	  7.26499041	  0.99567795	  0.99772086  0.49274089
+2186	 -6.26642214	 -0.00141250	  0.00086561	  7.26500964	  0.99567992	  0.99772189  0.49274164
+2187	 -6.26644067	 -0.00141186	  0.00086522	  7.26502881	  0.99568188	  0.99772292  0.49274241
+2188	 -6.26645914	 -0.00141122	  0.00086483	  7.26504792	  0.99568384	  0.99772395  0.49274316
+2189	 -6.26647754	 -0.00141058	  0.00086444	  7.26506695	  0.99568580	  0.99772497  0.49274392
+2190	 -6.26649587	 -0.00140995	  0.00086405	  7.26508592	  0.99568776	  0.99772600  0.49274466
+2191	 -6.26651414	 -0.00140931	  0.00086366	  7.26510483	  0.99568972	  0.99772703  0.49274542
+2192	 -6.26653234	 -0.00140867	  0.00086328	  7.26512367	  0.99569168	  0.99772805  0.49274618
+2193	 -6.26655048	 -0.00140804	  0.00086289	  7.26514244	  0.99569363	  0.99772908  0.49274690
+2194	 -6.26656855	 -0.00140740	  0.00086250	  7.26516115	  0.99569558	  0.99773010  0.49274765
+2195	 -6.26658656	 -0.00140677	  0.00086211	  7.26517979	  0.99569753	  0.99773112  0.49274839
+2196	 -6.26660450	 -0.00140613	  0.00086173	  7.26519837	  0.99569948	  0.99773214  0.49274912
+2197	 -6.26662238	 -0.00140550	  0.00086134	  7.26521688	  0.99570143	  0.99773316  0.49274986
+2198	 -6.26664020	 -0.00140486	  0.00086096	  7.26523533	  0.99570337	  0.99773418  0.49275059
+2199	 -6.26665795	 -0.00140423	  0.00086057	  7.26525372	  0.99570532	  0.99773520  0.49275132
+2200	 -6.26667564	 -0.00140360	  0.00086018	  7.26527204	  0.99570726	  0.99773622  0.49275206
+2201	 -6.26669326	 -0.00140297	  0.00085980	  7.26529030	  0.99570920	  0.99773723  0.49275276
+2202	 -6.26671083	 -0.00140234	  0.00085942	  7.26530849	  0.99571114	  0.99773825  0.49275350
+2203	 -6.26672833	 -0.00140171	  0.00085903	  7.26532662	  0.99571307	  0.99773926  0.49275423
+2204	 -6.26674577	 -0.00140108	  0.00085865	  7.26534469	  0.99571501	  0.99774028  0.49275495
+2205	 -6.26676314	 -0.00140045	  0.00085826	  7.26536270	  0.99571694	  0.99774129  0.49275567
+2206	 -6.26678046	 -0.00139982	  0.00085788	  7.26538064	  0.99571887	  0.99774230  0.49275639
+2207	 -6.26679771	 -0.00139919	  0.00085750	  7.26539852	  0.99572080	  0.99774331  0.49275711
+2208	 -6.26681490	 -0.00139856	  0.00085711	  7.26541634	  0.99572273	  0.99774433  0.49275782
+2209	 -6.26683203	 -0.00139793	  0.00085673	  7.26543410	  0.99572466	  0.99774533  0.49275852
+2210	 -6.26684910	 -0.00139731	  0.00085635	  7.26545179	  0.99572658	  0.99774634  0.49275924
+2211	 -6.26686611	 -0.00139668	  0.00085597	  7.26546943	  0.99572851	  0.99774735  0.49275995
+2212	 -6.26688306	 -0.00139605	  0.00085559	  7.26548700	  0.99573043	  0.99774836  0.49276065
+2213	 -6.26689994	 -0.00139543	  0.00085521	  7.26550451	  0.99573235	  0.99774936  0.49276134
+2214	 -6.26691677	 -0.00139481	  0.00085482	  7.26552196	  0.99573426	  0.99775037  0.49276204
+2215	 -6.26693354	 -0.00139418	  0.00085444	  7.26553936	  0.99573618	  0.99775137  0.49276274
+2216	 -6.26695024	 -0.00139356	  0.00085406	  7.26555669	  0.99573809	  0.99775238  0.49276344
+2217	 -6.26696689	 -0.00139293	  0.00085368	  7.26557396	  0.99574001	  0.99775338  0.49276413
+2218	 -6.26698348	 -0.00139231	  0.00085331	  7.26559117	  0.99574192	  0.99775438  0.49276484
+2219	 -6.26700001	 -0.00139169	  0.00085293	  7.26560832	  0.99574383	  0.99775538  0.49276553
+2220	 -6.26701648	 -0.00139107	  0.00085255	  7.26562541	  0.99574574	  0.99775638  0.49276621
+2221	 -6.26703289	 -0.00139045	  0.00085217	  7.26564245	  0.99574764	  0.99775738  0.49276691
+2222	 -6.26704925	 -0.00138983	  0.00085179	  7.26565942	  0.99574955	  0.99775838  0.49276759
+2223	 -6.26706554	 -0.00138921	  0.00085141	  7.26567633	  0.99575145	  0.99775938  0.49276826
+2224	 -6.26708178	 -0.00138859	  0.00085104	  7.26569319	  0.99575335	  0.99776038  0.49276895
+2225	 -6.26709796	 -0.00138797	  0.00085066	  7.26570999	  0.99575525	  0.99776137  0.49276963
+2226	 -6.26711408	 -0.00138735	  0.00085028	  7.26572673	  0.99575715	  0.99776237  0.49277030
+2227	 -6.26713015	 -0.00138674	  0.00084990	  7.26574341	  0.99575904	  0.99776336  0.49277097
+2228	 -6.26714616	 -0.00138612	  0.00084953	  7.26576004	  0.99576094	  0.99776435  0.49277165
+2229	 -6.26716211	 -0.00138550	  0.00084915	  7.26577661	  0.99576283	  0.99776535  0.49277232
+2230	 -6.26717800	 -0.00138489	  0.00084878	  7.26579312	  0.99576472	  0.99776634  0.49277298
+2231	 -6.26719384	 -0.00138427	  0.00084840	  7.26580957	  0.99576661	  0.99776733  0.49277366
+2232	 -6.26720962	 -0.00138366	  0.00084803	  7.26582597	  0.99576850	  0.99776832  0.49277432
+2233	 -6.26722535	 -0.00138304	  0.00084765	  7.26584231	  0.99577038	  0.99776931  0.49277499
+2234	 -6.26724102	 -0.00138243	  0.00084728	  7.26585859	  0.99577227	  0.99777029  0.49277565
+2235	 -6.26725663	 -0.00138181	  0.00084690	  7.26587482	  0.99577415	  0.99777128  0.49277630
+2236	 -6.26727219	 -0.00138120	  0.00084653	  7.26589099	  0.99577603	  0.99777227  0.49277698
+2237	 -6.26728769	 -0.00138059	  0.00084616	  7.26590710	  0.99577791	  0.99777325  0.49277763
+2238	 -6.26730314	 -0.00137998	  0.00084578	  7.26592316	  0.99577979	  0.99777424  0.49277828
+2239	 -6.26731854	 -0.00137937	  0.00084541	  7.26593917	  0.99578166	  0.99777522  0.49277893
+2240	 -6.26733388	 -0.00137876	  0.00084504	  7.26595512	  0.99578354	  0.99777621  0.49277959
+2241	 -6.26734916	 -0.00137815	  0.00084467	  7.26597101	  0.99578541	  0.99777719  0.49278024
+2242	 -6.26736439	 -0.00137754	  0.00084429	  7.26598685	  0.99578728	  0.99777817  0.49278088
+2243	 -6.26737957	 -0.00137693	  0.00084392	  7.26600264	  0.99578915	  0.99777915  0.49278153
+2244	 -6.26739469	 -0.00137632	  0.00084355	  7.26601837	  0.99579102	  0.99778013  0.49278219
+2245	 -6.26740976	 -0.00137571	  0.00084318	  7.26603405	  0.99579289	  0.99778111  0.49278281
+2246	 -6.26742477	 -0.00137510	  0.00084281	  7.26604967	  0.99579475	  0.99778209  0.49278347
+2247	 -6.26743974	 -0.00137450	  0.00084244	  7.26606524	  0.99579661	  0.99778306  0.49278410
+2248	 -6.26745464	 -0.00137389	  0.00084207	  7.26608075	  0.99579847	  0.99778404  0.49278472
+2249	 -6.26746950	 -0.00137328	  0.00084170	  7.26609622	  0.99580033	  0.99778502  0.49278536
+2250	 -6.26748430	 -0.00137268	  0.00084133	  7.26611162	  0.99580219	  0.99778599  0.49278600
+2251	 -6.26749906	 -0.00137207	  0.00084096	  7.26612698	  0.99580405	  0.99778696  0.49278663
+2252	 -6.26751375	 -0.00137147	  0.00084059	  7.26614228	  0.99580590	  0.99778794  0.49278724
+2253	 -6.26752840	 -0.00137087	  0.00084022	  7.26615753	  0.99580776	  0.99778891  0.49278789
+2254	 -6.26754300	 -0.00137026	  0.00083986	  7.26617273	  0.99580961	  0.99778988  0.49278852
+2255	 -6.26755754	 -0.00136966	  0.00083949	  7.26618788	  0.99581146	  0.99779085  0.49278914
+2256	 -6.26757203	 -0.00136906	  0.00083912	  7.26620297	  0.99581331	  0.99779182  0.49278975
+2257	 -6.26758647	 -0.00136846	  0.00083875	  7.26621801	  0.99581515	  0.99779279  0.49279037
+2258	 -6.26760086	 -0.00136786	  0.00083839	  7.26623300	  0.99581700	  0.99779376  0.49279099
+2259	 -6.26761520	 -0.00136725	  0.00083802	  7.26624794	  0.99581884	  0.99779472  0.49279161
+2260	 -6.26762949	 -0.00136665	  0.00083765	  7.26626283	  0.99582068	  0.99779569  0.49279223
+2261	 -6.26764372	 -0.00136605	  0.00083729	  7.26627767	  0.99582252	  0.99779666  0.49279284
+2262	 -6.26765791	 -0.00136546	  0.00083692	  7.26629245	  0.99582436	  0.99779762  0.49279345
+2263	 -6.26767205	 -0.00136486	  0.00083656	  7.26630719	  0.99582620	  0.99779859  0.49279407
+2264	 -6.26768613	 -0.00136426	  0.00083619	  7.26632187	  0.99582804	  0.99779955  0.49279468
+2265	 -6.26770017	 -0.00136366	  0.00083583	  7.26633651	  0.99582987	  0.99780051  0.49279528
+2266	 -6.26771416	 -0.00136306	  0.00083546	  7.26635109	  0.99583170	  0.99780147  0.49279588
+2267	 -6.26772809	 -0.00136247	  0.00083510	  7.26636562	  0.99583353	  0.99780243  0.49279649
+2268	 -6.26774198	 -0.00136187	  0.00083474	  7.26638011	  0.99583536	  0.99780339  0.49279710
+2269	 -6.26775582	 -0.00136128	  0.00083437	  7.26639454	  0.99583719	  0.99780435  0.49279770
+2270	 -6.26776961	 -0.00136068	  0.00083401	  7.26640893	  0.99583902	  0.99780531  0.49279829
+2271	 -6.26778335	 -0.00136009	  0.00083365	  7.26642326	  0.99584084	  0.99780627  0.49279888
+2272	 -6.26779704	 -0.00135949	  0.00083328	  7.26643755	  0.99584266	  0.99780722  0.49279946
+2273	 -6.26781069	 -0.00135890	  0.00083292	  7.26645179	  0.99584449	  0.99780818  0.49280008
+2274	 -6.26782428	 -0.00135831	  0.00083256	  7.26646598	  0.99584631	  0.99780913  0.49280067
+2275	 -6.26783783	 -0.00135771	  0.00083220	  7.26648012	  0.99584812	  0.99781009  0.49280125
+2276	 -6.26785133	 -0.00135712	  0.00083184	  7.26649421	  0.99584994	  0.99781104  0.49280185
+2277	 -6.26786479	 -0.00135653	  0.00083148	  7.26650826	  0.99585175	  0.99781199  0.49280244
+2278	 -6.26787819	 -0.00135594	  0.00083111	  7.26652225	  0.99585357	  0.99781295  0.49280301
+2279	 -6.26789155	 -0.00135535	  0.00083075	  7.26653620	  0.99585538	  0.99781390  0.49280360
+2280	 -6.26790486	 -0.00135476	  0.00083039	  7.26655010	  0.99585719	  0.99781485  0.49280419
+2281	 -6.26791812	 -0.00135417	  0.00083003	  7.26656395	  0.99585900	  0.99781580  0.49280476
+2282	 -6.26793134	 -0.00135358	  0.00082967	  7.26657776	  0.99586081	  0.99781675  0.49280534
+2283	 -6.26794451	 -0.00135299	  0.00082931	  7.26659152	  0.99586261	  0.99781769  0.49280594
+2284	 -6.26795764	 -0.00135240	  0.00082896	  7.26660523	  0.99586442	  0.99781864  0.49280650
+2285	 -6.26797071	 -0.00135182	  0.00082860	  7.26661890	  0.99586622	  0.99781959  0.49280708
+2286	 -6.26798374	 -0.00135123	  0.00082824	  7.26663252	  0.99586802	  0.99782053  0.49280764
+2287	 -6.26799673	 -0.00135064	  0.00082788	  7.26664609	  0.99586982	  0.99782148  0.49280822
+2288	 -6.26800967	 -0.00135006	  0.00082752	  7.26665961	  0.99587162	  0.99782242  0.49280878
+2289	 -6.26802256	 -0.00134947	  0.00082717	  7.26667309	  0.99587341	  0.99782336  0.49280935
+2290	 -6.26803541	 -0.00134889	  0.00082681	  7.26668653	  0.99587521	  0.99782431  0.49280992
+2291	 -6.26804822	 -0.00134830	  0.00082645	  7.26669991	  0.99587700	  0.99782525  0.49281048
+2292	 -6.26806098	 -0.00134772	  0.00082609	  7.26671326	  0.99587879	  0.99782619  0.49281107
+2293	 -6.26807369	 -0.00134713	  0.00082574	  7.26672655	  0.99588058	  0.99782713  0.49281162
+2294	 -6.26808636	 -0.00134655	  0.00082538	  7.26673981	  0.99588237	  0.99782807  0.49281218
+2295	 -6.26809898	 -0.00134597	  0.00082503	  7.26675301	  0.99588416	  0.99782900  0.49281274
+2296	 -6.26811156	 -0.00134539	  0.00082467	  7.26676617	  0.99588595	  0.99782994  0.49281329
+2297	 -6.26812410	 -0.00134481	  0.00082432	  7.26677929	  0.99588773	  0.99783088  0.49281384
+2298	 -6.26813659	 -0.00134422	  0.00082396	  7.26679236	  0.99588951	  0.99783181  0.49281439
+2299	 -6.26814904	 -0.00134364	  0.00082361	  7.26680539	  0.99589129	  0.99783275  0.49281496
+2300	 -6.26816144	 -0.00134306	  0.00082325	  7.26681838	  0.99589307	  0.99783368  0.49281552
+2301	 -6.26817380	 -0.00134248	  0.00082290	  7.26683132	  0.99589485	  0.99783462  0.49281605
+2302	 -6.26818612	 -0.00134191	  0.00082255	  7.26684421	  0.99589663	  0.99783555  0.49281661
+2303	 -6.26819839	 -0.00134133	  0.00082219	  7.26685706	  0.99589840	  0.99783648  0.49281716
+2304	 -6.26821062	 -0.00134075	  0.00082184	  7.26686987	  0.99590018	  0.99783741  0.49281769
+2305	 -6.26822281	 -0.00134017	  0.00082149	  7.26688264	  0.99590195	  0.99783834  0.49281824
+2306	 -6.26823495	 -0.00133959	  0.00082113	  7.26689536	  0.99590372	  0.99783927  0.49281878
+2307	 -6.26824705	 -0.00133902	  0.00082078	  7.26690804	  0.99590549	  0.99784020  0.49281933
+2308	 -6.26825911	 -0.00133844	  0.00082043	  7.26692067	  0.99590725	  0.99784113  0.49281987
+2309	 -6.26827113	 -0.00133787	  0.00082008	  7.26693326	  0.99590902	  0.99784206  0.49282040
+2310	 -6.26828310	 -0.00133729	  0.00081973	  7.26694581	  0.99591078	  0.99784298  0.49282094
+2311	 -6.26829504	 -0.00133672	  0.00081938	  7.26695832	  0.99591255	  0.99784391  0.49282147
+2312	 -6.26830693	 -0.00133614	  0.00081902	  7.26697079	  0.99591431	  0.99784483  0.49282201
+2313	 -6.26831878	 -0.00133557	  0.00081867	  7.26698321	  0.99591607	  0.99784576  0.49282254
+2314	 -6.26833058	 -0.00133499	  0.00081832	  7.26699559	  0.99591783	  0.99784668  0.49282308
+2315	 -6.26834235	 -0.00133442	  0.00081797	  7.26700793	  0.99591958	  0.99784760  0.49282360
+2316	 -6.26835407	 -0.00133385	  0.00081762	  7.26702023	  0.99592134	  0.99784853  0.49282414
+2317	 -6.26836576	 -0.00133328	  0.00081728	  7.26703248	  0.99592309	  0.99784945  0.49282465
+2318	 -6.26837740	 -0.00133271	  0.00081693	  7.26704469	  0.99592485	  0.99785037  0.49282520
+2319	 -6.26838900	 -0.00133214	  0.00081658	  7.26705687	  0.99592660	  0.99785129  0.49282572
+2320	 -6.26840056	 -0.00133157	  0.00081623	  7.26706900	  0.99592835	  0.99785221  0.49282624
+2321	 -6.26841209	 -0.00133100	  0.00081588	  7.26708109	  0.99593009	  0.99785312  0.49282676
+2322	 -6.26842357	 -0.00133043	  0.00081553	  7.26709314	  0.99593184	  0.99785404  0.49282728
+2323	 -6.26843501	 -0.00132986	  0.00081519	  7.26710515	  0.99593359	  0.99785496  0.49282780
+2324	 -6.26844641	 -0.00132929	  0.00081484	  7.26711712	  0.99593533	  0.99785587  0.49282829
+2325	 -6.26845777	 -0.00132872	  0.00081449	  7.26712905	  0.99593707	  0.99785679  0.49282883
+2326	 -6.26846909	 -0.00132815	  0.00081414	  7.26714093	  0.99593881	  0.99785770  0.49282934
+2327	 -6.26848037	 -0.00132759	  0.00081380	  7.26715278	  0.99594055	  0.99785862  0.49282986
+2328	 -6.26849161	 -0.00132702	  0.00081345	  7.26716459	  0.99594229	  0.99785953  0.49283037
+2329	 -6.26850281	 -0.00132645	  0.00081311	  7.26717636	  0.99594402	  0.99786044  0.49283087
+2330	 -6.26851397	 -0.00132589	  0.00081276	  7.26718809	  0.99594576	  0.99786135  0.49283138
+2331	 -6.26852510	 -0.00132532	  0.00081242	  7.26719977	  0.99594749	  0.99786226  0.49283189
+2332	 -6.26853618	 -0.00132476	  0.00081207	  7.26721142	  0.99594922	  0.99786317  0.49283239
+2333	 -6.26854723	 -0.00132419	  0.00081173	  7.26722303	  0.99595095	  0.99786408  0.49283291
+2334	 -6.26855824	 -0.00132363	  0.00081138	  7.26723461	  0.99595268	  0.99786499  0.49283341
+2335	 -6.26856921	 -0.00132307	  0.00081104	  7.26724614	  0.99595441	  0.99786590  0.49283391
+2336	 -6.26858014	 -0.00132251	  0.00081069	  7.26725763	  0.99595614	  0.99786680  0.49283441
+2337	 -6.26859103	 -0.00132194	  0.00081035	  7.26726909	  0.99595786	  0.99786771  0.49283490
+2338	 -6.26860188	 -0.00132138	  0.00081001	  7.26728050	  0.99595958	  0.99786861  0.49283543
+2339	 -6.26861270	 -0.00132082	  0.00080966	  7.26729188	  0.99596131	  0.99786952  0.49283590
+2340	 -6.26862348	 -0.00132026	  0.00080932	  7.26730322	  0.99596303	  0.99787042  0.49283641
+2341	 -6.26863422	 -0.00131970	  0.00080898	  7.26731452	  0.99596474	  0.99787132  0.49283690
+2342	 -6.26864493	 -0.00131914	  0.00080864	  7.26732579	  0.99596646	  0.99787223  0.49283740
+2343	 -6.26865559	 -0.00131858	  0.00080829	  7.26733701	  0.99596818	  0.99787313  0.49283789
+2344	 -6.26866622	 -0.00131802	  0.00080795	  7.26734820	  0.99596989	  0.99787403  0.49283838
+2345	 -6.26867681	 -0.00131746	  0.00080761	  7.26735935	  0.99597160	  0.99787493  0.49283886
+2346	 -6.26868737	 -0.00131690	  0.00080727	  7.26737047	  0.99597332	  0.99787583  0.49283935
+2347	 -6.26869789	 -0.00131635	  0.00080693	  7.26738154	  0.99597503	  0.99787673  0.49283983
+2348	 -6.26870837	 -0.00131579	  0.00080659	  7.26739258	  0.99597673	  0.99787762  0.49284032
+2349	 -6.26871882	 -0.00131523	  0.00080625	  7.26740358	  0.99597844	  0.99787852  0.49284083
+2350	 -6.26872923	 -0.00131468	  0.00080591	  7.26741455	  0.99598015	  0.99787942  0.49284129
+2351	 -6.26873960	 -0.00131412	  0.00080557	  7.26742548	  0.99598185	  0.99788031  0.49284178
+2352	 -6.26874993	 -0.00131357	  0.00080523	  7.26743637	  0.99598355	  0.99788121  0.49284226
+2353	 -6.26876024	 -0.00131301	  0.00080489	  7.26744723	  0.99598526	  0.99788210  0.49284273
+2354	 -6.26877050	 -0.00131246	  0.00080455	  7.26745804	  0.99598696	  0.99788299  0.49284320
+2355	 -6.26878073	 -0.00131190	  0.00080421	  7.26746883	  0.99598865	  0.99788389  0.49284369
+2356	 -6.26879092	 -0.00131135	  0.00080387	  7.26747958	  0.99599035	  0.99788478  0.49284417
+2357	 -6.26880108	 -0.00131080	  0.00080354	  7.26749029	  0.99599205	  0.99788567  0.49284465
+2358	 -6.26881120	 -0.00131024	  0.00080320	  7.26750096	  0.99599374	  0.99788656  0.49284510
+2359	 -6.26882129	 -0.00130969	  0.00080286	  7.26751160	  0.99599543	  0.99788745  0.49284559
+2360	 -6.26883135	 -0.00130914	  0.00080252	  7.26752221	  0.99599713	  0.99788834  0.49284606
+2361	 -6.26884136	 -0.00130859	  0.00080219	  7.26753278	  0.99599882	  0.99788923  0.49284653
+2362	 -6.26885135	 -0.00130804	  0.00080185	  7.26754331	  0.99600050	  0.99789011  0.49284699
+2363	 -6.26886129	 -0.00130749	  0.00080151	  7.26755381	  0.99600219	  0.99789100  0.49284746
+2364	 -6.26887121	 -0.00130694	  0.00080118	  7.26756427	  0.99600388	  0.99789189  0.49284793
+2365	 -6.26888109	 -0.00130639	  0.00080084	  7.26757470	  0.99600556	  0.99789277  0.49284838
+2366	 -6.26889093	 -0.00130584	  0.00080051	  7.26758509	  0.99600724	  0.99789365  0.49284885
+2367	 -6.26890074	 -0.00130529	  0.00080017	  7.26759545	  0.99600893	  0.99789454  0.49284932
+2368	 -6.26891052	 -0.00130474	  0.00079984	  7.26760578	  0.99601061	  0.99789542  0.49284977
+2369	 -6.26892026	 -0.00130420	  0.00079950	  7.26761607	  0.99601228	  0.99789630  0.49285024
+2370	 -6.26892997	 -0.00130365	  0.00079917	  7.26762633	  0.99601396	  0.99789719  0.49285069
+2371	 -6.26893965	 -0.00130310	  0.00079883	  7.26763655	  0.99601564	  0.99789807  0.49285114
+2372	 -6.26894929	 -0.00130256	  0.00079850	  7.26764674	  0.99601731	  0.99789895  0.49285162
+2373	 -6.26895890	 -0.00130201	  0.00079816	  7.26765689	  0.99601899	  0.99789983  0.49285206
+2374	 -6.26896848	 -0.00130146	  0.00079783	  7.26766701	  0.99602066	  0.99790070  0.49285251
+2375	 -6.26897802	 -0.00130092	  0.00079750	  7.26767710	  0.99602233	  0.99790158  0.49285297
+2376	 -6.26898753	 -0.00130038	  0.00079717	  7.26768715	  0.99602400	  0.99790246  0.49285344
+2377	 -6.26899700	 -0.00129983	  0.00079683	  7.26769717	  0.99602566	  0.99790334  0.49285388
+2378	 -6.26900645	 -0.00129929	  0.00079650	  7.26770716	  0.99602733	  0.99790421  0.49285432
+2379	 -6.26901586	 -0.00129875	  0.00079617	  7.26771711	  0.99602900	  0.99790509  0.49285477
+2380	 -6.26902524	 -0.00129820	  0.00079584	  7.26772703	  0.99603066	  0.99790596  0.49285523
+2381	 -6.26903458	 -0.00129766	  0.00079550	  7.26773692	  0.99603232	  0.99790683  0.49285566
+2382	 -6.26904390	 -0.00129712	  0.00079517	  7.26774678	  0.99603398	  0.99790771  0.49285611
+2383	 -6.26905318	 -0.00129658	  0.00079484	  7.26775660	  0.99603564	  0.99790858  0.49285655
+2384	 -6.26906243	 -0.00129604	  0.00079451	  7.26776639	  0.99603730	  0.99790945  0.49285701
+2385	 -6.26907164	 -0.00129550	  0.00079418	  7.26777615	  0.99603896	  0.99791032  0.49285743
+2386	 -6.26908083	 -0.00129496	  0.00079385	  7.26778587	  0.99604061	  0.99791119  0.49285787
+2387	 -6.26908998	 -0.00129442	  0.00079352	  7.26779557	  0.99604227	  0.99791206  0.49285833
+2388	 -6.26909911	 -0.00129388	  0.00079319	  7.26780523	  0.99604392	  0.99791293  0.49285876
+2389	 -6.26910820	 -0.00129334	  0.00079286	  7.26781486	  0.99604557	  0.99791380  0.49285921
+2390	 -6.26911726	 -0.00129280	  0.00079253	  7.26782446	  0.99604722	  0.99791467  0.49285963
+2391	 -6.26912629	 -0.00129226	  0.00079220	  7.26783402	  0.99604887	  0.99791553  0.49286007
+2392	 -6.26913528	 -0.00129173	  0.00079188	  7.26784356	  0.99605051	  0.99791640  0.49286049
+2393	 -6.26914425	 -0.00129119	  0.00079155	  7.26785306	  0.99605216	  0.99791726  0.49286093
+2394	 -6.26915318	 -0.00129065	  0.00079122	  7.26786253	  0.99605380	  0.99791813  0.49286138
+2395	 -6.26916209	 -0.00129012	  0.00079089	  7.26787197	  0.99605545	  0.99791899  0.49286178
+2396	 -6.26917096	 -0.00128958	  0.00079056	  7.26788138	  0.99605709	  0.99791985  0.49286223
+2397	 -6.26917981	 -0.00128905	  0.00079024	  7.26789076	  0.99605873	  0.99792072  0.49286266
+2398	 -6.26918862	 -0.00128851	  0.00078991	  7.26790011	  0.99606037	  0.99792158  0.49286308
+2399	 -6.26919740	 -0.00128798	  0.00078958	  7.26790942	  0.99606201	  0.99792244  0.49286350
+2400	 -6.26920615	 -0.00128744	  0.00078926	  7.26791871	  0.99606364	  0.99792330  0.49286392
+2401	 -6.26921488	 -0.00128691	  0.00078893	  7.26792797	  0.99606528	  0.99792416  0.49286436
+2402	 -6.26922357	 -0.00128638	  0.00078860	  7.26793719	  0.99606691	  0.99792502  0.49286478
+2403	 -6.26923223	 -0.00128585	  0.00078828	  7.26794639	  0.99606854	  0.99792588  0.49286521
+2404	 -6.26924086	 -0.00128531	  0.00078795	  7.26795555	  0.99607017	  0.99792673  0.49286564
+2405	 -6.26924947	 -0.00128478	  0.00078763	  7.26796468	  0.99607180	  0.99792759  0.49286605
+2406	 -6.26925804	 -0.00128425	  0.00078730	  7.26797379	  0.99607343	  0.99792845  0.49286646
+2407	 -6.26926658	 -0.00128372	  0.00078698	  7.26798286	  0.99607506	  0.99792930  0.49286689
+2408	 -6.26927510	 -0.00128319	  0.00078665	  7.26799191	  0.99607668	  0.99793016  0.49286730
+2409	 -6.26928358	 -0.00128266	  0.00078633	  7.26800092	  0.99607831	  0.99793101  0.49286770
+2410	 -6.26929204	 -0.00128213	  0.00078601	  7.26800991	  0.99607993	  0.99793186  0.49286812
+2411	 -6.26930047	 -0.00128160	  0.00078568	  7.26801887	  0.99608155	  0.99793272  0.49286854
+2412	 -6.26930887	 -0.00128107	  0.00078536	  7.26802779	  0.99608317	  0.99793357  0.49286895
+2413	 -6.26931724	 -0.00128054	  0.00078504	  7.26803669	  0.99608479	  0.99793442  0.49286937
+2414	 -6.26932558	 -0.00128002	  0.00078471	  7.26804556	  0.99608641	  0.99793527  0.49286977
+2415	 -6.26933389	 -0.00127949	  0.00078439	  7.26805440	  0.99608802	  0.99793612  0.49287019
+2416	 -6.26934217	 -0.00127896	  0.00078407	  7.26806321	  0.99608964	  0.99793697  0.49287058
+2417	 -6.26935043	 -0.00127844	  0.00078375	  7.26807199	  0.99609125	  0.99793782  0.49287100
+2418	 -6.26935866	 -0.00127791	  0.00078342	  7.26808075	  0.99609287	  0.99793867  0.49287142
+2419	 -6.26936686	 -0.00127738	  0.00078310	  7.26808947	  0.99609448	  0.99793951  0.49287182
+2420	 -6.26937503	 -0.00127686	  0.00078278	  7.26809817	  0.99609609	  0.99794036  0.49287224
+2421	 -6.26938317	 -0.00127634	  0.00078246	  7.26810683	  0.99609769	  0.99794120  0.49287263
+2422	 -6.26939129	 -0.00127581	  0.00078214	  7.26811547	  0.99609930	  0.99794205  0.49287302
+2423	 -6.26939937	 -0.00127529	  0.00078182	  7.26812409	  0.99610091	  0.99794289  0.49287345
+2424	 -6.26940743	 -0.00127476	  0.00078150	  7.26813267	  0.99610251	  0.99794374  0.49287384
+2425	 -6.26941547	 -0.00127424	  0.00078118	  7.26814123	  0.99610411	  0.99794458  0.49287423
+2426	 -6.26942347	 -0.00127372	  0.00078086	  7.26814975	  0.99610572	  0.99794542  0.49287464
+2427	 -6.26943145	 -0.00127320	  0.00078054	  7.26815825	  0.99610732	  0.99794626  0.49287504
+2428	 -6.26943940	 -0.00127267	  0.00078022	  7.26816673	  0.99610892	  0.99794711  0.49287543
+2429	 -6.26944732	 -0.00127215	  0.00077990	  7.26817517	  0.99611051	  0.99794795  0.49287581
+2430	 -6.26945522	 -0.00127163	  0.00077958	  7.26818359	  0.99611211	  0.99794879  0.49287621
+2431	 -6.26946309	 -0.00127111	  0.00077926	  7.26819198	  0.99611370	  0.99794962  0.49287661
+2432	 -6.26947093	 -0.00127059	  0.00077895	  7.26820034	  0.99611530	  0.99795046  0.49287701
+2433	 -6.26947875	 -0.00127007	  0.00077863	  7.26820868	  0.99611689	  0.99795130  0.49287739
+2434	 -6.26948654	 -0.00126955	  0.00077831	  7.26821698	  0.99611848	  0.99795214  0.49287779
+2435	 -6.26949430	 -0.00126903	  0.00077799	  7.26822527	  0.99612007	  0.99795297  0.49287817
+2436	 -6.26950204	 -0.00126852	  0.00077768	  7.26823352	  0.99612166	  0.99795381  0.49287857
+2437	 -6.26950975	 -0.00126800	  0.00077736	  7.26824175	  0.99612325	  0.99795464  0.49287896
+2438	 -6.26951743	 -0.00126748	  0.00077704	  7.26824995	  0.99612484	  0.99795548  0.49287934
+2439	 -6.26952509	 -0.00126696	  0.00077673	  7.26825813	  0.99612642	  0.99795631  0.49287973
+2440	 -6.26953272	 -0.00126645	  0.00077641	  7.26826627	  0.99612800	  0.99795714  0.49288012
+2441	 -6.26954033	 -0.00126593	  0.00077609	  7.26827440	  0.99612959	  0.99795798  0.49288050
+2442	 -6.26954791	 -0.00126541	  0.00077578	  7.26828249	  0.99613117	  0.99795881  0.49288087
+2443	 -6.26955546	 -0.00126490	  0.00077546	  7.26829056	  0.99613275	  0.99795964  0.49288126
+2444	 -6.26956299	 -0.00126438	  0.00077515	  7.26829860	  0.99613433	  0.99796047  0.49288164
+2445	 -6.26957049	 -0.00126387	  0.00077483	  7.26830662	  0.99613590	  0.99796130  0.49288203
+2446	 -6.26957797	 -0.00126335	  0.00077452	  7.26831461	  0.99613748	  0.99796213  0.49288240
+2447	 -6.26958542	 -0.00126284	  0.00077420	  7.26832258	  0.99613905	  0.99796296  0.49288278
+2448	 -6.26959285	 -0.00126233	  0.00077389	  7.26833052	  0.99614063	  0.99796378  0.49288317
+2449	 -6.26960025	 -0.00126181	  0.00077357	  7.26833844	  0.99614220	  0.99796461  0.49288354
+2450	 -6.26960763	 -0.00126130	  0.00077326	  7.26834632	  0.99614377	  0.99796544  0.49288392
+2451	 -6.26961498	 -0.00126079	  0.00077295	  7.26835419	  0.99614534	  0.99796626  0.49288432
+2452	 -6.26962230	 -0.00126028	  0.00077263	  7.26836203	  0.99614691	  0.99796709  0.49288467
+2453	 -6.26962961	 -0.00125977	  0.00077232	  7.26836984	  0.99614847	  0.99796791  0.49288504
+2454	 -6.26963688	 -0.00125926	  0.00077201	  7.26837763	  0.99615004	  0.99796874  0.49288540
+2455	 -6.26964414	 -0.00125874	  0.00077170	  7.26838539	  0.99615160	  0.99796956  0.49288580
+2456	 -6.26965137	 -0.00125823	  0.00077138	  7.26839313	  0.99615317	  0.99797038  0.49288618
+2457	 -6.26965857	 -0.00125772	  0.00077107	  7.26840084	  0.99615473	  0.99797120  0.49288651
+2458	 -6.26966575	 -0.00125722	  0.00077076	  7.26840853	  0.99615629	  0.99797202  0.49288691
+2459	 -6.26967290	 -0.00125671	  0.00077045	  7.26841620	  0.99615785	  0.99797284  0.49288729
+2460	 -6.26968003	 -0.00125620	  0.00077014	  7.26842384	  0.99615941	  0.99797366  0.49288765
+2461	 -6.26968714	 -0.00125569	  0.00076983	  7.26843145	  0.99616097	  0.99797448  0.49288801
+2462	 -6.26969422	 -0.00125518	  0.00076952	  7.26843904	  0.99616252	  0.99797530  0.49288835
+2463	 -6.26970128	 -0.00125468	  0.00076920	  7.26844661	  0.99616408	  0.99797612  0.49288872
+2464	 -6.26970832	 -0.00125417	  0.00076889	  7.26845415	  0.99616563	  0.99797694  0.49288910
+2465	 -6.26971533	 -0.00125366	  0.00076858	  7.26846167	  0.99616718	  0.99797775  0.49288946
+2466	 -6.26972232	 -0.00125316	  0.00076827	  7.26846916	  0.99616873	  0.99797857  0.49288983
+2467	 -6.26972928	 -0.00125265	  0.00076797	  7.26847663	  0.99617028	  0.99797938  0.49289019
+2468	 -6.26973622	 -0.00125214	  0.00076766	  7.26848408	  0.99617183	  0.99798020  0.49289056
+2469	 -6.26974314	 -0.00125164	  0.00076735	  7.26849150	  0.99617338	  0.99798101  0.49289092
+2470	 -6.26975003	 -0.00125114	  0.00076704	  7.26849890	  0.99617492	  0.99798183  0.49289126
+2471	 -6.26975691	 -0.00125063	  0.00076673	  7.26850627	  0.99617647	  0.99798264  0.49289162
+2472	 -6.26976375	 -0.00125013	  0.00076642	  7.26851363	  0.99617801	  0.99798345  0.49289199
+2473	 -6.26977058	 -0.00124962	  0.00076611	  7.26852095	  0.99617955	  0.99798426  0.49289234
+2474	 -6.26977738	 -0.00124912	  0.00076581	  7.26852826	  0.99618109	  0.99798507  0.49289269
+2475	 -6.26978416	 -0.00124862	  0.00076550	  7.26853554	  0.99618263	  0.99798588  0.49289304
+2476	 -6.26979092	 -0.00124812	  0.00076519	  7.26854280	  0.99618417	  0.99798669  0.49289341
+2477	 -6.26979765	 -0.00124762	  0.00076488	  7.26855003	  0.99618571	  0.99798750  0.49289376
+2478	 -6.26980436	 -0.00124711	  0.00076458	  7.26855725	  0.99618724	  0.99798831  0.49289409
+2479	 -6.26981105	 -0.00124661	  0.00076427	  7.26856444	  0.99618878	  0.99798912  0.49289444
+2480	 -6.26981772	 -0.00124611	  0.00076396	  7.26857160	  0.99619031	  0.99798992  0.49289482
+2481	 -6.26982436	 -0.00124561	  0.00076366	  7.26857875	  0.99619184	  0.99799073  0.49289516
+2482	 -6.26983098	 -0.00124511	  0.00076335	  7.26858587	  0.99619337	  0.99799154  0.49289554
+2483	 -6.26983758	 -0.00124461	  0.00076305	  7.26859297	  0.99619490	  0.99799234  0.49289586
+2484	 -6.26984416	 -0.00124412	  0.00076274	  7.26860004	  0.99619643	  0.99799314  0.49289620
+2485	 -6.26985071	 -0.00124362	  0.00076244	  7.26860710	  0.99619796	  0.99799395  0.49289657
+2486	 -6.26985725	 -0.00124312	  0.00076213	  7.26861413	  0.99619949	  0.99799475  0.49289690
+2487	 -6.26986376	 -0.00124262	  0.00076183	  7.26862114	  0.99620101	  0.99799555  0.49289724
+2488	 -6.26987025	 -0.00124212	  0.00076152	  7.26862812	  0.99620253	  0.99799636  0.49289757
+2489	 -6.26987672	 -0.00124163	  0.00076122	  7.26863509	  0.99620406	  0.99799716  0.49289792
+2490	 -6.26988316	 -0.00124113	  0.00076091	  7.26864203	  0.99620558	  0.99799796  0.49289828
+2491	 -6.26988959	 -0.00124063	  0.00076061	  7.26864895	  0.99620710	  0.99799876  0.49289862
+2492	 -6.26989599	 -0.00124014	  0.00076031	  7.26865585	  0.99620862	  0.99799956  0.49289895
+2493	 -6.26990237	 -0.00123964	  0.00076000	  7.26866273	  0.99621013	  0.99800035  0.49289931
+2494	 -6.26990873	 -0.00123915	  0.00075970	  7.26866958	  0.99621165	  0.99800115  0.49289965
+2495	 -6.26991507	 -0.00123865	  0.00075940	  7.26867642	  0.99621317	  0.99800195  0.49289998
+2496	 -6.26992139	 -0.00123816	  0.00075909	  7.26868323	  0.99621468	  0.99800275  0.49290032
+2497	 -6.26992769	 -0.00123767	  0.00075879	  7.26869002	  0.99621619	  0.99800354  0.49290066
+2498	 -6.26993396	 -0.00123717	  0.00075849	  7.26869679	  0.99621770	  0.99800434  0.49290100
+2499	 -6.26994022	 -0.00123668	  0.00075819	  7.26870354	  0.99621921	  0.99800513  0.49290132
+2500	 -6.26994645	 -0.00123619	  0.00075789	  7.26871027	  0.99622072	  0.99800593  0.49290166
+2501	 -6.26995267	 -0.00123569	  0.00075758	  7.26871697	  0.99622223	  0.99800672  0.49290199
+2502	 -6.26995886	 -0.00123520	  0.00075728	  7.26872366	  0.99622374	  0.99800751  0.49290231
+2503	 -6.26996503	 -0.00123471	  0.00075698	  7.26873032	  0.99622524	  0.99800831  0.49290268
+2504	 -6.26997119	 -0.00123422	  0.00075668	  7.26873697	  0.99622675	  0.99800910  0.49290298
+2505	 -6.26997732	 -0.00123373	  0.00075638	  7.26874359	  0.99622825	  0.99800989  0.49290333
+2506	 -6.26998343	 -0.00123324	  0.00075608	  7.26875019	  0.99622975	  0.99801068  0.49290366
+2507	 -6.26998952	 -0.00123275	  0.00075578	  7.26875677	  0.99623126	  0.99801147  0.49290397
+2508	 -6.26999559	 -0.00123226	  0.00075548	  7.26876333	  0.99623275	  0.99801226  0.49290432
+2509	 -6.27000164	 -0.00123177	  0.00075518	  7.26876987	  0.99623425	  0.99801305  0.49290464
+2510	 -6.27000767	 -0.00123128	  0.00075488	  7.26877639	  0.99623575	  0.99801384  0.49290499
+2511	 -6.27001368	 -0.00123079	  0.00075458	  7.26878289	  0.99623725	  0.99801462  0.49290530
+2512	 -6.27001968	 -0.00123031	  0.00075428	  7.26878937	  0.99623874	  0.99801541  0.49290562
+2513	 -6.27002565	 -0.00122982	  0.00075399	  7.26879583	  0.99624024	  0.99801620  0.49290596
+2514	 -6.27003160	 -0.00122933	  0.00075369	  7.26880227	  0.99624173	  0.99801698  0.49290628
+2515	 -6.27003753	 -0.00122884	  0.00075339	  7.26880869	  0.99624322	  0.99801777  0.49290660
+2516	 -6.27004344	 -0.00122836	  0.00075309	  7.26881508	  0.99624471	  0.99801855  0.49290693
+2517	 -6.27004933	 -0.00122787	  0.00075279	  7.26882146	  0.99624620	  0.99801934  0.49290725
+2518	 -6.27005521	 -0.00122739	  0.00075250	  7.26882782	  0.99624769	  0.99802012  0.49290756
+2519	 -6.27006106	 -0.00122690	  0.00075220	  7.26883416	  0.99624917	  0.99802090  0.49290790
+2520	 -6.27006690	 -0.00122642	  0.00075190	  7.26884048	  0.99625066	  0.99802168  0.49290821
+2521	 -6.27007271	 -0.00122593	  0.00075160	  7.26884678	  0.99625214	  0.99802246  0.49290851
+2522	 -6.27007851	 -0.00122545	  0.00075131	  7.26885306	  0.99625363	  0.99802324  0.49290885
+2523	 -6.27008428	 -0.00122496	  0.00075101	  7.26885932	  0.99625511	  0.99802402  0.49290916
+2524	 -6.27009004	 -0.00122448	  0.00075072	  7.26886556	  0.99625659	  0.99802480  0.49290948
+2525	 -6.27009578	 -0.00122400	  0.00075042	  7.26887178	  0.99625807	  0.99802558  0.49290980
+2526	 -6.27010150	 -0.00122351	  0.00075012	  7.26887799	  0.99625955	  0.99802636  0.49291012
+2527	 -6.27010720	 -0.00122303	  0.00074983	  7.26888417	  0.99626102	  0.99802714  0.49291045
+2528	 -6.27011288	 -0.00122255	  0.00074953	  7.26889033	  0.99626250	  0.99802792  0.49291075
+2529	 -6.27011855	 -0.00122207	  0.00074924	  7.26889648	  0.99626398	  0.99802869  0.49291108
+2530	 -6.27012419	 -0.00122159	  0.00074894	  7.26890260	  0.99626545	  0.99802947  0.49291137
+2531	 -6.27012982	 -0.00122111	  0.00074865	  7.26890871	  0.99626692	  0.99803024  0.49291169
+2532	 -6.27013543	 -0.00122063	  0.00074836	  7.26891480	  0.99626839	  0.99803102  0.49291199
+2533	 -6.27014102	 -0.00122015	  0.00074806	  7.26892087	  0.99626986	  0.99803179  0.49291232
+2534	 -6.27014659	 -0.00121967	  0.00074777	  7.26892692	  0.99627133	  0.99803257  0.49291262
+2535	 -6.27015214	 -0.00121919	  0.00074747	  7.26893295	  0.99627280	  0.99803334  0.49291295
+2536	 -6.27015767	 -0.00121871	  0.00074718	  7.26893897	  0.99627427	  0.99803411  0.49291325
+2537	 -6.27016319	 -0.00121823	  0.00074689	  7.26894496	  0.99627574	  0.99803488  0.49291356
+2538	 -6.27016869	 -0.00121775	  0.00074659	  7.26895094	  0.99627720	  0.99803565  0.49291386
+2539	 -6.27017417	 -0.00121727	  0.00074630	  7.26895690	  0.99627866	  0.99803642  0.49291418
+2540	 -6.27017963	 -0.00121680	  0.00074601	  7.26896284	  0.99628013	  0.99803719  0.49291448
+2541	 -6.27018508	 -0.00121632	  0.00074572	  7.26896876	  0.99628159	  0.99803796  0.49291478
+2542	 -6.27019050	 -0.00121584	  0.00074543	  7.26897466	  0.99628305	  0.99803873  0.49291509
+2543	 -6.27019591	 -0.00121537	  0.00074513	  7.26898055	  0.99628451	  0.99803950  0.49291539
+2544	 -6.27020130	 -0.00121489	  0.00074484	  7.26898641	  0.99628596	  0.99804027  0.49291571
+2545	 -6.27020668	 -0.00121441	  0.00074455	  7.26899226	  0.99628742	  0.99804103  0.49291599
+2546	 -6.27021203	 -0.00121394	  0.00074426	  7.26899810	  0.99628888	  0.99804180  0.49291629
+2547	 -6.27021737	 -0.00121346	  0.00074397	  7.26900391	  0.99629033	  0.99804257  0.49291660
+2548	 -6.27022270	 -0.00121299	  0.00074368	  7.26900971	  0.99629178	  0.99804333  0.49291688
+2549	 -6.27022800	 -0.00121252	  0.00074339	  7.26901548	  0.99629324	  0.99804410  0.49291722
+2550	 -6.27023329	 -0.00121204	  0.00074310	  7.26902124	  0.99629469	  0.99804486  0.49291750
+2551	 -6.27023856	 -0.00121157	  0.00074281	  7.26902699	  0.99629614	  0.99804562  0.49291781
+2552	 -6.27024381	 -0.00121110	  0.00074252	  7.26903271	  0.99629759	  0.99804639  0.49291812
+2553	 -6.27024904	 -0.00121062	  0.00074223	  7.26903842	  0.99629903	  0.99804715  0.49291840
+2554	 -6.27025426	 -0.00121015	  0.00074194	  7.26904411	  0.99630048	  0.99804791  0.49291870
+2555	 -6.27025946	 -0.00120968	  0.00074165	  7.26904979	  0.99630193	  0.99804867  0.49291902
+2556	 -6.27026465	 -0.00120921	  0.00074136	  7.26905544	  0.99630337	  0.99804943  0.49291932
+2557	 -6.27026982	 -0.00120874	  0.00074107	  7.26906108	  0.99630481	  0.99805019  0.49291960
+2558	 -6.27027497	 -0.00120827	  0.00074078	  7.26906670	  0.99630626	  0.99805095  0.49291988
+2559	 -6.27028010	 -0.00120780	  0.00074050	  7.26907231	  0.99630770	  0.99805171  0.49292018
+2560	 -6.27028522	 -0.00120732	  0.00074021	  7.26907789	  0.99630914	  0.99805247  0.49292047
+2561	 -6.27029032	 -0.00120686	  0.00073992	  7.26908347	  0.99631057	  0.99805322  0.49292077
+2562	 -6.27029541	 -0.00120639	  0.00073963	  7.26908902	  0.99631201	  0.99805398  0.49292106
+2563	 -6.27030047	 -0.00120592	  0.00073934	  7.26909456	  0.99631345	  0.99805474  0.49292137
+2564	 -6.27030552	 -0.00120545	  0.00073906	  7.26910008	  0.99631488	  0.99805549  0.49292164
+2565	 -6.27031056	 -0.00120498	  0.00073877	  7.26910558	  0.99631632	  0.99805625  0.49292193
+2566	 -6.27031558	 -0.00120451	  0.00073848	  7.26911107	  0.99631775	  0.99805700  0.49292223
+2567	 -6.27032058	 -0.00120404	  0.00073820	  7.26911654	  0.99631918	  0.99805776  0.49292252
+2568	 -6.27032557	 -0.00120358	  0.00073791	  7.26912199	  0.99632061	  0.99805851  0.49292278
+2569	 -6.27033054	 -0.00120311	  0.00073763	  7.26912743	  0.99632204	  0.99805926  0.49292312
+2570	 -6.27033549	 -0.00120264	  0.00073734	  7.26913285	  0.99632347	  0.99806002  0.49292338
+2571	 -6.27034043	 -0.00120218	  0.00073705	  7.26913825	  0.99632490	  0.99806077  0.49292367
+2572	 -6.27034536	 -0.00120171	  0.00073677	  7.26914364	  0.99632633	  0.99806152  0.49292394
+2573	 -6.27035026	 -0.00120125	  0.00073648	  7.26914902	  0.99632775	  0.99806227  0.49292425
+2574	 -6.27035515	 -0.00120078	  0.00073620	  7.26915437	  0.99632918	  0.99806302  0.49292452
+2575	 -6.27036003	 -0.00120032	  0.00073591	  7.26915971	  0.99633060	  0.99806377  0.49292480
+2576	 -6.27036489	 -0.00119985	  0.00073563	  7.26916504	  0.99633202	  0.99806452  0.49292511
+2577	 -6.27036973	 -0.00119939	  0.00073535	  7.26917034	  0.99633344	  0.99806527  0.49292536
+2578	 -6.27037456	 -0.00119892	  0.00073506	  7.26917564	  0.99633486	  0.99806601  0.49292567
+2579	 -6.27037937	 -0.00119846	  0.00073478	  7.26918091	  0.99633628	  0.99806676  0.49292595
+2580	 -6.27038417	 -0.00119800	  0.00073449	  7.26918617	  0.99633770	  0.99806751  0.49292622
+2581	 -6.27038895	 -0.00119754	  0.00073421	  7.26919142	  0.99633912	  0.99806825  0.49292651
+2582	 -6.27039372	 -0.00119707	  0.00073393	  7.26919664	  0.99634053	  0.99806900  0.49292678
+2583	 -6.27039847	 -0.00119661	  0.00073364	  7.26920186	  0.99634195	  0.99806974  0.49292707
+2584	 -6.27040321	 -0.00119615	  0.00073336	  7.26920706	  0.99634336	  0.99807049  0.49292736
+2585	 -6.27040793	 -0.00119569	  0.00073308	  7.26921224	  0.99634477	  0.99807123  0.49292762
+2586	 -6.27041263	 -0.00119523	  0.00073280	  7.26921740	  0.99634618	  0.99807198  0.49292790
+2587	 -6.27041732	 -0.00119477	  0.00073251	  7.26922256	  0.99634759	  0.99807272  0.49292816
+2588	 -6.27042200	 -0.00119431	  0.00073223	  7.26922769	  0.99634900	  0.99807346  0.49292845
+2589	 -6.27042666	 -0.00119385	  0.00073195	  7.26923281	  0.99635041	  0.99807420  0.49292873
+2590	 -6.27043131	 -0.00119339	  0.00073167	  7.26923792	  0.99635182	  0.99807494  0.49292902
+2591	 -6.27043594	 -0.00119293	  0.00073139	  7.26924301	  0.99635322	  0.99807568  0.49292929
+2592	 -6.27044055	 -0.00119247	  0.00073111	  7.26924808	  0.99635463	  0.99807642  0.49292955
+2593	 -6.27044516	 -0.00119201	  0.00073083	  7.26925314	  0.99635603	  0.99807716  0.49292983
+2594	 -6.27044974	 -0.00119155	  0.00073054	  7.26925819	  0.99635743	  0.99807790  0.49293011
+2595	 -6.27045432	 -0.00119110	  0.00073026	  7.26926322	  0.99635884	  0.99807864  0.49293037
+2596	 -6.27045887	 -0.00119064	  0.00072998	  7.26926823	  0.99636024	  0.99807938  0.49293066
+2597	 -6.27046342	 -0.00119018	  0.00072970	  7.26927323	  0.99636164	  0.99808011  0.49293095
+2598	 -6.27046795	 -0.00118973	  0.00072942	  7.26927822	  0.99636303	  0.99808085  0.49293118
+2599	 -6.27047246	 -0.00118927	  0.00072914	  7.26928319	  0.99636443	  0.99808158  0.49293146
+2600	 -6.27047696	 -0.00118881	  0.00072887	  7.26928815	  0.99636583	  0.99808232  0.49293175
+2601	 -6.27048145	 -0.00118836	  0.00072859	  7.26929309	  0.99636722	  0.99808305  0.49293201
+2602	 -6.27048592	 -0.00118790	  0.00072831	  7.26929802	  0.99636862	  0.99808379  0.49293228
+2603	 -6.27049038	 -0.00118745	  0.00072803	  7.26930293	  0.99637001	  0.99808452  0.49293255
+2604	 -6.27049482	 -0.00118699	  0.00072775	  7.26930783	  0.99637140	  0.99808526  0.49293281
+2605	 -6.27049925	 -0.00118654	  0.00072747	  7.26931271	  0.99637279	  0.99808599  0.49293309
+2606	 -6.27050366	 -0.00118609	  0.00072719	  7.26931758	  0.99637418	  0.99808672  0.49293334
+2607	 -6.27050807	 -0.00118563	  0.00072692	  7.26932243	  0.99637557	  0.99808745  0.49293360
+2608	 -6.27051245	 -0.00118518	  0.00072664	  7.26932727	  0.99637696	  0.99808818  0.49293390
+2609	 -6.27051683	 -0.00118473	  0.00072636	  7.26933210	  0.99637835	  0.99808891  0.49293415
+2610	 -6.27052119	 -0.00118427	  0.00072608	  7.26933691	  0.99637973	  0.99808964  0.49293444
+2611	 -6.27052553	 -0.00118382	  0.00072581	  7.26934171	  0.99638112	  0.99809037  0.49293467
+2612	 -6.27052986	 -0.00118337	  0.00072553	  7.26934649	  0.99638250	  0.99809110  0.49293494
+2613	 -6.27053418	 -0.00118292	  0.00072525	  7.26935126	  0.99638388	  0.99809183  0.49293521
+2614	 -6.27053849	 -0.00118247	  0.00072498	  7.26935602	  0.99638526	  0.99809256  0.49293547
+2615	 -6.27054278	 -0.00118202	  0.00072470	  7.26936076	  0.99638664	  0.99809328  0.49293575
+2616	 -6.27054706	 -0.00118157	  0.00072442	  7.26936549	  0.99638802	  0.99809401  0.49293600
+2617	 -6.27055132	 -0.00118112	  0.00072415	  7.26937020	  0.99638940	  0.99809474  0.49293625
+2618	 -6.27055557	 -0.00118067	  0.00072387	  7.26937491	  0.99639078	  0.99809546  0.49293651
+2619	 -6.27055981	 -0.00118022	  0.00072360	  7.26937959	  0.99639215	  0.99809619  0.49293677
+2620	 -6.27056403	 -0.00117977	  0.00072332	  7.26938427	  0.99639353	  0.99809691  0.49293703
+2621	 -6.27056825	 -0.00117932	  0.00072305	  7.26938893	  0.99639490	  0.99809763  0.49293729
+2622	 -6.27057244	 -0.00117887	  0.00072277	  7.26939357	  0.99639628	  0.99809836  0.49293754
+2623	 -6.27057663	 -0.00117842	  0.00072250	  7.26939820	  0.99639765	  0.99809908  0.49293783
+2624	 -6.27058080	 -0.00117798	  0.00072222	  7.26940282	  0.99639902	  0.99809980  0.49293807
+2625	 -6.27058496	 -0.00117753	  0.00072195	  7.26940743	  0.99640039	  0.99810052  0.49293833
+2626	 -6.27058910	 -0.00117708	  0.00072167	  7.26941202	  0.99640176	  0.99810124  0.49293858
+2627	 -6.27059324	 -0.00117663	  0.00072140	  7.26941660	  0.99640312	  0.99810196  0.49293885
+2628	 -6.27059736	 -0.00117619	  0.00072113	  7.26942117	  0.99640449	  0.99810268  0.49293910
+2629	 -6.27060146	 -0.00117574	  0.00072085	  7.26942572	  0.99640586	  0.99810340  0.49293936
+2630	 -6.27060556	 -0.00117530	  0.00072058	  7.26943026	  0.99640722	  0.99810412  0.49293961
+2631	 -6.27060964	 -0.00117485	  0.00072031	  7.26943479	  0.99640859	  0.99810484  0.49293988
+2632	 -6.27061371	 -0.00117441	  0.00072004	  7.26943930	  0.99640995	  0.99810556  0.49294014
+2633	 -6.27061776	 -0.00117396	  0.00071976	  7.26944380	  0.99641131	  0.99810628  0.49294037
+2634	 -6.27062180	 -0.00117352	  0.00071949	  7.26944829	  0.99641267	  0.99810699  0.49294061
+2635	 -6.27062583	 -0.00117307	  0.00071922	  7.26945276	  0.99641403	  0.99810771  0.49294091
+2636	 -6.27062985	 -0.00117263	  0.00071895	  7.26945722	  0.99641539	  0.99810842  0.49294113
+2637	 -6.27063386	 -0.00117219	  0.00071867	  7.26946167	  0.99641675	  0.99810914  0.49294137
+2638	 -6.27063785	 -0.00117174	  0.00071840	  7.26946611	  0.99641810	  0.99810985  0.49294161
+2639	 -6.27064183	 -0.00117130	  0.00071813	  7.26947053	  0.99641946	  0.99811057  0.49294187
+2640	 -6.27064580	 -0.00117086	  0.00071786	  7.26947494	  0.99642081	  0.99811128  0.49294216
+2641	 -6.27064976	 -0.00117042	  0.00071759	  7.26947934	  0.99642217	  0.99811199  0.49294239
+2642	 -6.27065370	 -0.00116997	  0.00071732	  7.26948372	  0.99642352	  0.99811271  0.49294263
+2643	 -6.27065763	 -0.00116953	  0.00071705	  7.26948810	  0.99642487	  0.99811342  0.49294289
+2644	 -6.27066155	 -0.00116909	  0.00071678	  7.26949246	  0.99642622	  0.99811413  0.49294314
+2645	 -6.27066546	 -0.00116865	  0.00071651	  7.26949680	  0.99642757	  0.99811484  0.49294338
+2646	 -6.27066935	 -0.00116821	  0.00071624	  7.26950114	  0.99642892	  0.99811555  0.49294362
+2647	 -6.27067323	 -0.00116777	  0.00071597	  7.26950546	  0.99643026	  0.99811626  0.49294387
+2648	 -6.27067711	 -0.00116733	  0.00071570	  7.26950977	  0.99643161	  0.99811697  0.49294414
+2649	 -6.27068096	 -0.00116689	  0.00071543	  7.26951407	  0.99643296	  0.99811768  0.49294435
+2650	 -6.27068481	 -0.00116645	  0.00071516	  7.26951836	  0.99643430	  0.99811839  0.49294462
+2651	 -6.27068865	 -0.00116601	  0.00071489	  7.26952263	  0.99643564	  0.99811909  0.49294486
+2652	 -6.27069247	 -0.00116558	  0.00071462	  7.26952689	  0.99643699	  0.99811980  0.49294512
+2653	 -6.27069628	 -0.00116514	  0.00071435	  7.26953114	  0.99643833	  0.99812051  0.49294533
+2654	 -6.27070008	 -0.00116470	  0.00071409	  7.26953538	  0.99643967	  0.99812121  0.49294559
+2655	 -6.27070387	 -0.00116426	  0.00071382	  7.26953961	  0.99644101	  0.99812192  0.49294582
+2656	 -6.27070765	 -0.00116383	  0.00071355	  7.26954382	  0.99644235	  0.99812262  0.49294607
+2657	 -6.27071141	 -0.00116339	  0.00071328	  7.26954802	  0.99644368	  0.99812333  0.49294633
+2658	 -6.27071516	 -0.00116295	  0.00071301	  7.26955221	  0.99644502	  0.99812403  0.49294657
+2659	 -6.27071891	 -0.00116252	  0.00071275	  7.26955639	  0.99644635	  0.99812474  0.49294678
+2660	 -6.27072264	 -0.00116208	  0.00071248	  7.26956056	  0.99644769	  0.99812544  0.49294701
+2661	 -6.27072636	 -0.00116165	  0.00071221	  7.26956471	  0.99644902	  0.99812614  0.49294726
+2662	 -6.27073006	 -0.00116121	  0.00071195	  7.26956885	  0.99645035	  0.99812684  0.49294753
+2663	 -6.27073376	 -0.00116078	  0.00071168	  7.26957298	  0.99645169	  0.99812755  0.49294774
+2664	 -6.27073744	 -0.00116034	  0.00071141	  7.26957710	  0.99645302	  0.99812825  0.49294799
+2665	 -6.27074112	 -0.00115991	  0.00071115	  7.26958121	  0.99645434	  0.99812895  0.49294824
+2666	 -6.27074478	 -0.00115947	  0.00071088	  7.26958531	  0.99645567	  0.99812965  0.49294849
+2667	 -6.27074843	 -0.00115904	  0.00071062	  7.26958939	  0.99645700	  0.99813035  0.49294867
+2668	 -6.27075207	 -0.00115861	  0.00071035	  7.26959347	  0.99645833	  0.99813104  0.49294894
+2669	 -6.27075570	 -0.00115817	  0.00071008	  7.26959753	  0.99645965	  0.99813174  0.49294918
+2670	 -6.27075932	 -0.00115774	  0.00070982	  7.26960158	  0.99646098	  0.99813244  0.49294940
+2671	 -6.27076293	 -0.00115731	  0.00070955	  7.26960562	  0.99646230	  0.99813314  0.49294966
+2672	 -6.27076652	 -0.00115688	  0.00070929	  7.26960965	  0.99646362	  0.99813383  0.49294988
+2673	 -6.27077011	 -0.00115644	  0.00070902	  7.26961366	  0.99646494	  0.99813453  0.49295014
+2674	 -6.27077368	 -0.00115601	  0.00070876	  7.26961767	  0.99646626	  0.99813523  0.49295035
+2675	 -6.27077724	 -0.00115558	  0.00070850	  7.26962166	  0.99646758	  0.99813592  0.49295058
+2676	 -6.27078080	 -0.00115515	  0.00070823	  7.26962565	  0.99646890	  0.99813662  0.49295081
+2677	 -6.27078434	 -0.00115472	  0.00070797	  7.26962962	  0.99647022	  0.99813731  0.49295107
+2678	 -6.27078787	 -0.00115429	  0.00070770	  7.26963358	  0.99647154	  0.99813800  0.49295129
+2679	 -6.27079139	 -0.00115386	  0.00070744	  7.26963753	  0.99647285	  0.99813870  0.49295151
+2680	 -6.27079490	 -0.00115343	  0.00070718	  7.26964147	  0.99647417	  0.99813939  0.49295175
+2681	 -6.27079840	 -0.00115300	  0.00070692	  7.26964540	  0.99647548	  0.99814008  0.49295200
+2682	 -6.27080189	 -0.00115257	  0.00070665	  7.26964931	  0.99647679	  0.99814077  0.49295221
+2683	 -6.27080537	 -0.00115215	  0.00070639	  7.26965322	  0.99647810	  0.99814146  0.49295246
+2684	 -6.27080883	 -0.00115172	  0.00070613	  7.26965711	  0.99647941	  0.99814215  0.49295267
+2685	 -6.27081229	 -0.00115129	  0.00070586	  7.26966100	  0.99648072	  0.99814284  0.49295289
+2686	 -6.27081574	 -0.00115086	  0.00070560	  7.26966487	  0.99648203	  0.99814353  0.49295314
+2687	 -6.27081917	 -0.00115044	  0.00070534	  7.26966874	  0.99648334	  0.99814422  0.49295337
+2688	 -6.27082260	 -0.00115001	  0.00070508	  7.26967259	  0.99648465	  0.99814491  0.49295357
+2689	 -6.27082601	 -0.00114958	  0.00070482	  7.26967643	  0.99648595	  0.99814560  0.49295381
+2690	 -6.27082942	 -0.00114916	  0.00070456	  7.26968026	  0.99648726	  0.99814629  0.49295404
+2691	 -6.27083281	 -0.00114873	  0.00070430	  7.26968408	  0.99648856	  0.99814697  0.49295428
+2692	 -6.27083620	 -0.00114830	  0.00070403	  7.26968789	  0.99648986	  0.99814766  0.49295451
+2693	 -6.27083957	 -0.00114788	  0.00070377	  7.26969169	  0.99649117	  0.99814835  0.49295473
+2694	 -6.27084294	 -0.00114745	  0.00070351	  7.26969548	  0.99649247	  0.99814903  0.49295497
+2695	 -6.27084629	 -0.00114703	  0.00070325	  7.26969926	  0.99649377	  0.99814972  0.49295518
+2696	 -6.27084964	 -0.00114661	  0.00070299	  7.26970303	  0.99649507	  0.99815040  0.49295540
+2697	 -6.27085297	 -0.00114618	  0.00070273	  7.26970679	  0.99649636	  0.99815109  0.49295563
+2698	 -6.27085630	 -0.00114576	  0.00070247	  7.26971054	  0.99649766	  0.99815177  0.49295584
+2699	 -6.27085961	 -0.00114533	  0.00070221	  7.26971428	  0.99649896	  0.99815245  0.49295609
+2700	 -6.27086292	 -0.00114491	  0.00070195	  7.26971800	  0.99650025	  0.99815313  0.49295629
+2701	 -6.27086621	 -0.00114449	  0.00070169	  7.26972172	  0.99650155	  0.99815382  0.49295653
+2702	 -6.27086950	 -0.00114407	  0.00070144	  7.26972543	  0.99650284	  0.99815450  0.49295673
+2703	 -6.27087277	 -0.00114364	  0.00070118	  7.26972913	  0.99650413	  0.99815518  0.49295696
+2704	 -6.27087604	 -0.00114322	  0.00070092	  7.26973281	  0.99650542	  0.99815586  0.49295720
+2705	 -6.27087929	 -0.00114280	  0.00070066	  7.26973649	  0.99650671	  0.99815654  0.49295739
+2706	 -6.27088254	 -0.00114238	  0.00070040	  7.26974016	  0.99650800	  0.99815722  0.49295764
+2707	 -6.27088577	 -0.00114196	  0.00070014	  7.26974382	  0.99650929	  0.99815790  0.49295785
+2708	 -6.27088900	 -0.00114154	  0.00069989	  7.26974746	  0.99651058	  0.99815858  0.49295811
+2709	 -6.27089222	 -0.00114112	  0.00069963	  7.26975110	  0.99651187	  0.99815925  0.49295829
+2710	 -6.27089543	 -0.00114070	  0.00069937	  7.26975473	  0.99651315	  0.99815993  0.49295850
+2711	 -6.27089862	 -0.00114028	  0.00069911	  7.26975835	  0.99651444	  0.99816061  0.49295875
+2712	 -6.27090181	 -0.00113986	  0.00069886	  7.26976195	  0.99651572	  0.99816129  0.49295895
+2713	 -6.27090499	 -0.00113944	  0.00069860	  7.26976555	  0.99651700	  0.99816196  0.49295918
+2714	 -6.27090816	 -0.00113902	  0.00069834	  7.26976914	  0.99651829	  0.99816264  0.49295938
+2715	 -6.27091132	 -0.00113860	  0.00069809	  7.26977272	  0.99651957	  0.99816331  0.49295963
+2716	 -6.27091447	 -0.00113818	  0.00069783	  7.26977629	  0.99652085	  0.99816399  0.49295982
+2717	 -6.27091762	 -0.00113777	  0.00069757	  7.26977985	  0.99652213	  0.99816466  0.49296003
+2718	 -6.27092075	 -0.00113735	  0.00069732	  7.26978340	  0.99652340	  0.99816533  0.49296028
+2719	 -6.27092387	 -0.00113693	  0.00069706	  7.26978694	  0.99652468	  0.99816601  0.49296049
+2720	 -6.27092699	 -0.00113651	  0.00069681	  7.26979047	  0.99652596	  0.99816668  0.49296071
+2721	 -6.27093009	 -0.00113610	  0.00069655	  7.26979399	  0.99652723	  0.99816735  0.49296091
+2722	 -6.27093319	 -0.00113568	  0.00069629	  7.26979751	  0.99652851	  0.99816802  0.49296112
+2723	 -6.27093627	 -0.00113527	  0.00069604	  7.26980101	  0.99652978	  0.99816869  0.49296137
+2724	 -6.27093935	 -0.00113485	  0.00069578	  7.26980450	  0.99653105	  0.99816937  0.49296155
+2725	 -6.27094242	 -0.00113443	  0.00069553	  7.26980799	  0.99653232	  0.99817004  0.49296176
+2726	 -6.27094548	 -0.00113402	  0.00069528	  7.26981146	  0.99653360	  0.99817070  0.49296198
+2727	 -6.27094853	 -0.00113360	  0.00069502	  7.26981493	  0.99653487	  0.99817137  0.49296221
+2728	 -6.27095157	 -0.00113319	  0.00069477	  7.26981838	  0.99653613	  0.99817204  0.49296241
+2729	 -6.27095461	 -0.00113278	  0.00069451	  7.26982183	  0.99653740	  0.99817271  0.49296261
+2730	 -6.27095763	 -0.00113236	  0.00069426	  7.26982527	  0.99653867	  0.99817338  0.49296284
+2731	 -6.27096065	 -0.00113195	  0.00069401	  7.26982870	  0.99653994	  0.99817405  0.49296306
+2732	 -6.27096365	 -0.00113154	  0.00069375	  7.26983212	  0.99654120	  0.99817471  0.49296324
+2733	 -6.27096665	 -0.00113112	  0.00069350	  7.26983553	  0.99654246	  0.99817538  0.49296349
+2734	 -6.27096964	 -0.00113071	  0.00069325	  7.26983893	  0.99654373	  0.99817604  0.49296367
+2735	 -6.27097262	 -0.00113030	  0.00069299	  7.26984232	  0.99654499	  0.99817671  0.49296390
+2736	 -6.27097559	 -0.00112989	  0.00069274	  7.26984571	  0.99654625	  0.99817737  0.49296411
+2737	 -6.27097856	 -0.00112947	  0.00069249	  7.26984908	  0.99654751	  0.99817804  0.49296432
+2738	 -6.27098151	 -0.00112906	  0.00069224	  7.26985245	  0.99654877	  0.99817870  0.49296451
+2739	 -6.27098446	 -0.00112865	  0.00069198	  7.26985581	  0.99655003	  0.99817937  0.49296475
+2740	 -6.27098739	 -0.00112824	  0.00069173	  7.26985915	  0.99655129	  0.99818003  0.49296493
+2741	 -6.27099032	 -0.00112783	  0.00069148	  7.26986249	  0.99655255	  0.99818069  0.49296516
+2742	 -6.27099324	 -0.00112742	  0.00069123	  7.26986583	  0.99655380	  0.99818135  0.49296535
+2743	 -6.27099616	 -0.00112701	  0.00069098	  7.26986915	  0.99655506	  0.99818202  0.49296556
+2744	 -6.27099906	 -0.00112660	  0.00069072	  7.26987246	  0.99655631	  0.99818268  0.49296577
+2745	 -6.27100196	 -0.00112619	  0.00069047	  7.26987577	  0.99655756	  0.99818334  0.49296597
+2746	 -6.27100484	 -0.00112578	  0.00069022	  7.26987906	  0.99655882	  0.99818400  0.49296619
+2747	 -6.27100772	 -0.00112537	  0.00068997	  7.26988235	  0.99656007	  0.99818466  0.49296639
+2748	 -6.27101059	 -0.00112496	  0.00068972	  7.26988563	  0.99656132	  0.99818532  0.49296663
+2749	 -6.27101345	 -0.00112455	  0.00068947	  7.26988890	  0.99656257	  0.99818597  0.49296681
+2750	 -6.27101631	 -0.00112415	  0.00068922	  7.26989216	  0.99656382	  0.99818663  0.49296699
+2751	 -6.27101915	 -0.00112374	  0.00068897	  7.26989541	  0.99656506	  0.99818729  0.49296722
+2752	 -6.27102199	 -0.00112333	  0.00068872	  7.26989866	  0.99656631	  0.99818795  0.49296743
+2753	 -6.27102482	 -0.00112292	  0.00068847	  7.26990189	  0.99656756	  0.99818860  0.49296764
+2754	 -6.27102764	 -0.00112252	  0.00068822	  7.26990512	  0.99656880	  0.99818926  0.49296783
+2755	 -6.27103045	 -0.00112211	  0.00068797	  7.26990834	  0.99657005	  0.99818992  0.49296802
+2756	 -6.27103326	 -0.00112171	  0.00068772	  7.26991155	  0.99657129	  0.99819057  0.49296822
+2757	 -6.27103606	 -0.00112130	  0.00068747	  7.26991476	  0.99657253	  0.99819123  0.49296843
+2758	 -6.27103885	 -0.00112089	  0.00068723	  7.26991795	  0.99657377	  0.99819188  0.49296863
+2759	 -6.27104163	 -0.00112049	  0.00068698	  7.26992114	  0.99657501	  0.99819253  0.49296882
+2760	 -6.27104440	 -0.00112008	  0.00068673	  7.26992432	  0.99657625	  0.99819319  0.49296903
+2761	 -6.27104717	 -0.00111968	  0.00068648	  7.26992749	  0.99657749	  0.99819384  0.49296925
+2762	 -6.27104992	 -0.00111927	  0.00068623	  7.26993065	  0.99657873	  0.99819449  0.49296948
+2763	 -6.27105267	 -0.00111887	  0.00068599	  7.26993380	  0.99657997	  0.99819514  0.49296966
+2764	 -6.27105541	 -0.00111847	  0.00068574	  7.26993695	  0.99658120	  0.99819580  0.49296986
+2765	 -6.27105815	 -0.00111806	  0.00068549	  7.26994009	  0.99658244	  0.99819645  0.49297006
+2766	 -6.27106088	 -0.00111766	  0.00068524	  7.26994322	  0.99658367	  0.99819710  0.49297025
+2767	 -6.27106359	 -0.00111726	  0.00068500	  7.26994634	  0.99658491	  0.99819775  0.49297043
+2768	 -6.27106630	 -0.00111685	  0.00068475	  7.26994945	  0.99658614	  0.99819840  0.49297064
+2769	 -6.27106901	 -0.00111645	  0.00068450	  7.26995256	  0.99658737	  0.99819905  0.49297085
+2770	 -6.27107170	 -0.00111605	  0.00068426	  7.26995565	  0.99658860	  0.99819970  0.49297106
+2771	 -6.27107439	 -0.00111565	  0.00068401	  7.26995874	  0.99658983	  0.99820034  0.49297123
+2772	 -6.27107707	 -0.00111525	  0.00068376	  7.26996183	  0.99659106	  0.99820099  0.49297145
+2773	 -6.27107974	 -0.00111484	  0.00068352	  7.26996490	  0.99659229	  0.99820164  0.49297165
+2774	 -6.27108241	 -0.00111444	  0.00068327	  7.26996797	  0.99659352	  0.99820229  0.49297182
+2775	 -6.27108507	 -0.00111404	  0.00068302	  7.26997103	  0.99659474	  0.99820293  0.49297202
+2776	 -6.27108772	 -0.00111364	  0.00068278	  7.26997408	  0.99659597	  0.99820358  0.49297222
+2777	 -6.27109036	 -0.00111324	  0.00068253	  7.26997712	  0.99659719	  0.99820422  0.49297241
+2778	 -6.27109300	 -0.00111284	  0.00068229	  7.26998015	  0.99659842	  0.99820487  0.49297262
+2779	 -6.27109562	 -0.00111244	  0.00068204	  7.26998318	  0.99659964	  0.99820551  0.49297281
+2780	 -6.27109825	 -0.00111204	  0.00068180	  7.26998620	  0.99660086	  0.99820616  0.49297301
+2781	 -6.27110086	 -0.00111164	  0.00068155	  7.26998921	  0.99660208	  0.99820680  0.49297320
+2782	 -6.27110347	 -0.00111125	  0.00068131	  7.26999222	  0.99660330	  0.99820744  0.49297339
+2783	 -6.27110606	 -0.00111085	  0.00068106	  7.26999522	  0.99660452	  0.99820809  0.49297359
+2784	 -6.27110866	 -0.00111045	  0.00068082	  7.26999821	  0.99660574	  0.99820873  0.49297380
+2785	 -6.27111124	 -0.00111005	  0.00068058	  7.27000119	  0.99660696	  0.99820937  0.49297397
+2786	 -6.27111382	 -0.00110965	  0.00068033	  7.27000416	  0.99660818	  0.99821001  0.49297417
+2787	 -6.27111639	 -0.00110926	  0.00068009	  7.27000713	  0.99660939	  0.99821065  0.49297437
+2788	 -6.27111895	 -0.00110886	  0.00067985	  7.27001009	  0.99661061	  0.99821129  0.49297456
+2789	 -6.27112151	 -0.00110846	  0.00067960	  7.27001304	  0.99661182	  0.99821193  0.49297477
+2790	 -6.27112405	 -0.00110807	  0.00067936	  7.27001599	  0.99661303	  0.99821257  0.49297493
+2791	 -6.27112660	 -0.00110767	  0.00067912	  7.27001892	  0.99661425	  0.99821321  0.49297516
+2792	 -6.27112913	 -0.00110728	  0.00067887	  7.27002185	  0.99661546	  0.99821385  0.49297533
+2793	 -6.27113166	 -0.00110688	  0.00067863	  7.27002478	  0.99661667	  0.99821449  0.49297550
+2794	 -6.27113418	 -0.00110648	  0.00067839	  7.27002769	  0.99661788	  0.99821513  0.49297572
+2795	 -6.27113669	 -0.00110609	  0.00067815	  7.27003060	  0.99661909	  0.99821576  0.49297589
+2796	 -6.27113920	 -0.00110569	  0.00067790	  7.27003350	  0.99662030	  0.99821640  0.49297607
+2797	 -6.27114170	 -0.00110530	  0.00067766	  7.27003640	  0.99662150	  0.99821704  0.49297628
+2798	 -6.27114419	 -0.00110491	  0.00067742	  7.27003928	  0.99662271	  0.99821767  0.49297646
+2799	 -6.27114668	 -0.00110451	  0.00067718	  7.27004216	  0.99662392	  0.99821831  0.49297664
+2800	 -6.27114915	 -0.00110412	  0.00067694	  7.27004504	  0.99662512	  0.99821894  0.49297684
+2801	 -6.27115163	 -0.00110372	  0.00067670	  7.27004790	  0.99662632	  0.99821958  0.49297702
+2802	 -6.27115409	 -0.00110333	  0.00067646	  7.27005076	  0.99662753	  0.99822021  0.49297723
+2803	 -6.27115655	 -0.00110294	  0.00067621	  7.27005361	  0.99662873	  0.99822085  0.49297742
+2804	 -6.27115900	 -0.00110255	  0.00067597	  7.27005646	  0.99662993	  0.99822148  0.49297759
+2805	 -6.27116145	 -0.00110215	  0.00067573	  7.27005929	  0.99663113	  0.99822211  0.49297781
+2806	 -6.27116389	 -0.00110176	  0.00067549	  7.27006212	  0.99663233	  0.99822274  0.49297799
+2807	 -6.27116632	 -0.00110137	  0.00067525	  7.27006495	  0.99663353	  0.99822338  0.49297818
+2808	 -6.27116874	 -0.00110098	  0.00067501	  7.27006776	  0.99663473	  0.99822401  0.49297837
+2809	 -6.27117116	 -0.00110059	  0.00067477	  7.27007057	  0.99663592	  0.99822464  0.49297853
+2810	 -6.27117357	 -0.00110020	  0.00067453	  7.27007338	  0.99663712	  0.99822527  0.49297873
+2811	 -6.27117598	 -0.00109981	  0.00067429	  7.27007617	  0.99663832	  0.99822590  0.49297890
+2812	 -6.27117838	 -0.00109942	  0.00067405	  7.27007896	  0.99663951	  0.99822653  0.49297910
+2813	 -6.27118077	 -0.00109903	  0.00067381	  7.27008174	  0.99664070	  0.99822716  0.49297929
+2814	 -6.27118315	 -0.00109864	  0.00067358	  7.27008452	  0.99664190	  0.99822779  0.49297945
+2815	 -6.27118553	 -0.00109825	  0.00067334	  7.27008729	  0.99664309	  0.99822842  0.49297965
+2816	 -6.27118791	 -0.00109786	  0.00067310	  7.27009005	  0.99664428	  0.99822904  0.49297987
+2817	 -6.27119027	 -0.00109747	  0.00067286	  7.27009280	  0.99664547	  0.99822967  0.49298005
+2818	 -6.27119263	 -0.00109708	  0.00067262	  7.27009555	  0.99664666	  0.99823030  0.49298023
+2819	 -6.27119499	 -0.00109669	  0.00067238	  7.27009829	  0.99664785	  0.99823092  0.49298041
+2820	 -6.27119733	 -0.00109630	  0.00067214	  7.27010103	  0.99664904	  0.99823155  0.49298056
+2821	 -6.27119968	 -0.00109592	  0.00067191	  7.27010376	  0.99665022	  0.99823218  0.49298074
+2822	 -6.27120201	 -0.00109553	  0.00067167	  7.27010648	  0.99665141	  0.99823280  0.49298095
+2823	 -6.27120434	 -0.00109514	  0.00067143	  7.27010920	  0.99665259	  0.99823343  0.49298115
+2824	 -6.27120666	 -0.00109475	  0.00067119	  7.27011190	  0.99665378	  0.99823405  0.49298131
+2825	 -6.27120898	 -0.00109437	  0.00067096	  7.27011461	  0.99665496	  0.99823467  0.49298149
+2826	 -6.27121129	 -0.00109398	  0.00067072	  7.27011730	  0.99665614	  0.99823530  0.49298166
+2827	 -6.27121359	 -0.00109360	  0.00067048	  7.27011999	  0.99665733	  0.99823592  0.49298185
+2828	 -6.27121589	 -0.00109321	  0.00067025	  7.27012268	  0.99665851	  0.99823654  0.49298202
+2829	 -6.27121818	 -0.00109282	  0.00067001	  7.27012535	  0.99665969	  0.99823717  0.49298224
+2830	 -6.27122046	 -0.00109244	  0.00066977	  7.27012802	  0.99666087	  0.99823779  0.49298236
+2831	 -6.27122274	 -0.00109205	  0.00066954	  7.27013069	  0.99666205	  0.99823841  0.49298260
+2832	 -6.27122501	 -0.00109167	  0.00066930	  7.27013334	  0.99666322	  0.99823903  0.49298275
+2833	 -6.27122728	 -0.00109128	  0.00066907	  7.27013600	  0.99666440	  0.99823965  0.49298294
+2834	 -6.27122954	 -0.00109090	  0.00066883	  7.27013864	  0.99666558	  0.99824027  0.49298313
+2835	 -6.27123179	 -0.00109052	  0.00066859	  7.27014128	  0.99666675	  0.99824089  0.49298330
+2836	 -6.27123404	 -0.00109013	  0.00066836	  7.27014391	  0.99666793	  0.99824151  0.49298351
+2837	 -6.27123629	 -0.00108975	  0.00066812	  7.27014654	  0.99666910	  0.99824213  0.49298363
+2838	 -6.27123852	 -0.00108937	  0.00066789	  7.27014916	  0.99667027	  0.99824275  0.49298382
+2839	 -6.27124075	 -0.00108898	  0.00066765	  7.27015177	  0.99667144	  0.99824336  0.49298401
+2840	 -6.27124298	 -0.00108860	  0.00066742	  7.27015438	  0.99667261	  0.99824398  0.49298420
+2841	 -6.27124520	 -0.00108822	  0.00066718	  7.27015698	  0.99667379	  0.99824460  0.49298438
+2842	 -6.27124741	 -0.00108784	  0.00066695	  7.27015957	  0.99667495	  0.99824521  0.49298453
+2843	 -6.27124962	 -0.00108745	  0.00066672	  7.27016216	  0.99667612	  0.99824583  0.49298471
+2844	 -6.27125182	 -0.00108707	  0.00066648	  7.27016475	  0.99667729	  0.99824645  0.49298491
+2845	 -6.27125401	 -0.00108669	  0.00066625	  7.27016732	  0.99667846	  0.99824706  0.49298510
+2846	 -6.27125620	 -0.00108631	  0.00066601	  7.27016989	  0.99667962	  0.99824768  0.49298524
+2847	 -6.27125839	 -0.00108593	  0.00066578	  7.27017246	  0.99668079	  0.99824829  0.49298544
+2848	 -6.27126057	 -0.00108555	  0.00066555	  7.27017502	  0.99668195	  0.99824890  0.49298562
+2849	 -6.27126274	 -0.00108517	  0.00066531	  7.27017757	  0.99668312	  0.99824952  0.49298575
+2850	 -6.27126490	 -0.00108479	  0.00066508	  7.27018012	  0.99668428	  0.99825013  0.49298596
+2851	 -6.27126707	 -0.00108441	  0.00066485	  7.27018266	  0.99668544	  0.99825074  0.49298614
+2852	 -6.27126922	 -0.00108403	  0.00066461	  7.27018519	  0.99668660	  0.99825136  0.49298629
+2853	 -6.27127137	 -0.00108365	  0.00066438	  7.27018772	  0.99668776	  0.99825197  0.49298647
+2854	 -6.27127351	 -0.00108327	  0.00066415	  7.27019024	  0.99668892	  0.99825258  0.49298665
+2855	 -6.27127565	 -0.00108289	  0.00066392	  7.27019276	  0.99669008	  0.99825319  0.49298685
+2856	 -6.27127779	 -0.00108251	  0.00066369	  7.27019527	  0.99669124	  0.99825380  0.49298701
+2857	 -6.27127991	 -0.00108214	  0.00066345	  7.27019778	  0.99669240	  0.99825441  0.49298719
+2858	 -6.27128204	 -0.00108176	  0.00066322	  7.27020028	  0.99669356	  0.99825502  0.49298735
+2859	 -6.27128415	 -0.00108138	  0.00066299	  7.27020277	  0.99669471	  0.99825563  0.49298754
+2860	 -6.27128626	 -0.00108100	  0.00066276	  7.27020526	  0.99669587	  0.99825624  0.49298772
+2861	 -6.27128837	 -0.00108063	  0.00066253	  7.27020774	  0.99669702	  0.99825685  0.49298787
+2862	 -6.27129047	 -0.00108025	  0.00066230	  7.27021022	  0.99669817	  0.99825746  0.49298806
+2863	 -6.27129256	 -0.00107987	  0.00066206	  7.27021269	  0.99669933	  0.99825806  0.49298822
+2864	 -6.27129465	 -0.00107950	  0.00066183	  7.27021516	  0.99670048	  0.99825867  0.49298838
+2865	 -6.27129674	 -0.00107912	  0.00066160	  7.27021762	  0.99670163	  0.99825928  0.49298857
+2866	 -6.27129881	 -0.00107874	  0.00066137	  7.27022007	  0.99670278	  0.99825988  0.49298872
+2867	 -6.27130089	 -0.00107837	  0.00066114	  7.27022252	  0.99670393	  0.99826049  0.49298890
+2868	 -6.27130295	 -0.00107799	  0.00066091	  7.27022496	  0.99670508	  0.99826109  0.49298906
+2869	 -6.27130502	 -0.00107762	  0.00066068	  7.27022740	  0.99670622	  0.99826170  0.49298921
+2870	 -6.27130707	 -0.00107724	  0.00066045	  7.27022983	  0.99670737	  0.99826230  0.49298942
+2871	 -6.27130913	 -0.00107687	  0.00066022	  7.27023226	  0.99670852	  0.99826291  0.49298958
+2872	 -6.27131117	 -0.00107649	  0.00065999	  7.27023468	  0.99670966	  0.99826351  0.49298977
+2873	 -6.27131321	 -0.00107612	  0.00065976	  7.27023709	  0.99671081	  0.99826412  0.49298992
+2874	 -6.27131525	 -0.00107575	  0.00065953	  7.27023950	  0.99671195	  0.99826472  0.49299011
+2875	 -6.27131728	 -0.00107537	  0.00065931	  7.27024191	  0.99671309	  0.99826532  0.49299028
+2876	 -6.27131930	 -0.00107500	  0.00065908	  7.27024430	  0.99671423	  0.99826592  0.49299042
+2877	 -6.27132133	 -0.00107463	  0.00065885	  7.27024670	  0.99671538	  0.99826653  0.49299058
+2878	 -6.27132334	 -0.00107425	  0.00065862	  7.27024909	  0.99671652	  0.99826713  0.49299077
+2879	 -6.27132535	 -0.00107388	  0.00065839	  7.27025147	  0.99671766	  0.99826773  0.49299096
+2880	 -6.27132736	 -0.00107351	  0.00065816	  7.27025385	  0.99671879	  0.99826833  0.49299111
+2881	 -6.27132936	 -0.00107314	  0.00065793	  7.27025622	  0.99671993	  0.99826893  0.49299126
+2882	 -6.27133135	 -0.00107277	  0.00065771	  7.27025858	  0.99672107	  0.99826953  0.49299144
+2883	 -6.27133334	 -0.00107239	  0.00065748	  7.27026094	  0.99672221	  0.99827013  0.49299160
+2884	 -6.27133532	 -0.00107202	  0.00065725	  7.27026330	  0.99672334	  0.99827073  0.49299180
+2885	 -6.27133730	 -0.00107165	  0.00065702	  7.27026565	  0.99672448	  0.99827132  0.49299193
+2886	 -6.27133928	 -0.00107128	  0.00065680	  7.27026800	  0.99672561	  0.99827192  0.49299212
+2887	 -6.27134125	 -0.00107091	  0.00065657	  7.27027034	  0.99672674	  0.99827252  0.49299227
+2888	 -6.27134321	 -0.00107054	  0.00065634	  7.27027267	  0.99672788	  0.99827312  0.49299243
+2889	 -6.27134517	 -0.00107017	  0.00065611	  7.27027500	  0.99672901	  0.99827371  0.49299259
+2890	 -6.27134713	 -0.00106980	  0.00065589	  7.27027733	  0.99673014	  0.99827431  0.49299280
+2891	 -6.27134908	 -0.00106943	  0.00065566	  7.27027964	  0.99673127	  0.99827491  0.49299296
+2892	 -6.27135102	 -0.00106906	  0.00065543	  7.27028196	  0.99673240	  0.99827550  0.49299309
+2893	 -6.27135296	 -0.00106870	  0.00065521	  7.27028427	  0.99673353	  0.99827610  0.49299327
+2894	 -6.27135490	 -0.00106833	  0.00065498	  7.27028657	  0.99673466	  0.99827669  0.49299344
+2895	 -6.27135683	 -0.00106796	  0.00065476	  7.27028887	  0.99673578	  0.99827729  0.49299361
+2896	 -6.27135875	 -0.00106759	  0.00065453	  7.27029116	  0.99673691	  0.99827788  0.49299378
+2897	 -6.27136067	 -0.00106722	  0.00065430	  7.27029345	  0.99673804	  0.99827847  0.49299395
+2898	 -6.27136259	 -0.00106685	  0.00065408	  7.27029574	  0.99673916	  0.99827907  0.49299413
+2899	 -6.27136450	 -0.00106649	  0.00065385	  7.27029801	  0.99674028	  0.99827966  0.49299427
+2900	 -6.27136641	 -0.00106612	  0.00065363	  7.27030029	  0.99674141	  0.99828025  0.49299442
+2901	 -6.27136831	 -0.00106575	  0.00065340	  7.27030256	  0.99674253	  0.99828084  0.49299460
+2902	 -6.27137021	 -0.00106539	  0.00065318	  7.27030482	  0.99674365	  0.99828143  0.49299474
+2903	 -6.27137210	 -0.00106502	  0.00065295	  7.27030708	  0.99674477	  0.99828203  0.49299490
+2904	 -6.27137399	 -0.00106465	  0.00065273	  7.27030933	  0.99674589	  0.99828262  0.49299509
+2905	 -6.27137587	 -0.00106429	  0.00065250	  7.27031158	  0.99674701	  0.99828321  0.49299525
+2906	 -6.27137775	 -0.00106392	  0.00065228	  7.27031382	  0.99674813	  0.99828380  0.49299541
+2907	 -6.27137962	 -0.00106356	  0.00065206	  7.27031606	  0.99674925	  0.99828439  0.49299561
+2908	 -6.27138149	 -0.00106319	  0.00065183	  7.27031830	  0.99675037	  0.99828497  0.49299573
+2909	 -6.27138335	 -0.00106283	  0.00065161	  7.27032053	  0.99675148	  0.99828556  0.49299589
+2910	 -6.27138521	 -0.00106246	  0.00065139	  7.27032275	  0.99675260	  0.99828615  0.49299603
+2911	 -6.27138707	 -0.00106210	  0.00065116	  7.27032497	  0.99675371	  0.99828674  0.49299621
+2912	 -6.27138892	 -0.00106173	  0.00065094	  7.27032719	  0.99675483	  0.99828733  0.49299635
+2913	 -6.27139077	 -0.00106137	  0.00065072	  7.27032940	  0.99675594	  0.99828791  0.49299653
+2914	 -6.27139261	 -0.00106101	  0.00065049	  7.27033160	  0.99675705	  0.99828850  0.49299670
+2915	 -6.27139445	 -0.00106064	  0.00065027	  7.27033380	  0.99675816	  0.99828909  0.49299687
+2916	 -6.27139628	 -0.00106028	  0.00065005	  7.27033600	  0.99675928	  0.99828967  0.49299705
+2917	 -6.27139811	 -0.00105992	  0.00064982	  7.27033819	  0.99676039	  0.99829026  0.49299718
+2918	 -6.27139993	 -0.00105956	  0.00064960	  7.27034037	  0.99676150	  0.99829084  0.49299736
+2919	 -6.27140175	 -0.00105919	  0.00064938	  7.27034256	  0.99676260	  0.99829143  0.49299751
+2920	 -6.27140356	 -0.00105883	  0.00064916	  7.27034473	  0.99676371	  0.99829201  0.49299765
+2921	 -6.27140537	 -0.00105847	  0.00064893	  7.27034690	  0.99676482	  0.99829260  0.49299782
+2922	 -6.27140718	 -0.00105811	  0.00064871	  7.27034907	  0.99676593	  0.99829318  0.49299800
+2923	 -6.27140898	 -0.00105775	  0.00064849	  7.27035123	  0.99676703	  0.99829376  0.49299816
+2924	 -6.27141078	 -0.00105739	  0.00064827	  7.27035339	  0.99676814	  0.99829434  0.49299833
+2925	 -6.27141257	 -0.00105702	  0.00064805	  7.27035555	  0.99676924	  0.99829493  0.49299845
+2926	 -6.27141436	 -0.00105666	  0.00064783	  7.27035770	  0.99677034	  0.99829551  0.49299862
+2927	 -6.27141614	 -0.00105630	  0.00064761	  7.27035984	  0.99677145	  0.99829609  0.49299878
+2928	 -6.27141792	 -0.00105594	  0.00064739	  7.27036198	  0.99677255	  0.99829667  0.49299891
+2929	 -6.27141970	 -0.00105558	  0.00064716	  7.27036412	  0.99677365	  0.99829725  0.49299912
+2930	 -6.27142147	 -0.00105522	  0.00064694	  7.27036625	  0.99677475	  0.99829783  0.49299926
+2931	 -6.27142324	 -0.00105486	  0.00064672	  7.27036837	  0.99677585	  0.99829841  0.49299943
+2932	 -6.27142500	 -0.00105451	  0.00064650	  7.27037050	  0.99677695	  0.99829899  0.49299955
+2933	 -6.27142676	 -0.00105415	  0.00064628	  7.27037261	  0.99677805	  0.99829957  0.49299971
+2934	 -6.27142851	 -0.00105379	  0.00064606	  7.27037473	  0.99677914	  0.99830015  0.49299984
+2935	 -6.27143026	 -0.00105343	  0.00064584	  7.27037683	  0.99678024	  0.99830073  0.49300001
+2936	 -6.27143201	 -0.00105307	  0.00064562	  7.27037894	  0.99678134	  0.99830131  0.49300017
+2937	 -6.27143375	 -0.00105271	  0.00064540	  7.27038104	  0.99678243	  0.99830188  0.49300033
+2938	 -6.27143549	 -0.00105236	  0.00064518	  7.27038313	  0.99678353	  0.99830246  0.49300050
+2939	 -6.27143722	 -0.00105200	  0.00064496	  7.27038522	  0.99678462	  0.99830304  0.49300065
+2940	 -6.27143895	 -0.00105164	  0.00064475	  7.27038731	  0.99678571	  0.99830361  0.49300081
+2941	 -6.27144068	 -0.00105128	  0.00064453	  7.27038939	  0.99678681	  0.99830419  0.49300096
+2942	 -6.27144240	 -0.00105093	  0.00064431	  7.27039147	  0.99678790	  0.99830477  0.49300112
+2943	 -6.27144412	 -0.00105057	  0.00064409	  7.27039355	  0.99678899	  0.99830534  0.49300126
+2944	 -6.27144583	 -0.00105021	  0.00064387	  7.27039561	  0.99679008	  0.99830592  0.49300141
+2945	 -6.27144754	 -0.00104986	  0.00064365	  7.27039768	  0.99679117	  0.99830649  0.49300158
+2946	 -6.27144924	 -0.00104950	  0.00064343	  7.27039974	  0.99679226	  0.99830706  0.49300174
+2947	 -6.27145094	 -0.00104915	  0.00064322	  7.27040180	  0.99679334	  0.99830764  0.49300191
+2948	 -6.27145264	 -0.00104879	  0.00064300	  7.27040385	  0.99679443	  0.99830821  0.49300203
+2949	 -6.27145433	 -0.00104844	  0.00064278	  7.27040590	  0.99679552	  0.99830878  0.49300220
+2950	 -6.27145602	 -0.00104808	  0.00064256	  7.27040794	  0.99679660	  0.99830936  0.49300234
+2951	 -6.27145771	 -0.00104773	  0.00064234	  7.27040998	  0.99679769	  0.99830993  0.49300248
+2952	 -6.27145939	 -0.00104737	  0.00064213	  7.27041202	  0.99679877	  0.99831050  0.49300264
+2953	 -6.27146107	 -0.00104702	  0.00064191	  7.27041405	  0.99679986	  0.99831107  0.49300280
+2954	 -6.27146274	 -0.00104667	  0.00064169	  7.27041607	  0.99680094	  0.99831164  0.49300294
+2955	 -6.27146441	 -0.00104631	  0.00064148	  7.27041810	  0.99680202	  0.99831221  0.49300310
+2956	 -6.27146607	 -0.00104596	  0.00064126	  7.27042012	  0.99680310	  0.99831278  0.49300325
+2957	 -6.27146774	 -0.00104561	  0.00064104	  7.27042213	  0.99680418	  0.99831335  0.49300340
+2958	 -6.27146939	 -0.00104525	  0.00064083	  7.27042414	  0.99680526	  0.99831392  0.49300357
+2959	 -6.27147105	 -0.00104490	  0.00064061	  7.27042615	  0.99680634	  0.99831449  0.49300370
+2960	 -6.27147270	 -0.00104455	  0.00064039	  7.27042815	  0.99680742	  0.99831506  0.49300390
+2961	 -6.27147434	 -0.00104420	  0.00064018	  7.27043015	  0.99680850	  0.99831563  0.49300402
+2962	 -6.27147599	 -0.00104384	  0.00063996	  7.27043214	  0.99680957	  0.99831620  0.49300417
+2963	 -6.27147762	 -0.00104349	  0.00063975	  7.27043413	  0.99681065	  0.99831676  0.49300431
+2964	 -6.27147926	 -0.00104314	  0.00063953	  7.27043612	  0.99681172	  0.99831733  0.49300449
+2965	 -6.27148089	 -0.00104279	  0.00063931	  7.27043810	  0.99681280	  0.99831790  0.49300460
+2966	 -6.27148252	 -0.00104244	  0.00063910	  7.27044008	  0.99681387	  0.99831846  0.49300478
+2967	 -6.27148414	 -0.00104209	  0.00063888	  7.27044205	  0.99681495	  0.99831903  0.49300494
+2968	 -6.27148576	 -0.00104174	  0.00063867	  7.27044402	  0.99681602	  0.99831959  0.49300507
+2969	 -6.27148738	 -0.00104139	  0.00063845	  7.27044599	  0.99681709	  0.99832016  0.49300523
+2970	 -6.27148899	 -0.00104104	  0.00063824	  7.27044795	  0.99681816	  0.99832072  0.49300537
+2971	 -6.27149060	 -0.00104069	  0.00063802	  7.27044991	  0.99681923	  0.99832129  0.49300552
+2972	 -6.27149220	 -0.00104034	  0.00063781	  7.27045186	  0.99682030	  0.99832185  0.49300567
+2973	 -6.27149380	 -0.00103999	  0.00063760	  7.27045382	  0.99682137	  0.99832242  0.49300583
+2974	 -6.27149540	 -0.00103964	  0.00063738	  7.27045576	  0.99682244	  0.99832298  0.49300595
+2975	 -6.27149699	 -0.00103929	  0.00063717	  7.27045771	  0.99682351	  0.99832354  0.49300609
+2976	 -6.27149859	 -0.00103894	  0.00063695	  7.27045964	  0.99682457	  0.99832411  0.49300627
+2977	 -6.27150017	 -0.00103859	  0.00063674	  7.27046158	  0.99682564	  0.99832467  0.49300642
+2978	 -6.27150175	 -0.00103824	  0.00063653	  7.27046351	  0.99682670	  0.99832523  0.49300653
+2979	 -6.27150333	 -0.00103790	  0.00063631	  7.27046544	  0.99682777	  0.99832579  0.49300671
+2980	 -6.27150491	 -0.00103755	  0.00063610	  7.27046736	  0.99682883	  0.99832635  0.49300686
+2981	 -6.27150648	 -0.00103720	  0.00063589	  7.27046928	  0.99682990	  0.99832691  0.49300700
+2982	 -6.27150805	 -0.00103685	  0.00063567	  7.27047120	  0.99683096	  0.99832747  0.49300717
+2983	 -6.27150962	 -0.00103651	  0.00063546	  7.27047311	  0.99683202	  0.99832803  0.49300731
+2984	 -6.27151118	 -0.00103616	  0.00063525	  7.27047502	  0.99683308	  0.99832859  0.49300742
+2985	 -6.27151274	 -0.00103581	  0.00063503	  7.27047692	  0.99683414	  0.99832915  0.49300759
+2986	 -6.27151429	 -0.00103547	  0.00063482	  7.27047882	  0.99683520	  0.99832971  0.49300775
+2987	 -6.27151584	 -0.00103512	  0.00063461	  7.27048072	  0.99683626	  0.99833027  0.49300787
+2988	 -6.27151739	 -0.00103478	  0.00063440	  7.27048262	  0.99683732	  0.99833083  0.49300803
+2989	 -6.27151893	 -0.00103443	  0.00063419	  7.27048451	  0.99683838	  0.99833138  0.49300818
+2990	 -6.27152048	 -0.00103408	  0.00063397	  7.27048639	  0.99683943	  0.99833194  0.49300831
+2991	 -6.27152201	 -0.00103374	  0.00063376	  7.27048827	  0.99684049	  0.99833250  0.49300846
+2992	 -6.27152355	 -0.00103339	  0.00063355	  7.27049015	  0.99684154	  0.99833306  0.49300863
+2993	 -6.27152508	 -0.00103305	  0.00063334	  7.27049203	  0.99684260	  0.99833361  0.49300877
+2994	 -6.27152660	 -0.00103270	  0.00063313	  7.27049390	  0.99684365	  0.99833417  0.49300891
+2995	 -6.27152813	 -0.00103236	  0.00063292	  7.27049577	  0.99684471	  0.99833472  0.49300907
+2996	 -6.27152965	 -0.00103202	  0.00063271	  7.27049763	  0.99684576	  0.99833528  0.49300922
+2997	 -6.27153117	 -0.00103167	  0.00063249	  7.27049949	  0.99684681	  0.99833583  0.49300935
+2998	 -6.27153268	 -0.00103133	  0.00063228	  7.27050135	  0.99684786	  0.99833639  0.49300949
+2999	 -6.27153419	 -0.00103099	  0.00063207	  7.27050320	  0.99684891	  0.99833694  0.49300966
+3000	 -6.27153570	 -0.00103064	  0.00063186	  7.27050505	  0.99684996	  0.99833749  0.49300980
+3001	 -6.27153720	 -0.00103030	  0.00063165	  7.27050690	  0.99685101	  0.99833805  0.49300992
+3002	 -6.27153870	 -0.00102996	  0.00063144	  7.27050874	  0.99685206	  0.99833860  0.49301003
+3003	 -6.27154020	 -0.00102961	  0.00063123	  7.27051058	  0.99685311	  0.99833915  0.49301024
+3004	 -6.27154169	 -0.00102927	  0.00063102	  7.27051242	  0.99685415	  0.99833971  0.49301036
+3005	 -6.27154318	 -0.00102893	  0.00063081	  7.27051425	  0.99685520	  0.99834026  0.49301051
+3006	 -6.27154467	 -0.00102859	  0.00063060	  7.27051608	  0.99685625	  0.99834081  0.49301064
+3007	 -6.27154615	 -0.00102825	  0.00063039	  7.27051791	  0.99685729	  0.99834136  0.49301076
+3008	 -6.27154763	 -0.00102791	  0.00063018	  7.27051973	  0.99685834	  0.99834191  0.49301089
+3009	 -6.27154911	 -0.00102756	  0.00062997	  7.27052155	  0.99685938	  0.99834246  0.49301105
+3010	 -6.27155059	 -0.00102722	  0.00062976	  7.27052336	  0.99686042	  0.99834301  0.49301119
+3011	 -6.27155206	 -0.00102688	  0.00062956	  7.27052517	  0.99686146	  0.99834356  0.49301134
+3012	 -6.27155352	 -0.00102654	  0.00062935	  7.27052698	  0.99686251	  0.99834411  0.49301148
+3013	 -6.27155499	 -0.00102620	  0.00062914	  7.27052879	  0.99686355	  0.99834466  0.49301163
+3014	 -6.27155645	 -0.00102586	  0.00062893	  7.27053059	  0.99686459	  0.99834521  0.49301176
+3015	 -6.27155791	 -0.00102552	  0.00062872	  7.27053239	  0.99686563	  0.99834576  0.49301188
+3016	 -6.27155936	 -0.00102518	  0.00062851	  7.27053418	  0.99686666	  0.99834630  0.49301206
+3017	 -6.27156082	 -0.00102484	  0.00062830	  7.27053597	  0.99686770	  0.99834685  0.49301220
+3018	 -6.27156226	 -0.00102451	  0.00062810	  7.27053776	  0.99686874	  0.99834740  0.49301233
+3019	 -6.27156371	 -0.00102417	  0.00062789	  7.27053954	  0.99686978	  0.99834794  0.49301246
+3020	 -6.27156515	 -0.00102383	  0.00062768	  7.27054132	  0.99687081	  0.99834849  0.49301262
+3021	 -6.27156659	 -0.00102349	  0.00062747	  7.27054310	  0.99687185	  0.99834904  0.49301280
+3022	 -6.27156803	 -0.00102315	  0.00062727	  7.27054488	  0.99687288	  0.99834958  0.49301294
+3023	 -6.27156946	 -0.00102281	  0.00062706	  7.27054665	  0.99687392	  0.99835013  0.49301309
+3024	 -6.27157089	 -0.00102248	  0.00062685	  7.27054842	  0.99687495	  0.99835067  0.49301319
+3025	 -6.27157232	 -0.00102214	  0.00062664	  7.27055018	  0.99687598	  0.99835122  0.49301335
+3026	 -6.27157374	 -0.00102180	  0.00062644	  7.27055194	  0.99687701	  0.99835176  0.49301345
+3027	 -6.27157517	 -0.00102146	  0.00062623	  7.27055370	  0.99687805	  0.99835231  0.49301362
+3028	 -6.27157658	 -0.00102113	  0.00062602	  7.27055546	  0.99687908	  0.99835285  0.49301372
+3029	 -6.27157800	 -0.00102079	  0.00062582	  7.27055721	  0.99688011	  0.99835339  0.49301383
+3030	 -6.27157941	 -0.00102045	  0.00062561	  7.27055896	  0.99688113	  0.99835393  0.49301405
+3031	 -6.27158082	 -0.00102012	  0.00062540	  7.27056070	  0.99688216	  0.99835448  0.49301418
+3032	 -6.27158223	 -0.00101978	  0.00062520	  7.27056244	  0.99688319	  0.99835502  0.49301433
+3033	 -6.27158363	 -0.00101945	  0.00062499	  7.27056418	  0.99688422	  0.99835556  0.49301444
+3034	 -6.27158503	 -0.00101911	  0.00062479	  7.27056592	  0.99688524	  0.99835610  0.49301454
+3035	 -6.27158643	 -0.00101878	  0.00062458	  7.27056765	  0.99688627	  0.99835664  0.49301468
+3036	 -6.27158782	 -0.00101844	  0.00062438	  7.27056938	  0.99688730	  0.99835718  0.49301483
+3037	 -6.27158921	 -0.00101811	  0.00062417	  7.27057111	  0.99688832	  0.99835772  0.49301499
+3038	 -6.27159060	 -0.00101777	  0.00062396	  7.27057283	  0.99688934	  0.99835826  0.49301513
+3039	 -6.27159199	 -0.00101744	  0.00062376	  7.27057455	  0.99689037	  0.99835880  0.49301528
+3040	 -6.27159337	 -0.00101710	  0.00062355	  7.27057627	  0.99689139	  0.99835934  0.49301541
+3041	 -6.27159475	 -0.00101677	  0.00062335	  7.27057798	  0.99689241	  0.99835988  0.49301553
+3042	 -6.27159613	 -0.00101644	  0.00062314	  7.27057969	  0.99689343	  0.99836042  0.49301569
+3043	 -6.27159750	 -0.00101610	  0.00062294	  7.27058140	  0.99689445	  0.99836096  0.49301584
+3044	 -6.27159887	 -0.00101577	  0.00062274	  7.27058310	  0.99689547	  0.99836150  0.49301593
+3045	 -6.27160024	 -0.00101544	  0.00062253	  7.27058480	  0.99689649	  0.99836203  0.49301608
+3046	 -6.27160160	 -0.00101510	  0.00062233	  7.27058650	  0.99689751	  0.99836257  0.49301621
+3047	 -6.27160297	 -0.00101477	  0.00062212	  7.27058820	  0.99689853	  0.99836311  0.49301634
+3048	 -6.27160433	 -0.00101444	  0.00062192	  7.27058989	  0.99689954	  0.99836364  0.49301647
+3049	 -6.27160568	 -0.00101410	  0.00062171	  7.27059158	  0.99690056	  0.99836418  0.49301663
+3050	 -6.27160704	 -0.00101377	  0.00062151	  7.27059327	  0.99690158	  0.99836472  0.49301679
+3051	 -6.27160839	 -0.00101344	  0.00062131	  7.27059495	  0.99690259	  0.99836525  0.49301693
+3052	 -6.27160974	 -0.00101311	  0.00062110	  7.27059663	  0.99690361	  0.99836579  0.49301706
+3053	 -6.27161108	 -0.00101278	  0.00062090	  7.27059831	  0.99690462	  0.99836632  0.49301722
+3054	 -6.27161243	 -0.00101245	  0.00062070	  7.27059998	  0.99690563	  0.99836686  0.49301730
+3055	 -6.27161377	 -0.00101212	  0.00062049	  7.27060165	  0.99690664	  0.99836739  0.49301748
+3056	 -6.27161511	 -0.00101179	  0.00062029	  7.27060332	  0.99690766	  0.99836792  0.49301757
+3057	 -6.27161644	 -0.00101146	  0.00062009	  7.27060499	  0.99690867	  0.99836846  0.49301772
+3058	 -6.27161777	 -0.00101112	  0.00061989	  7.27060665	  0.99690968	  0.99836899  0.49301787
+3059	 -6.27161910	 -0.00101079	  0.00061968	  7.27060831	  0.99691069	  0.99836952  0.49301798
+3060	 -6.27162043	 -0.00101046	  0.00061948	  7.27060996	  0.99691170	  0.99837005  0.49301811
+3061	 -6.27162175	 -0.00101014	  0.00061928	  7.27061162	  0.99691271	  0.99837059  0.49301825
+3062	 -6.27162307	 -0.00100981	  0.00061908	  7.27061327	  0.99691371	  0.99837112  0.49301840
+3063	 -6.27162439	 -0.00100948	  0.00061887	  7.27061492	  0.99691472	  0.99837165  0.49301855
+3064	 -6.27162571	 -0.00100915	  0.00061867	  7.27061656	  0.99691573	  0.99837218  0.49301866
+3065	 -6.27162702	 -0.00100882	  0.00061847	  7.27061820	  0.99691673	  0.99837271  0.49301881
+3066	 -6.27162833	 -0.00100849	  0.00061827	  7.27061984	  0.99691774	  0.99837324  0.49301892
+3067	 -6.27162964	 -0.00100816	  0.00061807	  7.27062148	  0.99691874	  0.99837377  0.49301906
+3068	 -6.27163095	 -0.00100783	  0.00061787	  7.27062311	  0.99691975	  0.99837430  0.49301923
+3069	 -6.27163225	 -0.00100751	  0.00061767	  7.27062474	  0.99692075	  0.99837483  0.49301935
+3070	 -6.27163355	 -0.00100718	  0.00061746	  7.27062637	  0.99692175	  0.99837536  0.49301944
+3071	 -6.27163485	 -0.00100685	  0.00061726	  7.27062800	  0.99692275	  0.99837589  0.49301961
+3072	 -6.27163614	 -0.00100652	  0.00061706	  7.27062962	  0.99692375	  0.99837641  0.49301974
+3073	 -6.27163743	 -0.00100620	  0.00061686	  7.27063124	  0.99692476	  0.99837694  0.49301990
+3074	 -6.27163872	 -0.00100587	  0.00061666	  7.27063285	  0.99692576	  0.99837747  0.49301996
+3075	 -6.27164001	 -0.00100554	  0.00061646	  7.27063447	  0.99692675	  0.99837800  0.49302013
+3076	 -6.27164130	 -0.00100522	  0.00061626	  7.27063608	  0.99692775	  0.99837852  0.49302024
+3077	 -6.27164258	 -0.00100489	  0.00061606	  7.27063769	  0.99692875	  0.99837905  0.49302039
+3078	 -6.27164386	 -0.00100456	  0.00061586	  7.27063929	  0.99692975	  0.99837957  0.49302050
+3079	 -6.27164513	 -0.00100424	  0.00061566	  7.27064090	  0.99693075	  0.99838010  0.49302064
+3080	 -6.27164641	 -0.00100391	  0.00061546	  7.27064250	  0.99693174	  0.99838063  0.49302080
+3081	 -6.27164768	 -0.00100359	  0.00061526	  7.27064409	  0.99693274	  0.99838115  0.49302092
+3082	 -6.27164895	 -0.00100326	  0.00061506	  7.27064569	  0.99693373	  0.99838168  0.49302106
+3083	 -6.27165022	 -0.00100294	  0.00061486	  7.27064728	  0.99693473	  0.99838220  0.49302117
+3084	 -6.27165148	 -0.00100261	  0.00061466	  7.27064887	  0.99693572	  0.99838272  0.49302135
+3085	 -6.27165274	 -0.00100229	  0.00061446	  7.27065045	  0.99693671	  0.99838325  0.49302147
+3086	 -6.27165400	 -0.00100196	  0.00061427	  7.27065204	  0.99693770	  0.99838377  0.49302161
+3087	 -6.27165526	 -0.00100164	  0.00061407	  7.27065362	  0.99693870	  0.99838429  0.49302174
+3088	 -6.27165651	 -0.00100132	  0.00061387	  7.27065520	  0.99693969	  0.99838482  0.49302182
+3089	 -6.27165777	 -0.00100099	  0.00061367	  7.27065677	  0.99694068	  0.99838534  0.49302200
+3090	 -6.27165902	 -0.00100067	  0.00061347	  7.27065835	  0.99694167	  0.99838586  0.49302214
+3091	 -6.27166026	 -0.00100035	  0.00061327	  7.27065992	  0.99694266	  0.99838638  0.49302227
+3092	 -6.27166151	 -0.00100002	  0.00061307	  7.27066149	  0.99694364	  0.99838690  0.49302237
+3093	 -6.27166275	 -0.00099970	  0.00061288	  7.27066305	  0.99694463	  0.99838742  0.49302253
+3094	 -6.27166399	 -0.00099938	  0.00061268	  7.27066461	  0.99694562	  0.99838795  0.49302264
+3095	 -6.27166523	 -0.00099905	  0.00061248	  7.27066617	  0.99694660	  0.99838847  0.49302277
+3096	 -6.27166646	 -0.00099873	  0.00061228	  7.27066773	  0.99694759	  0.99838899  0.49302290
+3097	 -6.27166770	 -0.00099841	  0.00061208	  7.27066928	  0.99694858	  0.99838951  0.49302301
+3098	 -6.27166893	 -0.00099809	  0.00061189	  7.27067084	  0.99694956	  0.99839002  0.49302315
+3099	 -6.27167015	 -0.00099777	  0.00061169	  7.27067239	  0.99695054	  0.99839054  0.49302331
+3100	 -6.27167138	 -0.00099745	  0.00061149	  7.27067393	  0.99695153	  0.99839106  0.49302343
+3101	 -6.27167260	 -0.00099712	  0.00061130	  7.27067548	  0.99695251	  0.99839158  0.49302354
+3102	 -6.27167382	 -0.00099680	  0.00061110	  7.27067702	  0.99695349	  0.99839210  0.49302367
+3103	 -6.27167504	 -0.00099648	  0.00061090	  7.27067856	  0.99695447	  0.99839262  0.49302378
+3104	 -6.27167626	 -0.00099616	  0.00061070	  7.27068010	  0.99695545	  0.99839313  0.49302391
+3105	 -6.27167747	 -0.00099584	  0.00061051	  7.27068163	  0.99695643	  0.99839365  0.49302405
+3106	 -6.27167868	 -0.00099552	  0.00061031	  7.27068316	  0.99695741	  0.99839417  0.49302418
+3107	 -6.27167989	 -0.00099520	  0.00061012	  7.27068469	  0.99695839	  0.99839468  0.49302428
+3108	 -6.27168110	 -0.00099488	  0.00060992	  7.27068622	  0.99695937	  0.99839520  0.49302442
+3109	 -6.27168231	 -0.00099456	  0.00060972	  7.27068774	  0.99696035	  0.99839571  0.49302457
+3110	 -6.27168351	 -0.00099424	  0.00060953	  7.27068927	  0.99696133	  0.99839623  0.49302469
+3111	 -6.27168471	 -0.00099392	  0.00060933	  7.27069078	  0.99696230	  0.99839674  0.49302483
+3112	 -6.27168591	 -0.00099360	  0.00060914	  7.27069230	  0.99696328	  0.99839726  0.49302493
+3113	 -6.27168710	 -0.00099329	  0.00060894	  7.27069382	  0.99696425	  0.99839777  0.49302510
+3114	 -6.27168829	 -0.00099297	  0.00060874	  7.27069533	  0.99696523	  0.99839829  0.49302519
+3115	 -6.27168949	 -0.00099265	  0.00060855	  7.27069684	  0.99696620	  0.99839880  0.49302531
+3116	 -6.27169067	 -0.00099233	  0.00060835	  7.27069834	  0.99696717	  0.99839931  0.49302546
+3117	 -6.27169186	 -0.00099201	  0.00060816	  7.27069985	  0.99696815	  0.99839983  0.49302559
+3118	 -6.27169305	 -0.00099170	  0.00060796	  7.27070135	  0.99696912	  0.99840034  0.49302572
+3119	 -6.27169423	 -0.00099138	  0.00060777	  7.27070285	  0.99697009	  0.99840085  0.49302581
+3120	 -6.27169541	 -0.00099106	  0.00060757	  7.27070435	  0.99697106	  0.99840137  0.49302594
+3121	 -6.27169659	 -0.00099074	  0.00060738	  7.27070584	  0.99697203	  0.99840188  0.49302606
+3122	 -6.27169776	 -0.00099043	  0.00060719	  7.27070734	  0.99697300	  0.99840239  0.49302620
+3123	 -6.27169893	 -0.00099011	  0.00060699	  7.27070883	  0.99697397	  0.99840290  0.49302635
+3124	 -6.27170011	 -0.00098979	  0.00060680	  7.27071031	  0.99697494	  0.99840341  0.49302644
+3125	 -6.27170128	 -0.00098948	  0.00060660	  7.27071180	  0.99697590	  0.99840392  0.49302662
+3126	 -6.27170244	 -0.00098916	  0.00060641	  7.27071328	  0.99697687	  0.99840443  0.49302676
+3127	 -6.27170361	 -0.00098884	  0.00060622	  7.27071476	  0.99697784	  0.99840494  0.49302682
+3128	 -6.27170477	 -0.00098853	  0.00060602	  7.27071624	  0.99697880	  0.99840545  0.49302696
+3129	 -6.27170593	 -0.00098821	  0.00060583	  7.27071772	  0.99697977	  0.99840596  0.49302711
+3130	 -6.27170709	 -0.00098790	  0.00060563	  7.27071919	  0.99698073	  0.99840647  0.49302721
+3131	 -6.27170825	 -0.00098758	  0.00060544	  7.27072066	  0.99698170	  0.99840698  0.49302733
+3132	 -6.27170940	 -0.00098727	  0.00060525	  7.27072213	  0.99698266	  0.99840748  0.49302748
+3133	 -6.27171055	 -0.00098695	  0.00060505	  7.27072360	  0.99698362	  0.99840799  0.49302765
+3134	 -6.27171170	 -0.00098664	  0.00060486	  7.27072506	  0.99698459	  0.99840850  0.49302773
+3135	 -6.27171285	 -0.00098633	  0.00060467	  7.27072652	  0.99698555	  0.99840901  0.49302786
+3136	 -6.27171399	 -0.00098601	  0.00060448	  7.27072798	  0.99698651	  0.99840951  0.49302797
+3137	 -6.27171514	 -0.00098570	  0.00060428	  7.27072944	  0.99698747	  0.99841002  0.49302811
+3138	 -6.27171628	 -0.00098538	  0.00060409	  7.27073090	  0.99698843	  0.99841053  0.49302824
+3139	 -6.27171742	 -0.00098507	  0.00060390	  7.27073235	  0.99698939	  0.99841103  0.49302835
+3140	 -6.27171856	 -0.00098476	  0.00060371	  7.27073380	  0.99699035	  0.99841154  0.49302848
+3141	 -6.27171969	 -0.00098444	  0.00060351	  7.27073525	  0.99699130	  0.99841204  0.49302858
+3142	 -6.27172082	 -0.00098413	  0.00060332	  7.27073669	  0.99699226	  0.99841255  0.49302871
+3143	 -6.27172196	 -0.00098382	  0.00060313	  7.27073814	  0.99699322	  0.99841305  0.49302887
+3144	 -6.27172309	 -0.00098351	  0.00060294	  7.27073958	  0.99699417	  0.99841356  0.49302895
+3145	 -6.27172421	 -0.00098319	  0.00060275	  7.27074102	  0.99699513	  0.99841406  0.49302912
+3146	 -6.27172534	 -0.00098288	  0.00060256	  7.27074246	  0.99699608	  0.99841456  0.49302925
+3147	 -6.27172646	 -0.00098257	  0.00060236	  7.27074389	  0.99699704	  0.99841507  0.49302935
+3148	 -6.27172758	 -0.00098226	  0.00060217	  7.27074532	  0.99699799	  0.99841557  0.49302945
+3149	 -6.27172870	 -0.00098195	  0.00060198	  7.27074676	  0.99699894	  0.99841607  0.49302959
+3150	 -6.27172982	 -0.00098163	  0.00060179	  7.27074818	  0.99699990	  0.99841657  0.49302970
+3151	 -6.27173093	 -0.00098132	  0.00060160	  7.27074961	  0.99700085	  0.99841708  0.49302981
+3152	 -6.27173205	 -0.00098101	  0.00060141	  7.27075103	  0.99700180	  0.99841758  0.49302992
+3153	 -6.27173316	 -0.00098070	  0.00060122	  7.27075246	  0.99700275	  0.99841808  0.49303009
+3154	 -6.27173427	 -0.00098039	  0.00060103	  7.27075388	  0.99700370	  0.99841858  0.49303019
+3155	 -6.27173537	 -0.00098008	  0.00060084	  7.27075529	  0.99700465	  0.99841908  0.49303031
+3156	 -6.27173648	 -0.00097977	  0.00060065	  7.27075671	  0.99700560	  0.99841958  0.49303044
+3157	 -6.27173758	 -0.00097946	  0.00060046	  7.27075812	  0.99700655	  0.99842008  0.49303056
+3158	 -6.27173868	 -0.00097915	  0.00060027	  7.27075953	  0.99700749	  0.99842058  0.49303069
+3159	 -6.27173978	 -0.00097884	  0.00060008	  7.27076094	  0.99700844	  0.99842108  0.49303080
+3160	 -6.27174088	 -0.00097853	  0.00059989	  7.27076235	  0.99700939	  0.99842158  0.49303094
+3161	 -6.27174198	 -0.00097822	  0.00059970	  7.27076375	  0.99701033	  0.99842208  0.49303107
+3162	 -6.27174307	 -0.00097791	  0.00059951	  7.27076516	  0.99701128	  0.99842258  0.49303120
+3163	 -6.27174416	 -0.00097761	  0.00059932	  7.27076656	  0.99701222	  0.99842308  0.49303132
+3164	 -6.27174525	 -0.00097730	  0.00059913	  7.27076795	  0.99701317	  0.99842357  0.49303142
+3165	 -6.27174634	 -0.00097699	  0.00059894	  7.27076935	  0.99701411	  0.99842407  0.49303154
+3166	 -6.27174743	 -0.00097668	  0.00059875	  7.27077075	  0.99701505	  0.99842457  0.49303168
+3167	 -6.27174851	 -0.00097637	  0.00059856	  7.27077214	  0.99701599	  0.99842507  0.49303176
+3168	 -6.27174959	 -0.00097606	  0.00059837	  7.27077353	  0.99701693	  0.99842556  0.49303192
+3169	 -6.27175067	 -0.00097576	  0.00059818	  7.27077491	  0.99701788	  0.99842606  0.49303205
+3170	 -6.27175175	 -0.00097545	  0.00059800	  7.27077630	  0.99701882	  0.99842656  0.49303212
+3171	 -6.27175283	 -0.00097514	  0.00059781	  7.27077769	  0.99701976	  0.99842705  0.49303223
+3172	 -6.27175390	 -0.00097484	  0.00059762	  7.27077907	  0.99702070	  0.99842755  0.49303239
+3173	 -6.27175497	 -0.00097453	  0.00059743	  7.27078045	  0.99702163	  0.99842804  0.49303247
+3174	 -6.27175605	 -0.00097422	  0.00059724	  7.27078182	  0.99702257	  0.99842854  0.49303263
+3175	 -6.27175712	 -0.00097392	  0.00059705	  7.27078320	  0.99702351	  0.99842903  0.49303277
+3176	 -6.27175818	 -0.00097361	  0.00059687	  7.27078457	  0.99702445	  0.99842952  0.49303287
+3177	 -6.27175925	 -0.00097330	  0.00059668	  7.27078595	  0.99702538	  0.99843002  0.49303298
+3178	 -6.27176031	 -0.00097300	  0.00059649	  7.27078731	  0.99702632	  0.99843051  0.49303309
+3179	 -6.27176137	 -0.00097269	  0.00059630	  7.27078868	  0.99702725	  0.99843101  0.49303324
+3180	 -6.27176243	 -0.00097239	  0.00059612	  7.27079005	  0.99702819	  0.99843150  0.49303337
+3181	 -6.27176349	 -0.00097208	  0.00059593	  7.27079141	  0.99702912	  0.99843199  0.49303342
+3182	 -6.27176455	 -0.00097178	  0.00059574	  7.27079277	  0.99703005	  0.99843248  0.49303355
+3183	 -6.27176560	 -0.00097147	  0.00059555	  7.27079413	  0.99703099	  0.99843298  0.49303367
+3184	 -6.27176666	 -0.00097117	  0.00059537	  7.27079549	  0.99703192	  0.99843347  0.49303384
+3185	 -6.27176771	 -0.00097086	  0.00059518	  7.27079685	  0.99703285	  0.99843396  0.49303391
+3186	 -6.27176876	 -0.00097056	  0.00059499	  7.27079820	  0.99703378	  0.99843445  0.49303404
+3187	 -6.27176980	 -0.00097025	  0.00059481	  7.27079955	  0.99703471	  0.99843494  0.49303417
+3188	 -6.27177085	 -0.00096995	  0.00059462	  7.27080090	  0.99703564	  0.99843543  0.49303426
+3189	 -6.27177189	 -0.00096965	  0.00059443	  7.27080225	  0.99703657	  0.99843592  0.49303442
+3190	 -6.27177294	 -0.00096934	  0.00059425	  7.27080359	  0.99703750	  0.99843641  0.49303454
+3191	 -6.27177398	 -0.00096904	  0.00059406	  7.27080494	  0.99703843	  0.99843690  0.49303464
+3192	 -6.27177502	 -0.00096874	  0.00059388	  7.27080628	  0.99703936	  0.99843739  0.49303476
+3193	 -6.27177605	 -0.00096843	  0.00059369	  7.27080762	  0.99704028	  0.99843788  0.49303487
+3194	 -6.27177709	 -0.00096813	  0.00059350	  7.27080896	  0.99704121	  0.99843837  0.49303501
+3195	 -6.27177812	 -0.00096783	  0.00059332	  7.27081030	  0.99704213	  0.99843886  0.49303512
+3196	 -6.27177915	 -0.00096752	  0.00059313	  7.27081163	  0.99704306	  0.99843934  0.49303521
+3197	 -6.27178018	 -0.00096722	  0.00059295	  7.27081296	  0.99704398	  0.99843983  0.49303537
+3198	 -6.27178121	 -0.00096692	  0.00059276	  7.27081429	  0.99704491	  0.99844032  0.49303546
+3199	 -6.27178224	 -0.00096662	  0.00059258	  7.27081562	  0.99704583	  0.99844081  0.49303558
+3200	 -6.27178326	 -0.00096632	  0.00059239	  7.27081695	  0.99704675	  0.99844129  0.49303575
+3201	 -6.27178429	 -0.00096602	  0.00059221	  7.27081827	  0.99704768	  0.99844178  0.49303581
+3202	 -6.27178531	 -0.00096571	  0.00059202	  7.27081960	  0.99704860	  0.99844227  0.49303591
+3203	 -6.27178633	 -0.00096541	  0.00059184	  7.27082092	  0.99704952	  0.99844275  0.49303609
+3204	 -6.27178735	 -0.00096511	  0.00059165	  7.27082224	  0.99705044	  0.99844324  0.49303618
+3205	 -6.27178836	 -0.00096481	  0.00059147	  7.27082355	  0.99705136	  0.99844372  0.49303628
+3206	 -6.27178938	 -0.00096451	  0.00059128	  7.27082487	  0.99705228	  0.99844421  0.49303641
+3207	 -6.27179039	 -0.00096421	  0.00059110	  7.27082618	  0.99705320	  0.99844469  0.49303652
+3208	 -6.27179140	 -0.00096391	  0.00059091	  7.27082749	  0.99705412	  0.99844518  0.49303666
+3209	 -6.27179242	 -0.00096361	  0.00059073	  7.27082881	  0.99705503	  0.99844566  0.49303673
+3210	 -6.27179342	 -0.00096331	  0.00059055	  7.27083011	  0.99705595	  0.99844614  0.49303690
+3211	 -6.27179443	 -0.00096301	  0.00059036	  7.27083142	  0.99705687	  0.99844663  0.49303700
+3212	 -6.27179544	 -0.00096271	  0.00059018	  7.27083272	  0.99705778	  0.99844711  0.49303712
+3213	 -6.27179644	 -0.00096241	  0.00058999	  7.27083403	  0.99705870	  0.99844759  0.49303722
+3214	 -6.27179744	 -0.00096211	  0.00058981	  7.27083533	  0.99705961	  0.99844808  0.49303732
+3215	 -6.27179844	 -0.00096181	  0.00058963	  7.27083663	  0.99706053	  0.99844856  0.49303745
+3216	 -6.27179944	 -0.00096152	  0.00058944	  7.27083792	  0.99706144	  0.99844904  0.49303757
+3217	 -6.27180044	 -0.00096122	  0.00058926	  7.27083922	  0.99706235	  0.99844952  0.49303771
+3218	 -6.27180143	 -0.00096092	  0.00058908	  7.27084051	  0.99706327	  0.99845000  0.49303777
+3219	 -6.27180243	 -0.00096062	  0.00058890	  7.27084181	  0.99706418	  0.99845048  0.49303795
+3220	 -6.27180342	 -0.00096032	  0.00058871	  7.27084310	  0.99706509	  0.99845097  0.49303802
+3221	 -6.27180441	 -0.00096002	  0.00058853	  7.27084438	  0.99706600	  0.99845145  0.49303815
+3222	 -6.27180540	 -0.00095973	  0.00058835	  7.27084567	  0.99706691	  0.99845193  0.49303827
+3223	 -6.27180639	 -0.00095943	  0.00058816	  7.27084696	  0.99706782	  0.99845241  0.49303836
+3224	 -6.27180737	 -0.00095913	  0.00058798	  7.27084824	  0.99706873	  0.99845289  0.49303844
+3225	 -6.27180836	 -0.00095884	  0.00058780	  7.27084952	  0.99706964	  0.99845336  0.49303861
+3226	 -6.27180934	 -0.00095854	  0.00058762	  7.27085080	  0.99707055	  0.99845384  0.49303868
+3227	 -6.27181032	 -0.00095824	  0.00058744	  7.27085208	  0.99707145	  0.99845432  0.49303884
+3228	 -6.27181130	 -0.00095795	  0.00058725	  7.27085335	  0.99707236	  0.99845480  0.49303895
+3229	 -6.27181228	 -0.00095765	  0.00058707	  7.27085463	  0.99707327	  0.99845528  0.49303908
+3230	 -6.27181325	 -0.00095735	  0.00058689	  7.27085590	  0.99707417	  0.99845576  0.49303915
+3231	 -6.27181423	 -0.00095706	  0.00058671	  7.27085717	  0.99707508	  0.99845623  0.49303928
+3232	 -6.27181520	 -0.00095676	  0.00058653	  7.27085844	  0.99707598	  0.99845671  0.49303940
+3233	 -6.27181618	 -0.00095647	  0.00058635	  7.27085971	  0.99707689	  0.99845719  0.49303950
+3234	 -6.27181715	 -0.00095617	  0.00058616	  7.27086098	  0.99707779	  0.99845766  0.49303965
+3235	 -6.27181811	 -0.00095588	  0.00058598	  7.27086224	  0.99707869	  0.99845814  0.49303979
+3236	 -6.27181908	 -0.00095558	  0.00058580	  7.27086350	  0.99707960	  0.99845862  0.49303989
+3237	 -6.27182005	 -0.00095529	  0.00058562	  7.27086476	  0.99708050	  0.99845909  0.49303994
+3238	 -6.27182101	 -0.00095499	  0.00058544	  7.27086602	  0.99708140	  0.99845957  0.49304006
+3239	 -6.27182198	 -0.00095470	  0.00058526	  7.27086728	  0.99708230	  0.99846004  0.49304023
+3240	 -6.27182294	 -0.00095440	  0.00058508	  7.27086854	  0.99708320	  0.99846052  0.49304031
+3241	 -6.27182390	 -0.00095411	  0.00058490	  7.27086979	  0.99708410	  0.99846099  0.49304040
+3242	 -6.27182486	 -0.00095381	  0.00058472	  7.27087104	  0.99708500	  0.99846147  0.49304052
+3243	 -6.27182581	 -0.00095352	  0.00058454	  7.27087229	  0.99708590	  0.99846194  0.49304066
+3244	 -6.27182677	 -0.00095323	  0.00058436	  7.27087354	  0.99708680	  0.99846242  0.49304078
+3245	 -6.27182772	 -0.00095293	  0.00058418	  7.27087479	  0.99708769	  0.99846289  0.49304090
+3246	 -6.27182867	 -0.00095264	  0.00058400	  7.27087603	  0.99708859	  0.99846336  0.49304102
+3247	 -6.27182963	 -0.00095235	  0.00058382	  7.27087728	  0.99708949	  0.99846383  0.49304112
+3248	 -6.27183058	 -0.00095205	  0.00058364	  7.27087852	  0.99709038	  0.99846431  0.49304120
+3249	 -6.27183152	 -0.00095176	  0.00058346	  7.27087976	  0.99709128	  0.99846478  0.49304129
+3250	 -6.27183247	 -0.00095147	  0.00058328	  7.27088100	  0.99709217	  0.99846525  0.49304145
+3251	 -6.27183342	 -0.00095118	  0.00058310	  7.27088224	  0.99709307	  0.99846572  0.49304157
+3252	 -6.27183436	 -0.00095088	  0.00058292	  7.27088348	  0.99709396	  0.99846619  0.49304165
+3253	 -6.27183530	 -0.00095059	  0.00058274	  7.27088471	  0.99709485	  0.99846667  0.49304175
+3254	 -6.27183624	 -0.00095030	  0.00058256	  7.27088594	  0.99709575	  0.99846714  0.49304190
+3255	 -6.27183718	 -0.00095001	  0.00058238	  7.27088717	  0.99709664	  0.99846761  0.49304204
+3256	 -6.27183812	 -0.00094972	  0.00058221	  7.27088840	  0.99709753	  0.99846808  0.49304212
+3257	 -6.27183906	 -0.00094943	  0.00058203	  7.27088963	  0.99709842	  0.99846855  0.49304222
+3258	 -6.27183999	 -0.00094914	  0.00058185	  7.27089086	  0.99709931	  0.99846902  0.49304233
+3259	 -6.27184093	 -0.00094884	  0.00058167	  7.27089208	  0.99710020	  0.99846949  0.49304245
+3260	 -6.27184186	 -0.00094855	  0.00058149	  7.27089331	  0.99710109	  0.99846996  0.49304255
+3261	 -6.27184279	 -0.00094826	  0.00058131	  7.27089453	  0.99710198	  0.99847042  0.49304263
+3262	 -6.27184372	 -0.00094797	  0.00058113	  7.27089575	  0.99710287	  0.99847089  0.49304277
+3263	 -6.27184465	 -0.00094768	  0.00058096	  7.27089697	  0.99710375	  0.99847136  0.49304288
+3264	 -6.27184558	 -0.00094739	  0.00058078	  7.27089818	  0.99710464	  0.99847183  0.49304302
+3265	 -6.27184650	 -0.00094710	  0.00058060	  7.27089940	  0.99710553	  0.99847230  0.49304309
+3266	 -6.27184743	 -0.00094681	  0.00058042	  7.27090061	  0.99710641	  0.99847276  0.49304322
+3267	 -6.27184835	 -0.00094652	  0.00058025	  7.27090182	  0.99710730	  0.99847323  0.49304332
+3268	 -6.27184927	 -0.00094623	  0.00058007	  7.27090304	  0.99710818	  0.99847370  0.49304348
+3269	 -6.27185019	 -0.00094595	  0.00057989	  7.27090424	  0.99710907	  0.99847416  0.49304351
+3270	 -6.27185111	 -0.00094566	  0.00057971	  7.27090545	  0.99710995	  0.99847463  0.49304363
+3271	 -6.27185203	 -0.00094537	  0.00057954	  7.27090666	  0.99711083	  0.99847510  0.49304378
+3272	 -6.27185294	 -0.00094508	  0.00057936	  7.27090786	  0.99711172	  0.99847556  0.49304390
+3273	 -6.27185386	 -0.00094479	  0.00057918	  7.27090907	  0.99711260	  0.99847603  0.49304399
+3274	 -6.27185477	 -0.00094450	  0.00057901	  7.27091027	  0.99711348	  0.99847649  0.49304412
+3275	 -6.27185568	 -0.00094421	  0.00057883	  7.27091147	  0.99711436	  0.99847696  0.49304419
+3276	 -6.27185659	 -0.00094393	  0.00057865	  7.27091267	  0.99711524	  0.99847742  0.49304433
+3277	 -6.27185750	 -0.00094364	  0.00057848	  7.27091386	  0.99711612	  0.99847789  0.49304445
+3278	 -6.27185841	 -0.00094335	  0.00057830	  7.27091506	  0.99711700	  0.99847835  0.49304453
+3279	 -6.27185932	 -0.00094306	  0.00057812	  7.27091625	  0.99711788	  0.99847881  0.49304463
+3280	 -6.27186022	 -0.00094278	  0.00057795	  7.27091745	  0.99711876	  0.99847928  0.49304471
+3281	 -6.27186113	 -0.00094249	  0.00057777	  7.27091864	  0.99711964	  0.99847974  0.49304488
+3282	 -6.27186203	 -0.00094220	  0.00057759	  7.27091983	  0.99712051	  0.99848020  0.49304496
+3283	 -6.27186293	 -0.00094192	  0.00057742	  7.27092101	  0.99712139	  0.99848067  0.49304509
+3284	 -6.27186383	 -0.00094163	  0.00057724	  7.27092220	  0.99712227	  0.99848113  0.49304521
+3285	 -6.27186473	 -0.00094134	  0.00057707	  7.27092339	  0.99712314	  0.99848159  0.49304528
+3286	 -6.27186563	 -0.00094106	  0.00057689	  7.27092457	  0.99712402	  0.99848205  0.49304542
+3287	 -6.27186652	 -0.00094077	  0.00057672	  7.27092575	  0.99712489	  0.99848251  0.49304552
+3288	 -6.27186742	 -0.00094049	  0.00057654	  7.27092693	  0.99712577	  0.99848297  0.49304562
+3289	 -6.27186831	 -0.00094020	  0.00057636	  7.27092811	  0.99712664	  0.99848344  0.49304571
+3290	 -6.27186920	 -0.00093991	  0.00057619	  7.27092929	  0.99712751	  0.99848390  0.49304585
+3291	 -6.27187010	 -0.00093963	  0.00057601	  7.27093047	  0.99712839	  0.99848436  0.49304595
+3292	 -6.27187098	 -0.00093934	  0.00057584	  7.27093164	  0.99712926	  0.99848482  0.49304606
+3293	 -6.27187187	 -0.00093906	  0.00057567	  7.27093281	  0.99713013	  0.99848528  0.49304619
+3294	 -6.27187276	 -0.00093877	  0.00057549	  7.27093399	  0.99713100	  0.99848574  0.49304625
+3295	 -6.27187365	 -0.00093849	  0.00057532	  7.27093516	  0.99713187	  0.99848619  0.49304638
+3296	 -6.27187453	 -0.00093821	  0.00057514	  7.27093633	  0.99713274	  0.99848665  0.49304650
+3297	 -6.27187541	 -0.00093792	  0.00057497	  7.27093749	  0.99713361	  0.99848711  0.49304662
+3298	 -6.27187630	 -0.00093764	  0.00057479	  7.27093866	  0.99713448	  0.99848757  0.49304675
+3299	 -6.27187718	 -0.00093735	  0.00057462	  7.27093983	  0.99713535	  0.99848803  0.49304680
+3300	 -6.27187806	 -0.00093707	  0.00057444	  7.27094099	  0.99713622	  0.99848849  0.49304696
+3301	 -6.27187894	 -0.00093679	  0.00057427	  7.27094215	  0.99713708	  0.99848894  0.49304701
+3302	 -6.27187981	 -0.00093650	  0.00057410	  7.27094331	  0.99713795	  0.99848940  0.49304717
+3303	 -6.27188069	 -0.00093622	  0.00057392	  7.27094447	  0.99713882	  0.99848986  0.49304726
+3304	 -6.27188156	 -0.00093594	  0.00057375	  7.27094563	  0.99713968	  0.99849031  0.49304734
+3305	 -6.27188244	 -0.00093565	  0.00057358	  7.27094678	  0.99714055	  0.99849077  0.49304749
+3306	 -6.27188331	 -0.00093537	  0.00057340	  7.27094794	  0.99714141	  0.99849123  0.49304756
+3307	 -6.27188418	 -0.00093509	  0.00057323	  7.27094909	  0.99714228	  0.99849168  0.49304769
+3308	 -6.27188505	 -0.00093481	  0.00057306	  7.27095025	  0.99714314	  0.99849214  0.49304781
+3309	 -6.27188592	 -0.00093452	  0.00057288	  7.27095140	  0.99714400	  0.99849259  0.49304789
+3310	 -6.27188679	 -0.00093424	  0.00057271	  7.27095255	  0.99714486	  0.99849305  0.49304797
+3311	 -6.27188765	 -0.00093396	  0.00057254	  7.27095369	  0.99714573	  0.99849350  0.49304811
+3312	 -6.27188852	 -0.00093368	  0.00057236	  7.27095484	  0.99714659	  0.99849396  0.49304819
+3313	 -6.27188938	 -0.00093340	  0.00057219	  7.27095599	  0.99714745	  0.99849441  0.49304832
+3314	 -6.27189025	 -0.00093312	  0.00057202	  7.27095713	  0.99714831	  0.99849487  0.49304841
+3315	 -6.27189111	 -0.00093283	  0.00057185	  7.27095827	  0.99714917	  0.99849532  0.49304852
+3316	 -6.27189197	 -0.00093255	  0.00057167	  7.27095942	  0.99715003	  0.99849577  0.49304861
+3317	 -6.27189283	 -0.00093227	  0.00057150	  7.27096056	  0.99715089	  0.99849623  0.49304875
+3318	 -6.27189369	 -0.00093199	  0.00057133	  7.27096169	  0.99715175	  0.99849668  0.49304884
+3319	 -6.27189454	 -0.00093171	  0.00057116	  7.27096283	  0.99715260	  0.99849713  0.49304894
+3320	 -6.27189540	 -0.00093143	  0.00057098	  7.27096397	  0.99715346	  0.99849758  0.49304909
+3321	 -6.27189625	 -0.00093115	  0.00057081	  7.27096510	  0.99715432	  0.99849804  0.49304918
+3322	 -6.27189711	 -0.00093087	  0.00057064	  7.27096624	  0.99715517	  0.99849849  0.49304926
+3323	 -6.27189796	 -0.00093059	  0.00057047	  7.27096737	  0.99715603	  0.99849894  0.49304941
+3324	 -6.27189881	 -0.00093031	  0.00057030	  7.27096850	  0.99715689	  0.99849939  0.49304950
+3325	 -6.27189966	 -0.00093003	  0.00057013	  7.27096963	  0.99715774	  0.99849984  0.49304958
+3326	 -6.27190051	 -0.00092975	  0.00056995	  7.27097076	  0.99715860	  0.99850029  0.49304964
+3327	 -6.27190136	 -0.00092947	  0.00056978	  7.27097188	  0.99715945	  0.99850074  0.49304982
+3328	 -6.27190220	 -0.00092919	  0.00056961	  7.27097301	  0.99716030	  0.99850119  0.49304989
+3329	 -6.27190305	 -0.00092892	  0.00056944	  7.27097413	  0.99716115	  0.99850164  0.49305004
+3330	 -6.27190389	 -0.00092864	  0.00056927	  7.27097525	  0.99716201	  0.99850209  0.49305011
+3331	 -6.27190474	 -0.00092836	  0.00056910	  7.27097638	  0.99716286	  0.99850254  0.49305025
+3332	 -6.27190558	 -0.00092808	  0.00056893	  7.27097750	  0.99716371	  0.99850299  0.49305033
+3333	 -6.27190642	 -0.00092780	  0.00056876	  7.27097862	  0.99716456	  0.99850344  0.49305045
+3334	 -6.27190726	 -0.00092752	  0.00056859	  7.27097973	  0.99716541	  0.99850389  0.49305056
+3335	 -6.27190810	 -0.00092725	  0.00056842	  7.27098085	  0.99716626	  0.99850434  0.49305065
+3336	 -6.27190893	 -0.00092697	  0.00056825	  7.27098197	  0.99716711	  0.99850478  0.49305076
+3337	 -6.27190977	 -0.00092669	  0.00056808	  7.27098308	  0.99716796	  0.99850523  0.49305085
+3338	 -6.27191061	 -0.00092641	  0.00056791	  7.27098419	  0.99716881	  0.99850568  0.49305094
+3339	 -6.27191144	 -0.00092614	  0.00056774	  7.27098530	  0.99716965	  0.99850613  0.49305108
+3340	 -6.27191227	 -0.00092586	  0.00056757	  7.27098641	  0.99717050	  0.99850657  0.49305115
+3341	 -6.27191311	 -0.00092558	  0.00056740	  7.27098752	  0.99717135	  0.99850702  0.49305125
+3342	 -6.27191394	 -0.00092531	  0.00056723	  7.27098863	  0.99717219	  0.99850747  0.49305139
+3343	 -6.27191477	 -0.00092503	  0.00056706	  7.27098974	  0.99717304	  0.99850791  0.49305148
+3344	 -6.27191559	 -0.00092475	  0.00056689	  7.27099084	  0.99717389	  0.99850836  0.49305158
+3345	 -6.27191642	 -0.00092448	  0.00056672	  7.27099194	  0.99717473	  0.99850880  0.49305167
+3346	 -6.27191725	 -0.00092420	  0.00056655	  7.27099305	  0.99717557	  0.99850925  0.49305181
+3347	 -6.27191807	 -0.00092393	  0.00056638	  7.27099415	  0.99717642	  0.99850969  0.49305190
+3348	 -6.27191890	 -0.00092365	  0.00056621	  7.27099525	  0.99717726	  0.99851014  0.49305201
+3349	 -6.27191972	 -0.00092338	  0.00056604	  7.27099635	  0.99717810	  0.99851058  0.49305208
+3350	 -6.27192054	 -0.00092310	  0.00056587	  7.27099744	  0.99717895	  0.99851103  0.49305223
+3351	 -6.27192136	 -0.00092282	  0.00056570	  7.27099854	  0.99717979	  0.99851147  0.49305232
+3352	 -6.27192218	 -0.00092255	  0.00056553	  7.27099964	  0.99718063	  0.99851192  0.49305243
+3353	 -6.27192300	 -0.00092227	  0.00056537	  7.27100073	  0.99718147	  0.99851236  0.49305250
+3354	 -6.27192382	 -0.00092200	  0.00056520	  7.27100182	  0.99718231	  0.99851280  0.49305258
+3355	 -6.27192464	 -0.00092173	  0.00056503	  7.27100291	  0.99718315	  0.99851325  0.49305275
+3356	 -6.27192545	 -0.00092145	  0.00056486	  7.27100400	  0.99718399	  0.99851369  0.49305278
+3357	 -6.27192627	 -0.00092118	  0.00056469	  7.27100509	  0.99718483	  0.99851413  0.49305295
+3358	 -6.27192708	 -0.00092090	  0.00056452	  7.27100618	  0.99718566	  0.99851457  0.49305299
+3359	 -6.27192790	 -0.00092063	  0.00056436	  7.27100727	  0.99718650	  0.99851502  0.49305314
+3360	 -6.27192871	 -0.00092036	  0.00056419	  7.27100835	  0.99718734	  0.99851546  0.49305323
+3361	 -6.27192952	 -0.00092008	  0.00056402	  7.27100944	  0.99718818	  0.99851590  0.49305333
+3362	 -6.27193033	 -0.00091981	  0.00056385	  7.27101052	  0.99718901	  0.99851634  0.49305345
+3363	 -6.27193114	 -0.00091954	  0.00056368	  7.27101160	  0.99718985	  0.99851678  0.49305349
+3364	 -6.27193194	 -0.00091926	  0.00056352	  7.27101268	  0.99719068	  0.99851722  0.49305365
+3365	 -6.27193275	 -0.00091899	  0.00056335	  7.27101376	  0.99719152	  0.99851766  0.49305371
+3366	 -6.27193356	 -0.00091872	  0.00056318	  7.27101484	  0.99719235	  0.99851810  0.49305382
+3367	 -6.27193436	 -0.00091844	  0.00056301	  7.27101592	  0.99719318	  0.99851854  0.49305392
+3368	 -6.27193516	 -0.00091817	  0.00056285	  7.27101699	  0.99719402	  0.99851898  0.49305400
+3369	 -6.27193597	 -0.00091790	  0.00056268	  7.27101807	  0.99719485	  0.99851942  0.49305415
+3370	 -6.27193677	 -0.00091763	  0.00056251	  7.27101914	  0.99719568	  0.99851986  0.49305427
+3371	 -6.27193757	 -0.00091736	  0.00056235	  7.27102021	  0.99719651	  0.99852030  0.49305437
+3372	 -6.27193837	 -0.00091708	  0.00056218	  7.27102128	  0.99719735	  0.99852074  0.49305443
+3373	 -6.27193917	 -0.00091681	  0.00056201	  7.27102235	  0.99719818	  0.99852117  0.49305458
+3374	 -6.27193996	 -0.00091654	  0.00056185	  7.27102342	  0.99719901	  0.99852161  0.49305464
+3375	 -6.27194076	 -0.00091627	  0.00056168	  7.27102449	  0.99719984	  0.99852205  0.49305472
+3376	 -6.27194155	 -0.00091600	  0.00056151	  7.27102556	  0.99720066	  0.99852249  0.49305485
+3377	 -6.27194235	 -0.00091573	  0.00056135	  7.27102662	  0.99720149	  0.99852292  0.49305488
+3378	 -6.27194314	 -0.00091546	  0.00056118	  7.27102769	  0.99720232	  0.99852336  0.49305501
+3379	 -6.27194394	 -0.00091519	  0.00056102	  7.27102875	  0.99720315	  0.99852380  0.49305520
+3380	 -6.27194473	 -0.00091492	  0.00056085	  7.27102981	  0.99720398	  0.99852423  0.49305527
+3381	 -6.27194552	 -0.00091465	  0.00056068	  7.27103087	  0.99720480	  0.99852467  0.49305537
+3382	 -6.27194631	 -0.00091438	  0.00056052	  7.27103193	  0.99720563	  0.99852511  0.49305541
+3383	 -6.27194710	 -0.00091411	  0.00056035	  7.27103299	  0.99720646	  0.99852554  0.49305558
+3384	 -6.27194788	 -0.00091384	  0.00056019	  7.27103405	  0.99720728	  0.99852598  0.49305568
+3385	 -6.27194867	 -0.00091357	  0.00056002	  7.27103510	  0.99720811	  0.99852641  0.49305582
+3386	 -6.27194946	 -0.00091330	  0.00055986	  7.27103616	  0.99720893	  0.99852685  0.49305585
+3387	 -6.27195024	 -0.00091303	  0.00055969	  7.27103721	  0.99720975	  0.99852728  0.49305599
+3388	 -6.27195102	 -0.00091276	  0.00055953	  7.27103827	  0.99721058	  0.99852772  0.49305606
+3389	 -6.27195181	 -0.00091249	  0.00055936	  7.27103932	  0.99721140	  0.99852815  0.49305614
+3390	 -6.27195259	 -0.00091222	  0.00055920	  7.27104037	  0.99721222	  0.99852858  0.49305629
+3391	 -6.27195337	 -0.00091195	  0.00055903	  7.27104142	  0.99721304	  0.99852902  0.49305636
+3392	 -6.27195415	 -0.00091168	  0.00055887	  7.27104247	  0.99721387	  0.99852945  0.49305643
+3393	 -6.27195493	 -0.00091141	  0.00055870	  7.27104351	  0.99721469	  0.99852988  0.49305655
+3394	 -6.27195571	 -0.00091115	  0.00055854	  7.27104456	  0.99721551	  0.99853032  0.49305663
+3395	 -6.27195648	 -0.00091088	  0.00055837	  7.27104561	  0.99721633	  0.99853075  0.49305679
+3396	 -6.27195726	 -0.00091061	  0.00055821	  7.27104665	  0.99721715	  0.99853118  0.49305682
+3397	 -6.27195803	 -0.00091034	  0.00055804	  7.27104769	  0.99721796	  0.99853161  0.49305696
+3398	 -6.27195881	 -0.00091007	  0.00055788	  7.27104873	  0.99721878	  0.99853205  0.49305711
+3399	 -6.27195958	 -0.00090981	  0.00055771	  7.27104978	  0.99721960	  0.99853248  0.49305719
+3400	 -6.27196035	 -0.00090954	  0.00055755	  7.27105081	  0.99722042	  0.99853291  0.49305721
+3401	 -6.27196113	 -0.00090927	  0.00055739	  7.27105185	  0.99722124	  0.99853334  0.49305736
+3402	 -6.27196190	 -0.00090901	  0.00055722	  7.27105289	  0.99722205	  0.99853377  0.49305741
+3403	 -6.27196267	 -0.00090874	  0.00055706	  7.27105393	  0.99722287	  0.99853420  0.49305756
+3404	 -6.27196344	 -0.00090847	  0.00055690	  7.27105496	  0.99722368	  0.99853463  0.49305766
+3405	 -6.27196420	 -0.00090821	  0.00055673	  7.27105600	  0.99722450	  0.99853506  0.49305779
+3406	 -6.27196497	 -0.00090794	  0.00055657	  7.27105703	  0.99722531	  0.99853549  0.49305788
+3407	 -6.27196574	 -0.00090767	  0.00055641	  7.27105806	  0.99722613	  0.99853592  0.49305797
+3408	 -6.27196650	 -0.00090741	  0.00055624	  7.27105909	  0.99722694	  0.99853635  0.49305806
+3409	 -6.27196726	 -0.00090714	  0.00055608	  7.27106012	  0.99722776	  0.99853678  0.49305817
+3410	 -6.27196803	 -0.00090688	  0.00055592	  7.27106115	  0.99722857	  0.99853721  0.49305825
+3411	 -6.27196879	 -0.00090661	  0.00055575	  7.27106218	  0.99722938	  0.99853764  0.49305840
+3412	 -6.27196955	 -0.00090634	  0.00055559	  7.27106321	  0.99723019	  0.99853807  0.49305847
+3413	 -6.27197031	 -0.00090608	  0.00055543	  7.27106423	  0.99723100	  0.99853849  0.49305859
+3414	 -6.27197107	 -0.00090581	  0.00055526	  7.27106526	  0.99723181	  0.99853892  0.49305865
+3415	 -6.27197183	 -0.00090555	  0.00055510	  7.27106628	  0.99723262	  0.99853935  0.49305875
+3416	 -6.27197259	 -0.00090528	  0.00055494	  7.27106730	  0.99723343	  0.99853978  0.49305889
+3417	 -6.27197335	 -0.00090502	  0.00055478	  7.27106833	  0.99723424	  0.99854020  0.49305896
+3418	 -6.27197410	 -0.00090476	  0.00055461	  7.27106935	  0.99723505	  0.99854063  0.49305906
+3419	 -6.27197486	 -0.00090449	  0.00055445	  7.27107037	  0.99723586	  0.99854106  0.49305911
+3420	 -6.27197561	 -0.00090423	  0.00055429	  7.27107138	  0.99723667	  0.99854148  0.49305929
+3421	 -6.27197637	 -0.00090396	  0.00055413	  7.27107240	  0.99723748	  0.99854191  0.49305933
+3422	 -6.27197712	 -0.00090370	  0.00055397	  7.27107342	  0.99723828	  0.99854233  0.49305943
+3423	 -6.27197787	 -0.00090344	  0.00055380	  7.27107443	  0.99723909	  0.99854276  0.49305954
+3424	 -6.27197862	 -0.00090317	  0.00055364	  7.27107545	  0.99723990	  0.99854319  0.49305965
+3425	 -6.27197937	 -0.00090291	  0.00055348	  7.27107646	  0.99724070	  0.99854361  0.49305972
+3426	 -6.27198012	 -0.00090264	  0.00055332	  7.27107748	  0.99724151	  0.99854404  0.49305986
+3427	 -6.27198087	 -0.00090238	  0.00055316	  7.27107849	  0.99724231	  0.99854446  0.49305996
+3428	 -6.27198162	 -0.00090212	  0.00055300	  7.27107950	  0.99724312	  0.99854488  0.49306003
+3429	 -6.27198236	 -0.00090186	  0.00055284	  7.27108051	  0.99724392	  0.99854531  0.49306014
+3430	 -6.27198311	 -0.00090159	  0.00055267	  7.27108151	  0.99724472	  0.99854573  0.49306027
+3431	 -6.27198385	 -0.00090133	  0.00055251	  7.27108252	  0.99724553	  0.99854616  0.49306036
+3432	 -6.27198460	 -0.00090107	  0.00055235	  7.27108353	  0.99724633	  0.99854658  0.49306043
+3433	 -6.27198534	 -0.00090081	  0.00055219	  7.27108453	  0.99724713	  0.99854700  0.49306047
+3434	 -6.27198608	 -0.00090054	  0.00055203	  7.27108554	  0.99724793	  0.99854742  0.49306066
+3435	 -6.27198682	 -0.00090028	  0.00055187	  7.27108654	  0.99724873	  0.99854785  0.49306072
+3436	 -6.27198756	 -0.00090002	  0.00055171	  7.27108754	  0.99724953	  0.99854827  0.49306079
+3437	 -6.27198830	 -0.00089976	  0.00055155	  7.27108855	  0.99725033	  0.99854869  0.49306090
+3438	 -6.27198904	 -0.00089950	  0.00055139	  7.27108955	  0.99725113	  0.99854911  0.49306100
+3439	 -6.27198978	 -0.00089924	  0.00055123	  7.27109054	  0.99725193	  0.99854954  0.49306107
+3440	 -6.27199052	 -0.00089898	  0.00055107	  7.27109154	  0.99725273	  0.99854996  0.49306122
+3441	 -6.27199126	 -0.00089871	  0.00055091	  7.27109254	  0.99725353	  0.99855038  0.49306129
+3442	 -6.27199199	 -0.00089845	  0.00055075	  7.27109354	  0.99725433	  0.99855080  0.49306135
+3443	 -6.27199273	 -0.00089819	  0.00055059	  7.27109453	  0.99725512	  0.99855122  0.49306146
+3444	 -6.27199346	 -0.00089793	  0.00055043	  7.27109553	  0.99725592	  0.99855164  0.49306163
+3445	 -6.27199419	 -0.00089767	  0.00055027	  7.27109652	  0.99725672	  0.99855206  0.49306163
+3446	 -6.27199493	 -0.00089741	  0.00055011	  7.27109751	  0.99725751	  0.99855248  0.49306178
+3447	 -6.27199566	 -0.00089715	  0.00054995	  7.27109851	  0.99725831	  0.99855290  0.49306188
+3448	 -6.27199639	 -0.00089689	  0.00054979	  7.27109950	  0.99725910	  0.99855332  0.49306196
+3449	 -6.27199712	 -0.00089663	  0.00054963	  7.27110049	  0.99725990	  0.99855374  0.49306206
+3450	 -6.27199785	 -0.00089637	  0.00054947	  7.27110147	  0.99726069	  0.99855416  0.49306218
+3451	 -6.27199857	 -0.00089611	  0.00054931	  7.27110246	  0.99726149	  0.99855458  0.49306227
+3452	 -6.27199930	 -0.00089585	  0.00054915	  7.27110345	  0.99726228	  0.99855499  0.49306238
+3453	 -6.27200003	 -0.00089559	  0.00054899	  7.27110443	  0.99726307	  0.99855541  0.49306244
+3454	 -6.27200076	 -0.00089534	  0.00054883	  7.27110542	  0.99726386	  0.99855583  0.49306254
+3455	 -6.27200148	 -0.00089508	  0.00054868	  7.27110640	  0.99726465	  0.99855625  0.49306260
+3456	 -6.27200220	 -0.00089482	  0.00054852	  7.27110739	  0.99726545	  0.99855667  0.49306270
+3457	 -6.27200293	 -0.00089456	  0.00054836	  7.27110837	  0.99726624	  0.99855708  0.49306284
+3458	 -6.27200365	 -0.00089430	  0.00054820	  7.27110935	  0.99726703	  0.99855750  0.49306289
+3459	 -6.27200437	 -0.00089404	  0.00054804	  7.27111033	  0.99726782	  0.99855792  0.49306299
+3460	 -6.27200509	 -0.00089378	  0.00054788	  7.27111131	  0.99726861	  0.99855833  0.49306315
+3461	 -6.27200581	 -0.00089353	  0.00054772	  7.27111229	  0.99726940	  0.99855875  0.49306325
+3462	 -6.27200653	 -0.00089327	  0.00054757	  7.27111326	  0.99727018	  0.99855916  0.49306334
+3463	 -6.27200725	 -0.00089301	  0.00054741	  7.27111424	  0.99727097	  0.99855958  0.49306342
+3464	 -6.27200797	 -0.00089275	  0.00054725	  7.27111522	  0.99727176	  0.99856000  0.49306348
+3465	 -6.27200869	 -0.00089250	  0.00054709	  7.27111619	  0.99727255	  0.99856041  0.49306360
+3466	 -6.27200940	 -0.00089224	  0.00054693	  7.27111717	  0.99727333	  0.99856083  0.49306368
+3467	 -6.27201012	 -0.00089198	  0.00054678	  7.27111814	  0.99727412	  0.99856124  0.49306382
+3468	 -6.27201083	 -0.00089172	  0.00054662	  7.27111911	  0.99727491	  0.99856166  0.49306389
+3469	 -6.27201155	 -0.00089147	  0.00054646	  7.27112008	  0.99727569	  0.99856207  0.49306395
+3470	 -6.27201226	 -0.00089121	  0.00054630	  7.27112105	  0.99727648	  0.99856248  0.49306405
+3471	 -6.27201297	 -0.00089095	  0.00054615	  7.27112202	  0.99727726	  0.99856290  0.49306415
+3472	 -6.27201369	 -0.00089070	  0.00054599	  7.27112299	  0.99727804	  0.99856331  0.49306425
+3473	 -6.27201440	 -0.00089044	  0.00054583	  7.27112395	  0.99727883	  0.99856373  0.49306438
+3474	 -6.27201511	 -0.00089019	  0.00054568	  7.27112492	  0.99727961	  0.99856414  0.49306445
+3475	 -6.27201582	 -0.00088993	  0.00054552	  7.27112589	  0.99728039	  0.99856455  0.49306454
+3476	 -6.27201653	 -0.00088967	  0.00054536	  7.27112685	  0.99728118	  0.99856496  0.49306460
+3477	 -6.27201723	 -0.00088942	  0.00054520	  7.27112782	  0.99728196	  0.99856538  0.49306473
+3478	 -6.27201794	 -0.00088916	  0.00054505	  7.27112878	  0.99728274	  0.99856579  0.49306481
+3479	 -6.27201865	 -0.00088891	  0.00054489	  7.27112974	  0.99728352	  0.99856620  0.49306490
+3480	 -6.27201935	 -0.00088865	  0.00054473	  7.27113070	  0.99728430	  0.99856661  0.49306499
+3481	 -6.27202006	 -0.00088840	  0.00054458	  7.27113166	  0.99728508	  0.99856702  0.49306507
+3482	 -6.27202076	 -0.00088814	  0.00054442	  7.27113262	  0.99728586	  0.99856744  0.49306519
+3483	 -6.27202147	 -0.00088789	  0.00054427	  7.27113358	  0.99728664	  0.99856785  0.49306522
+3484	 -6.27202217	 -0.00088763	  0.00054411	  7.27113454	  0.99728742	  0.99856826  0.49306541
+3485	 -6.27202287	 -0.00088738	  0.00054395	  7.27113549	  0.99728820	  0.99856867  0.49306548
+3486	 -6.27202357	 -0.00088713	  0.00054380	  7.27113645	  0.99728897	  0.99856908  0.49306558
+3487	 -6.27202427	 -0.00088687	  0.00054364	  7.27113740	  0.99728975	  0.99856949  0.49306563
+3488	 -6.27202497	 -0.00088662	  0.00054349	  7.27113836	  0.99729053	  0.99856990  0.49306575
+3489	 -6.27202567	 -0.00088636	  0.00054333	  7.27113931	  0.99729130	  0.99857031  0.49306582
+3490	 -6.27202637	 -0.00088611	  0.00054317	  7.27114026	  0.99729208	  0.99857072  0.49306593
+3491	 -6.27202707	 -0.00088586	  0.00054302	  7.27114121	  0.99729285	  0.99857113  0.49306602
+3492	 -6.27202777	 -0.00088560	  0.00054286	  7.27114216	  0.99729363	  0.99857153  0.49306615
+3493	 -6.27202846	 -0.00088535	  0.00054271	  7.27114311	  0.99729440	  0.99857194  0.49306620
+3494	 -6.27202916	 -0.00088510	  0.00054255	  7.27114406	  0.99729518	  0.99857235  0.49306631
+3495	 -6.27202985	 -0.00088484	  0.00054240	  7.27114501	  0.99729595	  0.99857276  0.49306638
+3496	 -6.27203055	 -0.00088459	  0.00054224	  7.27114596	  0.99729673	  0.99857317  0.49306650
+3497	 -6.27203124	 -0.00088434	  0.00054209	  7.27114690	  0.99729750	  0.99857358  0.49306661
+3498	 -6.27203193	 -0.00088409	  0.00054193	  7.27114785	  0.99729827	  0.99857398  0.49306664
+3499	 -6.27203262	 -0.00088383	  0.00054178	  7.27114879	  0.99729904	  0.99857439  0.49306674
+3500	 -6.27203332	 -0.00088358	  0.00054162	  7.27114973	  0.99729981	  0.99857480  0.49306687
+3501	 -6.27203401	 -0.00088333	  0.00054147	  7.27115068	  0.99730059	  0.99857520  0.49306699
+3502	 -6.27203470	 -0.00088308	  0.00054131	  7.27115162	  0.99730136	  0.99857561  0.49306701
+3503	 -6.27203539	 -0.00088282	  0.00054116	  7.27115256	  0.99730213	  0.99857602  0.49306713
+3504	 -6.27203607	 -0.00088257	  0.00054100	  7.27115350	  0.99730290	  0.99857642  0.49306721
+3505	 -6.27203676	 -0.00088232	  0.00054085	  7.27115444	  0.99730366	  0.99857683  0.49306728
+3506	 -6.27203745	 -0.00088207	  0.00054069	  7.27115538	  0.99730443	  0.99857724  0.49306742
+3507	 -6.27203813	 -0.00088182	  0.00054054	  7.27115632	  0.99730520	  0.99857764  0.49306753
+3508	 -6.27203882	 -0.00088157	  0.00054039	  7.27115725	  0.99730597	  0.99857805  0.49306761
+3509	 -6.27203950	 -0.00088132	  0.00054023	  7.27115819	  0.99730674	  0.99857845  0.49306769
+3510	 -6.27204019	 -0.00088107	  0.00054008	  7.27115912	  0.99730750	  0.99857886  0.49306776
+3511	 -6.27204087	 -0.00088082	  0.00053992	  7.27116006	  0.99730827	  0.99857926  0.49306785
+3512	 -6.27204156	 -0.00088056	  0.00053977	  7.27116099	  0.99730904	  0.99857966  0.49306801
+3513	 -6.27204224	 -0.00088031	  0.00053962	  7.27116192	  0.99730980	  0.99858007  0.49306813
+3514	 -6.27204292	 -0.00088006	  0.00053946	  7.27116286	  0.99731057	  0.99858047  0.49306816
+3515	 -6.27204360	 -0.00087981	  0.00053931	  7.27116379	  0.99731133	  0.99858088  0.49306827
+3516	 -6.27204428	 -0.00087956	  0.00053916	  7.27116472	  0.99731210	  0.99858128  0.49306833
+3517	 -6.27204496	 -0.00087931	  0.00053900	  7.27116565	  0.99731286	  0.99858168  0.49306842
+3518	 -6.27204564	 -0.00087906	  0.00053885	  7.27116657	  0.99731363	  0.99858209  0.49306852
+3519	 -6.27204632	 -0.00087881	  0.00053870	  7.27116750	  0.99731439	  0.99858249  0.49306865
+3520	 -6.27204699	 -0.00087857	  0.00053854	  7.27116843	  0.99731515	  0.99858289  0.49306872
+3521	 -6.27204767	 -0.00087832	  0.00053839	  7.27116935	  0.99731591	  0.99858329  0.49306875
+3522	 -6.27204835	 -0.00087807	  0.00053824	  7.27117028	  0.99731668	  0.99858369  0.49306889
+3523	 -6.27204902	 -0.00087782	  0.00053809	  7.27117120	  0.99731744	  0.99858410  0.49306899
+3524	 -6.27204970	 -0.00087757	  0.00053793	  7.27117213	  0.99731820	  0.99858450  0.49306909
+3525	 -6.27205037	 -0.00087732	  0.00053778	  7.27117305	  0.99731896	  0.99858490  0.49306915
+3526	 -6.27205104	 -0.00087707	  0.00053763	  7.27117397	  0.99731972	  0.99858530  0.49306931
+3527	 -6.27205172	 -0.00087682	  0.00053748	  7.27117489	  0.99732048	  0.99858570  0.49306931
+3528	 -6.27205239	 -0.00087658	  0.00053732	  7.27117581	  0.99732124	  0.99858610  0.49306947
+3529	 -6.27205306	 -0.00087633	  0.00053717	  7.27117673	  0.99732200	  0.99858650  0.49306949
+3530	 -6.27205373	 -0.00087608	  0.00053702	  7.27117765	  0.99732276	  0.99858690  0.49306961
+3531	 -6.27205440	 -0.00087583	  0.00053687	  7.27117857	  0.99732351	  0.99858730  0.49306974
+3532	 -6.27205507	 -0.00087558	  0.00053671	  7.27117949	  0.99732427	  0.99858770  0.49306982
+3533	 -6.27205574	 -0.00087534	  0.00053656	  7.27118040	  0.99732503	  0.99858810  0.49306986
+3534	 -6.27205641	 -0.00087509	  0.00053641	  7.27118132	  0.99732579	  0.99858850  0.49306997
+3535	 -6.27205707	 -0.00087484	  0.00053626	  7.27118223	  0.99732654	  0.99858890  0.49307002
+3536	 -6.27205774	 -0.00087459	  0.00053611	  7.27118315	  0.99732730	  0.99858930  0.49307020
+3537	 -6.27205841	 -0.00087435	  0.00053596	  7.27118406	  0.99732805	  0.99858970  0.49307021
+3538	 -6.27205907	 -0.00087410	  0.00053580	  7.27118497	  0.99732881	  0.99859010  0.49307035
+3539	 -6.27205974	 -0.00087385	  0.00053565	  7.27118588	  0.99732956	  0.99859049  0.49307047
+3540	 -6.27206040	 -0.00087361	  0.00053550	  7.27118679	  0.99733032	  0.99859089  0.49307051
+3541	 -6.27206106	 -0.00087336	  0.00053535	  7.27118770	  0.99733107	  0.99859129  0.49307062
+3542	 -6.27206173	 -0.00087311	  0.00053520	  7.27118861	  0.99733182	  0.99859169  0.49307069
+3543	 -6.27206239	 -0.00087287	  0.00053505	  7.27118952	  0.99733258	  0.99859208  0.49307080
+3544	 -6.27206305	 -0.00087262	  0.00053490	  7.27119043	  0.99733333	  0.99859248  0.49307089
+3545	 -6.27206371	 -0.00087238	  0.00053475	  7.27119134	  0.99733408	  0.99859288  0.49307096
+3546	 -6.27206437	 -0.00087213	  0.00053460	  7.27119224	  0.99733483	  0.99859327  0.49307103
+3547	 -6.27206503	 -0.00087188	  0.00053445	  7.27119315	  0.99733558	  0.99859367  0.49307121
+3548	 -6.27206569	 -0.00087164	  0.00053429	  7.27119405	  0.99733633	  0.99859407  0.49307121
+3549	 -6.27206635	 -0.00087139	  0.00053414	  7.27119496	  0.99733709	  0.99859446  0.49307131
+3550	 -6.27206701	 -0.00087115	  0.00053399	  7.27119586	  0.99733783	  0.99859486  0.49307143
+3551	 -6.27206767	 -0.00087090	  0.00053384	  7.27119676	  0.99733858	  0.99859525  0.49307152
+3552	 -6.27206832	 -0.00087066	  0.00053369	  7.27119766	  0.99733933	  0.99859565  0.49307163
+3553	 -6.27206898	 -0.00087041	  0.00053354	  7.27119856	  0.99734008	  0.99859604  0.49307170
+3554	 -6.27206963	 -0.00087017	  0.00053339	  7.27119946	  0.99734083	  0.99859644  0.49307178
+3555	 -6.27207029	 -0.00086992	  0.00053324	  7.27120036	  0.99734158	  0.99859683  0.49307182
+3556	 -6.27207094	 -0.00086968	  0.00053309	  7.27120126	  0.99734233	  0.99859723  0.49307196
+3557	 -6.27207160	 -0.00086944	  0.00053294	  7.27120216	  0.99734307	  0.99859762  0.49307197
+3558	 -6.27207225	 -0.00086919	  0.00053279	  7.27120306	  0.99734382	  0.99859802  0.49307220
+3559	 -6.27207290	 -0.00086895	  0.00053264	  7.27120395	  0.99734457	  0.99859841  0.49307226
+3560	 -6.27207355	 -0.00086870	  0.00053249	  7.27120485	  0.99734531	  0.99859880  0.49307233
+3561	 -6.27207420	 -0.00086846	  0.00053234	  7.27120574	  0.99734606	  0.99859920  0.49307241
+3562	 -6.27207485	 -0.00086822	  0.00053219	  7.27120664	  0.99734680	  0.99859959  0.49307252
+3563	 -6.27207550	 -0.00086797	  0.00053205	  7.27120753	  0.99734755	  0.99859998  0.49307258
+3564	 -6.27207615	 -0.00086773	  0.00053190	  7.27120842	  0.99734829	  0.99860037  0.49307271
+3565	 -6.27207680	 -0.00086749	  0.00053175	  7.27120931	  0.99734903	  0.99860077  0.49307274
+3566	 -6.27207745	 -0.00086724	  0.00053160	  7.27121021	  0.99734978	  0.99860116  0.49307287
+3567	 -6.27207810	 -0.00086700	  0.00053145	  7.27121110	  0.99735052	  0.99860155  0.49307293
+3568	 -6.27207874	 -0.00086676	  0.00053130	  7.27121199	  0.99735126	  0.99860194  0.49307303
+3569	 -6.27207939	 -0.00086652	  0.00053115	  7.27121287	  0.99735200	  0.99860233  0.49307313
+3570	 -6.27208004	 -0.00086627	  0.00053100	  7.27121376	  0.99735275	  0.99860273  0.49307325
+3571	 -6.27208068	 -0.00086603	  0.00053085	  7.27121465	  0.99735349	  0.99860312  0.49307329
+3572	 -6.27208132	 -0.00086579	  0.00053070	  7.27121554	  0.99735423	  0.99860351  0.49307333
+3573	 -6.27208197	 -0.00086555	  0.00053056	  7.27121642	  0.99735497	  0.99860390  0.49307349
+3574	 -6.27208261	 -0.00086530	  0.00053041	  7.27121731	  0.99735571	  0.99860429  0.49307355
+3575	 -6.27208325	 -0.00086506	  0.00053026	  7.27121819	  0.99735645	  0.99860468  0.49307366
+3576	 -6.27208390	 -0.00086482	  0.00053011	  7.27121907	  0.99735719	  0.99860507  0.49307376
+3577	 -6.27208454	 -0.00086458	  0.00052996	  7.27121996	  0.99735792	  0.99860546  0.49307384
+3578	 -6.27208518	 -0.00086434	  0.00052981	  7.27122084	  0.99735866	  0.99860585  0.49307389
+3579	 -6.27208582	 -0.00086410	  0.00052967	  7.27122172	  0.99735940	  0.99860624  0.49307398
+3580	 -6.27208646	 -0.00086386	  0.00052952	  7.27122260	  0.99736014	  0.99860663  0.49307410
+3581	 -6.27208710	 -0.00086361	  0.00052937	  7.27122348	  0.99736088	  0.99860701  0.49307418
+3582	 -6.27208774	 -0.00086337	  0.00052922	  7.27122436	  0.99736161	  0.99860740  0.49307431
+3583	 -6.27208837	 -0.00086313	  0.00052908	  7.27122524	  0.99736235	  0.99860779  0.49307430
+3584	 -6.27208901	 -0.00086289	  0.00052893	  7.27122612	  0.99736308	  0.99860818  0.49307450
+3585	 -6.27208965	 -0.00086265	  0.00052878	  7.27122700	  0.99736382	  0.99860857  0.49307452
+3586	 -6.27209028	 -0.00086241	  0.00052863	  7.27122787	  0.99736455	  0.99860896  0.49307461
+3587	 -6.27209092	 -0.00086217	  0.00052849	  7.27122875	  0.99736529	  0.99860934  0.49307473
+3588	 -6.27209155	 -0.00086193	  0.00052834	  7.27122962	  0.99736602	  0.99860973  0.49307476
+3589	 -6.27209219	 -0.00086169	  0.00052819	  7.27123050	  0.99736676	  0.99861012  0.49307493
+3590	 -6.27209282	 -0.00086145	  0.00052804	  7.27123137	  0.99736749	  0.99861050  0.49307491
+3591	 -6.27209346	 -0.00086121	  0.00052790	  7.27123224	  0.99736822	  0.99861089  0.49307506
+3592	 -6.27209409	 -0.00086097	  0.00052775	  7.27123312	  0.99736896	  0.99861128  0.49307515
+3593	 -6.27209472	 -0.00086073	  0.00052760	  7.27123399	  0.99736969	  0.99861166  0.49307527
+3594	 -6.27209535	 -0.00086049	  0.00052746	  7.27123486	  0.99737042	  0.99861205  0.49307528
+3595	 -6.27209598	 -0.00086025	  0.00052731	  7.27123573	  0.99737115	  0.99861244  0.49307544
+3596	 -6.27209661	 -0.00086002	  0.00052716	  7.27123660	  0.99737188	  0.99861282  0.49307551
+3597	 -6.27209724	 -0.00085978	  0.00052702	  7.27123747	  0.99737261	  0.99861321  0.49307555
+3598	 -6.27209787	 -0.00085954	  0.00052687	  7.27123833	  0.99737334	  0.99861359  0.49307566
+3599	 -6.27209850	 -0.00085930	  0.00052672	  7.27123920	  0.99737407	  0.99861398  0.49307570
+3600	 -6.27209913	 -0.00085906	  0.00052658	  7.27124007	  0.99737480	  0.99861436  0.49307581
+3601	 -6.27209976	 -0.00085882	  0.00052643	  7.27124094	  0.99737553	  0.99861475  0.49307599
+3602	 -6.27210038	 -0.00085858	  0.00052628	  7.27124180	  0.99737626	  0.99861513  0.49307598
+3603	 -6.27210101	 -0.00085835	  0.00052614	  7.27124266	  0.99737699	  0.99861551  0.49307614
+3604	 -6.27210164	 -0.00085811	  0.00052599	  7.27124353	  0.99737771	  0.99861590  0.49307614
+3605	 -6.27210226	 -0.00085787	  0.00052585	  7.27124439	  0.99737844	  0.99861628  0.49307625
+3606	 -6.27210289	 -0.00085763	  0.00052570	  7.27124525	  0.99737917	  0.99861667  0.49307637
+3607	 -6.27210351	 -0.00085740	  0.00052555	  7.27124612	  0.99737989	  0.99861705  0.49307645
+3608	 -6.27210414	 -0.00085716	  0.00052541	  7.27124698	  0.99738062	  0.99861743  0.49307653
+3609	 -6.27210476	 -0.00085692	  0.00052526	  7.27124784	  0.99738135	  0.99861782  0.49307663
+3610	 -6.27210538	 -0.00085668	  0.00052512	  7.27124870	  0.99738207	  0.99861820  0.49307669
+3611	 -6.27210600	 -0.00085645	  0.00052497	  7.27124956	  0.99738280	  0.99861858  0.49307677
+3612	 -6.27210663	 -0.00085621	  0.00052483	  7.27125042	  0.99738352	  0.99861896  0.49307688
+3613	 -6.27210725	 -0.00085597	  0.00052468	  7.27125127	  0.99738424	  0.99861934  0.49307699
+3614	 -6.27210787	 -0.00085574	  0.00052454	  7.27125213	  0.99738497	  0.99861973  0.49307706
+3615	 -6.27210849	 -0.00085550	  0.00052439	  7.27125299	  0.99738569	  0.99862011  0.49307704
+3616	 -6.27210911	 -0.00085526	  0.00052425	  7.27125384	  0.99738641	  0.99862049  0.49307723
+3617	 -6.27210973	 -0.00085503	  0.00052410	  7.27125470	  0.99738714	  0.99862087  0.49307731
+3618	 -6.27211034	 -0.00085479	  0.00052396	  7.27125555	  0.99738786	  0.99862125  0.49307742
+3619	 -6.27211096	 -0.00085456	  0.00052381	  7.27125641	  0.99738858	  0.99862163  0.49307753
+3620	 -6.27211158	 -0.00085432	  0.00052367	  7.27125726	  0.99738930	  0.99862201  0.49307753
+3621	 -6.27211220	 -0.00085408	  0.00052352	  7.27125811	  0.99739002	  0.99862239  0.49307764
+3622	 -6.27211281	 -0.00085385	  0.00052338	  7.27125896	  0.99739074	  0.99862277  0.49307770
+3623	 -6.27211343	 -0.00085361	  0.00052323	  7.27125981	  0.99739146	  0.99862315  0.49307780
+3624	 -6.27211404	 -0.00085338	  0.00052309	  7.27126067	  0.99739218	  0.99862353  0.49307792
+3625	 -6.27211466	 -0.00085314	  0.00052295	  7.27126152	  0.99739290	  0.99862391  0.49307794
+3626	 -6.27211527	 -0.00085291	  0.00052280	  7.27126236	  0.99739362	  0.99862429  0.49307803
+3627	 -6.27211589	 -0.00085267	  0.00052266	  7.27126321	  0.99739434	  0.99862467  0.49307820
+3628	 -6.27211650	 -0.00085244	  0.00052251	  7.27126406	  0.99739506	  0.99862505  0.49307827
+3629	 -6.27211711	 -0.00085220	  0.00052237	  7.27126491	  0.99739577	  0.99862543  0.49307830
+3630	 -6.27211772	 -0.00085197	  0.00052222	  7.27126575	  0.99739649	  0.99862581  0.49307839
+3631	 -6.27211833	 -0.00085173	  0.00052208	  7.27126660	  0.99739721	  0.99862618  0.49307851
+3632	 -6.27211895	 -0.00085150	  0.00052194	  7.27126745	  0.99739792	  0.99862656  0.49307861
+3633	 -6.27211956	 -0.00085127	  0.00052179	  7.27126829	  0.99739864	  0.99862694  0.49307868
+3634	 -6.27212017	 -0.00085103	  0.00052165	  7.27126913	  0.99739936	  0.99862732  0.49307878
+3635	 -6.27212078	 -0.00085080	  0.00052151	  7.27126998	  0.99740007	  0.99862770  0.49307884
+3636	 -6.27212138	 -0.00085056	  0.00052136	  7.27127082	  0.99740079	  0.99862807  0.49307888
+3637	 -6.27212199	 -0.00085033	  0.00052122	  7.27127166	  0.99740150	  0.99862845  0.49307902
+3638	 -6.27212260	 -0.00085010	  0.00052108	  7.27127250	  0.99740221	  0.99862883  0.49307911
+3639	 -6.27212321	 -0.00084986	  0.00052093	  7.27127334	  0.99740293	  0.99862920  0.49307920
+3640	 -6.27212381	 -0.00084963	  0.00052079	  7.27127418	  0.99740364	  0.99862958  0.49307926
+3641	 -6.27212442	 -0.00084940	  0.00052065	  7.27127502	  0.99740435	  0.99862996  0.49307935
+3642	 -6.27212503	 -0.00084916	  0.00052050	  7.27127586	  0.99740507	  0.99863033  0.49307944
+3643	 -6.27212563	 -0.00084893	  0.00052036	  7.27127670	  0.99740578	  0.99863071  0.49307944
+3644	 -6.27212624	 -0.00084870	  0.00052022	  7.27127754	  0.99740649	  0.99863108  0.49307954
+3645	 -6.27212684	 -0.00084847	  0.00052008	  7.27127837	  0.99740720	  0.99863146  0.49307961
+3646	 -6.27212744	 -0.00084823	  0.00051993	  7.27127921	  0.99740791	  0.99863183  0.49307978
+3647	 -6.27212805	 -0.00084800	  0.00051979	  7.27128005	  0.99740862	  0.99863221  0.49307983
+3648	 -6.27212865	 -0.00084777	  0.00051965	  7.27128088	  0.99740933	  0.99863258  0.49307996
+3649	 -6.27212925	 -0.00084754	  0.00051951	  7.27128172	  0.99741004	  0.99863296  0.49308005
+3650	 -6.27212986	 -0.00084730	  0.00051936	  7.27128255	  0.99741075	  0.99863333  0.49308014
+3651	 -6.27213046	 -0.00084707	  0.00051922	  7.27128338	  0.99741146	  0.99863371  0.49308018
+3652	 -6.27213106	 -0.00084684	  0.00051908	  7.27128422	  0.99741217	  0.99863408  0.49308030
+3653	 -6.27213166	 -0.00084661	  0.00051894	  7.27128505	  0.99741288	  0.99863445  0.49308040
+3654	 -6.27213226	 -0.00084638	  0.00051879	  7.27128588	  0.99741359	  0.99863483  0.49308040
+3655	 -6.27213286	 -0.00084615	  0.00051865	  7.27128671	  0.99741429	  0.99863520  0.49308050
+3656	 -6.27213345	 -0.00084592	  0.00051851	  7.27128754	  0.99741500	  0.99863557  0.49308061
+3657	 -6.27213405	 -0.00084568	  0.00051837	  7.27128837	  0.99741571	  0.99863595  0.49308064
+3658	 -6.27213465	 -0.00084545	  0.00051823	  7.27128920	  0.99741641	  0.99863632  0.49308083
+3659	 -6.27213525	 -0.00084522	  0.00051809	  7.27129003	  0.99741712	  0.99863669  0.49308089
+3660	 -6.27213585	 -0.00084499	  0.00051794	  7.27129085	  0.99741783	  0.99863706  0.49308103
+3661	 -6.27213644	 -0.00084476	  0.00051780	  7.27129168	  0.99741853	  0.99863744  0.49308104
+3662	 -6.27213704	 -0.00084453	  0.00051766	  7.27129251	  0.99741924	  0.99863781  0.49308114
+3663	 -6.27213763	 -0.00084430	  0.00051752	  7.27129333	  0.99741994	  0.99863818  0.49308122
+3664	 -6.27213823	 -0.00084407	  0.00051738	  7.27129416	  0.99742064	  0.99863855  0.49308125
+3665	 -6.27213882	 -0.00084384	  0.00051724	  7.27129498	  0.99742135	  0.99863892  0.49308128
+3666	 -6.27213942	 -0.00084361	  0.00051710	  7.27129581	  0.99742205	  0.99863929  0.49308149
+3667	 -6.27214001	 -0.00084338	  0.00051696	  7.27129663	  0.99742275	  0.99863966  0.49308153
+3668	 -6.27214060	 -0.00084315	  0.00051681	  7.27129745	  0.99742346	  0.99864003  0.49308160
+3669	 -6.27214120	 -0.00084292	  0.00051667	  7.27129827	  0.99742416	  0.99864041  0.49308174
+3670	 -6.27214179	 -0.00084269	  0.00051653	  7.27129910	  0.99742486	  0.99864078  0.49308171
+3671	 -6.27214238	 -0.00084246	  0.00051639	  7.27129992	  0.99742556	  0.99864115  0.49308189
+3672	 -6.27214297	 -0.00084223	  0.00051625	  7.27130074	  0.99742626	  0.99864152  0.49308189
+3673	 -6.27214356	 -0.00084200	  0.00051611	  7.27130156	  0.99742696	  0.99864188  0.49308208
+3674	 -6.27214415	 -0.00084178	  0.00051597	  7.27130237	  0.99742766	  0.99864225  0.49308218
+3675	 -6.27214474	 -0.00084155	  0.00051583	  7.27130319	  0.99742836	  0.99864262  0.49308217
+3676	 -6.27214533	 -0.00084132	  0.00051569	  7.27130401	  0.99742906	  0.99864299  0.49308225
+3677	 -6.27214592	 -0.00084109	  0.00051555	  7.27130483	  0.99742976	  0.99864336  0.49308239
+3678	 -6.27214651	 -0.00084086	  0.00051541	  7.27130564	  0.99743046	  0.99864373  0.49308247
+3679	 -6.27214709	 -0.00084063	  0.00051527	  7.27130646	  0.99743116	  0.99864410  0.49308255
+3680	 -6.27214768	 -0.00084040	  0.00051513	  7.27130728	  0.99743186	  0.99864447  0.49308258
+3681	 -6.27214827	 -0.00084018	  0.00051499	  7.27130809	  0.99743255	  0.99864483  0.49308266
+3682	 -6.27214885	 -0.00083995	  0.00051485	  7.27130891	  0.99743325	  0.99864520  0.49308274
+3683	 -6.27214944	 -0.00083972	  0.00051471	  7.27130972	  0.99743395	  0.99864557  0.49308290
+3684	 -6.27215002	 -0.00083949	  0.00051457	  7.27131053	  0.99743464	  0.99864594  0.49308290
+3685	 -6.27215061	 -0.00083926	  0.00051443	  7.27131134	  0.99743534	  0.99864631  0.49308300
+3686	 -6.27215119	 -0.00083904	  0.00051429	  7.27131216	  0.99743604	  0.99864667  0.49308315
+3687	 -6.27215178	 -0.00083881	  0.00051415	  7.27131297	  0.99743673	  0.99864704  0.49308314
+3688	 -6.27215236	 -0.00083858	  0.00051401	  7.27131378	  0.99743743	  0.99864741  0.49308324
+3689	 -6.27215294	 -0.00083836	  0.00051387	  7.27131459	  0.99743812	  0.99864777  0.49308338
+3690	 -6.27215353	 -0.00083813	  0.00051373	  7.27131540	  0.99743881	  0.99864814  0.49308338
+3691	 -6.27215411	 -0.00083790	  0.00051359	  7.27131621	  0.99743951	  0.99864850  0.49308350
+3692	 -6.27215469	 -0.00083768	  0.00051345	  7.27131702	  0.99744020	  0.99864887  0.49308357
+3693	 -6.27215527	 -0.00083745	  0.00051332	  7.27131782	  0.99744089	  0.99864924  0.49308374
+3694	 -6.27215585	 -0.00083722	  0.00051318	  7.27131863	  0.99744159	  0.99864960  0.49308379
+3695	 -6.27215643	 -0.00083700	  0.00051304	  7.27131944	  0.99744228	  0.99864997  0.49308384
+3696	 -6.27215701	 -0.00083677	  0.00051290	  7.27132024	  0.99744297	  0.99865033  0.49308393
+3697	 -6.27215759	 -0.00083654	  0.00051276	  7.27132105	  0.99744366	  0.99865070  0.49308399
+3698	 -6.27215817	 -0.00083632	  0.00051262	  7.27132185	  0.99744435	  0.99865106  0.49308412
+3699	 -6.27215875	 -0.00083609	  0.00051248	  7.27132266	  0.99744504	  0.99865143  0.49308421
+3700	 -6.27215933	 -0.00083587	  0.00051234	  7.27132346	  0.99744574	  0.99865179  0.49308425
+3701	 -6.27215990	 -0.00083564	  0.00051221	  7.27132426	  0.99744643	  0.99865215  0.49308434
+3702	 -6.27216048	 -0.00083541	  0.00051207	  7.27132507	  0.99744711	  0.99865252  0.49308442
+3703	 -6.27216106	 -0.00083519	  0.00051193	  7.27132587	  0.99744780	  0.99865288  0.49308450
+3704	 -6.27216164	 -0.00083496	  0.00051179	  7.27132667	  0.99744849	  0.99865324  0.49308461
+3705	 -6.27216221	 -0.00083474	  0.00051165	  7.27132747	  0.99744918	  0.99865361  0.49308467
+3706	 -6.27216279	 -0.00083451	  0.00051151	  7.27132827	  0.99744987	  0.99865397  0.49308473
+3707	 -6.27216336	 -0.00083429	  0.00051138	  7.27132907	  0.99745056	  0.99865433  0.49308483
+3708	 -6.27216394	 -0.00083406	  0.00051124	  7.27132987	  0.99745124	  0.99865470  0.49308489
+3709	 -6.27216451	 -0.00083384	  0.00051110	  7.27133067	  0.99745193	  0.99865506  0.49308501
+3710	 -6.27216508	 -0.00083361	  0.00051096	  7.27133147	  0.99745262	  0.99865542  0.49308509
+3711	 -6.27216566	 -0.00083339	  0.00051083	  7.27133227	  0.99745330	  0.99865578  0.49308519
+3712	 -6.27216623	 -0.00083317	  0.00051069	  7.27133306	  0.99745399	  0.99865615  0.49308520
+3713	 -6.27216680	 -0.00083294	  0.00051055	  7.27133386	  0.99745468	  0.99865651  0.49308532
+3714	 -6.27216737	 -0.00083272	  0.00051041	  7.27133465	  0.99745536	  0.99865687  0.49308537
+3715	 -6.27216794	 -0.00083249	  0.00051028	  7.27133545	  0.99745605	  0.99865723  0.49308548
+3716	 -6.27216851	 -0.00083227	  0.00051014	  7.27133624	  0.99745673	  0.99865759  0.49308555
+3717	 -6.27216909	 -0.00083205	  0.00051000	  7.27133704	  0.99745741	  0.99865795  0.49308568
+3718	 -6.27216966	 -0.00083182	  0.00050986	  7.27133783	  0.99745810	  0.99865831  0.49308575
+3719	 -6.27217022	 -0.00083160	  0.00050973	  7.27133863	  0.99745878	  0.99865867  0.49308580
+3720	 -6.27217079	 -0.00083138	  0.00050959	  7.27133942	  0.99745946	  0.99865903  0.49308589
+3721	 -6.27217136	 -0.00083115	  0.00050945	  7.27134021	  0.99746015	  0.99865939  0.49308593
+3722	 -6.27217193	 -0.00083093	  0.00050932	  7.27134100	  0.99746083	  0.99865975  0.49308603
+3723	 -6.27217250	 -0.00083071	  0.00050918	  7.27134179	  0.99746151	  0.99866011  0.49308603
+3724	 -6.27217307	 -0.00083048	  0.00050904	  7.27134258	  0.99746219	  0.99866047  0.49308626
+3725	 -6.27217363	 -0.00083026	  0.00050891	  7.27134337	  0.99746287	  0.99866083  0.49308628
+3726	 -6.27217420	 -0.00083004	  0.00050877	  7.27134416	  0.99746355	  0.99866119  0.49308633
+3727	 -6.27217477	 -0.00082982	  0.00050863	  7.27134495	  0.99746424	  0.99866155  0.49308648
+3728	 -6.27217533	 -0.00082959	  0.00050850	  7.27134574	  0.99746492	  0.99866191  0.49308650
+3729	 -6.27217590	 -0.00082937	  0.00050836	  7.27134653	  0.99746559	  0.99866227  0.49308659
+3730	 -6.27217646	 -0.00082915	  0.00050822	  7.27134731	  0.99746627	  0.99866263  0.49308664
+3731	 -6.27217703	 -0.00082893	  0.00050809	  7.27134810	  0.99746695	  0.99866299  0.49308674
+3732	 -6.27217759	 -0.00082871	  0.00050795	  7.27134888	  0.99746763	  0.99866334  0.49308688
+3733	 -6.27217815	 -0.00082848	  0.00050782	  7.27134967	  0.99746831	  0.99866370  0.49308691
+3734	 -6.27217872	 -0.00082826	  0.00050768	  7.27135045	  0.99746899	  0.99866406  0.49308700
+3735	 -6.27217928	 -0.00082804	  0.00050754	  7.27135124	  0.99746967	  0.99866442  0.49308706
+3736	 -6.27217984	 -0.00082782	  0.00050741	  7.27135202	  0.99747034	  0.99866477  0.49308711
+3737	 -6.27218040	 -0.00082760	  0.00050727	  7.27135281	  0.99747102	  0.99866513  0.49308731
+3738	 -6.27218097	 -0.00082738	  0.00050714	  7.27135359	  0.99747170	  0.99866549  0.49308733
+3739	 -6.27218153	 -0.00082716	  0.00050700	  7.27135437	  0.99747237	  0.99866584  0.49308746
+3740	 -6.27218209	 -0.00082693	  0.00050686	  7.27135515	  0.99747305	  0.99866620  0.49308753
+3741	 -6.27218265	 -0.00082671	  0.00050673	  7.27135593	  0.99747372	  0.99866656  0.49308759
+3742	 -6.27218321	 -0.00082649	  0.00050659	  7.27135671	  0.99747440	  0.99866691  0.49308757
+3743	 -6.27218377	 -0.00082627	  0.00050646	  7.27135749	  0.99747507	  0.99866727  0.49308770
+3744	 -6.27218433	 -0.00082605	  0.00050632	  7.27135827	  0.99747575	  0.99866763  0.49308772
+3745	 -6.27218488	 -0.00082583	  0.00050619	  7.27135905	  0.99747642	  0.99866798  0.49308784
+3746	 -6.27218544	 -0.00082561	  0.00050605	  7.27135983	  0.99747709	  0.99866834  0.49308794
+3747	 -6.27218600	 -0.00082539	  0.00050592	  7.27136061	  0.99747777	  0.99866869  0.49308810
+3748	 -6.27218656	 -0.00082517	  0.00050578	  7.27136139	  0.99747844	  0.99866905  0.49308812
+3749	 -6.27218711	 -0.00082495	  0.00050565	  7.27136216	  0.99747911	  0.99866940  0.49308821
+3750	 -6.27218767	 -0.00082473	  0.00050551	  7.27136294	  0.99747978	  0.99866976  0.49308825
+3751	 -6.27218823	 -0.00082451	  0.00050538	  7.27136371	  0.99748046	  0.99867011  0.49308833
+3752	 -6.27218878	 -0.00082429	  0.00050524	  7.27136449	  0.99748113	  0.99867046  0.49308847
+3753	 -6.27218934	 -0.00082407	  0.00050511	  7.27136526	  0.99748180	  0.99867082  0.49308860
+3754	 -6.27218989	 -0.00082385	  0.00050497	  7.27136604	  0.99748247	  0.99867117  0.49308859
+3755	 -6.27219045	 -0.00082363	  0.00050484	  7.27136681	  0.99748314	  0.99867153  0.49308869
+3756	 -6.27219100	 -0.00082341	  0.00050471	  7.27136759	  0.99748381	  0.99867188  0.49308873
+3757	 -6.27219155	 -0.00082320	  0.00050457	  7.27136836	  0.99748448	  0.99867223  0.49308878
+3758	 -6.27219211	 -0.00082298	  0.00050444	  7.27136913	  0.99748515	  0.99867259  0.49308888
+3759	 -6.27219266	 -0.00082276	  0.00050430	  7.27136990	  0.99748582	  0.99867294  0.49308897
+3760	 -6.27219321	 -0.00082254	  0.00050417	  7.27137067	  0.99748649	  0.99867329  0.49308901
+3761	 -6.27219376	 -0.00082232	  0.00050403	  7.27137144	  0.99748715	  0.99867364  0.49308913
+3762	 -6.27219432	 -0.00082210	  0.00050390	  7.27137221	  0.99748782	  0.99867400  0.49308916
+3763	 -6.27219487	 -0.00082188	  0.00050377	  7.27137298	  0.99748849	  0.99867435  0.49308935
+3764	 -6.27219542	 -0.00082167	  0.00050363	  7.27137375	  0.99748916	  0.99867470  0.49308938
+3765	 -6.27219597	 -0.00082145	  0.00050350	  7.27137452	  0.99748982	  0.99867505  0.49308944
+3766	 -6.27219652	 -0.00082123	  0.00050337	  7.27137529	  0.99749049	  0.99867540  0.49308959
+3767	 -6.27219707	 -0.00082101	  0.00050323	  7.27137606	  0.99749116	  0.99867576  0.49308961
+3768	 -6.27219762	 -0.00082080	  0.00050310	  7.27137682	  0.99749182	  0.99867611  0.49308966
+3769	 -6.27219817	 -0.00082058	  0.00050296	  7.27137759	  0.99749249	  0.99867646  0.49308979
+3770	 -6.27219872	 -0.00082036	  0.00050283	  7.27137836	  0.99749315	  0.99867681  0.49308985
+3771	 -6.27219926	 -0.00082014	  0.00050270	  7.27137912	  0.99749382	  0.99867716  0.49308989
+3772	 -6.27219981	 -0.00081993	  0.00050256	  7.27137989	  0.99749448	  0.99867751  0.49309002
+3773	 -6.27220036	 -0.00081971	  0.00050243	  7.27138065	  0.99749514	  0.99867786  0.49309006
+3774	 -6.27220091	 -0.00081949	  0.00050230	  7.27138141	  0.99749581	  0.99867821  0.49309016
+3775	 -6.27220145	 -0.00081927	  0.00050216	  7.27138218	  0.99749647	  0.99867856  0.49309022
+3776	 -6.27220200	 -0.00081906	  0.00050203	  7.27138294	  0.99749713	  0.99867891  0.49309028
+3777	 -6.27220254	 -0.00081884	  0.00050190	  7.27138370	  0.99749780	  0.99867926  0.49309037
+3778	 -6.27220309	 -0.00081862	  0.00050177	  7.27138446	  0.99749846	  0.99867961  0.49309053
+3779	 -6.27220363	 -0.00081841	  0.00050163	  7.27138523	  0.99749912	  0.99867996  0.49309055
+3780	 -6.27220418	 -0.00081819	  0.00050150	  7.27138599	  0.99749978	  0.99868031  0.49309069
+3781	 -6.27220472	 -0.00081798	  0.00050137	  7.27138675	  0.99750044	  0.99868066  0.49309070
+3782	 -6.27220527	 -0.00081776	  0.00050124	  7.27138751	  0.99750110	  0.99868100  0.49309083
+3783	 -6.27220581	 -0.00081754	  0.00050110	  7.27138827	  0.99750176	  0.99868135  0.49309090
+3784	 -6.27220635	 -0.00081733	  0.00050097	  7.27138902	  0.99750242	  0.99868170  0.49309098
+3785	 -6.27220690	 -0.00081711	  0.00050084	  7.27138978	  0.99750308	  0.99868205  0.49309101
+3786	 -6.27220744	 -0.00081690	  0.00050071	  7.27139054	  0.99750374	  0.99868240  0.49309113
+3787	 -6.27220798	 -0.00081668	  0.00050057	  7.27139130	  0.99750440	  0.99868275  0.49309116
+3788	 -6.27220852	 -0.00081647	  0.00050044	  7.27139205	  0.99750506	  0.99868309  0.49309123
+3789	 -6.27220906	 -0.00081625	  0.00050031	  7.27139281	  0.99750572	  0.99868344  0.49309142
+3790	 -6.27220960	 -0.00081604	  0.00050018	  7.27139357	  0.99750638	  0.99868379  0.49309142
+3791	 -6.27221014	 -0.00081582	  0.00050005	  7.27139432	  0.99750703	  0.99868413  0.49309146
+3792	 -6.27221068	 -0.00081561	  0.00049991	  7.27139508	  0.99750769	  0.99868448  0.49309158
+3793	 -6.27221122	 -0.00081539	  0.00049978	  7.27139583	  0.99750835	  0.99868483  0.49309166
+3794	 -6.27221176	 -0.00081518	  0.00049965	  7.27139659	  0.99750901	  0.99868517  0.49309171
+3795	 -6.27221230	 -0.00081496	  0.00049952	  7.27139734	  0.99750966	  0.99868552  0.49309183
+3796	 -6.27221284	 -0.00081475	  0.00049939	  7.27139809	  0.99751032	  0.99868587  0.49309186
+3797	 -6.27221338	 -0.00081453	  0.00049926	  7.27139884	  0.99751097	  0.99868621  0.49309196
+3798	 -6.27221391	 -0.00081432	  0.00049912	  7.27139960	  0.99751163	  0.99868656  0.49309197
+3799	 -6.27221445	 -0.00081410	  0.00049899	  7.27140035	  0.99751228	  0.99868690  0.49309212
+3800	 -6.27221499	 -0.00081389	  0.00049886	  7.27140110	  0.99751294	  0.99868725  0.49309226
+3801	 -6.27221552	 -0.00081368	  0.00049873	  7.27140185	  0.99751359	  0.99868759  0.49309233
+3802	 -6.27221606	 -0.00081346	  0.00049860	  7.27140260	  0.99751425	  0.99868794  0.49309240
+3803	 -6.27221660	 -0.00081325	  0.00049847	  7.27140335	  0.99751490	  0.99868828  0.49309241
+3804	 -6.27221713	 -0.00081303	  0.00049834	  7.27140410	  0.99751555	  0.99868863  0.49309250
+3805	 -6.27221767	 -0.00081282	  0.00049821	  7.27140485	  0.99751621	  0.99868897  0.49309252
+3806	 -6.27221820	 -0.00081261	  0.00049807	  7.27140559	  0.99751686	  0.99868932  0.49309262
+3807	 -6.27221874	 -0.00081239	  0.00049794	  7.27140634	  0.99751751	  0.99868966  0.49309274
+3808	 -6.27221927	 -0.00081218	  0.00049781	  7.27140709	  0.99751816	  0.99869001  0.49309277
+3809	 -6.27221980	 -0.00081197	  0.00049768	  7.27140784	  0.99751881	  0.99869035  0.49309287
+3810	 -6.27222034	 -0.00081176	  0.00049755	  7.27140858	  0.99751946	  0.99869069  0.49309295
+3811	 -6.27222087	 -0.00081154	  0.00049742	  7.27140933	  0.99752012	  0.99869104  0.49309305
+3812	 -6.27222140	 -0.00081133	  0.00049729	  7.27141007	  0.99752077	  0.99869138  0.49309311
+3813	 -6.27222193	 -0.00081112	  0.00049716	  7.27141082	  0.99752142	  0.99869172  0.49309317
+3814	 -6.27222247	 -0.00081090	  0.00049703	  7.27141156	  0.99752207	  0.99869207  0.49309328
+3815	 -6.27222300	 -0.00081069	  0.00049690	  7.27141230	  0.99752271	  0.99869241  0.49309332
+3816	 -6.27222353	 -0.00081048	  0.00049677	  7.27141305	  0.99752336	  0.99869275  0.49309344
+3817	 -6.27222406	 -0.00081027	  0.00049664	  7.27141379	  0.99752401	  0.99869309  0.49309341
+3818	 -6.27222459	 -0.00081006	  0.00049651	  7.27141453	  0.99752466	  0.99869344  0.49309354
+3819	 -6.27222512	 -0.00080984	  0.00049638	  7.27141527	  0.99752531	  0.99869378  0.49309361
+3820	 -6.27222565	 -0.00080963	  0.00049625	  7.27141602	  0.99752596	  0.99869412  0.49309375
+3821	 -6.27222618	 -0.00080942	  0.00049612	  7.27141676	  0.99752660	  0.99869446  0.49309380
+3822	 -6.27222671	 -0.00080921	  0.00049599	  7.27141750	  0.99752725	  0.99869480  0.49309382
+3823	 -6.27222723	 -0.00080900	  0.00049586	  7.27141824	  0.99752790	  0.99869514  0.49309395
+3824	 -6.27222776	 -0.00080879	  0.00049573	  7.27141898	  0.99752854	  0.99869548  0.49309403
+3825	 -6.27222829	 -0.00080857	  0.00049560	  7.27141972	  0.99752919	  0.99869582  0.49309409
+3826	 -6.27222882	 -0.00080836	  0.00049547	  7.27142045	  0.99752984	  0.99869617  0.49309410
+3827	 -6.27222934	 -0.00080815	  0.00049534	  7.27142119	  0.99753048	  0.99869651  0.49309425
+3828	 -6.27222987	 -0.00080794	  0.00049521	  7.27142193	  0.99753113	  0.99869685  0.49309434
+3829	 -6.27223040	 -0.00080773	  0.00049508	  7.27142267	  0.99753177	  0.99869719  0.49309443
+3830	 -6.27223092	 -0.00080752	  0.00049495	  7.27142340	  0.99753241	  0.99869753  0.49309447
+3831	 -6.27223145	 -0.00080731	  0.00049482	  7.27142414	  0.99753306	  0.99869787  0.49309457
+3832	 -6.27223197	 -0.00080710	  0.00049469	  7.27142488	  0.99753370	  0.99869821  0.49309459
+3833	 -6.27223250	 -0.00080689	  0.00049457	  7.27142561	  0.99753435	  0.99869855  0.49309463
+3834	 -6.27223302	 -0.00080668	  0.00049444	  7.27142635	  0.99753499	  0.99869888  0.49309473
+3835	 -6.27223355	 -0.00080647	  0.00049431	  7.27142708	  0.99753563	  0.99869922  0.49309486
+3836	 -6.27223407	 -0.00080626	  0.00049418	  7.27142781	  0.99753627	  0.99869956  0.49309496
+3837	 -6.27223460	 -0.00080605	  0.00049405	  7.27142855	  0.99753692	  0.99869990  0.49309501
+3838	 -6.27223512	 -0.00080584	  0.00049392	  7.27142928	  0.99753756	  0.99870024  0.49309506
+3839	 -6.27223564	 -0.00080563	  0.00049379	  7.27143001	  0.99753820	  0.99870058  0.49309510
+3840	 -6.27223616	 -0.00080542	  0.00049366	  7.27143074	  0.99753884	  0.99870092  0.49309524
+3841	 -6.27223669	 -0.00080521	  0.00049354	  7.27143148	  0.99753948	  0.99870125  0.49309538
+3842	 -6.27223721	 -0.00080500	  0.00049341	  7.27143221	  0.99754012	  0.99870159  0.49309541
+3843	 -6.27223773	 -0.00080479	  0.00049328	  7.27143294	  0.99754076	  0.99870193  0.49309547
+3844	 -6.27223825	 -0.00080458	  0.00049315	  7.27143367	  0.99754140	  0.99870227  0.49309552
+3845	 -6.27223877	 -0.00080437	  0.00049302	  7.27143440	  0.99754204	  0.99870260  0.49309562
+3846	 -6.27223929	 -0.00080416	  0.00049289	  7.27143513	  0.99754268	  0.99870294  0.49309564
+3847	 -6.27223981	 -0.00080395	  0.00049277	  7.27143586	  0.99754332	  0.99870328  0.49309575
+3848	 -6.27224033	 -0.00080375	  0.00049264	  7.27143658	  0.99754395	  0.99870362  0.49309585
+3849	 -6.27224085	 -0.00080354	  0.00049251	  7.27143731	  0.99754459	  0.99870395  0.49309591
+3850	 -6.27224137	 -0.00080333	  0.00049238	  7.27143804	  0.99754523	  0.99870429  0.49309595
+3851	 -6.27224189	 -0.00080312	  0.00049225	  7.27143877	  0.99754587	  0.99870463  0.49309610
+3852	 -6.27224241	 -0.00080291	  0.00049213	  7.27143949	  0.99754650	  0.99870496  0.49309609
+3853	 -6.27224292	 -0.00080270	  0.00049200	  7.27144022	  0.99754714	  0.99870530  0.49309625
+3854	 -6.27224344	 -0.00080250	  0.00049187	  7.27144094	  0.99754778	  0.99870563  0.49309625
+3855	 -6.27224396	 -0.00080229	  0.00049174	  7.27144167	  0.99754841	  0.99870597  0.49309632
+3856	 -6.27224447	 -0.00080208	  0.00049162	  7.27144239	  0.99754905	  0.99870630  0.49309639
+3857	 -6.27224499	 -0.00080187	  0.00049149	  7.27144312	  0.99754968	  0.99870664  0.49309648
+3858	 -6.27224551	 -0.00080166	  0.00049136	  7.27144384	  0.99755032	  0.99870697  0.49309655
+3859	 -6.27224602	 -0.00080146	  0.00049123	  7.27144457	  0.99755095	  0.99870731  0.49309667
+3860	 -6.27224654	 -0.00080125	  0.00049111	  7.27144529	  0.99755159	  0.99870764  0.49309666
+3861	 -6.27224705	 -0.00080104	  0.00049098	  7.27144601	  0.99755222	  0.99870798  0.49309679
+3862	 -6.27224757	 -0.00080084	  0.00049085	  7.27144673	  0.99755286	  0.99870831  0.49309687
+3863	 -6.27224808	 -0.00080063	  0.00049072	  7.27144746	  0.99755349	  0.99870865  0.49309695
+3864	 -6.27224860	 -0.00080042	  0.00049060	  7.27144818	  0.99755412	  0.99870898  0.49309704
+3865	 -6.27224911	 -0.00080021	  0.00049047	  7.27144890	  0.99755476	  0.99870932  0.49309706
+3866	 -6.27224962	 -0.00080001	  0.00049034	  7.27144962	  0.99755539	  0.99870965  0.49309713
+3867	 -6.27225014	 -0.00079980	  0.00049022	  7.27145034	  0.99755602	  0.99870998  0.49309722
+3868	 -6.27225065	 -0.00079959	  0.00049009	  7.27145106	  0.99755665	  0.99871032  0.49309728
+3869	 -6.27225116	 -0.00079939	  0.00048996	  7.27145178	  0.99755728	  0.99871065  0.49309738
+3870	 -6.27225168	 -0.00079918	  0.00048984	  7.27145249	  0.99755791	  0.99871098  0.49309747
+3871	 -6.27225219	 -0.00079897	  0.00048971	  7.27145321	  0.99755854	  0.99871131  0.49309753
+3872	 -6.27225270	 -0.00079877	  0.00048958	  7.27145393	  0.99755918	  0.99871165  0.49309771
+3873	 -6.27225321	 -0.00079856	  0.00048946	  7.27145465	  0.99755981	  0.99871198  0.49309765
+3874	 -6.27225372	 -0.00079836	  0.00048933	  7.27145536	  0.99756044	  0.99871231  0.49309782
+3875	 -6.27225423	 -0.00079815	  0.00048921	  7.27145608	  0.99756106	  0.99871264  0.49309784
+3876	 -6.27225474	 -0.00079795	  0.00048908	  7.27145680	  0.99756169	  0.99871298  0.49309793
+3877	 -6.27225525	 -0.00079774	  0.00048895	  7.27145751	  0.99756232	  0.99871331  0.49309799
+3878	 -6.27225576	 -0.00079753	  0.00048883	  7.27145823	  0.99756295	  0.99871364  0.49309812
+3879	 -6.27225627	 -0.00079733	  0.00048870	  7.27145894	  0.99756358	  0.99871397  0.49309805
+3880	 -6.27225678	 -0.00079712	  0.00048857	  7.27145966	  0.99756421	  0.99871430  0.49309821
+3881	 -6.27225729	 -0.00079692	  0.00048845	  7.27146037	  0.99756483	  0.99871463  0.49309831
+3882	 -6.27225780	 -0.00079671	  0.00048832	  7.27146108	  0.99756546	  0.99871496  0.49309836
+3883	 -6.27225830	 -0.00079651	  0.00048820	  7.27146180	  0.99756609	  0.99871529  0.49309842
+3884	 -6.27225881	 -0.00079630	  0.00048807	  7.27146251	  0.99756671	  0.99871563  0.49309856
+3885	 -6.27225932	 -0.00079610	  0.00048795	  7.27146322	  0.99756734	  0.99871596  0.49309861
+3886	 -6.27225983	 -0.00079589	  0.00048782	  7.27146393	  0.99756797	  0.99871629  0.49309861
+3887	 -6.27226033	 -0.00079569	  0.00048769	  7.27146464	  0.99756859	  0.99871662  0.49309873
+3888	 -6.27226084	 -0.00079548	  0.00048757	  7.27146535	  0.99756922	  0.99871695  0.49309877
+3889	 -6.27226134	 -0.00079528	  0.00048744	  7.27146606	  0.99756984	  0.99871728  0.49309886
+3890	 -6.27226185	 -0.00079508	  0.00048732	  7.27146677	  0.99757047	  0.99871761  0.49309893
+3891	 -6.27226235	 -0.00079487	  0.00048719	  7.27146748	  0.99757109	  0.99871793  0.49309902
+3892	 -6.27226286	 -0.00079467	  0.00048707	  7.27146819	  0.99757172	  0.99871826  0.49309912
+3893	 -6.27226336	 -0.00079446	  0.00048694	  7.27146890	  0.99757234	  0.99871859  0.49309921
+3894	 -6.27226387	 -0.00079426	  0.00048682	  7.27146961	  0.99757296	  0.99871892  0.49309921
+3895	 -6.27226437	 -0.00079406	  0.00048669	  7.27147032	  0.99757359	  0.99871925  0.49309928
+3896	 -6.27226488	 -0.00079385	  0.00048657	  7.27147102	  0.99757421	  0.99871958  0.49309939
+3897	 -6.27226538	 -0.00079365	  0.00048644	  7.27147173	  0.99757483	  0.99871991  0.49309945
+3898	 -6.27226588	 -0.00079345	  0.00048632	  7.27147244	  0.99757545	  0.99872024  0.49309958
+3899	 -6.27226639	 -0.00079324	  0.00048619	  7.27147314	  0.99757607	  0.99872056  0.49309958
+3900	 -6.27226689	 -0.00079304	  0.00048607	  7.27147385	  0.99757670	  0.99872089  0.49309961
+3901	 -6.27226739	 -0.00079284	  0.00048594	  7.27147455	  0.99757732	  0.99872122  0.49309967
+3902	 -6.27226789	 -0.00079263	  0.00048582	  7.27147526	  0.99757794	  0.99872155  0.49309986
+3903	 -6.27226839	 -0.00079243	  0.00048570	  7.27147596	  0.99757856	  0.99872187  0.49309996
+3904	 -6.27226889	 -0.00079223	  0.00048557	  7.27147667	  0.99757918	  0.99872220  0.49309999
+3905	 -6.27226939	 -0.00079202	  0.00048545	  7.27147737	  0.99757980	  0.99872253  0.49310010
+3906	 -6.27226990	 -0.00079182	  0.00048532	  7.27147807	  0.99758042	  0.99872286  0.49310015
+3907	 -6.27227040	 -0.00079162	  0.00048520	  7.27147878	  0.99758104	  0.99872318  0.49310022
+3908	 -6.27227090	 -0.00079142	  0.00048507	  7.27147948	  0.99758166	  0.99872351  0.49310023
+3909	 -6.27227139	 -0.00079121	  0.00048495	  7.27148018	  0.99758227	  0.99872384  0.49310029
+3910	 -6.27227189	 -0.00079101	  0.00048483	  7.27148088	  0.99758289	  0.99872416  0.49310038
+3911	 -6.27227239	 -0.00079081	  0.00048470	  7.27148158	  0.99758351	  0.99872449  0.49310046
+3912	 -6.27227289	 -0.00079061	  0.00048458	  7.27148228	  0.99758413	  0.99872481  0.49310052
+3913	 -6.27227339	 -0.00079041	  0.00048445	  7.27148298	  0.99758474	  0.99872514  0.49310058
+3914	 -6.27227389	 -0.00079020	  0.00048433	  7.27148368	  0.99758536	  0.99872546  0.49310064
+3915	 -6.27227439	 -0.00079000	  0.00048421	  7.27148438	  0.99758598	  0.99872579  0.49310077
+3916	 -6.27227488	 -0.00078980	  0.00048408	  7.27148508	  0.99758659	  0.99872612  0.49310085
+3917	 -6.27227538	 -0.00078960	  0.00048396	  7.27148578	  0.99758721	  0.99872644  0.49310092
+3918	 -6.27227588	 -0.00078940	  0.00048384	  7.27148648	  0.99758783	  0.99872677  0.49310100
+3919	 -6.27227637	 -0.00078920	  0.00048371	  7.27148717	  0.99758844	  0.99872709  0.49310112
+3920	 -6.27227687	 -0.00078900	  0.00048359	  7.27148787	  0.99758906	  0.99872741  0.49310113
+3921	 -6.27227736	 -0.00078880	  0.00048347	  7.27148857	  0.99758967	  0.99872774  0.49310122
+3922	 -6.27227786	 -0.00078859	  0.00048334	  7.27148927	  0.99759029	  0.99872806  0.49310127
+3923	 -6.27227836	 -0.00078839	  0.00048322	  7.27148996	  0.99759090	  0.99872839  0.49310130
+3924	 -6.27227885	 -0.00078819	  0.00048310	  7.27149066	  0.99759151	  0.99872871  0.49310141
+3925	 -6.27227934	 -0.00078799	  0.00048297	  7.27149135	  0.99759213	  0.99872903  0.49310152
+3926	 -6.27227984	 -0.00078779	  0.00048285	  7.27149205	  0.99759274	  0.99872936  0.49310152
+3927	 -6.27228033	 -0.00078759	  0.00048273	  7.27149274	  0.99759335	  0.99872968  0.49310163
+3928	 -6.27228083	 -0.00078739	  0.00048260	  7.27149344	  0.99759397	  0.99873001  0.49310168
+3929	 -6.27228132	 -0.00078719	  0.00048248	  7.27149413	  0.99759458	  0.99873033  0.49310178
+3930	 -6.27228181	 -0.00078699	  0.00048236	  7.27149482	  0.99759519	  0.99873065  0.49310189
+3931	 -6.27228231	 -0.00078679	  0.00048224	  7.27149552	  0.99759580	  0.99873097  0.49310191
+3932	 -6.27228280	 -0.00078659	  0.00048211	  7.27149621	  0.99759641	  0.99873130  0.49310203
+3933	 -6.27228329	 -0.00078639	  0.00048199	  7.27149690	  0.99759702	  0.99873162  0.49310202
+3934	 -6.27228378	 -0.00078619	  0.00048187	  7.27149759	  0.99759763	  0.99873194  0.49310216
+3935	 -6.27228427	 -0.00078599	  0.00048175	  7.27149828	  0.99759825	  0.99873226  0.49310220
+3936	 -6.27228476	 -0.00078579	  0.00048162	  7.27149897	  0.99759886	  0.99873259  0.49310228
+3937	 -6.27228526	 -0.00078559	  0.00048150	  7.27149966	  0.99759946	  0.99873291  0.49310231
+3938	 -6.27228575	 -0.00078539	  0.00048138	  7.27150035	  0.99760007	  0.99873323  0.49310245
+3939	 -6.27228624	 -0.00078519	  0.00048126	  7.27150104	  0.99760068	  0.99873355  0.49310250
+3940	 -6.27228673	 -0.00078500	  0.00048113	  7.27150173	  0.99760129	  0.99873387  0.49310256
+3941	 -6.27228722	 -0.00078480	  0.00048101	  7.27150242	  0.99760190	  0.99873419  0.49310269
+3942	 -6.27228771	 -0.00078460	  0.00048089	  7.27150311	  0.99760251	  0.99873451  0.49310278
+3943	 -6.27228819	 -0.00078440	  0.00048077	  7.27150380	  0.99760312	  0.99873483  0.49310277
+3944	 -6.27228868	 -0.00078420	  0.00048065	  7.27150448	  0.99760372	  0.99873515  0.49310291
+3945	 -6.27228917	 -0.00078400	  0.00048052	  7.27150517	  0.99760433	  0.99873548  0.49310291
+3946	 -6.27228966	 -0.00078380	  0.00048040	  7.27150586	  0.99760494	  0.99873580  0.49310301
+3947	 -6.27229015	 -0.00078360	  0.00048028	  7.27150654	  0.99760555	  0.99873612  0.49310307
+3948	 -6.27229064	 -0.00078341	  0.00048016	  7.27150723	  0.99760615	  0.99873644  0.49310321
+3949	 -6.27229112	 -0.00078321	  0.00048004	  7.27150792	  0.99760676	  0.99873676  0.49310322
+3950	 -6.27229161	 -0.00078301	  0.00047992	  7.27150860	  0.99760736	  0.99873707  0.49310330
+3951	 -6.27229210	 -0.00078281	  0.00047979	  7.27150929	  0.99760797	  0.99873739  0.49310330
+3952	 -6.27229258	 -0.00078261	  0.00047967	  7.27150997	  0.99760857	  0.99873771  0.49310340
+3953	 -6.27229307	 -0.00078242	  0.00047955	  7.27151065	  0.99760918	  0.99873803  0.49310344
+3954	 -6.27229356	 -0.00078222	  0.00047943	  7.27151134	  0.99760978	  0.99873835  0.49310362
+3955	 -6.27229404	 -0.00078202	  0.00047931	  7.27151202	  0.99761039	  0.99873867  0.49310362
+3956	 -6.27229453	 -0.00078182	  0.00047919	  7.27151270	  0.99761099	  0.99873899  0.49310369
+3957	 -6.27229501	 -0.00078163	  0.00047907	  7.27151339	  0.99761160	  0.99873931  0.49310382
+3958	 -6.27229550	 -0.00078143	  0.00047895	  7.27151407	  0.99761220	  0.99873963  0.49310378
+3959	 -6.27229598	 -0.00078123	  0.00047882	  7.27151475	  0.99761280	  0.99873994  0.49310395
+3960	 -6.27229646	 -0.00078103	  0.00047870	  7.27151543	  0.99761340	  0.99874026  0.49310398
+3961	 -6.27229695	 -0.00078084	  0.00047858	  7.27151611	  0.99761401	  0.99874058  0.49310409
+3962	 -6.27229743	 -0.00078064	  0.00047846	  7.27151679	  0.99761461	  0.99874090  0.49310410
+3963	 -6.27229791	 -0.00078044	  0.00047834	  7.27151747	  0.99761521	  0.99874122  0.49310419
+3964	 -6.27229840	 -0.00078025	  0.00047822	  7.27151815	  0.99761581	  0.99874153  0.49310426
+3965	 -6.27229888	 -0.00078005	  0.00047810	  7.27151883	  0.99761641	  0.99874185  0.49310431
+3966	 -6.27229936	 -0.00077985	  0.00047798	  7.27151951	  0.99761701	  0.99874217  0.49310439
+3967	 -6.27229984	 -0.00077966	  0.00047786	  7.27152019	  0.99761762	  0.99874248  0.49310456
+3968	 -6.27230033	 -0.00077946	  0.00047774	  7.27152087	  0.99761822	  0.99874280  0.49310453
+3969	 -6.27230081	 -0.00077926	  0.00047762	  7.27152154	  0.99761882	  0.99874312  0.49310456
+3970	 -6.27230129	 -0.00077907	  0.00047750	  7.27152222	  0.99761942	  0.99874343  0.49310472
+3971	 -6.27230177	 -0.00077887	  0.00047738	  7.27152290	  0.99762001	  0.99874375  0.49310478
+3972	 -6.27230225	 -0.00077868	  0.00047726	  7.27152357	  0.99762061	  0.99874407  0.49310482
+3973	 -6.27230273	 -0.00077848	  0.00047714	  7.27152425	  0.99762121	  0.99874438  0.49310485
+3974	 -6.27230321	 -0.00077828	  0.00047702	  7.27152493	  0.99762181	  0.99874470  0.49310496
+3975	 -6.27230369	 -0.00077809	  0.00047690	  7.27152560	  0.99762241	  0.99874501  0.49310508
+3976	 -6.27230417	 -0.00077789	  0.00047678	  7.27152628	  0.99762301	  0.99874533  0.49310514
+3977	 -6.27230465	 -0.00077770	  0.00047666	  7.27152695	  0.99762360	  0.99874564  0.49310512
+3978	 -6.27230513	 -0.00077750	  0.00047654	  7.27152763	  0.99762420	  0.99874596  0.49310522
+3979	 -6.27230561	 -0.00077731	  0.00047642	  7.27152830	  0.99762480	  0.99874627  0.49310530
+3980	 -6.27230609	 -0.00077711	  0.00047630	  7.27152897	  0.99762540	  0.99874659  0.49310543
+3981	 -6.27230656	 -0.00077692	  0.00047618	  7.27152965	  0.99762599	  0.99874690  0.49310543
+3982	 -6.27230704	 -0.00077672	  0.00047606	  7.27153032	  0.99762659	  0.99874722  0.49310556
+3983	 -6.27230752	 -0.00077653	  0.00047594	  7.27153099	  0.99762718	  0.99874753  0.49310555
+3984	 -6.27230800	 -0.00077633	  0.00047582	  7.27153166	  0.99762778	  0.99874785  0.49310570
+3985	 -6.27230847	 -0.00077614	  0.00047570	  7.27153233	  0.99762837	  0.99874816  0.49310570
+3986	 -6.27230895	 -0.00077594	  0.00047558	  7.27153301	  0.99762897	  0.99874848  0.49310582
+3987	 -6.27230943	 -0.00077575	  0.00047546	  7.27153368	  0.99762956	  0.99874879  0.49310585
+3988	 -6.27230990	 -0.00077556	  0.00047534	  7.27153435	  0.99763016	  0.99874910  0.49310599
+3989	 -6.27231038	 -0.00077536	  0.00047522	  7.27153502	  0.99763075	  0.99874942  0.49310605
+3990	 -6.27231085	 -0.00077517	  0.00047510	  7.27153569	  0.99763135	  0.99874973  0.49310608
+3991	 -6.27231133	 -0.00077497	  0.00047498	  7.27153636	  0.99763194	  0.99875004  0.49310612
+3992	 -6.27231180	 -0.00077478	  0.00047487	  7.27153702	  0.99763253	  0.99875036  0.49310624
+3993	 -6.27231228	 -0.00077458	  0.00047475	  7.27153769	  0.99763312	  0.99875067  0.49310622
+3994	 -6.27231275	 -0.00077439	  0.00047463	  7.27153836	  0.99763372	  0.99875098  0.49310639
+3995	 -6.27231323	 -0.00077420	  0.00047451	  7.27153903	  0.99763431	  0.99875129  0.49310643
+3996	 -6.27231370	 -0.00077400	  0.00047439	  7.27153970	  0.99763490	  0.99875161  0.49310644
+3997	 -6.27231417	 -0.00077381	  0.00047427	  7.27154036	  0.99763549	  0.99875192  0.49310654
+3998	 -6.27231465	 -0.00077362	  0.00047415	  7.27154103	  0.99763608	  0.99875223  0.49310665
+3999	 -6.27231512	 -0.00077342	  0.00047403	  7.27154170	  0.99763668	  0.99875254  0.49310674
+4000	 -6.27231559	 -0.00077323	  0.00047392	  7.27154236	  0.99763727	  0.99875285  0.49310670
+4001	 -6.27231607	 -0.00077304	  0.00047380	  7.27154303	  0.99763786	  0.99875317  0.49310684
+4002	 -6.27231654	 -0.00077284	  0.00047368	  7.27154369	  0.99763845	  0.99875348  0.49310692
+4003	 -6.27231701	 -0.00077265	  0.00047356	  7.27154436	  0.99763904	  0.99875379  0.49310699
+4004	 -6.27231748	 -0.00077246	  0.00047344	  7.27154502	  0.99763963	  0.99875410  0.49310700
+4005	 -6.27231795	 -0.00077227	  0.00047332	  7.27154569	  0.99764021	  0.99875441  0.49310703
+4006	 -6.27231842	 -0.00077207	  0.00047321	  7.27154635	  0.99764080	  0.99875472  0.49310722
+4007	 -6.27231889	 -0.00077188	  0.00047309	  7.27154701	  0.99764139	  0.99875503  0.49310725
+4008	 -6.27231936	 -0.00077169	  0.00047297	  7.27154768	  0.99764198	  0.99875534  0.49310729
+4009	 -6.27231984	 -0.00077150	  0.00047285	  7.27154834	  0.99764257	  0.99875565  0.49310745
+4010	 -6.27232031	 -0.00077130	  0.00047273	  7.27154900	  0.99764316	  0.99875596  0.49310751
+4011	 -6.27232077	 -0.00077111	  0.00047262	  7.27154966	  0.99764374	  0.99875627  0.49310749
+4012	 -6.27232124	 -0.00077092	  0.00047250	  7.27155032	  0.99764433	  0.99875658  0.49310765
+4013	 -6.27232171	 -0.00077073	  0.00047238	  7.27155099	  0.99764492	  0.99875689  0.49310767
+4014	 -6.27232218	 -0.00077054	  0.00047226	  7.27155165	  0.99764550	  0.99875720  0.49310775
+4015	 -6.27232265	 -0.00077034	  0.00047215	  7.27155231	  0.99764609	  0.99875751  0.49310781
+4016	 -6.27232312	 -0.00077015	  0.00047203	  7.27155297	  0.99764668	  0.99875782  0.49310787
+4017	 -6.27232359	 -0.00076996	  0.00047191	  7.27155363	  0.99764726	  0.99875813  0.49310796
+4018	 -6.27232406	 -0.00076977	  0.00047179	  7.27155429	  0.99764785	  0.99875844  0.49310787
+4019	 -6.27232452	 -0.00076958	  0.00047168	  7.27155494	  0.99764843	  0.99875875  0.49310807
+4020	 -6.27232499	 -0.00076939	  0.00047156	  7.27155560	  0.99764902	  0.99875906  0.49310819
+4021	 -6.27232546	 -0.00076920	  0.00047144	  7.27155626	  0.99764960	  0.99875936  0.49310824
+4022	 -6.27232592	 -0.00076900	  0.00047132	  7.27155692	  0.99765019	  0.99875967  0.49310831
+4023	 -6.27232639	 -0.00076881	  0.00047121	  7.27155758	  0.99765077	  0.99875998  0.49310826
+4024	 -6.27232686	 -0.00076862	  0.00047109	  7.27155823	  0.99765135	  0.99876029  0.49310841
+4025	 -6.27232732	 -0.00076843	  0.00047097	  7.27155889	  0.99765194	  0.99876060  0.49310851
+4026	 -6.27232779	 -0.00076824	  0.00047086	  7.27155955	  0.99765252	  0.99876090  0.49310855
+4027	 -6.27232825	 -0.00076805	  0.00047074	  7.27156020	  0.99765310	  0.99876121  0.49310862
+4028	 -6.27232872	 -0.00076786	  0.00047062	  7.27156086	  0.99765369	  0.99876152  0.49310868
+4029	 -6.27232918	 -0.00076767	  0.00047050	  7.27156151	  0.99765427	  0.99876183  0.49310870
+4030	 -6.27232965	 -0.00076748	  0.00047039	  7.27156217	  0.99765485	  0.99876213  0.49310885
+4031	 -6.27233011	 -0.00076729	  0.00047027	  7.27156282	  0.99765543	  0.99876244  0.49310881
+4032	 -6.27233058	 -0.00076710	  0.00047015	  7.27156348	  0.99765601	  0.99876275  0.49310901
+4033	 -6.27233104	 -0.00076691	  0.00047004	  7.27156413	  0.99765660	  0.99876305  0.49310905
+4034	 -6.27233150	 -0.00076672	  0.00046992	  7.27156478	  0.99765718	  0.99876336  0.49310906
+4035	 -6.27233197	 -0.00076653	  0.00046981	  7.27156544	  0.99765776	  0.99876367  0.49310915
+4036	 -6.27233243	 -0.00076634	  0.00046969	  7.27156609	  0.99765834	  0.99876397  0.49310926
+4037	 -6.27233289	 -0.00076615	  0.00046957	  7.27156674	  0.99765892	  0.99876428  0.49310922
+4038	 -6.27233336	 -0.00076596	  0.00046946	  7.27156740	  0.99765950	  0.99876458  0.49310945
+4039	 -6.27233382	 -0.00076577	  0.00046934	  7.27156805	  0.99766008	  0.99876489  0.49310949
+4040	 -6.27233428	 -0.00076558	  0.00046922	  7.27156870	  0.99766065	  0.99876520  0.49310955
+4041	 -6.27233474	 -0.00076539	  0.00046911	  7.27156935	  0.99766123	  0.99876550  0.49310960
+4042	 -6.27233520	 -0.00076520	  0.00046899	  7.27157000	  0.99766181	  0.99876581  0.49310966
+4043	 -6.27233566	 -0.00076501	  0.00046888	  7.27157065	  0.99766239	  0.99876611  0.49310976
+4044	 -6.27233612	 -0.00076482	  0.00046876	  7.27157130	  0.99766297	  0.99876642  0.49310982
+4045	 -6.27233658	 -0.00076464	  0.00046864	  7.27157195	  0.99766355	  0.99876672  0.49310988
+4046	 -6.27233705	 -0.00076445	  0.00046853	  7.27157260	  0.99766412	  0.99876703  0.49310995
+4047	 -6.27233751	 -0.00076426	  0.00046841	  7.27157325	  0.99766470	  0.99876733  0.49310998
+4048	 -6.27233797	 -0.00076407	  0.00046830	  7.27157390	  0.99766528	  0.99876763  0.49311004
+4049	 -6.27233843	 -0.00076388	  0.00046818	  7.27157454	  0.99766585	  0.99876794  0.49311017
+4050	 -6.27233888	 -0.00076369	  0.00046806	  7.27157519	  0.99766643	  0.99876824  0.49311019
+4051	 -6.27233934	 -0.00076350	  0.00046795	  7.27157584	  0.99766701	  0.99876855  0.49311023
+4052	 -6.27233980	 -0.00076332	  0.00046783	  7.27157649	  0.99766758	  0.99876885  0.49311028
+4053	 -6.27234026	 -0.00076313	  0.00046772	  7.27157713	  0.99766816	  0.99876915  0.49311042
+4054	 -6.27234072	 -0.00076294	  0.00046760	  7.27157778	  0.99766873	  0.99876946  0.49311047
+4055	 -6.27234118	 -0.00076275	  0.00046749	  7.27157843	  0.99766931	  0.99876976  0.49311045
+4056	 -6.27234163	 -0.00076256	  0.00046737	  7.27157907	  0.99766988	  0.99877006  0.49311061
+4057	 -6.27234209	 -0.00076238	  0.00046726	  7.27157972	  0.99767046	  0.99877037  0.49311059
+4058	 -6.27234255	 -0.00076219	  0.00046714	  7.27158036	  0.99767103	  0.99877067  0.49311072
+4059	 -6.27234301	 -0.00076200	  0.00046703	  7.27158101	  0.99767160	  0.99877097  0.49311081
+4060	 -6.27234346	 -0.00076181	  0.00046691	  7.27158165	  0.99767218	  0.99877128  0.49311088
+4061	 -6.27234392	 -0.00076163	  0.00046680	  7.27158229	  0.99767275	  0.99877158  0.49311099
+4062	 -6.27234438	 -0.00076144	  0.00046668	  7.27158294	  0.99767332	  0.99877188  0.49311100
+4063	 -6.27234483	 -0.00076125	  0.00046657	  7.27158358	  0.99767389	  0.99877218  0.49311108
+4064	 -6.27234529	 -0.00076106	  0.00046645	  7.27158422	  0.99767447	  0.99877248  0.49311114
+4065	 -6.27234574	 -0.00076088	  0.00046634	  7.27158487	  0.99767504	  0.99877279  0.49311126
+4066	 -6.27234620	 -0.00076069	  0.00046622	  7.27158551	  0.99767561	  0.99877309  0.49311118
+4067	 -6.27234665	 -0.00076050	  0.00046611	  7.27158615	  0.99767618	  0.99877339  0.49311132
+4068	 -6.27234711	 -0.00076032	  0.00046599	  7.27158679	  0.99767675	  0.99877369  0.49311134
+4069	 -6.27234756	 -0.00076013	  0.00046588	  7.27158743	  0.99767732	  0.99877399  0.49311138
+4070	 -6.27234802	 -0.00075994	  0.00046576	  7.27158807	  0.99767789	  0.99877429  0.49311158
+4071	 -6.27234847	 -0.00075976	  0.00046565	  7.27158872	  0.99767846	  0.99877459  0.49311152
+4072	 -6.27234892	 -0.00075957	  0.00046554	  7.27158935	  0.99767903	  0.99877489  0.49311170
+4073	 -6.27234938	 -0.00075938	  0.00046542	  7.27158999	  0.99767960	  0.99877519  0.49311176
+4074	 -6.27234983	 -0.00075920	  0.00046531	  7.27159063	  0.99768017	  0.99877550  0.49311184
+4075	 -6.27235028	 -0.00075901	  0.00046519	  7.27159127	  0.99768074	  0.99877580  0.49311180
+4076	 -6.27235074	 -0.00075882	  0.00046508	  7.27159191	  0.99768131	  0.99877610  0.49311187
+4077	 -6.27235119	 -0.00075864	  0.00046496	  7.27159255	  0.99768188	  0.99877640  0.49311206
+4078	 -6.27235164	 -0.00075845	  0.00046485	  7.27159319	  0.99768245	  0.99877670  0.49311212
+4079	 -6.27235209	 -0.00075827	  0.00046474	  7.27159383	  0.99768302	  0.99877700  0.49311212
+4080	 -6.27235255	 -0.00075808	  0.00046462	  7.27159446	  0.99768358	  0.99877730  0.49311214
+4081	 -6.27235300	 -0.00075790	  0.00046451	  7.27159510	  0.99768415	  0.99877759  0.49311223
+4082	 -6.27235345	 -0.00075771	  0.00046440	  7.27159574	  0.99768472	  0.99877789  0.49311231
+4083	 -6.27235390	 -0.00075753	  0.00046428	  7.27159637	  0.99768529	  0.99877819  0.49311242
+4084	 -6.27235435	 -0.00075734	  0.00046417	  7.27159701	  0.99768585	  0.99877849  0.49311242
+4085	 -6.27235480	 -0.00075715	  0.00046405	  7.27159765	  0.99768642	  0.99877879  0.49311257
+4086	 -6.27235525	 -0.00075697	  0.00046394	  7.27159828	  0.99768699	  0.99877909  0.49311263
+4087	 -6.27235570	 -0.00075678	  0.00046383	  7.27159892	  0.99768755	  0.99877939  0.49311265
+4088	 -6.27235615	 -0.00075660	  0.00046371	  7.27159955	  0.99768812	  0.99877969  0.49311271
+4089	 -6.27235660	 -0.00075641	  0.00046360	  7.27160019	  0.99768868	  0.99877999  0.49311273
+4090	 -6.27235705	 -0.00075623	  0.00046349	  7.27160082	  0.99768925	  0.99878028  0.49311292
+4091	 -6.27235750	 -0.00075605	  0.00046337	  7.27160145	  0.99768981	  0.99878058  0.49311290
+4092	 -6.27235795	 -0.00075586	  0.00046326	  7.27160209	  0.99769038	  0.99878088  0.49311294
+4093	 -6.27235840	 -0.00075568	  0.00046315	  7.27160272	  0.99769094	  0.99878118  0.49311305
+4094	 -6.27235884	 -0.00075549	  0.00046303	  7.27160335	  0.99769150	  0.99878147  0.49311309
+4095	 -6.27235929	 -0.00075531	  0.00046292	  7.27160398	  0.99769207	  0.99878177  0.49311327
+4096	 -6.27235974	 -0.00075512	  0.00046281	  7.27160462	  0.99769263	  0.99878207  0.49311324
+4097	 -6.27236019	 -0.00075494	  0.00046269	  7.27160525	  0.99769319	  0.99878237  0.49311327
+4098	 -6.27236063	 -0.00075475	  0.00046258	  7.27160588	  0.99769376	  0.99878266  0.49311333
+4099	 -6.27236108	 -0.00075457	  0.00046247	  7.27160651	  0.99769432	  0.99878296  0.49311348
+4100	 -6.27236153	 -0.00075439	  0.00046236	  7.27160714	  0.99769488	  0.99878326  0.49311361
+4101	 -6.27236197	 -0.00075420	  0.00046224	  7.27160777	  0.99769544	  0.99878355  0.49311357
+4102	 -6.27236242	 -0.00075402	  0.00046213	  7.27160840	  0.99769601	  0.99878385  0.49311362
+4103	 -6.27236287	 -0.00075384	  0.00046202	  7.27160903	  0.99769657	  0.99878415  0.49311367
+4104	 -6.27236331	 -0.00075365	  0.00046191	  7.27160966	  0.99769713	  0.99878444  0.49311366
+4105	 -6.27236376	 -0.00075347	  0.00046179	  7.27161029	  0.99769769	  0.99878474  0.49311384
+4106	 -6.27236420	 -0.00075329	  0.00046168	  7.27161092	  0.99769825	  0.99878503  0.49311393
+4107	 -6.27236465	 -0.00075310	  0.00046157	  7.27161155	  0.99769881	  0.99878533  0.49311405
+4108	 -6.27236509	 -0.00075292	  0.00046146	  7.27161217	  0.99769937	  0.99878563  0.49311410
+4109	 -6.27236554	 -0.00075274	  0.00046134	  7.27161280	  0.99769993	  0.99878592  0.49311401
+4110	 -6.27236598	 -0.00075255	  0.00046123	  7.27161343	  0.99770049	  0.99878622  0.49311424
+4111	 -6.27236643	 -0.00075237	  0.00046112	  7.27161406	  0.99770105	  0.99878651  0.49311425
+4112	 -6.27236687	 -0.00075219	  0.00046101	  7.27161468	  0.99770161	  0.99878681  0.49311423
+4113	 -6.27236731	 -0.00075200	  0.00046089	  7.27161531	  0.99770217	  0.99878710  0.49311442
+4114	 -6.27236776	 -0.00075182	  0.00046078	  7.27161594	  0.99770272	  0.99878740  0.49311431
+4115	 -6.27236820	 -0.00075164	  0.00046067	  7.27161656	  0.99770328	  0.99878769  0.49311449
+4116	 -6.27236864	 -0.00075146	  0.00046056	  7.27161719	  0.99770384	  0.99878798  0.49311451
+4117	 -6.27236909	 -0.00075127	  0.00046045	  7.27161781	  0.99770440	  0.99878828  0.49311462
+4118	 -6.27236953	 -0.00075109	  0.00046034	  7.27161844	  0.99770496	  0.99878857  0.49311465
+4119	 -6.27236997	 -0.00075091	  0.00046022	  7.27161906	  0.99770551	  0.99878887  0.49311479
+4120	 -6.27237041	 -0.00075073	  0.00046011	  7.27161968	  0.99770607	  0.99878916  0.49311488
+4121	 -6.27237085	 -0.00075055	  0.00046000	  7.27162031	  0.99770663	  0.99878945  0.49311489
+4122	 -6.27237130	 -0.00075036	  0.00045989	  7.27162093	  0.99770718	  0.99878975  0.49311496
+4123	 -6.27237174	 -0.00075018	  0.00045978	  7.27162155	  0.99770774	  0.99879004  0.49311494
+4124	 -6.27237218	 -0.00075000	  0.00045967	  7.27162218	  0.99770829	  0.99879033  0.49311510
+4125	 -6.27237262	 -0.00074982	  0.00045955	  7.27162280	  0.99770885	  0.99879063  0.49311504
+4126	 -6.27237306	 -0.00074964	  0.00045944	  7.27162342	  0.99770941	  0.99879092  0.49311523
+4127	 -6.27237350	 -0.00074946	  0.00045933	  7.27162404	  0.99770996	  0.99879121  0.49311526
+4128	 -6.27237394	 -0.00074927	  0.00045922	  7.27162466	  0.99771051	  0.99879151  0.49311531
+4129	 -6.27237438	 -0.00074909	  0.00045911	  7.27162529	  0.99771107	  0.99879180  0.49311549
+4130	 -6.27237482	 -0.00074891	  0.00045900	  7.27162591	  0.99771162	  0.99879209  0.49311546
+4131	 -6.27237526	 -0.00074873	  0.00045889	  7.27162653	  0.99771218	  0.99879238  0.49311554
+4132	 -6.27237570	 -0.00074855	  0.00045878	  7.27162715	  0.99771273	  0.99879268  0.49311557
+4133	 -6.27237614	 -0.00074837	  0.00045866	  7.27162777	  0.99771328	  0.99879297  0.49311573
+4134	 -6.27237657	 -0.00074819	  0.00045855	  7.27162839	  0.99771384	  0.99879326  0.49311571
+4135	 -6.27237701	 -0.00074801	  0.00045844	  7.27162901	  0.99771439	  0.99879355  0.49311580
+4136	 -6.27237745	 -0.00074783	  0.00045833	  7.27162962	  0.99771494	  0.99879384  0.49311585
+4137	 -6.27237789	 -0.00074765	  0.00045822	  7.27163024	  0.99771549	  0.99879413  0.49311592
+4138	 -6.27237833	 -0.00074747	  0.00045811	  7.27163086	  0.99771605	  0.99879442  0.49311607
+4139	 -6.27237876	 -0.00074728	  0.00045800	  7.27163148	  0.99771660	  0.99879472  0.49311608
+4140	 -6.27237920	 -0.00074710	  0.00045789	  7.27163210	  0.99771715	  0.99879501  0.49311612
+4141	 -6.27237964	 -0.00074692	  0.00045778	  7.27163271	  0.99771770	  0.99879530  0.49311622
+4142	 -6.27238007	 -0.00074674	  0.00045767	  7.27163333	  0.99771825	  0.99879559  0.49311623
+4143	 -6.27238051	 -0.00074656	  0.00045756	  7.27163395	  0.99771880	  0.99879588  0.49311629
+4144	 -6.27238095	 -0.00074638	  0.00045745	  7.27163456	  0.99771935	  0.99879617  0.49311629
+4145	 -6.27238138	 -0.00074620	  0.00045734	  7.27163518	  0.99771990	  0.99879646  0.49311644
+4146	 -6.27238182	 -0.00074602	  0.00045723	  7.27163580	  0.99772045	  0.99879675  0.49311641
+4147	 -6.27238225	 -0.00074584	  0.00045712	  7.27163641	  0.99772100	  0.99879704  0.49311653
+4148	 -6.27238269	 -0.00074566	  0.00045701	  7.27163703	  0.99772155	  0.99879733  0.49311671
+4149	 -6.27238312	 -0.00074548	  0.00045690	  7.27163764	  0.99772210	  0.99879762  0.49311673
+4150	 -6.27238356	 -0.00074531	  0.00045679	  7.27163825	  0.99772265	  0.99879791  0.49311683
+4151	 -6.27238399	 -0.00074513	  0.00045668	  7.27163887	  0.99772320	  0.99879820  0.49311676
+4152	 -6.27238443	 -0.00074495	  0.00045657	  7.27163948	  0.99772375	  0.99879849  0.49311684
+4153	 -6.27238486	 -0.00074477	  0.00045646	  7.27164010	  0.99772429	  0.99879878  0.49311690
+4154	 -6.27238530	 -0.00074459	  0.00045635	  7.27164071	  0.99772484	  0.99879907  0.49311703
+4155	 -6.27238573	 -0.00074441	  0.00045624	  7.27164132	  0.99772539	  0.99879936  0.49311710
+4156	 -6.27238616	 -0.00074423	  0.00045613	  7.27164193	  0.99772594	  0.99879964  0.49311708
+4157	 -6.27238660	 -0.00074405	  0.00045602	  7.27164255	  0.99772648	  0.99879993  0.49311725
+4158	 -6.27238703	 -0.00074387	  0.00045591	  7.27164316	  0.99772703	  0.99880022  0.49311732
+4159	 -6.27238746	 -0.00074369	  0.00045580	  7.27164377	  0.99772758	  0.99880051  0.49311738
+4160	 -6.27238790	 -0.00074352	  0.00045569	  7.27164438	  0.99772812	  0.99880080  0.49311739
+4161	 -6.27238833	 -0.00074334	  0.00045558	  7.27164499	  0.99772867	  0.99880109  0.49311746
+4162	 -6.27238876	 -0.00074316	  0.00045547	  7.27164560	  0.99772921	  0.99880137  0.49311752
+4163	 -6.27238919	 -0.00074298	  0.00045536	  7.27164621	  0.99772976	  0.99880166  0.49311758
+4164	 -6.27238962	 -0.00074280	  0.00045525	  7.27164682	  0.99773030	  0.99880195  0.49311766
+4165	 -6.27239006	 -0.00074262	  0.00045514	  7.27164743	  0.99773085	  0.99880224  0.49311772
+4166	 -6.27239049	 -0.00074245	  0.00045503	  7.27164804	  0.99773139	  0.99880252  0.49311777
+4167	 -6.27239092	 -0.00074227	  0.00045492	  7.27164865	  0.99773194	  0.99880281  0.49311785
+4168	 -6.27239135	 -0.00074209	  0.00045481	  7.27164926	  0.99773248	  0.99880310  0.49311791
+4169	 -6.27239178	 -0.00074191	  0.00045470	  7.27164987	  0.99773303	  0.99880339  0.49311797
+4170	 -6.27239221	 -0.00074173	  0.00045459	  7.27165048	  0.99773357	  0.99880367  0.49311806
+4171	 -6.27239264	 -0.00074156	  0.00045449	  7.27165108	  0.99773411	  0.99880396  0.49311809
+4172	 -6.27239307	 -0.00074138	  0.00045438	  7.27165169	  0.99773466	  0.99880425  0.49311816
+4173	 -6.27239350	 -0.00074120	  0.00045427	  7.27165230	  0.99773520	  0.99880453  0.49311824
+4174	 -6.27239393	 -0.00074102	  0.00045416	  7.27165291	  0.99773574	  0.99880482  0.49311829
+4175	 -6.27239436	 -0.00074085	  0.00045405	  7.27165351	  0.99773628	  0.99880510  0.49311835
+4176	 -6.27239479	 -0.00074067	  0.00045394	  7.27165412	  0.99773683	  0.99880539  0.49311839
+4177	 -6.27239522	 -0.00074049	  0.00045383	  7.27165472	  0.99773737	  0.99880568  0.49311849
+4178	 -6.27239564	 -0.00074031	  0.00045372	  7.27165533	  0.99773791	  0.99880596  0.49311853
+4179	 -6.27239607	 -0.00074014	  0.00045362	  7.27165593	  0.99773845	  0.99880625  0.49311862
+4180	 -6.27239650	 -0.00073996	  0.00045351	  7.27165654	  0.99773899	  0.99880653  0.49311867
+4181	 -6.27239693	 -0.00073978	  0.00045340	  7.27165714	  0.99773953	  0.99880682  0.49311873
+4182	 -6.27239736	 -0.00073961	  0.00045329	  7.27165775	  0.99774007	  0.99880710  0.49311878
+4183	 -6.27239778	 -0.00073943	  0.00045318	  7.27165835	  0.99774061	  0.99880739  0.49311885
+4184	 -6.27239821	 -0.00073925	  0.00045307	  7.27165896	  0.99774115	  0.99880767  0.49311891
+4185	 -6.27239864	 -0.00073908	  0.00045296	  7.27165956	  0.99774169	  0.99880796  0.49311897
+4186	 -6.27239906	 -0.00073890	  0.00045286	  7.27166016	  0.99774223	  0.99880824  0.49311905
+4187	 -6.27239949	 -0.00073872	  0.00045275	  7.27166077	  0.99774277	  0.99880853  0.49311912
+4188	 -6.27239992	 -0.00073855	  0.00045264	  7.27166137	  0.99774331	  0.99880881  0.49311918
+4189	 -6.27240034	 -0.00073837	  0.00045253	  7.27166197	  0.99774385	  0.99880910  0.49311924
+4190	 -6.27240077	 -0.00073820	  0.00045242	  7.27166257	  0.99774439	  0.99880938  0.49311929
+4191	 -6.27240119	 -0.00073802	  0.00045232	  7.27166317	  0.99774492	  0.99880966  0.49311935
+4192	 -6.27240162	 -0.00073784	  0.00045221	  7.27166378	  0.99774546	  0.99880995  0.49311941
+4193	 -6.27240205	 -0.00073767	  0.00045210	  7.27166438	  0.99774600	  0.99881023  0.49311949
+4194	 -6.27240247	 -0.00073749	  0.00045199	  7.27166498	  0.99774654	  0.99881051  0.49311956
+4195	 -6.27240289	 -0.00073732	  0.00045188	  7.27166558	  0.99774707	  0.99881080  0.49311961
+4196	 -6.27240332	 -0.00073714	  0.00045178	  7.27166618	  0.99774761	  0.99881108  0.49311968
+4197	 -6.27240374	 -0.00073697	  0.00045167	  7.27166678	  0.99774815	  0.99881136  0.49311975
+4198	 -6.27240417	 -0.00073679	  0.00045156	  7.27166738	  0.99774868	  0.99881165  0.49311980
+4199	 -6.27240459	 -0.00073662	  0.00045145	  7.27166798	  0.99774922	  0.99881193  0.49311987
+4200	 -6.27240502	 -0.00073644	  0.00045135	  7.27166858	  0.99774976	  0.99881221  0.49311992
+4201	 -6.27240544	 -0.00073626	  0.00045124	  7.27166917	  0.99775029	  0.99881250  0.49312000
+4202	 -6.27240586	 -0.00073609	  0.00045113	  7.27166977	  0.99775083	  0.99881278  0.49312006
+4203	 -6.27240628	 -0.00073591	  0.00045102	  7.27167037	  0.99775136	  0.99881306  0.49312011
+4204	 -6.27240671	 -0.00073574	  0.00045092	  7.27167097	  0.99775190	  0.99881334  0.49312017
+4205	 -6.27240713	 -0.00073556	  0.00045081	  7.27167157	  0.99775243	  0.99881362  0.49312022
+4206	 -6.27240755	 -0.00073539	  0.00045070	  7.27167216	  0.99775297	  0.99881391  0.49312031
+4207	 -6.27240797	 -0.00073522	  0.00045060	  7.27167276	  0.99775350	  0.99881419  0.49312033
+4208	 -6.27240840	 -0.00073504	  0.00045049	  7.27167336	  0.99775403	  0.99881447  0.49312043
+4209	 -6.27240882	 -0.00073487	  0.00045038	  7.27167395	  0.99775457	  0.99881475  0.49312049
+4210	 -6.27240924	 -0.00073469	  0.00045027	  7.27167455	  0.99775510	  0.99881503  0.49312054
+4211	 -6.27240966	 -0.00073452	  0.00045017	  7.27167514	  0.99775563	  0.99881531  0.49312061
+4212	 -6.27241008	 -0.00073434	  0.00045006	  7.27167574	  0.99775617	  0.99881560  0.49312068
+4213	 -6.27241050	 -0.00073417	  0.00044995	  7.27167633	  0.99775670	  0.99881588  0.49312074
+4214	 -6.27241092	 -0.00073400	  0.00044985	  7.27167693	  0.99775723	  0.99881616  0.49312080
+4215	 -6.27241134	 -0.00073382	  0.00044974	  7.27167752	  0.99775776	  0.99881644  0.49312087
+4216	 -6.27241176	 -0.00073365	  0.00044963	  7.27167812	  0.99775829	  0.99881672  0.49312093
+4217	 -6.27241218	 -0.00073347	  0.00044953	  7.27167871	  0.99775883	  0.99881700  0.49312099
+4218	 -6.27241260	 -0.00073330	  0.00044942	  7.27167930	  0.99775936	  0.99881728  0.49312106
+4219	 -6.27241302	 -0.00073313	  0.00044931	  7.27167990	  0.99775989	  0.99881756  0.49312110
+4220	 -6.27241344	 -0.00073295	  0.00044921	  7.27168049	  0.99776042	  0.99881784  0.49312117
+4221	 -6.27241386	 -0.00073278	  0.00044910	  7.27168108	  0.99776095	  0.99881812  0.49312124
+4222	 -6.27241428	 -0.00073261	  0.00044899	  7.27168167	  0.99776148	  0.99881840  0.49312129
+4223	 -6.27241470	 -0.00073243	  0.00044889	  7.27168227	  0.99776201	  0.99881868  0.49312137
+4224	 -6.27241512	 -0.00073226	  0.00044878	  7.27168286	  0.99776254	  0.99881896  0.49312141
+4225	 -6.27241554	 -0.00073209	  0.00044868	  7.27168345	  0.99776307	  0.99881924  0.49312147
+4226	 -6.27241595	 -0.00073191	  0.00044857	  7.27168404	  0.99776360	  0.99881952  0.49312156
+4227	 -6.27241637	 -0.00073174	  0.00044846	  7.27168463	  0.99776413	  0.99881980  0.49312161
+4228	 -6.27241679	 -0.00073157	  0.00044836	  7.27168522	  0.99776466	  0.99882008  0.49312166
+4229	 -6.27241721	 -0.00073139	  0.00044825	  7.27168581	  0.99776518	  0.99882035  0.49312172
+4230	 -6.27241762	 -0.00073122	  0.00044815	  7.27168640	  0.99776571	  0.99882063  0.49312178
+4231	 -6.27241804	 -0.00073105	  0.00044804	  7.27168699	  0.99776624	  0.99882091  0.49312185
+4232	 -6.27241846	 -0.00073088	  0.00044793	  7.27168758	  0.99776677	  0.99882119  0.49312193
+4233	 -6.27241887	 -0.00073070	  0.00044783	  7.27168817	  0.99776730	  0.99882147  0.49312197
+4234	 -6.27241929	 -0.00073053	  0.00044772	  7.27168876	  0.99776782	  0.99882175  0.49312203
+4235	 -6.27241971	 -0.00073036	  0.00044762	  7.27168935	  0.99776835	  0.99882202  0.49312211
+4236	 -6.27242012	 -0.00073019	  0.00044751	  7.27168994	  0.99776888	  0.99882230  0.49312215
+4237	 -6.27242054	 -0.00073001	  0.00044741	  7.27169052	  0.99776940	  0.99882258  0.49312222
+4238	 -6.27242095	 -0.00072984	  0.00044730	  7.27169111	  0.99776993	  0.99882286  0.49312230
+4239	 -6.27242137	 -0.00072967	  0.00044719	  7.27169170	  0.99777045	  0.99882314  0.49312233
+4240	 -6.27242178	 -0.00072950	  0.00044709	  7.27169229	  0.99777098	  0.99882341  0.49312241
+4241	 -6.27242220	 -0.00072933	  0.00044698	  7.27169287	  0.99777151	  0.99882369  0.49312246
+4242	 -6.27242261	 -0.00072915	  0.00044688	  7.27169346	  0.99777203	  0.99882397  0.49312253
+4243	 -6.27242303	 -0.00072898	  0.00044677	  7.27169405	  0.99777256	  0.99882424  0.49312260
+4244	 -6.27242344	 -0.00072881	  0.00044667	  7.27169463	  0.99777308	  0.99882452  0.49312265
+4245	 -6.27242386	 -0.00072864	  0.00044656	  7.27169522	  0.99777361	  0.99882480  0.49312272
+4246	 -6.27242427	 -0.00072847	  0.00044646	  7.27169580	  0.99777413	  0.99882508  0.49312276
+4247	 -6.27242468	 -0.00072830	  0.00044635	  7.27169639	  0.99777465	  0.99882535  0.49312285
+4248	 -6.27242510	 -0.00072813	  0.00044625	  7.27169697	  0.99777518	  0.99882563  0.49312291
+4249	 -6.27242551	 -0.00072795	  0.00044614	  7.27169756	  0.99777570	  0.99882590  0.49312295
+4250	 -6.27242592	 -0.00072778	  0.00044604	  7.27169814	  0.99777622	  0.99882618  0.49312303
+4251	 -6.27242634	 -0.00072761	  0.00044593	  7.27169872	  0.99777675	  0.99882646  0.49312307
+4252	 -6.27242675	 -0.00072744	  0.00044583	  7.27169931	  0.99777727	  0.99882673  0.49312312
+4253	 -6.27242716	 -0.00072727	  0.00044572	  7.27169989	  0.99777779	  0.99882701  0.49312319
+4254	 -6.27242757	 -0.00072710	  0.00044562	  7.27170047	  0.99777831	  0.99882728  0.49312326
+4255	 -6.27242798	 -0.00072693	  0.00044551	  7.27170106	  0.99777884	  0.99882756  0.49312335
+4256	 -6.27242840	 -0.00072676	  0.00044541	  7.27170164	  0.99777936	  0.99882783  0.49312338
+4257	 -6.27242881	 -0.00072659	  0.00044530	  7.27170222	  0.99777988	  0.99882811  0.49312345
+4258	 -6.27242922	 -0.00072642	  0.00044520	  7.27170280	  0.99778040	  0.99882838  0.49312349
+4259	 -6.27242963	 -0.00072625	  0.00044509	  7.27170338	  0.99778092	  0.99882866  0.49312358
+4260	 -6.27243004	 -0.00072608	  0.00044499	  7.27170397	  0.99778144	  0.99882893  0.49312364
+4261	 -6.27243045	 -0.00072591	  0.00044488	  7.27170455	  0.99778196	  0.99882921  0.49312368
+4262	 -6.27243086	 -0.00072574	  0.00044478	  7.27170513	  0.99778248	  0.99882948  0.49312376
+4263	 -6.27243127	 -0.00072557	  0.00044468	  7.27170571	  0.99778300	  0.99882976  0.49312381
+4264	 -6.27243168	 -0.00072540	  0.00044457	  7.27170629	  0.99778352	  0.99883003  0.49312388
+4265	 -6.27243209	 -0.00072523	  0.00044447	  7.27170687	  0.99778404	  0.99883031  0.49312394
+4266	 -6.27243250	 -0.00072506	  0.00044436	  7.27170745	  0.99778456	  0.99883058  0.49312397
+4267	 -6.27243291	 -0.00072489	  0.00044426	  7.27170803	  0.99778508	  0.99883086  0.49312405
+4268	 -6.27243332	 -0.00072472	  0.00044416	  7.27170860	  0.99778560	  0.99883113  0.49312410
+4269	 -6.27243373	 -0.00072455	  0.00044405	  7.27170918	  0.99778612	  0.99883140  0.49312419
+4270	 -6.27243414	 -0.00072438	  0.00044395	  7.27170976	  0.99778664	  0.99883168  0.49312424
+4271	 -6.27243455	 -0.00072421	  0.00044384	  7.27171034	  0.99778716	  0.99883195  0.49312429
+4272	 -6.27243496	 -0.00072404	  0.00044374	  7.27171092	  0.99778767	  0.99883222  0.49312436
+4273	 -6.27243536	 -0.00072387	  0.00044364	  7.27171150	  0.99778819	  0.99883250  0.49312441
+4274	 -6.27243577	 -0.00072370	  0.00044353	  7.27171207	  0.99778871	  0.99883277  0.49312447
+4275	 -6.27243618	 -0.00072353	  0.00044343	  7.27171265	  0.99778923	  0.99883304  0.49312454
+4276	 -6.27243659	 -0.00072336	  0.00044332	  7.27171323	  0.99778974	  0.99883331  0.49312460
+4277	 -6.27243700	 -0.00072319	  0.00044322	  7.27171380	  0.99779026	  0.99883359  0.49312464
+4278	 -6.27243740	 -0.00072302	  0.00044312	  7.27171438	  0.99779078	  0.99883386  0.49312471
+4279	 -6.27243781	 -0.00072285	  0.00044301	  7.27171495	  0.99779129	  0.99883413  0.49312476
+4280	 -6.27243822	 -0.00072269	  0.00044291	  7.27171553	  0.99779181	  0.99883440  0.49312483
+4281	 -6.27243862	 -0.00072252	  0.00044281	  7.27171611	  0.99779232	  0.99883468  0.49312489
+4282	 -6.27243903	 -0.00072235	  0.00044270	  7.27171668	  0.99779284	  0.99883495  0.49312495
+4283	 -6.27243944	 -0.00072218	  0.00044260	  7.27171726	  0.99779336	  0.99883522  0.49312500
+4284	 -6.27243984	 -0.00072201	  0.00044250	  7.27171783	  0.99779387	  0.99883549  0.49312508
+4285	 -6.27244025	 -0.00072184	  0.00044239	  7.27171840	  0.99779438	  0.99883576  0.49312514
+4286	 -6.27244065	 -0.00072167	  0.00044229	  7.27171898	  0.99779490	  0.99883604  0.49312518
+4287	 -6.27244106	 -0.00072151	  0.00044219	  7.27171955	  0.99779541	  0.99883631  0.49312525
+4288	 -6.27244146	 -0.00072134	  0.00044208	  7.27172012	  0.99779593	  0.99883658  0.49312531
+4289	 -6.27244187	 -0.00072117	  0.00044198	  7.27172070	  0.99779644	  0.99883685  0.49312537
+4290	 -6.27244227	 -0.00072100	  0.00044188	  7.27172127	  0.99779696	  0.99883712  0.49312544
+4291	 -6.27244268	 -0.00072083	  0.00044177	  7.27172184	  0.99779747	  0.99883739  0.49312550
+4292	 -6.27244308	 -0.00072067	  0.00044167	  7.27172242	  0.99779798	  0.99883766  0.49312555
+4293	 -6.27244349	 -0.00072050	  0.00044157	  7.27172299	  0.99779849	  0.99883793  0.49312563
+4294	 -6.27244389	 -0.00072033	  0.00044147	  7.27172356	  0.99779901	  0.99883820  0.49312567
+4295	 -6.27244429	 -0.00072016	  0.00044136	  7.27172413	  0.99779952	  0.99883847  0.49312573
+4296	 -6.27244470	 -0.00072000	  0.00044126	  7.27172470	  0.99780003	  0.99883874  0.49312578
+4297	 -6.27244510	 -0.00071983	  0.00044116	  7.27172527	  0.99780054	  0.99883901  0.49312585
+4298	 -6.27244550	 -0.00071966	  0.00044105	  7.27172584	  0.99780105	  0.99883928  0.49312592
+4299	 -6.27244591	 -0.00071949	  0.00044095	  7.27172641	  0.99780157	  0.99883955  0.49312598
+4300	 -6.27244631	 -0.00071933	  0.00044085	  7.27172698	  0.99780208	  0.99883982  0.49312604
+4301	 -6.27244671	 -0.00071916	  0.00044075	  7.27172755	  0.99780259	  0.99884009  0.49312608
+4302	 -6.27244712	 -0.00071899	  0.00044064	  7.27172812	  0.99780310	  0.99884036  0.49312614
+4303	 -6.27244752	 -0.00071883	  0.00044054	  7.27172869	  0.99780361	  0.99884063  0.49312622
+4304	 -6.27244792	 -0.00071866	  0.00044044	  7.27172926	  0.99780412	  0.99884090  0.49312626
+4305	 -6.27244832	 -0.00071849	  0.00044034	  7.27172983	  0.99780463	  0.99884117  0.49312632
+4306	 -6.27244872	 -0.00071833	  0.00044024	  7.27173040	  0.99780514	  0.99884144  0.49312638
+4307	 -6.27244912	 -0.00071816	  0.00044013	  7.27173097	  0.99780565	  0.99884171  0.49312645
+4308	 -6.27244953	 -0.00071799	  0.00044003	  7.27173153	  0.99780616	  0.99884198  0.49312649
+4309	 -6.27244993	 -0.00071783	  0.00043993	  7.27173210	  0.99780667	  0.99884225  0.49312657
+4310	 -6.27245033	 -0.00071766	  0.00043983	  7.27173267	  0.99780718	  0.99884251  0.49312664
+4311	 -6.27245073	 -0.00071749	  0.00043972	  7.27173323	  0.99780768	  0.99884278  0.49312669
+4312	 -6.27245113	 -0.00071733	  0.00043962	  7.27173380	  0.99780819	  0.99884305  0.49312674
+4313	 -6.27245153	 -0.00071716	  0.00043952	  7.27173437	  0.99780870	  0.99884332  0.49312680
+4314	 -6.27245193	 -0.00071699	  0.00043942	  7.27173493	  0.99780921	  0.99884359  0.49312685
+4315	 -6.27245233	 -0.00071683	  0.00043932	  7.27173550	  0.99780972	  0.99884385  0.49312691
+4316	 -6.27245273	 -0.00071666	  0.00043922	  7.27173607	  0.99781022	  0.99884412  0.49312701
+4317	 -6.27245313	 -0.00071650	  0.00043911	  7.27173663	  0.99781073	  0.99884439  0.49312703
+4318	 -6.27245353	 -0.00071633	  0.00043901	  7.27173720	  0.99781124	  0.99884466  0.49312710
+4319	 -6.27245393	 -0.00071617	  0.00043891	  7.27173776	  0.99781174	  0.99884492  0.49312716
+4320	 -6.27245432	 -0.00071600	  0.00043881	  7.27173833	  0.99781225	  0.99884519  0.49312722
+4321	 -6.27245472	 -0.00071583	  0.00043871	  7.27173889	  0.99781276	  0.99884546  0.49312728
+4322	 -6.27245512	 -0.00071567	  0.00043861	  7.27173945	  0.99781326	  0.99884573  0.49312736
+4323	 -6.27245552	 -0.00071550	  0.00043850	  7.27174002	  0.99781377	  0.99884599  0.49312741
+4324	 -6.27245592	 -0.00071534	  0.00043840	  7.27174058	  0.99781427	  0.99884626  0.49312745
+4325	 -6.27245632	 -0.00071517	  0.00043830	  7.27174114	  0.99781478	  0.99884653  0.49312752
+4326	 -6.27245671	 -0.00071501	  0.00043820	  7.27174171	  0.99781528	  0.99884679  0.49312756
+4327	 -6.27245711	 -0.00071484	  0.00043810	  7.27174227	  0.99781579	  0.99884706  0.49312763
+4328	 -6.27245751	 -0.00071468	  0.00043800	  7.27174283	  0.99781629	  0.99884733  0.49312770
+4329	 -6.27245791	 -0.00071451	  0.00043790	  7.27174339	  0.99781680	  0.99884759  0.49312773
+4330	 -6.27245830	 -0.00071435	  0.00043779	  7.27174396	  0.99781730	  0.99884786  0.49312781
+4331	 -6.27245870	 -0.00071418	  0.00043769	  7.27174452	  0.99781781	  0.99884812  0.49312788
+4332	 -6.27245910	 -0.00071402	  0.00043759	  7.27174508	  0.99781831	  0.99884839  0.49312794
+4333	 -6.27245949	 -0.00071385	  0.00043749	  7.27174564	  0.99781881	  0.99884866  0.49312798
+4334	 -6.27245989	 -0.00071369	  0.00043739	  7.27174620	  0.99781932	  0.99884892  0.49312802
+4335	 -6.27246028	 -0.00071352	  0.00043729	  7.27174676	  0.99781982	  0.99884919  0.49312810
+4336	 -6.27246068	 -0.00071336	  0.00043719	  7.27174732	  0.99782032	  0.99884945  0.49312816
+4337	 -6.27246108	 -0.00071320	  0.00043709	  7.27174788	  0.99782083	  0.99884972  0.49312820
+4338	 -6.27246147	 -0.00071303	  0.00043699	  7.27174844	  0.99782133	  0.99884998  0.49312828
+4339	 -6.27246187	 -0.00071287	  0.00043689	  7.27174900	  0.99782183	  0.99885025  0.49312834
+4340	 -6.27246226	 -0.00071270	  0.00043679	  7.27174956	  0.99782233	  0.99885051  0.49312839
+4341	 -6.27246266	 -0.00071254	  0.00043669	  7.27175012	  0.99782283	  0.99885078  0.49312847
+4342	 -6.27246305	 -0.00071237	  0.00043658	  7.27175068	  0.99782333	  0.99885104  0.49312849
+4343	 -6.27246345	 -0.00071221	  0.00043648	  7.27175123	  0.99782384	  0.99885131  0.49312857
+4344	 -6.27246384	 -0.00071205	  0.00043638	  7.27175179	  0.99782434	  0.99885157  0.49312862
+4345	 -6.27246423	 -0.00071188	  0.00043628	  7.27175235	  0.99782484	  0.99885183  0.49312870
+4346	 -6.27246463	 -0.00071172	  0.00043618	  7.27175291	  0.99782534	  0.99885210  0.49312875
+4347	 -6.27246502	 -0.00071156	  0.00043608	  7.27175347	  0.99782584	  0.99885236  0.49312878
+4348	 -6.27246541	 -0.00071139	  0.00043598	  7.27175402	  0.99782634	  0.99885263  0.49312886
+4349	 -6.27246581	 -0.00071123	  0.00043588	  7.27175458	  0.99782684	  0.99885289  0.49312892
+4350	 -6.27246620	 -0.00071107	  0.00043578	  7.27175514	  0.99782734	  0.99885315  0.49312899
+4351	 -6.27246659	 -0.00071090	  0.00043568	  7.27175569	  0.99782784	  0.99885342  0.49312906
+4352	 -6.27246699	 -0.00071074	  0.00043558	  7.27175625	  0.99782833	  0.99885368  0.49312908
+4353	 -6.27246738	 -0.00071058	  0.00043548	  7.27175680	  0.99782883	  0.99885394  0.49312914
+4354	 -6.27246777	 -0.00071041	  0.00043538	  7.27175736	  0.99782933	  0.99885421  0.49312922
+4355	 -6.27246816	 -0.00071025	  0.00043528	  7.27175791	  0.99782983	  0.99885447  0.49312926
+4356	 -6.27246856	 -0.00071009	  0.00043518	  7.27175847	  0.99783033	  0.99885473  0.49312934
+4357	 -6.27246895	 -0.00070992	  0.00043508	  7.27175902	  0.99783083	  0.99885499  0.49312938
+4358	 -6.27246934	 -0.00070976	  0.00043498	  7.27175958	  0.99783132	  0.99885526  0.49312944
+4359	 -6.27246973	 -0.00070960	  0.00043488	  7.27176013	  0.99783182	  0.99885552  0.49312948
+4360	 -6.27247012	 -0.00070944	  0.00043478	  7.27176069	  0.99783232	  0.99885578  0.49312957
+4361	 -6.27247051	 -0.00070927	  0.00043468	  7.27176124	  0.99783282	  0.99885604  0.49312962
+4362	 -6.27247090	 -0.00070911	  0.00043458	  7.27176179	  0.99783331	  0.99885631  0.49312968
+4363	 -6.27247129	 -0.00070895	  0.00043448	  7.27176235	  0.99783381	  0.99885657  0.49312972
+4364	 -6.27247168	 -0.00070879	  0.00043438	  7.27176290	  0.99783431	  0.99885683  0.49312980
+4365	 -6.27247207	 -0.00070862	  0.00043428	  7.27176345	  0.99783480	  0.99885709  0.49312985
+4366	 -6.27247246	 -0.00070846	  0.00043418	  7.27176400	  0.99783530	  0.99885735  0.49312992
+4367	 -6.27247285	 -0.00070830	  0.00043409	  7.27176456	  0.99783579	  0.99885762  0.49312999
+4368	 -6.27247324	 -0.00070814	  0.00043399	  7.27176511	  0.99783629	  0.99885788  0.49313003
+4369	 -6.27247363	 -0.00070798	  0.00043389	  7.27176566	  0.99783678	  0.99885814  0.49313009
+4370	 -6.27247402	 -0.00070781	  0.00043379	  7.27176621	  0.99783728	  0.99885840  0.49313014
+4371	 -6.27247441	 -0.00070765	  0.00043369	  7.27176676	  0.99783777	  0.99885866  0.49313021
+4372	 -6.27247480	 -0.00070749	  0.00043359	  7.27176731	  0.99783827	  0.99885892  0.49313025
+4373	 -6.27247519	 -0.00070733	  0.00043349	  7.27176786	  0.99783876	  0.99885918  0.49313031
+4374	 -6.27247558	 -0.00070717	  0.00043339	  7.27176841	  0.99783926	  0.99885944  0.49313036
+4375	 -6.27247597	 -0.00070701	  0.00043329	  7.27176896	  0.99783975	  0.99885970  0.49313043
+4376	 -6.27247636	 -0.00070684	  0.00043319	  7.27176951	  0.99784024	  0.99885996  0.49313047
+4377	 -6.27247674	 -0.00070668	  0.00043309	  7.27177006	  0.99784074	  0.99886022  0.49313056
+4378	 -6.27247713	 -0.00070652	  0.00043299	  7.27177061	  0.99784123	  0.99886048  0.49313062
+4379	 -6.27247752	 -0.00070636	  0.00043290	  7.27177116	  0.99784172	  0.99886074  0.49313067
+4380	 -6.27247791	 -0.00070620	  0.00043280	  7.27177171	  0.99784222	  0.99886100  0.49313072
+4381	 -6.27247829	 -0.00070604	  0.00043270	  7.27177226	  0.99784271	  0.99886126  0.49313077
+4382	 -6.27247868	 -0.00070588	  0.00043260	  7.27177280	  0.99784320	  0.99886152  0.49313084
+4383	 -6.27247907	 -0.00070572	  0.00043250	  7.27177335	  0.99784369	  0.99886178  0.49313089
+4384	 -6.27247945	 -0.00070556	  0.00043240	  7.27177390	  0.99784418	  0.99886204  0.49313094
+4385	 -6.27247984	 -0.00070539	  0.00043230	  7.27177445	  0.99784468	  0.99886230  0.49313101
+4386	 -6.27248023	 -0.00070523	  0.00043220	  7.27177499	  0.99784517	  0.99886256  0.49313105
+4387	 -6.27248061	 -0.00070507	  0.00043211	  7.27177554	  0.99784566	  0.99886282  0.49313111
+4388	 -6.27248100	 -0.00070491	  0.00043201	  7.27177609	  0.99784615	  0.99886308  0.49313117
+4389	 -6.27248139	 -0.00070475	  0.00043191	  7.27177663	  0.99784664	  0.99886334  0.49313123
+4390	 -6.27248177	 -0.00070459	  0.00043181	  7.27177718	  0.99784713	  0.99886360  0.49313129
+4391	 -6.27248216	 -0.00070443	  0.00043171	  7.27177773	  0.99784762	  0.99886386  0.49313133
+4392	 -6.27248254	 -0.00070427	  0.00043161	  7.27177827	  0.99784811	  0.99886411  0.49313142
+4393	 -6.27248293	 -0.00070411	  0.00043152	  7.27177882	  0.99784860	  0.99886437  0.49313147
+4394	 -6.27248331	 -0.00070395	  0.00043142	  7.27177936	  0.99784909	  0.99886463  0.49313152
+4395	 -6.27248370	 -0.00070379	  0.00043132	  7.27177991	  0.99784958	  0.99886489  0.49313157
+4396	 -6.27248408	 -0.00070363	  0.00043122	  7.27178045	  0.99785007	  0.99886515  0.49313161
+4397	 -6.27248447	 -0.00070347	  0.00043112	  7.27178099	  0.99785056	  0.99886541  0.49313168
+4398	 -6.27248485	 -0.00070331	  0.00043103	  7.27178154	  0.99785104	  0.99886566  0.49313174
+4399	 -6.27248523	 -0.00070315	  0.00043093	  7.27178208	  0.99785153	  0.99886592  0.49313183
+4400	 -6.27248562	 -0.00070299	  0.00043083	  7.27178263	  0.99785202	  0.99886618  0.49313186
+4401	 -6.27248600	 -0.00070283	  0.00043073	  7.27178317	  0.99785251	  0.99886644  0.49313191
+4402	 -6.27248638	 -0.00070267	  0.00043063	  7.27178371	  0.99785300	  0.99886669  0.49313198
+4403	 -6.27248677	 -0.00070251	  0.00043054	  7.27178425	  0.99785348	  0.99886695  0.49313204
+4404	 -6.27248715	 -0.00070235	  0.00043044	  7.27178480	  0.99785397	  0.99886721  0.49313208
+4405	 -6.27248753	 -0.00070219	  0.00043034	  7.27178534	  0.99785446	  0.99886747  0.49313214
+4406	 -6.27248792	 -0.00070203	  0.00043024	  7.27178588	  0.99785495	  0.99886772  0.49313220
+4407	 -6.27248830	 -0.00070188	  0.00043014	  7.27178642	  0.99785543	  0.99886798  0.49313224
+4408	 -6.27248868	 -0.00070172	  0.00043005	  7.27178696	  0.99785592	  0.99886824  0.49313233
+4409	 -6.27248906	 -0.00070156	  0.00042995	  7.27178751	  0.99785641	  0.99886849  0.49313235
+4410	 -6.27248945	 -0.00070140	  0.00042985	  7.27178805	  0.99785689	  0.99886875  0.49313243
+4411	 -6.27248983	 -0.00070124	  0.00042975	  7.27178859	  0.99785738	  0.99886901  0.49313250
+4412	 -6.27249021	 -0.00070108	  0.00042966	  7.27178913	  0.99785786	  0.99886926  0.49313254
+4413	 -6.27249059	 -0.00070092	  0.00042956	  7.27178967	  0.99785835	  0.99886952  0.49313259
+4414	 -6.27249097	 -0.00070076	  0.00042946	  7.27179021	  0.99785883	  0.99886977  0.49313265
+4415	 -6.27249135	 -0.00070060	  0.00042937	  7.27179075	  0.99785932	  0.99887003  0.49313270
+4416	 -6.27249173	 -0.00070045	  0.00042927	  7.27179129	  0.99785980	  0.99887029  0.49313277
+4417	 -6.27249211	 -0.00070029	  0.00042917	  7.27179183	  0.99786029	  0.99887054  0.49313282
+4418	 -6.27249250	 -0.00070013	  0.00042907	  7.27179237	  0.99786077	  0.99887080  0.49313289
+4419	 -6.27249288	 -0.00069997	  0.00042898	  7.27179290	  0.99786126	  0.99887105  0.49313291
+4420	 -6.27249326	 -0.00069981	  0.00042888	  7.27179344	  0.99786174	  0.99887131  0.49313301
+4421	 -6.27249364	 -0.00069965	  0.00042878	  7.27179398	  0.99786222	  0.99887156  0.49313305
+4422	 -6.27249402	 -0.00069950	  0.00042869	  7.27179452	  0.99786271	  0.99887182  0.49313311
+4423	 -6.27249440	 -0.00069934	  0.00042859	  7.27179506	  0.99786319	  0.99887207  0.49313316
+4424	 -6.27249477	 -0.00069918	  0.00042849	  7.27179559	  0.99786367	  0.99887233  0.49313322
+4425	 -6.27249515	 -0.00069902	  0.00042840	  7.27179613	  0.99786415	  0.99887258  0.49313329
+4426	 -6.27249553	 -0.00069887	  0.00042830	  7.27179667	  0.99786464	  0.99887284  0.49313333
+4427	 -6.27249591	 -0.00069871	  0.00042820	  7.27179720	  0.99786512	  0.99887309  0.49313340
+4428	 -6.27249629	 -0.00069855	  0.00042810	  7.27179774	  0.99786560	  0.99887335  0.49313343
+4429	 -6.27249667	 -0.00069839	  0.00042801	  7.27179828	  0.99786608	  0.99887360  0.49313349
+4430	 -6.27249705	 -0.00069823	  0.00042791	  7.27179881	  0.99786656	  0.99887385  0.49313355
+4431	 -6.27249743	 -0.00069808	  0.00042781	  7.27179935	  0.99786705	  0.99887411  0.49313361
+4432	 -6.27249780	 -0.00069792	  0.00042772	  7.27179988	  0.99786753	  0.99887436  0.49313365
+4433	 -6.27249818	 -0.00069776	  0.00042762	  7.27180042	  0.99786801	  0.99887462  0.49313373
+4434	 -6.27249856	 -0.00069761	  0.00042753	  7.27180095	  0.99786849	  0.99887487  0.49313378
+4435	 -6.27249894	 -0.00069745	  0.00042743	  7.27180149	  0.99786897	  0.99887512  0.49313382
+4436	 -6.27249931	 -0.00069729	  0.00042733	  7.27180202	  0.99786945	  0.99887538  0.49313387
+4437	 -6.27249969	 -0.00069713	  0.00042724	  7.27180256	  0.99786993	  0.99887563  0.49313395
+4438	 -6.27250007	 -0.00069698	  0.00042714	  7.27180309	  0.99787041	  0.99887588  0.49313401
+4439	 -6.27250045	 -0.00069682	  0.00042704	  7.27180363	  0.99787089	  0.99887614  0.49313405
+4440	 -6.27250082	 -0.00069666	  0.00042695	  7.27180416	  0.99787137	  0.99887639  0.49313411
+4441	 -6.27250120	 -0.00069651	  0.00042685	  7.27180469	  0.99787185	  0.99887664  0.49313417
+4442	 -6.27250158	 -0.00069635	  0.00042676	  7.27180523	  0.99787233	  0.99887689  0.49313425
+4443	 -6.27250195	 -0.00069619	  0.00042666	  7.27180576	  0.99787281	  0.99887715  0.49313428
+4444	 -6.27250233	 -0.00069604	  0.00042656	  7.27180629	  0.99787328	  0.99887740  0.49313433
+4445	 -6.27250270	 -0.00069588	  0.00042647	  7.27180682	  0.99787376	  0.99887765  0.49313436
+4446	 -6.27250308	 -0.00069572	  0.00042637	  7.27180736	  0.99787424	  0.99887790  0.49313447
+4447	 -6.27250345	 -0.00069557	  0.00042628	  7.27180789	  0.99787472	  0.99887816  0.49313453
+4448	 -6.27250383	 -0.00069541	  0.00042618	  7.27180842	  0.99787520	  0.99887841  0.49313456
+4449	 -6.27250420	 -0.00069525	  0.00042608	  7.27180895	  0.99787567	  0.99887866  0.49313463
+4450	 -6.27250458	 -0.00069510	  0.00042599	  7.27180948	  0.99787615	  0.99887891  0.49313466
+4451	 -6.27250495	 -0.00069494	  0.00042589	  7.27181001	  0.99787663	  0.99887916  0.49313471
+4452	 -6.27250533	 -0.00069479	  0.00042580	  7.27181054	  0.99787711	  0.99887942  0.49313478
+4453	 -6.27250570	 -0.00069463	  0.00042570	  7.27181107	  0.99787758	  0.99887967  0.49313484
+4454	 -6.27250608	 -0.00069447	  0.00042561	  7.27181160	  0.99787806	  0.99887992  0.49313489
+4455	 -6.27250645	 -0.00069432	  0.00042551	  7.27181213	  0.99787854	  0.99888017  0.49313499
+4456	 -6.27250683	 -0.00069416	  0.00042541	  7.27181266	  0.99787901	  0.99888042  0.49313500
+4457	 -6.27250720	 -0.00069401	  0.00042532	  7.27181319	  0.99787949	  0.99888067  0.49313506
+4458	 -6.27250757	 -0.00069385	  0.00042522	  7.27181372	  0.99787996	  0.99888092  0.49313510
+4459	 -6.27250795	 -0.00069370	  0.00042513	  7.27181425	  0.99788044	  0.99888117  0.49313518
+4460	 -6.27250832	 -0.00069354	  0.00042503	  7.27181478	  0.99788091	  0.99888143  0.49313523
+4461	 -6.27250869	 -0.00069339	  0.00042494	  7.27181531	  0.99788139	  0.99888168  0.49313528
+4462	 -6.27250906	 -0.00069323	  0.00042484	  7.27181583	  0.99788186	  0.99888193  0.49313532
+4463	 -6.27250944	 -0.00069308	  0.00042475	  7.27181636	  0.99788234	  0.99888218  0.49313537
+4464	 -6.27250981	 -0.00069292	  0.00042465	  7.27181689	  0.99788281	  0.99888243  0.49313545
+4465	 -6.27251018	 -0.00069277	  0.00042456	  7.27181742	  0.99788329	  0.99888268  0.49313551
+4466	 -6.27251055	 -0.00069261	  0.00042446	  7.27181794	  0.99788376	  0.99888293  0.49313557
+4467	 -6.27251093	 -0.00069246	  0.00042437	  7.27181847	  0.99788423	  0.99888318  0.49313560
+4468	 -6.27251130	 -0.00069230	  0.00042427	  7.27181900	  0.99788471	  0.99888343  0.49313566
+4469	 -6.27251167	 -0.00069215	  0.00042418	  7.27181952	  0.99788518	  0.99888368  0.49313574
+4470	 -6.27251204	 -0.00069199	  0.00042408	  7.27182005	  0.99788565	  0.99888393  0.49313579
+4471	 -6.27251241	 -0.00069184	  0.00042399	  7.27182058	  0.99788613	  0.99888418  0.49313583
+4472	 -6.27251278	 -0.00069168	  0.00042389	  7.27182110	  0.99788660	  0.99888443  0.49313587
+4473	 -6.27251315	 -0.00069153	  0.00042380	  7.27182163	  0.99788707	  0.99888468  0.49313593
+4474	 -6.27251353	 -0.00069137	  0.00042370	  7.27182215	  0.99788754	  0.99888492  0.49313600
+4475	 -6.27251390	 -0.00069122	  0.00042361	  7.27182268	  0.99788801	  0.99888517  0.49313604
+4476	 -6.27251427	 -0.00069106	  0.00042351	  7.27182320	  0.99788849	  0.99888542  0.49313613
+4477	 -6.27251464	 -0.00069091	  0.00042342	  7.27182373	  0.99788896	  0.99888567  0.49313616
+4478	 -6.27251501	 -0.00069076	  0.00042332	  7.27182425	  0.99788943	  0.99888592  0.49313621
+4479	 -6.27251538	 -0.00069060	  0.00042323	  7.27182478	  0.99788990	  0.99888617  0.49313628
+4480	 -6.27251575	 -0.00069045	  0.00042314	  7.27182530	  0.99789037	  0.99888642  0.49313634
+4481	 -6.27251612	 -0.00069029	  0.00042304	  7.27182582	  0.99789084	  0.99888667  0.49313637
+4482	 -6.27251649	 -0.00069014	  0.00042295	  7.27182635	  0.99789131	  0.99888691  0.49313644
+4483	 -6.27251685	 -0.00068999	  0.00042285	  7.27182687	  0.99789178	  0.99888716  0.49313651
+4484	 -6.27251722	 -0.00068983	  0.00042276	  7.27182739	  0.99789225	  0.99888741  0.49313656
+4485	 -6.27251759	 -0.00068968	  0.00042266	  7.27182791	  0.99789272	  0.99888766  0.49313664
+4486	 -6.27251796	 -0.00068952	  0.00042257	  7.27182844	  0.99789319	  0.99888791  0.49313666
+4487	 -6.27251833	 -0.00068937	  0.00042248	  7.27182896	  0.99789366	  0.99888815  0.49313670
+4488	 -6.27251870	 -0.00068922	  0.00042238	  7.27182948	  0.99789413	  0.99888840  0.49313677
+4489	 -6.27251907	 -0.00068906	  0.00042229	  7.27183000	  0.99789460	  0.99888865  0.49313683
+4490	 -6.27251943	 -0.00068891	  0.00042219	  7.27183052	  0.99789507	  0.99888890  0.49313687
+4491	 -6.27251980	 -0.00068876	  0.00042210	  7.27183104	  0.99789554	  0.99888914  0.49313691
+4492	 -6.27252017	 -0.00068860	  0.00042200	  7.27183157	  0.99789601	  0.99888939  0.49313700
+4493	 -6.27252054	 -0.00068845	  0.00042191	  7.27183209	  0.99789647	  0.99888964  0.49313706
+4494	 -6.27252091	 -0.00068830	  0.00042182	  7.27183261	  0.99789694	  0.99888988  0.49313707
+4495	 -6.27252127	 -0.00068815	  0.00042172	  7.27183313	  0.99789741	  0.99889013  0.49313711
+4496	 -6.27252164	 -0.00068799	  0.00042163	  7.27183365	  0.99789788	  0.99889038  0.49313720
+4497	 -6.27252201	 -0.00068784	  0.00042154	  7.27183417	  0.99789835	  0.99889062  0.49313727
+4498	 -6.27252237	 -0.00068769	  0.00042144	  7.27183469	  0.99789881	  0.99889087  0.49313733
+4499	 -6.27252274	 -0.00068753	  0.00042135	  7.27183521	  0.99789928	  0.99889112  0.49313737
+4500	 -6.27252311	 -0.00068738	  0.00042125	  7.27183572	  0.99789975	  0.99889136  0.49313744
+4501	 -6.27252347	 -0.00068723	  0.00042116	  7.27183624	  0.99790021	  0.99889161  0.49313749
+4502	 -6.27252384	 -0.00068708	  0.00042107	  7.27183676	  0.99790068	  0.99889186  0.49313754
+4503	 -6.27252420	 -0.00068692	  0.00042097	  7.27183728	  0.99790115	  0.99889210  0.49313760
+4504	 -6.27252457	 -0.00068677	  0.00042088	  7.27183780	  0.99790161	  0.99889235  0.49313767
+4505	 -6.27252494	 -0.00068662	  0.00042079	  7.27183832	  0.99790208	  0.99889259  0.49313771
+4506	 -6.27252530	 -0.00068647	  0.00042069	  7.27183883	  0.99790254	  0.99889284  0.49313775
+4507	 -6.27252567	 -0.00068631	  0.00042060	  7.27183935	  0.99790301	  0.99889309  0.49313782
+4508	 -6.27252603	 -0.00068616	  0.00042051	  7.27183987	  0.99790347	  0.99889333  0.49313786
+4509	 -6.27252640	 -0.00068601	  0.00042041	  7.27184039	  0.99790394	  0.99889358  0.49313791
+4510	 -6.27252676	 -0.00068586	  0.00042032	  7.27184090	  0.99790440	  0.99889382  0.49313797
+4511	 -6.27252712	 -0.00068571	  0.00042023	  7.27184142	  0.99790487	  0.99889407  0.49313801
+4512	 -6.27252749	 -0.00068555	  0.00042013	  7.27184193	  0.99790533	  0.99889431  0.49313810
+4513	 -6.27252785	 -0.00068540	  0.00042004	  7.27184245	  0.99790579	  0.99889456  0.49313815
+4514	 -6.27252822	 -0.00068525	  0.00041995	  7.27184297	  0.99790626	  0.99889480  0.49313818
+4515	 -6.27252858	 -0.00068510	  0.00041985	  7.27184348	  0.99790672	  0.99889505  0.49313824
+4516	 -6.27252895	 -0.00068495	  0.00041976	  7.27184400	  0.99790719	  0.99889529  0.49313828
+4517	 -6.27252931	 -0.00068480	  0.00041967	  7.27184451	  0.99790765	  0.99889553  0.49313835
+4518	 -6.27252967	 -0.00068464	  0.00041958	  7.27184503	  0.99790811	  0.99889578  0.49313842
+4519	 -6.27253004	 -0.00068449	  0.00041948	  7.27184554	  0.99790857	  0.99889602  0.49313845
+4520	 -6.27253040	 -0.00068434	  0.00041939	  7.27184606	  0.99790904	  0.99889627  0.49313853
+4521	 -6.27253076	 -0.00068419	  0.00041930	  7.27184657	  0.99790950	  0.99889651  0.49313854
+4522	 -6.27253112	 -0.00068404	  0.00041920	  7.27184708	  0.99790996	  0.99889676  0.49313861
+4523	 -6.27253149	 -0.00068389	  0.00041911	  7.27184760	  0.99791042	  0.99889700  0.49313867
+4524	 -6.27253185	 -0.00068374	  0.00041902	  7.27184811	  0.99791089	  0.99889724  0.49313874
+4525	 -6.27253221	 -0.00068359	  0.00041893	  7.27184862	  0.99791135	  0.99889749  0.49313876
+4526	 -6.27253257	 -0.00068344	  0.00041883	  7.27184914	  0.99791181	  0.99889773  0.49313881
+4527	 -6.27253293	 -0.00068328	  0.00041874	  7.27184965	  0.99791227	  0.99889797  0.49313886
+4528	 -6.27253330	 -0.00068313	  0.00041865	  7.27185016	  0.99791273	  0.99889822  0.49313893
+4529	 -6.27253366	 -0.00068298	  0.00041856	  7.27185068	  0.99791319	  0.99889846  0.49313897
+4530	 -6.27253402	 -0.00068283	  0.00041846	  7.27185119	  0.99791365	  0.99889870  0.49313904
+4531	 -6.27253438	 -0.00068268	  0.00041837	  7.27185170	  0.99791411	  0.99889895  0.49313909
+4532	 -6.27253474	 -0.00068253	  0.00041828	  7.27185221	  0.99791457	  0.99889919  0.49313915
+4533	 -6.27253510	 -0.00068238	  0.00041819	  7.27185272	  0.99791503	  0.99889943  0.49313920
+4534	 -6.27253546	 -0.00068223	  0.00041810	  7.27185323	  0.99791549	  0.99889967  0.49313924
+4535	 -6.27253582	 -0.00068208	  0.00041800	  7.27185374	  0.99791595	  0.99889992  0.49313932
+4536	 -6.27253618	 -0.00068193	  0.00041791	  7.27185425	  0.99791641	  0.99890016  0.49313937
+4537	 -6.27253654	 -0.00068178	  0.00041782	  7.27185477	  0.99791687	  0.99890040  0.49313944
+4538	 -6.27253690	 -0.00068163	  0.00041773	  7.27185528	  0.99791733	  0.99890064  0.49313947
+4539	 -6.27253726	 -0.00068148	  0.00041763	  7.27185579	  0.99791779	  0.99890089  0.49313953
+4540	 -6.27253762	 -0.00068133	  0.00041754	  7.27185630	  0.99791825	  0.99890113  0.49313960
+4541	 -6.27253798	 -0.00068118	  0.00041745	  7.27185680	  0.99791871	  0.99890137  0.49313964
+4542	 -6.27253834	 -0.00068103	  0.00041736	  7.27185731	  0.99791916	  0.99890161  0.49313969
+4543	 -6.27253870	 -0.00068088	  0.00041727	  7.27185782	  0.99791962	  0.99890185  0.49313973
+4544	 -6.27253906	 -0.00068073	  0.00041718	  7.27185833	  0.99792008	  0.99890209  0.49313978
+4545	 -6.27253942	 -0.00068058	  0.00041708	  7.27185884	  0.99792054	  0.99890234  0.49313983
+4546	 -6.27253978	 -0.00068043	  0.00041699	  7.27185935	  0.99792099	  0.99890258  0.49313991
+4547	 -6.27254014	 -0.00068028	  0.00041690	  7.27185986	  0.99792145	  0.99890282  0.49313998
+4548	 -6.27254050	 -0.00068013	  0.00041681	  7.27186036	  0.99792191	  0.99890306  0.49314002
+4549	 -6.27254086	 -0.00067998	  0.00041672	  7.27186087	  0.99792237	  0.99890330  0.49314008
+4550	 -6.27254121	 -0.00067983	  0.00041662	  7.27186138	  0.99792282	  0.99890354  0.49314012
+4551	 -6.27254157	 -0.00067968	  0.00041653	  7.27186189	  0.99792328	  0.99890378  0.49314018
+4552	 -6.27254193	 -0.00067953	  0.00041644	  7.27186239	  0.99792373	  0.99890402  0.49314019
+4553	 -6.27254229	 -0.00067939	  0.00041635	  7.27186290	  0.99792419	  0.99890426  0.49314025
+4554	 -6.27254264	 -0.00067924	  0.00041626	  7.27186341	  0.99792465	  0.99890450  0.49314034
+4555	 -6.27254300	 -0.00067909	  0.00041617	  7.27186391	  0.99792510	  0.99890474  0.49314040
+4556	 -6.27254336	 -0.00067894	  0.00041608	  7.27186442	  0.99792556	  0.99890499  0.49314044
+4557	 -6.27254372	 -0.00067879	  0.00041598	  7.27186493	  0.99792601	  0.99890523  0.49314049
+4558	 -6.27254407	 -0.00067864	  0.00041589	  7.27186543	  0.99792647	  0.99890547  0.49314054
+4559	 -6.27254443	 -0.00067849	  0.00041580	  7.27186594	  0.99792692	  0.99890571  0.49314058
+4560	 -6.27254479	 -0.00067834	  0.00041571	  7.27186644	  0.99792738	  0.99890595  0.49314062
+4561	 -6.27254514	 -0.00067819	  0.00041562	  7.27186695	  0.99792783	  0.99890618  0.49314070
+4562	 -6.27254550	 -0.00067805	  0.00041553	  7.27186745	  0.99792828	  0.99890642  0.49314075
+4563	 -6.27254585	 -0.00067790	  0.00041544	  7.27186796	  0.99792874	  0.99890666  0.49314079
+4564	 -6.27254621	 -0.00067775	  0.00041535	  7.27186846	  0.99792919	  0.99890690  0.49314085
+4565	 -6.27254657	 -0.00067760	  0.00041526	  7.27186897	  0.99792965	  0.99890714  0.49314090
+4566	 -6.27254692	 -0.00067745	  0.00041516	  7.27186947	  0.99793010	  0.99890738  0.49314094
+4567	 -6.27254728	 -0.00067730	  0.00041507	  7.27186997	  0.99793055	  0.99890762  0.49314100
+4568	 -6.27254763	 -0.00067716	  0.00041498	  7.27187048	  0.99793101	  0.99890786  0.49314106
+4569	 -6.27254799	 -0.00067701	  0.00041489	  7.27187098	  0.99793146	  0.99890810  0.49314111
+4570	 -6.27254834	 -0.00067686	  0.00041480	  7.27187148	  0.99793191	  0.99890834  0.49314118
+4571	 -6.27254870	 -0.00067671	  0.00041471	  7.27187199	  0.99793236	  0.99890858  0.49314123
+4572	 -6.27254905	 -0.00067656	  0.00041462	  7.27187249	  0.99793282	  0.99890882  0.49314127
+4573	 -6.27254941	 -0.00067642	  0.00041453	  7.27187299	  0.99793327	  0.99890905  0.49314132
+4574	 -6.27254976	 -0.00067627	  0.00041444	  7.27187349	  0.99793372	  0.99890929  0.49314138
+4575	 -6.27255012	 -0.00067612	  0.00041435	  7.27187399	  0.99793417	  0.99890953  0.49314144
+4576	 -6.27255047	 -0.00067597	  0.00041426	  7.27187450	  0.99793462	  0.99890977  0.49314149
+4577	 -6.27255082	 -0.00067583	  0.00041417	  7.27187500	  0.99793507	  0.99891001  0.49314155
+4578	 -6.27255118	 -0.00067568	  0.00041408	  7.27187550	  0.99793552	  0.99891025  0.49314159
+4579	 -6.27255153	 -0.00067553	  0.00041399	  7.27187600	  0.99793597	  0.99891048  0.49314164
+4580	 -6.27255188	 -0.00067538	  0.00041390	  7.27187650	  0.99793643	  0.99891072  0.49314169
+4581	 -6.27255224	 -0.00067524	  0.00041381	  7.27187700	  0.99793688	  0.99891096  0.49314176
+4582	 -6.27255259	 -0.00067509	  0.00041372	  7.27187750	  0.99793733	  0.99891120  0.49314181
+4583	 -6.27255294	 -0.00067494	  0.00041362	  7.27187800	  0.99793778	  0.99891143  0.49314185
+4584	 -6.27255330	 -0.00067479	  0.00041353	  7.27187850	  0.99793823	  0.99891167  0.49314190
+4585	 -6.27255365	 -0.00067465	  0.00041344	  7.27187900	  0.99793868	  0.99891191  0.49314197
+4586	 -6.27255400	 -0.00067450	  0.00041335	  7.27187950	  0.99793912	  0.99891215  0.49314200
+4587	 -6.27255435	 -0.00067435	  0.00041326	  7.27188000	  0.99793957	  0.99891238  0.49314208
+4588	 -6.27255470	 -0.00067421	  0.00041317	  7.27188050	  0.99794002	  0.99891262  0.49314213
+4589	 -6.27255506	 -0.00067406	  0.00041308	  7.27188100	  0.99794047	  0.99891286  0.49314217
+4590	 -6.27255541	 -0.00067391	  0.00041299	  7.27188150	  0.99794092	  0.99891309  0.49314220
+4591	 -6.27255576	 -0.00067377	  0.00041290	  7.27188199	  0.99794137	  0.99891333  0.49314225
+4592	 -6.27255611	 -0.00067362	  0.00041281	  7.27188249	  0.99794182	  0.99891357  0.49314232
+4593	 -6.27255646	 -0.00067347	  0.00041272	  7.27188299	  0.99794227	  0.99891380  0.49314238
+4594	 -6.27255681	 -0.00067333	  0.00041263	  7.27188349	  0.99794271	  0.99891404  0.49314241
+4595	 -6.27255717	 -0.00067318	  0.00041254	  7.27188398	  0.99794316	  0.99891428  0.49314247
+4596	 -6.27255752	 -0.00067303	  0.00041245	  7.27188448	  0.99794361	  0.99891451  0.49314253
+4597	 -6.27255787	 -0.00067289	  0.00041236	  7.27188498	  0.99794406	  0.99891475  0.49314258
+4598	 -6.27255822	 -0.00067274	  0.00041228	  7.27188548	  0.99794450	  0.99891498  0.49314263
+4599	 -6.27255857	 -0.00067260	  0.00041219	  7.27188597	  0.99794495	  0.99891522  0.49314268
+4600	 -6.27255892	 -0.00067245	  0.00041210	  7.27188647	  0.99794540	  0.99891545  0.49314274
+4601	 -6.27255927	 -0.00067230	  0.00041201	  7.27188696	  0.99794584	  0.99891569  0.49314280
+4602	 -6.27255962	 -0.00067216	  0.00041192	  7.27188746	  0.99794629	  0.99891593  0.49314284
+4603	 -6.27255997	 -0.00067201	  0.00041183	  7.27188796	  0.99794673	  0.99891616  0.49314287
+4604	 -6.27256032	 -0.00067187	  0.00041174	  7.27188845	  0.99794718	  0.99891640  0.49314297
+4605	 -6.27256067	 -0.00067172	  0.00041165	  7.27188895	  0.99794763	  0.99891663  0.49314303
+4606	 -6.27256102	 -0.00067157	  0.00041156	  7.27188944	  0.99794807	  0.99891687  0.49314307
+4607	 -6.27256137	 -0.00067143	  0.00041147	  7.27188994	  0.99794852	  0.99891710  0.49314312
+4608	 -6.27256171	 -0.00067128	  0.00041138	  7.27189043	  0.99794896	  0.99891734  0.49314315
+4609	 -6.27256206	 -0.00067114	  0.00041129	  7.27189093	  0.99794941	  0.99891757  0.49314322
+4610	 -6.27256241	 -0.00067099	  0.00041120	  7.27189142	  0.99794985	  0.99891781  0.49314325
+4611	 -6.27256276	 -0.00067085	  0.00041111	  7.27189191	  0.99795030	  0.99891804  0.49314333
+4612	 -6.27256311	 -0.00067070	  0.00041102	  7.27189241	  0.99795074	  0.99891828  0.49314337
+4613	 -6.27256346	 -0.00067056	  0.00041093	  7.27189290	  0.99795119	  0.99891851  0.49314340
+4614	 -6.27256381	 -0.00067041	  0.00041085	  7.27189339	  0.99795163	  0.99891874  0.49314348
+4615	 -6.27256415	 -0.00067027	  0.00041076	  7.27189389	  0.99795207	  0.99891898  0.49314353
+4616	 -6.27256450	 -0.00067012	  0.00041067	  7.27189438	  0.99795252	  0.99891921  0.49314358
+4617	 -6.27256485	 -0.00066998	  0.00041058	  7.27189487	  0.99795296	  0.99891945  0.49314365
+4618	 -6.27256520	 -0.00066983	  0.00041049	  7.27189537	  0.99795340	  0.99891968  0.49314368
+4619	 -6.27256554	 -0.00066969	  0.00041040	  7.27189586	  0.99795385	  0.99891991  0.49314376
+4620	 -6.27256589	 -0.00066954	  0.00041031	  7.27189635	  0.99795429	  0.99892015  0.49314379
+4621	 -6.27256624	 -0.00066940	  0.00041022	  7.27189684	  0.99795473	  0.99892038  0.49314383
+4622	 -6.27256658	 -0.00066925	  0.00041013	  7.27189733	  0.99795517	  0.99892061  0.49314389
+4623	 -6.27256693	 -0.00066911	  0.00041005	  7.27189782	  0.99795562	  0.99892085  0.49314395
+4624	 -6.27256728	 -0.00066896	  0.00040996	  7.27189832	  0.99795606	  0.99892108  0.49314398
+4625	 -6.27256762	 -0.00066882	  0.00040987	  7.27189881	  0.99795650	  0.99892131  0.49314403
+4626	 -6.27256797	 -0.00066867	  0.00040978	  7.27189930	  0.99795694	  0.99892155  0.49314409
+4627	 -6.27256832	 -0.00066853	  0.00040969	  7.27189979	  0.99795738	  0.99892178  0.49314415
+4628	 -6.27256866	 -0.00066838	  0.00040960	  7.27190028	  0.99795782	  0.99892201  0.49314419
+4629	 -6.27256901	 -0.00066824	  0.00040951	  7.27190077	  0.99795827	  0.99892225  0.49314425
+4630	 -6.27256935	 -0.00066810	  0.00040943	  7.27190126	  0.99795871	  0.99892248  0.49314428
+4631	 -6.27256970	 -0.00066795	  0.00040934	  7.27190175	  0.99795915	  0.99892271  0.49314436
+4632	 -6.27257004	 -0.00066781	  0.00040925	  7.27190224	  0.99795959	  0.99892294  0.49314439
+4633	 -6.27257039	 -0.00066766	  0.00040916	  7.27190273	  0.99796003	  0.99892318  0.49314446
+4634	 -6.27257073	 -0.00066752	  0.00040907	  7.27190322	  0.99796047	  0.99892341  0.49314452
+4635	 -6.27257108	 -0.00066738	  0.00040898	  7.27190370	  0.99796091	  0.99892364  0.49314453
+4636	 -6.27257142	 -0.00066723	  0.00040890	  7.27190419	  0.99796135	  0.99892387  0.49314460
+4637	 -6.27257177	 -0.00066709	  0.00040881	  7.27190468	  0.99796179	  0.99892410  0.49314466
+4638	 -6.27257211	 -0.00066694	  0.00040872	  7.27190517	  0.99796223	  0.99892434  0.49314470
+4639	 -6.27257246	 -0.00066680	  0.00040863	  7.27190566	  0.99796267	  0.99892457  0.49314476
+4640	 -6.27257280	 -0.00066666	  0.00040854	  7.27190615	  0.99796311	  0.99892480  0.49314482
+4641	 -6.27257315	 -0.00066651	  0.00040846	  7.27190663	  0.99796354	  0.99892503  0.49314486
+4642	 -6.27257349	 -0.00066637	  0.00040837	  7.27190712	  0.99796398	  0.99892526  0.49314490
+4643	 -6.27257383	 -0.00066623	  0.00040828	  7.27190761	  0.99796442	  0.99892549  0.49314498
+4644	 -6.27257418	 -0.00066608	  0.00040819	  7.27190809	  0.99796486	  0.99892573  0.49314501
+4645	 -6.27257452	 -0.00066594	  0.00040810	  7.27190858	  0.99796530	  0.99892596  0.49314505
+4646	 -6.27257486	 -0.00066580	  0.00040802	  7.27190907	  0.99796574	  0.99892619  0.49314512
+4647	 -6.27257521	 -0.00066565	  0.00040793	  7.27190955	  0.99796617	  0.99892642  0.49314515
+4648	 -6.27257555	 -0.00066551	  0.00040784	  7.27191004	  0.99796661	  0.99892665  0.49314521
+4649	 -6.27257589	 -0.00066537	  0.00040775	  7.27191053	  0.99796705	  0.99892688  0.49314528
+4650	 -6.27257623	 -0.00066522	  0.00040766	  7.27191101	  0.99796748	  0.99892711  0.49314532
+4651	 -6.27257658	 -0.00066508	  0.00040758	  7.27191150	  0.99796792	  0.99892734  0.49314537
+4652	 -6.27257692	 -0.00066494	  0.00040749	  7.27191198	  0.99796836	  0.99892757  0.49314541
+4653	 -6.27257726	 -0.00066480	  0.00040740	  7.27191247	  0.99796880	  0.99892780  0.49314547
+4654	 -6.27257760	 -0.00066465	  0.00040731	  7.27191295	  0.99796923	  0.99892803  0.49314555
+4655	 -6.27257795	 -0.00066451	  0.00040723	  7.27191344	  0.99796967	  0.99892826  0.49314558
+4656	 -6.27257829	 -0.00066437	  0.00040714	  7.27191392	  0.99797010	  0.99892849  0.49314564
+4657	 -6.27257863	 -0.00066422	  0.00040705	  7.27191440	  0.99797054	  0.99892872  0.49314568
+4658	 -6.27257897	 -0.00066408	  0.00040696	  7.27191489	  0.99797098	  0.99892895  0.49314573
+4659	 -6.27257931	 -0.00066394	  0.00040688	  7.27191537	  0.99797141	  0.99892918  0.49314579
+4660	 -6.27257965	 -0.00066380	  0.00040679	  7.27191586	  0.99797185	  0.99892941  0.49314582
+4661	 -6.27257999	 -0.00066366	  0.00040670	  7.27191634	  0.99797228	  0.99892964  0.49314588
+4662	 -6.27258033	 -0.00066351	  0.00040662	  7.27191682	  0.99797272	  0.99892987  0.49314593
+4663	 -6.27258068	 -0.00066337	  0.00040653	  7.27191730	  0.99797315	  0.99893010  0.49314598
+4664	 -6.27258102	 -0.00066323	  0.00040644	  7.27191779	  0.99797358	  0.99893033  0.49314603
+4665	 -6.27258136	 -0.00066309	  0.00040635	  7.27191827	  0.99797402	  0.99893056  0.49314608
+4666	 -6.27258170	 -0.00066294	  0.00040627	  7.27191875	  0.99797445	  0.99893079  0.49314611
+4667	 -6.27258204	 -0.00066280	  0.00040618	  7.27191923	  0.99797489	  0.99893102  0.49314621
+4668	 -6.27258238	 -0.00066266	  0.00040609	  7.27191972	  0.99797532	  0.99893125  0.49314623
+4669	 -6.27258272	 -0.00066252	  0.00040601	  7.27192020	  0.99797575	  0.99893148  0.49314626
+4670	 -6.27258306	 -0.00066238	  0.00040592	  7.27192068	  0.99797619	  0.99893170  0.49314635
+4671	 -6.27258340	 -0.00066224	  0.00040583	  7.27192116	  0.99797662	  0.99893193  0.49314639
+4672	 -6.27258373	 -0.00066209	  0.00040574	  7.27192164	  0.99797705	  0.99893216  0.49314644
+4673	 -6.27258407	 -0.00066195	  0.00040566	  7.27192212	  0.99797749	  0.99893239  0.49314649
+4674	 -6.27258441	 -0.00066181	  0.00040557	  7.27192260	  0.99797792	  0.99893262  0.49314651
+4675	 -6.27258475	 -0.00066167	  0.00040548	  7.27192308	  0.99797835	  0.99893285  0.49314660
+4676	 -6.27258509	 -0.00066153	  0.00040540	  7.27192356	  0.99797878	  0.99893307  0.49314663
+4677	 -6.27258543	 -0.00066139	  0.00040531	  7.27192404	  0.99797922	  0.99893330  0.49314669
+4678	 -6.27258577	 -0.00066125	  0.00040522	  7.27192452	  0.99797965	  0.99893353  0.49314673
+4679	 -6.27258611	 -0.00066110	  0.00040514	  7.27192500	  0.99798008	  0.99893376  0.49314679
+4680	 -6.27258644	 -0.00066096	  0.00040505	  7.27192548	  0.99798051	  0.99893399  0.49314686
+4681	 -6.27258678	 -0.00066082	  0.00040496	  7.27192596	  0.99798094	  0.99893421  0.49314689
+4682	 -6.27258712	 -0.00066068	  0.00040488	  7.27192644	  0.99798137	  0.99893444  0.49314694
+4683	 -6.27258746	 -0.00066054	  0.00040479	  7.27192692	  0.99798181	  0.99893467  0.49314700
+4684	 -6.27258780	 -0.00066040	  0.00040471	  7.27192740	  0.99798224	  0.99893490  0.49314705
+4685	 -6.27258813	 -0.00066026	  0.00040462	  7.27192788	  0.99798267	  0.99893512  0.49314708
+4686	 -6.27258847	 -0.00066012	  0.00040453	  7.27192835	  0.99798310	  0.99893535  0.49314712
+4687	 -6.27258881	 -0.00065998	  0.00040445	  7.27192883	  0.99798353	  0.99893558  0.49314719
+4688	 -6.27258914	 -0.00065984	  0.00040436	  7.27192931	  0.99798396	  0.99893580  0.49314727
+4689	 -6.27258948	 -0.00065970	  0.00040427	  7.27192979	  0.99798439	  0.99893603  0.49314727
+4690	 -6.27258982	 -0.00065955	  0.00040419	  7.27193026	  0.99798482	  0.99893626  0.49314731
+4691	 -6.27259015	 -0.00065941	  0.00040410	  7.27193074	  0.99798525	  0.99893648  0.49314740
+4692	 -6.27259049	 -0.00065927	  0.00040401	  7.27193122	  0.99798568	  0.99893671  0.49314745
+4693	 -6.27259083	 -0.00065913	  0.00040393	  7.27193169	  0.99798610	  0.99893694  0.49314746
+4694	 -6.27259116	 -0.00065899	  0.00040384	  7.27193217	  0.99798653	  0.99893716  0.49314754
+4695	 -6.27259150	 -0.00065885	  0.00040376	  7.27193265	  0.99798696	  0.99893739  0.49314761
+4696	 -6.27259184	 -0.00065871	  0.00040367	  7.27193312	  0.99798739	  0.99893762  0.49314766
+4697	 -6.27259217	 -0.00065857	  0.00040358	  7.27193360	  0.99798782	  0.99893784  0.49314769
+4698	 -6.27259251	 -0.00065843	  0.00040350	  7.27193407	  0.99798825	  0.99893807  0.49314775
+4699	 -6.27259284	 -0.00065829	  0.00040341	  7.27193455	  0.99798868	  0.99893829  0.49314778
+4700	 -6.27259318	 -0.00065815	  0.00040333	  7.27193502	  0.99798910	  0.99893852  0.49314784
+4701	 -6.27259351	 -0.00065801	  0.00040324	  7.27193550	  0.99798953	  0.99893875  0.49314788
+4702	 -6.27259385	 -0.00065787	  0.00040316	  7.27193597	  0.99798996	  0.99893897  0.49314794
+4703	 -6.27259418	 -0.00065773	  0.00040307	  7.27193645	  0.99799039	  0.99893920  0.49314799
+4704	 -6.27259452	 -0.00065759	  0.00040298	  7.27193692	  0.99799081	  0.99893942  0.49314805
+4705	 -6.27259485	 -0.00065745	  0.00040290	  7.27193740	  0.99799124	  0.99893965  0.49314807
+4706	 -6.27259519	 -0.00065731	  0.00040281	  7.27193787	  0.99799167	  0.99893987  0.49314813
+4707	 -6.27259552	 -0.00065717	  0.00040273	  7.27193835	  0.99799209	  0.99894010  0.49314822
+4708	 -6.27259585	 -0.00065703	  0.00040264	  7.27193882	  0.99799252	  0.99894032  0.49314825
+4709	 -6.27259619	 -0.00065690	  0.00040256	  7.27193929	  0.99799295	  0.99894055  0.49314830
+4710	 -6.27259652	 -0.00065676	  0.00040247	  7.27193977	  0.99799337	  0.99894077  0.49314836
+4711	 -6.27259686	 -0.00065662	  0.00040239	  7.27194024	  0.99799380	  0.99894100  0.49314839
+4712	 -6.27259719	 -0.00065648	  0.00040230	  7.27194071	  0.99799422	  0.99894122  0.49314844
+4713	 -6.27259752	 -0.00065634	  0.00040221	  7.27194118	  0.99799465	  0.99894145  0.49314848
+4714	 -6.27259786	 -0.00065620	  0.00040213	  7.27194166	  0.99799507	  0.99894167  0.49314852
+4715	 -6.27259819	 -0.00065606	  0.00040204	  7.27194213	  0.99799550	  0.99894190  0.49314858
+4716	 -6.27259852	 -0.00065592	  0.00040196	  7.27194260	  0.99799593	  0.99894212  0.49314864
+4717	 -6.27259885	 -0.00065578	  0.00040187	  7.27194307	  0.99799635	  0.99894234  0.49314867
+4718	 -6.27259919	 -0.00065564	  0.00040179	  7.27194354	  0.99799677	  0.99894257  0.49314872
+4719	 -6.27259952	 -0.00065550	  0.00040170	  7.27194402	  0.99799720	  0.99894279  0.49314880
+4720	 -6.27259985	 -0.00065537	  0.00040162	  7.27194449	  0.99799762	  0.99894302  0.49314880
+4721	 -6.27260018	 -0.00065523	  0.00040153	  7.27194496	  0.99799805	  0.99894324  0.49314888
+4722	 -6.27260052	 -0.00065509	  0.00040145	  7.27194543	  0.99799847	  0.99894346  0.49314897
+4723	 -6.27260085	 -0.00065495	  0.00040136	  7.27194590	  0.99799889	  0.99894369  0.49314899
+4724	 -6.27260118	 -0.00065481	  0.00040128	  7.27194637	  0.99799932	  0.99894391  0.49314902
+4725	 -6.27260151	 -0.00065467	  0.00040119	  7.27194684	  0.99799974	  0.99894413  0.49314908
+4726	 -6.27260184	 -0.00065453	  0.00040111	  7.27194731	  0.99800016	  0.99894436  0.49314911
+4727	 -6.27260217	 -0.00065440	  0.00040102	  7.27194778	  0.99800059	  0.99894458  0.49314920
+4728	 -6.27260251	 -0.00065426	  0.00040094	  7.27194825	  0.99800101	  0.99894480  0.49314922
+4729	 -6.27260284	 -0.00065412	  0.00040085	  7.27194872	  0.99800143	  0.99894503  0.49314928
+4730	 -6.27260317	 -0.00065398	  0.00040077	  7.27194919	  0.99800186	  0.99894525  0.49314931
+4731	 -6.27260350	 -0.00065384	  0.00040068	  7.27194966	  0.99800228	  0.99894547  0.49314937
+4732	 -6.27260383	 -0.00065370	  0.00040060	  7.27195013	  0.99800270	  0.99894570  0.49314942
+4733	 -6.27260416	 -0.00065357	  0.00040051	  7.27195059	  0.99800312	  0.99894592  0.49314947
+4734	 -6.27260449	 -0.00065343	  0.00040043	  7.27195106	  0.99800354	  0.99894614  0.49314952
+4735	 -6.27260482	 -0.00065329	  0.00040035	  7.27195153	  0.99800397	  0.99894636  0.49314960
+4736	 -6.27260515	 -0.00065315	  0.00040026	  7.27195200	  0.99800439	  0.99894659  0.49314963
+4737	 -6.27260548	 -0.00065302	  0.00040018	  7.27195247	  0.99800481	  0.99894681  0.49314965
+4738	 -6.27260581	 -0.00065288	  0.00040009	  7.27195293	  0.99800523	  0.99894703  0.49314972
+4739	 -6.27260614	 -0.00065274	  0.00040001	  7.27195340	  0.99800565	  0.99894725  0.49314975
+4740	 -6.27260647	 -0.00065260	  0.00039992	  7.27195387	  0.99800607	  0.99894747  0.49314983
+4741	 -6.27260680	 -0.00065246	  0.00039984	  7.27195434	  0.99800649	  0.99894770  0.49314987
+4742	 -6.27260713	 -0.00065233	  0.00039975	  7.27195480	  0.99800691	  0.99894792  0.49314994
+4743	 -6.27260746	 -0.00065219	  0.00039967	  7.27195527	  0.99800733	  0.99894814  0.49314996
+4744	 -6.27260779	 -0.00065205	  0.00039959	  7.27195573	  0.99800775	  0.99894836  0.49314998
+4745	 -6.27260812	 -0.00065192	  0.00039950	  7.27195620	  0.99800817	  0.99894858  0.49315004
+4746	 -6.27260844	 -0.00065178	  0.00039942	  7.27195667	  0.99800859	  0.99894880  0.49315011
+4747	 -6.27260877	 -0.00065164	  0.00039933	  7.27195713	  0.99800901	  0.99894903  0.49315016
+4748	 -6.27260910	 -0.00065150	  0.00039925	  7.27195760	  0.99800943	  0.99894925  0.49315020
+4749	 -6.27260943	 -0.00065137	  0.00039917	  7.27195806	  0.99800985	  0.99894947  0.49315028
+4750	 -6.27260976	 -0.00065123	  0.00039908	  7.27195853	  0.99801027	  0.99894969  0.49315027
+4751	 -6.27261009	 -0.00065109	  0.00039900	  7.27195899	  0.99801069	  0.99894991  0.49315035
+4752	 -6.27261041	 -0.00065096	  0.00039891	  7.27195946	  0.99801110	  0.99895013  0.49315041
+4753	 -6.27261074	 -0.00065082	  0.00039883	  7.27195992	  0.99801152	  0.99895035  0.49315047
+4754	 -6.27261107	 -0.00065068	  0.00039875	  7.27196039	  0.99801194	  0.99895057  0.49315053
+4755	 -6.27261140	 -0.00065055	  0.00039866	  7.27196085	  0.99801236	  0.99895079  0.49315055
+4756	 -6.27261172	 -0.00065041	  0.00039858	  7.27196132	  0.99801278	  0.99895101  0.49315059
+4757	 -6.27261205	 -0.00065027	  0.00039849	  7.27196178	  0.99801320	  0.99895123  0.49315063
+4758	 -6.27261238	 -0.00065014	  0.00039841	  7.27196224	  0.99801361	  0.99895145  0.49315070
+4759	 -6.27261271	 -0.00065000	  0.00039833	  7.27196271	  0.99801403	  0.99895167  0.49315074
+4760	 -6.27261303	 -0.00064986	  0.00039824	  7.27196317	  0.99801445	  0.99895189  0.49315081
+4761	 -6.27261336	 -0.00064973	  0.00039816	  7.27196363	  0.99801486	  0.99895212  0.49315083
+4762	 -6.27261369	 -0.00064959	  0.00039808	  7.27196410	  0.99801528	  0.99895233  0.49315088
+4763	 -6.27261401	 -0.00064945	  0.00039799	  7.27196456	  0.99801570	  0.99895255  0.49315095
+4764	 -6.27261434	 -0.00064932	  0.00039791	  7.27196502	  0.99801611	  0.99895277  0.49315102
+4765	 -6.27261466	 -0.00064918	  0.00039782	  7.27196548	  0.99801653	  0.99895299  0.49315101
+4766	 -6.27261499	 -0.00064904	  0.00039774	  7.27196595	  0.99801695	  0.99895321  0.49315109
+4767	 -6.27261532	 -0.00064891	  0.00039766	  7.27196641	  0.99801736	  0.99895343  0.49315112
+4768	 -6.27261564	 -0.00064877	  0.00039757	  7.27196687	  0.99801778	  0.99895365  0.49315120
+4769	 -6.27261597	 -0.00064864	  0.00039749	  7.27196733	  0.99801819	  0.99895387  0.49315122
+4770	 -6.27261629	 -0.00064850	  0.00039741	  7.27196779	  0.99801861	  0.99895409  0.49315129
+4771	 -6.27261662	 -0.00064836	  0.00039732	  7.27196825	  0.99801902	  0.99895431  0.49315134
+4772	 -6.27261694	 -0.00064823	  0.00039724	  7.27196871	  0.99801944	  0.99895453  0.49315136
+4773	 -6.27261727	 -0.00064809	  0.00039716	  7.27196917	  0.99801985	  0.99895475  0.49315141
+4774	 -6.27261759	 -0.00064796	  0.00039707	  7.27196963	  0.99802027	  0.99895497  0.49315149
+4775	 -6.27261792	 -0.00064782	  0.00039699	  7.27197009	  0.99802068	  0.99895519  0.49315153
+4776	 -6.27261824	 -0.00064769	  0.00039691	  7.27197056	  0.99802110	  0.99895540  0.49315156
+4777	 -6.27261857	 -0.00064755	  0.00039683	  7.27197101	  0.99802151	  0.99895562  0.49315162
+4778	 -6.27261889	 -0.00064742	  0.00039674	  7.27197147	  0.99802193	  0.99895584  0.49315167
+4779	 -6.27261921	 -0.00064728	  0.00039666	  7.27197193	  0.99802234	  0.99895606  0.49315173
+4780	 -6.27261954	 -0.00064715	  0.00039658	  7.27197239	  0.99802275	  0.99895628  0.49315176
+4781	 -6.27261986	 -0.00064701	  0.00039649	  7.27197285	  0.99802317	  0.99895650  0.49315180
+4782	 -6.27262019	 -0.00064687	  0.00039641	  7.27197331	  0.99802358	  0.99895671  0.49315186
+4783	 -6.27262051	 -0.00064674	  0.00039633	  7.27197377	  0.99802399	  0.99895693  0.49315191
+4784	 -6.27262083	 -0.00064660	  0.00039624	  7.27197423	  0.99802441	  0.99895715  0.49315198
+4785	 -6.27262116	 -0.00064647	  0.00039616	  7.27197469	  0.99802482	  0.99895737  0.49315200
+4786	 -6.27262148	 -0.00064633	  0.00039608	  7.27197515	  0.99802523	  0.99895759  0.49315204
+4787	 -6.27262180	 -0.00064620	  0.00039600	  7.27197560	  0.99802564	  0.99895780  0.49315211
+4788	 -6.27262213	 -0.00064606	  0.00039591	  7.27197606	  0.99802606	  0.99895802  0.49315216
+4789	 -6.27262245	 -0.00064593	  0.00039583	  7.27197652	  0.99802647	  0.99895824  0.49315219
+4790	 -6.27262277	 -0.00064579	  0.00039575	  7.27197698	  0.99802688	  0.99895846  0.49315225
+4791	 -6.27262309	 -0.00064566	  0.00039567	  7.27197743	  0.99802729	  0.99895867  0.49315226
+4792	 -6.27262342	 -0.00064553	  0.00039558	  7.27197789	  0.99802770	  0.99895889  0.49315233
+4793	 -6.27262374	 -0.00064539	  0.00039550	  7.27197835	  0.99802812	  0.99895911  0.49315238
+4794	 -6.27262406	 -0.00064526	  0.00039542	  7.27197880	  0.99802853	  0.99895933  0.49315244
+4795	 -6.27262438	 -0.00064512	  0.00039534	  7.27197926	  0.99802894	  0.99895954  0.49315248
+4796	 -6.27262470	 -0.00064499	  0.00039525	  7.27197972	  0.99802935	  0.99895976  0.49315254
+4797	 -6.27262503	 -0.00064485	  0.00039517	  7.27198017	  0.99802976	  0.99895998  0.49315255
+4798	 -6.27262535	 -0.00064472	  0.00039509	  7.27198063	  0.99803017	  0.99896019  0.49315260
+4799	 -6.27262567	 -0.00064458	  0.00039501	  7.27198108	  0.99803058	  0.99896041  0.49315266
+4800	 -6.27262599	 -0.00064445	  0.00039492	  7.27198154	  0.99803099	  0.99896063  0.49315272
+4801	 -6.27262631	 -0.00064432	  0.00039484	  7.27198199	  0.99803140	  0.99896084  0.49315276
+4802	 -6.27262663	 -0.00064418	  0.00039476	  7.27198245	  0.99803181	  0.99896106  0.49315283
+4803	 -6.27262695	 -0.00064405	  0.00039468	  7.27198290	  0.99803222	  0.99896127  0.49315287
+4804	 -6.27262727	 -0.00064391	  0.00039460	  7.27198336	  0.99803263	  0.99896149  0.49315291
+4805	 -6.27262759	 -0.00064378	  0.00039451	  7.27198381	  0.99803304	  0.99896171  0.49315298
+4806	 -6.27262792	 -0.00064365	  0.00039443	  7.27198427	  0.99803345	  0.99896192  0.49315301
+4807	 -6.27262824	 -0.00064351	  0.00039435	  7.27198472	  0.99803386	  0.99896214  0.49315305
+4808	 -6.27262856	 -0.00064338	  0.00039427	  7.27198518	  0.99803427	  0.99896235  0.49315310
+4809	 -6.27262888	 -0.00064325	  0.00039418	  7.27198563	  0.99803468	  0.99896257  0.49315315
+4810	 -6.27262920	 -0.00064311	  0.00039410	  7.27198608	  0.99803508	  0.99896279  0.49315320
+4811	 -6.27262952	 -0.00064298	  0.00039402	  7.27198654	  0.99803549	  0.99896300  0.49315324
+4812	 -6.27262984	 -0.00064284	  0.00039394	  7.27198699	  0.99803590	  0.99896322  0.49315329
+4813	 -6.27263015	 -0.00064271	  0.00039386	  7.27198744	  0.99803631	  0.99896343  0.49315335
+4814	 -6.27263047	 -0.00064258	  0.00039378	  7.27198790	  0.99803672	  0.99896365  0.49315341
+4815	 -6.27263079	 -0.00064244	  0.00039369	  7.27198835	  0.99803712	  0.99896386  0.49315341
+4816	 -6.27263111	 -0.00064231	  0.00039361	  7.27198880	  0.99803753	  0.99896408  0.49315348
+4817	 -6.27263143	 -0.00064218	  0.00039353	  7.27198925	  0.99803794	  0.99896429  0.49315355
+4818	 -6.27263175	 -0.00064204	  0.00039345	  7.27198971	  0.99803835	  0.99896451  0.49315360
+4819	 -6.27263207	 -0.00064191	  0.00039337	  7.27199016	  0.99803875	  0.99896472  0.49315362
+4820	 -6.27263239	 -0.00064178	  0.00039329	  7.27199061	  0.99803916	  0.99896494  0.49315366
+4821	 -6.27263271	 -0.00064165	  0.00039320	  7.27199106	  0.99803957	  0.99896515  0.49315370
+4822	 -6.27263302	 -0.00064151	  0.00039312	  7.27199151	  0.99803997	  0.99896537  0.49315378
+4823	 -6.27263334	 -0.00064138	  0.00039304	  7.27199196	  0.99804038	  0.99896558  0.49315382
+4824	 -6.27263366	 -0.00064125	  0.00039296	  7.27199241	  0.99804079	  0.99896579  0.49315384
+4825	 -6.27263398	 -0.00064111	  0.00039288	  7.27199287	  0.99804119	  0.99896601  0.49315390
+4826	 -6.27263430	 -0.00064098	  0.00039280	  7.27199332	  0.99804160	  0.99896622  0.49315398
+4827	 -6.27263461	 -0.00064085	  0.00039271	  7.27199377	  0.99804200	  0.99896644  0.49315398
+4828	 -6.27263493	 -0.00064072	  0.00039263	  7.27199422	  0.99804241	  0.99896665  0.49315402
+4829	 -6.27263525	 -0.00064058	  0.00039255	  7.27199467	  0.99804281	  0.99896686  0.49315410
+4830	 -6.27263557	 -0.00064045	  0.00039247	  7.27199512	  0.99804322	  0.99896708  0.49315415
+4831	 -6.27263588	 -0.00064032	  0.00039239	  7.27199557	  0.99804362	  0.99896729  0.49315420
+4832	 -6.27263620	 -0.00064019	  0.00039231	  7.27199602	  0.99804403	  0.99896751  0.49315423
+4833	 -6.27263652	 -0.00064005	  0.00039223	  7.27199646	  0.99804443	  0.99896772  0.49315429
+4834	 -6.27263683	 -0.00063992	  0.00039215	  7.27199691	  0.99804484	  0.99896793  0.49315433
+4835	 -6.27263715	 -0.00063979	  0.00039206	  7.27199736	  0.99804524	  0.99896815  0.49315438
+4836	 -6.27263747	 -0.00063966	  0.00039198	  7.27199781	  0.99804565	  0.99896836  0.49315441
+4837	 -6.27263778	 -0.00063952	  0.00039190	  7.27199826	  0.99804605	  0.99896857  0.49315445
+4838	 -6.27263810	 -0.00063939	  0.00039182	  7.27199871	  0.99804645	  0.99896879  0.49315452
+4839	 -6.27263842	 -0.00063926	  0.00039174	  7.27199916	  0.99804686	  0.99896900  0.49315453
+4840	 -6.27263873	 -0.00063913	  0.00039166	  7.27199960	  0.99804726	  0.99896921  0.49315461
+4841	 -6.27263905	 -0.00063900	  0.00039158	  7.27200005	  0.99804766	  0.99896942  0.49315465
+4842	 -6.27263936	 -0.00063886	  0.00039150	  7.27200050	  0.99804807	  0.99896964  0.49315471
+4843	 -6.27263968	 -0.00063873	  0.00039142	  7.27200095	  0.99804847	  0.99896985  0.49315476
+4844	 -6.27263999	 -0.00063860	  0.00039134	  7.27200139	  0.99804887	  0.99897006  0.49315480
+4845	 -6.27264031	 -0.00063847	  0.00039126	  7.27200184	  0.99804928	  0.99897028  0.49315486
+4846	 -6.27264063	 -0.00063834	  0.00039117	  7.27200229	  0.99804968	  0.99897049  0.49315489
+4847	 -6.27264094	 -0.00063821	  0.00039109	  7.27200273	  0.99805008	  0.99897070  0.49315491
+4848	 -6.27264126	 -0.00063807	  0.00039101	  7.27200318	  0.99805048	  0.99897091  0.49315503
+4849	 -6.27264157	 -0.00063794	  0.00039093	  7.27200363	  0.99805088	  0.99897112  0.49315504
+4850	 -6.27264188	 -0.00063781	  0.00039085	  7.27200407	  0.99805129	  0.99897134  0.49315507
+4851	 -6.27264220	 -0.00063768	  0.00039077	  7.27200452	  0.99805169	  0.99897155  0.49315512
+4852	 -6.27264251	 -0.00063755	  0.00039069	  7.27200496	  0.99805209	  0.99897176  0.49315517
+4853	 -6.27264283	 -0.00063742	  0.00039061	  7.27200541	  0.99805249	  0.99897197  0.49315521
+4854	 -6.27264314	 -0.00063729	  0.00039053	  7.27200586	  0.99805289	  0.99897218  0.49315529
+4855	 -6.27264346	 -0.00063716	  0.00039045	  7.27200630	  0.99805329	  0.99897240  0.49315533
+4856	 -6.27264377	 -0.00063702	  0.00039037	  7.27200675	  0.99805369	  0.99897261  0.49315538
+4857	 -6.27264408	 -0.00063689	  0.00039029	  7.27200719	  0.99805409	  0.99897282  0.49315540
+4858	 -6.27264440	 -0.00063676	  0.00039021	  7.27200764	  0.99805450	  0.99897303  0.49315545
+4859	 -6.27264471	 -0.00063663	  0.00039013	  7.27200808	  0.99805490	  0.99897324  0.49315550
+4860	 -6.27264502	 -0.00063650	  0.00039005	  7.27200852	  0.99805530	  0.99897345  0.49315556
+4861	 -6.27264534	 -0.00063637	  0.00038997	  7.27200897	  0.99805570	  0.99897366  0.49315563
+4862	 -6.27264565	 -0.00063624	  0.00038989	  7.27200941	  0.99805610	  0.99897387  0.49315563
+4863	 -6.27264596	 -0.00063611	  0.00038981	  7.27200986	  0.99805649	  0.99897409  0.49315568
+4864	 -6.27264628	 -0.00063598	  0.00038973	  7.27201030	  0.99805689	  0.99897430  0.49315572
+4865	 -6.27264659	 -0.00063585	  0.00038965	  7.27201074	  0.99805729	  0.99897451  0.49315579
+4866	 -6.27264690	 -0.00063572	  0.00038957	  7.27201119	  0.99805769	  0.99897472  0.49315582
+4867	 -6.27264721	 -0.00063559	  0.00038949	  7.27201163	  0.99805809	  0.99897493  0.49315589
+4868	 -6.27264753	 -0.00063545	  0.00038941	  7.27201207	  0.99805849	  0.99897514  0.49315595
+4869	 -6.27264784	 -0.00063532	  0.00038933	  7.27201251	  0.99805889	  0.99897535  0.49315600
+4870	 -6.27264815	 -0.00063519	  0.00038925	  7.27201296	  0.99805929	  0.99897556  0.49315603
+4871	 -6.27264846	 -0.00063506	  0.00038917	  7.27201340	  0.99805969	  0.99897577  0.49315606
+4872	 -6.27264877	 -0.00063493	  0.00038909	  7.27201384	  0.99806008	  0.99897598  0.49315609
+4873	 -6.27264909	 -0.00063480	  0.00038901	  7.27201428	  0.99806048	  0.99897619  0.49315614
+4874	 -6.27264940	 -0.00063467	  0.00038893	  7.27201472	  0.99806088	  0.99897640  0.49315621
+4875	 -6.27264971	 -0.00063454	  0.00038885	  7.27201517	  0.99806128	  0.99897661  0.49315622
+4876	 -6.27265002	 -0.00063441	  0.00038877	  7.27201561	  0.99806168	  0.99897682  0.49315632
+4877	 -6.27265033	 -0.00063428	  0.00038869	  7.27201605	  0.99806207	  0.99897703  0.49315636
+4878	 -6.27265064	 -0.00063415	  0.00038861	  7.27201649	  0.99806247	  0.99897724  0.49315639
+4879	 -6.27265095	 -0.00063402	  0.00038853	  7.27201693	  0.99806287	  0.99897745  0.49315644
+4880	 -6.27265126	 -0.00063389	  0.00038845	  7.27201737	  0.99806326	  0.99897766  0.49315648
+4881	 -6.27265157	 -0.00063376	  0.00038837	  7.27201781	  0.99806366	  0.99897787  0.49315654
+4882	 -6.27265189	 -0.00063363	  0.00038829	  7.27201825	  0.99806406	  0.99897808  0.49315656
+4883	 -6.27265220	 -0.00063350	  0.00038821	  7.27201869	  0.99806445	  0.99897829  0.49315663
+4884	 -6.27265251	 -0.00063337	  0.00038813	  7.27201913	  0.99806485	  0.99897849  0.49315664
+4885	 -6.27265282	 -0.00063324	  0.00038805	  7.27201957	  0.99806525	  0.99897870  0.49315672
+4886	 -6.27265313	 -0.00063312	  0.00038797	  7.27202001	  0.99806564	  0.99897891  0.49315678
+4887	 -6.27265344	 -0.00063299	  0.00038789	  7.27202045	  0.99806604	  0.99897912  0.49315679
+4888	 -6.27265375	 -0.00063286	  0.00038781	  7.27202089	  0.99806643	  0.99897933  0.49315682
+4889	 -6.27265406	 -0.00063273	  0.00038773	  7.27202133	  0.99806683	  0.99897954  0.49315688
+4890	 -6.27265436	 -0.00063260	  0.00038765	  7.27202177	  0.99806722	  0.99897975  0.49315697
+4891	 -6.27265467	 -0.00063247	  0.00038758	  7.27202221	  0.99806762	  0.99897996  0.49315698
+4892	 -6.27265498	 -0.00063234	  0.00038750	  7.27202264	  0.99806801	  0.99898016  0.49315705
+4893	 -6.27265529	 -0.00063221	  0.00038742	  7.27202308	  0.99806841	  0.99898037  0.49315710
+4894	 -6.27265560	 -0.00063208	  0.00038734	  7.27202352	  0.99806880	  0.99898058  0.49315714
+4895	 -6.27265591	 -0.00063195	  0.00038726	  7.27202396	  0.99806920	  0.99898079  0.49315716
+4896	 -6.27265622	 -0.00063182	  0.00038718	  7.27202440	  0.99806959	  0.99898100  0.49315722
+4897	 -6.27265653	 -0.00063169	  0.00038710	  7.27202483	  0.99806999	  0.99898121  0.49315726
+4898	 -6.27265684	 -0.00063157	  0.00038702	  7.27202527	  0.99807038	  0.99898141  0.49315731
+4899	 -6.27265714	 -0.00063144	  0.00038694	  7.27202571	  0.99807077	  0.99898162  0.49315737
+4900	 -6.27265745	 -0.00063131	  0.00038686	  7.27202614	  0.99807117	  0.99898183  0.49315740
+4901	 -6.27265776	 -0.00063118	  0.00038678	  7.27202658	  0.99807156	  0.99898204  0.49315744
+4902	 -6.27265807	 -0.00063105	  0.00038671	  7.27202702	  0.99807195	  0.99898224  0.49315747
+4903	 -6.27265838	 -0.00063092	  0.00038663	  7.27202745	  0.99807235	  0.99898245  0.49315751
+4904	 -6.27265868	 -0.00063079	  0.00038655	  7.27202789	  0.99807274	  0.99898266  0.49315758
+4905	 -6.27265899	 -0.00063066	  0.00038647	  7.27202833	  0.99807313	  0.99898287  0.49315760
+4906	 -6.27265930	 -0.00063054	  0.00038639	  7.27202876	  0.99807353	  0.99898307  0.49315770
+4907	 -6.27265961	 -0.00063041	  0.00038631	  7.27202920	  0.99807392	  0.99898328  0.49315771
+4908	 -6.27265991	 -0.00063028	  0.00038623	  7.27202963	  0.99807431	  0.99898349  0.49315780
+4909	 -6.27266022	 -0.00063015	  0.00038615	  7.27203007	  0.99807470	  0.99898369  0.49315780
+4910	 -6.27266053	 -0.00063002	  0.00038608	  7.27203051	  0.99807510	  0.99898390  0.49315786
+4911	 -6.27266083	 -0.00062989	  0.00038600	  7.27203094	  0.99807549	  0.99898411  0.49315792
+4912	 -6.27266114	 -0.00062977	  0.00038592	  7.27203138	  0.99807588	  0.99898432  0.49315794
+4913	 -6.27266145	 -0.00062964	  0.00038584	  7.27203181	  0.99807627	  0.99898452  0.49315802
+4914	 -6.27266175	 -0.00062951	  0.00038576	  7.27203224	  0.99807666	  0.99898473  0.49315805
+4915	 -6.27266206	 -0.00062938	  0.00038568	  7.27203268	  0.99807705	  0.99898493  0.49315808
+4916	 -6.27266237	 -0.00062925	  0.00038560	  7.27203311	  0.99807744	  0.99898514  0.49315812
+4917	 -6.27266267	 -0.00062913	  0.00038553	  7.27203355	  0.99807784	  0.99898535  0.49315818
+4918	 -6.27266298	 -0.00062900	  0.00038545	  7.27203398	  0.99807823	  0.99898555  0.49315821
+4919	 -6.27266329	 -0.00062887	  0.00038537	  7.27203441	  0.99807862	  0.99898576  0.49315828
+4920	 -6.27266359	 -0.00062874	  0.00038529	  7.27203485	  0.99807901	  0.99898597  0.49315830
+4921	 -6.27266390	 -0.00062862	  0.00038521	  7.27203528	  0.99807940	  0.99898617  0.49315836
+4922	 -6.27266420	 -0.00062849	  0.00038513	  7.27203571	  0.99807979	  0.99898638  0.49315841
+4923	 -6.27266451	 -0.00062836	  0.00038506	  7.27203615	  0.99808018	  0.99898658  0.49315847
+4924	 -6.27266481	 -0.00062823	  0.00038498	  7.27203658	  0.99808057	  0.99898679  0.49315850
+4925	 -6.27266512	 -0.00062811	  0.00038490	  7.27203701	  0.99808096	  0.99898700  0.49315856
+4926	 -6.27266542	 -0.00062798	  0.00038482	  7.27203744	  0.99808135	  0.99898720  0.49315859
+4927	 -6.27266573	 -0.00062785	  0.00038474	  7.27203788	  0.99808174	  0.99898741  0.49315862
+4928	 -6.27266603	 -0.00062772	  0.00038467	  7.27203831	  0.99808213	  0.99898761  0.49315867
+4929	 -6.27266634	 -0.00062760	  0.00038459	  7.27203874	  0.99808251	  0.99898782  0.49315875
+4930	 -6.27266664	 -0.00062747	  0.00038451	  7.27203917	  0.99808290	  0.99898802  0.49315880
+4931	 -6.27266695	 -0.00062734	  0.00038443	  7.27203960	  0.99808329	  0.99898823  0.49315883
+4932	 -6.27266725	 -0.00062721	  0.00038435	  7.27204004	  0.99808368	  0.99898843  0.49315887
+4933	 -6.27266755	 -0.00062709	  0.00038428	  7.27204047	  0.99808407	  0.99898864  0.49315892
+4934	 -6.27266786	 -0.00062696	  0.00038420	  7.27204090	  0.99808446	  0.99898884  0.49315895
+4935	 -6.27266816	 -0.00062683	  0.00038412	  7.27204133	  0.99808485	  0.99898905  0.49315899
+4936	 -6.27266847	 -0.00062671	  0.00038404	  7.27204176	  0.99808523	  0.99898925  0.49315906
+4937	 -6.27266877	 -0.00062658	  0.00038396	  7.27204219	  0.99808562	  0.99898946  0.49315910
+4938	 -6.27266907	 -0.00062645	  0.00038389	  7.27204262	  0.99808601	  0.99898966  0.49315911
+4939	 -6.27266938	 -0.00062633	  0.00038381	  7.27204305	  0.99808640	  0.99898987  0.49315917
+4940	 -6.27266968	 -0.00062620	  0.00038373	  7.27204348	  0.99808678	  0.99899007  0.49315922
+4941	 -6.27266998	 -0.00062607	  0.00038365	  7.27204391	  0.99808717	  0.99899027  0.49315926
+4942	 -6.27267028	 -0.00062595	  0.00038358	  7.27204434	  0.99808756	  0.99899048  0.49315930
+4943	 -6.27267059	 -0.00062582	  0.00038350	  7.27204477	  0.99808794	  0.99899068  0.49315934
+4944	 -6.27267089	 -0.00062569	  0.00038342	  7.27204520	  0.99808833	  0.99899089  0.49315940
+4945	 -6.27267119	 -0.00062557	  0.00038334	  7.27204563	  0.99808872	  0.99899109  0.49315945
+4946	 -6.27267150	 -0.00062544	  0.00038327	  7.27204606	  0.99808910	  0.99899129  0.49315950
+4947	 -6.27267180	 -0.00062531	  0.00038319	  7.27204648	  0.99808949	  0.99899150  0.49315953
+4948	 -6.27267210	 -0.00062519	  0.00038311	  7.27204691	  0.99808988	  0.99899170  0.49315956
+4949	 -6.27267240	 -0.00062506	  0.00038303	  7.27204734	  0.99809026	  0.99899191  0.49315961
+4950	 -6.27267270	 -0.00062494	  0.00038296	  7.27204777	  0.99809065	  0.99899211  0.49315968
+4951	 -6.27267301	 -0.00062481	  0.00038288	  7.27204820	  0.99809103	  0.99899231  0.49315973
+4952	 -6.27267331	 -0.00062468	  0.00038280	  7.27204863	  0.99809142	  0.99899252  0.49315977
+4953	 -6.27267361	 -0.00062456	  0.00038272	  7.27204905	  0.99809180	  0.99899272  0.49315980
+4954	 -6.27267391	 -0.00062443	  0.00038265	  7.27204948	  0.99809219	  0.99899292  0.49315984
+4955	 -6.27267421	 -0.00062431	  0.00038257	  7.27204991	  0.99809257	  0.99899313  0.49315989
+4956	 -6.27267451	 -0.00062418	  0.00038249	  7.27205033	  0.99809296	  0.99899333  0.49315993
+4957	 -6.27267481	 -0.00062405	  0.00038241	  7.27205076	  0.99809334	  0.99899353  0.49315999
+4958	 -6.27267512	 -0.00062393	  0.00038234	  7.27205119	  0.99809373	  0.99899373  0.49316004
+4959	 -6.27267542	 -0.00062380	  0.00038226	  7.27205162	  0.99809411	  0.99899394  0.49316007
+4960	 -6.27267572	 -0.00062368	  0.00038218	  7.27205204	  0.99809450	  0.99899414  0.49316011
+4961	 -6.27267602	 -0.00062355	  0.00038211	  7.27205247	  0.99809488	  0.99899434  0.49316016
+4962	 -6.27267632	 -0.00062342	  0.00038203	  7.27205289	  0.99809527	  0.99899455  0.49316020
+4963	 -6.27267662	 -0.00062330	  0.00038195	  7.27205332	  0.99809565	  0.99899475  0.49316023
+4964	 -6.27267692	 -0.00062317	  0.00038188	  7.27205375	  0.99809603	  0.99899495  0.49316033
+4965	 -6.27267722	 -0.00062305	  0.00038180	  7.27205417	  0.99809642	  0.99899515  0.49316032
+4966	 -6.27267752	 -0.00062292	  0.00038172	  7.27205460	  0.99809680	  0.99899536  0.49316037
+4967	 -6.27267782	 -0.00062280	  0.00038164	  7.27205502	  0.99809718	  0.99899556  0.49316043
+4968	 -6.27267812	 -0.00062267	  0.00038157	  7.27205545	  0.99809757	  0.99899576  0.49316049
+4969	 -6.27267842	 -0.00062255	  0.00038149	  7.27205587	  0.99809795	  0.99899596  0.49316053
+4970	 -6.27267872	 -0.00062242	  0.00038141	  7.27205630	  0.99809833	  0.99899616  0.49316060
+4971	 -6.27267902	 -0.00062230	  0.00038134	  7.27205672	  0.99809871	  0.99899637  0.49316061
+4972	 -6.27267932	 -0.00062217	  0.00038126	  7.27205715	  0.99809910	  0.99899657  0.49316068
+4973	 -6.27267962	 -0.00062205	  0.00038118	  7.27205757	  0.99809948	  0.99899677  0.49316072
+4974	 -6.27267992	 -0.00062192	  0.00038111	  7.27205799	  0.99809986	  0.99899697  0.49316074
+4975	 -6.27268021	 -0.00062180	  0.00038103	  7.27205842	  0.99810024	  0.99899717  0.49316079
+4976	 -6.27268051	 -0.00062167	  0.00038095	  7.27205884	  0.99810062	  0.99899737  0.49316083
+4977	 -6.27268081	 -0.00062155	  0.00038088	  7.27205927	  0.99810100	  0.99899757  0.49316088
+4978	 -6.27268111	 -0.00062142	  0.00038080	  7.27205969	  0.99810139	  0.99899778  0.49316090
+4979	 -6.27268141	 -0.00062130	  0.00038072	  7.27206011	  0.99810177	  0.99899798  0.49316099
+4980	 -6.27268171	 -0.00062117	  0.00038065	  7.27206053	  0.99810215	  0.99899818  0.49316102
+4981	 -6.27268201	 -0.00062105	  0.00038057	  7.27206096	  0.99810253	  0.99899838  0.49316107
+4982	 -6.27268230	 -0.00062092	  0.00038050	  7.27206138	  0.99810291	  0.99899858  0.49316107
+4983	 -6.27268260	 -0.00062080	  0.00038042	  7.27206180	  0.99810329	  0.99899878  0.49316112
+4984	 -6.27268290	 -0.00062067	  0.00038034	  7.27206223	  0.99810367	  0.99899898  0.49316121
+4985	 -6.27268320	 -0.00062055	  0.00038027	  7.27206265	  0.99810405	  0.99899918  0.49316122
+4986	 -6.27268350	 -0.00062043	  0.00038019	  7.27206307	  0.99810443	  0.99899938  0.49316127
+4987	 -6.27268379	 -0.00062030	  0.00038011	  7.27206349	  0.99810481	  0.99899958  0.49316133
+4988	 -6.27268409	 -0.00062018	  0.00038004	  7.27206391	  0.99810519	  0.99899978  0.49316137
+4989	 -6.27268439	 -0.00062005	  0.00037996	  7.27206433	  0.99810557	  0.99899999  0.49316141
+4990	 -6.27268468	 -0.00061993	  0.00037989	  7.27206476	  0.99810595	  0.99900019  0.49316145
+4991	 -6.27268498	 -0.00061980	  0.00037981	  7.27206518	  0.99810633	  0.99900039  0.49316150
+4992	 -6.27268528	 -0.00061968	  0.00037973	  7.27206560	  0.99810671	  0.99900059  0.49316152
+4993	 -6.27268558	 -0.00061956	  0.00037966	  7.27206602	  0.99810709	  0.99900079  0.49316158
+4994	 -6.27268587	 -0.00061943	  0.00037958	  7.27206644	  0.99810747	  0.99900099  0.49316160
+4995	 -6.27268617	 -0.00061931	  0.00037951	  7.27206686	  0.99810785	  0.99900119  0.49316174
+4996	 -6.27268647	 -0.00061919	  0.00037943	  7.27206728	  0.99810823	  0.99900139  0.49316174
+4997	 -6.27268676	 -0.00061906	  0.00037935	  7.27206770	  0.99810860	  0.99900159  0.49316173
+4998	 -6.27268706	 -0.00061894	  0.00037928	  7.27206812	  0.99810898	  0.99900179  0.49316182
+4999	 -6.27268735	 -0.00061881	  0.00037920	  7.27206854	  0.99810936	  0.99900198  0.49316185
+5000	 -6.27268765	 -0.00061869	  0.00037913	  7.27206896	  0.99810974	  0.99900218  0.49316190
+5001	 -6.27268795	 -0.00061857	  0.00037905	  7.27206938	  0.99811012	  0.99900238  0.49316194
+5002	 -6.27268824	 -0.00061844	  0.00037897	  7.27206980	  0.99811049	  0.99900258  0.49316199
+5003	 -6.27268854	 -0.00061832	  0.00037890	  7.27207022	  0.99811087	  0.99900278  0.49316201
+5004	 -6.27268883	 -0.00061820	  0.00037882	  7.27207064	  0.99811125	  0.99900298  0.49316207
+5005	 -6.27268913	 -0.00061807	  0.00037875	  7.27207106	  0.99811163	  0.99900318  0.49316215
+5006	 -6.27268942	 -0.00061795	  0.00037867	  7.27207147	  0.99811200	  0.99900338  0.49316215
+5007	 -6.27268972	 -0.00061783	  0.00037860	  7.27207189	  0.99811238	  0.99900358  0.49316222
+5008	 -6.27269001	 -0.00061770	  0.00037852	  7.27207231	  0.99811276	  0.99900378  0.49316225
+5009	 -6.27269031	 -0.00061758	  0.00037844	  7.27207273	  0.99811313	  0.99900398  0.49316226
+5010	 -6.27269060	 -0.00061746	  0.00037837	  7.27207315	  0.99811351	  0.99900418  0.49316232
+5011	 -6.27269090	 -0.00061733	  0.00037829	  7.27207356	  0.99811389	  0.99900437  0.49316241
+5012	 -6.27269119	 -0.00061721	  0.00037822	  7.27207398	  0.99811426	  0.99900457  0.49316240
+5013	 -6.27269149	 -0.00061709	  0.00037814	  7.27207440	  0.99811464	  0.99900477  0.49316244
+5014	 -6.27269178	 -0.00061696	  0.00037807	  7.27207482	  0.99811502	  0.99900497  0.49316250
+5015	 -6.27269208	 -0.00061684	  0.00037799	  7.27207523	  0.99811539	  0.99900517  0.49316255
+5016	 -6.27269237	 -0.00061672	  0.00037792	  7.27207565	  0.99811577	  0.99900537  0.49316260
+5017	 -6.27269266	 -0.00061660	  0.00037784	  7.27207607	  0.99811614	  0.99900556  0.49316268
+5018	 -6.27269296	 -0.00061647	  0.00037777	  7.27207648	  0.99811652	  0.99900576  0.49316264
+5019	 -6.27269325	 -0.00061635	  0.00037769	  7.27207690	  0.99811689	  0.99900596  0.49316274
+5020	 -6.27269354	 -0.00061623	  0.00037762	  7.27207732	  0.99811727	  0.99900616  0.49316275
+5021	 -6.27269384	 -0.00061610	  0.00037754	  7.27207773	  0.99811764	  0.99900636  0.49316280
+5022	 -6.27269413	 -0.00061598	  0.00037746	  7.27207815	  0.99811802	  0.99900655  0.49316280
+5023	 -6.27269442	 -0.00061586	  0.00037739	  7.27207857	  0.99811839	  0.99900675  0.49316288
+5024	 -6.27269472	 -0.00061574	  0.00037731	  7.27207898	  0.99811877	  0.99900695  0.49316293
+5025	 -6.27269501	 -0.00061561	  0.00037724	  7.27207940	  0.99811914	  0.99900715  0.49316299
+5026	 -6.27269530	 -0.00061549	  0.00037716	  7.27207981	  0.99811952	  0.99900734  0.49316305
+5027	 -6.27269560	 -0.00061537	  0.00037709	  7.27208023	  0.99811989	  0.99900754  0.49316305
+5028	 -6.27269589	 -0.00061525	  0.00037701	  7.27208064	  0.99812026	  0.99900774  0.49316309
+5029	 -6.27269618	 -0.00061512	  0.00037694	  7.27208106	  0.99812064	  0.99900794  0.49316319
+5030	 -6.27269647	 -0.00061500	  0.00037686	  7.27208147	  0.99812101	  0.99900813  0.49316320
+5031	 -6.27269677	 -0.00061488	  0.00037679	  7.27208189	  0.99812138	  0.99900833  0.49316326
+5032	 -6.27269706	 -0.00061476	  0.00037671	  7.27208230	  0.99812176	  0.99900853  0.49316331
+5033	 -6.27269735	 -0.00061464	  0.00037664	  7.27208271	  0.99812213	  0.99900872  0.49316334
+5034	 -6.27269764	 -0.00061451	  0.00037656	  7.27208313	  0.99812250	  0.99900892  0.49316337
+5035	 -6.27269793	 -0.00061439	  0.00037649	  7.27208354	  0.99812288	  0.99900912  0.49316343
+5036	 -6.27269823	 -0.00061427	  0.00037642	  7.27208396	  0.99812325	  0.99900931  0.49316350
+5037	 -6.27269852	 -0.00061415	  0.00037634	  7.27208437	  0.99812362	  0.99900951  0.49316348
+5038	 -6.27269881	 -0.00061403	  0.00037627	  7.27208478	  0.99812399	  0.99900971  0.49316356
+5039	 -6.27269910	 -0.00061390	  0.00037619	  7.27208520	  0.99812437	  0.99900990  0.49316359
+5040	 -6.27269939	 -0.00061378	  0.00037612	  7.27208561	  0.99812474	  0.99901010  0.49316364
+5041	 -6.27269968	 -0.00061366	  0.00037604	  7.27208602	  0.99812511	  0.99901030  0.49316368
+5042	 -6.27269997	 -0.00061354	  0.00037597	  7.27208643	  0.99812548	  0.99901049  0.49316372
+5043	 -6.27270027	 -0.00061342	  0.00037589	  7.27208685	  0.99812585	  0.99901069  0.49316379
+5044	 -6.27270056	 -0.00061330	  0.00037582	  7.27208726	  0.99812623	  0.99901089  0.49316380
+5045	 -6.27270085	 -0.00061318	  0.00037574	  7.27208767	  0.99812660	  0.99901108  0.49316383
+5046	 -6.27270114	 -0.00061305	  0.00037567	  7.27208808	  0.99812697	  0.99901128  0.49316392
+5047	 -6.27270143	 -0.00061293	  0.00037559	  7.27208850	  0.99812734	  0.99901147  0.49316393
+5048	 -6.27270172	 -0.00061281	  0.00037552	  7.27208891	  0.99812771	  0.99901167  0.49316398
+5049	 -6.27270201	 -0.00061269	  0.00037545	  7.27208932	  0.99812808	  0.99901186  0.49316403
+5050	 -6.27270230	 -0.00061257	  0.00037537	  7.27208973	  0.99812845	  0.99901206  0.49316407
+5051	 -6.27270259	 -0.00061245	  0.00037530	  7.27209014	  0.99812882	  0.99901226  0.49316411
+5052	 -6.27270288	 -0.00061233	  0.00037522	  7.27209055	  0.99812919	  0.99901245  0.49316419
+5053	 -6.27270317	 -0.00061221	  0.00037515	  7.27209096	  0.99812956	  0.99901265  0.49316420
+5054	 -6.27270346	 -0.00061208	  0.00037507	  7.27209137	  0.99812993	  0.99901284  0.49316424
+5055	 -6.27270375	 -0.00061196	  0.00037500	  7.27209178	  0.99813030	  0.99901304  0.49316431
+5056	 -6.27270404	 -0.00061184	  0.00037493	  7.27209219	  0.99813067	  0.99901323  0.49316432
+5057	 -6.27270433	 -0.00061172	  0.00037485	  7.27209260	  0.99813104	  0.99901343  0.49316435
+5058	 -6.27270462	 -0.00061160	  0.00037478	  7.27209301	  0.99813141	  0.99901362  0.49316437
+5059	 -6.27270490	 -0.00061148	  0.00037470	  7.27209342	  0.99813178	  0.99901382  0.49316447
+5060	 -6.27270519	 -0.00061136	  0.00037463	  7.27209383	  0.99813215	  0.99901401  0.49316452
+5061	 -6.27270548	 -0.00061124	  0.00037456	  7.27209424	  0.99813252	  0.99901421  0.49316453
+5062	 -6.27270577	 -0.00061112	  0.00037448	  7.27209465	  0.99813289	  0.99901440  0.49316460
+5063	 -6.27270606	 -0.00061100	  0.00037441	  7.27209506	  0.99813326	  0.99901460  0.49316462
+5064	 -6.27270635	 -0.00061088	  0.00037433	  7.27209547	  0.99813362	  0.99901479  0.49316468
+5065	 -6.27270664	 -0.00061076	  0.00037426	  7.27209588	  0.99813399	  0.99901498  0.49316472
+5066	 -6.27270692	 -0.00061064	  0.00037419	  7.27209629	  0.99813436	  0.99901518  0.49316476
+5067	 -6.27270721	 -0.00061051	  0.00037411	  7.27209670	  0.99813473	  0.99901537  0.49316483
+5068	 -6.27270750	 -0.00061039	  0.00037404	  7.27209711	  0.99813510	  0.99901557  0.49316482
+5069	 -6.27270779	 -0.00061027	  0.00037396	  7.27209751	  0.99813547	  0.99901576  0.49316493
+5070	 -6.27270808	 -0.00061015	  0.00037389	  7.27209792	  0.99813583	  0.99901596  0.49316495
+5071	 -6.27270836	 -0.00061003	  0.00037382	  7.27209833	  0.99813620	  0.99901615  0.49316498
+5072	 -6.27270865	 -0.00060991	  0.00037374	  7.27209874	  0.99813657	  0.99901634  0.49316501
+5073	 -6.27270894	 -0.00060979	  0.00037367	  7.27209915	  0.99813694	  0.99901654  0.49316504
+5074	 -6.27270923	 -0.00060967	  0.00037360	  7.27209955	  0.99813730	  0.99901673  0.49316509
+5075	 -6.27270951	 -0.00060955	  0.00037352	  7.27209996	  0.99813767	  0.99901692  0.49316516
+5076	 -6.27270980	 -0.00060943	  0.00037345	  7.27210037	  0.99813804	  0.99901712  0.49316521
+5077	 -6.27271009	 -0.00060931	  0.00037338	  7.27210078	  0.99813840	  0.99901731  0.49316522
+5078	 -6.27271038	 -0.00060919	  0.00037330	  7.27210118	  0.99813877	  0.99901751  0.49316529
+5079	 -6.27271066	 -0.00060907	  0.00037323	  7.27210159	  0.99813914	  0.99901770  0.49316533
+5080	 -6.27271095	 -0.00060895	  0.00037315	  7.27210200	  0.99813950	  0.99901789  0.49316538
+5081	 -6.27271124	 -0.00060883	  0.00037308	  7.27210240	  0.99813987	  0.99901808  0.49316545
+5082	 -6.27271152	 -0.00060871	  0.00037301	  7.27210281	  0.99814023	  0.99901828  0.49316550
+5083	 -6.27271181	 -0.00060859	  0.00037293	  7.27210321	  0.99814060	  0.99901847  0.49316550
+5084	 -6.27271209	 -0.00060847	  0.00037286	  7.27210362	  0.99814097	  0.99901866  0.49316554
+5085	 -6.27271238	 -0.00060836	  0.00037279	  7.27210403	  0.99814133	  0.99901886  0.49316555
+5086	 -6.27271267	 -0.00060824	  0.00037271	  7.27210443	  0.99814170	  0.99901905  0.49316564
+5087	 -6.27271295	 -0.00060812	  0.00037264	  7.27210484	  0.99814206	  0.99901924  0.49316569
+5088	 -6.27271324	 -0.00060800	  0.00037257	  7.27210524	  0.99814243	  0.99901944  0.49316569
+5089	 -6.27271352	 -0.00060788	  0.00037249	  7.27210565	  0.99814279	  0.99901963  0.49316572
+5090	 -6.27271381	 -0.00060776	  0.00037242	  7.27210605	  0.99814316	  0.99901982  0.49316582
+5091	 -6.27271410	 -0.00060764	  0.00037235	  7.27210646	  0.99814352	  0.99902001  0.49316585
+5092	 -6.27271438	 -0.00060752	  0.00037228	  7.27210686	  0.99814389	  0.99902021  0.49316587
+5093	 -6.27271467	 -0.00060740	  0.00037220	  7.27210727	  0.99814425	  0.99902040  0.49316592
+5094	 -6.27271495	 -0.00060728	  0.00037213	  7.27210767	  0.99814461	  0.99902059  0.49316598
+5095	 -6.27271524	 -0.00060716	  0.00037206	  7.27210807	  0.99814498	  0.99902078  0.49316599
+5096	 -6.27271552	 -0.00060704	  0.00037198	  7.27210848	  0.99814534	  0.99902097  0.49316604
+5097	 -6.27271581	 -0.00060692	  0.00037191	  7.27210888	  0.99814571	  0.99902117  0.49316608
+5098	 -6.27271609	 -0.00060680	  0.00037184	  7.27210929	  0.99814607	  0.99902136  0.49316611
+5099	 -6.27271637	 -0.00060669	  0.00037176	  7.27210969	  0.99814643	  0.99902155  0.49316616
+5100	 -6.27271666	 -0.00060657	  0.00037169	  7.27211009	  0.99814680	  0.99902174  0.49316618
+5101	 -6.27271694	 -0.00060645	  0.00037162	  7.27211050	  0.99814716	  0.99902193  0.49316624
+5102	 -6.27271723	 -0.00060633	  0.00037155	  7.27211090	  0.99814752	  0.99902213  0.49316630
+5103	 -6.27271751	 -0.00060621	  0.00037147	  7.27211130	  0.99814789	  0.99902232  0.49316633
+5104	 -6.27271780	 -0.00060609	  0.00037140	  7.27211170	  0.99814825	  0.99902251  0.49316640
+5105	 -6.27271808	 -0.00060597	  0.00037133	  7.27211211	  0.99814861	  0.99902270  0.49316642
+5106	 -6.27271836	 -0.00060585	  0.00037125	  7.27211251	  0.99814897	  0.99902289  0.49316649
+5107	 -6.27271865	 -0.00060574	  0.00037118	  7.27211291	  0.99814934	  0.99902308  0.49316653
+5108	 -6.27271893	 -0.00060562	  0.00037111	  7.27211331	  0.99814970	  0.99902327  0.49316657
+5109	 -6.27271921	 -0.00060550	  0.00037104	  7.27211371	  0.99815006	  0.99902346  0.49316659
+5110	 -6.27271950	 -0.00060538	  0.00037096	  7.27211412	  0.99815042	  0.99902366  0.49316664
+5111	 -6.27271978	 -0.00060526	  0.00037089	  7.27211452	  0.99815079	  0.99902385  0.49316670
+5112	 -6.27272006	 -0.00060514	  0.00037082	  7.27211492	  0.99815115	  0.99902404  0.49316670
+5113	 -6.27272035	 -0.00060503	  0.00037075	  7.27211532	  0.99815151	  0.99902423  0.49316673
+5114	 -6.27272063	 -0.00060491	  0.00037067	  7.27211572	  0.99815187	  0.99902442  0.49316679
+5115	 -6.27272091	 -0.00060479	  0.00037060	  7.27211612	  0.99815223	  0.99902461  0.49316685
+5116	 -6.27272120	 -0.00060467	  0.00037053	  7.27211652	  0.99815259	  0.99902480  0.49316688
+5117	 -6.27272148	 -0.00060455	  0.00037046	  7.27211692	  0.99815295	  0.99902499  0.49316692
+5118	 -6.27272176	 -0.00060444	  0.00037038	  7.27211732	  0.99815331	  0.99902518  0.49316699
+5119	 -6.27272204	 -0.00060432	  0.00037031	  7.27211773	  0.99815367	  0.99902537  0.49316698
+5120	 -6.27272232	 -0.00060420	  0.00037024	  7.27211813	  0.99815404	  0.99902556  0.49316707
+5121	 -6.27272261	 -0.00060408	  0.00037017	  7.27211853	  0.99815440	  0.99902575  0.49316710
+5122	 -6.27272289	 -0.00060396	  0.00037009	  7.27211893	  0.99815476	  0.99902594  0.49316715
+5123	 -6.27272317	 -0.00060385	  0.00037002	  7.27211933	  0.99815512	  0.99902613  0.49316718
+5124	 -6.27272345	 -0.00060373	  0.00036995	  7.27211972	  0.99815548	  0.99902632  0.49316722
+5125	 -6.27272373	 -0.00060361	  0.00036988	  7.27212012	  0.99815584	  0.99902651  0.49316726
+5126	 -6.27272402	 -0.00060349	  0.00036981	  7.27212052	  0.99815620	  0.99902670  0.49316729
+5127	 -6.27272430	 -0.00060337	  0.00036973	  7.27212092	  0.99815656	  0.99902689  0.49316735
+5128	 -6.27272458	 -0.00060326	  0.00036966	  7.27212132	  0.99815691	  0.99902708  0.49316741
+5129	 -6.27272486	 -0.00060314	  0.00036959	  7.27212172	  0.99815727	  0.99902727  0.49316741
+5130	 -6.27272514	 -0.00060302	  0.00036952	  7.27212212	  0.99815763	  0.99902746  0.49316748
+5131	 -6.27272542	 -0.00060290	  0.00036945	  7.27212252	  0.99815799	  0.99902765  0.49316753
+5132	 -6.27272570	 -0.00060279	  0.00036937	  7.27212292	  0.99815835	  0.99902784  0.49316756
+5133	 -6.27272598	 -0.00060267	  0.00036930	  7.27212331	  0.99815871	  0.99902803  0.49316761
+5134	 -6.27272626	 -0.00060255	  0.00036923	  7.27212371	  0.99815907	  0.99902822  0.49316767
+5135	 -6.27272654	 -0.00060244	  0.00036916	  7.27212411	  0.99815943	  0.99902841  0.49316768
+5136	 -6.27272683	 -0.00060232	  0.00036909	  7.27212451	  0.99815978	  0.99902860  0.49316772
+5137	 -6.27272711	 -0.00060220	  0.00036901	  7.27212490	  0.99816014	  0.99902879  0.49316778
+5138	 -6.27272739	 -0.00060208	  0.00036894	  7.27212530	  0.99816050	  0.99902897  0.49316778
+5139	 -6.27272767	 -0.00060197	  0.00036887	  7.27212570	  0.99816086	  0.99902916  0.49316783
+5140	 -6.27272795	 -0.00060185	  0.00036880	  7.27212610	  0.99816122	  0.99902935  0.49316788
+5141	 -6.27272823	 -0.00060173	  0.00036873	  7.27212649	  0.99816157	  0.99902954  0.49316787
+5142	 -6.27272851	 -0.00060162	  0.00036865	  7.27212689	  0.99816193	  0.99902973  0.49316799
+5143	 -6.27272879	 -0.00060150	  0.00036858	  7.27212729	  0.99816229	  0.99902992  0.49316801
+5144	 -6.27272907	 -0.00060138	  0.00036851	  7.27212768	  0.99816265	  0.99903011  0.49316805
+5145	 -6.27272934	 -0.00060127	  0.00036844	  7.27212808	  0.99816300	  0.99903029  0.49316810
+5146	 -6.27272962	 -0.00060115	  0.00036837	  7.27212848	  0.99816336	  0.99903048  0.49316812
+5147	 -6.27272990	 -0.00060103	  0.00036830	  7.27212887	  0.99816372	  0.99903067  0.49316815
+5148	 -6.27273018	 -0.00060092	  0.00036823	  7.27212927	  0.99816407	  0.99903086  0.49316824
+5149	 -6.27273046	 -0.00060080	  0.00036815	  7.27212966	  0.99816443	  0.99903105  0.49316825
+5150	 -6.27273074	 -0.00060068	  0.00036808	  7.27213006	  0.99816479	  0.99903124  0.49316832
+5151	 -6.27273102	 -0.00060057	  0.00036801	  7.27213045	  0.99816514	  0.99903142  0.49316835
+5152	 -6.27273130	 -0.00060045	  0.00036794	  7.27213085	  0.99816550	  0.99903161  0.49316839
+5153	 -6.27273158	 -0.00060033	  0.00036787	  7.27213124	  0.99816585	  0.99903180  0.49316844
+5154	 -6.27273186	 -0.00060022	  0.00036780	  7.27213164	  0.99816621	  0.99903199  0.49316848
+5155	 -6.27273213	 -0.00060010	  0.00036773	  7.27213203	  0.99816657	  0.99903218  0.49316850
+5156	 -6.27273241	 -0.00059998	  0.00036765	  7.27213243	  0.99816692	  0.99903236  0.49316856
+5157	 -6.27273269	 -0.00059987	  0.00036758	  7.27213282	  0.99816728	  0.99903255  0.49316861
+5158	 -6.27273297	 -0.00059975	  0.00036751	  7.27213322	  0.99816763	  0.99903274  0.49316864
+5159	 -6.27273325	 -0.00059963	  0.00036744	  7.27213361	  0.99816799	  0.99903293  0.49316869
+5160	 -6.27273352	 -0.00059952	  0.00036737	  7.27213401	  0.99816834	  0.99903311  0.49316872
+5161	 -6.27273380	 -0.00059940	  0.00036730	  7.27213440	  0.99816870	  0.99903330  0.49316876
+5162	 -6.27273408	 -0.00059929	  0.00036723	  7.27213479	  0.99816905	  0.99903349  0.49316877
+5163	 -6.27273436	 -0.00059917	  0.00036716	  7.27213519	  0.99816941	  0.99903367  0.49316887
+5164	 -6.27273463	 -0.00059905	  0.00036708	  7.27213558	  0.99816976	  0.99903386  0.49316888
+5165	 -6.27273491	 -0.00059894	  0.00036701	  7.27213597	  0.99817012	  0.99903405  0.49316895
+5166	 -6.27273519	 -0.00059882	  0.00036694	  7.27213637	  0.99817047	  0.99903424  0.49316897
+5167	 -6.27273547	 -0.00059871	  0.00036687	  7.27213676	  0.99817082	  0.99903442  0.49316901
+5168	 -6.27273574	 -0.00059859	  0.00036680	  7.27213715	  0.99817118	  0.99903461  0.49316906
+5169	 -6.27273602	 -0.00059848	  0.00036673	  7.27213754	  0.99817153	  0.99903480  0.49316911
+5170	 -6.27273630	 -0.00059836	  0.00036666	  7.27213794	  0.99817189	  0.99903498  0.49316913
+5171	 -6.27273657	 -0.00059824	  0.00036659	  7.27213833	  0.99817224	  0.99903517  0.49316914
+5172	 -6.27273685	 -0.00059813	  0.00036652	  7.27213872	  0.99817259	  0.99903535  0.49316924
+5173	 -6.27273713	 -0.00059801	  0.00036645	  7.27213911	  0.99817295	  0.99903554  0.49316926
+5174	 -6.27273740	 -0.00059790	  0.00036637	  7.27213951	  0.99817330	  0.99903573  0.49316930
+5175	 -6.27273768	 -0.00059778	  0.00036630	  7.27213990	  0.99817365	  0.99903591  0.49316938
+5176	 -6.27273796	 -0.00059767	  0.00036623	  7.27214029	  0.99817400	  0.99903610  0.49316938
+5177	 -6.27273823	 -0.00059755	  0.00036616	  7.27214068	  0.99817436	  0.99903629  0.49316938
+5178	 -6.27273851	 -0.00059744	  0.00036609	  7.27214107	  0.99817471	  0.99903647  0.49316946
+5179	 -6.27273878	 -0.00059732	  0.00036602	  7.27214146	  0.99817506	  0.99903666  0.49316948
+5180	 -6.27273906	 -0.00059721	  0.00036595	  7.27214185	  0.99817541	  0.99903684  0.49316954
+5181	 -6.27273933	 -0.00059709	  0.00036588	  7.27214224	  0.99817577	  0.99903703  0.49316961
+5182	 -6.27273961	 -0.00059698	  0.00036581	  7.27214263	  0.99817612	  0.99903722  0.49316964
+5183	 -6.27273989	 -0.00059686	  0.00036574	  7.27214303	  0.99817647	  0.99903740  0.49316966
+5184	 -6.27274016	 -0.00059674	  0.00036567	  7.27214342	  0.99817682	  0.99903759  0.49316973
+5185	 -6.27274044	 -0.00059663	  0.00036560	  7.27214381	  0.99817717	  0.99903777  0.49316976
+5186	 -6.27274071	 -0.00059651	  0.00036553	  7.27214420	  0.99817752	  0.99903796  0.49316978
+5187	 -6.27274099	 -0.00059640	  0.00036546	  7.27214459	  0.99817788	  0.99903814  0.49316985
+5188	 -6.27274126	 -0.00059629	  0.00036539	  7.27214498	  0.99817823	  0.99903833  0.49316985
+5189	 -6.27274154	 -0.00059617	  0.00036532	  7.27214537	  0.99817858	  0.99903851  0.49316990
+5190	 -6.27274181	 -0.00059606	  0.00036525	  7.27214575	  0.99817893	  0.99903870  0.49316996
+5191	 -6.27274208	 -0.00059594	  0.00036517	  7.27214614	  0.99817928	  0.99903888  0.49317001
+5192	 -6.27274236	 -0.00059583	  0.00036510	  7.27214653	  0.99817963	  0.99903907  0.49317000
+5193	 -6.27274263	 -0.00059571	  0.00036503	  7.27214692	  0.99817998	  0.99903925  0.49317004
+5194	 -6.27274291	 -0.00059560	  0.00036496	  7.27214731	  0.99818033	  0.99903944  0.49317008
+5195	 -6.27274318	 -0.00059548	  0.00036489	  7.27214770	  0.99818068	  0.99903962  0.49317014
+5196	 -6.27274346	 -0.00059537	  0.00036482	  7.27214809	  0.99818103	  0.99903981  0.49317022
+5197	 -6.27274373	 -0.00059525	  0.00036475	  7.27214848	  0.99818138	  0.99903999  0.49317024
+5198	 -6.27274400	 -0.00059514	  0.00036468	  7.27214886	  0.99818173	  0.99904018  0.49317029
+5199	 -6.27274428	 -0.00059502	  0.00036461	  7.27214925	  0.99818208	  0.99904036  0.49317032
+5200	 -6.27274455	 -0.00059491	  0.00036454	  7.27214964	  0.99818243	  0.99904055  0.49317037
+5201	 -6.27274482	 -0.00059480	  0.00036447	  7.27215003	  0.99818278	  0.99904073  0.49317042
+5202	 -6.27274510	 -0.00059468	  0.00036440	  7.27215042	  0.99818313	  0.99904092  0.49317048
+5203	 -6.27274537	 -0.00059457	  0.00036433	  7.27215080	  0.99818348	  0.99904110  0.49317047
+5204	 -6.27274564	 -0.00059445	  0.00036426	  7.27215119	  0.99818383	  0.99904128  0.49317056
+5205	 -6.27274592	 -0.00059434	  0.00036419	  7.27215158	  0.99818418	  0.99904147  0.49317055
+5206	 -6.27274619	 -0.00059422	  0.00036412	  7.27215197	  0.99818452	  0.99904165  0.49317062
+5207	 -6.27274646	 -0.00059411	  0.00036405	  7.27215235	  0.99818487	  0.99904184  0.49317064
+5208	 -6.27274674	 -0.00059400	  0.00036398	  7.27215274	  0.99818522	  0.99904202  0.49317066
+5209	 -6.27274701	 -0.00059388	  0.00036391	  7.27215313	  0.99818557	  0.99904220  0.49317073
+5210	 -6.27274728	 -0.00059377	  0.00036384	  7.27215351	  0.99818592	  0.99904239  0.49317076
+5211	 -6.27274755	 -0.00059365	  0.00036377	  7.27215390	  0.99818627	  0.99904257  0.49317082
+5212	 -6.27274783	 -0.00059354	  0.00036370	  7.27215428	  0.99818661	  0.99904276  0.49317086
+5213	 -6.27274810	 -0.00059343	  0.00036363	  7.27215467	  0.99818696	  0.99904294  0.49317091
+5214	 -6.27274837	 -0.00059331	  0.00036356	  7.27215506	  0.99818731	  0.99904312  0.49317096
+5215	 -6.27274864	 -0.00059320	  0.00036349	  7.27215544	  0.99818766	  0.99904331  0.49317092
+5216	 -6.27274891	 -0.00059309	  0.00036342	  7.27215583	  0.99818800	  0.99904349  0.49317097
+5217	 -6.27274919	 -0.00059297	  0.00036335	  7.27215621	  0.99818835	  0.99904367  0.49317108
+5218	 -6.27274946	 -0.00059286	  0.00036329	  7.27215660	  0.99818870	  0.99904386  0.49317108
+5219	 -6.27274973	 -0.00059275	  0.00036322	  7.27215698	  0.99818905	  0.99904404  0.49317113
+5220	 -6.27275000	 -0.00059263	  0.00036315	  7.27215737	  0.99818939	  0.99904422  0.49317119
+5221	 -6.27275027	 -0.00059252	  0.00036308	  7.27215775	  0.99818974	  0.99904440  0.49317125
+5222	 -6.27275054	 -0.00059241	  0.00036301	  7.27215814	  0.99819009	  0.99904459  0.49317124
+5223	 -6.27275081	 -0.00059229	  0.00036294	  7.27215852	  0.99819043	  0.99904477  0.49317130
+5224	 -6.27275109	 -0.00059218	  0.00036287	  7.27215891	  0.99819078	  0.99904495  0.49317131
+5225	 -6.27275136	 -0.00059207	  0.00036280	  7.27215929	  0.99819113	  0.99904514  0.49317136
+5226	 -6.27275163	 -0.00059195	  0.00036273	  7.27215968	  0.99819147	  0.99904532  0.49317137
+5227	 -6.27275190	 -0.00059184	  0.00036266	  7.27216006	  0.99819182	  0.99904550  0.49317148
+5228	 -6.27275217	 -0.00059173	  0.00036259	  7.27216044	  0.99819216	  0.99904568  0.49317152
+5229	 -6.27275244	 -0.00059161	  0.00036252	  7.27216083	  0.99819251	  0.99904587  0.49317157
+5230	 -6.27275271	 -0.00059150	  0.00036245	  7.27216121	  0.99819285	  0.99904605  0.49317157
+5231	 -6.27275298	 -0.00059139	  0.00036238	  7.27216159	  0.99819320	  0.99904623  0.49317163
+5232	 -6.27275325	 -0.00059127	  0.00036231	  7.27216198	  0.99819355	  0.99904641  0.49317168
+5233	 -6.27275352	 -0.00059116	  0.00036224	  7.27216236	  0.99819389	  0.99904660  0.49317166
+5234	 -6.27275379	 -0.00059105	  0.00036217	  7.27216274	  0.99819424	  0.99904678  0.49317177
+5235	 -6.27275406	 -0.00059094	  0.00036211	  7.27216313	  0.99819458	  0.99904696  0.49317179
+5236	 -6.27275433	 -0.00059082	  0.00036204	  7.27216351	  0.99819493	  0.99904714  0.49317185
+5237	 -6.27275460	 -0.00059071	  0.00036197	  7.27216389	  0.99819527	  0.99904732  0.49317189
+5238	 -6.27275487	 -0.00059060	  0.00036190	  7.27216427	  0.99819561	  0.99904751  0.49317188
+5239	 -6.27275514	 -0.00059048	  0.00036183	  7.27216466	  0.99819596	  0.99904769  0.49317197
+5240	 -6.27275541	 -0.00059037	  0.00036176	  7.27216504	  0.99819630	  0.99904787  0.49317199
+5241	 -6.27275568	 -0.00059026	  0.00036169	  7.27216542	  0.99819665	  0.99904805  0.49317206
+5242	 -6.27275595	 -0.00059015	  0.00036162	  7.27216580	  0.99819699	  0.99904823  0.49317206
+5243	 -6.27275622	 -0.00059003	  0.00036155	  7.27216618	  0.99819733	  0.99904841  0.49317210
+5244	 -6.27275649	 -0.00058992	  0.00036148	  7.27216656	  0.99819768	  0.99904859  0.49317215
+5245	 -6.27275675	 -0.00058981	  0.00036141	  7.27216695	  0.99819802	  0.99904878  0.49317218
+5246	 -6.27275702	 -0.00058970	  0.00036135	  7.27216733	  0.99819837	  0.99904896  0.49317220
+5247	 -6.27275729	 -0.00058958	  0.00036128	  7.27216771	  0.99819871	  0.99904914  0.49317224
+5248	 -6.27275756	 -0.00058947	  0.00036121	  7.27216809	  0.99819905	  0.99904932  0.49317231
+5249	 -6.27275783	 -0.00058936	  0.00036114	  7.27216847	  0.99819939	  0.99904950  0.49317228
+5250	 -6.27275810	 -0.00058925	  0.00036107	  7.27216885	  0.99819974	  0.99904968  0.49317238
+5251	 -6.27275837	 -0.00058914	  0.00036100	  7.27216923	  0.99820008	  0.99904986  0.49317241
+5252	 -6.27275863	 -0.00058902	  0.00036093	  7.27216961	  0.99820042	  0.99905004  0.49317245
+5253	 -6.27275890	 -0.00058891	  0.00036086	  7.27216999	  0.99820077	  0.99905022  0.49317253
+5254	 -6.27275917	 -0.00058880	  0.00036080	  7.27217037	  0.99820111	  0.99905040  0.49317256
+5255	 -6.27275944	 -0.00058869	  0.00036073	  7.27217075	  0.99820145	  0.99905059  0.49317260
+5256	 -6.27275971	 -0.00058858	  0.00036066	  7.27217113	  0.99820179	  0.99905077  0.49317263
+5257	 -6.27275997	 -0.00058846	  0.00036059	  7.27217151	  0.99820213	  0.99905095  0.49317270
+5258	 -6.27276024	 -0.00058835	  0.00036052	  7.27217189	  0.99820248	  0.99905113  0.49317272
+5259	 -6.27276051	 -0.00058824	  0.00036045	  7.27217227	  0.99820282	  0.99905131  0.49317275
+5260	 -6.27276078	 -0.00058813	  0.00036038	  7.27217265	  0.99820316	  0.99905149  0.49317277
+5261	 -6.27276104	 -0.00058802	  0.00036032	  7.27217303	  0.99820350	  0.99905167  0.49317281
+5262	 -6.27276131	 -0.00058790	  0.00036025	  7.27217341	  0.99820384	  0.99905185  0.49317287
+5263	 -6.27276158	 -0.00058779	  0.00036018	  7.27217378	  0.99820418	  0.99905203  0.49317289
+5264	 -6.27276184	 -0.00058768	  0.00036011	  7.27217416	  0.99820453	  0.99905221  0.49317299
+5265	 -6.27276211	 -0.00058757	  0.00036004	  7.27217454	  0.99820487	  0.99905239  0.49317296
+5266	 -6.27276238	 -0.00058746	  0.00035997	  7.27217492	  0.99820521	  0.99905257  0.49317302
+5267	 -6.27276265	 -0.00058735	  0.00035991	  7.27217530	  0.99820555	  0.99905275  0.49317307
+5268	 -6.27276291	 -0.00058724	  0.00035984	  7.27217568	  0.99820589	  0.99905293  0.49317310
+5269	 -6.27276318	 -0.00058712	  0.00035977	  7.27217605	  0.99820623	  0.99905311  0.49317316
+5270	 -6.27276344	 -0.00058701	  0.00035970	  7.27217643	  0.99820657	  0.99905329  0.49317319
+5271	 -6.27276371	 -0.00058690	  0.00035963	  7.27217681	  0.99820691	  0.99905347  0.49317321
+5272	 -6.27276398	 -0.00058679	  0.00035956	  7.27217719	  0.99820725	  0.99905365  0.49317328
+5273	 -6.27276424	 -0.00058668	  0.00035950	  7.27217756	  0.99820759	  0.99905383  0.49317329
+5274	 -6.27276451	 -0.00058657	  0.00035943	  7.27217794	  0.99820793	  0.99905400  0.49317335
+5275	 -6.27276478	 -0.00058646	  0.00035936	  7.27217832	  0.99820827	  0.99905418  0.49317337
+5276	 -6.27276504	 -0.00058635	  0.00035929	  7.27217870	  0.99820861	  0.99905436  0.49317339
+5277	 -6.27276531	 -0.00058623	  0.00035922	  7.27217907	  0.99820895	  0.99905454  0.49317346
+5278	 -6.27276557	 -0.00058612	  0.00035916	  7.27217945	  0.99820929	  0.99905472  0.49317350
+5279	 -6.27276584	 -0.00058601	  0.00035909	  7.27217982	  0.99820963	  0.99905490  0.49317354
+5280	 -6.27276610	 -0.00058590	  0.00035902	  7.27218020	  0.99820997	  0.99905508  0.49317358
+5281	 -6.27276637	 -0.00058579	  0.00035895	  7.27218058	  0.99821030	  0.99905526  0.49317361
+5282	 -6.27276663	 -0.00058568	  0.00035888	  7.27218095	  0.99821064	  0.99905544  0.49317361
+5283	 -6.27276690	 -0.00058557	  0.00035882	  7.27218133	  0.99821098	  0.99905562  0.49317370
+5284	 -6.27276716	 -0.00058546	  0.00035875	  7.27218170	  0.99821132	  0.99905579  0.49317372
+5285	 -6.27276743	 -0.00058535	  0.00035868	  7.27218208	  0.99821166	  0.99905597  0.49317378
+5286	 -6.27276769	 -0.00058524	  0.00035861	  7.27218246	  0.99821200	  0.99905615  0.49317376
+5287	 -6.27276796	 -0.00058513	  0.00035854	  7.27218283	  0.99821233	  0.99905633  0.49317387
+5288	 -6.27276822	 -0.00058502	  0.00035848	  7.27218321	  0.99821267	  0.99905651  0.49317387
+5289	 -6.27276849	 -0.00058491	  0.00035841	  7.27218358	  0.99821301	  0.99905669  0.49317394
+5290	 -6.27276875	 -0.00058480	  0.00035834	  7.27218396	  0.99821335	  0.99905686  0.49317397
+5291	 -6.27276902	 -0.00058468	  0.00035827	  7.27218433	  0.99821369	  0.99905704  0.49317398
+5292	 -6.27276928	 -0.00058457	  0.00035820	  7.27218471	  0.99821402	  0.99905722  0.49317402
+5293	 -6.27276954	 -0.00058446	  0.00035814	  7.27218508	  0.99821436	  0.99905740  0.49317408
+5294	 -6.27276981	 -0.00058435	  0.00035807	  7.27218545	  0.99821470	  0.99905758  0.49317410
+5295	 -6.27277007	 -0.00058424	  0.00035800	  7.27218583	  0.99821504	  0.99905775  0.49317417
+5296	 -6.27277034	 -0.00058413	  0.00035793	  7.27218620	  0.99821537	  0.99905793  0.49317422
+5297	 -6.27277060	 -0.00058402	  0.00035787	  7.27218658	  0.99821571	  0.99905811  0.49317425
+5298	 -6.27277086	 -0.00058391	  0.00035780	  7.27218695	  0.99821605	  0.99905829  0.49317429
+5299	 -6.27277113	 -0.00058380	  0.00035773	  7.27218732	  0.99821638	  0.99905847  0.49317428
+5300	 -6.27277139	 -0.00058369	  0.00035766	  7.27218770	  0.99821672	  0.99905864  0.49317437
+5301	 -6.27277165	 -0.00058358	  0.00035760	  7.27218807	  0.99821706	  0.99905882  0.49317446
+5302	 -6.27277192	 -0.00058347	  0.00035753	  7.27218844	  0.99821739	  0.99905900  0.49317445
+5303	 -6.27277218	 -0.00058336	  0.00035746	  7.27218882	  0.99821773	  0.99905918  0.49317449
+5304	 -6.27277244	 -0.00058325	  0.00035739	  7.27218919	  0.99821806	  0.99905935  0.49317453
+5305	 -6.27277270	 -0.00058314	  0.00035733	  7.27218956	  0.99821840	  0.99905953  0.49317457
+5306	 -6.27277297	 -0.00058303	  0.00035726	  7.27218993	  0.99821874	  0.99905971  0.49317458
+5307	 -6.27277323	 -0.00058292	  0.00035719	  7.27219031	  0.99821907	  0.99905988  0.49317467
+5308	 -6.27277349	 -0.00058281	  0.00035712	  7.27219068	  0.99821941	  0.99906006  0.49317464
+5309	 -6.27277376	 -0.00058270	  0.00035706	  7.27219105	  0.99821974	  0.99906024  0.49317472
+5310	 -6.27277402	 -0.00058259	  0.00035699	  7.27219142	  0.99822008	  0.99906042  0.49317476
+5311	 -6.27277428	 -0.00058248	  0.00035692	  7.27219180	  0.99822041	  0.99906059  0.49317478
+5312	 -6.27277454	 -0.00058237	  0.00035686	  7.27219217	  0.99822075	  0.99906077  0.49317481
+5313	 -6.27277480	 -0.00058227	  0.00035679	  7.27219254	  0.99822108	  0.99906095  0.49317486
+5314	 -6.27277507	 -0.00058216	  0.00035672	  7.27219291	  0.99822142	  0.99906112  0.49317492
+5315	 -6.27277533	 -0.00058205	  0.00035665	  7.27219328	  0.99822175	  0.99906130  0.49317497
+5316	 -6.27277559	 -0.00058194	  0.00035659	  7.27219365	  0.99822209	  0.99906148  0.49317500
+5317	 -6.27277585	 -0.00058183	  0.00035652	  7.27219402	  0.99822242	  0.99906165  0.49317504
+5318	 -6.27277611	 -0.00058172	  0.00035645	  7.27219440	  0.99822275	  0.99906183  0.49317502
+5319	 -6.27277637	 -0.00058161	  0.00035639	  7.27219477	  0.99822309	  0.99906200  0.49317510
+5320	 -6.27277664	 -0.00058150	  0.00035632	  7.27219514	  0.99822342	  0.99906218  0.49317515
+5321	 -6.27277690	 -0.00058139	  0.00035625	  7.27219551	  0.99822376	  0.99906236  0.49317515
+5322	 -6.27277716	 -0.00058128	  0.00035619	  7.27219588	  0.99822409	  0.99906253  0.49317527
+5323	 -6.27277742	 -0.00058117	  0.00035612	  7.27219625	  0.99822442	  0.99906271  0.49317521
+5324	 -6.27277768	 -0.00058106	  0.00035605	  7.27219662	  0.99822476	  0.99906289  0.49317533
+5325	 -6.27277794	 -0.00058095	  0.00035598	  7.27219699	  0.99822509	  0.99906306  0.49317536
+5326	 -6.27277820	 -0.00058084	  0.00035592	  7.27219736	  0.99822542	  0.99906324  0.49317532
+5327	 -6.27277846	 -0.00058074	  0.00035585	  7.27219773	  0.99822576	  0.99906341  0.49317542
+5328	 -6.27277872	 -0.00058063	  0.00035578	  7.27219810	  0.99822609	  0.99906359  0.49317544
+5329	 -6.27277898	 -0.00058052	  0.00035572	  7.27219847	  0.99822642	  0.99906376  0.49317549
+5330	 -6.27277924	 -0.00058041	  0.00035565	  7.27219884	  0.99822675	  0.99906394  0.49317552
+5331	 -6.27277950	 -0.00058030	  0.00035558	  7.27219920	  0.99822709	  0.99906412  0.49317558
+5332	 -6.27277977	 -0.00058019	  0.00035552	  7.27219957	  0.99822742	  0.99906429  0.49317562
+5333	 -6.27278003	 -0.00058008	  0.00035545	  7.27219994	  0.99822775	  0.99906447  0.49317566
+5334	 -6.27278029	 -0.00057997	  0.00035538	  7.27220031	  0.99822808	  0.99906464  0.49317568
+5335	 -6.27278055	 -0.00057987	  0.00035532	  7.27220068	  0.99822842	  0.99906482  0.49317573
+5336	 -6.27278080	 -0.00057976	  0.00035525	  7.27220105	  0.99822875	  0.99906499  0.49317574
+5337	 -6.27278106	 -0.00057965	  0.00035518	  7.27220142	  0.99822908	  0.99906517  0.49317581
+5338	 -6.27278132	 -0.00057954	  0.00035512	  7.27220178	  0.99822941	  0.99906534  0.49317584
+5339	 -6.27278158	 -0.00057943	  0.00035505	  7.27220215	  0.99822974	  0.99906552  0.49317591
+5340	 -6.27278184	 -0.00057932	  0.00035498	  7.27220252	  0.99823008	  0.99906569  0.49317591
+5341	 -6.27278210	 -0.00057921	  0.00035492	  7.27220289	  0.99823041	  0.99906587  0.49317595
+5342	 -6.27278236	 -0.00057911	  0.00035485	  7.27220326	  0.99823074	  0.99906604  0.49317597
+5343	 -6.27278262	 -0.00057900	  0.00035479	  7.27220362	  0.99823107	  0.99906622  0.49317601
+5344	 -6.27278288	 -0.00057889	  0.00035472	  7.27220399	  0.99823140	  0.99906639  0.49317609
+5345	 -6.27278314	 -0.00057878	  0.00035465	  7.27220436	  0.99823173	  0.99906657  0.49317610
+5346	 -6.27278340	 -0.00057867	  0.00035459	  7.27220472	  0.99823206	  0.99906674  0.49317615
+5347	 -6.27278366	 -0.00057857	  0.00035452	  7.27220509	  0.99823239	  0.99906691  0.49317621
+5348	 -6.27278392	 -0.00057846	  0.00035445	  7.27220546	  0.99823272	  0.99906709  0.49317622
+5349	 -6.27278417	 -0.00057835	  0.00035439	  7.27220582	  0.99823305	  0.99906726  0.49317632
+5350	 -6.27278443	 -0.00057824	  0.00035432	  7.27220619	  0.99823338	  0.99906744  0.49317629
+5351	 -6.27278469	 -0.00057813	  0.00035425	  7.27220656	  0.99823371	  0.99906761  0.49317636
+5352	 -6.27278495	 -0.00057802	  0.00035419	  7.27220692	  0.99823404	  0.99906779  0.49317638
+5353	 -6.27278521	 -0.00057792	  0.00035412	  7.27220729	  0.99823437	  0.99906796  0.49317641
+5354	 -6.27278547	 -0.00057781	  0.00035406	  7.27220766	  0.99823470	  0.99906813  0.49317644
+5355	 -6.27278572	 -0.00057770	  0.00035399	  7.27220802	  0.99823503	  0.99906831  0.49317646
+5356	 -6.27278598	 -0.00057759	  0.00035392	  7.27220839	  0.99823536	  0.99906848  0.49317651
+5357	 -6.27278624	 -0.00057749	  0.00035386	  7.27220875	  0.99823569	  0.99906866  0.49317654
+5358	 -6.27278650	 -0.00057738	  0.00035379	  7.27220912	  0.99823602	  0.99906883  0.49317660
+5359	 -6.27278675	 -0.00057727	  0.00035373	  7.27220948	  0.99823635	  0.99906900  0.49317666
+5360	 -6.27278701	 -0.00057716	  0.00035366	  7.27220985	  0.99823668	  0.99906918  0.49317668
+5361	 -6.27278727	 -0.00057706	  0.00035359	  7.27221021	  0.99823701	  0.99906935  0.49317676
+5362	 -6.27278753	 -0.00057695	  0.00035353	  7.27221058	  0.99823734	  0.99906952  0.49317676
+5363	 -6.27278778	 -0.00057684	  0.00035346	  7.27221094	  0.99823766	  0.99906970  0.49317678
+5364	 -6.27278804	 -0.00057673	  0.00035340	  7.27221131	  0.99823799	  0.99906987  0.49317683
+5365	 -6.27278830	 -0.00057663	  0.00035333	  7.27221167	  0.99823832	  0.99907004  0.49317687
+5366	 -6.27278855	 -0.00057652	  0.00035326	  7.27221204	  0.99823865	  0.99907022  0.49317691
+5367	 -6.27278881	 -0.00057641	  0.00035320	  7.27221240	  0.99823898	  0.99907039  0.49317697
+5368	 -6.27278907	 -0.00057630	  0.00035313	  7.27221277	  0.99823931	  0.99907056  0.49317699
+5369	 -6.27278933	 -0.00057620	  0.00035307	  7.27221313	  0.99823963	  0.99907074  0.49317702
+5370	 -6.27278958	 -0.00057609	  0.00035300	  7.27221349	  0.99823996	  0.99907091  0.49317708
+5371	 -6.27278984	 -0.00057598	  0.00035294	  7.27221386	  0.99824029	  0.99907108  0.49317710
+5372	 -6.27279009	 -0.00057587	  0.00035287	  7.27221422	  0.99824062	  0.99907126  0.49317717
+5373	 -6.27279035	 -0.00057577	  0.00035280	  7.27221458	  0.99824094	  0.99907143  0.49317720
+5374	 -6.27279061	 -0.00057566	  0.00035274	  7.27221495	  0.99824127	  0.99907160  0.49317720
+5375	 -6.27279086	 -0.00057555	  0.00035267	  7.27221531	  0.99824160	  0.99907177  0.49317727
+5376	 -6.27279112	 -0.00057545	  0.00035261	  7.27221567	  0.99824193	  0.99907195  0.49317735
+5377	 -6.27279137	 -0.00057534	  0.00035254	  7.27221604	  0.99824225	  0.99907212  0.49317732
+5378	 -6.27279163	 -0.00057523	  0.00035248	  7.27221640	  0.99824258	  0.99907229  0.49317739
+5379	 -6.27279189	 -0.00057513	  0.00035241	  7.27221676	  0.99824291	  0.99907246  0.49317738
+5380	 -6.27279214	 -0.00057502	  0.00035235	  7.27221712	  0.99824323	  0.99907264  0.49317745
+5381	 -6.27279240	 -0.00057491	  0.00035228	  7.27221749	  0.99824356	  0.99907281  0.49317748
+5382	 -6.27279265	 -0.00057480	  0.00035221	  7.27221785	  0.99824389	  0.99907298  0.49317752
+5383	 -6.27279291	 -0.00057470	  0.00035215	  7.27221821	  0.99824421	  0.99907315  0.49317757
+5384	 -6.27279316	 -0.00057459	  0.00035208	  7.27221857	  0.99824454	  0.99907332  0.49317760
+5385	 -6.27279342	 -0.00057448	  0.00035202	  7.27221893	  0.99824486	  0.99907350  0.49317764
+5386	 -6.27279367	 -0.00057438	  0.00035195	  7.27221930	  0.99824519	  0.99907367  0.49317766
+5387	 -6.27279393	 -0.00057427	  0.00035189	  7.27221966	  0.99824551	  0.99907384  0.49317770
+5388	 -6.27279418	 -0.00057417	  0.00035182	  7.27222002	  0.99824584	  0.99907401  0.49317777
+5389	 -6.27279444	 -0.00057406	  0.00035176	  7.27222038	  0.99824617	  0.99907418  0.49317774
+5390	 -6.27279469	 -0.00057395	  0.00035169	  7.27222074	  0.99824649	  0.99907436  0.49317781
+5391	 -6.27279495	 -0.00057385	  0.00035163	  7.27222110	  0.99824682	  0.99907453  0.49317792
+5392	 -6.27279520	 -0.00057374	  0.00035156	  7.27222146	  0.99824714	  0.99907470  0.49317788
+5393	 -6.27279546	 -0.00057363	  0.00035150	  7.27222182	  0.99824747	  0.99907487  0.49317793
+5394	 -6.27279571	 -0.00057353	  0.00035143	  7.27222218	  0.99824779	  0.99907504  0.49317800
+5395	 -6.27279596	 -0.00057342	  0.00035137	  7.27222254	  0.99824812	  0.99907521  0.49317798
+5396	 -6.27279622	 -0.00057331	  0.00035130	  7.27222290	  0.99824844	  0.99907538  0.49317810
+5397	 -6.27279647	 -0.00057321	  0.00035124	  7.27222326	  0.99824877	  0.99907556  0.49317811
+5398	 -6.27279673	 -0.00057310	  0.00035117	  7.27222362	  0.99824909	  0.99907573  0.49317808
+5399	 -6.27279698	 -0.00057300	  0.00035111	  7.27222398	  0.99824941	  0.99907590  0.49317818
+5400	 -6.27279723	 -0.00057289	  0.00035104	  7.27222434	  0.99824974	  0.99907607  0.49317820
+5401	 -6.27279749	 -0.00057278	  0.00035098	  7.27222470	  0.99825006	  0.99907624  0.49317824
+5402	 -6.27279774	 -0.00057268	  0.00035091	  7.27222506	  0.99825039	  0.99907641  0.49317828
+5403	 -6.27279799	 -0.00057257	  0.00035085	  7.27222542	  0.99825071	  0.99907658  0.49317828
+5404	 -6.27279825	 -0.00057247	  0.00035078	  7.27222578	  0.99825103	  0.99907675  0.49317836
+5405	 -6.27279850	 -0.00057236	  0.00035072	  7.27222614	  0.99825136	  0.99907692  0.49317841
+5406	 -6.27279875	 -0.00057225	  0.00035065	  7.27222650	  0.99825168	  0.99907709  0.49317844
+5407	 -6.27279901	 -0.00057215	  0.00035059	  7.27222686	  0.99825200	  0.99907727  0.49317846
+5408	 -6.27279926	 -0.00057204	  0.00035052	  7.27222722	  0.99825233	  0.99907744  0.49317853
+5409	 -6.27279951	 -0.00057194	  0.00035046	  7.27222758	  0.99825265	  0.99907761  0.49317855
+5410	 -6.27279977	 -0.00057183	  0.00035039	  7.27222793	  0.99825297	  0.99907778  0.49317862
+5411	 -6.27280002	 -0.00057173	  0.00035033	  7.27222829	  0.99825330	  0.99907795  0.49317862
+5412	 -6.27280027	 -0.00057162	  0.00035026	  7.27222865	  0.99825362	  0.99907812  0.49317865
+5413	 -6.27280052	 -0.00057152	  0.00035020	  7.27222901	  0.99825394	  0.99907829  0.49317872
+5414	 -6.27280078	 -0.00057141	  0.00035013	  7.27222937	  0.99825426	  0.99907846  0.49317874
+5415	 -6.27280103	 -0.00057130	  0.00035007	  7.27222972	  0.99825459	  0.99907863  0.49317875
+5416	 -6.27280128	 -0.00057120	  0.00035000	  7.27223008	  0.99825491	  0.99907880  0.49317879
+5417	 -6.27280153	 -0.00057109	  0.00034994	  7.27223044	  0.99825523	  0.99907897  0.49317885
+5418	 -6.27280178	 -0.00057099	  0.00034987	  7.27223080	  0.99825555	  0.99907914  0.49317886
+5419	 -6.27280204	 -0.00057088	  0.00034981	  7.27223115	  0.99825587	  0.99907931  0.49317891
+5420	 -6.27280229	 -0.00057078	  0.00034974	  7.27223151	  0.99825620	  0.99907948  0.49317896
+5421	 -6.27280254	 -0.00057067	  0.00034968	  7.27223187	  0.99825652	  0.99907965  0.49317901
+5422	 -6.27280279	 -0.00057057	  0.00034962	  7.27223222	  0.99825684	  0.99907982  0.49317904
+5423	 -6.27280304	 -0.00057046	  0.00034955	  7.27223258	  0.99825716	  0.99907999  0.49317904
+5424	 -6.27280329	 -0.00057036	  0.00034949	  7.27223294	  0.99825748	  0.99908016  0.49317910
+5425	 -6.27280355	 -0.00057025	  0.00034942	  7.27223329	  0.99825780	  0.99908033  0.49317919
+5426	 -6.27280380	 -0.00057015	  0.00034936	  7.27223365	  0.99825812	  0.99908050  0.49317919
+5427	 -6.27280405	 -0.00057004	  0.00034929	  7.27223401	  0.99825844	  0.99908066  0.49317919
+5428	 -6.27280430	 -0.00056994	  0.00034923	  7.27223436	  0.99825877	  0.99908083  0.49317929
+5429	 -6.27280455	 -0.00056983	  0.00034916	  7.27223472	  0.99825909	  0.99908100  0.49317932
+5430	 -6.27280480	 -0.00056973	  0.00034910	  7.27223507	  0.99825941	  0.99908117  0.49317933
+5431	 -6.27280505	 -0.00056962	  0.00034904	  7.27223543	  0.99825973	  0.99908134  0.49317936
+5432	 -6.27280530	 -0.00056952	  0.00034897	  7.27223579	  0.99826005	  0.99908151  0.49317942
+5433	 -6.27280555	 -0.00056941	  0.00034891	  7.27223614	  0.99826037	  0.99908168  0.49317941
+5434	 -6.27280580	 -0.00056931	  0.00034884	  7.27223650	  0.99826069	  0.99908185  0.49317944
+5435	 -6.27280606	 -0.00056920	  0.00034878	  7.27223685	  0.99826101	  0.99908202  0.49317951
+5436	 -6.27280631	 -0.00056910	  0.00034872	  7.27223721	  0.99826133	  0.99908219  0.49317958
+5437	 -6.27280656	 -0.00056899	  0.00034865	  7.27223756	  0.99826165	  0.99908235  0.49317962
+5438	 -6.27280681	 -0.00056889	  0.00034859	  7.27223792	  0.99826197	  0.99908252  0.49317961
+5439	 -6.27280706	 -0.00056878	  0.00034852	  7.27223827	  0.99826229	  0.99908269  0.49317963
+5440	 -6.27280731	 -0.00056868	  0.00034846	  7.27223863	  0.99826261	  0.99908286  0.49317970
+5441	 -6.27280756	 -0.00056858	  0.00034839	  7.27223898	  0.99826293	  0.99908303  0.49317974
+5442	 -6.27280781	 -0.00056847	  0.00034833	  7.27223933	  0.99826324	  0.99908320  0.49317978
+5443	 -6.27280806	 -0.00056837	  0.00034827	  7.27223969	  0.99826356	  0.99908337  0.49317977
+5444	 -6.27280830	 -0.00056826	  0.00034820	  7.27224004	  0.99826388	  0.99908353  0.49317984
+5445	 -6.27280855	 -0.00056816	  0.00034814	  7.27224040	  0.99826420	  0.99908370  0.49317991
+5446	 -6.27280880	 -0.00056805	  0.00034807	  7.27224075	  0.99826452	  0.99908387  0.49317993
+5447	 -6.27280905	 -0.00056795	  0.00034801	  7.27224110	  0.99826484	  0.99908404  0.49317997
+5448	 -6.27280930	 -0.00056785	  0.00034795	  7.27224146	  0.99826516	  0.99908421  0.49317999
+5449	 -6.27280955	 -0.00056774	  0.00034788	  7.27224181	  0.99826547	  0.99908438  0.49318004
+5450	 -6.27280980	 -0.00056764	  0.00034782	  7.27224216	  0.99826579	  0.99908454  0.49318009
+5451	 -6.27281005	 -0.00056753	  0.00034776	  7.27224252	  0.99826611	  0.99908471  0.49318013
+5452	 -6.27281030	 -0.00056743	  0.00034769	  7.27224287	  0.99826643	  0.99908488  0.49318014
+5453	 -6.27281055	 -0.00056733	  0.00034763	  7.27224322	  0.99826675	  0.99908505  0.49318020
+5454	 -6.27281080	 -0.00056722	  0.00034756	  7.27224357	  0.99826706	  0.99908521  0.49318023
+5455	 -6.27281104	 -0.00056712	  0.00034750	  7.27224393	  0.99826738	  0.99908538  0.49318021
+5456	 -6.27281129	 -0.00056701	  0.00034744	  7.27224428	  0.99826770	  0.99908555  0.49318033
+5457	 -6.27281154	 -0.00056691	  0.00034737	  7.27224463	  0.99826802	  0.99908572  0.49318033
+5458	 -6.27281179	 -0.00056681	  0.00034731	  7.27224498	  0.99826833	  0.99908588  0.49318036
+5459	 -6.27281204	 -0.00056670	  0.00034725	  7.27224534	  0.99826865	  0.99908605  0.49318042
+5460	 -6.27281229	 -0.00056660	  0.00034718	  7.27224569	  0.99826897	  0.99908622  0.49318046
+5461	 -6.27281253	 -0.00056649	  0.00034712	  7.27224604	  0.99826929	  0.99908639  0.49318048
+5462	 -6.27281278	 -0.00056639	  0.00034706	  7.27224639	  0.99826960	  0.99908655  0.49318053
+5463	 -6.27281303	 -0.00056629	  0.00034699	  7.27224674	  0.99826992	  0.99908672  0.49318056
+5464	 -6.27281328	 -0.00056618	  0.00034693	  7.27224709	  0.99827024	  0.99908689  0.49318059
+5465	 -6.27281353	 -0.00056608	  0.00034686	  7.27224745	  0.99827055	  0.99908705  0.49318066
+5466	 -6.27281377	 -0.00056598	  0.00034680	  7.27224780	  0.99827087	  0.99908722  0.49318067
+5467	 -6.27281402	 -0.00056587	  0.00034674	  7.27224815	  0.99827119	  0.99908739  0.49318073
+5468	 -6.27281427	 -0.00056577	  0.00034667	  7.27224850	  0.99827150	  0.99908756  0.49318072
+5469	 -6.27281452	 -0.00056567	  0.00034661	  7.27224885	  0.99827182	  0.99908772  0.49318077
+5470	 -6.27281476	 -0.00056556	  0.00034655	  7.27224920	  0.99827213	  0.99908789  0.49318079
+5471	 -6.27281501	 -0.00056546	  0.00034648	  7.27224955	  0.99827245	  0.99908806  0.49318086
+5472	 -6.27281526	 -0.00056536	  0.00034642	  7.27224990	  0.99827276	  0.99908822  0.49318086
+5473	 -6.27281550	 -0.00056525	  0.00034636	  7.27225025	  0.99827308	  0.99908839  0.49318091
+5474	 -6.27281575	 -0.00056515	  0.00034629	  7.27225060	  0.99827340	  0.99908856  0.49318093
+5475	 -6.27281600	 -0.00056505	  0.00034623	  7.27225095	  0.99827371	  0.99908872  0.49318097
+5476	 -6.27281624	 -0.00056494	  0.00034617	  7.27225130	  0.99827403	  0.99908889  0.49318102
+5477	 -6.27281649	 -0.00056484	  0.00034610	  7.27225165	  0.99827434	  0.99908905  0.49318109
+5478	 -6.27281674	 -0.00056474	  0.00034604	  7.27225200	  0.99827466	  0.99908922  0.49318111
+5479	 -6.27281698	 -0.00056463	  0.00034598	  7.27225235	  0.99827497	  0.99908939  0.49318114
+5480	 -6.27281723	 -0.00056453	  0.00034592	  7.27225270	  0.99827529	  0.99908955  0.49318118
+5481	 -6.27281748	 -0.00056443	  0.00034585	  7.27225305	  0.99827560	  0.99908972  0.49318122
+5482	 -6.27281772	 -0.00056433	  0.00034579	  7.27225340	  0.99827591	  0.99908988  0.49318124
+5483	 -6.27281797	 -0.00056422	  0.00034573	  7.27225375	  0.99827623	  0.99909005  0.49318128
+5484	 -6.27281822	 -0.00056412	  0.00034566	  7.27225409	  0.99827654	  0.99909022  0.49318131
+5485	 -6.27281846	 -0.00056402	  0.00034560	  7.27225444	  0.99827686	  0.99909038  0.49318135
+5486	 -6.27281871	 -0.00056391	  0.00034554	  7.27225479	  0.99827717	  0.99909055  0.49318140
+5487	 -6.27281895	 -0.00056381	  0.00034547	  7.27225514	  0.99827749	  0.99909071  0.49318139
+5488	 -6.27281920	 -0.00056371	  0.00034541	  7.27225549	  0.99827780	  0.99909088  0.49318148
+5489	 -6.27281944	 -0.00056361	  0.00034535	  7.27225584	  0.99827811	  0.99909105  0.49318152
+5490	 -6.27281969	 -0.00056350	  0.00034528	  7.27225619	  0.99827843	  0.99909121  0.49318156
+5491	 -6.27281993	 -0.00056340	  0.00034522	  7.27225653	  0.99827874	  0.99909138  0.49318159
+5492	 -6.27282018	 -0.00056330	  0.00034516	  7.27225688	  0.99827905	  0.99909154  0.49318163
+5493	 -6.27282043	 -0.00056320	  0.00034510	  7.27225723	  0.99827937	  0.99909171  0.49318166
+5494	 -6.27282067	 -0.00056309	  0.00034503	  7.27225758	  0.99827968	  0.99909187  0.49318168
+5495	 -6.27282092	 -0.00056299	  0.00034497	  7.27225792	  0.99827999	  0.99909204  0.49318179
+5496	 -6.27282116	 -0.00056289	  0.00034491	  7.27225827	  0.99828031	  0.99909220  0.49318171
+5497	 -6.27282141	 -0.00056279	  0.00034485	  7.27225862	  0.99828062	  0.99909237  0.49318177
+5498	 -6.27282165	 -0.00056268	  0.00034478	  7.27225897	  0.99828093	  0.99909253  0.49318188
+5499	 -6.27282189	 -0.00056258	  0.00034472	  7.27225931	  0.99828124	  0.99909270  0.49318185
+5500	 -6.27282214	 -0.00056248	  0.00034466	  7.27225966	  0.99828156	  0.99909286  0.49318190
+5501	 -6.27282238	 -0.00056238	  0.00034459	  7.27226001	  0.99828187	  0.99909303  0.49318196
+5502	 -6.27282263	 -0.00056228	  0.00034453	  7.27226035	  0.99828218	  0.99909319  0.49318197
+5503	 -6.27282287	 -0.00056217	  0.00034447	  7.27226070	  0.99828249	  0.99909336  0.49318203
+5504	 -6.27282312	 -0.00056207	  0.00034441	  7.27226104	  0.99828281	  0.99909352  0.49318204
+5505	 -6.27282336	 -0.00056197	  0.00034434	  7.27226139	  0.99828312	  0.99909369  0.49318210
+5506	 -6.27282360	 -0.00056187	  0.00034428	  7.27226174	  0.99828343	  0.99909385  0.49318213
+5507	 -6.27282385	 -0.00056177	  0.00034422	  7.27226208	  0.99828374	  0.99909402  0.49318217
+5508	 -6.27282409	 -0.00056166	  0.00034416	  7.27226243	  0.99828405	  0.99909418  0.49318219
+5509	 -6.27282434	 -0.00056156	  0.00034409	  7.27226277	  0.99828436	  0.99909434  0.49318217
+5510	 -6.27282458	 -0.00056146	  0.00034403	  7.27226312	  0.99828467	  0.99909451  0.49318229
+5511	 -6.27282482	 -0.00056136	  0.00034397	  7.27226347	  0.99828499	  0.99909467  0.49318235
+5512	 -6.27282507	 -0.00056126	  0.00034391	  7.27226381	  0.99828530	  0.99909484  0.49318234
+5513	 -6.27282531	 -0.00056115	  0.00034384	  7.27226416	  0.99828561	  0.99909500  0.49318238
+5514	 -6.27282555	 -0.00056105	  0.00034378	  7.27226450	  0.99828592	  0.99909516  0.49318244
+5515	 -6.27282580	 -0.00056095	  0.00034372	  7.27226485	  0.99828623	  0.99909533  0.49318245
+5516	 -6.27282604	 -0.00056085	  0.00034366	  7.27226519	  0.99828654	  0.99909549  0.49318251
+5517	 -6.27282628	 -0.00056075	  0.00034360	  7.27226554	  0.99828685	  0.99909566  0.49318249
+5518	 -6.27282653	 -0.00056065	  0.00034353	  7.27226588	  0.99828716	  0.99909582  0.49318260
+5519	 -6.27282677	 -0.00056055	  0.00034347	  7.27226622	  0.99828747	  0.99909598  0.49318256
+5520	 -6.27282701	 -0.00056044	  0.00034341	  7.27226657	  0.99828778	  0.99909615  0.49318268
+5521	 -6.27282725	 -0.00056034	  0.00034335	  7.27226691	  0.99828809	  0.99909631  0.49318269
+5522	 -6.27282750	 -0.00056024	  0.00034328	  7.27226726	  0.99828840	  0.99909648  0.49318273
+5523	 -6.27282774	 -0.00056014	  0.00034322	  7.27226760	  0.99828871	  0.99909664  0.49318276
+5524	 -6.27282798	 -0.00056004	  0.00034316	  7.27226794	  0.99828902	  0.99909680  0.49318278
+5525	 -6.27282822	 -0.00055994	  0.00034310	  7.27226829	  0.99828933	  0.99909697  0.49318281
+5526	 -6.27282847	 -0.00055984	  0.00034304	  7.27226863	  0.99828964	  0.99909713  0.49318285
+5527	 -6.27282871	 -0.00055973	  0.00034297	  7.27226898	  0.99828995	  0.99909729  0.49318289
+5528	 -6.27282895	 -0.00055963	  0.00034291	  7.27226932	  0.99829026	  0.99909746  0.49318294
+5529	 -6.27282919	 -0.00055953	  0.00034285	  7.27226966	  0.99829057	  0.99909762  0.49318296
+5530	 -6.27282944	 -0.00055943	  0.00034279	  7.27227000	  0.99829088	  0.99909778  0.49318295
+5531	 -6.27282968	 -0.00055933	  0.00034273	  7.27227035	  0.99829119	  0.99909794  0.49318302
+5532	 -6.27282992	 -0.00055923	  0.00034266	  7.27227069	  0.99829150	  0.99909811  0.49318310
+5533	 -6.27283016	 -0.00055913	  0.00034260	  7.27227103	  0.99829180	  0.99909827  0.49318311
+5534	 -6.27283040	 -0.00055903	  0.00034254	  7.27227138	  0.99829211	  0.99909843  0.49318314
+5535	 -6.27283064	 -0.00055893	  0.00034248	  7.27227172	  0.99829242	  0.99909860  0.49318318
+5536	 -6.27283089	 -0.00055882	  0.00034242	  7.27227206	  0.99829273	  0.99909876  0.49318320
+5537	 -6.27283113	 -0.00055872	  0.00034235	  7.27227240	  0.99829304	  0.99909892  0.49318320
+5538	 -6.27283137	 -0.00055862	  0.00034229	  7.27227274	  0.99829335	  0.99909908  0.49318327
+5539	 -6.27283161	 -0.00055852	  0.00034223	  7.27227309	  0.99829365	  0.99909925  0.49318333
+5540	 -6.27283185	 -0.00055842	  0.00034217	  7.27227343	  0.99829396	  0.99909941  0.49318333
+5541	 -6.27283209	 -0.00055832	  0.00034211	  7.27227377	  0.99829427	  0.99909957  0.49318336
+5542	 -6.27283233	 -0.00055822	  0.00034204	  7.27227411	  0.99829458	  0.99909973  0.49318343
+5543	 -6.27283257	 -0.00055812	  0.00034198	  7.27227445	  0.99829489	  0.99909990  0.49318344
+5544	 -6.27283281	 -0.00055802	  0.00034192	  7.27227479	  0.99829519	  0.99910006  0.49318351
+5545	 -6.27283305	 -0.00055792	  0.00034186	  7.27227514	  0.99829550	  0.99910022  0.49318353
+5546	 -6.27283329	 -0.00055782	  0.00034180	  7.27227548	  0.99829581	  0.99910038  0.49318358
+5547	 -6.27283353	 -0.00055772	  0.00034174	  7.27227582	  0.99829611	  0.99910055  0.49318362
+5548	 -6.27283378	 -0.00055762	  0.00034168	  7.27227616	  0.99829642	  0.99910071  0.49318360
+5549	 -6.27283402	 -0.00055752	  0.00034161	  7.27227650	  0.99829673	  0.99910087  0.49318367
+5550	 -6.27283426	 -0.00055742	  0.00034155	  7.27227684	  0.99829704	  0.99910103  0.49318371
+5551	 -6.27283450	 -0.00055732	  0.00034149	  7.27227718	  0.99829734	  0.99910119  0.49318374
+5552	 -6.27283474	 -0.00055722	  0.00034143	  7.27227752	  0.99829765	  0.99910136  0.49318380
+5553	 -6.27283498	 -0.00055712	  0.00034137	  7.27227786	  0.99829796	  0.99910152  0.49318376
+5554	 -6.27283522	 -0.00055701	  0.00034131	  7.27227820	  0.99829826	  0.99910168  0.49318386
+5555	 -6.27283546	 -0.00055691	  0.00034124	  7.27227854	  0.99829857	  0.99910184  0.49318389
+5556	 -6.27283570	 -0.00055681	  0.00034118	  7.27227888	  0.99829887	  0.99910200  0.49318390
+5557	 -6.27283593	 -0.00055671	  0.00034112	  7.27227922	  0.99829918	  0.99910216  0.49318396
+5558	 -6.27283617	 -0.00055661	  0.00034106	  7.27227956	  0.99829949	  0.99910233  0.49318401
+5559	 -6.27283641	 -0.00055651	  0.00034100	  7.27227990	  0.99829979	  0.99910249  0.49318410
+5560	 -6.27283665	 -0.00055641	  0.00034094	  7.27228024	  0.99830010	  0.99910265  0.49318407
+5561	 -6.27283689	 -0.00055631	  0.00034088	  7.27228058	  0.99830040	  0.99910281  0.49318407
+5562	 -6.27283713	 -0.00055621	  0.00034081	  7.27228092	  0.99830071	  0.99910297  0.49318414
+5563	 -6.27283737	 -0.00055611	  0.00034075	  7.27228126	  0.99830101	  0.99910313  0.49318415
+5564	 -6.27283761	 -0.00055601	  0.00034069	  7.27228159	  0.99830132	  0.99910329  0.49318423
+5565	 -6.27283785	 -0.00055591	  0.00034063	  7.27228193	  0.99830163	  0.99910345  0.49318423
+5566	 -6.27283809	 -0.00055581	  0.00034057	  7.27228227	  0.99830193	  0.99910362  0.49318427
+5567	 -6.27283833	 -0.00055571	  0.00034051	  7.27228261	  0.99830224	  0.99910378  0.49318428
+5568	 -6.27283856	 -0.00055562	  0.00034045	  7.27228295	  0.99830254	  0.99910394  0.49318433
+5569	 -6.27283880	 -0.00055552	  0.00034039	  7.27228329	  0.99830285	  0.99910410  0.49318443
+5570	 -6.27283904	 -0.00055542	  0.00034033	  7.27228363	  0.99830315	  0.99910426  0.49318443
+5571	 -6.27283928	 -0.00055532	  0.00034026	  7.27228396	  0.99830345	  0.99910442  0.49318449
+5572	 -6.27283952	 -0.00055522	  0.00034020	  7.27228430	  0.99830376	  0.99910458  0.49318449
+5573	 -6.27283976	 -0.00055512	  0.00034014	  7.27228464	  0.99830406	  0.99910474  0.49318454
+5574	 -6.27283999	 -0.00055502	  0.00034008	  7.27228498	  0.99830437	  0.99910490  0.49318457
+5575	 -6.27284023	 -0.00055492	  0.00034002	  7.27228531	  0.99830467	  0.99910506  0.49318459
+5576	 -6.27284047	 -0.00055482	  0.00033996	  7.27228565	  0.99830498	  0.99910522  0.49318460
+5577	 -6.27284071	 -0.00055472	  0.00033990	  7.27228599	  0.99830528	  0.99910538  0.49318465
+5578	 -6.27284095	 -0.00055462	  0.00033984	  7.27228633	  0.99830558	  0.99910554  0.49318472
+5579	 -6.27284118	 -0.00055452	  0.00033978	  7.27228666	  0.99830589	  0.99910570  0.49318477
+5580	 -6.27284142	 -0.00055442	  0.00033972	  7.27228700	  0.99830619	  0.99910586  0.49318479
+5581	 -6.27284166	 -0.00055432	  0.00033965	  7.27228734	  0.99830649	  0.99910602  0.49318483
+5582	 -6.27284190	 -0.00055422	  0.00033959	  7.27228767	  0.99830680	  0.99910618  0.49318487
+5583	 -6.27284213	 -0.00055412	  0.00033953	  7.27228801	  0.99830710	  0.99910634  0.49318489
+5584	 -6.27284237	 -0.00055402	  0.00033947	  7.27228835	  0.99830740	  0.99910650  0.49318490
+5585	 -6.27284261	 -0.00055393	  0.00033941	  7.27228868	  0.99830771	  0.99910666  0.49318496
+5586	 -6.27284285	 -0.00055383	  0.00033935	  7.27228902	  0.99830801	  0.99910682  0.49318499
+5587	 -6.27284308	 -0.00055373	  0.00033929	  7.27228936	  0.99830831	  0.99910698  0.49318499
+5588	 -6.27284332	 -0.00055363	  0.00033923	  7.27228969	  0.99830861	  0.99910714  0.49318509
+5589	 -6.27284356	 -0.00055353	  0.00033917	  7.27229003	  0.99830892	  0.99910730  0.49318511
+5590	 -6.27284379	 -0.00055343	  0.00033911	  7.27229036	  0.99830922	  0.99910746  0.49318515
+5591	 -6.27284403	 -0.00055333	  0.00033905	  7.27229070	  0.99830952	  0.99910762  0.49318516
+5592	 -6.27284427	 -0.00055323	  0.00033899	  7.27229103	  0.99830982	  0.99910778  0.49318524
+5593	 -6.27284450	 -0.00055313	  0.00033893	  7.27229137	  0.99831013	  0.99910794  0.49318524
+5594	 -6.27284474	 -0.00055303	  0.00033887	  7.27229170	  0.99831043	  0.99910810  0.49318528
+5595	 -6.27284498	 -0.00055294	  0.00033880	  7.27229204	  0.99831073	  0.99910826  0.49318529
+5596	 -6.27284521	 -0.00055284	  0.00033874	  7.27229237	  0.99831103	  0.99910842  0.49318533
+5597	 -6.27284545	 -0.00055274	  0.00033868	  7.27229271	  0.99831133	  0.99910858  0.49318539
+5598	 -6.27284568	 -0.00055264	  0.00033862	  7.27229304	  0.99831164	  0.99910874  0.49318542
+5599	 -6.27284592	 -0.00055254	  0.00033856	  7.27229338	  0.99831194	  0.99910890  0.49318543
+5600	 -6.27284616	 -0.00055244	  0.00033850	  7.27229371	  0.99831224	  0.99910906  0.49318547
+5601	 -6.27284639	 -0.00055234	  0.00033844	  7.27229405	  0.99831254	  0.99910921  0.49318555
+5602	 -6.27284663	 -0.00055225	  0.00033838	  7.27229438	  0.99831284	  0.99910937  0.49318557
+5603	 -6.27284686	 -0.00055215	  0.00033832	  7.27229472	  0.99831314	  0.99910953  0.49318561
+5604	 -6.27284710	 -0.00055205	  0.00033826	  7.27229505	  0.99831344	  0.99910969  0.49318565
+5605	 -6.27284733	 -0.00055195	  0.00033820	  7.27229538	  0.99831374	  0.99910985  0.49318570
+5606	 -6.27284757	 -0.00055185	  0.00033814	  7.27229572	  0.99831404	  0.99911001  0.49318569
+5607	 -6.27284781	 -0.00055175	  0.00033808	  7.27229605	  0.99831435	  0.99911017  0.49318574
+5608	 -6.27284804	 -0.00055165	  0.00033802	  7.27229639	  0.99831465	  0.99911033  0.49318575
+5609	 -6.27284828	 -0.00055156	  0.00033796	  7.27229672	  0.99831495	  0.99911048  0.49318581
+5610	 -6.27284851	 -0.00055146	  0.00033790	  7.27229705	  0.99831525	  0.99911064  0.49318582
+5611	 -6.27284875	 -0.00055136	  0.00033784	  7.27229739	  0.99831555	  0.99911080  0.49318586
+5612	 -6.27284898	 -0.00055126	  0.00033778	  7.27229772	  0.99831585	  0.99911096  0.49318588
+5613	 -6.27284922	 -0.00055116	  0.00033772	  7.27229805	  0.99831615	  0.99911112  0.49318595
+5614	 -6.27284945	 -0.00055107	  0.00033766	  7.27229838	  0.99831645	  0.99911128  0.49318599
+5615	 -6.27284968	 -0.00055097	  0.00033760	  7.27229872	  0.99831675	  0.99911143  0.49318604
+5616	 -6.27284992	 -0.00055087	  0.00033754	  7.27229905	  0.99831705	  0.99911159  0.49318604
+5617	 -6.27285015	 -0.00055077	  0.00033748	  7.27229938	  0.99831735	  0.99911175  0.49318612
+5618	 -6.27285039	 -0.00055067	  0.00033742	  7.27229971	  0.99831765	  0.99911191  0.49318613
+5619	 -6.27285062	 -0.00055058	  0.00033736	  7.27230005	  0.99831794	  0.99911207  0.49318622
+5620	 -6.27285086	 -0.00055048	  0.00033730	  7.27230038	  0.99831824	  0.99911223  0.49318623
+5621	 -6.27285109	 -0.00055038	  0.00033724	  7.27230071	  0.99831854	  0.99911238  0.49318626
+5622	 -6.27285133	 -0.00055028	  0.00033718	  7.27230104	  0.99831884	  0.99911254  0.49318626
+5623	 -6.27285156	 -0.00055018	  0.00033712	  7.27230138	  0.99831914	  0.99911270  0.49318628
+5624	 -6.27285179	 -0.00055009	  0.00033706	  7.27230171	  0.99831944	  0.99911286  0.49318633
+5625	 -6.27285203	 -0.00054999	  0.00033700	  7.27230204	  0.99831974	  0.99911301  0.49318637
+5626	 -6.27285226	 -0.00054989	  0.00033694	  7.27230237	  0.99832004	  0.99911317  0.49318637
+5627	 -6.27285249	 -0.00054979	  0.00033688	  7.27230270	  0.99832034	  0.99911333  0.49318644
+5628	 -6.27285273	 -0.00054970	  0.00033682	  7.27230303	  0.99832063	  0.99911349  0.49318645
+5629	 -6.27285296	 -0.00054960	  0.00033676	  7.27230336	  0.99832093	  0.99911364  0.49318646
+5630	 -6.27285319	 -0.00054950	  0.00033670	  7.27230369	  0.99832123	  0.99911380  0.49318651
+5631	 -6.27285343	 -0.00054940	  0.00033664	  7.27230403	  0.99832153	  0.99911396  0.49318650
+5632	 -6.27285366	 -0.00054931	  0.00033658	  7.27230436	  0.99832183	  0.99911412  0.49318659
+5633	 -6.27285389	 -0.00054921	  0.00033652	  7.27230469	  0.99832212	  0.99911427  0.49318666
+5634	 -6.27285413	 -0.00054911	  0.00033646	  7.27230502	  0.99832242	  0.99911443  0.49318665
+5635	 -6.27285436	 -0.00054901	  0.00033640	  7.27230535	  0.99832272	  0.99911459  0.49318670
+5636	 -6.27285459	 -0.00054892	  0.00033634	  7.27230568	  0.99832302	  0.99911474  0.49318673
+5637	 -6.27285483	 -0.00054882	  0.00033628	  7.27230601	  0.99832332	  0.99911490  0.49318677
+5638	 -6.27285506	 -0.00054872	  0.00033622	  7.27230634	  0.99832361	  0.99911506  0.49318685
+5639	 -6.27285529	 -0.00054862	  0.00033616	  7.27230667	  0.99832391	  0.99911522  0.49318683
+5640	 -6.27285552	 -0.00054853	  0.00033610	  7.27230700	  0.99832421	  0.99911537  0.49318692
+5641	 -6.27285576	 -0.00054843	  0.00033604	  7.27230733	  0.99832450	  0.99911553  0.49318690
+5642	 -6.27285599	 -0.00054833	  0.00033598	  7.27230766	  0.99832480	  0.99911569  0.49318694
+5643	 -6.27285622	 -0.00054824	  0.00033592	  7.27230799	  0.99832510	  0.99911584  0.49318700
+5644	 -6.27285645	 -0.00054814	  0.00033586	  7.27230832	  0.99832539	  0.99911600  0.49318701
+5645	 -6.27285669	 -0.00054804	  0.00033580	  7.27230865	  0.99832569	  0.99911616  0.49318705
+5646	 -6.27285692	 -0.00054794	  0.00033574	  7.27230897	  0.99832599	  0.99911631  0.49318711
+5647	 -6.27285715	 -0.00054785	  0.00033568	  7.27230930	  0.99832628	  0.99911647  0.49318708
+5648	 -6.27285738	 -0.00054775	  0.00033563	  7.27230963	  0.99832658	  0.99911662  0.49318719
+5649	 -6.27285761	 -0.00054765	  0.00033557	  7.27230996	  0.99832688	  0.99911678  0.49318717
+5650	 -6.27285785	 -0.00054756	  0.00033551	  7.27231029	  0.99832717	  0.99911694  0.49318724
+5651	 -6.27285808	 -0.00054746	  0.00033545	  7.27231062	  0.99832747	  0.99911709  0.49318723
+5652	 -6.27285831	 -0.00054736	  0.00033539	  7.27231095	  0.99832776	  0.99911725  0.49318729
+5653	 -6.27285854	 -0.00054727	  0.00033533	  7.27231127	  0.99832806	  0.99911741  0.49318737
+5654	 -6.27285877	 -0.00054717	  0.00033527	  7.27231160	  0.99832836	  0.99911756  0.49318736
+5655	 -6.27285900	 -0.00054707	  0.00033521	  7.27231193	  0.99832865	  0.99911772  0.49318737
+5656	 -6.27285923	 -0.00054698	  0.00033515	  7.27231226	  0.99832895	  0.99911787  0.49318744
+5657	 -6.27285947	 -0.00054688	  0.00033509	  7.27231259	  0.99832924	  0.99911803  0.49318747
+5658	 -6.27285970	 -0.00054678	  0.00033503	  7.27231291	  0.99832954	  0.99911819  0.49318750
+5659	 -6.27285993	 -0.00054669	  0.00033497	  7.27231324	  0.99832983	  0.99911834  0.49318752
+5660	 -6.27286016	 -0.00054659	  0.00033491	  7.27231357	  0.99833013	  0.99911850  0.49318756
+5661	 -6.27286039	 -0.00054649	  0.00033485	  7.27231390	  0.99833042	  0.99911865  0.49318760
+5662	 -6.27286062	 -0.00054640	  0.00033480	  7.27231422	  0.99833072	  0.99911881  0.49318765
+5663	 -6.27286085	 -0.00054630	  0.00033474	  7.27231455	  0.99833101	  0.99911896  0.49318766
+5664	 -6.27286108	 -0.00054620	  0.00033468	  7.27231488	  0.99833131	  0.99911912  0.49318767
+5665	 -6.27286131	 -0.00054611	  0.00033462	  7.27231521	  0.99833160	  0.99911927  0.49318769
+5666	 -6.27286154	 -0.00054601	  0.00033456	  7.27231553	  0.99833190	  0.99911943  0.49318777
+5667	 -6.27286177	 -0.00054591	  0.00033450	  7.27231586	  0.99833219	  0.99911959  0.49318778
+5668	 -6.27286200	 -0.00054582	  0.00033444	  7.27231619	  0.99833248	  0.99911974  0.49318783
+5669	 -6.27286223	 -0.00054572	  0.00033438	  7.27231651	  0.99833278	  0.99911990  0.49318785
+5670	 -6.27286246	 -0.00054563	  0.00033432	  7.27231684	  0.99833307	  0.99912005  0.49318790
+5671	 -6.27286269	 -0.00054553	  0.00033426	  7.27231716	  0.99833337	  0.99912021  0.49318796
+5672	 -6.27286292	 -0.00054543	  0.00033420	  7.27231749	  0.99833366	  0.99912036  0.49318798
+5673	 -6.27286315	 -0.00054534	  0.00033415	  7.27231782	  0.99833395	  0.99912052  0.49318802
+5674	 -6.27286338	 -0.00054524	  0.00033409	  7.27231814	  0.99833425	  0.99912067  0.49318801
+5675	 -6.27286361	 -0.00054515	  0.00033403	  7.27231847	  0.99833454	  0.99912083  0.49318810
+5676	 -6.27286384	 -0.00054505	  0.00033397	  7.27231879	  0.99833483	  0.99912098  0.49318815
+5677	 -6.27286407	 -0.00054495	  0.00033391	  7.27231912	  0.99833513	  0.99912114  0.49318815
+5678	 -6.27286430	 -0.00054486	  0.00033385	  7.27231944	  0.99833542	  0.99912129  0.49318821
+5679	 -6.27286453	 -0.00054476	  0.00033379	  7.27231977	  0.99833571	  0.99912145  0.49318820
+5680	 -6.27286476	 -0.00054467	  0.00033373	  7.27232010	  0.99833601	  0.99912160  0.49318828
+5681	 -6.27286499	 -0.00054457	  0.00033368	  7.27232042	  0.99833630	  0.99912175  0.49318827
+5682	 -6.27286522	 -0.00054447	  0.00033362	  7.27232075	  0.99833659	  0.99912191  0.49318830
+5683	 -6.27286545	 -0.00054438	  0.00033356	  7.27232107	  0.99833689	  0.99912206  0.49318834
+5684	 -6.27286568	 -0.00054428	  0.00033350	  7.27232139	  0.99833718	  0.99912222  0.49318840
+5685	 -6.27286591	 -0.00054419	  0.00033344	  7.27232172	  0.99833747	  0.99912237  0.49318849
+5686	 -6.27286614	 -0.00054409	  0.00033338	  7.27232204	  0.99833776	  0.99912253  0.49318845
+5687	 -6.27286636	 -0.00054400	  0.00033332	  7.27232237	  0.99833805	  0.99912268  0.49318852
+5688	 -6.27286659	 -0.00054390	  0.00033326	  7.27232269	  0.99833835	  0.99912283  0.49318851
+5689	 -6.27286682	 -0.00054380	  0.00033321	  7.27232302	  0.99833864	  0.99912299  0.49318855
+5690	 -6.27286705	 -0.00054371	  0.00033315	  7.27232334	  0.99833893	  0.99912314  0.49318857
+5691	 -6.27286728	 -0.00054361	  0.00033309	  7.27232366	  0.99833922	  0.99912330  0.49318863
+5692	 -6.27286751	 -0.00054352	  0.00033303	  7.27232399	  0.99833951	  0.99912345  0.49318865
+5693	 -6.27286774	 -0.00054342	  0.00033297	  7.27232431	  0.99833981	  0.99912360  0.49318871
+5694	 -6.27286796	 -0.00054333	  0.00033291	  7.27232464	  0.99834010	  0.99912376  0.49318871
+5695	 -6.27286819	 -0.00054323	  0.00033286	  7.27232496	  0.99834039	  0.99912391  0.49318882
+5696	 -6.27286842	 -0.00054314	  0.00033280	  7.27232528	  0.99834068	  0.99912407  0.49318885
+5697	 -6.27286865	 -0.00054304	  0.00033274	  7.27232561	  0.99834097	  0.99912422  0.49318882
+5698	 -6.27286888	 -0.00054295	  0.00033268	  7.27232593	  0.99834126	  0.99912437  0.49318888
+5699	 -6.27286910	 -0.00054285	  0.00033262	  7.27232625	  0.99834155	  0.99912453  0.49318890
+5700	 -6.27286933	 -0.00054276	  0.00033256	  7.27232657	  0.99834184	  0.99912468  0.49318892
+5701	 -6.27286956	 -0.00054266	  0.00033250	  7.27232690	  0.99834214	  0.99912483  0.49318896
+5702	 -6.27286979	 -0.00054257	  0.00033245	  7.27232722	  0.99834243	  0.99912499  0.49318900
+5703	 -6.27287001	 -0.00054247	  0.00033239	  7.27232754	  0.99834272	  0.99912514  0.49318899
+5704	 -6.27287024	 -0.00054238	  0.00033233	  7.27232787	  0.99834301	  0.99912529  0.49318908
+5705	 -6.27287047	 -0.00054228	  0.00033227	  7.27232819	  0.99834330	  0.99912545  0.49318910
+5706	 -6.27287070	 -0.00054219	  0.00033221	  7.27232851	  0.99834359	  0.99912560  0.49318913
+5707	 -6.27287092	 -0.00054209	  0.00033216	  7.27232883	  0.99834388	  0.99912575  0.49318913
+5708	 -6.27287115	 -0.00054200	  0.00033210	  7.27232915	  0.99834417	  0.99912591  0.49318919
+5709	 -6.27287138	 -0.00054190	  0.00033204	  7.27232948	  0.99834446	  0.99912606  0.49318918
+5710	 -6.27287160	 -0.00054181	  0.00033198	  7.27232980	  0.99834475	  0.99912621  0.49318924
+5711	 -6.27287183	 -0.00054171	  0.00033192	  7.27233012	  0.99834504	  0.99912637  0.49318928
+5712	 -6.27287206	 -0.00054162	  0.00033186	  7.27233044	  0.99834533	  0.99912652  0.49318937
+5713	 -6.27287228	 -0.00054152	  0.00033181	  7.27233076	  0.99834562	  0.99912667  0.49318939
+5714	 -6.27287251	 -0.00054143	  0.00033175	  7.27233108	  0.99834591	  0.99912682  0.49318942
+5715	 -6.27287274	 -0.00054133	  0.00033169	  7.27233140	  0.99834620	  0.99912698  0.49318944
+5716	 -6.27287296	 -0.00054124	  0.00033163	  7.27233173	  0.99834649	  0.99912713  0.49318945
+5717	 -6.27287319	 -0.00054114	  0.00033157	  7.27233205	  0.99834677	  0.99912728  0.49318948
+5718	 -6.27287342	 -0.00054105	  0.00033152	  7.27233237	  0.99834706	  0.99912744  0.49318948
+5719	 -6.27287364	 -0.00054095	  0.00033146	  7.27233269	  0.99834735	  0.99912759  0.49318960
+5720	 -6.27287387	 -0.00054086	  0.00033140	  7.27233301	  0.99834764	  0.99912774  0.49318965
+5721	 -6.27287409	 -0.00054076	  0.00033134	  7.27233333	  0.99834793	  0.99912789  0.49318963
+5722	 -6.27287432	 -0.00054067	  0.00033128	  7.27233365	  0.99834822	  0.99912805  0.49318967
+5723	 -6.27287455	 -0.00054058	  0.00033123	  7.27233397	  0.99834851	  0.99912820  0.49318974
+5724	 -6.27287477	 -0.00054048	  0.00033117	  7.27233429	  0.99834880	  0.99912835  0.49318975
+5725	 -6.27287500	 -0.00054039	  0.00033111	  7.27233461	  0.99834908	  0.99912850  0.49318982
+5726	 -6.27287522	 -0.00054029	  0.00033105	  7.27233493	  0.99834937	  0.99912865  0.49318976
+5727	 -6.27287545	 -0.00054020	  0.00033100	  7.27233525	  0.99834966	  0.99912881  0.49318982
+5728	 -6.27287568	 -0.00054010	  0.00033094	  7.27233557	  0.99834995	  0.99912896  0.49318990
+5729	 -6.27287590	 -0.00054001	  0.00033088	  7.27233589	  0.99835024	  0.99912911  0.49318991
+5730	 -6.27287613	 -0.00053992	  0.00033082	  7.27233621	  0.99835052	  0.99912926  0.49318988
+5731	 -6.27287635	 -0.00053982	  0.00033076	  7.27233653	  0.99835081	  0.99912941  0.49319001
+5732	 -6.27287658	 -0.00053973	  0.00033071	  7.27233685	  0.99835110	  0.99912957  0.49318998
+5733	 -6.27287680	 -0.00053963	  0.00033065	  7.27233717	  0.99835139	  0.99912972  0.49319007
+5734	 -6.27287703	 -0.00053954	  0.00033059	  7.27233749	  0.99835168	  0.99912987  0.49319009
+5735	 -6.27287725	 -0.00053945	  0.00033053	  7.27233781	  0.99835196	  0.99913002  0.49319013
+5736	 -6.27287748	 -0.00053935	  0.00033048	  7.27233812	  0.99835225	  0.99913017  0.49319012
+5737	 -6.27287770	 -0.00053926	  0.00033042	  7.27233844	  0.99835254	  0.99913032  0.49319022
+5738	 -6.27287793	 -0.00053916	  0.00033036	  7.27233876	  0.99835282	  0.99913048  0.49319019
+5739	 -6.27287815	 -0.00053907	  0.00033030	  7.27233908	  0.99835311	  0.99913063  0.49319021
+5740	 -6.27287838	 -0.00053898	  0.00033025	  7.27233940	  0.99835340	  0.99913078  0.49319029
+5741	 -6.27287860	 -0.00053888	  0.00033019	  7.27233972	  0.99835368	  0.99913093  0.49319029
+5742	 -6.27287882	 -0.00053879	  0.00033013	  7.27234004	  0.99835397	  0.99913108  0.49319033
+5743	 -6.27287905	 -0.00053869	  0.00033007	  7.27234035	  0.99835426	  0.99913123  0.49319038
+5744	 -6.27287927	 -0.00053860	  0.00033002	  7.27234067	  0.99835454	  0.99913138  0.49319044
+5745	 -6.27287950	 -0.00053851	  0.00032996	  7.27234099	  0.99835483	  0.99913153  0.49319044
+5746	 -6.27287972	 -0.00053841	  0.00032990	  7.27234131	  0.99835512	  0.99913169  0.49319052
+5747	 -6.27287994	 -0.00053832	  0.00032984	  7.27234162	  0.99835540	  0.99913184  0.49319053
+5748	 -6.27288017	 -0.00053823	  0.00032979	  7.27234194	  0.99835569	  0.99913199  0.49319055
+5749	 -6.27288039	 -0.00053813	  0.00032973	  7.27234226	  0.99835598	  0.99913214  0.49319059
+5750	 -6.27288062	 -0.00053804	  0.00032967	  7.27234258	  0.99835626	  0.99913229  0.49319064
+5751	 -6.27288084	 -0.00053795	  0.00032961	  7.27234289	  0.99835655	  0.99913244  0.49319065
+5752	 -6.27288106	 -0.00053785	  0.00032956	  7.27234321	  0.99835683	  0.99913259  0.49319063
+5753	 -6.27288129	 -0.00053776	  0.00032950	  7.27234353	  0.99835712	  0.99913274  0.49319073
+5754	 -6.27288151	 -0.00053767	  0.00032944	  7.27234385	  0.99835740	  0.99913289  0.49319071
+5755	 -6.27288173	 -0.00053757	  0.00032938	  7.27234416	  0.99835769	  0.99913304  0.49319080
+5756	 -6.27288196	 -0.00053748	  0.00032933	  7.27234448	  0.99835797	  0.99913319  0.49319079
+5757	 -6.27288218	 -0.00053739	  0.00032927	  7.27234480	  0.99835826	  0.99913334  0.49319084
+5758	 -6.27288240	 -0.00053729	  0.00032921	  7.27234511	  0.99835854	  0.99913349  0.49319094
+5759	 -6.27288263	 -0.00053720	  0.00032916	  7.27234543	  0.99835883	  0.99913365  0.49319090
+5760	 -6.27288285	 -0.00053711	  0.00032910	  7.27234574	  0.99835911	  0.99913380  0.49319093
+5761	 -6.27288307	 -0.00053701	  0.00032904	  7.27234606	  0.99835940	  0.99913395  0.49319095
+5762	 -6.27288330	 -0.00053692	  0.00032898	  7.27234638	  0.99835968	  0.99913410  0.49319102
+5763	 -6.27288352	 -0.00053683	  0.00032893	  7.27234669	  0.99835997	  0.99913425  0.49319110
+5764	 -6.27288374	 -0.00053673	  0.00032887	  7.27234701	  0.99836025	  0.99913440  0.49319107
+5765	 -6.27288396	 -0.00053664	  0.00032881	  7.27234732	  0.99836054	  0.99913455  0.49319115
+5766	 -6.27288419	 -0.00053655	  0.00032876	  7.27234764	  0.99836082	  0.99913470  0.49319113
+5767	 -6.27288441	 -0.00053645	  0.00032870	  7.27234795	  0.99836111	  0.99913485  0.49319119
+5768	 -6.27288463	 -0.00053636	  0.00032864	  7.27234827	  0.99836139	  0.99913500  0.49319119
+5769	 -6.27288485	 -0.00053627	  0.00032859	  7.27234859	  0.99836167	  0.99913515  0.49319124
+5770	 -6.27288508	 -0.00053618	  0.00032853	  7.27234890	  0.99836196	  0.99913530  0.49319131
+5771	 -6.27288530	 -0.00053608	  0.00032847	  7.27234922	  0.99836224	  0.99913545  0.49319132
+5772	 -6.27288552	 -0.00053599	  0.00032841	  7.27234953	  0.99836253	  0.99913560  0.49319134
+5773	 -6.27288574	 -0.00053590	  0.00032836	  7.27234985	  0.99836281	  0.99913575  0.49319141
+5774	 -6.27288596	 -0.00053580	  0.00032830	  7.27235016	  0.99836309	  0.99913590  0.49319142
+5775	 -6.27288619	 -0.00053571	  0.00032824	  7.27235047	  0.99836338	  0.99913604  0.49319138
+5776	 -6.27288641	 -0.00053562	  0.00032819	  7.27235079	  0.99836366	  0.99913619  0.49319145
+5777	 -6.27288663	 -0.00053553	  0.00032813	  7.27235110	  0.99836394	  0.99913634  0.49319149
+5778	 -6.27288685	 -0.00053543	  0.00032807	  7.27235142	  0.99836423	  0.99913649  0.49319155
+5779	 -6.27288707	 -0.00053534	  0.00032802	  7.27235173	  0.99836451	  0.99913664  0.49319156
+5780	 -6.27288729	 -0.00053525	  0.00032796	  7.27235205	  0.99836479	  0.99913679  0.49319156
+5781	 -6.27288752	 -0.00053516	  0.00032790	  7.27235236	  0.99836507	  0.99913694  0.49319162
+5782	 -6.27288774	 -0.00053506	  0.00032785	  7.27235267	  0.99836536	  0.99913709  0.49319169
+5783	 -6.27288796	 -0.00053497	  0.00032779	  7.27235299	  0.99836564	  0.99913724  0.49319169
+5784	 -6.27288818	 -0.00053488	  0.00032773	  7.27235330	  0.99836592	  0.99913739  0.49319176
+5785	 -6.27288840	 -0.00053479	  0.00032768	  7.27235361	  0.99836620	  0.99913754  0.49319177
+5786	 -6.27288862	 -0.00053469	  0.00032762	  7.27235393	  0.99836649	  0.99913769  0.49319182
+5787	 -6.27288884	 -0.00053460	  0.00032756	  7.27235424	  0.99836677	  0.99913784  0.49319183
+5788	 -6.27288906	 -0.00053451	  0.00032751	  7.27235455	  0.99836705	  0.99913798  0.49319186
+5789	 -6.27288928	 -0.00053442	  0.00032745	  7.27235487	  0.99836733	  0.99913813  0.49319195
+5790	 -6.27288950	 -0.00053432	  0.00032739	  7.27235518	  0.99836762	  0.99913828  0.49319191
+5791	 -6.27288973	 -0.00053423	  0.00032734	  7.27235549	  0.99836790	  0.99913843  0.49319195
+5792	 -6.27288995	 -0.00053414	  0.00032728	  7.27235581	  0.99836818	  0.99913858  0.49319198
+5793	 -6.27289017	 -0.00053405	  0.00032722	  7.27235612	  0.99836846	  0.99913873  0.49319204
+5794	 -6.27289039	 -0.00053396	  0.00032717	  7.27235643	  0.99836874	  0.99913888  0.49319208
+5795	 -6.27289061	 -0.00053386	  0.00032711	  7.27235674	  0.99836902	  0.99913903  0.49319213
+5796	 -6.27289083	 -0.00053377	  0.00032705	  7.27235706	  0.99836931	  0.99913917  0.49319212
+5797	 -6.27289105	 -0.00053368	  0.00032700	  7.27235737	  0.99836959	  0.99913932  0.49319218
+5798	 -6.27289127	 -0.00053359	  0.00032694	  7.27235768	  0.99836987	  0.99913947  0.49319222
+5799	 -6.27289149	 -0.00053350	  0.00032689	  7.27235799	  0.99837015	  0.99913962  0.49319223
+5800	 -6.27289171	 -0.00053340	  0.00032683	  7.27235830	  0.99837043	  0.99913977  0.49319229
+5801	 -6.27289193	 -0.00053331	  0.00032677	  7.27235862	  0.99837071	  0.99913992  0.49319228
+5802	 -6.27289215	 -0.00053322	  0.00032672	  7.27235893	  0.99837099	  0.99914006  0.49319230
+5803	 -6.27289237	 -0.00053313	  0.00032666	  7.27235924	  0.99837127	  0.99914021  0.49319236
+5804	 -6.27289259	 -0.00053304	  0.00032660	  7.27235955	  0.99837155	  0.99914036  0.49319240
+5805	 -6.27289281	 -0.00053294	  0.00032655	  7.27235986	  0.99837183	  0.99914051  0.49319244
+5806	 -6.27289303	 -0.00053285	  0.00032649	  7.27236017	  0.99837211	  0.99914066  0.49319243
+5807	 -6.27289325	 -0.00053276	  0.00032643	  7.27236048	  0.99837239	  0.99914080  0.49319249
+5808	 -6.27289346	 -0.00053267	  0.00032638	  7.27236080	  0.99837267	  0.99914095  0.49319257
+5809	 -6.27289368	 -0.00053258	  0.00032632	  7.27236111	  0.99837295	  0.99914110  0.49319253
+5810	 -6.27289390	 -0.00053249	  0.00032627	  7.27236142	  0.99837323	  0.99914125  0.49319261
+5811	 -6.27289412	 -0.00053239	  0.00032621	  7.27236173	  0.99837351	  0.99914140  0.49319263
+5812	 -6.27289434	 -0.00053230	  0.00032615	  7.27236204	  0.99837379	  0.99914154  0.49319267
+5813	 -6.27289456	 -0.00053221	  0.00032610	  7.27236235	  0.99837407	  0.99914169  0.49319271
+5814	 -6.27289478	 -0.00053212	  0.00032604	  7.27236266	  0.99837435	  0.99914184  0.49319271
+5815	 -6.27289500	 -0.00053203	  0.00032599	  7.27236297	  0.99837463	  0.99914199  0.49319270
+5816	 -6.27289522	 -0.00053194	  0.00032593	  7.27236328	  0.99837491	  0.99914213  0.49319278
+5817	 -6.27289544	 -0.00053185	  0.00032587	  7.27236359	  0.99837519	  0.99914228  0.49319281
+5818	 -6.27289565	 -0.00053175	  0.00032582	  7.27236390	  0.99837547	  0.99914243  0.49319284
+5819	 -6.27289587	 -0.00053166	  0.00032576	  7.27236421	  0.99837575	  0.99914258  0.49319286
+5820	 -6.27289609	 -0.00053157	  0.00032571	  7.27236452	  0.99837603	  0.99914272  0.49319287
+5821	 -6.27289631	 -0.00053148	  0.00032565	  7.27236483	  0.99837631	  0.99914287  0.49319297
+5822	 -6.27289653	 -0.00053139	  0.00032559	  7.27236514	  0.99837659	  0.99914302  0.49319300
+5823	 -6.27289675	 -0.00053130	  0.00032554	  7.27236545	  0.99837687	  0.99914316  0.49319302
+5824	 -6.27289696	 -0.00053121	  0.00032548	  7.27236576	  0.99837714	  0.99914331  0.49319305
+5825	 -6.27289718	 -0.00053112	  0.00032543	  7.27236607	  0.99837742	  0.99914346  0.49319306
+5826	 -6.27289740	 -0.00053102	  0.00032537	  7.27236638	  0.99837770	  0.99914361  0.49319318
+5827	 -6.27289762	 -0.00053093	  0.00032531	  7.27236668	  0.99837798	  0.99914375  0.49319313
+5828	 -6.27289784	 -0.00053084	  0.00032526	  7.27236699	  0.99837826	  0.99914390  0.49319318
+5829	 -6.27289805	 -0.00053075	  0.00032520	  7.27236730	  0.99837854	  0.99914405  0.49319320
+5830	 -6.27289827	 -0.00053066	  0.00032515	  7.27236761	  0.99837881	  0.99914419  0.49319315
+5831	 -6.27289849	 -0.00053057	  0.00032509	  7.27236792	  0.99837909	  0.99914434  0.49319329
+5832	 -6.27289871	 -0.00053048	  0.00032504	  7.27236823	  0.99837937	  0.99914449  0.49319329
+5833	 -6.27289892	 -0.00053039	  0.00032498	  7.27236854	  0.99837965	  0.99914463  0.49319336
+5834	 -6.27289914	 -0.00053030	  0.00032492	  7.27236884	  0.99837993	  0.99914478  0.49319338
+5835	 -6.27289936	 -0.00053021	  0.00032487	  7.27236915	  0.99838020	  0.99914493  0.49319340
+5836	 -6.27289958	 -0.00053012	  0.00032481	  7.27236946	  0.99838048	  0.99914507  0.49319339
+5837	 -6.27289979	 -0.00053002	  0.00032476	  7.27236977	  0.99838076	  0.99914522  0.49319350
+5838	 -6.27290001	 -0.00052993	  0.00032470	  7.27237008	  0.99838104	  0.99914536  0.49319352
+5839	 -6.27290023	 -0.00052984	  0.00032465	  7.27237038	  0.99838131	  0.99914551  0.49319359
+5840	 -6.27290044	 -0.00052975	  0.00032459	  7.27237069	  0.99838159	  0.99914566  0.49319354
+5841	 -6.27290066	 -0.00052966	  0.00032453	  7.27237100	  0.99838187	  0.99914580  0.49319355
+5842	 -6.27290088	 -0.00052957	  0.00032448	  7.27237131	  0.99838214	  0.99914595  0.49319365
+5843	 -6.27290109	 -0.00052948	  0.00032442	  7.27237161	  0.99838242	  0.99914610  0.49319372
+5844	 -6.27290131	 -0.00052939	  0.00032437	  7.27237192	  0.99838270	  0.99914624  0.49319371
+5845	 -6.27290153	 -0.00052930	  0.00032431	  7.27237223	  0.99838297	  0.99914639  0.49319369
+5846	 -6.27290174	 -0.00052921	  0.00032426	  7.27237254	  0.99838325	  0.99914653  0.49319379
+5847	 -6.27290196	 -0.00052912	  0.00032420	  7.27237284	  0.99838353	  0.99914668  0.49319379
+5848	 -6.27290218	 -0.00052903	  0.00032415	  7.27237315	  0.99838380	  0.99914683  0.49319387
+5849	 -6.27290239	 -0.00052894	  0.00032409	  7.27237346	  0.99838408	  0.99914697  0.49319384
+5850	 -6.27290261	 -0.00052885	  0.00032404	  7.27237376	  0.99838436	  0.99914712  0.49319390
+5851	 -6.27290283	 -0.00052876	  0.00032398	  7.27237407	  0.99838463	  0.99914726  0.49319391
+5852	 -6.27290304	 -0.00052867	  0.00032392	  7.27237438	  0.99838491	  0.99914741  0.49319397
+5853	 -6.27290326	 -0.00052858	  0.00032387	  7.27237468	  0.99838518	  0.99914755  0.49319399
+5854	 -6.27290347	 -0.00052849	  0.00032381	  7.27237499	  0.99838546	  0.99914770  0.49319399
+5855	 -6.27290369	 -0.00052840	  0.00032376	  7.27237529	  0.99838574	  0.99914785  0.49319402
+5856	 -6.27290391	 -0.00052831	  0.00032370	  7.27237560	  0.99838601	  0.99914799  0.49319410
+5857	 -6.27290412	 -0.00052822	  0.00032365	  7.27237591	  0.99838629	  0.99914814  0.49319411
+5858	 -6.27290434	 -0.00052813	  0.00032359	  7.27237621	  0.99838656	  0.99914828  0.49319417
+5859	 -6.27290455	 -0.00052804	  0.00032354	  7.27237652	  0.99838684	  0.99914843  0.49319421
+5860	 -6.27290477	 -0.00052795	  0.00032348	  7.27237682	  0.99838711	  0.99914857  0.49319423
+5861	 -6.27290498	 -0.00052786	  0.00032343	  7.27237713	  0.99838739	  0.99914872  0.49319424
+5862	 -6.27290520	 -0.00052777	  0.00032337	  7.27237743	  0.99838766	  0.99914886  0.49319429
+5863	 -6.27290541	 -0.00052768	  0.00032332	  7.27237774	  0.99838794	  0.99914901  0.49319426
+5864	 -6.27290563	 -0.00052759	  0.00032326	  7.27237804	  0.99838821	  0.99914915  0.49319434
+5865	 -6.27290584	 -0.00052750	  0.00032321	  7.27237835	  0.99838849	  0.99914930  0.49319436
+5866	 -6.27290606	 -0.00052741	  0.00032315	  7.27237865	  0.99838876	  0.99914944  0.49319441
+5867	 -6.27290627	 -0.00052732	  0.00032310	  7.27237896	  0.99838904	  0.99914959  0.49319443
+5868	 -6.27290649	 -0.00052723	  0.00032304	  7.27237926	  0.99838931	  0.99914973  0.49319450
+5869	 -6.27290670	 -0.00052714	  0.00032299	  7.27237957	  0.99838959	  0.99914988  0.49319447
+5870	 -6.27290692	 -0.00052705	  0.00032293	  7.27237987	  0.99838986	  0.99915002  0.49319454
+5871	 -6.27290713	 -0.00052696	  0.00032288	  7.27238018	  0.99839013	  0.99915017  0.49319453
+5872	 -6.27290735	 -0.00052687	  0.00032282	  7.27238048	  0.99839041	  0.99915031  0.49319457
+5873	 -6.27290756	 -0.00052678	  0.00032277	  7.27238078	  0.99839068	  0.99915046  0.49319463
+5874	 -6.27290778	 -0.00052669	  0.00032271	  7.27238109	  0.99839096	  0.99915060  0.49319468
+5875	 -6.27290799	 -0.00052660	  0.00032266	  7.27238139	  0.99839123	  0.99915075  0.49319471
+5876	 -6.27290821	 -0.00052651	  0.00032260	  7.27238170	  0.99839150	  0.99915089  0.49319472
+5877	 -6.27290842	 -0.00052642	  0.00032255	  7.27238200	  0.99839178	  0.99915103  0.49319477
+5878	 -6.27290863	 -0.00052633	  0.00032249	  7.27238230	  0.99839205	  0.99915118  0.49319479
+5879	 -6.27290885	 -0.00052624	  0.00032244	  7.27238261	  0.99839232	  0.99915132  0.49319479
+5880	 -6.27290906	 -0.00052615	  0.00032238	  7.27238291	  0.99839260	  0.99915147  0.49319486
+5881	 -6.27290928	 -0.00052606	  0.00032233	  7.27238321	  0.99839287	  0.99915161  0.49319496
+5882	 -6.27290949	 -0.00052597	  0.00032227	  7.27238352	  0.99839314	  0.99915176  0.49319494
+5883	 -6.27290970	 -0.00052588	  0.00032222	  7.27238382	  0.99839342	  0.99915190  0.49319490
+5884	 -6.27290992	 -0.00052579	  0.00032216	  7.27238412	  0.99839369	  0.99915204  0.49319495
+5885	 -6.27291013	 -0.00052570	  0.00032211	  7.27238443	  0.99839396	  0.99915219  0.49319503
+5886	 -6.27291034	 -0.00052561	  0.00032205	  7.27238473	  0.99839424	  0.99915233  0.49319499
+5887	 -6.27291056	 -0.00052553	  0.00032200	  7.27238503	  0.99839451	  0.99915248  0.49319506
+5888	 -6.27291077	 -0.00052544	  0.00032194	  7.27238534	  0.99839478	  0.99915262  0.49319516
+5889	 -6.27291098	 -0.00052535	  0.00032189	  7.27238564	  0.99839505	  0.99915276  0.49319515
+5890	 -6.27291120	 -0.00052526	  0.00032183	  7.27238594	  0.99839533	  0.99915291  0.49319519
+5891	 -6.27291141	 -0.00052517	  0.00032178	  7.27238624	  0.99839560	  0.99915305  0.49319519
+5892	 -6.27291162	 -0.00052508	  0.00032173	  7.27238654	  0.99839587	  0.99915320  0.49319522
+5893	 -6.27291184	 -0.00052499	  0.00032167	  7.27238685	  0.99839614	  0.99915334  0.49319528
+5894	 -6.27291205	 -0.00052490	  0.00032162	  7.27238715	  0.99839642	  0.99915348  0.49319533
+5895	 -6.27291226	 -0.00052481	  0.00032156	  7.27238745	  0.99839669	  0.99915363  0.49319536
+5896	 -6.27291248	 -0.00052472	  0.00032151	  7.27238775	  0.99839696	  0.99915377  0.49319537
+5897	 -6.27291269	 -0.00052463	  0.00032145	  7.27238805	  0.99839723	  0.99915391  0.49319544
+5898	 -6.27291290	 -0.00052455	  0.00032140	  7.27238836	  0.99839750	  0.99915406  0.49319545
+5899	 -6.27291311	 -0.00052446	  0.00032134	  7.27238866	  0.99839777	  0.99915420  0.49319547
+5900	 -6.27291333	 -0.00052437	  0.00032129	  7.27238896	  0.99839805	  0.99915434  0.49319547
+5901	 -6.27291354	 -0.00052428	  0.00032123	  7.27238926	  0.99839832	  0.99915449  0.49319552
+5902	 -6.27291375	 -0.00052419	  0.00032118	  7.27238956	  0.99839859	  0.99915463  0.49319555
+5903	 -6.27291396	 -0.00052410	  0.00032113	  7.27238986	  0.99839886	  0.99915477  0.49319555
+5904	 -6.27291418	 -0.00052401	  0.00032107	  7.27239016	  0.99839913	  0.99915492  0.49319565
+5905	 -6.27291439	 -0.00052392	  0.00032102	  7.27239046	  0.99839940	  0.99915506  0.49319563
+5906	 -6.27291460	 -0.00052384	  0.00032096	  7.27239077	  0.99839967	  0.99915520  0.49319565
+5907	 -6.27291481	 -0.00052375	  0.00032091	  7.27239107	  0.99839994	  0.99915534  0.49319571
+5908	 -6.27291503	 -0.00052366	  0.00032085	  7.27239137	  0.99840021	  0.99915549  0.49319576
+5909	 -6.27291524	 -0.00052357	  0.00032080	  7.27239167	  0.99840049	  0.99915563  0.49319577
+5910	 -6.27291545	 -0.00052348	  0.00032075	  7.27239197	  0.99840076	  0.99915577  0.49319579
+5911	 -6.27291566	 -0.00052339	  0.00032069	  7.27239227	  0.99840103	  0.99915592  0.49319582
+5912	 -6.27291587	 -0.00052330	  0.00032064	  7.27239257	  0.99840130	  0.99915606  0.49319587
+5913	 -6.27291608	 -0.00052322	  0.00032058	  7.27239287	  0.99840157	  0.99915620  0.49319592
+5914	 -6.27291630	 -0.00052313	  0.00032053	  7.27239317	  0.99840184	  0.99915634  0.49319593
+5915	 -6.27291651	 -0.00052304	  0.00032047	  7.27239347	  0.99840211	  0.99915649  0.49319594
+5916	 -6.27291672	 -0.00052295	  0.00032042	  7.27239377	  0.99840238	  0.99915663  0.49319596
+5917	 -6.27291693	 -0.00052286	  0.00032037	  7.27239407	  0.99840265	  0.99915677  0.49319602
+5918	 -6.27291714	 -0.00052277	  0.00032031	  7.27239437	  0.99840292	  0.99915691  0.49319607
+5919	 -6.27291735	 -0.00052269	  0.00032026	  7.27239467	  0.99840319	  0.99915706  0.49319609
+5920	 -6.27291756	 -0.00052260	  0.00032020	  7.27239497	  0.99840346	  0.99915720  0.49319609
+5921	 -6.27291777	 -0.00052251	  0.00032015	  7.27239526	  0.99840373	  0.99915734  0.49319619
+5922	 -6.27291799	 -0.00052242	  0.00032010	  7.27239556	  0.99840400	  0.99915748  0.49319624
+5923	 -6.27291820	 -0.00052233	  0.00032004	  7.27239586	  0.99840427	  0.99915763  0.49319616
+5924	 -6.27291841	 -0.00052225	  0.00031999	  7.27239616	  0.99840453	  0.99915777  0.49319625
+5925	 -6.27291862	 -0.00052216	  0.00031993	  7.27239646	  0.99840480	  0.99915791  0.49319632
+5926	 -6.27291883	 -0.00052207	  0.00031988	  7.27239676	  0.99840507	  0.99915805  0.49319625
+5927	 -6.27291904	 -0.00052198	  0.00031983	  7.27239706	  0.99840534	  0.99915819  0.49319634
+5928	 -6.27291925	 -0.00052189	  0.00031977	  7.27239736	  0.99840561	  0.99915834  0.49319638
+5929	 -6.27291946	 -0.00052180	  0.00031972	  7.27239766	  0.99840588	  0.99915848  0.49319640
+5930	 -6.27291967	 -0.00052172	  0.00031966	  7.27239795	  0.99840615	  0.99915862  0.49319643
+5931	 -6.27291988	 -0.00052163	  0.00031961	  7.27239825	  0.99840642	  0.99915876  0.49319646
+5932	 -6.27292009	 -0.00052154	  0.00031956	  7.27239855	  0.99840669	  0.99915890  0.49319643
+5933	 -6.27292030	 -0.00052145	  0.00031950	  7.27239885	  0.99840695	  0.99915904  0.49319651
+5934	 -6.27292051	 -0.00052137	  0.00031945	  7.27239915	  0.99840722	  0.99915919  0.49319652
+5935	 -6.27292072	 -0.00052128	  0.00031939	  7.27239944	  0.99840749	  0.99915933  0.49319657
+5936	 -6.27292093	 -0.00052119	  0.00031934	  7.27239974	  0.99840776	  0.99915947  0.49319663
+5937	 -6.27292114	 -0.00052110	  0.00031929	  7.27240004	  0.99840803	  0.99915961  0.49319665
+5938	 -6.27292135	 -0.00052101	  0.00031923	  7.27240034	  0.99840830	  0.99915975  0.49319671
+5939	 -6.27292156	 -0.00052093	  0.00031918	  7.27240063	  0.99840856	  0.99915989  0.49319676
+5940	 -6.27292177	 -0.00052084	  0.00031913	  7.27240093	  0.99840883	  0.99916004  0.49319677
+5941	 -6.27292198	 -0.00052075	  0.00031907	  7.27240123	  0.99840910	  0.99916018  0.49319672
+5942	 -6.27292219	 -0.00052066	  0.00031902	  7.27240153	  0.99840937	  0.99916032  0.49319676
+5943	 -6.27292240	 -0.00052058	  0.00031896	  7.27240182	  0.99840964	  0.99916046  0.49319684
+5944	 -6.27292261	 -0.00052049	  0.00031891	  7.27240212	  0.99840990	  0.99916060  0.49319683
+5945	 -6.27292282	 -0.00052040	  0.00031886	  7.27240242	  0.99841017	  0.99916074  0.49319688
+5946	 -6.27292303	 -0.00052031	  0.00031880	  7.27240271	  0.99841044	  0.99916088  0.49319696
+5947	 -6.27292324	 -0.00052023	  0.00031875	  7.27240301	  0.99841070	  0.99916102  0.49319696
+5948	 -6.27292345	 -0.00052014	  0.00031870	  7.27240331	  0.99841097	  0.99916117  0.49319698
+5949	 -6.27292366	 -0.00052005	  0.00031864	  7.27240360	  0.99841124	  0.99916131  0.49319702
+5950	 -6.27292386	 -0.00051996	  0.00031859	  7.27240390	  0.99841151	  0.99916145  0.49319705
+5951	 -6.27292407	 -0.00051988	  0.00031854	  7.27240420	  0.99841177	  0.99916159  0.49319708
+5952	 -6.27292428	 -0.00051979	  0.00031848	  7.27240449	  0.99841204	  0.99916173  0.49319705
+5953	 -6.27292449	 -0.00051970	  0.00031843	  7.27240479	  0.99841231	  0.99916187  0.49319715
+5954	 -6.27292470	 -0.00051962	  0.00031837	  7.27240508	  0.99841257	  0.99916201  0.49319716
+5955	 -6.27292491	 -0.00051953	  0.00031832	  7.27240538	  0.99841284	  0.99916215  0.49319722
+5956	 -6.27292512	 -0.00051944	  0.00031827	  7.27240568	  0.99841311	  0.99916229  0.49319725
+5957	 -6.27292533	 -0.00051935	  0.00031821	  7.27240597	  0.99841337	  0.99916243  0.49319725
+5958	 -6.27292553	 -0.00051927	  0.00031816	  7.27240627	  0.99841364	  0.99916257  0.49319734
+5959	 -6.27292574	 -0.00051918	  0.00031811	  7.27240656	  0.99841390	  0.99916271  0.49319744
+5960	 -6.27292595	 -0.00051909	  0.00031805	  7.27240686	  0.99841417	  0.99916285  0.49319739
+5961	 -6.27292616	 -0.00051901	  0.00031800	  7.27240715	  0.99841444	  0.99916299  0.49319736
+5962	 -6.27292637	 -0.00051892	  0.00031795	  7.27240745	  0.99841470	  0.99916313  0.49319748
+5963	 -6.27292658	 -0.00051883	  0.00031789	  7.27240774	  0.99841497	  0.99916327  0.49319747
+5964	 -6.27292678	 -0.00051874	  0.00031784	  7.27240804	  0.99841523	  0.99916341  0.49319748
+5965	 -6.27292699	 -0.00051866	  0.00031779	  7.27240833	  0.99841550	  0.99916355  0.49319753
+5966	 -6.27292720	 -0.00051857	  0.00031773	  7.27240863	  0.99841577	  0.99916369  0.49319759
+5967	 -6.27292741	 -0.00051848	  0.00031768	  7.27240892	  0.99841603	  0.99916384  0.49319759
+5968	 -6.27292762	 -0.00051840	  0.00031763	  7.27240922	  0.99841630	  0.99916398  0.49319759
+5969	 -6.27292782	 -0.00051831	  0.00031757	  7.27240951	  0.99841656	  0.99916412  0.49319764
+5970	 -6.27292803	 -0.00051822	  0.00031752	  7.27240981	  0.99841683	  0.99916426  0.49319769
+5971	 -6.27292824	 -0.00051814	  0.00031747	  7.27241010	  0.99841709	  0.99916440  0.49319768
+5972	 -6.27292845	 -0.00051805	  0.00031742	  7.27241040	  0.99841736	  0.99916453  0.49319773
+5973	 -6.27292865	 -0.00051796	  0.00031736	  7.27241069	  0.99841762	  0.99916467  0.49319777
+5974	 -6.27292886	 -0.00051788	  0.00031731	  7.27241098	  0.99841789	  0.99916481  0.49319789
+5975	 -6.27292907	 -0.00051779	  0.00031726	  7.27241128	  0.99841815	  0.99916495  0.49319781
+5976	 -6.27292927	 -0.00051770	  0.00031720	  7.27241157	  0.99841842	  0.99916509  0.49319785
+5977	 -6.27292948	 -0.00051762	  0.00031715	  7.27241186	  0.99841868	  0.99916523  0.49319784
+5978	 -6.27292969	 -0.00051753	  0.00031710	  7.27241216	  0.99841895	  0.99916537  0.49319795
+5979	 -6.27292990	 -0.00051744	  0.00031704	  7.27241245	  0.99841921	  0.99916551  0.49319794
+5980	 -6.27293010	 -0.00051736	  0.00031699	  7.27241275	  0.99841947	  0.99916565  0.49319797
+5981	 -6.27293031	 -0.00051727	  0.00031694	  7.27241304	  0.99841974	  0.99916579  0.49319807
+5982	 -6.27293052	 -0.00051718	  0.00031688	  7.27241333	  0.99842000	  0.99916593  0.49319800
+5983	 -6.27293072	 -0.00051710	  0.00031683	  7.27241363	  0.99842027	  0.99916607  0.49319809
+5984	 -6.27293093	 -0.00051701	  0.00031678	  7.27241392	  0.99842053	  0.99916621  0.49319811
+5985	 -6.27293114	 -0.00051693	  0.00031673	  7.27241421	  0.99842079	  0.99916635  0.49319811
+5986	 -6.27293134	 -0.00051684	  0.00031667	  7.27241450	  0.99842106	  0.99916649  0.49319817
+5987	 -6.27293155	 -0.00051675	  0.00031662	  7.27241480	  0.99842132	  0.99916663  0.49319820
+5988	 -6.27293176	 -0.00051667	  0.00031657	  7.27241509	  0.99842159	  0.99916677  0.49319821
+5989	 -6.27293196	 -0.00051658	  0.00031651	  7.27241538	  0.99842185	  0.99916691  0.49319833
+5990	 -6.27293217	 -0.00051649	  0.00031646	  7.27241567	  0.99842211	  0.99916704  0.49319829
+5991	 -6.27293237	 -0.00051641	  0.00031641	  7.27241597	  0.99842238	  0.99916718  0.49319831
+5992	 -6.27293258	 -0.00051632	  0.00031636	  7.27241626	  0.99842264	  0.99916732  0.49319838
+5993	 -6.27293279	 -0.00051624	  0.00031630	  7.27241655	  0.99842290	  0.99916746  0.49319843
+5994	 -6.27293299	 -0.00051615	  0.00031625	  7.27241684	  0.99842316	  0.99916760  0.49319840
+5995	 -6.27293320	 -0.00051606	  0.00031620	  7.27241713	  0.99842343	  0.99916774  0.49319841
+5996	 -6.27293340	 -0.00051598	  0.00031614	  7.27241743	  0.99842369	  0.99916788  0.49319849
+5997	 -6.27293361	 -0.00051589	  0.00031609	  7.27241772	  0.99842395	  0.99916802  0.49319850
+5998	 -6.27293382	 -0.00051581	  0.00031604	  7.27241801	  0.99842422	  0.99916816  0.49319856
+5999	 -6.27293402	 -0.00051572	  0.00031599	  7.27241830	  0.99842448	  0.99916829  0.49319860
+6000	 -6.27293423	 -0.00051563	  0.00031593	  7.27241859	  0.99842474	  0.99916843  0.49319855
+6001	 -6.27293443	 -0.00051555	  0.00031588	  7.27241888	  0.99842500	  0.99916857  0.49319861
+6002	 -6.27293464	 -0.00051546	  0.00031583	  7.27241918	  0.99842527	  0.99916871  0.49319870
+6003	 -6.27293484	 -0.00051538	  0.00031578	  7.27241947	  0.99842553	  0.99916885  0.49319866
+6004	 -6.27293505	 -0.00051529	  0.00031572	  7.27241976	  0.99842579	  0.99916899  0.49319873
+6005	 -6.27293525	 -0.00051520	  0.00031567	  7.27242005	  0.99842605	  0.99916912  0.49319872
+6006	 -6.27293546	 -0.00051512	  0.00031562	  7.27242034	  0.99842632	  0.99916926  0.49319875
+6007	 -6.27293566	 -0.00051503	  0.00031557	  7.27242063	  0.99842658	  0.99916940  0.49319885
+6008	 -6.27293587	 -0.00051495	  0.00031551	  7.27242092	  0.99842684	  0.99916954  0.49319881
+6009	 -6.27293607	 -0.00051486	  0.00031546	  7.27242121	  0.99842710	  0.99916968  0.49319885
+6010	 -6.27293628	 -0.00051478	  0.00031541	  7.27242150	  0.99842736	  0.99916982  0.49319897
+6011	 -6.27293648	 -0.00051469	  0.00031536	  7.27242179	  0.99842762	  0.99916995  0.49319898
+6012	 -6.27293669	 -0.00051461	  0.00031530	  7.27242208	  0.99842789	  0.99917009  0.49319895
+6013	 -6.27293689	 -0.00051452	  0.00031525	  7.27242237	  0.99842815	  0.99917023  0.49319902
+6014	 -6.27293710	 -0.00051443	  0.00031520	  7.27242266	  0.99842841	  0.99917037  0.49319899
+6015	 -6.27293730	 -0.00051435	  0.00031515	  7.27242295	  0.99842867	  0.99917051  0.49319907
+6016	 -6.27293751	 -0.00051426	  0.00031509	  7.27242324	  0.99842893	  0.99917064  0.49319910
+6017	 -6.27293771	 -0.00051418	  0.00031504	  7.27242353	  0.99842919	  0.99917078  0.49319911
+6018	 -6.27293792	 -0.00051409	  0.00031499	  7.27242382	  0.99842945	  0.99917092  0.49319911
+6019	 -6.27293812	 -0.00051401	  0.00031494	  7.27242411	  0.99842971	  0.99917106  0.49319918
+6020	 -6.27293832	 -0.00051392	  0.00031488	  7.27242440	  0.99842997	  0.99917119  0.49319923
+6021	 -6.27293853	 -0.00051384	  0.00031483	  7.27242469	  0.99843024	  0.99917133  0.49319919
+6022	 -6.27293873	 -0.00051375	  0.00031478	  7.27242498	  0.99843050	  0.99917147  0.49319924
+6023	 -6.27293894	 -0.00051367	  0.00031473	  7.27242527	  0.99843076	  0.99917161  0.49319925
+6024	 -6.27293914	 -0.00051358	  0.00031467	  7.27242556	  0.99843102	  0.99917174  0.49319934
+6025	 -6.27293934	 -0.00051350	  0.00031462	  7.27242585	  0.99843128	  0.99917188  0.49319932
+6026	 -6.27293955	 -0.00051341	  0.00031457	  7.27242614	  0.99843154	  0.99917202  0.49319938
+6027	 -6.27293975	 -0.00051333	  0.00031452	  7.27242643	  0.99843180	  0.99917216  0.49319942
+6028	 -6.27293995	 -0.00051324	  0.00031447	  7.27242671	  0.99843206	  0.99917229  0.49319947
+6029	 -6.27294016	 -0.00051315	  0.00031441	  7.27242700	  0.99843232	  0.99917243  0.49319948
+6030	 -6.27294036	 -0.00051307	  0.00031436	  7.27242729	  0.99843258	  0.99917257  0.49319954
+6031	 -6.27294057	 -0.00051298	  0.00031431	  7.27242758	  0.99843284	  0.99917271  0.49319956
+6032	 -6.27294077	 -0.00051290	  0.00031426	  7.27242787	  0.99843310	  0.99917284  0.49319957
+6033	 -6.27294097	 -0.00051281	  0.00031421	  7.27242816	  0.99843336	  0.99917298  0.49319962
+6034	 -6.27294118	 -0.00051273	  0.00031415	  7.27242845	  0.99843362	  0.99917312  0.49319969
+6035	 -6.27294138	 -0.00051265	  0.00031410	  7.27242873	  0.99843388	  0.99917325  0.49319972
+6036	 -6.27294158	 -0.00051256	  0.00031405	  7.27242902	  0.99843414	  0.99917339  0.49319967
+6037	 -6.27294178	 -0.00051248	  0.00031400	  7.27242931	  0.99843439	  0.99917353  0.49319971
+6038	 -6.27294199	 -0.00051239	  0.00031395	  7.27242960	  0.99843465	  0.99917366  0.49319975
+6039	 -6.27294219	 -0.00051231	  0.00031389	  7.27242988	  0.99843491	  0.99917380  0.49319976
+6040	 -6.27294239	 -0.00051222	  0.00031384	  7.27243017	  0.99843517	  0.99917394  0.49319985
+6041	 -6.27294260	 -0.00051214	  0.00031379	  7.27243046	  0.99843543	  0.99917407  0.49319980
+6042	 -6.27294280	 -0.00051205	  0.00031374	  7.27243075	  0.99843569	  0.99917421  0.49319987
+6043	 -6.27294300	 -0.00051197	  0.00031369	  7.27243103	  0.99843595	  0.99917435  0.49319991
+6044	 -6.27294320	 -0.00051188	  0.00031363	  7.27243132	  0.99843621	  0.99917448  0.49319996
+6045	 -6.27294341	 -0.00051180	  0.00031358	  7.27243161	  0.99843647	  0.99917462  0.49320001
+6046	 -6.27294361	 -0.00051171	  0.00031353	  7.27243190	  0.99843673	  0.99917476  0.49319998
+6047	 -6.27294381	 -0.00051163	  0.00031348	  7.27243218	  0.99843698	  0.99917489  0.49320000
+6048	 -6.27294401	 -0.00051154	  0.00031343	  7.27243247	  0.99843724	  0.99917503  0.49320003
+6049	 -6.27294422	 -0.00051146	  0.00031337	  7.27243276	  0.99843750	  0.99917517  0.49320007
+6050	 -6.27294442	 -0.00051137	  0.00031332	  7.27243304	  0.99843776	  0.99917530  0.49320006
+6051	 -6.27294462	 -0.00051129	  0.00031327	  7.27243333	  0.99843802	  0.99917544  0.49320012
+6052	 -6.27294482	 -0.00051121	  0.00031322	  7.27243362	  0.99843827	  0.99917558  0.49320018
+6053	 -6.27294502	 -0.00051112	  0.00031317	  7.27243390	  0.99843853	  0.99917571  0.49320018
+6054	 -6.27294523	 -0.00051104	  0.00031312	  7.27243419	  0.99843879	  0.99917585  0.49320017
+6055	 -6.27294543	 -0.00051095	  0.00031306	  7.27243448	  0.99843905	  0.99917598  0.49320022
+6056	 -6.27294563	 -0.00051087	  0.00031301	  7.27243476	  0.99843931	  0.99917612  0.49320033
+6057	 -6.27294583	 -0.00051078	  0.00031296	  7.27243505	  0.99843956	  0.99917626  0.49320035
+6058	 -6.27294603	 -0.00051070	  0.00031291	  7.27243533	  0.99843982	  0.99917639  0.49320035
+6059	 -6.27294623	 -0.00051062	  0.00031286	  7.27243562	  0.99844008	  0.99917653  0.49320037
+6060	 -6.27294644	 -0.00051053	  0.00031281	  7.27243590	  0.99844034	  0.99917666  0.49320040
+6061	 -6.27294664	 -0.00051045	  0.00031275	  7.27243619	  0.99844059	  0.99917680  0.49320046
+6062	 -6.27294684	 -0.00051036	  0.00031270	  7.27243648	  0.99844085	  0.99917693  0.49320050
+6063	 -6.27294704	 -0.00051028	  0.00031265	  7.27243676	  0.99844111	  0.99917707  0.49320049
+6064	 -6.27294724	 -0.00051019	  0.00031260	  7.27243705	  0.99844136	  0.99917721  0.49320054
+6065	 -6.27294744	 -0.00051011	  0.00031255	  7.27243733	  0.99844162	  0.99917734  0.49320055
+6066	 -6.27294764	 -0.00051003	  0.00031250	  7.27243762	  0.99844188	  0.99917748  0.49320064
+6067	 -6.27294784	 -0.00050994	  0.00031244	  7.27243790	  0.99844214	  0.99917761  0.49320065
+6068	 -6.27294805	 -0.00050986	  0.00031239	  7.27243819	  0.99844239	  0.99917775  0.49320067
+6069	 -6.27294825	 -0.00050977	  0.00031234	  7.27243847	  0.99844265	  0.99917788  0.49320073
+6070	 -6.27294845	 -0.00050969	  0.00031229	  7.27243876	  0.99844291	  0.99917802  0.49320072
+6071	 -6.27294865	 -0.00050961	  0.00031224	  7.27243904	  0.99844316	  0.99917815  0.49320076
+6072	 -6.27294885	 -0.00050952	  0.00031219	  7.27243933	  0.99844342	  0.99917829  0.49320077
+6073	 -6.27294905	 -0.00050944	  0.00031214	  7.27243961	  0.99844367	  0.99917843  0.49320076
+6074	 -6.27294925	 -0.00050936	  0.00031208	  7.27243989	  0.99844393	  0.99917856  0.49320084
+6075	 -6.27294945	 -0.00050927	  0.00031203	  7.27244018	  0.99844419	  0.99917870  0.49320087
+6076	 -6.27294965	 -0.00050919	  0.00031198	  7.27244046	  0.99844444	  0.99917883  0.49320088
+6077	 -6.27294985	 -0.00050910	  0.00031193	  7.27244075	  0.99844470	  0.99917897  0.49320097
+6078	 -6.27295005	 -0.00050902	  0.00031188	  7.27244103	  0.99844495	  0.99917910  0.49320091
+6079	 -6.27295025	 -0.00050894	  0.00031183	  7.27244132	  0.99844521	  0.99917924  0.49320097
+6080	 -6.27295045	 -0.00050885	  0.00031178	  7.27244160	  0.99844547	  0.99917937  0.49320101
+6081	 -6.27295065	 -0.00050877	  0.00031173	  7.27244188	  0.99844572	  0.99917951  0.49320102
+6082	 -6.27295085	 -0.00050869	  0.00031167	  7.27244217	  0.99844598	  0.99917964  0.49320101
+6083	 -6.27295105	 -0.00050860	  0.00031162	  7.27244245	  0.99844623	  0.99917978  0.49320112
+6084	 -6.27295125	 -0.00050852	  0.00031157	  7.27244273	  0.99844649	  0.99917991  0.49320117
+6085	 -6.27295145	 -0.00050844	  0.00031152	  7.27244302	  0.99844674	  0.99918004  0.49320117
+6086	 -6.27295165	 -0.00050835	  0.00031147	  7.27244330	  0.99844700	  0.99918018  0.49320119
+6087	 -6.27295185	 -0.00050827	  0.00031142	  7.27244358	  0.99844725	  0.99918031  0.49320122
+6088	 -6.27295205	 -0.00050818	  0.00031137	  7.27244387	  0.99844751	  0.99918045  0.49320128
+6089	 -6.27295225	 -0.00050810	  0.00031132	  7.27244415	  0.99844776	  0.99918058  0.49320130
+6090	 -6.27295245	 -0.00050802	  0.00031126	  7.27244443	  0.99844802	  0.99918072  0.49320132
+6091	 -6.27295265	 -0.00050793	  0.00031121	  7.27244472	  0.99844827	  0.99918085  0.49320130
+6092	 -6.27295285	 -0.00050785	  0.00031116	  7.27244500	  0.99844853	  0.99918099  0.49320137
+6093	 -6.27295305	 -0.00050777	  0.00031111	  7.27244528	  0.99844878	  0.99918112  0.49320141
+6094	 -6.27295325	 -0.00050768	  0.00031106	  7.27244556	  0.99844904	  0.99918126  0.49320145
+6095	 -6.27295345	 -0.00050760	  0.00031101	  7.27244585	  0.99844929	  0.99918139  0.49320144
+6096	 -6.27295365	 -0.00050752	  0.00031096	  7.27244613	  0.99844955	  0.99918152  0.49320149
+6097	 -6.27295385	 -0.00050743	  0.00031091	  7.27244641	  0.99844980	  0.99918166  0.49320154
+6098	 -6.27295404	 -0.00050735	  0.00031086	  7.27244669	  0.99845005	  0.99918179  0.49320156
+6099	 -6.27295424	 -0.00050727	  0.00031081	  7.27244697	  0.99845031	  0.99918193  0.49320161
+6100	 -6.27295444	 -0.00050719	  0.00031075	  7.27244726	  0.99845056	  0.99918206  0.49320163
+6101	 -6.27295464	 -0.00050710	  0.00031070	  7.27244754	  0.99845082	  0.99918219  0.49320168
+6102	 -6.27295484	 -0.00050702	  0.00031065	  7.27244782	  0.99845107	  0.99918233  0.49320163
+6103	 -6.27295504	 -0.00050694	  0.00031060	  7.27244810	  0.99845132	  0.99918246  0.49320171
+6104	 -6.27295524	 -0.00050685	  0.00031055	  7.27244838	  0.99845158	  0.99918260  0.49320174
+6105	 -6.27295544	 -0.00050677	  0.00031050	  7.27244867	  0.99845183	  0.99918273  0.49320177
+6106	 -6.27295563	 -0.00050669	  0.00031045	  7.27244895	  0.99845208	  0.99918286  0.49320176
+6107	 -6.27295583	 -0.00050660	  0.00031040	  7.27244923	  0.99845234	  0.99918300  0.49320182
+6108	 -6.27295603	 -0.00050652	  0.00031035	  7.27244951	  0.99845259	  0.99918313  0.49320186
+6109	 -6.27295623	 -0.00050644	  0.00031030	  7.27244979	  0.99845284	  0.99918327  0.49320185
+6110	 -6.27295643	 -0.00050636	  0.00031025	  7.27245007	  0.99845310	  0.99918340  0.49320186
+6111	 -6.27295663	 -0.00050627	  0.00031019	  7.27245035	  0.99845335	  0.99918353  0.49320197
+6112	 -6.27295682	 -0.00050619	  0.00031014	  7.27245063	  0.99845360	  0.99918367  0.49320197
+6113	 -6.27295702	 -0.00050611	  0.00031009	  7.27245091	  0.99845386	  0.99918380  0.49320194
+6114	 -6.27295722	 -0.00050602	  0.00031004	  7.27245120	  0.99845411	  0.99918393  0.49320202
+6115	 -6.27295742	 -0.00050594	  0.00030999	  7.27245148	  0.99845436	  0.99918407  0.49320205
+6116	 -6.27295762	 -0.00050586	  0.00030994	  7.27245176	  0.99845462	  0.99918420  0.49320207
+6117	 -6.27295781	 -0.00050578	  0.00030989	  7.27245204	  0.99845487	  0.99918433  0.49320207
+6118	 -6.27295801	 -0.00050569	  0.00030984	  7.27245232	  0.99845512	  0.99918447  0.49320217
+6119	 -6.27295821	 -0.00050561	  0.00030979	  7.27245260	  0.99845537	  0.99918460  0.49320221
+6120	 -6.27295841	 -0.00050553	  0.00030974	  7.27245288	  0.99845563	  0.99918473  0.49320219
+6121	 -6.27295860	 -0.00050545	  0.00030969	  7.27245316	  0.99845588	  0.99918487  0.49320222
+6122	 -6.27295880	 -0.00050536	  0.00030964	  7.27245344	  0.99845613	  0.99918500  0.49320228
+6123	 -6.27295900	 -0.00050528	  0.00030959	  7.27245372	  0.99845638	  0.99918513  0.49320230
+6124	 -6.27295920	 -0.00050520	  0.00030954	  7.27245400	  0.99845663	  0.99918526  0.49320235
+6125	 -6.27295939	 -0.00050512	  0.00030949	  7.27245428	  0.99845689	  0.99918540  0.49320231
+6126	 -6.27295959	 -0.00050503	  0.00030944	  7.27245456	  0.99845714	  0.99918553  0.49320239
+6127	 -6.27295979	 -0.00050495	  0.00030938	  7.27245484	  0.99845739	  0.99918566  0.49320239
+6128	 -6.27295998	 -0.00050487	  0.00030933	  7.27245512	  0.99845764	  0.99918580  0.49320243
+6129	 -6.27296018	 -0.00050479	  0.00030928	  7.27245539	  0.99845789	  0.99918593  0.49320240
+6130	 -6.27296038	 -0.00050470	  0.00030923	  7.27245567	  0.99845814	  0.99918606  0.49320248
+6131	 -6.27296058	 -0.00050462	  0.00030918	  7.27245595	  0.99845840	  0.99918619  0.49320254
+6132	 -6.27296077	 -0.00050454	  0.00030913	  7.27245623	  0.99845865	  0.99918633  0.49320254
+6133	 -6.27296097	 -0.00050446	  0.00030908	  7.27245651	  0.99845890	  0.99918646  0.49320257
+6134	 -6.27296117	 -0.00050438	  0.00030903	  7.27245679	  0.99845915	  0.99918659  0.49320260
+6135	 -6.27296136	 -0.00050429	  0.00030898	  7.27245707	  0.99845940	  0.99918673  0.49320260
+6136	 -6.27296156	 -0.00050421	  0.00030893	  7.27245735	  0.99845965	  0.99918686  0.49320264
+6137	 -6.27296176	 -0.00050413	  0.00030888	  7.27245763	  0.99845990	  0.99918699  0.49320270
+6138	 -6.27296195	 -0.00050405	  0.00030883	  7.27245790	  0.99846015	  0.99918712  0.49320271
+6139	 -6.27296215	 -0.00050397	  0.00030878	  7.27245818	  0.99846040	  0.99918726  0.49320271
+6140	 -6.27296234	 -0.00050388	  0.00030873	  7.27245846	  0.99846066	  0.99918739  0.49320279
+6141	 -6.27296254	 -0.00050380	  0.00030868	  7.27245874	  0.99846091	  0.99918752  0.49320285
+6142	 -6.27296274	 -0.00050372	  0.00030863	  7.27245902	  0.99846116	  0.99918765  0.49320278
+6143	 -6.27296293	 -0.00050364	  0.00030858	  7.27245930	  0.99846141	  0.99918778  0.49320286
+6144	 -6.27296313	 -0.00050356	  0.00030853	  7.27245957	  0.99846166	  0.99918792  0.49320284
+6145	 -6.27296332	 -0.00050347	  0.00030848	  7.27245985	  0.99846191	  0.99918805  0.49320294
+6146	 -6.27296352	 -0.00050339	  0.00030843	  7.27246013	  0.99846216	  0.99918818  0.49320297
+6147	 -6.27296372	 -0.00050331	  0.00030838	  7.27246041	  0.99846241	  0.99918831  0.49320295
+6148	 -6.27296391	 -0.00050323	  0.00030833	  7.27246068	  0.99846266	  0.99918844  0.49320301
+6149	 -6.27296411	 -0.00050315	  0.00030828	  7.27246096	  0.99846291	  0.99918858  0.49320303
+6150	 -6.27296430	 -0.00050306	  0.00030823	  7.27246124	  0.99846316	  0.99918871  0.49320305
+6151	 -6.27296450	 -0.00050298	  0.00030818	  7.27246152	  0.99846341	  0.99918884  0.49320310
+6152	 -6.27296469	 -0.00050290	  0.00030813	  7.27246179	  0.99846366	  0.99918897  0.49320314
+6153	 -6.27296489	 -0.00050282	  0.00030808	  7.27246207	  0.99846391	  0.99918910  0.49320318
+6154	 -6.27296509	 -0.00050274	  0.00030803	  7.27246235	  0.99846416	  0.99918924  0.49320319
+6155	 -6.27296528	 -0.00050266	  0.00030798	  7.27246263	  0.99846441	  0.99918937  0.49320326
+6156	 -6.27296548	 -0.00050257	  0.00030793	  7.27246290	  0.99846466	  0.99918950  0.49320325
+6157	 -6.27296567	 -0.00050249	  0.00030788	  7.27246318	  0.99846490	  0.99918963  0.49320329
+6158	 -6.27296587	 -0.00050241	  0.00030783	  7.27246346	  0.99846515	  0.99918976  0.49320330
+6159	 -6.27296606	 -0.00050233	  0.00030778	  7.27246373	  0.99846540	  0.99918989  0.49320333
+6160	 -6.27296626	 -0.00050225	  0.00030773	  7.27246401	  0.99846565	  0.99919002  0.49320339
+6161	 -6.27296645	 -0.00050217	  0.00030768	  7.27246429	  0.99846590	  0.99919016  0.49320339
+6162	 -6.27296665	 -0.00050209	  0.00030763	  7.27246456	  0.99846615	  0.99919029  0.49320338
+6163	 -6.27296684	 -0.00050200	  0.00030758	  7.27246484	  0.99846640	  0.99919042  0.49320344
+6164	 -6.27296704	 -0.00050192	  0.00030753	  7.27246511	  0.99846665	  0.99919055  0.49320353
+6165	 -6.27296723	 -0.00050184	  0.00030748	  7.27246539	  0.99846690	  0.99919068  0.49320349
+6166	 -6.27296743	 -0.00050176	  0.00030743	  7.27246567	  0.99846715	  0.99919081  0.49320357
+6167	 -6.27296762	 -0.00050168	  0.00030738	  7.27246594	  0.99846739	  0.99919094  0.49320354
+6168	 -6.27296781	 -0.00050160	  0.00030733	  7.27246622	  0.99846764	  0.99919108  0.49320360
+6169	 -6.27296801	 -0.00050152	  0.00030728	  7.27246649	  0.99846789	  0.99919121  0.49320366
+6170	 -6.27296820	 -0.00050143	  0.00030723	  7.27246677	  0.99846814	  0.99919134  0.49320363
+6171	 -6.27296840	 -0.00050135	  0.00030718	  7.27246704	  0.99846839	  0.99919147  0.49320369
+6172	 -6.27296859	 -0.00050127	  0.00030713	  7.27246732	  0.99846864	  0.99919160  0.49320376
+6173	 -6.27296879	 -0.00050119	  0.00030708	  7.27246760	  0.99846888	  0.99919173  0.49320377
+6174	 -6.27296898	 -0.00050111	  0.00030703	  7.27246787	  0.99846913	  0.99919186  0.49320381
+6175	 -6.27296917	 -0.00050103	  0.00030698	  7.27246815	  0.99846938	  0.99919199  0.49320377
+6176	 -6.27296937	 -0.00050095	  0.00030693	  7.27246842	  0.99846963	  0.99919212  0.49320384
+6177	 -6.27296956	 -0.00050087	  0.00030688	  7.27246870	  0.99846987	  0.99919225  0.49320380
+6178	 -6.27296976	 -0.00050079	  0.00030683	  7.27246897	  0.99847012	  0.99919238  0.49320387
+6179	 -6.27296995	 -0.00050070	  0.00030678	  7.27246925	  0.99847037	  0.99919251  0.49320387
+6180	 -6.27297014	 -0.00050062	  0.00030673	  7.27246952	  0.99847062	  0.99919265  0.49320397
+6181	 -6.27297034	 -0.00050054	  0.00030668	  7.27246980	  0.99847086	  0.99919278  0.49320397
+6182	 -6.27297053	 -0.00050046	  0.00030663	  7.27247007	  0.99847111	  0.99919291  0.49320399
+6183	 -6.27297073	 -0.00050038	  0.00030658	  7.27247034	  0.99847136	  0.99919304  0.49320405
+6184	 -6.27297092	 -0.00050030	  0.00030653	  7.27247062	  0.99847161	  0.99919317  0.49320409
+6185	 -6.27297111	 -0.00050022	  0.00030648	  7.27247089	  0.99847185	  0.99919330  0.49320412
+6186	 -6.27297131	 -0.00050014	  0.00030643	  7.27247117	  0.99847210	  0.99919343  0.49320414
+6187	 -6.27297150	 -0.00050006	  0.00030638	  7.27247144	  0.99847235	  0.99919356  0.49320414
+6188	 -6.27297169	 -0.00049998	  0.00030633	  7.27247172	  0.99847259	  0.99919369  0.49320417
+6189	 -6.27297189	 -0.00049990	  0.00030629	  7.27247199	  0.99847284	  0.99919382  0.49320418
+6190	 -6.27297208	 -0.00049982	  0.00030624	  7.27247226	  0.99847309	  0.99919395  0.49320420
+6191	 -6.27297227	 -0.00049973	  0.00030619	  7.27247254	  0.99847333	  0.99919408  0.49320426
+6192	 -6.27297246	 -0.00049965	  0.00030614	  7.27247281	  0.99847358	  0.99919421  0.49320420
+6193	 -6.27297266	 -0.00049957	  0.00030609	  7.27247308	  0.99847383	  0.99919434  0.49320435
+6194	 -6.27297285	 -0.00049949	  0.00030604	  7.27247336	  0.99847407	  0.99919447  0.49320431
+6195	 -6.27297304	 -0.00049941	  0.00030599	  7.27247363	  0.99847432	  0.99919460  0.49320437
+6196	 -6.27297324	 -0.00049933	  0.00030594	  7.27247390	  0.99847457	  0.99919473  0.49320437
+6197	 -6.27297343	 -0.00049925	  0.00030589	  7.27247418	  0.99847481	  0.99919486  0.49320443
+6198	 -6.27297362	 -0.00049917	  0.00030584	  7.27247445	  0.99847506	  0.99919499  0.49320448
+6199	 -6.27297381	 -0.00049909	  0.00030579	  7.27247472	  0.99847530	  0.99919512  0.49320448
+6200	 -6.27297401	 -0.00049901	  0.00030574	  7.27247500	  0.99847555	  0.99919525  0.49320449
+6201	 -6.27297420	 -0.00049893	  0.00030569	  7.27247527	  0.99847580	  0.99919538  0.49320451
+6202	 -6.27297439	 -0.00049885	  0.00030564	  7.27247554	  0.99847604	  0.99919551  0.49320453
+6203	 -6.27297458	 -0.00049877	  0.00030559	  7.27247582	  0.99847629	  0.99919564  0.49320461
+6204	 -6.27297478	 -0.00049869	  0.00030554	  7.27247609	  0.99847653	  0.99919577  0.49320461
+6205	 -6.27297497	 -0.00049861	  0.00030550	  7.27247636	  0.99847678	  0.99919590  0.49320465
+6206	 -6.27297516	 -0.00049853	  0.00030545	  7.27247663	  0.99847702	  0.99919603  0.49320475
+6207	 -6.27297535	 -0.00049845	  0.00030540	  7.27247691	  0.99847727	  0.99919616  0.49320473
+6208	 -6.27297554	 -0.00049837	  0.00030535	  7.27247718	  0.99847751	  0.99919629  0.49320474
+6209	 -6.27297574	 -0.00049829	  0.00030530	  7.27247745	  0.99847776	  0.99919641  0.49320475
+6210	 -6.27297593	 -0.00049821	  0.00030525	  7.27247772	  0.99847800	  0.99919654  0.49320486
+6211	 -6.27297612	 -0.00049813	  0.00030520	  7.27247799	  0.99847825	  0.99919667  0.49320483
+6212	 -6.27297631	 -0.00049805	  0.00030515	  7.27247827	  0.99847849	  0.99919680  0.49320494
+6213	 -6.27297650	 -0.00049797	  0.00030510	  7.27247854	  0.99847874	  0.99919693  0.49320494
+6214	 -6.27297670	 -0.00049789	  0.00030505	  7.27247881	  0.99847898	  0.99919706  0.49320488
+6215	 -6.27297689	 -0.00049781	  0.00030500	  7.27247908	  0.99847923	  0.99919719  0.49320497
+6216	 -6.27297708	 -0.00049773	  0.00030495	  7.27247935	  0.99847947	  0.99919732  0.49320498
+6217	 -6.27297727	 -0.00049765	  0.00030491	  7.27247962	  0.99847972	  0.99919745  0.49320504
+6218	 -6.27297746	 -0.00049757	  0.00030486	  7.27247990	  0.99847996	  0.99919758  0.49320498
+6219	 -6.27297765	 -0.00049749	  0.00030481	  7.27248017	  0.99848021	  0.99919771  0.49320508
+6220	 -6.27297784	 -0.00049741	  0.00030476	  7.27248044	  0.99848045	  0.99919784  0.49320506
+6221	 -6.27297804	 -0.00049733	  0.00030471	  7.27248071	  0.99848070	  0.99919796  0.49320512
+6222	 -6.27297823	 -0.00049725	  0.00030466	  7.27248098	  0.99848094	  0.99919809  0.49320520
+6223	 -6.27297842	 -0.00049717	  0.00030461	  7.27248125	  0.99848118	  0.99919822  0.49320518
+6224	 -6.27297861	 -0.00049709	  0.00030456	  7.27248152	  0.99848143	  0.99919835  0.49320519
+6225	 -6.27297880	 -0.00049701	  0.00030451	  7.27248179	  0.99848167	  0.99919848  0.49320524
+6226	 -6.27297899	 -0.00049693	  0.00030446	  7.27248206	  0.99848192	  0.99919861  0.49320527
+6227	 -6.27297918	 -0.00049685	  0.00030442	  7.27248233	  0.99848216	  0.99919874  0.49320529
+6228	 -6.27297937	 -0.00049677	  0.00030437	  7.27248260	  0.99848240	  0.99919887  0.49320530
+6229	 -6.27297956	 -0.00049669	  0.00030432	  7.27248288	  0.99848265	  0.99919899  0.49320533
+6230	 -6.27297975	 -0.00049661	  0.00030427	  7.27248315	  0.99848289	  0.99919912  0.49320533
+6231	 -6.27297994	 -0.00049653	  0.00030422	  7.27248342	  0.99848313	  0.99919925  0.49320545
+6232	 -6.27298013	 -0.00049645	  0.00030417	  7.27248369	  0.99848338	  0.99919938  0.49320550
+6233	 -6.27298033	 -0.00049637	  0.00030412	  7.27248396	  0.99848362	  0.99919951  0.49320544
+6234	 -6.27298052	 -0.00049629	  0.00030407	  7.27248423	  0.99848386	  0.99919964  0.49320542
+6235	 -6.27298071	 -0.00049621	  0.00030403	  7.27248450	  0.99848411	  0.99919976  0.49320549
+6236	 -6.27298090	 -0.00049613	  0.00030398	  7.27248477	  0.99848435	  0.99919989  0.49320553
+6237	 -6.27298109	 -0.00049605	  0.00030393	  7.27248504	  0.99848459	  0.99920002  0.49320549
+6238	 -6.27298128	 -0.00049597	  0.00030388	  7.27248531	  0.99848484	  0.99920015  0.49320559
+6239	 -6.27298147	 -0.00049589	  0.00030383	  7.27248557	  0.99848508	  0.99920028  0.49320560
+6240	 -6.27298166	 -0.00049581	  0.00030378	  7.27248584	  0.99848532	  0.99920041  0.49320562
+6241	 -6.27298185	 -0.00049573	  0.00030373	  7.27248611	  0.99848556	  0.99920053  0.49320572
+6242	 -6.27298204	 -0.00049565	  0.00030368	  7.27248638	  0.99848581	  0.99920066  0.49320570
+6243	 -6.27298223	 -0.00049557	  0.00030364	  7.27248665	  0.99848605	  0.99920079  0.49320571
+6244	 -6.27298242	 -0.00049550	  0.00030359	  7.27248692	  0.99848629	  0.99920092  0.49320573
+6245	 -6.27298261	 -0.00049542	  0.00030354	  7.27248719	  0.99848653	  0.99920105  0.49320576
+6246	 -6.27298280	 -0.00049534	  0.00030349	  7.27248746	  0.99848678	  0.99920117  0.49320585
+6247	 -6.27298299	 -0.00049526	  0.00030344	  7.27248773	  0.99848702	  0.99920130  0.49320584
+6248	 -6.27298318	 -0.00049518	  0.00030339	  7.27248800	  0.99848726	  0.99920143  0.49320590
+6249	 -6.27298336	 -0.00049510	  0.00030334	  7.27248827	  0.99848750	  0.99920156  0.49320592
+6250	 -6.27298355	 -0.00049502	  0.00030330	  7.27248853	  0.99848774	  0.99920168  0.49320594
+6251	 -6.27298374	 -0.00049494	  0.00030325	  7.27248880	  0.99848799	  0.99920181  0.49320595
+6252	 -6.27298393	 -0.00049486	  0.00030320	  7.27248907	  0.99848823	  0.99920194  0.49320597
+6253	 -6.27298412	 -0.00049478	  0.00030315	  7.27248934	  0.99848847	  0.99920207  0.49320596
+6254	 -6.27298431	 -0.00049470	  0.00030310	  7.27248961	  0.99848871	  0.99920220  0.49320603
+6255	 -6.27298450	 -0.00049462	  0.00030305	  7.27248988	  0.99848895	  0.99920232  0.49320613
+6256	 -6.27298469	 -0.00049455	  0.00030300	  7.27249014	  0.99848919	  0.99920245  0.49320607
+6257	 -6.27298488	 -0.00049447	  0.00030296	  7.27249041	  0.99848944	  0.99920258  0.49320616
+6258	 -6.27298507	 -0.00049439	  0.00030291	  7.27249068	  0.99848968	  0.99920270  0.49320618
+6259	 -6.27298526	 -0.00049431	  0.00030286	  7.27249095	  0.99848992	  0.99920283  0.49320613
+6260	 -6.27298545	 -0.00049423	  0.00030281	  7.27249122	  0.99849016	  0.99920296  0.49320620
+6261	 -6.27298563	 -0.00049415	  0.00030276	  7.27249148	  0.99849040	  0.99920309  0.49320622
+6262	 -6.27298582	 -0.00049407	  0.00030271	  7.27249175	  0.99849064	  0.99920321  0.49320626
+6263	 -6.27298601	 -0.00049399	  0.00030267	  7.27249202	  0.99849088	  0.99920334  0.49320625
+6264	 -6.27298620	 -0.00049391	  0.00030262	  7.27249229	  0.99849112	  0.99920347  0.49320640
+6265	 -6.27298639	 -0.00049384	  0.00030257	  7.27249255	  0.99849136	  0.99920360  0.49320640
+6266	 -6.27298658	 -0.00049376	  0.00030252	  7.27249282	  0.99849161	  0.99920372  0.49320636
+6267	 -6.27298677	 -0.00049368	  0.00030247	  7.27249309	  0.99849185	  0.99920385  0.49320641
+6268	 -6.27298695	 -0.00049360	  0.00030242	  7.27249336	  0.99849209	  0.99920398  0.49320644
+6269	 -6.27298714	 -0.00049352	  0.00030238	  7.27249362	  0.99849233	  0.99920410  0.49320643
+6270	 -6.27298733	 -0.00049344	  0.00030233	  7.27249389	  0.99849257	  0.99920423  0.49320647
+6271	 -6.27298752	 -0.00049336	  0.00030228	  7.27249416	  0.99849281	  0.99920436  0.49320649
+6272	 -6.27298771	 -0.00049328	  0.00030223	  7.27249442	  0.99849305	  0.99920448  0.49320659
+6273	 -6.27298790	 -0.00049321	  0.00030218	  7.27249469	  0.99849329	  0.99920461  0.49320657
+6274	 -6.27298808	 -0.00049313	  0.00030214	  7.27249496	  0.99849353	  0.99920474  0.49320661
+6275	 -6.27298827	 -0.00049305	  0.00030209	  7.27249522	  0.99849377	  0.99920486  0.49320660
+6276	 -6.27298846	 -0.00049297	  0.00030204	  7.27249549	  0.99849401	  0.99920499  0.49320663
+6277	 -6.27298865	 -0.00049289	  0.00030199	  7.27249576	  0.99849425	  0.99920512  0.49320673
+6278	 -6.27298883	 -0.00049281	  0.00030194	  7.27249602	  0.99849449	  0.99920524  0.49320673
+6279	 -6.27298902	 -0.00049273	  0.00030189	  7.27249629	  0.99849473	  0.99920537  0.49320669
+6280	 -6.27298921	 -0.00049266	  0.00030185	  7.27249655	  0.99849497	  0.99920550  0.49320677
+6281	 -6.27298940	 -0.00049258	  0.00030180	  7.27249682	  0.99849521	  0.99920562  0.49320680
+6282	 -6.27298959	 -0.00049250	  0.00030175	  7.27249709	  0.99849545	  0.99920575  0.49320687
+6283	 -6.27298977	 -0.00049242	  0.00030170	  7.27249735	  0.99849569	  0.99920588  0.49320693
+6284	 -6.27298996	 -0.00049234	  0.00030165	  7.27249762	  0.99849593	  0.99920600  0.49320681
+6285	 -6.27299015	 -0.00049226	  0.00030161	  7.27249788	  0.99849616	  0.99920613  0.49320699
+6286	 -6.27299033	 -0.00049219	  0.00030156	  7.27249815	  0.99849640	  0.99920626  0.49320687
+6287	 -6.27299052	 -0.00049211	  0.00030151	  7.27249841	  0.99849664	  0.99920638  0.49320699
+6288	 -6.27299071	 -0.00049203	  0.00030146	  7.27249868	  0.99849688	  0.99920651  0.49320705
+6289	 -6.27299090	 -0.00049195	  0.00030141	  7.27249894	  0.99849712	  0.99920663  0.49320709
+6290	 -6.27299108	 -0.00049187	  0.00030137	  7.27249921	  0.99849736	  0.99920676  0.49320704
+6291	 -6.27299127	 -0.00049180	  0.00030132	  7.27249948	  0.99849760	  0.99920689  0.49320700
+6292	 -6.27299146	 -0.00049172	  0.00030127	  7.27249974	  0.99849784	  0.99920701  0.49320709
+6293	 -6.27299164	 -0.00049164	  0.00030122	  7.27250001	  0.99849808	  0.99920714  0.49320722
+6294	 -6.27299183	 -0.00049156	  0.00030118	  7.27250027	  0.99849831	  0.99920726  0.49320713
+6295	 -6.27299202	 -0.00049148	  0.00030113	  7.27250053	  0.99849855	  0.99920739  0.49320717
+6296	 -6.27299220	 -0.00049140	  0.00030108	  7.27250080	  0.99849879	  0.99920752  0.49320720
+6297	 -6.27299239	 -0.00049133	  0.00030103	  7.27250106	  0.99849903	  0.99920764  0.49320724
+6298	 -6.27299258	 -0.00049125	  0.00030098	  7.27250133	  0.99849927	  0.99920777  0.49320731
+6299	 -6.27299276	 -0.00049117	  0.00030094	  7.27250159	  0.99849951	  0.99920789  0.49320733
+6300	 -6.27299295	 -0.00049109	  0.00030089	  7.27250186	  0.99849974	  0.99920802  0.49320736
+6301	 -6.27299314	 -0.00049102	  0.00030084	  7.27250212	  0.99849998	  0.99920814  0.49320742
+6302	 -6.27299332	 -0.00049094	  0.00030079	  7.27250239	  0.99850022	  0.99920827  0.49320737
+6303	 -6.27299351	 -0.00049086	  0.00030075	  7.27250265	  0.99850046	  0.99920840  0.49320741
+6304	 -6.27299370	 -0.00049078	  0.00030070	  7.27250291	  0.99850070	  0.99920852  0.49320747
+6305	 -6.27299388	 -0.00049070	  0.00030065	  7.27250318	  0.99850093	  0.99920865  0.49320746
+6306	 -6.27299407	 -0.00049063	  0.00030060	  7.27250344	  0.99850117	  0.99920877  0.49320747
+6307	 -6.27299425	 -0.00049055	  0.00030055	  7.27250371	  0.99850141	  0.99920890  0.49320753
+6308	 -6.27299444	 -0.00049047	  0.00030051	  7.27250397	  0.99850165	  0.99920902  0.49320754
+6309	 -6.27299463	 -0.00049039	  0.00030046	  7.27250423	  0.99850188	  0.99920915  0.49320761
+6310	 -6.27299481	 -0.00049032	  0.00030041	  7.27250450	  0.99850212	  0.99920927  0.49320761
+6311	 -6.27299500	 -0.00049024	  0.00030036	  7.27250476	  0.99850236	  0.99920940  0.49320763
+6312	 -6.27299518	 -0.00049016	  0.00030032	  7.27250502	  0.99850260	  0.99920952  0.49320763
+6313	 -6.27299537	 -0.00049008	  0.00030027	  7.27250529	  0.99850283	  0.99920965  0.49320764
+6314	 -6.27299556	 -0.00049000	  0.00030022	  7.27250555	  0.99850307	  0.99920977  0.49320768
+6315	 -6.27299574	 -0.00048993	  0.00030017	  7.27250581	  0.99850331	  0.99920990  0.49320774
+6316	 -6.27299593	 -0.00048985	  0.00030013	  7.27250608	  0.99850354	  0.99921002  0.49320770
+6317	 -6.27299611	 -0.00048977	  0.00030008	  7.27250634	  0.99850378	  0.99921015  0.49320782
+6318	 -6.27299630	 -0.00048969	  0.00030003	  7.27250660	  0.99850402	  0.99921027  0.49320781
+6319	 -6.27299648	 -0.00048962	  0.00029998	  7.27250687	  0.99850426	  0.99921040  0.49320784
+6320	 -6.27299667	 -0.00048954	  0.00029994	  7.27250713	  0.99850449	  0.99921052  0.49320787
+6321	 -6.27299685	 -0.00048946	  0.00029989	  7.27250739	  0.99850473	  0.99921065  0.49320791
+6322	 -6.27299704	 -0.00048938	  0.00029984	  7.27250765	  0.99850496	  0.99921077  0.49320794
+6323	 -6.27299722	 -0.00048931	  0.00029979	  7.27250792	  0.99850520	  0.99921090  0.49320795
+6324	 -6.27299741	 -0.00048923	  0.00029975	  7.27250818	  0.99850544	  0.99921102  0.49320801
+6325	 -6.27299759	 -0.00048915	  0.00029970	  7.27250844	  0.99850567	  0.99921115  0.49320802
+6326	 -6.27299778	 -0.00048908	  0.00029965	  7.27250870	  0.99850591	  0.99921127  0.49320805
+6327	 -6.27299796	 -0.00048900	  0.00029960	  7.27250896	  0.99850615	  0.99921140  0.49320810
+6328	 -6.27299815	 -0.00048892	  0.00029956	  7.27250923	  0.99850638	  0.99921152  0.49320806
+6329	 -6.27299833	 -0.00048884	  0.00029951	  7.27250949	  0.99850662	  0.99921165  0.49320815
+6330	 -6.27299852	 -0.00048877	  0.00029946	  7.27250975	  0.99850685	  0.99921177  0.49320816
+6331	 -6.27299870	 -0.00048869	  0.00029941	  7.27251001	  0.99850709	  0.99921190  0.49320817
+6332	 -6.27299889	 -0.00048861	  0.00029937	  7.27251027	  0.99850733	  0.99921202  0.49320820
+6333	 -6.27299907	 -0.00048854	  0.00029932	  7.27251054	  0.99850756	  0.99921214  0.49320826
+6334	 -6.27299926	 -0.00048846	  0.00029927	  7.27251080	  0.99850780	  0.99921227  0.49320827
+6335	 -6.27299944	 -0.00048838	  0.00029923	  7.27251106	  0.99850803	  0.99921239  0.49320823
+6336	 -6.27299962	 -0.00048830	  0.00029918	  7.27251132	  0.99850827	  0.99921252  0.49320833
+6337	 -6.27299981	 -0.00048823	  0.00029913	  7.27251158	  0.99850850	  0.99921264  0.49320833
+6338	 -6.27299999	 -0.00048815	  0.00029908	  7.27251184	  0.99850874	  0.99921277  0.49320839
+6339	 -6.27300018	 -0.00048807	  0.00029904	  7.27251210	  0.99850897	  0.99921289  0.49320841
+6340	 -6.27300036	 -0.00048800	  0.00029899	  7.27251236	  0.99850921	  0.99921301  0.49320850
+6341	 -6.27300055	 -0.00048792	  0.00029894	  7.27251263	  0.99850944	  0.99921314  0.49320846
+6342	 -6.27300073	 -0.00048784	  0.00029890	  7.27251289	  0.99850968	  0.99921326  0.49320848
+6343	 -6.27300091	 -0.00048777	  0.00029885	  7.27251315	  0.99850991	  0.99921339  0.49320847
+6344	 -6.27300110	 -0.00048769	  0.00029880	  7.27251341	  0.99851015	  0.99921351  0.49320858
+6345	 -6.27300128	 -0.00048761	  0.00029875	  7.27251367	  0.99851038	  0.99921363  0.49320864
+6346	 -6.27300146	 -0.00048754	  0.00029871	  7.27251393	  0.99851062	  0.99921376  0.49320855
+6347	 -6.27300165	 -0.00048746	  0.00029866	  7.27251419	  0.99851085	  0.99921388  0.49320856
+6348	 -6.27300183	 -0.00048738	  0.00029861	  7.27251445	  0.99851109	  0.99921401  0.49320863
+6349	 -6.27300202	 -0.00048730	  0.00029857	  7.27251471	  0.99851132	  0.99921413  0.49320867
+6350	 -6.27300220	 -0.00048723	  0.00029852	  7.27251497	  0.99851156	  0.99921425  0.49320861
+6351	 -6.27300238	 -0.00048715	  0.00029847	  7.27251523	  0.99851179	  0.99921438  0.49320874
+6352	 -6.27300257	 -0.00048707	  0.00029842	  7.27251549	  0.99851202	  0.99921450  0.49320874
+6353	 -6.27300275	 -0.00048700	  0.00029838	  7.27251575	  0.99851226	  0.99921462  0.49320881
+6354	 -6.27300293	 -0.00048692	  0.00029833	  7.27251601	  0.99851249	  0.99921475  0.49320880
+6355	 -6.27300312	 -0.00048685	  0.00029828	  7.27251627	  0.99851273	  0.99921487  0.49320887
+6356	 -6.27300330	 -0.00048677	  0.00029824	  7.27251653	  0.99851296	  0.99921499  0.49320886
+6357	 -6.27300348	 -0.00048669	  0.00029819	  7.27251679	  0.99851320	  0.99921512  0.49320893
+6358	 -6.27300367	 -0.00048662	  0.00029814	  7.27251705	  0.99851343	  0.99921524  0.49320893
+6359	 -6.27300385	 -0.00048654	  0.00029810	  7.27251731	  0.99851366	  0.99921536  0.49320895
+6360	 -6.27300403	 -0.00048646	  0.00029805	  7.27251757	  0.99851390	  0.99921549  0.49320892
+6361	 -6.27300421	 -0.00048639	  0.00029800	  7.27251783	  0.99851413	  0.99921561  0.49320898
+6362	 -6.27300440	 -0.00048631	  0.00029796	  7.27251809	  0.99851436	  0.99921573  0.49320901
+6363	 -6.27300458	 -0.00048623	  0.00029791	  7.27251835	  0.99851460	  0.99921586  0.49320901
+6364	 -6.27300476	 -0.00048616	  0.00029786	  7.27251861	  0.99851483	  0.99921598  0.49320912
+6365	 -6.27300495	 -0.00048608	  0.00029782	  7.27251886	  0.99851506	  0.99921610  0.49320910
+6366	 -6.27300513	 -0.00048600	  0.00029777	  7.27251912	  0.99851530	  0.99921623  0.49320913
+6367	 -6.27300531	 -0.00048593	  0.00029772	  7.27251938	  0.99851553	  0.99921635  0.49320917
+6368	 -6.27300549	 -0.00048585	  0.00029768	  7.27251964	  0.99851576	  0.99921647  0.49320916
+6369	 -6.27300568	 -0.00048578	  0.00029763	  7.27251990	  0.99851600	  0.99921660  0.49320920
+6370	 -6.27300586	 -0.00048570	  0.00029758	  7.27252016	  0.99851623	  0.99921672  0.49320924
+6371	 -6.27300604	 -0.00048562	  0.00029753	  7.27252042	  0.99851646	  0.99921684  0.49320926
+6372	 -6.27300622	 -0.00048555	  0.00029749	  7.27252068	  0.99851669	  0.99921696  0.49320930
+6373	 -6.27300640	 -0.00048547	  0.00029744	  7.27252093	  0.99851693	  0.99921709  0.49320931
+6374	 -6.27300659	 -0.00048539	  0.00029739	  7.27252119	  0.99851716	  0.99921721  0.49320938
+6375	 -6.27300677	 -0.00048532	  0.00029735	  7.27252145	  0.99851739	  0.99921733  0.49320939
+6376	 -6.27300695	 -0.00048524	  0.00029730	  7.27252171	  0.99851763	  0.99921746  0.49320948
+6377	 -6.27300713	 -0.00048517	  0.00029725	  7.27252197	  0.99851786	  0.99921758  0.49320954
+6378	 -6.27300732	 -0.00048509	  0.00029721	  7.27252222	  0.99851809	  0.99921770  0.49320950
+6379	 -6.27300750	 -0.00048501	  0.00029716	  7.27252248	  0.99851832	  0.99921782  0.49320952
+6380	 -6.27300768	 -0.00048494	  0.00029712	  7.27252274	  0.99851855	  0.99921795  0.49320954
+6381	 -6.27300786	 -0.00048486	  0.00029707	  7.27252300	  0.99851879	  0.99921807  0.49320960
+6382	 -6.27300804	 -0.00048479	  0.00029702	  7.27252326	  0.99851902	  0.99921819  0.49320959
+6383	 -6.27300822	 -0.00048471	  0.00029698	  7.27252351	  0.99851925	  0.99921831  0.49320958
+6384	 -6.27300841	 -0.00048463	  0.00029693	  7.27252377	  0.99851948	  0.99921844  0.49320965
+6385	 -6.27300859	 -0.00048456	  0.00029688	  7.27252403	  0.99851971	  0.99921856  0.49320967
+6386	 -6.27300877	 -0.00048448	  0.00029684	  7.27252429	  0.99851995	  0.99921868  0.49320972
+6387	 -6.27300895	 -0.00048441	  0.00029679	  7.27252454	  0.99852018	  0.99921880  0.49320973
+6388	 -6.27300913	 -0.00048433	  0.00029674	  7.27252480	  0.99852041	  0.99921893  0.49320972
+6389	 -6.27300931	 -0.00048426	  0.00029670	  7.27252506	  0.99852064	  0.99921905  0.49320980
+6390	 -6.27300949	 -0.00048418	  0.00029665	  7.27252531	  0.99852087	  0.99921917  0.49320981
+6391	 -6.27300968	 -0.00048410	  0.00029660	  7.27252557	  0.99852110	  0.99921929  0.49320974
+6392	 -6.27300986	 -0.00048403	  0.00029656	  7.27252583	  0.99852134	  0.99921941  0.49320985
+6393	 -6.27301004	 -0.00048395	  0.00029651	  7.27252608	  0.99852157	  0.99921954  0.49320992
+6394	 -6.27301022	 -0.00048388	  0.00029646	  7.27252634	  0.99852180	  0.99921966  0.49320992
+6395	 -6.27301040	 -0.00048380	  0.00029642	  7.27252660	  0.99852203	  0.99921978  0.49320993
+6396	 -6.27301058	 -0.00048373	  0.00029637	  7.27252685	  0.99852226	  0.99921990  0.49320993
+6397	 -6.27301076	 -0.00048365	  0.00029633	  7.27252711	  0.99852249	  0.99922002  0.49321001
+6398	 -6.27301094	 -0.00048357	  0.00029628	  7.27252737	  0.99852272	  0.99922015  0.49321003
+6399	 -6.27301112	 -0.00048350	  0.00029623	  7.27252762	  0.99852295	  0.99922027  0.49321005
+6400	 -6.27301130	 -0.00048342	  0.00029619	  7.27252788	  0.99852318	  0.99922039  0.49321008
+6401	 -6.27301148	 -0.00048335	  0.00029614	  7.27252814	  0.99852341	  0.99922051  0.49321008
+6402	 -6.27301166	 -0.00048327	  0.00029609	  7.27252839	  0.99852364	  0.99922063  0.49321010
+6403	 -6.27301185	 -0.00048320	  0.00029605	  7.27252865	  0.99852388	  0.99922075  0.49321017
+6404	 -6.27301203	 -0.00048312	  0.00029600	  7.27252890	  0.99852411	  0.99922088  0.49321023
+6405	 -6.27301221	 -0.00048305	  0.00029596	  7.27252916	  0.99852434	  0.99922100  0.49321020
+6406	 -6.27301239	 -0.00048297	  0.00029591	  7.27252942	  0.99852457	  0.99922112  0.49321023
+6407	 -6.27301257	 -0.00048290	  0.00029586	  7.27252967	  0.99852480	  0.99922124  0.49321024
+6408	 -6.27301275	 -0.00048282	  0.00029582	  7.27252993	  0.99852503	  0.99922136  0.49321030
+6409	 -6.27301293	 -0.00048275	  0.00029577	  7.27253018	  0.99852526	  0.99922148  0.49321031
+6410	 -6.27301311	 -0.00048267	  0.00029572	  7.27253044	  0.99852549	  0.99922161  0.49321030
+6411	 -6.27301329	 -0.00048259	  0.00029568	  7.27253069	  0.99852572	  0.99922173  0.49321030
+6412	 -6.27301347	 -0.00048252	  0.00029563	  7.27253095	  0.99852595	  0.99922185  0.49321039
+6413	 -6.27301365	 -0.00048244	  0.00029559	  7.27253120	  0.99852618	  0.99922197  0.49321037
+6414	 -6.27301383	 -0.00048237	  0.00029554	  7.27253146	  0.99852641	  0.99922209  0.49321046
+6415	 -6.27301401	 -0.00048229	  0.00029549	  7.27253171	  0.99852664	  0.99922221  0.49321048
+6416	 -6.27301419	 -0.00048222	  0.00029545	  7.27253197	  0.99852687	  0.99922233  0.49321049
+6417	 -6.27301437	 -0.00048214	  0.00029540	  7.27253222	  0.99852710	  0.99922245  0.49321046
+6418	 -6.27301455	 -0.00048207	  0.00029536	  7.27253248	  0.99852732	  0.99922258  0.49321053
+6419	 -6.27301473	 -0.00048199	  0.00029531	  7.27253273	  0.99852755	  0.99922270  0.49321060
+6420	 -6.27301491	 -0.00048192	  0.00029526	  7.27253299	  0.99852778	  0.99922282  0.49321066
+6421	 -6.27301509	 -0.00048184	  0.00029522	  7.27253324	  0.99852801	  0.99922294  0.49321062
+6422	 -6.27301526	 -0.00048177	  0.00029517	  7.27253350	  0.99852824	  0.99922306  0.49321065
+6423	 -6.27301544	 -0.00048169	  0.00029513	  7.27253375	  0.99852847	  0.99922318  0.49321069
+6424	 -6.27301562	 -0.00048162	  0.00029508	  7.27253400	  0.99852870	  0.99922330  0.49321066
+6425	 -6.27301580	 -0.00048154	  0.00029503	  7.27253426	  0.99852893	  0.99922342  0.49321075
+6426	 -6.27301598	 -0.00048147	  0.00029499	  7.27253451	  0.99852916	  0.99922354  0.49321074
+6427	 -6.27301616	 -0.00048139	  0.00029494	  7.27253477	  0.99852939	  0.99922366  0.49321082
+6428	 -6.27301634	 -0.00048132	  0.00029490	  7.27253502	  0.99852962	  0.99922378  0.49321081
+6429	 -6.27301652	 -0.00048124	  0.00029485	  7.27253528	  0.99852984	  0.99922391  0.49321083
+6430	 -6.27301670	 -0.00048117	  0.00029480	  7.27253553	  0.99853007	  0.99922403  0.49321094
+6431	 -6.27301688	 -0.00048109	  0.00029476	  7.27253578	  0.99853030	  0.99922415  0.49321096
+6432	 -6.27301706	 -0.00048102	  0.00029471	  7.27253604	  0.99853053	  0.99922427  0.49321093
+6433	 -6.27301724	 -0.00048095	  0.00029467	  7.27253629	  0.99853076	  0.99922439  0.49321094
+6434	 -6.27301741	 -0.00048087	  0.00029462	  7.27253654	  0.99853099	  0.99922451  0.49321098
+6435	 -6.27301759	 -0.00048080	  0.00029458	  7.27253680	  0.99853121	  0.99922463  0.49321102
+6436	 -6.27301777	 -0.00048072	  0.00029453	  7.27253705	  0.99853144	  0.99922475  0.49321101
+6437	 -6.27301795	 -0.00048065	  0.00029448	  7.27253730	  0.99853167	  0.99922487  0.49321109
+6438	 -6.27301813	 -0.00048057	  0.00029444	  7.27253756	  0.99853190	  0.99922499  0.49321107
+6439	 -6.27301831	 -0.00048050	  0.00029439	  7.27253781	  0.99853213	  0.99922511  0.49321107
+6440	 -6.27301849	 -0.00048042	  0.00029435	  7.27253806	  0.99853235	  0.99922523  0.49321110
+6441	 -6.27301866	 -0.00048035	  0.00029430	  7.27253832	  0.99853258	  0.99922535  0.49321118
+6442	 -6.27301884	 -0.00048027	  0.00029426	  7.27253857	  0.99853281	  0.99922547  0.49321119
+6443	 -6.27301902	 -0.00048020	  0.00029421	  7.27253882	  0.99853304	  0.99922559  0.49321116
+6444	 -6.27301920	 -0.00048012	  0.00029416	  7.27253907	  0.99853327	  0.99922571  0.49321127
+6445	 -6.27301938	 -0.00048005	  0.00029412	  7.27253933	  0.99853349	  0.99922583  0.49321123
+6446	 -6.27301956	 -0.00047998	  0.00029407	  7.27253958	  0.99853372	  0.99922595  0.49321129
+6447	 -6.27301973	 -0.00047990	  0.00029403	  7.27253983	  0.99853395	  0.99922607  0.49321135
+6448	 -6.27301991	 -0.00047983	  0.00029398	  7.27254008	  0.99853418	  0.99922619  0.49321135
+6449	 -6.27302009	 -0.00047975	  0.00029394	  7.27254034	  0.99853440	  0.99922631  0.49321139
+6450	 -6.27302027	 -0.00047968	  0.00029389	  7.27254059	  0.99853463	  0.99922643  0.49321146
+6451	 -6.27302044	 -0.00047960	  0.00029384	  7.27254084	  0.99853486	  0.99922655  0.49321142
+6452	 -6.27302062	 -0.00047953	  0.00029380	  7.27254109	  0.99853508	  0.99922667  0.49321144
+6453	 -6.27302080	 -0.00047946	  0.00029375	  7.27254135	  0.99853531	  0.99922679  0.49321144
+6454	 -6.27302098	 -0.00047938	  0.00029371	  7.27254160	  0.99853554	  0.99922691  0.49321157
+6455	 -6.27302116	 -0.00047931	  0.00029366	  7.27254185	  0.99853577	  0.99922703  0.49321152
+6456	 -6.27302133	 -0.00047923	  0.00029362	  7.27254210	  0.99853599	  0.99922715  0.49321153
+6457	 -6.27302151	 -0.00047916	  0.00029357	  7.27254235	  0.99853622	  0.99922727  0.49321157
+6458	 -6.27302169	 -0.00047908	  0.00029353	  7.27254260	  0.99853645	  0.99922739  0.49321160
+6459	 -6.27302187	 -0.00047901	  0.00029348	  7.27254286	  0.99853667	  0.99922751  0.49321170
+6460	 -6.27302204	 -0.00047894	  0.00029344	  7.27254311	  0.99853690	  0.99922763  0.49321172
+6461	 -6.27302222	 -0.00047886	  0.00029339	  7.27254336	  0.99853712	  0.99922775  0.49321163
+6462	 -6.27302240	 -0.00047879	  0.00029334	  7.27254361	  0.99853735	  0.99922787  0.49321166
+6463	 -6.27302257	 -0.00047871	  0.00029330	  7.27254386	  0.99853758	  0.99922799  0.49321175
+6464	 -6.27302275	 -0.00047864	  0.00029325	  7.27254411	  0.99853780	  0.99922811  0.49321177
+6465	 -6.27302293	 -0.00047857	  0.00029321	  7.27254436	  0.99853803	  0.99922823  0.49321185
+6466	 -6.27302311	 -0.00047849	  0.00029316	  7.27254461	  0.99853826	  0.99922834  0.49321182
+6467	 -6.27302328	 -0.00047842	  0.00029312	  7.27254486	  0.99853848	  0.99922846  0.49321190
+6468	 -6.27302346	 -0.00047834	  0.00029307	  7.27254512	  0.99853871	  0.99922858  0.49321191
+6469	 -6.27302364	 -0.00047827	  0.00029303	  7.27254537	  0.99853893	  0.99922870  0.49321187
+6470	 -6.27302381	 -0.00047820	  0.00029298	  7.27254562	  0.99853916	  0.99922882  0.49321186
+6471	 -6.27302399	 -0.00047812	  0.00029294	  7.27254587	  0.99853939	  0.99922894  0.49321193
+6472	 -6.27302417	 -0.00047805	  0.00029289	  7.27254612	  0.99853961	  0.99922906  0.49321201
+6473	 -6.27302434	 -0.00047797	  0.00029285	  7.27254637	  0.99853984	  0.99922918  0.49321205
+6474	 -6.27302452	 -0.00047790	  0.00029280	  7.27254662	  0.99854006	  0.99922930  0.49321210
+6475	 -6.27302470	 -0.00047783	  0.00029276	  7.27254687	  0.99854029	  0.99922942  0.49321211
+6476	 -6.27302487	 -0.00047775	  0.00029271	  7.27254712	  0.99854051	  0.99922954  0.49321206
+6477	 -6.27302505	 -0.00047768	  0.00029267	  7.27254737	  0.99854074	  0.99922965  0.49321212
+6478	 -6.27302523	 -0.00047761	  0.00029262	  7.27254762	  0.99854096	  0.99922977  0.49321212
+6479	 -6.27302540	 -0.00047753	  0.00029257	  7.27254787	  0.99854119	  0.99922989  0.49321221
+6480	 -6.27302558	 -0.00047746	  0.00029253	  7.27254812	  0.99854141	  0.99923001  0.49321218
+6481	 -6.27302575	 -0.00047739	  0.00029248	  7.27254837	  0.99854164	  0.99923013  0.49321223
+6482	 -6.27302593	 -0.00047731	  0.00029244	  7.27254862	  0.99854186	  0.99923025  0.49321227
+6483	 -6.27302611	 -0.00047724	  0.00029239	  7.27254887	  0.99854209	  0.99923037  0.49321227
+6484	 -6.27302628	 -0.00047716	  0.00029235	  7.27254912	  0.99854231	  0.99923049  0.49321226
+6485	 -6.27302646	 -0.00047709	  0.00029230	  7.27254937	  0.99854254	  0.99923060  0.49321229
+6486	 -6.27302664	 -0.00047702	  0.00029226	  7.27254962	  0.99854276	  0.99923072  0.49321232
+6487	 -6.27302681	 -0.00047694	  0.00029221	  7.27254987	  0.99854299	  0.99923084  0.49321239
+6488	 -6.27302699	 -0.00047687	  0.00029217	  7.27255012	  0.99854321	  0.99923096  0.49321240
+6489	 -6.27302716	 -0.00047680	  0.00029212	  7.27255037	  0.99854344	  0.99923108  0.49321246
+6490	 -6.27302734	 -0.00047672	  0.00029208	  7.27255061	  0.99854366	  0.99923120  0.49321244
+6491	 -6.27302751	 -0.00047665	  0.00029203	  7.27255086	  0.99854388	  0.99923132  0.49321242
+6492	 -6.27302769	 -0.00047658	  0.00029199	  7.27255111	  0.99854411	  0.99923143  0.49321242
+6493	 -6.27302787	 -0.00047650	  0.00029194	  7.27255136	  0.99854433	  0.99923155  0.49321258
+6494	 -6.27302804	 -0.00047643	  0.00029190	  7.27255161	  0.99854456	  0.99923167  0.49321251
+6495	 -6.27302822	 -0.00047636	  0.00029185	  7.27255186	  0.99854478	  0.99923179  0.49321261
+6496	 -6.27302839	 -0.00047628	  0.00029181	  7.27255211	  0.99854501	  0.99923191  0.49321264
+6497	 -6.27302857	 -0.00047621	  0.00029176	  7.27255236	  0.99854523	  0.99923203  0.49321265
+6498	 -6.27302874	 -0.00047614	  0.00029172	  7.27255261	  0.99854545	  0.99923214  0.49321268
+6499	 -6.27302892	 -0.00047606	  0.00029167	  7.27255285	  0.99854568	  0.99923226  0.49321269
+6500	 -6.27302909	 -0.00047599	  0.00029163	  7.27255310	  0.99854590	  0.99923238  0.49321277
+6501	 -6.27302927	 -0.00047592	  0.00029158	  7.27255335	  0.99854612	  0.99923250  0.49321272
+6502	 -6.27302944	 -0.00047584	  0.00029154	  7.27255360	  0.99854635	  0.99923262  0.49321278
+6503	 -6.27302962	 -0.00047577	  0.00029150	  7.27255385	  0.99854657	  0.99923273  0.49321287
+6504	 -6.27302979	 -0.00047570	  0.00029145	  7.27255410	  0.99854679	  0.99923285  0.49321280
+6505	 -6.27302997	 -0.00047562	  0.00029141	  7.27255434	  0.99854702	  0.99923297  0.49321291
+6506	 -6.27303014	 -0.00047555	  0.00029136	  7.27255459	  0.99854724	  0.99923309  0.49321279
+6507	 -6.27303032	 -0.00047548	  0.00029132	  7.27255484	  0.99854746	  0.99923321  0.49321284
+6508	 -6.27303049	 -0.00047541	  0.00029127	  7.27255509	  0.99854769	  0.99923332  0.49321288
+6509	 -6.27303067	 -0.00047533	  0.00029123	  7.27255533	  0.99854791	  0.99923344  0.49321294
+6510	 -6.27303084	 -0.00047526	  0.00029118	  7.27255558	  0.99854813	  0.99923356  0.49321292
+6511	 -6.27303102	 -0.00047519	  0.00029114	  7.27255583	  0.99854836	  0.99923368  0.49321300
+6512	 -6.27303119	 -0.00047511	  0.00029109	  7.27255608	  0.99854858	  0.99923379  0.49321302
+6513	 -6.27303137	 -0.00047504	  0.00029105	  7.27255632	  0.99854880	  0.99923391  0.49321303
+6514	 -6.27303154	 -0.00047497	  0.00029100	  7.27255657	  0.99854903	  0.99923403  0.49321311
+6515	 -6.27303171	 -0.00047490	  0.00029096	  7.27255682	  0.99854925	  0.99923415  0.49321311
+6516	 -6.27303189	 -0.00047482	  0.00029091	  7.27255707	  0.99854947	  0.99923426  0.49321315
+6517	 -6.27303206	 -0.00047475	  0.00029087	  7.27255731	  0.99854969	  0.99923438  0.49321319
+6518	 -6.27303224	 -0.00047468	  0.00029082	  7.27255756	  0.99854992	  0.99923450  0.49321317
+6519	 -6.27303241	 -0.00047460	  0.00029078	  7.27255781	  0.99855014	  0.99923462  0.49321321
+6520	 -6.27303259	 -0.00047453	  0.00029073	  7.27255805	  0.99855036	  0.99923473  0.49321326
+6521	 -6.27303276	 -0.00047446	  0.00029069	  7.27255830	  0.99855058	  0.99923485  0.49321318
+6522	 -6.27303293	 -0.00047439	  0.00029065	  7.27255855	  0.99855081	  0.99923497  0.49321326
+6523	 -6.27303311	 -0.00047431	  0.00029060	  7.27255879	  0.99855103	  0.99923509  0.49321333
+6524	 -6.27303328	 -0.00047424	  0.00029056	  7.27255904	  0.99855125	  0.99923520  0.49321333
+6525	 -6.27303345	 -0.00047417	  0.00029051	  7.27255929	  0.99855147	  0.99923532  0.49321344
+6526	 -6.27303363	 -0.00047410	  0.00029047	  7.27255953	  0.99855169	  0.99923544  0.49321337
+6527	 -6.27303380	 -0.00047402	  0.00029042	  7.27255978	  0.99855192	  0.99923555  0.49321345
+6528	 -6.27303398	 -0.00047395	  0.00029038	  7.27256003	  0.99855214	  0.99923567  0.49321337
+6529	 -6.27303415	 -0.00047388	  0.00029033	  7.27256027	  0.99855236	  0.99923579  0.49321344
+6530	 -6.27303432	 -0.00047380	  0.00029029	  7.27256052	  0.99855258	  0.99923591  0.49321346
+6531	 -6.27303450	 -0.00047373	  0.00029025	  7.27256076	  0.99855280	  0.99923602  0.49321354
+6532	 -6.27303467	 -0.00047366	  0.00029020	  7.27256101	  0.99855302	  0.99923614  0.49321353
+6533	 -6.27303484	 -0.00047359	  0.00029016	  7.27256126	  0.99855325	  0.99923626  0.49321361
+6534	 -6.27303502	 -0.00047351	  0.00029011	  7.27256150	  0.99855347	  0.99923637  0.49321358
+6535	 -6.27303519	 -0.00047344	  0.00029007	  7.27256175	  0.99855369	  0.99923649  0.49321363
+6536	 -6.27303536	 -0.00047337	  0.00029002	  7.27256199	  0.99855391	  0.99923661  0.49321367
+6537	 -6.27303554	 -0.00047330	  0.00028998	  7.27256224	  0.99855413	  0.99923672  0.49321364
+6538	 -6.27303571	 -0.00047323	  0.00028993	  7.27256248	  0.99855435	  0.99923684  0.49321377
+6539	 -6.27303588	 -0.00047315	  0.00028989	  7.27256273	  0.99855457	  0.99923696  0.49321375
+6540	 -6.27303606	 -0.00047308	  0.00028985	  7.27256298	  0.99855479	  0.99923707  0.49321379
+6541	 -6.27303623	 -0.00047301	  0.00028980	  7.27256322	  0.99855501	  0.99923719  0.49321377
+6542	 -6.27303640	 -0.00047294	  0.00028976	  7.27256347	  0.99855524	  0.99923731  0.49321372
+6543	 -6.27303658	 -0.00047286	  0.00028971	  7.27256371	  0.99855546	  0.99923742  0.49321383
+6544	 -6.27303675	 -0.00047279	  0.00028967	  7.27256396	  0.99855568	  0.99923754  0.49321384
+6545	 -6.27303692	 -0.00047272	  0.00028962	  7.27256420	  0.99855590	  0.99923766  0.49321394
+6546	 -6.27303709	 -0.00047265	  0.00028958	  7.27256445	  0.99855612	  0.99923777  0.49321386
+6547	 -6.27303727	 -0.00047258	  0.00028954	  7.27256469	  0.99855634	  0.99923789  0.49321390
+6548	 -6.27303744	 -0.00047250	  0.00028949	  7.27256494	  0.99855656	  0.99923801  0.49321401
+6549	 -6.27303761	 -0.00047243	  0.00028945	  7.27256518	  0.99855678	  0.99923812  0.49321394
+6550	 -6.27303778	 -0.00047236	  0.00028940	  7.27256543	  0.99855700	  0.99923824  0.49321395
+6551	 -6.27303796	 -0.00047229	  0.00028936	  7.27256567	  0.99855722	  0.99923835  0.49321400
+6552	 -6.27303813	 -0.00047221	  0.00028931	  7.27256591	  0.99855744	  0.99923847  0.49321392
+6553	 -6.27303830	 -0.00047214	  0.00028927	  7.27256616	  0.99855766	  0.99923859  0.49321409
+6554	 -6.27303847	 -0.00047207	  0.00028923	  7.27256640	  0.99855788	  0.99923870  0.49321404
+6555	 -6.27303865	 -0.00047200	  0.00028918	  7.27256665	  0.99855810	  0.99923882  0.49321416
+6556	 -6.27303882	 -0.00047193	  0.00028914	  7.27256689	  0.99855832	  0.99923893  0.49321409
+6557	 -6.27303899	 -0.00047185	  0.00028909	  7.27256714	  0.99855854	  0.99923905  0.49321418
+6558	 -6.27303916	 -0.00047178	  0.00028905	  7.27256738	  0.99855876	  0.99923917  0.49321418
+6559	 -6.27303933	 -0.00047171	  0.00028901	  7.27256762	  0.99855898	  0.99923928  0.49321424
+6560	 -6.27303951	 -0.00047164	  0.00028896	  7.27256787	  0.99855920	  0.99923940  0.49321434
+6561	 -6.27303968	 -0.00047157	  0.00028892	  7.27256811	  0.99855942	  0.99923951  0.49321431
+6562	 -6.27303985	 -0.00047150	  0.00028887	  7.27256835	  0.99855964	  0.99923963  0.49321429
+6563	 -6.27304002	 -0.00047142	  0.00028883	  7.27256860	  0.99855986	  0.99923975  0.49321428
+6564	 -6.27304019	 -0.00047135	  0.00028879	  7.27256884	  0.99856008	  0.99923986  0.49321434
+6565	 -6.27304037	 -0.00047128	  0.00028874	  7.27256909	  0.99856030	  0.99923998  0.49321435
+6566	 -6.27304054	 -0.00047121	  0.00028870	  7.27256933	  0.99856052	  0.99924009  0.49321437
+6567	 -6.27304071	 -0.00047114	  0.00028865	  7.27256957	  0.99856073	  0.99924021  0.49321446
+6568	 -6.27304088	 -0.00047106	  0.00028861	  7.27256982	  0.99856095	  0.99924032  0.49321442
+6569	 -6.27304105	 -0.00047099	  0.00028857	  7.27257006	  0.99856117	  0.99924044  0.49321442
+6570	 -6.27304122	 -0.00047092	  0.00028852	  7.27257030	  0.99856139	  0.99924056  0.49321451
+6571	 -6.27304139	 -0.00047085	  0.00028848	  7.27257054	  0.99856161	  0.99924067  0.49321455
+6572	 -6.27304157	 -0.00047078	  0.00028843	  7.27257079	  0.99856183	  0.99924079  0.49321455
+6573	 -6.27304174	 -0.00047071	  0.00028839	  7.27257103	  0.99856205	  0.99924090  0.49321459
+6574	 -6.27304191	 -0.00047064	  0.00028835	  7.27257127	  0.99856227	  0.99924102  0.49321464
+6575	 -6.27304208	 -0.00047056	  0.00028830	  7.27257152	  0.99856249	  0.99924113  0.49321460
+6576	 -6.27304225	 -0.00047049	  0.00028826	  7.27257176	  0.99856270	  0.99924125  0.49321463
+6577	 -6.27304242	 -0.00047042	  0.00028822	  7.27257200	  0.99856292	  0.99924136  0.49321476
+6578	 -6.27304259	 -0.00047035	  0.00028817	  7.27257224	  0.99856314	  0.99924148  0.49321475
+6579	 -6.27304276	 -0.00047028	  0.00028813	  7.27257249	  0.99856336	  0.99924159  0.49321471
+6580	 -6.27304294	 -0.00047021	  0.00028808	  7.27257273	  0.99856358	  0.99924171  0.49321475
+6581	 -6.27304311	 -0.00047013	  0.00028804	  7.27257297	  0.99856380	  0.99924183  0.49321476
+6582	 -6.27304328	 -0.00047006	  0.00028800	  7.27257321	  0.99856401	  0.99924194  0.49321484
+6583	 -6.27304345	 -0.00046999	  0.00028795	  7.27257346	  0.99856423	  0.99924206  0.49321477
+6584	 -6.27304362	 -0.00046992	  0.00028791	  7.27257370	  0.99856445	  0.99924217  0.49321483
+6585	 -6.27304379	 -0.00046985	  0.00028787	  7.27257394	  0.99856467	  0.99924229  0.49321495
+6586	 -6.27304396	 -0.00046978	  0.00028782	  7.27257418	  0.99856489	  0.99924240  0.49321491
+6587	 -6.27304413	 -0.00046971	  0.00028778	  7.27257442	  0.99856510	  0.99924252  0.49321493
+6588	 -6.27304430	 -0.00046964	  0.00028773	  7.27257467	  0.99856532	  0.99924263  0.49321498
+6589	 -6.27304447	 -0.00046956	  0.00028769	  7.27257491	  0.99856554	  0.99924275  0.49321496
+6590	 -6.27304464	 -0.00046949	  0.00028765	  7.27257515	  0.99856576	  0.99924286  0.49321502
+6591	 -6.27304481	 -0.00046942	  0.00028760	  7.27257539	  0.99856597	  0.99924298  0.49321503
+6592	 -6.27304498	 -0.00046935	  0.00028756	  7.27257563	  0.99856619	  0.99924309  0.49321507
+6593	 -6.27304515	 -0.00046928	  0.00028752	  7.27257587	  0.99856641	  0.99924320  0.49321515
+6594	 -6.27304532	 -0.00046921	  0.00028747	  7.27257611	  0.99856663	  0.99924332  0.49321508
+6595	 -6.27304549	 -0.00046914	  0.00028743	  7.27257636	  0.99856684	  0.99924343  0.49321514
+6596	 -6.27304566	 -0.00046907	  0.00028738	  7.27257660	  0.99856706	  0.99924355  0.49321526
+6597	 -6.27304583	 -0.00046900	  0.00028734	  7.27257684	  0.99856728	  0.99924366  0.49321521
+6598	 -6.27304600	 -0.00046892	  0.00028730	  7.27257708	  0.99856750	  0.99924378  0.49321521
+6599	 -6.27304617	 -0.00046885	  0.00028725	  7.27257732	  0.99856771	  0.99924389  0.49321523
+6600	 -6.27304634	 -0.00046878	  0.00028721	  7.27257756	  0.99856793	  0.99924401  0.49321526
+6601	 -6.27304651	 -0.00046871	  0.00028717	  7.27257780	  0.99856815	  0.99924412  0.49321530
+6602	 -6.27304668	 -0.00046864	  0.00028712	  7.27257804	  0.99856836	  0.99924424  0.49321535
+6603	 -6.27304685	 -0.00046857	  0.00028708	  7.27257828	  0.99856858	  0.99924435  0.49321541
+6604	 -6.27304702	 -0.00046850	  0.00028704	  7.27257852	  0.99856880	  0.99924446  0.49321529
+6605	 -6.27304719	 -0.00046843	  0.00028699	  7.27257876	  0.99856901	  0.99924458  0.49321541
+6606	 -6.27304736	 -0.00046836	  0.00028695	  7.27257901	  0.99856923	  0.99924469  0.49321535
+6607	 -6.27304753	 -0.00046829	  0.00028691	  7.27257925	  0.99856945	  0.99924481  0.49321543
+6608	 -6.27304770	 -0.00046821	  0.00028686	  7.27257949	  0.99856966	  0.99924492  0.49321548
+6609	 -6.27304787	 -0.00046814	  0.00028682	  7.27257973	  0.99856988	  0.99924504  0.49321551
+6610	 -6.27304804	 -0.00046807	  0.00028678	  7.27257997	  0.99857010	  0.99924515  0.49321545
+6611	 -6.27304821	 -0.00046800	  0.00028673	  7.27258021	  0.99857031	  0.99924526  0.49321554
+6612	 -6.27304838	 -0.00046793	  0.00028669	  7.27258045	  0.99857053	  0.99924538  0.49321557
+6613	 -6.27304855	 -0.00046786	  0.00028665	  7.27258069	  0.99857074	  0.99924549  0.49321561
+6614	 -6.27304872	 -0.00046779	  0.00028660	  7.27258093	  0.99857096	  0.99924561  0.49321567
+6615	 -6.27304889	 -0.00046772	  0.00028656	  7.27258117	  0.99857118	  0.99924572  0.49321567
+6616	 -6.27304906	 -0.00046765	  0.00028652	  7.27258141	  0.99857139	  0.99924583  0.49321571
+6617	 -6.27304922	 -0.00046758	  0.00028647	  7.27258165	  0.99857161	  0.99924595  0.49321566
+6618	 -6.27304939	 -0.00046751	  0.00028643	  7.27258189	  0.99857182	  0.99924606  0.49321576
+6619	 -6.27304956	 -0.00046744	  0.00028639	  7.27258213	  0.99857204	  0.99924618  0.49321567
+6620	 -6.27304973	 -0.00046737	  0.00028634	  7.27258236	  0.99857226	  0.99924629  0.49321585
+6621	 -6.27304990	 -0.00046730	  0.00028630	  7.27258260	  0.99857247	  0.99924640  0.49321576
+6622	 -6.27305007	 -0.00046723	  0.00028626	  7.27258284	  0.99857269	  0.99924652  0.49321581
+6623	 -6.27305024	 -0.00046715	  0.00028621	  7.27258308	  0.99857290	  0.99924663  0.49321580
+6624	 -6.27305041	 -0.00046708	  0.00028617	  7.27258332	  0.99857312	  0.99924675  0.49321590
+6625	 -6.27305057	 -0.00046701	  0.00028613	  7.27258356	  0.99857333	  0.99924686  0.49321582
+6626	 -6.27305074	 -0.00046694	  0.00028608	  7.27258380	  0.99857355	  0.99924697  0.49321587
+6627	 -6.27305091	 -0.00046687	  0.00028604	  7.27258404	  0.99857376	  0.99924709  0.49321595
+6628	 -6.27305108	 -0.00046680	  0.00028600	  7.27258428	  0.99857398	  0.99924720  0.49321595
+6629	 -6.27305125	 -0.00046673	  0.00028595	  7.27258452	  0.99857419	  0.99924731  0.49321600
+6630	 -6.27305142	 -0.00046666	  0.00028591	  7.27258476	  0.99857441	  0.99924743  0.49321598
+6631	 -6.27305159	 -0.00046659	  0.00028587	  7.27258499	  0.99857462	  0.99924754  0.49321613
+6632	 -6.27305175	 -0.00046652	  0.00028582	  7.27258523	  0.99857484	  0.99924765  0.49321611
+6633	 -6.27305192	 -0.00046645	  0.00028578	  7.27258547	  0.99857505	  0.99924777  0.49321600
+6634	 -6.27305209	 -0.00046638	  0.00028574	  7.27258571	  0.99857527	  0.99924788  0.49321621
+6635	 -6.27305226	 -0.00046631	  0.00028570	  7.27258595	  0.99857548	  0.99924799  0.49321615
+6636	 -6.27305243	 -0.00046624	  0.00028565	  7.27258619	  0.99857570	  0.99924811  0.49321620
+6637	 -6.27305259	 -0.00046617	  0.00028561	  7.27258642	  0.99857591	  0.99924822  0.49321625
+6638	 -6.27305276	 -0.00046610	  0.00028557	  7.27258666	  0.99857613	  0.99924833  0.49321621
+6639	 -6.27305293	 -0.00046603	  0.00028552	  7.27258690	  0.99857634	  0.99924845  0.49321630
+6640	 -6.27305310	 -0.00046596	  0.00028548	  7.27258714	  0.99857656	  0.99924856  0.49321623
+6641	 -6.27305327	 -0.00046589	  0.00028544	  7.27258738	  0.99857677	  0.99924867  0.49321633
+6642	 -6.27305343	 -0.00046582	  0.00028539	  7.27258761	  0.99857698	  0.99924879  0.49321637
+6643	 -6.27305360	 -0.00046575	  0.00028535	  7.27258785	  0.99857720	  0.99924890  0.49321640
+6644	 -6.27305377	 -0.00046568	  0.00028531	  7.27258809	  0.99857741	  0.99924901  0.49321641
+6645	 -6.27305394	 -0.00046561	  0.00028527	  7.27258833	  0.99857763	  0.99924913  0.49321644
+6646	 -6.27305410	 -0.00046554	  0.00028522	  7.27258857	  0.99857784	  0.99924924  0.49321640
+6647	 -6.27305427	 -0.00046547	  0.00028518	  7.27258880	  0.99857805	  0.99924935  0.49321644
+6648	 -6.27305444	 -0.00046540	  0.00028514	  7.27258904	  0.99857827	  0.99924946  0.49321647
+6649	 -6.27305461	 -0.00046533	  0.00028509	  7.27258928	  0.99857848	  0.99924958  0.49321655
+6650	 -6.27305477	 -0.00046526	  0.00028505	  7.27258952	  0.99857870	  0.99924969  0.49321652
+6651	 -6.27305494	 -0.00046519	  0.00028501	  7.27258975	  0.99857891	  0.99924980  0.49321651
+6652	 -6.27305511	 -0.00046512	  0.00028497	  7.27258999	  0.99857912	  0.99924992  0.49321656
+6653	 -6.27305528	 -0.00046505	  0.00028492	  7.27259023	  0.99857934	  0.99925003  0.49321656
+6654	 -6.27305544	 -0.00046498	  0.00028488	  7.27259046	  0.99857955	  0.99925014  0.49321665
+6655	 -6.27305561	 -0.00046491	  0.00028484	  7.27259070	  0.99857976	  0.99925025  0.49321668
+6656	 -6.27305578	 -0.00046484	  0.00028479	  7.27259094	  0.99857998	  0.99925037  0.49321665
+6657	 -6.27305594	 -0.00046477	  0.00028475	  7.27259117	  0.99858019	  0.99925048  0.49321672
+6658	 -6.27305611	 -0.00046470	  0.00028471	  7.27259141	  0.99858040	  0.99925059  0.49321675
+6659	 -6.27305628	 -0.00046463	  0.00028467	  7.27259165	  0.99858062	  0.99925070  0.49321677
+6660	 -6.27305645	 -0.00046456	  0.00028462	  7.27259188	  0.99858083	  0.99925082  0.49321675
+6661	 -6.27305661	 -0.00046449	  0.00028458	  7.27259212	  0.99858104	  0.99925093  0.49321677
+6662	 -6.27305678	 -0.00046442	  0.00028454	  7.27259236	  0.99858126	  0.99925104  0.49321687
+6663	 -6.27305695	 -0.00046435	  0.00028449	  7.27259259	  0.99858147	  0.99925115  0.49321692
+6664	 -6.27305711	 -0.00046428	  0.00028445	  7.27259283	  0.99858168	  0.99925127  0.49321690
+6665	 -6.27305728	 -0.00046421	  0.00028441	  7.27259307	  0.99858189	  0.99925138  0.49321690
+6666	 -6.27305745	 -0.00046414	  0.00028437	  7.27259330	  0.99858211	  0.99925149  0.49321703
+6667	 -6.27305761	 -0.00046407	  0.00028432	  7.27259354	  0.99858232	  0.99925160  0.49321695
+6668	 -6.27305778	 -0.00046400	  0.00028428	  7.27259377	  0.99858253	  0.99925171  0.49321702
+6669	 -6.27305795	 -0.00046393	  0.00028424	  7.27259401	  0.99858275	  0.99925183  0.49321702
+6670	 -6.27305811	 -0.00046386	  0.00028420	  7.27259425	  0.99858296	  0.99925194  0.49321707
+6671	 -6.27305828	 -0.00046380	  0.00028415	  7.27259448	  0.99858317	  0.99925205  0.49321711
+6672	 -6.27305844	 -0.00046373	  0.00028411	  7.27259472	  0.99858338	  0.99925216  0.49321702
+6673	 -6.27305861	 -0.00046366	  0.00028407	  7.27259495	  0.99858359	  0.99925227  0.49321714
+6674	 -6.27305878	 -0.00046359	  0.00028403	  7.27259519	  0.99858381	  0.99925239  0.49321714
+6675	 -6.27305894	 -0.00046352	  0.00028398	  7.27259543	  0.99858402	  0.99925250  0.49321712
+6676	 -6.27305911	 -0.00046345	  0.00028394	  7.27259566	  0.99858423	  0.99925261  0.49321724
+6677	 -6.27305927	 -0.00046338	  0.00028390	  7.27259590	  0.99858444	  0.99925272  0.49321723
+6678	 -6.27305944	 -0.00046331	  0.00028386	  7.27259613	  0.99858465	  0.99925283  0.49321718
+6679	 -6.27305961	 -0.00046324	  0.00028381	  7.27259637	  0.99858487	  0.99925295  0.49321725
+6680	 -6.27305977	 -0.00046317	  0.00028377	  7.27259660	  0.99858508	  0.99925306  0.49321729
+6681	 -6.27305994	 -0.00046310	  0.00028373	  7.27259684	  0.99858529	  0.99925317  0.49321728
+6682	 -6.27306010	 -0.00046303	  0.00028369	  7.27259707	  0.99858550	  0.99925328  0.49321728
+6683	 -6.27306027	 -0.00046296	  0.00028364	  7.27259731	  0.99858571	  0.99925339  0.49321738
+6684	 -6.27306044	 -0.00046289	  0.00028360	  7.27259754	  0.99858593	  0.99925351  0.49321730
+6685	 -6.27306060	 -0.00046282	  0.00028356	  7.27259778	  0.99858614	  0.99925362  0.49321736
+6686	 -6.27306077	 -0.00046276	  0.00028352	  7.27259801	  0.99858635	  0.99925373  0.49321743
+6687	 -6.27306093	 -0.00046269	  0.00028347	  7.27259825	  0.99858656	  0.99925384  0.49321740
+6688	 -6.27306110	 -0.00046262	  0.00028343	  7.27259848	  0.99858677	  0.99925395  0.49321757
+6689	 -6.27306126	 -0.00046255	  0.00028339	  7.27259872	  0.99858698	  0.99925406  0.49321754
+6690	 -6.27306143	 -0.00046248	  0.00028335	  7.27259895	  0.99858719	  0.99925417  0.49321760
+6691	 -6.27306159	 -0.00046241	  0.00028330	  7.27259918	  0.99858740	  0.99925429  0.49321757
+6692	 -6.27306176	 -0.00046234	  0.00028326	  7.27259942	  0.99858762	  0.99925440  0.49321761
+6693	 -6.27306192	 -0.00046227	  0.00028322	  7.27259965	  0.99858783	  0.99925451  0.49321757
+6694	 -6.27306209	 -0.00046220	  0.00028318	  7.27259989	  0.99858804	  0.99925462  0.49321764
+6695	 -6.27306225	 -0.00046213	  0.00028314	  7.27260012	  0.99858825	  0.99925473  0.49321769
+6696	 -6.27306242	 -0.00046206	  0.00028309	  7.27260036	  0.99858846	  0.99925484  0.49321767
+6697	 -6.27306259	 -0.00046200	  0.00028305	  7.27260059	  0.99858867	  0.99925495  0.49321773
+6698	 -6.27306275	 -0.00046193	  0.00028301	  7.27260082	  0.99858888	  0.99925506  0.49321772
+6699	 -6.27306292	 -0.00046186	  0.00028297	  7.27260106	  0.99858909	  0.99925518  0.49321771
+6700	 -6.27306308	 -0.00046179	  0.00028292	  7.27260129	  0.99858930	  0.99925529  0.49321779
+6701	 -6.27306324	 -0.00046172	  0.00028288	  7.27260152	  0.99858951	  0.99925540  0.49321779
+6702	 -6.27306341	 -0.00046165	  0.00028284	  7.27260176	  0.99858972	  0.99925551  0.49321780
+6703	 -6.27306357	 -0.00046158	  0.00028280	  7.27260199	  0.99858993	  0.99925562  0.49321791
+6704	 -6.27306374	 -0.00046151	  0.00028275	  7.27260223	  0.99859014	  0.99925573  0.49321791
+6705	 -6.27306390	 -0.00046144	  0.00028271	  7.27260246	  0.99859035	  0.99925584  0.49321788
+6706	 -6.27306407	 -0.00046138	  0.00028267	  7.27260269	  0.99859056	  0.99925595  0.49321791
+6707	 -6.27306423	 -0.00046131	  0.00028263	  7.27260293	  0.99859077	  0.99925606  0.49321799
+6708	 -6.27306440	 -0.00046124	  0.00028259	  7.27260316	  0.99859098	  0.99925618  0.49321795
+6709	 -6.27306456	 -0.00046117	  0.00028254	  7.27260339	  0.99859119	  0.99925629  0.49321797
+6710	 -6.27306473	 -0.00046110	  0.00028250	  7.27260363	  0.99859140	  0.99925640  0.49321800
+6711	 -6.27306489	 -0.00046103	  0.00028246	  7.27260386	  0.99859161	  0.99925651  0.49321804
+6712	 -6.27306505	 -0.00046096	  0.00028242	  7.27260409	  0.99859182	  0.99925662  0.49321800
+6713	 -6.27306522	 -0.00046090	  0.00028238	  7.27260432	  0.99859203	  0.99925673  0.49321804
+6714	 -6.27306538	 -0.00046083	  0.00028233	  7.27260456	  0.99859224	  0.99925684  0.49321806
+6715	 -6.27306555	 -0.00046076	  0.00028229	  7.27260479	  0.99859245	  0.99925695  0.49321814
+6716	 -6.27306571	 -0.00046069	  0.00028225	  7.27260502	  0.99859266	  0.99925706  0.49321818
+6717	 -6.27306588	 -0.00046062	  0.00028221	  7.27260525	  0.99859287	  0.99925717  0.49321811
+6718	 -6.27306604	 -0.00046055	  0.00028217	  7.27260549	  0.99859308	  0.99925728  0.49321821
+6719	 -6.27306620	 -0.00046048	  0.00028212	  7.27260572	  0.99859329	  0.99925739  0.49321828
+6720	 -6.27306637	 -0.00046042	  0.00028208	  7.27260595	  0.99859350	  0.99925750  0.49321829
+6721	 -6.27306653	 -0.00046035	  0.00028204	  7.27260618	  0.99859371	  0.99925761  0.49321826
+6722	 -6.27306670	 -0.00046028	  0.00028200	  7.27260642	  0.99859392	  0.99925772  0.49321833
+6723	 -6.27306686	 -0.00046021	  0.00028196	  7.27260665	  0.99859413	  0.99925783  0.49321833
+6724	 -6.27306702	 -0.00046014	  0.00028191	  7.27260688	  0.99859434	  0.99925794  0.49321830
+6725	 -6.27306719	 -0.00046007	  0.00028187	  7.27260711	  0.99859455	  0.99925805  0.49321842
+6726	 -6.27306735	 -0.00046000	  0.00028183	  7.27260735	  0.99859475	  0.99925817  0.49321838
+6727	 -6.27306751	 -0.00045994	  0.00028179	  7.27260758	  0.99859496	  0.99925828  0.49321849
+6728	 -6.27306768	 -0.00045987	  0.00028175	  7.27260781	  0.99859517	  0.99925839  0.49321848
+6729	 -6.27306784	 -0.00045980	  0.00028170	  7.27260804	  0.99859538	  0.99925850  0.49321848
+6730	 -6.27306800	 -0.00045973	  0.00028166	  7.27260827	  0.99859559	  0.99925861  0.49321852
+6731	 -6.27306817	 -0.00045966	  0.00028162	  7.27260850	  0.99859580	  0.99925872  0.49321855
+6732	 -6.27306833	 -0.00045959	  0.00028158	  7.27260874	  0.99859601	  0.99925883  0.49321849
+6733	 -6.27306849	 -0.00045953	  0.00028154	  7.27260897	  0.99859622	  0.99925894  0.49321861
+6734	 -6.27306866	 -0.00045946	  0.00028150	  7.27260920	  0.99859642	  0.99925905  0.49321858
+6735	 -6.27306882	 -0.00045939	  0.00028145	  7.27260943	  0.99859663	  0.99925916  0.49321869
+6736	 -6.27306898	 -0.00045932	  0.00028141	  7.27260966	  0.99859684	  0.99925927  0.49321873
+6737	 -6.27306915	 -0.00045925	  0.00028137	  7.27260989	  0.99859705	  0.99925938  0.49321868
+6738	 -6.27306931	 -0.00045919	  0.00028133	  7.27261012	  0.99859726	  0.99925949  0.49321872
+6739	 -6.27306947	 -0.00045912	  0.00028129	  7.27261035	  0.99859746	  0.99925960  0.49321879
+6740	 -6.27306964	 -0.00045905	  0.00028124	  7.27261059	  0.99859767	  0.99925971  0.49321873
+6741	 -6.27306980	 -0.00045898	  0.00028120	  7.27261082	  0.99859788	  0.99925982  0.49321881
+6742	 -6.27306996	 -0.00045891	  0.00028116	  7.27261105	  0.99859809	  0.99925993  0.49321869
+6743	 -6.27307012	 -0.00045885	  0.00028112	  7.27261128	  0.99859830	  0.99926003  0.49321889
+6744	 -6.27307029	 -0.00045878	  0.00028108	  7.27261151	  0.99859850	  0.99926014  0.49321883
+6745	 -6.27307045	 -0.00045871	  0.00028104	  7.27261174	  0.99859871	  0.99926025  0.49321889
+6746	 -6.27307061	 -0.00045864	  0.00028099	  7.27261197	  0.99859892	  0.99926036  0.49321886
+6747	 -6.27307078	 -0.00045857	  0.00028095	  7.27261220	  0.99859913	  0.99926047  0.49321894
+6748	 -6.27307094	 -0.00045851	  0.00028091	  7.27261243	  0.99859934	  0.99926058  0.49321894
+6749	 -6.27307110	 -0.00045844	  0.00028087	  7.27261266	  0.99859954	  0.99926069  0.49321891
+6750	 -6.27307126	 -0.00045837	  0.00028083	  7.27261289	  0.99859975	  0.99926080  0.49321907
+6751	 -6.27307142	 -0.00045830	  0.00028079	  7.27261312	  0.99859996	  0.99926091  0.49321892
+6752	 -6.27307159	 -0.00045823	  0.00028074	  7.27261335	  0.99860016	  0.99926102  0.49321904
+6753	 -6.27307175	 -0.00045817	  0.00028070	  7.27261358	  0.99860037	  0.99926113  0.49321907
+6754	 -6.27307191	 -0.00045810	  0.00028066	  7.27261381	  0.99860058	  0.99926124  0.49321903
+6755	 -6.27307207	 -0.00045803	  0.00028062	  7.27261404	  0.99860079	  0.99926135  0.49321912
+6756	 -6.27307224	 -0.00045796	  0.00028058	  7.27261427	  0.99860099	  0.99926146  0.49321912
+6757	 -6.27307240	 -0.00045790	  0.00028054	  7.27261450	  0.99860120	  0.99926157  0.49321912
+6758	 -6.27307256	 -0.00045783	  0.00028050	  7.27261473	  0.99860141	  0.99926168  0.49321924
+6759	 -6.27307272	 -0.00045776	  0.00028045	  7.27261496	  0.99860161	  0.99926179  0.49321924
+6760	 -6.27307288	 -0.00045769	  0.00028041	  7.27261519	  0.99860182	  0.99926190  0.49321921
+6761	 -6.27307305	 -0.00045762	  0.00028037	  7.27261542	  0.99860203	  0.99926200  0.49321927
+6762	 -6.27307321	 -0.00045756	  0.00028033	  7.27261565	  0.99860223	  0.99926211  0.49321925
+6763	 -6.27307337	 -0.00045749	  0.00028029	  7.27261588	  0.99860244	  0.99926222  0.49321926
+6764	 -6.27307353	 -0.00045742	  0.00028025	  7.27261611	  0.99860265	  0.99926233  0.49321932
+6765	 -6.27307369	 -0.00045735	  0.00028021	  7.27261634	  0.99860285	  0.99926244  0.49321935
+6766	 -6.27307386	 -0.00045729	  0.00028016	  7.27261657	  0.99860306	  0.99926255  0.49321931
+6767	 -6.27307402	 -0.00045722	  0.00028012	  7.27261680	  0.99860327	  0.99926266  0.49321940
+6768	 -6.27307418	 -0.00045715	  0.00028008	  7.27261703	  0.99860347	  0.99926277  0.49321940
+6769	 -6.27307434	 -0.00045708	  0.00028004	  7.27261726	  0.99860368	  0.99926288  0.49321938
+6770	 -6.27307450	 -0.00045702	  0.00028000	  7.27261749	  0.99860389	  0.99926299  0.49321955
+6771	 -6.27307466	 -0.00045695	  0.00027996	  7.27261771	  0.99860409	  0.99926309  0.49321946
+6772	 -6.27307482	 -0.00045688	  0.00027992	  7.27261794	  0.99860430	  0.99926320  0.49321952
+6773	 -6.27307499	 -0.00045681	  0.00027987	  7.27261817	  0.99860450	  0.99926331  0.49321956
+6774	 -6.27307515	 -0.00045675	  0.00027983	  7.27261840	  0.99860471	  0.99926342  0.49321950
+6775	 -6.27307531	 -0.00045668	  0.00027979	  7.27261863	  0.99860492	  0.99926353  0.49321959
+6776	 -6.27307547	 -0.00045661	  0.00027975	  7.27261886	  0.99860512	  0.99926364  0.49321954
+6777	 -6.27307563	 -0.00045654	  0.00027971	  7.27261909	  0.99860533	  0.99926375  0.49321964
+6778	 -6.27307579	 -0.00045648	  0.00027967	  7.27261931	  0.99860553	  0.99926385  0.49321960
+6779	 -6.27307595	 -0.00045641	  0.00027963	  7.27261954	  0.99860574	  0.99926396  0.49321972
+6780	 -6.27307611	 -0.00045634	  0.00027959	  7.27261977	  0.99860595	  0.99926407  0.49321973
+6781	 -6.27307628	 -0.00045628	  0.00027954	  7.27262000	  0.99860615	  0.99926418  0.49321968
+6782	 -6.27307644	 -0.00045621	  0.00027950	  7.27262023	  0.99860636	  0.99926429  0.49321967
+6783	 -6.27307660	 -0.00045614	  0.00027946	  7.27262046	  0.99860656	  0.99926440  0.49321972
+6784	 -6.27307676	 -0.00045607	  0.00027942	  7.27262068	  0.99860677	  0.99926451  0.49321981
+6785	 -6.27307692	 -0.00045601	  0.00027938	  7.27262091	  0.99860697	  0.99926461  0.49321979
+6786	 -6.27307708	 -0.00045594	  0.00027934	  7.27262114	  0.99860718	  0.99926472  0.49321986
+6787	 -6.27307724	 -0.00045587	  0.00027930	  7.27262137	  0.99860738	  0.99926483  0.49321988
+6788	 -6.27307740	 -0.00045581	  0.00027926	  7.27262160	  0.99860759	  0.99926494  0.49321990
+6789	 -6.27307756	 -0.00045574	  0.00027921	  7.27262182	  0.99860779	  0.99926505  0.49321998
+6790	 -6.27307772	 -0.00045567	  0.00027917	  7.27262205	  0.99860800	  0.99926516  0.49322003
+6791	 -6.27307788	 -0.00045560	  0.00027913	  7.27262228	  0.99860820	  0.99926526  0.49321994
+6792	 -6.27307804	 -0.00045554	  0.00027909	  7.27262251	  0.99860841	  0.99926537  0.49322002
+6793	 -6.27307820	 -0.00045547	  0.00027905	  7.27262273	  0.99860861	  0.99926548  0.49321999
+6794	 -6.27307836	 -0.00045540	  0.00027901	  7.27262296	  0.99860882	  0.99926559  0.49322005
+6795	 -6.27307852	 -0.00045534	  0.00027897	  7.27262319	  0.99860902	  0.99926570  0.49322007
+6796	 -6.27307868	 -0.00045527	  0.00027893	  7.27262342	  0.99860923	  0.99926580  0.49322002
+6797	 -6.27307884	 -0.00045520	  0.00027889	  7.27262364	  0.99860943	  0.99926591  0.49322013
+6798	 -6.27307900	 -0.00045514	  0.00027884	  7.27262387	  0.99860964	  0.99926602  0.49322009
+6799	 -6.27307916	 -0.00045507	  0.00027880	  7.27262410	  0.99860984	  0.99926613  0.49322010
+6800	 -6.27307932	 -0.00045500	  0.00027876	  7.27262432	  0.99861004	  0.99926624  0.49322020
+6801	 -6.27307949	 -0.00045493	  0.00027872	  7.27262455	  0.99861025	  0.99926634  0.49322020
+6802	 -6.27307964	 -0.00045487	  0.00027868	  7.27262478	  0.99861045	  0.99926645  0.49322021
+6803	 -6.27307980	 -0.00045480	  0.00027864	  7.27262500	  0.99861066	  0.99926656  0.49322031
+6804	 -6.27307996	 -0.00045473	  0.00027860	  7.27262523	  0.99861086	  0.99926667  0.49322031
+6805	 -6.27308012	 -0.00045467	  0.00027856	  7.27262546	  0.99861107	  0.99926677  0.49322033
+6806	 -6.27308028	 -0.00045460	  0.00027852	  7.27262568	  0.99861127	  0.99926688  0.49322029
+6807	 -6.27308044	 -0.00045453	  0.00027848	  7.27262591	  0.99861147	  0.99926699  0.49322034
+6808	 -6.27308060	 -0.00045447	  0.00027844	  7.27262614	  0.99861168	  0.99926710  0.49322033
+6809	 -6.27308076	 -0.00045440	  0.00027839	  7.27262636	  0.99861188	  0.99926721  0.49322036
+6810	 -6.27308092	 -0.00045433	  0.00027835	  7.27262659	  0.99861209	  0.99926731  0.49322047
+6811	 -6.27308108	 -0.00045427	  0.00027831	  7.27262682	  0.99861229	  0.99926742  0.49322045
+6812	 -6.27308124	 -0.00045420	  0.00027827	  7.27262704	  0.99861249	  0.99926753  0.49322049
+6813	 -6.27308140	 -0.00045413	  0.00027823	  7.27262727	  0.99861270	  0.99926764  0.49322055
+6814	 -6.27308156	 -0.00045407	  0.00027819	  7.27262749	  0.99861290	  0.99926774  0.49322054
+6815	 -6.27308172	 -0.00045400	  0.00027815	  7.27262772	  0.99861310	  0.99926785  0.49322056
+6816	 -6.27308188	 -0.00045393	  0.00027811	  7.27262795	  0.99861331	  0.99926796  0.49322059
+6817	 -6.27308204	 -0.00045387	  0.00027807	  7.27262817	  0.99861351	  0.99926807  0.49322050
+6818	 -6.27308220	 -0.00045380	  0.00027803	  7.27262840	  0.99861371	  0.99926817  0.49322063
+6819	 -6.27308236	 -0.00045373	  0.00027799	  7.27262862	  0.99861392	  0.99926828  0.49322066
+6820	 -6.27308252	 -0.00045367	  0.00027795	  7.27262885	  0.99861412	  0.99926839  0.49322063
+6821	 -6.27308268	 -0.00045360	  0.00027790	  7.27262907	  0.99861432	  0.99926849  0.49322070
+6822	 -6.27308284	 -0.00045353	  0.00027786	  7.27262930	  0.99861453	  0.99926860  0.49322066
+6823	 -6.27308299	 -0.00045347	  0.00027782	  7.27262953	  0.99861473	  0.99926871  0.49322073
+6824	 -6.27308315	 -0.00045340	  0.00027778	  7.27262975	  0.99861493	  0.99926882  0.49322074
+6825	 -6.27308331	 -0.00045334	  0.00027774	  7.27262998	  0.99861514	  0.99926892  0.49322073
+6826	 -6.27308347	 -0.00045327	  0.00027770	  7.27263020	  0.99861534	  0.99926903  0.49322080
+6827	 -6.27308363	 -0.00045320	  0.00027766	  7.27263043	  0.99861554	  0.99926914  0.49322087
+6828	 -6.27308379	 -0.00045314	  0.00027762	  7.27263065	  0.99861574	  0.99926924  0.49322079
+6829	 -6.27308395	 -0.00045307	  0.00027758	  7.27263088	  0.99861595	  0.99926935  0.49322088
+6830	 -6.27308411	 -0.00045300	  0.00027754	  7.27263110	  0.99861615	  0.99926946  0.49322089
+6831	 -6.27308426	 -0.00045294	  0.00027750	  7.27263133	  0.99861635	  0.99926956  0.49322091
+6832	 -6.27308442	 -0.00045287	  0.00027746	  7.27263155	  0.99861655	  0.99926967  0.49322099
+6833	 -6.27308458	 -0.00045281	  0.00027742	  7.27263178	  0.99861676	  0.99926978  0.49322093
+6834	 -6.27308474	 -0.00045274	  0.00027738	  7.27263200	  0.99861696	  0.99926989  0.49322094
+6835	 -6.27308490	 -0.00045267	  0.00027734	  7.27263223	  0.99861716	  0.99926999  0.49322104
+6836	 -6.27308506	 -0.00045261	  0.00027729	  7.27263245	  0.99861736	  0.99927010  0.49322101
+6837	 -6.27308522	 -0.00045254	  0.00027725	  7.27263268	  0.99861757	  0.99927021  0.49322100
+6838	 -6.27308537	 -0.00045247	  0.00027721	  7.27263290	  0.99861777	  0.99927031  0.49322109
+6839	 -6.27308553	 -0.00045241	  0.00027717	  7.27263312	  0.99861797	  0.99927042  0.49322112
+6840	 -6.27308569	 -0.00045234	  0.00027713	  7.27263335	  0.99861817	  0.99927053  0.49322118
+6841	 -6.27308585	 -0.00045228	  0.00027709	  7.27263357	  0.99861837	  0.99927063  0.49322108
+6842	 -6.27308601	 -0.00045221	  0.00027705	  7.27263380	  0.99861858	  0.99927074  0.49322119
+6843	 -6.27308616	 -0.00045214	  0.00027701	  7.27263402	  0.99861878	  0.99927085  0.49322124
+6844	 -6.27308632	 -0.00045208	  0.00027697	  7.27263424	  0.99861898	  0.99927095  0.49322120
+6845	 -6.27308648	 -0.00045201	  0.00027693	  7.27263447	  0.99861918	  0.99927106  0.49322125
+6846	 -6.27308664	 -0.00045195	  0.00027689	  7.27263469	  0.99861938	  0.99927116  0.49322131
+6847	 -6.27308680	 -0.00045188	  0.00027685	  7.27263492	  0.99861959	  0.99927127  0.49322139
+6848	 -6.27308695	 -0.00045181	  0.00027681	  7.27263514	  0.99861979	  0.99927138  0.49322128
+6849	 -6.27308711	 -0.00045175	  0.00027677	  7.27263536	  0.99861999	  0.99927148  0.49322133
+6850	 -6.27308727	 -0.00045168	  0.00027673	  7.27263559	  0.99862019	  0.99927159  0.49322134
+6851	 -6.27308743	 -0.00045162	  0.00027669	  7.27263581	  0.99862039	  0.99927170  0.49322141
+6852	 -6.27308759	 -0.00045155	  0.00027665	  7.27263604	  0.99862059	  0.99927180  0.49322137
+6853	 -6.27308774	 -0.00045148	  0.00027661	  7.27263626	  0.99862079	  0.99927191  0.49322148
+6854	 -6.27308790	 -0.00045142	  0.00027657	  7.27263648	  0.99862099	  0.99927202  0.49322145
+6855	 -6.27308806	 -0.00045135	  0.00027653	  7.27263671	  0.99862120	  0.99927212  0.49322138
+6856	 -6.27308822	 -0.00045129	  0.00027649	  7.27263693	  0.99862140	  0.99927223  0.49322155
+6857	 -6.27308837	 -0.00045122	  0.00027645	  7.27263715	  0.99862160	  0.99927233  0.49322147
+6858	 -6.27308853	 -0.00045116	  0.00027641	  7.27263737	  0.99862180	  0.99927244  0.49322164
+6859	 -6.27308869	 -0.00045109	  0.00027636	  7.27263760	  0.99862200	  0.99927255  0.49322155
+6860	 -6.27308884	 -0.00045102	  0.00027632	  7.27263782	  0.99862220	  0.99927265  0.49322156
+6861	 -6.27308900	 -0.00045096	  0.00027628	  7.27263804	  0.99862240	  0.99927276  0.49322154
+6862	 -6.27308916	 -0.00045089	  0.00027624	  7.27263827	  0.99862260	  0.99927286  0.49322167
+6863	 -6.27308932	 -0.00045083	  0.00027620	  7.27263849	  0.99862280	  0.99927297  0.49322165
+6864	 -6.27308947	 -0.00045076	  0.00027616	  7.27263871	  0.99862300	  0.99927308  0.49322177
+6865	 -6.27308963	 -0.00045070	  0.00027612	  7.27263894	  0.99862320	  0.99927318  0.49322172
+6866	 -6.27308979	 -0.00045063	  0.00027608	  7.27263916	  0.99862340	  0.99927329  0.49322177
+6867	 -6.27308994	 -0.00045056	  0.00027604	  7.27263938	  0.99862360	  0.99927339  0.49322171
+6868	 -6.27309010	 -0.00045050	  0.00027600	  7.27263960	  0.99862381	  0.99927350  0.49322172
+6869	 -6.27309026	 -0.00045043	  0.00027596	  7.27263983	  0.99862401	  0.99927360  0.49322182
+6870	 -6.27309042	 -0.00045037	  0.00027592	  7.27264005	  0.99862421	  0.99927371  0.49322183
+6871	 -6.27309057	 -0.00045030	  0.00027588	  7.27264027	  0.99862441	  0.99927382  0.49322187
+6872	 -6.27309073	 -0.00045024	  0.00027584	  7.27264049	  0.99862461	  0.99927392  0.49322184
+6873	 -6.27309089	 -0.00045017	  0.00027580	  7.27264071	  0.99862481	  0.99927403  0.49322189
+6874	 -6.27309104	 -0.00045011	  0.00027576	  7.27264094	  0.99862501	  0.99927413  0.49322190
+6875	 -6.27309120	 -0.00045004	  0.00027572	  7.27264116	  0.99862521	  0.99927424  0.49322188
+6876	 -6.27309136	 -0.00044997	  0.00027568	  7.27264138	  0.99862541	  0.99927434  0.49322197
+6877	 -6.27309151	 -0.00044991	  0.00027564	  7.27264160	  0.99862561	  0.99927445  0.49322195
+6878	 -6.27309167	 -0.00044984	  0.00027560	  7.27264182	  0.99862581	  0.99927455  0.49322198
+6879	 -6.27309183	 -0.00044978	  0.00027556	  7.27264205	  0.99862601	  0.99927466  0.49322195
+6880	 -6.27309198	 -0.00044971	  0.00027552	  7.27264227	  0.99862621	  0.99927477  0.49322211
+6881	 -6.27309214	 -0.00044965	  0.00027548	  7.27264249	  0.99862641	  0.99927487  0.49322215
+6882	 -6.27309229	 -0.00044958	  0.00027544	  7.27264271	  0.99862660	  0.99927498  0.49322209
+6883	 -6.27309245	 -0.00044952	  0.00027540	  7.27264293	  0.99862680	  0.99927508  0.49322211
+6884	 -6.27309261	 -0.00044945	  0.00027536	  7.27264315	  0.99862700	  0.99927519  0.49322213
+6885	 -6.27309276	 -0.00044939	  0.00027532	  7.27264338	  0.99862720	  0.99927529  0.49322220
+6886	 -6.27309292	 -0.00044932	  0.00027528	  7.27264360	  0.99862740	  0.99927540  0.49322206
+6887	 -6.27309307	 -0.00044926	  0.00027524	  7.27264382	  0.99862760	  0.99927550  0.49322222
+6888	 -6.27309323	 -0.00044919	  0.00027520	  7.27264404	  0.99862780	  0.99927561  0.49322230
+6889	 -6.27309339	 -0.00044913	  0.00027516	  7.27264426	  0.99862800	  0.99927571  0.49322233
+6890	 -6.27309354	 -0.00044906	  0.00027512	  7.27264448	  0.99862820	  0.99927582  0.49322226
+6891	 -6.27309370	 -0.00044900	  0.00027508	  7.27264470	  0.99862840	  0.99927592  0.49322237
+6892	 -6.27309385	 -0.00044893	  0.00027504	  7.27264492	  0.99862860	  0.99927603  0.49322238
+6893	 -6.27309401	 -0.00044887	  0.00027500	  7.27264514	  0.99862880	  0.99927613  0.49322229
+6894	 -6.27309417	 -0.00044880	  0.00027496	  7.27264537	  0.99862899	  0.99927624  0.49322245
+6895	 -6.27309432	 -0.00044874	  0.00027492	  7.27264559	  0.99862919	  0.99927634  0.49322245
+6896	 -6.27309448	 -0.00044867	  0.00027488	  7.27264581	  0.99862939	  0.99927645  0.49322246
+6897	 -6.27309463	 -0.00044861	  0.00027484	  7.27264603	  0.99862959	  0.99927655  0.49322247
+6898	 -6.27309479	 -0.00044854	  0.00027480	  7.27264625	  0.99862979	  0.99927666  0.49322254
+6899	 -6.27309494	 -0.00044848	  0.00027476	  7.27264647	  0.99862999	  0.99927676  0.49322253
+6900	 -6.27309510	 -0.00044841	  0.00027472	  7.27264669	  0.99863019	  0.99927687  0.49322258
+6901	 -6.27309526	 -0.00044835	  0.00027468	  7.27264691	  0.99863039	  0.99927697  0.49322250
+6902	 -6.27309541	 -0.00044828	  0.00027464	  7.27264713	  0.99863058	  0.99927708  0.49322253
+6903	 -6.27309557	 -0.00044822	  0.00027460	  7.27264735	  0.99863078	  0.99927718  0.49322260
+6904	 -6.27309572	 -0.00044815	  0.00027456	  7.27264757	  0.99863098	  0.99927729  0.49322265
+6905	 -6.27309588	 -0.00044809	  0.00027452	  7.27264779	  0.99863118	  0.99927739  0.49322261
+6906	 -6.27309603	 -0.00044802	  0.00027448	  7.27264801	  0.99863138	  0.99927750  0.49322265
+6907	 -6.27309619	 -0.00044796	  0.00027444	  7.27264823	  0.99863158	  0.99927760  0.49322274
+6908	 -6.27309634	 -0.00044789	  0.00027440	  7.27264845	  0.99863177	  0.99927770  0.49322271
+6909	 -6.27309650	 -0.00044783	  0.00027436	  7.27264867	  0.99863197	  0.99927781  0.49322271
+6910	 -6.27309665	 -0.00044776	  0.00027432	  7.27264889	  0.99863217	  0.99927791  0.49322277
+6911	 -6.27309681	 -0.00044770	  0.00027429	  7.27264911	  0.99863237	  0.99927802  0.49322282
+6912	 -6.27309696	 -0.00044763	  0.00027425	  7.27264933	  0.99863256	  0.99927812  0.49322277
+6913	 -6.27309712	 -0.00044757	  0.00027421	  7.27264955	  0.99863276	  0.99927823  0.49322279
+6914	 -6.27309727	 -0.00044750	  0.00027417	  7.27264977	  0.99863296	  0.99927833  0.49322290
+6915	 -6.27309743	 -0.00044744	  0.00027413	  7.27264999	  0.99863316	  0.99927844  0.49322286
+6916	 -6.27309758	 -0.00044737	  0.00027409	  7.27265021	  0.99863336	  0.99927854  0.49322289
+6917	 -6.27309774	 -0.00044731	  0.00027405	  7.27265043	  0.99863355	  0.99927864  0.49322292
+6918	 -6.27309789	 -0.00044724	  0.00027401	  7.27265065	  0.99863375	  0.99927875  0.49322303
+6919	 -6.27309805	 -0.00044718	  0.00027397	  7.27265087	  0.99863395	  0.99927885  0.49322297
+6920	 -6.27309820	 -0.00044712	  0.00027393	  7.27265108	  0.99863415	  0.99927896  0.49322299
+6921	 -6.27309835	 -0.00044705	  0.00027389	  7.27265130	  0.99863434	  0.99927906  0.49322300
+6922	 -6.27309851	 -0.00044699	  0.00027385	  7.27265152	  0.99863454	  0.99927916  0.49322302
+6923	 -6.27309866	 -0.00044692	  0.00027381	  7.27265174	  0.99863474	  0.99927927  0.49322302
+6924	 -6.27309882	 -0.00044686	  0.00027377	  7.27265196	  0.99863493	  0.99927937  0.49322309
+6925	 -6.27309897	 -0.00044679	  0.00027373	  7.27265218	  0.99863513	  0.99927948  0.49322304
+6926	 -6.27309913	 -0.00044673	  0.00027369	  7.27265240	  0.99863533	  0.99927958  0.49322317
+6927	 -6.27309928	 -0.00044666	  0.00027365	  7.27265262	  0.99863553	  0.99927968  0.49322317
+6928	 -6.27309944	 -0.00044660	  0.00027361	  7.27265284	  0.99863572	  0.99927979  0.49322320
+6929	 -6.27309959	 -0.00044653	  0.00027357	  7.27265305	  0.99863592	  0.99927989  0.49322325
+6930	 -6.27309974	 -0.00044647	  0.00027353	  7.27265327	  0.99863612	  0.99928000  0.49322322
+6931	 -6.27309990	 -0.00044641	  0.00027349	  7.27265349	  0.99863631	  0.99928010  0.49322331
+6932	 -6.27310005	 -0.00044634	  0.00027345	  7.27265371	  0.99863651	  0.99928020  0.49322327
+6933	 -6.27310021	 -0.00044628	  0.00027341	  7.27265393	  0.99863671	  0.99928031  0.49322319
+6934	 -6.27310036	 -0.00044621	  0.00027338	  7.27265415	  0.99863690	  0.99928041  0.49322336
+6935	 -6.27310051	 -0.00044615	  0.00027334	  7.27265436	  0.99863710	  0.99928052  0.49322341
+6936	 -6.27310067	 -0.00044608	  0.00027330	  7.27265458	  0.99863730	  0.99928062  0.49322335
+6937	 -6.27310082	 -0.00044602	  0.00027326	  7.27265480	  0.99863749	  0.99928072  0.49322336
+6938	 -6.27310097	 -0.00044596	  0.00027322	  7.27265502	  0.99863769	  0.99928083  0.49322343
+6939	 -6.27310113	 -0.00044589	  0.00027318	  7.27265524	  0.99863789	  0.99928093  0.49322345
+6940	 -6.27310128	 -0.00044583	  0.00027314	  7.27265546	  0.99863808	  0.99928103  0.49322341
+6941	 -6.27310144	 -0.00044576	  0.00027310	  7.27265567	  0.99863828	  0.99928114  0.49322343
+6942	 -6.27310159	 -0.00044570	  0.00027306	  7.27265589	  0.99863847	  0.99928124  0.49322353
+6943	 -6.27310174	 -0.00044563	  0.00027302	  7.27265611	  0.99863867	  0.99928134  0.49322355
+6944	 -6.27310190	 -0.00044557	  0.00027298	  7.27265633	  0.99863887	  0.99928145  0.49322359
+6945	 -6.27310205	 -0.00044551	  0.00027294	  7.27265654	  0.99863906	  0.99928155  0.49322357
+6946	 -6.27310220	 -0.00044544	  0.00027290	  7.27265676	  0.99863926	  0.99928165  0.49322365
+6947	 -6.27310236	 -0.00044538	  0.00027286	  7.27265698	  0.99863945	  0.99928176  0.49322365
+6948	 -6.27310251	 -0.00044531	  0.00027282	  7.27265720	  0.99863965	  0.99928186  0.49322366
+6949	 -6.27310266	 -0.00044525	  0.00027279	  7.27265741	  0.99863984	  0.99928196  0.49322350
+6950	 -6.27310282	 -0.00044519	  0.00027275	  7.27265763	  0.99864004	  0.99928207  0.49322363
+6951	 -6.27310297	 -0.00044512	  0.00027271	  7.27265785	  0.99864024	  0.99928217  0.49322376
+6952	 -6.27310312	 -0.00044506	  0.00027267	  7.27265807	  0.99864043	  0.99928227  0.49322376
+6953	 -6.27310328	 -0.00044499	  0.00027263	  7.27265828	  0.99864063	  0.99928238  0.49322386
+6954	 -6.27310343	 -0.00044493	  0.00027259	  7.27265850	  0.99864082	  0.99928248  0.49322387
+6955	 -6.27310358	 -0.00044487	  0.00027255	  7.27265872	  0.99864102	  0.99928258  0.49322377
+6956	 -6.27310374	 -0.00044480	  0.00027251	  7.27265893	  0.99864121	  0.99928269  0.49322371
+6957	 -6.27310389	 -0.00044474	  0.00027247	  7.27265915	  0.99864141	  0.99928279  0.49322385
+6958	 -6.27310404	 -0.00044467	  0.00027243	  7.27265937	  0.99864160	  0.99928289  0.49322391
+6959	 -6.27310419	 -0.00044461	  0.00027239	  7.27265958	  0.99864180	  0.99928300  0.49322388
+6960	 -6.27310435	 -0.00044455	  0.00027235	  7.27265980	  0.99864199	  0.99928310  0.49322387
+6961	 -6.27310450	 -0.00044448	  0.00027231	  7.27266002	  0.99864219	  0.99928320  0.49322394
+6962	 -6.27310465	 -0.00044442	  0.00027228	  7.27266023	  0.99864238	  0.99928330  0.49322403
+6963	 -6.27310481	 -0.00044436	  0.00027224	  7.27266045	  0.99864258	  0.99928341  0.49322393
+6964	 -6.27310496	 -0.00044429	  0.00027220	  7.27266067	  0.99864277	  0.99928351  0.49322396
+6965	 -6.27310511	 -0.00044423	  0.00027216	  7.27266088	  0.99864297	  0.99928361  0.49322397
+6966	 -6.27310526	 -0.00044416	  0.00027212	  7.27266110	  0.99864316	  0.99928372  0.49322408
+6967	 -6.27310542	 -0.00044410	  0.00027208	  7.27266132	  0.99864336	  0.99928382  0.49322399
+6968	 -6.27310557	 -0.00044404	  0.00027204	  7.27266153	  0.99864355	  0.99928392  0.49322405
+6969	 -6.27310572	 -0.00044397	  0.00027200	  7.27266175	  0.99864375	  0.99928402  0.49322411
+6970	 -6.27310587	 -0.00044391	  0.00027196	  7.27266196	  0.99864394	  0.99928413  0.49322415
+6971	 -6.27310603	 -0.00044385	  0.00027192	  7.27266218	  0.99864414	  0.99928423  0.49322414
+6972	 -6.27310618	 -0.00044378	  0.00027189	  7.27266240	  0.99864433	  0.99928433  0.49322429
+6973	 -6.27310633	 -0.00044372	  0.00027185	  7.27266261	  0.99864453	  0.99928444  0.49322422
+6974	 -6.27310648	 -0.00044365	  0.00027181	  7.27266283	  0.99864472	  0.99928454  0.49322422
+6975	 -6.27310663	 -0.00044359	  0.00027177	  7.27266304	  0.99864491	  0.99928464  0.49322418
+6976	 -6.27310679	 -0.00044353	  0.00027173	  7.27266326	  0.99864511	  0.99928474  0.49322426
+6977	 -6.27310694	 -0.00044346	  0.00027169	  7.27266347	  0.99864530	  0.99928485  0.49322432
+6978	 -6.27310709	 -0.00044340	  0.00027165	  7.27266369	  0.99864550	  0.99928495  0.49322429
+6979	 -6.27310724	 -0.00044334	  0.00027161	  7.27266391	  0.99864569	  0.99928505  0.49322440
+6980	 -6.27310739	 -0.00044327	  0.00027157	  7.27266412	  0.99864589	  0.99928515  0.49322431
+6981	 -6.27310755	 -0.00044321	  0.00027153	  7.27266434	  0.99864608	  0.99928526  0.49322435
+6982	 -6.27310770	 -0.00044315	  0.00027150	  7.27266455	  0.99864627	  0.99928536  0.49322446
+6983	 -6.27310785	 -0.00044308	  0.00027146	  7.27266477	  0.99864647	  0.99928546  0.49322440
+6984	 -6.27310800	 -0.00044302	  0.00027142	  7.27266498	  0.99864666	  0.99928556  0.49322441
+6985	 -6.27310815	 -0.00044296	  0.00027138	  7.27266520	  0.99864685	  0.99928566  0.49322447
+6986	 -6.27310831	 -0.00044289	  0.00027134	  7.27266541	  0.99864705	  0.99928577  0.49322449
+6987	 -6.27310846	 -0.00044283	  0.00027130	  7.27266563	  0.99864724	  0.99928587  0.49322455
+6988	 -6.27310861	 -0.00044277	  0.00027126	  7.27266584	  0.99864744	  0.99928597  0.49322455
+6989	 -6.27310876	 -0.00044270	  0.00027122	  7.27266606	  0.99864763	  0.99928607  0.49322448
+6990	 -6.27310891	 -0.00044264	  0.00027119	  7.27266627	  0.99864782	  0.99928618  0.49322460
+6991	 -6.27310906	 -0.00044258	  0.00027115	  7.27266649	  0.99864802	  0.99928628  0.49322463
+6992	 -6.27310921	 -0.00044251	  0.00027111	  7.27266670	  0.99864821	  0.99928638  0.49322466
+6993	 -6.27310937	 -0.00044245	  0.00027107	  7.27266692	  0.99864840	  0.99928648  0.49322476
+6994	 -6.27310952	 -0.00044239	  0.00027103	  7.27266713	  0.99864860	  0.99928658  0.49322465
+6995	 -6.27310967	 -0.00044232	  0.00027099	  7.27266735	  0.99864879	  0.99928669  0.49322471
+6996	 -6.27310982	 -0.00044226	  0.00027095	  7.27266756	  0.99864898	  0.99928679  0.49322475
+6997	 -6.27310997	 -0.00044220	  0.00027091	  7.27266777	  0.99864917	  0.99928689  0.49322474
+6998	 -6.27311012	 -0.00044213	  0.00027088	  7.27266799	  0.99864937	  0.99928699  0.49322474
+6999	 -6.27311027	 -0.00044207	  0.00027084	  7.27266820	  0.99864956	  0.99928709  0.49322480
+7000	 -6.27311042	 -0.00044201	  0.00027080	  7.27266842	  0.99864975	  0.99928719  0.49322485
+7001	 -6.27311058	 -0.00044194	  0.00027076	  7.27266863	  0.99864995	  0.99928730  0.49322481
+7002	 -6.27311073	 -0.00044188	  0.00027072	  7.27266884	  0.99865014	  0.99928740  0.49322488
+7003	 -6.27311088	 -0.00044182	  0.00027068	  7.27266906	  0.99865033	  0.99928750  0.49322485
+7004	 -6.27311103	 -0.00044176	  0.00027064	  7.27266927	  0.99865052	  0.99928760  0.49322488
+7005	 -6.27311118	 -0.00044169	  0.00027060	  7.27266949	  0.99865072	  0.99928770  0.49322494
+7006	 -6.27311133	 -0.00044163	  0.00027057	  7.27266970	  0.99865091	  0.99928780  0.49322492
+7007	 -6.27311148	 -0.00044157	  0.00027053	  7.27266991	  0.99865110	  0.99928791  0.49322499
+7008	 -6.27311163	 -0.00044150	  0.00027049	  7.27267013	  0.99865129	  0.99928801  0.49322490
+7009	 -6.27311178	 -0.00044144	  0.00027045	  7.27267034	  0.99865149	  0.99928811  0.49322494
+7010	 -6.27311193	 -0.00044138	  0.00027041	  7.27267056	  0.99865168	  0.99928821  0.49322503
+7011	 -6.27311208	 -0.00044131	  0.00027037	  7.27267077	  0.99865187	  0.99928831  0.49322507
+7012	 -6.27311223	 -0.00044125	  0.00027033	  7.27267098	  0.99865206	  0.99928841  0.49322506
+7013	 -6.27311238	 -0.00044119	  0.00027030	  7.27267120	  0.99865226	  0.99928852  0.49322507
+7014	 -6.27311253	 -0.00044113	  0.00027026	  7.27267141	  0.99865245	  0.99928862  0.49322511
+7015	 -6.27311269	 -0.00044106	  0.00027022	  7.27267162	  0.99865264	  0.99928872  0.49322515
+7016	 -6.27311284	 -0.00044100	  0.00027018	  7.27267184	  0.99865283	  0.99928882  0.49322525
+7017	 -6.27311299	 -0.00044094	  0.00027014	  7.27267205	  0.99865302	  0.99928892  0.49322511
+7018	 -6.27311314	 -0.00044087	  0.00027010	  7.27267226	  0.99865322	  0.99928902  0.49322518
+7019	 -6.27311329	 -0.00044081	  0.00027006	  7.27267247	  0.99865341	  0.99928912  0.49322526
+7020	 -6.27311344	 -0.00044075	  0.00027003	  7.27267269	  0.99865360	  0.99928922  0.49322521
+7021	 -6.27311359	 -0.00044069	  0.00026999	  7.27267290	  0.99865379	  0.99928933  0.49322528
+7022	 -6.27311374	 -0.00044062	  0.00026995	  7.27267311	  0.99865398	  0.99928943  0.49322529
+7023	 -6.27311389	 -0.00044056	  0.00026991	  7.27267333	  0.99865418	  0.99928953  0.49322527
+7024	 -6.27311404	 -0.00044050	  0.00026987	  7.27267354	  0.99865437	  0.99928963  0.49322539
+7025	 -6.27311419	 -0.00044044	  0.00026983	  7.27267375	  0.99865456	  0.99928973  0.49322538
+7026	 -6.27311434	 -0.00044037	  0.00026980	  7.27267396	  0.99865475	  0.99928983  0.49322547
+7027	 -6.27311449	 -0.00044031	  0.00026976	  7.27267418	  0.99865494	  0.99928993  0.49322544
+7028	 -6.27311464	 -0.00044025	  0.00026972	  7.27267439	  0.99865513	  0.99929003  0.49322545
+7029	 -6.27311479	 -0.00044018	  0.00026968	  7.27267460	  0.99865532	  0.99929013  0.49322545
+7030	 -6.27311494	 -0.00044012	  0.00026964	  7.27267481	  0.99865551	  0.99929024  0.49322537
+7031	 -6.27311509	 -0.00044006	  0.00026960	  7.27267503	  0.99865571	  0.99929034  0.49322549
+7032	 -6.27311524	 -0.00044000	  0.00026957	  7.27267524	  0.99865590	  0.99929044  0.49322552
+7033	 -6.27311539	 -0.00043993	  0.00026953	  7.27267545	  0.99865609	  0.99929054  0.49322561
+7034	 -6.27311554	 -0.00043987	  0.00026949	  7.27267566	  0.99865628	  0.99929064  0.49322551
+7035	 -6.27311569	 -0.00043981	  0.00026945	  7.27267588	  0.99865647	  0.99929074  0.49322559
+7036	 -6.27311583	 -0.00043975	  0.00026941	  7.27267609	  0.99865666	  0.99929084  0.49322564
+7037	 -6.27311598	 -0.00043968	  0.00026937	  7.27267630	  0.99865685	  0.99929094  0.49322558
+7038	 -6.27311613	 -0.00043962	  0.00026934	  7.27267651	  0.99865704	  0.99929104  0.49322567
+7039	 -6.27311628	 -0.00043956	  0.00026930	  7.27267672	  0.99865723	  0.99929114  0.49322564
+7040	 -6.27311643	 -0.00043950	  0.00026926	  7.27267693	  0.99865742	  0.99929124  0.49322573
+7041	 -6.27311658	 -0.00043944	  0.00026922	  7.27267715	  0.99865762	  0.99929134  0.49322571
+7042	 -6.27311673	 -0.00043937	  0.00026918	  7.27267736	  0.99865781	  0.99929144  0.49322569
+7043	 -6.27311688	 -0.00043931	  0.00026914	  7.27267757	  0.99865800	  0.99929155  0.49322578
+7044	 -6.27311703	 -0.00043925	  0.00026911	  7.27267778	  0.99865819	  0.99929165  0.49322578
+7045	 -6.27311718	 -0.00043919	  0.00026907	  7.27267799	  0.99865838	  0.99929175  0.49322584
+7046	 -6.27311733	 -0.00043912	  0.00026903	  7.27267820	  0.99865857	  0.99929185  0.49322586
+7047	 -6.27311748	 -0.00043906	  0.00026899	  7.27267842	  0.99865876	  0.99929195  0.49322590
+7048	 -6.27311763	 -0.00043900	  0.00026895	  7.27267863	  0.99865895	  0.99929205  0.49322588
+7049	 -6.27311777	 -0.00043894	  0.00026892	  7.27267884	  0.99865914	  0.99929215  0.49322594
+7050	 -6.27311792	 -0.00043887	  0.00026888	  7.27267905	  0.99865933	  0.99929225  0.49322584
+7051	 -6.27311807	 -0.00043881	  0.00026884	  7.27267926	  0.99865952	  0.99929235  0.49322593
+7052	 -6.27311822	 -0.00043875	  0.00026880	  7.27267947	  0.99865971	  0.99929245  0.49322593
+7053	 -6.27311837	 -0.00043869	  0.00026876	  7.27267968	  0.99865990	  0.99929255  0.49322599
+7054	 -6.27311852	 -0.00043863	  0.00026872	  7.27267989	  0.99866009	  0.99929265  0.49322601
+7055	 -6.27311867	 -0.00043856	  0.00026869	  7.27268010	  0.99866028	  0.99929275  0.49322609
+7056	 -6.27311882	 -0.00043850	  0.00026865	  7.27268032	  0.99866047	  0.99929285  0.49322605
+7057	 -6.27311897	 -0.00043844	  0.00026861	  7.27268053	  0.99866066	  0.99929295  0.49322609
+7058	 -6.27311911	 -0.00043838	  0.00026857	  7.27268074	  0.99866085	  0.99929305  0.49322609
+7059	 -6.27311926	 -0.00043832	  0.00026853	  7.27268095	  0.99866104	  0.99929315  0.49322617
+7060	 -6.27311941	 -0.00043825	  0.00026850	  7.27268116	  0.99866123	  0.99929325  0.49322622
+7061	 -6.27311956	 -0.00043819	  0.00026846	  7.27268137	  0.99866142	  0.99929335  0.49322614
+7062	 -6.27311971	 -0.00043813	  0.00026842	  7.27268158	  0.99866161	  0.99929345  0.49322631
+7063	 -6.27311986	 -0.00043807	  0.00026838	  7.27268179	  0.99866180	  0.99929355  0.49322620
+7064	 -6.27312000	 -0.00043800	  0.00026834	  7.27268200	  0.99866199	  0.99929365  0.49322616
+7065	 -6.27312015	 -0.00043794	  0.00026831	  7.27268221	  0.99866217	  0.99929375  0.49322624
+7066	 -6.27312030	 -0.00043788	  0.00026827	  7.27268242	  0.99866236	  0.99929385  0.49322623
+7067	 -6.27312045	 -0.00043782	  0.00026823	  7.27268263	  0.99866255	  0.99929395  0.49322635
+7068	 -6.27312060	 -0.00043776	  0.00026819	  7.27268284	  0.99866274	  0.99929405  0.49322632
+7069	 -6.27312075	 -0.00043770	  0.00026815	  7.27268305	  0.99866293	  0.99929415  0.49322635
+7070	 -6.27312089	 -0.00043763	  0.00026812	  7.27268326	  0.99866312	  0.99929425  0.49322639
+7071	 -6.27312104	 -0.00043757	  0.00026808	  7.27268347	  0.99866331	  0.99929435  0.49322639
+7072	 -6.27312119	 -0.00043751	  0.00026804	  7.27268368	  0.99866350	  0.99929445  0.49322638
+7073	 -6.27312134	 -0.00043745	  0.00026800	  7.27268389	  0.99866369	  0.99929455  0.49322647
+7074	 -6.27312149	 -0.00043739	  0.00026796	  7.27268410	  0.99866388	  0.99929465  0.49322642
+7075	 -6.27312163	 -0.00043732	  0.00026793	  7.27268431	  0.99866407	  0.99929475  0.49322644
+7076	 -6.27312178	 -0.00043726	  0.00026789	  7.27268452	  0.99866425	  0.99929485  0.49322646
+7077	 -6.27312193	 -0.00043720	  0.00026785	  7.27268473	  0.99866444	  0.99929495  0.49322653
+7078	 -6.27312208	 -0.00043714	  0.00026781	  7.27268494	  0.99866463	  0.99929505  0.49322663
+7079	 -6.27312223	 -0.00043708	  0.00026778	  7.27268515	  0.99866482	  0.99929515  0.49322655
+7080	 -6.27312237	 -0.00043702	  0.00026774	  7.27268536	  0.99866501	  0.99929525  0.49322658
+7081	 -6.27312252	 -0.00043695	  0.00026770	  7.27268557	  0.99866520	  0.99929535  0.49322660
+7082	 -6.27312267	 -0.00043689	  0.00026766	  7.27268578	  0.99866539	  0.99929545  0.49322666
+7083	 -6.27312282	 -0.00043683	  0.00026762	  7.27268599	  0.99866557	  0.99929555  0.49322663
+7084	 -6.27312296	 -0.00043677	  0.00026759	  7.27268619	  0.99866576	  0.99929564  0.49322672
+7085	 -6.27312311	 -0.00043671	  0.00026755	  7.27268640	  0.99866595	  0.99929574  0.49322669
+7086	 -6.27312326	 -0.00043665	  0.00026751	  7.27268661	  0.99866614	  0.99929584  0.49322667
+7087	 -6.27312341	 -0.00043658	  0.00026747	  7.27268682	  0.99866633	  0.99929594  0.49322665
+7088	 -6.27312355	 -0.00043652	  0.00026744	  7.27268703	  0.99866652	  0.99929604  0.49322678
+7089	 -6.27312370	 -0.00043646	  0.00026740	  7.27268724	  0.99866670	  0.99929614  0.49322680
+7090	 -6.27312385	 -0.00043640	  0.00026736	  7.27268745	  0.99866689	  0.99929624  0.49322677
+7091	 -6.27312399	 -0.00043634	  0.00026732	  7.27268766	  0.99866708	  0.99929634  0.49322687
+7092	 -6.27312414	 -0.00043628	  0.00026728	  7.27268787	  0.99866727	  0.99929644  0.49322695
+7093	 -6.27312429	 -0.00043622	  0.00026725	  7.27268807	  0.99866746	  0.99929654  0.49322684
+7094	 -6.27312444	 -0.00043615	  0.00026721	  7.27268828	  0.99866764	  0.99929664  0.49322695
+7095	 -6.27312458	 -0.00043609	  0.00026717	  7.27268849	  0.99866783	  0.99929674  0.49322694
+7096	 -6.27312473	 -0.00043603	  0.00026713	  7.27268870	  0.99866802	  0.99929684  0.49322694
+7097	 -6.27312488	 -0.00043597	  0.00026710	  7.27268891	  0.99866821	  0.99929693  0.49322692
+7098	 -6.27312502	 -0.00043591	  0.00026706	  7.27268912	  0.99866839	  0.99929703  0.49322694
+7099	 -6.27312517	 -0.00043585	  0.00026702	  7.27268932	  0.99866858	  0.99929713  0.49322699
+7100	 -6.27312532	 -0.00043579	  0.00026698	  7.27268953	  0.99866877	  0.99929723  0.49322697
+7101	 -6.27312546	 -0.00043572	  0.00026695	  7.27268974	  0.99866896	  0.99929733  0.49322709
+7102	 -6.27312561	 -0.00043566	  0.00026691	  7.27268995	  0.99866914	  0.99929743  0.49322698
+7103	 -6.27312576	 -0.00043560	  0.00026687	  7.27269016	  0.99866933	  0.99929753  0.49322713
+7104	 -6.27312590	 -0.00043554	  0.00026683	  7.27269037	  0.99866952	  0.99929763  0.49322708
+7105	 -6.27312605	 -0.00043548	  0.00026680	  7.27269057	  0.99866971	  0.99929773  0.49322723
+7106	 -6.27312620	 -0.00043542	  0.00026676	  7.27269078	  0.99866989	  0.99929782  0.49322717
+7107	 -6.27312634	 -0.00043536	  0.00026672	  7.27269099	  0.99867008	  0.99929792  0.49322722
+7108	 -6.27312649	 -0.00043529	  0.00026668	  7.27269120	  0.99867027	  0.99929802  0.49322714
+7109	 -6.27312664	 -0.00043523	  0.00026665	  7.27269140	  0.99867045	  0.99929812  0.49322725
+7110	 -6.27312678	 -0.00043517	  0.00026661	  7.27269161	  0.99867064	  0.99929822  0.49322739
+7111	 -6.27312693	 -0.00043511	  0.00026657	  7.27269182	  0.99867083	  0.99929832  0.49322721
+7112	 -6.27312708	 -0.00043505	  0.00026653	  7.27269203	  0.99867101	  0.99929842  0.49322728
+7113	 -6.27312722	 -0.00043499	  0.00026650	  7.27269223	  0.99867120	  0.99929852  0.49322731
+7114	 -6.27312737	 -0.00043493	  0.00026646	  7.27269244	  0.99867139	  0.99929861  0.49322735
+7115	 -6.27312752	 -0.00043487	  0.00026642	  7.27269265	  0.99867158	  0.99929871  0.49322737
+7116	 -6.27312766	 -0.00043481	  0.00026638	  7.27269286	  0.99867176	  0.99929881  0.49322735
+7117	 -6.27312781	 -0.00043474	  0.00026635	  7.27269306	  0.99867195	  0.99929891  0.49322744
+7118	 -6.27312795	 -0.00043468	  0.00026631	  7.27269327	  0.99867214	  0.99929901  0.49322745
+7119	 -6.27312810	 -0.00043462	  0.00026627	  7.27269348	  0.99867232	  0.99929911  0.49322747
+7120	 -6.27312825	 -0.00043456	  0.00026623	  7.27269368	  0.99867251	  0.99929920  0.49322750
+7121	 -6.27312839	 -0.00043450	  0.00026620	  7.27269389	  0.99867269	  0.99929930  0.49322745
+7122	 -6.27312854	 -0.00043444	  0.00026616	  7.27269410	  0.99867288	  0.99929940  0.49322761
+7123	 -6.27312868	 -0.00043438	  0.00026612	  7.27269431	  0.99867307	  0.99929950  0.49322746
+7124	 -6.27312883	 -0.00043432	  0.00026608	  7.27269451	  0.99867325	  0.99929960  0.49322757
+7125	 -6.27312898	 -0.00043426	  0.00026605	  7.27269472	  0.99867344	  0.99929970  0.49322765
+7126	 -6.27312912	 -0.00043420	  0.00026601	  7.27269493	  0.99867363	  0.99929979  0.49322763
+7127	 -6.27312927	 -0.00043413	  0.00026597	  7.27269513	  0.99867381	  0.99929989  0.49322751
+7128	 -6.27312941	 -0.00043407	  0.00026593	  7.27269534	  0.99867400	  0.99929999  0.49322758
+7129	 -6.27312956	 -0.00043401	  0.00026590	  7.27269555	  0.99867418	  0.99930009  0.49322771
+7130	 -6.27312970	 -0.00043395	  0.00026586	  7.27269575	  0.99867437	  0.99930019  0.49322770
+7131	 -6.27312985	 -0.00043389	  0.00026582	  7.27269596	  0.99867456	  0.99930029  0.49322772
+7132	 -6.27313000	 -0.00043383	  0.00026579	  7.27269616	  0.99867474	  0.99930038  0.49322775
+7133	 -6.27313014	 -0.00043377	  0.00026575	  7.27269637	  0.99867493	  0.99930048  0.49322776
+7134	 -6.27313029	 -0.00043371	  0.00026571	  7.27269658	  0.99867511	  0.99930058  0.49322779
+7135	 -6.27313043	 -0.00043365	  0.00026567	  7.27269678	  0.99867530	  0.99930068  0.49322775
+7136	 -6.27313058	 -0.00043359	  0.00026564	  7.27269699	  0.99867548	  0.99930078  0.49322782
+7137	 -6.27313072	 -0.00043353	  0.00026560	  7.27269720	  0.99867567	  0.99930087  0.49322777
+7138	 -6.27313087	 -0.00043347	  0.00026556	  7.27269740	  0.99867586	  0.99930097  0.49322785
+7139	 -6.27313101	 -0.00043341	  0.00026552	  7.27269761	  0.99867604	  0.99930107  0.49322785
+7140	 -6.27313116	 -0.00043335	  0.00026549	  7.27269781	  0.99867623	  0.99930117  0.49322792
+7141	 -6.27313130	 -0.00043328	  0.00026545	  7.27269802	  0.99867641	  0.99930127  0.49322802
+7142	 -6.27313145	 -0.00043322	  0.00026541	  7.27269823	  0.99867660	  0.99930136  0.49322800
+7143	 -6.27313159	 -0.00043316	  0.00026538	  7.27269843	  0.99867678	  0.99930146  0.49322801
+7144	 -6.27313174	 -0.00043310	  0.00026534	  7.27269864	  0.99867697	  0.99930156  0.49322793
+7145	 -6.27313188	 -0.00043304	  0.00026530	  7.27269884	  0.99867715	  0.99930166  0.49322797
+7146	 -6.27313203	 -0.00043298	  0.00026526	  7.27269905	  0.99867734	  0.99930175  0.49322808
+7147	 -6.27313217	 -0.00043292	  0.00026523	  7.27269925	  0.99867752	  0.99930185  0.49322805
+7148	 -6.27313232	 -0.00043286	  0.00026519	  7.27269946	  0.99867771	  0.99930195  0.49322811
+7149	 -6.27313246	 -0.00043280	  0.00026515	  7.27269966	  0.99867789	  0.99930205  0.49322809
+7150	 -6.27313261	 -0.00043274	  0.00026512	  7.27269987	  0.99867808	  0.99930214  0.49322806
+7151	 -6.27313275	 -0.00043268	  0.00026508	  7.27270007	  0.99867826	  0.99930224  0.49322819
+7152	 -6.27313290	 -0.00043262	  0.00026504	  7.27270028	  0.99867845	  0.99930234  0.49322820
+7153	 -6.27313304	 -0.00043256	  0.00026501	  7.27270049	  0.99867863	  0.99930244  0.49322821
+7154	 -6.27313319	 -0.00043250	  0.00026497	  7.27270069	  0.99867882	  0.99930253  0.49322826
+7155	 -6.27313333	 -0.00043244	  0.00026493	  7.27270090	  0.99867900	  0.99930263  0.49322825
+7156	 -6.27313348	 -0.00043238	  0.00026489	  7.27270110	  0.99867919	  0.99930273  0.49322828
+7157	 -6.27313362	 -0.00043232	  0.00026486	  7.27270131	  0.99867937	  0.99930283  0.49322824
+7158	 -6.27313377	 -0.00043226	  0.00026482	  7.27270151	  0.99867955	  0.99930292  0.49322829
+7159	 -6.27313391	 -0.00043220	  0.00026478	  7.27270171	  0.99867974	  0.99930302  0.49322833
+7160	 -6.27313405	 -0.00043214	  0.00026475	  7.27270192	  0.99867992	  0.99930312  0.49322832
+7161	 -6.27313420	 -0.00043207	  0.00026471	  7.27270212	  0.99868011	  0.99930322  0.49322832
+7162	 -6.27313434	 -0.00043201	  0.00026467	  7.27270233	  0.99868029	  0.99930331  0.49322841
+7163	 -6.27313449	 -0.00043195	  0.00026464	  7.27270253	  0.99868048	  0.99930341  0.49322842
+7164	 -6.27313463	 -0.00043189	  0.00026460	  7.27270274	  0.99868066	  0.99930351  0.49322850
+7165	 -6.27313478	 -0.00043183	  0.00026456	  7.27270294	  0.99868084	  0.99930360  0.49322849
+7166	 -6.27313492	 -0.00043177	  0.00026452	  7.27270315	  0.99868103	  0.99930370  0.49322832
+7167	 -6.27313506	 -0.00043171	  0.00026449	  7.27270335	  0.99868121	  0.99930380  0.49322850
+7168	 -6.27313521	 -0.00043165	  0.00026445	  7.27270356	  0.99868140	  0.99930390  0.49322849
+7169	 -6.27313535	 -0.00043159	  0.00026441	  7.27270376	  0.99868158	  0.99930399  0.49322851
+7170	 -6.27313550	 -0.00043153	  0.00026438	  7.27270396	  0.99868176	  0.99930409  0.49322842
+7171	 -6.27313564	 -0.00043147	  0.00026434	  7.27270417	  0.99868195	  0.99930419  0.49322856
+7172	 -6.27313578	 -0.00043141	  0.00026430	  7.27270437	  0.99868213	  0.99930428  0.49322852
+7173	 -6.27313593	 -0.00043135	  0.00026427	  7.27270458	  0.99868232	  0.99930438  0.49322857
+7174	 -6.27313607	 -0.00043129	  0.00026423	  7.27270478	  0.99868250	  0.99930448  0.49322857
+7175	 -6.27313622	 -0.00043123	  0.00026419	  7.27270498	  0.99868268	  0.99930458  0.49322862
+7176	 -6.27313636	 -0.00043117	  0.00026416	  7.27270519	  0.99868287	  0.99930467  0.49322867
+7177	 -6.27313650	 -0.00043111	  0.00026412	  7.27270539	  0.99868305	  0.99930477  0.49322876
+7178	 -6.27313665	 -0.00043105	  0.00026408	  7.27270560	  0.99868323	  0.99930487  0.49322877
+7179	 -6.27313679	 -0.00043099	  0.00026405	  7.27270580	  0.99868342	  0.99930496  0.49322873
+7180	 -6.27313693	 -0.00043093	  0.00026401	  7.27270600	  0.99868360	  0.99930506  0.49322870
+7181	 -6.27313708	 -0.00043087	  0.00026397	  7.27270621	  0.99868378	  0.99930516  0.49322877
+7182	 -6.27313722	 -0.00043081	  0.00026394	  7.27270641	  0.99868397	  0.99930525  0.49322879
+7183	 -6.27313737	 -0.00043075	  0.00026390	  7.27270661	  0.99868415	  0.99930535  0.49322891
+7184	 -6.27313751	 -0.00043069	  0.00026386	  7.27270682	  0.99868433	  0.99930545  0.49322887
+7185	 -6.27313765	 -0.00043063	  0.00026382	  7.27270702	  0.99868452	  0.99930554  0.49322881
+7186	 -6.27313780	 -0.00043057	  0.00026379	  7.27270722	  0.99868470	  0.99930564  0.49322892
+7187	 -6.27313794	 -0.00043051	  0.00026375	  7.27270743	  0.99868488	  0.99930574  0.49322891
+7188	 -6.27313808	 -0.00043045	  0.00026371	  7.27270763	  0.99868507	  0.99930583  0.49322891
+7189	 -6.27313823	 -0.00043039	  0.00026368	  7.27270783	  0.99868525	  0.99930593  0.49322893
+7190	 -6.27313837	 -0.00043033	  0.00026364	  7.27270804	  0.99868543	  0.99930603  0.49322886
+7191	 -6.27313851	 -0.00043027	  0.00026360	  7.27270824	  0.99868561	  0.99930612  0.49322902
+7192	 -6.27313865	 -0.00043021	  0.00026357	  7.27270844	  0.99868580	  0.99930622  0.49322900
+7193	 -6.27313880	 -0.00043015	  0.00026353	  7.27270864	  0.99868598	  0.99930632  0.49322904
+7194	 -6.27313894	 -0.00043009	  0.00026349	  7.27270885	  0.99868616	  0.99930641  0.49322903
+7195	 -6.27313908	 -0.00043003	  0.00026346	  7.27270905	  0.99868634	  0.99930651  0.49322900
+7196	 -6.27313923	 -0.00042997	  0.00026342	  7.27270925	  0.99868653	  0.99930660  0.49322904
+7197	 -6.27313937	 -0.00042991	  0.00026338	  7.27270946	  0.99868671	  0.99930670  0.49322912
+7198	 -6.27313951	 -0.00042985	  0.00026335	  7.27270966	  0.99868689	  0.99930680  0.49322917
+7199	 -6.27313966	 -0.00042980	  0.00026331	  7.27270986	  0.99868707	  0.99930689  0.49322903
+7200	 -6.27313980	 -0.00042974	  0.00026328	  7.27271006	  0.99868726	  0.99930699  0.49322919
+7201	 -6.27313994	 -0.00042968	  0.00026324	  7.27271027	  0.99868744	  0.99930709  0.49322915
+7202	 -6.27314008	 -0.00042962	  0.00026320	  7.27271047	  0.99868762	  0.99930718  0.49322921
+7203	 -6.27314023	 -0.00042956	  0.00026317	  7.27271067	  0.99868780	  0.99930728  0.49322918
+7204	 -6.27314037	 -0.00042950	  0.00026313	  7.27271087	  0.99868799	  0.99930737  0.49322930
+7205	 -6.27314051	 -0.00042944	  0.00026309	  7.27271107	  0.99868817	  0.99930747  0.49322927
+7206	 -6.27314065	 -0.00042938	  0.00026306	  7.27271128	  0.99868835	  0.99930757  0.49322931
+7207	 -6.27314080	 -0.00042932	  0.00026302	  7.27271148	  0.99868853	  0.99930766  0.49322934
+7208	 -6.27314094	 -0.00042926	  0.00026298	  7.27271168	  0.99868871	  0.99930776  0.49322928
+7209	 -6.27314108	 -0.00042920	  0.00026295	  7.27271188	  0.99868890	  0.99930785  0.49322942
+7210	 -6.27314122	 -0.00042914	  0.00026291	  7.27271208	  0.99868908	  0.99930795  0.49322942
+7211	 -6.27314137	 -0.00042908	  0.00026287	  7.27271229	  0.99868926	  0.99930805  0.49322944
+7212	 -6.27314151	 -0.00042902	  0.00026284	  7.27271249	  0.99868944	  0.99930814  0.49322951
+7213	 -6.27314165	 -0.00042896	  0.00026280	  7.27271269	  0.99868962	  0.99930824  0.49322944
+7214	 -6.27314179	 -0.00042890	  0.00026276	  7.27271289	  0.99868980	  0.99930833  0.49322951
+7215	 -6.27314194	 -0.00042884	  0.00026273	  7.27271309	  0.99868999	  0.99930843  0.49322954
+7216	 -6.27314208	 -0.00042878	  0.00026269	  7.27271329	  0.99869017	  0.99930853  0.49322961
+7217	 -6.27314222	 -0.00042872	  0.00026265	  7.27271350	  0.99869035	  0.99930862  0.49322958
+7218	 -6.27314236	 -0.00042866	  0.00026262	  7.27271370	  0.99869053	  0.99930872  0.49322958
+7219	 -6.27314250	 -0.00042861	  0.00026258	  7.27271390	  0.99869071	  0.99930881  0.49322960
+7220	 -6.27314265	 -0.00042855	  0.00026255	  7.27271410	  0.99869089	  0.99930891  0.49322954
+7221	 -6.27314279	 -0.00042849	  0.00026251	  7.27271430	  0.99869107	  0.99930900  0.49322960
+7222	 -6.27314293	 -0.00042843	  0.00026247	  7.27271450	  0.99869125	  0.99930910  0.49322964
+7223	 -6.27314307	 -0.00042837	  0.00026244	  7.27271470	  0.99869144	  0.99930920  0.49322967
+7224	 -6.27314321	 -0.00042831	  0.00026240	  7.27271491	  0.99869162	  0.99930929  0.49322963
+7225	 -6.27314336	 -0.00042825	  0.00026236	  7.27271511	  0.99869180	  0.99930939  0.49322972
+7226	 -6.27314350	 -0.00042819	  0.00026233	  7.27271531	  0.99869198	  0.99930948  0.49322962
+7227	 -6.27314364	 -0.00042813	  0.00026229	  7.27271551	  0.99869216	  0.99930958  0.49322977
+7228	 -6.27314378	 -0.00042807	  0.00026226	  7.27271571	  0.99869234	  0.99930967  0.49322982
+7229	 -6.27314392	 -0.00042801	  0.00026222	  7.27271591	  0.99869252	  0.99930977  0.49322974
+7230	 -6.27314406	 -0.00042795	  0.00026218	  7.27271611	  0.99869270	  0.99930986  0.49322983
+7231	 -6.27314421	 -0.00042789	  0.00026215	  7.27271631	  0.99869288	  0.99930996  0.49322981
+7232	 -6.27314435	 -0.00042783	  0.00026211	  7.27271651	  0.99869306	  0.99931005  0.49322987
+7233	 -6.27314449	 -0.00042778	  0.00026207	  7.27271671	  0.99869325	  0.99931015  0.49322991
+7234	 -6.27314463	 -0.00042772	  0.00026204	  7.27271691	  0.99869343	  0.99931025  0.49322985
+7235	 -6.27314477	 -0.00042766	  0.00026200	  7.27271711	  0.99869361	  0.99931034  0.49322989
+7236	 -6.27314491	 -0.00042760	  0.00026197	  7.27271731	  0.99869379	  0.99931044  0.49322995
+7237	 -6.27314505	 -0.00042754	  0.00026193	  7.27271752	  0.99869397	  0.99931053  0.49322998
+7238	 -6.27314520	 -0.00042748	  0.00026189	  7.27271772	  0.99869415	  0.99931063  0.49322992
+7239	 -6.27314534	 -0.00042742	  0.00026186	  7.27271792	  0.99869433	  0.99931072  0.49322999
+7240	 -6.27314548	 -0.00042736	  0.00026182	  7.27271812	  0.99869451	  0.99931082  0.49323014
+7241	 -6.27314562	 -0.00042730	  0.00026178	  7.27271832	  0.99869469	  0.99931091  0.49323001
+7242	 -6.27314576	 -0.00042724	  0.00026175	  7.27271852	  0.99869487	  0.99931101  0.49323007
+7243	 -6.27314590	 -0.00042719	  0.00026171	  7.27271872	  0.99869505	  0.99931110  0.49323010
+7244	 -6.27314604	 -0.00042713	  0.00026168	  7.27271892	  0.99869523	  0.99931120  0.49323018
+7245	 -6.27314618	 -0.00042707	  0.00026164	  7.27271912	  0.99869541	  0.99931129  0.49323018
+7246	 -6.27314633	 -0.00042701	  0.00026160	  7.27271932	  0.99869559	  0.99931139  0.49323016
+7247	 -6.27314647	 -0.00042695	  0.00026157	  7.27271952	  0.99869577	  0.99931148  0.49323007
+7248	 -6.27314661	 -0.00042689	  0.00026153	  7.27271972	  0.99869595	  0.99931158  0.49323022
+7249	 -6.27314675	 -0.00042683	  0.00026150	  7.27271992	  0.99869613	  0.99931167  0.49323025
+7250	 -6.27314689	 -0.00042677	  0.00026146	  7.27272012	  0.99869631	  0.99931177  0.49323030
+7251	 -6.27314703	 -0.00042671	  0.00026142	  7.27272032	  0.99869649	  0.99931186  0.49323027
+7252	 -6.27314717	 -0.00042666	  0.00026139	  7.27272051	  0.99869667	  0.99931196  0.49323031
+7253	 -6.27314731	 -0.00042660	  0.00026135	  7.27272071	  0.99869685	  0.99931205  0.49323029
+7254	 -6.27314745	 -0.00042654	  0.00026132	  7.27272091	  0.99869703	  0.99931215  0.49323033
+7255	 -6.27314759	 -0.00042648	  0.00026128	  7.27272111	  0.99869721	  0.99931224  0.49323043
+7256	 -6.27314773	 -0.00042642	  0.00026124	  7.27272131	  0.99869739	  0.99931234  0.49323035
+7257	 -6.27314787	 -0.00042636	  0.00026121	  7.27272151	  0.99869757	  0.99931243  0.49323032
+7258	 -6.27314801	 -0.00042630	  0.00026117	  7.27272171	  0.99869775	  0.99931253  0.49323043
+7259	 -6.27314815	 -0.00042624	  0.00026114	  7.27272191	  0.99869792	  0.99931262  0.49323038
+7260	 -6.27314830	 -0.00042619	  0.00026110	  7.27272211	  0.99869810	  0.99931272  0.49323055
+7261	 -6.27314844	 -0.00042613	  0.00026106	  7.27272231	  0.99869828	  0.99931281  0.49323047
+7262	 -6.27314858	 -0.00042607	  0.00026103	  7.27272251	  0.99869846	  0.99931290  0.49323039
+7263	 -6.27314872	 -0.00042601	  0.00026099	  7.27272271	  0.99869864	  0.99931300  0.49323039
+7264	 -6.27314886	 -0.00042595	  0.00026096	  7.27272291	  0.99869882	  0.99931309  0.49323057
+7265	 -6.27314900	 -0.00042589	  0.00026092	  7.27272310	  0.99869900	  0.99931319  0.49323051
+7266	 -6.27314914	 -0.00042583	  0.00026088	  7.27272330	  0.99869918	  0.99931328  0.49323056
+7267	 -6.27314928	 -0.00042578	  0.00026085	  7.27272350	  0.99869936	  0.99931338  0.49323064
+7268	 -6.27314942	 -0.00042572	  0.00026081	  7.27272370	  0.99869954	  0.99931347  0.49323065
+7269	 -6.27314956	 -0.00042566	  0.00026078	  7.27272390	  0.99869972	  0.99931357  0.49323065
+7270	 -6.27314970	 -0.00042560	  0.00026074	  7.27272410	  0.99869989	  0.99931366  0.49323070
+7271	 -6.27314984	 -0.00042554	  0.00026070	  7.27272430	  0.99870007	  0.99931375  0.49323062
+7272	 -6.27314998	 -0.00042548	  0.00026067	  7.27272450	  0.99870025	  0.99931385  0.49323063
+7273	 -6.27315012	 -0.00042542	  0.00026063	  7.27272469	  0.99870043	  0.99931394  0.49323075
+7274	 -6.27315026	 -0.00042537	  0.00026060	  7.27272489	  0.99870061	  0.99931404  0.49323074
+7275	 -6.27315040	 -0.00042531	  0.00026056	  7.27272509	  0.99870079	  0.99931413  0.49323081
+7276	 -6.27315054	 -0.00042525	  0.00026052	  7.27272529	  0.99870097	  0.99931423  0.49323082
+7277	 -6.27315068	 -0.00042519	  0.00026049	  7.27272549	  0.99870115	  0.99931432  0.49323079
+7278	 -6.27315082	 -0.00042513	  0.00026045	  7.27272569	  0.99870132	  0.99931441  0.49323072
+7279	 -6.27315096	 -0.00042507	  0.00026042	  7.27272588	  0.99870150	  0.99931451  0.49323088
+7280	 -6.27315110	 -0.00042502	  0.00026038	  7.27272608	  0.99870168	  0.99931460  0.49323096
+7281	 -6.27315124	 -0.00042496	  0.00026035	  7.27272628	  0.99870186	  0.99931470  0.49323088
+7282	 -6.27315138	 -0.00042490	  0.00026031	  7.27272648	  0.99870204	  0.99931479  0.49323085
+7283	 -6.27315152	 -0.00042484	  0.00026027	  7.27272668	  0.99870222	  0.99931489  0.49323089
+7284	 -6.27315165	 -0.00042478	  0.00026024	  7.27272687	  0.99870239	  0.99931498  0.49323085
+7285	 -6.27315179	 -0.00042472	  0.00026020	  7.27272707	  0.99870257	  0.99931507  0.49323101
+7286	 -6.27315193	 -0.00042467	  0.00026017	  7.27272727	  0.99870275	  0.99931517  0.49323094
+7287	 -6.27315207	 -0.00042461	  0.00026013	  7.27272747	  0.99870293	  0.99931526  0.49323104
+7288	 -6.27315221	 -0.00042455	  0.00026010	  7.27272766	  0.99870311	  0.99931535  0.49323100
+7289	 -6.27315235	 -0.00042449	  0.00026006	  7.27272786	  0.99870328	  0.99931545  0.49323105
+7290	 -6.27315249	 -0.00042443	  0.00026002	  7.27272806	  0.99870346	  0.99931554  0.49323112
+7291	 -6.27315263	 -0.00042437	  0.00025999	  7.27272826	  0.99870364	  0.99931564  0.49323100
+7292	 -6.27315277	 -0.00042432	  0.00025995	  7.27272845	  0.99870382	  0.99931573  0.49323104
+7293	 -6.27315291	 -0.00042426	  0.00025992	  7.27272865	  0.99870399	  0.99931582  0.49323113
+7294	 -6.27315305	 -0.00042420	  0.00025988	  7.27272885	  0.99870417	  0.99931592  0.49323100
+7295	 -6.27315319	 -0.00042414	  0.00025985	  7.27272905	  0.99870435	  0.99931601  0.49323118
+7296	 -6.27315333	 -0.00042408	  0.00025981	  7.27272924	  0.99870453	  0.99931611  0.49323122
+7297	 -6.27315347	 -0.00042403	  0.00025978	  7.27272944	  0.99870470	  0.99931620  0.49323123
+7298	 -6.27315360	 -0.00042397	  0.00025974	  7.27272964	  0.99870488	  0.99931629  0.49323124
+7299	 -6.27315374	 -0.00042391	  0.00025970	  7.27272983	  0.99870506	  0.99931639  0.49323127
+7300	 -6.27315388	 -0.00042385	  0.00025967	  7.27273003	  0.99870524	  0.99931648  0.49323133
+7301	 -6.27315402	 -0.00042379	  0.00025963	  7.27273023	  0.99870541	  0.99931657  0.49323140
+7302	 -6.27315416	 -0.00042374	  0.00025960	  7.27273042	  0.99870559	  0.99931667  0.49323133
+7303	 -6.27315430	 -0.00042368	  0.00025956	  7.27273062	  0.99870577	  0.99931676  0.49323138
+7304	 -6.27315444	 -0.00042362	  0.00025953	  7.27273082	  0.99870595	  0.99931685  0.49323140
+7305	 -6.27315458	 -0.00042356	  0.00025949	  7.27273101	  0.99870612	  0.99931695  0.49323145
+7306	 -6.27315472	 -0.00042350	  0.00025946	  7.27273121	  0.99870630	  0.99931704  0.49323139
+7307	 -6.27315485	 -0.00042345	  0.00025942	  7.27273141	  0.99870648	  0.99931713  0.49323136
+7308	 -6.27315499	 -0.00042339	  0.00025938	  7.27273160	  0.99870665	  0.99931723  0.49323144
+7309	 -6.27315513	 -0.00042333	  0.00025935	  7.27273180	  0.99870683	  0.99931732  0.49323141
+7310	 -6.27315527	 -0.00042327	  0.00025931	  7.27273200	  0.99870701	  0.99931741  0.49323140
+7311	 -6.27315541	 -0.00042321	  0.00025928	  7.27273219	  0.99870719	  0.99931751  0.49323155
+7312	 -6.27315555	 -0.00042316	  0.00025924	  7.27273239	  0.99870736	  0.99931760  0.49323157
+7313	 -6.27315569	 -0.00042310	  0.00025921	  7.27273259	  0.99870754	  0.99931769  0.49323161
+7314	 -6.27315582	 -0.00042304	  0.00025917	  7.27273278	  0.99870772	  0.99931779  0.49323157
+7315	 -6.27315596	 -0.00042298	  0.00025914	  7.27273298	  0.99870789	  0.99931788  0.49323162
+7316	 -6.27315610	 -0.00042292	  0.00025910	  7.27273318	  0.99870807	  0.99931797  0.49323164
+7317	 -6.27315624	 -0.00042287	  0.00025907	  7.27273337	  0.99870825	  0.99931807  0.49323172
+7318	 -6.27315638	 -0.00042281	  0.00025903	  7.27273357	  0.99870842	  0.99931816  0.49323163
+7319	 -6.27315652	 -0.00042275	  0.00025899	  7.27273376	  0.99870860	  0.99931825  0.49323158
+7320	 -6.27315665	 -0.00042269	  0.00025896	  7.27273396	  0.99870877	  0.99931835  0.49323168
+7321	 -6.27315679	 -0.00042264	  0.00025892	  7.27273416	  0.99870895	  0.99931844  0.49323175
+7322	 -6.27315693	 -0.00042258	  0.00025889	  7.27273435	  0.99870913	  0.99931853  0.49323172
+7323	 -6.27315707	 -0.00042252	  0.00025885	  7.27273455	  0.99870930	  0.99931863  0.49323175
+7324	 -6.27315721	 -0.00042246	  0.00025882	  7.27273474	  0.99870948	  0.99931872  0.49323179
+7325	 -6.27315734	 -0.00042241	  0.00025878	  7.27273494	  0.99870966	  0.99931881  0.49323178
+7326	 -6.27315748	 -0.00042235	  0.00025875	  7.27273513	  0.99870983	  0.99931891  0.49323183
+7327	 -6.27315762	 -0.00042229	  0.00025871	  7.27273533	  0.99871001	  0.99931900  0.49323180
+7328	 -6.27315776	 -0.00042223	  0.00025868	  7.27273552	  0.99871018	  0.99931909  0.49323181
+7329	 -6.27315790	 -0.00042218	  0.00025864	  7.27273572	  0.99871036	  0.99931918  0.49323188
+7330	 -6.27315803	 -0.00042212	  0.00025861	  7.27273592	  0.99871054	  0.99931928  0.49323197
+7331	 -6.27315817	 -0.00042206	  0.00025857	  7.27273611	  0.99871071	  0.99931937  0.49323190
+7332	 -6.27315831	 -0.00042200	  0.00025854	  7.27273631	  0.99871089	  0.99931946  0.49323185
+7333	 -6.27315845	 -0.00042194	  0.00025850	  7.27273650	  0.99871106	  0.99931956  0.49323199
+7334	 -6.27315858	 -0.00042189	  0.00025846	  7.27273670	  0.99871124	  0.99931965  0.49323204
+7335	 -6.27315872	 -0.00042183	  0.00025843	  7.27273689	  0.99871141	  0.99931974  0.49323191
+7336	 -6.27315886	 -0.00042177	  0.00025839	  7.27273709	  0.99871159	  0.99931983  0.49323202
+7337	 -6.27315900	 -0.00042171	  0.00025836	  7.27273728	  0.99871177	  0.99931993  0.49323199
+7338	 -6.27315913	 -0.00042166	  0.00025832	  7.27273748	  0.99871194	  0.99932002  0.49323200
+7339	 -6.27315927	 -0.00042160	  0.00025829	  7.27273767	  0.99871212	  0.99932011  0.49323212
+7340	 -6.27315941	 -0.00042154	  0.00025825	  7.27273787	  0.99871229	  0.99932020  0.49323215
+7341	 -6.27315955	 -0.00042149	  0.00025822	  7.27273806	  0.99871247	  0.99932030  0.49323211
+7342	 -6.27315968	 -0.00042143	  0.00025818	  7.27273826	  0.99871264	  0.99932039  0.49323217
+7343	 -6.27315982	 -0.00042137	  0.00025815	  7.27273845	  0.99871282	  0.99932048  0.49323219
+7344	 -6.27315996	 -0.00042131	  0.00025811	  7.27273864	  0.99871299	  0.99932057  0.49323223
+7345	 -6.27316010	 -0.00042126	  0.00025808	  7.27273884	  0.99871317	  0.99932067  0.49323224
+7346	 -6.27316023	 -0.00042120	  0.00025804	  7.27273903	  0.99871334	  0.99932076  0.49323221
+7347	 -6.27316037	 -0.00042114	  0.00025801	  7.27273923	  0.99871352	  0.99932085  0.49323224
+7348	 -6.27316051	 -0.00042108	  0.00025797	  7.27273942	  0.99871369	  0.99932094  0.49323220
+7349	 -6.27316064	 -0.00042103	  0.00025794	  7.27273962	  0.99871387	  0.99932104  0.49323229
+7350	 -6.27316078	 -0.00042097	  0.00025790	  7.27273981	  0.99871404	  0.99932113  0.49323228
+7351	 -6.27316092	 -0.00042091	  0.00025787	  7.27274001	  0.99871422	  0.99932122  0.49323228
+7352	 -6.27316105	 -0.00042085	  0.00025783	  7.27274020	  0.99871439	  0.99932131  0.49323234
+7353	 -6.27316119	 -0.00042080	  0.00025780	  7.27274039	  0.99871457	  0.99932141  0.49323243
+7354	 -6.27316133	 -0.00042074	  0.00025776	  7.27274059	  0.99871474	  0.99932150  0.49323241
+7355	 -6.27316147	 -0.00042068	  0.00025773	  7.27274078	  0.99871492	  0.99932159  0.49323242
+7356	 -6.27316160	 -0.00042063	  0.00025769	  7.27274098	  0.99871509	  0.99932168  0.49323234
+7357	 -6.27316174	 -0.00042057	  0.00025766	  7.27274117	  0.99871527	  0.99932177  0.49323243
+7358	 -6.27316188	 -0.00042051	  0.00025762	  7.27274136	  0.99871544	  0.99932187  0.49323249
+7359	 -6.27316201	 -0.00042045	  0.00025759	  7.27274156	  0.99871562	  0.99932196  0.49323249
+7360	 -6.27316215	 -0.00042040	  0.00025755	  7.27274175	  0.99871579	  0.99932205  0.49323255
+7361	 -6.27316229	 -0.00042034	  0.00025752	  7.27274195	  0.99871597	  0.99932214  0.49323261
+7362	 -6.27316242	 -0.00042028	  0.00025748	  7.27274214	  0.99871614	  0.99932223  0.49323266
+7363	 -6.27316256	 -0.00042023	  0.00025745	  7.27274233	  0.99871631	  0.99932233  0.49323261
+7364	 -6.27316270	 -0.00042017	  0.00025741	  7.27274253	  0.99871649	  0.99932242  0.49323265
+7365	 -6.27316283	 -0.00042011	  0.00025738	  7.27274272	  0.99871666	  0.99932251  0.49323261
+7366	 -6.27316297	 -0.00042006	  0.00025734	  7.27274291	  0.99871684	  0.99932260  0.49323268
+7367	 -6.27316311	 -0.00042000	  0.00025731	  7.27274311	  0.99871701	  0.99932269  0.49323261
+7368	 -6.27316324	 -0.00041994	  0.00025727	  7.27274330	  0.99871719	  0.99932279  0.49323277
+7369	 -6.27316338	 -0.00041988	  0.00025724	  7.27274349	  0.99871736	  0.99932288  0.49323278
+7370	 -6.27316351	 -0.00041983	  0.00025720	  7.27274369	  0.99871753	  0.99932297  0.49323270
+7371	 -6.27316365	 -0.00041977	  0.00025717	  7.27274388	  0.99871771	  0.99932306  0.49323262
+7372	 -6.27316379	 -0.00041971	  0.00025713	  7.27274407	  0.99871788	  0.99932315  0.49323267
+7373	 -6.27316392	 -0.00041966	  0.00025710	  7.27274427	  0.99871806	  0.99932325  0.49323282
+7374	 -6.27316406	 -0.00041960	  0.00025706	  7.27274446	  0.99871823	  0.99932334  0.49323274
+7375	 -6.27316420	 -0.00041954	  0.00025703	  7.27274465	  0.99871840	  0.99932343  0.49323276
+7376	 -6.27316433	 -0.00041949	  0.00025699	  7.27274485	  0.99871858	  0.99932352  0.49323279
+7377	 -6.27316447	 -0.00041943	  0.00025696	  7.27274504	  0.99871875	  0.99932361  0.49323285
+7378	 -6.27316460	 -0.00041937	  0.00025692	  7.27274523	  0.99871892	  0.99932370  0.49323286
+7379	 -6.27316474	 -0.00041932	  0.00025689	  7.27274542	  0.99871910	  0.99932380  0.49323296
+7380	 -6.27316488	 -0.00041926	  0.00025685	  7.27274562	  0.99871927	  0.99932389  0.49323294
+7381	 -6.27316501	 -0.00041920	  0.00025682	  7.27274581	  0.99871944	  0.99932398  0.49323292
+7382	 -6.27316515	 -0.00041915	  0.00025678	  7.27274600	  0.99871962	  0.99932407  0.49323285
+7383	 -6.27316528	 -0.00041909	  0.00025675	  7.27274619	  0.99871979	  0.99932416  0.49323292
+7384	 -6.27316542	 -0.00041903	  0.00025671	  7.27274639	  0.99871996	  0.99932425  0.49323303
+7385	 -6.27316555	 -0.00041898	  0.00025668	  7.27274658	  0.99872014	  0.99932435  0.49323312
+7386	 -6.27316569	 -0.00041892	  0.00025664	  7.27274677	  0.99872031	  0.99932444  0.49323326
+7387	 -6.27316583	 -0.00041886	  0.00025661	  7.27274696	  0.99872048	  0.99932453  0.49323308
+7388	 -6.27316596	 -0.00041881	  0.00025658	  7.27274716	  0.99872066	  0.99932462  0.49323307
+7389	 -6.27316610	 -0.00041875	  0.00025654	  7.27274735	  0.99872083	  0.99932471  0.49323314
+7390	 -6.27316623	 -0.00041869	  0.00025651	  7.27274754	  0.99872100	  0.99932480  0.49323312
+7391	 -6.27316637	 -0.00041864	  0.00025647	  7.27274773	  0.99872118	  0.99932489  0.49323320
+7392	 -6.27316650	 -0.00041858	  0.00025644	  7.27274793	  0.99872135	  0.99932498  0.49323311
+7393	 -6.27316664	 -0.00041852	  0.00025640	  7.27274812	  0.99872152	  0.99932508  0.49323311
+7394	 -6.27316677	 -0.00041847	  0.00025637	  7.27274831	  0.99872170	  0.99932517  0.49323317
+7395	 -6.27316691	 -0.00041841	  0.00025633	  7.27274850	  0.99872187	  0.99932526  0.49323323
+7396	 -6.27316705	 -0.00041835	  0.00025630	  7.27274869	  0.99872204	  0.99932535  0.49323325
+7397	 -6.27316718	 -0.00041830	  0.00025626	  7.27274888	  0.99872221	  0.99932544  0.49323334
+7398	 -6.27316732	 -0.00041824	  0.00025623	  7.27274908	  0.99872239	  0.99932553  0.49323332
+7399	 -6.27316745	 -0.00041818	  0.00025619	  7.27274927	  0.99872256	  0.99932562  0.49323331
+7400	 -6.27316759	 -0.00041813	  0.00025616	  7.27274946	  0.99872273	  0.99932571  0.49323331
+7401	 -6.27316772	 -0.00041807	  0.00025612	  7.27274965	  0.99872290	  0.99932581  0.49323346
+7402	 -6.27316786	 -0.00041801	  0.00025609	  7.27274984	  0.99872308	  0.99932590  0.49323331
+7403	 -6.27316799	 -0.00041796	  0.00025606	  7.27275003	  0.99872325	  0.99932599  0.49323339
+7404	 -6.27316813	 -0.00041790	  0.00025602	  7.27275023	  0.99872342	  0.99932608  0.49323343
+7405	 -6.27316826	 -0.00041784	  0.00025599	  7.27275042	  0.99872359	  0.99932617  0.49323337
+7406	 -6.27316840	 -0.00041779	  0.00025595	  7.27275061	  0.99872377	  0.99932626  0.49323342
+7407	 -6.27316853	 -0.00041773	  0.00025592	  7.27275080	  0.99872394	  0.99932635  0.49323347
+7408	 -6.27316867	 -0.00041768	  0.00025588	  7.27275099	  0.99872411	  0.99932644  0.49323353
+7409	 -6.27316880	 -0.00041762	  0.00025585	  7.27275118	  0.99872428	  0.99932653  0.49323349
+7410	 -6.27316894	 -0.00041756	  0.00025581	  7.27275137	  0.99872446	  0.99932662  0.49323358
+7411	 -6.27316907	 -0.00041751	  0.00025578	  7.27275157	  0.99872463	  0.99932671  0.49323354
+7412	 -6.27316921	 -0.00041745	  0.00025574	  7.27275176	  0.99872480	  0.99932681  0.49323350
+7413	 -6.27316934	 -0.00041739	  0.00025571	  7.27275195	  0.99872497	  0.99932690  0.49323356
+7414	 -6.27316948	 -0.00041734	  0.00025568	  7.27275214	  0.99872514	  0.99932699  0.49323355
+7415	 -6.27316961	 -0.00041728	  0.00025564	  7.27275233	  0.99872532	  0.99932708  0.49323359
+7416	 -6.27316974	 -0.00041722	  0.00025561	  7.27275252	  0.99872549	  0.99932717  0.49323360
+7417	 -6.27316988	 -0.00041717	  0.00025557	  7.27275271	  0.99872566	  0.99932726  0.49323362
+7418	 -6.27317001	 -0.00041711	  0.00025554	  7.27275290	  0.99872583	  0.99932735  0.49323369
+7419	 -6.27317015	 -0.00041706	  0.00025550	  7.27275309	  0.99872600	  0.99932744  0.49323369
+7420	 -6.27317028	 -0.00041700	  0.00025547	  7.27275328	  0.99872617	  0.99932753  0.49323368
+7421	 -6.27317042	 -0.00041694	  0.00025543	  7.27275347	  0.99872635	  0.99932762  0.49323375
+7422	 -6.27317055	 -0.00041689	  0.00025540	  7.27275366	  0.99872652	  0.99932771  0.49323378
+7423	 -6.27317069	 -0.00041683	  0.00025537	  7.27275385	  0.99872669	  0.99932780  0.49323373
+7424	 -6.27317082	 -0.00041678	  0.00025533	  7.27275405	  0.99872686	  0.99932789  0.49323370
+7425	 -6.27317095	 -0.00041672	  0.00025530	  7.27275424	  0.99872703	  0.99932798  0.49323379
+7426	 -6.27317109	 -0.00041666	  0.00025526	  7.27275443	  0.99872720	  0.99932807  0.49323375
+7427	 -6.27317122	 -0.00041661	  0.00025523	  7.27275462	  0.99872738	  0.99932816  0.49323392
+7428	 -6.27317136	 -0.00041655	  0.00025519	  7.27275481	  0.99872755	  0.99932826  0.49323391
+7429	 -6.27317149	 -0.00041649	  0.00025516	  7.27275500	  0.99872772	  0.99932835  0.49323391
+7430	 -6.27317163	 -0.00041644	  0.00025512	  7.27275519	  0.99872789	  0.99932844  0.49323388
+7431	 -6.27317176	 -0.00041638	  0.00025509	  7.27275538	  0.99872806	  0.99932853  0.49323395
+7432	 -6.27317189	 -0.00041633	  0.00025506	  7.27275557	  0.99872823	  0.99932862  0.49323385
+7433	 -6.27317203	 -0.00041627	  0.00025502	  7.27275576	  0.99872840	  0.99932871  0.49323392
+7434	 -6.27317216	 -0.00041621	  0.00025499	  7.27275595	  0.99872857	  0.99932880  0.49323402
+7435	 -6.27317230	 -0.00041616	  0.00025495	  7.27275614	  0.99872874	  0.99932889  0.49323405
+7436	 -6.27317243	 -0.00041610	  0.00025492	  7.27275633	  0.99872892	  0.99932898  0.49323405
+7437	 -6.27317256	 -0.00041605	  0.00025488	  7.27275652	  0.99872909	  0.99932907  0.49323408
+7438	 -6.27317270	 -0.00041599	  0.00025485	  7.27275671	  0.99872926	  0.99932916  0.49323410
+7439	 -6.27317283	 -0.00041594	  0.00025482	  7.27275690	  0.99872943	  0.99932925  0.49323410
+7440	 -6.27317297	 -0.00041588	  0.00025478	  7.27275709	  0.99872960	  0.99932934  0.49323416
+7441	 -6.27317310	 -0.00041582	  0.00025475	  7.27275728	  0.99872977	  0.99932943  0.49323413
+7442	 -6.27317323	 -0.00041577	  0.00025471	  7.27275746	  0.99872994	  0.99932952  0.49323409
+7443	 -6.27317337	 -0.00041571	  0.00025468	  7.27275765	  0.99873011	  0.99932961  0.49323425
+7444	 -6.27317350	 -0.00041566	  0.00025465	  7.27275784	  0.99873028	  0.99932970  0.49323426
+7445	 -6.27317363	 -0.00041560	  0.00025461	  7.27275803	  0.99873045	  0.99932979  0.49323421
+7446	 -6.27317377	 -0.00041554	  0.00025458	  7.27275822	  0.99873062	  0.99932988  0.49323430
+7447	 -6.27317390	 -0.00041549	  0.00025454	  7.27275841	  0.99873079	  0.99932997  0.49323422
+7448	 -6.27317403	 -0.00041543	  0.00025451	  7.27275860	  0.99873096	  0.99933006  0.49323429
+7449	 -6.27317417	 -0.00041538	  0.00025447	  7.27275879	  0.99873113	  0.99933015  0.49323420
+7450	 -6.27317430	 -0.00041532	  0.00025444	  7.27275898	  0.99873130	  0.99933024  0.49323427
+7451	 -6.27317443	 -0.00041527	  0.00025441	  7.27275917	  0.99873147	  0.99933033  0.49323431
+7452	 -6.27317457	 -0.00041521	  0.00025437	  7.27275936	  0.99873164	  0.99933042  0.49323443
+7453	 -6.27317470	 -0.00041515	  0.00025434	  7.27275955	  0.99873181	  0.99933051  0.49323428
+7454	 -6.27317483	 -0.00041510	  0.00025430	  7.27275974	  0.99873198	  0.99933060  0.49323443
+7455	 -6.27317497	 -0.00041504	  0.00025427	  7.27275992	  0.99873215	  0.99933069  0.49323437
+7456	 -6.27317510	 -0.00041499	  0.00025424	  7.27276011	  0.99873232	  0.99933078  0.49323454
+7457	 -6.27317523	 -0.00041493	  0.00025420	  7.27276030	  0.99873249	  0.99933087  0.49323446
+7458	 -6.27317537	 -0.00041488	  0.00025417	  7.27276049	  0.99873266	  0.99933096  0.49323436
+7459	 -6.27317550	 -0.00041482	  0.00025413	  7.27276068	  0.99873283	  0.99933105  0.49323455
+7460	 -6.27317563	 -0.00041476	  0.00025410	  7.27276087	  0.99873300	  0.99933114  0.49323443
+7461	 -6.27317577	 -0.00041471	  0.00025406	  7.27276106	  0.99873317	  0.99933123  0.49323444
+7462	 -6.27317590	 -0.00041465	  0.00025403	  7.27276124	  0.99873334	  0.99933132  0.49323452
+7463	 -6.27317603	 -0.00041460	  0.00025400	  7.27276143	  0.99873351	  0.99933140  0.49323465
+7464	 -6.27317616	 -0.00041454	  0.00025396	  7.27276162	  0.99873368	  0.99933149  0.49323452
+7465	 -6.27317630	 -0.00041449	  0.00025393	  7.27276181	  0.99873385	  0.99933158  0.49323459
+7466	 -6.27317643	 -0.00041443	  0.00025389	  7.27276200	  0.99873402	  0.99933167  0.49323462
+7467	 -6.27317656	 -0.00041438	  0.00025386	  7.27276219	  0.99873419	  0.99933176  0.49323457
+7468	 -6.27317670	 -0.00041432	  0.00025383	  7.27276237	  0.99873436	  0.99933185  0.49323468
+7469	 -6.27317683	 -0.00041427	  0.00025379	  7.27276256	  0.99873453	  0.99933194  0.49323479
+7470	 -6.27317696	 -0.00041421	  0.00025376	  7.27276275	  0.99873470	  0.99933203  0.49323481
+7471	 -6.27317709	 -0.00041415	  0.00025372	  7.27276294	  0.99873487	  0.99933212  0.49323465
+7472	 -6.27317723	 -0.00041410	  0.00025369	  7.27276313	  0.99873504	  0.99933221  0.49323467
+7473	 -6.27317736	 -0.00041404	  0.00025366	  7.27276332	  0.99873521	  0.99933230  0.49323474
+7474	 -6.27317749	 -0.00041399	  0.00025362	  7.27276350	  0.99873538	  0.99933239  0.49323475
+7475	 -6.27317762	 -0.00041393	  0.00025359	  7.27276369	  0.99873555	  0.99933248  0.49323489
+7476	 -6.27317776	 -0.00041388	  0.00025355	  7.27276388	  0.99873572	  0.99933257  0.49323478
+7477	 -6.27317789	 -0.00041382	  0.00025352	  7.27276407	  0.99873588	  0.99933266  0.49323490
+7478	 -6.27317802	 -0.00041377	  0.00025349	  7.27276425	  0.99873605	  0.99933275  0.49323500
+7479	 -6.27317815	 -0.00041371	  0.00025345	  7.27276444	  0.99873622	  0.99933283  0.49323486
+7480	 -6.27317829	 -0.00041366	  0.00025342	  7.27276463	  0.99873639	  0.99933292  0.49323491
+7481	 -6.27317842	 -0.00041360	  0.00025339	  7.27276482	  0.99873656	  0.99933301  0.49323473
+7482	 -6.27317855	 -0.00041355	  0.00025335	  7.27276500	  0.99873673	  0.99933310  0.49323495
+7483	 -6.27317868	 -0.00041349	  0.00025332	  7.27276519	  0.99873690	  0.99933319  0.49323495
+7484	 -6.27317882	 -0.00041344	  0.00025328	  7.27276538	  0.99873707	  0.99933328  0.49323487
+7485	 -6.27317895	 -0.00041338	  0.00025325	  7.27276557	  0.99873724	  0.99933337  0.49323500
+7486	 -6.27317908	 -0.00041333	  0.00025322	  7.27276575	  0.99873740	  0.99933346  0.49323493
+7487	 -6.27317921	 -0.00041327	  0.00025318	  7.27276594	  0.99873757	  0.99933355  0.49323497
+7488	 -6.27317934	 -0.00041321	  0.00025315	  7.27276613	  0.99873774	  0.99933364  0.49323507
+7489	 -6.27317948	 -0.00041316	  0.00025311	  7.27276632	  0.99873791	  0.99933373  0.49323512
+7490	 -6.27317961	 -0.00041310	  0.00025308	  7.27276650	  0.99873808	  0.99933381  0.49323500
+7491	 -6.27317974	 -0.00041305	  0.00025305	  7.27276669	  0.99873825	  0.99933390  0.49323510
+7492	 -6.27317987	 -0.00041299	  0.00025301	  7.27276688	  0.99873842	  0.99933399  0.49323520
+7493	 -6.27318000	 -0.00041294	  0.00025298	  7.27276706	  0.99873858	  0.99933408  0.49323515
+7494	 -6.27318014	 -0.00041288	  0.00025295	  7.27276725	  0.99873875	  0.99933417  0.49323523
+7495	 -6.27318027	 -0.00041283	  0.00025291	  7.27276744	  0.99873892	  0.99933426  0.49323516
+7496	 -6.27318040	 -0.00041277	  0.00025288	  7.27276762	  0.99873909	  0.99933435  0.49323517
+7497	 -6.27318053	 -0.00041272	  0.00025284	  7.27276781	  0.99873926	  0.99933444  0.49323519
+7498	 -6.27318066	 -0.00041266	  0.00025281	  7.27276800	  0.99873942	  0.99933453  0.49323515
+7499	 -6.27318079	 -0.00041261	  0.00025278	  7.27276818	  0.99873959	  0.99933461  0.49323538
+7500	 -6.27318093	 -0.00041255	  0.00025274	  7.27276837	  0.99873976	  0.99933470  0.49323529
+7501	 -6.27318106	 -0.00041250	  0.00025271	  7.27276856	  0.99873993	  0.99933479  0.49323537
+7502	 -6.27318119	 -0.00041244	  0.00025268	  7.27276874	  0.99874010	  0.99933488  0.49323534
+7503	 -6.27318132	 -0.00041239	  0.00025264	  7.27276893	  0.99874026	  0.99933497  0.49323537
+7504	 -6.27318145	 -0.00041233	  0.00025261	  7.27276912	  0.99874043	  0.99933506  0.49323540
+7505	 -6.27318158	 -0.00041228	  0.00025258	  7.27276930	  0.99874060	  0.99933515  0.49323539
+7506	 -6.27318171	 -0.00041222	  0.00025254	  7.27276949	  0.99874077	  0.99933523  0.49323536
+7507	 -6.27318185	 -0.00041217	  0.00025251	  7.27276968	  0.99874094	  0.99933532  0.49323541
+7508	 -6.27318198	 -0.00041211	  0.00025247	  7.27276986	  0.99874110	  0.99933541  0.49323529
+7509	 -6.27318211	 -0.00041206	  0.00025244	  7.27277005	  0.99874127	  0.99933550  0.49323554
+7510	 -6.27318224	 -0.00041200	  0.00025241	  7.27277023	  0.99874144	  0.99933559  0.49323556
+7511	 -6.27318237	 -0.00041195	  0.00025237	  7.27277042	  0.99874161	  0.99933568  0.49323548
+7512	 -6.27318250	 -0.00041190	  0.00025234	  7.27277061	  0.99874177	  0.99933577  0.49323555
+7513	 -6.27318263	 -0.00041184	  0.00025231	  7.27277079	  0.99874194	  0.99933585  0.49323555
+7514	 -6.27318276	 -0.00041179	  0.00025227	  7.27277098	  0.99874211	  0.99933594  0.49323566
+7515	 -6.27318290	 -0.00041173	  0.00025224	  7.27277117	  0.99874228	  0.99933603  0.49323552
+7516	 -6.27318303	 -0.00041168	  0.00025221	  7.27277135	  0.99874244	  0.99933612  0.49323561
+7517	 -6.27318316	 -0.00041162	  0.00025217	  7.27277154	  0.99874261	  0.99933621  0.49323566
+7518	 -6.27318329	 -0.00041157	  0.00025214	  7.27277172	  0.99874278	  0.99933630  0.49323555
+7519	 -6.27318342	 -0.00041151	  0.00025210	  7.27277191	  0.99874294	  0.99933638  0.49323560
+7520	 -6.27318355	 -0.00041146	  0.00025207	  7.27277209	  0.99874311	  0.99933647  0.49323570
+7521	 -6.27318368	 -0.00041140	  0.00025204	  7.27277228	  0.99874328	  0.99933656  0.49323566
+7522	 -6.27318381	 -0.00041135	  0.00025200	  7.27277246	  0.99874345	  0.99933665  0.49323580
+7523	 -6.27318394	 -0.00041129	  0.00025197	  7.27277265	  0.99874361	  0.99933674  0.49323573
+7524	 -6.27318407	 -0.00041124	  0.00025194	  7.27277284	  0.99874378	  0.99933682  0.49323588
+7525	 -6.27318420	 -0.00041118	  0.00025190	  7.27277302	  0.99874395	  0.99933691  0.49323574
+7526	 -6.27318434	 -0.00041113	  0.00025187	  7.27277321	  0.99874411	  0.99933700  0.49323584
+7527	 -6.27318447	 -0.00041107	  0.00025184	  7.27277339	  0.99874428	  0.99933709  0.49323574
+7528	 -6.27318460	 -0.00041102	  0.00025180	  7.27277358	  0.99874445	  0.99933718  0.49323586
+7529	 -6.27318473	 -0.00041097	  0.00025177	  7.27277376	  0.99874461	  0.99933726  0.49323593
+7530	 -6.27318486	 -0.00041091	  0.00025174	  7.27277395	  0.99874478	  0.99933735  0.49323592
+7531	 -6.27318499	 -0.00041086	  0.00025170	  7.27277413	  0.99874495	  0.99933744  0.49323598
+7532	 -6.27318512	 -0.00041080	  0.00025167	  7.27277432	  0.99874511	  0.99933753  0.49323589
+7533	 -6.27318525	 -0.00041075	  0.00025164	  7.27277450	  0.99874528	  0.99933762  0.49323587
+7534	 -6.27318538	 -0.00041069	  0.00025160	  7.27277469	  0.99874545	  0.99933770  0.49323605
+7535	 -6.27318551	 -0.00041064	  0.00025157	  7.27277487	  0.99874561	  0.99933779  0.49323594
+7536	 -6.27318564	 -0.00041058	  0.00025154	  7.27277506	  0.99874578	  0.99933788  0.49323599
+7537	 -6.27318577	 -0.00041053	  0.00025150	  7.27277524	  0.99874595	  0.99933797  0.49323604
+7538	 -6.27318590	 -0.00041048	  0.00025147	  7.27277543	  0.99874611	  0.99933806  0.49323602
+7539	 -6.27318603	 -0.00041042	  0.00025144	  7.27277561	  0.99874628	  0.99933814  0.49323601
+7540	 -6.27318616	 -0.00041037	  0.00025140	  7.27277580	  0.99874645	  0.99933823  0.49323601
+7541	 -6.27318629	 -0.00041031	  0.00025137	  7.27277598	  0.99874661	  0.99933832  0.49323608
+7542	 -6.27318642	 -0.00041026	  0.00025134	  7.27277616	  0.99874678	  0.99933841  0.49323616
+7543	 -6.27318655	 -0.00041020	  0.00025130	  7.27277635	  0.99874694	  0.99933849  0.49323617
+7544	 -6.27318668	 -0.00041015	  0.00025127	  7.27277653	  0.99874711	  0.99933858  0.49323615
+7545	 -6.27318681	 -0.00041009	  0.00025124	  7.27277672	  0.99874728	  0.99933867  0.49323614
+7546	 -6.27318694	 -0.00041004	  0.00025120	  7.27277690	  0.99874744	  0.99933876  0.49323615
+7547	 -6.27318707	 -0.00040999	  0.00025117	  7.27277709	  0.99874761	  0.99933884  0.49323610
+7548	 -6.27318720	 -0.00040993	  0.00025114	  7.27277727	  0.99874777	  0.99933893  0.49323628
+7549	 -6.27318733	 -0.00040988	  0.00025110	  7.27277746	  0.99874794	  0.99933902  0.49323634
+7550	 -6.27318746	 -0.00040982	  0.00025107	  7.27277764	  0.99874811	  0.99933911  0.49323627
+7551	 -6.27318759	 -0.00040977	  0.00025104	  7.27277782	  0.99874827	  0.99933919  0.49323622
+7552	 -6.27318772	 -0.00040971	  0.00025100	  7.27277801	  0.99874844	  0.99933928  0.49323631
+7553	 -6.27318785	 -0.00040966	  0.00025097	  7.27277819	  0.99874860	  0.99933937  0.49323628
+7554	 -6.27318798	 -0.00040961	  0.00025094	  7.27277838	  0.99874877	  0.99933946  0.49323627
+7555	 -6.27318811	 -0.00040955	  0.00025090	  7.27277856	  0.99874893	  0.99933954  0.49323637
+7556	 -6.27318824	 -0.00040950	  0.00025087	  7.27277874	  0.99874910	  0.99933963  0.49323632
+7557	 -6.27318837	 -0.00040944	  0.00025084	  7.27277893	  0.99874927	  0.99933972  0.49323640
+7558	 -6.27318850	 -0.00040939	  0.00025080	  7.27277911	  0.99874943	  0.99933981  0.49323651
+7559	 -6.27318863	 -0.00040934	  0.00025077	  7.27277929	  0.99874960	  0.99933989  0.49323644
+7560	 -6.27318876	 -0.00040928	  0.00025074	  7.27277948	  0.99874976	  0.99933998  0.49323637
+7561	 -6.27318889	 -0.00040923	  0.00025070	  7.27277966	  0.99874993	  0.99934007  0.49323647
+7562	 -6.27318902	 -0.00040917	  0.00025067	  7.27277985	  0.99875009	  0.99934016  0.49323644
+7563	 -6.27318915	 -0.00040912	  0.00025064	  7.27278003	  0.99875026	  0.99934024  0.49323643
+7564	 -6.27318928	 -0.00040906	  0.00025060	  7.27278021	  0.99875042	  0.99934033  0.49323648
+7565	 -6.27318941	 -0.00040901	  0.00025057	  7.27278040	  0.99875059	  0.99934042  0.49323655
+7566	 -6.27318954	 -0.00040896	  0.00025054	  7.27278058	  0.99875075	  0.99934050  0.49323657
+7567	 -6.27318967	 -0.00040890	  0.00025051	  7.27278076	  0.99875092	  0.99934059  0.49323664
+7568	 -6.27318979	 -0.00040885	  0.00025047	  7.27278095	  0.99875108	  0.99934068  0.49323657
+7569	 -6.27318992	 -0.00040879	  0.00025044	  7.27278113	  0.99875125	  0.99934077  0.49323666
+7570	 -6.27319005	 -0.00040874	  0.00025041	  7.27278131	  0.99875141	  0.99934085  0.49323663
+7571	 -6.27319018	 -0.00040869	  0.00025037	  7.27278150	  0.99875158	  0.99934094  0.49323672
+7572	 -6.27319031	 -0.00040863	  0.00025034	  7.27278168	  0.99875174	  0.99934103  0.49323665
+7573	 -6.27319044	 -0.00040858	  0.00025031	  7.27278186	  0.99875191	  0.99934111  0.49323670
+7574	 -6.27319057	 -0.00040852	  0.00025027	  7.27278204	  0.99875207	  0.99934120  0.49323671
+7575	 -6.27319070	 -0.00040847	  0.00025024	  7.27278223	  0.99875224	  0.99934129  0.49323673
+7576	 -6.27319083	 -0.00040842	  0.00025021	  7.27278241	  0.99875240	  0.99934137  0.49323684
+7577	 -6.27319096	 -0.00040836	  0.00025017	  7.27278259	  0.99875257	  0.99934146  0.49323687
+7578	 -6.27319109	 -0.00040831	  0.00025014	  7.27278278	  0.99875273	  0.99934155  0.49323685
+7579	 -6.27319121	 -0.00040826	  0.00025011	  7.27278296	  0.99875290	  0.99934164  0.49323688
+7580	 -6.27319134	 -0.00040820	  0.00025008	  7.27278314	  0.99875306	  0.99934172  0.49323675
+7581	 -6.27319147	 -0.00040815	  0.00025004	  7.27278332	  0.99875322	  0.99934181  0.49323678
+7582	 -6.27319160	 -0.00040809	  0.00025001	  7.27278351	  0.99875339	  0.99934190  0.49323687
+7583	 -6.27319173	 -0.00040804	  0.00024998	  7.27278369	  0.99875355	  0.99934198  0.49323686
+7584	 -6.27319186	 -0.00040799	  0.00024994	  7.27278387	  0.99875372	  0.99934207  0.49323698
+7585	 -6.27319199	 -0.00040793	  0.00024991	  7.27278405	  0.99875388	  0.99934216  0.49323692
+7586	 -6.27319212	 -0.00040788	  0.00024988	  7.27278424	  0.99875405	  0.99934224  0.49323708
+7587	 -6.27319224	 -0.00040783	  0.00024985	  7.27278442	  0.99875421	  0.99934233  0.49323704
+7588	 -6.27319237	 -0.00040777	  0.00024981	  7.27278460	  0.99875437	  0.99934242  0.49323700
+7589	 -6.27319250	 -0.00040772	  0.00024978	  7.27278478	  0.99875454	  0.99934250  0.49323693
+7590	 -6.27319263	 -0.00040766	  0.00024975	  7.27278497	  0.99875470	  0.99934259  0.49323702
+7591	 -6.27319276	 -0.00040761	  0.00024971	  7.27278515	  0.99875487	  0.99934268  0.49323716
+7592	 -6.27319289	 -0.00040756	  0.00024968	  7.27278533	  0.99875503	  0.99934276  0.49323703
+7593	 -6.27319302	 -0.00040750	  0.00024965	  7.27278551	  0.99875519	  0.99934285  0.49323706
+7594	 -6.27319314	 -0.00040745	  0.00024961	  7.27278569	  0.99875536	  0.99934294  0.49323706
+7595	 -6.27319327	 -0.00040740	  0.00024958	  7.27278588	  0.99875552	  0.99934302  0.49323714
+7596	 -6.27319340	 -0.00040734	  0.00024955	  7.27278606	  0.99875569	  0.99934311  0.49323706
+7597	 -6.27319353	 -0.00040729	  0.00024952	  7.27278624	  0.99875585	  0.99934320  0.49323708
+7598	 -6.27319366	 -0.00040724	  0.00024948	  7.27278642	  0.99875601	  0.99934328  0.49323729
+7599	 -6.27319379	 -0.00040718	  0.00024945	  7.27278660	  0.99875618	  0.99934337  0.49323724
+7600	 -6.27319391	 -0.00040713	  0.00024942	  7.27278679	  0.99875634	  0.99934345  0.49323721
+7601	 -6.27319404	 -0.00040707	  0.00024938	  7.27278697	  0.99875650	  0.99934354  0.49323728
+7602	 -6.27319417	 -0.00040702	  0.00024935	  7.27278715	  0.99875667	  0.99934363  0.49323732
+7603	 -6.27319430	 -0.00040697	  0.00024932	  7.27278733	  0.99875683	  0.99934371  0.49323735
+7604	 -6.27319443	 -0.00040691	  0.00024929	  7.27278751	  0.99875700	  0.99934380  0.49323736
+7605	 -6.27319455	 -0.00040686	  0.00024925	  7.27278769	  0.99875716	  0.99934389  0.49323725
+7606	 -6.27319468	 -0.00040681	  0.00024922	  7.27278788	  0.99875732	  0.99934397  0.49323738
+7607	 -6.27319481	 -0.00040675	  0.00024919	  7.27278806	  0.99875749	  0.99934406  0.49323735
+7608	 -6.27319494	 -0.00040670	  0.00024916	  7.27278824	  0.99875765	  0.99934414  0.49323731
+7609	 -6.27319507	 -0.00040665	  0.00024912	  7.27278842	  0.99875781	  0.99934423  0.49323743
+7610	 -6.27319519	 -0.00040659	  0.00024909	  7.27278860	  0.99875798	  0.99934432  0.49323750
+7611	 -6.27319532	 -0.00040654	  0.00024906	  7.27278878	  0.99875814	  0.99934440  0.49323738
+7612	 -6.27319545	 -0.00040649	  0.00024902	  7.27278896	  0.99875830	  0.99934449  0.49323751
+7613	 -6.27319558	 -0.00040643	  0.00024899	  7.27278914	  0.99875846	  0.99934457  0.49323752
+7614	 -6.27319571	 -0.00040638	  0.00024896	  7.27278933	  0.99875863	  0.99934466  0.49323741
+7615	 -6.27319583	 -0.00040633	  0.00024893	  7.27278951	  0.99875879	  0.99934475  0.49323749
+7616	 -6.27319596	 -0.00040627	  0.00024889	  7.27278969	  0.99875895	  0.99934483  0.49323755
+7617	 -6.27319609	 -0.00040622	  0.00024886	  7.27278987	  0.99875912	  0.99934492  0.49323762
+7618	 -6.27319622	 -0.00040617	  0.00024883	  7.27279005	  0.99875928	  0.99934501  0.49323759
+7619	 -6.27319634	 -0.00040611	  0.00024880	  7.27279023	  0.99875944	  0.99934509  0.49323760
+7620	 -6.27319647	 -0.00040606	  0.00024876	  7.27279041	  0.99875960	  0.99934518  0.49323757
+7621	 -6.27319660	 -0.00040601	  0.00024873	  7.27279059	  0.99875977	  0.99934526  0.49323761
+7622	 -6.27319673	 -0.00040595	  0.00024870	  7.27279077	  0.99875993	  0.99934535  0.49323762
+7623	 -6.27319685	 -0.00040590	  0.00024867	  7.27279095	  0.99876009	  0.99934543  0.49323771
+7624	 -6.27319698	 -0.00040585	  0.00024863	  7.27279113	  0.99876026	  0.99934552  0.49323775
+7625	 -6.27319711	 -0.00040579	  0.00024860	  7.27279131	  0.99876042	  0.99934561  0.49323777
+7626	 -6.27319724	 -0.00040574	  0.00024857	  7.27279149	  0.99876058	  0.99934569  0.49323761
+7627	 -6.27319736	 -0.00040569	  0.00024853	  7.27279168	  0.99876074	  0.99934578  0.49323772
+7628	 -6.27319749	 -0.00040563	  0.00024850	  7.27279186	  0.99876091	  0.99934586  0.49323767
+7629	 -6.27319762	 -0.00040558	  0.00024847	  7.27279204	  0.99876107	  0.99934595  0.49323779
+7630	 -6.27319774	 -0.00040553	  0.00024844	  7.27279222	  0.99876123	  0.99934603  0.49323782
+7631	 -6.27319787	 -0.00040547	  0.00024840	  7.27279240	  0.99876139	  0.99934612  0.49323776
+7632	 -6.27319800	 -0.00040542	  0.00024837	  7.27279258	  0.99876156	  0.99934621  0.49323782
+7633	 -6.27319813	 -0.00040537	  0.00024834	  7.27279276	  0.99876172	  0.99934629  0.49323787
+7634	 -6.27319825	 -0.00040532	  0.00024831	  7.27279294	  0.99876188	  0.99934638  0.49323783
+7635	 -6.27319838	 -0.00040526	  0.00024827	  7.27279312	  0.99876204	  0.99934646  0.49323795
+7636	 -6.27319851	 -0.00040521	  0.00024824	  7.27279330	  0.99876220	  0.99934655  0.49323788
+7637	 -6.27319863	 -0.00040516	  0.00024821	  7.27279348	  0.99876237	  0.99934663  0.49323798
+7638	 -6.27319876	 -0.00040510	  0.00024818	  7.27279366	  0.99876253	  0.99934672  0.49323799
+7639	 -6.27319889	 -0.00040505	  0.00024814	  7.27279384	  0.99876269	  0.99934681  0.49323794
+7640	 -6.27319901	 -0.00040500	  0.00024811	  7.27279402	  0.99876285	  0.99934689  0.49323812
+7641	 -6.27319914	 -0.00040494	  0.00024808	  7.27279420	  0.99876301	  0.99934698  0.49323800
+7642	 -6.27319927	 -0.00040489	  0.00024805	  7.27279438	  0.99876318	  0.99934706  0.49323799
+7643	 -6.27319939	 -0.00040484	  0.00024801	  7.27279456	  0.99876334	  0.99934715  0.49323807
+7644	 -6.27319952	 -0.00040479	  0.00024798	  7.27279474	  0.99876350	  0.99934723  0.49323804
+7645	 -6.27319965	 -0.00040473	  0.00024795	  7.27279492	  0.99876366	  0.99934732  0.49323807
+7646	 -6.27319977	 -0.00040468	  0.00024792	  7.27279510	  0.99876382	  0.99934740  0.49323796
+7647	 -6.27319990	 -0.00040463	  0.00024788	  7.27279527	  0.99876398	  0.99934749  0.49323820
+7648	 -6.27320003	 -0.00040457	  0.00024785	  7.27279545	  0.99876415	  0.99934757  0.49323815
+7649	 -6.27320015	 -0.00040452	  0.00024782	  7.27279563	  0.99876431	  0.99934766  0.49323813
+7650	 -6.27320028	 -0.00040447	  0.00024779	  7.27279581	  0.99876447	  0.99934774  0.49323819
+7651	 -6.27320041	 -0.00040442	  0.00024776	  7.27279599	  0.99876463	  0.99934783  0.49323817
+7652	 -6.27320053	 -0.00040436	  0.00024772	  7.27279617	  0.99876479	  0.99934791  0.49323809
+7653	 -6.27320066	 -0.00040431	  0.00024769	  7.27279635	  0.99876495	  0.99934800  0.49323823
+7654	 -6.27320079	 -0.00040426	  0.00024766	  7.27279653	  0.99876511	  0.99934809  0.49323818
+7655	 -6.27320091	 -0.00040420	  0.00024763	  7.27279671	  0.99876528	  0.99934817  0.49323822
+7656	 -6.27320104	 -0.00040415	  0.00024759	  7.27279689	  0.99876544	  0.99934826  0.49323828
+7657	 -6.27320117	 -0.00040410	  0.00024756	  7.27279707	  0.99876560	  0.99934834  0.49323852
+7658	 -6.27320129	 -0.00040405	  0.00024753	  7.27279725	  0.99876576	  0.99934843  0.49323826
+7659	 -6.27320142	 -0.00040399	  0.00024750	  7.27279743	  0.99876592	  0.99934851  0.49323833
+7660	 -6.27320154	 -0.00040394	  0.00024746	  7.27279760	  0.99876608	  0.99934860  0.49323832
+7661	 -6.27320167	 -0.00040389	  0.00024743	  7.27279778	  0.99876624	  0.99934868  0.49323839
+7662	 -6.27320180	 -0.00040383	  0.00024740	  7.27279796	  0.99876640	  0.99934877  0.49323831
+7663	 -6.27320192	 -0.00040378	  0.00024737	  7.27279814	  0.99876656	  0.99934885  0.49323847
+7664	 -6.27320205	 -0.00040373	  0.00024733	  7.27279832	  0.99876673	  0.99934894  0.49323846
+7665	 -6.27320217	 -0.00040368	  0.00024730	  7.27279850	  0.99876689	  0.99934902  0.49323853
+7666	 -6.27320230	 -0.00040362	  0.00024727	  7.27279868	  0.99876705	  0.99934911  0.49323849
+7667	 -6.27320243	 -0.00040357	  0.00024724	  7.27279886	  0.99876721	  0.99934919  0.49323847
+7668	 -6.27320255	 -0.00040352	  0.00024721	  7.27279903	  0.99876737	  0.99934928  0.49323843
+7669	 -6.27320268	 -0.00040347	  0.00024717	  7.27279921	  0.99876753	  0.99934936  0.49323854
+7670	 -6.27320280	 -0.00040341	  0.00024714	  7.27279939	  0.99876769	  0.99934944  0.49323862
+7671	 -6.27320293	 -0.00040336	  0.00024711	  7.27279957	  0.99876785	  0.99934953  0.49323861
+7672	 -6.27320306	 -0.00040331	  0.00024708	  7.27279975	  0.99876801	  0.99934961  0.49323862
+7673	 -6.27320318	 -0.00040326	  0.00024704	  7.27279993	  0.99876817	  0.99934970  0.49323859
+7674	 -6.27320331	 -0.00040320	  0.00024701	  7.27280010	  0.99876833	  0.99934978  0.49323864
+7675	 -6.27320343	 -0.00040315	  0.00024698	  7.27280028	  0.99876849	  0.99934987  0.49323872
+7676	 -6.27320356	 -0.00040310	  0.00024695	  7.27280046	  0.99876865	  0.99934995  0.49323853
+7677	 -6.27320368	 -0.00040305	  0.00024692	  7.27280064	  0.99876881	  0.99935004  0.49323874
+7678	 -6.27320381	 -0.00040299	  0.00024688	  7.27280082	  0.99876897	  0.99935012  0.49323866
+7679	 -6.27320394	 -0.00040294	  0.00024685	  7.27280099	  0.99876913	  0.99935021  0.49323878
+7680	 -6.27320406	 -0.00040289	  0.00024682	  7.27280117	  0.99876929	  0.99935029  0.49323872
+7681	 -6.27320419	 -0.00040284	  0.00024679	  7.27280135	  0.99876945	  0.99935038  0.49323872
+7682	 -6.27320431	 -0.00040278	  0.00024676	  7.27280153	  0.99876961	  0.99935046  0.49323876
+7683	 -6.27320444	 -0.00040273	  0.00024672	  7.27280171	  0.99876978	  0.99935055  0.49323884
+7684	 -6.27320456	 -0.00040268	  0.00024669	  7.27280188	  0.99876994	  0.99935063  0.49323875
+7685	 -6.27320469	 -0.00040263	  0.00024666	  7.27280206	  0.99877010	  0.99935071  0.49323881
+7686	 -6.27320481	 -0.00040257	  0.00024663	  7.27280224	  0.99877026	  0.99935080  0.49323883
+7687	 -6.27320494	 -0.00040252	  0.00024659	  7.27280242	  0.99877042	  0.99935088  0.49323893
+7688	 -6.27320506	 -0.00040247	  0.00024656	  7.27280259	  0.99877058	  0.99935097  0.49323897
+7689	 -6.27320519	 -0.00040242	  0.00024653	  7.27280277	  0.99877073	  0.99935105  0.49323888
+7690	 -6.27320532	 -0.00040237	  0.00024650	  7.27280295	  0.99877089	  0.99935114  0.49323894
+7691	 -6.27320544	 -0.00040231	  0.00024647	  7.27280313	  0.99877105	  0.99935122  0.49323891
+7692	 -6.27320557	 -0.00040226	  0.00024643	  7.27280330	  0.99877121	  0.99935130  0.49323883
+7693	 -6.27320569	 -0.00040221	  0.00024640	  7.27280348	  0.99877137	  0.99935139  0.49323900
+7694	 -6.27320582	 -0.00040216	  0.00024637	  7.27280366	  0.99877153	  0.99935147  0.49323894
+7695	 -6.27320594	 -0.00040210	  0.00024634	  7.27280384	  0.99877169	  0.99935156  0.49323913
+7696	 -6.27320607	 -0.00040205	  0.00024631	  7.27280401	  0.99877185	  0.99935164  0.49323892
+7697	 -6.27320619	 -0.00040200	  0.00024627	  7.27280419	  0.99877201	  0.99935173  0.49323905
+7698	 -6.27320632	 -0.00040195	  0.00024624	  7.27280437	  0.99877217	  0.99935181  0.49323908
+7699	 -6.27320644	 -0.00040190	  0.00024621	  7.27280455	  0.99877233	  0.99935189  0.49323912
+7700	 -6.27320657	 -0.00040184	  0.00024618	  7.27280472	  0.99877249	  0.99935198  0.49323907
+7701	 -6.27320669	 -0.00040179	  0.00024615	  7.27280490	  0.99877265	  0.99935206  0.49323901
+7702	 -6.27320682	 -0.00040174	  0.00024611	  7.27280508	  0.99877281	  0.99935215  0.49323923
+7703	 -6.27320694	 -0.00040169	  0.00024608	  7.27280525	  0.99877297	  0.99935223  0.49323914
+7704	 -6.27320706	 -0.00040163	  0.00024605	  7.27280543	  0.99877313	  0.99935231  0.49323921
+7705	 -6.27320719	 -0.00040158	  0.00024602	  7.27280561	  0.99877329	  0.99935240  0.49323926
+7706	 -6.27320731	 -0.00040153	  0.00024599	  7.27280578	  0.99877345	  0.99935248  0.49323926
+7707	 -6.27320744	 -0.00040148	  0.00024595	  7.27280596	  0.99877361	  0.99935257  0.49323918
+7708	 -6.27320756	 -0.00040143	  0.00024592	  7.27280614	  0.99877376	  0.99935265  0.49323936
+7709	 -6.27320769	 -0.00040137	  0.00024589	  7.27280631	  0.99877392	  0.99935273  0.49323929
+7710	 -6.27320781	 -0.00040132	  0.00024586	  7.27280649	  0.99877408	  0.99935282  0.49323934
+7711	 -6.27320794	 -0.00040127	  0.00024583	  7.27280667	  0.99877424	  0.99935290  0.49323932
+7712	 -6.27320806	 -0.00040122	  0.00024580	  7.27280684	  0.99877440	  0.99935299  0.49323931
+7713	 -6.27320819	 -0.00040117	  0.00024576	  7.27280702	  0.99877456	  0.99935307  0.49323926
+7714	 -6.27320831	 -0.00040111	  0.00024573	  7.27280720	  0.99877472	  0.99935315  0.49323938
+7715	 -6.27320843	 -0.00040106	  0.00024570	  7.27280737	  0.99877488	  0.99935324  0.49323939
+7716	 -6.27320856	 -0.00040101	  0.00024567	  7.27280755	  0.99877504	  0.99935332  0.49323934
+7717	 -6.27320868	 -0.00040096	  0.00024564	  7.27280773	  0.99877519	  0.99935341  0.49323939
+7718	 -6.27320881	 -0.00040091	  0.00024560	  7.27280790	  0.99877535	  0.99935349  0.49323943
+7719	 -6.27320893	 -0.00040085	  0.00024557	  7.27280808	  0.99877551	  0.99935357  0.49323942
+7720	 -6.27320906	 -0.00040080	  0.00024554	  7.27280825	  0.99877567	  0.99935366  0.49323947
+7721	 -6.27320918	 -0.00040075	  0.00024551	  7.27280843	  0.99877583	  0.99935374  0.49323951
+7722	 -6.27320930	 -0.00040070	  0.00024548	  7.27280861	  0.99877599	  0.99935382  0.49323953
+7723	 -6.27320943	 -0.00040065	  0.00024545	  7.27280878	  0.99877615	  0.99935391  0.49323955
+7724	 -6.27320955	 -0.00040059	  0.00024541	  7.27280896	  0.99877630	  0.99935399  0.49323962
+7725	 -6.27320968	 -0.00040054	  0.00024538	  7.27280913	  0.99877646	  0.99935408  0.49323956
+7726	 -6.27320980	 -0.00040049	  0.00024535	  7.27280931	  0.99877662	  0.99935416  0.49323962
+7727	 -6.27320993	 -0.00040044	  0.00024532	  7.27280949	  0.99877678	  0.99935424  0.49323958
+7728	 -6.27321005	 -0.00040039	  0.00024529	  7.27280966	  0.99877694	  0.99935433  0.49323965
+7729	 -6.27321017	 -0.00040034	  0.00024525	  7.27280984	  0.99877710	  0.99935441  0.49323969
+7730	 -6.27321030	 -0.00040028	  0.00024522	  7.27281001	  0.99877725	  0.99935449  0.49323976
+7731	 -6.27321042	 -0.00040023	  0.00024519	  7.27281019	  0.99877741	  0.99935458  0.49323970
+7732	 -6.27321054	 -0.00040018	  0.00024516	  7.27281036	  0.99877757	  0.99935466  0.49323974
+7733	 -6.27321067	 -0.00040013	  0.00024513	  7.27281054	  0.99877773	  0.99935474  0.49323974
+7734	 -6.27321079	 -0.00040008	  0.00024510	  7.27281072	  0.99877789	  0.99935483  0.49323966
+7735	 -6.27321092	 -0.00040003	  0.00024506	  7.27281089	  0.99877804	  0.99935491  0.49323980
+7736	 -6.27321104	 -0.00039997	  0.00024503	  7.27281107	  0.99877820	  0.99935499  0.49323982
+7737	 -6.27321116	 -0.00039992	  0.00024500	  7.27281124	  0.99877836	  0.99935508  0.49323984
+7738	 -6.27321129	 -0.00039987	  0.00024497	  7.27281142	  0.99877852	  0.99935516  0.49323979
+7739	 -6.27321141	 -0.00039982	  0.00024494	  7.27281159	  0.99877868	  0.99935524  0.49323984
+7740	 -6.27321153	 -0.00039977	  0.00024491	  7.27281177	  0.99877883	  0.99935533  0.49323987
+7741	 -6.27321166	 -0.00039972	  0.00024487	  7.27281194	  0.99877899	  0.99935541  0.49323994
+7742	 -6.27321178	 -0.00039966	  0.00024484	  7.27281212	  0.99877915	  0.99935549  0.49323989
+7743	 -6.27321191	 -0.00039961	  0.00024481	  7.27281229	  0.99877931	  0.99935558  0.49323986
+7744	 -6.27321203	 -0.00039956	  0.00024478	  7.27281247	  0.99877946	  0.99935566  0.49323995
+7745	 -6.27321215	 -0.00039951	  0.00024475	  7.27281264	  0.99877962	  0.99935574  0.49323997
+7746	 -6.27321228	 -0.00039946	  0.00024472	  7.27281282	  0.99877978	  0.99935583  0.49323996
+7747	 -6.27321240	 -0.00039941	  0.00024468	  7.27281299	  0.99877994	  0.99935591  0.49323998
+7748	 -6.27321252	 -0.00039935	  0.00024465	  7.27281317	  0.99878009	  0.99935599  0.49323996
+7749	 -6.27321265	 -0.00039930	  0.00024462	  7.27281334	  0.99878025	  0.99935608  0.49324002
+7750	 -6.27321277	 -0.00039925	  0.00024459	  7.27281352	  0.99878041	  0.99935616  0.49323998
+7751	 -6.27321289	 -0.00039920	  0.00024456	  7.27281369	  0.99878057	  0.99935624  0.49324001
+7752	 -6.27321302	 -0.00039915	  0.00024453	  7.27281387	  0.99878072	  0.99935632  0.49324014
+7753	 -6.27321314	 -0.00039910	  0.00024450	  7.27281404	  0.99878088	  0.99935641  0.49324019
+7754	 -6.27321326	 -0.00039905	  0.00024446	  7.27281422	  0.99878104	  0.99935649  0.49324012
+7755	 -6.27321338	 -0.00039899	  0.00024443	  7.27281439	  0.99878120	  0.99935657  0.49324003
+7756	 -6.27321351	 -0.00039894	  0.00024440	  7.27281457	  0.99878135	  0.99935666  0.49324013
+7757	 -6.27321363	 -0.00039889	  0.00024437	  7.27281474	  0.99878151	  0.99935674  0.49324013
+7758	 -6.27321375	 -0.00039884	  0.00024434	  7.27281491	  0.99878167	  0.99935682  0.49324017
+7759	 -6.27321388	 -0.00039879	  0.00024431	  7.27281509	  0.99878182	  0.99935690  0.49324022
+7760	 -6.27321400	 -0.00039874	  0.00024427	  7.27281526	  0.99878198	  0.99935699  0.49324015
+7761	 -6.27321412	 -0.00039869	  0.00024424	  7.27281544	  0.99878214	  0.99935707  0.49324036
+7762	 -6.27321425	 -0.00039863	  0.00024421	  7.27281561	  0.99878229	  0.99935715  0.49324026
+7763	 -6.27321437	 -0.00039858	  0.00024418	  7.27281579	  0.99878245	  0.99935724  0.49324022
+7764	 -6.27321449	 -0.00039853	  0.00024415	  7.27281596	  0.99878261	  0.99935732  0.49324031
+7765	 -6.27321461	 -0.00039848	  0.00024412	  7.27281613	  0.99878277	  0.99935740  0.49324028
+7766	 -6.27321474	 -0.00039843	  0.00024409	  7.27281631	  0.99878292	  0.99935748  0.49324030
+7767	 -6.27321486	 -0.00039838	  0.00024405	  7.27281648	  0.99878308	  0.99935757  0.49324023
+7768	 -6.27321498	 -0.00039833	  0.00024402	  7.27281666	  0.99878324	  0.99935765  0.49324037
+7769	 -6.27321511	 -0.00039828	  0.00024399	  7.27281683	  0.99878339	  0.99935773  0.49324036
+7770	 -6.27321523	 -0.00039822	  0.00024396	  7.27281700	  0.99878355	  0.99935782  0.49324044
+7771	 -6.27321535	 -0.00039817	  0.00024393	  7.27281718	  0.99878370	  0.99935790  0.49324039
+7772	 -6.27321547	 -0.00039812	  0.00024390	  7.27281735	  0.99878386	  0.99935798  0.49324042
+7773	 -6.27321560	 -0.00039807	  0.00024387	  7.27281752	  0.99878402	  0.99935806  0.49324055
+7774	 -6.27321572	 -0.00039802	  0.00024383	  7.27281770	  0.99878417	  0.99935815  0.49324042
+7775	 -6.27321584	 -0.00039797	  0.00024380	  7.27281787	  0.99878433	  0.99935823  0.49324044
+7776	 -6.27321596	 -0.00039792	  0.00024377	  7.27281805	  0.99878449	  0.99935831  0.49324041
+7777	 -6.27321609	 -0.00039787	  0.00024374	  7.27281822	  0.99878464	  0.99935839  0.49324060
+7778	 -6.27321621	 -0.00039781	  0.00024371	  7.27281839	  0.99878480	  0.99935848  0.49324044
+7779	 -6.27321633	 -0.00039776	  0.00024368	  7.27281857	  0.99878496	  0.99935856  0.49324054
+7780	 -6.27321645	 -0.00039771	  0.00024365	  7.27281874	  0.99878511	  0.99935864  0.49324046
+7781	 -6.27321658	 -0.00039766	  0.00024362	  7.27281891	  0.99878527	  0.99935872  0.49324052
+7782	 -6.27321670	 -0.00039761	  0.00024358	  7.27281909	  0.99878542	  0.99935881  0.49324063
+7783	 -6.27321682	 -0.00039756	  0.00024355	  7.27281926	  0.99878558	  0.99935889  0.49324081
+7784	 -6.27321694	 -0.00039751	  0.00024352	  7.27281943	  0.99878574	  0.99935897  0.49324067
+7785	 -6.27321706	 -0.00039746	  0.00024349	  7.27281961	  0.99878589	  0.99935905  0.49324080
+7786	 -6.27321719	 -0.00039741	  0.00024346	  7.27281978	  0.99878605	  0.99935913  0.49324070
+7787	 -6.27321731	 -0.00039736	  0.00024343	  7.27281995	  0.99878620	  0.99935922  0.49324061
+7788	 -6.27321743	 -0.00039730	  0.00024340	  7.27282013	  0.99878636	  0.99935930  0.49324072
+7789	 -6.27321755	 -0.00039725	  0.00024337	  7.27282030	  0.99878652	  0.99935938  0.49324071
+7790	 -6.27321767	 -0.00039720	  0.00024333	  7.27282047	  0.99878667	  0.99935946  0.49324076
+7791	 -6.27321780	 -0.00039715	  0.00024330	  7.27282064	  0.99878683	  0.99935955  0.49324084
+7792	 -6.27321792	 -0.00039710	  0.00024327	  7.27282082	  0.99878698	  0.99935963  0.49324086
+7793	 -6.27321804	 -0.00039705	  0.00024324	  7.27282099	  0.99878714	  0.99935971  0.49324068
+7794	 -6.27321816	 -0.00039700	  0.00024321	  7.27282116	  0.99878729	  0.99935979  0.49324078
+7795	 -6.27321828	 -0.00039695	  0.00024318	  7.27282134	  0.99878745	  0.99935987  0.49324088
+7796	 -6.27321841	 -0.00039690	  0.00024315	  7.27282151	  0.99878760	  0.99935996  0.49324077
+7797	 -6.27321853	 -0.00039685	  0.00024312	  7.27282168	  0.99878776	  0.99936004  0.49324091
+7798	 -6.27321865	 -0.00039680	  0.00024308	  7.27282185	  0.99878792	  0.99936012  0.49324089
+7799	 -6.27321877	 -0.00039674	  0.00024305	  7.27282203	  0.99878807	  0.99936020  0.49324098
+7800	 -6.27321889	 -0.00039669	  0.00024302	  7.27282220	  0.99878823	  0.99936028  0.49324089
+7801	 -6.27321901	 -0.00039664	  0.00024299	  7.27282237	  0.99878838	  0.99936037  0.49324096
+7802	 -6.27321914	 -0.00039659	  0.00024296	  7.27282254	  0.99878854	  0.99936045  0.49324110
+7803	 -6.27321926	 -0.00039654	  0.00024293	  7.27282272	  0.99878869	  0.99936053  0.49324104
+7804	 -6.27321938	 -0.00039649	  0.00024290	  7.27282289	  0.99878885	  0.99936061  0.49324115
+7805	 -6.27321950	 -0.00039644	  0.00024287	  7.27282306	  0.99878900	  0.99936069  0.49324105
+7806	 -6.27321962	 -0.00039639	  0.00024284	  7.27282323	  0.99878916	  0.99936078  0.49324108
+7807	 -6.27321974	 -0.00039634	  0.00024280	  7.27282341	  0.99878931	  0.99936086  0.49324101
+7808	 -6.27321987	 -0.00039629	  0.00024277	  7.27282358	  0.99878947	  0.99936094  0.49324102
+7809	 -6.27321999	 -0.00039624	  0.00024274	  7.27282375	  0.99878962	  0.99936102  0.49324113
+7810	 -6.27322011	 -0.00039619	  0.00024271	  7.27282392	  0.99878978	  0.99936110  0.49324108
+7811	 -6.27322023	 -0.00039613	  0.00024268	  7.27282409	  0.99878993	  0.99936119  0.49324117
+7812	 -6.27322035	 -0.00039608	  0.00024265	  7.27282427	  0.99879009	  0.99936127  0.49324125
+7813	 -6.27322047	 -0.00039603	  0.00024262	  7.27282444	  0.99879024	  0.99936135  0.49324106
+7814	 -6.27322059	 -0.00039598	  0.00024259	  7.27282461	  0.99879040	  0.99936143  0.49324119
+7815	 -6.27322071	 -0.00039593	  0.00024256	  7.27282478	  0.99879055	  0.99936151  0.49324110
+7816	 -6.27322084	 -0.00039588	  0.00024252	  7.27282495	  0.99879071	  0.99936159  0.49324126
+7817	 -6.27322096	 -0.00039583	  0.00024249	  7.27282513	  0.99879086	  0.99936168  0.49324122
+7818	 -6.27322108	 -0.00039578	  0.00024246	  7.27282530	  0.99879102	  0.99936176  0.49324129
+7819	 -6.27322120	 -0.00039573	  0.00024243	  7.27282547	  0.99879117	  0.99936184  0.49324129
+7820	 -6.27322132	 -0.00039568	  0.00024240	  7.27282564	  0.99879133	  0.99936192  0.49324124
+7821	 -6.27322144	 -0.00039563	  0.00024237	  7.27282581	  0.99879148	  0.99936200  0.49324135
+7822	 -6.27322156	 -0.00039558	  0.00024234	  7.27282598	  0.99879163	  0.99936208  0.49324138
+7823	 -6.27322168	 -0.00039553	  0.00024231	  7.27282616	  0.99879179	  0.99936216  0.49324133
+7824	 -6.27322180	 -0.00039548	  0.00024228	  7.27282633	  0.99879194	  0.99936225  0.49324140
+7825	 -6.27322193	 -0.00039543	  0.00024225	  7.27282650	  0.99879210	  0.99936233  0.49324130
+7826	 -6.27322205	 -0.00039538	  0.00024221	  7.27282667	  0.99879225	  0.99936241  0.49324149
+7827	 -6.27322217	 -0.00039533	  0.00024218	  7.27282684	  0.99879241	  0.99936249  0.49324143
+7828	 -6.27322229	 -0.00039528	  0.00024215	  7.27282701	  0.99879256	  0.99936257  0.49324140
+7829	 -6.27322241	 -0.00039522	  0.00024212	  7.27282718	  0.99879271	  0.99936265  0.49324158
+7830	 -6.27322253	 -0.00039517	  0.00024209	  7.27282736	  0.99879287	  0.99936273  0.49324147
+7831	 -6.27322265	 -0.00039512	  0.00024206	  7.27282753	  0.99879302	  0.99936282  0.49324156
+7832	 -6.27322277	 -0.00039507	  0.00024203	  7.27282770	  0.99879318	  0.99936290  0.49324153
+7833	 -6.27322289	 -0.00039502	  0.00024200	  7.27282787	  0.99879333	  0.99936298  0.49324143
+7834	 -6.27322301	 -0.00039497	  0.00024197	  7.27282804	  0.99879349	  0.99936306  0.49324134
+7835	 -6.27322313	 -0.00039492	  0.00024194	  7.27282821	  0.99879364	  0.99936314  0.49324161
+7836	 -6.27322325	 -0.00039487	  0.00024191	  7.27282838	  0.99879379	  0.99936322  0.49324161
+7837	 -6.27322337	 -0.00039482	  0.00024187	  7.27282855	  0.99879395	  0.99936330  0.49324164
+7838	 -6.27322349	 -0.00039477	  0.00024184	  7.27282872	  0.99879410	  0.99936339  0.49324176
+7839	 -6.27322362	 -0.00039472	  0.00024181	  7.27282889	  0.99879425	  0.99936347  0.49324160
+7840	 -6.27322374	 -0.00039467	  0.00024178	  7.27282907	  0.99879441	  0.99936355  0.49324157
+7841	 -6.27322386	 -0.00039462	  0.00024175	  7.27282924	  0.99879456	  0.99936363  0.49324158
+7842	 -6.27322398	 -0.00039457	  0.00024172	  7.27282941	  0.99879472	  0.99936371  0.49324166
+7843	 -6.27322410	 -0.00039452	  0.00024169	  7.27282958	  0.99879487	  0.99936379  0.49324172
+7844	 -6.27322422	 -0.00039447	  0.00024166	  7.27282975	  0.99879502	  0.99936387  0.49324177
+7845	 -6.27322434	 -0.00039442	  0.00024163	  7.27282992	  0.99879518	  0.99936395  0.49324175
+7846	 -6.27322446	 -0.00039437	  0.00024160	  7.27283009	  0.99879533	  0.99936403  0.49324173
+7847	 -6.27322458	 -0.00039432	  0.00024157	  7.27283026	  0.99879548	  0.99936412  0.49324183
+7848	 -6.27322470	 -0.00039427	  0.00024154	  7.27283043	  0.99879564	  0.99936420  0.49324189
+7849	 -6.27322482	 -0.00039422	  0.00024150	  7.27283060	  0.99879579	  0.99936428  0.49324183
+7850	 -6.27322494	 -0.00039417	  0.00024147	  7.27283077	  0.99879594	  0.99936436  0.49324176
+7851	 -6.27322506	 -0.00039412	  0.00024144	  7.27283094	  0.99879610	  0.99936444  0.49324183
+7852	 -6.27322518	 -0.00039407	  0.00024141	  7.27283111	  0.99879625	  0.99936452  0.49324186
+7853	 -6.27322530	 -0.00039402	  0.00024138	  7.27283128	  0.99879640	  0.99936460  0.49324198
+7854	 -6.27322542	 -0.00039397	  0.00024135	  7.27283145	  0.99879656	  0.99936468  0.49324210
+7855	 -6.27322554	 -0.00039392	  0.00024132	  7.27283162	  0.99879671	  0.99936476  0.49324198
+7856	 -6.27322566	 -0.00039387	  0.00024129	  7.27283179	  0.99879686	  0.99936484  0.49324205
+7857	 -6.27322578	 -0.00039382	  0.00024126	  7.27283196	  0.99879702	  0.99936492  0.49324207
+7858	 -6.27322590	 -0.00039377	  0.00024123	  7.27283213	  0.99879717	  0.99936501  0.49324191
+7859	 -6.27322602	 -0.00039372	  0.00024120	  7.27283230	  0.99879732	  0.99936509  0.49324201
+7860	 -6.27322614	 -0.00039367	  0.00024117	  7.27283247	  0.99879748	  0.99936517  0.49324194
+7861	 -6.27322626	 -0.00039362	  0.00024114	  7.27283264	  0.99879763	  0.99936525  0.49324211
+7862	 -6.27322638	 -0.00039357	  0.00024111	  7.27283281	  0.99879778	  0.99936533  0.49324210
+7863	 -6.27322650	 -0.00039352	  0.00024107	  7.27283298	  0.99879793	  0.99936541  0.49324195
+7864	 -6.27322662	 -0.00039347	  0.00024104	  7.27283315	  0.99879809	  0.99936549  0.49324205
+7865	 -6.27322674	 -0.00039342	  0.00024101	  7.27283332	  0.99879824	  0.99936557  0.49324210
+7866	 -6.27322686	 -0.00039337	  0.00024098	  7.27283349	  0.99879839	  0.99936565  0.49324214
+7867	 -6.27322698	 -0.00039332	  0.00024095	  7.27283366	  0.99879855	  0.99936573  0.49324202
+7868	 -6.27322710	 -0.00039327	  0.00024092	  7.27283383	  0.99879870	  0.99936581  0.49324209
+7869	 -6.27322722	 -0.00039322	  0.00024089	  7.27283400	  0.99879885	  0.99936589  0.49324208
+7870	 -6.27322734	 -0.00039317	  0.00024086	  7.27283417	  0.99879900	  0.99936597  0.49324207
+7871	 -6.27322746	 -0.00039312	  0.00024083	  7.27283434	  0.99879916	  0.99936605  0.49324215
+7872	 -6.27322757	 -0.00039307	  0.00024080	  7.27283451	  0.99879931	  0.99936613  0.49324220
+7873	 -6.27322769	 -0.00039302	  0.00024077	  7.27283468	  0.99879946	  0.99936621  0.49324229
+7874	 -6.27322781	 -0.00039297	  0.00024074	  7.27283485	  0.99879961	  0.99936630  0.49324226
+7875	 -6.27322793	 -0.00039292	  0.00024071	  7.27283502	  0.99879977	  0.99936638  0.49324230
+7876	 -6.27322805	 -0.00039287	  0.00024068	  7.27283519	  0.99879992	  0.99936646  0.49324236
+7877	 -6.27322817	 -0.00039282	  0.00024065	  7.27283535	  0.99880007	  0.99936654  0.49324229
+7878	 -6.27322829	 -0.00039277	  0.00024062	  7.27283552	  0.99880022	  0.99936662  0.49324245
+7879	 -6.27322841	 -0.00039272	  0.00024059	  7.27283569	  0.99880038	  0.99936670  0.49324230
+7880	 -6.27322853	 -0.00039267	  0.00024055	  7.27283586	  0.99880053	  0.99936678  0.49324241
+7881	 -6.27322865	 -0.00039262	  0.00024052	  7.27283603	  0.99880068	  0.99936686  0.49324234
+7882	 -6.27322877	 -0.00039257	  0.00024049	  7.27283620	  0.99880083	  0.99936694  0.49324231
+7883	 -6.27322889	 -0.00039252	  0.00024046	  7.27283637	  0.99880098	  0.99936702  0.49324244
+7884	 -6.27322901	 -0.00039247	  0.00024043	  7.27283654	  0.99880114	  0.99936710  0.49324243
+7885	 -6.27322913	 -0.00039242	  0.00024040	  7.27283671	  0.99880129	  0.99936718  0.49324251
+7886	 -6.27322924	 -0.00039237	  0.00024037	  7.27283688	  0.99880144	  0.99936726  0.49324242
+7887	 -6.27322936	 -0.00039232	  0.00024034	  7.27283704	  0.99880159	  0.99936734  0.49324245
+7888	 -6.27322948	 -0.00039227	  0.00024031	  7.27283721	  0.99880174	  0.99936742  0.49324248
+7889	 -6.27322960	 -0.00039222	  0.00024028	  7.27283738	  0.99880190	  0.99936750  0.49324240
+7890	 -6.27322972	 -0.00039217	  0.00024025	  7.27283755	  0.99880205	  0.99936758  0.49324256
+7891	 -6.27322984	 -0.00039212	  0.00024022	  7.27283772	  0.99880220	  0.99936766  0.49324270
+7892	 -6.27322996	 -0.00039207	  0.00024019	  7.27283789	  0.99880235	  0.99936774  0.49324265
+7893	 -6.27323008	 -0.00039202	  0.00024016	  7.27283806	  0.99880250	  0.99936782  0.49324254
+7894	 -6.27323020	 -0.00039197	  0.00024013	  7.27283822	  0.99880265	  0.99936790  0.49324268
+7895	 -6.27323032	 -0.00039192	  0.00024010	  7.27283839	  0.99880281	  0.99936798  0.49324263
+7896	 -6.27323043	 -0.00039187	  0.00024007	  7.27283856	  0.99880296	  0.99936806  0.49324257
+7897	 -6.27323055	 -0.00039182	  0.00024004	  7.27283873	  0.99880311	  0.99936814  0.49324271
+7898	 -6.27323067	 -0.00039177	  0.00024001	  7.27283890	  0.99880326	  0.99936822  0.49324263
+7899	 -6.27323079	 -0.00039172	  0.00023998	  7.27283907	  0.99880341	  0.99936830  0.49324259
+7900	 -6.27323091	 -0.00039167	  0.00023995	  7.27283923	  0.99880356	  0.99936838  0.49324272
+7901	 -6.27323103	 -0.00039162	  0.00023992	  7.27283940	  0.99880372	  0.99936846  0.49324266
+7902	 -6.27323115	 -0.00039158	  0.00023989	  7.27283957	  0.99880387	  0.99936854  0.49324277
+7903	 -6.27323126	 -0.00039153	  0.00023985	  7.27283974	  0.99880402	  0.99936862  0.49324283
+7904	 -6.27323138	 -0.00039148	  0.00023982	  7.27283991	  0.99880417	  0.99936870  0.49324288
+7905	 -6.27323150	 -0.00039143	  0.00023979	  7.27284008	  0.99880432	  0.99936878  0.49324274
+7906	 -6.27323162	 -0.00039138	  0.00023976	  7.27284024	  0.99880447	  0.99936886  0.49324289
+7907	 -6.27323174	 -0.00039133	  0.00023973	  7.27284041	  0.99880462	  0.99936894  0.49324287
+7908	 -6.27323186	 -0.00039128	  0.00023970	  7.27284058	  0.99880477	  0.99936902  0.49324285
+7909	 -6.27323198	 -0.00039123	  0.00023967	  7.27284075	  0.99880493	  0.99936910  0.49324283
+7910	 -6.27323209	 -0.00039118	  0.00023964	  7.27284091	  0.99880508	  0.99936918  0.49324290
+7911	 -6.27323221	 -0.00039113	  0.00023961	  7.27284108	  0.99880523	  0.99936926  0.49324280
+7912	 -6.27323233	 -0.00039108	  0.00023958	  7.27284125	  0.99880538	  0.99936934  0.49324296
+7913	 -6.27323245	 -0.00039103	  0.00023955	  7.27284142	  0.99880553	  0.99936942  0.49324284
+7914	 -6.27323257	 -0.00039098	  0.00023952	  7.27284159	  0.99880568	  0.99936950  0.49324285
+7915	 -6.27323268	 -0.00039093	  0.00023949	  7.27284175	  0.99880583	  0.99936958  0.49324302
+7916	 -6.27323280	 -0.00039088	  0.00023946	  7.27284192	  0.99880598	  0.99936966  0.49324295
+7917	 -6.27323292	 -0.00039083	  0.00023943	  7.27284209	  0.99880613	  0.99936974  0.49324320
+7918	 -6.27323304	 -0.00039078	  0.00023940	  7.27284226	  0.99880628	  0.99936982  0.49324315
+7919	 -6.27323316	 -0.00039073	  0.00023937	  7.27284242	  0.99880643	  0.99936990  0.49324296
+7920	 -6.27323328	 -0.00039069	  0.00023934	  7.27284259	  0.99880658	  0.99936997  0.49324298
+7921	 -6.27323339	 -0.00039064	  0.00023931	  7.27284276	  0.99880674	  0.99937005  0.49324310
+7922	 -6.27323351	 -0.00039059	  0.00023928	  7.27284292	  0.99880689	  0.99937013  0.49324316
+7923	 -6.27323363	 -0.00039054	  0.00023925	  7.27284309	  0.99880704	  0.99937021  0.49324305
+7924	 -6.27323375	 -0.00039049	  0.00023922	  7.27284326	  0.99880719	  0.99937029  0.49324317
+7925	 -6.27323387	 -0.00039044	  0.00023919	  7.27284343	  0.99880734	  0.99937037  0.49324316
+7926	 -6.27323398	 -0.00039039	  0.00023916	  7.27284359	  0.99880749	  0.99937045  0.49324322
+7927	 -6.27323410	 -0.00039034	  0.00023913	  7.27284376	  0.99880764	  0.99937053  0.49324310
+7928	 -6.27323422	 -0.00039029	  0.00023910	  7.27284393	  0.99880779	  0.99937061  0.49324325
+7929	 -6.27323434	 -0.00039024	  0.00023907	  7.27284409	  0.99880794	  0.99937069  0.49324319
+7930	 -6.27323445	 -0.00039019	  0.00023904	  7.27284426	  0.99880809	  0.99937077  0.49324326
+7931	 -6.27323457	 -0.00039014	  0.00023901	  7.27284443	  0.99880824	  0.99937085  0.49324329
+7932	 -6.27323469	 -0.00039009	  0.00023898	  7.27284460	  0.99880839	  0.99937093  0.49324333
+7933	 -6.27323481	 -0.00039005	  0.00023895	  7.27284476	  0.99880854	  0.99937101  0.49324318
+7934	 -6.27323493	 -0.00039000	  0.00023892	  7.27284493	  0.99880869	  0.99937109  0.49324318
+7935	 -6.27323504	 -0.00038995	  0.00023889	  7.27284510	  0.99880884	  0.99937117  0.49324337
+7936	 -6.27323516	 -0.00038990	  0.00023886	  7.27284526	  0.99880899	  0.99937124  0.49324337
+7937	 -6.27323528	 -0.00038985	  0.00023883	  7.27284543	  0.99880914	  0.99937132  0.49324350
+7938	 -6.27323540	 -0.00038980	  0.00023880	  7.27284560	  0.99880929	  0.99937140  0.49324334
+7939	 -6.27323551	 -0.00038975	  0.00023877	  7.27284576	  0.99880944	  0.99937148  0.49324341
+7940	 -6.27323563	 -0.00038970	  0.00023874	  7.27284593	  0.99880959	  0.99937156  0.49324338
+7941	 -6.27323575	 -0.00038965	  0.00023871	  7.27284609	  0.99880974	  0.99937164  0.49324344
+7942	 -6.27323587	 -0.00038960	  0.00023868	  7.27284626	  0.99880989	  0.99937172  0.49324362
+7943	 -6.27323598	 -0.00038955	  0.00023865	  7.27284643	  0.99881004	  0.99937180  0.49324347
+7944	 -6.27323610	 -0.00038951	  0.00023862	  7.27284659	  0.99881019	  0.99937188  0.49324345
+7945	 -6.27323622	 -0.00038946	  0.00023859	  7.27284676	  0.99881034	  0.99937196  0.49324353
+7946	 -6.27323633	 -0.00038941	  0.00023856	  7.27284693	  0.99881049	  0.99937204  0.49324361
+7947	 -6.27323645	 -0.00038936	  0.00023853	  7.27284709	  0.99881064	  0.99937211  0.49324364
+7948	 -6.27323657	 -0.00038931	  0.00023850	  7.27284726	  0.99881079	  0.99937219  0.49324360
+7949	 -6.27323669	 -0.00038926	  0.00023847	  7.27284743	  0.99881094	  0.99937227  0.49324354
+7950	 -6.27323680	 -0.00038921	  0.00023844	  7.27284759	  0.99881109	  0.99937235  0.49324359
+7951	 -6.27323692	 -0.00038916	  0.00023841	  7.27284776	  0.99881124	  0.99937243  0.49324355
+7952	 -6.27323704	 -0.00038911	  0.00023838	  7.27284792	  0.99881139	  0.99937251  0.49324369
+7953	 -6.27323715	 -0.00038907	  0.00023835	  7.27284809	  0.99881154	  0.99937259  0.49324366
+7954	 -6.27323727	 -0.00038902	  0.00023832	  7.27284826	  0.99881169	  0.99937267  0.49324363
+7955	 -6.27323739	 -0.00038897	  0.00023829	  7.27284842	  0.99881184	  0.99937275  0.49324368
+7956	 -6.27323751	 -0.00038892	  0.00023826	  7.27284859	  0.99881198	  0.99937282  0.49324385
+7957	 -6.27323762	 -0.00038887	  0.00023823	  7.27284875	  0.99881213	  0.99937290  0.49324375
+7958	 -6.27323774	 -0.00038882	  0.00023820	  7.27284892	  0.99881228	  0.99937298  0.49324381
+7959	 -6.27323786	 -0.00038877	  0.00023817	  7.27284908	  0.99881243	  0.99937306  0.49324383
+7960	 -6.27323797	 -0.00038872	  0.00023814	  7.27284925	  0.99881258	  0.99937314  0.49324389
+7961	 -6.27323809	 -0.00038867	  0.00023811	  7.27284942	  0.99881273	  0.99937322  0.49324387
+7962	 -6.27323821	 -0.00038863	  0.00023808	  7.27284958	  0.99881288	  0.99937330  0.49324385
+7963	 -6.27323832	 -0.00038858	  0.00023805	  7.27284975	  0.99881303	  0.99937338  0.49324378
+7964	 -6.27323844	 -0.00038853	  0.00023802	  7.27284991	  0.99881318	  0.99937345  0.49324377
+7965	 -6.27323856	 -0.00038848	  0.00023799	  7.27285008	  0.99881333	  0.99937353  0.49324388
+7966	 -6.27323867	 -0.00038843	  0.00023796	  7.27285024	  0.99881348	  0.99937361  0.49324392
+7967	 -6.27323879	 -0.00038838	  0.00023793	  7.27285041	  0.99881362	  0.99937369  0.49324396
+7968	 -6.27323891	 -0.00038833	  0.00023790	  7.27285057	  0.99881377	  0.99937377  0.49324387
+7969	 -6.27323902	 -0.00038828	  0.00023787	  7.27285074	  0.99881392	  0.99937385  0.49324395
+7970	 -6.27323914	 -0.00038824	  0.00023784	  7.27285090	  0.99881407	  0.99937393  0.49324401
+7971	 -6.27323926	 -0.00038819	  0.00023781	  7.27285107	  0.99881422	  0.99937400  0.49324397
+7972	 -6.27323937	 -0.00038814	  0.00023778	  7.27285124	  0.99881437	  0.99937408  0.49324409
+7973	 -6.27323949	 -0.00038809	  0.00023775	  7.27285140	  0.99881452	  0.99937416  0.49324390
+7974	 -6.27323961	 -0.00038804	  0.00023772	  7.27285157	  0.99881467	  0.99937424  0.49324412
+7975	 -6.27323972	 -0.00038799	  0.00023769	  7.27285173	  0.99881481	  0.99937432  0.49324405
+7976	 -6.27323984	 -0.00038794	  0.00023766	  7.27285190	  0.99881496	  0.99937440  0.49324413
+7977	 -6.27323996	 -0.00038789	  0.00023763	  7.27285206	  0.99881511	  0.99937448  0.49324398
+7978	 -6.27324007	 -0.00038785	  0.00023760	  7.27285223	  0.99881526	  0.99937455  0.49324408
+7979	 -6.27324019	 -0.00038780	  0.00023757	  7.27285239	  0.99881541	  0.99937463  0.49324411
+7980	 -6.27324030	 -0.00038775	  0.00023754	  7.27285256	  0.99881556	  0.99937471  0.49324404
+7981	 -6.27324042	 -0.00038770	  0.00023751	  7.27285272	  0.99881571	  0.99937479  0.49324417
+7982	 -6.27324054	 -0.00038765	  0.00023748	  7.27285289	  0.99881585	  0.99937487  0.49324417
+7983	 -6.27324065	 -0.00038760	  0.00023745	  7.27285305	  0.99881600	  0.99937495  0.49324417
+7984	 -6.27324077	 -0.00038755	  0.00023742	  7.27285321	  0.99881615	  0.99937502  0.49324410
+7985	 -6.27324089	 -0.00038751	  0.00023739	  7.27285338	  0.99881630	  0.99937510  0.49324415
+7986	 -6.27324100	 -0.00038746	  0.00023736	  7.27285354	  0.99881645	  0.99937518  0.49324415
+7987	 -6.27324112	 -0.00038741	  0.00023733	  7.27285371	  0.99881660	  0.99937526  0.49324428
+7988	 -6.27324123	 -0.00038736	  0.00023730	  7.27285387	  0.99881674	  0.99937534  0.49324427
+7989	 -6.27324135	 -0.00038731	  0.00023727	  7.27285404	  0.99881689	  0.99937541  0.49324429
+7990	 -6.27324147	 -0.00038726	  0.00023724	  7.27285420	  0.99881704	  0.99937549  0.49324429
+7991	 -6.27324158	 -0.00038722	  0.00023721	  7.27285437	  0.99881719	  0.99937557  0.49324431
+7992	 -6.27324170	 -0.00038717	  0.00023718	  7.27285453	  0.99881734	  0.99937565  0.49324418
+7993	 -6.27324181	 -0.00038712	  0.00023715	  7.27285469	  0.99881748	  0.99937573  0.49324436
+7994	 -6.27324193	 -0.00038707	  0.00023712	  7.27285486	  0.99881763	  0.99937581  0.49324427
+7995	 -6.27324205	 -0.00038702	  0.00023709	  7.27285502	  0.99881778	  0.99937588  0.49324438
+7996	 -6.27324216	 -0.00038697	  0.00023706	  7.27285519	  0.99881793	  0.99937596  0.49324441
+7997	 -6.27324228	 -0.00038693	  0.00023704	  7.27285535	  0.99881807	  0.99937604  0.49324425
+7998	 -6.27324239	 -0.00038688	  0.00023701	  7.27285552	  0.99881822	  0.99937612  0.49324444
+7999	 -6.27324251	 -0.00038683	  0.00023698	  7.27285568	  0.99881837	  0.99937620  0.49324437
+8000	 -6.27324262	 -0.00038678	  0.00023695	  7.27285584	  0.99881852	  0.99937627  0.49324451
+8001	 -6.27324274	 -0.00038673	  0.00023692	  7.27285601	  0.99881867	  0.99937635  0.49324443
+8002	 -6.27324286	 -0.00038668	  0.00023689	  7.27285617	  0.99881881	  0.99937643  0.49324463
+8003	 -6.27324297	 -0.00038664	  0.00023686	  7.27285634	  0.99881896	  0.99937651  0.49324464
+8004	 -6.27324309	 -0.00038659	  0.00023683	  7.27285650	  0.99881911	  0.99937659  0.49324460
+8005	 -6.27324320	 -0.00038654	  0.00023680	  7.27285666	  0.99881926	  0.99937666  0.49324474
+8006	 -6.27324332	 -0.00038649	  0.00023677	  7.27285683	  0.99881940	  0.99937674  0.49324457
+8007	 -6.27324343	 -0.00038644	  0.00023674	  7.27285699	  0.99881955	  0.99937682  0.49324464
+8008	 -6.27324355	 -0.00038639	  0.00023671	  7.27285716	  0.99881970	  0.99937690  0.49324452
+8009	 -6.27324366	 -0.00038635	  0.00023668	  7.27285732	  0.99881985	  0.99937697  0.49324451
+8010	 -6.27324378	 -0.00038630	  0.00023665	  7.27285748	  0.99881999	  0.99937705  0.49324463
+8011	 -6.27324390	 -0.00038625	  0.00023662	  7.27285765	  0.99882014	  0.99937713  0.49324460
+8012	 -6.27324401	 -0.00038620	  0.00023659	  7.27285781	  0.99882029	  0.99937721  0.49324461
+8013	 -6.27324413	 -0.00038615	  0.00023656	  7.27285797	  0.99882043	  0.99937729  0.49324473
+8014	 -6.27324424	 -0.00038610	  0.00023653	  7.27285814	  0.99882058	  0.99937736  0.49324474
+8015	 -6.27324436	 -0.00038606	  0.00023650	  7.27285830	  0.99882073	  0.99937744  0.49324465
+8016	 -6.27324447	 -0.00038601	  0.00023647	  7.27285846	  0.99882088	  0.99937752  0.49324475
+8017	 -6.27324459	 -0.00038596	  0.00023644	  7.27285863	  0.99882102	  0.99937760  0.49324482
+8018	 -6.27324470	 -0.00038591	  0.00023641	  7.27285879	  0.99882117	  0.99937767  0.49324468
+8019	 -6.27324482	 -0.00038586	  0.00023638	  7.27285895	  0.99882132	  0.99937775  0.49324472
+8020	 -6.27324493	 -0.00038582	  0.00023636	  7.27285912	  0.99882146	  0.99937783  0.49324478
+8021	 -6.27324505	 -0.00038577	  0.00023633	  7.27285928	  0.99882161	  0.99937791  0.49324486
+8022	 -6.27324516	 -0.00038572	  0.00023630	  7.27285944	  0.99882176	  0.99937798  0.49324500
+8023	 -6.27324528	 -0.00038567	  0.00023627	  7.27285961	  0.99882190	  0.99937806  0.49324482
+8024	 -6.27324539	 -0.00038562	  0.00023624	  7.27285977	  0.99882205	  0.99937814  0.49324496
+8025	 -6.27324551	 -0.00038558	  0.00023621	  7.27285993	  0.99882220	  0.99937822  0.49324495
+8026	 -6.27324562	 -0.00038553	  0.00023618	  7.27286009	  0.99882234	  0.99937829  0.49324492
+8027	 -6.27324574	 -0.00038548	  0.00023615	  7.27286026	  0.99882249	  0.99937837  0.49324476
+8028	 -6.27324585	 -0.00038543	  0.00023612	  7.27286042	  0.99882264	  0.99937845  0.49324499
+8029	 -6.27324597	 -0.00038538	  0.00023609	  7.27286058	  0.99882278	  0.99937853  0.49324495
+8030	 -6.27324608	 -0.00038534	  0.00023606	  7.27286075	  0.99882293	  0.99937860  0.49324497
+8031	 -6.27324620	 -0.00038529	  0.00023603	  7.27286091	  0.99882308	  0.99937868  0.49324499
+8032	 -6.27324631	 -0.00038524	  0.00023600	  7.27286107	  0.99882322	  0.99937876  0.49324496
+8033	 -6.27324643	 -0.00038519	  0.00023597	  7.27286123	  0.99882337	  0.99937884  0.49324507
+8034	 -6.27324654	 -0.00038514	  0.00023594	  7.27286140	  0.99882352	  0.99937891  0.49324506
+8035	 -6.27324666	 -0.00038510	  0.00023591	  7.27286156	  0.99882366	  0.99937899  0.49324519
+8036	 -6.27324677	 -0.00038505	  0.00023588	  7.27286172	  0.99882381	  0.99937907  0.49324510
+8037	 -6.27324689	 -0.00038500	  0.00023586	  7.27286188	  0.99882396	  0.99937914  0.49324509
+8038	 -6.27324700	 -0.00038495	  0.00023583	  7.27286205	  0.99882410	  0.99937922  0.49324510
+8039	 -6.27324711	 -0.00038490	  0.00023580	  7.27286221	  0.99882425	  0.99937930  0.49324517
+8040	 -6.27324723	 -0.00038486	  0.00023577	  7.27286237	  0.99882440	  0.99937938  0.49324527
+8041	 -6.27324734	 -0.00038481	  0.00023574	  7.27286253	  0.99882454	  0.99937945  0.49324519
+8042	 -6.27324746	 -0.00038476	  0.00023571	  7.27286270	  0.99882469	  0.99937953  0.49324516
+8043	 -6.27324757	 -0.00038471	  0.00023568	  7.27286286	  0.99882483	  0.99937961  0.49324513
+8044	 -6.27324769	 -0.00038467	  0.00023565	  7.27286302	  0.99882498	  0.99937968  0.49324519
+8045	 -6.27324780	 -0.00038462	  0.00023562	  7.27286318	  0.99882513	  0.99937976  0.49324509
+8046	 -6.27324792	 -0.00038457	  0.00023559	  7.27286335	  0.99882527	  0.99937984  0.49324532
+8047	 -6.27324803	 -0.00038452	  0.00023556	  7.27286351	  0.99882542	  0.99937992  0.49324518
+8048	 -6.27324814	 -0.00038447	  0.00023553	  7.27286367	  0.99882556	  0.99937999  0.49324537
+8049	 -6.27324826	 -0.00038443	  0.00023550	  7.27286383	  0.99882571	  0.99938007  0.49324536
+8050	 -6.27324837	 -0.00038438	  0.00023547	  7.27286399	  0.99882586	  0.99938015  0.49324540
+8051	 -6.27324849	 -0.00038433	  0.00023545	  7.27286416	  0.99882600	  0.99938022  0.49324531
+8052	 -6.27324860	 -0.00038428	  0.00023542	  7.27286432	  0.99882615	  0.99938030  0.49324544
+8053	 -6.27324872	 -0.00038424	  0.00023539	  7.27286448	  0.99882629	  0.99938038  0.49324534
+8054	 -6.27324883	 -0.00038419	  0.00023536	  7.27286464	  0.99882644	  0.99938045  0.49324551
+8055	 -6.27324894	 -0.00038414	  0.00023533	  7.27286480	  0.99882658	  0.99938053  0.49324541
+8056	 -6.27324906	 -0.00038409	  0.00023530	  7.27286497	  0.99882673	  0.99938061  0.49324551
+8057	 -6.27324917	 -0.00038405	  0.00023527	  7.27286513	  0.99882688	  0.99938068  0.49324541
+8058	 -6.27324929	 -0.00038400	  0.00023524	  7.27286529	  0.99882702	  0.99938076  0.49324543
+8059	 -6.27324940	 -0.00038395	  0.00023521	  7.27286545	  0.99882717	  0.99938084  0.49324548
+8060	 -6.27324951	 -0.00038390	  0.00023518	  7.27286561	  0.99882731	  0.99938092  0.49324547
+8061	 -6.27324963	 -0.00038385	  0.00023515	  7.27286577	  0.99882746	  0.99938099  0.49324552
+8062	 -6.27324974	 -0.00038381	  0.00023512	  7.27286594	  0.99882760	  0.99938107  0.49324561
+8063	 -6.27324986	 -0.00038376	  0.00023509	  7.27286610	  0.99882775	  0.99938115  0.49324575
+8064	 -6.27324997	 -0.00038371	  0.00023507	  7.27286626	  0.99882789	  0.99938122  0.49324555
+8065	 -6.27325008	 -0.00038366	  0.00023504	  7.27286642	  0.99882804	  0.99938130  0.49324561
+8066	 -6.27325020	 -0.00038362	  0.00023501	  7.27286658	  0.99882818	  0.99938138  0.49324560
+8067	 -6.27325031	 -0.00038357	  0.00023498	  7.27286674	  0.99882833	  0.99938145  0.49324567
+8068	 -6.27325043	 -0.00038352	  0.00023495	  7.27286690	  0.99882847	  0.99938153  0.49324557
+8069	 -6.27325054	 -0.00038347	  0.00023492	  7.27286706	  0.99882862	  0.99938161  0.49324572
+8070	 -6.27325065	 -0.00038343	  0.00023489	  7.27286723	  0.99882877	  0.99938168  0.49324570
+8071	 -6.27325077	 -0.00038338	  0.00023486	  7.27286739	  0.99882891	  0.99938176  0.49324576
+8072	 -6.27325088	 -0.00038333	  0.00023483	  7.27286755	  0.99882906	  0.99938184  0.49324591
+8073	 -6.27325099	 -0.00038328	  0.00023480	  7.27286771	  0.99882920	  0.99938191  0.49324569
+8074	 -6.27325111	 -0.00038324	  0.00023477	  7.27286787	  0.99882935	  0.99938199  0.49324559
+8075	 -6.27325122	 -0.00038319	  0.00023475	  7.27286803	  0.99882949	  0.99938207  0.49324564
+8076	 -6.27325133	 -0.00038314	  0.00023472	  7.27286819	  0.99882964	  0.99938214  0.49324576
+8077	 -6.27325145	 -0.00038309	  0.00023469	  7.27286835	  0.99882978	  0.99938222  0.49324581
+8078	 -6.27325156	 -0.00038305	  0.00023466	  7.27286851	  0.99882993	  0.99938229  0.49324590
+8079	 -6.27325168	 -0.00038300	  0.00023463	  7.27286868	  0.99883007	  0.99938237  0.49324573
+8080	 -6.27325179	 -0.00038295	  0.00023460	  7.27286884	  0.99883021	  0.99938245  0.49324578
+8081	 -6.27325190	 -0.00038291	  0.00023457	  7.27286900	  0.99883036	  0.99938252  0.49324585
+8082	 -6.27325202	 -0.00038286	  0.00023454	  7.27286916	  0.99883050	  0.99938260  0.49324579
+8083	 -6.27325213	 -0.00038281	  0.00023451	  7.27286932	  0.99883065	  0.99938268  0.49324589
+8084	 -6.27325224	 -0.00038276	  0.00023448	  7.27286948	  0.99883079	  0.99938275  0.49324588
+8085	 -6.27325236	 -0.00038272	  0.00023446	  7.27286964	  0.99883094	  0.99938283  0.49324586
+8086	 -6.27325247	 -0.00038267	  0.00023443	  7.27286980	  0.99883108	  0.99938291  0.49324588
+8087	 -6.27325258	 -0.00038262	  0.00023440	  7.27286996	  0.99883123	  0.99938298  0.49324600
+8088	 -6.27325269	 -0.00038257	  0.00023437	  7.27287012	  0.99883137	  0.99938306  0.49324602
+8089	 -6.27325281	 -0.00038253	  0.00023434	  7.27287028	  0.99883152	  0.99938313  0.49324593
+8090	 -6.27325292	 -0.00038248	  0.00023431	  7.27287044	  0.99883166	  0.99938321  0.49324600
+8091	 -6.27325303	 -0.00038243	  0.00023428	  7.27287060	  0.99883180	  0.99938329  0.49324594
+8092	 -6.27325315	 -0.00038238	  0.00023425	  7.27287076	  0.99883195	  0.99938336  0.49324594
+8093	 -6.27325326	 -0.00038234	  0.00023422	  7.27287092	  0.99883209	  0.99938344  0.49324616
+8094	 -6.27325337	 -0.00038229	  0.00023419	  7.27287108	  0.99883224	  0.99938352  0.49324609
+8095	 -6.27325349	 -0.00038224	  0.00023417	  7.27287124	  0.99883238	  0.99938359  0.49324615
+8096	 -6.27325360	 -0.00038220	  0.00023414	  7.27287140	  0.99883253	  0.99938367  0.49324616
+8097	 -6.27325371	 -0.00038215	  0.00023411	  7.27287156	  0.99883267	  0.99938374  0.49324616
+8098	 -6.27325383	 -0.00038210	  0.00023408	  7.27287172	  0.99883281	  0.99938382  0.49324603
+8099	 -6.27325394	 -0.00038205	  0.00023405	  7.27287188	  0.99883296	  0.99938390  0.49324614
+8100	 -6.27325405	 -0.00038201	  0.00023402	  7.27287204	  0.99883310	  0.99938397  0.49324629
+8101	 -6.27325416	 -0.00038196	  0.00023399	  7.27287220	  0.99883325	  0.99938405  0.49324628
+8102	 -6.27325428	 -0.00038191	  0.00023396	  7.27287236	  0.99883339	  0.99938412  0.49324634
+8103	 -6.27325439	 -0.00038187	  0.00023393	  7.27287252	  0.99883353	  0.99938420  0.49324618
+8104	 -6.27325450	 -0.00038182	  0.00023391	  7.27287268	  0.99883368	  0.99938428  0.49324620
+8105	 -6.27325462	 -0.00038177	  0.00023388	  7.27287284	  0.99883382	  0.99938435  0.49324621
+8106	 -6.27325473	 -0.00038172	  0.00023385	  7.27287300	  0.99883397	  0.99938443  0.49324620
+8107	 -6.27325484	 -0.00038168	  0.00023382	  7.27287316	  0.99883411	  0.99938450  0.49324631
+8108	 -6.27325495	 -0.00038163	  0.00023379	  7.27287332	  0.99883425	  0.99938458  0.49324616
+8109	 -6.27325507	 -0.00038158	  0.00023376	  7.27287348	  0.99883440	  0.99938466  0.49324629
+8110	 -6.27325518	 -0.00038154	  0.00023373	  7.27287364	  0.99883454	  0.99938473  0.49324635
+8111	 -6.27325529	 -0.00038149	  0.00023370	  7.27287380	  0.99883469	  0.99938481  0.49324648
+8112	 -6.27325540	 -0.00038144	  0.00023367	  7.27287396	  0.99883483	  0.99938488  0.49324638
+8113	 -6.27325552	 -0.00038140	  0.00023365	  7.27287412	  0.99883497	  0.99938496  0.49324637
+8114	 -6.27325563	 -0.00038135	  0.00023362	  7.27287428	  0.99883512	  0.99938503  0.49324641
+8115	 -6.27325574	 -0.00038130	  0.00023359	  7.27287444	  0.99883526	  0.99938511  0.49324645
+8116	 -6.27325585	 -0.00038125	  0.00023356	  7.27287460	  0.99883540	  0.99938519  0.49324647
+8117	 -6.27325597	 -0.00038121	  0.00023353	  7.27287476	  0.99883555	  0.99938526  0.49324642
+8118	 -6.27325608	 -0.00038116	  0.00023350	  7.27287492	  0.99883569	  0.99938534  0.49324651
+8119	 -6.27325619	 -0.00038111	  0.00023347	  7.27287508	  0.99883583	  0.99938541  0.49324649
+8120	 -6.27325630	 -0.00038107	  0.00023344	  7.27287524	  0.99883598	  0.99938549  0.49324647
+8121	 -6.27325642	 -0.00038102	  0.00023342	  7.27287540	  0.99883612	  0.99938556  0.49324658
+8122	 -6.27325653	 -0.00038097	  0.00023339	  7.27287555	  0.99883626	  0.99938564  0.49324664
+8123	 -6.27325664	 -0.00038093	  0.00023336	  7.27287571	  0.99883641	  0.99938572  0.49324649
+8124	 -6.27325675	 -0.00038088	  0.00023333	  7.27287587	  0.99883655	  0.99938579  0.49324658
+8125	 -6.27325686	 -0.00038083	  0.00023330	  7.27287603	  0.99883669	  0.99938587  0.49324653
+8126	 -6.27325698	 -0.00038079	  0.00023327	  7.27287619	  0.99883684	  0.99938594  0.49324658
+8127	 -6.27325709	 -0.00038074	  0.00023324	  7.27287635	  0.99883698	  0.99938602  0.49324649
+8128	 -6.27325720	 -0.00038069	  0.00023321	  7.27287651	  0.99883712	  0.99938609  0.49324663
+8129	 -6.27325731	 -0.00038065	  0.00023319	  7.27287667	  0.99883727	  0.99938617  0.49324670
+8130	 -6.27325742	 -0.00038060	  0.00023316	  7.27287683	  0.99883741	  0.99938624  0.49324665
+8131	 -6.27325754	 -0.00038055	  0.00023313	  7.27287699	  0.99883755	  0.99938632  0.49324681
+8132	 -6.27325765	 -0.00038050	  0.00023310	  7.27287714	  0.99883769	  0.99938640  0.49324678
+8133	 -6.27325776	 -0.00038046	  0.00023307	  7.27287730	  0.99883784	  0.99938647  0.49324668
+8134	 -6.27325787	 -0.00038041	  0.00023304	  7.27287746	  0.99883798	  0.99938655  0.49324676
+8135	 -6.27325798	 -0.00038036	  0.00023301	  7.27287762	  0.99883812	  0.99938662  0.49324679
+8136	 -6.27325810	 -0.00038032	  0.00023299	  7.27287778	  0.99883827	  0.99938670  0.49324680
+8137	 -6.27325821	 -0.00038027	  0.00023296	  7.27287794	  0.99883841	  0.99938677  0.49324686
+8138	 -6.27325832	 -0.00038022	  0.00023293	  7.27287810	  0.99883855	  0.99938685  0.49324703
+8139	 -6.27325843	 -0.00038018	  0.00023290	  7.27287825	  0.99883869	  0.99938692  0.49324683
+8140	 -6.27325854	 -0.00038013	  0.00023287	  7.27287841	  0.99883884	  0.99938700  0.49324688
+8141	 -6.27325866	 -0.00038008	  0.00023284	  7.27287857	  0.99883898	  0.99938707  0.49324687
+8142	 -6.27325877	 -0.00038004	  0.00023281	  7.27287873	  0.99883912	  0.99938715  0.49324692
+8143	 -6.27325888	 -0.00037999	  0.00023279	  7.27287889	  0.99883926	  0.99938722  0.49324678
+8144	 -6.27325899	 -0.00037994	  0.00023276	  7.27287905	  0.99883941	  0.99938730  0.49324693
+8145	 -6.27325910	 -0.00037990	  0.00023273	  7.27287920	  0.99883955	  0.99938737  0.49324693
+8146	 -6.27325921	 -0.00037985	  0.00023270	  7.27287936	  0.99883969	  0.99938745  0.49324695
+8147	 -6.27325932	 -0.00037980	  0.00023267	  7.27287952	  0.99883983	  0.99938752  0.49324704
+8148	 -6.27325944	 -0.00037976	  0.00023264	  7.27287968	  0.99883998	  0.99938760  0.49324699
+8149	 -6.27325955	 -0.00037971	  0.00023261	  7.27287984	  0.99884012	  0.99938768  0.49324702
+8150	 -6.27325966	 -0.00037966	  0.00023259	  7.27287999	  0.99884026	  0.99938775  0.49324694
+8151	 -6.27325977	 -0.00037962	  0.00023256	  7.27288015	  0.99884040	  0.99938783  0.49324708
+8152	 -6.27325988	 -0.00037957	  0.00023253	  7.27288031	  0.99884055	  0.99938790  0.49324716
+8153	 -6.27325999	 -0.00037953	  0.00023250	  7.27288047	  0.99884069	  0.99938798  0.49324712
+8154	 -6.27326011	 -0.00037948	  0.00023247	  7.27288063	  0.99884083	  0.99938805  0.49324715
+8155	 -6.27326022	 -0.00037943	  0.00023244	  7.27288078	  0.99884097	  0.99938813  0.49324707
+8156	 -6.27326033	 -0.00037939	  0.00023241	  7.27288094	  0.99884111	  0.99938820  0.49324704
+8157	 -6.27326044	 -0.00037934	  0.00023239	  7.27288110	  0.99884126	  0.99938828  0.49324718
+8158	 -6.27326055	 -0.00037929	  0.00023236	  7.27288126	  0.99884140	  0.99938835  0.49324714
+8159	 -6.27326066	 -0.00037925	  0.00023233	  7.27288142	  0.99884154	  0.99938843  0.49324726
+8160	 -6.27326077	 -0.00037920	  0.00023230	  7.27288157	  0.99884168	  0.99938850  0.49324702
+8161	 -6.27326088	 -0.00037915	  0.00023227	  7.27288173	  0.99884182	  0.99938858  0.49324721
+8162	 -6.27326100	 -0.00037911	  0.00023224	  7.27288189	  0.99884197	  0.99938865  0.49324723
+8163	 -6.27326111	 -0.00037906	  0.00023221	  7.27288205	  0.99884211	  0.99938873  0.49324718
+8164	 -6.27326122	 -0.00037901	  0.00023219	  7.27288220	  0.99884225	  0.99938880  0.49324712
+8165	 -6.27326133	 -0.00037897	  0.00023216	  7.27288236	  0.99884239	  0.99938887  0.49324742
+8166	 -6.27326144	 -0.00037892	  0.00023213	  7.27288252	  0.99884253	  0.99938895  0.49324731
+8167	 -6.27326155	 -0.00037887	  0.00023210	  7.27288268	  0.99884267	  0.99938902  0.49324731
+8168	 -6.27326166	 -0.00037883	  0.00023207	  7.27288283	  0.99884282	  0.99938910  0.49324735
+8169	 -6.27326177	 -0.00037878	  0.00023204	  7.27288299	  0.99884296	  0.99938917  0.49324724
+8170	 -6.27326188	 -0.00037874	  0.00023202	  7.27288315	  0.99884310	  0.99938925  0.49324733
+8171	 -6.27326199	 -0.00037869	  0.00023199	  7.27288331	  0.99884324	  0.99938932  0.49324726
+8172	 -6.27326211	 -0.00037864	  0.00023196	  7.27288346	  0.99884338	  0.99938940  0.49324734
+8173	 -6.27326222	 -0.00037860	  0.00023193	  7.27288362	  0.99884352	  0.99938947  0.49324737
+8174	 -6.27326233	 -0.00037855	  0.00023190	  7.27288378	  0.99884367	  0.99938955  0.49324746
+8175	 -6.27326244	 -0.00037850	  0.00023187	  7.27288393	  0.99884381	  0.99938962  0.49324742
+8176	 -6.27326255	 -0.00037846	  0.00023185	  7.27288409	  0.99884395	  0.99938970  0.49324750
+8177	 -6.27326266	 -0.00037841	  0.00023182	  7.27288425	  0.99884409	  0.99938977  0.49324754
+8178	 -6.27326277	 -0.00037837	  0.00023179	  7.27288441	  0.99884423	  0.99938985  0.49324741
+8179	 -6.27326288	 -0.00037832	  0.00023176	  7.27288456	  0.99884437	  0.99938992  0.49324760
+8180	 -6.27326299	 -0.00037827	  0.00023173	  7.27288472	  0.99884451	  0.99939000  0.49324751
+8181	 -6.27326310	 -0.00037823	  0.00023170	  7.27288488	  0.99884466	  0.99939007  0.49324747
+8182	 -6.27326321	 -0.00037818	  0.00023168	  7.27288503	  0.99884480	  0.99939014  0.49324756
+8183	 -6.27326332	 -0.00037813	  0.00023165	  7.27288519	  0.99884494	  0.99939022  0.49324744
+8184	 -6.27326343	 -0.00037809	  0.00023162	  7.27288535	  0.99884508	  0.99939029  0.49324765
+8185	 -6.27326354	 -0.00037804	  0.00023159	  7.27288550	  0.99884522	  0.99939037  0.49324755
+8186	 -6.27326366	 -0.00037800	  0.00023156	  7.27288566	  0.99884536	  0.99939044  0.49324760
+8187	 -6.27326377	 -0.00037795	  0.00023153	  7.27288582	  0.99884550	  0.99939052  0.49324764
+8188	 -6.27326388	 -0.00037790	  0.00023151	  7.27288597	  0.99884564	  0.99939059  0.49324764
+8189	 -6.27326399	 -0.00037786	  0.00023148	  7.27288613	  0.99884578	  0.99939067  0.49324768
+8190	 -6.27326410	 -0.00037781	  0.00023145	  7.27288629	  0.99884592	  0.99939074  0.49324772
+8191	 -6.27326421	 -0.00037777	  0.00023142	  7.27288644	  0.99884607	  0.99939081  0.49324775
+8192	 -6.27326432	 -0.00037772	  0.00023139	  7.27288660	  0.99884621	  0.99939089  0.49324763
+8193	 -6.27326443	 -0.00037767	  0.00023136	  7.27288676	  0.99884635	  0.99939096  0.49324773
+8194	 -6.27326454	 -0.00037763	  0.00023134	  7.27288691	  0.99884649	  0.99939104  0.49324770
+8195	 -6.27326465	 -0.00037758	  0.00023131	  7.27288707	  0.99884663	  0.99939111  0.49324772
+8196	 -6.27326476	 -0.00037753	  0.00023128	  7.27288722	  0.99884677	  0.99939119  0.49324778
+8197	 -6.27326487	 -0.00037749	  0.00023125	  7.27288738	  0.99884691	  0.99939126  0.49324783
+8198	 -6.27326498	 -0.00037744	  0.00023122	  7.27288754	  0.99884705	  0.99939133  0.49324780
+8199	 -6.27326509	 -0.00037740	  0.00023120	  7.27288769	  0.99884719	  0.99939141  0.49324776
+8200	 -6.27326520	 -0.00037735	  0.00023117	  7.27288785	  0.99884733	  0.99939148  0.49324786
+8201	 -6.27326531	 -0.00037730	  0.00023114	  7.27288801	  0.99884747	  0.99939156  0.49324788
+8202	 -6.27326542	 -0.00037726	  0.00023111	  7.27288816	  0.99884761	  0.99939163  0.49324776
+8203	 -6.27326553	 -0.00037721	  0.00023108	  7.27288832	  0.99884775	  0.99939171  0.49324788
+8204	 -6.27326564	 -0.00037717	  0.00023105	  7.27288847	  0.99884789	  0.99939178  0.49324801
+8205	 -6.27326575	 -0.00037712	  0.00023103	  7.27288863	  0.99884803	  0.99939185  0.49324790
+8206	 -6.27326586	 -0.00037707	  0.00023100	  7.27288879	  0.99884817	  0.99939193  0.49324783
+8207	 -6.27326597	 -0.00037703	  0.00023097	  7.27288894	  0.99884831	  0.99939200  0.49324795
+8208	 -6.27326608	 -0.00037698	  0.00023094	  7.27288910	  0.99884846	  0.99939208  0.49324808
+8209	 -6.27326619	 -0.00037694	  0.00023091	  7.27288925	  0.99884860	  0.99939215  0.49324796
+8210	 -6.27326630	 -0.00037689	  0.00023089	  7.27288941	  0.99884874	  0.99939222  0.49324802
+8211	 -6.27326641	 -0.00037685	  0.00023086	  7.27288956	  0.99884888	  0.99939230  0.49324786
+8212	 -6.27326652	 -0.00037680	  0.00023083	  7.27288972	  0.99884902	  0.99939237  0.49324795
+8213	 -6.27326663	 -0.00037675	  0.00023080	  7.27288988	  0.99884916	  0.99939245  0.49324822
+8214	 -6.27326674	 -0.00037671	  0.00023077	  7.27289003	  0.99884930	  0.99939252  0.49324803
+8215	 -6.27326685	 -0.00037666	  0.00023074	  7.27289019	  0.99884944	  0.99939259  0.49324799
+8216	 -6.27326696	 -0.00037662	  0.00023072	  7.27289034	  0.99884958	  0.99939267  0.49324798
+8217	 -6.27326707	 -0.00037657	  0.00023069	  7.27289050	  0.99884972	  0.99939274  0.49324802
+8218	 -6.27326718	 -0.00037652	  0.00023066	  7.27289065	  0.99884986	  0.99939282  0.49324803
+8219	 -6.27326729	 -0.00037648	  0.00023063	  7.27289081	  0.99885000	  0.99939289  0.49324811
+8220	 -6.27326740	 -0.00037643	  0.00023060	  7.27289096	  0.99885014	  0.99939296  0.49324817
+8221	 -6.27326751	 -0.00037639	  0.00023058	  7.27289112	  0.99885028	  0.99939304  0.49324821
+8222	 -6.27326762	 -0.00037634	  0.00023055	  7.27289127	  0.99885042	  0.99939311  0.49324821
+8223	 -6.27326773	 -0.00037630	  0.00023052	  7.27289143	  0.99885056	  0.99939318  0.49324827
+8224	 -6.27326783	 -0.00037625	  0.00023049	  7.27289159	  0.99885070	  0.99939326  0.49324820
+8225	 -6.27326794	 -0.00037620	  0.00023046	  7.27289174	  0.99885084	  0.99939333  0.49324832
+8226	 -6.27326805	 -0.00037616	  0.00023044	  7.27289190	  0.99885097	  0.99939341  0.49324834
+8227	 -6.27326816	 -0.00037611	  0.00023041	  7.27289205	  0.99885111	  0.99939348  0.49324841
+8228	 -6.27326827	 -0.00037607	  0.00023038	  7.27289221	  0.99885125	  0.99939355  0.49324834
+8229	 -6.27326838	 -0.00037602	  0.00023035	  7.27289236	  0.99885139	  0.99939363  0.49324834
+8230	 -6.27326849	 -0.00037598	  0.00023032	  7.27289252	  0.99885153	  0.99939370  0.49324836
+8231	 -6.27326860	 -0.00037593	  0.00023030	  7.27289267	  0.99885167	  0.99939377  0.49324838
+8232	 -6.27326871	 -0.00037588	  0.00023027	  7.27289283	  0.99885181	  0.99939385  0.49324843
+8233	 -6.27326882	 -0.00037584	  0.00023024	  7.27289298	  0.99885195	  0.99939392  0.49324818
+8234	 -6.27326893	 -0.00037579	  0.00023021	  7.27289314	  0.99885209	  0.99939399  0.49324852
+8235	 -6.27326904	 -0.00037575	  0.00023018	  7.27289329	  0.99885223	  0.99939407  0.49324850
+8236	 -6.27326915	 -0.00037570	  0.00023016	  7.27289345	  0.99885237	  0.99939414  0.49324851
+8237	 -6.27326926	 -0.00037566	  0.00023013	  7.27289360	  0.99885251	  0.99939422  0.49324838
+8238	 -6.27326937	 -0.00037561	  0.00023010	  7.27289375	  0.99885265	  0.99939429  0.49324847
+8239	 -6.27326947	 -0.00037557	  0.00023007	  7.27289391	  0.99885279	  0.99939436  0.49324849
+8240	 -6.27326958	 -0.00037552	  0.00023004	  7.27289406	  0.99885293	  0.99939444  0.49324851
+8241	 -6.27326969	 -0.00037547	  0.00023002	  7.27289422	  0.99885307	  0.99939451  0.49324844
+8242	 -6.27326980	 -0.00037543	  0.00022999	  7.27289437	  0.99885321	  0.99939458  0.49324862
+8243	 -6.27326991	 -0.00037538	  0.00022996	  7.27289453	  0.99885334	  0.99939466  0.49324845
+8244	 -6.27327002	 -0.00037534	  0.00022993	  7.27289468	  0.99885348	  0.99939473  0.49324866
+8245	 -6.27327013	 -0.00037529	  0.00022991	  7.27289484	  0.99885362	  0.99939480  0.49324850
+8246	 -6.27327024	 -0.00037525	  0.00022988	  7.27289499	  0.99885376	  0.99939488  0.49324874
+8247	 -6.27327035	 -0.00037520	  0.00022985	  7.27289514	  0.99885390	  0.99939495  0.49324863
+8248	 -6.27327045	 -0.00037516	  0.00022982	  7.27289530	  0.99885404	  0.99939502  0.49324861
+8249	 -6.27327056	 -0.00037511	  0.00022979	  7.27289545	  0.99885418	  0.99939510  0.49324863
+8250	 -6.27327067	 -0.00037506	  0.00022977	  7.27289561	  0.99885432	  0.99939517  0.49324878
+8251	 -6.27327078	 -0.00037502	  0.00022974	  7.27289576	  0.99885446	  0.99939524  0.49324852
+8252	 -6.27327089	 -0.00037497	  0.00022971	  7.27289592	  0.99885459	  0.99939532  0.49324868
+8253	 -6.27327100	 -0.00037493	  0.00022968	  7.27289607	  0.99885473	  0.99939539  0.49324870
+8254	 -6.27327111	 -0.00037488	  0.00022965	  7.27289622	  0.99885487	  0.99939546  0.49324867
+8255	 -6.27327122	 -0.00037484	  0.00022963	  7.27289638	  0.99885501	  0.99939554  0.49324861
+8256	 -6.27327132	 -0.00037479	  0.00022960	  7.27289653	  0.99885515	  0.99939561  0.49324879
+8257	 -6.27327143	 -0.00037475	  0.00022957	  7.27289669	  0.99885529	  0.99939568  0.49324878
+8258	 -6.27327154	 -0.00037470	  0.00022954	  7.27289684	  0.99885543	  0.99939576  0.49324873
+8259	 -6.27327165	 -0.00037466	  0.00022952	  7.27289699	  0.99885557	  0.99939583  0.49324877
+8260	 -6.27327176	 -0.00037461	  0.00022949	  7.27289715	  0.99885570	  0.99939590  0.49324893
+8261	 -6.27327187	 -0.00037457	  0.00022946	  7.27289730	  0.99885584	  0.99939597  0.49324876
+8262	 -6.27327198	 -0.00037452	  0.00022943	  7.27289746	  0.99885598	  0.99939605  0.49324876
+8263	 -6.27327208	 -0.00037447	  0.00022940	  7.27289761	  0.99885612	  0.99939612  0.49324883
+8264	 -6.27327219	 -0.00037443	  0.00022938	  7.27289776	  0.99885626	  0.99939619  0.49324897
+8265	 -6.27327230	 -0.00037438	  0.00022935	  7.27289792	  0.99885640	  0.99939627  0.49324903
+8266	 -6.27327241	 -0.00037434	  0.00022932	  7.27289807	  0.99885653	  0.99939634  0.49324897
+8267	 -6.27327252	 -0.00037429	  0.00022929	  7.27289822	  0.99885667	  0.99939641  0.49324915
+8268	 -6.27327263	 -0.00037425	  0.00022927	  7.27289838	  0.99885681	  0.99939649  0.49324899
+8269	 -6.27327273	 -0.00037420	  0.00022924	  7.27289853	  0.99885695	  0.99939656  0.49324895
+8270	 -6.27327284	 -0.00037416	  0.00022921	  7.27289869	  0.99885709	  0.99939663  0.49324901
+8271	 -6.27327295	 -0.00037411	  0.00022918	  7.27289884	  0.99885723	  0.99939671  0.49324899
+8272	 -6.27327306	 -0.00037407	  0.00022915	  7.27289899	  0.99885736	  0.99939678  0.49324910
+8273	 -6.27327317	 -0.00037402	  0.00022913	  7.27289915	  0.99885750	  0.99939685  0.49324893
+8274	 -6.27327328	 -0.00037398	  0.00022910	  7.27289930	  0.99885764	  0.99939692  0.49324897
+8275	 -6.27327338	 -0.00037393	  0.00022907	  7.27289945	  0.99885778	  0.99939700  0.49324903
+8276	 -6.27327349	 -0.00037389	  0.00022904	  7.27289961	  0.99885792	  0.99939707  0.49324907
+8277	 -6.27327360	 -0.00037384	  0.00022902	  7.27289976	  0.99885805	  0.99939714  0.49324912
+8278	 -6.27327371	 -0.00037380	  0.00022899	  7.27289991	  0.99885819	  0.99939722  0.49324911
+8279	 -6.27327382	 -0.00037375	  0.00022896	  7.27290007	  0.99885833	  0.99939729  0.49324918
+8280	 -6.27327392	 -0.00037371	  0.00022893	  7.27290022	  0.99885847	  0.99939736  0.49324911
+8281	 -6.27327403	 -0.00037366	  0.00022891	  7.27290037	  0.99885861	  0.99939743  0.49324922
+8282	 -6.27327414	 -0.00037362	  0.00022888	  7.27290052	  0.99885874	  0.99939751  0.49324912
+8283	 -6.27327425	 -0.00037357	  0.00022885	  7.27290068	  0.99885888	  0.99939758  0.49324914
+8284	 -6.27327436	 -0.00037353	  0.00022882	  7.27290083	  0.99885902	  0.99939765  0.49324919
+8285	 -6.27327446	 -0.00037348	  0.00022880	  7.27290098	  0.99885916	  0.99939772  0.49324915
+8286	 -6.27327457	 -0.00037344	  0.00022877	  7.27290114	  0.99885929	  0.99939780  0.49324920
+8287	 -6.27327468	 -0.00037339	  0.00022874	  7.27290129	  0.99885943	  0.99939787  0.49324914
+8288	 -6.27327479	 -0.00037335	  0.00022871	  7.27290144	  0.99885957	  0.99939794  0.49324927
+8289	 -6.27327490	 -0.00037330	  0.00022868	  7.27290160	  0.99885971	  0.99939801  0.49324924
+8290	 -6.27327500	 -0.00037326	  0.00022866	  7.27290175	  0.99885984	  0.99939809  0.49324926
+8291	 -6.27327511	 -0.00037321	  0.00022863	  7.27290190	  0.99885998	  0.99939816  0.49324920
+8292	 -6.27327522	 -0.00037317	  0.00022860	  7.27290205	  0.99886012	  0.99939823  0.49324932
+8293	 -6.27327533	 -0.00037312	  0.00022857	  7.27290221	  0.99886026	  0.99939831  0.49324939
+8294	 -6.27327543	 -0.00037308	  0.00022855	  7.27290236	  0.99886039	  0.99939838  0.49324946
+8295	 -6.27327554	 -0.00037303	  0.00022852	  7.27290251	  0.99886053	  0.99939845  0.49324935
+8296	 -6.27327565	 -0.00037299	  0.00022849	  7.27290266	  0.99886067	  0.99939852  0.49324930
+8297	 -6.27327576	 -0.00037294	  0.00022846	  7.27290282	  0.99886081	  0.99939860  0.49324950
+8298	 -6.27327586	 -0.00037290	  0.00022844	  7.27290297	  0.99886094	  0.99939867  0.49324938
+8299	 -6.27327597	 -0.00037285	  0.00022841	  7.27290312	  0.99886108	  0.99939874  0.49324942
+8300	 -6.27327608	 -0.00037281	  0.00022838	  7.27290327	  0.99886122	  0.99939881  0.49324944
+8301	 -6.27327619	 -0.00037276	  0.00022835	  7.27290343	  0.99886136	  0.99939888  0.49324942
+8302	 -6.27327629	 -0.00037272	  0.00022833	  7.27290358	  0.99886149	  0.99939896  0.49324940
+8303	 -6.27327640	 -0.00037267	  0.00022830	  7.27290373	  0.99886163	  0.99939903  0.49324954
+8304	 -6.27327651	 -0.00037263	  0.00022827	  7.27290388	  0.99886177	  0.99939910  0.49324936
+8305	 -6.27327662	 -0.00037258	  0.00022824	  7.27290404	  0.99886190	  0.99939917  0.49324945
+8306	 -6.27327672	 -0.00037254	  0.00022822	  7.27290419	  0.99886204	  0.99939925  0.49324953
+8307	 -6.27327683	 -0.00037249	  0.00022819	  7.27290434	  0.99886218	  0.99939932  0.49324957
+8308	 -6.27327694	 -0.00037245	  0.00022816	  7.27290449	  0.99886231	  0.99939939  0.49324952
+8309	 -6.27327705	 -0.00037240	  0.00022813	  7.27290464	  0.99886245	  0.99939946  0.49324959
+8310	 -6.27327715	 -0.00037236	  0.00022811	  7.27290480	  0.99886259	  0.99939954  0.49324957
+8311	 -6.27327726	 -0.00037231	  0.00022808	  7.27290495	  0.99886273	  0.99939961  0.49324964
+8312	 -6.27327737	 -0.00037227	  0.00022805	  7.27290510	  0.99886286	  0.99939968  0.49324963
+8313	 -6.27327747	 -0.00037222	  0.00022802	  7.27290525	  0.99886300	  0.99939975  0.49324974
+8314	 -6.27327758	 -0.00037218	  0.00022800	  7.27290540	  0.99886314	  0.99939982  0.49324966
+8315	 -6.27327769	 -0.00037213	  0.00022797	  7.27290556	  0.99886327	  0.99939990  0.49324952
+8316	 -6.27327780	 -0.00037209	  0.00022794	  7.27290571	  0.99886341	  0.99939997  0.49324969
+8317	 -6.27327790	 -0.00037204	  0.00022791	  7.27290586	  0.99886355	  0.99940004  0.49324970
+8318	 -6.27327801	 -0.00037200	  0.00022789	  7.27290601	  0.99886368	  0.99940011  0.49324976
+8319	 -6.27327812	 -0.00037195	  0.00022786	  7.27290616	  0.99886382	  0.99940019  0.49324984
+8320	 -6.27327822	 -0.00037191	  0.00022783	  7.27290631	  0.99886396	  0.99940026  0.49324963
+8321	 -6.27327833	 -0.00037187	  0.00022781	  7.27290647	  0.99886409	  0.99940033  0.49324968
+8322	 -6.27327844	 -0.00037182	  0.00022778	  7.27290662	  0.99886423	  0.99940040  0.49324978
+8323	 -6.27327855	 -0.00037178	  0.00022775	  7.27290677	  0.99886436	  0.99940047  0.49324985
+8324	 -6.27327865	 -0.00037173	  0.00022772	  7.27290692	  0.99886450	  0.99940055  0.49325000
+8325	 -6.27327876	 -0.00037169	  0.00022770	  7.27290707	  0.99886464	  0.99940062  0.49324984
+8326	 -6.27327887	 -0.00037164	  0.00022767	  7.27290722	  0.99886477	  0.99940069  0.49324982
+8327	 -6.27327897	 -0.00037160	  0.00022764	  7.27290737	  0.99886491	  0.99940076  0.49324988
+8328	 -6.27327908	 -0.00037155	  0.00022761	  7.27290753	  0.99886505	  0.99940083  0.49325015
+8329	 -6.27327919	 -0.00037151	  0.00022759	  7.27290768	  0.99886518	  0.99940091  0.49324977
+8330	 -6.27327929	 -0.00037146	  0.00022756	  7.27290783	  0.99886532	  0.99940098  0.49324993
+8331	 -6.27327940	 -0.00037142	  0.00022753	  7.27290798	  0.99886546	  0.99940105  0.49325002
+8332	 -6.27327951	 -0.00037137	  0.00022750	  7.27290813	  0.99886559	  0.99940112  0.49324999
+8333	 -6.27327961	 -0.00037133	  0.00022748	  7.27290828	  0.99886573	  0.99940119  0.49325000
+8334	 -6.27327972	 -0.00037129	  0.00022745	  7.27290843	  0.99886586	  0.99940126  0.49325006
+8335	 -6.27327983	 -0.00037124	  0.00022742	  7.27290858	  0.99886600	  0.99940134  0.49324994
+8336	 -6.27327993	 -0.00037120	  0.00022740	  7.27290874	  0.99886614	  0.99940141  0.49324986
+8337	 -6.27328004	 -0.00037115	  0.00022737	  7.27290889	  0.99886627	  0.99940148  0.49325009
+8338	 -6.27328015	 -0.00037111	  0.00022734	  7.27290904	  0.99886641	  0.99940155  0.49325012
+8339	 -6.27328025	 -0.00037106	  0.00022731	  7.27290919	  0.99886654	  0.99940162  0.49325015
+8340	 -6.27328036	 -0.00037102	  0.00022729	  7.27290934	  0.99886668	  0.99940170  0.49325010
+8341	 -6.27328047	 -0.00037097	  0.00022726	  7.27290949	  0.99886682	  0.99940177  0.49325020
+8342	 -6.27328057	 -0.00037093	  0.00022723	  7.27290964	  0.99886695	  0.99940184  0.49325004
+8343	 -6.27328068	 -0.00037089	  0.00022720	  7.27290979	  0.99886709	  0.99940191  0.49325014
+8344	 -6.27328078	 -0.00037084	  0.00022718	  7.27290994	  0.99886722	  0.99940198  0.49325025
+8345	 -6.27328089	 -0.00037080	  0.00022715	  7.27291009	  0.99886736	  0.99940205  0.49325008
+8346	 -6.27328100	 -0.00037075	  0.00022712	  7.27291024	  0.99886749	  0.99940213  0.49325032
+8347	 -6.27328110	 -0.00037071	  0.00022710	  7.27291040	  0.99886763	  0.99940220  0.49325016
+8348	 -6.27328121	 -0.00037066	  0.00022707	  7.27291055	  0.99886777	  0.99940227  0.49325010
+8349	 -6.27328132	 -0.00037062	  0.00022704	  7.27291070	  0.99886790	  0.99940234  0.49325006
+8350	 -6.27328142	 -0.00037057	  0.00022701	  7.27291085	  0.99886804	  0.99940241  0.49325022
+8351	 -6.27328153	 -0.00037053	  0.00022699	  7.27291100	  0.99886817	  0.99940248  0.49325031
+8352	 -6.27328163	 -0.00037049	  0.00022696	  7.27291115	  0.99886831	  0.99940255  0.49325037
+8353	 -6.27328174	 -0.00037044	  0.00022693	  7.27291130	  0.99886844	  0.99940263  0.49325027
+8354	 -6.27328185	 -0.00037040	  0.00022691	  7.27291145	  0.99886858	  0.99940270  0.49325034
+8355	 -6.27328195	 -0.00037035	  0.00022688	  7.27291160	  0.99886871	  0.99940277  0.49325020
+8356	 -6.27328206	 -0.00037031	  0.00022685	  7.27291175	  0.99886885	  0.99940284  0.49325035
+8357	 -6.27328217	 -0.00037026	  0.00022682	  7.27291190	  0.99886898	  0.99940291  0.49325022
+8358	 -6.27328227	 -0.00037022	  0.00022680	  7.27291205	  0.99886912	  0.99940298  0.49325038
+8359	 -6.27328238	 -0.00037018	  0.00022677	  7.27291220	  0.99886926	  0.99940305  0.49325045
+8360	 -6.27328248	 -0.00037013	  0.00022674	  7.27291235	  0.99886939	  0.99940313  0.49325055
+8361	 -6.27328259	 -0.00037009	  0.00022672	  7.27291250	  0.99886953	  0.99940320  0.49325042
+8362	 -6.27328269	 -0.00037004	  0.00022669	  7.27291265	  0.99886966	  0.99940327  0.49325036
+8363	 -6.27328280	 -0.00037000	  0.00022666	  7.27291280	  0.99886980	  0.99940334  0.49325057
+8364	 -6.27328291	 -0.00036995	  0.00022663	  7.27291295	  0.99886993	  0.99940341  0.49325047
+8365	 -6.27328301	 -0.00036991	  0.00022661	  7.27291310	  0.99887007	  0.99940348  0.49325050
+8366	 -6.27328312	 -0.00036987	  0.00022658	  7.27291325	  0.99887020	  0.99940355  0.49325044
+8367	 -6.27328322	 -0.00036982	  0.00022655	  7.27291340	  0.99887034	  0.99940363  0.49325060
+8368	 -6.27328333	 -0.00036978	  0.00022653	  7.27291355	  0.99887047	  0.99940370  0.49325046
+8369	 -6.27328344	 -0.00036973	  0.00022650	  7.27291370	  0.99887061	  0.99940377  0.49325049
+8370	 -6.27328354	 -0.00036969	  0.00022647	  7.27291385	  0.99887074	  0.99940384  0.49325054
+8371	 -6.27328365	 -0.00036965	  0.00022644	  7.27291400	  0.99887088	  0.99940391  0.49325051
+8372	 -6.27328375	 -0.00036960	  0.00022642	  7.27291415	  0.99887101	  0.99940398  0.49325068
+8373	 -6.27328386	 -0.00036956	  0.00022639	  7.27291430	  0.99887115	  0.99940405  0.49325059
+8374	 -6.27328396	 -0.00036951	  0.00022636	  7.27291445	  0.99887128	  0.99940412  0.49325082
+8375	 -6.27328407	 -0.00036947	  0.00022634	  7.27291460	  0.99887142	  0.99940419  0.49325077
+8376	 -6.27328418	 -0.00036942	  0.00022631	  7.27291475	  0.99887155	  0.99940427  0.49325076
+8377	 -6.27328428	 -0.00036938	  0.00022628	  7.27291490	  0.99887168	  0.99940434  0.49325073
+8378	 -6.27328439	 -0.00036934	  0.00022626	  7.27291505	  0.99887182	  0.99940441  0.49325073
+8379	 -6.27328449	 -0.00036929	  0.00022623	  7.27291520	  0.99887195	  0.99940448  0.49325059
+8380	 -6.27328460	 -0.00036925	  0.00022620	  7.27291535	  0.99887209	  0.99940455  0.49325071
+8381	 -6.27328470	 -0.00036920	  0.00022617	  7.27291550	  0.99887222	  0.99940462  0.49325075
+8382	 -6.27328481	 -0.00036916	  0.00022615	  7.27291565	  0.99887236	  0.99940469  0.49325074
+8383	 -6.27328491	 -0.00036912	  0.00022612	  7.27291580	  0.99887249	  0.99940476  0.49325076
+8384	 -6.27328502	 -0.00036907	  0.00022609	  7.27291595	  0.99887263	  0.99940483  0.49325069
+8385	 -6.27328512	 -0.00036903	  0.00022607	  7.27291610	  0.99887276	  0.99940491  0.49325089
+8386	 -6.27328523	 -0.00036898	  0.00022604	  7.27291624	  0.99887290	  0.99940498  0.49325087
+8387	 -6.27328533	 -0.00036894	  0.00022601	  7.27291639	  0.99887303	  0.99940505  0.49325089
+8388	 -6.27328544	 -0.00036890	  0.00022599	  7.27291654	  0.99887316	  0.99940512  0.49325087
+8389	 -6.27328555	 -0.00036885	  0.00022596	  7.27291669	  0.99887330	  0.99940519  0.49325085
+8390	 -6.27328565	 -0.00036881	  0.00022593	  7.27291684	  0.99887343	  0.99940526  0.49325080
+8391	 -6.27328576	 -0.00036876	  0.00022590	  7.27291699	  0.99887357	  0.99940533  0.49325071
+8392	 -6.27328586	 -0.00036872	  0.00022588	  7.27291714	  0.99887370	  0.99940540  0.49325095
+8393	 -6.27328597	 -0.00036868	  0.00022585	  7.27291729	  0.99887384	  0.99940547  0.49325080
+8394	 -6.27328607	 -0.00036863	  0.00022582	  7.27291744	  0.99887397	  0.99940554  0.49325088
+8395	 -6.27328618	 -0.00036859	  0.00022580	  7.27291759	  0.99887410	  0.99940561  0.49325100
+8396	 -6.27328628	 -0.00036855	  0.00022577	  7.27291774	  0.99887424	  0.99940568  0.49325106
+8397	 -6.27328639	 -0.00036850	  0.00022574	  7.27291789	  0.99887437	  0.99940576  0.49325085
+8398	 -6.27328649	 -0.00036846	  0.00022572	  7.27291803	  0.99887451	  0.99940583  0.49325087
+8399	 -6.27328660	 -0.00036841	  0.00022569	  7.27291818	  0.99887464	  0.99940590  0.49325084
+8400	 -6.27328670	 -0.00036837	  0.00022566	  7.27291833	  0.99887477	  0.99940597  0.49325118
+8401	 -6.27328681	 -0.00036833	  0.00022564	  7.27291848	  0.99887491	  0.99940604  0.49325112
+8402	 -6.27328691	 -0.00036828	  0.00022561	  7.27291863	  0.99887504	  0.99940611  0.49325104
+8403	 -6.27328702	 -0.00036824	  0.00022558	  7.27291878	  0.99887518	  0.99940618  0.49325104
+8404	 -6.27328712	 -0.00036819	  0.00022556	  7.27291893	  0.99887531	  0.99940625  0.49325116
+8405	 -6.27328723	 -0.00036815	  0.00022553	  7.27291907	  0.99887544	  0.99940632  0.49325111
+8406	 -6.27328733	 -0.00036811	  0.00022550	  7.27291922	  0.99887558	  0.99940639  0.49325116
+8407	 -6.27328744	 -0.00036806	  0.00022547	  7.27291937	  0.99887571	  0.99940646  0.49325108
+8408	 -6.27328754	 -0.00036802	  0.00022545	  7.27291952	  0.99887584	  0.99940653  0.49325111
+8409	 -6.27328764	 -0.00036798	  0.00022542	  7.27291967	  0.99887598	  0.99940660  0.49325113
+8410	 -6.27328775	 -0.00036793	  0.00022539	  7.27291982	  0.99887611	  0.99940667  0.49325130
+8411	 -6.27328785	 -0.00036789	  0.00022537	  7.27291997	  0.99887625	  0.99940674  0.49325114
+8412	 -6.27328796	 -0.00036784	  0.00022534	  7.27292011	  0.99887638	  0.99940681  0.49325125
+8413	 -6.27328806	 -0.00036780	  0.00022531	  7.27292026	  0.99887651	  0.99940689  0.49325120
+8414	 -6.27328817	 -0.00036776	  0.00022529	  7.27292041	  0.99887665	  0.99940696  0.49325118
+8415	 -6.27328827	 -0.00036771	  0.00022526	  7.27292056	  0.99887678	  0.99940703  0.49325120
+8416	 -6.27328838	 -0.00036767	  0.00022523	  7.27292071	  0.99887691	  0.99940710  0.49325135
+8417	 -6.27328848	 -0.00036763	  0.00022521	  7.27292086	  0.99887705	  0.99940717  0.49325134
+8418	 -6.27328859	 -0.00036758	  0.00022518	  7.27292100	  0.99887718	  0.99940724  0.49325139
+8419	 -6.27328869	 -0.00036754	  0.00022515	  7.27292115	  0.99887731	  0.99940731  0.49325135
+8420	 -6.27328880	 -0.00036749	  0.00022513	  7.27292130	  0.99887745	  0.99940738  0.49325126
+8421	 -6.27328890	 -0.00036745	  0.00022510	  7.27292145	  0.99887758	  0.99940745  0.49325131
+8422	 -6.27328900	 -0.00036741	  0.00022507	  7.27292160	  0.99887771	  0.99940752  0.49325136
+8423	 -6.27328911	 -0.00036736	  0.00022505	  7.27292174	  0.99887785	  0.99940759  0.49325152
+8424	 -6.27328921	 -0.00036732	  0.00022502	  7.27292189	  0.99887798	  0.99940766  0.49325159
+8425	 -6.27328932	 -0.00036728	  0.00022499	  7.27292204	  0.99887811	  0.99940773  0.49325140
+8426	 -6.27328942	 -0.00036723	  0.00022497	  7.27292219	  0.99887825	  0.99940780  0.49325141
+8427	 -6.27328953	 -0.00036719	  0.00022494	  7.27292234	  0.99887838	  0.99940787  0.49325131
+8428	 -6.27328963	 -0.00036715	  0.00022491	  7.27292248	  0.99887851	  0.99940794  0.49325145
+8429	 -6.27328973	 -0.00036710	  0.00022489	  7.27292263	  0.99887864	  0.99940801  0.49325145
+8430	 -6.27328984	 -0.00036706	  0.00022486	  7.27292278	  0.99887878	  0.99940808  0.49325157
+8431	 -6.27328994	 -0.00036702	  0.00022483	  7.27292293	  0.99887891	  0.99940815  0.49325149
+8432	 -6.27329005	 -0.00036697	  0.00022481	  7.27292307	  0.99887904	  0.99940822  0.49325164
+8433	 -6.27329015	 -0.00036693	  0.00022478	  7.27292322	  0.99887918	  0.99940829  0.49325155
+8434	 -6.27329025	 -0.00036689	  0.00022475	  7.27292337	  0.99887931	  0.99940836  0.49325164
+8435	 -6.27329036	 -0.00036684	  0.00022473	  7.27292352	  0.99887944	  0.99940843  0.49325151
+8436	 -6.27329046	 -0.00036680	  0.00022470	  7.27292366	  0.99887958	  0.99940850  0.49325168
+8437	 -6.27329057	 -0.00036675	  0.00022467	  7.27292381	  0.99887971	  0.99940857  0.49325138
+8438	 -6.27329067	 -0.00036671	  0.00022465	  7.27292396	  0.99887984	  0.99940864  0.49325171
+8439	 -6.27329078	 -0.00036667	  0.00022462	  7.27292411	  0.99887997	  0.99940871  0.49325159
+8440	 -6.27329088	 -0.00036662	  0.00022459	  7.27292425	  0.99888011	  0.99940878  0.49325160
+8441	 -6.27329098	 -0.00036658	  0.00022457	  7.27292440	  0.99888024	  0.99940885  0.49325177
+8442	 -6.27329109	 -0.00036654	  0.00022454	  7.27292455	  0.99888037	  0.99940892  0.49325177
+8443	 -6.27329119	 -0.00036649	  0.00022451	  7.27292470	  0.99888050	  0.99940899  0.49325164
+8444	 -6.27329129	 -0.00036645	  0.00022449	  7.27292484	  0.99888064	  0.99940906  0.49325172
+8445	 -6.27329140	 -0.00036641	  0.00022446	  7.27292499	  0.99888077	  0.99940913  0.49325179
+8446	 -6.27329150	 -0.00036636	  0.00022443	  7.27292514	  0.99888090	  0.99940920  0.49325181
+8447	 -6.27329161	 -0.00036632	  0.00022441	  7.27292529	  0.99888103	  0.99940927  0.49325178
+8448	 -6.27329171	 -0.00036628	  0.00022438	  7.27292543	  0.99888117	  0.99940934  0.49325178
+8449	 -6.27329181	 -0.00036623	  0.00022435	  7.27292558	  0.99888130	  0.99940941  0.49325183
+8450	 -6.27329192	 -0.00036619	  0.00022433	  7.27292573	  0.99888143	  0.99940948  0.49325179
+8451	 -6.27329202	 -0.00036615	  0.00022430	  7.27292587	  0.99888156	  0.99940955  0.49325183
+8452	 -6.27329212	 -0.00036610	  0.00022427	  7.27292602	  0.99888170	  0.99940962  0.49325178
+8453	 -6.27329223	 -0.00036606	  0.00022425	  7.27292617	  0.99888183	  0.99940969  0.49325167
+8454	 -6.27329233	 -0.00036602	  0.00022422	  7.27292631	  0.99888196	  0.99940976  0.49325180
+8455	 -6.27329244	 -0.00036597	  0.00022419	  7.27292646	  0.99888209	  0.99940983  0.49325201
+8456	 -6.27329254	 -0.00036593	  0.00022417	  7.27292661	  0.99888222	  0.99940990  0.49325190
+8457	 -6.27329264	 -0.00036589	  0.00022414	  7.27292675	  0.99888236	  0.99940997  0.49325201
+8458	 -6.27329275	 -0.00036584	  0.00022412	  7.27292690	  0.99888249	  0.99941004  0.49325203
+8459	 -6.27329285	 -0.00036580	  0.00022409	  7.27292705	  0.99888262	  0.99941011  0.49325195
+8460	 -6.27329295	 -0.00036576	  0.00022406	  7.27292720	  0.99888275	  0.99941018  0.49325194
+8461	 -6.27329306	 -0.00036571	  0.00022404	  7.27292734	  0.99888289	  0.99941025  0.49325187
+8462	 -6.27329316	 -0.00036567	  0.00022401	  7.27292749	  0.99888302	  0.99941032  0.49325203
+8463	 -6.27329326	 -0.00036563	  0.00022398	  7.27292764	  0.99888315	  0.99941039  0.49325193
+8464	 -6.27329337	 -0.00036559	  0.00022396	  7.27292778	  0.99888328	  0.99941046  0.49325192
+8465	 -6.27329347	 -0.00036554	  0.00022393	  7.27292793	  0.99888341	  0.99941053  0.49325212
+8466	 -6.27329357	 -0.00036550	  0.00022390	  7.27292807	  0.99888355	  0.99941060  0.49325192
+8467	 -6.27329368	 -0.00036546	  0.00022388	  7.27292822	  0.99888368	  0.99941067  0.49325204
+8468	 -6.27329378	 -0.00036541	  0.00022385	  7.27292837	  0.99888381	  0.99941074  0.49325210
+8469	 -6.27329388	 -0.00036537	  0.00022382	  7.27292851	  0.99888394	  0.99941081  0.49325200
+8470	 -6.27329399	 -0.00036533	  0.00022380	  7.27292866	  0.99888407	  0.99941088  0.49325216
+8471	 -6.27329409	 -0.00036528	  0.00022377	  7.27292881	  0.99888420	  0.99941095  0.49325212
+8472	 -6.27329419	 -0.00036524	  0.00022374	  7.27292895	  0.99888434	  0.99941102  0.49325214
+8473	 -6.27329430	 -0.00036520	  0.00022372	  7.27292910	  0.99888447	  0.99941108  0.49325208
+8474	 -6.27329440	 -0.00036515	  0.00022369	  7.27292925	  0.99888460	  0.99941115  0.49325230
+8475	 -6.27329450	 -0.00036511	  0.00022367	  7.27292939	  0.99888473	  0.99941122  0.49325225
+8476	 -6.27329461	 -0.00036507	  0.00022364	  7.27292954	  0.99888486	  0.99941129  0.49325212
+8477	 -6.27329471	 -0.00036502	  0.00022361	  7.27292968	  0.99888499	  0.99941136  0.49325221
+8478	 -6.27329481	 -0.00036498	  0.00022359	  7.27292983	  0.99888513	  0.99941143  0.49325215
+8479	 -6.27329491	 -0.00036494	  0.00022356	  7.27292998	  0.99888526	  0.99941150  0.49325228
+8480	 -6.27329502	 -0.00036490	  0.00022353	  7.27293012	  0.99888539	  0.99941157  0.49325236
+8481	 -6.27329512	 -0.00036485	  0.00022351	  7.27293027	  0.99888552	  0.99941164  0.49325238
+8482	 -6.27329522	 -0.00036481	  0.00022348	  7.27293041	  0.99888565	  0.99941171  0.49325230
+8483	 -6.27329533	 -0.00036477	  0.00022345	  7.27293056	  0.99888578	  0.99941178  0.49325233
+8484	 -6.27329543	 -0.00036472	  0.00022343	  7.27293071	  0.99888591	  0.99941185  0.49325243
+8485	 -6.27329553	 -0.00036468	  0.00022340	  7.27293085	  0.99888605	  0.99941192  0.49325248
+8486	 -6.27329564	 -0.00036464	  0.00022338	  7.27293100	  0.99888618	  0.99941199  0.49325226
+8487	 -6.27329574	 -0.00036460	  0.00022335	  7.27293114	  0.99888631	  0.99941206  0.49325247
+8488	 -6.27329584	 -0.00036455	  0.00022332	  7.27293129	  0.99888644	  0.99941213  0.49325235
+8489	 -6.27329594	 -0.00036451	  0.00022330	  7.27293143	  0.99888657	  0.99941219  0.49325238
+8490	 -6.27329605	 -0.00036447	  0.00022327	  7.27293158	  0.99888670	  0.99941226  0.49325236
+8491	 -6.27329615	 -0.00036442	  0.00022324	  7.27293173	  0.99888683	  0.99941233  0.49325251
+8492	 -6.27329625	 -0.00036438	  0.00022322	  7.27293187	  0.99888696	  0.99941240  0.49325244
+8493	 -6.27329635	 -0.00036434	  0.00022319	  7.27293202	  0.99888709	  0.99941247  0.49325243
+8494	 -6.27329646	 -0.00036429	  0.00022317	  7.27293216	  0.99888723	  0.99941254  0.49325235
+8495	 -6.27329656	 -0.00036425	  0.00022314	  7.27293231	  0.99888736	  0.99941261  0.49325265
+8496	 -6.27329666	 -0.00036421	  0.00022311	  7.27293245	  0.99888749	  0.99941268  0.49325266
+8497	 -6.27329677	 -0.00036417	  0.00022309	  7.27293260	  0.99888762	  0.99941275  0.49325241
+8498	 -6.27329687	 -0.00036412	  0.00022306	  7.27293274	  0.99888775	  0.99941282  0.49325251
+8499	 -6.27329697	 -0.00036408	  0.00022303	  7.27293289	  0.99888788	  0.99941289  0.49325244
+8500	 -6.27329707	 -0.00036404	  0.00022301	  7.27293304	  0.99888801	  0.99941295  0.49325256
+8501	 -6.27329718	 -0.00036399	  0.00022298	  7.27293318	  0.99888814	  0.99941302  0.49325261
+8502	 -6.27329728	 -0.00036395	  0.00022296	  7.27293333	  0.99888827	  0.99941309  0.49325262
+8503	 -6.27329738	 -0.00036391	  0.00022293	  7.27293347	  0.99888840	  0.99941316  0.49325272
+8504	 -6.27329748	 -0.00036387	  0.00022290	  7.27293362	  0.99888853	  0.99941323  0.49325264
+8505	 -6.27329758	 -0.00036382	  0.00022288	  7.27293376	  0.99888866	  0.99941330  0.49325271
+8506	 -6.27329769	 -0.00036378	  0.00022285	  7.27293391	  0.99888879	  0.99941337  0.49325250
+8507	 -6.27329779	 -0.00036374	  0.00022282	  7.27293405	  0.99888893	  0.99941344  0.49325276
+8508	 -6.27329789	 -0.00036370	  0.00022280	  7.27293420	  0.99888906	  0.99941351  0.49325279
+8509	 -6.27329799	 -0.00036365	  0.00022277	  7.27293434	  0.99888919	  0.99941358  0.49325256
+8510	 -6.27329810	 -0.00036361	  0.00022275	  7.27293449	  0.99888932	  0.99941364  0.49325269
+8511	 -6.27329820	 -0.00036357	  0.00022272	  7.27293463	  0.99888945	  0.99941371  0.49325274
+8512	 -6.27329830	 -0.00036352	  0.00022269	  7.27293478	  0.99888958	  0.99941378  0.49325276
+8513	 -6.27329840	 -0.00036348	  0.00022267	  7.27293492	  0.99888971	  0.99941385  0.49325275
+8514	 -6.27329851	 -0.00036344	  0.00022264	  7.27293507	  0.99888984	  0.99941392  0.49325266
+8515	 -6.27329861	 -0.00036340	  0.00022261	  7.27293521	  0.99888997	  0.99941399  0.49325274
+8516	 -6.27329871	 -0.00036335	  0.00022259	  7.27293536	  0.99889010	  0.99941406  0.49325275
+8517	 -6.27329881	 -0.00036331	  0.00022256	  7.27293550	  0.99889023	  0.99941413  0.49325279
+8518	 -6.27329891	 -0.00036327	  0.00022254	  7.27293565	  0.99889036	  0.99941420  0.49325277
+8519	 -6.27329902	 -0.00036323	  0.00022251	  7.27293579	  0.99889049	  0.99941426  0.49325299
+8520	 -6.27329912	 -0.00036318	  0.00022248	  7.27293593	  0.99889062	  0.99941433  0.49325298
+8521	 -6.27329922	 -0.00036314	  0.00022246	  7.27293608	  0.99889075	  0.99941440  0.49325274
+8522	 -6.27329932	 -0.00036310	  0.00022243	  7.27293622	  0.99889088	  0.99941447  0.49325294
+8523	 -6.27329942	 -0.00036306	  0.00022241	  7.27293637	  0.99889101	  0.99941454  0.49325297
+8524	 -6.27329953	 -0.00036301	  0.00022238	  7.27293651	  0.99889114	  0.99941461  0.49325278
+8525	 -6.27329963	 -0.00036297	  0.00022235	  7.27293666	  0.99889127	  0.99941468  0.49325281
+8526	 -6.27329973	 -0.00036293	  0.00022233	  7.27293680	  0.99889140	  0.99941474  0.49325304
+8527	 -6.27329983	 -0.00036289	  0.00022230	  7.27293695	  0.99889153	  0.99941481  0.49325295
+8528	 -6.27329993	 -0.00036284	  0.00022228	  7.27293709	  0.99889166	  0.99941488  0.49325311
+8529	 -6.27330004	 -0.00036280	  0.00022225	  7.27293723	  0.99889179	  0.99941495  0.49325291
+8530	 -6.27330014	 -0.00036276	  0.00022222	  7.27293738	  0.99889192	  0.99941502  0.49325317
+8531	 -6.27330024	 -0.00036272	  0.00022220	  7.27293752	  0.99889205	  0.99941509  0.49325298
+8532	 -6.27330034	 -0.00036267	  0.00022217	  7.27293767	  0.99889218	  0.99941516  0.49325316
+8533	 -6.27330044	 -0.00036263	  0.00022215	  7.27293781	  0.99889231	  0.99941522  0.49325310
+8534	 -6.27330054	 -0.00036259	  0.00022212	  7.27293796	  0.99889244	  0.99941529  0.49325314
+8535	 -6.27330065	 -0.00036255	  0.00022209	  7.27293810	  0.99889257	  0.99941536  0.49325310
+8536	 -6.27330075	 -0.00036250	  0.00022207	  7.27293824	  0.99889270	  0.99941543  0.49325300
+8537	 -6.27330085	 -0.00036246	  0.00022204	  7.27293839	  0.99889283	  0.99941550  0.49325323
+8538	 -6.27330095	 -0.00036242	  0.00022202	  7.27293853	  0.99889296	  0.99941557  0.49325313
+8539	 -6.27330105	 -0.00036238	  0.00022199	  7.27293868	  0.99889309	  0.99941564  0.49325318
+8540	 -6.27330115	 -0.00036233	  0.00022196	  7.27293882	  0.99889322	  0.99941570  0.49325325
+8541	 -6.27330126	 -0.00036229	  0.00022194	  7.27293896	  0.99889335	  0.99941577  0.49325315
+8542	 -6.27330136	 -0.00036225	  0.00022191	  7.27293911	  0.99889348	  0.99941584  0.49325312
+8543	 -6.27330146	 -0.00036221	  0.00022189	  7.27293925	  0.99889361	  0.99941591  0.49325327
+8544	 -6.27330156	 -0.00036216	  0.00022186	  7.27293940	  0.99889374	  0.99941598  0.49325334
+8545	 -6.27330166	 -0.00036212	  0.00022183	  7.27293954	  0.99889387	  0.99941605  0.49325318
+8546	 -6.27330176	 -0.00036208	  0.00022181	  7.27293968	  0.99889400	  0.99941611  0.49325339
+8547	 -6.27330186	 -0.00036204	  0.00022178	  7.27293983	  0.99889412	  0.99941618  0.49325320
+8548	 -6.27330197	 -0.00036199	  0.00022176	  7.27293997	  0.99889425	  0.99941625  0.49325327
+8549	 -6.27330207	 -0.00036195	  0.00022173	  7.27294011	  0.99889438	  0.99941632  0.49325329
+8550	 -6.27330217	 -0.00036191	  0.00022170	  7.27294026	  0.99889451	  0.99941639  0.49325333
+8551	 -6.27330227	 -0.00036187	  0.00022168	  7.27294040	  0.99889464	  0.99941646  0.49325330
+8552	 -6.27330237	 -0.00036182	  0.00022165	  7.27294055	  0.99889477	  0.99941652  0.49325321
+8553	 -6.27330247	 -0.00036178	  0.00022163	  7.27294069	  0.99889490	  0.99941659  0.49325343
+8554	 -6.27330257	 -0.00036174	  0.00022160	  7.27294083	  0.99889503	  0.99941666  0.49325334
+8555	 -6.27330267	 -0.00036170	  0.00022157	  7.27294098	  0.99889516	  0.99941673  0.49325333
+8556	 -6.27330278	 -0.00036166	  0.00022155	  7.27294112	  0.99889529	  0.99941680  0.49325328
+8557	 -6.27330288	 -0.00036161	  0.00022152	  7.27294126	  0.99889542	  0.99941686  0.49325344
+8558	 -6.27330298	 -0.00036157	  0.00022150	  7.27294141	  0.99889555	  0.99941693  0.49325340
+8559	 -6.27330308	 -0.00036153	  0.00022147	  7.27294155	  0.99889568	  0.99941700  0.49325337
+8560	 -6.27330318	 -0.00036149	  0.00022144	  7.27294169	  0.99889580	  0.99941707  0.49325346
+8561	 -6.27330328	 -0.00036144	  0.00022142	  7.27294184	  0.99889593	  0.99941714  0.49325350
+8562	 -6.27330338	 -0.00036140	  0.00022139	  7.27294198	  0.99889606	  0.99941720  0.49325355
+8563	 -6.27330348	 -0.00036136	  0.00022137	  7.27294212	  0.99889619	  0.99941727  0.49325362
+8564	 -6.27330358	 -0.00036132	  0.00022134	  7.27294227	  0.99889632	  0.99941734  0.49325356
+8565	 -6.27330368	 -0.00036128	  0.00022132	  7.27294241	  0.99889645	  0.99941741  0.49325360
+8566	 -6.27330379	 -0.00036123	  0.00022129	  7.27294255	  0.99889658	  0.99941748  0.49325348
+8567	 -6.27330389	 -0.00036119	  0.00022126	  7.27294269	  0.99889671	  0.99941754  0.49325378
+8568	 -6.27330399	 -0.00036115	  0.00022124	  7.27294284	  0.99889684	  0.99941761  0.49325364
+8569	 -6.27330409	 -0.00036111	  0.00022121	  7.27294298	  0.99889696	  0.99941768  0.49325361
+8570	 -6.27330419	 -0.00036107	  0.00022119	  7.27294312	  0.99889709	  0.99941775  0.49325386
+8571	 -6.27330429	 -0.00036102	  0.00022116	  7.27294327	  0.99889722	  0.99941782  0.49325359
+8572	 -6.27330439	 -0.00036098	  0.00022113	  7.27294341	  0.99889735	  0.99941788  0.49325371
+8573	 -6.27330449	 -0.00036094	  0.00022111	  7.27294355	  0.99889748	  0.99941795  0.49325375
+8574	 -6.27330459	 -0.00036090	  0.00022108	  7.27294370	  0.99889761	  0.99941802  0.49325371
+8575	 -6.27330469	 -0.00036085	  0.00022106	  7.27294384	  0.99889774	  0.99941809  0.49325378
+8576	 -6.27330479	 -0.00036081	  0.00022103	  7.27294398	  0.99889786	  0.99941816  0.49325370
+8577	 -6.27330489	 -0.00036077	  0.00022101	  7.27294412	  0.99889799	  0.99941822  0.49325364
+8578	 -6.27330499	 -0.00036073	  0.00022098	  7.27294427	  0.99889812	  0.99941829  0.49325373
+8579	 -6.27330510	 -0.00036069	  0.00022095	  7.27294441	  0.99889825	  0.99941836  0.49325372
+8580	 -6.27330520	 -0.00036064	  0.00022093	  7.27294455	  0.99889838	  0.99941843  0.49325391
+8581	 -6.27330530	 -0.00036060	  0.00022090	  7.27294469	  0.99889851	  0.99941849  0.49325378
+8582	 -6.27330540	 -0.00036056	  0.00022088	  7.27294484	  0.99889863	  0.99941856  0.49325387
+8583	 -6.27330550	 -0.00036052	  0.00022085	  7.27294498	  0.99889876	  0.99941863  0.49325370
+8584	 -6.27330560	 -0.00036048	  0.00022083	  7.27294512	  0.99889889	  0.99941870  0.49325386
+8585	 -6.27330570	 -0.00036043	  0.00022080	  7.27294526	  0.99889902	  0.99941877  0.49325387
+8586	 -6.27330580	 -0.00036039	  0.00022077	  7.27294541	  0.99889915	  0.99941883  0.49325384
+8587	 -6.27330590	 -0.00036035	  0.00022075	  7.27294555	  0.99889928	  0.99941890  0.49325392
+8588	 -6.27330600	 -0.00036031	  0.00022072	  7.27294569	  0.99889940	  0.99941897  0.49325387
+8589	 -6.27330610	 -0.00036027	  0.00022070	  7.27294583	  0.99889953	  0.99941904  0.49325390
+8590	 -6.27330620	 -0.00036023	  0.00022067	  7.27294598	  0.99889966	  0.99941910  0.49325400
+8591	 -6.27330630	 -0.00036018	  0.00022065	  7.27294612	  0.99889979	  0.99941917  0.49325409
+8592	 -6.27330640	 -0.00036014	  0.00022062	  7.27294626	  0.99889992	  0.99941924  0.49325386
+8593	 -6.27330650	 -0.00036010	  0.00022059	  7.27294640	  0.99890004	  0.99941931  0.49325408
+8594	 -6.27330660	 -0.00036006	  0.00022057	  7.27294654	  0.99890017	  0.99941937  0.49325391
+8595	 -6.27330670	 -0.00036002	  0.00022054	  7.27294669	  0.99890030	  0.99941944  0.49325389
+8596	 -6.27330680	 -0.00035997	  0.00022052	  7.27294683	  0.99890043	  0.99941951  0.49325379
+8597	 -6.27330690	 -0.00035993	  0.00022049	  7.27294697	  0.99890056	  0.99941958  0.49325409
+8598	 -6.27330700	 -0.00035989	  0.00022047	  7.27294711	  0.99890068	  0.99941964  0.49325388
+8599	 -6.27330710	 -0.00035985	  0.00022044	  7.27294726	  0.99890081	  0.99941971  0.49325402
+8600	 -6.27330720	 -0.00035981	  0.00022041	  7.27294740	  0.99890094	  0.99941978  0.49325423
+8601	 -6.27330730	 -0.00035976	  0.00022039	  7.27294754	  0.99890107	  0.99941985  0.49325405
+8602	 -6.27330740	 -0.00035972	  0.00022036	  7.27294768	  0.99890119	  0.99941991  0.49325402
+8603	 -6.27330750	 -0.00035968	  0.00022034	  7.27294782	  0.99890132	  0.99941998  0.49325409
+8604	 -6.27330760	 -0.00035964	  0.00022031	  7.27294796	  0.99890145	  0.99942005  0.49325408
+8605	 -6.27330770	 -0.00035960	  0.00022029	  7.27294811	  0.99890158	  0.99942012  0.49325430
+8606	 -6.27330780	 -0.00035956	  0.00022026	  7.27294825	  0.99890171	  0.99942018  0.49325412
+8607	 -6.27330790	 -0.00035951	  0.00022024	  7.27294839	  0.99890183	  0.99942025  0.49325410
+8608	 -6.27330800	 -0.00035947	  0.00022021	  7.27294853	  0.99890196	  0.99942032  0.49325444
+8609	 -6.27330810	 -0.00035943	  0.00022018	  7.27294867	  0.99890209	  0.99942039  0.49325431
+8610	 -6.27330820	 -0.00035939	  0.00022016	  7.27294882	  0.99890222	  0.99942045  0.49325422
+8611	 -6.27330830	 -0.00035935	  0.00022013	  7.27294896	  0.99890234	  0.99942052  0.49325435
+8612	 -6.27330840	 -0.00035931	  0.00022011	  7.27294910	  0.99890247	  0.99942059  0.49325426
+8613	 -6.27330850	 -0.00035926	  0.00022008	  7.27294924	  0.99890260	  0.99942065  0.49325433
+8614	 -6.27330860	 -0.00035922	  0.00022006	  7.27294938	  0.99890273	  0.99942072  0.49325432
+8615	 -6.27330870	 -0.00035918	  0.00022003	  7.27294952	  0.99890285	  0.99942079  0.49325444
+8616	 -6.27330880	 -0.00035914	  0.00022001	  7.27294966	  0.99890298	  0.99942086  0.49325435
+8617	 -6.27330890	 -0.00035910	  0.00021998	  7.27294981	  0.99890311	  0.99942092  0.49325422
+8618	 -6.27330900	 -0.00035906	  0.00021995	  7.27294995	  0.99890323	  0.99942099  0.49325439
+8619	 -6.27330910	 -0.00035901	  0.00021993	  7.27295009	  0.99890336	  0.99942106  0.49325438
+8620	 -6.27330920	 -0.00035897	  0.00021990	  7.27295023	  0.99890349	  0.99942113  0.49325454
+8621	 -6.27330930	 -0.00035893	  0.00021988	  7.27295037	  0.99890362	  0.99942119  0.49325448
+8622	 -6.27330940	 -0.00035889	  0.00021985	  7.27295051	  0.99890374	  0.99942126  0.49325441
+8623	 -6.27330950	 -0.00035885	  0.00021983	  7.27295065	  0.99890387	  0.99942133  0.49325438
+8624	 -6.27330960	 -0.00035881	  0.00021980	  7.27295079	  0.99890400	  0.99942139  0.49325444
+8625	 -6.27330970	 -0.00035876	  0.00021978	  7.27295094	  0.99890412	  0.99942146  0.49325455
+8626	 -6.27330980	 -0.00035872	  0.00021975	  7.27295108	  0.99890425	  0.99942153  0.49325435
+8627	 -6.27330990	 -0.00035868	  0.00021972	  7.27295122	  0.99890438	  0.99942159  0.49325446
+8628	 -6.27331000	 -0.00035864	  0.00021970	  7.27295136	  0.99890451	  0.99942166  0.49325463
+8629	 -6.27331010	 -0.00035860	  0.00021967	  7.27295150	  0.99890463	  0.99942173  0.49325459
+8630	 -6.27331020	 -0.00035856	  0.00021965	  7.27295164	  0.99890476	  0.99942180  0.49325444
+8631	 -6.27331030	 -0.00035851	  0.00021962	  7.27295178	  0.99890489	  0.99942186  0.49325446
+8632	 -6.27331040	 -0.00035847	  0.00021960	  7.27295192	  0.99890501	  0.99942193  0.49325470
+8633	 -6.27331050	 -0.00035843	  0.00021957	  7.27295206	  0.99890514	  0.99942200  0.49325447
+8634	 -6.27331059	 -0.00035839	  0.00021955	  7.27295220	  0.99890527	  0.99942206  0.49325451
+8635	 -6.27331069	 -0.00035835	  0.00021952	  7.27295235	  0.99890539	  0.99942213  0.49325471
+8636	 -6.27331079	 -0.00035831	  0.00021950	  7.27295249	  0.99890552	  0.99942220  0.49325479
+8637	 -6.27331089	 -0.00035827	  0.00021947	  7.27295263	  0.99890565	  0.99942226  0.49325465
+8638	 -6.27331099	 -0.00035822	  0.00021944	  7.27295277	  0.99890577	  0.99942233  0.49325460
+8639	 -6.27331109	 -0.00035818	  0.00021942	  7.27295291	  0.99890590	  0.99942240  0.49325463
+8640	 -6.27331119	 -0.00035814	  0.00021939	  7.27295305	  0.99890603	  0.99942246  0.49325475
+8641	 -6.27331129	 -0.00035810	  0.00021937	  7.27295319	  0.99890615	  0.99942253  0.49325484
+8642	 -6.27331139	 -0.00035806	  0.00021934	  7.27295333	  0.99890628	  0.99942260  0.49325478
+8643	 -6.27331149	 -0.00035802	  0.00021932	  7.27295347	  0.99890641	  0.99942267  0.49325476
+8644	 -6.27331159	 -0.00035798	  0.00021929	  7.27295361	  0.99890653	  0.99942273  0.49325474
+8645	 -6.27331169	 -0.00035793	  0.00021927	  7.27295375	  0.99890666	  0.99942280  0.49325471
+8646	 -6.27331179	 -0.00035789	  0.00021924	  7.27295389	  0.99890679	  0.99942287  0.49325479
+8647	 -6.27331188	 -0.00035785	  0.00021922	  7.27295403	  0.99890691	  0.99942293  0.49325475
+8648	 -6.27331198	 -0.00035781	  0.00021919	  7.27295417	  0.99890704	  0.99942300  0.49325483
+8649	 -6.27331208	 -0.00035777	  0.00021917	  7.27295431	  0.99890717	  0.99942307  0.49325488
+8650	 -6.27331218	 -0.00035773	  0.00021914	  7.27295445	  0.99890729	  0.99942313  0.49325468
+8651	 -6.27331228	 -0.00035769	  0.00021911	  7.27295459	  0.99890742	  0.99942320  0.49325487
+8652	 -6.27331238	 -0.00035764	  0.00021909	  7.27295473	  0.99890754	  0.99942327  0.49325491
+8653	 -6.27331248	 -0.00035760	  0.00021906	  7.27295487	  0.99890767	  0.99942333  0.49325485
+8654	 -6.27331258	 -0.00035756	  0.00021904	  7.27295501	  0.99890780	  0.99942340  0.49325494
+8655	 -6.27331268	 -0.00035752	  0.00021901	  7.27295515	  0.99890792	  0.99942347  0.49325489
+8656	 -6.27331277	 -0.00035748	  0.00021899	  7.27295529	  0.99890805	  0.99942353  0.49325507
+8657	 -6.27331287	 -0.00035744	  0.00021896	  7.27295544	  0.99890818	  0.99942360  0.49325487
+8658	 -6.27331297	 -0.00035740	  0.00021894	  7.27295558	  0.99890830	  0.99942367  0.49325485
+8659	 -6.27331307	 -0.00035736	  0.00021891	  7.27295572	  0.99890843	  0.99942373  0.49325494
+8660	 -6.27331317	 -0.00035731	  0.00021889	  7.27295586	  0.99890855	  0.99942380  0.49325502
+8661	 -6.27331327	 -0.00035727	  0.00021886	  7.27295600	  0.99890868	  0.99942386  0.49325506
+8662	 -6.27331337	 -0.00035723	  0.00021884	  7.27295614	  0.99890881	  0.99942393  0.49325501
+8663	 -6.27331347	 -0.00035719	  0.00021881	  7.27295628	  0.99890893	  0.99942400  0.49325503
+8664	 -6.27331356	 -0.00035715	  0.00021879	  7.27295642	  0.99890906	  0.99942406  0.49325490
+8665	 -6.27331366	 -0.00035711	  0.00021876	  7.27295655	  0.99890918	  0.99942413  0.49325500
+8666	 -6.27331376	 -0.00035707	  0.00021874	  7.27295669	  0.99890931	  0.99942420  0.49325510
+8667	 -6.27331386	 -0.00035703	  0.00021871	  7.27295683	  0.99890943	  0.99942426  0.49325499
+8668	 -6.27331396	 -0.00035698	  0.00021869	  7.27295697	  0.99890956	  0.99942433  0.49325505
+8669	 -6.27331406	 -0.00035694	  0.00021866	  7.27295711	  0.99890969	  0.99942440  0.49325506
+8670	 -6.27331416	 -0.00035690	  0.00021863	  7.27295725	  0.99890981	  0.99942446  0.49325523
+8671	 -6.27331425	 -0.00035686	  0.00021861	  7.27295739	  0.99890994	  0.99942453  0.49325511
+8672	 -6.27331435	 -0.00035682	  0.00021858	  7.27295753	  0.99891006	  0.99942460  0.49325502
+8673	 -6.27331445	 -0.00035678	  0.00021856	  7.27295767	  0.99891019	  0.99942466  0.49325512
+8674	 -6.27331455	 -0.00035674	  0.00021853	  7.27295781	  0.99891032	  0.99942473  0.49325535
+8675	 -6.27331465	 -0.00035670	  0.00021851	  7.27295795	  0.99891044	  0.99942479  0.49325526
+8676	 -6.27331475	 -0.00035666	  0.00021848	  7.27295809	  0.99891057	  0.99942486  0.49325504
+8677	 -6.27331485	 -0.00035661	  0.00021846	  7.27295823	  0.99891069	  0.99942493  0.49325512
+8678	 -6.27331494	 -0.00035657	  0.00021843	  7.27295837	  0.99891082	  0.99942499  0.49325533
+8679	 -6.27331504	 -0.00035653	  0.00021841	  7.27295851	  0.99891094	  0.99942506  0.49325523
+8680	 -6.27331514	 -0.00035649	  0.00021838	  7.27295865	  0.99891107	  0.99942513  0.49325528
+8681	 -6.27331524	 -0.00035645	  0.00021836	  7.27295879	  0.99891119	  0.99942519  0.49325526
+8682	 -6.27331534	 -0.00035641	  0.00021833	  7.27295893	  0.99891132	  0.99942526  0.49325527
+8683	 -6.27331543	 -0.00035637	  0.00021831	  7.27295907	  0.99891144	  0.99942532  0.49325541
+8684	 -6.27331553	 -0.00035633	  0.00021828	  7.27295921	  0.99891157	  0.99942539  0.49325526
+8685	 -6.27331563	 -0.00035629	  0.00021826	  7.27295935	  0.99891169	  0.99942546  0.49325518
+8686	 -6.27331573	 -0.00035625	  0.00021823	  7.27295948	  0.99891182	  0.99942552  0.49325527
+8687	 -6.27331583	 -0.00035620	  0.00021821	  7.27295962	  0.99891195	  0.99942559  0.49325543
+8688	 -6.27331593	 -0.00035616	  0.00021818	  7.27295976	  0.99891207	  0.99942566  0.49325535
+8689	 -6.27331602	 -0.00035612	  0.00021816	  7.27295990	  0.99891220	  0.99942572  0.49325531
+8690	 -6.27331612	 -0.00035608	  0.00021813	  7.27296004	  0.99891232	  0.99942579  0.49325537
+8691	 -6.27331622	 -0.00035604	  0.00021811	  7.27296018	  0.99891245	  0.99942585  0.49325536
+8692	 -6.27331632	 -0.00035600	  0.00021808	  7.27296032	  0.99891257	  0.99942592  0.49325546
+8693	 -6.27331642	 -0.00035596	  0.00021806	  7.27296046	  0.99891270	  0.99942599  0.49325549
+8694	 -6.27331651	 -0.00035592	  0.00021803	  7.27296060	  0.99891282	  0.99942605  0.49325546
+8695	 -6.27331661	 -0.00035588	  0.00021801	  7.27296074	  0.99891295	  0.99942612  0.49325542
+8696	 -6.27331671	 -0.00035584	  0.00021798	  7.27296087	  0.99891307	  0.99942618  0.49325537
+8697	 -6.27331681	 -0.00035579	  0.00021796	  7.27296101	  0.99891320	  0.99942625  0.49325535
+8698	 -6.27331691	 -0.00035575	  0.00021793	  7.27296115	  0.99891332	  0.99942632  0.49325540
+8699	 -6.27331700	 -0.00035571	  0.00021791	  7.27296129	  0.99891345	  0.99942638  0.49325546
+8700	 -6.27331710	 -0.00035567	  0.00021788	  7.27296143	  0.99891357	  0.99942645  0.49325545
+8701	 -6.27331720	 -0.00035563	  0.00021786	  7.27296157	  0.99891370	  0.99942651  0.49325569
+8702	 -6.27331730	 -0.00035559	  0.00021783	  7.27296171	  0.99891382	  0.99942658  0.49325550
+8703	 -6.27331740	 -0.00035555	  0.00021781	  7.27296185	  0.99891395	  0.99942664  0.49325563
+8704	 -6.27331749	 -0.00035551	  0.00021778	  7.27296198	  0.99891407	  0.99942671  0.49325568
+8705	 -6.27331759	 -0.00035547	  0.00021776	  7.27296212	  0.99891420	  0.99942678  0.49325547
+8706	 -6.27331769	 -0.00035543	  0.00021773	  7.27296226	  0.99891432	  0.99942684  0.49325550
+8707	 -6.27331779	 -0.00035539	  0.00021771	  7.27296240	  0.99891444	  0.99942691  0.49325571
+8708	 -6.27331788	 -0.00035535	  0.00021768	  7.27296254	  0.99891457	  0.99942697  0.49325568
+8709	 -6.27331798	 -0.00035530	  0.00021766	  7.27296268	  0.99891469	  0.99942704  0.49325562
+8710	 -6.27331808	 -0.00035526	  0.00021763	  7.27296281	  0.99891482	  0.99942711  0.49325569
+8711	 -6.27331818	 -0.00035522	  0.00021761	  7.27296295	  0.99891494	  0.99942717  0.49325576
+8712	 -6.27331827	 -0.00035518	  0.00021758	  7.27296309	  0.99891507	  0.99942724  0.49325584
+8713	 -6.27331837	 -0.00035514	  0.00021756	  7.27296323	  0.99891519	  0.99942730  0.49325572
+8714	 -6.27331847	 -0.00035510	  0.00021753	  7.27296337	  0.99891532	  0.99942737  0.49325557
+8715	 -6.27331857	 -0.00035506	  0.00021751	  7.27296351	  0.99891544	  0.99942743  0.49325555
+8716	 -6.27331866	 -0.00035502	  0.00021748	  7.27296364	  0.99891557	  0.99942750  0.49325590
+8717	 -6.27331876	 -0.00035498	  0.00021746	  7.27296378	  0.99891569	  0.99942757  0.49325582
+8718	 -6.27331886	 -0.00035494	  0.00021743	  7.27296392	  0.99891581	  0.99942763  0.49325599
+8719	 -6.27331896	 -0.00035490	  0.00021741	  7.27296406	  0.99891594	  0.99942770  0.49325596
+8720	 -6.27331905	 -0.00035486	  0.00021738	  7.27296420	  0.99891606	  0.99942776  0.49325600
+8721	 -6.27331915	 -0.00035482	  0.00021736	  7.27296434	  0.99891619	  0.99942783  0.49325578
+8722	 -6.27331925	 -0.00035478	  0.00021733	  7.27296447	  0.99891631	  0.99942789  0.49325597
+8723	 -6.27331935	 -0.00035473	  0.00021731	  7.27296461	  0.99891644	  0.99942796  0.49325578
+8724	 -6.27331944	 -0.00035469	  0.00021728	  7.27296475	  0.99891656	  0.99942802  0.49325601
+8725	 -6.27331954	 -0.00035465	  0.00021726	  7.27296489	  0.99891668	  0.99942809  0.49325574
+8726	 -6.27331964	 -0.00035461	  0.00021723	  7.27296503	  0.99891681	  0.99942816  0.49325598
+8727	 -6.27331974	 -0.00035457	  0.00021721	  7.27296516	  0.99891693	  0.99942822  0.49325602
+8728	 -6.27331983	 -0.00035453	  0.00021718	  7.27296530	  0.99891706	  0.99942829  0.49325595
+8729	 -6.27331993	 -0.00035449	  0.00021716	  7.27296544	  0.99891718	  0.99942835  0.49325608
+8730	 -6.27332003	 -0.00035445	  0.00021713	  7.27296558	  0.99891730	  0.99942842  0.49325597
+8731	 -6.27332012	 -0.00035441	  0.00021711	  7.27296571	  0.99891743	  0.99942848  0.49325598
+8732	 -6.27332022	 -0.00035437	  0.00021708	  7.27296585	  0.99891755	  0.99942855  0.49325613
+8733	 -6.27332032	 -0.00035433	  0.00021706	  7.27296599	  0.99891768	  0.99942861  0.49325588
+8734	 -6.27332042	 -0.00035429	  0.00021703	  7.27296613	  0.99891780	  0.99942868  0.49325598
+8735	 -6.27332051	 -0.00035425	  0.00021701	  7.27296626	  0.99891792	  0.99942874  0.49325592
+8736	 -6.27332061	 -0.00035421	  0.00021698	  7.27296640	  0.99891805	  0.99942881  0.49325612
+8737	 -6.27332071	 -0.00035417	  0.00021696	  7.27296654	  0.99891817	  0.99942888  0.49325620
+8738	 -6.27332080	 -0.00035413	  0.00021693	  7.27296668	  0.99891830	  0.99942894  0.49325610
+8739	 -6.27332090	 -0.00035409	  0.00021691	  7.27296681	  0.99891842	  0.99942901  0.49325614
+8740	 -6.27332100	 -0.00035405	  0.00021688	  7.27296695	  0.99891854	  0.99942907  0.49325612
+8741	 -6.27332109	 -0.00035400	  0.00021686	  7.27296709	  0.99891867	  0.99942914  0.49325613
+8742	 -6.27332119	 -0.00035396	  0.00021683	  7.27296723	  0.99891879	  0.99942920  0.49325604
+8743	 -6.27332129	 -0.00035392	  0.00021681	  7.27296736	  0.99891891	  0.99942927  0.49325626
+8744	 -6.27332139	 -0.00035388	  0.00021678	  7.27296750	  0.99891904	  0.99942933  0.49325625
+8745	 -6.27332148	 -0.00035384	  0.00021676	  7.27296764	  0.99891916	  0.99942940  0.49325605
+8746	 -6.27332158	 -0.00035380	  0.00021673	  7.27296778	  0.99891928	  0.99942946  0.49325626
+8747	 -6.27332168	 -0.00035376	  0.00021671	  7.27296791	  0.99891941	  0.99942953  0.49325629
+8748	 -6.27332177	 -0.00035372	  0.00021669	  7.27296805	  0.99891953	  0.99942959  0.49325630
+8749	 -6.27332187	 -0.00035368	  0.00021666	  7.27296819	  0.99891966	  0.99942966  0.49325628
+8750	 -6.27332197	 -0.00035364	  0.00021664	  7.27296833	  0.99891978	  0.99942972  0.49325635
+8751	 -6.27332206	 -0.00035360	  0.00021661	  7.27296846	  0.99891990	  0.99942979  0.49325625
+8752	 -6.27332216	 -0.00035356	  0.00021659	  7.27296860	  0.99892003	  0.99942985  0.49325617
+8753	 -6.27332226	 -0.00035352	  0.00021656	  7.27296874	  0.99892015	  0.99942992  0.49325641
+8754	 -6.27332235	 -0.00035348	  0.00021654	  7.27296887	  0.99892027	  0.99942998  0.49325636
+8755	 -6.27332245	 -0.00035344	  0.00021651	  7.27296901	  0.99892040	  0.99943005  0.49325630
+8756	 -6.27332255	 -0.00035340	  0.00021649	  7.27296915	  0.99892052	  0.99943011  0.49325637
+8757	 -6.27332264	 -0.00035336	  0.00021646	  7.27296928	  0.99892064	  0.99943018  0.49325631
+8758	 -6.27332274	 -0.00035332	  0.00021644	  7.27296942	  0.99892077	  0.99943024  0.49325656
+8759	 -6.27332284	 -0.00035328	  0.00021641	  7.27296956	  0.99892089	  0.99943031  0.49325631
+8760	 -6.27332293	 -0.00035324	  0.00021639	  7.27296970	  0.99892101	  0.99943037  0.49325638
+8761	 -6.27332303	 -0.00035320	  0.00021636	  7.27296983	  0.99892114	  0.99943044  0.49325647
+8762	 -6.27332313	 -0.00035316	  0.00021634	  7.27296997	  0.99892126	  0.99943050  0.49325639
+8763	 -6.27332322	 -0.00035312	  0.00021631	  7.27297011	  0.99892138	  0.99943057  0.49325638
+8764	 -6.27332332	 -0.00035308	  0.00021629	  7.27297024	  0.99892150	  0.99943063  0.49325638
+8765	 -6.27332341	 -0.00035304	  0.00021626	  7.27297038	  0.99892163	  0.99943070  0.49325643
+8766	 -6.27332351	 -0.00035300	  0.00021624	  7.27297052	  0.99892175	  0.99943076  0.49325659
+8767	 -6.27332361	 -0.00035296	  0.00021622	  7.27297065	  0.99892187	  0.99943083  0.49325672
+8768	 -6.27332370	 -0.00035291	  0.00021619	  7.27297079	  0.99892200	  0.99943089  0.49325654
+8769	 -6.27332380	 -0.00035287	  0.00021617	  7.27297093	  0.99892212	  0.99943096  0.49325642
+8770	 -6.27332390	 -0.00035283	  0.00021614	  7.27297106	  0.99892224	  0.99943102  0.49325660
+8771	 -6.27332399	 -0.00035279	  0.00021612	  7.27297120	  0.99892237	  0.99943109  0.49325667
+8772	 -6.27332409	 -0.00035275	  0.00021609	  7.27297133	  0.99892249	  0.99943115  0.49325649
+8773	 -6.27332418	 -0.00035271	  0.00021607	  7.27297147	  0.99892261	  0.99943122  0.49325655
+8774	 -6.27332428	 -0.00035267	  0.00021604	  7.27297161	  0.99892273	  0.99943128  0.49325662
+8775	 -6.27332438	 -0.00035263	  0.00021602	  7.27297174	  0.99892286	  0.99943135  0.49325664
+8776	 -6.27332447	 -0.00035259	  0.00021599	  7.27297188	  0.99892298	  0.99943141  0.49325657
+8777	 -6.27332457	 -0.00035255	  0.00021597	  7.27297202	  0.99892310	  0.99943148  0.49325670
+8778	 -6.27332467	 -0.00035251	  0.00021594	  7.27297215	  0.99892322	  0.99943154  0.49325664
+8779	 -6.27332476	 -0.00035247	  0.00021592	  7.27297229	  0.99892335	  0.99943161  0.49325680
+8780	 -6.27332486	 -0.00035243	  0.00021590	  7.27297243	  0.99892347	  0.99943167  0.49325677
+8781	 -6.27332495	 -0.00035239	  0.00021587	  7.27297256	  0.99892359	  0.99943174  0.49325674
+8782	 -6.27332505	 -0.00035235	  0.00021585	  7.27297270	  0.99892371	  0.99943180  0.49325673
+8783	 -6.27332515	 -0.00035231	  0.00021582	  7.27297283	  0.99892384	  0.99943187  0.49325687
+8784	 -6.27332524	 -0.00035227	  0.00021580	  7.27297297	  0.99892396	  0.99943193  0.49325676
+8785	 -6.27332534	 -0.00035223	  0.00021577	  7.27297311	  0.99892408	  0.99943200  0.49325694
+8786	 -6.27332543	 -0.00035219	  0.00021575	  7.27297324	  0.99892420	  0.99943206  0.49325684
+8787	 -6.27332553	 -0.00035215	  0.00021572	  7.27297338	  0.99892433	  0.99943212  0.49325673
+8788	 -6.27332563	 -0.00035211	  0.00021570	  7.27297351	  0.99892445	  0.99943219  0.49325679
+8789	 -6.27332572	 -0.00035207	  0.00021567	  7.27297365	  0.99892457	  0.99943225  0.49325687
+8790	 -6.27332582	 -0.00035203	  0.00021565	  7.27297379	  0.99892469	  0.99943232  0.49325682
+8791	 -6.27332591	 -0.00035199	  0.00021563	  7.27297392	  0.99892482	  0.99943238  0.49325693
+8792	 -6.27332601	 -0.00035195	  0.00021560	  7.27297406	  0.99892494	  0.99943245  0.49325706
+8793	 -6.27332611	 -0.00035191	  0.00021558	  7.27297419	  0.99892506	  0.99943251  0.49325679
+8794	 -6.27332620	 -0.00035187	  0.00021555	  7.27297433	  0.99892518	  0.99943258  0.49325693
+8795	 -6.27332630	 -0.00035183	  0.00021553	  7.27297446	  0.99892531	  0.99943264  0.49325690
+8796	 -6.27332639	 -0.00035179	  0.00021550	  7.27297460	  0.99892543	  0.99943271  0.49325679
+8797	 -6.27332649	 -0.00035175	  0.00021548	  7.27297474	  0.99892555	  0.99943277  0.49325703
+8798	 -6.27332658	 -0.00035171	  0.00021545	  7.27297487	  0.99892567	  0.99943283  0.49325709
+8799	 -6.27332668	 -0.00035167	  0.00021543	  7.27297501	  0.99892579	  0.99943290  0.49325716
+8800	 -6.27332678	 -0.00035163	  0.00021540	  7.27297514	  0.99892592	  0.99943296  0.49325688
+8801	 -6.27332687	 -0.00035159	  0.00021538	  7.27297528	  0.99892604	  0.99943303  0.49325701
+8802	 -6.27332697	 -0.00035155	  0.00021536	  7.27297541	  0.99892616	  0.99943309  0.49325699
+8803	 -6.27332706	 -0.00035151	  0.00021533	  7.27297555	  0.99892628	  0.99943316  0.49325716
+8804	 -6.27332716	 -0.00035147	  0.00021531	  7.27297569	  0.99892640	  0.99943322  0.49325705
+8805	 -6.27332725	 -0.00035143	  0.00021528	  7.27297582	  0.99892653	  0.99943329  0.49325714
+8806	 -6.27332735	 -0.00035139	  0.00021526	  7.27297596	  0.99892665	  0.99943335  0.49325697
+8807	 -6.27332744	 -0.00035135	  0.00021523	  7.27297609	  0.99892677	  0.99943341  0.49325706
+8808	 -6.27332754	 -0.00035131	  0.00021521	  7.27297623	  0.99892689	  0.99943348  0.49325710
+8809	 -6.27332763	 -0.00035127	  0.00021518	  7.27297636	  0.99892701	  0.99943354  0.49325718
+8810	 -6.27332773	 -0.00035123	  0.00021516	  7.27297650	  0.99892714	  0.99943361  0.49325714
+8811	 -6.27332783	 -0.00035119	  0.00021514	  7.27297663	  0.99892726	  0.99943367  0.49325704
+8812	 -6.27332792	 -0.00035115	  0.00021511	  7.27297677	  0.99892738	  0.99943374  0.49325724
+8813	 -6.27332802	 -0.00035111	  0.00021509	  7.27297690	  0.99892750	  0.99943380  0.49325727
+8814	 -6.27332811	 -0.00035107	  0.00021506	  7.27297704	  0.99892762	  0.99943386  0.49325718
+8815	 -6.27332821	 -0.00035103	  0.00021504	  7.27297717	  0.99892774	  0.99943393  0.49325715
+8816	 -6.27332830	 -0.00035099	  0.00021501	  7.27297731	  0.99892787	  0.99943399  0.49325736
+8817	 -6.27332840	 -0.00035095	  0.00021499	  7.27297744	  0.99892799	  0.99943406  0.49325725
+8818	 -6.27332849	 -0.00035091	  0.00021496	  7.27297758	  0.99892811	  0.99943412  0.49325737
+8819	 -6.27332859	 -0.00035087	  0.00021494	  7.27297771	  0.99892823	  0.99943418  0.49325733
+8820	 -6.27332868	 -0.00035084	  0.00021492	  7.27297785	  0.99892835	  0.99943425  0.49325727
+8821	 -6.27332878	 -0.00035080	  0.00021489	  7.27297798	  0.99892847	  0.99943431  0.49325722
+8822	 -6.27332887	 -0.00035076	  0.00021487	  7.27297812	  0.99892859	  0.99943438  0.49325726
+8823	 -6.27332897	 -0.00035072	  0.00021484	  7.27297825	  0.99892872	  0.99943444  0.49325746
+8824	 -6.27332906	 -0.00035068	  0.00021482	  7.27297839	  0.99892884	  0.99943451  0.49325735
+8825	 -6.27332916	 -0.00035064	  0.00021479	  7.27297852	  0.99892896	  0.99943457  0.49325729
+8826	 -6.27332925	 -0.00035060	  0.00021477	  7.27297866	  0.99892908	  0.99943463  0.49325733
+8827	 -6.27332935	 -0.00035056	  0.00021475	  7.27297879	  0.99892920	  0.99943470  0.49325743
+8828	 -6.27332944	 -0.00035052	  0.00021472	  7.27297893	  0.99892932	  0.99943476  0.49325745
+8829	 -6.27332954	 -0.00035048	  0.00021470	  7.27297906	  0.99892944	  0.99943483  0.49325763
+8830	 -6.27332963	 -0.00035044	  0.00021467	  7.27297920	  0.99892956	  0.99943489  0.49325734
+8831	 -6.27332973	 -0.00035040	  0.00021465	  7.27297933	  0.99892969	  0.99943495  0.49325743
+8832	 -6.27332982	 -0.00035036	  0.00021462	  7.27297947	  0.99892981	  0.99943502  0.49325746
+8833	 -6.27332992	 -0.00035032	  0.00021460	  7.27297960	  0.99892993	  0.99943508  0.49325750
+8834	 -6.27333001	 -0.00035028	  0.00021458	  7.27297973	  0.99893005	  0.99943515  0.49325754
+8835	 -6.27333011	 -0.00035024	  0.00021455	  7.27297987	  0.99893017	  0.99943521  0.49325751
+8836	 -6.27333020	 -0.00035020	  0.00021453	  7.27298000	  0.99893029	  0.99943527  0.49325761
+8837	 -6.27333030	 -0.00035016	  0.00021450	  7.27298014	  0.99893041	  0.99943534  0.49325752
+8838	 -6.27333039	 -0.00035012	  0.00021448	  7.27298027	  0.99893053	  0.99943540  0.49325748
+8839	 -6.27333049	 -0.00035008	  0.00021445	  7.27298041	  0.99893065	  0.99943546  0.49325770
+8840	 -6.27333058	 -0.00035004	  0.00021443	  7.27298054	  0.99893078	  0.99943553  0.49325749
+8841	 -6.27333068	 -0.00035000	  0.00021441	  7.27298068	  0.99893090	  0.99943559  0.49325754
+8842	 -6.27333077	 -0.00034996	  0.00021438	  7.27298081	  0.99893102	  0.99943566  0.49325757
+8843	 -6.27333087	 -0.00034992	  0.00021436	  7.27298094	  0.99893114	  0.99943572  0.49325772
+8844	 -6.27333096	 -0.00034988	  0.00021433	  7.27298108	  0.99893126	  0.99943578  0.49325749
+8845	 -6.27333106	 -0.00034984	  0.00021431	  7.27298121	  0.99893138	  0.99943585  0.49325746
+8846	 -6.27333115	 -0.00034980	  0.00021428	  7.27298135	  0.99893150	  0.99943591  0.49325763
+8847	 -6.27333125	 -0.00034976	  0.00021426	  7.27298148	  0.99893162	  0.99943597  0.49325780
+8848	 -6.27333134	 -0.00034973	  0.00021424	  7.27298162	  0.99893174	  0.99943604  0.49325773
+8849	 -6.27333144	 -0.00034969	  0.00021421	  7.27298175	  0.99893186	  0.99943610  0.49325774
+8850	 -6.27333153	 -0.00034965	  0.00021419	  7.27298188	  0.99893198	  0.99943617  0.49325768
+8851	 -6.27333162	 -0.00034961	  0.00021416	  7.27298202	  0.99893210	  0.99943623  0.49325772
+8852	 -6.27333172	 -0.00034957	  0.00021414	  7.27298215	  0.99893223	  0.99943629  0.49325780
+8853	 -6.27333181	 -0.00034953	  0.00021412	  7.27298229	  0.99893235	  0.99943636  0.49325790
+8854	 -6.27333191	 -0.00034949	  0.00021409	  7.27298242	  0.99893247	  0.99943642  0.49325769
+8855	 -6.27333200	 -0.00034945	  0.00021407	  7.27298255	  0.99893259	  0.99943648  0.49325784
+8856	 -6.27333210	 -0.00034941	  0.00021404	  7.27298269	  0.99893271	  0.99943655  0.49325781
+8857	 -6.27333219	 -0.00034937	  0.00021402	  7.27298282	  0.99893283	  0.99943661  0.49325781
+8858	 -6.27333229	 -0.00034933	  0.00021399	  7.27298296	  0.99893295	  0.99943668  0.49325775
+8859	 -6.27333238	 -0.00034929	  0.00021397	  7.27298309	  0.99893307	  0.99943674  0.49325777
+8860	 -6.27333247	 -0.00034925	  0.00021395	  7.27298322	  0.99893319	  0.99943680  0.49325794
+8861	 -6.27333257	 -0.00034921	  0.00021392	  7.27298336	  0.99893331	  0.99943687  0.49325786
+8862	 -6.27333266	 -0.00034917	  0.00021390	  7.27298349	  0.99893343	  0.99943693  0.49325783
+8863	 -6.27333276	 -0.00034913	  0.00021387	  7.27298362	  0.99893355	  0.99943699  0.49325777
+8864	 -6.27333285	 -0.00034909	  0.00021385	  7.27298376	  0.99893367	  0.99943706  0.49325800
+8865	 -6.27333295	 -0.00034905	  0.00021383	  7.27298389	  0.99893379	  0.99943712  0.49325788
+8866	 -6.27333304	 -0.00034902	  0.00021380	  7.27298402	  0.99893391	  0.99943718  0.49325796
+8867	 -6.27333313	 -0.00034898	  0.00021378	  7.27298416	  0.99893403	  0.99943725  0.49325777
+8868	 -6.27333323	 -0.00034894	  0.00021375	  7.27298429	  0.99893415	  0.99943731  0.49325803
+8869	 -6.27333332	 -0.00034890	  0.00021373	  7.27298443	  0.99893427	  0.99943737  0.49325799
+8870	 -6.27333342	 -0.00034886	  0.00021370	  7.27298456	  0.99893439	  0.99943744  0.49325815
+8871	 -6.27333351	 -0.00034882	  0.00021368	  7.27298469	  0.99893451	  0.99943750  0.49325810
+8872	 -6.27333360	 -0.00034878	  0.00021366	  7.27298483	  0.99893463	  0.99943756  0.49325805
+8873	 -6.27333370	 -0.00034874	  0.00021363	  7.27298496	  0.99893475	  0.99943763  0.49325805
+8874	 -6.27333379	 -0.00034870	  0.00021361	  7.27298509	  0.99893487	  0.99943769  0.49325810
+8875	 -6.27333389	 -0.00034866	  0.00021358	  7.27298523	  0.99893499	  0.99943775  0.49325812
+8876	 -6.27333398	 -0.00034862	  0.00021356	  7.27298536	  0.99893511	  0.99943782  0.49325800
+8877	 -6.27333408	 -0.00034858	  0.00021354	  7.27298549	  0.99893523	  0.99943788  0.49325798
+8878	 -6.27333417	 -0.00034854	  0.00021351	  7.27298563	  0.99893535	  0.99943794  0.49325819
+8879	 -6.27333426	 -0.00034850	  0.00021349	  7.27298576	  0.99893547	  0.99943801  0.49325809
+8880	 -6.27333436	 -0.00034847	  0.00021346	  7.27298589	  0.99893559	  0.99943807  0.49325811
+8881	 -6.27333445	 -0.00034843	  0.00021344	  7.27298602	  0.99893571	  0.99943813  0.49325804
+8882	 -6.27333454	 -0.00034839	  0.00021342	  7.27298616	  0.99893583	  0.99943820  0.49325814
+8883	 -6.27333464	 -0.00034835	  0.00021339	  7.27298629	  0.99893595	  0.99943826  0.49325817
+8884	 -6.27333473	 -0.00034831	  0.00021337	  7.27298642	  0.99893607	  0.99943832  0.49325810
+8885	 -6.27333483	 -0.00034827	  0.00021334	  7.27298656	  0.99893619	  0.99943839  0.49325810
+8886	 -6.27333492	 -0.00034823	  0.00021332	  7.27298669	  0.99893631	  0.99943845  0.49325813
+8887	 -6.27333501	 -0.00034819	  0.00021330	  7.27298682	  0.99893643	  0.99943851  0.49325821
+8888	 -6.27333511	 -0.00034815	  0.00021327	  7.27298696	  0.99893655	  0.99943858  0.49325825
+8889	 -6.27333520	 -0.00034811	  0.00021325	  7.27298709	  0.99893667	  0.99943864  0.49325802
+8890	 -6.27333530	 -0.00034807	  0.00021322	  7.27298722	  0.99893679	  0.99943870  0.49325839
+8891	 -6.27333539	 -0.00034803	  0.00021320	  7.27298735	  0.99893691	  0.99943877  0.49325824
+8892	 -6.27333548	 -0.00034800	  0.00021318	  7.27298749	  0.99893703	  0.99943883  0.49325827
+8893	 -6.27333558	 -0.00034796	  0.00021315	  7.27298762	  0.99893715	  0.99943889  0.49325830
+8894	 -6.27333567	 -0.00034792	  0.00021313	  7.27298775	  0.99893727	  0.99943895  0.49325817
+8895	 -6.27333576	 -0.00034788	  0.00021310	  7.27298789	  0.99893739	  0.99943902  0.49325841
+8896	 -6.27333586	 -0.00034784	  0.00021308	  7.27298802	  0.99893751	  0.99943908  0.49325836
+8897	 -6.27333595	 -0.00034780	  0.00021306	  7.27298815	  0.99893763	  0.99943914  0.49325836
+8898	 -6.27333604	 -0.00034776	  0.00021303	  7.27298828	  0.99893774	  0.99943921  0.49325838
+8899	 -6.27333614	 -0.00034772	  0.00021301	  7.27298842	  0.99893786	  0.99943927  0.49325845
+8900	 -6.27333623	 -0.00034768	  0.00021298	  7.27298855	  0.99893798	  0.99943933  0.49325848
+8901	 -6.27333632	 -0.00034764	  0.00021296	  7.27298868	  0.99893810	  0.99943940  0.49325833
+8902	 -6.27333642	 -0.00034760	  0.00021294	  7.27298881	  0.99893822	  0.99943946  0.49325843
+8903	 -6.27333651	 -0.00034757	  0.00021291	  7.27298895	  0.99893834	  0.99943952  0.49325849
+8904	 -6.27333661	 -0.00034753	  0.00021289	  7.27298908	  0.99893846	  0.99943958  0.49325841
+8905	 -6.27333670	 -0.00034749	  0.00021286	  7.27298921	  0.99893858	  0.99943965  0.49325856
+8906	 -6.27333679	 -0.00034745	  0.00021284	  7.27298934	  0.99893870	  0.99943971  0.49325841
+8907	 -6.27333689	 -0.00034741	  0.00021282	  7.27298948	  0.99893882	  0.99943977  0.49325845
+8908	 -6.27333698	 -0.00034737	  0.00021279	  7.27298961	  0.99893894	  0.99943984  0.49325852
+8909	 -6.27333707	 -0.00034733	  0.00021277	  7.27298974	  0.99893906	  0.99943990  0.49325863
+8910	 -6.27333717	 -0.00034729	  0.00021275	  7.27298987	  0.99893918	  0.99943996  0.49325866
+8911	 -6.27333726	 -0.00034725	  0.00021272	  7.27299000	  0.99893929	  0.99944002  0.49325856
+8912	 -6.27333735	 -0.00034721	  0.00021270	  7.27299014	  0.99893941	  0.99944009  0.49325854
+8913	 -6.27333745	 -0.00034718	  0.00021267	  7.27299027	  0.99893953	  0.99944015  0.49325858
+8914	 -6.27333754	 -0.00034714	  0.00021265	  7.27299040	  0.99893965	  0.99944021  0.49325856
+8915	 -6.27333763	 -0.00034710	  0.00021263	  7.27299053	  0.99893977	  0.99944028  0.49325873
+8916	 -6.27333772	 -0.00034706	  0.00021260	  7.27299067	  0.99893989	  0.99944034  0.49325877
+8917	 -6.27333782	 -0.00034702	  0.00021258	  7.27299080	  0.99894001	  0.99944040  0.49325864
+8918	 -6.27333791	 -0.00034698	  0.00021255	  7.27299093	  0.99894013	  0.99944046  0.49325857
+8919	 -6.27333800	 -0.00034694	  0.00021253	  7.27299106	  0.99894025	  0.99944053  0.49325852
+8920	 -6.27333810	 -0.00034690	  0.00021251	  7.27299119	  0.99894036	  0.99944059  0.49325872
+8921	 -6.27333819	 -0.00034686	  0.00021248	  7.27299133	  0.99894048	  0.99944065  0.49325865
+8922	 -6.27333828	 -0.00034683	  0.00021246	  7.27299146	  0.99894060	  0.99944072  0.49325884
+8923	 -6.27333838	 -0.00034679	  0.00021244	  7.27299159	  0.99894072	  0.99944078  0.49325864
+8924	 -6.27333847	 -0.00034675	  0.00021241	  7.27299172	  0.99894084	  0.99944084  0.49325865
+8925	 -6.27333856	 -0.00034671	  0.00021239	  7.27299185	  0.99894096	  0.99944090  0.49325871
+8926	 -6.27333866	 -0.00034667	  0.00021236	  7.27299199	  0.99894108	  0.99944097  0.49325862
+8927	 -6.27333875	 -0.00034663	  0.00021234	  7.27299212	  0.99894120	  0.99944103  0.49325892
+8928	 -6.27333884	 -0.00034659	  0.00021232	  7.27299225	  0.99894131	  0.99944109  0.49325886
+8929	 -6.27333893	 -0.00034655	  0.00021229	  7.27299238	  0.99894143	  0.99944115  0.49325892
+8930	 -6.27333903	 -0.00034652	  0.00021227	  7.27299251	  0.99894155	  0.99944122  0.49325878
+8931	 -6.27333912	 -0.00034648	  0.00021225	  7.27299264	  0.99894167	  0.99944128  0.49325893
+8932	 -6.27333921	 -0.00034644	  0.00021222	  7.27299278	  0.99894179	  0.99944134  0.49325882
+8933	 -6.27333931	 -0.00034640	  0.00021220	  7.27299291	  0.99894191	  0.99944140  0.49325880
+8934	 -6.27333940	 -0.00034636	  0.00021217	  7.27299304	  0.99894202	  0.99944147  0.49325884
+8935	 -6.27333949	 -0.00034632	  0.00021215	  7.27299317	  0.99894214	  0.99944153  0.49325871
+8936	 -6.27333958	 -0.00034628	  0.00021213	  7.27299330	  0.99894226	  0.99944159  0.49325888
+8937	 -6.27333968	 -0.00034624	  0.00021210	  7.27299343	  0.99894238	  0.99944165  0.49325907
+8938	 -6.27333977	 -0.00034620	  0.00021208	  7.27299356	  0.99894250	  0.99944172  0.49325884
+8939	 -6.27333986	 -0.00034617	  0.00021206	  7.27299370	  0.99894262	  0.99944178  0.49325906
+8940	 -6.27333995	 -0.00034613	  0.00021203	  7.27299383	  0.99894273	  0.99944184  0.49325903
+8941	 -6.27334005	 -0.00034609	  0.00021201	  7.27299396	  0.99894285	  0.99944190  0.49325895
+8942	 -6.27334014	 -0.00034605	  0.00021198	  7.27299409	  0.99894297	  0.99944197  0.49325883
+8943	 -6.27334023	 -0.00034601	  0.00021196	  7.27299422	  0.99894309	  0.99944203  0.49325893
+8944	 -6.27334033	 -0.00034597	  0.00021194	  7.27299435	  0.99894321	  0.99944209  0.49325903
+8945	 -6.27334042	 -0.00034593	  0.00021191	  7.27299448	  0.99894333	  0.99944215  0.49325919
+8946	 -6.27334051	 -0.00034590	  0.00021189	  7.27299461	  0.99894344	  0.99944222  0.49325911
+8947	 -6.27334060	 -0.00034586	  0.00021187	  7.27299475	  0.99894356	  0.99944228  0.49325916
+8948	 -6.27334070	 -0.00034582	  0.00021184	  7.27299488	  0.99894368	  0.99944234  0.49325910
+8949	 -6.27334079	 -0.00034578	  0.00021182	  7.27299501	  0.99894380	  0.99944240  0.49325905
+8950	 -6.27334088	 -0.00034574	  0.00021179	  7.27299514	  0.99894392	  0.99944246  0.49325907
+8951	 -6.27334097	 -0.00034570	  0.00021177	  7.27299527	  0.99894403	  0.99944253  0.49325918
+8952	 -6.27334107	 -0.00034566	  0.00021175	  7.27299540	  0.99894415	  0.99944259  0.49325910
+8953	 -6.27334116	 -0.00034563	  0.00021172	  7.27299553	  0.99894427	  0.99944265  0.49325909
+8954	 -6.27334125	 -0.00034559	  0.00021170	  7.27299566	  0.99894439	  0.99944271  0.49325903
+8955	 -6.27334134	 -0.00034555	  0.00021168	  7.27299579	  0.99894451	  0.99944278  0.49325934
+8956	 -6.27334143	 -0.00034551	  0.00021165	  7.27299593	  0.99894462	  0.99944284  0.49325921
+8957	 -6.27334153	 -0.00034547	  0.00021163	  7.27299606	  0.99894474	  0.99944290  0.49325916
+8958	 -6.27334162	 -0.00034543	  0.00021161	  7.27299619	  0.99894486	  0.99944296  0.49325905
+8959	 -6.27334171	 -0.00034539	  0.00021158	  7.27299632	  0.99894498	  0.99944302  0.49325932
+8960	 -6.27334180	 -0.00034536	  0.00021156	  7.27299645	  0.99894509	  0.99944309  0.49325918
+8961	 -6.27334190	 -0.00034532	  0.00021153	  7.27299658	  0.99894521	  0.99944315  0.49325928
+8962	 -6.27334199	 -0.00034528	  0.00021151	  7.27299671	  0.99894533	  0.99944321  0.49325927
+8963	 -6.27334208	 -0.00034524	  0.00021149	  7.27299684	  0.99894545	  0.99944327  0.49325910
+8964	 -6.27334217	 -0.00034520	  0.00021146	  7.27299697	  0.99894557	  0.99944334  0.49325933
+8965	 -6.27334226	 -0.00034516	  0.00021144	  7.27299710	  0.99894568	  0.99944340  0.49325931
+8966	 -6.27334236	 -0.00034512	  0.00021142	  7.27299723	  0.99894580	  0.99944346  0.49325913
+8967	 -6.27334245	 -0.00034509	  0.00021139	  7.27299736	  0.99894592	  0.99944352  0.49325935
+8968	 -6.27334254	 -0.00034505	  0.00021137	  7.27299749	  0.99894604	  0.99944358  0.49325926
+8969	 -6.27334263	 -0.00034501	  0.00021135	  7.27299762	  0.99894615	  0.99944365  0.49325931
+8970	 -6.27334273	 -0.00034497	  0.00021132	  7.27299776	  0.99894627	  0.99944371  0.49325923
+8971	 -6.27334282	 -0.00034493	  0.00021130	  7.27299789	  0.99894639	  0.99944377  0.49325932
+8972	 -6.27334291	 -0.00034489	  0.00021128	  7.27299802	  0.99894651	  0.99944383  0.49325937
+8973	 -6.27334300	 -0.00034486	  0.00021125	  7.27299815	  0.99894662	  0.99944389  0.49325925
+8974	 -6.27334309	 -0.00034482	  0.00021123	  7.27299828	  0.99894674	  0.99944396  0.49325938
+8975	 -6.27334319	 -0.00034478	  0.00021120	  7.27299841	  0.99894686	  0.99944402  0.49325937
+8976	 -6.27334328	 -0.00034474	  0.00021118	  7.27299854	  0.99894697	  0.99944408  0.49325933
+8977	 -6.27334337	 -0.00034470	  0.00021116	  7.27299867	  0.99894709	  0.99944414  0.49325964
+8978	 -6.27334346	 -0.00034466	  0.00021113	  7.27299880	  0.99894721	  0.99944420  0.49325932
+8979	 -6.27334355	 -0.00034462	  0.00021111	  7.27299893	  0.99894733	  0.99944426  0.49325939
+8980	 -6.27334364	 -0.00034459	  0.00021109	  7.27299906	  0.99894744	  0.99944433  0.49325953
+8981	 -6.27334374	 -0.00034455	  0.00021106	  7.27299919	  0.99894756	  0.99944439  0.49325955
+8982	 -6.27334383	 -0.00034451	  0.00021104	  7.27299932	  0.99894768	  0.99944445  0.49325952
+8983	 -6.27334392	 -0.00034447	  0.00021102	  7.27299945	  0.99894780	  0.99944451  0.49325957
+8984	 -6.27334401	 -0.00034443	  0.00021099	  7.27299958	  0.99894791	  0.99944457  0.49325952
+8985	 -6.27334410	 -0.00034439	  0.00021097	  7.27299971	  0.99894803	  0.99944464  0.49325948
+8986	 -6.27334420	 -0.00034436	  0.00021095	  7.27299984	  0.99894815	  0.99944470  0.49325953
+8987	 -6.27334429	 -0.00034432	  0.00021092	  7.27299997	  0.99894826	  0.99944476  0.49325969
+8988	 -6.27334438	 -0.00034428	  0.00021090	  7.27300010	  0.99894838	  0.99944482  0.49325951
+8989	 -6.27334447	 -0.00034424	  0.00021088	  7.27300023	  0.99894850	  0.99944488  0.49325964
+8990	 -6.27334456	 -0.00034420	  0.00021085	  7.27300036	  0.99894861	  0.99944494  0.49325959
+8991	 -6.27334465	 -0.00034417	  0.00021083	  7.27300049	  0.99894873	  0.99944501  0.49325984
+8992	 -6.27334475	 -0.00034413	  0.00021081	  7.27300062	  0.99894885	  0.99944507  0.49325961
+8993	 -6.27334484	 -0.00034409	  0.00021078	  7.27300075	  0.99894897	  0.99944513  0.49325970
+8994	 -6.27334493	 -0.00034405	  0.00021076	  7.27300088	  0.99894908	  0.99944519  0.49325973
+8995	 -6.27334502	 -0.00034401	  0.00021073	  7.27300101	  0.99894920	  0.99944525  0.49325965
+8996	 -6.27334511	 -0.00034397	  0.00021071	  7.27300114	  0.99894932	  0.99944531  0.49325961
+8997	 -6.27334520	 -0.00034394	  0.00021069	  7.27300127	  0.99894943	  0.99944538  0.49325970
+8998	 -6.27334529	 -0.00034390	  0.00021066	  7.27300140	  0.99894955	  0.99944544  0.49325947
+8999	 -6.27334539	 -0.00034386	  0.00021064	  7.27300153	  0.99894967	  0.99944550  0.49325970
+9000	 -6.27334548	 -0.00034382	  0.00021062	  7.27300166	  0.99894978	  0.99944556  0.49325986
+9001	 -6.27334557	 -0.00034378	  0.00021059	  7.27300179	  0.99894990	  0.99944562  0.49325975
+9002	 -6.27334566	 -0.00034374	  0.00021057	  7.27300192	  0.99895002	  0.99944568  0.49325973
+9003	 -6.27334575	 -0.00034371	  0.00021055	  7.27300205	  0.99895013	  0.99944575  0.49325990
+9004	 -6.27334584	 -0.00034367	  0.00021052	  7.27300217	  0.99895025	  0.99944581  0.49325987
+9005	 -6.27334593	 -0.00034363	  0.00021050	  7.27300230	  0.99895037	  0.99944587  0.49325975
+9006	 -6.27334603	 -0.00034359	  0.00021048	  7.27300243	  0.99895048	  0.99944593  0.49325986
+9007	 -6.27334612	 -0.00034355	  0.00021045	  7.27300256	  0.99895060	  0.99944599  0.49325980
+9008	 -6.27334621	 -0.00034352	  0.00021043	  7.27300269	  0.99895072	  0.99944605  0.49325999
+9009	 -6.27334630	 -0.00034348	  0.00021041	  7.27300282	  0.99895083	  0.99944611  0.49326005
+9010	 -6.27334639	 -0.00034344	  0.00021038	  7.27300295	  0.99895095	  0.99944618  0.49325989
+9011	 -6.27334648	 -0.00034340	  0.00021036	  7.27300308	  0.99895106	  0.99944624  0.49325982
+9012	 -6.27334657	 -0.00034336	  0.00021034	  7.27300321	  0.99895118	  0.99944630  0.49326004
+9013	 -6.27334666	 -0.00034333	  0.00021031	  7.27300334	  0.99895130	  0.99944636  0.49325987
+9014	 -6.27334676	 -0.00034329	  0.00021029	  7.27300347	  0.99895141	  0.99944642  0.49326003
+9015	 -6.27334685	 -0.00034325	  0.00021027	  7.27300360	  0.99895153	  0.99944648  0.49325986
+9016	 -6.27334694	 -0.00034321	  0.00021024	  7.27300373	  0.99895165	  0.99944654  0.49326013
+9017	 -6.27334703	 -0.00034317	  0.00021022	  7.27300386	  0.99895176	  0.99944661  0.49326001
+9018	 -6.27334712	 -0.00034313	  0.00021020	  7.27300399	  0.99895188	  0.99944667  0.49325997
+9019	 -6.27334721	 -0.00034310	  0.00021017	  7.27300411	  0.99895199	  0.99944673  0.49325982
+9020	 -6.27334730	 -0.00034306	  0.00021015	  7.27300424	  0.99895211	  0.99944679  0.49326004
+9021	 -6.27334739	 -0.00034302	  0.00021013	  7.27300437	  0.99895223	  0.99944685  0.49326000
+9022	 -6.27334748	 -0.00034298	  0.00021010	  7.27300450	  0.99895234	  0.99944691  0.49326002
+9023	 -6.27334758	 -0.00034294	  0.00021008	  7.27300463	  0.99895246	  0.99944697  0.49326019
+9024	 -6.27334767	 -0.00034291	  0.00021006	  7.27300476	  0.99895258	  0.99944704  0.49326022
+9025	 -6.27334776	 -0.00034287	  0.00021003	  7.27300489	  0.99895269	  0.99944710  0.49325991
+9026	 -6.27334785	 -0.00034283	  0.00021001	  7.27300502	  0.99895281	  0.99944716  0.49326017
+9027	 -6.27334794	 -0.00034279	  0.00020999	  7.27300515	  0.99895292	  0.99944722  0.49326012
+9028	 -6.27334803	 -0.00034276	  0.00020996	  7.27300527	  0.99895304	  0.99944728  0.49326022
+9029	 -6.27334812	 -0.00034272	  0.00020994	  7.27300540	  0.99895316	  0.99944734  0.49326001
+9030	 -6.27334821	 -0.00034268	  0.00020992	  7.27300553	  0.99895327	  0.99944740  0.49326024
+9031	 -6.27334830	 -0.00034264	  0.00020989	  7.27300566	  0.99895339	  0.99944746  0.49326021
+9032	 -6.27334839	 -0.00034260	  0.00020987	  7.27300579	  0.99895350	  0.99944753  0.49326029
+9033	 -6.27334848	 -0.00034257	  0.00020985	  7.27300592	  0.99895362	  0.99944759  0.49326016
+9034	 -6.27334857	 -0.00034253	  0.00020983	  7.27300605	  0.99895373	  0.99944765  0.49326016
+9035	 -6.27334867	 -0.00034249	  0.00020980	  7.27300618	  0.99895385	  0.99944771  0.49326045
+9036	 -6.27334876	 -0.00034245	  0.00020978	  7.27300630	  0.99895397	  0.99944777  0.49326011
+9037	 -6.27334885	 -0.00034241	  0.00020976	  7.27300643	  0.99895408	  0.99944783  0.49326023
+9038	 -6.27334894	 -0.00034238	  0.00020973	  7.27300656	  0.99895420	  0.99944789  0.49326007
+9039	 -6.27334903	 -0.00034234	  0.00020971	  7.27300669	  0.99895431	  0.99944795  0.49326021
+9040	 -6.27334912	 -0.00034230	  0.00020969	  7.27300682	  0.99895443	  0.99944801  0.49326027
+9041	 -6.27334921	 -0.00034226	  0.00020966	  7.27300695	  0.99895454	  0.99944807  0.49326040
+9042	 -6.27334930	 -0.00034222	  0.00020964	  7.27300708	  0.99895466	  0.99944814  0.49326032
+9043	 -6.27334939	 -0.00034219	  0.00020962	  7.27300720	  0.99895478	  0.99944820  0.49326028
+9044	 -6.27334948	 -0.00034215	  0.00020959	  7.27300733	  0.99895489	  0.99944826  0.49326022
+9045	 -6.27334957	 -0.00034211	  0.00020957	  7.27300746	  0.99895501	  0.99944832  0.49326044
+9046	 -6.27334966	 -0.00034207	  0.00020955	  7.27300759	  0.99895512	  0.99944838  0.49326036
+9047	 -6.27334975	 -0.00034204	  0.00020952	  7.27300772	  0.99895524	  0.99944844  0.49326052
+9048	 -6.27334984	 -0.00034200	  0.00020950	  7.27300785	  0.99895535	  0.99944850  0.49326050
+9049	 -6.27334993	 -0.00034196	  0.00020948	  7.27300797	  0.99895547	  0.99944856  0.49326047
+9050	 -6.27335002	 -0.00034192	  0.00020945	  7.27300810	  0.99895558	  0.99944862  0.49326049
+9051	 -6.27335011	 -0.00034188	  0.00020943	  7.27300823	  0.99895570	  0.99944868  0.49326038
+9052	 -6.27335021	 -0.00034185	  0.00020941	  7.27300836	  0.99895582	  0.99944875  0.49326054
+9053	 -6.27335030	 -0.00034181	  0.00020938	  7.27300849	  0.99895593	  0.99944881  0.49326041
+9054	 -6.27335039	 -0.00034177	  0.00020936	  7.27300861	  0.99895605	  0.99944887  0.49326059
+9055	 -6.27335048	 -0.00034173	  0.00020934	  7.27300874	  0.99895616	  0.99944893  0.49326058
+9056	 -6.27335057	 -0.00034170	  0.00020932	  7.27300887	  0.99895628	  0.99944899  0.49326043
+9057	 -6.27335066	 -0.00034166	  0.00020929	  7.27300900	  0.99895639	  0.99944905  0.49326062
+9058	 -6.27335075	 -0.00034162	  0.00020927	  7.27300913	  0.99895651	  0.99944911  0.49326067
+9059	 -6.27335084	 -0.00034158	  0.00020925	  7.27300925	  0.99895662	  0.99944917  0.49326078
+9060	 -6.27335093	 -0.00034154	  0.00020922	  7.27300938	  0.99895674	  0.99944923  0.49326065
+9061	 -6.27335102	 -0.00034151	  0.00020920	  7.27300951	  0.99895685	  0.99944929  0.49326059
+9062	 -6.27335111	 -0.00034147	  0.00020918	  7.27300964	  0.99895697	  0.99944935  0.49326055
+9063	 -6.27335120	 -0.00034143	  0.00020915	  7.27300977	  0.99895708	  0.99944941  0.49326066
+9064	 -6.27335129	 -0.00034139	  0.00020913	  7.27300989	  0.99895720	  0.99944948  0.49326077
+9065	 -6.27335138	 -0.00034136	  0.00020911	  7.27301002	  0.99895731	  0.99944954  0.49326066
+9066	 -6.27335147	 -0.00034132	  0.00020908	  7.27301015	  0.99895743	  0.99944960  0.49326075
+9067	 -6.27335156	 -0.00034128	  0.00020906	  7.27301028	  0.99895754	  0.99944966  0.49326055
+9068	 -6.27335165	 -0.00034124	  0.00020904	  7.27301040	  0.99895766	  0.99944972  0.49326086
+9069	 -6.27335174	 -0.00034121	  0.00020902	  7.27301053	  0.99895777	  0.99944978  0.49326055
+9070	 -6.27335183	 -0.00034117	  0.00020899	  7.27301066	  0.99895789	  0.99944984  0.49326069
+9071	 -6.27335192	 -0.00034113	  0.00020897	  7.27301079	  0.99895800	  0.99944990  0.49326076
+9072	 -6.27335201	 -0.00034109	  0.00020895	  7.27301092	  0.99895812	  0.99944996  0.49326064
+9073	 -6.27335210	 -0.00034106	  0.00020892	  7.27301104	  0.99895823	  0.99945002  0.49326064
+9074	 -6.27335219	 -0.00034102	  0.00020890	  7.27301117	  0.99895835	  0.99945008  0.49326079
+9075	 -6.27335228	 -0.00034098	  0.00020888	  7.27301130	  0.99895846	  0.99945014  0.49326094
+9076	 -6.27335237	 -0.00034094	  0.00020885	  7.27301143	  0.99895858	  0.99945020  0.49326073
+9077	 -6.27335246	 -0.00034091	  0.00020883	  7.27301155	  0.99895869	  0.99945026  0.49326067
+9078	 -6.27335255	 -0.00034087	  0.00020881	  7.27301168	  0.99895881	  0.99945032  0.49326096
+9079	 -6.27335264	 -0.00034083	  0.00020878	  7.27301181	  0.99895892	  0.99945038  0.49326074
+9080	 -6.27335273	 -0.00034079	  0.00020876	  7.27301194	  0.99895903	  0.99945045  0.49326072
+9081	 -6.27335282	 -0.00034076	  0.00020874	  7.27301206	  0.99895915	  0.99945051  0.49326097
+9082	 -6.27335291	 -0.00034072	  0.00020872	  7.27301219	  0.99895926	  0.99945057  0.49326095
+9083	 -6.27335300	 -0.00034068	  0.00020869	  7.27301232	  0.99895938	  0.99945063  0.49326083
+9084	 -6.27335309	 -0.00034064	  0.00020867	  7.27301244	  0.99895949	  0.99945069  0.49326094
+9085	 -6.27335318	 -0.00034061	  0.00020865	  7.27301257	  0.99895961	  0.99945075  0.49326071
+9086	 -6.27335327	 -0.00034057	  0.00020862	  7.27301270	  0.99895972	  0.99945081  0.49326094
+9087	 -6.27335336	 -0.00034053	  0.00020860	  7.27301283	  0.99895984	  0.99945087  0.49326119
+9088	 -6.27335345	 -0.00034049	  0.00020858	  7.27301295	  0.99895995	  0.99945093  0.49326102
+9089	 -6.27335354	 -0.00034046	  0.00020856	  7.27301308	  0.99896007	  0.99945099  0.49326095
+9090	 -6.27335363	 -0.00034042	  0.00020853	  7.27301321	  0.99896018	  0.99945105  0.49326111
+9091	 -6.27335372	 -0.00034038	  0.00020851	  7.27301333	  0.99896029	  0.99945111  0.49326093
+9092	 -6.27335380	 -0.00034034	  0.00020849	  7.27301346	  0.99896041	  0.99945117  0.49326092
+9093	 -6.27335389	 -0.00034031	  0.00020846	  7.27301359	  0.99896052	  0.99945123  0.49326086
+9094	 -6.27335398	 -0.00034027	  0.00020844	  7.27301372	  0.99896064	  0.99945129  0.49326111
+9095	 -6.27335407	 -0.00034023	  0.00020842	  7.27301384	  0.99896075	  0.99945135  0.49326085
+9096	 -6.27335416	 -0.00034019	  0.00020839	  7.27301397	  0.99896087	  0.99945141  0.49326107
+9097	 -6.27335425	 -0.00034016	  0.00020837	  7.27301410	  0.99896098	  0.99945147  0.49326138
+9098	 -6.27335434	 -0.00034012	  0.00020835	  7.27301422	  0.99896109	  0.99945153  0.49326107
+9099	 -6.27335443	 -0.00034008	  0.00020833	  7.27301435	  0.99896121	  0.99945159  0.49326110
+9100	 -6.27335452	 -0.00034004	  0.00020830	  7.27301448	  0.99896132	  0.99945165  0.49326107
+9101	 -6.27335461	 -0.00034001	  0.00020828	  7.27301460	  0.99896144	  0.99945171  0.49326111
+9102	 -6.27335470	 -0.00033997	  0.00020826	  7.27301473	  0.99896155	  0.99945177  0.49326094
+9103	 -6.27335479	 -0.00033993	  0.00020823	  7.27301486	  0.99896166	  0.99945183  0.49326116
+9104	 -6.27335488	 -0.00033989	  0.00020821	  7.27301498	  0.99896178	  0.99945189  0.49326119
+9105	 -6.27335497	 -0.00033986	  0.00020819	  7.27301511	  0.99896189	  0.99945195  0.49326130
+9106	 -6.27335506	 -0.00033982	  0.00020817	  7.27301524	  0.99896201	  0.99945201  0.49326119
+9107	 -6.27335515	 -0.00033978	  0.00020814	  7.27301536	  0.99896212	  0.99945207  0.49326105
+9108	 -6.27335524	 -0.00033975	  0.00020812	  7.27301549	  0.99896223	  0.99945213  0.49326119
+9109	 -6.27335533	 -0.00033971	  0.00020810	  7.27301562	  0.99896235	  0.99945219  0.49326118
+9110	 -6.27335541	 -0.00033967	  0.00020807	  7.27301574	  0.99896246	  0.99945225  0.49326126
+9111	 -6.27335550	 -0.00033963	  0.00020805	  7.27301587	  0.99896258	  0.99945231  0.49326104
+9112	 -6.27335559	 -0.00033960	  0.00020803	  7.27301600	  0.99896269	  0.99945237  0.49326124
+9113	 -6.27335568	 -0.00033956	  0.00020801	  7.27301612	  0.99896280	  0.99945243  0.49326121
+9114	 -6.27335577	 -0.00033952	  0.00020798	  7.27301625	  0.99896292	  0.99945249  0.49326126
+9115	 -6.27335586	 -0.00033948	  0.00020796	  7.27301638	  0.99896303	  0.99945255  0.49326146
+9116	 -6.27335595	 -0.00033945	  0.00020794	  7.27301650	  0.99896315	  0.99945261  0.49326123
+9117	 -6.27335604	 -0.00033941	  0.00020791	  7.27301663	  0.99896326	  0.99945267  0.49326137
+9118	 -6.27335613	 -0.00033937	  0.00020789	  7.27301675	  0.99896337	  0.99945274  0.49326124
+9119	 -6.27335622	 -0.00033934	  0.00020787	  7.27301688	  0.99896349	  0.99945279  0.49326144
+9120	 -6.27335631	 -0.00033930	  0.00020785	  7.27301701	  0.99896360	  0.99945286  0.49326118
+9121	 -6.27335639	 -0.00033926	  0.00020782	  7.27301713	  0.99896371	  0.99945291  0.49326131
+9122	 -6.27335648	 -0.00033922	  0.00020780	  7.27301726	  0.99896383	  0.99945297  0.49326131
+9123	 -6.27335657	 -0.00033919	  0.00020778	  7.27301739	  0.99896394	  0.99945303  0.49326137
+9124	 -6.27335666	 -0.00033915	  0.00020776	  7.27301751	  0.99896405	  0.99945309  0.49326160
+9125	 -6.27335675	 -0.00033911	  0.00020773	  7.27301764	  0.99896417	  0.99945315  0.49326160
+9126	 -6.27335684	 -0.00033908	  0.00020771	  7.27301776	  0.99896428	  0.99945321  0.49326123
+9127	 -6.27335693	 -0.00033904	  0.00020769	  7.27301789	  0.99896439	  0.99945327  0.49326161
+9128	 -6.27335702	 -0.00033900	  0.00020766	  7.27301802	  0.99896451	  0.99945333  0.49326152
+9129	 -6.27335711	 -0.00033896	  0.00020764	  7.27301814	  0.99896462	  0.99945339  0.49326143
+9130	 -6.27335720	 -0.00033893	  0.00020762	  7.27301827	  0.99896473	  0.99945345  0.49326145
+9131	 -6.27335728	 -0.00033889	  0.00020760	  7.27301839	  0.99896485	  0.99945351  0.49326173
+9132	 -6.27335737	 -0.00033885	  0.00020757	  7.27301852	  0.99896496	  0.99945357  0.49326144
+9133	 -6.27335746	 -0.00033882	  0.00020755	  7.27301865	  0.99896507	  0.99945363  0.49326151
+9134	 -6.27335755	 -0.00033878	  0.00020753	  7.27301877	  0.99896519	  0.99945369  0.49326137
+9135	 -6.27335764	 -0.00033874	  0.00020751	  7.27301890	  0.99896530	  0.99945375  0.49326159
+9136	 -6.27335773	 -0.00033870	  0.00020748	  7.27301902	  0.99896541	  0.99945381  0.49326170
+9137	 -6.27335782	 -0.00033867	  0.00020746	  7.27301915	  0.99896553	  0.99945387  0.49326167
+9138	 -6.27335791	 -0.00033863	  0.00020744	  7.27301927	  0.99896564	  0.99945393  0.49326166
+9139	 -6.27335799	 -0.00033859	  0.00020741	  7.27301940	  0.99896575	  0.99945399  0.49326169
+9140	 -6.27335808	 -0.00033856	  0.00020739	  7.27301953	  0.99896587	  0.99945405  0.49326162
+9141	 -6.27335817	 -0.00033852	  0.00020737	  7.27301965	  0.99896598	  0.99945411  0.49326183
+9142	 -6.27335826	 -0.00033848	  0.00020735	  7.27301978	  0.99896609	  0.99945417  0.49326173
+9143	 -6.27335835	 -0.00033845	  0.00020732	  7.27301990	  0.99896621	  0.99945423  0.49326171
+9144	 -6.27335844	 -0.00033841	  0.00020730	  7.27302003	  0.99896632	  0.99945429  0.49326166
+9145	 -6.27335853	 -0.00033837	  0.00020728	  7.27302015	  0.99896643	  0.99945435  0.49326165
+9146	 -6.27335861	 -0.00033833	  0.00020726	  7.27302028	  0.99896655	  0.99945441  0.49326181
+9147	 -6.27335870	 -0.00033830	  0.00020723	  7.27302041	  0.99896666	  0.99945447  0.49326156
+9148	 -6.27335879	 -0.00033826	  0.00020721	  7.27302053	  0.99896677	  0.99945453  0.49326193
+9149	 -6.27335888	 -0.00033822	  0.00020719	  7.27302066	  0.99896688	  0.99945459  0.49326181
+9150	 -6.27335897	 -0.00033819	  0.00020716	  7.27302078	  0.99896700	  0.99945465  0.49326163
+9151	 -6.27335906	 -0.00033815	  0.00020714	  7.27302091	  0.99896711	  0.99945471  0.49326173
+9152	 -6.27335915	 -0.00033811	  0.00020712	  7.27302103	  0.99896722	  0.99945477  0.49326188
+9153	 -6.27335923	 -0.00033808	  0.00020710	  7.27302116	  0.99896734	  0.99945483  0.49326193
+9154	 -6.27335932	 -0.00033804	  0.00020707	  7.27302128	  0.99896745	  0.99945489  0.49326203
+9155	 -6.27335941	 -0.00033800	  0.00020705	  7.27302141	  0.99896756	  0.99945495  0.49326181
+9156	 -6.27335950	 -0.00033797	  0.00020703	  7.27302153	  0.99896767	  0.99945501  0.49326178
+9157	 -6.27335959	 -0.00033793	  0.00020701	  7.27302166	  0.99896779	  0.99945507  0.49326183
+9158	 -6.27335968	 -0.00033789	  0.00020698	  7.27302178	  0.99896790	  0.99945512  0.49326183
+9159	 -6.27335976	 -0.00033785	  0.00020696	  7.27302191	  0.99896801	  0.99945518  0.49326190
+9160	 -6.27335985	 -0.00033782	  0.00020694	  7.27302203	  0.99896813	  0.99945524  0.49326204
+9161	 -6.27335994	 -0.00033778	  0.00020692	  7.27302216	  0.99896824	  0.99945530  0.49326197
+9162	 -6.27336003	 -0.00033774	  0.00020689	  7.27302228	  0.99896835	  0.99945536  0.49326200
+9163	 -6.27336012	 -0.00033771	  0.00020687	  7.27302241	  0.99896846	  0.99945542  0.49326187
+9164	 -6.27336021	 -0.00033767	  0.00020685	  7.27302253	  0.99896858	  0.99945548  0.49326214
+9165	 -6.27336029	 -0.00033763	  0.00020683	  7.27302266	  0.99896869	  0.99945554  0.49326210
+9166	 -6.27336038	 -0.00033760	  0.00020680	  7.27302278	  0.99896880	  0.99945560  0.49326210
+9167	 -6.27336047	 -0.00033756	  0.00020678	  7.27302291	  0.99896891	  0.99945566  0.49326201
+9168	 -6.27336056	 -0.00033752	  0.00020676	  7.27302303	  0.99896903	  0.99945572  0.49326223
+9169	 -6.27336065	 -0.00033749	  0.00020674	  7.27302316	  0.99896914	  0.99945578  0.49326214
+9170	 -6.27336073	 -0.00033745	  0.00020671	  7.27302328	  0.99896925	  0.99945584  0.49326184
+9171	 -6.27336082	 -0.00033741	  0.00020669	  7.27302341	  0.99896936	  0.99945590  0.49326190
+9172	 -6.27336091	 -0.00033738	  0.00020667	  7.27302353	  0.99896948	  0.99945596  0.49326192
+9173	 -6.27336100	 -0.00033734	  0.00020665	  7.27302366	  0.99896959	  0.99945602  0.49326215
+9174	 -6.27336109	 -0.00033730	  0.00020662	  7.27302378	  0.99896970	  0.99945607  0.49326198
+9175	 -6.27336117	 -0.00033727	  0.00020660	  7.27302391	  0.99896981	  0.99945613  0.49326211
+9176	 -6.27336126	 -0.00033723	  0.00020658	  7.27302403	  0.99896992	  0.99945619  0.49326202
+9177	 -6.27336135	 -0.00033719	  0.00020656	  7.27302416	  0.99897004	  0.99945625  0.49326208
+9178	 -6.27336144	 -0.00033716	  0.00020653	  7.27302428	  0.99897015	  0.99945631  0.49326216
+9179	 -6.27336153	 -0.00033712	  0.00020651	  7.27302441	  0.99897026	  0.99945637  0.49326199
+9180	 -6.27336161	 -0.00033708	  0.00020649	  7.27302453	  0.99897037	  0.99945643  0.49326218
+9181	 -6.27336170	 -0.00033705	  0.00020647	  7.27302466	  0.99897049	  0.99945649  0.49326214
+9182	 -6.27336179	 -0.00033701	  0.00020644	  7.27302478	  0.99897060	  0.99945655  0.49326240
+9183	 -6.27336188	 -0.00033697	  0.00020642	  7.27302491	  0.99897071	  0.99945661  0.49326199
+9184	 -6.27336197	 -0.00033694	  0.00020640	  7.27302503	  0.99897082	  0.99945667  0.49326203
+9185	 -6.27336205	 -0.00033690	  0.00020638	  7.27302515	  0.99897093	  0.99945673  0.49326224
+9186	 -6.27336214	 -0.00033686	  0.00020635	  7.27302528	  0.99897105	  0.99945679  0.49326220
+9187	 -6.27336223	 -0.00033683	  0.00020633	  7.27302540	  0.99897116	  0.99945684  0.49326222
+9188	 -6.27336232	 -0.00033679	  0.00020631	  7.27302553	  0.99897127	  0.99945690  0.49326242
+9189	 -6.27336240	 -0.00033675	  0.00020629	  7.27302565	  0.99897138	  0.99945696  0.49326213
+9190	 -6.27336249	 -0.00033672	  0.00020626	  7.27302578	  0.99897149	  0.99945702  0.49326219
+9191	 -6.27336258	 -0.00033668	  0.00020624	  7.27302590	  0.99897161	  0.99945708  0.49326219
+9192	 -6.27336267	 -0.00033664	  0.00020622	  7.27302603	  0.99897172	  0.99945714  0.49326250
+9193	 -6.27336275	 -0.00033661	  0.00020620	  7.27302615	  0.99897183	  0.99945720  0.49326244
+9194	 -6.27336284	 -0.00033657	  0.00020617	  7.27302627	  0.99897194	  0.99945726  0.49326221
+9195	 -6.27336293	 -0.00033653	  0.00020615	  7.27302640	  0.99897205	  0.99945732  0.49326264
+9196	 -6.27336302	 -0.00033650	  0.00020613	  7.27302652	  0.99897216	  0.99945738  0.49326232
+9197	 -6.27336311	 -0.00033646	  0.00020611	  7.27302665	  0.99897228	  0.99945743  0.49326230
+9198	 -6.27336319	 -0.00033642	  0.00020608	  7.27302677	  0.99897239	  0.99945749  0.49326227
+9199	 -6.27336328	 -0.00033639	  0.00020606	  7.27302689	  0.99897250	  0.99945755  0.49326245
+9200	 -6.27336337	 -0.00033635	  0.00020604	  7.27302702	  0.99897261	  0.99945761  0.49326242
+9201	 -6.27336346	 -0.00033631	  0.00020602	  7.27302714	  0.99897272	  0.99945767  0.49326246
+9202	 -6.27336354	 -0.00033628	  0.00020599	  7.27302727	  0.99897283	  0.99945773  0.49326241
+9203	 -6.27336363	 -0.00033624	  0.00020597	  7.27302739	  0.99897295	  0.99945779  0.49326240
+9204	 -6.27336372	 -0.00033620	  0.00020595	  7.27302751	  0.99897306	  0.99945785  0.49326249
+9205	 -6.27336381	 -0.00033617	  0.00020593	  7.27302764	  0.99897317	  0.99945791  0.49326270
+9206	 -6.27336389	 -0.00033613	  0.00020590	  7.27302776	  0.99897328	  0.99945797  0.49326235
+9207	 -6.27336398	 -0.00033609	  0.00020588	  7.27302789	  0.99897339	  0.99945802  0.49326239
+9208	 -6.27336407	 -0.00033606	  0.00020586	  7.27302801	  0.99897350	  0.99945808  0.49326248
+9209	 -6.27336415	 -0.00033602	  0.00020584	  7.27302813	  0.99897362	  0.99945814  0.49326264
+9210	 -6.27336424	 -0.00033598	  0.00020582	  7.27302826	  0.99897373	  0.99945820  0.49326263
+9211	 -6.27336433	 -0.00033595	  0.00020579	  7.27302838	  0.99897384	  0.99945826  0.49326243
+9212	 -6.27336442	 -0.00033591	  0.00020577	  7.27302851	  0.99897395	  0.99945832  0.49326267
+9213	 -6.27336450	 -0.00033587	  0.00020575	  7.27302863	  0.99897406	  0.99945838  0.49326234
+9214	 -6.27336459	 -0.00033584	  0.00020573	  7.27302875	  0.99897417	  0.99945844  0.49326251
+9215	 -6.27336468	 -0.00033580	  0.00020570	  7.27302888	  0.99897428	  0.99945849  0.49326259
+9216	 -6.27336477	 -0.00033577	  0.00020568	  7.27302900	  0.99897439	  0.99945855  0.49326266
+9217	 -6.27336485	 -0.00033573	  0.00020566	  7.27302912	  0.99897451	  0.99945861  0.49326257
+9218	 -6.27336494	 -0.00033569	  0.00020564	  7.27302925	  0.99897462	  0.99945867  0.49326257
+9219	 -6.27336503	 -0.00033566	  0.00020561	  7.27302937	  0.99897473	  0.99945873  0.49326264
+9220	 -6.27336511	 -0.00033562	  0.00020559	  7.27302949	  0.99897484	  0.99945879  0.49326274
+9221	 -6.27336520	 -0.00033558	  0.00020557	  7.27302962	  0.99897495	  0.99945885  0.49326286
+9222	 -6.27336529	 -0.00033555	  0.00020555	  7.27302974	  0.99897506	  0.99945891  0.49326289
+9223	 -6.27336538	 -0.00033551	  0.00020553	  7.27302986	  0.99897517	  0.99945896  0.49326274
+9224	 -6.27336546	 -0.00033547	  0.00020550	  7.27302999	  0.99897528	  0.99945902  0.49326267
+9225	 -6.27336555	 -0.00033544	  0.00020548	  7.27303011	  0.99897540	  0.99945908  0.49326282
+9226	 -6.27336564	 -0.00033540	  0.00020546	  7.27303023	  0.99897551	  0.99945914  0.49326268
+9227	 -6.27336572	 -0.00033537	  0.00020544	  7.27303036	  0.99897562	  0.99945920  0.49326305
+9228	 -6.27336581	 -0.00033533	  0.00020541	  7.27303048	  0.99897573	  0.99945926  0.49326276
+9229	 -6.27336590	 -0.00033529	  0.00020539	  7.27303060	  0.99897584	  0.99945932  0.49326281
+9230	 -6.27336598	 -0.00033526	  0.00020537	  7.27303073	  0.99897595	  0.99945937  0.49326294
+9231	 -6.27336607	 -0.00033522	  0.00020535	  7.27303085	  0.99897606	  0.99945943  0.49326286
+9232	 -6.27336616	 -0.00033518	  0.00020532	  7.27303097	  0.99897617	  0.99945949  0.49326281
+9233	 -6.27336625	 -0.00033515	  0.00020530	  7.27303110	  0.99897628	  0.99945955  0.49326286
+9234	 -6.27336633	 -0.00033511	  0.00020528	  7.27303122	  0.99897639	  0.99945961  0.49326297
+9235	 -6.27336642	 -0.00033508	  0.00020526	  7.27303134	  0.99897650	  0.99945967  0.49326279
+9236	 -6.27336651	 -0.00033504	  0.00020524	  7.27303147	  0.99897662	  0.99945973  0.49326311
+9237	 -6.27336659	 -0.00033500	  0.00020521	  7.27303159	  0.99897673	  0.99945978  0.49326289
+9238	 -6.27336668	 -0.00033497	  0.00020519	  7.27303171	  0.99897684	  0.99945984  0.49326305
+9239	 -6.27336677	 -0.00033493	  0.00020517	  7.27303184	  0.99897695	  0.99945990  0.49326297
+9240	 -6.27336685	 -0.00033489	  0.00020515	  7.27303196	  0.99897706	  0.99945996  0.49326277
+9241	 -6.27336694	 -0.00033486	  0.00020512	  7.27303208	  0.99897717	  0.99946002  0.49326308
+9242	 -6.27336703	 -0.00033482	  0.00020510	  7.27303221	  0.99897728	  0.99946008  0.49326289
+9243	 -6.27336711	 -0.00033479	  0.00020508	  7.27303233	  0.99897739	  0.99946013  0.49326298
+9244	 -6.27336720	 -0.00033475	  0.00020506	  7.27303245	  0.99897750	  0.99946019  0.49326300
+9245	 -6.27336729	 -0.00033471	  0.00020504	  7.27303257	  0.99897761	  0.99946025  0.49326304
+9246	 -6.27336737	 -0.00033468	  0.00020501	  7.27303270	  0.99897772	  0.99946031  0.49326311
+9247	 -6.27336746	 -0.00033464	  0.00020499	  7.27303282	  0.99897783	  0.99946037  0.49326309
+9248	 -6.27336755	 -0.00033460	  0.00020497	  7.27303294	  0.99897794	  0.99946043  0.49326303
+9249	 -6.27336763	 -0.00033457	  0.00020495	  7.27303306	  0.99897805	  0.99946048  0.49326308
+9250	 -6.27336772	 -0.00033453	  0.00020493	  7.27303319	  0.99897816	  0.99946054  0.49326287
+9251	 -6.27336781	 -0.00033450	  0.00020490	  7.27303331	  0.99897827	  0.99946060  0.49326314
+9252	 -6.27336789	 -0.00033446	  0.00020488	  7.27303343	  0.99897839	  0.99946066  0.49326307
+9253	 -6.27336798	 -0.00033442	  0.00020486	  7.27303356	  0.99897850	  0.99946072  0.49326307
+9254	 -6.27336807	 -0.00033439	  0.00020484	  7.27303368	  0.99897861	  0.99946078  0.49326322
+9255	 -6.27336815	 -0.00033435	  0.00020481	  7.27303380	  0.99897872	  0.99946083  0.49326311
+9256	 -6.27336824	 -0.00033432	  0.00020479	  7.27303392	  0.99897883	  0.99946089  0.49326322
+9257	 -6.27336833	 -0.00033428	  0.00020477	  7.27303405	  0.99897894	  0.99946095  0.49326339
+9258	 -6.27336841	 -0.00033424	  0.00020475	  7.27303417	  0.99897905	  0.99946101  0.49326319
+9259	 -6.27336850	 -0.00033421	  0.00020473	  7.27303429	  0.99897916	  0.99946107  0.49326315
+9260	 -6.27336858	 -0.00033417	  0.00020470	  7.27303441	  0.99897927	  0.99946113  0.49326326
+9261	 -6.27336867	 -0.00033413	  0.00020468	  7.27303454	  0.99897938	  0.99946118  0.49326320
+9262	 -6.27336876	 -0.00033410	  0.00020466	  7.27303466	  0.99897949	  0.99946124  0.49326335
+9263	 -6.27336884	 -0.00033406	  0.00020464	  7.27303478	  0.99897960	  0.99946130  0.49326321
+9264	 -6.27336893	 -0.00033403	  0.00020462	  7.27303490	  0.99897971	  0.99946136  0.49326341
+9265	 -6.27336902	 -0.00033399	  0.00020459	  7.27303503	  0.99897982	  0.99946142  0.49326319
+9266	 -6.27336910	 -0.00033395	  0.00020457	  7.27303515	  0.99897993	  0.99946147  0.49326349
+9267	 -6.27336919	 -0.00033392	  0.00020455	  7.27303527	  0.99898004	  0.99946153  0.49326330
+9268	 -6.27336927	 -0.00033388	  0.00020453	  7.27303539	  0.99898015	  0.99946159  0.49326316
+9269	 -6.27336936	 -0.00033385	  0.00020451	  7.27303551	  0.99898026	  0.99946165  0.49326319
+9270	 -6.27336945	 -0.00033381	  0.00020448	  7.27303564	  0.99898037	  0.99946171  0.49326337
+9271	 -6.27336953	 -0.00033377	  0.00020446	  7.27303576	  0.99898048	  0.99946176  0.49326350
+9272	 -6.27336962	 -0.00033374	  0.00020444	  7.27303588	  0.99898059	  0.99946182  0.49326333
+9273	 -6.27336971	 -0.00033370	  0.00020442	  7.27303600	  0.99898070	  0.99946188  0.49326343
+9274	 -6.27336979	 -0.00033367	  0.00020439	  7.27303613	  0.99898081	  0.99946194  0.49326342
+9275	 -6.27336988	 -0.00033363	  0.00020437	  7.27303625	  0.99898092	  0.99946200  0.49326348
+9276	 -6.27336996	 -0.00033359	  0.00020435	  7.27303637	  0.99898103	  0.99946205  0.49326358
+9277	 -6.27337005	 -0.00033356	  0.00020433	  7.27303649	  0.99898114	  0.99946211  0.49326344
+9278	 -6.27337014	 -0.00033352	  0.00020431	  7.27303661	  0.99898125	  0.99946217  0.49326333
+9279	 -6.27337022	 -0.00033349	  0.00020428	  7.27303674	  0.99898136	  0.99946223  0.49326344
+9280	 -6.27337031	 -0.00033345	  0.00020426	  7.27303686	  0.99898147	  0.99946229  0.49326346
+9281	 -6.27337039	 -0.00033342	  0.00020424	  7.27303698	  0.99898158	  0.99946234  0.49326354
+9282	 -6.27337048	 -0.00033338	  0.00020422	  7.27303710	  0.99898169	  0.99946240  0.49326336
+9283	 -6.27337057	 -0.00033334	  0.00020420	  7.27303722	  0.99898180	  0.99946246  0.49326349
+9284	 -6.27337065	 -0.00033331	  0.00020417	  7.27303734	  0.99898191	  0.99946252  0.49326348
+9285	 -6.27337074	 -0.00033327	  0.00020415	  7.27303747	  0.99898202	  0.99946258  0.49326342
+9286	 -6.27337082	 -0.00033324	  0.00020413	  7.27303759	  0.99898213	  0.99946263  0.49326343
+9287	 -6.27337091	 -0.00033320	  0.00020411	  7.27303771	  0.99898224	  0.99946269  0.49326362
+9288	 -6.27337100	 -0.00033316	  0.00020409	  7.27303783	  0.99898234	  0.99946275  0.49326356
+9289	 -6.27337108	 -0.00033313	  0.00020406	  7.27303795	  0.99898245	  0.99946281  0.49326362
+9290	 -6.27337117	 -0.00033309	  0.00020404	  7.27303808	  0.99898256	  0.99946287  0.49326353
+9291	 -6.27337125	 -0.00033306	  0.00020402	  7.27303820	  0.99898267	  0.99946292  0.49326384
+9292	 -6.27337134	 -0.00033302	  0.00020400	  7.27303832	  0.99898278	  0.99946298  0.49326355
+9293	 -6.27337142	 -0.00033298	  0.00020398	  7.27303844	  0.99898289	  0.99946304  0.49326361
+9294	 -6.27337151	 -0.00033295	  0.00020395	  7.27303856	  0.99898300	  0.99946310  0.49326362
+9295	 -6.27337160	 -0.00033291	  0.00020393	  7.27303868	  0.99898311	  0.99946315  0.49326349
+9296	 -6.27337168	 -0.00033288	  0.00020391	  7.27303880	  0.99898322	  0.99946321  0.49326369
+9297	 -6.27337177	 -0.00033284	  0.00020389	  7.27303893	  0.99898333	  0.99946327  0.49326369
+9298	 -6.27337185	 -0.00033281	  0.00020387	  7.27303905	  0.99898344	  0.99946333  0.49326369
+9299	 -6.27337194	 -0.00033277	  0.00020385	  7.27303917	  0.99898355	  0.99946338  0.49326367
+9300	 -6.27337202	 -0.00033273	  0.00020382	  7.27303929	  0.99898366	  0.99946344  0.49326359
+9301	 -6.27337211	 -0.00033270	  0.00020380	  7.27303941	  0.99898377	  0.99946350  0.49326376
+9302	 -6.27337220	 -0.00033266	  0.00020378	  7.27303953	  0.99898388	  0.99946356  0.49326382
+9303	 -6.27337228	 -0.00033263	  0.00020376	  7.27303965	  0.99898399	  0.99946362  0.49326384
+9304	 -6.27337237	 -0.00033259	  0.00020374	  7.27303978	  0.99898409	  0.99946367  0.49326379
+9305	 -6.27337245	 -0.00033256	  0.00020371	  7.27303990	  0.99898420	  0.99946373  0.49326389
+9306	 -6.27337254	 -0.00033252	  0.00020369	  7.27304002	  0.99898431	  0.99946379  0.49326390
+9307	 -6.27337262	 -0.00033248	  0.00020367	  7.27304014	  0.99898442	  0.99946385  0.49326379
+9308	 -6.27337271	 -0.00033245	  0.00020365	  7.27304026	  0.99898453	  0.99946390  0.49326384
+9309	 -6.27337279	 -0.00033241	  0.00020363	  7.27304038	  0.99898464	  0.99946396  0.49326381
+9310	 -6.27337288	 -0.00033238	  0.00020360	  7.27304050	  0.99898475	  0.99946402  0.49326372
+9311	 -6.27337297	 -0.00033234	  0.00020358	  7.27304062	  0.99898486	  0.99946408  0.49326377
+9312	 -6.27337305	 -0.00033231	  0.00020356	  7.27304075	  0.99898497	  0.99946413  0.49326406
+9313	 -6.27337314	 -0.00033227	  0.00020354	  7.27304087	  0.99898508	  0.99946419  0.49326380
+9314	 -6.27337322	 -0.00033223	  0.00020352	  7.27304099	  0.99898519	  0.99946425  0.49326407
+9315	 -6.27337331	 -0.00033220	  0.00020350	  7.27304111	  0.99898529	  0.99946431  0.49326377
+9316	 -6.27337339	 -0.00033216	  0.00020347	  7.27304123	  0.99898540	  0.99946436  0.49326399
+9317	 -6.27337348	 -0.00033213	  0.00020345	  7.27304135	  0.99898551	  0.99946442  0.49326392
+9318	 -6.27337356	 -0.00033209	  0.00020343	  7.27304147	  0.99898562	  0.99946448  0.49326402
+9319	 -6.27337365	 -0.00033206	  0.00020341	  7.27304159	  0.99898573	  0.99946454  0.49326407
+9320	 -6.27337373	 -0.00033202	  0.00020339	  7.27304171	  0.99898584	  0.99946459  0.49326397
+9321	 -6.27337382	 -0.00033198	  0.00020336	  7.27304183	  0.99898595	  0.99946465  0.49326388
+9322	 -6.27337390	 -0.00033195	  0.00020334	  7.27304196	  0.99898606	  0.99946471  0.49326400
+9323	 -6.27337399	 -0.00033191	  0.00020332	  7.27304208	  0.99898616	  0.99946477  0.49326405
+9324	 -6.27337407	 -0.00033188	  0.00020330	  7.27304220	  0.99898627	  0.99946482  0.49326405
+9325	 -6.27337416	 -0.00033184	  0.00020328	  7.27304232	  0.99898638	  0.99946488  0.49326395
+9326	 -6.27337425	 -0.00033181	  0.00020326	  7.27304244	  0.99898649	  0.99946494  0.49326406
+9327	 -6.27337433	 -0.00033177	  0.00020323	  7.27304256	  0.99898660	  0.99946500  0.49326412
+9328	 -6.27337442	 -0.00033174	  0.00020321	  7.27304268	  0.99898671	  0.99946505  0.49326418
+9329	 -6.27337450	 -0.00033170	  0.00020319	  7.27304280	  0.99898682	  0.99946511  0.49326405
+9330	 -6.27337459	 -0.00033166	  0.00020317	  7.27304292	  0.99898693	  0.99946517  0.49326394
+9331	 -6.27337467	 -0.00033163	  0.00020315	  7.27304304	  0.99898703	  0.99946522  0.49326407
+9332	 -6.27337476	 -0.00033159	  0.00020312	  7.27304316	  0.99898714	  0.99946528  0.49326381
+9333	 -6.27337484	 -0.00033156	  0.00020310	  7.27304328	  0.99898725	  0.99946534  0.49326400
+9334	 -6.27337493	 -0.00033152	  0.00020308	  7.27304340	  0.99898736	  0.99946540  0.49326414
+9335	 -6.27337501	 -0.00033149	  0.00020306	  7.27304352	  0.99898747	  0.99946545  0.49326426
+9336	 -6.27337510	 -0.00033145	  0.00020304	  7.27304364	  0.99898758	  0.99946551  0.49326422
+9337	 -6.27337518	 -0.00033142	  0.00020302	  7.27304376	  0.99898768	  0.99946557  0.49326412
+9338	 -6.27337527	 -0.00033138	  0.00020299	  7.27304389	  0.99898779	  0.99946563  0.49326410
+9339	 -6.27337535	 -0.00033135	  0.00020297	  7.27304401	  0.99898790	  0.99946568  0.49326415
+9340	 -6.27337544	 -0.00033131	  0.00020295	  7.27304413	  0.99898801	  0.99946574  0.49326422
+9341	 -6.27337552	 -0.00033127	  0.00020293	  7.27304425	  0.99898812	  0.99946580  0.49326416
+9342	 -6.27337561	 -0.00033124	  0.00020291	  7.27304437	  0.99898823	  0.99946585  0.49326449
+9343	 -6.27337569	 -0.00033120	  0.00020289	  7.27304449	  0.99898833	  0.99946591  0.49326425
+9344	 -6.27337578	 -0.00033117	  0.00020286	  7.27304461	  0.99898844	  0.99946597  0.49326435
+9345	 -6.27337586	 -0.00033113	  0.00020284	  7.27304473	  0.99898855	  0.99946603  0.49326445
+9346	 -6.27337594	 -0.00033110	  0.00020282	  7.27304485	  0.99898866	  0.99946608  0.49326455
+9347	 -6.27337603	 -0.00033106	  0.00020280	  7.27304497	  0.99898877	  0.99946614  0.49326433
+9348	 -6.27337611	 -0.00033103	  0.00020278	  7.27304509	  0.99898888	  0.99946620  0.49326418
+9349	 -6.27337620	 -0.00033099	  0.00020275	  7.27304521	  0.99898898	  0.99946625  0.49326429
+9350	 -6.27337628	 -0.00033096	  0.00020273	  7.27304533	  0.99898909	  0.99946631  0.49326433
+9351	 -6.27337637	 -0.00033092	  0.00020271	  7.27304545	  0.99898920	  0.99946637  0.49326438
+9352	 -6.27337645	 -0.00033088	  0.00020269	  7.27304557	  0.99898931	  0.99946643  0.49326440
+9353	 -6.27337654	 -0.00033085	  0.00020267	  7.27304569	  0.99898942	  0.99946648  0.49326448
+9354	 -6.27337662	 -0.00033081	  0.00020265	  7.27304581	  0.99898952	  0.99946654  0.49326440
+9355	 -6.27337671	 -0.00033078	  0.00020262	  7.27304593	  0.99898963	  0.99946660  0.49326441
+9356	 -6.27337679	 -0.00033074	  0.00020260	  7.27304605	  0.99898974	  0.99946665  0.49326439
+9357	 -6.27337688	 -0.00033071	  0.00020258	  7.27304617	  0.99898985	  0.99946671  0.49326444
+9358	 -6.27337696	 -0.00033067	  0.00020256	  7.27304629	  0.99898996	  0.99946677  0.49326437
+9359	 -6.27337705	 -0.00033064	  0.00020254	  7.27304641	  0.99899006	  0.99946682  0.49326463
+9360	 -6.27337713	 -0.00033060	  0.00020252	  7.27304653	  0.99899017	  0.99946688  0.49326433
+9361	 -6.27337721	 -0.00033057	  0.00020250	  7.27304665	  0.99899028	  0.99946694  0.49326452
+9362	 -6.27337730	 -0.00033053	  0.00020247	  7.27304677	  0.99899039	  0.99946700  0.49326464
+9363	 -6.27337738	 -0.00033050	  0.00020245	  7.27304689	  0.99899050	  0.99946705  0.49326462
+9364	 -6.27337747	 -0.00033046	  0.00020243	  7.27304701	  0.99899060	  0.99946711  0.49326446
+9365	 -6.27337755	 -0.00033043	  0.00020241	  7.27304713	  0.99899071	  0.99946717  0.49326448
+9366	 -6.27337764	 -0.00033039	  0.00020239	  7.27304725	  0.99899082	  0.99946722  0.49326479
+9367	 -6.27337772	 -0.00033035	  0.00020237	  7.27304737	  0.99899093	  0.99946728  0.49326445
+9368	 -6.27337781	 -0.00033032	  0.00020234	  7.27304749	  0.99899103	  0.99946734  0.49326446
+9369	 -6.27337789	 -0.00033028	  0.00020232	  7.27304761	  0.99899114	  0.99946739  0.49326446
+9370	 -6.27337797	 -0.00033025	  0.00020230	  7.27304773	  0.99899125	  0.99946745  0.49326456
+9371	 -6.27337806	 -0.00033021	  0.00020228	  7.27304785	  0.99899136	  0.99946751  0.49326462
+9372	 -6.27337814	 -0.00033018	  0.00020226	  7.27304796	  0.99899146	  0.99946756  0.49326466
+9373	 -6.27337823	 -0.00033014	  0.00020224	  7.27304808	  0.99899157	  0.99946762  0.49326469
+9374	 -6.27337831	 -0.00033011	  0.00020221	  7.27304820	  0.99899168	  0.99946768  0.49326455
+9375	 -6.27337840	 -0.00033007	  0.00020219	  7.27304832	  0.99899179	  0.99946773  0.49326445
+9376	 -6.27337848	 -0.00033004	  0.00020217	  7.27304844	  0.99899190	  0.99946779  0.49326466
+9377	 -6.27337856	 -0.00033000	  0.00020215	  7.27304856	  0.99899200	  0.99946785  0.49326467
+9378	 -6.27337865	 -0.00032997	  0.00020213	  7.27304868	  0.99899211	  0.99946790  0.49326472
+9379	 -6.27337873	 -0.00032993	  0.00020211	  7.27304880	  0.99899222	  0.99946796  0.49326465
+9380	 -6.27337882	 -0.00032990	  0.00020208	  7.27304892	  0.99899233	  0.99946802  0.49326487
+9381	 -6.27337890	 -0.00032986	  0.00020206	  7.27304904	  0.99899243	  0.99946807  0.49326453
+9382	 -6.27337899	 -0.00032983	  0.00020204	  7.27304916	  0.99899254	  0.99946813  0.49326462
+9383	 -6.27337907	 -0.00032979	  0.00020202	  7.27304928	  0.99899265	  0.99946819  0.49326466
+9384	 -6.27337915	 -0.00032976	  0.00020200	  7.27304940	  0.99899275	  0.99946824  0.49326470
+9385	 -6.27337924	 -0.00032972	  0.00020198	  7.27304952	  0.99899286	  0.99946830  0.49326485
+9386	 -6.27337932	 -0.00032969	  0.00020196	  7.27304964	  0.99899297	  0.99946836  0.49326493
+9387	 -6.27337941	 -0.00032965	  0.00020193	  7.27304976	  0.99899308	  0.99946841  0.49326472
+9388	 -6.27337949	 -0.00032962	  0.00020191	  7.27304987	  0.99899318	  0.99946847  0.49326466
+9389	 -6.27337957	 -0.00032958	  0.00020189	  7.27304999	  0.99899329	  0.99946853  0.49326475
+9390	 -6.27337966	 -0.00032955	  0.00020187	  7.27305011	  0.99899340	  0.99946858  0.49326474
+9391	 -6.27337974	 -0.00032951	  0.00020185	  7.27305023	  0.99899351	  0.99946864  0.49326494
+9392	 -6.27337983	 -0.00032948	  0.00020183	  7.27305035	  0.99899361	  0.99946870  0.49326475
+9393	 -6.27337991	 -0.00032944	  0.00020181	  7.27305047	  0.99899372	  0.99946875  0.49326504
+9394	 -6.27337999	 -0.00032941	  0.00020178	  7.27305059	  0.99899383	  0.99946881  0.49326510
+9395	 -6.27338008	 -0.00032937	  0.00020176	  7.27305071	  0.99899393	  0.99946887  0.49326506
+9396	 -6.27338016	 -0.00032934	  0.00020174	  7.27305083	  0.99899404	  0.99946892  0.49326491
+9397	 -6.27338025	 -0.00032930	  0.00020172	  7.27305095	  0.99899415	  0.99946898  0.49326495
+9398	 -6.27338033	 -0.00032927	  0.00020170	  7.27305106	  0.99899425	  0.99946904  0.49326488
+9399	 -6.27338041	 -0.00032923	  0.00020168	  7.27305118	  0.99899436	  0.99946909  0.49326492
+9400	 -6.27338050	 -0.00032920	  0.00020165	  7.27305130	  0.99899447	  0.99946915  0.49326492
+9401	 -6.27338058	 -0.00032916	  0.00020163	  7.27305142	  0.99899458	  0.99946921  0.49326493
+9402	 -6.27338067	 -0.00032913	  0.00020161	  7.27305154	  0.99899468	  0.99946926  0.49326498
+9403	 -6.27338075	 -0.00032909	  0.00020159	  7.27305166	  0.99899479	  0.99946932  0.49326509
+9404	 -6.27338083	 -0.00032906	  0.00020157	  7.27305178	  0.99899490	  0.99946938  0.49326511
+9405	 -6.27338092	 -0.00032902	  0.00020155	  7.27305190	  0.99899500	  0.99946943  0.49326491
+9406	 -6.27338100	 -0.00032899	  0.00020153	  7.27305201	  0.99899511	  0.99946949  0.49326497
+9407	 -6.27338108	 -0.00032895	  0.00020150	  7.27305213	  0.99899522	  0.99946954  0.49326517
+9408	 -6.27338117	 -0.00032892	  0.00020148	  7.27305225	  0.99899532	  0.99946960  0.49326501
+9409	 -6.27338125	 -0.00032888	  0.00020146	  7.27305237	  0.99899543	  0.99946966  0.49326506
+9410	 -6.27338134	 -0.00032885	  0.00020144	  7.27305249	  0.99899554	  0.99946971  0.49326507
+9411	 -6.27338142	 -0.00032881	  0.00020142	  7.27305261	  0.99899564	  0.99946977  0.49326497
+9412	 -6.27338150	 -0.00032878	  0.00020140	  7.27305273	  0.99899575	  0.99946983  0.49326508
+9413	 -6.27338159	 -0.00032874	  0.00020138	  7.27305284	  0.99899586	  0.99946988  0.49326522
+9414	 -6.27338167	 -0.00032871	  0.00020135	  7.27305296	  0.99899596	  0.99946994  0.49326525
+9415	 -6.27338175	 -0.00032867	  0.00020133	  7.27305308	  0.99899607	  0.99946999  0.49326527
+9416	 -6.27338184	 -0.00032864	  0.00020131	  7.27305320	  0.99899618	  0.99947005  0.49326512
+9417	 -6.27338192	 -0.00032860	  0.00020129	  7.27305332	  0.99899628	  0.99947011  0.49326544
+9418	 -6.27338200	 -0.00032857	  0.00020127	  7.27305344	  0.99899639	  0.99947016  0.49326511
+9419	 -6.27338209	 -0.00032853	  0.00020125	  7.27305356	  0.99899650	  0.99947022  0.49326525
+9420	 -6.27338217	 -0.00032850	  0.00020123	  7.27305367	  0.99899660	  0.99947028  0.49326517
+9421	 -6.27338225	 -0.00032846	  0.00020121	  7.27305379	  0.99899671	  0.99947033  0.49326515
+9422	 -6.27338234	 -0.00032843	  0.00020118	  7.27305391	  0.99899682	  0.99947039  0.49326512
+9423	 -6.27338242	 -0.00032839	  0.00020116	  7.27305403	  0.99899692	  0.99947045  0.49326510
+9424	 -6.27338250	 -0.00032836	  0.00020114	  7.27305415	  0.99899703	  0.99947050  0.49326538
+9425	 -6.27338259	 -0.00032832	  0.00020112	  7.27305427	  0.99899714	  0.99947056  0.49326526
+9426	 -6.27338267	 -0.00032829	  0.00020110	  7.27305438	  0.99899724	  0.99947061  0.49326555
+9427	 -6.27338275	 -0.00032825	  0.00020108	  7.27305450	  0.99899735	  0.99947067  0.49326559
+9428	 -6.27338284	 -0.00032822	  0.00020106	  7.27305462	  0.99899745	  0.99947073  0.49326528
+9429	 -6.27338292	 -0.00032818	  0.00020103	  7.27305474	  0.99899756	  0.99947078  0.49326542
+9430	 -6.27338300	 -0.00032815	  0.00020101	  7.27305486	  0.99899767	  0.99947084  0.49326519
+9431	 -6.27338309	 -0.00032811	  0.00020099	  7.27305497	  0.99899777	  0.99947089  0.49326536
+9432	 -6.27338317	 -0.00032808	  0.00020097	  7.27305509	  0.99899788	  0.99947095  0.49326533
+9433	 -6.27338325	 -0.00032804	  0.00020095	  7.27305521	  0.99899799	  0.99947101  0.49326540
+9434	 -6.27338334	 -0.00032801	  0.00020093	  7.27305533	  0.99899809	  0.99947106  0.49326552
+9435	 -6.27338342	 -0.00032797	  0.00020091	  7.27305545	  0.99899820	  0.99947112  0.49326543
+9436	 -6.27338350	 -0.00032794	  0.00020089	  7.27305556	  0.99899830	  0.99947117  0.49326548
+9437	 -6.27338359	 -0.00032791	  0.00020086	  7.27305568	  0.99899841	  0.99947123  0.49326555
+9438	 -6.27338367	 -0.00032787	  0.00020084	  7.27305580	  0.99899852	  0.99947129  0.49326550
+9439	 -6.27338375	 -0.00032784	  0.00020082	  7.27305592	  0.99899862	  0.99947134  0.49326539
+9440	 -6.27338384	 -0.00032780	  0.00020080	  7.27305604	  0.99899873	  0.99947140  0.49326537
+9441	 -6.27338392	 -0.00032777	  0.00020078	  7.27305615	  0.99899884	  0.99947145  0.49326540
+9442	 -6.27338400	 -0.00032773	  0.00020076	  7.27305627	  0.99899894	  0.99947151  0.49326552
+9443	 -6.27338409	 -0.00032770	  0.00020074	  7.27305639	  0.99899905	  0.99947157  0.49326544
+9444	 -6.27338417	 -0.00032766	  0.00020072	  7.27305651	  0.99899915	  0.99947162  0.49326541
+9445	 -6.27338425	 -0.00032763	  0.00020069	  7.27305662	  0.99899926	  0.99947168  0.49326544
+9446	 -6.27338433	 -0.00032759	  0.00020067	  7.27305674	  0.99899937	  0.99947173  0.49326555
+9447	 -6.27338442	 -0.00032756	  0.00020065	  7.27305686	  0.99899947	  0.99947179  0.49326592
+9448	 -6.27338450	 -0.00032752	  0.00020063	  7.27305698	  0.99899958	  0.99947185  0.49326555
+9449	 -6.27338458	 -0.00032749	  0.00020061	  7.27305709	  0.99899968	  0.99947190  0.49326556
+9450	 -6.27338467	 -0.00032745	  0.00020059	  7.27305721	  0.99899979	  0.99947196  0.49326577
+9451	 -6.27338475	 -0.00032742	  0.00020057	  7.27305733	  0.99899989	  0.99947201  0.49326572
+9452	 -6.27338483	 -0.00032739	  0.00020055	  7.27305745	  0.99900000	  0.99947207  0.49326564
+9453	 -6.27338492	 -0.00032735	  0.00020052	  7.27305756	  0.99900011	  0.99947213  0.49326574
+9454	 -6.27338500	 -0.00032732	  0.00020050	  7.27305768	  0.99900021	  0.99947218  0.49326570
+9455	 -6.27338508	 -0.00032728	  0.00020048	  7.27305780	  0.99900032	  0.99947224  0.49326585
+9456	 -6.27338516	 -0.00032725	  0.00020046	  7.27305792	  0.99900042	  0.99947229  0.49326561
+9457	 -6.27338525	 -0.00032721	  0.00020044	  7.27305804	  0.99900053	  0.99947235  0.49326554
+9458	 -6.27338533	 -0.00032718	  0.00020042	  7.27305815	  0.99900063	  0.99947240  0.49326565
+9459	 -6.27338541	 -0.00032714	  0.00020040	  7.27305827	  0.99900074	  0.99947246  0.49326560
+9460	 -6.27338550	 -0.00032711	  0.00020038	  7.27305839	  0.99900085	  0.99947252  0.49326561
+9461	 -6.27338558	 -0.00032707	  0.00020035	  7.27305850	  0.99900095	  0.99947257  0.49326588
+9462	 -6.27338566	 -0.00032704	  0.00020033	  7.27305862	  0.99900106	  0.99947263  0.49326567
+9463	 -6.27338574	 -0.00032700	  0.00020031	  7.27305874	  0.99900116	  0.99947268  0.49326573
+9464	 -6.27338583	 -0.00032697	  0.00020029	  7.27305886	  0.99900127	  0.99947274  0.49326588
+9465	 -6.27338591	 -0.00032694	  0.00020027	  7.27305897	  0.99900137	  0.99947279  0.49326587
+9466	 -6.27338599	 -0.00032690	  0.00020025	  7.27305909	  0.99900148	  0.99947285  0.49326591
+9467	 -6.27338607	 -0.00032687	  0.00020023	  7.27305921	  0.99900158	  0.99947291  0.49326568
+9468	 -6.27338616	 -0.00032683	  0.00020021	  7.27305932	  0.99900169	  0.99947296  0.49326586
+9469	 -6.27338624	 -0.00032680	  0.00020019	  7.27305944	  0.99900180	  0.99947302  0.49326595
+9470	 -6.27338632	 -0.00032676	  0.00020016	  7.27305956	  0.99900190	  0.99947307  0.49326594
+9471	 -6.27338640	 -0.00032673	  0.00020014	  7.27305968	  0.99900201	  0.99947313  0.49326576
+9472	 -6.27338649	 -0.00032669	  0.00020012	  7.27305979	  0.99900211	  0.99947318  0.49326600
+9473	 -6.27338657	 -0.00032666	  0.00020010	  7.27305991	  0.99900222	  0.99947324  0.49326567
+9474	 -6.27338665	 -0.00032663	  0.00020008	  7.27306003	  0.99900232	  0.99947330  0.49326591
+9475	 -6.27338674	 -0.00032659	  0.00020006	  7.27306014	  0.99900243	  0.99947335  0.49326584
+9476	 -6.27338682	 -0.00032656	  0.00020004	  7.27306026	  0.99900253	  0.99947341  0.49326591
+9477	 -6.27338690	 -0.00032652	  0.00020002	  7.27306038	  0.99900264	  0.99947346  0.49326598
+9478	 -6.27338698	 -0.00032649	  0.00020000	  7.27306050	  0.99900274	  0.99947352  0.49326605
+9479	 -6.27338706	 -0.00032645	  0.00019997	  7.27306061	  0.99900285	  0.99947357  0.49326584
+9480	 -6.27338715	 -0.00032642	  0.00019995	  7.27306073	  0.99900295	  0.99947363  0.49326610
+9481	 -6.27338723	 -0.00032638	  0.00019993	  7.27306085	  0.99900306	  0.99947368  0.49326584
+9482	 -6.27338731	 -0.00032635	  0.00019991	  7.27306096	  0.99900316	  0.99947374  0.49326595
+9483	 -6.27338739	 -0.00032632	  0.00019989	  7.27306108	  0.99900327	  0.99947379  0.49326574
+9484	 -6.27338748	 -0.00032628	  0.00019987	  7.27306120	  0.99900337	  0.99947385  0.49326593
+9485	 -6.27338756	 -0.00032625	  0.00019985	  7.27306131	  0.99900348	  0.99947391  0.49326617
+9486	 -6.27338764	 -0.00032621	  0.00019983	  7.27306143	  0.99900358	  0.99947396  0.49326608
+9487	 -6.27338772	 -0.00032618	  0.00019981	  7.27306155	  0.99900369	  0.99947402  0.49326601
+9488	 -6.27338781	 -0.00032614	  0.00019978	  7.27306166	  0.99900379	  0.99947407  0.49326595
+9489	 -6.27338789	 -0.00032611	  0.00019976	  7.27306178	  0.99900390	  0.99947413  0.49326615
+9490	 -6.27338797	 -0.00032607	  0.00019974	  7.27306190	  0.99900400	  0.99947418  0.49326594
+9491	 -6.27338805	 -0.00032604	  0.00019972	  7.27306201	  0.99900411	  0.99947424  0.49326623
+9492	 -6.27338814	 -0.00032601	  0.00019970	  7.27306213	  0.99900421	  0.99947429  0.49326628
+9493	 -6.27338822	 -0.00032597	  0.00019968	  7.27306225	  0.99900432	  0.99947435  0.49326618
+9494	 -6.27338830	 -0.00032594	  0.00019966	  7.27306236	  0.99900442	  0.99947440  0.49326621
+9495	 -6.27338838	 -0.00032590	  0.00019964	  7.27306248	  0.99900453	  0.99947446  0.49326598
+9496	 -6.27338846	 -0.00032587	  0.00019962	  7.27306260	  0.99900463	  0.99947452  0.49326615
+9497	 -6.27338855	 -0.00032583	  0.00019960	  7.27306271	  0.99900474	  0.99947457  0.49326647
+9498	 -6.27338863	 -0.00032580	  0.00019957	  7.27306283	  0.99900484	  0.99947463  0.49326621
+9499	 -6.27338871	 -0.00032577	  0.00019955	  7.27306294	  0.99900495	  0.99947468  0.49326643
+9500	 -6.27338879	 -0.00032573	  0.00019953	  7.27306306	  0.99900505	  0.99947474  0.49326629
+9501	 -6.27338887	 -0.00032570	  0.00019951	  7.27306318	  0.99900516	  0.99947479  0.49326635
+9502	 -6.27338896	 -0.00032566	  0.00019949	  7.27306329	  0.99900526	  0.99947485  0.49326632
+9503	 -6.27338904	 -0.00032563	  0.00019947	  7.27306341	  0.99900537	  0.99947490  0.49326626
+9504	 -6.27338912	 -0.00032559	  0.00019945	  7.27306353	  0.99900547	  0.99947496  0.49326639
+9505	 -6.27338920	 -0.00032556	  0.00019943	  7.27306364	  0.99900558	  0.99947501  0.49326627
+9506	 -6.27338928	 -0.00032553	  0.00019941	  7.27306376	  0.99900568	  0.99947507  0.49326645
+9507	 -6.27338937	 -0.00032549	  0.00019939	  7.27306387	  0.99900578	  0.99947512  0.49326623
+9508	 -6.27338945	 -0.00032546	  0.00019936	  7.27306399	  0.99900589	  0.99947518  0.49326607
+9509	 -6.27338953	 -0.00032542	  0.00019934	  7.27306411	  0.99900599	  0.99947523  0.49326641
+9510	 -6.27338961	 -0.00032539	  0.00019932	  7.27306422	  0.99900610	  0.99947529  0.49326644
+9511	 -6.27338969	 -0.00032536	  0.00019930	  7.27306434	  0.99900620	  0.99947534  0.49326635
+9512	 -6.27338978	 -0.00032532	  0.00019928	  7.27306446	  0.99900631	  0.99947540  0.49326617
+9513	 -6.27338986	 -0.00032529	  0.00019926	  7.27306457	  0.99900641	  0.99947545  0.49326647
+9514	 -6.27338994	 -0.00032525	  0.00019924	  7.27306469	  0.99900652	  0.99947551  0.49326638
+9515	 -6.27339002	 -0.00032522	  0.00019922	  7.27306480	  0.99900662	  0.99947556  0.49326625
+9516	 -6.27339010	 -0.00032518	  0.00019920	  7.27306492	  0.99900673	  0.99947562  0.49326654
+9517	 -6.27339019	 -0.00032515	  0.00019918	  7.27306504	  0.99900683	  0.99947567  0.49326643
+9518	 -6.27339027	 -0.00032512	  0.00019915	  7.27306515	  0.99900693	  0.99947573  0.49326639
+9519	 -6.27339035	 -0.00032508	  0.00019913	  7.27306527	  0.99900704	  0.99947578  0.49326643
+9520	 -6.27339043	 -0.00032505	  0.00019911	  7.27306538	  0.99900714	  0.99947584  0.49326613
+9521	 -6.27339051	 -0.00032501	  0.00019909	  7.27306550	  0.99900725	  0.99947589  0.49326635
+9522	 -6.27339059	 -0.00032498	  0.00019907	  7.27306561	  0.99900735	  0.99947595  0.49326654
+9523	 -6.27339068	 -0.00032495	  0.00019905	  7.27306573	  0.99900746	  0.99947600  0.49326649
+9524	 -6.27339076	 -0.00032491	  0.00019903	  7.27306585	  0.99900756	  0.99947606  0.49326645
+9525	 -6.27339084	 -0.00032488	  0.00019901	  7.27306596	  0.99900766	  0.99947611  0.49326635
+9526	 -6.27339092	 -0.00032484	  0.00019899	  7.27306608	  0.99900777	  0.99947617  0.49326646
+9527	 -6.27339100	 -0.00032481	  0.00019897	  7.27306619	  0.99900787	  0.99947622  0.49326660
+9528	 -6.27339108	 -0.00032477	  0.00019895	  7.27306631	  0.99900798	  0.99947628  0.49326653
+9529	 -6.27339117	 -0.00032474	  0.00019892	  7.27306642	  0.99900808	  0.99947633  0.49326655
+9530	 -6.27339125	 -0.00032471	  0.00019890	  7.27306654	  0.99900818	  0.99947639  0.49326642
+9531	 -6.27339133	 -0.00032467	  0.00019888	  7.27306666	  0.99900829	  0.99947644  0.49326648
+9532	 -6.27339141	 -0.00032464	  0.00019886	  7.27306677	  0.99900839	  0.99947650  0.49326679
+9533	 -6.27339149	 -0.00032460	  0.00019884	  7.27306689	  0.99900850	  0.99947655  0.49326686
+9534	 -6.27339157	 -0.00032457	  0.00019882	  7.27306700	  0.99900860	  0.99947661  0.49326656
+9535	 -6.27339165	 -0.00032454	  0.00019880	  7.27306712	  0.99900870	  0.99947666  0.49326662
+9536	 -6.27339174	 -0.00032450	  0.00019878	  7.27306723	  0.99900881	  0.99947672  0.49326679
+9537	 -6.27339182	 -0.00032447	  0.00019876	  7.27306735	  0.99900891	  0.99947677  0.49326673
+9538	 -6.27339190	 -0.00032443	  0.00019874	  7.27306746	  0.99900902	  0.99947683  0.49326675
+9539	 -6.27339198	 -0.00032440	  0.00019872	  7.27306758	  0.99900912	  0.99947688  0.49326682
+9540	 -6.27339206	 -0.00032437	  0.00019870	  7.27306770	  0.99900922	  0.99947694  0.49326647
+9541	 -6.27339214	 -0.00032433	  0.00019867	  7.27306781	  0.99900933	  0.99947699  0.49326653
+9542	 -6.27339222	 -0.00032430	  0.00019865	  7.27306793	  0.99900943	  0.99947705  0.49326669
+9543	 -6.27339231	 -0.00032426	  0.00019863	  7.27306804	  0.99900954	  0.99947710  0.49326657
+9544	 -6.27339239	 -0.00032423	  0.00019861	  7.27306816	  0.99900964	  0.99947716  0.49326679
+9545	 -6.27339247	 -0.00032420	  0.00019859	  7.27306827	  0.99900974	  0.99947721  0.49326690
+9546	 -6.27339255	 -0.00032416	  0.00019857	  7.27306839	  0.99900985	  0.99947727  0.49326680
+9547	 -6.27339263	 -0.00032413	  0.00019855	  7.27306850	  0.99900995	  0.99947732  0.49326670
+9548	 -6.27339271	 -0.00032409	  0.00019853	  7.27306862	  0.99901005	  0.99947738  0.49326690
+9549	 -6.27339279	 -0.00032406	  0.00019851	  7.27306873	  0.99901016	  0.99947743  0.49326682
+9550	 -6.27339287	 -0.00032403	  0.00019849	  7.27306885	  0.99901026	  0.99947749  0.49326670
+9551	 -6.27339296	 -0.00032399	  0.00019847	  7.27306896	  0.99901036	  0.99947754  0.49326689
+9552	 -6.27339304	 -0.00032396	  0.00019845	  7.27306908	  0.99901047	  0.99947760  0.49326683
+9553	 -6.27339312	 -0.00032393	  0.00019843	  7.27306919	  0.99901057	  0.99947765  0.49326682
+9554	 -6.27339320	 -0.00032389	  0.00019840	  7.27306931	  0.99901068	  0.99947770  0.49326694
+9555	 -6.27339328	 -0.00032386	  0.00019838	  7.27306942	  0.99901078	  0.99947776  0.49326682
+9556	 -6.27339336	 -0.00032382	  0.00019836	  7.27306954	  0.99901088	  0.99947781  0.49326696
+9557	 -6.27339344	 -0.00032379	  0.00019834	  7.27306965	  0.99901099	  0.99947787  0.49326703
+9558	 -6.27339352	 -0.00032376	  0.00019832	  7.27306977	  0.99901109	  0.99947792  0.49326705
+9559	 -6.27339360	 -0.00032372	  0.00019830	  7.27306988	  0.99901119	  0.99947798  0.49326683
+9560	 -6.27339369	 -0.00032369	  0.00019828	  7.27307000	  0.99901130	  0.99947803  0.49326692
+9561	 -6.27339377	 -0.00032365	  0.00019826	  7.27307011	  0.99901140	  0.99947809  0.49326694
+9562	 -6.27339385	 -0.00032362	  0.00019824	  7.27307023	  0.99901150	  0.99947814  0.49326688
+9563	 -6.27339393	 -0.00032359	  0.00019822	  7.27307034	  0.99901161	  0.99947820  0.49326687
+9564	 -6.27339401	 -0.00032355	  0.00019820	  7.27307046	  0.99901171	  0.99947825  0.49326697
+9565	 -6.27339409	 -0.00032352	  0.00019818	  7.27307057	  0.99901181	  0.99947830  0.49326717
+9566	 -6.27339417	 -0.00032349	  0.00019816	  7.27307069	  0.99901192	  0.99947836  0.49326712
+9567	 -6.27339425	 -0.00032345	  0.00019813	  7.27307080	  0.99901202	  0.99947841  0.49326703
+9568	 -6.27339433	 -0.00032342	  0.00019811	  7.27307092	  0.99901212	  0.99947847  0.49326706
+9569	 -6.27339441	 -0.00032338	  0.00019809	  7.27307103	  0.99901223	  0.99947852  0.49326716
+9570	 -6.27339450	 -0.00032335	  0.00019807	  7.27307115	  0.99901233	  0.99947858  0.49326689
+9571	 -6.27339458	 -0.00032332	  0.00019805	  7.27307126	  0.99901243	  0.99947863  0.49326699
+9572	 -6.27339466	 -0.00032328	  0.00019803	  7.27307137	  0.99901254	  0.99947869  0.49326696
+9573	 -6.27339474	 -0.00032325	  0.00019801	  7.27307149	  0.99901264	  0.99947874  0.49326718
+9574	 -6.27339482	 -0.00032321	  0.00019799	  7.27307160	  0.99901274	  0.99947880  0.49326717
+9575	 -6.27339490	 -0.00032318	  0.00019797	  7.27307172	  0.99901285	  0.99947885  0.49326705
+9576	 -6.27339498	 -0.00032315	  0.00019795	  7.27307183	  0.99901295	  0.99947890  0.49326716
+9577	 -6.27339506	 -0.00032311	  0.00019793	  7.27307195	  0.99901305	  0.99947896  0.49326730
+9578	 -6.27339514	 -0.00032308	  0.00019791	  7.27307206	  0.99901315	  0.99947901  0.49326718
+9579	 -6.27339522	 -0.00032305	  0.00019789	  7.27307218	  0.99901326	  0.99947907  0.49326722
+9580	 -6.27339530	 -0.00032301	  0.00019787	  7.27307229	  0.99901336	  0.99947912  0.49326715
+9581	 -6.27339538	 -0.00032298	  0.00019785	  7.27307241	  0.99901346	  0.99947918  0.49326728
+9582	 -6.27339546	 -0.00032295	  0.00019782	  7.27307252	  0.99901357	  0.99947923  0.49326724
+9583	 -6.27339555	 -0.00032291	  0.00019780	  7.27307263	  0.99901367	  0.99947928  0.49326701
+9584	 -6.27339563	 -0.00032288	  0.00019778	  7.27307275	  0.99901377	  0.99947934  0.49326708
+9585	 -6.27339571	 -0.00032284	  0.00019776	  7.27307286	  0.99901388	  0.99947939  0.49326726
+9586	 -6.27339579	 -0.00032281	  0.00019774	  7.27307298	  0.99901398	  0.99947945  0.49326720
+9587	 -6.27339587	 -0.00032278	  0.00019772	  7.27307309	  0.99901408	  0.99947950  0.49326714
+9588	 -6.27339595	 -0.00032274	  0.00019770	  7.27307321	  0.99901418	  0.99947956  0.49326729
+9589	 -6.27339603	 -0.00032271	  0.00019768	  7.27307332	  0.99901429	  0.99947961  0.49326744
+9590	 -6.27339611	 -0.00032268	  0.00019766	  7.27307343	  0.99901439	  0.99947966  0.49326726
+9591	 -6.27339619	 -0.00032264	  0.00019764	  7.27307355	  0.99901449	  0.99947972  0.49326746
+9592	 -6.27339627	 -0.00032261	  0.00019762	  7.27307366	  0.99901459	  0.99947977  0.49326747
+9593	 -6.27339635	 -0.00032258	  0.00019760	  7.27307378	  0.99901470	  0.99947983  0.49326746
+9594	 -6.27339643	 -0.00032254	  0.00019758	  7.27307389	  0.99901480	  0.99947988  0.49326737
+9595	 -6.27339651	 -0.00032251	  0.00019756	  7.27307400	  0.99901490	  0.99947994  0.49326725
+9596	 -6.27339659	 -0.00032247	  0.00019754	  7.27307412	  0.99901501	  0.99947999  0.49326744
+9597	 -6.27339667	 -0.00032244	  0.00019752	  7.27307423	  0.99901511	  0.99948004  0.49326734
+9598	 -6.27339675	 -0.00032241	  0.00019749	  7.27307435	  0.99901521	  0.99948010  0.49326748
+9599	 -6.27339683	 -0.00032237	  0.00019747	  7.27307446	  0.99901531	  0.99948015  0.49326735
+9600	 -6.27339691	 -0.00032234	  0.00019745	  7.27307457	  0.99901542	  0.99948021  0.49326718
+9601	 -6.27339699	 -0.00032231	  0.00019743	  7.27307469	  0.99901552	  0.99948026  0.49326726
+9602	 -6.27339708	 -0.00032227	  0.00019741	  7.27307480	  0.99901562	  0.99948031  0.49326739
+9603	 -6.27339716	 -0.00032224	  0.00019739	  7.27307492	  0.99901572	  0.99948037  0.49326736
+9604	 -6.27339724	 -0.00032221	  0.00019737	  7.27307503	  0.99901583	  0.99948042  0.49326751
+9605	 -6.27339732	 -0.00032217	  0.00019735	  7.27307514	  0.99901593	  0.99948048  0.49326746
+9606	 -6.27339740	 -0.00032214	  0.00019733	  7.27307526	  0.99901603	  0.99948053  0.49326750
+9607	 -6.27339748	 -0.00032210	  0.00019731	  7.27307537	  0.99901613	  0.99948059  0.49326720
+9608	 -6.27339756	 -0.00032207	  0.00019729	  7.27307549	  0.99901624	  0.99948064  0.49326742
+9609	 -6.27339764	 -0.00032204	  0.00019727	  7.27307560	  0.99901634	  0.99948069  0.49326770
+9610	 -6.27339772	 -0.00032200	  0.00019725	  7.27307571	  0.99901644	  0.99948075  0.49326757
+9611	 -6.27339780	 -0.00032197	  0.00019723	  7.27307583	  0.99901654	  0.99948080  0.49326750
+9612	 -6.27339788	 -0.00032194	  0.00019721	  7.27307594	  0.99901664	  0.99948086  0.49326781
+9613	 -6.27339796	 -0.00032190	  0.00019719	  7.27307605	  0.99901675	  0.99948091  0.49326776
+9614	 -6.27339804	 -0.00032187	  0.00019717	  7.27307617	  0.99901685	  0.99948096  0.49326747
+9615	 -6.27339812	 -0.00032184	  0.00019715	  7.27307628	  0.99901695	  0.99948102  0.49326778
+9616	 -6.27339820	 -0.00032180	  0.00019713	  7.27307639	  0.99901705	  0.99948107  0.49326749
+9617	 -6.27339828	 -0.00032177	  0.00019710	  7.27307651	  0.99901716	  0.99948113  0.49326751
+9618	 -6.27339836	 -0.00032174	  0.00019708	  7.27307662	  0.99901726	  0.99948118  0.49326780
+9619	 -6.27339844	 -0.00032170	  0.00019706	  7.27307674	  0.99901736	  0.99948123  0.49326747
+9620	 -6.27339852	 -0.00032167	  0.00019704	  7.27307685	  0.99901746	  0.99948129  0.49326772
+9621	 -6.27339860	 -0.00032164	  0.00019702	  7.27307696	  0.99901756	  0.99948134  0.49326768
+9622	 -6.27339868	 -0.00032160	  0.00019700	  7.27307708	  0.99901767	  0.99948139  0.49326756
+9623	 -6.27339876	 -0.00032157	  0.00019698	  7.27307719	  0.99901777	  0.99948145  0.49326753
+9624	 -6.27339884	 -0.00032154	  0.00019696	  7.27307730	  0.99901787	  0.99948150  0.49326754
+9625	 -6.27339892	 -0.00032150	  0.00019694	  7.27307742	  0.99901797	  0.99948156  0.49326763
+9626	 -6.27339900	 -0.00032147	  0.00019692	  7.27307753	  0.99901807	  0.99948161  0.49326773
+9627	 -6.27339908	 -0.00032144	  0.00019690	  7.27307764	  0.99901818	  0.99948166  0.49326760
+9628	 -6.27339916	 -0.00032140	  0.00019688	  7.27307776	  0.99901828	  0.99948172  0.49326795
+9629	 -6.27339924	 -0.00032137	  0.00019686	  7.27307787	  0.99901838	  0.99948177  0.49326781
+9630	 -6.27339932	 -0.00032134	  0.00019684	  7.27307798	  0.99901848	  0.99948183  0.49326791
+9631	 -6.27339940	 -0.00032130	  0.00019682	  7.27307810	  0.99901858	  0.99948188  0.49326782
+9632	 -6.27339948	 -0.00032127	  0.00019680	  7.27307821	  0.99901869	  0.99948193  0.49326774
+9633	 -6.27339956	 -0.00032124	  0.00019678	  7.27307832	  0.99901879	  0.99948199  0.49326801
+9634	 -6.27339964	 -0.00032120	  0.00019676	  7.27307843	  0.99901889	  0.99948204  0.49326796
+9635	 -6.27339972	 -0.00032117	  0.00019674	  7.27307855	  0.99901899	  0.99948209  0.49326796
+9636	 -6.27339980	 -0.00032114	  0.00019672	  7.27307866	  0.99901909	  0.99948215  0.49326764
+9637	 -6.27339988	 -0.00032110	  0.00019670	  7.27307877	  0.99901920	  0.99948220  0.49326786
+9638	 -6.27339996	 -0.00032107	  0.00019668	  7.27307889	  0.99901930	  0.99948226  0.49326797
+9639	 -6.27340004	 -0.00032104	  0.00019665	  7.27307900	  0.99901940	  0.99948231  0.49326772
+9640	 -6.27340012	 -0.00032100	  0.00019663	  7.27307911	  0.99901950	  0.99948236  0.49326808
+9641	 -6.27340020	 -0.00032097	  0.00019661	  7.27307923	  0.99901960	  0.99948242  0.49326793
+9642	 -6.27340028	 -0.00032094	  0.00019659	  7.27307934	  0.99901970	  0.99948247  0.49326800
+9643	 -6.27340036	 -0.00032090	  0.00019657	  7.27307945	  0.99901981	  0.99948252  0.49326818
+9644	 -6.27340043	 -0.00032087	  0.00019655	  7.27307956	  0.99901991	  0.99948258  0.49326800
+9645	 -6.27340051	 -0.00032084	  0.00019653	  7.27307968	  0.99902001	  0.99948263  0.49326833
+9646	 -6.27340059	 -0.00032080	  0.00019651	  7.27307979	  0.99902011	  0.99948268  0.49326799
+9647	 -6.27340067	 -0.00032077	  0.00019649	  7.27307990	  0.99902021	  0.99948274  0.49326805
+9648	 -6.27340075	 -0.00032074	  0.00019647	  7.27308002	  0.99902031	  0.99948279  0.49326790
+9649	 -6.27340083	 -0.00032070	  0.00019645	  7.27308013	  0.99902042	  0.99948285  0.49326822
+9650	 -6.27340091	 -0.00032067	  0.00019643	  7.27308024	  0.99902052	  0.99948290  0.49326817
+9651	 -6.27340099	 -0.00032064	  0.00019641	  7.27308035	  0.99902062	  0.99948295  0.49326820
+9652	 -6.27340107	 -0.00032060	  0.00019639	  7.27308047	  0.99902072	  0.99948301  0.49326814
+9653	 -6.27340115	 -0.00032057	  0.00019637	  7.27308058	  0.99902082	  0.99948306  0.49326794
+9654	 -6.27340123	 -0.00032054	  0.00019635	  7.27308069	  0.99902092	  0.99948311  0.49326788
+9655	 -6.27340131	 -0.00032050	  0.00019633	  7.27308081	  0.99902102	  0.99948317  0.49326824
+9656	 -6.27340139	 -0.00032047	  0.00019631	  7.27308092	  0.99902113	  0.99948322  0.49326821
+9657	 -6.27340147	 -0.00032044	  0.00019629	  7.27308103	  0.99902123	  0.99948327  0.49326804
+9658	 -6.27340155	 -0.00032040	  0.00019627	  7.27308114	  0.99902133	  0.99948333  0.49326826
+9659	 -6.27340163	 -0.00032037	  0.00019625	  7.27308126	  0.99902143	  0.99948338  0.49326837
+9660	 -6.27340171	 -0.00032034	  0.00019623	  7.27308137	  0.99902153	  0.99948343  0.49326808
+9661	 -6.27340179	 -0.00032031	  0.00019621	  7.27308148	  0.99902163	  0.99948349  0.49326814
+9662	 -6.27340187	 -0.00032027	  0.00019619	  7.27308159	  0.99902173	  0.99948354  0.49326823
+9663	 -6.27340194	 -0.00032024	  0.00019617	  7.27308171	  0.99902183	  0.99948359  0.49326820
+9664	 -6.27340202	 -0.00032021	  0.00019615	  7.27308182	  0.99902194	  0.99948365  0.49326819
+9665	 -6.27340210	 -0.00032017	  0.00019613	  7.27308193	  0.99902204	  0.99948370  0.49326828
+9666	 -6.27340218	 -0.00032014	  0.00019611	  7.27308204	  0.99902214	  0.99948376  0.49326815
+9667	 -6.27340226	 -0.00032011	  0.00019608	  7.27308216	  0.99902224	  0.99948381  0.49326833
+9668	 -6.27340234	 -0.00032007	  0.00019606	  7.27308227	  0.99902234	  0.99948386  0.49326820
+9669	 -6.27340242	 -0.00032004	  0.00019604	  7.27308238	  0.99902244	  0.99948392  0.49326839
+9670	 -6.27340250	 -0.00032001	  0.00019602	  7.27308249	  0.99902254	  0.99948397  0.49326825
+9671	 -6.27340258	 -0.00031997	  0.00019600	  7.27308261	  0.99902264	  0.99948402  0.49326820
+9672	 -6.27340266	 -0.00031994	  0.00019598	  7.27308272	  0.99902274	  0.99948408  0.49326829
+9673	 -6.27340274	 -0.00031991	  0.00019596	  7.27308283	  0.99902285	  0.99948413  0.49326838
+9674	 -6.27340282	 -0.00031987	  0.00019594	  7.27308294	  0.99902295	  0.99948418  0.49326829
+9675	 -6.27340290	 -0.00031984	  0.00019592	  7.27308305	  0.99902305	  0.99948424  0.49326812
+9676	 -6.27340297	 -0.00031981	  0.00019590	  7.27308317	  0.99902315	  0.99948429  0.49326825
+9677	 -6.27340305	 -0.00031978	  0.00019588	  7.27308328	  0.99902325	  0.99948434  0.49326844
+9678	 -6.27340313	 -0.00031974	  0.00019586	  7.27308339	  0.99902335	  0.99948440  0.49326822
+9679	 -6.27340321	 -0.00031971	  0.00019584	  7.27308350	  0.99902345	  0.99948445  0.49326848
+9680	 -6.27340329	 -0.00031968	  0.00019582	  7.27308361	  0.99902355	  0.99948450  0.49326823
+9681	 -6.27340337	 -0.00031964	  0.00019580	  7.27308373	  0.99902365	  0.99948455  0.49326831
+9682	 -6.27340345	 -0.00031961	  0.00019578	  7.27308384	  0.99902375	  0.99948461  0.49326842
+9683	 -6.27340353	 -0.00031958	  0.00019576	  7.27308395	  0.99902385	  0.99948466  0.49326833
+9684	 -6.27340361	 -0.00031954	  0.00019574	  7.27308406	  0.99902396	  0.99948471  0.49326844
+9685	 -6.27340369	 -0.00031951	  0.00019572	  7.27308417	  0.99902406	  0.99948477  0.49326841
+9686	 -6.27340377	 -0.00031948	  0.00019570	  7.27308429	  0.99902416	  0.99948482  0.49326813
+9687	 -6.27340384	 -0.00031945	  0.00019568	  7.27308440	  0.99902426	  0.99948487  0.49326861
+9688	 -6.27340392	 -0.00031941	  0.00019566	  7.27308451	  0.99902436	  0.99948493  0.49326836
+9689	 -6.27340400	 -0.00031938	  0.00019564	  7.27308462	  0.99902446	  0.99948498  0.49326869
+9690	 -6.27340408	 -0.00031935	  0.00019562	  7.27308473	  0.99902456	  0.99948503  0.49326883
+9691	 -6.27340416	 -0.00031931	  0.00019560	  7.27308485	  0.99902466	  0.99948509  0.49326857
+9692	 -6.27340424	 -0.00031928	  0.00019558	  7.27308496	  0.99902476	  0.99948514  0.49326861
+9693	 -6.27340432	 -0.00031925	  0.00019556	  7.27308507	  0.99902486	  0.99948519  0.49326841
+9694	 -6.27340440	 -0.00031922	  0.00019554	  7.27308518	  0.99902496	  0.99948525  0.49326856
+9695	 -6.27340448	 -0.00031918	  0.00019552	  7.27308529	  0.99902506	  0.99948530  0.49326867
+9696	 -6.27340455	 -0.00031915	  0.00019550	  7.27308540	  0.99902516	  0.99948535  0.49326859
+9697	 -6.27340463	 -0.00031912	  0.00019548	  7.27308552	  0.99902526	  0.99948541  0.49326854
+9698	 -6.27340471	 -0.00031908	  0.00019546	  7.27308563	  0.99902536	  0.99948546  0.49326869
+9699	 -6.27340479	 -0.00031905	  0.00019544	  7.27308574	  0.99902546	  0.99948551  0.49326853
+9700	 -6.27340487	 -0.00031902	  0.00019542	  7.27308585	  0.99902557	  0.99948556  0.49326880
+9701	 -6.27340495	 -0.00031899	  0.00019540	  7.27308596	  0.99902567	  0.99948562  0.49326872
+9702	 -6.27340503	 -0.00031895	  0.00019538	  7.27308607	  0.99902577	  0.99948567  0.49326861
+9703	 -6.27340511	 -0.00031892	  0.00019536	  7.27308619	  0.99902587	  0.99948572  0.49326878
+9704	 -6.27340518	 -0.00031889	  0.00019534	  7.27308630	  0.99902597	  0.99948578  0.49326876
+9705	 -6.27340526	 -0.00031885	  0.00019532	  7.27308641	  0.99902607	  0.99948583  0.49326873
+9706	 -6.27340534	 -0.00031882	  0.00019530	  7.27308652	  0.99902617	  0.99948588  0.49326869
+9707	 -6.27340542	 -0.00031879	  0.00019528	  7.27308663	  0.99902627	  0.99948594  0.49326868
+9708	 -6.27340550	 -0.00031876	  0.00019526	  7.27308674	  0.99902637	  0.99948599  0.49326886
+9709	 -6.27340558	 -0.00031872	  0.00019524	  7.27308685	  0.99902647	  0.99948604  0.49326868
+9710	 -6.27340566	 -0.00031869	  0.00019522	  7.27308697	  0.99902657	  0.99948609  0.49326883
+9711	 -6.27340573	 -0.00031866	  0.00019520	  7.27308708	  0.99902667	  0.99948615  0.49326876
+9712	 -6.27340581	 -0.00031862	  0.00019518	  7.27308719	  0.99902677	  0.99948620  0.49326874
+9713	 -6.27340589	 -0.00031859	  0.00019516	  7.27308730	  0.99902687	  0.99948625  0.49326882
+9714	 -6.27340597	 -0.00031856	  0.00019514	  7.27308741	  0.99902697	  0.99948631  0.49326866
+9715	 -6.27340605	 -0.00031853	  0.00019512	  7.27308752	  0.99902707	  0.99948636  0.49326860
+9716	 -6.27340613	 -0.00031849	  0.00019510	  7.27308763	  0.99902717	  0.99948641  0.49326865
+9717	 -6.27340621	 -0.00031846	  0.00019508	  7.27308775	  0.99902727	  0.99948646  0.49326872
+9718	 -6.27340628	 -0.00031843	  0.00019506	  7.27308786	  0.99902737	  0.99948652  0.49326863
+9719	 -6.27340636	 -0.00031839	  0.00019504	  7.27308797	  0.99902747	  0.99948657  0.49326869
+9720	 -6.27340644	 -0.00031836	  0.00019502	  7.27308808	  0.99902757	  0.99948662  0.49326888
+9721	 -6.27340652	 -0.00031833	  0.00019500	  7.27308819	  0.99902767	  0.99948668  0.49326895
+9722	 -6.27340660	 -0.00031830	  0.00019498	  7.27308830	  0.99902777	  0.99948673  0.49326876
+9723	 -6.27340668	 -0.00031826	  0.00019496	  7.27308841	  0.99902787	  0.99948678  0.49326889
+9724	 -6.27340675	 -0.00031823	  0.00019494	  7.27308852	  0.99902797	  0.99948683  0.49326878
+9725	 -6.27340683	 -0.00031820	  0.00019492	  7.27308863	  0.99902807	  0.99948689  0.49326887
+9726	 -6.27340691	 -0.00031817	  0.00019490	  7.27308875	  0.99902817	  0.99948694  0.49326916
+9727	 -6.27340699	 -0.00031813	  0.00019488	  7.27308886	  0.99902827	  0.99948699  0.49326908
+9728	 -6.27340707	 -0.00031810	  0.00019486	  7.27308897	  0.99902837	  0.99948704  0.49326893
+9729	 -6.27340715	 -0.00031807	  0.00019484	  7.27308908	  0.99902847	  0.99948710  0.49326890
+9730	 -6.27340722	 -0.00031803	  0.00019482	  7.27308919	  0.99902857	  0.99948715  0.49326887
+9731	 -6.27340730	 -0.00031800	  0.00019480	  7.27308930	  0.99902867	  0.99948720  0.49326878
+9732	 -6.27340738	 -0.00031797	  0.00019478	  7.27308941	  0.99902877	  0.99948726  0.49326894
+9733	 -6.27340746	 -0.00031794	  0.00019476	  7.27308952	  0.99902887	  0.99948731  0.49326894
+9734	 -6.27340754	 -0.00031790	  0.00019474	  7.27308963	  0.99902897	  0.99948736  0.49326908
+9735	 -6.27340761	 -0.00031787	  0.00019472	  7.27308974	  0.99902907	  0.99948741  0.49326876
+9736	 -6.27340769	 -0.00031784	  0.00019470	  7.27308985	  0.99902917	  0.99948747  0.49326912
+9737	 -6.27340777	 -0.00031781	  0.00019468	  7.27308996	  0.99902927	  0.99948752  0.49326904
+9738	 -6.27340785	 -0.00031777	  0.00019466	  7.27309008	  0.99902937	  0.99948757  0.49326901
+9739	 -6.27340793	 -0.00031774	  0.00019464	  7.27309019	  0.99902947	  0.99948762  0.49326930
+9740	 -6.27340801	 -0.00031771	  0.00019462	  7.27309030	  0.99902957	  0.99948768  0.49326907
+9741	 -6.27340808	 -0.00031768	  0.00019460	  7.27309041	  0.99902967	  0.99948773  0.49326924
+9742	 -6.27340816	 -0.00031764	  0.00019458	  7.27309052	  0.99902977	  0.99948778  0.49326904
+9743	 -6.27340824	 -0.00031761	  0.00019456	  7.27309063	  0.99902987	  0.99948783  0.49326893
+9744	 -6.27340832	 -0.00031758	  0.00019454	  7.27309074	  0.99902997	  0.99948789  0.49326909
+9745	 -6.27340840	 -0.00031755	  0.00019452	  7.27309085	  0.99903006	  0.99948794  0.49326930
+9746	 -6.27340847	 -0.00031751	  0.00019450	  7.27309096	  0.99903016	  0.99948799  0.49326922
+9747	 -6.27340855	 -0.00031748	  0.00019448	  7.27309107	  0.99903026	  0.99948804  0.49326913
+9748	 -6.27340863	 -0.00031745	  0.00019446	  7.27309118	  0.99903036	  0.99948810  0.49326905
+9749	 -6.27340871	 -0.00031742	  0.00019444	  7.27309129	  0.99903046	  0.99948815  0.49326923
+9750	 -6.27340879	 -0.00031738	  0.00019442	  7.27309140	  0.99903056	  0.99948820  0.49326938
+9751	 -6.27340886	 -0.00031735	  0.00019440	  7.27309151	  0.99903066	  0.99948825  0.49326909
+9752	 -6.27340894	 -0.00031732	  0.00019438	  7.27309162	  0.99903076	  0.99948831  0.49326912
+9753	 -6.27340902	 -0.00031728	  0.00019436	  7.27309173	  0.99903086	  0.99948836  0.49326920
+9754	 -6.27340910	 -0.00031725	  0.00019434	  7.27309184	  0.99903096	  0.99948841  0.49326917
+9755	 -6.27340917	 -0.00031722	  0.00019432	  7.27309196	  0.99903106	  0.99948846  0.49326921
+9756	 -6.27340925	 -0.00031719	  0.00019430	  7.27309207	  0.99903116	  0.99948852  0.49326919
+9757	 -6.27340933	 -0.00031715	  0.00019428	  7.27309218	  0.99903126	  0.99948857  0.49326928
+9758	 -6.27340941	 -0.00031712	  0.00019426	  7.27309229	  0.99903136	  0.99948862  0.49326918
+9759	 -6.27340949	 -0.00031709	  0.00019424	  7.27309240	  0.99903146	  0.99948867  0.49326958
+9760	 -6.27340956	 -0.00031706	  0.00019422	  7.27309251	  0.99903156	  0.99948873  0.49326936
+9761	 -6.27340964	 -0.00031702	  0.00019420	  7.27309262	  0.99903165	  0.99948878  0.49326927
+9762	 -6.27340972	 -0.00031699	  0.00019418	  7.27309273	  0.99903175	  0.99948883  0.49326942
+9763	 -6.27340980	 -0.00031696	  0.00019416	  7.27309284	  0.99903185	  0.99948888  0.49326912
+9764	 -6.27340987	 -0.00031693	  0.00019414	  7.27309295	  0.99903195	  0.99948894  0.49326924
+9765	 -6.27340995	 -0.00031690	  0.00019412	  7.27309306	  0.99903205	  0.99948899  0.49326951
+9766	 -6.27341003	 -0.00031686	  0.00019410	  7.27309317	  0.99903215	  0.99948904  0.49326942
+9767	 -6.27341011	 -0.00031683	  0.00019408	  7.27309328	  0.99903225	  0.99948909  0.49326925
+9768	 -6.27341019	 -0.00031680	  0.00019406	  7.27309339	  0.99903235	  0.99948914  0.49326927
+9769	 -6.27341026	 -0.00031677	  0.00019404	  7.27309350	  0.99903245	  0.99948920  0.49326936
+9770	 -6.27341034	 -0.00031673	  0.00019402	  7.27309361	  0.99903255	  0.99948925  0.49326944
+9771	 -6.27341042	 -0.00031670	  0.00019400	  7.27309372	  0.99903265	  0.99948930  0.49326949
+9772	 -6.27341050	 -0.00031667	  0.00019398	  7.27309383	  0.99903274	  0.99948935  0.49326915
+9773	 -6.27341057	 -0.00031664	  0.00019396	  7.27309394	  0.99903284	  0.99948941  0.49326929
+9774	 -6.27341065	 -0.00031660	  0.00019394	  7.27309405	  0.99903294	  0.99948946  0.49326955
+9775	 -6.27341073	 -0.00031657	  0.00019392	  7.27309416	  0.99903304	  0.99948951  0.49326921
+9776	 -6.27341081	 -0.00031654	  0.00019390	  7.27309427	  0.99903314	  0.99948956  0.49326941
+9777	 -6.27341088	 -0.00031651	  0.00019388	  7.27309438	  0.99903324	  0.99948961  0.49326954
+9778	 -6.27341096	 -0.00031647	  0.00019386	  7.27309449	  0.99903334	  0.99948967  0.49326935
+9779	 -6.27341104	 -0.00031644	  0.00019384	  7.27309460	  0.99903344	  0.99948972  0.49326969
+9780	 -6.27341112	 -0.00031641	  0.00019382	  7.27309471	  0.99903354	  0.99948977  0.49326971
+9781	 -6.27341119	 -0.00031638	  0.00019380	  7.27309482	  0.99903363	  0.99948982  0.49326945
+9782	 -6.27341127	 -0.00031634	  0.00019378	  7.27309493	  0.99903373	  0.99948988  0.49326964
+9783	 -6.27341135	 -0.00031631	  0.00019376	  7.27309504	  0.99903383	  0.99948993  0.49326955
+9784	 -6.27341143	 -0.00031628	  0.00019374	  7.27309515	  0.99903393	  0.99948998  0.49326931
+9785	 -6.27341150	 -0.00031625	  0.00019372	  7.27309526	  0.99903403	  0.99949003  0.49326939
+9786	 -6.27341158	 -0.00031622	  0.00019370	  7.27309537	  0.99903413	  0.99949008  0.49326953
+9787	 -6.27341166	 -0.00031618	  0.00019368	  7.27309547	  0.99903423	  0.99949014  0.49326974
+9788	 -6.27341173	 -0.00031615	  0.00019366	  7.27309558	  0.99903433	  0.99949019  0.49326980
+9789	 -6.27341181	 -0.00031612	  0.00019364	  7.27309569	  0.99903442	  0.99949024  0.49326965
+9790	 -6.27341189	 -0.00031609	  0.00019362	  7.27309580	  0.99903452	  0.99949029  0.49326969
+9791	 -6.27341197	 -0.00031605	  0.00019360	  7.27309591	  0.99903462	  0.99949034  0.49326954
+9792	 -6.27341204	 -0.00031602	  0.00019358	  7.27309602	  0.99903472	  0.99949040  0.49326953
+9793	 -6.27341212	 -0.00031599	  0.00019356	  7.27309613	  0.99903482	  0.99949045  0.49326986
+9794	 -6.27341220	 -0.00031596	  0.00019354	  7.27309624	  0.99903492	  0.99949050  0.49326990
+9795	 -6.27341228	 -0.00031592	  0.00019352	  7.27309635	  0.99903502	  0.99949055  0.49326950
+9796	 -6.27341235	 -0.00031589	  0.00019350	  7.27309646	  0.99903511	  0.99949060  0.49326968
+9797	 -6.27341243	 -0.00031586	  0.00019348	  7.27309657	  0.99903521	  0.99949066  0.49326946
+9798	 -6.27341251	 -0.00031583	  0.00019346	  7.27309668	  0.99903531	  0.99949071  0.49326958
+9799	 -6.27341258	 -0.00031580	  0.00019344	  7.27309679	  0.99903541	  0.99949076  0.49326990
+9800	 -6.27341266	 -0.00031576	  0.00019342	  7.27309690	  0.99903551	  0.99949081  0.49326972
+9801	 -6.27341274	 -0.00031573	  0.00019340	  7.27309701	  0.99903561	  0.99949086  0.49326980
+9802	 -6.27341282	 -0.00031570	  0.00019338	  7.27309712	  0.99903570	  0.99949092  0.49327001
+9803	 -6.27341289	 -0.00031567	  0.00019336	  7.27309723	  0.99903580	  0.99949097  0.49326985
+9804	 -6.27341297	 -0.00031563	  0.00019334	  7.27309734	  0.99903590	  0.99949102  0.49326983
+9805	 -6.27341305	 -0.00031560	  0.00019333	  7.27309744	  0.99903600	  0.99949107  0.49326985
+9806	 -6.27341312	 -0.00031557	  0.00019331	  7.27309755	  0.99903610	  0.99949112  0.49327005
+9807	 -6.27341320	 -0.00031554	  0.00019329	  7.27309766	  0.99903620	  0.99949118  0.49326985
+9808	 -6.27341328	 -0.00031551	  0.00019327	  7.27309777	  0.99903629	  0.99949123  0.49326980
+9809	 -6.27341336	 -0.00031547	  0.00019325	  7.27309788	  0.99903639	  0.99949128  0.49326990
+9810	 -6.27341343	 -0.00031544	  0.00019323	  7.27309799	  0.99903649	  0.99949133  0.49326985
+9811	 -6.27341351	 -0.00031541	  0.00019321	  7.27309810	  0.99903659	  0.99949138  0.49326999
+9812	 -6.27341359	 -0.00031538	  0.00019319	  7.27309821	  0.99903669	  0.99949144  0.49326989
+9813	 -6.27341366	 -0.00031535	  0.00019317	  7.27309832	  0.99903679	  0.99949149  0.49326987
+9814	 -6.27341374	 -0.00031531	  0.00019315	  7.27309843	  0.99903688	  0.99949154  0.49327012
+9815	 -6.27341382	 -0.00031528	  0.00019313	  7.27309854	  0.99903698	  0.99949159  0.49326994
+9816	 -6.27341389	 -0.00031525	  0.00019311	  7.27309864	  0.99903708	  0.99949164  0.49327001
+9817	 -6.27341397	 -0.00031522	  0.00019309	  7.27309875	  0.99903718	  0.99949169  0.49327008
+9818	 -6.27341405	 -0.00031519	  0.00019307	  7.27309886	  0.99903728	  0.99949175  0.49327008
+9819	 -6.27341412	 -0.00031515	  0.00019305	  7.27309897	  0.99903737	  0.99949180  0.49326970
+9820	 -6.27341420	 -0.00031512	  0.00019303	  7.27309908	  0.99903747	  0.99949185  0.49326989
+9821	 -6.27341428	 -0.00031509	  0.00019301	  7.27309919	  0.99903757	  0.99949190  0.49326992
+9822	 -6.27341435	 -0.00031506	  0.00019299	  7.27309930	  0.99903767	  0.99949195  0.49327000
+9823	 -6.27341443	 -0.00031502	  0.00019297	  7.27309941	  0.99903777	  0.99949200  0.49327006
+9824	 -6.27341451	 -0.00031499	  0.00019295	  7.27309952	  0.99903786	  0.99949206  0.49327023
+9825	 -6.27341459	 -0.00031496	  0.00019293	  7.27309962	  0.99903796	  0.99949211  0.49327002
+9826	 -6.27341466	 -0.00031493	  0.00019291	  7.27309973	  0.99903806	  0.99949216  0.49327004
+9827	 -6.27341474	 -0.00031490	  0.00019289	  7.27309984	  0.99903816	  0.99949221  0.49327010
+9828	 -6.27341482	 -0.00031486	  0.00019287	  7.27309995	  0.99903826	  0.99949226  0.49327000
+9829	 -6.27341489	 -0.00031483	  0.00019285	  7.27310006	  0.99903835	  0.99949231  0.49326994
+9830	 -6.27341497	 -0.00031480	  0.00019283	  7.27310017	  0.99903845	  0.99949237  0.49327008
+9831	 -6.27341505	 -0.00031477	  0.00019281	  7.27310028	  0.99903855	  0.99949242  0.49327002
+9832	 -6.27341512	 -0.00031474	  0.00019279	  7.27310039	  0.99903865	  0.99949247  0.49327015
+9833	 -6.27341520	 -0.00031470	  0.00019277	  7.27310049	  0.99903874	  0.99949252  0.49326998
+9834	 -6.27341528	 -0.00031467	  0.00019275	  7.27310060	  0.99903884	  0.99949257  0.49327030
+9835	 -6.27341535	 -0.00031464	  0.00019274	  7.27310071	  0.99903894	  0.99949262  0.49326995
+9836	 -6.27341543	 -0.00031461	  0.00019272	  7.27310082	  0.99903904	  0.99949268  0.49327013
+9837	 -6.27341550	 -0.00031458	  0.00019270	  7.27310093	  0.99903914	  0.99949273  0.49327030
+9838	 -6.27341558	 -0.00031454	  0.00019268	  7.27310104	  0.99903923	  0.99949278  0.49327016
+9839	 -6.27341566	 -0.00031451	  0.00019266	  7.27310115	  0.99903933	  0.99949283  0.49327003
+9840	 -6.27341573	 -0.00031448	  0.00019264	  7.27310125	  0.99903943	  0.99949288  0.49327020
+9841	 -6.27341581	 -0.00031445	  0.00019262	  7.27310136	  0.99903953	  0.99949293  0.49327016
+9842	 -6.27341589	 -0.00031442	  0.00019260	  7.27310147	  0.99903962	  0.99949298  0.49327038
+9843	 -6.27341596	 -0.00031438	  0.00019258	  7.27310158	  0.99903972	  0.99949304  0.49327020
+9844	 -6.27341604	 -0.00031435	  0.00019256	  7.27310169	  0.99903982	  0.99949309  0.49326989
+9845	 -6.27341612	 -0.00031432	  0.00019254	  7.27310180	  0.99903992	  0.99949314  0.49327033
+9846	 -6.27341619	 -0.00031429	  0.00019252	  7.27310190	  0.99904001	  0.99949319  0.49327021
+9847	 -6.27341627	 -0.00031426	  0.00019250	  7.27310201	  0.99904011	  0.99949324  0.49327047
+9848	 -6.27341635	 -0.00031423	  0.00019248	  7.27310212	  0.99904021	  0.99949329  0.49327024
+9849	 -6.27341642	 -0.00031419	  0.00019246	  7.27310223	  0.99904031	  0.99949335  0.49327034
+9850	 -6.27341650	 -0.00031416	  0.00019244	  7.27310234	  0.99904040	  0.99949340  0.49327024
+9851	 -6.27341658	 -0.00031413	  0.00019242	  7.27310245	  0.99904050	  0.99949345  0.49327049
+9852	 -6.27341665	 -0.00031410	  0.00019240	  7.27310255	  0.99904060	  0.99949350  0.49327029
+9853	 -6.27341673	 -0.00031407	  0.00019238	  7.27310266	  0.99904070	  0.99949355  0.49327027
+9854	 -6.27341680	 -0.00031403	  0.00019236	  7.27310277	  0.99904079	  0.99949360  0.49327052
+9855	 -6.27341688	 -0.00031400	  0.00019234	  7.27310288	  0.99904089	  0.99949365  0.49327062
+9856	 -6.27341696	 -0.00031397	  0.00019232	  7.27310299	  0.99904099	  0.99949370  0.49327051
+9857	 -6.27341703	 -0.00031394	  0.00019231	  7.27310309	  0.99904108	  0.99949376  0.49327035
+9858	 -6.27341711	 -0.00031391	  0.00019229	  7.27310320	  0.99904118	  0.99949381  0.49327029
+9859	 -6.27341719	 -0.00031387	  0.00019227	  7.27310331	  0.99904128	  0.99949386  0.49327040
+9860	 -6.27341726	 -0.00031384	  0.00019225	  7.27310342	  0.99904138	  0.99949391  0.49327054
+9861	 -6.27341734	 -0.00031381	  0.00019223	  7.27310353	  0.99904147	  0.99949396  0.49327057
+9862	 -6.27341741	 -0.00031378	  0.00019221	  7.27310363	  0.99904157	  0.99949401  0.49327065
+9863	 -6.27341749	 -0.00031375	  0.00019219	  7.27310374	  0.99904167	  0.99949406  0.49327055
+9864	 -6.27341757	 -0.00031372	  0.00019217	  7.27310385	  0.99904177	  0.99949412  0.49327044
+9865	 -6.27341764	 -0.00031368	  0.00019215	  7.27310396	  0.99904186	  0.99949417  0.49327060
+9866	 -6.27341772	 -0.00031365	  0.00019213	  7.27310407	  0.99904196	  0.99949422  0.49327062
+9867	 -6.27341779	 -0.00031362	  0.00019211	  7.27310417	  0.99904206	  0.99949427  0.49327057
+9868	 -6.27341787	 -0.00031359	  0.00019209	  7.27310428	  0.99904215	  0.99949432  0.49327068
+9869	 -6.27341795	 -0.00031356	  0.00019207	  7.27310439	  0.99904225	  0.99949437  0.49327087
+9870	 -6.27341802	 -0.00031353	  0.00019205	  7.27310450	  0.99904235	  0.99949442  0.49327065
+9871	 -6.27341810	 -0.00031349	  0.00019203	  7.27310461	  0.99904244	  0.99949447  0.49327040
+9872	 -6.27341817	 -0.00031346	  0.00019201	  7.27310471	  0.99904254	  0.99949453  0.49327056
+9873	 -6.27341825	 -0.00031343	  0.00019199	  7.27310482	  0.99904264	  0.99949458  0.49327057
+9874	 -6.27341833	 -0.00031340	  0.00019197	  7.27310493	  0.99904274	  0.99949463  0.49327059
+9875	 -6.27341840	 -0.00031337	  0.00019195	  7.27310504	  0.99904283	  0.99949468  0.49327075
+9876	 -6.27341848	 -0.00031333	  0.00019194	  7.27310514	  0.99904293	  0.99949473  0.49327058
+9877	 -6.27341855	 -0.00031330	  0.00019192	  7.27310525	  0.99904303	  0.99949478  0.49327073
+9878	 -6.27341863	 -0.00031327	  0.00019190	  7.27310536	  0.99904312	  0.99949483  0.49327054
+9879	 -6.27341871	 -0.00031324	  0.00019188	  7.27310547	  0.99904322	  0.99949488  0.49327048
+9880	 -6.27341878	 -0.00031321	  0.00019186	  7.27310557	  0.99904332	  0.99949493  0.49327086
+9881	 -6.27341886	 -0.00031318	  0.00019184	  7.27310568	  0.99904341	  0.99949499  0.49327056
+9882	 -6.27341893	 -0.00031314	  0.00019182	  7.27310579	  0.99904351	  0.99949504  0.49327071
+9883	 -6.27341901	 -0.00031311	  0.00019180	  7.27310590	  0.99904361	  0.99949509  0.49327045
+9884	 -6.27341909	 -0.00031308	  0.00019178	  7.27310600	  0.99904370	  0.99949514  0.49327067
+9885	 -6.27341916	 -0.00031305	  0.00019176	  7.27310611	  0.99904380	  0.99949519  0.49327067
+9886	 -6.27341924	 -0.00031302	  0.00019174	  7.27310622	  0.99904390	  0.99949524  0.49327074
+9887	 -6.27341931	 -0.00031299	  0.00019172	  7.27310633	  0.99904399	  0.99949529  0.49327107
+9888	 -6.27341939	 -0.00031295	  0.00019170	  7.27310643	  0.99904409	  0.99949534  0.49327064
+9889	 -6.27341946	 -0.00031292	  0.00019168	  7.27310654	  0.99904419	  0.99949539  0.49327063
+9890	 -6.27341954	 -0.00031289	  0.00019166	  7.27310665	  0.99904428	  0.99949545  0.49327050
+9891	 -6.27341962	 -0.00031286	  0.00019164	  7.27310676	  0.99904438	  0.99949550  0.49327069
+9892	 -6.27341969	 -0.00031283	  0.00019162	  7.27310686	  0.99904448	  0.99949555  0.49327081
+9893	 -6.27341977	 -0.00031280	  0.00019161	  7.27310697	  0.99904457	  0.99949560  0.49327077
+9894	 -6.27341984	 -0.00031276	  0.00019159	  7.27310708	  0.99904467	  0.99949565  0.49327081
+9895	 -6.27341992	 -0.00031273	  0.00019157	  7.27310719	  0.99904477	  0.99949570  0.49327088
+9896	 -6.27341999	 -0.00031270	  0.00019155	  7.27310729	  0.99904486	  0.99949575  0.49327082
+9897	 -6.27342007	 -0.00031267	  0.00019153	  7.27310740	  0.99904496	  0.99949580  0.49327067
+9898	 -6.27342015	 -0.00031264	  0.00019151	  7.27310751	  0.99904506	  0.99949585  0.49327061
+9899	 -6.27342022	 -0.00031261	  0.00019149	  7.27310761	  0.99904515	  0.99949590  0.49327079
+9900	 -6.27342030	 -0.00031258	  0.00019147	  7.27310772	  0.99904525	  0.99949595  0.49327103
+9901	 -6.27342037	 -0.00031254	  0.00019145	  7.27310783	  0.99904535	  0.99949601  0.49327107
+9902	 -6.27342045	 -0.00031251	  0.00019143	  7.27310794	  0.99904544	  0.99949606  0.49327084
+9903	 -6.27342052	 -0.00031248	  0.00019141	  7.27310804	  0.99904554	  0.99949611  0.49327096
+9904	 -6.27342060	 -0.00031245	  0.00019139	  7.27310815	  0.99904563	  0.99949616  0.49327062
+9905	 -6.27342067	 -0.00031242	  0.00019137	  7.27310826	  0.99904573	  0.99949621  0.49327088
+9906	 -6.27342075	 -0.00031239	  0.00019135	  7.27310836	  0.99904583	  0.99949626  0.49327094
+9907	 -6.27342083	 -0.00031235	  0.00019133	  7.27310847	  0.99904592	  0.99949631  0.49327095
+9908	 -6.27342090	 -0.00031232	  0.00019132	  7.27310858	  0.99904602	  0.99949636  0.49327111
+9909	 -6.27342098	 -0.00031229	  0.00019130	  7.27310869	  0.99904612	  0.99949641  0.49327066
+9910	 -6.27342105	 -0.00031226	  0.00019128	  7.27310879	  0.99904621	  0.99949646  0.49327112
+9911	 -6.27342113	 -0.00031223	  0.00019126	  7.27310890	  0.99904631	  0.99949651  0.49327094
+9912	 -6.27342120	 -0.00031220	  0.00019124	  7.27310901	  0.99904641	  0.99949656  0.49327097
+9913	 -6.27342128	 -0.00031217	  0.00019122	  7.27310911	  0.99904650	  0.99949662  0.49327094
+9914	 -6.27342135	 -0.00031213	  0.00019120	  7.27310922	  0.99904660	  0.99949667  0.49327120
+9915	 -6.27342143	 -0.00031210	  0.00019118	  7.27310933	  0.99904669	  0.99949672  0.49327123
+9916	 -6.27342150	 -0.00031207	  0.00019116	  7.27310943	  0.99904679	  0.99949677  0.49327124
+9917	 -6.27342158	 -0.00031204	  0.00019114	  7.27310954	  0.99904689	  0.99949682  0.49327089
+9918	 -6.27342166	 -0.00031201	  0.00019112	  7.27310965	  0.99904698	  0.99949687  0.49327096
+9919	 -6.27342173	 -0.00031198	  0.00019110	  7.27310975	  0.99904708	  0.99949692  0.49327093
+9920	 -6.27342181	 -0.00031195	  0.00019108	  7.27310986	  0.99904717	  0.99949697  0.49327128
+9921	 -6.27342188	 -0.00031191	  0.00019106	  7.27310997	  0.99904727	  0.99949702  0.49327122
+9922	 -6.27342196	 -0.00031188	  0.00019105	  7.27311007	  0.99904737	  0.99949707  0.49327128
+9923	 -6.27342203	 -0.00031185	  0.00019103	  7.27311018	  0.99904746	  0.99949712  0.49327113
+9924	 -6.27342211	 -0.00031182	  0.00019101	  7.27311029	  0.99904756	  0.99949717  0.49327121
+9925	 -6.27342218	 -0.00031179	  0.00019099	  7.27311039	  0.99904765	  0.99949722  0.49327115
+9926	 -6.27342226	 -0.00031176	  0.00019097	  7.27311050	  0.99904775	  0.99949727  0.49327114
+9927	 -6.27342233	 -0.00031173	  0.00019095	  7.27311061	  0.99904785	  0.99949733  0.49327102
+9928	 -6.27342241	 -0.00031169	  0.00019093	  7.27311071	  0.99904794	  0.99949738  0.49327120
+9929	 -6.27342248	 -0.00031166	  0.00019091	  7.27311082	  0.99904804	  0.99949743  0.49327130
+9930	 -6.27342256	 -0.00031163	  0.00019089	  7.27311093	  0.99904813	  0.99949748  0.49327109
+9931	 -6.27342263	 -0.00031160	  0.00019087	  7.27311103	  0.99904823	  0.99949753  0.49327132
+9932	 -6.27342271	 -0.00031157	  0.00019085	  7.27311114	  0.99904833	  0.99949758  0.49327146
+9933	 -6.27342278	 -0.00031154	  0.00019083	  7.27311125	  0.99904842	  0.99949763  0.49327090
+9934	 -6.27342286	 -0.00031151	  0.00019081	  7.27311135	  0.99904852	  0.99949768  0.49327123
+9935	 -6.27342293	 -0.00031147	  0.00019080	  7.27311146	  0.99904861	  0.99949773  0.49327134
+9936	 -6.27342301	 -0.00031144	  0.00019078	  7.27311156	  0.99904871	  0.99949778  0.49327133
+9937	 -6.27342308	 -0.00031141	  0.00019076	  7.27311167	  0.99904880	  0.99949783  0.49327117
+9938	 -6.27342316	 -0.00031138	  0.00019074	  7.27311178	  0.99904890	  0.99949788  0.49327124
+9939	 -6.27342323	 -0.00031135	  0.00019072	  7.27311188	  0.99904900	  0.99949793  0.49327116
+9940	 -6.27342331	 -0.00031132	  0.00019070	  7.27311199	  0.99904909	  0.99949798  0.49327125
+9941	 -6.27342338	 -0.00031129	  0.00019068	  7.27311210	  0.99904919	  0.99949803  0.49327132
+9942	 -6.27342346	 -0.00031126	  0.00019066	  7.27311220	  0.99904928	  0.99949808  0.49327161
+9943	 -6.27342353	 -0.00031122	  0.00019064	  7.27311231	  0.99904938	  0.99949813  0.49327137
+9944	 -6.27342361	 -0.00031119	  0.00019062	  7.27311242	  0.99904947	  0.99949818  0.49327141
+9945	 -6.27342368	 -0.00031116	  0.00019060	  7.27311252	  0.99904957	  0.99949824  0.49327151
+9946	 -6.27342376	 -0.00031113	  0.00019058	  7.27311263	  0.99904966	  0.99949829  0.49327147
+9947	 -6.27342383	 -0.00031110	  0.00019057	  7.27311273	  0.99904976	  0.99949834  0.49327157
+9948	 -6.27342391	 -0.00031107	  0.00019055	  7.27311284	  0.99904986	  0.99949839  0.49327158
+9949	 -6.27342398	 -0.00031104	  0.00019053	  7.27311295	  0.99904995	  0.99949844  0.49327140
+9950	 -6.27342406	 -0.00031101	  0.00019051	  7.27311305	  0.99905005	  0.99949849  0.49327149
+9951	 -6.27342413	 -0.00031097	  0.00019049	  7.27311316	  0.99905014	  0.99949854  0.49327130
+9952	 -6.27342421	 -0.00031094	  0.00019047	  7.27311326	  0.99905024	  0.99949859  0.49327138
+9953	 -6.27342428	 -0.00031091	  0.00019045	  7.27311337	  0.99905033	  0.99949864  0.49327154
+9954	 -6.27342436	 -0.00031088	  0.00019043	  7.27311348	  0.99905043	  0.99949869  0.49327144
+9955	 -6.27342443	 -0.00031085	  0.00019041	  7.27311358	  0.99905052	  0.99949874  0.49327149
+9956	 -6.27342451	 -0.00031082	  0.00019039	  7.27311369	  0.99905062	  0.99949879  0.49327160
+9957	 -6.27342458	 -0.00031079	  0.00019037	  7.27311379	  0.99905071	  0.99949884  0.49327162
+9958	 -6.27342466	 -0.00031076	  0.00019035	  7.27311390	  0.99905081	  0.99949889  0.49327146
+9959	 -6.27342473	 -0.00031072	  0.00019034	  7.27311401	  0.99905091	  0.99949894  0.49327178
+9960	 -6.27342480	 -0.00031069	  0.00019032	  7.27311411	  0.99905100	  0.99949899  0.49327156
+9961	 -6.27342488	 -0.00031066	  0.00019030	  7.27311422	  0.99905110	  0.99949904  0.49327151
+9962	 -6.27342495	 -0.00031063	  0.00019028	  7.27311432	  0.99905119	  0.99949909  0.49327157
+9963	 -6.27342503	 -0.00031060	  0.00019026	  7.27311443	  0.99905129	  0.99949914  0.49327162
+9964	 -6.27342510	 -0.00031057	  0.00019024	  7.27311453	  0.99905138	  0.99949919  0.49327180
+9965	 -6.27342518	 -0.00031054	  0.00019022	  7.27311464	  0.99905148	  0.99949924  0.49327153
+9966	 -6.27342525	 -0.00031051	  0.00019020	  7.27311475	  0.99905157	  0.99949929  0.49327170
+9967	 -6.27342533	 -0.00031047	  0.00019018	  7.27311485	  0.99905167	  0.99949934  0.49327164
+9968	 -6.27342540	 -0.00031044	  0.00019016	  7.27311496	  0.99905176	  0.99949939  0.49327177
+9969	 -6.27342548	 -0.00031041	  0.00019014	  7.27311506	  0.99905186	  0.99949944  0.49327171
+9970	 -6.27342555	 -0.00031038	  0.00019013	  7.27311517	  0.99905195	  0.99949949  0.49327163
+9971	 -6.27342563	 -0.00031035	  0.00019011	  7.27311527	  0.99905205	  0.99949954  0.49327148
+9972	 -6.27342570	 -0.00031032	  0.00019009	  7.27311538	  0.99905214	  0.99949959  0.49327177
+9973	 -6.27342577	 -0.00031029	  0.00019007	  7.27311549	  0.99905224	  0.99949964  0.49327190
+9974	 -6.27342585	 -0.00031026	  0.00019005	  7.27311559	  0.99905233	  0.99949969  0.49327174
+9975	 -6.27342592	 -0.00031023	  0.00019003	  7.27311570	  0.99905243	  0.99949974  0.49327179
+9976	 -6.27342600	 -0.00031019	  0.00019001	  7.27311580	  0.99905252	  0.99949979  0.49327165
+9977	 -6.27342607	 -0.00031016	  0.00018999	  7.27311591	  0.99905262	  0.99949984  0.49327180
+9978	 -6.27342615	 -0.00031013	  0.00018997	  7.27311601	  0.99905271	  0.99949989  0.49327176
+9979	 -6.27342622	 -0.00031010	  0.00018995	  7.27311612	  0.99905281	  0.99949994  0.49327155
+9980	 -6.27342630	 -0.00031007	  0.00018993	  7.27311622	  0.99905290	  0.99949999  0.49327169
+9981	 -6.27342637	 -0.00031004	  0.00018992	  7.27311633	  0.99905300	  0.99950004  0.49327184
+9982	 -6.27342644	 -0.00031001	  0.00018990	  7.27311644	  0.99905309	  0.99950009  0.49327184
+9983	 -6.27342652	 -0.00030998	  0.00018988	  7.27311654	  0.99905319	  0.99950014  0.49327176
+9984	 -6.27342659	 -0.00030995	  0.00018986	  7.27311665	  0.99905328	  0.99950019  0.49327184
+9985	 -6.27342667	 -0.00030992	  0.00018984	  7.27311675	  0.99905338	  0.99950024  0.49327166
+9986	 -6.27342674	 -0.00030988	  0.00018982	  7.27311686	  0.99905347	  0.99950029  0.49327222
+9987	 -6.27342682	 -0.00030985	  0.00018980	  7.27311696	  0.99905357	  0.99950034  0.49327211
+9988	 -6.27342689	 -0.00030982	  0.00018978	  7.27311707	  0.99905366	  0.99950039  0.49327202
+9989	 -6.27342696	 -0.00030979	  0.00018976	  7.27311717	  0.99905376	  0.99950044  0.49327179
+9990	 -6.27342704	 -0.00030976	  0.00018974	  7.27311728	  0.99905385	  0.99950049  0.49327176
+9991	 -6.27342711	 -0.00030973	  0.00018973	  7.27311738	  0.99905394	  0.99950054  0.49327202
+9992	 -6.27342719	 -0.00030970	  0.00018971	  7.27311749	  0.99905404	  0.99950059  0.49327184
+9993	 -6.27342726	 -0.00030967	  0.00018969	  7.27311759	  0.99905413	  0.99950064  0.49327198
+9994	 -6.27342733	 -0.00030964	  0.00018967	  7.27311770	  0.99905423	  0.99950069  0.49327205
+9995	 -6.27342741	 -0.00030961	  0.00018965	  7.27311780	  0.99905432	  0.99950074  0.49327200
+9996	 -6.27342748	 -0.00030957	  0.00018963	  7.27311791	  0.99905442	  0.99950079  0.49327197
+9997	 -6.27342756	 -0.00030954	  0.00018961	  7.27311801	  0.99905451	  0.99950084  0.49327183
+9998	 -6.27342763	 -0.00030951	  0.00018959	  7.27311812	  0.99905461	  0.99950089  0.49327208
+9999	 -6.27342771	 -0.00030948	  0.00018957	  7.27311822	  0.99905470	  0.99950094  0.49327205
+10000	 -6.27342778	 -0.00030945	  0.00018956	  7.27311833	  0.99905480	  0.99950099  0.49327194
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/79North.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/79North.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/79North.exp	(revision 21239)
@@ -0,0 +1,24 @@
+## Name:DomainOutline
+## Icon:0
+# Points Count Value
+18 1.000000
+# X pos Y pos
+464009.1397656691 -1027407.4008438819
+434858.8796422836 -1057322.8251592305
+420709.3008232680 -1062000.9573566925
+409964.1319456697 -1051906.0405095378
+408368.3147856303 -1063478.2622611541
+403368.0876841737 -1083544.9872134251
+426135.0791674018 -1101272.6460669651
+444221.0069811812 -1107551.1919109272
+462838.8738483069 -1083298.7697293481
+451455.3781066929 -1081082.8123726556
+474328.7574005903 -1040333.8187579215
+490074.1533796453 -1041072.4712101523
+491111.0844876733 -1038645.7820016426
+489754.9899476374 -1026299.4221655356
+477094.8404779918 -1020390.2025476890
+471001.4291198556 -1014587.7884811594
+468158.2643817714 -1015096.5266400346
+464009.1397656691 -1027407.4008438819
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/79NorthShelf.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/79NorthShelf.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/79NorthShelf.exp	(revision 21239)
@@ -0,0 +1,13 @@
+## Name:IceShelf
+## Icon:0
+# Points Count Value
+7 1.000000
+# X pos Y pos
+434007.7771569293 -1056707.2814490383
+452306.4805920472 -1080467.2686624634
+493584.9511317319 -1048458.9957324605
+496457.4220198027 -1015096.5266400346
+460179.1785815747 -1009310.4157642265
+441667.6995251182 -1023714.1385827276
+434007.7771569293 -1056707.2814490383
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/CrossLineEISMINT.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/CrossLineEISMINT.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/CrossLineEISMINT.exp	(revision 21239)
@@ -0,0 +1,7 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+2 1.
+# X pos Y pos
+10000 199999 
+10000 1
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP10000.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP10000.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP10000.exp	(revision 21239)
@@ -0,0 +1,7 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+2 1.
+# X pos Y pos
+0 2500
+10000 2500
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP100000.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP100000.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP100000.exp	(revision 21239)
@@ -0,0 +1,7 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+2 1.
+# X pos Y pos
+0 50000
+100000 50000
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP160000.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP160000.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP160000.exp	(revision 21239)
@@ -0,0 +1,7 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+2 1.
+# X pos Y pos
+0 40000
+160000 40000
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP20000.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP20000.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP20000.exp	(revision 21239)
@@ -0,0 +1,7 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+2 1.
+# X pos Y pos
+0 5000
+20000 5000
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP40000.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP40000.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP40000.exp	(revision 21239)
@@ -0,0 +1,7 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+2 1.
+# X pos Y pos
+0 10000
+40000 10000
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP5000.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP5000.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP5000.exp	(revision 21239)
@@ -0,0 +1,7 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+2 1.
+# X pos Y pos
+0 1225
+5000 1225
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP80000.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP80000.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIP80000.exp	(revision 21239)
@@ -0,0 +1,7 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+2 1.
+# X pos Y pos
+0 20000
+80000 20000
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIPE.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIPE.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/ISMIPE.exp	(revision 21239)
@@ -0,0 +1,7 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+2 1.
+# X pos Y pos
+5 0 
+5 5000
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/MassFlux1.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/MassFlux1.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/MassFlux1.exp	(revision 21239)
@@ -0,0 +1,7 @@
+## Name:MassFlux1
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+200000 400000
+500000 800000
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/MassFlux2.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/MassFlux2.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/MassFlux2.exp	(revision 21239)
@@ -0,0 +1,7 @@
+## Name:MassFlux2
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+500000 800000
+800000 400000
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/MassFlux3.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/MassFlux3.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/MassFlux3.exp	(revision 21239)
@@ -0,0 +1,7 @@
+## Name:MassFlux3
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+200000 400000
+800000 400000
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/MassFlux4.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/MassFlux4.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/MassFlux4.exp	(revision 21239)
@@ -0,0 +1,17 @@
+## Name:circle
+## Icon:0
+# Points Count Value
+11 1.000000
+# X pos Y pos
+800000.0000000000 500000.0000000000
+742705.0983124842 676335.5756877420
+592705.0983124842 785316.9548885461
+407294.9016875158 785316.9548885461
+257294.9016875158 676335.5756877420
+200000.0000000000 500000.0000000001
+257294.9016875158 323664.4243122581
+407294.9016875157 214683.0451114539
+592705.0983124842 214683.0451114539
+742705.0983124842 323664.4243122580
+800000.0000000000 500000.0000000000
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/MassFlux5.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/MassFlux5.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/MassFlux5.exp	(revision 21239)
@@ -0,0 +1,107 @@
+## Name:circle
+## Icon:0
+# Points Count Value
+101 1.000000
+# X pos Y pos
+700000.0000000000 500000.0000000000
+699605.3456856543 512558.1039058627
+698422.9402628955 525066.6467128609
+696457.4501457377 537476.2629171449
+693716.6322257263 549737.9774329710
+690211.3032590307 561803.3988749895
+685955.2971776503 573624.9105369356
+680965.4104932039 585155.8583130145
+675261.3360087727 596350.7348203431
+668865.5851004031 607165.3589957993
+661803.3988749895 617557.0504584946
+654102.6485551578 627484.7979497380
+645793.7254842822 636909.4211857377
+636909.4211857377 645793.7254842822
+627484.7979497379 654102.6485551578
+617557.0504584946 661803.3988749895
+607165.3589957993 668865.5851004031
+596350.7348203431 675261.3360087727
+585155.8583130145 680965.4104932039
+573624.9105369356 685955.2971776503
+561803.3988749895 690211.3032590307
+549737.9774329709 693716.6322257263
+537476.2629171449 696457.4501457377
+525066.6467128609 698422.9402628955
+512558.1039058627 699605.3456856543
+499999.9999999999 700000.0000000000
+487441.8960941373 699605.3456856543
+474933.3532871392 698422.9402628955
+462523.7370828550 696457.4501457377
+450262.0225670291 693716.6322257263
+438196.6011250105 690211.3032590307
+426375.0894630644 685955.2971776503
+414844.1416869854 680965.4104932039
+403649.2651796569 675261.3360087727
+392834.6410042006 668865.5851004031
+382442.9495415054 661803.3988749895
+372515.2020502621 654102.6485551578
+363090.5788142623 645793.7254842822
+354206.2745157176 636909.4211857377
+345897.3514448421 627484.7979497379
+338196.6011250105 617557.0504584947
+331134.4148995969 607165.3589957993
+324738.6639912273 596350.7348203431
+319034.5895067961 585155.8583130145
+314044.7028223497 573624.9105369356
+309788.6967409693 561803.3988749895
+306283.3677742738 549737.9774329710
+303542.5498542623 537476.2629171449
+301577.0597371045 525066.6467128608
+300394.6543143457 512558.1039058626
+300000.0000000000 500000.0000000000
+300394.6543143457 487441.8960941373
+301577.0597371045 474933.3532871392
+303542.5498542623 462523.7370828551
+306283.3677742737 450262.0225670291
+309788.6967409693 438196.6011250105
+314044.7028223497 426375.0894630644
+319034.5895067961 414844.1416869855
+324738.6639912273 403649.2651796569
+331134.4148995970 392834.6410042007
+338196.6011250105 382442.9495415054
+345897.3514448422 372515.2020502621
+354206.2745157177 363090.5788142623
+363090.5788142623 354206.2745157177
+372515.2020502621 345897.3514448421
+382442.9495415054 338196.6011250105
+392834.6410042006 331134.4148995971
+403649.2651796569 324738.6639912273
+414844.1416869856 319034.5895067960
+426375.0894630644 314044.7028223497
+438196.6011250105 309788.6967409693
+450262.0225670289 306283.3677742738
+462523.7370828551 303542.5498542623
+474933.3532871393 301577.0597371045
+487441.8960941373 300394.6543143457
+499999.9999999999 300000.0000000000
+512558.1039058627 300394.6543143457
+525066.6467128608 301577.0597371045
+537476.2629171450 303542.5498542623
+549737.9774329710 306283.3677742738
+561803.3988749895 309788.6967409693
+573624.9105369357 314044.7028223497
+585155.8583130145 319034.5895067961
+596350.7348203431 324738.6639912273
+607165.3589957993 331134.4148995970
+617557.0504584946 338196.6011250105
+627484.7979497380 345897.3514448422
+636909.4211857377 354206.2745157177
+645793.7254842824 363090.5788142623
+654102.6485551579 372515.2020502621
+661803.3988749895 382442.9495415053
+668865.5851004031 392834.6410042007
+675261.3360087727 403649.2651796569
+680965.4104932039 414844.1416869856
+685955.2971776503 426375.0894630644
+690211.3032590307 438196.6011250105
+693716.6322257263 450262.0225670291
+696457.4501457377 462523.7370828551
+698422.9402628955 474933.3532871393
+699605.3456856543 487441.8960941373
+700000.0000000000 500000.0000000000
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/MassFlux6.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/MassFlux6.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/MassFlux6.exp	(revision 21239)
@@ -0,0 +1,507 @@
+## Name:circle
+## Icon:0
+# Points Count Value
+501 1.000000
+# X pos Y pos
+900000.0000000000 500000.0000000000
+899968.4176815264 505026.4159533411
+899873.6757133200 510052.0381773350
+899715.7890562357 515076.0730679738
+899494.7826424070 520097.7272719078
+899210.6913713086 525116.2078117253
+898863.5601042456 530130.7222111730
+898453.4436572690 535140.4786202973
+897980.4067925201 540144.6859404859
+897444.5242080034 545142.5539493926
+896845.8805257911 550133.2934257217
+896184.5702786604 555116.1162738552
+895460.6978951656 560090.2356483028
+894674.3776831472 565054.8660779535
+893825.7338116821 570009.2235901104
+892914.9002914755 574952.5258342898
+891942.0209536988 579883.9922057628
+890907.2494272774 584802.8439688219
+889810.7491146309 589708.3043797525
+888652.6931658696 594599.5988094899
+887433.2644514524 599475.9548659419
+886152.6555333096 604336.6025159587
+884811.0686344344 609180.7742069301
+883408.7156069503 614007.7049879904
+881945.8178986572 618816.6326308140
+880422.6065180614 623606.7977499790
+878839.3219978977 628377.4439228838
+877196.2143571458 633127.8178091947
+875493.5430615495 637857.1692698068
+873731.5769826449 642564.7514853003
+871910.5943553005 647249.8210738712
+870030.8827337832 651911.6382087205
+868092.7389463482 656549.4667348809
+866096.4690483670 661162.5742854651
+864042.3882739983 665750.2323973137
+861930.8209864078 670311.7166260290
+859762.1006265484 674846.3066603731
+857536.5696605055 679353.2864360129
+855254.5795254178 683831.9442485952
+852916.4905739813 688281.5728661331
+850522.6720175454 692701.4696406862
+848073.5018678103 697090.9366193167
+845569.3668771342 701449.2806543043
+843010.6624774609 705775.8135126026
+840397.7927178767 710069.8519845183
+837731.1702008061 714330.7179915986
+835011.2160168567 718557.7386937076
+832238.3596783250 722750.2465952751
+829413.0390513709 726907.5796507027
+826535.7002868736 731029.0813689070
+823606.7977499790 735114.1009169893
+820626.7939483507 739161.9932230075
+817596.1594591341 743172.1190778422
+814515.3728546476 747143.8452361338
+811384.9206268094 751076.5445162802
+808205.2971103156 754969.5958994759
+804977.0044045792 758822.3846277777
+801700.5522944415 762634.3023011826
+798376.4581696729 766404.7469737006
+795005.2469432696 770133.1232484097
+791587.4509685646 773818.8423714754
+788123.6099551627 777461.3223251220
+784614.2708837141 781059.9879195397
+781059.9879195397 784614.2708837141
+777461.3223251220 788123.6099551627
+773818.8423714754 791587.4509685646
+770133.1232484097 795005.2469432696
+766404.7469737006 798376.4581696729
+762634.3023011826 801700.5522944415
+758822.3846277777 804977.0044045792
+754969.5958994759 808205.2971103156
+751076.5445162802 811384.9206268094
+747143.8452361338 814515.3728546476
+743172.1190778422 817596.1594591341
+739161.9932230075 820626.7939483506
+735114.1009169891 823606.7977499790
+731029.0813689070 826535.7002868736
+726907.5796507025 829413.0390513709
+722750.2465952751 832238.3596783250
+718557.7386937076 835011.2160168567
+714330.7179915986 837731.1702008061
+710069.8519845183 840397.7927178767
+705775.8135126026 843010.6624774609
+701449.2806543044 845569.3668771342
+697090.9366193167 848073.5018678103
+692701.4696406862 850522.6720175454
+688281.5728661331 852916.4905739813
+683831.9442485950 855254.5795254179
+679353.2864360129 857536.5696605055
+674846.3066603731 859762.1006265484
+670311.7166260290 861930.8209864078
+665750.2323973136 864042.3882739983
+661162.5742854651 866096.4690483670
+656549.4667348809 868092.7389463482
+651911.6382087205 870030.8827337832
+647249.8210738711 871910.5943553005
+642564.7514853003 873731.5769826449
+637857.1692698068 875493.5430615495
+633127.8178091947 877196.2143571458
+628377.4439228838 878839.3219978977
+623606.7977499790 880422.6065180614
+618816.6326308140 881945.8178986572
+614007.7049879904 883408.7156069503
+609180.7742069301 884811.0686344344
+604336.6025159588 886152.6555333096
+599475.9548659419 887433.2644514524
+594599.5988094899 888652.6931658696
+589708.3043797525 889810.7491146309
+584802.8439688218 890907.2494272774
+579883.9922057628 891942.0209536988
+574952.5258342898 892914.9002914755
+570009.2235901104 893825.7338116821
+565054.8660779534 894674.3776831472
+560090.2356483028 895460.6978951656
+555116.1162738552 896184.5702786604
+550133.2934257217 896845.8805257911
+545142.5539493926 897444.5242080034
+540144.6859404859 897980.4067925201
+535140.4786202973 898453.4436572690
+530130.7222111732 898863.5601042456
+525116.2078117253 899210.6913713086
+520097.7272719078 899494.7826424070
+515076.0730679738 899715.7890562357
+510052.0381773350 899873.6757133200
+505026.4159533410 899968.4176815264
+500000.0000000000 900000.0000000000
+494973.5840466589 899968.4176815264
+489947.9618226651 899873.6757133200
+484923.9269320262 899715.7890562357
+479902.2727280921 899494.7826424070
+474883.7921882746 899210.6913713086
+469869.2777888268 898863.5601042456
+464859.5213797027 898453.4436572690
+459855.3140595140 897980.4067925201
+454857.4460506073 897444.5242080034
+449866.7065742782 896845.8805257911
+444883.8837261448 896184.5702786604
+439909.7643516972 895460.6978951655
+434945.1339220466 894674.3776831472
+429990.7764098896 893825.7338116821
+425047.4741657102 892914.9002914755
+420116.0077942372 891942.0209536988
+415197.1560311782 890907.2494272774
+410291.6956202475 889810.7491146309
+405400.4011905101 888652.6931658696
+400524.0451340580 887433.2644514524
+395663.3974840412 886152.6555333096
+390819.2257930699 884811.0686344344
+385992.2950120096 883408.7156069505
+381183.3673691860 881945.8178986572
+376393.2022500210 880422.6065180614
+371622.5560771162 878839.3219978977
+366872.1821908053 877196.2143571458
+362142.8307301932 875493.5430615495
+357435.2485146997 873731.5769826449
+352750.1789261288 871910.5943553005
+348088.3617912795 870030.8827337832
+343450.5332651191 868092.7389463482
+338837.4257145349 866096.4690483670
+334249.7676026863 864042.3882739983
+329688.2833739709 861930.8209864078
+325153.6933396268 859762.1006265484
+320646.7135639872 857536.5696605055
+316168.0557514048 855254.5795254179
+311718.4271338669 852916.4905739813
+307298.5303593138 850522.6720175454
+302909.0633806834 848073.5018678103
+298550.7193456957 845569.3668771342
+294224.1864873974 843010.6624774609
+289930.1480154817 840397.7927178766
+285669.2820084015 837731.1702008061
+281442.2613062924 835011.2160168567
+277249.7534047248 832238.3596783250
+273092.4203492973 829413.0390513709
+268970.9186310929 826535.7002868736
+264885.8990830108 823606.7977499790
+260838.0067769924 820626.7939483506
+256827.8809221578 817596.1594591341
+252856.1547638662 814515.3728546475
+248923.4554837199 811384.9206268094
+245030.4041005241 808205.2971103156
+241177.6153722222 804977.0044045791
+237365.6976988174 801700.5522944415
+233595.2530262994 798376.4581696729
+229866.8767515902 795005.2469432696
+226181.1576285245 791587.4509685646
+222538.6776748779 788123.6099551627
+218940.0120804604 784614.2708837142
+215385.7291162859 781059.9879195397
+211876.3900448372 777461.3223251220
+208412.5490314353 773818.8423714754
+204994.7530567305 770133.1232484098
+201623.5418303271 766404.7469737006
+198299.4477055584 762634.3023011826
+195022.9955954208 758822.3846277777
+191794.7028896842 754969.5958994757
+188615.0793731906 751076.5445162803
+185484.6271453524 747143.8452361338
+182403.8405408658 743172.1190778421
+179373.2060516493 739161.9932230075
+176393.2022500210 735114.1009169893
+173464.2997131264 731029.0813689071
+170586.9609486290 726907.5796507025
+167761.6403216749 722750.2465952751
+164988.7839831433 718557.7386937076
+162268.8297991939 714330.7179915986
+159602.2072821232 710069.8519845182
+156989.3375225391 705775.8135126026
+154430.6331228659 701449.2806543044
+151926.4981321897 697090.9366193167
+149477.3279824546 692701.4696406861
+147083.5094260186 688281.5728661329
+144745.4204745822 683831.9442485952
+142463.4303394945 679353.2864360129
+140237.8993734516 674846.3066603731
+138069.1790135922 670311.7166260290
+135957.6117260017 665750.2323973136
+133903.5309516330 661162.5742854651
+131907.2610536519 656549.4667348809
+129969.1172662167 651911.6382087204
+128089.4056446994 647249.8210738711
+126268.4230173552 642564.7514853003
+124506.4569384504 637857.1692698068
+122803.7856428542 633127.8178091946
+121160.6780021022 628377.4439228837
+119577.3934819386 623606.7977499790
+118054.1821013428 618816.6326308140
+116591.2843930496 614007.7049879904
+115188.9313655656 609180.7742069301
+113847.3444666904 604336.6025159588
+112566.7355485476 599475.9548659419
+111347.3068341304 594599.5988094899
+110189.2508853691 589708.3043797524
+109092.7505727226 584802.8439688219
+108057.9790463013 579883.9922057628
+107085.0997085245 574952.5258342898
+106174.2661883179 570009.2235901103
+105325.6223168527 565054.8660779534
+104539.3021048344 560090.2356483028
+103815.4297213395 555116.1162738552
+103154.1194742089 550133.2934257216
+102555.4757919966 545142.5539493926
+102019.5932074799 540144.6859404860
+101546.5563427310 535140.4786202973
+101136.4398957544 530130.7222111730
+100789.3086286914 525116.2078117252
+100505.2173575930 520097.7272719078
+100284.2109437643 515076.0730679738
+100126.3242866800 510052.0381773349
+100031.5823184735 505026.4159533409
+100000.0000000000 500000.0000000002
+100031.5823184735 494973.5840466591
+100126.3242866800 489947.9618226651
+100284.2109437643 484923.9269320263
+100505.2173575929 479902.2727280924
+100789.3086286914 474883.7921882748
+101136.4398957544 469869.2777888271
+101546.5563427310 464859.5213797028
+102019.5932074799 459855.3140595143
+102555.4757919966 454857.4460506075
+103154.1194742089 449866.7065742785
+103815.4297213395 444883.8837261449
+104539.3021048344 439909.7643516974
+105325.6223168527 434945.1339220467
+106174.2661883179 429990.7764098897
+107085.0997085245 425047.4741657103
+108057.9790463013 420116.0077942373
+109092.7505727226 415197.1560311784
+110189.2508853691 410291.6956202477
+111347.3068341304 405400.4011905103
+112566.7355485475 400524.0451340582
+113847.3444666904 395663.3974840415
+115188.9313655656 390819.2257930701
+116591.2843930496 385992.2950120097
+118054.1821013428 381183.3673691861
+119577.3934819385 376393.2022500213
+121160.6780021022 371622.5560771164
+122803.7856428542 366872.1821908055
+124506.4569384503 362142.8307301933
+126268.4230173551 357435.2485147000
+128089.4056446993 352750.1789261290
+129969.1172662167 348088.3617912797
+131907.2610536518 343450.5332651191
+133903.5309516328 338837.4257145352
+135957.6117260017 334249.7676026865
+138069.1790135921 329688.2833739711
+140237.8993734515 325153.6933396269
+142463.4303394944 320646.7135639872
+144745.4204745821 316168.0557514051
+147083.5094260186 311718.4271338672
+149477.3279824545 307298.5303593140
+151926.4981321897 302909.0633806834
+154430.6331228658 298550.7193456959
+156989.3375225390 294224.1864873975
+159602.2072821232 289930.1480154819
+162268.8297991939 285669.2820084015
+164988.7839831432 281442.2613062926
+167761.6403216748 277249.7534047250
+170586.9609486290 273092.4203492975
+173464.2997131264 268970.9186310930
+176393.2022500209 264885.8990830109
+179373.2060516492 260838.0067769926
+182403.8405408658 256827.8809221580
+185484.6271453524 252856.1547638664
+188615.0793731905 248923.4554837200
+191794.7028896842 245030.4041005243
+195022.9955954208 241177.6153722224
+198299.4477055584 237365.6976988175
+201623.5418303271 233595.2530262994
+204994.7530567303 229866.8767515904
+208412.5490314353 226181.1576285246
+211876.3900448372 222538.6776748781
+215385.7291162858 218940.0120804604
+218940.0120804601 215385.7291162860
+222538.6776748779 211876.3900448374
+226181.1576285244 208412.5490314355
+229866.8767515902 204994.7530567305
+233595.2530262992 201623.5418303273
+237365.6976988173 198299.4477055586
+241177.6153722220 195022.9955954211
+245030.4041005242 191794.7028896842
+248923.4554837196 188615.0793731908
+252856.1547638661 185484.6271453525
+256827.8809221577 182403.8405408660
+260838.0067769924 179373.2060516494
+264885.8990830107 176393.2022500210
+268970.9186310926 173464.2997131267
+273092.4203492975 170586.9609486290
+277249.7534047245 167761.6403216751
+281442.2613062924 164988.7839831432
+285669.2820084011 162268.8297991941
+289930.1480154816 159602.2072821233
+294224.1864873973 156989.3375225391
+298550.7193456956 154430.6331228659
+302909.0633806833 151926.4981321898
+307298.5303593136 149477.3279824547
+311718.4271338671 147083.5094260186
+316168.0557514046 144745.4204745823
+320646.7135639869 142463.4303394946
+325153.6933396267 140237.8993734517
+329688.2833739708 138069.1790135922
+334249.7676026862 135957.6117260018
+338837.4257145349 133903.5309516330
+343450.5332651191 131907.2610536519
+348088.3617912793 129969.1172662169
+352750.1789261285 128089.4056446995
+357435.2485146995 126268.4230173553
+362142.8307301930 124506.4569384504
+366872.1821908052 122803.7856428543
+371622.5560771161 121160.6780021023
+376393.2022500210 119577.3934819386
+381183.3673691860 118054.1821013428
+385992.2950120096 116591.2843930496
+390819.2257930696 115188.9313655657
+395663.3974840410 113847.3444666906
+400524.0451340579 112566.7355485476
+405400.4011905100 111347.3068341304
+410291.6956202474 110189.2508853691
+415197.1560311781 109092.7505727226
+420116.0077942372 108057.9790463013
+425047.4741657098 107085.0997085246
+429990.7764098896 106174.2661883179
+434945.1339220463 105325.6223168529
+439909.7643516969 104539.3021048344
+444883.8837261446 103815.4297213395
+449866.7065742782 103154.1194742089
+454857.4460506073 102555.4757919966
+459855.3140595140 102019.5932074799
+464859.5213797027 101546.5563427310
+469869.2777888266 101136.4398957544
+474883.7921882744 100789.3086286914
+479902.2727280919 100505.2173575930
+484923.9269320260 100284.2109437643
+489947.9618226648 100126.3242866800
+494973.5840466588 100031.5823184735
+499999.9999999999 100000.0000000000
+505026.4159533410 100031.5823184735
+510052.0381773350 100126.3242866800
+515076.0730679735 100284.2109437643
+520097.7272719076 100505.2173575929
+525116.2078117251 100789.3086286914
+530130.7222111729 101136.4398957544
+535140.4786202972 101546.5563427310
+540144.6859404859 102019.5932074799
+545142.5539493926 102555.4757919966
+550133.2934257213 103154.1194742088
+555116.1162738553 103815.4297213395
+560090.2356483026 104539.3021048344
+565054.8660779533 105325.6223168527
+570009.2235901102 106174.2661883179
+574952.5258342897 107085.0997085245
+579883.9922057627 108057.9790463013
+584802.8439688218 109092.7505727226
+589708.3043797525 110189.2508853691
+594599.5988094895 111347.3068341304
+599475.9548659420 112566.7355485476
+604336.6025159585 113847.3444666904
+609180.7742069298 115188.9313655656
+614007.7049879903 116591.2843930496
+618816.6326308139 118054.1821013428
+623606.7977499790 119577.3934819385
+628377.4439228838 121160.6780021022
+633127.8178091947 122803.7856428542
+637857.1692698065 124506.4569384502
+642564.7514853000 126268.4230173551
+647249.8210738710 128089.4056446993
+651911.6382087203 129969.1172662167
+656549.4667348808 131907.2610536518
+661162.5742854651 133903.5309516329
+665750.2323973136 135957.6117260017
+670311.7166260288 138069.1790135920
+674846.3066603732 140237.8993734516
+679353.2864360127 142463.4303394944
+683831.9442485949 144745.4204745821
+688281.5728661328 147083.5094260186
+692701.4696406859 149477.3279824545
+697090.9366193166 151926.4981321897
+701449.2806543043 154430.6331228659
+705775.8135126026 156989.3375225391
+710069.8519845180 159602.2072821231
+714330.7179915984 162268.8297991938
+718557.7386937074 164988.7839831432
+722750.2465952750 167761.6403216748
+726907.5796507024 170586.9609486290
+731029.0813689069 173464.2997131263
+735114.1009169891 176393.2022500210
+739161.9932230075 179373.2060516494
+743172.1190778422 182403.8405408658
+747143.8452361336 185484.6271453522
+751076.5445162799 188615.0793731905
+754969.5958994757 191794.7028896842
+758822.3846277776 195022.9955954208
+762634.3023011824 198299.4477055584
+766404.7469737006 201623.5418303271
+770133.1232484097 204994.7530567304
+773818.8423714754 208412.5490314354
+777461.3223251221 211876.3900448373
+781059.9879195394 215385.7291162857
+784614.2708837140 218940.0120804601
+788123.6099551626 222538.6776748779
+791587.4509685645 226181.1576285244
+795005.2469432695 229866.8767515901
+798376.4581696729 233595.2530262993
+801700.5522944415 237365.6976988174
+804977.0044045789 241177.6153722220
+808205.2971103155 245030.4041005239
+811384.9206268091 248923.4554837196
+814515.3728546475 252856.1547638661
+817596.1594591341 256827.8809221577
+820626.7939483506 260838.0067769923
+823606.7977499790 264885.8990830106
+826535.7002868736 268970.9186310929
+829413.0390513709 273092.4203492974
+832238.3596783249 277249.7534047245
+835011.2160168565 281442.2613062921
+837731.1702008059 285669.2820084011
+840397.7927178766 289930.1480154815
+843010.6624774609 294224.1864873973
+845569.3668771341 298550.7193456956
+848073.5018678103 302909.0633806833
+850522.6720175454 307298.5303593139
+852916.4905739813 311718.4271338670
+855254.5795254176 316168.0557514046
+857536.5696605054 320646.7135639869
+859762.1006265483 325153.6933396267
+861930.8209864078 329688.2833739708
+864042.3882739982 334249.7676026862
+866096.4690483670 338837.4257145348
+868092.7389463481 343450.5332651190
+870030.8827337832 348088.3617912795
+871910.5943553005 352750.1789261285
+873731.5769826447 357435.2485146995
+875493.5430615495 362142.8307301929
+877196.2143571457 366872.1821908052
+878839.3219978977 371622.5560771161
+880422.6065180614 376393.2022500209
+881945.8178986572 381183.3673691860
+883408.7156069503 385992.2950120096
+884811.0686344344 390819.2257930696
+886152.6555333094 395663.3974840409
+887433.2644514524 400524.0451340579
+888652.6931658696 405400.4011905100
+889810.7491146307 410291.6956202474
+890907.2494272774 415197.1560311780
+891942.0209536988 420116.0077942371
+892914.9002914755 425047.4741657102
+893825.7338116821 429990.7764098896
+894674.3776831471 434945.1339220463
+895460.6978951655 439909.7643516969
+896184.5702786604 444883.8837261446
+896845.8805257911 449866.7065742781
+897444.5242080034 454857.4460506072
+897980.4067925201 459855.3140595140
+898453.4436572690 464859.5213797027
+898863.5601042456 469869.2777888269
+899210.6913713086 474883.7921882743
+899494.7826424070 479902.2727280919
+899715.7890562357 484923.9269320259
+899873.6757133200 489947.9618226648
+899968.4176815264 494973.5840466588
+900000.0000000000 500000.0000000000
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Pig.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Pig.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Pig.exp	(revision 21239)
@@ -0,0 +1,14 @@
+## Name:Pig
+## Icon:0
+# Points Count Value
+8 1.000000
+# X pos Y pos
+-1630726.5154549279 -324668.7721082006
+-1596284.8605673832 -324668.7721082006
+-1538422.8803563081 -314529.3627584913
+-1512247.2226417740 -243553.4973105265
+-1556332.5408978313 -148496.5346570023
+-1611439.1887179029 -151031.3869944296
+-1670678.8351244798 -235948.9402982446
+-1630726.5154549279 -324668.7721082006
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/PigIslands.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/PigIslands.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/PigIslands.exp	(revision 21239)
@@ -0,0 +1,68 @@
+## Name:Island
+## Icon:0
+# Points Count  Value
+7 1.000000
+# X pos Y pos
+-1788144.703034 -331058.869467
+-1790984.462389 -330247.509651
+-1790984.462389 -332073.069237
+-1789767.422665 -334507.148684
+-1787739.023126 -336129.868316
+-1786521.983402 -334912.828592
+-1788144.703034 -331058.869467
+
+## Name:Island
+## Icon:0
+# Points Count  Value
+9 1.000000
+# X pos Y pos
+-1751633.511323 -319902.672000
+-1753053.391000 -318279.952368
+-1756095.990310 -318077.112414
+-1754878.950586 -320916.871770
+-1754067.590770 -326190.710572
+-1752647.711092 -326190.710572
+-1751430.671369 -324365.150987
+-1752039.191231 -322133.911493
+-1751633.511323 -319902.672000
+
+## Name:Island
+## Icon:0
+# Points Count  Value
+7 1.000000
+# X pos Y pos
+-1644331.175683 -296576.077296
+-1645548.215407 -297995.956973
+-1645345.375453 -299415.836651
+-1643722.655821 -300024.356513
+-1641694.256282 -298807.316789
+-1642302.776144 -296576.077296
+-1644331.175683 -296576.077296
+
+## Name:Island
+## Icon:0
+# Points Count  Value
+8 1.000000
+# X pos Y pos
+-1641694.256282 -318077.112414
+-1641694.256282 -320105.511954
+-1639868.696696 -321728.231586
+-1637434.617249 -320916.871770
+-1637434.617249 -318685.632276
+-1638043.137111 -316454.392783
+-1640477.216558 -316657.232737
+-1641694.256282 -318077.112414
+
+## Name:Island
+## Icon:0
+# Points Count  Value
+7 1.000000
+# X pos Y pos
+-1658732.812414 -359253.623066
+-1660558.371999 -362499.062330
+-1658327.132506 -366961.541316
+-1652039.093933 -367164.381270
+-1652444.773841 -360673.502744
+-1655081.693242 -359050.783112
+-1658732.812414 -359253.623066
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/PigShelves.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/PigShelves.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/PigShelves.exp	(revision 21239)
@@ -0,0 +1,1079 @@
+## Name:
+## Icon:0
+# Points Count Value
+1073 1.000000
+# X pos Y pos
+-1623288.8833276688 -348485.9928101762
+-1596095.2358279999 -341730.0242330000
+-1594724.3783690000 -336371.2178050000
+-1593384.6767620000 -335716.9449280000
+-1591337.9871720001 -334447.5913790000
+-1590800.5631190001 -334607.4475730000
+-1590553.6222590001 -334563.9052400000
+-1590306.6813990001 -334520.3629080000
+-1590059.7405389999 -334476.8205750000
+-1589565.8588200000 -334389.7359090000
+-1589318.9179600000 -334346.1935760000
+-1589071.9771000000 -334302.6512440000
+-1588825.0362400000 -334259.1089110000
+-1588578.0953800001 -334215.5665780000
+-1588287.6121870000 -334418.9651060000
+-1588040.6713280000 -334375.4227730000
+-1587503.2472750000 -334535.2789670000
+-1587256.3064150000 -334491.7366350000
+-1586965.8232219999 -334695.1351620000
+-1586675.3400300001 -334898.5336890000
+-1586384.8568370000 -335101.9322170000
+-1586094.3736439999 -335305.3307440000
+-1585760.3481190000 -335755.6701320000
+-1585469.8649259999 -335959.0686590000
+-1585179.3817330000 -336162.4671860000
+-1584888.8985400000 -336365.8657140000
+-1584598.4153479999 -336569.2642410000
+-1584307.9321550000 -336772.6627680000
+-1584220.8474890001 -337266.5444890000
+-1583930.3642960000 -337469.9430160000
+-1583639.8811039999 -337673.3415440000
+-1583392.9402439999 -337629.7992110000
+-1583145.9993840000 -337586.2568780000
+-1582899.0585240000 -337542.7145450000
+-1582405.1768040000 -337455.6298800000
+-1582158.2359440001 -337412.0875470000
+-1581911.2950850001 -337368.5452140000
+-1581664.3542249999 -337325.0028810000
+-1581417.4133649999 -337281.4605480000
+-1581170.4725050000 -337237.9182160000
+-1580676.5907850000 -337150.8335500000
+-1580429.6499250000 -337107.2912170000
+-1580182.7090660001 -337063.7488850000
+-1579935.7682060001 -337020.2065520000
+-1579601.7426799999 -337470.5459390000
+-1579558.2003470000 -337717.4867990000
+-1579514.6580139999 -337964.4276600000
+-1579471.1156810001 -338211.3685200000
+-1579427.5733490000 -338458.3093800000
+-1579384.0310160001 -338705.2502400000
+-1579296.9463500001 -339199.1319600000
+-1579253.4040170000 -339446.0728210000
+-1579209.8616839999 -339693.0136810000
+-1579166.3193520000 -339939.9545410000
+-1579122.7770189999 -340186.8954010000
+-1578832.2938260001 -340390.2939280000
+-1578788.7514930000 -340637.2347890000
+-1578498.2683000001 -340840.6333160000
+-1578164.2427749999 -341290.9727040000
+-1578120.7004420001 -341537.9135640000
+-1577830.2172490000 -341741.3120910000
+-1577583.2763890000 -341697.7697580000
+-1577292.7931969999 -341901.1682860000
+-1577045.8523370000 -341857.6259530000
+-1576755.3691440001 -342061.0244800000
+-1576261.4874239999 -341973.9398150000
+-1575971.0042310001 -342177.3383420000
+-1575724.0633719999 -342133.7960090000
+-1575433.5801790000 -342337.1945370000
+-1575186.6393190001 -342293.6522040000
+-1574896.1561260000 -342497.0507310000
+-1574649.2152660000 -342453.5083980000
+-1574402.2744070000 -342409.9660660000
+-1573864.8503540000 -342569.8222600000
+-1573617.9094940000 -342526.2799280000
+-1573327.4263009999 -342729.6784550000
+-1573080.4854410000 -342686.1361220000
+-1572833.5445820000 -342642.5937890000
+-1572630.1460549999 -342352.1105960000
+-1572383.2051949999 -342308.5682640000
+-1571932.8658080001 -341974.5427380000
+-1571685.9249480001 -341931.0004050000
+-1571482.5264210000 -341640.5172120000
+-1571235.5855610000 -341596.9748790000
+-1571032.1870339999 -341306.4916860000
+-1570828.7885070001 -341016.0084940000
+-1570421.9914530001 -340435.0421080000
+-1570218.5929260000 -340144.5589150000
+-1570015.1943989999 -339854.0757220000
+-1570058.7367320000 -339607.1348620000
+-1569855.3382049999 -339316.6516690000
+-1569898.8805380000 -339069.7108080000
+-1569695.4820109999 -338779.2276160000
+-1569739.0243430000 -338532.2867550000
+-1569535.6258159999 -338241.8035620000
+-1569579.1681490000 -337994.8627020000
+-1569419.3119550000 -337457.4386490000
+-1569462.8542879999 -337210.4977890000
+-1569259.4557610000 -336920.0145960000
+-1569302.9980939999 -336673.0737360000
+-1569099.5995670001 -336382.5905430000
+-1569143.1418999999 -336135.6496830000
+-1568939.7433730001 -335845.1664900000
+-1568983.2857049999 -335598.2256300000
+-1568779.8871780001 -335307.7424370000
+-1568823.4295109999 -335060.8015770000
+-1568620.0309840001 -334770.3183840000
+-1568663.5733169999 -334523.3775230000
+-1568707.1156500001 -334276.4366630000
+-1568503.7171230000 -333985.9534700000
+-1568547.2594560001 -333739.0126100000
+-1568634.3441210000 -333245.1308900000
+-1568430.9455939999 -332954.6476970000
+-1568474.4879270000 -332707.7068370000
+-1568271.0893999999 -332417.2236440000
+-1568314.6317330000 -332170.2827840000
+-1568358.1740659999 -331923.3419240000
+-1568154.7755390001 -331632.8587310000
+-1568198.3178719999 -331385.9178700000
+-1567994.9193450001 -331095.4346770000
+-1568038.4616779999 -330848.4938170000
+-1567835.0631510001 -330558.0106240000
+-1567878.6054839999 -330311.0697640000
+-1567675.2069560001 -330020.5865710000
+-1567718.7492889999 -329773.6457110000
+-1567515.3507620001 -329483.1625180000
+-1567558.8930949999 -329236.2216580000
+-1567399.0369010000 -328698.7976050000
+-1567442.5792340001 -328451.8567450000
+-1567239.1807070000 -328161.3735520000
+-1567282.7230400001 -327914.4326920000
+-1567079.3245130000 -327623.9494990000
+-1567122.8668460001 -327377.0086390000
+-1566919.4683180000 -327086.5254460000
+-1566963.0106510001 -326839.5845850000
+-1566759.6121240000 -326549.1013920000
+-1566556.2135970001 -326258.6181990000
+-1566599.7559300000 -326011.6773390000
+-1566396.3574029999 -325721.1941460000
+-1566439.8997360000 -325474.2532860000
+-1566236.5012089999 -325183.7700930000
+-1566280.0435420000 -324936.8292330000
+-1566120.1873480000 -324399.4051800000
+-1566163.7296810001 -324152.4643200000
+-1565960.3311530000 -323861.9811270000
+-1566003.8734860001 -323615.0402670000
+-1565800.4749590000 -323324.5570740000
+-1565844.0172919999 -323077.6162140000
+-1565640.6187650000 -322787.1330210000
+-1565684.1610979999 -322540.1921610000
+-1565727.7034310000 -322293.2513000000
+-1565814.7880970000 -321799.3695800000
+-1565858.3304290001 -321552.4287200000
+-1565901.8727620000 -321305.4878600000
+-1565945.4150950001 -321058.5470000000
+-1565988.9574279999 -320811.6061390000
+-1566322.9829539999 -320361.2667520000
+-1566366.5252860000 -320114.3258920000
+-1566410.0676190001 -319867.3850320000
+-1566497.1522850001 -319373.5033110000
+-1566540.6946180000 -319126.5624510000
+-1566337.2960910001 -318836.0792580000
+-1566177.4398970001 -318298.6552050000
+-1565974.0413700000 -318008.1720120000
+-1565770.6428429999 -317717.6888190000
+-1565814.1851750000 -317470.7479590000
+-1565857.7275080001 -317223.8070990000
+-1565944.8121740001 -316729.9253780000
+-1565988.3545070000 -316482.9845180000
+-1566031.8968400001 -316236.0436580000
+-1566075.4391729999 -315989.1027980000
+-1566118.9815050000 -315742.1619380000
+-1566162.5238379999 -315495.2210780000
+-1566249.6085039999 -315001.3393570000
+-1566293.1508370000 -314754.3984970000
+-1566336.6931700001 -314507.4576370000
+-1566380.2355020000 -314260.5167770000
+-1566423.7778350001 -314013.5759170000
+-1566467.3201679999 -313766.6350560000
+-1566510.8625010001 -313519.6941960000
+-1566597.9471670000 -313025.8124760000
+-1566641.4894999999 -312778.8716160000
+-1566685.0318320000 -312531.9307560000
+-1566728.5741650001 -312284.9898950000
+-1566772.1164980000 -312038.0490350000
+-1566815.6588310001 -311791.1081750000
+-1566859.2011640000 -311544.1673150000
+-1566902.7434970001 -311297.2264550000
+-1566699.3449700000 -311006.7432620000
+-1566786.4296349999 -310512.8615420000
+-1566829.9719680001 -310265.9206810000
+-1566873.5143009999 -310018.9798210000
+-1566670.1157740001 -309728.4966280000
+-1566713.6581069999 -309481.5557680000
+-1566466.7172470000 -309438.0134350000
+-1566016.3778599999 -309103.9879100000
+-1565769.4369999999 -309060.4455770000
+-1565522.4961399999 -309016.9032440000
+-1565275.5552800000 -308973.3609110000
+-1565028.6144210000 -308929.8185780000
+-1564781.6735610000 -308886.2762460000
+-1564244.2495080000 -309046.1324400000
+-1563997.3086480000 -309002.5901070000
+-1563750.3677880000 -308959.0477750000
+-1563503.4269290001 -308915.5054420000
+-1563546.9692609999 -308668.5645820000
+-1563343.5707340001 -308378.0813890000
+-1563387.1130669999 -308131.1405290000
+-1563183.7145400001 -307840.6573360000
+-1563227.2568729999 -307593.7164750000
+-1563067.4006790000 -307056.2924220000
+-1563110.9430120001 -306809.3515620000
+-1562907.5444850000 -306518.8683690000
+-1562951.0868180001 -306271.9275090000
+-1562747.6882900000 -305981.4443160000
+-1562791.2306230001 -305734.5034560000
+-1562834.7729559999 -305487.5625960000
+-1562878.3152890000 -305240.6217360000
+-1562921.8576219999 -304993.6808750000
+-1562965.3999550000 -304746.7400150000
+-1563008.9422879999 -304499.7991550000
+-1563052.4846200000 -304252.8582950000
+-1563096.0269530001 -304005.9174350000
+-1563139.5692860000 -303758.9765750000
+-1562979.7130920000 -303221.5525220000
+-1563023.2554250001 -302974.6116610000
+-1563066.7977580000 -302727.6708010000
+-1563110.3400910001 -302480.7299410000
+-1563153.8824229999 -302233.7890810000
+-1563197.4247560001 -301986.8482210000
+-1563240.9670889999 -301739.9073610000
+-1563284.5094220000 -301492.9665000000
+-1563328.0517549999 -301246.0256400000
+-1563371.5940880000 -300999.0847800000
+-1563415.1364200001 -300752.1439200000
+-1563458.6787530000 -300505.2030600000
+-1563792.7042789999 -300054.8636720000
+-1563836.2466120000 -299807.9228120000
+-1563879.7889449999 -299560.9819520000
+-1563923.3312770000 -299314.0410920000
+-1563966.8736099999 -299067.1002320000
+-1564257.3568030000 -298863.7017040000
+-1564547.8399960001 -298660.3031770000
+-1564881.8655210000 -298209.9637890000
+-1565172.3487140001 -298006.5652620000
+-1565462.8319069999 -297803.1667340000
+-1565753.3150990000 -297599.7682070000
+-1566000.2559590000 -297643.3105400000
+-1566537.6800120000 -297483.4543450000
+-1566784.6208720000 -297526.9966780000
+-1567075.1040650001 -297323.5981510000
+-1567162.1887300001 -296829.7164300000
+-1567205.7310629999 -296582.7755700000
+-1567292.8157289999 -296088.8938500000
+-1567583.2989210000 -295885.4953230000
+-1567670.3835870000 -295391.6136020000
+-1567960.8667800000 -295188.2150750000
+-1568004.4091129999 -294941.2742150000
+-1568294.8923050000 -294737.8756870000
+-1568832.3163580000 -294578.0194930000
+-1569122.7995509999 -294374.6209650000
+-1569413.2827430000 -294171.2224380000
+-1569950.7067960000 -294011.3662430000
+-1570241.1899890001 -293807.9677160000
+-1570778.6140409999 -293648.1115210000
+-1571069.0972340000 -293444.7129940000
+-1571359.5804270001 -293241.3144670000
+-1571693.6059520000 -292790.9750790000
+-1571737.1482849999 -292544.0342190000
+-1572027.6314780000 -292340.6356920000
+-1572318.1146710000 -292137.2371640000
+-1572652.1401960000 -291686.8977770000
+-1572695.6825290001 -291439.9569160000
+-1572986.1657219999 -291236.5583890000
+-1573276.6489150000 -291033.1598620000
+-1573857.6152999999 -290626.3628070000
+-1574148.0984930000 -290422.9642800000
+-1574438.5816850001 -290219.5657520000
+-1574772.6072110001 -289769.2263650000
+-1574816.1495439999 -289522.2855050000
+-1574859.6918770000 -289275.3446440000
+-1574946.7765420000 -288781.4629240000
+-1574990.3188750001 -288534.5220640000
+-1575033.8612080000 -288287.5812040000
+-1575077.4035410001 -288040.6403440000
+-1574874.0050140000 -287750.1571510000
+-1574961.0896800000 -287256.2754300000
+-1574757.6911530001 -286965.7922370000
+-1574801.2334850000 -286718.8513770000
+-1574844.7758180001 -286471.9105170000
+-1574684.9196240001 -285934.4864640000
+-1574728.4619570000 -285687.5456040000
+-1574772.0042900001 -285440.6047440000
+-1574815.5466229999 -285193.6638830000
+-1574902.6312879999 -284699.7821630000
+-1574946.1736210000 -284452.8413030000
+-1574989.7159539999 -284205.9004430000
+-1575570.6823390000 -283799.1033880000
+-1575817.6231990000 -283842.6457210000
+-1576311.5049190000 -283929.7303860000
+-1576558.4457789999 -283973.2727190000
+-1576805.3866389999 -284016.8150520000
+-1577299.2683590001 -284103.8997180000
+-1577546.2092180001 -284147.4420500000
+-1577749.6077449999 -284437.9252430000
+-1578199.9471320000 -284771.9507690000
+-1578403.3456590001 -285062.4339620000
+-1578693.8288519999 -284859.0354350000
+-1578780.9135179999 -284365.1537140000
+-1579071.3967100000 -284161.7551870000
+-1579114.9390430001 -283914.8143270000
+-1578664.5996560000 -283580.7888010000
+-1578461.2011289999 -283290.3056080000
+-1577967.3194100000 -283203.2209420000
+-1577763.9208829999 -282912.7377490000
+-1577313.5814960001 -282578.7122240000
+-1577066.6406360001 -282535.1698910000
+-1576616.3012490000 -282201.1443650000
+-1576369.3603890000 -282157.6020320000
+-1575919.0210020000 -281823.5765070000
+-1575715.6224750001 -281533.0933140000
+-1575308.8254209999 -280952.1269280000
+-1575105.4268940000 -280661.6437350000
+-1574902.0283669999 -280371.1605420000
+-1574989.1130329999 -279877.2788220000
+-1574785.7145060000 -279586.7956290000
+-1574582.3159789999 -279296.3124360000
+-1574625.8583110000 -279049.3715750000
+-1574916.3415039999 -278845.9730480000
+-1574959.8838370000 -278599.0321880000
+-1575046.9685030000 -278105.1504680000
+-1575090.5108360001 -277858.2096070000
+-1575380.9940279999 -277654.8110800000
+-1575424.5363610000 -277407.8702200000
+-1575715.0195540001 -277204.4716930000
+-1576252.4436059999 -277044.6154980000
+-1576542.9267990000 -276841.2169710000
+-1576833.4099920001 -276637.8184430000
+-1577123.8931849999 -276434.4199160000
+-1577167.4355170000 -276187.4790560000
+-1577457.9187100001 -275984.0805280000
+-1577791.9442360001 -275533.7411410000
+-1578082.4274279999 -275330.3426130000
+-1578125.9697610000 -275083.4017530000
+-1578416.4529540001 -274880.0032260000
+-1578706.9361469999 -274676.6046980000
+-1578750.4784800000 -274429.6638380000
+-1579084.5040050000 -273979.3244510000
+-1579128.0463380001 -273732.3835910000
+-1579418.5295309999 -273528.9850630000
+-1579462.0718640001 -273282.0442030000
+-1579505.6141959999 -273035.1033430000
+-1579796.0973890000 -272831.7048160000
+-1579839.6397220001 -272584.7639550000
+-1580173.6652470001 -272134.4245680000
+-1580217.2075799999 -271887.4837080000
+-1580507.6907730000 -271684.0851800000
+-1580551.2331060001 -271437.1443200000
+-1580841.7162990000 -271233.7457930000
+-1581132.1994910000 -271030.3472650000
+-1581219.2841570000 -270536.4655450000
+-1581509.7673500001 -270333.0670180000
+-1581800.2505419999 -270129.6684900000
+-1582090.7337350000 -269926.2699630000
+-1582134.2760679999 -269679.3291030000
+-1582424.7592610000 -269475.9305750000
+-1582468.3015940001 -269228.9897150000
+-1582802.3271190000 -268778.6503280000
+-1582845.8694519999 -268531.7094680000
+-1583136.3526450000 -268328.3109400000
+-1583179.8949770001 -268081.3700800000
+-1583470.3781699999 -267877.9715530000
+-1583760.8613630000 -267674.5730250000
+-1583804.4036960001 -267427.6321650000
+-1584138.4292210001 -266977.2927780000
+-1584428.9124139999 -266773.8942500000
+-1584472.4547470000 -266526.9533900000
+-1584762.9379400001 -266323.5548630000
+-1585009.8787990001 -266367.0971960000
+-1585256.8196590000 -266410.6395280000
+-1585750.7013790000 -266497.7241940000
+-1585997.6422389999 -266541.2665270000
+-1586244.5830989999 -266584.8088590000
+-1586491.5239589999 -266628.3511920000
+-1586738.4648190001 -266671.8935250000
+-1586985.4056780001 -266715.4358580000
+-1587479.2873980000 -266802.5205230000
+-1587726.2282580000 -266846.0628560000
+-1587973.1691180000 -266889.6051890000
+-1588220.1099779999 -266933.1475220000
+-1588423.5085050000 -267223.6307150000
+-1588873.8478920001 -267557.6562410000
+-1589077.2464190000 -267848.1394340000
+-1589280.6449460001 -268138.6226260000
+-1589484.0434729999 -268429.1058190000
+-1589440.5011400001 -268676.0466800000
+-1589600.3573340001 -269213.4707330000
+-1589556.8150010000 -269460.4115930000
+-1589760.2135280001 -269750.8947860000
+-1589716.6711960000 -269997.8356460000
+-1589920.0697230001 -270288.3188390000
+-1590123.4682499999 -270578.8020320000
+-1590036.3835839999 -271072.6837520000
+-1590239.7821110000 -271363.1669450000
+-1590443.1806379999 -271653.6501380000
+-1590399.6383050000 -271900.5909980000
+-1590603.0368319999 -272191.0741910000
+-1590806.4353590000 -272481.5573840000
+-1590762.8930259999 -272728.4982440000
+-1590966.2915530000 -273018.9814370000
+-1590922.7492209999 -273265.9222970000
+-1591082.6054150001 -273803.3463510000
+-1591039.0630820000 -274050.2872110000
+-1591242.4616090001 -274340.7704040000
+-1591198.9192760000 -274587.7112640000
+-1591402.3178030001 -274878.1944570000
+-1591605.7163300000 -275168.6776500000
+-1591562.1739970001 -275415.6185100000
+-1591765.5725240000 -275706.1017030000
+-1591722.0301910001 -275953.0425630000
+-1591881.8863860001 -276490.4666160000
+-1591838.3440530000 -276737.4074760000
+-1592041.7425800001 -277027.8906690000
+-1591998.2002470000 -277274.8315290000
+-1592201.5987740001 -277565.3147220000
+-1592695.4804940000 -277652.3993880000
+-1592898.8790209999 -277942.8825810000
+-1593102.2775480000 -278233.3657740000
+-1593392.7607410001 -278029.9672470000
+-1593886.6424600000 -278117.0519120000
+-1594177.1256530001 -277913.6533850000
+-1594467.6088459999 -277710.2548570000
+-1595048.5752310001 -277303.4578030000
+-1595339.0584239999 -277100.0592750000
+-1595629.5416170000 -276896.6607480000
+-1595920.0248090001 -276693.2622210000
+-1595963.5671420000 -276446.3213600000
+-1596297.5926679999 -275995.9819730000
+-1596341.1350010000 -275749.0411130000
+-1596631.6181930001 -275545.6425850000
+-1596675.1605260000 -275298.7017250000
+-1596718.7028590001 -275051.7608650000
+-1596762.2451919999 -274804.8200050000
+-1596805.7875250001 -274557.8791450000
+-1596892.8721900000 -274063.9974240000
+-1596936.4145229999 -273817.0565640000
+-1596979.9568560000 -273570.1157040000
+-1597023.4991890001 -273323.1748440000
+-1597067.0415220000 -273076.2339840000
+-1597648.0079069999 -272669.4369290000
+-1597938.4911000000 -272466.0384020000
+-1598228.9742930001 -272262.6398740000
+-1598316.0589580000 -271768.7581540000
+-1598606.5421509999 -271565.3596270000
+-1598650.0844840000 -271318.4187660000
+-1598693.6268170001 -271071.4779060000
+-1598737.1691490000 -270824.5370460000
+-1598533.7706220001 -270534.0538530000
+-1598577.3129550000 -270287.1129930000
+-1598620.8552880001 -270040.1721330000
+-1598707.9399540001 -269546.2904130000
+-1598751.4822869999 -269299.3495520000
+-1598795.0246190000 -269052.4086920000
+-1598591.6260919999 -268761.9254990000
+-1598635.1684250000 -268514.9846390000
+-1598678.7107579999 -268268.0437790000
+-1598722.2530910000 -268021.1029190000
+-1598518.8545639999 -267730.6197260000
+-1598605.9392299999 -267236.7380050000
+-1598402.5407030000 -266946.2548130000
+-1598446.0830349999 -266699.3139520000
+-1598736.5662280000 -266495.9154250000
+-1599027.0494210001 -266292.5168980000
+-1599608.0158060000 -265885.7198430000
+-1599898.4989990001 -265682.3213160000
+-1600188.9821919999 -265478.9227880000
+-1600479.4653840000 -265275.5242610000
+-1601060.4317699999 -264868.7272060000
+-1601350.9149630000 -264665.3286790000
+-1601641.3981550001 -264461.9301510000
+-1601888.3390150000 -264505.4724840000
+-1602425.7630680001 -264345.6162900000
+-1602716.2462599999 -264142.2177620000
+-1602963.1871199999 -264185.7600950000
+-1603253.6703130000 -263982.3615680000
+-1603500.6111730000 -264025.9039000000
+-1603791.0943660000 -263822.5053730000
+-1604038.0352250000 -263866.0477060000
+-1604531.9169449999 -263953.1323710000
+-1604778.8578049999 -263996.6747040000
+-1605069.3409980000 -263793.2761770000
+-1605316.2818580000 -263836.8185100000
+-1605563.2227179999 -263880.3608420000
+-1605810.1635769999 -263923.9031750000
+-1606057.1044369999 -263967.4455080000
+-1606304.0452970001 -264010.9878410000
+-1606797.9270170000 -264098.0725060000
+-1607044.8678770000 -264141.6148390000
+-1607291.8087370000 -264185.1571720000
+-1607538.7495960000 -264228.6995050000
+-1607785.6904559999 -264272.2418380000
+-1607989.0889830000 -264562.7250310000
+-1608236.0298430000 -264606.2673630000
+-1608686.3692300001 -264940.2928890000
+-1608933.3100900000 -264983.8352220000
+-1609136.7086169999 -265274.3184150000
+-1609383.6494770001 -265317.8607480000
+-1609587.0480040000 -265608.3439410000
+-1609790.4465310001 -265898.8271340000
+-1609993.8450579999 -266189.3103270000
+-1610444.1844450000 -266523.3358520000
+-1610604.0406390000 -267060.7599050000
+-1610807.4391660001 -267351.2430980000
+-1611010.8376930000 -267641.7262910000
+-1611257.7785530000 -267685.2686240000
+-1611461.1770800001 -267975.7518170000
+-1611955.0588000000 -268062.8364830000
+-1612158.4573270001 -268353.3196760000
+-1612405.3981870001 -268396.8620080000
+-1612652.3390470000 -268440.4043410000
+-1612899.2799060000 -268483.9466740000
+-1613436.7039590001 -268324.0904790000
+-1613683.6448190000 -268367.6328120000
+-1613930.5856790000 -268411.1751450000
+-1614177.5265390000 -268454.7174780000
+-1614380.9250660001 -268745.2006710000
+-1614627.8659260001 -268788.7430040000
+-1615078.2053119999 -269122.7685290000
+-1615281.6038400000 -269413.2517220000
+-1615528.5446990000 -269456.7940550000
+-1615731.9432260001 -269747.2772480000
+-1615935.3417529999 -270037.7604410000
+-1615848.2570880000 -270531.6421610000
+-1616051.6556150001 -270822.1253540000
+-1616008.1132819999 -271069.0662140000
+-1615717.6300890001 -271272.4647420000
+-1615674.0877560000 -271519.4056020000
+-1615340.0622310000 -271969.7449890000
+-1615296.5198979999 -272216.6858500000
+-1615006.0367050001 -272420.0843770000
+-1614962.4943720000 -272667.0252370000
+-1614918.9520399999 -272913.9660970000
+-1615122.3505670000 -273204.4492900000
+-1615078.8082340001 -273451.3901500000
+-1614991.7235679999 -273945.2718710000
+-1615195.1220950000 -274235.7550640000
+-1615151.5797619999 -274482.6959240000
+-1615442.0629550000 -274279.2973960000
+-1615935.9446749999 -274366.3820620000
+-1616226.4278670000 -274162.9835350000
+-1616473.3687270000 -274206.5258670000
+-1616763.8519200000 -274003.1273400000
+-1616807.3942529999 -273756.1864800000
+-1617141.4197780001 -273305.8470920000
+-1617431.9029709999 -273102.4485650000
+-1617475.4453040001 -272855.5077050000
+-1617765.9284969999 -272652.1091780000
+-1618012.8693570001 -272695.6515100000
+-1618550.2934089999 -272535.7953160000
+-1618797.2342689999 -272579.3376490000
+-1619044.1751290001 -272622.8799810000
+-1619538.0568490000 -272709.9646470000
+-1619741.4553759999 -273000.4478400000
+-1619988.3962359999 -273043.9901730000
+-1619944.8539030000 -273290.9310330000
+-1620148.2524300001 -273581.4142260000
+-1620104.7100970000 -273828.3550860000
+-1620308.1086240001 -274118.8382790000
+-1620221.0239579999 -274612.7199990000
+-1620424.4224850000 -274903.2031920000
+-1620380.8801520001 -275150.1440520000
+-1620584.2786790000 -275440.6272450000
+-1620540.7363470001 -275687.5681050000
+-1620497.1940140000 -275934.5089660000
+-1620700.5925410001 -276224.9921590000
+-1620657.0502080000 -276471.9330190000
+-1620860.4487350001 -276762.4162120000
+-1620816.9064020000 -277009.3570720000
+-1620976.7625960000 -277546.7811250000
+-1620933.2202639999 -277793.7219850000
+-1621136.6187910000 -278084.2051780000
+-1621093.0764580001 -278331.1460380000
+-1621296.4749850000 -278621.6292310000
+-1621252.9326520001 -278868.5700910000
+-1621456.3311790000 -279159.0532840000
+-1621412.7888460001 -279405.9941440000
+-1621616.1873730000 -279696.4773370000
+-1621529.1027070000 -280190.3590580000
+-1621732.5012340001 -280480.8422510000
+-1621688.9589020000 -280727.7831110000
+-1621645.4165690001 -280974.7239710000
+-1621848.8150960000 -281265.2071640000
+-1621761.7304300000 -281759.0888840000
+-1621965.1289570001 -282049.5720770000
+-1621921.5866240000 -282296.5129370000
+-1621878.0442910001 -282543.4537970000
+-1622081.4428190000 -282833.9369900000
+-1622037.9004860001 -283080.8778510000
+-1621950.8158199999 -283574.7595710000
+-1621907.2734870000 -283821.7004310000
+-1622110.6720139999 -284112.1836240000
+-1622067.1296810000 -284359.1244840000
+-1621776.6464889999 -284562.5230110000
+-1621733.1041560001 -284809.4638720000
+-1621442.6209630000 -285012.8623990000
+-1621108.5954370000 -285463.2017870000
+-1621065.0531049999 -285710.1426470000
+-1620774.5699120001 -285913.5411740000
+-1620731.0275790000 -286160.4820340000
+-1620687.4852460001 -286407.4228940000
+-1620643.9429130000 -286654.3637540000
+-1620600.4005809999 -286901.3046150000
+-1620556.8582480000 -287148.2454750000
+-1620222.8327220001 -287598.5848620000
+-1620179.2903890000 -287845.5257220000
+-1620135.7480560001 -288092.4665830000
+-1620092.2057240000 -288339.4074430000
+-1620048.6633909999 -288586.3483030000
+-1620005.1210580000 -288833.2891630000
+-1619961.5787249999 -289080.2300230000
+-1619918.0363920000 -289327.1708830000
+-1619584.0108670001 -289777.5102710000
+-1619540.4685340000 -290024.4511310000
+-1619496.9262010001 -290271.3919910000
+-1619700.3247280000 -290561.8751840000
+-1619656.7823950001 -290808.8160440000
+-1619613.2400620000 -291055.7569050000
+-1619569.6977299999 -291302.6977650000
+-1619729.5539239999 -291840.1218180000
+-1619686.0115910000 -292087.0626780000
+-1619642.4692579999 -292334.0035380000
+-1619598.9269250000 -292580.9443980000
+-1619802.3254519999 -292871.4275910000
+-1619758.7831190000 -293118.3684510000
+-1619962.1816459999 -293408.8516440000
+-1619918.6393140000 -293655.7925040000
+-1620122.0378409999 -293946.2756970000
+-1620078.4955080000 -294193.2165580000
+-1620281.8940349999 -294483.6997500000
+-1620441.7502290001 -295021.1238040000
+-1620398.2078960000 -295268.0646640000
+-1620601.6064230001 -295558.5478570000
+-1620558.0640900000 -295805.4887170000
+-1620761.4626170001 -296095.9719100000
+-1620964.8611440000 -296386.4551030000
+-1621168.2596710001 -296676.9382960000
+-1621124.7173390000 -296923.8791560000
+-1621328.1158660001 -297214.3623490000
+-1621487.9720600001 -297751.7864020000
+-1621691.3705869999 -298042.2695950000
+-1621647.8282540001 -298289.2104550000
+-1621851.2267809999 -298579.6936480000
+-1622054.6253080000 -298870.1768410000
+-1622258.0238350001 -299160.6600340000
+-1622461.4223620000 -299451.1432270000
+-1622374.3376960000 -299945.0249470000
+-1622577.7362230001 -300235.5081400000
+-1622781.1347500000 -300525.9913330000
+-1622984.5332770001 -300816.4745260000
+-1623187.9318039999 -301106.9577190000
+-1623391.3303310000 -301397.4409120000
+-1623594.7288579999 -301687.9241050000
+-1623754.5850529999 -302225.3481580000
+-1623957.9835800000 -302515.8313510000
+-1624161.3821070001 -302806.3145440000
+-1624408.3229670001 -302849.8568770000
+-1624858.6623529999 -303183.8824020000
+-1625105.6032130001 -303227.4247350000
+-1625396.0864060000 -303024.0262080000
+-1625599.4849330001 -303314.5094010000
+-1625889.9681259999 -303111.1108730000
+-1626427.3921780000 -302951.2546790000
+-1626674.3330379999 -302994.7970110000
+-1626964.8162310000 -302791.3984840000
+-1627008.3585640001 -302544.4576240000
+-1627298.8417570000 -302341.0590970000
+-1627385.9264219999 -301847.1773760000
+-1627676.4096150000 -301643.7788490000
+-1627719.9519479999 -301396.8379890000
+-1627763.4942810000 -301149.8971290000
+-1628097.5198059999 -300699.5577410000
+-1628141.0621390000 -300452.6168810000
+-1628184.6044719999 -300205.6760210000
+-1628765.5708570001 -299798.8789660000
+-1629056.0540499999 -299595.4804390000
+-1629346.5372430000 -299392.0819110000
+-1629433.6219080000 -298898.2001910000
+-1629724.1051010001 -298694.8016640000
+-1629767.6474339999 -298447.8608040000
+-1629811.1897670000 -298200.9199430000
+-1629854.7320999999 -297953.9790830000
+-1629694.8759059999 -297416.5550300000
+-1629738.4182380000 -297169.6141700000
+-1629781.9605709999 -296922.6733100000
+-1629825.5029040000 -296675.7324500000
+-1629622.1043769999 -296385.2492570000
+-1629665.6467100000 -296138.3083970000
+-1629462.2481829999 -295847.8252040000
+-1629549.3328490001 -295353.9434830000
+-1629345.9343220000 -295063.4602900000
+-1629389.4766540001 -294816.5194300000
+-1629186.0781270000 -294526.0362370000
+-1628982.6795999999 -294235.5530440000
+-1628532.3402130001 -293901.5275190000
+-1628328.9416860000 -293611.0443260000
+-1628416.0263520000 -293117.1626050000
+-1628212.6278250001 -292826.6794120000
+-1628793.5942100000 -292419.8823580000
+-1629084.0774030001 -292216.4838300000
+-1629127.6197360000 -291969.5429700000
+-1629461.6452619999 -291519.2035830000
+-1629505.1875940000 -291272.2627220000
+-1629548.7299269999 -291025.3218620000
+-1629592.2722600000 -290778.3810020000
+-1629679.3569260000 -290284.4992820000
+-1629722.8992590001 -290037.5584220000
+-1629766.4415910000 -289790.6175620000
+-1630100.4671169999 -289340.2781740000
+-1630390.9503100000 -289136.8796470000
+-1630928.3743620000 -288977.0234520000
+-1631218.8575550001 -288773.6249250000
+-1631465.7984150001 -288817.1672580000
+-1631669.1969420000 -289107.6504500000
+-1632163.0786619999 -289194.7351160000
+-1632366.4771890000 -289485.2183090000
+-1632613.4180490000 -289528.7606420000
+-1632816.8165760001 -289819.2438350000
+-1633020.2151029999 -290109.7270280000
+-1633514.0968220001 -290196.8116930000
+-1633717.4953490000 -290487.2948860000
+-1633920.8938760001 -290777.7780790000
+-1634167.8347360000 -290821.3204120000
+-1634618.1741229999 -291155.3459380000
+-1634865.1149830001 -291198.8882700000
+-1634908.6573160000 -290951.9474100000
+-1635199.1405090000 -290748.5488830000
+-1635242.6828409999 -290501.6080230000
+-1635329.7675069999 -290007.7263020000
+-1635373.3098400000 -289760.7854420000
+-1635663.7930330001 -289557.3869150000
+-1635707.3353660000 -289310.4460550000
+-1635750.8776980001 -289063.5051950000
+-1636041.3608909999 -288860.1066670000
+-1636375.3864170001 -288409.7672800000
+-1636665.8696089999 -288206.3687520000
+-1636956.3528020000 -288002.9702250000
+-1637246.8359950001 -287799.5716980000
+-1637493.7768550001 -287843.1140300000
+-1637784.2600469999 -287639.7155030000
+-1638278.1417670001 -287726.8001690000
+-1638568.6249599999 -287523.4016410000
+-1638815.5658199999 -287566.9439740000
+-1639106.0490120000 -287363.5454470000
+-1639352.9898719999 -287407.0877800000
+-1639599.9307319999 -287450.6301120000
+-1639890.4139250000 -287247.2315850000
+-1640137.3547850000 -287290.7739180000
+-1640631.2365039999 -287377.8585830000
+-1640878.1773639999 -287421.4009160000
+-1641125.1182240001 -287464.9432490000
+-1641415.6014169999 -287261.5447220000
+-1641662.5422769999 -287305.0870540000
+-1641909.4831369999 -287348.6293870000
+-1642156.4239970001 -287392.1717200000
+-1642359.8225240000 -287682.6549130000
+-1642606.7633829999 -287726.1972460000
+-1643100.6451030001 -287813.2819110000
+-1643347.5859630001 -287856.8242440000
+-1643550.9844899999 -288147.3074370000
+-1643797.9253499999 -288190.8497700000
+-1644001.3238770000 -288481.3329630000
+-1643957.7815439999 -288728.2738230000
+-1644117.6377379999 -289265.6978760000
+-1644074.0954050000 -289512.6387360000
+-1644030.5530729999 -289759.5795960000
+-1643740.0698800001 -289962.9781240000
+-1643652.9852140001 -290456.8598440000
+-1643362.5020220000 -290660.2583710000
+-1643318.9596889999 -290907.1992320000
+-1643275.4173560000 -291154.1400920000
+-1643231.8750229999 -291401.0809520000
+-1643144.7903570000 -291894.9626720000
+-1643101.2480240001 -292141.9035320000
+-1643057.7056920000 -292388.8443920000
+-1643261.1042190001 -292679.3275850000
+-1643217.5618860000 -292926.2684460000
+-1643377.4180800000 -293463.6924990000
+-1643333.8757470001 -293710.6333590000
+-1643537.2742740000 -294001.1165520000
+-1643740.6728010001 -294291.5997450000
+-1643653.5881360001 -294785.4814650000
+-1643856.9866630000 -295075.9646580000
+-1643813.4443300001 -295322.9055180000
+-1643522.9611370000 -295526.3040450000
+-1643435.8764710000 -296020.1857660000
+-1643145.3932790000 -296223.5842930000
+-1643101.8509460001 -296470.5251530000
+-1642811.3677530000 -296673.9236810000
+-1642520.8845599999 -296877.3222080000
+-1642186.8590350000 -297327.6615950000
+-1641896.3758419999 -297531.0601230000
+-1641852.8335090000 -297778.0009830000
+-1641809.2911759999 -298024.9418430000
+-1641765.7488440000 -298271.8827030000
+-1641678.6641780001 -298765.7644240000
+-1641635.1218450000 -299012.7052840000
+-1641591.5795120001 -299259.6461440000
+-1641794.9780390000 -299550.1293370000
+-1641998.3765660000 -299840.6125300000
+-1641911.2919010001 -300334.4942500000
+-1642114.6904279999 -300624.9774430000
+-1642318.0889550000 -300915.4606360000
+-1642811.9706740000 -301002.5453020000
+-1643015.3692010001 -301293.0284940000
+-1643218.7677279999 -301583.5116870000
+-1643509.2509210000 -301380.1131600000
+-1644090.2173070000 -300973.3161050000
+-1644380.7004990000 -300769.9175780000
+-1644424.2428319999 -300522.9767180000
+-1644467.7851650000 -300276.0358580000
+-1644511.3274980001 -300029.0949980000
+-1644554.8698310000 -299782.1541370000
+-1644598.4121630001 -299535.2132770000
+-1644641.9544960000 -299288.2724170000
+-1644685.4968290001 -299041.3315570000
+-1644729.0391619999 -298794.3906970000
+-1644569.1829680000 -298256.9666440000
+-1644612.7253010001 -298010.0257840000
+-1644656.2676339999 -297763.0849230000
+-1644699.8099660000 -297516.1440630000
+-1644743.3522989999 -297269.2032030000
+-1644786.8946320000 -297022.2623430000
+-1644830.4369649999 -296775.3214830000
+-1644873.9792980000 -296528.3806230000
+-1644917.5216310001 -296281.4397620000
+-1644961.0639630000 -296034.4989020000
+-1645004.6062960001 -295787.5580420000
+-1645048.1486289999 -295540.6171820000
+-1644888.2924350000 -295003.1931290000
+-1644931.8347680001 -294756.2522690000
+-1644975.3771009999 -294509.3114090000
+-1645018.9194330000 -294262.3705480000
+-1645062.4617659999 -294015.4296880000
+-1645352.9449590000 -293812.0311610000
+-1645396.4872920001 -293565.0903010000
+-1645440.0296250000 -293318.1494410000
+-1645774.0551499999 -292867.8100530000
+-1645817.5974830000 -292620.8691930000
+-1645861.1398159999 -292373.9283330000
+-1646151.6230090000 -292170.5298050000
+-1646195.1653410001 -291923.5889450000
+-1646529.1908670000 -291473.2495580000
+-1646819.6740600001 -291269.8510300000
+-1647313.5557790000 -291356.9356960000
+-1647807.4374990000 -291444.0203620000
+-1648054.3783590000 -291487.5626940000
+-1648344.8615520000 -291284.1641670000
+-1648882.2856040001 -291124.3079720000
+-1649129.2264640001 -291167.8503050000
+-1649419.7096569999 -290964.4517780000
+-1649957.1337100000 -290804.5955830000
+-1650247.6169020000 -290601.1970560000
+-1650741.4986220000 -290688.2817220000
+-1650944.8971490001 -290978.7649150000
+-1651148.2956760000 -291269.2481070000
+-1651642.1773959999 -291356.3327730000
+-1651845.5759230000 -291646.8159660000
+-1652092.5167830000 -291690.3582990000
+-1652542.8561700000 -292024.3838250000
+-1652789.7970290000 -292067.9261570000
+-1652993.1955560001 -292358.4093500000
+-1653574.1619420000 -291951.6122960000
+-1653864.6451350001 -291748.2137680000
+-1653908.1874670000 -291501.2729080000
+-1653995.2721330000 -291007.3911880000
+-1654038.8144660001 -290760.4503280000
+-1654082.3567989999 -290513.5094670000
+-1654372.8399920000 -290310.1109400000
+-1654706.8655170000 -289859.7715530000
+-1654997.3487100000 -289656.3730250000
+-1655578.3150950000 -289249.5759700000
+-1655868.7982880000 -289046.1774430000
+-1656406.2223410001 -288886.3212490000
+-1656696.7055329999 -288682.9227210000
+-1656987.1887260000 -288479.5241940000
+-1657234.1295860000 -288523.0665270000
+-1657771.5536380000 -288363.2103320000
+-1658018.4944980000 -288406.7526650000
+-1658265.4353580000 -288450.2949980000
+-1658308.9776910001 -288203.3541380000
+-1658599.4608839999 -287999.9556100000
+-1658686.5455489999 -287506.0738900000
+-1658977.0287420000 -287302.6753620000
+-1659020.5710750001 -287055.7345020000
+-1658817.1725480000 -286765.2513090000
+-1658323.2908280001 -286678.1666440000
+-1658119.8923010000 -286387.6834510000
+-1657960.0361070000 -285850.2593980000
+-1657756.6375800001 -285559.7762050000
+-1657553.2390530000 -285269.2930120000
+-1657596.7813860001 -285022.3521520000
+-1657683.8660510001 -284528.4704310000
+-1657727.4083840000 -284281.5295710000
+-1658017.8915770000 -284078.1310440000
+-1658104.9762430000 -283584.2493240000
+-1658395.4594350001 -283380.8507960000
+-1658439.0017680000 -283133.9099360000
+-1659019.9681539999 -282727.1128810000
+-1659310.4513460000 -282523.7143540000
+-1659353.9936790001 -282276.7734940000
+-1659644.4768719999 -282073.3749670000
+-1659731.5615379999 -281579.4932460000
+-1660022.0447300000 -281376.0947190000
+-1660065.5870630001 -281129.1538590000
+-1660646.5534490000 -280722.3568040000
+-1660937.0366410001 -280518.9582770000
+-1661183.9775010000 -280562.5006090000
+-1661677.8592210000 -280649.5852750000
+-1661924.8000810000 -280693.1276080000
+-1662171.7409409999 -280736.6699410000
+-1662375.1394680000 -281027.1531340000
+-1662869.0211870000 -281114.2377990000
+-1663072.4197140001 -281404.7209920000
+-1663028.8773820000 -281651.6618520000
+-1663188.7335760000 -282189.0859050000
+-1663145.1912430001 -282436.0267660000
+-1663101.6489100000 -282682.9676260000
+-1663058.1065770001 -282929.9084860000
+-1662971.0219119999 -283423.7902060000
+-1662927.4795790000 -283670.7310660000
+-1662883.9372459999 -283917.6719260000
+-1662840.3949130001 -284164.6127870000
+-1663043.7934399999 -284455.0959790000
+-1662956.7087739999 -284948.9777000000
+-1663160.1073010000 -285239.4608930000
+-1663116.5649689999 -285486.4017530000
+-1663319.9634960000 -285776.8849460000
+-1663523.3620229999 -286067.3681390000
+-1663726.7605500000 -286357.8513320000
+-1663886.6167440000 -286895.2753850000
+-1664090.0152710001 -287185.7585780000
+-1664293.4137980000 -287476.2417710000
+-1664540.3546579999 -287519.7841030000
+-1664787.2955179999 -287563.3264360000
+-1665324.7195700000 -287403.4702420000
+-1665571.6604299999 -287447.0125750000
+-1665818.6012899999 -287490.5549070000
+-1666109.0844830000 -287287.1563800000
+-1666196.1691480000 -286793.2746600000
+-1666486.6523410000 -286589.8761320000
+-1666690.0508679999 -286880.3593250000
+-1666893.4493950000 -287170.8425180000
+-1667343.7887820001 -287504.8680440000
+-1667547.1873089999 -287795.3512370000
+-1667750.5858360000 -288085.8344300000
+-1667707.0435029999 -288332.7752900000
+-1667663.5011700001 -288579.7161500000
+-1667619.9588380000 -288826.6570100000
+-1667779.8150320000 -289364.0810630000
+-1667736.2726990001 -289611.0219230000
+-1667692.7303660000 -289857.9627840000
+-1667649.1880330001 -290104.9036440000
+-1667605.6457000000 -290351.8445040000
+-1667809.0442270001 -290642.3276970000
+-1667765.5018950000 -290889.2685570000
+-1667721.9595619999 -291136.2094170000
+-1667925.3580890000 -291426.6926100000
+-1667881.8157560001 -291673.6334700000
+-1667838.2734230000 -291920.5743300000
+-1668041.6719500001 -292211.0575230000
+-1667954.5872839999 -292704.9392440000
+-1667911.0449520000 -292951.8801040000
+-1667867.5026189999 -293198.8209640000
+-1668070.9011460000 -293489.3041570000
+-1668027.3588129999 -293736.2450170000
+-1667983.8164800000 -293983.1858770000
+-1668187.2150069999 -294273.6690700000
+-1668143.6726740000 -294520.6099300000
+-1668390.6135340000 -294564.1522630000
+-1668594.0120610001 -294854.6354560000
+-1669087.8937810000 -294941.7201220000
+-1669291.2923079999 -295232.2033150000
+-1669538.2331679999 -295275.7456470000
+-1669741.6316950000 -295566.2288400000
+-1669945.0302220001 -295856.7120330000
+-1670148.4287490000 -296147.1952260000
+-1670642.3104689999 -296234.2798920000
+-1670845.7089960000 -296524.7630850000
+-1671049.1075230001 -296815.2462780000
+-1671005.5651900000 -297062.1871380000
+-1670715.0819969999 -297265.5856650000
+-1670671.5396640000 -297512.5265250000
+-1670584.4549990001 -298006.4082460000
+-1670293.9718060000 -298209.8067730000
+-1670250.4294730001 -298456.7476330000
+-1670206.8871400000 -298703.6884930000
+-1669916.4039469999 -298907.0870210000
+-1669872.8616150001 -299154.0278810000
+-1669829.3192820000 -299400.9687410000
+-1669495.2937560000 -299851.3081280000
+-1669451.7514229999 -300098.2489880000
+-1669161.2682310001 -300301.6475160000
+-1669117.7258979999 -300548.5883760000
+-1669074.1835650001 -300795.5292360000
+-1669030.6412320000 -301042.4700960000
+-1668943.5565660000 -301536.3518170000
+-1668900.0142339999 -301783.2926770000
+-1668856.4719010000 -302030.2335370000
+-1669059.8704280001 -302320.7167300000
+-1669263.2689550000 -302611.1999230000
+-1669176.1842890000 -303105.0816430000
+-1669379.5828160001 -303395.5648360000
+-1669336.0404830000 -303642.5056960000
+-1669292.4981509999 -303889.4465560000
+-1669248.9558180000 -304136.3874160000
+-1669205.4134849999 -304383.3282770000
+-1669118.3288189999 -304877.2099970000
+-1669074.7864860001 -305124.1508570000
+-1669031.2441529999 -305371.0917170000
+-1668987.7018210001 -305618.0325770000
+-1668944.1594880000 -305864.9734370000
+-1669147.5580150001 -306155.4566300000
+-1669104.0156820000 -306402.3974910000
+-1669060.4733490001 -306649.3383510000
+-1668973.3886830001 -307143.2200710000
+-1669176.7872100000 -307433.7032640000
+-1669133.2448780001 -307680.6441240000
+-1669089.7025450000 -307927.5849840000
+-1669046.1602119999 -308174.5258440000
+-1669002.6178790000 -308421.4667050000
+-1668959.0755459999 -308668.4075650000
+-1668871.9908809999 -309162.2892850000
+-1668828.4485480001 -309409.2301450000
+-1668784.9062150000 -309656.1710050000
+-1668741.3638820001 -309903.1118650000
+-1668697.8215490000 -310150.0527260000
+-1668654.2792160001 -310396.9935860000
+-1668363.7960240000 -310600.3921130000
+-1668320.2536909999 -310847.3329730000
+-1668233.1690250000 -311341.2146930000
+-1668189.6266920001 -311588.1555540000
+-1667899.1435000000 -311791.5540810000
+-1667855.6011669999 -312038.4949410000
+-1667565.1179740001 -312241.8934680000
+-1667274.6347810000 -312445.2919960000
+-1666984.1515889999 -312648.6905230000
+-1666737.2107289999 -312605.1481900000
+-1666199.7866760001 -312765.0043850000
+-1665909.3034830000 -312968.4029120000
+-1665618.8202910000 -313171.8014400000
+-1665328.3370980001 -313375.1999670000
+-1665037.8539050000 -313578.5984940000
+-1664747.3707130000 -313781.9970220000
+-1664456.8875200001 -313985.3955490000
+-1664166.4043270000 -314188.7940770000
+-1663875.9211339999 -314392.1926040000
+-1663294.9547490000 -314798.9896590000
+-1663004.4715559999 -315002.3881860000
+-1662713.9883640001 -315205.7867130000
+-1662423.5051710000 -315409.1852410000
+-1662133.0219779999 -315612.5837680000
+-1661842.5387850001 -315815.9822950000
+-1661552.0555930000 -316019.3808230000
+-1661508.5132599999 -316266.3216830000
+-1661218.0300670001 -316469.7202100000
+-1660927.5468740000 -316673.1187380000
+-1660637.0636819999 -316876.5172650000
+-1660549.9790159999 -317370.3989850000
+-1660259.4958230001 -317573.7975130000
+-1659969.0126310000 -317777.1960400000
+-1659678.5294379999 -317980.5945670000
+-1659634.9871050001 -318227.5354270000
+-1623288.8833276688 -348485.9928101762
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Rifts.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Rifts.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Rifts.exp	(revision 21239)
@@ -0,0 +1,126 @@
+## Name:Rifts
+## Icon:0
+# Points Count  Value
+120 1.000000
+# X pos Y pos
+240000.0000000000 210000.0000000000
+243333.3333333333 213763.4408602151
+246666.6666666667 217526.8817204301
+250000.0000000000 221290.3225806452
+253333.3333333333 225053.7634408602
+256666.6666666667 228817.2043010753
+260000.0000000000 232580.6451612903
+263333.3333333334 236344.0860215054
+266666.6666666667 240107.5268817204
+270000.0000000000 243870.9677419355
+273333.3333333333 247634.4086021505
+276666.6666666666 251397.8494623656
+280000.0000000000 255161.2903225806
+283333.3333333334 258924.7311827957
+286666.6666666667 262688.1720430108
+290000.0000000000 266451.6129032259
+293333.3333333333 270215.0537634409
+296666.6666666666 273978.4946236560
+300000.0000000000 277741.9354838710
+304733.3333333334 280394.7772657451
+309466.6666666667 283047.6190476191
+314133.3333333334 284952.3809523809
+318800.0000000000 286857.1428571428
+323466.6666666666 288761.9047619047
+328133.3333333333 290666.6666666667
+332800.0000000000 292571.4285714286
+337466.6666666667 294476.1904761905
+342133.3333333334 296380.9523809524
+346800.0000000000 298285.7142857143
+351466.6666666666 300190.4761904762
+356133.3333333333 302095.2380952381
+360800.0000000000 304000.0000000000
+365466.6666666667 305904.7619047619
+370133.3333333334 307809.5238095238
+374800.0000000000 309714.2857142857
+379466.6666666666 311619.0476190476
+384133.3333333333 313523.8095238095
+388800.0000000000 315428.5714285714
+393466.6666666667 317333.3333333333
+398733.3333333334 318666.6666666666
+404000.0000000000 320000.0000000000
+409000.0000000000 320000.0000000000
+414000.0000000000 320000.0000000000
+419000.0000000000 320000.0000000000
+424000.0000000000 320000.0000000000
+429000.0000000000 320000.0000000000
+434000.0000000000 320000.0000000000
+439000.0000000000 320000.0000000000
+444000.0000000000 320000.0000000000
+449000.0000000000 320000.0000000000
+454000.0000000000 320000.0000000000
+459000.0000000000 320000.0000000000
+464000.0000000000 320000.0000000000
+469000.0000000000 320000.0000000000
+474000.0000000000 320000.0000000000
+479000.0000000000 320000.0000000000
+484000.0000000000 320000.0000000000
+489000.0000000000 320000.0000000000
+494000.0000000000 320000.0000000000
+499000.0000000000 320000.0000000000
+504000.0000000000 320000.0000000000
+509000.0000000000 320000.0000000000
+514000.0000000000 320000.0000000000
+519000.0000000000 320000.0000000000
+524000.0000000000 320000.0000000000
+529000.0000000000 320000.0000000000
+534000.0000000000 320000.0000000000
+539000.0000000000 320000.0000000000
+544000.0000000000 320000.0000000000
+549000.0000000000 320000.0000000000
+554000.0000000000 320000.0000000000
+559000.0000000000 320000.0000000000
+564000.0000000000 320000.0000000000
+569000.0000000000 320000.0000000000
+574000.0000000000 320000.0000000000
+579000.0000000000 320000.0000000000
+584000.0000000000 320000.0000000000
+589000.0000000000 320000.0000000000
+594000.0000000000 320000.0000000000
+599333.3333333333 319047.6190476191
+604666.6666666666 318095.2380952381
+609333.3333333333 316190.4761904762
+614000.0000000000 314285.7142857143
+618666.6666666667 312380.9523809524
+623333.3333333334 310476.1904761905
+628000.0000000000 308571.4285714286
+632666.6666666666 306666.6666666667
+637333.3333333333 304761.9047619047
+642000.0000000000 302857.1428571428
+646666.6666666667 300952.3809523809
+651333.3333333334 299047.6190476191
+656000.0000000000 297142.8571428572
+660666.6666666666 295238.0952380953
+665333.3333333333 293333.3333333334
+670000.0000000000 291428.5714285714
+674666.6666666667 289523.8095238095
+679333.3333333334 287619.0476190476
+684000.0000000000 285714.2857142857
+688666.6666666666 283809.5238095238
+693333.3333333333 281904.7619047619
+698000.0000000000 280000.0000000000
+701333.3333333333 276236.5591397849
+704666.6666666666 272473.1182795699
+708000.0000000000 268709.6774193548
+711333.3333333334 264946.2365591398
+714666.6666666667 261182.7956989247
+718000.0000000000 257419.3548387097
+721333.3333333333 253655.9139784946
+724666.6666666666 249892.4731182796
+728000.0000000000 246129.0322580645
+731333.3333333334 242365.5913978495
+734666.6666666667 238602.1505376344
+738000.0000000000 234838.7096774194
+741333.3333333333 231075.2688172043
+744666.6666666666 227311.8279569892
+748000.0000000000 223548.3870967742
+751333.3333333334 219784.9462365591
+754666.6666666667 216021.5053763441
+758000.0000000000 212258.0645161290
+760000.0000000000 210000.0000000000
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/RoundFrontEISMINT.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/RoundFrontEISMINT.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/RoundFrontEISMINT.exp	(revision 21239)
@@ -0,0 +1,47 @@
+## Name:
+## Icon:0
+# Points Count Value
+41 1
+# X pos Y pos
+1000000.000000 0.000000
+987688.340595 156434.465040
+951056.516295 309016.994375
+891006.524188 453990.499740
+809016.994375 587785.252292
+707106.781187 707106.781187
+587785.252292 809016.994375
+453990.499740 891006.524188
+309016.994375 951056.516295
+156434.465040 987688.340595
+0.000000 1000000.000000
+-156434.465040 987688.340595
+-309016.994375 951056.516295
+-453990.499740 891006.524188
+-587785.252292 809016.994375
+-707106.781187 707106.781187
+-809016.994375 587785.252292
+-891006.524188 453990.499740
+-951056.516295 309016.994375
+-987688.340595 156434.465040
+-1000000.000000 0.000000
+-987688.340595 -156434.465040
+-951056.516295 -309016.994375
+-891006.524188 -453990.499740
+-809016.994375 -587785.252292
+-707106.781187 -707106.781187
+-587785.252292 -809016.994375
+-453990.499740 -891006.524188
+-309016.994375 -951056.516295
+-156434.465040 -987688.340595
+-0.000000 -1000000.000000
+156434.465040 -987688.340595
+309016.994375 -951056.516295
+453990.499740 -891006.524188
+587785.252292 -809016.994375
+707106.781187 -707106.781187
+809016.994375 -587785.252292
+891006.524188 -453990.499740
+951056.516295 -309016.994375
+987688.340595 -156434.465040
+1000000.000000 0.000000
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+1000000 0
+1000000 1000000
+0 1000000
+0 0
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square.js	(revision 21239)
@@ -0,0 +1,9 @@
+// Name:domainoutline
+// Icon:0
+// Points Count  Value
+var square={}
+square[0]={};
+square[0]["nods"]=5;
+// X pos Y pos
+square[0]["x"]=[0,1000000,1000000,0,0];
+square[0]["y"]=[0, 0, 1000000,  1000000, 0];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareEISMINT.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareEISMINT.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareEISMINT.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+200000 0
+200000 200000
+0 200000 
+0 0
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareEISMINT750000.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareEISMINT750000.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareEISMINT750000.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+-750000 -750000
+750000 -750000
+750000 750000
+-750000 750000 
+-750000 -750000
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareFront.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareFront.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareFront.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+-1000 999999
+-1000 1100000
+1100000 1100000
+1100000 999999
+-1000 999999
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareFront2.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareFront2.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareFront2.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+1000 999000
+1000 1100000
+999000 1100000
+999000 999000
+-1000 999000
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareFrontEISMINT.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareFrontEISMINT.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareFrontEISMINT.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+-1000 -1000
+-1000 1000
+201000 1000
+201000 -1000
+-1000 -1000
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareHalfRight.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareHalfRight.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareHalfRight.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+500000 0
+500000 1000000
+1000000 1000000
+1000000 0 
+500000 0
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareHole.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareHole.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareHole.exp	(revision 21239)
@@ -0,0 +1,21 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+1000000 0
+1000000 1000000
+0 1000000
+0 0
+
+## Name:domainoutline
+## Icon:1
+# Points Count  Value
+5 1.
+# X pos Y pos
+400000 400000 
+600000 400000
+600000 600000
+400000 600000
+400000 400000 
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareISMIP.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareISMIP.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareISMIP.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+-100000 -100000
+100000 -100000
+100000 100000
+-100000 100000
+-100000 -100000
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareOne.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareOne.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareOne.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+1 0
+1 1
+0 1
+0 0
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareRifts.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareRifts.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareRifts.exp	(revision 21239)
@@ -0,0 +1,126 @@
+## Name:Rifts
+## Icon:0
+# Points Count  Value
+120 1.000000
+# X pos Y pos
+240000.0000000000 210000.0000000000
+243333.3333333333 213763.4408602151
+246666.6666666667 217526.8817204301
+250000.0000000000 221290.3225806452
+253333.3333333333 225053.7634408602
+256666.6666666667 228817.2043010753
+260000.0000000000 232580.6451612903
+263333.3333333334 236344.0860215054
+266666.6666666667 240107.5268817204
+270000.0000000000 243870.9677419355
+273333.3333333333 247634.4086021505
+276666.6666666666 251397.8494623656
+280000.0000000000 255161.2903225806
+283333.3333333334 258924.7311827957
+286666.6666666667 262688.1720430108
+290000.0000000000 266451.6129032259
+293333.3333333333 270215.0537634409
+296666.6666666666 273978.4946236560
+300000.0000000000 277741.9354838710
+304733.3333333334 280394.7772657451
+309466.6666666667 283047.6190476191
+314133.3333333334 284952.3809523809
+318800.0000000000 286857.1428571428
+323466.6666666666 288761.9047619047
+328133.3333333333 290666.6666666667
+332800.0000000000 292571.4285714286
+337466.6666666667 294476.1904761905
+342133.3333333334 296380.9523809524
+346800.0000000000 298285.7142857143
+351466.6666666666 300190.4761904762
+356133.3333333333 302095.2380952381
+360800.0000000000 304000.0000000000
+365466.6666666667 305904.7619047619
+370133.3333333334 307809.5238095238
+374800.0000000000 309714.2857142857
+379466.6666666666 311619.0476190476
+384133.3333333333 313523.8095238095
+388800.0000000000 315428.5714285714
+393466.6666666667 317333.3333333333
+398733.3333333334 318666.6666666666
+404000.0000000000 320000.0000000000
+409000.0000000000 320000.0000000000
+414000.0000000000 320000.0000000000
+419000.0000000000 320000.0000000000
+424000.0000000000 320000.0000000000
+429000.0000000000 320000.0000000000
+434000.0000000000 320000.0000000000
+439000.0000000000 320000.0000000000
+444000.0000000000 320000.0000000000
+449000.0000000000 320000.0000000000
+454000.0000000000 320000.0000000000
+459000.0000000000 320000.0000000000
+464000.0000000000 320000.0000000000
+469000.0000000000 320000.0000000000
+474000.0000000000 320000.0000000000
+479000.0000000000 320000.0000000000
+484000.0000000000 320000.0000000000
+489000.0000000000 320000.0000000000
+494000.0000000000 320000.0000000000
+499000.0000000000 320000.0000000000
+504000.0000000000 320000.0000000000
+509000.0000000000 320000.0000000000
+514000.0000000000 320000.0000000000
+519000.0000000000 320000.0000000000
+524000.0000000000 320000.0000000000
+529000.0000000000 320000.0000000000
+534000.0000000000 320000.0000000000
+539000.0000000000 320000.0000000000
+544000.0000000000 320000.0000000000
+549000.0000000000 320000.0000000000
+554000.0000000000 320000.0000000000
+559000.0000000000 320000.0000000000
+564000.0000000000 320000.0000000000
+569000.0000000000 320000.0000000000
+574000.0000000000 320000.0000000000
+579000.0000000000 320000.0000000000
+584000.0000000000 320000.0000000000
+589000.0000000000 320000.0000000000
+594000.0000000000 320000.0000000000
+599333.3333333333 319047.6190476191
+604666.6666666666 318095.2380952381
+609333.3333333333 316190.4761904762
+614000.0000000000 314285.7142857143
+618666.6666666667 312380.9523809524
+623333.3333333334 310476.1904761905
+628000.0000000000 308571.4285714286
+632666.6666666666 306666.6666666667
+637333.3333333333 304761.9047619047
+642000.0000000000 302857.1428571428
+646666.6666666667 300952.3809523809
+651333.3333333334 299047.6190476191
+656000.0000000000 297142.8571428572
+660666.6666666666 295238.0952380953
+665333.3333333333 293333.3333333334
+670000.0000000000 291428.5714285714
+674666.6666666667 289523.8095238095
+679333.3333333334 287619.0476190476
+684000.0000000000 285714.2857142857
+688666.6666666666 283809.5238095238
+693333.3333333333 281904.7619047619
+698000.0000000000 280000.0000000000
+701333.3333333333 276236.5591397849
+704666.6666666666 272473.1182795699
+708000.0000000000 268709.6774193548
+711333.3333333334 264946.2365591398
+714666.6666666667 261182.7956989247
+718000.0000000000 257419.3548387097
+721333.3333333333 253655.9139784946
+724666.6666666666 249892.4731182796
+728000.0000000000 246129.0322580645
+731333.3333333334 242365.5913978495
+734666.6666666667 238602.1505376344
+738000.0000000000 234838.7096774194
+741333.3333333333 231075.2688172043
+744666.6666666666 227311.8279569892
+748000.0000000000 223548.3870967742
+751333.3333333334 219784.9462365591
+754666.6666666667 216021.5053763441
+758000.0000000000 212258.0645161290
+760000.0000000000 210000.0000000000
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareRiftsLateral.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareRiftsLateral.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareRiftsLateral.exp	(revision 21239)
@@ -0,0 +1,11 @@
+## Name:RiftsLateral
+## Icon:0
+# Points Count  Value
+5 1.000000
+# X pos Y pos
+162237.7622377622 351796.4071856287
+204195.8041958041 474550.8982035927
+226573.4265734265 594311.3772455089
+201398.6013986013 645209.5808383233
+128671.3286713285 696107.7844311377
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareShelf.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareShelf.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/SquareShelf.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 500000
+1000000 500000
+1000000 1000000
+0 1000000 
+0 500000
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square_10000.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square_10000.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square_10000.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+30000 0
+30000 30000
+0 30000
+0 0
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square_160000.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square_160000.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square_160000.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+480000 0
+480000 480000
+0 480000
+0 0
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square_20000.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square_20000.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square_20000.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+60000 0
+60000 60000
+0 60000
+0 0
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square_40000.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square_40000.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square_40000.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+120000 0
+120000 120000
+0 120000
+0 0
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square_5000.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square_5000.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square_5000.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+15000 0
+15000 15000
+0 15000
+0 0
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square_80000.exp
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square_80000.exp	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Exp/Square_80000.exp	(revision 21239)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+240000 0
+240000 240000
+0 240000
+0 0
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/build.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/build.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/build.sh	(revision 21239)
@@ -0,0 +1,35 @@
+#!/bin/bash
+#This script compiles and links MITgcm
+
+#recover hostname and model path:
+hostname="$1"
+modelpath="$2"
+
+if [ -e ~/.bashrc ]; then
+	source ~/.bashrc
+fi
+
+# Clean up build directory
+cd $modelpath
+if [ ! -d "build" ]; then mkdir build; fi
+\rm -f build/*
+
+# Get MITgcm code, if needed
+if [ ! -d "$SLR_DIR/components/mitgcm/install" ]; then
+   cd $modelpath/../MITgcm
+   source install.sh
+   cd $modelpath
+fi
+
+#create MITgcm makefile and code links for this run
+cd build
+if [ ! -f Makefile ]; then
+
+	if [ $hostname == "pleiades" ]; then 
+		$SLR_DIR/components/mitgcm/install/tools/genmake2 -of $SLR_DIR/models/ice-ocean/configs/linux_amd64_gfortran+mpi_ice_nas -mo ../code -rd $SLR_DIR/components/mitgcm/install
+	else
+		$modelpath/../MITgcm/install/tools/genmake2 -mpi -mo $modelpath/../MITgcm/code -rd $modelpath/../MITgcm/install
+	fi
+    make depend
+fi
+make -j 8
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/code/SIZE.h
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/code/SIZE.h	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/code/SIZE.h	(revision 21239)
@@ -0,0 +1,64 @@
+C $Header: /u/gcmpack/MITgcm/model/inc/SIZE.h,v 1.28 2009/05/17 21:15:07 jmc Exp $
+C $Name:  $
+C
+CBOP
+C    !ROUTINE: SIZE.h
+C    !INTERFACE:
+C    include SIZE.h
+C    !DESCRIPTION: \bv
+C     *==========================================================*
+C     | SIZE.h Declare size of underlying computational grid.     
+C     *==========================================================*
+C     | The design here support a three-dimensional model grid    
+C     | with indices I,J and K. The three-dimensional domain      
+C     | is comprised of nPx*nSx blocks of size sNx along one axis 
+C     | nPy*nSy blocks of size sNy along another axis and one     
+C     | block of size Nz along the final axis.                    
+C     | Blocks have overlap regions of size OLx and OLy along the 
+C     | dimensions that are subdivided.                           
+C     *==========================================================*
+C     \ev
+CEOP
+C     Voodoo numbers controlling data layout.
+C     sNx :: No. X points in sub-grid.
+C     sNy :: No. Y points in sub-grid.
+C     OLx :: Overlap extent in X.
+C     OLy :: Overlat extent in Y.
+C     nSx :: No. sub-grids in X.
+C     nSy :: No. sub-grids in Y.
+C     nPx :: No. of processes to use in X.
+C     nPy :: No. of processes to use in Y.
+C     Nx  :: No. points in X for the total domain.
+C     Ny  :: No. points in Y for the total domain.
+C     Nr  :: No. points in Z for full process domain.
+      INTEGER sNx
+      INTEGER sNy
+      INTEGER OLx
+      INTEGER OLy
+      INTEGER nSx
+      INTEGER nSy
+      INTEGER nPx
+      INTEGER nPy
+      INTEGER Nx
+      INTEGER Ny
+      INTEGER Nr
+      PARAMETER (
+     &           sNx =  10,
+     &           sNy =  10,
+     &           OLx =   3,
+     &           OLy =   3,
+     &           nSx =   1,
+     &           nSy =   1,
+     &           nPx = 2,
+     &           nPy = 4,
+     &           Nx  = sNx*nSx*nPx,
+     &           Ny  = sNy*nSy*nPy,
+     &           Nr  =  30)
+
+C     MAX_OLX :: Set to the maximum overlap region size of any array
+C     MAX_OLY    that will be exchanged. Controls the sizing of exch
+C                routine buffers.
+      INTEGER MAX_OLX
+      INTEGER MAX_OLY
+      PARAMETER ( MAX_OLX = OLx,
+     &            MAX_OLY = OLy )
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/code/SIZE.h.bak
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/code/SIZE.h.bak	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/code/SIZE.h.bak	(revision 21239)
@@ -0,0 +1,64 @@
+C $Header: /u/gcmpack/MITgcm/model/inc/SIZE.h,v 1.28 2009/05/17 21:15:07 jmc Exp $
+C $Name:  $
+C
+CBOP
+C    !ROUTINE: SIZE.h
+C    !INTERFACE:
+C    include SIZE.h
+C    !DESCRIPTION: \bv
+C     *==========================================================*
+C     | SIZE.h Declare size of underlying computational grid.     
+C     *==========================================================*
+C     | The design here support a three-dimensional model grid    
+C     | with indices I,J and K. The three-dimensional domain      
+C     | is comprised of nPx*nSx blocks of size sNx along one axis 
+C     | nPy*nSy blocks of size sNy along another axis and one     
+C     | block of size Nz along the final axis.                    
+C     | Blocks have overlap regions of size OLx and OLy along the 
+C     | dimensions that are subdivided.                           
+C     *==========================================================*
+C     \ev
+CEOP
+C     Voodoo numbers controlling data layout.
+C     sNx :: No. X points in sub-grid.
+C     sNy :: No. Y points in sub-grid.
+C     OLx :: Overlap extent in X.
+C     OLy :: Overlat extent in Y.
+C     nSx :: No. sub-grids in X.
+C     nSy :: No. sub-grids in Y.
+C     nPx :: No. of processes to use in X.
+C     nPy :: No. of processes to use in Y.
+C     Nx  :: No. points in X for the total domain.
+C     Ny  :: No. points in Y for the total domain.
+C     Nr  :: No. points in Z for full process domain.
+      INTEGER sNx
+      INTEGER sNy
+      INTEGER OLx
+      INTEGER OLy
+      INTEGER nSx
+      INTEGER nSy
+      INTEGER nPx
+      INTEGER nPy
+      INTEGER Nx
+      INTEGER Ny
+      INTEGER Nr
+      PARAMETER (
+     &           sNx =  20,
+     &           sNy =  20,
+     &           OLx =   3,
+     &           OLy =   3,
+     &           nSx =   1,
+     &           nSy =   1,
+     &           nPx =   1,
+     &           nPy =   2,
+     &           Nx  = sNx*nSx*nPx,
+     &           Ny  = sNy*nSy*nPy,
+     &           Nr  =  30)
+
+C     MAX_OLX :: Set to the maximum overlap region size of any array
+C     MAX_OLY    that will be exchanged. Controls the sizing of exch
+C                routine buffers.
+      INTEGER MAX_OLX
+      INTEGER MAX_OLY
+      PARAMETER ( MAX_OLX = OLx,
+     &            MAX_OLY = OLy )
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/get_mitgcm.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/get_mitgcm.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/get_mitgcm.sh	(revision 21239)
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+if [ -e ~/.bashrc ]; then 
+	source ~/.bashrc
+fi
+
+# Download fresh copy of MITgcm
+cd ../MITgcm/
+source install.sh
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/input/data
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/input/data	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/input/data	(revision 21239)
@@ -0,0 +1,74 @@
+# ====================
+# | Model parameters |
+# ====================
+#
+# Continuous equation parameters
+ &PARM01
+ Tref = 30*-1.9,
+ Sref = 30*34.4,
+ viscAz=1.E-3,
+ viscAh=600.0,
+ no_slip_sides=.FALSE.,
+ no_slip_bottom=.FALSE.,
+ diffKhT=100.0,
+ diffKzT=5.E-5,
+ diffKhS=100.0,
+ diffKzS=5.E-5,
+ bottomDragQuadratic=2.5E-3,
+ eosType='JMD95Z', 
+ HeatCapacity_cp = 3974.0,
+ rhoConst=1030.,
+ rhoNil=1030.,
+ gravity=9.81,
+ convertFW2Salt = 33.4,
+ rigidLid=.FALSE.,
+ implicitFreeSurface=.TRUE.,
+ exactConserv=.TRUE.,
+ hFacMin=0.05,
+ nonHydrostatic=.FALSE.,
+ globalfiles = .TRUE.,
+ useSingleCpuIO = .TRUE.,
+ &
+
+# Elliptic solver parameters
+ &PARM02
+ cg2dMaxIters=1000,
+ cg2dTargetResidual=1.E-13,
+ cg3dMaxIters=400,
+ cg3dTargetResidual=1.E-13,
+ &
+
+# Time stepping parameters
+ &PARM03
+ startTime=0.,
+ endTime=2592000.,
+ deltaT=1200.0,
+ abEps=0.1,
+ cAdjFreq = 1.,
+ pChkptFreq=2592000.,
+ chkptFreq=0.,
+ dumpFreq=0.,
+ taveFreq=2592000.,
+ monitorFreq=86400.,
+ monitorSelect=2,
+ &
+
+# Gridding parameters
+ &PARM04
+ usingSphericalPolarGrid=.TRUE.,
+ xgOrigin = 0.0,
+ ygOrigin = -80.0,
+ delX = 20*0.25,
+ delY = 40*0.05,
+ delZ = 30*30.0,
+ &
+
+# Input datasets
+ &PARM05
+ bathyFile       = 'bathymetry.bin',
+ hydrogSaltFile  = 'Salt.bin',
+ hydrogThetaFile = 'Theta.bin',
+ uVelInitFile    = 'Uvel.bin',
+ vVelInitFile    = 'Vvel.bin',
+ pSurfInitFile   = 'Etan.bin',
+ &
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/input/data.obcs
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/input/data.obcs	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/input/data.obcs	(revision 21239)
@@ -0,0 +1,18 @@
+# ***************
+# Open boundaries
+# ***************
+ &OBCS_PARM01
+ OB_Iwest = 40*1,
+ OB_Ieast = 40*-1,
+#
+ useOBCSprescribe = .TRUE.,
+#
+ OBWsFile = 'OBs.bin',
+ OBWtFile = 'OBt.bin',
+ OBWuFile = 'OBu.bin',
+ OBWvFile = 'zeros.bin',
+ OBEsFile = 'OBs.bin',
+ OBEtFile = 'OBt.bin',
+ OBEuFile = 'OBu.bin',
+ OBEvFile = 'zeros.bin',
+ &
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/input/data.pkg
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/input/data.pkg	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/input/data.pkg	(revision 21239)
@@ -0,0 +1,5 @@
+# Packages
+ &PACKAGES
+ useShelfIce = .TRUE.,
+ useOBCS     = .TRUE.,
+ &
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/input/data.shelfice
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/input/data.shelfice	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/input/data.shelfice	(revision 21239)
@@ -0,0 +1,9 @@
+# ===================================
+# | Parameters for SHELFICE package |
+# ===================================
+ &SHELFICE_PARM01
+ SHELFICEconserve = .TRUE.,
+ SHELFICEboundaryLayer = .TRUE.,
+ SHELFICEtopoFile='icetopo.bin',
+ SHELFICEwriteState = .TRUE.,
+ &
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/input/eedata
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/input/eedata	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/input/eedata	(revision 21239)
@@ -0,0 +1,9 @@
+# Example "eedata" file
+# Lines beginning "#" are comments
+# nTx - No. threads per process in X
+# nTy - No. threads per process in Y
+ &EEPARMS
+ &
+# Note: Some systems use & as the
+# namelist terminator. Other systems
+# use a / character (as shown here).
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/install.sh
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/install.sh	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/install.sh	(revision 21239)
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+#Some cleanup
+\rm -rf install
+
+#Add cvs repository
+export CVSROOT=':pserver:cvsanon@mitgcm.org:/u/gcmpack'
+
+#Download code from server
+echo loging into MITgcm CVS server
+echo enter MITgcm CVS password: cvsanon
+#Login only the first time
+#cvs login
+cvs co -P MITgcm_code
+
+#Move
+mv MITgcm install
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/tools/myint2str.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/tools/myint2str.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/tools/myint2str.m	(revision 21239)
@@ -0,0 +1,12 @@
+function s=myint2str(x,n);
+%MYIN2STR(X,N)   convert integer to string with leading zeros
+%                padds integer X with zeros to N locations
+
+if nargin < 2, n=2;  end
+if nargin < 1, help myint2str, return, end
+
+s=int2str(x);
+n=n-length(s);
+for i=1:n
+  s=['0' s];
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/tools/readbin.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/tools/readbin.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/MITgcm/tools/readbin.m	(revision 21239)
@@ -0,0 +1,68 @@
+function fld=readbin(fnam,siz,typ,prec,skip,mform)
+
+% Function fld=readbin(fnam,siz,typ,prec,skip,mform)
+% read in N-D binary field
+%
+% INPUTS
+% fnam  input path and file name
+% siz   grid dimension (default [360 224 46])
+% typ   0: sequential FORTRAN;  1: plain binary (the default)
+% prec  numeric precision (see fread; default: 'real*4')
+% skip  records to skip before reading (default 0)
+% mform machine format (see fopen; default: 'ieee-be')
+%
+% OUTPUTS
+% fld    output array of dimension siz
+%
+% SEE ALSO
+% read_ijk read_ijkt writebin
+
+if nargin < 6, mform='ieee-be'; end
+if nargin < 5, skip=0; end
+if nargin < 4, prec='real*4'; end
+if nargin < 3, typ=1; end
+if nargin < 2, siz=[360 224 46]; end
+if nargin < 1, error('please specify input file name'); end
+
+fid=fopen(fnam,'r',mform);
+
+if skip>0
+  if typ==0
+    for n=1:skip
+      tmp=read_record(fid,prec);
+    end
+  else
+    switch prec
+      case {'int8','integer*1'}
+        reclength=prod(siz);
+      case {'int16','integer*2','uint16','integer*2'}
+        reclength=2*prod(siz);
+      case {'int32','integer*4','uint32','single','real*4','float32'}
+        reclength=4*prod(siz);
+      case {'int64','integer*8','uint64','double','real*8','float64'}
+        reclength=8*prod(siz);
+    end
+    if(fseek(fid,skip*reclength,'bof')<0), error('past end of file'); end
+  end
+end
+
+switch typ
+  case 0
+    tmp=read_record(fid,prec);
+  case 1
+    tmp=fread(fid,[siz(1),prod(siz(2:length(siz)))],prec);
+end
+fid=fclose(fid);
+
+switch length(siz)
+  case 2
+    fld=reshape(tmp,siz(1),siz(2));
+  case 3
+    fld=reshape(tmp,siz(1),siz(2),siz(3));
+  case 4
+    fld=reshape(tmp,siz(1),siz(2),siz(3),siz(4));
+  case 5
+    fld=reshape(tmp,siz(1),siz(2),siz(3),siz(4),siz(5));
+  otherwise
+    fld=tmp;
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/IdFromString.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/IdFromString.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/IdFromString.m	(revision 21239)
@@ -0,0 +1,45 @@
+function ids=IdFromString(string),
+%IDFROMSTRING - output ids from a given string
+%
+%   Usage:
+%      ids=IdFromString(string);
+%
+%   Examples:
+%      ids=IdFromString('Parallel');
+%      ids=IdFromString('79North');
+%      ids=IdFromString('*');          %Print all tests
+
+%Check input
+if ~ischar(string)
+	error('IdFromString error message: input argument is not a string');
+end
+
+%Initialize output
+ids=[];
+
+%Grep string
+if strcmp(string,'*'),
+	[dummy ids_raw]=system(['find ./ -name "test[0-9]*.m" | xargs grep "%Test Name:" | sed -e "s/test/ /g" -e "s/\.m:/ /g" | awk {''print $2''}']);
+else
+	[dummy ids_raw]=system(['find ./ -name "test[0-9]*.m" | xargs grep "%Test Name:" | grep ' string ' | sed -e "s/test/ /g" -e "s/\.m:/ /g" | awk {''print $2''}']);
+end
+
+%return if no test found
+if isempty(ids_raw),
+	disp(['No test matches ''' string '''' ]);
+	return
+end
+
+%Process string (delete return carriage);
+ids_raw=strsplit_strict(ids_raw,char(10));
+ids_raw=ids_raw(1:end-1);
+for i=1:length(ids_raw),
+	eval(['ids=[ids ' ids_raw{i} '];']); 
+end
+ids=sort(ids);
+
+%Display names
+disp([ num2str(length(ids)) ' tests match ''' string '''']);
+for i=1:length(ids)
+	disp([ '   ' num2str(ids(i)) ' : ' IdToName(ids(i)) ]);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/IdFromString.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/IdFromString.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/IdFromString.py	(revision 21239)
@@ -0,0 +1,37 @@
+#! /usr/bin/env python
+from IdToName import IdToName
+
+def IdFromString(string):
+	"""
+	IDFROMSTRING - output ids from a given string
+ 
+	    Usage:
+	       ids=IdFromString(string)
+ 
+	    Examples:
+	       ids=IdFromString('Parallel')
+	       ids=IdFromString('79North')
+			 ids=IdFromString('*')
+	"""
+
+	#Check input
+	if not isinstance(string,str):
+		raise TypeError('IdFromString error message: input argument is not a string.')
+
+	#Get the dictionary and scan for matches
+	idnames=IdToName(0)
+	ids=[item[0] for item in idnames.iteritems() if string in item[1]]
+
+	#Return if no test found
+	if not ids:
+		print "No test matches '%s'." % string
+		return ids
+
+	#Display names
+	ids.sort()
+	print "%d tests match '%s':" % (len(ids),string)
+	for id in ids:
+		print "   %d : %s" % (id,idnames[id])
+
+	return ids
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/IdToName.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/IdToName.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/IdToName.m	(revision 21239)
@@ -0,0 +1,46 @@
+function name=IdToName(id);
+%IDTONAME- return name of test
+%  
+%   if id=0, the full list of test is returned
+%
+%   Usage:
+%      name=IdToName();
+%      name=IdToName(id);
+
+if nargin==0 | id==0,
+	flist=dir;%use dir, as it seems to act OS independent
+	list_ids=[];
+	for i=1:numel(flist),
+		if ( strncmp(flist(i).name,'test',4) &...                         %File name must start with 'test'
+				strncmp(fliplr(flist(i).name),fliplr('.m'),2)&...           %File name must end by '.m'
+				~strcmp(flist(i).name,'test.m'))                            %File name must be different than 'test.m'
+			id=str2num(flist(i).name(5:end-2));
+			if isempty(id),
+				disp(['WARNING: ignore file ' flist(i).name ]);
+			else
+				list_ids(end+1)=eval(flist(i).name(5:end-2));                  %Keep test id only (skip 'test' and '.m')
+			end
+		end
+	end
+	list_ids=sort(list_ids);
+	for i=list_ids,
+		name=IdToName(i);
+		disp(['test ' num2str(i,'%5i\n') ' : ' name]);
+	end
+	return;
+end
+
+filename = ['test' num2str(id) '.m'];
+
+if ~exist(filename,'file')
+	error(['file ' filename ' does not exist']);
+end
+
+string='%TestName:';
+fid=fopen(filename,'r');
+A=fscanf(fid,'%s',3);
+if ~strncmp(A,string,numel(string)) | numel(A)<numel(string)+2,
+	error(['Test file ' filename ' does to start with a test name']);
+end
+name = A(numel(string)+1:end);
+fclose(fid);
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/IdToName.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/IdToName.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/IdToName.py	(revision 21239)
@@ -0,0 +1,17 @@
+#! /usr/bin/env python
+
+def IdToName(id):
+	"""
+	IDTONAME- return name of test
+ 
+	    Usage:
+	       name=IdToName(id)
+	"""
+
+	infile  = open('test' + str(id) + '.py','r')
+	file_text  = infile.readlines()
+
+	string='#Test Name:';
+	name=file_text[0]
+	name=name[len(string)+1:-1]
+	return name
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/Makefile
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/Makefile	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/Makefile	(revision 21239)
@@ -0,0 +1,2 @@
+clean: 
+	rm -rf *.tar.gz *.bin *.errlog *.outlog  *.outbin *.petsc *.queue *.toolkits *.run valgrind.log* *.bat *.lock qmu*
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/README
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/README	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/README	(revision 21239)
@@ -0,0 +1,36 @@
+
+# running a test
+-----------------
+
+To run a test, just type: testxxx in matlab
+To check that the results of a test are similar to the Archive, type: runme('id',xxx)
+Several tests can be run at the same time.
+If no id if specified, all the tests will be done.
+All the archives are contained in ../Archives
+To update a test archive, use runme('procedure','update','id',xxx)
+Once again, if no id is specified, all the archives will be updated.
+
+
+# How to create a new test
+--------------------------
+
+This directory contains all the tests that run every night to check the code.
+The file IdToName associate a test id to its name.
+All the files necessary to run the tests can be found in:
+../Exp/ for the exp files (domains, contours, ...)
+../Par/ for the parameter files (to parameterize a model)
+../Data/ for the datasets needed to initialize a model
+To add a test, create a new testxxx.m and a testxxx_nightly.m
+
+The first number of the id correspond to the type of test:
+1: SquareShelfConstrained (no icefront)
+2: SquareShelf (with an icefront)
+3: SquareSheetConstrained (no icefront)
+4: SquareSheetShelf (Marine ice sheet with an ice shelf at the end)
+5: Pine Island Glacier
+6: 79North
+Add the id and testname in IdToName.m (incresing order)
+We try not to create too many .par and .exp files, so try to use the existing ones as much as possible.
+To modify some characteristics, do it in the testxxx.m file.
+Specify the field_names the field_values and the tolerance at the end of the test file.
+Don't forget to commit the archive (Archivexxx.arch in ../Archives)
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/python_skipped_tests.txt
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/python_skipped_tests.txt	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/python_skipped_tests.txt	(revision 21239)
@@ -0,0 +1,22 @@
+%Get full list with:
+%  for i in test*.m; do NAME=$(echo $i | sed -e "s/\.m//"); %if [ ! -f $NAME.py ]; then echo $NAME; fi; done
+
+test218    needs Dakota
+test234    needs Dakota
+test235    needs Dakota
+test412    needs Dakota
+test413    needs Dakota
+test414    needs Dakota
+test417    needs Dakota
+test418    needs Dakota
+test420    needs Dakota
+
+test1401,test1402
+Roundoff error in ComputeHessian and ComputeMetric causes different meshes
+from matlab, specifically in the handling of 0/0=nan, eps/0=inf, etc.  Since
+the mesh is of a different size, NR fails.  (Note Matlab test1402 currently
+fails.)
+
+test1109,test1110
+Ugly crashes in solver, but same behavior as Matlab.
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/runme.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/runme.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/runme.m	(revision 21239)
@@ -0,0 +1,266 @@
+function varargout=runme(varargin)
+%RUNME - test deck for ISSM nightly runs
+%
+%   In a test deck directory (tests/Vertification/NightlyRun for example)
+%   The following command will launch all the existing tests:
+%   >> runme
+%   To run the tests 101 and 102:
+%   >> runme('id',[101 102])
+%   etc...
+%
+%   Available options:
+%      'id'            followed by the list of ids requested
+%      'exclude'       ids to be excluded from the test
+%      'benchmark'     'all' (all of them)
+%                      'nightly' (nightly run)
+%                      'ismip'  : validation of ismip-hom tests
+%                      'eismint': validation of eismint tests
+%                      'thermal': validation of thermal tests
+%                      'mesh'   : validation of mesh tests
+%                      'adolc'   : validation of adolc tests
+%                      'slr'   : validation of slr tests
+%                      'qmu'   : validation of dakota tests
+%                      ...
+%      'procedure'     'check' :   run the test (default)
+%                      'update':   update the archive
+%                      'valgrind': check for memory leaks (default value of md.debug.valgrind needs to be changed manually)
+%      'stoponerror'   1 or 0
+%
+%   Usage:
+%      runme(varargin);
+%
+%   Examples:
+%      runme;
+%      runme('exclude',101);
+%      runme('id',102,'procedure','update');
+
+%Check inputs
+% {{{
+if nargout>1
+	help runme
+	error('runme error message: bad usage');
+end
+
+%recover options
+options=pairoptions(varargin{:});
+% }}}
+
+%Process options
+%GET benchmark {{{
+benchmark=getfieldvalue(options,'benchmark','nightly');
+if ~ismember(benchmark,{'all','nightly','ismip','eismint','thermal','mesh','validation','tranforcing','adolc','slr','qmu'})
+	disp('runme warning: benchmark not supported, defaulting to test ''nightly''')
+	benchmark='nightly';
+end
+% }}}
+%GET procedure {{{
+procedure=getfieldvalue(options,'procedure','check');
+if ~ismember(procedure,{'check','update','valgrind'})
+	disp('runme warning: procedure not supported, defaulting to test ''check''')
+	procedure='check';
+end
+% }}}
+%GET output {{{
+output=getfieldvalue(options,'output','none');
+if ~ismember(output,{'nightly','none'})
+	disp('runme warning: output not supported, defaulting to test ''none''')
+	output='none';
+end
+% }}}
+%GET RANK and NUMPROCS for multithreaded runs  {{{
+rank=getfieldvalue(options,'rank',1);
+numprocs=getfieldvalue(options,'numprocs',1);
+if (numprocs<rank), numprocs=1; end
+% }}}
+%GET ids  {{{
+flist=dir;%use dir, as it seems to act OS independent
+list_ids=[];
+for i=1:numel(flist),
+	if ( strncmp(flist(i).name,'test',4) &...                         %File name must start with 'test'
+			strncmp(fliplr(flist(i).name),fliplr('.m'),2)&...           %File name must end by '.m'
+			~strcmp(flist(i).name,'test.m'))                            %File name must be different than 'test.m'
+		id=str2num(flist(i).name(5:end-2));
+		if isempty(id),
+			disp(['WARNING: ignore file ' flist(i).name ]);
+		else
+			list_ids(end+1)=eval(flist(i).name(5:end-2));                  %Keep test id only (skip 'test' and '.m')
+		end
+	end
+end
+[i1,i2]=parallelrange(rank,numprocs,length(list_ids));               %Get tests for this cpu only
+list_ids=list_ids(i1:i2);
+
+test_ids=getfieldvalue(options,'id',list_ids);
+test_ids=intersect(test_ids,list_ids);
+% }}}
+%GET exclude {{{
+exclude_ids=getfieldvalue(options,'exclude',[]);
+exclude_ids=[exclude_ids];
+pos=find(ismember(test_ids,exclude_ids));
+test_ids(pos)=[];
+% }}}
+%Process Ids according to benchmarks{{{
+if strcmpi(benchmark,'nightly'),
+	test_ids=intersect(test_ids,[1:999]);
+elseif strcmpi(benchmark,'validation'),
+	test_ids=intersect(test_ids,[1001:1999]);
+elseif strcmpi(benchmark,'ismip'),
+	test_ids=intersect(test_ids,[1101:1199]);
+elseif strcmpi(benchmark,'eismint'),
+	test_ids=intersect(test_ids,[1201:1299]);
+elseif strcmpi(benchmark,'thermal'),
+	test_ids=intersect(test_ids,[1301:1399]);
+elseif strcmpi(benchmark,'mesh'),
+	test_ids=intersect(test_ids,[1401:1499]);
+elseif strcmpi(benchmark,'tranforcing'),
+	test_ids=intersect(test_ids,[1501:1502]);
+elseif strcmpi(benchmark,'referential'),
+	test_ids=intersect(test_ids,[1601:1602]);
+elseif strcmpi(benchmark,'slr'),
+	test_ids=intersect(test_ids,[2001:2500]);
+elseif strcmpi(benchmark,'adolc'),
+	test_ids=intersect(test_ids,[3001:3200]);
+elseif strcmpi(benchmark,'qmu'),
+	test_ids=intersect(test_ids,[218 234 235 412:414 417 418 420]);
+end
+% }}}
+
+%Loop over tests and launch sequence
+root=pwd;
+for id=test_ids,
+	disp(sprintf('%s%i%s','----------------starting:',id,'-----------------------'));
+	try,
+		%Execute test
+		eval(['cd ' root ]);
+		id_string='N/A';
+		id_string=IdToName(id);
+		eval(['test' num2str(id)]);
+
+		%UPDATE ARCHIVE?
+		archive_name=['Archive' num2str(id) ];
+		if strcmpi(procedure,'update'),
+			delete(['../Archives/' archive_name '.arch'])
+			for k=1:length(field_names),
+				field=field_values{k};
+				archwrite(['../Archives/' archive_name '.arch'],[archive_name '_field' num2str(k)], field);
+			end
+			disp(sprintf(['File ./../Archives/' archive_name '.arch saved\n']));
+
+		%CHECK for memory leaks?
+		elseif strcmpi(procedure,'valgrind'),
+			fields = fieldnames(md.results);
+			for i=1:numel(fields)
+				if ~isfield(md.results.(fields{i}),'errlog'),
+					disp(['Skipping ' fields{i}]);
+					continue;
+				else
+					disp(['Extracting results of ' fields{i}]);
+				end
+				results = md.results.(fields{i});
+				errlog  = cellstr(results(1).errlog);
+
+				%Check leaks
+				lines  = strfind(errlog,'definitely lost:');
+				lines  = find(~cellfun(@isempty,lines));
+				leaks   = 0;
+				for j=1:numel(lines)
+					Line    = errlog(lines(j));
+					Numbers = sscanf(Line{1},'==%i==   definitely lost: %s bytes in %i blocks',[1 Inf]);
+					leaks   = leaks + str2num(strrep(char(Numbers(2:end-1)),',',''));
+				end
+				%Check conditional jumps
+				lines  = strfind(errlog,'Conditional jump or move depends on uninitialised value');
+				lines  = find(~cellfun(@isempty,lines));
+				jumps   = numel(lines);
+				%Check invalid read/write
+				lines  = strfind(errlog,'Invalid');
+				lines  = find(~cellfun(@isempty,lines));
+				inval  = numel(lines);
+				if leaks==0,
+					disp(sprintf(['SUCCESS difference: 0 < 0 test id: %i test name: %s field: valgrind mem. leaks'],id,id_string));
+				else
+					disp(sprintf(['ERROR   difference: %i > 0 test id: %i test name: %s field: valgrind mem. leaks'],leaks,id,id_string));
+					disp('STOP');
+					return;
+				end
+				if jumps==0,
+					disp(sprintf(['SUCCESS difference: 0 < 0 test id: %i test name: %s field: valgrind cond. jumps'],id,id_string));
+				else
+					disp(sprintf(['ERROR   difference: %i > 0 test id: %i test name: %s field: valgrind cond. jumps'],jumps,id,id_string));
+					disp('STOP');
+					return;
+				end
+				if inval==0,
+					disp(sprintf(['SUCCESS difference: 0 < 0 test id: %i test name: %s field: valgrind invalid read/write'],id,id_string));
+				else
+					disp(sprintf(['ERROR   difference: %i > 0 test id: %i test name: %s field: valgrind invalid read/write'],inval,id,id_string));
+					disp('STOP');
+					return;
+				end
+			end
+
+		%ELSE: CHECK TEST
+		else,
+			for k=1:length(field_names),
+
+				try,
+					%Get field and tolerance
+					field=field_values{k};
+					fieldname=field_names{k};
+					tolerance=field_tolerances{k};
+
+					%compare to archive
+					%our output is in the correct order (n,1) or (1,1), so we do not need to transpose again
+					archive_cell=archread(['../Archives/' archive_name '.arch'],[archive_name '_field' num2str(k)]);
+					archive=archive_cell{1};
+					error_diff=full(max(abs(archive(:)-field(:)))/(max(abs(archive(:)))+eps));
+
+					%disp test result
+					if (error_diff>tolerance | isnan(error_diff));
+						disp(sprintf(['ERROR   difference: %-7.2g > %7.2g test id: %i test name: %s field: %s'],...
+							error_diff,tolerance,id,id_string,fieldname));
+						if(getfieldvalue(options,'stoponerror',0)), disp('STOP'); return; end
+					else
+						disp(sprintf(['SUCCESS difference: %-7.2g < %7.2g test id: %i test name: %s field: %s'],...
+							error_diff,tolerance,id,id_string,fieldname));
+					end
+
+				catch me2
+
+					%something went wrong, print failure message:
+					message=getReport(me2);
+					fprintf('%s',message);
+					if strcmpi(output,'nightly')
+						fid=fopen([issmdir() '/nightlylog/matlaberror.log'], 'at');
+						fprintf(fid,'%s',message);
+						fprintf(fid,'\n------------------------------------------------------------------\n');
+						fclose(fid);
+						disp(sprintf(['FAILURE difference: N/A test id: %i test name: %s field: %s'],id,id_string,fieldname));
+					else
+						disp(sprintf(['FAILURE difference: N/A test id: %i test name: %s field: %s'],id,id_string,fieldname));
+						fprintf('%s',message);
+						if(getfieldvalue(options,'stoponerror',0)), disp('STOP'); return; end
+					end
+					continue;
+				end
+			end
+		end
+	catch me,
+
+		%something went wrong, print failure message:
+		message=getReport(me);
+		fprintf('%s',message);
+		if strcmpi(output,'nightly')
+			fid=fopen([issmdir() '/nightlylog/matlaberror.log'], 'at');
+			fprintf(fid,'%s',message);
+			fprintf(fid,'\n------------------------------------------------------------------\n');
+			fclose(fid);
+			disp(sprintf(['FAILURE difference: N/A test id: %i test name: %s field: %s'],id,id_string,'N/A'));
+		else
+			disp(sprintf(['FAILURE difference: N/A test id: %i test name: %s field: %s'],id,id_string,'N/A'));
+			rethrow(me);
+			if(getfieldvalue(options,'stoponerror',0)), disp('STOP'); return; end
+		end
+	end
+	disp(sprintf('%s%i%s','----------------finished:',id,'-----------------------'));
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/runme.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/runme.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/runme.py	(revision 21239)
@@ -0,0 +1,260 @@
+#!/usr/bin/env python
+import os
+import glob
+import socket
+import numpy
+import sys
+import traceback
+
+def runme(id=None,exclude=None,benchmark='nightly',procedure='check',output='none',rank=1,numprocs=1):
+	"""
+	RUNME - test deck for ISSM nightly runs
+ 
+	    In a test deck directory (tests/Vertification/NightlyRun for example)
+	    The following command will launch all the existing tests:
+	    >> runme()
+	    To run the tests 101 and 102:
+	    >> runme(id=[101,102])
+	    etc...
+ 
+	    Available options:
+	       'id'            followed by the list of ids requested
+	       'exclude'       ids to be excluded from the test
+	       'benchmark'     'all' (all of the tests)
+                          'nightly' (nightly run/ daily run)
+                          'ismip'  : validation of ismip-hom tests
+                          'eismint': validation of eismint tests
+                          'thermal': validation of thermal tests
+                          'mesh'   : validation of mesh tests
+                          'adolc'  : validation of adolc tests
+                          'slr'   : validation of slr tests
+
+	       'procedure'     'check' : run the test (default)
+	                       'update': update the archive
+ 
+	    Usage:
+	       runme(varargin);
+ 
+	    Examples:
+	       runme()
+	       runme(exclude=101)
+	       runme(id=102,procedure='update')
+	"""
+
+	from parallelrange import parallelrange
+	from IdToName import IdToName
+	from MatlabFuncs import strcmpi
+	from MatlabFuncs import ismember
+	from arch import archread
+	from arch import archwrite
+	from arch import archdisp
+
+	#Get ISSM_DIR variable
+	ISSM_DIR=os.environ['ISSM_DIR']
+
+	#Process options
+	#GET benchmark {{{
+	if not ismember(benchmark,['all','nightly','ismip','eismint','thermal','mesh','validation','tranforcing','adolc','slr']):
+		print "runme warning: benchmark '%s' not supported, defaulting to test 'nightly'." % benchmark
+		benchmark='nightly'
+	# }}}
+	#GET procedure {{{
+	if not ismember(procedure,['check','update']):
+		print "runme warning: procedure '%s' not supported, defaulting to test 'check'." % procedure
+		procedure='check'
+	# }}}
+	#GET output {{{
+	if not ismember(output,['nightly','none']):
+		print "runme warning: output '%s' not supported, defaulting to test 'none'." % output
+		output='none'
+	# }}}
+	#GET RANK and NUMPROCS for multithreaded runs {{{
+	if (numprocs<rank):
+		numprocs=1
+	# }}}
+	#GET ids  {{{
+	flist=glob.glob('test*.py')    #File name must start with 'test' and must end by '.py' and must be different than 'test.py'
+	list_ids=[int(file[4:-3]) for file in flist if not file == 'test.py']    #Keep test id only (skip 'test' and '.py')
+	#print 'list_ids =',list_ids
+
+	i1,i2=parallelrange(rank,numprocs,len(list_ids))    #Get tests for this cpu only
+	list_ids=list_ids[i1:i2+1]
+	#print 'list_ids after parallelrange =',list_ids
+
+	if id:
+		if isinstance(id,list):
+			test_ids=id
+		else:
+			test_ids=[id]
+		test_ids=set(test_ids).intersection(set(list_ids))
+	else:
+		test_ids=set(list_ids)
+	#print 'test_ids after list =',test_ids
+	# }}}
+	#GET exclude {{{
+	if exclude:
+		if isinstance(exclude,list):
+			exclude_ids=exclude
+		else:
+			exclude_ids=[exclude]
+		test_ids=test_ids.difference(set(exclude_ids))
+#	print 'test_ids after exclude =',test_ids
+	# }}}
+	#Process Ids according to benchmarks {{{
+	if   strcmpi(benchmark,'nightly'):
+		test_ids=test_ids.intersection(set(range(1,1000)))
+	elif strcmpi(benchmark,'validation'):
+		test_ids=test_ids.intersection(set(range(1001,2000)))
+	elif strcmpi(benchmark,'ismip'):
+		test_ids=test_ids.intersection(set(range(1101,1200)))
+	elif strcmpi(benchmark,'eismint'):
+		test_ids=test_ids.intersection(set(range(1201,1300)))
+	elif strcmpi(benchmark,'thermal'):
+		test_ids=test_ids.intersection(set(range(1301,1400)))
+	elif strcmpi(benchmark,'mesh'):
+		test_ids=test_ids.intersection(set(range(1401,1500)))
+	elif strcmpi(benchmark,'tranforcing'):
+		test_ids=test_ids.intersection(set(range(1501,1503)))
+	elif strcmpi(benchmark,'referential'):
+		test_ids=test_ids.intersection(set(range(1601,1603)))
+	elif strcmpi(benchmark,'slr'):
+		test_ids=test_ids.intersection(set(range(2001,2500)))
+	elif strcmpi(benchmark,'adolc'):
+		test_ids=test_ids.intersection(set(range(3001,3200)))
+	#print 'test_ids after benchmark =',test_ids
+	test_ids=list(test_ids)
+	test_ids.sort()
+	#print 'test_ids after sort =',test_ids
+	# }}}
+
+	#Loop over tests and launch sequence
+	root=os.getcwd()
+	for id in test_ids:
+		print "----------------starting:%i-----------------------" % id
+		try:
+
+			#Execute test
+			os.chdir(root)
+			id_string=IdToName(id)
+			execfile('test'+str(id)+'.py',globals())
+
+			#UPDATE ARCHIVE?
+			archive_name='Archive'+str(id)
+			if strcmpi(procedure,'update'):
+				archive_file=os.path.join('..','Archives',archive_name+'.arch')
+				if os.path.isfile(archive_file):
+					os.remove(archive_file)
+				for k,fieldname in enumerate(field_names):
+					field=numpy.array(field_values[k],dtype=float)
+					if len(field.shape) == 1:
+						if numpy.size(field):
+							field=field.reshape(numpy.size(field),1)
+						else:
+							field=field.reshape(0,0)
+					elif len(field.shape) == 0:
+						field=field.reshape(1,1)
+					# Matlab uses base 1, so use base 1 in labels
+					archwrite(archive_file,archive_name+'_field'+str(k+1),field)
+				print "File '%s' saved.\n" % os.path.join('..','Archives',archive_name+'.arch')
+
+			#ELSE: CHECK TEST
+			else:
+
+				#load archive
+				if os.path.exists(os.path.join('..','Archives',archive_name+'.arch')):
+					archive_file=os.path.join('..','Archives',archive_name+'.arch')
+				else:
+					raise IOError("Archive file '"+os.path.join('..','Archives',archive_name+'.arch')+"' does not exist.")
+
+				for k,fieldname in enumerate(field_names):
+
+					try:
+						#Get field and tolerance
+						field=numpy.array(field_values[k])
+						if len(field.shape) == 1:
+							if numpy.size(field):
+								field=field.reshape(numpy.size(field),1)
+							else:
+								field=field.reshape(0,0)
+						tolerance=field_tolerances[k]
+
+						#compare to archive
+						# Matlab uses base 1, so use base 1 in labels
+						archive=numpy.array(archread(archive_file,archive_name+'_field'+str(k+1)))
+						if archive == None:
+							raise NameError("Field name '"+archive_name+'_field'+str(k+1)+"' does not exist in archive file.")
+						error_diff=numpy.amax(numpy.abs(archive-field),axis=0)/ \
+								   (numpy.amax(numpy.abs(archive),axis=0)+sys.float_info.epsilon)
+
+						#disp test result
+						if (numpy.any(error_diff>tolerance) or numpy.isnan(error_diff)):
+							print 'ERROR   difference: %-7.2g > %7.2g test id: %i test name: %s field: %s' % \
+								(error_diff,tolerance,id,id_string,fieldname)
+						else:
+							print 'SUCCESS difference: %-7.2g < %7.2g test id: %i test name: %s field: %s' % \
+								(error_diff,tolerance,id,id_string,fieldname)
+
+					except Exception as message:
+
+						#something went wrong, print failure message:
+						print traceback.format_exc()
+						directory=os.getcwd().split('/')    #  not used?
+						if   strcmpi(output,'nightly'):
+							fid=open(os.path.join(ISSM_DIR,'nightlylog','pythonerror.log'), 'a')
+							fid.write('%s' % message)
+							fid.write('\n------------------------------------------------------------------\n')
+							fid.close()
+							print 'FAILURE difference: N/A test id: %i test name: %s field: %s' % (id,id_string,fieldname)
+						else:
+							print 'FAILURE difference: N/A test id: %i test name: %s field: %s' % (id,id_string,fieldname)
+							raise RuntimeError(message)
+
+
+		except Exception as message:
+
+			#something went wrong, print failure message:
+			print traceback.format_exc()
+			directory=os.getcwd().split('/')    #  not used?
+			if   strcmpi(output,'nightly'):
+				fid=open(os.path.join(ISSM_DIR,'nightlylog','pythonerror.log'), 'a')
+				fid.write('%s' % message)
+				fid.write('\n------------------------------------------------------------------\n')
+				fid.close()
+				print 'FAILURE difference: N/A test id: %i test name: %s field: %s' % (id,id_string,'N/A')
+			else:
+				print 'FAILURE difference: N/A test id: %i test name: %s field: %s' % (id,id_string,'N/A')
+				raise RuntimeError(message)
+
+		print "----------------finished:%i-----------------------" % id
+	return
+
+import argparse
+if __name__ == '__main__':
+	if 'PYTHONSTARTUP' in os.environ:
+		PYTHONSTARTUP=os.environ['PYTHONSTARTUP']
+		#print 'PYTHONSTARTUP =',PYTHONSTARTUP
+		if os.path.exists(PYTHONSTARTUP):
+			try:
+				execfile(PYTHONSTARTUP)
+			except Exception as e:
+				print "PYTHONSTARTUP error: ",e
+		else:
+			print "PYTHONSTARTUP file '%s' does not exist." % PYTHONSTARTUP
+
+	parser = argparse.ArgumentParser(description='RUNME - test deck for ISSM nightly runs')
+	parser.add_argument('-i','--id', nargs='*', type=int, help='followed by the list of ids requested', default=[])
+	parser.add_argument('-e','--exclude', nargs='+', type=int, help='ids to be excluded from the test', default=[])
+	parser.add_argument('-b','--benchmark', help='nightly/ismip/eismint/thermal/mesh/...', default='nightly')
+	parser.add_argument('-p','--procedure', help='check/update', default='check')
+	parser.add_argument('-o','--output', help='nightly/daily/none', default='none')
+	parser.add_argument('-r','--rank', type=int, help='rank', default=1)
+	parser.add_argument('-n','--numprocs', type=int, help='numprocs', default=1)
+	args = parser.parse_args()
+
+	md = runme(args.id, args.exclude, args.benchmark, args.procedure, args.output, args.rank, args.numprocs)
+
+	from MatlabFuncs import strcmpi
+	if strcmpi(args.output,'nightly'):
+		print "PYTHONEXITEDCORRECTLY"
+
+	exit(md)
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test101.html
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test101.html	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test101.html	(revision 21239)
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+<head><title>ISSM Web APP &mdash; Beta</title>
+<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
+<!-- Includes {{{-->
+<script type="text/javascript" src="../../build-js/bin/issm-bin.js"> </script>
+<script type="text/javascript" src="../../build-js/bin/issm-prebin.js"> </script>
+<script type="text/javascript" src="../../build-js/bin/IssmModule.js"></script>
+<script type="text/javascript" src="../Exp/Square.js"></script>
+<script type="text/javascript" src="../Par/SquareShelfConstrained.js"></script>
+<script type="text/javascript" src="../Data/SquareShelfConstrained.data.js"></script>
+<!-- Includes }}}-->
+</head>
+<body> 
+
+<script type="text/javascript" async>
+
+	console.log('creating model'); 
+	var md = new model();
+
+	console.log('meshing');
+	triangle(md,square[0],50000); 
+	
+	console.log('parameterization');
+	setmask(md,'all','');
+	parameterize(md);
+	setflowequation(md,'SSA','all');
+	md.verbose.solution=1;  md.verbose.convergence=0;
+
+	console.log('solve');
+	md=solve(md,'Stressbalance','checkconsistency','no');
+	
+	console.log(md.results['StressbalanceSolution'][0]['Vel']);
+
+</script>
+</body> 
+</html>
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test101.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test101.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test101.js	(revision 21239)
@@ -0,0 +1,15 @@
+console.log('creating model'); 
+var md = new model();
+
+console.log('meshing');
+triangle(md,square[0],40000); 
+
+console.log('parameterization');
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+md.verbose.solution=1;  md.verbose.convergence=0;
+
+md=solve(md,'Stressbalance','checkconsistency','no');
+
+console.log(md.results['StressbalanceSolution'][0]['Vel']);
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test101.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test101.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test101.m	(revision 21239)
@@ -0,0 +1,41 @@
+%Test Name: SquareShelfConstrainedStressSSA2d
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',2);
+
+%output
+md.stressbalance.requested_outputs={'default','DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy','MassFlux1','MassFlux2','MassFlux3','MassFlux4','MassFlux5','MassFlux6'};
+md.outputdefinition.definitions={...
+	massfluxatgate('name','MassFlux1','profilename',['../Exp/MassFlux1.exp'],'definitionstring','Outputdefinition1'),...
+	massfluxatgate('name','MassFlux2','profilename',['../Exp/MassFlux2.exp'],'definitionstring','Outputdefinition2'),...
+	massfluxatgate('name','MassFlux3','profilename',['../Exp/MassFlux3.exp'],'definitionstring','Outputdefinition3'),...
+	massfluxatgate('name','MassFlux4','profilename',['../Exp/MassFlux4.exp'],'definitionstring','Outputdefinition4'),...
+	massfluxatgate('name','MassFlux5','profilename',['../Exp/MassFlux5.exp'],'definitionstring','Outputdefinition5'),...
+	massfluxatgate('name','MassFlux6','profilename',['../Exp/MassFlux6.exp'],'definitionstring','Outputdefinition6')...
+	};
+
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure',...
+	'DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy','MassFlux1','MassFlux2','MassFlux3','MassFlux4','MassFlux5','MassFlux6'};
+field_tolerances={2e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,...
+	1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13 };
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.DeviatoricStressxx),...
+	(md.results.StressbalanceSolution.DeviatoricStressyy),...
+	(md.results.StressbalanceSolution.DeviatoricStressxy),...
+	(md.results.StressbalanceSolution.MassFlux1),...
+	(md.results.StressbalanceSolution.MassFlux2),...
+	(md.results.StressbalanceSolution.MassFlux3),...
+	(md.results.StressbalanceSolution.MassFlux4),...
+	(md.results.StressbalanceSolution.MassFlux5),...
+	(md.results.StressbalanceSolution.MassFlux6)...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test101.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test101.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test101.py	(revision 21239)
@@ -0,0 +1,50 @@
+#Test Name: SquareShelfConstrainedStressSSA2d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+from massfluxatgate import massfluxatgate
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',50000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+#outputs
+md.stressbalance.requested_outputs=['default','DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy','MassFlux1','MassFlux2','MassFlux3','MassFlux4','MassFlux5','MassFlux6']
+md.outputdefinition.definitions=[
+		massfluxatgate('name','MassFlux1','profilename','../Exp/MassFlux1.exp','definitionstring','Outputdefinition1'),
+		massfluxatgate('name','MassFlux2','profilename','../Exp/MassFlux2.exp','definitionstring','Outputdefinition2'),
+		massfluxatgate('name','MassFlux3','profilename','../Exp/MassFlux3.exp','definitionstring','Outputdefinition3'),
+		massfluxatgate('name','MassFlux4','profilename','../Exp/MassFlux4.exp','definitionstring','Outputdefinition4'),
+		massfluxatgate('name','MassFlux5','profilename','../Exp/MassFlux5.exp','definitionstring','Outputdefinition5'),
+		massfluxatgate('name','MassFlux6','profilename','../Exp/MassFlux6.exp','definitionstring','Outputdefinition6')
+		]
+
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vel','Pressure',\
+	'DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy','MassFlux1','MassFlux2','MassFlux3','MassFlux4','MassFlux5','MassFlux6']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,\
+	1e-13,1e-13,1e-13,\
+	1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13 ]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	md.results.StressbalanceSolution.DeviatoricStressxx,\
+	md.results.StressbalanceSolution.DeviatoricStressyy,\
+	md.results.StressbalanceSolution.DeviatoricStressxy,\
+	md.results.StressbalanceSolution.MassFlux1,\
+	md.results.StressbalanceSolution.MassFlux2,\
+	md.results.StressbalanceSolution.MassFlux3,\
+	md.results.StressbalanceSolution.MassFlux4,\
+	md.results.StressbalanceSolution.MassFlux5,\
+	md.results.StressbalanceSolution.MassFlux6 ]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test102.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test102.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test102.js	(revision 21239)
@@ -0,0 +1,20 @@
+//Test Name: SquareShelfConstrainedStressSSA3d
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,2.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance', 'checkconsistency', 'no');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test102.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test102.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test102.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: SquareShelfConstrainedStressSSA3d
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test102.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test102.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test102.py	(revision 21239)
@@ -0,0 +1,28 @@
+#Test Name: SquareShelfConstrainedStressSSA3d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(3,2.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test103.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test103.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test103.js	(revision 21239)
@@ -0,0 +1,29 @@
+//Test Name: SquareShelfConstrainedStressHO
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,2.);
+setflowequation(md,'HO','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.stressbalance.requested_outputs=['default','StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz'];
+md=solve(md,'Stressbalance', 'checkconsistency', 'no');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure',
+	'StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz'];
+field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-09,
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-08];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	(md.results.StressbalanceSolution[0].StressTensorxx),
+	(md.results.StressbalanceSolution[0].StressTensoryy),
+	(md.results.StressbalanceSolution[0].StressTensorzz),
+	(md.results.StressbalanceSolution[0].StressTensorxy),
+	(md.results.StressbalanceSolution[0].StressTensorxz),
+	(md.results.StressbalanceSolution[0].StressTensoryz),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test103.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test103.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test103.m	(revision 21239)
@@ -0,0 +1,28 @@
+%Test Name: SquareShelfConstrainedStressHO
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.stressbalance.requested_outputs={'default','StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz'};
+md=solve(md,'sb');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure',...
+	'StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-09,...
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-08};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.StressTensorxx),...
+	(md.results.StressbalanceSolution.StressTensoryy),...
+	(md.results.StressbalanceSolution.StressTensorzz),...
+	(md.results.StressbalanceSolution.StressTensorxy),...
+	(md.results.StressbalanceSolution.StressTensorxz),...
+	(md.results.StressbalanceSolution.StressTensoryz),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test103.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test103.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test103.py	(revision 21239)
@@ -0,0 +1,36 @@
+#Test Name: SquareShelfConstrainedStressHO
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(3,2.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.stressbalance.requested_outputs=['default','StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz']
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure',\
+	'StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz']
+field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-09,\
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-08]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	md.results.StressbalanceSolution.StressTensorxx,\
+	md.results.StressbalanceSolution.StressTensoryy,\
+	md.results.StressbalanceSolution.StressTensorzz,\
+	md.results.StressbalanceSolution.StressTensorxy,\
+	md.results.StressbalanceSolution.StressTensorxz,\
+	md.results.StressbalanceSolution.StressTensoryz,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test104.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test104.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test104.js	(revision 21239)
@@ -0,0 +1,20 @@
+//Test Name: SquareShelfConstrainedStressFS
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,2.);
+setflowequation(md,'FS','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure'];
+field_tolerances=[1e-08,1e-08,1e-06,1e-08,1e-08];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test104.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test104.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test104.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: SquareShelfConstrainedStressFS
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'FS','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-08,1e-08,1e-06,1e-08,1e-08};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test104.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test104.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test104.py	(revision 21239)
@@ -0,0 +1,27 @@
+#Test Name: SquareShelfConstrainedStressFS
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(3,2.)
+md=setflowequation(md,'FS','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-08,1e-08,1e-06,1e-08,1e-08]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test105.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test105.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test105.js	(revision 21239)
@@ -0,0 +1,15 @@
+//Test Name: SquareShelfConstrainedMasstransp2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+//Fields and tolerances to track changes
+field_names     =['Thickness'];
+field_tolerances=[1e-13];
+field_values=[
+	(md.results.MasstransportSolution[0].Thickness),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test105.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test105.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test105.m	(revision 21239)
@@ -0,0 +1,14 @@
+%Test Name: SquareShelfConstrainedMasstransp2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test105.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test105.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test105.py	(revision 21239)
@@ -0,0 +1,22 @@
+#Test Name: SquareShelfConstrainedMasstransp2d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Masstransport')
+
+#Fields and tolerances to track changes
+field_names     =['Thickness']
+field_tolerances=[1e-13]
+field_values=[\
+	md.results.MasstransportSolution.Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test106.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test106.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test106.js	(revision 21239)
@@ -0,0 +1,18 @@
+//Test Name: SquareShelfConstrainedMasstransp2dDG
+var md = new model();
+triangle(md,square[0],150000.);
+meshconvert(md);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.stabilization=3;
+md.masstransport.spcthickness=md.geometry.thickness;
+md=solve(md,'Masstransport');
+
+//Fields and tolerances to track changes
+field_names     =['Thickness'];
+field_tolerances=[1e-13];
+field_values=[
+	(md.results.MasstransportSolution[0].Thickness),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test106.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test106.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test106.m	(revision 21239)
@@ -0,0 +1,17 @@
+%Test Name: SquareShelfConstrainedMasstransp2dDG
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=meshconvert(md);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.stabilization=3;
+md.masstransport.spcthickness=md.geometry.thickness;
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test106.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test106.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test106.py	(revision 21239)
@@ -0,0 +1,26 @@
+#Test Name: SquareShelfConstrainedMasstransp2dDG
+from model import *
+from triangle import *
+from meshconvert import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000)
+md=meshconvert(md)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.masstransport.stabilization=3
+md.masstransport.spcthickness=md.geometry.thickness
+md=solve(md,'Masstransport')
+
+#Fields and tolerances to track changes
+field_names     =['Thickness']
+field_tolerances=[1e-13]
+field_values=[\
+	md.results.MasstransportSolution.Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test107.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test107.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test107.js	(revision 21239)
@@ -0,0 +1,16 @@
+//Test Name: SquareShelfConstrainedMasstransp3d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+md.extrude(md,5,3.);
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+//Fields and tolerances to track changes
+field_names     =['Thickness'];
+field_tolerances=[1e-13];
+field_values=[
+	(md.results.MasstransportSolution[0].Thickness),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test107.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test107.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test107.m	(revision 21239)
@@ -0,0 +1,15 @@
+%Test Name: SquareShelfConstrainedMasstransp3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md=extrude(md,5,3.);
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test107.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test107.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test107.py	(revision 21239)
@@ -0,0 +1,23 @@
+#Test Name: SquareShelfConstrainedMasstransp3d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.extrude(5,3.)
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Masstransport')
+
+#Fields and tolerances to track changes
+field_names     =['Thickness']
+field_tolerances=[1e-13]
+field_values=[\
+	md.results.MasstransportSolution.Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test108.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test108.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test108.js	(revision 21239)
@@ -0,0 +1,18 @@
+//Test Name: SquareShelfConstrainedTherStea
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+md.timestepping.time_step=0;
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Thermal');
+
+//Fields and tolerances to track changes
+field_names     =['Temperature','BasalforcingsGroundediceMeltingRate'];
+field_tolerances=[1e-13,1e-5];
+field_values=[
+	(md.results.ThermalSolution[0].Temperature),
+	(md.results.ThermalSolution[0].BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test108.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test108.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test108.m	(revision 21239)
@@ -0,0 +1,17 @@
+%Test Name: SquareShelfConstrainedTherStea
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=0;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-5};
+field_values={...
+	(md.results.ThermalSolution.Temperature),...
+	(md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test108.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test108.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test108.py	(revision 21239)
@@ -0,0 +1,25 @@
+#Test Name: SquareShelfConstrainedTherStea
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.timestepping.time_step=0
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Thermal')
+
+#Fields and tolerances to track changes
+field_names     =['Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-13,1e-5]
+field_values=[\
+	md.results.ThermalSolution.Temperature,\
+	md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test109.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test109.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test109.js	(revision 21239)
@@ -0,0 +1,22 @@
+//Test Name: SquareShelfConstrainedTherTran
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Temperature','BasalforcingsGroundediceMeltingRate'];
+field_tolerances=[1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test109.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test109.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test109.m	(revision 21239)
@@ -0,0 +1,21 @@
+%Test Name: SquareShelfConstrainedTherTran
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test109.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test109.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test109.py	(revision 21239)
@@ -0,0 +1,29 @@
+#Test Name: SquareShelfConstrainedTherTran
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.transient.isstressbalance=False
+md.transient.ismasstransport=False
+md.transient.issmb=True
+md.transient.isthermal=True
+md.transient.isgroundingline=False
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test110.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test110.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test110.js	(revision 21239)
@@ -0,0 +1,42 @@
+//Test Name: SquareShelfConstrainedTranSSA2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.trans.requested_outputs=['IceVolume'];
+
+md=solve(md,'transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Volume3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).IceVolume),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).IceVolume),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).IceVolume),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test110.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test110.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test110.m	(revision 21239)
@@ -0,0 +1,41 @@
+%Test Name: SquareShelfConstrainedTranSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'IceVolume'};
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Volume3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).IceVolume),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test110.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test110.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test110.py	(revision 21239)
@@ -0,0 +1,49 @@
+#Test Name: SquareShelfConstrainedTranSSA2d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.transient.requested_outputs=['IceVolume']
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Volume3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].IceVolume,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].IceVolume,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].IceVolume,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1101.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1101.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1101.m	(revision 21239)
@@ -0,0 +1,129 @@
+%Test Name: ISMIPAHO
+%This test is a test from the ISMP-HOM Intercomparison project.
+%Pattyn and Payne 2006
+printingflag=false;
+
+%L_list={5000.,10000.,20000.,40000.,80000.,160000.};
+L_list={80000.};
+results={};
+minvx=[];
+maxvx=[];
+
+for i=1:length(L_list),
+	L=L_list{i};
+	nx=20; %numberof nodes in x direction
+	ny=20;
+	md=model();
+	md=squaremesh(md,L,L,nx,ny);
+	md=setmask(md,'',''); %ice sheet test
+	md=parameterize(md,'../Par/ISMIPA.par');
+	md=extrude(md,9,1.);
+
+	md=setflowequation(md,'HO','all');
+
+	%Create dirichlet on the bed only
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+
+	pos=find(md.mesh.vertexonbase);
+	md.stressbalance.spcvx(pos)=0.;
+	md.stressbalance.spcvy(pos)=0.;
+
+	%Create MPCs to have periodic boundary conditions
+	posx=find(md.mesh.x==0.);
+	posx2=find(md.mesh.x==max(md.mesh.x));
+
+	posy=find(md.mesh.y==0. & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x)); %Don't take the same nodes two times
+	posy2=find(md.mesh.y==max(md.mesh.y) & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x));
+
+	md.stressbalance.vertex_pairing=[posx,posx2;posy,posy2];
+
+	%Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8);
+	md=solve(md,'Stressbalance');
+
+	%Plot the results and save them
+	vx=(md.results.StressbalanceSolution.Vx);
+	vy=(md.results.StressbalanceSolution.Vy);
+	vz=(md.results.StressbalanceSolution.Vz);
+	results{i}=md.results.StressbalanceSolution;
+	minvx(i)=min(vx(end-md.mesh.numberofvertices2d+1:end));
+	maxvx(i)=max(vx(end-md.mesh.numberofvertices2d+1:end));
+
+	%Now plot vx, vy, vz and vx on a cross section
+	plotmodel(md,'data',vx,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km')
+	if printingflag, 
+		set(gcf,'Color','w')
+		printmodel(['ismipaHOvx' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipaHOvx' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+	end
+	plotmodel(md,'data',vy,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km')
+	if printingflag, 
+		set(gcf,'Color','w')
+		printmodel(['ismipaHOvy' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipaHOvy' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+	end
+	plotmodel(md,'data',vz,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km')
+	if printingflag, 
+		set(gcf,'Color','w')
+		printmodel(['ismipaHOvz' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipaHOvz' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+	end
+
+	if(L==5000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP5000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[10 18],'xlim',[0 5000],'title','','xlabel','')
+	elseif(L==10000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP10000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[10 30],'xlim',[0 10000],'title','','xlabel','')
+	elseif(L==20000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP20000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 50],'xlim',[0 20000],'title','','xlabel','')
+	elseif(L==40000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP40000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 80],'xlim',[0 40000],'title','','xlabel','')
+	elseif(L==80000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP80000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 100],'xlim',[0 80000],'title','','xlabel','')
+	elseif(L==160000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP160000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 120],'xlim',[0 160000],'title','','xlabel','')
+	end
+	if printingflag, 
+		set(gcf,'Color','w')
+		printmodel(['ismipaHOvxsec' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipaHOvxsec' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+	end
+end
+
+%Now plot the min and max values of vx for each size of the square
+plot([5 10 20 40 80 160],minvx);ylim([0 18]);xlim([0 160])
+if printingflag, 
+	set(gcf,'Color','w')
+	printmodel('ismipaHOminvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipaHOminvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+end
+plot([5 10 20 40 80 160],maxvx);ylim([0 120]);xlim([0 160])
+if printingflag, 
+	set(gcf,'Color','w')
+	printmodel('ismipaHOmaxvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipaHOmaxvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx80km','Vy80km','Vz80km'
+};
+field_tolerances={...
+	1e-08,1e-08,1e-08,...
+};
+field_values={};
+for i=1:1,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		};
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1101.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1101.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1101.py	(revision 21239)
@@ -0,0 +1,153 @@
+#Test Name: ISMIPAHO
+import numpy
+import shutil
+from model import *
+from squaremesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+from PythonFuncs import *
+
+"""
+This test is a test from the ISMP-HOM Intercomparison project.
+Pattyn and Payne 2006
+"""
+
+printingflag=False
+
+L_list=[5000.,10000.,20000.,40000.,80000.,160000.]
+results=[]
+minvx=[]
+maxvx=[]
+
+for L in L_list:
+	nx=20    #numberof nodes in x direction
+	ny=20
+	md=model()
+	md=squaremesh(md,L,L,nx,ny)
+	md=setmask(md,'','')    #ice sheet test
+	md=parameterize(md,'../Par/ISMIPA.py')
+	md.extrude(9,1.)
+
+	md=setflowequation(md,'HO','all')
+
+	#Create dirichlet on the bed only
+	md.stressbalance.spcvx=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+	md.stressbalance.spcvy=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+	md.stressbalance.spcvz=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+
+	pos=numpy.nonzero(md.mesh.vertexonbase)
+	md.stressbalance.spcvx[pos]=0.
+	md.stressbalance.spcvy[pos]=0.
+
+	#Create MPCs to have periodic boundary conditions
+	posx=numpy.nonzero(md.mesh.x==0.)[0]
+	posx2=numpy.nonzero(md.mesh.x==numpy.max(md.mesh.x))[0]
+
+	posy=numpy.nonzero(logical_and_n(md.mesh.y==0.,md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]    #Don't take the same nodes two times
+	posy2=numpy.nonzero(logical_and_n(md.mesh.y==numpy.max(md.mesh.y),md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]
+
+	md.stressbalance.vertex_pairing=numpy.vstack((numpy.hstack((posx.reshape(-1,1)+1,posx2.reshape(-1,1)+1)),numpy.hstack((posy.reshape(-1,1)+1,posy2.reshape(-1,1)+1))))
+
+	#Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8)
+	md=solve(md,'Stressbalance')
+
+	#Plot the results and save them
+	vx=md.results.StressbalanceSolution.Vx
+	vy=md.results.StressbalanceSolution.Vy
+	vz=md.results.StressbalanceSolution.Vz
+	results.append(md.results.StressbalanceSolution)
+	minvx.append(numpy.min(vx[-md.mesh.numberofvertices2d:]))
+	maxvx.append(numpy.max(vx[-md.mesh.numberofvertices2d:]))
+
+	#Now plot vx, vy, vz and vx on a cross section
+#	plotmodel(md,'data',vx,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km')
+	if printingflag:
+		pass
+#		set(gcf,'Color','w')
+#		printmodel(['ismipaHOvx' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#		shutil.move("ismipaHOvx%d.png" % L,ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestA')
+#	plotmodel(md,'data',vy,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km')
+	if printingflag:
+		pass
+#		set(gcf,'Color','w')
+#		printmodel(['ismipaHOvy' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#		shutil.move("ismipaHOvy%d.png" % L,ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestA')
+#	plotmodel(md,'data',vz,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km')
+	if printingflag:
+		pass
+#		set(gcf,'Color','w')
+#		printmodel(['ismipaHOvz' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#		shutil.move("ismipaHOvz%d.png" % L,ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestA')
+
+	if   (L==5000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP5000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[10 18],'xlim',[0 5000],'title','','xlabel','')
+	elif (L==10000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP10000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[10 30],'xlim',[0 10000],'title','','xlabel','')
+	elif (L==20000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP20000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 50],'xlim',[0 20000],'title','','xlabel','')
+	elif (L==40000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP40000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 80],'xlim',[0 40000],'title','','xlabel','')
+	elif (L==80000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP80000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 100],'xlim',[0 80000],'title','','xlabel','')
+	elif (L==160000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP160000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 120],'xlim',[0 160000],'title','','xlabel','')
+	if printingflag:
+		pass
+#		set(gcf,'Color','w')
+#		printmodel(['ismipaHOvxsec' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#		shutil.move("ismipaHOvxsec%d.png" % L,ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestA')
+
+#Now plot the min and max values of vx for each size of the square
+#plot([5 10 20 40 80 160],minvx);ylim([0 18]);xlim([0 160])
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('ismipaHOminvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#	shutil.move('ismipaHOminvx.png',ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestA')
+#plot([5 10 20 40 80 160],maxvx);ylim([0 120]);xlim([0 160])
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('ismipaHOmaxvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#	shutil.move('ismipaHOmaxvx.png',ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestA')
+
+#Fields and tolerances to track changes
+field_names     =[\
+	'Vx5km','Vy5km','Vz5km',\
+	'Vx10km','Vy10km','Vz10km',\
+	'Vx20km','Vy20km','Vz20km',\
+	'Vx40km','Vy40km','Vz40km',\
+	'Vx80km','Vy80km','Vz80km',\
+	'Vx160km','Vy160km','Vz160km'
+]
+field_tolerances=[\
+	1e-09,1e-09,1e-09,\
+	1e-10,1e-10,1e-09,\
+	1e-09,1e-09,1e-09,\
+	1e-09,1e-08,1e-09,\
+	1e-08,1e-08,1e-08,\
+	1e-08,1e-07,1e-08,\
+]
+field_values=[]
+for result in results:
+	field_values=field_values+[\
+		result.Vx,\
+		result.Vy,\
+		result.Vz,\
+		]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1102.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1102.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1102.m	(revision 21239)
@@ -0,0 +1,139 @@
+%Test Name: ISMIPAFS
+%This test is a test from the ISMP-HOM Intercomparison project.
+%Pattyn and Payne 2006
+printingflag=false;
+
+%L_list={5000.,10000.,20000.,40000.,80000.,160000.};
+L_list={80000.};
+results={};
+minvx=[];
+maxvx=[];
+
+for i=1:length(L_list),
+	L=L_list{i};
+	nx=20; %numberof nodes in x direction
+	ny=20;
+	md=model();
+	md=squaremesh(md,L,L,nx,ny);
+	md=setmask(md,'',''); %ice sheet test
+
+%	%Find elements at the corner and extract model
+%	posnodes=find((md.mesh.x==0. | md.mesh.x==max(md.mesh.x)) & (md.mesh.y==0. | md.mesh.y==max(md.mesh.y)));
+%	[a,b]=find(ismember(md.mesh.elements,posnodes));
+%	elements=ones(md.mesh.numberofelements,1);
+%	elements(a)=0;
+%	md=modelextract(md,elements);
+
+	md=parameterize(md,'../Par/ISMIPA.par');
+	md=extrude(md,10,1.);
+	md=setflowequation(md,'FS','all');
+
+	%Create dirichlet on the bed only
+	pos=find(md.mesh.vertexonbase);
+	md.stressbalance.spcvx(pos)=0.;
+	md.stressbalance.spcvy(pos)=0.;
+	md.stressbalance.spcvz(pos)=0.;
+
+%	%Create MPCs to have periodic boundary conditions
+%	posx=find(md.mesh.x==0.);
+%	posx2=find(md.mesh.x==max(md.mesh.x));
+%	posx=find(md.mesh.x==0. & md.mesh.y~=0. & md.mesh.y~=max(md.mesh.y) & ~md.mesh.vertexonbase);
+%	posx2=find(md.mesh.x==max(md.mesh.x) &  md.mesh.y~=0. & md.mesh.y~=max(md.mesh.y) & ~md.mesh.vertexonbase);
+
+%	posy=find(md.mesh.y==0. & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x) & ~md.mesh.vertexonbase); %Don't take the same nodes two times
+%	posy2=find(md.mesh.y==max(md.mesh.y) & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x) & ~md.mesh.vertexonbase);
+
+%	md.stressbalance.vertex_pairing=[posx,posx2;posy,posy2];
+
+	%Compute the stressbalance
+	md.stressbalance.abstol=NaN;
+	md.stressbalance.reltol=NaN;
+	md.stressbalance.restol=1.;
+	md.cluster=generic('name',oshostname(),'np',8);
+	md=solve(md,'Stressbalance');
+
+	%Plot the results and save them
+	vx=(md.results.StressbalanceSolution.Vx);
+	vy=(md.results.StressbalanceSolution.Vy);
+	vz=(md.results.StressbalanceSolution.Vz);
+	pressure=(md.results.StressbalanceSolution.Pressure);
+	results{i}=md.results.StressbalanceSolution;
+	minvx(i)=min(vx(end-md.mesh.numberofvertices2d+1:end));
+	maxvx(i)=max(vx(end-md.mesh.numberofvertices2d+1:end));
+
+	%Now plot vx, vy, vz and vx on a cross section
+	plotmodel(md,'data',vx,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',2)
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipaFSvx' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipaFSvx' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+	end
+	plotmodel(md,'data',vy,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',3)
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipaFSvy' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipaFSvy' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+	end
+	plotmodel(md,'data',vz,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',4)
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipaFSvz' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipaFSvz' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+	end
+
+	if(L==5000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP5000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[10 18],'xlim',[0 5000],'title','','xlabel','')
+	elseif(L==10000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP10000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[10 30],'xlim',[0 10000],'title','','xlabel','')
+	elseif(L==20000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP20000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 50],'xlim',[0 20000],'title','','xlabel','')
+	elseif(L==40000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP40000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 80],'xlim',[0 40000],'title','','xlabel','')
+	elseif(L==80000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP80000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 100],'xlim',[0 80000],'title','','xlabel','')
+	elseif(L==160000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP160000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 120],'xlim',[0 160000],'title','','xlabel','')
+	end
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipaFSvxsec' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipaFSvxsec' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+	end
+end
+
+%Now plot the min and max values of vx for each size of the square
+plot([5 10 20 40 80 160],minvx);ylim([0 18])
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('ismipaFSminvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipaFSminvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+end
+plot([5 10 20 40 80 160],maxvx);ylim([0 120])
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('ismipaFSmaxvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipaFSmaxvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx80km','Vy80km','Vz80km'
+};
+field_tolerances={...
+	1e-12,1e-11,1e-12,...
+};
+field_values={};
+for i=1:1,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		};
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1102.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1102.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1102.py	(revision 21239)
@@ -0,0 +1,163 @@
+#Test Name: ISMIPAFS
+import numpy
+import shutil
+from model import *
+from squaremesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+from PythonFuncs import *
+
+"""
+This test is a test from the ISMP-HOM Intercomparison project.
+Pattyn and Payne 2006
+"""
+
+printingflag=False
+
+L_list=[5000.,10000.,20000.,40000.,80000.,160000.]
+results=[]
+minvx=[]
+maxvx=[]
+
+for L in L_list:
+	nx=20    #numberof nodes in x direction
+	ny=20
+	md=model()
+	md=squaremesh(md,L,L,nx,ny)
+	md=setmask(md,'','')    #ice sheet test
+
+#	#Find elements at the corner and extract model
+#	posnodes=numpy.nonzero(numpy.logical_and(numpy.logical_or(md.mesh.x==0.,md.mesh.x==numpy.max(md.mesh.x)),numpy.logical_or(md.mesh.y==0.,md.mesh.y==numpy.max(md.mesh.y))))
+#	a=numpy.nonzero(ismember(md.mesh.elements,posnodes))[0]
+#	elements=numpy.ones((md.mesh.numberofelements),int)
+#	elements[a]=0
+#	md.modelextract(elements)
+
+	md=parameterize(md,'../Par/ISMIPA.py')
+	md.extrude(10,1.)
+	md=setflowequation(md,'FS','all')
+
+	#Create dirichlet on the bed only
+	pos=numpy.nonzero(md.mesh.vertexonbase)
+	md.stressbalance.spcvx[pos]=0.
+	md.stressbalance.spcvy[pos]=0.
+	md.stressbalance.spcvz[pos]=0.
+
+#	#Create MPCs to have periodic boundary conditions
+#	posx=numpy.nonzero(md.mesh.x==0.)[0]
+#	posx2=numpy.nonzero(md.mesh.x==numpy.max(md.mesh.x))[0]
+#	posx=numpy.nonzero(logical_and_n(md.mesh.x==0.,md.mesh.y!=0.,md.mesh.y!=numpy.max(md.mesh.y),numpy.logical_not(md.mesh.vertexonbase)))[0]
+#	posx2=numpy.nonzero(logical_and_n(md.mesh.x==numpy.max(md.mesh.x),md.mesh.y!=0.,md.mesh.y!=numpy.max(md.mesh.y),numpy.logical_not(md.mesh.vertexonbase)))[0]
+
+#	posy=numpy.nonzero(logical_and_n(md.mesh.y==0.,md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x),numpy.logical_not(md.mesh.vertexonbase)))[0]    #Don't take the same nodes two times
+#	posy2=numpy.nonzero(logical_and_n(md.mesh.y==numpy.max(md.mesh.y),md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x),numpy.logical_not(md.mesh.vertexonbase)))[0]
+
+#	md.stressbalance.vertex_pairing=numpy.vstack((numpy.hstack((posx.reshape(-1,1)+1,posx2.reshape(-1,1)+1)),numpy.hstack((posy.reshape(-1,1)+1,posy2.reshape(-1,1)+1))))
+
+	#Compute the stressbalance
+	md.stressbalance.abstol=float('NaN')
+	md.stressbalance.reltol=float('NaN')
+	md.stressbalance.restol=1.
+	md.cluster=generic('name',oshostname(),'np',8)
+	md=solve(md,'Stressbalance')
+
+	#Plot the results and save them
+	vx=md.results.StressbalanceSolution.Vx
+	vy=md.results.StressbalanceSolution.Vy
+	vz=md.results.StressbalanceSolution.Vz
+	pressure=md.results.StressbalanceSolution.Pressure
+	results.append(md.results.StressbalanceSolution)
+	minvx.append(numpy.min(vx[-md.mesh.numberofvertices2d:]))
+	maxvx.append(numpy.max(vx[-md.mesh.numberofvertices2d:]))
+
+	#Now plot vx, vy, vz and vx on a cross section
+#	plotmodel(md,'data',vx,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',2)
+	if printingflag:
+		pass
+#		set(gcf,'Color','w')
+#		printmodel(['ismipaFSvx' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#		shutil.move("ismipaFSvx%d.png" % L,ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestA')
+#	plotmodel(md,'data',vy,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',3)
+	if printingflag:
+		pass
+#		set(gcf,'Color','w')
+#		printmodel(['ismipaFSvy' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#		shutil.move("ismipaFSvy%d.png" % L,ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestA')
+#	plotmodel(md,'data',vz,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',4)
+	if printingflag:
+		pass
+#		set(gcf,'Color','w')
+#		printmodel(['ismipaFSvz' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#		shutil.move("ismipaFSvz%d.png" % L,ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestA')
+
+	if   (L==5000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP5000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[10 18],'xlim',[0 5000],'title','','xlabel','')
+	elif (L==10000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP10000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[10 30],'xlim',[0 10000],'title','','xlabel','')
+	elif (L==20000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP20000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 50],'xlim',[0 20000],'title','','xlabel','')
+	elif (L==40000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP40000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 80],'xlim',[0 40000],'title','','xlabel','')
+	elif (L==80000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP80000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 100],'xlim',[0 80000],'title','','xlabel','')
+	elif (L==160000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP160000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 120],'xlim',[0 160000],'title','','xlabel','')
+	if printingflag:
+		pass
+#		set(gcf,'Color','w')
+#		printmodel(['ismipaFSvxsec' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#		shutil.move("ismipaFSvxsec.png" % L,ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestA')
+
+#Now plot the min and max values of vx for each size of the square
+#plot([5 10 20 40 80 160],minvx);ylim([0 18])
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('ismipaFSminvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#	shutil.move('ismipaFSminvx.png',ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestA')
+#plot([5 10 20 40 80 160],maxvx);ylim([0 120])
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('ismipaFSmaxvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#	shutil.move('ismipaFSmaxvx.png',ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestA')
+
+#Fields and tolerances to track changes
+field_names     =[\
+	'Vx5km','Vy5km','Vz5km',\
+	'Vx10km','Vy10km','Vz10km',\
+	'Vx20km','Vy20km','Vz20km',\
+	'Vx40km','Vy40km','Vz40km',\
+	'Vx80km','Vy80km','Vz80km',\
+	'Vx160km','Vy160km','Vz160km'
+]
+field_tolerances=[\
+	1e-12,1e-12,1e-12,\
+	1e-12,1e-12,1e-12,\
+	1e-12,1e-11,1e-12,\
+	1e-12,1e-11,1e-12,\
+	1e-12,1e-11,1e-12,\
+	1e-12,1e-11,1e-12,\
+]
+field_values=[]
+for result in results:
+	field_values=field_values+[\
+		result.Vx,\
+		result.Vy,\
+		result.Vz,\
+		]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1103.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1103.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1103.m	(revision 21239)
@@ -0,0 +1,122 @@
+%Test Name: ISMIPBHO
+%This test is a test from the ISMP-HOM Intercomparison project.
+%Pattyn and Payne 2006
+printingflag=false;
+
+%L_list={5000.,10000.,20000.,40000.,80000.,160000.};
+L_list={80000.};
+results={};
+minvx=[];
+maxvx=[];
+
+for i=1:length(L_list),
+	L=L_list{i};
+	nx=20; %numberof nodes in x direction
+	ny=20;
+	md=model();
+	md=squaremesh(md,L,L,nx,ny);
+	md=setmask(md,'',''); %ice sheet test
+	md=parameterize(md,'../Par/ISMIPB.par');
+	md=extrude(md,10,1.);
+
+	md=setflowequation(md,'HO','all');
+
+	%Create dirichlet on the bed only
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+	pos=find(md.mesh.vertexonbase);
+	md.stressbalance.spcvx(pos)=0.;
+	md.stressbalance.spcvy(pos)=0.;
+
+	%Create MPCs to have periodic boundary conditions
+	posx=find(md.mesh.x==0.);
+	posx2=find(md.mesh.x==max(md.mesh.x));
+
+	posy=find(md.mesh.y==0. & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x)); %Don't take the same nodes two times
+	posy2=find(md.mesh.y==max(md.mesh.y) & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x));
+
+	md.stressbalance.vertex_pairing=[posx,posx2;posy,posy2];
+
+	%Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8);
+	md=solve(md,'Stressbalance');
+
+	%Plot the results and save them
+	vx=(md.results.StressbalanceSolution.Vx);
+	vy=(md.results.StressbalanceSolution.Vy);
+	vz=(md.results.StressbalanceSolution.Vz);
+	results{i}=md.results.StressbalanceSolution;
+	minvx(i)=min(vx(end-md.mesh.numberofvertices2d+1:end));
+	maxvx(i)=max(vx(end-md.mesh.numberofvertices2d+1:end));
+
+	%Now plot vx, vy, vz and vx on a cross section
+	plotmodel(md,'data',vx,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km')
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipbHOvx' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipbHOvx' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestB']);
+	end
+	plotmodel(md,'data',vz,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km')
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipbHOvz' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipbHOvz' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestB']);
+	end
+
+	if(L==5000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP5000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[6 16],'xlim',[0 5000],'title','','xlabel','')
+	elseif(L==10000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP10000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 40],'xlim',[0 10000],'title','','xlabel','')
+	elseif(L==20000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP20000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 60],'xlim',[0 20000],'title','','xlabel','')
+	elseif(L==40000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP40000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 100],'xlim',[0 40000],'title','','xlabel','')
+	elseif(L==80000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP80000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 120],'xlim',[0 80000],'title','','xlabel','')
+	elseif(L==160000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP160000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 120],'xlim',[0 160000],'title','','xlabel','')
+	end
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipbHOvxsec' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipbHOvxsec' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestB']);
+	end
+end
+
+%Now plot the min and max values of vx for each size of the square
+plot([5 10 20 40 80 160],minvx);ylim([0 14]);xlim([0 160])
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('ismipbHOminvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipbHOminvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestB']);
+end
+plot([5 10 20 40 80 160],maxvx);ylim([0 120]);xlim([0 160])
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('ismipbHOmaxvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipbHOmaxvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestB']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx80km','Vy80km','Vz80km'
+};
+field_tolerances={...
+	1e-08,1e-07,1e-07,...
+};
+field_values={};
+for i=1:1,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		};
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1103.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1103.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1103.py	(revision 21239)
@@ -0,0 +1,146 @@
+#Test Name: ISMIPBHO
+import numpy
+import shutil
+from model import *
+from squaremesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+from PythonFuncs import *
+
+"""
+This test is a test from the ISMP-HOM Intercomparison project.
+Pattyn and Payne 2006
+"""
+
+printingflag=False
+
+L_list=[5000.,10000.,20000.,40000.,80000.,160000.]
+results=[]
+minvx=[]
+maxvx=[]
+
+for L in L_list:
+	nx=20    #numberof nodes in x direction
+	ny=20
+	md=model()
+	md=squaremesh(md,L,L,nx,ny)
+	md=setmask(md,'','')    #ice sheet test
+	md=parameterize(md,'../Par/ISMIPB.py')
+	md.extrude(10,1.)
+
+	md=setflowequation(md,'HO','all')
+
+	#Create dirichlet on the bed only
+	md.stressbalance.spcvx=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+	md.stressbalance.spcvy=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+	md.stressbalance.spcvz=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+	pos=numpy.nonzero(md.mesh.vertexonbase)
+	md.stressbalance.spcvx[pos]=0.
+	md.stressbalance.spcvy[pos]=0.
+
+	#Create MPCs to have periodic boundary conditions
+	posx=numpy.nonzero(md.mesh.x==0.)[0]
+	posx2=numpy.nonzero(md.mesh.x==numpy.max(md.mesh.x))[0]
+
+	posy=numpy.nonzero(logical_and_n(md.mesh.y==0.,md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]    #Don't take the same nodes two times
+	posy2=numpy.nonzero(logical_and_n(md.mesh.y==numpy.max(md.mesh.y),md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]
+
+	md.stressbalance.vertex_pairing=numpy.vstack((numpy.hstack((posx.reshape(-1,1)+1,posx2.reshape(-1,1)+1)),numpy.hstack((posy.reshape(-1,1)+1,posy2.reshape(-1,1)+1))))
+
+	#Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8)
+	md=solve(md,'Stressbalance')
+
+	#Plot the results and save them
+	vx=md.results.StressbalanceSolution.Vx
+	vy=md.results.StressbalanceSolution.Vy
+	vz=md.results.StressbalanceSolution.Vz
+	results.append(md.results.StressbalanceSolution)
+	minvx.append(numpy.min(vx[md.mesh.numberofvertices2d:]))
+	maxvx.append(numpy.max(vx[md.mesh.numberofvertices2d:]))
+
+	#Now plot vx, vy, vz and vx on a cross section
+#	plotmodel(md,'data',vx,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km')
+	if printingflag:
+		pass
+#		set(gcf,'Color','w')
+#		printmodel(['ismipbHOvx' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#		shutil.move("ismipbHOvx%d.png" % L,ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestB')
+#	plotmodel(md,'data',vz,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km')
+	if printingflag:
+		pass
+#		set(gcf,'Color','w')
+#		printmodel(['ismipbHOvz' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#		shutil.move("ismipbHOvz%d.png" % L,ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestB')
+
+	if   (L==5000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP5000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[6 16],'xlim',[0 5000],'title','','xlabel','')
+	elif (L==10000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP10000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 40],'xlim',[0 10000],'title','','xlabel','')
+	elif (L==20000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP20000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 60],'xlim',[0 20000],'title','','xlabel','')
+	elif (L==40000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP40000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 100],'xlim',[0 40000],'title','','xlabel','')
+	elif (L==80000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP80000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 120],'xlim',[0 80000],'title','','xlabel','')
+	elif (L==160000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP160000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 120],'xlim',[0 160000],'title','','xlabel','')
+	if printingflag:
+		pass
+#		set(gcf,'Color','w')
+#		printmodel(['ismipbHOvxsec' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#		shutil.move("ismipbHOvxsec%d.png" % L,ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestB')
+
+#Now plot the min and max values of vx for each size of the square
+#plot([5 10 20 40 80 160],minvx);ylim([0 14]);xlim([0 160])
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('ismipbHOminvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#	shutil.move('ismipbHOminvx.png',ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestB')
+#plot([5 10 20 40 80 160],maxvx);ylim([0 120]);xlim([0 160])
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('ismipbHOmaxvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#	shutil.move('ismipbHOmaxvx.png',ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestB')
+
+#Fields and tolerances to track changes
+field_names     =[\
+	'Vx5km','Vy5km','Vz5km',\
+	'Vx10km','Vy10km','Vz10km',\
+	'Vx20km','Vy20km','Vz20km',\
+	'Vx40km','Vy40km','Vz40km',\
+	'Vx80km','Vy80km','Vz80km',\
+	'Vx160km','Vy160km','Vz160km'
+]
+field_tolerances=[\
+	1e-09,1e-09,1e-09,\
+	1e-09,1e-09,1e-09,\
+	1e-09,1e-09,1e-09,\
+	1e-08,1e-08,1e-08,\
+	1e-08,1e-07,1e-07,\
+	1e-07,1e-06,1e-07,\
+]
+field_values=[]
+for result in results:
+	field_values=field_values+[\
+		result.Vx,\
+		result.Vy,\
+		result.Vz,\
+		]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1104.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1104.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1104.m	(revision 21239)
@@ -0,0 +1,73 @@
+%Test Name: ISMIPBFS
+%This test is a test from the ISMP-HOM Intercomparison project.
+%Pattyn and Payne 2006
+
+%L_list={5000.,10000.,20000.,40000.,80000.,160000.};
+L_list={80000.};
+results={};
+
+for i=1:length(L_list),
+	L=L_list{i};
+	nx=20; %numberof nodes in x direction
+	ny=20;
+	md=model();
+	md=squaremesh(md,L,L,nx,ny);
+	md=setmask(md,'',''); %ice sheet test
+	md=parameterize(md,'../Par/ISMIPB.par');
+	md=extrude(md,10,1.);
+	md=setflowequation(md,'HO','all');
+
+	%Create dirichlet on the bed only
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+
+	pos=find(md.mesh.vertexonbase);
+	md.stressbalance.spcvx(pos)=0.;
+	md.stressbalance.spcvy(pos)=0.;
+
+	%Create MPCs to have periodic boundary conditions
+	posx=find(md.mesh.x==0.);
+	posx2=find(md.mesh.x==max(md.mesh.x));
+
+	posy=find(md.mesh.y==0. & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x)); %Don't take the same nodes two times
+	posy2=find(md.mesh.y==max(md.mesh.y) & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x));
+
+	md.stressbalance.vertex_pairing=[posx,posx2;posy,posy2];
+
+	%Compute the stressbalance
+	md.stressbalance.abstol=NaN;
+	md.cluster=generic('name',oshostname(),'np',8);
+	md=solve(md,'Stressbalance');
+	pos=find(md.mesh.x==0. | md.mesh.y==0. | md.mesh.x==max(md.mesh.x) | md.mesh.y==max(md.mesh.y));
+	md.stressbalance.spcvx(pos)=md.results.StressbalanceSolution.Vx(pos);
+	md.stressbalance.spcvy(pos)=md.results.StressbalanceSolution.Vy(pos);
+	md.stressbalance.vertex_pairing=[];
+	md=setflowequation(md,'FS','all');
+	md=solve(md,'Stressbalance');
+
+	%Plot the results and save them
+	vx=(md.results.StressbalanceSolution.Vx);
+	vy=(md.results.StressbalanceSolution.Vy);
+	vz=(md.results.StressbalanceSolution.Vz);
+	results{i}=md.results.StressbalanceSolution;
+
+	plotmodel(md,'data',vx,'data',vy,'data',vz,'layer#all',md.mesh.numberoflayers)
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx80km','Vy80km','Vz80km'
+};
+field_tolerances={...
+	1e-08,1e-07,1e-08,...
+};
+field_values={};
+for i=1:1,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		};
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1104.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1104.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1104.py	(revision 21239)
@@ -0,0 +1,90 @@
+#Test Name: ISMIPBFS
+import numpy
+from model import *
+from squaremesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+from PythonFuncs import *
+
+"""
+This test is a test from the ISMP-HOM Intercomparison project.
+Pattyn and Payne 2006
+"""
+
+L_list=[5000.,10000.,20000.,40000.,80000.,160000.]
+results=[]
+
+for L in L_list:
+	nx=20    #numberof nodes in x direction
+	ny=20
+	md=model()
+	md=squaremesh(md,L,L,nx,ny)
+	md=setmask(md,'','')    #ice sheet test
+	md=parameterize(md,'../Par/ISMIPB.py')
+	md.extrude(10,1.)
+	md=setflowequation(md,'HO','all')
+
+	#Create dirichlet on the bed only
+	md.stressbalance.spcvx=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+	md.stressbalance.spcvy=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+	md.stressbalance.spcvz=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+
+	pos=numpy.nonzero(md.mesh.vertexonbase)
+	md.stressbalance.spcvx[pos]=0.
+	md.stressbalance.spcvy[pos]=0.
+
+	#Create MPCs to have periodic boundary conditions
+	posx=numpy.nonzero(md.mesh.x==0.)[0]
+	posx2=numpy.nonzero(md.mesh.x==numpy.max(md.mesh.x))[0]
+
+	posy=numpy.nonzero(logical_and_n(md.mesh.y==0.,md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]    #Don't take the same nodes two times
+	posy2=numpy.nonzero(logical_and_n(md.mesh.y==numpy.max(md.mesh.y),md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]
+
+	md.stressbalance.vertex_pairing=numpy.vstack((numpy.hstack((posx.reshape(-1,1)+1,posx2.reshape(-1,1)+1)),numpy.hstack((posy.reshape(-1,1)+1,posy2.reshape(-1,1)+1))))
+
+	#Compute the stressbalance
+	md.stressbalance.abstol=float('NaN')
+	md.cluster=generic('name',oshostname(),'np',8)
+	md=solve(md,'Stressbalance')
+	pos=numpy.nonzero(logical_or_n(md.mesh.x==0.,md.mesh.y==0.,md.mesh.x==numpy.max(md.mesh.x),md.mesh.y==numpy.max(md.mesh.y)))
+	md.stressbalance.spcvx[pos]=md.results.StressbalanceSolution.Vx[pos]
+	md.stressbalance.spcvy[pos]=md.results.StressbalanceSolution.Vy[pos]
+	md.stressbalance.vertex_pairing=numpy.empty((0,2),int)
+	md=setflowequation(md,'FS','all')
+	md=solve(md,'Stressbalance')
+
+	#Plot the results and save them
+	vx=md.results.StressbalanceSolution.Vx
+	vy=md.results.StressbalanceSolution.Vy
+	vz=md.results.StressbalanceSolution.Vz
+	results.append(md.results.StressbalanceSolution)
+
+#	plotmodel(md,'data',vx,'data',vy,'data',vz,'layer#all',md.mesh.numberoflayers)
+
+#Fields and tolerances to track changes
+field_names     =[\
+	'Vx5km','Vy5km','Vz5km',\
+	'Vx10km','Vy10km','Vz10km',\
+	'Vx20km','Vy20km','Vz20km',\
+	'Vx40km','Vy40km','Vz40km',\
+	'Vx80km','Vy80km','Vz80km',\
+	'Vx160km','Vy160km','Vz160km'
+]
+field_tolerances=[\
+	1e-08,1e-08,1e-08,\
+	1e-08,1e-08,1e-08,\
+	1e-08,1e-08,1e-08,\
+	1e-08,1e-08,1e-08,\
+	1e-08,1e-07,1e-08,\
+	1e-07,1e-07,1e-07,\
+]
+field_values=[]
+for result in results:
+	field_values=field_values+[\
+		result.Vx,\
+		result.Vy,\
+		result.Vz,\
+		]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1105.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1105.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1105.m	(revision 21239)
@@ -0,0 +1,152 @@
+%Test Name: ISMIPCHO
+%This test is a test from the ISMP-HOM Intercomparison project.
+%Pattyn and Payne 2006
+printingflag=false;
+
+%L_list={5000.,10000.,20000.,40000.,80000.,160000.};
+L_list={80000.};
+results={};
+minvx=[];
+maxvx=[];
+
+for i=1:length(L_list),
+	L=L_list{i};  %in m (3 times the desired length for BC problems)  
+	nx=30; %number of nodes in x direction
+	ny=30;
+	md=model();
+	md=squaremesh(md,L,L,nx,ny);
+	md=setmask(md,'',''); %ice sheet test
+	md=parameterize(md,'../Par/ISMIPC.par');
+	md=extrude(md,10,1.);
+
+	md=setflowequation(md,'HO','all');
+
+	%Create MPCs to have periodic boundary conditions
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+
+	posx=find(md.mesh.x==0. & md.mesh.y~=0. & md.mesh.y~=L);
+	posx2=find(md.mesh.x==L & md.mesh.y~=0. & md.mesh.y~=L);
+
+	posy=find(md.mesh.y==0. & md.mesh.x~=0. & md.mesh.x~=L); %Don't take the same nodes two times
+	posy2=find(md.mesh.y==L & md.mesh.x~=0. & md.mesh.x~=L);
+
+	md.stressbalance.vertex_pairing=[posx,posx2;posy,posy2];
+
+	%Add spc on the corners
+	pos=find((md.mesh.x==0. | md.mesh.x==L) & (md.mesh.y==0. | md.mesh.y==L) & md.mesh.vertexonbase);
+	md.stressbalance.spcvx(pos)=0.;
+	md.stressbalance.spcvy(pos)=0.;
+	if(L==5000.),
+		md.stressbalance.spcvx(pos)=15.66;
+		md.stressbalance.spcvy(pos)=-0.1967;
+	elseif(L==10000.),
+		md.stressbalance.spcvx(pos)=16.04;
+		md.stressbalance.spcvy(pos)=-0.1977;
+	elseif(L==20000.),
+		md.stressbalance.spcvx(pos)=16.53;
+		md.stressbalance.spcvy(pos)=-1.27;
+	elseif(L==40000.),
+		md.stressbalance.spcvx(pos)=17.23;
+		md.stressbalance.spcvy(pos)=-3.17;
+	elseif(L==80000.),
+		md.stressbalance.spcvx(pos)=16.68;
+		md.stressbalance.spcvy(pos)=-2.69;
+	elseif(L==160000.),
+		md.stressbalance.spcvx(pos)=16.03;
+		md.stressbalance.spcvy(pos)=-1.27;
+	end
+	
+	%Spc the bed at zero for vz
+	pos=find(md.mesh.vertexonbase);
+	md.stressbalance.spcvz(pos)=0.;
+
+	%Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8);
+	md=solve(md,'Stressbalance');
+
+	%Plot the results and save them
+	vx=(md.results.StressbalanceSolution.Vx);
+	vy=(md.results.StressbalanceSolution.Vy);
+	vz=(md.results.StressbalanceSolution.Vz);
+	results{i}=md.results.StressbalanceSolution;
+	minvx(i)=min(vx(end-md.mesh.numberofvertices2d+1:end));
+	maxvx(i)=max(vx(end-md.mesh.numberofvertices2d+1:end));
+
+	%Now plot vx, vy, vz and vx on a cross section
+	plotmodel(md,'data',vx,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',2)
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipcHOvx' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipcHOvx' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestC']);
+	end
+	plotmodel(md,'data',vy,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',3)
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipcHOvy' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipcHOvy' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestC']);
+	end
+	plotmodel(md,'data',vz,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',4)
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipcHOvz' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipcHOvz' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestC']);
+	end
+
+	if(L==5000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP5000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 20],'xlim',[0 5000],'title','','xlabel','','figure',5)
+	elseif(L==10000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP10000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[13 18],'xlim',[0 10000],'title','','xlabel','')
+	elseif(L==20000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP20000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[14 22],'xlim',[0 20000],'title','','xlabel','')
+	elseif(L==40000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP40000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[10 40],'xlim',[0 40000],'title','','xlabel','')
+	elseif(L==80000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP80000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 80],'xlim',[0 80000],'title','','xlabel','')
+	elseif(L==160000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP160000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 200],'xlim',[0 160000],'title','','xlabel','')
+	end
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipcHOvxsec' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipcHOvxsec' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestC']);
+	end
+end
+
+%Now plot the min and max values of vx for each size of the square
+plot([5 10 20 40 80 160],minvx);ylim([4 18]);xlim([0 160])
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('ismipcHOminvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipcHOminvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestC']);
+end
+plot([5 10 20 40 80 160],maxvx);ylim([0 200]); xlim([0 160])
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('ismipcHOmaxvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipcHOmaxvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestC']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx80km','Vy80km','Vz80km'
+};
+field_tolerances={...
+	1e-09,1e-08,1e-08,...
+};
+field_values={};
+for i=1:1,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		};
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1105.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1105.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1105.py	(revision 21239)
@@ -0,0 +1,175 @@
+#Test Name: ISMIPCHO
+import numpy
+import shutil
+from model import *
+from squaremesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+from PythonFuncs import *
+
+"""
+This test is a test from the ISMP-HOM Intercomparison project.
+Pattyn and Payne 2006
+"""
+
+printingflag=False
+
+L_list=[5000.,10000.,20000.,40000.,80000.,160000.]
+results=[]
+minvx=[]
+maxvx=[]
+
+for L in L_list:    #in m (3 times the desired length for BC problems)  
+	nx=30    #number of nodes in x direction
+	ny=30
+	md=model()
+	md=squaremesh(md,L,L,nx,ny)
+	md=setmask(md,'','')    #ice sheet test
+	md=parameterize(md,'../Par/ISMIPC.py')
+	md.extrude(10,1.)
+
+	md=setflowequation(md,'HO','all')
+
+	#Create MPCs to have periodic boundary conditions
+	md.stressbalance.spcvx=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+	md.stressbalance.spcvy=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+	md.stressbalance.spcvz=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+
+	posx=numpy.nonzero(logical_and_n(md.mesh.x==0.,md.mesh.y!=0.,md.mesh.y!=L))[0]
+	posx2=numpy.nonzero(logical_and_n(md.mesh.x==L,md.mesh.y!=0.,md.mesh.y!=L))[0]
+
+	posy=numpy.nonzero(logical_and_n(md.mesh.y==0.,md.mesh.x!=0.,md.mesh.x!=L))[0]    #Don't take the same nodes two times
+	posy2=numpy.nonzero(logical_and_n(md.mesh.y==L,md.mesh.x!=0.,md.mesh.x!=L))[0]
+
+	md.stressbalance.vertex_pairing=numpy.vstack((numpy.hstack((posx.reshape(-1,1)+1,posx2.reshape(-1,1)+1)),numpy.hstack((posy.reshape(-1,1)+1,posy2.reshape(-1,1)+1))))
+
+	#Add spc on the corners
+	pos=numpy.nonzero(logical_and_n(numpy.logical_or(md.mesh.x==0.,md.mesh.x==L),numpy.logical_or(md.mesh.y==0.,md.mesh.y==L),md.mesh.vertexonbase))
+	md.stressbalance.spcvx[pos]=0.
+	md.stressbalance.spcvy[pos]=0.
+	if   (L==5000.):
+		md.stressbalance.spcvx[pos]=15.66
+		md.stressbalance.spcvy[pos]=-0.1967
+	elif (L==10000.):
+		md.stressbalance.spcvx[pos]=16.04
+		md.stressbalance.spcvy[pos]=-0.1977
+	elif (L==20000.):
+		md.stressbalance.spcvx[pos]=16.53
+		md.stressbalance.spcvy[pos]=-1.27
+	elif (L==40000.):
+		md.stressbalance.spcvx[pos]=17.23
+		md.stressbalance.spcvy[pos]=-3.17
+	elif (L==80000.):
+		md.stressbalance.spcvx[pos]=16.68
+		md.stressbalance.spcvy[pos]=-2.69
+	elif (L==160000.):
+		md.stressbalance.spcvx[pos]=16.03
+		md.stressbalance.spcvy[pos]=-1.27
+	
+	#Spc the bed at zero for vz
+	pos=numpy.nonzero(md.mesh.vertexonbase)
+	md.stressbalance.spcvz[pos]=0.
+
+	#Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8)
+	md=solve(md,'Stressbalance')
+
+	#Plot the results and save them
+	vx=md.results.StressbalanceSolution.Vx
+	vy=md.results.StressbalanceSolution.Vy
+	vz=md.results.StressbalanceSolution.Vz
+	results.append(md.results.StressbalanceSolution)
+	minvx.append(numpy.min(vx[-md.mesh.numberofvertices2d:]))
+	maxvx.append(numpy.max(vx[-md.mesh.numberofvertices2d:]))
+
+	#Now plot vx, vy, vz and vx on a cross section
+#	plotmodel(md,'data',vx,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',2)
+	if printingflag:
+		pass
+#		set(gcf,'Color','w')
+#		printmodel(['ismipcHOvx' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#		shutil.move("ismipcHOvx%d.png" % L,ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestC')
+#	plotmodel(md,'data',vy,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',3)
+	if printingflag:
+		pass
+#		set(gcf,'Color','w')
+#		printmodel(['ismipcHOvy' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#		shutil.move("ismipcHOvy%d.png" % L,ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestC')
+#	plotmodel(md,'data',vz,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',4)
+	if printingflag:
+		pass
+#		set(gcf,'Color','w')
+#		printmodel(['ismipcHOvz' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#		shutil.move("ismipcHOvz%d.png" % L,ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestC')
+
+	if   (L==5000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP5000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 20],'xlim',[0 5000],'title','','xlabel','','figure',5)
+	elif (L==10000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP10000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[13 18],'xlim',[0 10000],'title','','xlabel','')
+	elif (L==20000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP20000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[14 22],'xlim',[0 20000],'title','','xlabel','')
+	elif (L==40000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP40000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[10 40],'xlim',[0 40000],'title','','xlabel','')
+	elif (L==80000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP80000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 80],'xlim',[0 80000],'title','','xlabel','')
+	elif (L==160000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP160000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 200],'xlim',[0 160000],'title','','xlabel','')
+	if printingflag:
+		pass
+#		set(gcf,'Color','w')
+#		printmodel(['ismipcHOvxsec' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#		shutil.move("ismipcHOvxsec%d.png" % L,ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestC')
+
+#Now plot the min and max values of vx for each size of the square
+#plot([5 10 20 40 80 160],minvx);ylim([4 18]);xlim([0 160])
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('ismipcHOminvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#	shutil.move('ismipcHOminvx.png',ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestC')
+#plot([5 10 20 40 80 160],maxvx);ylim([0 200]); xlim([0 160])
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('ismipcHOmaxvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#	shutil.move('ismipcHOmaxvx.png',ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestC')
+
+#Fields and tolerances to track changes
+field_names     =[\
+	'Vx5km','Vy5km','Vz5km',\
+	'Vx10km','Vy10km','Vz10km',\
+	'Vx20km','Vy20km','Vz20km',\
+	'Vx40km','Vy40km','Vz40km',\
+	'Vx80km','Vy80km','Vz80km',\
+	'Vx160km','Vy160km','Vz160km'
+]
+field_tolerances=[\
+	1e-08,1e-07,1e-07,\
+	1e-09,1e-07,1e-07,\
+	1e-09,1e-09,1e-07,\
+	1e-09,1e-09,1e-08,\
+	1e-09,1e-08,1e-08,\
+	1e-09,1e-08,1e-08,\
+]
+field_values=[]
+for result in results:
+	field_values=field_values+[\
+		result.Vx,\
+		result.Vy,\
+		result.Vz,\
+		]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1106.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1106.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1106.m	(revision 21239)
@@ -0,0 +1,71 @@
+%Test Name: ISMIPCFS
+%This test is a test from the ISMP-HOM Intercomparison project.
+%Pattyn and Payne 2006
+
+%L_list={5000.,10000.,20000.,40000.,80000.,160000.};
+L_list={80000.};
+results={};
+
+for i=1:length(L_list),
+	L=L_list{i};  
+	md=triangle(model(),['../Exp/Square_' num2str(L) '.exp'],L/10.); %size 3*L 
+	md=setmask(md,'',''); %ice sheet test
+	md=parameterize(md,'../Par/ISMIPC.par');
+	md.friction.coefficient=sqrt(md.constants.yts.*(1000.+1000.*sin(md.mesh.x*2.*pi/L).*sin(md.mesh.y*2.*pi/L)));
+	md=extrude(md,10,1.);
+
+	%Add spc on the borders
+	pos=find(md.mesh.x==0. | md.mesh.x==max(md.mesh.x) | md.mesh.y==0. | md.mesh.y==max(md.mesh.y));
+	md.stressbalance.spcvx(pos)=0.;
+	md.stressbalance.spcvy(pos)=0.;
+	if(L==5000.),
+		md.stressbalance.spcvx(pos)=15.66;
+		md.stressbalance.spcvy(pos)=-0.1967;
+	elseif(L==10000.),
+		md.stressbalance.spcvx(pos)=16.04;
+		md.stressbalance.spcvy(pos)=-0.1977;
+	elseif(L==20000.),
+		md.stressbalance.spcvx(pos)=16.53;
+		md.stressbalance.spcvy(pos)=-1.27;
+	elseif(L==40000.),
+		md.stressbalance.spcvx(pos)=17.23;
+		md.stressbalance.spcvy(pos)=-3.17;
+	elseif(L==80000.),
+		md.stressbalance.spcvx(pos)=16.68;
+		md.stressbalance.spcvy(pos)=-2.69;
+	elseif(L==160000.),
+		md.stressbalance.spcvx(pos)=16.03;
+		md.stressbalance.spcvy(pos)=-1.27;
+	end
+
+	md=setflowequation(md,'FS','all');
+
+	%Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8);
+	md=solve(md,'Stressbalance');
+
+	%Plot the results and save them
+	vx=(md.results.StressbalanceSolution.Vx);
+	vy=(md.results.StressbalanceSolution.Vy);
+	vz=(md.results.StressbalanceSolution.Vz);
+	results{i}=md.results.StressbalanceSolution;
+
+	plotmodel(md,'data',vx,'data',vy,'data',vz,'layer#all',md.mesh.numberoflayers)
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx80km','Vy80km','Vz80km'
+};
+field_tolerances={...
+	1e-11,2e-12,3e-12,...
+};
+field_values={};
+for i=1:1,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		};
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1106.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1106.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1106.py	(revision 21239)
@@ -0,0 +1,87 @@
+#Test Name: ISMIPCFS
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+from PythonFuncs import *
+
+"""
+This test is a test from the ISMP-HOM Intercomparison project.
+Pattyn and Payne 2006
+"""
+
+L_list=[5000.,10000.,20000.,40000.,80000.,160000.]
+results=[]
+
+for L in L_list:
+	md=triangle(model(),"../Exp/Square_%d.exp" % L,L/10.)    #size 3*L 
+	md=setmask(md,'','')    #ice sheet test
+	md=parameterize(md,'../Par/ISMIPC.py')
+	md.friction.coefficient=numpy.sqrt(md.constants.yts*(1000.+1000.*numpy.sin(md.mesh.x.reshape(-1,1)*2.*numpy.pi/L)*numpy.sin(md.mesh.y.reshape(-1,1)*2.*numpy.pi/L)))
+	md.extrude(10,1.)
+
+	#Add spc on the borders
+	pos=numpy.nonzero(logical_or_n(md.mesh.x==0.,md.mesh.x==numpy.max(md.mesh.x),md.mesh.y==0.,md.mesh.y==numpy.max(md.mesh.y)))
+	md.stressbalance.spcvx[pos]=0.
+	md.stressbalance.spcvy[pos]=0.
+	if   (L==5000.):
+		md.stressbalance.spcvx[pos]=15.66
+		md.stressbalance.spcvy[pos]=-0.1967
+	elif (L==10000.):
+		md.stressbalance.spcvx[pos]=16.04
+		md.stressbalance.spcvy[pos]=-0.1977
+	elif (L==20000.):
+		md.stressbalance.spcvx[pos]=16.53
+		md.stressbalance.spcvy[pos]=-1.27
+	elif (L==40000.):
+		md.stressbalance.spcvx[pos]=17.23
+		md.stressbalance.spcvy[pos]=-3.17
+	elif (L==80000.):
+		md.stressbalance.spcvx[pos]=16.68
+		md.stressbalance.spcvy[pos]=-2.69
+	elif (L==160000.):
+		md.stressbalance.spcvx[pos]=16.03
+		md.stressbalance.spcvy[pos]=-1.27
+
+	md=setflowequation(md,'FS','all')
+
+	#Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8)
+	md=solve(md,'Stressbalance')
+
+	#Plot the results and save them
+	vx=md.results.StressbalanceSolution.Vx
+	vy=md.results.StressbalanceSolution.Vy
+	vz=md.results.StressbalanceSolution.Vz
+	results.append(md.results.StressbalanceSolution)
+
+#	plotmodel(md,'data',vx,'data',vy,'data',vz,'layer#all',md.mesh.numberoflayers)
+
+#Fields and tolerances to track changes
+field_names     =[\
+	'Vx5km','Vy5km','Vz5km',\
+	'Vx10km','Vy10km','Vz10km',\
+	'Vx20km','Vy20km','Vz20km',\
+	'Vx40km','Vy40km','Vz40km',\
+	'Vx80km','Vy80km','Vz80km',\
+	'Vx160km','Vy160km','Vz160km'
+]
+field_tolerances=[\
+	1e-12,1e-12,1e-11,\
+	1e-12,1e-12,1e-12,\
+	1e-12,1e-12,1e-12,\
+	1e-12,1e-12,1e-12,\
+	1e-12,1e-12,1e-12,\
+	1e-12,1e-11,1e-12,\
+]
+field_values=[]
+for result in results:
+	field_values=field_values+[\
+		result.Vx,\
+		result.Vy,\
+		result.Vz,\
+		]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1107.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1107.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1107.m	(revision 21239)
@@ -0,0 +1,141 @@
+%Test Name: ISMIPDHO
+%This test is a test from the ISMP-HOM Intercomparison project.
+%Pattyn and Payne 2006
+printingflag=false;
+
+%L_list={5000.,10000.,20000.,40000.,80000.,160000.};
+L_list={80000.};
+results={};
+minvx=[];
+maxvx=[];
+
+for i=1:length(L_list),
+	L=L_list{i};
+	nx=30; %numberof nodes in x direction
+	ny=30;
+	md=model();
+	md=squaremesh(md,L,L,nx,ny);
+	md=setmask(md,'',''); %ice sheet test
+	md=parameterize(md,'../Par/ISMIPD.par');
+	md=extrude(md,10,1.);
+
+	md=setflowequation(md,'HO','all');
+
+	%We need one grd on dirichlet: the 4 corners are set to zero
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+
+	%Create MPCs to have periodic boundary conditions
+	posx=find(md.mesh.x==0. & ~(md.mesh.y==0. & md.mesh.vertexonbase) & ~(md.mesh.y==L & md.mesh.vertexonbase));
+	posx2=find(md.mesh.x==max(md.mesh.x) & ~(md.mesh.y==0. & md.mesh.vertexonbase) & ~(md.mesh.y==L & md.mesh.vertexonbase));
+
+	posy=find(md.mesh.y==0. & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x)); %Don't take the same nodes two times
+	posy2=find(md.mesh.y==max(md.mesh.y) & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x));
+
+	md.stressbalance.vertex_pairing=[posx,posx2;posy,posy2];
+
+	%Add spc on the corners
+	pos=find((md.mesh.x==0. | md.mesh.x==L) & (md.mesh.y==0. | md.mesh.y==L) & md.mesh.vertexonbase);
+	md.stressbalance.spcvy(:)=0.;
+	md.stressbalance.spcvx(pos)=0.;
+	if(L==5000.),
+		md.stressbalance.spcvx(pos)=16.0912;
+	elseif(L==10000.),
+		md.stressbalance.spcvx(pos)=16.52;
+	elseif(L==20000.),
+		md.stressbalance.spcvx(pos)=17.77;
+	elseif(L==40000.),
+		md.stressbalance.spcvx(pos)=19.88;
+	elseif(L==80000.),
+		md.stressbalance.spcvx(pos)=18.65;
+	elseif(L==160000.),
+		md.stressbalance.spcvx(pos)=16.91;
+	end
+	
+	%Spc the bed at zero for vz
+	pos=find(md.mesh.vertexonbase);
+	md.stressbalance.spcvz(pos)=0.;
+
+	%Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8);
+	md=solve(md,'Stressbalance');
+
+	%Plot the results and save them
+	vx=(md.results.StressbalanceSolution.Vx);
+	vy=(md.results.StressbalanceSolution.Vy);
+	vz=(md.results.StressbalanceSolution.Vz);
+	results{i}=md.results.StressbalanceSolution;
+	minvx(i)=min(vx(end-md.mesh.numberofvertices2d+1:end));
+	maxvx(i)=max(vx(end-md.mesh.numberofvertices2d+1:end));
+
+	%Now plot vx, vy, vz and vx on a cross section
+	plotmodel(md,'data',vx,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',2)
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipdHOvx' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipdHOvx' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestD']);
+	end
+	plotmodel(md,'data',vz,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',3)
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipdHOvz' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipdHOvz' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestD']);
+	end
+
+	if(L==5000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP5000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 20],'xlim',[0 5000],'title','','xlabel','','figure',4)
+	elseif(L==10000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP10000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 20],'xlim',[0 10000],'title','','xlabel','','figure',4)
+	elseif(L==20000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP20000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 30],'xlim',[0 20000],'title','','xlabel','','figure',4)
+	elseif(L==40000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP40000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[10 60],'xlim',[0 40000],'title','','xlabel','','figure',4)
+	elseif(L==80000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP80000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 200],'xlim',[0 80000],'title','','xlabel','','figure',4)
+	elseif(L==160000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP160000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 400],'xlim',[0 160000],'title','','xlabel','','figure',4)
+	end
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipdHOvxsec' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipdHOvxsec' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestD']);
+	end
+end
+
+%Now plot the min and max values of vx for each size of the square
+plot([5 10 20 40 80 160],minvx);ylim([2 18]);xlim([0 160])
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('ismipdHOminvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipdHOminvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestD']);
+end
+plot([5 10 20 40 80 160],maxvx);ylim([0 300]);xlim([0 160])
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('ismipdHOmaxvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipdHOmaxvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestD']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx80km','Vy80km','Vz80km'
+};
+field_tolerances={...
+	1e-08,1e-08,1e-07,...
+};
+field_values={};
+for i=1:1,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		};
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1107.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1107.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1107.py	(revision 21239)
@@ -0,0 +1,166 @@
+#Test Name: ISMIPDHO
+import numpy
+import shutil
+from model import *
+from squaremesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+from PythonFuncs import *
+
+"""
+This test is a test from the ISMP-HOM Intercomparison project.
+Pattyn and Payne 2006
+"""
+
+printingflag=False
+
+L_list=[5000.,10000.,20000.,40000.,80000.,160000.]
+results=[]
+minvx=[]
+maxvx=[]
+
+for L in L_list:
+	nx=30    #numberof nodes in x direction
+	ny=30
+	md=model()
+	md=squaremesh(md,L,L,nx,ny)
+	md=setmask(md,'','')    #ice sheet test
+	md=parameterize(md,'../Par/ISMIPD.py')
+	md.extrude(10,1.)
+
+	md=setflowequation(md,'HO','all')
+
+	#We need one grd on dirichlet: the 4 corners are set to zero
+	md.stressbalance.spcvx=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+	md.stressbalance.spcvy=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+	md.stressbalance.spcvz=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+
+	#Create MPCs to have periodic boundary conditions
+#	posx=find(md.mesh.x==0. & ~(md.mesh.y==0. & md.mesh.vertexonbase) & ~(md.mesh.y==L & md.mesh.vertexonbase));
+	posx=numpy.nonzero(logical_and_n(md.mesh.x==0.,numpy.logical_not(numpy.logical_and(md.mesh.y==0.,md.mesh.vertexonbase)),numpy.logical_not(numpy.logical_and(md.mesh.y==L,md.mesh.vertexonbase))))[0]
+#	posx2=find(md.mesh.x==max(md.mesh.x) & ~(md.mesh.y==0. & md.mesh.vertexonbase) & ~(md.mesh.y==L & md.mesh.vertexonbase));
+	posx2=numpy.nonzero(logical_and_n(md.mesh.x==numpy.max(md.mesh.x),numpy.logical_not(numpy.logical_and(md.mesh.y==0.,md.mesh.vertexonbase)),numpy.logical_not(numpy.logical_and(md.mesh.y==L,md.mesh.vertexonbase))))[0]
+
+	posy=numpy.nonzero(logical_and_n(md.mesh.y==0.,md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]    #Don't take the same nodes two times
+	posy2=numpy.nonzero(logical_and_n(md.mesh.y==numpy.max(md.mesh.y),md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]
+
+	md.stressbalance.vertex_pairing=numpy.vstack((numpy.hstack((posx.reshape(-1,1)+1,posx2.reshape(-1,1)+1)),numpy.hstack((posy.reshape(-1,1)+1,posy2.reshape(-1,1)+1))))
+
+	#Add spc on the corners
+	pos=numpy.nonzero(logical_and_n(numpy.logical_or(md.mesh.x==0.,md.mesh.x==L),numpy.logical_or(md.mesh.y==0.,md.mesh.y==L),md.mesh.vertexonbase))
+	md.stressbalance.spcvy[:]=0.
+	md.stressbalance.spcvx[pos]=0.
+	if   (L==5000.):
+		md.stressbalance.spcvx[pos]=16.0912
+	elif (L==10000.):
+		md.stressbalance.spcvx[pos]=16.52
+	elif (L==20000.):
+		md.stressbalance.spcvx[pos]=17.77
+	elif (L==40000.):
+		md.stressbalance.spcvx[pos]=19.88
+	elif (L==80000.):
+		md.stressbalance.spcvx[pos]=18.65
+	elif (L==160000.):
+		md.stressbalance.spcvx[pos]=16.91
+	
+	#Spc the bed at zero for vz
+	pos=numpy.nonzero(md.mesh.vertexonbase)
+	md.stressbalance.spcvz[pos]=0.
+
+	#Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8)
+	md=solve(md,'Stressbalance')
+
+	#Plot the results and save them
+	vx=md.results.StressbalanceSolution.Vx
+	vy=md.results.StressbalanceSolution.Vy
+	vz=md.results.StressbalanceSolution.Vz
+	results.append(md.results.StressbalanceSolution)
+	minvx.append(numpy.min(vx[-md.mesh.numberofvertices2d:]))
+	maxvx.append(numpy.max(vx[-md.mesh.numberofvertices2d:]))
+
+	#Now plot vx, vy, vz and vx on a cross section
+#	plotmodel(md,'data',vx,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',2)
+	if printingflag:
+		pass
+#		set(gcf,'Color','w')
+#		printmodel(['ismipdHOvx' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#		shutil.move("ismipdHOvx%d.png" % L,ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestD')
+#	plotmodel(md,'data',vz,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',3)
+	if printingflag:
+		pass
+#		set(gcf,'Color','w')
+#		printmodel(['ismipdHOvz' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#		shutil.move("ismipdHOvz%d.png" % L,ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestD')
+
+	if   (L==5000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP5000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 20],'xlim',[0 5000],'title','','xlabel','','figure',4)
+	elif (L==10000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP10000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 20],'xlim',[0 10000],'title','','xlabel','','figure',4)
+	elif (L==20000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP20000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 30],'xlim',[0 20000],'title','','xlabel','','figure',4)
+	elif (L==40000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP40000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[10 60],'xlim',[0 40000],'title','','xlabel','','figure',4)
+	elif (L==80000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP80000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 200],'xlim',[0 80000],'title','','xlabel','','figure',4)
+	elif (L==160000.):
+		pass
+#		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP160000.exp','layer',md.mesh.numberoflayers,...
+#			'resolution',[10 10],'ylim',[0 400],'xlim',[0 160000],'title','','xlabel','','figure',4)
+	if printingflag:
+		pass
+#		set(gcf,'Color','w')
+#		printmodel(['ismipdHOvxsec' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#		shutil.move("ismipdHOvxsec%d.png" % L,ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestD')
+
+#Now plot the min and max values of vx for each size of the square
+#plot([5 10 20 40 80 160],minvx);ylim([2 18]);xlim([0 160])
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('ismipdHOminvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#	shutil.move('ismipdHOminvx.png',ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestD')
+#plot([5 10 20 40 80 160],maxvx);ylim([0 300]);xlim([0 160])
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('ismipdHOmaxvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+#	shutil.move('ismipdHOmaxvx.png',ISSM_DIR+'/website/doc_pdf/validation/Images/ISMIP/TestD')
+
+#Fields and tolerances to track changes
+field_names     =[\
+	'Vx5km','Vy5km','Vz5km',\
+	'Vx10km','Vy10km','Vz10km',\
+	'Vx20km','Vy20km','Vz20km',\
+	'Vx40km','Vy40km','Vz40km',\
+	'Vx80km','Vy80km','Vz80km',\
+	'Vx160km','Vy160km','Vz160km'
+]
+field_tolerances=[\
+	1e-07,1e-08,1e-06,\
+	1e-08,1e-08,1e-06,\
+	1e-08,1e-08,1e-07,\
+	1e-08,1e-08,1e-07,\
+	1e-08,1e-08,1e-07,\
+	1e-07,1e-08,1e-06,\
+]
+field_values=[]
+for result in results:
+	field_values=field_values+[\
+		result.Vx,\
+		result.Vy,\
+		result.Vz,\
+		]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1108.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1108.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1108.m	(revision 21239)
@@ -0,0 +1,80 @@
+%Test Name: ISMIPDFS
+%This test is a test from the ISMP-HOM Intercomparison project.
+%Pattyn and Payne 2006
+
+%L_list={5000.,10000.,20000.,40000.,80000.,160000.};
+L_list={80000.};
+results={};
+
+for i=1:length(L_list),
+	L=L_list{i};
+	nx=30; %numberof nodes in x direction
+	ny=30;
+	md=model();
+	md=squaremesh(md,L,L,nx,ny);
+	md=setmask(md,'',''); %ice sheet test
+	md=parameterize(md,'../Par/ISMIPD.par');
+	md=extrude(md,10,1.);
+
+	md=setflowequation(md,'HO','all');
+
+	%We need one grid on dirichlet: the 4 corners are set to zero
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+	
+	pos=find(md.mesh.vertexonbase & (md.mesh.x==0. | md.mesh.x==max(md.mesh.x)) & (md.mesh.y==0. | md.mesh.y==max(md.mesh.y)));
+	md.stressbalance.spcvx(pos)=0.;
+	md.stressbalance.spcvy(pos)=0.;
+	md.stressbalance.spcvz(pos)=0.;
+
+	%Create MPCs to have periodic boundary conditions
+	posx=find(md.mesh.x==0.);
+	posx2=find(md.mesh.x==max(md.mesh.x));
+
+	posy=find(md.mesh.y==0. & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x)); %Don't take the same nodes two times
+	posy2=find(md.mesh.y==max(md.mesh.y) & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x));
+
+	md.stressbalance.vertex_pairing=[posx,posx2;posy,posy2];
+
+	%Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8);
+	md=solve(md,'Stressbalance');
+	md.stressbalance.reltol=NaN;
+	md.stressbalance.abstol=NaN;
+	md.stressbalance.vertex_pairing=[];
+	%We need one grd on dirichlet: the 4 corners are set to zero
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+	pos=find(md.mesh.y==0. | md.mesh.x==0. | md.mesh.x==max(md.mesh.x) | md.mesh.y==max(md.mesh.y)); %Don't take the same nodes two times
+	md.stressbalance.spcvx(pos)=md.results.StressbalanceSolution.Vx(pos);
+	md.stressbalance.spcvy(pos)=md.results.StressbalanceSolution.Vy(pos);
+	md=setflowequation(md,'FS','all');
+	md=solve(md,'Stressbalance');
+
+	%Plot the results and save them
+	vx=(md.results.StressbalanceSolution.Vx);
+	vy=(md.results.StressbalanceSolution.Vy);
+	vz=(md.results.StressbalanceSolution.Vz);
+	results{i}=md.results.StressbalanceSolution;
+
+	plotmodel(md,'data',vx,'data',vy,'data',vz,'layer#all',md.mesh.numberoflayers)
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx80km','Vy80km','Vz80km'
+};
+field_tolerances={...
+	1e-08,1e-07,1e-07,...
+};
+field_values={};
+for i=1:1,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		};
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1108.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1108.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1108.py	(revision 21239)
@@ -0,0 +1,98 @@
+#Test Name: ISMIPDFS
+import numpy
+from model import *
+from bamg import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+from PythonFuncs import *
+
+"""
+This test is a test from the ISMP-HOM Intercomparison project.
+Pattyn and Payne 2006
+"""
+
+L_list=[5000.,10000.,20000.,40000.,80000.,160000.]
+results=[]
+
+for L in L_list:
+	nx=30    #numberof nodes in x direction
+	ny=30
+	md=model()
+	md=squaremesh(md,L,L,nx,ny)
+	md=setmask(md,'','')    #ice sheet test
+	md=parameterize(md,'../Par/ISMIPD.py')
+	md.extrude(10,1.)
+
+	md=setflowequation(md,'HO','all')
+
+	#We need one grd on dirichlet: the 4 corners are set to zero
+	md.stressbalance.spcvx=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+	md.stressbalance.spcvy=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+	md.stressbalance.spcvz=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+	
+	pos=numpy.nonzero(logical_and_n(md.mesh.vertexonbase,numpy.logical_or(md.mesh.x==0.,md.mesh.x==numpy.max(md.mesh.x)),numpy.logical_or(md.mesh.y==0.,md.mesh.y==numpy.max(md.mesh.y))))
+	md.stressbalance.spcvx[pos]=0.
+	md.stressbalance.spcvy[pos]=0.
+	md.stressbalance.spcvz[pos]=0.
+
+	#Create MPCs to have periodic boundary conditions
+	posx=numpy.nonzero(md.mesh.x==0.)[0]
+	posx2=numpy.nonzero(md.mesh.x==numpy.max(md.mesh.x))[0]
+
+	posy=numpy.nonzero(logical_and_n(md.mesh.y==0.,md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]    #Don't take the same nodes two times
+	posy2=numpy.nonzero(logical_and_n(md.mesh.y==numpy.max(md.mesh.y),md.mesh.x!=0.,md.mesh.x!=numpy.max(md.mesh.x)))[0]
+
+	md.stressbalance.vertex_pairing=numpy.vstack((numpy.hstack((posx.reshape(-1,1)+1,posx2.reshape(-1,1)+1)),numpy.hstack((posy.reshape(-1,1)+1,posy2.reshape(-1,1)+1))))
+
+	#Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8)
+	md.verbose=verbose('convergence',True)
+	md=solve(md,'Stressbalance')
+	md.stressbalance.reltol=float('NaN')
+	md.stressbalance.abstol=float('NaN')
+	md.stressbalance.vertex_pairing=numpy.empty((0,2))
+	#We need one grid on dirichlet: the 4 corners are set to zero
+	md.stressbalance.spcvx=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+	md.stressbalance.spcvy=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+	md.stressbalance.spcvz=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+	pos=numpy.nonzero(logical_or_n(md.mesh.y==0.,md.mesh.x==0.,md.mesh.x==numpy.max(md.mesh.x),md.mesh.y==numpy.max(md.mesh.y)))    #Don't take the same nodes two times
+	md.stressbalance.spcvx[pos]=md.results.StressbalanceSolution.Vx[pos]
+	md.stressbalance.spcvy[pos]=md.results.StressbalanceSolution.Vy[pos]
+	md=setflowequation(md,'FS','all')
+	md=solve(md,'Stressbalance')
+
+	#Plot the results and save them
+	vx=md.results.StressbalanceSolution.Vx
+	vy=md.results.StressbalanceSolution.Vy
+	vz=md.results.StressbalanceSolution.Vz
+	results.append(md.results.StressbalanceSolution)
+
+#	plotmodel(md,'data',vx,'data',vy,'data',vz,'layer#all',md.mesh.numberoflayers)
+
+#Fields and tolerances to track changes
+field_names     =[\
+	'Vx5km','Vy5km','Vz5km',\
+	'Vx10km','Vy10km','Vz10km',\
+	'Vx20km','Vy20km','Vz20km',\
+	'Vx40km','Vy40km','Vz40km',\
+	'Vx80km','Vy80km','Vz80km',\
+	'Vx160km','Vy160km','Vz160km'
+]
+field_tolerances=[\
+	1e-07,1e-07,1e-07,\
+	1e-08,1e-08,1e-08,\
+	1e-08,1e-07,1e-07,\
+	1e-08,1e-08,1e-08,\
+	1e-08,1e-07,1e-07,\
+	1e-07,1e-06,1e-07,\
+]
+field_values=[]
+for result in results:
+	field_values=field_values+[\
+		result.Vx,\
+		result.Vy,\
+		result.Vz,\
+		]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1109.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1109.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1109.m	(revision 21239)
@@ -0,0 +1,111 @@
+%Test Name: ISMIPE
+%This test is a test from the ISMP-HOM Intercomparison project.
+%TestE 
+%Four tests to run: - Pattyn frozen
+%                   - Stokes frozen
+%                   - Pattyn with some sliding
+%                   - Stokes with some sliding
+printingflag=false;
+results={};
+
+for i=1:4,
+	Lx=10.; %in m
+	Ly=5000.; %in m
+	nx=3; %number of nodes in x direction
+	ny=51;
+	md=model();
+	md=squaremesh(md,Lx,Ly,nx,ny);
+	md=setmask(md,'',''); %ice sheet test
+	md=parameterize(md,'../Par/ISMIPE.par');
+	md=extrude(md,10,1.);
+
+	if i==1 | i==3,
+		md=setflowequation(md,'HO','all');
+	elseif i==2 | i==4,
+		md=setflowequation(md,'FS','all');
+	end
+
+	%Create MPCs to have periodic boundary conditions
+	posx=find(md.mesh.x==0.);
+	posx2=find(md.mesh.x==max(md.mesh.x));
+	md.stressbalance.vertex_pairing=[posx,posx2];
+
+	%Create spcs on the bed 
+	pos=find(md.mesh.vertexonbase);
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvx(pos)=0.;
+	md.stressbalance.spcvy(pos)=0.;
+	md.stressbalance.spcvz(pos)=0.;
+
+	%Remove the spc where there is some sliding (case 3 and 4):
+	if i==3 | i==4,
+		pos=find(md.mesh.y/max(md.mesh.y)>=0.44 & md.mesh.y/max(md.mesh.y)<=0.5);
+		md.stressbalance.spcvx(pos)=NaN;
+		md.stressbalance.spcvy(pos)=NaN;
+		md.stressbalance.spcvz(pos)=NaN;
+	end
+
+	%Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8);
+	md=solve(md,'Stressbalance');
+
+	vx=(md.results.StressbalanceSolution.Vx);
+	vy=(md.results.StressbalanceSolution.Vy);
+	vz=(md.results.StressbalanceSolution.Vz);
+	results{i}=md.results.StressbalanceSolution;
+
+	if i==1,
+		plotmodel(md,'data',vy,'ylim',[-10 80],'layer',md.mesh.numberoflayers,'sectionvalue','../Exp/ISMIPE.exp','resolution',[10 10],'title','','xlabel','')
+		if printingflag,
+			set(gcf,'Color','w')
+			printmodel('ismipeHOvxfrozen','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipeHOvxfrozen.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestE']);
+		end
+	elseif i==2,
+		plotmodel(md,'data',vy,'ylim',[-10 80],'layer',md.mesh.numberoflayers,'sectionvalue','../Exp/ISMIPE.exp','resolution',[10 10],'title','','xlabel','')
+		if printingflag,
+			set(gcf,'Color','w')
+			printmodel('ismipeFSvxfrozen','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipeFSvxfrozen.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestE']);
+		end
+	elseif i==3,
+		plotmodel(md,'data',vy,'ylim',[-50 200],'layer',md.mesh.numberoflayers,'sectionvalue','../Exp/ISMIPE.exp','resolution',[10 10],'title','','xlabel','')
+		if printingflag,
+			set(gcf,'Color','w')
+			printmodel('ismipeHOvxsliding','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipeHOvxsliding.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestE']);
+		end
+	elseif i==4,
+		plotmodel(md,'data',vy,'ylim',[-50 200],'layer',md.mesh.numberoflayers,'sectionvalue','../Exp/ISMIPE.exp','resolution',[10 10],'title','','xlabel','')
+		if printingflag,
+			set(gcf,'Color','w')
+			printmodel('ismipeFSvxsliding','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipeFSvxsliding.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestE']);
+		end
+	end
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'VyPattynSliding','VzPattynSliding',...
+	'VxStokesSliding','VyStokesSliding','VzStokesSliding',...
+	'VyPattynFrozen','VzPattynFrozen',...
+	'VxStokesFrozen','VyStokesFrozen','VzStokesFrozen'
+};
+field_tolerances={...
+	1e-05,1e-05,...
+	1e-05,1e-06,1e-06,...
+	1e-05,1e-04,...
+	1e-05,1e-05,1e-06,...
+};
+field_values={};
+for i=1:4,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		};
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test111.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test111.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test111.js	(revision 21239)
@@ -0,0 +1,55 @@
+//Test Name: SquareShelfConstrainedTranHO
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs=['IceVolume'];
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names=[
+	'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface2','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','Volume1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','Volume2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','Volume3'];
+field_tolerances=[
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,1e-13,
+	1e-09,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,2e-11,
+	1e-09,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,1e-11];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](1).IceVolume),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).IceVolume),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).IceVolume),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test111.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test111.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test111.m	(revision 21239)
@@ -0,0 +1,54 @@
+%Test Name: SquareShelfConstrainedTranHO
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'IceVolume'};
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={...
+	'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface2','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','Volume1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','Volume2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','Volume3'};
+field_tolerances={...
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,1e-13,...
+	1e-09,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,2e-11,...
+	1e-09,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,1e-11};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).IceVolume),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test111.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test111.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test111.py	(revision 21239)
@@ -0,0 +1,62 @@
+#Test Name: SquareShelfConstrainedTranHO
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',200000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.transient.requested_outputs=['IceVolume']
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names=[\
+	'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface2','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','Volume1', \
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','Volume2', \
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','Volume3']
+field_tolerances=[\
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,1e-13,\
+	1e-09,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,2e-11,\
+	1e-09,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,1e-11]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[0].IceVolume,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].IceVolume,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Temperature,\
+	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[2].IceVolume,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1110.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1110.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1110.m	(revision 21239)
@@ -0,0 +1,130 @@
+%Test Name: ISMIPF
+%This test is a test from the ISMP-HOM Intercomparison project.
+%TestF 
+printingflag=false;
+results={};
+
+for i=1:4,
+	L=100000.; %in m
+	nx=30; %numberof nodes in x direction
+	ny=30;
+	md=model();
+	md=squaremesh(md,L,L,nx,ny);
+%	md=triangle(md,'../Exp/SquareISMIP.exp',5500.);
+	md=setmask(md,'',''); %ice sheet test
+	md=parameterize(md,'../Par/ISMIPF.par');
+	md=extrude(md,4,1.);
+
+	if (i==1 | i==2),
+		md=setflowequation(md,'HO','all');
+	else
+		md=setflowequation(md,'FS','all');
+	end
+
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+	if (i==1 | i==3),
+		%Create dirichlet on the bed if no slip
+		pos=find(md.mesh.vertexonbase);
+		md.stressbalance.spcvx(pos)=0.;
+		md.stressbalance.spcvy(pos)=0.;
+		md.stressbalance.spcvz(pos)=0.;
+	else
+		pos=find(md.mesh.vertexonbase & (md.mesh.x==0. | md.mesh.x==max(md.mesh.x)) & (md.mesh.y==0. | md.mesh.y==max(md.mesh.y)));
+		md.stressbalance.spcvx(pos)=100.; %because we need a dirichlet somewhere
+		md.stressbalance.spcvy(pos)=0.;
+		md.stressbalance.spcvz(pos)=0.;
+	end
+	pos=find(~md.mesh.vertexonbase);
+	md.thermal.spctemperature(pos)=255.;
+
+	%Create MPCs to have periodic boundary conditions
+	posx=find(md.mesh.x==0.);
+	posx2=find(md.mesh.x==max(md.mesh.x));
+
+	posy=find(md.mesh.y==0.);
+	posy2=find(md.mesh.y==max(md.mesh.y));
+
+	md.stressbalance.vertex_pairing=[posx,posx2;posy,posy2];
+	md.masstransport.vertex_pairing=[posx,posx2;posy,posy2];
+
+	md.timestepping.time_step=3.;
+	md.timestepping.final_time=300.;
+	md.settings.output_frequency=50;
+	md.masstransport.stabilization=1;
+	md.stressbalance.maxiter=1;
+	
+	%Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8);
+	md.verbose=verbose('convergence',true,'solution',true);
+	md=solve(md,'Transient');
+
+	%save the results
+	results{i}=md.results.TransientSolution(end);
+	
+	%Now plot vx and delta surface 
+	if (i==1 | i==3),
+		plotmodel(md,'data',(md.results.TransientSolution(end).Vx),'layer',md.mesh.numberoflayers,'sectionvalue','../Exp/ISMIP100000.exp','title','','xlabel','','ylabel','Velocity (m/yr)','linewidth',3,'grid','on','unit','km','ylim',[91 100])
+	elseif (i==2 | i==4),
+		plotmodel(md,'data',(md.results.TransientSolution(end).Vx),'layer',md.mesh.numberoflayers,'sectionvalue','../Exp/ISMIP100000.exp','title','','xlabel','','ylabel','Velocity (m/yr)','linewidth',3,'grid','on','unit','km','ylim',[185 200])
+	end
+	if printingflag,
+		set(gcf,'Color','w')
+		if i==1,
+			printmodel('ismipfHOvxfrozen','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipfHOvxfrozen.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF']);
+		elseif i==2,
+			printmodel('ismipfHOvxsliding','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipfHOvxsliding.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF']);
+		elseif i==3,
+			printmodel('ismipfFSvxfrozen','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipfFSvxfrozen.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF']);
+		elseif i==4,
+			printmodel('ismipfFSvxsliding','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipfFSvxsliding.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF']);
+		end
+	end
+
+	plotmodel(md,'data',(md.results.TransientSolution(end).Surface)-md.geometry.surface,'layer',md.mesh.numberoflayers,'sectionvalue','../Exp/ISMIP100000.exp','title','','xlabel','','ylabel','Surface (m)','linewidth',3,'grid','on','unit','km','ylim',[-30 50])
+	if printingflag,
+		set(gcf,'Color','w')
+		if i==1,
+			printmodel('ismipfHOdeltasurfacefrozen','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipfHOdeltasurfacefrozen.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF']);
+		elseif i==2,
+			printmodel('ismipfHOdeltasurfacesliding','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipfHOdeltasurfacesliding.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF']);
+		elseif i==3,
+			printmodel('ismipfFSdeltasurfacefrozen','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipfFSdeltasurfacefrozen.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF']);
+		elseif i==4,
+			printmodel('ismipfFSdeltasurfacesliding','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipfFSdeltasurfacesliding.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF']);
+		end
+	end
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'VxPattynFrozen','VyPattynFrozen','VzPattynFrozen','SurfacePattynFrozen',...
+	'VxPattynSliding','VyPattynSliding','VzPattynSliding','SurfacePattynSliding',...
+	'VxStokesFrozen','VyStokesFrozen','VzStokesFrozen','SurfaceStokesFrozen',...
+	'VxStokesSliding','VyStokesSliding','VzStokesSliding','SurfaceStokesSliding'
+};
+field_tolerances={...
+	1e-10,1e-09,1e-09,1e-10,...
+	1e-10,1e-09,1e-09,1e-10,...
+	1e-08,1e-09,1e-08,1e-09,...
+	1e-08,2e-09,1e-08,1e-09,...
+};
+field_values={};
+for i=1:4,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		(result.Surface)-md.geometry.surface,...
+		};
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test112.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test112.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test112.js	(revision 21239)
@@ -0,0 +1,16 @@
+//Test Name: SquareShelfConstrainedSurfSlop2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'SurfaceSlope');
+
+//Fields and tolerances to track changes
+field_names     =['SurfaceSlopeX','SurfaceSlopeY'];
+field_tolerances=[1e-13,1e-13];
+field_values=[
+	(md.results.SurfaceSlopeSolution[0].SurfaceSlopeX),
+	(md.results.SurfaceSlopeSolution[0].SurfaceSlopeY),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test112.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test112.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test112.m	(revision 21239)
@@ -0,0 +1,15 @@
+%Test Name: SquareShelfConstrainedSurfSlop2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'SurfaceSlope');
+
+%Fields and tolerances to track changes
+field_names     ={'SurfaceSlopeX','SurfaceSlopeY'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.SurfaceSlopeSolution.SurfaceSlopeX),...
+	(md.results.SurfaceSlopeSolution.SurfaceSlopeY),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test112.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test112.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test112.py	(revision 21239)
@@ -0,0 +1,23 @@
+#Test Name: SquareShelfConstrainedSurfSlop2d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'SurfaceSlope')
+
+#Fields and tolerances to track changes
+field_names     =['SurfaceSlopeX','SurfaceSlopeY']
+field_tolerances=[1e-13,1e-13]
+field_values=[\
+	md.results.SurfaceSlopeSolution.SurfaceSlopeX,\
+	md.results.SurfaceSlopeSolution.SurfaceSlopeY,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test113.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test113.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test113.js	(revision 21239)
@@ -0,0 +1,17 @@
+//Test Name: SquareShelfConstrainedSurfSlope3d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,5,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'SurfaceSlope');
+
+//Fields and tolerances to track changes
+field_names     =['SurfaceSlopeX','SurfaceSlopeY'];
+field_tolerances=[1e-13,1e-13];
+field_values=[
+	(md.results.SurfaceSlopeSolution[0].SurfaceSlopeX),
+	(md.results.SurfaceSlopeSolution[0].SurfaceSlopeY),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test113.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test113.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test113.m	(revision 21239)
@@ -0,0 +1,16 @@
+%Test Name: SquareShelfConstrainedSurfSlope3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'SurfaceSlope');
+
+%Fields and tolerances to track changes
+field_names     ={'SurfaceSlopeX','SurfaceSlopeY'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.SurfaceSlopeSolution.SurfaceSlopeX),...
+	(md.results.SurfaceSlopeSolution.SurfaceSlopeY),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test113.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test113.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test113.py	(revision 21239)
@@ -0,0 +1,24 @@
+#Test Name: SquareShelfConstrainedSurfSlope3d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(5,1.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'SurfaceSlope')
+
+#Fields and tolerances to track changes
+field_names     =['SurfaceSlopeX','SurfaceSlopeY']
+field_tolerances=[1e-13,1e-13]
+field_values=[\
+	md.results.SurfaceSlopeSolution.SurfaceSlopeX,\
+	md.results.SurfaceSlopeSolution.SurfaceSlopeY,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test114.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test114.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test114.js	(revision 21239)
@@ -0,0 +1,16 @@
+//Test Name: SquareShelfConstrainedBedSlop2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'BedSlope');
+
+//Fields and tolerances to track changes
+field_names     =['BedSlopeX','BedSlopeY'];
+field_tolerances=[1e-13,1e-13];
+field_values=[
+	(md.results.BedSlopeSolution[0].BedSlopeX),
+	(md.results.BedSlopeSolution[0].BedSlopeY),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test114.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test114.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test114.m	(revision 21239)
@@ -0,0 +1,15 @@
+%Test Name: SquareShelfConstrainedBedSlop2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'BedSlope');
+
+%Fields and tolerances to track changes
+field_names     ={'BedSlopeX','BedSlopeY'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.BedSlopeSolution.BedSlopeX),...
+	(md.results.BedSlopeSolution.BedSlopeY),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test114.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test114.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test114.py	(revision 21239)
@@ -0,0 +1,23 @@
+#Test Name: SquareShelfConstrainedBedSlop2d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'BedSlope')
+
+#Fields and tolerances to track changes
+field_names     =['BedSlopeX','BedSlopeY']
+field_tolerances=[1e-13,1e-13]
+field_values=[\
+	md.results.BedSlopeSolution.BedSlopeX,\
+	md.results.BedSlopeSolution.BedSlopeY,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test115.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test115.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test115.js	(revision 21239)
@@ -0,0 +1,17 @@
+//Test Name: SquareShelfConstrainedBedSlop3d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,5,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'BedSlope');
+
+//Fields and tolerances to track changes
+field_names     =['BedSlopeX','BedSlopeY'];
+field_tolerances=[1e-13,1e-13];
+field_values=[
+	(md.results.BedSlopeSolution[0].BedSlopeX),
+	(md.results.BedSlopeSolution[0].BedSlopeY),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test115.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test115.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test115.m	(revision 21239)
@@ -0,0 +1,16 @@
+%Test Name: SquareShelfConstrainedBedSlop3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'BedSlope');
+
+%Fields and tolerances to track changes
+field_names     ={'BedSlopeX','BedSlopeY'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.BedSlopeSolution.BedSlopeX),...
+	(md.results.BedSlopeSolution.BedSlopeY),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test115.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test115.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test115.py	(revision 21239)
@@ -0,0 +1,24 @@
+#Test Name: SquareShelfConstrainedBedSlop3d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(5,1.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'BedSlope')
+
+#Fields and tolerances to track changes
+field_names     =['BedSlopeX','BedSlopeY']
+field_tolerances=[1e-13,1e-13]
+field_values=[\
+	md.results.BedSlopeSolution.BedSlopeX,\
+	md.results.BedSlopeSolution.BedSlopeY,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test116.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test116.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test116.js	(revision 21239)
@@ -0,0 +1,26 @@
+//Test Name: SquareShelfConstrainedBalThic2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+//Add boundary conditions on thickness on the border
+pos=[];
+for (var i = 0; i < md.mesh.vertexonboundary.length; ++i) {
+    if ((md.mesh.vertexonboundary[i] !== 0)) {
+            pos.push(i);
+    };
+}
+
+for (var i = 0; i < pos.length; ++i) {
+    md.balancethickness.spcthickness[pos[i]] = md.geometry.thickness[pos[i]];
+}
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Balancethickness');
+
+//Fields and tolerances to track changes
+field_names     =['Thickness'];
+field_tolerances=[1e-13];
+field_values=[
+	(md.results.BalancethicknessSolution[0].Thickness),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test116.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test116.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test116.m	(revision 21239)
@@ -0,0 +1,17 @@
+%Test Name: SquareShelfConstrainedBalThic2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+%Add boundary conditions on thickness on the border
+pos=find(md.mesh.vertexonboundary);
+md.balancethickness.spcthickness(pos)=md.geometry.thickness(pos);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Balancethickness');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.BalancethicknessSolution.Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test116.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test116.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test116.py	(revision 21239)
@@ -0,0 +1,26 @@
+#Test Name: SquareShelfConstrainedBalThic2d
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+#Add boundary conditions on thickness on the border
+pos=numpy.nonzero(md.mesh.vertexonboundary)
+md.balancethickness.spcthickness[pos]=md.geometry.thickness[pos]
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Balancethickness')
+
+#Fields and tolerances to track changes
+field_names     =['Thickness']
+field_tolerances=[1e-13]
+field_values=[\
+	md.results.BalancethicknessSolution.Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test119.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test119.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test119.m	(revision 21239)
@@ -0,0 +1,31 @@
+%Test Name: SquareBamgMesh
+
+%Simple mesh
+md=bamg(model(),'domain','../Exp/Square.exp','hmax',100000.,'rand',false);
+x1=md.mesh.x;
+y1=md.mesh.y;
+
+%hVertices
+md=bamg(model(),'domain','../Exp/Square.exp','hmax',300000.,'hVertices',[10000. 100000. 400000. 100000.]','rand',false);
+x2=md.mesh.x;
+y2=md.mesh.y;
+
+%big mesh
+t0=clock;
+md=bamg(model(),'domain','../Exp/Square.exp','hmax',3000.,'rand',false);
+nbelements=md.mesh.numberofelements;
+if nbelements>267895-50 & nbelements<267895+50
+	nbewithinrange = 1.;
+else
+	nbewithinrange = 0.;
+end
+elapsedtime=etime(clock,t0);
+
+%Fields and tolerances to track changes
+field_names     ={'x1','y1','x2','y2','nbelements','elapsed time'};
+field_tolerances={2e-9,2e-9,1e-13,1e-13,1e-13,4.};
+field_values={...
+	x1, y1,...
+	x2, y2,...
+	nbewithinrange,elapsedtime...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test119.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test119.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test119.py	(revision 21239)
@@ -0,0 +1,35 @@
+#Test Name: SquareBamgMesh
+import numpy
+import time
+from model import *
+from bamg import *
+from MatlabFuncs import *
+
+#Simple mesh
+md=bamg(model(),'domain','../Exp/Square.exp','hmax',100000.,'rand',False)
+x1=md.mesh.x
+y1=md.mesh.y
+
+#hVertices
+md=bamg(model(),'domain','../Exp/Square.exp','hmax',300000.,'hVertices',numpy.array([10000.,100000.,400000.,100000.]).reshape(-1,1),'rand',False)
+x2=md.mesh.x
+y2=md.mesh.y
+
+#big mesh
+t0=time.time()
+md=bamg(model(),'domain','../Exp/Square.exp','hmax',3000.,'rand',False)
+nbelements=md.mesh.numberofelements
+elapsedtime=time.time()-t0
+if nbelements>267895-50 and nbelements<267895+50:
+	nbewithinrange = 1.
+else:
+	nbewithinrange = 0.
+
+#Fields and tolerances to track changes
+field_names     =['x1','y1','x2','y2','nbelements','elapsed time']
+field_tolerances=[2e-9,2e-9,1e-13,1e-13,1e-13,4.0]
+field_values=[\
+	x1, y1,\
+	x2, y2,\
+	nbewithinrange,elapsedtime,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test120.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test120.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test120.js	(revision 21239)
@@ -0,0 +1,31 @@
+//Test Name: SquareShelfConstrainedEnthalpyStea
+var md = new model();
+function zeros(...args) {
+	var array = [];
+	for (var i = 0; i < args[0]; ++i) {
+		array.push(args.length == 1 ? 0 : zeros(args.slice(1)));
+	}
+	return array;
+}
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+md.timestepping.time_step=0;
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.thermal.isenthalpy = 1;
+md.thermal.isdynamicbasalspc = 1;
+
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Thermal');
+
+//Fields and tolerances to track changes
+field_names     =['Enthalpy','Waterfraction','Temperature'];
+field_tolerances=[1e-13,3e-10,1e-13];
+field_values=[
+	(md.results.ThermalSolution[0].Enthalpy),
+	(md.results.ThermalSolution[0].Waterfraction),
+	(md.results.ThermalSolution[0].Temperature),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test120.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test120.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test120.m	(revision 21239)
@@ -0,0 +1,23 @@
+%Test Name: SquareShelfConstrainedEnthalpyStea
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=0;
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.thermal.isenthalpy = 1;
+md.thermal.isdynamicbasalspc = 1;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Enthalpy','Waterfraction','Temperature'};
+field_tolerances={1e-13,3e-10,1e-13};
+field_values={...
+	(md.results.ThermalSolution.Enthalpy),...
+	(md.results.ThermalSolution.Waterfraction),...
+	(md.results.ThermalSolution.Temperature),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test120.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test120.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test120.py	(revision 21239)
@@ -0,0 +1,32 @@
+#Test Name: SquareShelfConstrainedEnthalpyStea
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.timestepping.time_step=0
+md.initialization.waterfraction=numpy.zeros(md.mesh.numberofvertices)
+md.initialization.watercolumn=numpy.zeros(md.mesh.numberofvertices)
+md.thermal.isenthalpy = 1;
+md.thermal.isdynamicbasalspc = 1;
+
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Thermal')
+
+#Fields and tolerances to track changes
+field_names     =['Enthalpy','Waterfraction','Temperature']
+field_tolerances=[1e-13,2e-10,1e-13]
+field_values=[\
+	md.results.ThermalSolution.Enthalpy,\
+	md.results.ThermalSolution.Waterfraction,\
+	md.results.ThermalSolution.Temperature,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1201.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1201.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1201.m	(revision 21239)
@@ -0,0 +1,68 @@
+%Test Name: EISMINTMassConservation
+%This test is a test from the EISMINT for Ice shelves Vincent Rommelaere 1996.
+printingflag=false;
+
+results={};
+
+for stabilization=1:3;
+	%The goal is to test the masstransport model
+	md=bamg(model(),'domain','../Exp/SquareEISMINT.exp','hmax',3000.);
+	md=setmask(md,'all','');
+	md=parameterize(md,'../Par/SquareEISMINT.par');
+	md.smb.mass_balance(:)=0.;
+	md=setflowequation(md,'SSA','all');
+	md.cluster=generic('name',oshostname(),'np',8);
+
+	disp('      initial velocity');
+	md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+	md.initialization.vy=-400.*ones(md.mesh.numberofvertices,1);
+
+	%Stabilization
+	if stabilization==2,
+		md.masstransport.stabilization=0;
+	else
+		md.masstransport.stabilization=stabilization;
+	end
+
+	%spc thickness
+	pos=find(md.mesh.y>199999.9);
+	times=0:1:500;
+	md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices+1,length(times));
+	md.masstransport.spcthickness(end,:)=times;
+	md.masstransport.spcthickness(pos,:)=repmat(500.+100.*sin(2.*pi*times/200.),length(pos),1);
+	if stabilization==3,
+		pos=find(isnan(md.masstransport.spcthickness)); md.masstransport.spcthickness(pos)=500.; %No NaN for DG
+	end
+
+	%solve
+	md.transient.isstressbalance=0;
+	md.settings.output_frequency=500; %keep only last step
+	md.verbose=verbose();
+	md=solve(md,'Transient');
+	results{stabilization}=(md.results.TransientSolution(end).Thickness);
+end
+
+%plot results
+[elements,x,y,z,s,h1]=SectionValues(md,results{1},'../Exp/CrossLineEISMINT.exp',100.);
+[elements,x,y,z,s,h2]=SectionValues(md,results{2},'../Exp/CrossLineEISMINT.exp',100.);
+[elements,x,y,z,s,h3]=SectionValues(md,results{3},'../Exp/CrossLineEISMINT.exp',100.);
+[elements,x,y,z,s,hth]=SectionValues(md, 500+100*sin(2*pi/200*(500-md.mesh.y/400)),'../Exp/CrossLineEISMINT.exp',100.);
+plot(s,h1,'r',s,h2,'b',s,h3,'g',s,hth,'k')
+legend('Art. diff.','No Art. diff.','D.G.','Theoretical')
+if printingflag,
+	set(gcf,'Color','w')
+	export_fig([issmdir() '/website/doc_pdf/validation/Images/EISMINT/IceShelf/eismintmasscthickness.pdf']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={ ...
+	'ThicknessArtDiff','ThicknessNoArtDiff','ThicknessDG' ...
+};
+field_tolerances={...
+	1e-13, 1e-13, 1e-13...
+};
+field_values={
+	results{1}, ...
+	results{2}, ...
+	results{3}, ...
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1201.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1201.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1201.py	(revision 21239)
@@ -0,0 +1,78 @@
+#Test Name: EISMINTMassConservation
+import numpy
+from model import *
+from bamg import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+"""
+This test is a test from the EISMINT for Ice shelves Vincent Rommelaere 1996.
+"""
+
+printingflag=False
+
+results=[]
+
+for stabilization in xrange(1,4):
+	#The goal is to test the masstransport model
+	md=bamg(model(),'domain','../Exp/SquareEISMINT.exp','hmax',3000.)
+	md=setmask(md,'all','')
+	md=parameterize(md,'../Par/SquareEISMINT.py')
+	md.smb.mass_balance[:]=0.
+	md=setflowequation(md,'SSA','all')
+	md.cluster=generic('name',oshostname(),'np',8)
+
+	print "      initial velocity"
+	md.initialization.vx=numpy.zeros((md.mesh.numberofvertices,1))
+	md.initialization.vy=-400.*numpy.ones((md.mesh.numberofvertices,1))
+
+	#Stabilization
+	if stabilization==2:
+		md.masstransport.stabilization=0
+	else:
+		md.masstransport.stabilization=stabilization
+
+	#spc thickness
+	pos=numpy.nonzero(md.mesh.y>199999.9)[0]
+	times=numpy.arange(0,501)
+	md.masstransport.spcthickness=float('NaN')*numpy.ones((md.mesh.numberofvertices+1,numpy.size(times)))
+	md.masstransport.spcthickness[-1,:]=times
+	md.masstransport.spcthickness[pos,:]=numpy.tile(500.+100.*numpy.sin(2.*numpy.pi*times/200.),(numpy.size(pos),1))
+	if stabilization==3:
+		pos=numpy.nonzero(numpy.isnan(md.masstransport.spcthickness))
+		md.masstransport.spcthickness[pos]=500.    #No NaN for DG
+
+	#solve
+	md.transient.isstressbalance=False
+	md.settings.output_frequency=500    #keep only last step
+	md.verbose=verbose()
+	md=solve(md,'Transient')
+	results.append(md.results.TransientSolution[-1].Thickness)
+
+#plot results
+#[elements,x,y,z,s,h1]=SectionValues(md,results[0],'../Exp/CrossLineEISMINT.exp',100.);
+#[elements,x,y,z,s,h2]=SectionValues(md,results[1],'../Exp/CrossLineEISMINT.exp',100.);
+#[elements,x,y,z,s,h3]=SectionValues(md,results[2],'../Exp/CrossLineEISMINT.exp',100.);
+#[elements,x,y,z,s,hth]=SectionValues(md, 500+100*sin(2*pi/200*(500-md.mesh.y/400)),'../Exp/CrossLineEISMINT.exp',100.);
+#plot(s,h1,'r',s,h2,'b',s,h3,'g',s,hth,'k')
+#legend('Art. diff.','No Art. diff.','D.G.','Theoretical')
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	export_fig([issmdir() '/website/doc_pdf/validation/Images/EISMINT/IceShelf/eismintmasscthickness.pdf']);
+
+#Fields and tolerances to track changes
+field_names     =[ \
+	'ThicknessArtDiff','ThicknessNoArtDiff','ThicknessDG' \
+]
+field_tolerances=[\
+	1e-13, 1e-13, 1e-13\
+]
+field_values=[
+	results[0], \
+	results[1], \
+	results[2], \
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1202.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1202.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1202.m	(revision 21239)
@@ -0,0 +1,42 @@
+%Test Name: EISMINTStress1
+%Test on the stressbalance model and the masstransport in 2d.
+printingflag=false;
+
+%tests 3 and 4: using Glen's flow law
+md=model();
+md=triangle(md,'../Exp/SquareEISMINT.exp',3550.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareEISMINT.par');
+md=setflowequation(md,'SSA','all'); %SSA's model and 2d
+
+%Compute solution for SSA's model 
+md.cluster=generic('name',oshostname(),'np',8);
+md=solve(md,'Stressbalance');
+
+%plot results
+vx=(md.results.StressbalanceSolution.Vx);
+vy=(md.results.StressbalanceSolution.Vy);
+
+plotmodel(md,'data',vx,'contourlevels',{0,20,40,60,60,100,120,140,160,180,-20,-40,-60,-80,-100,-120,-140,-160,-180}, ...
+	'contourcolor','k')
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('eismintdiag1vx','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+	system(['mv eismintdiag1vx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+end
+
+plotmodel(md,'data',vy,'contourlevels',{-100,-200,-300,-400,-500,-600,-700,-800,-900,-1000},...
+	'contourcolor','k')
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('eismintdiag1vy','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+	system(['mv eismintdiag1vy.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	vx, ...
+	vy, ...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1202.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1202.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1202.py	(revision 21239)
@@ -0,0 +1,54 @@
+#Test Name: EISMINTStress1
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+"""
+Test on the stressbalance model and the masstransport in 2d
+"""
+
+printingflag=False
+
+#tests 3 and 4: using Glen's flow law
+md=model()
+md=triangle(md,'../Exp/SquareEISMINT.exp',3550.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareEISMINT.py')
+md=setflowequation(md,'SSA','all')    #SSA's model and 2d
+
+#Compute solution for SSA's model 
+md.cluster=generic('name',oshostname(),'np',8)
+md=solve(md,'Stressbalance')
+
+#plot results
+vx=md.results.StressbalanceSolution.Vx
+vy=md.results.StressbalanceSolution.Vy
+
+#plotmodel(md,'data',vx,'contourlevels',{0,20,40,60,60,100,120,140,160,180,-20,-40,-60,-80,-100,-120,-140,-160,-180}, ...
+#	'contourcolor','k')
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('eismintdiag1vx','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+#	system(['mv eismintdiag1vx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+
+#plotmodel(md,'data',vy,'contourlevels',{-100,-200,-300,-400,-500,-600,-700,-800,-900,-1000},...
+#	'contourcolor','k')
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('eismintdiag1vy','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+#	system(['mv eismintdiag1vy.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy']
+field_tolerances=[1e-13,1e-13]
+field_values=[\
+	vx, \
+	vy, \
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1203.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1203.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1203.m	(revision 21239)
@@ -0,0 +1,45 @@
+%Test Name: EISMINTStress2
+%Test on the stressbalance model and the masstransport in 2d
+printingflag=false;
+
+%test 5 and 6: 
+md=model();
+md=triangle(md,'../Exp/SquareEISMINT.exp',5100.); %test3
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareEISMINT.par');
+md=setflowequation(md,'SSA','all'); %SSA's model and 2d
+
+%Impose a non zero velocity on the upper boundary condition (y=max(y))
+pos=find(md.mesh.y==max(md.mesh.y));
+md.stressbalance.spcvy(pos)=400.*(((md.mesh.x(pos)-100000.)/25000.).^2-ones(size(pos,1),1)).*heaviside((1.+eps)*ones(size(pos,1),1)-((md.mesh.x(pos)-100000.)/25000.).^2);
+
+%Compute solution for SSA's model 
+md.cluster=generic('name',oshostname(),'np',8);
+md=solve(md,'Stressbalance');
+
+vx=(md.results.StressbalanceSolution.Vx);
+vy=(md.results.StressbalanceSolution.Vy);
+
+%plot results
+plotmodel(md,'data',vx,'contourlevels',{0,20,40,60,80,100,-20,-40,-60,-80,-100},...
+	'contourcolor','k')
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('eismintdiag2vx','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+	system(['mv eismintdiag2vx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+end
+plotmodel(md,'data',vy,'contourlevels',{-100,-200,-300,-400,-500,-600,-700,-800,-900,-1000},...
+	'contourcolor','k')
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('eismintdiag2vy','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+	system(['mv eismintdiag2vy.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	vx, ...
+	vy, ...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1203.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1203.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1203.py	(revision 21239)
@@ -0,0 +1,58 @@
+#Test Name: EISMINTStress2
+import numpy
+import sys
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+"""
+Test on the stressbalance model and the masstransport in 2d
+"""
+
+printingflag=False
+
+#test 5 and 6: 
+md=model()
+md=triangle(md,'../Exp/SquareEISMINT.exp',5100.)    #test3
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareEISMINT.py')
+md=setflowequation(md,'SSA','all')    #SSA's model and 2d
+
+#Impose a non zero velocity on the upper boundary condition (y=max(y))
+pos=numpy.nonzero(md.mesh.y==numpy.max(md.mesh.y))
+md.stressbalance.spcvy[pos]=400.*(((md.mesh.x[pos].reshape(-1,1)-100000.)/25000.)**2-numpy.ones((numpy.size(pos),1)))*heaviside((1.+sys.float_info.epsilon)*numpy.ones((numpy.size(pos),1))-((md.mesh.x[pos].reshape(-1,1)-100000.)/25000.)**2)
+
+#Compute solution for SSA's model 
+md.cluster=generic('name',oshostname(),'np',8)
+md=solve(md,'Stressbalance')
+
+vx=md.results.StressbalanceSolution.Vx
+vy=md.results.StressbalanceSolution.Vy
+
+#plot results
+#plotmodel(md,'data',vx,'contourlevels',{0,20,40,60,80,100,-20,-40,-60,-80,-100},...
+#	'contourcolor','k')
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('eismintdiag2vx','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+#	system(['mv eismintdiag2vx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+#plotmodel(md,'data',vy,'contourlevels',{-100,-200,-300,-400,-500,-600,-700,-800,-900,-1000},...
+#	'contourcolor','k')
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('eismintdiag2vy','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+#	system(['mv eismintdiag2vy.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy']
+field_tolerances=[1e-13,1e-13]
+field_values=[\
+	vx, \
+	vy, \
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1204.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1204.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1204.m	(revision 21239)
@@ -0,0 +1,57 @@
+%Test Name: EISMINTTran2
+%Test on the stressbalance model and the masstransport in 2d
+printingflag=false;
+
+%tests 3 and 4: using Glen's flow law
+md=model();
+md=triangle(md,'../Exp/SquareEISMINT.exp',3550.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareEISMINT.par');
+md=setflowequation(md,'SSA','all'); %SSA's model and 2d
+
+%Impose a non zero velocity on the upper boundary condition (y=max(y))
+pos=find(md.mesh.y==max(md.mesh.y));
+md.stressbalance.spcvy(pos)=400.*(((md.mesh.x(pos)-100000.)/25000.).^2-ones(size(pos,1),1)).*heaviside((1.+eps)*ones(size(pos,1),1)-((md.mesh.x(pos)-100000.)/25000.).^2);
+
+%Compute solution for SSA's model 
+md.cluster=generic('name',oshostname(),'np',8);
+md=solve(md,'Stressbalance');
+
+%plot results
+md.initialization.vx=(md.results.StressbalanceSolution.Vx);
+md.initialization.vy=(md.results.StressbalanceSolution.Vy);
+
+md.timestepping.time_step=1.;
+md.timestepping.final_time=5000.;
+md.masstransport.stabilization=1;
+md=solve(md,'Transient');
+
+plotmodel(md,'data',(md.results.TransientSolution(end).Vx))
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('eisminttrans2vx','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+	system(['mv eisminttrans2vx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+end
+
+plotmodel(md,'data',(md.results.TransientSolution(end).Vy))
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('eisminttrans2vy','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+	system(['mv eisminttrans2vy.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+end
+
+plotmodel(md,'data',(md.results.TransientSolution(end).Thickness))
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('eisminttrans2thickness','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+	system(['mv eisminttrans2thickness.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Thickness'};
+field_tolerances={1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(end).Vx), ...
+	(md.results.TransientSolution(end).Vy), ...
+	(md.results.TransientSolution(end).Thickness), ...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1204.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1204.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1204.py	(revision 21239)
@@ -0,0 +1,70 @@
+#Test Name: EISMINTTran2
+import numpy
+import sys
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+"""
+Test on the stressbalance model and the masstransport in 2d
+"""
+
+printingflag=False
+
+#tests 3 and 4: using Glen's flow law
+md=model()
+md=triangle(md,'../Exp/SquareEISMINT.exp',3550.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareEISMINT.py')
+md=setflowequation(md,'SSA','all')    #SSA's model and 2d
+
+#Impose a non zero velocity on the upper boundary condition (y=max(y))
+pos=numpy.nonzero(md.mesh.y==max(md.mesh.y))
+md.stressbalance.spcvy[pos]=400.*(((md.mesh.x[pos].reshape(-1,1)-100000.)/25000.)**2-numpy.ones((numpy.size(pos),1)))*heaviside((1.+sys.float_info.epsilon)*numpy.ones((numpy.size(pos),1))-((md.mesh.x[pos].reshape(-1,1)-100000.)/25000.)**2)
+
+#Compute solution for SSA's model 
+md.cluster=generic('name',oshostname(),'np',8)
+md=solve(md,'Stressbalance')
+
+#plot results
+md.initialization.vx=md.results.StressbalanceSolution.Vx
+md.initialization.vy=md.results.StressbalanceSolution.Vy
+
+md.timestepping.time_step=1.
+md.timestepping.final_time=5000.
+md.masstransport.stabilization=1
+md=solve(md,'Transient')
+
+#plotmodel(md,'data',(md.results.TransientSolution(end).Vx))
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('eisminttrans2vx','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+#	system(['mv eisminttrans2vx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+
+#plotmodel(md,'data',(md.results.TransientSolution(end).Vy))
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('eisminttrans2vy','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+#	system(['mv eisminttrans2vy.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+
+#plotmodel(md,'data',(md.results.TransientSolution(end).Thickness))
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('eisminttrans2thickness','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+#	system(['mv eisminttrans2thickness.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Thickness']
+field_tolerances=[1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[-1].Vx, \
+	md.results.TransientSolution[-1].Vy, \
+	md.results.TransientSolution[-1].Thickness, \
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1205.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1205.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1205.m	(revision 21239)
@@ -0,0 +1,99 @@
+%Test Name: EISMINTRoundIceSheetStaticSIA
+%The aim of this program is to compare a model with an analytical solution given in SSA EISMINT : Lessons in Ice-Sheet Modeling.
+printingflag=false;
+
+numlayers=10;
+resolution=30000.;
+
+%To begin with the numerical model
+md=model();
+md=roundmesh(md,750000.,resolution);
+md=setmask(md,'',''); %We can not test iceshelves nor ice rises with this analytical solution
+md=parameterize(md,'../Par/RoundSheetStaticEISMINT.par');
+
+%Calculation of the analytical 2d velocity field
+constant=0.3;
+vx_obs=constant/2.*md.mesh.x.*(md.geometry.thickness).^-1;
+vy_obs=constant/2.*md.mesh.y.*(md.geometry.thickness).^-1;
+vel_obs=sqrt((md.inversion.vx_obs).^2+(md.inversion.vy_obs).^2);
+
+%We extrude the model to have a 3d model
+md=extrude(md,numlayers,1.);
+md=setflowequation(md,'SIA','all');
+
+%Spc the nodes on the bed
+pos=find(md.mesh.vertexonbase);
+md.stressbalance.spcvx(pos)=0.;
+md.stressbalance.spcvy(pos)=0.;
+md.stressbalance.spcvz(pos)=0.;
+
+%Now we can solve the problem 
+md.cluster=generic('name',oshostname(),'np',8);
+md=solve(md,'Stressbalance');
+
+%Calculate the depth averaged velocity field (2d):
+vx=(md.results.StressbalanceSolution.Vx);
+vy=(md.results.StressbalanceSolution.Vy);
+vel=zeros(md.mesh.numberofvertices2d,1);
+
+for i=1:md.mesh.numberofvertices2d
+	node_vel=0.;
+	for j=1:md.mesh.numberoflayers-1
+		node_vel=node_vel+1./(2.*(md.mesh.numberoflayers-1))*...
+			(sqrt(vx(i+j*md.mesh.numberofvertices2d,1).^2+vy(i+j*md.mesh.numberofvertices2d,1).^2)+...
+			sqrt(vx(i+(j-1)*md.mesh.numberofvertices2d,1).^2+vy(i+(j-1)*md.mesh.numberofvertices2d,1).^2));
+	end
+	vel(i,1)=node_vel;
+end
+
+%Plot of the velocity from the exact and calculated solutions
+figure(1)
+set(gcf,'Position',[1 1 1580 1150])
+subplot(2,2,1)
+p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+vel,'FaceColor','interp','EdgeColor','none');
+title('Modelled velocity','FontSize',14,'FontWeight','bold')
+colorbar; 
+caxis([0 200]);
+   
+subplot(2,2,2)
+p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+vel_obs,'FaceColor','interp','EdgeColor','none');
+title('Analytical velocity','FontSize',14,'FontWeight','bold')
+colorbar; 
+caxis([0 200]);
+
+subplot(2,2,3)
+hold on;
+plot(sqrt((md.mesh.x(1:md.mesh.numberofvertices2d)).^2+(md.mesh.y(1:md.mesh.numberofvertices2d)).^2),vel,'r.');
+plot(sqrt((md.mesh.x2d).^2+(md.mesh.y2d).^2),vel_obs,'b.');
+title('Analytical vs calculated velocity','FontSize',14,'FontWeight','bold');
+xlabel('distance to the center of the icesheet [m]','FontSize',14,'FontWeight','bold');
+ylabel('velocity [m/yr]','FontSize',14,'FontWeight','bold');
+legend('calculated velocity','exact velocity');
+axis([0 750000 0 200]);
+hold off;
+
+subplot(2,2,4)
+p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+abs(vel-vel_obs)./vel_obs*100,'FaceColor','interp','EdgeColor','none');
+title('Relative misfit [%]','FontSize',14,'FontWeight','bold')
+colorbar;
+caxis([0 100]);
+
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('SIAstatic','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+	system(['mv SIAstatic.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceSheet']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={ ...
+	'Vx','Vy','Vel', ...
+};
+field_tolerances={ ...
+	1e-13,1e-13,1e-13, ...
+};
+field_values={ ...
+	vx,vy,vel, ...
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1205.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1205.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1205.py	(revision 21239)
@@ -0,0 +1,109 @@
+#Test Name: EISMINTRoundIceSheetStaticSIA
+import numpy
+from model import *
+from roundmesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+"""
+The aim of this program is to compare a model with an analytical solution given in SSA EISMINT : Lessons in Ice-Sheet Modeling.
+"""
+
+printingflag=False
+
+numlayers=10
+resolution=30000.
+
+#To begin with the numerical model
+md=model()
+md=roundmesh(md,750000.,resolution)
+md=setmask(md,'','')    #We can not test iceshelves nor ice rises with this analytical solution
+md=parameterize(md,'../Par/RoundSheetStaticEISMINT.py')
+
+#Calculation of the analytical 2d velocity field
+constant=0.3
+vx_obs=constant/2.*md.mesh.x*(md.geometry.thickness)**-1
+vy_obs=constant/2.*md.mesh.y*(md.geometry.thickness)**-1
+vel_obs=numpy.sqrt((md.inversion.vx_obs)**2+(md.inversion.vy_obs)**2)
+
+#We extrude the model to have a 3d model
+md.extrude(numlayers,1.);
+md=setflowequation(md,'SIA','all')
+
+#Spc the nodes on the bed
+pos=numpy.nonzero(md.mesh.vertexonbase)
+md.stressbalance.spcvx[pos]=0.
+md.stressbalance.spcvy[pos]=0.
+md.stressbalance.spcvz[pos]=0.
+
+#Now we can solve the problem 
+md.cluster=generic('name',oshostname(),'np',8)
+md=solve(md,'Stressbalance')
+
+#Calculate the depth averaged velocity field (2d):
+vx=md.results.StressbalanceSolution.Vx
+vy=md.results.StressbalanceSolution.Vy
+vel=numpy.zeros((md.mesh.numberofvertices2d,1))
+
+for i in xrange(0,md.mesh.numberofvertices2d):
+	node_vel=0.
+	for j in xrange(0,md.mesh.numberoflayers-1):
+		node_vel=node_vel+1./(2.*(md.mesh.numberoflayers-1))*\
+			(numpy.sqrt(vx[i+(j+1)*md.mesh.numberofvertices2d,0]**2+vy[i+(j+1)*md.mesh.numberofvertices2d,0]**2)+\
+			numpy.sqrt(vx[i+j*md.mesh.numberofvertices2d,0]**2+vy[i+j*md.mesh.numberofvertices2d,0]**2))
+	vel[i,0]=node_vel
+
+#Plot of the velocity from the exact and calculated solutions
+#figure(1)
+#set(gcf,'Position',[1 1 1580 1150])
+#subplot(2,2,1)
+#p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+#vel,'FaceColor','interp','EdgeColor','none');
+#title('Modelled velocity','FontSize',14,'FontWeight','bold')
+#colorbar; 
+#caxis([0 200]);
+   
+#subplot(2,2,2)
+#p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+#vel_obs,'FaceColor','interp','EdgeColor','none');
+#title('Analytical velocity','FontSize',14,'FontWeight','bold')
+#colorbar; 
+#caxis([0 200]);
+
+#subplot(2,2,3)
+#hold on;
+#plot(sqrt((md.mesh.x(1:md.mesh.numberofvertices2d)).^2+(md.mesh.y(1:md.mesh.numberofvertices2d)).^2),vel,'r.');
+#plot(sqrt((md.mesh.x2d).^2+(md.mesh.y2d).^2),vel_obs,'b.');
+#title('Analytical vs calculated velocity','FontSize',14,'FontWeight','bold');
+#xlabel('distance to the center of the icesheet [m]','FontSize',14,'FontWeight','bold');
+#ylabel('velocity [m/yr]','FontSize',14,'FontWeight','bold');
+#legend('calculated velocity','exact velocity');
+#axis([0 750000 0 200]);
+#hold off;
+
+#subplot(2,2,4)
+#p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+#abs(vel-vel_obs)./vel_obs*100,'FaceColor','interp','EdgeColor','none');
+#title('Relative misfit [%]','FontSize',14,'FontWeight','bold')
+#colorbar;
+#caxis([0 100]);
+
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('SIAstatic','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+#	system(['mv SIAstatic.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceSheet']);
+
+#Fields and tolerances to track changes
+field_names     =[ \
+	'Vx','Vy','Vel', \
+]
+field_tolerances=[ \
+	1e-13,1e-13,1e-13, \
+]
+field_values=[ \
+	vx,vy,vel, \
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1206.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1206.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1206.m	(revision 21239)
@@ -0,0 +1,98 @@
+%Test Name: EISMINTRoundIceSheetStaticHO
+%The aim of this program is to compare a model with an analytical solution given in SSA EISMINT : Lessons in Ice-Sheet Modeling.
+printingflag=false;
+
+numlayers=10;
+resolution=30000.;
+
+%To begin with the numerical model
+md=model();
+md=roundmesh(md,750000.,resolution);
+md=setmask(md,'',''); %We can not test iceshelves nor ice rises with this analytical solution
+md=parameterize(md,'../Par/RoundSheetStaticEISMINT.par');
+
+%Calculation of the analytical 2d velocity field
+constant=0.3;
+vx_obs=constant/2.*md.mesh.x.*(md.geometry.thickness).^-1;
+vy_obs=constant/2.*md.mesh.y.*(md.geometry.thickness).^-1;
+vel_obs=sqrt((md.inversion.vx_obs).^2+(md.inversion.vy_obs).^2);
+
+%We extrude the model to have a 3d model
+md=extrude(md,numlayers,1.);
+md=setflowequation(md,'HO','all');
+
+%Spc the nodes on the bed
+pos=find(md.mesh.vertexonbase);
+md.stressbalance.spcvx(pos)=0.;
+md.stressbalance.spcvy(pos)=0.;
+md.stressbalance.spcvz(pos)=0.;
+
+%Now we can solve the problem 
+md.cluster=generic('name',oshostname(),'np',8);
+md=solve(md,'Stressbalance');
+
+%Calculate the depth averaged velocity field (2d):
+vx=(md.results.StressbalanceSolution.Vx);
+vy=(md.results.StressbalanceSolution.Vy);
+vel=zeros(md.mesh.numberofvertices2d,1);
+
+for i=1:md.mesh.numberofvertices2d
+	node_vel=0.;
+	for j=1:md.mesh.numberoflayers-1
+		node_vel=node_vel+1./(2.*(md.mesh.numberoflayers-1))*...
+			(sqrt(vx(i+j*md.mesh.numberofvertices2d,1).^2+vy(i+j*md.mesh.numberofvertices2d,1).^2)+...
+			sqrt(vx(i+(j-1)*md.mesh.numberofvertices2d,1).^2+vy(i+(j-1)*md.mesh.numberofvertices2d,1).^2));
+	end
+	vel(i,1)=node_vel;
+end
+
+%Plot of the velocity from the exact and calculated solutions
+figure(1)
+subplot(2,2,1)
+p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+vel,'FaceColor','interp','EdgeColor','none');
+title('Modelled velocity','FontSize',14,'FontWeight','bold')
+colorbar; 
+caxis([0 200]);
+   
+subplot(2,2,2)
+p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+vel_obs,'FaceColor','interp','EdgeColor','none');
+title('Analytical velocity','FontSize',14,'FontWeight','bold')
+colorbar; 
+caxis([0 200]);
+
+subplot(2,2,3)
+hold on;
+plot(sqrt((md.mesh.x(1:md.mesh.numberofvertices2d)).^2+(md.mesh.y(1:md.mesh.numberofvertices2d)).^2),vel,'r.');
+plot(sqrt((md.mesh.x2d).^2+(md.mesh.y2d).^2),vel_obs,'b.');
+title('Analytical vs calculated velocity','FontSize',14,'FontWeight','bold');
+xlabel('distance to the center of the icesheet [m]','FontSize',14,'FontWeight','bold');
+ylabel('velocity [m/yr]','FontSize',14,'FontWeight','bold');
+legend('calculated velocity','exact velocity');
+axis([0 750000 0 200]);
+hold off;
+
+subplot(2,2,4)
+p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+abs(vel-vel_obs)./vel_obs*100,'FaceColor','interp','EdgeColor','none');
+title('Relative misfit [%]','FontSize',14,'FontWeight','bold')
+colorbar;
+caxis([0 100]);
+
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('HOstatic','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+	system(['mv HOstatic.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceSheet']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={ ...
+	'Vx','Vy','Vel', ...
+};
+field_tolerances={ ...
+	1e-12,1e-12,1e-12, ...
+};
+field_values={ ...
+	vx,vy,vel, ...
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1206.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1206.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1206.py	(revision 21239)
@@ -0,0 +1,108 @@
+#Test Name: EISMINTRoundIceSheetStaticHO
+import numpy
+from model import *
+from roundmesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+"""
+The aim of this program is to compare a model with an analytical solution given in SSA EISMINT : Lessons in Ice-Sheet Modeling.
+"""
+
+printingflag=False
+
+numlayers=10
+resolution=30000.
+
+#To begin with the numerical model
+md=model()
+md=roundmesh(md,750000.,resolution)
+md=setmask(md,'','')    #We can not test iceshelves nor ice rises with this analytical solution
+md=parameterize(md,'../Par/RoundSheetStaticEISMINT.py')
+
+#Calculation of the analytical 2d velocity field
+constant=0.3
+vx_obs=constant/2.*md.mesh.x.reshape(-1,1)*(md.geometry.thickness)**-1
+vy_obs=constant/2.*md.mesh.y.reshape(-1,1)*(md.geometry.thickness)**-1
+vel_obs=numpy.sqrt((md.inversion.vx_obs)**2+(md.inversion.vy_obs)**2)
+
+#We extrude the model to have a 3d model
+md.extrude(numlayers,1.)
+md=setflowequation(md,'HO','all')
+
+#Spc the nodes on the bed
+pos=numpy.nonzero(md.mesh.vertexonbase)
+md.stressbalance.spcvx[pos]=0.
+md.stressbalance.spcvy[pos]=0.
+md.stressbalance.spcvz[pos]=0.
+
+#Now we can solve the problem 
+md.cluster=generic('name',oshostname(),'np',8)
+md=solve(md,'Stressbalance')
+
+#Calculate the depth averaged velocity field (2d):
+vx=md.results.StressbalanceSolution.Vx
+vy=md.results.StressbalanceSolution.Vy
+vel=numpy.zeros((md.mesh.numberofvertices2d,1))
+
+for i in xrange(0,md.mesh.numberofvertices2d):
+	node_vel=0.
+	for j in xrange(0,md.mesh.numberoflayers-1):
+		node_vel=node_vel+1./(2.*(md.mesh.numberoflayers-1))*\
+			(numpy.sqrt(vx[i+(j+1)*md.mesh.numberofvertices2d,0]**2+vy[i+(j+1)*md.mesh.numberofvertices2d,0]**2)+\
+			numpy.sqrt(vx[i+j*md.mesh.numberofvertices2d,0]**2+vy[i+j*md.mesh.numberofvertices2d,0]**2))
+	vel[i,0]=node_vel
+
+#Plot of the velocity from the exact and calculated solutions
+#figure(1)
+#subplot(2,2,1)
+#p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+#vel,'FaceColor','interp','EdgeColor','none');
+#title('Modelled velocity','FontSize',14,'FontWeight','bold')
+#colorbar; 
+#caxis([0 200]);
+   
+#subplot(2,2,2)
+#p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+#vel_obs,'FaceColor','interp','EdgeColor','none');
+#title('Analytical velocity','FontSize',14,'FontWeight','bold')
+#colorbar; 
+#caxis([0 200]);
+
+#subplot(2,2,3)
+#hold on;
+#plot(sqrt((md.mesh.x(1:md.mesh.numberofvertices2d)).^2+(md.mesh.y(1:md.mesh.numberofvertices2d)).^2),vel,'r.');
+#plot(sqrt((md.mesh.x2d).^2+(md.mesh.y2d).^2),vel_obs,'b.');
+#title('Analytical vs calculated velocity','FontSize',14,'FontWeight','bold');
+#xlabel('distance to the center of the icesheet [m]','FontSize',14,'FontWeight','bold');
+#ylabel('velocity [m/yr]','FontSize',14,'FontWeight','bold');
+#legend('calculated velocity','exact velocity');
+#axis([0 750000 0 200]);
+#hold off;
+
+#subplot(2,2,4)
+#p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+#abs(vel-vel_obs)./vel_obs*100,'FaceColor','interp','EdgeColor','none');
+#title('Relative misfit [%]','FontSize',14,'FontWeight','bold')
+#colorbar;
+#caxis([0 100]);
+
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('HOstatic','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+#	system(['mv HOstatic.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceSheet']);
+
+#Fields and tolerances to track changes
+field_names     =[ \
+	'Vx','Vy','Vel', \
+]
+field_tolerances=[ \
+	1e-12,1e-12,1e-12, \
+]
+field_values=[ \
+	vx,vy,vel, \
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1207.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1207.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1207.m	(revision 21239)
@@ -0,0 +1,98 @@
+%Test Name: EISMINTRoundIceSheetStaticFS
+%The aim of this program is to compare a model with an analytical solution given in SSA EISMINT : Lessons in Ice-Sheet Modeling.
+printingflag=false;
+
+numlayers=10;
+resolution=30000.;
+
+%To begin with the numerical model
+md=model();
+md=roundmesh(md,750000.,resolution);
+md=setmask(md,'',''); %We can not test iceshelves nor ice rises with this analytical solution
+md=parameterize(md,'../Par/RoundSheetStaticEISMINT.par');
+
+%Calculation of the analytical 2d velocity field
+constant=0.3;
+vx_obs=constant/2.*md.mesh.x.*(md.geometry.thickness).^-1;
+vy_obs=constant/2.*md.mesh.y.*(md.geometry.thickness).^-1;
+vel_obs=sqrt((md.inversion.vx_obs).^2+(md.inversion.vy_obs).^2);
+
+%We extrude the model to have a 3d model
+md=extrude(md,numlayers,1.);
+md=setflowequation(md,'FS','all');
+
+%Spc the nodes on the bed
+pos=find(md.mesh.vertexonbase);
+md.stressbalance.spcvx(pos)=0.;
+md.stressbalance.spcvy(pos)=0.;
+md.stressbalance.spcvz(pos)=0.;
+
+%Now we can solve the problem 
+md.cluster=generic('name',oshostname(),'np',8);
+md=solve(md,'Stressbalance');
+
+%Calculate the depth averaged velocity field (2d):
+vx=(md.results.StressbalanceSolution.Vx);
+vy=(md.results.StressbalanceSolution.Vy);
+vel=zeros(md.mesh.numberofvertices2d,1);
+
+for i=1:md.mesh.numberofvertices2d
+	node_vel=0.;
+	for j=1:md.mesh.numberoflayers-1
+		node_vel=node_vel+1./(2.*(md.mesh.numberoflayers-1))*...
+			(sqrt(vx(i+j*md.mesh.numberofvertices2d,1).^2+vy(i+j*md.mesh.numberofvertices2d,1).^2)+...
+			sqrt(vx(i+(j-1)*md.mesh.numberofvertices2d,1).^2+vy(i+(j-1)*md.mesh.numberofvertices2d,1).^2));
+	end
+	vel(i,1)=node_vel;
+end
+
+%Plot of the velocity from the exact and calculated solutions
+figure(1)
+subplot(2,2,1)
+p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+vel,'FaceColor','interp','EdgeColor','none');
+title('Modelled velocity','FontSize',14,'FontWeight','bold')
+colorbar; 
+caxis([0 200]);
+   
+subplot(2,2,2)
+p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+vel_obs,'FaceColor','interp','EdgeColor','none');
+title('Analytical velocity','FontSize',14,'FontWeight','bold')
+colorbar; 
+caxis([0 200]);
+
+subplot(2,2,3)
+hold on;
+plot(sqrt((md.mesh.x(1:md.mesh.numberofvertices2d)).^2+(md.mesh.y(1:md.mesh.numberofvertices2d)).^2),vel,'r.');
+plot(sqrt((md.mesh.x2d).^2+(md.mesh.y2d).^2),vel_obs,'b.');
+title('Analytical vs calculated velocity','FontSize',14,'FontWeight','bold');
+xlabel('distance to the center of the icesheet [m]','FontSize',14,'FontWeight','bold');
+ylabel('velocity [m/yr]','FontSize',14,'FontWeight','bold');
+legend('calculated velocity','exact velocity');
+axis([0 750000 0 200]);
+hold off;
+
+subplot(2,2,4)
+p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+abs(vel-vel_obs)./vel_obs*100,'FaceColor','interp','EdgeColor','none');
+title('Relative misfit [%]','FontSize',14,'FontWeight','bold')
+colorbar;
+caxis([0 100]);
+
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('FSstatic','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+	system(['mv FSstatic.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceSheet']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={ ...
+	'Vx','Vy','Vel', ...
+};
+field_tolerances={ ...
+	1e-12,1e-12,1e-12, ...
+};
+field_values={ ...
+	vx,vy,vel, ...
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1207.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1207.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1207.py	(revision 21239)
@@ -0,0 +1,108 @@
+#Test Name: EISMINTRoundIceSheetStaticFS
+import numpy
+from model import *
+from roundmesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+"""
+The aim of this program is to compare a model with an analytical solution given in SSA EISMINT : Lessons in Ice-Sheet Modeling.
+"""
+
+printingflag=False
+
+numlayers=10
+resolution=30000.
+
+#To begin with the numerical model
+md=model()
+md=roundmesh(md,750000.,resolution)
+md=setmask(md,'','')    #We can not test iceshelves nor ice rises with this analytical solution
+md=parameterize(md,'../Par/RoundSheetStaticEISMINT.py')
+
+#Calculation of the analytical 2d velocity field
+constant=0.3
+vx_obs=constant/2.*md.mesh.x.reshape(-1,1)*(md.geometry.thickness)**-1
+vy_obs=constant/2.*md.mesh.y.reshape(-1,1)*(md.geometry.thickness)**-1
+vel_obs=numpy.sqrt((md.inversion.vx_obs)**2+(md.inversion.vy_obs)**2)
+
+#We extrude the model to have a 3d model
+md.extrude(numlayers,1.)
+md=setflowequation(md,'FS','all')
+
+#Spc the nodes on the bed
+pos=numpy.nonzero(md.mesh.vertexonbase)
+md.stressbalance.spcvx[pos]=0.
+md.stressbalance.spcvy[pos]=0.
+md.stressbalance.spcvz[pos]=0.
+
+#Now we can solve the problem 
+md.cluster=generic('name',oshostname(),'np',8)
+md=solve(md,'Stressbalance')
+
+#Calculate the depth averaged velocity field (2d):
+vx=md.results.StressbalanceSolution.Vx
+vy=md.results.StressbalanceSolution.Vy
+vel=numpy.zeros((md.mesh.numberofvertices2d,1))
+
+for i in xrange(0,md.mesh.numberofvertices2d):
+	node_vel=0.
+	for j in xrange(0,md.mesh.numberoflayers-1):
+		node_vel=node_vel+1./(2.*(md.mesh.numberoflayers-1))*\
+			(numpy.sqrt(vx[i+(j+1)*md.mesh.numberofvertices2d,0]**2+vy[i+(j+1)*md.mesh.numberofvertices2d,0]**2)+\
+			numpy.sqrt(vx[i+j*md.mesh.numberofvertices2d,0]**2+vy[i+j*md.mesh.numberofvertices2d,0]**2))
+	vel[i,0]=node_vel
+
+#Plot of the velocity from the exact and calculated solutions
+#figure(1)
+#subplot(2,2,1)
+#p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+#vel,'FaceColor','interp','EdgeColor','none');
+#title('Modelled velocity','FontSize',14,'FontWeight','bold')
+#colorbar; 
+#caxis([0 200]);
+   
+#subplot(2,2,2)
+#p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+#vel_obs,'FaceColor','interp','EdgeColor','none');
+#title('Analytical velocity','FontSize',14,'FontWeight','bold')
+#colorbar; 
+#caxis([0 200]);
+
+#subplot(2,2,3)
+#hold on;
+#plot(sqrt((md.mesh.x(1:md.mesh.numberofvertices2d)).^2+(md.mesh.y(1:md.mesh.numberofvertices2d)).^2),vel,'r.');
+#plot(sqrt((md.mesh.x2d).^2+(md.mesh.y2d).^2),vel_obs,'b.');
+#title('Analytical vs calculated velocity','FontSize',14,'FontWeight','bold');
+#xlabel('distance to the center of the icesheet [m]','FontSize',14,'FontWeight','bold');
+#ylabel('velocity [m/yr]','FontSize',14,'FontWeight','bold');
+#legend('calculated velocity','exact velocity');
+#axis([0 750000 0 200]);
+#hold off;
+
+#subplot(2,2,4)
+#p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+#abs(vel-vel_obs)./vel_obs*100,'FaceColor','interp','EdgeColor','none');
+#title('Relative misfit [%]','FontSize',14,'FontWeight','bold')
+#colorbar;
+#caxis([0 100]);
+
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('FSstatic','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+#	system(['mv FSstatic.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceSheet']);
+
+#Fields and tolerances to track changes
+field_names     =[ \
+	'Vx','Vy','Vel', \
+]
+field_tolerances=[ \
+	1e-12,1e-12,1e-12, \
+]
+field_values=[ \
+	vx,vy,vel, \
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1208.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1208.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1208.m	(revision 21239)
@@ -0,0 +1,46 @@
+%Test Name: EISMINTA
+%EISMINT benchmark experiment A
+numlayers=8;
+resolution=50000.;
+
+%To begin with the numerical model
+md=triangle(model(),'../Exp/SquareEISMINT750000.exp',resolution);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/RoundSheetEISMINT.par');
+
+%We extrude the model to have a 3d model
+md=extrude(md,numlayers,1.);
+md=setflowequation(md,'SIA','all');
+
+%Spc the nodes on the bed
+pos=find(md.mesh.vertexonbase);
+md.stressbalance.spcvx(pos)=0.;
+md.stressbalance.spcvy(pos)=0.;
+md.stressbalance.spcvz(pos)=0.;
+
+%Adapt the time steps to the resolution
+md.timestepping.time_step=15.;
+md.settings.output_frequency=500;
+md.timestepping.final_time=30000.;
+md.masstransport.stabilization=1;
+md.thermal.stabilization=1;
+
+%Now we can solve the problem 
+md.cluster=generic('name',oshostname(),'np',8);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Thickness','Base','Surface','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-08,1e-08,1e-07,1e-08,1e-08,1e-08,1e-08,1e-08,1e-07,3e-07};
+field_values={...
+	(md.results.TransientSolution(end).Vx),...
+	(md.results.TransientSolution(end).Vy),...
+	(md.results.TransientSolution(end).Vz),...
+	(md.results.TransientSolution(end).Vel),...
+	(md.results.TransientSolution(end).Pressure),...
+	(md.results.TransientSolution(end).Thickness),...
+	(md.results.TransientSolution(end).Base),...
+	(md.results.TransientSolution(end).Surface),...
+	(md.results.TransientSolution(end).Temperature),...
+	(md.results.TransientSolution(end).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1208.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1208.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1208.py	(revision 21239)
@@ -0,0 +1,58 @@
+#Test Name: EISMINTA
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+"""
+EISMINT benchmark experiment A
+"""
+
+numlayers=8
+resolution=50000.
+
+#To begin with the numerical model
+md=triangle(model(),'../Exp/SquareEISMINT750000.exp',resolution)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/RoundSheetEISMINT.py')
+
+#We extrude the model to have a 3d model
+md.extrude(numlayers,1.)
+md=setflowequation(md,'SIA','all')
+
+#Spc the nodes on the bed
+pos=numpy.nonzero(md.mesh.vertexonbase)
+md.stressbalance.spcvx[pos]=0.
+md.stressbalance.spcvy[pos]=0.
+md.stressbalance.spcvz[pos]=0.
+
+#Adapt the time steps to the resolution
+md.timestepping.time_step=15.
+md.settings.output_frequency=500
+md.timestepping.final_time=30000.
+md.masstransport.stabilization=1
+md.thermal.stabilization=1
+
+#Now we can solve the problem 
+md.cluster=generic('name',oshostname(),'np',8)
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure','Thickness','Base','Surface','Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-08,1e-08,1e-07,1e-08,1e-08,1e-08,1e-08,1e-08,1e-07,1e-07]
+field_values=[\
+	md.results.TransientSolution[-1].Vx,\
+	md.results.TransientSolution[-1].Vy,\
+	md.results.TransientSolution[-1].Vz,\
+	md.results.TransientSolution[-1].Vel,\
+	md.results.TransientSolution[-1].Pressure,\
+	md.results.TransientSolution[-1].Thickness,\
+	md.results.TransientSolution[-1].Base,\
+	md.results.TransientSolution[-1].Surface,\
+	md.results.TransientSolution[-1].Temperature,\
+	md.results.TransientSolution[-1].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test121.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test121.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test121.js	(revision 21239)
@@ -0,0 +1,42 @@
+//Test Name: SquareShelfConstrainedEnthalpyTran
+function zeros(...args) {
+	var array = [];
+	for (var i = 0; i < args[0]; ++i) {
+		array.push(args.length == 1 ? 0 : zeros(args.slice(1)));
+	}
+	return array;
+}
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Enthalpy1','Waterfraction1','Temperature1',
+	'Enthalpy2','Waterfraction2','Temperature2',
+	'Enthalpy3','Waterfraction3','Temperature3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-9,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).Enthalpy),
+	(md.results.TransientSolution[0](1).Waterfraction),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](2).Enthalpy),
+	(md.results.TransientSolution[0](2).Waterfraction),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](3).Enthalpy),
+	(md.results.TransientSolution[0](3).Waterfraction),
+	(md.results.TransientSolution[0](3).Temperature),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test121.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test121.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test121.m	(revision 21239)
@@ -0,0 +1,34 @@
+%Test Name: SquareShelfConstrainedEnthalpyTran
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Enthalpy1','Waterfraction1','Temperature1',...
+	'Enthalpy2','Waterfraction2','Temperature2',...
+	'Enthalpy3','Waterfraction3','Temperature3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-9,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Enthalpy),...
+	(md.results.TransientSolution(1).Waterfraction),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(2).Enthalpy),...
+	(md.results.TransientSolution(2).Waterfraction),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(3).Enthalpy),...
+	(md.results.TransientSolution(3).Waterfraction),...
+	(md.results.TransientSolution(3).Temperature),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test121.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test121.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test121.py	(revision 21239)
@@ -0,0 +1,42 @@
+#Test Name: SquareShelfConstrainedEnthalpyTran
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3);
+md.initialization.waterfraction=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.watercolumn=numpy.zeros((md.mesh.numberofvertices,1))
+md.transient.isstressbalance=False
+md.transient.ismasstransport=False
+md.transient.issmb=True
+md.transient.isthermal=True
+md.transient.isgroundingline=False
+md.thermal.isenthalpy=1
+md.thermal.isdynamicbasalspc=1
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Enthalpy1','Waterfraction1','Temperature1',\
+	'Enthalpy2','Waterfraction2','Temperature2',\
+	'Enthalpy3','Waterfraction3','Temperature3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-9,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Enthalpy,\
+	md.results.TransientSolution[0].Waterfraction,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[1].Enthalpy,\
+	md.results.TransientSolution[1].Waterfraction,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[2].Enthalpy,\
+	md.results.TransientSolution[2].Waterfraction,\
+	md.results.TransientSolution[2].Temperature,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test122.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test122.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test122.js	(revision 21239)
@@ -0,0 +1,65 @@
+//Test Name: SquareShelfConstrainedTransHOEnth
+function zeros(...args) {
+	var array = [];
+	for (var i = 0; i < args[0]; ++i) {
+		array.push(args.length == 1 ? 0 : zeros(args.slice(1)));
+	}
+	return array;
+}
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+md.thermal.stabilization=2;
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','Enthalpy1','Waterfraction1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','Enthalpy2','Waterfraction2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','Enthalpy3','Waterfraction3'];
+field_tolerances=[
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).Enthalpy),
+	(md.results.TransientSolution[0](1).Waterfraction),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).Enthalpy),
+	(md.results.TransientSolution[0](2).Waterfraction),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).Enthalpy),
+	(md.results.TransientSolution[0](3).Waterfraction),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test122.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test122.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test122.m	(revision 21239)
@@ -0,0 +1,57 @@
+%Test Name: SquareShelfConstrainedTransHOEnth
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+md.thermal.stabilization=2;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','Enthalpy1','Waterfraction1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','Enthalpy2','Waterfraction2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','Enthalpy3','Waterfraction3'};
+field_tolerances={...
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,...
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,...
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).Enthalpy),...
+	(md.results.TransientSolution(1).Waterfraction),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).Enthalpy),...
+	(md.results.TransientSolution(2).Waterfraction),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).Enthalpy),...
+	(md.results.TransientSolution(3).Waterfraction),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test122.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test122.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test122.py	(revision 21239)
@@ -0,0 +1,65 @@
+#Test Name: SquareShelfConstrainedTransHOEnth
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',200000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+md.initialization.waterfraction=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.watercolumn=numpy.zeros((md.mesh.numberofvertices,1))
+md.thermal.isenthalpy=1
+md.thermal.isdynamicbasalspc=1
+md.thermal.stabilization=2
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','Enthalpy1','Waterfraction1',\
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','Enthalpy2','Waterfraction2',\
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','Enthalpy3','Waterfraction3']
+field_tolerances=[\
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,\
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,\
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].Enthalpy,\
+	md.results.TransientSolution[0].Waterfraction,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].Enthalpy,\
+	md.results.TransientSolution[1].Waterfraction,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Temperature,\
+	md.results.TransientSolution[2].Enthalpy,\
+	md.results.TransientSolution[2].Waterfraction,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test123.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test123.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test123.js	(revision 21239)
@@ -0,0 +1,23 @@
+//Test Name: SquareShelfConstrainedTranMisfitSurface
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+fake_surface=[[md.geometry.surface+100,1.1],[md.geometry.surface+200,2.1],[md.geometry.surface+300,2.5]];
+
+md.transient.requested_outputs=['default','SurfaceMisfit'];
+md.outputdefinition.definitions=[misfit('name','SurfaceMisfit', 'definitionenum',Outputdefinition1Enum,'model_enum',SurfaceEnum,'observation_enum',SurfaceObservationEnum,'observation',fake_surface,'timeinterpolation','nearestneighbor','weights',ones(md.mesh.numberofvertices,1),'weights_enum',WeightsSurfaceObservationEnum)];
+
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['SurfaceMisfitFirstStep','SurfaceMisfitSecondStep','SurfaceMisfitThirdStep'];
+field_tolerances=[1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).SurfaceMisfit),
+	(md.results.TransientSolution[0](2).SurfaceMisfit),
+	(md.results.TransientSolution[0](3).SurfaceMisfit)
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test123.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test123.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test123.m	(revision 21239)
@@ -0,0 +1,25 @@
+%Test Name: SquareShelfConstrainedTranMisfitSurface
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+%md.debug.valgrind=1;
+
+fake_surface=[[md.geometry.surface+100;1.1],...
+[md.geometry.surface+200;2.1],...
+[md.geometry.surface+300;2.5]];
+
+md.transient.requested_outputs={'default','SurfaceMisfit'};
+md.outputdefinition.definitions={misfit('name','SurfaceMisfit', 'definitionstring','Outputdefinition1','model_string','Surface','observation_string','SurfaceObservation','observation',fake_surface,'timeinterpolation','nearestneighbor','weights',ones(md.mesh.numberofvertices,1),'weights_string','WeightsSurfaceObservation')};
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'SurfaceMisfitFirstStep','SurfaceMisfitSecondStep','SurfaceMisfitThirdStep'};
+field_tolerances={1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).SurfaceMisfit),...
+	(md.results.TransientSolution(2).SurfaceMisfit),...
+	(md.results.TransientSolution(3).SurfaceMisfit)
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test124.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test124.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test124.js	(revision 21239)
@@ -0,0 +1,49 @@
+//Test Name: SquareShelfConstrainedTranFSFreeSurface
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'FS','all');
+
+//Free surface
+md.masstransport.isfreesurface=1;
+md.timestepping.time_step=0.00001;
+md.timestepping.final_time=0.00005;
+
+//Go solve
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'TransientSolution');
+
+//Fields and tolerances to track changes
+field_names     =[
+	'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1',
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2',
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'];
+field_tolerances=[
+	2e-09,3e-9,3e-9,3e-9,1e-13,1e-12,1e-12,
+	2e-09,3e-9,3e-9,3e-9,1e-10,1e-10,1e-10,
+	2e-09,3e-9,3e-9,3e-9,1e-10,1e-10,1e-10];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test124.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test124.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test124.m	(revision 21239)
@@ -0,0 +1,48 @@
+%Test Name: SquareShelfConstrainedTranFSFreeSurface
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'FS','all');
+
+%Free surface
+md.masstransport.isfreesurface=1;
+md.timestepping.time_step=0.00001;
+md.timestepping.final_time=0.00005;
+
+%Go solve
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={...
+	2e-09,3e-9,3e-9,3e-9,1e-13,1e-12,1e-12,...
+	2e-09,3e-9,3e-9,3e-9,1e-10,1e-10,1e-10,...
+	2e-09,3e-9,3e-9,3e-9,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test125.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test125.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test125.js	(revision 21239)
@@ -0,0 +1,49 @@
+//Test Name: SquareShelfConstrainedRestartTranSSA2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',1);
+md.transient.requested_outputs=['IceVolume','TotalSmb'];
+
+//md.verbose=verbose('solution',true);
+md.settings.recording_frequency=5;
+
+// time steps and resolution
+md.timestepping.final_time=8;
+
+md=solve(md,'TransientSolution');
+md2=solve(md,'TransientSolution','restart',1);
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','TotalSmb1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','TotalSmb2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','TotalSmb3','Bed3','Surface3','Thickness3','Volume3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution(6).Vx)-(md2.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution(6).Vy)-(md2.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution(6).Vel)-(md2.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution(6).TotalSmb)-(md2.results.TransientSolution[0](1).TotalSmb),
+	(md.results.TransientSolution(6).Base)-(md2.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution(6).Surface)-(md2.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution(6).Thickness)-(md2.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution(6).IceVolume)-(md2.results.TransientSolution[0](1).IceVolume),
+	(md.results.TransientSolution(7).Vx)-(md2.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution(7).Vy)-(md2.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution(7).Vel)-(md2.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution(7).TotalSmb)-(md2.results.TransientSolution[0](2).TotalSmb),
+	(md.results.TransientSolution(7).Base)-(md2.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution(7).Surface)-(md2.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution(7).Thickness)-(md2.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution(7).IceVolume)-(md2.results.TransientSolution[0](2).IceVolume),
+	(md.results.TransientSolution(8).Vx)-(md2.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution(8).Vy)-(md2.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution(8).Vel)-(md2.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution(8).TotalSmb)-(md2.results.TransientSolution[0](3).TotalSmb),
+	(md.results.TransientSolution(8).Base)-(md2.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution(8).Surface)-(md2.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution(8).Thickness)-(md2.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution(8).IceVolume)-(md2.results.TransientSolution[0](3).IceVolume),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test125.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test125.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test125.m	(revision 21239)
@@ -0,0 +1,48 @@
+%Test Name: SquareShelfConstrainedRestartTranSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.transient.requested_outputs={'IceVolume','TotalSmb'};
+
+md.verbose=verbose('solution',true);
+md.settings.recording_frequency=5;
+
+% time steps and resolution
+md.timestepping.final_time=8;
+
+md=solve(md,'Transient');
+md2=solve(md,'Transient','restart',1);
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','TotalSmb1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','TotalSmb2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','TotalSmb3','Bed3','Surface3','Thickness3','Volume3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(6).Vx)-(md2.results.TransientSolution(6).Vx),...
+	(md.results.TransientSolution(6).Vy)-(md2.results.TransientSolution(6).Vy),...
+	(md.results.TransientSolution(6).Vel)-(md2.results.TransientSolution(6).Vel),...
+	(md.results.TransientSolution(6).TotalSmb)-(md2.results.TransientSolution(6).TotalSmb),...
+	(md.results.TransientSolution(6).Base)-(md2.results.TransientSolution(6).Base),...
+	(md.results.TransientSolution(6).Surface)-(md2.results.TransientSolution(6).Surface),...
+	(md.results.TransientSolution(6).Thickness)-(md2.results.TransientSolution(6).Thickness),...
+	(md.results.TransientSolution(6).IceVolume)-(md2.results.TransientSolution(6).IceVolume),...
+	(md.results.TransientSolution(7).Vx)-(md2.results.TransientSolution(7).Vx),...
+	(md.results.TransientSolution(7).Vy)-(md2.results.TransientSolution(7).Vy),...
+	(md.results.TransientSolution(7).Vel)-(md2.results.TransientSolution(7).Vel),...
+	(md.results.TransientSolution(7).TotalSmb)-(md2.results.TransientSolution(7).TotalSmb),...
+	(md.results.TransientSolution(7).Base)-(md2.results.TransientSolution(7).Base),...
+	(md.results.TransientSolution(7).Surface)-(md2.results.TransientSolution(7).Surface),...
+	(md.results.TransientSolution(7).Thickness)-(md2.results.TransientSolution(7).Thickness),...
+	(md.results.TransientSolution(7).IceVolume)-(md2.results.TransientSolution(7).IceVolume),...
+	(md.results.TransientSolution(8).Vx)-(md2.results.TransientSolution(8).Vx),...
+	(md.results.TransientSolution(8).Vy)-(md2.results.TransientSolution(8).Vy),...
+	(md.results.TransientSolution(8).Vel)-(md2.results.TransientSolution(8).Vel),...
+	(md.results.TransientSolution(8).TotalSmb)-(md2.results.TransientSolution(8).TotalSmb),...
+	(md.results.TransientSolution(8).Base)-(md2.results.TransientSolution(8).Base),...
+	(md.results.TransientSolution(8).Surface)-(md2.results.TransientSolution(8).Surface),...
+	(md.results.TransientSolution(8).Thickness)-(md2.results.TransientSolution(8).Thickness),...
+	(md.results.TransientSolution(8).IceVolume)-(md2.results.TransientSolution(8).IceVolume),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test125.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test125.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test125.py	(revision 21239)
@@ -0,0 +1,62 @@
+#Test Name: SquareShelfConstrainedRestartTranSSA2d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+from massfluxatgate import massfluxatgate
+from generic import generic
+import copy
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',1)
+md.transient.requested_outputs=['IceVolume','TotalSmb']
+
+md.verbose=verbose('solution',1);
+md.settings.recording_frequency=5
+
+# time steps and resolution
+md.timestepping.final_time=8
+
+md=solve(md,'Transient')
+md2=copy.deepcopy(md)
+md=solve(md,'Transient','restart',1)
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','TotalSmb1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','TotalSmb2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','TotalSmb3','Bed3','Surface3','Thickness3','Volume3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+		md2.results.TransientSolution[5].Vx-md.results.TransientSolution[5].Vx,\
+		md2.results.TransientSolution[5].Vy-md.results.TransientSolution[5].Vy,\
+		md2.results.TransientSolution[5].Vel-md.results.TransientSolution[5].Vel,\
+		md2.results.TransientSolution[5].TotalSmb-md.results.TransientSolution[5].TotalSmb,\
+		md2.results.TransientSolution[5].Base-md.results.TransientSolution[5].Base,\
+		md2.results.TransientSolution[5].Surface-md.results.TransientSolution[5].Surface,\
+		md2.results.TransientSolution[5].Thickness-md.results.TransientSolution[5].Thickness,\
+		md2.results.TransientSolution[5].IceVolume-md.results.TransientSolution[5].IceVolume,\
+		md2.results.TransientSolution[6].Vx-md.results.TransientSolution[6].Vx,\
+		md2.results.TransientSolution[6].Vy-md.results.TransientSolution[6].Vy,\
+		md2.results.TransientSolution[6].Vel-md.results.TransientSolution[6].Vel,\
+		md2.results.TransientSolution[6].TotalSmb-md.results.TransientSolution[6].TotalSmb,\
+		md2.results.TransientSolution[6].Base-md.results.TransientSolution[6].Base,\
+		md2.results.TransientSolution[6].Surface-md.results.TransientSolution[6].Surface,\
+		md2.results.TransientSolution[6].Thickness-md.results.TransientSolution[6].Thickness,\
+		md2.results.TransientSolution[6].IceVolume-md.results.TransientSolution[6].IceVolume,\
+		md2.results.TransientSolution[7].Vx-md.results.TransientSolution[7].Vx,\
+		md2.results.TransientSolution[7].Vy-md.results.TransientSolution[7].Vy,\
+		md2.results.TransientSolution[7].Vel-md.results.TransientSolution[7].Vel,\
+		md2.results.TransientSolution[7].TotalSmb-md.results.TransientSolution[7].TotalSmb,\
+		md2.results.TransientSolution[7].Base-md.results.TransientSolution[7].Base,\
+		md2.results.TransientSolution[7].Surface-md.results.TransientSolution[7].Surface,\
+		md2.results.TransientSolution[7].Thickness-md.results.TransientSolution[7].Thickness,\
+		md2.results.TransientSolution[7].IceVolume-md.results.TransientSolution[7].IceVolume\
+		]
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test126.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test126.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test126.js	(revision 21239)
@@ -0,0 +1,57 @@
+//Test Name: SquareShelfConstrainedRestartTranHO3d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+//md.cluster=generic('name',oshostname(),'np',1);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+md.transient.requested_outputs=['IceVolume','TotalSmb'];
+
+//md.verbose=verbose('solution',true);
+md.settings.recording_frequency=5;
+
+// time steps and resolution
+md.timestepping.final_time=8;
+
+md=solve(md,'TransientSolution');
+md2=solve(md,'TransientSolution','restart',1);
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','TotalSmb1','Bed1','Surface1','Thickness1','Volume1','Temperature1','Pressure1','Vx2','Vy2','Vel2','TotalSmb2','Bed2','Surface2','Thickness2','Volume2','Temperature2','Pressure2','Vx3','Vy3','Vel3','TotalSmb3','Bed3','Surface3','Thickness3','Volume3','Temperature3','Pressure3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution(6).Vx)-(md2.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution(6).Vy)-(md2.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution(6).Vel)-(md2.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution(6).TotalSmb)-(md2.results.TransientSolution[0](1).TotalSmb),
+	(md.results.TransientSolution(6).Base)-(md2.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution(6).Surface)-(md2.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution(6).Thickness)-(md2.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution(6).IceVolume)-(md2.results.TransientSolution[0](1).IceVolume),
+	(md.results.TransientSolution(6).Temperature)-(md2.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution(6).Pressure)-(md2.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution(7).Vx)-(md2.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution(7).Vy)-(md2.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution(7).Vel)-(md2.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution(7).TotalSmb)-(md2.results.TransientSolution[0](2).TotalSmb),
+	(md.results.TransientSolution(7).Base)-(md2.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution(7).Surface)-(md2.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution(7).Thickness)-(md2.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution(7).IceVolume)-(md2.results.TransientSolution[0](2).IceVolume),
+	(md.results.TransientSolution(7).Temperature)-(md2.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution(7).Pressure)-(md2.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution(8).Vx)-(md2.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution(8).Vy)-(md2.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution(8).Vel)-(md2.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution(8).TotalSmb)-(md2.results.TransientSolution[0](3).TotalSmb),
+	(md.results.TransientSolution(8).Base)-(md2.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution(8).Surface)-(md2.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution(8).Thickness)-(md2.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution(8).IceVolume)-(md2.results.TransientSolution[0](3).IceVolume),
+	(md.results.TransientSolution(8).Temperature)-(md2.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution(8).Pressure)-(md2.results.TransientSolution[0](3).Pressure),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test126.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test126.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test126.m	(revision 21239)
@@ -0,0 +1,56 @@
+%Test Name: SquareShelfConstrainedRestartTranHO3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md.cluster=generic('name',oshostname(),'np',1);
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.transient.requested_outputs={'IceVolume','TotalSmb'};
+
+md.verbose=verbose('solution',true);
+md.settings.recording_frequency=5;
+
+% time steps and resolution
+md.timestepping.final_time=8;
+
+md=solve(md,'Transient');
+md2=solve(md,'Transient','restart',1);
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','TotalSmb1','Bed1','Surface1','Thickness1','Volume1','Temperature1','Pressure1','Vx2','Vy2','Vel2','TotalSmb2','Bed2','Surface2','Thickness2','Volume2','Temperature2','Pressure2','Vx3','Vy3','Vel3','TotalSmb3','Bed3','Surface3','Thickness3','Volume3','Temperature3','Pressure3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(6).Vx)-(md2.results.TransientSolution(6).Vx),...
+	(md.results.TransientSolution(6).Vy)-(md2.results.TransientSolution(6).Vy),...
+	(md.results.TransientSolution(6).Vel)-(md2.results.TransientSolution(6).Vel),...
+	(md.results.TransientSolution(6).TotalSmb)-(md2.results.TransientSolution(6).TotalSmb),...
+	(md.results.TransientSolution(6).Base)-(md2.results.TransientSolution(6).Base),...
+	(md.results.TransientSolution(6).Surface)-(md2.results.TransientSolution(6).Surface),...
+	(md.results.TransientSolution(6).Thickness)-(md2.results.TransientSolution(6).Thickness),...
+	(md.results.TransientSolution(6).IceVolume)-(md2.results.TransientSolution(6).IceVolume),...
+	(md.results.TransientSolution(6).Temperature)-(md2.results.TransientSolution(6).Temperature),...
+	(md.results.TransientSolution(6).Pressure)-(md2.results.TransientSolution(6).Pressure),...
+	(md.results.TransientSolution(7).Vx)-(md2.results.TransientSolution(7).Vx),...
+	(md.results.TransientSolution(7).Vy)-(md2.results.TransientSolution(7).Vy),...
+	(md.results.TransientSolution(7).Vel)-(md2.results.TransientSolution(7).Vel),...
+	(md.results.TransientSolution(7).TotalSmb)-(md2.results.TransientSolution(7).TotalSmb),...
+	(md.results.TransientSolution(7).Base)-(md2.results.TransientSolution(7).Base),...
+	(md.results.TransientSolution(7).Surface)-(md2.results.TransientSolution(7).Surface),...
+	(md.results.TransientSolution(7).Thickness)-(md2.results.TransientSolution(7).Thickness),...
+	(md.results.TransientSolution(7).IceVolume)-(md2.results.TransientSolution(7).IceVolume),...
+	(md.results.TransientSolution(7).Temperature)-(md2.results.TransientSolution(7).Temperature),...
+	(md.results.TransientSolution(7).Pressure)-(md2.results.TransientSolution(7).Pressure),...
+	(md.results.TransientSolution(8).Vx)-(md2.results.TransientSolution(8).Vx),...
+	(md.results.TransientSolution(8).Vy)-(md2.results.TransientSolution(8).Vy),...
+	(md.results.TransientSolution(8).Vel)-(md2.results.TransientSolution(8).Vel),...
+	(md.results.TransientSolution(8).TotalSmb)-(md2.results.TransientSolution(8).TotalSmb),...
+	(md.results.TransientSolution(8).Base)-(md2.results.TransientSolution(8).Base),...
+	(md.results.TransientSolution(8).Surface)-(md2.results.TransientSolution(8).Surface),...
+	(md.results.TransientSolution(8).Thickness)-(md2.results.TransientSolution(8).Thickness),...
+	(md.results.TransientSolution(8).IceVolume)-(md2.results.TransientSolution(8).IceVolume),...
+	(md.results.TransientSolution(8).Temperature)-(md2.results.TransientSolution(8).Temperature),...
+	(md.results.TransientSolution(8).Pressure)-(md2.results.TransientSolution(8).Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test126.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test126.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test126.py	(revision 21239)
@@ -0,0 +1,70 @@
+#Test Name: SquareShelfConstrainedRestartTranHO3d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+from massfluxatgate import massfluxatgate
+from generic import generic
+import copy
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.cluster=generic('name',oshostname(),'np',1)
+md.transient.requested_outputs=['IceVolume','TotalSmb']
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+
+md.verbose=verbose('solution',1);
+md.settings.recording_frequency=5
+
+# time steps and resolution
+md.timestepping.final_time=8
+
+md=solve(md,'Transient')
+md2=copy.deepcopy(md)
+md=solve(md,'Transient','restart',1)
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','TotalSmb1','Bed1','Surface1','Thickness1','Volume1','Temperature1','Pressure1','Vx2','Vy2','Vel2','TotalSmb2','Bed2','Surface2','Thickness2','Volume2','Temperature2','Pressure2','Vx3','Vy3','Vel3','TotalSmb3','Bed3','Surface3','Thickness3','Volume3','Temperature3','Pressure3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+		md2.results.TransientSolution[5].Vx-md.results.TransientSolution[5].Vx,\
+		md2.results.TransientSolution[5].Vy-md.results.TransientSolution[5].Vy,\
+		md2.results.TransientSolution[5].Vel-md.results.TransientSolution[5].Vel,\
+		md2.results.TransientSolution[5].TotalSmb-md.results.TransientSolution[5].TotalSmb,\
+		md2.results.TransientSolution[5].Base-md.results.TransientSolution[5].Base,\
+		md2.results.TransientSolution[5].Surface-md.results.TransientSolution[5].Surface,\
+		md2.results.TransientSolution[5].Thickness-md.results.TransientSolution[5].Thickness,\
+		md2.results.TransientSolution[5].IceVolume-md.results.TransientSolution[5].IceVolume,\
+		md2.results.TransientSolution[5].Temperature-md.results.TransientSolution[5].Temperature,\
+		md2.results.TransientSolution[5].Pressure-md.results.TransientSolution[5].Pressure,\
+		md2.results.TransientSolution[6].Vx-md.results.TransientSolution[6].Vx,\
+		md2.results.TransientSolution[6].Vy-md.results.TransientSolution[6].Vy,\
+		md2.results.TransientSolution[6].Vel-md.results.TransientSolution[6].Vel,\
+		md2.results.TransientSolution[6].TotalSmb-md.results.TransientSolution[6].TotalSmb,\
+		md2.results.TransientSolution[6].Base-md.results.TransientSolution[6].Base,\
+		md2.results.TransientSolution[6].Surface-md.results.TransientSolution[6].Surface,\
+		md2.results.TransientSolution[6].Thickness-md.results.TransientSolution[6].Thickness,\
+		md2.results.TransientSolution[6].IceVolume-md.results.TransientSolution[6].IceVolume,\
+		md2.results.TransientSolution[6].Temperature-md.results.TransientSolution[6].Temperature,\
+		md2.results.TransientSolution[6].Pressure-md.results.TransientSolution[6].Pressure,\
+		md2.results.TransientSolution[7].Vx-md.results.TransientSolution[7].Vx,\
+		md2.results.TransientSolution[7].Vy-md.results.TransientSolution[7].Vy,\
+		md2.results.TransientSolution[7].Vel-md.results.TransientSolution[7].Vel,\
+		md2.results.TransientSolution[7].TotalSmb-md.results.TransientSolution[7].TotalSmb,\
+		md2.results.TransientSolution[7].Base-md.results.TransientSolution[7].Base,\
+		md2.results.TransientSolution[7].Surface-md.results.TransientSolution[7].Surface,\
+		md2.results.TransientSolution[7].Thickness-md.results.TransientSolution[7].Thickness,\
+		md2.results.TransientSolution[7].IceVolume-md.results.TransientSolution[7].IceVolume,\
+		md2.results.TransientSolution[7].Temperature-md.results.TransientSolution[7].Temperature,\
+		md2.results.TransientSolution[7].Pressure-md.results.TransientSolution[7].Pressure\
+		]
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1301.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1301.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1301.m	(revision 21239)
@@ -0,0 +1,47 @@
+%Test Name: ThermalMelting
+% This file can be run to check that the melting in simple conduction is correctly modeled.
+% There is no velocity (no advection) the only thermal boundary conditions are an imposed temperature
+% at upper surface and an impose flux at its base. The result must be a linear temperature from the upper to the lower
+% surface with an imposed slope (Geothermal flux). if it is not the case, something is thermal modeling has been changed...
+printingflag=false;
+
+md=model();
+md=triangle(md,'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareThermal.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+
+%Some conditions specific to melting test
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+md.initialization.temperature=273.15*ones(md.mesh.numberofvertices,1);
+pos=find(md.mesh.vertexonsurface);
+md.thermal.spctemperature(pos)=md.initialization.temperature(pos);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+
+%analytical results
+%melting heat = geothermal flux
+%Mb*L*rho=G   => Mb=G/L*rho
+melting=md.basalforcings.geothermalflux/(md.materials.rho_ice*md.materials.latentheat)*md.constants.yts;
+
+%modeled results
+md.cluster=generic('name',oshostname(),'np',2);
+md=solve(md,'Thermal');
+
+%plot results
+comp_melting=md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate;
+relative=abs((comp_melting-melting)./melting)*100.;
+relative(find(comp_melting==melting))=0.;
+plotmodel(md,'data',comp_melting,'title','Modeled melting','data',melting,'title','Analytical melting',...
+	'data',comp_melting-melting,'title','Absolute error','data',relative,'title','Relative error [%]',...
+	'layer#all',1,'caxis#2',[1.02964 1.02966]*10^-4,'FontSize#all',20,'figposition','mathieu')
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('thermalmelting','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+	system(['mv thermalmelting.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal ']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={'BasalMelting'};
+field_tolerances={1e-07};
+field_values    ={comp_melting};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1301.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1301.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1301.py	(revision 21239)
@@ -0,0 +1,60 @@
+#Test Name: ThermalMelting
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from paterson import *
+from solve import *
+from MatlabFuncs import *
+
+"""
+This file can be run to check that the melting in simple conduction is correctly modeled.
+There is no velocity (no advection) the only thermal boundary conditions are an imposed temperature
+at upper surface and an impose flux at its base. The result must be a linear temperature from the upper to the lower
+surface with an imposed slope (Geothermal flux). if it is not the case, something is thermal modeling has been changed...
+"""
+
+printingflag=False
+
+md=model()
+md=triangle(md,'../Exp/Square.exp',100000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareThermal.py')
+md.extrude(3,2.)
+md=setflowequation(md,'HO','all')
+
+#Some conditions specific to melting test
+md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1),int)
+md.initialization.temperature=273.15*numpy.ones((md.mesh.numberofvertices,1))
+pos=numpy.nonzero(md.mesh.vertexonsurface)[0]
+md.thermal.spctemperature[pos]=md.initialization.temperature[pos]
+md.materials.rheology_B=paterson(md.initialization.temperature)
+
+#analytical results
+#melting heat = geothermal flux
+#Mb*L*rho=G   => Mb=G/L*rho
+melting=md.basalforcings.geothermalflux/(md.materials.rho_ice*md.materials.latentheat)*md.constants.yts
+
+#modeled results
+md.cluster=generic('name',oshostname(),'np',2)
+md=solve(md,'Thermal')
+
+#plot results
+comp_melting=md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate
+relative=numpy.abs((comp_melting-melting)/melting)*100.
+relative[numpy.nonzero(comp_melting==melting)[0]]=0.
+#plotmodel(md,'data',comp_melting,'title','Modeled melting','data',melting,'title','Analytical melting',...
+#	'data',comp_melting-melting,'title','Absolute error','data',relative,'title','Relative error [%]',...
+#	'layer#all',1,'caxis#2',[1.02964 1.02966]*10^-4,'FontSize#all',20,'figposition','mathieu')
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('thermalmelting','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+#	system(['mv thermalmelting.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal ']);
+
+#Fields and tolerances to track changes
+field_names     =['BasalMelting']
+field_tolerances=[1e-08]
+field_values    =[comp_melting]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1302.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1302.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1302.m	(revision 21239)
@@ -0,0 +1,50 @@
+%Test Name: ThermalAdvection
+% This file can be run to check that the advection-diffusion  is correctly modeled.
+% There is u=v=0 and w=cst everywhere the only thermal boundary conditions are an imposed temperature
+% at upper surface and an impose flux at its base.
+printingflag=false;
+
+md=model();
+md=triangle(md,'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareThermal.par');
+md=extrude(md,30,1.);   %NB: the more one extrudes, the better (10-> relative~0.35%, 20->0.1%, 30->0.05%)
+md=setflowequation(md,'HO','all');
+
+%Thermal boundary conditions
+pos1=find(md.mesh.elementonbase);     md.thermal.spctemperature(md.mesh.elements(pos1,1:3))=10.;
+pos2=find(md.mesh.elementonsurface); md.thermal.spctemperature(md.mesh.elements(pos2,4:6))=0.;
+md.initialization.vz=0.1*ones(md.mesh.numberofvertices,1);
+md.initialization.vel=sqrt( md.initialization.vx.^2+ md.initialization.vy.^2+ md.initialization.vz.^2);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+md.thermal.stabilization=2;
+%analytical results
+%d2T/dz2-w*rho_ice*c/k*dT/dz=0   T(surface)=0  T(bed)=10   => T=A exp(alpha z)+B
+alpha=0.1/md.constants.yts*md.materials.rho_ice*md.materials.heatcapacity/md.materials.thermalconductivity;   %alpha=w rho_ice c /k  and w=0.1m/an
+A=10./(exp(alpha*(-1000.))-1.);    %A=T(bed)/(exp(alpha*bed)-1)  with bed=-1000 T(bed)=10
+B=-A;
+md.initialization.temperature=A*exp(alpha*md.mesh.z)+B;
+
+%modeled results
+md.cluster=generic('name',oshostname(),'np',2);
+md=solve(md,'Thermal');
+
+%plot results
+comp_temp=md.results.ThermalSolution.Temperature;
+relative=abs((comp_temp-md.initialization.temperature)./md.initialization.temperature)*100.;
+relative(find(comp_temp==md.initialization.temperature))=0.;
+plotmodel(md,'data',comp_temp,'title','Modeled temperature [K]','data',md.initialization.temperature,'view',3,...
+	'title','Analytical temperature [K]','view',3,'data',comp_temp-md.initialization.temperature,...
+	'title','Absolute error [K]','view',3,'data',relative,'title','Relative error [%]','view',3,...
+	'figposition','mathieu','FontSize#all',20)
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('thermaladvection','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+	system(['mv thermaladvection.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT ']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={'AdvectionTemperature'};
+field_tolerances={1e-13};
+field_values    ={comp_temp};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1302.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1302.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1302.py	(revision 21239)
@@ -0,0 +1,65 @@
+#Test Name: ThermalAdvection
+import numpy
+import sys
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+"""
+This file can be run to check that the advection-diffusion  is correctly modeled.
+There is u=v=0 and w=cst everywhere the only thermal boundary conditions are an imposed temperature
+at upper surface and an impose flux at its base.
+"""
+
+printingflag=False
+
+md=model()
+md=triangle(md,'../Exp/Square.exp',100000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareThermal.py')
+md.extrude(30,1.)    #NB: the more one extrudes, the better (10-> relative~0.35%, 20->0.1%, 30->0.05%)
+md=setflowequation(md,'HO','all')
+
+#Thermal boundary conditions
+pos1=numpy.nonzero(md.mesh.elementonbase)[0]
+md.thermal.spctemperature[md.mesh.elements[pos1,0:3]-1]=10.
+pos2=numpy.nonzero(md.mesh.elementonsurface)[0]
+md.thermal.spctemperature[md.mesh.elements[pos2,3:6]-1]=0.
+md.initialization.vz=0.1*numpy.ones((md.mesh.numberofvertices,1))
+md.initialization.vel=numpy.sqrt( md.initialization.vx**2+ md.initialization.vy**2+ md.initialization.vz**2)
+md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1),int)
+
+md.thermal.stabilization=2
+#analytical results
+#d2T/dz2-w*rho_ice*c/k*dT/dz=0   T(surface)=0  T(bed)=10   => T=A exp(alpha z)+B
+alpha=0.1/md.constants.yts*md.materials.rho_ice*md.materials.heatcapacity/md.materials.thermalconductivity    #alpha=w rho_ice c /k  and w=0.1m/an
+A=10./(numpy.exp(alpha*(-1000.))-1.)    #A=T(bed)/(exp(alpha*bed)-1)  with bed=-1000 T(bed)=10
+B=-A
+md.initialization.temperature=A*numpy.exp(alpha*md.mesh.z)+B
+
+#modeled results
+md.cluster=generic('name',oshostname(),'np',2)
+md=solve(md,'Thermal')
+
+#plot results
+comp_temp=md.results.ThermalSolution.Temperature
+relative=numpy.abs((comp_temp-md.initialization.temperature)/md.initialization.temperature)*100.
+relative[numpy.nonzero(comp_temp==md.initialization.temperature)[0]]=0.
+#plotmodel(md,'data',comp_temp,'title','Modeled temperature [K]','data',md.initialization.temperature,'view',3,...
+#	'title','Analytical temperature [K]','view',3,'data',comp_temp-md.initialization.temperature,...
+#	'title','Absolute error [K]','view',3,'data',relative,'title','Relative error [%]','view',3,...
+#	'figposition','mathieu','FontSize#all',20)
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('thermaladvection','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+#	system(['mv thermaladvection.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT ']);
+
+#Fields and tolerances to track changes
+field_names     =['AdvectionTemperature']
+field_tolerances=[1e-13]
+field_values    =[comp_temp]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1303.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1303.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1303.m	(revision 21239)
@@ -0,0 +1,45 @@
+%Test Name: ThermalConduction
+% This file can be run to check that the conduction is correctly modeled.
+% There is no velocity (no advection) the only thermal boundary conditions are an imposed temperature
+% at the lower and upper surface. The result must be a linear temperature from the upper to the lower
+% surface. if it is not the case, something is thermal modeling has been changed...
+printingflag=false;
+
+md=model();
+md=triangle(md,'../Exp/Square.exp',100000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareThermal.par');
+md=extrude(md,11,2.);
+md=setflowequation(md,'HO','all');
+
+pos1=find(md.mesh.elementonbase);     md.thermal.spctemperature(md.mesh.elements(pos1,1:3))=10.;
+pos2=find(md.mesh.elementonsurface); md.thermal.spctemperature(md.mesh.elements(pos2,4:6))=0.;
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%analytical results
+%d2T/dz2=0 T(bed)=10 T(surface)=0  => T=0*(z-bed)/thickness+10*(surface-z)/thickness
+%each layer of the 3d mesh must have a constant value
+md.initialization.temperature=10.*(md.geometry.surface-md.mesh.z)./md.geometry.thickness;
+
+%modeled results
+md.cluster=generic('name',oshostname(),'np',2);
+md=solve(md,'Thermal');
+
+%plot results
+comp_temp=md.results.ThermalSolution.Temperature;
+relative=abs((comp_temp-md.initialization.temperature)./md.initialization.temperature)*100.;
+relative(find(comp_temp==md.initialization.temperature))=0.;
+plotmodel(md,'data',comp_temp,'title','Modeled temperature [K]','data',md.initialization.temperature,'view',3,...
+	'title','Analytical temperature [K]','view',3,'data',comp_temp-md.initialization.temperature,...
+	'title','Absolute error [K]','view',3,'data',relative,'title','Relative error [%]','view',3,...
+	'figposition','mathieu','FontSize#all',20)
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('thermalconduction','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+	system(['mv thermalconduction.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal ']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={'ConductionTemperature'};
+field_tolerances={1e-13};
+field_values    ={comp_temp};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1303.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1303.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1303.py	(revision 21239)
@@ -0,0 +1,60 @@
+#Test Name: ThermalConduction
+import numpy
+import sys
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+"""
+This file can be run to check that the conduction is correctly modeled.
+There is no velocity (no advection) the only thermal boundary conditions are an imposed temperature
+at the lower and upper surface. The result must be a linear temperature from the upper to the lower
+surface. if it is not the case, something is thermal modeling has been changed...
+"""
+
+printingflag=False
+
+md=model()
+md=triangle(md,'../Exp/Square.exp',100000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareThermal.py')
+md.extrude(11,2.)
+md=setflowequation(md,'HO','all')
+
+pos1=numpy.nonzero(md.mesh.elementonbase)[0]
+md.thermal.spctemperature[md.mesh.elements[pos1,0:3]-1]=10.
+pos2=numpy.nonzero(md.mesh.elementonsurface)[0]
+md.thermal.spctemperature[md.mesh.elements[pos2,3:6]-1]=0.
+md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1),int)
+
+#analytical results
+#d2T/dz2=0 T(bed)=10 T(surface)=0  => T=0*(z-bed)/thickness+10*(surface-z)/thickness
+#each layer of the 3d mesh must have a constant value
+md.initialization.temperature=10.*(md.geometry.surface-md.mesh.z)/md.geometry.thickness
+
+#modeled results
+md.cluster=generic('name',oshostname(),'np',2)
+md=solve(md,'Thermal')
+
+#plot results
+comp_temp=md.results.ThermalSolution.Temperature
+relative=numpy.abs((comp_temp-md.initialization.temperature)/md.initialization.temperature)*100.
+relative[numpy.nonzero(comp_temp==md.initialization.temperature)[0]]=0.
+#plotmodel(md,'data',comp_temp,'title','Modeled temperature [K]','data',md.initialization.temperature,'view',3,...
+#	'title','Analytical temperature [K]','view',3,'data',comp_temp-md.initialization.temperature,...
+#	'title','Absolute error [K]','view',3,'data',relative,'title','Relative error [%]','view',3,...
+#	'figposition','mathieu','FontSize#all',20)
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('thermalconduction','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+#	system(['mv thermalconduction.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal ']);
+
+#Fields and tolerances to track changes
+field_names     =['ConductionTemperature']
+field_tolerances=[1e-13]
+field_values    =[comp_temp]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1304.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1304.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1304.m	(revision 21239)
@@ -0,0 +1,45 @@
+%Test Name: ThermalGeothermalFlux
+% This file can be run to check that the geothermal flux in simple conduction is correctly modeled.
+% There is no velocity (no advection) the only thermal boundary conditions are an imposed temperature
+% at upper surface and an impose flux at its base. The result must be a linear temperature from the upper to the lower
+% surface with an imposed slope (Geothermal flux). if it is not the case, something is thermal modeling has been changed...
+printingflag=false;
+
+md=model();
+md=triangle(md,'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareThermal.par');
+md=extrude(md,11,1.);
+md=setflowequation(md,'HO','all');
+
+pos2=find(md.mesh.elementonsurface); md.thermal.spctemperature(md.mesh.elements(pos2,4:6))=0.;
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.geothermalflux(:)=0.1; %100mW/m^2
+
+%analytical results
+%the result is linear with depth and is equal to 0 on the upper surface (See BC)
+%d2T/dz2=0  -k*dT/dz(bed)=G  T(surface)=0  => T=-G/k*(z-surface)
+md.initialization.temperature=-0.1/md.materials.thermalconductivity*(md.mesh.z-md.geometry.surface); %G=0.1 W/m2
+
+%modeled results
+md.cluster=generic('name',oshostname(),'np',2);
+md=solve(md,'Thermal');
+
+%plot results
+comp_temp=md.results.ThermalSolution.Temperature;
+relative=abs((comp_temp-md.initialization.temperature)./md.initialization.temperature)*100.;
+relative(find(comp_temp==md.initialization.temperature))=0.;
+plotmodel(md,'data',comp_temp,'title','Modeled temperature [K]','data',md.initialization.temperature,'view',3,...
+	'title','Analytical temperature','view',3,'data',comp_temp-md.initialization.temperature,...
+	'title','Absolute error [K]','view',3,'data',relative,'title','Relative error [%]','view',3,...
+	'figposition','mathieu','FontSize#all',20)
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('thermalgeothermalflux','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+	system(['mv thermalgeothermalflux.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal ']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={'GeothermalFluxTemperature'};
+field_tolerances={1e-13};
+field_values    ={comp_temp};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1304.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1304.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1304.py	(revision 21239)
@@ -0,0 +1,59 @@
+#Test Name: ThermalGeothermalFlux
+import numpy
+import sys
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+"""
+This file can be run to check that the geothermal flux in simple conduction is correctly modeled.
+There is no velocity (no advection) the only thermal boundary conditions are an imposed temperature
+at upper surface and an impose flux at its base. The result must be a linear temperature from the upper to the lower
+surface with an imposed slope (Geothermal flux). if it is not the case, something is thermal modeling has been changed...
+"""
+
+printingflag=False
+
+md=model()
+md=triangle(md,'../Exp/Square.exp',100000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareThermal.py')
+md.extrude(11,1.)
+md=setflowequation(md,'HO','all')
+
+pos2=numpy.nonzero(md.mesh.elementonsurface)[0]
+md.thermal.spctemperature[md.mesh.elements[pos2,3:6]-1]=0.
+md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1),int)
+md.basalforcings.geothermalflux[:]=0.1    #100mW/m^2
+
+#analytical results
+#the result is linear with depth and is equal to 0 on the upper surface (See BC)
+#d2T/dz2=0  -k*dT/dz(bed)=G  T(surface)=0  => T=-G/k*(z-surface)
+md.initialization.temperature=-0.1/md.materials.thermalconductivity*(md.mesh.z-md.geometry.surface)    #G=0.1 W/m2
+
+#modeled results
+md.cluster=generic('name',oshostname(),'np',2)
+md=solve(md,'Thermal')
+
+#plot results
+comp_temp=md.results.ThermalSolution.Temperature
+relative=numpy.abs((comp_temp-md.initialization.temperature)/md.initialization.temperature)*100.
+relative[numpy.nonzero(comp_temp==md.initialization.temperature)[0]]=0.
+#plotmodel(md,'data',comp_temp,'title','Modeled temperature [K]','data',md.initialization.temperature,'view',3,...
+#	'title','Analytical temperature','view',3,'data',comp_temp-md.initialization.temperature,...
+#	'title','Absolute error [K]','view',3,'data',relative,'title','Relative error [%]','view',3,...
+#	'figposition','mathieu','FontSize#all',20)
+if printingflag:
+	pass
+#	set(gcf,'Color','w')
+#	printmodel('thermalgeothermalflux','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+#	system(['mv thermalgeothermalflux.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal ']);
+
+#Fields and tolerances to track changes
+field_names     =['GeothermalFluxTemperature']
+field_tolerances=[1e-13]
+field_values    =[comp_temp]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1401.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1401.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1401.m	(revision 21239)
@@ -0,0 +1,80 @@
+%Test Name: AdaptiveMeshRefinement1
+%test the anisotropic mesh adaptation
+%function to capture = exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+printingflag=false;
+
+%create square mesh
+L=1.; %in m
+nx=70; %numberof nodes in x direction
+ny=70;
+md=model();
+
+%mesh adaptation loop YAMS
+md=squaremesh(md,L,L,nx,ny);
+md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh1_yams1','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh1_yams1.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+
+md=YamsCall(md,md.inversion.vel_obs,0.001,0.3,1.3,10.^-4);
+md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh1_yams2','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh1_yams2.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+
+md=YamsCall(md,md.inversion.vel_obs,0.001,0.3,2.5,0.008);
+md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh1_yams3','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh1_yams3.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+x1=md.mesh.x;
+y1=md.mesh.y;
+
+%mesh adaptation loop BAMG
+md=squaremesh(md,L,L,nx,ny);
+md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh1_bamg1','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh1_bamg1.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+
+md.private.bamg=NaN;
+md=bamg(md,'field',md.inversion.vel_obs,'hmin',0.001,'hmax',0.3,'gradation',1.3,'err',10.^-4);
+md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh1_bamg2','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh1_bamg2.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+
+md.private.bamg=NaN;
+md=bamg(md,'field',md.inversion.vel_obs,'hmin',0.001,'hmax',0.3,'gradation',2.5,'err',0.008);
+md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh1_bamg3','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh1_bamg3.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+x2=md.mesh.x;
+y2=md.mesh.y;
+
+%Fields and tolerances to track changes
+field_names     ={'xyams','yyams','xbamg','ybamg'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	x1, y1,...
+	x2, y2,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1402.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1402.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1402.m	(revision 21239)
@@ -0,0 +1,110 @@
+%Test Name: AdaptiveMeshRefinement2
+%test the anisotropic mesh adaptation
+printingflag=false;
+
+%create square mesh
+L=1.; %in m
+nx=30; %numberof nodes in x direction
+ny=30;
+md=model();
+
+%mesh adaptation loop YAMS
+md=squaremesh(md,L,L,nx,ny);
+u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
+md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
+	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh2_yams1','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh2_yams1.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+
+md=YamsCall(md,md.inversion.vel_obs,0.005,0.3,2.3,10.^-2);
+u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
+md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
+	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh2_yams2','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh2_yams2.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+
+md=YamsCall(md,md.inversion.vel_obs,0.005,0.3,3,0.005);
+u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
+md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
+	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh2_yams3','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh2_yams3.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+x1=md.mesh.x;
+y1=md.mesh.y;
+
+%mesh adaptation loop BAMG
+md=squaremesh(md,L,L,nx,ny);
+u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
+md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
+	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh2_bamg1','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh2_bamg1.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+
+md.private.bamg=NaN;
+md=bamg(md,'field',md.inversion.vel_obs,'hmin',0.005,'hmax',0.3,'gradation',2.3,'err',10.^-2);
+u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
+md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
+	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh2_bamg2','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh2_bamg2.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+
+md.private.bamg=NaN;
+md=bamg(md,'field',md.inversion.vel_obs,'hmin',0.005,'hmax',0.3,'gradation',3,'err',0.005);
+u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
+md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
+	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh2_bamg3','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh2_bamg3.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+
+md.private.bamg=NaN;
+md=bamg(md,'field',md.inversion.vel_obs,'hmin',0.005,'hmax',0.3,'gradation',1.5,'err',0.003,'anisomax',1);
+u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
+md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
+	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh2_bamgiso','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh2_bamgiso.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+x2=md.mesh.x;
+y2=md.mesh.y;
+
+%Fields and tolerances to track changes
+field_names     ={'xyams','yyams','xbamg','ybamg'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	x1, y1,...
+	x2, y2,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1501.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1501.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1501.m	(revision 21239)
@@ -0,0 +1,208 @@
+%Test Name: SquareShelfTranSawTooth2d
+printingflag = false;
+
+md=triangle(model(),'../Exp/Square.exp',350000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isthermal=0;
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=2000.;
+
+%Solve for thinning rate -> -1 * surface mass balance
+smb= 2.*ones(md.mesh.numberofvertices,1);
+md.smb.mass_balance= smb;
+md.basalforcings.groundedice_melting_rate= smb;
+
+md=solve(md,'Masstransport');
+
+for i=1:10
+	 md=solve(md,'Masstransport');
+	 md.smb.mass_balance= md.smb.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness);
+end
+
+%Set up transient
+smb = md.smb.mass_balance;
+
+tooth= [ [ones(400,1)*(smb') - 10.]' [ones(400,1)*(smb')]' ];
+smb=[ [ones(399,1)*(smb')]' smb  tooth tooth];
+
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.:2000.];
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4', ...
+	'Vx5','Vy5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SmbMassBalance5'};
+field_tolerances={1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(400).Vx),...
+	(md.results.TransientSolution(400).Vy),...
+	(md.results.TransientSolution(400).Vel),...
+	(md.results.TransientSolution(400).Pressure),...
+	(md.results.TransientSolution(400).Base),...
+	(md.results.TransientSolution(400).Surface),...
+	(md.results.TransientSolution(400).Thickness),...
+	(md.results.TransientSolution(400).SmbMassBalance),...
+	(md.results.TransientSolution(800).Vx),...
+	(md.results.TransientSolution(800).Vy),...
+	(md.results.TransientSolution(800).Vel),...
+	(md.results.TransientSolution(800).Pressure),...
+	(md.results.TransientSolution(800).Base),...
+	(md.results.TransientSolution(800).Surface),...
+	(md.results.TransientSolution(800).Thickness),...
+	(md.results.TransientSolution(800).SmbMassBalance),...
+	(md.results.TransientSolution(1200).Vx),...
+	(md.results.TransientSolution(1200).Vy),...
+	(md.results.TransientSolution(1200).Vel),...
+	(md.results.TransientSolution(1200).Pressure),...
+	(md.results.TransientSolution(1200).Base),...
+	(md.results.TransientSolution(1200).Surface),...
+	(md.results.TransientSolution(1200).Thickness),...
+	(md.results.TransientSolution(1200).SmbMassBalance),...
+	(md.results.TransientSolution(1600).Vx),...
+	(md.results.TransientSolution(1600).Vy),...
+	(md.results.TransientSolution(1600).Vel),...
+	(md.results.TransientSolution(1600).Pressure),...
+	(md.results.TransientSolution(1600).Base),...
+	(md.results.TransientSolution(1600).Surface),...
+	(md.results.TransientSolution(1600).Thickness),...
+	(md.results.TransientSolution(1600).SmbMassBalance),...
+	(md.results.TransientSolution(2000).Vx),...
+	(md.results.TransientSolution(2000).Vy),...
+	(md.results.TransientSolution(2000).Vel),...
+	(md.results.TransientSolution(2000).Pressure),...
+	(md.results.TransientSolution(2000).Base),...
+	(md.results.TransientSolution(2000).Surface),...
+	(md.results.TransientSolution(2000).Thickness),...
+	(md.results.TransientSolution(2000).SmbMassBalance),...
+	};
+
+if printingflag,
+
+	starttime = 360;
+	endtime = 2000;
+	res = 40;
+	ts = [starttime:res:endtime];
+
+	index = md.mesh.elements;
+	x1=md.mesh.x(index(:,1)); x2=md.mesh.x(index(:,2)); x3=md.mesh.x(index(:,3));
+	y1=md.mesh.y(index(:,1)); y2=md.mesh.y(index(:,2)); y3=md.mesh.y(index(:,3));
+	areas=(0.5*((x2-x1).*(y3-y1)-(y2-y1).*(x3-x1)));
+
+	thickness = [];
+	volume = [];
+	massbal = [];
+	velocity = [];
+	for t=starttime:endtime
+		thickness = [thickness (md.results.TransientSolution(t).Thickness)];
+		volume = [volume mean(md.results.TransientSolution(t).Thickness.value,2).*areas];
+		massbal = [massbal (md.results.TransientSolution(t).SmbMassBalance)];
+		velocity = [velocity (md.results.TransientSolution(t).Vel)];
+	end
+
+	figure('Position', [0 0 860 932])
+
+	options = plotoptions('data','transient_movie','unit','km');
+	options = options.list{1};
+	options = checkplotoptions(md,options);
+
+	%loop over the time steps
+	results=md.results.TransientSolution;
+	count = 1;
+	for i=ts
+
+		subplot(5,9,[28:31 37:40])
+		set(gca,'pos',get(gca,'pos')+[-0.08 -0.08 0.07 0.08])
+		field = 'Thickness';
+
+		%process data
+		[x y z elements is2d isplanet]=processmesh(md,results(i).(field),options);
+		[data datatype]=processdata(md,results(i).(field),options);
+
+		titlestring=[field ' at time ' num2str(results(i).time/md.constants.yts) ' year'];
+		plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+		options=changefieldvalue(options,'title',titlestring);
+		options=addfielddefault(options,'colorbar',1);
+		options=changefieldvalue(options,'caxis',[0 max(max(thickness))]);
+		applyoptions(md,[],options);
+
+		subplot(5,9,[33:36 42:45])
+		set(gca,'pos',get(gca,'pos')+[-0.00 -0.08 0.07 0.08])
+		field = 'Vel';
+
+		%process data
+		[x y z elements is2d isplanet]=processmesh(md,results(i).(field),options);
+		[data datatype]=processdata(md,results(i).(field),options);
+
+		titlestring=[field ' at time ' num2str(results(i).time/md.constants.yts) ' year'];
+		plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+		options=changefieldvalue(options,'title',titlestring);
+		options=addfielddefault(options,'colorbar',1);
+		options=changefieldvalue(options,'caxis',[0 max(max(velocity))]);
+		applyoptions(md,[],options);
+
+		subplot(5,4,1:4)
+		cla
+		set(gca,'pos',get(gca,'pos')+[-0.07 0.03 0.12 0.015])
+		plot(starttime:endtime,mean(massbal),'k','LineWidth', 4)
+		hold on
+		ya = ylim;
+		plot([i i], ya, 'r', 'LineWidth',6)
+		ylim(ya); xlim([starttime endtime]);
+		title('Surface Mass Balance','FontSize',14)
+		ylabel('m/year','FontSize',14)
+
+		subplot(5,4,5:8)
+		cla
+		set(gca,'pos',get(gca,'pos')+[-0.07 0.015 0.12 0.015])
+		plot(starttime:endtime,sum(volume)/1000/1000/1000,'LineWidth',4)
+		hold on
+		ya = ylim;
+		plot([i i], ya, 'r', 'LineWidth',6)
+		ylim(ya); xlim([starttime endtime]);
+		title('Ice Volume','FontSize',14)
+		ylabel('km^3','FontSize',14)
+
+		subplot(5,4,9:12)
+		cla
+		set(gca,'pos',get(gca,'pos')+[-0.07 0 0.12 0.015])
+		plot(starttime:endtime,mean(velocity)/1000, 'LineWidth', 4)
+		hold on
+		ya = ylim;
+		plot([i i], ya, 'r', 'LineWidth',6)
+		ylim(ya); xlim([starttime endtime]);
+		title('Mean Velocity','FontSize', 14)
+		ylabel('km/year','FontSize', 14)
+		xlabel('year','FontSize', 14)
+
+		set(gcf,'Renderer','zbuffer','color','white'); %fixes a bug on Mac OS X (not needed in future Matlab version)
+		if i==starttime,
+			%initialize images and frame
+			frame=getframe(gcf);
+			[images,map]=rgb2ind(frame.cdata,256,'nodither');
+			images(1,1,1,length(ts))=0;
+		else
+			frame=getframe(gcf);
+			images(:,:,1,count) = rgb2ind(frame.cdata,map,'nodither');
+		end
+
+		count = count+1;
+
+	end
+
+	filename='transawtooth2d.gif';
+	imwrite(images,map,filename,'DelayTime',1.0,'LoopCount',inf)
+
+end %printingflag
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1501.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1501.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1501.py	(revision 21239)
@@ -0,0 +1,222 @@
+#Test Name: SquareShelfTranSawTooth2d
+import numpy
+import sys
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+printingflag = False
+
+md=triangle(model(),'../Exp/Square.exp',350000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.transient.isthermal=False
+
+md.timestepping.time_step=1.
+md.settings.output_frequency=1
+md.timestepping.final_time=2000.
+
+#Solve for thinning rate -> -1 * surface mass balance
+smb= 2.*numpy.ones((md.mesh.numberofvertices,1))
+md.smb.mass_balance= smb
+md.basalforcings.groundedice_melting_rate= smb
+
+md=solve(md,'Masstransport')
+
+for i in xrange(1,11):
+	 md=solve(md,'Masstransport')
+	 md.smb.mass_balance= md.smb.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness)
+
+#Set up transient
+smb = md.smb.mass_balance
+
+#tooth= [ [ones(400,1)*(smb') - 10.]' [ones(400,1)*(smb')]' ];
+tooth=numpy.hstack((numpy.tile(smb-10.,(1,400)),numpy.tile(smb,(1,400))))
+#smb=[ [ones(399,1)*(smb')]' smb  tooth tooth];
+smb=numpy.hstack((numpy.tile(smb,(1,399)),smb,tooth,tooth))
+
+#md.smb.mass_balance= smb;
+#md.smb.mass_balance(end+1,:)=[1.:2000.];
+md.smb.mass_balance=numpy.vstack((smb,numpy.arange(1,2001)))
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4', \
+	'Vx5','Vy5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SmbMassBalance5']
+field_tolerances=[1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10]
+field_values=[\
+	md.results.TransientSolution[400-1].Vx,\
+	md.results.TransientSolution[400-1].Vy,\
+	md.results.TransientSolution[400-1].Vel,\
+	md.results.TransientSolution[400-1].Pressure,\
+	md.results.TransientSolution[400-1].Base,\
+	md.results.TransientSolution[400-1].Surface,\
+	md.results.TransientSolution[400-1].Thickness,\
+	md.results.TransientSolution[400-1].SmbMassBalance,\
+	md.results.TransientSolution[800-1].Vx,\
+	md.results.TransientSolution[800-1].Vy,\
+	md.results.TransientSolution[800-1].Vel,\
+	md.results.TransientSolution[800-1].Pressure,\
+	md.results.TransientSolution[800-1].Base,\
+	md.results.TransientSolution[800-1].Surface,\
+	md.results.TransientSolution[800-1].Thickness,\
+	md.results.TransientSolution[800-1].SmbMassBalance,\
+	md.results.TransientSolution[1200-1].Vx,\
+	md.results.TransientSolution[1200-1].Vy,\
+	md.results.TransientSolution[1200-1].Vel,\
+	md.results.TransientSolution[1200-1].Pressure,\
+	md.results.TransientSolution[1200-1].Base,\
+	md.results.TransientSolution[1200-1].Surface,\
+	md.results.TransientSolution[1200-1].Thickness,\
+	md.results.TransientSolution[1200-1].SmbMassBalance,\
+	md.results.TransientSolution[1600-1].Vx,\
+	md.results.TransientSolution[1600-1].Vy,\
+	md.results.TransientSolution[1600-1].Vel,\
+	md.results.TransientSolution[1600-1].Pressure,\
+	md.results.TransientSolution[1600-1].Base,\
+	md.results.TransientSolution[1600-1].Surface,\
+	md.results.TransientSolution[1600-1].Thickness,\
+	md.results.TransientSolution[1600-1].SmbMassBalance,\
+	md.results.TransientSolution[2000-1].Vx,\
+	md.results.TransientSolution[2000-1].Vy,\
+	md.results.TransientSolution[2000-1].Vel,\
+	md.results.TransientSolution[2000-1].Pressure,\
+	md.results.TransientSolution[2000-1].Base,\
+	md.results.TransientSolution[2000-1].Surface,\
+	md.results.TransientSolution[2000-1].Thickness,\
+	md.results.TransientSolution[2000-1].SmbMassBalance,\
+	]
+
+if printingflag:
+	pass
+
+	"""
+	starttime = 360;
+	endtime = 2000;
+	res = 40;
+	ts = [starttime:res:endtime];
+
+	index = md.mesh.elements;
+	x1=md.mesh.x(index(:,1)); x2=md.mesh.x(index(:,2)); x3=md.mesh.x(index(:,3));
+	y1=md.mesh.y(index(:,1)); y2=md.mesh.y(index(:,2)); y3=md.mesh.y(index(:,3));
+	areas=(0.5*((x2-x1).*(y3-y1)-(y2-y1).*(x3-x1)));
+
+	thickness = [];
+	volume = [];
+	massbal = [];
+	velocity = [];
+	for t=starttime:endtime
+		thickness = [thickness (md.results.TransientSolution(t).Thickness)];
+		volume = [volume mean(md.results.TransientSolution(t).Thickness.value,2).*areas];
+		massbal = [massbal (md.results.TransientSolution(t).SmbMassBalance)];
+		velocity = [velocity (md.results.TransientSolution(t).Vel)];
+	end
+
+	figure('Position', [0 0 860 932])
+
+	options = plotoptions('data','transient_movie','unit','km');
+	options = options.list{1};
+	options = checkplotoptions(md,options);
+
+	%loop over the time steps
+	results=md.results.TransientSolution;
+	count = 1;
+	for i=ts
+
+		subplot(5,9,[28:31 37:40])
+		set(gca,'pos',get(gca,'pos')+[-0.08 -0.08 0.07 0.08])
+		field = 'Thickness';
+
+		%process data
+		[x y z elements is2d isplanet]=processmesh(md,results(i).(field),options);
+		[data datatype]=processdata(md,results(i).(field),options);
+
+		titlestring=[field ' at time ' num2str(results(i).time/md.constants.yts) ' year'];
+		plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+		options=changefieldvalue(options,'title',titlestring);
+		options=addfielddefault(options,'colorbar',1);
+		options=changefieldvalue(options,'caxis',[0 max(max(thickness))]);
+		applyoptions(md,[],options);
+
+		subplot(5,9,[33:36 42:45])
+		set(gca,'pos',get(gca,'pos')+[-0.00 -0.08 0.07 0.08])
+		field = 'Vel';
+
+		%process data
+		[x y z elements is2d isplanet]=processmesh(md,results(i).(field),options);
+		[data datatype]=processdata(md,results(i).(field),options);
+
+		titlestring=[field ' at time ' num2str(results(i).time/md.constants.yts) ' year'];
+		plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+		options=changefieldvalue(options,'title',titlestring);
+		options=addfielddefault(options,'colorbar',1);
+		options=changefieldvalue(options,'caxis',[0 max(max(velocity))]);
+		applyoptions(md,[],options);
+
+		subplot(5,4,1:4)
+		cla
+		set(gca,'pos',get(gca,'pos')+[-0.07 0.03 0.12 0.015])
+		plot(starttime:endtime,mean(massbal),'k','LineWidth', 4)
+		hold on
+		ya = ylim;
+		plot([i i], ya, 'r', 'LineWidth',6)
+		ylim(ya); xlim([starttime endtime]);
+		title('Surface Mass Balance','FontSize',14)
+		ylabel('m/year','FontSize',14)
+
+		subplot(5,4,5:8)
+		cla
+		set(gca,'pos',get(gca,'pos')+[-0.07 0.015 0.12 0.015])
+		plot(starttime:endtime,sum(volume)/1000/1000/1000,'LineWidth',4)
+		hold on
+		ya = ylim;
+		plot([i i], ya, 'r', 'LineWidth',6)
+		ylim(ya); xlim([starttime endtime]);
+		title('Ice Volume','FontSize',14)
+		ylabel('km^3','FontSize',14)
+
+		subplot(5,4,9:12)
+		cla
+		set(gca,'pos',get(gca,'pos')+[-0.07 0 0.12 0.015])
+		plot(starttime:endtime,mean(velocity)/1000, 'LineWidth', 4)
+		hold on
+		ya = ylim;
+		plot([i i], ya, 'r', 'LineWidth',6)
+		ylim(ya); xlim([starttime endtime]);
+		title('Mean Velocity','FontSize', 14)
+		ylabel('km/year','FontSize', 14)
+		xlabel('year','FontSize', 14)
+
+		set(gcf,'Renderer','zbuffer','color','white'); %fixes a bug on Mac OS X (not needed in future Matlab version)
+		if i==starttime,
+			%initialize images and frame
+			frame=getframe(gcf);
+			[images,map]=rgb2ind(frame.cdata,256,'nodither');
+			images(1,1,1,length(ts))=0;
+		else
+			frame=getframe(gcf);
+			images(:,:,1,count) = rgb2ind(frame.cdata,map,'nodither');
+		end
+
+		count = count+1;
+
+	end
+
+	filename='transawtooth2d.gif';
+	imwrite(images,map,filename,'DelayTime',1.0,'LoopCount',inf)
+	"""
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1502.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1502.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1502.m	(revision 21239)
@@ -0,0 +1,214 @@
+%Test Name: SquareShelfTranSawTooth3d
+printingflag = false;
+
+md=triangle(model(),'../Exp/Square.exp',350000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md=extrude(md,3,1.);
+md.cluster=generic('name',oshostname(),'np',1);
+md.transient.isthermal=0;
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=2000.;
+
+%Solve for thinning rate -> -1 * surface mass balance
+smb= 2.*ones(md.mesh.numberofvertices,1);
+md.smb.mass_balance= smb;
+md.basalforcings.groundedice_melting_rate= smb;
+
+md=solve(md,'Masstransport');
+
+for i=1:10
+	 md=solve(md,'Masstransport');
+	 md.smb.mass_balance= md.smb.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness);
+end
+
+%Set up transient
+smb = md.smb.mass_balance;
+
+tooth= [ [ones(400,1)*(smb') - 10.]' [ones(400,1)*(smb')]' ];
+smb=[ [ones(399,1)*(smb')]' smb  tooth tooth];
+
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.:2000.];
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4', ...
+	'Vx5','Vy5','Vz5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SmbMassBalance5'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(400).Vx),...
+	(md.results.TransientSolution(400).Vy),...
+	(md.results.TransientSolution(400).Vz),...
+	(md.results.TransientSolution(400).Vel),...
+	(md.results.TransientSolution(400).Pressure),...
+	(md.results.TransientSolution(400).Base),...
+	(md.results.TransientSolution(400).Surface),...
+	(md.results.TransientSolution(400).Thickness),...
+	(md.results.TransientSolution(400).SmbMassBalance),...
+	(md.results.TransientSolution(800).Vx),...
+	(md.results.TransientSolution(800).Vy),...
+	(md.results.TransientSolution(800).Vz),...
+	(md.results.TransientSolution(800).Vel),...
+	(md.results.TransientSolution(800).Pressure),...
+	(md.results.TransientSolution(800).Base),...
+	(md.results.TransientSolution(800).Surface),...
+	(md.results.TransientSolution(800).Thickness),...
+	(md.results.TransientSolution(800).SmbMassBalance),...
+	(md.results.TransientSolution(1200).Vx),...
+	(md.results.TransientSolution(1200).Vy),...
+	(md.results.TransientSolution(1200).Vz),...
+	(md.results.TransientSolution(1200).Vel),...
+	(md.results.TransientSolution(1200).Pressure),...
+	(md.results.TransientSolution(1200).Base),...
+	(md.results.TransientSolution(1200).Surface),...
+	(md.results.TransientSolution(1200).Thickness),...
+	(md.results.TransientSolution(1200).SmbMassBalance),...
+	(md.results.TransientSolution(1600).Vx),...
+	(md.results.TransientSolution(1600).Vy),...
+	(md.results.TransientSolution(1600).Vz),...
+	(md.results.TransientSolution(1600).Vel),...
+	(md.results.TransientSolution(1600).Pressure),...
+	(md.results.TransientSolution(1600).Base),...
+	(md.results.TransientSolution(1600).Surface),...
+	(md.results.TransientSolution(1600).Thickness),...
+	(md.results.TransientSolution(1600).SmbMassBalance),...
+	(md.results.TransientSolution(2000).Vx),...
+	(md.results.TransientSolution(2000).Vy),...
+	(md.results.TransientSolution(2000).Vz),...
+	(md.results.TransientSolution(2000).Vel),...
+	(md.results.TransientSolution(2000).Pressure),...
+	(md.results.TransientSolution(2000).Base),...
+	(md.results.TransientSolution(2000).Surface),...
+	(md.results.TransientSolution(2000).Thickness),...
+	(md.results.TransientSolution(2000).SmbMassBalance),...
+	};
+
+if printingflag,
+
+	starttime = 360;
+	endtime = 2000;
+	res = 40;
+	ts = [starttime:res:endtime];
+
+	index = md.mesh.elements;
+	x1=md.mesh.x(index(:,1)); x2=md.mesh.x(index(:,2)); x3=md.mesh.x(index(:,3));
+	y1=md.mesh.y(index(:,1)); y2=md.mesh.y(index(:,2)); y3=md.mesh.y(index(:,3));
+	areas=(0.5*((x2-x1).*(y3-y1)-(y2-y1).*(x3-x1)));
+
+	thickness = [];
+	volume = [];
+	massbal = [];
+	velocity = [];
+	for t=starttime:endtime
+		thickness = [thickness (md.results.TransientSolution(t).Thickness)];
+		volume = [volume mean(md.results.TransientSolution(t).Thickness.value,2).*areas];
+		massbal = [massbal (md.results.TransientSolution(t).SmbMassBalance)];
+		velocity = [velocity (md.results.TransientSolution(t).Vel)];
+	end
+
+	figure('Position', [0 0 1060 1060])
+
+	options = plotoptions('data','transient_movie','unit','km');
+	options = options.list{1};
+	options = checkplotoptions(md,options);
+
+	%loop over the time steps
+	results=md.results.TransientSolution;
+	count = 1;
+	for i=ts
+
+		subplot(5,9,[28:31 37:40])
+		set(gca,'pos',get(gca,'pos')+[-0.08 -0.08 0.07 0.08])
+		field = 'Thickness';
+
+		%process data
+		[x y z elements is2d isplanet]=processmesh(md,results(i).(field),options);
+		[data datatype]=processdata(md,results(i).(field),options);
+
+		titlestring=[field ' at time ' num2str(results(i).time/md.constants.yts) ' year'];
+		plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+		options=changefieldvalue(options,'title',titlestring);
+		options=addfielddefault(options,'colorbar',1);
+		options=changefieldvalue(options,'caxis',[0 max(max(thickness))]);
+		applyoptions(md,[],options);
+
+		subplot(5,9,[33:36 42:45])
+		set(gca,'pos',get(gca,'pos')+[-0.01 -0.08 0.07 0.08])
+		field = 'Vel';
+
+		%process data
+		[x y z elements is2d isplanet]=processmesh(md,results(i).(field),options);
+		[data datatype]=processdata(md,results(i).(field),options);
+
+		titlestring=[field ' at time ' num2str(results(i).time/md.constants.yts) ' year'];
+		plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+		options=changefieldvalue(options,'title',titlestring);
+		options=addfielddefault(options,'colorbar',1);
+		options=changefieldvalue(options,'caxis',[0 max(max(velocity))]);
+		applyoptions(md,[],options);
+
+		subplot(5,4,1:4)
+		cla
+		set(gca,'pos',get(gca,'pos')+[-0.07 0.03 0.12 0.015])
+		plot(starttime:endtime,mean(massbal),'k','LineWidth', 4)
+		hold on
+		ya = ylim;
+		plot([i i], ya, 'r', 'LineWidth',6)
+		ylim(ya); xlim([starttime endtime]);
+		title('Surface Mass Balance','FontSize',14)
+		ylabel('m/year','FontSize',14)
+
+		subplot(5,4,5:8)
+		cla
+		set(gca,'pos',get(gca,'pos')+[-0.07 0.015 0.12 0.015])
+		plot(starttime:endtime,sum(volume)/1000/1000/1000,'LineWidth',4)
+		hold on
+		ya = ylim;
+		plot([i i], ya, 'r', 'LineWidth',6)
+		ylim(ya); xlim([starttime endtime]);
+		title('Ice Volume','FontSize',14)
+		ylabel('km^3','FontSize',14)
+
+		subplot(5,4,9:12)
+		cla
+		set(gca,'pos',get(gca,'pos')+[-0.07 0 0.12 0.015])
+		plot(starttime:endtime,mean(velocity)/1000, 'LineWidth', 4)
+		hold on
+		ya = ylim;
+		plot([i i], ya, 'r', 'LineWidth',6)
+		ylim(ya); xlim([starttime endtime]);
+		title('Mean Velocity','FontSize', 14)
+		ylabel('km/year','FontSize', 14)
+		xlabel('year','FontSize', 14)
+
+		set(gcf,'Renderer','zbuffer','color','white'); %fixes a bug on Mac OS X (not needed in future Matlab version)
+		if i==starttime,
+			%initialize images and frame
+			frame=getframe(gcf);
+			[images,map]=rgb2ind(frame.cdata,256,'nodither');
+			images(1,1,1,length(ts))=0;
+		else
+			frame=getframe(gcf);
+			images(:,:,1,count) = rgb2ind(frame.cdata,map,'nodither');
+		end
+
+		count = count+1;
+
+	end
+
+	filename='transawtooth3d.gif';
+	imwrite(images,map,filename,'DelayTime',1.0,'LoopCount',inf)
+
+end %printingflag
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1502.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1502.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1502.py	(revision 21239)
@@ -0,0 +1,228 @@
+#Test Name: SquareShelfTranSawTooth3d
+import numpy
+import sys
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+printingflag = False
+
+md=triangle(model(),'../Exp/Square.exp',450000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md=setflowequation(md,'SSA','all')
+md.extrude(3,1.)
+md.cluster=generic('name',oshostname(),'np',2)
+md.transient.isthermal=False
+
+md.timestepping.time_step=1.
+md.settings.output_frequency=1
+md.timestepping.final_time=2000.
+
+#Solve for thinning rate -> -1 * surface mass balance
+smb= 2.*numpy.ones((md.mesh.numberofvertices,1))
+md.smb.mass_balance= smb
+md.basalforcings.groundedice_melting_rate= smb
+
+md=solve(md,'Masstransport')
+
+for i in xrange(1,11):
+	 md=solve(md,'Masstransport')
+	 md.smb.mass_balance= md.smb.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness)
+
+#Set up transient
+smb = md.smb.mass_balance
+
+#tooth= [ [ones(400,1)*(smb') - 10.]' [ones(400,1)*(smb')]' ];
+tooth=numpy.hstack((numpy.tile(smb-10.,(1,400)),numpy.tile(smb,(1,400))))
+#smb=[ [ones(399,1)*(smb')]' smb  tooth tooth];
+smb=numpy.hstack((numpy.tile(smb,(1,399)),smb,tooth,tooth))
+
+#md.smb.mass_balance= smb;
+#md.smb.mass_balance(end+1,:)=[1.:2000.];
+md.smb.mass_balance=numpy.vstack((smb,numpy.arange(1,2001)))
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names=['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4', \
+	'Vx5','Vy5','Vz5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SmbMassBalance5']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[400-1].Vx,\
+	md.results.TransientSolution[400-1].Vy,\
+	md.results.TransientSolution[400-1].Vz,\
+	md.results.TransientSolution[400-1].Vel,\
+	md.results.TransientSolution[400-1].Pressure,\
+	md.results.TransientSolution[400-1].Base,\
+	md.results.TransientSolution[400-1].Surface,\
+	md.results.TransientSolution[400-1].Thickness,\
+	md.results.TransientSolution[400-1].SmbMassBalance,\
+	md.results.TransientSolution[800-1].Vx,\
+	md.results.TransientSolution[800-1].Vy,\
+	md.results.TransientSolution[800-1].Vz,\
+	md.results.TransientSolution[800-1].Vel,\
+	md.results.TransientSolution[800-1].Pressure,\
+	md.results.TransientSolution[800-1].Base,\
+	md.results.TransientSolution[800-1].Surface,\
+	md.results.TransientSolution[800-1].Thickness,\
+	md.results.TransientSolution[800-1].SmbMassBalance,\
+	md.results.TransientSolution[1200-1].Vx,\
+	md.results.TransientSolution[1200-1].Vy,\
+	md.results.TransientSolution[1200-1].Vz,\
+	md.results.TransientSolution[1200-1].Vel,\
+	md.results.TransientSolution[1200-1].Pressure,\
+	md.results.TransientSolution[1200-1].Base,\
+	md.results.TransientSolution[1200-1].Surface,\
+	md.results.TransientSolution[1200-1].Thickness,\
+	md.results.TransientSolution[1200-1].SmbMassBalance,\
+	md.results.TransientSolution[1600-1].Vx,\
+	md.results.TransientSolution[1600-1].Vy,\
+	md.results.TransientSolution[1600-1].Vz,\
+	md.results.TransientSolution[1600-1].Vel,\
+	md.results.TransientSolution[1600-1].Pressure,\
+	md.results.TransientSolution[1600-1].Base,\
+	md.results.TransientSolution[1600-1].Surface,\
+	md.results.TransientSolution[1600-1].Thickness,\
+	md.results.TransientSolution[1600-1].SmbMassBalance,\
+	md.results.TransientSolution[2000-1].Vx,\
+	md.results.TransientSolution[2000-1].Vy,\
+	md.results.TransientSolution[2000-1].Vz,\
+	md.results.TransientSolution[2000-1].Vel,\
+	md.results.TransientSolution[2000-1].Pressure,\
+	md.results.TransientSolution[2000-1].Base,\
+	md.results.TransientSolution[2000-1].Surface,\
+	md.results.TransientSolution[2000-1].Thickness,\
+	md.results.TransientSolution[2000-1].SmbMassBalance,\
+	]
+
+if printingflag:
+	pass
+	"""
+
+	starttime = 360;
+	endtime = 2000;
+	res = 40;
+	ts = [starttime:res:endtime];
+
+	index = md.mesh.elements;
+	x1=md.mesh.x(index(:,1)); x2=md.mesh.x(index(:,2)); x3=md.mesh.x(index(:,3));
+	y1=md.mesh.y(index(:,1)); y2=md.mesh.y(index(:,2)); y3=md.mesh.y(index(:,3));
+	areas=(0.5*((x2-x1).*(y3-y1)-(y2-y1).*(x3-x1)));
+
+	thickness = [];
+	volume = [];
+	massbal = [];
+	velocity = [];
+	for t=starttime:endtime
+		thickness = [thickness (md.results.TransientSolution(t).Thickness)];
+		volume = [volume mean(md.results.TransientSolution(t).Thickness.value,2).*areas];
+		massbal = [massbal (md.results.TransientSolution(t).SmbMassBalance)];
+		velocity = [velocity (md.results.TransientSolution(t).Vel)];
+	end
+
+	figure('Position', [0 0 1060 1060])
+
+	options = plotoptions('data','transient_movie','unit','km');
+	options = options.list{1};
+	options = checkplotoptions(md,options);
+
+	%loop over the time steps
+	results=md.results.TransientSolution;
+	count = 1;
+	for i=ts
+
+		subplot(5,9,[28:31 37:40])
+		set(gca,'pos',get(gca,'pos')+[-0.08 -0.08 0.07 0.08])
+		field = 'Thickness';
+
+		%process data
+		[x y z elements is2d isplanet]=processmesh(md,results(i).(field),options);
+		[data datatype]=processdata(md,results(i).(field),options);
+
+		titlestring=[field ' at time ' num2str(results(i).time/md.constants.yts) ' year'];
+		plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+		options=changefieldvalue(options,'title',titlestring);
+		options=addfielddefault(options,'colorbar',1);
+		options=changefieldvalue(options,'caxis',[0 max(max(thickness))]);
+		applyoptions(md,[],options);
+
+		subplot(5,9,[33:36 42:45])
+		set(gca,'pos',get(gca,'pos')+[-0.01 -0.08 0.07 0.08])
+		field = 'Vel';
+
+		%process data
+		[x y z elements is2d isplanet]=processmesh(md,results(i).(field),options);
+		[data datatype]=processdata(md,results(i).(field),options);
+
+		titlestring=[field ' at time ' num2str(results(i).time/md.constants.yts) ' year'];
+		plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+		options=changefieldvalue(options,'title',titlestring);
+		options=addfielddefault(options,'colorbar',1);
+		options=changefieldvalue(options,'caxis',[0 max(max(velocity))]);
+		applyoptions(md,[],options);
+
+		subplot(5,4,1:4)
+		cla
+		set(gca,'pos',get(gca,'pos')+[-0.07 0.03 0.12 0.015])
+		plot(starttime:endtime,mean(massbal),'k','LineWidth', 4)
+		hold on
+		ya = ylim;
+		plot([i i], ya, 'r', 'LineWidth',6)
+		ylim(ya); xlim([starttime endtime]);
+		title('Surface Mass Balance','FontSize',14)
+		ylabel('m/year','FontSize',14)
+
+		subplot(5,4,5:8)
+		cla
+		set(gca,'pos',get(gca,'pos')+[-0.07 0.015 0.12 0.015])
+		plot(starttime:endtime,sum(volume)/1000/1000/1000,'LineWidth',4)
+		hold on
+		ya = ylim;
+		plot([i i], ya, 'r', 'LineWidth',6)
+		ylim(ya); xlim([starttime endtime]);
+		title('Ice Volume','FontSize',14)
+		ylabel('km^3','FontSize',14)
+
+		subplot(5,4,9:12)
+		cla
+		set(gca,'pos',get(gca,'pos')+[-0.07 0 0.12 0.015])
+		plot(starttime:endtime,mean(velocity)/1000, 'LineWidth', 4)
+		hold on
+		ya = ylim;
+		plot([i i], ya, 'r', 'LineWidth',6)
+		ylim(ya); xlim([starttime endtime]);
+		title('Mean Velocity','FontSize', 14)
+		ylabel('km/year','FontSize', 14)
+		xlabel('year','FontSize', 14)
+
+		set(gcf,'Renderer','zbuffer','color','white'); %fixes a bug on Mac OS X (not needed in future Matlab version)
+		if i==starttime,
+			%initialize images and frame
+			frame=getframe(gcf);
+			[images,map]=rgb2ind(frame.cdata,256,'nodither');
+			images(1,1,1,length(ts))=0;
+		else
+			frame=getframe(gcf);
+			images(:,:,1,count) = rgb2ind(frame.cdata,map,'nodither');
+		end
+
+		count = count+1;
+
+	end
+
+	filename='transawtooth3d.gif';
+	imwrite(images,map,filename,'DelayTime',1.0,'LoopCount',inf)
+	"""
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1601.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1601.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1601.m	(revision 21239)
@@ -0,0 +1,46 @@
+%Test Name: SquareShelfSSA2dRotation
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.stressbalance.spcvx(find(md.mesh.y>0.))=NaN;
+md.initialization.vx(:)=0.;
+md.initialization.vy(:)=0.;
+md.initialization.vel(:)=0.;
+
+md.cluster=generic('name',oshostname(),'np',2);
+md=solve(md,'Stressbalance');
+vel0=md.results.StressbalanceSolution.Vel;
+
+theta=30.*pi/180.;
+x=md.mesh.x;
+y=md.mesh.y;
+md.mesh.x=cos(theta)*x-sin(theta)*y;
+md.mesh.y=sin(theta)*x+cos(theta)*y;
+
+md.stressbalance.referential(:,1:3)=repmat([cos(theta),sin(theta),0],md.mesh.numberofvertices,1);
+md.stressbalance.referential(:,4:6)=repmat([0,0,1],md.mesh.numberofvertices,1);
+md=solve(md,'Stressbalance');
+vel1=md.results.StressbalanceSolution.Vel;
+
+plotmodel(md,'data',vel0,'data',vel1,'data',vel1-vel0,'title','Cartesian CS','title','Rotated CS','title','difference')
+disp(['Error between Cartesian and rotated CS: ' num2str(max(abs(vel0-vel1))/(max(abs(vel0))+eps)) ]);
+
+%Now, put CS back to normal except on the side where the spc are applied
+pos=find(x==0. | x==1000000.);
+md.stressbalance.referential(:)=NaN;
+md.stressbalance.referential(pos,1:3)=repmat([cos(theta),sin(theta),0],size(pos,1),1);
+md.stressbalance.referential(pos,4:6)=repmat([0,0,1],size(pos,1),1);
+md=solve(md,'Stressbalance');
+vel2=md.results.StressbalanceSolution.Vel;
+
+plotmodel(md,'data',vel0,'data',vel2,'data',vel2-vel0,'title','Cartesian CS','title','Rotated CS','title','difference')
+disp(['Error between Cartesian and rotated CS: ' num2str(max(abs(vel0-vel2))/(max(abs(vel0))+eps)) ]);
+
+%Fields and tolerances to track changes
+field_names     ={'vel1','vel2'};
+field_tolerances={1e-11,1e-11};
+field_values={...
+	vel1, ...
+	vel2, ...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1601.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1601.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1601.py	(revision 21239)
@@ -0,0 +1,56 @@
+#Test Name: SquareShelfSSA2dRotation
+import numpy
+import sys
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md=setflowequation(md,'SSA','all')
+md.stressbalance.spcvx[numpy.nonzero(md.mesh.y>0.)]=float('NaN')
+md.initialization.vx[:]=0.
+md.initialization.vy[:]=0.
+md.initialization.vel=numpy.zeros_like(md.initialization.vx)
+
+md.cluster=generic('name',oshostname(),'np',2)
+md=solve(md,'Stressbalance')
+vel0=md.results.StressbalanceSolution.Vel
+
+theta=30.*numpy.pi/180.
+x=md.mesh.x
+y=md.mesh.y
+md.mesh.x=numpy.cos(theta)*x-numpy.sin(theta)*y
+md.mesh.y=numpy.sin(theta)*x+numpy.cos(theta)*y
+
+md.stressbalance.referential[:,0:3]=numpy.tile([numpy.cos(theta),numpy.sin(theta),0],(md.mesh.numberofvertices,1))
+md.stressbalance.referential[:,3: ]=numpy.tile([0,0,1],(md.mesh.numberofvertices,1))
+md=solve(md,'Stressbalance')
+vel1=md.results.StressbalanceSolution.Vel
+
+#plotmodel(md,'data',vel0,'data',vel1,'data',vel1-vel0,'title','Cartesian CS','title','Rotated CS','title','difference')
+print "Error between Cartesian and rotated CS: %g" % (numpy.max(numpy.abs(vel0-vel1))/(numpy.max(numpy.abs(vel0))+sys.float_info.epsilon))
+
+#Now, put CS back to normal except on the side where the spc are applied
+pos=numpy.nonzero(numpy.logical_or(x==0.,x==1000000.))[0]
+md.stressbalance.referential[:]=float('NaN')
+md.stressbalance.referential[pos,0:3]=numpy.tile([numpy.cos(theta),numpy.sin(theta),0],(len(pos),1))
+md.stressbalance.referential[pos,3: ]=numpy.tile([0,0,1],(len(pos),1))
+md=solve(md,'Stressbalance')
+vel2=md.results.StressbalanceSolution.Vel
+
+#plotmodel(md,'data',vel0,'data',vel2,'data',vel2-vel0,'title','Cartesian CS','title','Rotated CS','title','difference')
+print "Error between Cartesian and rotated CS: %g" % (numpy.max(numpy.abs(vel0-vel2))/(numpy.max(numpy.abs(vel0))+sys.float_info.epsilon))
+
+#Fields and tolerances to track changes
+field_names     =['vel1','vel2']
+field_tolerances=[1e-11,1e-11]
+field_values=[\
+	vel1, \
+	vel2, \
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1602.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1602.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1602.m	(revision 21239)
@@ -0,0 +1,35 @@
+%Test Name: SquareSheetShelfHORotation
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'HO','all');
+md.stressbalance.spcvx(find(md.mesh.y>0.))=NaN;
+md.initialization.vx(:)=0.;
+md.initialization.vy(:)=0.;
+md.initialization.vel(:)=0.;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+vel0=md.results.StressbalanceSolution.Vel;
+
+theta=30.*pi/180.;
+x=md.mesh.x;
+y=md.mesh.y;
+md.mesh.x=cos(theta)*x-sin(theta)*y;
+md.mesh.y=sin(theta)*x+cos(theta)*y;
+
+md.stressbalance.referential(:,1:3)=repmat([cos(theta),sin(theta),0],md.mesh.numberofvertices,1);
+md.stressbalance.referential(:,4:6)=repmat([0,0,1],md.mesh.numberofvertices,1);
+md=solve(md,'Stressbalance');
+vel1=md.results.StressbalanceSolution.Vel;
+
+plotmodel(md,'data',vel0,'data',vel1,'data',vel1-vel0,'title','Cartesian CS','title','Rotated CS','title','difference','view#all',2)
+disp(['Error between Cartesian and rotated CS: ' num2str(max(abs(vel0-vel1))/(max(abs(vel0))+eps)) ]);
+
+%Fields and tolerances to track changes
+field_names     ={'vel1'};
+field_tolerances={1e-9};
+field_values={...
+	vel1, ...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1602.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1602.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test1602.py	(revision 21239)
@@ -0,0 +1,45 @@
+#Test Name: SquareSheetShelfHORotation
+import numpy
+import sys
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(5,1.)
+md=setflowequation(md,'HO','all')
+md.stressbalance.spcvx[numpy.nonzero(md.mesh.y>0.)]=float('NaN')
+md.initialization.vx[:]=0.
+md.initialization.vy[:]=0.
+md.initialization.vel=numpy.zeros_like(md.initialization.vx)
+
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+vel0=md.results.StressbalanceSolution.Vel
+
+theta=30.*numpy.pi/180.
+x=md.mesh.x
+y=md.mesh.y
+md.mesh.x=numpy.cos(theta)*x-numpy.sin(theta)*y
+md.mesh.y=numpy.sin(theta)*x+numpy.cos(theta)*y
+
+md.stressbalance.referential[:,0:3]=numpy.tile([numpy.cos(theta),numpy.sin(theta),0],(md.mesh.numberofvertices,1))
+md.stressbalance.referential[:,3: ]=numpy.tile([0,0,1],(md.mesh.numberofvertices,1))
+md=solve(md,'Stressbalance')
+vel1=md.results.StressbalanceSolution.Vel
+
+#plotmodel(md,'data',vel0,'data',vel1,'data',vel1-vel0,'title','Cartesian CS','title','Rotated CS','title','difference','view#all',2)
+print "Error between Cartesian and rotated CS: %g" % (numpy.max(numpy.abs(vel0-vel1))/(numpy.max(numpy.abs(vel0))+sys.float_info.epsilon))
+
+#Fields and tolerances to track changes
+field_names     =['vel1']
+field_tolerances=[1e-9]
+field_values=[\
+	vel1, \
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2001.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2001.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2001.m	(revision 21239)
@@ -0,0 +1,30 @@
+%Test Name: SquareSheetConstrainedGia2d
+%GIA test, inspired on test101
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+
+%% indicate what you want to compute 
+md.gia.cross_section_shape=1;    % for square-edged x-section 
+
+%% define loading history 
+md.timestepping.start_time=2400000; %2,400 kyr :: EVALUATION TIME
+% to get rid of default final_time: make sure final_time>start_time
+md.timestepping.final_time=2500000; %2,500 kyr
+md.geometry.thickness=[...
+	[md.geometry.thickness; 0.0],...
+	[md.geometry.thickness; md.timestepping.start_time],...
+	];
+
+%% solve for GIA deflection 
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('1111111');
+md=solve(md,'Gia');
+
+%Fields and tolerances to track changes
+field_names     ={'GiaW','GiadWdt'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.GiaSolution.GiaW),...
+	(md.results.GiaSolution.GiadWdt),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2001.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2001.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2001.py	(revision 21239)
@@ -0,0 +1,43 @@
+#Test Name: SquareSheetConstrainedGia2d
+import numpy
+import copy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+#Define a model 
+md=model()
+md=triangle(md,'../Exp/Square.exp',100000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+
+#Indicate what you want to compute 
+md.gia.cross_section_shape=1    # for square-edged x-section 
+
+#Define loading history (see test2001.m for the description)
+md.timestepping.start_time=2400000 # 2,400 kyr
+md.timestepping.final_time=2500000 # 2,500 kyr
+md.geometry.thickness=numpy.hstack((\
+		numpy.vstack((md.geometry.thickness*0.0, 0.0)),\
+		numpy.vstack((md.geometry.thickness/2.0, 0.1)),\
+		numpy.vstack((md.geometry.thickness, 0.2)),\
+		numpy.vstack((md.geometry.thickness, 1.0)),\
+		numpy.vstack((md.geometry.thickness, md.timestepping.start_time)),\
+		))
+
+#Solve for GIA deflection 
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Gia')
+
+#Fields and tolerances to track changes
+field_names     =['GiaW','GiadWdt']
+field_tolerances=[1e-13,1e-13]
+field_values    =[\
+		md.results.GiaSolution.GiaW,\
+		md.results.GiaSolution.GiadWdt,\
+		]
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2002.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2002.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2002.m	(revision 21239)
@@ -0,0 +1,88 @@
+%Test Name: EarthSlr
+
+%mesh earth: 
+md=model; 
+md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',700.); %500 km resolution mesh
+
+%parameterize slr solution:
+%slr loading:  {{{
+md.slr.deltathickness=zeros(md.mesh.numberofelements,1);
+md.slr.sealevel=zeros(md.mesh.numberofvertices,1);
+%antarctica
+late=sum(md.mesh.lat(md.mesh.elements),2)/3;
+longe=sum(md.mesh.long(md.mesh.elements),2)/3;
+pos=find(late <-80);
+md.slr.deltathickness(pos)=-100;
+%greenland 
+pos=find(late > 70 &  late < 80 & longe>-60 & longe<-30);
+md.slr.deltathickness(pos)=-100;
+
+%elastic loading from love numbers: 
+nlov=101;
+md.slr.love_h = love_numbers('h'); md.slr.love_h(nlov+1:end)=[];
+md.slr.love_k = love_numbers('k'); md.slr.love_k(nlov+1:end)=[];
+md.slr.love_l = love_numbers('l'); md.slr.love_l(nlov+1:end)=[];
+
+%}}}
+%mask:  {{{
+md.mask=maskpsl(); % use maskpsl class (instead of mask) to store the ocean function as a ocean_levelset 
+mask=gmtmask(md.mesh.lat,md.mesh.long); 
+
+icemask=ones(md.mesh.numberofvertices,1);
+pos=find(mask==0);  icemask(pos)=-1;
+pos=find(sum(mask(md.mesh.elements),2)<3);   icemask(md.mesh.elements(pos,:))=-1;
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=zeros(md.mesh.numberofvertices,1);
+pos=find(md.mask.ice_levelset==1); md.mask.ocean_levelset(pos)=1;
+
+%make sure that the ice level set is all inclusive:
+md.mask.land_levelset=zeros(md.mesh.numberofvertices,1);
+md.mask.groundedice_levelset=-ones(md.mesh.numberofvertices,1); 
+
+%make sure wherever there is an ice load, that the mask is set to ice: 
+pos=find(md.slr.deltathickness); md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+% }}}
+
+%geometry
+di=md.materials.rho_ice/md.materials.rho_water;
+md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+md.geometry.surface=(1-di)*zeros(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.surface-md.geometry.thickness;
+md.geometry.bed=md.geometry.base;
+
+%materials
+md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+%Miscellaneous
+md.miscellaneous.name='test2002';
+
+%Solution parameters
+md.slr.reltol=NaN;
+md.slr.abstol=1e-3;
+
+%eustatic run: 
+md.slr.rigid=0; md.slr.elastic=0;
+md=solve(md,'Sealevelrise');
+Seustatic=md.results.SealevelriseSolution.Sealevel;
+
+%eustatic + rigid run: 
+md.slr.rigid=1; md.slr.elastic=0;
+md=solve(md,'Sealevelrise');
+Srigid=md.results.SealevelriseSolution.Sealevel;
+
+%eustatic + rigid + elastic run: 
+md.slr.rigid=1; md.slr.elastic=1;
+md=solve(md,'Sealevelrise');
+Selastic=md.results.SealevelriseSolution.Sealevel;
+
+%eustatic + rigid + elastic + rotation run: 
+md.slr.rigid=1; md.slr.elastic=1; md.slr.rotation=1;
+md=solve(md,'Sealevelrise');
+Srotation=md.results.SealevelriseSolution.Sealevel;
+
+%Fields and tolerances to track changes
+field_names     ={'Eustatic','Rigid','Elastic','Rotation'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={Seustatic,Srigid,Selastic,Srotation};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2002.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2002.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2002.py	(revision 21239)
@@ -0,0 +1,108 @@
+#Test Name: EarthSlr
+from MatlabFuncs import *
+from PythonFuncs import *
+from model import *
+from numpy import *
+from parameterize import *
+from solve import *
+from gmshplanet import *
+from maskpsl import *
+from gmtmask import *
+from paterson import *
+from love_numbers import *
+
+#mesh earth: 
+md=model() 
+md.mesh=gmshplanet('radius',6.371012*10**3,'resolution',700.) #500 km resolution mesh
+
+#parameterize slr solution:
+#slr loading:  {{{
+md.slr.deltathickness=zeros((md.mesh.numberofelements,1))
+md.slr.sealevel=zeros((md.mesh.numberofvertices,1))
+#antarctica
+late=numpy.sum(md.mesh.lat[md.mesh.elements-1],axis=1)/3
+longe=numpy.sum(md.mesh.long[md.mesh.elements-1],axis=1)/3
+pos=numpy.nonzero(late <-80)
+md.slr.deltathickness[pos]=-100
+#greenland 
+pos=numpy.nonzero(logical_and_n(late > 70,late < 80,longe>-60,longe<-30))
+md.slr.deltathickness[pos]=-100
+
+#elastic loading from love numbers: 
+nlov=101
+md.slr.love_h = love_numbers('h')[:nlov];
+md.slr.love_k = love_numbers('k')[:nlov];
+md.slr.love_l = love_numbers('l')[:nlov];
+
+#}}}
+#mask:  {{{
+md.mask=maskpsl() # use maskpsl class (instead of mask) to store the ocean function as a ocean_levelset 
+mask=gmtmask(md.mesh.lat,md.mesh.long) 
+
+icemask=ones((md.mesh.numberofvertices,1))
+pos=nonzero(mask==0)[0];  icemask[pos]=-1
+pos=nonzero(sum(mask[md.mesh.elements.astype(int)-1],axis=1)<3)[0]
+icemask[md.mesh.elements[pos,:].astype(int)-1]=-1
+md.mask.ice_levelset=icemask
+
+md.mask.ocean_levelset=zeros((md.mesh.numberofvertices,1))
+pos=numpy.nonzero(md.mask.ice_levelset==1)
+md.mask.ocean_levelset[pos]=1
+
+#make sure that the ice level set is all inclusive:
+md.mask.land_levelset=zeros((md.mesh.numberofvertices,1))
+md.mask.groundedice_levelset=-ones((md.mesh.numberofvertices,1))
+
+#make sure wherever there is an ice load, that the mask is set to ice: 
+pos=nonzero(md.slr.deltathickness)[0];
+icemask[md.mesh.elements[pos,:]-1]=-1
+# }}}
+
+#geometry
+di=md.materials.rho_ice/md.materials.rho_water
+md.geometry.thickness=ones((md.mesh.numberofvertices,1))
+md.geometry.surface=(1-di)*zeros((md.mesh.numberofvertices,1))
+md.geometry.base=md.geometry.surface-md.geometry.thickness
+md.geometry.bed=md.geometry.base
+
+#materials
+md.initialization.temperature=273.25*ones((md.mesh.numberofvertices,1))
+md.materials.rheology_B=paterson(md.initialization.temperature)
+md.materials.rheology_n=3*ones((md.mesh.numberofelements,1))
+
+#Miscellaneous
+md.miscellaneous.name='test2002'
+
+#Solution parameters
+md.slr.reltol=NaN
+md.slr.abstol=1e-3
+
+#eustatic run: 
+md.slr.rigid=0
+md.slr.elastic=0
+md=solve(md,'Sealevelrise')
+Seustatic=md.results.SealevelriseSolution.Sealevel;
+
+#eustatic + rigid run: 
+md.slr.rigid=1
+md.slr.elastic=0
+md=solve(md,'Sealevelrise')
+Srigid=md.results.SealevelriseSolution.Sealevel;
+
+#eustatic + rigid + elastic run: 
+md.slr.rigid=1
+md.slr.elastic=1
+md=solve(md,'Sealevelrise')
+Selastic=md.results.SealevelriseSolution.Sealevel;
+
+#eustatic + rigid + elastic + rotation run: 
+md.slr.rigid=1
+md.slr.elastic=1
+md.slr.rotation=1;
+md=solve(md,'Sealevelrise');
+Srotation=md.results.SealevelriseSolution.Sealevel;
+
+#Fields and tolerances to track changes
+field_names     =['Eustatic','Rigid','Elastic','Rotation']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13]
+field_values=[Seustatic,Srigid,Selastic,Srotation]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test201.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test201.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test201.js	(revision 21239)
@@ -0,0 +1,18 @@
+//Test Name: SquareShelfStressSSA2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vel','Pressure'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test201.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test201.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test201.m	(revision 21239)
@@ -0,0 +1,17 @@
+%Test Name: SquareShelfStressSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test201.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test201.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test201.py	(revision 21239)
@@ -0,0 +1,26 @@
+#Test Name: SquareShelfStressSSA2d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+from ContourToMesh import *
+
+md=triangle(model(),'../Exp/Square.exp',150000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vel','Pressure']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test202.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test202.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test202.js	(revision 21239)
@@ -0,0 +1,20 @@
+//Test Name: SquareShelfStressSSA3d
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,2.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test202.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test202.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test202.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: SquareShelfStressSSA3d
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test202.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test202.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test202.py	(revision 21239)
@@ -0,0 +1,31 @@
+#Test Name: SquareShelfStressSSA3d
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',180000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,2.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+
+# Fields and tolerances to track changes
+
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test203.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test203.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test203.js	(revision 21239)
@@ -0,0 +1,20 @@
+//Test Name: SquareShelfStressHO
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,2.);
+setflowequation(md,'HO','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure'];
+field_tolerances=[2e-09,1e-09,1e-09,1e-09,1e-09];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test203.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test203.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test203.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: SquareShelfStressHO
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={2e-09,1e-09,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test203.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test203.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test203.py	(revision 21239)
@@ -0,0 +1,31 @@
+#Test Name: SquareShelfStressHO
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',180000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,2.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+
+# Fields and tolerances to track changes
+
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[2e-09,1e-09,1e-09,1e-09,1e-09]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test204.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test204.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test204.js	(revision 21239)
@@ -0,0 +1,29 @@
+//Test Name: SquareShelfStressFS
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,2.);
+setflowequation(md,'FS','all');
+//md.cluster=generic('name',oshostname(),'np',1);
+md.stressbalance.shelf_dampening=1;
+md.timestepping.time_step=0;
+md1=solve(md,'Stressbalance');
+md.stressbalance.shelf_dampening=0;
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure','Vx_damp','Vy_damp','Vz_damp','Vel_damp','Pressure_damp'];
+field_tolerances=[1e-08,1e-08,2e-06,1e-08,1e-08,1e-08,1e-08,2e-07,1e-08,1e-08];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	(md1.results.StressbalanceSolution.Vx),
+	(md1.results.StressbalanceSolution.Vy),
+	(md1.results.StressbalanceSolution.Vz),
+	(md1.results.StressbalanceSolution.Vel),
+	(md1.results.StressbalanceSolution.Pressure),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test204.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test204.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test204.m	(revision 21239)
@@ -0,0 +1,28 @@
+%Test Name: SquareShelfStressFS
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'FS','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.stressbalance.shelf_dampening=1;
+md.timestepping.time_step=0;
+md1=solve(md,'Stressbalance');
+md.stressbalance.shelf_dampening=0;
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Vx_damp','Vy_damp','Vz_damp','Vel_damp','Pressure_damp'};
+field_tolerances={1e-08,1e-08,2e-06,1e-08,1e-08,1e-08,1e-08,2e-07,1e-08,1e-08};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md1.results.StressbalanceSolution.Vx),...
+	(md1.results.StressbalanceSolution.Vy),...
+	(md1.results.StressbalanceSolution.Vz),...
+	(md1.results.StressbalanceSolution.Vel),...
+	(md1.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test204.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test204.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test204.py	(revision 21239)
@@ -0,0 +1,35 @@
+#Test Name: SquareShelfStressFS
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',180000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,2.)
+md=setflowequation(md,'FS','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.stressbalance.shelf_dampening=1;
+md.timestepping.time_step=0;
+md1=solve(md,'Stressbalance')
+md.stressbalance.shelf_dampening=0;
+md=solve(md,'Stressbalance')
+
+
+# Fields and tolerances to track changes
+
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-08,1e-08,2e-06,1e-08,1e-08]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test205.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test205.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test205.js	(revision 21239)
@@ -0,0 +1,20 @@
+//Test Name: SquareShelfStressMHOPenalties
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,2.);
+setflowequation(md,'HO','../Exp/SquareHalfRight.exp','fill','SSA','coupling','penalties');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure'];
+field_tolerances=[2e-05,2e-05,1e-05,1e-05,1e-05];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test205.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test205.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test205.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: SquareShelfStressMHOPenalties
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','../Exp/SquareHalfRight.exp','fill','SSA','coupling','penalties');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={2e-05,2e-05,1e-05,1e-05,1e-05};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test205.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test205.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test205.py	(revision 21239)
@@ -0,0 +1,31 @@
+#Test Name: SquareShelfStressMHOPenalties
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',150000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,2.)
+md=setflowequation(md,'HO','../Exp/SquareHalfRight.exp','fill','SSA','coupling','penalties')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+
+# Fields and tolerances to track changes
+
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[2e-05,2e-05,1e-05,1e-05,1e-05]
+field_values=[\
+md.results.StressbalanceSolution.Vx,\
+md.results.StressbalanceSolution.Vy,\
+md.results.StressbalanceSolution.Vz,\
+md.results.StressbalanceSolution.Vel,\
+md.results.StressbalanceSolution.Pressure,\
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2051.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2051.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2051.m	(revision 21239)
@@ -0,0 +1,32 @@
+%Test Name: GiaBenchmarksAB2dA1
+% Benchmark experiments (Figure A2a Ivins and James, 1999, Geophys. J. Int.) 
+md=triangle(model(),'../Exp/RoundFrontEISMINT.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/GiaBenchmarksAB.par');
+
+%% indicate what you want to compute 
+md.gia.cross_section_shape=1;    % for square-edged x-section 
+
+%% define loading history 
+md.timestepping.start_time=2002100; % after 2 kyr of deglaciation 
+md.timestepping.final_time=2500000; % 2,500 kyr
+md.geometry.thickness=[...
+	[md.geometry.thickness*0.0; 0.0],...
+	[md.geometry.thickness; 1000],...
+	[md.geometry.thickness; 2000000],...
+	[md.geometry.thickness*0.0; 2000100],...
+	[md.geometry.thickness*0.0; md.timestepping.start_time],...
+	];
+
+%% solve for GIA deflection 
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('1111111');
+md=solve(md,'Gia');
+
+%Fields and tolerances to track changes
+field_names     ={'GiaW','GiadWdt'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.GiaSolution.GiaW),...
+	(md.results.GiaSolution.GiadWdt),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2052.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2052.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2052.m	(revision 21239)
@@ -0,0 +1,32 @@
+%Test Name: GiaBenchmarksAB2dA2
+% Benchmark experiments (Figure A2a Ivins and James, 1999, Geophys. J. Int.) 
+md=triangle(model(),'../Exp/RoundFrontEISMINT.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/GiaBenchmarksAB.par');
+
+%% indicate what you want to compute 
+md.gia.cross_section_shape=1;    % for square-edged x-section 
+
+%% define loading history 
+md.timestepping.start_time=2005100; % after 5 kyr of deglaciation 
+md.timestepping.final_time=2500000; % 2,500 kyr
+md.geometry.thickness=[...
+	[md.geometry.thickness*0.0; 0.0],...
+	[md.geometry.thickness; 1000],...
+	[md.geometry.thickness; 2000000],...
+	[md.geometry.thickness*0.0; 2000100],...
+	[md.geometry.thickness*0.0; md.timestepping.start_time],...
+	];
+
+%% solve for GIA deflection 
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('1111111');
+md=solve(md,'Gia');
+
+%Fields and tolerances to track changes
+field_names     ={'GiaW','GiadWdt'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.GiaSolution.GiaW),...
+	(md.results.GiaSolution.GiadWdt),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2053.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2053.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2053.m	(revision 21239)
@@ -0,0 +1,32 @@
+%Test Name: GiaBenchmarksAB2dA3
+% Benchmark experiments (Figure A2a Ivins and James, 1999, Geophys. J. Int.) 
+md=triangle(model(),'../Exp/RoundFrontEISMINT.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/GiaBenchmarksAB.par');
+
+%% indicate what you want to compute 
+md.gia.cross_section_shape=1;    % for square-edged x-section 
+
+%% define loading history 
+md.timestepping.start_time=2010100; % after 10 kyr of deglaciation 
+md.timestepping.final_time=2500000; % 2,500 kyr
+md.geometry.thickness=[...
+	[md.geometry.thickness*0.0; 0.0],...
+	[md.geometry.thickness; 1000],...
+	[md.geometry.thickness; 2000000],...
+	[md.geometry.thickness*0.0; 2000100],...
+	[md.geometry.thickness*0.0; md.timestepping.start_time],...
+	];
+
+%% solve for GIA deflection 
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('1111111');
+md=solve(md,'Gia');
+
+%Fields and tolerances to track changes
+field_names     ={'GiaW','GiadWdt'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.GiaSolution.GiaW),...
+	(md.results.GiaSolution.GiadWdt),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test206.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test206.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test206.js	(revision 21239)
@@ -0,0 +1,18 @@
+//Test Name: SquareShelfTherStea
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+md.timestepping.time_step=0;
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Thermal');
+
+//Fields and tolerances to track changes
+field_names     =['Temperature','BasalforcingsGroundediceMeltingRate'];
+field_tolerances=[1e-13,5e-6];
+field_values=[
+	(md.results.ThermalSolution[0].Temperature),
+	(md.results.ThermalSolution[0].BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test206.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test206.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test206.m	(revision 21239)
@@ -0,0 +1,17 @@
+%Test Name: SquareShelfTherStea
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=0;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,5e-6};
+field_values={...
+	(md.results.ThermalSolution.Temperature),...
+	(md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test206.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test206.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test206.py	(revision 21239)
@@ -0,0 +1,29 @@
+#Test Name: SquareShelfTherStea
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',180000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.timestepping.time_step=0
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Thermal')
+
+
+# Fields and tolerances to track changes
+
+field_names     =['Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-13,5e-6]
+field_values=[\
+	md.results.ThermalSolution.Temperature,\
+	md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test207.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test207.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test207.js	(revision 21239)
@@ -0,0 +1,26 @@
+//Test Name: SquareShelfTherTran
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Temperature1','BasalforcingsGroundediceMeltingRate1','Temperature2','BasalforcingsGroundediceMeltingRate2','Temperature3','BasalforcingsGroundediceMeltingRate3'];
+field_tolerances=[1e-13,1e-6,1e-13,1e-6,1e-13,1e-6];
+field_values=[
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test207.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test207.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test207.m	(revision 21239)
@@ -0,0 +1,25 @@
+%Test Name: SquareShelfTherTran
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature1','BasalforcingsGroundediceMeltingRate1','Temperature2','BasalforcingsGroundediceMeltingRate2','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={1e-13,1e-6,1e-13,1e-6,1e-13,1e-6};
+field_values={...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test207.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test207.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test207.py	(revision 21239)
@@ -0,0 +1,35 @@
+#Test Name: SquareShelfTherTran
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',180000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.transient.isstressbalance=False
+md.transient.ismasstransport=False
+md.transient.issmb=True
+md.transient.isthermal=True
+md.transient.isgroundingline=False
+md=solve(md,'Transient')
+
+# Fields and tolerances to track changes
+field_names     =['Temperature1','BasalforcingsGroundediceMeltingRate1','Temperature2','BasalforcingsGroundediceMeltingRate2','Temperature3','BasalforcingsGroundediceMeltingRate3']
+field_tolerances=[1e-13,1e-6,1e-13,1e-6,1e-13,1e-6]
+field_values=[\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[2].Temperature,\
+	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2071.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2071.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2071.m	(revision 21239)
@@ -0,0 +1,31 @@
+%Test Name: GiaBenchmarksAB2dC1
+% Benchmark experiments (Figure A2c Ivins and James, 1999, Geophys. J. Int.) 
+md=triangle(model(),'../Exp/RoundFrontEISMINT.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/GiaBenchmarksCD.par');
+
+%% indicate what you want to compute 
+md.gia.cross_section_shape=1;    % for square-edged x-section 
+
+%% define loading history 
+md.timestepping.start_time=0.3;     % for t \approx 0 kyr : to get eleastic response!   
+md.timestepping.final_time=2500000; % 2,500 kyr
+md.geometry.thickness=[...
+	[md.geometry.thickness*0.0; 0.0],...
+	[md.geometry.thickness/2.0; 0.1],...
+	[md.geometry.thickness; 0.2],...
+	[md.geometry.thickness; md.timestepping.start_time],...
+	];
+
+%% solve for GIA deflection 
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('1111111');
+md=solve(md,'Gia');
+
+%Fields and tolerances to track changes
+field_names     ={'GiaW','GiadWdt'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.GiaSolution.GiaW),...
+	(md.results.GiaSolution.GiadWdt),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2072.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2072.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2072.m	(revision 21239)
@@ -0,0 +1,31 @@
+%Test Name: GiaBenchmarksAB2dC2
+% Benchmark experiments (Figure A2c Ivins and James, 1999, Geophys. J. Int.) 
+md=triangle(model(),'../Exp/RoundFrontEISMINT.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/GiaBenchmarksCD.par');
+
+%% indicate what you want to compute 
+md.gia.cross_section_shape=1;    % for square-edged x-section 
+
+%% define loading history 
+md.timestepping.start_time=1000.3;  % for t \approx 1 kyr 
+md.timestepping.final_time=2500000; % 2,500 kyr
+md.geometry.thickness=[...
+	[md.geometry.thickness*0.0; 0.0],...
+	[md.geometry.thickness/2.0; 0.1],...
+	[md.geometry.thickness; 0.2],...
+	[md.geometry.thickness; md.timestepping.start_time],...
+	];
+
+%% solve for GIA deflection 
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('1111111');
+md=solve(md,'Gia');
+
+%Fields and tolerances to track changes
+field_names     ={'GiaW','GiadWdt'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.GiaSolution.GiaW),...
+	(md.results.GiaSolution.GiadWdt),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2073.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2073.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2073.m	(revision 21239)
@@ -0,0 +1,31 @@
+%Test Name: GiaBenchmarksAB2dC3
+% Benchmark experiments (Figure A2c Ivins and James, 1999, Geophys. J. Int.) 
+md=triangle(model(),'../Exp/RoundFrontEISMINT.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/GiaBenchmarksCD.par');
+
+%% indicate what you want to compute 
+md.gia.cross_section_shape=1;    % for square-edged x-section 
+
+%% define loading history 
+md.timestepping.start_time=2400000; % for t \approx \infty 
+md.timestepping.final_time=2500000; % 2,500 kyr
+md.geometry.thickness=[...
+	[md.geometry.thickness*0.0; 0.0],...
+	[md.geometry.thickness/2.0; 0.1],...
+	[md.geometry.thickness; 0.2],...
+	[md.geometry.thickness; md.timestepping.start_time],...
+	];
+
+%% solve for GIA deflection 
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('1111111');
+md=solve(md,'Gia');
+
+%Fields and tolerances to track changes
+field_names     ={'GiaW','GiadWdt'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.GiaSolution.GiaW),...
+	(md.results.GiaSolution.GiadWdt),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test208.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test208.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test208.m	(revision 21239)
@@ -0,0 +1,46 @@
+%Test Name: SquareShelfTranSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','FloatingArea','GroundedArea','TotalGroundedBmb','TotalFloatingBmb'};
+md.basalforcings.floatingice_melting_rate(:)=1;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','TotalGroundedBmb1','TotalFloatingBmb1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','TotalGroundedBmb2','TotalFloatingBmb2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','TotalGroundedBmb3','TotalFloatingBmb3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).TotalGroundedBmb),...
+	(md.results.TransientSolution(3).TotalFloatingBmb),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test208.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test208.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test208.py	(revision 21239)
@@ -0,0 +1,54 @@
+#Test Name: SquareShelfTranSSA2d
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',150000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.basalforcings.floatingice_melting_rate[:]=1.
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.transient.requested_outputs=['default','FloatingArea','GroundedArea','TotalFloatingBmb','TotalGroundedBmb']
+md=solve(md,'Transient')
+
+
+# Fields and tolerances to track changes
+
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','TotalGroundedBmb1','TotalFloatingBmb1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','TotalGroundedBmb2','TotalFloatingBmb2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','TotalGroundedBmb3','TotalFloatingBmb3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].TotalGroundedBmb,\
+	md.results.TransientSolution[0].TotalFloatingBmb,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].TotalGroundedBmb,\
+	md.results.TransientSolution[1].TotalFloatingBmb,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].TotalGroundedBmb,\
+	md.results.TransientSolution[2].TotalFloatingBmb,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2081.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2081.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2081.m	(revision 21239)
@@ -0,0 +1,31 @@
+%Test Name: GiaBenchmarksAB2dD1
+% Benchmark experiments (Figure A2d Ivins and James, 1999, Geophys. J. Int.) 
+md=triangle(model(),'../Exp/RoundFrontEISMINT.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/GiaBenchmarksCD.par');
+
+%% indicate what you want to compute 
+md.gia.cross_section_shape=2;    % for elliptical edge  
+
+%% define loading history 
+md.timestepping.start_time=0.3;     % for t \approx 0 kyr : to get eleastic response!   
+md.timestepping.final_time=2500000; % 2,500 kyr
+md.geometry.thickness=[...
+	[md.geometry.thickness*0.0; 0.0],...
+	[md.geometry.thickness/2.0; 0.1],...
+	[md.geometry.thickness; 0.2],...
+	[md.geometry.thickness; md.timestepping.start_time],...
+	];
+
+%% solve for GIA deflection 
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('1111111');
+md=solve(md,'Gia');
+
+%Fields and tolerances to track changes
+field_names     ={'GiaW','GiadWdt'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.GiaSolution.GiaW),...
+	(md.results.GiaSolution.GiadWdt),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2082.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2082.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2082.m	(revision 21239)
@@ -0,0 +1,31 @@
+%Test Name: GiaBenchmarksAB2dD2
+% Benchmark experiments (Figure A2d Ivins and James, 1999, Geophys. J. Int.) 
+md=triangle(model(),'../Exp/RoundFrontEISMINT.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/GiaBenchmarksCD.par');
+
+%% indicate what you want to compute 
+md.gia.cross_section_shape=2;    % for elliptical edge 
+
+%% define loading history 
+md.timestepping.start_time=1000.3;  % for t \approx 1 kyr 
+md.timestepping.final_time=2500000; % 2,500 kyr
+md.geometry.thickness=[...
+	[md.geometry.thickness*0.0; 0.0],...
+	[md.geometry.thickness/2.0; 0.1],...
+	[md.geometry.thickness; 0.2],...
+	[md.geometry.thickness; md.timestepping.start_time],...
+	];
+
+%% solve for GIA deflection 
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('1111111');
+md=solve(md,'Gia');
+
+%Fields and tolerances to track changes
+field_names     ={'GiaW','GiadWdt'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.GiaSolution.GiaW),...
+	(md.results.GiaSolution.GiadWdt),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2083.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2083.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2083.m	(revision 21239)
@@ -0,0 +1,31 @@
+%Test Name: GiaBenchmarksAB2dD3
+% Benchmark experiments (Figure A2d Ivins and James, 1999, Geophys. J. Int.) 
+md=triangle(model(),'../Exp/RoundFrontEISMINT.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/GiaBenchmarksCD.par');
+
+%% indicate what you want to compute 
+md.gia.cross_section_shape=2;    % for elliptical edge 
+
+%% define loading history 
+md.timestepping.start_time=2400000; % for t \approx \infty 
+md.timestepping.final_time=2500000; % 2,500 kyr
+md.geometry.thickness=[...
+	[md.geometry.thickness*0.0; 0.0],...
+	[md.geometry.thickness/2.0; 0.1],...
+	[md.geometry.thickness; 0.2],...
+	[md.geometry.thickness; md.timestepping.start_time],...
+	];
+
+%% solve for GIA deflection 
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('1111111');
+md=solve(md,'Gia');
+
+%Fields and tolerances to track changes
+field_names     ={'GiaW','GiadWdt'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.GiaSolution.GiaW),...
+	(md.results.GiaSolution.GiadWdt),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test209.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test209.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test209.js	(revision 21239)
@@ -0,0 +1,50 @@
+//Test Name: SquareShelfTranSSA3d
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'];
+field_tolerances=[
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,
+	1e-13,1e-13,3e-9,1e-13,3.8e-11,3.85e-11,3.85e-11,3.85e-11,1e-13,2e-8,
+	5e-11,6e-12,1e-08,6e-12,3.9e-11,1e-10,1e-10,1e-10,9e-12,5e-8];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test209.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test209.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test209.m	(revision 21239)
@@ -0,0 +1,49 @@
+%Test Name: SquareShelfTranSSA3d
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,...
+	1e-13,1e-13,3e-9,1e-13,3.8e-11,3.85e-11,3.85e-11,3.85e-11,1e-13,2e-8,...
+	5e-11,6e-12,1e-08,6e-12,3.9e-11,1e-10,1e-10,1e-10,9e-12,5e-8};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test209.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test209.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test209.py	(revision 21239)
@@ -0,0 +1,62 @@
+#Test Name: SquareShelfTranSSA3d
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',180000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Transient')
+
+
+# Fields and tolerances to track changes
+
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', \
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', \
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3']
+field_tolerances=[\
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,\
+	1e-13,1e-13,3e-9,1e-13,3.8e-11,3.85e-11,3.85e-11,3.85e-11,1e-13,2e-8,\
+	5e-11,6e-12,1e-08,6e-12,3.9e-11,1e-10,1e-10,1e-10,9e-12,5e-8]
+
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Temperature,\
+	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test210.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test210.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test210.js	(revision 21239)
@@ -0,0 +1,51 @@
+//Test Name: SquareShelfTranHO
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs=['default','GroundedArea'];
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', 
+				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', 
+					   'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'];
+field_tolerances=[
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06,
+	1e-09,1e-09,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test210.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test210.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test210.m	(revision 21239)
@@ -0,0 +1,50 @@
+%Test Name: SquareShelfTranHO
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','GroundedArea'};
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', ...
+					   'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={...
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,...
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06,...
+	1e-09,1e-09,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test210.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test210.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test210.py	(revision 21239)
@@ -0,0 +1,61 @@
+#Test Name: SquareShelfTranHO
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',200000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Transient')
+
+
+# Fields and tolerances to track changes
+
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', \
+				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', \
+					   'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3']
+field_tolerances=[\
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,\
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06,\
+	1e-09,1e-09,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Temperature,\
+	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test211.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test211.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test211.js	(revision 21239)
@@ -0,0 +1,52 @@
+//Test Name: SquareShelfTranFS
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'FS','all');
+md.stressbalance.reltol=null;
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names=[
+	'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'];
+field_tolerances=[
+	2e-08,2e-08,5e-05,2e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,
+	5e-06,5e-06,8e-05,5e-06,1e-07,5e-07,5e-07,5e-07,3e-06,5e-05,
+	8e-06,8e-06,8e-05,8e-06,5e-07,8e-07,8e-07,8e-07,5e-06,8e-05];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test211.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test211.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test211.m	(revision 21239)
@@ -0,0 +1,51 @@
+%Test Name: SquareShelfTranFS
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'FS','all');
+md.stressbalance.reltol=NaN;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={...
+	'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={...
+	2e-08,2e-08,5e-05,2e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,...
+	5e-06,5e-06,8e-05,5e-06,1e-07,5e-07,5e-07,5e-07,3e-06,5e-05,...
+	8e-06,8e-06,8e-05,8e-06,5e-07,8e-07,8e-07,8e-07,5e-06,8e-05};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test211.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test211.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test211.py	(revision 21239)
@@ -0,0 +1,63 @@
+#Test Name: SquareShelfTranFS
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',200000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'FS','all')
+md.stressbalance.reltol=NaN
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Transient')
+
+
+# Fields and tolerances to track changes
+
+field_names=[\
+	'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', \
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', \
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3']
+field_tolerances=[\
+		2e-08,2e-08,5e-05,2e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,\
+		5e-06,5e-06,8e-05,5e-06,1e-07,5e-07,5e-07,5e-07,3e-06,5e-05,\
+		8e-06,8e-06,8e-05,8e-06,5e-07,8e-07,8e-07,8e-07,5e-06,8e-05]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Temperature,\
+	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test212.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test212.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test212.js	(revision 21239)
@@ -0,0 +1,36 @@
+//Test Name: SquareShelfCMBSSA2d
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+
+//control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters=['MaterialsRheologyBbar'];
+md.inversion.min_parameters=Math.pow(10,6)*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2*Math.pow(10,9)*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=Math.pow(10,7)*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+md.verbose.control=true;
+
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.StressbalanceSolution[0].Gradient1),
+	(md.results.StressbalanceSolution[0].J),
+	(md.results.StressbalanceSolution[0].MaterialsRheologyBbar),
+	(md.results.StressbalanceSolution[0].Pressure),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy)
+];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test212.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test212.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test212.m	(revision 21239)
@@ -0,0 +1,35 @@
+%Test Name: SquareShelfCMBSSA2d
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'MaterialsRheologyBbar'};
+md.inversion.min_parameters=10^6*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2*10^9*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=10^7*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+md.verbose.control=true;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.MaterialsRheologyBbar),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test212.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test212.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test212.py	(revision 21239)
@@ -0,0 +1,50 @@
+#Test Name: SquareShelfCMBSSA2d
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',200000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md=setflowequation(md,'SSA','all')
+
+
+# control parameters
+
+md.inversion.iscontrol=1
+md.inversion.control_parameters=['MaterialsRheologyBbar']
+md.inversion.min_parameters=10**6*ones((md.mesh.numberofvertices,1))
+md.inversion.max_parameters=2.*10**9*ones((md.mesh.numberofvertices,1))
+md.inversion.nsteps=2
+md.inversion.cost_functions=[101]
+md.inversion.cost_functions_coefficients=ones((md.mesh.numberofvertices,1))
+md.inversion.gradient_scaling=10**7*ones((md.inversion.nsteps,1))
+md.inversion.maxiter_per_step=2.*ones((md.inversion.nsteps,1))
+md.inversion.step_threshold=0.3*ones((md.inversion.nsteps,1))
+md.inversion.vx_obs=md.initialization.vx
+md.inversion.vy_obs=md.initialization.vy
+
+
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+
+# Fields and tolerances to track changes
+
+field_names     =['Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+md.results.StressbalanceSolution.Gradient1,\
+md.results.StressbalanceSolution.J,\
+md.results.StressbalanceSolution.MaterialsRheologyBbar,\
+md.results.StressbalanceSolution.Pressure,\
+md.results.StressbalanceSolution.Vel,\
+md.results.StressbalanceSolution.Vx,\
+md.results.StressbalanceSolution.Vy,\
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test213.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test213.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test213.js	(revision 21239)
@@ -0,0 +1,39 @@
+//Test Name: SquareShelfCMBSSA3d
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+
+//control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters=['MaterialsRheologyBbar'];
+md.inversion.min_parameters=Math.pow(10,6)*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2*Math.pow(10,9)*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=Math.pow(10,7)*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.verbose.control=true;
+md.verbose.solution=true;
+
+//md.cluster=generic('name',oshostname(),'np',1);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.StressbalanceSolution[0].Gradient1),
+	md.results.StressbalanceSolution[0].J,
+	(md.results.StressbalanceSolution[0].MaterialsRheologyBbar),
+	(md.results.StressbalanceSolution[0].Pressure),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy)
+];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test213.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test213.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test213.m	(revision 21239)
@@ -0,0 +1,38 @@
+%Test Name: SquareShelfCMBSSA3d
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'MaterialsRheologyBbar'};
+md.inversion.min_parameters=10^6*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2*10^9*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=10^7*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.verbose.control=true;
+md.verbose.solution=true;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	md.results.StressbalanceSolution.J,...
+	(md.results.StressbalanceSolution.MaterialsRheologyBbar),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test213.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test213.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test213.py	(revision 21239)
@@ -0,0 +1,52 @@
+#Test Name: SquareShelfCMBSSA3d
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',200000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+
+
+# control parameters
+
+md.inversion.iscontrol=1
+md.inversion.control_parameters=['MaterialsRheologyBbar']
+md.inversion.min_parameters=10**6*ones((md.mesh.numberofvertices,1))
+md.inversion.max_parameters=2.*10**9*ones((md.mesh.numberofvertices,1))
+md.inversion.nsteps=2
+md.inversion.cost_functions=[101]
+md.inversion.cost_functions_coefficients=ones((md.mesh.numberofvertices,1))
+md.inversion.gradient_scaling=10**7*ones((md.inversion.nsteps,1))
+md.inversion.maxiter_per_step=2.*ones((md.inversion.nsteps,1))
+md.inversion.step_threshold=0.3*ones((md.inversion.nsteps,1))
+md.inversion.vx_obs=md.initialization.vx
+md.inversion.vy_obs=md.initialization.vy
+
+
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+
+# Fields and tolerances to track changes
+
+field_names     =['Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+#field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Gradient1,\
+	md.results.StressbalanceSolution.J,\
+	md.results.StressbalanceSolution.MaterialsRheologyBbar,\
+	md.results.StressbalanceSolution.Pressure,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test214.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test214.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test214.js	(revision 21239)
@@ -0,0 +1,36 @@
+//Test Name: SquareShelfCMBHO
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+
+//control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters=['MaterialsRheologyBbar'];
+md.inversion.min_parameters=Math.pow(10,6)*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2*Math.pow(10,9)*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=Math.pow(10,7)*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy'];
+field_tolerances=[1e-07,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08];
+field_values=[
+	(md.results.StressbalanceSolution[0].Gradient1),
+	(md.results.StressbalanceSolution[0].J),
+	(md.results.StressbalanceSolution[0].MaterialsRheologyBbar),
+	(md.results.StressbalanceSolution[0].Pressure),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy)
+];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test214.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test214.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test214.m	(revision 21239)
@@ -0,0 +1,35 @@
+%Test Name: SquareShelfCMBHO
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'MaterialsRheologyBbar'};
+md.inversion.min_parameters=10^6*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2*10^9*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=10^7*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-07,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.MaterialsRheologyBbar),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test214.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test214.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test214.py	(revision 21239)
@@ -0,0 +1,51 @@
+#Test Name: SquareShelfCMBHO
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',200000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+
+
+# control parameters
+
+md.inversion.iscontrol=1
+md.inversion.control_parameters=['MaterialsRheologyBbar']
+md.inversion.min_parameters=10**6*ones((md.mesh.numberofvertices,1))
+md.inversion.max_parameters=2.*10**9*ones((md.mesh.numberofvertices,1))
+md.inversion.nsteps=2
+md.inversion.cost_functions=[101]
+md.inversion.cost_functions_coefficients=ones((md.mesh.numberofvertices,1))
+md.inversion.gradient_scaling=10**7*ones((md.inversion.nsteps,1))
+md.inversion.maxiter_per_step=2.*ones((md.inversion.nsteps,1))
+md.inversion.step_threshold=0.3*ones((md.inversion.nsteps,1))
+md.inversion.vx_obs=md.initialization.vx
+md.inversion.vy_obs=md.initialization.vy
+
+
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+
+# Fields and tolerances to track changes
+
+field_names     =['Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy']
+field_tolerances=[1e-07,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08]
+field_values=[\
+	md.results.StressbalanceSolution.Gradient1,\
+	md.results.StressbalanceSolution.J,\
+	md.results.StressbalanceSolution.MaterialsRheologyBbar,\
+	md.results.StressbalanceSolution.Pressure,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test215.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test215.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test215.js	(revision 21239)
@@ -0,0 +1,36 @@
+//Test Name: SquareShelfCMBFS
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'FS','all');
+
+//control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters=['MaterialsRheologyBbar'];
+md.inversion.min_parameters=Math.pow(10,6)*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2*Math.pow(10,9)*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coeffecients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=Math.pow(10,7)*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy'];
+field_tolerances=[4.6e-08,1e-08,2e-08,1e-09,2e-09,5e-09,2e-09];
+field_values=[
+	(md.results.StressbalanceSolution[0].Gradient1),
+	(md.results.StressbalanceSolution[0].J),
+	(md.results.StressbalanceSolution[0].MaterialsRheologyBbar),
+	(md.results.StressbalanceSolution[0].Pressure),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy)
+];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test215.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test215.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test215.m	(revision 21239)
@@ -0,0 +1,35 @@
+%Test Name: SquareShelfCMBFS
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'FS','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'MaterialsRheologyBbar'};
+md.inversion.min_parameters=10^6*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2*10^9*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=10^7*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy'};
+field_tolerances={4.6e-08,1e-08,2e-08,1e-09,2e-09,5e-09,2e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.MaterialsRheologyBbar),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test215.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test215.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test215.py	(revision 21239)
@@ -0,0 +1,51 @@
+#Test Name: SquareShelfCMBFS
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',200000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'FS','all')
+
+
+# control parameters
+
+md.inversion.iscontrol=1
+md.inversion.control_parameters=['MaterialsRheologyBbar']
+md.inversion.min_parameters=10**6*ones((md.mesh.numberofvertices,1))
+md.inversion.max_parameters=2.*10**9*ones((md.mesh.numberofvertices,1))
+md.inversion.nsteps=2
+md.inversion.cost_functions=[101]
+md.inversion.cost_functions_coefficients=ones((md.mesh.numberofvertices,1))
+md.inversion.gradient_scaling=10**7*ones((md.inversion.nsteps,1))
+md.inversion.maxiter_per_step=2.*ones((md.inversion.nsteps,1))
+md.inversion.step_threshold=0.3*ones((md.inversion.nsteps,1))
+md.inversion.vx_obs=md.initialization.vx
+md.inversion.vy_obs=md.initialization.vy
+
+
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+
+# Fields and tolerances to track changes
+
+field_names     =['Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy']
+field_tolerances=[4.6e-08,1e-08,2e-09,1e-08,2e-09,5e-09,2e-09]
+field_values=[\
+	md.results.StressbalanceSolution.Gradient1,\
+	md.results.StressbalanceSolution.J,\
+	md.results.StressbalanceSolution.MaterialsRheologyBbar,\
+	md.results.StressbalanceSolution.Pressure,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test216.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test216.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test216.js	(revision 21239)
@@ -0,0 +1,26 @@
+//Test Name: SquareShelfStressSSA2dRift
+var md = new model();
+triangle(md,rifts[0],50000.);
+meshprocessrifts(md,'../Exp/Square.exp');
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+//rift settings
+md.rifts.riftstruct.fill='Melange';
+md.rifts.riftstruct.fraction=0;
+md.stressbalance.rift_penalty_lock=2;
+md.stressbalance.rift_penalty_threshold=0;
+md.rifts.riftstruct.fractionincrement=.1;
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vel','Pressure'];
+field_tolerances=[8e-7,5e-8,7e-8,2e-11];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test216.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test216.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test216.m	(revision 21239)
@@ -0,0 +1,25 @@
+%Test Name: SquareShelfStressSSA2dRift
+md=triangle(model(),'../Exp/SquareHole.exp','../Exp/Rifts.exp',50000.);
+md=meshprocessrifts(md,'../Exp/Square.exp');
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf2.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%rift settings
+md.rifts.riftstruct.fill='Melange';
+md.rifts.riftstruct.fraction=0;
+md.stressbalance.rift_penalty_lock=2;
+md.stressbalance.rift_penalty_threshold=0;
+md.rifts.riftstruct.fractionincrement=.1;
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={8e-7,5e-8,7e-8,2e-11};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test216.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test216.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test216.py	(revision 21239)
@@ -0,0 +1,38 @@
+#Test Name: SquareShelfStressSSA2dRift
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from triangle import *
+from meshprocessrifts import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md=triangle(model(),'../Exp/SquareHole.exp','../Exp/Rifts.exp',50000.)
+md=meshprocessrifts(md,'../Exp/Square.exp')
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf2.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+# rift settings
+
+md.rifts.riftstruct[0]['fill']='Melange'
+md.rifts.riftstruct[0]['fraction']=0
+md.stressbalance.rift_penalty_lock=2
+md.stressbalance.rift_penalty_threshold=0
+md.rifts.riftstruct[0]['fractionincrement']=0.1
+md=solve(md,'Stressbalance')
+
+# Fields and tolerances to track changes
+
+field_names     =['Vx','Vy','Vel','Pressure']
+field_tolerances=[4e-11,2e-11,4e-11,2e-11]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test217.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test217.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test217.js	(revision 21239)
@@ -0,0 +1,96 @@
+//Test Name: SquareShelfConstrained
+var md = new model();
+function zeros(...args) {
+	var array = [];
+	for (var i = 0; i < args[0]; ++i) {
+		array.push(args.length == 1 ? 0 : zeros(args.slice(1)));
+	}
+	return array;
+}
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+//redo the parameter file for this special shelf. 
+//constant thickness, constrained (vy=0) flow into an icefront, 
+//from 0 m/yr at the grounding line.
+
+//tighten
+md.stressbalance.restol=Math.pow(10,-4);
+
+//needed later
+ymin=Math.min.apply(null, md.mesh.y);
+ymax=Math.max.apply(null, md.mesh.y);
+xmin=Math.min.apply(null, md.mesh.x);
+xmax=Math.max.apply(null, md.mesh.x);
+
+di=md.materials.rho_ice/md.materials.rho_water;
+
+h=1000;
+md.geometry.thickness=h*ones(md.mesh.numberofvertices,1);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+//Initial velocity and pressure
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+//Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+//Boundary conditions:
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+
+//constrain flanks to 0 normal velocity
+pos=[];
+for (var i = 0; i < md.mesh.x.length; ++i) {
+    if (md.mesh.x[i]==xmin || md.mesh.x[i]==xmax) {
+            pos.push(i);
+    };
+}
+
+for (var i = 0; i < pos.length; ++i) {
+    md.stressbalance.spcvx[pos[i]] = 0;
+    md.stressbalance.spcvz[pos[i]] = NaN;
+}
+
+//constrain grounding line to 0 velocity
+pos=[];
+for (var i = 0; i < md.mesh.y.length; ++i) {
+    if (md.mesh.y[i]==ymin) {
+            pos.push(i);
+    };
+}
+for (var i = 0; i < pos.length; ++i) {
+    md.stressbalance.spcvx[pos[i]] = 0;
+    md.stressbalance.spcvy[pos[i]] = 0;
+}
+
+//icefront
+nodeonicefront=zeros(md.mesh.numberofvertices,1);
+for (var i = 0; i < md.mesh.y.length; ++i) {
+    if (md.mesh.y[i]==ymax) {
+        nodeonicefront[i] = 1;
+    }
+}
+md.mask.ice_levelset = nodeonicefront.map(function(x) { return -1 + x; });
+
+md=solve(md,'Stressbalance');
+
+//create analytical solution: strain rate is constant = ((rho_ice*g*h)/4B)Math.pow(,3) (Paterson, 4th Edition, page 292.
+//ey_c=(md.materials.rho_ice*md.constants.g*(1-di)*md.geometry.thickness./(4*md.materials.rheology_B)).Math.pow(,3);
+//vy_c=ey_c.*md.mesh.y*md.constants.yts;
+
+//Fields and tolerances to track changes
+field_names     =['Vy'];
+field_tolerances=[1e-13];
+field_values=[(md.results.StressbalanceSolution[0].Vy)];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test217.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test217.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test217.m	(revision 21239)
@@ -0,0 +1,68 @@
+%Test Name: SquareShelfConstrained
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%redo the parameter file for this special shelf. 
+%constant thickness, constrained (vy=0) flow into an icefront, 
+%from 0 m/yr at the grounding line.
+
+%tighten
+md.stressbalance.restol=10^-4;
+
+%needed later
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+xmin=min(md.mesh.x);
+xmax=max(md.mesh.x);
+
+di=md.materials.rho_ice/md.materials.rho_water;
+
+h=1000;
+md.geometry.thickness=h*ones(md.mesh.numberofvertices,1);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%Initial velocity and pressure
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+%Boundary conditions:
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+
+%constrain flanks to 0 normal velocity
+pos=find(md.mesh.x==xmin | md.mesh.x==xmax);
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvz(pos)=NaN;
+
+%constrain grounding line to 0 velocity
+pos=find(md.mesh.y==ymin);
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvy(pos)=0;
+
+%icefront
+nodeonicefront=zeros(md.mesh.numberofvertices,1);
+pos=find(md.mesh.y==ymax); nodeonicefront(pos)=1;
+md.mask.ice_levelset=-1+nodeonicefront;
+
+md=solve(md,'Stressbalance');
+
+%create analytical solution: strain rate is constant = ((rho_ice*g*h)/4B)^3 (Paterson, 4th Edition, page 292.
+%ey_c=(md.materials.rho_ice*md.constants.g*(1-di)*md.geometry.thickness./(4*md.materials.rheology_B)).^3;
+%vy_c=ey_c.*md.mesh.y*md.constants.yts;
+
+%Fields and tolerances to track changes
+field_names     ={'Vy'};
+field_tolerances={1e-13};
+field_values={(md.results.StressbalanceSolution.Vy)};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test217.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test217.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test217.py	(revision 21239)
@@ -0,0 +1,82 @@
+#Test Name: SquareShelfConstrained
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from paterson import *
+from solve import *
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',150000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+# redo the parameter file for this special shelf. 
+# constant thickness, constrained (vy=0) flow into an icefront, 
+# from 0 m/yr at the grounding line.
+
+# tighten
+md.stressbalance.restol=10**-4
+
+# needed later
+ymin=min(md.mesh.y)
+ymax=max(md.mesh.y)
+xmin=min(md.mesh.x)
+xmax=max(md.mesh.x)
+
+di=md.materials.rho_ice/md.materials.rho_water
+
+h=1000.
+md.geometry.thickness=h*ones((md.mesh.numberofvertices,1))
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+
+# Initial velocity and pressure
+md.initialization.vx=zeros((md.mesh.numberofvertices,1))
+md.initialization.vy=zeros((md.mesh.numberofvertices,1))
+md.initialization.vz=zeros((md.mesh.numberofvertices,1))
+md.initialization.pressure=zeros((md.mesh.numberofvertices,1))
+
+# Materials
+md.initialization.temperature=(273.-20.)*ones((md.mesh.numberofvertices,1))
+md.materials.rheology_B=paterson(md.initialization.temperature)
+md.materials.rheology_n=3.*ones((md.mesh.numberofelements,1))
+
+# Boundary conditions:
+md.stressbalance.spcvx=float(nan)*ones((md.mesh.numberofvertices,1))
+md.stressbalance.spcvy=float(nan)*ones((md.mesh.numberofvertices,1))
+md.stressbalance.spcvz=float(nan)*ones((md.mesh.numberofvertices,1))
+
+# constrain flanks to 0 normal velocity
+pos=numpy.nonzero(numpy.logical_or(md.mesh.x==xmin,md.mesh.x==xmax))
+md.stressbalance.spcvx[pos]=0
+md.stressbalance.spcvz[pos]=float(nan)
+
+# constrain grounding line to 0 velocity
+pos=numpy.nonzero(md.mesh.y==ymin)
+md.stressbalance.spcvx[pos]=0
+md.stressbalance.spcvy[pos]=0
+
+# icefront
+nodeonicefront=zeros(md.mesh.numberofvertices)
+pos=numpy.nonzero(md.mesh.y==ymax)
+nodeonicefront[pos]=1
+md.mask.ice_levelset=-1+nodeonicefront
+
+md=solve(md,'Stressbalance')
+
+# create analytical solution: strain rate is constant = ((rho_ice*g*h)/4B)^3 (Paterson, 4th Edition, page 292.
+# ey_c=(md.materials.rho_ice*md.constants.g*(1-di)*md.geometry.thickness./(4*md.materials.rheology_B)).^3;
+# vy_c=ey_c.*md.mesh.y*md.constants.yts;
+
+# Fields and tolerances to track changes
+field_names     =['Vy']
+field_tolerances=[1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vy,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test218.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test218.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test218.js	(revision 21239)
@@ -0,0 +1,114 @@
+//Test Name: SquareShelfConstrainedDakotaB
+var md = new model();
+function zeros(...args) {
+	var array = [];
+	for (var i = 0; i < args[0]; ++i) {
+		array.push(args.length == 1 ? 0 : zeros(args.slice(1)));
+	}
+	return array;
+}
+var md = new model();
+squaremesh(model(),1000000,1000000,5,5);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+//redo the parameter file for this special shelf. 
+//constant thickness, constrained (vy=0) flow into an icefront, 
+//from 0 m/yr at the grounding line.
+
+//needed later
+ymin=Math.min.apply(null, md.mesh.y);
+ymax=Math.max.apply(null, md.mesh.y);
+xmin=Math.min.apply(null, md.mesh.x);
+xmax=Math.max.apply(null, md.mesh.x);
+
+di=md.materials.rho_ice/md.materials.rho_water;
+
+h=1000;
+md.geometry.thickness=h*ones(md.mesh.numberofvertices,1);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+//Initial velocity and pressure
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+//Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+//Boundary conditions:
+md.stressbalance.spcvx=null*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=null*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=null*ones(md.mesh.numberofvertices,1);
+
+//constrain flanks to 0 normal velocity
+pos=[];
+for (var i = 0; i < md.mesh.x==xmin | md.mesh.x==xmax.length; ++i) {
+if ((md.mesh.x==xmin | md.mesh.x==xmax[i] !== 0)) {
+		pos.push(i);
+};
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvz(pos)=null;
+
+//constrain grounding line to 0 velocity
+pos=[];
+for (var i = 0; i < md.mesh.y==ymin.length; ++i) {
+if ((md.mesh.y==ymin[i] !== 0)) {
+		pos.push(i);
+};
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvy(pos)=0;
+
+//partitioning
+md.qmu.numberofpartitions=md.mesh.numberofvertices;
+partitioner(md,'package','linear','npart',md.qmu.numberofpartitions);
+md.qmu.partition=md.qmu.partition-1;
+
+//Dakota options
+
+//dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version.slice(0,2); version=str2num(version);
+
+//variables
+md.qmu.variables.rheology_B=normal_uncertain('scaled_MaterialsRheologyB',1,.05);
+
+//responses
+md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+//method
+md.qmu.method     =dakota_method('nond_l');
+
+//parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+
+if (version>=6,) {
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+} else {
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+}
+
+//imperative! 
+md.stressbalance.reltol=10^-10; //tighten for qmu analysese
+md.qmu.isdakota=1;
+
+//solve
+md=solve(md,'Stressbalance','overwrite','y');
+
+//Fields and tolerances to track changes
+md.qmu.results=md.results.dakota;
+md.results.dakota.importancefactors=importancefactors(md,'scaled_MaterialsRheologyB','MaxVel')';
+field_names     =['importancefactors'];
+field_tolerances=[1e-10];
+field_values=[
+         md.results.dakota.importancefactors,
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test218.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test218.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test218.m	(revision 21239)
@@ -0,0 +1,97 @@
+%Test Name: SquareShelfConstrainedDakotaB
+md=squaremesh(model(),1000000,1000000,5,5);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf2.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%redo the parameter file for this special shelf. 
+%constant thickness, constrained (vy=0) flow into an icefront, 
+%from 0 m/yr at the grounding line.
+
+%needed later
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+xmin=min(md.mesh.x);
+xmax=max(md.mesh.x);
+
+di=md.materials.rho_ice/md.materials.rho_water;
+
+h=1000;
+md.geometry.thickness=h*ones(md.mesh.numberofvertices,1);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%Initial velocity and pressure
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+%Boundary conditions:
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+
+%constrain flanks to 0 normal velocity
+pos=find(md.mesh.x==xmin | md.mesh.x==xmax);
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvz(pos)=NaN;
+
+%constrain grounding line to 0 velocity
+pos=find(md.mesh.y==ymin);
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvy(pos)=0;
+
+%partitioning
+md.qmu.numberofpartitions=md.mesh.numberofvertices;
+md=partitioner(md,'package','linear','npart',md.qmu.numberofpartitions);
+md.qmu.partition=md.qmu.partition-1;
+
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%variables
+md.qmu.variables.rheology_B=normal_uncertain('scaled_MaterialsRheologyB',1,.05);
+
+%responses
+md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%method
+md.qmu.method     =dakota_method('nond_l');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+%imperative! 
+md.stressbalance.reltol=10^-10; %tighten for qmu analysese
+md.qmu.isdakota=1;
+
+%solve
+md=solve(md,'Stressbalance','overwrite','y');
+
+%Fields and tolerances to track changes
+md.qmu.results=md.results.dakota;
+md.results.dakota.importancefactors=importancefactors(md,'scaled_MaterialsRheologyB','MaxVel')';
+field_names     ={'importancefactors'};
+field_tolerances={1e-10};
+field_values={...
+         md.results.dakota.importancefactors,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test219.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test219.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test219.js	(revision 21239)
@@ -0,0 +1,20 @@
+//Test Name: SquareShelfStressSSAHOTiling
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,2.);
+setflowequation(md,'HO','../Exp/SquareHalfRight.exp','fill','SSA');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure'];
+field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-13];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test219.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test219.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test219.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: SquareShelfStressSSAHOTiling
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','../Exp/SquareHalfRight.exp','fill','SSA');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test219.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test219.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test219.py	(revision 21239)
@@ -0,0 +1,30 @@
+#Test Name: SquareShelfStressSSAHOTiling
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,2.)
+md=setflowequation(md,'HO','../Exp/SquareHalfRight.exp','fill','SSA')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+# Fields and tolerances to track changes
+
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test220.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test220.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test220.js	(revision 21239)
@@ -0,0 +1,21 @@
+//Test Name: SquareShelfStressHOFS3dTiling
+var md = new model();
+triangle(md,square[0],120000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,2,1.);
+setflowequation(md,'FS','../Exp/SquareHalfRight.exp','fill','HO');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('all');
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure'];
+field_tolerances=[1e-09,1e-09,5e-06,1e-09,1e-09];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test220.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test220.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test220.m	(revision 21239)
@@ -0,0 +1,20 @@
+%Test Name: SquareShelfStressHOFS3dTiling
+md=triangle(model(),'../Exp/Square.exp',120000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf2.par');
+md=extrude(md,2,1.);
+md=setflowequation(md,'FS','../Exp/SquareHalfRight.exp','fill','HO');
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('all');
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-09,1e-09,5e-06,1e-09,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test220.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test220.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test220.py	(revision 21239)
@@ -0,0 +1,30 @@
+#Test Name: SquareShelfStressHOFS3dTiling
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',120000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf2.py')
+md.extrude(2,1.)
+md=setflowequation(md,'FS','../Exp/SquareHalfRight.exp','fill','HO')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+# Fields and tolerances to track changes
+
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-09,1e-09,5e-06,1e-09,1e-09]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test221.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test221.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test221.js	(revision 21239)
@@ -0,0 +1,21 @@
+//Test Name: SquareShelfStressSSAFS3dTiling
+var md = new model();
+triangle(md,square[0],120000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,2,1.);
+setflowequation(md,'FS','../Exp/SquareHalfRight.exp','fill','SSA');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.stressbalance.viscosity_overshoot=0;
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure'];
+field_tolerances=[1e-09,1e-09,5e-06,1e-09,1e-09];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test221.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test221.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test221.m	(revision 21239)
@@ -0,0 +1,20 @@
+%Test Name: SquareShelfStressSSAFS3dTiling
+md=triangle(model(),'../Exp/Square.exp',120000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf2.par');
+md=extrude(md,2,1.);
+md=setflowequation(md,'FS','../Exp/SquareHalfRight.exp','fill','SSA');
+md.cluster=generic('name',oshostname(),'np',3);
+md.stressbalance.viscosity_overshoot=0;
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-09,1e-09,5e-06,1e-09,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test221.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test221.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test221.py	(revision 21239)
@@ -0,0 +1,28 @@
+#Test Name: SquareShelfStressSSAFS3dTiling
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',120000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf2.py')
+md.extrude(2,1.)
+md=setflowequation(md,'FS','../Exp/SquareHalfRight.exp','fill','SSA')
+md.cluster=generic('name',oshostname(),'np',3)
+md.stressbalance.viscosity_overshoot=0
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-09,1e-09,5e-06,1e-09,1e-09]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test222.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test222.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test222.js	(revision 21239)
@@ -0,0 +1,36 @@
+//Test Name: SquareShelfStressSSA2dTransientIncrHydro
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.hydrostatic_adjustment='Incremental';
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test222.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test222.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test222.m	(revision 21239)
@@ -0,0 +1,35 @@
+%Test Name: SquareShelfStressSSA2dTransientIncrHydro
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.hydrostatic_adjustment='Incremental';
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test222.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test222.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test222.py	(revision 21239)
@@ -0,0 +1,43 @@
+#Test Name: SquareShelfStressSSA2dTransientIncrHydro
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.masstransport.hydrostatic_adjustment='Incremental'
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test223.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test223.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test223.js	(revision 21239)
@@ -0,0 +1,37 @@
+//Test Name: SquareShelfStressSSA2dTransientIncrNonHydro
+var md = new model();
+triangle(md,square[0],150000);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+md.geometry.base=md.geometry.base+50; md.geometry.surface=md.geometry.surface+50;
+//md.cluster=generic('name',oshostname(),'np',1);
+md.masstransport.hydrostatic_adjustment='Incremental';
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test223.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test223.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test223.m	(revision 21239)
@@ -0,0 +1,36 @@
+%Test Name: SquareShelfStressSSA2dTransientIncrNonHydro
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.geometry.base=md.geometry.base+50.; md.geometry.surface=md.geometry.surface+50.;
+md.cluster=generic('name',oshostname(),'np',1);
+md.masstransport.hydrostatic_adjustment='Incremental';
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test223.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test223.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test223.py	(revision 21239)
@@ -0,0 +1,45 @@
+#Test Name: SquareShelfStressSSA2dTransientIncrNonHydro
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md=setflowequation(md,'SSA','all')
+md.geometry.base=md.geometry.base+50.
+md.geometry.surface=md.geometry.surface+50.
+md.cluster=generic('name',oshostname(),'np',1)
+md.masstransport.hydrostatic_adjustment='Incremental'
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test224.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test224.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test224.js	(revision 21239)
@@ -0,0 +1,51 @@
+//Test Name: SquareShelfStressHOTransientIncrHydro
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.hydrostatic_adjustment='Incremental';
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'];
+field_tolerances=[
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,
+	1e-09,5e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06,
+	1e-09,5e-09,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test224.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test224.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test224.m	(revision 21239)
@@ -0,0 +1,50 @@
+%Test Name: SquareShelfStressHOTransientIncrHydro
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.hydrostatic_adjustment='Incremental';
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={...
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,...
+	1e-09,5e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06,...
+	1e-09,5e-09,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test224.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test224.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test224.py	(revision 21239)
@@ -0,0 +1,58 @@
+#Test Name: SquareShelfStressHOTransientIncrHydro
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',200000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.masstransport.hydrostatic_adjustment='Incremental'
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', \
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', \
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3']
+field_tolerances=[\
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,\
+	1e-09,5e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06,\
+	1e-09,5e-09,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Temperature,\
+	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test225.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test225.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test225.js	(revision 21239)
@@ -0,0 +1,52 @@
+//Test Name: SquareShelfStressHOTransientIncrNonHydro
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.geometry.base=md.geometry.base+50.; md.geometry.surface=md.geometry.surface+50.;
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.hydrostatic_adjustment='Incremental';
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'];
+field_tolerances=[
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,
+	2e-09,1e-09,2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,
+	1e-08,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test225.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test225.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test225.m	(revision 21239)
@@ -0,0 +1,51 @@
+%Test Name: SquareShelfStressHOTransientIncrNonHydro
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md.geometry.base=md.geometry.base+50.; md.geometry.surface=md.geometry.surface+50.;
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.hydrostatic_adjustment='Incremental';
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={...
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,...
+	2e-09,1e-09,2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,...
+	1e-08,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test225.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test225.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test225.py	(revision 21239)
@@ -0,0 +1,60 @@
+#Test Name: SquareShelfStressHOTransientIncrNonHydro
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',200000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.geometry.base=md.geometry.base+50.
+md.geometry.surface=md.geometry.surface+50.
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.masstransport.hydrostatic_adjustment='Incremental'
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', \
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', \
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3']
+field_tolerances=[\
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,\
+	2e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,\
+	1e-08,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Temperature,\
+	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test226.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test226.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test226.js	(revision 21239)
@@ -0,0 +1,37 @@
+//Test Name: SquareShelfTranCflSSA2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_adapt=1.;
+md.timestepping.final_time=15.;
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test226.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test226.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test226.m	(revision 21239)
@@ -0,0 +1,36 @@
+%Test Name: SquareShelfTranCflSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_adapt=1.;
+md.timestepping.final_time=15.;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test226.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test226.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test226.py	(revision 21239)
@@ -0,0 +1,44 @@
+#Test Name: SquareShelfTranCflSSA2d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.timestepping.time_adapt=1.
+md.timestepping.final_time=15.
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test227.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test227.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test227.js	(revision 21239)
@@ -0,0 +1,52 @@
+//Test Name: SquareShelfTranCflHO
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_adapt=1.;
+md.timestepping.final_time=20.;
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'];
+field_tolerances=[
+	1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06,
+	1e-08,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test227.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test227.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test227.m	(revision 21239)
@@ -0,0 +1,51 @@
+%Test Name: SquareShelfTranCflHO
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_adapt=1.;
+md.timestepping.final_time=20.;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={...
+	1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,...
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06,...
+	1e-08,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test227.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test227.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test227.py	(revision 21239)
@@ -0,0 +1,59 @@
+#Test Name: SquareShelfTranCflHO
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',200000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.timestepping.time_adapt=1.
+md.timestepping.final_time=20.
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', \
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', \
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3']
+field_tolerances=[\
+	1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,\
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06,\
+	1e-08,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Temperature,\
+	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test228.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test228.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test228.js	(revision 21239)
@@ -0,0 +1,68 @@
+//Test Name: SquareShelfTranForceNeg2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4.;
+
+//Set up transient
+smb=ones(md.mesh.numberofvertices,1);
+for (var i = 0; i < smb.length; ++i) {
+    smb[i][0] *= 3.6;
+    smb[i].push(smb[i][0]*-1);
+}
+
+md.smb.mass_balance=smb.slice();
+md.smb.mass_balance[md.smb.mass_balance.length-1] = [1.5, 3.];
+md.trans.isthermal=0;
+
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', 
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', 
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', 
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'];
+field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).SmbMassBalance),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).SmbMassBalance),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).SmbMassBalance),
+	(md.results.TransientSolution[0](4).Vx),
+	(md.results.TransientSolution[0](4).Vy),
+	(md.results.TransientSolution[0](4).Vel),
+	(md.results.TransientSolution[0](4).Pressure),
+	(md.results.TransientSolution[0](4).Base),
+	(md.results.TransientSolution[0](4).Surface),
+	(md.results.TransientSolution[0](4).Thickness),
+	(md.results.TransientSolution[0](4).SmbMassBalance),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test228.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test228.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test228.m	(revision 21239)
@@ -0,0 +1,64 @@
+%Test Name: SquareShelfTranForceNeg2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4.;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
+field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test228.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test228.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test228.py	(revision 21239)
@@ -0,0 +1,72 @@
+#Test Name: SquareShelfTranForceNeg2d
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.timestepping.time_step=1.
+md.settings.output_frequency=1
+md.timestepping.final_time=4.
+
+#Set up transient
+smb=numpy.ones((md.mesh.numberofvertices,1))*3.6
+smb=numpy.hstack((smb,smb*-1.))
+
+md.smb.mass_balance=numpy.vstack((smb,[1.5,3.]))
+md.transient.isthermal=False
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
+field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	md.results.TransientSolution[3].Vx,\
+	md.results.TransientSolution[3].Vy,\
+	md.results.TransientSolution[3].Vel,\
+	md.results.TransientSolution[3].Pressure,\
+	md.results.TransientSolution[3].Base,\
+	md.results.TransientSolution[3].Surface,\
+	md.results.TransientSolution[3].Thickness,\
+	md.results.TransientSolution[3].SmbMassBalance,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test229.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test229.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test229.js	(revision 21239)
@@ -0,0 +1,68 @@
+//Test Name: SquareShelfTranForcePos2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4.;
+
+//Set up transient
+smb=ones(md.mesh.numberofvertices,1);
+for (var i = 0; i < smb.length; ++i) {
+    smb[i][0] *= 3.6;
+    smb[i].push(smb[i][0]*2);
+}
+
+md.smb.mass_balance=smb.slice();
+md.smb.mass_balance[md.smb.mass_balance.length-1] = [1.5, 3.];
+md.trans.isthermal=0;
+
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', 
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', 
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', 
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'];
+field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).SmbMassBalance),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).SmbMassBalance),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).SmbMassBalance),
+	(md.results.TransientSolution[0](4).Vx),
+	(md.results.TransientSolution[0](4).Vy),
+	(md.results.TransientSolution[0](4).Vel),
+	(md.results.TransientSolution[0](4).Pressure),
+	(md.results.TransientSolution[0](4).Base),
+	(md.results.TransientSolution[0](4).Surface),
+	(md.results.TransientSolution[0](4).Thickness),
+	(md.results.TransientSolution[0](4).SmbMassBalance),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test229.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test229.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test229.m	(revision 21239)
@@ -0,0 +1,64 @@
+%Test Name: SquareShelfTranForcePos2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4.;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*2. ];
+
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
+field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test229.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test229.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test229.py	(revision 21239)
@@ -0,0 +1,72 @@
+#Test Name: SquareShelfTranForcePos2d
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.timestepping.time_step=1.
+md.settings.output_frequency=1
+md.timestepping.final_time=4.
+
+#Set up transient
+smb=numpy.ones((md.mesh.numberofvertices,1))*3.6
+smb=numpy.hstack((smb,smb*2.))
+
+md.smb.mass_balance=numpy.vstack((smb,[1.5,3.]))
+md.transient.isthermal=False
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
+field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	md.results.TransientSolution[3].Vx,\
+	md.results.TransientSolution[3].Vy,\
+	md.results.TransientSolution[3].Vel,\
+	md.results.TransientSolution[3].Pressure,\
+	md.results.TransientSolution[3].Base,\
+	md.results.TransientSolution[3].Surface,\
+	md.results.TransientSolution[3].Thickness,\
+	md.results.TransientSolution[3].SmbMassBalance,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test230.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test230.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test230.js	(revision 21239)
@@ -0,0 +1,73 @@
+//Test Name: SquareShelfTranForceNeg3d
+var md = new model();
+triangle(md,square[0],350000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+//Set up transient
+smb=ones(md.mesh.numberofvertices,1);
+for (var i = 0; i < smb.length; ++i) {
+    smb[i][0] *= 3.6;
+    smb[i].push(smb[i][0]*-1);
+}
+
+md.smb.mass_balance=smb.slice();
+md.smb.mass_balance[md.smb.mass_balance.length-1] = [1.5, 3.];
+md.trans.isthermal=0;
+
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', 
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).SmbMassBalance),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).SmbMassBalance),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).SmbMassBalance),
+	(md.results.TransientSolution[0](4).Vx),
+	(md.results.TransientSolution[0](4).Vy),
+	(md.results.TransientSolution[0](4).Vz),
+	(md.results.TransientSolution[0](4).Vel),
+	(md.results.TransientSolution[0](4).Pressure),
+	(md.results.TransientSolution[0](4).Base),
+	(md.results.TransientSolution[0](4).Surface),
+	(md.results.TransientSolution[0](4).Thickness),
+	(md.results.TransientSolution[0](4).SmbMassBalance),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test230.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test230.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test230.m	(revision 21239)
@@ -0,0 +1,69 @@
+%Test Name: SquareShelfTranForceNeg3d
+md=triangle(model(),'../Exp/Square.exp',350000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vz),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test230.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test230.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test230.py	(revision 21239)
@@ -0,0 +1,77 @@
+#Test Name: SquareShelfTranForceNeg3d
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',350000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.timestepping.time_step=1.
+md.settings.output_frequency=1
+md.timestepping.final_time=4.
+
+#Set up transient
+smb=numpy.ones((md.mesh.numberofvertices,1))*3.6
+smb=numpy.hstack((smb,smb*-1.))
+
+md.smb.mass_balance=numpy.vstack((smb,[1.5,3.]))
+md.transient.isthermal=False
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	md.results.TransientSolution[3].Vx,\
+	md.results.TransientSolution[3].Vy,\
+	md.results.TransientSolution[3].Vz,\
+	md.results.TransientSolution[3].Vel,\
+	md.results.TransientSolution[3].Pressure,\
+	md.results.TransientSolution[3].Base,\
+	md.results.TransientSolution[3].Surface,\
+	md.results.TransientSolution[3].Thickness,\
+	md.results.TransientSolution[3].SmbMassBalance,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test231.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test231.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test231.js	(revision 21239)
@@ -0,0 +1,73 @@
+//Test Name: SquareShelfTranForcePos3d
+var md = new model();
+triangle(md,square[0],350000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+//Set up transient
+smb=ones(md.mesh.numberofvertices,1);
+for (var i = 0; i < smb.length; ++i) {
+    smb[i][0] *= 3.6;
+    smb[i].push(smb[i][0]*2);
+}
+
+md.smb.mass_balance=smb.slice();
+md.smb.mass_balance[md.smb.mass_balance.length-1] = [1.5, 3.];
+md.trans.isthermal=0;
+
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', 
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).SmbMassBalance),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).SmbMassBalance),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).SmbMassBalance),
+	(md.results.TransientSolution[0](4).Vx),
+	(md.results.TransientSolution[0](4).Vy),
+	(md.results.TransientSolution[0](4).Vz),
+	(md.results.TransientSolution[0](4).Vel),
+	(md.results.TransientSolution[0](4).Pressure),
+	(md.results.TransientSolution[0](4).Base),
+	(md.results.TransientSolution[0](4).Surface),
+	(md.results.TransientSolution[0](4).Thickness),
+	(md.results.TransientSolution[0](4).SmbMassBalance),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test231.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test231.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test231.m	(revision 21239)
@@ -0,0 +1,69 @@
+%Test Name: SquareShelfTranForcePos3d
+md=triangle(model(),'../Exp/Square.exp',350000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*2. ];
+
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vz),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test231.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test231.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test231.py	(revision 21239)
@@ -0,0 +1,77 @@
+#Test Name: SquareShelfTranForcePos3d
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',350000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.timestepping.time_step=1.
+md.settings.output_frequency=1
+md.timestepping.final_time=4.
+
+#Set up transient
+smb=numpy.ones((md.mesh.numberofvertices,1))*3.6
+smb=numpy.hstack((smb,smb*2.))
+
+md.smb.mass_balance=numpy.vstack((smb,[1.5,3.]))
+md.transient.isthermal=False
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	md.results.TransientSolution[3].Vx,\
+	md.results.TransientSolution[3].Vy,\
+	md.results.TransientSolution[3].Vz,\
+	md.results.TransientSolution[3].Vel,\
+	md.results.TransientSolution[3].Pressure,\
+	md.results.TransientSolution[3].Base,\
+	md.results.TransientSolution[3].Surface,\
+	md.results.TransientSolution[3].Thickness,\
+	md.results.TransientSolution[3].SmbMassBalance,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test232.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test232.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test232.js	(revision 21239)
@@ -0,0 +1,31 @@
+//Test Name: SquareShelfTherTranForcTemp
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.thermal.spctemperature=[[md.thermal.spctemperature, md.thermal.spctemperature+5., md.thermal.spctemperature+10., md.thermal.spctemperature+15.], [1.5, 2.5, 3.5, 4.]];
+md.timestepping.time_step=1;
+md.timestepping.final_time=4;
+md.trans.isstressbalance=0;
+md.trans.ismasstransport=0;
+md.trans.issmb=1;
+md.trans.isthermal=1;
+md.trans.isgroundingline=0;
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Temperature1','BasalforcingsGroundediceMeltingRate1','Temperature2','BasalforcingsGroundediceMeltingRate2','Temperature3','BasalforcingsGroundediceMeltingRate3','Temperature4','BasalforcingsGroundediceMeltingRate4'];
+field_tolerances=[1e-13,1e-6,1e-13,1e-6,1e-13,1e-6,1e-13,1e-6];
+field_values=[
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](4).Temperature),
+	(md.results.TransientSolution[0](4).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test232.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test232.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test232.m	(revision 21239)
@@ -0,0 +1,30 @@
+%Test Name: SquareShelfTherTranForcTemp
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.thermal.spctemperature=[md.thermal.spctemperature, md.thermal.spctemperature+5., md.thermal.spctemperature+10., md.thermal.spctemperature+15.; 1.5 2.5 3.5 4.];
+md.timestepping.time_step=1;
+md.timestepping.final_time=4;
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature1','BasalforcingsGroundediceMeltingRate1','Temperature2','BasalforcingsGroundediceMeltingRate2','Temperature3','BasalforcingsGroundediceMeltingRate3','Temperature4','BasalforcingsGroundediceMeltingRate4'};
+field_tolerances={1e-13,1e-6,1e-13,1e-6,1e-13,1e-6,1e-13,1e-6};
+field_values={...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(4).Temperature),...
+	(md.results.TransientSolution(4).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test232.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test232.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test232.py	(revision 21239)
@@ -0,0 +1,39 @@
+#Test Name: SquareShelfTherTranForcTemp
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.thermal.spctemperature=numpy.vstack((numpy.hstack((md.thermal.spctemperature, md.thermal.spctemperature+5., md.thermal.spctemperature+10., md.thermal.spctemperature+15.)), [1.5,2.5,3.5,4.]))
+md.timestepping.time_step=1.
+md.timestepping.final_time=4.
+md.transient.isstressbalance=False
+md.transient.ismasstransport=False
+md.transient.issmb=True
+md.transient.isthermal=True
+md.transient.isgroundingline=False
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Temperature1','BasalforcingsGroundediceMeltingRate1','Temperature2','BasalforcingsGroundediceMeltingRate2','Temperature3','BasalforcingsGroundediceMeltingRate3','Temperature4','BasalforcingsGroundediceMeltingRate4']
+field_tolerances=[1e-13,1e-6,1e-13,1e-6,1e-13,1e-6,1e-13,1e-6]
+field_values=[\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[2].Temperature,\
+	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[3].Temperature,\
+	md.results.TransientSolution[3].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test233.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test233.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test233.js	(revision 21239)
@@ -0,0 +1,64 @@
+//Test Name: SquareShelfTranHOForcTemp
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.thermal.spctemperature=[[md.thermal.spctemperature, md.thermal.spctemperature+5.], [1., 2.]];
+md.timestepping.time_step=0.5;
+md.timestepping.final_time=2.;
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3', 
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','Temperature4','BasalforcingsGroundediceMeltingRate4'];
+field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09, 
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, 
+	1e-08,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, 
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](4).Vx),
+	(md.results.TransientSolution[0](4).Vy),
+	(md.results.TransientSolution[0](4).Vz),
+	(md.results.TransientSolution[0](4).Vel),
+	(md.results.TransientSolution[0](4).Pressure),
+	(md.results.TransientSolution[0](4).Base),
+	(md.results.TransientSolution[0](4).Surface),
+	(md.results.TransientSolution[0](4).Thickness),
+	(md.results.TransientSolution[0](4).Temperature),
+	(md.results.TransientSolution[0](4).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test233.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test233.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test233.m	(revision 21239)
@@ -0,0 +1,63 @@
+%Test Name: SquareShelfTranHOForcTemp
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.thermal.spctemperature=[md.thermal.spctemperature, md.thermal.spctemperature+5.; 1. 2.];
+md.timestepping.time_step=0.5;
+md.timestepping.final_time=2.;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3', ...
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','Temperature4','BasalforcingsGroundediceMeltingRate4'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09, ...
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, ...
+	1e-08,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, ...
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vz),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).Temperature),...
+	(md.results.TransientSolution(4).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test233.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test233.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test233.py	(revision 21239)
@@ -0,0 +1,72 @@
+#Test Name: SquareShelfTranHOForcTemp
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',200000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.thermal.spctemperature=numpy.vstack((numpy.hstack((md.thermal.spctemperature, md.thermal.spctemperature+5.)), [1.,2.]))
+md.timestepping.time_step=0.5
+md.timestepping.final_time=2.
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', \
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', \
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3', \
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','Temperature4','BasalforcingsGroundediceMeltingRate4']
+field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09, \
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, \
+	1e-08,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, \
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Temperature,\
+	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[3].Vx,\
+	md.results.TransientSolution[3].Vy,\
+	md.results.TransientSolution[3].Vz,\
+	md.results.TransientSolution[3].Vel,\
+	md.results.TransientSolution[3].Pressure,\
+	md.results.TransientSolution[3].Base,\
+	md.results.TransientSolution[3].Surface,\
+	md.results.TransientSolution[3].Thickness,\
+	md.results.TransientSolution[3].Temperature,\
+	md.results.TransientSolution[3].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test234.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test234.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test234.js	(revision 21239)
@@ -0,0 +1,93 @@
+//Test Name: SquareShelfTranForceNeg2dDakotaSamp
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+smb=ones(md.mesh.numberofvertices,1);
+for (var i = 0; i < smb.length; ++i) {
+    smb[i][0] *= 3.6;
+    smb[i].push(smb[i][0]*-1);
+}
+
+md.smb.mass_balance= smb.slice();
+md.smb.mass_balance[md.smb.mass_balance.length-1] = [1.5, 3.];
+md.trans.isthermal=0;
+//Dakota options
+
+//dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version.toString().slice(0,2);
+
+//partitioning
+md.qmu.numberofpartitions=20;
+partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');
+md.qmu.partition=md.qmu.partition-1;
+
+//variables
+md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,0.1);
+
+//responses
+md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.IceVolume=response_function('IceVolume',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux1=response_function('indexed_MassFlux_1',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux2=response_function('indexed_MassFlux_2',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux3=response_function('indexed_MassFlux_3',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux4=response_function('indexed_MassFlux_4',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux5=response_function('indexed_MassFlux_5',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.massFlux6=response_function('indexed_MassFlux_6',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+
+//mass flux profiles
+md.qmu.mass_flux_profiles=['../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp'];
+md.qmu.mass_flux_profile_directory=pwd;
+
+////  nond_sampling study
+md.qmu.method=dakota_method('nond_samp');
+md.qmu.method[md.qmu.method.length-1]=dmeth_params_set(md.qmu.method[md.qmu.method.length-1],'seed',1234,'samples',20,'sample_type','lhs');
+dver=textscan(IssmConfig('_DAKOTA_VERSION_'),'//[0123456789].//[0123456789].//[0123456789]');
+if (((str2num(dver[1][1])==4 && str2num(dver[2][1])>2) || str2num(dver[1][1])>4)) {
+	md.qmu.method[md.qmu.method.length-1]=dmeth_params_set(md.qmu.method(end),'rng','rnum2');
+}
+
+//parameters
+md.qmu.params.direct=true;
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.tabular_graphics_data=true;
+md.qmu.isdakota=1;
+
+if (version>=6) {
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+} else {
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+}
+
+
+md.stressbalance.reltol=Math.pow(10,-5); //tighten for qmu analyses
+md.trans.requested_outputs=['IceVolume'];
+
+//solve
+md=solve(md,'Transient','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+//Fields and tolerances to track changes
+md.results.dakota.moments=[];
+for (var i = 0; i < 8; ++i) {
+	md.results.dakota.moments.push(md.results.dakota.dresp_out[i].mean);
+}
+for (var i = 0; i < 8; ++i) {
+	md.results.dakota.moments.push(md.results.dakota.dresp_out[i].stddev);
+}
+field_names     =['moments'];
+field_tolerances=[1e-11];
+field_values=[
+         md.results.dakota.moments,
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test234.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test234.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test234.m	(revision 21239)
@@ -0,0 +1,89 @@
+%Test Name: SquareShelfTranForceNeg2dDakotaSamp
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+smb = ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1 ];
+
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.5 3];
+md.transient.isthermal=0;
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%partitioning
+md.qmu.numberofpartitions=20;
+md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');
+md.qmu.partition=md.qmu.partition-1;
+
+%variables
+md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,0.1);
+
+%responses
+md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.IceVolume=response_function('IceVolume',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux1=response_function('indexed_MassFlux_1',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux2=response_function('indexed_MassFlux_2',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux3=response_function('indexed_MassFlux_3',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux4=response_function('indexed_MassFlux_4',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux5=response_function('indexed_MassFlux_5',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.massFlux6=response_function('indexed_MassFlux_6',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%mass flux profiles
+md.qmu.mass_flux_profiles={'../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp'};
+md.qmu.mass_flux_profile_directory=pwd;
+
+%%  nond_sampling study
+md.qmu.method=dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),'seed',1234,'samples',20,'sample_type','lhs');
+dver=textscan(IssmConfig('_DAKOTA_VERSION_'),'%[0123456789].%[0123456789].%[0123456789]');
+if ((str2num(dver{1}{1})==4 && str2num(dver{2}{1})>2) || str2num(dver{1}{1})>4)
+	md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),'rng','rnum2');
+end
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.tabular_graphics_data=true;
+md.qmu.isdakota=1;
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+
+md.stressbalance.reltol=10^-5; %tighten for qmu analyses
+md.transient.requested_outputs={'IceVolume'};
+
+%solve
+md=solve(md,'Transient','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+%Fields and tolerances to track changes
+md.results.dakota.moments=[];
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).mean];
+end
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).stddev];
+end
+field_names     ={'moments'};
+field_tolerances={1e-11};
+field_values={...
+         md.results.dakota.moments,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test235.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test235.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test235.js	(revision 21239)
@@ -0,0 +1,88 @@
+//Test Name: SquareShelfTranForceNeg2dDakotaLocal
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+smb = ones(md.mesh.numberofvertices,1);
+for (var i = 0; i < smb.length; ++i) {
+    smb[i][0] *= 3.6;
+    smb[i].push(smb[i][0]*-1);
+}
+
+md.smb.mass_balance = smb.slice();
+md.smb.mass_balance[md.smb.mass_balance.length-1] = [1.5, 3.];
+md.trans.isthermal=0;
+//Dakota options
+
+//dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version.toString().slice(0,2);
+
+//partitioning
+md.qmu.numberofpartitions=20;
+partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');
+md.qmu.partition=md.qmu.partition-1;
+
+//variables
+md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,100);
+
+//responses
+md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.IceVolume=response_function('IceVolume',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux1=response_function('indexed_MassFlux_1',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux2=response_function('indexed_MassFlux_2',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux3=response_function('indexed_MassFlux_3',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux4=response_function('indexed_MassFlux_4',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux5=response_function('indexed_MassFlux_5',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.massFlux6=response_function('indexed_MassFlux_6',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+
+//mass flux profiles
+md.qmu.mass_flux_profiles=['../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp'];
+md.qmu.mass_flux_profile_directory=pwd;
+
+//method
+md.qmu.method     =dakota_method('nond_l');
+
+//parameters
+md.qmu.params.direct=true;
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.fd_gradient_step_size='0.1';
+md.qmu.isdakota=1;
+
+if (version>=6) {
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+} else {
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+}
+
+
+md.stressbalance.reltol=Math.pow(10,-5); //tighten for qmu analyses
+md.trans.requested_outputs=['IceVolume'];
+
+//solve
+md=solve(md,'Transient','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+//Fields and tolerances to track changes
+md.results.dakota.moments=[];
+for (var i = 0; i < 8; ++i) {
+    md.results.dakota.moments.push(md.results.dakota.dresp_out[i].mean);
+}
+for (var i = 0; i < 8; ++i) {
+    md.results.dakota.moments.push(md.results.dakota.dresp_out[i].stddev);
+}
+field_names     =['moments'];
+field_tolerances=[1e-11];
+field_values=[
+         md.results.dakota.moments,
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test235.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test235.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test235.m	(revision 21239)
@@ -0,0 +1,84 @@
+%Test Name: SquareShelfTranForceNeg2dDakotaLocal
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+smb = ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1 ];
+
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.5 3];
+md.transient.isthermal=0;
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%partitioning
+md.qmu.numberofpartitions=20;
+md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');
+md.qmu.partition=md.qmu.partition-1;
+
+%variables
+md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,100);
+
+%responses
+md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.IceVolume=response_function('IceVolume',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux1=response_function('indexed_MassFlux_1',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux2=response_function('indexed_MassFlux_2',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux3=response_function('indexed_MassFlux_3',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux4=response_function('indexed_MassFlux_4',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux5=response_function('indexed_MassFlux_5',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.massFlux6=response_function('indexed_MassFlux_6',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%mass flux profiles
+md.qmu.mass_flux_profiles={'../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp'};
+md.qmu.mass_flux_profile_directory=pwd;
+
+%method
+md.qmu.method     =dakota_method('nond_l');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.fd_gradient_step_size='0.1';
+md.qmu.isdakota=1;
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+
+md.stressbalance.reltol=10^-5; %tighten for qmu analyses
+md.transient.requested_outputs={'IceVolume'};
+
+%solve
+md=solve(md,'Transient','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+%Fields and tolerances to track changes
+md.results.dakota.moments=[];
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).mean];
+end
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).stddev];
+end
+field_names     ={'moments'};
+field_tolerances={1e-11};
+field_values={...
+         md.results.dakota.moments,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test236.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test236.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test236.m	(revision 21239)
@@ -0,0 +1,107 @@
+%Test Name: SquareShelfTranIspddIsdeltaSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+
+%md.verbose=verbose('all');
+
+% Use of ispdd and isdelta18o methods
+md.smb = SMBpdd();
+md.smb.isdelta18o=1;
+md.smb.ismungsm=0;
+
+%md.smb.precipitation(1:md.mesh.numberofvertices,1:12)=0;
+%md.smb.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
+
+% Add temperature, precipitation and delta18o needed to measure the surface mass balance
+%  creating delta18o
+load '../Data/delta18o.data'
+md.smb.delta18o=delta18o;
+% creating delta18oSurface
+md.smb.delta18o_surface(1,1:(length(delta18o))) = 0;
+md.smb.delta18o_surface(2,:) = delta18o(2,:);
+
+% creating Present day and lgm temperatures
+% Same temperature over the all region:
+tmonth(1:12)=238.15+20.;
+for imonth=0:11
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+    md.smb.temperatures_lgm(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1)-20.;
+    % Time for the last line:
+    md.smb.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.temperatures_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+end
+
+% creating initialization and spc temperatures initialization and
+% spc
+md.thermal.spctemperature=mean(md.smb.temperatures_lgm(1:md.mesh.numberofvertices,1:12),2); %-10*ones(md.mesh.numberofvertices,1);
+md.thermal.spctemperature=repmat(md.thermal.spctemperature,1,md.timestepping.final_time/md.timestepping.time_step);
+itemp=0:md.timestepping.time_step:md.timestepping.final_time-md.timestepping.time_step;
+md.thermal.spctemperature(md.mesh.numberofvertices+1,:)=itemp;
+
+md.initialization.temperature=md.smb.temperatures_lgm(1:md.mesh.numberofvertices,1); %*ones(md.mesh.numberofvertices,1);
+md.smb = initialize(md.smb,md);
+
+% creating precipitation
+for imonth=0:11
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    md.smb.precipitations_lgm(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    % Time for the last line:
+    md.smb.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.precipitations_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+end
+
+% Interpolation factors
+md.smb.Tdiff(1,1:md.timestepping.final_time)=0.5;
+md.smb.sealev(1,1:md.timestepping.final_time)=0.5;
+% Year of each data point
+md.smb.Tdiff(2,1:md.timestepping.final_time)=1:1:md.timestepping.final_time;
+md.smb.sealev(2,1:md.timestepping.final_time)=1:1:md.timestepping.final_time;
+
+% time steps and resolution
+md.timestepping.time_step=20;
+md.settings.output_frequency=1;
+md.timestepping.final_time=60;
+
+% 
+md.transient.requested_outputs={'default','SmbMonthlytemperatures'};
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',...
+	   'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',...
+	   'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test236.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test236.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test236.py	(revision 21239)
@@ -0,0 +1,111 @@
+#Test Name: SquareShelfTranIspddIsdeltaSSA2d
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+
+# Use of ispdd and isdelta18o methods
+md.smb = SMBpdd();
+md.smb.isdelta18o=1
+md.smb.ismungsm=0
+
+# Add temperature, precipitation and delta18o needed to measure the surface mass balance
+# creating delta18o
+delta18o=numpy.loadtxt('../Data/delta18o.data')
+md.smb.delta18o=delta18o
+# creating delta18oSurface
+md.smb.delta18o_surface = numpy.zeros((2,numpy.size(delta18o,axis=1)))
+md.smb.delta18o_surface[1,:] = delta18o[1,:]
+
+# creating Present day and lgm temperatures
+# Same temperature over the all region:
+tmonth=numpy.ones(12)*(238.15+20.)
+md.smb.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.temperatures_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
+for imonth in xrange(0,12):
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
+    md.smb.temperatures_lgm[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]-20.
+    # Time for the last line:
+    md.smb.temperatures_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.temperatures_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+
+# creating initialization and spc temperatures initialization and spc
+md.thermal.spctemperature=numpy.mean(md.smb.temperatures_lgm[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)    #-10*ones(md.mesh.numberofvertices,1)
+md.thermal.spctemperature=numpy.tile(md.thermal.spctemperature,(1,md.timestepping.final_time/md.timestepping.time_step))
+itemp=numpy.arange(0,md.timestepping.final_time,md.timestepping.time_step)
+md.thermal.spctemperature=numpy.vstack((md.thermal.spctemperature,itemp.reshape(1,-1)))
+
+md.initialization.temperature=md.smb.temperatures_lgm[0:md.mesh.numberofvertices,0]    #*ones(md.mesh.numberofvertices,1)
+md.smb.initialize(md)
+
+# creating precipitation
+md.smb.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.precipitations_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
+for imonth in xrange(0,12):
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.precipitations_lgm[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+
+# Interpolation factors
+md.smb.Tdiff=0.5*numpy.ones((2,md.timestepping.final_time))
+md.smb.sealev=0.5*numpy.ones((2,md.timestepping.final_time))
+# Year of each data point
+md.smb.Tdiff[1,1:md.timestepping.final_time]=numpy.arange(1.,md.timestepping.final_time)
+md.smb.sealev[1,1:md.timestepping.final_time]=numpy.arange(1.,md.timestepping.final_time)
+
+# time steps and resolution
+md.timestepping.time_step=20.
+md.timestepping.final_time=60.
+
+
+# 
+md.transient.requested_outputs=['default','SmbMonthlytemperatures']
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',\
+		            'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',\
+				      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		            1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+			         1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].SmbMonthlytemperatures,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].SmbMonthlytemperatures,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].SmbMonthlytemperatures,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test237.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test237.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test237.m	(revision 21239)
@@ -0,0 +1,110 @@
+%Test Name: SquareShelfTranIspddIsdeltaSSA3d
+md=triangle(model(),'../Exp/Square.exp',600000.);%180000
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+
+%md.verbose=verbose('all');
+
+% Use of ispdd methods
+md.smb = SMBpdd();
+md.smb.isdelta18o=0;
+md.smb.ismungsm=1;
+
+% time steps and resolution
+md.timestepping.time_step=20;
+md.settings.output_frequency=1;
+md.timestepping.final_time=60;
+
+% creating Present day and lgm temperatures
+% Same temperature over the all region:
+tmonth(1:12)=238.15+20.;
+for imonth=0:11
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+    md.smb.temperatures_lgm(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1)-20.;
+    % Time for the last line:
+    md.smb.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.temperatures_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+end
+
+% creating initialization and spc temperatures initialization and spc
+md.thermal.spctemperature=mean(md.smb.temperatures_lgm(1:md.mesh.numberofvertices,1:12),2); %-10*ones(md.mesh.numberofvertices,1);
+md.thermal.spctemperature=repmat(md.thermal.spctemperature,1,md.timestepping.final_time/md.timestepping.time_step);
+itemp=0:md.timestepping.time_step:md.timestepping.final_time-md.timestepping.time_step;
+md.thermal.spctemperature(md.mesh.numberofvertices+1,:)=itemp;
+
+md.initialization.temperature=md.smb.temperatures_lgm(1:md.mesh.numberofvertices,1); %*ones(md.mesh.numberofvertices,1);
+md.smb = initialize(md.smb,md);
+
+% creating precipitation
+for imonth=0:11
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    md.smb.precipitations_lgm(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    % Time for the last line:
+    md.smb.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.precipitations_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+end
+
+for iint=1:(md.timestepping.final_time/md.timestepping.time_step)+1
+    md.smb.Pfac(1,iint)=0.15*iint;
+    md.smb.Tdiff(1,iint)=0.15*iint;
+    md.smb.sealev(1,iint)=0.15*iint;
+    % Year of each data point
+    md.smb.Pfac(2,iint)=(iint-1)*20;
+    md.smb.Tdiff(2,iint)=(iint-1)*20;
+    md.smb.sealev(2,iint)=(iint-1)*20;
+end
+
+%
+md.transient.requested_outputs={'default','SmbMonthlytemperatures'};
+md=extrude(md,3,1);
+
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','SmbMonthlytemperatures1','SmbMassBalance1',...
+						'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','SmbMonthlytemperatures2','SmbMassBalance2',...
+						'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','SmbMonthlytemperatures3','SmbMassBalance3'};
+field_tolerances={...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,1e-8,1e-8,1e-13,1e-8,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,1e-8,1e-8,1e-13,1e-7,1e-13,1e-13,...
+	1e-13,1e-13,1e-08,1e-13,1e-13,1e-8,1e-8,1e-8,1e-13,5e-7,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(1).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test237.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test237.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test237.py	(revision 21239)
@@ -0,0 +1,121 @@
+#Test Name: SquareShelfTranIspddIsdeltaSSA3d
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',600000)    #180000
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+
+# Use of ispdd and isdelta18o methods
+md.smb = SMBpdd();
+md.smb.isdelta18o=0
+md.smb.ismungsm=1
+
+# time steps and resolution
+md.timestepping.time_step=20.
+md.settings.output_frequency=1
+md.timestepping.final_time=60.
+
+# creating Present day and lgm temperatures
+# Same temperature over the all region:
+tmonth=numpy.ones(12)*(238.15+20.)
+md.smb.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.temperatures_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
+for imonth in xrange(0,12):
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
+    md.smb.temperatures_lgm[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]-20.
+    # Time for the last line:
+    md.smb.temperatures_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.temperatures_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+
+# creating initialization and spc temperatures initialization and spc
+md.thermal.spctemperature=numpy.mean(md.smb.temperatures_lgm[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)    #-10*ones(md.mesh.numberofvertices,1)
+md.thermal.spctemperature=numpy.tile(md.thermal.spctemperature,(1,md.timestepping.final_time/md.timestepping.time_step))
+itemp=numpy.arange(0,md.timestepping.final_time,md.timestepping.time_step)
+md.thermal.spctemperature=numpy.vstack((md.thermal.spctemperature,itemp.reshape(1,-1)))
+
+md.initialization.temperature=md.smb.temperatures_lgm[0:md.mesh.numberofvertices,0].reshape(-1,1)   #*ones(md.mesh.numberofvertices,1)
+md.smb.initialize(md)
+
+# creating precipitation
+md.smb.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.precipitations_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
+for imonth in xrange(0,12):
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.precipitations_lgm[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+
+fsize=int(md.timestepping.final_time/md.timestepping.time_step)+2
+md.smb.Pfac=numpy.zeros((2,fsize))
+md.smb.Tdiff=numpy.zeros((2,fsize))
+md.smb.sealev=numpy.zeros((2,fsize))
+for iint in xrange(0,fsize):
+    # Interpolation factors
+	 md.smb.Pfac[0,iint]=0.15*(iint+1)
+	 md.smb.Tdiff[0,iint]=0.15*(iint+1)
+	 md.smb.sealev[0,iint]=0.15*(iint+1)
+	 # Year of each data point
+	 md.smb.Pfac[1,iint]=(float(iint))*20
+	 md.smb.Tdiff[1,iint]=(float(iint))*20
+	 md.smb.sealev[1,iint]=(float(iint))*20
+
+#
+md.transient.requested_outputs=['default','SmbMonthlytemperatures']
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',1)
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','SmbMonthlytemperatures1','SmbMassBalance1',\
+		'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','SmbMonthlytemperatures2','SmbMassBalance2',\
+		'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','SmbMonthlytemperatures3','SmbMassBalance3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,1e-8,1e-8,1e-13,1e-8,1e-13,1e-13,\
+		1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,1e-8,1e-8,7e-13,1e-7,1e-13,1e-13,\
+		1e-13,1e-13,1e-08,1e-13,1e-13,1e-8,1e-8,1e-8,7e-13,5e-7,1e-13,1e-13];
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[0].SmbMonthlytemperatures,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].SmbMonthlytemperatures,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Temperature,\
+	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[2].SmbMonthlytemperatures,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test238.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test238.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test238.m	(revision 21239)
@@ -0,0 +1,87 @@
+%Test Name: SquareShelfTranIspddIsdeltaO18pdSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+
+%md.verbose=verbose('all');
+
+% Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
+%md.smb.precipitation(1:md.mesh.numberofvertices,1:12)=0;
+%md.smb.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
+
+% Add temperature, precipitation and delta18o needed to measure the surface mass balance
+%  creating delta18o
+load '../Data/delta18o.data'
+md.smb.delta18o=delta18o;
+
+% creating Present day  temperatures
+% Same temperature over the all region:
+tmonth(1:12)=238.15+20.;
+for imonth=0:11
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+    % Time for the last line:
+    md.smb.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+end
+
+% creating initialization and spc temperatures initialization and
+% spc
+md.thermal.spctemperature=mean(md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1:12),2)-10; %-10*ones(md.mesh.numberofvertices,1);
+md.initialization.temperature=md.thermal.spctemperature; %md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1);
+
+% creating precipitation
+for imonth=0:11
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    % Time for the last line:
+    md.smb.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+end
+md.smb = initialize(md.smb,md);
+
+% time steps and resolution
+md.timestepping.time_step=20;
+md.settings.output_frequency=1;
+md.timestepping.final_time=60;
+
+% 
+md.transient.requested_outputs={'default','SmbMonthlytemperatures'};
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',...
+	      'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',...
+	      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	   1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	   1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test238.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test238.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test238.py	(revision 21239)
@@ -0,0 +1,91 @@
+#Test Name: SquareShelfTranIspddIsdeltaO18pdSSA2d 
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+
+# Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
+
+# Add temperature, precipitation and delta18o needed to measure the surface mass balance
+# creating delta18o
+delta18o=numpy.loadtxt('../Data/delta18o.data')
+md.smb.delta18o=delta18o
+
+# creating Present day temperatures
+# Same temperature over the all region:
+tmonth=numpy.ones(12)*(238.15+20.)
+md.smb.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+for imonth in xrange(0,12):
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
+    # Time for the last line:
+    md.smb.temperatures_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+
+# creating initialization and spc temperatures initialization and spc
+md.thermal.spctemperature=numpy.mean(md.smb.temperatures_presentday[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)
+md.thermal.spctemperature=md.thermal.spctemperature-10
+md.initialization.temperature=md.thermal.spctemperature
+md.smb.initialize(md)
+
+# creating precipitation
+md.smb.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+for imonth in xrange(0,12):
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_presentday[md.mesh.numberofvertices,imonth]=(float(imonth)/12.)
+
+# time steps and resolution
+md.timestepping.time_step=20;
+md.settings.output_frequency=1;
+md.timestepping.final_time=60;
+
+# 
+md.transient.requested_outputs=['default','SmbMonthlytemperatures']
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',\
+		            'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',\
+				      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		            1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+			         1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].SmbMonthlytemperatures,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].SmbMonthlytemperatures,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].SmbMonthlytemperatures,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test239.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test239.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test239.m	(revision 21239)
@@ -0,0 +1,88 @@
+%Test Name: SquareShelfTranIspddIsdeltaO18pdInterpSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+
+%md.verbose=verbose('all');
+
+% Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
+%md.smb.precipitation(1:md.mesh.numberofvertices,1:12)=0;
+%md.smb.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
+
+% Add temperature, precipitation and delta18o needed to measure the surface mass balance
+%  creating delta18o
+load '../Data/delta18o.data'
+md.smb.delta18o=delta18o;
+
+% creating Present day  temperatures
+% Same temperature over the all region:
+tmonth(1:12)=238.15+20.;
+for imonth=0:11
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+    % Time for the last line:
+    md.smb.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+end
+
+% creating initialization and spc temperatures initialization and
+% spc
+md.thermal.spctemperature=mean(md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1:12),2)-10; %-10*ones(md.mesh.numberofvertices,1);
+
+md.initialization.temperature=md.thermal.spctemperature; %md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1);
+
+% creating precipitation
+for imonth=0:11
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    % Time for the last line:
+    md.smb.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+end
+md.smb = initialize(md.smb,md);
+
+% time steps and resolution
+md.timestepping.time_step=0.5;
+md.settings.output_frequency=1;
+md.timestepping.final_time=2;
+
+% 
+md.transient.requested_outputs={'default','SmbMonthlytemperatures'};
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',...
+	      'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',...
+	      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	   1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	   1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test239.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test239.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test239.py	(revision 21239)
@@ -0,0 +1,91 @@
+#Test Name: SquareShelfTranIspddIsdeltaO18pdInterpSSA2d 
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+
+# Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
+
+# Add temperature, precipitation and delta18o needed to measure the surface mass balance
+# creating delta18o
+delta18o=numpy.loadtxt('../Data/delta18o.data')
+md.smb.delta18o=delta18o
+
+# creating Present day temperatures
+# Same temperature over the all region:
+tmonth=numpy.ones(12)*(238.15+20.)
+md.smb.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+for imonth in xrange(0,12):
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
+    # Time for the last line:
+    md.smb.temperatures_presentday[md.mesh.numberofvertices,imonth]=(float(imonth)/12.)
+
+# creating initialization and spc temperatures initialization and spc
+md.thermal.spctemperature=numpy.mean(md.smb.temperatures_presentday[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)
+md.thermal.spctemperature=md.thermal.spctemperature-10
+md.initialization.temperature=md.thermal.spctemperature
+md.smb.initialize(md)
+
+# creating precipitation
+md.smb.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+for imonth in xrange(0,12):
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+
+# time steps and resolution
+md.timestepping.time_step=0.5;
+md.settings.output_frequency=1;
+md.timestepping.final_time=2;
+
+# 
+md.transient.requested_outputs=['default','SmbMonthlytemperatures']
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',\
+		            'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',\
+				      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		            1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+			         1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].SmbMonthlytemperatures,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].SmbMonthlytemperatures,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].SmbMonthlytemperatures,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test240.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test240.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test240.m	(revision 21239)
@@ -0,0 +1,88 @@
+%Test Name: SquareShelfTranIspddIsdeltaO18pdNoInterpSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+
+%md.verbose=verbose('all');
+
+% Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
+%md.smb.precipitation(1:md.mesh.numberofvertices,1:12)=0;
+%md.smb.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
+
+% Add temperature, precipitation and delta18o needed to measure the surface mass balance
+%  creating delta18o
+load '../Data/delta18o.data'
+md.smb.delta18o=delta18o;
+
+% creating Present day  temperatures
+% Same temperature over the all region:
+tmonth(1:12)=238.15+20.;
+for imonth=0:11
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+    % Time for the last line:
+    md.smb.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+end
+md.smb = initialize(md.smb,md);
+
+% creating initialization and spc temperatures initialization and
+% spc
+md.thermal.spctemperature=mean(md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1:12),2)-10; %-10*ones(md.mesh.numberofvertices,1);
+md.initialization.temperature=md.thermal.spctemperature; %md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1);
+
+% creating precipitation
+for imonth=0:11
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    % Time for the last line:
+    md.smb.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+end
+
+% time steps and resolution
+md.timestepping.time_step=0.5;
+md.settings.output_frequency=1;
+md.timestepping.final_time=2;
+md.timestepping.interp_forcings=0;
+
+% 
+md.transient.requested_outputs={'default','SmbMonthlytemperatures'};
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',...
+	      'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',...
+	      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	   1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	   1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test240.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test240.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test240.py	(revision 21239)
@@ -0,0 +1,92 @@
+#Test Name: SquareShelfTranIspddIsdeltaO18pdNoInterpSSA2d 
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+
+# Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
+
+# Add temperature, precipitation and delta18o needed to measure the surface mass balance
+# creating delta18o
+delta18o=numpy.loadtxt('../Data/delta18o.data')
+md.smb.delta18o=delta18o
+
+# creating Present day temperatures
+# Same temperature over the all region:
+tmonth=numpy.ones(12)*(238.15+20.)
+md.smb.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+for imonth in xrange(0,12):
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
+    # Time for the last line:
+    md.smb.temperatures_presentday[md.mesh.numberofvertices,imonth]=(float(imonth)/12.)
+
+# creating initialization and spc temperatures initialization and spc
+md.thermal.spctemperature=numpy.mean(md.smb.temperatures_presentday[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)
+md.thermal.spctemperature=md.thermal.spctemperature-10
+md.initialization.temperature=md.thermal.spctemperature
+md.smb.initialize(md)
+
+# creating precipitation
+md.smb.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+for imonth in xrange(0,12):
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+
+# time steps and resolution
+md.timestepping.time_step=0.5;
+md.settings.output_frequency=1;
+md.timestepping.final_time=2;
+md.timestepping.interp_forcings=0;
+
+# 
+md.transient.requested_outputs=['default','SmbMonthlytemperatures']
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',\
+		            'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',\
+				      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		            1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+			         1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].SmbMonthlytemperatures,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].SmbMonthlytemperatures,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].SmbMonthlytemperatures,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test241.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test241.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test241.m	(revision 21239)
@@ -0,0 +1,65 @@
+%Test Name: SquareShelfTranForceNoInterp2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4.;
+md.timestepping.interp_forcings=0;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
+field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test241.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test241.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test241.py	(revision 21239)
@@ -0,0 +1,73 @@
+#Test Name: SquareShelfTranForceNoInterp2d
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.timestepping.time_step=1.
+md.settings.output_frequency=1
+md.timestepping.final_time=4.
+md.timestepping.interp_forcings=False
+
+#Set up transient
+smb=numpy.ones((md.mesh.numberofvertices,1))*3.6
+smb=numpy.hstack((smb,smb*-1.))
+
+md.smb.mass_balance=numpy.vstack((smb,[1.5,3.]))
+md.transient.isthermal=False
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
+field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	md.results.TransientSolution[3].Vx,\
+	md.results.TransientSolution[3].Vy,\
+	md.results.TransientSolution[3].Vel,\
+	md.results.TransientSolution[3].Pressure,\
+	md.results.TransientSolution[3].Base,\
+	md.results.TransientSolution[3].Surface,\
+	md.results.TransientSolution[3].Thickness,\
+	md.results.TransientSolution[3].SmbMassBalance,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test242.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test242.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test242.m	(revision 21239)
@@ -0,0 +1,71 @@
+%Test Name: SquareShelfTranForceNoInterp3d
+md=triangle(model(),'../Exp/Square.exp',350000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+md.timestepping.interp_forcings=0;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4'};
+field_tolerances={...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vz),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test242.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test242.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test242.py	(revision 21239)
@@ -0,0 +1,79 @@
+#Test Name: SquareShelfTranForceNoInterp3d
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',350000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.timestepping.time_step=1.
+md.settings.output_frequency=1
+md.timestepping.final_time=4.
+md.timestepping.interp_forcings=False
+
+#Set up transient
+smb=numpy.ones((md.mesh.numberofvertices,1))*3.6
+smb=numpy.hstack((smb,smb*-1.))
+
+md.smb.mass_balance=numpy.vstack((smb,[1.5,3.]))
+md.transient.isthermal=False
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4']
+field_tolerances=[\
+		1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,\
+		1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,\
+		1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,\
+		1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	md.results.TransientSolution[3].Vx,\
+	md.results.TransientSolution[3].Vy,\
+	md.results.TransientSolution[3].Vz,\
+	md.results.TransientSolution[3].Vel,\
+	md.results.TransientSolution[3].Pressure,\
+	md.results.TransientSolution[3].Base,\
+	md.results.TransientSolution[3].Surface,\
+	md.results.TransientSolution[3].Thickness,\
+	md.results.TransientSolution[3].SmbMassBalance,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2424.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2424.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2424.m	(revision 21239)
@@ -0,0 +1,38 @@
+%Test Name: SquareSheetShelfGroundingLine2dAggressive. From test424, with sea level increasing.
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.initialization.vx(:)=0.;
+md.initialization.vy(:)=0.;
+md.smb.mass_balance(:)=0.;
+
+md.geometry.base=-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.bed =-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.thickness(:)=1000.;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+md.transient.isstressbalance=0;
+md.transient.isgroundingline=1;
+md.transient.isthermal=0;
+md.groundingline.migration='AggressiveMigration';
+md.transient.requested_outputs={'IceVolume','IceVolumeAboveFloatation','Sealevel'};
+
+md.timestepping.time_step=.1;
+md.slr.sealevel=newforcing(md.timestepping.start_time, md.timestepping.final_time, md.timestepping.time_step,-200,200,md.mesh.numberofvertices);
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%we are checking that the grounding line position is near the theorical one, which is the 0 contour level 
+%of surface - sealevel - (1-di)* thickness; 
+
+nsteps=length(md.results.TransientSolution);
+field_names={};
+field_tolerances={};
+field_values={};
+for i=1:nsteps,
+	field_names{end+1}=sprintf('Time-%g-yr-ice_levelset-S-sl-(1-di)*H',md.results.TransientSolution(i).time);
+	field_tolerances{end+1}=1e-12;
+	field_values{end+1}= md.results.TransientSolution(i).MaskGroundediceLevelset- (md.geometry.surface-md.results.TransientSolution(i).Sealevel-(1-md.materials.rho_ice/md.materials.rho_water)*md.geometry.thickness);
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2425.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2425.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test2425.m	(revision 21239)
@@ -0,0 +1,41 @@
+%Test Name: SquareSheetShelfGroundingLine2dSoft
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.initialization.vx(:)=0.;
+md.initialization.vy(:)=0.;
+md.geometry.base=-700.-(md.mesh.y-500000.)/1000.;
+md.geometry.bed =-700.-(md.mesh.y-500000.)/1000.;
+md.geometry.thickness(:)=1300.;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+md.groundingline.migration='AggressiveMigration';
+
+md.timestepping.time_step=.1;
+md.timestepping.final_time=1;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+vel1=md.results.TransientSolution(end).Vel;
+
+
+%get same results with offset in bed and sea level: 
+md.geometry.base=-700.-(md.mesh.y-500000.)/1000.;
+md.geometry.bed =-700.-(md.mesh.y-500000.)/1000.;
+md.geometry.thickness(:)=1300.;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+md.geometry.base=md.geometry.base+1000;
+md.geometry.bed=md.geometry.bed+1000;
+md.geometry.surface=md.geometry.surface+1000;
+md.slr.sealevel=1000*ones(md.mesh.numberofvertices,1);
+
+md=solve(md,'Transient','checkconsistency','no');
+vel2=md.results.TransientSolution(end).Vel;
+
+%Fields and tolerances to track changes
+field_names     ={'Vel','Veloffset'};
+field_tolerances={1e-13,1e-13};
+field_values={vel1,vel2};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test243.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test243.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test243.m	(revision 21239)
@@ -0,0 +1,59 @@
+%Test Name: SquareShelfSMBGemb
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.materials.rho_ice=910;
+md.cluster=generic('name',oshostname(),'np',3);
+
+% Use of Gemb method for SMB computation
+md.smb = SMBgemb(md.mesh,md.geometry);
+
+%load hourly surface forcing date from 1979 to 2009:
+inputs=load('../Data/gemb_input.mat');
+
+%setup the inputs: 
+md.smb.Ta=[repmat(inputs.Ta0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.V=[repmat(inputs.V0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.dswrf=[repmat(inputs.dsw0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.dlwrf=[repmat(inputs.dlw0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.P=[repmat(inputs.P0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.eAir=[repmat(inputs.eAir0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.pAir=[repmat(inputs.pAir0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.Vz=repmat(inputs.LP.Vz,md.mesh.numberofelements,1);
+md.smb.Tz=repmat(inputs.LP.Tz,md.mesh.numberofelements,1);
+md.smb.Tmean=repmat(inputs.LP.Tmean,md.mesh.numberofelements,1);
+md.smb.C=repmat(inputs.LP.C,md.mesh.numberofelements,1);
+
+%smb settings
+md.smb.requested_outputs={'SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbEC','SmbA','SmbMassBalance'};
+
+%only run smb core: 
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.isthermal=0;
+
+%time stepping: 
+md.timestepping.start_time=1965;
+md.timestepping.final_time=1966;
+md.timestepping.time_step=1/365.0;
+md.timestepping.interp_forcings=0;
+
+%Run transient
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names      ={'SmbDz','SmbT' ,'SmbD' ,'SmbRe','SmbGdn','SmbGsp','SmbA' ,'SmbEC','SmbMassBalance'};
+field_tolerances ={5e-4,5e-5,0.0006,0.0002,1e-5,0.0003,2e-5,2e-7,1e-7};
+
+field_values={...
+	(md.results.TransientSolution(end).SmbDz(1,1:240)),...
+	(md.results.TransientSolution(end).SmbT(1,1:240)),...
+	(md.results.TransientSolution(end).SmbD(1,1:240)),...
+	(md.results.TransientSolution(end).SmbRe(1,1:240)),...
+	(md.results.TransientSolution(end).SmbGdn(1,1:240)),...
+	(md.results.TransientSolution(end).SmbGsp(1,1:240)),...
+	(md.results.TransientSolution(end).SmbA(1,1:240)),...
+	(md.results.TransientSolution(end).SmbEC(1)),...
+	(md.results.TransientSolution(end).SmbMassBalance(1)),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test250.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test250.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test250.m	(revision 21239)
@@ -0,0 +1,89 @@
+%Test Name: SquareShelfTranForceNeg2dDakotaSampLinearPart
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+smb = ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1 ];
+
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.5 3];
+md.transient.isthermal=0;
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%partitioning
+md.qmu.numberofpartitions=md.mesh.numberofvertices;
+md=partitioner(md,'package','linear');
+md.qmu.partition=md.qmu.partition-1;
+
+%variables
+md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,0.1);
+
+%responses
+md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.IceVolume=response_function('IceVolume',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux1=response_function('indexed_MassFlux_1',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux2=response_function('indexed_MassFlux_2',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux3=response_function('indexed_MassFlux_3',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux4=response_function('indexed_MassFlux_4',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux5=response_function('indexed_MassFlux_5',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.massFlux6=response_function('indexed_MassFlux_6',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%mass flux profiles
+md.qmu.mass_flux_profiles={'../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp'};
+md.qmu.mass_flux_profile_directory=pwd;
+
+%%  nond_sampling study
+md.qmu.method=dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),'seed',1234,'samples',20,'sample_type','lhs');
+dver=textscan(IssmConfig('_DAKOTA_VERSION_'),'%[0123456789].%[0123456789].%[0123456789]');
+if ((str2num(dver{1}{1})==4 && str2num(dver{2}{1})>2) || str2num(dver{1}{1})>4)
+	md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),'rng','rnum2');
+end
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.tabular_graphics_data=true;
+md.qmu.isdakota=1;
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+
+md.stressbalance.reltol=10^-5; %tighten for qmu analyses
+md.transient.requested_outputs={'IceVolume'};
+
+%solve
+md=solve(md,'Transient','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+%Fields and tolerances to track changes
+md.results.dakota.moments=[];
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).mean];
+end
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).stddev];
+end
+field_names     ={'moments'};
+field_tolerances={1e-11};
+field_values={...
+         md.results.dakota.moments,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test251.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test251.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test251.m	(revision 21239)
@@ -0,0 +1,84 @@
+%Test Name: SquareShelfTranForceNeg2dDakotaLocalLinearPart
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+smb = ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1 ];
+
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.5 3];
+md.transient.isthermal=0;
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%partitioning
+md.qmu.numberofpartitions=md.mesh.numberofvertices;
+md=partitioner(md,'package','linear');
+md.qmu.partition=md.qmu.partition-1;
+
+%variables
+md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,100);
+
+%responses
+md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.IceVolume=response_function('IceVolume',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux1=response_function('indexed_MassFlux_1',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux2=response_function('indexed_MassFlux_2',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux3=response_function('indexed_MassFlux_3',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux4=response_function('indexed_MassFlux_4',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux5=response_function('indexed_MassFlux_5',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.massFlux6=response_function('indexed_MassFlux_6',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%mass flux profiles
+md.qmu.mass_flux_profiles={'../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp'};
+md.qmu.mass_flux_profile_directory=pwd;
+
+%method
+md.qmu.method     =dakota_method('nond_l');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.fd_gradient_step_size='0.1';
+md.qmu.isdakota=1;
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+
+md.stressbalance.reltol=10^-5; %tighten for qmu analyses
+md.transient.requested_outputs={'IceVolume'};
+
+%solve
+md=solve(md,'Transient','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+%Fields and tolerances to track changes
+md.results.dakota.moments=[];
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).mean];
+end
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).stddev];
+end
+field_names     ={'moments'};
+field_tolerances={1e-11};
+field_values={...
+         md.results.dakota.moments,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test270.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test270.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test270.m	(revision 21239)
@@ -0,0 +1,21 @@
+%Test Name: SquareShelfStressSSA2dDamage
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md.materials=matdamageice();
+md=parameterize(md,'../Par/SquareShelf.par');
+md.damage.isdamage=1;
+md.damage.D=0.5*ones(md.mesh.numberofvertices,1);
+md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test270.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test270.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test270.py	(revision 21239)
@@ -0,0 +1,32 @@
+#Test Name: SquareShelfStressSSA2dDamage
+import numpy
+from model import model
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from matdamageice import matdamageice
+from generic import generic
+from socket import gethostname as oshostname
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md.materials=matdamageice()
+md=parameterize(md,'../Par/SquareShelf.py')
+md.damage.isdamage=1
+md.damage.D=0.5*numpy.ones(md.mesh.numberofvertices)
+md.damage.spcdamage=numpy.nan*numpy.ones(md.mesh.numberofvertices)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vel','Pressure']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test272.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test272.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test272.m	(revision 21239)
@@ -0,0 +1,40 @@
+%Test Name: SquareShelfCMDSSA2dDamage
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md.materials=matdamageice();
+md=parameterize(md,'../Par/SquareShelf.par');
+md.damage.isdamage=1;
+md.damage.D=0.5*ones(md.mesh.numberofvertices,1);
+md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+md=setflowequation(md,'SSA','all');
+md.verbose=verbose('control',true);
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'DamageDbar'};
+md.inversion.min_parameters=zeros(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=(1-10^-13)*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=0.9*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2.*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.99*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; 
+md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','DamageDbar','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12};
+field_values={...
+   (md.results.StressbalanceSolution.Gradient1),...
+   (md.results.StressbalanceSolution.J),...
+   (md.results.StressbalanceSolution.DamageDbar),...
+   (md.results.StressbalanceSolution.Pressure),...
+   (md.results.StressbalanceSolution.Vel),...
+   (md.results.StressbalanceSolution.Vx),...
+   (md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test272.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test272.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test272.py	(revision 21239)
@@ -0,0 +1,50 @@
+#Test Name: SquareShelfCMDSSA2dDamage
+import numpy
+from model import model
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from socket import gethostname as oshostname
+from matdamageice import matdamageice
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md.materials=matdamageice()
+md=parameterize(md,'../Par/SquareShelf.py')
+md.damage.isdamage=1
+md.damage.D=0.5*numpy.ones(md.mesh.numberofvertices)
+md.damage.spcdamage=numpy.nan*numpy.ones(md.mesh.numberofvertices)
+md=setflowequation(md,'SSA','all')
+
+#control parameters
+md.inversion.iscontrol=1
+md.inversion.control_parameters=['DamageDbar']
+md.inversion.min_parameters=10**-13*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.max_parameters=numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.nsteps=2
+md.inversion.cost_functions=[101]
+md.inversion.cost_functions_coefficients=numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.gradient_scaling=0.9*numpy.ones((md.inversion.nsteps,1))
+md.inversion.maxiter_per_step=2.*numpy.ones((md.inversion.nsteps,1))
+md.inversion.step_threshold=0.99*numpy.ones((md.inversion.nsteps,1))
+md.inversion.vx_obs=md.initialization.vx 
+md.inversion.vy_obs=md.initialization.vy
+
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Gradient','Misfits','DamageDbar','Pressure','Vel','Vx','Vy']
+field_tolerances=[1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12]
+field_values=[\
+   md.results.StressbalanceSolution.Gradient1,\
+   md.results.StressbalanceSolution.J,\
+   md.results.StressbalanceSolution.DamageDbar,\
+   md.results.StressbalanceSolution.Pressure,\
+   md.results.StressbalanceSolution.Vel,\
+   md.results.StressbalanceSolution.Vx,\
+   md.results.StressbalanceSolution.Vy,\
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test273.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test273.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test273.m	(revision 21239)
@@ -0,0 +1,27 @@
+%Test Name: SquareShelfStressSSA2dDamageUpdate
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md.materials=matdamageice();
+md=parameterize(md,'../Par/SquareShelf.par');
+md.damage.isdamage=1;
+md.damage.D=0.*ones(md.mesh.numberofvertices,1);
+md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.stressbalance.requested_outputs={'default','NewDamage'};
+md.damage.stress_threshold=1.3e5;
+md.damage.kappa=2.8;
+
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure','NewDamage'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.NewDamage),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test273.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test273.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test273.py	(revision 21239)
@@ -0,0 +1,38 @@
+#Test Name: SquareShelfStressSSA2dDamageUpdate
+import numpy
+from model import model
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from matdamageice import matdamageice
+from generic import generic
+from socket import gethostname as oshostname
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md.materials=matdamageice()
+md=parameterize(md,'../Par/SquareShelf.py')
+md.damage.isdamage=1
+md.damage.D=0.*numpy.ones(md.mesh.numberofvertices)
+md.damage.spcdamage=numpy.nan*numpy.ones(md.mesh.numberofvertices)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.stressbalance.requested_outputs=['default','NewDamage']
+md.damage.stress_threshold=1.3e5
+md.damage.kappa=2.8
+
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vel','Pressure','NewDamage']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	md.results.StressbalanceSolution.NewDamage,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test274.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test274.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test274.m	(revision 21239)
@@ -0,0 +1,23 @@
+%Test Name: SquareShelfStressSSA2dDamageRift
+md=triangle(model(),'../Exp/SquareHole.exp','../Exp/Rifts.exp',50000.);
+md=meshprocessrifts(md,'../Exp/Square.exp');
+md=setmask(md,'all','');
+md.materials=matdamageice();
+md=parameterize(md,'../Par/SquareShelf2.par');
+md.damage.isdamage=1;
+md.damage.D=0.5*ones(md.mesh.numberofvertices,1);
+md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+md=setflowequation(md,'SSA','all');
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={7e-8,3e-8,3e-8,1e-11};
+field_values={...
+	   (md.results.StressbalanceSolution.Vx),...
+	   (md.results.StressbalanceSolution.Vy),...
+	   (md.results.StressbalanceSolution.Vel),...
+	   (md.results.StressbalanceSolution.Pressure),...
+	   };
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test274.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test274.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test274.py	(revision 21239)
@@ -0,0 +1,36 @@
+#Test Name: SquareShelfStressSSA2dDamageRift
+import numpy
+from model import model
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from socket import gethostname as oshostname
+from matdamageice import matdamageice
+from meshprocessrifts import meshprocessrifts
+from generic import generic
+
+md=triangle(model(),'../Exp/SquareHole.exp','../Exp/Rifts.exp',50000.)
+md=meshprocessrifts(md,'../Exp/Square.exp')
+md=setmask(md,'all','')
+md.materials=matdamageice()
+md=parameterize(md,'../Par/SquareShelf2.py')
+md.damage.isdamage=1
+md.damage.D=0.5*numpy.ones(md.mesh.numberofvertices)
+md.damage.spcdamage=numpy.nan*numpy.ones(md.mesh.numberofvertices)
+md=setflowequation(md,'SSA','all')
+
+md.cluster=generic('name',oshostname(),'np',3)
+print md.rifts.riftstruct[0]['fill']
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vel','Pressure']
+field_tolerances=[7e-8,3e-8,3e-8,1e-11]
+field_values=[\
+	   md.results.StressbalanceSolution.Vx,\
+	   md.results.StressbalanceSolution.Vy,\
+	   md.results.StressbalanceSolution.Vel,\
+	   md.results.StressbalanceSolution.Pressure,\
+	   ]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test275.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test275.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test275.m	(revision 21239)
@@ -0,0 +1,29 @@
+%Test Name: SquareShelfDamageEvolutionSSA2dPralong
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md.materials=matdamageice();
+md=parameterize(md,'../Par/SquareShelf.par');
+md.damage.isdamage=1;
+md.damage.D=0.1*ones(md.mesh.numberofvertices,1);
+md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+md.damage.law=1;
+
+md.damage.c1=1.e-11;
+md.damage.c2=0.4;
+md.damage.c3=1.e-3;
+md.damage.healing=0.4;
+md.damage.stress_threshold=1e5;
+md.damage.stabilization=1;
+
+md.damage.requested_outputs={'default','DamageF'};
+
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'DamageEvolution');
+
+field_names={'D','F'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+		(md.results.DamageEvolutionSolution.DamageDbar),...
+		(md.results.DamageEvolutionSolution.DamageF),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test275.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test275.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test275.py	(revision 21239)
@@ -0,0 +1,41 @@
+#Test Name: SquareShelfDamageEvolutionSSA2dPralong 
+import numpy
+from triangle import triangle
+from model import model
+from setmask import setmask
+from parameterize import parameterize
+from verbose import verbose
+from setflowequation import setflowequation
+from generic import generic
+from socket import gethostname as oshostname
+from solve import solve
+from matdamageice import matdamageice
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md.materials=matdamageice()
+md=parameterize(md,'../Par/SquareShelf.py')
+md.damage.isdamage=1
+md.damage.D=0.1*numpy.ones(md.mesh.numberofvertices)
+md.damage.spcdamage=numpy.nan*numpy.ones(md.mesh.numberofvertices)
+md.damage.law=1
+
+md.damage.c1=1.e-11
+md.damage.c2=0.4
+md.damage.c3=1.e-3
+md.damage.healing=0.4
+md.damage.stress_threshold=1.e5
+md.damage.stabilization=1
+
+md.damage.requested_outputs=['default','DamageF']
+
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'DamageEvolution')
+
+field_names=['D','F']
+field_tolerances=[1.e-13,1.e-13]
+field_values=[\
+		md.results.DamageEvolutionSolution.DamageDbar,\
+		md.results.DamageEvolutionSolution.DamageF,\
+		]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test280.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test280.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test280.m	(revision 21239)
@@ -0,0 +1,22 @@
+%Test Name: SquareShelfStressSSA2dHigherOrder
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+field_names={};
+field_tolerances={};
+field_values={};
+for i={'P1bubble','P1bubblecondensed','P2'}
+	md.flowequation.fe_SSA=i{1};
+	md=solve(md,'Stressbalance');
+	field_names     ={field_names{:},['Vx' i{1}],['Vy' i{1}],['Vel' i{1}],['Pressure' i{1}]};
+	field_tolerances={field_tolerances{:},1e-12,1e-13,1e-13,1e-13};
+	field_values={field_values{:},...
+		(md.results.StressbalanceSolution.Vx),...
+		(md.results.StressbalanceSolution.Vy),...
+		(md.results.StressbalanceSolution.Vel),...
+		(md.results.StressbalanceSolution.Pressure),...
+		};
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test280.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test280.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test280.py	(revision 21239)
@@ -0,0 +1,30 @@
+#Test Name: SquareShelfStressSSA2dHigherOrder
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+from ContourToMesh import *
+
+md=triangle(model(),'../Exp/Square.exp',150000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+field_names=[]
+field_tolerances=[]
+field_values=[]
+for i in ['P1bubble','P1bubblecondensed','P2']:
+	md.flowequation.fe_SSA=i
+	md=solve(md,'Stressbalance')
+	field_names     =field_names+['Vx'+i,'Vy'+i,'Vel'+i,'Pressure'+i]
+	field_tolerances=field_tolerances+[1e-12,1e-13,1e-13,1e-13]
+	field_values=field_values+[\
+		md.results.StressbalanceSolution.Vx,\
+		md.results.StressbalanceSolution.Vy,\
+		md.results.StressbalanceSolution.Vel,\
+		md.results.StressbalanceSolution.Pressure,\
+		]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test285.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test285.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test285.m	(revision 21239)
@@ -0,0 +1,24 @@
+%Test Name: SquareShelfStressHOHigherOrder
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+field_names={};
+field_tolerances={};
+field_values={};
+for i={'P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P1xP3','P2xP4'}
+	md.flowequation.fe_HO=i{1};
+	md=solve(md,'Stressbalance');
+	field_names     ={field_names{:},['Vx' i{1}],['Vy' i{1}],['Vz' i{1}],['Vel' i{1}],['Pressure' i{1}]};
+	field_tolerances={field_tolerances{:},6.5e-08,5e-08,2e-08,5e-08,1e-13};
+	field_values={field_values{:},...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test285.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test285.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test285.py	(revision 21239)
@@ -0,0 +1,32 @@
+#Test Name: SquareShelfStressHOHigherOrder
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+from ContourToMesh import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.py');
+md.extrude(3,2.)
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+field_names=[]
+field_tolerances=[]
+field_values=[]
+for i in ['P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P1xP3','P2xP4']:
+	md.flowequation.fe_HO=i
+	md=solve(md,'Stressbalance')
+	field_names     =field_names+['Vx'+i,'Vy'+i,'Vz'+i,'Vel'+i,'Pressure'+i]
+	field_tolerances=field_tolerances+[6.5e-08,5e-08,2e-08,5e-08,1e-13]
+	field_values=field_values+[\
+		md.results.StressbalanceSolution.Vx,\
+		md.results.StressbalanceSolution.Vy,\
+		md.results.StressbalanceSolution.Vz,\
+		md.results.StressbalanceSolution.Vel,\
+		md.results.StressbalanceSolution.Pressure,\
+		]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test290.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test290.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test290.m	(revision 21239)
@@ -0,0 +1,20 @@
+%Test Name: SquareShelfStressFSP2P1
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'FS','all');
+md.flowequation.fe_FS='TaylorHood';
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={5e-5,5e-5,8e-5,5e-5,1e-7};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test290.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test290.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test290.py	(revision 21239)
@@ -0,0 +1,29 @@
+#Test Name: SquareShelfStressFSP2P1
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+from ContourToMesh import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.py');
+md.extrude(3,2.)
+md=setflowequation(md,'FS','all');
+md.flowequation.fe_FS='TaylorHood';
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+#Fields and tolerances to track changes
+field_names     =['Vx', 'Vy', 'Vz', 'Vel','Pressure'];
+field_tolerances=[5e-5,5e-5,8e-5,5e-5,1e-7]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test291.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test291.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test291.m	(revision 21239)
@@ -0,0 +1,20 @@
+%Test Name: SquareShelfStressFSP4z
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,2,1.);
+md=setflowequation(md,'FS','all');
+md.flowequation.fe_FS='OneLayerP4z';
+md.cluster=generic('name',oshostname(),'np',1);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={5e-5,5e-5,8e-5,5e-5,1e-7};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test291.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test291.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test291.py	(revision 21239)
@@ -0,0 +1,29 @@
+#Test Name: SquareShelfStressFSP4z
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+from ContourToMesh import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(2,1.)
+md=setflowequation(md,'FS','all')
+md.flowequation.fe_FS='OneLayerP4z'
+md.cluster=generic('name',oshostname(),'np',1)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx', 'Vy', 'Vz', 'Vel','Pressure'];
+field_tolerances=[5e-5,5e-5,8e-5,5e-5,1e-7]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	];
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test292.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test292.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test292.m	(revision 21239)
@@ -0,0 +1,35 @@
+%Test Name: SquareShelfTranSSA2dFloatingMeltParam
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.basalforcings=linearbasalforcings(md.basalforcings);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test292.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test292.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test292.py	(revision 21239)
@@ -0,0 +1,47 @@
+#Test Name: SquareShelfTranSSA2dFloatingMeltParam
+from MatlabFuncs import *
+from model import *
+from numpy import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+from linearbasalforcings import linearbasalforcings
+
+md=triangle(model(),'../Exp/Square.exp',150000)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.basalforcings=linearbasalforcings(md.basalforcings)
+md=solve(md,'Transient')
+
+# Fields and tolerances to track changes
+
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test293.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test293.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test293.m	(revision 21239)
@@ -0,0 +1,44 @@
+%Test Name: SquareShelfTranSSA2dMismipFloatingMeltParam
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.constants.yts = 365.2422*24.*3600.;
+md.basalforcings=mismipbasalforcings(md.basalforcings);
+md.transient.isgroundingline=1;
+md.geometry.bed=min(md.geometry.base)*ones(md.mesh.numberofvertices,1);
+md.transient.requested_outputs={'default','BasalforcingsFloatingiceMeltingRate'};
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','BasalforcingsFloatingiceMeltingRate1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','BasalforcingsFloatingiceMeltingRate2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','BasalforcingsFloatingiceMeltingRate3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).BasalforcingsFloatingiceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).BasalforcingsFloatingiceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3001.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3001.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3001.m	(revision 21239)
@@ -0,0 +1,26 @@
+%Test Name: SquareShelfConstrainedStressSSA2dAdolc
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.stressbalance.requested_outputs={'default','DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy'};
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmgslsolver();
+
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure',...
+	'DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.DeviatoricStressxx),...
+	(md.results.StressbalanceSolution.DeviatoricStressyy),...
+	(md.results.StressbalanceSolution.DeviatoricStressxy),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3001.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3001.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3001.py	(revision 21239)
@@ -0,0 +1,32 @@
+#Test Name: SquareShelfConstrainedStressSSA2dAdolc
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',50000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',1)
+md.stressbalance.requested_outputs=['default','DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy']
+md.autodiff.isautodiff=True
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vel','Pressure',\
+	'DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,\
+	1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	md.results.StressbalanceSolution.DeviatoricStressxx,\
+	md.results.StressbalanceSolution.DeviatoricStressyy,\
+	md.results.StressbalanceSolution.DeviatoricStressxy,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3002.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3002.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3002.m	(revision 21239)
@@ -0,0 +1,22 @@
+%Test Name: SquareShelfConstrainedStressSSA3dAdolc
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmgslsolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3002.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3002.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3002.py	(revision 21239)
@@ -0,0 +1,28 @@
+#Test Name: SquareShelfConstrainedStressSSA3dAdolc
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(3,2.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',1)
+md.autodiff.isautodiff=True
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3003.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3003.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3003.m	(revision 21239)
@@ -0,0 +1,31 @@
+%Test Name: SquareShelfConstrainedStressHOAdolc
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.stressbalance.requested_outputs={'default','StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz'};
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmgslsolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure',...
+	'StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-09,...
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.StressTensorxx),...
+	(md.results.StressbalanceSolution.StressTensoryy),...
+	(md.results.StressbalanceSolution.StressTensorzz),...
+	(md.results.StressbalanceSolution.StressTensorxy),...
+	(md.results.StressbalanceSolution.StressTensorxz),...
+	(md.results.StressbalanceSolution.StressTensoryz),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3003.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3003.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3003.py	(revision 21239)
@@ -0,0 +1,37 @@
+#Test Name: SquareShelfConstrainedStressHOAdolc
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(3,2.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',1)
+md.stressbalance.requested_outputs=['default','StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz']
+md.autodiff.isautodiff=True
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure',\
+	'StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz']
+field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-09,\
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	md.results.StressbalanceSolution.StressTensorxx,\
+	md.results.StressbalanceSolution.StressTensoryy,\
+	md.results.StressbalanceSolution.StressTensorzz,\
+	md.results.StressbalanceSolution.StressTensorxy,\
+	md.results.StressbalanceSolution.StressTensorxz,\
+	md.results.StressbalanceSolution.StressTensoryz,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3004.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3004.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3004.m	(revision 21239)
@@ -0,0 +1,22 @@
+%Test Name: SquareShelfConstrainedStressFSAdolc
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'FS','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmgslsolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-08,1e-08,3e-07,1e-08,1e-08};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3004.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3004.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3004.py	(revision 21239)
@@ -0,0 +1,28 @@
+#Test Name: SquareShelfConstrainedStressFSAdolc
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(3,2.)
+md=setflowequation(md,'FS','all')
+md.cluster=generic('name',oshostname(),'np',1)
+md.autodiff.isautodiff=True
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-08,1e-08,3e-07,1e-08,1e-08]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3005.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3005.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3005.m	(revision 21239)
@@ -0,0 +1,17 @@
+%Test Name: SquareShelfConstrainedMasstransp2dAdolc
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmgslsolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3005.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3005.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3005.py	(revision 21239)
@@ -0,0 +1,23 @@
+#Test Name: SquareShelfConstrainedMasstransp2dAdolc
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',1)
+md.autodiff.isautodiff=True
+md=solve(md,'Masstransport')
+
+#Fields and tolerances to track changes
+field_names     =['Thickness']
+field_tolerances=[1e-13]
+field_values=[\
+	md.results.MasstransportSolution.Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3006.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3006.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3006.m	(revision 21239)
@@ -0,0 +1,20 @@
+%Test Name: SquareShelfConstrainedMasstransp2dDGAdolc
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=meshconvert(md);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.masstransport.stabilization=3;
+md.masstransport.spcthickness=md.geometry.thickness;
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmgslsolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3006.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3006.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3006.py	(revision 21239)
@@ -0,0 +1,27 @@
+#Test Name: SquareShelfConstrainedMasstransp2dDGAdolc
+from model import *
+from triangle import *
+from meshconvert import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=meshconvert(md)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',1)
+md.masstransport.stabilization=3
+md.masstransport.spcthickness=md.geometry.thickness
+md.autodiff.isautodiff=True
+md=solve(md,'Masstransport')
+
+#Fields and tolerances to track changes
+field_names     =['Thickness']
+field_tolerances=[1e-13]
+field_values=[\
+	md.results.MasstransportSolution.Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3007.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3007.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3007.m	(revision 21239)
@@ -0,0 +1,18 @@
+%Test Name: SquareShelfConstrainedMasstransp3dAdolc
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md=extrude(md,5,3.);
+md.cluster=generic('name',oshostname(),'np',1);
+md.autodiff.isautodiff=true;
+md.verbose=verbose('autodiff',true);
+md.toolkits.DefaultAnalysis=issmgslsolver();
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3007.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3007.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3007.py	(revision 21239)
@@ -0,0 +1,24 @@
+#Test Name: SquareShelfConstrainedMasstransp3dAdolc
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.extrude(5,3.)
+md.cluster=generic('name',oshostname(),'np',1)
+md.autodiff.isautodiff=True
+md=solve(md,'Masstransport')
+
+#Fields and tolerances to track changes
+field_names     =['Thickness']
+field_tolerances=[1e-13]
+field_values=[\
+	md.results.MasstransportSolution.Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3008.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3008.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3008.m	(revision 21239)
@@ -0,0 +1,20 @@
+%Test Name: SquareShelfConstrainedTherSteaAdolc
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=0;
+md.cluster=generic('name',oshostname(),'np',1);
+md.autodiff.isautodiff=true;
+md.verbose=verbose('autodiff',true);
+md.toolkits.DefaultAnalysis=issmgslsolver();
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-5};
+field_values={...
+	(md.results.ThermalSolution.Temperature),...
+	(md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3008.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3008.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3008.py	(revision 21239)
@@ -0,0 +1,26 @@
+#Test Name: SquareShelfConstrainedTherSteaAdolc
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.timestepping.time_step=0
+md.cluster=generic('name',oshostname(),'np',1)
+md.autodiff.isautodiff=True
+md=solve(md,'Thermal')
+
+#Fields and tolerances to track changes
+field_names     =['Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-13,1e-5]
+field_values=[\
+	md.results.ThermalSolution.Temperature,\
+	md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3009.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3009.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3009.m	(revision 21239)
@@ -0,0 +1,24 @@
+%Test Name: SquareShelfConstrainedTherTranAdolc
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md.autodiff.isautodiff=true;
+md.verbose=verbose('autodiff',true);
+md.toolkits.DefaultAnalysis=issmgslsolver();
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3009.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3009.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3009.py	(revision 21239)
@@ -0,0 +1,30 @@
+#Test Name: SquareShelfConstrainedTherTranAdolc
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',1)
+md.transient.isstressbalance=False
+md.transient.ismasstransport=False
+md.transient.issmb=True
+md.transient.isthermal=True
+md.transient.isgroundingline=False
+md.autodiff.isautodiff=True
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test301.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test301.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test301.m	(revision 21239)
@@ -0,0 +1,17 @@
+%Test Name: SquareSheetConstrainedStressSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test301.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test301.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test301.py	(revision 21239)
@@ -0,0 +1,25 @@
+#Test Name: SquareSheetConstrainedStressSSA2d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vel','Pressure']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3010.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3010.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3010.m	(revision 21239)
@@ -0,0 +1,44 @@
+%Test Name: SquareShelfConstrainedTranSSA2dAdolc
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.transient.requested_outputs={'IceVolume'};
+
+md.autodiff.isautodiff=true;
+md.verbose=verbose('autodiff',true);
+md.toolkits.DefaultAnalysis=issmgslsolver();
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Volume3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).IceVolume),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3010.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3010.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3010.py	(revision 21239)
@@ -0,0 +1,50 @@
+#Test Name: SquareShelfConstrainedTranSSA2dAdolc
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',1)
+md.transient.requested_outputs=['IceVolume']
+
+md.autodiff.isautodiff=True
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Volume3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].IceVolume,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].IceVolume,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].IceVolume,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3015.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3015.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3015.m	(revision 21239)
@@ -0,0 +1,79 @@
+%Test Name: SquareShelfConstrainedMasstransp2dAdolcForwardDifference
+%This test runs test3005 with autodiff on, and checks that 
+%the value of the scalar forward difference match a step-wise differential
+
+%First configure
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.masstransport.requested_outputs={'IceVolume'};
+md.verbose=verbose('autodiff',true);
+md.toolkits.DefaultAnalysis=issmgslsolver();
+
+%setup autodiff parameters
+index=1; %this is the scalar component we are checking against
+md.autodiff.independents={...
+	independent('name','md.geometry.thickness','type','vertex','nods',md.mesh.numberofvertices,'fos_forward_index',index)
+	};
+
+md.autodiff.dependents={...
+	dependent('name','IceVolume','type','scalar')...
+	};
+md.autodiff.driver='fos_forward';
+
+%parameters for the step-wise derivative
+delta=0.001;
+h1=md.geometry.thickness(index);
+h0=h1*(1.-delta);
+h2=h1*(1.+delta);
+deltaH=(h2-h0);
+
+%save model:
+md2=md;
+
+%evaluate derivative by forward and backward stepping 
+%forward
+md=md2;
+md.autodiff.isautodiff=false;
+md.geometry.thickness(index)=h0;
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=SetIceShelfBC(md);
+
+md=solve(md,'Masstransport');
+V0=md.results.MasstransportSolution.IceVolume;
+
+%backward
+md=md2;
+md.autodiff.isautodiff=false;
+md.geometry.thickness(index)=h2;
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=SetIceShelfBC(md);
+
+md=solve(md,'Masstransport');
+V2=md.results.MasstransportSolution.IceVolume;
+
+%compute resulting derivative
+dVdh_an=(V2-V0)/deltaH;
+
+%evaluate derivative using ADOLC 
+md=md2;
+md.autodiff.isautodiff=true;
+md.geometry.thickness(index)=h1;
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=SetIceShelfBC(md);
+
+md=solve(md,'Masstransport');
+%retrieve directly
+dVdh_ad=md.results.MasstransportSolution.AutodiffJacobian;
+
+disp(sprintf('dV/dh: analytical:  %16.16g\n       using adolc:  %16.16g\n',dVdh_an,dVdh_ad));
+
+%Fields and tolerances to track changes
+field_names     ={'dV/dh-dV/dh0'};
+field_tolerances={1e-13};
+field_values={dVdh_ad-dVdh_an};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3015.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3015.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3015.py	(revision 21239)
@@ -0,0 +1,94 @@
+#Test Name: SquareShelfConstrainedMasstransp2dAdolcForwardDifference
+import numpy
+import copy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from independent import *
+from dependent import *
+from SetIceShelfBC import *
+from solve import *
+from MatlabFuncs import *
+
+#This test runs test3005 with autodiff on, and checks that 
+#the value of the scalar forward difference match a step-wise differential
+
+#First configure
+md=triangle(model(),'../Exp/Square.exp',50000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',1)
+md.masstransport.requested_outputs=['IceVolume']
+md.verbose=verbose('autodiff',True)
+
+#setup autodiff parameters
+index=1 #this is the scalar component we are checking against
+md.autodiff.independents=[\
+	independent('name','md.geometry.thickness','type','vertex','nods',md.mesh.numberofvertices,'fos_forward_index',index)
+	]
+
+md.autodiff.dependents=[\
+	dependent('name','IceVolume','type','scalar')\
+	]
+md.autodiff.driver='fos_forward'
+
+#PYTHON: indices start at 0, make sure to offset index
+index=index-1
+
+#parameters for the step-wise derivative
+delta=0.001
+h1=md.geometry.thickness[index]
+h0=h1*(1.-delta)
+h2=h1*(1.+delta)
+deltaH=(h2-h0)
+
+#save model
+md2=copy.deepcopy(md)
+
+#evaluate derivative by forward and backward stepping 
+#forward
+md=copy.deepcopy(md2)
+md.autodiff.isautodiff=False
+md.geometry.thickness[index]=h0
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+md=SetIceShelfBC(md)
+
+md=solve(md,'Masstransport')
+V0=md.results.MasstransportSolution.IceVolume
+
+#backward
+md=copy.deepcopy(md2)
+md.autodiff.isautodiff=False
+md.geometry.thickness[index]=h2
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+md=SetIceShelfBC(md)
+
+md=solve(md,'Masstransport')
+V2=md.results.MasstransportSolution.IceVolume
+
+#compute resulting derivative
+dVdh_an=(V2-V0)/deltaH
+
+#evaluate derivative using ADOLC 
+md=md2
+md.autodiff.isautodiff=True
+md.geometry.thickness[index]=h1
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+md=SetIceShelfBC(md)
+
+md=solve(md,'Masstransport')
+#retrieve directly
+dVdh_ad=md.results.MasstransportSolution.AutodiffJacobian
+
+print "dV/dh: analytical:  %16.16g\n       using adolc:  %16.16g\n" % (dVdh_an,dVdh_ad)
+
+#Fields and tolerances to track changes
+field_names     =['dV/dh-dV/dh0']
+field_tolerances=[1e-13]
+field_values=[dVdh_ad-dVdh_an]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3019.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3019.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3019.m	(revision 21239)
@@ -0,0 +1,36 @@
+%Test Name: SquareShelfConstrainedTherTranAdolcReverseVsForward
+%test reverse scalar vs forward vectorial drivers in ADOLC, using the test3009 setup, equivalent to test109 setup.
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.toolkits.DefaultAnalysis=issmgslsolver();
+
+md.autodiff.isautodiff=true;
+md.verbose.autodiff=true;
+
+%first run scalar reverse mode: 
+md.autodiff.independents={independent('name','md.geometry.thickness','type','vertex','nods',md.mesh.numberofvertices)};
+md.autodiff.dependents={dependent('name','MaxVel','type','scalar','fos_reverse_index',1)};
+md.autodiff.driver='fos_reverse';
+
+md=solve(md,'Transient');
+
+%recover jacobian: 
+jac_reverse=md.results.TransientSolution(1).AutodiffJacobian;
+
+%now run vectorial forward mode
+md.autodiff.independents={independent('name','md.geometry.thickness','type','vertex','nods',md.mesh.numberofvertices,'fov_forward_indices',(1:md.mesh.numberofvertices)')};
+md.autodiff.dependents={dependent('name','MaxVel','type','scalar')};
+md.autodiff.driver='fov_forward';
+
+md=solve(md,'Transient');
+
+%recover jacobian: 
+jac_forward=md.results.TransientSolution(1).AutodiffJacobian;
+
+%Fields and tolerances to track changes
+field_names     ={'Jac Forward','Jac Reverse','Jac Forward - Reverse'};
+field_tolerances={1e-8,1e-8,1e-6};
+field_values={jac_forward,jac_reverse,jac_forward-jac_reverse};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3019.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3019.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3019.py	(revision 21239)
@@ -0,0 +1,47 @@
+#Test Name: SquareShelfConstrainedTherTranAdolcReverseVsForward
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from independent import *
+from dependent import *
+from solve import *
+from MatlabFuncs import *
+
+#test reverse scalar vs forward vectorial drivers in ADOLC, using the test3009 setup, equivalent to test109 setup.
+md=triangle(model(),'../Exp/Square.exp',100000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',1)
+#md.toolkits.DefaultAnalysis=issmgslsolver()
+
+md.autodiff.isautodiff=True
+md.verbose.autodiff=True
+
+#first run scalar reverse mode: 
+md.autodiff.independents=[independent('name','md.geometry.thickness','type','vertex','nods',md.mesh.numberofvertices)]
+md.autodiff.dependents=[dependent('name','MaxVel','type','scalar','fos_reverse_index',1)]
+md.autodiff.driver='fos_reverse'
+
+md=solve(md,'Transient')
+
+#recover jacobian: 
+jac_reverse=md.results.TransientSolution[0].AutodiffJacobian
+
+#now run vectorial forward mode
+md.autodiff.independents=[independent('name','md.geometry.thickness','type','vertex','nods',md.mesh.numberofvertices,'fov_forward_indices',numpy.arange(1,md.mesh.numberofvertices+1))]
+md.autodiff.dependents=[dependent('name','MaxVel','type','scalar')]
+md.autodiff.driver='fov_forward'
+
+md=solve(md,'Transient')
+
+#recover jacobian: 
+jac_forward=md.results.TransientSolution[0].AutodiffJacobian
+
+#Fields and tolerances to track changes
+field_names     =['Jac Forward','Jac Reverse','Jac Forward - Reverse']
+field_tolerances=[1e-8,1e-8,1e-6]
+field_values=[jac_forward,jac_reverse,jac_forward-jac_reverse]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test302.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test302.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test302.m	(revision 21239)
@@ -0,0 +1,17 @@
+%Test Name: SquareSheetConstrainedStressSIA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SIA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test302.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test302.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test302.py	(revision 21239)
@@ -0,0 +1,25 @@
+#Test Name: SquareSheetConstrainedStressSIA2d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md=setflowequation(md,'SIA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vel','Pressure']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3020.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3020.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3020.m	(revision 21239)
@@ -0,0 +1,86 @@
+%Test Name: SquareShelfConstrainedTranAdolcReverseVsForward
+%This test runs test3020 with autodiff on, and checks that 
+%the value of the scalar forward difference match a step-wise differential
+
+%First configure
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.transient.requested_outputs={'IceVolume','MaxVel'};
+md.verbose=verbose('autodiff',true);
+md.stressbalance.restol=0.000001;
+md.toolkits.DefaultAnalysis=issmgslsolver();
+
+%setup autodiff parameters
+index=1; %this is the scalar component we are checking against
+md.autodiff.independents={...
+	independent('name','md.geometry.thickness','type','vertex','nods',md.mesh.numberofvertices,'fos_forward_index',index)
+	};
+
+md.autodiff.dependents={...
+	dependent('name','IceVolume','type','scalar'),...
+	dependent('name','MaxVel','type','scalar')...
+	};
+md.autodiff.driver='fos_forward';
+
+%parameters for the step-wise derivative
+delta=0.00001;
+h1=md.geometry.thickness(index);
+h0=h1*(1.-delta);
+h2=h1*(1.+delta);
+deltaH=(h2-h0);
+
+%save model:
+md2=md;
+
+%evaluate derivative by forward and backward stepping 
+%forward
+md=md2;
+md.autodiff.isautodiff=false;
+md.geometry.thickness(index)=h0;
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=SetIceShelfBC(md);
+
+md=solve(md,'Transient');
+V0=md.results.TransientSolution(end).IceVolume;
+MaxV0=md.results.TransientSolution(end).MaxVel;
+
+%backward
+md=md2;
+md.autodiff.isautodiff=false;
+md.geometry.thickness(index)=h2;
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=SetIceShelfBC(md);
+
+md=solve(md,'Transient');
+V2=md.results.TransientSolution(end).IceVolume;
+MaxV2=md.results.TransientSolution(end).MaxVel;
+
+%compute resulting derivative
+dVdh_an=(V2-V0)/deltaH;
+dMaxVdh_an=(MaxV2-MaxV0)/deltaH;
+
+%evaluate derivative using ADOLC 
+md=md2;
+md.autodiff.isautodiff=true;
+md.geometry.thickness(index)=h1;
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=SetIceShelfBC(md);
+
+md=solve(md,'Transient');
+%retrieve directly
+dVdh_ad=md.results.TransientSolution(1).AutodiffJacobian(1);
+dMaxVdh_ad=md.results.TransientSolution(1).AutodiffJacobian(2);
+
+disp(sprintf('dV/dh: analytical:  %16.16g\n       using adolc:  %16.16g\n',dVdh_an,dVdh_ad));
+disp(sprintf('dMaxV/dh: analytical:  %16.16g\n       using adolc:  %16.16g\n',dMaxVdh_an,dMaxVdh_ad));
+
+%Fields and tolerances to track changes
+field_names     ={'dV/dh-dV/dh0','dMaxV/dh-dMaxV/dh0'};
+field_tolerances={1e-8,1e-7};
+field_values={dVdh_ad-dVdh_an,dMaxVdh_an-dMaxVdh_ad};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3020.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3020.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3020.py	(revision 21239)
@@ -0,0 +1,101 @@
+#Test Name: SquareShelfConstrainedTranAdolcReverseVsForward
+import numpy
+import copy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from independent import *
+from dependent import *
+from SetIceShelfBC import *
+from solve import *
+from MatlabFuncs import *
+
+#This test runs test3020 with autodiff on, and checks that 
+#the value of the scalar forward difference match a step-wise differential
+
+#First configure
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',1)
+md.transient.requested_outputs=['IceVolume','MaxVel']
+md.verbose=verbose('autodiff',True)
+md.stressbalance.restol=0.000001
+
+#setup autodiff parameters
+index=1 #this is the scalar component we are checking against
+md.autodiff.independents=[\
+	independent('name','md.geometry.thickness','type','vertex','nods',md.mesh.numberofvertices,'fos_forward_index',index)
+	]
+
+md.autodiff.dependents=[\
+	dependent('name','IceVolume','type','scalar'),\
+	dependent('name','MaxVel','type','scalar')\
+	]
+md.autodiff.driver='fos_forward'
+
+#PYTHON: indices start at 0, make sure to offset index
+index=index-1
+
+#parameters for the step-wise derivative
+delta=0.00001
+h1=md.geometry.thickness[index]
+h0=h1*(1.-delta)
+h2=h1*(1.+delta)
+deltaH=(h2-h0)
+
+#save model:
+md2=copy.deepcopy(md)
+
+#evaluate derivative by forward and backward stepping 
+#forward
+md=copy.deepcopy(md2)
+md.autodiff.isautodiff=False
+md.geometry.thickness[index]=h0
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+md=SetIceShelfBC(md)
+
+md=solve(md,'Transient')
+V0=md.results.TransientSolution[-1].IceVolume
+MaxV0=md.results.TransientSolution[-1].MaxVel
+
+#backward
+md=copy.deepcopy(md2)
+md.autodiff.isautodiff=False
+md.geometry.thickness[index]=h2
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+md=SetIceShelfBC(md)
+
+md=solve(md,'Transient')
+V2=md.results.TransientSolution[-1].IceVolume
+MaxV2=md.results.TransientSolution[-1].MaxVel
+
+#compute resulting derivative
+dVdh_an=(V2-V0)/deltaH
+dMaxVdh_an=(MaxV2-MaxV0)/deltaH
+
+#evaluate derivative using ADOLC 
+md=copy.deepcopy(md2)
+md.autodiff.isautodiff=True
+md.geometry.thickness[index]=h1
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+md=SetIceShelfBC(md)
+
+md=solve(md,'Transient')
+#retrieve directly
+dVdh_ad=md.results.TransientSolution[0].AutodiffJacobian[0]
+dMaxVdh_ad=md.results.TransientSolution[0].AutodiffJacobian[1]
+
+print "dV/dh: analytical:  %16.16g\n       using adolc:  %16.16g\n" % (dVdh_an,dVdh_ad)
+print "dMaxV/dh: analytical:  %16.16g\n       using adolc:  %16.16g\n" % (dMaxVdh_an,dMaxVdh_ad)
+
+#Fields and tolerances to track changes
+field_names     =['dV/dh-dV/dh0','dMaxV/dh-dMaxV/dh0']
+field_tolerances=[1e-13,1e-13]
+field_values=[dVdh_ad-dVdh_an,dMaxVdh_an-dMaxVdh_ad]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3021.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3021.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3021.m	(revision 21239)
@@ -0,0 +1,25 @@
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.stressbalance.requested_outputs={'StressTensorxx','StressTensoryy','StressTensorxy'};
+md.autodiff.isautodiff=false;
+md.toolkits.DefaultAnalysis=issmsolver();
+md.verbose=verbose('all');
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure',...
+	'StressTensorxx','StressTensoryy','StressTensorxy'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.StressTensorxx),...
+	(md.results.StressbalanceSolution.StressTensoryy),...
+	(md.results.StressbalanceSolution.StressTensorxy),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test303.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test303.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test303.m	(revision 21239)
@@ -0,0 +1,17 @@
+%Test Name: SquareSheetConstrainedStressSIASSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SIA','../Exp/SquareHalfRight.exp','fill','SSA');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test303.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test303.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test303.py	(revision 21239)
@@ -0,0 +1,25 @@
+#Test Name: SquareSheetConstrainedStressSIASSA2d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md=setflowequation(md,'SIA','../Exp/SquareHalfRight.exp','fill','SSA')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vel','Pressure']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test304.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test304.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test304.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetConstrainedStressSSA3d
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test304.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test304.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test304.py	(revision 21239)
@@ -0,0 +1,27 @@
+#Test Name: SquareSheetConstrainedStressSSA3d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.extrude(3,2.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test305.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test305.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test305.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetConstrainedStressSIA3d
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,5,2.);
+md=setflowequation(md,'SIA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test305.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test305.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test305.py	(revision 21239)
@@ -0,0 +1,27 @@
+#Test Name: SquareSheetConstrainedStressSIA3d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.extrude(5,2.)
+md=setflowequation(md,'SIA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test306.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test306.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test306.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetConstrainedStressSIASSA3d
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,4,2.);
+md=setflowequation(md,'SIA','../Exp/SquareHalfRight.exp','fill','SSA');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test306.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test306.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test306.py	(revision 21239)
@@ -0,0 +1,27 @@
+#Test Name: SquareSheetConstrainedStressSIASSA3d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.extrude(4,2.)
+md=setflowequation(md,'SIA','../Exp/SquareHalfRight.exp','fill','SSA')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test307.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test307.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test307.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetConstrainedStressHO
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-09,1e-09,2e-10,2e-10,1e-10};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test307.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test307.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test307.py	(revision 21239)
@@ -0,0 +1,27 @@
+#Test Name: SquareSheetConstrainedStressHO
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-09,1e-09,2e-10,2e-10,1e-10]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test308.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test308.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test308.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetConstrainedStressFS
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'FS','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test308.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test308.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test308.py	(revision 21239)
@@ -0,0 +1,27 @@
+#Test Name: SquareSheetConstrainedStressFS
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'FS','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-09]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test309.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test309.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test309.m	(revision 21239)
@@ -0,0 +1,14 @@
+%Test Name: SquareSheetConstrainedMasstransp2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test309.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test309.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test309.py	(revision 21239)
@@ -0,0 +1,22 @@
+#Test Name: SquareSheetConstrainedMasstransp2d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Masstransport')
+
+#Fields and tolerances to track changes
+field_names     =['Thickness']
+field_tolerances=[1e-13]
+field_values=[\
+	md.results.MasstransportSolution.Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test310.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test310.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test310.m	(revision 21239)
@@ -0,0 +1,17 @@
+%Test Name: SquareSheetConstrainedMasstransp2dDG
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=meshconvert(md);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.masstransport.stabilization=3;
+md.masstransport.spcthickness=md.geometry.thickness;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test310.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test310.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test310.py	(revision 21239)
@@ -0,0 +1,26 @@
+#Test Name: SquareSheetConstrainedMasstransp2dDG
+from model import *
+from triangle import *
+from meshconvert import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=meshconvert(md)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.masstransport.stabilization=3
+md.masstransport.spcthickness=md.geometry.thickness
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Masstransport')
+
+#Fields and tolerances to track changes
+field_names     =['Thickness']
+field_tolerances=[1e-13]
+field_values=[\
+	md.results.MasstransportSolution.Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3101.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3101.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3101.m	(revision 21239)
@@ -0,0 +1,26 @@
+%Test Name: SquareShelfConstrainedStressSSA2dAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.stressbalance.requested_outputs={'default','DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy'};
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure',...
+	'DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy'};
+field_tolerances={1e-12,1e-12,1e-12,1e-12,...
+	1e-12,1e-12,1e-12};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.DeviatoricStressxx),...
+	(md.results.StressbalanceSolution.DeviatoricStressyy),...
+	(md.results.StressbalanceSolution.DeviatoricStressxy),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3101.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3101.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3101.py	(revision 21239)
@@ -0,0 +1,33 @@
+#Test Name: SquareShelfConstrainedStressSSA2dAdolcMumps
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',50000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.stressbalance.requested_outputs=['default','DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy']
+
+md.autodiff.isautodiff=True
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vel','Pressure',\
+	'DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy']
+field_tolerances=[1e-12,1e-12,1e-12,1e-12,\
+	1e-12,1e-12,1e-12]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	md.results.StressbalanceSolution.DeviatoricStressxx,\
+	md.results.StressbalanceSolution.DeviatoricStressyy,\
+	md.results.StressbalanceSolution.DeviatoricStressxy,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3102.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3102.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3102.m	(revision 21239)
@@ -0,0 +1,22 @@
+%Test Name: SquareShelfConstrainedStressSSA3dAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3102.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3102.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3102.py	(revision 21239)
@@ -0,0 +1,29 @@
+#Test Name: SquareShelfConstrainedStressSSA3dAdolcMumps
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(3,2.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.autodiff.isautodiff=True
+
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3103.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3103.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3103.m	(revision 21239)
@@ -0,0 +1,31 @@
+%Test Name: SquareShelfConstrainedStressHOAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.stressbalance.requested_outputs={'default','StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz'};
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure',...
+	'StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-09,...
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.StressTensorxx),...
+	(md.results.StressbalanceSolution.StressTensoryy),...
+	(md.results.StressbalanceSolution.StressTensorzz),...
+	(md.results.StressbalanceSolution.StressTensorxy),...
+	(md.results.StressbalanceSolution.StressTensorxz),...
+	(md.results.StressbalanceSolution.StressTensoryz),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3103.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3103.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3103.py	(revision 21239)
@@ -0,0 +1,38 @@
+#Test Name: SquareShelfConstrainedStressHOAdolcMumps
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(3,2.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.stressbalance.requested_outputs=['default','StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz']
+
+md.autodiff.isautodiff=True
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure',\
+	'StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz']
+field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-09,\
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	md.results.StressbalanceSolution.StressTensorxx,\
+	md.results.StressbalanceSolution.StressTensoryy,\
+	md.results.StressbalanceSolution.StressTensorzz,\
+	md.results.StressbalanceSolution.StressTensorxy,\
+	md.results.StressbalanceSolution.StressTensorxz,\
+	md.results.StressbalanceSolution.StressTensoryz,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3104.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3104.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3104.m	(revision 21239)
@@ -0,0 +1,22 @@
+%Test Name: SquareShelfConstrainedStressFSAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'FS','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-08,1e-08,2.9e-07,1e-08,1e-08};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3104.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3104.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3104.py	(revision 21239)
@@ -0,0 +1,29 @@
+#Test Name: SquareShelfConstrainedStressFSAdolcMumps
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(3,2.)
+md=setflowequation(md,'FS','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.autodiff.isautodiff=True
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-08,1e-08,2e-07,1e-08,1e-08]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3105.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3105.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3105.m	(revision 21239)
@@ -0,0 +1,17 @@
+%Test Name: SquareShelfConstrainedMasstransp2dAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3105.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3105.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3105.py	(revision 21239)
@@ -0,0 +1,24 @@
+#Test Name: SquareShelfConstrainedMasstransp2dAdolcMumps
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.autodiff.isautodiff=True
+md=solve(md,'Masstransport')
+
+#Fields and tolerances to track changes
+field_names     =['Thickness']
+field_tolerances=[1e-13]
+field_values=[\
+	md.results.MasstransportSolution.Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3106.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3106.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3106.m	(revision 21239)
@@ -0,0 +1,20 @@
+%Test Name: SquareShelfConstrainedMasstransp2dDGAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=meshconvert(md);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.stabilization=3;
+md.masstransport.spcthickness=md.geometry.thickness;
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3106.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3106.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3106.py	(revision 21239)
@@ -0,0 +1,28 @@
+#Test Name: SquareShelfConstrainedMasstransp2dDGAdolcMumps
+from model import *
+from triangle import *
+from meshconvert import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=meshconvert(md)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.masstransport.stabilization=3
+md.masstransport.spcthickness=md.geometry.thickness
+
+md.autodiff.isautodiff=True
+md=solve(md,'Masstransport')
+
+#Fields and tolerances to track changes
+field_names     =['Thickness']
+field_tolerances=[1e-13]
+field_values=[\
+	md.results.MasstransportSolution.Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3107.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3107.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3107.m	(revision 21239)
@@ -0,0 +1,18 @@
+%Test Name: SquareShelfConstrainedMasstransp3dAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md=extrude(md,5,3.);
+md.cluster=generic('name',oshostname(),'np',3);
+md.autodiff.isautodiff=true;
+md.verbose=verbose('autodiff',true);
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3107.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3107.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3107.py	(revision 21239)
@@ -0,0 +1,25 @@
+#Test Name: SquareShelfConstrainedMasstransp3dAdolcMumps
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.extrude(5,3.)
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.autodiff.isautodiff=True
+md=solve(md,'Masstransport')
+
+#Fields and tolerances to track changes
+field_names     =['Thickness']
+field_tolerances=[1e-13]
+field_values=[\
+	md.results.MasstransportSolution.Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3108.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3108.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3108.m	(revision 21239)
@@ -0,0 +1,20 @@
+%Test Name: SquareShelfConstrainedTherSteaAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=0;
+md.cluster=generic('name',oshostname(),'np',3);
+md.autodiff.isautodiff=true;
+md.verbose=verbose('autodiff',true);
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-5};
+field_values={...
+	(md.results.ThermalSolution.Temperature),...
+	(md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3108.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3108.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3108.py	(revision 21239)
@@ -0,0 +1,27 @@
+#Test Name: SquareShelfConstrainedTherSteaAdolcMumps
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.timestepping.time_step=0
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.autodiff.isautodiff=True
+md=solve(md,'Thermal')
+
+#Fields and tolerances to track changes
+field_names     =['Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-13,1e-5]
+field_values=[\
+	md.results.ThermalSolution.Temperature,\
+	md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3109.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3109.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3109.m	(revision 21239)
@@ -0,0 +1,24 @@
+%Test Name: SquareShelfConstrainedTherTranAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md.autodiff.isautodiff=true;
+md.verbose=verbose('autodiff',true);
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3109.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3109.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3109.py	(revision 21239)
@@ -0,0 +1,31 @@
+#Test Name: SquareShelfConstrainedTherTranAdolcMumps
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.transient.isstressbalance=False
+md.transient.ismasstransport=False
+md.transient.issmb=True
+md.transient.isthermal=True
+md.transient.isgroundingline=False
+
+md.autodiff.isautodiff=True
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test311.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test311.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test311.m	(revision 21239)
@@ -0,0 +1,15 @@
+%Test Name: SquareSheetConstrainedMasstransp3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+md=extrude(md,5,0.5);
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test311.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test311.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test311.py	(revision 21239)
@@ -0,0 +1,23 @@
+#Test Name: SquareSheetConstrainedMasstransp3d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.extrude(5,0.5)
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Masstransport')
+
+#Fields and tolerances to track changes
+field_names     =['Thickness']
+field_tolerances=[1e-13]
+field_values=[\
+	md.results.MasstransportSolution.Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3110.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3110.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3110.m	(revision 21239)
@@ -0,0 +1,44 @@
+%Test Name: SquareShelfConstrainedTranSSA2dAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'IceVolume'};
+
+md.autodiff.isautodiff=true;
+md.verbose=verbose('autodiff',true);
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Volume3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).IceVolume),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3110.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3110.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3110.py	(revision 21239)
@@ -0,0 +1,51 @@
+#Test Name: SquareShelfConstrainedTranSSA2dAdolcMumps
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.transient.requested_outputs=['IceVolume']
+
+md.autodiff.isautodiff=True
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Volume3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].IceVolume,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].IceVolume,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].IceVolume,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3119.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3119.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3119.m	(revision 21239)
@@ -0,0 +1,26 @@
+%Test Name: ReverseScalarDriver
+%reverse scalar driver in ADOLC, using the test3009 setup, equivalent to test109 setup.
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.toolkits.DefaultAnalysis=issmgslsolver();
+
+md.autodiff.isautodiff=true;
+md.verbose.autodiff=true;
+
+%first run scalar reverse mode: 
+md.autodiff.independents={independent('name','md.geometry.thickness','type','vertex','nods',md.mesh.numberofvertices)};
+md.autodiff.dependents={dependent('name','MaxVel','type','scalar','fos_reverse_index',1)};
+md.autodiff.driver='fos_reverse';
+
+md=solve(md,'Transient');
+
+%recover jacobian: 
+jac_reverse=md.results.TransientSolution(1).AutodiffJacobian;
+
+%Fields and tolerances to track changes
+field_names     ={'Jac Reverse'};
+field_tolerances={1e-8};
+field_values={jac_reverse,};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3119.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3119.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3119.py	(revision 21239)
@@ -0,0 +1,35 @@
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from independent import *
+from dependent import *
+from solve import *
+from MatlabFuncs import *
+
+#test reverse scalar vs forward vectorial drivers in ADOLC, using the test3009 setup, equivalent to test109 setup.
+md=triangle(model(),'../Exp/Square.exp',100000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.autodiff.isautodiff=True
+md.verbose.autodiff=True
+
+#first run scalar reverse mode: 
+md.autodiff.independents=[independent('name','md.geometry.thickness','type','vertex','nods',md.mesh.numberofvertices)]
+md.autodiff.dependents=[dependent('name','MaxVel','type','scalar','fos_reverse_index',1)]
+md.autodiff.driver='fos_reverse'
+
+md=solve(md,'Transient')
+
+#recover jacobian: 
+jac_reverse=md.results.TransientSolution[0].AutodiffJacobian
+
+#Fields and tolerances to track changes
+field_names     =['Jac Reverse']
+field_tolerances=[1e-13]
+field_values=[jac_reverse]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test312.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test312.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test312.m	(revision 21239)
@@ -0,0 +1,17 @@
+%Test Name: SquareSheetConstrainedTherStea
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=0.;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-8};
+field_values={...
+	(md.results.ThermalSolution.Temperature),...
+	(md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test312.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test312.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test312.py	(revision 21239)
@@ -0,0 +1,25 @@
+#Test Name: SquareSheetConstrainedTherStea
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.timestepping.time_step=0.
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Thermal')
+
+#Fields and tolerances to track changes
+field_names     =['Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-13,1e-8]
+field_values=[\
+	md.results.ThermalSolution.Temperature,\
+	md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test313.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test313.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test313.m	(revision 21239)
@@ -0,0 +1,22 @@
+%Test Name: SquareSheetConstrainedTherTran
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('convergence',true,'solution',true);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test313.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test313.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test313.py	(revision 21239)
@@ -0,0 +1,30 @@
+#Test Name: SquareSheetConstrainedTherTran
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.verbose=verbose('convergence',True,'solution',True)
+md.transient.isstressbalance=False
+md.transient.ismasstransport=False
+md.transient.issmb=True
+md.transient.isthermal=True
+md.transient.isgroundingline=False
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test314.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test314.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test314.m	(revision 21239)
@@ -0,0 +1,47 @@
+%Test Name: SquareSheetConstrainedTranSIA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SIA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','GroundedArea','FloatingArea','IceVolume'};
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','FloatingArea1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','FloatingArea2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','FloatingArea3'};
+field_tolerances={...
+	1e-13 , 1e-13   , 1e-13   , 1e-13 , 1e-13 , 1e-13 , 1e-13   , 1e-13 , 1e-13...
+	1e-10 , 1e-13   , 1e-13   , 1e-13 , 1e-13 , 1e-13 , 1e-13   , 1e-13 , 1e-13...
+	1e-10 , 1.5e-13 , 1.5e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13,    1e-13 , 1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).GroundedArea),...
+	(md.results.TransientSolution(3).FloatingArea),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test314.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test314.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test314.py	(revision 21239)
@@ -0,0 +1,55 @@
+#Test Name: SquareSheetConstrainedTranSIA2d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md=setflowequation(md,'SIA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.transient.requested_outputs=['default','GroundedArea','FloatingArea','IceVolume']
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =[
+'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','FloatingArea1',
+'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','FloatingArea2',
+'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','FloatingArea3']
+field_tolerances=[
+		1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+		1e-10,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+		1e-10,1.5e-13,1.5e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].GroundedArea,\
+	md.results.TransientSolution[0].FloatingArea,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].GroundedArea,\
+	md.results.TransientSolution[1].FloatingArea,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].GroundedArea,\
+	md.results.TransientSolution[2].FloatingArea,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test315.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test315.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test315.m	(revision 21239)
@@ -0,0 +1,48 @@
+%Test Name: SquareSheetConstrainedTranSIA3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,5,1.2);
+md=setflowequation(md,'SIA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1',...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2',...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...,
+	1e-10,1e-13,5e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-10,2e-13,5e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test315.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test315.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test315.py	(revision 21239)
@@ -0,0 +1,56 @@
+#Test Name: SquareSheetConstrainedTranSIA3d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.extrude(5,1.2)
+md=setflowequation(md,'SIA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1',\
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2',\
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+	1e-10,1e-13,5e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+	1e-10,2e-13,5e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Temperature,\
+	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test316.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test316.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test316.m	(revision 21239)
@@ -0,0 +1,34 @@
+%Test Name: SquareSheetConstrainedTranSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test316.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test316.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test316.py	(revision 21239)
@@ -0,0 +1,42 @@
+#Test Name: SquareSheetConstrainedTranSSA2d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test317.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test317.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test317.m	(revision 21239)
@@ -0,0 +1,62 @@
+%Test Name: SquareSheetConstrainedTranHO
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md.basalforcings.groundedice_melting_rate(:)=5;
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb'};
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1'...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','GroundedArea2','FloatingArea2','TotalFloatingBmb2','TotalGroundedBmb2',...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','GroundedArea3','FloatingArea3','TotalFloatingBmb3','TotalGroundedBmb3'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12,...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12,...
+	1e-09,5e-10,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).GroundedArea),...
+	(md.results.TransientSolution(3).FloatingArea),...
+	(md.results.TransientSolution(3).TotalFloatingBmb),...
+	(md.results.TransientSolution(3).TotalGroundedBmb),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test317.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test317.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test317.py	(revision 21239)
@@ -0,0 +1,70 @@
+#Test Name: SquareSheetConstrainedTranHO
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',200000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.basalforcings.groundedice_melting_rate[:]=5.
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.transient.requested_outputs=['default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb']
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1'\
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','GroundedArea2','FloatingArea2','TotalFloatingBmb2','TotalGroundedBmb2',\
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','GroundedArea3','FloatingArea3','TotalFloatingBmb2','TotalGroundedBmb2']
+field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12,\
+		1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12,\
+		1e-09,5e-10,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[0].GroundedArea,\
+	md.results.TransientSolution[0].FloatingArea,\
+	md.results.TransientSolution[0].TotalFloatingBmb,\
+	md.results.TransientSolution[0].TotalGroundedBmb,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].GroundedArea,\
+	md.results.TransientSolution[1].FloatingArea,\
+	md.results.TransientSolution[1].TotalFloatingBmb,\
+	md.results.TransientSolution[1].TotalGroundedBmb,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Temperature,\
+	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[2].GroundedArea,\
+	md.results.TransientSolution[2].FloatingArea,\
+	md.results.TransientSolution[2].TotalFloatingBmb,\
+	md.results.TransientSolution[2].TotalGroundedBmb,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test318.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test318.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test318.m	(revision 21239)
@@ -0,0 +1,22 @@
+%Test Name: SquareSheetConstrainedSteaSIA3d
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,4,1.);
+md=setflowequation(md,'SIA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0;
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-13,6e-10,1e-10,1e-13,1e-11,1e-6};
+field_values={...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test318.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test318.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test318.py	(revision 21239)
@@ -0,0 +1,30 @@
+#Test Name: SquareSheetConstrainedSteaSIA3d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.extrude(4,1.)
+md=setflowequation(md,'SIA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.timestepping.time_step=0
+md=solve(md,'Steadystate')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-13,1e-13,1.6e-10,1e-10,1e-13,1e-11,1e-6]
+field_values=[\
+	md.results.SteadystateSolution.Vx,\
+	md.results.SteadystateSolution.Vy,\
+	md.results.SteadystateSolution.Vz,\
+	md.results.SteadystateSolution.Vel,\
+	md.results.SteadystateSolution.Pressure,\
+	md.results.SteadystateSolution.Temperature,\
+	md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test319.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test319.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test319.m	(revision 21239)
@@ -0,0 +1,34 @@
+%Test Name: SquareSheetConstrainedCMDragSSA2d
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[103  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-12,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.FrictionCoefficient),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test319.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test319.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test319.py	(revision 21239)
@@ -0,0 +1,45 @@
+#Test Name: SquareSheetConstrainedCMDragSSA2d
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',200000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md=setflowequation(md,'SSA','all')
+
+#control parameters
+md.inversion.iscontrol=1
+md.inversion.control_parameters=['FrictionCoefficient']
+md.inversion.min_parameters=1.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.max_parameters=200.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.nsteps=2
+md.inversion.cost_functions=[103,501]
+md.inversion.cost_functions_coefficients=numpy.ones((md.mesh.numberofvertices,2))
+md.inversion.cost_functions_coefficients[:,1]=2.*10**-7
+md.inversion.gradient_scaling=3.*numpy.ones((md.inversion.nsteps,1))
+md.inversion.maxiter_per_step=2*numpy.ones(md.inversion.nsteps)
+md.inversion.step_threshold=0.3*numpy.ones(md.inversion.nsteps)
+md.inversion.vx_obs=md.initialization.vx
+md.inversion.vy_obs=md.initialization.vy
+
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy']
+field_tolerances=[1e-12,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Gradient1,\
+	md.results.StressbalanceSolution.J,\
+	md.results.StressbalanceSolution.FrictionCoefficient,\
+	md.results.StressbalanceSolution.Pressure,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test320.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test320.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test320.m	(revision 21239)
@@ -0,0 +1,35 @@
+%Test Name: SquareSheetConstrainedCMDragSSA3d
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[103  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.FrictionCoefficient),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test320.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test320.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test320.py	(revision 21239)
@@ -0,0 +1,46 @@
+#Test Name: SquareSheetConstrainedCMDragSSA3d
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',200000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+
+#control parameters
+md.inversion.iscontrol=1
+md.inversion.control_parameters=['FrictionCoefficient']
+md.inversion.min_parameters=1.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.max_parameters=200.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.nsteps=2
+md.inversion.cost_functions=[103,501]
+md.inversion.cost_functions_coefficients=numpy.ones((md.mesh.numberofvertices,2))
+md.inversion.cost_functions_coefficients[:,1]=2.*10**-7
+md.inversion.gradient_scaling=3.*numpy.ones((md.inversion.nsteps,1))
+md.inversion.maxiter_per_step=2*numpy.ones(md.inversion.nsteps)
+md.inversion.step_threshold=0.3*numpy.ones(md.inversion.nsteps)
+md.inversion.vx_obs=md.initialization.vx
+md.inversion.vy_obs=md.initialization.vy
+
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy']
+field_tolerances=[1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12]
+field_values=[\
+	md.results.StressbalanceSolution.Gradient1,\
+	md.results.StressbalanceSolution.J,\
+	md.results.StressbalanceSolution.FrictionCoefficient,\
+	md.results.StressbalanceSolution.Pressure,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test321.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test321.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test321.m	(revision 21239)
@@ -0,0 +1,35 @@
+%Test Name: SquareSheetConstrainedCMDragHO
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[102  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-08,1e-07,1e-10,1e-10,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.FrictionCoefficient),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test321.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test321.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test321.py	(revision 21239)
@@ -0,0 +1,46 @@
+#Test Name: SquareSheetConstrainedCMDragHO
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',200000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+
+#control parameters
+md.inversion.iscontrol=1
+md.inversion.control_parameters=['FrictionCoefficient']
+md.inversion.min_parameters=1.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.max_parameters=200.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.nsteps=2
+md.inversion.cost_functions=[102,501]
+md.inversion.cost_functions_coefficients=numpy.ones((md.mesh.numberofvertices,2))
+md.inversion.cost_functions_coefficients[:,1]=2*10**-7
+md.inversion.gradient_scaling=3.*numpy.ones((md.inversion.nsteps,1))
+md.inversion.maxiter_per_step=2*numpy.ones(md.inversion.nsteps)
+md.inversion.step_threshold=0.3*numpy.ones(md.inversion.nsteps)
+md.inversion.vx_obs=md.initialization.vx
+md.inversion.vy_obs=md.initialization.vy
+
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy']
+field_tolerances=[1e-08,1e-07,1e-10,1e-10,1e-09,1e-09,1e-09]
+field_values=[\
+	md.results.StressbalanceSolution.Gradient1,\
+	md.results.StressbalanceSolution.J,\
+	md.results.StressbalanceSolution.FrictionCoefficient,\
+	md.results.StressbalanceSolution.Pressure,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test322.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test322.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test322.m	(revision 21239)
@@ -0,0 +1,35 @@
+%Test Name: SquareSheetConstrainedCMDragFS
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'FS','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[104  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy'};
+field_tolerances={5e-05,1e-08,7e-08,5e-09,1e-08,1e-08,1e-08};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.FrictionCoefficient),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test322.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test322.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test322.py	(revision 21239)
@@ -0,0 +1,46 @@
+#Test Name: SquareSheetConstrainedCMDragFS
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',200000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'FS','all')
+
+#control parameters
+md.inversion.iscontrol=1
+md.inversion.control_parameters=['FrictionCoefficient']
+md.inversion.min_parameters=1.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.max_parameters=200.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.nsteps=2
+md.inversion.cost_functions=[104,501]
+md.inversion.cost_functions_coefficients=numpy.ones((md.mesh.numberofvertices,2))
+md.inversion.cost_functions_coefficients[:,1]=2.*10**-7
+md.inversion.gradient_scaling=3.*numpy.ones((md.inversion.nsteps,1))
+md.inversion.maxiter_per_step=2*numpy.ones(md.inversion.nsteps)
+md.inversion.step_threshold=0.3*numpy.ones(md.inversion.nsteps)
+md.inversion.vx_obs=md.initialization.vx
+md.inversion.vy_obs=md.initialization.vy
+
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy']
+field_tolerances=[5e-05,1e-08,7e-08,5e-09,1e-08,1e-08,1e-08]
+field_values=[\
+	md.results.StressbalanceSolution.Gradient1,\
+	md.results.StressbalanceSolution.J,\
+	md.results.StressbalanceSolution.FrictionCoefficient,\
+	md.results.StressbalanceSolution.Pressure,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test323.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test323.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test323.m	(revision 21239)
@@ -0,0 +1,36 @@
+%Test Name: SquareSheetConstrainedTranCflSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_adapt=1;
+md.timestepping.final_time=1120.;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test323.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test323.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test323.py	(revision 21239)
@@ -0,0 +1,45 @@
+#Test Name: SquareSheetConstrainedTranCflSSA2d
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.timestepping.time_adapt=1
+md.timestepping.final_time=1120.
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test324.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test324.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test324.m	(revision 21239)
@@ -0,0 +1,50 @@
+%Test Name: SquareSheetConstrainedTranCflSIA3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,5,1.2);
+md=setflowequation(md,'SIA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_adapt=1;
+md.timestepping.final_time=16000.;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1',...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2',...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={1e-13,  1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	5*1e-11,1e-13,5e-13,1e-13,1e-13,1e-13,5e-13,1e-13,1e-13,1e-13,...
+	1e-10,  1e-12,1e-12,1e-12,1e-13,1e-13,1e-12,1e-12,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test324.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test324.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test324.py	(revision 21239)
@@ -0,0 +1,59 @@
+#Test Name: SquareSheetConstrainedTranCflSIA3d
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.extrude(5,1.2)
+md=setflowequation(md,'SIA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.timestepping.time_adapt=1
+md.timestepping.final_time=16000.
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1',\
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2',\
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3']
+field_tolerances=[1e-13,  1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+	5*1e-11,1e-13,5e-13,1e-13,1e-13,1e-13,5e-13,1e-13,1e-13,1e-13,\
+	1e-10,  1e-12,1e-12,1e-12,1e-13,1e-13,1e-12,1e-12,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Temperature,\
+	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test325.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test325.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test325.m	(revision 21239)
@@ -0,0 +1,23 @@
+%Test Name: SquareSheetConstrainedEnthalpyStea
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=0.;
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.thermal.isenthalpy = 1;
+md.thermal.isdynamicbasalspc = 1;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Enthalpy','Waterfraction','Temperature'};
+field_tolerances={1e-13,5e-13,1e-13};
+field_values={...
+	(md.results.ThermalSolution.Enthalpy),...
+	(md.results.ThermalSolution.Waterfraction),...
+	(md.results.ThermalSolution.Temperature),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test325.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test325.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test325.py	(revision 21239)
@@ -0,0 +1,32 @@
+#Test Name: SquareSheetConstrainedEnthalpyStea
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.timestepping.time_step=0.
+md.initialization.waterfraction=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.watercolumn=numpy.zeros((md.mesh.numberofvertices,1))
+md.thermal.isenthalpy = 1
+md.thermal.isdynamicbasalspc = 1
+
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Thermal')
+
+#Fields and tolerances to track changes
+field_names     =['Enthalpy','Waterfraction','Temperature']
+field_tolerances=[1e-13,5e-13,1e-13]
+field_values=[\
+	md.results.ThermalSolution.Enthalpy,\
+	md.results.ThermalSolution.Waterfraction,\
+	md.results.ThermalSolution.Temperature,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test326.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test326.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test326.m	(revision 21239)
@@ -0,0 +1,34 @@
+%Test Name: SquareSheetConstrainedEnthalpyTran
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Enthalpy1','Waterfraction1','Temperature1',...
+	'Enthalpy2','Waterfraction2','Temperature2',...
+	'Enthalpy3','Waterfraction3','Temperature3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Enthalpy),...
+	(md.results.TransientSolution(1).Waterfraction),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(2).Enthalpy),...
+	(md.results.TransientSolution(2).Waterfraction),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(3).Enthalpy),...
+	(md.results.TransientSolution(3).Waterfraction),...
+	(md.results.TransientSolution(3).Temperature),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test326.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test326.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test326.py	(revision 21239)
@@ -0,0 +1,43 @@
+#Test Name: SquareSheetConstrainedEnthalpyTran
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.initialization.waterfraction=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.watercolumn=numpy.zeros((md.mesh.numberofvertices,1))
+md.transient.isstressbalance=False
+md.transient.ismasstransport=False
+md.transient.issmb=True
+md.transient.isthermal=True
+md.transient.isgroundingline=False
+md.thermal.isenthalpy=1
+md.thermal.isdynamicbasalspc=1
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Enthalpy1','Waterfraction1','Temperature1',\
+	'Enthalpy2','Waterfraction2','Temperature2',\
+	'Enthalpy3','Waterfraction3','Temperature3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Enthalpy,\
+	md.results.TransientSolution[0].Waterfraction,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[1].Enthalpy,\
+	md.results.TransientSolution[1].Waterfraction,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[2].Enthalpy,\
+	md.results.TransientSolution[2].Waterfraction,\
+	md.results.TransientSolution[2].Temperature,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test327.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test327.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test327.m	(revision 21239)
@@ -0,0 +1,60 @@
+%Test Name: SquareSheetConstrainedTransHOEnth
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.initialization.temperature(:)=272.;
+md.thermal.spctemperature(find(md.mesh.vertexonsurface))=272.;
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+md.basalforcings.geothermalflux(:)=5.;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','Enthalpy1','Waterfraction1',...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','Enthalpy2','Waterfraction2',...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','Enthalpy3','Waterfraction3'};
+field_tolerances={...
+	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,5e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-4,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).Enthalpy),...
+	(md.results.TransientSolution(1).Waterfraction),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).Enthalpy),...
+	(md.results.TransientSolution(2).Waterfraction),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).Enthalpy),...
+	(md.results.TransientSolution(3).Waterfraction),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test327.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test327.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test327.py	(revision 21239)
@@ -0,0 +1,67 @@
+#Test Name: SquareSheetConstrainedTransHOEnth
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',200000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.initialization.waterfraction=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.watercolumn=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.temperature[:]=272.
+md.thermal.spctemperature[numpy.nonzero(md.mesh.vertexonsurface)[0]]=272.
+md.thermal.isenthalpy=1
+md.thermal.isdynamicbasalspc=1
+md.basalforcings.geothermalflux[:]=5.
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','Enthalpy1','Waterfraction1',\
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','Enthalpy2','Waterfraction2',\
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','Enthalpy3','Waterfraction3']
+field_tolerances=[1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,5e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-4,1e-10]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].Enthalpy,\
+	md.results.TransientSolution[0].Waterfraction,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].Enthalpy,\
+	md.results.TransientSolution[1].Waterfraction,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Temperature,\
+	md.results.TransientSolution[2].Enthalpy,\
+	md.results.TransientSolution[2].Waterfraction,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test328.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test328.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test328.m	(revision 21239)
@@ -0,0 +1,43 @@
+%Test Name: SquareSheetConstrainedSmbGradients2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.smb = SMBgradients();
+md.smb.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y;
+md.smb.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y;
+md.smb.href=md.geometry.surface;
+md.smb.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
+md.transient.requested_outputs={'default','TotalSmb'};
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Bed1','Surface1','Thickness1','SMB1','TotalSmb1','Vx2','Vy2','Vel2','Bed2','Surface2','Thickness2','SMB2','TotalSmb2','Vx3','Vy3','Vel3','Bed3','Surface3','Thickness3','SMB3','TotalSmb3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1.5e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(3).TotalSmb),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test328.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test328.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test328.py	(revision 21239)
@@ -0,0 +1,53 @@
+#Test Name: SquareSheetConstrainedSmbGradients2d
+import numpy
+import copy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.smb = SMBgradients();
+md.smb.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y
+md.smb.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y
+md.transient.requested_outputs=['default','TotalSmb']
+md.smb.href=copy.deepcopy(md.geometry.surface).reshape(-1)
+md.smb.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Bed1','Surface1','Thickness1','SMB1','TotalSmb1','Vx2','Vy2','Vel2','Bed2','Surface2','Thickness2','SMB2','TotalSmb2','Vx3','Vy3','Vel3','Bed3','Surface3','Thickness3','SMB3','TotalSmb3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[0].TotalSmb,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].TotalSmb,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	md.results.TransientSolution[2].TotalSmb,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test329.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test329.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test329.m	(revision 21239)
@@ -0,0 +1,52 @@
+%Test Name: SquareSheetConstrainedSmbGradients3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.smb = SMBgradients();
+md.smb.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y;
+md.smb.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y;
+md.smb.href=md.geometry.surface;
+md.smb.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
+md.transient.requested_outputs={'default','TotalSmb'};
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Bed1','Surface1','Thickness1','Temperature1','SMB1','TotalSmb1','Vx2','Vy2','Vz2','Vel2','Bed2','Surface2','Thickness2','Temperature2','SMB2','TotalSmb2','Vx3','Vy3','Vz3','Vel3','Bed3','Surface3','Thickness3','Temperature3','SMB3','TotalSmb3'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(3).TotalSmb),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test329.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test329.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test329.py	(revision 21239)
@@ -0,0 +1,62 @@
+#Test Name: SquareSheetConstrainedSmbGradients3d
+import numpy
+import copy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.extrude(3,1)
+md=setflowequation(md,'HO','all')
+md.smb = SMBgradients();
+md.smb.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y
+md.smb.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y
+md.smb.href=copy.deepcopy(md.geometry.surface).reshape(-1)
+md.smb.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
+md.transient.requested_outputs=['default','TotalSmb']
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Bed1','Surface1','Thickness1','Temperature1','SMB1','TotalSmb1','Vx2','Vy2','Vz2','Vel2','Bed2','Surface2','Thickness2','Temperature2','SMB2','TotalSmb2','Vx3','Vy3','Vz3','Vel3','Bed3','Surface3','Thickness3','Temperature3','SMB3','TotalSmb3']
+field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[0].TotalSmb,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[1].TotalSmb,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Temperature,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	md.results.TransientSolution[2].TotalSmb,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3300.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3300.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test3300.m	(revision 21239)
@@ -0,0 +1,58 @@
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md.transient=deactivateall(md.transient);
+md.transient.ishydrology=1;
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.hydrology=(hydrologydc);
+md.hydrology=initialize(md.hydrology,md);
+md.hydrology.isefficientlayer=1;
+md.hydrology.sedimentlimit_flag=1;
+md.hydrology.sedimentlimit=400.0;
+md.hydrology.sediment_thickness=20.0;
+md.initialization.sediment_head=0.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.spcsediment_head=NaN*ones(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate = 2.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.sediment_transmitivity=1.5e-4*ones(md.mesh.numberofvertices,1);
+
+md.initialization.epl_head=0.0*ones(md.mesh.numberofvertices,1);
+md.initialization.epl_thickness=1.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.spcepl_head=NaN*ones(md.mesh.numberofvertices,1);
+md.hydrology.mask_eplactive_node=0*ones(md.mesh.numberofvertices,1);
+
+md.hydrology.epl_conductivity=1.5e-2;
+md.hydrology.epl_initial_thickness=1.0;
+md.hydrology.epl_colapse_thickness=1.0e-6;
+md.hydrology.epl_thick_comp=1;
+md.hydrology.epl_max_thickness=5.0;
+
+md.hydrology.transfer_flag=1.0;
+md.hydrology.leakage_factor=3.9e-12;
+
+times=0:0.002:8.0;
+md.basalforcings.groundedice_melting_rate=ones(md.mesh.numberofvertices+1,length(times));
+
+for i=1:length(times)
+	if(times(i)<=1.0)
+		md.basalforcings.groundedice_melting_rate(:,i)=1.0;
+	elseif(times(i)<=6.0)
+		md.basalforcings.groundedice_melting_rate(:,i)=-0.2;
+	else
+		md.basalforcings.groundedice_melting_rate(:,i)=0.0;
+ end
+end	
+
+md.basalforcings.groundedice_melting_rate(end,:)=times;
+
+md.timestepping.time_step=0.002;
+md.timestepping.final_time=8.0;
+
+md=solve(md,'Transient');
+
+field_names     ={'SedimentWaterHead5','EplWaterHead5','SedimentWaterHead40','EplWaterHead40'};
+field_tolerances={1e-13, 1e-13, 1e-13, 1e-13, 1e-13};
+field_values={md.results.TransientSolution(5).SedimentHead, ...
+							md.results.TransientSolution(5).EplHead,...
+							md.results.TransientSolution(40).SedimentHead,...
+							md.results.TransientSolution(40).EplHead};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test332.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test332.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test332.m	(revision 21239)
@@ -0,0 +1,31 @@
+%Test Name: SquareSheetConstrainedHydrologyDC
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md.transient=deactivateall(md.transient);
+md.transient.ishydrology=1;
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.hydrology=(hydrologydc);
+md.hydrology=initialize(md.hydrology,md);
+md.hydrology.isefficientlayer=0;
+md.hydrology.sedimentlimit_flag=1;
+md.hydrology.sedimentlimit=8000.0;
+md.initialization.sediment_head=0.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.spcsediment_head=NaN*ones(md.mesh.numberofvertices,1);
+pos=find(md.mesh.y==0);
+md.hydrology.spcsediment_head(pos)=0.0;
+md.basalforcings.groundedice_melting_rate = 2.0*ones(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate = 0.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.sediment_transmitivity=3*ones(md.mesh.numberofvertices,1);
+md.timestepping.time_step=0;
+md.timestepping.final_time=1.0;
+md=solve(md,'Hydrology');
+
+%Fields and tolerances to track changes
+%you can also compare with an analitic solution, but it is exact
+%only if no limits are applied
+%analitic=(md.mesh.y.^2-2*md.mesh.y*1.0e6)*(-2.0/(2*md.constants.yts*md.hydrology.sediment_transmitivity))
+field_names     ={'SedimentWaterHead','SedimentHeadResidual'};
+field_tolerances={1e-13, 3e-10};
+field_values={md.results.HydrologySolution.SedimentHead,md.results.HydrologySolution.SedimentHeadResidual};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test332.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test332.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test332.py	(revision 21239)
@@ -0,0 +1,46 @@
+#Test Name: SquareSheetConstrainedHydrologyDC
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from transient import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',100000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+
+md.transient=transient.setallnullparameters(md.transient)
+md.transient.ishydrology=True
+
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',1)
+md.hydrology=hydrologydc()
+md.hydrology=md.hydrology.initialize(md)
+
+md.hydrology.isefficientlayer=0
+md.hydrology.sedimentlimit_flag=1
+md.hydrology.sedimentlimit=8000.0
+md.initialization.sediment_head=numpy.zeros((md.mesh.numberofvertices,1))
+md.hydrology.spcsediment_head=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+pos=numpy.nonzero(md.mesh.y==0.)[0]
+md.hydrology.spcsediment_head[pos]=0.0
+md.basalforcings.groundedice_melting_rate = 2.0*numpy.ones((md.mesh.numberofvertices,1))
+md.basalforcings.floatingice_melting_rate = 0.0*numpy.ones((md.mesh.numberofvertices,1))
+md.hydrology.sediment_transmitivity= 3.0*numpy.ones((md.mesh.numberofvertices,1))
+md.timestepping.time_step=0
+md.timestepping.final_time=1.0
+md=solve(md,'Hydrology')
+
+#Fields and tolerances to track changes
+#you can also compare with an analitic solution, but it is exact
+#only if no limits are applied
+#analitic=(md.mesh.y.^2-2*md.mesh.y*1.0e6)*(-2.0/(2*md.constants.yts*md.hydrology.sediment_transmitivity))
+field_names     =['SedimentWaterHead','SedimentHeadResidual']
+field_tolerances=[1e-13, 3e-10]
+field_values=[md.results.HydrologySolution.SedimentHead,md.results.HydrologySolution.SedimentHeadResidual]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test333.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test333.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test333.m	(revision 21239)
@@ -0,0 +1,65 @@
+%Test Name: SquareSheetHydrologyDCTwoLayers
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md.transient=deactivateall(md.transient);
+md.transient.ishydrology=1;
+md.transient.issmb=1;
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.hydrology=(hydrologydc);
+md.hydrology=initialize(md.hydrology,md);
+md.hydrology.isefficientlayer=1;
+md.hydrology.sedimentlimit_flag=1;
+md.hydrology.sedimentlimit=800.0;
+md.initialization.sediment_head=0.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.spcsediment_head=NaN*ones(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate = 2.0*ones(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate = 0.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.sediment_transmitivity=3*ones(md.mesh.numberofvertices,1);
+
+md.initialization.epl_head=0.0*ones(md.mesh.numberofvertices,1);
+md.initialization.epl_thickness=1.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.spcepl_head=NaN*ones(md.mesh.numberofvertices,1);
+md.hydrology.mask_eplactive_node=0*ones(md.mesh.numberofvertices,1);
+md.hydrology.epl_conductivity=30;
+md.hydrology.epl_initial_thickness=1;
+md.hydrology.epl_thick_comp=1;
+md.hydrology.epl_colapse_thickness=1.0e-3;
+md.hydrology.epl_max_thickness=1;
+md.timestepping.time_step=0.2;
+md.timestepping.final_time=2.0;
+
+%md.verbose.solution=1;
+
+md=solve(md,'Transient');
+
+%store=md.constants.g*md.hydrology.sediment_porosity*md.materials.rho_freshwater*((md.hydrology.sediment_compressibility/md.hydrology.sediment_porosity)+md.hydrology.water_compressibility);
+%sedstore=20.0*store;
+%for i=1:10
+%diff=(mean(md.results.HydrologySolution(i).EplHead)*store+ ...
+%			mean(md.results.HydrologySolution(i).SedimentHead)*sedstore-0.4*i)
+%end
+
+%Fields and tolerances to track changes
+field_names     ={'SedimentWaterHead1','EplWaterHead1','SedimentHeadResidual1',...
+						'SedimentWaterHead4','EplWaterHead4','SedimentHeadResidual4',...
+						'SedimentWaterHead5','EplWaterHead5','SedimentHeadResidual5',...
+						'SedimentWaterHead9','EplWaterHead9','SedimentHeadResidual9'};
+field_tolerances={...
+	1e-13, 1e-13, 1e-13,...
+	1e-13, 1e-13, 1e-13,...
+	1e-13, 5e-12, 1e-11,...
+	1e-13, 5e-12, 1e-11};
+field_values={md.results.TransientSolution(1).SedimentHead, ...
+							md.results.TransientSolution(1).EplHead,...
+							md.results.TransientSolution(1).SedimentHeadResidual,...
+							md.results.TransientSolution(4).SedimentHead,...
+							md.results.TransientSolution(4).EplHead,...
+							md.results.TransientSolution(4).SedimentHeadResidual, ...
+							md.results.TransientSolution(5).SedimentHead,...
+							md.results.TransientSolution(5).EplHead,...
+							md.results.TransientSolution(5).SedimentHeadResidual, ...
+							md.results.TransientSolution(9).SedimentHead,...
+							md.results.TransientSolution(9).EplHead,...
+							md.results.TransientSolution(9).SedimentHeadResidual};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test333.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test333.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test333.py	(revision 21239)
@@ -0,0 +1,69 @@
+#Test Name: SquareSheetHydrologyDCTwoLayers
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from transient import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+from generic import generic
+
+md=triangle(model(),'../Exp/Square.exp',100000.)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.transient=transient.setallnullparameters(md.transient)
+md.transient.ishydrology=True
+md.transient.issmb=True
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',1)
+md.hydrology=hydrologydc()
+md.hydrology=md.hydrology.initialize(md)
+
+md.hydrology.isefficientlayer=1
+md.hydrology.sedimentlimit_flag=1
+md.hydrology.sedimentlimit=800.0
+md.initialization.sediment_head=numpy.zeros((md.mesh.numberofvertices,1))
+md.hydrology.spcsediment_head=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+
+md.basalforcings.groundedice_melting_rate = 2.0*numpy.ones((md.mesh.numberofvertices,1))
+md.basalforcings.floatingice_melting_rate = 0.0*numpy.ones((md.mesh.numberofvertices,1))
+md.hydrology.sediment_transmitivity= 3.0*numpy.ones((md.mesh.numberofvertices,1))
+
+md.initialization.epl_head=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.epl_thickness=numpy.ones((md.mesh.numberofvertices,1))
+md.hydrology.spcepl_head=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+md.hydrology.mask_eplactive_node=numpy.zeros((md.mesh.numberofvertices,1))
+md.hydrology.epl_conductivity=30
+md.hydrology.epl_initial_thickness=1
+md.hydrology.epl_colapse_thickness=1.0e-3
+md.hydrology.epl_thick_comp=1
+md.hydrology.epl_max_thickness=1
+md.timestepping.time_step=0.2
+md.timestepping.final_time=2.0
+
+md=solve(md,'Transient')
+
+field_names     =['SedimentWaterHead1','EplWaterHead1','SedimentHeadResidual1', \
+						'SedimentWaterHead4','EplWaterHead4','SedimentHeadResidual4', \
+						'SedimentWaterHead5','EplWaterHead5','SedimentHeadResidual5', \
+						'SedimentWaterHead9','EplWaterHead9','SedimentHeadResidual9']
+field_tolerances=[ \
+	1e-13, 1e-13, 1e-13, \
+	1e-13, 1e-13, 1e-13, \
+	1e-13, 5e-12, 1e-11, \
+	1e-13, 5e-12, 1e-11]
+field_values=[md.results.TransientSolution[0].SedimentHead, \
+							md.results.TransientSolution[0].EplHead, \
+							md.results.TransientSolution[0].SedimentHeadResidual, \
+							md.results.TransientSolution[3].SedimentHead, \
+							md.results.TransientSolution[3].EplHead, \
+							md.results.TransientSolution[3].SedimentHeadResidual, \
+							md.results.TransientSolution[4].SedimentHead, \
+							md.results.TransientSolution[4].EplHead, \
+							md.results.TransientSolution[4].SedimentHeadResidual, \
+							md.results.TransientSolution[8].SedimentHead, \
+							md.results.TransientSolution[8].EplHead, \
+							md.results.TransientSolution[8].SedimentHeadResidual]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test334.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test334.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test334.m	(revision 21239)
@@ -0,0 +1,32 @@
+%Test Name: SquareSheetConstrainedExtrudedHydrologyDC
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+md.transient=deactivateall(md.transient);
+md.transient.ishydrology=1;
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.hydrology=(hydrologydc);
+md.hydrology=initialize(md.hydrology,md);
+md.hydrology.isefficientlayer=0;
+md.hydrology.sedimentlimit_flag=1;
+md.hydrology.sedimentlimit=8000.0;
+md.initialization.sediment_head=0.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.spcsediment_head=NaN*ones(md.mesh.numberofvertices,1);
+pos=find(md.mesh.y==0);
+md.hydrology.spcsediment_head(pos)=0.0;
+md.basalforcings.groundedice_melting_rate = 2.0*ones(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate = 0.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.sediment_transmitivity= 3.0*ones(md.mesh.numberofvertices,1);
+md.timestepping.time_step=0;
+md.timestepping.final_time=1.0;
+md=extrude(md,3,1.1);
+md=solve(md,'Hydrology');
+
+%Fields and tolerances to track changes
+%you can also compare with an analitic solution, but it is exact
+%only if no limits are applied
+%analitic=(md.mesh.y.^2-2*md.mesh.y*1.0e6)*(-2.0/(2*md.constants.yts*md.hydrology.sediment_transmitivity))
+field_names     ={'SedimentWaterHead','SedimentHeadResidual'};
+field_tolerances={1e-13, 3e-10};
+field_values={md.results.HydrologySolution.SedimentHead,md.results.HydrologySolution.SedimentHeadResidual};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test335.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test335.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test335.m	(revision 21239)
@@ -0,0 +1,71 @@
+%Test Name: SquareSheetExtrudedHydrologyDCTwoLayers
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+md.transient=deactivateall(md.transient);
+md.transient.ishydrology=1;
+md.transient.issmb=1;
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.hydrology=(hydrologydc);
+md.hydrology=initialize(md.hydrology,md);
+md.hydrology.isefficientlayer=1;
+md.hydrology.sedimentlimit_flag=1;
+md.hydrology.sedimentlimit=800.0;
+md.initialization.sediment_head=0.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.spcsediment_head=NaN*ones(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate = 2.0*ones(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate = 0.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.sediment_transmitivity=3*ones(md.mesh.numberofvertices,1);
+
+md.initialization.epl_head=0.0*ones(md.mesh.numberofvertices,1);
+md.initialization.epl_thickness=1.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.spcepl_head=NaN*ones(md.mesh.numberofvertices,1);
+md.hydrology.mask_eplactive_node=0*ones(md.mesh.numberofvertices,1);
+md.hydrology.epl_conductivity=30;
+md.hydrology.epl_initial_thickness=1;
+md.hydrology.epl_colapse_thickness=1.0e-3;
+md.hydrology.epl_thick_comp=1;
+md.hydrology.epl_max_thickness=1;
+md.timestepping.time_step=0.2;
+md.timestepping.final_time=2.0;
+
+%md.verbose.solution=1;
+md=extrude(md,3,1.1);
+md=solve(md,'Transient');
+
+%store=md.constants.g*md.hydrology.sediment_porosity* ...
+%			md.materials.rho_freshwater*((md.hydrology.sediment_compressibility/md.hydrology.sediment_porosity)+md.hydrology.water_compressibility)
+
+%sed=ones(1,size(md.results.HydrologySolution,2));
+%epl=ones(1,size(md.results.HydrologySolution,2));
+%res=ones(1,size(md.results.HydrologySolution,2));
+%input=ones(1,size(md.results.HydrologySolution,2));
+%for i= 1:size(md.results.HydrologySolution,2)
+%	sed(i)=mean(md.results.HydrologySolution(i).SedimentHead);
+%	res(i)=mean(md.results.HydrologySolution(i).SedimentHeadResidual);
+%	epl(i)=mean(md.results.HydrologySolution(i).EplHead);
+%	input(i)=2.0*(i*0.2);
+%end
+
+%Fields and tolerances to track changes
+field_names     ={'SedimentWaterHead1','EplWaterHead1','SedimentHeadResidual1',...
+						'SedimentWaterHead4','EplWaterHead4','SedimentHeadResidual4',...
+						'SedimentWaterHead5','EplWaterHead5','SedimentHeadResidual5',...
+						'SedimentWaterHead9','EplWaterHead9','SedimentHeadResidual9'};
+field_tolerances={1e-13, 1e-13, 1e-13,...
+						1e-13, 1e-13, 1e-13,...
+						1e-13, 5e-12, 2e-11,...
+						1e-13, 5e-12, 2e-11};
+field_values={md.results.TransientSolution(1).SedimentHead, ...
+							md.results.TransientSolution(1).EplHead,...
+							md.results.TransientSolution(1).SedimentHeadResidual,...
+							md.results.TransientSolution(4).SedimentHead,...
+							md.results.TransientSolution(4).EplHead,...
+							md.results.TransientSolution(4).SedimentHeadResidual, ...
+							md.results.TransientSolution(5).SedimentHead,...
+							md.results.TransientSolution(5).EplHead,...
+							md.results.TransientSolution(5).SedimentHeadResidual, ...
+							md.results.TransientSolution(9).SedimentHead,...
+							md.results.TransientSolution(9).EplHead,...
+							md.results.TransientSolution(9).SedimentHeadResidual};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test336.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test336.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test336.m	(revision 21239)
@@ -0,0 +1,66 @@
+%Test Name: SquareSheetConstrainedSmbComponents2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4.;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb=SMBcomponents();
+md.smb.accumulation=[smb*2; [1.5 3.]];
+md.smb.runoff=[smb/2; [1.5 3.]];
+md.smb.evaporation=[smb/2; [1.5 3.]];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
+field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test336.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test336.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test336.py	(revision 21239)
@@ -0,0 +1,75 @@
+#Test Name: SquareSheetConstrainedSmbComponents2d
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.timestepping.time_step=1.
+md.settings.output_frequency=1
+md.timestepping.final_time=4.
+
+#Set up transient
+smb=numpy.ones((md.mesh.numberofvertices,1))*3.6
+smb=numpy.hstack((smb,smb*-1.))
+
+md.smb=SMBcomponents();
+md.smb.accumulation=numpy.vstack((smb*2, [1.5,3.]));
+md.smb.runoff=numpy.vstack((smb/2, [1.5,3.]));
+md.smb.evaporation=numpy.vstack((smb/2, [1.5,3.]));
+md.transient.isthermal=False
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
+field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	md.results.TransientSolution[3].Vx,\
+	md.results.TransientSolution[3].Vy,\
+	md.results.TransientSolution[3].Vel,\
+	md.results.TransientSolution[3].Pressure,\
+	md.results.TransientSolution[3].Base,\
+	md.results.TransientSolution[3].Surface,\
+	md.results.TransientSolution[3].Thickness,\
+	md.results.TransientSolution[3].SmbMassBalance,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test337.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test337.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test337.m	(revision 21239)
@@ -0,0 +1,68 @@
+%Test Name: SquareSheetConstrainedSmbComponents3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4.;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb=SMBcomponents();
+md.smb.accumulation=[smb*2; [1.5 3.]];
+md.smb.runoff=[smb/2; [1.5 3.]];
+md.smb.evaporation=[smb/2; [1.5 3.]];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
+field_tolerances={...
+	5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test337.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test337.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test337.py	(revision 21239)
@@ -0,0 +1,77 @@
+#Test Name: SquareSheetConstrainedSmbComponents3d
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.timestepping.time_step=1.
+md.settings.output_frequency=1
+md.timestepping.final_time=4.
+
+#Set up transient
+smb=numpy.ones((md.mesh.numberofvertices,1))*3.6
+smb=numpy.hstack((smb,smb*-1.))
+
+md.smb=SMBcomponents();
+md.smb.accumulation=numpy.vstack((smb*2, [1.5,3.]));
+md.smb.runoff=numpy.vstack((smb/2, [1.5,3.]));
+md.smb.evaporation=numpy.vstack((smb/2, [1.5,3.]));
+md.transient.isthermal=False
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
+field_tolerances=[\
+		5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,\
+		5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,\
+		5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,\
+		5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	md.results.TransientSolution[3].Vx,\
+	md.results.TransientSolution[3].Vy,\
+	md.results.TransientSolution[3].Vel,\
+	md.results.TransientSolution[3].Pressure,\
+	md.results.TransientSolution[3].Base,\
+	md.results.TransientSolution[3].Surface,\
+	md.results.TransientSolution[3].Thickness,\
+	md.results.TransientSolution[3].SmbMassBalance,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test338.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test338.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test338.m	(revision 21239)
@@ -0,0 +1,67 @@
+%Test Name: SquareSheetConstrainedSmbMeltComponents2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4.;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb=SMBmeltcomponents();
+md.smb.accumulation=[smb; [1.5 3.]];
+md.smb.melt=[smb/2; [1.5 3.]];
+md.smb.refreeze=[smb; [1.5 3.]];
+md.smb.evaporation=[smb/2; [1.5 3.]];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
+field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test338.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test338.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test338.py	(revision 21239)
@@ -0,0 +1,76 @@
+#Test Name: SquareSheetConstrainedSmbMeltComponents2d
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.timestepping.time_step=1.
+md.settings.output_frequency=1
+md.timestepping.final_time=4.
+
+#Set up transient
+smb=numpy.ones((md.mesh.numberofvertices,1))*3.6
+smb=numpy.hstack((smb,smb*-1.))
+
+md.smb=SMBmeltcomponents();
+md.smb.accumulation=numpy.vstack((smb, [1.5,3.]));
+md.smb.evaporation=numpy.vstack((smb/2, [1.5,3.]));
+md.smb.melt=numpy.vstack((smb/2, [1.5,3.]));
+md.smb.refreeze=numpy.vstack((smb, [1.5,3.]));
+md.transient.isthermal=False
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
+field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	md.results.TransientSolution[3].Vx,\
+	md.results.TransientSolution[3].Vy,\
+	md.results.TransientSolution[3].Vel,\
+	md.results.TransientSolution[3].Pressure,\
+	md.results.TransientSolution[3].Base,\
+	md.results.TransientSolution[3].Surface,\
+	md.results.TransientSolution[3].Thickness,\
+	md.results.TransientSolution[3].SmbMassBalance,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test339.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test339.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test339.m	(revision 21239)
@@ -0,0 +1,69 @@
+%Test Name: SquareSheetConstrainedSmbMeltComponents3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4.;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb=SMBmeltcomponents();
+md.smb.accumulation=[smb; [1.5 3.]];
+md.smb.melt=[smb/2; [1.5 3.]];
+md.smb.refreeze=[smb; [1.5 3.]];
+md.smb.evaporation=[smb/2; [1.5 3.]];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
+field_tolerances={...
+	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test339.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test339.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test339.py	(revision 21239)
@@ -0,0 +1,78 @@
+#Test Name: SquareSheetConstrainedSmbMeltComponents3d
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.timestepping.time_step=1.
+md.settings.output_frequency=1
+md.timestepping.final_time=4.
+
+#Set up transient
+smb=numpy.ones((md.mesh.numberofvertices,1))*3.6
+smb=numpy.hstack((smb,smb*-1.))
+
+md.smb=SMBmeltcomponents();
+md.smb.accumulation=numpy.vstack((smb, [1.5,3.]));
+md.smb.evaporation=numpy.vstack((smb/2, [1.5,3.]));
+md.smb.melt=numpy.vstack((smb/2, [1.5,3.]));
+md.smb.refreeze=numpy.vstack((smb, [1.5,3.]));
+md.transient.isthermal=False
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
+field_tolerances=[\
+		1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,\
+		1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,\
+		1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,\
+		1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	md.results.TransientSolution[3].Vx,\
+	md.results.TransientSolution[3].Vy,\
+	md.results.TransientSolution[3].Vel,\
+	md.results.TransientSolution[3].Pressure,\
+	md.results.TransientSolution[3].Base,\
+	md.results.TransientSolution[3].Surface,\
+	md.results.TransientSolution[3].Thickness,\
+	md.results.TransientSolution[3].SmbMassBalance,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test340.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test340.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test340.m	(revision 21239)
@@ -0,0 +1,34 @@
+%Test Name: SquareSheetConstrainedCMtaoDragHO
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+
+%control parameters
+md.inversion=taoinversion(md.inversion);
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.maxsteps=2;
+md.inversion.maxiter=6;
+md.inversion.cost_functions=[102  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy'};
+field_tolerances={3e-08,1e-07,5e-10,1e-10,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.FrictionCoefficient),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test341.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test341.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test341.m	(revision 21239)
@@ -0,0 +1,33 @@
+%Test Name: SquareSheetConstrainedCMm1qn3DragHO
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+
+%control parameters
+md.inversion=m1qn3inversion(md.inversion);
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.maxsteps=2;
+md.inversion.maxiter=6;
+md.inversion.cost_functions=[102  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','FrictionCoefficient','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-08,1e-9,1e-10,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.FrictionCoefficient),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test341.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test341.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test341.py	(revision 21239)
@@ -0,0 +1,45 @@
+#Test Name: SquareSheetConstrainedCMm1qn3DragHO
+import numpy
+from model import *
+from m1qn3inversion import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.py');
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all');
+
+#control parameters
+md.inversion=m1qn3inversion(md.inversion);
+md.inversion.iscontrol=1;
+md.inversion.control_parameters=['FrictionCoefficient']
+md.inversion.min_parameters=1.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.max_parameters=200.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.maxsteps=2
+md.inversion.maxiter=6
+md.inversion.cost_functions=[102,501]
+md.inversion.cost_functions_coefficients=numpy.ones((md.mesh.numberofvertices,2))
+md.inversion.cost_functions_coefficients[:,1]=2.*10**-7
+md.inversion.vx_obs=md.initialization.vx;
+md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+#Fields and tolerances to track changes
+field_names     =['Gradient','FrictionCoefficient','Pressure','Vel','Vx','Vy']
+field_tolerances=[1e-08,1e-9,1e-10,1e-09,1e-09,1e-09]
+field_values=[\
+	md.results.StressbalanceSolution.Gradient1,\
+	md.results.StressbalanceSolution.FrictionCoefficient,\
+	md.results.StressbalanceSolution.Pressure,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test342.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test342.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test342.m	(revision 21239)
@@ -0,0 +1,24 @@
+%Test Name: SquareSheetTherSteaPlume
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md.basalforcings=plumebasalforcings(md);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.plumex=500000;
+md.basalforcings.plumey=500000;
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=0.;
+md.thermal.requested_outputs={'default','BasalforcingsGeothermalflux'};
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate','BasalforcingsGeothermalflux'};
+field_tolerances={1e-13,1e-8,1e-13};
+field_values={...
+	(md.results.ThermalSolution.Temperature),...
+	(md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate),...
+	(md.results.ThermalSolution.BasalforcingsGeothermalflux),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test350.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test350.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test350.m	(revision 21239)
@@ -0,0 +1,77 @@
+%Test Name: SquareSheetHydrologySommers
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md.mesh.x = md.mesh.x/1000;
+md.mesh.y = md.mesh.y/1000;
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md.transient=deactivateall(md.transient);
+md.transient.ishydrology=1;
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',2);
+
+%Use hydroogy coupled friciton law
+md.friction=frictionsommers(md.friction);
+
+%Change hydrology class to Sommers' model
+md.hydrology=hydrologysommers();
+
+%Change geometry
+md.geometry.base = -.02*md.mesh.x + 20;
+md.geometry.thickness = 300*ones(md.mesh.numberofvertices,1);
+md.geometry.bed = md.geometry.base;
+md.geometry.surface = md.geometry.bed+md.geometry.thickness;
+
+%define the initial water head as being such that the water pressure is 50% of the ice overburden pressure
+md.hydrology.head = 0.5*md.materials.rho_ice/md.materials.rho_freshwater*md.geometry.thickness + md.geometry.base;
+md.hydrology.gap_height = 0.01*ones(md.mesh.numberofelements,1);
+md.hydrology.bump_spacing = 2*ones(md.mesh.numberofelements,1);
+md.hydrology.bump_height = 0.05*ones(md.mesh.numberofelements,1);
+md.hydrology.englacial_input = 0.5*ones(md.mesh.numberofvertices,1);
+md.hydrology.reynolds= 1000*ones(md.mesh.numberofelements,1);
+md.hydrology.spchead = NaN(md.mesh.numberofvertices,1);
+pos=find(md.mesh.vertexonboundary & md.mesh.x==1000);
+md.hydrology.spchead(pos)=md.geometry.base(pos);
+
+%Define velocity
+md.initialization.vx = 10^-6*md.constants.yts*ones(md.mesh.numberofvertices,1);
+md.initialization.vy = zeros(md.mesh.numberofvertices,1);
+
+md.timestepping.time_step=3*3600/md.constants.yts;
+md.timestepping.final_time=.5/365;
+md.materials.rheology_B(:)= (5e-25)^(-1/3);
+
+%Add one moulin and Neumann BC, varying in time
+[a pos] = min(sqrt((md.mesh.x-500).^2+(md.mesh.y-500).^2));
+time=0:md.timestepping.time_step:md.timestepping.final_time;
+md.hydrology.moulin_input = zeros(md.mesh.numberofvertices+1,numel(time));
+md.hydrology.moulin_input(end,:)=time;
+md.hydrology.moulin_input(pos,:)=5*(1-sin(2*pi/(1/365)*time));
+md.hydrology.neumannflux=zeros(md.mesh.numberofelements+1,numel(time));
+md.hydrology.neumannflux(end,:)=time;
+segx = md.mesh.x(md.mesh.segments(:,1)); segy=md.mesh.y(md.mesh.segments(:,1));
+pos = md.mesh.segments(find(segx<1 & segy>400 & segy<600),3);
+md.hydrology.neumannflux(pos,:)=repmat(0.05*(1-sin(2*pi/(1/365)*time)),numel(pos),1);
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names ={...
+	'HydrologyHead1','HydrologyGapHeight1',...
+	'HydrologyHead2','HydrologyGapHeight2',...
+	'HydrologyHead3','HydrologyGapHeight3',...
+	'HydrologyHead4','HydrologyGapHeight4'};
+field_tolerances={...
+	1e-13, 1e-13,...
+	1e-13, 1e-13,...
+	1e-13, 1e-13,...
+	1e-13, 1e-12};
+field_values={...
+	md.results.TransientSolution(1).HydrologyHead, ...
+	md.results.TransientSolution(1).HydrologyGapHeight,...
+	md.results.TransientSolution(2).HydrologyHead, ...
+	md.results.TransientSolution(2).HydrologyGapHeight,...
+	md.results.TransientSolution(3).HydrologyHead, ...
+	md.results.TransientSolution(3).HydrologyGapHeight,...
+	md.results.TransientSolution(4).HydrologyHead, ...
+	md.results.TransientSolution(4).HydrologyGapHeight};
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test4001.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test4001.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test4001.m	(revision 21239)
@@ -0,0 +1,886 @@
+%Test Name: IceOcean
+%ISSM/MITgcm coupled set-up
+%
+%Script control parameters
+steps=1:15;
+final_time=1;
+
+%Organizer
+mkdir Models
+org=organizer('repository','Models/','prefix','IceOcean.','steps',steps);
+
+presentdirectory=pwd; 
+
+% {{{ Parameters: 
+if perform(org,'Parameters'),
+	Nx=20; %number of longitude cells
+	Ny=40; %number of latitude cells
+	Nz=30; %number of MITgcm vertical cells
+	nPx=2; %number of MITgcm processes to use in x direction
+	nPy=4; %number of MITgcm processes to use in y direction
+	xgOrigin=0; %origin of longitude
+	ygOrigin=-80; %origin of latitude
+	dLong=.25; %longitude grid spacing
+	dLat=.05; %latitude grid spacing
+	delZ=30; %thickness of vertical levels
+	icefront_position_ratio=.75; 
+	ice_thickness=100;
+	rho_ice=917;
+	rho_water=1028.14;
+	di=rho_ice/rho_water;
+
+	% MITgcm initial and lateral boundary conditions
+	iniSalt  = 34.4; % initial salinity (PSU)
+	iniTheta = -1.9; % initial potential temperature (deg C)
+	obcSalt  = 34.4; % open boundary salinity (PSU)
+	obcTheta =  1.0; % open boundary potential temperature (deg C)
+	mlDepth  = 120.; % mixed layer depth (m)
+	mlSalt   = 33.4; % open boundary salinity (PSU)
+	mlTheta  = -1.9; % open boundary potential temperature (deg C)
+	obcUvel  = -0.1; % open boundary velocity (m/s)        
+
+	MITgcmDeltaT=600; % MITgcm time step in seconds
+	y2s=31536000; % year to seconds conversion, i.e., seconds per year
+
+	% start_time, final_time, and time_step
+	start_time=0; % in decimal years
+	time_step=1/12; % coupling interval in decimal years
+	async_step_MITgcm_multiplier=1/30; % used to reduce run time for MItgcm
+
+	% bedrock/bathymetry
+	hmax=1000;
+	trough_depth=200;
+	deltah=300;
+	sea_level=1095;
+
+	% issm settings:
+	numlayers=10;
+
+	savedata(org, Nx, Ny, nPx, nPy, Nz, dLong, dLat, delZ, xgOrigin, ...
+		ygOrigin, icefront_position_ratio, ice_thickness, rho_ice, ...
+		rho_water, di, hmax, trough_depth, deltah, sea_level, ...
+		iniSalt, iniTheta, obcSalt, obcTheta, mlDepth, mlSalt, ...
+		mlTheta, obcUvel, start_time, time_step, MITgcmDeltaT, y2s,...
+		numlayers,async_step_MITgcm_multiplier);
+end
+% }}}
+% {{{ Bathymetry: 
+if perform(org,'Bathymetry'),
+
+    loaddata(org,'Parameters');
+    %create lat,long
+    lat=(ygOrigin+dLat/2):dLat:(ygOrigin+Ny*dLat);
+    long=(xgOrigin+dLong/2):dLong:(xgOrigin+Nx*dLong);
+    [lat long]=meshgrid(lat,long);
+
+    longmin=min(long(:));
+    longmax=max(long(:));
+    latmin=min(lat(:));
+    latmax=max(lat(:));
+
+    %create bedrock/bathymetry:
+    bedrock=zeros(Nx,Ny);
+    bedrock=hmax-deltah*tanh(pi*(2*(lat-latmin)./(latmax-latmin)-1))+ ...
+            trough_depth*cos(2*pi*long./(longmax-longmin));
+
+    %save bathymetry file for MITgcm
+    bathymetry=bedrock-sea_level;
+    savedata(org,lat,long,bathymetry);
+
+end
+% }}}
+% {{{ IceSheetGeometry: 
+if perform(org,'IceSheetGeometry'),
+	
+	loaddata(org,'Parameters');
+	loaddata(org,'Bathymetry');
+	latmin=min(lat(:));
+	latmax=max(lat(:));
+
+	%put ice_thickness constant layer of ice over the bathymetry, unless it floats: 
+	s=size(bathymetry);
+	thickness=ice_thickness*ones(s);
+
+	%figure out ice shelf: 
+	pos=find(-di*thickness>bathymetry);
+	iceshelf_mask=zeros(s);
+	iceshelf_mask(pos)=1;
+
+	ice_mask=ones(s);
+	pos=find((lat-latmin)/(latmax-latmin)>(icefront_position_ratio));
+	ice_mask(pos)=0;
+	iceshelf_mask(pos)=0;
+
+	%compute draft of ice shelf: 
+	draft=bathymetry;
+	pos=find(iceshelf_mask);
+	draft(pos)=-di*thickness(pos);
+	pos=find(~ice_mask); 
+	draft(pos)=0;
+
+	savedata(org,ice_mask,iceshelf_mask,draft,thickness);
+end
+% }}}
+
+%Configure MITgcm
+% {{{ GetMITgcm: 
+if perform(org,'GetMITgcm'),
+  system([pwd '/../MITgcm/get_mitgcm.sh']);
+end
+% }}}
+% {{{ BuildMITgcm: 
+if perform(org,'BuildMITgcm'),
+
+    %load data: 
+    loaddata(org,'Parameters');
+
+    %specify computational grid in SIZE.h
+    fidi=fopen('../MITgcm/code/SIZE.h.bak','r');
+    fido=fopen('../MITgcm/code/SIZE.h','w');
+    tline = fgetl(fidi);
+    fprintf(fido,'%s\n',tline);
+    while 1
+        tline = fgetl(fidi);
+        if ~ischar(tline), break, end
+        %do the change here: 
+        if strcmpi(tline,'     &           sNx =  20,'),
+            fprintf(fido,'%s%i%s\n','     &           sNx =  ',round(Nx/nPx),',');
+            continue;
+        end
+        if strcmpi(tline,'     &           sNy =  20,'),
+            fprintf(fido,'%s%i%s\n','     &           sNy =  ',round(Ny/nPy),',');
+            continue;
+        end
+        if strcmpi(tline,'     &           nPx =   1,'),
+            fprintf(fido,'%s%i%s\n','     &           nPx = ',nPx,',');
+            continue;
+        end
+        if strcmpi(tline,'     &           nPy =   2,'),
+            fprintf(fido,'%s%i%s\n','     &           nPy = ',nPy,',');
+            continue;
+        end
+        fprintf(fido,'%s\n',tline);
+    end
+    %close  files
+    fclose(fidi);
+    fclose(fido);
+
+	 system(['../MITgcm/build.sh generic ' pwd]);
+end
+% }}}
+addpath(recursivepath([pwd '/../MITgcm']));
+% {{{ RunUncoupledMITgcm: 
+if perform(org,'RunUncoupledMITgcm'),
+
+    %load data: 
+    loaddata(org,'Parameters');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+	 endtime = round(MITgcmDeltaT * ...
+		 floor(time_step*y2s*async_step_MITgcm_multiplier/MITgcmDeltaT));
+
+    % {{{ prepare MITgcm 
+    % rename previous run directory and create new one
+    if exist ('run.old')
+        !\rm -rf run.old
+    end
+    if exist ('run')
+        !\mv run run.old
+    end
+    !\mkdir run
+    !\cp ../MITgcm/build/mitgcmuv run
+    !\cp ../MITgcm/input/* run
+    
+    %load data: 
+    loaddata(org,'Parameters');
+
+    % initial salinity
+    S=iniSalt*ones(Nx,Ny,Nz);
+    writebin('run/Salt.bin',S);
+    
+    % initial temperature
+    T=iniTheta*ones(Nx,Ny,Nz);
+    writebin('run/Theta.bin',T);
+    
+    % initial velocity
+    Z=zeros(Nx,Ny,Nz);
+    writebin('run/Uvel.bin',Z);
+    writebin('run/Vvel.bin',Z);
+    
+    % initial sea surface height
+    Z=zeros(Nx,Ny);
+    writebin('run/Etan.bin',Z);
+
+    % salinity boundary conditions
+    S=obcSalt*ones(Ny,Nz);
+    thk=delZ*ones(Nz,1);
+    bot=cumsum(thk);
+    ik=find(bot<=mlDepth);
+    S(:,ik)=mlSalt;
+    writebin('run/OBs.bin',S);
+
+    % temperature boundary conditions
+    T=obcTheta*ones(Ny,Nz);
+    T(:,ik)=mlTheta;
+    writebin('run/OBt.bin',T);
+
+    % zonal velocity boundary conditions
+    U=obcUvel*ones(Ny,Nz);
+    writebin('run/OBu.bin',U);
+    
+    % zero boundary conditions
+    Z=zeros(Ny,Nz);
+    writebin('run/zeros.bin',Z);
+
+    % build parameter file data.obcs
+    fidi=fopen('../MITgcm/input/data.obcs','r');
+    fido=fopen('run/data.obcs','w');
+    tline = fgetl(fidi);
+    fprintf(fido,'%s\n',tline);
+    while 1
+        tline = fgetl(fidi);
+        if ~ischar(tline), break, end
+        %do the change here: 
+        if strcmpi(tline,' OB_Iwest = 40*1,'),
+            fprintf(fido,'%s%i%s\n',' OB_Iwest = ',Ny,'*1,');
+            continue;
+        end
+        if strcmpi(tline,' OB_Ieast = 40*-1,'),
+            fprintf(fido,'%s%i%s\n',' OB_Ieast = ',Ny,'*-1,');
+            continue;
+        end
+        fprintf(fido,'%s\n',tline);
+    end
+    %close  files
+    fclose(fidi);
+    fclose(fido);
+
+    %save bathymetry and bedrock in run directory
+    writebin('run/bathymetry.bin',bathymetry);
+    writebin('run/icetopo.bin',draft);
+    % }}}
+
+    %start looping:  
+    for t=start_time:time_step:final_time,
+        disp(['Year: ' num2str(t)])
+        % {{{ generate MITgcm parameter file data 
+        fidi=fopen('../MITgcm/input/data','r');
+        fido=fopen('run/data','w');
+        tline = fgetl(fidi);
+        fprintf(fido,'%s\n',tline);
+        while 1
+            tline = fgetl(fidi);
+            if ~ischar(tline), break, end
+            %do the change here: 
+            if strcmpi(tline,' xgOrigin = 0.0,'),
+                fprintf(fido,'%s%i%s\n',' xgOrigin = ',xgOrigin,',');
+                continue;
+            end
+            if strcmpi(tline,' ygOrigin = -80.0,'),
+                fprintf(fido,'%s%i%s\n',' ygOrigin = ',ygOrigin,',');
+                continue;
+            end
+            if strcmpi(tline,' delX = 20*0.25,'),
+                fprintf(fido,'%s%i*%g%s\n',' delX = ',Nx,dLong,',');
+                continue;
+            end
+            if strcmpi(tline,' delY = 20*0.25,'),
+                fprintf(fido,'%s%i*%g%s\n',' delY = ',Ny,dLat,',');
+                continue;
+            end
+            if strcmpi(tline,' delZ = 30*30.0,'),
+                fprintf(fido,'%s%i*%g%s\n',' delZ = ',Nz,delZ,',');
+                continue;
+            end
+            if strcmpi(tline,' endTime=2592000.,'),
+                fprintf(fido,'%s%i%s\n',' endTime= ',endtime,',');
+                continue;
+            end
+            if strcmpi(tline,' deltaT=1200.0,'),
+                fprintf(fido,'%s%i%s\n',' deltaT= ',MITgcmDeltaT,',');
+                continue;
+            end
+            if strcmpi(tline,' pChkptFreq=2592000.,'),
+                fprintf(fido,'%s%i%s\n',' pChkptFreq= ',endtime,',');
+                continue;
+            end
+            if strcmpi(tline,' taveFreq=2592000.,'),
+                fprintf(fido,'%s%i%s\n',' taveFreq= ',endtime,',');
+                continue;
+            end
+            if strcmpi(tline,' rhoConst=1030.,'),
+                fprintf(fido,'%s%i%s\n',' rhoConst= ',rho_water,',');
+                continue;
+            end
+            if strcmpi(tline,' rhoNil=1030.,'),
+                fprintf(fido,'%s%i%s\n',' rhoNil= ',rho_water,',');
+                continue;
+            end
+            fprintf(fido,'%s\n',tline);
+        end
+        %close  files
+        fclose(fidi);
+        fclose(fido);
+        % }}}
+        % {{{ generate initial MITgcm conditions
+
+        ds=round(endtime/MITgcmDeltaT);
+        if t>start_time
+            % Read pickup file
+            fnm=['run/pickup.' myint2str(ds,10) '.data'];
+            U=readbin(fnm,[Nx Ny Nz],1,'real*8',0);
+            V=readbin(fnm,[Nx Ny Nz],1,'real*8',1);
+            T=readbin(fnm,[Nx Ny Nz],1,'real*8',2);
+            S=readbin(fnm,[Nx Ny Nz],1,'real*8',3);
+            E=readbin(fnm,[Nx Ny],1,'real*8',8*Nz);
+            writebin('run/Salt.bin' ,S);
+            writebin('run/Theta.bin',T);
+            writebin('run/Uvel.bin' ,U);
+            writebin('run/Vvel.bin' ,V);
+            writebin('run/Etan.bin' ,E);
+        end
+
+        % }}}
+        % {{{ system call to run MITgcm
+        cd run
+        eval(['!mpirun -np ' int2str(nPx*nPy) ' ./mitgcmuv']);
+        ts=round((t+time_step)*y2s/MITgcmDeltaT);
+        eval(['!\mv STDERR.0000 STDERR_' myint2str(ts,10) '.data'])
+        eval(['!\mv STDOUT.0000 STDOUT_' myint2str(ts,10) '.data'])
+        eval(['!\cp hFacC.data hFacC_' myint2str(ts,10) '.data'])
+        eval(['!\cp icetopo.bin icetopo_' myint2str(ts,10) '.data'])
+        for fld={'S','T','U','V','Eta', ...
+                 'SHICE_heatFluxtave','SHICE_fwFluxtave'}
+            eval(['!\mv ' fld{1} '.' myint2str(ds,10) '.data ' ...
+                  fld{1} '_' myint2str(ts,10) '.data'])
+        end
+        cd ..
+        % }}}
+    end
+end
+% }}}
+
+%Configure ISSM
+% {{{ CreateMesh: 
+if perform(org,'CreateMesh'),
+	
+	loaddata(org,'Parameters');
+	loaddata(org,'Bathymetry');
+	loaddata(org,'IceSheetGeometry');
+
+	%create model: 
+	md=model();
+	
+	%Grab lat,long from MITgcm: 
+	lat=lat(:);
+	long=long(:);
+
+	%project lat,long: 
+	[x,y]=ll2xy(lat,long,-1);
+
+	index=[];
+	%  C  D
+	%  A  B 
+	for j=1:Ny-1,
+		for i=1:Nx-1, 
+			A=(j-1)*Nx+i;
+			B=(j-1)*Nx+i+1;
+			C=j*Nx+i;
+			D=j*Nx+i+1;
+			index(end+1,:)=[A B C];
+			index(end+1,:)=[C B D];
+		end
+	end
+
+	%fill mesh and model: 
+	md=meshconvert(md,index,x,y);
+	md.mesh.lat=lat;
+	md.mesh.long=long;
+
+	savemodel(org,md);
+
+end
+% }}}
+% {{{ MeshGeometry: 
+if perform(org,'MeshGeometry'),
+	
+	loaddata(org,'Parameters');
+	loaddata(org,'CreateMesh');
+	loaddata(org,'Bathymetry');
+	loaddata(org,'IceSheetGeometry');
+
+	%transfer to vertices: 
+	bathymetry=bathymetry(:);
+	iceshelf_mask=iceshelf_mask(:);
+	ice_mask=ice_mask(:);
+	thickness=thickness(:);
+	draft=draft(:);
+
+	%start filling some of the fields 
+	md.geometry.bed=bathymetry;
+	md.geometry.thickness=thickness;
+	md.geometry.base=md.geometry.bed; 
+	pos=find(iceshelf_mask); md.geometry.base(pos)=draft(pos);
+	md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+	%nothing passes icefront: 
+	pos=find(~ice_mask);
+	md.geometry.thickness(pos)=1;
+	md.geometry.surface(pos)=(1-di)*md.geometry.thickness(pos);
+	md.geometry.base(pos)=-di*md.geometry.thickness(pos);
+
+	%level sets: 
+	md.mask.groundedice_levelset=-ones(md.mesh.numberofvertices,1);
+	md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);
+
+	pos=find(ice_mask); md.mask.ice_levelset(pos)=-1; 
+	pos=find(~iceshelf_mask & ice_mask); md.mask.groundedice_levelset(pos)=1;
+
+	%identify edges of grounded ice: 
+	groundedice_levelset=md.mask.groundedice_levelset;
+	for i=1:md.mesh.numberofelements,
+		m=groundedice_levelset(md.mesh.elements(i,:));
+		if abs(sum(m))~=3,
+			pos=find(m==1); md.mask.groundedice_levelset(md.mesh.elements(i,pos))=0;
+		end
+	end
+
+	%identify edges of ice: 
+	ice_levelset=md.mask.ice_levelset;
+	for i=1:md.mesh.numberofelements,
+		m=ice_levelset(md.mesh.elements(i,:));
+		if abs(sum(m))~=3,
+			pos=find(m==-1); md.mask.ice_levelset(md.mesh.elements(i,pos))=0;
+		end
+	end
+
+	savemodel(org,md);
+end
+% }}}
+% {{{ ParameterizeIce: 
+if perform(org,'ParameterizeIce'),
+	
+	loaddata(org,'Parameters');
+	loaddata(org,'CreateMesh');
+	loaddata(org,'MeshGeometry');
+
+	%miscellaneous
+	md.miscellaneous.name='test4001';
+
+	%initial velocity: 
+	md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+	md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+	md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+
+	%friction: 
+	md.friction.coefficient=30*ones(md.mesh.numberofvertices,1);
+	pos=find(md.mask.groundedice_levelset<=0);
+	md.friction.coefficient(pos)=0;
+	md.friction.p=ones(md.mesh.numberofelements,1);
+	md.friction.q=ones(md.mesh.numberofelements,1);
+
+	%temperatures and surface mass balance:
+	md.initialization.temperature=(273.15-20)*ones(md.mesh.numberofvertices,1);
+	md.initialization.pressure=md.materials.rho_ice*md.constants.g*(md.geometry.surface-md.geometry.base);
+	md.smb.mass_balance = [1*ones(md.mesh.numberofvertices,1); 1];
+
+	%Flow law 
+	md.materials.rheology_B=paterson(md.initialization.temperature);
+	md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+	md.damage.D=zeros(md.mesh.numberofvertices,1);
+	md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+	
+	%the spcs going
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+	md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+	md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1); 
+
+	%deal with water: 
+	pos=find(md.mask.ice_levelset>0); 
+	md.stressbalance.spcvx(pos)=0;
+	md.stressbalance.spcvy(pos)=0;
+	md.stressbalance.spcvz(pos)=0;
+	md.masstransport.spcthickness(pos)=0;
+
+	%get some flux at the ice divide: 
+	pos=find(md.mesh.lat==min(md.mesh.lat));
+	md.stressbalance.spcvy(pos)=200;
+
+	%deal with boundaries, excluding icefront: 
+	vertex_on_boundary=zeros(md.mesh.numberofvertices,1);
+	vertex_on_boundary(md.mesh.segments(:,1:2))=1;
+	pos=find(vertex_on_boundary & md.mask.groundedice_levelset<=0);
+	md.stressbalance.spcvx(pos)=md.initialization.vx(pos);
+	md.stressbalance.spcvy(pos)=md.initialization.vy(pos);
+	md.stressbalance.spcvz(pos)=md.initialization.vz(pos);
+	md.masstransport.spcthickness(pos)=md.geometry.thickness(pos);
+
+	md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+	md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+	md.thermal.spctemperature=[md.initialization.temperature; 1]; %impose observed temperature on surface
+	md.basalforcings.geothermalflux=.064*ones(md.mesh.numberofvertices,1);
+
+	%flow equations: 
+	md=setflowequation(md,'SSA','all');
+
+	savemodel(org,md);
+end
+% }}}
+% {{{ RunUncoupledISSM: 
+if perform(org,'RunUncoupledISSM'),
+	
+	loaddata(org,'Parameters');
+	loaddata(org,'ParameterizeIce');
+
+	%timestepping: 
+	md.timestepping.final_time=final_time;
+	md.timestepping.time_step=time_step;
+	md.timestepping.time_adapt=0;
+	md.transient.isgroundingline=1;
+	md.transient.isthermal=0;
+	md.groundingline.migration='SubelementMigration2';
+
+	md.cluster=generic('name',oshostname(),'np',2);
+	md=solve(md,'Transient');
+
+	savemodel(org,md);
+end
+% }}}
+
+%Run MITgcm/ISSM
+% {{{ RunCoupledMITgcmISSM: 
+if perform(org,'RunCoupledMITgcmISSM'),
+
+	%load data: 
+	loaddata(org,'Parameters');
+	loaddata(org,'ParameterizeIce');
+	loaddata(org,'Bathymetry');
+	loaddata(org,'IceSheetGeometry');
+        endtime = round(MITgcmDeltaT * ...
+         floor(time_step*y2s*async_step_MITgcm_multiplier/MITgcmDeltaT));
+
+        % {{{ prepare MITgcm 
+        % rename previous run directory and create new one
+        if exist ('run.old')
+            !\rm -rf run.old
+        end
+        if exist ('run')
+            !\mv run run.old
+        end
+        !\mkdir run
+		  disp('-------------- file: test4001.m line: 578'); 
+        !\cp ../MITgcm/build/mitgcmuv run
+		  disp('-------------- file: test4001.m line: 580'); 
+        !\cp ../MITgcm/input/* run
+		  disp('-------------- file: test4001.m line: 582'); 
+
+        %load data: 
+        loaddata(org,'Parameters');
+
+        % initial salinity
+        S=iniSalt*ones(Nx,Ny,Nz);
+        writebin('run/Salt.bin',S);
+
+        % initial temperature
+        T=iniTheta*ones(Nx,Ny,Nz);
+        writebin('run/Theta.bin',T);
+
+        % initial velocity
+        Z=zeros(Nx,Ny,Nz);
+        writebin('run/Uvel.bin',Z);
+        writebin('run/Vvel.bin',Z);
+
+        % initial sea surface height
+        Z=zeros(Nx,Ny);
+        writebin('run/Etan.bin',Z);
+
+        % salinity boundary conditions
+        S=obcSalt*ones(Ny,Nz);
+        thk=delZ*ones(Nz,1);
+        bot=cumsum(thk);
+        ik=find(bot<=mlDepth);
+        S(:,ik)=mlSalt;
+        writebin('run/OBs.bin',S);
+
+        % temperature boundary conditions
+        T=obcTheta*ones(Ny,Nz);
+        T(:,ik)=mlTheta;
+        writebin('run/OBt.bin',T);
+
+        % zonal velocity boundary conditions
+        U=obcUvel*ones(Ny,Nz);
+        writebin('run/OBu.bin',U);
+
+        % zero boundary conditions
+        Z=zeros(Ny,Nz);
+        writebin('run/zeros.bin',Z);
+
+        % build parameter file data.obcs
+        fidi=fopen('../MITgcm/input/data.obcs','r');
+        fido=fopen('run/data.obcs','w');
+        tline = fgetl(fidi);
+        fprintf(fido,'%s\n',tline);
+        while 1
+            tline = fgetl(fidi);
+            if ~ischar(tline), break, end
+            %do the change here: 
+            if strcmpi(tline,' OB_Iwest = 40*1,'),
+                fprintf(fido,'%s%i%s\n',' OB_Iwest = ',Ny,'*1,');
+                continue;
+            end
+            if strcmpi(tline,' OB_Ieast = 40*-1,'),
+                fprintf(fido,'%s%i%s\n',' OB_Ieast = ',Ny,'*-1,');
+                continue;
+            end
+            fprintf(fido,'%s\n',tline);
+        end
+        %close  files
+        fclose(fidi);
+        fclose(fido);
+
+        %save bathymetry in MITgcm run directory
+        writebin('run/bathymetry.bin',bathymetry);
+        % }}}
+            
+	% {{{ ISSM settings:
+
+	setenv('DYLD_LIBRARY_PATH', '/usr/local/gfortran/lib') 
+	%timestepping: 
+	md.timestepping.start_time=start_time;
+	md.timestepping.final_time=final_time;
+	md.timestepping.time_step=time_step;
+	md.timestepping.time_adapt=0;
+	md.cluster=generic('name',oshostname(),'np',2);
+	md.results.TransientSolution.Base=md.geometry.base;
+	md.transient.isgroundingline=1;
+	md.transient.isthermal=0;
+	md.groundingline.migration='SubelementMigration2';
+
+	% }}}
+
+	%start looping:
+	results=md.results;
+
+	for t=start_time:time_step:final_time
+            disp(['Year: ' num2str(t)])
+
+	    %send draft from ISSM to MITgcm:
+	    draft=md.results.TransientSolution(end).Base;
+	    pos=find(md.mask.ice_levelset>0); draft(pos)=0;
+            if t>start_time
+                old_draft=readbin('run/icetopo.bin',[Nx,Ny]);
+            end
+            writebin('run/icetopo.bin',draft);
+
+	    % {{{ generate MITgcm parameter file data 
+	    fidi=fopen('../MITgcm/input/data','r');
+	    fido=fopen('run/data','w');
+	    tline = fgetl(fidi);
+	    fprintf(fido,'%s\n',tline);
+            while 1
+                tline = fgetl(fidi);
+                if ~ischar(tline), break, end
+		%do the change here: 
+		if strcmpi(tline,' xgOrigin = 0.0,'),
+		    fprintf(fido,'%s%i%s\n',' xgOrigin = ',xgOrigin,',');
+		    continue;
+		end
+		if strcmpi(tline,' ygOrigin = -80.0,'),
+		    fprintf(fido,'%s%i%s\n',' ygOrigin = ',ygOrigin,',');
+		    continue;
+		end
+		if strcmpi(tline,' delX = 20*0.25,'),
+		    fprintf(fido,'%s%i*%g%s\n',' delX = ',Nx,dLong,',');
+		    continue;
+		end
+		if strcmpi(tline,' delY = 20*0.25,'),
+		    fprintf(fido,'%s%i*%g%s\n',' delY = ',Ny,dLat,',');
+		    continue;
+		end
+                if strcmpi(tline,' delZ = 30*30.0,'),
+                    fprintf(fido,'%s%i*%g%s\n',' delZ = ',Nz,delZ,',');
+                    continue;
+                end
+		if strcmpi(tline,' endTime=2592000.,'),
+		    fprintf(fido,'%s%i%s\n',' endTime= ',endtime,',');
+		    continue;
+		end
+		if strcmpi(tline,' deltaT=1200.0,'),
+		    fprintf(fido,'%s%i%s\n',' deltaT= ',MITgcmDeltaT,',');
+		    continue;
+		end
+		if strcmpi(tline,' pChkptFreq=2592000.,'),
+		    fprintf(fido,'%s%i%s\n',' pChkptFreq= ',endtime,',');
+		    continue;
+		end
+		if strcmpi(tline,' taveFreq=2592000.,'),
+		    fprintf(fido,'%s%i%s\n',' taveFreq= ',endtime,',');
+		    continue;
+		end
+                if strcmpi(tline,' rhoConst=1030.,'),
+                    fprintf(fido,'%s%i%s\n',' rhoConst= ',rho_water,',');
+                    continue;
+                end
+                if strcmpi(tline,' rhoNil=1030.,'),
+                    fprintf(fido,'%s%i%s\n',' rhoNil= ',rho_water,',');
+                    continue;
+                end
+		fprintf(fido,'%s\n',tline);
+	    end
+	    %close  files
+	    fclose(fidi);
+	    fclose(fido);
+	    % }}}
+
+	    % {{{ generate initial MITgcm conditions
+            ds=round(endtime/MITgcmDeltaT);
+            if t>start_time
+                % Read pickup file
+                fnm=['run/pickup.' myint2str(ds,10) '.data'];
+                U=readbin(fnm,[Nx Ny Nz],1,'real*8',0);
+                V=readbin(fnm,[Nx Ny Nz],1,'real*8',1);
+                T=readbin(fnm,[Nx Ny Nz],1,'real*8',2);
+                S=readbin(fnm,[Nx Ny Nz],1,'real*8',3);
+                E=readbin(fnm,[Nx Ny],1,'real*8',8*Nz);
+
+                % find indices of locations where ice shelf retreated
+                h=readbin('run/hFacC.data',[Nx Ny Nz]);
+                msk=sum(h,3);
+                msk(find(msk))=1;
+                [iw jw]=find(msk); % horizontal indices where there is water
+                tmp=reshape(draft,[Nx,Ny])-old_draft;
+                tmp(find(tmp<0))=0;
+                [im jm]=find(tmp); % horizontal indices where there is melt
+                
+                % Extrapolate T/S to locations where ice shelf retreated
+                for i=1:length(im)
+
+                    % first try vertical extrapolation
+                    in=find(h(im(i),jm(i),:));
+                    if length(in)>0;
+                        S(im(i),jm(i),1:min(in)  ) = S(im(i),jm(i),min(in));
+                        T(im(i),jm(i),1:min(in)  ) = T(im(i),jm(i),min(in));
+                        continue
+                    end
+
+                    % if not succesful, use closest neighbor horizontal extrapolation
+                    [y c]=min((iw-im(i)).^2+(jw-jm(i)).^2);
+                    salt=squeeze(S(iw(c),jw(c),:)); % salinity profile of closest neighbor
+                    temp=squeeze(T(iw(c),jw(c),:)); % salinity profile of closest neighbor
+                    in=find(h(iw(c),jw(c),:));
+                    salt(1:min(in))=salt(min(in));
+                    temp(1:min(in))=temp(min(in));
+                    salt(max(in):end)=salt(max(in));
+                    temp(max(in):end)=temp(max(in));
+                    S(im(i),jm(i),:)=salt;
+                    T(im(i),jm(i),:)=temp;
+                end
+
+                % Write initial conditions
+                writebin('run/Salt.bin' ,S);
+                writebin('run/Theta.bin',T);
+                writebin('run/Uvel.bin' ,U);
+                writebin('run/Vvel.bin' ,V);
+                writebin('run/Etan.bin' ,E);
+            end
+            % }}}
+
+            % {{{ system call to run MITgcm 
+            cd run
+            eval(['!mpirun -np ' int2str(nPx*nPy) ' ./mitgcmuv']);
+            ts=round((t+time_step)*y2s/MITgcmDeltaT);
+            eval(['!\mv STDERR.0000 STDERR_' myint2str(ts,10) '.data'])
+            eval(['!\mv STDOUT.0000 STDOUT_' myint2str(ts,10) '.data'])
+            eval(['!\cp hFacC.data hFacC_' myint2str(ts,10) '.data'])
+            eval(['!\cp icetopo.bin icetopo_' myint2str(ts,10) '.data'])
+            for fld={'S','T','U','V','Eta', ...
+                     'SHICE_heatFluxtave','SHICE_fwFluxtave'}
+                eval(['!\mv ' fld{1} '.' myint2str(ds,10) '.data ' ...
+                      fld{1} '_' myint2str(ts,10) '.data'])
+            end
+            cd ..
+            % }}}
+
+	    %get melting rates from MITgcm
+	    %upward fresh water flux (kg/m^2/s):
+	    fnm=['run/SHICE_fwFluxtave_' myint2str(ts,10) '.data'];
+	    melting_rate=readbin(fnm,[Nx Ny]);
+
+	    %send averaged melting rate to ISSM
+	    %downward fresh water flux (m/y):
+	    melting_rate=-melting_rate(:)*y2s/rho_ice;
+		 md.basalforcings.floatingice_melting_rate=melting_rate;
+
+	    % {{{ run ISSM and recover results 
+
+	    md.timestepping.start_time=t;
+	    md.timestepping.final_time=t+time_step;;
+		md=solve(md,'Transient');
+
+		base=md.results.TransientSolution(end).Base;
+		thickness=md.results.TransientSolution(end).Thickness;
+		md.geometry.base=base;
+		md.geometry.thickness=thickness;
+		md.geometry.surface=md.geometry.base+md.geometry.thickness;
+		md.initialization.vx=md.results.TransientSolution(end).Vx;
+		md.initialization.vy=md.results.TransientSolution(end).Vy;
+		md.initialization.vel=md.results.TransientSolution(end).Vel;
+		md.initialization.pressure=md.results.TransientSolution(end).Pressure;
+		md.mask.groundedice_levelset=md.results.TransientSolution(end).MaskGroundediceLevelset;
+		md.results.TransientSolution(end).FloatingiceMeltingRate=md.basalforcings.floatingice_melting_rate;
+		
+		%save these results in the model, otherwise, they'll be wiped out
+		results(end+1)=md.results;
+
+		% }}}
+
+	end
+
+	md.results=results;
+	savemodel(org,md);
+end
+% }}}
+
+%Fields and tolerances to track changes
+fnm=['run/SHICE_fwFluxtave_0000004380.data'];
+melting_rate_1=readbin(fnm,[Nx Ny]);
+fnm=['run/SHICE_fwFluxtave_0000008760.data'];
+melting_rate_2=readbin(fnm,[Nx Ny]);
+fnm=['run/SHICE_fwFluxtave_0000013140.data'];
+melting_rate_3=readbin(fnm,[Nx Ny]);
+fnm=['run/SHICE_fwFluxtave_0000017520.data'];
+melting_rate_4=readbin(fnm,[Nx Ny]);
+field_names     ={'Base1','Melting1','Vx2','Vy2','Thickness2','Base2','MaskGroundediceLevelset2','FloatingiceMeltingRate2',...
+	'Melting2','Vx3','Vy3','Thickness3','Base3','MaskGroundediceLevelset3','FloatingiceMeltingRate3',...
+	'Melting3','Vx4','Vy4','Thickness4','Base4','MaskGroundediceLevelset4','FloatingiceMeltingRate4','Melting4'};
+field_tolerances={2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,...
+	1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13 };
+field_values={...
+	(md.results(1).TransientSolution(end).Base),...
+	(melting_rate_1(:)),...
+	(md.results(2).TransientSolution(end).Vx),...
+	(md.results(2).TransientSolution(end).Vy),...
+	(md.results(2).TransientSolution(end).Thickness),...
+	(md.results(2).TransientSolution(end).Base),...
+	(md.results(2).TransientSolution(end).MaskGroundediceLevelset),...
+	(md.results(2).TransientSolution(end).FloatingiceMeltingRate),...
+	(melting_rate_2(:)),...
+	(md.results(3).TransientSolution(end).Vx),...
+	(md.results(3).TransientSolution(end).Vy),...
+	(md.results(3).TransientSolution(end).Thickness),...
+	(md.results(3).TransientSolution(end).Base),...
+	(md.results(3).TransientSolution(end).MaskGroundediceLevelset),...
+	(md.results(3).TransientSolution(end).FloatingiceMeltingRate),...
+	(melting_rate_3(:)),...
+	(md.results(4).TransientSolution(end).Vx),...
+	(md.results(4).TransientSolution(end).Vy),...
+	(md.results(4).TransientSolution(end).Thickness),...
+	(md.results(4).TransientSolution(end).Base),...
+	(md.results(4).TransientSolution(end).MaskGroundediceLevelset),...
+	(md.results(4).TransientSolution(end).FloatingiceMeltingRate),...
+	(melting_rate_4(:)),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test401.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test401.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test401.m	(revision 21239)
@@ -0,0 +1,17 @@
+%Test Name: SquareSheetShelfStressSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test401.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test401.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test401.py	(revision 21239)
@@ -0,0 +1,26 @@
+#Test Name: SquareSheetShelfStressSSA2d
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vel','Pressure']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test402.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test402.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test402.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetShelfStressSSA3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,4,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test402.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test402.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test402.py	(revision 21239)
@@ -0,0 +1,28 @@
+#Test Name: SquareSheetShelfStressSSA3d
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(4,1.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test403.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test403.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test403.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetShelfStressHO
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={2e-09,2e-09,2e-09,2e-09,2e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test403.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test403.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test403.py	(revision 21239)
@@ -0,0 +1,28 @@
+#Test Name: SquareSheetShelfStressHO
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(5,1.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[2e-09,2e-09,2e-09,2e-09,2e-09]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test404.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test404.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test404.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetShelfStressFS
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'FS','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={6e-07,6e-07,2e-06,1e-06,5e-07};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test404.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test404.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test404.py	(revision 21239)
@@ -0,0 +1,28 @@
+#Test Name: SquareSheetShelfStressFS
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'FS','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[6e-07,6e-07,2e-06,1e-06,5e-07]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test405.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test405.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test405.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetShelfStressMHOPenalties
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'SSA','../Exp/SquareHalfRight.exp','fill','HO','coupling','penalties');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={5e-05,5e-05,5e-05,5e-05,1e-05};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test405.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test405.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test405.py	(revision 21239)
@@ -0,0 +1,28 @@
+#Test Name: SquareSheetShelfStressMHOPenalties
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(5,1.)
+md=setflowequation(md,'SSA','../Exp/SquareHalfRight.exp','fill','HO','coupling','penalties')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[5e-05,5e-05,5e-05,5e-05,1e-05]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test406.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test406.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test406.m	(revision 21239)
@@ -0,0 +1,17 @@
+%Test Name: SquareSheetShelfTherStea
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,4,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0.;
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-5};
+field_values={...
+	(md.results.ThermalSolution.Temperature),...
+	(md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test406.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test406.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test406.py	(revision 21239)
@@ -0,0 +1,26 @@
+#Test Name: SquareSheetShelfTherStea
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(4,1.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.timestepping.time_step=0.
+md=solve(md,'Thermal')
+
+#Fields and tolerances to track changes
+field_names     =['Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-13,1e-5]
+field_values=[\
+	md.results.ThermalSolution.Temperature,\
+	md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test407.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test407.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test407.m	(revision 21239)
@@ -0,0 +1,21 @@
+%Test Name: SquareSheetShelfTherTran
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,4,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test407.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test407.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test407.py	(revision 21239)
@@ -0,0 +1,30 @@
+#Test Name: SquareSheetShelfTherTran
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(4,1.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.transient.isstressbalance=False
+md.transient.ismasstransport=False
+md.transient.issmb=True
+md.transient.isthermal=True
+md.transient.isgroundingline=False
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test408.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test408.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test408.m	(revision 21239)
@@ -0,0 +1,56 @@
+%Test Name: SquareSheetShelfTranSSA3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,1);
+md.transient.isthermal=0;
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb','TotalSmb'};
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1','TotalSmb1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','FloatingArea2','TotalFloatingBmb2','TotalGroundedBmb2','TotalSmb2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','FloatingArea3','TotalFloatingBmb3','TotalGroundedBmb3','TotalSmb3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
+	(md.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
+	(md.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).GroundedArea),...
+	(md.results.TransientSolution(3).FloatingArea),...
+	(md.results.TransientSolution(3).TotalFloatingBmb),...
+	(md.results.TransientSolution(3).TotalGroundedBmb),...
+	(md.results.TransientSolution(3).TotalSmb),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test408.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test408.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test408.py	(revision 21239)
@@ -0,0 +1,61 @@
+#Test Name: SquareSheetShelfTranSSA3d
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.transient.isthermal=False
+md.cluster=generic('name',oshostname(),'np',3)
+md.transient.requested_outputs=['default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb','TotalSmb']
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1','TotalSmb1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','FloatingArea2','TotalFloatingBmb2','TotalGroundedBmb2','TotalSmb2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','FloatingArea3','TotalFloatingBmb3','TotalGroundedBmb3','TotalSmb3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].GroundedArea,\
+	md.results.TransientSolution[0].FloatingArea,\
+	md.results.TransientSolution[0].TotalFloatingBmb,\
+	md.results.TransientSolution[0].TotalGroundedBmb,\
+	md.results.TransientSolution[0].TotalSmb,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].GroundedArea,\
+	md.results.TransientSolution[1].FloatingArea,\
+	md.results.TransientSolution[1].TotalFloatingBmb,\
+	md.results.TransientSolution[1].TotalGroundedBmb,\
+	md.results.TransientSolution[1].TotalSmb,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].GroundedArea,\
+	md.results.TransientSolution[2].FloatingArea,\
+	md.results.TransientSolution[2].TotalFloatingBmb,\
+	md.results.TransientSolution[2].TotalGroundedBmb,\
+	md.results.TransientSolution[2].TotalSmb,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test409.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test409.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test409.m	(revision 21239)
@@ -0,0 +1,53 @@
+%Test Name: SquareSheetShelfTranMHOPenalties
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','../Exp/SquareHalfRight.exp','fill','HO','coupling','penalties');
+md.cluster=generic('name',oshostname(),'np',1);
+md.transient.requested_outputs={'default','GroundedArea'};
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','GroundedArea1', ...
+				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','GroundedArea2', ...
+					   'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','GroundedArea3'};
+field_tolerances={...
+	1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-6,...
+	1e-03,1e-03,1e-02,1e-03,1e-02,1e-04,1e-01,1e-03,1e-01,1e-01,1e-6,...
+	1e-02,1e-02,1e-01,1e-02,1e-01,1e-04,1e-04,1e-04,1e-04,1e-01,1e-6};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).GroundedArea),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test409.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test409.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test409.py	(revision 21239)
@@ -0,0 +1,62 @@
+#Test Name: SquareSheetShelfTranMHOPenalties
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','../Exp/SquareHalfRight.exp','fill','HO','coupling','penalties')
+md.cluster=generic('name',oshostname(),'np',3)
+md.transient.requested_outputs=['default','GroundedArea'];
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','GroundedArea1', \
+				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','GroundedArea2', \
+					   'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','GroundedArea3']
+field_tolerances=[\
+	1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-6,\
+	1e-03,1e-03,1e-02,1e-03,1e-02,1e-04,1e-01,1e-03,1e-01,1e-01,1e-6,\
+	1e-02,1e-02,1e-01,1e-02,1e-01,1e-04,1e-04,1e-04,1e-04,1e-01,1e-6]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[0].GroundedArea,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].GroundedArea,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Temperature,\
+	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[2].GroundedArea,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test410.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test410.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test410.m	(revision 21239)
@@ -0,0 +1,22 @@
+%Test Name: SquareSheetShelfSteaSSA3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0;
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-09,1e-09,1e-08,3e-10,1e-13,5e-10,1e-06};
+field_values={...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test410.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test410.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test410.py	(revision 21239)
@@ -0,0 +1,31 @@
+#Test Name: SquareSheetShelfSteaSSA3d
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(3,2.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.timestepping.time_step=0
+md=solve(md,'Steadystate')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-09,1e-09,1e-08,1e-09,1e-13,5e-10,1e-06]
+field_values=[\
+	md.results.SteadystateSolution.Vx,\
+	md.results.SteadystateSolution.Vy,\
+	md.results.SteadystateSolution.Vz,\
+	md.results.SteadystateSolution.Vel,\
+	md.results.SteadystateSolution.Pressure,\
+	md.results.SteadystateSolution.Temperature,\
+	md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test411.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test411.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test411.m	(revision 21239)
@@ -0,0 +1,23 @@
+%Test Name: SquareSheetShelfSteaHO
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0;
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={2e-09,1e-09,1e-08,1e-09,1e-09,1e-08,1e-05
+};
+field_values={...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test411.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test411.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test411.py	(revision 21239)
@@ -0,0 +1,32 @@
+#Test Name: SquareSheetShelfSteaHO
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(3,2.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.timestepping.time_step=0.
+md=solve(md,'Steadystate')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-09,1e-09,1e-08,1e-09,1e-09,1e-08,1e-05
+]
+field_values=[\
+	md.results.SteadystateSolution.Vx,\
+	md.results.SteadystateSolution.Vy,\
+	md.results.SteadystateSolution.Vz,\
+	md.results.SteadystateSolution.Vel,\
+	md.results.SteadystateSolution.Pressure,\
+	md.results.SteadystateSolution.Temperature,\
+	md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test412.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test412.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test412.m	(revision 21239)
@@ -0,0 +1,57 @@
+%Test Name: SquareSheetShelfDiadSSA3dDakota
+md=triangle(model(),'../Exp/Square.exp',300000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%partitioning
+md.qmu.numberofpartitions=md.mesh.numberofvertices;
+md=partitioner(md,'package','linear','npart',md.qmu.numberofpartitions);
+md.qmu.partition=md.qmu.partition-1;
+md.qmu.isdakota=1;
+
+
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%variables
+md.qmu.variables.rho_ice=normal_uncertain('MaterialsRhoIce',md.materials.rho_ice,0.01);
+md.qmu.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.01);
+
+%responses
+md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%method
+md.qmu.method     =dakota_method('nond_l');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+
+%imperative! 
+md.stressbalance.reltol=10^-5; %tighten for qmu analysese
+
+%solve
+md=solve(md,'Stressbalance','overwrite','y');
+
+%Fields and tolerances to track changes
+md.qmu.results=md.results.dakota;
+md.results.dakota.importancefactors=importancefactors(md,'scaled_FrictionCoefficient','MaxVel')';
+field_names     ={'importancefactors'};
+field_tolerances={1e-10};
+field_values={...
+         md.results.dakota.importancefactors,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test413.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test413.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test413.m	(revision 21239)
@@ -0,0 +1,55 @@
+%Test Name: SquareSheetShelfDiadSSA3dDakotaPart
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%partitioning
+md.qmu.numberofpartitions=20;
+md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');
+md.qmu.partition=md.qmu.partition-1;
+
+%variables
+md.qmu.variables.rho_ice=normal_uncertain('MaterialsRhoIce',md.materials.rho_ice,0.01);
+md.qmu.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.01);
+
+%responses
+md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%method
+md.qmu.method     =dakota_method('nond_l');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+%imperative!
+md.stressbalance.reltol=10^-5; %tighten for qmu analyses
+md.qmu.isdakota=1;
+
+%solve
+md=solve(md,'Stressbalance','overwrite','y');
+
+%Fields and tolerances to track changes
+md.qmu.results=md.results.dakota;
+md.results.dakota.importancefactors=importancefactors(md,'scaled_FrictionCoefficient','MaxVel')';
+field_names     ={'importancefactors'};
+field_tolerances={1e-10};
+field_values={...
+         md.results.dakota.importancefactors,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test414.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test414.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test414.m	(revision 21239)
@@ -0,0 +1,83 @@
+%Test Name: SquareSheetShelfDiadSSA3dDakotaMassFlux
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.materials.rho_ice=10^7; %involved in the mass flux, make it easy
+md.geometry.thickness(:)=1; %make it easy
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%constrain all velocities to 1 m/yr, in the y-direction
+md.stressbalance.spcvx=zeros(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=zeros(md.mesh.numberofvertices,1);
+
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%partitioning
+md.qmu.numberofpartitions=20;
+md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');
+md.qmu.partition=md.qmu.partition-1;
+
+%variables
+md.qmu.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.01);
+
+%responses
+md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux1=response_function('indexed_MassFlux_1',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux2=response_function('indexed_MassFlux_2',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux3=response_function('indexed_MassFlux_3',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux4=response_function('indexed_MassFlux_4',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux5=response_function('indexed_MassFlux_5',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux6=response_function('indexed_MassFlux_6',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux7=response_function('indexed_MassFlux_7',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%mass flux profiles
+md.qmu.mass_flux_profiles={'../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp','../Exp/Square.exp'};
+md.qmu.mass_flux_profile_directory=pwd;
+
+%method
+md.qmu.method     =dakota_method('nond_l');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+md.qmu.isdakota=1;
+md.stressbalance.reltol=10^-5; %tighten for qmu analyses
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+
+%solve
+md=solve(md,'Stressbalance','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+%Fields and tolerances to track changes
+%ok, mass flux of 3 profiles should be -3 Gt/yr -3 Gt/yr and the sum, which is -6 Gt/yr
+%we recover those mass fluxes through the mean of the response.
+%also, we recover the max velo, which should be 1m/yr. 
+%we put all that data in the moments, which we will use to test for success.
+%also, check that the stddev are 0.
+md.results.dakota.moments=[];
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).mean];
+end
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).stddev];
+end
+field_names     ={'moments'};
+field_tolerances={1e-11};
+field_values={...
+         md.results.dakota.moments,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test415.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test415.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test415.m	(revision 21239)
@@ -0,0 +1,39 @@
+%Test Name: SquareSheetShelfCMDragSteaSSA3d
+md=triangle(model(),'../Exp/Square.exp',170000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[103  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.timestepping.time_step=0.;
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy','Vz','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-09,1e-9,2e-10,1e-13,1e-09,1e-09,1e-09,1e-8,1e-09,1e-6};
+field_values={...
+	(md.results.SteadystateSolution.Gradient1),...
+	md.results.SteadystateSolution.J,...
+	(md.results.SteadystateSolution.FrictionCoefficient),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate)
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test415.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test415.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test415.py	(revision 21239)
@@ -0,0 +1,50 @@
+#Test Name: SquareSheetShelfCMDragSteaSSA3d
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',170000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+
+#control parameters
+md.inversion.iscontrol=1
+md.inversion.control_parameters=['FrictionCoefficient']
+md.inversion.min_parameters=1.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.max_parameters=200.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.nsteps=2
+md.inversion.cost_functions=[103,501]
+md.inversion.cost_functions_coefficients=numpy.ones((md.mesh.numberofvertices,2))
+md.inversion.cost_functions_coefficients[:,1]=2.*10**-7
+md.inversion.gradient_scaling=3.*numpy.ones((md.inversion.nsteps,1))
+md.inversion.maxiter_per_step=2*numpy.ones((md.inversion.nsteps,1))
+md.inversion.step_threshold=0.3*numpy.ones((md.inversion.nsteps,1))
+md.timestepping.time_step=0.
+md.inversion.vx_obs=md.initialization.vx
+md.inversion.vy_obs=md.initialization.vy
+
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Steadystate')
+
+#Fields and tolerances to track changes
+field_names     =['Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy','Vz','Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-9,1e-9,2e-10,1e-13,1e-09,1e-09,1e-09,1e-8,1e-09,1e-6]
+field_values=[\
+	md.results.SteadystateSolution.Gradient1,\
+	md.results.SteadystateSolution.J,\
+	md.results.SteadystateSolution.FrictionCoefficient,\
+	md.results.SteadystateSolution.Pressure,\
+	md.results.SteadystateSolution.Vel,\
+	md.results.SteadystateSolution.Vx,\
+	md.results.SteadystateSolution.Vy,\
+	md.results.SteadystateSolution.Vz,\
+	md.results.SteadystateSolution.Temperature,\
+	md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test416.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test416.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test416.m	(revision 21239)
@@ -0,0 +1,39 @@
+%Test Name: SquareSheetShelfCMDragSteaHO
+md=triangle(model(),'../Exp/Square.exp',170000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[102  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2*10^-7;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.timestepping.time_step=0.;
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy','Vz','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-08,1e-07,1e-08,1e-08,1e-08,1e-08,1e-08,1e-07,1e-08,1e-05};
+field_values={...
+	(md.results.SteadystateSolution.Gradient1),...
+	md.results.SteadystateSolution.J,...
+	(md.results.SteadystateSolution.FrictionCoefficient),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate)
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test416.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test416.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test416.py	(revision 21239)
@@ -0,0 +1,50 @@
+#Test Name: SquareSheetShelfCMDragSteaHO
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',170000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+
+#control parameters
+md.inversion.iscontrol=1
+md.inversion.control_parameters=['FrictionCoefficient']
+md.inversion.min_parameters=1.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.max_parameters=200.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.nsteps=2
+md.inversion.cost_functions=[102,501]
+md.inversion.cost_functions_coefficients=numpy.ones((md.mesh.numberofvertices,2))
+md.inversion.cost_functions_coefficients[:,1]=2.*10**-7
+md.inversion.gradient_scaling=3.*numpy.ones((md.inversion.nsteps,1))
+md.inversion.maxiter_per_step=2*numpy.ones((md.inversion.nsteps,1))
+md.inversion.step_threshold=0.3*numpy.ones((md.inversion.nsteps,1))
+md.timestepping.time_step=0.
+md.inversion.vx_obs=md.initialization.vx
+md.inversion.vy_obs=md.initialization.vy
+
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Steadystate')
+
+#Fields and tolerances to track changes
+field_names     =['Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy','Vz','Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-08,1e-07,1e-08,1e-08,1e-08,1e-08,1e-08,1e-07,1e-08,1e-05]
+field_values=[\
+	md.results.SteadystateSolution.Gradient1,\
+	md.results.SteadystateSolution.J,\
+	md.results.SteadystateSolution.FrictionCoefficient,\
+	md.results.SteadystateSolution.Pressure,\
+	md.results.SteadystateSolution.Vel,\
+	md.results.SteadystateSolution.Vx,\
+	md.results.SteadystateSolution.Vy,\
+	md.results.SteadystateSolution.Vz,\
+	md.results.SteadystateSolution.Temperature,\
+	md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test417.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test417.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test417.m	(revision 21239)
@@ -0,0 +1,89 @@
+%Test Name: SquareSheetShelfDiadSSA3dDakotaSamp
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.materials.rho_ice=10^7; %involved in the mass flux, make it easy
+md.geometry.thickness(:)=1; %make it easy
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%constrain all velocities to 1 m/yr, in the y-direction
+md.stressbalance.spcvx(:)=0;
+md.stressbalance.spcvy(:)=1;
+md.stressbalance.spcvz(:)=0;
+
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+md.qmu.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.01);
+
+md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux1=response_function('indexed_MassFlux_1',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux2=response_function('indexed_MassFlux_2',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux3=response_function('indexed_MassFlux_3',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux4=response_function('indexed_MassFlux_4',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux5=response_function('indexed_MassFlux_5',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux6=response_function('indexed_MassFlux_6',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux7=response_function('indexed_MassFlux_7',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%mass flux profiles
+md.qmu.mass_flux_profiles={'../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp','../Exp/Square.exp'};
+md.qmu.mass_flux_profile_directory=pwd;
+
+
+%%  nond_sampling study
+
+md.qmu.method     =dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+'seed',1234,...
+'samples',20,...
+'sample_type','lhs');
+
+%%  a variety of parameters
+md.qmu.params.direct=true;
+md.qmu.params.analysis_components='';
+md.qmu.params.tabular_graphics_data=true;
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+
+%partitioning
+md.qmu.numberofpartitions=20;
+md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');
+md.qmu.partition=md.qmu.partition-1;
+md.qmu.isdakota=1;
+
+md.stressbalance.reltol=10^-5; %tighten for qmu analyses
+
+md=solve(md,'Stressbalance','overwrite','y');
+
+%Fields and tolerances to track changes
+md.qmu.results=md.results.dakota;
+
+%ok, mass flux of 3 profiles should be -3 Gt/yr -3 Gt/yr and the sum, which is -6 Gt/yr
+%we recover those mass fluxes through the mean of the response.
+%also, we recover the max velo, which should be 1m/yr. 
+%we put all that data in the montecarlo field, which we will use to test for success.
+%also, check that the stddev are 0.
+md.results.dakota.montecarlo=[];
+for i=1:8,
+	md.results.dakota.montecarlo=[md.results.dakota.montecarlo md.results.dakota.dresp_out(i).mean];
+end
+for i=1:8,
+	md.results.dakota.montecarlo=[md.results.dakota.montecarlo md.results.dakota.dresp_out(i).stddev];
+end
+field_names     ={'montecarlo'};
+field_tolerances={1e-11};
+field_values={...
+         md.results.dakota.montecarlo,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test418.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test418.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test418.m	(revision 21239)
@@ -0,0 +1,22 @@
+%Test Name: SquareSheetShelfDiadSSA3dDakotaAreaAverage
+%test partitioning, and partition averaging
+md=triangle(model(),'../Exp/Square.exp',30000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%partitioning
+md.qmu.numberofpartitions=100;
+md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions);
+md.qmu.partition=md.qmu.partition-1;
+
+vector=(1:1:md.mesh.numberofvertices)';
+vector_on_partition=AreaAverageOntoPartition(md,vector);
+vector_on_nodes=vector_on_partition(md.qmu.partition+1);
+
+field_names     ={'vector_on_nodes'};
+field_tolerances={1e-11};
+field_values={...
+         vector_on_nodes,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test419.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test419.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test419.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetShelfStressSSAHOTiling
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'SSA','../Exp/SquareHalfRight.exp','fill','HO');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={2e-09,1e-09,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test419.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test419.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test419.py	(revision 21239)
@@ -0,0 +1,28 @@
+#Test Name: SquareSheetShelfStressSSAHOTiling
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(5,1.)
+md=setflowequation(md,'SSA','../Exp/SquareHalfRight.exp','fill','HO')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[2e-09,1e-09,1e-09,1e-09,1e-09]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test420.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test420.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test420.m	(revision 21239)
@@ -0,0 +1,62 @@
+%Test Name: SquareSheetShelfDakotaScaledResponse
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%partitioning
+md.qmu.numberofpartitions=10;
+md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions);
+md.qmu.partition=md.qmu.partition-1;
+md.qmu.isdakota=1;
+
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%variables
+md.qmu.variables.rho_ice=normal_uncertain('MaterialsRhoIce',md.materials.rho_ice,0.01);
+
+%responses
+md.qmu.responses.MaxVel=response_function('scaled_Thickness',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%method
+md.qmu.method     =dakota_method('nond_l');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+
+
+%imperative! 
+md.stressbalance.reltol=10^-5; %tighten for qmu analysese
+
+%solve
+md=solve(md,'Stressbalance','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+%test on thickness
+h=zeros(md.qmu.numberofpartitions,1);
+for i=1:md.qmu.numberofpartitions,
+	h(i)=md.qmu.results.dresp_out(i).mean;
+end
+
+%project onto grid
+thickness=h(md.qmu.partition+1);
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-10};
+field_values={thickness};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test421.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test421.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test421.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetShelfStressHOFS3dTiling
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'FS','../Exp/SquareHalfRight.exp','fill','HO');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={6e-07,6e-07,2e-05,6e-07,6e-07};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test421.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test421.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test421.py	(revision 21239)
@@ -0,0 +1,28 @@
+#Test Name: SquareSheetShelfStressHOFS3dTiling
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(5,1.)
+md=setflowequation(md,'FS','../Exp/SquareHalfRight.exp','fill','HO')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[6e-07,6e-07,2e-05,6e-07,6e-07]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test422.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test422.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test422.m	(revision 21239)
@@ -0,0 +1,20 @@
+%Test Name: SquareSheetShelfStressSSAFS3dTiling
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'FS','../Exp/SquareHalfRight.exp','fill','SSA');
+md.cluster=generic('name',oshostname(),'np',3);
+md.stressbalance.reltol=0.4;
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={4e-07,4e-07,2e-06,4e-07,5e-07};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test422.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test422.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test422.py	(revision 21239)
@@ -0,0 +1,29 @@
+#Test Name: SquareSheetShelfStressSSAFS3dTiling
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(5,1.)
+md=setflowequation(md,'FS','../Exp/SquareHalfRight.exp','fill','SSA')
+md.cluster=generic('name',oshostname(),'np',3)
+md.stressbalance.reltol=0.4
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[4e-07,4e-07,2e-06,4e-07,5e-07]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test423.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test423.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test423.m	(revision 21239)
@@ -0,0 +1,52 @@
+%Test Name: RoundSheetShelfGLMigrationSSA2d
+radius=1.e6;
+shelfextent=2.e5;
+
+md=roundmesh(model(),radius,50000.);
+%fix center node to 0,0
+rad=sqrt(md.mesh.x.^2+md.mesh.y.^2);
+pos=find(rad==min(rad));
+md.mesh.x(pos)=0.; md.mesh.y(pos)=0.; %the closest node to the center is changed to be exactly at the center
+xelem=md.mesh.x(md.mesh.elements)*[1;1;1]/3.;
+yelem=md.mesh.y(md.mesh.elements)*[1;1;1]/3.;
+rad=sqrt(xelem.^2+yelem.^2);
+flags=zeros(md.mesh.numberofelements,1);
+pos=find(rad>=(radius-shelfextent));
+flags(pos)=1;
+md=setmask(md,flags,''); 
+md=parameterize(md,'../Par/RoundSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.transient.isthermal=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+
+%test different grounding line dynamics.
+md.groundingline.migration='AggressiveMigration';
+md=solve(md,'Transient');
+element_on_iceshelf_agressive=(md.results.TransientSolution.MaskGroundediceLevelset);
+vel_agressive=(md.results.TransientSolution.Vel);
+
+md.groundingline.migration='SoftMigration';
+md=solve(md,'Transient');
+element_on_iceshelf_soft=(md.results.TransientSolution.MaskGroundediceLevelset);
+vel_soft=(md.results.TransientSolution.Vel);
+
+md.mask.groundedice_levelset=md.geometry.thickness + md.materials.rho_water/md.materials.rho_ice*md.geometry.bed;
+md.groundingline.migration='SubelementMigration';
+md=solve(md,'Transient');
+element_on_iceshelf_subelement=(md.results.TransientSolution.MaskGroundediceLevelset);
+vel_subelement=(md.results.TransientSolution.Vel);
+
+md.groundingline.migration='SubelementMigration2';
+md=solve(md,'Transient');
+element_on_iceshelf_subelement2=(md.results.TransientSolution.MaskGroundediceLevelset);
+vel_subelement2=(md.results.TransientSolution.Vel);
+
+%Fields and tolerances to track changes
+field_names     ={'ElementOnIceShelfAggressive','VelAggressive','ElementOnIceShelfSoft','VelSoft','ElementOnIceShelfSubelement','VelSubelement','ElementOnIceShelfSubelement2','VelSubelement2'};
+field_tolerances={1e-13,2e-12,1e-13,2e-12,1e-13,3e-12,1e-13,2e-12};
+field_values={element_on_iceshelf_agressive,vel_agressive,element_on_iceshelf_soft,vel_soft,element_on_iceshelf_subelement,vel_subelement,element_on_iceshelf_subelement2,vel_subelement2};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test423.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test423.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test423.py	(revision 21239)
@@ -0,0 +1,62 @@
+#Test Name: RoundSheetShelfGLMigrationSSA2d
+import numpy
+from model import *
+from roundmesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+radius=1.e6
+shelfextent=2.e5
+
+md=roundmesh(model(),radius,50000.)
+#fix center node to 0,0
+rad=numpy.sqrt(md.mesh.x**2+md.mesh.y**2)
+pos=numpy.argmin(rad)
+md.mesh.x[pos]=0.
+md.mesh.y[pos]=0.    #the closest node to the center is changed to be exactly at the center
+xelem=numpy.mean(md.mesh.x[md.mesh.elements.astype(int)-1],axis=1)
+yelem=numpy.mean(md.mesh.y[md.mesh.elements.astype(int)-1],axis=1)
+rad=numpy.sqrt(xelem**2+yelem**2)
+flags=numpy.zeros(md.mesh.numberofelements)
+pos=numpy.nonzero(rad>=(radius-shelfextent))
+flags[pos]=1
+md=setmask(md,flags,'') 
+md=parameterize(md,'../Par/RoundSheetShelf.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.transient.isthermal=False
+md.transient.ismasstransport=False
+md.transient.issmb=True
+md.transient.isstressbalance=True
+md.transient.isgroundingline=True
+
+#test different grounding line dynamics.
+md.groundingline.migration='AggressiveMigration'
+md=solve(md,'Transient')
+element_on_iceshelf_agressive=md.results.TransientSolution[0].MaskGroundediceLevelset
+vel_agressive=md.results.TransientSolution[0].Vel
+
+md.groundingline.migration='SoftMigration'
+md=solve(md,'Transient')
+element_on_iceshelf_soft=md.results.TransientSolution[0].MaskGroundediceLevelset
+vel_soft=md.results.TransientSolution[0].Vel
+
+md.mask.groundedice_levelset=md.geometry.thickness + md.materials.rho_water/md.materials.rho_ice*md.geometry.bed
+md.groundingline.migration='SubelementMigration'
+md=solve(md,'Transient')
+element_on_iceshelf_subelement=md.results.TransientSolution[0].MaskGroundediceLevelset
+vel_subelement=md.results.TransientSolution[0].Vel
+
+md.groundingline.migration='SubelementMigration2'
+md=solve(md,'Transient')
+element_on_iceshelf_subelement2=md.results.TransientSolution[0].MaskGroundediceLevelset
+vel_subelement2=md.results.TransientSolution[0].Vel
+
+#Fields and tolerances to track changes
+field_names     =['ElementOnIceShelfAggressive','VelAggressive','ElementOnIceShelfSoft','VelSoft','ElementOnIceShelfSubelement','VelSubelement','ElementOnIceShelfSubelement2','VelSubelement2']
+field_tolerances=[1e-13,2e-13,1e-13,2e-13,1e-13,2e-13,1e-13,2e-13]
+field_values=[element_on_iceshelf_agressive,vel_agressive,element_on_iceshelf_soft,vel_soft,element_on_iceshelf_subelement,vel_subelement,element_on_iceshelf_subelement2,vel_subelement2]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test424.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test424.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test424.m	(revision 21239)
@@ -0,0 +1,47 @@
+%Test Name: SquareSheetShelfGroundingLine2dAggressive
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.initialization.vx(:)=0.;
+md.initialization.vy(:)=0.;
+md.geometry.base=-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.bed =-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.thickness(:)=1000.;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md.smb.mass_balance(:)=100.;
+md.transient.isstressbalance=0;
+md.transient.isgroundingline=1;
+md.groundingline.migration='AggressiveMigration';
+md.transient.requested_outputs={'IceVolume','IceVolumeAboveFloatation'};
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Bed1','Surface1','Thickness1','Floatingice1','IceVolume1','IceVolumeAboveFloatation1',...
+	'Bed2','Surface2','Thickness2','Floatingice2','IceVolume2','IceVolumeAboveFloatation2',...
+	'Bed3','Surface3','Thickness3','Floatingice3','IceVolume3','IceVolumeAboveFloatation3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).MaskGroundediceLevelset),...
+	(md.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(1).IceVolumeAboveFloatation),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).MaskGroundediceLevelset),...
+	(md.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(2).IceVolumeAboveFloatation),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).MaskGroundediceLevelset),...
+	(md.results.TransientSolution(3).IceVolume),...
+	(md.results.TransientSolution(3).IceVolumeAboveFloatation),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test424.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test424.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test424.py	(revision 21239)
@@ -0,0 +1,56 @@
+#Test Name: SquareSheetShelfGroundingLine2dAggressive
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md=setflowequation(md,'SSA','all')
+md.initialization.vx[:]=0.
+md.initialization.vy[:]=0.
+md.geometry.base=-700.-abs(md.mesh.y.reshape(-1,1)-500000.)/1000.
+md.geometry.bed =-700.-abs(md.mesh.y.reshape(-1,1)-500000.)/1000.
+md.geometry.thickness[:]=1000.
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+md.smb.mass_balance[:]=100.
+md.transient.isstressbalance=False
+md.transient.isgroundingline=True
+md.groundingline.migration='AggressiveMigration'
+md.transient.requested_outputs=['IceVolume','IceVolumeAboveFloatation']
+
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Bed1','Surface1','Thickness1','Floatingice1','IceVolume1','IceVolumeAboveFloatation1',\
+	'Bed2','Surface2','Thickness2','Floatingice2','IceVolume2','IceVolumeAboveFloatation2',\
+	'Bed3','Surface3','Thickness3','Floatingice3','IceVolume3','IceVolumeAboveFloatation3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].MaskGroundediceLevelset,\
+	md.results.TransientSolution[0].IceVolume,\
+	md.results.TransientSolution[0].IceVolumeAboveFloatation,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].MaskGroundediceLevelset,\
+	md.results.TransientSolution[1].IceVolume,\
+	md.results.TransientSolution[1].IceVolumeAboveFloatation,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].MaskGroundediceLevelset,\
+	md.results.TransientSolution[2].IceVolume,\
+	md.results.TransientSolution[2].IceVolumeAboveFloatation,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test425.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test425.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test425.m	(revision 21239)
@@ -0,0 +1,40 @@
+%Test Name: SquareSheetShelfGroundingLine2dSoft
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.initialization.vx(:)=0.;
+md.initialization.vy(:)=0.;
+md.geometry.base=-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.bed =-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.thickness(:)=1300.;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md.smb.mass_balance(:)=-150.;
+md.transient.isstressbalance=0;
+md.transient.isgroundingline=1;
+md.groundingline.migration='SoftMigration';
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Bed1','Surface1','Thickness1','Floatingice1',...
+	'Bed2','Surface2','Thickness2','Floatingice2',...
+	'Bed3','Surface3','Thickness3','Floatingice3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).MaskGroundediceLevelset),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).MaskGroundediceLevelset),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).MaskGroundediceLevelset),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test425.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test425.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test425.py	(revision 21239)
@@ -0,0 +1,49 @@
+#Test Name: SquareSheetShelfGroundingLine2dSoft
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md=setflowequation(md,'SSA','all')
+md.initialization.vx[:]=0.
+md.initialization.vy[:]=0.
+md.geometry.base=-700.-abs(md.mesh.y.reshape(-1,1)-500000.)/1000.
+md.geometry.bed =-700.-abs(md.mesh.y.reshape(-1,1)-500000.)/1000.
+md.geometry.thickness[:]=1300.
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+md.smb.mass_balance[:]=-150.
+md.transient.isstressbalance=False
+md.transient.isgroundingline=True
+md.groundingline.migration='SoftMigration'
+
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Bed1','Surface1','Thickness1','Floatingice1',\
+	'Bed2','Surface2','Thickness2','Floatingice2',\
+	'Bed3','Surface3','Thickness3','Floatingice3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,\
+	1e-13,1e-13,1e-13,1e-13,\
+	1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].MaskGroundediceLevelset,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].MaskGroundediceLevelset,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].MaskGroundediceLevelset,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test426.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test426.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test426.m	(revision 21239)
@@ -0,0 +1,48 @@
+%Test Name: SquareSheetShelfGroundingLine3dAggressive
+md=triangle(model(),'../Exp/Square.exp',350000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.initialization.vx(:)=0.;
+md.initialization.vy(:)=0.;
+md.geometry.base=-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.bed =-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.thickness(:)=1000.;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md.smb.mass_balance(:)=100.;
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.transient.isstressbalance=0;
+md.transient.isgroundingline=1;
+md.groundingline.migration='AggressiveMigration';
+md.transient.requested_outputs={'IceVolume','IceVolumeAboveFloatation'};
+md.cluster=generic('name',oshostname(),'np',3);
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Bed1','Surface1','Thickness1','Floatingice1','IceVolume1','IceVolumeAboveFloatation1',...
+	'Bed2','Surface2','Thickness2','Floatingice2','IceVolume2','IceVolumeAboveFloatation2',...
+	'Bed3','Surface3','Thickness3','Floatingice3','IceVolume3','IceVolumeAboveFloatation3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-11,1e-10,1e-11,3e-11,2e-12,5e-12,...
+	1e-10,1e-10,1e-10,5e-11,2e-12,5e-12};
+field_values={...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).MaskGroundediceLevelset),...
+	(md.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(1).IceVolumeAboveFloatation),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).MaskGroundediceLevelset),...
+	(md.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(2).IceVolumeAboveFloatation),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).MaskGroundediceLevelset),...
+	(md.results.TransientSolution(3).IceVolume),...
+	(md.results.TransientSolution(3).IceVolumeAboveFloatation),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test426.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test426.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test426.py	(revision 21239)
@@ -0,0 +1,59 @@
+#Test Name: SquareSheetShelfGroundingLine3dAggressive
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',350000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.initialization.vx[:]=0.
+md.initialization.vy[:]=0.
+md.geometry.base=-700.-abs(md.mesh.y.reshape(-1,1)-500000.)/1000.
+md.geometry.bed =-700.-abs(md.mesh.y.reshape(-1,1)-500000.)/1000.
+md.geometry.thickness[:]=1000.
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+md.smb.mass_balance[:]=100.
+md.extrude(3,1.);
+md=setflowequation(md,'SSA','all');
+md.transient.isstressbalance=False
+md.transient.isgroundingline=True
+md.groundingline.migration='AggressiveMigration'
+md.transient.requested_outputs=['IceVolume','IceVolumeAboveFloatation']
+md.cluster=generic('name',oshostname(),'np',3)
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Bed1','Surface1','Thickness1','Floatingice1','IceVolume1','IceVolumeAboveFloatation1',\
+	'Bed2','Surface2','Thickness2','Floatingice2','IceVolume2','IceVolumeAboveFloatation2',\
+	'Bed3','Surface3','Thickness3','Floatingice3','IceVolume3','IceVolumeAboveFloatation3',]
+
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+	1e-11,1e-10,1e-11,3e-11,2e-12,5e-12,\
+	1e-10,1e-10,1e-10,5e-11,2e-12,5e-12]
+
+field_values=[\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].MaskGroundediceLevelset,\
+	md.results.TransientSolution[0].IceVolume,\
+	md.results.TransientSolution[0].IceVolumeAboveFloatation,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].MaskGroundediceLevelset,\
+	md.results.TransientSolution[1].IceVolume,\
+	md.results.TransientSolution[1].IceVolumeAboveFloatation,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].MaskGroundediceLevelset,\
+	md.results.TransientSolution[2].IceVolume,\
+	md.results.TransientSolution[2].IceVolumeAboveFloatation,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test427.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test427.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test427.m	(revision 21239)
@@ -0,0 +1,41 @@
+%Test Name: SquareSheetShelfGroundingLine3dSoft
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.initialization.vx(:)=0.;
+md.initialization.vy(:)=0.;
+md.geometry.base=-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.bed =-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.thickness(:)=1300;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=setflowequation(md,'SSA','all');
+md=extrude(md,3,1.);
+
+md.smb.mass_balance(:)=-150;
+md.transient.isstressbalance=0;
+md.transient.isgroundingline=1;
+md.groundingline.migration='SoftMigration';
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Bed1','Surface1','Thickness1','Floatingice1',...
+	'Bed2','Surface2','Thickness2','Floatingice2',...
+	'Bed3','Surface3','Thickness3','Floatingice3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,...
+	5e-12,3e-12,7e-12,2e-11,...
+	1e-10,5e-11,1e-10,7e-10};
+field_values={...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).MaskGroundediceLevelset),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).MaskGroundediceLevelset),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).MaskGroundediceLevelset),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test427.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test427.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test427.py	(revision 21239)
@@ -0,0 +1,50 @@
+#Test Name: SquareSheetShelfGroundingLine3dSoft
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.initialization.vx[:]=0.
+md.initialization.vy[:]=0.
+md.geometry.base=-700.-abs(md.mesh.y.reshape(-1,1)-500000.)/1000.
+md.geometry.bed =-700.-abs(md.mesh.y.reshape(-1,1)-500000.)/1000.
+md.geometry.thickness[:]=1300
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+md=setflowequation(md,'SSA','all')
+md.extrude(3,1.)
+
+md.smb.mass_balance[:]=-150
+md.transient.isstressbalance=False
+md.transient.isgroundingline=True
+md.groundingline.migration='SoftMigration'
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Bed1','Surface1','Thickness1','Floatingice1',\
+	'Bed2','Surface2','Thickness2','Floatingice2',\
+	'Bed3','Surface3','Thickness3','Floatingice3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,\
+	5e-12,3e-12,7e-12,2e-11,\
+	1e-10,5e-11,1e-10,7e-10]
+field_values=[\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].MaskGroundediceLevelset,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].MaskGroundediceLevelset,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].MaskGroundediceLevelset,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test428.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test428.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test428.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetShelfStressSSA2dNewton
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.stressbalance.isnewton=1;
+md.stressbalance.restol=0.0001;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test428.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test428.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test428.py	(revision 21239)
@@ -0,0 +1,28 @@
+#Test Name: SquareSheetShelfStressSSA2dNewton
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md=setflowequation(md,'SSA','all')
+md.stressbalance.isnewton=1
+md.stressbalance.restol=0.0001
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vel','Pressure']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test429.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test429.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test429.m	(revision 21239)
@@ -0,0 +1,21 @@
+%Test Name: SquareSheetShelfStressHONewton
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'HO','all');
+md.stressbalance.isnewton=1;
+md.stressbalance.restol=0.0001;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={2e-06,1e-06,1e-06,1e-06,1e-06};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test429.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test429.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test429.py	(revision 21239)
@@ -0,0 +1,30 @@
+#Test Name: SquareSheetShelfStressHONewton
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(5,1.)
+md=setflowequation(md,'HO','all')
+md.stressbalance.isnewton=1
+md.stressbalance.restol=0.0001
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[2e-06,2e-06,1e-06,2e-06,1e-06]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test431.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test431.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test431.m	(revision 21239)
@@ -0,0 +1,27 @@
+%Test Name: SquareSheetShelfSteaEnthalpySSA3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0.;
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','Waterfraction','Enthalpy'};
+field_tolerances={8e-4,5e-4,5e-4,5e-4,1e-13,1e-4,5e-4,5e-4};
+field_values={...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.Waterfraction),...
+	(md.results.SteadystateSolution.Enthalpy),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test431.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test431.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test431.py	(revision 21239)
@@ -0,0 +1,36 @@
+#Test Name: SquareSheetShelfSteaEnthalpySSA3d
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(3,2.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.timestepping.time_step=0.
+md.thermal.isenthalpy=1
+md.thermal.isdynamicbasalspc=1
+md.initialization.waterfraction=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.watercolumn=numpy.zeros((md.mesh.numberofvertices,1))
+md=solve(md,'Steadystate')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure','Temperature','Waterfraction','Enthalpy']
+field_tolerances=[8e-4,5e-4,5e-4,5e-4,1e-13,1e-4,5e-4,5e-4]
+field_values=[\
+	md.results.SteadystateSolution.Vx,\
+	md.results.SteadystateSolution.Vy,\
+	md.results.SteadystateSolution.Vz,\
+	md.results.SteadystateSolution.Vel,\
+	md.results.SteadystateSolution.Pressure,\
+	md.results.SteadystateSolution.Temperature,\
+	md.results.SteadystateSolution.Waterfraction,\
+	md.results.SteadystateSolution.Enthalpy,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test432.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test432.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test432.m	(revision 21239)
@@ -0,0 +1,26 @@
+%Test Name: SquareSheetShelfSteaEnthalpyHO
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0.;
+md.thermal.isenthalpy=1;
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','Waterfraction','Enthalpy'};
+field_tolerances={3e-09,1e-09,1e-09,1e-09,1e-13,1e-10,3.2e-10,3e-9};
+field_values={...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.Waterfraction),...
+	(md.results.SteadystateSolution.Enthalpy),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test432.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test432.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test432.py	(revision 21239)
@@ -0,0 +1,35 @@
+#Test Name: SquareSheetShelfSteaEnthalpyHO
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(3,2.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.timestepping.time_step=0.
+md.thermal.isenthalpy=1
+md.initialization.waterfraction=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.watercolumn=numpy.zeros((md.mesh.numberofvertices,1))
+md=solve(md,'Steadystate')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure','Temperature','Waterfraction','Enthalpy']
+field_tolerances=[3e-09,1e-09,1e-09,1e-09,1e-13,1e-10,3.2e-10,3e-9]
+field_values=[\
+	md.results.SteadystateSolution.Vx,\
+	md.results.SteadystateSolution.Vy,\
+	md.results.SteadystateSolution.Vz,\
+	md.results.SteadystateSolution.Vel,\
+	md.results.SteadystateSolution.Pressure,\
+	md.results.SteadystateSolution.Temperature,\
+	md.results.SteadystateSolution.Waterfraction,\
+	md.results.SteadystateSolution.Enthalpy,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test433.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test433.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test433.m	(revision 21239)
@@ -0,0 +1,50 @@
+%Test Name: RoundSheetShelfGLMigrationSSA3d
+radius=1.e6;
+shelfextent=2.e5;
+
+md=roundmesh(model(),radius,50000.);
+%fix center node to 0,0
+rad=sqrt(md.mesh.x.^2+md.mesh.y.^2);
+pos=find(rad==min(rad));
+md.mesh.x(pos)=0.; md.mesh.y(pos)=0.; %the closest node to the center is changed to be exactly at the center
+xelem=md.mesh.x(md.mesh.elements)*[1;1;1]/3.;
+yelem=md.mesh.y(md.mesh.elements)*[1;1;1]/3.;
+rad=sqrt(xelem.^2+yelem.^2);
+flags=zeros(md.mesh.numberofelements,1);
+pos=find(rad>=(radius-shelfextent));
+flags(pos)=1;
+md=setmask(md,flags,''); 
+md=parameterize(md,'../Par/RoundSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md=extrude(md,3,1);
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.transient.isthermal=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isstressbalance=0;
+md.transient.isgroundingline=1;
+
+%test different grounding line dynamics.
+md.groundingline.migration='AggressiveMigration';
+md=solve(md,'Transient');
+element_on_iceshelf_agressive=(md.results.TransientSolution.MaskGroundediceLevelset);
+
+md.groundingline.migration='SoftMigration';
+md=solve(md,'Transient');
+element_on_iceshelf_soft=(md.results.TransientSolution.MaskGroundediceLevelset);
+
+md.groundingline.migration='SubelementMigration';
+md=solve(md,'Transient');
+element_on_iceshelf_subelement=(md.results.TransientSolution.MaskGroundediceLevelset);
+
+md.groundingline.migration='SubelementMigration2';
+md.transient.isstressbalance=1;
+md=setflowequation(md,'SSA','all');
+md=solve(md,'Transient');
+element_on_iceshelf_subelement2=(md.results.TransientSolution.MaskGroundediceLevelset);
+
+%Fields and tolerances to track changes
+field_names     ={'ElementOnIceShelfAggressive','ElementOnIceShelfSoft','ElementOnIceShelfSubelement','ElementOnIceShelfSubelement'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={element_on_iceshelf_agressive,element_on_iceshelf_soft,element_on_iceshelf_subelement,element_on_iceshelf_subelement2};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test433.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test433.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test433.py	(revision 21239)
@@ -0,0 +1,54 @@
+#Test Name: RoundSheetShelfGLMigrationSSA3d
+import numpy
+from model import *
+from roundmesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+radius=1.e6
+shelfextent=2.e5
+
+md=roundmesh(model(),radius,50000.)
+#fix center node to 0,0
+rad=numpy.sqrt(md.mesh.x**2+md.mesh.y**2)
+pos=numpy.argmin(rad)
+md.mesh.x[pos]=0.
+md.mesh.y[pos]=0.    #the closest node to the center is changed to be exactly at the center
+xelem=numpy.mean(md.mesh.x[md.mesh.elements.astype(int)-1],axis=1)
+yelem=numpy.mean(md.mesh.y[md.mesh.elements.astype(int)-1],axis=1)
+rad=numpy.sqrt(xelem**2+yelem**2)
+flags=numpy.zeros(md.mesh.numberofelements)
+pos=numpy.nonzero(rad>=(radius-shelfextent))
+flags[pos]=1
+md=setmask(md,flags,'') 
+md=parameterize(md,'../Par/RoundSheetShelf.py')
+md=setflowequation(md,'SSA','all')
+md.extrude(3,1.)
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.transient.isthermal=False
+md.transient.ismasstransport=False
+md.transient.issmb=True
+md.transient.isstressbalance=False
+md.transient.isgroundingline=True
+
+#test different grounding line dynamics.
+md.groundingline.migration='AggressiveMigration'
+md=solve(md,'Transient')
+element_on_iceshelf_agressive=md.results.TransientSolution[0].MaskGroundediceLevelset
+
+md.groundingline.migration='SoftMigration'
+md=solve(md,'Transient')
+element_on_iceshelf_soft=md.results.TransientSolution[0].MaskGroundediceLevelset
+
+md.groundingline.migration='SubelementMigration'
+md=solve(md,'Transient')
+element_on_iceshelf_subelement=md.results.TransientSolution[0].MaskGroundediceLevelset
+
+#Fields and tolerances to track changes
+field_names     =['ElementOnIceShelfAggressive','ElementOnIceShelfSoft','ElementOnIceShelfSubelement']
+field_tolerances=[1e-13,1e-13,1e-13]
+field_values=[element_on_iceshelf_agressive,element_on_iceshelf_soft,element_on_iceshelf_subelement]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test434.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test434.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test434.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetShelfL1L2
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,4,1.);
+md=setflowequation(md,'L1L2','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-06,1e-06,2e-07,1e-06,1e-07};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test434.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test434.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test434.py	(revision 21239)
@@ -0,0 +1,28 @@
+#Test Name: SquareSheetShelfL1L2
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(4,1.)
+md=setflowequation(md,'L1L2','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-06,1e-06,1e-06,1e-06,1e-07]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test435.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test435.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test435.m	(revision 21239)
@@ -0,0 +1,80 @@
+%Test Name: MISMIP3DHO
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.initialization.vx(:)=1.;
+md.initialization.vy(:)=1.;
+md.geometry.thickness(:)=500-md.mesh.x/10000;
+md.geometry.bed =-100-md.mesh.x/1000;
+md.geometry.base=-md.geometry.thickness*md.materials.rho_ice/md.materials.rho_water;
+md.mask.groundedice_levelset=md.geometry.thickness+md.materials.rho_water/md.materials.rho_ice*md.geometry.bed;
+pos=find(md.mask.groundedice_levelset>=0);
+md.geometry.base(pos)=md.geometry.bed(pos);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=extrude(md,4,1.);
+md=setflowequation(md,'HO','all');
+
+%Boundary conditions:
+md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
+md.mask.ice_levelset(find(md.mesh.x==max(md.mesh.x)))=0;
+md.stressbalance.spcvx(:)=NaN;
+md.stressbalance.spcvy(:)=NaN;
+md.stressbalance.spcvz(:)=NaN;
+pos=find((md.mesh.y<1000000.1 & md.mesh.y>999999.9) | (md.mesh.y<0.1 & md.mesh.y>-0.1));
+md.stressbalance.spcvy(pos)=0;
+pos2=find(md.mesh.x<0.1 & md.mesh.x>-0.1);
+md.stressbalance.spcvx(pos2)=0;
+md.stressbalance.spcvy(pos2)=0;
+
+md.materials.rheology_B=1/((10^-25)^(1/3))*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_law='None';
+md.friction.coefficient(:)=sqrt(10^7)*ones(md.mesh.numberofvertices,1);
+md.friction.p=3*ones(md.mesh.numberofelements,1);
+md.smb.mass_balance(:)=1;
+md.basalforcings.groundedice_melting_rate(:)=0;
+md.basalforcings.floatingice_melting_rate(:)=0;
+md.transient.isthermal=0;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.groundingline.migration='SubelementMigration';
+md.timestepping.final_time=30;
+md.timestepping.time_step=10;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Bed1','Surface1','Thickness1','Floatingice1','Vx1','Vy1','Vz1','Pressure1',...
+	'Bed2','Surface2','Thickness2','Floatingice2','Vx2','Vy2','Vz2','Pressure2',...
+	'Bed3','Surface3','Thickness3','Floatingice3','Vx3','Vy3','Vz3','Pressure3'};
+field_tolerances={2e-11,5e-12,2e-11,1e-11,5e-10,1e-08,6e-10,1e-13,...
+	3e-11,3e-11,9e-10,7e-11,1e-09,5e-08,1e-09,1e-10,...
+	1e-10,3e-11,1e-10,7e-11,1e-09,5e-08,1e-09,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).MaskGroundediceLevelset),...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).MaskGroundediceLevelset),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).MaskGroundediceLevelset),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test436.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test436.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test436.m	(revision 21239)
@@ -0,0 +1,36 @@
+%Test Name: SquareSheetShelfSteaEnthalpyRheologiesHO
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0.;
+md.thermal.isenthalpy=1;
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+
+%Go solve
+field_names={};
+field_tolerances={};
+field_values={};
+for i={'LliboutryDuval', 'CuffeyTemperate'}
+	disp(' ');
+	disp(['====== Testing rheology law: ' i{1} ' =====']);
+
+	md.materials.rheology_law=i{1};
+	md=solve(md,'Steadystate');
+	field_names     ={field_names{:},['Vx' i{1}],['Vy' i{1}],['Vz' i{1}],['Vel' i{1}],['Pressure' i{1}],...
+		['Temperature' i{1}],['Waterfraction' i{1}],['Enthalpy' i{1}]};
+	field_tolerances={field_tolerances{:},2e-09,1e-09,1e-09,1e-09,1e-13,1e-10,5e-10,5e-10};
+	field_values={field_values{:},...
+		(md.results.SteadystateSolution.Vx),...
+		(md.results.SteadystateSolution.Vy),...
+		(md.results.SteadystateSolution.Vz),...
+		(md.results.SteadystateSolution.Vel),...
+		(md.results.SteadystateSolution.Pressure),...
+		(md.results.SteadystateSolution.Temperature),...
+		(md.results.SteadystateSolution.Waterfraction),...
+		(md.results.SteadystateSolution.Enthalpy),...
+		};
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test437.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test437.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test437.m	(revision 21239)
@@ -0,0 +1,80 @@
+%Test Name: ThermalEnthBasalcondsTrans
+md=triangle(model(),'../Exp/Square.exp',300000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareThermal.par');
+
+h=100.;
+md.geometry.thickness=h*ones(md.mesh.numberofvertices,1);
+md.geometry.base=-h*ones(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+md=extrude(md,41,2.);
+md=setflowequation(md,'HO','all');
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+
+%Basal forcing
+Ts=273.15-3.; Tb=273.15-1.; Tsw=Tb;
+qgeo=md.materials.thermalconductivity/max(md.geometry.thickness)*(Tb-Ts); %qgeo=kappa*(Tb-Ts)/H
+md.basalforcings.geothermalflux(find(md.mesh.vertexonbase))=qgeo;
+md.initialization.temperature=qgeo/md.materials.thermalconductivity.*(md.geometry.surface-md.mesh.z)+Ts;
+
+%Surface forcing
+pos=find(md.mesh.vertexonsurface);
+SPC_cold=NaN(md.mesh.numberofvertices,1);
+SPC_warm=NaN(md.mesh.numberofvertices,1);
+SPC_cold(pos)=Ts;
+SPC_warm(pos)=Tsw;
+md.thermal.spctemperature=SPC_cold;
+md.timestepping.time_step=5.;
+t0=0.;
+t1=10.;
+t2=100.;
+md.timestepping.final_time=400.;
+md.thermal.spctemperature=[SPC_cold SPC_cold SPC_warm SPC_warm SPC_cold];
+md.thermal.spctemperature=[md.thermal.spctemperature; t0 t1-1 t1 t2-1 t2];
+
+%Additional settings
+md.transient.ismasstransport=0;
+md.transient.isstressbalance=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.thermal.stabilization = 0;
+
+%Go solve
+md.verbose=verbose(0);
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Enthalpy1','Temperature1','Waterfraction1','BasalMeltingRate1','Watercolumn1',...
+						'Enthalpy2','Temperature2','Waterfraction2','BasalMeltingRate2','Watercolumn2',...
+						'Enthalpy3','Temperature3','Waterfraction3','BasalMeltingRate3','Watercolumn3',...
+						'Enthalpy4','Temperature4','Waterfraction4','BasalMeltingRate4','Watercolumn4'};
+field_tolerances={1.e-10,1.e-10,1.e-10,1.e-9,1.e-10,...
+						1.e-10,1.e-10,1.e-10,1.e-9,2.e-10,...
+						1.e-10,1.e-10,1.e-10,1.e-9,1.e-10,...
+						1.e-10,1.e-10,1.e-10,1.e-9,1.e-10};
+i1=1;	i2=ceil(t2/md.timestepping.time_step)+2;	i3=ceil(md.timestepping.final_time/(2.*md.timestepping.time_step));	i4=size(md.results.TransientSolution,2);
+field_values={...
+	(md.results.TransientSolution(i1).Enthalpy),...
+	(md.results.TransientSolution(i1).Temperature),...
+	(md.results.TransientSolution(i1).Waterfraction),...
+	(md.results.TransientSolution(i1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(i1).Watercolumn),...
+	(md.results.TransientSolution(i2).Enthalpy),...
+	(md.results.TransientSolution(i2).Temperature),...
+	(md.results.TransientSolution(i2).Waterfraction),...
+	(md.results.TransientSolution(i2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(i2).Watercolumn),...
+	(md.results.TransientSolution(i3).Enthalpy),...
+	(md.results.TransientSolution(i3).Temperature),...
+	(md.results.TransientSolution(i3).Waterfraction),...
+	(md.results.TransientSolution(i3).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(i3).Watercolumn),...
+	(md.results.TransientSolution(i4).Enthalpy),...
+	(md.results.TransientSolution(i4).Temperature),...
+	(md.results.TransientSolution(i4).Waterfraction),...
+	(md.results.TransientSolution(i4).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(i4).Watercolumn),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test438.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test438.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test438.m	(revision 21239)
@@ -0,0 +1,39 @@
+%Test Name: TransientFrictionWaterlayer2D
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.friction=frictionwaterlayer(md.friction);
+md.friction.water_layer=zeros(md.mesh.numberofvertices,2);
+md.friction.water_layer(:,2)=1;
+md.friction.water_layer(md.mesh.numberofvertices+1,:)=[1 2];
+md.friction.f=0.8;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test439.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test439.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test439.m	(revision 21239)
@@ -0,0 +1,40 @@
+%Test Name: TransientFrictionWaterlayer3D
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,4,1);
+md=setflowequation(md,'HO','all');
+md.friction=frictionwaterlayer(md.friction);
+md.friction.water_layer=zeros(md.mesh.numberofvertices,2);
+md.friction.water_layer(:,2)=1;
+md.friction.water_layer(md.mesh.numberofvertices+1,:)=[1 2];
+md.friction.f=0.8;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test440.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test440.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test440.m	(revision 21239)
@@ -0,0 +1,62 @@
+%Test Name: SquareSheetShelfDakotaScaledResponseLinearPart
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%partitioning
+md.qmu.numberofpartitions=md.mesh.numberofvertices;
+md=partitioner(md,'package','linear');
+md.qmu.partition=md.qmu.partition-1;
+md.qmu.isdakota=1;
+
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%variables
+md.qmu.variables.rho_ice=normal_uncertain('MaterialsRhoIce',md.materials.rho_ice,0.01);
+
+%responses
+md.qmu.responses.MaxVel=response_function('scaled_Thickness',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%method
+md.qmu.method     =dakota_method('nond_l');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+
+
+%imperative! 
+md.stressbalance.reltol=10^-5; %tighten for qmu analysese
+
+%solve
+md=solve(md,'Stressbalance','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+%test on thickness
+h=zeros(md.qmu.numberofpartitions,1);
+for i=1:md.qmu.numberofpartitions,
+	h(i)=md.qmu.results.dresp_out(i).mean;
+end
+
+%project onto grid
+thickness=h(md.qmu.partition+1);
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-10};
+field_values={thickness};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test450.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test450.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test450.m	(revision 21239)
@@ -0,0 +1,22 @@
+%Test Name: SquareSheetShelfStressSSAHigherOrder
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+field_names={};
+field_tolerances={};
+field_values={};
+for i={'P1bubble','P1bubblecondensed','P2'}
+	md.flowequation.fe_SSA=i{1};
+	md=solve(md,'Stressbalance');
+	field_names     ={field_names{:},['Vx' i{1}],['Vy' i{1}],['Vel' i{1}],['Pressure' i{1}]};
+	field_tolerances={field_tolerances{:},1e-12,1e-13,1e-13,1e-13};
+	field_values={field_values{:},...
+		(md.results.StressbalanceSolution.Vx),...
+		(md.results.StressbalanceSolution.Vy),...
+		(md.results.StressbalanceSolution.Vel),...
+		(md.results.StressbalanceSolution.Pressure),...
+		};
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test450.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test450.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test450.py	(revision 21239)
@@ -0,0 +1,30 @@
+#Test Name: SquareSheetShelfStressSSAHigherOrder
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+field_names=[]
+field_tolerances=[]
+field_values=[]
+for i in ['P1bubble','P1bubblecondensed','P2']:
+	md.flowequation.fe_SSA=i
+	md=solve(md,'Stressbalance')
+	field_names     =field_names+['Vx'+i,'Vy'+i,'Vel'+i,'Pressure'+i]
+	field_tolerances=field_tolerances+[1e-12,1e-13,1e-13,1e-13]
+	field_values=field_values+[\
+		md.results.StressbalanceSolution.Vx,\
+		md.results.StressbalanceSolution.Vy,\
+		md.results.StressbalanceSolution.Vel,\
+		md.results.StressbalanceSolution.Pressure,\
+		]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test455.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test455.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test455.m	(revision 21239)
@@ -0,0 +1,24 @@
+%Test Name: SquareSheetShelfStressHOHigherOrder
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+field_names={};
+field_tolerances={};
+field_values={};
+for i={'P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P1xP3','P2xP4'}
+	md.flowequation.fe_HO=i{1};
+	md=solve(md,'Stressbalance');
+	field_names     ={field_names{:},['Vx' i{1}],['Vy' i{1}],['Vz' i{1}],['Vel' i{1}],['Pressure' i{1}]};
+	field_tolerances={field_tolerances{:},6e-08,6e-08,6e-08,6e-08,3e-13};
+	field_values={field_values{:},...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test455.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test455.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test455.py	(revision 21239)
@@ -0,0 +1,32 @@
+#Test Name: SquareSheetShelfStressHOHigherOrder
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Square.exp',180000.)
+md=setmask(md,'../Exp/SquareShelf.exp','')
+md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(5,1.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+field_names=[]
+field_tolerances=[]
+field_values=[]
+for i in ['P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P1xP3','P2xP4']:
+	md.flowequation.fe_HO=i
+	md=solve(md,'Stressbalance')
+	field_names     =field_names+['Vx'+i,'Vy'+i,'Vz'+i,'Vel'+i,'Pressure'+i]
+	field_tolerances=field_tolerances+[6e-08,6e-08,6e-08,6e-08,3e-13]
+	field_values=field_values+[\
+			md.results.StressbalanceSolution.Vx,\
+			md.results.StressbalanceSolution.Vy,\
+			md.results.StressbalanceSolution.Vz,\
+			md.results.StressbalanceSolution.Vel,\
+			md.results.StressbalanceSolution.Pressure,\
+			]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test460.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test460.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test460.m	(revision 21239)
@@ -0,0 +1,31 @@
+%Test Name: SquareSheetShelfStressFSEstar
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,1.);
+md.materials = matestar(md.materials);
+md.materials.rheology_ko = (3.15e8)^(-3)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_Ec=ones(md.mesh.numberofvertices,1);
+md.materials.rheology_Es=3*ones(md.mesh.numberofvertices,1);
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Go solve
+field_names={};
+field_tolerances={};
+field_values={};
+%md.initialization.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.y);
+for i={'SSA','HO','FS'},
+	disp(' ');
+	disp(['====== Testing Estar with ' i{1} ' =====']);
+	md=setflowequation(md,i{1},'all');
+	md=solve(md,'Stressbalance');
+	field_names     ={field_names{:},['Vx' i{1}],['Vy' i{1}],['Vz' i{1}],['Vel' i{1}],['Pressure' i{1}]};
+	field_tolerances={field_tolerances{:},6e-07,6e-07,2e-06,1e-06,5e-07};
+	field_values={field_values{:},...
+		(md.results.StressbalanceSolution.Vx),...
+		(md.results.StressbalanceSolution.Vy),...
+		(md.results.StressbalanceSolution.Vz),...
+		(md.results.StressbalanceSolution.Vel),...
+		(md.results.StressbalanceSolution.Pressure),...
+		};
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test501.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test501.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test501.m	(revision 21239)
@@ -0,0 +1,17 @@
+%Test Name: PigStressSSA2d
+md=triangle(model(),'../Exp/Pig.exp',20000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-12,2e-12,2e-12,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test501.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test501.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test501.py	(revision 21239)
@@ -0,0 +1,25 @@
+#Test Name: PigStressSSA2d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Pig.exp',20000.)
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp')
+md=parameterize(md,'../Par/Pig.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+# Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vel','Pressure']
+field_tolerances=[1e-12,2e-12,2e-12,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test502.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test502.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test502.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: PigStressHO
+md=triangle(model(),'../Exp/Pig.exp',20000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,0.9);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-08,1e-08,1e-08,1e-08,1e-08};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test502.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test502.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test502.py	(revision 21239)
@@ -0,0 +1,27 @@
+#Test Name: PigStressHO
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Pig.exp',20000.)
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp')
+md=parameterize(md,'../Par/Pig.py')
+md.extrude(3,0.9)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+# Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-08,1e-08,1e-08,1e-08,1e-08]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test503.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test503.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test503.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: PigStressFS
+md=triangle(model(),'../Exp/Pig.exp',20000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,0.9);
+md=setflowequation(md,'FS','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test503.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test503.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test503.py	(revision 21239)
@@ -0,0 +1,27 @@
+#Test Name: PigStressFS
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Pig.exp',20000.)
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp')
+md=parameterize(md,'../Par/Pig.py')
+md.extrude(3,0.9)
+md=setflowequation(md,'FS','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+# Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure']
+field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-09]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vz,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test504.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test504.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test504.m	(revision 21239)
@@ -0,0 +1,27 @@
+%Test Name: PigTranSSA2d
+md=triangle(model(),'../Exp/Pig.exp',20000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2'};
+field_tolerances={1e-12,2e-12,2e-12,1e-13,1e-13,1e-13,1e-13,1e-12,1e-12,1e-12,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test504.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test504.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test504.py	(revision 21239)
@@ -0,0 +1,35 @@
+#Test Name: PigTranSSA2d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Pig.exp',20000.)
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp')
+md=parameterize(md,'../Par/Pig.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Transient')
+
+# Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2']
+field_tolerances=[1e-12,2e-12,2e-12,1e-13,1e-13,1e-13,1e-13,1e-12,1e-12,1e-12,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test505.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test505.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test505.m	(revision 21239)
@@ -0,0 +1,36 @@
+%Test Name: PigTranSSA3d
+md=triangle(model(),'../Exp/Pig.exp',30000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2'};
+field_tolerances={1e-12,1e-12,3e-10,1e-12,1e-13,1e-11,5e-12,9e-12,1e-13,5e-9,...
+						5e-11,5e-11,1e-10,2e-11,7e-12,1e-11,1e-11,5e-12,1e-11,2e-8};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test505.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test505.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test505.py	(revision 21239)
@@ -0,0 +1,44 @@
+#Test Name: PigTranSSA3d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Pig.exp',30000.)
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp')
+md=parameterize(md,'../Par/Pig.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Transient')
+
+# Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', \
+				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2']
+field_tolerances=[1e-12,1e-12,1e-10,1e-12,1e-13,3e-13,7e-13,3e-13,1e-13,6e-10, \
+						2e-12,5e-12,1e-10,4e-12,3e-13,1e-11,1e-11,2e-12,1e-11,1e-8]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test506.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test506.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test506.m	(revision 21239)
@@ -0,0 +1,36 @@
+%Test Name: PigTranHO
+md=triangle(model(),'../Exp/Pig.exp',30000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,2,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2'};
+field_tolerances={1e-10,1e-10,1e-10,1e-10,1e-12,1e-11,2e-12,1e-11,1e-12,1e-09,...
+						1e-11,1e-11,1e-09,1e-11,1e-11,1e-10,1e-11,1e-10,1e-11,2e-08};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test506.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test506.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test506.py	(revision 21239)
@@ -0,0 +1,44 @@
+#Test Name: PigTranHO
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Pig.exp',30000.)
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp')
+md=parameterize(md,'../Par/Pig.py')
+md.extrude(2,1.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Transient')
+
+# Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', \
+				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2']
+field_tolerances=[1e-10,1e-10,1e-10,1e-10,1e-12,1e-11,2e-12,1e-11,1e-12,1e-09,\
+						1e-11,1e-11,1e-09,1e-11,1e-11,1e-10,1e-11,1e-10,1e-11,2e-08]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test507.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test507.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test507.m	(revision 21239)
@@ -0,0 +1,35 @@
+%Test Name: PigTranFS
+md=triangle(model(),'../Exp/Pig.exp',30000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,2,1.);
+md=setflowequation(md,'FS','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2'};
+field_tolerances={1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-06,1e-06,1e-06,1e-06,1e-06,1e-06,1e-06,1e-06,3e-06,1e-06};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test507.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test507.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test507.py	(revision 21239)
@@ -0,0 +1,43 @@
+#Test Name: PigTranFS
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Pig.exp',30000.)
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp')
+md=parameterize(md,'../Par/Pig.py')
+md.extrude(2,1.)
+md=setflowequation(md,'FS','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Transient')
+
+# Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', \
+				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2']
+field_tolerances=[1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-06,1e-06,1e-06,1e-06,1e-06,1e-06,1e-06,1e-06,1e-06,1e-06]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test508.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test508.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test508.m	(revision 21239)
@@ -0,0 +1,22 @@
+%Test Name: PigSteaSSA3d
+md=triangle(model(),'../Exp/Pig.exp',35000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,1.1);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0.;
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={5e-08,3e-08,5e-08,3e-08,1e-09,2e-07,8e-07};
+field_values={...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test508.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test508.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test508.py	(revision 21239)
@@ -0,0 +1,30 @@
+#Test Name: PigSteaSSA3d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Pig.exp',35000.)
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp')
+md=parameterize(md,'../Par/Pig.py')
+md.extrude(3,1.1)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.timestepping.time_step=0.
+md=solve(md,'Steadystate')
+
+# Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[5e-08,1.6e-08,5e-08,1.6e-08,1e-09,6e-08,5e-07]
+field_values=[\
+	md.results.SteadystateSolution.Vx,\
+	md.results.SteadystateSolution.Vy,\
+	md.results.SteadystateSolution.Vz,\
+	md.results.SteadystateSolution.Vel,\
+	md.results.SteadystateSolution.Pressure,\
+	md.results.SteadystateSolution.Temperature,\
+	md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test509.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test509.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test509.m	(revision 21239)
@@ -0,0 +1,24 @@
+%Test Name: PigSteaHO
+md=triangle(model(),'../Exp/Pig.exp',30000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0.;
+md.thermal.penalty_threshold=7;
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06
+};
+field_values={...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test509.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test509.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test509.py	(revision 21239)
@@ -0,0 +1,31 @@
+#Test Name: PigSteaHO
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Pig.exp',30000.)
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp')
+md=parameterize(md,'../Par/Pig.py')
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.timestepping.time_step=0.
+md.thermal.penalty_threshold=7
+md=solve(md,'Steadystate')
+
+# Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06]
+field_values=[\
+	md.results.SteadystateSolution.Vx,\
+	md.results.SteadystateSolution.Vy,\
+	md.results.SteadystateSolution.Vz,\
+	md.results.SteadystateSolution.Vel,\
+	md.results.SteadystateSolution.Pressure,\
+	md.results.SteadystateSolution.Temperature,\
+	md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test510.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test510.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test510.m	(revision 21239)
@@ -0,0 +1,22 @@
+%Test Name: PigSteaFS
+md=triangle(model(),'../Exp/Pig.exp',20000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,2,1.);
+md=setflowequation(md,'FS','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0.;
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-06};
+field_values={...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test510.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test510.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test510.py	(revision 21239)
@@ -0,0 +1,30 @@
+#Test Name: PigSteaFS
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Pig.exp',20000.)
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp')
+md=parameterize(md,'../Par/Pig.py')
+md.extrude(2,1.)
+md=setflowequation(md,'FS','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md.timestepping.time_step=0.
+md=solve(md,'Steadystate')
+
+# Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-06]
+field_values=[\
+	md.results.SteadystateSolution.Vx,\
+	md.results.SteadystateSolution.Vy,\
+	md.results.SteadystateSolution.Vz,\
+	md.results.SteadystateSolution.Vel,\
+	md.results.SteadystateSolution.Pressure,\
+	md.results.SteadystateSolution.Temperature,\
+	md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test511.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test511.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test511.m	(revision 21239)
@@ -0,0 +1,40 @@
+%Test Name: PigCMBFS
+md=triangle(model(),'../Exp/Pig.exp',11000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+
+%impose hydrostatic equilibrium (required by Stokes)
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=extrude(md,3,1.);
+md=setflowequation(md,'FS','all');
+md=extract(md,md.mask.groundedice_levelset<0.);
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'MaterialsRheologyBbar'};
+md.inversion.min_parameters=10.^6*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2.*10^9*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=10.^8*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2.*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.99*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',1);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','MaterialsRheologyB','Pressure','Vel','Vx','Vy'};
+field_tolerances={5e-11,5e-11,5e-11,1e-09,1e-11,5e-11,1e-11};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.MaterialsRheologyBbar),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test511.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test511.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test511.py	(revision 21239)
@@ -0,0 +1,50 @@
+#Test Name: PigCMBFS
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Pig.exp',11000.)
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp')
+md=parameterize(md,'../Par/Pig.py')
+
+#impose hydrostatic equilibrium (required by Stokes)
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+md.extrude(3,1.)
+md=setflowequation(md,'FS','all')
+md=md.extract(md.mask.groundedice_levelset<0.)
+
+#control parameters
+md.inversion.iscontrol=1
+md.inversion.control_parameters=['MaterialsRheologyBbar']
+md.inversion.min_parameters=10.**6*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.max_parameters=2.*10**9*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.nsteps=2
+md.inversion.cost_functions=[101]
+md.inversion.cost_functions_coefficients=numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.gradient_scaling=10.**8*numpy.ones((md.inversion.nsteps,1))
+md.inversion.maxiter_per_step=2.*numpy.ones((md.inversion.nsteps,1))
+md.inversion.step_threshold=0.99*numpy.ones((md.inversion.nsteps,1))
+md.inversion.vx_obs=md.initialization.vx
+md.inversion.vy_obs=md.initialization.vy
+
+md.cluster=generic('name',oshostname(),'np',1)
+md=solve(md,'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names     =['Gradient','Misfits','MaterialsRheologyB','Pressure','Vel','Vx','Vy']
+field_tolerances=[5e-11,5e-11,5e-11,1e-09,1e-11,5e-11,1e-11]
+field_values=[\
+	md.results.StressbalanceSolution.Gradient1,\
+	md.results.StressbalanceSolution.J,\
+	md.results.StressbalanceSolution.MaterialsRheologyBbar,\
+	md.results.StressbalanceSolution.Pressure,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test512.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test512.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test512.m	(revision 21239)
@@ -0,0 +1,35 @@
+%Test Name: PigCMDragHO
+md=triangle(model(),'../Exp/Pig.exp',20000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[103  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.99*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	md.results.StressbalanceSolution.J,...
+	(md.results.StressbalanceSolution.FrictionCoefficient),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test512.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test512.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test512.py	(revision 21239)
@@ -0,0 +1,46 @@
+#Test Name: PigCMDragHO
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Pig.exp',20000.)
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp')
+md=parameterize(md,'../Par/Pig.py')
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+
+# control parameters
+md.inversion.iscontrol=1
+md.inversion.control_parameters=['FrictionCoefficient']
+md.inversion.min_parameters=1.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.max_parameters=200.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.nsteps=2
+md.inversion.cost_functions=[103,501]
+md.inversion.cost_functions_coefficients=numpy.ones((md.mesh.numberofvertices,2))
+md.inversion.cost_functions_coefficients[:,1]=2.*10**-7
+md.inversion.gradient_scaling=3.*numpy.ones((md.inversion.nsteps,1))
+md.inversion.maxiter_per_step=2.*numpy.ones((md.inversion.nsteps,1))
+md.inversion.step_threshold=2.99*numpy.ones((md.inversion.nsteps,1))
+md.inversion.vx_obs=md.initialization.vx
+md.inversion.vy_obs=md.initialization.vy
+
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Stressbalance')
+
+# Fields and tolerances to track changes
+field_names     =['Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy']
+field_tolerances=[1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11]
+field_values=[\
+	md.results.StressbalanceSolution.Gradient1,\
+	md.results.StressbalanceSolution.J,\
+	md.results.StressbalanceSolution.FrictionCoefficient,\
+	md.results.StressbalanceSolution.Pressure,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test513.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test513.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test513.m	(revision 21239)
@@ -0,0 +1,40 @@
+%Test Name: PigCMDragSteaSSA3d
+md=triangle(model(),'../Exp/Pig.exp',30000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[103  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2.*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.99*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+md.timestepping.time_step=0.;
+
+md.thermal.penalty_lock=5;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy','Vz','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={5e-08,4e-10,1e-10,1e-10,3e-6,4e-6,4e-6,3e-6,2e-6,2e-06};
+field_values={...
+	(md.results.SteadystateSolution.Gradient1),...
+	md.results.SteadystateSolution.J,...
+	(md.results.SteadystateSolution.FrictionCoefficient),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate)
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test513.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test513.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test513.py	(revision 21239)
@@ -0,0 +1,50 @@
+#Test Name: PigCMDragSteaSSA3d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Pig.exp',30000.)
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp')
+md=parameterize(md,'../Par/Pig.py')
+md.extrude(3,1.)
+md=setflowequation(md,'SSA','all')
+
+# control parameters
+md.inversion.iscontrol=1
+md.inversion.control_parameters=['FrictionCoefficient']
+md.inversion.min_parameters=1.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.max_parameters=200.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.nsteps=2
+md.inversion.cost_functions=[103,501]
+md.inversion.cost_functions_coefficients=numpy.ones((md.mesh.numberofvertices,2))
+md.inversion.cost_functions_coefficients[:,1]=2.*10**-7
+md.inversion.gradient_scaling=3.*numpy.ones((md.inversion.nsteps,1))
+md.inversion.maxiter_per_step=2.*numpy.ones((md.inversion.nsteps,1))
+md.inversion.step_threshold=0.99*numpy.ones((md.inversion.nsteps,1))
+md.inversion.vx_obs=md.initialization.vx
+md.inversion.vy_obs=md.initialization.vy
+md.timestepping.time_step=0.
+
+md.thermal.penalty_lock=5
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Steadystate')
+
+# Fields and tolerances to track changes
+field_names     =['Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy','Vz','Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[5e-08,4e-10,1e-10,1e-10,3e-6,4e-6,3.4e-6,3e-6,2e-6,2e-06]
+field_values=[\
+	md.results.SteadystateSolution.Gradient1,\
+	md.results.SteadystateSolution.J,\
+	md.results.SteadystateSolution.FrictionCoefficient,\
+	md.results.SteadystateSolution.Pressure,\
+	md.results.SteadystateSolution.Vel,\
+	md.results.SteadystateSolution.Vx,\
+	md.results.SteadystateSolution.Vy,\
+	md.results.SteadystateSolution.Vz,\
+	md.results.SteadystateSolution.Temperature,\
+	md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test514.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test514.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test514.m	(revision 21239)
@@ -0,0 +1,49 @@
+%Test Name: PigBamgMesh
+%Simple mesh 1
+hVertices=10000.*ones(27,1);
+hVertices(1:5)=1000.;
+md=bamg(model(),'domain','../Exp/Pig.exp','hmax',20000.,'hVertices',hVertices,'gradation',3.,'geometricalmetric',1);
+x1=md.mesh.x;
+y1=md.mesh.y;
+
+%Simple mesh 2
+md=bamg(model(),'domain','../Exp/Pig.exp','hmax',10000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+x2=md.mesh.x;
+y2=md.mesh.y;
+
+%refine existing mesh 1
+hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,md.inversion.vy_obs,'node');
+metric=ComputeMetric(hessian,2./9.,1.,1000.,25.*10.^3,[]);
+md.miscellaneous.dummy=metric;
+md2=bamg(md,'metric',md.miscellaneous.dummy,'hmin',1000.,'hmax',20000.,'gradation',3.,'geometricalmetric',1);
+x3=md2.mesh.x;
+y3=md2.mesh.y;
+
+%refine existing mesh 2
+md2=bamg(md,'metric',md.miscellaneous.dummy,'hmin',1000.,'hmax',20000.,'gradation',3.,'geometricalmetric',1,'anisomax',1.);
+x4=md2.mesh.x;
+y4=md2.mesh.y;
+
+%refine existing mesh 3
+hVertices=NaN*ones(md.mesh.numberofvertices,1);
+hVertices(find(md.mesh.vertexonboundary))=500;
+md2=bamg(md,'metric',md.miscellaneous.dummy,'hmin',1000.,'hmax',20000.,'gradation',3.,'geometricalmetric',1,'anisomax',1.,'hVertices',hVertices);
+x5=md2.mesh.x;
+y5=md2.mesh.y;
+
+%refine existing mesh 4
+md2=bamg(md,'field',md.inversion.vy_obs,'hmin',1000.,'hmax',20000.,'gradation',3.,'geometricalmetric',1,'Hessiantype',0,'err',1.);
+x6=md2.mesh.x;
+y6=md2.mesh.y;
+
+%refine existing mesh 5
+md2=bamg(md,'field',[md.inversion.vy_obs md.geometry.thickness],'hmin',1000.,'hmax',20000.,'gradation',3.,'geometricalmetric',1,'Hessiantype',1,'err',[10. 100.]); 
+x7=md2.mesh.x;
+y7=md2.mesh.y;
+
+%Fields and tolerances to track changes
+field_names      = {'x1' ,'y1' ,'x2' ,'y2' ,'x3' ,'y3' ,'x4' ,'y4' ,'x5' ,'y5' ,'x6' ,'y6' ,'x7' ,'y7' };
+field_tolerances = {2e-10,7e-10,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values     = { x1  ,y1   ,y2   ,y2   ,y3   ,y3   ,y4   ,y4   ,y5   ,y5   ,y6   ,y6   ,y7   ,y7   };
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test514.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test514.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test514.py	(revision 21239)
@@ -0,0 +1,67 @@
+#Test Name: PigBamgMesh
+import numpy
+import copy
+from model import *
+from bamg import *
+from setmask import *
+from parameterize import *
+from ComputeHessian import *
+from ComputeMetric import *
+from MatlabFuncs import *
+
+#Simple mesh 1
+hVertices=10000.*numpy.ones((27,1))
+hVertices[0:5]=1000.
+md=bamg(model(),'domain','../Exp/Pig.exp','hmax',20000.,'hVertices',hVertices,'gradation',3.,'geometricalmetric',1)
+x1=md.mesh.x
+y1=md.mesh.y
+
+#Simple mesh 2
+md=bamg(model(),'domain','../Exp/Pig.exp','hmax',10000.)
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp')
+md=parameterize(md,'../Par/Pig.py')
+x2=md.mesh.x
+y2=md.mesh.y
+
+#refine existing mesh 1
+hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,md.inversion.vy_obs,'node')
+metric=ComputeMetric(hessian,2./9.,1.,1000.,25.*10.**3,[])
+md.miscellaneous.dummy=metric
+md2=bamg(copy.deepcopy(md),'metric',md.miscellaneous.dummy,'hmin',1000.,'hmax',20000.,'gradation',3.,'geometricalmetric',1)
+x3=md2.mesh.x
+y3=md2.mesh.y
+
+#refine existing mesh 2
+md2=bamg(copy.deepcopy(md),'metric',md.miscellaneous.dummy,'hmin',1000.,'hmax',20000.,'gradation',3.,'geometricalmetric',1,'anisomax',1.)
+x4=md2.mesh.x
+y4=md2.mesh.y
+
+#refine existing mesh 3
+hVertices=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+hVertices[numpy.nonzero(md.mesh.vertexonboundary)]=500.
+md2=bamg(copy.deepcopy(md),'metric',md.miscellaneous.dummy,'hmin',1000.,'hmax',20000.,'gradation',3.,'geometricalmetric',1,'anisomax',1.,'hVertices',hVertices)
+x5=md2.mesh.x
+y5=md2.mesh.y
+
+#refine existing mesh 4
+md2=bamg(copy.deepcopy(md),'field',md.inversion.vy_obs,'hmin',1000.,'hmax',20000.,'gradation',3.,'geometricalmetric',1,'Hessiantype',0,'err',numpy.array([[1.]]))
+x6=md2.mesh.x
+y6=md2.mesh.y
+
+#refine existing mesh 5
+md2=bamg(copy.deepcopy(md),'field',numpy.hstack((md.inversion.vy_obs,md.geometry.thickness)),'hmin',1000.,'hmax',20000.,'gradation',3.,'geometricalmetric',1,'Hessiantype',1,'err',numpy.array([[10.,100.]])) 
+x7=md2.mesh.x
+y7=md2.mesh.y
+
+#Fields and tolerances to track changes
+field_names     =['x1','y1','x2','y2','x3','y3','x4','y4','x5','y5','x6','y6','x7','y7']
+field_tolerances = [2e-10,7e-10,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	x1, y1,\
+	y2, y2,\
+	y3, y3,\
+	y4, y4,\
+	y5, y5,\
+	y6, y6,\
+	y7, y7,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test515.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test515.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test515.m	(revision 21239)
@@ -0,0 +1,25 @@
+%Test Name: PigTherTranSUPG
+md=triangle(model(),'../Exp/Pig.exp',30000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.thermal.stabilization=2;
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+				      'Temperature2','BasalforcingsGroundediceMeltingRate2'};
+field_tolerances={1e-13,1e-8,1e-13,5e-8};
+field_values={...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test515.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test515.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test515.py	(revision 21239)
@@ -0,0 +1,33 @@
+#Test Name: PigTherTranSUPG
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Pig.exp',30000.)
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp')
+md=parameterize(md,'../Par/Pig.py')
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+md.thermal.stabilization=2
+md.cluster=generic('name',oshostname(),'np',3)
+md.transient.isstressbalance=False
+md.transient.ismasstransport=False
+md.transient.issmb=True
+md.transient.isthermal=True
+md.transient.isgroundingline=False
+md=solve(md,'Transient')
+
+# Fields and tolerances to track changes
+field_names     =['Temperature1','BasalforcingsGroundediceMeltingRate1', \
+				      'Temperature2','BasalforcingsGroundediceMeltingRate2']
+field_tolerances=[1e-13,1e-8,1e-13,5e-8]
+field_values=[\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test516.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test516.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test516.m	(revision 21239)
@@ -0,0 +1,19 @@
+%Test Name: PigTherSteaSUPG
+md=triangle(model(),'../Exp/Pig.exp',30000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.thermal.stabilization=2;
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0;
+md.thermal.penalty_threshold=40;
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-11,1e-11};
+field_values={...
+	(md.results.ThermalSolution.Temperature),...
+	(md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test516.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test516.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test516.py	(revision 21239)
@@ -0,0 +1,28 @@
+#Test Name: PigTherSteaSUPG
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/Pig.exp',30000.)
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp')
+md=parameterize(md,'../Par/Pig.py')
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+md.thermal.stabilization=2
+md.cluster=generic('name',oshostname(),'np',3)
+md.timestepping.time_step=0
+md.thermal.penalty_threshold=40
+md=solve(md,'Thermal')
+
+#Fields and tolerances to track changes
+field_names     =['Temperature','BasalforcingsGroundediceMeltingRate']
+field_tolerances=[1e-11,1e-11]
+field_values=[\
+	md.results.ThermalSolution.Temperature,\
+	md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test530.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test530.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test530.m	(revision 21239)
@@ -0,0 +1,16 @@
+%Test Name: PigBalVel1
+md=triangle(model(),'../Exp/Pig.exp',20000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Balancevelocity');
+
+%Fields and tolerances to track changes
+field_names     ={'DrivingStressX','DrivingStressX','Vel'};
+field_tolerances={1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.BalancevelocitySolution.DrivingStressX),...
+	(md.results.BalancevelocitySolution.DrivingStressY),...
+	(md.results.BalancevelocitySolution.Vel),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test530.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test530.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test530.py	(revision 21239)
@@ -0,0 +1,24 @@
+#Test Name: PigBalVel1
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Pig.exp',20000.)
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp')
+md=parameterize(md,'../Par/Pig.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Balancevelocity')
+
+# Fields and tolerances to track changes
+field_names     =['DrivingStressX','DrivingStressY','Vel']
+field_tolerances=[1e-13,1e-13,1e-13]
+field_values=[\
+		md.results.BalancevelocitySolution.DrivingStressX,\
+		md.results.BalancevelocitySolution.DrivingStressY,\
+		md.results.BalancevelocitySolution.Vel,\
+		]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test531.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test531.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test531.m	(revision 21239)
@@ -0,0 +1,18 @@
+%Test Name: PigBalVel2
+md=triangle(model(),'../Exp/Pig.exp',20000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md.initialization.vx(:)=0;
+md.initialization.vy(:)=0;
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Balancevelocity');
+
+%Fields and tolerances to track changes
+field_names     ={'DrivingStressX','DrivingStressX','Vel'};
+field_tolerances={1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.BalancevelocitySolution.DrivingStressX),...
+	(md.results.BalancevelocitySolution.DrivingStressY),...
+	(md.results.BalancevelocitySolution.Vel),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test531.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test531.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test531.py	(revision 21239)
@@ -0,0 +1,26 @@
+#Test Name: PigBalVel2
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Pig.exp',20000.)
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp')
+md=parameterize(md,'../Par/Pig.py')
+md.initialization.vx[:]=0.
+md.initialization.vy[:]=0.
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Balancevelocity')
+
+# Fields and tolerances to track changes
+field_names     =['DrivingStressX','DrivingStressY','Vel']
+field_tolerances=[1e-13,1e-13,1e-13]
+field_values=[\
+		md.results.BalancevelocitySolution.DrivingStressX,\
+		md.results.BalancevelocitySolution.DrivingStressY,\
+		md.results.BalancevelocitySolution.Vel,\
+		]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test601.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test601.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test601.m	(revision 21239)
@@ -0,0 +1,14 @@
+%Test Name: 79NorthMasstransp2d
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test601.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test601.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test601.py	(revision 21239)
@@ -0,0 +1,22 @@
+#Test Name: 79NorthMasstransp2d
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/79North.exp',10000.)
+md=setmask(md,'../Exp/79NorthShelf.exp','')
+md=parameterize(md,'../Par/79North.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Masstransport')
+
+#Fields and tolerances to track changes
+field_names     =['Thickness']
+field_tolerances=[1e-13]
+field_values=[\
+	md.results.MasstransportSolution.Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test602.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test602.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test602.m	(revision 21239)
@@ -0,0 +1,17 @@
+%Test Name: 79NorthMasstransp2dDG
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=meshconvert(md);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=setflowequation(md,'SSA','all');
+md.masstransport.stabilization=3;
+md.masstransport.spcthickness=md.geometry.thickness;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test602.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test602.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test602.py	(revision 21239)
@@ -0,0 +1,27 @@
+#Test Name: 79NorthMasstransp2dDG
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from meshconvert import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/79North.exp',10000.)
+md=meshconvert(md)
+md=setmask(md,'../Exp/79NorthShelf.exp','')
+md=parameterize(md,'../Par/79North.py')
+md=setflowequation(md,'SSA','all')
+md.masstransport.stabilization=3
+md.masstransport.spcthickness=md.geometry.thickness
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Masstransport')
+
+#Fields and tolerances to track changes
+field_names     =['Thickness']
+field_tolerances=[1e-13]
+field_values=[\
+	md.results.MasstransportSolution.Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test603.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test603.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test603.m	(revision 21239)
@@ -0,0 +1,15 @@
+%Test Name: 79NorthMasstransp3d
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=extrude(md,6,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test603.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test603.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test603.py	(revision 21239)
@@ -0,0 +1,24 @@
+#Test Name: 79NorthMasstransp3d
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/79North.exp',10000.)
+md=setmask(md,'../Exp/79NorthShelf.exp','')
+md=parameterize(md,'../Par/79North.py')
+md.extrude(6,1.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Masstransport')
+
+#Fields and tolerances to track changes
+field_names     =['Thickness']
+field_tolerances=[1e-13]
+field_values=[\
+	md.results.MasstransportSolution.Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test604.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test604.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test604.m	(revision 21239)
@@ -0,0 +1,15 @@
+%Test Name: 79NorthSurfSlop2d
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'SurfaceSlope');
+
+%Fields and tolerances to track changes
+field_names     ={'SurfaceSlopeX','SurfaceSlopeY'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.SurfaceSlopeSolution.SurfaceSlopeX),...
+	(md.results.SurfaceSlopeSolution.SurfaceSlopeY),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test604.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test604.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test604.py	(revision 21239)
@@ -0,0 +1,24 @@
+#Test Name: 79NorthSurfSlop2d
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/79North.exp',10000.)
+md=setmask(md,'../Exp/79NorthShelf.exp','')
+md=parameterize(md,'../Par/79North.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'SurfaceSlope')
+
+#Fields and tolerances to track changes
+field_names     =['SurfaceSlopeX','SurfaceSlopeY']
+field_tolerances=[1e-13,1e-13]
+field_values=[\
+	md.results.SurfaceSlopeSolution.SurfaceSlopeX,\
+	md.results.SurfaceSlopeSolution.SurfaceSlopeY,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test605.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test605.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test605.m	(revision 21239)
@@ -0,0 +1,16 @@
+%Test Name: 79NorthSurfSlop3d
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=extrude(md,5,1.5);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'SurfaceSlope');
+
+%Fields and tolerances to track changes
+field_names     ={'SurfaceSlopeX','SurfaceSlopeY'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.SurfaceSlopeSolution.SurfaceSlopeX),...
+	(md.results.SurfaceSlopeSolution.SurfaceSlopeY),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test605.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test605.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test605.py	(revision 21239)
@@ -0,0 +1,25 @@
+#Test Name: 79NorthSurfSlop3d
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/79North.exp',10000.)
+md=setmask(md,'../Exp/79NorthShelf.exp','')
+md=parameterize(md,'../Par/79North.py')
+md.extrude(5,1.5)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'SurfaceSlope')
+
+#Fields and tolerances to track changes
+field_names     =['SurfaceSlopeX','SurfaceSlopeY']
+field_tolerances=[1e-13,1e-13]
+field_values=[\
+	md.results.SurfaceSlopeSolution.SurfaceSlopeX,\
+	md.results.SurfaceSlopeSolution.SurfaceSlopeY,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test606.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test606.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test606.m	(revision 21239)
@@ -0,0 +1,15 @@
+%Test Name: 79NorthBedSlop2d
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'BedSlope');
+
+%Fields and tolerances to track changes
+field_names     ={'BedSlopeX','BedSlopeY'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.BedSlopeSolution.BedSlopeX),...
+	(md.results.BedSlopeSolution.BedSlopeY),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test606.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test606.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test606.py	(revision 21239)
@@ -0,0 +1,24 @@
+#Test Name: 79NorthBedSlop2d
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/79North.exp',10000.)
+md=setmask(md,'../Exp/79NorthShelf.exp','')
+md=parameterize(md,'../Par/79North.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'BedSlope')
+
+#Fields and tolerances to track changes
+field_names     =['BedSlopeX','BedSlopeY']
+field_tolerances=[1e-13,1e-13]
+field_values=[\
+	md.results.BedSlopeSolution.BedSlopeX,\
+	md.results.BedSlopeSolution.BedSlopeY,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test607.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test607.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test607.m	(revision 21239)
@@ -0,0 +1,16 @@
+%Test Name: 79NorthBedSlop3d
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=extrude(md,2,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'BedSlope');
+
+%Fields and tolerances to track changes
+field_names     ={'BedSlopeX','BedSlopeY'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.BedSlopeSolution.BedSlopeX),...
+	(md.results.BedSlopeSolution.BedSlopeY),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test607.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test607.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test607.py	(revision 21239)
@@ -0,0 +1,25 @@
+#Test Name: 79NorthBedSlop3d
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/79North.exp',10000.)
+md=setmask(md,'../Exp/79NorthShelf.exp','')
+md=parameterize(md,'../Par/79North.py')
+md.extrude(2,1.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'BedSlope')
+
+#Fields and tolerances to track changes
+field_names     =['BedSlopeX','BedSlopeY']
+field_tolerances=[1e-13,1e-13]
+field_values=[\
+	md.results.BedSlopeSolution.BedSlopeX,\
+	md.results.BedSlopeSolution.BedSlopeY,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test608.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test608.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test608.m	(revision 21239)
@@ -0,0 +1,14 @@
+%Test Name: 79NorthBalThic2d
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Balancethickness');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-12};
+field_values={...
+	(md.results.BalancethicknessSolution.Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test608.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test608.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test608.py	(revision 21239)
@@ -0,0 +1,23 @@
+#Test Name: 79NorthBalThic2d
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/79North.exp',10000.)
+md=setmask(md,'../Exp/79NorthShelf.exp','')
+md=parameterize(md,'../Par/79North.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Balancethickness')
+
+#Fields and tolerances to track changes
+field_names     =['Thickness']
+field_tolerances=[1e-12]
+field_values=[\
+	md.results.BalancethicknessSolution.Thickness,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test611.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test611.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test611.m	(revision 21239)
@@ -0,0 +1,32 @@
+%Test Name: 79NorthCMBalThic2dCG
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=setflowequation(md,'SSA','all');
+
+%control parameters
+md.inversion.nsteps=2;
+md.masstransport.stabilization=1;
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'BalancethicknessThickeningRate'};
+md.inversion.thickness_obs=md.geometry.thickness;
+md.inversion.min_parameters=-50.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=50.*ones(md.mesh.numberofvertices,1);
+md.inversion.cost_functions=201;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=10./md.constants.yts*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=4*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.99*ones(md.inversion.nsteps,1);
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Balancethickness');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','BalancethicknessThickeningRate','Thickness'};
+field_tolerances={1e-12,1e-12,1e-12,1e-12,1e-12,1e-12};
+field_values={...
+	(md.results.BalancethicknessSolution.Gradient1),...
+	md.results.BalancethicknessSolution.J,...
+	(md.results.BalancethicknessSolution.BalancethicknessThickeningRate),...
+	(md.results.BalancethicknessSolution.Thickness)
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test611.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test611.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test611.py	(revision 21239)
@@ -0,0 +1,41 @@
+#Test Name: 79NorthCMBalThic2dCG
+import numpy
+from model import *
+from MatlabFuncs import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md=triangle(model(),'../Exp/79North.exp',10000.)
+md=setmask(md,'../Exp/79NorthShelf.exp','')
+md=parameterize(md,'../Par/79North.py')
+md=setflowequation(md,'SSA','all')
+
+#control parameters
+md.inversion.nsteps=2
+md.masstransport.stabilization=1
+md.inversion.iscontrol=1
+md.inversion.control_parameters=['BalancethicknessThickeningRate']
+md.inversion.thickness_obs=md.geometry.thickness
+md.inversion.min_parameters=-50.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.max_parameters=50.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.cost_functions=[201]
+md.inversion.cost_functions_coefficients=numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.gradient_scaling=10./md.constants.yts*numpy.ones((md.inversion.nsteps,1))
+md.inversion.maxiter_per_step=4*numpy.ones((md.inversion.nsteps,1))
+md.inversion.step_threshold=0.99*numpy.ones((md.inversion.nsteps,1))
+
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Balancethickness')
+
+#Fields and tolerances to track changes
+field_names     =['Gradient','Misfits','BalancethicknessThickeningRate','Thickness']
+field_tolerances=[1e-12,1e-12,1e-12,1e-12,1e-12,1e-12]
+field_values=[\
+	md.results.BalancethicknessSolution.Gradient1,\
+	md.results.BalancethicknessSolution.J,\
+	md.results.BalancethicknessSolution.BalancethicknessThickeningRate,\
+	md.results.BalancethicknessSolution.Thickness
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test613.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test613.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test613.m	(revision 21239)
@@ -0,0 +1,41 @@
+%Test Name: 79NorthCMBalThicVxVy
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=meshconvert(md);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=setflowequation(md,'SSA','all');
+
+%Ice sheet only
+md=extract(md,md.mask.groundedice_levelset>0.);
+pos=find(md.mesh.vertexonboundary);
+md.balancethickness.spcthickness(pos)=md.geometry.thickness(pos);
+
+%control parameters
+md.inversion.thickness_obs=md.geometry.thickness;
+md.inversion.iscontrol=1;
+md.inversion.nsteps=2;
+md.inversion.control_parameters={'Vx','Vy'};
+md.balancethickness.stabilization=1;
+md.inversion.gradient_scaling=[10./md.constants.yts*ones(md.inversion.nsteps,1) 10./md.constants.yts*ones(md.inversion.nsteps,1)];
+md.inversion.min_parameters=[-2000.*ones(md.mesh.numberofvertices,1) -2000.*ones(md.mesh.numberofvertices,1)];
+md.inversion.max_parameters=[+2000.*ones(md.mesh.numberofvertices,1) +2000.*ones(md.mesh.numberofvertices,1)];
+md.inversion.cost_functions=201;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.maxiter_per_step=4*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.99*ones(md.inversion.nsteps,1);
+
+md.verbose.control=1;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Balancethickness');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient1','Gradient2','Misfits','Vx','Vy','Thickness'};
+field_tolerances={1e-12,1e-12,1e-12,1e-12,1e-12,1e-12};
+field_values={...
+	(md.results.BalancethicknessSolution.Gradient1),...
+	(md.results.BalancethicknessSolution.Gradient2),...
+	(md.results.BalancethicknessSolution.J),...
+	(md.results.BalancethicknessSolution.Vx),...
+	(md.results.BalancethicknessSolution.Vy),...
+	(md.results.BalancethicknessSolution.Thickness)
+};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test613.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test613.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test613.py	(revision 21239)
@@ -0,0 +1,52 @@
+#Test Name: 79NorthCMBalThicVxVy
+import numpy
+import copy
+from model import *
+from triangle import *
+from meshconvert import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/79North.exp',10000.)
+md=meshconvert(md)
+md=setmask(md,'../Exp/79NorthShelf.exp','')
+md=parameterize(md,'../Par/79North.py')
+md=setflowequation(md,'SSA','all')
+
+#Ice sheet only
+md=md.extract(md.mask.groundedice_levelset>0.)
+pos=numpy.nonzero(md.mesh.vertexonboundary)
+md.balancethickness.spcthickness[pos]=md.geometry.thickness[pos]
+
+#control parameters
+md.inversion.thickness_obs=copy.deepcopy(md.geometry.thickness)
+md.inversion.iscontrol=1
+md.inversion.nsteps=2
+md.inversion.control_parameters=['Vx','Vy']
+md.balancethickness.stabilization=1
+md.inversion.gradient_scaling=numpy.hstack((10./md.constants.yts*numpy.ones((md.inversion.nsteps,1)),10./md.constants.yts*numpy.ones((md.inversion.nsteps,1))))
+md.inversion.min_parameters=numpy.hstack((-2000.*numpy.ones((md.mesh.numberofvertices,1)),-2000.*numpy.ones((md.mesh.numberofvertices,1))))
+md.inversion.max_parameters=numpy.hstack((+2000.*numpy.ones((md.mesh.numberofvertices,1)),+2000.*numpy.ones((md.mesh.numberofvertices,1))))
+md.inversion.cost_functions=[201]
+md.inversion.cost_functions_coefficients=numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.maxiter_per_step=4*numpy.ones((md.inversion.nsteps,1))
+md.inversion.step_threshold=0.99*numpy.ones((md.inversion.nsteps,1))
+
+md.verbose.control=1
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,'Balancethickness')
+
+#Fields and tolerances to track changes
+field_names     =['Gradient1','Gradient2','Misfits','Vx','Vy','Thickness']
+field_tolerances=[1e-12,1e-12,1e-12,1e-12,1e-12,1e-12]
+field_values=[\
+	md.results.BalancethicknessSolution.Gradient1,\
+	md.results.BalancethicknessSolution.Gradient2,\
+	md.results.BalancethicknessSolution.J,\
+	md.results.BalancethicknessSolution.Vx,\
+	md.results.BalancethicknessSolution.Vy,\
+	md.results.BalancethicknessSolution.Thickness,\
+]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test701.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test701.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test701.m	(revision 21239)
@@ -0,0 +1,67 @@
+%Test Name: FlowbandFSshelf
+x =[1:100:3000]';
+h=linspace(1000,300,numel(x))';
+b=-917/1023*h;
+
+md=bamgflowband(model(),x,b+h,b,'hmax',80);
+
+%Geometry
+md.geometry.surface   = interp1(x,b+h,md.mesh.x);
+md.geometry.base       = interp1(x,b,md.mesh.x);
+md.geometry.thickness = md.geometry.surface-md.geometry.base;
+
+%mask
+md.mask.ice_levelset  = - ones(md.mesh.numberofvertices,1);
+md.mask.ice_levelset(find(vertexflags(md.mesh,2))) = 0;
+md.mask.groundedice_levelset = double(md.mesh.x<0)-.5;
+
+%materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+%friction
+md.friction.coefficient=zeros(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(vertexflags(md.mesh,1)))=20;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Boundary conditions
+md.stressbalance.referential  = NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.loadingforce = 0*ones(md.mesh.numberofvertices,3);
+md.stressbalance.spcvx = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvx(find(vertexflags(md.mesh,4)))=0;
+md.stressbalance.spcvy(find(vertexflags(md.mesh,4)))=0;
+
+%Misc
+md=setflowequation(md,'FS','all');
+md.stressbalance.abstol=NaN;
+%md.stressbalance.reltol=10^-16;
+md.stressbalance.FSreconditioning=1;
+md.stressbalance.maxiter=20;
+md.flowequation.augmented_lagrangian_r=10000;
+md.miscellaneous.name = 'test701';
+md.verbose=verbose('convergence',true);
+md.cluster=generic('np',2);
+
+%Go solve
+field_names={};
+field_tolerances={};
+field_values={};
+%md.initialization.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.y);
+for i={'MINI','MINIcondensed','TaylorHood','XTaylorHood','LATaylorHood','CrouzeixRaviart','LACrouzeixRaviart'}
+	disp(' ');
+	disp(['====== Testing ' i{1} ' Full-Stokes Finite element =====']);
+	md.flowequation.fe_FS=i{1};
+	md=solve(md,'Stressbalance');
+	field_names     ={field_names{:},['Vx' i{1}],['Vy' i{1}],['Vel' i{1}],['Pressure' i{1}]};
+	field_tolerances={field_tolerances{:},9e-5,9e-5,9e-5,1e-10};
+	field_values={field_values{:},...
+		(md.results.StressbalanceSolution.Vx),...
+		(md.results.StressbalanceSolution.Vy),...
+		(md.results.StressbalanceSolution.Vel),...
+		(md.results.StressbalanceSolution.Pressure),...
+		};
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test702.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test702.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test702.m	(revision 21239)
@@ -0,0 +1,65 @@
+%Test Name: FlowbandFSsheetshelf
+%mesh parameters
+x =[-5:.5:5]';
+[b h sea]=NowickiProfile(x);
+x = x*10^3;
+h = h*10^3;
+b = (b-sea)*10^3;
+
+%mesh domain
+md=bamgflowband(model(),x,b+h,b,'hmax',150);
+
+%parameterize
+md.geometry.surface   = interp1(x,b+h,md.mesh.x);
+md.geometry.base       = interp1(x,b,md.mesh.x);
+md.geometry.thickness = md.geometry.surface-md.geometry.base;
+md.mask.ice_levelset = - ones(md.mesh.numberofvertices,1);
+md.mask.ice_levelset(find(vertexflags(md.mesh,2))) = 0;
+md.mask.groundedice_levelset = double(md.mesh.x<0)-.5;
+
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.damage.D=zeros(md.mesh.numberofvertices,1);
+md.damage.spcdamage=NaN(md.mesh.numberofvertices,1);
+md.friction.coefficient=zeros(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(vertexflags(md.mesh,1)))=20;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+md.stressbalance.spcvx(find(vertexflags(md.mesh,4)))=800;
+md.stressbalance.spcvy(find(vertexflags(md.mesh,4)))=0;
+
+%Misc
+md=setflowequation(md,'FS','all');
+md.stressbalance.abstol=NaN;
+md.stressbalance.FSreconditioning=1;
+md.stressbalance.maxiter=20;
+md.flowequation.augmented_lagrangian_r=10000;
+md.flowequation.augmented_lagrangian_rhop=10000;
+md.initialization.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.y);
+md.miscellaneous.name = 'test702';
+md.cluster=generic('np',2);
+
+%Fields and tolerances to track changes
+field_names={};
+field_tolerances={};
+field_values={};
+for i={'MINI','MINIcondensed','TaylorHood','XTaylorHood','LATaylorHood','CrouzeixRaviart'}
+	disp(' ');
+	disp(['====== Testing ' i{1} ' Full-Stokes Finite element =====']);
+	md.flowequation.fe_FS=i{1};
+	md=solve(md,'Stressbalance');
+	field_names     ={field_names{:},['Vx' i{1}],['Vy' i{1}],['Vel' i{1}],['Pressure' i{1}]};
+	field_tolerances={field_tolerances{:},8e-5,8e-5,8e-5,1e-08};
+	field_values={field_values{:},...
+		(md.results.StressbalanceSolution.Vx),...
+		(md.results.StressbalanceSolution.Vy),...
+		(md.results.StressbalanceSolution.Vel),...
+		(md.results.StressbalanceSolution.Pressure),...
+		};
+end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test703.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test703.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test703.m	(revision 21239)
@@ -0,0 +1,126 @@
+%Test Name: FlowbandFSsheetshelfTrans
+%mesh parameters
+x =[-5:.5:5]';
+[b h sea]=NowickiProfile(x);
+x = x*10^3;
+h = h*10^3;
+b = (b-sea)*10^3;
+
+%mesh domain
+md=bamgflowband(model(),x,b+h,b,'hmax',150);
+
+%parameterize
+md.geometry.surface   = interp1(x,b+h,md.mesh.x);
+md.geometry.base       = interp1(x,b,md.mesh.x);
+md.geometry.thickness = md.geometry.surface-md.geometry.base;
+md.mask.ice_levelset  = - ones(md.mesh.numberofvertices,1);
+md.mask.ice_levelset(find(vertexflags(md.mesh,2))) = 0;
+md.mask.groundedice_levelset = double(md.mesh.x<0)-.5;
+
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.friction.coefficient=zeros(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(vertexflags(md.mesh,1)))=20;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+md.stressbalance.spcvx(find(vertexflags(md.mesh,4)))=800;
+md.stressbalance.spcvy(find(vertexflags(md.mesh,4)))=0;
+
+%Misc
+md=setflowequation(md,'FS','all');
+md.flowequation.fe_FS='TaylorHood';
+md.stressbalance.abstol=NaN;
+md.miscellaneous.name = 'test703';
+
+%Transient settings
+md.timestepping.time_step=0.000001;
+md.timestepping.final_time=0.000005;
+md.stressbalance.shelf_dampening=1;
+md.smb.mass_balance=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.geothermalflux=zeros(md.mesh.numberofvertices,1);
+posb=find((md.mesh.x>0) & md.mesh.vertexonbase);
+md.basalforcings.groundedice_melting_rate(posb)=18;
+md.basalforcings.floatingice_melting_rate(posb)=18;
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.thermal.spctemperature=NaN*ones(md.mesh.numberofvertices,1);
+md.transient.isthermal=0;
+md.masstransport.isfreesurface=1;
+
+%Go solve
+md.cluster=generic('np',3);
+md.stressbalance.shelf_dampening=1;
+md1=solve(md,'Transient');
+
+md.stressbalance.shelf_dampening=0;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3',...
+	'Vx1_damp','Vy1_damp','Vel1_damp','Pressure1_damp','Bed1_damp','Surface1_damp','Thickness1_damp',...
+	'Vx2_damp','Vy2_damp','Vel2_damp','Pressure2_damp','Bed2_damp','Surface2_damp','Thickness2_damp',...
+	'Vx3_damp','Vy3_damp','Vel3_damp','Pressure3_damp','Bed3_damp','Surface3_damp','Thickness3_damp'};
+field_tolerances={...
+	2e-08,2e-08,2e-08,1e-08,1e-10,1e-10,1e-10,...
+	2e-08,2e-08,2e-08,1e-08,1e-10,1e-10,1e-10,...
+	2e-08,2e-08,2e-08,1e-08,1e-10,1e-10,1e-10,...
+	5e-08,5e-08,5e-08,1e-08,1e-10,1e-10,1e-10,...
+	5e-08,5e-08,5e-08,1e-08,1e-10,1e-10,1e-10,...
+	5e-08,5e-08,5e-08,1e-08,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md1.results.TransientSolution(1).Vx),...
+	(md1.results.TransientSolution(1).Vy),...
+	(md1.results.TransientSolution(1).Vel),...
+	(md1.results.TransientSolution(1).Pressure),...
+	(md1.results.TransientSolution(1).Base),...
+	(md1.results.TransientSolution(1).Surface),...
+	(md1.results.TransientSolution(1).Thickness),...
+	(md1.results.TransientSolution(2).Vx),...
+	(md1.results.TransientSolution(2).Vy),...
+	(md1.results.TransientSolution(2).Vel),...
+	(md1.results.TransientSolution(2).Pressure),...
+	(md1.results.TransientSolution(2).Base),...
+	(md1.results.TransientSolution(2).Surface),...
+	(md1.results.TransientSolution(2).Thickness),...
+	(md1.results.TransientSolution(3).Vx),...
+	(md1.results.TransientSolution(3).Vy),...
+	(md1.results.TransientSolution(3).Vel),...
+	(md1.results.TransientSolution(3).Pressure),...
+	(md1.results.TransientSolution(3).Base),...
+	(md1.results.TransientSolution(3).Surface),...
+	(md1.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test801.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test801.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test801.m	(revision 21239)
@@ -0,0 +1,48 @@
+%Test Name: ValleyGlacierLevelsetSSA2d
+md=triangle(model(),'../Exp/Square.exp',50000);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/ValleyGlacierShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Transient;
+md.transient.isstressbalance=1;
+md.transient.ismovingfront=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=0;
+md.transient.isgroundingline=1;
+md.transient.isgia=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1',...
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2',...
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3'};
+field_tolerances={1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,...
+		1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,...
+		1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(3).Vx,...
+	md.results.TransientSolution(3).Vy,...
+	md.results.TransientSolution(3).Vel,...
+	md.results.TransientSolution(3).Pressure,...
+	md.results.TransientSolution(3).Thickness,...
+	md.results.TransientSolution(3).Surface,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test801.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test801.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test801.py	(revision 21239)
@@ -0,0 +1,57 @@
+#Test Name: ValleyGlacierLevelsetSSA2d
+from model import *
+from triangle import *
+from squaremesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',50000)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/ValleyGlacierShelf.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+#Transient
+md.transient.isstressbalance=True
+md.transient.ismovingfront=True
+md.transient.ismasstransport=True
+md.transient.issmb=True
+md.transient.isthermal=False
+md.transient.isgroundingline=True
+md.transient.isgia=False
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1',\
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2',\
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3']
+field_tolerances=[1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,\
+		1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,\
+		1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].MaskIceLevelset,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].MaskIceLevelset,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].MaskIceLevelset,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test802.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test802.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test802.m	(revision 21239)
@@ -0,0 +1,56 @@
+%Test Name: ValleyGlacierLevelsetThermalSSA3d
+md=triangle(model(),'../Exp/Square.exp',50000);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/ValleyGlacierShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Thermal model
+pos_surf=find(md.mesh.vertexonsurface);
+md.thermal.spctemperature(pos_surf)=md.initialization.temperature(pos_surf);
+
+%Transient
+md.transient.isstressbalance=1;
+md.transient.ismovingfront=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=1;
+md.transient.isgia=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1','Temperature1',...
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2','Temperature2',...
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3','Temperature3'};
+field_tolerances={1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,...
+		1e-9,1e-9,1e-10,1e-10,1e-10,1e-10,1e-10,1e-9,...
+		1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(1).Temperature,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(2).Temperature,...
+	md.results.TransientSolution(3).Vx,...
+	md.results.TransientSolution(3).Vy,...
+	md.results.TransientSolution(3).Vel,...
+	md.results.TransientSolution(3).Pressure,...
+	md.results.TransientSolution(3).Thickness,...
+	md.results.TransientSolution(3).Surface,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	md.results.TransientSolution(3).Temperature,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test802.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test802.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test802.py	(revision 21239)
@@ -0,0 +1,65 @@
+#Test Name: ValleyGlacierLevelsetThermalSSA3d
+from model import *
+from triangle import *
+from squaremesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',50000)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/ValleyGlacierShelf.py')
+md.extrude(3,2.)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+#Thermal model
+pos_surf=numpy.nonzero(md.mesh.vertexonsurface)[0]
+md.thermal.spctemperature[pos_surf]=md.initialization.temperature[pos_surf]
+
+#Transient
+md.transient.isstressbalance=True
+md.transient.ismovingfront=True
+md.transient.ismasstransport=True
+md.transient.issmb=True
+md.transient.isthermal=True
+md.transient.isgroundingline=True
+md.transient.isgia=False
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1','Temperature1',\
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2','Temperature2',\
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3','Temperature3']
+field_tolerances=[1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,\
+		1e-9,1e-9,1e-10,1e-10,1e-10,1e-10,1e-10,1e-9,\
+		1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].MaskIceLevelset,\
+	md.results.TransientSolution[0].Temperature,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].MaskIceLevelset,\
+	md.results.TransientSolution[1].Temperature,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].MaskIceLevelset,\
+	md.results.TransientSolution[2].Temperature,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test803.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test803.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test803.m	(revision 21239)
@@ -0,0 +1,61 @@
+%Test Name: ValleyGlacierLevelsetEnthalpyHO3d
+md=triangle(model(),'../Exp/Square.exp',50000);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/ValleyGlacierShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Thermal model
+pos_surf=find(md.mesh.vertexonsurface);
+md.thermal.spctemperature(pos_surf)=md.initialization.temperature(pos_surf);
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+
+%Transient
+md.transient.isstressbalance=1;
+md.transient.ismovingfront=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=1;
+md.transient.isgia=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1','Enthalpy1','Watercolumn1',...
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2','Enthalpy2','Watercolumn2',...
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3','Enthalpy3','Watercolumn3'};
+field_tolerances={1e-10,1e-10,1e-10,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+		1e-9,1e-9,1e-10,1e-10,1e-10,1e-10,1e-10,1e-9,1e-10,...
+		1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(1).Enthalpy,...
+	md.results.TransientSolution(1).Watercolumn,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(2).Enthalpy,...
+	md.results.TransientSolution(2).Watercolumn,...
+	md.results.TransientSolution(3).Vx,...
+	md.results.TransientSolution(3).Vy,...
+	md.results.TransientSolution(3).Vel,...
+	md.results.TransientSolution(3).Pressure,...
+	md.results.TransientSolution(3).Thickness,...
+	md.results.TransientSolution(3).Surface,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	md.results.TransientSolution(3).Enthalpy,...
+	md.results.TransientSolution(3).Watercolumn,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test803.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test803.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test803.py	(revision 21239)
@@ -0,0 +1,70 @@
+#Test Name: ValleyGlacierLevelsetEnthalpyHO3d
+from model import *
+from triangle import *
+from squaremesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',50000)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/ValleyGlacierShelf.py')
+md.extrude(3,2.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+#Thermal model
+pos_surf=numpy.nonzero(md.mesh.vertexonsurface)[0]
+md.thermal.spctemperature[pos_surf]=md.initialization.temperature[pos_surf]
+md.thermal.isenthalpy=True
+md.thermal.isdynamicbasalspc=True
+
+#Transient
+md.transient.isstressbalance=True
+md.transient.ismovingfront=True
+md.transient.ismasstransport=True
+md.transient.issmb=True
+md.transient.isthermal=True
+md.transient.isgroundingline=True
+md.transient.isgia=False
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1','Enthalpy1','Watercolumn1',\
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2','Enthalpy2','Watercolumn2',\
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3','Enthalpy3','Watercolumn3']
+field_tolerances=[1e-10,1e-10,1e-10,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		1e-9,1e-9,1e-10,1e-10,1e-10,1e-10,1e-10,1e-9,1e-10,\
+		1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].MaskIceLevelset,\
+	md.results.TransientSolution[0].Enthalpy,\
+	md.results.TransientSolution[0].Watercolumn,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].MaskIceLevelset,\
+	md.results.TransientSolution[1].Enthalpy,\
+	md.results.TransientSolution[1].Watercolumn,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].MaskIceLevelset,\
+	md.results.TransientSolution[2].Enthalpy,\
+	md.results.TransientSolution[2].Watercolumn,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test804.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test804.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test804.m	(revision 21239)
@@ -0,0 +1,51 @@
+%Test Name: ValleyGlacierLevelsetCalvingSIA2d
+md=triangle(model(),'../Exp/Square.exp',50000);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/ValleyGlacierShelf.par');
+md=setflowequation(md,'SIA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Transient
+md.transient.isstressbalance=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=0;
+md.transient.isgroundingline=1;
+md.transient.isgia=0;
+md.transient.ismovingfront=1;
+
+md.calving.calvingrate=1000.*ones(md.mesh.numberofvertices,1);
+md.calving.meltingrate=zeros(md.mesh.numberofvertices,1);
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1',...
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2',...
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+		2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,...
+		2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(3).Vx,...
+	md.results.TransientSolution(3).Vy,...
+	md.results.TransientSolution(3).Vel,...
+	md.results.TransientSolution(3).Pressure,...
+	md.results.TransientSolution(3).Thickness,...
+	md.results.TransientSolution(3).Surface,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test804.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test804.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test804.py	(revision 21239)
@@ -0,0 +1,61 @@
+#Test Name: ValleyGlacierLevelsetCalvingSIA2d
+from model import *
+from triangle import *
+from squaremesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',50000)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/ValleyGlacierShelf.py')
+md=setflowequation(md,'SIA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+#Transient
+md.transient.isstressbalance=True
+md.transient.ismasstransport=True
+md.transient.issmb=True
+md.transient.isthermal=False
+md.transient.isgroundingline=True
+md.transient.isgia=False
+md.transient.ismovingfront=True;
+
+md.calving.calvingrate=1000.*numpy.ones((md.mesh.numberofvertices,1))
+md.calving.meltingrate=numpy.zeros((md.mesh.numberofvertices,1))
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1',\
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2',\
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,\
+		2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].MaskIceLevelset,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].MaskIceLevelset,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].MaskIceLevelset,\
+
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test805.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test805.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test805.m	(revision 21239)
@@ -0,0 +1,64 @@
+%Test Name: ValleyGlacierLevelsetEnthCalvingHO3d
+md=triangle(model(),'../Exp/Square.exp',50000);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/ValleyGlacierShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Thermal model
+pos_surf=find(md.mesh.vertexonsurface);
+md.thermal.spctemperature(pos_surf)=md.initialization.temperature(pos_surf);
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+
+%Transient
+md.transient.isstressbalance=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=1;
+md.transient.isgia=0;
+md.transient.ismovingfront=1;
+
+md.calving.calvingrate=1000.*ones(md.mesh.numberofvertices,1);
+md.calving.meltingrate=zeros(md.mesh.numberofvertices,1);
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1','Enthalpy1','Watercolumn1',...
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2','Enthalpy2','Watercolumn2',...
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3','Enthalpy3','Watercolumn3'};
+field_tolerances={1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,...
+		1e-9,1e-9,1e-10,1e-10,1e-10,1e-10,1e-10,1e-9,1e-10,...
+		1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(1).Enthalpy,...
+	md.results.TransientSolution(1).Watercolumn,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(2).Enthalpy,...
+	md.results.TransientSolution(2).Watercolumn,...
+	md.results.TransientSolution(3).Vx,...
+	md.results.TransientSolution(3).Vy,...
+	md.results.TransientSolution(3).Vel,...
+	md.results.TransientSolution(3).Pressure,...
+	md.results.TransientSolution(3).Thickness,...
+	md.results.TransientSolution(3).Surface,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	md.results.TransientSolution(3).Enthalpy,...
+	md.results.TransientSolution(3).Watercolumn,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test805.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test805.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test805.py	(revision 21239)
@@ -0,0 +1,73 @@
+#Test Name: ValleyGlacierLevelsetEnthCalvingHO3d
+from model import *
+from triangle import *
+from squaremesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',50000)
+md=setmask(md,'','')
+md=parameterize(md,'../Par/ValleyGlacierShelf.py')
+md.extrude(3,2.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+#Thermal model
+pos_surf=numpy.nonzero(md.mesh.vertexonsurface)[0]
+md.thermal.spctemperature[pos_surf]=md.initialization.temperature[pos_surf]
+md.thermal.isenthalpy=True
+md.thermal.isdynamicbasalspc=True
+
+#Transient
+md.transient.isstressbalance=True
+md.transient.ismasstransport=True
+md.transient.issmb=True
+md.transient.isthermal=True
+md.transient.isgroundingline=True
+md.transient.isgia=False
+md.transient.ismovingfront=True;
+
+md.calving.calvingrate=1000.*numpy.ones((md.mesh.numberofvertices,1))
+md.calving.meltingrate=numpy.zeros((md.mesh.numberofvertices,1))
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1','Enthalpy1','Watercolumn1',\
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2','Enthalpy2','Watercolumn2',\
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3','Enthalpy3','Watercolumn3']
+field_tolerances=[1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,\
+		1e-9,1e-9,1e-10,1e-10,1e-10,1e-10,1e-10,1e-9,1e-10,\
+		1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].MaskIceLevelset,\
+	md.results.TransientSolution[0].Enthalpy,\
+	md.results.TransientSolution[0].Watercolumn,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].MaskIceLevelset,\
+	md.results.TransientSolution[1].Enthalpy,\
+	md.results.TransientSolution[1].Watercolumn,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].MaskIceLevelset,\
+	md.results.TransientSolution[2].Enthalpy,\
+	md.results.TransientSolution[2].Watercolumn,\
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test806.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test806.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test806.m	(revision 21239)
@@ -0,0 +1,74 @@
+%Test Name: SquareShelfLevelsetCalvingSSA2dLevermann
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+x = md.mesh.x;
+xmin = min(x);
+xmax = max(x);
+Lx = (xmax-xmin);
+alpha = 2./3.;
+md.mask.ice_levelset = ((x - alpha*Lx)>0) - ((x - alpha*Lx)<0);
+
+md.timestepping.time_step=10;
+md.timestepping.final_time=30;
+
+%Transient
+md.transient.isstressbalance=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=0;
+md.transient.isgroundingline=0;
+md.transient.isgia=0;
+md.transient.ismovingfront=1;
+
+md.calving=calvinglevermann();
+md.calving.coeff=4.89e13*ones(md.mesh.numberofvertices,1);
+md.calving.meltingrate=zeros(md.mesh.numberofvertices,1);
+md.levelset.spclevelset=NaN(md.mesh.numberofvertices,1);
+
+md.transient.requested_outputs={'default','StrainRateparallel','StrainRateperpendicular','Calvingratex','Calvingratey','CalvingCalvingrate'};
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1','StrainRateparallel1','StrainRateperpendicular1','CalvingCalvingrate1'...
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2','StrainRateparallel2','StrainRateperpendicular2','CalvingCalvingrate2'...
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3','StrainRateparallel3','StrainRateperpendicular3','CalvingCalvingrate3'};
+field_tolerances={1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,...
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,...
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,1e-11,5e-11,5e-11,5e-11};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(1).StrainRateparallel,...
+	md.results.TransientSolution(1).StrainRateperpendicular,...
+	md.results.TransientSolution(1).CalvingCalvingrate,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(2).StrainRateparallel,...
+	md.results.TransientSolution(2).StrainRateperpendicular,...
+	md.results.TransientSolution(2).CalvingCalvingrate,...
+	md.results.TransientSolution(3).Vx,...
+	md.results.TransientSolution(3).Vy,...
+	md.results.TransientSolution(3).Vel,...
+	md.results.TransientSolution(3).Pressure,...
+	md.results.TransientSolution(3).Thickness,...
+	md.results.TransientSolution(3).Surface,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	md.results.TransientSolution(3).StrainRateparallel,...
+	md.results.TransientSolution(3).StrainRateperpendicular,...
+	md.results.TransientSolution(3).CalvingCalvingrate,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test806.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test806.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test806.py	(revision 21239)
@@ -0,0 +1,85 @@
+#Test Name: SquareShelfLevelsetCalvingSSA2dLevermann
+from model import *
+from triangle import *
+from squaremesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+import numpy
+
+md=triangle(model(),'../Exp/Square.exp',50000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+x = md.mesh.x
+xmin = min(x)
+xmax = max(x)
+Lx = (xmax-xmin)
+alpha = 2./3.
+md.mask.ice_levelset = numpy.float_((x - alpha*Lx)>0) - numpy.float_((x - alpha*Lx)<0)
+
+md.timestepping.time_step=10
+md.timestepping.final_time=30
+
+#Transient
+md.transient.isstressbalance=True
+md.transient.ismasstransport=True
+md.transient.issmb=True
+md.transient.isthermal=False
+md.transient.isgroundingline=False
+md.transient.isgia=False
+md.transient.ismovingfront=True;
+
+md.calving=calvinglevermann()
+md.calving.coeff=4.89e13*numpy.ones((md.mesh.numberofvertices,1))
+md.calving.meltingrate=numpy.zeros((md.mesh.numberofvertices,1))
+md.levelset.spclevelset=numpy.float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+
+md.transient.requested_outputs=['default','StrainRateparallel','StrainRateperpendicular','Calvingratex','Calvingratey','CalvingCalvingrate']
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1','StrainRateparallel1','StrainRateperpendicular1','CalvingCalvingrate1',\
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2','StrainRateparallel2','StrainRateperpendicular2','CalvingCalvingrate2',\
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3','StrainRateparallel3','StrainRateperpendicular3','CalvingCalvingrate3']
+field_tolerances=[1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,\
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,\
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,1e-11,5e-11,5e-11,1e-11]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].MaskIceLevelset,\
+	md.results.TransientSolution[0].StrainRateparallel,\
+	md.results.TransientSolution[0].StrainRateperpendicular,\
+	md.results.TransientSolution[0].CalvingCalvingrate,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].MaskIceLevelset,\
+	md.results.TransientSolution[1].StrainRateparallel,\
+	md.results.TransientSolution[1].StrainRateperpendicular,\
+	md.results.TransientSolution[1].CalvingCalvingrate,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].MaskIceLevelset,\
+	md.results.TransientSolution[2].StrainRateparallel,\
+	md.results.TransientSolution[2].StrainRateperpendicular,\
+	md.results.TransientSolution[2].CalvingCalvingrate,\
+
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test807.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test807.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test807.m	(revision 21239)
@@ -0,0 +1,62 @@
+%Test Name: SquareShelfLevelsetMeltingSSA2d
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+x = md.mesh.x;
+xmin = min(x);
+xmax = max(x);
+Lx = (xmax-xmin);
+alpha = 2./3.;
+md.mask.ice_levelset = ((x - alpha*Lx)>0) - ((x - alpha*Lx)<0);
+
+md.timestepping.time_step=10;
+md.timestepping.final_time=30;
+
+%Transient
+md.transient.isstressbalance=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=0;
+md.transient.isgroundingline=0;
+md.transient.isgia=0;
+md.transient.ismovingfront=1;
+
+md.calving.calvingrate=zeros(md.mesh.numberofvertices,1);
+md.calving.meltingrate=10000*ones(md.mesh.numberofvertices,1);
+md.levelset.spclevelset=NaN(md.mesh.numberofvertices,1);
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1'...
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2'...
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3'};
+field_tolerances={1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,...
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,5e-11,...
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,5e-11};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(3).Vx,...
+	md.results.TransientSolution(3).Vy,...
+	md.results.TransientSolution(3).Vel,...
+	md.results.TransientSolution(3).Pressure,...
+	md.results.TransientSolution(3).Thickness,...
+	md.results.TransientSolution(3).Surface,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test807.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test807.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test807.py	(revision 21239)
@@ -0,0 +1,73 @@
+#Test Name: SquareShelfLevelsetMeltingSSA2d
+from model import *
+from triangle import *
+from squaremesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from MatlabFuncs import *
+import numpy
+
+md=triangle(model(),'../Exp/Square.exp',50000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+x = md.mesh.x
+xmin = min(x)
+xmax = max(x)
+Lx = (xmax-xmin)
+alpha = 2./3.
+md.mask.ice_levelset = numpy.float_((x - alpha*Lx)>0) - numpy.float_((x - alpha*Lx)<0)
+
+md.timestepping.time_step=10
+md.timestepping.final_time=30
+
+#Transient
+md.transient.isstressbalance=True
+md.transient.ismasstransport=True
+md.transient.issmb=True
+md.transient.isthermal=False
+md.transient.isgroundingline=False
+md.transient.isgia=False
+md.transient.ismovingfront=True;
+
+md.calving.calvingrate=numpy.zeros((md.mesh.numberofvertices,1))
+md.calving.meltingrate=10000*numpy.ones((md.mesh.numberofvertices,1))
+md.levelset.spclevelset=numpy.float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+
+md=solve(md,'Transient')
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1',\
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2',\
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3']
+field_tolerances=[1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,\
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,5e-11,\
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,5e-11]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].MaskIceLevelset,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].MaskIceLevelset,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].MaskIceLevelset,\
+
+	]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test808.m
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test808.m	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/NightlyRun/test808.m	(revision 21239)
@@ -0,0 +1,66 @@
+%Test Name: SquareShelfLevelsetCalvingSSA2dMinThickness
+md=triangle(model(),'../Exp/Square.exp',30000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+x = md.mesh.x;
+xmin = min(x);
+xmax = max(x);
+Lx = (xmax-xmin);
+alpha = 2./3.;
+md.mask.ice_levelset = -1+2*(md.mesh.y>9e5);
+
+md.timestepping.time_step=1;
+md.timestepping.final_time=30;
+
+%Transient
+md.transient.isstressbalance=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=0;
+md.transient.isgroundingline=0;
+md.transient.isgia=0;
+md.transient.ismovingfront=1;
+
+md.calving=calvingminthickness();
+md.calving.min_thickness=400;
+md.calving.meltingrate=zeros(md.mesh.numberofvertices,1);
+md.levelset.spclevelset=NaN(md.mesh.numberofvertices,1);
+md.levelset.reinit_frequency=1;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names ={...
+	'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1'...
+	'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2'...
+	'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3'};
+field_tolerances={...
+	1e-8,1e-8,1e-8,1e-9,1e-9,1e-9,2e-9,...
+	1e-8,1e-8,1e-8,1e-9,1e-9,1e-9,2e-9,...
+	1e-8,1e-8,1e-8,1e-9,1e-9,1e-9,2e-9};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(3).Vx,...
+	md.results.TransientSolution(3).Vy,...
+	md.results.TransientSolution(3).Vel,...
+	md.results.TransientSolution(3).Pressure,...
+	md.results.TransientSolution(3).Thickness,...
+	md.results.TransientSolution(3).Surface,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	};
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/79North.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/79North.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/79North.par	(revision 21239)
@@ -0,0 +1,63 @@
+%Start defining model parameters here
+
+%Geometry and observation
+x = archread('../Data/79North.arch','x');
+y = archread('../Data/79North.arch','y');
+vx = archread('../Data/79North.arch','vx');
+vy = archread('../Data/79North.arch','vy');
+index = archread('../Data/79North.arch','index');
+surface = archread('../Data/79North.arch','surface');
+thickness = archread('../Data/79North.arch','thickness');
+x = x{1};
+y = y{1};
+vx = vx{1};
+vy = vy{1};
+index = index{1};
+surface = surface{1};
+thickness = thickness{1};
+md.initialization.vx =InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+md.initialization.vy =InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+md.geometry.surface  =InterpFromMeshToMesh2d(index,x,y,surface,md.mesh.x,md.mesh.y);
+md.geometry.thickness=InterpFromMeshToMesh2d(index,x,y,thickness,md.mesh.x,md.mesh.y);
+md.geometry.base=md.geometry.surface-md.geometry.thickness;
+clear surface thickness vx vy x y index;
+
+%Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+%Friction
+md.friction.coefficient=50.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Ice shelf melting and surface mass balance 
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate(find(md.mask.groundedice_levelset<0.))=0.;
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.smb.mass_balance=15.*ones(md.mesh.numberofvertices,1);
+
+%Numerical parameters
+md.stressbalance.viscosity_overshoot=0.3;
+md.masstransport.stabilization=1;
+md.thermal.stabilization=1;
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.timestepping.time_step=1.;
+md.timestepping.final_time=3.;
+md.stressbalance.restol=0.05;
+md.stressbalance.reltol=0.005;
+md.steadystate.reltol=0.005;
+md.stressbalance.abstol=NaN;
+
+%Boundary conditions:
+md=SetMarineIceSheetBC(md);
+pos=find(md.mesh.vertexonboundary);
+md.balancethickness.spcthickness(pos)=md.geometry.thickness(pos);
+md.masstransport.spcthickness(pos)=md.geometry.thickness(pos);
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/79North.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/79North.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/79North.py	(revision 21239)
@@ -0,0 +1,66 @@
+import os.path
+import inspect
+from arch import *
+import numpy
+from verbose import verbose 
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from paterson import paterson 
+from SetMarineIceSheetBC import SetMarineIceSheetBC
+
+#Start defining model parameters here
+
+#Geometry and observation
+x         = numpy.array(archread('../Data/79North.arch','x'))
+y         = numpy.array(archread('../Data/79North.arch','y'))
+vx        = numpy.array(archread('../Data/79North.arch','vx'));
+vy        = numpy.array(archread('../Data/79North.arch','vy'));
+index     = numpy.array(archread('../Data/79North.arch','index')).astype(int);
+surface   = numpy.array(archread('../Data/79North.arch','surface')); 
+thickness = numpy.array(archread('../Data/79North.arch','thickness')); 
+
+[md.initialization.vx]  = InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y)
+[md.initialization.vy]  = InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y)
+[md.geometry.surface]   = InterpFromMeshToMesh2d(index,x,y,surface,md.mesh.x,md.mesh.y)
+[md.geometry.thickness] = InterpFromMeshToMesh2d(index,x,y,thickness,md.mesh.x,md.mesh.y)
+md.geometry.base         = md.geometry.surface-md.geometry.thickness
+
+#Materials
+md.initialization.temperature=(273.-20.)*numpy.ones((md.mesh.numberofvertices,1))
+md.materials.rheology_B=paterson(md.initialization.temperature)
+md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
+md.initialization.temperature=md.initialization.temperature
+
+#Friction
+md.friction.coefficient=50.*numpy.ones((md.mesh.numberofvertices,1))
+md.friction.coefficient[numpy.nonzero(md.mask.groundedice_levelset<0.)[0]]=0.
+md.friction.p=numpy.ones((md.mesh.numberofelements,1))
+md.friction.q=numpy.ones((md.mesh.numberofelements,1))
+
+#Ice shelf melting and surface mass balance 
+md.basalforcings.floatingice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
+md.basalforcings.floatingice_melting_rate[numpy.nonzero(md.mask.groundedice_levelset<0.)[0]]=0.
+md.basalforcings.groundedice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
+md.smb.mass_balance=15*numpy.ones((md.mesh.numberofvertices,1))
+
+#Numerical parameters
+md.stressbalance.viscosity_overshoot=0.3
+md.masstransport.stabilization=1
+md.thermal.stabilization=1
+md.verbose=verbose(0)
+md.settings.waitonlock=30
+md.timestepping.time_step=1.
+md.timestepping.final_time=3.
+md.stressbalance.restol=0.05
+md.stressbalance.reltol=0.005
+md.steadystate.reltol=0.005
+md.stressbalance.abstol=float('NaN')
+
+#Boundary conditions:
+md=SetMarineIceSheetBC(md)
+pos=numpy.nonzero(md.mesh.vertexonboundary)
+md.balancethickness.spcthickness[pos]=md.geometry.thickness[pos]
+md.masstransport.spcthickness[pos]=md.geometry.thickness[pos]
+
+#Change name so that no test have the same name
+if len(inspect.stack()) > 2:
+	md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/GiaBenchmarksAB.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/GiaBenchmarksAB.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/GiaBenchmarksAB.par	(revision 21239)
@@ -0,0 +1,77 @@
+%Geometry specific to Experiments A and B 
+rad=600000;
+nv=md.mesh.numberofvertices; 
+for i=1:nv,
+	dist=sqrt(md.mesh.x(i).^2+md.mesh.y(i)^2);
+	if (dist <= rad)
+		md.geometry.thickness(i)=2000.0;
+	else
+		md.geometry.thickness(i)=1.0; % non-zero thickness
+	end
+end
+md.geometry.thickness=md.geometry.thickness';
+md.geometry.base=zeros(md.mesh.numberofvertices,1); 
+md.geometry.surface=md.geometry.thickness+md.geometry.base; 
+
+%Ice density used for benchmarking, not 917 kg/m^3
+md.materials.rho_ice=1000; %kg m^3
+
+%GIA parameters specific to Experiments A  and B
+md.gia.mantle_viscosity=10^21*ones(md.mesh.numberofvertices,1);    %in Pa.s
+md.gia.lithosphere_thickness=100*ones(md.mesh.numberofvertices,1); %in km
+md.materials.lithosphere_shear_modulus=6.7*10^10;                  %in Pa
+md.materials.lithosphere_density=3.36;                             %in g/cm^3
+md.materials.mantle_shear_modulus=1.45*10^11;                      %in Pa
+md.materials.mantle_density=3.38;                                  %in g/cm^3
+
+
+%Initial velocity 
+x     = archread('../Data/SquareSheetConstrained.arch','x');
+y     = archread('../Data/SquareSheetConstrained.arch','y');
+vx    = archread('../Data/SquareSheetConstrained.arch','vx');
+vy    = archread('../Data/SquareSheetConstrained.arch','vy');
+index = archread('../Data/SquareSheetConstrained.arch','index');
+
+x = x{1};
+y = y{1};
+vx = vx{1};
+vy = vy{1};
+index = index{1};
+
+md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+clear vx vy x y index;
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+%Friction
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.stressbalance.viscosity_overshoot=0.0;
+md.masstransport.stabilization=1.;
+md.thermal.stabilization=1.;
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.stressbalance.restol=0.05;
+md.steadystate.reltol=0.05;
+md.stressbalance.reltol=0.05;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=1.;
+md.timestepping.final_time=3.;
+
+%Boundary conditions:
+md=SetIceSheetBC(md);
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/GiaBenchmarksCD.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/GiaBenchmarksCD.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/GiaBenchmarksCD.par	(revision 21239)
@@ -0,0 +1,76 @@
+%Geometry specific to Experiments C and D  
+rad=800000;
+nv=md.mesh.numberofvertices; 
+for i=1:nv,
+	dist=sqrt(md.mesh.x(i).^2+md.mesh.y(i)^2);
+	if (dist <= rad)
+		md.geometry.thickness(i)=3000.0;
+	else
+		md.geometry.thickness(i)=1.0; % non-zero thickness
+	end
+end
+md.geometry.thickness=md.geometry.thickness';
+md.geometry.base=zeros(md.mesh.numberofvertices,1); 
+md.geometry.surface=md.geometry.thickness+md.geometry.base; 
+
+%Ice density used for benchmarking, not 917 kg/m^3
+md.materials.rho_ice=1000; %kg m^3
+
+%GIA parameters specific to Experiments A  and B
+md.gia.mantle_viscosity=10^21*ones(md.mesh.numberofvertices,1);    %in Pa.s
+md.gia.lithosphere_thickness=100*ones(md.mesh.numberofvertices,1); %in km
+md.materials.lithosphere_shear_modulus=6.7*10^10;                  %in Pa
+md.materials.lithosphere_density=3.32;                             %in g/cm^3
+md.materials.mantle_shear_modulus=1.45*10^11;                      %in Pa
+md.materials.mantle_density=3.34;                                  %in g/cm^3
+
+%Initial velocity 
+x     = archread('../Data/SquareSheetConstrained.arch','x');
+y     = archread('../Data/SquareSheetConstrained.arch','y');
+vx    = archread('../Data/SquareSheetConstrained.arch','vx');
+vy    = archread('../Data/SquareSheetConstrained.arch','vy');
+index = archread('../Data/SquareSheetConstrained.arch','index');
+
+x = x{1};
+y = y{1};
+vx = vx{1};
+vy = vy{1};
+index = index{1};
+
+md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+clear vx vy x y index;
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+%Friction
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.stressbalance.viscosity_overshoot=0.0;
+md.masstransport.stabilization=1.;
+md.thermal.stabilization=1.;
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.stressbalance.restol=0.05;
+md.steadystate.reltol=0.05;
+md.stressbalance.reltol=0.05;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=1.;
+md.timestepping.final_time=3.;
+
+%Boundary conditions:
+md=SetIceSheetBC(md);
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
+
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPA.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPA.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPA.par	(revision 21239)
@@ -0,0 +1,20 @@
+%Ok, start defining model parameters here
+
+disp('      creating thickness');
+md.geometry.surface=-md.mesh.x*tan(0.5*pi/180.);
+md.geometry.base=md.geometry.surface-1000.+500.*sin(md.mesh.x*2.*pi/max(md.mesh.x)).*sin(md.mesh.y*2.*pi/max(md.mesh.x));
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+disp('      creating drag');
+md.friction.coefficient=200.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=6.8067*10^7*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      boundary conditions for stressbalance model');
+%Create node on boundary first (because we cannot use mesh)
+md=SetIceSheetBC(md);
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPA.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPA.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPA.py	(revision 21239)
@@ -0,0 +1,23 @@
+import numpy
+from SetIceSheetBC import SetIceSheetBC
+
+#Ok, start defining model parameters here
+
+print "      creating thickness"
+md.geometry.surface=-md.mesh.x.reshape(-1,1)*numpy.tan(0.5*numpy.pi/180.)
+md.geometry.base=md.geometry.surface-1000.+500.*numpy.sin(md.mesh.x.reshape(-1,1)*2.*numpy.pi/numpy.max(md.mesh.x))*numpy.sin(md.mesh.y.reshape(-1,1)*2.*numpy.pi/numpy.max(md.mesh.x))
+md.geometry.thickness=md.geometry.surface-md.geometry.base
+
+print "      creating drag"
+md.friction.coefficient=200.*numpy.ones((md.mesh.numberofvertices,1))
+md.friction.coefficient[numpy.nonzero(md.mask.groundedice_levelset<0.)[0]]=0.
+md.friction.p=numpy.ones((md.mesh.numberofelements,1))
+md.friction.q=numpy.ones((md.mesh.numberofelements,1))
+
+print "      creating flow law parameter"
+md.materials.rheology_B=6.8067*10**7*numpy.ones((md.mesh.numberofvertices,1))
+md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
+
+print "      boundary conditions for stressbalance model"
+#Create node on boundary first (because we cannot use mesh)
+md=SetIceSheetBC(md)
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPB.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPB.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPB.par	(revision 21239)
@@ -0,0 +1,20 @@
+%Ok, start defining model parameters here
+
+disp('      creating thickness');
+md.geometry.surface=-md.mesh.x*tan(0.5*pi/180.);
+md.geometry.base=md.geometry.surface-1000.+500.*sin(md.mesh.x*2.*pi/max(md.mesh.x));
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+disp('      creating drag');
+md.friction.coefficient=200.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=6.8067*10^7*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      boundary conditions for stressbalance model');
+%Create node on boundary first (because we cannot use mesh)
+md=SetIceSheetBC(md);
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPB.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPB.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPB.py	(revision 21239)
@@ -0,0 +1,23 @@
+import numpy
+from SetIceSheetBC import SetIceSheetBC
+
+#Ok, start defining model parameters here
+
+print "      creating thickness"
+md.geometry.surface=-md.mesh.x.reshape(-1,1)*numpy.tan(0.5*numpy.pi/180.)
+md.geometry.base=md.geometry.surface-1000.+500.*numpy.sin(md.mesh.x.reshape(-1,1)*2.*numpy.pi/numpy.max(md.mesh.x))
+md.geometry.thickness=md.geometry.surface-md.geometry.base
+
+print "      creating drag"
+md.friction.coefficient=200.*numpy.ones((md.mesh.numberofvertices,1))
+md.friction.coefficient[numpy.nonzero(md.mask.groundedice_levelset<0.)[0]]=0.
+md.friction.p=numpy.ones((md.mesh.numberofelements,1))
+md.friction.q=numpy.ones((md.mesh.numberofelements,1))
+
+print "      creating flow law parameter"
+md.materials.rheology_B=6.8067*10**7*numpy.ones((md.mesh.numberofvertices,1))
+md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
+
+print "      boundary conditions for stressbalance model"
+#Create node on boundary first (because we cannot use mesh)
+md=SetIceSheetBC(md)
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPC.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPC.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPC.par	(revision 21239)
@@ -0,0 +1,21 @@
+%Ok, start defining model parameters here
+
+disp('      creating thickness');
+md.geometry.surface=2000.-md.mesh.x*tan(0.1*pi/180.); %to have z>0
+md.geometry.base=md.geometry.surface-1000.;
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+disp('      creating drag');
+%md.friction.coefficient=sqrt(md.constants.yts.*(1000.+1000.*sin(md.mesh.x*2.*pi/max(md.mesh.x/2.)).*sin(md.mesh.y*2.*pi/max(md.mesh.x/2.)))./(md.constants.g*(md.materials.rho_ice*md.geometry.thickness+md.materials.rho_water*md.geometry.base)));
+md.friction.coefficient=sqrt(md.constants.yts.*(1000.+1000.*sin(md.mesh.x*2.*pi/max(md.mesh.x)).*sin(md.mesh.y*2.*pi/max(md.mesh.x))));
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=zeros(md.mesh.numberofelements,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=6.8067*10^7*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      boundary conditions for stressbalance model:');
+%Create node on boundary first (because we can not use mesh)
+md=SetIceSheetBC(md);
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPC.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPC.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPC.py	(revision 21239)
@@ -0,0 +1,24 @@
+import numpy
+from SetIceSheetBC import SetIceSheetBC
+
+#Ok, start defining model parameters here
+
+print "      creating thickness"
+md.geometry.surface=2000.-md.mesh.x.reshape(-1,1)*numpy.tan(0.1*numpy.pi/180.)    #to have z>0
+md.geometry.base=md.geometry.surface-1000.
+md.geometry.thickness=md.geometry.surface-md.geometry.base
+
+print "      creating drag"
+#md.friction.coefficient=sqrt(md.constants.yts.*(1000.+1000.*sin(md.mesh.x*2.*pi/max(md.mesh.x/2.)).*sin(md.mesh.y*2.*pi/max(md.mesh.x/2.)))./(md.constants.g*(md.materials.rho_ice*md.geometry.thickness+md.materials.rho_water*md.geometry.base)));
+md.friction.coefficient=numpy.sqrt(md.constants.yts*(1000.+1000.*numpy.sin(md.mesh.x.reshape(-1,1)*2.*numpy.pi/numpy.max(md.mesh.x))*numpy.sin(md.mesh.y.reshape(-1,1)*2.*numpy.pi/numpy.max(md.mesh.x))))
+md.friction.coefficient[numpy.nonzero(md.mask.groundedice_levelset<0.)[0]]=0.
+md.friction.p=numpy.ones((md.mesh.numberofelements,1))
+md.friction.q=numpy.zeros((md.mesh.numberofelements,1))
+
+print "      creating flow law parameter"
+md.materials.rheology_B=6.8067*10**7*numpy.ones((md.mesh.numberofvertices,1))
+md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
+
+print "      boundary conditions for stressbalance model:"
+#Create node on boundary first (because we can not use mesh)
+md=SetIceSheetBC(md)
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPD.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPD.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPD.par	(revision 21239)
@@ -0,0 +1,20 @@
+%Ok, start defining model parameters here
+
+disp('      creating thickness');
+md.geometry.surface=2000.-md.mesh.x*tan(0.1*pi/180.); %to have z>0
+md.geometry.base=md.geometry.surface-1000.;
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+disp('      creating drag');
+md.friction.coefficient=sqrt(md.constants.yts.*(1000.+1000.*sin(md.mesh.x*2.*pi/max(md.mesh.x))));
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=zeros(md.mesh.numberofelements,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=6.8067*10^7*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      boundary conditions for stressbalance model:');
+%Create node on boundary first (because we can not use mesh)
+md=SetIceSheetBC(md);
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPD.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPD.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPD.py	(revision 21239)
@@ -0,0 +1,23 @@
+import numpy
+from SetIceSheetBC import SetIceSheetBC
+
+#Ok, start defining model parameters here
+
+print "      creating thickness"
+md.geometry.surface=2000.-md.mesh.x.reshape(-1,1)*numpy.tan(0.1*numpy.pi/180.)    #to have z>0
+md.geometry.base=md.geometry.surface-1000.
+md.geometry.thickness=md.geometry.surface-md.geometry.base
+
+print "      creating drag"
+md.friction.coefficient=numpy.sqrt(md.constants.yts*(1000.+1000.*numpy.sin(md.mesh.x.reshape(-1,1)*2.*numpy.pi/numpy.max(md.mesh.x))))
+md.friction.coefficient[numpy.nonzero(md.mask.groundedice_levelset<0.)[0]]=0.
+md.friction.p=numpy.ones((md.mesh.numberofelements,1))
+md.friction.q=numpy.zeros((md.mesh.numberofelements,1))
+
+print "      creating flow law parameter"
+md.materials.rheology_B=6.8067*10**7*numpy.ones((md.mesh.numberofvertices,1))
+md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
+
+print "      boundary conditions for stressbalance model:"
+#Create node on boundary first (because we can not use mesh)
+md=SetIceSheetBC(md)
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPE.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPE.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPE.par	(revision 21239)
@@ -0,0 +1,31 @@
+%Ok, start defining model parameters here
+
+disp('      creating thickness');
+data=archread('../Data/ISMIPE.arch','data');
+data = data{1};
+md.geometry.surface=zeros(md.mesh.numberofvertices,1);
+md.geometry.base=zeros(md.mesh.numberofvertices,1);
+for i=1:md.mesh.numberofvertices
+	y=md.mesh.y(i);
+	point1=floor(y/100.)+1;
+	point2=min(point1+1,51);
+	coeff=(y-(point1-1.)*100.)/100.;
+	md.geometry.base(i)=(1.-coeff)*data(point1,2)+coeff*data(point2,2);
+	md.geometry.surface(i)=(1.-coeff)*data(point1,3)+coeff*data(point2,3);
+end
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+md.geometry.thickness(find(~md.geometry.thickness))=0.01;
+md.geometry.base=md.geometry.surface-md.geometry.thickness;
+
+disp('      creating drag');
+md.friction.coefficient=zeros(md.mesh.numberofvertices,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=6.8067*10^7*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      boundary conditions for stressbalance model:');
+%Create node on boundary first (because we can not use mesh)
+md=SetIceSheetBC(md);
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPE.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPE.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPE.py	(revision 21239)
@@ -0,0 +1,33 @@
+import numpy
+from arch import *
+from SetIceSheetBC import SetIceSheetBC
+
+#Ok, start defining model parameters here
+
+print "      creating thickness"
+data = numpy.array(archread('../Data/ISMIPE.arch','data'));
+md.geometry.surface=numpy.zeros((md.mesh.numberofvertices,1))
+md.geometry.base=numpy.zeros((md.mesh.numberofvertices,1))
+for i in xrange(0,md.mesh.numberofvertices):
+	y=md.mesh.y[i]
+	point1=numpy.floor(y/100.)
+	point2=numpy.minimum(point1+1,50)
+	coeff=(y-(point1-1.)*100.)/100.
+	md.geometry.base[i]=(1.-coeff)*data[point1,1]+coeff*data[point2,1]
+	md.geometry.surface[i]=(1.-coeff)*data[point1,2]+coeff*data[point2,2]
+md.geometry.thickness=md.geometry.surface-md.geometry.base
+md.geometry.thickness[numpy.nonzero(numpy.logical_not(md.geometry.thickness))]=0.01
+md.geometry.base=md.geometry.surface-md.geometry.thickness
+
+print "      creating drag"
+md.friction.coefficient=numpy.zeros((md.mesh.numberofvertices,1))
+md.friction.p=numpy.ones((md.mesh.numberofelements,1))
+md.friction.q=numpy.ones((md.mesh.numberofelements,1))
+
+print "      creating flow law parameter"
+md.materials.rheology_B=6.8067*10**7*numpy.ones((md.mesh.numberofvertices,1))
+md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
+
+print "      boundary conditions for stressbalance model:"
+#Create node on boundary first (because we can not use mesh)
+md=SetIceSheetBC(md)
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPF.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPF.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPF.par	(revision 21239)
@@ -0,0 +1,47 @@
+%Ok, start defining model parameters here
+md.verbose=2;
+
+disp('      creating thickness');
+md.geometry.surface=-md.mesh.x*tan(3.*pi/180.);
+%md.geometry.base=md.geometry.surface-1000.;
+md.geometry.base=md.geometry.surface-1000.+100.*exp(-((md.mesh.x-max(md.mesh.x)/2.).^2+(md.mesh.y-max(md.mesh.y)/2.).^2)/(10000.^2));
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+disp('      creating drag');
+md.friction.coefficient=sqrt(md.constants.yts/(2.140373*10^-7*1000.))*ones(md.mesh.numberofvertices,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=zeros(md.mesh.numberofelements,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=1.4734*10^14*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_n=1.*ones(md.mesh.numberofelements,1);
+md.materials.rheology_law='None';
+
+disp('      boundary conditions for stressbalance model');
+%Create node on boundary first (because we cannot use mesh)
+md=SetIceSheetBC(md);
+md.stressbalance.spcvx=100.*ones(md.mesh.numberofvertices,1);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.vel=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+md.initialization.temperature=255.*ones(md.mesh.numberofvertices,1);
+pos=find(md.mesh.x==min(md.mesh.x) | md.mesh.x==max(md.mesh.x) | md.mesh.y==min(md.mesh.y) | md.mesh.y==max(md.mesh.y));
+md.balancethickness.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.balancethickness.spcthickness(pos)=md.geometry.thickness(pos);
+md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.masstransport.spcthickness(pos)=md.geometry.thickness(pos);
+md.thermal.spctemperature=255.*ones(md.mesh.numberofvertices,1);
+md.basalforcings.geothermalflux=0.4*ones(md.mesh.numberofvertices,1);
+
+%Parallel options
+md.mesh.average_vertex_connectivity=200;
+
+%Transient options
+md.timestepping.time_step=1.;
+md.timestepping.final_time=10.;
+md.masstransport.stabilization=1;
+md.thermal.stabilization=1;
+md.thermal.penalty_threshold=10^5;
+md.transient.isthermal=0;
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPF.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPF.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ISMIPF.py	(revision 21239)
@@ -0,0 +1,50 @@
+import numpy
+from SetIceSheetBC import SetIceSheetBC
+
+#Ok, start defining model parameters here
+md.verbose=2
+
+print "      creating thickness"
+md.geometry.surface=-md.mesh.x.reshape(-1,1)*numpy.tan(3.*numpy.pi/180.)
+#md.geometry.base=md.geometry.surface-1000.
+md.geometry.base=md.geometry.surface-1000.+100.*numpy.exp(-((md.mesh.x.reshape(-1,1)-numpy.max(md.mesh.x)/2.)**2+(md.mesh.y.reshape(-1,1)-numpy.max(md.mesh.y)/2.)**2)/(10000.**2))
+md.geometry.thickness=md.geometry.surface-md.geometry.base
+
+print "      creating drag"
+md.friction.coefficient=numpy.sqrt(md.constants.yts/(2.140373*10**-7*1000.))*numpy.ones((md.mesh.numberofvertices,1))
+md.friction.p=numpy.ones((md.mesh.numberofelements,1))
+md.friction.q=numpy.zeros((md.mesh.numberofelements,1))
+
+print "      creating flow law parameter"
+md.materials.rheology_B=1.4734*10**14*numpy.ones((md.mesh.numberofvertices,1))
+md.materials.rheology_n=1.*numpy.ones((md.mesh.numberofelements,1))
+md.materials.rheology_law='None'
+
+print "      boundary conditions for stressbalance model"
+#Create node on boundary first (because we cannot use mesh)
+md=SetIceSheetBC(md)
+md.stressbalance.spcvx=100.*numpy.ones((md.mesh.numberofvertices,1))
+md.initialization.vx=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.vy=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.vz=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.vel=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.temperature=255.*numpy.ones((md.mesh.numberofvertices,1))
+pos=numpy.nonzero(numpy.logical_or(numpy.logical_or(md.mesh.x==numpy.min(md.mesh.x),md.mesh.x==numpy.max(md.mesh.x)),numpy.logical_or(md.mesh.y==numpy.min(md.mesh.y),md.mesh.y==numpy.max(md.mesh.y))))
+md.balancethickness.spcthickness=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+md.balancethickness.spcthickness[pos]=md.geometry.thickness[pos]
+md.masstransport.spcthickness=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+md.masstransport.spcthickness[pos]=md.geometry.thickness[pos]
+md.thermal.spctemperature=255.*numpy.ones((md.mesh.numberofvertices,1))
+md.basalforcings.geothermalflux=0.4*numpy.ones((md.mesh.numberofvertices,1))
+
+#Parallel options
+md.mesh.average_vertex_connectivity=200
+
+#Transient options
+md.timestepping.time_step=1.
+md.timestepping.final_time=10.
+md.masstransport.stabilization=1
+md.thermal.stabilization=1
+md.thermal.penalty_threshold=10**5
+md.transient.isthermal=0
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/Pig.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/Pig.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/Pig.par	(revision 21239)
@@ -0,0 +1,60 @@
+%Start defining model parameters here
+
+%Geometry and observation
+x         = archread('../Data/Pig.arch','x');
+y         = archread('../Data/Pig.arch','y');
+vx_obs    = archread('../Data/Pig.arch','vx_obs');
+vy_obs    = archread('../Data/Pig.arch','vy_obs');
+index     = archread('../Data/Pig.arch','index');
+surface   = archread('../Data/Pig.arch','surface');
+thickness = archread('../Data/Pig.arch','thickness');
+
+x			 = x{1};
+y			 = y{1};
+vx_obs	 = vx_obs{1};
+vy_obs	 = vy_obs{1};
+index		 = index{1};
+surface	 = surface{1};
+thickness = thickness{1};
+
+md.inversion.vx_obs   =InterpFromMeshToMesh2d(index,x,y,vx_obs,md.mesh.x,md.mesh.y);
+md.inversion.vy_obs   =InterpFromMeshToMesh2d(index,x,y,vy_obs,md.mesh.x,md.mesh.y);
+md.geometry.surface  =InterpFromMeshToMesh2d(index,x,y,surface,md.mesh.x,md.mesh.y);
+md.geometry.thickness=InterpFromMeshToMesh2d(index,x,y,thickness,md.mesh.x,md.mesh.y);
+md.geometry.base=md.geometry.surface-md.geometry.thickness;
+clear surface thickness vx_obs vy_obs x y index;
+md.initialization.vx=md.inversion.vx_obs;
+md.initialization.vy=md.inversion.vy_obs;
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.initialization.temperature=md.initialization.temperature;
+
+%Friction
+md.friction.coefficient=50*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.stressbalance.viscosity_overshoot=0.3;
+md.masstransport.stabilization=1;
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.timestepping.time_step=1;
+md.timestepping.final_time=2;
+md.stressbalance.restol=0.05;
+md.stressbalance.reltol=1;
+md.steadystate.reltol=1;
+md.stressbalance.abstol=NaN;
+
+%Boundary conditions:
+md=SetMarineIceSheetBC(md);
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/Pig.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/Pig.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/Pig.py	(revision 21239)
@@ -0,0 +1,60 @@
+import os.path
+import inspect
+from arch import *
+import numpy
+from verbose import verbose
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from paterson import paterson 
+from SetMarineIceSheetBC import SetMarineIceSheetBC
+
+#Start defining model parameters here
+
+#Geometry and observation
+x         = numpy.array(archread('../Data/Pig.arch','x'))
+y         = numpy.array(archread('../Data/Pig.arch','y'))
+vx_obs    = numpy.array(archread('../Data/Pig.arch','vx_obs')) 
+vy_obs    = numpy.array(archread('../Data/Pig.arch','vy_obs')) 
+index     = numpy.array(archread('../Data/Pig.arch','index')).astype(int)
+surface   = numpy.array(archread('../Data/Pig.arch','surface'))
+thickness = numpy.array(archread('../Data/Pig.arch','thickness')) 
+
+[md.inversion.vx_obs]   =InterpFromMeshToMesh2d(index,x,y,vx_obs,md.mesh.x,md.mesh.y)
+[md.inversion.vy_obs]   =InterpFromMeshToMesh2d(index,x,y,vy_obs,md.mesh.x,md.mesh.y)
+[md.geometry.surface]  =InterpFromMeshToMesh2d(index,x,y,surface,md.mesh.x,md.mesh.y)
+[md.geometry.thickness]=InterpFromMeshToMesh2d(index,x,y,thickness,md.mesh.x,md.mesh.y)
+md.geometry.base=md.geometry.surface-md.geometry.thickness
+md.initialization.vx=md.inversion.vx_obs
+md.initialization.vy=md.inversion.vy_obs
+md.initialization.vz=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1))
+
+#Materials
+md.initialization.temperature=(273.-20.)*numpy.ones((md.mesh.numberofvertices,1))
+md.materials.rheology_B=paterson(md.initialization.temperature)
+md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
+md.initialization.temperature=md.initialization.temperature
+
+#Friction
+md.friction.coefficient=50.*numpy.ones((md.mesh.numberofvertices,1))
+md.friction.coefficient[numpy.nonzero(md.mask.groundedice_levelset<0.)[0]]=0.
+md.friction.p=numpy.ones((md.mesh.numberofelements,1))
+md.friction.q=numpy.ones((md.mesh.numberofelements,1))
+
+#Numerical parameters
+md.stressbalance.viscosity_overshoot=0.3
+md.masstransport.stabilization=1.
+md.verbose=verbose(0)
+md.settings.waitonlock=30
+md.timestepping.time_step=1.
+md.timestepping.final_time=2.
+md.stressbalance.restol=0.05
+md.stressbalance.reltol=1.
+md.steadystate.reltol=1.
+md.stressbalance.abstol=float('nan')
+
+#Boundary conditions:
+md=SetMarineIceSheetBC(md)
+
+#Change name so that no test have the same name
+if len(inspect.stack()) > 2:
+	md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/RoundSheetEISMINT.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/RoundSheetEISMINT.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/RoundSheetEISMINT.par	(revision 21239)
@@ -0,0 +1,59 @@
+%Ok, start defining model parameters here
+disp('      creating thickness');
+md.geometry.thickness=10.*ones(md.mesh.numberofvertices,1);
+md.geometry.base=zeros(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+disp('      creating drag');
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('      creating temperatures');
+tmin=238.15; %K
+st=1.67*10^-2/1000.; %k/m
+radius=sqrt((md.mesh.x).^2+(md.mesh.y).^2);
+md.initialization.temperature=(tmin+st*radius);
+md.basalforcings.geothermalflux=4.2*10^-2*ones(md.mesh.numberofvertices,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=6.81*10^7*ones(md.mesh.numberofvertices,1); %to have the same B as the analytical solution 
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      creating surface mass balance');
+smb_max=0.5; %m/yr
+sb=10^-2/1000.; %m/yr/m
+rel=450.*1000.; %m
+md.smb.mass_balance=min(smb_max,sb*(rel-radius));
+
+disp('      creating velocities');
+constant=0.3;
+md.inversion.vx_obs=constant/2.*md.mesh.x.*(md.geometry.thickness).^-1;
+md.inversion.vy_obs=constant/2.*md.mesh.y.*(md.geometry.thickness).^-1;
+md.inversion.vel_obs=(sqrt((md.inversion.vx_obs).^2+(md.inversion.vy_obs).^2));
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Deal with boundary conditions:
+disp('      boundary conditions for stressbalance model:');
+md=SetMarineIceSheetBC(md,'../Exp/RoundFrontEISMINT.exp');
+
+radius=sqrt((md.mesh.x).^2+(md.mesh.y).^2);
+pos=find(radius==min(radius));
+md.mesh.x(pos)=0.; md.mesh.y(pos)=0.; %the closest node to the center is changed to be exactly at the center
+
+md.stressbalance.spcvx(pos)=0.;
+md.stressbalance.spcvy(pos)=0.;
+md.stressbalance.spcvz(pos)=0.;
+
+%parallel options
+md.timestepping.final_time=50000.;
+
+%Constants
+md.materials.rho_ice=910.;
+md.materials.thermalconductivity=2.1;
+md.materials.latentheat=3.35*10^5;
+md.materials.beta=8.66*10^-4/(md.materials.rho_ice*md.constants.g); %conversion from K/m to K/Pa
+md.constants.yts=31556926.;
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/RoundSheetEISMINT.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/RoundSheetEISMINT.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/RoundSheetEISMINT.py	(revision 21239)
@@ -0,0 +1,63 @@
+import numpy
+from SetMarineIceSheetBC import SetMarineIceSheetBC
+
+#Ok, start defining model parameters here
+print "      creating thickness"
+md.geometry.thickness=10.*numpy.ones((md.mesh.numberofvertices,1))
+md.geometry.base=numpy.zeros((md.mesh.numberofvertices,1))
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+
+print "      creating drag"
+md.friction.coefficient=20.*numpy.ones((md.mesh.numberofvertices,1)) 
+md.friction.p=numpy.ones((md.mesh.numberofelements,1))
+md.friction.q=numpy.ones((md.mesh.numberofelements,1))
+
+print "      creating temperatures"
+tmin=238.15    #K
+st=1.67*10**-2/1000.    #k/m
+radius=numpy.sqrt((md.mesh.x)**2+(md.mesh.y)**2).reshape(-1,1)
+md.initialization.temperature=tmin+st*radius
+md.basalforcings.geothermalflux=4.2*10**-2*numpy.ones((md.mesh.numberofvertices,1))
+
+print "      creating flow law parameter"
+md.materials.rheology_B=6.81*10**7*numpy.ones((md.mesh.numberofvertices,1))    #to have the same B as the analytical solution 
+md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
+
+print "      creating surface mass balance"
+smb_max=0.5    #m/yr
+sb=10**-2/1000.    #m/yr/m
+rel=450.*1000.    #m
+md.smb.mass_balance=numpy.minimum(smb_max*numpy.ones_like(radius),sb*(rel-radius))
+
+print "      creating velocities"
+constant=0.3
+md.inversion.vx_obs=constant/2.*md.mesh.x.reshape(-1,1)*(md.geometry.thickness)**-1
+md.inversion.vy_obs=constant/2.*md.mesh.y.reshape(-1,1)*(md.geometry.thickness)**-1
+md.inversion.vel_obs=numpy.sqrt((md.inversion.vx_obs)**2+(md.inversion.vy_obs)**2)
+md.initialization.vx=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.vy=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.vz=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1))
+
+#Deal with boundary conditions:
+print "      boundary conditions for stressbalance model:"
+md=SetMarineIceSheetBC(md,'../Exp/RoundFrontEISMINT.exp')
+
+radius=numpy.sqrt((md.mesh.x)**2+(md.mesh.y)**2)
+pos=numpy.nonzero(radius==numpy.min(radius))[0]
+md.mesh.x[pos]=0.
+md.mesh.y[pos]=0.    #the closest node to the center is changed to be exactly at the center
+
+md.stressbalance.spcvx[pos]=0.
+md.stressbalance.spcvy[pos]=0.
+md.stressbalance.spcvz[pos]=0.
+
+#parallel options
+md.timestepping.final_time=50000.
+
+#Constants
+md.materials.rho_ice=910.
+md.materials.thermalconductivity=2.1
+md.materials.latentheat=3.35*10**5
+md.materials.beta=8.66*10**-4/(md.materials.rho_ice*md.constants.g)    #conversion from K/m to K/Pa
+md.constants.yts=31556926.
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/RoundSheetShelf.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/RoundSheetShelf.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/RoundSheetShelf.par	(revision 21239)
@@ -0,0 +1,119 @@
+%Start defining model parameters here
+
+di=md.materials.rho_ice/md.materials.rho_water;
+rad=1.e6;
+shelfextent=2.e5;
+%Geometry
+hmin=300.;
+hmax=1000.;
+radius=sqrt((md.mesh.x).*md.mesh.x+(md.mesh.y).*md.mesh.y);
+ymin=min(radius);
+ymax=max(radius);
+md.geometry.thickness=hmax+(hmin-hmax)*(radius-ymin)/(ymax-ymin);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+
+pos=find(md.mask.groundedice_levelset>0.);
+md.geometry.base(pos)=md.geometry.base(pos)-300.*(radius(pos)-(rad-shelfextent))/(rad-shelfextent);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+pos=find(radius<200000);
+md.geometry.thickness(pos)=100.;
+md.geometry.base(pos)=-di*md.geometry.thickness(pos)-20.;
+md.geometry.surface(pos)=md.geometry.base(pos)+md.geometry.thickness(pos);
+
+pos=find(md.mesh.x<0.2*1.e6 & md.mesh.x>-0.2*1.e6 & md.mesh.y>0.);
+md.geometry.thickness(pos)=100.;
+md.geometry.base(pos)=-di*md.geometry.thickness(pos)-20.;
+md.geometry.surface(pos)=md.geometry.base(pos)+md.geometry.thickness(pos);
+
+pos=find(md.mesh.x<0.1*1.e6 & md.mesh.x>-0.1*1.e6 & md.mesh.y<-0.5*1.e6 & md.mesh.y>-0.6*1.e6);
+md.geometry.thickness(pos)=100.;
+md.geometry.base(pos)=-di*md.geometry.thickness(pos)-20.;
+md.geometry.surface(pos)=md.geometry.base(pos)+md.geometry.thickness(pos);
+
+%plug holes into the ice sheet, to test for grounding line migration. 
+di=md.materials.rho_ice/md.materials.rho_water;
+rad=sqrt(md.mesh.x.^2+md.mesh.y.^2);
+pos=find(rad<200000.);
+md.geometry.thickness(pos)=100.;
+md.geometry.base(pos)=-di*md.geometry.thickness(pos)-20.;
+md.geometry.surface(pos)=md.geometry.base(pos)+md.geometry.thickness(pos);
+
+pos=find(md.mesh.x<0.2*1.e6 & md.mesh.x>-0.2*1.e6 & md.mesh.y>0.);
+md.geometry.thickness(pos)=100.;
+md.geometry.base(pos)=-di*md.geometry.thickness(pos)-20.;
+md.geometry.surface(pos)=md.geometry.base(pos)+md.geometry.thickness(pos);
+
+pos=find(md.mesh.x<0.1*1.e6 & md.mesh.x>-0.1*1.e6 & md.mesh.y<-0.5*1.e6 & md.mesh.y>-0.6*1.e6);
+md.geometry.thickness(pos)=100.;
+md.geometry.base(pos)=-di*md.geometry.thickness(pos)-20.;
+md.geometry.surface(pos)=md.geometry.base(pos)+md.geometry.thickness(pos);
+
+%Initial velocity 
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+%Surface mass balance and basal melting
+md.smb.mass_balance=-10.*ones(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+pos=find(md.mask.groundedice_levelset>0.);md.basalforcings.groundedice_melting_rate(pos)=10.;
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.geothermalflux=ones(md.mesh.numberofvertices,1);
+
+%Friction
+radius=1.e6;
+shelfextent=2.e5;
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+xelem=md.mesh.x(md.mesh.elements)*[1;1;1]/3.;
+yelem=md.mesh.y(md.mesh.elements)*[1;1;1]/3.;
+rad=sqrt(xelem.^2+yelem.^2);
+flags=zeros(md.mesh.numberofelements,1);
+pos=find(rad>=(radius-shelfextent));
+md.friction.coefficient(md.mesh.elements(pos,:))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.stressbalance.viscosity_overshoot=0.0;
+md.masstransport.stabilization=1;
+md.thermal.stabilization=1;
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.stressbalance.restol=0.05;
+md.stressbalance.reltol=0.05;
+md.steadystate.reltol=0.05;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=5.;
+md.timestepping.final_time=5.;
+
+%bathymetry and grounding line migration:
+md.groundingline.migration='AggressiveMigration';
+md.geometry.bed=md.geometry.base;
+pos=find(md.mask.groundedice_levelset<0.); md.geometry.bed(pos)=md.geometry.base(pos)-900.;
+
+%Deal with boundary conditions:
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+
+pos=find(md.mesh.x==0 & md.mesh.y==0);
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvy(pos)=0;
+
+md.mask.ice_levelset(find(md.mesh.vertexonboundary))=0;
+md.balancethickness.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+md.thermal.spctemperature=737.*ones(md.mesh.numberofvertices,1);
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/RoundSheetShelf.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/RoundSheetShelf.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/RoundSheetShelf.py	(revision 21239)
@@ -0,0 +1,129 @@
+import os.path
+import numpy
+import copy
+import inspect
+from paterson import paterson
+from verbose import verbose
+
+#Start defining model parameters here
+
+di=md.materials.rho_ice/md.materials.rho_water
+rad=1.e6
+shelfextent=2.e5
+#Geometry
+hmin=300.
+hmax=1000.
+radius=numpy.sqrt(md.mesh.x.reshape(-1,1)*md.mesh.x.reshape(-1,1)+md.mesh.y.reshape(-1,1)*md.mesh.y.reshape(-1,1))
+ymin=numpy.min(radius)
+ymax=numpy.max(radius)
+md.geometry.thickness=hmax+(hmin-hmax)*(radius-ymin)/(ymax-ymin)
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness
+
+pos=numpy.nonzero(md.mask.groundedice_levelset>0.)[0]
+md.geometry.base[pos]=md.geometry.base[pos]-300.*(radius[pos]-(rad-shelfextent))/(rad-shelfextent)
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+
+pos=numpy.nonzero(radius<200000.)
+md.geometry.thickness[pos]=100.
+md.geometry.base[pos]=-di*md.geometry.thickness[pos]-20.
+md.geometry.surface[pos]=md.geometry.base[pos]+md.geometry.thickness[pos]
+
+pos=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.x<0.2*1.e6,md.mesh.x>-0.2*1.e6),md.mesh.y>0.))
+md.geometry.thickness[pos]=100.
+md.geometry.base[pos]=-di*md.geometry.thickness[pos]-20.
+md.geometry.surface[pos]=md.geometry.base[pos]+md.geometry.thickness[pos]
+
+pos=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.x<0.1*1.e6,md.mesh.x>-0.1*1.e6),numpy.logical_and(md.mesh.y<-0.5*1.e6,md.mesh.y>-0.6*1.e6)))
+md.geometry.thickness[pos]=100.
+md.geometry.base[pos]=-di*md.geometry.thickness[pos]-20.
+md.geometry.surface[pos]=md.geometry.base[pos]+md.geometry.thickness[pos]
+
+#plug holes into the ice sheet, to test for grounding line migration. 
+di=md.materials.rho_ice/md.materials.rho_water
+rad=numpy.sqrt(md.mesh.x**2+md.mesh.y**2)
+pos=numpy.nonzero(rad<200000.)
+md.geometry.thickness[pos]=100.
+md.geometry.base[pos]=-di*md.geometry.thickness[pos]-20.
+md.geometry.surface[pos]=md.geometry.base[pos]+md.geometry.thickness[pos]
+
+pos=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.x<0.2*1.e6,md.mesh.x>-0.2*1.e6),md.mesh.y>0.))
+md.geometry.thickness[pos]=100.
+md.geometry.base[pos]=-di*md.geometry.thickness[pos]-20.
+md.geometry.surface[pos]=md.geometry.base[pos]+md.geometry.thickness[pos]
+
+pos=numpy.nonzero(numpy.logical_and(numpy.logical_and(md.mesh.x<0.1*1.e6,md.mesh.x>-0.1*1.e6),numpy.logical_and(md.mesh.y<-0.5*1.e6,md.mesh.y>-0.6*1.e6)))
+md.geometry.thickness[pos]=100.
+md.geometry.base[pos]=-di*md.geometry.thickness[pos]-20.
+md.geometry.surface[pos]=md.geometry.base[pos]+md.geometry.thickness[pos]
+
+#Initial velocity 
+md.initialization.vx=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.vy=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.vz=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1))
+
+#Materials
+md.initialization.temperature=(273.-20.)*numpy.ones((md.mesh.numberofvertices,1))
+md.materials.rheology_B=paterson(md.initialization.temperature)
+md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
+
+#Surface mass balance and basal melting
+md.smb.mass_balance=-10.*numpy.ones((md.mesh.numberofvertices,1))
+md.basalforcings.groundedice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
+pos=numpy.nonzero(md.mask.groundedice_levelset>0.)[0]
+md.basalforcings.groundedice_melting_rate[pos]=10.
+md.basalforcings.floatingice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
+md.basalforcings.geothermalflux=numpy.ones((md.mesh.numberofvertices,1))
+
+#Friction
+radius=1.e6
+shelfextent=2.e5
+md.friction.coefficient=20.*numpy.ones((md.mesh.numberofvertices,1))
+xelem=numpy.mean(md.mesh.x[md.mesh.elements.astype(int)-1],axis=1)
+yelem=numpy.mean(md.mesh.y[md.mesh.elements.astype(int)-1],axis=1)
+rad=numpy.sqrt(xelem**2+yelem**2)
+flags=numpy.zeros(md.mesh.numberofelements)
+pos=numpy.nonzero(rad>=(radius-shelfextent))
+md.friction.coefficient[md.mesh.elements[pos,:]-1]=0.
+md.friction.p=numpy.ones((md.mesh.numberofelements,1))
+md.friction.q=numpy.ones((md.mesh.numberofelements,1))
+
+#Numerical parameters
+md.stressbalance.viscosity_overshoot=0.0
+md.masstransport.stabilization=1
+md.thermal.stabilization=1
+md.verbose=verbose(0)
+md.settings.waitonlock=30
+md.stressbalance.restol=0.05
+md.stressbalance.reltol=0.05
+md.steadystate.reltol=0.05
+md.stressbalance.abstol=float('nan')
+md.timestepping.time_step=5.
+md.timestepping.final_time=5.
+
+#bathymetry and grounding line migration:
+md.groundingline.migration='AggressiveMigration'
+md.geometry.bed=copy.deepcopy(md.geometry.base)
+pos=numpy.nonzero(md.mask.groundedice_levelset<0.)[0]
+md.geometry.bed[pos]=md.geometry.base[pos]-900.
+
+#Deal with boundary conditions:
+md.stressbalance.spcvx=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+md.stressbalance.spcvy=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+md.stressbalance.spcvz=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+
+pos=numpy.nonzero(numpy.logical_and(md.mesh.x==0,md.mesh.y==0))
+md.stressbalance.spcvx[pos]=0
+md.stressbalance.spcvy[pos]=0
+
+pos=numpy.nonzero(md.mesh.vertexonboundary)
+md.mask.ice_levelset[pos]=0
+md.balancethickness.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+md.masstransport.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+md.stressbalance.referential=float('nan')*numpy.ones((md.mesh.numberofvertices,6))
+md.stressbalance.loadingforce=0*numpy.ones((md.mesh.numberofvertices,3))
+md.thermal.spctemperature=737.*numpy.ones((md.mesh.numberofvertices,1))
+
+#Change name so that no test have the same name
+if len(inspect.stack()) > 2:
+	md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/RoundSheetStaticEISMINT.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/RoundSheetStaticEISMINT.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/RoundSheetStaticEISMINT.par	(revision 21239)
@@ -0,0 +1,53 @@
+disp('      creating thickness');
+hmin=0.01;
+hmax=2756.7;
+radius=sqrt((md.mesh.x).^2+(md.mesh.y).^2);
+radiusmax=max(radius);
+radius(find(radius>(1.-10^-9)*radiusmax))=radiusmax;    %eliminate roundoff issues in next statement
+md.geometry.thickness=hmin*ones(size(md.mesh.x,1),1)+hmax*(4.*((1./2.)^(4./3.)*ones(size(md.mesh.x,1),1)-((radius)./(2.*radiusmax)).^(4./3.))).^(3./8.);
+md.geometry.base=0.*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+disp('      creating drag');
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('      creating temperatures');
+tmin=238.15; %K
+st=1.67*10^-2/1000.; %k/m
+md.initialization.temperature=tmin+st*radius;
+md.basalforcings.geothermalflux=4.2*10^-2*ones(md.mesh.numberofvertices,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=6.81*10^7*ones(md.mesh.numberofvertices,1); %to have the same B as the analytical solution 
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      creating surface mass balance');
+smb_max=0.5; %m/yr
+sb=10^-2/1000.; %m/yr/m
+rel=450.*1000.; %m
+md.smb.mass_balance=min(smb_max,sb*(rel-radius));
+
+disp('      creating velocities');
+constant=0.3;
+md.inversion.vx_obs=constant/2.*md.mesh.x.*(md.geometry.thickness).^-1;
+md.inversion.vy_obs=constant/2.*md.mesh.y.*(md.geometry.thickness).^-1;
+md.inversion.vel_obs=sqrt((md.inversion.vx_obs).^2+(md.inversion.vy_obs).^2);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Deal with boundary conditions:
+disp('      boundary conditions for stressbalance model:');
+md=SetMarineIceSheetBC(md,'../Exp/RoundFrontEISMINT.exp');
+
+radius=sqrt((md.mesh.x).^2+(md.mesh.y).^2);
+pos=find(radius==min(radius));
+md.mesh.x(pos)=0.; md.mesh.y(pos)=0.; %the closest node to the center is changed to be exactly at the center
+
+md.stressbalance.spcvx(pos)=0.;
+md.stressbalance.spcvy(pos)=0.;
+md.stressbalance.spcvz(pos)=0.;
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/RoundSheetStaticEISMINT.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/RoundSheetStaticEISMINT.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/RoundSheetStaticEISMINT.py	(revision 21239)
@@ -0,0 +1,57 @@
+import numpy
+from SetMarineIceSheetBC import SetMarineIceSheetBC
+
+print "      creating thickness"
+hmin=0.01
+hmax=2756.7
+radius=numpy.sqrt((md.mesh.x)**2+(md.mesh.y)**2).reshape(-1,1)
+radiusmax=numpy.max(radius)
+radius[numpy.nonzero(radius>(1.-10**-9)*radiusmax)]=radiusmax    #eliminate roundoff issues in next statement
+md.geometry.thickness=hmin*numpy.ones((numpy.size(md.mesh.x),1))+hmax*(4.*((1./2.)**(4./3.)*numpy.ones((numpy.size(md.mesh.x),1))-((radius)/(2.*radiusmax))**(4./3.)))**(3./8.)
+md.geometry.base=0.*md.geometry.thickness
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+
+print "      creating drag"
+md.friction.coefficient=20.*numpy.ones((md.mesh.numberofvertices,1))
+md.friction.coefficient[numpy.nonzero(md.mask.groundedice_levelset<0.)[0]]=0.
+md.friction.p=numpy.ones((md.mesh.numberofelements,1))
+md.friction.q=numpy.ones((md.mesh.numberofelements,1))
+
+print "      creating temperatures"
+tmin=238.15    #K
+st=1.67*10**-2/1000.    #k/m
+md.initialization.temperature=tmin+st*radius
+md.basalforcings.geothermalflux=4.2*10**-2*numpy.ones((md.mesh.numberofvertices,1))
+
+print "      creating flow law parameter"
+md.materials.rheology_B=6.81*10**7*numpy.ones((md.mesh.numberofvertices,1))    #to have the same B as the analytical solution 
+md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
+
+print "      creating surface mass balance"
+smb_max=0.5    #m/yr
+sb=10**-2/1000.    #m/yr/m
+rel=450.*1000.    #m
+md.smb.mass_balance=numpy.minimum(smb_max*numpy.ones_like(radius),sb*(rel-radius))
+
+print "      creating velocities"
+constant=0.3
+md.inversion.vx_obs=constant/2.*md.mesh.x.reshape(-1,1)*(md.geometry.thickness)**-1
+md.inversion.vy_obs=constant/2.*md.mesh.y.reshape(-1,1)*(md.geometry.thickness)**-1
+md.inversion.vel_obs=numpy.sqrt((md.inversion.vx_obs)**2+(md.inversion.vy_obs)**2)
+md.initialization.vx=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.vy=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.vz=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1))
+
+#Deal with boundary conditions:
+print "      boundary conditions for stressbalance model:"
+md=SetMarineIceSheetBC(md,'../Exp/RoundFrontEISMINT.exp')
+
+radius=numpy.sqrt((md.mesh.x)**2+(md.mesh.y)**2)
+pos=numpy.nonzero(radius==numpy.min(radius))[0]
+md.mesh.x[pos]=0.
+md.mesh.y[pos]=0.    #the closest node to the center is changed to be exactly at the center
+
+md.stressbalance.spcvx[pos]=0.
+md.stressbalance.spcvy[pos]=0.
+md.stressbalance.spcvz[pos]=0.
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareEISMINT.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareEISMINT.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareEISMINT.par	(revision 21239)
@@ -0,0 +1,45 @@
+%Ok, start defining model parameters here
+
+disp('      creating thickness');
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+md.geometry.thickness=500.*ones(md.mesh.numberofvertices,1);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+disp('      creating drag');
+md.friction.coefficient=200.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('      creating initial values');
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.vel=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=1.7687*10^8*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      creating surface mass balance');
+md.smb.mass_balance=0.2*ones(md.mesh.numberofvertices,1); %0m/a
+md.basalforcings.floatingice_melting_rate=0.*ones(md.mesh.numberofvertices,1); %0m/a
+md.basalforcings.groundedice_melting_rate=0.*ones(md.mesh.numberofvertices,1); %0m/a
+
+disp('      boundary conditions');
+md=SetMarineIceSheetBC(md,'../Exp/SquareFrontEISMINT.exp');
+
+%Evolution of the ice shelf
+pos=find(md.mesh.y==200000.); %nodes on the upper boundary condition
+md.balancethickness.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.balancethickness.spcthickness(pos)=500.;
+md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.masstransport.spcthickness(pos)=500.;
+md.masstransport.stabilization=0; %Better result with no artificial diffusivity
+md.thermal.stabilization=0;
+md.timestepping.final_time=500.;
+md.timestepping.time_step=1;
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareEISMINT.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareEISMINT.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareEISMINT.py	(revision 21239)
@@ -0,0 +1,48 @@
+import numpy
+from SetMarineIceSheetBC import SetMarineIceSheetBC
+
+#Ok, start defining model parameters here
+
+print "      creating thickness"
+ymin=numpy.min(md.mesh.y)
+ymax=numpy.max(md.mesh.y)
+md.geometry.thickness=500.*numpy.ones((md.mesh.numberofvertices,1))
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+
+print "      creating drag"
+md.friction.coefficient=200.*numpy.ones((md.mesh.numberofvertices,1))
+md.friction.coefficient[numpy.nonzero(md.mask.groundedice_levelset<0.)[0]]=0.
+md.friction.p=numpy.ones((md.mesh.numberofelements,1))
+md.friction.q=numpy.ones((md.mesh.numberofelements,1))
+
+print "      creating initial values"
+md.initialization.temperature=(273.-20.)*numpy.ones((md.mesh.numberofvertices,1))
+md.initialization.vx=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.vy=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.vz=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.vel=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1))
+
+print "      creating flow law parameter"
+md.materials.rheology_B=1.7687*10**8*numpy.ones((md.mesh.numberofvertices,1))
+md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
+
+print "      creating surface mass balance"
+md.smb.mass_balance=0.2*numpy.ones((md.mesh.numberofvertices,1))    #0m/a
+md.basalforcings.floatingice_melting_rate=0.*numpy.ones((md.mesh.numberofvertices,1))    #0m/a
+md.basalforcings.groundedice_melting_rate=0.*numpy.ones((md.mesh.numberofvertices,1))    #0m/a
+
+print "      boundary conditions"
+md=SetMarineIceSheetBC(md,'../Exp/SquareFrontEISMINT.exp')
+
+#Evolution of the ice shelf
+pos=numpy.nonzero(md.mesh.y==200000.)    #nodes on the upper boundary condition
+md.balancethickness.spcthickness=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+md.balancethickness.spcthickness[pos]=500.
+md.masstransport.spcthickness=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+md.masstransport.spcthickness[pos]=500.
+md.masstransport.stabilization=0    #Better result with no artificial diffusivity
+md.thermal.stabilization=0
+md.timestepping.final_time=500.
+md.timestepping.time_step=1
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareSheetConstrained.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareSheetConstrained.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareSheetConstrained.par	(revision 21239)
@@ -0,0 +1,74 @@
+%Start defining model parameters here
+
+%Geometry
+hmin=300;
+hmax=1000;
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+xmin=min(md.mesh.x);
+xmax=max(md.mesh.x);
+md.geometry.thickness=hmax+(hmin-hmax)*(md.mesh.y-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x-xmin)/(xmax-xmin);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness+20.;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%Initial velocity 
+x     = archread('../Data/SquareSheetConstrained.arch','x');
+y     = archread('../Data/SquareSheetConstrained.arch','y');
+vx    = archread('../Data/SquareSheetConstrained.arch','vx');
+vy    = archread('../Data/SquareSheetConstrained.arch','vy');
+index = archread('../Data/SquareSheetConstrained.arch','index');
+
+x = x{1};
+y = y{1};
+vx = vx{1};
+vy = vy{1};
+index = index{1};
+
+md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+clear vx vy x y index;
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+%Calving
+md.calving.calvingrate=zeros(md.mesh.numberofvertices,1);
+md.levelset.spclevelset=NaN(md.mesh.numberofvertices,1);
+
+%Friction
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.stressbalance.viscosity_overshoot=0.0;
+md.masstransport.stabilization=1.;
+md.thermal.stabilization=1.;
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.stressbalance.restol=0.05;
+md.steadystate.reltol=0.05;
+md.stressbalance.reltol=0.05;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=1.;
+md.timestepping.final_time=3.;
+
+%GIA: 
+md.gia.lithosphere_thickness=100.*ones(md.mesh.numberofvertices,1); % in km
+md.gia.mantle_viscosity=1.0*10^21*ones(md.mesh.numberofvertices,1); % in Pa.s
+md.materials.lithosphere_shear_modulus=6.7*10^10;                   % in Pa
+md.materials.lithosphere_density=3.32;                              % in g/cm^-3
+md.materials.mantle_shear_modulus=1.45*10^11;                       % in Pa
+md.materials.mantle_density=3.34;                                   % in g/cm^-3
+
+%Boundary conditions:
+md=SetIceSheetBC(md);
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareSheetConstrained.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareSheetConstrained.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareSheetConstrained.py	(revision 21239)
@@ -0,0 +1,76 @@
+import os.path
+import numpy
+import inspect
+from verbose import verbose
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from paterson import paterson
+from SetIceSheetBC import SetIceSheetBC
+from arch import *
+
+#Start defining model parameters here
+
+#Geometry
+hmin=300.
+hmax=1000.
+ymin=numpy.min(md.mesh.y)
+ymax=numpy.max(md.mesh.y)
+xmin=min(md.mesh.x)
+xmax=max(md.mesh.x)
+md.geometry.thickness=hmax+(hmin-hmax)*(md.mesh.y.reshape(-1,1)-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x.reshape(-1,1)-xmin)/(xmax-xmin)
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness+20.
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+
+#Initial velocity 
+x         = numpy.array(archread('../Data/SquareSheetConstrained.arch','x'))
+y         = numpy.array(archread('../Data/SquareSheetConstrained.arch','y'))
+vx        = numpy.array(archread('../Data/SquareSheetConstrained.arch','vx'));
+vy        = numpy.array(archread('../Data/SquareSheetConstrained.arch','vy'));
+index     = archread('../Data/SquareSheetConstrained.arch','index').astype(int);
+
+[md.initialization.vx]=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y)
+[md.initialization.vy]=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y)
+md.initialization.vz=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1))
+
+#Materials
+md.initialization.temperature=(273.-20.)*numpy.ones((md.mesh.numberofvertices,1))
+md.materials.rheology_B=paterson(md.initialization.temperature)
+md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
+
+#Calving
+md.calving.calvingrate=0.*numpy.ones((md.mesh.numberofvertices,1))
+md.levelset.spclevelset=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+
+#Friction
+md.friction.coefficient=20.*numpy.ones((md.mesh.numberofvertices,1))
+md.friction.coefficient[numpy.nonzero(md.mask.groundedice_levelset<0.)[0]]=0.
+md.friction.p=numpy.ones((md.mesh.numberofelements,1))
+md.friction.q=numpy.ones((md.mesh.numberofelements,1))
+
+#Numerical parameters
+md.stressbalance.viscosity_overshoot=0.0
+md.masstransport.stabilization=1.
+md.thermal.stabilization=1.
+md.verbose=verbose(0)
+md.settings.waitonlock=30
+md.stressbalance.restol=0.05
+md.steadystate.reltol=0.05
+md.stressbalance.reltol=0.05
+md.stressbalance.abstol=float('NaN')
+md.timestepping.time_step=1.
+md.timestepping.final_time=3.
+
+#GIA:
+md.gia.lithosphere_thickness=100.*numpy.ones((md.mesh.numberofvertices,1)); # in km
+md.gia.mantle_viscosity=1.*10**21*numpy.ones((md.mesh.numberofvertices,1)); # in Pa.s
+md.materials.lithosphere_shear_modulus=6.7*10**10;                          # in Pa
+md.materials.lithosphere_density=3.32;                                      # in g/cm^-3
+md.materials.mantle_shear_modulus=1.45*10**11;                              # in Pa
+md.materials.mantle_density=3.34;                                           # in g/cm^-3
+
+#Boundary conditions:
+md=SetIceSheetBC(md)
+
+#Change name so that no test have the same name
+if len(inspect.stack()) > 2:
+	md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareSheetShelf.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareSheetShelf.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareSheetShelf.par	(revision 21239)
@@ -0,0 +1,68 @@
+%Start defining model parameters here
+
+%Geometry
+hmin=300.;
+hmax=1000.;
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+xmin=min(md.mesh.x);
+xmax=max(md.mesh.x);
+md.geometry.thickness=hmax+(hmin-hmax)*(md.mesh.y-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x-xmin)/(xmax-xmin);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+bed_sheet=-md.materials.rho_ice/md.materials.rho_water*(hmax+(hmin-hmax)*(ymax/2-ymin)/(ymax-ymin));
+pos=find(md.mesh.y<=ymax/2.);
+md.geometry.base(pos)=bed_sheet;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%Initial velocity 
+x     = archread('../Data/SquareSheetShelf.arch','x');
+y     = archread('../Data/SquareSheetShelf.arch','y');
+vx    = archread('../Data/SquareSheetShelf.arch','vx');
+vy    = archread('../Data/SquareSheetShelf.arch','vy');
+index = archread('../Data/SquareSheetShelf.arch','index');
+x = x{1};
+y = y{1};
+vx = vx{1};
+vy = vy{1};
+index = index{1};
+md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+clear vx vy x y index;
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+%Accumulation and melting
+md.smb.mass_balance=10.*ones(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate=5.*ones(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=5.*ones(md.mesh.numberofvertices,1);
+
+%Friction
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.stressbalance.viscosity_overshoot=0.0;
+md.masstransport.stabilization=1;
+md.thermal.stabilization=1;
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.stressbalance.restol=0.05;
+md.steadystate.reltol=0.05;
+md.stressbalance.reltol=0.05;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=1.;
+md.timestepping.final_time=3.;
+
+%Deal with boundary conditions:
+md=SetMarineIceSheetBC(md,'../Exp/SquareFront.exp');
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareSheetShelf.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareSheetShelf.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareSheetShelf.py	(revision 21239)
@@ -0,0 +1,72 @@
+import os.path
+import inspect
+from arch import *
+import numpy
+from verbose import verbose
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from paterson import paterson 
+from SetMarineIceSheetBC import SetMarineIceSheetBC
+
+#Start defining model parameters here
+
+#Geometry
+hmin=300.
+hmax=1000.
+ymin=min(md.mesh.y)
+ymax=max(md.mesh.y)
+xmin=min(md.mesh.x)
+xmax=max(md.mesh.x)
+md.geometry.thickness=hmax+(hmin-hmax)*(md.mesh.y.reshape(-1,1)-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x.reshape(-1,1)-xmin)/(xmax-xmin)
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness
+bed_sheet=-md.materials.rho_ice/md.materials.rho_water*(hmax+(hmin-hmax)*(ymax/2-ymin)/(ymax-ymin))
+pos=numpy.nonzero(md.mesh.y<=ymax/2.)
+md.geometry.base[pos]=bed_sheet
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+
+#Initial velocity 
+x         = numpy.array(archread('../Data/SquareSheetShelf.arch','x'))
+y         = numpy.array(archread('../Data/SquareSheetShelf.arch','y'))
+vx        = numpy.array(archread('../Data/SquareSheetShelf.arch','vx'));
+vy        = numpy.array(archread('../Data/SquareSheetShelf.arch','vy'));
+index     = numpy.array(archread('../Data/SquareSheetShelf.arch','index')).astype(int);
+
+[md.initialization.vx]  = InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y)
+[md.initialization.vy]  = InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y)
+md.initialization.vz=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1))
+
+#Materials
+md.initialization.temperature=(273.-20.)*numpy.ones((md.mesh.numberofvertices,1))
+md.materials.rheology_B=paterson(md.initialization.temperature)
+md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
+
+#Accumulation and melting
+md.smb.mass_balance=10.*numpy.ones((md.mesh.numberofvertices,1))
+md.basalforcings.groundedice_melting_rate=5.*numpy.ones((md.mesh.numberofvertices,1))
+md.basalforcings.floatingice_melting_rate=5.*numpy.ones((md.mesh.numberofvertices,1))
+
+#Friction
+md.friction.coefficient=20.*numpy.ones((md.mesh.numberofvertices,1))
+md.friction.coefficient[numpy.nonzero(md.mask.groundedice_levelset<0.)[0]]=0.
+md.friction.p=numpy.ones((md.mesh.numberofelements,1))
+md.friction.q=numpy.ones((md.mesh.numberofelements,1))
+
+#Numerical parameters
+md.stressbalance.viscosity_overshoot=0.0
+md.masstransport.stabilization=1
+md.thermal.stabilization=1
+md.verbose=verbose(0)
+md.settings.waitonlock=30
+md.stressbalance.restol=0.05
+md.steadystate.reltol=0.05
+md.stressbalance.reltol=0.05
+md.stressbalance.abstol=float('NaN')
+md.timestepping.time_step=1.
+md.timestepping.final_time=3.
+
+#Deal with boundary conditions:
+md=SetMarineIceSheetBC(md,'../Exp/SquareFront.exp')
+
+#Change name so that no test have the same name
+if len(inspect.stack()) > 2:
+	md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelf.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelf.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelf.par	(revision 21239)
@@ -0,0 +1,60 @@
+%Start defining model parameters here
+
+%Geometry
+hmin=300;
+hmax=1000;
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+xmin=min(md.mesh.x);
+xmax=max(md.mesh.x);
+md.geometry.thickness=hmax+(hmin-hmax)*(md.mesh.y-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x-xmin)/(xmax-xmin);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%Initial velocity and pressure
+x     = archread('../Data/SquareShelf.arch','x');
+y     = archread('../Data/SquareShelf.arch','y');
+vx    = archread('../Data/SquareShelf.arch','vx');
+vy    = archread('../Data/SquareShelf.arch','vy');
+index = archread('../Data/SquareShelf.arch','index');
+x = x{1};
+y = y{1};
+vx = vx{1};
+vy = vy{1};
+index = index{1};
+md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+clear vx vy x y index;
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+%Friction
+md.friction.coefficient=20*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.stressbalance.viscosity_overshoot=0.3;
+md.masstransport.stabilization=1;
+md.thermal.stabilization=1;
+md.settings.waitonlock=30;
+md.verbose=verbose(0);
+md.stressbalance.restol=0.10;
+md.steadystate.reltol=0.02;
+md.stressbalance.reltol=0.02;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=1;
+md.timestepping.final_time=3;
+
+%Boundary conditions:
+md=SetIceShelfBC(md,'../Exp/SquareFront.exp');
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelf.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelf.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelf.py	(revision 21239)
@@ -0,0 +1,82 @@
+import os.path
+import inspect
+from arch import *
+import numpy
+from verbose import verbose
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from paterson import paterson
+from SetIceShelfBC import SetIceShelfBC
+
+#Start defining model parameters here
+#Geometry
+hmin=300.
+hmax=1000.
+ymin=min(md.mesh.y)
+ymax=max(md.mesh.y)
+xmin=min(md.mesh.x)
+xmax=max(md.mesh.x)
+md.geometry.thickness=hmax+(hmin-hmax)*(md.mesh.y.reshape(-1,1)-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x.reshape(-1,1)-xmin)/(xmax-xmin)
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+
+#Initial velocity and pressure
+x         = numpy.array(archread('../Data/SquareShelf.arch','x'))
+y         = numpy.array(archread('../Data/SquareShelf.arch','y'))
+vx        = numpy.array(archread('../Data/SquareShelf.arch','vx'));
+vy        = numpy.array(archread('../Data/SquareShelf.arch','vy'));
+index     = archread('../Data/SquareShelf.arch','index').astype(int);
+
+#dbg - begin
+# #print 'vars in SquareShelf.nc:'
+# #for v in iVelF.variables:
+# #	print v
+#dbg - end 
+
+[md.initialization.vx]=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y)
+[md.initialization.vy]=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y)
+md.initialization.vz=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1))
+
+#dbg - begin
+#print '...vx:'
+#print md.initialization.vx
+#print '...vy:'
+#print md.initialization.vy
+##print '...vz:'
+##print md.initialization.vz
+##print '...pressure:'
+##print md.initialization.pressure
+#dbg - end 
+
+
+#Materials
+md.initialization.temperature = (273.-20.)*numpy.ones((md.mesh.numberofvertices,1))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3.*numpy.ones((md.mesh.numberofelements,1))
+
+#Friction
+md.friction.coefficient = 20.*numpy.ones((md.mesh.numberofvertices,1))
+md.friction.coefficient[numpy.nonzero(md.mask.groundedice_levelset<0.)[0]]=0.
+md.friction.p = numpy.ones((md.mesh.numberofelements,1))
+md.friction.q = numpy.ones((md.mesh.numberofelements,1))
+
+#Numerical parameters
+md.stressbalance.viscosity_overshoot = 0.3
+md.masstransport.stabilization = 1.
+md.thermal.stabilization = 1.
+md.settings.waitonlock = 30
+md.verbose=verbose()
+md.stressbalance.restol = 0.10
+md.steadystate.reltol = 0.02
+md.stressbalance.reltol = 0.02
+md.stressbalance.abstol = float('nan')
+md.timestepping.time_step = 1.
+md.timestepping.final_time = 3.
+
+#Boundary conditions:
+# #md=SetIceShelfBC(md)
+md=SetIceShelfBC(md,'../Exp/SquareFront.exp')
+
+#Change name so that no test have the same name
+if len(inspect.stack()) > 2:
+	md.miscellaneous.name=os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelf2.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelf2.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelf2.par	(revision 21239)
@@ -0,0 +1,60 @@
+%Start defining model parameters here
+
+%Geometry
+hmin=300;
+hmax=1000;
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+xmin=min(md.mesh.x);
+xmax=max(md.mesh.x);
+md.geometry.thickness=hmax+(hmin-hmax)*(md.mesh.y-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x-xmin)/(xmax-xmin);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%Initial velocity and pressure
+x     = archread('../Data/SquareShelf.arch','x');
+y     = archread('../Data/SquareShelf.arch','y');
+vx    = archread('../Data/SquareShelf.arch','vx');
+vy    = archread('../Data/SquareShelf.arch','vy');
+index = archread('../Data/SquareShelf.arch','index');
+x = x{1};
+y = y{1};
+vx = vx{1};
+vy = vy{1};
+index = index{1};
+md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+clear vx vy x y index;
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+%Friction
+md.friction.coefficient=20*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.stressbalance.viscosity_overshoot=0.3;
+md.masstransport.stabilization=1;
+md.thermal.stabilization=1;
+md.settings.waitonlock=30;
+md.verbose=verbose(0);
+md.stressbalance.restol=0.10;
+md.steadystate.reltol=0.02;
+md.stressbalance.reltol=0.02;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=1;
+md.timestepping.final_time=3;
+
+%Boundary conditions:
+md=SetIceShelfBC(md,'../Exp/SquareFront2.exp');
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelf2.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelf2.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelf2.py	(revision 21239)
@@ -0,0 +1,81 @@
+import os.path
+import inspect
+from arch import *
+import numpy
+from verbose import verbose
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from paterson import paterson
+from SetIceShelfBC import SetIceShelfBC
+
+#Start defining model parameters here
+#Geometry
+hmin=300.
+hmax=1000.
+ymin=min(md.mesh.y)
+ymax=max(md.mesh.y)
+xmin=min(md.mesh.x)
+xmax=max(md.mesh.x)
+md.geometry.thickness=hmax+(hmin-hmax)*(md.mesh.y.reshape(-1,1)-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x.reshape(-1,1)-xmin)/(xmax-xmin)
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+
+#Initial velocity and pressure
+x         = numpy.array(archread('../Data/SquareShelf.arch','x'))
+y         = numpy.array(archread('../Data/SquareShelf.arch','y'))
+vx        = numpy.array(archread('../Data/SquareShelf.arch','vx'));
+vy        = numpy.array(archread('../Data/SquareShelf.arch','vy'));
+index     = archread('../Data/SquareShelf.arch','index').astype(int);
+#dbg - begin
+# #print 'vars in SquareShelf.nc:'
+# #for v in iVelF.variables:
+# #	print v
+#dbg - end 
+
+[md.initialization.vx]=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y)
+[md.initialization.vy]=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y)
+md.initialization.vz=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1))
+
+#dbg - begin
+#print '...vx:'
+#print md.initialization.vx
+#print '...vy:'
+#print md.initialization.vy
+##print '...vz:'
+##print md.initialization.vz
+##print '...pressure:'
+##print md.initialization.pressure
+#dbg - end 
+
+
+#Materials
+md.initialization.temperature = (273.-20.)*numpy.ones((md.mesh.numberofvertices,1))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3.*numpy.ones((md.mesh.numberofelements,1))
+
+#Friction
+md.friction.coefficient = 20.*numpy.ones((md.mesh.numberofvertices,1))
+md.friction.coefficient[numpy.nonzero(md.mask.groundedice_levelset<0.)[0]]=0.
+md.friction.p = numpy.ones((md.mesh.numberofelements,1))
+md.friction.q = numpy.ones((md.mesh.numberofelements,1))
+
+#Numerical parameters
+md.stressbalance.viscosity_overshoot = 0.3
+md.masstransport.stabilization = 1.
+md.thermal.stabilization = 1.
+md.settings.waitonlock = 30
+md.verbose=verbose()
+md.stressbalance.restol = 0.10
+md.steadystate.reltol = 0.02
+md.stressbalance.reltol = 0.02
+md.stressbalance.abstol = float('nan')
+md.timestepping.time_step = 1.
+md.timestepping.final_time = 3.
+
+#Boundary conditions:
+# #md=SetIceShelfBC(md)
+md=SetIceShelfBC(md,'../Exp/SquareFront2.exp')
+
+#Change name so that no test have the same name
+if len(inspect.stack()) > 2:
+	md.miscellaneous.name=os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelfConstrained.js
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelfConstrained.js	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelfConstrained.js	(revision 21239)
@@ -0,0 +1,70 @@
+function parameterize(md){
+
+	//Geometry
+	var hmin=300;
+	var hmax=1000;
+	var ymin=ArrayMin(md.mesh.y);
+	var ymax=ArrayMax(md.mesh.y);
+	var xmin=ArrayMin(md.mesh.x);
+	var xmax=ArrayMax(md.mesh.x);
+	
+	md.geometry.thickness=NewArrayFill(md.mesh.numberofvertices,0);
+	md.geometry.base=NewArrayFill(md.mesh.numberofvertices,0);
+	md.geometry.surface=NewArrayFill(md.mesh.numberofvertices,0);
+	md.geometry.bed=NewArrayFill(md.mesh.numberofvertices,0);
+
+	for(i=0;i<md.mesh.numberofvertices;i++){
+		md.geometry.thickness[i]=hmax+(hmin-hmax)*(md.mesh.y[i]-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x[i]-xmin)/(xmax-xmin);
+		md.geometry.base[i]=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness[i];
+		md.geometry.surface[i]=md.geometry.base[i]+md.geometry.thickness[i];
+		md.geometry.bed[i]=md.geometry.base[i]-10;
+	}
+	
+	//Initial velocity: no ncreader for now, so we just load arrays.
+	/*x     = transpose(ncread('../Data/SquareShelfConstrained.nc','x'));
+	y     = transpose(ncread('../Data/SquareShelfConstrained.nc','y'));
+	vx    = transpose(ncread('../Data/SquareShelfConstrained.nc','vx'));
+	vy    = transpose(ncread('../Data/SquareShelfConstrained.nc','vy'));
+	index = transpose(ncread('../Data/SquareShelfConstrained.nc','index'));*/
+	
+	md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+	md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+	md.initialization.vel=ArrayMag(md.initialization.vx,md.initialization.vy);
+	md.initialization.vz=NewArrayFill(md.mesh.numberofvertices,0);
+	md.initialization.pressure=NewArrayFill(md.mesh.numberofvertices,0);
+
+	//Materials
+	md.initialization.temperature=NewArrayFill(md.mesh.numberofvertices,273-20);
+	md.materials.rheology_B=paterson(md.initialization.temperature);
+	md.materials.rheology_n=NewArrayFill(md.mesh.numberofelements,3);
+
+	//Surface mass balance and basal melting
+	md.smb.mass_balance=NewArrayFill(md.mesh.numberofvertices,10);
+	md.basalforcings.floatingice_melting_rate=NewArrayFill(md.mesh.numberofvertices,5.0);
+	md.basalforcings.groundedice_melting_rate=NewArrayFill(md.mesh.numberofvertices,5.0);
+
+	//Friction
+	md.friction.coefficient=NewArrayFill(md.mesh.numberofvertices,20);
+	for(var i=0;i<md.mesh.numberofvertices;i++)if(md.mask.groundedice_levelset[i]<0)md.friction.coefficient[i]=0;
+	md.friction.p=NewArrayFill(md.mesh.numberofelements,1);
+	md.friction.q=NewArrayFill(md.mesh.numberofelements,1);
+
+	//Numerical parameters
+	md.stressbalance.viscosity_overshoot=0.0;
+	md.masstransport.stabilization=1;
+	md.thermal.stabilization=1;
+	md.verbose=new verbose(0);
+	md.settings.waitonlock=30;
+	md.stressbalance.restol=0.05;
+	md.stressbalance.reltol=0.05;
+	md.steadystate.reltol=0.05;
+	md.stressbalance.abstol=NaN;
+	md.timestepping.time_step=1;
+	md.timestepping.final_time=3;
+
+	//Deal with boundary conditions:
+	SetIceShelfBC(md);
+
+	//Change name so that no tests have the same name
+	md.miscellaneous.name='test101';
+}
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelfConstrained.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelfConstrained.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelfConstrained.par	(revision 21239)
@@ -0,0 +1,66 @@
+%Start defining model parameters here
+
+%Geometry
+hmin=300;
+hmax=1000;
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+xmin=min(md.mesh.x);
+xmax=max(md.mesh.x);
+md.geometry.thickness=hmax+(hmin-hmax)*(md.mesh.y-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x-xmin)/(xmax-xmin);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md.geometry.bed=md.geometry.base-10;
+
+%Initial velocity 
+x     = archread([issmdir() '/test/Data/SquareShelfConstrained.arch'],'x');
+y     = archread([issmdir() '/test/Data/SquareShelfConstrained.arch'],'y');
+vx    = archread([issmdir() '/test/Data/SquareShelfConstrained.arch'],'vx');
+vy    = archread([issmdir() '/test/Data/SquareShelfConstrained.arch'],'vy');
+index = archread([issmdir() '/test/Data/SquareShelfConstrained.arch'],'index');
+x = x{1};
+y = y{1};
+vx = vx{1};
+vy = vy{1};
+index = index{1};
+md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+clear vx vy x y index;
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+%Surface mass balance and basal melting
+md.smb.mass_balance=10*ones(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=5*ones(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate=5*ones(md.mesh.numberofvertices,1);
+
+%Friction
+md.friction.coefficient=20*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.stressbalance.viscosity_overshoot=0.0;
+md.masstransport.stabilization=1;
+md.thermal.stabilization=1;
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.stressbalance.restol=0.05;
+md.stressbalance.reltol=0.05;
+md.steadystate.reltol=0.05;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=1;
+md.timestepping.final_time=3;
+
+%Deal with boundary conditions:
+md=SetIceShelfBC(md);
+
+%Change name so that no tests have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelfConstrained.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelfConstrained.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareShelfConstrained.py	(revision 21239)
@@ -0,0 +1,71 @@
+import os.path
+from arch import *
+import numpy
+import inspect
+from verbose import verbose
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from paterson import paterson
+from SetIceShelfBC import SetIceShelfBC
+
+#Start defining model parameters here
+#Geometry
+hmin=300.
+hmax=1000.
+ymin=numpy.min(md.mesh.y)
+ymax=numpy.max(md.mesh.y)
+xmin=min(md.mesh.x)
+xmax=max(md.mesh.x)
+md.geometry.thickness=hmax+(hmin-hmax)*(md.mesh.y.reshape(-1,1)-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x.reshape(-1,1)-xmin)/(xmax-xmin)
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness
+md.geometry.surface=md.geometry.base+md.geometry.thickness
+md.geometry.bed=md.geometry.base-10;
+
+#Initial velocity 
+#x         = numpy.reshape(numpy.array(archread('../Data/SquareShelfConstrained.arch','x')),(-1))
+#y         = numpy.reshape(numpy.array(archread('../Data/SquareShelfConstrained.arch','y')),(-1))
+x         = numpy.array(archread('../Data/SquareShelfConstrained.arch','x'))
+y         = numpy.array(archread('../Data/SquareShelfConstrained.arch','y'))
+vx        = numpy.array(archread('../Data/SquareShelfConstrained.arch','vx'))
+vy        = numpy.array(archread('../Data/SquareShelfConstrained.arch','vy'))
+index     = numpy.array(archread('../Data/SquareShelfConstrained.arch','index').astype(int))
+
+[md.initialization.vx]=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y)
+[md.initialization.vy]=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y)
+md.initialization.vz=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1))
+
+#Materials
+md.initialization.temperature=(273.-20.)*numpy.ones((md.mesh.numberofvertices,1))
+md.materials.rheology_B=paterson(md.initialization.temperature)
+md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
+
+#Surface mass balance and basal melting
+md.smb.mass_balance=10.*numpy.ones((md.mesh.numberofvertices,1))
+md.basalforcings.groundedice_melting_rate=5.*numpy.ones((md.mesh.numberofvertices,1))
+md.basalforcings.floatingice_melting_rate=5.*numpy.ones((md.mesh.numberofvertices,1))
+
+#Friction
+md.friction.coefficient=20.*numpy.ones((md.mesh.numberofvertices,1))
+md.friction.coefficient[numpy.nonzero(md.mask.groundedice_levelset<0.)[0]]=0.
+md.friction.p=numpy.ones((md.mesh.numberofelements,1))
+md.friction.q=numpy.ones((md.mesh.numberofelements,1))
+
+#Numerical parameters
+md.stressbalance.viscosity_overshoot=0.0
+md.masstransport.stabilization=1.
+md.thermal.stabilization=1.
+md.verbose = verbose(0)
+md.settings.waitonlock=30
+md.stressbalance.restol=0.05
+md.stressbalance.reltol=0.05
+md.steadystate.reltol=0.05
+md.stressbalance.abstol=float('nan')
+md.timestepping.time_step=1.
+md.timestepping.final_time=3.
+
+#Deal with boundary conditions:
+md = SetIceShelfBC(md)
+
+#Change name so that no tests have the same name
+if len(inspect.stack()) > 2:
+	md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareThermal.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareThermal.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareThermal.par	(revision 21239)
@@ -0,0 +1,45 @@
+%Ok, start defining model parameters here
+
+md.timestepping.time_step=0;
+
+disp('      creating thickness');
+h=1000.;
+md.geometry.thickness=h*ones(md.mesh.numberofvertices,1);
+md.geometry.base=-1000.*ones(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+disp('      creating velocities');
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+
+disp('      creating drag');
+md.friction.coefficient=200.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('      creating temperatures');
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      creating surface mass balance');
+md.smb.mass_balance=ones(md.mesh.numberofvertices,1)/md.constants.yts; %1m/a
+md.basalforcings.groundedice_melting_rate=0.*ones(md.mesh.numberofvertices,1)/md.constants.yts; %1m/a
+md.basalforcings.floatingice_melting_rate=0.*ones(md.mesh.numberofvertices,1)/md.constants.yts; %1m/a
+
+%Deal with boundary conditions:
+
+disp('      boundary conditions for stressbalance model');
+md=SetMarineIceSheetBC(md,'../Exp/SquareFront.exp');
+
+disp('      boundary conditions for thermal model');
+md.thermal.spctemperature(:)=md.initialization.temperature;
+md.basalforcings.geothermalflux=zeros(md.mesh.numberofvertices,1); 
+md.basalforcings.geothermalflux(find(md.mask.groundedice_levelset>0.))=1.*10^-3; %1 mW/m^2
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareThermal.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareThermal.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/SquareThermal.py	(revision 21239)
@@ -0,0 +1,45 @@
+import numpy
+from paterson import paterson
+from SetMarineIceSheetBC import SetMarineIceSheetBC
+
+#Ok, start defining model parameters here
+
+md.timestepping.time_step=0
+
+print "      creating thickness"
+h=1000.
+md.geometry.thickness=h*numpy.ones((md.mesh.numberofvertices,1))
+md.geometry.base=-1000.*numpy.ones((md.mesh.numberofvertices,1))
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+print "      creating velocities"
+md.initialization.vx=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.vy=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.vz=numpy.zeros((md.mesh.numberofvertices,1))
+
+print "      creating drag"
+md.friction.coefficient=200.*numpy.ones((md.mesh.numberofvertices,1))
+md.friction.coefficient[numpy.nonzero(md.mask.groundedice_levelset<0.)[0]]=0.
+md.friction.p=numpy.ones((md.mesh.numberofelements,1))
+md.friction.q=numpy.ones((md.mesh.numberofelements,1))
+
+print "      creating temperatures"
+md.initialization.temperature=(273.-20.)*numpy.ones((md.mesh.numberofvertices,1))
+
+print "      creating flow law parameter"
+md.materials.rheology_B=paterson(md.initialization.temperature)
+md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
+
+print "      creating surface mass balance"
+md.smb.mass_balance=numpy.ones((md.mesh.numberofvertices,1))/md.constants.yts    #1m/a
+md.basalforcings.melting_rate=0.*numpy.ones((md.mesh.numberofvertices,1))/md.constants.yts    #1m/a
+
+#Deal with boundary conditions:
+
+print "      boundary conditions for stressbalance model"
+md=SetMarineIceSheetBC(md,'../Exp/SquareFront.exp')
+
+print "      boundary conditions for thermal model"
+md.thermal.spctemperature[:]=md.initialization.temperature
+md.basalforcings.geothermalflux=numpy.zeros((md.mesh.numberofvertices,1)) 
+md.basalforcings.geothermalflux[numpy.nonzero(md.mask.groundedice_levelset>0.)[0]]=1.*10**-3    #1 mW/m^2
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ValleyGlacierShelf.par
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ValleyGlacierShelf.par	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ValleyGlacierShelf.par	(revision 21239)
@@ -0,0 +1,97 @@
+%Start defining model parameters here
+x = md.mesh.x;
+y = md.mesh.y;
+xmin = min(x);
+xmax = max(x);
+ymin = min(y);
+ymax = max(y);
+Lx = (xmax-xmin);
+Ly = (ymax-ymin);
+xm = (xmin+xmax)/2.;
+ym = (ymin+ymax)/2.;
+
+%Geometry: U-shaped valley in y direction
+thk_center = 1000.;
+thk_margin = 0.5*thk_center;
+bmax = 0.;
+bmin = -thk_center*md.materials.rho_ice/md.materials.rho_water;
+
+alpha = 2./3.;
+slope = 0.9*(bmin-bmax)*(x-xmin)/(Lx*alpha) + 0.1*(bmin-bmax)*(y-ymin)/(Ly) + bmax;
+md.geometry.surface = (thk_center+bmax) + slope ;
+md.geometry.base = bmax + slope + 4./Ly^2*(thk_center-thk_margin)*(y-ym).^2;
+md.geometry.thickness = md.geometry.surface - md.geometry.base;
+md.geometry.bed = md.geometry.base;
+
+%Mask
+md.mask.ice_levelset = x - alpha*Lx;
+md.mask.groundedice_levelset = ones(md.mesh.numberofvertices,1);
+
+%Initial velocity 
+md.initialization.vx = zeros(md.mesh.numberofvertices,1);
+md.initialization.vy = zeros(md.mesh.numberofvertices,1);
+md.initialization.vz = zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure = zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature = (273.15-5.)*ones(md.mesh.numberofvertices,1);
+md.initialization.waterfraction = zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn = zeros(md.mesh.numberofvertices,1);
+md.materials.rheology_B = paterson(md.initialization.temperature);
+md.materials.rheology_n = 3.*ones(md.mesh.numberofelements,1);
+
+%Thermal
+md.thermal.isenthalpy = 0;
+md.thermal.spctemperature = NaN(md.mesh.numberofvertices,1);
+
+%Groundingline
+md.groundingline.migration = 'SubelementMigration';
+
+%Surface mass balance and basal melting
+md.smb.mass_balance = 0.3*ones(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate = md.smb.mass_balance;
+md.basalforcings.groundedice_melting_rate = md.smb.mass_balance;
+
+%Friction
+md.friction.coefficient = 20.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.groundedice_levelset<0.)) = 0.;
+md.friction.p = ones(md.mesh.numberofelements,1);
+md.friction.q = ones(md.mesh.numberofelements,1);
+
+%Transient
+md.transient.isstressbalance = 1;
+md.transient.ismovingfront = 1;
+md.transient.ismasstransport = 0;
+md.transient.isthermal = 0;
+md.transient.isgroundingline = 1;
+md.transient.isgia = 0;
+
+%Stressbalance
+md.stressbalance.maxiter = 100;
+md.stressbalance.viscosity_overshoot = 0.0;
+md.stressbalance.restol = 0.05;
+md.stressbalance.reltol = 0.05;
+md.stressbalance.abstol = NaN;
+
+%Masstransport;
+md.calving.calvingrate = 0.*ones(md.mesh.numberofvertices,1);
+md.calving.meltingrate = 0.*ones(md.mesh.numberofvertices,1);
+md.levelset.spclevelset=NaN(md.mesh.numberofvertices,1);
+md.masstransport.stabilization = 1.;
+
+%Numerical parameters
+md.thermal.stabilization = 1.;
+md.settings.waitonlock = 30;
+md.steadystate.reltol = 0.05;
+md.timestepping.time_step = 1.;
+md.timestepping.final_time = 3.;
+
+%Verbose
+md.verbose = verbose(0);
+
+%Deal with boundary conditions:
+md = SetIceShelfBC(md);
+
+%Change name so that no test have the same name;
+A = dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ValleyGlacierShelf.py
===================================================================
--- /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ValleyGlacierShelf.py	(revision 21239)
+++ /issm/branches/trunk-larour-NatClimateChange2016/test/Par/ValleyGlacierShelf.py	(revision 21239)
@@ -0,0 +1,104 @@
+import os.path
+from arch import *
+import numpy
+import inspect
+import math
+from verbose import verbose
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from paterson import paterson
+from SetIceShelfBC import SetIceShelfBC
+
+#Start defining model parameters here
+x=md.mesh.x.reshape(-1,1)
+y=md.mesh.y.reshape(-1,1)
+xmin, xmax = min(x), max(x)
+ymin, ymax = min(y), max(y)
+Lx=(xmax-xmin)
+Ly=(ymax-ymin)
+xm,ym = (xmin+xmax)/2., (ymin+ymax)/2.
+
+#Geometry: U-shaped valley in y direction
+thk_center = 1000.
+thk_margin = 0.5*thk_center
+bmax=0.
+bmin=-thk_center*md.materials.rho_ice/md.materials.rho_water
+
+alpha=2./3.
+slope = 0.9*(bmin-bmax)*(x-xmin)/(Lx*alpha) + 0.1*(bmin-bmax)*(y-ymin)/(Ly) + bmax
+md.geometry.surface= (thk_center+bmax) + slope 
+md.geometry.base=bmax + slope + 4./Ly**2*(thk_center-thk_margin)*(numpy.power(y-ym,2))
+md.geometry.thickness=md.geometry.surface - md.geometry.base
+md.geometry.bed = md.geometry.base
+
+#Mask
+md.mask.ice_levelset=x - alpha*Lx
+md.mask.groundedice_levelset= numpy.ones((md.mesh.numberofvertices,1))
+
+#Initial velocity 
+md.initialization.vx=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.vy=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.vz=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.pressure=numpy.zeros((md.mesh.numberofvertices,1))
+
+#Materials
+md.initialization.temperature=(273.15-5.)*numpy.ones((md.mesh.numberofvertices,1))
+md.initialization.waterfraction=numpy.zeros((md.mesh.numberofvertices,1))
+md.initialization.watercolumn=numpy.zeros((md.mesh.numberofvertices,1))
+md.materials.rheology_B=paterson(md.initialization.temperature)
+md.materials.rheology_n=3.*numpy.ones((md.mesh.numberofelements,1))
+
+#Thermal
+md.thermal.isenthalpy=False
+md.thermal.spctemperature=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+
+#Groundingline
+md.groundingline.migration='SubelementMigration'
+
+#Surface mass balance and basal melting
+md.smb.mass_balance=0.3*numpy.ones((md.mesh.numberofvertices,1))
+md.basalforcings.groundedice_melting_rate=md.smb.mass_balance
+md.basalforcings.floatingice_melting_rate=md.smb.mass_balance
+
+#Friction
+md.friction.coefficient=20.*numpy.ones((md.mesh.numberofvertices,1))
+md.friction.coefficient[numpy.nonzero(md.mask.groundedice_levelset<0.)[0]]=0.
+md.friction.p=numpy.ones((md.mesh.numberofelements,1))
+md.friction.q=numpy.ones((md.mesh.numberofelements,1))
+
+#Transient
+md.transient.isstressbalance=True
+md.transient.ismovingfront=True
+md.transient.ismasstransport=False
+md.transient.isthermal=False
+md.transient.isgroundingline=True
+md.transient.isgia=False
+
+#Stressbalance
+md.stressbalance.maxiter=100
+md.stressbalance.viscosity_overshoot=0.0
+md.stressbalance.restol=0.05
+md.stressbalance.reltol=0.05
+md.stressbalance.abstol=float('nan')
+
+#Masstransport
+md.calving.calvingrate=0.*numpy.ones((md.mesh.numberofvertices,1))
+md.calving.meltingrate=0.*numpy.ones((md.mesh.numberofvertices,1))
+md.levelset.spclevelset=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
+md.masstransport.stabilization=1.
+
+#Numerical parameters
+md.thermal.stabilization=1.
+md.settings.waitonlock=30
+md.steadystate.reltol=0.05
+md.timestepping.time_step=1.
+md.timestepping.final_time=3.
+
+#Verbose
+md.verbose = verbose(0)
+
+#Deal with boundary conditions:
+md = SetIceShelfBC(md)
+
+#Change name so that no tests have the same name
+if len(inspect.stack()) > 2:
+	md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
